diff --git a/README b/README deleted file mode 100644 index b54608e2..00000000 --- a/README +++ /dev/null @@ -1 +0,0 @@ -Converted from SVN to GIT \ No newline at end of file diff --git a/branches/firebug1.1/firebug.css b/branches/firebug1.1/firebug.css deleted file mode 100644 index 1f041c4d..00000000 --- a/branches/firebug1.1/firebug.css +++ /dev/null @@ -1,209 +0,0 @@ - -html, body { - margin: 0; - background: #FFFFFF; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - overflow: hidden; -} - -a { - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.toolbar { - height: 14px; - border-top: 1px solid ThreeDHighlight; - border-bottom: 1px solid ThreeDShadow; - padding: 2px 6px; - background: ThreeDFace; -} - -.toolbarRight { - position: absolute; - top: 4px; - right: 6px; -} - -#log { - overflow: auto; - position: absolute; - left: 0; - width: 100%; -} - -#commandLine { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 18px; - border: none; - border-top: 1px solid ThreeDShadow; -} - -/************************************************************************************************/ - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - font-family: Monaco, monospace; - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - font-family: Monaco, monospace; - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; -} - -/************************************************************************************************/ - -.logRow-info, -.logRow-error, -.logRow-warning { - background: #FFFFFF no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); -} - -.errorMessage { - vertical-align: top; - color: #FF0000; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ - -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - margin-left: 16px; -} - -.nodeTag { - color: blue; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText, -.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; -} - -.nodeComment { - color: DarkGreen; -} - -/************************************************************************************************/ - -.propertyNameCell { - vertical-align: top; -} - -.propertyName { - font-weight: bold; -} diff --git a/branches/firebug1.1/firebug.html b/branches/firebug1.1/firebug.html deleted file mode 100644 index 861e6393..00000000 --- a/branches/firebug1.1/firebug.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - Firebug - - - - -
- Clear - - Close - -
-
- - - - - diff --git a/branches/firebug1.1/firebug.js b/branches/firebug1.1/firebug.js deleted file mode 100644 index 14eaad2e..00000000 --- a/branches/firebug1.1/firebug.js +++ /dev/null @@ -1,672 +0,0 @@ - -if (!window.console || !console.firebug) { -(function() -{ - window.console = - { - log: function() - { - logFormatted(arguments, ""); - }, - - debug: function() - { - logFormatted(arguments, "debug"); - }, - - info: function() - { - logFormatted(arguments, "info"); - }, - - warn: function() - { - logFormatted(arguments, "warning"); - }, - - error: function() - { - logFormatted(arguments, "error"); - }, - - assert: function(truth, message) - { - if (!truth) - { - var args = []; - for (var i = 1; i < arguments.length; ++i) - args.push(arguments[i]); - - logFormatted(args.length ? args : ["Assertion Failure"], "error"); - throw message ? message : "Assertion Failure"; - } - }, - - dir: function(object) - { - var html = []; - - var pairs = []; - for (var name in object) - { - try - { - pairs.push([name, object[name]]); - } - catch (exc) - { - } - } - - pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; }); - - html.push(''); - for (var i = 0; i < pairs.length; ++i) - { - var name = pairs[i][0], value = pairs[i][1]; - - html.push('', - '', ''); - } - html.push('
', - escapeHTML(name), ''); - appendObject(value, html); - html.push('
'); - - logRow(html, "dir"); - }, - - dirxml: function(node) - { - var html = []; - - appendNode(node, html); - logRow(html, "dirxml"); - }, - - group: function() - { - logRow(arguments, "group", pushGroup); - }, - - groupEnd: function() - { - logRow(arguments, "", popGroup); - }, - - time: function(name) - { - timeMap[name] = (new Date()).getTime(); - }, - - timeEnd: function(name) - { - if (name in timeMap) - { - var delta = (new Date()).getTime() - timeMap[name]; - logFormatted([name+ ":", delta+"ms"]); - delete timeMap[name]; - } - }, - - count: function() - { - this.warn(["count() not supported."]); - }, - - trace: function() - { - this.warn(["trace() not supported."]); - }, - - profile: function() - { - this.warn(["profile() not supported."]); - }, - - profileEnd: function() - { - }, - - clear: function() - { - consoleBody.innerHTML = ""; - }, - - open: function() - { - toggleConsole(true); - }, - - close: function() - { - if (frameVisible) - toggleConsole(); - } - }; - - // ******************************************************************************************** - - var consoleFrame = null; - var consoleBody = null; - var commandLine = null; - - var frameVisible = false; - var messageQueue = []; - var groupStack = []; - var timeMap = {}; - - var clPrefix = ">>> "; - - var isFirefox = navigator.userAgent.indexOf("Firefox") != -1; - var isIE = navigator.userAgent.indexOf("MSIE") != -1; - var isOpera = navigator.userAgent.indexOf("Opera") != -1; - var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1; - - // ******************************************************************************************** - - function toggleConsole(forceOpen) - { - frameVisible = forceOpen || !frameVisible; - if (consoleFrame) - consoleFrame.style.visibility = frameVisible ? "visible" : "hidden"; - else - waitForBody(); - } - - function focusCommandLine() - { - toggleConsole(true); - if (commandLine) - commandLine.focus(); - } - - function waitForBody() - { - if (document.body) - createFrame(); - else - setTimeout(waitForBody, 200); - } - - function createFrame() - { - if (consoleFrame) - return; - - window.onFirebugReady = function(doc) - { - window.onFirebugReady = null; - - var toolbar = doc.getElementById("toolbar"); - toolbar.onmousedown = onSplitterMouseDown; - - commandLine = doc.getElementById("commandLine"); - addEvent(commandLine, "keydown", onCommandLineKeyDown); - - addEvent(doc, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - consoleBody = doc.getElementById("log"); - layout(); - flush(); - } - - var baseURL = getFirebugURL(); - - consoleFrame = document.createElement("iframe"); - consoleFrame.setAttribute("src", baseURL+"/firebug.html"); - consoleFrame.setAttribute("frameBorder", "0"); - consoleFrame.style.visibility = (frameVisible ? "visible" : "hidden"); - consoleFrame.style.zIndex = "2147483583"; - consoleFrame.style.position = document.all ? "absolute" : "fixed"; - consoleFrame.style.width = "100%"; - consoleFrame.style.left = "0"; - consoleFrame.style.bottom = "0"; - consoleFrame.style.height = "200px"; - document.body.appendChild(consoleFrame); - } - - function getFirebugURL() - { - var scripts = document.getElementsByTagName("script"); - for (var i = 0; i < scripts.length; ++i) - { - if (scripts[i].src.indexOf("firebug.js") != -1) - { - var lastSlash = scripts[i].src.lastIndexOf("/"); - return scripts[i].src.substr(0, lastSlash); - } - } - } - - function evalCommandLine() - { - var text = commandLine.value; - commandLine.value = ""; - - logRow([clPrefix, text], "command"); - - var value; - try - { - value = eval(text); - } - catch (exc) - { - } - - console.log(value); - } - - function layout() - { - var toolbar = consoleBody.ownerDocument.getElementById("toolbar"); - var height = consoleFrame.offsetHeight - (toolbar.offsetHeight + commandLine.offsetHeight); - consoleBody.style.top = toolbar.offsetHeight + "px"; - consoleBody.style.height = height + "px"; - - commandLine.style.top = (consoleFrame.offsetHeight - commandLine.offsetHeight) + "px"; - } - - function logRow(message, className, handler) - { - if (consoleBody) - writeMessage(message, className, handler); - else - { - messageQueue.push([message, className, handler]); - waitForBody(); - } - } - - function flush() - { - var queue = messageQueue; - messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - writeMessage(queue[i][0], queue[i][1], queue[i][2]); - } - - function writeMessage(message, className, handler) - { - var isScrolledToBottom = - consoleBody.scrollTop + consoleBody.offsetHeight >= consoleBody.scrollHeight; - - if (!handler) - handler = writeRow; - - handler(message, className); - - if (isScrolledToBottom) - consoleBody.scrollTop = consoleBody.scrollHeight - consoleBody.offsetHeight; - } - - function appendRow(row) - { - var container = groupStack.length ? groupStack[groupStack.length-1] : consoleBody; - container.appendChild(row); - } - - function writeRow(message, className) - { - var row = consoleBody.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - appendRow(row); - } - - function pushGroup(message, className) - { - logFormatted(message, className); - - var groupRow = consoleBody.ownerDocument.createElement("div"); - groupRow.className = "logGroup"; - var groupRowBox = consoleBody.ownerDocument.createElement("div"); - groupRowBox.className = "logGroupBox"; - groupRow.appendChild(groupRowBox); - appendRow(groupRowBox); - groupStack.push(groupRowBox); - } - - function popGroup() - { - groupStack.pop(); - } - - // ******************************************************************************************** - - function logFormatted(objects, className) - { - var html = []; - - var format = objects[0]; - var objIndex = 0; - - if (typeof(format) != "string") - { - format = ""; - objIndex = -1; - } - - var parts = parseFormat(format); - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - part.appender(object, html); - } - else - appendText(part, html); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - if (typeof(object) == "string") - appendText(object, html); - else - appendObject(object, html); - } - - logRow(html, className); - } - - function parseFormat(format) - { - var parts = []; - - var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/; - var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat}; - - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - var type = m[8] ? m[8] : m[5]; - var appender = type in appenderMap ? appenderMap[type] : appendObject; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({appender: appender, precision: precision}); - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - - return parts; - } - - function escapeHTML(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function objectToString(object) - { - try - { - return object+""; - } - catch (exc) - { - return null; - } - } - - // ******************************************************************************************** - - function appendText(object, html) - { - html.push(escapeHTML(objectToString(object))); - } - - function appendNull(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendString(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - } - - function appendInteger(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFloat(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - } - - function appendFunction(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - } - - function appendObject(object, html) - { - try - { - if (object == undefined) - appendNull("undefined", html); - else if (object == null) - appendNull("null", html); - else if (typeof object == "string") - appendString(object, html); - else if (typeof object == "number") - appendInteger(object, html); - else if (typeof object == "function") - appendFunction(object, html); - else if (object.nodeType == 1) - appendSelector(object, html); - else if (typeof object == "object") - appendObjectFormatted(object, html); - else - appendText(object, html); - } - catch (exc) - { - } - } - - function appendObjectFormatted(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - } - - function appendSelector(object, html) - { - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - } - - function appendNode(node, html) - { - if (node.nodeType == 1) - { - html.push( - '
', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified) - continue; - - html.push(' ', attr.nodeName.toLowerCase(), - '="', escapeHTML(attr.nodeValue), - '"') - } - - if (node.firstChild) - { - html.push('>
'); - - for (var child = node.firstChild; child; child = child.nextSibling) - appendNode(child, html); - - html.push('
</', - node.nodeName.toLowerCase(), '>
'); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - html.push('
', escapeHTML(node.nodeValue), - '
'); - } - } - - // ******************************************************************************************** - - function addEvent(object, name, handler) - { - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); - } - - function removeEvent(object, name, handler) - { - if (document.all) - object.detachEvent("on"+name, handler); - else - object.removeEventListener(name, handler, false); - } - - function cancelEvent(event) - { - if (document.all) - event.cancelBubble = true; - else - event.stopPropagation(); - } - - function onError(msg, href, lineNo) - { - var html = []; - - var lastSlash = href.lastIndexOf("/"); - var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1); - - html.push( - '', msg, '', - '' - ); - - logRow(html, "error"); - }; - - function onKeyDown(event) - { - if (event.keyCode == 123) - toggleConsole(); - else if ((event.keyCode == 108 || event.keyCode == 76) && event.shiftKey - && (event.metaKey || event.ctrlKey)) - focusCommandLine(); - else - return; - - cancelEvent(event); - } - - function onSplitterMouseDown(event) - { - if (isSafari || isOpera) - return; - - addEvent(document, "mousemove", onSplitterMouseMove); - addEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - addEvent(frames[i].document, "mousemove", onSplitterMouseMove); - addEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onSplitterMouseMove(event) - { - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - var clientY = event.clientY; - if (win != win.parent) - clientY += win.frameElement ? win.frameElement.offsetTop : 0; - - var height = consoleFrame.offsetTop + consoleFrame.clientHeight; - var y = height - clientY; - - consoleFrame.style.height = y + "px"; - layout(); - } - - function onSplitterMouseUp(event) - { - removeEvent(document, "mousemove", onSplitterMouseMove); - removeEvent(document, "mouseup", onSplitterMouseUp); - - for (var i = 0; i < frames.length; ++i) - { - removeEvent(frames[i].document, "mousemove", onSplitterMouseMove); - removeEvent(frames[i].document, "mouseup", onSplitterMouseUp); - } - } - - function onCommandLineKeyDown(event) - { - if (event.keyCode == 13) - evalCommandLine(); - else if (event.keyCode == 27) - commandLine.value = ""; - } - - window.onerror = onError; - addEvent(document, isIE || isSafari ? "keydown" : "keypress", onKeyDown); - - if (document.documentElement.getAttribute("debug") == "true") - toggleConsole(true); -})(); -} diff --git a/branches/firebug1.1/firebugx.js b/branches/firebug1.1/firebugx.js deleted file mode 100644 index 34368625..00000000 --- a/branches/firebug1.1/firebugx.js +++ /dev/null @@ -1,10 +0,0 @@ - -if (!window.console || !console.firebug) -{ - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", - "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; - - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {} -} \ No newline at end of file diff --git a/branches/firebug1.2/ChangeLog b/branches/firebug1.2/ChangeLog deleted file mode 100644 index 7be78a99..00000000 --- a/branches/firebug1.2/ChangeLog +++ /dev/null @@ -1,167 +0,0 @@ -== Firebug Lite Change Log == -2009-08-28 Pedro Simonetti - * firebug-lite.js: Fixed problem with selection of elements in HTML panel. - It was trying to access getAttribute() function of comment - nodes, and this was causing an error. - - Fixed problem with the "outline inspector". It was not - possible to inspect child nodes of the currently inspected - element, for example, if you are inspecting a UL element, - you won't be able to select the LI elements inside of it. - -2009-05-08 Azer Koculu - * deploy: A shell script that copies source files whose names starts - with "firebug" to getfirebug.com's repo. - -2009-05-06 Mike Ratcliffe - * firebug-lite.css: Fixed options dropdown arrow - * firebug-lite.js: Script line numbering started at 2, changed it so that it starts at 1 - Moved env.liteFilename to internal vars as it is no longer necessary for users to change this value - Fixed error when getting script name - Fixed lib.util.Hash.clone (it was called out of scope) - Added check for valid value when reading textNodeChars - -2009-05-06 Azer Koculu - * firebug-lite.js: Changed filename search. - Moved initializer part into a new function scope. - Added 'firebugIgnore' filter to dom explorer. - Setted firebugIgnore attributes in container elements. - Optimized source code displayer in scripts tab. - Refactored script line numbering code - Changed code for getting script name - -2009-05-02 Mike Ratcliffe - * firebug-lite.js: Issue 1713: If FB Lite is loaded over https IE warns of unsecured items being loaded - Issue 1703: Firebug lite incorrect reports the evaluation result of "undefined" as "null" - Issue 1702: Mac OS X CMD key press toggles popup/docked Firebug window - -2009-04-24 Mike Ratcliffe - * firebug-lite.js: Issue 1683: Firebug lite delivered by Rails - Js Error - -2009-04-20 Mike Ratcliffe - * firebug-lite.js, firebug-lite.css: Issue 1664: Text node text trimming should be configurable in FB Lite - * firebug-lite.js: Issue 1654: Internal variables should not be accessible to users - -2009-04-19 Mike Ratcliffe - * firebug-lite.js Fixed multiple issues with the HTML Tree: - Issue 1658: FB Lite HTML view body tag occasionally has multiple + signs - Issue 1659: FB Lite stops parsing childnodes when it reaches HTML comments - Issue 1568: Firebug Lite: Inspect button often fails to scroll the html line into view when an element is clicked - Simplified discovery of body tag - Object tags displayed as function() in HTML tree - Disabled trimming of text content, users expect to see things the same way they are displayed in Firebug. - -2009-04-16 Mike Ratcliffe - * firebug-lite.js: Issue 1653: Removed reliability on firebug.liteFilename - Fixed a security issue in IE 7 (introduced via Microsoft Update) - -2009-03-09 Mike Ratcliffe - * firebug-lite.js: Issue 1637: Script missing linebreaks in IE7, line numbers broken in all browsers - -2009-03-09 Mike Ratcliffe - * firebug-lite.js: Added title to popup window - -2009-03-09 Azer Koculu - * firebug-lite.js: Removed getElementPosXY method. - Added toggle method to settings object. - -2009-03-07 Mike Ratcliffe - * firebug-lite.js: Fixed issue 1554: Text nodes could not be accessed through the inspect button. - -2009-03-07 Mike Ratcliffe - * firebug-lite.js: Issue 1566: Added firebug.env.targetWindow variable to hold target window - -2009-03-06 Mike Ratcliffe - * firebug-lite.js: Changed default for firebug.env.detectFirebug to false - Fixed issue 1555: Ajax calls ... we should not assume that the same domain policy is applied, use try catch instead - Fixed Issue 1541: Add XHR tab to Firebug Lite popup window - progress.gif: Corrected mime type - -2009-03-03 Mike Ratcliffe - * firebug-lite.js, firebug-lite.css, progress.gif: Fixed Issue 1544: Lite settings menu should have a "processing" gif - -2009-02-21 Mike Ratcliffe - * firebug-lite.js: Fixed Issue 1542: FBLite F12 etc should dock the popup instead of hiding the panel - -2009-02-21 Mike Ratcliffe - * firebug-lite.js, firebug-lite.css: - o Issue 1513 ... added: - - Settings dialog - - Settings storage cookie (stores settings, panel height, popup window positions etc.) - - firebug.env: - openInPopup - popupTop - popupLeft - popupWidth - popupHeight - o Various popup window bugfixes and performance improvements - -2009-02-21 Mike Ratcliffe - * firebug-lite.js, firebug-lite.css, firebug_logo.png: Issue 1503: FBLite should have a visible sign it is running when starting hidden. - Added FBLite icon when hidden and firebug.env.showIconWhenHidden (default true). - -2009-02-18 Mike Ratcliffe - * firebug-lite.js: Fixed issue 1086 - FBLite can now be used locally over HTTPS if firebug.env.css is set. - -2009-02-17 Mike Ratcliffe - * firebug-lite.js: Fixed problem with issue 1481 - A DIV was created instead of an IFRAME so the shield was ineffective. - -2009-02-14 Mike Ratcliffe - * firebug-lite.js: Issue 1487 - Added firebug.env.liteFilename ... this allows for the renaming of the FBLite script for use in popup windows. - -2009-02-12 Azer Koculu - * minifier.py, jsmin.py, minify: Added minifier library and compressing scripts. - -2009-02-12 Mike Ratcliffe - * firebug-lite.js: Corrected 2 syntax errors - -2009-02-11 Mike Ratcliffe - * firebug-lite.js: Issue 1400 - firebug.env.override is now false by default ... I have also added - two methods to make it easier for the user to control the console: - firebug.overrideConsole() & firebug.restoreConsole() - -2009-02-09 Mike Ratcliffe - * firebug-lite.js: Issue 1400 - Re-implemented firebug.env.override. Default is now true ... it can only be manually changed in FBLite code. - The reason this is needed is because a number of browsers have a window.console object. - -2009-02-08 Mike Ratcliffe - * firebug-lite.js: Issue 1406 - Added firebug.env.hideDOMFunctions to allow hiding of DOM functions in the DOM tab. - -2009-02-06 Mike Ratcliffe - * firebug-lite.js: Removed firebug.env.override to prevent problems when override is set in FF3 where window.console - is a getter and allow more control over initialization. - * firebug-lite.js: Refactored code to allow firebug.env.detectFirebug to be set from user code - * firebug-lite.js: Moved console initialization code inside of the Firebug object to remove some global variables - * firebug-lite.js & firebug-lite.css: Fixed Issue 1348 - String, Date and Boolean objects should be displayed similar - to their primitive counterparts - * firebug-lite.js & firebug-lite.css: Fixed Issue 1023 - Elements such as Flash in iframes and dropdowns in IE bleed through FBLite, - I have put an iframe 'shield' behind FBLite to prevent this - * Updated mime-types for all FBLite SVN files - -2009-02-05 Mike Ratcliffe - * firebug-lite.js: Added firebug.env.detectFirebug to prevent FBLite opening when Firebug is enabled (actually the Firebug Console). - To run FBLite and Firebug at the same time it is now necessary to change the value of detectFirebug directly in firebug-lite.js - * Fixed multiple console initialization and override issues - -2009-02-05 Azer Koculu - * firebug-lite.css: mime-type property has been set to "text/css". - -2009-02-04 Azer Koculu - * firebug-lite.js: Changed default css url getfirebug.com to fbug.google.com - * firebug-lite-compressed.js: It was unnecesseary, removed. - -2009-02-02 Azer Koculu - * Copied latest source to googlecode repository. - -2009-01-31 Mike Ratcliffe - * firebug-lite.js: Added extra hotkeys to show / hide FBLite: - F12, (CTRL|CMD)+SHIFT+L, SHIFT+ENTER - * firebug-lite.js: Added console.firebug command to show FBLite version number - * firebug-lite.js: Fixed problem with Open in New Window in Safari - * firebug-lite.js: Added debug="true/false" to show or hide FBLite on startup - -2009-01-01 Mike Ratcliffe - * firebug-lite.js & firebug-lite.css: Added Open in New Window - * firebug-lite.js: Fixed: HTML Inspect only worked in 1 very specific situation ... it now works in all situations - * firebug-lite.js: Fixed: Permission was occasionally denied to inspect CSS or scripts when it should not have been - * firebug-lite.js: Fixed: Domain check now works with domain names containing - and _ diff --git a/branches/firebug1.2/deploy b/branches/firebug1.2/deploy deleted file mode 100644 index b1f352ce..00000000 --- a/branches/firebug1.2/deploy +++ /dev/null @@ -1,2 +0,0 @@ -cp firebug* ../../../getfirebug.com/trunk/releases/lite/1.2/. -cp firebug* ../../../getfirebug.com/tags/production/releases/lite/1.2/. diff --git a/branches/firebug1.2/firebug-lite-compressed.js b/branches/firebug1.2/firebug-lite-compressed.js deleted file mode 100644 index 64385ae5..00000000 --- a/branches/firebug1.2/firebug-lite-compressed.js +++ /dev/null @@ -1,123 +0,0 @@ -var firebug={version:[1.231,20100118],el:{},env:{"css":"http://getfirebug.com/releases/lite/1.2/firebug-lite.css","debug":true,"detectFirebug":true,"dIndex":"console","height":295,"hideDOMFunctions":false,"openInPopup":false,"override":false,"ml":false,"showIconWhenHidden":true,"popupTop":1,"popupLeft":1,"popupWidth":undefined,"popupHeight":undefined,"textNodeChars":0},internal:{"cache":{},"extConsole":null,"init":false,"isPopup":false,"liteFilename":null,"minimized":false,"popupWin":null,"targetWindow":undefined},initConsole:function(){var command;try{if((!window.console||(window.console&&!window.console.firebug))||(firebug.env.override&&!(/Firefox\/3/i.test(navigator.userAgent)))){window.console={"provider":"Firebug Lite"};for(command in firebug.d.console.cmd){window.console[command]=firebug.lib.util.Curry(firebug.d.console.run,window,command);};} -window.onerror=function(_message,_file,_line){firebug.d.console.run('error',firebug.lib.util.String.format('{0} ({1},{2})',_message,firebug.getFileName(_file),_line));};}catch(e){}},overrideConsole:function(){with(firebug){env.override=true;try{internal.extConsole=window.console;}catch(e){} -initConsole();}},restoreConsole:function(){with(firebug){if(internal.extConsole){env.override=false;try{window.console=internal.extConsole;}catch(e){} -internal.extConsole=null;}}},init:function(_css){var i,cssLoaded=false,iconTitle="Click here or press F12, (CTRL|CMD)+SHIFT+L or SHIFT+ENTER to show Firebug Lite. CTRL|CMD click this icon to hide it.";with(firebug){if(document.getElementsByTagName('html')[0].attributes.getNamedItem('debug')){env.debug=document.getElementsByTagName('html')[0].attributes.getNamedItem('debug').nodeValue!=="false";} -if(internal.isPopup){env.openInPopup=false;internal.targetWindow=window.opener;env.popupWidth=window.opener.firebug.env.popupWidth||window.opener.firebug.lib.util.GetViewport().width;env.popupHeight=window.opener.firebug.env.popupHeight||window.opener.firebug.lib.util.GetViewport().height;}else{internal.targetWindow=window;env.popupWidth=env.popupWidth||lib.util.GetViewport().width;env.popupHeight=env.popupHeight||lib.util.GetViewport().height;} -settings.readCookie();if(internal.init||(env.detectFirebug&&window.console&&window.console.firebug)){return;} -for(i=0;i>>"));el.left.console.input=new lib.element("INPUT").attribute.set("type","text").attribute.addClass("Input").event.addListener("keydown",listen.consoleTextbox).insert(new lib.element("DIV").attribute.addClass("InputContainer").insert(el.left.console.container));el.right.console={};el.right.console.container=new lib.element("DIV").attribute.addClass("Console Container").insert(el.right.container);el.right.console.mlButton=new lib.element("A").attribute.addClass("MLButton CloseML").event.addListener("click",d.console.toggleML).insert(el.right.console.container);el.right.console.input=new lib.element("TEXTAREA").attribute.addClass("Input").insert(el.right.console.container);el.right.console.input.event.addListener("keydown",lib.util.Curry(tab,window,el.right.console.input.element));el.right.console.run=new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.runMultiline).update("Run").insert(el.right.console.container);el.right.console.clear=new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.clean,window,el.right.console.input)).update("Clear").insert(el.right.console.container);el.button.console={};el.button.console.container=new lib.element("DIV").attribute.addClass("ButtonSet").insert(el.button.container);el.button.console.clear=new lib.element("A").attribute.addClass("Button").event.addListener("click",d.console.clear).update("Clear").insert(el.button.console.container);el.left.html={};el.left.html.container=new lib.element("DIV").attribute.addClass("HTML").insert(el.left.container);el.right.html={};el.right.html.container=new lib.element("DIV").attribute.addClass("HTML Container").insert(el.right.container);el.right.html.nav={};el.right.html.nav.container=new lib.element("DIV").attribute.addClass("Nav").insert(el.right.html.container);el.right.html.nav.computedStyle=new lib.element("A").attribute.addClass("Tab Selected").event.addListener("click",lib.util.Curry(d.html.navigate,firebug,"computedStyle")).update("Computed Style").insert(el.right.html.nav.container);el.right.html.nav.dom=new lib.element("A").attribute.addClass("Tab").event.addListener("click",lib.util.Curry(d.html.navigate,firebug,"dom")).update("DOM").insert(el.right.html.nav.container);el.right.html.content=new lib.element("DIV").attribute.addClass("Content").insert(el.right.html.container);el.button.html={};el.button.html.container=new lib.element("DIV").attribute.addClass("ButtonSet HTML").insert(el.button.container);el.left.css={};el.left.css.container=new lib.element("DIV").attribute.addClass("CSS").insert(el.left.container);el.right.css={};el.right.css.container=new lib.element("DIV").attribute.addClass("CSS Container").insert(el.right.container);el.right.css.nav={};el.right.css.nav.container=new lib.element("DIV").attribute.addClass("Nav").insert(el.right.css.container);el.right.css.nav.runCSS=new lib.element("A").attribute.addClass("Tab Selected").update("Run CSS").insert(el.right.css.nav.container);el.right.css.mlButton=new lib.element("A").attribute.addClass("MLButton CloseML").event.addListener("click",d.console.toggleML).insert(el.right.css.container);el.right.css.input=new lib.element("TEXTAREA").attribute.addClass("Input").insert(el.right.css.container);el.right.css.input.event.addListener("keydown",lib.util.Curry(firebug.tab,window,el.right.css.input.element));el.right.css.run=new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.runCSS).update("Run").insert(el.right.css.container);el.right.css.clear=new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.clean,window,el.right.css.input)).update("Clear").insert(el.right.css.container);el.button.css={};el.button.css.container=new lib.element("DIV").attribute.addClass("ButtonSet CSS").insert(el.button.container);el.button.css.selectbox=new lib.element("SELECT").event.addListener("change",listen.cssSelectbox).insert(el.button.css.container);el.left.scripts={};el.left.scripts.container=new lib.element("DIV").attribute.addClass("Scripts").insert(el.left.container);el.right.scripts={};el.right.scripts.container=new lib.element("DIV").attribute.addClass("Scripts Container").insert(el.right.container);el.button.scripts={};el.button.scripts.container=new lib.element("DIV").attribute.addClass("ButtonSet Scripts").insert(el.button.container);el.button.scripts.selectbox=new lib.element("SELECT").event.addListener("change",listen.scriptsSelectbox).insert(el.button.scripts.container);el.button.scripts.lineNumbers=new lib.element("A").attribute.addClass("Button").event.addListener("click",d.scripts.toggleLineNumbers).update("Show Line Numbers").insert(el.button.scripts.container);el.left.dom={};el.left.dom.container=new lib.element("DIV").attribute.addClass("DOM").insert(el.left.container);el.right.dom={};el.right.dom.container=new lib.element("DIV").attribute.addClass("DOM Container").insert(el.right.container);el.button.dom={};el.button.dom.container=new lib.element("DIV").attribute.addClass("ButtonSet DOM").insert(el.button.container);el.button.dom.label=new lib.element("LABEL").update("Object Path:").insert(el.button.dom.container);el.button.dom.textbox=new lib.element("INPUT").event.addListener("keydown",listen.domTextbox).update(internal.isPopup?"window.opener":"window").insert(el.button.dom.container);el.left.str={};el.left.str.container=new lib.element("DIV").attribute.addClass("STR").insert(el.left.container);el.right.str={};el.right.str.container=new lib.element("DIV").attribute.addClass("STR").insert(el.left.container);el.button.str={};el.button.str.container=new lib.element("DIV").attribute.addClass("ButtonSet XHR").insert(el.button.container);el.button.str.watch=new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.navigate,window,"xhr")).update("Back").insert(el.button.str.container);el.left.xhr={};el.left.xhr.container=new lib.element("DIV").attribute.addClass("XHR").insert(el.left.container);el.right.xhr={};el.right.xhr.container=new lib.element("DIV").attribute.addClass("XHR").insert(el.left.container);el.button.xhr={};el.button.xhr.container=new lib.element("DIV").attribute.addClass("ButtonSet XHR").insert(el.button.container);el.button.xhr.label=new lib.element("LABEL").update("XHR Path:").insert(el.button.xhr.container);el.button.xhr.textbox=new lib.element("INPUT").event.addListener("keydown",listen.xhrTextbox).insert(el.button.xhr.container);el.button.xhr.watch=new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.addXhrObject).update("Watch").insert(el.button.xhr.container);el.settings={};el.settings.container=new lib.element("DIV").child.add(new lib.element("DIV").attribute.addClass("Header").child.add(new lib.element().attribute.addClass("Title").update('Firebug Lite Settings'))).attribute.addClass("SettingsDiv").insert(el.main);el.settings.content=new lib.element("DIV").attribute.addClass("Content").insert(el.settings.container);el.settings.progressDiv=new lib.element("DIV").attribute.addClass("ProgressDiv").insert(el.settings.content);el.settings.progress=new lib.element("DIV").attribute.addClass("Progress").insert(el.settings.progressDiv);el.settings.cbxDebug=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Start visible"));new lib.element("BR").insert(el.settings.content);el.settings.cbxDetectFirebug=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Hide when Firebug active"));new lib.element("BR").insert(el.settings.content);el.settings.cbxHideDOMFunctions=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Hide DOM functions"));new lib.element("BR").insert(el.settings.content);el.settings.cbxOverride=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Override window.console"));new lib.element("BR").insert(el.settings.content);el.settings.cbxShowIcon=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Show icon when hidden"));new lib.element("BR").insert(el.settings.content);el.settings.cbxOpenInPopup=new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Open in popup"));new lib.element("BR").insert(el.settings.content);el.settings.content.child.add(document.createTextNode("Trim textnode to "));el.settings.textNodeChars=new lib.element("INPUT").attribute.set("type","text").attribute.addClass("SettingsTextbox").insert(el.settings.content);el.settings.content.child.add(document.createTextNode(" chars"));el.settings.buttonDiv=new lib.element("DIV").insert(el.settings.content);el.settings.buttonLeftDiv=new lib.element("DIV").attribute.addClass("ButtonsLeft").insert(el.settings.buttonDiv);el.settings.resetButton=new lib.element("INPUT").attribute.set("type","button").update("Reset").event.addListener("click",settings.reset).insert(el.settings.buttonLeftDiv);el.settings.buttonRightDiv=new lib.element("DIV").attribute.addClass("ButtonsRight").insert(el.settings.buttonDiv);el.settings.cancelButton=new lib.element("INPUT").attribute.set("type","button").update("Cancel").event.addListener("click",settings.hide).insert(el.settings.buttonRightDiv);el.settings.buttonRightDiv.child.add(document.createTextNode(" "));el.settings.saveButton=new lib.element("INPUT").attribute.set("type","button").update("Save").event.addListener("click",settings.saveClicked).insert(el.settings.buttonRightDiv);lib.util.AddEvent(document,"mousemove",listen.mouse)("mousemove",win.resizer.resize)("mouseup",win.resizer.stop)("keydown",listen.keyboard);internal.init=true;for(var i=0,len=d.console.cache.length;i0){fe.textNodeChars=elSet.textNodeChars.element.value;}else{fe.textNodeChars=0;} -if(firebug.internal.isPopup){window.opener.firebug.env=firebug.lib.util.Hash.clone(fe);} -with(firebug){settings.writeCookie();settings.hide();win.refreshDOM();d.html.openHtmlTree();if(internal.isPopup){with(opener.firebug){win.refreshDOM();d.html.openHtmlTree();}}}},reset:function(){var exdate=new Date();exdate.setTime(exdate.getTime()-1);document.cookie='FBLiteSettings=;expires='+exdate.toGMTString();location.reload(true);},readCookie:function(){var i,cookieArr,valueArr,item,value;with(firebug.env){if(firebug.internal.targetWindow.document.cookie.length>0){cookieArr=firebug.internal.targetWindow.document.cookie.split('; ');for(i=0;i-1){scriptPath=scripts[i].src;break;}} -if(scriptPath){done=false;script=fi.popupWin.document.createElement('script');script.type='text/javascript';script.src=scriptPath;script[firebug.lib.env.ie?"onreadystatechange":"onload"]=function(){if(!done&&(!firebug.lib.env.ie||this.readyState=="complete"||this.readyState=="loaded")){done=true;if(fi.popupWin.firebug){with(fi.popupWin.firebug){internal.isPopup=true;env.css=fe.css;init();el.button.dock.environment.addStyle({"display":"block"});el.button.newWindow.environment.addStyle({"display":"none"});}}}};if(!done&&firebug.lib.env.webkit){interval=setInterval(function(){if(firebug.internal.popupWin.firebug){clearInterval(interval);done=true;with(firebug.internal.popupWin.firebug){internal.isPopup=true;env.css=fe.css;init();el.button.dock.environment.addStyle({"display":"block"});el.button.newWindow.environment.addStyle({"display":"none"});}}},10);};if(!firebug.lib.env.ie){firebug.internal.popupWin.document.write('Firebug Lite - '+document.location.href+'');} -if(!done){firebug.internal.popupWin.document.getElementsByTagName('head')[0].appendChild(script);firebug.el.main.environment.addStyle({"display":"none"});firebug.el.mainiframe.environment.addStyle({"display":"none"});}}else{alert("Unable to detect the following script \""+firebug.internal.liteFilename+"\" ... if the script has been renamed then please set the value of firebug.internal.liteFilename to reflect this change");firebug.internal.popupWin.close();firebug.internal.popupWin=null;}}}},dock:function(){with(opener.firebug){internal.popupWin=null;el.main.environment.addStyle({"display":"block"});el.mainiframe.environment.addStyle({"display":"block"});settings.readCookie();window.close();};},unload:function(){with(firebug){if(internal.isPopup){win.dock();}else if(internal.popupWin){internal.popupWin.close();}}},fitToPopup:function(){with(firebug){var viewport=lib.util.GetViewport(window);win.setHeight((window.innerHeight||viewport.height)-38);el.main.environment.addStyle({"width":(viewport.width)+"px"});el.mainiframe.environment.addStyle({"width":(viewport.width)+"px"});}},resizer:{y:[],enabled:false,start:function(_event){with(firebug){if(internal.minimized)return;win.resizer.y=[el.main.element.offsetHeight,_event.clientY];if(lib.env.ie6){win.resizer.y[3]=parseInt(el.main.environment.getPosition().top);} -win.resizer.enabled=true;}},resize:function(_event){with(firebug){if(!win.resizer.enabled)return;win.resizer.y[2]=(win.resizer.y[0]+(win.resizer.y[1]-_event.clientY));el.main.environment.addStyle({"height":win.resizer.y[2]+"px"});el.mainiframe.environment.addStyle({"height":win.resizer.y[2]+"px"});if(lib.env.ie6){el.main.environment.addStyle({"top":win.resizer.y[3]-(win.resizer.y[1]-_event.clientY)+"px"});el.mainiframe.environment.addStyle({"top":win.resizer.y[3]-(win.resizer.y[1]-_event.clientY)+"px"});}}},stop:function(_event){with(firebug){if(win.resizer.enabled){win.resizer.enabled=false;win.setHeight(win.resizer.y[2]-35);}}}},setHeight:function(_height){with(firebug){env.height=_height;el.left.container.environment.addStyle({"height":_height+"px"});el.right.container.environment.addStyle({"height":_height+"px"});el.main.environment.addStyle({"height":_height+38+"px"});el.mainiframe.environment.addStyle({"height":_height+38+"px"});win.refreshSize();el.left.console.monitor.element.parentNode.style.height=_height-47+"px";el.left.console.mlButton.environment.addStyle({"top":_height+19+"px"});el.right.console.mlButton.environment.addStyle({"top":_height+19+"px"});el.right.console.input.environment.addStyle({"height":_height-29+"px"});el.left.html.container.environment.addStyle({"height":_height-23+"px"});el.right.html.content.environment.addStyle({"height":_height-23+"px"});el.left.css.container.environment.addStyle({"height":_height-33+"px"});el.right.css.input.environment.addStyle({"height":_height-55+"px"});el.left.scripts.container.environment.addStyle({"height":_height-23+"px"});el.left.dom.container.environment.addStyle({"height":_height-31+"px"});el.left.xhr.container.environment.addStyle({"height":_height-32+"px"});el.left.str.container.environment.addStyle({"height":_height-32+"px"});}},refreshDOM:function(){with(firebug){d.dom.open(eval(el.button.dom.textbox.environment.getElement().value),el.left.dom.container);if(d.html.nIndex=="dom"){firebug.d.html.navigate("dom")}}},refreshSize:function(){with(firebug){if(!internal.init) -return;var dim=lib.util.GetViewport();el.main.environment.addStyle({"width":dim.width+"px"});el.mainiframe.environment.addStyle({"width":dim.width+"px"});if(lib.env.ie6) -win.setVerticalPosition(dim);}},setVerticalPosition:function(_dim,_event){with(firebug){var dim=_dim||lib.util.GetViewport();el.main.environment.addStyle({"top":dim.height-el.main.environment.getSize().offsetHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)+"px"});el.mainiframe.environment.addStyle({"top":dim.height-el.main.environment.getSize().offsetHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)+"px"});}}},d:{clean:function(_element){with(firebug){_element.update("");}},console:{addLine:function(){with(firebug){return new lib.element("DIV").attribute.addClass("Row").insert(el.left.console.monitor);}},cache:[],clear:function(){with(firebug){d.clean(el.left.console.monitor);d.console.cache=[];}},formatArgs:function(){with(firebug){var content=[];for(var i=0,len=arguments.length;i>> "+_cmd);d.console.addLine().update(d.highlight(_text,false,false,true));d.console.scroll();}},printException:function(_exception){with(firebug){var message=_exception.description||_exception.message||_exception;if(_exception.fileName){message+=' ('+(_exception.name&&(_exception.name+', ')||'')+getFileName(_exception.fileName)+', '+_exception.lineNumber+')';} -d.console.addLine().attribute.addClass("Error").update("Error: "+message,true);}},eval:function(_cmd){var result;with(firebug){if(_cmd.length==0) -return;el.left.console.input.environment.getElement().value="";d.console.historyIndex=d.console.history.push(_cmd);try{if(_cmd==='console.firebug'){d.console.addLine().attribute.addClass("Arrow").update(firebug.version);}else{result=eval.call(window,_cmd);d.console.print(_cmd,result);}}catch(e){d.console.addLine().attribute.addClass("Arrow").update(">>> "+_cmd);d.console.printException(e);} -d.console.scroll();}},scroll:function(){with(firebug){el.left.console.monitor.environment.getElement().parentNode.scrollTop=Math.abs(el.left.console.monitor.environment.getSize().offsetHeight-(el.left.console.monitor.element.parentNode.offsetHeight-11));}},run:function(_command){with(firebug){if(!internal.init){d.console.cache.push({"command":_command,"arg":Array.prototype.slice.call(arguments,1)});}else{d.console.cmd[_command].apply(window,Array.prototype.slice.call(arguments,1));}}},toggleML:function(){with(firebug){var open=!env.ml;env.ml=!env.ml;d.navigateRightColumn("console",open);el[open?"left":"right"].console.mlButton.environment.addStyle({display:"none"});el[!open?"left":"right"].console.mlButton.environment.addStyle({display:"block"});el.left.console.mlButton.attribute[(open?"add":"remove")+"Class"]("CloseML");}},countMap:{},timeMap:{},cmd:{log:function(_value){with(firebug){var args=d.console.formatArgs.apply(window,arguments);d.console.addLine().attribute.addClass("Log").update(args);d.console.scroll();}},warn:function(_value){with(firebug){var args=d.console.formatArgs.apply(window,arguments);d.console.addLine().attribute.addClass("Warn").update(args);d.console.scroll();}},info:function(_value){with(firebug){var args=d.console.formatArgs.apply(window,arguments);d.console.addLine().attribute.addClass("Info").update(args);d.console.scroll();}},debug:function(_value){with(firebug){var args=d.console.formatArgs.apply(window,arguments);d.console.addLine().attribute.addClass("Debug").update(args);d.console.scroll();}},error:function(_value){with(firebug){var args=d.console.formatArgs.apply(window,arguments);d.console.addLine().attribute.addClass("Error").update(args);d.console.scroll();}},trace:function(_value){with(firebug){var stackAmt=3,f=arguments.caller,isArray=lib.util.IsArray(f);if((!isArray&&f)||(isArray&&f.length>0)){d.console.addLine().attribute.addClass("Arrow").update(">>> console.trace(stack)");for(var i=0;i>> console.dir("+_value+")");d.dom.open(_value,d.console.addLine());}},dirxml:function(){with(firebug){d.console.cmd.log.apply(this,arguments);}},time:function(_name){with(firebug){d.console.timeMap[_name]=new Date().getTime();}},timeEnd:function(_name){with(firebug){if(_name in d.console.timeMap){var delta=new Date().getTime()-d.console.timeMap[_name],args=d.console.formatArgs.apply(window,[_name+":",delta+"ms"]);d.console.addLine().attribute.addClass("log").update(args);delete d.console.timeMap[_name];}}},count:function(_name){with(firebug){if(!d.console.countMap[_name]) -d.console.countMap[_name]=0;d.console.countMap[_name]++;d.console.cmd.log.apply(window,[_name,d.console.countMap[_name]]);}},group:function(){with(firebug){d.console.cmd.log.apply(this,["console.group is not supported"]);}},groupEnd:function(){with(firebug){d.console.cmd.log.apply(this,["console.groupEnd is not supported"]);}},profile:function(){with(firebug){d.console.cmd.log.apply(this,["console.profile is not supported"]);}},profileEnd:function(){with(firebug){d.console.cmd.log.apply(this,["console.profileEnd is not supported"]);}}}},css:{index:-1,open:function(_index){with(firebug){var item=internal.targetWindow.document.styleSheets[_index],uri=item.href;try{var rules=item[lib.env.ie?"rules":"cssRules"],str="";for(var i=0;iAccess to restricted URI denied";} -el.left.css.container.update(str);}},printRule:function(_selector,_css,_layer){with(firebug){var str="
"+_selector+" {
";for(var i=0,len=_css.length;i"+item.replace(/(.+\:)(.+)/,"$1$2;")+"";} -str+="
}
";return str;}},refresh:function(){with(firebug){el.button.css.selectbox.update("");var collection=internal.targetWindow.document.styleSheets;for(var i=0,len=collection.length;iundefined");}else{result.push("null");}}else if(vtype=="regexp"){result.push(""+_value+"");}else if(vtype=="date"){result.push("'"+_value+"'");}else if(vtype=="boolean"||vtype=="number"){result.push(""+_value+"");}else if(vtype=="function"){result.push("function()");}else{result.push("\""+(!_inObject&&!_inArray?_value:_value.substring(0,35)+(_value.length>35?" ...":"")).replace(/\n/g,"\\n").replace(/\s/g," ").replace(/>/g,">").replace(/");}} -else if(isElement){if(_value.nodeType==3) -result.push(d.highlight(_value.nodeValue));else if(_inObject){result.push(""+_value.nodeName.toLowerCase()+"");}else{result.push("");if(_inArray){result.push(_value.nodeName.toLowerCase());if(_value.getAttribute){if(_value.getAttribute&&_value.getAttribute("id")) -result.push("#"+_value.getAttribute("id")+"");var elClass=_value.getAttribute(lib.env.ie&&!lib.env.ie8?"className":"class")||"";result.push(!elClass?"":"."+elClass.split(" ")[0]+"");} -result.push("");}else{result.push("<"+_value.nodeName.toLowerCase());if(_value.attributes){for(var i=0,len=_value.attributes.length;i"+item.nodeName+"=\""+item.nodeValue+"\"");}} -result.push(">");}}} -else if(isArray||isHash){if(isArray){if(_inObject){result.push("["+_value.length+"]");}else{result.push("[ ");for(var i=0,len=_value.length;i3){result.push(", "+(len-4)+" More...");break;} -result.push((i>0?", ":"")+d.highlight(_value[i],false,true,true));} -result.push(" ]");}}else if(_inObject){result.push("Object");}else{result.push("Object");var i=0;for(var key in _value){var value=_value[key];if((_inObject||_inArray)&&i>3){result.push(" More...");break;} -result.push(" "+key+"="+d.highlight(value,true));i++;} -result.push("");}}else{result.push([""+_value+""]);}}catch(e){result.push("..");} -return result.join("");}},html:{nIndex:"computedStyle",current:null,highlight:function(_element,_clear,_event){with(firebug){if(_element.firebugElement){return;} -if(_clear){internal.targetWindow.firebug.el.bgInspector.environment.addStyle({"display":"none"});return;} -d.inspector.inspect(_element,true);}},inspect:function(_element){var map=[],parentLayer,t,link,tagName,searchEl,parent=_element;while(parent){map.push(parent);if(parent==firebug.internal.targetWindow.document.body)break;parent=parent.parentNode;} -map=map.reverse();with(firebug){if(env.dIndex!="html"){internal.targetWindow.firebug.d.navigate("html");} -internal.targetWindow.firebug.d.inspector.toggle(false);for(t=0;t<html>").insert(parent);};for(var i=0;i<=len;i++){if(i==len){new lib.element("A").attribute.addClass("Block").update("</"+element.nodeName.toLowerCase()+">").insert(container);break;} -var item=element.childNodes[i];if(item.nodeType==1&&!item.getAttribute('firebugIgnore')){var container=new lib.element().attribute.addClass("Block").insert(parent),link=new lib.element("A").attribute.addClass("Link").insert(container),spacer=new lib.element("SPAN").attribute.addClass("Spacer").update(" ").insert(link),html=new lib.element("SPAN").attribute.addClass("Content").update(d.highlight(item)).insert(link),subContainer=new lib.element("DIV").attribute.addClass("SubContainer").insert(container),view;view=lib.util.Element.getView(item);link.event.addListener("click",lib.util.Curry(d.html.openHtmlTree,window,item,subContainer,false));link.event.addListener("mouseover",lib.util.Curry(d.html.highlight,window,item,false));link.event.addListener("mouseout",lib.util.Curry(d.html.highlight,window,item,true));returnParentVal=returnParentEl==item?subContainer:returnParentVal;if(d.html.current==null&&item==document.body){link.attribute.addClass("Selected");link.attribute.addClass("Parent");d.html.current=[item,link];d.html.openHtmlTree(item,subContainer);} -if(element.nodeName!="HEAD"&&element!=document.documentElement&&(view.visibility=="hidden"||view.display=="none")){container.attribute.addClass("Unvisible");};if(item.childNodes){var childLen=item.childNodes.length;if(childLen==1&&item.childNodes[0].nodeType==Node.TEXT_NODE){if(isFinite(env.textNodeChars)&&parseInt(env.textNodeChars)>0){html.child.add(document.createTextNode(item.childNodes[0].nodeValue.substring(0,env.textNodeChars)));}else{html.child.add(document.createTextNode(item.childNodes[0].nodeValue));} -html.child.add(document.createTextNode(""));continue;} -else if(childLen>0){link.attribute.addClass("Parent");}}}};return returnParentVal;}},openProperties:function(){with(firebug){var index=d.html.nIndex;var node=d.html.current[0];d.clean(el.right.html.content);var str="";switch(index){case"computedStyle":var property=["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();var view=document.defaultView?document.defaultView.getComputedStyle(node,null):node.currentStyle;for(var i=0,len=property.length;i
"+item+"
"+d.highlight(view[item])+"
";} -el.right.html.content.update(str);break;case"dom":d.dom.open(node,el.right.html.content,lib.env.ie);break;}}}},inspector:{enabled:false,el:null,inspect:function(_element,_bgInspector){with(firebug){var pos=internal.targetWindow.firebug.lib.util.Element.getPosition(_element);internal.targetWindow.firebug.el[_bgInspector&&"bgInspector"||"borderInspector"].environment.addStyle({"width":_element.offsetWidth+"px","height":_element.offsetHeight+"px","top":pos.offsetTop-(_bgInspector?0:2)+"px","left":pos.offsetLeft-(_bgInspector?0:2)+"px","display":"block"});if(!_bgInspector){d.inspector.el=_element;}};},toggle:function(_absoluteValue,_event){with(firebug){if(_absoluteValue==d.inspector.enabled) -return;d.inspector.enabled=_absoluteValue!=undefined&&!_absoluteValue.clientX?_absoluteValue:!d.inspector.enabled;el.button.inspect.attribute[(d.inspector.enabled?"add":"remove")+"Class"]("Enabled");if(d.inspector.enabled==false){el.borderInspector.environment.addStyle({"display":"none"});d.inspector.el=null;}else if(lib.env.dIndex!="html"){if(internal.popupWin){internal.popupWin.firebug.d.navigate("html");}else{d.navigate("html");}}}}},scripts:{index:-1,lineNumbers:false,open:function(_index){with(firebug){d.scripts.index=_index;el.left.scripts.container.update("");var i=0,script=document.getElementsByTagName("script")[_index],uri=script.src||document.location.href,source;try{if(uri!=document.location.href){source=internal.cache[uri]||lib.xhr.get(uri).responseText;internal.cache[uri]=source;}else{source=script.innerHTML;} -source=source.replace(/<|>/g,function(_ch){return({"<":"<",">":">"})[_ch];});if(d.scripts.lineNumbers){source=source.replace(/(^)|\n/g,function(_ch){i++;return"\n"+i+" ";});} -el.left.scripts.container.update(source);}catch(e){el.left.scripts.container.child.add(new lib.element("DIV").attribute.addClass("CodeContainer").update("Access to restricted URI denied"));}}},toggleLineNumbers:function(){with(firebug){d.scripts.lineNumbers=!d.scripts.lineNumbers;el.button.scripts.lineNumbers.attribute[(d.scripts.lineNumbers?"add":"remove")+"Class"]("Enabled");d.scripts.open(d.scripts.index);}},refresh:function(){with(firebug){el.button.scripts.selectbox.clean();var collection=internal.targetWindow.document.getElementsByTagName("script");for(var i=0,len=collection.length;i"))}}},xhr:{objects:[],addObject:function(){with(firebug){for(var i=0,len=arguments.length;i0&&_object[0]!=undefined&&_object[len-1]!=undefined){return true;}else{for(var key in _object){if(key!="item"&&key!="length"&&key!="setNamedItemNS"&&key!="setNamedItem"&&key!="getNamedItem"&&key!="removeNamedItem"&&key!="getNamedItemNS"&&key!="removeNamedItemNS"&&key!="tags"){return false;}} -return true};},IsHash:function(_object){return _object&&typeof _object=="object"&&(_object==window||_object instanceof Object)&&!_object.nodeName&&!pi.util.IsArray(_object)},Init:[],AddEvent:function(_element,_eventName,_fn,_useCapture){_element[pi.env.ie?"attachEvent":"addEventListener"]((pi.env.ie?"on":"")+_eventName,_fn,_useCapture||false);return pi.util.Curry(pi.util.AddEvent,this,_element);},RemoveEvent:function(_element,_eventName,_fn,_useCapture){_element[pi.env.ie?"detachEvent":"removeEventListener"]((pi.env.ie?"on":"")+_eventName,_fn,_useCapture||false);return pi.util.Curry(pi.util.RemoveEvent,this,_element);},Element:{addClass:function(_element,_class){if(!pi.util.Element.hasClass(_element,_class)) -pi.util.Element.setClass(_element,pi.util.Element.getClass(_element)+" "+_class);},getClass:function(_element){return _element.getAttribute(pi.env.ie&&!pi.env.ie8?"className":"class")||"";},hasClass:function(_element,_class){return pi.util.Array.indexOf(pi.util.Element.getClass(_element).split(" "),_class)>-1;},removeClass:function(_element,_class){if(pi.util.Element.hasClass(_element,_class)){var names=pi.util.Element.getClass(_element,_class).split(" ");pi.util.Element.setClass(_element,pi.util.Array.remove(names,pi.util.Array.indexOf(names,_class)).join(" "));}},setClass:function(_element,_value){if(pi.env.ie8){_element.setAttribute("className",_value);_element.setAttribute("class",_value);}else{_element.setAttribute(pi.env.ie?"className":"class",_value);}},toggleClass:function(){if(pi.util.Element.hasClass.apply(this,arguments)) -pi.util.Element.removeClass.apply(this,arguments);else -pi.util.Element.addClass.apply(this,arguments);},getOpacity:function(_styleObject){var styleObject=_styleObject;if(!pi.env.ie) -return styleObject["opacity"];var alpha=styleObject["filter"].match(/opacity\=(\d+)/i);return alpha?alpha[1]/100:1;},setOpacity:function(_element,_value){if(!pi.env.ie) -return pi.util.Element.addStyle(_element,{"opacity":_value});_value*=100;pi.util.Element.addStyle(_element,{"filter":"alpha(opacity="+_value+")"});return this._parent_;},getPosition:function(_element){var parent=_element,offsetLeft=document.body.offsetLeft,offsetTop=document.body.offsetTop,view=pi.util.Element.getView(_element);while(parent&&parent!=document.body&&parent!=document.firstChild){offsetLeft+=parseInt(parent.offsetLeft);offsetTop+=parseInt(parent.offsetTop);parent=parent.offsetParent;};return{"bottom":view["bottom"],"clientLeft":_element.clientLeft,"clientTop":_element.clientTop,"left":view["left"],"marginTop":view["marginTop"],"marginLeft":view["marginLeft"],"offsetLeft":offsetLeft,"offsetTop":offsetTop,"position":view["position"],"right":view["right"],"top":view["top"],"zIndex":view["zIndex"]};},getSize:function(_element){var view=pi.util.Element.getView(_element);return{"height":view["height"],"clientHeight":_element.clientHeight,"clientWidth":_element.clientWidth,"offsetHeight":_element.offsetHeight,"offsetWidth":_element.offsetWidth,"width":view["width"]}},addStyle:function(_element,_style){for(var key in _style){key=key=="float"?pi.env.ie?"styleFloat":"cssFloat":key;if(key=="opacity"&&pi.env.ie){pi.util.Element.setOpacity(_element,_style[key]);continue;} -try{_element.style[key]=_style[key];}catch(e){}}},getStyle:function(_element,_property){_property=_property=="float"?pi.env.ie?"styleFloat":"cssFloat":_property;if(_property=="opacity"&&pi.env.ie) -return pi.util.Element.getOpacity(_element.style);return typeof _property=="string"?_element.style[_property]:_element.style;},getValue:function(_element){switch(_element.nodeName.toLowerCase()){case"input":case"textarea":return _element.value;case"select":return _element.options[_element.selectedIndex].value;default:return _element.innerHTML;break;}},getView:function(_element,_property){var view=document.defaultView?document.defaultView.getComputedStyle(_element,null):_element.currentStyle;_property=_property=="float"?pi.env.ie?"styleFloat":"cssFloat":_property;if(_property=="opacity"&&pi.env.ie) -return pi.util.Element.getOpacity(_element,view);return typeof _property=="string"?view[_property]:view;}},Hash:{clone:function(_hash,_undeep){var tmp={};for(var key in _hash){if(!_undeep&&pi.util.IsArray(_hash[key])){tmp[key]=pi.util.Array.clone(_hash[key]);}else if(!_undeep&&pi.util.IsHash(_hash[key])){tmp[key]=pi.util.Hash.clone(_hash[key]);}else{tmp[key]=_hash[key];}} -return tmp;},merge:function(_hash,_source,_undeep){for(var key in _source){var value=_source[key];if(!_undeep&&pi.util.IsArray(_source[key])){if(pi.util.IsArray(_hash[key])){Array.prototype.push.apply(_source[key],_hash[key])} -else -value=pi.util.Array.clone(_source[key]);} -else if(!_undeep&&pi.util.IsHash(_source[key])){if(pi.util.IsHash(_hash[key])){value=pi.util.Hash.merge(_hash[key],_source[key]);}else{value=pi.util.Hash.clone(_source[key]);}}else if(_hash[key]) -value=_hash[key];_hash[key]=value;};return _hash;}},String:{format:function(_str){var values=Array.prototype.slice.call(arguments,1);return _str.replace(/\{(\d)\}/g,function(){return values[arguments[1]];})}},GetViewport:function(){return{height:document.documentElement.clientHeight||document.body.clientHeight,width:document.documentElement.clientWidth||document.body.clientWidth}}};pi.base=function(){this.body={};this.init=null;this.build=function(_skipClonning){var base=this,skipClonning=_skipClonning||false,_private={},fn=function(){var _p=pi.util.Hash.clone(_private);if(!skipClonning){for(var key in this){if(pi.util.IsArray(this[key])){this[key]=pi.util.Array.clone(this[key]);}else -if(pi.util.IsHash(this[key])){this[key]=pi.util.Hash.clone(this[key],function(_key,_object){this[_key]._parent_=this;});}}};base.createAccessors(_p,this);if(base.init) -return base.init.apply(this,arguments);return this;};this.movePrivateMembers(this.body,_private);if(this.init){fn["$Init"]=this.init;};fn.prototype=this.body;return fn;};this.createAccessors=function(_p,_branch){var getter=function(_property){return this[_property];},setter=function(_property,_value){this[_property]=_value;return _branch._parent_||_branch;};for(var name in _p){var isPrivate=name.substring(0,1)=="_",title=name.substring(1,2).toUpperCase()+name.substring(2);if(isPrivate){_branch[(_branch["get"+title]?"_":"")+"get"+title]=pi.util.Curry(getter,_p,name);_branch[(_branch["set"+title]?"_":"")+"set"+title]=pi.util.Curry(setter,_p,name);} -else -if(pi.util.IsHash(_p[name])){_branch[name]._parent_=_branch;if(!_branch[name]) -_branch[name]={};this.createAccessors(_p[name],_branch[name]);}};};this.movePrivateMembers=function(_object,_branch){for(var name in _object){var isPrivate=name.substring(0,1)=="_";if(isPrivate){_branch[name]=_object[name];delete _object[name];} -else -if(pi.util.IsHash(_object[name])){_branch[name]={};this.movePrivateMembers(_object[name],_branch[name]);}};};};pi.element=new pi.base;pi.element.init=function(_val){this.environment.setElement(typeof _val=="string"||!_val?document.createElement(_val||"DIV"):_val);return this;};pi.element.body={"addStyle":function(){return this.environment.addStyle.apply(this.environment,arguments);},"clean":function(){var childs=this.child.get();while(childs.length){childs[0].parentNode.removeChild(childs[0]);}},"clone":function(_deep){return this.environment.getElement().cloneNode(_deep);},"insert":function(_element){_element=_element.environment?_element.environment.getElement():_element;_element.appendChild(this.environment.getElement());return this;},"insertAfter":function(_referenceElement){_referenceElement=_referenceElement.environment?_referenceElement.environment.getElement():_referenceElement;_referenceElement.nextSibling?this.insertBefore(_referenceElement.nextSibling):this.insert(_referenceElement.parentNode);return this;},"insertBefore":function(_referenceElement){_referenceElement=_referenceElement.environment?_referenceElement.environment.getElement():_referenceElement;_referenceElement.parentNode.insertBefore(this.environment.getElement(),_referenceElement);return this;},"query":function(_expression,_resultType,namespaceResolver,_result){return pi.xpath(_expression,_resultType||"ORDERED_NODE_SNAPSHOT_TYPE",this.environment.getElement(),_namespaceResolver,_result);},"remove":function(){if(this.environment.getParent()){this.environment.getParent().removeChild(this.environment.getElement());}},"update":function(_value){this.element[this.element.nodeName.toLowerCase()=="textarea"||this.element.nodeName.toLowerCase()=="input"?"value":"innerHTML"]=_value;return this;},"attribute":{"getAll":function(){return this._parent_.environment.getElement().attributes;},"clear":function(_name){this.set(_name,"");return this._parent_;},"get":function(_name){return this._parent_.environment.getElement().getAttribute(_name);},"has":function(_name){return pi.env.ie?(this.get(_name)!=null):this._parent_.environment.getElement().hasAttribute(_name);},"remove":function(_name){this._parent_.environment.getElement().removeAttribute(_name);return this._parent_;},"set":function(_name,_value){this._parent_.environment.getElement().setAttribute(_name,_value);return this._parent_;},"addClass":function(_classes){for(var i=0,len=arguments.length;i-1){callback[i].fn.apply(this);}}}};pi.xhr=pi.xhr.build();pi.xhr.get=function(_url,_returnPiObject){var request=new pi.xhr();request.environment.setAsync(false);request.environment.setUrl(_url);request.send();return _returnPiObject?request:request.environment.getApi();};pi.util.AddEvent(pi.env.ie?window:document,pi.env.ie?"load":"DOMContentLoaded",function(){for(var i=0,len=pi.util.Init.length;i=0;i--){var script=scriptsIncluded[i],src=getFileName(script.src);if(src){internal.liteFilename=src;break;}} -initConsole();lib.util.Init.push(firebug.init);}})(); \ No newline at end of file diff --git a/branches/firebug1.2/firebug-lite.css b/branches/firebug1.2/firebug-lite.css deleted file mode 100755 index c2112325..00000000 --- a/branches/firebug1.2/firebug-lite.css +++ /dev/null @@ -1,218 +0,0 @@ -/* */ -#Firebug div, #Firebug h3, #Firebug span, #Firebug input, #Firebug textarea, #Firebug select, #Firebug option, #Firebug a, #Firebug strong, #Firebug em, #Firebug label, #Firebug center { - position:static; float:none; width:auto; height:auto; text-align:left; border:0; overflow:visible; background:transparent none repeat left top; color:#111; font-size:1em; font-weight:normal; font-style:normal; font-family:sans-serif; margin:0; padding:0; min-height:0; -} -#Firebug input, #Firebug select, #Firebug textarea { background:#fff; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; border:1px outset #aaa; padding:2px } -#Firebug center { text-align:center; } -#Firebug strong { font-weight:bold; } -#Firebug em { font-style:italic; } -/* */ - -#FirebugIFrame { position:fixed !important; position:absolute; z-index:99999998; left:0; bottom:0; width:100%; height:295px; background:#fff; border-width:0px; } - -#Firebug { position:fixed !important; position:absolute; z-index:99999999; left:0; bottom:0; width:100%; height:295px; background:#fff; overflow:hidden; } -#Firebug .Resizer { position:absolute; top:0; width:100%; height:5px; background:transparent; *background:url(spacer.gif); cursor:n-resize; -moz-user-select:none; } -#Firebug .Header { height:38px; background:#ccc url(firebug.gif) 0 -85px; } -#Firebug .Left, #Firebug > .Right { background:#fff; height:257px;} -#Firebug .Left { float:left; width:100%; } -#Firebug .Right { float:left; display:none; width:30%; overflow:hidden; } -#Firebug .Right .Container { height:100%; border-left:1px solid #ccc; } - -/* - * buttonset - */ - -#Firebug .ButtonContainer { padding:8px 0 5px 10px; *margin-top:-3px; _margin-top:0; } -#Firebug .ButtonContainer .Button { cursor:pointer; font:12px "MS Sans Serif", Geneva, sans-serif; color:#000; margin-right:5px; padding:4px 4px 4px 4px; border:1px solid transparent !important; border-color:#ccc; text-decoration:none; } -#Firebug .ButtonContainer .Button:hover { border:1px outset #aaa !important; } -#Firebug .ButtonContainer .Button:active { border-style:inset !important; background-color:#ccc; } -#Firebug .ButtonContainer .Enabled { border:1px outset #aaa !important; } -#Firebug .ButtonContainer .Logo { text-decoration:none; padding-left:24px; background:url(firebug.gif) no-repeat 5px 3px; border:0 !important; opacity:0.7; filter:Alpha(Opacity=70); } -#Firebug .ButtonContainer .Logo:hover, #Firebug .ButtonContainer .Logo:active { border:0 !important; background-color:transparent; opacity:1; filter:Alpha(Opacity=100); } -#Firebug .ButtonContainer .Maximize, #Firebug .ButtonContainer .Minimize, #Firebug .ButtonContainer .NewWindow, #Firebug .ButtonContainer .Dock, #Firebug .ButtonContainer .Close { position:absolute; right:0; top:12px; padding:6px 8px 8px 8px; background:url(firebug.gif) no-repeat -3px -48px; border:0 !important; opacity:0.7; filter:Alpha(Opacity:80); *padding:0px 7px 1px 7px; } -#Firebug .ButtonContainer .Maximize:hover, #Firebug .ButtonContainer .Maximize:active, #Firebug .ButtonContainer .NewWindow:hover, #Firebug .ButtonContainer .NewWindow:active, #Firebug .ButtonContainer .Dock:hover, #Firebug .ButtonContainer .Dock:active, #Firebug .ButtonContainer .Minimize:hover, #Firebug .ButtonContainer .Minimize:active, #Firebug .ButtonContainer .Close:hover, #Firebug .ButtonContainer .Close:active { border:0 !important; background-color:transparent; opacity:1; filter:Alpha(Opacity:100); } -#Firebug .ButtonContainer .Minimize { background-position:-3px -20px; right:40px; } -#Firebug .ButtonContainer .Maximize { display:none; background-position:-3px -34px; right:40px; } -#Firebug .ButtonContainer .NewWindow { background-position:-3px -123px; right:20px; } -#Firebug .ButtonContainer .Dock { background-position:-3px -137px; } -#Firebug .ButtonContainer .ButtonSet { border-left:1px solid #ccc; padding:0 0 0 3px; display:inline; } - -/* - * navigation - */ - -#Firebug .Nav { height:23px; background:url(firebug.gif) repeat-x 0 -62px; padding-left:10px; } -#Firebug .Nav .Tab { display:block; width:auto; float:left; padding:3px 6px 2px 6px; cursor:pointer; border:1px outset transparent !important; border:0; font:bold 11px Arial, Helvetica, sans-serif; color:#666; } -#Firebug .Nav .Tab:hover, #Firebug .Nav .Selected { border:1px outset #ccc !important; border-top-color:transparent !important; } -#Firebug .Nav .Selected { color:#111; cursor:default; background-color:#f2f2f2; } -#Firebug .Nav .Settings { float:right; } -#Firebug .Nav .Settings .Options { text-decoration:none; padding-left:24px; background:url(firebug.gif) no-repeat 65px -151px; border:0 !important; opacity:0.7; filter:Alpha(Opacity=70); } -#Firebug .Nav .Settings .Options:hover, #Firebug .ButtonContainer .Options:active { border:0 !important; background-color:transparent; opacity:1; filter:Alpha(Opacity=100); } - - -/* - * inspector - */ - -#FirebugBorderInspector { display:none; z-index:99999998; position:absolute; top:0; left:0; border:2px solid #0000ff; background:transparent; *background:url(spacer.gif); opacity:0.5; filter:Alpha(Opacity=50); padding:0; margin:0; } -#FirebugBGInspector { display:none; z-index:99999998; position:absolute; top:0; left:0; background:rgb(0,150,255); opacity:0.5; filter:Alpha(Opacity=50); padding:0; margin:0; } - -/* - * dom - */ - -#Firebug .DOMRow { width:100% !important; width:90%; } -#Firebug .DOMRow .DOMRowLeft { float:left; width:30%; overflow:hidden; } -#Firebug .DOMRow .DOMRowLeft a { padding-left:15px; } -#Firebug .DOMRow .DOMRowRight { float:left; width:60%; *width:60%; _overflow:hidden; white-space:nowrap; } -#Firebug .DOMRow .DOMRowLeft .Object { background:url(tree_open.gif) no-repeat left center; cursor:pointer; } -#Firebug .DOMRow .DOMRowLeft .Object:hover { text-decoration:underline; color:#0000ff; } -#Firebug .DOMRow .DOMRowLeft .Opened { background-image:url(tree_close.gif) } -#Firebug .DOMRow .DOMRowSubContainer { display:none; padding-left:25px; } - -/* - * console - */ -#Firebug .Left .Console { overflow:hidden; } -#Firebug .Left .Console .Monitor { height:210px; border-bottom:1px solid #ccc; overflow:scroll; overflow-x:hidden; } -#Firebug .Left .Console .Monitor .Error { background:#ffeff1; color:#ff0000; } -#Firebug .Left .Console .Monitor .Error strong { color:#ff0000; } -#Firebug .Left .Console .Monitor .Row { padding:2px 5px 2px 5px; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; overflow:hidden; border-bottom:1px solid #e5e5e5; } -#Firebug .Left .Console .Monitor .Arrow { color:rgb(0,0,255); white-space:nowrap; } - -#Firebug .Left .Console .InputArrow { position:absolute; left:0px; width:20px; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; color:#0000ff; padding:2px 4px 0 4px; } -#Firebug .Left .Console .InputContainer { margin-left:35px; margin-right:5px; } -#Firebug .Left .Console .Input { width:100% !important; margin-top:2px; width:98%; overflow:hidden; border:0; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; } -#Firebug .Console .MLButton { cursor:pointer; position:absolute; top:276px; right:-22px; width:20px; padding:4px 10px 10px 10px; font-size:1px; *padding:2px 10px 10px 10px; background:url(firebug.gif) no-repeat -3px -34px; opacity:0.8; filter:Alpha(Opacity:80); } -#Firebug .Console .MLButton:hover { opacity:1; filter:Alpha(Opacity:100); } -#Firebug .Console .CloseML { background-position:-3px -20px; } - -#Firebug .Right .Console { background:#eee; } -#Firebug .Right .Console .Input { width:100%; _width:98%; height:228px; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; background:#fff; border:0; border-bottom:1px solid #ccc; margin-bottom:2px; *overflow:scroll; } -#Firebug .Right .Console .Button { cursor:pointer; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; padding:1px 4px 1px 4px; margin:0 4px 0 4px; background:#eee; border:1px solid #eee; text-decoration:none; *display:block; *width:auto; *float:left; *margin-top:-1px; } -#Firebug .Right .Console .Button:hover { border:1px outset #ccc; background:#fff; } -#Firebug .Right .Console .Button:active { border:1px inset #ccc; background:#ccc; } - -#Firebug .Left .Console .Monitor .Warn { background:url(warningIcon.png) #00FFFF no-repeat 2px center; padding-left:20px; } -#Firebug .Left .Console .Monitor .Info { background:url(infoIcon.png) #fff no-repeat 2px center; padding-left:20px; } -#Firebug .Left .Console .Monitor .Error { background:url(errorIcon.png) #FFFFE0 no-repeat 2px center; padding-left:20px; } - - -/* - * html - */ - -#Firebug .Left .HTML { display:none; height:250px; overflow:scroll; padding:0 10px 2px 10px; } -#Firebug .Left .HTML .Block { padding:0 0 0 0px; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } -#Firebug .Left .HTML .Block .Spacer { cursor:default; padding:2px 2px 2px 15px; } -#Firebug .Left .HTML .Block .Link { display:block; color:#333; padding:2px 2px 2px 0; } -#Firebug .Left .HTML .Block .Link .Content { padding:2px 2px 2px 2px; } -#Firebug .Left .HTML .Block .Link .TagName { cursor:pointer; } -#Firebug .Left .HTML .Block .Parent { font-weight:bold; color:#111; text-decoration:none; } -#Firebug .Left .HTML .Block .Parent .Spacer { background:#fff center no-repeat; } -#Firebug .Left .HTML .Block .Parent .Spacer { background-image:url(tree_open.gif); } -#Firebug .Left .HTML .Block .Open .Spacer { background-image:url(tree_close.gif) } -#Firebug .Left .HTML .Block .Selected { background-color:#4473c4; } -#Firebug .Left .HTML .Block .Selected * { color:#fff; } -#Firebug .Left .HTML .Block .SubContainer { padding-left:20px; height:0; font-size:0px; } -#Firebug .Left .HTML .Block .OpenSubContainer { height:auto; } -#Firebug .Left .HTML .Unvisible { opacity:0.5; filter:Alpha(Opacity=50); } - -#Firebug .Right .HTML { display:none; } -#Firebug .Right .HTML .Content { overflow:scroll; height:235px; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } -#Firebug .Right .HTML .Content .CSSItem { padding:5px; color:#333; height:6px } -#Firebug .Right .HTML .Content .CSSProperty { width:45%; float:left; overflow:hidden; } -#Firebug .Right .HTML .Content .CSSValue { width:55%; float:left; white-space:nowrap; overflow:visible !important; overflow:hidden; } -#Firebug .Right .HTML .Content .CSSValue input { font:11px ArArial, Helvetica, sans-serif; color:#333; 3px 0 0 -3px; } -#Firebug .Right .HTML .Content .CSSItem center { color:rgb(0,150,0); padding:0 0 3px 0; font:bold 12px Arial, Helvetica, sans-serif; } -#Firebug .ButtonContainer .HTML { display:none; } - -/* - * CSS - */ - -#Firebug .Left .CSS { display:none; padding:5px; height:225px; overflow:scroll; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } -#Firebug .Right .CSS { display:none; } -#Firebug .Left .CSS .Selector { margin-top:10px } -#Firebug .Left .CSS .CSSText { padding-left:20px; } -#Firebug .Left .CSS .CSSProperty { color:#005500; margin-top:10px; } -#Firebug .Left .CSS .CSSValue { padding-left:5px; color:#000088; } -#Firebug .ButtonContainer .CSS { display:none; } - -#Firebug .Right .CSS { background:#eee; } -#Firebug .Right .CSS .Input { width:100%; _width:98%; height:205px; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; background:#fff; border:0; border-bottom:1px solid #ccc; margin-bottom:2px; *overflow:scroll; } -#Firebug .Right .CSS .Button { cursor:pointer; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; padding:1px 4px 1px 4px; margin:0 4px 0 4px; background:#eee; border:1px solid #eee; text-decoration:none; *display:block; *width:auto; *float:left; *margin-top:-1px; } -#Firebug .Right .CSS .Button:hover { border:1px outset #ccc; background:#fff; } -#Firebug .Right .CSS .Button:active { border:1px inset #ccc; background:#ccc; } - -/* - * Scripts - */ - -#Firebug .Left .Scripts { display:none; height:225px; *height:235px; overflow:scroll; font:12px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space:pre; } -#Firebug .Left .Scripts .LineNumber { float:left; width:30px; height:20px; padding:0 2px 0 0; background:#eee; color:#666; font-family:Courier; text-align:right; border-right:1px solid #ccc; } -#Firebug .Left .Scripts .CodeContainer { padding:5px; } -#Firebug .Left .Scripts .Code { height:20px; } -#Firebug .Left .Scripts .CodeContainer, #Firebug .Left .Scripts .Code { word-wrap:normal; white-space:pre; } -#Firebug .Right .Scripts { display:none; } -#Firebug .ButtonContainer .Scripts { display:none; } - -/* - * DOM - */ - -#Firebug .Left .DOM { display:none; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; padding:5px; overflow:scroll; height:225px; } -#Firebug .Left .DOM .Object { font-weight:bold; } -#Firebug .Right .DOM { display:none; overflow:scroll; } -#Firebug .ButtonContainer .DOM { display:none; } -#Firebug .ButtonContainer .DOM label { font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } - -/* - * XHR - */ - -#Firebug .Left .XHR { display:none; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; padding:5px; overflow:scroll; height:225px; } -#Firebug .Left .XHR .Block { float:left; width:30%; } -#Firebug .Left .XHR .BlockContent { padding:3px; border-right:1px dotted #aaa; } -#Firebug .Left .XHR .Block strong { display:block; text-align:center; padding:3px; background:rgb(200,225,255); color:rgb(50,50,50); } -#Firebug .Left .XHR .Block span { display:block; text-align:center; overflow:hidden; } -#Firebug .Left .XHR .Block span a { cursor:pointer; color:rgb(0,0,200); } -#Firebug .Right .XHR { display:none; overflow:scroll; } -#Firebug .ButtonContainer .XHR { display:none; } -#Firebug .ButtonContainer .XHR label { font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } - -#Firebug .Left .STR { display:none; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; padding:5px; overflow:scroll; height:225px; } - -/* - * settings - */ -#Firebug .SettingsDiv {position:absolute;width:190px;top:60px;border:1px outset #000;-x-system-font:none;color:#000;font-family:"MS Sans Serif",Geneva,sans-serif;font-size:12px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:normal;line-height:normal;display:none;background-color:#FFF;} -#Firebug .SettingsDiv .Header {background:#CCC url(firebug.gif) repeat scroll 0 -85px;height:30px;border-bottom:1px inset #000;} -#Firebug .SettingsDiv .Header .Title {padding-top:10px;text-align:center;} -#Firebug .SettingsDiv .Content {padding:5px;} -#Firebug .SettingsDiv .Content .SettingsCBX{position:relative;top:2px;margin: 4px 5px 0 0; border:0 !important; padding:0 !important; height: 15px !important;} -#Firebug .SettingsDiv .Content .SettingsTextbox{position:relative;top:2px;margin: 4px 5px 0 0; border:0 !important; padding:0 !important; height: 15px !important; width:35px !important; border:1px solid #000000 !important;} -#Firebug .SettingsDiv .Content .ButtonsLeft {float:left;padding:10px 0px 5px 0px;} -#Firebug .SettingsDiv .Content .ButtonsRight {float:right;padding:10px 0px 5px 0px;} -#Firebug .SettingsDiv .Content .ProgressDiv {background-color:#FFF;width:100%;height:100%;position:absolute;left:0;top:0;z-index:1;opacity:.8;filter:alpha(opacity=80);display:none;} -#Firebug .SettingsDiv .Content .Progress {background-image:url(progress.gif);width:66px;height:66px;position:absolute;top:50%;left:50%;margin-left:-33px;margin-top:-33px;} - -/* - * element highlighting - */ -#Firebug .Italic { font-style:italic; } -#Firebug .Strong { font-weight:bold; } -#Firebug .NormalWeight { font-weight:normal; } -#Firebug .Green { color:#008800; } -#Firebug .Gray { color:#666; } -#Firebug .Blue { color:#0000ee; } -#Firebug .DarkBlue { color:#000099; } -#Firebug .Red { color:#ee0000; } -#Firebug .Maroon { color:#800000; font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; } -#Firebug .Null { font:11px Verdana, Geneva, Arial, Helvetica, sans-serif; color:#fff; padding:0 2px 0 2px; background:#999; border:1px solid #666; } -#Firebug .ObjectLink, #Firebug .ObjectLinkHover { cursor:pointer; } -#Firebug .ObjectLinkHover { border-bottom:1px solid #008800; } - -#Firebug .Clear { clear:both; height:0px; font-size:0px; } - -#firebugIconDiv { width:38px;height:38px;right:15pt;bottom:5pt;border:2px solid #000;display:none;position:fixed;background-image:url(firebug_logo.png);text-decoration:underline;cursor:pointer;filter:alpha(opacity:60);opacity:.6;z-index:99999998;} diff --git a/branches/firebug1.2/firebug-lite.js b/branches/firebug1.2/firebug-lite.js deleted file mode 100755 index 28897faf..00000000 --- a/branches/firebug1.2/firebug-lite.js +++ /dev/null @@ -1,2577 +0,0 @@ -var firebug = { - version:[1.231,20100118], - el:{}, - env:{ - "css":"http://getfirebug.com/releases/lite/1.2/firebug-lite.css", - "debug":true, - "detectFirebug":true, - "dIndex":"console", - "height":295, - "hideDOMFunctions":false, - "openInPopup": false, - "override":false, - "ml":false, - "showIconWhenHidden":true, - "popupTop":1, - "popupLeft":1, - "popupWidth":undefined, - "popupHeight":undefined, - "textNodeChars":0 - }, - internal:{ - "cache":{}, - "extConsole":null, - "init":false, - "isPopup":false, - "liteFilename":null, - "minimized":false, - "popupWin":null, - "targetWindow":undefined - }, - initConsole:function(){ - /* - * initialize the console - user defined values are not available within this method because FBLite is not yet initialized - */ - var command; - try{ - if((!window.console || (window.console && !window.console.firebug)) || (firebug.env.override && !(/Firefox\/3/i.test(navigator.userAgent)))){ - window.console = { "provider":"Firebug Lite" }; - - for(command in firebug.d.console.cmd){ - window.console[command] = firebug.lib.util.Curry(firebug.d.console.run,window,command); - }; - } - window.onerror = function(_message,_file,_line){ - firebug.d.console.run('error',firebug.lib.util.String.format('{0} ({1},{2})',_message,firebug.getFileName(_file),_line)); - }; - } catch(e){} - }, - overrideConsole:function(){ - with (firebug){ - env.override=true; - try{ - internal.extConsole=window.console; - } catch(e){} - initConsole(); - } - }, - restoreConsole:function(){ - with(firebug){ - if(internal.extConsole){ - env.override=false; - try{ - window.console=internal.extConsole; - } catch(e){} - internal.extConsole=null; - } - } - }, - init:function(_css){ - var i, - cssLoaded=false, - iconTitle = "Click here or press F12, (CTRL|CMD)+SHIFT+L or SHIFT+ENTER to show Firebug Lite. CTRL|CMD click this icon to hide it."; - - with(firebug){ - if(document.getElementsByTagName('html')[0].attributes.getNamedItem('debug')){ - env.debug = document.getElementsByTagName('html')[0].attributes.getNamedItem('debug').nodeValue !== "false"; - } - - if(internal.isPopup) { - env.openInPopup = false; - internal.targetWindow = window.opener; - env.popupWidth = window.opener.firebug.env.popupWidth || window.opener.firebug.lib.util.GetViewport().width; - env.popupHeight = window.opener.firebug.env.popupHeight || window.opener.firebug.lib.util.GetViewport().height; - } else { - internal.targetWindow = window; - env.popupWidth = env.popupWidth || lib.util.GetViewport().width; - env.popupHeight = env.popupHeight || lib.util.GetViewport().height; - } - - settings.readCookie(); - - if(internal.init || (env.detectFirebug && window.console && window.console.firebug)) { - return; - } - - for(i=0;i>>") - ); - el.left.console.input = new lib.element("INPUT").attribute.set("type","text").attribute.addClass("Input").event.addListener("keydown",listen.consoleTextbox).insert( - new lib.element("DIV").attribute.addClass("InputContainer").insert(el.left.console.container) - ); - - el.right.console = {}; - el.right.console.container = new lib.element("DIV").attribute.addClass("Console Container").insert(el.right.container); - el.right.console.mlButton = new lib.element("A").attribute.addClass("MLButton CloseML").event.addListener("click",d.console.toggleML).insert(el.right.console.container); - el.right.console.input = new lib.element("TEXTAREA").attribute.addClass("Input").insert(el.right.console.container); - el.right.console.input.event.addListener("keydown",lib.util.Curry(tab,window,el.right.console.input.element)); - el.right.console.run = new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.runMultiline).update("Run").insert(el.right.console.container); - el.right.console.clear = new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.clean,window,el.right.console.input)).update("Clear").insert(el.right.console.container); - - el.button.console = {}; - el.button.console.container = new lib.element("DIV").attribute.addClass("ButtonSet").insert(el.button.container); - el.button.console.clear = new lib.element("A").attribute.addClass("Button").event.addListener("click",d.console.clear).update("Clear").insert(el.button.console.container); - - /* - * html - */ - - el.left.html = {}; - el.left.html.container = new lib.element("DIV").attribute.addClass("HTML").insert(el.left.container); - - el.right.html = {}; - el.right.html.container = new lib.element("DIV").attribute.addClass("HTML Container").insert(el.right.container); - - el.right.html.nav = {}; - el.right.html.nav.container = new lib.element("DIV").attribute.addClass("Nav").insert(el.right.html.container); - el.right.html.nav.computedStyle = new lib.element("A").attribute.addClass("Tab Selected").event.addListener("click",lib.util.Curry(d.html.navigate,firebug,"computedStyle")).update("Computed Style").insert(el.right.html.nav.container); - el.right.html.nav.dom = new lib.element("A").attribute.addClass("Tab").event.addListener("click",lib.util.Curry(d.html.navigate,firebug,"dom")).update("DOM").insert(el.right.html.nav.container); - - el.right.html.content = new lib.element("DIV").attribute.addClass("Content").insert(el.right.html.container); - - el.button.html = {}; - el.button.html.container = new lib.element("DIV").attribute.addClass("ButtonSet HTML").insert(el.button.container); - - /* - * css - */ - - el.left.css = {}; - el.left.css.container = new lib.element("DIV").attribute.addClass("CSS").insert(el.left.container); - - el.right.css = {}; - el.right.css.container = new lib.element("DIV").attribute.addClass("CSS Container").insert(el.right.container); - - el.right.css.nav = {}; - el.right.css.nav.container = new lib.element("DIV").attribute.addClass("Nav").insert(el.right.css.container); - el.right.css.nav.runCSS = new lib.element("A").attribute.addClass("Tab Selected").update("Run CSS").insert(el.right.css.nav.container); - - el.right.css.mlButton = new lib.element("A").attribute.addClass("MLButton CloseML").event.addListener("click",d.console.toggleML).insert(el.right.css.container); - el.right.css.input = new lib.element("TEXTAREA").attribute.addClass("Input").insert(el.right.css.container); - el.right.css.input.event.addListener("keydown",lib.util.Curry(firebug.tab,window,el.right.css.input.element)); - el.right.css.run = new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.runCSS).update("Run").insert(el.right.css.container); - el.right.css.clear = new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.clean,window,el.right.css.input)).update("Clear").insert(el.right.css.container); - - el.button.css = {}; - el.button.css.container = new lib.element("DIV").attribute.addClass("ButtonSet CSS").insert(el.button.container); - el.button.css.selectbox = new lib.element("SELECT").event.addListener("change",listen.cssSelectbox).insert(el.button.css.container); - - /* - * scripts - */ - - el.left.scripts = {}; - el.left.scripts.container = new lib.element("DIV").attribute.addClass("Scripts").insert(el.left.container); - - el.right.scripts = {}; - el.right.scripts.container = new lib.element("DIV").attribute.addClass("Scripts Container").insert(el.right.container); - - el.button.scripts = {}; - el.button.scripts.container = new lib.element("DIV").attribute.addClass("ButtonSet Scripts").insert(el.button.container); - el.button.scripts.selectbox = new lib.element("SELECT").event.addListener("change",listen.scriptsSelectbox).insert(el.button.scripts.container); - el.button.scripts.lineNumbers = new lib.element("A").attribute.addClass("Button").event.addListener("click",d.scripts.toggleLineNumbers).update("Show Line Numbers").insert(el.button.scripts.container); - - /* - * dom - */ - - el.left.dom = {}; - el.left.dom.container = new lib.element("DIV").attribute.addClass("DOM").insert(el.left.container); - - el.right.dom = {}; - el.right.dom.container = new lib.element("DIV").attribute.addClass("DOM Container").insert(el.right.container); - - el.button.dom = {}; - el.button.dom.container = new lib.element("DIV").attribute.addClass("ButtonSet DOM").insert(el.button.container); - el.button.dom.label = new lib.element("LABEL").update("Object Path:").insert(el.button.dom.container); - el.button.dom.textbox = new lib.element("INPUT").event.addListener("keydown",listen.domTextbox).update(internal.isPopup?"window.opener":"window").insert(el.button.dom.container); - - /* - * str - */ - el.left.str = {}; - el.left.str.container = new lib.element("DIV").attribute.addClass("STR").insert(el.left.container); - - el.right.str = {}; - el.right.str.container = new lib.element("DIV").attribute.addClass("STR").insert(el.left.container); - - el.button.str = {}; - el.button.str.container = new lib.element("DIV").attribute.addClass("ButtonSet XHR").insert(el.button.container); - el.button.str.watch = new lib.element("A").attribute.addClass("Button").event.addListener("click",lib.util.Curry(d.navigate,window,"xhr")).update("Back").insert(el.button.str.container); - - /* - * xhr - */ - el.left.xhr = {}; - el.left.xhr.container = new lib.element("DIV").attribute.addClass("XHR").insert(el.left.container); - - el.right.xhr = {}; - el.right.xhr.container = new lib.element("DIV").attribute.addClass("XHR").insert(el.left.container); - - - el.button.xhr = {}; - el.button.xhr.container = new lib.element("DIV").attribute.addClass("ButtonSet XHR").insert(el.button.container); - el.button.xhr.label = new lib.element("LABEL").update("XHR Path:").insert(el.button.xhr.container); - el.button.xhr.textbox = new lib.element("INPUT").event.addListener("keydown",listen.xhrTextbox).insert(el.button.xhr.container); - el.button.xhr.watch = new lib.element("A").attribute.addClass("Button").event.addListener("click",listen.addXhrObject).update("Watch").insert(el.button.xhr.container); - - /* - * settings - */ - el.settings = {}; - el.settings.container = new lib.element("DIV").child.add( - new lib.element("DIV").attribute.addClass("Header").child.add( - new lib.element().attribute.addClass("Title").update('Firebug Lite Settings') - ) - ).attribute.addClass("SettingsDiv").insert(el.main); - el.settings.content = new lib.element("DIV").attribute.addClass("Content").insert(el.settings.container); - el.settings.progressDiv = new lib.element("DIV").attribute.addClass("ProgressDiv").insert(el.settings.content); - el.settings.progress = new lib.element("DIV").attribute.addClass("Progress").insert(el.settings.progressDiv); - el.settings.cbxDebug = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Start visible")); - new lib.element("BR").insert(el.settings.content); - el.settings.cbxDetectFirebug = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Hide when Firebug active")); - new lib.element("BR").insert(el.settings.content); - el.settings.cbxHideDOMFunctions = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Hide DOM functions")); - new lib.element("BR").insert(el.settings.content); - el.settings.cbxOverride = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Override window.console")); - new lib.element("BR").insert(el.settings.content); - el.settings.cbxShowIcon = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Show icon when hidden")); - new lib.element("BR").insert(el.settings.content); - el.settings.cbxOpenInPopup = new lib.element("INPUT").attribute.set("type","checkbox").attribute.addClass("SettingsCBX").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Open in popup")); - new lib.element("BR").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode("Trim textnode to ")); - el.settings.textNodeChars = new lib.element("INPUT").attribute.set("type","text").attribute.addClass("SettingsTextbox").insert(el.settings.content); - el.settings.content.child.add(document.createTextNode(" chars")); - el.settings.buttonDiv = new lib.element("DIV").insert(el.settings.content); - el.settings.buttonLeftDiv = new lib.element("DIV").attribute.addClass("ButtonsLeft").insert(el.settings.buttonDiv); - el.settings.resetButton = new lib.element("INPUT").attribute.set("type","button").update("Reset").event.addListener("click",settings.reset).insert(el.settings.buttonLeftDiv); - el.settings.buttonRightDiv = new lib.element("DIV").attribute.addClass("ButtonsRight").insert(el.settings.buttonDiv); - el.settings.cancelButton = new lib.element("INPUT").attribute.set("type","button").update("Cancel").event.addListener("click",settings.hide).insert(el.settings.buttonRightDiv); - el.settings.buttonRightDiv.child.add(document.createTextNode(" ")); - el.settings.saveButton = new lib.element("INPUT").attribute.set("type","button").update("Save").event.addListener("click",settings.saveClicked).insert(el.settings.buttonRightDiv); - - lib.util.AddEvent(document,"mousemove",listen.mouse)("mousemove",win.resizer.resize)("mouseup",win.resizer.stop)("keydown",listen.keyboard); - - internal.init = true; - - for(var i=0, len=d.console.cache.length; i0) { - fe.textNodeChars=elSet.textNodeChars.element.value; - } else { - fe.textNodeChars=0; - } - - if(firebug.internal.isPopup) { - window.opener.firebug.env = firebug.lib.util.Hash.clone(fe); - } - - with(firebug) { - settings.writeCookie(); - settings.hide(); - win.refreshDOM(); - d.html.openHtmlTree(); - if(internal.isPopup) { - with(opener.firebug) { - win.refreshDOM(); - d.html.openHtmlTree(); - } - } - } - }, - reset: function() { - var exdate=new Date(); - - exdate.setTime(exdate.getTime()-1); - document.cookie='FBLiteSettings=;expires='+exdate.toGMTString(); - location.reload(true); - }, - readCookie: function() { - var i,cookieArr,valueArr,item,value; - - with(firebug.env){ - if(firebug.internal.targetWindow.document.cookie.length>0) { - cookieArr=firebug.internal.targetWindow.document.cookie.split('; '); - - for(i=0;i -1) { - scriptPath = scripts[i].src; - break; - } - } - - if (scriptPath) { - done = false; - script = fi.popupWin.document.createElement('script'); - script.type = 'text/javascript'; - script.src = scriptPath; - - script[firebug.lib.env.ie?"onreadystatechange":"onload"] = function(){ - if(!done && (!firebug.lib.env.ie || this.readyState == "complete" || this.readyState=="loaded")){ - done = true; - if(fi.popupWin.firebug) { - with(fi.popupWin.firebug) { - internal.isPopup = true; - env.css = fe.css; - init(); - el.button.dock.environment.addStyle({ "display": "block"}); - el.button.newWindow.environment.addStyle({ "display": "none"}); - } - } - } - }; - - if (!done && firebug.lib.env.webkit) { - interval = setInterval(function() { - if (firebug.internal.popupWin.firebug) { - clearInterval(interval); - done = true; - with(firebug.internal.popupWin.firebug) { - internal.isPopup = true; - env.css = fe.css; - init(); - el.button.dock.environment.addStyle({ "display": "block"}); - el.button.newWindow.environment.addStyle({ "display": "none"}); - } - } - }, 10); - }; - - if(!firebug.lib.env.ie) { - firebug.internal.popupWin.document.write('Firebug Lite - '+document.location.href+''); - } - if (!done) { - firebug.internal.popupWin.document.getElementsByTagName('head')[0].appendChild(script); - firebug.el.main.environment.addStyle({"display": "none"}); - firebug.el.mainiframe.environment.addStyle({"display": "none"}); - } - } else { - alert("Unable to detect the following script \"" + firebug.internal.liteFilename + - "\" ... if the script has been renamed then please set the value of firebug.internal.liteFilename to reflect this change"); - firebug.internal.popupWin.close(); - firebug.internal.popupWin=null; - } - } - } - }, - dock: function() { - with(opener.firebug) { - internal.popupWin = null; - el.main.environment.addStyle({ - "display": "block" - }); - el.mainiframe.environment.addStyle({ - "display": "block" - }); - settings.readCookie(); - window.close(); - }; - }, - unload: function() { - with(firebug){ - if(internal.isPopup) { - win.dock(); - } else if(internal.popupWin) { - internal.popupWin.close(); - } - } - }, - fitToPopup: function() { - with(firebug) { - var viewport = lib.util.GetViewport(window); - win.setHeight((window.innerHeight||viewport.height) - 38); - el.main.environment.addStyle({ - "width": (viewport.width) + "px" - }); - el.mainiframe.environment.addStyle({ - "width": (viewport.width) + "px" - }); - } - }, - resizer:{ - y:[], enabled:false, - start:function(_event){ - with(firebug){ - if(internal.minimized)return; - win.resizer.y=[el.main.element.offsetHeight,_event.clientY]; - if(lib.env.ie6){ - win.resizer.y[3]=parseInt(el.main.environment.getPosition().top); - } - win.resizer.enabled=true; - } - }, - resize:function(_event){ - with(firebug){ - if(!win.resizer.enabled)return; - win.resizer.y[2]=(win.resizer.y[0]+(win.resizer.y[1]-_event.clientY)); - el.main.environment.addStyle({ "height":win.resizer.y[2]+"px" }); - el.mainiframe.environment.addStyle({ "height":win.resizer.y[2]+"px" }); - if(lib.env.ie6){ - el.main.environment.addStyle({ "top":win.resizer.y[3]-(win.resizer.y[1]-_event.clientY)+"px" }); - el.mainiframe.environment.addStyle({ "top":win.resizer.y[3]-(win.resizer.y[1]-_event.clientY)+"px" }); - } - } - }, - stop:function(_event){ - with(firebug){ - if(win.resizer.enabled){ - win.resizer.enabled=false; - win.setHeight(win.resizer.y[2]-35); - } - } - } - }, - setHeight:function(_height){ - with(firebug){ - env.height=_height; - - el.left.container.environment.addStyle({ "height":_height+"px" }); - el.right.container.environment.addStyle({ "height":_height+"px" }); - el.main.environment.addStyle({ "height":_height+38+"px" }); - el.mainiframe.environment.addStyle({ "height":_height+38+"px" }); - - win.refreshSize(); - - // console - el.left.console.monitor.element.parentNode.style.height=_height-47+"px"; - el.left.console.mlButton.environment.addStyle({ "top":_height+19+"px" }); - el.right.console.mlButton.environment.addStyle({ "top":_height+19+"px" }); - el.right.console.input.environment.addStyle({ "height":_height-29+"px" }); - - // html - el.left.html.container.environment.addStyle({"height":_height-23+"px"}); - el.right.html.content.environment.addStyle({"height":_height-23+"px"}); - - // css - el.left.css.container.environment.addStyle({"height":_height-33+"px"}); - el.right.css.input.environment.addStyle({ "height":_height-55+"px" }); - - // script - el.left.scripts.container.environment.addStyle({"height":_height-23+"px"}); - - // dom - el.left.dom.container.environment.addStyle({"height":_height-31+"px"}); - - // xhr - el.left.xhr.container.environment.addStyle({"height":_height-32+"px"}); - - // string - el.left.str.container.environment.addStyle({"height":_height-32+"px"}); - } - }, - refreshDOM:function(){ - with(firebug){ - d.dom.open(eval(el.button.dom.textbox.environment.getElement().value),el.left.dom.container); - if(d.html.nIndex=="dom"){ - firebug.d.html.navigate("dom") - } - } - }, - refreshSize:function(){ - with(firebug){ - if(!internal.init) - return; - - var dim = lib.util.GetViewport(); - el.main.environment.addStyle({ "width":dim.width+"px"}); - el.mainiframe.environment.addStyle({ "width":dim.width+"px"}); - if(lib.env.ie6) - win.setVerticalPosition(dim); - } - }, - setVerticalPosition:function(_dim,_event){ - with(firebug){ - var dim = _dim||lib.util.GetViewport(); - el.main.environment.addStyle({ "top":dim.height-el.main.environment.getSize().offsetHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)+"px" }); - el.mainiframe.environment.addStyle({ "top":dim.height-el.main.environment.getSize().offsetHeight+Math.max(document.documentElement.scrollTop,document.body.scrollTop)+"px" }); - } - } - }, - d: { - clean:function(_element){ - with(firebug){ - _element.update(""); - } - }, - console:{ - addLine:function(){ - with (firebug) { - return new lib.element("DIV").attribute.addClass("Row").insert(el.left.console.monitor); - } - }, - cache:[], - clear:function(){ - with(firebug){ - d.clean(el.left.console.monitor); - d.console.cache = []; - } - }, - formatArgs:function(){ - with(firebug){ - var content = []; - for(var i=0, len=arguments.length; i>> "+_cmd); - d.console.addLine().update(d.highlight(_text,false,false,true)); - d.console.scroll(); - } - }, - printException: function(_exception){ - with(firebug){ - var message = _exception.description||_exception.message||_exception; - if(_exception.fileName){ - message+=' ('+(_exception.name&&(_exception.name+', ')||'')+getFileName(_exception.fileName)+', '+_exception.lineNumber+')'; - } - d.console.addLine().attribute.addClass("Error").update("Error: "+message,true); - } - }, - eval:function(_cmd){ - var result; - with(firebug){ - if(_cmd.length==0) - return; - - el.left.console.input.environment.getElement().value = ""; - d.console.historyIndex = d.console.history.push(_cmd); - - try { - if(_cmd==='console.firebug') { - d.console.addLine().attribute.addClass("Arrow").update(firebug.version); - } else { - result = eval.call(window,_cmd); - d.console.print(_cmd,result); - } - } catch(e){ - d.console.addLine().attribute.addClass("Arrow").update(">>> "+_cmd); - d.console.printException(e); - } - d.console.scroll(); - } - }, - scroll:function(){ - with(firebug){ - el.left.console.monitor.environment.getElement().parentNode.scrollTop = Math.abs(el.left.console.monitor.environment.getSize().offsetHeight-(el.left.console.monitor.element.parentNode.offsetHeight-11)); - } - }, - run:function(_command){ - with(firebug){ - if(!internal.init){ - d.console.cache.push({ "command":_command, "arg":Array.prototype.slice.call(arguments,1) }); - } else { - d.console.cmd[_command].apply(window,Array.prototype.slice.call(arguments,1)); - } - } - }, - toggleML:function(){ - with(firebug){ - var open = !env.ml; - env.ml = !env.ml; - d.navigateRightColumn("console",open); - el[open?"left":"right"].console.mlButton.environment.addStyle({ display:"none" }); - el[!open?"left":"right"].console.mlButton.environment.addStyle({ display:"block" }); - el.left.console.mlButton.attribute[(open?"add":"remove")+"Class"]("CloseML"); - } - }, - countMap:{}, timeMap: {}, - cmd:{ - log: function(_value){ - with(firebug){ - var args = d.console.formatArgs.apply(window,arguments); - d.console.addLine().attribute.addClass("Log").update(args); - d.console.scroll(); - } - }, - warn: function(_value){ - with(firebug){ - var args = d.console.formatArgs.apply(window,arguments); - d.console.addLine().attribute.addClass("Warn").update(args); - d.console.scroll(); - } - }, - info: function(_value){ - with(firebug){ - var args = d.console.formatArgs.apply(window,arguments); - d.console.addLine().attribute.addClass("Info").update(args); - d.console.scroll(); - } - }, - debug: function(_value){ - with(firebug){ - var args = d.console.formatArgs.apply(window,arguments); - d.console.addLine().attribute.addClass("Debug").update(args); - d.console.scroll(); - } - }, - error: function(_value){ - with(firebug){ - var args = d.console.formatArgs.apply(window,arguments); - d.console.addLine().attribute.addClass("Error").update(args); - d.console.scroll(); - } - }, - trace: function(_value){ - with(firebug){ - var stackAmt = 3, f = arguments.caller, isArray = lib.util.IsArray(f); //function that called trace - - if((!isArray&&f)||(isArray&&f.length>0)){ - d.console.addLine().attribute.addClass("Arrow").update(">>> console.trace(stack)"); - for(var i=0;i>> console.dir("+_value+")"); - d.dom.open(_value,d.console.addLine()); - } - }, - dirxml: function(){ - with(firebug){ - d.console.cmd.log.apply(this, arguments); - } - }, - time: function(_name){ - with(firebug){ - d.console.timeMap[_name] = new Date().getTime(); - } - }, - timeEnd: function(_name){ - with(firebug){ - if(_name in d.console.timeMap){ - var delta = new Date().getTime() - d.console.timeMap[_name], - args = d.console.formatArgs.apply(window,[_name+":", delta+"ms"]); - d.console.addLine().attribute.addClass("log").update(args); - delete d.console.timeMap[_name]; - } - } - }, - count: function(_name){ - with(firebug){ - if(!d.console.countMap[_name]) - d.console.countMap[_name] = 0; - d.console.countMap[_name]++; - d.console.cmd.log.apply(window, [_name, d.console.countMap[_name]]); - } - }, - group:function(){ - with(firebug){ - d.console.cmd.log.apply(this, ["console.group is not supported"]); - } - }, - groupEnd:function(){ - with(firebug){ - d.console.cmd.log.apply(this, ["console.groupEnd is not supported"]); - } - }, - profile:function(){ - with(firebug){ - d.console.cmd.log.apply(this, ["console.profile is not supported"]); - } - }, - profileEnd:function(){ - with(firebug){ - d.console.cmd.log.apply(this, ["console.profileEnd is not supported"]); - } - } - } - }, - css:{ - index:-1, - open:function(_index){ - with (firebug) { - var item = internal.targetWindow.document.styleSheets[_index], - uri = item.href; - try { - var rules = item[lib.env.ie ? "rules" : "cssRules"], str = ""; - for (var i=0; i"; - for(var i=0,len=_css.length; i$1
$2;")+""; - } - str+="
}
"; - return str; - } - }, - refresh:function(){ - with(firebug){ - el.button.css.selectbox.update(""); - var collection = internal.targetWindow.document.styleSheets; - for(var i=0,len=collection.length; iundefined"); - } else { - result.push("null"); - } - }else if (vtype=="regexp") { - result.push("" + _value + ""); - }else if (vtype=="date") { - result.push("'" + _value + "'"); - } else if (vtype=="boolean"||vtype=="number") { - result.push("" + _value + ""); - } else if(vtype=="function"){ - result.push("function()"); - } else { - result.push("\""+( !_inObject&&!_inArray?_value : _value.substring(0,35)+(_value.length>35?" ...":"") ).replace(/\n/g,"\\n").replace(/\s/g," ").replace(/>/g,">").replace(/"); - } - } - // element - else if(isElement){ - - if(_value.nodeType==3) - result.push(d.highlight(_value.nodeValue)); - else if(_inObject){ - result.push(""+_value.nodeName.toLowerCase()+""); - } else { - result.push(""); - - if(_inArray){ - result.push(_value.nodeName.toLowerCase()); - if(_value.getAttribute){ - if(_value.getAttribute&&_value.getAttribute("id")) - result.push("#"+_value.getAttribute("id")+""); - var elClass = _value.getAttribute(lib.env.ie&&!lib.env.ie8?"className":"class")||""; - result.push(!elClass?"":"."+elClass.split(" ")[0]+""); - } - result.push(""); - } else { - result.push("<"+ _value.nodeName.toLowerCase()); - - if(_value.attributes){ - for(var i=0,len=_value.attributes.length; i"+item.nodeName+"=\""+item.nodeValue+"\""); - } - } - - result.push(">"); - } - } - } - // array, hash - else if(isArray||isHash){ - if(isArray){ - if(_inObject){ - result.push("["+_value.length+"]"); - } else { - result.push("[ "); - - for(var i=0,len=_value.length; i3){ - result.push(", "+(len-4)+" More..."); - break; - } - result.push( (i > 0 ? ", " : "") + d.highlight(_value[i], false, true, true) ); - } - - result.push(" ]"); - } - } else if(_inObject){ - result.push("Object"); - } else { - result.push("Object"); - var i=0; - for(var key in _value){ - var value = _value[key]; - if((_inObject||_inArray)&&i>3){ - result.push(" More..."); - break; - } - result.push(" "+key+"="+d.highlight(value,true)); - i++; - } - result.push(""); - } - } else { - result.push([""+_value+""]); - } - } catch(e){ - result.push(".."); - } - return result.join(""); - } - }, - html:{ - nIndex:"computedStyle", - current:null, - highlight:function(_element,_clear,_event){ - with(firebug){ - if(_element.firebugElement){ - return; - } - if(_clear){ - internal.targetWindow.firebug.el.bgInspector.environment.addStyle({ "display":"none" }); - return; - } - d.inspector.inspect(_element,true); - } - }, - inspect:function(_element){ - var map = [], - parentLayer, - t, - link, - tagName, - searchEl, - parent = _element; - while (parent) { - map.push(parent); - if (parent == firebug.internal.targetWindow.document.body) break; - parent = parent.parentNode; - } - map = map.reverse(); - with(firebug) { - if (env.dIndex != "html") { - internal.targetWindow.firebug.d.navigate("html"); - } - - internal.targetWindow.firebug.d.inspector.toggle(false); - - for (t = 0; t < el.left.html.container.child.get().length; t++) { - searchEl=el.left.html.container.child.get()[t]; - if(/<html>").insert(parent); - }; - - for(var i=0; i<=len; i++){ - if(i==len){ - new lib.element("A").attribute.addClass("Block").update("</"+element.nodeName.toLowerCase()+">").insert(container); - break; - } - var item = element.childNodes[i]; - - if (item.nodeType == 1 && !item.getAttribute('firebugIgnore')){ - var container = new lib.element().attribute.addClass("Block").insert(parent), - link = new lib.element("A").attribute.addClass("Link").insert(container), - spacer = new lib.element("SPAN").attribute.addClass("Spacer").update(" ").insert(link), - html = new lib.element("SPAN").attribute.addClass("Content").update(d.highlight(item)).insert(link), - subContainer = new lib.element("DIV").attribute.addClass("SubContainer").insert(container), - view; - - view = lib.util.Element.getView(item); - link.event.addListener("click", lib.util.Curry(d.html.openHtmlTree, window, item, subContainer, false)); - link.event.addListener("mouseover", lib.util.Curry(d.html.highlight, window, item, false)); - link.event.addListener("mouseout", lib.util.Curry(d.html.highlight, window, item, true)); - - returnParentVal = returnParentEl == item ? subContainer : returnParentVal; - - if(d.html.current==null&&item==document.body){ - link.attribute.addClass("Selected"); - link.attribute.addClass("Parent"); - d.html.current = [item,link]; - d.html.openHtmlTree(item,subContainer); - } - - if(element.nodeName!="HEAD"&&element!=document.documentElement&&(view.visibility=="hidden"||view.display=="none")){ - container.attribute.addClass("Unvisible"); - }; - - if (item.childNodes){ - var childLen = item.childNodes.length; - if (childLen == 1 && item.childNodes[0].nodeType == Node.TEXT_NODE) { - if(isFinite(env.textNodeChars)&&parseInt(env.textNodeChars)>0) { - html.child.add(document.createTextNode(item.childNodes[0].nodeValue.substring(0, env.textNodeChars))); - } else { - html.child.add(document.createTextNode(item.childNodes[0].nodeValue)); - } - html.child.add(document.createTextNode("")); - continue; - } - else if (childLen > 0) { - link.attribute.addClass("Parent"); - } - } - } - }; - return returnParentVal; - } - }, - openProperties:function(){ - with(firebug){ - var index = d.html.nIndex; - var node = d.html.current[0]; - d.clean(el.right.html.content); - var str = ""; - switch(index){ - case "computedStyle": - var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort(); - var view = document.defaultView?document.defaultView.getComputedStyle(node,null):node.currentStyle; - for(var i=0,len=property.length; i
"+d.highlight(view[item])+"
"; - } - el.right.html.content.update(str); - break; - case "dom": - d.dom.open(node,el.right.html.content,lib.env.ie); - break; - } - } - } - }, - inspector:{ - enabled:false, - el:null, - inspect:function(_element,_bgInspector){ - with(firebug){ - var pos = internal.targetWindow.firebug.lib.util.Element.getPosition(_element); - - internal.targetWindow.firebug.el[_bgInspector&&"bgInspector"||"borderInspector"].environment.addStyle({ - "width":_element.offsetWidth+"px", "height":_element.offsetHeight+"px", - "top":pos.offsetTop-(_bgInspector?0:2)+"px", "left":pos.offsetLeft-(_bgInspector?0:2)+"px", - "display":"block" - }); - - if(!_bgInspector){ - d.inspector.el = _element; - } - }; - }, - toggle:function(_absoluteValue,_event){ - with (firebug) { - if(_absoluteValue==d.inspector.enabled) - return; - d.inspector.enabled = _absoluteValue!=undefined&&!_absoluteValue.clientX?_absoluteValue:!d.inspector.enabled; - el.button.inspect.attribute[(d.inspector.enabled ? "add" : "remove") + "Class"]("Enabled"); - if(d.inspector.enabled==false){ - el.borderInspector.environment.addStyle({ "display":"none" }); - d.inspector.el = null; - } else if(lib.env.dIndex!="html") { - if (internal.popupWin) { - internal.popupWin.firebug.d.navigate("html"); - } else { - d.navigate("html"); - } - } - } - } - }, - scripts:{ - index:-1, - lineNumbers:false, - open:function(_index){ - with(firebug){ - d.scripts.index = _index; - el.left.scripts.container.update(""); - var i=0,script = document.getElementsByTagName("script")[_index],uri = script.src||document.location.href,source; - try { - if(uri!=document.location.href){ - source = internal.cache[uri]||lib.xhr.get(uri).responseText; - internal.cache[uri] = source; - } else { - source = script.innerHTML; - } - source = source.replace(/<|>/g,function(_ch){ - return ({"<":"<",">":">"})[_ch]; - }); - - if(d.scripts.lineNumbers){ - source = source.replace(/(^)|\n/g,function(_ch){ - i++; - return "\n"+i+" "; - }); - } - - el.left.scripts.container.update(source); - } catch(e){ - el.left.scripts.container.child.add( - new lib.element("DIV").attribute.addClass("CodeContainer").update("Access to restricted URI denied") - ); - } - } - }, - toggleLineNumbers:function(){ - with(firebug){ - d.scripts.lineNumbers = !d.scripts.lineNumbers; - el.button.scripts.lineNumbers.attribute[(d.scripts.lineNumbers ? "add" : "remove") + "Class"]("Enabled"); - d.scripts.open( d.scripts.index ); - } - }, - refresh:function(){ - with(firebug){ - el.button.scripts.selectbox.clean(); - var collection = internal.targetWindow.document.getElementsByTagName("script"); - for(var i=0,len=collection.length; i")) - } - } - }, - xhr:{ - objects:[], - addObject:function(){ - with(firebug){ - for(var i=0,len=arguments.length; i0&&_object[0]!=undefined&&_object[len-1]!=undefined){ - return true; - } else { - for(var key in _object){ - if(key!="item"&&key!="length"&&key!="setNamedItemNS"&&key!="setNamedItem"&&key!="getNamedItem"&&key!="removeNamedItem"&&key!="getNamedItemNS"&&key!="removeNamedItemNS"&&key!="tags"){ - return false; - } - } - return true - }; - }, - IsHash:function(_object){ - return _object && typeof _object=="object"&&(_object==window||_object instanceof Object)&&!_object.nodeName&&!pi.util.IsArray(_object) - }, - Init:[], - AddEvent: function(_element,_eventName,_fn,_useCapture){ - _element[pi.env.ie?"attachEvent":"addEventListener"]((pi.env.ie?"on":"")+_eventName,_fn,_useCapture||false); - return pi.util.Curry(pi.util.AddEvent,this,_element); - }, - RemoveEvent: function(_element,_eventName,_fn,_useCapture){ - _element[pi.env.ie?"detachEvent":"removeEventListener"]((pi.env.ie?"on":"")+_eventName,_fn,_useCapture||false); - return pi.util.Curry(pi.util.RemoveEvent,this,_element); - }, - Element:{ - addClass:function(_element,_class){ - if( !pi.util.Element.hasClass(_element,_class) ) - pi.util.Element.setClass(_element, pi.util.Element.getClass(_element) + " " + _class ); - }, - getClass:function(_element){ - return _element.getAttribute(pi.env.ie&&!pi.env.ie8?"className":"class")||""; - }, - hasClass:function(_element,_class){ - return pi.util.Array.indexOf(pi.util.Element.getClass(_element).split(" "),_class)>-1; - }, - removeClass:function(_element,_class){ - if( pi.util.Element.hasClass(_element,_class) ){ - var names = pi.util.Element.getClass(_element,_class).split(" "); - pi.util.Element.setClass( - _element, - pi.util.Array.remove(names,pi.util.Array.indexOf(names,_class)).join(" ") - ); - } - }, - setClass:function(_element,_value){ - if(pi.env.ie8){ - _element.setAttribute("className", _value ); - _element.setAttribute("class", _value ); - } else { - _element.setAttribute(pi.env.ie?"className":"class", _value ); - } - }, - toggleClass:function(){ - if(pi.util.Element.hasClass.apply(this,arguments)) - pi.util.Element.removeClass.apply(this,arguments); - else - pi.util.Element.addClass.apply(this,arguments); - }, - getOpacity:function(_styleObject){ - var styleObject = _styleObject; - if(!pi.env.ie) - return styleObject["opacity"]; - - var alpha = styleObject["filter"].match(/opacity\=(\d+)/i); - return alpha?alpha[1]/100:1; - }, - setOpacity:function(_element,_value){ - if(!pi.env.ie) - return pi.util.Element.addStyle(_element,{ "opacity":_value }); - _value*=100; - pi.util.Element.addStyle(_element,{ "filter":"alpha(opacity="+_value+")" }); - return this._parent_; - }, - getPosition:function(_element){ - var parent = _element,offsetLeft = document.body.offsetLeft, offsetTop = document.body.offsetTop, view = pi.util.Element.getView(_element); - while(parent&&parent!=document.body&&parent!=document.firstChild){ - offsetLeft +=parseInt(parent.offsetLeft); - offsetTop += parseInt(parent.offsetTop); - parent = parent.offsetParent; - }; - return { - "bottom":view["bottom"], - "clientLeft":_element.clientLeft, - "clientTop":_element.clientTop, - "left":view["left"], - "marginTop":view["marginTop"], - "marginLeft":view["marginLeft"], - "offsetLeft":offsetLeft, - "offsetTop":offsetTop, - "position":view["position"], - "right":view["right"], - "top":view["top"], - "zIndex":view["zIndex"] - }; - }, - getSize:function(_element){ - var view = pi.util.Element.getView(_element); - return { - "height":view["height"], - "clientHeight":_element.clientHeight, - "clientWidth":_element.clientWidth, - "offsetHeight":_element.offsetHeight, - "offsetWidth":_element.offsetWidth, - "width":view["width"] - } - }, - addStyle:function(_element,_style){ - for(var key in _style){ - key = key=="float"?pi.env.ie?"styleFloat":"cssFloat":key; - if (key == "opacity" && pi.env.ie) { - pi.util.Element.setOpacity(_element,_style[key]); - continue; - } - try { - _element.style[key] = _style[key]; - }catch(e){} - } - }, - getStyle:function(_element,_property){ - _property = _property=="float"?pi.env.ie?"styleFloat":"cssFloat":_property; - if(_property=="opacity"&&pi.env.ie) - return pi.util.Element.getOpacity(_element.style); - return typeof _property=="string"?_element.style[_property]:_element.style; - }, - getValue:function(_element){ - switch(_element.nodeName.toLowerCase()){ - case "input": - case "textarea": - return _element.value; - case "select": - return _element.options[_element.selectedIndex].value; - default: - return _element.innerHTML; - break; - } - }, - getView:function(_element,_property){ - var view = document.defaultView?document.defaultView.getComputedStyle(_element,null):_element.currentStyle; - _property = _property=="float"?pi.env.ie?"styleFloat":"cssFloat":_property; - if(_property=="opacity"&&pi.env.ie) - return pi.util.Element.getOpacity(_element,view); - return typeof _property=="string"?view[_property]:view; - } - }, - Hash: { - clone:function(_hash,_undeep){ - var tmp = {}; - for(var key in _hash){ - if( !_undeep&&pi.util.IsArray( _hash[key] ) ){ - tmp[key] = pi.util.Array.clone( _hash[key] ); - } else if( !_undeep&&pi.util.IsHash( _hash[key] ) ){ - tmp[ key ] = pi.util.Hash.clone(_hash[key]); - } else { - tmp[key] = _hash[key]; - } - } - return tmp; - }, - merge:function(_hash,_source,_undeep){ - for(var key in _source){ - var value = _source[key]; - if (!_undeep&&pi.util.IsArray(_source[key])) { - if(pi.util.IsArray( _hash[key] )){ - Array.prototype.push.apply( _source[key], _hash[key] ) - } - else - value = pi.util.Array.clone(_source[key]); - } - else if (!_undeep&&pi.util.IsHash(_source[key])) { - if (pi.util.IsHash(_hash[key])) { - value = pi.util.Hash.merge(_hash[key], _source[key]); - } else { - value = pi.util.Hash.clone( _source[key] ); - } - } else if( _hash[key] ) - value = _hash[ key ]; - _hash[key] = value; - }; - return _hash; - } - }, - String:{ - format:function(_str){ - var values = Array.prototype.slice.call(arguments,1); - return _str.replace(/\{(\d)\}/g,function(){ - return values[arguments[1]]; - }) - } - }, - GetViewport:function(){ - return { - height:document.documentElement.clientHeight||document.body.clientHeight, - width:document.documentElement.clientWidth||document.body.clientWidth - } - } - }; - - pi.base = function(){ - this.body = {}; - this.init = null; - - this.build = function(_skipClonning){ - var base = this, skipClonning = _skipClonning||false, _private = {}, - fn = function(){ - var _p = pi.util.Hash.clone(_private); - if(!skipClonning){ - for(var key in this){ - if(pi.util.IsArray( this[ key ] ) ){ - this[key] = pi.util.Array.clone( this[key] ); - } else - if( pi.util.IsHash(this[key]) ){ - this[key] = pi.util.Hash.clone( - this[ key ], - function(_key,_object){ - this[ _key ]._parent_ = this; - } - ); - //this[key]._parent_ = this; - } - } - }; - base.createAccessors( _p, this ); - if(base.init) - return base.init.apply(this,arguments); - return this; - }; - this.movePrivateMembers(this.body,_private); - if(this.init){ - fn["$Init"] = this.init; - }; - fn.prototype = this.body; - return fn; - }; - - this.createAccessors = function(_p, _branch){ - var getter = function(_property){ return this[_property]; }, - setter = function(_property,_value){ this[_property] = _value; return _branch._parent_||_branch; }; - - for (var name in _p) { - var isPrivate = name.substring(0, 1) == "_", title = name.substring(1, 2).toUpperCase() + name.substring(2); - - if (isPrivate) { - _branch[(_branch["get" + title]?"_":"")+"get" + title] = pi.util.Curry(getter,_p,name); - _branch[(_branch["set" + title]?"_":"")+"set" + title] = pi.util.Curry(setter,_p,name); - } - else - if (pi.util.IsHash(_p[name])){ - _branch[name]._parent_ = _branch; - if(!_branch[name]) - _branch[name] = {}; - this.createAccessors(_p[name], _branch[name]); - } - }; - }; - - this.movePrivateMembers = function(_object, _branch){ - for (var name in _object) { - var isPrivate = name.substring(0, 1) == "_"; - - if (isPrivate) { - _branch[name] = _object[name]; - delete _object[name]; - } - else - if (pi.util.IsHash(_object[name])){ - _branch[name] = {}; - this.movePrivateMembers(_object[name], _branch[name]); - } - }; - }; - }; - - pi.element = new pi.base; - pi.element.init = function(_val){ - this.environment.setElement( - typeof _val=="string"||!_val? - document.createElement(_val||"DIV"): - _val - ); - return this; - }; - - pi.element.body = { - "addStyle":function(){ - return this.environment.addStyle.apply(this.environment,arguments); - }, - "clean":function(){ - var childs = this.child.get(); - while(childs.length){ - childs[0].parentNode.removeChild(childs[0]); - } - }, - "clone":function(_deep){ - return this.environment.getElement().cloneNode(_deep); - }, - "insert":function(_element){ - _element = _element.environment?_element.environment.getElement():_element; - _element.appendChild(this.environment.getElement()); - return this; - }, - "insertAfter":function(_referenceElement){ - _referenceElement = _referenceElement.environment?_referenceElement.environment.getElement():_referenceElement; - _referenceElement.nextSibling?this.insertBefore(_referenceElement.nextSibling):this.insert(_referenceElement.parentNode); - return this; - }, - "insertBefore":function(_referenceElement){ - _referenceElement = _referenceElement.environment?_referenceElement.environment.getElement():_referenceElement; - _referenceElement.parentNode.insertBefore(this.environment.getElement(),_referenceElement); - return this; - }, - "query":function(_expression,_resultType,namespaceResolver,_result){ - return pi.xpath(_expression,_resultType||"ORDERED_NODE_SNAPSHOT_TYPE",this.environment.getElement(),_namespaceResolver,_result); - }, - "remove":function(){ - if (this.environment.getParent()) { - this.environment.getParent().removeChild(this.environment.getElement()); - } - }, - "update":function(_value){ - this.element[this.element.nodeName.toLowerCase()=="textarea"||this.element.nodeName.toLowerCase()=="input"?"value":"innerHTML"]=_value; - return this; - }, - "attribute":{ - "getAll":function(){ - return this._parent_.environment.getElement().attributes; - }, - "clear":function(_name){ - this.set(_name,""); - return this._parent_; - }, - "get":function(_name){ - return this._parent_.environment.getElement().getAttribute(_name); - }, - "has":function(_name){ - return pi.env.ie?(this.get(_name)!=null):this._parent_.environment.getElement().hasAttribute(_name); - }, - "remove":function(_name){ - this._parent_.environment.getElement().removeAttribute(_name); - return this._parent_; - }, - "set":function(_name,_value){ - this._parent_.environment.getElement().setAttribute(_name,_value); - return this._parent_; - }, - "addClass":function(_classes){ - for(var i=0,len=arguments.length; i-1){ - callback[i].fn.apply(this); - } - } - } - }; - pi.xhr = pi.xhr.build(); - - /* - * xml.xhr.get - */ - - pi.xhr.get = function(_url,_returnPiObject){ - var request = new pi.xhr(); - request.environment.setAsync(false); - request.environment.setUrl(_url); - request.send(); - return _returnPiObject?request:request.environment.getApi(); - }; - - /* - * registering onload event for init functions - */ - pi.util.AddEvent( - pi.env.ie?window:document, - pi.env.ie?"load":"DOMContentLoaded", - function(){ - for(var i=0,len=pi.util.Init.length; i=0; i--){ - var script = scriptsIncluded[i], - src = getFileName(script.src); - if(src){ - internal.liteFilename = src; - break; - } - } - initConsole(); - lib.util.Init.push(firebug.init); - } -})(); diff --git a/branches/firebug1.2/firebug.gif b/branches/firebug1.2/firebug.gif deleted file mode 100644 index 2b05ad8e..00000000 Binary files a/branches/firebug1.2/firebug.gif and /dev/null differ diff --git a/branches/firebug1.2/firebug_logo.png b/branches/firebug1.2/firebug_logo.png deleted file mode 100644 index e2981d6b..00000000 Binary files a/branches/firebug1.2/firebug_logo.png and /dev/null differ diff --git a/branches/firebug1.2/jsmin.py b/branches/firebug1.2/jsmin.py deleted file mode 100644 index 4f9d384f..00000000 --- a/branches/firebug1.2/jsmin.py +++ /dev/null @@ -1,218 +0,0 @@ -#!/usr/bin/python - -# This code is original from jsmin by Douglas Crockford, it was translated to -# Python by Baruch Even. The original code had the following copyright and -# license. -# -# /* jsmin.c -# 2007-05-22 -# -# Copyright (c) 2002 Douglas Crockford (www.crockford.com) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy of -# this software and associated documentation files (the "Software"), to deal in -# the Software without restriction, including without limitation the rights to -# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -# of the Software, and to permit persons to whom the Software is furnished to do -# so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# The Software shall be used for Good, not Evil. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# */ - -from StringIO import StringIO - -def jsmin(js): - ins = StringIO(js) - outs = StringIO() - JavascriptMinify().minify(ins, outs) - str = outs.getvalue() - if len(str) > 0 and str[0] == '\n': - str = str[1:] - return str - -def isAlphanum(c): - """return true if the character is a letter, digit, underscore, - dollar sign, or non-ASCII character. - """ - return ((c >= 'a' and c <= 'z') or (c >= '0' and c <= '9') or - (c >= 'A' and c <= 'Z') or c == '_' or c == '$' or c == '\\' or (c is not None and ord(c) > 126)); - -class UnterminatedComment(Exception): - pass - -class UnterminatedStringLiteral(Exception): - pass - -class UnterminatedRegularExpression(Exception): - pass - -class JavascriptMinify(object): - - def _outA(self): - self.outstream.write(self.theA) - def _outB(self): - self.outstream.write(self.theB) - - def _get(self): - """return the next character from stdin. Watch out for lookahead. If - the character is a control character, translate it to a space or - linefeed. - """ - c = self.theLookahead - self.theLookahead = None - if c == None: - c = self.instream.read(1) - if c >= ' ' or c == '\n': - return c - if c == '': # EOF - return '\000' - if c == '\r': - return '\n' - return ' ' - - def _peek(self): - self.theLookahead = self._get() - return self.theLookahead - - def _next(self): - """get the next character, excluding comments. peek() is used to see - if a '/' is followed by a '/' or '*'. - """ - c = self._get() - if c == '/': - p = self._peek() - if p == '/': - c = self._get() - while c > '\n': - c = self._get() - return c - if p == '*': - c = self._get() - while 1: - c = self._get() - if c == '*': - if self._peek() == '/': - self._get() - return ' ' - if c == '\000': - raise UnterminatedComment() - - return c - - def _action(self, action): - """do something! What you do is determined by the argument: - 1 Output A. Copy B to A. Get the next B. - 2 Copy B to A. Get the next B. (Delete A). - 3 Get the next B. (Delete B). - action treats a string as a single character. Wow! - action recognizes a regular expression if it is preceded by ( or , or =. - """ - if action <= 1: - self._outA() - - if action <= 2: - self.theA = self.theB - if self.theA == "'" or self.theA == '"': - while 1: - self._outA() - self.theA = self._get() - if self.theA == self.theB: - break - if self.theA <= '\n': - raise UnterminatedStringLiteral() - if self.theA == '\\': - self._outA() - self.theA = self._get() - - - if action <= 3: - self.theB = self._next() - if self.theB == '/' and (self.theA == '(' or self.theA == ',' or - self.theA == '=' or self.theA == ':' or - self.theA == '[' or self.theA == '?' or - self.theA == '!' or self.theA == '&' or - self.theA == '|' or self.theA == ';' or - self.theA == '{' or self.theA == '}' or - self.theA == '\n'): - self._outA() - self._outB() - while 1: - self.theA = self._get() - if self.theA == '/': - break - elif self.theA == '\\': - self._outA() - self.theA = self._get() - elif self.theA <= '\n': - raise UnterminatedRegularExpression() - self._outA() - self.theB = self._next() - - - def _jsmin(self): - """Copy the input to the output, deleting the characters which are - insignificant to JavaScript. Comments will be removed. Tabs will be - replaced with spaces. Carriage returns will be replaced with linefeeds. - Most spaces and linefeeds will be removed. - """ - self.theA = '\n' - self._action(3) - - while self.theA != '\000': - if self.theA == ' ': - if isAlphanum(self.theB): - self._action(1) - else: - self._action(2) - elif self.theA == '\n': - if self.theB in ['{', '[', '(', '+', '-']: - self._action(1) - elif self.theB == ' ': - self._action(3) - else: - if isAlphanum(self.theB): - self._action(1) - else: - self._action(2) - else: - if self.theB == ' ': - if isAlphanum(self.theA): - self._action(1) - else: - self._action(3) - elif self.theB == '\n': - if self.theA in ['}', ']', ')', '+', '-', '"', '\'']: - self._action(1) - else: - if isAlphanum(self.theA): - self._action(1) - else: - self._action(3) - else: - self._action(1) - - def minify(self, instream, outstream): - self.instream = instream - self.outstream = outstream - self.theA = '\n' - self.theB = None - self.theLookahead = None - - self._jsmin() - self.instream.close() - -if __name__ == '__main__': - import sys - jsm = JavascriptMinify() - jsm.minify(sys.stdin, sys.stdout) \ No newline at end of file diff --git a/branches/firebug1.2/minifier.py b/branches/firebug1.2/minifier.py deleted file mode 100644 index caac9b6c..00000000 --- a/branches/firebug1.2/minifier.py +++ /dev/null @@ -1,13 +0,0 @@ -import os,sys,re,jsmin - -def minify(_str): - return jsmin.jsmin(_str) - -if __name__ == "__main__": - path = sys.argv[1] - target = sys.argv[2] - source = open(path).read() - print 'The file has been written to: %s'%(target) - f = open(target,'w') - f.write(minify(source)) - f.close() \ No newline at end of file diff --git a/branches/firebug1.2/minify b/branches/firebug1.2/minify deleted file mode 100755 index 318a2661..00000000 --- a/branches/firebug1.2/minify +++ /dev/null @@ -1 +0,0 @@ -python minifier.py firebug-lite.js firebug-lite-compressed.js diff --git a/branches/firebug1.2/minify.bat b/branches/firebug1.2/minify.bat deleted file mode 100644 index 318a2661..00000000 --- a/branches/firebug1.2/minify.bat +++ /dev/null @@ -1 +0,0 @@ -python minifier.py firebug-lite.js firebug-lite-compressed.js diff --git a/branches/firebug1.2/progress.gif b/branches/firebug1.2/progress.gif deleted file mode 100644 index e61d7091..00000000 Binary files a/branches/firebug1.2/progress.gif and /dev/null differ diff --git a/branches/firebug1.2/spacer.gif b/branches/firebug1.2/spacer.gif deleted file mode 100755 index 3be21197..00000000 Binary files a/branches/firebug1.2/spacer.gif and /dev/null differ diff --git a/branches/firebug1.3/build/firebug-lite-beta.js b/branches/firebug1.3/build/firebug-lite-beta.js deleted file mode 100644 index acd4a964..00000000 --- a/branches/firebug1.3/build/firebug-lite-beta.js +++ /dev/null @@ -1,29624 +0,0 @@ -(function(){ - -/*!************************************************************* - * - * Firebug Lite 1.3.2 - * - * Copyright (c) 2007, Parakey Inc. - * Released under BSD license. - * More information: http://getfirebug.com/firebuglite - * - **************************************************************/ - -/*! - * CSS selectors powered by: - * - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -/** @namespace describe lib */ -var FBL = {}; - -/** @name ns @namespace */ - -( /** @scope ns-lib @this FBL */ function() { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -var productionDir = "http://getfirebug.com/releases/lite/"; -var bookmarkletVersion = 4; - -// ************************************************************************************************ - -var reNotWhitespace = /[^\s]/; -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/; - -// Globals -this.reJavascript = /\s*javascript:\s*(.*)/; -this.reChrome = /chrome:\/\/([^\/]*)\//; -this.reFile = /file:\/\/([^\/]*)\//; - - -// ************************************************************************************************ -// properties - -var userAgent = navigator.userAgent.toLowerCase(); -this.isFirefox = /firefox/.test(userAgent); -this.isOpera = /opera/.test(userAgent); -this.isSafari = /webkit/.test(userAgent); -this.isIE = /msie/.test(userAgent) && !/opera/.test(userAgent); -this.isIE6 = /msie 6/i.test(navigator.appVersion); -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; -this.isIElt8 = this.isIE && (this.browserVersion-0 < 8); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.NS = null; -this.pixelsPerInch = null; - - -// ************************************************************************************************ -// Namespaces - -var namespaces = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.ns = function(fn) -{ - var ns = {}; - namespaces.push(fn, ns); - return ns; -}; - -var FBTrace = null; - -this.initialize = function() -{ - // Firebug Lite is already running in persistent mode so we just quit - if (window.firebug && firebug.firebuglite || window.console && console.firebuglite) - return; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize environment - - // point the FBTrace object to the local variable - if (FBL.FBTrace) - FBTrace = FBL.FBTrace; - else - FBTrace = FBL.FBTrace = {}; - - FBL.Ajax.initialize(); - - // check if the actual window is a persisted chrome context - var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object"; - - // chrome context of the persistent application - if (isChromeContext) - { - // TODO: xxxpedro persist - make a better synchronization - sharedEnv = window.Firebug.SharedEnv; - delete window.Firebug.SharedEnv; - - FBL.Env = sharedEnv; - FBL.Env.isChromeContext = true; - FBTrace.messageQueue = FBL.Env.traceMessageQueue; - } - // non-persistent application - else - { - FBL.NS = document.documentElement.namespaceURI; - FBL.Env.browser = window; - FBL.Env.destroy = destroyEnvironment; - - if (document.documentElement.getAttribute("debug") == "true") - FBL.Env.Options.startOpened = true; - - // find the URL location of the loaded application - findLocation(); - - // TODO: get preferences here... - var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")"); - if (prefs) - { - FBL.Env.Options.startOpened = prefs.startOpened; - FBL.Env.Options.enableTrace = prefs.enableTrace; - FBL.Env.Options.enablePersistent = prefs.enablePersistent; - FBL.Env.Options.disableXHRListener = prefs.disableXHRListener; - } - - if (FBL.isFirefox && - typeof FBL.Env.browser.console == "object" && - FBL.Env.browser.console.firebug && - FBL.Env.Options.disableWhenFirebugActive) - return; - } - - // exposes the FBL to the global namespace when in debug mode - if (FBL.Env.isDebugMode) - { - FBL.Env.browser.FBL = FBL; - } - - // check browser compatibilities - this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat"; - this.isIEQuiksMode = this.isIE && this.isQuiksMode; - this.isIEStantandMode = this.isIE && !this.isQuiksMode; - - this.noFixedPosition = this.isIE6 || this.isIEQuiksMode; - - // after creating/synchronizing the environment, initialize the FBTrace module - if (FBL.Env.Options.enableTrace) FBTrace.initialize(); - - if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize namespaces - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN"); - - for (var i = 0; i < namespaces.length; i += 2) - { - var fn = namespaces[i]; - var ns = namespaces[i+1]; - fn.apply(ns); - } - - if (FBTrace.DBG_INITIALIZE) { - FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END"); - FBTrace.sysout("FBL waitForDocument", "waiting document load"); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // finish environment initialization - - FBL.Firebug.loadPrefs(prefs); - - if (FBL.Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make a better synchronization - if (isChromeContext) - { - FBL.FirebugChrome.clone(FBL.Env.FirebugChrome); - } - else - { - FBL.Env.FirebugChrome = FBL.FirebugChrome; - FBL.Env.traceMessageQueue = FBTrace.messageQueue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // wait document load - - waitForDocument(); -}; - -var waitForDocument = function waitForDocument() -{ - // document.body not available in XML+XSL documents in Firefox - var doc = FBL.Env.browser.document; - var body = doc.getElementsByTagName("body")[0]; - - if (body) - { - calculatePixelsPerInch(doc, body); - onDocumentLoad(); - } - else - setTimeout(waitForDocument, 50); -}; - -var onDocumentLoad = function onDocumentLoad() -{ - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded"); - - // fix IE6 problem with cache of background images, causing a lot of flickering - if (FBL.isIE6) - fixIE6BackgroundImageCache(); - - // chrome context of the persistent application - if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext) - { - // finally, start the application in the chrome context - FBL.Firebug.initialize(); - - // if is not development mode, remove the shared environment cache object - // used to synchronize the both persistent contexts - if (!FBL.Env.isDevelopmentMode) - { - sharedEnv.destroy(); - sharedEnv = null; - } - } - // non-persistent application - else - { - FBL.FirebugChrome.create(); - } -}; - -// ************************************************************************************************ -// Env - -var sharedEnv; - -this.Env = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env Options (will be transported to Firebug options) - Options: - { - saveCookies: false, - - saveWindowPosition: false, - saveCommandLineHistory: false, - - startOpened: false, - startInNewWindow: false, - showIconWhenHidden: true, - - overrideConsole: true, - ignoreFirebugElements: true, - disableWhenFirebugActive: true, - - disableXHRListener: false, - - enableTrace: false, - enablePersistent: false - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Library location - Location: - { - sourceDir: null, - baseDir: null, - skinDir: null, - skin: null, - app: null - }, - - skin: "xp", - useLocalSkin: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env states - isDevelopmentMode: false, - isDebugMode: false, - isChromeContext: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env references - browser: null, - chrome: null -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var destroyEnvironment = function destroyEnvironment() -{ - setTimeout(function() - { - FBL = null; - }, 100); -}; - -// ************************************************************************************************ -// Library location - -var findLocation = function findLocation() -{ - var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; - - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = document; - - // Firebug Lite 1.3.0 bookmarklet identification - var script = doc.getElementById("FirebugLite"); - - if (script) - { - file = reFirebugFile.exec(script.src); - - var version = script.getAttribute("FirebugLite"); - var number = version ? parseInt(version) : 0; - - if (!version || !number || number < bookmarkletVersion) - { - FBL.Env.bookmarkletOutdated = true; - } - } - else - { - for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++) - { - var file = null; - if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) ) - { - script = si; - break; - } - } - } - - if (script) - script.firebugIgnore = true; - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - return ob + ""; - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - - if (elt.offsetLeft) - coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - if (elt.offsetTop) - coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - if (otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -} - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -} - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -} - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -} - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -} - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -} - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -} - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = this.getXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports window.Firebug as Firebug - */ -window.Firebug = FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.3.2", - revision: "$Revision$", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector) - Firebug.Inspector.create(); - - if (FBL.processAllStyleSheets) - processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - chromeMap[name].destroy(); - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - this.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - this.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.Options; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function(prefs) - { - this.restorePrefs(); - - prefs = prefs || eval("(" + readCookie("FirebugLite") + ")"); - - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - }, - - savePrefs: function() - { - var json = ['{'], jl = 0; - var Options = Env.Options; - - for (var name in Options) - { - if (Options.hasOwnProperty(name)) - { - var value = Firebug[name]; - - json[++jl] = '"'; - json[++jl] = name; - - var type = typeof value; - if (type == "boolean" || type == "number") - { - json[++jl] = '":'; - json[++jl] = value; - json[++jl] = ','; - } - else - { - json[++jl] = '":"'; - json[++jl] = value; - json[++jl] = '",'; - } - } - } - - json.length = jl--; - json[++jl] = '}'; - - createCookie("FirebugLite", json.join("")); - }, - - erasePrefs: function() - { - removeCookie("FirebugLite"); - } -}; - -Firebug.restorePrefs(); - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
  • this.startMeasuring(view);
  • - *
  • var size = this.measureText(lineNoCharsSpacer);
  • - *
  • this.stopMeasuring();
  • - *
- * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - FirebugChrome.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0 - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - } - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI", - height: 250 - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - isOpen: false, - height: 250, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - consoleMessageQueue: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = options.height + "px"; - - // avoid flickering during chrome rendering - if (isFirefox) - node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = FirebugChrome.height || options.height, - - options = [ - "true,top=", - Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0), - ",left=0,height=", - height, - ",width=", - screen.availWidth-10, // Opera opens popup in a new tab if it's too big! - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - },0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - if (oldChrome) - oldChrome.close(); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Save Options in Cookies", - type: "checkbox", - value: "saveCookies", - checked: Firebug.saveCookies, - command: "saveOptions" - }, - "-", - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - saveOptions: function(target) - { - var saveEnabled = target.getAttribute("checked"); - - if (!saveEnabled) this.restorePrefs(); - - this.updateMenu(target); - - return false; - }, - - restorePrefs: function(target) - { - Firebug.restorePrefs(); - - if(Firebug.saveCookies) - Firebug.savePrefs(); - else - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - - return false; - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(FirebugChrome.selectedPanelName); - - if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !FirebugChrome.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!FirebugChrome.isOpen) - { - FirebugChrome.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - setTimeout(function(){ - node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (FirebugChrome.isOpen || !this.isInitialized) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - FirebugChrome.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = FirebugChrome.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - FirebugChrome.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - FirebugChrome.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = element[CID]; - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - } - - return id; - }, - - unset: function(element) - { - var id = element[CID]; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - - }, - - key: function(element) - { - return element[CID]; - }, - - has: function(element) - { - return map.hasOwnProperty(element[CID]); - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -var fetchResource = function(url) -{ - var xhr = FBL.Ajax.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - return xhr.responseText; -}; - -var fetchProxyResource = function(url) -{ - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - return data ? data.contents : ""; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function DomplateTag(tagName) -{ - this.tagName = tagName; -} - -function DomplateEmbed() -{ -} - -function DomplateLoop() -{ -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -( /** @scope ns-domplate */ function() { - -var womb = null; - -var domplate = FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateEmbed.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateLoop.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else - attrs.push(attr); - } - } - if (classAttr) - attrs.splice(0, 0, classAttr); - if (idAttr) - attrs.splice(0, 0, idAttr); - - return attrs; - }, - - shortAttrIterator: function(elt) - { - var attrs = []; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName == "id" || attr.nodeName == "class") - attrs.push(attr); - } - } - - return attrs; - }, - - getHidden: function(elt) - { - return isVisible(elt) ? "" : "nodeHidden"; - }, - - getXPath: function(elt) - { - return getElementTreeXPath(elt); - }, - - // TODO: xxxpedro remove this? - getNodeText: function(element) - { - var text = element.textContent; - if (Firebug.showFullTextNodes) - return text; - else - return cropString(text, 50); - }, - /**/ - - getNodeTextGroups: function(element) - { - var text = element.textContent; - if (!Firebug.showFullTextNodes) - { - text=cropString(text,50); - } - - var escapeGroups=[]; - - if (Firebug.showTextNodesWithWhitespace) - escapeGroups.push({ - 'group': 'whitespace', - 'class': 'nodeWhiteSpace', - 'extra': { - '\t': '_Tab', - '\n': '_Para', - ' ' : '_Space' - } - }); - if (Firebug.showTextNodesWithEntities) - escapeGroups.push({ - 'group':'text', - 'class':'nodeTextEntity', - 'extra':{} - }); - - if (escapeGroups.length) - return escapeGroupsForEntities(text, escapeGroups); - else - return [{str:text,'class':'',extra:''}]; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyHTML: function(elt) - { - var html = getElementXML(elt); - copyToClipboard(html); - }, - - copyInnerHTML: function(elt) - { - copyToClipboard(elt.innerHTML); - }, - - copyXPath: function(elt) - { - var xpath = getElementXPath(elt); - copyToClipboard(xpath); - }, - - persistor: function(context, xpath) - { - var elts = xpath - ? getElementsByXPath(context.window.document, xpath) - : null; - - return elts && elts.length ? elts[0] : null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "element", - - supportsObject: function(object) - { - //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string"; - return instanceOf(object, "Element"); - }, - - browseObject: function(elt, context) - { - var tag = elt.nodeName.toLowerCase(); - if (tag == "script") - openNewTab(elt.src); - else if (tag == "link") - openNewTab(elt.href); - else if (tag == "a") - openNewTab(elt.href); - else if (tag == "img") - openNewTab(elt.src); - - return true; - }, - - persistObject: function(elt, context) - { - var xpath = getElementXPath(elt); - - return bind(this.persistor, top, xpath); - }, - - getTitle: function(element, context) - { - return getElementCSSSelector(element); - }, - - getTooltip: function(elt) - { - return this.getXPath(elt); - }, - - getContextMenuItems: function(elt, target, context) - { - var monitored = areEventsMonitored(elt, null, context); - - return [ - {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) }, - {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) }, - {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) }, - "-", - {label: "ShowEventsInConsole", type: "checkbox", checked: monitored, - command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) }, - "-", - {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) } - ]; - } -}); - -// ************************************************************************************************ - -this.TextNode = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "TextNode"), - " textContent="", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), """, - ">" - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "textNode", - - supportsObject: function(object) - { - return object instanceof Text; - } -}); - -// ************************************************************************************************ - -this.Document = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(doc) - { - return doc.location ? getFileName(doc.location.href) : ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Document || object instanceof XMLDocument; - return instanceOf(object, "Document"); - }, - - browseObject: function(doc, context) - { - openNewTab(doc.location.href); - return true; - }, - - persistObject: function(doc, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window.document; - }, - - getTitle: function(win, context) - { - return "document"; - }, - - getTooltip: function(doc) - { - return doc.location.href; - } -}); - -// ************************************************************************************************ - -this.StyleSheet = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(styleSheet) - { - return getFileName(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(styleSheet) - { - copyToClipboard(styleSheet.href); - }, - - openInTab: function(styleSheet) - { - openNewTab(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof CSSStyleSheet; - return instanceOf(object, "CSSStyleSheet"); - }, - - browseObject: function(styleSheet, context) - { - openNewTab(styleSheet.href); - return true; - }, - - persistObject: function(styleSheet, context) - { - return bind(this.persistor, top, styleSheet.href); - }, - - getTooltip: function(styleSheet) - { - return styleSheet.href; - }, - - getContextMenuItems: function(styleSheet, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) } - ]; - }, - - persistor: function(context, href) - { - return getStyleSheetByHref(href, context); - } -}); - -// ************************************************************************************************ - -this.Window = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(win) - { - try - { - return (win && win.location && !win.closed) ? getFileName(win.location.href) : ""; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.Window window closed?"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - return instanceOf(object, "Window"); - }, - - browseObject: function(win, context) - { - openNewTab(win.location.href); - return true; - }, - - persistObject: function(win, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window; - }, - - getTitle: function(win, context) - { - return "window"; - }, - - getTooltip: function(win) - { - if (win && !win.closed) - return win.location.href; - } -}); - -// ************************************************************************************************ - -this.Event = domplate(Firebug.Rep, -{ - tag: TAG("$copyEventTag", {object: "$object|copyEvent"}), - - copyEventTag: - OBJECTLINK("$object|summarizeEvent"), - - summarizeEvent: function(event) - { - var info = [event.type, ' ']; - - var eventFamily = getEventFamily(event.type); - if (eventFamily == "mouse") - info.push("clientX=", event.clientX, ", clientY=", event.clientY); - else if (eventFamily == "key") - info.push("charCode=", event.charCode, ", keyCode=", event.keyCode); - - return info.join(""); - }, - - copyEvent: function(event) - { - return new EventCopy(event); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Event || object instanceof EventCopy; - return instanceOf(object, "Event") || instanceOf(object, "EventCopy"); - }, - - getTitle: function(event, context) - { - return "Event " + event.type; - } -}); - -// ************************************************************************************************ - -this.SourceLink = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - hideSourceLink: function(sourceLink) - { - return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true; - }, - - getSourceLinkTitle: function(sourceLink) - { - if (!sourceLink) - return ""; - - try - { - var fileName = getFileName(sourceLink.href); - fileName = decodeURIComponent(fileName); - fileName = cropString(fileName, 17); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc); - } - - return typeof sourceLink.line == "number" ? - fileName + " (line " + sourceLink.line + ")" : - fileName; - - // TODO: xxxpedro - //return $STRF("Line", [fileName, sourceLink.line]); - }, - - copyLink: function(sourceLink) - { - copyToClipboard(sourceLink.href); - }, - - openInTab: function(sourceLink) - { - openNewTab(sourceLink.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceLink", - - supportsObject: function(object) - { - return object instanceof SourceLink; - }, - - getTooltip: function(sourceLink) - { - return decodeURI(sourceLink.href); - }, - - inspectObject: function(sourceLink, context) - { - if (sourceLink.type == "js") - { - var scriptFile = getSourceFileByHref(sourceLink.href, context); - if (scriptFile) - return Firebug.chrome.select(sourceLink); - } - else if (sourceLink.type == "css") - { - // If an object is defined, treat it as the highest priority for - // inspect actions - if (sourceLink.object) { - Firebug.chrome.select(sourceLink.object); - return; - } - - var stylesheet = getStyleSheetByHref(sourceLink.href, context); - if (stylesheet) - { - var ownerNode = stylesheet.ownerNode; - if (ownerNode) - { - Firebug.chrome.select(sourceLink, "html"); - return; - } - - var panel = context.getPanel("stylesheet"); - if (panel && panel.getRuleByLine(stylesheet, sourceLink.line)) - return Firebug.chrome.select(sourceLink); - } - } - - // Fallback is to just open the view-source window on the file - viewSource(sourceLink.href, sourceLink.line); - }, - - browseObject: function(sourceLink, context) - { - openNewTab(sourceLink.href); - return true; - }, - - getContextMenuItems: function(sourceLink, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceFile = domplate(this.SourceLink, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - persistor: function(context, href) - { - return getSourceFileByHref(href, context); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceFile", - - supportsObject: function(object) - { - return object instanceof SourceFile; - }, - - persistObject: function(sourceFile) - { - return bind(this.persistor, top, sourceFile.href); - }, - - browseObject: function(sourceLink, context) - { - }, - - getTooltip: function(sourceFile) - { - return sourceFile.href; - } -}); - -// ************************************************************************************************ - -this.StackFrame = domplate(Firebug.Rep, // XXXjjb Since the repObject is fn the stack does not have correct line numbers -{ - tag: - OBJECTBLOCK( - A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"), - " ( ", - FOR("arg", "$object|argIterator", - TAG("$arg.tag", {object: "$arg.value"}), - SPAN({"class": "arrayComma"}, "$arg.delim") - ), - " )", - SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle") - ), - - getCallName: function(frame) - { - //TODO: xxxpedro reps StackFrame - return frame.name || "anonymous"; - - //return getFunctionName(frame.script, frame.context); - }, - - getSourceLinkTitle: function(frame) - { - //TODO: xxxpedro reps StackFrame - var fileName = cropString(getFileName(frame.href), 20); - return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : ""); - - var fileName = cropString(getFileName(frame.href), 17); - return $STRF("Line", [fileName, frame.lineNo]); - }, - - argIterator: function(frame) - { - if (!frame.args) - return []; - - var items = []; - - for (var i = 0; i < frame.args.length; ++i) - { - var arg = frame.args[i]; - - if (!arg) - break; - - var rep = Firebug.getRep(arg.value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var delim = (i == frame.args.length-1 ? "" : ", "); - - items.push({name: arg.name, value: arg.value, tag: tag, delim: delim}); - } - - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackFrame", - - supportsObject: function(object) - { - return object instanceof StackFrame; - }, - - inspectObject: function(stackFrame, context) - { - var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js"); - Firebug.chrome.select(sourceLink); - }, - - getTooltip: function(stackFrame, context) - { - return $STRF("Line", [stackFrame.href, stackFrame.lineNo]); - } - -}); - -// ************************************************************************************************ - -this.StackTrace = domplate(Firebug.Rep, -{ - tag: - FOR("frame", "$object.frames focusRow", - TAG(this.StackFrame.tag, {object: "$frame"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackTrace", - - supportsObject: function(object) - { - return object instanceof StackTrace; - } -}); - -// ************************************************************************************************ - -this.jsdStackFrame = domplate(Firebug.Rep, -{ - inspectable: false, - - supportsObject: function(object) - { - return (object instanceof jsdIStackFrame) && (object.isValid); - }, - - getTitle: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - return getFunctionName(frame.script, context); - }, - - getTooltip: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame); - if (sourceInfo) - return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]); - else - return $STRF("Line", [frame.script.fileName, frame.line]); - }, - - getContextMenuItems: function(frame, target, context) - { - var fn = frame.script.functionObject.getWrappedValue(); - return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script); - } -}); - -// ************************************************************************************************ - -this.ErrorMessage = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({ - $hasTwisty: "$object|hasStackTrace", - $hasBreakSwitch: "$object|hasBreakSwitch", - $breakForError: "$object|hasErrorBreak", - _repObject: "$object", - _stackTrace: "$object|getLastErrorStackTrace", - onclick: "$onToggleError"}, - - DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'}, - "$object.message|getMessage" - ), - DIV({"class": "errorTrace"}), - DIV({"class": "errorSourceBox errorSource-$object|getSourceType"}, - IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}), - A({"class": "errorSource a11yFocus"}, "$object|getLine") - ), - TAG(this.SourceLink.tag, {object: "$object|getSourceLink"}) - ), - - getLastErrorStackTrace: function(error) - { - return error.trace; - }, - - hasStackTrace: function(error) - { - var url = error.href.toString(); - var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1); - return !fromCommandLine && error.trace; - }, - - hasBreakSwitch: function(error) - { - return error.href && error.lineNo > 0; - }, - - hasErrorBreak: function(error) - { - return fbs.hasErrorBreakpoint(error.href, error.lineNo); - }, - - getMessage: function(message) - { - var re = /\[Exception... "(.*?)" nsresult:/; - var m = re.exec(message); - return m ? m[1] : message; - }, - - getLine: function(error) - { - if (error.category == "js") - { - if (error.source) - return cropString(error.source, 80); - else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1) - return cropString(error.getSourceLine(), 80); - } - }, - - getSourceLink: function(error) - { - var ext = error.category == "css" ? "css" : "js"; - return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null; - }, - - getSourceType: function(error) - { - // Errors occurring inside of HTML event handlers look like "foo.html (line 1)" - // so let's try to skip those - if (error.source) - return "syntax"; - else if (error.lineNo == 1 && getFileExtension(error.href) != "js") - return "none"; - else if (error.category == "css") - return "none"; - else if (!error.href || !error.lineNo) - return "none"; - else - return "exec"; - }, - - onToggleError: function(event) - { - var target = event.currentTarget; - if (hasClass(event.target, "errorBreak")) - { - this.breakOnThisError(target.repObject); - } - else if (hasClass(event.target, "errorSource")) - { - var panel = Firebug.getElementPanel(event.target); - this.inspectObject(target.repObject, panel.context); - } - else if (hasClass(event.target, "errorTitle")) - { - var traceBox = target.childNodes[1]; - toggleClass(target, "opened"); - event.target.setAttribute('aria-checked', hasClass(target, "opened")); - if (hasClass(target, "opened")) - { - if (target.stackTrace) - var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox); - if (Firebug.A11yModel.enabled) - { - var panel = Firebug.getElementPanel(event.target); - dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]); - } - } - else - clearNode(traceBox); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyError: function(error) - { - var message = [ - this.getMessage(error.message), - error.href, - "Line " + error.lineNo - ]; - copyToClipboard(message.join("\n")); - }, - - breakOnThisError: function(error) - { - if (this.hasErrorBreak(error)) - Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo); - else - Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "errorMessage", - inspectable: false, - - supportsObject: function(object) - { - return object instanceof ErrorMessage; - }, - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - FirebugReps.SourceLink.inspectObject(sourceLink, context); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - var items = [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) } - ]; - - if (error.category == "css") - { - items.push( - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - - optionMenu("BreakOnAllErrors", "breakOnErrors") - ); - } - - return items; - } -}); - -// ************************************************************************************************ - -this.Assert = domplate(Firebug.Rep, -{ - tag: - DIV( - DIV({"class": "errorTitle"}), - DIV({"class": "assertDescription"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "assert", - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - Firebug.chrome.select(sourceLink); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - return [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) }, - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors, - command: bindFixed(this.breakOnAllErrors, this, error) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceText = domplate(Firebug.Rep, -{ - tag: - DIV( - FOR("line", "$object|lineIterator", - DIV({"class": "sourceRow", role : "presentation"}, - SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"), - SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text") - ) - ) - ), - - lineIterator: function(sourceText) - { - var maxLineNoChars = (sourceText.lines.length + "").length; - var list = []; - - for (var i = 0; i < sourceText.lines.length; ++i) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNo = (i+1) + ""; - while (lineNo.length < maxLineNoChars) - lineNo = " " + lineNo; - - list.push({lineNo: lineNo, text: sourceText.lines[i]}); - } - - return list; - }, - - getHTML: function(sourceText) - { - return getSourceLineRange(sourceText, 1, sourceText.lines.length); - } -}); - -//************************************************************************************************ -this.nsIDOMHistory = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showHistory"}, - OBJECTLINK("$object|summarizeHistory") - ), - - className: "nsIDOMHistory", - - summarizeHistory: function(history) - { - try - { - var items = history.length; - return items + " history entries"; - } - catch(exc) - { - return "object does not support history (nsIDOMHistory)"; - } - }, - - showHistory: function(history) - { - try - { - var items = history.length; // if this throws, then unsupported - Firebug.chrome.select(history); - } - catch (exc) - { - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object, type) - { - return (object instanceof Ci.nsIDOMHistory); - } -}); - -// ************************************************************************************************ -this.ApplicationCache = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showApplicationCache"}, - OBJECTLINK("$object|summarizeCache") - ), - - summarizeCache: function(applicationCache) - { - try - { - return applicationCache.length + " items in offline cache"; - } - catch(exc) - { - return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264"; - } - }, - - showApplicationCache: function(event) - { - openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "applicationCache", - - supportsObject: function(object, type) - { - if (Ci.nsIDOMOfflineResourceList) - return (object instanceof Ci.nsIDOMOfflineResourceList); - } - -}); - -this.Storage = domplate(Firebug.Rep, -{ - tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")), - - summarize: function(storage) - { - return storage.length +" items in Storage"; - }, - show: function(storage) - { - openNewTab("http://dev.w3.org/html5/webstorage/#storage-0"); - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "Storage", - - supportsObject: function(object, type) - { - return (object instanceof Storage); - } - -}); - -// ************************************************************************************************ -Firebug.registerRep( - //this.nsIDOMHistory, // make this early to avoid exceptions - this.Undefined, - this.Null, - this.Number, - this.String, - this.Window, - //this.ApplicationCache, // must come before Arr (array) else exceptions. - //this.ErrorMessage, - this.Element, - //this.TextNode, - this.Document, - this.StyleSheet, - this.Event, - //this.SourceLink, - //this.SourceFile, - //this.StackTrace, - //this.StackFrame, - //this.jsdStackFrame, - //this.jsdScript, - //this.NetFile, - this.Property, - this.Except, - this.Arr -); - -Firebug.setDefaultReps(this.Func, this.Obj); - -}}); - -// ************************************************************************************************ -/* - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source" - * in only this file reps.js. John J. Barton June 2007. - * -Software License Agreement (BSD License) - -Copyright (c) 2006, Yahoo! Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Yahoo! Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Yahoo! Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * / - */ - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var saveTimeout = 400; -var pageAmount = 10; - -// ************************************************************************************************ -// Globals - -var currentTarget = null; -var currentGroup = null; -var currentPanel = null; -var currentEditor = null; - -var defaultEditor = null; - -var originalClassName = null; - -var originalValue = null; -var defaultValue = null; -var previousValue = null; - -var invalidEditor = false; -var ignoreNextInput = false; - -// ************************************************************************************************ - -Firebug.Editor = extend(Firebug.Module, -{ - supportsStopEvent: true, - - dispatchName: "editor", - tabCharacter: " ", - - startEditing: function(target, value, editor) - { - this.stopEditing(); - - if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter")) - return; - - var panel = Firebug.getElementPanel(target); - if (!panel.editable) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.startEditing " + value, target); - - defaultValue = target.getAttribute("defaultValue"); - if (value == undefined) - { - var textContent = isIE ? "innerText" : "textContent"; - value = target[textContent]; - if (value == defaultValue) - value = ""; - } - - originalValue = previousValue = value; - - invalidEditor = false; - currentTarget = target; - currentPanel = panel; - currentGroup = getAncestorByClass(target, "editGroup"); - - currentPanel.editing = true; - - var panelEditor = currentPanel.getEditor(target, value); - currentEditor = editor ? editor : panelEditor; - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - var inlineParent = getInlineParent(target); - var targetSize = getOffsetSize(inlineParent); - - setClass(panel.panelNode, "editing"); - setClass(target, "editing"); - if (currentGroup) - setClass(currentGroup, "editing"); - - currentEditor.show(target, currentPanel, value, targetSize); - //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]); - currentEditor.beginEditing(target, value); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Editor start panel "+currentPanel.name); - this.attachListeners(currentEditor, panel.context); - }, - - stopEditing: function(cancel) - { - if (!currentTarget) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout); - - clearTimeout(this.saveTimeout); - delete this.saveTimeout; - - this.detachListeners(currentEditor, currentPanel.context); - - removeClass(currentPanel.panelNode, "editing"); - removeClass(currentTarget, "editing"); - if (currentGroup) - removeClass(currentGroup, "editing"); - - var value = currentEditor.getValue(); - if (value == defaultValue) - value = ""; - - var removeGroup = currentEditor.endEditing(currentTarget, value, cancel); - - try - { - if (cancel) - { - //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]); - if (value != originalValue) - this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue); - - if (removeGroup && !originalValue && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else if (!value) - { - this.saveEditAndNotifyListeners(currentTarget, null, previousValue); - - if (removeGroup && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else - this.save(value); - } - catch (exc) - { - //throw exc.message; - //ERROR(exc); - } - - currentEditor.hide(); - currentPanel.editing = false; - - //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]); - //if (FBTrace.DBG_EDITOR) - // FBTrace.sysout("Editor stop panel "+currentPanel.name); - - currentTarget = null; - currentGroup = null; - currentPanel = null; - currentEditor = null; - originalValue = null; - invalidEditor = false; - - return value; - }, - - cancelEditing: function() - { - return this.stopEditing(true); - }, - - update: function(saveNow) - { - if (this.saveTimeout) - clearTimeout(this.saveTimeout); - - invalidEditor = true; - - currentEditor.layout(); - - if (saveNow) - this.save(); - else - { - var context = currentPanel.context; - this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout); - } - }, - - save: function(value) - { - if (!invalidEditor) - return; - - if (value == undefined) - value = currentEditor.getValue(); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")); - try - { - this.saveEditAndNotifyListeners(currentTarget, value, previousValue); - - previousValue = value; - invalidEditor = false; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("editor.save FAILS "+exc, exc); - } - }, - - saveEditAndNotifyListeners: function(currentTarget, value, previousValue) - { - currentEditor.saveEdit(currentTarget, value, previousValue); - //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]); - }, - - setEditTarget: function(element) - { - if (!element) - { - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]); - this.stopEditing(); - } - else if (hasClass(element, "insertBefore")) - this.insertRow(element, "before"); - else if (hasClass(element, "insertAfter")) - this.insertRow(element, "after"); - else - this.startEditing(element); - }, - - tabNextEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var nextEditable = currentTarget; - do - { - nextEditable = !value && currentGroup - ? getNextOutsider(nextEditable, currentGroup) - : getNextByClass(nextEditable, "editable"); - } - while (nextEditable && !nextEditable.offsetHeight); - - this.setEditTarget(nextEditable); - }, - - tabPreviousEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var prevEditable = currentTarget; - do - { - prevEditable = !value && currentGroup - ? getPreviousOutsider(prevEditable, currentGroup) - : getPreviousByClass(prevEditable, "editable"); - } - while (prevEditable && !prevEditable.offsetHeight); - - this.setEditTarget(prevEditable); - }, - - insertRow: function(relative, insertWhere) - { - var group = - relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget; - var value = this.stopEditing(); - - currentPanel = Firebug.getElementPanel(group); - - currentEditor = currentPanel.getEditor(group, value); - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - currentGroup = currentEditor.insertNewRow(group, insertWhere); - if (!currentGroup) - return; - - var editable = hasClass(currentGroup, "editable") - ? currentGroup - : getNextByClass(currentGroup, "editable"); - - if (editable) - this.setEditTarget(editable); - }, - - insertRowForObject: function(relative) - { - var container = getAncestorByClass(relative, "insertInto"); - if (container) - { - relative = getChildByClass(container, "insertBefore"); - if (relative) - this.insertRow(relative, "before"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - attachListeners: function(editor, context) - { - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - addEvent(win, "resize", this.onResize); - addEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - - this.listeners = [ - chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this)) - ]; - - if (editor.arrowCompletion) - { - this.listeners.push( - chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)), - chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)), - chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)), - chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount)) - ); - } - - if (currentEditor.tabNavigation) - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")), - chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this)) - ); - } - else if (currentEditor.multiLine) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, insertTab) - ); - } - else - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this)) - ); - - if (currentEditor.tabCompletion) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)), - chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1)) - ); - } - } - }, - - detachListeners: function(editor, context) - { - if (!this.listeners) - return; - - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - removeEvent(win, "resize", this.onResize); - removeEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - if (chrome) - { - for (var i = 0; i < this.listeners.length; ++i) - chrome.keyIgnore(this.listeners[i]); - } - - delete this.listeners; - }, - - onResize: function(event) - { - currentEditor.layout(true); - }, - - onBlur: function(event) - { - if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box)) - this.stopEditing(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - Firebug.Module.initialize.apply(this, arguments); - - this.onResize = bindFixed(this.onResize, this); - this.onBlur = bind(this.onBlur, this); - }, - - disable: function() - { - this.stopEditing(); - }, - - showContext: function(browser, context) - { - this.stopEditing(); - }, - - showPanel: function(browser, panel) - { - this.stopEditing(); - } -}); - -// ************************************************************************************************ -// BaseEditor - -Firebug.BaseEditor = extend(Firebug.MeasureBox, -{ - getValue: function() - { - }, - - setValue: function(value) - { - }, - - show: function(target, panel, value, textSize, targetSize) - { - }, - - hide: function() - { - }, - - layout: function(forceAll) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for context menus within inline editors. - - getContextMenuItems: function(target) - { - var items = []; - items.push({label: "Cut", commandID: "cmd_cut"}); - items.push({label: "Copy", commandID: "cmd_copy"}); - items.push({label: "Paste", commandID: "cmd_paste"}); - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Editor Module listeners will get "onBeginEditing" just before this call - - beginEditing: function(target, value) - { - }, - - // Editor Module listeners will get "onSaveEdit" just after this call - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - } -}); - -// ************************************************************************************************ -// InlineEditor - -// basic inline editor attributes -var inlineEditorAttributes = { - "class": "textEditorInner", - - type: "text", - spellcheck: "false", - - onkeypress: "$onKeyPress", - - onoverflow: "$onOverflow", - oncontextmenu: "$onContextMenu" -}; - -// IE does not support the oninput event, so we're using the onkeydown to signalize -// the relevant keyboard events, and the onpropertychange to actually handle the -// input event, which should happen after the onkeydown event is fired and after the -// value of the input is updated, but before the onkeyup and before the input (with the -// new value) is rendered -if (isIE) -{ - inlineEditorAttributes.onpropertychange = "$onInput"; - inlineEditorAttributes.onkeydown = "$onKeyDown"; -} -// for other browsers we use the oninput event -else -{ - inlineEditorAttributes.oninput = "$onInput"; -} - -Firebug.InlineEditor = function(doc) -{ - this.initializeInline(doc); -}; - -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor, -{ - enterOnBlur: true, - outerMargin: 8, - shadowExpand: 7, - - tag: - DIV({"class": "inlineEditor"}, - DIV({"class": "textEditorTop1"}, - DIV({"class": "textEditorTop2"}) - ), - DIV({"class": "textEditorInner1"}, - DIV({"class": "textEditorInner2"}, - INPUT( - inlineEditorAttributes - ) - ) - ), - DIV({"class": "textEditorBottom1"}, - DIV({"class": "textEditorBottom2"}) - ) - ), - - inputTag : - INPUT({"class": "textEditorInner", type: "text", - /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"} - ), - - expanderTag: - IMG({"class": "inlineExpander", src: "blank.gif"}), - - initialize: function() - { - this.fixedWidth = false; - this.completeAsYouType = true; - this.tabNavigation = true; - this.multiLine = false; - this.tabCompletion = false; - this.arrowCompletion = true; - this.noWrap = true; - this.numeric = false; - }, - - destroy: function() - { - this.destroyInput(); - }, - - initializeInline: function(doc) - { - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Firebug.InlineEditor initializeInline()"); - - //this.box = this.tag.replace({}, doc, this); - this.box = this.tag.append({}, doc.body, this); - - //this.input = this.box.childNodes[1].firstChild.firstChild; // XXXjjb childNode[1] required - this.input = this.box.getElementsByTagName("input")[0]; - - if (isIElt8) - { - this.input.style.top = "-8px"; - } - - this.expander = this.expanderTag.replace({}, doc, this); - this.initialize(); - }, - - destroyInput: function() - { - // XXXjoe Need to remove input/keypress handlers to avoid leaks - }, - - getValue: function() - { - return this.input.value; - }, - - setValue: function(value) - { - // It's only a one-line editor, so new lines shouldn't be allowed - return this.input.value = stripNewLines(value); - }, - - show: function(target, panel, value, targetSize) - { - //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]); - this.target = target; - this.panel = panel; - - this.targetSize = targetSize; - - // TODO: xxxpedro editor - //this.targetOffset = getClientOffset(target); - - // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the - // offset values of invisible elements, or empty elements. So, in order to get the - // correct values, we temporary inject a character in the innerHTML of the empty element, - // then we get the offset values, and next, we restore the original innerHTML value. - var innerHTML = target.innerHTML; - var isEmptyElement = !innerHTML; - if (isEmptyElement) - target.innerHTML = "."; - - // Get the position of the target element (that is about to be edited) - this.targetOffset = - { - x: target.offsetLeft, - y: target.offsetTop - }; - - // Restore the original innerHTML value of the empty element - if (isEmptyElement) - target.innerHTML = innerHTML; - - this.originalClassName = this.box.className; - - var classNames = target.className.split(" "); - for (var i = 0; i < classNames.length; ++i) - setClass(this.box, "editor-" + classNames[i]); - - // Make the editor match the target's font style - copyTextStyles(target, this.box); - - this.setValue(value); - - if (this.fixedWidth) - this.updateLayout(true); - else - { - this.startMeasuring(target); - this.textSize = this.measureInputText(value); - - // Correct the height of the box to make the funky CSS drop-shadow line up - var parent = this.input.parentNode; - if (hasClass(parent, "textEditorInner2")) - { - var yDiff = this.textSize.height - this.shadowExpand; - - // IE6 height offset - if (isIE6) - yDiff -= 2; - - parent.style.height = yDiff + "px"; - parent.parentNode.style.height = yDiff + "px"; - } - - this.updateLayout(true); - } - - this.getAutoCompleter().reset(); - - if (isIElt8) - panel.panelNode.appendChild(this.box); - else - target.offsetParent.appendChild(this.box); - - //console.log(target); - //this.input.select(); // it's called bellow, with setTimeout - - if (isIE) - { - // reset input style - this.input.style.fontFamily = "Monospace"; - this.input.style.fontSize = "11px"; - } - - // Insert the "expander" to cover the target element with white space - if (!this.fixedWidth) - { - copyBoxStyles(target, this.expander); - - target.parentNode.replaceChild(this.expander, target); - collapse(target, true); - this.expander.parentNode.insertBefore(target, this.expander); - } - - //TODO: xxxpedro - //scrollIntoCenterView(this.box, null, true); - - // Display the editor after change its size and position to avoid flickering - this.box.style.display = "block"; - - // we need to call input.focus() and input.select() with a timeout, - // otherwise it won't work on all browsers due to timing issues - var self = this; - setTimeout(function(){ - self.input.focus(); - self.input.select(); - },0); - }, - - hide: function() - { - this.box.className = this.originalClassName; - - if (!this.fixedWidth) - { - this.stopMeasuring(); - - collapse(this.target, false); - - if (this.expander.parentNode) - this.expander.parentNode.removeChild(this.expander); - } - - if (this.box.parentNode) - { - ///setSelectionRange(this.input, 0, 0); - this.input.blur(); - - this.box.parentNode.removeChild(this.box); - } - - delete this.target; - delete this.panel; - }, - - layout: function(forceAll) - { - if (!this.fixedWidth) - this.textSize = this.measureInputText(this.input.value); - - if (forceAll) - this.targetOffset = getClientOffset(this.expander); - - this.updateLayout(false, forceAll); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - beginEditing: function(target, value) - { - }, - - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - }, - - advanceToNext: function(target, charCode) - { - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleter: function() - { - if (!this.autoCompleter) - { - this.autoCompleter = new Firebug.AutoCompleter(null, - bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this), - true, false); - } - - return this.autoCompleter; - }, - - completeValue: function(amt) - { - //console.log("completeValue"); - - var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); - - if (selectRangeCallback) - { - Firebug.Editor.update(true); - - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - else - this.incrementValue(amt); - }, - - incrementValue: function(amt) - { - var value = this.input.value; - - // TODO: xxxpedro editor - if (isIE) - var start = getInputSelectionStart(this.input), end = start; - else - var start = this.input.selectionStart, end = this.input.selectionEnd; - - //debugger; - var range = this.getAutoCompleteRange(value, start); - if (!range || range.type != "int") - range = {start: 0, end: value.length-1}; - - var expr = value.substr(range.start, range.end-range.start+1); - preExpr = value.substr(0, range.start); - postExpr = value.substr(range.end+1); - - // See if the value is an integer, and if so increment it - var intValue = parseInt(expr); - if (!!intValue || intValue == 0) - { - var m = /\d+/.exec(expr); - var digitPost = expr.substr(m.index+m[0].length); - - var completion = intValue-amt; - this.input.value = preExpr + completion + digitPost + postExpr; - - setSelectionRange(this.input, start, end); - - Firebug.Editor.update(true); - - return true; - } - else - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onKeyPress: function(event) - { - //console.log("onKeyPress", event); - if (event.keyCode == 27 && !this.completeAsYouType) - { - var reverted = this.getAutoCompleter().revert(this.input); - if (reverted) - cancelEvent(event); - } - else if (event.charCode && this.advanceToNext(this.target, event.charCode)) - { - Firebug.Editor.tabNextEditor(); - cancelEvent(event); - } - else - { - if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57) - && event.charCode != 45 && event.charCode != 46) - FBL.cancelEvent(event); - else - { - // If the user backspaces, don't autocomplete after the upcoming input event - this.ignoreNextInput = event.keyCode == 8; - } - } - }, - - onOverflow: function() - { - this.updateLayout(false, false, 3); - }, - - onKeyDown: function(event) - { - //console.log("onKeyDown", event.keyCode); - if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8) - { - this.keyDownPressed = true; - } - }, - - onInput: function(event) - { - //debugger; - - // skip not relevant onpropertychange calls on IE - if (isIE) - { - if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) - return; - - this.keyDownPressed = false; - } - - //console.log("onInput", event); - //console.trace(); - - var selectRangeCallback; - - if (this.ignoreNextInput) - { - this.ignoreNextInput = false; - this.getAutoCompleter().reset(); - } - else if (this.completeAsYouType) - selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false); - else - this.getAutoCompleter().reset(); - - Firebug.Editor.update(); - - if (selectRangeCallback) - { - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - }, - - onContextMenu: function(event) - { - cancelEvent(event); - - var popup = $("fbInlineEditorPopup"); - FBL.eraseNode(popup); - - var target = event.target || event.srcElement; - var menu = this.getContextMenuItems(target); - if (menu) - { - for (var i = 0; i < menu.length; ++i) - FBL.createMenuItem(popup, menu[i]); - } - - if (!popup.firstChild) - return false; - - popup.openPopupAtScreen(event.screenX, event.screenY, true); - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateLayout: function(initial, forceAll, extraWidth) - { - if (this.fixedWidth) - { - this.box.style.left = (this.targetOffset.x) + "px"; - this.box.style.top = (this.targetOffset.y) + "px"; - - var w = this.target.offsetWidth; - var h = this.target.offsetHeight; - this.input.style.width = w + "px"; - this.input.style.height = (h-3) + "px"; - } - else - { - if (initial || forceAll) - { - this.box.style.left = this.targetOffset.x + "px"; - this.box.style.top = this.targetOffset.y + "px"; - } - - var approxTextWidth = this.textSize.width; - var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x) - - this.outerMargin; - - var wrapped = initial - ? this.noWrap && this.targetSize.height > this.textSize.height+3 - : this.noWrap && approxTextWidth > maxWidth; - - if (wrapped) - { - var style = isIE ? - this.target.currentStyle : - this.target.ownerDocument.defaultView.getComputedStyle(this.target, ""); - - targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight); - - // Make the width fit the remaining x-space from the offset to the far right - approxTextWidth = maxWidth - targetMargin; - - this.input.style.width = "100%"; - this.box.style.width = approxTextWidth + "px"; - } - else - { - // Make the input one character wider than the text value so that - // typing does not ever cause the textbox to scroll - var charWidth = this.measureInputText('m').width; - - // Sometimes we need to make the editor a little wider, specifically when - // an overflow happens, otherwise it will scroll off some text on the left - if (extraWidth) - charWidth *= extraWidth; - - var inputWidth = approxTextWidth + charWidth; - - if (initial) - { - if (isIE) - { - // TODO: xxxpedro - var xDiff = 13; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - else - this.box.style.width = "auto"; - } - else - { - // TODO: xxxpedro - var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - - this.input.style.width = inputWidth + "px"; - } - - this.expander.style.width = approxTextWidth + "px"; - this.expander.style.height = Math.max(this.textSize.height-3,0) + "px"; - } - - if (forceAll) - scrollIntoCenterView(this.box, null, true); - } -}); - -// ************************************************************************************************ -// Autocompletion - -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive) -{ - var candidates = null; - var originalValue = null; - var originalOffset = -1; - var lastExpr = null; - var lastOffset = -1; - var exprOffset = 0; - var lastIndex = 0; - var preParsed = null; - var preExpr = null; - var postExpr = null; - - this.revert = function(textBox) - { - if (originalOffset != -1) - { - textBox.value = originalValue; - - setSelectionRange(textBox, originalOffset, originalOffset); - - this.reset(); - return true; - } - else - { - this.reset(); - return false; - } - }; - - this.reset = function() - { - candidates = null; - originalValue = null; - originalOffset = -1; - lastExpr = null; - lastOffset = 0; - exprOffset = 0; - }; - - this.complete = function(context, textBox, cycle, reverse) - { - //console.log("complete", context, textBox, cycle, reverse); - // TODO: xxxpedro important port to firebug (variable leak) - //var value = lastValue = textBox.value; - var value = textBox.value; - - //var offset = textBox.selectionStart; - var offset = getInputSelectionStart(textBox); - - // The result of selectionStart() in Safari/Chrome is 1 unit less than the result - // in Firefox. Therefore, we need to manually adjust the value here. - if (isSafari && !cycle && offset >= 0) offset++; - - if (!selectMode && originalOffset != -1) - offset = originalOffset; - - if (!candidates || !cycle || offset != lastOffset) - { - originalOffset = offset; - originalValue = value; - - // Find the part of the string that will be parsed - var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0; - preParsed = value.substr(0, parseStart); - var parsed = value.substr(parseStart); - - // Find the part of the string that is being completed - var range = getRange ? getRange(parsed, offset-parseStart, context) : null; - if (!range) - range = {start: 0, end: parsed.length-1 }; - - var expr = parsed.substr(range.start, range.end-range.start+1); - preExpr = parsed.substr(0, range.start); - postExpr = parsed.substr(range.end+1); - exprOffset = parseStart + range.start; - - if (!cycle) - { - if (!expr) - return; - else if (lastExpr && lastExpr.indexOf(expr) != 0) - { - candidates = null; - } - else if (lastExpr && lastExpr.length >= expr.length) - { - candidates = null; - lastExpr = expr; - return; - } - } - - lastExpr = expr; - lastOffset = offset; - - var searchExpr; - - // Check if the cursor is at the very right edge of the expression, or - // somewhere in the middle of it - if (expr && offset != parseStart+range.end+1) - { - if (cycle) - { - // We are in the middle of the expression, but we can - // complete by cycling to the next item in the values - // list after the expression - offset = range.start; - searchExpr = expr; - expr = ""; - } - else - { - // We can't complete unless we are at the ridge edge - return; - } - } - - var values = evaluator(preExpr, expr, postExpr, context); - if (!values) - return; - - if (expr) - { - // Filter the list of values to those which begin with expr. We - // will then go on to complete the first value in the resulting list - candidates = []; - - if (caseSensitive) - { - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.indexOf(expr) == 0) - candidates.push(name); - } - } - else - { - var lowerExpr = caseSensitive ? expr : expr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0) - candidates.push(name); - } - } - - lastIndex = reverse ? candidates.length-1 : 0; - } - else if (searchExpr) - { - var searchIndex = -1; - - // Find the first instance of searchExpr in the values list. We - // will then complete the string that is found - if (caseSensitive) - { - searchIndex = values.indexOf(expr); - } - else - { - var lowerExpr = searchExpr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name && name.toLowerCase().indexOf(lowerExpr) == 0) - { - searchIndex = i; - break; - } - } - } - - // Nothing found, so there's nothing to complete to - if (searchIndex == -1) - return this.reset(); - - expr = searchExpr; - candidates = cloneArray(values); - lastIndex = searchIndex; - } - else - { - expr = ""; - candidates = []; - for (var i = 0; i < values.length; ++i) - { - if (values[i].substr) - candidates.push(values[i]); - } - lastIndex = -1; - } - } - - if (cycle) - { - expr = lastExpr; - lastIndex += reverse ? -1 : 1; - } - - if (!candidates.length) - return; - - if (lastIndex >= candidates.length) - lastIndex = 0; - else if (lastIndex < 0) - lastIndex = candidates.length-1; - - var completion = candidates[lastIndex]; - var preCompletion = expr.substr(0, offset-exprOffset); - var postCompletion = completion.substr(offset-exprOffset); - - textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr; - var offsetEnd = preParsed.length + preExpr.length + completion.length; - - // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange() - // is working well. - /* - if (textBox.setSelectionRange) - { - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - setTimeout(function(){ - if (selectMode) - textBox.setSelectionRange(offset, offsetEnd); - else - textBox.setSelectionRange(offsetEnd, offsetEnd); - },0); - } - /**/ - - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - /* - setTimeout(function(){ - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - },0); - - return true; - /**/ - - // The editor text should be selected only after calling the editor.update() - // in Safari/Chrome, otherwise the text won't be selected. So, we're returning - // a function to be called later (in the proper time for all browsers). - // - // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid - // returning a closure. the complete() function seems to be called only twice in - // editor.js. See if this function is called anywhere else (like css.js for example). - return function(){ - //console.log("autocomplete ", textBox, offset, offsetEnd); - - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - }; - /**/ - }; -}; - -// ************************************************************************************************ -// Local Helpers - -var getDefaultEditor = function getDefaultEditor(panel) -{ - if (!defaultEditor) - { - var doc = panel.document; - defaultEditor = new Firebug.InlineEditor(doc); - } - - return defaultEditor; -} - -/** - * An outsider is the first element matching the stepper element that - * is not an child of group. Elements tagged with insertBefore or insertAfter - * classes are also excluded from these results unless they are the sibling - * of group, relative to group's parent editGroup. This allows for the proper insertion - * rows when groups are nested. - */ -var getOutsider = function getOutsider(element, group, stepper) -{ - var parentGroup = getAncestorByClass(group.parentNode, "editGroup"); - var next; - do - { - next = stepper(next || element); - } - while (isAncestor(next, group) || isGroupInsert(next, parentGroup)); - - return next; -} - -var isGroupInsert = function isGroupInsert(next, group) -{ - return (!group || isAncestor(next, group)) - && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter")); -} - -var getNextOutsider = function getNextOutsider(element, group) -{ - return getOutsider(element, group, bind(getNextByClass, FBL, "editable")); -} - -var getPreviousOutsider = function getPreviousOutsider(element, group) -{ - return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable")); -} - -var getInlineParent = function getInlineParent(element) -{ - var lastInline = element; - for (; element; element = element.parentNode) - { - //var s = element.ownerDocument.defaultView.getComputedStyle(element, ""); - var s = isIE ? - element.currentStyle : - element.ownerDocument.defaultView.getComputedStyle(element, ""); - - if (s.display != "inline") - return lastInline; - else - lastInline = element; - } - return null; -} - -var insertTab = function insertTab() -{ - insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.Editor); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0) - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -// next-generation Console Panel (will override consoje.js) -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -/* -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -/**/ -/* - -// new offline message handler -o = {x:1,y:2}; - -r = Firebug.getRep(o); - -r.tag.tag.compile(); - -outputs = []; -html = r.tag.renderHTML({object:o}, outputs); - - -// finish rendering the template (the DOM part) -target = $("build"); -target.innerHTML = html; -root = target.firstChild; - -domArgs = [root, r.tag.context, 0]; -domArgs.push.apply(domArgs, r.tag.domArgs); -domArgs.push.apply(domArgs, outputs); -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs); - - - */ -var consoleQueue = []; -var lastHighlightedObject; -var FirebugContext = Env.browser; - -// ************************************************************************************************ - -var maxQueueRequests = 500; - -// ************************************************************************************************ - -Firebug.ConsoleBase = -{ - log: function(object, context, className, rep, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]); - return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle); - }, - - logFormatted: function(objects, context, className, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]); - return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle); - }, - - openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush) - { - return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle); - }, - - closeGroup: function(context, noThrottle) - { - return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true); - }, - - logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow) - { - // TODO: xxxpedro console console2 - noThrottle = true; // xxxpedro forced because there is no TabContext yet - - if (!context) - context = FirebugContext; - - if (FBTrace.DBG_ERRORS && !context) - FBTrace.sysout("Console.logRow has no context, skipping objects", objects); - - if (!context) - return; - - if (noThrottle || !context) - { - var panel = this.getPanel(context); - if (panel) - { - var row = panel.append(appender, objects, className, rep, sourceLink, noRow); - var container = panel.panelNode; - - // TODO: xxxpedro what is this? console console2 - /* - var template = Firebug.NetMonitor.NetLimit; - - while (container.childNodes.length > maxQueueRequests + 1) - { - clearDomplate(container.firstChild.nextSibling); - container.removeChild(container.firstChild.nextSibling); - panel.limit.limitInfo.totalCount++; - template.updateCounter(panel.limit); - } - dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]); - /**/ - return row; - } - else - { - consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]); - } - } - else - { - if (!context.throttle) - { - //FBTrace.sysout("console.logRow has not context.throttle! "); - return; - } - var args = [appender, objects, context, className, rep, sourceLink, true, noRow]; - context.throttle(this.logRow, this, args); - } - }, - - appendFormatted: function(args, row, context) - { - if (!context) - context = FirebugContext; - - var panel = this.getPanel(context); - panel.appendFormatted(args, row); - }, - - clear: function(context) - { - if (!context) - //context = FirebugContext; - context = Firebug.context; - - /* - if (context) - Firebug.Errors.clear(context); - /**/ - - var panel = this.getPanel(context, true); - if (panel) - { - panel.clear(); - } - }, - - // Override to direct output to your panel - getPanel: function(context, noCreate) - { - //return context.getPanel("console", noCreate); - // TODO: xxxpedro console console2 - return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null; - } - -}; - -// ************************************************************************************************ - -//TODO: xxxpedro -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase); -var ActivableConsole = extend(Firebug.ConsoleBase, -{ - isAlwaysEnabled: function() - { - return true; - } -}); - -Firebug.Console = Firebug.Console = extend(ActivableConsole, -//Firebug.Console = extend(ActivableConsole, -{ - dispatchName: "console", - - error: function() - { - Firebug.Console.logFormatted(arguments, Firebug.browser, "error"); - }, - - flush: function() - { - dispatch(this.fbListeners,"flush",[]); - - for (var i=0, length=consoleQueue.length; i objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - if (typeof(object) != "undefined") - this.appendObject(object, row, part.rep); - else - this.appendObject(part.type, row, FirebugReps.Text); - } - else - FirebugReps.Text.tag.append({object: part}, row); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - logText(" ", row); - var object = objects[i]; - if (typeof(object) == "string") - FirebugReps.Text.tag.append({object: object}, row); - else - this.appendObject(object, row); - } - }, - - appendOpenGroup: function(objects, row, rep) - { - if (!this.groups) - this.groups = []; - - setClass(row, "logGroup"); - setClass(row, "opened"); - - var innerRow = this.createRow("logRow"); - setClass(innerRow, "logGroupLabel"); - if (rep) - rep.tag.replace({"objects": objects}, innerRow); - else - this.appendFormatted(objects, innerRow, rep); - row.appendChild(innerRow); - //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]); - var groupBody = this.createRow("logGroupBody"); - row.appendChild(groupBody); - groupBody.setAttribute('role', 'group'); - this.groups.push(groupBody); - - addEvent(innerRow, "mousedown", function(event) - { - if (isLeftClick(event)) - { - //console.log(event.currentTarget == event.target); - - var target = event.target || event.srcElement; - - target = getAncestorByClass(target, "logGroupLabel"); - - var groupRow = target.parentNode; - - if (hasClass(groupRow, "opened")) - { - removeClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'false'); - } - else - { - setClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'true'); - } - } - }); - }, - - appendCloseGroup: function(object, row, rep) - { - if (this.groups) - this.groups.pop(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TODO: xxxpedro console2 - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - onMouseDown: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - var repObject = object ? object.repObject : null; - - if (!repObject) - { - return; - } - - if (hasClass(object, "objectLink-object")) - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(repObject, true); - } - else if (hasClass(object, "objectLink-element")) - { - Firebug.chrome.selectPanel("HTML"); - Firebug.chrome.getPanel("HTML").select(repObject, true); - } - - /* - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - /**/ - - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "Console", - title: "Console", - //searchable: true, - //breakable: true, - //editable: false, - - options: - { - hasCommandLine: true, - hasToolButtons: true, - isPreRendered: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.context = Firebug.browser.window; - this.document = Firebug.chrome.document; - this.onMouseMove = bind(this.onMouseMove, this); - this.onMouseDown = bind(this.onMouseDown, this); - - this.clearButton = new Button({ - element: $("fbConsole_btClear"), - owner: Firebug.Console, - onClick: Firebug.Console.clear - }); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); // loads persisted content - //Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content - - if (!this.persistedContent && Firebug.Console.isAlwaysEnabled()) - { - this.insertLogLimit(this.context); - - // Initialize log limit and listen for changes. - this.updateMaxLimit(); - - if (this.context.consoleReloadWarning) // we have not yet injected the console - this.insertReloadWarning(); - } - - //Firebug.Console.injector.install(Firebug.browser.window); - - addEvent(this.panelNode, "mouseover", this.onMouseMove); - addEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.clearButton.initialize(); - - //consolex.trace(); - //TODO: xxxpedro remove this - /* - Firebug.Console.openGroup(["asd"], null, "group", null, false); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - /**/ - - //TODO: xxxpedro preferences prefs - //prefs.addObserver(Firebug.prefDomain, this, false); - }, - - initializeNode : function() - { - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]); - if (FBTrace.DBG_CONSOLE) - { - this.onScroller = bind(this.onScroll, this); - addEvent(this.panelNode, "scroll", this.onScroller); - } - - this.onResizer = bind(this.onResize, this); - this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - addEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - destroyNode : function() - { - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]); - if (this.onScroller) - removeEvent(this.panelNode, "scroll", this.onScroller); - - //removeEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - shutdown: function() - { - //TODO: xxxpedro console console2 - this.clearButton.shutdown(); - - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - - //TODO: xxxpedro preferences prefs - //prefs.removeObserver(Firebug.prefDomain, this, false); - }, - - ishow: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel show; " + this.context.getName(), state); - - var enabled = Firebug.Console.isAlwaysEnabled(); - if (enabled) - { - Firebug.Console.disabledPanelPage.hide(this); - this.showCommandLine(true); - this.showToolbarButtons("fbConsoleButtons", true); - Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent); - - if (state && state.wasScrolledToBottom) - { - this.wasScrolledToBottom = state.wasScrolledToBottom; - delete state.wasScrolledToBottom; - } - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - } - else - { - this.hide(state); - Firebug.Console.disabledPanelPage.show(this); - } - }, - - ihide: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel hide; " + this.context.getName(), state); - - this.showToolbarButtons("fbConsoleButtons", false); - this.showCommandLine(false); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - destroy: function(state) - { - if (this.panelNode.offsetHeight) - this.wasScrolledToBottom = isScrolledToBottom(this.panelNode); - - if (state) - state.wasScrolledToBottom = this.wasScrolledToBottom; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - shouldBreakOnNext: function() - { - // xxxHonza: shouldn't the breakOnErrors be context related? - // xxxJJB, yes, but we can't support it because we can't yet tell - // which window the error is on. - return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors"); - }, - - getBreakOnNextTooltip: function(enabled) - { - return (enabled ? $STR("console.Disable Break On All Errors") : - $STR("console.Break On All Errors")); - }, - - enablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.enablePanel.apply(this, arguments); - - this.showCommandLine(true); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - }, - - disablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - - this.showCommandLine(false); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowJavaScriptErrors", "showJSErrors"), - optionMenu("ShowJavaScriptWarnings", "showJSWarnings"), - optionMenu("ShowCSSErrors", "showCSSErrors"), - optionMenu("ShowXMLErrors", "showXMLErrors"), - optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"), - optionMenu("ShowChromeErrors", "showChromeErrors"), - optionMenu("ShowChromeMessages", "showChromeMessages"), - optionMenu("ShowExternalErrors", "showExternalErrors"), - optionMenu("ShowNetworkErrors", "showNetworkErrors"), - this.getShowStackTraceMenuItem(), - this.getStrictOptionMenuItem(), - "-", - optionMenu("LargeCommandLine", "largeCommandLine") - ]; - }, - - getShowStackTraceMenuItem: function() - { - var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace"); - if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled()) - menuItem.disabled = true; - return menuItem; - }, - - getStrictOptionMenuItem: function() - { - var strictDomain = "javascript.options"; - var strictName = "strict"; - var strictValue = prefs.getBoolPref(strictDomain+"."+strictName); - return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue, - command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) }; - }, - - getBreakOnMenuItems: function() - { - //xxxHonza: no BON options for now. - /*return [ - optionMenu("console.option.Persist Break On Error", "persistBreakOnError") - ];*/ - return []; - }, - - search: function(text) - { - if (!text) - return; - - // Make previously visible nodes invisible again - if (this.matchSet) - { - for (var i in this.matchSet) - removeClass(this.matchSet[i], "matched"); - } - - this.matchSet = []; - - function findRow(node) { return getAncestorByClass(node, "logRow"); } - var search = new TextSearch(this.panelNode, findRow); - - var logRow = search.find(text); - if (!logRow) - { - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]); - return false; - } - for (; logRow; logRow = search.findNext()) - { - setClass(logRow, "matched"); - this.matchSet.push(logRow); - } - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]); - return true; - }, - - breakOnNext: function(breaking) - { - Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // private - - createRow: function(rowName, className) - { - var elt = this.document.createElement("div"); - elt.className = rowName + (className ? " " + rowName + "-" + className : ""); - return elt; - }, - - getTopContainer: function() - { - if (this.groups && this.groups.length) - return this.groups[this.groups.length-1]; - else - return this.panelNode; - }, - - filterLogRow: function(logRow, scrolledToBottom) - { - if (this.searchText) - { - setClass(logRow, "matching"); - setClass(logRow, "matched"); - - // Search after a delay because we must wait for a frame to be created for - // the new logRow so that the finder will be able to locate it - setTimeout(bindFixed(function() - { - if (this.searchFilter(this.searchText, logRow)) - this.matchSet.push(logRow); - else - removeClass(logRow, "matched"); - - removeClass(logRow, "matching"); - - if (scrolledToBottom) - scrollToBottom(this.panelNode); - }, this), 100); - } - }, - - searchFilter: function(text, logRow) - { - var count = this.panelNode.childNodes.length; - var searchRange = this.document.createRange(); - searchRange.setStart(this.panelNode, 0); - searchRange.setEnd(this.panelNode, count); - - var startPt = this.document.createRange(); - startPt.setStartBefore(logRow); - - var endPt = this.document.createRange(); - endPt.setStartAfter(logRow); - - return finder.Find(text, searchRange, startPt, endPt) != null; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - // xxxHonza check this out. - var prefDomain = "Firebug.extension."; - var prefName = data.substr(prefDomain.length); - if (prefName == "console.logLimit") - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = 1000; - //TODO: xxxpedro preferences log limit? - //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - }, - - showCommandLine: function(shouldShow) - { - //TODO: xxxpedro show command line important - return; - - if (shouldShow) - { - collapse(Firebug.chrome.$("fbCommandBox"), false); - Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome); - } - else - { - // Make sure that entire content of the Console panel is hidden when - // the panel is disabled. - Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine); - collapse(Firebug.chrome.$("fbCommandBox"), true); - } - }, - - onScroll: function(event) - { - // Update the scroll position flag if the position changes. - this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", wasScrolledToBottom: " + - this.context.getName(), event); - }, - - onResize: function(event) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight + - ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " + - this.panelNode.scrollHeight + ", " + this.context.getName(), event); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - } -}); - -// ************************************************************************************************ - -function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -} - -// ************************************************************************************************ - -var appendObject = Firebug.ConsolePanel.prototype.appendObject; -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted; -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup; -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup; - -// ************************************************************************************************ - -//Firebug.registerActivableModule(Firebug.Console); -Firebug.registerModule(Firebug.Console); -Firebug.registerPanel(Firebug.ConsolePanel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -var frameCounters = {}; -var traceRecursion = 0; - -Firebug.Console.injector = -{ - install: function(context) - { - var win = context.window; - - var consoleHandler = new FirebugConsoleHandler(context, win); - - var properties = - [ - "log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd", - "count", - "trace", - "profile", - "profileEnd", - "clear", - "open", - "close" - ]; - - var Handler = function(name) - { - var c = consoleHandler; - var f = consoleHandler[name]; - return function(){return f.apply(c,arguments)}; - }; - - var installer = function(c) - { - for (var i=0, l=properties.length; i 1) - { - traceRecursion--; - return; - } - - var frames = []; - - for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller) - { - if (wasVisited(fn)) break; - - var args = []; - - for (var i = 0, l = fn.arguments.length; i < l; ++i) - { - args.push({value: fn.arguments[i]}); - } - - frames.push({fn: fn, name: getFuncName(fn), args: args}); - } - - - // **************************************************************************************** - - try - { - (0)(); - } - catch(e) - { - var result = e; - - var stack = - result.stack || // Firefox / Google Chrome - result.stacktrace || // Opera - ""; - - stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks - var items = stack.split(/[\n\r]/); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Google Chrome - if (FBL.isSafari) - { - //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/; - //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - - var reChromeStackItemName = /\s*\($/; - var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/; - - var framePos = 0; - for (var i=4, length=items.length; i 1) - { - objects = [errorObject]; - for (var i = 1; i < args.length; i++) - objects.push(args[i]); - } - - var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle - row.scrollIntoView(); - } - - function getComponentsStackDump() - { - // Starting with our stack, walk back to the user-level code - var frame = Components.stack; - var userURL = win.location.href.toString(); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame); - - // Drop frames until we get into user code. - while (frame && FBL.isSystemURL(frame.filename) ) - frame = frame.caller; - - // Drop two more frames, the injected console function and firebugAppendConsole() - if (frame) - frame = frame.caller; - if (frame) - frame = frame.caller; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame); - - return frame; - } - - function getStackLink() - { - // TODO: xxxpedro console2 - return; - //return FBL.getFrameSourceLink(getComponentsStackDump()); - } - - function getJSDUserStack() - { - var trace = FBL.getCurrentStackTrace(context); - - var frames = trace ? trace.frames : null; - if (frames && (frames.length > 0) ) - { - var oldest = frames.length - 1; // 6 - 1 = 5 - for (var i = 0; i < frames.length; i++) - { - if (frames[oldest - i].href.indexOf("chrome:") == 0) break; - var fn = frames[oldest - i].fn + ""; - if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break; // command line - } - FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace); - trace.frames = trace.frames.slice(2 - i); // take the oldest frames, leave 2 behind they are injection code - - return trace; - } - else - return "Firebug failed to get stack trace with any frames"; - } -} - -// ************************************************************************************************ -// Register console namespace - -FBL.registerConsole = function() -{ - //TODO: xxxpedro console options override - //if (Env.Options.overrideConsole) - var win = Env.browser.window; - Firebug.Console.injector.install(win); -}; - -registerConsole(); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -// ************************************************************************************************ -// Globals - -var commandPrefix = ">>>"; -var reOpenBracket = /[\[\(\{]/; -var reCloseBracket = /[\]\)\}]/; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var commandHistory = []; -var commandPointer = -1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var isAutoCompleting = null; -var autoCompletePrefix = null; -var autoCompleteExpr = null; -var autoCompleteBuffer = null; -var autoCompletePosition = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var fbCommandLine = null; -var fbLargeCommandLine = null; -var fbLargeCommandButtons = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _completion = -{ - window: - [ - "console" - ], - - document: - [ - "getElementById", - "getElementsByTagName" - ] -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _stack = function(command) -{ - commandHistory.push(command); - commandPointer = commandHistory.length; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -// ************************************************************************************************ -// CommandLine - -Firebug.CommandLine = extend(Firebug.Module, -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - element: null, - isMultiLine: false, - isActive: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - initialize: function(doc) - { - this.clear = bind(this.clear, this); - this.enter = bind(this.enter, this); - - this.onError = bind(this.onError, this); - this.onKeyDown = bind(this.onKeyDown, this); - this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this); - - addEvent(Firebug.browser.window, "error", this.onError); - addEvent(Firebug.chrome.window, "error", this.onError); - }, - - shutdown: function(doc) - { - this.deactivate(); - - removeEvent(Firebug.browser.window, "error", this.onError); - removeEvent(Firebug.chrome.window, "error", this.onError); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - activate: function(multiLine, hideToggleIcon, onRun) - { - defineCommandLineAPI(); - - if (this.isActive) - { - if (this.isMultiLine == multiLine) return; - - this.deactivate(); - } - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - if (multiLine) - { - onRun = onRun || this.enter; - - this.isMultiLine = true; - - this.element = fbLargeCommandLine; - - addEvent(this.element, "keydown", this.onMultiLineKeyDown); - - addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton = new Button({ - element: $("fbCommand_btRun"), - owner: Firebug.CommandLine, - onClick: onRun - }); - - this.runButton.initialize(); - - this.clearButton = new Button({ - element: $("fbCommand_btClear"), - owner: Firebug.CommandLine, - onClick: this.clear - }); - - this.clearButton.initialize(); - } - else - { - this.isMultiLine = false; - this.element = fbCommandLine; - - if (!fbCommandLine) - return; - - addEvent(this.element, "keydown", this.onKeyDown); - } - - //Firebug.Console.log("activate", this.element); - - if (isOpera) - fixOperaTabKey(this.element); - - if(this.lastValue) - this.element.value = this.lastValue; - - this.isActive = true; - }, - - deactivate: function() - { - if (!this.isActive) return; - - //Firebug.Console.log("deactivate", this.element); - - this.isActive = false; - - this.lastValue = this.element.value; - - if (this.isMultiLine) - { - removeEvent(this.element, "keydown", this.onMultiLineKeyDown); - - removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton.destroy(); - this.clearButton.destroy(); - } - else - { - removeEvent(this.element, "keydown", this.onKeyDown); - } - - this.element = null - delete this.element; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focus: function() - { - this.element.focus(); - }, - - blur: function() - { - this.element.blur(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - clear: function() - { - this.element.value = ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - evaluate: function(expr) - { - // TODO: need to register the API in console.firebug.commandLineAPI - var api = "Firebug.CommandLine.API" - - var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error); - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - enter: function() - { - var command = this.element.value; - - if (!command) return; - - _stack(command); - - Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text); - - var result = this.evaluate(command); - - Firebug.Console.log(result); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - prevCommand: function() - { - if (commandPointer > 0 && commandHistory.length > 0) - this.element.value = commandHistory[--commandPointer]; - }, - - nextCommand: function() - { - var element = this.element; - - var limit = commandHistory.length -1; - var i = commandPointer; - - if (i < limit) - element.value = commandHistory[++commandPointer]; - - else if (i == limit) - { - ++commandPointer; - element.value = ""; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - autocomplete: function(reverse) - { - var element = this.element; - - var command = element.value; - var offset = getExpressionOffset(command); - - var valBegin = offset ? command.substr(0, offset) : ""; - var val = command.substr(offset); - - var buffer, obj, objName, commandBegin, result, prefix; - - // if it is the beginning of the completion - if(!isAutoCompleting) - { - - // group1 - command begin - // group2 - base object - // group3 - property prefix - var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/; - var r = reObj.exec(val); - - // parse command - if (r[1] || r[2] || r[3]) - { - commandBegin = r[1] || ""; - objName = r[2] || ""; - prefix = r[3] || ""; - } - else if (val == "") - { - commandBegin = objName = prefix = ""; - } else - return; - - isAutoCompleting = true; - - // find base object - if(objName == "") - obj = window; - - else - { - objName = objName.replace(/\.$/, ""); - - var n = objName.split("."); - var target = window, o; - - for (var i=0, ni; ni = n[i]; i++) - { - if (o = target[ni]) - target = o; - - else - { - target = null; - break; - } - } - obj = target; - } - - // map base object - if(obj) - { - autoCompletePrefix = prefix; - autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : ""); - autoCompletePosition = -1; - - buffer = autoCompleteBuffer = isIE ? - _completion[objName || "window"] || [] : []; - - for(var p in obj) - buffer.push(p); - } - - // if it is the continuation of the last completion - } else - buffer = autoCompleteBuffer; - - if (buffer) - { - prefix = autoCompletePrefix; - - var diff = reverse ? -1 : 1; - - for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i', msg, '
', - '' - ]; - - // TODO: xxxpedro ajust to Console2 - //Firebug.Console.writeRow(html, "error"); - }, - - onKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - /*tab, shift, control, alt*/ - if (code != 9 && code != 16 && code != 17 && code != 18) - { - isAutoCompleting = false; - } - - if (code == 13 /* enter */) - { - this.enter(); - this.clear(); - } - else if (code == 27 /* ESC */) - { - setTimeout(this.clear, 0); - } - else if (code == 38 /* up */) - { - this.prevCommand(); - } - else if (code == 40 /* down */) - { - this.nextCommand(); - } - else if (code == 9 /* tab */) - { - this.autocomplete(e.shiftKey); - } - else - return; - - cancelEvent(e, true); - return false; - }, - - onMultiLineKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - if (code == 13 /* enter */ && e.ctrlKey) - { - this.enter(); - } - } -}); - -Firebug.registerModule(Firebug.CommandLine); - - -// ************************************************************************************************ -// - -function getExpressionOffset(command) -{ - // XXXjoe This is kind of a poor-man's JavaScript parser - trying - // to find the start of the expression that the cursor is inside. - // Not 100% fool proof, but hey... - - var bracketCount = 0; - - var start = command.length-1; - for (; start >= 0; --start) - { - var c = command[start]; - if ((c == "," || c == ";" || c == " ") && !bracketCount) - break; - if (reOpenBracket.test(c)) - { - if (bracketCount) - --bracketCount; - else - break; - } - else if (reCloseBracket.test(c)) - ++bracketCount; - } - - return start + 1; -} - -// ************************************************************************************************ -// CommandLine API - -var CommandLineAPI = -{ - $: function(id) - { - return Firebug.browser.document.getElementById(id) - }, - - $$: function(selector, context) - { - context = context || Firebug.browser.document; - return Firebug.Selector ? - Firebug.Selector(selector, context) : - Firebug.Console.error("Firebug.Selector module not loaded."); - }, - - $0: null, - - $1: null, - - dir: function(o) - { - Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable); - }, - - dirxml: function(o) - { - ///if (o instanceof Window) - if (instanceOf(o, "Window")) - o = o.document.documentElement; - ///else if (o instanceof Document) - else if (instanceOf(o, "Document")) - o = o.documentElement; - - // TODO: xxxpedro html3 - ///Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement); - var div = Firebug.Console.log(o, Firebug.context, "dirxml"); - var html = []; - Firebug.Reps.appendNode(o, html); - div.innerHTML = html.join(""); - - } -}; - -// ************************************************************************************************ - -var defineCommandLineAPI = function defineCommandLineAPI() -{ - Firebug.CommandLine.API = {}; - for (var m in CommandLineAPI) - if (!Env.browser.window[m]) - Firebug.CommandLine.API[m] = CommandLineAPI[m]; - - var stack = FirebugChrome.htmlSelectionStack; - if (stack) - { - Firebug.CommandLine.API.$0 = stack[0]; - Firebug.CommandLine.API.$1 = stack[1]; - } -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -if (Env.Options.disableXHRListener) - return; - -// ************************************************************************************************ -// XHRSpy - -var XHRSpy = function() -{ - this.requestHeaders = []; - this.responseHeaders = []; -}; - -XHRSpy.prototype = -{ - method: null, - url: null, - async: null, - - xhrRequest: null, - - href: null, - - loaded: false, - - logRow: null, - - responseText: null, - - requestHeaders: null, - responseHeaders: null, - - sourceLink: null, // {href:"file.html", line: 22} - - getURL: function() - { - return this.href; - } -}; - -// ************************************************************************************************ -// XMLHttpRequestWrapper - -var XMLHttpRequestWrapper = function(activeXObject) -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal variables - - var xhrRequest = typeof activeXObject != "undefined" ? - activeXObject : - new _XMLHttpRequest(), - - spy = new XHRSpy(), - - self = this, - - reqType, - reqUrl, - reqStartTS; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal methods - - var updateSelfPropertiesIgnore = { - abort: 1, - channel: 1, - getAllResponseHeaders: 1, - getInterface: 1, - getResponseHeader: 1, - mozBackgroundRequest: 1, - multipart: 1, - onreadystatechange: 1, - open: 1, - send: 1, - setRequestHeader: 1 - }; - - var updateSelfProperties = function() - { - if (supportsXHRIterator) - { - for (var propName in xhrRequest) - { - if (propName in updateSelfPropertiesIgnore) - continue; - - try - { - var propValue = xhrRequest[propName]; - - if (propValue && !isFunction(propValue)) - self[propName] = propValue; - } - catch(E) - { - //console.log(propName, E.message); - } - } - } - else - { - // will fail to read these xhrRequest properties if the request is not completed - if (xhrRequest.readyState == 4) - { - self.status = xhrRequest.status; - self.statusText = xhrRequest.statusText; - self.responseText = xhrRequest.responseText; - self.responseXML = xhrRequest.responseXML; - } - } - }; - - var updateXHRPropertiesIgnore = { - channel: 1, - onreadystatechange: 1, - readyState: 1, - responseBody: 1, - responseText: 1, - responseXML: 1, - status: 1, - statusText: 1, - upload: 1 - }; - - var updateXHRProperties = function() - { - for (var propName in self) - { - if (propName in updateXHRPropertiesIgnore) - continue; - - try - { - var propValue = self[propName]; - - if (propValue && !xhrRequest[propName]) - { - xhrRequest[propName] = propValue; - } - } - catch(E) - { - //console.log(propName, E.message); - } - } - }; - - var logXHR = function() - { - var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR); - - if (row) - { - setClass(row, "loading"); - spy.logRow = row; - } - }; - - var finishXHR = function() - { - var duration = new Date().getTime() - reqStartTS; - var success = xhrRequest.status == 200; - - var responseHeadersText = xhrRequest.getAllResponseHeaders(); - var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : []; - var reHeader = /^(\S+):\s*(.*)/; - - for (var i=0, l=responses.length; i 0; - - /**/ - - return this; -}; - -// ************************************************************************************************ -// ActiveXObject Wrapper (IE6 only) - -var _ActiveXObject; -var isIE6 = /msie 6/i.test(navigator.appVersion); - -if (isIE6) -{ - _ActiveXObject = window.ActiveXObject; - - var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; - - window.ActiveXObject = function(name) - { - var error = null; - - try - { - var activeXObject = new _ActiveXObject(name); - } - catch(e) - { - error = e; - } - finally - { - if (!error) - { - if (xhrObjects.indexOf(" " + name + " ") != -1) - return new XMLHttpRequestWrapper(activeXObject); - else - return activeXObject; - } - else - throw error.message; - } - }; -} - -// ************************************************************************************************ - -// Register the XMLHttpRequestWrapper for non-IE6 browsers -if (!isIE6) -{ - var _XMLHttpRequest = XMLHttpRequest; - window.XMLHttpRequest = function() - { - return new XMLHttpRequestWrapper(); - }; -} - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval = 300; -var indentWidth = 18; - -var cacheSession = null; -var contexts = new Array(); -var panelName = "net"; -var maxQueueRequests = 500; -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup -var activeRequests = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var mimeExtensionMap = -{ - "txt": "text/plain", - "html": "text/html", - "htm": "text/html", - "xhtml": "text/html", - "xml": "text/xml", - "css": "text/css", - "js": "application/x-javascript", - "jss": "application/x-javascript", - "jpg": "image/jpg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "png": "image/png", - "bmp": "image/bmp", - "swf": "application/x-shockwave-flash", - "flv": "video/x-flv" -}; - -var fileCategories = -{ - "undefined": 1, - "html": 1, - "css": 1, - "js": 1, - "xhr": 1, - "image": 1, - "flash": 1, - "txt": 1, - "bin": 1 -}; - -var textFileCategories = -{ - "txt": 1, - "html": 1, - "xhr": 1, - "css": 1, - "js": 1 -}; - -var binaryFileCategories = -{ - "bin": 1, - "flash": 1 -}; - -var mimeCategoryMap = -{ - "text/plain": "txt", - "application/octet-stream": "bin", - "text/html": "html", - "text/xml": "html", - "text/css": "css", - "application/x-javascript": "js", - "text/javascript": "js", - "application/javascript" : "js", - "image/jpeg": "image", - "image/jpg": "image", - "image/gif": "image", - "image/png": "image", - "image/bmp": "image", - "application/x-shockwave-flash": "flash", - "video/x-flv": "flash" -}; - -var binaryCategoryMap = -{ - "image": 1, - "flash" : 1 -}; - -// ************************************************************************************************ - -/** - * @module Represents a module object for the Net panel. This object is derived - * from Firebug.ActivableModule in order to support activation (enable/disable). - * This allows to avoid (performance) expensive features if the functionality is not necessary - * for the user. - */ -Firebug.NetMonitor = extend(Firebug.ActivableModule, -{ - dispatchName: "netMonitor", - - clear: function(context) - { - // The user pressed a Clear button so, remove content of the panel... - var panel = context.getPanel(panelName, true); - if (panel) - panel.clear(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - return; - - this.panelName = panelName; - - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - // HTTP observer must be registered now (and not in monitorContext, since if a - // page is opened in a new tab the top document request would be missed otherwise. - NetHttpObserver.registerObserver(); - NetHttpActivityObserver.registerObserver(); - - Firebug.Debugger.addListener(this.DebuggerListener); - }, - - shutdown: function() - { - return; - - prefs.removeObserver(Firebug.prefDomain, this, false); - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - - NetHttpObserver.unregisterObserver(); - NetHttpActivityObserver.unregisterObserver(); - - Firebug.Debugger.removeListener(this.DebuggerListener); - } -}); - - -/** - * @domplate Represents a template that is used to reneder detailed info about a request. - * This template is rendered when a request is expanded. - */ -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoBody", _repObject: "$file"}, - TAG("$infoTabs", {file: "$file"}), - TAG("$infoBodies", {file: "$file"}) - ), - - infoTabs: - DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"}, - A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Params", - $collapsed: "$file|hideParams"}, - $STR("URLParameters") - ), - A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Headers"}, - $STR("Headers") - ), - A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Post", - $collapsed: "$file|hidePost"}, - $STR("Post") - ), - A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Put", - $collapsed: "$file|hidePut"}, - $STR("Put") - ), - A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Response", - $collapsed: "$file|hideResponse"}, - $STR("Response") - ), - A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Cache", - $collapsed: "$file|hideCache"}, - $STR("Cache") - ), - A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Html", - $collapsed: "$file|hideHtml"}, - $STR("HTML") - ) - ), - - infoBodies: - DIV({"class": "netInfoBodies outerFocusRow"}, - TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel", - cellpadding: 0, cellspacing: 0}, TBODY()), - DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}), - PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"}, - TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("Cache")}) - ) - ), - DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"}, - IFRAME({"class": "netInfoHtmlPreview", "role": "document"}) - ) - ), - - headerDataTag: - FOR("param", "$headers", - TR({"role": "listitem"}, - TD({"class": "netInfoParamName", "role": "presentation"}, - TAG("$param|getNameTag", {param: "$param"}) - ), - TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line") - ) - ) - ) - ), - - customTab: - A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"}, - "$tabTitle" - ), - - customBody: - DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - nameTag: - SPAN("$param|getParamName"), - - nameWithTooltipTag: - SPAN({title: "$param.name"}, "$param|getParamName"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getNameTag: function(param) - { - return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag; - }, - - getParamName: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - name = name.substr(0, limit) + "..."; - return name; - }, - - getParamTitle: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - return name; - return ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - hideParams: function(file) - { - return !file.urlParams || !file.urlParams.length; - }, - - hidePost: function(file) - { - return file.method.toUpperCase() != "POST"; - }, - - hidePut: function(file) - { - return file.method.toUpperCase() != "PUT"; - }, - - hideResponse: function(file) - { - return false; - //return file.category in binaryFileCategories; - }, - - hideCache: function(file) - { - return true; - //xxxHonza: I don't see any reason why not to display the cache also info for images. - return !file.cacheEntry; // || file.category=="image"; - }, - - hideHtml: function(file) - { - return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml"); - }, - - onClickTab: function(event) - { - this.selectTab(event.currentTarget || event.srcElement); - }, - - getParamValueIterator: function(param) - { - // TODO: xxxpedro console2 - return param.value; - - // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210). - // This is why the second parameter is true. - // The CODE (with style white-space:pre) element preserves whitespaces so they are - // displayed the same, as they come from the server (1194). - // In case of a long header values of post parameters the value must be wrapped (2105). - return wrapText(param.value, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - appendTab: function(netInfoBox, tabId, tabTitle) - { - // Create new tab and body. - var args = {tabId: tabId, tabTitle: tabTitle}; - ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0)); - ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0)); - this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]); - this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]); - }, - - selectTabByName: function(netInfoBox, tabName) - { - var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab"); - if (tab) - this.selectTab(tab); - }, - - selectTab: function(tab) - { - var view = tab.getAttribute("view"); - - var netInfoBox = getAncestorByClass(tab, "netInfoBody"); - - var selectedTab = netInfoBox.selectedTab; - - if (selectedTab) - { - //netInfoBox.selectedText.removeAttribute("selected"); - removeClass(netInfoBox.selectedText, "netInfoTextSelected"); - - removeClass(selectedTab, "netInfoTabSelected"); - //selectedTab.removeAttribute("selected"); - selectedTab.setAttribute("aria-selected", "false"); - } - - var textBodyName = "netInfo" + view + "Text"; - - selectedTab = netInfoBox.selectedTab = tab; - - netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0]; - //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0); - - //netInfoBox.selectedText.setAttribute("selected", "true"); - setClass(netInfoBox.selectedText, "netInfoTextSelected"); - - setClass(selectedTab, "netInfoTabSelected"); - selectedTab.setAttribute("selected", "true"); - selectedTab.setAttribute("aria-selected", "true"); - - var file = Firebug.getRepObject(netInfoBox); - - //var context = Firebug.getElementPanel(netInfoBox).context; - var context = Firebug.chrome; - - this.updateInfo(netInfoBox, file, context); - }, - - updateInfo: function(netInfoBox, file, context) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.updateInfo; file", file); - - if (!netInfoBox) - { - if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS) - FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file); - return; - } - - var tab = netInfoBox.selectedTab; - - if (hasClass(tab, "netInfoParamsTab")) - { - if (file.urlParams && !netInfoBox.urlParamsPresented) - { - netInfoBox.urlParamsPresented = true; - this.insertHeaderRows(netInfoBox, file.urlParams, "Params"); - } - } - - else if (hasClass(tab, "netInfoHeadersTab")) - { - var headersText = $$(".netInfoHeadersText", netInfoBox)[0]; - //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0); - - if (file.responseHeaders && !netInfoBox.responseHeadersPresented) - { - netInfoBox.responseHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders"); - } - - if (file.requestHeaders && !netInfoBox.requestHeadersPresented) - { - netInfoBox.requestHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders"); - } - } - - else if (hasClass(tab, "netInfoPostTab")) - { - if (!netInfoBox.postPresented) - { - netInfoBox.postPresented = true; - //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0); - var postText = $$(".netInfoPostText", netInfoBox)[0]; - NetInfoPostData.render(context, postText, file); - } - } - - else if (hasClass(tab, "netInfoPutTab")) - { - if (!netInfoBox.putPresented) - { - netInfoBox.putPresented = true; - //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0); - var putText = $$(".netInfoPutText", netInfoBox)[0]; - NetInfoPostData.render(context, putText, file); - } - } - - else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented) - { - ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0); - var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0]; - if (file.category == "image") - { - netInfoBox.responsePresented = true; - - var responseImage = netInfoBox.ownerDocument.createElement("img"); - responseImage.src = file.href; - - clearNode(responseTextBox); - responseTextBox.appendChild(responseImage, responseTextBox); - } - else ///if (!(binaryCategoryMap.hasOwnProperty(file.category))) - { - this.setResponseText(file, netInfoBox, responseTextBox, context); - } - } - - else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented) - { - var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0); - if (file.cacheEntry) { - netInfoBox.cachePresented = true; - this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache"); - } - } - - else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented) - { - netInfoBox.htmlPresented = true; - - var text = Utils.getResponseText(file, context); - - ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0); - var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0]; - - ///iframe.contentWindow.document.body.innerHTML = text; - - // TODO: xxxpedro net - remove scripts - var reScript = //gi; - - text = text.replace(reScript, ""); - - iframe.contentWindow.document.write(text); - iframe.contentWindow.document.close(); - } - - // Notify listeners about update so, content of custom tabs can be updated. - dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]); - }, - - setResponseText: function(file, netInfoBox, responseTextBox, context) - { - //********************************************** - //********************************************** - //********************************************** - netInfoBox.responsePresented = true; - // line breaks somehow are different in IE - // make this only once in the initialization? we don't have net panels and modules yet. - if (isIE) - responseTextBox.style.whiteSpace = "nowrap"; - - responseTextBox[ - typeof responseTextBox.textContent != "undefined" ? - "textContent" : - "innerText" - ] = file.responseText; - - return; - //********************************************** - //********************************************** - //********************************************** - - // Get response text and make sure it doesn't exceed the max limit. - var text = Utils.getResponseText(file, context); - var limit = Firebug.netDisplayedResponseLimit + 15; - var limitReached = text ? (text.length > limit) : false; - if (limitReached) - text = text.substr(0, limit) + "..."; - - // Insert the response into the UI. - if (text) - insertWrappedText(text, responseTextBox); - else - insertWrappedText("", responseTextBox); - - // Append a message informing the user that the response isn't fully displayed. - if (limitReached) - { - var object = { - text: $STR("net.responseSizeLimitMessage"), - onClickLink: function() { - var panel = context.getPanel("net", true); - panel.openResponseInTab(file); - } - }; - Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox); - } - - netInfoBox.responsePresented = true; - - if (FBTrace.DBG_NET) - FBTrace.sysout("net.setResponseText; response text updated"); - }, - - insertHeaderRows: function(netInfoBox, headers, tableName, rowName) - { - if (!headers.length) - return; - - var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0]; - //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0); - var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body"); - if (!tbody) - tbody = headersTable.firstChild; - var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title"); - - this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody); - removeClass(titleRow, "collapsed"); - } -}); - -var NetInfoBody = Firebug.NetMonitor.NetInfoBody; - -// ************************************************************************************************ - -/** - * @domplate Used within the Net panel to display raw source of request and response headers - * as well as pretty-formatted summary of these headers. - */ -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoHeadersTable", "role": "tabpanel"}, - DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"}, - SPAN($STR("ResponseHeaders")), - SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "ResponseHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoResponseHeadersBody", "role": "list", - "aria-label": $STR("ResponseHeaders")}) - ), - DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"}, - SPAN($STR("RequestHeaders")), - SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "RequestHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoRequestHeadersBody", "role": "list", - "aria-label": $STR("RequestHeaders")}) - ) - ), - - sourceTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - PRE({"class": "source"}) - ) - ), - - onViewSource: function(event) - { - var target = event.target; - var requestHeaders = (target.rowName == "RequestHeaders"); - - var netInfoBox = getAncestorByClass(target, "netInfoBody"); - var file = netInfoBox.repObject; - - if (target.sourceDisplayed) - { - var headers = requestHeaders ? file.requestHeaders : file.responseHeaders; - this.insertHeaderRows(netInfoBox, headers, target.rowName); - target.innerHTML = $STR("net.headers.view source"); - } - else - { - var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText; - this.insertSource(netInfoBox, source, target.rowName); - target.innerHTML = $STR("net.headers.pretty print"); - } - - target.sourceDisplayed = !target.sourceDisplayed; - - cancelEvent(event); - }, - - insertSource: function(netInfoBox, source, rowName) - { - // This breaks copy to clipboard. - //if (source) - // source = source.replace(/\r\n/gm, "\\r\\n\r\n"); - - ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0); - var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0]; - var node = this.sourceTag.replace({}, tbody); - ///var sourceNode = node.getElementsByClassName("source").item(0); - var sourceNode = $$(".source", node)[0]; - sourceNode.innerHTML = source; - }, - - insertHeaderRows: function(netInfoBox, headers, rowName) - { - var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0]; - var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0]; - - //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0); - //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0); - - clearNode(tbody); - - if (!headers.length) - return; - - NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody); - - var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title"); - removeClass(titleRow, "collapsed"); - }, - - init: function(parent) - { - var rootNode = this.tag.append({}, parent); - - var netInfoBox = getAncestorByClass(parent, "netInfoBody"); - var file = netInfoBox.repObject; - - var viewSource; - - viewSource = $$(".request", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0); - if (file.requestHeadersText) - removeClass(viewSource, "collapsed"); - - viewSource = $$(".response", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0); - if (file.responseHeadersText) - removeClass(viewSource, "collapsed"); - }, - - renderHeaders: function(parent, headers, rowName) - { - if (!parent.firstChild) - this.init(parent); - - this.insertHeaderRows(parent, headers, rowName); - } -}); - -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders; - -// ************************************************************************************************ - -/** - * @domplate Represents posted data within request info (the info, which is visible when - * a request entry is expanded. This template renders content of the Post tab. - */ -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/ -{ - // application/x-www-form-urlencoded - paramsTable: - TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")}, - TR({"class": "netInfoPostParamsTitle", "role": "presentation"}, - TD({colspan: 3, "role": "presentation"}, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parameters"), - SPAN({"class": "netInfoPostContentType"}, - "application/x-www-form-urlencoded" - ) - ) - ) - ) - ) - ), - - // multipart/form-data - partsTable: - TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parts")}, - TR({"class": "netInfoPostPartsTitle", "role": "presentation"}, - TD({colspan: 2, "role":"presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parts"), - SPAN({"class": "netInfoPostContentType"}, - "multipart/form-data" - ) - ) - ) - ) - ) - ), - - // application/json - jsonTable: - TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")}, - TBODY({"role": "list", "aria-label": $STR("JSON")}, - TR({"class": "netInfoPostJSONTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - ///$STR("jsonviewer.tab.JSON") - $STR("JSON") - ) - ) - ), - TR( - TD({"class": "netInfoPostJSONBody"}) - ) - ) - ), - - // application/xml - xmlTable: - TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")}, - TR({"class": "netInfoPostXMLTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("xmlviewer.tab.XML") - ) - ) - ), - TR( - TD({"class": "netInfoPostXMLBody"}) - ) - ) - ), - - sourceTable: - TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Source")}, - TR({"class": "netInfoPostSourceTitle", "role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - DIV({"class": "netInfoPostSource"}, - $STR("net.label.Source") - ) - ) - ) - ) - ), - - sourceBodyTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line") - ) - ) - ), - - getParamValueIterator: function(param) - { - return NetInfoBody.getParamValueIterator(param); - }, - - render: function(context, parentNode, file) - { - //debugger; - var spy = getAncestorByClass(parentNode, "spyHead"); - var spyObject = spy.repObject; - var data = spyObject.data; - - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - var contentType = file.mimeType; - - ///var text = Utils.getPostText(file, context, true); - ///if (text == undefined) - /// return; - - ///if (Utils.isURLEncodedRequest(file, context)) - // fake Utils.isURLEncodedRequest identification - if (contentType && contentType == "application/x-www-form-urlencoded" || - data && data.indexOf("=") != -1) - { - ///var lines = text.split("\n"); - ///var params = parseURLEncodedText(lines[lines.length-1]); - var params = parseURLEncodedTextArray(data); - if (params) - this.insertParameters(parentNode, params); - } - - ///if (Utils.isMultiPartRequest(file, context)) - ///{ - /// var data = this.parseMultiPartText(file, context); - /// if (data) - /// this.insertParts(parentNode, data); - ///} - - // moved to the top - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - - ///if (Firebug.JSONViewerModel.isJSON(contentType)) - var jsonData = { - responseText: data - }; - - if (Firebug.JSONViewerModel.isJSON(contentType, data)) - ///this.insertJSON(parentNode, file, context); - this.insertJSON(parentNode, jsonData, context); - - ///if (Firebug.XMLViewerModel.isXML(contentType)) - /// this.insertXML(parentNode, file, context); - - ///var postText = Utils.getPostText(file, context); - ///postText = Utils.formatPostText(postText); - var postText = data; - if (postText) - this.insertSource(parentNode, postText); - }, - - insertParameters: function(parentNode, params) - { - if (!params || !params.length) - return; - - var paramTable = this.paramsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostParamsTitle", paramTable)[0]; - //var paramTable = this.paramsTable.append(null, parentNode); - //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0); - - var tbody = paramTable.getElementsByTagName("tbody")[0]; - - NetInfoBody.headerDataTag.insertRows({headers: params}, row); - }, - - insertParts: function(parentNode, data) - { - if (!data.params || !data.params.length) - return; - - var partsTable = this.partsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostPartsTitle", paramTable)[0]; - //var partsTable = this.partsTable.append(null, parentNode); - //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0); - - NetInfoBody.headerDataTag.insertRows({headers: data.params}, row); - }, - - insertJSON: function(parentNode, file, context) - { - ///var text = Utils.getPostText(file, context); - var text = file.responseText; - ///var data = parseJSONString(text, "http://" + file.request.originalURI.host); - var data = parseJSONString(text); - if (!data) - return; - - ///var jsonTable = this.jsonTable.append(null, parentNode); - var jsonTable = this.jsonTable.append({}, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0); - var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0]; - - if (!this.toggles) - this.toggles = {}; - - Firebug.DOMPanel.DirTable.tag.replace( - {object: data, toggles: this.toggles}, jsonBody); - }, - - insertXML: function(parentNode, file, context) - { - var text = Utils.getPostText(file, context); - - var jsonTable = this.xmlTable.append(null, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0); - var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0]; - - Firebug.XMLViewerModel.insertXML(jsonBody, text); - }, - - insertSource: function(parentNode, text) - { - var sourceTable = this.sourceTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostSourceTitle", sourceTable)[0]; - //var sourceTable = this.sourceTable.append(null, parentNode); - //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0); - - var param = {value: [text]}; - this.sourceBodyTag.insertRows({param: param}, row); - }, - - parseMultiPartText: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text == undefined) - return null; - - FBTrace.sysout("net.parseMultiPartText; boundary: ", text); - - var boundary = text.match(/\s*boundary=\s*(.*)/)[1]; - - var divider = "\r\n\r\n"; - var bodyStart = text.indexOf(divider); - var body = text.substr(bodyStart + divider.length); - - var postData = {}; - postData.mimeType = "multipart/form-data"; - postData.params = []; - - var parts = body.split("--" + boundary); - for (var i=0; i 1) ? m[1] : "", - value: trim(part[1]) - }); - } - - return postData; - } -}); - -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData; - -// ************************************************************************************************ - - -// TODO: xxxpedro net i18n -var $STRP = function(a){return a;}; - -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep, -{ - collapsed: true, - - tableTag: - DIV( - TABLE({width: "100%", cellpadding: 0, cellspacing: 0}, - TBODY() - ) - ), - - limitTag: - TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"}, - TD({"class": "netCol netLimitCol", colspan: 6}, - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY( - TR( - TD( - SPAN({"class": "netLimitLabel"}, - $STRP("plural.Limit_Exceeded", [0]) - ) - ), - TD({style: "width:100%"}), - TD( - BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle", - onclick: "$onPreferences"}, - $STR("LimitPrefs") - ) - ), - TD(" ") - ) - ) - ) - ) - ), - - isCollapsed: function() - { - return this.collapsed; - }, - - onPreferences: function(event) - { - openNewTab("about:config"); - }, - - updateCounter: function(row) - { - removeClass(row, "collapsed"); - - // Update info within the limit row. - var limitLabel = row.getElementsByClassName("netLimitLabel").item(0); - limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]); - }, - - createTable: function(parent, limitInfo) - { - var table = this.tableTag.replace({}, parent); - var row = this.createRow(table.firstChild.firstChild, limitInfo); - return [table, row]; - }, - - createRow: function(parent, limitInfo) - { - var row = this.limitTag.insertRows(limitInfo, parent, this)[0]; - row.limitInfo = limitInfo; - return row; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - if (data.indexOf("net.logLimit") != -1) - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - } -}); - -var NetLimit = Firebug.NetMonitor.NetLimit; - -// ************************************************************************************************ - -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "netInfoResponseSizeLimit"}, - SPAN("$object.beforeLink"), - A({"class": "objectLink", onclick: "$onClickLink"}, - "$object.linkText" - ), - SPAN("$object.afterLink") - ), - - reLink: /^(.*)(.*)<\/a>(.*$)/, - append: function(obj, parent) - { - var m = obj.text.match(this.reLink); - return this.tag.append({onClickLink: obj.onClickLink, - object: { - beforeLink: m[1], - linkText: m[2], - afterLink: m[3] - }}, parent, this); - } -}); - -// ************************************************************************************************ -// ************************************************************************************************ - -Firebug.NetMonitor.Utils = -{ - findHeader: function(headers, name) - { - if (!headers) - return null; - - name = name.toLowerCase(); - for (var i = 0; i < headers.length; ++i) - { - var headerName = headers[i].name.toLowerCase(); - if (headerName == name) - return headers[i].value; - } - }, - - formatPostText: function(text) - { - if (text instanceof XMLDocument) - return getElementXML(text.documentElement); - else - return text; - }, - - getPostText: function(file, context, noLimit) - { - if (!file.postText) - { - file.postText = readPostTextFromRequest(file.request, context); - - if (!file.postText && context) - file.postText = readPostTextFromPage(file.href, context); - } - - if (!file.postText) - return file.postText; - - var limit = Firebug.netDisplayedPostBodyLimit; - if (file.postText.length > limit && !noLimit) - { - return cropString(file.postText, limit, - "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n"); - } - - return file.postText; - }, - - getResponseText: function(file, context) - { - // The response can be also empty string so, check agains "undefined". - return (typeof(file.responseText) != "undefined")? file.responseText : - context.sourceCache.loadText(file.href, file.method, file); - }, - - isURLEncodedRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0) - return true; - - // The header value doesn't have to be always exactly "application/x-www-form-urlencoded", - // there can be even charset specified. So, use indexOf rather than just "==". - var headerValue = Utils.findHeader(file.requestHeaders, "content-type"); - if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0) - return true; - - return false; - }, - - isMultiPartRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0) - return true; - return false; - }, - - getMimeType: function(mimeType, uri) - { - if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType))) - { - var ext = getFileExtension(uri); - if (!ext) - return mimeType; - else - { - var extMimeType = mimeExtensionMap[ext.toLowerCase()]; - return extMimeType ? extMimeType : mimeType; - } - } - else - return mimeType; - }, - - getDateFromSeconds: function(s) - { - var d = new Date(); - d.setTime(s*1000); - return d; - }, - - getHttpHeaders: function(request, file) - { - try - { - var http = QI(request, Ci.nsIHttpChannel); - file.status = request.responseStatus; - - // xxxHonza: is there any problem to do this in requestedFile method? - file.method = http.requestMethod; - file.urlParams = parseURLParams(file.href); - file.mimeType = Utils.getMimeType(request.contentType, request.name); - - if (!file.responseHeaders && Firebug.collectHttpHeaders) - { - var requestHeaders = [], responseHeaders = []; - - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - requestHeaders.push({name: name, value: value}); - } - }); - http.visitResponseHeaders({ - visitHeader: function(name, value) - { - responseHeaders.push({name: name, value: value}); - } - }); - - file.requestHeaders = requestHeaders; - file.responseHeaders = responseHeaders; - } - } - catch (exc) - { - // An exception can be throwed e.g. when the request is aborted and - // request.responseStatus is accessed. - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc); - } - }, - - isXHR: function(request) - { - try - { - var callbacks = request.notificationCallbacks; - var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null; - if (FBTrace.DBG_NET) - FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request)); - - return (xhrRequest != null); - } - catch (exc) - { - } - - return false; - }, - - getFileCategory: function(file) - { - if (file.category) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file); - return file.category; - } - - if (file.isXHR) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file); - return file.category = "xhr"; - } - - if (!file.mimeType) - { - var ext = getFileExtension(file.href); - if (ext) - file.mimeType = mimeExtensionMap[ext.toLowerCase()]; - } - - /*if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] + - ", mimeType: " + file.mimeType + " for: " + file.href, file);*/ - - if (!file.mimeType) - return ""; - - // Solve cases when charset is also specified, eg "text/html; charset=UTF-8". - var mimeType = file.mimeType; - if (mimeType) - mimeType = mimeType.split(";")[0]; - - return (file.category = mimeCategoryMap[mimeType]); - } -}; - -var Utils = Firebug.NetMonitor.Utils; - -// ************************************************************************************************ - -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable); -//Firebug.registerActivableModule(Firebug.NetMonitor); -//Firebug.registerPanel(NetPanel); - -Firebug.registerModule(Firebug.NetMonitor); -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -// List of contexts with XHR spy attached. -var contexts = []; - -// ************************************************************************************************ -// Spy Module - -/** - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor - * XHR activity of the current page and create appropriate log into the Console panel. - * This feature can be controlled by an option Show XMLHttpRequests (from within the - * console panel). - * - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is - * activated/deactivated for a site. - */ -Firebug.Spy = extend(Firebug.Module, -/** @lends Firebug.Spy */ -{ - dispatchName: "spy", - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - Firebug.Module.initialize.apply(this, arguments); - }, - - shutdown: function() - { - Firebug.Module.shutdown.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - }, - - initContext: function(context) - { - context.spies = []; - - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, context.window); - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName()); - }, - - destroyContext: function(context) - { - // For any spies that are in progress, remove our listeners so that they don't leak - this.detachObserver(context, null); - - if (FBTrace.DBG_SPY && context.spies.length) - FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies (" - + context.spies.length + ") " + context.getName()); - - delete context.spies; - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName()); - }, - - watchWindow: function(context, win) - { - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, win); - }, - - unwatchWindow: function(context, win) - { - try - { - // This make sure that the existing context is properly removed from "contexts" array. - this.detachObserver(context, win); - } - catch (ex) - { - // Get exceptions here sometimes, so let's just ignore them - // since the window is going away anyhow - ERROR(ex); - } - }, - - updateOption: function(name, value) - { - // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called, - // but somehow seems not correct - if (name == "showXMLHttpRequests") - { - var tach = value ? this.attachObserver : this.detachObserver; - for (var i = 0; i < TabWatcher.contexts.length; ++i) - { - var context = TabWatcher.contexts[i]; - iterateWindows(context.window, function(win) - { - tach.apply(this, [context, win]); - }); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Attaching Spy to XHR requests. - - /** - * Returns false if Spy should not be attached to XHRs executed by the specified window. - */ - skipSpy: function(win) - { - if (!win) - return true; - - // Don't attach spy to chrome. - var uri = safeGetWindowLocation(win); - if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0)) - return true; - }, - - attachObserver: function(context, win) - { - if (Firebug.Spy.skipSpy(win)) - return; - - for (var i=0; insIHttpChannel. - * Returns null if the request doesn't represent XHR. - */ - getXHR: function(request) - { - // Does also query-interface for nsIHttpChannel. - if (!(request instanceof Ci.nsIHttpChannel)) - return null; - - try - { - var callbacks = request.notificationCallbacks; - return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null); - } - catch (exc) - { - if (exc.name == "NS_NOINTERFACE") - { - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " + - safeGetRequestName(request)); - } - } - - return null; - } -}); - - - - - -// ************************************************************************************************ - -/* -function getSpyForXHR(request, xhrRequest, context, noCreate) -{ - var spy = null; - - // Iterate all existing spy objects in this context and look for one that is - // already created for this request. - var length = context.spies.length; - for (var i=0; i= 3) - { - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (netInfoBox) - { - netInfoBox.htmlPresented = false; - netInfoBox.responsePresented = false; - } - } - - // If the request is loading update the end time. - if (spy.xhrRequest.readyState == 3) - { - spy.responseTime = spy.endTime - spy.sendTime; - updateTime(spy); - } - - // Request loaded. Get all the info from the request now, just in case the - // XHR would be aborted in the original onReadyStateChange handler. - if (spy.xhrRequest.readyState == 4) - { - // Cumulate response so, multipart response content is properly displayed. - if (SpyHttpActivityObserver.getActivityDistributor()) - spy.responseText += spy.xhrRequest.responseText; - else - { - // xxxHonza: remove from FB 1.6 - if (!spy.responseText) - spy.responseText = spy.xhrRequest.responseText; - } - - // The XHR is loaded now (used also by the activity observer). - spy.loaded = true; - - // Update UI. - updateHttpSpyInfo(spy); - - // Notify Net pane about a request beeing loaded. - // xxxHonza: I don't think this is necessary. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); - - // Notify registered listeners about finish of the XHR. - dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]); - } - - // Pass the event to the original page handler. - callPageHandler(spy, event, originalHandler); -} - -function onHTTPSpyLoad(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy); - - // Detach must be done in onLoad (not in onreadystatechange) otherwise - // onAbort would not be handled. - spy.detach(); - - // xxxHonza: Still needed for Fx 3.5 (#502959) - if (!SpyHttpActivityObserver.getActivityDistributor()) - onHTTPSpyReadyStateChange(spy, null); -} - -function onHTTPSpyError(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } -} - -function onHTTPSpyAbort(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } - - spy.statusText = "Aborted"; - updateLogRow(spy); - - // Notify Net pane about a request beeing aborted. - // xxxHonza: the net panel shoud find out this itself. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); -} -/**/ - -// ************************************************************************************************ - -/** - * @domplate Represents a template for XHRs logged in the Console panel. The body of the - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}. - */ - -Firebug.Spy.XHR = domplate(Firebug.Rep, -/** @lends Firebug.Spy.XHR */ - -{ - tag: - DIV({"class": "spyHead", _repObject: "$object"}, - TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0, - "role": "listitem", "aria-expanded": "false"}, - TBODY({"role": "presentation"}, - TR({"class": "spyRow"}, - TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"}, - DIV({"class": "spyTitle"}, - "$object|getCaption" - ), - DIV({"class": "spyFullTitle spyTitle"}, - "$object|getFullUri" - ) - ), - TD({"class": "spyCol"}, - DIV({"class": "spyStatus"}, "$object|getStatus") - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyIcon"}) - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyTime"}) - ), - TD({"class": "spyCol"}, - TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"}) - ) - ) - ) - ) - ), - - getCaption: function(spy) - { - return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100); - }, - - getFullUri: function(spy) - { - return spy.method.toUpperCase() + " " + spy.getURL(); - }, - - getStatus: function(spy) - { - var text = ""; - if (spy.statusCode) - text += spy.statusCode + " "; - - if (spy.statusText) - return text += spy.statusText; - - return text; - }, - - onToggleBody: function(event) - { - var target = event.currentTarget || event.srcElement; - var logRow = getAncestorByClass(target, "logRow-spy"); - - if (isLeftClick(event)) - { - toggleClass(logRow, "opened"); - - var spy = getChildByClass(logRow, "spyHead").repObject; - var spyHeadTable = getAncestorByClass(target, "spyHeadTable"); - - if (hasClass(logRow, "opened")) - { - updateHttpSpyInfo(spy, logRow); - if (spyHeadTable) - spyHeadTable.setAttribute('aria-expanded', 'true'); - } - else - { - //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]); - //if (spyHeadTable) - // spyHeadTable.setAttribute('aria-expanded', 'false'); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(spy) - { - copyToClipboard(spy.getURL()); - }, - - copyParams: function(spy) - { - var text = spy.postText; - if (!text) - return; - - var url = reEncodeURL(spy, text, true); - copyToClipboard(url); - }, - - copyResponse: function(spy) - { - copyToClipboard(spy.responseText); - }, - - openInTab: function(spy) - { - openNewTab(spy.getURL(), spy.postText); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object) - { - // TODO: xxxpedro spy xhr - return false; - - return object instanceof Firebug.Spy.XMLHttpRequestSpy; - }, - - browseObject: function(spy, context) - { - var url = spy.getURL(); - openNewTab(url); - return true; - }, - - getRealObject: function(spy, context) - { - return spy.xhrRequest; - }, - - getContextMenuItems: function(spy) - { - var items = [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) } - ]; - - if (spy.postText) - { - items.push( - {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) } - ); - } - - items.push( - {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) } - ); - - return items; - } -}); - -// ************************************************************************************************ - -function updateTime(spy) -{ - var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0); - if (spy.responseTime) - timeBox.textContent = " " + formatTime(spy.responseTime); -} - -function updateLogRow(spy) -{ - updateTime(spy); - - var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0); - statusBox.textContent = Firebug.Spy.XHR.getStatus(spy); - - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "loaded"); - - try - { - var errorRange = Math.floor(spy.xhrRequest.status/100); - if (errorRange == 4 || errorRange == 5) - setClass(spy.logRow, "error"); - } - catch (exc) - { - } -} - -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow) -{ - if (!spy.logRow && logRow) - spy.logRow = logRow; - - if (!spy.logRow || !hasClass(spy.logRow, "opened")) - return; - - if (!spy.params) - //spy.params = parseURLParams(spy.href+""); - spy.params = parseURLParams(spy.href+""); - - if (!spy.requestHeaders) - spy.requestHeaders = getRequestHeaders(spy); - - if (!spy.responseHeaders && spy.loaded) - spy.responseHeaders = getResponseHeaders(spy); - - var template = Firebug.NetMonitor.NetInfoBody; - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (!netInfoBox) - { - var head = getChildByClass(spy.logRow, "spyHead"); - netInfoBox = template.tag.append({"file": spy}, head); - dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]); - template.selectTabByName(netInfoBox, "Response"); - } - else - { - template.updateInfo(netInfoBox, spy, spy.context); - } -}; - - - -// ************************************************************************************************ - -function getRequestHeaders(spy) -{ - var headers = []; - - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitRequestHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - - return headers; -} - -function getResponseHeaders(spy) -{ - var headers = []; - - try - { - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitResponseHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - } - catch (exc) - { - if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS) - FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " + - safeGetRequestName(spy.request), exc); - } - - return headers; -} - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.Spy); -//Firebug.registerRep(Firebug.Spy.XHR); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ - -// List of JSON content types. -var contentTypes = -{ - "text/plain": 1, - "text/javascript": 1, - "text/x-javascript": 1, - "text/json": 1, - "text/x-json": 1, - "application/json": 1, - "application/x-json": 1, - "application/javascript": 1, - "application/x-javascript": 1, - "application/json-rpc": 1 -}; - -// ************************************************************************************************ -// Model implementation - -Firebug.JSONViewerModel = extend(Firebug.Module, -{ - dispatchName: "jsonViewer", - initialize: function() - { - Firebug.NetMonitor.NetInfoBody.addListener(this); - - // Used by Firebug.DOMPanel.DirTable domplate. - this.toggles = {}; - }, - - shutdown: function() - { - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody", infoBox); - - // Let listeners to parse the JSON. - dispatch(this.fbListeners, "onParseJSON", [file]); - - // The JSON is still no there, try to parse most common cases. - if (!file.jsonObject) - { - ///if (this.isJSON(safeGetContentType(file.request), file.responseText)) - if (this.isJSON(file.mimeType, file.responseText)) - file.jsonObject = this.parseJSON(file); - } - - // The jsonObject is created so, the JSON tab can be displayed. - if (file.jsonObject && hasProperties(file.jsonObject)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON", - ///$STR("jsonviewer.tab.JSON")); - $STR("JSON")); - - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody; JSON object available " + - (typeof(file.jsonObject) != "undefined"), file.jsonObject); - } - }, - - isJSON: function(contentType, data) - { - // Workaround for JSON responses without proper content type - // Let's consider all responses starting with "{" as JSON. In the worst - // case there will be an exception when parsing. This means that no-JSON - // responses (and post data) (with "{") can be parsed unnecessarily, - // which represents a little overhead, but this happens only if the request - // is actually expanded by the user in the UI (Net & Console panels). - - ///var responseText = data ? trimLeft(data) : null; - ///if (responseText && responseText.indexOf("{") == 0) - /// return true; - var responseText = data ? trim(data) : null; - if (responseText && responseText.indexOf("{") == 0) - return true; - - if (!contentType) - return false; - - contentType = contentType.split(";")[0]; - contentType = trim(contentType); - return contentTypes[contentType]; - }, - - // Update listener for TabView - updateTabBody: function(infoBox, file, context) - { - var tab = infoBox.selectedTab; - ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0); - var tabBody = $$(".netInfoJSONText", infoBox)[0]; - if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated) - return; - - tabBody.updated = true; - - if (file.jsonObject) { - Firebug.DOMPanel.DirTable.tag.replace( - {object: file.jsonObject, toggles: this.toggles}, tabBody); - } - }, - - parseJSON: function(file) - { - var jsonString = new String(file.responseText); - ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host); - return parseJSONString(jsonString); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.JSONViewerModel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -// List of XML related content types. -var xmlContentTypes = -[ - "text/xml", - "application/xml", - "application/xhtml+xml", - "application/rss+xml", - "application/atom+xml",, - "application/vnd.mozilla.maybe.feed", - "application/rdf+xml", - "application/vnd.mozilla.xul+xml" -]; - -// ************************************************************************************************ -// Model implementation - -/** - * @module Implements viewer for XML based network responses. In order to create a new - * tab wihin network request detail, a listener is registered into - * Firebug.NetMonitor.NetInfoBody object. - */ -Firebug.XMLViewerModel = extend(Firebug.Module, -{ - dispatchName: "xmlViewer", - - initialize: function() - { - ///Firebug.ActivableModule.initialize.apply(this, arguments); - Firebug.Module.initialize.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.addListener(this); - }, - - shutdown: function() - { - ///Firebug.ActivableModule.shutdown.apply(this, arguments); - Firebug.Module.shutdown.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - /** - * Check response's content-type and if it's a XML, create a new tab with XML preview. - */ - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody", infoBox); - - // If the response is XML let's display a pretty preview. - ///if (this.isXML(safeGetContentType(file.request))) - if (this.isXML(file.mimeType, file.responseText)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML", - ///$STR("xmlviewer.tab.XML")); - $STR("XML")); - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody; XML response available"); - } - }, - - isXML: function(contentType) - { - if (!contentType) - return false; - - // Look if the response is XML based. - for (var i=0; i\s*/, ""); - - var div = parentNode.ownerDocument.createElement("div"); - div.innerHTML = xmlText; - - var root = div.getElementsByTagName("*")[0]; - - /*** - var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser"); - var doc = parser.parseFromString(text, "text/xml"); - var root = doc.documentElement; - - // Error handling - var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - if (root.namespaceURI == nsURI && root.nodeName == "parsererror") - { - this.ParseError.tag.replace({error: { - message: root.firstChild.nodeValue, - source: root.lastChild.textContent - }}, parentNode); - return; - } - /**/ - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc); - - // Override getHidden in these templates. The parsed XML documen is - // hidden, but we want to display it using 'visible' styling. - /* - var templates = [ - Firebug.HTMLPanel.CompleteElement, - Firebug.HTMLPanel.Element, - Firebug.HTMLPanel.TextElement, - Firebug.HTMLPanel.EmptyElement, - Firebug.HTMLPanel.XEmptyElement, - ]; - - var originals = []; - for (var i=0; iFirebug.XMLViewerModel. - */ -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "xmlInfoError"}, - DIV({"class": "xmlInfoErrorMsg"}, "$error.message"), - PRE({"class": "xmlInfoErrorSource"}, "$error|getSource") - ), - - getSource: function(error) - { - var parts = error.source.split("\n"); - if (parts.length != 2) - return error.source; - - var limit = 50; - var column = parts[1].length; - if (column >= limit) { - parts[0] = "..." + parts[0].substr(column - limit); - parts[1] = "..." + parts[1].substr(column - limit); - } - - if (parts[0].length > 80) - parts[0] = parts[0].substr(0, 80) + "..."; - - return parts.join("\n"); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.XMLViewerModel); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var ElementCache = Firebug.Lite.Cache.Element; -var cacheID = Firebug.Lite.Cache.ID; - -var ignoreHTMLProps = -{ - // ignores the attributes injected by Sizzle, otherwise it will - // be visible on IE (when enumerating element.attributes) - sizcache: 1, - sizset: 1 -}; - -// ignores also the cache property injected by firebug -ignoreHTMLProps[cacheID] = 1; - - -// ************************************************************************************************ -// HTML Module - -Firebug.HTML = extend(Firebug.Module, -{ - appendTreeNode: function(nodeArray, html) - { - var reTrim = /^\s+|\s+$/g; - - if (!nodeArray.length) nodeArray = [nodeArray]; - - for (var n=0, node; node=nodeArray[n]; n++) - { - if (node.nodeType == 1) - { - if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue; - - var uid = ElementCache(node); - var child = node.childNodes; - var childLength = child.length; - - var nodeName = node.nodeName.toLowerCase(); - - var nodeVisible = isVisible(node); - - var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 && - nodeName != "script" && nodeName != "style"; - - var nodeControl = !hasSingleTextChild && childLength > 0 ? - ('
') : ''; - - var isIE = false; - - if(isIE && nodeControl) - html.push(nodeControl); - - if (typeof uid != 'undefined') - html.push( - '
', - !isIE && nodeControl ? nodeControl: "", - '<', nodeName, '' - ); - else - html.push( - '
<', - nodeName, '' - ); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || Firebug.ignoreFirebugElements && - ignoreHTMLProps.hasOwnProperty(attr.nodeName)) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - /* - // source code nodes - if (nodeName == 'script' || nodeName == 'style') - { - - if(document.all){ - var src = node.innerHTML+'\n'; - - }else { - var src = '\n'+node.innerHTML+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + '
'; - } - - html.push('>
', - s.join(''), - '
',
-                            escapeHTML(src),
-                            '
', - '
</', - nodeName, - '>
', - '
' - ); - - - }/**/ - - // Just a single text node child - if (hasSingleTextChild) - { - var value = child[0].nodeValue.replace(reTrim, ''); - if(value) - { - html.push( - '>', - escapeHTML(value), - '</', - nodeName, - '>' - ); - } - else - html.push('/>'); // blank text, print as childless node - - } - else if (childLength > 0) - { - html.push('>'); - } - else - html.push('/>'); - - } - else if (node.nodeType == 3) - { - if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" || - node.parentNode.nodeName.toLowerCase() == "style" ) ) - { - var value = node.nodeValue.replace(reTrim, ''); - - if(isIE){ - var src = value+'\n'; - - }else { - var src = '\n'+value+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + ''; - } - - html.push('
', - s.join(''), - '
',
-                            escapeHTML(src),
-                            '
' - ); - - } - else - { - var value = node.nodeValue.replace(reTrim, ''); - if (value) - html.push('
', escapeHTML(value),'
'); - } - } - } - }, - - appendTreeChildren: function(treeNode) - { - var doc = Firebug.chrome.document; - var uid = treeNode.id; - var parentNode = ElementCache.get(uid); - - if (parentNode.childNodes.length == 0) return; - - var treeNext = treeNode.nextSibling; - var treeParent = treeNode.parentNode; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl nodeMaximized'; - - var html = []; - var children = doc.createElement("div"); - children.className = "nodeChildren"; - this.appendTreeNode(parentNode.childNodes, html); - children.innerHTML = html.join(""); - - treeParent.insertBefore(children, treeNext); - - var closeElement = doc.createElement("div"); - closeElement.className = "objectBox-element"; - closeElement.innerHTML = '</' + - parentNode.nodeName.toLowerCase() + '>' - - treeParent.insertBefore(closeElement, treeNext); - - }, - - removeTreeChildren: function(treeNode) - { - var children = treeNode.nextSibling; - var closeTag = children.nextSibling; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl'; - - children.parentNode.removeChild(children); - closeTag.parentNode.removeChild(closeTag); - }, - - isTreeNodeVisible: function(id) - { - return $(id); - }, - - select: function(el) - { - var id = el && ElementCache(el); - if (id) - this.selectTreeNode(id); - }, - - selectTreeNode: function(id) - { - id = ""+id; - var node, stack = []; - while(id && !this.isTreeNodeVisible(id)) - { - stack.push(id); - - var node = ElementCache.get(id).parentNode; - - if (node) - id = ElementCache(node); - else - break; - } - - stack.push(id); - - while(stack.length > 0) - { - id = stack.pop(); - node = $(id); - - if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0) - this.appendTreeChildren(node); - } - - selectElement(node); - - // TODO: xxxpedro - if (fbPanel1) - fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2); - } - -}); - -Firebug.registerModule(Firebug.HTML); - -// ************************************************************************************************ -// HTML Panel - -function HTMLPanel(){}; - -HTMLPanel.prototype = extend(Firebug.Panel, -{ - name: "HTML", - title: "HTML", - - options: { - hasSidePanel: true, - //hasToolButtons: true, - isPreRendered: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "4px 3px 1px 15px"; - this.panelNode.style.minWidth = "500px"; - - if (Env.Options.enablePersistent || Firebug.chrome.type != "popup") - this.createUI(); - - if(!this.sidePanelBar.selectedPanel) - { - this.sidePanelBar.selectPanel("css"); - } - }, - - destroy: function() - { - selectedElement = null - fbPanel1 = null; - - selectedSidePanelTS = null; - selectedSidePanelTimer = null; - - Firebug.Panel.destroy.apply(this, arguments); - }, - - createUI: function() - { - var rootNode = Firebug.browser.document.documentElement; - var html = []; - Firebug.HTML.appendTreeNode(rootNode, html); - - this.panelNode.innerHTML = html.join(""); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = $("fbPanel1"); - - if(!selectedElement) - { - Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)); - } - - // TODO: xxxpedro - addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - }, - - shutdown: function() - { - // TODO: xxxpedro - removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - - removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = null; - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - reattach: function() - { - // TODO: panel reattach - if(FirebugChrome.selectedHTMLElementId) - Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId); - }, - - updateSelection: function(object) - { - var id = ElementCache(object); - - if (id) - { - Firebug.HTML.selectTreeNode(id); - } - } -}); - -Firebug.registerPanel(HTMLPanel); - -// ************************************************************************************************ - -var formatStyles = function(styles) -{ - return isIE ? - // IE return CSS property names in upper case, so we need to convert them - styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) : - // other browsers are just fine - styles; -}; - -// ************************************************************************************************ - -var selectedElement = null -var fbPanel1 = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -var selectedSidePanelTS, selectedSidePanelTimer; - -var selectElement= function selectElement(e) -{ - if (e != selectedElement) - { - if (selectedElement) - selectedElement.className = "objectBox-element"; - - e.className = e.className + " selectedElement"; - - if (FBL.isFirefox) - e.style.MozBorderRadius = "2px"; - - else if (FBL.isSafari) - e.style.WebkitBorderRadius = "2px"; - - selectedElement = e; - - FirebugChrome.selectedHTMLElementId = e.id; - - var target = ElementCache.get(e.id); - var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; - - var stack = FirebugChrome.htmlSelectionStack; - - stack.unshift(target); - - if (stack.length > 2) - stack.pop(); - - var lazySelect = function() - { - selectedSidePanelTS = new Date().getTime(); - - selectedSidePanel.select(target, true); - }; - - if (selectedSidePanelTimer) - { - clearTimeout(selectedSidePanelTimer); - selectedSidePanelTimer = null; - } - - if (new Date().getTime() - selectedSidePanelTS > 100) - setTimeout(lazySelect, 0) - else - selectedSidePanelTimer = setTimeout(lazySelect, 150); - } -} - - -// ************************************************************************************************ -// *** TODO: REFACTOR ************************************************************************** -// ************************************************************************************************ -Firebug.HTML.onTreeClick = function (e) -{ - e = e || event; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - - if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag') - { - var isIE = false; - - if(targ.className == 'nodeTag') - { - var control = isIE ? (targ.parentNode.previousSibling || targ) : - (targ.parentNode.previousSibling || targ); - - selectElement(targ.parentNode.parentNode); - - if (control.className.indexOf('nodeControl') == -1) - return; - - } else - control = targ; - - FBL.cancelEvent(e); - - var treeNode = isIE ? control.nextSibling : control.parentNode; - - //FBL.Firebug.Console.log(treeNode); - - if (control.className.indexOf(' nodeMaximized') != -1) { - FBL.Firebug.HTML.removeTreeChildren(treeNode); - } else { - FBL.Firebug.HTML.appendTreeChildren(treeNode); - } - } - else if (targ.className == 'nodeValue' || targ.className == 'nodeName') - { - /* - var input = FBL.Firebug.chrome.document.getElementById('treeInput'); - - input.style.display = "block"; - input.style.left = targ.offsetLeft + 'px'; - input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px'; - input.style.width = targ.offsetWidth + 6 + 'px'; - input.value = targ.textContent || targ.innerText; - input.focus(); - /**/ - } -} - -function onListMouseOut(e) -{ - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - if (hasClass(targ, "fbPanel")) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - } -}; - -var hoverElement = null; -var hoverElementTS = 0; - -Firebug.HTML.onListMouseMove = function onListMouseMove(e) -{ - try - { - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - var found = false; - while (targ && !found) { - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) - targ = targ.parentNode; - else - found = true; - } - - if (!targ) - { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - /* - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - /**/ - - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - - var el = ElementCache.get(uid.value); - - var nodeName = el.nodeName.toLowerCase(); - - if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1) - return; - - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return; - - if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) { - hoverElementTS = new Date().getTime(); - hoverElement = el; - FBL.Firebug.Inspector.drawBoxModel(el); - } - } - catch(E) - { - } -} - - -// ************************************************************************************************ - -Firebug.Reps = { - - appendText: function(object, html) - { - html.push(escapeHTML(objectToString(object))); - }, - - appendNull: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendString: function(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - }, - - appendInteger: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFloat: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFunction: function(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m && m[1] ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - }, - - appendObject: function(object, html) - { - /* - var rep = Firebug.getRep(object); - var outputs = []; - - rep.tag.tag.compile(); - - var str = rep.tag.renderHTML({object: object}, outputs); - html.push(str); - /**/ - - try - { - if (object == undefined) - this.appendNull("undefined", html); - else if (object == null) - this.appendNull("null", html); - else if (typeof object == "string") - this.appendString(object, html); - else if (typeof object == "number") - this.appendInteger(object, html); - else if (typeof object == "boolean") - this.appendInteger(object, html); - else if (typeof object == "function") - this.appendFunction(object, html); - else if (object.nodeType == 1) - this.appendSelector(object, html); - else if (typeof object == "object") - { - if (typeof object.length != "undefined") - this.appendArray(object, html); - else - this.appendObjectFormatted(object, html); - } - else - this.appendText(object, html); - } - catch (exc) - { - } - /**/ - }, - - appendObjectFormatted: function(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - }, - - appendSelector: function(object, html) - { - var uid = ElementCache(object); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - }, - - appendNode: function(node, html) - { - if (node.nodeType == 1) - { - var uid = ElementCache(node); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push( - '
', - '', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || attr.nodeName == cacheID) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? node.style.cssText : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - if (node.firstChild) - { - html.push('>
'); - - for (var child = node.firstChild; child; child = child.nextSibling) - this.appendNode(child, html); - - html.push('
</', - node.nodeName.toLowerCase(), '>
'); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - var value = trim(node.nodeValue); - if (value) - html.push('
', escapeHTML(value),'
'); - } - }, - - appendArray: function(object, html) - { - html.push('[ '); - - for (var i = 0, l = object.length, obj; i < l; ++i) - { - this.appendObject(object[i], html); - - if (i < l-1) - html.push(', '); - } - - html.push(' ]'); - } - -}; - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -/* - -Hack: -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; -Firebug.showInfoTips = true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome); - -/**/ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var maxWidth = 100, maxHeight = 80; -var infoTipMargin = 10; -var infoTipWindowPadding = 25; - -// ************************************************************************************************ - -Firebug.InfoTip = extend(Firebug.Module, -{ - dispatchName: "infoTip", - tags: domplate( - { - infoTipTag: DIV({"class": "infoTip"}), - - colorTag: - DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, " "), - - imgTag: - DIV({"class": "infoTipImageBox infoTipLoading"}, - IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat", - onload: "$onLoadImage"}), - IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}), - DIV({"class": "infoTipCaption"}) - ), - - onLoadImage: function(event) - { - var img = event.currentTarget || event.srcElement; - ///var bgImg = img.nextSibling; - ///if (!bgImg) - /// return; // Sometimes gets called after element is dead - - ///var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - /// TODO: xxxpedro infoTip hack - var caption = getElementByClass(innerBox, "infoTipCaption"); - var bgImg = getElementByClass(innerBox, "infoTipBgImage"); - if (!bgImg) - return; // Sometimes gets called after element is dead - - // TODO: xxxpedro infoTip IE and timing issue - // TODO: use offline document to avoid flickering - if (isIE) - removeClass(innerBox, "infoTipLoading"); - - var updateInfoTip = function(){ - - var w = img.naturalWidth || img.width || 10, - h = img.naturalHeight || img.height || 10; - - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - //caption.innerHTML = $STRF("Dimensions", [w, h]); - caption.innerHTML = $STRF(w + " x " + h); - - - }; - - if (isIE) - setTimeout(updateInfoTip, 0); - else - { - updateInfoTip(); - removeClass(innerBox, "infoTipLoading"); - } - - /// - } - - /* - /// onLoadImage original - onLoadImage: function(event) - { - var img = event.currentTarget; - var bgImg = img.nextSibling; - if (!bgImg) - return; // Sometimes gets called after element is dead - - var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - var w = img.naturalWidth, h = img.naturalHeight; - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - caption.innerHTML = $STRF("Dimensions", [w, h]); - - removeClass(innerBox, "infoTipLoading"); - } - /**/ - - }), - - initializeBrowser: function(browser) - { - browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser); - browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser); - - ///var doc = browser.contentDocument; - var doc = browser.document; - if (!doc) - return; - - ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true); - addEvent(doc, "mouseover", browser.onInfoTipMouseMove); - addEvent(doc, "mouseout", browser.onInfoTipMouseOut); - addEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc)); - }, - - uninitializeBrowser: function(browser) - { - if (browser.infoTip) - { - ///var doc = browser.contentDocument; - var doc = browser.document; - ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true); - removeEvent(doc, "mouseover", browser.onInfoTipMouseMove); - removeEvent(doc, "mouseout", browser.onInfoTipMouseOut); - removeEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - browser.infoTip.parentNode.removeChild(browser.infoTip); - delete browser.infoTip; - delete browser.onInfoTipMouseMove; - } - }, - - showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset) - { - if (!Firebug.showInfoTips) - return; - - var scrollParent = getOverflowParent(target); - var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0); - - if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset)) - { - var htmlElt = infoTip.ownerDocument.documentElement; - var panelWidth = htmlElt.clientWidth; - var panelHeight = htmlElt.clientHeight; - - if (x+infoTip.offsetWidth+infoTipMargin > panelWidth) - { - infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px"; - infoTip.style.right = "auto"; - } - else - { - infoTip.style.left = (x+infoTipMargin) + "px"; - infoTip.style.right = "auto"; - } - - if (y+infoTip.offsetHeight+infoTipMargin > panelHeight) - { - infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px"; - infoTip.style.bottom = "auto"; - } - else - { - infoTip.style.top = (y+infoTipMargin) + "px"; - infoTip.style.bottom = "auto"; - } - - if (FBTrace.DBG_INFOTIP) - FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top + - ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom + - ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight + - ", offsetWidth: " + infoTip.offsetWidth + - ", x: " + x + ", panelWidth: " + panelWidth + - ", y: " + y + ", panelHeight: " + panelHeight); - - infoTip.setAttribute("active", "true"); - } - else - this.hideInfoTip(infoTip); - }, - - hideInfoTip: function(infoTip) - { - if (infoTip) - infoTip.removeAttribute("active"); - }, - - onMouseOut: function(event, browser) - { - if (!event.relatedTarget) - this.hideInfoTip(browser.infoTip); - }, - - onMouseMove: function(event, browser) - { - // Ignore if the mouse is moving over the existing info tip. - if (getAncestorByClass(event.target, "infoTip")) - return; - - if (browser.currentPanel) - { - var x = event.clientX, y = event.clientY, target = event.target || event.srcElement; - this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset); - } - else - this.hideInfoTip(browser.infoTip); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - populateColorInfoTip: function(infoTip, color) - { - this.tags.colorTag.replace({rgbValue: color}, infoTip); - return true; - }, - - populateImageInfoTip: function(infoTip, url, repeat) - { - if (!repeat) - repeat = "no-repeat"; - - this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip); - - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - disable: function() - { - // XXXjoe For each browser, call uninitializeBrowser - }, - - showPanel: function(browser, panel) - { - if (panel) - { - var infoTip = panel.panelBrowser.infoTip; - if (!infoTip) - infoTip = this.initializeBrowser(panel.panelBrowser); - this.hideInfoTip(infoTip); - } - - }, - - showSidePanel: function(browser, panel) - { - this.showPanel(browser, panel); - } -}); - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.InfoTip); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -// move to FBL -(function() { - -// ************************************************************************************************ -// XPath - -/** - * Gets an XPath for an element which describes its hierarchical location. - */ -this.getElementXPath = function(element) -{ - if (element && element.id) - return '//*[@id="' + element.id + '"]'; - else - return this.getElementTreeXPath(element); -}; - -this.getElementTreeXPath = function(element) -{ - var paths = []; - - for (; element && element.nodeType == 1; element = element.parentNode) - { - var index = 0; - for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) - { - if (sibling.nodeName == element.nodeName) - ++index; - } - - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[" + (index+1) + "]" : ""); - paths.splice(0, 0, tagName + pathIndex); - } - - return paths.length ? "/" + paths.join("/") : null; -}; - -this.getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -this.getRuleMatchingElements = function(rule, doc) -{ - var css = rule.selectorText; - var xpath = this.cssToXPath(css); - return this.getElementsByXPath(doc, xpath); -}; - - -}).call(FBL); - - - - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - -var toCamelCase = function toCamelCase(s) -{ - return s.replace(reSelectorCase, toCamelCaseReplaceFn); -}; - -var toSelectorCase = function toSelectorCase(s) -{ - return s.replace(reCamelCase, "-$1").toLowerCase(); - -}; - -var reCamelCase = /([A-Z])/g; -var reSelectorCase = /\-(.)/g; -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g) -{ - return g.toUpperCase(); -}; - - - - - -// ************************************************************************************************ - -var ElementCache = Firebug.Lite.Cache.Element; -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet; - -var globalCSSRuleIndex; - -var externalStyleSheetURLs = []; -var externalStyleSheetWarning = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'}, - SPAN("$object|STR"), - A({"href": "$href", target:"_blank"}, "$link|STR") - ) -}); - - -var processAllStyleSheetsTimeout = null; -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet) -{ - var url = styleSheet.href; - styleSheet.firebugIgnore = true; - - var source = Firebug.Lite.Proxy.load(url); - - // TODO: check for null and error responses - - - // remove comments - //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - //source = source.replace(reMultiComment, ""); - - // convert relative addresses to absolute ones - source = source.replace(/url\(([^\)]+)\)/g, function(a,name){ - - var hasDomain = /\w+:\/\/./.test(name); - - if (!hasDomain) - { - name = name.replace(/^(["'])(.+)\1$/, "$2"); - var first = name.charAt(0); - - // relative path, based on root - if (first == "/") - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLRoot - var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url); - - return m ? - "url(" + m[1] + name + ")" : - "url(" + name + ")"; - } - // relative path, based on current location - else - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLPath - var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, ""); - - path = path + name; - - var reBack = /[^\/]+\/\.\.\//; - while(reBack.test(path)) - { - path = path.replace(reBack, ""); - } - - //console.log("url(" + path + ")"); - - return "url(" + path + ")"; - } - } - - // if it is an absolute path, there is nothing to do - return a; - }); - - var oldStyle = styleSheet.ownerNode; - - if (!oldStyle) return; - - if (!oldStyle.parentNode) return; - - var style = createGlobalElement("style"); - style.setAttribute("charset","utf-8"); - style.setAttribute("type", "text/css"); - style.innerHTML = source; - - //debugger; - oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling); - oldStyle.parentNode.removeChild(oldStyle); - - - //doc.getElementsByTagName("head")[0].appendChild(style); - - doc.styleSheets[doc.styleSheets.length-1].externalURL = url; - - console.log(url, "call " + externalStyleSheetURLs.length, source); - - externalStyleSheetURLs.pop(); - - if (processAllStyleSheetsTimeout) - { - clearTimeout(processAllStyleSheetsTimeout); - } - - processAllStyleSheetsTimeout = setTimeout(function(){ - console.log("processing"); - FBL.processAllStyleSheets(doc, styleSheetIterator); - processAllStyleSheetsTimeout = null; - },200); - -}; - - -FBL.processAllStyleSheets = function(doc, styleSheetIterator) -{ - styleSheetIterator = styleSheetIterator || processStyleSheet; - - globalCSSRuleIndex = -1; - - var styleSheets = doc.styleSheets; - var importedStyleSheets = []; - - if (FBTrace.DBG_CSS) - var start = new Date().getTime(); - - for(var i=0, length=styleSheets.length; i maxSpecificity) - { - maxSpecificity = spec; - mostSpecificSelector = sel; - } - } - } - - rule.specificity = maxSpecificity; - } - } - - rules.sort(sortElementRules); - //rules.sort(solveRulesTied); - - return rules; -}; - -var sortElementRules = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - var specificityA = ruleA.specificity; - var specificityB = ruleB.specificity; - - if (specificityA > specificityB) - return 1; - - else if (specificityA < specificityB) - return -1; - - else - return ruleA.order > ruleB.order ? 1 : -1; -}; - -var solveRulesTied = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - if (ruleA.specificity == ruleB.specificity) - return ruleA.order > ruleB.order ? 1 : -1; - - return null; -}; - -var reSelectorTag = /(^|\s)(?:\w+)/g; -var reSelectorClass = /\.[\w\d_-]+/g; -var reSelectorId = /#[\w\d_-]+/g; - -var getCSSRuleSpecificity = function(selector) -{ - var match = selector.match(reSelectorTag); - var tagCount = match ? match.length : 0; - - match = selector.match(reSelectorClass); - var classCount = match ? match.length : 0; - - match = selector.match(reSelectorId); - var idCount = match ? match.length : 0; - - return tagCount + 10*classCount + 100*idCount; -}; - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule; -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor; -//const nsISelectionDisplay = Ci.nsISelectionDisplay; -//const nsISelectionController = Ci.nsISelectionController; - -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153 -//const STATE_ACTIVE = 0x01; -//const STATE_FOCUS = 0x02; -//const STATE_HOVER = 0x04; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Firebug.SourceBoxPanel = Firebug.Panel; - -var domUtils = null; - -var textContent = isIE ? "innerText" : "textContent"; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var CSSDomplateBase = { - isEditable: function(rule) - { - return !rule.isSystemSheet; - }, - isSelectorEditable: function(rule) - { - return rule.isSelectorEditable && this.isEditable(rule); - } -}; - -var CSSPropTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled", - $editGroup: "$rule|isEditable", - $cssOverridden: "$prop.overridden", role : "option"}, - A({"class": "cssPropDisable"}, "  "), - SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"), - SPAN({"class": "cssColon"}, ":"), - SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"), - SPAN({"class": "cssSemi"}, ";") - ) -}); - -var CSSRuleTag = - TAG("$rule.tag", {rule: "$rule"}); - -var CSSImportRuleTag = domplate({ - tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"}, - "@import "", - A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"), - "";" - ) -}); - -var CSSStyleRuleTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssRule insertInto", - $cssEditableRule: "$rule|isEditable", - $editGroup: "$rule|isSelectorEditable", - _repObject: "$rule.rule", - "ruleId": "$rule.id", role : 'presentation'}, - DIV({"class": "cssHead focusRow", role : 'listitem'}, - SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {" - ), - DIV({role : 'group'}, - DIV({"class": "cssPropertyListBox", role : 'listbox'}, - FOR("prop", "$rule.props", - TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"}) - ) - ) - ), - DIV({"class": "editable insertBefore", role:"presentation"}, "}") - ) -}); - -var reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; - -var reURL = /url\("?([^"\)]+)?"?\)/; - -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/; - -//const sothinkInstalled = !!$("swfcatcherKey_sidebar"); -var sothinkInstalled = false; -var styleGroups = -{ - text: [ - "font-family", - "font-size", - "font-weight", - "font-style", - "color", - "text-transform", - "text-decoration", - "letter-spacing", - "word-spacing", - "line-height", - "text-align", - "vertical-align", - "direction", - "column-count", - "column-gap", - "column-width" - ], - - background: [ - "background-color", - "background-image", - "background-repeat", - "background-position", - "background-attachment", - "opacity" - ], - - box: [ - "width", - "height", - "top", - "right", - "bottom", - "left", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width", - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color", - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style", - "-moz-border-top-radius", - "-moz-border-right-radius", - "-moz-border-bottom-radius", - "-moz-border-left-radius", - "outline-top-width", - "outline-right-width", - "outline-bottom-width", - "outline-left-width", - "outline-top-color", - "outline-right-color", - "outline-bottom-color", - "outline-left-color", - "outline-top-style", - "outline-right-style", - "outline-bottom-style", - "outline-left-style" - ], - - layout: [ - "position", - "display", - "visibility", - "z-index", - "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow - "overflow-y", - "overflow-clip", - "white-space", - "clip", - "float", - "clear", - "-moz-box-sizing" - ], - - other: [ - "cursor", - "list-style-image", - "list-style-position", - "list-style-type", - "marker-offset", - "user-focus", - "user-select", - "user-modify", - "user-input" - ] -}; - -var styleGroupTitles = -{ - text: "Text", - background: "Background", - box: "Box Model", - layout: "Layout", - other: "Other" -}; - -Firebug.CSSModule = extend(Firebug.Module, -{ - freeEdit: function(styleSheet, value) - { - if (!styleSheet.editStyleSheet) - { - var ownerNode = getStyleSheetOwnerNode(styleSheet); - styleSheet.disabled = true; - - var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL); - url.spec = styleSheet.href; - - var editStyleSheet = ownerNode.ownerDocument.createElementNS( - "http://www.w3.org/1999/xhtml", - "style"); - unwrapObject(editStyleSheet).firebugIgnore = true; - editStyleSheet.setAttribute("type", "text/css"); - editStyleSheet.setAttributeNS( - "http://www.w3.org/XML/1998/namespace", - "base", - url.directory); - if (ownerNode.hasAttribute("media")) - { - editStyleSheet.setAttribute("media", ownerNode.getAttribute("media")); - } - - // Insert the edited stylesheet directly after the old one to ensure the styles - // cascade properly. - ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling); - - styleSheet.editStyleSheet = editStyleSheet; - } - - styleSheet.editStyleSheet.innerHTML = value; - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n"); - - dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]); - }, - - insertRule: function(styleSheet, cssText, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText); - var insertIndex = styleSheet.insertRule(cssText, ruleIndex); - - dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]); - - return insertIndex; - }, - - deleteRule: function(styleSheet, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules); - dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]); - - styleSheet.deleteRule(ruleIndex); - }, - - setProperty: function(rule, propName, propValue, propPriority) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - // good browsers - if (style.getPropertyValue) - { - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect - // unless we remove the property first - style.removeProperty(propName); - - style.setProperty(propName, propValue, propPriority); - } - // sad browsers - else - { - // TODO: xxxpedro parse CSS rule to find property priority in IE? - //console.log(propName, propValue); - style[toCamelCase(propName)] = propValue; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]); - } - }, - - removeProperty: function(rule, propName, parent) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - if (style.getPropertyValue) - { - - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - style.removeProperty(propName); - } - else - { - style[toCamelCase(propName)] = ""; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]); - } - }/*, - - cleanupSheets: function(doc, context) - { - // Due to the manner in which the layout engine handles multiple - // references to the same sheet we need to kick it a little bit. - // The injecting a simple stylesheet then removing it will force - // Firefox to regenerate it's CSS hierarchy. - // - // WARN: This behavior was determined anecdotally. - // See http://code.google.com/p/fbug/issues/detail?id=2440 - var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - style.setAttribute("charset","utf-8"); - unwrapObject(style).firebugIgnore = true; - style.setAttribute("type", "text/css"); - style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}"; - addStyleSheet(doc, style); - style.parentNode.removeChild(style); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=500365 - // This voodoo touches each style sheet to force some Firefox internal change to allow edits. - var styleSheets = getAllStyleSheets(context); - for(var i = 0; i < styleSheets.length; i++) - { - try - { - var rules = styleSheets[i].cssRules; - if (rules.length > 0) - var touch = rules[0]; - if (FBTrace.DBG_CSS && touch) - FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName())); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e); - } - } - }, - cleanupSheetHandler: function(event, context) - { - var target = event.target || event.srcElement, - tagName = (target.tagName || "").toLowerCase(); - if (tagName == "link") - { - this.cleanupSheets(target.ownerDocument, context); - } - }, - watchWindow: function(context, win) - { - var cleanupSheets = bind(this.cleanupSheets, this), - cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context), - doc = win.document; - - //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false); - //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false); - }, - loadedContext: function(context) - { - var self = this; - iterateWindows(context.browser.contentWindow, function(subwin) - { - self.cleanupSheets(subwin.document, context); - }); - } - /**/ -}); - -// ************************************************************************************************ - -Firebug.CSSStyleSheetPanel = function() {}; - -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel, -{ - template: domplate( - { - tag: - DIV({"class": "cssSheet insertInto a11yCSSView"}, - FOR("rule", "$rules", - CSSRuleTag - ), - DIV({"class": "cssSheet editable insertBefore"}, "") - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - refresh: function() - { - if (this.location) - this.updateLocation(this.location); - else if (this.selection) - this.updateSelection(this.selection); - }, - - toggleEditing: function() - { - if (!this.stylesheetEditor) - this.stylesheetEditor = new StyleSheetEditor(this.document); - - if (this.editing) - Firebug.Editor.stopEditing(); - else - { - if (!this.location) - return; - - var styleSheet = this.location.editStyleSheet - ? this.location.editStyleSheet.sheet - : this.location; - - var css = getStyleSheetCSS(styleSheet, this.context); - //var topmost = getTopmostRuleLine(this.panelNode); - - this.stylesheetEditor.styleSheet = this.location; - Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor); - //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset); - } - }, - - getStylesheetURL: function(rule) - { - if (this.location.href) - return this.location.href; - else - return this.context.window.location.href; - }, - - getRuleByLine: function(styleSheet, line) - { - if (!domUtils) - return null; - - var cssRules = styleSheet.cssRules; - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - if (rule instanceof CSSStyleRule) - { - var ruleLine = domUtils.getRuleLine(rule); - if (ruleLine >= line) - return rule; - } - } - }, - - highlightRule: function(rule) - { - var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule); - if (ruleElement) - { - scrollIntoCenterView(ruleElement, this.panelNode); - setClassTimed(ruleElement, "jumpHighlight", this.context); - } - }, - - getStyleSheetRules: function(context, styleSheet) - { - var isSystemSheet = isSystemStyleSheet(styleSheet); - - function appendRules(cssRules) - { - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - - // TODO: xxxpedro opera instanceof stylesheet remove the following comments when - // the issue with opera and style sheet Classes has been solved. - - //if (rule instanceof CSSStyleRule) - if (instanceOf(rule, "CSSStyleRule")) - { - var props = this.getRuleProperties(context, rule); - //var line = domUtils.getRuleLine(rule); - var line = null; - - var selector = rule.selectorText; - - if (isIE) - { - selector = selector.replace(reSelectorTag, - function(s){return s.toLowerCase();}); - } - - var ruleId = rule.selectorText+"/"+line; - rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId, - selector: selector, props: props, - isSystemSheet: isSystemSheet, - isSelectorEditable: true}); - } - //else if (rule instanceof CSSImportRule) - else if (instanceOf(rule, "CSSImportRule")) - rules.push({tag: CSSImportRuleTag.tag, rule: rule}); - //else if (rule instanceof CSSMediaRule) - else if (instanceOf(rule, "CSSMediaRule")) - appendRules.apply(this, [rule.cssRules]); - else - { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS) - FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule); - } - } - } - - var rules = []; - appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]); - return rules; - }, - - parseCSSProps: function(style, inheritMode) - { - var props = []; - - if (Firebug.expandShorthandProps) - { - var count = style.length-1, - index = style.length; - while (index--) - { - var propName = style.item(count - index); - this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props); - } - } - else - { - var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - // TODO: xxxpedro port to firebug: variable leaked into global namespace - var m; - - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) - continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) - this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props); - }; - } - - return props; - }, - - getRuleProperties: function(context, rule, inheritMode) - { - var props = this.parseCSSProps(rule.style, inheritMode); - - // TODO: xxxpedro port to firebug: variable leaked into global namespace - //var line = domUtils.getRuleLine(rule); - var line; - var ruleId = rule.selectorText+"/"+line; - this.addOldProperties(context, ruleId, inheritMode, props); - sortProperties(props); - - return props; - }, - - addOldProperties: function(context, ruleId, inheritMode, props) - { - if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) ) - { - var moreProps = context.selectorMap[ruleId]; - for (var i = 0; i < moreProps.length; ++i) - { - var prop = moreProps[i]; - this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props); - } - } - }, - - addProperty: function(name, value, important, disabled, inheritMode, props) - { - name = name.toLowerCase(); - - if (inheritMode && !inheritedStyleNames[name]) - return; - - name = this.translateName(name, value); - if (name) - { - value = stripUnits(rgbToHex(value)); - important = important ? " !important" : ""; - - var prop = {name: name, value: value, important: important, disabled: disabled}; - props.push(prop); - } - }, - - translateName: function(name, value) - { - // Don't show these proprietary Mozilla properties - if ((value == "-moz-initial" - && (name == "-moz-background-clip" || name == "-moz-background-origin" - || name == "-moz-background-inline-policy")) - || (value == "physical" - && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source" - || name == "margin-right-ltr-source" || name == "margin-right-rtl-source")) - || (value == "physical" - && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source" - || name == "padding-right-ltr-source" || name == "padding-right-rtl-source"))) - return null; - - // Translate these back to the form the user probably expects - if (name == "margin-left-value") - return "margin-left"; - else if (name == "margin-right-value") - return "margin-right"; - else if (name == "margin-top-value") - return "margin-top"; - else if (name == "margin-bottom-value") - return "margin-bottom"; - else if (name == "padding-left-value") - return "padding-left"; - else if (name == "padding-right-value") - return "padding-right"; - else if (name == "padding-top-value") - return "padding-top"; - else if (name == "padding-bottom-value") - return "padding-bottom"; - // XXXjoe What about border! - else - return name; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - editElementStyle: function() - { - ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0]; - var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0]; - var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection); - if (!styleRuleBox) - { - var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []}; - if (!rulesBox) - { - // The element did not have any displayed styles. We need to create the whole tree and remove - // the no styles message - styleRuleBox = this.template.cascadedTag.replace({ - rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom") - }, this.panelNode); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0]; - styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0]; - } - else - styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0]; - styleRuleBox = $$(".insertInto", styleRuleBox)[0]; - } - - Firebug.Editor.insertRowForObject(styleRuleBox); - }, - - insertPropertyRow: function(row) - { - Firebug.Editor.insertRowForObject(row); - }, - - insertRule: function(row) - { - var location = getAncestorByClass(row, "cssRule"); - if (!location) - { - location = getChildByClass(this.panelNode, "cssSheet"); - Firebug.Editor.insertRowForObject(location); - } - else - { - Firebug.Editor.insertRow(location, "before"); - } - }, - - editPropertyRow: function(row) - { - var propValueBox = getChildByClass(row, "cssPropValue"); - Firebug.Editor.startEditing(propValueBox); - }, - - deletePropertyRow: function(row) - { - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - Firebug.CSSModule.removeProperty(rule, propName); - - // Remove the property from the selector map, if it was disabled - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) ) - { - var map = this.context.selectorMap[ruleId]; - for (var i = 0; i < map.length; ++i) - { - if (map[i].name == propName) - { - map.splice(i, 1); - break; - } - } - } - if (this.name == "stylesheet") - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]); - row.parentNode.removeChild(row); - - this.markChange(this.name == "stylesheet"); - }, - - disablePropertyRow: function(row) - { - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - - if (!this.context.selectorMap) - this.context.selectorMap = {}; - - // XXXjoe Generate unique key for elements too - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if (!(this.context.selectorMap.hasOwnProperty(ruleId))) - this.context.selectorMap[ruleId] = []; - - var map = this.context.selectorMap[ruleId]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - if (hasClass(row, "disabledStyle")) - { - Firebug.CSSModule.removeProperty(rule, propName); - - map.push({"name": propName, "value": parsedValue.value, - "important": parsedValue.priority}); - } - else - { - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - - var index = findPropByName(map, propName); - map.splice(index, 1); - } - - this.markChange(this.name == "stylesheet"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onMouseDown: function(event) - { - //console.log("onMouseDown", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - // XXjoe Hack to only allow clicking on the checkbox - if (!isLeftClick(event) || offset > 20) - return; - - var target = event.target || event.srcElement; - if (hasClass(target, "textEditor")) - return; - - var row = getAncestorByClass(target, "cssProp"); - if (row && hasClass(row, "editGroup")) - { - this.disablePropertyRow(row); - cancelEvent(event); - } - }, - - onDoubleClick: function(event) - { - //console.log("onDoubleClick", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - if (!isLeftClick(event) || offset <= 20) - return; - - var target = event.target || event.srcElement; - - //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20); - - // if the inline editor was clicked, don't insert a new rule - if (hasClass(target, "textEditorInner")) - return; - - var row = getAncestorByClass(target, "cssRule"); - if (row && !getAncestorByClass(target, "cssPropName") - && !getAncestorByClass(target, "cssPropValue")) - { - this.insertPropertyRow(row); - cancelEvent(event); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "stylesheet", - title: "CSS", - parentPanel: null, - searchable: true, - dependents: ["css", "stylesheet", "dom", "domSide", "layout"], - - options: - { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onMouseDown = bind(this.onMouseDown, this); - this.onDoubleClick = bind(this.onDoubleClick, this); - - if (this.name == "stylesheet") - { - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var selectNode = this.selectNode = createElement("select"); - - processAllStyleSheets(doc, function(doc, styleSheet) - { - var key = StyleSheetCache.key(styleSheet); - var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href); - var option = createElement("option", {value: key}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }); - - this.toolButtonsNode.appendChild(selectNode); - } - /**/ - }, - - onChangeSelect: function(event) - { - event = event || window.event; - var target = event.srcElement || event.currentTarget; - var key = target.value; - var styleSheet = StyleSheetCache.get(key); - - this.updateLocation(styleSheet); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - //if (!domUtils) - //{ - // try { - // domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); - // } catch (exc) { - // if (FBTrace.DBG_ERRORS) - // FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc); - // } - //} - - //TODO: xxxpedro - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - this.initializeNode(); - - if (this.name == "stylesheet") - { - var styleSheets = Firebug.browser.document.styleSheets; - - if (styleSheets.length > 0) - { - addEvent(this.selectNode, "change", this.onChangeSelect); - - this.updateLocation(styleSheets[0]); - } - } - - //Firebug.SourceBoxPanel.initialize.apply(this, arguments); - }, - - shutdown: function() - { - // must destroy the editor when we leave the panel to avoid problems (Issue 2981) - Firebug.Editor.stopEditing(); - - if (this.name == "stylesheet") - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - } - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - destroy: function(state) - { - //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop; - - //persistObjects(this, state); - - // xxxpedro we are stopping the editor in the shutdown method already - //Firebug.Editor.stopEditing(); - Firebug.Panel.destroy.apply(this, arguments); - }, - - initializeNode: function(oldPanelNode) - { - addEvent(this.panelNode, "mousedown", this.onMouseDown); - addEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']); - }, - - destroyNode: function() - { - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - removeEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']); - }, - - ishow: function(state) - { - Firebug.Inspector.stopInspecting(true); - - this.showToolbarButtons("fbCSSButtons", true); - - if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel - { - restoreObjects(this, state); - - if (!this.location) - this.location = this.getDefaultLocation(); - - if (state && state.scrollTop) - this.panelNode.scrollTop = state.scrollTop; - } - }, - - ihide: function() - { - this.showToolbarButtons("fbCSSButtons", false); - - this.lastScrollTop = this.panelNode.scrollTop; - }, - - supportsObject: function(object) - { - if (object instanceof CSSStyleSheet) - return 1; - else if (object instanceof CSSStyleRule) - return 2; - else if (object instanceof CSSStyleDeclaration) - return 2; - else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href)) - return 2; - else - return 0; - }, - - updateLocation: function(styleSheet) - { - if (!styleSheet) - return; - if (styleSheet.editStyleSheet) - styleSheet = styleSheet.editStyleSheet.sheet; - - // if it is a restricted stylesheet, show the warning message and abort the update process - if (styleSheet.restricted) - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode); - - // TODO: xxxpedro remove when there the external resource problem is fixed - externalStyleSheetWarning.tag.append({ - object: "The stylesheet could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22" - }, this.panelNode); - - return; - } - - var rules = this.getStyleSheetRules(this.context, styleSheet); - - var result; - if (rules.length) - result = this.template.tag.replace({rules: rules}, this.panelNode); - else - result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode); - - // TODO: xxxpedro need to fix showToolbarButtons function - //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location)); - - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]); - }, - - updateSelection: function(object) - { - this.selection = null; - - if (object instanceof CSSStyleDeclaration) { - object = object.parentRule; - } - - if (object instanceof CSSStyleRule) - { - this.navigate(object.parentStyleSheet); - this.highlightRule(object); - } - else if (object instanceof CSSStyleSheet) - { - this.navigate(object); - } - else if (object instanceof SourceLink) - { - try - { - var sourceLink = object; - - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - clearNode(this.panelNode); // replace rendered stylesheets - this.showSourceFile(sourceFile); - - var lineNo = object.line; - if (lineNo) - this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context)); - } - else // XXXjjb we should not be taking this path - { - var stylesheet = getStyleSheetByHref(sourceLink.href, this.context); - if (stylesheet) - this.navigate(stylesheet); - else - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink); - } - } - } - catch(exc) { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.upDateSelection FAILS "+exc, exc); - } - } - }, - - updateOption: function(name, value) - { - if (name == "expandShorthandProps") - this.refresh(); - }, - - getLocationList: function() - { - var styleSheets = getAllStyleSheets(this.context); - return styleSheets; - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }, - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ]; - }, - - getContextMenuItems: function(style, target) - { - var items = []; - - if (this.infoTipType == "color") - { - items.push( - {label: "CopyColor", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) } - ); - } - else if (this.infoTipType == "image") - { - items.push( - {label: "CopyImageLocation", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }, - {label: "OpenImageInNewTab", - command: bindFixed(openNewTab, FBL, this.infoTipObject) } - ); - } - - ///if (this.selection instanceof Element) - if (isElement(this.selection)) - { - items.push( - //"-", - {label: "EditStyle", - command: bindFixed(this.editElementStyle, this) } - ); - } - else if (!isSystemStyleSheet(this.selection)) - { - items.push( - //"-", - {label: "NewRule", - command: bindFixed(this.insertRule, this, target) } - ); - } - - var cssRule = getAncestorByClass(target, "cssRule"); - if (cssRule && hasClass(cssRule, "cssEditableRule")) - { - items.push( - "-", - {label: "NewProp", - command: bindFixed(this.insertPropertyRow, this, target) } - ); - - var propRow = getAncestorByClass(target, "cssProp"); - if (propRow) - { - var propName = getChildByClass(propRow, "cssPropName")[textContent]; - var isDisabled = hasClass(propRow, "disabledStyle"); - - items.push( - {label: $STRF("EditProp", [propName]), nol10n: true, - command: bindFixed(this.editPropertyRow, this, propRow) }, - {label: $STRF("DeleteProp", [propName]), nol10n: true, - command: bindFixed(this.deletePropertyRow, this, propRow) }, - {label: $STRF("DisableProp", [propName]), nol10n: true, - type: "checkbox", checked: isDisabled, - command: bindFixed(this.disablePropertyRow, this, propRow) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ); - - return items; - }, - - browseObject: function(object) - { - if (this.infoTipType == "image") - { - openNewTab(this.infoTipObject); - return true; - } - }, - - showInfoTip: function(infoTip, target, x, y) - { - var propValue = getAncestorByClass(target, "cssPropValue"); - if (propValue) - { - var offset = getClientOffset(propValue); - var offsetX = x-offset.x; - - var text = propValue[textContent]; - var charWidth = propValue.offsetWidth/text.length; - var charOffset = Math.floor(offsetX/charWidth); - - var cssValue = parseCSSValue(text, charOffset); - if (cssValue) - { - if (cssValue.value == this.infoTipValue) - return true; - - this.infoTipValue = cssValue.value; - - if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value))) - { - this.infoTipType = "color"; - this.infoTipObject = cssValue.value; - - return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value); - } - else if (cssValue.type == "url") - { - ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0); - var propNameNode = getElementByClass(target.parentNode, "cssPropName"); - if (propNameNode && isImageRule(propNameNode[textContent])) - { - var rule = Firebug.getRepObject(target); - var baseURL = this.getStylesheetURL(rule); - var relURL = parseURLValue(cssValue.value); - var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL); - var repeat = parseRepeatValue(text); - - this.infoTipType = "image"; - this.infoTipObject = absURL; - - return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat); - } - } - } - } - - delete this.infoTipType; - delete this.infoTipValue; - delete this.infoTipObject; - }, - - getEditor: function(target, value) - { - if (target == this.panelNode - || hasClass(target, "cssSelector") || hasClass(target, "cssRule") - || hasClass(target, "cssSheet")) - { - if (!this.ruleEditor) - this.ruleEditor = new CSSRuleEditor(this.document); - - return this.ruleEditor; - } - else - { - if (!this.editor) - this.editor = new CSSEditor(this.document); - - return this.editor; - } - }, - - getDefaultLocation: function() - { - try - { - var styleSheets = this.context.window.document.styleSheets; - if (styleSheets.length) - { - var sheet = styleSheets[0]; - return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet; - } - } - catch (exc) - { - if (FBTrace.DBG_LOCATIONS) - FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc); - } - }, - - getObjectDescription: function(styleSheet) - { - var url = getURLForStyleSheet(styleSheet); - var instance = getInstanceForStyleSheet(styleSheet); - - var baseDescription = splitURLBase(url); - if (instance) { - baseDescription.name = baseDescription.name + " #" + (instance + 1); - } - return baseDescription; - }, - - search: function(text, reverse) - { - var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse); - if (!curDoc && Firebug.searchGlobal) - { - return this.searchOtherDocs(text, reverse); - } - return curDoc; - }, - - searchOtherDocs: function(text, reverse) - { - var scanRE = Firebug.Search.getTestingRegex(text); - function scanDoc(styleSheet) { - // we don't care about reverse here as we are just looking for existence, - // if we do have a result we will handle the reverse logic on display - for (var i = 0; i < styleSheet.cssRules.length; i++) - { - if (scanRE.test(styleSheet.cssRules[i].cssText)) - { - return true; - } - } - } - - if (this.navigateToNextDocument(scanDoc, reverse)) - { - return this.searchCurrentDoc(true, text, reverse); - } - }, - - searchCurrentDoc: function(wrapSearch, text, reverse) - { - if (!text) - { - delete this.currentSearch; - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - { - row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text)); - } - else - { - if (this.editing) - { - this.currentSearch = new TextSearch(this.stylesheetEditor.box); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - scrollSelectionIntoView(this); - return true; - } - else - return false; - } - else - { - function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - } - } - - if (row) - { - this.document.defaultView.getSelection().selectAllChildren(row); - scrollIntoCenterView(row, this.panelNode); - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]); - return false; - } - }, - - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"), - Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal") - ]; - } -}); -/**/ -// ************************************************************************************************ - -function CSSElementPanel() {} - -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype, -{ - template: domplate( - { - cascadedTag: - DIV({"class": "a11yCSSView", role : 'presentation'}, - DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') }, - FOR("rule", "$rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ), - DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')}, - FOR("section", "$inherited", - H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' }, - SPAN({"class": "cssInheritLabel"}, "$inheritLabel"), - TAG(FirebugReps.Element.shortTag, {object: "$section.element"}) - ), - DIV({role : 'group'}, - FOR("rule", "$section.rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ) - ) - ) - ), - - ruleTag: - isIE ? - // IE needs the sourceLink first, otherwise it will be rendered outside the panel - DIV({"class": "cssElementRuleContainer"}, - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}), - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}) - ) - : - // other browsers need the sourceLink last, otherwise it will cause an extra space - // before the rule representation - DIV({"class": "cssElementRuleContainer"}, - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}), - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateCascadeView: function(element) - { - //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]); - var rules = [], sections = [], usedProps = {}; - this.getInheritedRules(element, sections, usedProps); - this.getElementRules(element, rules, usedProps); - - if (rules.length || sections.length) - { - var inheritLabel = "Inherited from"; // $STR("InheritedFrom"); - var result = this.template.cascadedTag.replace({rules: rules, inherited: sections, - inheritLabel: inheritLabel}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - else - { - var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - - // TODO: xxxpedro remove when there the external resource problem is fixed - if (externalStyleSheetURLs.length > 0) - externalStyleSheetWarning.tag.append({ - object: "The results here may be inaccurate because some " + - "stylesheets could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22" - }, this.panelNode); - }, - - getStylesheetURL: function(rule) - { - // if the parentStyleSheet.href is null, CSS std says its inline style. - // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location - if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href) - return rule.parentStyleSheet.href; - else - return this.selection.ownerDocument.location.href; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getInheritedRules: function(element, sections, usedProps) - { - var parent = element.parentNode; - if (parent && parent.nodeType == 1) - { - this.getInheritedRules(parent, sections, usedProps); - - var rules = []; - this.getElementRules(parent, rules, usedProps, true); - - if (rules.length) - sections.splice(0, 0, {element: parent, rules: rules}); - } - }, - - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - - // TODO: xxxpedro remove document specificity issue - //var eid = ElementCache(element); - //inspectedRules = ElementCSSRulesMap[eid]; - - inspectedRules = getElementCSSRules(element); - - if (inspectedRules) - { - for (var i = 0, length=inspectedRules.length; i < length; ++i) - { - var ruleId = inspectedRules[i]; - var ruleData = CSSRuleMap[ruleId]; - var rule = ruleData.rule; - - var ssid = ruleData.styleSheetId; - var parentStyleSheet = StyleSheetCache.get(ssid); - - var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href; // Null means inline - - var instance = null; - //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = false; - //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - // - //var line = domUtils.getRuleLine(rule); - var line; - - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: ruleData.selector, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /* - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - try - { - inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null; - } catch (exc) {} - - if (inspectedRules) - { - for (var i = 0; i < inspectedRules.Count(); ++i) - { - var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule); - - var href = rule.parentStyleSheet.href; // Null means inline - - var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - var line = domUtils.getRuleLine(rule); - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: rule.selectorText, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /**/ - markOverridenProps: function(props, usedProps, inheritMode) - { - for (var i = 0; i < props.length; ++i) - { - var prop = props[i]; - if ( usedProps.hasOwnProperty(prop.name) ) - { - var deadProps = usedProps[prop.name]; // all previous occurrences of this property - for (var j = 0; j < deadProps.length; ++j) - { - var deadProp = deadProps[j]; - if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important) - prop.overridden = true; // new occurrence overridden - else if (!prop.disabled) - deadProp.overridden = true; // previous occurrences overridden - } - } - else - usedProps[prop.name] = []; - - prop.wasInherited = inheritMode ? true : false; - usedProps[prop.name].push(prop); // all occurrences of a property seen so far, by name - } - }, - - getStyleProperties: function(element, rules, usedProps, inheritMode) - { - var props = this.parseCSSProps(element.style, inheritMode); - this.addOldProperties(this.context, getElementXPath(element), inheritMode, props); - - sortProperties(props); - this.markOverridenProps(props, usedProps, inheritMode); - - if (props.length) - rules.splice(0, 0, - {rule: element, id: getElementXPath(element), - selector: "element.style", props: props, inherited: inheritMode}); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "css", - title: "Style", - parentPanel: "HTML", - order: 0, - - initialize: function() - { - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - - //this.updateCascadeView(document.getElementsByTagName("h1")[0]); - //this.updateCascadeView(document.getElementById("build")); - - /* - this.onStateChange = bindFixed(this.contentStateCheck, this); - this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER); - this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE); - /**/ - }, - - ishow: function(state) - { - }, - - watchWindow: function(win) - { - if (domUtils) - { - // Normally these would not be required, but in order to update after the state is set - // using the options menu we need to monitor these global events as well - var doc = win.document; - ///addEvent(doc, "mouseover", this.onHoverChange); - ///addEvent(doc, "mousedown", this.onActiveChange); - } - }, - unwatchWindow: function(win) - { - var doc = win.document; - ///removeEvent(doc, "mouseover", this.onHoverChange); - ///removeEvent(doc, "mousedown", this.onActiveChange); - - if (isAncestor(this.stateChangeEl, doc)) - { - this.removeStateChangeHandlers(); - } - }, - - supportsObject: function(object) - { - return object instanceof Element ? 1 : 0; - }, - - updateView: function(element) - { - this.updateCascadeView(element); - if (domUtils) - { - this.contentState = safeGetContentState(element); - this.addStateChangeHandlers(element); - } - }, - - updateSelection: function(element) - { - if ( !instanceOf(element , "Element") ) // html supports SourceLink - return; - - if (sothinkInstalled) - { - FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode); - return; - } - - /* - if (!domUtils) - { - FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode); - return; - } - /**/ - - if (!element) - return; - - this.updateView(element); - }, - - updateOption: function(name, value) - { - if (name == "showUserAgentCSS" || name == "expandShorthandProps") - this.refresh(); - }, - - getOptionsMenuItems: function() - { - var ret = [ - {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS, - command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") }, - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") } - ]; - if (domUtils && this.selection) - { - var state = safeGetContentState(this.selection); - - ret.push("-"); - ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE, - command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)}); - ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER, - command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)}); - } - return ret; - }, - - updateContentState: function(state, remove) - { - domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state); - this.refresh(); - }, - - addStateChangeHandlers: function(el) - { - this.removeStateChangeHandlers(); - - /* - addEvent(el, "focus", this.onStateChange); - addEvent(el, "blur", this.onStateChange); - addEvent(el, "mouseup", this.onStateChange); - addEvent(el, "mousedown", this.onStateChange); - addEvent(el, "mouseover", this.onStateChange); - addEvent(el, "mouseout", this.onStateChange); - /**/ - - this.stateChangeEl = el; - }, - - removeStateChangeHandlers: function() - { - var sel = this.stateChangeEl; - if (sel) - { - /* - removeEvent(sel, "focus", this.onStateChange); - removeEvent(sel, "blur", this.onStateChange); - removeEvent(sel, "mouseup", this.onStateChange); - removeEvent(sel, "mousedown", this.onStateChange); - removeEvent(sel, "mouseover", this.onStateChange); - removeEvent(sel, "mouseout", this.onStateChange); - /**/ - } - }, - - contentStateCheck: function(state) - { - if (!state || this.contentState & state) - { - var timeoutRunner = bindFixed(function() - { - var newState = safeGetContentState(this.selection); - if (newState != this.contentState) - { - this.context.invalidatePanels(this.name); - } - }, this); - - // Delay exec until after the event has processed and the state has been updated - setTimeout(timeoutRunner, 0); - } - } -}); - -function safeGetContentState(selection) -{ - try - { - return domUtils.getContentState(selection); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.safeGetContentState; EXCEPTION", e); - } -} - -// ************************************************************************************************ - -function CSSComputedElementPanel() {} - -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype, -{ - template: domplate( - { - computedTag: - DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')}, - FOR("group", "$groups", - H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"}, - SPAN({"class": "cssInheritLabel"}, "$group.title") - ), - TABLE({width: "100%", role : 'group'}, - TBODY({role : 'presentation'}, - FOR("prop", "$group.props", - TR({"class": 'focusRow computedStyleRow', role : 'listitem'}, - TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"), - TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value") - ) - ) - ) - ) - ) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateComputedView: function(element) - { - var win = isIE ? - element.ownerDocument.parentWindow : - element.ownerDocument.defaultView; - - var style = isIE ? - element.currentStyle : - win.getComputedStyle(element, ""); - - var groups = []; - - for (var groupName in styleGroups) - { - // TODO: xxxpedro i18n $STR - //var title = $STR("StyleGroup-" + groupName); - var title = styleGroupTitles[groupName]; - var group = {title: title, props: []}; - groups.push(group); - - var props = styleGroups[groupName]; - for (var i = 0; i < props.length; ++i) - { - var propName = props[i]; - var propValue = style.getPropertyValue ? - style.getPropertyValue(propName) : - ""+style[toCamelCase(propName)]; - - if (propValue === undefined || propValue === null) - continue; - - propValue = stripUnits(rgbToHex(propValue)); - if (propValue) - group.props.push({name: propName, value: propValue}); - } - } - - var result = this.template.computedTag.replace({groups: groups}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "computed", - title: "Computed", - parentPanel: "HTML", - order: 1, - - updateView: function(element) - { - this.updateComputedView(element); - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Refresh", command: bind(this.refresh, this) } - ]; - } -}); - -// ************************************************************************************************ -// CSSEditor - -function CSSEditor(doc) -{ - this.initializeInline(doc); -} - -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var rule = Firebug.getRepObject(target); - var emptyProp = - { - // TODO: xxxpedro - uses charCode(255) to force the element being rendered, - // allowing webkit to get the correct position of the property name "span", - // when inserting a new CSS rule? - name: "", - value: "", - important: "" - }; - - if (insertWhere == "before") - return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target); - else - return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - // We need to check the value first in order to avoid a problem in IE8 - // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - if (!value) return; - - target.innerHTML = escapeForCss(value); - - var row = getAncestorByClass(target, "cssProp"); - if (hasClass(row, "disabledStyle")) - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(target); - - if (hasClass(target, "cssPropName")) - { - if (value && previousValue != value) // name of property has changed. - { - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - - if (propValue && propValue != "undefined") { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n"); - if (previousValue) - Firebug.CSSModule.removeProperty(rule, previousValue); - Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority); - } - } - else if (!value) // name of the property has been deleted, so remove the property. - Firebug.CSSModule.removeProperty(rule, previousValue); - } - else if (getAncestorByClass(target, "cssPropValue")) - { - var propName = getChildByClass(row, "cssPropName")[textContent]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - - if (FBTrace.DBG_CSS) - { - FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n"); - // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style); - } - - if (value && value != "null") - { - var parsedValue = parsePriority(value); - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - } - else if (previousValue && previousValue != "null") - Firebug.CSSModule.removeProperty(rule, propName); - } - - this.panel.markChange(this.panel.name == "stylesheet"); - }, - - advanceToNext: function(target, charCode) - { - if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName")) - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - if (hasClass(this.target, "cssPropName")) - return {start: 0, end: value.length-1}; - else - return parseCSSValue(value, offset); - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - if (hasClass(this.target, "cssPropName")) - { - return getCSSPropertyNames(); - } - else - { - var row = getAncestorByClass(this.target, "cssProp"); - var propName = getChildByClass(row, "cssPropName")[textContent]; - return getCSSKeywordsByProperty(propName); - } - } -}); - -//************************************************************************************************ -//CSSRuleEditor - -function CSSRuleEditor(doc) -{ - this.initializeInline(doc); - this.completeAsYouType = false; -} -CSSRuleEditor.uniquifier = 0; -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var emptyRule = { - selector: "", - id: "", - props: [], - isSelectorEditable: true - }; - - if (insertWhere == "before") - return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target); - else - return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue + "'", target); - - target.innerHTML = escapeForCss(value); - - if (value === previousValue) return; - - var row = getAncestorByClass(target, "cssRule"); - var styleSheet = this.panel.location; - styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet; - - var cssRules = styleSheet.cssRules; - var rule = Firebug.getRepObject(target), oldRule = rule; - var ruleIndex = cssRules.length; - if (rule || Firebug.getRepObject(row.nextSibling)) - { - var searchRule = rule || Firebug.getRepObject(row.nextSibling); - for (ruleIndex=0; ruleIndex b.name ? 1 : -1; - }); -} - -function getTopmostRuleLine(panelNode) -{ - for (var child = panelNode.firstChild; child; child = child.nextSibling) - { - if (child.offsetTop+child.offsetHeight > panelNode.scrollTop) - { - var rule = child.repObject; - if (rule) - return { - line: domUtils.getRuleLine(rule), - offset: panelNode.scrollTop-child.offsetTop - }; - } - } - return 0; -} - -function getStyleSheetCSS(sheet, context) -{ - if (sheet.ownerNode instanceof HTMLStyleElement) - return sheet.ownerNode.innerHTML; - else - return context.sourceCache.load(sheet.href).join(""); -} - -function getStyleSheetOwnerNode(sheet) { - for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet); - - return sheet.ownerNode; -} - -function scrollSelectionIntoView(panel) -{ - var selCon = getSelectionController(panel); - selCon.scrollSelectionIntoView( - nsISelectionController.SELECTION_NORMAL, - nsISelectionController.SELECTION_FOCUS_REGION, true); -} - -function getSelectionController(panel) -{ - var browser = Firebug.chrome.getPanelBrowser(panel); - return browser.docShell.QueryInterface(nsIInterfaceRequestor) - .getInterface(nsISelectionDisplay) - .QueryInterface(nsISelectionController); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Script Module - -Firebug.Script = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null; - }, - - selectSourceCode: function(index) - { - this.getPanel().selectSourceCode(index); - } -}); - -Firebug.registerModule(Firebug.Script); - - -// ************************************************************************************************ -// Script Panel - -function ScriptPanel(){}; - -ScriptPanel.prototype = extend(Firebug.Panel, -{ - name: "Script", - title: "Script", - - selectIndex: 0, // index of the current selectNode's option - sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script") - - options: { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var scripts = doc.getElementsByTagName("script"); - var selectNode = this.selectNode = createElement("select"); - - for(var i=0, script; script=scripts[i]; i++) - { - // Don't show Firebug Lite source code in the list of options - if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) - continue; - - var fileName = getFileName(script.src) || getFileName(doc.location.href); - var option = createElement("option", {value:i}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }; - - this.toolButtonsNode.appendChild(selectNode); - }, - - initialize: function() - { - // we must render the code first, so the persistent state can be restore - this.selectSourceCode(this.selectIndex); - - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.selectNode, "change", this.onChangeSelect); - }, - - shutdown: function() - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - detach: function(oldChrome, newChrome) - { - Firebug.Panel.detach.apply(this, arguments); - - var oldPanel = oldChrome.getPanel("Script"); - var index = oldPanel.selectIndex; - - this.selectNode.selectedIndex = index; - this.selectIndex = index; - this.sourceIndex = -1; - }, - - onChangeSelect: function(event) - { - var select = this.selectNode; - - this.selectIndex = select.selectedIndex; - - var option = select.options[select.selectedIndex]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - selectSourceCode: function(index) - { - var select = this.selectNode; - select.selectedIndex = index; - - var option = select.options[index]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - renderSourceCode: function(index) - { - if (this.sourceIndex != index) - { - var renderProcess = function renderProcess(src) - { - var html = [], - hl = 0; - - src = isIE && !isExternal ? - src+'\n' : // IE put an extra line when reading source of local resources - '\n'+src; - - // find the number of lines of code - src = src.replace(/\n\r|\r\n/g, "\n"); - var match = src.match(/[\n]/g); - var lines=match ? match.length : 0; - - // render the full source code + line numbers html - html[hl++] = '
';
-                html[hl++] = escapeHTML(src);
-                html[hl++] = '
'; - - // render the line number divs - for(var l=1, lines; l<=lines; l++) - { - html[hl++] = '
'; - html[hl++] = l; - html[hl++] = '
'; - } - - html[hl++] = '
'; - - updatePanel(html); - }; - - var updatePanel = function(html) - { - self.panelNode.innerHTML = html.join(""); - - // IE needs this timeout, otherwise the panel won't scroll - setTimeout(function(){ - self.synchronizeUI(); - },0); - }; - - var onFailure = function() - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode); - }; - - var self = this; - - var doc = Firebug.browser.document; - var script = doc.getElementsByTagName("script")[index]; - var url = getScriptURL(script); - var isExternal = url && url != doc.location.href; - - try - { - if (isExternal) - { - Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure}); - } - else - { - var src = script.innerHTML; - renderProcess(src); - } - } - catch(e) - { - onFailure(); - } - - this.sourceIndex = index; - } - } -}); - -Firebug.registerPanel(ScriptPanel); - - -// ************************************************************************************************ - - -var getScriptURL = function getScriptURL(script) -{ - var reFile = /([^\/\?#]+)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = Firebug.browser.document; - - var file = reFile.exec(script.src); - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(doc.location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - return path + fileName; - } -}; - -var getFileName = function getFileName(path) -{ - if (!path) return ""; - - var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/); - - return match && match[0] || path; -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var ElementCache = Firebug.Lite.Cache.Element; - -var insertSliceSize = 18; -var insertInterval = 40; - -var ignoreVars = -{ - "__firebug__": 1, - "eval": 1, - - // We are forced to ignore Java-related variables, because - // trying to access them causes browser freeze - "java": 1, - "sun": 1, - "Packages": 1, - "JavaArray": 1, - "JavaMember": 1, - "JavaObject": 1, - "JavaClass": 1, - "JavaPackage": 1, - "_firebug": 1, - "_FirebugConsole": 1, - "_FirebugCommandLine": 1 -}; - -if (Firebug.ignoreFirebugElements) - ignoreVars[Firebug.Lite.Cache.ID] = 1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var memberPanelRep = - isIE6 ? - {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"} - : - {"class": "memberLabel $member.type\\Label"}; - -var RowTag = - TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation', - level: "$member.level"}, - TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'}, - A(memberPanelRep, - SPAN({}, "$member.name") - ) - ), - TD({"class": "memberValueCell", role : 'presentation'}, - TAG("$member.tag", {object: "$member.value"}) - ) - ); - -var WatchRowTag = - TR({"class": "watchNewRow", level: 0}, - TD({"class": "watchEditCell", colspan: 2}, - DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0', - 'aria-label' : $STR('press enter to add new watch expression')}, - $STR("NewWatch") - ) - ) - ); - -var SizerRow = - TR({role : 'presentation'}, - TD({width: "30%"}), - TD({width: "70%"}) - ); - -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable"; -var DirTablePlate = domplate(Firebug.Rep, -{ - tag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"}, - TBODY({role: 'presentation'}, - SizerRow, - FOR("member", "$object|memberIterator", RowTag) - ) - ), - - watchTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow, - WatchRowTag - ) - ), - - tableTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow - ) - ), - - rowTag: - FOR("member", "$members", RowTag), - - memberIterator: function(object, level) - { - return getMembers(object, level); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - if (!isLeftClick(event)) - return; - - var target = event.target || event.srcElement; - - var row = getAncestorByClass(target, "memberRow"); - var label = getAncestorByClass(target, "memberLabel"); - if (label && hasClass(row, "hasChildren")) - { - var row = label.parentNode.parentNode; - this.toggleRow(row); - } - else - { - var object = Firebug.getRepObject(target); - if (typeof(object) == "function") - { - Firebug.chrome.select(object, "script"); - cancelEvent(event); - } - else if (event.detail == 2 && !object) - { - var panel = row.parentNode.parentNode.domPanel; - if (panel) - { - var rowValue = panel.getRowPropertyValue(row); - if (typeof(rowValue) == "boolean") - panel.setPropertyValue(row, !rowValue); - else - panel.editProperty(row); - - cancelEvent(event); - } - } - } - - return false; - }, - - toggleRow: function(row) - { - var level = parseInt(row.getAttribute("level")); - var toggles = row.parentNode.parentNode.toggles; - - if (hasClass(row, "opened")) - { - removeClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Remove the path from the toggle tree - for (var i = 0; i < path.length; ++i) - { - if (i == path.length-1) - delete toggles[path[i]]; - else - toggles = toggles[path[i]]; - } - } - - var rowTag = this.rowTag; - var tbody = row.parentNode; - - setTimeout(function() - { - for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling) - { - if (parseInt(firstRow.getAttribute("level")) <= level) - break; - - tbody.removeChild(firstRow); - } - }, row.insertTimeout ? row.insertTimeout : 0); - } - else - { - setClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Mark the path in the toggle tree - for (var i = 0; i < path.length; ++i) - { - var name = path[i]; - if (toggles.hasOwnProperty(name)) - toggles = toggles[name]; - else - toggles = toggles[name] = {}; - } - } - - var value = row.lastChild.firstChild.repObject; - var members = getMembers(value, level+1); - - var rowTag = this.rowTag; - var lastRow = row; - - var delay = 0; - //var setSize = members.length; - //var rowCount = 1; - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - setTimeout(function() - { - if (lastRow.parentNode) - { - var result = rowTag.insertRows({members: slice}, lastRow); - lastRow = result[1]; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]); - //rowCount += insertSliceSize; - } - if (isLast) - row.removeAttribute("insertTimeout"); - }, delay); - } - - delay += insertInterval; - } - - row.insertTimeout = delay; - } - } -}); - - - -// ************************************************************************************************ - -Firebug.DOMBasePanel = function() {} - -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel, -{ - tag: DirTablePlate.tableTag, - - getRealObject: function(object) - { - // TODO: Move this to some global location - // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc. - // TODO: We might be able to make this check more authoritative with QueryInterface. - if (!object) return object; - if (object.wrappedJSObject) return object.wrappedJSObject; - return object; - }, - - rebuild: function(update, scrollTop) - { - //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]); - var members = getMembers(this.selection); - expandMembers(members, this.toggles, 0, 0); - - this.showMembers(members, update, scrollTop); - - //TODO: xxxpedro statusbar - if (!this.parentPanel) - updateStatusBar(this); - }, - - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!tbody.lastChild) return; - - result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //rowCount += insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop) - panelNode.scrollTop = priorScrollTop; - - - // enable to measure rendering performance - //if (isLast) alert(new Date().getTime() - renderStart + "ms"); - - - }, delay)); - - delay += insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - - /* - // new - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - var _insertSliceSize = insertSliceSize; - var _insertInterval = insertInterval; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - var lastSkip = renderStart, now; - - while (members.length) - { - with({slice: members.splice(0, _insertSliceSize), isLast: !members.length}) - { - var _tbody = tbody; - var _rowTag = rowTag; - var _panelNode = panelNode; - var _priorScrollTop = priorScrollTop; - - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!_tbody.lastChild) return; - - result = _rowTag.insertRows({members: slice}, _tbody.lastChild); - - //rowCount += _insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop) - _panelNode.scrollTop = _priorScrollTop; - - - // enable to measure rendering performance - //alert("gap: " + (new Date().getTime() - lastSkip)); - //lastSkip = new Date().getTime(); - - //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms"); - - }, delay)); - - delay += _insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - /**/ - - showEmptyMembers: function() - { - FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode); - }, - - findPathObject: function(object) - { - var pathIndex = -1; - for (var i = 0; i < this.objectPath.length; ++i) - { - // IE needs === instead of == or otherwise some objects will - // be considered equal to different objects, returning the - // wrong index of the objectPath array - if (this.getPathObject(i) === object) - return i; - } - - return -1; - }, - - getPathObject: function(index) - { - var object = this.objectPath[index]; - - if (object instanceof Property) - return object.getObject(); - else - return object; - }, - - getRowObject: function(row) - { - var object = getRowOwnerObject(row); - return object ? object : this.selection; - }, - - getRowPropertyValue: function(row) - { - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object) - { - var propName = getRowName(row); - - if (object instanceof jsdIStackFrame) - return Firebug.Debugger.evaluate(propName, this.context); - else - return object[propName]; - } - }, - /* - copyProperty: function(row) - { - var value = this.getRowPropertyValue(row); - copyToClipboard(value); - }, - - editProperty: function(row, editValue) - { - if (hasClass(row, "watchNewRow")) - { - if (this.context.stopped) - Firebug.Editor.startEditing(row, ""); - else if (Firebug.Console.isAlwaysEnabled()) // not stopped in debugger, need command line - { - if (Firebug.CommandLine.onCommandLineFocus()) - Firebug.Editor.startEditing(row, ""); - else - row.innerHTML = $STR("warning.Command line blocked?"); - } - else - row.innerHTML = $STR("warning.Console must be enabled"); - } - else if (hasClass(row, "watchRow")) - Firebug.Editor.startEditing(row, getRowName(row)); - else - { - var object = this.getRowObject(row); - this.context.thisValue = object; - - if (!editValue) - { - var propValue = this.getRowPropertyValue(row); - - var type = typeof(propValue); - if (type == "undefined" || type == "number" || type == "boolean") - editValue = propValue; - else if (type == "string") - editValue = "\"" + escapeJS(propValue) + "\""; - else if (propValue == null) - editValue = "null"; - else if (object instanceof Window || object instanceof jsdIStackFrame) - editValue = getRowName(row); - else - editValue = "this." + getRowName(row); - } - - - Firebug.Editor.startEditing(row, editValue); - } - }, - - deleteProperty: function(row) - { - if (hasClass(row, "watchRow")) - this.deleteWatch(row); - else - { - var object = getRowOwnerObject(row); - if (!object) - object = this.selection; - object = this.getRealObject(object); - - if (object) - { - var name = getRowName(row); - try - { - delete object[name]; - } - catch (exc) - { - return; - } - - this.rebuild(true); - this.markChange(); - } - } - }, - - setPropertyValue: function(row, value) // value must be string - { - if(FBTrace.DBG_DOM) - { - FBTrace.sysout("row: "+row); - FBTrace.sysout("value: "+value+" type "+typeof(value), value); - } - - var name = getRowName(row); - if (name == "this") - return; - - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object && !(object instanceof jsdIStackFrame)) - { - // unwrappedJSObject.property = unwrappedJSObject - Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(), - function success(result, context) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result); - object[name] = result; - }, - function failed(exc, context) - { - try - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc); - // If the value doesn't parse, then just store it as a string. Some users will - // not realize they're supposed to enter a JavaScript expression and just type - // literal text - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - ); - } - else if (this.context.stopped) - { - try - { - Firebug.CommandLine.evaluate(name+"="+value, this.context); - } - catch (exc) - { - try - { - // See catch block above... - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - } - - this.rebuild(true); - this.markChange(); - }, - - highlightRow: function(row) - { - if (this.highlightedRow) - cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context); - - this.highlightedRow = row; - - if (row) - setClassTimed(row, "jumpHighlight", this.context); - },/**/ - - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - create: function() - { - // TODO: xxxpedro - this.context = Firebug.browser; - - this.objectPath = []; - this.propertyPath = []; - this.viewPath = []; - this.pathIndex = -1; - this.toggles = {}; - - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.panelNode, "mousemove", this.onMouseMove); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - /* - destroy: function(state) - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - - if (this.pathIndex) - state.pathIndex = this.pathIndex; - if (this.viewPath) - state.viewPath = this.viewPath; - if (this.propertyPath) - state.propertyPath = this.propertyPath; - - if (this.propertyPath.length > 0 && !this.propertyPath[1]) - state.firstSelection = persistObject(this.getPathObject(1), this.context); - - Firebug.Panel.destroy.apply(this, arguments); - }, - /**/ - - ishow: function(state) - { - if (this.context.loaded && !this.selection) - { - if (!state) - { - this.select(null); - return; - } - if (state.viewPath) - this.viewPath = state.viewPath; - if (state.propertyPath) - this.propertyPath = state.propertyPath; - - var defaultObject = this.getDefaultSelection(this.context); - var selectObject = defaultObject; - - if (state.firstSelection) - { - var restored = state.firstSelection(this.context); - if (restored) - { - selectObject = restored; - this.objectPath = [defaultObject, restored]; - } - else - this.objectPath = [defaultObject]; - } - else - this.objectPath = [defaultObject]; - - if (this.propertyPath.length > 1) - { - for (var i = 1; i < this.propertyPath.length; ++i) - { - var name = this.propertyPath[i]; - if (!name) - continue; - - var object = selectObject; - try - { - selectObject = object[name]; - } - catch (exc) - { - selectObject = null; - } - - if (selectObject) - { - this.objectPath.push(new Property(object, name)); - } - else - { - // If we can't access a property, just stop - this.viewPath.splice(i); - this.propertyPath.splice(i); - this.objectPath.splice(i); - selectObject = this.getPathObject(this.objectPath.length-1); - break; - } - } - } - - var selection = state.pathIndex <= this.objectPath.length-1 - ? this.getPathObject(state.pathIndex) - : this.getPathObject(this.objectPath.length-1); - - this.select(selection); - } - }, - /* - hide: function() - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - }, - /**/ - - supportsObject: function(object) - { - if (object == null) - return 1000; - - if (typeof(object) == "undefined") - return 1000; - else if (object instanceof SourceLink) - return 0; - else - return 1; // just agree to support everything but not agressively. - }, - - refresh: function() - { - this.rebuild(true); - }, - - updateSelection: function(object) - { - var previousIndex = this.pathIndex; - var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex]; - - var newPath = this.pathToAppend; - delete this.pathToAppend; - - var pathIndex = this.findPathObject(object); - if (newPath || pathIndex == -1) - { - this.toggles = {}; - - if (newPath) - { - // Remove everything after the point where we are inserting, so we - // essentially replace it with the new path - if (previousView) - { - if (this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - var start = previousIndex + 1, - // Opera needs the length argument in splice(), otherwise - // it will consider that only one element should be removed - length = this.objectPath.length - start; - - this.objectPath.splice(start, length); - this.propertyPath.splice(start, length); - this.viewPath.splice(start, length); - } - - var value = this.getPathObject(previousIndex); - if (!value) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n"); - return; - } - - for (var i = 0, length = newPath.length; i < length; ++i) - { - var name = newPath[i]; - var object = value; - try - { - value = value[name]; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n"); - return; - } - - ++this.pathIndex; - this.objectPath.push(new Property(object, name)); - this.propertyPath.push(name); - this.viewPath.push({toggles: this.toggles, scrollTop: 0}); - } - } - else - { - this.toggles = {}; - - var win = Firebug.browser.window; - //var win = this.context.getGlobalScope(); - if (object === win) - { - this.pathIndex = 0; - this.objectPath = [win]; - this.propertyPath = [null]; - this.viewPath = [{toggles: this.toggles, scrollTop: 0}]; - } - else - { - this.pathIndex = 1; - this.objectPath = [win, object]; - this.propertyPath = [null, null]; - this.viewPath = [ - {toggles: {}, scrollTop: 0}, - {toggles: this.toggles, scrollTop: 0} - ]; - } - } - - this.panelNode.scrollTop = 0; - this.rebuild(); - } - else - { - this.pathIndex = pathIndex; - - var view = this.viewPath[pathIndex]; - this.toggles = view.toggles; - - // Persist the current scroll location - if (previousView && this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - this.rebuild(false, view.scrollTop); - } - }, - - getObjectPath: function(object) - { - return this.objectPath; - }, - - getDefaultSelection: function() - { - return Firebug.browser.window; - //return this.context.getGlobalScope(); - }/*, - - updateOption: function(name, value) - { - const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1, - showDOMFuncs: 1, showDOMConstants: 1}; - if ( optionMap.hasOwnProperty(name) ) - this.rebuild(true); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowUserProps", "showUserProps"), - optionMenu("ShowUserFuncs", "showUserFuncs"), - optionMenu("ShowDOMProps", "showDOMProps"), - optionMenu("ShowDOMFuncs", "showDOMFuncs"), - optionMenu("ShowDOMConstants", "showDOMConstants"), - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ]; - }, - - getContextMenuItems: function(object, target) - { - var row = getAncestorByClass(target, "memberRow"); - - var items = []; - - if (row) - { - var rowName = getRowName(row); - var rowObject = this.getRowObject(row); - var rowValue = this.getRowPropertyValue(row); - - var isWatch = hasClass(row, "watchRow"); - var isStackFrame = rowObject instanceof jsdIStackFrame; - - if (typeof(rowValue) == "string" || typeof(rowValue) == "number") - { - // Functions already have a copy item in their context menu - items.push( - "-", - {label: "CopyValue", - command: bindFixed(this.copyProperty, this, row) } - ); - } - - items.push( - "-", - {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"), - command: bindFixed(this.editProperty, this, row) } - ); - - if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName))) - { - items.push( - {label: isWatch ? "DeleteWatch" : "DeleteProperty", - command: bindFixed(this.deleteProperty, this, row) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ); - - return items; - }, - - getEditor: function(target, value) - { - if (!this.editor) - this.editor = new DOMEditor(this.document); - - return this.editor; - }/**/ -}); - -// ************************************************************************************************ - -// TODO: xxxpedro statusbar -var updateStatusBar = function(panel) -{ - var path = panel.propertyPath; - var index = panel.pathIndex; - - var r = []; - - for (var i=0, l=path.length; i'); - r.push(i==0 ? "window" : path[i] || "Object"); - r.push('
'); - - if(i < l-1) - r.push('>'); - } - panel.statusBarNode.innerHTML = r.join(""); -}; - - -var DOMMainPanel = Firebug.DOMPanel = function () {}; - -Firebug.DOMPanel.DirTable = DirTablePlate; - -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - onClickStatusBar: function(event) - { - var target = event.srcElement || event.target; - var element = getAncestorByClass(target, "fbHover"); - - if(element) - { - var pathIndex = element.getAttribute("pathIndex"); - - if(pathIndex) - { - this.select(this.getPathObject(pathIndex)); - } - } - }, - - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - this.select(target.repObject, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOM", - title: "DOM", - searchable: true, - statusSeparator: ">", - - options: { - hasToolButtons: true, - hasStatusBar: true - }, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - - //TODO: xxxpedro - this.onClickStatusBar = bind(this.onClickStatusBar, this); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(oldPanelNode) - { - //this.panelNode.addEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']); - - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro dom - this.ishow(); - - //TODO: xxxpedro - addEvent(this.statusBarNode, "click", this.onClickStatusBar); - }, - - shutdown: function() - { - //this.panelNode.removeEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']); - - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }/*, - - search: function(text, reverse) - { - if (!text) - { - delete this.currentSearch; - this.highlightRow(null); - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive); - else - { - function findRow(node) { return getAncestorByClass(node, "memberRow"); } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive); - } - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - - scrollIntoCenterView(row, this.panelNode); - - this.highlightRow(row); - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]); - return false; - } - }/**/ -}); - -Firebug.registerPanel(DOMMainPanel); - - -// ************************************************************************************************ - - - -// ************************************************************************************************ -// Local Helpers - -var getMembers = function getMembers(object, level) // we expect object to be user-level object wrapped in security blanket -{ - if (!level) - level = 0; - - var ordinals = [], userProps = [], userClasses = [], userFuncs = [], - domProps = [], domFuncs = [], domConstants = []; - - try - { - var domMembers = getDOMMembers(object); - //var domMembers = {}; // TODO: xxxpedro - //var domConstantMap = {}; // TODO: xxxpedro - - if (object.wrappedJSObject) - var insecureObject = object.wrappedJSObject; - else - var insecureObject = object; - - // IE function prototype is not listed in (for..in) - if (isIE && isFunction(object)) - addMember("user", userProps, "prototype", object.prototype, level); - - for (var name in insecureObject) // enumeration is safe - { - if (ignoreVars[name] == 1) // javascript.options.strict says ignoreVars is undefined. - continue; - - var val; - try - { - val = insecureObject[name]; // getter is safe - } - catch (exc) - { - // Sometimes we get exceptions trying to access certain members - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers cannot access "+name, exc); - } - - var ordinal = parseInt(name); - if (ordinal || ordinal == 0) - { - addMember("ordinal", ordinals, name, val, level); - } - else if (isFunction(val)) - { - if (isClassFunction(val) && !(name in domMembers)) - addMember("userClass", userClasses, name, val, level); - else if (name in domMembers) - addMember("domFunction", domFuncs, name, val, level, domMembers[name]); - else - addMember("userFunction", userFuncs, name, val, level); - } - else - { - //TODO: xxxpedro - /* - var getterFunction = insecureObject.__lookupGetter__(name), - setterFunction = insecureObject.__lookupSetter__(name), - prefix = ""; - - if(getterFunction && !setterFunction) - prefix = "get "; - /**/ - - var prefix = ""; - - if (name in domMembers && !(name in domConstantMap)) - addMember("dom", domProps, (prefix+name), val, level, domMembers[name]); - else if (name in domConstantMap) - addMember("dom", domConstants, (prefix+name), val, level); - else - addMember("user", userProps, (prefix+name), val, level); - } - } - } - catch (exc) - { - // Sometimes we get exceptions just from trying to iterate the members - // of certain objects, like StorageList, but don't let that gum up the works - throw exc; - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers FAILS: ", exc); - //throw exc; - } - - function sortName(a, b) { return a.name > b.name ? 1 : -1; } - function sortOrder(a, b) { return a.order > b.order ? 1 : -1; } - - var members = []; - - members.push.apply(members, ordinals); - - Firebug.showUserProps = true; // TODO: xxxpedro - Firebug.showUserFuncs = true; // TODO: xxxpedro - Firebug.showDOMProps = true; - Firebug.showDOMFuncs = true; - Firebug.showDOMConstants = true; - - if (Firebug.showUserProps) - { - userProps.sort(sortName); - members.push.apply(members, userProps); - } - - if (Firebug.showUserFuncs) - { - userClasses.sort(sortName); - members.push.apply(members, userClasses); - - userFuncs.sort(sortName); - members.push.apply(members, userFuncs); - } - - if (Firebug.showDOMProps) - { - domProps.sort(sortName); - members.push.apply(members, domProps); - } - - if (Firebug.showDOMFuncs) - { - domFuncs.sort(sortName); - members.push.apply(members, domFuncs); - } - - if (Firebug.showDOMConstants) - members.push.apply(members, domConstants); - - return members; -} - -function expandMembers(members, toggles, offset, level) // recursion starts with offset=0, level=0 -{ - var expanded = 0; - for (var i = offset; i < members.length; ++i) - { - var member = members[i]; - if (member.level > level) - break; - - if ( toggles.hasOwnProperty(member.name) ) - { - member.open = "opened"; // member.level <= level && member.name in toggles. - - var newMembers = getMembers(member.value, level+1); // sets newMembers.level to level+1 - - var args = [i+1, 0]; - args.push.apply(args, newMembers); - members.splice.apply(members, args); - - /* - if (FBTrace.DBG_DOM) - { - FBTrace.sysout("expandMembers member.name", member.name); - FBTrace.sysout("expandMembers toggles", toggles); - FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]); - FBTrace.sysout("dom.expandedMembers level: "+level+" member", member); - } - /**/ - - expanded += newMembers.length; - i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1); - } - } - - return expanded; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -function isClassFunction(fn) -{ - try - { - for (var name in fn.prototype) - return true; - } catch (exc) {} - return false; -} - -var hasProperties = function hasProperties(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - - // IE function prototype is not listed in (for..in) - if (isFunction(ob)) return true; - - return false; -} - -FBL.ErrorCopy = function(message) -{ - this.message = message; -}; - -var addMember = function addMember(type, props, name, value, level, order) -{ - var rep = Firebug.getRep(value); // do this first in case a call to instanceof reveals contents - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var ErrorCopy = function(){}; //TODO: xxxpedro - - var valueType = typeof(value); - var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) && - (isFunction(value) || (valueType == "object" && value != null) - || (valueType == "string" && value.length > Firebug.stringCropLength)); - - props.push({ - name: name, - value: value, - type: type, - rowClass: "memberRow-"+type, - open: "", - order: order, - level: level, - indent: level*16, - hasChildren: hasChildren, - tag: tag - }); -} - -var getWatchRowIndex = function getWatchRowIndex(row) -{ - var index = -1; - for (; row && hasClass(row, "watchRow"); row = row.previousSibling) - ++index; - return index; -} - -var getRowName = function getRowName(row) -{ - var node = row.firstChild; - return node.textContent ? node.textContent : node.innerText; -} - -var getRowValue = function getRowValue(row) -{ - return row.lastChild.firstChild.repObject; -} - -var getRowOwnerObject = function getRowOwnerObject(row) -{ - var parentRow = getParentRow(row); - if (parentRow) - return getRowValue(parentRow); -} - -var getParentRow = function getParentRow(row) -{ - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - return row; - } -} - -var getPath = function getPath(row) -{ - var name = getRowName(row); - var path = [name]; - - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - { - var name = getRowName(row); - path.splice(0, 0, name); - - --level; - } - } - - return path; -} - -// ************************************************************************************************ - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// DOM Module - -Firebug.DOM = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null; - } -}); - -Firebug.registerModule(Firebug.DOM); - - -// ************************************************************************************************ -// DOM Panel - -var lastHighlightedObject; - -function DOMSidePanel(){}; - -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - var object = target.repObject; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - /* - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - object = object ? object.repObject : null; - - if(!object) return; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - /**/ - - - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOMSidePanel", - parentPanel: "HTML", - title: "DOM", - - options: { - hasToolButtons: true - }, - - isInitialized: false, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - }, - - initialize: function(){ - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }, - - reattach: function(oldChrome) - { - //this.isInitialized = oldChrome.getPanel("DOM").isInitialized; - this.toggles = oldChrome.getPanel("DOMSidePanel").toggles; - } - -}); - -Firebug.registerPanel(DOMSidePanel); - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.FBTrace = {}; - -(function() { -// ************************************************************************************************ - -var traceOptions = { - DBG_TIMESTAMP: 1, - DBG_INITIALIZE: 1, - DBG_CHROME: 1, - DBG_ERRORS: 1, - DBG_DISPATCH: 1, - DBG_CSS: 1 -}; - -this.module = null; - -this.initialize = function() -{ - if (!this.messageQueue) - this.messageQueue = []; - - for (var name in traceOptions) - this[name] = traceOptions[name]; -}; - -// ************************************************************************************************ -// FBTrace API - -this.sysout = function() -{ - return this.logFormatted(arguments, ""); -}; - -this.dumpProperties = function(title, object) -{ - return this.logFormatted("dumpProperties() not supported.", "warning"); -}; - -this.dumpStack = function() -{ - return this.logFormatted("dumpStack() not supported.", "warning"); -}; - -this.flush = function(module) -{ - this.module = module; - - var queue = this.messageQueue; - this.messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - this.writeMessage(queue[i][0], queue[i][1], queue[i][2]); -}; - -this.getPanel = function() -{ - return this.module ? this.module.getPanel() : null; -}; - -//************************************************************************************************* - -this.logFormatted = function(objects, className) -{ - var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : []; - var length = objects.length; - - for (var i = 0; i < length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - - if (i == 0) - { - html.push(""); - appendText(object, html); - html.push(""); - } - else - appendText(object, html); - } - - return this.logRow(html, className); -}; - -this.logRow = function(message, className) -{ - var panel = this.getPanel(); - - if (panel && panel.panelNode) - this.writeMessage(message, className); - else - { - this.messageQueue.push([message, className]); - } - - return this.LOG_COMMAND; -}; - -this.writeMessage = function(message, className) -{ - var container = this.getPanel().containerNode; - var isScrolledToBottom = - container.scrollTop + container.offsetHeight >= container.scrollHeight; - - this.writeRow.call(this, message, className); - - if (isScrolledToBottom) - container.scrollTop = container.scrollHeight - container.offsetHeight; -}; - -this.appendRow = function(row) -{ - var container = this.getPanel().panelNode; - container.appendChild(row); -}; - -this.writeRow = function(message, className) -{ - var row = this.getPanel().panelNode.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - this.appendRow(row); -}; - -//************************************************************************************************* - -function appendText(object, html) -{ - html.push(escapeHTML(objectToString(object))); -}; - -function getTimestamp() -{ - var now = new Date(); - var ms = "" + (now.getMilliseconds() / 1000).toFixed(3); - ms = ms.substr(2); - - return now.toLocaleTimeString() + "." + ms; -}; - -//************************************************************************************************* - -var HTMLtoEntity = -{ - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ -}; - -function replaceChars(ch) -{ - return HTMLtoEntity[ch]; -}; - -function escapeHTML(value) -{ - return (value+"").replace(/[<>&"']/g, replaceChars); -}; - -//************************************************************************************************* - -function objectToString(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -}).apply(FBL.FBTrace); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// If application isn't in trace mode, the FBTrace panel won't be loaded -if (!Env.Options.enableTrace) return; - -// ************************************************************************************************ -// FBTrace Module - -Firebug.Trace = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null; - }, - - clear: function() - { - this.getPanel().panelNode.innerHTML = ""; - } -}); - -Firebug.registerModule(Firebug.Trace); - - -// ************************************************************************************************ -// FBTrace Panel - -function TracePanel(){}; - -TracePanel.prototype = extend(Firebug.Panel, -{ - name: "Trace", - title: "Trace", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear FBTrace logs", - owner: Firebug.Trace, - onClick: Firebug.Trace.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - } - -}); - -Firebug.registerPanel(TracePanel); - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; - -var parentPanelMap = {}; - - -var registerModule = Firebug.registerModule; -var registerPanel = Firebug.registerPanel; - -// ************************************************************************************************ -append(Firebug, -{ - extend: function(fn) - { - if (Firebug.chrome && Firebug.chrome.addPanel) - { - var namespace = ns(fn); - fn.call(namespace, FBL); - } - else - { - setTimeout(function(){Firebug.extend(fn);},100); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - registerModule.apply(Firebug, arguments); - - modules.push.apply(modules, arguments); - - dispatch(modules, "initialize", []); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - registerPanel.apply(Firebug, arguments); - - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - // TODO: xxxpedro investigate why Dev Panel throws an error - if (panelType.prototype.name == "Dev") continue; - - panelTypeMap[panelType.prototype.name] = arguments[i]; - - var parentPanelName = panelType.prototype.parentPanel; - if (parentPanelName) - { - parentPanelMap[parentPanelName] = 1; - } - else - { - var panelName = panelType.prototype.name; - var chrome = Firebug.chrome; - chrome.addPanel(panelName); - - // tab click handler - var onTabClick = function onTabClick() - { - chrome.selectPanel(panelName); - return false; - }; - - chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]); - } - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - } - -}); - - - - -// ************************************************************************************************ -}}); - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -FirebugChrome.Skin = -{ - CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) no-repeat !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}', - HTML: '
 
 
>>>
2 errors' -}; - -// ************************************************************************************************ -}}); - -// ************************************************************************************************ -FBL.initialize(); -// ************************************************************************************************ - -})(); \ No newline at end of file diff --git a/branches/firebug1.3/build/firebug-lite-debug.js b/branches/firebug1.3/build/firebug-lite-debug.js deleted file mode 100644 index acd4a964..00000000 --- a/branches/firebug1.3/build/firebug-lite-debug.js +++ /dev/null @@ -1,29624 +0,0 @@ -(function(){ - -/*!************************************************************* - * - * Firebug Lite 1.3.2 - * - * Copyright (c) 2007, Parakey Inc. - * Released under BSD license. - * More information: http://getfirebug.com/firebuglite - * - **************************************************************/ - -/*! - * CSS selectors powered by: - * - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -/** @namespace describe lib */ -var FBL = {}; - -/** @name ns @namespace */ - -( /** @scope ns-lib @this FBL */ function() { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -var productionDir = "http://getfirebug.com/releases/lite/"; -var bookmarkletVersion = 4; - -// ************************************************************************************************ - -var reNotWhitespace = /[^\s]/; -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/; - -// Globals -this.reJavascript = /\s*javascript:\s*(.*)/; -this.reChrome = /chrome:\/\/([^\/]*)\//; -this.reFile = /file:\/\/([^\/]*)\//; - - -// ************************************************************************************************ -// properties - -var userAgent = navigator.userAgent.toLowerCase(); -this.isFirefox = /firefox/.test(userAgent); -this.isOpera = /opera/.test(userAgent); -this.isSafari = /webkit/.test(userAgent); -this.isIE = /msie/.test(userAgent) && !/opera/.test(userAgent); -this.isIE6 = /msie 6/i.test(navigator.appVersion); -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; -this.isIElt8 = this.isIE && (this.browserVersion-0 < 8); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.NS = null; -this.pixelsPerInch = null; - - -// ************************************************************************************************ -// Namespaces - -var namespaces = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.ns = function(fn) -{ - var ns = {}; - namespaces.push(fn, ns); - return ns; -}; - -var FBTrace = null; - -this.initialize = function() -{ - // Firebug Lite is already running in persistent mode so we just quit - if (window.firebug && firebug.firebuglite || window.console && console.firebuglite) - return; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize environment - - // point the FBTrace object to the local variable - if (FBL.FBTrace) - FBTrace = FBL.FBTrace; - else - FBTrace = FBL.FBTrace = {}; - - FBL.Ajax.initialize(); - - // check if the actual window is a persisted chrome context - var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object"; - - // chrome context of the persistent application - if (isChromeContext) - { - // TODO: xxxpedro persist - make a better synchronization - sharedEnv = window.Firebug.SharedEnv; - delete window.Firebug.SharedEnv; - - FBL.Env = sharedEnv; - FBL.Env.isChromeContext = true; - FBTrace.messageQueue = FBL.Env.traceMessageQueue; - } - // non-persistent application - else - { - FBL.NS = document.documentElement.namespaceURI; - FBL.Env.browser = window; - FBL.Env.destroy = destroyEnvironment; - - if (document.documentElement.getAttribute("debug") == "true") - FBL.Env.Options.startOpened = true; - - // find the URL location of the loaded application - findLocation(); - - // TODO: get preferences here... - var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")"); - if (prefs) - { - FBL.Env.Options.startOpened = prefs.startOpened; - FBL.Env.Options.enableTrace = prefs.enableTrace; - FBL.Env.Options.enablePersistent = prefs.enablePersistent; - FBL.Env.Options.disableXHRListener = prefs.disableXHRListener; - } - - if (FBL.isFirefox && - typeof FBL.Env.browser.console == "object" && - FBL.Env.browser.console.firebug && - FBL.Env.Options.disableWhenFirebugActive) - return; - } - - // exposes the FBL to the global namespace when in debug mode - if (FBL.Env.isDebugMode) - { - FBL.Env.browser.FBL = FBL; - } - - // check browser compatibilities - this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat"; - this.isIEQuiksMode = this.isIE && this.isQuiksMode; - this.isIEStantandMode = this.isIE && !this.isQuiksMode; - - this.noFixedPosition = this.isIE6 || this.isIEQuiksMode; - - // after creating/synchronizing the environment, initialize the FBTrace module - if (FBL.Env.Options.enableTrace) FBTrace.initialize(); - - if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize namespaces - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN"); - - for (var i = 0; i < namespaces.length; i += 2) - { - var fn = namespaces[i]; - var ns = namespaces[i+1]; - fn.apply(ns); - } - - if (FBTrace.DBG_INITIALIZE) { - FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END"); - FBTrace.sysout("FBL waitForDocument", "waiting document load"); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // finish environment initialization - - FBL.Firebug.loadPrefs(prefs); - - if (FBL.Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make a better synchronization - if (isChromeContext) - { - FBL.FirebugChrome.clone(FBL.Env.FirebugChrome); - } - else - { - FBL.Env.FirebugChrome = FBL.FirebugChrome; - FBL.Env.traceMessageQueue = FBTrace.messageQueue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // wait document load - - waitForDocument(); -}; - -var waitForDocument = function waitForDocument() -{ - // document.body not available in XML+XSL documents in Firefox - var doc = FBL.Env.browser.document; - var body = doc.getElementsByTagName("body")[0]; - - if (body) - { - calculatePixelsPerInch(doc, body); - onDocumentLoad(); - } - else - setTimeout(waitForDocument, 50); -}; - -var onDocumentLoad = function onDocumentLoad() -{ - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded"); - - // fix IE6 problem with cache of background images, causing a lot of flickering - if (FBL.isIE6) - fixIE6BackgroundImageCache(); - - // chrome context of the persistent application - if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext) - { - // finally, start the application in the chrome context - FBL.Firebug.initialize(); - - // if is not development mode, remove the shared environment cache object - // used to synchronize the both persistent contexts - if (!FBL.Env.isDevelopmentMode) - { - sharedEnv.destroy(); - sharedEnv = null; - } - } - // non-persistent application - else - { - FBL.FirebugChrome.create(); - } -}; - -// ************************************************************************************************ -// Env - -var sharedEnv; - -this.Env = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env Options (will be transported to Firebug options) - Options: - { - saveCookies: false, - - saveWindowPosition: false, - saveCommandLineHistory: false, - - startOpened: false, - startInNewWindow: false, - showIconWhenHidden: true, - - overrideConsole: true, - ignoreFirebugElements: true, - disableWhenFirebugActive: true, - - disableXHRListener: false, - - enableTrace: false, - enablePersistent: false - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Library location - Location: - { - sourceDir: null, - baseDir: null, - skinDir: null, - skin: null, - app: null - }, - - skin: "xp", - useLocalSkin: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env states - isDevelopmentMode: false, - isDebugMode: false, - isChromeContext: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env references - browser: null, - chrome: null -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var destroyEnvironment = function destroyEnvironment() -{ - setTimeout(function() - { - FBL = null; - }, 100); -}; - -// ************************************************************************************************ -// Library location - -var findLocation = function findLocation() -{ - var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; - - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = document; - - // Firebug Lite 1.3.0 bookmarklet identification - var script = doc.getElementById("FirebugLite"); - - if (script) - { - file = reFirebugFile.exec(script.src); - - var version = script.getAttribute("FirebugLite"); - var number = version ? parseInt(version) : 0; - - if (!version || !number || number < bookmarkletVersion) - { - FBL.Env.bookmarkletOutdated = true; - } - } - else - { - for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++) - { - var file = null; - if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) ) - { - script = si; - break; - } - } - } - - if (script) - script.firebugIgnore = true; - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - return ob + ""; - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - - if (elt.offsetLeft) - coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - if (elt.offsetTop) - coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - if (otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -} - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -} - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -} - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -} - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -} - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -} - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -} - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = this.getXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports window.Firebug as Firebug - */ -window.Firebug = FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.3.2", - revision: "$Revision$", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector) - Firebug.Inspector.create(); - - if (FBL.processAllStyleSheets) - processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - chromeMap[name].destroy(); - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - this.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - this.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.Options; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function(prefs) - { - this.restorePrefs(); - - prefs = prefs || eval("(" + readCookie("FirebugLite") + ")"); - - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - }, - - savePrefs: function() - { - var json = ['{'], jl = 0; - var Options = Env.Options; - - for (var name in Options) - { - if (Options.hasOwnProperty(name)) - { - var value = Firebug[name]; - - json[++jl] = '"'; - json[++jl] = name; - - var type = typeof value; - if (type == "boolean" || type == "number") - { - json[++jl] = '":'; - json[++jl] = value; - json[++jl] = ','; - } - else - { - json[++jl] = '":"'; - json[++jl] = value; - json[++jl] = '",'; - } - } - } - - json.length = jl--; - json[++jl] = '}'; - - createCookie("FirebugLite", json.join("")); - }, - - erasePrefs: function() - { - removeCookie("FirebugLite"); - } -}; - -Firebug.restorePrefs(); - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
  • this.startMeasuring(view);
  • - *
  • var size = this.measureText(lineNoCharsSpacer);
  • - *
  • this.stopMeasuring();
  • - *
- * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - FirebugChrome.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0 - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - } - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI", - height: 250 - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - isOpen: false, - height: 250, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - consoleMessageQueue: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = options.height + "px"; - - // avoid flickering during chrome rendering - if (isFirefox) - node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = FirebugChrome.height || options.height, - - options = [ - "true,top=", - Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0), - ",left=0,height=", - height, - ",width=", - screen.availWidth-10, // Opera opens popup in a new tab if it's too big! - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - },0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - if (oldChrome) - oldChrome.close(); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Save Options in Cookies", - type: "checkbox", - value: "saveCookies", - checked: Firebug.saveCookies, - command: "saveOptions" - }, - "-", - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - saveOptions: function(target) - { - var saveEnabled = target.getAttribute("checked"); - - if (!saveEnabled) this.restorePrefs(); - - this.updateMenu(target); - - return false; - }, - - restorePrefs: function(target) - { - Firebug.restorePrefs(); - - if(Firebug.saveCookies) - Firebug.savePrefs(); - else - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - - return false; - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(FirebugChrome.selectedPanelName); - - if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !FirebugChrome.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!FirebugChrome.isOpen) - { - FirebugChrome.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - setTimeout(function(){ - node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (FirebugChrome.isOpen || !this.isInitialized) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - FirebugChrome.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = FirebugChrome.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - FirebugChrome.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - FirebugChrome.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = element[CID]; - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - } - - return id; - }, - - unset: function(element) - { - var id = element[CID]; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - - }, - - key: function(element) - { - return element[CID]; - }, - - has: function(element) - { - return map.hasOwnProperty(element[CID]); - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -var fetchResource = function(url) -{ - var xhr = FBL.Ajax.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - return xhr.responseText; -}; - -var fetchProxyResource = function(url) -{ - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - return data ? data.contents : ""; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function DomplateTag(tagName) -{ - this.tagName = tagName; -} - -function DomplateEmbed() -{ -} - -function DomplateLoop() -{ -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -( /** @scope ns-domplate */ function() { - -var womb = null; - -var domplate = FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateEmbed.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateLoop.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else - attrs.push(attr); - } - } - if (classAttr) - attrs.splice(0, 0, classAttr); - if (idAttr) - attrs.splice(0, 0, idAttr); - - return attrs; - }, - - shortAttrIterator: function(elt) - { - var attrs = []; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName == "id" || attr.nodeName == "class") - attrs.push(attr); - } - } - - return attrs; - }, - - getHidden: function(elt) - { - return isVisible(elt) ? "" : "nodeHidden"; - }, - - getXPath: function(elt) - { - return getElementTreeXPath(elt); - }, - - // TODO: xxxpedro remove this? - getNodeText: function(element) - { - var text = element.textContent; - if (Firebug.showFullTextNodes) - return text; - else - return cropString(text, 50); - }, - /**/ - - getNodeTextGroups: function(element) - { - var text = element.textContent; - if (!Firebug.showFullTextNodes) - { - text=cropString(text,50); - } - - var escapeGroups=[]; - - if (Firebug.showTextNodesWithWhitespace) - escapeGroups.push({ - 'group': 'whitespace', - 'class': 'nodeWhiteSpace', - 'extra': { - '\t': '_Tab', - '\n': '_Para', - ' ' : '_Space' - } - }); - if (Firebug.showTextNodesWithEntities) - escapeGroups.push({ - 'group':'text', - 'class':'nodeTextEntity', - 'extra':{} - }); - - if (escapeGroups.length) - return escapeGroupsForEntities(text, escapeGroups); - else - return [{str:text,'class':'',extra:''}]; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyHTML: function(elt) - { - var html = getElementXML(elt); - copyToClipboard(html); - }, - - copyInnerHTML: function(elt) - { - copyToClipboard(elt.innerHTML); - }, - - copyXPath: function(elt) - { - var xpath = getElementXPath(elt); - copyToClipboard(xpath); - }, - - persistor: function(context, xpath) - { - var elts = xpath - ? getElementsByXPath(context.window.document, xpath) - : null; - - return elts && elts.length ? elts[0] : null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "element", - - supportsObject: function(object) - { - //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string"; - return instanceOf(object, "Element"); - }, - - browseObject: function(elt, context) - { - var tag = elt.nodeName.toLowerCase(); - if (tag == "script") - openNewTab(elt.src); - else if (tag == "link") - openNewTab(elt.href); - else if (tag == "a") - openNewTab(elt.href); - else if (tag == "img") - openNewTab(elt.src); - - return true; - }, - - persistObject: function(elt, context) - { - var xpath = getElementXPath(elt); - - return bind(this.persistor, top, xpath); - }, - - getTitle: function(element, context) - { - return getElementCSSSelector(element); - }, - - getTooltip: function(elt) - { - return this.getXPath(elt); - }, - - getContextMenuItems: function(elt, target, context) - { - var monitored = areEventsMonitored(elt, null, context); - - return [ - {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) }, - {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) }, - {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) }, - "-", - {label: "ShowEventsInConsole", type: "checkbox", checked: monitored, - command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) }, - "-", - {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) } - ]; - } -}); - -// ************************************************************************************************ - -this.TextNode = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "TextNode"), - " textContent="", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), """, - ">" - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "textNode", - - supportsObject: function(object) - { - return object instanceof Text; - } -}); - -// ************************************************************************************************ - -this.Document = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(doc) - { - return doc.location ? getFileName(doc.location.href) : ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Document || object instanceof XMLDocument; - return instanceOf(object, "Document"); - }, - - browseObject: function(doc, context) - { - openNewTab(doc.location.href); - return true; - }, - - persistObject: function(doc, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window.document; - }, - - getTitle: function(win, context) - { - return "document"; - }, - - getTooltip: function(doc) - { - return doc.location.href; - } -}); - -// ************************************************************************************************ - -this.StyleSheet = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(styleSheet) - { - return getFileName(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(styleSheet) - { - copyToClipboard(styleSheet.href); - }, - - openInTab: function(styleSheet) - { - openNewTab(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof CSSStyleSheet; - return instanceOf(object, "CSSStyleSheet"); - }, - - browseObject: function(styleSheet, context) - { - openNewTab(styleSheet.href); - return true; - }, - - persistObject: function(styleSheet, context) - { - return bind(this.persistor, top, styleSheet.href); - }, - - getTooltip: function(styleSheet) - { - return styleSheet.href; - }, - - getContextMenuItems: function(styleSheet, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) } - ]; - }, - - persistor: function(context, href) - { - return getStyleSheetByHref(href, context); - } -}); - -// ************************************************************************************************ - -this.Window = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(win) - { - try - { - return (win && win.location && !win.closed) ? getFileName(win.location.href) : ""; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.Window window closed?"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - return instanceOf(object, "Window"); - }, - - browseObject: function(win, context) - { - openNewTab(win.location.href); - return true; - }, - - persistObject: function(win, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window; - }, - - getTitle: function(win, context) - { - return "window"; - }, - - getTooltip: function(win) - { - if (win && !win.closed) - return win.location.href; - } -}); - -// ************************************************************************************************ - -this.Event = domplate(Firebug.Rep, -{ - tag: TAG("$copyEventTag", {object: "$object|copyEvent"}), - - copyEventTag: - OBJECTLINK("$object|summarizeEvent"), - - summarizeEvent: function(event) - { - var info = [event.type, ' ']; - - var eventFamily = getEventFamily(event.type); - if (eventFamily == "mouse") - info.push("clientX=", event.clientX, ", clientY=", event.clientY); - else if (eventFamily == "key") - info.push("charCode=", event.charCode, ", keyCode=", event.keyCode); - - return info.join(""); - }, - - copyEvent: function(event) - { - return new EventCopy(event); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Event || object instanceof EventCopy; - return instanceOf(object, "Event") || instanceOf(object, "EventCopy"); - }, - - getTitle: function(event, context) - { - return "Event " + event.type; - } -}); - -// ************************************************************************************************ - -this.SourceLink = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - hideSourceLink: function(sourceLink) - { - return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true; - }, - - getSourceLinkTitle: function(sourceLink) - { - if (!sourceLink) - return ""; - - try - { - var fileName = getFileName(sourceLink.href); - fileName = decodeURIComponent(fileName); - fileName = cropString(fileName, 17); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc); - } - - return typeof sourceLink.line == "number" ? - fileName + " (line " + sourceLink.line + ")" : - fileName; - - // TODO: xxxpedro - //return $STRF("Line", [fileName, sourceLink.line]); - }, - - copyLink: function(sourceLink) - { - copyToClipboard(sourceLink.href); - }, - - openInTab: function(sourceLink) - { - openNewTab(sourceLink.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceLink", - - supportsObject: function(object) - { - return object instanceof SourceLink; - }, - - getTooltip: function(sourceLink) - { - return decodeURI(sourceLink.href); - }, - - inspectObject: function(sourceLink, context) - { - if (sourceLink.type == "js") - { - var scriptFile = getSourceFileByHref(sourceLink.href, context); - if (scriptFile) - return Firebug.chrome.select(sourceLink); - } - else if (sourceLink.type == "css") - { - // If an object is defined, treat it as the highest priority for - // inspect actions - if (sourceLink.object) { - Firebug.chrome.select(sourceLink.object); - return; - } - - var stylesheet = getStyleSheetByHref(sourceLink.href, context); - if (stylesheet) - { - var ownerNode = stylesheet.ownerNode; - if (ownerNode) - { - Firebug.chrome.select(sourceLink, "html"); - return; - } - - var panel = context.getPanel("stylesheet"); - if (panel && panel.getRuleByLine(stylesheet, sourceLink.line)) - return Firebug.chrome.select(sourceLink); - } - } - - // Fallback is to just open the view-source window on the file - viewSource(sourceLink.href, sourceLink.line); - }, - - browseObject: function(sourceLink, context) - { - openNewTab(sourceLink.href); - return true; - }, - - getContextMenuItems: function(sourceLink, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceFile = domplate(this.SourceLink, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - persistor: function(context, href) - { - return getSourceFileByHref(href, context); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceFile", - - supportsObject: function(object) - { - return object instanceof SourceFile; - }, - - persistObject: function(sourceFile) - { - return bind(this.persistor, top, sourceFile.href); - }, - - browseObject: function(sourceLink, context) - { - }, - - getTooltip: function(sourceFile) - { - return sourceFile.href; - } -}); - -// ************************************************************************************************ - -this.StackFrame = domplate(Firebug.Rep, // XXXjjb Since the repObject is fn the stack does not have correct line numbers -{ - tag: - OBJECTBLOCK( - A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"), - " ( ", - FOR("arg", "$object|argIterator", - TAG("$arg.tag", {object: "$arg.value"}), - SPAN({"class": "arrayComma"}, "$arg.delim") - ), - " )", - SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle") - ), - - getCallName: function(frame) - { - //TODO: xxxpedro reps StackFrame - return frame.name || "anonymous"; - - //return getFunctionName(frame.script, frame.context); - }, - - getSourceLinkTitle: function(frame) - { - //TODO: xxxpedro reps StackFrame - var fileName = cropString(getFileName(frame.href), 20); - return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : ""); - - var fileName = cropString(getFileName(frame.href), 17); - return $STRF("Line", [fileName, frame.lineNo]); - }, - - argIterator: function(frame) - { - if (!frame.args) - return []; - - var items = []; - - for (var i = 0; i < frame.args.length; ++i) - { - var arg = frame.args[i]; - - if (!arg) - break; - - var rep = Firebug.getRep(arg.value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var delim = (i == frame.args.length-1 ? "" : ", "); - - items.push({name: arg.name, value: arg.value, tag: tag, delim: delim}); - } - - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackFrame", - - supportsObject: function(object) - { - return object instanceof StackFrame; - }, - - inspectObject: function(stackFrame, context) - { - var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js"); - Firebug.chrome.select(sourceLink); - }, - - getTooltip: function(stackFrame, context) - { - return $STRF("Line", [stackFrame.href, stackFrame.lineNo]); - } - -}); - -// ************************************************************************************************ - -this.StackTrace = domplate(Firebug.Rep, -{ - tag: - FOR("frame", "$object.frames focusRow", - TAG(this.StackFrame.tag, {object: "$frame"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackTrace", - - supportsObject: function(object) - { - return object instanceof StackTrace; - } -}); - -// ************************************************************************************************ - -this.jsdStackFrame = domplate(Firebug.Rep, -{ - inspectable: false, - - supportsObject: function(object) - { - return (object instanceof jsdIStackFrame) && (object.isValid); - }, - - getTitle: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - return getFunctionName(frame.script, context); - }, - - getTooltip: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame); - if (sourceInfo) - return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]); - else - return $STRF("Line", [frame.script.fileName, frame.line]); - }, - - getContextMenuItems: function(frame, target, context) - { - var fn = frame.script.functionObject.getWrappedValue(); - return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script); - } -}); - -// ************************************************************************************************ - -this.ErrorMessage = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({ - $hasTwisty: "$object|hasStackTrace", - $hasBreakSwitch: "$object|hasBreakSwitch", - $breakForError: "$object|hasErrorBreak", - _repObject: "$object", - _stackTrace: "$object|getLastErrorStackTrace", - onclick: "$onToggleError"}, - - DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'}, - "$object.message|getMessage" - ), - DIV({"class": "errorTrace"}), - DIV({"class": "errorSourceBox errorSource-$object|getSourceType"}, - IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}), - A({"class": "errorSource a11yFocus"}, "$object|getLine") - ), - TAG(this.SourceLink.tag, {object: "$object|getSourceLink"}) - ), - - getLastErrorStackTrace: function(error) - { - return error.trace; - }, - - hasStackTrace: function(error) - { - var url = error.href.toString(); - var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1); - return !fromCommandLine && error.trace; - }, - - hasBreakSwitch: function(error) - { - return error.href && error.lineNo > 0; - }, - - hasErrorBreak: function(error) - { - return fbs.hasErrorBreakpoint(error.href, error.lineNo); - }, - - getMessage: function(message) - { - var re = /\[Exception... "(.*?)" nsresult:/; - var m = re.exec(message); - return m ? m[1] : message; - }, - - getLine: function(error) - { - if (error.category == "js") - { - if (error.source) - return cropString(error.source, 80); - else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1) - return cropString(error.getSourceLine(), 80); - } - }, - - getSourceLink: function(error) - { - var ext = error.category == "css" ? "css" : "js"; - return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null; - }, - - getSourceType: function(error) - { - // Errors occurring inside of HTML event handlers look like "foo.html (line 1)" - // so let's try to skip those - if (error.source) - return "syntax"; - else if (error.lineNo == 1 && getFileExtension(error.href) != "js") - return "none"; - else if (error.category == "css") - return "none"; - else if (!error.href || !error.lineNo) - return "none"; - else - return "exec"; - }, - - onToggleError: function(event) - { - var target = event.currentTarget; - if (hasClass(event.target, "errorBreak")) - { - this.breakOnThisError(target.repObject); - } - else if (hasClass(event.target, "errorSource")) - { - var panel = Firebug.getElementPanel(event.target); - this.inspectObject(target.repObject, panel.context); - } - else if (hasClass(event.target, "errorTitle")) - { - var traceBox = target.childNodes[1]; - toggleClass(target, "opened"); - event.target.setAttribute('aria-checked', hasClass(target, "opened")); - if (hasClass(target, "opened")) - { - if (target.stackTrace) - var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox); - if (Firebug.A11yModel.enabled) - { - var panel = Firebug.getElementPanel(event.target); - dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]); - } - } - else - clearNode(traceBox); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyError: function(error) - { - var message = [ - this.getMessage(error.message), - error.href, - "Line " + error.lineNo - ]; - copyToClipboard(message.join("\n")); - }, - - breakOnThisError: function(error) - { - if (this.hasErrorBreak(error)) - Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo); - else - Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "errorMessage", - inspectable: false, - - supportsObject: function(object) - { - return object instanceof ErrorMessage; - }, - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - FirebugReps.SourceLink.inspectObject(sourceLink, context); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - var items = [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) } - ]; - - if (error.category == "css") - { - items.push( - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - - optionMenu("BreakOnAllErrors", "breakOnErrors") - ); - } - - return items; - } -}); - -// ************************************************************************************************ - -this.Assert = domplate(Firebug.Rep, -{ - tag: - DIV( - DIV({"class": "errorTitle"}), - DIV({"class": "assertDescription"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "assert", - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - Firebug.chrome.select(sourceLink); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - return [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) }, - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors, - command: bindFixed(this.breakOnAllErrors, this, error) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceText = domplate(Firebug.Rep, -{ - tag: - DIV( - FOR("line", "$object|lineIterator", - DIV({"class": "sourceRow", role : "presentation"}, - SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"), - SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text") - ) - ) - ), - - lineIterator: function(sourceText) - { - var maxLineNoChars = (sourceText.lines.length + "").length; - var list = []; - - for (var i = 0; i < sourceText.lines.length; ++i) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNo = (i+1) + ""; - while (lineNo.length < maxLineNoChars) - lineNo = " " + lineNo; - - list.push({lineNo: lineNo, text: sourceText.lines[i]}); - } - - return list; - }, - - getHTML: function(sourceText) - { - return getSourceLineRange(sourceText, 1, sourceText.lines.length); - } -}); - -//************************************************************************************************ -this.nsIDOMHistory = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showHistory"}, - OBJECTLINK("$object|summarizeHistory") - ), - - className: "nsIDOMHistory", - - summarizeHistory: function(history) - { - try - { - var items = history.length; - return items + " history entries"; - } - catch(exc) - { - return "object does not support history (nsIDOMHistory)"; - } - }, - - showHistory: function(history) - { - try - { - var items = history.length; // if this throws, then unsupported - Firebug.chrome.select(history); - } - catch (exc) - { - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object, type) - { - return (object instanceof Ci.nsIDOMHistory); - } -}); - -// ************************************************************************************************ -this.ApplicationCache = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showApplicationCache"}, - OBJECTLINK("$object|summarizeCache") - ), - - summarizeCache: function(applicationCache) - { - try - { - return applicationCache.length + " items in offline cache"; - } - catch(exc) - { - return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264"; - } - }, - - showApplicationCache: function(event) - { - openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "applicationCache", - - supportsObject: function(object, type) - { - if (Ci.nsIDOMOfflineResourceList) - return (object instanceof Ci.nsIDOMOfflineResourceList); - } - -}); - -this.Storage = domplate(Firebug.Rep, -{ - tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")), - - summarize: function(storage) - { - return storage.length +" items in Storage"; - }, - show: function(storage) - { - openNewTab("http://dev.w3.org/html5/webstorage/#storage-0"); - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "Storage", - - supportsObject: function(object, type) - { - return (object instanceof Storage); - } - -}); - -// ************************************************************************************************ -Firebug.registerRep( - //this.nsIDOMHistory, // make this early to avoid exceptions - this.Undefined, - this.Null, - this.Number, - this.String, - this.Window, - //this.ApplicationCache, // must come before Arr (array) else exceptions. - //this.ErrorMessage, - this.Element, - //this.TextNode, - this.Document, - this.StyleSheet, - this.Event, - //this.SourceLink, - //this.SourceFile, - //this.StackTrace, - //this.StackFrame, - //this.jsdStackFrame, - //this.jsdScript, - //this.NetFile, - this.Property, - this.Except, - this.Arr -); - -Firebug.setDefaultReps(this.Func, this.Obj); - -}}); - -// ************************************************************************************************ -/* - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source" - * in only this file reps.js. John J. Barton June 2007. - * -Software License Agreement (BSD License) - -Copyright (c) 2006, Yahoo! Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Yahoo! Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Yahoo! Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * / - */ - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var saveTimeout = 400; -var pageAmount = 10; - -// ************************************************************************************************ -// Globals - -var currentTarget = null; -var currentGroup = null; -var currentPanel = null; -var currentEditor = null; - -var defaultEditor = null; - -var originalClassName = null; - -var originalValue = null; -var defaultValue = null; -var previousValue = null; - -var invalidEditor = false; -var ignoreNextInput = false; - -// ************************************************************************************************ - -Firebug.Editor = extend(Firebug.Module, -{ - supportsStopEvent: true, - - dispatchName: "editor", - tabCharacter: " ", - - startEditing: function(target, value, editor) - { - this.stopEditing(); - - if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter")) - return; - - var panel = Firebug.getElementPanel(target); - if (!panel.editable) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.startEditing " + value, target); - - defaultValue = target.getAttribute("defaultValue"); - if (value == undefined) - { - var textContent = isIE ? "innerText" : "textContent"; - value = target[textContent]; - if (value == defaultValue) - value = ""; - } - - originalValue = previousValue = value; - - invalidEditor = false; - currentTarget = target; - currentPanel = panel; - currentGroup = getAncestorByClass(target, "editGroup"); - - currentPanel.editing = true; - - var panelEditor = currentPanel.getEditor(target, value); - currentEditor = editor ? editor : panelEditor; - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - var inlineParent = getInlineParent(target); - var targetSize = getOffsetSize(inlineParent); - - setClass(panel.panelNode, "editing"); - setClass(target, "editing"); - if (currentGroup) - setClass(currentGroup, "editing"); - - currentEditor.show(target, currentPanel, value, targetSize); - //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]); - currentEditor.beginEditing(target, value); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Editor start panel "+currentPanel.name); - this.attachListeners(currentEditor, panel.context); - }, - - stopEditing: function(cancel) - { - if (!currentTarget) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout); - - clearTimeout(this.saveTimeout); - delete this.saveTimeout; - - this.detachListeners(currentEditor, currentPanel.context); - - removeClass(currentPanel.panelNode, "editing"); - removeClass(currentTarget, "editing"); - if (currentGroup) - removeClass(currentGroup, "editing"); - - var value = currentEditor.getValue(); - if (value == defaultValue) - value = ""; - - var removeGroup = currentEditor.endEditing(currentTarget, value, cancel); - - try - { - if (cancel) - { - //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]); - if (value != originalValue) - this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue); - - if (removeGroup && !originalValue && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else if (!value) - { - this.saveEditAndNotifyListeners(currentTarget, null, previousValue); - - if (removeGroup && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else - this.save(value); - } - catch (exc) - { - //throw exc.message; - //ERROR(exc); - } - - currentEditor.hide(); - currentPanel.editing = false; - - //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]); - //if (FBTrace.DBG_EDITOR) - // FBTrace.sysout("Editor stop panel "+currentPanel.name); - - currentTarget = null; - currentGroup = null; - currentPanel = null; - currentEditor = null; - originalValue = null; - invalidEditor = false; - - return value; - }, - - cancelEditing: function() - { - return this.stopEditing(true); - }, - - update: function(saveNow) - { - if (this.saveTimeout) - clearTimeout(this.saveTimeout); - - invalidEditor = true; - - currentEditor.layout(); - - if (saveNow) - this.save(); - else - { - var context = currentPanel.context; - this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout); - } - }, - - save: function(value) - { - if (!invalidEditor) - return; - - if (value == undefined) - value = currentEditor.getValue(); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")); - try - { - this.saveEditAndNotifyListeners(currentTarget, value, previousValue); - - previousValue = value; - invalidEditor = false; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("editor.save FAILS "+exc, exc); - } - }, - - saveEditAndNotifyListeners: function(currentTarget, value, previousValue) - { - currentEditor.saveEdit(currentTarget, value, previousValue); - //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]); - }, - - setEditTarget: function(element) - { - if (!element) - { - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]); - this.stopEditing(); - } - else if (hasClass(element, "insertBefore")) - this.insertRow(element, "before"); - else if (hasClass(element, "insertAfter")) - this.insertRow(element, "after"); - else - this.startEditing(element); - }, - - tabNextEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var nextEditable = currentTarget; - do - { - nextEditable = !value && currentGroup - ? getNextOutsider(nextEditable, currentGroup) - : getNextByClass(nextEditable, "editable"); - } - while (nextEditable && !nextEditable.offsetHeight); - - this.setEditTarget(nextEditable); - }, - - tabPreviousEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var prevEditable = currentTarget; - do - { - prevEditable = !value && currentGroup - ? getPreviousOutsider(prevEditable, currentGroup) - : getPreviousByClass(prevEditable, "editable"); - } - while (prevEditable && !prevEditable.offsetHeight); - - this.setEditTarget(prevEditable); - }, - - insertRow: function(relative, insertWhere) - { - var group = - relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget; - var value = this.stopEditing(); - - currentPanel = Firebug.getElementPanel(group); - - currentEditor = currentPanel.getEditor(group, value); - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - currentGroup = currentEditor.insertNewRow(group, insertWhere); - if (!currentGroup) - return; - - var editable = hasClass(currentGroup, "editable") - ? currentGroup - : getNextByClass(currentGroup, "editable"); - - if (editable) - this.setEditTarget(editable); - }, - - insertRowForObject: function(relative) - { - var container = getAncestorByClass(relative, "insertInto"); - if (container) - { - relative = getChildByClass(container, "insertBefore"); - if (relative) - this.insertRow(relative, "before"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - attachListeners: function(editor, context) - { - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - addEvent(win, "resize", this.onResize); - addEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - - this.listeners = [ - chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this)) - ]; - - if (editor.arrowCompletion) - { - this.listeners.push( - chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)), - chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)), - chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)), - chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount)) - ); - } - - if (currentEditor.tabNavigation) - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")), - chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this)) - ); - } - else if (currentEditor.multiLine) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, insertTab) - ); - } - else - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this)) - ); - - if (currentEditor.tabCompletion) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)), - chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1)) - ); - } - } - }, - - detachListeners: function(editor, context) - { - if (!this.listeners) - return; - - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - removeEvent(win, "resize", this.onResize); - removeEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - if (chrome) - { - for (var i = 0; i < this.listeners.length; ++i) - chrome.keyIgnore(this.listeners[i]); - } - - delete this.listeners; - }, - - onResize: function(event) - { - currentEditor.layout(true); - }, - - onBlur: function(event) - { - if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box)) - this.stopEditing(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - Firebug.Module.initialize.apply(this, arguments); - - this.onResize = bindFixed(this.onResize, this); - this.onBlur = bind(this.onBlur, this); - }, - - disable: function() - { - this.stopEditing(); - }, - - showContext: function(browser, context) - { - this.stopEditing(); - }, - - showPanel: function(browser, panel) - { - this.stopEditing(); - } -}); - -// ************************************************************************************************ -// BaseEditor - -Firebug.BaseEditor = extend(Firebug.MeasureBox, -{ - getValue: function() - { - }, - - setValue: function(value) - { - }, - - show: function(target, panel, value, textSize, targetSize) - { - }, - - hide: function() - { - }, - - layout: function(forceAll) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for context menus within inline editors. - - getContextMenuItems: function(target) - { - var items = []; - items.push({label: "Cut", commandID: "cmd_cut"}); - items.push({label: "Copy", commandID: "cmd_copy"}); - items.push({label: "Paste", commandID: "cmd_paste"}); - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Editor Module listeners will get "onBeginEditing" just before this call - - beginEditing: function(target, value) - { - }, - - // Editor Module listeners will get "onSaveEdit" just after this call - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - } -}); - -// ************************************************************************************************ -// InlineEditor - -// basic inline editor attributes -var inlineEditorAttributes = { - "class": "textEditorInner", - - type: "text", - spellcheck: "false", - - onkeypress: "$onKeyPress", - - onoverflow: "$onOverflow", - oncontextmenu: "$onContextMenu" -}; - -// IE does not support the oninput event, so we're using the onkeydown to signalize -// the relevant keyboard events, and the onpropertychange to actually handle the -// input event, which should happen after the onkeydown event is fired and after the -// value of the input is updated, but before the onkeyup and before the input (with the -// new value) is rendered -if (isIE) -{ - inlineEditorAttributes.onpropertychange = "$onInput"; - inlineEditorAttributes.onkeydown = "$onKeyDown"; -} -// for other browsers we use the oninput event -else -{ - inlineEditorAttributes.oninput = "$onInput"; -} - -Firebug.InlineEditor = function(doc) -{ - this.initializeInline(doc); -}; - -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor, -{ - enterOnBlur: true, - outerMargin: 8, - shadowExpand: 7, - - tag: - DIV({"class": "inlineEditor"}, - DIV({"class": "textEditorTop1"}, - DIV({"class": "textEditorTop2"}) - ), - DIV({"class": "textEditorInner1"}, - DIV({"class": "textEditorInner2"}, - INPUT( - inlineEditorAttributes - ) - ) - ), - DIV({"class": "textEditorBottom1"}, - DIV({"class": "textEditorBottom2"}) - ) - ), - - inputTag : - INPUT({"class": "textEditorInner", type: "text", - /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"} - ), - - expanderTag: - IMG({"class": "inlineExpander", src: "blank.gif"}), - - initialize: function() - { - this.fixedWidth = false; - this.completeAsYouType = true; - this.tabNavigation = true; - this.multiLine = false; - this.tabCompletion = false; - this.arrowCompletion = true; - this.noWrap = true; - this.numeric = false; - }, - - destroy: function() - { - this.destroyInput(); - }, - - initializeInline: function(doc) - { - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Firebug.InlineEditor initializeInline()"); - - //this.box = this.tag.replace({}, doc, this); - this.box = this.tag.append({}, doc.body, this); - - //this.input = this.box.childNodes[1].firstChild.firstChild; // XXXjjb childNode[1] required - this.input = this.box.getElementsByTagName("input")[0]; - - if (isIElt8) - { - this.input.style.top = "-8px"; - } - - this.expander = this.expanderTag.replace({}, doc, this); - this.initialize(); - }, - - destroyInput: function() - { - // XXXjoe Need to remove input/keypress handlers to avoid leaks - }, - - getValue: function() - { - return this.input.value; - }, - - setValue: function(value) - { - // It's only a one-line editor, so new lines shouldn't be allowed - return this.input.value = stripNewLines(value); - }, - - show: function(target, panel, value, targetSize) - { - //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]); - this.target = target; - this.panel = panel; - - this.targetSize = targetSize; - - // TODO: xxxpedro editor - //this.targetOffset = getClientOffset(target); - - // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the - // offset values of invisible elements, or empty elements. So, in order to get the - // correct values, we temporary inject a character in the innerHTML of the empty element, - // then we get the offset values, and next, we restore the original innerHTML value. - var innerHTML = target.innerHTML; - var isEmptyElement = !innerHTML; - if (isEmptyElement) - target.innerHTML = "."; - - // Get the position of the target element (that is about to be edited) - this.targetOffset = - { - x: target.offsetLeft, - y: target.offsetTop - }; - - // Restore the original innerHTML value of the empty element - if (isEmptyElement) - target.innerHTML = innerHTML; - - this.originalClassName = this.box.className; - - var classNames = target.className.split(" "); - for (var i = 0; i < classNames.length; ++i) - setClass(this.box, "editor-" + classNames[i]); - - // Make the editor match the target's font style - copyTextStyles(target, this.box); - - this.setValue(value); - - if (this.fixedWidth) - this.updateLayout(true); - else - { - this.startMeasuring(target); - this.textSize = this.measureInputText(value); - - // Correct the height of the box to make the funky CSS drop-shadow line up - var parent = this.input.parentNode; - if (hasClass(parent, "textEditorInner2")) - { - var yDiff = this.textSize.height - this.shadowExpand; - - // IE6 height offset - if (isIE6) - yDiff -= 2; - - parent.style.height = yDiff + "px"; - parent.parentNode.style.height = yDiff + "px"; - } - - this.updateLayout(true); - } - - this.getAutoCompleter().reset(); - - if (isIElt8) - panel.panelNode.appendChild(this.box); - else - target.offsetParent.appendChild(this.box); - - //console.log(target); - //this.input.select(); // it's called bellow, with setTimeout - - if (isIE) - { - // reset input style - this.input.style.fontFamily = "Monospace"; - this.input.style.fontSize = "11px"; - } - - // Insert the "expander" to cover the target element with white space - if (!this.fixedWidth) - { - copyBoxStyles(target, this.expander); - - target.parentNode.replaceChild(this.expander, target); - collapse(target, true); - this.expander.parentNode.insertBefore(target, this.expander); - } - - //TODO: xxxpedro - //scrollIntoCenterView(this.box, null, true); - - // Display the editor after change its size and position to avoid flickering - this.box.style.display = "block"; - - // we need to call input.focus() and input.select() with a timeout, - // otherwise it won't work on all browsers due to timing issues - var self = this; - setTimeout(function(){ - self.input.focus(); - self.input.select(); - },0); - }, - - hide: function() - { - this.box.className = this.originalClassName; - - if (!this.fixedWidth) - { - this.stopMeasuring(); - - collapse(this.target, false); - - if (this.expander.parentNode) - this.expander.parentNode.removeChild(this.expander); - } - - if (this.box.parentNode) - { - ///setSelectionRange(this.input, 0, 0); - this.input.blur(); - - this.box.parentNode.removeChild(this.box); - } - - delete this.target; - delete this.panel; - }, - - layout: function(forceAll) - { - if (!this.fixedWidth) - this.textSize = this.measureInputText(this.input.value); - - if (forceAll) - this.targetOffset = getClientOffset(this.expander); - - this.updateLayout(false, forceAll); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - beginEditing: function(target, value) - { - }, - - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - }, - - advanceToNext: function(target, charCode) - { - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleter: function() - { - if (!this.autoCompleter) - { - this.autoCompleter = new Firebug.AutoCompleter(null, - bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this), - true, false); - } - - return this.autoCompleter; - }, - - completeValue: function(amt) - { - //console.log("completeValue"); - - var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); - - if (selectRangeCallback) - { - Firebug.Editor.update(true); - - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - else - this.incrementValue(amt); - }, - - incrementValue: function(amt) - { - var value = this.input.value; - - // TODO: xxxpedro editor - if (isIE) - var start = getInputSelectionStart(this.input), end = start; - else - var start = this.input.selectionStart, end = this.input.selectionEnd; - - //debugger; - var range = this.getAutoCompleteRange(value, start); - if (!range || range.type != "int") - range = {start: 0, end: value.length-1}; - - var expr = value.substr(range.start, range.end-range.start+1); - preExpr = value.substr(0, range.start); - postExpr = value.substr(range.end+1); - - // See if the value is an integer, and if so increment it - var intValue = parseInt(expr); - if (!!intValue || intValue == 0) - { - var m = /\d+/.exec(expr); - var digitPost = expr.substr(m.index+m[0].length); - - var completion = intValue-amt; - this.input.value = preExpr + completion + digitPost + postExpr; - - setSelectionRange(this.input, start, end); - - Firebug.Editor.update(true); - - return true; - } - else - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onKeyPress: function(event) - { - //console.log("onKeyPress", event); - if (event.keyCode == 27 && !this.completeAsYouType) - { - var reverted = this.getAutoCompleter().revert(this.input); - if (reverted) - cancelEvent(event); - } - else if (event.charCode && this.advanceToNext(this.target, event.charCode)) - { - Firebug.Editor.tabNextEditor(); - cancelEvent(event); - } - else - { - if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57) - && event.charCode != 45 && event.charCode != 46) - FBL.cancelEvent(event); - else - { - // If the user backspaces, don't autocomplete after the upcoming input event - this.ignoreNextInput = event.keyCode == 8; - } - } - }, - - onOverflow: function() - { - this.updateLayout(false, false, 3); - }, - - onKeyDown: function(event) - { - //console.log("onKeyDown", event.keyCode); - if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8) - { - this.keyDownPressed = true; - } - }, - - onInput: function(event) - { - //debugger; - - // skip not relevant onpropertychange calls on IE - if (isIE) - { - if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) - return; - - this.keyDownPressed = false; - } - - //console.log("onInput", event); - //console.trace(); - - var selectRangeCallback; - - if (this.ignoreNextInput) - { - this.ignoreNextInput = false; - this.getAutoCompleter().reset(); - } - else if (this.completeAsYouType) - selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false); - else - this.getAutoCompleter().reset(); - - Firebug.Editor.update(); - - if (selectRangeCallback) - { - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - }, - - onContextMenu: function(event) - { - cancelEvent(event); - - var popup = $("fbInlineEditorPopup"); - FBL.eraseNode(popup); - - var target = event.target || event.srcElement; - var menu = this.getContextMenuItems(target); - if (menu) - { - for (var i = 0; i < menu.length; ++i) - FBL.createMenuItem(popup, menu[i]); - } - - if (!popup.firstChild) - return false; - - popup.openPopupAtScreen(event.screenX, event.screenY, true); - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateLayout: function(initial, forceAll, extraWidth) - { - if (this.fixedWidth) - { - this.box.style.left = (this.targetOffset.x) + "px"; - this.box.style.top = (this.targetOffset.y) + "px"; - - var w = this.target.offsetWidth; - var h = this.target.offsetHeight; - this.input.style.width = w + "px"; - this.input.style.height = (h-3) + "px"; - } - else - { - if (initial || forceAll) - { - this.box.style.left = this.targetOffset.x + "px"; - this.box.style.top = this.targetOffset.y + "px"; - } - - var approxTextWidth = this.textSize.width; - var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x) - - this.outerMargin; - - var wrapped = initial - ? this.noWrap && this.targetSize.height > this.textSize.height+3 - : this.noWrap && approxTextWidth > maxWidth; - - if (wrapped) - { - var style = isIE ? - this.target.currentStyle : - this.target.ownerDocument.defaultView.getComputedStyle(this.target, ""); - - targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight); - - // Make the width fit the remaining x-space from the offset to the far right - approxTextWidth = maxWidth - targetMargin; - - this.input.style.width = "100%"; - this.box.style.width = approxTextWidth + "px"; - } - else - { - // Make the input one character wider than the text value so that - // typing does not ever cause the textbox to scroll - var charWidth = this.measureInputText('m').width; - - // Sometimes we need to make the editor a little wider, specifically when - // an overflow happens, otherwise it will scroll off some text on the left - if (extraWidth) - charWidth *= extraWidth; - - var inputWidth = approxTextWidth + charWidth; - - if (initial) - { - if (isIE) - { - // TODO: xxxpedro - var xDiff = 13; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - else - this.box.style.width = "auto"; - } - else - { - // TODO: xxxpedro - var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - - this.input.style.width = inputWidth + "px"; - } - - this.expander.style.width = approxTextWidth + "px"; - this.expander.style.height = Math.max(this.textSize.height-3,0) + "px"; - } - - if (forceAll) - scrollIntoCenterView(this.box, null, true); - } -}); - -// ************************************************************************************************ -// Autocompletion - -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive) -{ - var candidates = null; - var originalValue = null; - var originalOffset = -1; - var lastExpr = null; - var lastOffset = -1; - var exprOffset = 0; - var lastIndex = 0; - var preParsed = null; - var preExpr = null; - var postExpr = null; - - this.revert = function(textBox) - { - if (originalOffset != -1) - { - textBox.value = originalValue; - - setSelectionRange(textBox, originalOffset, originalOffset); - - this.reset(); - return true; - } - else - { - this.reset(); - return false; - } - }; - - this.reset = function() - { - candidates = null; - originalValue = null; - originalOffset = -1; - lastExpr = null; - lastOffset = 0; - exprOffset = 0; - }; - - this.complete = function(context, textBox, cycle, reverse) - { - //console.log("complete", context, textBox, cycle, reverse); - // TODO: xxxpedro important port to firebug (variable leak) - //var value = lastValue = textBox.value; - var value = textBox.value; - - //var offset = textBox.selectionStart; - var offset = getInputSelectionStart(textBox); - - // The result of selectionStart() in Safari/Chrome is 1 unit less than the result - // in Firefox. Therefore, we need to manually adjust the value here. - if (isSafari && !cycle && offset >= 0) offset++; - - if (!selectMode && originalOffset != -1) - offset = originalOffset; - - if (!candidates || !cycle || offset != lastOffset) - { - originalOffset = offset; - originalValue = value; - - // Find the part of the string that will be parsed - var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0; - preParsed = value.substr(0, parseStart); - var parsed = value.substr(parseStart); - - // Find the part of the string that is being completed - var range = getRange ? getRange(parsed, offset-parseStart, context) : null; - if (!range) - range = {start: 0, end: parsed.length-1 }; - - var expr = parsed.substr(range.start, range.end-range.start+1); - preExpr = parsed.substr(0, range.start); - postExpr = parsed.substr(range.end+1); - exprOffset = parseStart + range.start; - - if (!cycle) - { - if (!expr) - return; - else if (lastExpr && lastExpr.indexOf(expr) != 0) - { - candidates = null; - } - else if (lastExpr && lastExpr.length >= expr.length) - { - candidates = null; - lastExpr = expr; - return; - } - } - - lastExpr = expr; - lastOffset = offset; - - var searchExpr; - - // Check if the cursor is at the very right edge of the expression, or - // somewhere in the middle of it - if (expr && offset != parseStart+range.end+1) - { - if (cycle) - { - // We are in the middle of the expression, but we can - // complete by cycling to the next item in the values - // list after the expression - offset = range.start; - searchExpr = expr; - expr = ""; - } - else - { - // We can't complete unless we are at the ridge edge - return; - } - } - - var values = evaluator(preExpr, expr, postExpr, context); - if (!values) - return; - - if (expr) - { - // Filter the list of values to those which begin with expr. We - // will then go on to complete the first value in the resulting list - candidates = []; - - if (caseSensitive) - { - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.indexOf(expr) == 0) - candidates.push(name); - } - } - else - { - var lowerExpr = caseSensitive ? expr : expr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0) - candidates.push(name); - } - } - - lastIndex = reverse ? candidates.length-1 : 0; - } - else if (searchExpr) - { - var searchIndex = -1; - - // Find the first instance of searchExpr in the values list. We - // will then complete the string that is found - if (caseSensitive) - { - searchIndex = values.indexOf(expr); - } - else - { - var lowerExpr = searchExpr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name && name.toLowerCase().indexOf(lowerExpr) == 0) - { - searchIndex = i; - break; - } - } - } - - // Nothing found, so there's nothing to complete to - if (searchIndex == -1) - return this.reset(); - - expr = searchExpr; - candidates = cloneArray(values); - lastIndex = searchIndex; - } - else - { - expr = ""; - candidates = []; - for (var i = 0; i < values.length; ++i) - { - if (values[i].substr) - candidates.push(values[i]); - } - lastIndex = -1; - } - } - - if (cycle) - { - expr = lastExpr; - lastIndex += reverse ? -1 : 1; - } - - if (!candidates.length) - return; - - if (lastIndex >= candidates.length) - lastIndex = 0; - else if (lastIndex < 0) - lastIndex = candidates.length-1; - - var completion = candidates[lastIndex]; - var preCompletion = expr.substr(0, offset-exprOffset); - var postCompletion = completion.substr(offset-exprOffset); - - textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr; - var offsetEnd = preParsed.length + preExpr.length + completion.length; - - // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange() - // is working well. - /* - if (textBox.setSelectionRange) - { - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - setTimeout(function(){ - if (selectMode) - textBox.setSelectionRange(offset, offsetEnd); - else - textBox.setSelectionRange(offsetEnd, offsetEnd); - },0); - } - /**/ - - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - /* - setTimeout(function(){ - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - },0); - - return true; - /**/ - - // The editor text should be selected only after calling the editor.update() - // in Safari/Chrome, otherwise the text won't be selected. So, we're returning - // a function to be called later (in the proper time for all browsers). - // - // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid - // returning a closure. the complete() function seems to be called only twice in - // editor.js. See if this function is called anywhere else (like css.js for example). - return function(){ - //console.log("autocomplete ", textBox, offset, offsetEnd); - - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - }; - /**/ - }; -}; - -// ************************************************************************************************ -// Local Helpers - -var getDefaultEditor = function getDefaultEditor(panel) -{ - if (!defaultEditor) - { - var doc = panel.document; - defaultEditor = new Firebug.InlineEditor(doc); - } - - return defaultEditor; -} - -/** - * An outsider is the first element matching the stepper element that - * is not an child of group. Elements tagged with insertBefore or insertAfter - * classes are also excluded from these results unless they are the sibling - * of group, relative to group's parent editGroup. This allows for the proper insertion - * rows when groups are nested. - */ -var getOutsider = function getOutsider(element, group, stepper) -{ - var parentGroup = getAncestorByClass(group.parentNode, "editGroup"); - var next; - do - { - next = stepper(next || element); - } - while (isAncestor(next, group) || isGroupInsert(next, parentGroup)); - - return next; -} - -var isGroupInsert = function isGroupInsert(next, group) -{ - return (!group || isAncestor(next, group)) - && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter")); -} - -var getNextOutsider = function getNextOutsider(element, group) -{ - return getOutsider(element, group, bind(getNextByClass, FBL, "editable")); -} - -var getPreviousOutsider = function getPreviousOutsider(element, group) -{ - return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable")); -} - -var getInlineParent = function getInlineParent(element) -{ - var lastInline = element; - for (; element; element = element.parentNode) - { - //var s = element.ownerDocument.defaultView.getComputedStyle(element, ""); - var s = isIE ? - element.currentStyle : - element.ownerDocument.defaultView.getComputedStyle(element, ""); - - if (s.display != "inline") - return lastInline; - else - lastInline = element; - } - return null; -} - -var insertTab = function insertTab() -{ - insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.Editor); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0) - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -// next-generation Console Panel (will override consoje.js) -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -/* -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -/**/ -/* - -// new offline message handler -o = {x:1,y:2}; - -r = Firebug.getRep(o); - -r.tag.tag.compile(); - -outputs = []; -html = r.tag.renderHTML({object:o}, outputs); - - -// finish rendering the template (the DOM part) -target = $("build"); -target.innerHTML = html; -root = target.firstChild; - -domArgs = [root, r.tag.context, 0]; -domArgs.push.apply(domArgs, r.tag.domArgs); -domArgs.push.apply(domArgs, outputs); -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs); - - - */ -var consoleQueue = []; -var lastHighlightedObject; -var FirebugContext = Env.browser; - -// ************************************************************************************************ - -var maxQueueRequests = 500; - -// ************************************************************************************************ - -Firebug.ConsoleBase = -{ - log: function(object, context, className, rep, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]); - return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle); - }, - - logFormatted: function(objects, context, className, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]); - return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle); - }, - - openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush) - { - return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle); - }, - - closeGroup: function(context, noThrottle) - { - return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true); - }, - - logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow) - { - // TODO: xxxpedro console console2 - noThrottle = true; // xxxpedro forced because there is no TabContext yet - - if (!context) - context = FirebugContext; - - if (FBTrace.DBG_ERRORS && !context) - FBTrace.sysout("Console.logRow has no context, skipping objects", objects); - - if (!context) - return; - - if (noThrottle || !context) - { - var panel = this.getPanel(context); - if (panel) - { - var row = panel.append(appender, objects, className, rep, sourceLink, noRow); - var container = panel.panelNode; - - // TODO: xxxpedro what is this? console console2 - /* - var template = Firebug.NetMonitor.NetLimit; - - while (container.childNodes.length > maxQueueRequests + 1) - { - clearDomplate(container.firstChild.nextSibling); - container.removeChild(container.firstChild.nextSibling); - panel.limit.limitInfo.totalCount++; - template.updateCounter(panel.limit); - } - dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]); - /**/ - return row; - } - else - { - consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]); - } - } - else - { - if (!context.throttle) - { - //FBTrace.sysout("console.logRow has not context.throttle! "); - return; - } - var args = [appender, objects, context, className, rep, sourceLink, true, noRow]; - context.throttle(this.logRow, this, args); - } - }, - - appendFormatted: function(args, row, context) - { - if (!context) - context = FirebugContext; - - var panel = this.getPanel(context); - panel.appendFormatted(args, row); - }, - - clear: function(context) - { - if (!context) - //context = FirebugContext; - context = Firebug.context; - - /* - if (context) - Firebug.Errors.clear(context); - /**/ - - var panel = this.getPanel(context, true); - if (panel) - { - panel.clear(); - } - }, - - // Override to direct output to your panel - getPanel: function(context, noCreate) - { - //return context.getPanel("console", noCreate); - // TODO: xxxpedro console console2 - return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null; - } - -}; - -// ************************************************************************************************ - -//TODO: xxxpedro -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase); -var ActivableConsole = extend(Firebug.ConsoleBase, -{ - isAlwaysEnabled: function() - { - return true; - } -}); - -Firebug.Console = Firebug.Console = extend(ActivableConsole, -//Firebug.Console = extend(ActivableConsole, -{ - dispatchName: "console", - - error: function() - { - Firebug.Console.logFormatted(arguments, Firebug.browser, "error"); - }, - - flush: function() - { - dispatch(this.fbListeners,"flush",[]); - - for (var i=0, length=consoleQueue.length; i objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - if (typeof(object) != "undefined") - this.appendObject(object, row, part.rep); - else - this.appendObject(part.type, row, FirebugReps.Text); - } - else - FirebugReps.Text.tag.append({object: part}, row); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - logText(" ", row); - var object = objects[i]; - if (typeof(object) == "string") - FirebugReps.Text.tag.append({object: object}, row); - else - this.appendObject(object, row); - } - }, - - appendOpenGroup: function(objects, row, rep) - { - if (!this.groups) - this.groups = []; - - setClass(row, "logGroup"); - setClass(row, "opened"); - - var innerRow = this.createRow("logRow"); - setClass(innerRow, "logGroupLabel"); - if (rep) - rep.tag.replace({"objects": objects}, innerRow); - else - this.appendFormatted(objects, innerRow, rep); - row.appendChild(innerRow); - //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]); - var groupBody = this.createRow("logGroupBody"); - row.appendChild(groupBody); - groupBody.setAttribute('role', 'group'); - this.groups.push(groupBody); - - addEvent(innerRow, "mousedown", function(event) - { - if (isLeftClick(event)) - { - //console.log(event.currentTarget == event.target); - - var target = event.target || event.srcElement; - - target = getAncestorByClass(target, "logGroupLabel"); - - var groupRow = target.parentNode; - - if (hasClass(groupRow, "opened")) - { - removeClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'false'); - } - else - { - setClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'true'); - } - } - }); - }, - - appendCloseGroup: function(object, row, rep) - { - if (this.groups) - this.groups.pop(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TODO: xxxpedro console2 - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - onMouseDown: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - var repObject = object ? object.repObject : null; - - if (!repObject) - { - return; - } - - if (hasClass(object, "objectLink-object")) - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(repObject, true); - } - else if (hasClass(object, "objectLink-element")) - { - Firebug.chrome.selectPanel("HTML"); - Firebug.chrome.getPanel("HTML").select(repObject, true); - } - - /* - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - /**/ - - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "Console", - title: "Console", - //searchable: true, - //breakable: true, - //editable: false, - - options: - { - hasCommandLine: true, - hasToolButtons: true, - isPreRendered: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.context = Firebug.browser.window; - this.document = Firebug.chrome.document; - this.onMouseMove = bind(this.onMouseMove, this); - this.onMouseDown = bind(this.onMouseDown, this); - - this.clearButton = new Button({ - element: $("fbConsole_btClear"), - owner: Firebug.Console, - onClick: Firebug.Console.clear - }); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); // loads persisted content - //Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content - - if (!this.persistedContent && Firebug.Console.isAlwaysEnabled()) - { - this.insertLogLimit(this.context); - - // Initialize log limit and listen for changes. - this.updateMaxLimit(); - - if (this.context.consoleReloadWarning) // we have not yet injected the console - this.insertReloadWarning(); - } - - //Firebug.Console.injector.install(Firebug.browser.window); - - addEvent(this.panelNode, "mouseover", this.onMouseMove); - addEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.clearButton.initialize(); - - //consolex.trace(); - //TODO: xxxpedro remove this - /* - Firebug.Console.openGroup(["asd"], null, "group", null, false); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - /**/ - - //TODO: xxxpedro preferences prefs - //prefs.addObserver(Firebug.prefDomain, this, false); - }, - - initializeNode : function() - { - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]); - if (FBTrace.DBG_CONSOLE) - { - this.onScroller = bind(this.onScroll, this); - addEvent(this.panelNode, "scroll", this.onScroller); - } - - this.onResizer = bind(this.onResize, this); - this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - addEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - destroyNode : function() - { - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]); - if (this.onScroller) - removeEvent(this.panelNode, "scroll", this.onScroller); - - //removeEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - shutdown: function() - { - //TODO: xxxpedro console console2 - this.clearButton.shutdown(); - - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - - //TODO: xxxpedro preferences prefs - //prefs.removeObserver(Firebug.prefDomain, this, false); - }, - - ishow: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel show; " + this.context.getName(), state); - - var enabled = Firebug.Console.isAlwaysEnabled(); - if (enabled) - { - Firebug.Console.disabledPanelPage.hide(this); - this.showCommandLine(true); - this.showToolbarButtons("fbConsoleButtons", true); - Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent); - - if (state && state.wasScrolledToBottom) - { - this.wasScrolledToBottom = state.wasScrolledToBottom; - delete state.wasScrolledToBottom; - } - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - } - else - { - this.hide(state); - Firebug.Console.disabledPanelPage.show(this); - } - }, - - ihide: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel hide; " + this.context.getName(), state); - - this.showToolbarButtons("fbConsoleButtons", false); - this.showCommandLine(false); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - destroy: function(state) - { - if (this.panelNode.offsetHeight) - this.wasScrolledToBottom = isScrolledToBottom(this.panelNode); - - if (state) - state.wasScrolledToBottom = this.wasScrolledToBottom; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - shouldBreakOnNext: function() - { - // xxxHonza: shouldn't the breakOnErrors be context related? - // xxxJJB, yes, but we can't support it because we can't yet tell - // which window the error is on. - return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors"); - }, - - getBreakOnNextTooltip: function(enabled) - { - return (enabled ? $STR("console.Disable Break On All Errors") : - $STR("console.Break On All Errors")); - }, - - enablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.enablePanel.apply(this, arguments); - - this.showCommandLine(true); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - }, - - disablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - - this.showCommandLine(false); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowJavaScriptErrors", "showJSErrors"), - optionMenu("ShowJavaScriptWarnings", "showJSWarnings"), - optionMenu("ShowCSSErrors", "showCSSErrors"), - optionMenu("ShowXMLErrors", "showXMLErrors"), - optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"), - optionMenu("ShowChromeErrors", "showChromeErrors"), - optionMenu("ShowChromeMessages", "showChromeMessages"), - optionMenu("ShowExternalErrors", "showExternalErrors"), - optionMenu("ShowNetworkErrors", "showNetworkErrors"), - this.getShowStackTraceMenuItem(), - this.getStrictOptionMenuItem(), - "-", - optionMenu("LargeCommandLine", "largeCommandLine") - ]; - }, - - getShowStackTraceMenuItem: function() - { - var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace"); - if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled()) - menuItem.disabled = true; - return menuItem; - }, - - getStrictOptionMenuItem: function() - { - var strictDomain = "javascript.options"; - var strictName = "strict"; - var strictValue = prefs.getBoolPref(strictDomain+"."+strictName); - return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue, - command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) }; - }, - - getBreakOnMenuItems: function() - { - //xxxHonza: no BON options for now. - /*return [ - optionMenu("console.option.Persist Break On Error", "persistBreakOnError") - ];*/ - return []; - }, - - search: function(text) - { - if (!text) - return; - - // Make previously visible nodes invisible again - if (this.matchSet) - { - for (var i in this.matchSet) - removeClass(this.matchSet[i], "matched"); - } - - this.matchSet = []; - - function findRow(node) { return getAncestorByClass(node, "logRow"); } - var search = new TextSearch(this.panelNode, findRow); - - var logRow = search.find(text); - if (!logRow) - { - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]); - return false; - } - for (; logRow; logRow = search.findNext()) - { - setClass(logRow, "matched"); - this.matchSet.push(logRow); - } - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]); - return true; - }, - - breakOnNext: function(breaking) - { - Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // private - - createRow: function(rowName, className) - { - var elt = this.document.createElement("div"); - elt.className = rowName + (className ? " " + rowName + "-" + className : ""); - return elt; - }, - - getTopContainer: function() - { - if (this.groups && this.groups.length) - return this.groups[this.groups.length-1]; - else - return this.panelNode; - }, - - filterLogRow: function(logRow, scrolledToBottom) - { - if (this.searchText) - { - setClass(logRow, "matching"); - setClass(logRow, "matched"); - - // Search after a delay because we must wait for a frame to be created for - // the new logRow so that the finder will be able to locate it - setTimeout(bindFixed(function() - { - if (this.searchFilter(this.searchText, logRow)) - this.matchSet.push(logRow); - else - removeClass(logRow, "matched"); - - removeClass(logRow, "matching"); - - if (scrolledToBottom) - scrollToBottom(this.panelNode); - }, this), 100); - } - }, - - searchFilter: function(text, logRow) - { - var count = this.panelNode.childNodes.length; - var searchRange = this.document.createRange(); - searchRange.setStart(this.panelNode, 0); - searchRange.setEnd(this.panelNode, count); - - var startPt = this.document.createRange(); - startPt.setStartBefore(logRow); - - var endPt = this.document.createRange(); - endPt.setStartAfter(logRow); - - return finder.Find(text, searchRange, startPt, endPt) != null; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - // xxxHonza check this out. - var prefDomain = "Firebug.extension."; - var prefName = data.substr(prefDomain.length); - if (prefName == "console.logLimit") - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = 1000; - //TODO: xxxpedro preferences log limit? - //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - }, - - showCommandLine: function(shouldShow) - { - //TODO: xxxpedro show command line important - return; - - if (shouldShow) - { - collapse(Firebug.chrome.$("fbCommandBox"), false); - Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome); - } - else - { - // Make sure that entire content of the Console panel is hidden when - // the panel is disabled. - Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine); - collapse(Firebug.chrome.$("fbCommandBox"), true); - } - }, - - onScroll: function(event) - { - // Update the scroll position flag if the position changes. - this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", wasScrolledToBottom: " + - this.context.getName(), event); - }, - - onResize: function(event) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight + - ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " + - this.panelNode.scrollHeight + ", " + this.context.getName(), event); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - } -}); - -// ************************************************************************************************ - -function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -} - -// ************************************************************************************************ - -var appendObject = Firebug.ConsolePanel.prototype.appendObject; -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted; -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup; -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup; - -// ************************************************************************************************ - -//Firebug.registerActivableModule(Firebug.Console); -Firebug.registerModule(Firebug.Console); -Firebug.registerPanel(Firebug.ConsolePanel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -var frameCounters = {}; -var traceRecursion = 0; - -Firebug.Console.injector = -{ - install: function(context) - { - var win = context.window; - - var consoleHandler = new FirebugConsoleHandler(context, win); - - var properties = - [ - "log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd", - "count", - "trace", - "profile", - "profileEnd", - "clear", - "open", - "close" - ]; - - var Handler = function(name) - { - var c = consoleHandler; - var f = consoleHandler[name]; - return function(){return f.apply(c,arguments)}; - }; - - var installer = function(c) - { - for (var i=0, l=properties.length; i 1) - { - traceRecursion--; - return; - } - - var frames = []; - - for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller) - { - if (wasVisited(fn)) break; - - var args = []; - - for (var i = 0, l = fn.arguments.length; i < l; ++i) - { - args.push({value: fn.arguments[i]}); - } - - frames.push({fn: fn, name: getFuncName(fn), args: args}); - } - - - // **************************************************************************************** - - try - { - (0)(); - } - catch(e) - { - var result = e; - - var stack = - result.stack || // Firefox / Google Chrome - result.stacktrace || // Opera - ""; - - stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks - var items = stack.split(/[\n\r]/); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Google Chrome - if (FBL.isSafari) - { - //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/; - //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - - var reChromeStackItemName = /\s*\($/; - var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/; - - var framePos = 0; - for (var i=4, length=items.length; i 1) - { - objects = [errorObject]; - for (var i = 1; i < args.length; i++) - objects.push(args[i]); - } - - var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle - row.scrollIntoView(); - } - - function getComponentsStackDump() - { - // Starting with our stack, walk back to the user-level code - var frame = Components.stack; - var userURL = win.location.href.toString(); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame); - - // Drop frames until we get into user code. - while (frame && FBL.isSystemURL(frame.filename) ) - frame = frame.caller; - - // Drop two more frames, the injected console function and firebugAppendConsole() - if (frame) - frame = frame.caller; - if (frame) - frame = frame.caller; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame); - - return frame; - } - - function getStackLink() - { - // TODO: xxxpedro console2 - return; - //return FBL.getFrameSourceLink(getComponentsStackDump()); - } - - function getJSDUserStack() - { - var trace = FBL.getCurrentStackTrace(context); - - var frames = trace ? trace.frames : null; - if (frames && (frames.length > 0) ) - { - var oldest = frames.length - 1; // 6 - 1 = 5 - for (var i = 0; i < frames.length; i++) - { - if (frames[oldest - i].href.indexOf("chrome:") == 0) break; - var fn = frames[oldest - i].fn + ""; - if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break; // command line - } - FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace); - trace.frames = trace.frames.slice(2 - i); // take the oldest frames, leave 2 behind they are injection code - - return trace; - } - else - return "Firebug failed to get stack trace with any frames"; - } -} - -// ************************************************************************************************ -// Register console namespace - -FBL.registerConsole = function() -{ - //TODO: xxxpedro console options override - //if (Env.Options.overrideConsole) - var win = Env.browser.window; - Firebug.Console.injector.install(win); -}; - -registerConsole(); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -// ************************************************************************************************ -// Globals - -var commandPrefix = ">>>"; -var reOpenBracket = /[\[\(\{]/; -var reCloseBracket = /[\]\)\}]/; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var commandHistory = []; -var commandPointer = -1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var isAutoCompleting = null; -var autoCompletePrefix = null; -var autoCompleteExpr = null; -var autoCompleteBuffer = null; -var autoCompletePosition = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var fbCommandLine = null; -var fbLargeCommandLine = null; -var fbLargeCommandButtons = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _completion = -{ - window: - [ - "console" - ], - - document: - [ - "getElementById", - "getElementsByTagName" - ] -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _stack = function(command) -{ - commandHistory.push(command); - commandPointer = commandHistory.length; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -// ************************************************************************************************ -// CommandLine - -Firebug.CommandLine = extend(Firebug.Module, -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - element: null, - isMultiLine: false, - isActive: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - initialize: function(doc) - { - this.clear = bind(this.clear, this); - this.enter = bind(this.enter, this); - - this.onError = bind(this.onError, this); - this.onKeyDown = bind(this.onKeyDown, this); - this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this); - - addEvent(Firebug.browser.window, "error", this.onError); - addEvent(Firebug.chrome.window, "error", this.onError); - }, - - shutdown: function(doc) - { - this.deactivate(); - - removeEvent(Firebug.browser.window, "error", this.onError); - removeEvent(Firebug.chrome.window, "error", this.onError); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - activate: function(multiLine, hideToggleIcon, onRun) - { - defineCommandLineAPI(); - - if (this.isActive) - { - if (this.isMultiLine == multiLine) return; - - this.deactivate(); - } - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - if (multiLine) - { - onRun = onRun || this.enter; - - this.isMultiLine = true; - - this.element = fbLargeCommandLine; - - addEvent(this.element, "keydown", this.onMultiLineKeyDown); - - addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton = new Button({ - element: $("fbCommand_btRun"), - owner: Firebug.CommandLine, - onClick: onRun - }); - - this.runButton.initialize(); - - this.clearButton = new Button({ - element: $("fbCommand_btClear"), - owner: Firebug.CommandLine, - onClick: this.clear - }); - - this.clearButton.initialize(); - } - else - { - this.isMultiLine = false; - this.element = fbCommandLine; - - if (!fbCommandLine) - return; - - addEvent(this.element, "keydown", this.onKeyDown); - } - - //Firebug.Console.log("activate", this.element); - - if (isOpera) - fixOperaTabKey(this.element); - - if(this.lastValue) - this.element.value = this.lastValue; - - this.isActive = true; - }, - - deactivate: function() - { - if (!this.isActive) return; - - //Firebug.Console.log("deactivate", this.element); - - this.isActive = false; - - this.lastValue = this.element.value; - - if (this.isMultiLine) - { - removeEvent(this.element, "keydown", this.onMultiLineKeyDown); - - removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton.destroy(); - this.clearButton.destroy(); - } - else - { - removeEvent(this.element, "keydown", this.onKeyDown); - } - - this.element = null - delete this.element; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focus: function() - { - this.element.focus(); - }, - - blur: function() - { - this.element.blur(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - clear: function() - { - this.element.value = ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - evaluate: function(expr) - { - // TODO: need to register the API in console.firebug.commandLineAPI - var api = "Firebug.CommandLine.API" - - var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error); - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - enter: function() - { - var command = this.element.value; - - if (!command) return; - - _stack(command); - - Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text); - - var result = this.evaluate(command); - - Firebug.Console.log(result); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - prevCommand: function() - { - if (commandPointer > 0 && commandHistory.length > 0) - this.element.value = commandHistory[--commandPointer]; - }, - - nextCommand: function() - { - var element = this.element; - - var limit = commandHistory.length -1; - var i = commandPointer; - - if (i < limit) - element.value = commandHistory[++commandPointer]; - - else if (i == limit) - { - ++commandPointer; - element.value = ""; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - autocomplete: function(reverse) - { - var element = this.element; - - var command = element.value; - var offset = getExpressionOffset(command); - - var valBegin = offset ? command.substr(0, offset) : ""; - var val = command.substr(offset); - - var buffer, obj, objName, commandBegin, result, prefix; - - // if it is the beginning of the completion - if(!isAutoCompleting) - { - - // group1 - command begin - // group2 - base object - // group3 - property prefix - var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/; - var r = reObj.exec(val); - - // parse command - if (r[1] || r[2] || r[3]) - { - commandBegin = r[1] || ""; - objName = r[2] || ""; - prefix = r[3] || ""; - } - else if (val == "") - { - commandBegin = objName = prefix = ""; - } else - return; - - isAutoCompleting = true; - - // find base object - if(objName == "") - obj = window; - - else - { - objName = objName.replace(/\.$/, ""); - - var n = objName.split("."); - var target = window, o; - - for (var i=0, ni; ni = n[i]; i++) - { - if (o = target[ni]) - target = o; - - else - { - target = null; - break; - } - } - obj = target; - } - - // map base object - if(obj) - { - autoCompletePrefix = prefix; - autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : ""); - autoCompletePosition = -1; - - buffer = autoCompleteBuffer = isIE ? - _completion[objName || "window"] || [] : []; - - for(var p in obj) - buffer.push(p); - } - - // if it is the continuation of the last completion - } else - buffer = autoCompleteBuffer; - - if (buffer) - { - prefix = autoCompletePrefix; - - var diff = reverse ? -1 : 1; - - for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i', msg, '', - '' - ]; - - // TODO: xxxpedro ajust to Console2 - //Firebug.Console.writeRow(html, "error"); - }, - - onKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - /*tab, shift, control, alt*/ - if (code != 9 && code != 16 && code != 17 && code != 18) - { - isAutoCompleting = false; - } - - if (code == 13 /* enter */) - { - this.enter(); - this.clear(); - } - else if (code == 27 /* ESC */) - { - setTimeout(this.clear, 0); - } - else if (code == 38 /* up */) - { - this.prevCommand(); - } - else if (code == 40 /* down */) - { - this.nextCommand(); - } - else if (code == 9 /* tab */) - { - this.autocomplete(e.shiftKey); - } - else - return; - - cancelEvent(e, true); - return false; - }, - - onMultiLineKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - if (code == 13 /* enter */ && e.ctrlKey) - { - this.enter(); - } - } -}); - -Firebug.registerModule(Firebug.CommandLine); - - -// ************************************************************************************************ -// - -function getExpressionOffset(command) -{ - // XXXjoe This is kind of a poor-man's JavaScript parser - trying - // to find the start of the expression that the cursor is inside. - // Not 100% fool proof, but hey... - - var bracketCount = 0; - - var start = command.length-1; - for (; start >= 0; --start) - { - var c = command[start]; - if ((c == "," || c == ";" || c == " ") && !bracketCount) - break; - if (reOpenBracket.test(c)) - { - if (bracketCount) - --bracketCount; - else - break; - } - else if (reCloseBracket.test(c)) - ++bracketCount; - } - - return start + 1; -} - -// ************************************************************************************************ -// CommandLine API - -var CommandLineAPI = -{ - $: function(id) - { - return Firebug.browser.document.getElementById(id) - }, - - $$: function(selector, context) - { - context = context || Firebug.browser.document; - return Firebug.Selector ? - Firebug.Selector(selector, context) : - Firebug.Console.error("Firebug.Selector module not loaded."); - }, - - $0: null, - - $1: null, - - dir: function(o) - { - Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable); - }, - - dirxml: function(o) - { - ///if (o instanceof Window) - if (instanceOf(o, "Window")) - o = o.document.documentElement; - ///else if (o instanceof Document) - else if (instanceOf(o, "Document")) - o = o.documentElement; - - // TODO: xxxpedro html3 - ///Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement); - var div = Firebug.Console.log(o, Firebug.context, "dirxml"); - var html = []; - Firebug.Reps.appendNode(o, html); - div.innerHTML = html.join(""); - - } -}; - -// ************************************************************************************************ - -var defineCommandLineAPI = function defineCommandLineAPI() -{ - Firebug.CommandLine.API = {}; - for (var m in CommandLineAPI) - if (!Env.browser.window[m]) - Firebug.CommandLine.API[m] = CommandLineAPI[m]; - - var stack = FirebugChrome.htmlSelectionStack; - if (stack) - { - Firebug.CommandLine.API.$0 = stack[0]; - Firebug.CommandLine.API.$1 = stack[1]; - } -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -if (Env.Options.disableXHRListener) - return; - -// ************************************************************************************************ -// XHRSpy - -var XHRSpy = function() -{ - this.requestHeaders = []; - this.responseHeaders = []; -}; - -XHRSpy.prototype = -{ - method: null, - url: null, - async: null, - - xhrRequest: null, - - href: null, - - loaded: false, - - logRow: null, - - responseText: null, - - requestHeaders: null, - responseHeaders: null, - - sourceLink: null, // {href:"file.html", line: 22} - - getURL: function() - { - return this.href; - } -}; - -// ************************************************************************************************ -// XMLHttpRequestWrapper - -var XMLHttpRequestWrapper = function(activeXObject) -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal variables - - var xhrRequest = typeof activeXObject != "undefined" ? - activeXObject : - new _XMLHttpRequest(), - - spy = new XHRSpy(), - - self = this, - - reqType, - reqUrl, - reqStartTS; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal methods - - var updateSelfPropertiesIgnore = { - abort: 1, - channel: 1, - getAllResponseHeaders: 1, - getInterface: 1, - getResponseHeader: 1, - mozBackgroundRequest: 1, - multipart: 1, - onreadystatechange: 1, - open: 1, - send: 1, - setRequestHeader: 1 - }; - - var updateSelfProperties = function() - { - if (supportsXHRIterator) - { - for (var propName in xhrRequest) - { - if (propName in updateSelfPropertiesIgnore) - continue; - - try - { - var propValue = xhrRequest[propName]; - - if (propValue && !isFunction(propValue)) - self[propName] = propValue; - } - catch(E) - { - //console.log(propName, E.message); - } - } - } - else - { - // will fail to read these xhrRequest properties if the request is not completed - if (xhrRequest.readyState == 4) - { - self.status = xhrRequest.status; - self.statusText = xhrRequest.statusText; - self.responseText = xhrRequest.responseText; - self.responseXML = xhrRequest.responseXML; - } - } - }; - - var updateXHRPropertiesIgnore = { - channel: 1, - onreadystatechange: 1, - readyState: 1, - responseBody: 1, - responseText: 1, - responseXML: 1, - status: 1, - statusText: 1, - upload: 1 - }; - - var updateXHRProperties = function() - { - for (var propName in self) - { - if (propName in updateXHRPropertiesIgnore) - continue; - - try - { - var propValue = self[propName]; - - if (propValue && !xhrRequest[propName]) - { - xhrRequest[propName] = propValue; - } - } - catch(E) - { - //console.log(propName, E.message); - } - } - }; - - var logXHR = function() - { - var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR); - - if (row) - { - setClass(row, "loading"); - spy.logRow = row; - } - }; - - var finishXHR = function() - { - var duration = new Date().getTime() - reqStartTS; - var success = xhrRequest.status == 200; - - var responseHeadersText = xhrRequest.getAllResponseHeaders(); - var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : []; - var reHeader = /^(\S+):\s*(.*)/; - - for (var i=0, l=responses.length; i 0; - - /**/ - - return this; -}; - -// ************************************************************************************************ -// ActiveXObject Wrapper (IE6 only) - -var _ActiveXObject; -var isIE6 = /msie 6/i.test(navigator.appVersion); - -if (isIE6) -{ - _ActiveXObject = window.ActiveXObject; - - var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; - - window.ActiveXObject = function(name) - { - var error = null; - - try - { - var activeXObject = new _ActiveXObject(name); - } - catch(e) - { - error = e; - } - finally - { - if (!error) - { - if (xhrObjects.indexOf(" " + name + " ") != -1) - return new XMLHttpRequestWrapper(activeXObject); - else - return activeXObject; - } - else - throw error.message; - } - }; -} - -// ************************************************************************************************ - -// Register the XMLHttpRequestWrapper for non-IE6 browsers -if (!isIE6) -{ - var _XMLHttpRequest = XMLHttpRequest; - window.XMLHttpRequest = function() - { - return new XMLHttpRequestWrapper(); - }; -} - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval = 300; -var indentWidth = 18; - -var cacheSession = null; -var contexts = new Array(); -var panelName = "net"; -var maxQueueRequests = 500; -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup -var activeRequests = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var mimeExtensionMap = -{ - "txt": "text/plain", - "html": "text/html", - "htm": "text/html", - "xhtml": "text/html", - "xml": "text/xml", - "css": "text/css", - "js": "application/x-javascript", - "jss": "application/x-javascript", - "jpg": "image/jpg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "png": "image/png", - "bmp": "image/bmp", - "swf": "application/x-shockwave-flash", - "flv": "video/x-flv" -}; - -var fileCategories = -{ - "undefined": 1, - "html": 1, - "css": 1, - "js": 1, - "xhr": 1, - "image": 1, - "flash": 1, - "txt": 1, - "bin": 1 -}; - -var textFileCategories = -{ - "txt": 1, - "html": 1, - "xhr": 1, - "css": 1, - "js": 1 -}; - -var binaryFileCategories = -{ - "bin": 1, - "flash": 1 -}; - -var mimeCategoryMap = -{ - "text/plain": "txt", - "application/octet-stream": "bin", - "text/html": "html", - "text/xml": "html", - "text/css": "css", - "application/x-javascript": "js", - "text/javascript": "js", - "application/javascript" : "js", - "image/jpeg": "image", - "image/jpg": "image", - "image/gif": "image", - "image/png": "image", - "image/bmp": "image", - "application/x-shockwave-flash": "flash", - "video/x-flv": "flash" -}; - -var binaryCategoryMap = -{ - "image": 1, - "flash" : 1 -}; - -// ************************************************************************************************ - -/** - * @module Represents a module object for the Net panel. This object is derived - * from Firebug.ActivableModule in order to support activation (enable/disable). - * This allows to avoid (performance) expensive features if the functionality is not necessary - * for the user. - */ -Firebug.NetMonitor = extend(Firebug.ActivableModule, -{ - dispatchName: "netMonitor", - - clear: function(context) - { - // The user pressed a Clear button so, remove content of the panel... - var panel = context.getPanel(panelName, true); - if (panel) - panel.clear(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - return; - - this.panelName = panelName; - - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - // HTTP observer must be registered now (and not in monitorContext, since if a - // page is opened in a new tab the top document request would be missed otherwise. - NetHttpObserver.registerObserver(); - NetHttpActivityObserver.registerObserver(); - - Firebug.Debugger.addListener(this.DebuggerListener); - }, - - shutdown: function() - { - return; - - prefs.removeObserver(Firebug.prefDomain, this, false); - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - - NetHttpObserver.unregisterObserver(); - NetHttpActivityObserver.unregisterObserver(); - - Firebug.Debugger.removeListener(this.DebuggerListener); - } -}); - - -/** - * @domplate Represents a template that is used to reneder detailed info about a request. - * This template is rendered when a request is expanded. - */ -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoBody", _repObject: "$file"}, - TAG("$infoTabs", {file: "$file"}), - TAG("$infoBodies", {file: "$file"}) - ), - - infoTabs: - DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"}, - A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Params", - $collapsed: "$file|hideParams"}, - $STR("URLParameters") - ), - A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Headers"}, - $STR("Headers") - ), - A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Post", - $collapsed: "$file|hidePost"}, - $STR("Post") - ), - A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Put", - $collapsed: "$file|hidePut"}, - $STR("Put") - ), - A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Response", - $collapsed: "$file|hideResponse"}, - $STR("Response") - ), - A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Cache", - $collapsed: "$file|hideCache"}, - $STR("Cache") - ), - A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Html", - $collapsed: "$file|hideHtml"}, - $STR("HTML") - ) - ), - - infoBodies: - DIV({"class": "netInfoBodies outerFocusRow"}, - TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel", - cellpadding: 0, cellspacing: 0}, TBODY()), - DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}), - PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"}, - TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("Cache")}) - ) - ), - DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"}, - IFRAME({"class": "netInfoHtmlPreview", "role": "document"}) - ) - ), - - headerDataTag: - FOR("param", "$headers", - TR({"role": "listitem"}, - TD({"class": "netInfoParamName", "role": "presentation"}, - TAG("$param|getNameTag", {param: "$param"}) - ), - TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line") - ) - ) - ) - ), - - customTab: - A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"}, - "$tabTitle" - ), - - customBody: - DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - nameTag: - SPAN("$param|getParamName"), - - nameWithTooltipTag: - SPAN({title: "$param.name"}, "$param|getParamName"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getNameTag: function(param) - { - return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag; - }, - - getParamName: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - name = name.substr(0, limit) + "..."; - return name; - }, - - getParamTitle: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - return name; - return ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - hideParams: function(file) - { - return !file.urlParams || !file.urlParams.length; - }, - - hidePost: function(file) - { - return file.method.toUpperCase() != "POST"; - }, - - hidePut: function(file) - { - return file.method.toUpperCase() != "PUT"; - }, - - hideResponse: function(file) - { - return false; - //return file.category in binaryFileCategories; - }, - - hideCache: function(file) - { - return true; - //xxxHonza: I don't see any reason why not to display the cache also info for images. - return !file.cacheEntry; // || file.category=="image"; - }, - - hideHtml: function(file) - { - return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml"); - }, - - onClickTab: function(event) - { - this.selectTab(event.currentTarget || event.srcElement); - }, - - getParamValueIterator: function(param) - { - // TODO: xxxpedro console2 - return param.value; - - // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210). - // This is why the second parameter is true. - // The CODE (with style white-space:pre) element preserves whitespaces so they are - // displayed the same, as they come from the server (1194). - // In case of a long header values of post parameters the value must be wrapped (2105). - return wrapText(param.value, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - appendTab: function(netInfoBox, tabId, tabTitle) - { - // Create new tab and body. - var args = {tabId: tabId, tabTitle: tabTitle}; - ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0)); - ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0)); - this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]); - this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]); - }, - - selectTabByName: function(netInfoBox, tabName) - { - var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab"); - if (tab) - this.selectTab(tab); - }, - - selectTab: function(tab) - { - var view = tab.getAttribute("view"); - - var netInfoBox = getAncestorByClass(tab, "netInfoBody"); - - var selectedTab = netInfoBox.selectedTab; - - if (selectedTab) - { - //netInfoBox.selectedText.removeAttribute("selected"); - removeClass(netInfoBox.selectedText, "netInfoTextSelected"); - - removeClass(selectedTab, "netInfoTabSelected"); - //selectedTab.removeAttribute("selected"); - selectedTab.setAttribute("aria-selected", "false"); - } - - var textBodyName = "netInfo" + view + "Text"; - - selectedTab = netInfoBox.selectedTab = tab; - - netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0]; - //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0); - - //netInfoBox.selectedText.setAttribute("selected", "true"); - setClass(netInfoBox.selectedText, "netInfoTextSelected"); - - setClass(selectedTab, "netInfoTabSelected"); - selectedTab.setAttribute("selected", "true"); - selectedTab.setAttribute("aria-selected", "true"); - - var file = Firebug.getRepObject(netInfoBox); - - //var context = Firebug.getElementPanel(netInfoBox).context; - var context = Firebug.chrome; - - this.updateInfo(netInfoBox, file, context); - }, - - updateInfo: function(netInfoBox, file, context) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.updateInfo; file", file); - - if (!netInfoBox) - { - if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS) - FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file); - return; - } - - var tab = netInfoBox.selectedTab; - - if (hasClass(tab, "netInfoParamsTab")) - { - if (file.urlParams && !netInfoBox.urlParamsPresented) - { - netInfoBox.urlParamsPresented = true; - this.insertHeaderRows(netInfoBox, file.urlParams, "Params"); - } - } - - else if (hasClass(tab, "netInfoHeadersTab")) - { - var headersText = $$(".netInfoHeadersText", netInfoBox)[0]; - //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0); - - if (file.responseHeaders && !netInfoBox.responseHeadersPresented) - { - netInfoBox.responseHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders"); - } - - if (file.requestHeaders && !netInfoBox.requestHeadersPresented) - { - netInfoBox.requestHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders"); - } - } - - else if (hasClass(tab, "netInfoPostTab")) - { - if (!netInfoBox.postPresented) - { - netInfoBox.postPresented = true; - //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0); - var postText = $$(".netInfoPostText", netInfoBox)[0]; - NetInfoPostData.render(context, postText, file); - } - } - - else if (hasClass(tab, "netInfoPutTab")) - { - if (!netInfoBox.putPresented) - { - netInfoBox.putPresented = true; - //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0); - var putText = $$(".netInfoPutText", netInfoBox)[0]; - NetInfoPostData.render(context, putText, file); - } - } - - else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented) - { - ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0); - var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0]; - if (file.category == "image") - { - netInfoBox.responsePresented = true; - - var responseImage = netInfoBox.ownerDocument.createElement("img"); - responseImage.src = file.href; - - clearNode(responseTextBox); - responseTextBox.appendChild(responseImage, responseTextBox); - } - else ///if (!(binaryCategoryMap.hasOwnProperty(file.category))) - { - this.setResponseText(file, netInfoBox, responseTextBox, context); - } - } - - else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented) - { - var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0); - if (file.cacheEntry) { - netInfoBox.cachePresented = true; - this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache"); - } - } - - else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented) - { - netInfoBox.htmlPresented = true; - - var text = Utils.getResponseText(file, context); - - ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0); - var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0]; - - ///iframe.contentWindow.document.body.innerHTML = text; - - // TODO: xxxpedro net - remove scripts - var reScript = //gi; - - text = text.replace(reScript, ""); - - iframe.contentWindow.document.write(text); - iframe.contentWindow.document.close(); - } - - // Notify listeners about update so, content of custom tabs can be updated. - dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]); - }, - - setResponseText: function(file, netInfoBox, responseTextBox, context) - { - //********************************************** - //********************************************** - //********************************************** - netInfoBox.responsePresented = true; - // line breaks somehow are different in IE - // make this only once in the initialization? we don't have net panels and modules yet. - if (isIE) - responseTextBox.style.whiteSpace = "nowrap"; - - responseTextBox[ - typeof responseTextBox.textContent != "undefined" ? - "textContent" : - "innerText" - ] = file.responseText; - - return; - //********************************************** - //********************************************** - //********************************************** - - // Get response text and make sure it doesn't exceed the max limit. - var text = Utils.getResponseText(file, context); - var limit = Firebug.netDisplayedResponseLimit + 15; - var limitReached = text ? (text.length > limit) : false; - if (limitReached) - text = text.substr(0, limit) + "..."; - - // Insert the response into the UI. - if (text) - insertWrappedText(text, responseTextBox); - else - insertWrappedText("", responseTextBox); - - // Append a message informing the user that the response isn't fully displayed. - if (limitReached) - { - var object = { - text: $STR("net.responseSizeLimitMessage"), - onClickLink: function() { - var panel = context.getPanel("net", true); - panel.openResponseInTab(file); - } - }; - Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox); - } - - netInfoBox.responsePresented = true; - - if (FBTrace.DBG_NET) - FBTrace.sysout("net.setResponseText; response text updated"); - }, - - insertHeaderRows: function(netInfoBox, headers, tableName, rowName) - { - if (!headers.length) - return; - - var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0]; - //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0); - var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body"); - if (!tbody) - tbody = headersTable.firstChild; - var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title"); - - this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody); - removeClass(titleRow, "collapsed"); - } -}); - -var NetInfoBody = Firebug.NetMonitor.NetInfoBody; - -// ************************************************************************************************ - -/** - * @domplate Used within the Net panel to display raw source of request and response headers - * as well as pretty-formatted summary of these headers. - */ -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoHeadersTable", "role": "tabpanel"}, - DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"}, - SPAN($STR("ResponseHeaders")), - SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "ResponseHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoResponseHeadersBody", "role": "list", - "aria-label": $STR("ResponseHeaders")}) - ), - DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"}, - SPAN($STR("RequestHeaders")), - SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "RequestHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoRequestHeadersBody", "role": "list", - "aria-label": $STR("RequestHeaders")}) - ) - ), - - sourceTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - PRE({"class": "source"}) - ) - ), - - onViewSource: function(event) - { - var target = event.target; - var requestHeaders = (target.rowName == "RequestHeaders"); - - var netInfoBox = getAncestorByClass(target, "netInfoBody"); - var file = netInfoBox.repObject; - - if (target.sourceDisplayed) - { - var headers = requestHeaders ? file.requestHeaders : file.responseHeaders; - this.insertHeaderRows(netInfoBox, headers, target.rowName); - target.innerHTML = $STR("net.headers.view source"); - } - else - { - var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText; - this.insertSource(netInfoBox, source, target.rowName); - target.innerHTML = $STR("net.headers.pretty print"); - } - - target.sourceDisplayed = !target.sourceDisplayed; - - cancelEvent(event); - }, - - insertSource: function(netInfoBox, source, rowName) - { - // This breaks copy to clipboard. - //if (source) - // source = source.replace(/\r\n/gm, "\\r\\n\r\n"); - - ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0); - var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0]; - var node = this.sourceTag.replace({}, tbody); - ///var sourceNode = node.getElementsByClassName("source").item(0); - var sourceNode = $$(".source", node)[0]; - sourceNode.innerHTML = source; - }, - - insertHeaderRows: function(netInfoBox, headers, rowName) - { - var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0]; - var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0]; - - //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0); - //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0); - - clearNode(tbody); - - if (!headers.length) - return; - - NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody); - - var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title"); - removeClass(titleRow, "collapsed"); - }, - - init: function(parent) - { - var rootNode = this.tag.append({}, parent); - - var netInfoBox = getAncestorByClass(parent, "netInfoBody"); - var file = netInfoBox.repObject; - - var viewSource; - - viewSource = $$(".request", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0); - if (file.requestHeadersText) - removeClass(viewSource, "collapsed"); - - viewSource = $$(".response", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0); - if (file.responseHeadersText) - removeClass(viewSource, "collapsed"); - }, - - renderHeaders: function(parent, headers, rowName) - { - if (!parent.firstChild) - this.init(parent); - - this.insertHeaderRows(parent, headers, rowName); - } -}); - -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders; - -// ************************************************************************************************ - -/** - * @domplate Represents posted data within request info (the info, which is visible when - * a request entry is expanded. This template renders content of the Post tab. - */ -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/ -{ - // application/x-www-form-urlencoded - paramsTable: - TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")}, - TR({"class": "netInfoPostParamsTitle", "role": "presentation"}, - TD({colspan: 3, "role": "presentation"}, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parameters"), - SPAN({"class": "netInfoPostContentType"}, - "application/x-www-form-urlencoded" - ) - ) - ) - ) - ) - ), - - // multipart/form-data - partsTable: - TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parts")}, - TR({"class": "netInfoPostPartsTitle", "role": "presentation"}, - TD({colspan: 2, "role":"presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parts"), - SPAN({"class": "netInfoPostContentType"}, - "multipart/form-data" - ) - ) - ) - ) - ) - ), - - // application/json - jsonTable: - TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")}, - TBODY({"role": "list", "aria-label": $STR("JSON")}, - TR({"class": "netInfoPostJSONTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - ///$STR("jsonviewer.tab.JSON") - $STR("JSON") - ) - ) - ), - TR( - TD({"class": "netInfoPostJSONBody"}) - ) - ) - ), - - // application/xml - xmlTable: - TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")}, - TR({"class": "netInfoPostXMLTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("xmlviewer.tab.XML") - ) - ) - ), - TR( - TD({"class": "netInfoPostXMLBody"}) - ) - ) - ), - - sourceTable: - TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Source")}, - TR({"class": "netInfoPostSourceTitle", "role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - DIV({"class": "netInfoPostSource"}, - $STR("net.label.Source") - ) - ) - ) - ) - ), - - sourceBodyTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line") - ) - ) - ), - - getParamValueIterator: function(param) - { - return NetInfoBody.getParamValueIterator(param); - }, - - render: function(context, parentNode, file) - { - //debugger; - var spy = getAncestorByClass(parentNode, "spyHead"); - var spyObject = spy.repObject; - var data = spyObject.data; - - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - var contentType = file.mimeType; - - ///var text = Utils.getPostText(file, context, true); - ///if (text == undefined) - /// return; - - ///if (Utils.isURLEncodedRequest(file, context)) - // fake Utils.isURLEncodedRequest identification - if (contentType && contentType == "application/x-www-form-urlencoded" || - data && data.indexOf("=") != -1) - { - ///var lines = text.split("\n"); - ///var params = parseURLEncodedText(lines[lines.length-1]); - var params = parseURLEncodedTextArray(data); - if (params) - this.insertParameters(parentNode, params); - } - - ///if (Utils.isMultiPartRequest(file, context)) - ///{ - /// var data = this.parseMultiPartText(file, context); - /// if (data) - /// this.insertParts(parentNode, data); - ///} - - // moved to the top - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - - ///if (Firebug.JSONViewerModel.isJSON(contentType)) - var jsonData = { - responseText: data - }; - - if (Firebug.JSONViewerModel.isJSON(contentType, data)) - ///this.insertJSON(parentNode, file, context); - this.insertJSON(parentNode, jsonData, context); - - ///if (Firebug.XMLViewerModel.isXML(contentType)) - /// this.insertXML(parentNode, file, context); - - ///var postText = Utils.getPostText(file, context); - ///postText = Utils.formatPostText(postText); - var postText = data; - if (postText) - this.insertSource(parentNode, postText); - }, - - insertParameters: function(parentNode, params) - { - if (!params || !params.length) - return; - - var paramTable = this.paramsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostParamsTitle", paramTable)[0]; - //var paramTable = this.paramsTable.append(null, parentNode); - //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0); - - var tbody = paramTable.getElementsByTagName("tbody")[0]; - - NetInfoBody.headerDataTag.insertRows({headers: params}, row); - }, - - insertParts: function(parentNode, data) - { - if (!data.params || !data.params.length) - return; - - var partsTable = this.partsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostPartsTitle", paramTable)[0]; - //var partsTable = this.partsTable.append(null, parentNode); - //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0); - - NetInfoBody.headerDataTag.insertRows({headers: data.params}, row); - }, - - insertJSON: function(parentNode, file, context) - { - ///var text = Utils.getPostText(file, context); - var text = file.responseText; - ///var data = parseJSONString(text, "http://" + file.request.originalURI.host); - var data = parseJSONString(text); - if (!data) - return; - - ///var jsonTable = this.jsonTable.append(null, parentNode); - var jsonTable = this.jsonTable.append({}, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0); - var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0]; - - if (!this.toggles) - this.toggles = {}; - - Firebug.DOMPanel.DirTable.tag.replace( - {object: data, toggles: this.toggles}, jsonBody); - }, - - insertXML: function(parentNode, file, context) - { - var text = Utils.getPostText(file, context); - - var jsonTable = this.xmlTable.append(null, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0); - var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0]; - - Firebug.XMLViewerModel.insertXML(jsonBody, text); - }, - - insertSource: function(parentNode, text) - { - var sourceTable = this.sourceTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostSourceTitle", sourceTable)[0]; - //var sourceTable = this.sourceTable.append(null, parentNode); - //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0); - - var param = {value: [text]}; - this.sourceBodyTag.insertRows({param: param}, row); - }, - - parseMultiPartText: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text == undefined) - return null; - - FBTrace.sysout("net.parseMultiPartText; boundary: ", text); - - var boundary = text.match(/\s*boundary=\s*(.*)/)[1]; - - var divider = "\r\n\r\n"; - var bodyStart = text.indexOf(divider); - var body = text.substr(bodyStart + divider.length); - - var postData = {}; - postData.mimeType = "multipart/form-data"; - postData.params = []; - - var parts = body.split("--" + boundary); - for (var i=0; i 1) ? m[1] : "", - value: trim(part[1]) - }); - } - - return postData; - } -}); - -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData; - -// ************************************************************************************************ - - -// TODO: xxxpedro net i18n -var $STRP = function(a){return a;}; - -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep, -{ - collapsed: true, - - tableTag: - DIV( - TABLE({width: "100%", cellpadding: 0, cellspacing: 0}, - TBODY() - ) - ), - - limitTag: - TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"}, - TD({"class": "netCol netLimitCol", colspan: 6}, - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY( - TR( - TD( - SPAN({"class": "netLimitLabel"}, - $STRP("plural.Limit_Exceeded", [0]) - ) - ), - TD({style: "width:100%"}), - TD( - BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle", - onclick: "$onPreferences"}, - $STR("LimitPrefs") - ) - ), - TD(" ") - ) - ) - ) - ) - ), - - isCollapsed: function() - { - return this.collapsed; - }, - - onPreferences: function(event) - { - openNewTab("about:config"); - }, - - updateCounter: function(row) - { - removeClass(row, "collapsed"); - - // Update info within the limit row. - var limitLabel = row.getElementsByClassName("netLimitLabel").item(0); - limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]); - }, - - createTable: function(parent, limitInfo) - { - var table = this.tableTag.replace({}, parent); - var row = this.createRow(table.firstChild.firstChild, limitInfo); - return [table, row]; - }, - - createRow: function(parent, limitInfo) - { - var row = this.limitTag.insertRows(limitInfo, parent, this)[0]; - row.limitInfo = limitInfo; - return row; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - if (data.indexOf("net.logLimit") != -1) - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - } -}); - -var NetLimit = Firebug.NetMonitor.NetLimit; - -// ************************************************************************************************ - -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "netInfoResponseSizeLimit"}, - SPAN("$object.beforeLink"), - A({"class": "objectLink", onclick: "$onClickLink"}, - "$object.linkText" - ), - SPAN("$object.afterLink") - ), - - reLink: /^(.*)(.*)<\/a>(.*$)/, - append: function(obj, parent) - { - var m = obj.text.match(this.reLink); - return this.tag.append({onClickLink: obj.onClickLink, - object: { - beforeLink: m[1], - linkText: m[2], - afterLink: m[3] - }}, parent, this); - } -}); - -// ************************************************************************************************ -// ************************************************************************************************ - -Firebug.NetMonitor.Utils = -{ - findHeader: function(headers, name) - { - if (!headers) - return null; - - name = name.toLowerCase(); - for (var i = 0; i < headers.length; ++i) - { - var headerName = headers[i].name.toLowerCase(); - if (headerName == name) - return headers[i].value; - } - }, - - formatPostText: function(text) - { - if (text instanceof XMLDocument) - return getElementXML(text.documentElement); - else - return text; - }, - - getPostText: function(file, context, noLimit) - { - if (!file.postText) - { - file.postText = readPostTextFromRequest(file.request, context); - - if (!file.postText && context) - file.postText = readPostTextFromPage(file.href, context); - } - - if (!file.postText) - return file.postText; - - var limit = Firebug.netDisplayedPostBodyLimit; - if (file.postText.length > limit && !noLimit) - { - return cropString(file.postText, limit, - "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n"); - } - - return file.postText; - }, - - getResponseText: function(file, context) - { - // The response can be also empty string so, check agains "undefined". - return (typeof(file.responseText) != "undefined")? file.responseText : - context.sourceCache.loadText(file.href, file.method, file); - }, - - isURLEncodedRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0) - return true; - - // The header value doesn't have to be always exactly "application/x-www-form-urlencoded", - // there can be even charset specified. So, use indexOf rather than just "==". - var headerValue = Utils.findHeader(file.requestHeaders, "content-type"); - if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0) - return true; - - return false; - }, - - isMultiPartRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0) - return true; - return false; - }, - - getMimeType: function(mimeType, uri) - { - if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType))) - { - var ext = getFileExtension(uri); - if (!ext) - return mimeType; - else - { - var extMimeType = mimeExtensionMap[ext.toLowerCase()]; - return extMimeType ? extMimeType : mimeType; - } - } - else - return mimeType; - }, - - getDateFromSeconds: function(s) - { - var d = new Date(); - d.setTime(s*1000); - return d; - }, - - getHttpHeaders: function(request, file) - { - try - { - var http = QI(request, Ci.nsIHttpChannel); - file.status = request.responseStatus; - - // xxxHonza: is there any problem to do this in requestedFile method? - file.method = http.requestMethod; - file.urlParams = parseURLParams(file.href); - file.mimeType = Utils.getMimeType(request.contentType, request.name); - - if (!file.responseHeaders && Firebug.collectHttpHeaders) - { - var requestHeaders = [], responseHeaders = []; - - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - requestHeaders.push({name: name, value: value}); - } - }); - http.visitResponseHeaders({ - visitHeader: function(name, value) - { - responseHeaders.push({name: name, value: value}); - } - }); - - file.requestHeaders = requestHeaders; - file.responseHeaders = responseHeaders; - } - } - catch (exc) - { - // An exception can be throwed e.g. when the request is aborted and - // request.responseStatus is accessed. - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc); - } - }, - - isXHR: function(request) - { - try - { - var callbacks = request.notificationCallbacks; - var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null; - if (FBTrace.DBG_NET) - FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request)); - - return (xhrRequest != null); - } - catch (exc) - { - } - - return false; - }, - - getFileCategory: function(file) - { - if (file.category) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file); - return file.category; - } - - if (file.isXHR) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file); - return file.category = "xhr"; - } - - if (!file.mimeType) - { - var ext = getFileExtension(file.href); - if (ext) - file.mimeType = mimeExtensionMap[ext.toLowerCase()]; - } - - /*if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] + - ", mimeType: " + file.mimeType + " for: " + file.href, file);*/ - - if (!file.mimeType) - return ""; - - // Solve cases when charset is also specified, eg "text/html; charset=UTF-8". - var mimeType = file.mimeType; - if (mimeType) - mimeType = mimeType.split(";")[0]; - - return (file.category = mimeCategoryMap[mimeType]); - } -}; - -var Utils = Firebug.NetMonitor.Utils; - -// ************************************************************************************************ - -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable); -//Firebug.registerActivableModule(Firebug.NetMonitor); -//Firebug.registerPanel(NetPanel); - -Firebug.registerModule(Firebug.NetMonitor); -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -// List of contexts with XHR spy attached. -var contexts = []; - -// ************************************************************************************************ -// Spy Module - -/** - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor - * XHR activity of the current page and create appropriate log into the Console panel. - * This feature can be controlled by an option Show XMLHttpRequests (from within the - * console panel). - * - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is - * activated/deactivated for a site. - */ -Firebug.Spy = extend(Firebug.Module, -/** @lends Firebug.Spy */ -{ - dispatchName: "spy", - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - Firebug.Module.initialize.apply(this, arguments); - }, - - shutdown: function() - { - Firebug.Module.shutdown.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - }, - - initContext: function(context) - { - context.spies = []; - - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, context.window); - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName()); - }, - - destroyContext: function(context) - { - // For any spies that are in progress, remove our listeners so that they don't leak - this.detachObserver(context, null); - - if (FBTrace.DBG_SPY && context.spies.length) - FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies (" - + context.spies.length + ") " + context.getName()); - - delete context.spies; - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName()); - }, - - watchWindow: function(context, win) - { - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, win); - }, - - unwatchWindow: function(context, win) - { - try - { - // This make sure that the existing context is properly removed from "contexts" array. - this.detachObserver(context, win); - } - catch (ex) - { - // Get exceptions here sometimes, so let's just ignore them - // since the window is going away anyhow - ERROR(ex); - } - }, - - updateOption: function(name, value) - { - // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called, - // but somehow seems not correct - if (name == "showXMLHttpRequests") - { - var tach = value ? this.attachObserver : this.detachObserver; - for (var i = 0; i < TabWatcher.contexts.length; ++i) - { - var context = TabWatcher.contexts[i]; - iterateWindows(context.window, function(win) - { - tach.apply(this, [context, win]); - }); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Attaching Spy to XHR requests. - - /** - * Returns false if Spy should not be attached to XHRs executed by the specified window. - */ - skipSpy: function(win) - { - if (!win) - return true; - - // Don't attach spy to chrome. - var uri = safeGetWindowLocation(win); - if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0)) - return true; - }, - - attachObserver: function(context, win) - { - if (Firebug.Spy.skipSpy(win)) - return; - - for (var i=0; insIHttpChannel. - * Returns null if the request doesn't represent XHR. - */ - getXHR: function(request) - { - // Does also query-interface for nsIHttpChannel. - if (!(request instanceof Ci.nsIHttpChannel)) - return null; - - try - { - var callbacks = request.notificationCallbacks; - return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null); - } - catch (exc) - { - if (exc.name == "NS_NOINTERFACE") - { - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " + - safeGetRequestName(request)); - } - } - - return null; - } -}); - - - - - -// ************************************************************************************************ - -/* -function getSpyForXHR(request, xhrRequest, context, noCreate) -{ - var spy = null; - - // Iterate all existing spy objects in this context and look for one that is - // already created for this request. - var length = context.spies.length; - for (var i=0; i= 3) - { - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (netInfoBox) - { - netInfoBox.htmlPresented = false; - netInfoBox.responsePresented = false; - } - } - - // If the request is loading update the end time. - if (spy.xhrRequest.readyState == 3) - { - spy.responseTime = spy.endTime - spy.sendTime; - updateTime(spy); - } - - // Request loaded. Get all the info from the request now, just in case the - // XHR would be aborted in the original onReadyStateChange handler. - if (spy.xhrRequest.readyState == 4) - { - // Cumulate response so, multipart response content is properly displayed. - if (SpyHttpActivityObserver.getActivityDistributor()) - spy.responseText += spy.xhrRequest.responseText; - else - { - // xxxHonza: remove from FB 1.6 - if (!spy.responseText) - spy.responseText = spy.xhrRequest.responseText; - } - - // The XHR is loaded now (used also by the activity observer). - spy.loaded = true; - - // Update UI. - updateHttpSpyInfo(spy); - - // Notify Net pane about a request beeing loaded. - // xxxHonza: I don't think this is necessary. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); - - // Notify registered listeners about finish of the XHR. - dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]); - } - - // Pass the event to the original page handler. - callPageHandler(spy, event, originalHandler); -} - -function onHTTPSpyLoad(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy); - - // Detach must be done in onLoad (not in onreadystatechange) otherwise - // onAbort would not be handled. - spy.detach(); - - // xxxHonza: Still needed for Fx 3.5 (#502959) - if (!SpyHttpActivityObserver.getActivityDistributor()) - onHTTPSpyReadyStateChange(spy, null); -} - -function onHTTPSpyError(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } -} - -function onHTTPSpyAbort(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } - - spy.statusText = "Aborted"; - updateLogRow(spy); - - // Notify Net pane about a request beeing aborted. - // xxxHonza: the net panel shoud find out this itself. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); -} -/**/ - -// ************************************************************************************************ - -/** - * @domplate Represents a template for XHRs logged in the Console panel. The body of the - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}. - */ - -Firebug.Spy.XHR = domplate(Firebug.Rep, -/** @lends Firebug.Spy.XHR */ - -{ - tag: - DIV({"class": "spyHead", _repObject: "$object"}, - TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0, - "role": "listitem", "aria-expanded": "false"}, - TBODY({"role": "presentation"}, - TR({"class": "spyRow"}, - TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"}, - DIV({"class": "spyTitle"}, - "$object|getCaption" - ), - DIV({"class": "spyFullTitle spyTitle"}, - "$object|getFullUri" - ) - ), - TD({"class": "spyCol"}, - DIV({"class": "spyStatus"}, "$object|getStatus") - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyIcon"}) - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyTime"}) - ), - TD({"class": "spyCol"}, - TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"}) - ) - ) - ) - ) - ), - - getCaption: function(spy) - { - return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100); - }, - - getFullUri: function(spy) - { - return spy.method.toUpperCase() + " " + spy.getURL(); - }, - - getStatus: function(spy) - { - var text = ""; - if (spy.statusCode) - text += spy.statusCode + " "; - - if (spy.statusText) - return text += spy.statusText; - - return text; - }, - - onToggleBody: function(event) - { - var target = event.currentTarget || event.srcElement; - var logRow = getAncestorByClass(target, "logRow-spy"); - - if (isLeftClick(event)) - { - toggleClass(logRow, "opened"); - - var spy = getChildByClass(logRow, "spyHead").repObject; - var spyHeadTable = getAncestorByClass(target, "spyHeadTable"); - - if (hasClass(logRow, "opened")) - { - updateHttpSpyInfo(spy, logRow); - if (spyHeadTable) - spyHeadTable.setAttribute('aria-expanded', 'true'); - } - else - { - //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]); - //if (spyHeadTable) - // spyHeadTable.setAttribute('aria-expanded', 'false'); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(spy) - { - copyToClipboard(spy.getURL()); - }, - - copyParams: function(spy) - { - var text = spy.postText; - if (!text) - return; - - var url = reEncodeURL(spy, text, true); - copyToClipboard(url); - }, - - copyResponse: function(spy) - { - copyToClipboard(spy.responseText); - }, - - openInTab: function(spy) - { - openNewTab(spy.getURL(), spy.postText); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object) - { - // TODO: xxxpedro spy xhr - return false; - - return object instanceof Firebug.Spy.XMLHttpRequestSpy; - }, - - browseObject: function(spy, context) - { - var url = spy.getURL(); - openNewTab(url); - return true; - }, - - getRealObject: function(spy, context) - { - return spy.xhrRequest; - }, - - getContextMenuItems: function(spy) - { - var items = [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) } - ]; - - if (spy.postText) - { - items.push( - {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) } - ); - } - - items.push( - {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) } - ); - - return items; - } -}); - -// ************************************************************************************************ - -function updateTime(spy) -{ - var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0); - if (spy.responseTime) - timeBox.textContent = " " + formatTime(spy.responseTime); -} - -function updateLogRow(spy) -{ - updateTime(spy); - - var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0); - statusBox.textContent = Firebug.Spy.XHR.getStatus(spy); - - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "loaded"); - - try - { - var errorRange = Math.floor(spy.xhrRequest.status/100); - if (errorRange == 4 || errorRange == 5) - setClass(spy.logRow, "error"); - } - catch (exc) - { - } -} - -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow) -{ - if (!spy.logRow && logRow) - spy.logRow = logRow; - - if (!spy.logRow || !hasClass(spy.logRow, "opened")) - return; - - if (!spy.params) - //spy.params = parseURLParams(spy.href+""); - spy.params = parseURLParams(spy.href+""); - - if (!spy.requestHeaders) - spy.requestHeaders = getRequestHeaders(spy); - - if (!spy.responseHeaders && spy.loaded) - spy.responseHeaders = getResponseHeaders(spy); - - var template = Firebug.NetMonitor.NetInfoBody; - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (!netInfoBox) - { - var head = getChildByClass(spy.logRow, "spyHead"); - netInfoBox = template.tag.append({"file": spy}, head); - dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]); - template.selectTabByName(netInfoBox, "Response"); - } - else - { - template.updateInfo(netInfoBox, spy, spy.context); - } -}; - - - -// ************************************************************************************************ - -function getRequestHeaders(spy) -{ - var headers = []; - - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitRequestHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - - return headers; -} - -function getResponseHeaders(spy) -{ - var headers = []; - - try - { - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitResponseHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - } - catch (exc) - { - if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS) - FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " + - safeGetRequestName(spy.request), exc); - } - - return headers; -} - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.Spy); -//Firebug.registerRep(Firebug.Spy.XHR); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ - -// List of JSON content types. -var contentTypes = -{ - "text/plain": 1, - "text/javascript": 1, - "text/x-javascript": 1, - "text/json": 1, - "text/x-json": 1, - "application/json": 1, - "application/x-json": 1, - "application/javascript": 1, - "application/x-javascript": 1, - "application/json-rpc": 1 -}; - -// ************************************************************************************************ -// Model implementation - -Firebug.JSONViewerModel = extend(Firebug.Module, -{ - dispatchName: "jsonViewer", - initialize: function() - { - Firebug.NetMonitor.NetInfoBody.addListener(this); - - // Used by Firebug.DOMPanel.DirTable domplate. - this.toggles = {}; - }, - - shutdown: function() - { - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody", infoBox); - - // Let listeners to parse the JSON. - dispatch(this.fbListeners, "onParseJSON", [file]); - - // The JSON is still no there, try to parse most common cases. - if (!file.jsonObject) - { - ///if (this.isJSON(safeGetContentType(file.request), file.responseText)) - if (this.isJSON(file.mimeType, file.responseText)) - file.jsonObject = this.parseJSON(file); - } - - // The jsonObject is created so, the JSON tab can be displayed. - if (file.jsonObject && hasProperties(file.jsonObject)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON", - ///$STR("jsonviewer.tab.JSON")); - $STR("JSON")); - - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody; JSON object available " + - (typeof(file.jsonObject) != "undefined"), file.jsonObject); - } - }, - - isJSON: function(contentType, data) - { - // Workaround for JSON responses without proper content type - // Let's consider all responses starting with "{" as JSON. In the worst - // case there will be an exception when parsing. This means that no-JSON - // responses (and post data) (with "{") can be parsed unnecessarily, - // which represents a little overhead, but this happens only if the request - // is actually expanded by the user in the UI (Net & Console panels). - - ///var responseText = data ? trimLeft(data) : null; - ///if (responseText && responseText.indexOf("{") == 0) - /// return true; - var responseText = data ? trim(data) : null; - if (responseText && responseText.indexOf("{") == 0) - return true; - - if (!contentType) - return false; - - contentType = contentType.split(";")[0]; - contentType = trim(contentType); - return contentTypes[contentType]; - }, - - // Update listener for TabView - updateTabBody: function(infoBox, file, context) - { - var tab = infoBox.selectedTab; - ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0); - var tabBody = $$(".netInfoJSONText", infoBox)[0]; - if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated) - return; - - tabBody.updated = true; - - if (file.jsonObject) { - Firebug.DOMPanel.DirTable.tag.replace( - {object: file.jsonObject, toggles: this.toggles}, tabBody); - } - }, - - parseJSON: function(file) - { - var jsonString = new String(file.responseText); - ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host); - return parseJSONString(jsonString); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.JSONViewerModel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -// List of XML related content types. -var xmlContentTypes = -[ - "text/xml", - "application/xml", - "application/xhtml+xml", - "application/rss+xml", - "application/atom+xml",, - "application/vnd.mozilla.maybe.feed", - "application/rdf+xml", - "application/vnd.mozilla.xul+xml" -]; - -// ************************************************************************************************ -// Model implementation - -/** - * @module Implements viewer for XML based network responses. In order to create a new - * tab wihin network request detail, a listener is registered into - * Firebug.NetMonitor.NetInfoBody object. - */ -Firebug.XMLViewerModel = extend(Firebug.Module, -{ - dispatchName: "xmlViewer", - - initialize: function() - { - ///Firebug.ActivableModule.initialize.apply(this, arguments); - Firebug.Module.initialize.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.addListener(this); - }, - - shutdown: function() - { - ///Firebug.ActivableModule.shutdown.apply(this, arguments); - Firebug.Module.shutdown.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - /** - * Check response's content-type and if it's a XML, create a new tab with XML preview. - */ - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody", infoBox); - - // If the response is XML let's display a pretty preview. - ///if (this.isXML(safeGetContentType(file.request))) - if (this.isXML(file.mimeType, file.responseText)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML", - ///$STR("xmlviewer.tab.XML")); - $STR("XML")); - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody; XML response available"); - } - }, - - isXML: function(contentType) - { - if (!contentType) - return false; - - // Look if the response is XML based. - for (var i=0; i\s*/, ""); - - var div = parentNode.ownerDocument.createElement("div"); - div.innerHTML = xmlText; - - var root = div.getElementsByTagName("*")[0]; - - /*** - var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser"); - var doc = parser.parseFromString(text, "text/xml"); - var root = doc.documentElement; - - // Error handling - var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - if (root.namespaceURI == nsURI && root.nodeName == "parsererror") - { - this.ParseError.tag.replace({error: { - message: root.firstChild.nodeValue, - source: root.lastChild.textContent - }}, parentNode); - return; - } - /**/ - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc); - - // Override getHidden in these templates. The parsed XML documen is - // hidden, but we want to display it using 'visible' styling. - /* - var templates = [ - Firebug.HTMLPanel.CompleteElement, - Firebug.HTMLPanel.Element, - Firebug.HTMLPanel.TextElement, - Firebug.HTMLPanel.EmptyElement, - Firebug.HTMLPanel.XEmptyElement, - ]; - - var originals = []; - for (var i=0; iFirebug.XMLViewerModel. - */ -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "xmlInfoError"}, - DIV({"class": "xmlInfoErrorMsg"}, "$error.message"), - PRE({"class": "xmlInfoErrorSource"}, "$error|getSource") - ), - - getSource: function(error) - { - var parts = error.source.split("\n"); - if (parts.length != 2) - return error.source; - - var limit = 50; - var column = parts[1].length; - if (column >= limit) { - parts[0] = "..." + parts[0].substr(column - limit); - parts[1] = "..." + parts[1].substr(column - limit); - } - - if (parts[0].length > 80) - parts[0] = parts[0].substr(0, 80) + "..."; - - return parts.join("\n"); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.XMLViewerModel); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var ElementCache = Firebug.Lite.Cache.Element; -var cacheID = Firebug.Lite.Cache.ID; - -var ignoreHTMLProps = -{ - // ignores the attributes injected by Sizzle, otherwise it will - // be visible on IE (when enumerating element.attributes) - sizcache: 1, - sizset: 1 -}; - -// ignores also the cache property injected by firebug -ignoreHTMLProps[cacheID] = 1; - - -// ************************************************************************************************ -// HTML Module - -Firebug.HTML = extend(Firebug.Module, -{ - appendTreeNode: function(nodeArray, html) - { - var reTrim = /^\s+|\s+$/g; - - if (!nodeArray.length) nodeArray = [nodeArray]; - - for (var n=0, node; node=nodeArray[n]; n++) - { - if (node.nodeType == 1) - { - if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue; - - var uid = ElementCache(node); - var child = node.childNodes; - var childLength = child.length; - - var nodeName = node.nodeName.toLowerCase(); - - var nodeVisible = isVisible(node); - - var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 && - nodeName != "script" && nodeName != "style"; - - var nodeControl = !hasSingleTextChild && childLength > 0 ? - ('
') : ''; - - var isIE = false; - - if(isIE && nodeControl) - html.push(nodeControl); - - if (typeof uid != 'undefined') - html.push( - '
', - !isIE && nodeControl ? nodeControl: "", - '<', nodeName, '' - ); - else - html.push( - '
<', - nodeName, '' - ); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || Firebug.ignoreFirebugElements && - ignoreHTMLProps.hasOwnProperty(attr.nodeName)) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - /* - // source code nodes - if (nodeName == 'script' || nodeName == 'style') - { - - if(document.all){ - var src = node.innerHTML+'\n'; - - }else { - var src = '\n'+node.innerHTML+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + '
'; - } - - html.push('>
', - s.join(''), - '
',
-                            escapeHTML(src),
-                            '
', - '
</', - nodeName, - '>
', - '
' - ); - - - }/**/ - - // Just a single text node child - if (hasSingleTextChild) - { - var value = child[0].nodeValue.replace(reTrim, ''); - if(value) - { - html.push( - '>', - escapeHTML(value), - '</', - nodeName, - '>' - ); - } - else - html.push('/>'); // blank text, print as childless node - - } - else if (childLength > 0) - { - html.push('>'); - } - else - html.push('/>'); - - } - else if (node.nodeType == 3) - { - if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" || - node.parentNode.nodeName.toLowerCase() == "style" ) ) - { - var value = node.nodeValue.replace(reTrim, ''); - - if(isIE){ - var src = value+'\n'; - - }else { - var src = '\n'+value+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + ''; - } - - html.push('
', - s.join(''), - '
',
-                            escapeHTML(src),
-                            '
' - ); - - } - else - { - var value = node.nodeValue.replace(reTrim, ''); - if (value) - html.push('
', escapeHTML(value),'
'); - } - } - } - }, - - appendTreeChildren: function(treeNode) - { - var doc = Firebug.chrome.document; - var uid = treeNode.id; - var parentNode = ElementCache.get(uid); - - if (parentNode.childNodes.length == 0) return; - - var treeNext = treeNode.nextSibling; - var treeParent = treeNode.parentNode; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl nodeMaximized'; - - var html = []; - var children = doc.createElement("div"); - children.className = "nodeChildren"; - this.appendTreeNode(parentNode.childNodes, html); - children.innerHTML = html.join(""); - - treeParent.insertBefore(children, treeNext); - - var closeElement = doc.createElement("div"); - closeElement.className = "objectBox-element"; - closeElement.innerHTML = '</' + - parentNode.nodeName.toLowerCase() + '>' - - treeParent.insertBefore(closeElement, treeNext); - - }, - - removeTreeChildren: function(treeNode) - { - var children = treeNode.nextSibling; - var closeTag = children.nextSibling; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl'; - - children.parentNode.removeChild(children); - closeTag.parentNode.removeChild(closeTag); - }, - - isTreeNodeVisible: function(id) - { - return $(id); - }, - - select: function(el) - { - var id = el && ElementCache(el); - if (id) - this.selectTreeNode(id); - }, - - selectTreeNode: function(id) - { - id = ""+id; - var node, stack = []; - while(id && !this.isTreeNodeVisible(id)) - { - stack.push(id); - - var node = ElementCache.get(id).parentNode; - - if (node) - id = ElementCache(node); - else - break; - } - - stack.push(id); - - while(stack.length > 0) - { - id = stack.pop(); - node = $(id); - - if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0) - this.appendTreeChildren(node); - } - - selectElement(node); - - // TODO: xxxpedro - if (fbPanel1) - fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2); - } - -}); - -Firebug.registerModule(Firebug.HTML); - -// ************************************************************************************************ -// HTML Panel - -function HTMLPanel(){}; - -HTMLPanel.prototype = extend(Firebug.Panel, -{ - name: "HTML", - title: "HTML", - - options: { - hasSidePanel: true, - //hasToolButtons: true, - isPreRendered: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "4px 3px 1px 15px"; - this.panelNode.style.minWidth = "500px"; - - if (Env.Options.enablePersistent || Firebug.chrome.type != "popup") - this.createUI(); - - if(!this.sidePanelBar.selectedPanel) - { - this.sidePanelBar.selectPanel("css"); - } - }, - - destroy: function() - { - selectedElement = null - fbPanel1 = null; - - selectedSidePanelTS = null; - selectedSidePanelTimer = null; - - Firebug.Panel.destroy.apply(this, arguments); - }, - - createUI: function() - { - var rootNode = Firebug.browser.document.documentElement; - var html = []; - Firebug.HTML.appendTreeNode(rootNode, html); - - this.panelNode.innerHTML = html.join(""); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = $("fbPanel1"); - - if(!selectedElement) - { - Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)); - } - - // TODO: xxxpedro - addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - }, - - shutdown: function() - { - // TODO: xxxpedro - removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - - removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = null; - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - reattach: function() - { - // TODO: panel reattach - if(FirebugChrome.selectedHTMLElementId) - Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId); - }, - - updateSelection: function(object) - { - var id = ElementCache(object); - - if (id) - { - Firebug.HTML.selectTreeNode(id); - } - } -}); - -Firebug.registerPanel(HTMLPanel); - -// ************************************************************************************************ - -var formatStyles = function(styles) -{ - return isIE ? - // IE return CSS property names in upper case, so we need to convert them - styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) : - // other browsers are just fine - styles; -}; - -// ************************************************************************************************ - -var selectedElement = null -var fbPanel1 = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -var selectedSidePanelTS, selectedSidePanelTimer; - -var selectElement= function selectElement(e) -{ - if (e != selectedElement) - { - if (selectedElement) - selectedElement.className = "objectBox-element"; - - e.className = e.className + " selectedElement"; - - if (FBL.isFirefox) - e.style.MozBorderRadius = "2px"; - - else if (FBL.isSafari) - e.style.WebkitBorderRadius = "2px"; - - selectedElement = e; - - FirebugChrome.selectedHTMLElementId = e.id; - - var target = ElementCache.get(e.id); - var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; - - var stack = FirebugChrome.htmlSelectionStack; - - stack.unshift(target); - - if (stack.length > 2) - stack.pop(); - - var lazySelect = function() - { - selectedSidePanelTS = new Date().getTime(); - - selectedSidePanel.select(target, true); - }; - - if (selectedSidePanelTimer) - { - clearTimeout(selectedSidePanelTimer); - selectedSidePanelTimer = null; - } - - if (new Date().getTime() - selectedSidePanelTS > 100) - setTimeout(lazySelect, 0) - else - selectedSidePanelTimer = setTimeout(lazySelect, 150); - } -} - - -// ************************************************************************************************ -// *** TODO: REFACTOR ************************************************************************** -// ************************************************************************************************ -Firebug.HTML.onTreeClick = function (e) -{ - e = e || event; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - - if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag') - { - var isIE = false; - - if(targ.className == 'nodeTag') - { - var control = isIE ? (targ.parentNode.previousSibling || targ) : - (targ.parentNode.previousSibling || targ); - - selectElement(targ.parentNode.parentNode); - - if (control.className.indexOf('nodeControl') == -1) - return; - - } else - control = targ; - - FBL.cancelEvent(e); - - var treeNode = isIE ? control.nextSibling : control.parentNode; - - //FBL.Firebug.Console.log(treeNode); - - if (control.className.indexOf(' nodeMaximized') != -1) { - FBL.Firebug.HTML.removeTreeChildren(treeNode); - } else { - FBL.Firebug.HTML.appendTreeChildren(treeNode); - } - } - else if (targ.className == 'nodeValue' || targ.className == 'nodeName') - { - /* - var input = FBL.Firebug.chrome.document.getElementById('treeInput'); - - input.style.display = "block"; - input.style.left = targ.offsetLeft + 'px'; - input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px'; - input.style.width = targ.offsetWidth + 6 + 'px'; - input.value = targ.textContent || targ.innerText; - input.focus(); - /**/ - } -} - -function onListMouseOut(e) -{ - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - if (hasClass(targ, "fbPanel")) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - } -}; - -var hoverElement = null; -var hoverElementTS = 0; - -Firebug.HTML.onListMouseMove = function onListMouseMove(e) -{ - try - { - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - var found = false; - while (targ && !found) { - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) - targ = targ.parentNode; - else - found = true; - } - - if (!targ) - { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - /* - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - /**/ - - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - - var el = ElementCache.get(uid.value); - - var nodeName = el.nodeName.toLowerCase(); - - if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1) - return; - - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return; - - if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) { - hoverElementTS = new Date().getTime(); - hoverElement = el; - FBL.Firebug.Inspector.drawBoxModel(el); - } - } - catch(E) - { - } -} - - -// ************************************************************************************************ - -Firebug.Reps = { - - appendText: function(object, html) - { - html.push(escapeHTML(objectToString(object))); - }, - - appendNull: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendString: function(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - }, - - appendInteger: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFloat: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFunction: function(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m && m[1] ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - }, - - appendObject: function(object, html) - { - /* - var rep = Firebug.getRep(object); - var outputs = []; - - rep.tag.tag.compile(); - - var str = rep.tag.renderHTML({object: object}, outputs); - html.push(str); - /**/ - - try - { - if (object == undefined) - this.appendNull("undefined", html); - else if (object == null) - this.appendNull("null", html); - else if (typeof object == "string") - this.appendString(object, html); - else if (typeof object == "number") - this.appendInteger(object, html); - else if (typeof object == "boolean") - this.appendInteger(object, html); - else if (typeof object == "function") - this.appendFunction(object, html); - else if (object.nodeType == 1) - this.appendSelector(object, html); - else if (typeof object == "object") - { - if (typeof object.length != "undefined") - this.appendArray(object, html); - else - this.appendObjectFormatted(object, html); - } - else - this.appendText(object, html); - } - catch (exc) - { - } - /**/ - }, - - appendObjectFormatted: function(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - }, - - appendSelector: function(object, html) - { - var uid = ElementCache(object); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - }, - - appendNode: function(node, html) - { - if (node.nodeType == 1) - { - var uid = ElementCache(node); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push( - '
', - '', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || attr.nodeName == cacheID) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? node.style.cssText : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - if (node.firstChild) - { - html.push('>
'); - - for (var child = node.firstChild; child; child = child.nextSibling) - this.appendNode(child, html); - - html.push('
</', - node.nodeName.toLowerCase(), '>
'); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - var value = trim(node.nodeValue); - if (value) - html.push('
', escapeHTML(value),'
'); - } - }, - - appendArray: function(object, html) - { - html.push('[ '); - - for (var i = 0, l = object.length, obj; i < l; ++i) - { - this.appendObject(object[i], html); - - if (i < l-1) - html.push(', '); - } - - html.push(' ]'); - } - -}; - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -/* - -Hack: -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; -Firebug.showInfoTips = true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome); - -/**/ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var maxWidth = 100, maxHeight = 80; -var infoTipMargin = 10; -var infoTipWindowPadding = 25; - -// ************************************************************************************************ - -Firebug.InfoTip = extend(Firebug.Module, -{ - dispatchName: "infoTip", - tags: domplate( - { - infoTipTag: DIV({"class": "infoTip"}), - - colorTag: - DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, " "), - - imgTag: - DIV({"class": "infoTipImageBox infoTipLoading"}, - IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat", - onload: "$onLoadImage"}), - IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}), - DIV({"class": "infoTipCaption"}) - ), - - onLoadImage: function(event) - { - var img = event.currentTarget || event.srcElement; - ///var bgImg = img.nextSibling; - ///if (!bgImg) - /// return; // Sometimes gets called after element is dead - - ///var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - /// TODO: xxxpedro infoTip hack - var caption = getElementByClass(innerBox, "infoTipCaption"); - var bgImg = getElementByClass(innerBox, "infoTipBgImage"); - if (!bgImg) - return; // Sometimes gets called after element is dead - - // TODO: xxxpedro infoTip IE and timing issue - // TODO: use offline document to avoid flickering - if (isIE) - removeClass(innerBox, "infoTipLoading"); - - var updateInfoTip = function(){ - - var w = img.naturalWidth || img.width || 10, - h = img.naturalHeight || img.height || 10; - - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - //caption.innerHTML = $STRF("Dimensions", [w, h]); - caption.innerHTML = $STRF(w + " x " + h); - - - }; - - if (isIE) - setTimeout(updateInfoTip, 0); - else - { - updateInfoTip(); - removeClass(innerBox, "infoTipLoading"); - } - - /// - } - - /* - /// onLoadImage original - onLoadImage: function(event) - { - var img = event.currentTarget; - var bgImg = img.nextSibling; - if (!bgImg) - return; // Sometimes gets called after element is dead - - var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - var w = img.naturalWidth, h = img.naturalHeight; - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - caption.innerHTML = $STRF("Dimensions", [w, h]); - - removeClass(innerBox, "infoTipLoading"); - } - /**/ - - }), - - initializeBrowser: function(browser) - { - browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser); - browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser); - - ///var doc = browser.contentDocument; - var doc = browser.document; - if (!doc) - return; - - ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true); - addEvent(doc, "mouseover", browser.onInfoTipMouseMove); - addEvent(doc, "mouseout", browser.onInfoTipMouseOut); - addEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc)); - }, - - uninitializeBrowser: function(browser) - { - if (browser.infoTip) - { - ///var doc = browser.contentDocument; - var doc = browser.document; - ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true); - removeEvent(doc, "mouseover", browser.onInfoTipMouseMove); - removeEvent(doc, "mouseout", browser.onInfoTipMouseOut); - removeEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - browser.infoTip.parentNode.removeChild(browser.infoTip); - delete browser.infoTip; - delete browser.onInfoTipMouseMove; - } - }, - - showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset) - { - if (!Firebug.showInfoTips) - return; - - var scrollParent = getOverflowParent(target); - var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0); - - if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset)) - { - var htmlElt = infoTip.ownerDocument.documentElement; - var panelWidth = htmlElt.clientWidth; - var panelHeight = htmlElt.clientHeight; - - if (x+infoTip.offsetWidth+infoTipMargin > panelWidth) - { - infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px"; - infoTip.style.right = "auto"; - } - else - { - infoTip.style.left = (x+infoTipMargin) + "px"; - infoTip.style.right = "auto"; - } - - if (y+infoTip.offsetHeight+infoTipMargin > panelHeight) - { - infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px"; - infoTip.style.bottom = "auto"; - } - else - { - infoTip.style.top = (y+infoTipMargin) + "px"; - infoTip.style.bottom = "auto"; - } - - if (FBTrace.DBG_INFOTIP) - FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top + - ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom + - ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight + - ", offsetWidth: " + infoTip.offsetWidth + - ", x: " + x + ", panelWidth: " + panelWidth + - ", y: " + y + ", panelHeight: " + panelHeight); - - infoTip.setAttribute("active", "true"); - } - else - this.hideInfoTip(infoTip); - }, - - hideInfoTip: function(infoTip) - { - if (infoTip) - infoTip.removeAttribute("active"); - }, - - onMouseOut: function(event, browser) - { - if (!event.relatedTarget) - this.hideInfoTip(browser.infoTip); - }, - - onMouseMove: function(event, browser) - { - // Ignore if the mouse is moving over the existing info tip. - if (getAncestorByClass(event.target, "infoTip")) - return; - - if (browser.currentPanel) - { - var x = event.clientX, y = event.clientY, target = event.target || event.srcElement; - this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset); - } - else - this.hideInfoTip(browser.infoTip); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - populateColorInfoTip: function(infoTip, color) - { - this.tags.colorTag.replace({rgbValue: color}, infoTip); - return true; - }, - - populateImageInfoTip: function(infoTip, url, repeat) - { - if (!repeat) - repeat = "no-repeat"; - - this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip); - - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - disable: function() - { - // XXXjoe For each browser, call uninitializeBrowser - }, - - showPanel: function(browser, panel) - { - if (panel) - { - var infoTip = panel.panelBrowser.infoTip; - if (!infoTip) - infoTip = this.initializeBrowser(panel.panelBrowser); - this.hideInfoTip(infoTip); - } - - }, - - showSidePanel: function(browser, panel) - { - this.showPanel(browser, panel); - } -}); - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.InfoTip); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -// move to FBL -(function() { - -// ************************************************************************************************ -// XPath - -/** - * Gets an XPath for an element which describes its hierarchical location. - */ -this.getElementXPath = function(element) -{ - if (element && element.id) - return '//*[@id="' + element.id + '"]'; - else - return this.getElementTreeXPath(element); -}; - -this.getElementTreeXPath = function(element) -{ - var paths = []; - - for (; element && element.nodeType == 1; element = element.parentNode) - { - var index = 0; - for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) - { - if (sibling.nodeName == element.nodeName) - ++index; - } - - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[" + (index+1) + "]" : ""); - paths.splice(0, 0, tagName + pathIndex); - } - - return paths.length ? "/" + paths.join("/") : null; -}; - -this.getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -this.getRuleMatchingElements = function(rule, doc) -{ - var css = rule.selectorText; - var xpath = this.cssToXPath(css); - return this.getElementsByXPath(doc, xpath); -}; - - -}).call(FBL); - - - - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - -var toCamelCase = function toCamelCase(s) -{ - return s.replace(reSelectorCase, toCamelCaseReplaceFn); -}; - -var toSelectorCase = function toSelectorCase(s) -{ - return s.replace(reCamelCase, "-$1").toLowerCase(); - -}; - -var reCamelCase = /([A-Z])/g; -var reSelectorCase = /\-(.)/g; -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g) -{ - return g.toUpperCase(); -}; - - - - - -// ************************************************************************************************ - -var ElementCache = Firebug.Lite.Cache.Element; -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet; - -var globalCSSRuleIndex; - -var externalStyleSheetURLs = []; -var externalStyleSheetWarning = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'}, - SPAN("$object|STR"), - A({"href": "$href", target:"_blank"}, "$link|STR") - ) -}); - - -var processAllStyleSheetsTimeout = null; -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet) -{ - var url = styleSheet.href; - styleSheet.firebugIgnore = true; - - var source = Firebug.Lite.Proxy.load(url); - - // TODO: check for null and error responses - - - // remove comments - //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - //source = source.replace(reMultiComment, ""); - - // convert relative addresses to absolute ones - source = source.replace(/url\(([^\)]+)\)/g, function(a,name){ - - var hasDomain = /\w+:\/\/./.test(name); - - if (!hasDomain) - { - name = name.replace(/^(["'])(.+)\1$/, "$2"); - var first = name.charAt(0); - - // relative path, based on root - if (first == "/") - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLRoot - var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url); - - return m ? - "url(" + m[1] + name + ")" : - "url(" + name + ")"; - } - // relative path, based on current location - else - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLPath - var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, ""); - - path = path + name; - - var reBack = /[^\/]+\/\.\.\//; - while(reBack.test(path)) - { - path = path.replace(reBack, ""); - } - - //console.log("url(" + path + ")"); - - return "url(" + path + ")"; - } - } - - // if it is an absolute path, there is nothing to do - return a; - }); - - var oldStyle = styleSheet.ownerNode; - - if (!oldStyle) return; - - if (!oldStyle.parentNode) return; - - var style = createGlobalElement("style"); - style.setAttribute("charset","utf-8"); - style.setAttribute("type", "text/css"); - style.innerHTML = source; - - //debugger; - oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling); - oldStyle.parentNode.removeChild(oldStyle); - - - //doc.getElementsByTagName("head")[0].appendChild(style); - - doc.styleSheets[doc.styleSheets.length-1].externalURL = url; - - console.log(url, "call " + externalStyleSheetURLs.length, source); - - externalStyleSheetURLs.pop(); - - if (processAllStyleSheetsTimeout) - { - clearTimeout(processAllStyleSheetsTimeout); - } - - processAllStyleSheetsTimeout = setTimeout(function(){ - console.log("processing"); - FBL.processAllStyleSheets(doc, styleSheetIterator); - processAllStyleSheetsTimeout = null; - },200); - -}; - - -FBL.processAllStyleSheets = function(doc, styleSheetIterator) -{ - styleSheetIterator = styleSheetIterator || processStyleSheet; - - globalCSSRuleIndex = -1; - - var styleSheets = doc.styleSheets; - var importedStyleSheets = []; - - if (FBTrace.DBG_CSS) - var start = new Date().getTime(); - - for(var i=0, length=styleSheets.length; i maxSpecificity) - { - maxSpecificity = spec; - mostSpecificSelector = sel; - } - } - } - - rule.specificity = maxSpecificity; - } - } - - rules.sort(sortElementRules); - //rules.sort(solveRulesTied); - - return rules; -}; - -var sortElementRules = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - var specificityA = ruleA.specificity; - var specificityB = ruleB.specificity; - - if (specificityA > specificityB) - return 1; - - else if (specificityA < specificityB) - return -1; - - else - return ruleA.order > ruleB.order ? 1 : -1; -}; - -var solveRulesTied = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - if (ruleA.specificity == ruleB.specificity) - return ruleA.order > ruleB.order ? 1 : -1; - - return null; -}; - -var reSelectorTag = /(^|\s)(?:\w+)/g; -var reSelectorClass = /\.[\w\d_-]+/g; -var reSelectorId = /#[\w\d_-]+/g; - -var getCSSRuleSpecificity = function(selector) -{ - var match = selector.match(reSelectorTag); - var tagCount = match ? match.length : 0; - - match = selector.match(reSelectorClass); - var classCount = match ? match.length : 0; - - match = selector.match(reSelectorId); - var idCount = match ? match.length : 0; - - return tagCount + 10*classCount + 100*idCount; -}; - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule; -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor; -//const nsISelectionDisplay = Ci.nsISelectionDisplay; -//const nsISelectionController = Ci.nsISelectionController; - -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153 -//const STATE_ACTIVE = 0x01; -//const STATE_FOCUS = 0x02; -//const STATE_HOVER = 0x04; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Firebug.SourceBoxPanel = Firebug.Panel; - -var domUtils = null; - -var textContent = isIE ? "innerText" : "textContent"; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var CSSDomplateBase = { - isEditable: function(rule) - { - return !rule.isSystemSheet; - }, - isSelectorEditable: function(rule) - { - return rule.isSelectorEditable && this.isEditable(rule); - } -}; - -var CSSPropTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled", - $editGroup: "$rule|isEditable", - $cssOverridden: "$prop.overridden", role : "option"}, - A({"class": "cssPropDisable"}, "  "), - SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"), - SPAN({"class": "cssColon"}, ":"), - SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"), - SPAN({"class": "cssSemi"}, ";") - ) -}); - -var CSSRuleTag = - TAG("$rule.tag", {rule: "$rule"}); - -var CSSImportRuleTag = domplate({ - tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"}, - "@import "", - A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"), - "";" - ) -}); - -var CSSStyleRuleTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssRule insertInto", - $cssEditableRule: "$rule|isEditable", - $editGroup: "$rule|isSelectorEditable", - _repObject: "$rule.rule", - "ruleId": "$rule.id", role : 'presentation'}, - DIV({"class": "cssHead focusRow", role : 'listitem'}, - SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {" - ), - DIV({role : 'group'}, - DIV({"class": "cssPropertyListBox", role : 'listbox'}, - FOR("prop", "$rule.props", - TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"}) - ) - ) - ), - DIV({"class": "editable insertBefore", role:"presentation"}, "}") - ) -}); - -var reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; - -var reURL = /url\("?([^"\)]+)?"?\)/; - -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/; - -//const sothinkInstalled = !!$("swfcatcherKey_sidebar"); -var sothinkInstalled = false; -var styleGroups = -{ - text: [ - "font-family", - "font-size", - "font-weight", - "font-style", - "color", - "text-transform", - "text-decoration", - "letter-spacing", - "word-spacing", - "line-height", - "text-align", - "vertical-align", - "direction", - "column-count", - "column-gap", - "column-width" - ], - - background: [ - "background-color", - "background-image", - "background-repeat", - "background-position", - "background-attachment", - "opacity" - ], - - box: [ - "width", - "height", - "top", - "right", - "bottom", - "left", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width", - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color", - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style", - "-moz-border-top-radius", - "-moz-border-right-radius", - "-moz-border-bottom-radius", - "-moz-border-left-radius", - "outline-top-width", - "outline-right-width", - "outline-bottom-width", - "outline-left-width", - "outline-top-color", - "outline-right-color", - "outline-bottom-color", - "outline-left-color", - "outline-top-style", - "outline-right-style", - "outline-bottom-style", - "outline-left-style" - ], - - layout: [ - "position", - "display", - "visibility", - "z-index", - "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow - "overflow-y", - "overflow-clip", - "white-space", - "clip", - "float", - "clear", - "-moz-box-sizing" - ], - - other: [ - "cursor", - "list-style-image", - "list-style-position", - "list-style-type", - "marker-offset", - "user-focus", - "user-select", - "user-modify", - "user-input" - ] -}; - -var styleGroupTitles = -{ - text: "Text", - background: "Background", - box: "Box Model", - layout: "Layout", - other: "Other" -}; - -Firebug.CSSModule = extend(Firebug.Module, -{ - freeEdit: function(styleSheet, value) - { - if (!styleSheet.editStyleSheet) - { - var ownerNode = getStyleSheetOwnerNode(styleSheet); - styleSheet.disabled = true; - - var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL); - url.spec = styleSheet.href; - - var editStyleSheet = ownerNode.ownerDocument.createElementNS( - "http://www.w3.org/1999/xhtml", - "style"); - unwrapObject(editStyleSheet).firebugIgnore = true; - editStyleSheet.setAttribute("type", "text/css"); - editStyleSheet.setAttributeNS( - "http://www.w3.org/XML/1998/namespace", - "base", - url.directory); - if (ownerNode.hasAttribute("media")) - { - editStyleSheet.setAttribute("media", ownerNode.getAttribute("media")); - } - - // Insert the edited stylesheet directly after the old one to ensure the styles - // cascade properly. - ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling); - - styleSheet.editStyleSheet = editStyleSheet; - } - - styleSheet.editStyleSheet.innerHTML = value; - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n"); - - dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]); - }, - - insertRule: function(styleSheet, cssText, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText); - var insertIndex = styleSheet.insertRule(cssText, ruleIndex); - - dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]); - - return insertIndex; - }, - - deleteRule: function(styleSheet, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules); - dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]); - - styleSheet.deleteRule(ruleIndex); - }, - - setProperty: function(rule, propName, propValue, propPriority) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - // good browsers - if (style.getPropertyValue) - { - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect - // unless we remove the property first - style.removeProperty(propName); - - style.setProperty(propName, propValue, propPriority); - } - // sad browsers - else - { - // TODO: xxxpedro parse CSS rule to find property priority in IE? - //console.log(propName, propValue); - style[toCamelCase(propName)] = propValue; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]); - } - }, - - removeProperty: function(rule, propName, parent) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - if (style.getPropertyValue) - { - - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - style.removeProperty(propName); - } - else - { - style[toCamelCase(propName)] = ""; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]); - } - }/*, - - cleanupSheets: function(doc, context) - { - // Due to the manner in which the layout engine handles multiple - // references to the same sheet we need to kick it a little bit. - // The injecting a simple stylesheet then removing it will force - // Firefox to regenerate it's CSS hierarchy. - // - // WARN: This behavior was determined anecdotally. - // See http://code.google.com/p/fbug/issues/detail?id=2440 - var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - style.setAttribute("charset","utf-8"); - unwrapObject(style).firebugIgnore = true; - style.setAttribute("type", "text/css"); - style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}"; - addStyleSheet(doc, style); - style.parentNode.removeChild(style); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=500365 - // This voodoo touches each style sheet to force some Firefox internal change to allow edits. - var styleSheets = getAllStyleSheets(context); - for(var i = 0; i < styleSheets.length; i++) - { - try - { - var rules = styleSheets[i].cssRules; - if (rules.length > 0) - var touch = rules[0]; - if (FBTrace.DBG_CSS && touch) - FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName())); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e); - } - } - }, - cleanupSheetHandler: function(event, context) - { - var target = event.target || event.srcElement, - tagName = (target.tagName || "").toLowerCase(); - if (tagName == "link") - { - this.cleanupSheets(target.ownerDocument, context); - } - }, - watchWindow: function(context, win) - { - var cleanupSheets = bind(this.cleanupSheets, this), - cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context), - doc = win.document; - - //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false); - //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false); - }, - loadedContext: function(context) - { - var self = this; - iterateWindows(context.browser.contentWindow, function(subwin) - { - self.cleanupSheets(subwin.document, context); - }); - } - /**/ -}); - -// ************************************************************************************************ - -Firebug.CSSStyleSheetPanel = function() {}; - -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel, -{ - template: domplate( - { - tag: - DIV({"class": "cssSheet insertInto a11yCSSView"}, - FOR("rule", "$rules", - CSSRuleTag - ), - DIV({"class": "cssSheet editable insertBefore"}, "") - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - refresh: function() - { - if (this.location) - this.updateLocation(this.location); - else if (this.selection) - this.updateSelection(this.selection); - }, - - toggleEditing: function() - { - if (!this.stylesheetEditor) - this.stylesheetEditor = new StyleSheetEditor(this.document); - - if (this.editing) - Firebug.Editor.stopEditing(); - else - { - if (!this.location) - return; - - var styleSheet = this.location.editStyleSheet - ? this.location.editStyleSheet.sheet - : this.location; - - var css = getStyleSheetCSS(styleSheet, this.context); - //var topmost = getTopmostRuleLine(this.panelNode); - - this.stylesheetEditor.styleSheet = this.location; - Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor); - //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset); - } - }, - - getStylesheetURL: function(rule) - { - if (this.location.href) - return this.location.href; - else - return this.context.window.location.href; - }, - - getRuleByLine: function(styleSheet, line) - { - if (!domUtils) - return null; - - var cssRules = styleSheet.cssRules; - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - if (rule instanceof CSSStyleRule) - { - var ruleLine = domUtils.getRuleLine(rule); - if (ruleLine >= line) - return rule; - } - } - }, - - highlightRule: function(rule) - { - var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule); - if (ruleElement) - { - scrollIntoCenterView(ruleElement, this.panelNode); - setClassTimed(ruleElement, "jumpHighlight", this.context); - } - }, - - getStyleSheetRules: function(context, styleSheet) - { - var isSystemSheet = isSystemStyleSheet(styleSheet); - - function appendRules(cssRules) - { - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - - // TODO: xxxpedro opera instanceof stylesheet remove the following comments when - // the issue with opera and style sheet Classes has been solved. - - //if (rule instanceof CSSStyleRule) - if (instanceOf(rule, "CSSStyleRule")) - { - var props = this.getRuleProperties(context, rule); - //var line = domUtils.getRuleLine(rule); - var line = null; - - var selector = rule.selectorText; - - if (isIE) - { - selector = selector.replace(reSelectorTag, - function(s){return s.toLowerCase();}); - } - - var ruleId = rule.selectorText+"/"+line; - rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId, - selector: selector, props: props, - isSystemSheet: isSystemSheet, - isSelectorEditable: true}); - } - //else if (rule instanceof CSSImportRule) - else if (instanceOf(rule, "CSSImportRule")) - rules.push({tag: CSSImportRuleTag.tag, rule: rule}); - //else if (rule instanceof CSSMediaRule) - else if (instanceOf(rule, "CSSMediaRule")) - appendRules.apply(this, [rule.cssRules]); - else - { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS) - FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule); - } - } - } - - var rules = []; - appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]); - return rules; - }, - - parseCSSProps: function(style, inheritMode) - { - var props = []; - - if (Firebug.expandShorthandProps) - { - var count = style.length-1, - index = style.length; - while (index--) - { - var propName = style.item(count - index); - this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props); - } - } - else - { - var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - // TODO: xxxpedro port to firebug: variable leaked into global namespace - var m; - - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) - continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) - this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props); - }; - } - - return props; - }, - - getRuleProperties: function(context, rule, inheritMode) - { - var props = this.parseCSSProps(rule.style, inheritMode); - - // TODO: xxxpedro port to firebug: variable leaked into global namespace - //var line = domUtils.getRuleLine(rule); - var line; - var ruleId = rule.selectorText+"/"+line; - this.addOldProperties(context, ruleId, inheritMode, props); - sortProperties(props); - - return props; - }, - - addOldProperties: function(context, ruleId, inheritMode, props) - { - if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) ) - { - var moreProps = context.selectorMap[ruleId]; - for (var i = 0; i < moreProps.length; ++i) - { - var prop = moreProps[i]; - this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props); - } - } - }, - - addProperty: function(name, value, important, disabled, inheritMode, props) - { - name = name.toLowerCase(); - - if (inheritMode && !inheritedStyleNames[name]) - return; - - name = this.translateName(name, value); - if (name) - { - value = stripUnits(rgbToHex(value)); - important = important ? " !important" : ""; - - var prop = {name: name, value: value, important: important, disabled: disabled}; - props.push(prop); - } - }, - - translateName: function(name, value) - { - // Don't show these proprietary Mozilla properties - if ((value == "-moz-initial" - && (name == "-moz-background-clip" || name == "-moz-background-origin" - || name == "-moz-background-inline-policy")) - || (value == "physical" - && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source" - || name == "margin-right-ltr-source" || name == "margin-right-rtl-source")) - || (value == "physical" - && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source" - || name == "padding-right-ltr-source" || name == "padding-right-rtl-source"))) - return null; - - // Translate these back to the form the user probably expects - if (name == "margin-left-value") - return "margin-left"; - else if (name == "margin-right-value") - return "margin-right"; - else if (name == "margin-top-value") - return "margin-top"; - else if (name == "margin-bottom-value") - return "margin-bottom"; - else if (name == "padding-left-value") - return "padding-left"; - else if (name == "padding-right-value") - return "padding-right"; - else if (name == "padding-top-value") - return "padding-top"; - else if (name == "padding-bottom-value") - return "padding-bottom"; - // XXXjoe What about border! - else - return name; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - editElementStyle: function() - { - ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0]; - var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0]; - var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection); - if (!styleRuleBox) - { - var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []}; - if (!rulesBox) - { - // The element did not have any displayed styles. We need to create the whole tree and remove - // the no styles message - styleRuleBox = this.template.cascadedTag.replace({ - rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom") - }, this.panelNode); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0]; - styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0]; - } - else - styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0]; - styleRuleBox = $$(".insertInto", styleRuleBox)[0]; - } - - Firebug.Editor.insertRowForObject(styleRuleBox); - }, - - insertPropertyRow: function(row) - { - Firebug.Editor.insertRowForObject(row); - }, - - insertRule: function(row) - { - var location = getAncestorByClass(row, "cssRule"); - if (!location) - { - location = getChildByClass(this.panelNode, "cssSheet"); - Firebug.Editor.insertRowForObject(location); - } - else - { - Firebug.Editor.insertRow(location, "before"); - } - }, - - editPropertyRow: function(row) - { - var propValueBox = getChildByClass(row, "cssPropValue"); - Firebug.Editor.startEditing(propValueBox); - }, - - deletePropertyRow: function(row) - { - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - Firebug.CSSModule.removeProperty(rule, propName); - - // Remove the property from the selector map, if it was disabled - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) ) - { - var map = this.context.selectorMap[ruleId]; - for (var i = 0; i < map.length; ++i) - { - if (map[i].name == propName) - { - map.splice(i, 1); - break; - } - } - } - if (this.name == "stylesheet") - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]); - row.parentNode.removeChild(row); - - this.markChange(this.name == "stylesheet"); - }, - - disablePropertyRow: function(row) - { - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - - if (!this.context.selectorMap) - this.context.selectorMap = {}; - - // XXXjoe Generate unique key for elements too - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if (!(this.context.selectorMap.hasOwnProperty(ruleId))) - this.context.selectorMap[ruleId] = []; - - var map = this.context.selectorMap[ruleId]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - if (hasClass(row, "disabledStyle")) - { - Firebug.CSSModule.removeProperty(rule, propName); - - map.push({"name": propName, "value": parsedValue.value, - "important": parsedValue.priority}); - } - else - { - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - - var index = findPropByName(map, propName); - map.splice(index, 1); - } - - this.markChange(this.name == "stylesheet"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onMouseDown: function(event) - { - //console.log("onMouseDown", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - // XXjoe Hack to only allow clicking on the checkbox - if (!isLeftClick(event) || offset > 20) - return; - - var target = event.target || event.srcElement; - if (hasClass(target, "textEditor")) - return; - - var row = getAncestorByClass(target, "cssProp"); - if (row && hasClass(row, "editGroup")) - { - this.disablePropertyRow(row); - cancelEvent(event); - } - }, - - onDoubleClick: function(event) - { - //console.log("onDoubleClick", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - if (!isLeftClick(event) || offset <= 20) - return; - - var target = event.target || event.srcElement; - - //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20); - - // if the inline editor was clicked, don't insert a new rule - if (hasClass(target, "textEditorInner")) - return; - - var row = getAncestorByClass(target, "cssRule"); - if (row && !getAncestorByClass(target, "cssPropName") - && !getAncestorByClass(target, "cssPropValue")) - { - this.insertPropertyRow(row); - cancelEvent(event); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "stylesheet", - title: "CSS", - parentPanel: null, - searchable: true, - dependents: ["css", "stylesheet", "dom", "domSide", "layout"], - - options: - { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onMouseDown = bind(this.onMouseDown, this); - this.onDoubleClick = bind(this.onDoubleClick, this); - - if (this.name == "stylesheet") - { - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var selectNode = this.selectNode = createElement("select"); - - processAllStyleSheets(doc, function(doc, styleSheet) - { - var key = StyleSheetCache.key(styleSheet); - var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href); - var option = createElement("option", {value: key}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }); - - this.toolButtonsNode.appendChild(selectNode); - } - /**/ - }, - - onChangeSelect: function(event) - { - event = event || window.event; - var target = event.srcElement || event.currentTarget; - var key = target.value; - var styleSheet = StyleSheetCache.get(key); - - this.updateLocation(styleSheet); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - //if (!domUtils) - //{ - // try { - // domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); - // } catch (exc) { - // if (FBTrace.DBG_ERRORS) - // FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc); - // } - //} - - //TODO: xxxpedro - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - this.initializeNode(); - - if (this.name == "stylesheet") - { - var styleSheets = Firebug.browser.document.styleSheets; - - if (styleSheets.length > 0) - { - addEvent(this.selectNode, "change", this.onChangeSelect); - - this.updateLocation(styleSheets[0]); - } - } - - //Firebug.SourceBoxPanel.initialize.apply(this, arguments); - }, - - shutdown: function() - { - // must destroy the editor when we leave the panel to avoid problems (Issue 2981) - Firebug.Editor.stopEditing(); - - if (this.name == "stylesheet") - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - } - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - destroy: function(state) - { - //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop; - - //persistObjects(this, state); - - // xxxpedro we are stopping the editor in the shutdown method already - //Firebug.Editor.stopEditing(); - Firebug.Panel.destroy.apply(this, arguments); - }, - - initializeNode: function(oldPanelNode) - { - addEvent(this.panelNode, "mousedown", this.onMouseDown); - addEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']); - }, - - destroyNode: function() - { - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - removeEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']); - }, - - ishow: function(state) - { - Firebug.Inspector.stopInspecting(true); - - this.showToolbarButtons("fbCSSButtons", true); - - if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel - { - restoreObjects(this, state); - - if (!this.location) - this.location = this.getDefaultLocation(); - - if (state && state.scrollTop) - this.panelNode.scrollTop = state.scrollTop; - } - }, - - ihide: function() - { - this.showToolbarButtons("fbCSSButtons", false); - - this.lastScrollTop = this.panelNode.scrollTop; - }, - - supportsObject: function(object) - { - if (object instanceof CSSStyleSheet) - return 1; - else if (object instanceof CSSStyleRule) - return 2; - else if (object instanceof CSSStyleDeclaration) - return 2; - else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href)) - return 2; - else - return 0; - }, - - updateLocation: function(styleSheet) - { - if (!styleSheet) - return; - if (styleSheet.editStyleSheet) - styleSheet = styleSheet.editStyleSheet.sheet; - - // if it is a restricted stylesheet, show the warning message and abort the update process - if (styleSheet.restricted) - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode); - - // TODO: xxxpedro remove when there the external resource problem is fixed - externalStyleSheetWarning.tag.append({ - object: "The stylesheet could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22" - }, this.panelNode); - - return; - } - - var rules = this.getStyleSheetRules(this.context, styleSheet); - - var result; - if (rules.length) - result = this.template.tag.replace({rules: rules}, this.panelNode); - else - result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode); - - // TODO: xxxpedro need to fix showToolbarButtons function - //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location)); - - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]); - }, - - updateSelection: function(object) - { - this.selection = null; - - if (object instanceof CSSStyleDeclaration) { - object = object.parentRule; - } - - if (object instanceof CSSStyleRule) - { - this.navigate(object.parentStyleSheet); - this.highlightRule(object); - } - else if (object instanceof CSSStyleSheet) - { - this.navigate(object); - } - else if (object instanceof SourceLink) - { - try - { - var sourceLink = object; - - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - clearNode(this.panelNode); // replace rendered stylesheets - this.showSourceFile(sourceFile); - - var lineNo = object.line; - if (lineNo) - this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context)); - } - else // XXXjjb we should not be taking this path - { - var stylesheet = getStyleSheetByHref(sourceLink.href, this.context); - if (stylesheet) - this.navigate(stylesheet); - else - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink); - } - } - } - catch(exc) { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.upDateSelection FAILS "+exc, exc); - } - } - }, - - updateOption: function(name, value) - { - if (name == "expandShorthandProps") - this.refresh(); - }, - - getLocationList: function() - { - var styleSheets = getAllStyleSheets(this.context); - return styleSheets; - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }, - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ]; - }, - - getContextMenuItems: function(style, target) - { - var items = []; - - if (this.infoTipType == "color") - { - items.push( - {label: "CopyColor", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) } - ); - } - else if (this.infoTipType == "image") - { - items.push( - {label: "CopyImageLocation", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }, - {label: "OpenImageInNewTab", - command: bindFixed(openNewTab, FBL, this.infoTipObject) } - ); - } - - ///if (this.selection instanceof Element) - if (isElement(this.selection)) - { - items.push( - //"-", - {label: "EditStyle", - command: bindFixed(this.editElementStyle, this) } - ); - } - else if (!isSystemStyleSheet(this.selection)) - { - items.push( - //"-", - {label: "NewRule", - command: bindFixed(this.insertRule, this, target) } - ); - } - - var cssRule = getAncestorByClass(target, "cssRule"); - if (cssRule && hasClass(cssRule, "cssEditableRule")) - { - items.push( - "-", - {label: "NewProp", - command: bindFixed(this.insertPropertyRow, this, target) } - ); - - var propRow = getAncestorByClass(target, "cssProp"); - if (propRow) - { - var propName = getChildByClass(propRow, "cssPropName")[textContent]; - var isDisabled = hasClass(propRow, "disabledStyle"); - - items.push( - {label: $STRF("EditProp", [propName]), nol10n: true, - command: bindFixed(this.editPropertyRow, this, propRow) }, - {label: $STRF("DeleteProp", [propName]), nol10n: true, - command: bindFixed(this.deletePropertyRow, this, propRow) }, - {label: $STRF("DisableProp", [propName]), nol10n: true, - type: "checkbox", checked: isDisabled, - command: bindFixed(this.disablePropertyRow, this, propRow) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ); - - return items; - }, - - browseObject: function(object) - { - if (this.infoTipType == "image") - { - openNewTab(this.infoTipObject); - return true; - } - }, - - showInfoTip: function(infoTip, target, x, y) - { - var propValue = getAncestorByClass(target, "cssPropValue"); - if (propValue) - { - var offset = getClientOffset(propValue); - var offsetX = x-offset.x; - - var text = propValue[textContent]; - var charWidth = propValue.offsetWidth/text.length; - var charOffset = Math.floor(offsetX/charWidth); - - var cssValue = parseCSSValue(text, charOffset); - if (cssValue) - { - if (cssValue.value == this.infoTipValue) - return true; - - this.infoTipValue = cssValue.value; - - if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value))) - { - this.infoTipType = "color"; - this.infoTipObject = cssValue.value; - - return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value); - } - else if (cssValue.type == "url") - { - ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0); - var propNameNode = getElementByClass(target.parentNode, "cssPropName"); - if (propNameNode && isImageRule(propNameNode[textContent])) - { - var rule = Firebug.getRepObject(target); - var baseURL = this.getStylesheetURL(rule); - var relURL = parseURLValue(cssValue.value); - var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL); - var repeat = parseRepeatValue(text); - - this.infoTipType = "image"; - this.infoTipObject = absURL; - - return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat); - } - } - } - } - - delete this.infoTipType; - delete this.infoTipValue; - delete this.infoTipObject; - }, - - getEditor: function(target, value) - { - if (target == this.panelNode - || hasClass(target, "cssSelector") || hasClass(target, "cssRule") - || hasClass(target, "cssSheet")) - { - if (!this.ruleEditor) - this.ruleEditor = new CSSRuleEditor(this.document); - - return this.ruleEditor; - } - else - { - if (!this.editor) - this.editor = new CSSEditor(this.document); - - return this.editor; - } - }, - - getDefaultLocation: function() - { - try - { - var styleSheets = this.context.window.document.styleSheets; - if (styleSheets.length) - { - var sheet = styleSheets[0]; - return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet; - } - } - catch (exc) - { - if (FBTrace.DBG_LOCATIONS) - FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc); - } - }, - - getObjectDescription: function(styleSheet) - { - var url = getURLForStyleSheet(styleSheet); - var instance = getInstanceForStyleSheet(styleSheet); - - var baseDescription = splitURLBase(url); - if (instance) { - baseDescription.name = baseDescription.name + " #" + (instance + 1); - } - return baseDescription; - }, - - search: function(text, reverse) - { - var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse); - if (!curDoc && Firebug.searchGlobal) - { - return this.searchOtherDocs(text, reverse); - } - return curDoc; - }, - - searchOtherDocs: function(text, reverse) - { - var scanRE = Firebug.Search.getTestingRegex(text); - function scanDoc(styleSheet) { - // we don't care about reverse here as we are just looking for existence, - // if we do have a result we will handle the reverse logic on display - for (var i = 0; i < styleSheet.cssRules.length; i++) - { - if (scanRE.test(styleSheet.cssRules[i].cssText)) - { - return true; - } - } - } - - if (this.navigateToNextDocument(scanDoc, reverse)) - { - return this.searchCurrentDoc(true, text, reverse); - } - }, - - searchCurrentDoc: function(wrapSearch, text, reverse) - { - if (!text) - { - delete this.currentSearch; - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - { - row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text)); - } - else - { - if (this.editing) - { - this.currentSearch = new TextSearch(this.stylesheetEditor.box); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - scrollSelectionIntoView(this); - return true; - } - else - return false; - } - else - { - function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - } - } - - if (row) - { - this.document.defaultView.getSelection().selectAllChildren(row); - scrollIntoCenterView(row, this.panelNode); - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]); - return false; - } - }, - - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"), - Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal") - ]; - } -}); -/**/ -// ************************************************************************************************ - -function CSSElementPanel() {} - -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype, -{ - template: domplate( - { - cascadedTag: - DIV({"class": "a11yCSSView", role : 'presentation'}, - DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') }, - FOR("rule", "$rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ), - DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')}, - FOR("section", "$inherited", - H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' }, - SPAN({"class": "cssInheritLabel"}, "$inheritLabel"), - TAG(FirebugReps.Element.shortTag, {object: "$section.element"}) - ), - DIV({role : 'group'}, - FOR("rule", "$section.rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ) - ) - ) - ), - - ruleTag: - isIE ? - // IE needs the sourceLink first, otherwise it will be rendered outside the panel - DIV({"class": "cssElementRuleContainer"}, - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}), - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}) - ) - : - // other browsers need the sourceLink last, otherwise it will cause an extra space - // before the rule representation - DIV({"class": "cssElementRuleContainer"}, - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}), - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateCascadeView: function(element) - { - //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]); - var rules = [], sections = [], usedProps = {}; - this.getInheritedRules(element, sections, usedProps); - this.getElementRules(element, rules, usedProps); - - if (rules.length || sections.length) - { - var inheritLabel = "Inherited from"; // $STR("InheritedFrom"); - var result = this.template.cascadedTag.replace({rules: rules, inherited: sections, - inheritLabel: inheritLabel}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - else - { - var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - - // TODO: xxxpedro remove when there the external resource problem is fixed - if (externalStyleSheetURLs.length > 0) - externalStyleSheetWarning.tag.append({ - object: "The results here may be inaccurate because some " + - "stylesheets could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22" - }, this.panelNode); - }, - - getStylesheetURL: function(rule) - { - // if the parentStyleSheet.href is null, CSS std says its inline style. - // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location - if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href) - return rule.parentStyleSheet.href; - else - return this.selection.ownerDocument.location.href; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getInheritedRules: function(element, sections, usedProps) - { - var parent = element.parentNode; - if (parent && parent.nodeType == 1) - { - this.getInheritedRules(parent, sections, usedProps); - - var rules = []; - this.getElementRules(parent, rules, usedProps, true); - - if (rules.length) - sections.splice(0, 0, {element: parent, rules: rules}); - } - }, - - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - - // TODO: xxxpedro remove document specificity issue - //var eid = ElementCache(element); - //inspectedRules = ElementCSSRulesMap[eid]; - - inspectedRules = getElementCSSRules(element); - - if (inspectedRules) - { - for (var i = 0, length=inspectedRules.length; i < length; ++i) - { - var ruleId = inspectedRules[i]; - var ruleData = CSSRuleMap[ruleId]; - var rule = ruleData.rule; - - var ssid = ruleData.styleSheetId; - var parentStyleSheet = StyleSheetCache.get(ssid); - - var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href; // Null means inline - - var instance = null; - //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = false; - //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - // - //var line = domUtils.getRuleLine(rule); - var line; - - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: ruleData.selector, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /* - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - try - { - inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null; - } catch (exc) {} - - if (inspectedRules) - { - for (var i = 0; i < inspectedRules.Count(); ++i) - { - var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule); - - var href = rule.parentStyleSheet.href; // Null means inline - - var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - var line = domUtils.getRuleLine(rule); - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: rule.selectorText, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /**/ - markOverridenProps: function(props, usedProps, inheritMode) - { - for (var i = 0; i < props.length; ++i) - { - var prop = props[i]; - if ( usedProps.hasOwnProperty(prop.name) ) - { - var deadProps = usedProps[prop.name]; // all previous occurrences of this property - for (var j = 0; j < deadProps.length; ++j) - { - var deadProp = deadProps[j]; - if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important) - prop.overridden = true; // new occurrence overridden - else if (!prop.disabled) - deadProp.overridden = true; // previous occurrences overridden - } - } - else - usedProps[prop.name] = []; - - prop.wasInherited = inheritMode ? true : false; - usedProps[prop.name].push(prop); // all occurrences of a property seen so far, by name - } - }, - - getStyleProperties: function(element, rules, usedProps, inheritMode) - { - var props = this.parseCSSProps(element.style, inheritMode); - this.addOldProperties(this.context, getElementXPath(element), inheritMode, props); - - sortProperties(props); - this.markOverridenProps(props, usedProps, inheritMode); - - if (props.length) - rules.splice(0, 0, - {rule: element, id: getElementXPath(element), - selector: "element.style", props: props, inherited: inheritMode}); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "css", - title: "Style", - parentPanel: "HTML", - order: 0, - - initialize: function() - { - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - - //this.updateCascadeView(document.getElementsByTagName("h1")[0]); - //this.updateCascadeView(document.getElementById("build")); - - /* - this.onStateChange = bindFixed(this.contentStateCheck, this); - this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER); - this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE); - /**/ - }, - - ishow: function(state) - { - }, - - watchWindow: function(win) - { - if (domUtils) - { - // Normally these would not be required, but in order to update after the state is set - // using the options menu we need to monitor these global events as well - var doc = win.document; - ///addEvent(doc, "mouseover", this.onHoverChange); - ///addEvent(doc, "mousedown", this.onActiveChange); - } - }, - unwatchWindow: function(win) - { - var doc = win.document; - ///removeEvent(doc, "mouseover", this.onHoverChange); - ///removeEvent(doc, "mousedown", this.onActiveChange); - - if (isAncestor(this.stateChangeEl, doc)) - { - this.removeStateChangeHandlers(); - } - }, - - supportsObject: function(object) - { - return object instanceof Element ? 1 : 0; - }, - - updateView: function(element) - { - this.updateCascadeView(element); - if (domUtils) - { - this.contentState = safeGetContentState(element); - this.addStateChangeHandlers(element); - } - }, - - updateSelection: function(element) - { - if ( !instanceOf(element , "Element") ) // html supports SourceLink - return; - - if (sothinkInstalled) - { - FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode); - return; - } - - /* - if (!domUtils) - { - FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode); - return; - } - /**/ - - if (!element) - return; - - this.updateView(element); - }, - - updateOption: function(name, value) - { - if (name == "showUserAgentCSS" || name == "expandShorthandProps") - this.refresh(); - }, - - getOptionsMenuItems: function() - { - var ret = [ - {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS, - command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") }, - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") } - ]; - if (domUtils && this.selection) - { - var state = safeGetContentState(this.selection); - - ret.push("-"); - ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE, - command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)}); - ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER, - command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)}); - } - return ret; - }, - - updateContentState: function(state, remove) - { - domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state); - this.refresh(); - }, - - addStateChangeHandlers: function(el) - { - this.removeStateChangeHandlers(); - - /* - addEvent(el, "focus", this.onStateChange); - addEvent(el, "blur", this.onStateChange); - addEvent(el, "mouseup", this.onStateChange); - addEvent(el, "mousedown", this.onStateChange); - addEvent(el, "mouseover", this.onStateChange); - addEvent(el, "mouseout", this.onStateChange); - /**/ - - this.stateChangeEl = el; - }, - - removeStateChangeHandlers: function() - { - var sel = this.stateChangeEl; - if (sel) - { - /* - removeEvent(sel, "focus", this.onStateChange); - removeEvent(sel, "blur", this.onStateChange); - removeEvent(sel, "mouseup", this.onStateChange); - removeEvent(sel, "mousedown", this.onStateChange); - removeEvent(sel, "mouseover", this.onStateChange); - removeEvent(sel, "mouseout", this.onStateChange); - /**/ - } - }, - - contentStateCheck: function(state) - { - if (!state || this.contentState & state) - { - var timeoutRunner = bindFixed(function() - { - var newState = safeGetContentState(this.selection); - if (newState != this.contentState) - { - this.context.invalidatePanels(this.name); - } - }, this); - - // Delay exec until after the event has processed and the state has been updated - setTimeout(timeoutRunner, 0); - } - } -}); - -function safeGetContentState(selection) -{ - try - { - return domUtils.getContentState(selection); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.safeGetContentState; EXCEPTION", e); - } -} - -// ************************************************************************************************ - -function CSSComputedElementPanel() {} - -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype, -{ - template: domplate( - { - computedTag: - DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')}, - FOR("group", "$groups", - H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"}, - SPAN({"class": "cssInheritLabel"}, "$group.title") - ), - TABLE({width: "100%", role : 'group'}, - TBODY({role : 'presentation'}, - FOR("prop", "$group.props", - TR({"class": 'focusRow computedStyleRow', role : 'listitem'}, - TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"), - TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value") - ) - ) - ) - ) - ) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateComputedView: function(element) - { - var win = isIE ? - element.ownerDocument.parentWindow : - element.ownerDocument.defaultView; - - var style = isIE ? - element.currentStyle : - win.getComputedStyle(element, ""); - - var groups = []; - - for (var groupName in styleGroups) - { - // TODO: xxxpedro i18n $STR - //var title = $STR("StyleGroup-" + groupName); - var title = styleGroupTitles[groupName]; - var group = {title: title, props: []}; - groups.push(group); - - var props = styleGroups[groupName]; - for (var i = 0; i < props.length; ++i) - { - var propName = props[i]; - var propValue = style.getPropertyValue ? - style.getPropertyValue(propName) : - ""+style[toCamelCase(propName)]; - - if (propValue === undefined || propValue === null) - continue; - - propValue = stripUnits(rgbToHex(propValue)); - if (propValue) - group.props.push({name: propName, value: propValue}); - } - } - - var result = this.template.computedTag.replace({groups: groups}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "computed", - title: "Computed", - parentPanel: "HTML", - order: 1, - - updateView: function(element) - { - this.updateComputedView(element); - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Refresh", command: bind(this.refresh, this) } - ]; - } -}); - -// ************************************************************************************************ -// CSSEditor - -function CSSEditor(doc) -{ - this.initializeInline(doc); -} - -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var rule = Firebug.getRepObject(target); - var emptyProp = - { - // TODO: xxxpedro - uses charCode(255) to force the element being rendered, - // allowing webkit to get the correct position of the property name "span", - // when inserting a new CSS rule? - name: "", - value: "", - important: "" - }; - - if (insertWhere == "before") - return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target); - else - return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - // We need to check the value first in order to avoid a problem in IE8 - // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - if (!value) return; - - target.innerHTML = escapeForCss(value); - - var row = getAncestorByClass(target, "cssProp"); - if (hasClass(row, "disabledStyle")) - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(target); - - if (hasClass(target, "cssPropName")) - { - if (value && previousValue != value) // name of property has changed. - { - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - - if (propValue && propValue != "undefined") { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n"); - if (previousValue) - Firebug.CSSModule.removeProperty(rule, previousValue); - Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority); - } - } - else if (!value) // name of the property has been deleted, so remove the property. - Firebug.CSSModule.removeProperty(rule, previousValue); - } - else if (getAncestorByClass(target, "cssPropValue")) - { - var propName = getChildByClass(row, "cssPropName")[textContent]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - - if (FBTrace.DBG_CSS) - { - FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n"); - // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style); - } - - if (value && value != "null") - { - var parsedValue = parsePriority(value); - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - } - else if (previousValue && previousValue != "null") - Firebug.CSSModule.removeProperty(rule, propName); - } - - this.panel.markChange(this.panel.name == "stylesheet"); - }, - - advanceToNext: function(target, charCode) - { - if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName")) - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - if (hasClass(this.target, "cssPropName")) - return {start: 0, end: value.length-1}; - else - return parseCSSValue(value, offset); - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - if (hasClass(this.target, "cssPropName")) - { - return getCSSPropertyNames(); - } - else - { - var row = getAncestorByClass(this.target, "cssProp"); - var propName = getChildByClass(row, "cssPropName")[textContent]; - return getCSSKeywordsByProperty(propName); - } - } -}); - -//************************************************************************************************ -//CSSRuleEditor - -function CSSRuleEditor(doc) -{ - this.initializeInline(doc); - this.completeAsYouType = false; -} -CSSRuleEditor.uniquifier = 0; -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var emptyRule = { - selector: "", - id: "", - props: [], - isSelectorEditable: true - }; - - if (insertWhere == "before") - return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target); - else - return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue + "'", target); - - target.innerHTML = escapeForCss(value); - - if (value === previousValue) return; - - var row = getAncestorByClass(target, "cssRule"); - var styleSheet = this.panel.location; - styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet; - - var cssRules = styleSheet.cssRules; - var rule = Firebug.getRepObject(target), oldRule = rule; - var ruleIndex = cssRules.length; - if (rule || Firebug.getRepObject(row.nextSibling)) - { - var searchRule = rule || Firebug.getRepObject(row.nextSibling); - for (ruleIndex=0; ruleIndex b.name ? 1 : -1; - }); -} - -function getTopmostRuleLine(panelNode) -{ - for (var child = panelNode.firstChild; child; child = child.nextSibling) - { - if (child.offsetTop+child.offsetHeight > panelNode.scrollTop) - { - var rule = child.repObject; - if (rule) - return { - line: domUtils.getRuleLine(rule), - offset: panelNode.scrollTop-child.offsetTop - }; - } - } - return 0; -} - -function getStyleSheetCSS(sheet, context) -{ - if (sheet.ownerNode instanceof HTMLStyleElement) - return sheet.ownerNode.innerHTML; - else - return context.sourceCache.load(sheet.href).join(""); -} - -function getStyleSheetOwnerNode(sheet) { - for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet); - - return sheet.ownerNode; -} - -function scrollSelectionIntoView(panel) -{ - var selCon = getSelectionController(panel); - selCon.scrollSelectionIntoView( - nsISelectionController.SELECTION_NORMAL, - nsISelectionController.SELECTION_FOCUS_REGION, true); -} - -function getSelectionController(panel) -{ - var browser = Firebug.chrome.getPanelBrowser(panel); - return browser.docShell.QueryInterface(nsIInterfaceRequestor) - .getInterface(nsISelectionDisplay) - .QueryInterface(nsISelectionController); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Script Module - -Firebug.Script = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null; - }, - - selectSourceCode: function(index) - { - this.getPanel().selectSourceCode(index); - } -}); - -Firebug.registerModule(Firebug.Script); - - -// ************************************************************************************************ -// Script Panel - -function ScriptPanel(){}; - -ScriptPanel.prototype = extend(Firebug.Panel, -{ - name: "Script", - title: "Script", - - selectIndex: 0, // index of the current selectNode's option - sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script") - - options: { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var scripts = doc.getElementsByTagName("script"); - var selectNode = this.selectNode = createElement("select"); - - for(var i=0, script; script=scripts[i]; i++) - { - // Don't show Firebug Lite source code in the list of options - if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) - continue; - - var fileName = getFileName(script.src) || getFileName(doc.location.href); - var option = createElement("option", {value:i}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }; - - this.toolButtonsNode.appendChild(selectNode); - }, - - initialize: function() - { - // we must render the code first, so the persistent state can be restore - this.selectSourceCode(this.selectIndex); - - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.selectNode, "change", this.onChangeSelect); - }, - - shutdown: function() - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - detach: function(oldChrome, newChrome) - { - Firebug.Panel.detach.apply(this, arguments); - - var oldPanel = oldChrome.getPanel("Script"); - var index = oldPanel.selectIndex; - - this.selectNode.selectedIndex = index; - this.selectIndex = index; - this.sourceIndex = -1; - }, - - onChangeSelect: function(event) - { - var select = this.selectNode; - - this.selectIndex = select.selectedIndex; - - var option = select.options[select.selectedIndex]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - selectSourceCode: function(index) - { - var select = this.selectNode; - select.selectedIndex = index; - - var option = select.options[index]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - renderSourceCode: function(index) - { - if (this.sourceIndex != index) - { - var renderProcess = function renderProcess(src) - { - var html = [], - hl = 0; - - src = isIE && !isExternal ? - src+'\n' : // IE put an extra line when reading source of local resources - '\n'+src; - - // find the number of lines of code - src = src.replace(/\n\r|\r\n/g, "\n"); - var match = src.match(/[\n]/g); - var lines=match ? match.length : 0; - - // render the full source code + line numbers html - html[hl++] = '
';
-                html[hl++] = escapeHTML(src);
-                html[hl++] = '
'; - - // render the line number divs - for(var l=1, lines; l<=lines; l++) - { - html[hl++] = '
'; - html[hl++] = l; - html[hl++] = '
'; - } - - html[hl++] = '
'; - - updatePanel(html); - }; - - var updatePanel = function(html) - { - self.panelNode.innerHTML = html.join(""); - - // IE needs this timeout, otherwise the panel won't scroll - setTimeout(function(){ - self.synchronizeUI(); - },0); - }; - - var onFailure = function() - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode); - }; - - var self = this; - - var doc = Firebug.browser.document; - var script = doc.getElementsByTagName("script")[index]; - var url = getScriptURL(script); - var isExternal = url && url != doc.location.href; - - try - { - if (isExternal) - { - Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure}); - } - else - { - var src = script.innerHTML; - renderProcess(src); - } - } - catch(e) - { - onFailure(); - } - - this.sourceIndex = index; - } - } -}); - -Firebug.registerPanel(ScriptPanel); - - -// ************************************************************************************************ - - -var getScriptURL = function getScriptURL(script) -{ - var reFile = /([^\/\?#]+)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = Firebug.browser.document; - - var file = reFile.exec(script.src); - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(doc.location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - return path + fileName; - } -}; - -var getFileName = function getFileName(path) -{ - if (!path) return ""; - - var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/); - - return match && match[0] || path; -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var ElementCache = Firebug.Lite.Cache.Element; - -var insertSliceSize = 18; -var insertInterval = 40; - -var ignoreVars = -{ - "__firebug__": 1, - "eval": 1, - - // We are forced to ignore Java-related variables, because - // trying to access them causes browser freeze - "java": 1, - "sun": 1, - "Packages": 1, - "JavaArray": 1, - "JavaMember": 1, - "JavaObject": 1, - "JavaClass": 1, - "JavaPackage": 1, - "_firebug": 1, - "_FirebugConsole": 1, - "_FirebugCommandLine": 1 -}; - -if (Firebug.ignoreFirebugElements) - ignoreVars[Firebug.Lite.Cache.ID] = 1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var memberPanelRep = - isIE6 ? - {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"} - : - {"class": "memberLabel $member.type\\Label"}; - -var RowTag = - TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation', - level: "$member.level"}, - TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'}, - A(memberPanelRep, - SPAN({}, "$member.name") - ) - ), - TD({"class": "memberValueCell", role : 'presentation'}, - TAG("$member.tag", {object: "$member.value"}) - ) - ); - -var WatchRowTag = - TR({"class": "watchNewRow", level: 0}, - TD({"class": "watchEditCell", colspan: 2}, - DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0', - 'aria-label' : $STR('press enter to add new watch expression')}, - $STR("NewWatch") - ) - ) - ); - -var SizerRow = - TR({role : 'presentation'}, - TD({width: "30%"}), - TD({width: "70%"}) - ); - -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable"; -var DirTablePlate = domplate(Firebug.Rep, -{ - tag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"}, - TBODY({role: 'presentation'}, - SizerRow, - FOR("member", "$object|memberIterator", RowTag) - ) - ), - - watchTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow, - WatchRowTag - ) - ), - - tableTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow - ) - ), - - rowTag: - FOR("member", "$members", RowTag), - - memberIterator: function(object, level) - { - return getMembers(object, level); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - if (!isLeftClick(event)) - return; - - var target = event.target || event.srcElement; - - var row = getAncestorByClass(target, "memberRow"); - var label = getAncestorByClass(target, "memberLabel"); - if (label && hasClass(row, "hasChildren")) - { - var row = label.parentNode.parentNode; - this.toggleRow(row); - } - else - { - var object = Firebug.getRepObject(target); - if (typeof(object) == "function") - { - Firebug.chrome.select(object, "script"); - cancelEvent(event); - } - else if (event.detail == 2 && !object) - { - var panel = row.parentNode.parentNode.domPanel; - if (panel) - { - var rowValue = panel.getRowPropertyValue(row); - if (typeof(rowValue) == "boolean") - panel.setPropertyValue(row, !rowValue); - else - panel.editProperty(row); - - cancelEvent(event); - } - } - } - - return false; - }, - - toggleRow: function(row) - { - var level = parseInt(row.getAttribute("level")); - var toggles = row.parentNode.parentNode.toggles; - - if (hasClass(row, "opened")) - { - removeClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Remove the path from the toggle tree - for (var i = 0; i < path.length; ++i) - { - if (i == path.length-1) - delete toggles[path[i]]; - else - toggles = toggles[path[i]]; - } - } - - var rowTag = this.rowTag; - var tbody = row.parentNode; - - setTimeout(function() - { - for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling) - { - if (parseInt(firstRow.getAttribute("level")) <= level) - break; - - tbody.removeChild(firstRow); - } - }, row.insertTimeout ? row.insertTimeout : 0); - } - else - { - setClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Mark the path in the toggle tree - for (var i = 0; i < path.length; ++i) - { - var name = path[i]; - if (toggles.hasOwnProperty(name)) - toggles = toggles[name]; - else - toggles = toggles[name] = {}; - } - } - - var value = row.lastChild.firstChild.repObject; - var members = getMembers(value, level+1); - - var rowTag = this.rowTag; - var lastRow = row; - - var delay = 0; - //var setSize = members.length; - //var rowCount = 1; - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - setTimeout(function() - { - if (lastRow.parentNode) - { - var result = rowTag.insertRows({members: slice}, lastRow); - lastRow = result[1]; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]); - //rowCount += insertSliceSize; - } - if (isLast) - row.removeAttribute("insertTimeout"); - }, delay); - } - - delay += insertInterval; - } - - row.insertTimeout = delay; - } - } -}); - - - -// ************************************************************************************************ - -Firebug.DOMBasePanel = function() {} - -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel, -{ - tag: DirTablePlate.tableTag, - - getRealObject: function(object) - { - // TODO: Move this to some global location - // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc. - // TODO: We might be able to make this check more authoritative with QueryInterface. - if (!object) return object; - if (object.wrappedJSObject) return object.wrappedJSObject; - return object; - }, - - rebuild: function(update, scrollTop) - { - //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]); - var members = getMembers(this.selection); - expandMembers(members, this.toggles, 0, 0); - - this.showMembers(members, update, scrollTop); - - //TODO: xxxpedro statusbar - if (!this.parentPanel) - updateStatusBar(this); - }, - - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!tbody.lastChild) return; - - result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //rowCount += insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop) - panelNode.scrollTop = priorScrollTop; - - - // enable to measure rendering performance - //if (isLast) alert(new Date().getTime() - renderStart + "ms"); - - - }, delay)); - - delay += insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - - /* - // new - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - var _insertSliceSize = insertSliceSize; - var _insertInterval = insertInterval; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - var lastSkip = renderStart, now; - - while (members.length) - { - with({slice: members.splice(0, _insertSliceSize), isLast: !members.length}) - { - var _tbody = tbody; - var _rowTag = rowTag; - var _panelNode = panelNode; - var _priorScrollTop = priorScrollTop; - - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!_tbody.lastChild) return; - - result = _rowTag.insertRows({members: slice}, _tbody.lastChild); - - //rowCount += _insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop) - _panelNode.scrollTop = _priorScrollTop; - - - // enable to measure rendering performance - //alert("gap: " + (new Date().getTime() - lastSkip)); - //lastSkip = new Date().getTime(); - - //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms"); - - }, delay)); - - delay += _insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - /**/ - - showEmptyMembers: function() - { - FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode); - }, - - findPathObject: function(object) - { - var pathIndex = -1; - for (var i = 0; i < this.objectPath.length; ++i) - { - // IE needs === instead of == or otherwise some objects will - // be considered equal to different objects, returning the - // wrong index of the objectPath array - if (this.getPathObject(i) === object) - return i; - } - - return -1; - }, - - getPathObject: function(index) - { - var object = this.objectPath[index]; - - if (object instanceof Property) - return object.getObject(); - else - return object; - }, - - getRowObject: function(row) - { - var object = getRowOwnerObject(row); - return object ? object : this.selection; - }, - - getRowPropertyValue: function(row) - { - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object) - { - var propName = getRowName(row); - - if (object instanceof jsdIStackFrame) - return Firebug.Debugger.evaluate(propName, this.context); - else - return object[propName]; - } - }, - /* - copyProperty: function(row) - { - var value = this.getRowPropertyValue(row); - copyToClipboard(value); - }, - - editProperty: function(row, editValue) - { - if (hasClass(row, "watchNewRow")) - { - if (this.context.stopped) - Firebug.Editor.startEditing(row, ""); - else if (Firebug.Console.isAlwaysEnabled()) // not stopped in debugger, need command line - { - if (Firebug.CommandLine.onCommandLineFocus()) - Firebug.Editor.startEditing(row, ""); - else - row.innerHTML = $STR("warning.Command line blocked?"); - } - else - row.innerHTML = $STR("warning.Console must be enabled"); - } - else if (hasClass(row, "watchRow")) - Firebug.Editor.startEditing(row, getRowName(row)); - else - { - var object = this.getRowObject(row); - this.context.thisValue = object; - - if (!editValue) - { - var propValue = this.getRowPropertyValue(row); - - var type = typeof(propValue); - if (type == "undefined" || type == "number" || type == "boolean") - editValue = propValue; - else if (type == "string") - editValue = "\"" + escapeJS(propValue) + "\""; - else if (propValue == null) - editValue = "null"; - else if (object instanceof Window || object instanceof jsdIStackFrame) - editValue = getRowName(row); - else - editValue = "this." + getRowName(row); - } - - - Firebug.Editor.startEditing(row, editValue); - } - }, - - deleteProperty: function(row) - { - if (hasClass(row, "watchRow")) - this.deleteWatch(row); - else - { - var object = getRowOwnerObject(row); - if (!object) - object = this.selection; - object = this.getRealObject(object); - - if (object) - { - var name = getRowName(row); - try - { - delete object[name]; - } - catch (exc) - { - return; - } - - this.rebuild(true); - this.markChange(); - } - } - }, - - setPropertyValue: function(row, value) // value must be string - { - if(FBTrace.DBG_DOM) - { - FBTrace.sysout("row: "+row); - FBTrace.sysout("value: "+value+" type "+typeof(value), value); - } - - var name = getRowName(row); - if (name == "this") - return; - - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object && !(object instanceof jsdIStackFrame)) - { - // unwrappedJSObject.property = unwrappedJSObject - Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(), - function success(result, context) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result); - object[name] = result; - }, - function failed(exc, context) - { - try - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc); - // If the value doesn't parse, then just store it as a string. Some users will - // not realize they're supposed to enter a JavaScript expression and just type - // literal text - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - ); - } - else if (this.context.stopped) - { - try - { - Firebug.CommandLine.evaluate(name+"="+value, this.context); - } - catch (exc) - { - try - { - // See catch block above... - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - } - - this.rebuild(true); - this.markChange(); - }, - - highlightRow: function(row) - { - if (this.highlightedRow) - cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context); - - this.highlightedRow = row; - - if (row) - setClassTimed(row, "jumpHighlight", this.context); - },/**/ - - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - create: function() - { - // TODO: xxxpedro - this.context = Firebug.browser; - - this.objectPath = []; - this.propertyPath = []; - this.viewPath = []; - this.pathIndex = -1; - this.toggles = {}; - - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.panelNode, "mousemove", this.onMouseMove); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - /* - destroy: function(state) - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - - if (this.pathIndex) - state.pathIndex = this.pathIndex; - if (this.viewPath) - state.viewPath = this.viewPath; - if (this.propertyPath) - state.propertyPath = this.propertyPath; - - if (this.propertyPath.length > 0 && !this.propertyPath[1]) - state.firstSelection = persistObject(this.getPathObject(1), this.context); - - Firebug.Panel.destroy.apply(this, arguments); - }, - /**/ - - ishow: function(state) - { - if (this.context.loaded && !this.selection) - { - if (!state) - { - this.select(null); - return; - } - if (state.viewPath) - this.viewPath = state.viewPath; - if (state.propertyPath) - this.propertyPath = state.propertyPath; - - var defaultObject = this.getDefaultSelection(this.context); - var selectObject = defaultObject; - - if (state.firstSelection) - { - var restored = state.firstSelection(this.context); - if (restored) - { - selectObject = restored; - this.objectPath = [defaultObject, restored]; - } - else - this.objectPath = [defaultObject]; - } - else - this.objectPath = [defaultObject]; - - if (this.propertyPath.length > 1) - { - for (var i = 1; i < this.propertyPath.length; ++i) - { - var name = this.propertyPath[i]; - if (!name) - continue; - - var object = selectObject; - try - { - selectObject = object[name]; - } - catch (exc) - { - selectObject = null; - } - - if (selectObject) - { - this.objectPath.push(new Property(object, name)); - } - else - { - // If we can't access a property, just stop - this.viewPath.splice(i); - this.propertyPath.splice(i); - this.objectPath.splice(i); - selectObject = this.getPathObject(this.objectPath.length-1); - break; - } - } - } - - var selection = state.pathIndex <= this.objectPath.length-1 - ? this.getPathObject(state.pathIndex) - : this.getPathObject(this.objectPath.length-1); - - this.select(selection); - } - }, - /* - hide: function() - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - }, - /**/ - - supportsObject: function(object) - { - if (object == null) - return 1000; - - if (typeof(object) == "undefined") - return 1000; - else if (object instanceof SourceLink) - return 0; - else - return 1; // just agree to support everything but not agressively. - }, - - refresh: function() - { - this.rebuild(true); - }, - - updateSelection: function(object) - { - var previousIndex = this.pathIndex; - var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex]; - - var newPath = this.pathToAppend; - delete this.pathToAppend; - - var pathIndex = this.findPathObject(object); - if (newPath || pathIndex == -1) - { - this.toggles = {}; - - if (newPath) - { - // Remove everything after the point where we are inserting, so we - // essentially replace it with the new path - if (previousView) - { - if (this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - var start = previousIndex + 1, - // Opera needs the length argument in splice(), otherwise - // it will consider that only one element should be removed - length = this.objectPath.length - start; - - this.objectPath.splice(start, length); - this.propertyPath.splice(start, length); - this.viewPath.splice(start, length); - } - - var value = this.getPathObject(previousIndex); - if (!value) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n"); - return; - } - - for (var i = 0, length = newPath.length; i < length; ++i) - { - var name = newPath[i]; - var object = value; - try - { - value = value[name]; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n"); - return; - } - - ++this.pathIndex; - this.objectPath.push(new Property(object, name)); - this.propertyPath.push(name); - this.viewPath.push({toggles: this.toggles, scrollTop: 0}); - } - } - else - { - this.toggles = {}; - - var win = Firebug.browser.window; - //var win = this.context.getGlobalScope(); - if (object === win) - { - this.pathIndex = 0; - this.objectPath = [win]; - this.propertyPath = [null]; - this.viewPath = [{toggles: this.toggles, scrollTop: 0}]; - } - else - { - this.pathIndex = 1; - this.objectPath = [win, object]; - this.propertyPath = [null, null]; - this.viewPath = [ - {toggles: {}, scrollTop: 0}, - {toggles: this.toggles, scrollTop: 0} - ]; - } - } - - this.panelNode.scrollTop = 0; - this.rebuild(); - } - else - { - this.pathIndex = pathIndex; - - var view = this.viewPath[pathIndex]; - this.toggles = view.toggles; - - // Persist the current scroll location - if (previousView && this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - this.rebuild(false, view.scrollTop); - } - }, - - getObjectPath: function(object) - { - return this.objectPath; - }, - - getDefaultSelection: function() - { - return Firebug.browser.window; - //return this.context.getGlobalScope(); - }/*, - - updateOption: function(name, value) - { - const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1, - showDOMFuncs: 1, showDOMConstants: 1}; - if ( optionMap.hasOwnProperty(name) ) - this.rebuild(true); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowUserProps", "showUserProps"), - optionMenu("ShowUserFuncs", "showUserFuncs"), - optionMenu("ShowDOMProps", "showDOMProps"), - optionMenu("ShowDOMFuncs", "showDOMFuncs"), - optionMenu("ShowDOMConstants", "showDOMConstants"), - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ]; - }, - - getContextMenuItems: function(object, target) - { - var row = getAncestorByClass(target, "memberRow"); - - var items = []; - - if (row) - { - var rowName = getRowName(row); - var rowObject = this.getRowObject(row); - var rowValue = this.getRowPropertyValue(row); - - var isWatch = hasClass(row, "watchRow"); - var isStackFrame = rowObject instanceof jsdIStackFrame; - - if (typeof(rowValue) == "string" || typeof(rowValue) == "number") - { - // Functions already have a copy item in their context menu - items.push( - "-", - {label: "CopyValue", - command: bindFixed(this.copyProperty, this, row) } - ); - } - - items.push( - "-", - {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"), - command: bindFixed(this.editProperty, this, row) } - ); - - if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName))) - { - items.push( - {label: isWatch ? "DeleteWatch" : "DeleteProperty", - command: bindFixed(this.deleteProperty, this, row) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ); - - return items; - }, - - getEditor: function(target, value) - { - if (!this.editor) - this.editor = new DOMEditor(this.document); - - return this.editor; - }/**/ -}); - -// ************************************************************************************************ - -// TODO: xxxpedro statusbar -var updateStatusBar = function(panel) -{ - var path = panel.propertyPath; - var index = panel.pathIndex; - - var r = []; - - for (var i=0, l=path.length; i'); - r.push(i==0 ? "window" : path[i] || "Object"); - r.push('
'); - - if(i < l-1) - r.push('>'); - } - panel.statusBarNode.innerHTML = r.join(""); -}; - - -var DOMMainPanel = Firebug.DOMPanel = function () {}; - -Firebug.DOMPanel.DirTable = DirTablePlate; - -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - onClickStatusBar: function(event) - { - var target = event.srcElement || event.target; - var element = getAncestorByClass(target, "fbHover"); - - if(element) - { - var pathIndex = element.getAttribute("pathIndex"); - - if(pathIndex) - { - this.select(this.getPathObject(pathIndex)); - } - } - }, - - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - this.select(target.repObject, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOM", - title: "DOM", - searchable: true, - statusSeparator: ">", - - options: { - hasToolButtons: true, - hasStatusBar: true - }, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - - //TODO: xxxpedro - this.onClickStatusBar = bind(this.onClickStatusBar, this); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(oldPanelNode) - { - //this.panelNode.addEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']); - - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro dom - this.ishow(); - - //TODO: xxxpedro - addEvent(this.statusBarNode, "click", this.onClickStatusBar); - }, - - shutdown: function() - { - //this.panelNode.removeEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']); - - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }/*, - - search: function(text, reverse) - { - if (!text) - { - delete this.currentSearch; - this.highlightRow(null); - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive); - else - { - function findRow(node) { return getAncestorByClass(node, "memberRow"); } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive); - } - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - - scrollIntoCenterView(row, this.panelNode); - - this.highlightRow(row); - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]); - return false; - } - }/**/ -}); - -Firebug.registerPanel(DOMMainPanel); - - -// ************************************************************************************************ - - - -// ************************************************************************************************ -// Local Helpers - -var getMembers = function getMembers(object, level) // we expect object to be user-level object wrapped in security blanket -{ - if (!level) - level = 0; - - var ordinals = [], userProps = [], userClasses = [], userFuncs = [], - domProps = [], domFuncs = [], domConstants = []; - - try - { - var domMembers = getDOMMembers(object); - //var domMembers = {}; // TODO: xxxpedro - //var domConstantMap = {}; // TODO: xxxpedro - - if (object.wrappedJSObject) - var insecureObject = object.wrappedJSObject; - else - var insecureObject = object; - - // IE function prototype is not listed in (for..in) - if (isIE && isFunction(object)) - addMember("user", userProps, "prototype", object.prototype, level); - - for (var name in insecureObject) // enumeration is safe - { - if (ignoreVars[name] == 1) // javascript.options.strict says ignoreVars is undefined. - continue; - - var val; - try - { - val = insecureObject[name]; // getter is safe - } - catch (exc) - { - // Sometimes we get exceptions trying to access certain members - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers cannot access "+name, exc); - } - - var ordinal = parseInt(name); - if (ordinal || ordinal == 0) - { - addMember("ordinal", ordinals, name, val, level); - } - else if (isFunction(val)) - { - if (isClassFunction(val) && !(name in domMembers)) - addMember("userClass", userClasses, name, val, level); - else if (name in domMembers) - addMember("domFunction", domFuncs, name, val, level, domMembers[name]); - else - addMember("userFunction", userFuncs, name, val, level); - } - else - { - //TODO: xxxpedro - /* - var getterFunction = insecureObject.__lookupGetter__(name), - setterFunction = insecureObject.__lookupSetter__(name), - prefix = ""; - - if(getterFunction && !setterFunction) - prefix = "get "; - /**/ - - var prefix = ""; - - if (name in domMembers && !(name in domConstantMap)) - addMember("dom", domProps, (prefix+name), val, level, domMembers[name]); - else if (name in domConstantMap) - addMember("dom", domConstants, (prefix+name), val, level); - else - addMember("user", userProps, (prefix+name), val, level); - } - } - } - catch (exc) - { - // Sometimes we get exceptions just from trying to iterate the members - // of certain objects, like StorageList, but don't let that gum up the works - throw exc; - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers FAILS: ", exc); - //throw exc; - } - - function sortName(a, b) { return a.name > b.name ? 1 : -1; } - function sortOrder(a, b) { return a.order > b.order ? 1 : -1; } - - var members = []; - - members.push.apply(members, ordinals); - - Firebug.showUserProps = true; // TODO: xxxpedro - Firebug.showUserFuncs = true; // TODO: xxxpedro - Firebug.showDOMProps = true; - Firebug.showDOMFuncs = true; - Firebug.showDOMConstants = true; - - if (Firebug.showUserProps) - { - userProps.sort(sortName); - members.push.apply(members, userProps); - } - - if (Firebug.showUserFuncs) - { - userClasses.sort(sortName); - members.push.apply(members, userClasses); - - userFuncs.sort(sortName); - members.push.apply(members, userFuncs); - } - - if (Firebug.showDOMProps) - { - domProps.sort(sortName); - members.push.apply(members, domProps); - } - - if (Firebug.showDOMFuncs) - { - domFuncs.sort(sortName); - members.push.apply(members, domFuncs); - } - - if (Firebug.showDOMConstants) - members.push.apply(members, domConstants); - - return members; -} - -function expandMembers(members, toggles, offset, level) // recursion starts with offset=0, level=0 -{ - var expanded = 0; - for (var i = offset; i < members.length; ++i) - { - var member = members[i]; - if (member.level > level) - break; - - if ( toggles.hasOwnProperty(member.name) ) - { - member.open = "opened"; // member.level <= level && member.name in toggles. - - var newMembers = getMembers(member.value, level+1); // sets newMembers.level to level+1 - - var args = [i+1, 0]; - args.push.apply(args, newMembers); - members.splice.apply(members, args); - - /* - if (FBTrace.DBG_DOM) - { - FBTrace.sysout("expandMembers member.name", member.name); - FBTrace.sysout("expandMembers toggles", toggles); - FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]); - FBTrace.sysout("dom.expandedMembers level: "+level+" member", member); - } - /**/ - - expanded += newMembers.length; - i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1); - } - } - - return expanded; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -function isClassFunction(fn) -{ - try - { - for (var name in fn.prototype) - return true; - } catch (exc) {} - return false; -} - -var hasProperties = function hasProperties(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - - // IE function prototype is not listed in (for..in) - if (isFunction(ob)) return true; - - return false; -} - -FBL.ErrorCopy = function(message) -{ - this.message = message; -}; - -var addMember = function addMember(type, props, name, value, level, order) -{ - var rep = Firebug.getRep(value); // do this first in case a call to instanceof reveals contents - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var ErrorCopy = function(){}; //TODO: xxxpedro - - var valueType = typeof(value); - var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) && - (isFunction(value) || (valueType == "object" && value != null) - || (valueType == "string" && value.length > Firebug.stringCropLength)); - - props.push({ - name: name, - value: value, - type: type, - rowClass: "memberRow-"+type, - open: "", - order: order, - level: level, - indent: level*16, - hasChildren: hasChildren, - tag: tag - }); -} - -var getWatchRowIndex = function getWatchRowIndex(row) -{ - var index = -1; - for (; row && hasClass(row, "watchRow"); row = row.previousSibling) - ++index; - return index; -} - -var getRowName = function getRowName(row) -{ - var node = row.firstChild; - return node.textContent ? node.textContent : node.innerText; -} - -var getRowValue = function getRowValue(row) -{ - return row.lastChild.firstChild.repObject; -} - -var getRowOwnerObject = function getRowOwnerObject(row) -{ - var parentRow = getParentRow(row); - if (parentRow) - return getRowValue(parentRow); -} - -var getParentRow = function getParentRow(row) -{ - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - return row; - } -} - -var getPath = function getPath(row) -{ - var name = getRowName(row); - var path = [name]; - - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - { - var name = getRowName(row); - path.splice(0, 0, name); - - --level; - } - } - - return path; -} - -// ************************************************************************************************ - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// DOM Module - -Firebug.DOM = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null; - } -}); - -Firebug.registerModule(Firebug.DOM); - - -// ************************************************************************************************ -// DOM Panel - -var lastHighlightedObject; - -function DOMSidePanel(){}; - -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - var object = target.repObject; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - /* - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - object = object ? object.repObject : null; - - if(!object) return; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - /**/ - - - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOMSidePanel", - parentPanel: "HTML", - title: "DOM", - - options: { - hasToolButtons: true - }, - - isInitialized: false, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - }, - - initialize: function(){ - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }, - - reattach: function(oldChrome) - { - //this.isInitialized = oldChrome.getPanel("DOM").isInitialized; - this.toggles = oldChrome.getPanel("DOMSidePanel").toggles; - } - -}); - -Firebug.registerPanel(DOMSidePanel); - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.FBTrace = {}; - -(function() { -// ************************************************************************************************ - -var traceOptions = { - DBG_TIMESTAMP: 1, - DBG_INITIALIZE: 1, - DBG_CHROME: 1, - DBG_ERRORS: 1, - DBG_DISPATCH: 1, - DBG_CSS: 1 -}; - -this.module = null; - -this.initialize = function() -{ - if (!this.messageQueue) - this.messageQueue = []; - - for (var name in traceOptions) - this[name] = traceOptions[name]; -}; - -// ************************************************************************************************ -// FBTrace API - -this.sysout = function() -{ - return this.logFormatted(arguments, ""); -}; - -this.dumpProperties = function(title, object) -{ - return this.logFormatted("dumpProperties() not supported.", "warning"); -}; - -this.dumpStack = function() -{ - return this.logFormatted("dumpStack() not supported.", "warning"); -}; - -this.flush = function(module) -{ - this.module = module; - - var queue = this.messageQueue; - this.messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - this.writeMessage(queue[i][0], queue[i][1], queue[i][2]); -}; - -this.getPanel = function() -{ - return this.module ? this.module.getPanel() : null; -}; - -//************************************************************************************************* - -this.logFormatted = function(objects, className) -{ - var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : []; - var length = objects.length; - - for (var i = 0; i < length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - - if (i == 0) - { - html.push(""); - appendText(object, html); - html.push(""); - } - else - appendText(object, html); - } - - return this.logRow(html, className); -}; - -this.logRow = function(message, className) -{ - var panel = this.getPanel(); - - if (panel && panel.panelNode) - this.writeMessage(message, className); - else - { - this.messageQueue.push([message, className]); - } - - return this.LOG_COMMAND; -}; - -this.writeMessage = function(message, className) -{ - var container = this.getPanel().containerNode; - var isScrolledToBottom = - container.scrollTop + container.offsetHeight >= container.scrollHeight; - - this.writeRow.call(this, message, className); - - if (isScrolledToBottom) - container.scrollTop = container.scrollHeight - container.offsetHeight; -}; - -this.appendRow = function(row) -{ - var container = this.getPanel().panelNode; - container.appendChild(row); -}; - -this.writeRow = function(message, className) -{ - var row = this.getPanel().panelNode.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - this.appendRow(row); -}; - -//************************************************************************************************* - -function appendText(object, html) -{ - html.push(escapeHTML(objectToString(object))); -}; - -function getTimestamp() -{ - var now = new Date(); - var ms = "" + (now.getMilliseconds() / 1000).toFixed(3); - ms = ms.substr(2); - - return now.toLocaleTimeString() + "." + ms; -}; - -//************************************************************************************************* - -var HTMLtoEntity = -{ - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ -}; - -function replaceChars(ch) -{ - return HTMLtoEntity[ch]; -}; - -function escapeHTML(value) -{ - return (value+"").replace(/[<>&"']/g, replaceChars); -}; - -//************************************************************************************************* - -function objectToString(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -}).apply(FBL.FBTrace); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// If application isn't in trace mode, the FBTrace panel won't be loaded -if (!Env.Options.enableTrace) return; - -// ************************************************************************************************ -// FBTrace Module - -Firebug.Trace = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null; - }, - - clear: function() - { - this.getPanel().panelNode.innerHTML = ""; - } -}); - -Firebug.registerModule(Firebug.Trace); - - -// ************************************************************************************************ -// FBTrace Panel - -function TracePanel(){}; - -TracePanel.prototype = extend(Firebug.Panel, -{ - name: "Trace", - title: "Trace", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear FBTrace logs", - owner: Firebug.Trace, - onClick: Firebug.Trace.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - } - -}); - -Firebug.registerPanel(TracePanel); - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; - -var parentPanelMap = {}; - - -var registerModule = Firebug.registerModule; -var registerPanel = Firebug.registerPanel; - -// ************************************************************************************************ -append(Firebug, -{ - extend: function(fn) - { - if (Firebug.chrome && Firebug.chrome.addPanel) - { - var namespace = ns(fn); - fn.call(namespace, FBL); - } - else - { - setTimeout(function(){Firebug.extend(fn);},100); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - registerModule.apply(Firebug, arguments); - - modules.push.apply(modules, arguments); - - dispatch(modules, "initialize", []); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - registerPanel.apply(Firebug, arguments); - - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - // TODO: xxxpedro investigate why Dev Panel throws an error - if (panelType.prototype.name == "Dev") continue; - - panelTypeMap[panelType.prototype.name] = arguments[i]; - - var parentPanelName = panelType.prototype.parentPanel; - if (parentPanelName) - { - parentPanelMap[parentPanelName] = 1; - } - else - { - var panelName = panelType.prototype.name; - var chrome = Firebug.chrome; - chrome.addPanel(panelName); - - // tab click handler - var onTabClick = function onTabClick() - { - chrome.selectPanel(panelName); - return false; - }; - - chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]); - } - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - } - -}); - - - - -// ************************************************************************************************ -}}); - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -FirebugChrome.Skin = -{ - CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) no-repeat !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}', - HTML: '
 
 
>>>
2 errors' -}; - -// ************************************************************************************************ -}}); - -// ************************************************************************************************ -FBL.initialize(); -// ************************************************************************************************ - -})(); \ No newline at end of file diff --git a/branches/firebug1.3/build/firebug-lite.js b/branches/firebug1.3/build/firebug-lite.js deleted file mode 100644 index 1af5b829..00000000 --- a/branches/firebug1.3/build/firebug-lite.js +++ /dev/null @@ -1,7886 +0,0 @@ -(function(){ -/************************************************************** - * - * Firebug Lite 1.3.2 - * - * Copyright (c) 2007, Parakey Inc. - * Released under BSD license. - * More information: http://getfirebug.com/firebuglite - * - **************************************************************/ -/* - * CSS selectors powered by: - * - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -var FBL={}; -(function(){var productionDir="http://getfirebug.com/releases/lite/"; -var bookmarkletVersion=4; -var reNotWhitespace=/[^\s]/; -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/; -this.reJavascript=/\s*javascript:\s*(.*)/; -this.reChrome=/chrome:\/\/([^\/]*)\//; -this.reFile=/file:\/\/([^\/]*)\//; -var userAgent=navigator.userAgent.toLowerCase(); -this.isFirefox=/firefox/.test(userAgent); -this.isOpera=/opera/.test(userAgent); -this.isSafari=/webkit/.test(userAgent); -this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent); -this.isIE6=/msie 6/i.test(navigator.appVersion); -this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1]; -this.isIElt8=this.isIE&&(this.browserVersion-0<8); -this.NS=null; -this.pixelsPerInch=null; -var namespaces=[]; -this.ns=function(fn){var ns={}; -namespaces.push(fn,ns); -return ns -}; -var FBTrace=null; -this.initialize=function(){if(window.firebug&&firebug.firebuglite||window.console&&console.firebuglite){return -}if(FBL.FBTrace){FBTrace=FBL.FBTrace -}else{FBTrace=FBL.FBTrace={} -}FBL.Ajax.initialize(); -var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object"; -if(isChromeContext){sharedEnv=window.Firebug.SharedEnv; -delete window.Firebug.SharedEnv; -FBL.Env=sharedEnv; -FBL.Env.isChromeContext=true; -FBTrace.messageQueue=FBL.Env.traceMessageQueue -}else{FBL.NS=document.documentElement.namespaceURI; -FBL.Env.browser=window; -FBL.Env.destroy=destroyEnvironment; -if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true -}findLocation(); -var prefs=eval("("+FBL.readCookie("FirebugLite")+")"); -if(prefs){FBL.Env.Options.startOpened=prefs.startOpened; -FBL.Env.Options.enableTrace=prefs.enableTrace; -FBL.Env.Options.enablePersistent=prefs.enablePersistent; -FBL.Env.Options.disableXHRListener=prefs.disableXHRListener -}if(FBL.isFirefox&&typeof FBL.Env.browser.console=="object"&&FBL.Env.browser.console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return -}}if(FBL.Env.isDebugMode){FBL.Env.browser.FBL=FBL -}this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat"; -this.isIEQuiksMode=this.isIE&&this.isQuiksMode; -this.isIEStantandMode=this.isIE&&!this.isQuiksMode; -this.noFixedPosition=this.isIE6||this.isIEQuiksMode; -if(FBL.Env.Options.enableTrace){FBTrace.initialize() -}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context") -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN") -}for(var i=0; -i0){path=reLastDir.exec(path)[1] -}path+=backDir[2] -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2) -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path); -path=domain[1]+src -}else{path+=src -}}}}}}FBL.Env.isChromeExtension=script&&script.getAttribute("extension")=="Chrome"; -if(FBL.Env.isChromeExtension){path=productionDir; -FBL.Env.bookmarkletOutdated=false; -script={innerHTML:"{showIconWhenHidden:false}"} -}var m=path&&path.match(/([^\/]+)\/$/)||null; -if(path&&m){var Env=FBL.Env; -Env.useLocalSkin=path.indexOf(location.protocol+"//"+location.host+"/")==0; -if(fileName=="firebug-lite-dev.js"){Env.isDevelopmentMode=true; -Env.isDebugMode=true -}else{if(fileName=="firebug-lite-debug.js"){Env.isDebugMode=true -}}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true -}if(fileOptions){var options=fileOptions.split(","); -for(var i=0,length=options.length; -i1){for(var i=0; -i":return">"; -case"&":return"&"; -case"'":return"'"; -case'"':return""" -}return"?" -}return String(value).replace(/[<>&"']/g,replaceChars) -}this.escapeHTML=escapeHTML; -this.cropString=function(text,limit){text=text+""; -if(!limit){var halfLimit=50 -}else{var halfLimit=limit/2 -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit)) -}else{return this.escapeNewLines(text) -}}; -this.isWhitespace=function(text){return !reNotWhitespace.exec(text) -}; -this.splitLines=function(text){var reSplitLines2=/.*(:?\r\n|\n|\r)?/mg; -var lines; -if(text.match){lines=text.match(reSplitLines2) -}else{var str=text+""; -lines=str.match(reSplitLines2) -}lines.pop(); -return lines -}; -this.safeToString=function(ob){if(this.isIE){return ob+"" -}try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString() -}}catch(exc){return ob+"" -}}; -this.hasProperties=function(ob){try{for(var name in ob){return true -}}catch(exc){}return false -}; -var reTrim=/^\s+|\s+$/g; -this.trim=function(s){return s.replace(reTrim,"") -}; -this.emptyFn=function(){}; -this.isVisible=function(elt){return this.getStyle(elt,"visibility")!="hidden"&&(elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML") -}; -this.collapse=function(elt,collapsed){if(this.isIElt8){if(collapsed){this.setClass(elt,"collapsed") -}else{this.removeClass(elt,"collapsed") -}}else{elt.setAttribute("collapsed",collapsed?"true":"false") -}}; -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured") -}else{this.removeClass(elt,"obscured") -}}; -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible" -}; -this.clearNode=function(node){var nodeName=" "+node.nodeName.toLowerCase()+" "; -var ignoreTags=" table tbody thead tfoot th tr td "; -if(this.isIE&&ignoreTags.indexOf(nodeName)!=-1){this.eraseNode(node) -}else{node.innerHTML="" -}}; -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild) -}}; -this.iterateWindows=function(win,handler){if(!win||!win.document){return -}handler(win); -if(win==top||!win.frames){return -}for(var i=0; -iscrollParent.offsetHeight){return scrollParent -}}}; -this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight; -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom) -}return onBottom -}; -this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight; -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); -if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element) -}}return(element.scrollTop==element.scrollHeight) -}; -this.move=function(element,x,y){element.style.left=x+"px"; -element.style.top=y+"px" -}; -this.resize=function(element,w,h){element.style.width=w+"px"; -element.style.height=h+"px" -}; -this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element) -}if(!scrollBox){return -}var offset=this.getClientOffset(element); -var topSpace=offset.y-scrollBox.scrollTop; -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight); -if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2); -var centerY=offset.y-split; -scrollBox.scrollTop=centerY; -topSpace=split; -bottomSpace=split-element.offsetHeight -}return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)} -}; -this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return -}if(!scrollBox){scrollBox=this.getOverflowParent(element) -}if(!scrollBox){return -}var offset=this.getClientOffset(element); -if(!notY){var topSpace=offset.y-scrollBox.scrollTop; -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight); -if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2); -scrollBox.scrollTop=centerY -}}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft; -var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth); -if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2); -scrollBox.scrollLeft=centerX -}}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML) -}}; -var cssKeywordMap=null; -var cssPropNames=null; -var cssColorNames=null; -var imageRules=null; -this.getCSSKeywordsByProperty=function(propName){if(!cssKeywordMap){cssKeywordMap={}; -for(var name in this.cssInfo){var list=[]; -var types=this.cssInfo[name]; -for(var i=0; -i"); -var pureText=true; -for(var child=element.firstChild; -child; -child=child.nextSibling){pureText=pureText&&(child.nodeType==Node.TEXT_NODE) -}if(pureText){html.push(escapeForHtmlEditor(elt.textContent)) -}else{for(var child=elt.firstChild; -child; -child=child.nextSibling){toHTML(child) -}}html.push("") -}else{if(isElementSVG(elt)||isElementMathML(elt)){html.push("/>") -}else{if(self.isSelfClosing(elt)){html.push((isElementXHTML(elt))?"/>":">") -}else{html.push(">") -}}}}else{if(elt.nodeType==Node.TEXT_NODE){html.push(escapeForTextNode(elt.textContent)) -}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){html.push("") -}else{if(elt.nodeType==Node.COMMENT_NODE){html.push("") -}}}}}var html=[]; -toHTML(element); -return html.join("") -}; -this.getElementXML=function(element){function toXML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return -}xml.push("<",elt.nodeName.toLowerCase()); -for(var i=0; -i"); -for(var child=elt.firstChild; -child; -child=child.nextSibling){toXML(child) -}xml.push("") -}else{xml.push("/>") -}}else{if(elt.nodeType==Node.TEXT_NODE){xml.push(elt.nodeValue) -}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){xml.push("") -}else{if(elt.nodeType==Node.COMMENT_NODE){xml.push("") -}}}}}var xml=[]; -toXML(element); -return xml.join("") -}; -this.hasClass=function(node,name){if(arguments.length==2){return(" "+node.className+" ").indexOf(" "+name+" ")!=-1 -}if(!node||node.nodeType!=1){return false -}else{for(var i=1; -i=0){var size=name.length; -node.className=node.className.substr(0,index-1)+node.className.substr(index+size) -}}}; -this.toggleClass=function(elt,name){if((" "+elt.className+" ").indexOf(" "+name+" ")!=-1){this.removeClass(elt,name) -}else{this.setClass(elt,name) -}}; -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300 -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout) -}else{this.setClass(elt,name) -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout; -FBL.removeClass(elt,name) -},timeout) -}; -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name); -context.clearTimeout(elt.__setClassTimeout); -delete elt.__setClassTimeout -}}; -this.$=function(id,doc){if(doc){return doc.getElementById(id) -}else{return FBL.Firebug.chrome.document.getElementById(id) -}}; -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc) -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document) -}}; -this.getChildByClass=function(node){for(var i=1; -i1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true -}return FBL.isSystemURL(win.location.href) -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc); -return false -}}; -this.isSystemStyleSheet=function(sheet){var href=sheet&&sheet.href; -return href&&FBL.isSystemURL(href) -}; -this.getURIHost=function(uri){try{if(uri){return uri.host -}else{return"" -}}catch(exc){return"" -}}; -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true -}else{if(url.substr(0,8)=="wyciwyg:"){return true -}else{return false -}}}; -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:") -}; -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); -var file=fileHandler.getFileFromURLSpec(url); -return file.path -}}; -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); -var URL=fileHandler.getURLSpecFromFile(file); -return URL -}; -this.getDataURLForContent=function(content,url){var uri="data:text/html;"; -uri+="fileName="+encodeURIComponent(url)+","; -uri+=encodeURIComponent(content); -return uri -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url); -return m?m[1]:"" -}; -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); -return m?m[1]:"" -}; -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); -return m?m[2]:"" -}; -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g") -}; -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; -var m=reURL.exec(url); -if(m){return url -}var m=reURL.exec(baseURL); -if(!m){return"" -}var head=m[1]; -var tail=m[3]; -if(url.substr(0,2)=="//"){return m[2]+url -}else{if(url[0]=="/"){return head+url -}else{if(tail[tail.length-1]=="/"){return baseURL+url -}else{var parts=tail.split("/"); -return head+parts.slice(0,parts.length-1).join("/")+"/"+url -}}}}; -this.normalizeURL=function(url){if(!url){return"" -}if(url.length<255){url=url.replace(/[^\/]+\/\.\.\//,"","g"); -url=url.replace(/#.*/,""); -url=url.replace(/file:\/([^\/])/g,"file:///$1"); -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url); -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2] -}}}return url -}; -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/") -}; -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1; -if(q==-1){return[] -}var search=url.substr(q+1); -var h=search.lastIndexOf("#"); -if(h!=-1){search=search.substr(0,h) -}if(!search){return[] -}return this.parseURLEncodedText(search) -}; -this.parseURLEncodedText=function(text){var maxValueLength=25000; -var params=[]; -text=text.replace(/\+/g," "); -var args=text.split("&"); -for(var i=0; -imaxValueLength){parts[1]=this.$STR("LargeData") -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])}) -}else{params.push({name:decodeURIComponent(parts[0]),value:""}) -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e); -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i]) -}}}params.sort(function(a,b){return a.name<=b.name?-1:1 -}); -return params -}; -this.parseURLParamsArray=function(url){var q=url?url.indexOf("?"):-1; -if(q==-1){return[] -}var search=url.substr(q+1); -var h=search.lastIndexOf("#"); -if(h!=-1){search=search.substr(0,h) -}if(!search){return[] -}return this.parseURLEncodedTextArray(search) -}; -this.parseURLEncodedTextArray=function(text){var maxValueLength=25000; -var params=[]; -text=text.replace(/\+/g," "); -var args=text.split("&"); -for(var i=0; -imaxValueLength){parts[1]=this.$STR("LargeData") -}params.push({name:decodeURIComponent(parts[0]),value:[decodeURIComponent(parts[1])]}) -}else{params.push({name:decodeURIComponent(parts[0]),value:[""]}) -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e); -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i]) -}}}params.sort(function(a,b){return a.name<=b.name?-1:1 -}); -return params -}; -this.reEncodeURL=function(file,text){var lines=text.split("\n"); -var params=this.parseURLEncodedText(lines[lines.length-1]); -var args=[]; -for(var i=0; -i0){setTimeout(this.sendRequest,10) -}}},getResponse:function(options){var t=this.transport,type=options.dataType; -if(t.status!=200){return t.statusText -}else{if(type=="text"){return t.responseText -}else{if(type=="html"){return t.responseText -}else{if(type=="xml"){return t.responseXML -}else{if(type=="json"){return eval("("+t.responseText+")") -}}}}}},getState:function(){return this.states[this.transport.readyState] -}}; -this.createCookie=function(name,value,days){if("cookie" in document){if(days){var date=new Date(); -date.setTime(date.getTime()+(days*24*60*60*1000)); -var expires="; expires="+date.toGMTString() -}else{var expires="" -}document.cookie=name+"="+value+expires+"; path=/" -}}; -this.readCookie=function(name){if("cookie" in document){var nameEQ=name+"="; -var ca=document.cookie.split(";"); -for(var i=0; -iobjects.length){format=""; -objIndex=-1; -parts.length=0; -break -}}}var result=[]; -for(var i=0; -i'; -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML}); -if(isIE6){tabNode.href="javascript:void(0)" -}var panelBarNode=this.parentPanel?Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode:this.panelBarNode; -panelBarNode.appendChild(tabNode); -tabNode.style.display="block"; -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"}); -$("fbToolbarButtons").appendChild(this.toolButtonsNode) -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox"); -this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"}); -this.statusBarBox.appendChild(this.statusBarNode) -}}this.containerNode=this.panelNode.parentNode; -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name) -}this.onContextMenu=bind(this.onContextMenu,this) -},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name) -}if(this.hasSidePanel){this.sidePanelBar.destroy(); -this.sidePanelBar=null -}this.options=null; -this.name=null; -this.parentPanel=null; -this.tabNode=null; -this.panelNode=null; -this.containerNode=null; -this.toolButtonsNode=null; -this.statusBarBox=null; -this.statusBarNode=null -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name) -}if(this.hasSidePanel){this.sidePanelBar.initialize() -}var options=this.options=extend(Firebug.Panel.options,this.options); -var panelId="fb"+this.name; -this.panelNode=$(panelId); -this.tabNode=$(panelId+"Tab"); -this.tabNode.style.display="block"; -if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox"); -this.statusBarNode=$(panelId+"StatusBar") -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons") -}this.containerNode=this.panelNode.parentNode; -this.containerNode.scrollTop=this.lastScrollTop; -addEvent(this.containerNode,"contextmenu",this.onContextMenu); -Firebug.chrome.currentPanel=Firebug.chrome.selectedPanel&&Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel:Firebug.chrome.selectedPanel; -Firebug.showInfoTips=true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome) -},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name) -}Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); -if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.hideLargeCommandLine() -}if(this.hasSidePanel){}this.lastScrollTop=this.containerNode.scrollTop; -removeEvent(this.containerNode,"contextmenu",this.onContextMenu) -},detach:function(oldChrome,newChrome){if(oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop -}},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI() -}},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0 -},show:function(state){var options=this.options; -if(options.hasStatusBar){this.statusBarBox.style.display="inline"; -this.statusBarNode.style.display="inline" -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline" -}this.panelNode.style.display="block"; -this.visible=true; -if(!this.parentPanel){Firebug.chrome.layout(this) -}},hide:function(state){var options=this.options; -if(options.hasStatusBar){this.statusBarBox.style.display="none"; -this.statusBarNode.style.display="none" -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none" -}this.panelNode.style.display="none"; -this.visible=false -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this) -}return -}var buttons=this.context.browser.chrome.$(buttonsId); -if(buttons){collapse(buttons,show?"false":"true") -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc); -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser") -}}}},supportsObject:function(object){return 0 -},hasObject:function(object){return false -},select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context) -}if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection) -}if(forceUpdate||object!=this.selection){this.selection=object; -this.updateSelection(object) -}},updateSelection:function(object){},markChange:function(skipSelf){if(this.dependents){if(skipSelf){for(var i=0; -ilocB.path){return 1 -}if(locA.pathlocB.name){return 1 -}if(locA.namewidth||el.scrollHeight>height)){width=el.scrollWidth; -height=el.scrollHeight -}return{width:width,height:height} -},getWindowScrollPosition:function(){var top=0,left=0,el; -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset; -left=this.window.pageXOffset -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop; -left=el.scrollLeft -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop; -left=el.scrollLeft -}}}return{top:top,left:left} -},getElementFromPoint:function(x,y){if(shouldFixElementFromPoint){var scroll=this.getWindowScrollPosition(); -return this.document.elementFromPoint(x+scroll.left,y+scroll.top) -}else{return this.document.elementFromPoint(x,y) -}},getElementPosition:function(el){var left=0; -var top=0; -do{left+=el.offsetLeft; -top+=el.offsetTop -}while(el=el.offsetParent); -return{left:left,top:top} -},getElementBox:function(el){var result={}; -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect(); -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0; -var scroll=this.getWindowScrollPosition(); -result.top=Math.round(rect.top-offset+scroll.top); -result.left=Math.round(rect.left-offset+scroll.left); -result.height=Math.round(rect.bottom-rect.top); -result.width=Math.round(rect.right-rect.left) -}else{var position=this.getElementPosition(el); -result.top=position.top; -result.left=position.left; -result.height=el.offsetHeight; -result.width=el.offsetWidth -}return result -},getMeasurement:function(el,name){var result={value:0,unit:"px"}; -var cssValue=this.getStyle(el,name); -if(!cssValue){return result -}if(cssValue.toLowerCase()=="auto"){return result -}var reMeasure=/(\d+\.?\d*)(.*)/; -var m=cssValue.match(reMeasure); -if(m){result.value=m[1]-0; -result.unit=m[2].toLowerCase() -}return result -},getMeasurementInPixels:function(el,name){if(!el){return null -}var m=this.getMeasurement(el,name); -var value=m.value; -var unit=m.unit; -if(unit=="px"){return value -}else{if(unit=="pt"){return this.pointsToPixels(name,value) -}}if(unit=="em"){return this.emToPixels(el,value) -}else{if(unit=="%"){return this.percentToPixels(el,value) -}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"]; -var result=[]; -for(var i=0,sufix; -sufix=sufixes[i]; -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix)) -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]} -},getMeasurementBox:function(el,name){var result=[]; -var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"]; -if(isIE){var propName,cssValue; -var autoMargin=null; -for(var i=0,sufix; -sufix=sufixes[i]; -i++){propName=name+sufix; -cssValue=el.currentStyle[propName]||el.style[propName]; -if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el) -}result[i]=autoMargin[sufix.toLowerCase()] -}else{result[i]=this.getMeasurementInPixels(el,propName) -}}}else{for(var i=0,sufix; -sufix=sufixes[i]; -i++){result[i]=this.getMeasurementInPixels(el,name+sufix) -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]} -},getCSSAutoMarginBox:function(el){if(isIE&&" meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ")!=-1){return{top:0,left:0,bottom:0,right:0} -}if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0} -}var offsetTop=0; -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize(); -offsetTop=scrollSize.height -}var box=this.document.createElement("div"); -box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;"; -var clone=el.cloneNode(false); -var text=this.document.createTextNode(" "); -clone.appendChild(text); -box.appendChild(clone); -this.document.body.appendChild(box); -var marginTop=clone.offsetTop-box.offsetTop-1; -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop; -var marginLeft=clone.offsetLeft-box.offsetLeft-1; -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft; -this.document.body.removeChild(box); -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight} -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize"); -if(size.unit=="px"){return size.value -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div"); -var divStyle=offscreenStyle; -if(calibration){divStyle+=" font-size:"+calibration+"px;" -}div.style.cssText=divStyle; -div.innerHTML="A"; -el.appendChild(div); -var value=div.offsetHeight; -el.removeChild(div); -return value -}; -var rate=200/225; -var value=computeDirtyFontSize(el); -return value*rate -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x"; -var result=value*pixelsPerInch[axis]/72; -return returnFloat?result:Math.round(result) -},emToPixels:function(el,value){if(!el){return null -}var fontSize=this.getFontSizeInPixels(el); -return Math.round(value*fontSize) -},exToPixels:function(el,value){if(!el){return null -}var div=this.document.createElement("div"); -div.style.cssText=offscreenStyle+"width:"+value+"ex;"; -el.appendChild(div); -var value=div.offsetWidth; -el.removeChild(div); -return value -},percentToPixels:function(el,value){if(!el){return null -}var div=this.document.createElement("div"); -div.style.cssText=offscreenStyle+"width:"+value+"%;"; -el.appendChild(div); -var value=div.offsetWidth; -el.removeChild(div); -return value -},getStyle:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined -}} -}}); -FBL.ns(function(){with(FBL){var WindowDefaultOptions={type:"frame",id:"FirebugUI",height:250},commandLine,fbTop,fbContent,fbContentStyle,fbBottom,fbBtnInspect,fbToolbar,fbPanelBox1,fbPanelBox1Style,fbPanelBox2,fbPanelBox2Style,fbPanelBar2Box,fbPanelBar2BoxStyle,fbHSplitter,fbVSplitter,fbVSplitterStyle,fbPanel1,fbPanel1Style,fbPanel2,fbPanel2Style,fbConsole,fbConsoleStyle,fbHTML,fbCommandLine,fbLargeCommandLine,fbLargeCommandButtons,topHeight,topPartialHeight,chromeRedrawSkipRate=isIE?75:isOpera?80:75,lastSelectedPanelName,focusCommandLineState=0,lastFocusedPanelName,lastHSplitterMouseMove=0,onHSplitterMouseMoveBuffer=null,onHSplitterMouseMoveTimer=null,lastVSplitterMouseMove=0; -FBL.FirebugChrome={isOpen:false,height:250,sidePanelWidth:350,selectedPanelName:"Console",selectedHTMLElementId:null,chromeMap:{},htmlSelectionStack:[],consoleMessageQueue:[],create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window") -}createChromeWindow() -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window") -}if(Env.chrome.type=="frame"||Env.chrome.type=="div"){ChromeMini.create(Env.chrome) -}var chrome=Firebug.chrome=new Chrome(Env.chrome); -FirebugChrome.chromeMap[chrome.type]=chrome; -addGlobalEvent("keydown",onGlobalKeyDown); -if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame; -if(frame){frame.close() -}chrome.initialize() -}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name]; -if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop -}}}}; -var createChromeWindow=function(options){options=extend(WindowDefaultOptions,options||{}); -var chrome={},context=options.context||Env.browser,type=chrome.type=Env.Options.enablePersistent?"popup":options.type,isChromeFrame=type=="frame",useLocalSkin=Env.useLocalSkin,url=useLocalSkin?Env.Location.skin:"about:blank",body=context.document.getElementsByTagName("body")[0],formatNode=function(node){if(!Env.isDebugMode){node.firebugIgnore=true -}node.style.border="0"; -node.style.visibility="hidden"; -node.style.zIndex="2147483647"; -node.style.position=noFixedPosition?"absolute":"fixed"; -node.style.width="100%"; -node.style.left="0"; -node.style.bottom=noFixedPosition?"-1px":"0"; -node.style.height=options.height+"px"; -if(isFirefox){node.style.display="none" -}},createChromeDiv=function(){var node=chrome.node=createGlobalElement("div"),style=createGlobalElement("style"),css=FirebugChrome.Skin.CSS,rules=".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}"+css+".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; -style.type="text/css"; -if(style.styleSheet){style.styleSheet.cssText=rules -}else{style.appendChild(context.document.createTextNode(rules)) -}document.getElementsByTagName("head")[0].appendChild(style); -node.className="fbBody"; -node.style.overflow="hidden"; -node.innerHTML=getChromeDivTemplate(); -if(isIE){setTimeout(function(){node.firstChild.style.height="1px"; -node.firstChild.style.position="static" -},0) -}formatNode(node); -body.appendChild(node); -chrome.window=window; -chrome.document=document; -onChromeLoad(chrome) -}; -try{if(type=="div"){createChromeDiv(); -return -}else{if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe"); -node.setAttribute("src",url); -node.setAttribute("frameBorder","0"); -formatNode(node); -body.appendChild(node); -node.id=options.id -}else{var height=FirebugChrome.height||options.height,options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join(""),node=chrome.node=context.window.open(url,"popup",options); -if(node){try{node.focus() -}catch(E){alert("Firebug Error: Firebug popup was blocked."); -return -}}else{alert("Firebug Error: Firebug popup was blocked."); -return -}}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame),doc=isChromeFrame?node.contentWindow.document:node.document; -doc.write(tpl); -doc.close() -}var win,waitDelay=useLocalSkin?isChromeFrame?200:300:100,waitForWindow=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window; -chrome.document=win.document; -setTimeout(function(){onChromeLoad(chrome) -},0) -}else{setTimeout(waitForWindow,waitDelay) -}}; -waitForWindow() -}catch(e){var msg=e.message||e; -if(/access/i.test(msg)){if(isChromeFrame){body.removeChild(node) -}else{if(type=="popup"){node.close() -}}createChromeDiv() -}else{alert("Firebug Error: Firebug GUI could not be created.") -}}}; -var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome; -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded") -}if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome; -chrome.window.Firebug=chrome.window.Firebug||{}; -chrome.window.Firebug.SharedEnv=Env; -if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome) -}else{var doc=chrome.document; -var script=doc.createElement("script"); -script.src=Env.Location.app+"#remote,persist"; -doc.getElementsByTagName("head")[0].appendChild(script) -}}else{if(chrome.type=="frame"||chrome.type=="div"){setTimeout(function(){FBL.Firebug.initialize() -},0) -}else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame; -var newChrome=new Chrome(chrome); -dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]); -if(oldChrome){oldChrome.close() -}newChrome.reattach(oldChrome,newChrome) -}}}}; -var getChromeDivTemplate=function(){return FirebugChrome.Skin.HTML -}; -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.Skin; -var r=[],i=-1; -r[++i]=''; -r[++i]=""; -r[++i]=Firebug.version; -r[++i]=""; -r[++i]=''; -r[++i]=tpl.HTML; -r[++i]=""; -return r.join("") -}; -var Chrome=function Chrome(chrome){var type=chrome.type; -var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase; -append(this,Base); -append(this,chrome); -append(this,new Context(chrome.window)); -FirebugChrome.chromeMap[type]=this; -Firebug.chrome=this; -Env.chrome=chrome.window; -this.commandLineVisible=false; -this.sidePanelVisible=false; -this.create(); -return this -}; -var ChromeBase={}; -append(ChromeBase,Controller); -append(ChromeBase,PanelBar); -append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,create:function(){PanelBar.create.call(this); -if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting}) -}},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy() -}PanelBar.destroy.call(this); -this.shutdown() -},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore() -},toggleChrome:function(){Firebug.chrome.toggle() -},openPopup:function(){Firebug.chrome.toggle(true,true) -},toggleInspect:function(){Firebug.Inspector.toggleInspect() -},focusCommandLine:function(){Firebug.chrome.focusCommandLine() -},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html") -},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug") -},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list") -},visit:function(url){window.open(url) -}}); -var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies; -return[{label:"Save Options in Cookies",type:"checkbox",value:"saveCookies",checked:Firebug.saveCookies,command:"saveOptions"},"-",{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},{label:"Disable XHR Listener",type:"checkbox",value:"disableXHRListener",checked:Firebug.disableXHRListener,disabled:cookiesDisabled},{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Reset All Firebug Options",command:"restorePrefs",disabled:cookiesDisabled}] -},onCheck:function(target,value,checked){Firebug.setPref(value,checked) -},saveOptions:function(target){var saveEnabled=target.getAttribute("checked"); -if(!saveEnabled){this.restorePrefs() -}this.updateMenu(target); -return false -},restorePrefs:function(target){Firebug.restorePrefs(); -if(Firebug.saveCookies){Firebug.savePrefs() -}else{Firebug.erasePrefs() -}if(target){this.updateMenu(target) -}return false -},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption"); -var firstOption=options[0]; -var enabled=Firebug.saveCookies; -if(enabled){Menu.check(firstOption) -}else{Menu.uncheck(firstOption) -}if(enabled){Menu.check(options[0]) -}else{Menu.uncheck(options[0]) -}for(var i=1,length=options.length; -ichromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime(); -handleHSplitterMouseMove() -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate) -}}cancelEvent(event,true); -return false -}; -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer); -onHSplitterMouseMoveTimer=null -}var clientY=onHSplitterMouseMoveBuffer; -var windowSize=Firebug.browser.getWindowSize(); -var scrollSize=Firebug.browser.getWindowScrollSize(); -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0; -var fixedHeight=topHeight+commandLineHeight; -var chromeNode=Firebug.chrome.node; -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0; -var height=windowSize.height; -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight); -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize); -FirebugChrome.height=chromeHeight; -chromeNode.style.height=chromeHeight+"px"; -if(noFixedPosition){Firebug.chrome.fixIEPosition() -}Firebug.chrome.draw() -}; -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove); -removeGlobalEvent("mouseup",onHSplitterMouseUp); -if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp) -}fbHSplitter.className=""; -Firebug.chrome.draw(); -return false -}; -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove); -addGlobalEvent("mouseup",onVSplitterMouseUp); -return false -}; -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement; -if(target&&target.ownerDocument){var clientX=event.clientX; -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView; -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0 -}var size=Firebug.chrome.getSize(); -var x=Math.max(size.width-clientX+3,6); -FirebugChrome.sidePanelWidth=x; -Firebug.chrome.draw() -}lastVSplitterMouseMove=new Date().getTime() -}cancelEvent(event,true); -return false -}; -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove); -removeGlobalEvent("mouseup",onVSplitterMouseUp); -Firebug.chrome.draw() -} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite={} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Browser=function(window){this.contentWindow=window; -this.contentDocument=window.document; -this.currentURI={spec:window.location.href} -}; -Firebug.Lite.Browser.prototype={toString:function(){return"Firebug.Lite.Browser" -}} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Cache={ID:"firebug"+new Date().getTime()}; -var cacheUID=0; -var createCache=function(){var map={}; -var CID=Firebug.Lite.Cache.ID; -var supportsDeleteExpando=!document.all; -var cacheFunction=function(element){return cacheAPI.set(element) -}; -var cacheAPI={get:function(key){return map.hasOwnProperty(key)?map[key]:null -},set:function(element){var id=element[CID]; -if(!id){id=++cacheUID; -element[CID]=id -}if(!map.hasOwnProperty(id)){map[id]=element -}return id -},unset:function(element){var id=element[CID]; -if(supportsDeleteExpando){delete element[CID] -}else{if(element.removeAttribute){element.removeAttribute(CID) -}}delete map[id] -},key:function(element){return element[CID] -},has:function(element){return map.hasOwnProperty(element[CID]) -},clear:function(){for(var id in map){var element=map[id]; -cacheAPI.unset(element) -}}}; -FBL.append(cacheFunction,cacheAPI); -return cacheFunction -}; -Firebug.Lite.Cache.StyleSheet=createCache(); -Firebug.Lite.Cache.Element=createCache() -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Proxy={_callbacks:{},load:function(url){var resourceDomain=getDomain(url); -var isLocalResource=!resourceDomain||resourceDomain==Firebug.context.window.location.host; -return isLocalResource?fetchResource(url):fetchProxyResource(url) -},loadJSONP:function(url,callback){var script=createGlobalElement("script"),doc=Firebug.context.document,uid=""+new Date().getTime(),callbackName="callback=Firebug.Lite.Proxy._callbacks."+uid,jsonpURL=url.indexOf("?")!=-1?url+"&"+callbackName:url+"?"+callbackName; -Firebug.Lite.Proxy._callbacks[uid]=function(data){if(callback){callback(data) -}script.parentNode.removeChild(script); -delete Firebug.Lite.Proxy._callbacks[uid] -}; -script.src=jsonpURL; -if(doc.documentElement){doc.documentElement.appendChild(script) -}},YQL:function(url,callback){var yql="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent(url)+"%22&format=xml"; -this.loadJSONP(yql,function(data){var source=data.results[0]; -var match=/\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); -if(match){source=match[1] -}console.log(source) -}) -}}; -var fetchResource=function(url){var xhr=FBL.Ajax.getXHRObject(); -xhr.open("get",url,false); -xhr.send(); -return xhr.responseText -}; -var fetchProxyResource=function(url){var proxyURL=Env.Location.baseDir+"plugin/proxy/proxy.php?url="+encodeURIComponent(url); -var response=fetchResource(proxyURL); -try{var data=eval("("+response+")") -}catch(E){return"ERROR: Firebug Lite Proxy plugin returned an invalid response." -}return data?data.contents:"" -} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Script=function(window){this.fileName=null; -this.isValid=null; -this.baseLineNumber=null; -this.lineExtent=null; -this.tag=null; -this.functionName=null; -this.functionSource=null -}; -Firebug.Lite.Script.prototype={isLineExecutable:function(){},pcToLine:function(){},lineToPc:function(){},toString:function(){return"Firebug.Lite.Script" -}} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Style={} -}}); -FBL.ns(function(){with(FBL){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true; -[0,0].sort(function(){baseHasDuplicate=false; -return 0 -}); -var Sizzle=function(selector,context,results,seed){results=results||[]; -var origContext=context=context||document; -if(context.nodeType!==1&&context.nodeType!==9){return[] -}if(!selector||typeof selector!=="string"){return results -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector; -while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3]; -parts.push(m[1]); -if(m[2]){extra=m[3]; -break -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context) -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context); -while(parts.length){selector=parts.shift(); -if(Expr.relative[selector]){selector+=parts.shift() -}set=posProcess(selector,set) -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML); -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0] -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML); -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set; -if(parts.length>0){checkSet=makeArray(set) -}else{prune=false -}while(parts.length){var cur=parts.pop(),pop=cur; -if(!Expr.relative[cur]){cur="" -}else{pop=parts.pop() -}if(pop==null){pop=context -}Expr.relative[cur](checkSet,pop,contextXML) -}}else{checkSet=parts=[] -}}if(!checkSet){checkSet=set -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector) -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet) -}else{if(context&&context.nodeType===1){for(var i=0; -checkSet[i]!=null; -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]) -}}}else{for(var i=0; -checkSet[i]!=null; -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]) -}}}}}else{makeArray(checkSet,results) -}if(extra){Sizzle(extra,origContext,results,seed); -Sizzle.uniqueSort(results) -}return results -}; -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate; -results.sort(sortOrder); -if(hasDuplicate){for(var i=1; -i":function(checkSet,part,isXML){var isPartStr=typeof part==="string"; -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase(); -for(var i=0,l=checkSet.length; -i=0)){if(!inplace){result.push(elem) -}}else{if(inplace){curLoop[i]=false -}}}}return false -},ID:function(match){return match[1].replace(/\\/g,"") -},TAG:function(match,curLoop){for(var i=0; -curLoop[i]===false; -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase() -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]); -match[2]=(test[1]+(test[2]||1))-0; -match[3]=test[3]-0 -}match[0]=done++; -return match -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,""); -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name] -}if(match[2]==="~="){match[4]=" "+match[4]+" " -}return match -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop) -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not); -if(!inplace){result.push.apply(result,ret) -}return false -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true -}}return match -},POS:function(match){match.unshift(true); -return match -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden" -},disabled:function(elem){return elem.disabled===true -},checked:function(elem){return elem.checked===true -},selected:function(elem){elem.parentNode.selectedIndex; -return elem.selected===true -},parent:function(elem){return !!elem.firstChild -},empty:function(elem){return !elem.firstChild -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length -},header:function(elem){return/h\d/i.test(elem.nodeName) -},text:function(elem){return"text"===elem.type -},radio:function(elem){return"radio"===elem.type -},checkbox:function(elem){return"checkbox"===elem.type -},file:function(elem){return"file"===elem.type -},password:function(elem){return"password"===elem.type -},submit:function(elem){return"submit"===elem.type -},image:function(elem){return"image"===elem.type -},reset:function(elem){return"reset"===elem.type -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON" -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName) -}},setFilters:{first:function(elem,i){return i===0 -},last:function(elem,i,match,array){return i===array.length-1 -},even:function(elem,i){return i%2===0 -},odd:function(elem,i){return i%2===1 -},lt:function(elem,i,match){return imatch[3]-0 -},nth:function(elem,i,match){return match[3]-0==i -},eq:function(elem,i,match){return match[3]-0==i -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name]; -if(filter){return filter(elem,i,match,array) -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0 -}else{if(name==="not"){var not=match[3]; -for(var i=0,l=not.length; -i=0) -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1 -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4]; -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name]; -if(filter){return filter(elem,i,match,array) -}}}}; -var origPOS=Expr.match.POS; -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source); -Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source) -}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0); -if(results){results.push.apply(results,array); -return results -}return array -}; -try{Array.prototype.slice.call(document.documentElement.childNodes,0) -}catch(e){makeArray=function(array,results){var ret=results||[]; -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array) -}else{if(typeof array.length==="number"){for(var i=0,l=array.length; -i"; -var root=document.documentElement; -root.insertBefore(form,root.firstChild); -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]); -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[] -}}; -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id"); -return elem.nodeType===1&&node&&node.nodeValue===match -} -}root.removeChild(form); -root=form=null -})(); -(function(){var div=document.createElement("div"); -div.appendChild(document.createComment("")); -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]); -if(match[1]==="*"){var tmp=[]; -for(var i=0; -results[i]; -i++){if(results[i].nodeType===1){tmp.push(results[i]) -}}results=tmp -}return results -} -}div.innerHTML=""; -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2) -} -}div=null -})(); -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div"); -div.innerHTML="

"; -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return -}Sizzle=function(query,context,extra,seed){context=context||document; -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra) -}catch(e){}}return oldSizzle(query,context,extra,seed) -}; -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop] -}div=null -})() -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div"); -div.innerHTML="
"; -if(div.getElementsByClassName("e").length===0){return -}div.lastChild.className="e"; -if(div.getElementsByClassName("e").length===1){return -}Expr.order.splice(1,0,"CLASS"); -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]) -}}; -div=null -})() -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML; -for(var i=0,l=checkSet.length; -i0){match=elem; -break -}}}elem=elem[dir] -}checkSet[i]=match -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16 -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true) -}; -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML" -}; -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context; -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0]; -selector=selector.replace(Expr.match.PSEUDO,"") -}selector=Expr.relative[selector]?selector+"*":selector; -for(var i=0,l=root.length; -i":return">"; -case"&":return"&"; -case"'":return"'"; -case'"':return""" -}return"?" -}return String(value).replace(/[<>&"']/g,replaceChars) -}function __loop__(iter,outputs,fn){var iterOuts=[]; -outputs.push(iterOuts); -if(iter instanceof Array){iter=new ArrayIterator(iter) -}try{while(1){var value=iter.next(); -var itemOuts=[0,0]; -iterOuts.push(itemOuts); -fn.apply(this,[value,itemOuts]) -}}catch(exc){if(exc!=StopIteration){throw exc -}}}var js=fnBlock.join(""); -var r=null; -eval(js); -this.renderMarkup=r -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars) -}for(var i=0; -i"'); -this.generateChildMarkup(topBlock,topOuts,blocks,info); -topBlock.push(',""') -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0; -i=array.length){throw StopIteration -}return array[index] -} -}function StopIteration(){}FBL.$break=function(){throw StopIteration -}; -var Renderer={renderHTML:function(args,outputs,self){var code=[]; -var markupArgs=[code,this.tag.context,args,outputs]; -markupArgs.push.apply(markupArgs,this.tag.markupArgs); -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs); -return code.join("") -},insertRows:function(args,before,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var doc=before.ownerDocument; -var div=doc.createElement("div"); -div.innerHTML=""+html+"
"; -var tbody=div.firstChild.firstChild; -var parent=before.tagName=="TR"?before.parentNode:before; -var after=before.tagName=="TR"?before.nextSibling:null; -var firstRow=tbody.firstChild,lastRow; -while(tbody.firstChild){lastRow=tbody.firstChild; -if(after){parent.insertBefore(lastRow,after) -}else{parent.appendChild(lastRow) -}}var offset=0; -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild; -for(; -node&&node!=firstRow; -node=node.nextSibling){++offset -}}var domArgs=[firstRow,this.tag.context,offset]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return[firstRow,lastRow] -},insertBefore:function(args,before,self){return this.insertNode(args,before.ownerDocument,before,false,self) -},insertAfter:function(args,after,self){return this.insertNode(args,after.ownerDocument,after,true,self) -},insertNode:function(args,doc,element,isAfter,self){if(!args){args={} -}this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var doc=element.ownerDocument; -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div") -}womb.innerHTML=html; -var root=womb.firstChild; -if(isAfter){while(womb.firstChild){if(element.nextSibling){element.parentNode.insertBefore(womb.firstChild,element.nextSibling) -}else{element.parentNode.appendChild(womb.firstChild) -}}}else{while(womb.lastChild){element.parentNode.insertBefore(womb.lastChild,element) -}}var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -},replace:function(args,parent,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var root; -if(parent.nodeType==1){parent.innerHTML=html; -root=parent.firstChild -}else{if(!parent||parent.nodeType!=9){parent=document -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div") -}womb.innerHTML=html; -root=womb.firstChild -}var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -},append:function(args,parent,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div") -}womb.innerHTML=html; -var root=womb.firstChild; -while(womb.firstChild){parent.appendChild(womb.firstChild) -}womb=null; -var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -}}; -function defineTags(){for(var i=0; -inumPropertiesShown){break -}}if(numProperties>numPropertiesShown){props.push({object:"...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""}) -}else{if(props.length>0){props[props.length-1].delim="" -}}}catch(exc){}return props -},fb_1_6_propIterator:function(object,max){max=max||3; -if(!object){return[] -}var props=[]; -var len=0,count=0; -try{for(var name in object){var value; -try{value=object[name] -}catch(exc){continue -}var t=typeof(value); -if(t=="boolean"||t=="number"||(t=="string"&&value)||(t=="object"&&value&&value.toString)){var rep=Firebug.getRep(value); -var tag=rep.shortTag||rep.tag; -if(t=="object"){value=rep.getTitle(value); -tag=rep.titleTag -}count++; -if(count<=max){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "}) -}else{break -}}}if(count>max){props[Math.max(1,max-1)]={object:"more...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""} -}else{if(props.length>0){props[props.length-1].delim="" -}}}catch(exc){}return props -},className:"object",supportsObject:function(object,type){return true -}}); -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[]; -for(var i=0; -i3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""}) -}return items -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0; -for(child=child.previousSibling; -child; -child=child.previousSibling){if(child.repObject){++arrayIndex -}}return arrayIndex -},className:"array",supportsObject:function(object){return this.isArray(object) -},isArray:function(obj){try{if(!obj){return false -}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true -}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true -}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true -}else{if(instanceOf(obj,"HTMLCollection")){return true -}else{if(instanceOf(obj,"NodeList")){return true -}else{return false -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc); -FBTrace.sysout("isArray Fails on obj",obj) -}}return false -},getTitle:function(object,context){return"["+object.length+"]" -}}); -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property -},getRealObject:function(prop,context){return prop.object[prop.name] -},getTitle:function(prop,context){return prop.name -}}); -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile -},browseObject:function(file,context){openNewTab(file.href); -return true -},getRealObject:function(file,context){return null -}}); -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy -}}); -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("<",SPAN({"class":"nodeTag"},"$object.nodeName|toLowerCase"),FOR("attr","$object|attrIterator"," $attr.nodeName="",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"""),">"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden" -},getSelectorTag:function(elt){return elt.nodeName.toLowerCase() -},getSelectorId:function(elt){return elt.id?"#"+elt.id:"" -},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:"" -},getValue:function(elt){return""; -var value; -if(elt instanceof HTMLImageElement){value=getFileName(elt.src) -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href) -}else{if(elt instanceof HTMLInputElement){value=elt.value -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action) -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src) -}}}}}return value?" "+cropString(value,20):"" -},attrIterator:function(elt){var attrs=[]; -var idAttr,classAttr; -if(elt.attributes){for(var i=0; -i0 -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo) -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/; -var m=re.exec(message); -return m?m[1]:message -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80) -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80) -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js"; -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null -},getSourceType:function(error){if(error.source){return"syntax" -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none" -}else{if(error.category=="css"){return"none" -}else{if(!error.href||!error.lineNo){return"none" -}else{return"exec" -}}}}},onToggleError:function(event){var target=event.currentTarget; -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject) -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target); -this.inspectObject(target.repObject,panel.context) -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1]; -toggleClass(target,"opened"); -event.target.setAttribute("aria-checked",hasClass(target,"opened")); -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox) -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target); -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox]) -}}else{clearNode(traceBox) -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo]; -copyToClipboard(message.join("\n")) -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo) -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo) -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); -FirebugReps.SourceLink.inspectObject(sourceLink,context) -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}]; -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors")) -}return items -}}); -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); -Firebug.chrome.select(sourceLink) -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}] -}}); -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length; -var list=[]; -for(var i=0; -i57)&&event.charCode!=45&&event.charCode!=46){FBL.cancelEvent(event) -}else{this.ignoreNextInput=event.keyCode==8 -}}}},onOverflow:function(){this.updateLayout(false,false,3) -},onKeyDown:function(event){if(event.keyCode>46||event.keyCode==32||event.keyCode==8){this.keyDownPressed=true -}},onInput:function(event){if(isIE){if(event.propertyName!="value"||!isVisible(this.input)||!this.keyDownPressed){return -}this.keyDownPressed=false -}var selectRangeCallback; -if(this.ignoreNextInput){this.ignoreNextInput=false; -this.getAutoCompleter().reset() -}else{if(this.completeAsYouType){selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,false) -}else{this.getAutoCompleter().reset() -}}Firebug.Editor.update(); -if(selectRangeCallback){if(isSafari){setTimeout(selectRangeCallback,0) -}else{selectRangeCallback() -}}},onContextMenu:function(event){cancelEvent(event); -var popup=$("fbInlineEditorPopup"); -FBL.eraseNode(popup); -var target=event.target||event.srcElement; -var menu=this.getContextMenuItems(target); -if(menu){for(var i=0; -ithis.textSize.height+3:this.noWrap&&approxTextWidth>maxWidth; -if(wrapped){var style=isIE?this.target.currentStyle:this.target.ownerDocument.defaultView.getComputedStyle(this.target,""); -targetMargin=parseInt(style.marginLeft)+parseInt(style.marginRight); -approxTextWidth=maxWidth-targetMargin; -this.input.style.width="100%"; -this.box.style.width=approxTextWidth+"px" -}else{var charWidth=this.measureInputText("m").width; -if(extraWidth){charWidth*=extraWidth -}var inputWidth=approxTextWidth+charWidth; -if(initial){if(isIE){var xDiff=13; -this.box.style.width=(inputWidth+xDiff)+"px" -}else{this.box.style.width="auto" -}}else{var xDiff=isIE?13:this.box.scrollWidth-this.input.offsetWidth; -this.box.style.width=(inputWidth+xDiff)+"px" -}this.input.style.width=inputWidth+"px" -}this.expander.style.width=approxTextWidth+"px"; -this.expander.style.height=Math.max(this.textSize.height-3,0)+"px" -}if(forceAll){scrollIntoCenterView(this.box,null,true) -}}}); -Firebug.AutoCompleter=function(getExprOffset,getRange,evaluator,selectMode,caseSensitive){var candidates=null; -var originalValue=null; -var originalOffset=-1; -var lastExpr=null; -var lastOffset=-1; -var exprOffset=0; -var lastIndex=0; -var preParsed=null; -var preExpr=null; -var postExpr=null; -this.revert=function(textBox){if(originalOffset!=-1){textBox.value=originalValue; -setSelectionRange(textBox,originalOffset,originalOffset); -this.reset(); -return true -}else{this.reset(); -return false -}}; -this.reset=function(){candidates=null; -originalValue=null; -originalOffset=-1; -lastExpr=null; -lastOffset=0; -exprOffset=0 -}; -this.complete=function(context,textBox,cycle,reverse){var value=textBox.value; -var offset=getInputSelectionStart(textBox); -if(isSafari&&!cycle&&offset>=0){offset++ -}if(!selectMode&&originalOffset!=-1){offset=originalOffset -}if(!candidates||!cycle||offset!=lastOffset){originalOffset=offset; -originalValue=value; -var parseStart=getExprOffset?getExprOffset(value,offset,context):0; -preParsed=value.substr(0,parseStart); -var parsed=value.substr(parseStart); -var range=getRange?getRange(parsed,offset-parseStart,context):null; -if(!range){range={start:0,end:parsed.length-1} -}var expr=parsed.substr(range.start,range.end-range.start+1); -preExpr=parsed.substr(0,range.start); -postExpr=parsed.substr(range.end+1); -exprOffset=parseStart+range.start; -if(!cycle){if(!expr){return -}else{if(lastExpr&&lastExpr.indexOf(expr)!=0){candidates=null -}else{if(lastExpr&&lastExpr.length>=expr.length){candidates=null; -lastExpr=expr; -return -}}}}lastExpr=expr; -lastOffset=offset; -var searchExpr; -if(expr&&offset!=parseStart+range.end+1){if(cycle){offset=range.start; -searchExpr=expr; -expr="" -}else{return -}}var values=evaluator(preExpr,expr,postExpr,context); -if(!values){return -}if(expr){candidates=[]; -if(caseSensitive){for(var i=0; -i=candidates.length){lastIndex=0 -}else{if(lastIndex<0){lastIndex=candidates.length-1 -}}var completion=candidates[lastIndex]; -var preCompletion=expr.substr(0,offset-exprOffset); -var postCompletion=completion.substr(offset-exprOffset); -textBox.value=preParsed+preExpr+preCompletion+postCompletion+postExpr; -var offsetEnd=preParsed.length+preExpr.length+completion.length; -return function(){if(selectMode){setSelectionRange(textBox,offset,offsetEnd) -}else{setSelectionRange(textBox,offsetEnd,offsetEnd) -}} -} -}; -var getDefaultEditor=function getDefaultEditor(panel){if(!defaultEditor){var doc=panel.document; -defaultEditor=new Firebug.InlineEditor(doc) -}return defaultEditor -}; -var getOutsider=function getOutsider(element,group,stepper){var parentGroup=getAncestorByClass(group.parentNode,"editGroup"); -var next; -do{next=stepper(next||element) -}while(isAncestor(next,group)||isGroupInsert(next,parentGroup)); -return next -}; -var isGroupInsert=function isGroupInsert(next,group){return(!group||isAncestor(next,group))&&(hasClass(next,"insertBefore")||hasClass(next,"insertAfter")) -}; -var getNextOutsider=function getNextOutsider(element,group){return getOutsider(element,group,bind(getNextByClass,FBL,"editable")) -}; -var getPreviousOutsider=function getPreviousOutsider(element,group){return getOutsider(element,group,bind(getPreviousByClass,FBL,"editable")) -}; -var getInlineParent=function getInlineParent(element){var lastInline=element; -for(; -element; -element=element.parentNode){var s=isIE?element.currentStyle:element.ownerDocument.defaultView.getComputedStyle(element,""); -if(s.display!="inline"){return lastInline -}else{lastInline=element -}}return null -}; -var insertTab=function insertTab(){insertTextIntoElement(currentEditor.input,Firebug.Editor.tabCharacter) -}; -Firebug.registerModule(Firebug.Editor) -}}); -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; -var inspectorTS,inspectorTimer,isInspecting; -Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment(); -createBoxModelInspector(); -createOutlineInspector() -},destroy:function(){destroyBoxModelInspector(); -destroyOutlineInspector(); -offlineFragment=null -},toggleInspect:function(){if(isInspecting){this.stopInspecting() -}else{Firebug.chrome.inspectButton.changeState("pressed"); -this.startInspecting() -}},startInspecting:function(){isInspecting=true; -Firebug.chrome.selectPanel("HTML"); -createInspectorFrame(); -var size=Firebug.browser.getWindowScrollSize(); -fbInspectFrame.style.width=size.width+"px"; -fbInspectFrame.style.height=size.height+"px"; -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting); -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick) -},stopInspecting:function(){isInspecting=false; -if(outlineVisible){this.hideOutline() -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting); -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick); -destroyInspectorFrame(); -Firebug.chrome.inspectButton.restore(); -if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus() -}},onInspectingClick:function(e){fbInspectFrame.style.display="none"; -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY); -fbInspectFrame.style.display="block"; -var id=targ.id; -if(id&&/^fbOutline\w$/.test(id)){return -}if(id=="FirebugUI"){return -}while(targ.nodeType!=1){targ=targ.parentNode -}Firebug.Inspector.stopInspecting() -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none"; -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY); -fbInspectFrame.style.display="block"; -var id=targ.id; -if(id&&/^fbOutline\w$/.test(id)){return -}if(id=="FirebugUI"){return -}while(targ.nodeType!=1){targ=targ.parentNode -}if(targ.nodeName.toLowerCase()=="body"){return -}Firebug.Inspector.drawOutline(targ); -if(ElementCache(targ)){var target=""+ElementCache.key(targ); -var lazySelect=function(){inspectorTS=new Date().getTime(); -Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) -}; -if(inspectorTimer){clearTimeout(inspectorTimer); -inspectorTimer=null -}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0) -}else{inspectorTimer=setTimeout(lazySelect,300) -}}lastInspecting=new Date().getTime() -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target; -var id=targ.id; -if(id&&/^fbOutline\w$/.test(id)){return -}if(id=="FirebugUI"){return -}while(targ.nodeType!=1){targ=targ.parentNode -}if(targ.nodeName.toLowerCase()=="body"){return -}Firebug.Inspector.drawOutline(targ); -if(ElementCache.has(targ)){FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) -}lastInspecting=new Date().getTime() -}},drawOutline:function(el){var border=2; -var scrollbarSize=17; -var windowSize=Firebug.browser.getWindowSize(); -var scrollSize=Firebug.browser.getWindowScrollSize(); -var scrollPosition=Firebug.browser.getWindowScrollPosition(); -var box=Firebug.browser.getElementBox(el); -var top=box.top; -var left=box.left; -var height=box.height; -var width=box.width; -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0); -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0); -var numVerticalBorders=freeVerticalSpace>0?2:1; -var o=outlineElements; -var style; -style=o.fbOutlineT.style; -style.top=top-border+"px"; -style.left=left+"px"; -style.height=border+"px"; -style.width=width+"px"; -style=o.fbOutlineL.style; -style.top=top-border+"px"; -style.left=left-border+"px"; -style.height=height+numVerticalBorders*border+"px"; -style.width=border+"px"; -style=o.fbOutlineB.style; -if(freeVerticalSpace>0){style.top=top+height+"px"; -style.left=left+"px"; -style.width=width+"px" -}else{style.top=-2*border+"px"; -style.left=-2*border+"px"; -style.width=border+"px" -}style=o.fbOutlineR.style; -if(freeHorizontalSpace>0){style.top=top-border+"px"; -style.left=left+width+"px"; -style.height=height+numVerticalBorders*border+"px"; -style.width=(freeHorizontalSpacescrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return -}var top=box.top; -var left=box.left; -var height=box.height; -var width=box.width; -var margin=Firebug.browser.getMeasurementBox(el,"margin"); -var padding=Firebug.browser.getMeasurementBox(el,"padding"); -var border=Firebug.browser.getMeasurementBox(el,"border"); -boxModelStyle.top=top-margin.top+"px"; -boxModelStyle.left=left-margin.left+"px"; -boxModelStyle.height=height+margin.top+margin.bottom+"px"; -boxModelStyle.width=width+margin.left+margin.right+"px"; -boxBorderStyle.top=margin.top+"px"; -boxBorderStyle.left=margin.left+"px"; -boxBorderStyle.height=height+"px"; -boxBorderStyle.width=width+"px"; -boxPaddingStyle.top=margin.top+border.top+"px"; -boxPaddingStyle.left=margin.left+border.left+"px"; -boxPaddingStyle.height=height-border.top-border.bottom+"px"; -boxPaddingStyle.width=width-border.left-border.right+"px"; -boxContentStyle.top=margin.top+border.top+padding.top+"px"; -boxContentStyle.left=margin.left+border.left+padding.left+"px"; -boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px"; -boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px"; -if(!boxModelVisible){this.showBoxModel() -}},hideBoxModel:function(){if(!boxModelVisible){return -}offlineFragment.appendChild(boxModel); -boxModelVisible=false -},showBoxModel:function(){if(boxModelVisible){return -}if(outlineVisible){this.hideOutline() -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); -boxModelVisible=true -}}; -var offlineFragment=null; -var boxModelVisible=false; -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle; -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"; -var inspectStyle=resetStyle+"z-index: 2147483500;"; -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);"; -var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;"; -var inspectModelStyle=inspectStyle+inspectModelOpacity; -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle=inspectStyle+"background: #666;"; -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;"; -var inspectContentStyle=inspectStyle+"background: SkyBlue;"; -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"}; -var lastInspecting=0; -var fbInspectFrame=null; -var outlineVisible=false; -var outlineElements={}; -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"}; -var getInspectingTarget=function(){}; -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div"); -fbInspectFrame.id="fbInspectFrame"; -fbInspectFrame.firebugIgnore=true; -fbInspectFrame.style.cssText=inspectFrameStyle; -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame) -}; -var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); -fbInspectFrame=null -}}; -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div"); -el.id=name; -el.firebugIgnore=true; -el.style.cssText=inspectStyle+outlineStyle[outline[name]]; -offlineFragment.appendChild(el) -}}; -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name]; -el.parentNode.removeChild(el) -}}; -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div"); -boxModel.id="fbBoxModel"; -boxModel.firebugIgnore=true; -boxModelStyle=boxModel.style; -boxModelStyle.cssText=inspectModelStyle; -boxMargin=createGlobalElement("div"); -boxMargin.id="fbBoxMargin"; -boxMarginStyle=boxMargin.style; -boxMarginStyle.cssText=inspectMarginStyle; -boxModel.appendChild(boxMargin); -boxBorder=createGlobalElement("div"); -boxBorder.id="fbBoxBorder"; -boxBorderStyle=boxBorder.style; -boxBorderStyle.cssText=inspectBorderStyle; -boxModel.appendChild(boxBorder); -boxPadding=createGlobalElement("div"); -boxPadding.id="fbBoxPadding"; -boxPaddingStyle=boxPadding.style; -boxPaddingStyle.cssText=inspectPaddingStyle; -boxModel.appendChild(boxPadding); -boxContent=createGlobalElement("div"); -boxContent.id="fbBoxContent"; -boxContentStyle=boxContent.style; -boxContentStyle.cssText=inspectContentStyle; -boxModel.appendChild(boxContent); -offlineFragment.appendChild(boxModel) -}; -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel) -} -}}); -FBL.ns(function(){with(FBL){var consoleQueue=[]; -var lastHighlightedObject; -var FirebugContext=Env.browser; -var maxQueueRequests=500; -Firebug.ConsoleBase={log:function(object,context,className,rep,noThrottle,sourceLink){return this.logRow(appendObject,object,context,className,rep,sourceLink,noThrottle) -},logFormatted:function(objects,context,className,noThrottle,sourceLink){return this.logRow(appendFormatted,objects,context,className,null,sourceLink,noThrottle) -},openGroup:function(objects,context,className,rep,noThrottle,sourceLink,noPush){return this.logRow(appendOpenGroup,objects,context,className,rep,sourceLink,noThrottle) -},closeGroup:function(context,noThrottle){return this.logRow(appendCloseGroup,null,context,null,null,null,noThrottle,true) -},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){noThrottle=true; -if(!context){context=FirebugContext -}if(FBTrace.DBG_ERRORS&&!context){FBTrace.sysout("Console.logRow has no context, skipping objects",objects) -}if(!context){return -}if(noThrottle||!context){var panel=this.getPanel(context); -if(panel){var row=panel.append(appender,objects,className,rep,sourceLink,noRow); -var container=panel.panelNode; -return row -}else{consoleQueue.push([appender,objects,context,className,rep,sourceLink,noThrottle,noRow]) -}}else{if(!context.throttle){return -}var args=[appender,objects,context,className,rep,sourceLink,true,noRow]; -context.throttle(this.logRow,this,args) -}},appendFormatted:function(args,row,context){if(!context){context=FirebugContext -}var panel=this.getPanel(context); -panel.appendFormatted(args,row) -},clear:function(context){if(!context){context=Firebug.context -}var panel=this.getPanel(context,true); -if(panel){panel.clear() -}},getPanel:function(context,noCreate){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null -}}; -var ActivableConsole=extend(Firebug.ConsoleBase,{isAlwaysEnabled:function(){return true -}}); -Firebug.Console=Firebug.Console=extend(ActivableConsole,{dispatchName:"console",error:function(){Firebug.Console.logFormatted(arguments,Firebug.browser,"error") -},flush:function(){dispatch(this.fbListeners,"flush",[]); -for(var i=0,length=consoleQueue.length; -iobjects.length){format=""; -objIndex=-1; -parts.length=0; -break -}}}for(var i=0; -i1){traceRecursion--; -return -}var frames=[]; -for(var fn=arguments.callee.caller.caller; -fn; -fn=fn.caller){if(wasVisited(fn)){break -}var args=[]; -for(var i=0,l=fn.arguments.length; -i1){objects=[errorObject]; -for(var i=1; -i0)){var oldest=frames.length-1; -for(var i=0; -i0&&commandHistory.length>0){this.element.value=commandHistory[--commandPointer] -}},nextCommand:function(){var element=this.element; -var limit=commandHistory.length-1; -var i=commandPointer; -if(i=0&&i',msg,"",'"] -},onKeyDown:function(e){e=e||event; -var code=e.keyCode; -if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false -}if(code==13){this.enter(); -this.clear() -}else{if(code==27){setTimeout(this.clear,0) -}else{if(code==38){this.prevCommand() -}else{if(code==40){this.nextCommand() -}else{if(code==9){this.autocomplete(e.shiftKey) -}else{return -}}}}}cancelEvent(e,true); -return false -},onMultiLineKeyDown:function(e){e=e||event; -var code=e.keyCode; -if(code==13&&e.ctrlKey){this.enter() -}}}); -Firebug.registerModule(Firebug.CommandLine); -function getExpressionOffset(command){var bracketCount=0; -var start=command.length-1; -for(; -start>=0; ---start){var c=command[start]; -if((c==","||c==";"||c==" ")&&!bracketCount){break -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount -}else{break -}}else{if(reCloseBracket.test(c)){++bracketCount -}}}return start+1 -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id) -},$$:function(selector,context){context=context||Firebug.browser.document; -return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.") -},$0:null,$1:null,dir:function(o){Firebug.Console.log(o,Firebug.context,"dir",Firebug.DOMPanel.DirTable) -},dirxml:function(o){if(instanceOf(o,"Window")){o=o.document.documentElement -}else{if(instanceOf(o,"Document")){o=o.documentElement -}}var div=Firebug.Console.log(o,Firebug.context,"dirxml"); -var html=[]; -Firebug.Reps.appendNode(o,html); -div.innerHTML=html.join("") -}}; -var defineCommandLineAPI=function defineCommandLineAPI(){Firebug.CommandLine.API={}; -for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m] -}}var stack=FirebugChrome.htmlSelectionStack; -if(stack){Firebug.CommandLine.API.$0=stack[0]; -Firebug.CommandLine.API.$1=stack[1] -}} -}}); -FBL.ns(function(){with(FBL){if(Env.Options.disableXHRListener){return -}var XHRSpy=function(){this.requestHeaders=[]; -this.responseHeaders=[] -}; -XHRSpy.prototype={method:null,url:null,async:null,xhrRequest:null,href:null,loaded:false,logRow:null,responseText:null,requestHeaders:null,responseHeaders:null,sourceLink:null,getURL:function(){return this.href -}}; -var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS; -var updateSelfPropertiesIgnore={abort:1,channel:1,getAllResponseHeaders:1,getInterface:1,getResponseHeader:1,mozBackgroundRequest:1,multipart:1,onreadystatechange:1,open:1,send:1,setRequestHeader:1}; -var updateSelfProperties=function(){if(supportsXHRIterator){for(var propName in xhrRequest){if(propName in updateSelfPropertiesIgnore){continue -}try{var propValue=xhrRequest[propName]; -if(propValue&&!isFunction(propValue)){self[propName]=propValue -}}catch(E){}}}else{if(xhrRequest.readyState==4){self.status=xhrRequest.status; -self.statusText=xhrRequest.statusText; -self.responseText=xhrRequest.responseText; -self.responseXML=xhrRequest.responseXML -}}}; -var updateXHRPropertiesIgnore={channel:1,onreadystatechange:1,readyState:1,responseBody:1,responseText:1,responseXML:1,status:1,statusText:1,upload:1}; -var updateXHRProperties=function(){for(var propName in self){if(propName in updateXHRPropertiesIgnore){continue -}try{var propValue=self[propName]; -if(propValue&&!xhrRequest[propName]){xhrRequest[propName]=propValue -}}catch(E){}}}; -var logXHR=function(){var row=Firebug.Console.log(spy,null,"spy",Firebug.Spy.XHR); -if(row){setClass(row,"loading"); -spy.logRow=row -}}; -var finishXHR=function(){var duration=new Date().getTime()-reqStartTS; -var success=xhrRequest.status==200; -var responseHeadersText=xhrRequest.getAllResponseHeaders(); -var responses=responseHeadersText?responseHeadersText.split(/[\n\r]/):[]; -var reHeader=/^(\S+):\s*(.*)/; -for(var i=0,l=responses.length; -i0; -return this -}; -var _ActiveXObject; -var isIE6=/msie 6/i.test(navigator.appVersion); -if(isIE6){_ActiveXObject=window.ActiveXObject; -var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; -window.ActiveXObject=function(name){var error=null; -try{var activeXObject=new _ActiveXObject(name) -}catch(e){error=e -}finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject) -}else{return activeXObject -}}else{throw error.message -}}} -}if(!isIE6){var _XMLHttpRequest=XMLHttpRequest; -window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper() -} -}}}); -FBL.ns(function(){with(FBL){var reIgnore=/about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval=300; -var indentWidth=18; -var cacheSession=null; -var contexts=new Array(); -var panelName="net"; -var maxQueueRequests=500; -var activeRequests=[]; -var mimeExtensionMap={txt:"text/plain",html:"text/html",htm:"text/html",xhtml:"text/html",xml:"text/xml",css:"text/css",js:"application/x-javascript",jss:"application/x-javascript",jpg:"image/jpg",jpeg:"image/jpeg",gif:"image/gif",png:"image/png",bmp:"image/bmp",swf:"application/x-shockwave-flash",flv:"video/x-flv"}; -var fileCategories={"undefined":1,html:1,css:1,js:1,xhr:1,image:1,flash:1,txt:1,bin:1}; -var textFileCategories={txt:1,html:1,xhr:1,css:1,js:1}; -var binaryFileCategories={bin:1,flash:1}; -var mimeCategoryMap={"text/plain":"txt","application/octet-stream":"bin","text/html":"html","text/xml":"html","text/css":"css","application/x-javascript":"js","text/javascript":"js","application/javascript":"js","image/jpeg":"image","image/jpg":"image","image/gif":"image","image/png":"image","image/bmp":"image","application/x-shockwave-flash":"flash","video/x-flv":"flash"}; -var binaryCategoryMap={image:1,flash:1}; -Firebug.NetMonitor=extend(Firebug.ActivableModule,{dispatchName:"netMonitor",clear:function(context){var panel=context.getPanel(panelName,true); -if(panel){panel.clear() -}},initialize:function(){return; -this.panelName=panelName; -Firebug.ActivableModule.initialize.apply(this,arguments); -if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener) -}NetHttpObserver.registerObserver(); -NetHttpActivityObserver.registerObserver(); -Firebug.Debugger.addListener(this.DebuggerListener) -},shutdown:function(){return; -prefs.removeObserver(Firebug.prefDomain,this,false); -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener) -}NetHttpObserver.unregisterObserver(); -NetHttpActivityObserver.unregisterObserver(); -Firebug.Debugger.removeListener(this.DebuggerListener) -}}); -Firebug.NetMonitor.NetInfoBody=domplate(Firebug.Rep,new Firebug.Listener(),{tag:DIV({"class":"netInfoBody",_repObject:"$file"},TAG("$infoTabs",{file:"$file"}),TAG("$infoBodies",{file:"$file"})),infoTabs:DIV({"class":"netInfoTabs focusRow subFocusRow",role:"tablist"},A({"class":"netInfoParamsTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Params",$collapsed:"$file|hideParams"},$STR("URLParameters")),A({"class":"netInfoHeadersTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Headers"},$STR("Headers")),A({"class":"netInfoPostTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Post",$collapsed:"$file|hidePost"},$STR("Post")),A({"class":"netInfoPutTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Put",$collapsed:"$file|hidePut"},$STR("Put")),A({"class":"netInfoResponseTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Response",$collapsed:"$file|hideResponse"},$STR("Response")),A({"class":"netInfoCacheTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Cache",$collapsed:"$file|hideCache"},$STR("Cache")),A({"class":"netInfoHtmlTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Html",$collapsed:"$file|hideHtml"},$STR("HTML"))),infoBodies:DIV({"class":"netInfoBodies outerFocusRow"},TABLE({"class":"netInfoParamsText netInfoText netInfoParamsTable",role:"tabpanel",cellpadding:0,cellspacing:0},TBODY()),DIV({"class":"netInfoHeadersText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPostText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPutText netInfoText",role:"tabpanel"}),PRE({"class":"netInfoResponseText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoCacheText netInfoText",role:"tabpanel"},TABLE({"class":"netInfoCacheTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("Cache")}))),DIV({"class":"netInfoHtmlText netInfoText",role:"tabpanel"},IFRAME({"class":"netInfoHtmlPreview",role:"document"}))),headerDataTag:FOR("param","$headers",TR({role:"listitem"},TD({"class":"netInfoParamName",role:"presentation"},TAG("$param|getNameTag",{param:"$param"})),TD({"class":"netInfoParamValue",role:"list","aria-label":"$param.name"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line"))))),customTab:A({"class":"netInfo$tabId\\Tab netInfoTab",onclick:"$onClickTab",view:"$tabId",role:"tab"},"$tabTitle"),customBody:DIV({"class":"netInfo$tabId\\Text netInfoText",role:"tabpanel"}),nameTag:SPAN("$param|getParamName"),nameWithTooltipTag:SPAN({title:"$param.name"},"$param|getParamName"),getNameTag:function(param){return(this.getParamName(param)==param.name)?this.nameTag:this.nameWithTooltipTag -},getParamName:function(param){var limit=25; -var name=param.name; -if(name.length>limit){name=name.substr(0,limit)+"..." -}return name -},getParamTitle:function(param){var limit=25; -var name=param.name; -if(name.length>limit){return name -}return"" -},hideParams:function(file){return !file.urlParams||!file.urlParams.length -},hidePost:function(file){return file.method.toUpperCase()!="POST" -},hidePut:function(file){return file.method.toUpperCase()!="PUT" -},hideResponse:function(file){return false -},hideCache:function(file){return true; -return !file.cacheEntry -},hideHtml:function(file){return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml") -},onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement) -},getParamValueIterator:function(param){return param.value; -return wrapText(param.value,true) -},appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle}; -this.customTab.append(args,$$(".netInfoTabs",netInfoBox)[0]); -this.customBody.append(args,$$(".netInfoBodies",netInfoBox)[0]) -},selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab"); -if(tab){this.selectTab(tab) -}},selectTab:function(tab){var view=tab.getAttribute("view"); -var netInfoBox=getAncestorByClass(tab,"netInfoBody"); -var selectedTab=netInfoBox.selectedTab; -if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected"); -removeClass(selectedTab,"netInfoTabSelected"); -selectedTab.setAttribute("aria-selected","false") -}var textBodyName="netInfo"+view+"Text"; -selectedTab=netInfoBox.selectedTab=tab; -netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0]; -setClass(netInfoBox.selectedText,"netInfoTextSelected"); -setClass(selectedTab,"netInfoTabSelected"); -selectedTab.setAttribute("selected","true"); -selectedTab.setAttribute("aria-selected","true"); -var file=Firebug.getRepObject(netInfoBox); -var context=Firebug.chrome; -this.updateInfo(netInfoBox,file,context) -},updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file) -}if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file) -}return -}var tab=netInfoBox.selectedTab; -if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true; -this.insertHeaderRows(netInfoBox,file.urlParams,"Params") -}}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0]; -if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true; -NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders") -}if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true; -NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders") -}}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true; -var postText=$$(".netInfoPostText",netInfoBox)[0]; -NetInfoPostData.render(context,postText,file) -}}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true; -var putText=$$(".netInfoPutText",netInfoBox)[0]; -NetInfoPostData.render(context,putText,file) -}}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0]; -if(file.category=="image"){netInfoBox.responsePresented=true; -var responseImage=netInfoBox.ownerDocument.createElement("img"); -responseImage.src=file.href; -clearNode(responseTextBox); -responseTextBox.appendChild(responseImage,responseTextBox) -}else{this.setResponseText(file,netInfoBox,responseTextBox,context) -}}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0); -if(file.cacheEntry){netInfoBox.cachePresented=true; -this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache") -}}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true; -var text=Utils.getResponseText(file,context); -var iframe=$$(".netInfoHtmlPreview",netInfoBox)[0]; -var reScript=//gi; -text=text.replace(reScript,""); -iframe.contentWindow.document.write(text); -iframe.contentWindow.document.close() -}}}}}}}dispatch(NetInfoBody.fbListeners,"updateTabBody",[netInfoBox,file,context]) -},setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true; -if(isIE){responseTextBox.style.whiteSpace="nowrap" -}responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText; -return; -var text=Utils.getResponseText(file,context); -var limit=Firebug.netDisplayedResponseLimit+15; -var limitReached=text?(text.length>limit):false; -if(limitReached){text=text.substr(0,limit)+"..." -}if(text){insertWrappedText(text,responseTextBox) -}else{insertWrappedText("",responseTextBox) -}if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true); -panel.openResponseInTab(file) -}}; -Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox) -}netInfoBox.responsePresented=true; -if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated") -}},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return -}var headersTable=$$(".netInfo"+tableName+"Table",netInfoBox)[0]; -var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body"); -if(!tbody){tbody=headersTable.firstChild -}var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title"); -this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody); -removeClass(titleRow,"collapsed") -}}); -var NetInfoBody=Firebug.NetMonitor.NetInfoBody; -Firebug.NetMonitor.NetInfoHeaders=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoHeadersTable",role:"tabpanel"},DIV({"class":"netInfoHeadersGroup netInfoResponseHeadersTitle"},SPAN($STR("ResponseHeaders")),SPAN({"class":"netHeadersViewSource response collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"ResponseHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoResponseHeadersBody",role:"list","aria-label":$STR("ResponseHeaders")})),DIV({"class":"netInfoHeadersGroup netInfoRequestHeadersTitle"},SPAN($STR("RequestHeaders")),SPAN({"class":"netHeadersViewSource request collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"RequestHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoRequestHeadersBody",role:"list","aria-label":$STR("RequestHeaders")}))),sourceTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},PRE({"class":"source"}))),onViewSource:function(event){var target=event.target; -var requestHeaders=(target.rowName=="RequestHeaders"); -var netInfoBox=getAncestorByClass(target,"netInfoBody"); -var file=netInfoBox.repObject; -if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders; -this.insertHeaderRows(netInfoBox,headers,target.rowName); -target.innerHTML=$STR("net.headers.view source") -}else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText; -this.insertSource(netInfoBox,source,target.rowName); -target.innerHTML=$STR("net.headers.pretty print") -}target.sourceDisplayed=!target.sourceDisplayed; -cancelEvent(event) -},insertSource:function(netInfoBox,source,rowName){var tbody=$$(".netInfo"+rowName+"Body",netInfoBox)[0]; -var node=this.sourceTag.replace({},tbody); -var sourceNode=$$(".source",node)[0]; -sourceNode.innerHTML=source -},insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0]; -var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0]; -clearNode(tbody); -if(!headers.length){return -}NetInfoBody.headerDataTag.insertRows({headers:headers},tbody); -var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title"); -removeClass(titleRow,"collapsed") -},init:function(parent){var rootNode=this.tag.append({},parent); -var netInfoBox=getAncestorByClass(parent,"netInfoBody"); -var file=netInfoBox.repObject; -var viewSource; -viewSource=$$(".request",rootNode)[0]; -if(file.requestHeadersText){removeClass(viewSource,"collapsed") -}viewSource=$$(".response",rootNode)[0]; -if(file.responseHeadersText){removeClass(viewSource,"collapsed") -}},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent) -}this.insertHeaderRows(parent,headers,rowName) -}}); -var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders; -Firebug.NetMonitor.NetInfoPostData=domplate(Firebug.Rep,{paramsTable:TABLE({"class":"netInfoPostParamsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parameters")},TR({"class":"netInfoPostParamsTitle",role:"presentation"},TD({colspan:3,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parameters"),SPAN({"class":"netInfoPostContentType"},"application/x-www-form-urlencoded")))))),partsTable:TABLE({"class":"netInfoPostPartsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parts")},TR({"class":"netInfoPostPartsTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parts"),SPAN({"class":"netInfoPostContentType"},"multipart/form-data")))))),jsonTable:TABLE({"class":"netInfoPostJSONTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("JSON")},TR({"class":"netInfoPostJSONTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("JSON")))),TR(TD({"class":"netInfoPostJSONBody"})))),xmlTable:TABLE({"class":"netInfoPostXMLTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("xmlviewer.tab.XML")},TR({"class":"netInfoPostXMLTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("xmlviewer.tab.XML")))),TR(TD({"class":"netInfoPostXMLBody"})))),sourceTable:TABLE({"class":"netInfoPostSourceTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Source")},TR({"class":"netInfoPostSourceTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostSource"},$STR("net.label.Source")))))),sourceBodyTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line")))),getParamValueIterator:function(param){return NetInfoBody.getParamValueIterator(param) -},render:function(context,parentNode,file){var spy=getAncestorByClass(parentNode,"spyHead"); -var spyObject=spy.repObject; -var data=spyObject.data; -var contentType=file.mimeType; -if(contentType&&contentType=="application/x-www-form-urlencoded"||data&&data.indexOf("=")!=-1){var params=parseURLEncodedTextArray(data); -if(params){this.insertParameters(parentNode,params) -}}var jsonData={responseText:data}; -if(Firebug.JSONViewerModel.isJSON(contentType,data)){this.insertJSON(parentNode,jsonData,context) -}var postText=data; -if(postText){this.insertSource(parentNode,postText) -}},insertParameters:function(parentNode,params){if(!params||!params.length){return -}var paramTable=this.paramsTable.append({object:{}},parentNode); -var row=$$(".netInfoPostParamsTitle",paramTable)[0]; -var tbody=paramTable.getElementsByTagName("tbody")[0]; -NetInfoBody.headerDataTag.insertRows({headers:params},row) -},insertParts:function(parentNode,data){if(!data.params||!data.params.length){return -}var partsTable=this.partsTable.append({object:{}},parentNode); -var row=$$(".netInfoPostPartsTitle",paramTable)[0]; -NetInfoBody.headerDataTag.insertRows({headers:data.params},row) -},insertJSON:function(parentNode,file,context){var text=file.responseText; -var data=parseJSONString(text); -if(!data){return -}var jsonTable=this.jsonTable.append({},parentNode); -var jsonBody=$$(".netInfoPostJSONBody",jsonTable)[0]; -if(!this.toggles){this.toggles={} -}Firebug.DOMPanel.DirTable.tag.replace({object:data,toggles:this.toggles},jsonBody) -},insertXML:function(parentNode,file,context){var text=Utils.getPostText(file,context); -var jsonTable=this.xmlTable.append(null,parentNode); -var jsonBody=$$(".netInfoPostXMLBody",jsonTable)[0]; -Firebug.XMLViewerModel.insertXML(jsonBody,text) -},insertSource:function(parentNode,text){var sourceTable=this.sourceTable.append({object:{}},parentNode); -var row=$$(".netInfoPostSourceTitle",sourceTable)[0]; -var param={value:[text]}; -this.sourceBodyTag.insertRows({param:param},row) -},parseMultiPartText:function(file,context){var text=Utils.getPostText(file,context); -if(text==undefined){return null -}FBTrace.sysout("net.parseMultiPartText; boundary: ",text); -var boundary=text.match(/\s*boundary=\s*(.*)/)[1]; -var divider="\r\n\r\n"; -var bodyStart=text.indexOf(divider); -var body=text.substr(bodyStart+divider.length); -var postData={}; -postData.mimeType="multipart/form-data"; -postData.params=[]; -var parts=body.split("--"+boundary); -for(var i=0; -i1)?m[1]:"",value:trim(part[1])}) -}return postData -}}); -var NetInfoPostData=Firebug.NetMonitor.NetInfoPostData; -var $STRP=function(a){return a -}; -Firebug.NetMonitor.NetLimit=domplate(Firebug.Rep,{collapsed:true,tableTag:DIV(TABLE({width:"100%",cellpadding:0,cellspacing:0},TBODY())),limitTag:TR({"class":"netRow netLimitRow",$collapsed:"$isCollapsed"},TD({"class":"netCol netLimitCol",colspan:6},TABLE({cellpadding:0,cellspacing:0},TBODY(TR(TD(SPAN({"class":"netLimitLabel"},$STRP("plural.Limit_Exceeded",[0]))),TD({style:"width:100%"}),TD(BUTTON({"class":"netLimitButton",title:"$limitPrefsTitle",onclick:"$onPreferences"},$STR("LimitPrefs"))),TD(" ")))))),isCollapsed:function(){return this.collapsed -},onPreferences:function(event){openNewTab("about:config") -},updateCounter:function(row){removeClass(row,"collapsed"); -var limitLabel=row.getElementsByClassName("netLimitLabel").item(0); -limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount]) -},createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent); -var row=this.createRow(table.firstChild.firstChild,limitInfo); -return[table,row] -},createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0]; -row.limitInfo=limitInfo; -return row -},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return -}if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit() -}},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit"); -maxQueueRequests=value?value:maxQueueRequests -}}); -var NetLimit=Firebug.NetMonitor.NetLimit; -Firebug.NetMonitor.ResponseSizeLimit=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoResponseSizeLimit"},SPAN("$object.beforeLink"),A({"class":"objectLink",onclick:"$onClickLink"},"$object.linkText"),SPAN("$object.afterLink")),reLink:/^(.*)(.*)<\/a>(.*$)/,append:function(obj,parent){var m=obj.text.match(this.reLink); -return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this) -}}); -Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null -}name=name.toLowerCase(); -for(var i=0; -ilimit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n") -}return file.postText -},getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file) -},isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context); -if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true -}var headerValue=Utils.findHeader(file.requestHeaders,"content-type"); -if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true -}return false -},isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context); -if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true -}return false -},getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri); -if(!ext){return mimeType -}else{var extMimeType=mimeExtensionMap[ext.toLowerCase()]; -return extMimeType?extMimeType:mimeType -}}else{return mimeType -}},getDateFromSeconds:function(s){var d=new Date(); -d.setTime(s*1000); -return d -},getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel); -file.status=request.responseStatus; -file.method=http.requestMethod; -file.urlParams=parseURLParams(file.href); -file.mimeType=Utils.getMimeType(request.contentType,request.name); -if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[]; -http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value}) -}}); -http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value}) -}}); -file.requestHeaders=requestHeaders; -file.responseHeaders=responseHeaders -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc) -}}},isXHR:function(request){try{var callbacks=request.notificationCallbacks; -var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null; -if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request)) -}return(xhrRequest!=null) -}catch(exc){}return false -},getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file) -}return file.category -}if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file) -}return file.category="xhr" -}if(!file.mimeType){var ext=getFileExtension(file.href); -if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()] -}}if(!file.mimeType){return"" -}var mimeType=file.mimeType; -if(mimeType){mimeType=mimeType.split(";")[0] -}return(file.category=mimeCategoryMap[mimeType]) -}}; -var Utils=Firebug.NetMonitor.Utils; -Firebug.registerModule(Firebug.NetMonitor) -}}); -FBL.ns(function(){with(FBL){var contexts=[]; -Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener) -}Firebug.Module.initialize.apply(this,arguments) -},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments); -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener) -}},initContext:function(context){context.spies=[]; -if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window) -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName()) -}},destroyContext:function(context){this.detachObserver(context,null); -if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName()) -}delete context.spies; -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName()) -}},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win) -}},unwatchWindow:function(context,win){try{this.detachObserver(context,win) -}catch(ex){ERROR(ex) -}},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver; -for(var i=0; -i\s*/,""); -var div=parentNode.ownerDocument.createElement("div"); -div.innerHTML=xmlText; -var root=div.getElementsByTagName("*")[0]; -if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed",doc) -}var html=[]; -Firebug.Reps.appendNode(root,html); -parentNode.innerHTML=html.join("") -}}); -Firebug.XMLViewerModel.ParseError=domplate(Firebug.Rep,{tag:DIV({"class":"xmlInfoError"},DIV({"class":"xmlInfoErrorMsg"},"$error.message"),PRE({"class":"xmlInfoErrorSource"},"$error|getSource")),getSource:function(error){var parts=error.source.split("\n"); -if(parts.length!=2){return error.source -}var limit=50; -var column=parts[1].length; -if(column>=limit){parts[0]="..."+parts[0].substr(column-limit); -parts[1]="..."+parts[1].substr(column-limit) -}if(parts[0].length>80){parts[0]=parts[0].substr(0,80)+"..." -}return parts.join("\n") -}}); -Firebug.registerModule(Firebug.XMLViewerModel) -}}); -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; -var cacheID=Firebug.Lite.Cache.ID; -var ignoreHTMLProps={sizcache:1,sizset:1}; -ignoreHTMLProps[cacheID]=1; -Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g; -if(!nodeArray.length){nodeArray=[nodeArray] -}for(var n=0,node; -node=nodeArray[n]; -n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue -}var uid=ElementCache(node); -var child=node.childNodes; -var childLength=child.length; -var nodeName=node.nodeName.toLowerCase(); -var nodeVisible=isVisible(node); -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style"; -var nodeControl=!hasSingleTextChild&&childLength>0?('
'):""; -var isIE=false; -if(isIE&&nodeControl){html.push(nodeControl) -}if(typeof uid!="undefined"){html.push('
',!isIE&&nodeControl?nodeControl:"","<',nodeName,"") -}else{html.push('
<',nodeName,"") -}for(var i=0; -i',name,'="',escapeHTML(value),""") -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,""); -if(value){html.push('>',escapeHTML(value),'</',nodeName,">
") -}else{html.push("/>
") -}}else{if(childLength>0){html.push(">") -}else{html.push("/>") -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,""); -if(isIE){var src=value+"\n" -}else{var src="\n"+value+"\n" -}var match=src.match(/\n/g); -var num=match?match.length:0; -var s=[],sl=0; -for(var c=1; -c'+c+"" -}html.push('
',s.join(""),'
',escapeHTML(src),"
") -}else{var value=node.nodeValue.replace(reTrim,""); -if(value){html.push('
',escapeHTML(value),"
") -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document; -var uid=treeNode.id; -var parentNode=ElementCache.get(uid); -if(parentNode.childNodes.length==0){return -}var treeNext=treeNode.nextSibling; -var treeParent=treeNode.parentNode; -var isIE=false; -var control=isIE?treeNode.previousSibling:treeNode.firstChild; -control.className="nodeControl nodeMaximized"; -var html=[]; -var children=doc.createElement("div"); -children.className="nodeChildren"; -this.appendTreeNode(parentNode.childNodes,html); -children.innerHTML=html.join(""); -treeParent.insertBefore(children,treeNext); -var closeElement=doc.createElement("div"); -closeElement.className="objectBox-element"; -closeElement.innerHTML='</'+parentNode.nodeName.toLowerCase()+">"; -treeParent.insertBefore(closeElement,treeNext) -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling; -var closeTag=children.nextSibling; -var isIE=false; -var control=isIE?treeNode.previousSibling:treeNode.firstChild; -control.className="nodeControl"; -children.parentNode.removeChild(children); -closeTag.parentNode.removeChild(closeTag) -},isTreeNodeVisible:function(id){return $(id) -},select:function(el){var id=el&&ElementCache(el); -if(id){this.selectTreeNode(id) -}},selectTreeNode:function(id){id=""+id; -var node,stack=[]; -while(id&&!this.isTreeNodeVisible(id)){stack.push(id); -var node=ElementCache.get(id).parentNode; -if(node){id=ElementCache(node) -}else{break -}}stack.push(id); -while(stack.length>0){id=stack.pop(); -node=$(id); -if(stack.length>0&&ElementCache.get(id).childNodes.length>0){this.appendTreeChildren(node) -}}selectElement(node); -if(fbPanel1){fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2) -}}}); -Firebug.registerModule(Firebug.HTML); -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.panelNode.style.padding="4px 3px 1px 15px"; -this.panelNode.style.minWidth="500px"; -if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI() -}if(!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("css") -}},destroy:function(){selectedElement=null; -fbPanel1=null; -selectedSidePanelTS=null; -selectedSidePanelTimer=null; -Firebug.Panel.destroy.apply(this,arguments) -},createUI:function(){var rootNode=Firebug.browser.document.documentElement; -var html=[]; -Firebug.HTML.appendTreeNode(rootNode,html); -this.panelNode.innerHTML=html.join("") -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); -fbPanel1=$("fbPanel1"); -if(!selectedElement){Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)) -}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove) -},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove); -removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); -fbPanel1=null; -Firebug.Panel.shutdown.apply(this,arguments) -},reattach:function(){if(FirebugChrome.selectedHTMLElementId){Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId) -}},updateSelection:function(object){var id=ElementCache(object); -if(id){Firebug.HTML.selectTreeNode(id) -}}}); -Firebug.registerPanel(HTMLPanel); -var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":" -}):styles -}; -var selectedElement=null; -var fbPanel1=null; -var selectedSidePanelTS,selectedSidePanelTimer; -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element" -}e.className=e.className+" selectedElement"; -if(FBL.isFirefox){e.style.MozBorderRadius="2px" -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px" -}}selectedElement=e; -FirebugChrome.selectedHTMLElementId=e.id; -var target=ElementCache.get(e.id); -var selectedSidePanel=Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; -var stack=FirebugChrome.htmlSelectionStack; -stack.unshift(target); -if(stack.length>2){stack.pop() -}var lazySelect=function(){selectedSidePanelTS=new Date().getTime(); -selectedSidePanel.select(target,true) -}; -if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer); -selectedSidePanelTimer=null -}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0) -}else{selectedSidePanelTimer=setTimeout(lazySelect,150) -}}}; -Firebug.HTML.onTreeClick=function(e){e=e||event; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false; -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ); -selectElement(targ.parentNode.parentNode); -if(control.className.indexOf("nodeControl")==-1){return -}}else{control=targ -}FBL.cancelEvent(e); -var treeNode=isIE?control.nextSibling:control.parentNode; -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode) -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode) -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}}; -function onListMouseOut(e){e=e||event||window; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null -}}var hoverElement=null; -var hoverElementTS=0; -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}var found=false; -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode -}else{found=true -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null; -return -}if(typeof targ.attributes[cacheID]=="undefined"){return -}var uid=targ.attributes[cacheID]; -if(!uid){return -}var el=ElementCache.get(uid.value); -var nodeName=el.nodeName.toLowerCase(); -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return -}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null; -return -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime(); -hoverElement=el; -FBL.Firebug.Inspector.drawBoxModel(el) -}}catch(E){}}; -Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object))) -},appendNull:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendString:function(object,html){html.push('"',escapeHTML(objectToString(object)),""") -},appendInteger:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendFloat:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/; -var m=reName.exec(objectToString(object)); -var name=m&&m[1]?m[1]:"function"; -html.push('',escapeHTML(name),"()") -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html) -}else{if(object==null){this.appendNull("null",html) -}else{if(typeof object=="string"){this.appendString(object,html) -}else{if(typeof object=="number"){this.appendInteger(object,html) -}else{if(typeof object=="boolean"){this.appendInteger(object,html) -}else{if(typeof object=="function"){this.appendFunction(object,html) -}else{if(object.nodeType==1){this.appendSelector(object,html) -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html) -}else{this.appendObjectFormatted(object,html) -}}else{this.appendText(object,html) -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object); -var reObject=/\[object (.*?)\]/; -var m=reObject.exec(text); -html.push('',m?m[1]:text,"") -},appendSelector:function(object,html){var uid=ElementCache(object); -var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; -html.push('"); -html.push('',escapeHTML(object.nodeName.toLowerCase()),""); -if(object.id){html.push('#',escapeHTML(object.id),"") -}if(object.className){html.push('.',escapeHTML(object.className),"") -}html.push("") -},appendNode:function(node,html){if(node.nodeType==1){var uid=ElementCache(node); -var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; -html.push('
',"','<',node.nodeName.toLowerCase(),""); -for(var i=0; -i',name,'="',escapeHTML(value),""") -}if(node.firstChild){html.push('>
'); -for(var child=node.firstChild; -child; -child=child.nextSibling){this.appendNode(child,html) -}html.push('
</',node.nodeName.toLowerCase(),">
") -}else{html.push("/>") -}}else{if(node.nodeType==3){var value=trim(node.nodeValue); -if(value){html.push('
',escapeHTML(value),"
") -}}}},appendArray:function(object,html){html.push('[ '); -for(var i=0,l=object.length,obj; -i]") -}} -}}); -FBL.ns(function(){with(FBL){var maxWidth=100,maxHeight=80; -var infoTipMargin=10; -var infoTipWindowPadding=25; -Firebug.InfoTip=extend(Firebug.Module,{dispatchName:"infoTip",tags:domplate({infoTipTag:DIV({"class":"infoTip"}),colorTag:DIV({style:"background: $rgbValue; width: 100px; height: 40px"}," "),imgTag:DIV({"class":"infoTipImageBox infoTipLoading"},IMG({"class":"infoTipImage",src:"$urlValue",repeat:"$repeat",onload:"$onLoadImage"}),IMG({"class":"infoTipBgImage",collapsed:true,src:"blank.gif"}),DIV({"class":"infoTipCaption"})),onLoadImage:function(event){var img=event.currentTarget||event.srcElement; -var innerBox=img.parentNode; -var caption=getElementByClass(innerBox,"infoTipCaption"); -var bgImg=getElementByClass(innerBox,"infoTipBgImage"); -if(!bgImg){return -}if(isIE){removeClass(innerBox,"infoTipLoading") -}var updateInfoTip=function(){var w=img.naturalWidth||img.width||10,h=img.naturalHeight||img.height||10; -var repeat=img.getAttribute("repeat"); -if(repeat=="repeat-x"||(w==1&&h>1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat-x"; -bgImg.style.width=maxWidth+"px"; -if(h>maxHeight){bgImg.style.height=maxHeight+"px" -}else{bgImg.style.height=h+"px" -}}else{if(repeat=="repeat-y"||(h==1&&w>1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat-y"; -bgImg.style.height=maxHeight+"px"; -if(w>maxWidth){bgImg.style.width=maxWidth+"px" -}else{bgImg.style.width=w+"px" -}}else{if(repeat=="repeat"||(w==1&&h==1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat"; -bgImg.style.width=maxWidth+"px"; -bgImg.style.height=maxHeight+"px" -}else{if(w>maxWidth||h>maxHeight){if(w>h){img.style.width=maxWidth+"px"; -img.style.height=Math.round((h/w)*maxWidth)+"px" -}else{img.style.width=Math.round((w/h)*maxHeight)+"px"; -img.style.height=maxHeight+"px" -}}}}}caption.innerHTML=$STRF(w+" x "+h) -}; -if(isIE){setTimeout(updateInfoTip,0) -}else{updateInfoTip(); -removeClass(innerBox,"infoTipLoading") -}}}),initializeBrowser:function(browser){browser.onInfoTipMouseOut=bind(this.onMouseOut,this,browser); -browser.onInfoTipMouseMove=bind(this.onMouseMove,this,browser); -var doc=browser.document; -if(!doc){return -}addEvent(doc,"mouseover",browser.onInfoTipMouseMove); -addEvent(doc,"mouseout",browser.onInfoTipMouseOut); -addEvent(doc,"mousemove",browser.onInfoTipMouseMove); -return browser.infoTip=this.tags.infoTipTag.append({},getBody(doc)) -},uninitializeBrowser:function(browser){if(browser.infoTip){var doc=browser.document; -removeEvent(doc,"mouseover",browser.onInfoTipMouseMove); -removeEvent(doc,"mouseout",browser.onInfoTipMouseOut); -removeEvent(doc,"mousemove",browser.onInfoTipMouseMove); -browser.infoTip.parentNode.removeChild(browser.infoTip); -delete browser.infoTip; -delete browser.onInfoTipMouseMove -}},showInfoTip:function(infoTip,panel,target,x,y,rangeParent,rangeOffset){if(!Firebug.showInfoTips){return -}var scrollParent=getOverflowParent(target); -var scrollX=x+(scrollParent?scrollParent.scrollLeft:0); -if(panel.showInfoTip(infoTip,target,scrollX,y,rangeParent,rangeOffset)){var htmlElt=infoTip.ownerDocument.documentElement; -var panelWidth=htmlElt.clientWidth; -var panelHeight=htmlElt.clientHeight; -if(x+infoTip.offsetWidth+infoTipMargin>panelWidth){infoTip.style.left=Math.max(0,panelWidth-(infoTip.offsetWidth+infoTipMargin))+"px"; -infoTip.style.right="auto" -}else{infoTip.style.left=(x+infoTipMargin)+"px"; -infoTip.style.right="auto" -}if(y+infoTip.offsetHeight+infoTipMargin>panelHeight){infoTip.style.top=Math.max(0,panelHeight-(infoTip.offsetHeight+infoTipMargin))+"px"; -infoTip.style.bottom="auto" -}else{infoTip.style.top=(y+infoTipMargin)+"px"; -infoTip.style.bottom="auto" -}if(FBTrace.DBG_INFOTIP){FBTrace.sysout("infotip.showInfoTip; top: "+infoTip.style.top+", left: "+infoTip.style.left+", bottom: "+infoTip.style.bottom+", right:"+infoTip.style.right+", offsetHeight: "+infoTip.offsetHeight+", offsetWidth: "+infoTip.offsetWidth+", x: "+x+", panelWidth: "+panelWidth+", y: "+y+", panelHeight: "+panelHeight) -}infoTip.setAttribute("active","true") -}else{this.hideInfoTip(infoTip) -}},hideInfoTip:function(infoTip){if(infoTip){infoTip.removeAttribute("active") -}},onMouseOut:function(event,browser){if(!event.relatedTarget){this.hideInfoTip(browser.infoTip) -}},onMouseMove:function(event,browser){if(getAncestorByClass(event.target,"infoTip")){return -}if(browser.currentPanel){var x=event.clientX,y=event.clientY,target=event.target||event.srcElement; -this.showInfoTip(browser.infoTip,browser.currentPanel,target,x,y,event.rangeParent,event.rangeOffset) -}else{this.hideInfoTip(browser.infoTip) -}},populateColorInfoTip:function(infoTip,color){this.tags.colorTag.replace({rgbValue:color},infoTip); -return true -},populateImageInfoTip:function(infoTip,url,repeat){if(!repeat){repeat="no-repeat" -}this.tags.imgTag.replace({urlValue:url,repeat:repeat},infoTip); -return true -},disable:function(){},showPanel:function(browser,panel){if(panel){var infoTip=panel.panelBrowser.infoTip; -if(!infoTip){infoTip=this.initializeBrowser(panel.panelBrowser) -}this.hideInfoTip(infoTip) -}},showSidePanel:function(browser,panel){this.showPanel(browser,panel) -}}); -Firebug.registerModule(Firebug.InfoTip) -}}); -(function(){this.getElementXPath=function(element){if(element&&element.id){return'//*[@id="'+element.id+'"]' -}else{return this.getElementTreeXPath(element) -}}; -this.getElementTreeXPath=function(element){var paths=[]; -for(; -element&&element.nodeType==1; -element=element.parentNode){var index=0; -for(var sibling=element.previousSibling; -sibling; -sibling=sibling.previousSibling){if(sibling.nodeName==element.nodeName){++index -}}var tagName=element.nodeName.toLowerCase(); -var pathIndex=(index?"["+(index+1)+"]":""); -paths.splice(0,0,tagName+pathIndex) -}return paths.length?"/"+paths.join("/"):null -}; -this.getElementsByXPath=function(doc,xpath){var nodes=[]; -try{var result=doc.evaluate(xpath,doc,null,XPathResult.ANY_TYPE,null); -for(var item=result.iterateNext(); -item; -item=result.iterateNext()){nodes.push(item) -}}catch(exc){}return nodes -}; -this.getRuleMatchingElements=function(rule,doc){var css=rule.selectorText; -var xpath=this.cssToXPath(css); -return this.getElementsByXPath(doc,xpath) -} -}).call(FBL); -FBL.ns(function(){with(FBL){var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn) -}; -var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase() -}; -var reCamelCase=/([A-Z])/g; -var reSelectorCase=/\-(.)/g; -var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase() -}; -var ElementCache=Firebug.Lite.Cache.Element; -var StyleSheetCache=Firebug.Lite.Cache.StyleSheet; -var globalCSSRuleIndex; -var externalStyleSheetURLs=[]; -var externalStyleSheetWarning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",style:"font-weight:normal;",role:"listitem"},SPAN("$object|STR"),A({href:"$href",target:"_blank"},"$link|STR"))}); -var processAllStyleSheetsTimeout=null; -var loadExternalStylesheet=function(doc,styleSheetIterator,styleSheet){var url=styleSheet.href; -styleSheet.firebugIgnore=true; -var source=Firebug.Lite.Proxy.load(url); -source=source.replace(/url\(([^\)]+)\)/g,function(a,name){var hasDomain=/\w+:\/\/./.test(name); -if(!hasDomain){name=name.replace(/^(["'])(.+)\1$/,"$2"); -var first=name.charAt(0); -if(first=="/"){var m=/^([^:]+:\/{1,3}[^\/]+)/.exec(url); -return m?"url("+m[1]+name+")":"url("+name+")" -}else{var path=url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g,""); -path=path+name; -var reBack=/[^\/]+\/\.\.\//; -while(reBack.test(path)){path=path.replace(reBack,"") -}return"url("+path+")" -}}return a -}); -var oldStyle=styleSheet.ownerNode; -if(!oldStyle){return -}if(!oldStyle.parentNode){return -}var style=createGlobalElement("style"); -style.setAttribute("charset","utf-8"); -style.setAttribute("type","text/css"); -style.innerHTML=source; -oldStyle.parentNode.insertBefore(style,oldStyle.nextSibling); -oldStyle.parentNode.removeChild(oldStyle); -doc.styleSheets[doc.styleSheets.length-1].externalURL=url; -console.log(url,"call "+externalStyleSheetURLs.length,source); -externalStyleSheetURLs.pop(); -if(processAllStyleSheetsTimeout){clearTimeout(processAllStyleSheetsTimeout) -}processAllStyleSheetsTimeout=setTimeout(function(){console.log("processing"); -FBL.processAllStyleSheets(doc,styleSheetIterator); -processAllStyleSheetsTimeout=null -},200) -}; -FBL.processAllStyleSheets=function(doc,styleSheetIterator){styleSheetIterator=styleSheetIterator||processStyleSheet; -globalCSSRuleIndex=-1; -var styleSheets=doc.styleSheets; -var importedStyleSheets=[]; -if(FBTrace.DBG_CSS){var start=new Date().getTime() -}for(var i=0,length=styleSheets.length; -imaxSpecificity){maxSpecificity=spec; -mostSpecificSelector=sel -}}}rule.specificity=maxSpecificity -}}rules.sort(sortElementRules); -return rules -}; -var sortElementRules=function(a,b){var ruleA=CSSRuleMap[a]; -var ruleB=CSSRuleMap[b]; -var specificityA=ruleA.specificity; -var specificityB=ruleB.specificity; -if(specificityA>specificityB){return 1 -}else{if(specificityAruleB.order?1:-1 -}}}; -var solveRulesTied=function(a,b){var ruleA=CSSRuleMap[a]; -var ruleB=CSSRuleMap[b]; -if(ruleA.specificity==ruleB.specificity){return ruleA.order>ruleB.order?1:-1 -}return null -}; -var reSelectorTag=/(^|\s)(?:\w+)/g; -var reSelectorClass=/\.[\w\d_-]+/g; -var reSelectorId=/#[\w\d_-]+/g; -var getCSSRuleSpecificity=function(selector){var match=selector.match(reSelectorTag); -var tagCount=match?match.length:0; -match=selector.match(reSelectorClass); -var classCount=match?match.length:0; -match=selector.match(reSelectorId); -var idCount=match?match.length:0; -return tagCount+10*classCount+100*idCount -}; -Firebug.SourceBoxPanel=Firebug.Panel; -var domUtils=null; -var textContent=isIE?"innerText":"textContent"; -var CSSDomplateBase={isEditable:function(rule){return !rule.isSystemSheet -},isSelectorEditable:function(rule){return rule.isSelectorEditable&&this.isEditable(rule) -}}; -var CSSPropTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssProp focusRow",$disabledStyle:"$prop.disabled",$editGroup:"$rule|isEditable",$cssOverridden:"$prop.overridden",role:"option"},A({"class":"cssPropDisable"},"  "),SPAN({"class":"cssPropName",$editable:"$rule|isEditable"},"$prop.name"),SPAN({"class":"cssColon"},":"),SPAN({"class":"cssPropValue",$editable:"$rule|isEditable"},"$prop.value$prop.important"),SPAN({"class":"cssSemi"},";"))}); -var CSSRuleTag=TAG("$rule.tag",{rule:"$rule"}); -var CSSImportRuleTag=domplate({tag:DIV({"class":"cssRule insertInto focusRow importRule",_repObject:"$rule.rule"},"@import "",A({"class":"objectLink",_repObject:"$rule.rule.styleSheet"},"$rule.rule.href"),"";")}); -var CSSStyleRuleTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssRule insertInto",$cssEditableRule:"$rule|isEditable",$editGroup:"$rule|isSelectorEditable",_repObject:"$rule.rule",ruleId:"$rule.id",role:"presentation"},DIV({"class":"cssHead focusRow",role:"listitem"},SPAN({"class":"cssSelector",$editable:"$rule|isSelectorEditable"},"$rule.selector")," {"),DIV({role:"group"},DIV({"class":"cssPropertyListBox",role:"listbox"},FOR("prop","$rule.props",TAG(CSSPropTag.tag,{rule:"$rule",prop:"$prop"})))),DIV({"class":"editable insertBefore",role:"presentation"},"}"))}); -var reSplitCSS=/(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; -var reURL=/url\("?([^"\)]+)?"?\)/; -var reRepeat=/no-repeat|repeat-x|repeat-y|repeat/; -var sothinkInstalled=false; -var styleGroups={text:["font-family","font-size","font-weight","font-style","color","text-transform","text-decoration","letter-spacing","word-spacing","line-height","text-align","vertical-align","direction","column-count","column-gap","column-width"],background:["background-color","background-image","background-repeat","background-position","background-attachment","opacity"],box:["width","height","top","right","bottom","left","margin-top","margin-right","margin-bottom","margin-left","padding-top","padding-right","padding-bottom","padding-left","border-top-width","border-right-width","border-bottom-width","border-left-width","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","-moz-border-top-radius","-moz-border-right-radius","-moz-border-bottom-radius","-moz-border-left-radius","outline-top-width","outline-right-width","outline-bottom-width","outline-left-width","outline-top-color","outline-right-color","outline-bottom-color","outline-left-color","outline-top-style","outline-right-style","outline-bottom-style","outline-left-style"],layout:["position","display","visibility","z-index","overflow-x","overflow-y","overflow-clip","white-space","clip","float","clear","-moz-box-sizing"],other:["cursor","list-style-image","list-style-position","list-style-type","marker-offset","user-focus","user-select","user-modify","user-input"]}; -var styleGroupTitles={text:"Text",background:"Background",box:"Box Model",layout:"Layout",other:"Other"}; -Firebug.CSSModule=extend(Firebug.Module,{freeEdit:function(styleSheet,value){if(!styleSheet.editStyleSheet){var ownerNode=getStyleSheetOwnerNode(styleSheet); -styleSheet.disabled=true; -var url=CCSV("@mozilla.org/network/standard-url;1",Components.interfaces.nsIURL); -url.spec=styleSheet.href; -var editStyleSheet=ownerNode.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","style"); -unwrapObject(editStyleSheet).firebugIgnore=true; -editStyleSheet.setAttribute("type","text/css"); -editStyleSheet.setAttributeNS("http://www.w3.org/XML/1998/namespace","base",url.directory); -if(ownerNode.hasAttribute("media")){editStyleSheet.setAttribute("media",ownerNode.getAttribute("media")) -}ownerNode.parentNode.insertBefore(editStyleSheet,ownerNode.nextSibling); -styleSheet.editStyleSheet=editStyleSheet -}styleSheet.editStyleSheet.innerHTML=value; -if(FBTrace.DBG_CSS){FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n") -}dispatch(this.fbListeners,"onCSSFreeEdit",[styleSheet,value]) -},insertRule:function(styleSheet,cssText,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("Insert: "+ruleIndex+" "+cssText) -}var insertIndex=styleSheet.insertRule(cssText,ruleIndex); -dispatch(this.fbListeners,"onCSSInsertRule",[styleSheet,cssText,ruleIndex]); -return insertIndex -},deleteRule:function(styleSheet,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("deleteRule: "+ruleIndex+" "+styleSheet.cssRules.length,styleSheet.cssRules) -}dispatch(this.fbListeners,"onCSSDeleteRule",[styleSheet,ruleIndex]); -styleSheet.deleteRule(ruleIndex) -},setProperty:function(rule,propName,propValue,propPriority){var style=rule.style||rule; -var baseText=style.cssText; -if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName); -var prevPriority=style.getPropertyPriority(propName); -style.removeProperty(propName); -style.setProperty(propName,propValue,propPriority) -}else{style[toCamelCase(propName)]=propValue -}if(propName){dispatch(this.fbListeners,"onCSSSetProperty",[style,propName,propValue,propPriority,prevValue,prevPriority,rule,baseText]) -}},removeProperty:function(rule,propName,parent){var style=rule.style||rule; -var baseText=style.cssText; -if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName); -var prevPriority=style.getPropertyPriority(propName); -style.removeProperty(propName) -}else{style[toCamelCase(propName)]="" -}if(propName){dispatch(this.fbListeners,"onCSSRemoveProperty",[style,propName,prevValue,prevPriority,rule,baseText]) -}}}); -Firebug.CSSStyleSheetPanel=function(){}; -Firebug.CSSStyleSheetPanel.prototype=extend(Firebug.SourceBoxPanel,{template:domplate({tag:DIV({"class":"cssSheet insertInto a11yCSSView"},FOR("rule","$rules",CSSRuleTag),DIV({"class":"cssSheet editable insertBefore"},""))}),refresh:function(){if(this.location){this.updateLocation(this.location) -}else{if(this.selection){this.updateSelection(this.selection) -}}},toggleEditing:function(){if(!this.stylesheetEditor){this.stylesheetEditor=new StyleSheetEditor(this.document) -}if(this.editing){Firebug.Editor.stopEditing() -}else{if(!this.location){return -}var styleSheet=this.location.editStyleSheet?this.location.editStyleSheet.sheet:this.location; -var css=getStyleSheetCSS(styleSheet,this.context); -this.stylesheetEditor.styleSheet=this.location; -Firebug.Editor.startEditing(this.panelNode,css,this.stylesheetEditor) -}},getStylesheetURL:function(rule){if(this.location.href){return this.location.href -}else{return this.context.window.location.href -}},getRuleByLine:function(styleSheet,line){if(!domUtils){return null -}var cssRules=styleSheet.cssRules; -for(var i=0; -i=line){return rule -}}}},highlightRule:function(rule){var ruleElement=Firebug.getElementByRepObject(this.panelNode.firstChild,rule); -if(ruleElement){scrollIntoCenterView(ruleElement,this.panelNode); -setClassTimed(ruleElement,"jumpHighlight",this.context) -}},getStyleSheetRules:function(context,styleSheet){var isSystemSheet=isSystemStyleSheet(styleSheet); -function appendRules(cssRules){for(var i=0; -i20){return -}var target=event.target||event.srcElement; -if(hasClass(target,"textEditor")){return -}var row=getAncestorByClass(target,"cssProp"); -if(row&&hasClass(row,"editGroup")){this.disablePropertyRow(row); -cancelEvent(event) -}},onDoubleClick:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft; -if(!isLeftClick(event)||offset<=20){return -}var target=event.target||event.srcElement; -if(hasClass(target,"textEditorInner")){return -}var row=getAncestorByClass(target,"cssRule"); -if(row&&!getAncestorByClass(target,"cssPropName")&&!getAncestorByClass(target,"cssPropValue")){this.insertPropertyRow(row); -cancelEvent(event) -}},name:"stylesheet",title:"CSS",parentPanel:null,searchable:true,dependents:["css","stylesheet","dom","domSide","layout"],options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.onMouseDown=bind(this.onMouseDown,this); -this.onDoubleClick=bind(this.onDoubleClick,this); -if(this.name=="stylesheet"){this.onChangeSelect=bind(this.onChangeSelect,this); -var doc=Firebug.browser.document; -var selectNode=this.selectNode=createElement("select"); -processAllStyleSheets(doc,function(doc,styleSheet){var key=StyleSheetCache.key(styleSheet); -var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href); -var option=createElement("option",{value:key}); -option.appendChild(Firebug.chrome.document.createTextNode(fileName)); -selectNode.appendChild(option) -}); -this.toolButtonsNode.appendChild(selectNode) -}},onChangeSelect:function(event){event=event||window.event; -var target=event.srcElement||event.currentTarget; -var key=target.value; -var styleSheet=StyleSheetCache.get(key); -this.updateLocation(styleSheet) -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -this.context=Firebug.chrome; -this.document=Firebug.chrome.document; -this.initializeNode(); -if(this.name=="stylesheet"){var styleSheets=Firebug.browser.document.styleSheets; -if(styleSheets.length>0){addEvent(this.selectNode,"change",this.onChangeSelect); -this.updateLocation(styleSheets[0]) -}}},shutdown:function(){Firebug.Editor.stopEditing(); -if(this.name=="stylesheet"){removeEvent(this.selectNode,"change",this.onChangeSelect) -}this.destroyNode(); -Firebug.Panel.shutdown.apply(this,arguments) -},destroy:function(state){Firebug.Panel.destroy.apply(this,arguments) -},initializeNode:function(oldPanelNode){addEvent(this.panelNode,"mousedown",this.onMouseDown); -addEvent(this.panelNode,"dblclick",this.onDoubleClick) -},destroyNode:function(){removeEvent(this.panelNode,"mousedown",this.onMouseDown); -removeEvent(this.panelNode,"dblclick",this.onDoubleClick) -},ishow:function(state){Firebug.Inspector.stopInspecting(true); -this.showToolbarButtons("fbCSSButtons",true); -if(this.context.loaded&&!this.location){restoreObjects(this,state); -if(!this.location){this.location=this.getDefaultLocation() -}if(state&&state.scrollTop){this.panelNode.scrollTop=state.scrollTop -}}},ihide:function(){this.showToolbarButtons("fbCSSButtons",false); -this.lastScrollTop=this.panelNode.scrollTop -},supportsObject:function(object){if(object instanceof CSSStyleSheet){return 1 -}else{if(object instanceof CSSStyleRule){return 2 -}else{if(object instanceof CSSStyleDeclaration){return 2 -}else{if(object instanceof SourceLink&&object.type=="css"&&reCSS.test(object.href)){return 2 -}else{return 0 -}}}}},updateLocation:function(styleSheet){if(!styleSheet){return -}if(styleSheet.editStyleSheet){styleSheet=styleSheet.editStyleSheet.sheet -}if(styleSheet.restricted){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},this.panelNode); -externalStyleSheetWarning.tag.append({object:"The stylesheet could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"},this.panelNode); -return -}var rules=this.getStyleSheetRules(this.context,styleSheet); -var result; -if(rules.length){result=this.template.tag.replace({rules:rules},this.panelNode) -}else{result=FirebugReps.Warning.tag.replace({object:"EmptyStyleSheet"},this.panelNode) -}},updateSelection:function(object){this.selection=null; -if(object instanceof CSSStyleDeclaration){object=object.parentRule -}if(object instanceof CSSStyleRule){this.navigate(object.parentStyleSheet); -this.highlightRule(object) -}else{if(object instanceof CSSStyleSheet){this.navigate(object) -}else{if(object instanceof SourceLink){try{var sourceLink=object; -var sourceFile=getSourceFileByHref(sourceLink.href,this.context); -if(sourceFile){clearNode(this.panelNode); -this.showSourceFile(sourceFile); -var lineNo=object.line; -if(lineNo){this.scrollToLine(lineNo,this.jumpHighlightFactory(lineNo,this.context)) -}}else{var stylesheet=getStyleSheetByHref(sourceLink.href,this.context); -if(stylesheet){this.navigate(stylesheet) -}else{if(FBTrace.DBG_CSS){FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href,sourceLink) -}}}}catch(exc){if(FBTrace.DBG_CSS){FBTrace.sysout("css.upDateSelection FAILS "+exc,exc) -}}}}}},updateOption:function(name,value){if(name=="expandShorthandProps"){this.refresh() -}},getLocationList:function(){var styleSheets=getAllStyleSheets(this.context); -return styleSheets -},getOptionsMenuItems:function(){return[{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")},"-",{label:"Refresh",command:bind(this.refresh,this)}] -},getContextMenuItems:function(style,target){var items=[]; -if(this.infoTipType=="color"){items.push({label:"CopyColor",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)}) -}else{if(this.infoTipType=="image"){items.push({label:"CopyImageLocation",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)},{label:"OpenImageInNewTab",command:bindFixed(openNewTab,FBL,this.infoTipObject)}) -}}if(isElement(this.selection)){items.push({label:"EditStyle",command:bindFixed(this.editElementStyle,this)}) -}else{if(!isSystemStyleSheet(this.selection)){items.push({label:"NewRule",command:bindFixed(this.insertRule,this,target)}) -}}var cssRule=getAncestorByClass(target,"cssRule"); -if(cssRule&&hasClass(cssRule,"cssEditableRule")){items.push("-",{label:"NewProp",command:bindFixed(this.insertPropertyRow,this,target)}); -var propRow=getAncestorByClass(target,"cssProp"); -if(propRow){var propName=getChildByClass(propRow,"cssPropName")[textContent]; -var isDisabled=hasClass(propRow,"disabledStyle"); -items.push({label:$STRF("EditProp",[propName]),nol10n:true,command:bindFixed(this.editPropertyRow,this,propRow)},{label:$STRF("DeleteProp",[propName]),nol10n:true,command:bindFixed(this.deletePropertyRow,this,propRow)},{label:$STRF("DisableProp",[propName]),nol10n:true,type:"checkbox",checked:isDisabled,command:bindFixed(this.disablePropertyRow,this,propRow)}) -}}items.push("-",{label:"Refresh",command:bind(this.refresh,this)}); -return items -},browseObject:function(object){if(this.infoTipType=="image"){openNewTab(this.infoTipObject); -return true -}},showInfoTip:function(infoTip,target,x,y){var propValue=getAncestorByClass(target,"cssPropValue"); -if(propValue){var offset=getClientOffset(propValue); -var offsetX=x-offset.x; -var text=propValue[textContent]; -var charWidth=propValue.offsetWidth/text.length; -var charOffset=Math.floor(offsetX/charWidth); -var cssValue=parseCSSValue(text,charOffset); -if(cssValue){if(cssValue.value==this.infoTipValue){return true -}this.infoTipValue=cssValue.value; -if(cssValue.type=="rgb"||(!cssValue.type&&isColorKeyword(cssValue.value))){this.infoTipType="color"; -this.infoTipObject=cssValue.value; -return Firebug.InfoTip.populateColorInfoTip(infoTip,cssValue.value) -}else{if(cssValue.type=="url"){var propNameNode=getElementByClass(target.parentNode,"cssPropName"); -if(propNameNode&&isImageRule(propNameNode[textContent])){var rule=Firebug.getRepObject(target); -var baseURL=this.getStylesheetURL(rule); -var relURL=parseURLValue(cssValue.value); -var absURL=isDataURL(relURL)?relURL:absoluteURL(relURL,baseURL); -var repeat=parseRepeatValue(text); -this.infoTipType="image"; -this.infoTipObject=absURL; -return Firebug.InfoTip.populateImageInfoTip(infoTip,absURL,repeat) -}}}}}delete this.infoTipType; -delete this.infoTipValue; -delete this.infoTipObject -},getEditor:function(target,value){if(target==this.panelNode||hasClass(target,"cssSelector")||hasClass(target,"cssRule")||hasClass(target,"cssSheet")){if(!this.ruleEditor){this.ruleEditor=new CSSRuleEditor(this.document) -}return this.ruleEditor -}else{if(!this.editor){this.editor=new CSSEditor(this.document) -}return this.editor -}},getDefaultLocation:function(){try{var styleSheets=this.context.window.document.styleSheets; -if(styleSheets.length){var sheet=styleSheets[0]; -return(Firebug.filterSystemURLs&&isSystemURL(getURLForStyleSheet(sheet)))?null:sheet -}}catch(exc){if(FBTrace.DBG_LOCATIONS){FBTrace.sysout("css.getDefaultLocation FAILS "+exc,exc) -}}},getObjectDescription:function(styleSheet){var url=getURLForStyleSheet(styleSheet); -var instance=getInstanceForStyleSheet(styleSheet); -var baseDescription=splitURLBase(url); -if(instance){baseDescription.name=baseDescription.name+" #"+(instance+1) -}return baseDescription -},search:function(text,reverse){var curDoc=this.searchCurrentDoc(!Firebug.searchGlobal,text,reverse); -if(!curDoc&&Firebug.searchGlobal){return this.searchOtherDocs(text,reverse) -}return curDoc -},searchOtherDocs:function(text,reverse){var scanRE=Firebug.Search.getTestingRegex(text); -function scanDoc(styleSheet){for(var i=0; -i0){externalStyleSheetWarning.tag.append({object:"The results here may be inaccurate because some stylesheets could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"},this.panelNode) -}},getStylesheetURL:function(rule){if(rule&&rule.parentStyleSheet&&rule.parentStyleSheet.href){return rule.parentStyleSheet.href -}else{return this.selection.ownerDocument.location.href -}},getInheritedRules:function(element,sections,usedProps){var parent=element.parentNode; -if(parent&&parent.nodeType==1){this.getInheritedRules(parent,sections,usedProps); -var rules=[]; -this.getElementRules(parent,rules,usedProps,true); -if(rules.length){sections.splice(0,0,{element:parent,rules:rules}) -}}},getElementRules:function(element,rules,usedProps,inheritMode){var inspectedRules,displayedRules={}; -inspectedRules=getElementCSSRules(element); -if(inspectedRules){for(var i=0,length=inspectedRules.length; -i"+value+" = "+propValue+"\n") -}if(previousValue){Firebug.CSSModule.removeProperty(rule,previousValue) -}Firebug.CSSModule.setProperty(rule,value,parsedValue.value,parsedValue.priority) -}}else{if(!value){Firebug.CSSModule.removeProperty(rule,previousValue) -}}}else{if(getAncestorByClass(target,"cssPropValue")){var propName=getChildByClass(row,"cssPropName")[textContent]; -var propValue=getChildByClass(row,"cssPropValue")[textContent]; -if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName+" = "+propValue+"\n") -}if(value&&value!="null"){var parsedValue=parsePriority(value); -Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority) -}else{if(previousValue&&previousValue!="null"){Firebug.CSSModule.removeProperty(rule,propName) -}}}}this.panel.markChange(this.panel.name=="stylesheet") -},advanceToNext:function(target,charCode){if(charCode==58&&hasClass(target,"cssPropName")){return true -}},getAutoCompleteRange:function(value,offset){if(hasClass(this.target,"cssPropName")){return{start:0,end:value.length-1} -}else{return parseCSSValue(value,offset) -}},getAutoCompleteList:function(preExpr,expr,postExpr){if(hasClass(this.target,"cssPropName")){return getCSSPropertyNames() -}else{var row=getAncestorByClass(this.target,"cssProp"); -var propName=getChildByClass(row,"cssPropName")[textContent]; -return getCSSKeywordsByProperty(propName) -}}}); -function CSSRuleEditor(doc){this.initializeInline(doc); -this.completeAsYouType=false -}CSSRuleEditor.uniquifier=0; -CSSRuleEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var emptyRule={selector:"",id:"",props:[],isSelectorEditable:true}; -if(insertWhere=="before"){return CSSStyleRuleTag.tag.insertBefore({rule:emptyRule},target) -}else{return CSSStyleRuleTag.tag.insertAfter({rule:emptyRule},target) -}},saveEdit:function(target,value,previousValue){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSRuleEditor.saveEdit: '"+value+"' '"+previousValue+"'",target) -}target.innerHTML=escapeForCss(value); -if(value===previousValue){return -}var row=getAncestorByClass(target,"cssRule"); -var styleSheet=this.panel.location; -styleSheet=styleSheet.editStyleSheet?styleSheet.editStyleSheet.sheet:styleSheet; -var cssRules=styleSheet.cssRules; -var rule=Firebug.getRepObject(target),oldRule=rule; -var ruleIndex=cssRules.length; -if(rule||Firebug.getRepObject(row.nextSibling)){var searchRule=rule||Firebug.getRepObject(row.nextSibling); -for(ruleIndex=0; -ruleIndexb.name?1:-1 -}) -}function getTopmostRuleLine(panelNode){for(var child=panelNode.firstChild; -child; -child=child.nextSibling){if(child.offsetTop+child.offsetHeight>panelNode.scrollTop){var rule=child.repObject; -if(rule){return{line:domUtils.getRuleLine(rule),offset:panelNode.scrollTop-child.offsetTop} -}}}return 0 -}function getStyleSheetCSS(sheet,context){if(sheet.ownerNode instanceof HTMLStyleElement){return sheet.ownerNode.innerHTML -}else{return context.sourceCache.load(sheet.href).join("") -}}function getStyleSheetOwnerNode(sheet){for(; -sheet&&!sheet.ownerNode; -sheet=sheet.parentStyleSheet){}return sheet.ownerNode -}function scrollSelectionIntoView(panel){var selCon=getSelectionController(panel); -selCon.scrollSelectionIntoView(nsISelectionController.SELECTION_NORMAL,nsISelectionController.SELECTION_FOCUS_REGION,true) -}function getSelectionController(panel){var browser=Firebug.chrome.getPanelBrowser(panel); -return browser.docShell.QueryInterface(nsIInterfaceRequestor).getInterface(nsISelectionDisplay).QueryInterface(nsISelectionController) -}Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel) -}}); -FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null -},selectSourceCode:function(index){this.getPanel().selectSourceCode(index) -}}); -Firebug.registerModule(Firebug.Script); -function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",selectIndex:0,sourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.onChangeSelect=bind(this.onChangeSelect,this); -var doc=Firebug.browser.document; -var scripts=doc.getElementsByTagName("script"); -var selectNode=this.selectNode=createElement("select"); -for(var i=0,script; -script=scripts[i]; -i++){if(Firebug.ignoreFirebugElements&&script.getAttribute("firebugIgnore")){continue -}var fileName=getFileName(script.src)||getFileName(doc.location.href); -var option=createElement("option",{value:i}); -option.appendChild(Firebug.chrome.document.createTextNode(fileName)); -selectNode.appendChild(option) -}this.toolButtonsNode.appendChild(selectNode) -},initialize:function(){this.selectSourceCode(this.selectIndex); -Firebug.Panel.initialize.apply(this,arguments); -addEvent(this.selectNode,"change",this.onChangeSelect) -},shutdown:function(){removeEvent(this.selectNode,"change",this.onChangeSelect); -Firebug.Panel.shutdown.apply(this,arguments) -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments); -var oldPanel=oldChrome.getPanel("Script"); -var index=oldPanel.selectIndex; -this.selectNode.selectedIndex=index; -this.selectIndex=index; -this.sourceIndex=-1 -},onChangeSelect:function(event){var select=this.selectNode; -this.selectIndex=select.selectedIndex; -var option=select.options[select.selectedIndex]; -if(!option){return -}var selectedSourceIndex=parseInt(option.value); -this.renderSourceCode(selectedSourceIndex) -},selectSourceCode:function(index){var select=this.selectNode; -select.selectedIndex=index; -var option=select.options[index]; -if(!option){return -}var selectedSourceIndex=parseInt(option.value); -this.renderSourceCode(selectedSourceIndex) -},renderSourceCode:function(index){if(this.sourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0; -src=isIE&&!isExternal?src+"\n":"\n"+src; -src=src.replace(/\n\r|\r\n/g,"\n"); -var match=src.match(/[\n]/g); -var lines=match?match.length:0; -html[hl++]='
0){path=reLastDir.exec(path)[1] -}path+=backDir[2] -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2) -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path); -path=domain[1]+src -}else{path+=src -}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null; -if(path&&m){return path+fileName -}}; -var getFileName=function getFileName(path){if(!path){return"" -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/); -return match&&match[0]||path -} -}}); -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; -var insertSliceSize=18; -var insertInterval=40; -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1}; -if(Firebug.ignoreFirebugElements){ignoreVars[Firebug.Lite.Cache.ID]=1 -}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"}; -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"}))); -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch")))); -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"})); -var domTableClass=isIElt8?"domTable domTableIE":"domTable"; -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level) -},onClick:function(event){if(!isLeftClick(event)){return -}var target=event.target||event.srcElement; -var row=getAncestorByClass(target,"memberRow"); -var label=getAncestorByClass(target,"memberLabel"); -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode; -this.toggleRow(row) -}else{var object=Firebug.getRepObject(target); -if(typeof(object)=="function"){Firebug.chrome.select(object,"script"); -cancelEvent(event) -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel; -if(panel){var rowValue=panel.getRowPropertyValue(row); -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue) -}else{panel.editProperty(row) -}cancelEvent(event) -}}}}return false -},toggleRow:function(row){var level=parseInt(row.getAttribute("level")); -var toggles=row.parentNode.parentNode.toggles; -if(hasClass(row,"opened")){removeClass(row,"opened"); -if(toggles){var path=getPath(row); -for(var i=0; -i=priorScrollTop){panelNode.scrollTop=priorScrollTop -}},delay)); -delay+=insertInterval -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild) -}else{panelNode.appendChild(table) -}panelNode.scrollTop=priorScrollTop -},delay)) -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop -},delay)) -}this.timeouts=timeouts -},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode) -},findPathObject:function(object){var pathIndex=-1; -for(var i=0; -i1){for(var i=1; -i"); -r.push(i==0?"window":path[i]||"Object"); -r.push(""); -if(i>') -}}panel.statusBarNode.innerHTML=r.join("") -}; -var DOMMainPanel=Firebug.DOMPanel=function(){}; -Firebug.DOMPanel.DirTable=DirTablePlate; -DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target; -var element=getAncestorByClass(target,"fbHover"); -if(element){var pathIndex=element.getAttribute("pathIndex"); -if(pathIndex){this.select(this.getPathObject(pathIndex)) -}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild -}if(!target||!target.repObject){return -}this.pathToAppend=getPath(row); -var valueBox=row.lastChild.firstChild; -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); -this.pathToAppend.push(arrayIndex) -}this.select(target.repObject,true) -},onClick:function(event){var target=event.srcElement||event.target; -var repNode=Firebug.getRepNode(target); -if(repNode){var row=getAncestorByClass(target,"memberRow"); -if(row){this.selectRow(row,repNode); -cancelEvent(event) -}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); -this.onClick=bind(this.onClick,this); -this.onClickStatusBar=bind(this.onClickStatusBar,this); -this.panelNode.style.padding="0 1px" -},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",this.onClick); -this.ishow(); -addEvent(this.statusBarNode,"click",this.onClickStatusBar) -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) -}}); -Firebug.registerPanel(DOMMainPanel); -var getMembers=function getMembers(object,level){if(!level){level=0 -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[]; -try{var domMembers=getDOMMembers(object); -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject -}else{var insecureObject=object -}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level) -}for(var name in insecureObject){if(ignoreVars[name]==1){continue -}var val; -try{val=insecureObject[name] -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc) -}}var ordinal=parseInt(name); -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level) -}else{if(isFunction(val)){if(isClassFunction(val)&&!(name in domMembers)){addMember("userClass",userClasses,name,val,level) -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name]) -}else{addMember("userFunction",userFuncs,name,val,level) -}}}else{var prefix=""; -if(name in domMembers&&!(name in domConstantMap)){addMember("dom",domProps,(prefix+name),val,level,domMembers[name]) -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level) -}else{addMember("user",userProps,(prefix+name),val,level) -}}}}}}catch(exc){throw exc; -if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc) -}}function sortName(a,b){return a.name>b.name?1:-1 -}function sortOrder(a,b){return a.order>b.order?1:-1 -}var members=[]; -members.push.apply(members,ordinals); -Firebug.showUserProps=true; -Firebug.showUserFuncs=true; -Firebug.showDOMProps=true; -Firebug.showDOMFuncs=true; -Firebug.showDOMConstants=true; -if(Firebug.showUserProps){userProps.sort(sortName); -members.push.apply(members,userProps) -}if(Firebug.showUserFuncs){userClasses.sort(sortName); -members.push.apply(members,userClasses); -userFuncs.sort(sortName); -members.push.apply(members,userFuncs) -}if(Firebug.showDOMProps){domProps.sort(sortName); -members.push.apply(members,domProps) -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName); -members.push.apply(members,domFuncs) -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants) -}return members -}; -function expandMembers(members,toggles,offset,level){var expanded=0; -for(var i=offset; -ilevel){break -}if(toggles.hasOwnProperty(member.name)){member.open="opened"; -var newMembers=getMembers(member.value,level+1); -var args=[i+1,0]; -args.push.apply(args,newMembers); -members.splice.apply(members,args); -expanded+=newMembers.length; -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1) -}}return expanded -}function isClassFunction(fn){try{for(var name in fn.prototype){return true -}}catch(exc){}return false -}var hasProperties=function hasProperties(ob){try{for(var name in ob){return true -}}catch(exc){}if(isFunction(ob)){return true -}return false -}; -FBL.ErrorCopy=function(message){this.message=message -}; -var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value); -var tag=rep.shortTag?rep.shortTag:rep.tag; -var ErrorCopy=function(){}; -var valueType=typeof(value); -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength)); -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag}) -}; -var getWatchRowIndex=function getWatchRowIndex(row){var index=-1; -for(; -row&&hasClass(row,"watchRow"); -row=row.previousSibling){++index -}return index -}; -var getRowName=function getRowName(row){var node=row.firstChild; -return node.textContent?node.textContent:node.innerText -}; -var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject -}; -var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row); -if(parentRow){return getRowValue(parentRow) -}}; -var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1; -for(row=row.previousSibling; -row; -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row -}}}; -var getPath=function getPath(row){var name=getRowName(row); -var path=[name]; -var level=parseInt(row.getAttribute("level"))-1; -for(row=row.previousSibling; -row; -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row); -path.splice(0,0,name); ---level -}}return path -}; -Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null -}}); -Firebug.registerModule(Firebug.DOM); -var lastHighlightedObject; -function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild -}if(!target||!target.repObject){return -}this.pathToAppend=getPath(row); -var valueBox=row.lastChild.firstChild; -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); -this.pathToAppend.push(arrayIndex) -}var object=target.repObject; -if(instanceOf(object,"Element")){Firebug.HTML.selectTreeNode(ElementCache(object)) -}else{Firebug.chrome.selectPanel("DOM"); -Firebug.chrome.getPanel("DOM").select(object,true) -}},onClick:function(event){var target=event.srcElement||event.target; -var repNode=Firebug.getRepNode(target); -if(repNode){var row=getAncestorByClass(target,"memberRow"); -if(row){this.selectRow(row,repNode); -cancelEvent(event) -}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); -this.onClick=bind(this.onClick,this) -},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",this.onClick); -var selection=ElementCache.get(FirebugChrome.selectedHTMLElementId); -if(selection){this.select(selection,true) -}},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) -},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles -}}); -Firebug.registerPanel(DOMSidePanel) -}}); -FBL.FBTrace={}; -(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1,DBG_CSS:1}; -this.module=null; -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[] -}for(var name in traceOptions){this[name]=traceOptions[name] -}}; -this.sysout=function(){return this.logFormatted(arguments,"") -}; -this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning") -}; -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning") -}; -this.flush=function(module){this.module=module; -var queue=this.messageQueue; -this.messageQueue=[]; -for(var i=0; -i"); -appendText(object,html); -html.push("") -}else{appendText(object,html) -}}return this.logRow(html,className) -}; -this.logRow=function(message,className){var panel=this.getPanel(); -if(panel&&panel.panelNode){this.writeMessage(message,className) -}else{this.messageQueue.push([message,className]) -}return this.LOG_COMMAND -}; -this.writeMessage=function(message,className){var container=this.getPanel().containerNode; -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight; -this.writeRow.call(this,message,className); -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight -}}; -this.appendRow=function(row){var container=this.getPanel().panelNode; -container.appendChild(row) -}; -this.writeRow=function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div"); -row.className="logRow"+(className?" logRow-"+className:""); -row.innerHTML=message.join(""); -this.appendRow(row) -}; -function appendText(object,html){html.push(escapeHTML(objectToString(object))) -}function getTimestamp(){var now=new Date(); -var ms=""+(now.getMilliseconds()/1000).toFixed(3); -ms=ms.substr(2); -return now.toLocaleTimeString()+"."+ms -}var HTMLtoEntity={"<":"<",">":">","&":"&","'":"'",'"':"""}; -function replaceChars(ch){return HTMLtoEntity[ch] -}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars) -}function objectToString(object){try{return object+"" -}catch(exc){return null -}}}).apply(FBL.FBTrace); -FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null -},clear:function(){this.getPanel().panelNode.innerHTML="" -}}); -Firebug.registerModule(Firebug.Trace); -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear}) -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -this.clearButton.initialize() -}}); -Firebug.registerPanel(TracePanel) -}}); -FBL.ns(function(){with(FBL){var modules=[]; -var panelTypes=[]; -var panelTypeMap={}; -var parentPanelMap={}; -var registerModule=Firebug.registerModule; -var registerPanel=Firebug.registerPanel; -append(Firebug,{extend:function(fn){if(Firebug.chrome&&Firebug.chrome.addPanel){var namespace=ns(fn); -fn.call(namespace,FBL) -}else{setTimeout(function(){Firebug.extend(fn) -},100) -}},registerModule:function(){registerModule.apply(Firebug,arguments); -modules.push.apply(modules,arguments); -dispatch(modules,"initialize",[]); -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule") -}},registerPanel:function(){registerPanel.apply(Firebug,arguments); -panelTypes.push.apply(panelTypes,arguments); -for(var i=0,panelType; -panelType=arguments[i]; -++i){if(panelType.prototype.name=="Dev"){continue -}panelTypeMap[panelType.prototype.name]=arguments[i]; -var parentPanelName=panelType.prototype.parentPanel; -if(parentPanelName){parentPanelMap[parentPanelName]=1 -}else{var panelName=panelType.prototype.name; -var chrome=Firebug.chrome; -chrome.addPanel(panelName); -var onTabClick=function onTabClick(){chrome.selectPanel(panelName); -return false -}; -chrome.addController([chrome.panelMap[panelName].tabNode,"mousedown",onTabClick]) -}}if(FBTrace.DBG_INITIALIZE){for(var i=0; -i .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) no-repeat !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'
 
 
>>>
2 errors'} -}}); -FBL.initialize() -})(); \ No newline at end of file diff --git a/branches/firebug1.3/content/firebug-lite-dev.js b/branches/firebug1.3/content/firebug-lite-dev.js deleted file mode 100644 index 034b0525..00000000 --- a/branches/firebug1.3/content/firebug-lite-dev.js +++ /dev/null @@ -1,742 +0,0 @@ -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -// TODO: plugin problem with Dev panel -// TODO: Dev panel doesn't work in persistent mode -// TODO: XHR listener breaks Firebug in Chrome when in persistent mode - -// Firebug Lite is already running in persistent mode so we just quit -// TODO: better detection -if (window.Firebug) - return; - -// ************************************************************************************************ - -var bookmarkletMode = true; - -var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/latest/skin/xp/"; // stable -//var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/beta/skin/xp/"; // beta -//var bookmarkletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/"; // developer -//var bookmarkletSkinURL = "chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/"; // chrome extension - -// ************************************************************************************************ - -//window.FBL = {}; // force exposure in IE global namespace -window.FBDev = -{ - // ******************************************************************************************** - modules: - [ - // **************************************************************************************** - // Application Core - - "firebug/lib.js", - - "firebug/i18n.js", - - "firebug/firebug.js", - - "firebug/gui.js", - "firebug/context.js", - "firebug/chrome.js", - "firebug/chromeSkin.js", - - - // **************************************************************************************** - // Lite - - "firebug/lite.js", // experimental - "firebug/lite/browser.js", // experimental - "firebug/lite/cache.js", // experimental - "firebug/lite/proxy.js", // experimental - "firebug/lite/script.js", // experimental - "firebug/lite/style.js", // experimental - - - // **************************************************************************************** - // Application Classes - - "firebug/selector.js", - - "firebug/domplate.js", - "firebug/reps.js", - - "firebug/editor.js", - "firebug/inspector.js", - - // **************************************************************************************** - // Console / CommandLine core - - "firebug/console.js", - "firebug/consoleInjector.js", - - "firebug/commandLine.js", - - // **************************************************************************************** - // XHR Watcher - - "firebug/xhr.js", - "firebug/net.js", - "firebug/spy.js", - - "firebug/jsonViewer.js", - "firebug/xmlViewer.js", - - // **************************************************************************************** - // Application Modules/Panels - - "firebug/html.js", - - "firebug/infotip.js", // experimental - - "firebug/css.js", - "firebug/script.js", - "firebug/dom.js", - - //"firebug/helloWorld.js", - - // **************************************************************************************** - // Trace Module/Panel - - "firebug/trace.js", - "firebug/tracePanel.js", - - // **************************************************************************************** - // Firediff - - /* - "firediff/content/firediff/versionCompat.js", - "firediff/content/firediff/diff.js", - "firediff/content/firediff/path.js", - "firediff/content/firediff/cssModel.js", - "firediff/content/firediff/events.js", - "firediff/content/firediff/domEvents.js", - "firediff/content/firediff/cssEvents.js", - "firediff/content/firediff/domplate.js", - "firediff/content/firediff/search.js", - "firediff/content/firediff/pages.js", - "firediff/content/firediff/diffModule.js", - "firediff/content/firediff/diffMonitor.js", - /**/ - - // **************************************************************************************** - // Plugin - - "firebug/plugin.js", // must be the last module loaded - - // **************************************************************************************** - // Bootstrap - "firebug/boot.js" - ], - // ******************************************************************************************** - - loadChromeApplication: function(chrome) - { - FBDev.buildSource(function(source){ - var doc = chrome.document; - var script = doc.createElement("script"); - doc.getElementsByTagName("head")[0].appendChild(script); - script.text = source; - }); - }, - - panelBuild: function() { - var panel = this.getPanel(); - panel.updateOutput("Building Source..."); - - setTimeout(function(){ - FBDev.buildFullSource(function(source){ - panel.updateOutput(source); - }); - },0); - }, - - panelBuildSkin: function() - { - var panel = this.getPanel(); - panel.updateOutput("Building Source..."); - - setTimeout(function(){ - FBDev.buildSkin(function(source){ - panel.updateOutput(source); - }); - },0); - }, - - build: function() { - var out = document.createElement("textarea"); - - FBDev.buildFullSource(function(source){ - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - //out.appendChild(document.createTextNode(source)); - - out.value = source; - document.body.appendChild(out); - }); - }, - - buildFullSource: function(callback) - { - var useClosure = true; - var source = []; - - // remove the boot.js from the list of modules to be included - // because it will be generated bellow - var modules = FBDev.modules.slice(0,FBDev.modules.length-1); - var last = modules.length-1; - - if (useClosure) - source.push("(function(){\n\n"); - - var htmlUrl = skinURL + "firebug.html", - cssUrl = skinURL + "firebug.css", - html, - css, - injected; - - FBL.Ajax.request({ - url: htmlUrl, - onComplete:function(r) - { - html = FBDev.compressHTML(r); - } - }); - - FBL.Ajax.request({ - url: cssUrl, - onComplete:function(r) - { - css = FBDev.compressCSS(r); - injected = - "\n\nFBL.ns(function() { with (FBL) {\n" + - "// ************************************************************************************************\n\n" + - "FirebugChrome.Skin = \n" + - "{\n" + - " CSS: '" + css + "',\n" + - " HTML: '" + html + "'\n" + - "};\n\n" + - "// ************************************************************************************************\n" + - "}});\n\n" + - "// ************************************************************************************************\n" + - "FBL.initialize();\n" + - "// ************************************************************************************************\n"; - } - }); - - for (var i=0, module; module=modules[i]; i++) - { - var moduleURL = sourceURL + module; - - if (module.indexOf("chromeSkin") != -1) continue; - - FBL.Ajax.request({ - url: moduleURL, - i: i, - onComplete: function(r,o) - { - source.push(r); - - if (o.i == last) - { - //alert("ok") - source.push(injected); - - if (useClosure) - source.push("\n})();"); - - callback(source.join("")); - } - else - source.push("\n\n"); - } - }); - } - }, - - buildSource: function(callback) - { - var useClosure = true; - var source = []; - var last = FBDev.modules.length-1; - - if (useClosure) - source.push("(function(){\n\n"); - - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module; - - FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o) - { - source.push(r); - - if (o.i == last) - { - if (useClosure) - source.push("\n})();"); - - callback(source.join("")); - } - else - source.push("\n\n"); - } - }); - } - }, - - buildSkin: function(callback) - { - var htmlUrl = skinURL + "firebug.html", - cssUrl = skinURL + "firebug.css", - html, - css, - injected; - - FBL.Ajax.request({ - url: htmlUrl, - onComplete:function(r) - { - html = FBDev.compressHTML(r); - } - }); - - FBL.Ajax.request({ - url: cssUrl, - onComplete:function(r) - { - css = FBDev.compressCSS(r); - injected = - "/* See license.txt for terms of usage */\n\n" + - "FBL.ns(function() { with (FBL) {\n" + - "// ************************************************************************************************\n\n" + - "FirebugChrome.Skin = \n" + - "{\n" + - " HTML: '" + html + "',\n" + - " CSS: '" + css + "'\n" + - "};\n\n" + - "// ************************************************************************************************\n" + - "}});"; - - callback(injected); - } - }); - }, - - compressSkinHTML: function() - { - var url = skinURL + "firebug.html"; - - var out = document.createElement("textarea"); - - FBL.Ajax.request({url: url, onComplete:function(r) - { - var result = FBDev.compressHTML(r); - - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - out.appendChild(document.createTextNode(result)); - document.body.appendChild(out); - } - }); - }, - - compressSkinCSS: function() - { - var url = skinURL + "firebug.css"; - - var out = document.createElement("textarea"); - - FBL.Ajax.request({url: url, onComplete:function(r) - { - var result = FBDev.compressCSS(r); - - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - out.appendChild(document.createTextNode(result)); - document.body.appendChild(out); - } - }); - - }, - - compressHTML: function(html) - { - var reHTMLComment = /()/g; - - return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, ""). - replace(reHTMLComment, ""). - replace(/\s\s/gm, ""). - replace(/\s+/gm, ">"). - replace(/>\s+/gm, ">"). - replace(/\s+\/>/gm, "/>"); - }, - - compressCSS: function(css) - { - var reComment = /(\/\/.*)\n/g; - var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - - return css.replace(reComment, ""). - replace(reMultiComment, ""). - replace(/url\(/gi, "url("+publishedURL). - replace(/\s\s/gm, ""). - replace(/\s+\{/gm, "{"). - replace(/\{\s+/gm, "{"). - replace(/\s+\}/gm, "}"). - replace(/\}\s+/gm, "}"). - replace(/\s+\:/gm, ":"). - replace(/\:\s+/gm, ":"). - replace(/,\s+/gm, ","); - }, - - getPanel: function() - { - return Firebug.chrome.getPanel("Dev"); - } -}; - -// ************************************************************************************************ - -function findLocation() -{ - var reFirebugFile = /(firebug-lite(?:-\w+)?\.js)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - - var head = document.getElementsByTagName("head")[0]; - - var path = null; - - for(var i=0, c=document.getElementsByTagName("script"), ci; ci=c[i]; i++) - { - var file = null; - if ( ci.nodeName.toLowerCase() == "script" && - (file = reFirebugFile.exec(ci.src)) ) - { - - var fileName = file[1]; - var fileOptions = file[2]; - - if (reProtocol.test(ci.src)) { - // absolute path - path = rePath.exec(ci.src)[1]; - - } - else - { - // relative path - var r = rePath.exec(ci.src); - var src = r ? r[1] : ci.src; - var rel = /^((?:\.\.\/)+)(.*)/.exec(src); - path = rePath.exec(location.href)[1]; - - if (rel) - { - var lastFolder = /^(.*\/)[^\/]+\/$/; - - var j = rel[1].length/3; - var p; - while (j-- > 0) - path = lastFolder.exec(path)[1]; - - path += rel[2]; - } - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - - break; - } - } - - var m = path.match(/([^\/]+)\/$/); - - if (path && m) - { - sourceURL = path; - baseURL = path.substr(0, path.length - m[1].length - 1); - skinURL = baseURL + "skin/xp/"; - fullURL = path + fileName; - } - else - { - throw "Firebug error: Library path not found"; - } -}; - -// ************************************************************************************************ - -function loadModules() { - - findLocation(); - - publishedURL = bookmarkletMode ? bookmarkletSkinURL : skinURL; - - var sufix = isApplicationContext ? "#app" : ""; - - var useDocWrite = isIE || isSafari; - //var useDocWrite = isIE; - - var moduleURL, script; - var scriptTags = []; - - /* - if (top != window) - { - var xhr = getXHRObject(); - var html = ""; - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module + sufix; - - xhr.open("get", moduleURL, false); - xhr.send(); - html = xhr.responseText; - - script = document.createElement("script"); - script.text = html; - document.getElementsByTagName("head")[0].appendChild(script); - } - return; - } - /**/ - - // new module loader - - var length = FBDev.modules.length; - var loadModule = function(index){ - if (index == length) return; - - var module = FBDev.modules[index]; - var moduleURL = sourceURL + module + sufix; - var script = document.createElement("script"); - script.src = moduleURL; - - script.onload = function() { - if ( !script.onloadDone ) { - script.onloadDone = true; - loadModule(index+1); - } - }; - script.onreadystatechange = function() { - if ( ( "loaded" === script.readyState || "complete" === script.readyState ) && !script.onloadDone ) { - script.onloadDone = true; - loadModule(index+1); - } - } - - document.getElementsByTagName("head")[0].appendChild(script); - }; - loadModule(0); - /**/ - - /* - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module + sufix; - - if(useDocWrite) - { - scriptTags.push(" - - - - - -
- -
-
- - - - - -
-

Firebug Lite 1.3 alpha release

-

- - Spread the word: - New Firebug Lite 1.3 alpha released - - We are releasing an alpha version of the next generation of Firebug Lite. - If you would like to test this version, please star - this issue - so you can receive updates about the alpha versions, - or follow up the discussion. -

- -

1. Overview

-

- This version was conceived to put the Firebug Lite in a new level, - by allowing code reuse from Firebug's original codebase. A new core - was created to accomplish the following goals: -

-

- Performance - the core of Firebug Lite 1.3 was rewritten from scratch - taking the performance into account in the first place. -

-

- Modularity - the code is now more modular, making easier the process - of adding new features and UI components such as panels, buttons, menus etc. - The modularity also helps the development process. Once the modules can - be isolated it is easier to detect the cause of complicated problems like - memory leaks. -

-

- Shared code - the core was designed to make it possible - to port some code directly from the Firebug source, with as few as possible - modifications. As a result, some features and UI elements behave exactly - as in Firebug. -

-

- Compatibility - the new core is compatible with XHTML and XML+XSL - documents. Thanks to the new context-independent approach, it supports - now the experimental persistent popups feature (popups that "live" across - different page loads of the same domain), and will support cross-iframe - inspection in the next version. -

- -

2. What's New?

- -

- User Interface -

-
    -
  • Port of Firebug's Visual Object Representation (aka Reps)
  • -
  • Recreation of Firebug 1.3 User Interface with pixel precision
  • -
  • Menu options
  • -
  • Resizable sidePanel
  • -
  • Skinnable Interface
  • -
-

- Inspector -

-
    -
  • Full BoxModel Highlight including margin, border, padding and content boxes
  • -
  • The BoxModel is highlighted when you move your mouse over a representation - of a HTML element, in any of the place of the User Interface
  • -
  • Elements are selected on-the-fly while using the Inspect tool
  • -
-

- Console -

-
    -
  • console.group() and console.groupEnd()
  • -
  • - console.trace() (thanks - dongryphon - for the contribution!) -
  • -
  • command line API functions $(), $$(), and dir()
  • -
  • command line shortcuts $0 and $1 for recent selected elements
  • -
  • autocomplete (tab, shift+tab)
  • -
  • can capture console messages before DOM document creation - when installed at the HTML header)
  • -
-

- Core -

-
    -
  • XHR watcher (works better when you load the script in the HEAD of your document)
  • -
  • Port most of the Firebug Library (aka Lib, FBL)
  • -
  • Port the Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
  • -
  • Plugin system like Firebug
  • -
  • Context-independent (will allow cross-iframe debugging, and persistent popups)
  • -
  • Persistent popups
  • -
  • Synchronization across different windows (iframe, popup)
  • -
-

- And more... -

-
    -
  • - Fixed problem with Internet Explorer and inline styles representation (thanks - christophe.blin - for the contribution!) -
  • -
  • - For a complete list of changes, check the - changelog. -
  • -
- -

1.2. What's missing in Firebug Lite 1.3?

-

- Here are the features that are still missing, but should be available in the - final Firebug Lite 1.3 release: -

-
    -
  • Live editing CSS rules
  • -
  • CSS cascading view
  • -
  • CSS inheritance view
  • -
- -

1.3. What's Not in Lite?

-

- Some features are not included in Firebug Lite 1.3, but due the new core that - supports code sharing from Firebug, are likely to be included in the - Firebug Lite 1.4 version: -

-
    -
  • Live editing for all panels
  • -
  • Layout Panel
  • -
  • Context menu options
  • -
  • Tooltips (to show colors and images)
  • -
  • Search feature
  • -
-

- Other features though are too dependent in browser internals and will not be - supported (at least in a near future*), such as: -

-
    -
  • Javascript debugger / Javascript profiler
  • -
  • Net panel / HTTP and XHR monitor
  • -
  • Access to restricted URI resources
  • -
  • Highlight HTML changes
  • -
-

- *Recent discussions about remote debugging - indicates that should be possible to support JavaScript debugging in browsers - like Google Chrome and Opera in a not so distant future, but the - differences in the protocols - may slow down this process (hey browser developers, what about adopting a standard?). - - -

- -

3. Install

-

a) Bookmarlet

-

- Bookmark the following links: -

- -

- **The trace enabled bookmarlet is intended to help identify error in Firebug Lite. - If you find a bug, run the trace enabled bookmarlet and look for something - strange in the logs. -

-

b) Live link

-

- You can also link directly to the hosted version at getfirebug.com. Copy the - following code, and paste it in the TOP of the HEAD of your document: -

- -

c) Local link (offline)

-

- If you need using Firebug Lite while offline, - download the code, - copy to a local destination, and link the firebug.jgz in the TOP - of the HEAD of your document. -

- -

d) Development mode:

-

- If you want to debug Firebug Lite, fix a bug, or add a new feature, you will want - to run the Firebug Lite in development mode. To do so, first - checkout the latest version - in our repository, and then insert a script at the TOP of the HEAD of your document. -

- -

- When in development mode, some things behave quite differently to make the - development process easier, such as: -

-
    -
  • All script files are loaded separately, without compression.
  • -
  • The internal library that Firebug Lite uses (aka FBL) is exposed to the - global namespace, allowing you to inspect its content. It is also exposed - the domplate and its classes, and the FBTrace object
  • -
  • The skin is loaded in a separated file, allowing you to rapidly change - the style and/or markup of the User Interface.
  • -
  • It will force to open Firebug Lite even when Firebug is active (which is - not the default behavior), so you can use Firebug to debug it.
  • -
  • A new panel "Dev" will be available with tools to compress the skin, - and the source code of the application in a single file.
  • -
- -

4. Options

-

- The properties you can change include (with respective default values): -

-
    -
  • saveCookies - false
  • -
  • startOpened - false
  • -
  • startInNewWindow - false
  • -
  • showIconWhenHidden - true
  • -
  • overrideConsole - true
  • -
  • ignoreFirebugElements - true
  • -
  • disableWhenFirebugActive - true
  • -
  • enableTrace - false
  • -
  • enablePersistent - false
  • -
-

- You can change the options using any of the following methods - (in ascendant order of priority): -

-

a) debug="true"

-

- For backwards compatibility you can still use the debug="true" attribute - in the <html> tag to make Firebug Lite starts opened, like: -

-
<html debug="true">
- -

b) Script URL options

-

- You can also set the options using URL fragment, specially handy to tweak - options in your bookmarlet. -

-
-http://getfirebug.com/releases/lite/alpha/firebug.jgz#enableTrace
-
-

- Options are separated by commas (,), and values are informed using - the equals to (=) symbol. If no value is informed, it is - assumed "true". -

-
-path/to/firebug.jgz#enableTrace,overrideConsole=false
-
-

is equivalent to:

-
-path/to/firebug.jgz#enableTrace=true,overrideConsole=false
-
-
-

c) Script JSON options

-

- It is possible to set options using a JSON object inside - the linked script: -

-
-<script type="text/javascript" 
-src="http://getfirebug.com/releases/lite/alpha/firebug.jgz">
-{
-    overrideConsole: false,
-    startInNewWindow: true,
-    startOpened: true,
-    enableTrace: true
-}
-</script>
-
-

d) Cookies

-

- Finally, you can override the options using cookies, via User Interface, - by clicking in the Firebug icon in the upper-left corner. -

- -

5. What to test?

-

- That's a lot of things to test, but we're particularly interested in - make sure the core of the application is working well before we move on - to the beta stage. Here are the list of the most important things to test: -

- -

5.1. Loading

-

- Firebug Lite should run fine no matter how it was loaded. -

-

- Bookmarlet - the current bookmarlet used in both Firebug Lite 1.2 and - 1.3 versions contains some problems and limitations (it won't load - for example in XHTML and/or XML+XSL documents). We're particularly - insterested in find such problems in the bookmarlet now we're in - alpha stage, because updating bookmarlets is a boring task, and - should be done by the user individually, in each browser. -

-

- Local include - Firebug Lite should load fine when using relative - paths in the URL (when loaded locally). -

-

- Live include - Firebug Lite should load fine when loaded directly - from getfirebug.com. -

- -

5.2. Rendering

-

- Please report us if you see some weird behavior in the User Interface, such - as misplaced elements, elements not rendered, abnormal flickering, partial - rendered panels, or any other visual weirdness. -

- -

5.4. Document Types

-

- Firebug Lite should work in different types of documents such as - XHTML and/or XML+XSL documents. -

- -

6. Contributing

-

- Your contribution is very important. Found a bug? Have a suggestion? Please - report us. -

-

- Found a fix for a particular issue? - Patches are welcome. - Also, if you are willing to help more deeply with coding, - join our team. -

-

- - Spread the word: - New Firebug Lite 1.3 alpha released - - Last, but not least, you can also helping us by spreading the word, inviting - more people to test this new version. Feel free to post about it in your - blog, social network, or use the retweet button on the left. -

-
-
-
-
- - \ No newline at end of file diff --git a/branches/firebug1.3/test/beta.html b/branches/firebug1.3/test/beta.html deleted file mode 100644 index 797cd0f8..00000000 --- a/branches/firebug1.3/test/beta.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -FirebugLite 1.3.1 Testing - - - - - -
-

FirebugLite 1.3.1 Testing

-
-

Hello World

- -
-
- Just a test note -
-
-

User interface files

- -
-
- - - \ No newline at end of file diff --git a/branches/firebug1.3/test/dom.html b/branches/firebug1.3/test/dom.html deleted file mode 100644 index f97c9eb1..00000000 --- a/branches/firebug1.3/test/dom.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - -
-

FirebugLite 1.3 Testing

- -
- Copy the bookmarlets above to test the Firebug Lite in remote pages. -
-
-

User interface files

- -
-
- - - \ No newline at end of file diff --git a/branches/firebug1.3/test/firebugLite.html b/branches/firebug1.3/test/firebugLite.html deleted file mode 100644 index 7af94cf5..00000000 --- a/branches/firebug1.3/test/firebugLite.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - - -
-

FirebugLite 1.3 Testing

-
-

Development Functions

- -
-
- Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
-
-

User interface files

- -
-
-

Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

-

Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

-

Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

-

Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

-

Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

-

In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

-

Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

-

Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

-

Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

-

A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

-
-
- - - \ No newline at end of file diff --git a/branches/firebug1.3/test/firebugLite2.html b/branches/firebug1.3/test/firebugLite2.html deleted file mode 100644 index d2afd4f5..00000000 --- a/branches/firebug1.3/test/firebugLite2.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - -
-

FirebugLite 1.3 Testing

-
-

Development Functions

- -
-
- Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
-
-

User interface files

- -
-
-

Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

-

Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

-

Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

-

Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

-

Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

-

In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

-

Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

-

Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

-

Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

-

A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

-
-
- - - \ No newline at end of file diff --git a/branches/firebug1.3/test/full.html b/branches/firebug1.3/test/full.html deleted file mode 100644 index aa49025c..00000000 --- a/branches/firebug1.3/test/full.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - -
-

FirebugLite 1.3 Testing

-
-

Hello World

- -
-
- Just a test note -
-
-

User interface files

- -
-
- - - \ No newline at end of file diff --git a/branches/firebug1.4/build/.htaccess b/branches/firebug1.4/build/.htaccess deleted file mode 100644 index cb38bde8..00000000 --- a/branches/firebug1.4/build/.htaccess +++ /dev/null @@ -1,15 +0,0 @@ -AddType "text/javascript;charset=UTF-8" .jgz .js -AddEncoding gzip .jgz - - - ExpiresActive On - ExpiresDefault A86400 - - - - RewriteEngine on - #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR] - RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR] - RewriteCond %{HTTP:Accept-Encoding} !gzip - RewriteRule (.*)\.jgz$ $1.js [L] - \ No newline at end of file diff --git a/branches/firebug1.4/build/build.bat b/branches/firebug1.4/build/build.bat deleted file mode 100644 index 6e71c227..00000000 --- a/branches/firebug1.4/build/build.bat +++ /dev/null @@ -1,21 +0,0 @@ -rd firebug-lite /s /q -rd pub /s /q - -svn export "../" "./firebug-lite" - -md pub -xcopy ".\firebug-lite\skin\." ".\pub\skin" /s /i -copy "..\docs\beta\index.html" ".\pub\index.html" -copy "..\content\changelog.txt" ".\pub" -copy ".\firebug-lite\build\*.*" ".\pub" -del ".\pub\*.bat" - -tar -cv --file=firebug-lite.tar firebug-lite/* -gzip -9 < firebug-lite.tar > ./pub/firebug-lite.tar.tgz - -del firebug-lite.tar - -rd firebug-lite /s /q - -pause - diff --git a/branches/firebug1.4/build/chrome-extension-beta/background.html b/branches/firebug1.4/build/chrome-extension-beta/background.html deleted file mode 100644 index ae58fbf9..00000000 --- a/branches/firebug1.4/build/chrome-extension-beta/background.html +++ /dev/null @@ -1,243 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.4/build/chrome-extension-beta/contentScript.js b/branches/firebug1.4/build/chrome-extension-beta/contentScript.js deleted file mode 100644 index 96ba4dbc..00000000 --- a/branches/firebug1.4/build/chrome-extension-beta/contentScript.js +++ /dev/null @@ -1,378 +0,0 @@ -// ************************************************************************************************* - -var isActive = false; -var isOpen = false; -var extensionURL = null; - -var contextMenuElementXPath = null; -var isListeningKeyboardActivation = false; - -// ************************************************************************************************* - -// restore Firebug Lite state -var loadStateData = function() -{ - var FirebugData = localStorage.getItem("Firebug"); - - isActive = false; - isOpen = false; - extensionURL = chrome.extension.getURL(""); - - if (FirebugData) - { - FirebugData = FirebugData.split(","); - isActive = FirebugData[0] == "1"; - isOpen = FirebugData[1] == "1"; - } -}; - -// ************************************************************************************************* - -// load Firebug Lite application -var loadFirebug = function() -{ - document.documentElement.setAttribute("debug", isOpen); - - injectScriptText("("+listenConsoleCalls+")()"); - - // TODO: xxxpedro - change to XHR when Issue 41024 is solved - // Issue 41024: XHR using file: and chrome-extension: protocols not working. - // http://code.google.com/p/chromium/issues/detail?id=41024 - injectFirebugScript(); -}; - -// TODO: think a better solution than using the stateData parameter, required -// by the keyboard activation. -var loadFirebugAndWait = function(callback, stateData) -{ - stateData = stateData || ('1,1,'+extensionURL); - localStorage.setItem('Firebug', stateData); - loadStateData(); - chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"}); - - document.documentElement.setAttribute("debug", isOpen); - - injectFirebugScript(); - - setTimeout(function(){ - waitFirebug(callback); - },0); -}; - -var waitFirebug = function(callback) -{ - if (document && document.getElementById("FirebugChannel")) - { - stopListeningKeyboardActivation(); - callback(); - } - else - setTimeout(function(){ waitFirebug(callback); }, 100); - -}; - -// ************************************************************************************************* - -// inject Firebug Lite script into the page -var injectFirebugScript = function(url) -{ - scriptElement = document.getElementById("FirebugLite"); - if (scriptElement) - { - firebugDispatch("FB_toggle"); - } - else - { - var script = document.createElement("script"); - - script.src = extensionURL + "firebug-lite-beta.js"; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - document.documentElement.appendChild(script); - - script.onload = function() { - // TODO: xxxpedro remove this files when deploy the new structure - script = document.createElement("script"); - script.src = extensionURL + "googleChrome.js"; - document.documentElement.appendChild(script); - }; - } -}; - -// inject a script into the page -var injectScriptText = function(text) -{ - var script = document.createElement("script"); - var parent = document.documentElement; - - script.text = text; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - parent.appendChild(script); - parent.removeChild(script); -}; - -// ************************************************************************************************* - -// communication with the background page -chrome.extension.onRequest.addListener -( - function(request, sender, sendResponse) - { - // check if Firebug Lite is active - if (request.name == "FB_isActive") - { - loadStateData(); - sendResponse({value: ""+isActive}); - } - // load Firebug Lite application - else if (request.name == "FB_loadFirebug") - { - setTimeout(function(){ - - loadStateData(); - - //loadFirebug(); - loadFirebugAndWait(function(){ - - isActive = true; - var message = isActive ? "FB_enableIcon" : "FB_disableIcon"; - chrome.extension.sendRequest({name: message}); - - loadChannel(); - }); - - },0); - - sendResponse({}); - } - // handle context menu click by sending "FB_contextMenuClick" message - // to Firebug Lite application - else if (request.name == "FB_contextMenuClick") - { - // TODO: if not active, activate first, wait the activation to complete - // and only then dispatch the event to Firebug Lite application - if (isActive) - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - else - loadFirebugAndWait(function(){ - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - }); - } - else if (request.name == "FB_deactivate") - { - listenKeyboardActivation(); - } - else - sendResponse({}); // snub them. - } -); - -// ************************************************************************************************* - -// communication with the page -var channel = null; -var channelEvent; - -var onFirebugChannelEvent = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - chrome.extension.sendRequest({name: channel.innerText}); - } -}; - -var loadChannel = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - } -}; - -var firebugDispatch = function(data) -{ - if (!channel) - loadChannel(); - - channel.innerText = data; - channel.dispatchEvent(channelEvent); -}; - -// ************************************************************************************************* - -var onContextMenu = function(event) -{ - contextMenuElementXPath = getElementXPath(event.target); -}; - -var loadListeners = function() -{ - window.addEventListener("contextmenu", onContextMenu); - window.addEventListener("unload", unloadListeners); -}; - -var unloadListeners = function() -{ - if (channel) - { - channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - - window.removeEventListener("contextmenu", onContextMenu); - window.removeEventListener("unload", unloadListeners); -}; - -// ************************************************************************************************* - -// listen to console calls before Firebug Lite finishes to load -var listenConsoleCalls = function() -{ - // TODO: xxxpedro add all console functions - var fns = ["log", "info", "warn", "error"]; - - var listener = {consoleQueue: ["chromeConsoleQueueHack"]}; - var queue = listener.consoleQueue; - - for (var i=0, l=fns.length; i 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - isGetFirebugSite = reGetFirebugSite.test(path); - - if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1) - { - // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like - // https://getfirebug.com/firebug-lite.js, then we must manually add the full path, - // otherwise the Env.Location will hold the wrong path, which will in turn lead to - // undesirable effects like the problem in Issue 4587 - path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/"); - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 && - // but we cannot use the locan skin when loaded from getfirebug.com, otherwise - // the bookmarklet won't work when visiting getfirebug.com - !isGetFirebugSite; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - if (hasSrcAttribute) - { - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - } - - if (!Env.Options.saveCookies) - FBL.Store.remove("FirebugLite"); - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - { - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return ob + ""; - } - catch(E) - { - FBTrace.sysout("Lib.safeToString() failed for ", ob); - return ""; - } - } - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - var chrome = Firebug.chrome; - - if (elt.offsetLeft) - ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft"); - if (elt.offsetTop) - ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop"); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - // IE will fail when reading the frameElement property of a popup window. - // We don't need it anyway once it is outside the (popup) viewport, so we're - // ignoring the frameElement check when the window is a popup - if (!otherView.opener && otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -}; - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -}; - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -}; - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -}; - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -}; - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -}; - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -}; - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); - } - catch (E) - { - FBTrace.sysout("Lib.isFunction() failed for ", object); - return false; - } -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = FBL.getNativeXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports FBL.Firebug as Firebug - */ -FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.4.0", - revision: "$Revision: 11961 $", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - Firebug.loadPrefs(); - Firebug.context.persistedState.isOpen = false; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector && Firebug.Inspector.create) - Firebug.Inspector.create(); - - if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets) - FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Firebug.disableResourceFetching) - Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " + - "resource fetching is disabled. To enabled it set the Firebug Lite option " + - "\"disableResourceFetching\" to \"false\". More info at " + - "http://getfirebug.com/firebuglite#Options"], - Firebug.context, "warn"); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.saveCookies) - Firebug.savePrefs(); - - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - try - { - chromeMap[name].destroy(); - } - catch(E) - { - if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name); - } - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - Firebug.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - Firebug.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.DefaultOptions; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function() - { - this.restorePrefs(); - - var prefs = Store.get("FirebugLite") || {}; - var options = prefs.options; - var persistedState = prefs.persistedState || FBL.defaultPersistedState; - - for (var name in options) - { - if (options.hasOwnProperty(name)) - Firebug[name] = options[name]; - } - - if (Firebug.context && persistedState) - Firebug.context.persistedState = persistedState; - }, - - savePrefs: function() - { - var prefs = { - options: {} - }; - - var EnvOptions = Env.Options; - var options = prefs.options; - for (var name in EnvOptions) - { - if (EnvOptions.hasOwnProperty(name)) - { - options[name] = Firebug[name]; - } - } - - var persistedState = Firebug.context.persistedState; - if (!persistedState) - { - persistedState = Firebug.context.persistedState = FBL.defaultPersistedState; - } - - prefs.persistedState = persistedState; - - Store.set("FirebugLite", prefs); - }, - - erasePrefs: function() - { - Store.remove("FirebugLite"); - this.restorePrefs(); - } -}; - -Firebug.restorePrefs(); - -// xxxpedro should we remove this? -window.Firebug = FBL.Firebug; - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - if (Firebug.InfoTip) - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - if (Firebug.InfoTip) - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
  • this.startMeasuring(view);
  • - *
  • var size = this.measureText(lineNoCharsSpacer);
  • - *
  • this.stopMeasuring();
  • - *
- * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - Firebug.context.persistedState.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0; - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - else if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - - else if (unit == "ex") - return this.exToPixels(el, value); - - // TODO: add other units. Maybe create a better general way - // to calculate measurements in different units. - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - }; - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI" - //height: 350 // obsolete - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -FBL.defaultPersistedState = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - isOpen: false, - height: 300, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - htmlSelectionStack: [] - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - //isOpen: false, - //height: 300, - //sidePanelWidth: 350, - - //selectedPanelName: "Console", - //selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var browserWin = Env.browser.window; - var browserContext = new Context(browserWin); - var prefs = Store.get("FirebugLite"); - var persistedState = prefs && prefs.persistedState || defaultPersistedState; - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - var browserWinSize = browserContext.getWindowSize(); - var height = persistedState.height || 300; - - height = Math.min(browserWinSize.height, height); - height = Math.max(200, height); - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = height + "px"; - - // avoid flickering during chrome rendering - //if (isFirefox) - // node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = persistedState.popupHeight || 300; - var browserWinSize = browserContext.getWindowSize(); - - var browserWinLeft = typeof browserWin.screenX == "number" ? - browserWin.screenX : browserWin.screenLeft; - - var popupLeft = typeof persistedState.popupLeft == "number" ? - persistedState.popupLeft : browserWinLeft; - - var browserWinTop = typeof browserWin.screenY == "number" ? - browserWin.screenY : browserWin.screenTop; - - var popupTop = typeof persistedState.popupTop == "number" ? - persistedState.popupTop : - Math.max( - 0, - Math.min( - browserWinTop + browserWinSize.height - height, - // Google Chrome bug - screen.availHeight - height - 61 - ) - ); - - var popupWidth = typeof persistedState.popupWidth == "number" ? - persistedState.popupWidth : - Math.max( - 0, - Math.min( - browserWinSize.width, - // Opera opens popup in a new tab if it's too big! - screen.availWidth-10 - ) - ); - - var popupHeight = typeof persistedState.popupHeight == "number" ? - persistedState.popupHeight : 300; - - var options = [ - "true,top=", popupTop, - ",left=", popupLeft, - ",height=", popupHeight, - ",width=", popupWidth, - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - }, useLocalSkin ? 200 : 0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Disable Resource Fetching", - type: "checkbox", - value: "disableResourceFetching", - checked: Firebug.disableResourceFetching, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - restorePrefs: function(target) - { - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(Firebug.context.persistedState.selectedPanelName); - - if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - this.close(); - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.height = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!Firebug.context.persistedState.isOpen) - { - Firebug.context.persistedState.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - /// TODO: xxxpedro FOUC - node.style.visibility = "visible"; - setTimeout(function(){ - ///node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (Firebug.context.persistedState.isOpen) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - Firebug.context.persistedState.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = Firebug.context.persistedState.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - //[Firebug.chrome.window, "beforeunload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - var chromeWin = Firebug.chrome.window; - var left = chromeWin.screenX || chromeWin.screenLeft; - var top = chromeWin.screenY || chromeWin.screenTop; - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.popupTop = top; - Firebug.context.persistedState.popupLeft = left; - Firebug.context.persistedState.popupWidth = size.width; - Firebug.context.persistedState.popupHeight = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - Firebug.loadPrefs(); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - - setTimeout(function(){ - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - },50); - - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - Firebug.context.persistedState.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - Firebug.context.persistedState.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug-" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var data = {}; - - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = getValidatedKey(element); - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - data[id] = {}; - } - - return id; - }, - - unset: function(element) - { - var id = getValidatedKey(element); - - if (!id) return; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - delete data[id]; - - }, - - key: function(element) - { - return getValidatedKey(element); - }, - - has: function(element) - { - var id = getValidatedKey(element); - return id && map.hasOwnProperty(id); - }, - - each: function(callback) - { - for (var key in map) - { - if (map.hasOwnProperty(key)) - { - callback(key, map[key]); - } - } - }, - - data: function(element, name, value) - { - // set data - if (value) - { - if (!name) return null; - - var id = cacheAPI.set(element); - - return data[id][name] = value; - } - // get data - else - { - var id = cacheAPI.key(element); - - return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ? - data[id][name] : - null; - } - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - var getValidatedKey = function(element) - { - var id = element[CID]; - - // If a cached element is cloned in IE, the expando property CID will be also - // cloned (differently than other browsers) resulting in a bug: Firebug Lite - // will think the new cloned node is the old one. To prevent this problem we're - // checking if the cached element matches the given element. - if ( - !supportsDeleteExpando && // the problem happens when supportsDeleteExpando is false - id && // the element has the expando property - map.hasOwnProperty(id) && // there is a cached element with the same id - map[id] != element // but it is a different element than the current one - ) - { - // remove the problematic property - element.removeAttribute(CID); - - id = null; - } - - return id; - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// TODO: xxxpedro -Firebug.Lite.Cache.Event = createCache(); - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -var sourceMap = {}; - -// ************************************************************************************************ -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -Firebug.Lite.Proxy.fetchResourceDisabledMessage = - "/* Firebug Lite resource fetching is disabled.\n" + - "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" + - "More info at http://getfirebug.com/firebuglite#Options */"; - -var fetchResource = function(url) -{ - if (Firebug.disableResourceFetching) - { - var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage; - return source; - } - - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - // Getting the native XHR object so our calls won't be logged in the Console Panel - var xhr = FBL.getNativeXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - var source = sourceMap[url] = xhr.responseText; - return source; -}; - -var fetchProxyResource = function(url) -{ - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - var source = data ? data.contents : ""; - return source; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -/* - http://www.JSON.org/json2.js - 2010-03-20 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, strict: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -// ************************************************************************************************ - -var JSON = window.JSON || {}; - -// ************************************************************************************************ - -(function () { - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } - -// ************************************************************************************************ -// registration - -FBL.JSON = JSON; - -// ************************************************************************************************ -}()); - -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -/* Copyright (c) 2010-2011 Marcus Westin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -var store = (function(){ - var api = {}, - win = window, - doc = win.document, - localStorageName = 'localStorage', - globalStorageName = 'globalStorage', - namespace = '__firebug__storejs__', - storage - - api.disabled = false - api.set = function(key, value) {} - api.get = function(key) {} - api.remove = function(key) {} - api.clear = function() {} - api.transact = function(key, transactionFn) { - var val = api.get(key) - if (typeof val == 'undefined') { val = {} } - transactionFn(val) - api.set(key, val) - } - - api.serialize = function(value) { - return JSON.stringify(value) - } - api.deserialize = function(value) { - if (typeof value != 'string') { return undefined } - return JSON.parse(value) - } - - // Functions to encapsulate questionable FireFox 3.6.13 behavior - // when about.config::dom.storage.enabled === false - // See https://github.com/marcuswestin/store.js/issues#issue/13 - function isLocalStorageNameSupported() { - try { return (localStorageName in win && win[localStorageName]) } - catch(err) { return false } - } - - function isGlobalStorageNameSupported() { - try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) } - catch(err) { return false } - } - - if (isLocalStorageNameSupported()) { - storage = win[localStorageName] - api.set = function(key, val) { storage.setItem(key, api.serialize(val)) } - api.get = function(key) { return api.deserialize(storage.getItem(key)) } - api.remove = function(key) { storage.removeItem(key) } - api.clear = function() { storage.clear() } - - } else if (isGlobalStorageNameSupported()) { - storage = win[globalStorageName][win.location.hostname] - api.set = function(key, val) { storage[key] = api.serialize(val) } - api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) } - api.remove = function(key) { delete storage[key] } - api.clear = function() { for (var key in storage ) { delete storage[key] } } - - } else if (doc.documentElement.addBehavior) { - var storage = doc.createElement('div') - function withIEStorage(storeFunction) { - return function() { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift(storage) - // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx - // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx - // TODO: xxxpedro doc.body is not always available so we must use doc.documentElement. - // We need to make sure this change won't affect the behavior of this library. - doc.documentElement.appendChild(storage) - storage.addBehavior('#default#userData') - storage.load(localStorageName) - var result = storeFunction.apply(api, args) - doc.documentElement.removeChild(storage) - return result - } - } - api.set = withIEStorage(function(storage, key, val) { - storage.setAttribute(key, api.serialize(val)) - storage.save(localStorageName) - }) - api.get = withIEStorage(function(storage, key) { - return api.deserialize(storage.getAttribute(key)) - }) - api.remove = withIEStorage(function(storage, key) { - storage.removeAttribute(key) - storage.save(localStorageName) - }) - api.clear = withIEStorage(function(storage) { - var attributes = storage.XMLDocument.documentElement.attributes - storage.load(localStorageName) - for (var i=0, attr; attr = attributes[i]; i++) { - storage.removeAttribute(attr.name) - } - storage.save(localStorageName) - }) - } - - try { - api.set(namespace, namespace) - if (api.get(namespace) != namespace) { api.disabled = true } - api.remove(namespace) - } catch(e) { - api.disabled = true - } - - return api -})(); - -if (typeof module != 'undefined') { module.exports = store } - - -// ************************************************************************************************ -// registration - -FBL.Store = store; - -// ************************************************************************************************ -})(); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope s_selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - if (Firebug.HTML) - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0); - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -( /** @scope s_domplate */ function() { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -FBL.DomplateTag = function DomplateTag(tagName) -{ - this.tagName = tagName; -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateEmbed = function DomplateEmbed() -{ -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateLoop = function DomplateLoop() -{ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var DomplateTag = FBL.DomplateTag; -var DomplateEmbed = FBL.DomplateEmbed; -var DomplateLoop = FBL.DomplateLoop; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var womb = null; - -FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -var domplate = FBL.domplate; - -FBL.domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -FBL.DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateEmbed.prototype */ -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateLoop.prototype */ -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -/** @class */ -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -/** @class */ -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -/** @namespace */ -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // we must check if the attribute is specified otherwise IE will show them - if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else if (attr.nodeName == "style") - attrs.push({ - nodeName: attr.nodeName, - nodeValue: attr.nodeValue || - // IE won't recognize the attr.nodeValue of - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/infoIcon.png b/branches/firebug1.4/build/chrome-extension-beta/skin/xp/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_close.gif b/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_open.gif b/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/warningIcon.png b/branches/firebug1.4/build/chrome-extension-beta/skin/xp/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/background.html b/branches/firebug1.4/build/chrome-extension/background.html deleted file mode 100644 index ae58fbf9..00000000 --- a/branches/firebug1.4/build/chrome-extension/background.html +++ /dev/null @@ -1,243 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.4/build/chrome-extension/contentScript.js b/branches/firebug1.4/build/chrome-extension/contentScript.js deleted file mode 100644 index 0c461567..00000000 --- a/branches/firebug1.4/build/chrome-extension/contentScript.js +++ /dev/null @@ -1,378 +0,0 @@ -// ************************************************************************************************* - -var isActive = false; -var isOpen = false; -var extensionURL = null; - -var contextMenuElementXPath = null; -var isListeningKeyboardActivation = false; - -// ************************************************************************************************* - -// restore Firebug Lite state -var loadStateData = function() -{ - var FirebugData = localStorage.getItem("Firebug"); - - isActive = false; - isOpen = false; - extensionURL = chrome.extension.getURL(""); - - if (FirebugData) - { - FirebugData = FirebugData.split(","); - isActive = FirebugData[0] == "1"; - isOpen = FirebugData[1] == "1"; - } -}; - -// ************************************************************************************************* - -// load Firebug Lite application -var loadFirebug = function() -{ - document.documentElement.setAttribute("debug", isOpen); - - injectScriptText("("+listenConsoleCalls+")()"); - - // TODO: xxxpedro - change to XHR when Issue 41024 is solved - // Issue 41024: XHR using file: and chrome-extension: protocols not working. - // http://code.google.com/p/chromium/issues/detail?id=41024 - injectFirebugScript(); -}; - -// TODO: think a better solution than using the stateData parameter, required -// by the keyboard activation. -var loadFirebugAndWait = function(callback, stateData) -{ - stateData = stateData || ('1,1,'+extensionURL); - localStorage.setItem('Firebug', stateData); - loadStateData(); - chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"}); - - document.documentElement.setAttribute("debug", isOpen); - - injectFirebugScript(); - - setTimeout(function(){ - waitFirebug(callback); - },0); -}; - -var waitFirebug = function(callback) -{ - if (document && document.getElementById("FirebugChannel")) - { - stopListeningKeyboardActivation(); - callback(); - } - else - setTimeout(function(){ waitFirebug(callback); }, 100); - -}; - -// ************************************************************************************************* - -// inject Firebug Lite script into the page -var injectFirebugScript = function(url) -{ - scriptElement = document.getElementById("FirebugLite"); - if (scriptElement) - { - firebugDispatch("FB_toggle"); - } - else - { - var script = document.createElement("script"); - - script.src = extensionURL + "firebug-lite.js"; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - document.documentElement.appendChild(script); - - script.onload = function() { - // TODO: xxxpedro remove this files when deploy the new structure - script = document.createElement("script"); - script.src = extensionURL + "googleChrome.js"; - document.documentElement.appendChild(script); - }; - } -}; - -// inject a script into the page -var injectScriptText = function(text) -{ - var script = document.createElement("script"); - var parent = document.documentElement; - - script.text = text; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - parent.appendChild(script); - parent.removeChild(script); -}; - -// ************************************************************************************************* - -// communication with the background page -chrome.extension.onRequest.addListener -( - function(request, sender, sendResponse) - { - // check if Firebug Lite is active - if (request.name == "FB_isActive") - { - loadStateData(); - sendResponse({value: ""+isActive}); - } - // load Firebug Lite application - else if (request.name == "FB_loadFirebug") - { - setTimeout(function(){ - - loadStateData(); - - //loadFirebug(); - loadFirebugAndWait(function(){ - - isActive = true; - var message = isActive ? "FB_enableIcon" : "FB_disableIcon"; - chrome.extension.sendRequest({name: message}); - - loadChannel(); - }); - - },0); - - sendResponse({}); - } - // handle context menu click by sending "FB_contextMenuClick" message - // to Firebug Lite application - else if (request.name == "FB_contextMenuClick") - { - // TODO: if not active, activate first, wait the activation to complete - // and only then dispatch the event to Firebug Lite application - if (isActive) - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - else - loadFirebugAndWait(function(){ - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - }); - } - else if (request.name == "FB_deactivate") - { - listenKeyboardActivation(); - } - else - sendResponse({}); // snub them. - } -); - -// ************************************************************************************************* - -// communication with the page -var channel = null; -var channelEvent; - -var onFirebugChannelEvent = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - chrome.extension.sendRequest({name: channel.innerText}); - } -}; - -var loadChannel = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - } -}; - -var firebugDispatch = function(data) -{ - if (!channel) - loadChannel(); - - channel.innerText = data; - channel.dispatchEvent(channelEvent); -}; - -// ************************************************************************************************* - -var onContextMenu = function(event) -{ - contextMenuElementXPath = getElementXPath(event.target); -}; - -var loadListeners = function() -{ - window.addEventListener("contextmenu", onContextMenu); - window.addEventListener("unload", unloadListeners); -}; - -var unloadListeners = function() -{ - if (channel) - { - channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - - window.removeEventListener("contextmenu", onContextMenu); - window.removeEventListener("unload", unloadListeners); -}; - -// ************************************************************************************************* - -// listen to console calls before Firebug Lite finishes to load -var listenConsoleCalls = function() -{ - // TODO: xxxpedro add all console functions - var fns = ["log", "info", "warn", "error"]; - - var listener = {consoleQueue: ["chromeConsoleQueueHack"]}; - var queue = listener.consoleQueue; - - for (var i=0, l=fns.length; i 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - isGetFirebugSite = reGetFirebugSite.test(path); - - if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1) - { - // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like - // https://getfirebug.com/firebug-lite.js, then we must manually add the full path, - // otherwise the Env.Location will hold the wrong path, which will in turn lead to - // undesirable effects like the problem in Issue 4587 - path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/"); - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 && - // but we cannot use the locan skin when loaded from getfirebug.com, otherwise - // the bookmarklet won't work when visiting getfirebug.com - !isGetFirebugSite; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - if (hasSrcAttribute) - { - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - } - - if (!Env.Options.saveCookies) - FBL.Store.remove("FirebugLite"); - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - { - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return ob + ""; - } - catch(E) - { - FBTrace.sysout("Lib.safeToString() failed for ", ob); - return ""; - } - } - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - var chrome = Firebug.chrome; - - if (elt.offsetLeft) - ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft"); - if (elt.offsetTop) - ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop"); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - // IE will fail when reading the frameElement property of a popup window. - // We don't need it anyway once it is outside the (popup) viewport, so we're - // ignoring the frameElement check when the window is a popup - if (!otherView.opener && otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -}; - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -}; - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -}; - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -}; - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -}; - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -}; - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -}; - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); - } - catch (E) - { - FBTrace.sysout("Lib.isFunction() failed for ", object); - return false; - } -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = FBL.getNativeXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports FBL.Firebug as Firebug - */ -FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.4.0", - revision: "$Revision: 11961 $", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - Firebug.loadPrefs(); - Firebug.context.persistedState.isOpen = false; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector && Firebug.Inspector.create) - Firebug.Inspector.create(); - - if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets) - FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Firebug.disableResourceFetching) - Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " + - "resource fetching is disabled. To enabled it set the Firebug Lite option " + - "\"disableResourceFetching\" to \"false\". More info at " + - "http://getfirebug.com/firebuglite#Options"], - Firebug.context, "warn"); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.saveCookies) - Firebug.savePrefs(); - - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - try - { - chromeMap[name].destroy(); - } - catch(E) - { - if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name); - } - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - Firebug.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - Firebug.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.DefaultOptions; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function() - { - this.restorePrefs(); - - var prefs = Store.get("FirebugLite") || {}; - var options = prefs.options; - var persistedState = prefs.persistedState || FBL.defaultPersistedState; - - for (var name in options) - { - if (options.hasOwnProperty(name)) - Firebug[name] = options[name]; - } - - if (Firebug.context && persistedState) - Firebug.context.persistedState = persistedState; - }, - - savePrefs: function() - { - var prefs = { - options: {} - }; - - var EnvOptions = Env.Options; - var options = prefs.options; - for (var name in EnvOptions) - { - if (EnvOptions.hasOwnProperty(name)) - { - options[name] = Firebug[name]; - } - } - - var persistedState = Firebug.context.persistedState; - if (!persistedState) - { - persistedState = Firebug.context.persistedState = FBL.defaultPersistedState; - } - - prefs.persistedState = persistedState; - - Store.set("FirebugLite", prefs); - }, - - erasePrefs: function() - { - Store.remove("FirebugLite"); - this.restorePrefs(); - } -}; - -Firebug.restorePrefs(); - -// xxxpedro should we remove this? -window.Firebug = FBL.Firebug; - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - if (Firebug.InfoTip) - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - if (Firebug.InfoTip) - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
  • this.startMeasuring(view);
  • - *
  • var size = this.measureText(lineNoCharsSpacer);
  • - *
  • this.stopMeasuring();
  • - *
- * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - Firebug.context.persistedState.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0; - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - else if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - - else if (unit == "ex") - return this.exToPixels(el, value); - - // TODO: add other units. Maybe create a better general way - // to calculate measurements in different units. - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - }; - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI" - //height: 350 // obsolete - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -FBL.defaultPersistedState = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - isOpen: false, - height: 300, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - htmlSelectionStack: [] - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - //isOpen: false, - //height: 300, - //sidePanelWidth: 350, - - //selectedPanelName: "Console", - //selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var browserWin = Env.browser.window; - var browserContext = new Context(browserWin); - var prefs = Store.get("FirebugLite"); - var persistedState = prefs && prefs.persistedState || defaultPersistedState; - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - var browserWinSize = browserContext.getWindowSize(); - var height = persistedState.height || 300; - - height = Math.min(browserWinSize.height, height); - height = Math.max(200, height); - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = height + "px"; - - // avoid flickering during chrome rendering - //if (isFirefox) - // node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = persistedState.popupHeight || 300; - var browserWinSize = browserContext.getWindowSize(); - - var browserWinLeft = typeof browserWin.screenX == "number" ? - browserWin.screenX : browserWin.screenLeft; - - var popupLeft = typeof persistedState.popupLeft == "number" ? - persistedState.popupLeft : browserWinLeft; - - var browserWinTop = typeof browserWin.screenY == "number" ? - browserWin.screenY : browserWin.screenTop; - - var popupTop = typeof persistedState.popupTop == "number" ? - persistedState.popupTop : - Math.max( - 0, - Math.min( - browserWinTop + browserWinSize.height - height, - // Google Chrome bug - screen.availHeight - height - 61 - ) - ); - - var popupWidth = typeof persistedState.popupWidth == "number" ? - persistedState.popupWidth : - Math.max( - 0, - Math.min( - browserWinSize.width, - // Opera opens popup in a new tab if it's too big! - screen.availWidth-10 - ) - ); - - var popupHeight = typeof persistedState.popupHeight == "number" ? - persistedState.popupHeight : 300; - - var options = [ - "true,top=", popupTop, - ",left=", popupLeft, - ",height=", popupHeight, - ",width=", popupWidth, - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - }, useLocalSkin ? 200 : 0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Disable Resource Fetching", - type: "checkbox", - value: "disableResourceFetching", - checked: Firebug.disableResourceFetching, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - restorePrefs: function(target) - { - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(Firebug.context.persistedState.selectedPanelName); - - if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - this.close(); - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.height = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!Firebug.context.persistedState.isOpen) - { - Firebug.context.persistedState.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - /// TODO: xxxpedro FOUC - node.style.visibility = "visible"; - setTimeout(function(){ - ///node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (Firebug.context.persistedState.isOpen) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - Firebug.context.persistedState.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = Firebug.context.persistedState.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - //[Firebug.chrome.window, "beforeunload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - var chromeWin = Firebug.chrome.window; - var left = chromeWin.screenX || chromeWin.screenLeft; - var top = chromeWin.screenY || chromeWin.screenTop; - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.popupTop = top; - Firebug.context.persistedState.popupLeft = left; - Firebug.context.persistedState.popupWidth = size.width; - Firebug.context.persistedState.popupHeight = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - Firebug.loadPrefs(); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - - setTimeout(function(){ - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - },50); - - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - Firebug.context.persistedState.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - Firebug.context.persistedState.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug-" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var data = {}; - - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = getValidatedKey(element); - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - data[id] = {}; - } - - return id; - }, - - unset: function(element) - { - var id = getValidatedKey(element); - - if (!id) return; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - delete data[id]; - - }, - - key: function(element) - { - return getValidatedKey(element); - }, - - has: function(element) - { - var id = getValidatedKey(element); - return id && map.hasOwnProperty(id); - }, - - each: function(callback) - { - for (var key in map) - { - if (map.hasOwnProperty(key)) - { - callback(key, map[key]); - } - } - }, - - data: function(element, name, value) - { - // set data - if (value) - { - if (!name) return null; - - var id = cacheAPI.set(element); - - return data[id][name] = value; - } - // get data - else - { - var id = cacheAPI.key(element); - - return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ? - data[id][name] : - null; - } - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - var getValidatedKey = function(element) - { - var id = element[CID]; - - // If a cached element is cloned in IE, the expando property CID will be also - // cloned (differently than other browsers) resulting in a bug: Firebug Lite - // will think the new cloned node is the old one. To prevent this problem we're - // checking if the cached element matches the given element. - if ( - !supportsDeleteExpando && // the problem happens when supportsDeleteExpando is false - id && // the element has the expando property - map.hasOwnProperty(id) && // there is a cached element with the same id - map[id] != element // but it is a different element than the current one - ) - { - // remove the problematic property - element.removeAttribute(CID); - - id = null; - } - - return id; - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// TODO: xxxpedro -Firebug.Lite.Cache.Event = createCache(); - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -var sourceMap = {}; - -// ************************************************************************************************ -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -Firebug.Lite.Proxy.fetchResourceDisabledMessage = - "/* Firebug Lite resource fetching is disabled.\n" + - "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" + - "More info at http://getfirebug.com/firebuglite#Options */"; - -var fetchResource = function(url) -{ - if (Firebug.disableResourceFetching) - { - var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage; - return source; - } - - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - // Getting the native XHR object so our calls won't be logged in the Console Panel - var xhr = FBL.getNativeXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - var source = sourceMap[url] = xhr.responseText; - return source; -}; - -var fetchProxyResource = function(url) -{ - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - var source = data ? data.contents : ""; - return source; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -/* - http://www.JSON.org/json2.js - 2010-03-20 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, strict: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -// ************************************************************************************************ - -var JSON = window.JSON || {}; - -// ************************************************************************************************ - -(function () { - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } - -// ************************************************************************************************ -// registration - -FBL.JSON = JSON; - -// ************************************************************************************************ -}()); - -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -/* Copyright (c) 2010-2011 Marcus Westin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -var store = (function(){ - var api = {}, - win = window, - doc = win.document, - localStorageName = 'localStorage', - globalStorageName = 'globalStorage', - namespace = '__firebug__storejs__', - storage - - api.disabled = false - api.set = function(key, value) {} - api.get = function(key) {} - api.remove = function(key) {} - api.clear = function() {} - api.transact = function(key, transactionFn) { - var val = api.get(key) - if (typeof val == 'undefined') { val = {} } - transactionFn(val) - api.set(key, val) - } - - api.serialize = function(value) { - return JSON.stringify(value) - } - api.deserialize = function(value) { - if (typeof value != 'string') { return undefined } - return JSON.parse(value) - } - - // Functions to encapsulate questionable FireFox 3.6.13 behavior - // when about.config::dom.storage.enabled === false - // See https://github.com/marcuswestin/store.js/issues#issue/13 - function isLocalStorageNameSupported() { - try { return (localStorageName in win && win[localStorageName]) } - catch(err) { return false } - } - - function isGlobalStorageNameSupported() { - try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) } - catch(err) { return false } - } - - if (isLocalStorageNameSupported()) { - storage = win[localStorageName] - api.set = function(key, val) { storage.setItem(key, api.serialize(val)) } - api.get = function(key) { return api.deserialize(storage.getItem(key)) } - api.remove = function(key) { storage.removeItem(key) } - api.clear = function() { storage.clear() } - - } else if (isGlobalStorageNameSupported()) { - storage = win[globalStorageName][win.location.hostname] - api.set = function(key, val) { storage[key] = api.serialize(val) } - api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) } - api.remove = function(key) { delete storage[key] } - api.clear = function() { for (var key in storage ) { delete storage[key] } } - - } else if (doc.documentElement.addBehavior) { - var storage = doc.createElement('div') - function withIEStorage(storeFunction) { - return function() { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift(storage) - // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx - // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx - // TODO: xxxpedro doc.body is not always available so we must use doc.documentElement. - // We need to make sure this change won't affect the behavior of this library. - doc.documentElement.appendChild(storage) - storage.addBehavior('#default#userData') - storage.load(localStorageName) - var result = storeFunction.apply(api, args) - doc.documentElement.removeChild(storage) - return result - } - } - api.set = withIEStorage(function(storage, key, val) { - storage.setAttribute(key, api.serialize(val)) - storage.save(localStorageName) - }) - api.get = withIEStorage(function(storage, key) { - return api.deserialize(storage.getAttribute(key)) - }) - api.remove = withIEStorage(function(storage, key) { - storage.removeAttribute(key) - storage.save(localStorageName) - }) - api.clear = withIEStorage(function(storage) { - var attributes = storage.XMLDocument.documentElement.attributes - storage.load(localStorageName) - for (var i=0, attr; attr = attributes[i]; i++) { - storage.removeAttribute(attr.name) - } - storage.save(localStorageName) - }) - } - - try { - api.set(namespace, namespace) - if (api.get(namespace) != namespace) { api.disabled = true } - api.remove(namespace) - } catch(e) { - api.disabled = true - } - - return api -})(); - -if (typeof module != 'undefined') { module.exports = store } - - -// ************************************************************************************************ -// registration - -FBL.Store = store; - -// ************************************************************************************************ -})(); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope s_selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - if (Firebug.HTML) - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0); - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -( /** @scope s_domplate */ function() { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -FBL.DomplateTag = function DomplateTag(tagName) -{ - this.tagName = tagName; -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateEmbed = function DomplateEmbed() -{ -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateLoop = function DomplateLoop() -{ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var DomplateTag = FBL.DomplateTag; -var DomplateEmbed = FBL.DomplateEmbed; -var DomplateLoop = FBL.DomplateLoop; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var womb = null; - -FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -var domplate = FBL.domplate; - -FBL.domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -FBL.DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateEmbed.prototype */ -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateLoop.prototype */ -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -/** @class */ -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -/** @class */ -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -/** @namespace */ -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // we must check if the attribute is specified otherwise IE will show them - if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else if (attr.nodeName == "style") - attrs.push({ - nodeName: attr.nodeName, - nodeValue: attr.nodeValue || - // IE won't recognize the attr.nodeValue of - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/firebug.png b/branches/firebug1.4/build/chrome-extension/skin/xp/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/firebug.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/group.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/group.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/html.css b/branches/firebug1.4/build/chrome-extension/skin/xp/html.css deleted file mode 100644 index 9d0afb50..00000000 --- a/branches/firebug1.4/build/chrome-extension/skin/xp/html.css +++ /dev/null @@ -1,272 +0,0 @@ -/* See license.txt for terms of usage */ - -.panelNode-html { - -moz-box-sizing: padding-box; - padding: 4px 0 0 2px; -} - -.nodeBox { - position: relative; - font-family: Monaco, monospace; - padding-left: 13px; - -moz-user-select: -moz-none; -} -.nodeBox.search-selection { - -moz-user-select: text; -} -.twisty { - position: absolute; - left: 0px; - top: 0px; - width: 14px; - height: 14px; -} - -.nodeChildBox { - margin-left: 12px; - display: none; -} - -.nodeLabel, -.nodeCloseLabel { - margin: -2px 2px 0 2px; - border: 2px solid transparent; - -moz-border-radius: 3px; - padding: 0 2px; - color: #000088; -} - -.nodeCloseLabel { - display: none; -} - -.nodeTag { - cursor: pointer; - color: blue; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText, -.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; -} - -.nodeWhiteSpace { - border: 1px solid LightGray; - white-space: pre; /* otherwise the border will be collapsed around zero pixels */ - margin-left: 1px; - color: gray; -} - - -.nodeWhiteSpace_Space { - border: 1px solid #ddd; -} - -.nodeTextEntity { - border: 1px solid gray; - white-space: pre; /* otherwise the border will be collapsed around zero pixels */ - margin-left: 1px; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.highlightOpen > .nodeLabel { - background-color: #EEEEEE; -} - -.nodeBox.highlightOpen > .nodeCloseLabel, -.nodeBox.highlightOpen > .nodeChildBox, -.nodeBox.open > .nodeCloseLabel, -.nodeBox.open > .nodeChildBox { - display: block; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel { - border-color: Highlight; - background-color: Highlight; - color: HighlightText !important; -} - -.nodeBox.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText { - color: inherit !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.highlighted > .nodeLabel { - border-color: Highlight !important; - background-color: cyan !important; - color: #000000 !important; -} - -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText { - color: #000000 !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox, -.nodeBox.nodeHidden .nodeCloseLabel, -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText, -.nodeBox.nodeHidden .nodeText { - color: #888888; -} - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag { - color: #5F82D9; -} - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue { - color: #D86060; -} - -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText { - color: SkyBlue !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.mutated > .nodeLabel, -.nodeAttr.mutated, -.nodeValue.mutated, -.nodeText.mutated, -.nodeBox.mutated > .nodeText { - background-color: #EFFF79; - color: #FF0000 !important; -} - -.nodeBox.selected.mutated > .nodeLabel, -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated { - background-color: #EFFF79; - border-color: #EFFF79; - color: #FF0000 !important; -} - -/************************************************************************************************/ - -.logRow-dirxml { - padding-left: 0; -} - -.soloElement > .nodeBox { - padding-left: 0; -} - -.useA11y .nodeLabel.focused { - outline: 2px solid #FF9933; - -moz-outline-radius: 3px; - outline-offset: -2px; -} - -.useA11y .nodeLabelBox:focus { - outline: none; -} - -/************************************************************************************************/ - -.breakpointCode .twisty { - display: none; -} - -.breakpointCode .nodeBox.containerNodeBox, -.breakpointCode .nodeLabel { - padding-left: 0px; - margin-left: 0px; - font-family: Monaco, monospace !important; -} - -.breakpointCode .nodeTag, -.breakpointCode .nodeAttr, -.breakpointCode .nodeText, -.breakpointCode .nodeValue, -.breakpointCode .nodeLabel { - color: DarkGreen !important; -} - -.breakpointMutationType { - position: absolute; - top: 4px; - right: 20px; - color: gray; -} - - - - - - -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ - - - -/************************************************************************************************/ -/* Twisties */ - -.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow, -.memberRow.hasChildren > .memberLabelCell > .memberLabel, -.hasHeaders .netHrefLabel, -.netPageRow > .netCol > .netPageTitle { - background-image: url(twistyClosed.png); - background-repeat: no-repeat; - background-position: 2px 2px; - min-height: 12px; -} - -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty.opened, -.logRow-spy.opened .spyHead .spyTitle, -.logGroup.opened > .logRow, -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel, -.netPageRow.opened > .netCol > .netPageTitle { - background-image: url(twistyOpen.png); -} - -.twisty { - background-position: 4px 4px; -} \ No newline at end of file diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.png b/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/loading_16.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/min.png b/branches/firebug1.4/build/chrome-extension/skin/xp/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/min.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/minHover.png b/branches/firebug1.4/build/chrome-extension/skin/xp/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/minHover.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/off.png b/branches/firebug1.4/build/chrome-extension/skin/xp/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/off.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/offHover.png b/branches/firebug1.4/build/chrome-extension/skin/xp/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/offHover.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/pixel_transparent.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/roundCorner.svg b/branches/firebug1.4/build/chrome-extension/skin/xp/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.4/build/chrome-extension/skin/xp/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/search.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/search.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/search.png b/branches/firebug1.4/build/chrome-extension/skin/xp/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/search.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/shadow.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/shadow.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/shadow2.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/shadowAlpha.png b/branches/firebug1.4/build/chrome-extension/skin/xp/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/sprite.png b/branches/firebug1.4/build/chrome-extension/skin/xp/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/sprite.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverLeft.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverMid.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverRight.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabLeft.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuCheckbox.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuPin.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuRadio.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTarget.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTargetHover.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMid.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabMid.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tabRight.png b/branches/firebug1.4/build/chrome-extension/skin/xp/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tabRight.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.png b/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.png b/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/titlebarMid.png b/branches/firebug1.4/build/chrome-extension/skin/xp/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/toolbarMid.png b/branches/firebug1.4/build/chrome-extension/skin/xp/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tree_close.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/tree_open.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/up.png b/branches/firebug1.4/build/chrome-extension/skin/xp/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/up.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/upActive.png b/branches/firebug1.4/build/chrome-extension/skin/xp/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/upActive.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/upHover.png b/branches/firebug1.4/build/chrome-extension/skin/xp/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/upHover.png and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.gif b/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.png b/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/build/chrome-extension/skin/xp/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/build/compress.bat b/branches/firebug1.4/build/compress.bat deleted file mode 100644 index ebc54a3e..00000000 --- a/branches/firebug1.4/build/compress.bat +++ /dev/null @@ -1,3 +0,0 @@ -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug-lite.js firebug-lite-debug.js - -pause \ No newline at end of file diff --git a/branches/firebug1.4/build/firebug-lite-beta.js b/branches/firebug1.4/build/firebug-lite-beta.js deleted file mode 100644 index 64857e6e..00000000 --- a/branches/firebug1.4/build/firebug-lite-beta.js +++ /dev/null @@ -1,31176 +0,0 @@ -(function(){ - -/*!************************************************************* - * - * Firebug Lite 1.4.0 - * - * Copyright (c) 2007, Parakey Inc. - * Released under BSD license. - * More information: http://getfirebug.com/firebuglite - * - **************************************************************/ - -/*! - * CSS selectors powered by: - * - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -/** @namespace describe lib */ - -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE -var FBL = {}; - -( /** @scope s_lib @this FBL */ function() { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -var productionDir = "http://getfirebug.com/releases/lite/"; -var bookmarkletVersion = 4; - -// ************************************************************************************************ - -var reNotWhitespace = /[^\s]/; -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/; - -// Globals -this.reJavascript = /\s*javascript:\s*(.*)/; -this.reChrome = /chrome:\/\/([^\/]*)\//; -this.reFile = /file:\/\/([^\/]*)\//; - - -// ************************************************************************************************ -// properties - -var userAgent = navigator.userAgent.toLowerCase(); -this.isFirefox = /firefox/.test(userAgent); -this.isOpera = /opera/.test(userAgent); -this.isSafari = /webkit/.test(userAgent); -this.isIE = /msie/.test(userAgent) && !/opera/.test(userAgent); -this.isIE6 = /msie 6/i.test(navigator.appVersion); -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; -this.isIElt8 = this.isIE && (this.browserVersion-0 < 8); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.NS = null; -this.pixelsPerInch = null; - - -// ************************************************************************************************ -// Namespaces - -var namespaces = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.ns = function(fn) -{ - var ns = {}; - namespaces.push(fn, ns); - return ns; -}; - -var FBTrace = null; - -this.initialize = function() -{ - // Firebug Lite is already running in persistent mode so we just quit - if (window.firebug && firebug.firebuglite || window.console && console.firebuglite) - return; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize environment - - // point the FBTrace object to the local variable - if (FBL.FBTrace) - FBTrace = FBL.FBTrace; - else - FBTrace = FBL.FBTrace = {}; - - // check if the actual window is a persisted chrome context - var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object"; - - // chrome context of the persistent application - if (isChromeContext) - { - // TODO: xxxpedro persist - make a better synchronization - sharedEnv = window.Firebug.SharedEnv; - delete window.Firebug.SharedEnv; - - FBL.Env = sharedEnv; - FBL.Env.isChromeContext = true; - FBTrace.messageQueue = FBL.Env.traceMessageQueue; - } - // non-persistent application - else - { - FBL.NS = document.documentElement.namespaceURI; - FBL.Env.browser = window; - FBL.Env.destroy = destroyEnvironment; - - if (document.documentElement.getAttribute("debug") == "true") - FBL.Env.Options.startOpened = true; - - // find the URL location of the loaded application - findLocation(); - - // TODO: get preferences here... - // The problem is that we don't have the Firebug object yet, so we can't use - // Firebug.loadPrefs. We're using the Store module directly instead. - var prefs = FBL.Store.get("FirebugLite") || {}; - FBL.Env.DefaultOptions = FBL.Env.Options; - FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {}); - - if (FBL.isFirefox && - typeof FBL.Env.browser.console == "object" && - FBL.Env.browser.console.firebug && - FBL.Env.Options.disableWhenFirebugActive) - return; - } - - // exposes the FBL to the global namespace when in debug mode - if (FBL.Env.isDebugMode) - { - FBL.Env.browser.FBL = FBL; - } - - // check browser compatibilities - this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat"; - this.isIEQuiksMode = this.isIE && this.isQuiksMode; - this.isIEStantandMode = this.isIE && !this.isQuiksMode; - - this.noFixedPosition = this.isIE6 || this.isIEQuiksMode; - - // after creating/synchronizing the environment, initialize the FBTrace module - if (FBL.Env.Options.enableTrace) FBTrace.initialize(); - - if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize namespaces - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN"); - - for (var i = 0; i < namespaces.length; i += 2) - { - var fn = namespaces[i]; - var ns = namespaces[i+1]; - fn.apply(ns); - } - - if (FBTrace.DBG_INITIALIZE) { - FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END"); - FBTrace.sysout("FBL waitForDocument", "waiting document load"); - } - - FBL.Ajax.initialize(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // finish environment initialization - FBL.Firebug.loadPrefs(); - - if (FBL.Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make a better synchronization - if (isChromeContext) - { - FBL.FirebugChrome.clone(FBL.Env.FirebugChrome); - } - else - { - FBL.Env.FirebugChrome = FBL.FirebugChrome; - FBL.Env.traceMessageQueue = FBTrace.messageQueue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // wait document load - - waitForDocument(); -}; - -var waitForDocument = function waitForDocument() -{ - // document.body not available in XML+XSL documents in Firefox - var doc = FBL.Env.browser.document; - var body = doc.getElementsByTagName("body")[0]; - - if (body) - { - calculatePixelsPerInch(doc, body); - onDocumentLoad(); - } - else - setTimeout(waitForDocument, 50); -}; - -var onDocumentLoad = function onDocumentLoad() -{ - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded"); - - // fix IE6 problem with cache of background images, causing a lot of flickering - if (FBL.isIE6) - fixIE6BackgroundImageCache(); - - // chrome context of the persistent application - if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext) - { - // finally, start the application in the chrome context - FBL.Firebug.initialize(); - - // if is not development mode, remove the shared environment cache object - // used to synchronize the both persistent contexts - if (!FBL.Env.isDevelopmentMode) - { - sharedEnv.destroy(); - sharedEnv = null; - } - } - // non-persistent application - else - { - FBL.FirebugChrome.create(); - } -}; - -// ************************************************************************************************ -// Env - -var sharedEnv; - -this.Env = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env Options (will be transported to Firebug options) - Options: - { - saveCookies: true, - - saveWindowPosition: false, - saveCommandLineHistory: false, - - startOpened: false, - startInNewWindow: false, - showIconWhenHidden: true, - - overrideConsole: true, - ignoreFirebugElements: true, - disableWhenFirebugActive: true, - - disableXHRListener: false, - disableResourceFetching: false, - - enableTrace: false, - enablePersistent: false - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Library location - Location: - { - sourceDir: null, - baseDir: null, - skinDir: null, - skin: null, - app: null - }, - - skin: "xp", - useLocalSkin: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env states - isDevelopmentMode: false, - isDebugMode: false, - isChromeContext: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Env references - browser: null, - chrome: null -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var destroyEnvironment = function destroyEnvironment() -{ - setTimeout(function() - { - FBL = null; - }, 100); -}; - -// ************************************************************************************************ -// Library location - -var findLocation = function findLocation() -{ - var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; - var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//; - var isGetFirebugSite; - - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = document; - - // Firebug Lite 1.3.0 bookmarklet identification - var script = doc.getElementById("FirebugLite"); - - var scriptSrc; - var hasSrcAttribute = true; - - // If the script was loaded via bookmarklet, we already have the script tag - if (script) - { - scriptSrc = script.src; - file = reFirebugFile.exec(scriptSrc); - - var version = script.getAttribute("FirebugLite"); - var number = version ? parseInt(version) : 0; - - if (!version || !number || number < bookmarkletVersion) - { - FBL.Env.bookmarkletOutdated = true; - } - } - // otherwise we must search for the correct script tag - else - { - for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++) - { - var file = null; - if ( si.nodeName.toLowerCase() == "script" ) - { - if (file = reFirebugFile.exec(si.getAttribute("firebugSrc"))) - { - scriptSrc = si.getAttribute("firebugSrc"); - hasSrcAttribute = false; - } - else if (file = reFirebugFile.exec(si.src)) - { - scriptSrc = si.src; - } - else - continue; - - script = si; - break; - } - } - } - - // mark the script tag to be ignored by Firebug Lite - if (script) - script.firebugIgnore = true; - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(scriptSrc)) { - path = rePath.exec(scriptSrc)[1]; - - } - // relative path - else - { - var r = rePath.exec(scriptSrc); - var src = r ? r[1] : scriptSrc; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - isGetFirebugSite = reGetFirebugSite.test(path); - - if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1) - { - // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like - // https://getfirebug.com/firebug-lite.js, then we must manually add the full path, - // otherwise the Env.Location will hold the wrong path, which will in turn lead to - // undesirable effects like the problem in Issue 4587 - path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/"); - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 && - // but we cannot use the locan skin when loaded from getfirebug.com, otherwise - // the bookmarklet won't work when visiting getfirebug.com - !isGetFirebugSite; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - if (hasSrcAttribute) - { - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - } - - if (!Env.Options.saveCookies) - FBL.Store.remove("FirebugLite"); - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - { - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return ob + ""; - } - catch(E) - { - FBTrace.sysout("Lib.safeToString() failed for ", ob); - return ""; - } - } - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - var chrome = Firebug.chrome; - - if (elt.offsetLeft) - ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft"); - if (elt.offsetTop) - ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop"); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - // IE will fail when reading the frameElement property of a popup window. - // We don't need it anyway once it is outside the (popup) viewport, so we're - // ignoring the frameElement check when the window is a popup - if (!otherView.opener && otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -}; - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -}; - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -}; - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -}; - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -}; - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -}; - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -}; - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - try - { - // FIXME: xxxpedro this is failing in IE for the global "external" object - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); - } - catch (E) - { - FBTrace.sysout("Lib.isFunction() failed for ", object); - return false; - } -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = FBL.getNativeXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports FBL.Firebug as Firebug - */ -FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.4.0", - revision: "$Revision$", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - Firebug.loadPrefs(); - Firebug.context.persistedState.isOpen = false; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector && Firebug.Inspector.create) - Firebug.Inspector.create(); - - if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets) - FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Firebug.disableResourceFetching) - Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " + - "resource fetching is disabled. To enabled it set the Firebug Lite option " + - "\"disableResourceFetching\" to \"false\". More info at " + - "http://getfirebug.com/firebuglite#Options"], - Firebug.context, "warn"); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.saveCookies) - Firebug.savePrefs(); - - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - try - { - chromeMap[name].destroy(); - } - catch(E) - { - if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name); - } - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - Firebug.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - Firebug.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.DefaultOptions; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function() - { - this.restorePrefs(); - - var prefs = Store.get("FirebugLite") || {}; - var options = prefs.options; - var persistedState = prefs.persistedState || FBL.defaultPersistedState; - - for (var name in options) - { - if (options.hasOwnProperty(name)) - Firebug[name] = options[name]; - } - - if (Firebug.context && persistedState) - Firebug.context.persistedState = persistedState; - }, - - savePrefs: function() - { - var prefs = { - options: {} - }; - - var EnvOptions = Env.Options; - var options = prefs.options; - for (var name in EnvOptions) - { - if (EnvOptions.hasOwnProperty(name)) - { - options[name] = Firebug[name]; - } - } - - var persistedState = Firebug.context.persistedState; - if (!persistedState) - { - persistedState = Firebug.context.persistedState = FBL.defaultPersistedState; - } - - prefs.persistedState = persistedState; - - Store.set("FirebugLite", prefs); - }, - - erasePrefs: function() - { - Store.remove("FirebugLite"); - this.restorePrefs(); - } -}; - -Firebug.restorePrefs(); - -// xxxpedro should we remove this? -window.Firebug = FBL.Firebug; - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - if (Firebug.InfoTip) - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - if (Firebug.InfoTip) - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
  • this.startMeasuring(view);
  • - *
  • var size = this.measureText(lineNoCharsSpacer);
  • - *
  • this.stopMeasuring();
  • - *
- * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope s_gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - Firebug.context.persistedState.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0; - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - else if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - - else if (unit == "ex") - return this.exToPixels(el, value); - - // TODO: add other units. Maybe create a better general way - // to calculate measurements in different units. - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - }; - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI" - //height: 350 // obsolete - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -FBL.defaultPersistedState = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - isOpen: false, - height: 300, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - htmlSelectionStack: [] - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - //isOpen: false, - //height: 300, - //sidePanelWidth: 350, - - //selectedPanelName: "Console", - //selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var browserWin = Env.browser.window; - var browserContext = new Context(browserWin); - var prefs = Store.get("FirebugLite"); - var persistedState = prefs && prefs.persistedState || defaultPersistedState; - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - var browserWinSize = browserContext.getWindowSize(); - var height = persistedState.height || 300; - - height = Math.min(browserWinSize.height, height); - height = Math.max(200, height); - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = height + "px"; - - // avoid flickering during chrome rendering - //if (isFirefox) - // node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = persistedState.popupHeight || 300; - var browserWinSize = browserContext.getWindowSize(); - - var browserWinLeft = typeof browserWin.screenX == "number" ? - browserWin.screenX : browserWin.screenLeft; - - var popupLeft = typeof persistedState.popupLeft == "number" ? - persistedState.popupLeft : browserWinLeft; - - var browserWinTop = typeof browserWin.screenY == "number" ? - browserWin.screenY : browserWin.screenTop; - - var popupTop = typeof persistedState.popupTop == "number" ? - persistedState.popupTop : - Math.max( - 0, - Math.min( - browserWinTop + browserWinSize.height - height, - // Google Chrome bug - screen.availHeight - height - 61 - ) - ); - - var popupWidth = typeof persistedState.popupWidth == "number" ? - persistedState.popupWidth : - Math.max( - 0, - Math.min( - browserWinSize.width, - // Opera opens popup in a new tab if it's too big! - screen.availWidth-10 - ) - ); - - var popupHeight = typeof persistedState.popupHeight == "number" ? - persistedState.popupHeight : 300; - - var options = [ - "true,top=", popupTop, - ",left=", popupLeft, - ",height=", popupHeight, - ",width=", popupWidth, - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - }, useLocalSkin ? 200 : 0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Disable Resource Fetching", - type: "checkbox", - value: "disableResourceFetching", - checked: Firebug.disableResourceFetching, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - restorePrefs: function(target) - { - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(Firebug.context.persistedState.selectedPanelName); - - if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - this.close(); - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.height = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!Firebug.context.persistedState.isOpen) - { - Firebug.context.persistedState.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - /// TODO: xxxpedro FOUC - node.style.visibility = "visible"; - setTimeout(function(){ - ///node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (Firebug.context.persistedState.isOpen) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - Firebug.context.persistedState.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = Firebug.context.persistedState.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - //[Firebug.chrome.window, "beforeunload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - var chromeWin = Firebug.chrome.window; - var left = chromeWin.screenX || chromeWin.screenLeft; - var top = chromeWin.screenY || chromeWin.screenTop; - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.popupTop = top; - Firebug.context.persistedState.popupLeft = left; - Firebug.context.persistedState.popupWidth = size.width; - Firebug.context.persistedState.popupHeight = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - Firebug.loadPrefs(); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - - setTimeout(function(){ - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - },50); - - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - Firebug.context.persistedState.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - Firebug.context.persistedState.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug-" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var data = {}; - - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = getValidatedKey(element); - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - data[id] = {}; - } - - return id; - }, - - unset: function(element) - { - var id = getValidatedKey(element); - - if (!id) return; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - delete data[id]; - - }, - - key: function(element) - { - return getValidatedKey(element); - }, - - has: function(element) - { - var id = getValidatedKey(element); - return id && map.hasOwnProperty(id); - }, - - each: function(callback) - { - for (var key in map) - { - if (map.hasOwnProperty(key)) - { - callback(key, map[key]); - } - } - }, - - data: function(element, name, value) - { - // set data - if (value) - { - if (!name) return null; - - var id = cacheAPI.set(element); - - return data[id][name] = value; - } - // get data - else - { - var id = cacheAPI.key(element); - - return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ? - data[id][name] : - null; - } - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - var getValidatedKey = function(element) - { - var id = element[CID]; - - // If a cached element is cloned in IE, the expando property CID will be also - // cloned (differently than other browsers) resulting in a bug: Firebug Lite - // will think the new cloned node is the old one. To prevent this problem we're - // checking if the cached element matches the given element. - if ( - !supportsDeleteExpando && // the problem happens when supportsDeleteExpando is false - id && // the element has the expando property - map.hasOwnProperty(id) && // there is a cached element with the same id - map[id] != element // but it is a different element than the current one - ) - { - // remove the problematic property - element.removeAttribute(CID); - - id = null; - } - - return id; - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// TODO: xxxpedro -Firebug.Lite.Cache.Event = createCache(); - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -var sourceMap = {}; - -// ************************************************************************************************ -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -Firebug.Lite.Proxy.fetchResourceDisabledMessage = - "/* Firebug Lite resource fetching is disabled.\n" + - "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" + - "More info at http://getfirebug.com/firebuglite#Options */"; - -var fetchResource = function(url) -{ - if (Firebug.disableResourceFetching) - { - var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage; - return source; - } - - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - // Getting the native XHR object so our calls won't be logged in the Console Panel - var xhr = FBL.getNativeXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - var source = sourceMap[url] = xhr.responseText; - return source; -}; - -var fetchProxyResource = function(url) -{ - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - var source = data ? data.contents : ""; - return source; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -/* - http://www.JSON.org/json2.js - 2010-03-20 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, strict: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -// ************************************************************************************************ - -var JSON = window.JSON || {}; - -// ************************************************************************************************ - -(function () { - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } - -// ************************************************************************************************ -// registration - -FBL.JSON = JSON; - -// ************************************************************************************************ -}()); - -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -/* Copyright (c) 2010-2011 Marcus Westin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -var store = (function(){ - var api = {}, - win = window, - doc = win.document, - localStorageName = 'localStorage', - globalStorageName = 'globalStorage', - namespace = '__firebug__storejs__', - storage - - api.disabled = false - api.set = function(key, value) {} - api.get = function(key) {} - api.remove = function(key) {} - api.clear = function() {} - api.transact = function(key, transactionFn) { - var val = api.get(key) - if (typeof val == 'undefined') { val = {} } - transactionFn(val) - api.set(key, val) - } - - api.serialize = function(value) { - return JSON.stringify(value) - } - api.deserialize = function(value) { - if (typeof value != 'string') { return undefined } - return JSON.parse(value) - } - - // Functions to encapsulate questionable FireFox 3.6.13 behavior - // when about.config::dom.storage.enabled === false - // See https://github.com/marcuswestin/store.js/issues#issue/13 - function isLocalStorageNameSupported() { - try { return (localStorageName in win && win[localStorageName]) } - catch(err) { return false } - } - - function isGlobalStorageNameSupported() { - try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) } - catch(err) { return false } - } - - if (isLocalStorageNameSupported()) { - storage = win[localStorageName] - api.set = function(key, val) { storage.setItem(key, api.serialize(val)) } - api.get = function(key) { return api.deserialize(storage.getItem(key)) } - api.remove = function(key) { storage.removeItem(key) } - api.clear = function() { storage.clear() } - - } else if (isGlobalStorageNameSupported()) { - storage = win[globalStorageName][win.location.hostname] - api.set = function(key, val) { storage[key] = api.serialize(val) } - api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) } - api.remove = function(key) { delete storage[key] } - api.clear = function() { for (var key in storage ) { delete storage[key] } } - - } else if (doc.documentElement.addBehavior) { - var storage = doc.createElement('div') - function withIEStorage(storeFunction) { - return function() { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift(storage) - // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx - // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx - // TODO: xxxpedro doc.body is not always available so we must use doc.documentElement. - // We need to make sure this change won't affect the behavior of this library. - doc.documentElement.appendChild(storage) - storage.addBehavior('#default#userData') - storage.load(localStorageName) - var result = storeFunction.apply(api, args) - doc.documentElement.removeChild(storage) - return result - } - } - api.set = withIEStorage(function(storage, key, val) { - storage.setAttribute(key, api.serialize(val)) - storage.save(localStorageName) - }) - api.get = withIEStorage(function(storage, key) { - return api.deserialize(storage.getAttribute(key)) - }) - api.remove = withIEStorage(function(storage, key) { - storage.removeAttribute(key) - storage.save(localStorageName) - }) - api.clear = withIEStorage(function(storage) { - var attributes = storage.XMLDocument.documentElement.attributes - storage.load(localStorageName) - for (var i=0, attr; attr = attributes[i]; i++) { - storage.removeAttribute(attr.name) - } - storage.save(localStorageName) - }) - } - - try { - api.set(namespace, namespace) - if (api.get(namespace) != namespace) { api.disabled = true } - api.remove(namespace) - } catch(e) { - api.disabled = true - } - - return api -})(); - -if (typeof module != 'undefined') { module.exports = store } - - -// ************************************************************************************************ -// registration - -FBL.Store = store; - -// ************************************************************************************************ -})(); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope s_selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - if (Firebug.HTML) - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0); - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -( /** @scope s_domplate */ function() { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -FBL.DomplateTag = function DomplateTag(tagName) -{ - this.tagName = tagName; -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateEmbed = function DomplateEmbed() -{ -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateLoop = function DomplateLoop() -{ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var DomplateTag = FBL.DomplateTag; -var DomplateEmbed = FBL.DomplateEmbed; -var DomplateLoop = FBL.DomplateLoop; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var womb = null; - -FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -var domplate = FBL.domplate; - -FBL.domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -FBL.DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateEmbed.prototype */ -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateLoop.prototype */ -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -/** @class */ -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -/** @class */ -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -/** @namespace */ -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // we must check if the attribute is specified otherwise IE will show them - if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else if (attr.nodeName == "style") - attrs.push({ - nodeName: attr.nodeName, - nodeValue: attr.nodeValue || - // IE won't recognize the attr.nodeValue of '; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Disable Resource Fetching", - type: "checkbox", - value: "disableResourceFetching", - checked: Firebug.disableResourceFetching, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - restorePrefs: function(target) - { - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(Firebug.context.persistedState.selectedPanelName); - - if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - this.close(); - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.height = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!Firebug.context.persistedState.isOpen) - { - Firebug.context.persistedState.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - /// TODO: xxxpedro FOUC - node.style.visibility = "visible"; - setTimeout(function(){ - ///node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (Firebug.context.persistedState.isOpen) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - Firebug.context.persistedState.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = Firebug.context.persistedState.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - //[Firebug.chrome.window, "beforeunload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - var chromeWin = Firebug.chrome.window; - var left = chromeWin.screenX || chromeWin.screenLeft; - var top = chromeWin.screenY || chromeWin.screenTop; - var size = Firebug.chrome.getWindowSize(); - - Firebug.context.persistedState.popupTop = top; - Firebug.context.persistedState.popupLeft = left; - Firebug.context.persistedState.popupWidth = size.width; - Firebug.context.persistedState.popupHeight = size.height; - - if (Firebug.saveCookies) - Firebug.savePrefs(); - - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - Firebug.loadPrefs(); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - - setTimeout(function(){ - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - },50); - - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - Firebug.context.persistedState.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - Firebug.context.persistedState.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug-" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var data = {}; - - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = getValidatedKey(element); - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - data[id] = {}; - } - - return id; - }, - - unset: function(element) - { - var id = getValidatedKey(element); - - if (!id) return; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - delete data[id]; - - }, - - key: function(element) - { - return getValidatedKey(element); - }, - - has: function(element) - { - var id = getValidatedKey(element); - return id && map.hasOwnProperty(id); - }, - - each: function(callback) - { - for (var key in map) - { - if (map.hasOwnProperty(key)) - { - callback(key, map[key]); - } - } - }, - - data: function(element, name, value) - { - // set data - if (value) - { - if (!name) return null; - - var id = cacheAPI.set(element); - - return data[id][name] = value; - } - // get data - else - { - var id = cacheAPI.key(element); - - return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ? - data[id][name] : - null; - } - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - var getValidatedKey = function(element) - { - var id = element[CID]; - - // If a cached element is cloned in IE, the expando property CID will be also - // cloned (differently than other browsers) resulting in a bug: Firebug Lite - // will think the new cloned node is the old one. To prevent this problem we're - // checking if the cached element matches the given element. - if ( - !supportsDeleteExpando && // the problem happens when supportsDeleteExpando is false - id && // the element has the expando property - map.hasOwnProperty(id) && // there is a cached element with the same id - map[id] != element // but it is a different element than the current one - ) - { - // remove the problematic property - element.removeAttribute(CID); - - id = null; - } - - return id; - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// TODO: xxxpedro -Firebug.Lite.Cache.Event = createCache(); - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -var sourceMap = {}; - -// ************************************************************************************************ -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -Firebug.Lite.Proxy.fetchResourceDisabledMessage = - "/* Firebug Lite resource fetching is disabled.\n" + - "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" + - "More info at http://getfirebug.com/firebuglite#Options */"; - -var fetchResource = function(url) -{ - if (Firebug.disableResourceFetching) - { - var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage; - return source; - } - - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - // Getting the native XHR object so our calls won't be logged in the Console Panel - var xhr = FBL.getNativeXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - var source = sourceMap[url] = xhr.responseText; - return source; -}; - -var fetchProxyResource = function(url) -{ - if (sourceMap.hasOwnProperty(url)) - return sourceMap[url]; - - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - var source = data ? data.contents : ""; - return source; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -/* - http://www.JSON.org/json2.js - 2010-03-20 - - Public Domain. - - NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. - - See http://www.JSON.org/js.html - - - This code should be minified before deployment. - See http://javascript.crockford.com/jsmin.html - - USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO - NOT CONTROL. - - - This file creates a global JSON object containing two methods: stringify - and parse. - - JSON.stringify(value, replacer, space) - value any JavaScript value, usually an object or array. - - replacer an optional parameter that determines how object - values are stringified for objects. It can be a - function or an array of strings. - - space an optional parameter that specifies the indentation - of nested structures. If it is omitted, the text will - be packed without extra whitespace. If it is a number, - it will specify the number of spaces to indent at each - level. If it is a string (such as '\t' or ' '), - it contains the characters used to indent at each level. - - This method produces a JSON text from a JavaScript value. - - When an object value is found, if the object contains a toJSON - method, its toJSON method will be called and the result will be - stringified. A toJSON method does not serialize: it returns the - value represented by the name/value pair that should be serialized, - or undefined if nothing should be serialized. The toJSON method - will be passed the key associated with the value, and this will be - bound to the value - - For example, this would serialize Dates as ISO strings. - - Date.prototype.toJSON = function (key) { - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - return this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z'; - }; - - You can provide an optional replacer method. It will be passed the - key and value of each member, with this bound to the containing - object. The value that is returned from your method will be - serialized. If your method returns undefined, then the member will - be excluded from the serialization. - - If the replacer parameter is an array of strings, then it will be - used to select the members to be serialized. It filters the results - such that only members with keys listed in the replacer array are - stringified. - - Values that do not have JSON representations, such as undefined or - functions, will not be serialized. Such values in objects will be - dropped; in arrays they will be replaced with null. You can use - a replacer function to replace those with JSON values. - JSON.stringify(undefined) returns undefined. - - The optional space parameter produces a stringification of the - value that is filled with line breaks and indentation to make it - easier to read. - - If the space parameter is a non-empty string, then that string will - be used for indentation. If the space parameter is a number, then - the indentation will be that many spaces. - - Example: - - text = JSON.stringify(['e', {pluribus: 'unum'}]); - // text is '["e",{"pluribus":"unum"}]' - - - text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); - // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' - - text = JSON.stringify([new Date()], function (key, value) { - return this[key] instanceof Date ? - 'Date(' + this[key] + ')' : value; - }); - // text is '["Date(---current time---)"]' - - - JSON.parse(text, reviver) - This method parses a JSON text to produce an object or array. - It can throw a SyntaxError exception. - - The optional reviver parameter is a function that can filter and - transform the results. It receives each of the keys and values, - and its return value is used instead of the original value. - If it returns what it received, then the structure is not modified. - If it returns undefined then the member is deleted. - - Example: - - // Parse the text. Values that look like ISO date strings will - // be converted to Date objects. - - myData = JSON.parse(text, function (key, value) { - var a; - if (typeof value === 'string') { - a = -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); - if (a) { - return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], - +a[5], +a[6])); - } - } - return value; - }); - - myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { - var d; - if (typeof value === 'string' && - value.slice(0, 5) === 'Date(' && - value.slice(-1) === ')') { - d = new Date(value.slice(5, -1)); - if (d) { - return d; - } - } - return value; - }); - - - This is a reference implementation. You are free to copy, modify, or - redistribute. -*/ - -/*jslint evil: true, strict: false */ - -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, - call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, - getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, - lastIndex, length, parse, prototype, push, replace, slice, stringify, - test, toJSON, toString, valueOf -*/ - - -// Create a JSON object only if one does not already exist. We create the -// methods in a closure to avoid creating global variables. - -// ************************************************************************************************ - -var JSON = window.JSON || {}; - -// ************************************************************************************************ - -(function () { - - function f(n) { - // Format integers to have at least two digits. - return n < 10 ? '0' + n : n; - } - - if (typeof Date.prototype.toJSON !== 'function') { - - Date.prototype.toJSON = function (key) { - - return isFinite(this.valueOf()) ? - this.getUTCFullYear() + '-' + - f(this.getUTCMonth() + 1) + '-' + - f(this.getUTCDate()) + 'T' + - f(this.getUTCHours()) + ':' + - f(this.getUTCMinutes()) + ':' + - f(this.getUTCSeconds()) + 'Z' : null; - }; - - String.prototype.toJSON = - Number.prototype.toJSON = - Boolean.prototype.toJSON = function (key) { - return this.valueOf(); - }; - } - - var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, - gap, - indent, - meta = { // table of character substitutions - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '\\': '\\\\' - }, - rep; - - - function quote(string) { - -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can safely slap some quotes around it. -// Otherwise we must also replace the offending characters with safe escape -// sequences. - - escapable.lastIndex = 0; - return escapable.test(string) ? - '"' + string.replace(escapable, function (a) { - var c = meta[a]; - return typeof c === 'string' ? c : - '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) + '"' : - '"' + string + '"'; - } - - - function str(key, holder) { - -// Produce a string from holder[key]. - - var i, // The loop counter. - k, // The member key. - v, // The member value. - length, - mind = gap, - partial, - value = holder[key]; - -// If the value has a toJSON method, call it to obtain a replacement value. - - if (value && typeof value === 'object' && - typeof value.toJSON === 'function') { - value = value.toJSON(key); - } - -// If we were called with a replacer function, then call the replacer to -// obtain a replacement value. - - if (typeof rep === 'function') { - value = rep.call(holder, key, value); - } - -// What happens next depends on the value's type. - - switch (typeof value) { - case 'string': - return quote(value); - - case 'number': - -// JSON numbers must be finite. Encode non-finite numbers as null. - - return isFinite(value) ? String(value) : 'null'; - - case 'boolean': - case 'null': - -// If the value is a boolean or null, convert it to a string. Note: -// typeof null does not produce 'null'. The case is included here in -// the remote chance that this gets fixed someday. - - return String(value); - -// If the type is 'object', we might be dealing with an object or an array or -// null. - - case 'object': - -// Due to a specification blunder in ECMAScript, typeof null is 'object', -// so watch out for that case. - - if (!value) { - return 'null'; - } - -// Make an array to hold the partial results of stringifying this object value. - - gap += indent; - partial = []; - -// Is the value an array? - - if (Object.prototype.toString.apply(value) === '[object Array]') { - -// The value is an array. Stringify every element. Use null as a placeholder -// for non-JSON values. - - length = value.length; - for (i = 0; i < length; i += 1) { - partial[i] = str(i, value) || 'null'; - } - -// Join all of the elements together, separated with commas, and wrap them in -// brackets. - - v = partial.length === 0 ? '[]' : - gap ? '[\n' + gap + - partial.join(',\n' + gap) + '\n' + - mind + ']' : - '[' + partial.join(',') + ']'; - gap = mind; - return v; - } - -// If the replacer is an array, use it to select the members to be stringified. - - if (rep && typeof rep === 'object') { - length = rep.length; - for (i = 0; i < length; i += 1) { - k = rep[i]; - if (typeof k === 'string') { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } else { - -// Otherwise, iterate through all of the keys in the object. - - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = str(k, value); - if (v) { - partial.push(quote(k) + (gap ? ': ' : ':') + v); - } - } - } - } - -// Join all of the member texts together, separated with commas, -// and wrap them in braces. - - v = partial.length === 0 ? '{}' : - gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + - mind + '}' : '{' + partial.join(',') + '}'; - gap = mind; - return v; - } - } - -// If the JSON object does not yet have a stringify method, give it one. - - if (typeof JSON.stringify !== 'function') { - JSON.stringify = function (value, replacer, space) { - -// The stringify method takes a value and an optional replacer, and an optional -// space parameter, and returns a JSON text. The replacer can be a function -// that can replace values, or an array of strings that will select the keys. -// A default replacer method can be provided. Use of the space parameter can -// produce text that is more easily readable. - - var i; - gap = ''; - indent = ''; - -// If the space parameter is a number, make an indent string containing that -// many spaces. - - if (typeof space === 'number') { - for (i = 0; i < space; i += 1) { - indent += ' '; - } - -// If the space parameter is a string, it will be used as the indent string. - - } else if (typeof space === 'string') { - indent = space; - } - -// If there is a replacer, it must be a function or an array. -// Otherwise, throw an error. - - rep = replacer; - if (replacer && typeof replacer !== 'function' && - (typeof replacer !== 'object' || - typeof replacer.length !== 'number')) { - throw new Error('JSON.stringify'); - } - -// Make a fake root object containing our value under the key of ''. -// Return the result of stringifying the value. - - return str('', {'': value}); - }; - } - - -// If the JSON object does not yet have a parse method, give it one. - - if (typeof JSON.parse !== 'function') { - JSON.parse = function (text, reviver) { - -// The parse method takes a text and an optional reviver function, and returns -// a JavaScript value if the text is a valid JSON text. - - var j; - - function walk(holder, key) { - -// The walk method is used to recursively walk the resulting structure so -// that modifications can be made. - - var k, v, value = holder[key]; - if (value && typeof value === 'object') { - for (k in value) { - if (Object.hasOwnProperty.call(value, k)) { - v = walk(value, k); - if (v !== undefined) { - value[k] = v; - } else { - delete value[k]; - } - } - } - } - return reviver.call(holder, key, value); - } - - -// Parsing happens in four stages. In the first stage, we replace certain -// Unicode characters with escape sequences. JavaScript handles many characters -// incorrectly, either silently deleting them, or treating them as line endings. - - text = String(text); - cx.lastIndex = 0; - if (cx.test(text)) { - text = text.replace(cx, function (a) { - return '\\u' + - ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }); - } - -// In the second stage, we run the text against regular expressions that look -// for non-JSON patterns. We are especially concerned with '()' and 'new' -// because they can cause invocation, and '=' because it can cause mutation. -// But just to be safe, we want to reject all unexpected forms. - -// We split the second stage into 4 regexp operations in order to work around -// crippling inefficiencies in IE's and Safari's regexp engines. First we -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we -// replace all simple value tokens with ']' characters. Third, we delete all -// open brackets that follow a colon or comma or that begin the text. Finally, -// we look to see that the remaining characters are only whitespace or ']' or -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. - - if (/^[\],:{}\s]*$/. -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'). -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'). -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { - -// In the third stage we use the eval function to compile the text into a -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity -// in JavaScript: it can begin a block or an object literal. We wrap the text -// in parens to eliminate the ambiguity. - - j = eval('(' + text + ')'); - -// In the optional fourth stage, we recursively walk the new structure, passing -// each name/value pair to a reviver function for possible transformation. - - return typeof reviver === 'function' ? - walk({'': j}, '') : j; - } - -// If the text is not JSON parseable, then a SyntaxError is thrown. - - throw new SyntaxError('JSON.parse'); - }; - } - -// ************************************************************************************************ -// registration - -FBL.JSON = JSON; - -// ************************************************************************************************ -}()); - -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -/* Copyright (c) 2010-2011 Marcus Westin - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -var store = (function(){ - var api = {}, - win = window, - doc = win.document, - localStorageName = 'localStorage', - globalStorageName = 'globalStorage', - namespace = '__firebug__storejs__', - storage - - api.disabled = false - api.set = function(key, value) {} - api.get = function(key) {} - api.remove = function(key) {} - api.clear = function() {} - api.transact = function(key, transactionFn) { - var val = api.get(key) - if (typeof val == 'undefined') { val = {} } - transactionFn(val) - api.set(key, val) - } - - api.serialize = function(value) { - return JSON.stringify(value) - } - api.deserialize = function(value) { - if (typeof value != 'string') { return undefined } - return JSON.parse(value) - } - - // Functions to encapsulate questionable FireFox 3.6.13 behavior - // when about.config::dom.storage.enabled === false - // See https://github.com/marcuswestin/store.js/issues#issue/13 - function isLocalStorageNameSupported() { - try { return (localStorageName in win && win[localStorageName]) } - catch(err) { return false } - } - - function isGlobalStorageNameSupported() { - try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) } - catch(err) { return false } - } - - if (isLocalStorageNameSupported()) { - storage = win[localStorageName] - api.set = function(key, val) { storage.setItem(key, api.serialize(val)) } - api.get = function(key) { return api.deserialize(storage.getItem(key)) } - api.remove = function(key) { storage.removeItem(key) } - api.clear = function() { storage.clear() } - - } else if (isGlobalStorageNameSupported()) { - storage = win[globalStorageName][win.location.hostname] - api.set = function(key, val) { storage[key] = api.serialize(val) } - api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) } - api.remove = function(key) { delete storage[key] } - api.clear = function() { for (var key in storage ) { delete storage[key] } } - - } else if (doc.documentElement.addBehavior) { - var storage = doc.createElement('div') - function withIEStorage(storeFunction) { - return function() { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift(storage) - // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx - // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx - // TODO: xxxpedro doc.body is not always available so we must use doc.documentElement. - // We need to make sure this change won't affect the behavior of this library. - doc.documentElement.appendChild(storage) - storage.addBehavior('#default#userData') - storage.load(localStorageName) - var result = storeFunction.apply(api, args) - doc.documentElement.removeChild(storage) - return result - } - } - api.set = withIEStorage(function(storage, key, val) { - storage.setAttribute(key, api.serialize(val)) - storage.save(localStorageName) - }) - api.get = withIEStorage(function(storage, key) { - return api.deserialize(storage.getAttribute(key)) - }) - api.remove = withIEStorage(function(storage, key) { - storage.removeAttribute(key) - storage.save(localStorageName) - }) - api.clear = withIEStorage(function(storage) { - var attributes = storage.XMLDocument.documentElement.attributes - storage.load(localStorageName) - for (var i=0, attr; attr = attributes[i]; i++) { - storage.removeAttribute(attr.name) - } - storage.save(localStorageName) - }) - } - - try { - api.set(namespace, namespace) - if (api.get(namespace) != namespace) { api.disabled = true } - api.remove(namespace) - } catch(e) { - api.disabled = true - } - - return api -})(); - -if (typeof module != 'undefined') { module.exports = store } - - -// ************************************************************************************************ -// registration - -FBL.Store = store; - -// ************************************************************************************************ -})(); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope s_selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - if (Firebug.HTML) - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0); - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -( /** @scope s_domplate */ function() { - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -FBL.DomplateTag = function DomplateTag(tagName) -{ - this.tagName = tagName; -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateEmbed = function DomplateEmbed() -{ -}; - -/** - * @class - * @extends FBL.DomplateTag - */ -FBL.DomplateLoop = function DomplateLoop() -{ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var DomplateTag = FBL.DomplateTag; -var DomplateEmbed = FBL.DomplateEmbed; -var DomplateLoop = FBL.DomplateLoop; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var womb = null; - -FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -var domplate = FBL.domplate; - -FBL.domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -FBL.DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateEmbed.prototype */ -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype, -/** @lends FBL.DomplateLoop.prototype */ -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -/** @class */ -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** @class */ -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -/** @class */ -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -/** @namespace */ -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
"; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - // workaround to show XPath (a better approach would use the tooltip on mouseover, - // so the XPath information would be calculated dynamically, but we need to create - // a tooltip class/wrapper around Menu or InfoTip) - title: "$object|FBL.getElementXPath", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // we must check if the attribute is specified otherwise IE will show them - if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else if (attr.nodeName == "style") - attrs.push({ - nodeName: attr.nodeName, - nodeValue: attr.nodeValue || - // IE won't recognize the attr.nodeValue of "; -r[++i]=''; -r[++i]=tpl.HTML; -r[++i]=""; -return r.join("") -}; -var Chrome=function Chrome(chrome){var type=chrome.type; -var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase; -append(this,Base); -append(this,chrome); -append(this,new Context(chrome.window)); -FirebugChrome.chromeMap[type]=this; -Firebug.chrome=this; -Env.chrome=chrome.window; -this.commandLineVisible=false; -this.sidePanelVisible=false; -this.create(); -return this -}; -var ChromeBase={}; -append(ChromeBase,Controller); -append(ChromeBase,PanelBar); -append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,create:function(){PanelBar.create.call(this); -if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting}) -}},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy() -}PanelBar.destroy.call(this); -this.shutdown() -},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore() -},toggleChrome:function(){Firebug.chrome.toggle() -},openPopup:function(){Firebug.chrome.toggle(true,true) -},toggleInspect:function(){Firebug.Inspector.toggleInspect() -},focusCommandLine:function(){Firebug.chrome.focusCommandLine() -},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html") -},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug") -},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list") -},visit:function(url){window.open(url) -}}); -var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies; -return[{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},{label:"Disable XHR Listener",type:"checkbox",value:"disableXHRListener",checked:Firebug.disableXHRListener,disabled:cookiesDisabled},{label:"Disable Resource Fetching",type:"checkbox",value:"disableResourceFetching",checked:Firebug.disableResourceFetching,disabled:cookiesDisabled},{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Reset All Firebug Options",command:"restorePrefs",disabled:cookiesDisabled}] -},onCheck:function(target,value,checked){Firebug.setPref(value,checked) -},restorePrefs:function(target){Firebug.erasePrefs(); -if(target){this.updateMenu(target) -}},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption"); -var firstOption=options[0]; -var enabled=Firebug.saveCookies; -if(enabled){Menu.check(firstOption) -}else{Menu.uncheck(firstOption) -}if(enabled){Menu.check(options[0]) -}else{Menu.uncheck(options[0]) -}for(var i=1,length=options.length; -ichromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime(); -handleHSplitterMouseMove() -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate) -}}cancelEvent(event,true); -return false -}; -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer); -onHSplitterMouseMoveTimer=null -}var clientY=onHSplitterMouseMoveBuffer; -var windowSize=Firebug.browser.getWindowSize(); -var scrollSize=Firebug.browser.getWindowScrollSize(); -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0; -var fixedHeight=topHeight+commandLineHeight; -var chromeNode=Firebug.chrome.node; -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0; -var height=windowSize.height; -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight); -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize); -Firebug.context.persistedState.height=chromeHeight; -chromeNode.style.height=chromeHeight+"px"; -if(noFixedPosition){Firebug.chrome.fixIEPosition() -}Firebug.chrome.draw() -}; -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove); -removeGlobalEvent("mouseup",onHSplitterMouseUp); -if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp) -}fbHSplitter.className=""; -Firebug.chrome.draw(); -return false -}; -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove); -addGlobalEvent("mouseup",onVSplitterMouseUp); -return false -}; -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement; -if(target&&target.ownerDocument){var clientX=event.clientX; -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView; -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0 -}var size=Firebug.chrome.getSize(); -var x=Math.max(size.width-clientX+3,6); -Firebug.context.persistedState.sidePanelWidth=x; -Firebug.chrome.draw() -}lastVSplitterMouseMove=new Date().getTime() -}cancelEvent(event,true); -return false -}; -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove); -removeGlobalEvent("mouseup",onVSplitterMouseUp); -Firebug.chrome.draw() -} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite={} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Cache={ID:"firebug-"+new Date().getTime()}; -var cacheUID=0; -var createCache=function(){var map={}; -var data={}; -var CID=Firebug.Lite.Cache.ID; -var supportsDeleteExpando=!document.all; -var cacheFunction=function(element){return cacheAPI.set(element) -}; -var cacheAPI={get:function(key){return map.hasOwnProperty(key)?map[key]:null -},set:function(element){var id=getValidatedKey(element); -if(!id){id=++cacheUID; -element[CID]=id -}if(!map.hasOwnProperty(id)){map[id]=element; -data[id]={} -}return id -},unset:function(element){var id=getValidatedKey(element); -if(!id){return -}if(supportsDeleteExpando){delete element[CID] -}else{if(element.removeAttribute){element.removeAttribute(CID) -}}delete map[id]; -delete data[id] -},key:function(element){return getValidatedKey(element) -},has:function(element){var id=getValidatedKey(element); -return id&&map.hasOwnProperty(id) -},each:function(callback){for(var key in map){if(map.hasOwnProperty(key)){callback(key,map[key]) -}}},data:function(element,name,value){if(value){if(!name){return null -}var id=cacheAPI.set(element); -return data[id][name]=value -}else{var id=cacheAPI.key(element); -return data.hasOwnProperty(id)&&data[id].hasOwnProperty(name)?data[id][name]:null -}},clear:function(){for(var id in map){var element=map[id]; -cacheAPI.unset(element) -}}}; -var getValidatedKey=function(element){var id=element[CID]; -if(!supportsDeleteExpando&&id&&map.hasOwnProperty(id)&&map[id]!=element){element.removeAttribute(CID); -id=null -}return id -}; -FBL.append(cacheFunction,cacheAPI); -return cacheFunction -}; -Firebug.Lite.Cache.StyleSheet=createCache(); -Firebug.Lite.Cache.Element=createCache(); -Firebug.Lite.Cache.Event=createCache() -}}); -FBL.ns(function(){with(FBL){var sourceMap={}; -Firebug.Lite.Proxy={_callbacks:{},load:function(url){var resourceDomain=getDomain(url); -var isLocalResource=!resourceDomain||resourceDomain==Firebug.context.window.location.host; -return isLocalResource?fetchResource(url):fetchProxyResource(url) -},loadJSONP:function(url,callback){var script=createGlobalElement("script"),doc=Firebug.context.document,uid=""+new Date().getTime(),callbackName="callback=Firebug.Lite.Proxy._callbacks."+uid,jsonpURL=url.indexOf("?")!=-1?url+"&"+callbackName:url+"?"+callbackName; -Firebug.Lite.Proxy._callbacks[uid]=function(data){if(callback){callback(data) -}script.parentNode.removeChild(script); -delete Firebug.Lite.Proxy._callbacks[uid] -}; -script.src=jsonpURL; -if(doc.documentElement){doc.documentElement.appendChild(script) -}},YQL:function(url,callback){var yql="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent(url)+"%22&format=xml"; -this.loadJSONP(yql,function(data){var source=data.results[0]; -var match=/\s+

([\s\S]+)<\/p>\s+<\/body>$/.exec(source); -if(match){source=match[1] -}console.log(source) -}) -}}; -Firebug.Lite.Proxy.fetchResourceDisabledMessage='/* Firebug Lite resource fetching is disabled.\nTo enabled it set the Firebug Lite option "disableResourceFetching" to "false".\nMore info at http://getfirebug.com/firebuglite#Options */'; -var fetchResource=function(url){if(Firebug.disableResourceFetching){var source=sourceMap[url]=Firebug.Lite.Proxy.fetchResourceDisabledMessage; -return source -}if(sourceMap.hasOwnProperty(url)){return sourceMap[url] -}var xhr=FBL.getNativeXHRObject(); -xhr.open("get",url,false); -xhr.send(); -var source=sourceMap[url]=xhr.responseText; -return source -}; -var fetchProxyResource=function(url){if(sourceMap.hasOwnProperty(url)){return sourceMap[url] -}var proxyURL=Env.Location.baseDir+"plugin/proxy/proxy.php?url="+encodeURIComponent(url); -var response=fetchResource(proxyURL); -try{var data=eval("("+response+")") -}catch(E){return"ERROR: Firebug Lite Proxy plugin returned an invalid response." -}var source=data?data.contents:""; -return source -} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Style={} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Script=function(window){this.fileName=null; -this.isValid=null; -this.baseLineNumber=null; -this.lineExtent=null; -this.tag=null; -this.functionName=null; -this.functionSource=null -}; -Firebug.Lite.Script.prototype={isLineExecutable:function(){},pcToLine:function(){},lineToPc:function(){},toString:function(){return"Firebug.Lite.Script" -}} -}}); -FBL.ns(function(){with(FBL){Firebug.Lite.Browser=function(window){this.contentWindow=window; -this.contentDocument=window.document; -this.currentURI={spec:window.location.href} -}; -Firebug.Lite.Browser.prototype={toString:function(){return"Firebug.Lite.Browser" -}} -}}); -var JSON=window.JSON||{}; -(function(){function f(n){return n<10?"0"+n:n -}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null -}; -String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf() -} -}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep; -function quote(string){escapable.lastIndex=0; -return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a]; -return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4) -})+'"':'"'+string+'"' -}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key]; -if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key) -}if(typeof rep==="function"){value=rep.call(holder,key,value) -}switch(typeof value){case"string":return quote(value); -case"number":return isFinite(value)?String(value):"null"; -case"boolean":case"null":return String(value); -case"object":if(!value){return"null" -}gap+=indent; -partial=[]; -if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length; -for(i=0; -i+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true; -[0,0].sort(function(){baseHasDuplicate=false; -return 0 -}); -var Sizzle=function(selector,context,results,seed){results=results||[]; -var origContext=context=context||document; -if(context.nodeType!==1&&context.nodeType!==9){return[] -}if(!selector||typeof selector!=="string"){return results -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector; -while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3]; -parts.push(m[1]); -if(m[2]){extra=m[3]; -break -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context) -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context); -while(parts.length){selector=parts.shift(); -if(Expr.relative[selector]){selector+=parts.shift() -}set=posProcess(selector,set) -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML); -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0] -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML); -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set; -if(parts.length>0){checkSet=makeArray(set) -}else{prune=false -}while(parts.length){var cur=parts.pop(),pop=cur; -if(!Expr.relative[cur]){cur="" -}else{pop=parts.pop() -}if(pop==null){pop=context -}Expr.relative[cur](checkSet,pop,contextXML) -}}else{checkSet=parts=[] -}}if(!checkSet){checkSet=set -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector) -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet) -}else{if(context&&context.nodeType===1){for(var i=0; -checkSet[i]!=null; -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i]) -}}}else{for(var i=0; -checkSet[i]!=null; -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i]) -}}}}}else{makeArray(checkSet,results) -}if(extra){Sizzle(extra,origContext,results,seed); -Sizzle.uniqueSort(results) -}return results -}; -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate; -results.sort(sortOrder); -if(hasDuplicate){for(var i=1; -i":function(checkSet,part,isXML){var isPartStr=typeof part==="string"; -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase(); -for(var i=0,l=checkSet.length; -i=0)){if(!inplace){result.push(elem) -}}else{if(inplace){curLoop[i]=false -}}}}return false -},ID:function(match){return match[1].replace(/\\/g,"") -},TAG:function(match,curLoop){for(var i=0; -curLoop[i]===false; -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase() -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]); -match[2]=(test[1]+(test[2]||1))-0; -match[3]=test[3]-0 -}match[0]=done++; -return match -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,""); -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name] -}if(match[2]==="~="){match[4]=" "+match[4]+" " -}return match -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop) -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not); -if(!inplace){result.push.apply(result,ret) -}return false -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true -}}return match -},POS:function(match){match.unshift(true); -return match -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden" -},disabled:function(elem){return elem.disabled===true -},checked:function(elem){return elem.checked===true -},selected:function(elem){elem.parentNode.selectedIndex; -return elem.selected===true -},parent:function(elem){return !!elem.firstChild -},empty:function(elem){return !elem.firstChild -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length -},header:function(elem){return/h\d/i.test(elem.nodeName) -},text:function(elem){return"text"===elem.type -},radio:function(elem){return"radio"===elem.type -},checkbox:function(elem){return"checkbox"===elem.type -},file:function(elem){return"file"===elem.type -},password:function(elem){return"password"===elem.type -},submit:function(elem){return"submit"===elem.type -},image:function(elem){return"image"===elem.type -},reset:function(elem){return"reset"===elem.type -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON" -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName) -}},setFilters:{first:function(elem,i){return i===0 -},last:function(elem,i,match,array){return i===array.length-1 -},even:function(elem,i){return i%2===0 -},odd:function(elem,i){return i%2===1 -},lt:function(elem,i,match){return imatch[3]-0 -},nth:function(elem,i,match){return match[3]-0==i -},eq:function(elem,i,match){return match[3]-0==i -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name]; -if(filter){return filter(elem,i,match,array) -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0 -}else{if(name==="not"){var not=match[3]; -for(var i=0,l=not.length; -i=0) -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1 -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4]; -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name]; -if(filter){return filter(elem,i,match,array) -}}}}; -var origPOS=Expr.match.POS; -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source); -Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source) -}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0); -if(results){results.push.apply(results,array); -return results -}return array -}; -try{Array.prototype.slice.call(document.documentElement.childNodes,0) -}catch(e){makeArray=function(array,results){var ret=results||[]; -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array) -}else{if(typeof array.length==="number"){for(var i=0,l=array.length; -i"; -var root=document.documentElement; -root.insertBefore(form,root.firstChild); -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]); -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[] -}}; -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id"); -return elem.nodeType===1&&node&&node.nodeValue===match -} -}root.removeChild(form); -root=form=null -})(); -(function(){var div=document.createElement("div"); -div.appendChild(document.createComment("")); -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]); -if(match[1]==="*"){var tmp=[]; -for(var i=0; -results[i]; -i++){if(results[i].nodeType===1){tmp.push(results[i]) -}}results=tmp -}return results -} -}div.innerHTML=""; -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2) -} -}div=null -})(); -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div"); -div.innerHTML="

"; -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return -}Sizzle=function(query,context,extra,seed){context=context||document; -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra) -}catch(e){}}return oldSizzle(query,context,extra,seed) -}; -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop] -}div=null -})() -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div"); -div.innerHTML="
"; -if(div.getElementsByClassName("e").length===0){return -}div.lastChild.className="e"; -if(div.getElementsByClassName("e").length===1){return -}Expr.order.splice(1,0,"CLASS"); -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1]) -}}; -div=null -})() -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML; -for(var i=0,l=checkSet.length; -i0){match=elem; -break -}}}elem=elem[dir] -}checkSet[i]=match -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16 -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true) -}; -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML" -}; -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context; -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0]; -selector=selector.replace(Expr.match.PSEUDO,"") -}selector=Expr.relative[selector]?selector+"*":selector; -for(var i=0,l=root.length; -i30){fbInspectFrame.style.display="none"; -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY); -fbInspectFrame.style.display="block"; -var id=targ.id; -if(id&&/^fbOutline\w$/.test(id)){return -}if(id=="FirebugUI"){return -}while(targ.nodeType!=1){targ=targ.parentNode -}if(targ.nodeName.toLowerCase()=="body"){return -}Firebug.Inspector.drawOutline(targ); -if(ElementCache(targ)){var target=""+ElementCache.key(targ); -var lazySelect=function(){inspectorTS=new Date().getTime(); -if(Firebug.HTML){Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) -}}; -if(inspectorTimer){clearTimeout(inspectorTimer); -inspectorTimer=null -}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0) -}else{inspectorTimer=setTimeout(lazySelect,300) -}}lastInspecting=new Date().getTime() -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target; -var id=targ.id; -if(id&&/^fbOutline\w$/.test(id)){return -}if(id=="FirebugUI"){return -}while(targ.nodeType!=1){targ=targ.parentNode -}if(targ.nodeName.toLowerCase()=="body"){return -}Firebug.Inspector.drawOutline(targ); -if(ElementCache.has(targ)){FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) -}lastInspecting=new Date().getTime() -}},drawOutline:function(el){var border=2; -var scrollbarSize=17; -var windowSize=Firebug.browser.getWindowSize(); -var scrollSize=Firebug.browser.getWindowScrollSize(); -var scrollPosition=Firebug.browser.getWindowScrollPosition(); -var box=Firebug.browser.getElementBox(el); -var top=box.top; -var left=box.left; -var height=box.height; -var width=box.width; -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0); -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0); -var numVerticalBorders=freeVerticalSpace>0?2:1; -var o=outlineElements; -var style; -style=o.fbOutlineT.style; -style.top=top-border+"px"; -style.left=left+"px"; -style.height=border+"px"; -style.width=width+"px"; -style=o.fbOutlineL.style; -style.top=top-border+"px"; -style.left=left-border+"px"; -style.height=height+numVerticalBorders*border+"px"; -style.width=border+"px"; -style=o.fbOutlineB.style; -if(freeVerticalSpace>0){style.top=top+height+"px"; -style.left=left+"px"; -style.width=width+"px" -}else{style.top=-2*border+"px"; -style.left=-2*border+"px"; -style.width=border+"px" -}style=o.fbOutlineR.style; -if(freeHorizontalSpace>0){style.top=top-border+"px"; -style.left=left+width+"px"; -style.height=height+numVerticalBorders*border+"px"; -style.width=(freeHorizontalSpacescrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return -}var top=box.top; -var left=box.left; -var height=box.height; -var width=box.width; -var margin=Firebug.browser.getMeasurementBox(el,"margin"); -var padding=Firebug.browser.getMeasurementBox(el,"padding"); -var border=Firebug.browser.getMeasurementBox(el,"border"); -boxModelStyle.top=top-margin.top+"px"; -boxModelStyle.left=left-margin.left+"px"; -boxModelStyle.height=height+margin.top+margin.bottom+"px"; -boxModelStyle.width=width+margin.left+margin.right+"px"; -boxBorderStyle.top=margin.top+"px"; -boxBorderStyle.left=margin.left+"px"; -boxBorderStyle.height=height+"px"; -boxBorderStyle.width=width+"px"; -boxPaddingStyle.top=margin.top+border.top+"px"; -boxPaddingStyle.left=margin.left+border.left+"px"; -boxPaddingStyle.height=height-border.top-border.bottom+"px"; -boxPaddingStyle.width=width-border.left-border.right+"px"; -boxContentStyle.top=margin.top+border.top+padding.top+"px"; -boxContentStyle.left=margin.left+border.left+padding.left+"px"; -boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px"; -boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px"; -if(!boxModelVisible){this.showBoxModel() -}},hideBoxModel:function(){if(!boxModelVisible){return -}offlineFragment.appendChild(boxModel); -boxModelVisible=false -},showBoxModel:function(){if(boxModelVisible){return -}if(outlineVisible){this.hideOutline() -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); -boxModelVisible=true -}}; -var offlineFragment=null; -var boxModelVisible=false; -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle; -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"; -var inspectStyle=resetStyle+"z-index: 2147483500;"; -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);"; -var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;"; -var inspectModelStyle=inspectStyle+inspectModelOpacity; -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle=inspectStyle+"background: #666;"; -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;"; -var inspectContentStyle=inspectStyle+"background: SkyBlue;"; -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"}; -var lastInspecting=0; -var fbInspectFrame=null; -var outlineVisible=false; -var outlineElements={}; -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"}; -var getInspectingTarget=function(){}; -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div"); -fbInspectFrame.id="fbInspectFrame"; -fbInspectFrame.firebugIgnore=true; -fbInspectFrame.style.cssText=inspectFrameStyle; -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame) -}; -var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); -fbInspectFrame=null -}}; -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div"); -el.id=name; -el.firebugIgnore=true; -el.style.cssText=inspectStyle+outlineStyle[outline[name]]; -offlineFragment.appendChild(el) -}}; -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name]; -el.parentNode.removeChild(el) -}}; -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div"); -boxModel.id="fbBoxModel"; -boxModel.firebugIgnore=true; -boxModelStyle=boxModel.style; -boxModelStyle.cssText=inspectModelStyle; -boxMargin=createGlobalElement("div"); -boxMargin.id="fbBoxMargin"; -boxMarginStyle=boxMargin.style; -boxMarginStyle.cssText=inspectMarginStyle; -boxModel.appendChild(boxMargin); -boxBorder=createGlobalElement("div"); -boxBorder.id="fbBoxBorder"; -boxBorderStyle=boxBorder.style; -boxBorderStyle.cssText=inspectBorderStyle; -boxModel.appendChild(boxBorder); -boxPadding=createGlobalElement("div"); -boxPadding.id="fbBoxPadding"; -boxPaddingStyle=boxPadding.style; -boxPaddingStyle.cssText=inspectPaddingStyle; -boxModel.appendChild(boxPadding); -boxContent=createGlobalElement("div"); -boxContent.id="fbBoxContent"; -boxContentStyle=boxContent.style; -boxContentStyle.cssText=inspectContentStyle; -boxModel.appendChild(boxContent); -offlineFragment.appendChild(boxModel) -}; -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel) -} -}}); -(function(){FBL.DomplateTag=function DomplateTag(tagName){this.tagName=tagName -}; -FBL.DomplateEmbed=function DomplateEmbed(){}; -FBL.DomplateLoop=function DomplateLoop(){}; -var DomplateTag=FBL.DomplateTag; -var DomplateEmbed=FBL.DomplateEmbed; -var DomplateLoop=FBL.DomplateLoop; -var womb=null; -FBL.domplate=function(){var lastSubject; -for(var i=0; -i":return">"; -case"&":return"&"; -case"'":return"'"; -case'"':return""" -}return"?" -}return String(value).replace(/[<>&"']/g,replaceChars) -}function __loop__(iter,outputs,fn){var iterOuts=[]; -outputs.push(iterOuts); -if(iter instanceof Array){iter=new ArrayIterator(iter) -}try{while(1){var value=iter.next(); -var itemOuts=[0,0]; -iterOuts.push(itemOuts); -fn.apply(this,[value,itemOuts]) -}}catch(exc){if(exc!=StopIteration){throw exc -}}}var js=fnBlock.join(""); -var r=null; -eval(js); -this.renderMarkup=r -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars) -}for(var i=0; -i"'); -this.generateChildMarkup(topBlock,topOuts,blocks,info); -topBlock.push(',""') -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0; -i=array.length){throw StopIteration -}return array[index] -} -}function StopIteration(){}FBL.$break=function(){throw StopIteration -}; -var Renderer={renderHTML:function(args,outputs,self){var code=[]; -var markupArgs=[code,this.tag.context,args,outputs]; -markupArgs.push.apply(markupArgs,this.tag.markupArgs); -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs); -return code.join("") -},insertRows:function(args,before,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var doc=before.ownerDocument; -var div=doc.createElement("div"); -div.innerHTML=""+html+"
"; -var tbody=div.firstChild.firstChild; -var parent=before.tagName=="TR"?before.parentNode:before; -var after=before.tagName=="TR"?before.nextSibling:null; -var firstRow=tbody.firstChild,lastRow; -while(tbody.firstChild){lastRow=tbody.firstChild; -if(after){parent.insertBefore(lastRow,after) -}else{parent.appendChild(lastRow) -}}var offset=0; -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild; -for(; -node&&node!=firstRow; -node=node.nextSibling){++offset -}}var domArgs=[firstRow,this.tag.context,offset]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return[firstRow,lastRow] -},insertBefore:function(args,before,self){return this.insertNode(args,before.ownerDocument,before,false,self) -},insertAfter:function(args,after,self){return this.insertNode(args,after.ownerDocument,after,true,self) -},insertNode:function(args,doc,element,isAfter,self){if(!args){args={} -}this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var doc=element.ownerDocument; -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div") -}womb.innerHTML=html; -var root=womb.firstChild; -if(isAfter){while(womb.firstChild){if(element.nextSibling){element.parentNode.insertBefore(womb.firstChild,element.nextSibling) -}else{element.parentNode.appendChild(womb.firstChild) -}}}else{while(womb.lastChild){element.parentNode.insertBefore(womb.lastChild,element) -}}var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -},replace:function(args,parent,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -var root; -if(parent.nodeType==1){parent.innerHTML=html; -root=parent.firstChild -}else{if(!parent||parent.nodeType!=9){parent=document -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div") -}womb.innerHTML=html; -root=womb.firstChild -}var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -},append:function(args,parent,self){this.tag.compile(); -var outputs=[]; -var html=this.renderHTML(args,outputs,self); -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div") -}womb.innerHTML=html; -var root=womb.firstChild; -while(womb.firstChild){parent.appendChild(womb.firstChild) -}womb=null; -var domArgs=[root,this.tag.context,0]; -domArgs.push.apply(domArgs,this.tag.domArgs); -domArgs.push.apply(domArgs,outputs); -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs); -return root -}}; -function defineTags(){for(var i=0; -inumPropertiesShown){break -}}if(numProperties>numPropertiesShown){props.push({object:"...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""}) -}else{if(props.length>0){props[props.length-1].delim="" -}}}catch(exc){}return props -},fb_1_6_propIterator:function(object,max){max=max||3; -if(!object){return[] -}var props=[]; -var len=0,count=0; -try{for(var name in object){var value; -try{value=object[name] -}catch(exc){continue -}var t=typeof(value); -if(t=="boolean"||t=="number"||(t=="string"&&value)||(t=="object"&&value&&value.toString)){var rep=Firebug.getRep(value); -var tag=rep.shortTag||rep.tag; -if(t=="object"){value=rep.getTitle(value); -tag=rep.titleTag -}count++; -if(count<=max){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "}) -}else{break -}}}if(count>max){props[Math.max(1,max-1)]={object:"more...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""} -}else{if(props.length>0){props[props.length-1].delim="" -}}}catch(exc){}return props -},className:"object",supportsObject:function(object,type){return true -}}); -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[]; -for(var i=0; -i3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""}) -}return items -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0; -for(child=child.previousSibling; -child; -child=child.previousSibling){if(child.repObject){++arrayIndex -}}return arrayIndex -},className:"array",supportsObject:function(object){return this.isArray(object) -},isArray:function(obj){try{if(!obj){return false -}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true -}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true -}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true -}else{if(instanceOf(obj,"HTMLCollection")){return true -}else{if(instanceOf(obj,"NodeList")){return true -}else{return false -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc); -FBTrace.sysout("isArray Fails on obj",obj) -}}return false -},getTitle:function(object,context){return"["+object.length+"]" -}}); -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property -},getRealObject:function(prop,context){return prop.object[prop.name] -},getTitle:function(prop,context){return prop.name -}}); -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile -},browseObject:function(file,context){openNewTab(file.href); -return true -},getRealObject:function(file,context){return null -}}); -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy -}}); -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("<",SPAN({"class":"nodeTag"},"$object.nodeName|toLowerCase"),FOR("attr","$object|attrIterator"," $attr.nodeName="",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"""),">"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden" -},getSelectorTag:function(elt){return elt.nodeName.toLowerCase() -},getSelectorId:function(elt){return elt.id?"#"+elt.id:"" -},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:"" -},getValue:function(elt){return""; -var value; -if(elt instanceof HTMLImageElement){value=getFileName(elt.src) -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href) -}else{if(elt instanceof HTMLInputElement){value=elt.value -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action) -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src) -}}}}}return value?" "+cropString(value,20):"" -},attrIterator:function(elt){var attrs=[]; -var idAttr,classAttr; -if(elt.attributes){for(var i=0; -i0 -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo) -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/; -var m=re.exec(message); -return m?m[1]:message -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80) -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80) -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js"; -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null -},getSourceType:function(error){if(error.source){return"syntax" -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none" -}else{if(error.category=="css"){return"none" -}else{if(!error.href||!error.lineNo){return"none" -}else{return"exec" -}}}}},onToggleError:function(event){var target=event.currentTarget; -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject) -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target); -this.inspectObject(target.repObject,panel.context) -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1]; -toggleClass(target,"opened"); -event.target.setAttribute("aria-checked",hasClass(target,"opened")); -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox) -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target); -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox]) -}}else{clearNode(traceBox) -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo]; -copyToClipboard(message.join("\n")) -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo) -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo) -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); -FirebugReps.SourceLink.inspectObject(sourceLink,context) -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}]; -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors")) -}return items -}}); -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error); -Firebug.chrome.select(sourceLink) -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error); -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}] -}}); -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length; -var list=[]; -for(var i=0; -i57)&&event.charCode!=45&&event.charCode!=46){FBL.cancelEvent(event) -}else{this.ignoreNextInput=event.keyCode==8 -}}}},onOverflow:function(){this.updateLayout(false,false,3) -},onKeyDown:function(event){if(event.keyCode>46||event.keyCode==32||event.keyCode==8){this.keyDownPressed=true -}},onInput:function(event){if(isIE){if(event.propertyName!="value"||!isVisible(this.input)||!this.keyDownPressed){return -}this.keyDownPressed=false -}var selectRangeCallback; -if(this.ignoreNextInput){this.ignoreNextInput=false; -this.getAutoCompleter().reset() -}else{if(this.completeAsYouType){selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,false) -}else{this.getAutoCompleter().reset() -}}Firebug.Editor.update(); -if(selectRangeCallback){if(isSafari){setTimeout(selectRangeCallback,0) -}else{selectRangeCallback() -}}},onContextMenu:function(event){cancelEvent(event); -var popup=$("fbInlineEditorPopup"); -FBL.eraseNode(popup); -var target=event.target||event.srcElement; -var menu=this.getContextMenuItems(target); -if(menu){for(var i=0; -ithis.textSize.height+3:this.noWrap&&approxTextWidth>maxWidth; -if(wrapped){var style=isIE?this.target.currentStyle:this.target.ownerDocument.defaultView.getComputedStyle(this.target,""); -targetMargin=parseInt(style.marginLeft)+parseInt(style.marginRight); -approxTextWidth=maxWidth-targetMargin; -this.input.style.width="100%"; -this.box.style.width=approxTextWidth+"px" -}else{var charWidth=this.measureInputText("m").width; -if(extraWidth){charWidth*=extraWidth -}var inputWidth=approxTextWidth+charWidth; -if(initial){if(isIE){var xDiff=13; -this.box.style.width=(inputWidth+xDiff)+"px" -}else{this.box.style.width="auto" -}}else{var xDiff=isIE?13:this.box.scrollWidth-this.input.offsetWidth; -this.box.style.width=(inputWidth+xDiff)+"px" -}this.input.style.width=inputWidth+"px" -}this.expander.style.width=approxTextWidth+"px"; -this.expander.style.height=Math.max(this.textSize.height-3,0)+"px" -}if(forceAll){scrollIntoCenterView(this.box,null,true) -}}}); -Firebug.AutoCompleter=function(getExprOffset,getRange,evaluator,selectMode,caseSensitive){var candidates=null; -var originalValue=null; -var originalOffset=-1; -var lastExpr=null; -var lastOffset=-1; -var exprOffset=0; -var lastIndex=0; -var preParsed=null; -var preExpr=null; -var postExpr=null; -this.revert=function(textBox){if(originalOffset!=-1){textBox.value=originalValue; -setSelectionRange(textBox,originalOffset,originalOffset); -this.reset(); -return true -}else{this.reset(); -return false -}}; -this.reset=function(){candidates=null; -originalValue=null; -originalOffset=-1; -lastExpr=null; -lastOffset=0; -exprOffset=0 -}; -this.complete=function(context,textBox,cycle,reverse){var value=textBox.value; -var offset=getInputSelectionStart(textBox); -if(isSafari&&!cycle&&offset>=0){offset++ -}if(!selectMode&&originalOffset!=-1){offset=originalOffset -}if(!candidates||!cycle||offset!=lastOffset){originalOffset=offset; -originalValue=value; -var parseStart=getExprOffset?getExprOffset(value,offset,context):0; -preParsed=value.substr(0,parseStart); -var parsed=value.substr(parseStart); -var range=getRange?getRange(parsed,offset-parseStart,context):null; -if(!range){range={start:0,end:parsed.length-1} -}var expr=parsed.substr(range.start,range.end-range.start+1); -preExpr=parsed.substr(0,range.start); -postExpr=parsed.substr(range.end+1); -exprOffset=parseStart+range.start; -if(!cycle){if(!expr){return -}else{if(lastExpr&&lastExpr.indexOf(expr)!=0){candidates=null -}else{if(lastExpr&&lastExpr.length>=expr.length){candidates=null; -lastExpr=expr; -return -}}}}lastExpr=expr; -lastOffset=offset; -var searchExpr; -if(expr&&offset!=parseStart+range.end+1){if(cycle){offset=range.start; -searchExpr=expr; -expr="" -}else{return -}}var values=evaluator(preExpr,expr,postExpr,context); -if(!values){return -}if(expr){candidates=[]; -if(caseSensitive){for(var i=0; -i=candidates.length){lastIndex=0 -}else{if(lastIndex<0){lastIndex=candidates.length-1 -}}var completion=candidates[lastIndex]; -var preCompletion=expr.substr(0,offset-exprOffset); -var postCompletion=completion.substr(offset-exprOffset); -textBox.value=preParsed+preExpr+preCompletion+postCompletion+postExpr; -var offsetEnd=preParsed.length+preExpr.length+completion.length; -return function(){if(selectMode){setSelectionRange(textBox,offset,offsetEnd) -}else{setSelectionRange(textBox,offsetEnd,offsetEnd) -}} -} -}; -var getDefaultEditor=function getDefaultEditor(panel){if(!defaultEditor){var doc=panel.document; -defaultEditor=new Firebug.InlineEditor(doc) -}return defaultEditor -}; -var getOutsider=function getOutsider(element,group,stepper){var parentGroup=getAncestorByClass(group.parentNode,"editGroup"); -var next; -do{next=stepper(next||element) -}while(isAncestor(next,group)||isGroupInsert(next,parentGroup)); -return next -}; -var isGroupInsert=function isGroupInsert(next,group){return(!group||isAncestor(next,group))&&(hasClass(next,"insertBefore")||hasClass(next,"insertAfter")) -}; -var getNextOutsider=function getNextOutsider(element,group){return getOutsider(element,group,bind(getNextByClass,FBL,"editable")) -}; -var getPreviousOutsider=function getPreviousOutsider(element,group){return getOutsider(element,group,bind(getPreviousByClass,FBL,"editable")) -}; -var getInlineParent=function getInlineParent(element){var lastInline=element; -for(; -element; -element=element.parentNode){var s=isIE?element.currentStyle:element.ownerDocument.defaultView.getComputedStyle(element,""); -if(s.display!="inline"){return lastInline -}else{lastInline=element -}}return null -}; -var insertTab=function insertTab(){insertTextIntoElement(currentEditor.input,Firebug.Editor.tabCharacter) -}; -Firebug.registerModule(Firebug.Editor) -}}); -FBL.ns(function(){with(FBL){if(Env.Options.disableXHRListener){return -}var XHRSpy=function(){this.requestHeaders=[]; -this.responseHeaders=[] -}; -XHRSpy.prototype={method:null,url:null,async:null,xhrRequest:null,href:null,loaded:false,logRow:null,responseText:null,requestHeaders:null,responseHeaders:null,sourceLink:null,getURL:function(){return this.href -}}; -var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS; -var updateSelfPropertiesIgnore={abort:1,channel:1,getAllResponseHeaders:1,getInterface:1,getResponseHeader:1,mozBackgroundRequest:1,multipart:1,onreadystatechange:1,open:1,send:1,setRequestHeader:1}; -var updateSelfProperties=function(){if(supportsXHRIterator){for(var propName in xhrRequest){if(propName in updateSelfPropertiesIgnore){continue -}try{var propValue=xhrRequest[propName]; -if(propValue&&!isFunction(propValue)){self[propName]=propValue -}}catch(E){}}}else{if(xhrRequest.readyState==4){self.status=xhrRequest.status; -self.statusText=xhrRequest.statusText; -self.responseText=xhrRequest.responseText; -self.responseXML=xhrRequest.responseXML -}}}; -var updateXHRPropertiesIgnore={channel:1,onreadystatechange:1,readyState:1,responseBody:1,responseText:1,responseXML:1,status:1,statusText:1,upload:1}; -var updateXHRProperties=function(){for(var propName in self){if(propName in updateXHRPropertiesIgnore){continue -}try{var propValue=self[propName]; -if(propValue&&!xhrRequest[propName]){xhrRequest[propName]=propValue -}}catch(E){}}}; -var logXHR=function(){var row=Firebug.Console.log(spy,null,"spy",Firebug.Spy.XHR); -if(row){setClass(row,"loading"); -spy.logRow=row -}}; -var finishXHR=function(){var duration=new Date().getTime()-reqStartTS; -var success=xhrRequest.status==200; -var responseHeadersText=xhrRequest.getAllResponseHeaders(); -var responses=responseHeadersText?responseHeadersText.split(/[\n\r]/):[]; -var reHeader=/^(\S+):\s*(.*)/; -for(var i=0,l=responses.length; -i0; -return this -}; -var _ActiveXObject; -var isIE6=/msie 6/i.test(navigator.appVersion); -if(isIE6){_ActiveXObject=window.ActiveXObject; -var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; -window.ActiveXObject=function(name){var error=null; -try{var activeXObject=new _ActiveXObject(name) -}catch(e){error=e -}finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject) -}else{return activeXObject -}}else{throw error.message -}}} -}if(!isIE6){var _XMLHttpRequest=XMLHttpRequest; -window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper() -} -}FBL.getNativeXHRObject=function(){var xhrObj=false; -try{xhrObj=new _XMLHttpRequest() -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"]; -for(var i=0; -ilimit){name=name.substr(0,limit)+"..." -}return name -},getParamTitle:function(param){var limit=25; -var name=param.name; -if(name.length>limit){return name -}return"" -},hideParams:function(file){return !file.urlParams||!file.urlParams.length -},hidePost:function(file){return file.method.toUpperCase()!="POST" -},hidePut:function(file){return file.method.toUpperCase()!="PUT" -},hideResponse:function(file){return false -},hideCache:function(file){return true; -return !file.cacheEntry -},hideHtml:function(file){return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml") -},onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement) -},getParamValueIterator:function(param){return param.value; -return wrapText(param.value,true) -},appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle}; -this.customTab.append(args,$$(".netInfoTabs",netInfoBox)[0]); -this.customBody.append(args,$$(".netInfoBodies",netInfoBox)[0]) -},selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab"); -if(tab){this.selectTab(tab) -}},selectTab:function(tab){var view=tab.getAttribute("view"); -var netInfoBox=getAncestorByClass(tab,"netInfoBody"); -var selectedTab=netInfoBox.selectedTab; -if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected"); -removeClass(selectedTab,"netInfoTabSelected"); -selectedTab.setAttribute("aria-selected","false") -}var textBodyName="netInfo"+view+"Text"; -selectedTab=netInfoBox.selectedTab=tab; -netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0]; -setClass(netInfoBox.selectedText,"netInfoTextSelected"); -setClass(selectedTab,"netInfoTabSelected"); -selectedTab.setAttribute("selected","true"); -selectedTab.setAttribute("aria-selected","true"); -var file=Firebug.getRepObject(netInfoBox); -var context=Firebug.chrome; -this.updateInfo(netInfoBox,file,context) -},updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file) -}if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file) -}return -}var tab=netInfoBox.selectedTab; -if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true; -this.insertHeaderRows(netInfoBox,file.urlParams,"Params") -}}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0]; -if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true; -NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders") -}if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true; -NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders") -}}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true; -var postText=$$(".netInfoPostText",netInfoBox)[0]; -NetInfoPostData.render(context,postText,file) -}}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true; -var putText=$$(".netInfoPutText",netInfoBox)[0]; -NetInfoPostData.render(context,putText,file) -}}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0]; -if(file.category=="image"){netInfoBox.responsePresented=true; -var responseImage=netInfoBox.ownerDocument.createElement("img"); -responseImage.src=file.href; -clearNode(responseTextBox); -responseTextBox.appendChild(responseImage,responseTextBox) -}else{this.setResponseText(file,netInfoBox,responseTextBox,context) -}}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0); -if(file.cacheEntry){netInfoBox.cachePresented=true; -this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache") -}}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true; -var text=Utils.getResponseText(file,context); -var iframe=$$(".netInfoHtmlPreview",netInfoBox)[0]; -var reScript=//gi; -text=text.replace(reScript,""); -iframe.contentWindow.document.write(text); -iframe.contentWindow.document.close() -}}}}}}}dispatch(NetInfoBody.fbListeners,"updateTabBody",[netInfoBox,file,context]) -},setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true; -if(isIE){responseTextBox.style.whiteSpace="nowrap" -}responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText; -return; -var text=Utils.getResponseText(file,context); -var limit=Firebug.netDisplayedResponseLimit+15; -var limitReached=text?(text.length>limit):false; -if(limitReached){text=text.substr(0,limit)+"..." -}if(text){insertWrappedText(text,responseTextBox) -}else{insertWrappedText("",responseTextBox) -}if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true); -panel.openResponseInTab(file) -}}; -Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox) -}netInfoBox.responsePresented=true; -if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated") -}},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return -}var headersTable=$$(".netInfo"+tableName+"Table",netInfoBox)[0]; -var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body"); -if(!tbody){tbody=headersTable.firstChild -}var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title"); -this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody); -removeClass(titleRow,"collapsed") -}}); -var NetInfoBody=Firebug.NetMonitor.NetInfoBody; -Firebug.NetMonitor.NetInfoHeaders=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoHeadersTable",role:"tabpanel"},DIV({"class":"netInfoHeadersGroup netInfoResponseHeadersTitle"},SPAN($STR("ResponseHeaders")),SPAN({"class":"netHeadersViewSource response collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"ResponseHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoResponseHeadersBody",role:"list","aria-label":$STR("ResponseHeaders")})),DIV({"class":"netInfoHeadersGroup netInfoRequestHeadersTitle"},SPAN($STR("RequestHeaders")),SPAN({"class":"netHeadersViewSource request collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"RequestHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoRequestHeadersBody",role:"list","aria-label":$STR("RequestHeaders")}))),sourceTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},PRE({"class":"source"}))),onViewSource:function(event){var target=event.target; -var requestHeaders=(target.rowName=="RequestHeaders"); -var netInfoBox=getAncestorByClass(target,"netInfoBody"); -var file=netInfoBox.repObject; -if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders; -this.insertHeaderRows(netInfoBox,headers,target.rowName); -target.innerHTML=$STR("net.headers.view source") -}else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText; -this.insertSource(netInfoBox,source,target.rowName); -target.innerHTML=$STR("net.headers.pretty print") -}target.sourceDisplayed=!target.sourceDisplayed; -cancelEvent(event) -},insertSource:function(netInfoBox,source,rowName){var tbody=$$(".netInfo"+rowName+"Body",netInfoBox)[0]; -var node=this.sourceTag.replace({},tbody); -var sourceNode=$$(".source",node)[0]; -sourceNode.innerHTML=source -},insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0]; -var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0]; -clearNode(tbody); -if(!headers.length){return -}NetInfoBody.headerDataTag.insertRows({headers:headers},tbody); -var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title"); -removeClass(titleRow,"collapsed") -},init:function(parent){var rootNode=this.tag.append({},parent); -var netInfoBox=getAncestorByClass(parent,"netInfoBody"); -var file=netInfoBox.repObject; -var viewSource; -viewSource=$$(".request",rootNode)[0]; -if(file.requestHeadersText){removeClass(viewSource,"collapsed") -}viewSource=$$(".response",rootNode)[0]; -if(file.responseHeadersText){removeClass(viewSource,"collapsed") -}},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent) -}this.insertHeaderRows(parent,headers,rowName) -}}); -var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders; -Firebug.NetMonitor.NetInfoPostData=domplate(Firebug.Rep,{paramsTable:TABLE({"class":"netInfoPostParamsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parameters")},TR({"class":"netInfoPostParamsTitle",role:"presentation"},TD({colspan:3,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parameters"),SPAN({"class":"netInfoPostContentType"},"application/x-www-form-urlencoded")))))),partsTable:TABLE({"class":"netInfoPostPartsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parts")},TR({"class":"netInfoPostPartsTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parts"),SPAN({"class":"netInfoPostContentType"},"multipart/form-data")))))),jsonTable:TABLE({"class":"netInfoPostJSONTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("JSON")},TR({"class":"netInfoPostJSONTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("JSON")))),TR(TD({"class":"netInfoPostJSONBody"})))),xmlTable:TABLE({"class":"netInfoPostXMLTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("xmlviewer.tab.XML")},TR({"class":"netInfoPostXMLTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("xmlviewer.tab.XML")))),TR(TD({"class":"netInfoPostXMLBody"})))),sourceTable:TABLE({"class":"netInfoPostSourceTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Source")},TR({"class":"netInfoPostSourceTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostSource"},$STR("net.label.Source")))))),sourceBodyTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line")))),getParamValueIterator:function(param){return NetInfoBody.getParamValueIterator(param) -},render:function(context,parentNode,file){var spy=getAncestorByClass(parentNode,"spyHead"); -var spyObject=spy.repObject; -var data=spyObject.data; -var contentType=file.mimeType; -if(contentType&&contentType=="application/x-www-form-urlencoded"||data&&data.indexOf("=")!=-1){var params=parseURLEncodedTextArray(data); -if(params){this.insertParameters(parentNode,params) -}}var jsonData={responseText:data}; -if(Firebug.JSONViewerModel.isJSON(contentType,data)){this.insertJSON(parentNode,jsonData,context) -}var postText=data; -if(postText){this.insertSource(parentNode,postText) -}},insertParameters:function(parentNode,params){if(!params||!params.length){return -}var paramTable=this.paramsTable.append({object:{}},parentNode); -var row=$$(".netInfoPostParamsTitle",paramTable)[0]; -var tbody=paramTable.getElementsByTagName("tbody")[0]; -NetInfoBody.headerDataTag.insertRows({headers:params},row) -},insertParts:function(parentNode,data){if(!data.params||!data.params.length){return -}var partsTable=this.partsTable.append({object:{}},parentNode); -var row=$$(".netInfoPostPartsTitle",paramTable)[0]; -NetInfoBody.headerDataTag.insertRows({headers:data.params},row) -},insertJSON:function(parentNode,file,context){var text=file.responseText; -var data=parseJSONString(text); -if(!data){return -}var jsonTable=this.jsonTable.append({},parentNode); -var jsonBody=$$(".netInfoPostJSONBody",jsonTable)[0]; -if(!this.toggles){this.toggles={} -}Firebug.DOMPanel.DirTable.tag.replace({object:data,toggles:this.toggles},jsonBody) -},insertXML:function(parentNode,file,context){var text=Utils.getPostText(file,context); -var jsonTable=this.xmlTable.append(null,parentNode); -var jsonBody=$$(".netInfoPostXMLBody",jsonTable)[0]; -Firebug.XMLViewerModel.insertXML(jsonBody,text) -},insertSource:function(parentNode,text){var sourceTable=this.sourceTable.append({object:{}},parentNode); -var row=$$(".netInfoPostSourceTitle",sourceTable)[0]; -var param={value:[text]}; -this.sourceBodyTag.insertRows({param:param},row) -},parseMultiPartText:function(file,context){var text=Utils.getPostText(file,context); -if(text==undefined){return null -}FBTrace.sysout("net.parseMultiPartText; boundary: ",text); -var boundary=text.match(/\s*boundary=\s*(.*)/)[1]; -var divider="\r\n\r\n"; -var bodyStart=text.indexOf(divider); -var body=text.substr(bodyStart+divider.length); -var postData={}; -postData.mimeType="multipart/form-data"; -postData.params=[]; -var parts=body.split("--"+boundary); -for(var i=0; -i1)?m[1]:"",value:trim(part[1])}) -}return postData -}}); -var NetInfoPostData=Firebug.NetMonitor.NetInfoPostData; -var $STRP=function(a){return a -}; -Firebug.NetMonitor.NetLimit=domplate(Firebug.Rep,{collapsed:true,tableTag:DIV(TABLE({width:"100%",cellpadding:0,cellspacing:0},TBODY())),limitTag:TR({"class":"netRow netLimitRow",$collapsed:"$isCollapsed"},TD({"class":"netCol netLimitCol",colspan:6},TABLE({cellpadding:0,cellspacing:0},TBODY(TR(TD(SPAN({"class":"netLimitLabel"},$STRP("plural.Limit_Exceeded",[0]))),TD({style:"width:100%"}),TD(BUTTON({"class":"netLimitButton",title:"$limitPrefsTitle",onclick:"$onPreferences"},$STR("LimitPrefs"))),TD(" ")))))),isCollapsed:function(){return this.collapsed -},onPreferences:function(event){openNewTab("about:config") -},updateCounter:function(row){removeClass(row,"collapsed"); -var limitLabel=row.getElementsByClassName("netLimitLabel").item(0); -limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount]) -},createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent); -var row=this.createRow(table.firstChild.firstChild,limitInfo); -return[table,row] -},createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0]; -row.limitInfo=limitInfo; -return row -},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return -}if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit() -}},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit"); -maxQueueRequests=value?value:maxQueueRequests -}}); -var NetLimit=Firebug.NetMonitor.NetLimit; -Firebug.NetMonitor.ResponseSizeLimit=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoResponseSizeLimit"},SPAN("$object.beforeLink"),A({"class":"objectLink",onclick:"$onClickLink"},"$object.linkText"),SPAN("$object.afterLink")),reLink:/^(.*)(.*)<\/a>(.*$)/,append:function(obj,parent){var m=obj.text.match(this.reLink); -return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this) -}}); -Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null -}name=name.toLowerCase(); -for(var i=0; -ilimit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n") -}return file.postText -},getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file) -},isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context); -if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true -}var headerValue=Utils.findHeader(file.requestHeaders,"content-type"); -if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true -}return false -},isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context); -if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true -}return false -},getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri); -if(!ext){return mimeType -}else{var extMimeType=mimeExtensionMap[ext.toLowerCase()]; -return extMimeType?extMimeType:mimeType -}}else{return mimeType -}},getDateFromSeconds:function(s){var d=new Date(); -d.setTime(s*1000); -return d -},getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel); -file.status=request.responseStatus; -file.method=http.requestMethod; -file.urlParams=parseURLParams(file.href); -file.mimeType=Utils.getMimeType(request.contentType,request.name); -if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[]; -http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value}) -}}); -http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value}) -}}); -file.requestHeaders=requestHeaders; -file.responseHeaders=responseHeaders -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc) -}}},isXHR:function(request){try{var callbacks=request.notificationCallbacks; -var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null; -if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request)) -}return(xhrRequest!=null) -}catch(exc){}return false -},getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file) -}return file.category -}if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file) -}return file.category="xhr" -}if(!file.mimeType){var ext=getFileExtension(file.href); -if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()] -}}if(!file.mimeType){return"" -}var mimeType=file.mimeType; -if(mimeType){mimeType=mimeType.split(";")[0] -}return(file.category=mimeCategoryMap[mimeType]) -}}; -var Utils=Firebug.NetMonitor.Utils; -Firebug.registerModule(Firebug.NetMonitor) -}}); -FBL.ns(function(){with(FBL){var contexts=[]; -Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener) -}Firebug.Module.initialize.apply(this,arguments) -},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments); -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener) -}},initContext:function(context){context.spies=[]; -if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window) -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName()) -}},destroyContext:function(context){this.detachObserver(context,null); -if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName()) -}delete context.spies; -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName()) -}},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win) -}},unwatchWindow:function(context,win){try{this.detachObserver(context,win) -}catch(ex){ERROR(ex) -}},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver; -for(var i=0; -i\s*/,""); -var div=parentNode.ownerDocument.createElement("div"); -div.innerHTML=xmlText; -var root=div.getElementsByTagName("*")[0]; -if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed",doc) -}var html=[]; -Firebug.Reps.appendNode(root,html); -parentNode.innerHTML=html.join("") -}}); -Firebug.XMLViewerModel.ParseError=domplate(Firebug.Rep,{tag:DIV({"class":"xmlInfoError"},DIV({"class":"xmlInfoErrorMsg"},"$error.message"),PRE({"class":"xmlInfoErrorSource"},"$error|getSource")),getSource:function(error){var parts=error.source.split("\n"); -if(parts.length!=2){return error.source -}var limit=50; -var column=parts[1].length; -if(column>=limit){parts[0]="..."+parts[0].substr(column-limit); -parts[1]="..."+parts[1].substr(column-limit) -}if(parts[0].length>80){parts[0]=parts[0].substr(0,80)+"..." -}return parts.join("\n") -}}); -Firebug.registerModule(Firebug.XMLViewerModel) -}}); -FBL.ns(function(){with(FBL){var consoleQueue=[]; -var lastHighlightedObject; -var FirebugContext=Env.browser; -var maxQueueRequests=500; -Firebug.ConsoleBase={log:function(object,context,className,rep,noThrottle,sourceLink){return this.logRow(appendObject,object,context,className,rep,sourceLink,noThrottle) -},logFormatted:function(objects,context,className,noThrottle,sourceLink){return this.logRow(appendFormatted,objects,context,className,null,sourceLink,noThrottle) -},openGroup:function(objects,context,className,rep,noThrottle,sourceLink,noPush){return this.logRow(appendOpenGroup,objects,context,className,rep,sourceLink,noThrottle) -},closeGroup:function(context,noThrottle){return this.logRow(appendCloseGroup,null,context,null,null,null,noThrottle,true) -},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){noThrottle=true; -if(!context){context=FirebugContext -}if(FBTrace.DBG_ERRORS&&!context){FBTrace.sysout("Console.logRow has no context, skipping objects",objects) -}if(!context){return -}if(noThrottle||!context){var panel=this.getPanel(context); -if(panel){var row=panel.append(appender,objects,className,rep,sourceLink,noRow); -var container=panel.panelNode; -return row -}else{consoleQueue.push([appender,objects,context,className,rep,sourceLink,noThrottle,noRow]) -}}else{if(!context.throttle){return -}var args=[appender,objects,context,className,rep,sourceLink,true,noRow]; -context.throttle(this.logRow,this,args) -}},appendFormatted:function(args,row,context){if(!context){context=FirebugContext -}var panel=this.getPanel(context); -panel.appendFormatted(args,row) -},clear:function(context){if(!context){context=Firebug.context -}var panel=this.getPanel(context,true); -if(panel){panel.clear() -}},getPanel:function(context,noCreate){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null -}}; -var ActivableConsole=extend(Firebug.ConsoleBase,{isAlwaysEnabled:function(){return true -}}); -Firebug.Console=Firebug.Console=extend(ActivableConsole,{dispatchName:"console",error:function(){Firebug.Console.logFormatted(arguments,Firebug.browser,"error") -},flush:function(){dispatch(this.fbListeners,"flush",[]); -for(var i=0,length=consoleQueue.length; -iobjects.length){format=""; -objIndex=-1; -parts.length=0; -break -}}}for(var i=0; -i1){traceRecursion--; -return -}var frames=[]; -for(var fn=arguments.callee.caller.caller; -fn; -fn=fn.caller){if(wasVisited(fn)){break -}var args=[]; -for(var i=0,l=fn.arguments.length; -i1){objects=[errorObject]; -for(var i=1; -i0)){var oldest=frames.length-1; -for(var i=0; -i0&&Firebug.context.persistedState.commandHistory.length>0){this.element.value=Firebug.context.persistedState.commandHistory[--Firebug.context.persistedState.commandPointer] -}},nextCommand:function(){var element=this.element; -var limit=Firebug.context.persistedState.commandHistory.length-1; -var i=Firebug.context.persistedState.commandPointer; -if(i=0&&i',msg,"",'"] -},onKeyDown:function(e){e=e||event; -var code=e.keyCode; -if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false -}if(code==13){this.enter(); -this.clear() -}else{if(code==27){setTimeout(this.clear,0) -}else{if(code==38){this.prevCommand() -}else{if(code==40){this.nextCommand() -}else{if(code==9){this.autocomplete(e.shiftKey) -}else{return -}}}}}cancelEvent(e,true); -return false -},onMultiLineKeyDown:function(e){e=e||event; -var code=e.keyCode; -if(code==13&&e.ctrlKey){this.enter() -}}}); -Firebug.registerModule(Firebug.CommandLine); -function getExpressionOffset(command){var bracketCount=0; -var start=command.length-1; -for(; -start>=0; ---start){var c=command[start]; -if((c==","||c==";"||c==" ")&&!bracketCount){break -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount -}else{break -}}else{if(reCloseBracket.test(c)){++bracketCount -}}}return start+1 -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id) -},$$:function(selector,context){context=context||Firebug.browser.document; -return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.") -},$0:null,$1:null,dir:function(o){Firebug.Console.log(o,Firebug.context,"dir",Firebug.DOMPanel.DirTable) -},dirxml:function(o){if(instanceOf(o,"Window")){o=o.document.documentElement -}else{if(instanceOf(o,"Document")){o=o.documentElement -}}Firebug.Console.log(o,Firebug.context,"dirxml",Firebug.HTMLPanel.SoloElement) -}}; -var defineCommandLineAPI=function defineCommandLineAPI(){Firebug.CommandLine.API={}; -for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m] -}}var stack=FirebugChrome.htmlSelectionStack; -if(stack){Firebug.CommandLine.API.$0=stack[0]; -Firebug.CommandLine.API.$1=stack[1] -}} -}}); -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; -var cacheID=Firebug.Lite.Cache.ID; -var ignoreHTMLProps={sizcache:1,sizset:1}; -if(Firebug.ignoreFirebugElements){ignoreHTMLProps[cacheID]=1 -}Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g; -if(!nodeArray.length){nodeArray=[nodeArray] -}for(var n=0,node; -node=nodeArray[n]; -n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue -}var uid=ElementCache(node); -var child=node.childNodes; -var childLength=child.length; -var nodeName=node.nodeName.toLowerCase(); -var nodeVisible=isVisible(node); -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style"; -var nodeControl=!hasSingleTextChild&&childLength>0?('
'):""; -if(isIE&&nodeControl){html.push(nodeControl) -}if(typeof uid!="undefined"){html.push('
',!isIE&&nodeControl?nodeControl:"","<',nodeName,"") -}else{html.push('
<',nodeName,"") -}for(var i=0; -i',name,'="',escapeHTML(value),""") -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,""); -if(value){html.push('>',escapeHTML(value),'</',nodeName,">
") -}else{html.push("/>
") -}}else{if(childLength>0){html.push(">
") -}else{html.push("/>
") -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,""); -if(isIE){var src=value+"\n" -}else{var src="\n"+value+"\n" -}var match=src.match(/\n/g); -var num=match?match.length:0; -var s=[],sl=0; -for(var c=1; -c'+c+"" -}html.push('
',s.join(""),'
',escapeHTML(src),"
") -}else{var value=node.nodeValue.replace(reTrim,""); -if(value){html.push('
',escapeHTML(value),"
") -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document; -var uid=treeNode.id; -var parentNode=ElementCache.get(uid); -if(parentNode.childNodes.length==0){return -}var treeNext=treeNode.nextSibling; -var treeParent=treeNode.parentNode; -var control=isIE?treeNode.previousSibling:treeNode.firstChild; -control.className="nodeControl nodeMaximized"; -var html=[]; -var children=doc.createElement("div"); -children.className="nodeChildren"; -this.appendTreeNode(parentNode.childNodes,html); -children.innerHTML=html.join(""); -treeParent.insertBefore(children,treeNext); -var closeElement=doc.createElement("div"); -closeElement.className="objectBox-element"; -closeElement.innerHTML='</'+parentNode.nodeName.toLowerCase()+">"; -treeParent.insertBefore(closeElement,treeNext) -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling; -var closeTag=children.nextSibling; -var control=isIE?treeNode.previousSibling:treeNode.firstChild; -control.className="nodeControl"; -children.parentNode.removeChild(children); -closeTag.parentNode.removeChild(closeTag) -},isTreeNodeVisible:function(id){return $(id) -},select:function(el){var id=el&&ElementCache(el); -if(id){this.selectTreeNode(id) -}},selectTreeNode:function(id){id=""+id; -var node,stack=[]; -while(id&&!this.isTreeNodeVisible(id)){stack.push(id); -var node=ElementCache.get(id).parentNode; -if(node){id=ElementCache(node) -}else{break -}}stack.push(id); -while(stack.length>0){id=stack.pop(); -node=$(id); -if(stack.length>0&&ElementCache.get(id).childNodes.length>0){this.appendTreeChildren(node) -}}selectElement(node); -if(fbPanel1){fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2) -}}}); -Firebug.registerModule(Firebug.HTML); -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:!Firebug.flexChromeEnabled,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.panelNode.style.padding="4px 3px 1px 15px"; -this.panelNode.style.minWidth="500px"; -if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI() -}if(this.sidePanelBar&&!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("css") -}},destroy:function(){selectedElement=null; -fbPanel1=null; -selectedSidePanelTS=null; -selectedSidePanelTimer=null; -Firebug.Panel.destroy.apply(this,arguments) -},createUI:function(){var rootNode=Firebug.browser.document.documentElement; -var html=[]; -Firebug.HTML.appendTreeNode(rootNode,html); -this.panelNode.innerHTML=html.join("") -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); -fbPanel1=$("fbPanel1"); -if(!selectedElement){Firebug.context.persistedState.selectedHTMLElementId=Firebug.context.persistedState.selectedHTMLElementId&&ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId)?Firebug.context.persistedState.selectedHTMLElementId:ElementCache(Firebug.browser.document.body); -Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId) -}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove) -},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove); -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove); -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove); -removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick); -fbPanel1=null; -Firebug.Panel.shutdown.apply(this,arguments) -},reattach:function(){if(Firebug.context.persistedState.selectedHTMLElementId){Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId) -}},updateSelection:function(object){var id=ElementCache(object); -if(id){Firebug.HTML.selectTreeNode(id) -}}}); -Firebug.registerPanel(HTMLPanel); -var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":" -}):styles -}; -var selectedElement=null; -var fbPanel1=null; -var selectedSidePanelTS,selectedSidePanelTimer; -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element" -}e.className=e.className+" selectedElement"; -if(FBL.isFirefox){e.style.MozBorderRadius="2px" -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px" -}}e.style.borderRadius="2px"; -selectedElement=e; -Firebug.context.persistedState.selectedHTMLElementId=e.id; -var target=ElementCache.get(e.id); -var sidePanelBar=Firebug.chrome.getPanel("HTML").sidePanelBar; -var selectedSidePanel=sidePanelBar?sidePanelBar.selectedPanel:null; -var stack=FirebugChrome.htmlSelectionStack; -stack.unshift(target); -if(stack.length>2){stack.pop() -}var lazySelect=function(){selectedSidePanelTS=new Date().getTime(); -if(selectedSidePanel){selectedSidePanel.select(target,true) -}}; -if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer); -selectedSidePanelTimer=null -}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0) -}else{selectedSidePanelTimer=setTimeout(lazySelect,150) -}}}; -Firebug.HTML.onTreeClick=function(e){e=e||event; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ); -selectElement(targ.parentNode.parentNode); -if(control.className.indexOf("nodeControl")==-1){return -}}else{control=targ -}FBL.cancelEvent(e); -var treeNode=isIE?control.nextSibling:control.parentNode; -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode) -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode) -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}}; -function onListMouseOut(e){e=e||event||window; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null -}}var hoverElement=null; -var hoverElementTS=0; -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window; -var targ; -if(e.target){targ=e.target -}else{if(e.srcElement){targ=e.srcElement -}}if(targ.nodeType==3){targ=targ.parentNode -}var found=false; -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode -}else{found=true -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null; -return -}if(typeof targ.attributes[cacheID]=="undefined"){return -}var uid=targ.attributes[cacheID]; -if(!uid){return -}var el=ElementCache.get(uid.value); -var nodeName=el.nodeName.toLowerCase(); -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return -}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel(); -hoverElement=null; -return -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime(); -hoverElement=el; -FBL.Firebug.Inspector.drawBoxModel(el) -}}catch(E){}}; -Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object))) -},appendNull:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendString:function(object,html){html.push('"',escapeHTML(objectToString(object)),""") -},appendInteger:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendFloat:function(object,html){html.push('',escapeHTML(objectToString(object)),"") -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/; -var m=reName.exec(objectToString(object)); -var name=m&&m[1]?m[1]:"function"; -html.push('',escapeHTML(name),"()") -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html) -}else{if(object==null){this.appendNull("null",html) -}else{if(typeof object=="string"){this.appendString(object,html) -}else{if(typeof object=="number"){this.appendInteger(object,html) -}else{if(typeof object=="boolean"){this.appendInteger(object,html) -}else{if(typeof object=="function"){this.appendFunction(object,html) -}else{if(object.nodeType==1){this.appendSelector(object,html) -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html) -}else{this.appendObjectFormatted(object,html) -}}else{this.appendText(object,html) -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object); -var reObject=/\[object (.*?)\]/; -var m=reObject.exec(text); -html.push('',m?m[1]:text,"") -},appendSelector:function(object,html){var uid=ElementCache(object); -var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; -html.push('"); -html.push('',escapeHTML(object.nodeName.toLowerCase()),""); -if(object.id){html.push('#',escapeHTML(object.id),"") -}if(object.className){html.push('.',escapeHTML(object.className),"") -}html.push("") -},appendNode:function(node,html){if(node.nodeType==1){var uid=ElementCache(node); -var uidString=uid?[cacheID,'="',uid,'"'].join(""):""; -html.push('
',"','<',node.nodeName.toLowerCase(),""); -for(var i=0; -i',name,'="',escapeHTML(value),""") -}if(node.firstChild){html.push('>
'); -for(var child=node.firstChild; -child; -child=child.nextSibling){this.appendNode(child,html) -}html.push('
</',node.nodeName.toLowerCase(),">
") -}else{html.push("/>") -}}else{if(node.nodeType==3){var value=trim(node.nodeValue); -if(value){html.push('
',escapeHTML(value),"
") -}}}},appendArray:function(object,html){html.push('[ '); -for(var i=0,l=object.length,obj; -i]") -}} -}}); -FBL.ns(function(){with(FBL){var maxWidth=100,maxHeight=80; -var infoTipMargin=10; -var infoTipWindowPadding=25; -Firebug.InfoTip=extend(Firebug.Module,{dispatchName:"infoTip",tags:domplate({infoTipTag:DIV({"class":"infoTip"}),colorTag:DIV({style:"background: $rgbValue; width: 100px; height: 40px"}," "),imgTag:DIV({"class":"infoTipImageBox infoTipLoading"},IMG({"class":"infoTipImage",src:"$urlValue",repeat:"$repeat",onload:"$onLoadImage"}),IMG({"class":"infoTipBgImage",collapsed:true,src:"blank.gif"}),DIV({"class":"infoTipCaption"})),onLoadImage:function(event){var img=event.currentTarget||event.srcElement; -var innerBox=img.parentNode; -var caption=getElementByClass(innerBox,"infoTipCaption"); -var bgImg=getElementByClass(innerBox,"infoTipBgImage"); -if(!bgImg){return -}if(isIE){removeClass(innerBox,"infoTipLoading") -}var updateInfoTip=function(){var w=img.naturalWidth||img.width||10,h=img.naturalHeight||img.height||10; -var repeat=img.getAttribute("repeat"); -if(repeat=="repeat-x"||(w==1&&h>1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat-x"; -bgImg.style.width=maxWidth+"px"; -if(h>maxHeight){bgImg.style.height=maxHeight+"px" -}else{bgImg.style.height=h+"px" -}}else{if(repeat=="repeat-y"||(h==1&&w>1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat-y"; -bgImg.style.height=maxHeight+"px"; -if(w>maxWidth){bgImg.style.width=maxWidth+"px" -}else{bgImg.style.width=w+"px" -}}else{if(repeat=="repeat"||(w==1&&h==1)){collapse(img,true); -collapse(bgImg,false); -bgImg.style.background="url("+img.src+") repeat"; -bgImg.style.width=maxWidth+"px"; -bgImg.style.height=maxHeight+"px" -}else{if(w>maxWidth||h>maxHeight){if(w>h){img.style.width=maxWidth+"px"; -img.style.height=Math.round((h/w)*maxWidth)+"px" -}else{img.style.width=Math.round((w/h)*maxHeight)+"px"; -img.style.height=maxHeight+"px" -}}}}}caption.innerHTML=$STRF(w+" x "+h) -}; -if(isIE){setTimeout(updateInfoTip,0) -}else{updateInfoTip(); -removeClass(innerBox,"infoTipLoading") -}}}),initializeBrowser:function(browser){browser.onInfoTipMouseOut=bind(this.onMouseOut,this,browser); -browser.onInfoTipMouseMove=bind(this.onMouseMove,this,browser); -var doc=browser.document; -if(!doc){return -}addEvent(doc,"mouseover",browser.onInfoTipMouseMove); -addEvent(doc,"mouseout",browser.onInfoTipMouseOut); -addEvent(doc,"mousemove",browser.onInfoTipMouseMove); -return browser.infoTip=this.tags.infoTipTag.append({},getBody(doc)) -},uninitializeBrowser:function(browser){if(browser.infoTip){var doc=browser.document; -removeEvent(doc,"mouseover",browser.onInfoTipMouseMove); -removeEvent(doc,"mouseout",browser.onInfoTipMouseOut); -removeEvent(doc,"mousemove",browser.onInfoTipMouseMove); -browser.infoTip.parentNode.removeChild(browser.infoTip); -delete browser.infoTip; -delete browser.onInfoTipMouseMove -}},showInfoTip:function(infoTip,panel,target,x,y,rangeParent,rangeOffset){if(!Firebug.showInfoTips){return -}var scrollParent=getOverflowParent(target); -var scrollX=x+(scrollParent?scrollParent.scrollLeft:0); -if(panel.showInfoTip(infoTip,target,scrollX,y,rangeParent,rangeOffset)){var htmlElt=infoTip.ownerDocument.documentElement; -var panelWidth=htmlElt.clientWidth; -var panelHeight=htmlElt.clientHeight; -if(x+infoTip.offsetWidth+infoTipMargin>panelWidth){infoTip.style.left=Math.max(0,panelWidth-(infoTip.offsetWidth+infoTipMargin))+"px"; -infoTip.style.right="auto" -}else{infoTip.style.left=(x+infoTipMargin)+"px"; -infoTip.style.right="auto" -}if(y+infoTip.offsetHeight+infoTipMargin>panelHeight){infoTip.style.top=Math.max(0,panelHeight-(infoTip.offsetHeight+infoTipMargin))+"px"; -infoTip.style.bottom="auto" -}else{infoTip.style.top=(y+infoTipMargin)+"px"; -infoTip.style.bottom="auto" -}if(FBTrace.DBG_INFOTIP){FBTrace.sysout("infotip.showInfoTip; top: "+infoTip.style.top+", left: "+infoTip.style.left+", bottom: "+infoTip.style.bottom+", right:"+infoTip.style.right+", offsetHeight: "+infoTip.offsetHeight+", offsetWidth: "+infoTip.offsetWidth+", x: "+x+", panelWidth: "+panelWidth+", y: "+y+", panelHeight: "+panelHeight) -}infoTip.setAttribute("active","true") -}else{this.hideInfoTip(infoTip) -}},hideInfoTip:function(infoTip){if(infoTip){infoTip.removeAttribute("active") -}},onMouseOut:function(event,browser){if(!event.relatedTarget){this.hideInfoTip(browser.infoTip) -}},onMouseMove:function(event,browser){if(getAncestorByClass(event.target,"infoTip")){return -}if(browser.currentPanel){var x=event.clientX,y=event.clientY,target=event.target||event.srcElement; -this.showInfoTip(browser.infoTip,browser.currentPanel,target,x,y,event.rangeParent,event.rangeOffset) -}else{this.hideInfoTip(browser.infoTip) -}},populateColorInfoTip:function(infoTip,color){this.tags.colorTag.replace({rgbValue:color},infoTip); -return true -},populateImageInfoTip:function(infoTip,url,repeat){if(!repeat){repeat="no-repeat" -}this.tags.imgTag.replace({urlValue:url,repeat:repeat},infoTip); -return true -},disable:function(){},showPanel:function(browser,panel){if(panel){var infoTip=panel.panelBrowser.infoTip; -if(!infoTip){infoTip=this.initializeBrowser(panel.panelBrowser) -}this.hideInfoTip(infoTip) -}},showSidePanel:function(browser,panel){this.showPanel(browser,panel) -}}); -Firebug.registerModule(Firebug.InfoTip) -}}); -FBL.ns(function(){with(FBL){var CssParser=null; -CssParser=(function(){function rule(start,body_start,end){return{start:start||0,body_start:body_start||0,end:end||0,line:-1,selector:null,parent:null,children:[],addChild:function(start,body_start,end){var r=rule(start,body_start,end); -r.parent=this; -this.children.push(r); -return r -},lastChild:function(){return this.children[this.children.length-1] -}} -}function removeAll(str,re){var m; -while(m=str.match(re)){str=str.substring(m[0].length) -}return str -}function trim(str){return str.replace(/^\s+|\s+$/g,"") -}function normalizeSelector(selector){selector=selector.replace(/[\n\r]/g," "); -selector=trim(selector); -selector=selector.replace(/\s*,\s*/g,","); -return selector -}function preprocessRules(text,rule_node){for(var i=0,il=rule_node.children.length; -i=line_indexes[j]&&r.start0 -}; -CssAnalyzer.parseStyleSheet=function(href){var sourceData=extractSourceData(href); -var parsedObj=CssParser.read(sourceData.source,sourceData.startLine); -var parsedRules=parsedObj.children; -for(var i=0; -i0){groupItem=group.shift(); -if(CssParser.normalizeSelector(selector)==groupItem){lineNo=parsedRule.line -}if(group.length==0){parsedRulesIndex++ -}}else{if(CssParser.normalizeSelector(selector)==parsedRule.selector){lineNo=parsedRule.line; -parsedRulesIndex++ -}}}CSSRuleMap[rid]={styleSheetId:ssid,styleSheetIndex:i,order:++globalCSSRuleIndex,specificity:selector&&selector.indexOf(",")==-1?getCSSRuleSpecificity(selector):0,rule:rule,lineNo:lineNo,selector:selector,cssText:rule.style?rule.style.cssText:rule.cssText?rule.cssText:""}; -var elements=Firebug.Selector(selector,doc); -for(var j=0,elementsLength=elements.length; -jmaxSpecificity){maxSpecificity=spec; -mostSpecificSelector=sel -}}}rule.specificity=maxSpecificity -}}rules.sort(sortElementRules); -return rules -}; -var sortElementRules=function(a,b){var ruleA=CSSRuleMap[a]; -var ruleB=CSSRuleMap[b]; -var specificityA=ruleA.specificity; -var specificityB=ruleB.specificity; -if(specificityA>specificityB){return 1 -}else{if(specificityAruleB.order?1:-1 -}}}; -var solveRulesTied=function(a,b){var ruleA=CSSRuleMap[a]; -var ruleB=CSSRuleMap[b]; -if(ruleA.specificity==ruleB.specificity){return ruleA.order>ruleB.order?1:-1 -}return null -}; -var getCSSRuleSpecificity=function(selector){var match=selector.match(reSelectorTag); -var tagCount=match?match.length:0; -match=selector.match(reSelectorClass); -var classCount=match?match.length:0; -match=selector.match(reSelectorId); -var idCount=match?match.length:0; -return tagCount+10*classCount+100*idCount -}; -var extractSourceData=function(href){var sourceData={source:null,startLine:0}; -if(href){sourceData.source=Firebug.Lite.Proxy.load(href) -}else{var index=0; -var ssIndex=++internalStyleSheetIndex; -var reStyleTag=/\<\s*style.*\>/gi; -var reEndStyleTag=/\<\/\s*style.*\>/gi; -var source=Firebug.Lite.Proxy.load(Env.browser.location.href); -source=source.replace(/\n\r|\r\n/g,"\n"); -var startLine=0; -do{var matchStyleTag=source.match(reStyleTag); -var i0=source.indexOf(matchStyleTag[0])+matchStyleTag[0].length; -for(var i=0; -i=line){return rule -}}}},highlightRule:function(rule){var ruleElement=Firebug.getElementByRepObject(this.panelNode.firstChild,rule); -if(ruleElement){scrollIntoCenterView(ruleElement,this.panelNode); -setClassTimed(ruleElement,"jumpHighlight",this.context) -}},getStyleSheetRules:function(context,styleSheet){var isSystemSheet=isSystemStyleSheet(styleSheet); -function appendRules(cssRules){for(var i=0; -i20){return -}var target=event.target||event.srcElement; -if(hasClass(target,"textEditor")){return -}var row=getAncestorByClass(target,"cssProp"); -if(row&&hasClass(row,"editGroup")){this.disablePropertyRow(row); -cancelEvent(event) -}},onDoubleClick:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft; -if(!isLeftClick(event)||offset<=20){return -}var target=event.target||event.srcElement; -if(hasClass(target,"textEditorInner")){return -}var row=getAncestorByClass(target,"cssRule"); -if(row&&!getAncestorByClass(target,"cssPropName")&&!getAncestorByClass(target,"cssPropValue")){this.insertPropertyRow(row); -cancelEvent(event) -}},name:"stylesheet",title:"CSS",parentPanel:null,searchable:true,dependents:["css","stylesheet","dom","domSide","layout"],options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.onMouseDown=bind(this.onMouseDown,this); -this.onDoubleClick=bind(this.onDoubleClick,this); -if(this.name=="stylesheet"){this.onChangeSelect=bind(this.onChangeSelect,this); -var doc=Firebug.browser.document; -var selectNode=this.selectNode=createElement("select"); -CssAnalyzer.processAllStyleSheets(doc,function(doc,styleSheet){var key=StyleSheetCache.key(styleSheet); -var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href); -var option=createElement("option",{value:key}); -option.appendChild(Firebug.chrome.document.createTextNode(fileName)); -selectNode.appendChild(option) -}); -this.toolButtonsNode.appendChild(selectNode) -}},onChangeSelect:function(event){event=event||window.event; -var target=event.srcElement||event.currentTarget; -var key=target.value; -var styleSheet=StyleSheetCache.get(key); -this.updateLocation(styleSheet) -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -this.context=Firebug.chrome; -this.document=Firebug.chrome.document; -this.initializeNode(); -if(this.name=="stylesheet"){var styleSheets=Firebug.browser.document.styleSheets; -if(styleSheets.length>0){addEvent(this.selectNode,"change",this.onChangeSelect); -this.updateLocation(styleSheets[0]) -}}},shutdown:function(){Firebug.Editor.stopEditing(); -if(this.name=="stylesheet"){removeEvent(this.selectNode,"change",this.onChangeSelect) -}this.destroyNode(); -Firebug.Panel.shutdown.apply(this,arguments) -},destroy:function(state){Firebug.Panel.destroy.apply(this,arguments) -},initializeNode:function(oldPanelNode){addEvent(this.panelNode,"mousedown",this.onMouseDown); -addEvent(this.panelNode,"dblclick",this.onDoubleClick) -},destroyNode:function(){removeEvent(this.panelNode,"mousedown",this.onMouseDown); -removeEvent(this.panelNode,"dblclick",this.onDoubleClick) -},ishow:function(state){Firebug.Inspector.stopInspecting(true); -this.showToolbarButtons("fbCSSButtons",true); -if(this.context.loaded&&!this.location){restoreObjects(this,state); -if(!this.location){this.location=this.getDefaultLocation() -}if(state&&state.scrollTop){this.panelNode.scrollTop=state.scrollTop -}}},ihide:function(){this.showToolbarButtons("fbCSSButtons",false); -this.lastScrollTop=this.panelNode.scrollTop -},supportsObject:function(object){if(object instanceof CSSStyleSheet){return 1 -}else{if(object instanceof CSSStyleRule){return 2 -}else{if(object instanceof CSSStyleDeclaration){return 2 -}else{if(object instanceof SourceLink&&object.type=="css"&&reCSS.test(object.href)){return 2 -}else{return 0 -}}}}},updateLocation:function(styleSheet){if(!styleSheet){return -}if(styleSheet.editStyleSheet){styleSheet=styleSheet.editStyleSheet.sheet -}if(styleSheet.restricted){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},this.panelNode); -CssAnalyzer.externalStyleSheetWarning.tag.append({object:"The stylesheet could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"},this.panelNode); -return -}var rules=this.getStyleSheetRules(this.context,styleSheet); -var result; -if(rules.length){result=this.template.tag.replace({rules:rules},this.panelNode) -}else{result=FirebugReps.Warning.tag.replace({object:"EmptyStyleSheet"},this.panelNode) -}},updateSelection:function(object){this.selection=null; -if(object instanceof CSSStyleDeclaration){object=object.parentRule -}if(object instanceof CSSStyleRule){this.navigate(object.parentStyleSheet); -this.highlightRule(object) -}else{if(object instanceof CSSStyleSheet){this.navigate(object) -}else{if(object instanceof SourceLink){try{var sourceLink=object; -var sourceFile=getSourceFileByHref(sourceLink.href,this.context); -if(sourceFile){clearNode(this.panelNode); -this.showSourceFile(sourceFile); -var lineNo=object.line; -if(lineNo){this.scrollToLine(lineNo,this.jumpHighlightFactory(lineNo,this.context)) -}}else{var stylesheet=getStyleSheetByHref(sourceLink.href,this.context); -if(stylesheet){this.navigate(stylesheet) -}else{if(FBTrace.DBG_CSS){FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href,sourceLink) -}}}}catch(exc){if(FBTrace.DBG_CSS){FBTrace.sysout("css.upDateSelection FAILS "+exc,exc) -}}}}}},updateOption:function(name,value){if(name=="expandShorthandProps"){this.refresh() -}},getLocationList:function(){var styleSheets=getAllStyleSheets(this.context); -return styleSheets -},getOptionsMenuItems:function(){return[{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")},"-",{label:"Refresh",command:bind(this.refresh,this)}] -},getContextMenuItems:function(style,target){var items=[]; -if(this.infoTipType=="color"){items.push({label:"CopyColor",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)}) -}else{if(this.infoTipType=="image"){items.push({label:"CopyImageLocation",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)},{label:"OpenImageInNewTab",command:bindFixed(openNewTab,FBL,this.infoTipObject)}) -}}if(isElement(this.selection)){items.push({label:"EditStyle",command:bindFixed(this.editElementStyle,this)}) -}else{if(!isSystemStyleSheet(this.selection)){items.push({label:"NewRule",command:bindFixed(this.insertRule,this,target)}) -}}var cssRule=getAncestorByClass(target,"cssRule"); -if(cssRule&&hasClass(cssRule,"cssEditableRule")){items.push("-",{label:"NewProp",command:bindFixed(this.insertPropertyRow,this,target)}); -var propRow=getAncestorByClass(target,"cssProp"); -if(propRow){var propName=getChildByClass(propRow,"cssPropName")[textContent]; -var isDisabled=hasClass(propRow,"disabledStyle"); -items.push({label:$STRF("EditProp",[propName]),nol10n:true,command:bindFixed(this.editPropertyRow,this,propRow)},{label:$STRF("DeleteProp",[propName]),nol10n:true,command:bindFixed(this.deletePropertyRow,this,propRow)},{label:$STRF("DisableProp",[propName]),nol10n:true,type:"checkbox",checked:isDisabled,command:bindFixed(this.disablePropertyRow,this,propRow)}) -}}items.push("-",{label:"Refresh",command:bind(this.refresh,this)}); -return items -},browseObject:function(object){if(this.infoTipType=="image"){openNewTab(this.infoTipObject); -return true -}},showInfoTip:function(infoTip,target,x,y){var propValue=getAncestorByClass(target,"cssPropValue"); -if(propValue){var offset=getClientOffset(propValue); -var offsetX=x-offset.x; -var text=propValue[textContent]; -var charWidth=propValue.offsetWidth/text.length; -var charOffset=Math.floor(offsetX/charWidth); -var cssValue=parseCSSValue(text,charOffset); -if(cssValue){if(cssValue.value==this.infoTipValue){return true -}this.infoTipValue=cssValue.value; -if(cssValue.type=="rgb"||(!cssValue.type&&isColorKeyword(cssValue.value))){this.infoTipType="color"; -this.infoTipObject=cssValue.value; -return Firebug.InfoTip.populateColorInfoTip(infoTip,cssValue.value) -}else{if(cssValue.type=="url"){var propNameNode=getElementByClass(target.parentNode,"cssPropName"); -if(propNameNode&&isImageRule(propNameNode[textContent])){var rule=Firebug.getRepObject(target); -var baseURL=this.getStylesheetURL(rule); -var relURL=parseURLValue(cssValue.value); -var absURL=isDataURL(relURL)?relURL:absoluteURL(relURL,baseURL); -var repeat=parseRepeatValue(text); -this.infoTipType="image"; -this.infoTipObject=absURL; -return Firebug.InfoTip.populateImageInfoTip(infoTip,absURL,repeat) -}}}}}delete this.infoTipType; -delete this.infoTipValue; -delete this.infoTipObject -},getEditor:function(target,value){if(target==this.panelNode||hasClass(target,"cssSelector")||hasClass(target,"cssRule")||hasClass(target,"cssSheet")){if(!this.ruleEditor){this.ruleEditor=new CSSRuleEditor(this.document) -}return this.ruleEditor -}else{if(!this.editor){this.editor=new CSSEditor(this.document) -}return this.editor -}},getDefaultLocation:function(){try{var styleSheets=this.context.window.document.styleSheets; -if(styleSheets.length){var sheet=styleSheets[0]; -return(Firebug.filterSystemURLs&&isSystemURL(getURLForStyleSheet(sheet)))?null:sheet -}}catch(exc){if(FBTrace.DBG_LOCATIONS){FBTrace.sysout("css.getDefaultLocation FAILS "+exc,exc) -}}},getObjectDescription:function(styleSheet){var url=getURLForStyleSheet(styleSheet); -var instance=getInstanceForStyleSheet(styleSheet); -var baseDescription=splitURLBase(url); -if(instance){baseDescription.name=baseDescription.name+" #"+(instance+1) -}return baseDescription -},search:function(text,reverse){var curDoc=this.searchCurrentDoc(!Firebug.searchGlobal,text,reverse); -if(!curDoc&&Firebug.searchGlobal){return this.searchOtherDocs(text,reverse) -}return curDoc -},searchOtherDocs:function(text,reverse){var scanRE=Firebug.Search.getTestingRegex(text); -function scanDoc(styleSheet){for(var i=0; -i"+value+" = "+propValue+"\n") -}if(previousValue){Firebug.CSSModule.removeProperty(rule,previousValue) -}Firebug.CSSModule.setProperty(rule,value,parsedValue.value,parsedValue.priority) -}}else{if(!value){Firebug.CSSModule.removeProperty(rule,previousValue) -}}}else{if(getAncestorByClass(target,"cssPropValue")){var propName=getChildByClass(row,"cssPropName")[textContent]; -var propValue=getChildByClass(row,"cssPropValue")[textContent]; -if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName+" = "+propValue+"\n") -}if(value&&value!="null"){var parsedValue=parsePriority(value); -Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority) -}else{if(previousValue&&previousValue!="null"){Firebug.CSSModule.removeProperty(rule,propName) -}}}}this.panel.markChange(this.panel.name=="stylesheet") -},advanceToNext:function(target,charCode){if(charCode==58&&hasClass(target,"cssPropName")){return true -}},getAutoCompleteRange:function(value,offset){if(hasClass(this.target,"cssPropName")){return{start:0,end:value.length-1} -}else{return parseCSSValue(value,offset) -}},getAutoCompleteList:function(preExpr,expr,postExpr){if(hasClass(this.target,"cssPropName")){return getCSSPropertyNames() -}else{var row=getAncestorByClass(this.target,"cssProp"); -var propName=getChildByClass(row,"cssPropName")[textContent]; -return getCSSKeywordsByProperty(propName) -}}}); -function CSSRuleEditor(doc){this.initializeInline(doc); -this.completeAsYouType=false -}CSSRuleEditor.uniquifier=0; -CSSRuleEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var emptyRule={selector:"",id:"",props:[],isSelectorEditable:true}; -if(insertWhere=="before"){return CSSStyleRuleTag.tag.insertBefore({rule:emptyRule},target) -}else{return CSSStyleRuleTag.tag.insertAfter({rule:emptyRule},target) -}},saveEdit:function(target,value,previousValue){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSRuleEditor.saveEdit: '"+value+"' '"+previousValue+"'",target) -}target.innerHTML=escapeForCss(value); -if(value===previousValue){return -}var row=getAncestorByClass(target,"cssRule"); -var styleSheet=this.panel.location; -styleSheet=styleSheet.editStyleSheet?styleSheet.editStyleSheet.sheet:styleSheet; -var cssRules=styleSheet.cssRules; -var rule=Firebug.getRepObject(target),oldRule=rule; -var ruleIndex=cssRules.length; -if(rule||Firebug.getRepObject(row.nextSibling)){var searchRule=rule||Firebug.getRepObject(row.nextSibling); -for(ruleIndex=0; -ruleIndexb.name?1:-1 -}) -}function getTopmostRuleLine(panelNode){for(var child=panelNode.firstChild; -child; -child=child.nextSibling){if(child.offsetTop+child.offsetHeight>panelNode.scrollTop){var rule=child.repObject; -if(rule){return{line:domUtils.getRuleLine(rule),offset:panelNode.scrollTop-child.offsetTop} -}}}return 0 -}function getStyleSheetCSS(sheet,context){if(sheet.ownerNode instanceof HTMLStyleElement){return sheet.ownerNode.innerHTML -}else{return context.sourceCache.load(sheet.href).join("") -}}function getStyleSheetOwnerNode(sheet){for(; -sheet&&!sheet.ownerNode; -sheet=sheet.parentStyleSheet){}return sheet.ownerNode -}function scrollSelectionIntoView(panel){var selCon=getSelectionController(panel); -selCon.scrollSelectionIntoView(nsISelectionController.SELECTION_NORMAL,nsISelectionController.SELECTION_FOCUS_REGION,true) -}function getSelectionController(panel){var browser=Firebug.chrome.getPanelBrowser(panel); -return browser.docShell.QueryInterface(nsIInterfaceRequestor).getInterface(nsISelectionDisplay).QueryInterface(nsISelectionController) -}Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel) -}}); -FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null -},selectSourceCode:function(index){this.getPanel().selectSourceCode(index) -}}); -Firebug.registerModule(Firebug.Script); -function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",selectIndex:0,sourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.onChangeSelect=bind(this.onChangeSelect,this); -var doc=Firebug.browser.document; -var scripts=doc.getElementsByTagName("script"); -var selectNode=this.selectNode=createElement("select"); -for(var i=0,script; -script=scripts[i]; -i++){if(Firebug.ignoreFirebugElements&&script.getAttribute("firebugIgnore")){continue -}var fileName=getFileName(script.src)||getFileName(doc.location.href); -var option=createElement("option",{value:i}); -option.appendChild(Firebug.chrome.document.createTextNode(fileName)); -selectNode.appendChild(option) -}this.toolButtonsNode.appendChild(selectNode) -},initialize:function(){this.selectSourceCode(this.selectIndex); -Firebug.Panel.initialize.apply(this,arguments); -addEvent(this.selectNode,"change",this.onChangeSelect) -},shutdown:function(){removeEvent(this.selectNode,"change",this.onChangeSelect); -Firebug.Panel.shutdown.apply(this,arguments) -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments); -var oldPanel=oldChrome.getPanel("Script"); -var index=oldPanel.selectIndex; -this.selectNode.selectedIndex=index; -this.selectIndex=index; -this.sourceIndex=-1 -},onChangeSelect:function(event){var select=this.selectNode; -this.selectIndex=select.selectedIndex; -var option=select.options[select.selectedIndex]; -if(!option){return -}var selectedSourceIndex=parseInt(option.value); -this.renderSourceCode(selectedSourceIndex) -},selectSourceCode:function(index){var select=this.selectNode; -select.selectedIndex=index; -var option=select.options[index]; -if(!option){return -}var selectedSourceIndex=parseInt(option.value); -this.renderSourceCode(selectedSourceIndex) -},renderSourceCode:function(index){if(this.sourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0; -src=isIE&&!isExternal?src+"\n":"\n"+src; -src=src.replace(/\n\r|\r\n/g,"\n"); -var match=src.match(/[\n]/g); -var lines=match?match.length:0; -html[hl++]='
0){path=reLastDir.exec(path)[1] -}path+=backDir[2] -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2) -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path); -path=domain[1]+src -}else{path+=src -}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null; -if(path&&m){return path+fileName -}}; -var getFileName=function getFileName(path){if(!path){return"" -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/); -return match&&match[0]||path -} -}}); -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element; -var insertSliceSize=18; -var insertInterval=40; -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1}; -if(Firebug.ignoreFirebugElements){ignoreVars[Firebug.Lite.Cache.ID]=1 -}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"}; -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"}))); -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch")))); -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"})); -var domTableClass=isIElt8?"domTable domTableIE":"domTable"; -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level) -},onClick:function(event){if(!isLeftClick(event)){return -}var target=event.target||event.srcElement; -var row=getAncestorByClass(target,"memberRow"); -var label=getAncestorByClass(target,"memberLabel"); -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode; -this.toggleRow(row) -}else{var object=Firebug.getRepObject(target); -if(typeof(object)=="function"){Firebug.chrome.select(object,"script"); -cancelEvent(event) -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel; -if(panel){var rowValue=panel.getRowPropertyValue(row); -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue) -}else{panel.editProperty(row) -}cancelEvent(event) -}}}}return false -},toggleRow:function(row){var level=parseInt(row.getAttribute("level")); -var toggles=row.parentNode.parentNode.toggles; -if(hasClass(row,"opened")){removeClass(row,"opened"); -if(toggles){var path=getPath(row); -for(var i=0; -i=priorScrollTop){panelNode.scrollTop=priorScrollTop -}},delay)); -delay+=insertInterval -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild) -}else{panelNode.appendChild(table) -}panelNode.scrollTop=priorScrollTop -},delay)) -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop -},delay)) -}this.timeouts=timeouts -},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode) -},findPathObject:function(object){var pathIndex=-1; -for(var i=0; -i1){for(var i=1; -i"); -r.push(i==0?"window":path[i]||"Object"); -r.push(""); -if(i>') -}}panel.statusBarNode.innerHTML=r.join("") -}; -var DOMMainPanel=Firebug.DOMPanel=function(){}; -Firebug.DOMPanel.DirTable=DirTablePlate; -DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target; -var element=getAncestorByClass(target,"fbHover"); -if(element){var pathIndex=element.getAttribute("pathIndex"); -if(pathIndex){this.select(this.getPathObject(pathIndex)) -}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild -}if(!target||!target.repObject){return -}this.pathToAppend=getPath(row); -var valueBox=row.lastChild.firstChild; -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); -this.pathToAppend.push(arrayIndex) -}this.select(target.repObject,true) -},onClick:function(event){var target=event.srcElement||event.target; -var repNode=Firebug.getRepNode(target); -if(repNode){var row=getAncestorByClass(target,"memberRow"); -if(row){this.selectRow(row,repNode); -cancelEvent(event) -}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); -this.onClick=bind(this.onClick,this); -this.onClickStatusBar=bind(this.onClickStatusBar,this); -this.panelNode.style.padding="0 1px" -},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",this.onClick); -this.ishow(); -addEvent(this.statusBarNode,"click",this.onClickStatusBar) -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) -}}); -Firebug.registerPanel(DOMMainPanel); -var getMembers=function getMembers(object,level){if(!level){level=0 -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[]; -try{var domMembers=getDOMMembers(object); -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject -}else{var insecureObject=object -}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level) -}for(var name in insecureObject){if(ignoreVars[name]==1){continue -}var val; -try{val=insecureObject[name] -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc) -}}var ordinal=parseInt(name); -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level) -}else{if(isFunction(val)){if(isClassFunction(val)&&!(name in domMembers)){addMember("userClass",userClasses,name,val,level) -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name]) -}else{addMember("userFunction",userFuncs,name,val,level) -}}}else{var prefix=""; -if(name in domMembers&&!(name in domConstantMap)){addMember("dom",domProps,(prefix+name),val,level,domMembers[name]) -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level) -}else{addMember("user",userProps,(prefix+name),val,level) -}}}}}}catch(exc){throw exc; -if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc) -}}function sortName(a,b){return a.name>b.name?1:-1 -}function sortOrder(a,b){return a.order>b.order?1:-1 -}var members=[]; -members.push.apply(members,ordinals); -Firebug.showUserProps=true; -Firebug.showUserFuncs=true; -Firebug.showDOMProps=true; -Firebug.showDOMFuncs=true; -Firebug.showDOMConstants=true; -if(Firebug.showUserProps){userProps.sort(sortName); -members.push.apply(members,userProps) -}if(Firebug.showUserFuncs){userClasses.sort(sortName); -members.push.apply(members,userClasses); -userFuncs.sort(sortName); -members.push.apply(members,userFuncs) -}if(Firebug.showDOMProps){domProps.sort(sortName); -members.push.apply(members,domProps) -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName); -members.push.apply(members,domFuncs) -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants) -}return members -}; -function expandMembers(members,toggles,offset,level){var expanded=0; -for(var i=offset; -ilevel){break -}if(toggles.hasOwnProperty(member.name)){member.open="opened"; -var newMembers=getMembers(member.value,level+1); -var args=[i+1,0]; -args.push.apply(args,newMembers); -members.splice.apply(members,args); -expanded+=newMembers.length; -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1) -}}return expanded -}function isClassFunction(fn){try{for(var name in fn.prototype){return true -}}catch(exc){}return false -}FBL.ErrorCopy=function(message){this.message=message -}; -var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value); -var tag=rep.shortTag?rep.shortTag:rep.tag; -var ErrorCopy=function(){}; -var valueType=typeof(value); -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength)); -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag}) -}; -var getWatchRowIndex=function getWatchRowIndex(row){var index=-1; -for(; -row&&hasClass(row,"watchRow"); -row=row.previousSibling){++index -}return index -}; -var getRowName=function getRowName(row){var node=row.firstChild; -return node.textContent?node.textContent:node.innerText -}; -var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject -}; -var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row); -if(parentRow){return getRowValue(parentRow) -}}; -var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1; -for(row=row.previousSibling; -row; -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row -}}}; -var getPath=function getPath(row){var name=getRowName(row); -var path=[name]; -var level=parseInt(row.getAttribute("level"))-1; -for(row=row.previousSibling; -row; -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row); -path.splice(0,0,name); ---level -}}return path -}; -Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null -}}); -Firebug.registerModule(Firebug.DOM); -var lastHighlightedObject; -function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild -}if(!target||!target.repObject){return -}this.pathToAppend=getPath(row); -var valueBox=row.lastChild.firstChild; -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target); -this.pathToAppend.push(arrayIndex) -}var object=target.repObject; -if(instanceOf(object,"Element")){Firebug.HTML.selectTreeNode(ElementCache(object)) -}else{Firebug.chrome.selectPanel("DOM"); -Firebug.chrome.getPanel("DOM").select(object,true) -}},onClick:function(event){var target=event.srcElement||event.target; -var repNode=Firebug.getRepNode(target); -if(repNode){var row=getAncestorByClass(target,"memberRow"); -if(row){this.selectRow(row,repNode); -cancelEvent(event) -}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments); -this.onClick=bind(this.onClick,this) -},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments); -addEvent(this.panelNode,"click",this.onClick); -var selection=ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId); -if(selection){this.select(selection,true) -}},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick); -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments) -},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles -}}); -Firebug.registerPanel(DOMSidePanel) -}}); -FBL.FBTrace={}; -(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1,DBG_CSS:1}; -this.module=null; -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[] -}for(var name in traceOptions){this[name]=traceOptions[name] -}}; -this.sysout=function(){return this.logFormatted(arguments,"") -}; -this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning") -}; -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning") -}; -this.flush=function(module){this.module=module; -var queue=this.messageQueue; -this.messageQueue=[]; -for(var i=0; -i"); -appendText(object,html); -html.push("") -}else{appendText(object,html) -}}return this.logRow(html,className) -}; -this.logRow=function(message,className){var panel=this.getPanel(); -if(panel&&panel.panelNode){this.writeMessage(message,className) -}else{this.messageQueue.push([message,className]) -}return this.LOG_COMMAND -}; -this.writeMessage=function(message,className){var container=this.getPanel().containerNode; -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight; -this.writeRow.call(this,message,className); -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight -}}; -this.appendRow=function(row){var container=this.getPanel().panelNode; -container.appendChild(row) -}; -this.writeRow=function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div"); -row.className="logRow"+(className?" logRow-"+className:""); -row.innerHTML=message.join(""); -this.appendRow(row) -}; -function appendText(object,html){html.push(escapeHTML(objectToString(object))) -}function getTimestamp(){var now=new Date(); -var ms=""+(now.getMilliseconds()/1000).toFixed(3); -ms=ms.substr(2); -return now.toLocaleTimeString()+"."+ms -}var HTMLtoEntity={"<":"<",">":">","&":"&","'":"'",'"':"""}; -function replaceChars(ch){return HTMLtoEntity[ch] -}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars) -}function objectToString(object){try{return object+"" -}catch(exc){return null -}}}).apply(FBL.FBTrace); -FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null -},clear:function(){this.getPanel().panelNode.innerHTML="" -}}); -Firebug.registerModule(Firebug.Trace); -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments); -this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear}) -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments); -this.clearButton.initialize() -},shutdown:function(){this.clearButton.shutdown(); -Firebug.Panel.shutdown.apply(this,arguments) -}}); -Firebug.registerPanel(TracePanel) -}}); -FBL.ns(function(){with(FBL){var modules=[]; -var panelTypes=[]; -var panelTypeMap={}; -var parentPanelMap={}; -var registerModule=Firebug.registerModule; -var registerPanel=Firebug.registerPanel; -append(Firebug,{extend:function(fn){if(Firebug.chrome&&Firebug.chrome.addPanel){var namespace=ns(fn); -fn.call(namespace,FBL) -}else{setTimeout(function(){Firebug.extend(fn) -},100) -}},registerModule:function(){registerModule.apply(Firebug,arguments); -modules.push.apply(modules,arguments); -dispatch(modules,"initialize",[]); -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule") -}},registerPanel:function(){registerPanel.apply(Firebug,arguments); -panelTypes.push.apply(panelTypes,arguments); -for(var i=0,panelType; -panelType=arguments[i]; -++i){if(panelType.prototype.name=="Dev"){continue -}panelTypeMap[panelType.prototype.name]=arguments[i]; -var parentPanelName=panelType.prototype.parentPanel; -if(parentPanelName){parentPanelMap[parentPanelName]=1 -}else{var panelName=panelType.prototype.name; -var chrome=Firebug.chrome; -chrome.addPanel(panelName); -var onTabClick=function onTabClick(){chrome.selectPanel(panelName); -return false -}; -chrome.addController([chrome.panelMap[panelName].tabNode,"mousedown",onTabClick]) -}}if(FBTrace.DBG_INITIALIZE){for(var i=0; -i .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(https://getfirebug.com/releases/lite/latest/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(https://getfirebug.com/releases/lite/latest/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(https://getfirebug.com/releases/lite/latest/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) no-repeat !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(https://getfirebug.com/releases/lite/latest/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(https://getfirebug.com/releases/lite/latest/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.png) !important;background-image:url(https://getfirebug.com/releases/lite/latest/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'
 
 
>>>
'} -}}); -FBL.initialize() -})(); \ No newline at end of file diff --git a/branches/firebug1.4/build/template .htaccess b/branches/firebug1.4/build/template .htaccess deleted file mode 100644 index 2b750b1a..00000000 --- a/branches/firebug1.4/build/template .htaccess +++ /dev/null @@ -1,41 +0,0 @@ - - RewriteEngine on - RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR] - RewriteCond %{HTTP:Accept-Encoding} !gzip - RewriteRule (.*)\.jgz$ $1 [L] - - -# -# Header unset ETag -# -#FileETag None - -# -# Header unset Last-Modified -# Header set Cache-Control "private, x-gzip-ok=''" -# - -# -# - -#ExpiresActive on -#ExpiresDefault "access plus 0 seconds" - -# -#ExpiresActive On -#ExpiresDefault A300 -#ExpiresByType image/x-icon A2592000 -#ExpiresByType application/x-javascript A3600 -#ExpiresByType text/css A3600 -#ExpiresByType image/gif A604800 -#ExpiresByType image/png A604800 -#ExpiresByType image/jpeg A604800 -#ExpiresByType text/plain A300 -#ExpiresByType application/x-shockwave-flash A604800 -#ExpiresByType video/x-flv A604800 -#ExpiresByType application/pdf A604800 -#ExpiresByType text/html A300 -# - -AddType "text/javascript;charset=UTF-8" .jgz -AddEncoding gzip .jgz \ No newline at end of file diff --git a/branches/firebug1.4/content/bookmarlet.txt b/branches/firebug1.4/content/bookmarlet.txt deleted file mode 100644 index 7d27be24..00000000 --- a/branches/firebug1.4/content/bookmarlet.txt +++ /dev/null @@ -1,231 +0,0 @@ -//************************************************************************************************* -// Bookmarlet versions - -// Bookmarlet version 4 - -// stable -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// debug -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-debug.js','releases/lite/debug/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// beta -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-beta.js','releases/lite/beta/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// 1.3 dev -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/','#startOpened'); - -// 1.4 dev -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.4/','#startOpened'); - - - -//************************************************************************************************* -// 1.3.0 - -// 1.3.0 -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// 1.3.0 X -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-debug.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#debug'); - - - -// version 2 -// version 1 - -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','build/firebug.jgz','skin/xp/sprite.png','http://firebug.local:8740/firebug1.3/','#startOpened,disableWhenFirebugActive=false'); - - -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); - - -javascript:var%20firebug=document.createElement('script');firebug.setAttribute('src','http://firebug.local:8740/firebug1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.firebug.version){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug); -http://firebug.local:8740/firebug1.3/ - - - -//************************************************************************************************* -// Bookmarlet FBL (sequencial) - -(function(F,B,L){ -L=F.createElement('script'); -L.id='FirebugLite'; -L.src=B; -F.getElementsByTagName('head')[0].appendChild(L); -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote'); - -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote'); - -//************************************************************************************************* - -(function(F,i,r,e,b,u,g,L,I,T,E){ -if(F.getElementById(b))return; - -E=F.documentElement.namespaceURI; -E=E?F[i+'NS'](E,'script'):F[i]('script'); - -E=F[i]('script'); -E[r]('id',b); -E[r]('src',I+g+T); -E[r](b,u); -(F[e]('head')[0]||F[e]('body')[0]).appendChild(E); - -E=new Image; -E[r]('src',I+L); -})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','firebug.jgz','skin/xp/sprite.png','http://getfirebug.com/releases/lite/beta/','#startOpened'); -// F i r e b u g L I T - - -//************************************************************************************************* -// Bookmarlet FBLite (parallel) - -(function(F,B,L,i,t,e){ -e=F[B]('script'); -e.id='FirebugLite'; -e.src=t+L; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=t+i; -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F B L i t - - -(function(F,B,L,i,t,e){ -e=F[B]('script'); -e.id='FirebugLite'; -e.src=L+t; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=L+i; -})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); -// F B L i t - - -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); - - -//--------------------------------------------------- - -(function(F,i,r,e,b,u,g){ -if(F.getElementById(r))return; - -g=F[i]('script'); -g.id=r; -g.src=u+e; -F.getElementsByTagName('head')[0].appendChild(g); - -g=F[i]('img'); -g.src=u+b; -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F i r e b u - -//--------------------------------------------------- - -(function(F,i,r,e,b,u,g){ -if(F.getElementById(r))return; - -g=F[i]('script'); -g.id=r; -g.src=u+e; - -r='getElementsByTagName'; -e='appendChild'; - -F[r]('head')[0][e](g); - -g=F[i]('img'); -g.src=u+b; - -g=F[i]('div'); -g.id='FBLI'; -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;'; -g.innerHTML='Loading...'; -F[r]('body')[0][e](g); - -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F i r e b u - -//--------------------------------------------------- - -// F,B,u,g,L,i,t,e -// F,i,r,e,b,u,g, -(function(F,B,L,i,t,e){ -if(F.getElementById('FBLS'))return; - -e=F[B]('div'); -e.id='FBLI'; -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;'; -e.innerHTML='Loading...'; -F.body.appendChild(e); - -e=F[B]('script'); -e.id='FBLS'; -e.src=t+L; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=t+i; -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F B L i t - - - -//************************************************************************************************* -// Bookmarlet FBL* (sequencial with loading indicator) - -(function(F,B,L){ -L=F.createElement('div'); -L.id='FBLI'; -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;'; -L.innerHTML='Loading ...'; -F.body.appendChild(L); - -L=F.createElement('script'); -L.id='FBLS'; -L.src=B; -F.getElementsByTagName('head')[0].appendChild(L); -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js'); - - -//************************************************************************************************* -// experimental bookmarlet - -(function(F,B,L,i,t,e){ - -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat'; -t=i?'absolute':'fixed'; - -e=F.createElement('div'); -e.id='FirebugLoadIndicator'; -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;'; -e.innerHTML='Loading Firebug Lite...'; -F.body.appendChild(e); - -e=F.createElement('script'); -e.src=L; -F.getElementsByTagName('head')[0].appendChild(e); - -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js'); - -//************************************************************************************************* - -// firebug lite 1.2 bookmarlet -javascript: - -var firebug=document.createElement('script'); -firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'); -document.body.appendChild(firebug); -(function(){ - if(window.firebug.version) - { - firebug.init(); - } - else - { - setTimeout(arguments.callee); - } -})(); -void(firebug); \ No newline at end of file diff --git a/branches/firebug1.4/content/changelog.txt b/branches/firebug1.4/content/changelog.txt deleted file mode 100644 index 8d35837e..00000000 --- a/branches/firebug1.4/content/changelog.txt +++ /dev/null @@ -1,1049 +0,0 @@ -################################################################################################### - 1.4.0 - 2011-09-23 - Revision: 11967 -################################################################################################### - -Overview: - Issue 4776: [Firebug lite] CSS Media Types - Issue 4777: [Firebug lite] Specificity of CSS Rules - Issue 3760: [Firebug lite] CommandLine throws syntax error if there's a comment in the expression - Issue 3326: [Firebug lite] CSS Rule Line Number - Issue 3262: [Firebug Lite] CSS specificity is not being calculated properly - Issue 4239: [Firebug Lite] Using ie7-js library crashes IE8 - Issue 4472: [Firebug Lite] Ajax headers deleted on IE - - Issue 4606: [Firebug Lite] Console is not working properly in recent versions of FF - Issue 4587: [Firebug Lite] Opera shows security warning when using the Inspect tool - Issue 4432: [Firebug Lite] HTML is mixed-up with functions - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - - cssAnalyzer code refactored - - cssParser (powered by sergeche's Simple CSS Parser https://github.com/sergeche/webkit-css) - -------------------------------------------------------------------------------- -XHR -------------------------------------------------------------------------------- - - XHR calls made by Firebug Lite internally are not visible in the Console log anymore - - added FBL.getNativeXHRObject() - -------------------------------------------------------------------------------- -Other -------------------------------------------------------------------------------- - - Store module (powered by marcuswestin's library https://github.com/marcuswestin/store.js) - - - console injection fallback now works as expected, creating a "firebug" object when there's - a "console" object already and overrideConsole option is set to false. - - - jsonViewer will not try to evaluate the contents of the requested file if the content-type - is set to "text/plain" - - - new getLocation() function - - better expression evaluation - -------------------------------------------------------------------------------- -FBTest -------------------------------------------------------------------------------- - - more robust Unit Test Framework - - updated QUnit to the latest version - - FBTest.click() now works in IE - - FBTest.getPanel() now returns also Side Panels - - updated Test Cases to use Sebastian's template - - Firebug Lite script is automatically inserted by the Test Runner, allowing you to easily - test the same file against different versions - - - Improvements in the Test Runner - - included total number of tests passed and failed, and total execution time - - included link to run the test page again - - included link to open the test page it in another tab - - included link to view the test page in fullscreen mode - - improved the progress output of the tests, including the title of that test (if any - is found in the document.title) - - - new Test Runner Toolbar: - - allows selecting different Test Lists - - allows selecting different builds given the Version/Channel/Mode - - - Properties added to FBTest - - config - - delayDuration - - waitInterval - - waitTimeout - - - Methods added to FBTest - - FBTest.triggerEvent() - - FBTest.getXHRObject() - - FBTest.loadScript() - - FBTest.installFirebug() - - FBTest.getFirebugConfig() - - FBTest.getFirebugLocation() - - FBTest.getTestListLocation() - - FBTest.loadTestList() - - FBTest.getURLParamaters() - - FBTest.delay() - - FBTest.wait() - - -################################################################################################### - 1.4.0b1 - 2011-08-18 - Revision: 11337 -################################################################################################### - -------------------------------------------------------------------------------- -Issues -------------------------------------------------------------------------------- - - Issue 4606: Firebug Lite: Console is not working properly in recent versions of FF - - Issue 4587: Firebug Lite: Opera shows security warning when using the Inspect tool - - Issue 4432: Firebug Lite: HTML is mixed-up with functions - -------------------------------------------------------------------------------- -Internal fixes -------------------------------------------------------------------------------- - - overrideConsole option now works as expected - - Fixed problem with console injection in recent versions of FF - - Fixed problem with resizing in-page chrome (iframe) in recent versions of FF - - Fixed visual glitch with Menus in high resolution monitors - - Fixed source line number height in high resolution monitors - - Fixed mini-chrome (lower-right icon) size glitch when the cache is empty - - Bookmarklet now works as expected when visiting getfirebug.com - -------------------------------------------------------------------------------- -Chrome extension -------------------------------------------------------------------------------- - - Improved activation failure messages in Chrome extension - -------------------------------------------------------------------------------- -Internal changes -------------------------------------------------------------------------------- - - internal directory organization and code refactoring to facilitate future - merging with Firebug code base (now code written for lite and the code - borrowed from Firebug are in different directories) - - -################################################################################################### - 1.3.2 - 2011-03-22 - Revision: 9760 -################################################################################################### - -Overview: - - Issue 3422: Firebug Lite breaks Google Instant Search - - Issue 3504: Firebug lite: jQuery.ajax call fails in IE - - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - - Issue 3554: Firebug Lite should use local images when loaded locally - - Issue 3166: Listen to F12 key in for Google Chrome when inactive - - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension - - infoTips for CSS properties such as color and image - -------------------------------------------------------------------------------- -Addition -------------------------------------------------------------------------------- - - infoTips for CSS properties such as color and image - -------------------------------------------------------------------------------- -Bugfixes -------------------------------------------------------------------------------- - - Issue 3422: Firebug Lite breaks Google Instant Search - - Issue 3504: Firebug lite: jQuery.ajax call fails in IE - - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - - Issue 3554: Firebug Lite should use local images when loaded locally - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Isolated most of Lite-specific code (not part/adaptation of Firebug's - original source) into a single directory (/content/firebug/lite/). - - Created a simple server-side proxy plugin to be used in conjunction with - Firebug Lite in order to overcome the cross-domain limitations of JavaScript - - Unifying Firebug Lite internal cache system (to be used in sourceCache). - As a bonus, the unified model allows Firebug Lite to adapt its cache when - new elements are inserted into the document, which means that now it will - be easier to use the Inspector in dynamically created content. - -------------------------------------------------------------------------------- -Chrome extension improvements -------------------------------------------------------------------------------- - - Issue 3166: Listen to F12 key in for Google Chrome when inactive - - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension - - Code refactored (chrome extension specific code isolated in a single file/module) - - Better message handling (two-way communication between the application/page, - content script and background page) - - Activation refactoring. The application is loaded how assynchronously during - activation and the activation can be started now by the BrowserAction/Icon, - the F12/ctrl+F12 key, or the context meny "Inspect with Firebug Lite" option. - It is possible also to activate-deactivate-reactivate without reloading - the page now. - - -################################################################################################### - 1.3.1 - 2010-09-07 - Revision: 7759 -################################################################################################### - -Overview: - - Issue 3272: Install Google Chrome extension results in a 404 error - - Issue 3384: Just two inadvertent globals across the Firebug Lite files - - Issue 3318: Firebug Lite dies if you hide the UI when the large command line is open - - Issue 3181: Firebug Lite Missing XHR methods/properties - - Issue 3262: CSS specificity is not being calculated properly. - - Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - - Normalizing syntax (missing semicolons) - - Added basic JsDoc comment markup - - -################################################################################################### - 1.3.1b2 - 2010-07-26 - Revision: 7413 -################################################################################################### - -Overview: - - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets - - Issue 3181: Missing XHR methods/properties - - Custom Net response viewers (XML and JSON viewers) - - Port of HTML viewer used in XHR representations - - Port of jsonViewer used in XHR representations - - Port of xmlViewer used in XHR representations - -------------------------------------------------------------------------------- -XHR -------------------------------------------------------------------------------- - - Compatibility with XMLHttpRequest 2 specification - - Issue 3181: Missing XHR methods/properties - - XHR representation is properly updated when the request is aborted - - Adjusting spy.mimeType according XHR response so we can detect when to - use custom response viewers (like HTML, XML and JSON viewers) - -------------------------------------------------------------------------------- -jsonViewer -------------------------------------------------------------------------------- - - Port of jsonViewer used in XHR representations - -------------------------------------------------------------------------------- -xmlViewer -------------------------------------------------------------------------------- - - Port of xmlViewer used in XHR representations - -------------------------------------------------------------------------------- -Net -------------------------------------------------------------------------------- - - Custom Net response viewers (XML and JSON viewers) - - Port of HTML viewer used in XHR representations - -------------------------------------------------------------------------------- -Spy -------------------------------------------------------------------------------- - - dispatching "initTabBody" event to Firebug.NetMonitor.NetInfoBody listeners - so custom response viewers can be properly initialized - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Included warnings when some external stylesheets could not be loaded - - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Avoid error when the element is not attached a document - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removing the temporary fix to RegExp problem Google Chrome 5 once it - is now fixed (and the temporary fix breaks the latest version). - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Firebug.Rep.getTitle now works for some special cases in IE - -------------------------------------------------------------------------------- -Command Line -------------------------------------------------------------------------------- - - Firebug.Console no longer uses Firebug.Console.LOG_COMMAND to identify - console calls as in the old Console panel version. - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added new experimental getDOMMember function to detect user members - (properties/functions) of several builtin objects such as window, - document, location, and instances of Element and other DOM objects - - -################################################################################################### - 1.3.1b1 - 2010-06-29 - Revision: 7198 -################################################################################################### - -Overview: - - Issue 2958: Unable to add CSS to an element that has no style rules - - Issue 3165: Styling problem with nested expandable groups - - Issue 3178: Bookmarklet does not support XML+XSLT documents - - Context menu support for Style and CSS Panels - - Using double click to insert new CSS rule (instead of mouse down) - - -------------------------------------------------------------------------------- -i18n -------------------------------------------------------------------------------- - - Unified all localization-related functions inside i18n.js - - Implemented $STRF (required for context menus) - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Improved GUI Menu component to support content menus - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Fixed timing issues when calling input.focus() and input.select() - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Panels now will stop editing when clicking on any non-editable element - -------------------------------------------------------------------------------- -UI -------------------------------------------------------------------------------- - - Issue 3165: Styling problem with nested expandable groups - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Issue 2958: Unable to add CSS to an element that has no style rules - - Using double click to insert new CSS rule (instead of mouse down) - - IE support for new features being used (context menu, double click, etc) - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Implemented panel.onContextMenu() - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Ported lib.hasProperties() - - Fixed IE mouse button detection for "dblclick" events - - Port of lib.parseJSONString() - - Making the development mode work online without requiring pre-configuration - - Enabled the bookmarlet update detection - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Added the old representations back to Firebug Lite source (Firebug.Reps) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed the broken console.dirxml() function - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed the broken dirxml() command line shortcut - -------------------------------------------------------------------------------- -Bookmarklet -------------------------------------------------------------------------------- - - Issue 3178: Bookmarklet does not support XML+XSLT documents - - -################################################################################################### - 1.3.1a2 - 2010-06-24 - Revision: 7125 -################################################################################################### - -Overview: - - Major performance improvements in the inline editor - - Major performance improvement in Chrome.keyCodeListen - - Issue 3118: Long lines in XHR response - - Issue 2981: Switching from CSS tab and back causes an error - - Fix bug in Google Chrome 5 which causes representation of "object links" - not being properly styled - - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - autocompletion cycling (with UP/DOWN keys) now works as expected for partially - typed words in IE6+, Safari/Google Chrome, and Opera - - - Major improvement in editor's autocomplete performance (was too slow on IE) - - No more problems with autocomplete when typing fast (timing issues) - - ignoring the inline editor spell checking in Safari/Google Chrome - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Fix bug in Google Chrome 5 which causes representation of "object links" - not being properly styled - -------------------------------------------------------------------------------- -UI -------------------------------------------------------------------------------- - - Issue 3118: Long lines in XHR response - - Added round corner support in the XHR tabs to Chrome and Opera - - Resetting user agent styles for tables which was creating a small glitch - (undesired blank space) between the toolbar and the panel content - -------------------------------------------------------------------------------- -Extensions -------------------------------------------------------------------------------- - - Testing Firediff extension support - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Issue 2981: Switching from CSS tab and back causes an error - - Destroying the inline editor when the panel is destroyed or hidden - - Properly dispatching some CSS change events to listeners - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Port of Firebug.Listener - - Firebug.Module now inherits from Firebug.Listener as in Firebug - - Experimental context menu support - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Improved window key code event listener. Only one "keydown" event will be - attached to the window, and the onKeyCodeListen() function will delegate - which listeners should be called according to the event.keyCode fired. - - - Fixing bug in the persistent mode (related to the new console panel) - - Improving the accuracy of the delay time calculated in the persist process. - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Fixed problem in Lib.dispatch which was preventing some listeners to be called. - - - -################################################################################################### - 1.3.0 - 2010-05-24 - Revision: 6859 -################################################################################################### - - - Refactored code - - Console e Css old modules deleted (not used anymore) - - Test modules deleted (moved to 1.4 branch) - - Comparison modules deleted (a copy of Domplate and DOM which was - used to compare the Firebug and Firebug Lite sources) - - - New distribution location and file name: - - https://getfirebug.com/firebug-lite.js (compressed) - - https://getfirebug.com/firebug-lite-debug.js (uncompressed, trace) - - https://getfirebug.com/firebug-lite-beta.js (beta channel) - - - Added "debug" URL option - - - Updated "classic" and "light" skins - - - Improvements in the debug mode (it exposes the FBL library, and forces - the UI element to be visible at HTML panel) - - - Fixed frameCounters variable leaking to global namespace - - - Firebug.extend() method added to support Firebug Lite extensions - - - Fixed the missing command line API dir() - - Fixed the missing command line api dirxml() - - Fixed the missing console.firebuglite property in the console object - - Fixed problem when loading an extension before the UI finish loading - - -################################################################################################### - 1.3.0b2 - 2010-05-06 - Revision: 6695 -################################################################################################### - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - The Console Panel now uses the same rendering engine (domplate) and object - representation (Reps) used in Firebug - - - Console now has clickable objects links, which will lead you to the related - panel, HTML if is an element, or the DOM panel if is an object - - - console.dir() now uses the same rich representation as in the DOM panel, with - items which can be collapsed, and links which can be clicked. - - - console.trace() now uses rich representation, with clickable links, and will - show the file name and line number for some browsers when found at the stacktrace - - - console.count() now works as in Firebug - - console.group() now can be collapsed, using the same representation as in Firebug - - console.groupCollapsed() added to the console object - - - new offline log messages handler (messages called before Firebug Lite UI finish - rendering), able to support clickable links and advanced representations - like the XHR watcher - - - ability to listen offline XHR messages - -------------------------------------------------------------------------------- -XHR -------------------------------------------------------------------------------- - - Fixed Issue 2977: XHR POST and URL parameters in the console - - Fixed Issue 2840: Firebug Lite 1.3b doesn't handle synchronous XHR requests - - Fixed Issue 2846: Firebug Lite 1.3b doesn't show XHR request made before the main - document is loaded - - - Fixed issue with the spinning XHR gif that wasn't being hidden sometimes in IE - - Fixed bug when there is no responseHeaders in IE - - Properly handling error when something goes wrong (like access restriction error) - -------------------------------------------------------------------------------- -Chrome extension -------------------------------------------------------------------------------- - - Fixed problem with restricted pages. the method used to load the bookmarlet - when no content script is available no longer works in recent versions of - Google Chrome, so now an alert box appears indicating that the extension - can't work on that page - - - Fixed problem when trying to activate Firebug Lite in a page which was open - before Firebug extension itself being enabled. Now it shows an alert box - asking the user to reload the page to complete the activation - - - Fixed problem in Google Chrome 5 which was caused by not using the proper - encoding (UTF-8) at the content script file - - - Fixed problem with popup. when the popup was opened, the bug icon was - becoming gray, falsely indicating that it was deactivated - - - Fixed problem with synchronization between Firebug Lite state and the - browser icon state - - - Fixed problem with UI images not loading in Mac and Linux (was related - to a bug in a third-party compression tool called Izarc) - - - Ignoring the FirebugChannel element in the HTML panel visualization - - - The core of the extension now uses the exact the same source as found - at getfirebug.com, and no longer needs to be built with a different - URL location for the images - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Fixed problem with cookies not available in XML+XSL documents - - Fixed bug at lib.findLocation() in IE, when using deep relative paths - - Basic extension system support - - Basic support for the next generation HTML panel (fully editable, cross-frame) - -------------------------------------------------------------------------------- -Net -------------------------------------------------------------------------------- - - Ported Firebug.NetMonitor.NetInfoPostData representation - - Fixed problem with the styling of XHR post tab in Google Chrome - - Fixed problem with the styling of XHR params tab in IE - -------------------------------------------------------------------------------- -ConsoleInjector -------------------------------------------------------------------------------- - - ported the consoleInjector module from Firebug - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Fixed problem with the Element's representation and attribute names - - Adjusted the StackFrame representation to be used with the new console.trace() - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Fixed styling problem with source code inside HTML tree (script tag). - The line numbers were positioned at the top of the panel. - -------------------------------------------------------------------------------- -Repository -------------------------------------------------------------------------------- - - Added issues test cases directory to the repository - - - -################################################################################################### - 1.3.0b1 - 2010-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2010-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.4/content/firebug-lite-dev.js b/branches/firebug1.4/content/firebug-lite-dev.js deleted file mode 100644 index 2bb26595..00000000 --- a/branches/firebug1.4/content/firebug-lite-dev.js +++ /dev/null @@ -1,832 +0,0 @@ -/* See license.txt for terms of usage */ - -(function(){ -// ************************************************************************************************ - -// TODO: plugin problem with Dev panel -// TODO: Dev panel doesn't work in persistent mode -// TODO: XHR listener breaks Firebug in Chrome when in persistent mode - -// Firebug Lite is already running in persistent mode so we just quit -// TODO: better detection -if (window.Firebug) - return; - -// ************************************************************************************************ - -var bookmarkletMode = true; - -var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/latest/skin/xp/"; // stable -//var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/beta/skin/xp/"; // beta -//var bookmarkletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/"; // developer -//var bookmarkletSkinURL = "chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/"; // chrome extension -//var bookmarkletSkinURL = "chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/"; // chrome beta extension - -// ************************************************************************************************ - -//window.FBL = {}; // force exposure in IE global namespace -window.FBDev = -{ - // ******************************************************************************************** - modules: - [ - // **************************************************************************************** - // Application Core - - "lite/lib.js", - "lite/i18n.js", - "lite/firebug.js", - - "lite/gui.js", - "lite/context.js", - "lite/chrome.js", - "lite/chromeSkin.js", - - // firebug1.4 experimental - //"lite/temp/chrome2.js", - //"firebug/tabContext.js", - //"firebug/tabWatcher.js", - - - // **************************************************************************************** - // Lite Core - - "lite/lite.js", - "lite/lite/cache.js", - "lite/lite/proxy.js", - "lite/lite/style.js", - "lite/lite/script.js", // experimental - "lite/lite/browser.js", // experimental - - "lite/store/json.js", - "lite/store/store.js", - - // **************************************************************************************** - // Firebug Classes - - "lite/selector.js", - "lite/inspector.js", - - "firebug/domplate.js", - "firebug/reps.js", - "firebug/editor.js", - - // **************************************************************************************** - // XHR Watcher - - "lite/xhr.js", - "firebug/net.js", - "firebug/spy.js", - - "firebug/jsonViewer.js", - "firebug/xmlViewer.js", - - // **************************************************************************************** - // Console / CommandLine core - - "firebug/console.js", - "firebug/consoleInjector.js", - - "lite/commandLine.js", - - // **************************************************************************************** - // Simple HTML Panel - - "lite/html.js", - - // **************************************************************************************** - // Advanced HTML Panel (experimental) - - //"firebug/insideOutBox.js", // HTML experimental - //"firebug/lib/htmlLib.js", // HTML experimental - //"lite/temp/html3.js", // HTML experimental - //"lite/temp/html2.js", // HTML experimental - - "firebug/infotip.js", - - // **************************************************************************************** - // CSS Panel - - "lite/css/cssParser.js", - "lite/css/cssAnalyzer.js", - "firebug/css.js", - - // **************************************************************************************** - // Simple Script Panel - - "lite/script.js", - - // **************************************************************************************** - // Script Panel - - //"firebug/sourceCache.js", // experimental - //"firebug/sourceFile.js", // experimental - //"firebug/sourceBox.js", // experimental - //"firebug/debugger.js", // experimental - - //"lite/eventDelegator.js", // experimental - - "firebug/dom.js", - - // **************************************************************************************** - // Trace Module/Panel - - "lite/trace.js", - "lite/tracePanel.js", - - // **************************************************************************************** - // Firediff - - /* - "firediff/content/firediff/versionCompat.js", - "firediff/content/firediff/diff.js", - "firediff/content/firediff/path.js", - "firediff/content/firediff/cssModel.js", - "firediff/content/firediff/events.js", - "firediff/content/firediff/domEvents.js", - "firediff/content/firediff/cssEvents.js", - "firediff/content/firediff/domplate.js", - "firediff/content/firediff/search.js", - "firediff/content/firediff/pages.js", - "firediff/content/firediff/diffModule.js", - "firediff/content/firediff/diffMonitor.js", - */ - - // **************************************************************************************** - // FireRainbow - - /* - "firerainbow/chrome/content/codemirror.js", - "firerainbow/chrome/content/firerainbow.js", - */ - - // **************************************************************************************** - // Example Plugin - - //"lite/example/helloWorld.js", - - // **************************************************************************************** - // Plugin Interface - - "lite/plugin.js", // must be the last module loaded - - // **************************************************************************************** - // Bootstrap - "lite/boot.js" - ], - // ******************************************************************************************** - - loadChromeApplication: function(chrome) - { - loadModules(chrome.document); return; - - FBDev.buildSource(function(source){ - var doc = chrome.document; - var script = doc.createElement("script"); - doc.getElementsByTagName("head")[0].appendChild(script); - script.text = source; - }); - }, - - panelBuild: function() { - var panel = this.getPanel(); - panel.updateOutput("Building Source..."); - - setTimeout(function(){ - FBDev.buildFullSource(function(source){ - panel.updateOutput(source); - }); - },0); - }, - - panelBuildSkin: function() - { - var panel = this.getPanel(); - panel.updateOutput("Building Source..."); - - setTimeout(function(){ - FBDev.buildSkin(function(source){ - panel.updateOutput(source); - }); - },0); - }, - - build: function() { - var out = document.createElement("textarea"); - - FBDev.buildFullSource(function(source){ - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - //out.appendChild(document.createTextNode(source)); - - out.value = source; - document.body.appendChild(out); - }); - }, - - buildFullSource: function(callback) - { - var useClosure = true; - var source = []; - - // remove the boot.js from the list of modules to be included - // because it will be generated bellow - var modules = FBDev.modules.slice(0,FBDev.modules.length-1); - var last = modules.length-1; - - if (useClosure) - source.push("(function(){\n\n"); - - var htmlUrl = skinURL + "firebug.html", - cssUrl = skinURL + "firebug.css", - html, - css, - injected; - - FBL.Ajax.request({ - url: htmlUrl, - onComplete:function(r) - { - html = FBDev.compressHTML(r); - } - }); - - FBL.Ajax.request({ - url: cssUrl, - onComplete:function(r) - { - css = FBDev.compressCSS(r); - injected = - "\n\nFBL.ns(function() { with (FBL) {\n" + - "// ************************************************************************************************\n\n" + - "FirebugChrome.Skin = \n" + - "{\n" + - " CSS: '" + css + "',\n" + - " HTML: '" + html + "'\n" + - "};\n\n" + - "// ************************************************************************************************\n" + - "}});\n\n" + - "// ************************************************************************************************\n" + - - // this is the bootstrap.js file - "FBL.initialize();\n" + - - "// ************************************************************************************************\n"; - } - }); - - for (var i=0, module; module=modules[i]; i++) - { - var moduleURL = sourceURL + module; - - if (module.indexOf("chromeSkin") != -1) continue; - - FBL.Ajax.request({ - url: moduleURL, - i: i, - onComplete: function(r,o) - { - source.push(r); - - if (o.i == last) - { - //alert("ok") - source.push(injected); - - if (useClosure) - source.push("\n})();"); - - callback(source.join("")); - } - else - source.push("\n\n"); - } - }); - } - }, - - buildSource: function(callback) - { - var useClosure = true; - var source = []; - var last = FBDev.modules.length-1; - - if (useClosure) - source.push("(function(){\n\n"); - - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module; - - FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o) - { - source.push(r); - - if (o.i == last) - { - if (useClosure) - source.push("\n})();"); - - callback(source.join("")); - } - else - source.push("\n\n"); - } - }); - } - }, - - buildSkin: function(callback) - { - var htmlUrl = skinURL + "firebug.html", - cssUrl = skinURL + "firebug.css", - html, - css, - injected; - - FBL.Ajax.request({ - url: htmlUrl, - onComplete:function(r) - { - html = FBDev.compressHTML(r); - } - }); - - FBL.Ajax.request({ - url: cssUrl, - onComplete:function(r) - { - css = FBDev.compressCSS(r); - injected = - "/* See license.txt for terms of usage */\n\n" + - "FBL.ns(function() { with (FBL) {\n" + - "// ************************************************************************************************\n\n" + - "FirebugChrome.Skin = \n" + - "{\n" + - " HTML: '" + html + "',\n" + - " CSS: '" + css + "'\n" + - "};\n\n" + - "// ************************************************************************************************\n" + - "}});"; - - callback(injected); - } - }); - }, - - compressSkinHTML: function() - { - var url = skinURL + "firebug.html"; - - var out = document.createElement("textarea"); - - FBL.Ajax.request({url: url, onComplete:function(r) - { - var result = FBDev.compressHTML(r); - - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - out.appendChild(document.createTextNode(result)); - document.body.appendChild(out); - } - }); - }, - - compressSkinCSS: function() - { - var url = skinURL + "firebug.css"; - - var out = document.createElement("textarea"); - - FBL.Ajax.request({url: url, onComplete:function(r) - { - var result = FBDev.compressCSS(r); - - out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;"; - out.appendChild(document.createTextNode(result)); - document.body.appendChild(out); - } - }); - - }, - - compressHTML: function(html) - { - var reHTMLComment = /()/g; - - return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, ""). - replace(reHTMLComment, ""). - replace(/\s\s/gm, ""). - replace(/\s+/gm, ">"). - replace(/>\s+/gm, ">"). - replace(/\s+\/>/gm, "/>"); - }, - - compressCSS: function(css) - { - var reComment = /(\/\/.*)\n/g; - var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - - return css.replace(reComment, ""). - replace(reMultiComment, ""). - replace(/url\(/gi, "url("+publishedURL). - replace(/\s\s/gm, ""). - replace(/\s+\{/gm, "{"). - replace(/\{\s+/gm, "{"). - replace(/\s+\}/gm, "}"). - replace(/\}\s+/gm, "}"). - replace(/\s+\:/gm, ":"). - replace(/\:\s+/gm, ":"). - replace(/,\s+/gm, ","); - }, - - getPanel: function() - { - return Firebug.chrome.getPanel("Dev"); - } -}; - -// ************************************************************************************************ - -function findLocation() -{ - var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/; - var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//; - var isGetFirebugSite; - - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = document; - - // Firebug Lite 1.3.0 bookmarklet identification - var script = doc.getElementById("FirebugLite"); - - var scriptSrc; - - // If the script was loaded via bookmarklet, we already have the script tag - if (script) - { - scriptSrc = script.src; - file = reFirebugFile.exec(scriptSrc); - - var version = script.getAttribute("FirebugLite"); - var number = version ? parseInt(version) : 0; - - if (!version || !number || number < bookmarkletVersion) - { - FBL.Env.bookmarkletOutdated = true; - } - } - // otherwise we must search for the correct script tag - else - { - for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++) - { - var file = null; - if ( si.nodeName.toLowerCase() == "script" ) - { - if (file = reFirebugFile.exec(si.getAttribute("firebugSrc"))) - scriptSrc = si.getAttribute("firebugSrc"); - - else if (file = reFirebugFile.exec(si.src)) - scriptSrc = si.src; - - else - continue; - - script = si; - break; - } - } - } - - // mark the script tag to be ignored by Firebug Lite - if (script) - script.firebugIgnore = true; - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(scriptSrc)) { - path = rePath.exec(scriptSrc)[1]; - - } - // relative path - else - { - var r = rePath.exec(scriptSrc); - var src = r ? r[1] : scriptSrc; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path.match(/([^\/]+)\/$/); - - if (path && m) - { - sourceURL = path; - baseURL = path.substr(0, path.length - m[1].length - 1); - skinURL = baseURL + "skin/xp/"; - fullURL = path + fileName; - } - else - { - throw "Firebug error: Library path not found"; - } -}; - -// ************************************************************************************************ - -function loadModules(doc) { - - findLocation(); - - publishedURL = bookmarkletMode ? bookmarkletSkinURL : skinURL; - - var sufix = isApplicationContext ? "#app" : ""; - - // FF4 will also load it asynchronously - var useDocWrite = true; - //var useDocWrite = isIE || isSafari; - - var moduleURL, script; - var scriptTags = []; - - /* - if (top != window) - { - var xhr = getXHRObject(); - var html = ""; - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module + sufix; - - xhr.open("get", moduleURL, false); - xhr.send(); - html = xhr.responseText; - - script = doc.createElement("script"); - script.text = html; - doc.getElementsByTagName("head")[0].appendChild(script); - } - return; - } - /**/ - - // new module loader - - var length = FBDev.modules.length; - var loadModule = function(index){ - if (index == length) return; - - var module = FBDev.modules[index]; - var moduleURL = sourceURL + module + sufix; - var script = doc.createElement("script"); - script.src = moduleURL; - - script.onload = function() { - if ( !script.onloadDone ) { - script.onloadDone = true; - loadModule(index+1); - } - }; - script.onreadystatechange = function() { - if ( ( "loaded" === script.readyState || "complete" === script.readyState ) && !script.onloadDone ) { - script.onloadDone = true; - loadModule(index+1); - } - }; - - doc.getElementsByTagName("head")[0].appendChild(script); - }; - loadModule(0); - /**/ - - /* - for (var i=0, module; module=FBDev.modules[i]; i++) - { - var moduleURL = sourceURL + module + sufix; - - if(useDocWrite) - { - scriptTags.push(" - - - ---------------------------------------------------------------------------------------------------- -XPATH ---------------------------------------------------------------------------------------------------- - -function getXPath(node, path) { - path = path || []; - if(node.parentNode) { - path = getXPath(node.parentNode, path); - } - - if(node.previousSibling) { - var count = 1; - var sibling = node.previousSibling - do { - if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;} - sibling = sibling.previousSibling; - } while(sibling); - if(count == 1) {count = null;} - } else if(node.nextSibling) { - var sibling = node.nextSibling; - do { - if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) { - var count = 1; - sibling = null; - } else { - var count = null; - sibling = sibling.previousSibling; - } - } while(sibling); - } - - if(node.nodeType == 1) { - path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : '')); - } - return path; -}; - - -// Getting result -document.evaluate("/html/body/div/ul/li[2]", document, null, XPathResult.ANY_TYPE, null ).iterateNext() - diff --git a/branches/firebug1.4/docs/beta/changelog.txt b/branches/firebug1.4/docs/beta/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.4/docs/beta/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.4/docs/beta/index.html b/branches/firebug1.4/docs/beta/index.html deleted file mode 100644 index 13ae5ed4..00000000 --- a/branches/firebug1.4/docs/beta/index.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - -Firebug Lite 1.3.0 beta - - - - - - - - - - - - - - - - - -
- - - -
- -
- -
-

Firebug Lite 1.3.0 beta release notes

-
- -
-

- - Spread the word: - Firebug Lite 1.3.0 beta released - - The next generation of Firebug Lite graduated to beta! This version - is pretty stable but we need your help to make sure it is stable enough - to make a wider release. -

-
- - - -
-

Overview

- -
-

- This version was conceived to put the Firebug Lite in a new level, - by allowing code reuse from Firebug's original source. A new core - was created to accomplish the following goals: -

-

- Performance - the core of Firebug Lite 1.3 was rewritten from scratch - taking the performance into account in the first place. -

-

- Modularity - the code is now more modular, making easier the process - of adding new features and UI components such as panels, buttons, menus etc. - The modularity also helps the development process. Once the modules can - be isolated it is easier to detect the cause of complicated problems like - memory leaks. -

-

- Shared code - the core was designed to make it possible - to port some code directly from the Firebug source, with as few as possible - modifications. As a result, some features and UI elements behave exactly - as in Firebug. -

-

- Compatibility - the new core is compatible with XHTML and XML+XSL - documents. Thanks to the new context-independent approach, it supports - now the experimental persistent popups feature (popups that "live" across - different page loads of the same domain), and will support cross-iframe - inspection in the next version. -

-
-
- - - -
-

What's New?

- -
-

- User Interface -

-
    -
  • Port of Firebug's Visual Object Representation (aka Reps)
  • -
  • Recreation of Firebug 1.3 User Interface with pixel precision
  • -
  • Menu options
  • -
  • Resizable sidePanel
  • -
  • Skinnable Interface
  • -
-

- CSS -

-
    -
  • CSS cascading view
  • -
  • CSS inheritance view
  • -
  • Live editing CSS rules and properties
  • -
  • Smart autocomplete (you'll get only the suggestions you need for each property)
  • -
  • Autocomplete as you type feature
  • -
  • Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys
  • -
-

- Inspector -

-
    -
  • Full BoxModel Highlight including margin, border, padding and content boxes
  • -
  • The BoxModel is highlighted when you move your mouse over a representation - of a HTML element, in any of the place of the User Interface
  • -
  • Elements are selected on-the-fly while using the Inspect tool
  • -
-

- Console -

-
    -
  • console.group() and console.groupEnd()
  • -
  • - console.trace() (thanks - dongryphon - for the contribution!) -
  • -
  • command line API functions $(), $$(), and dir()
  • -
  • command line shortcuts $0 and $1 for recent selected elements
  • -
  • autocomplete (tab, shift+tab)
  • -
  • can capture console messages before DOM document creation - (when installed at the HTML header)
  • -
-

- Core -

-
    -
  • XHR watcher (works better when you load the script in the HEAD of your document)
  • -
  • Port most of the Firebug Library (aka Lib, FBL)
  • -
  • Port the Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
  • -
  • Plugin system like Firebug
  • -
  • Context-independent (will allow cross-iframe debugging, and persistent popups)
  • -
  • Persistent popups
  • -
  • Synchronization across different windows (iframe, popup)
  • -
-

- And more... -

-
    -
  • - Fixed problem with Internet Explorer and inline styles representation (thanks - christophe.blin - for the contribution!) -
  • -
  • - For a complete list of changes, check the - changelog. -
  • -
- -

1.2. What's missing in Firebug Lite 1.3?

-

- Here are the features that are still missing, but should be available in the - final Firebug Lite 1.3 release: -

-
    -
  • Object links in console should be clickable
  • -
  • XHR watching need to work with synchronous requests
  • -
  • Some internal code need to be refactored (Chrome and Panels API)
  • -
  • Make sure the code is stable enough
  • -
- -

1.3. What's Not in Lite?

-

- Some features are not included in Firebug Lite 1.3, but due the new core that - supports code sharing from Firebug, are likely to be included in the - Firebug Lite 1.4 version: -

-
    -
  • Live editing for all panels
  • -
  • Layout Panel
  • -
  • Context menu options
  • -
  • Tooltips (to show colors and images)
  • -
  • Search feature
  • -
-

- Other features though are too dependent in browser internals and will not be - supported (at least in a near future*), such as: -

-
    -
  • Javascript debugger / Javascript profiler
  • -
  • Net panel / HTTP and XHR monitor
  • -
  • Access to restricted URI resources
  • -
  • Highlight HTML changes
  • -
-

- *Recent discussions about remote debugging - indicates that should be possible to support JavaScript debugging in browsers - like Google Chrome and Opera in a not so distant future, but the - differences in the protocols - may slow down this process (hey browser developers, what about adopting a standard?). - -

-
-
- - - -
-

Install

- -
-

a) Bookmarlet

-

- Bookmark the following links: -

- -

- **The trace enabled bookmarlet is intended to help identify error in Firebug Lite. - If you find a bug, run the trace enabled bookmarlet and look for something - strange in the logs. -

-

b) Live link

-

- You can also link directly to the hosted version at getfirebug.com. Copy the - following code, and paste it in the TOP of the HEAD of your document: -

- -

c) Local link (offline)

-

- If you need using Firebug Lite while offline, - download the code, - copy to a local destination, and link the firebug.jgz in the TOP - of the HEAD of your document. -

- -

d) Development mode:

-

- If you want to debug Firebug Lite, fix a bug, or add a new feature, you will want - to run the Firebug Lite in development mode. To do so, first - checkout the latest version - in our repository, and then insert a script at the TOP of the HEAD of your document. -

- -

- When in development mode, some things behave quite differently to make the - development process easier, such as: -

-
    -
  • All script files are loaded separately, without compression.
  • -
  • The internal library that Firebug Lite uses (aka FBL) is exposed to the - global namespace, allowing you to inspect its content. It is also exposed - the domplate and its classes, and the FBTrace object
  • -
  • The skin is loaded in a separated file, allowing you to rapidly change - the style and/or markup of the User Interface.
  • -
  • It will force to open Firebug Lite even when Firebug is active (which is - not the default behavior), so you can use Firebug to debug it.
  • -
  • A new panel "Dev" will be available with tools to compress the skin, - and the source code of the application in a single file.
  • -
-
-
- - - -
-

Options

- -
-

- The properties you can change include (with respective default values): -

-
    -
  • saveCookies - false
  • -
  • startOpened - false
  • -
  • startInNewWindow - false
  • -
  • showIconWhenHidden - true
  • -
  • overrideConsole - true
  • -
  • ignoreFirebugElements - true
  • -
  • disableWhenFirebugActive - true
  • -
  • enableTrace - false
  • -
  • enablePersistent - false
  • -
-

- You can change the options using any of the following methods - (in ascendant order of priority): -

-

a) debug="true"

-

- For backwards compatibility you can still use the debug="true" attribute - in the <html> tag to make Firebug Lite starts opened, like: -

-
<html debug="true">
- -

b) Script URL options

-

- You can also set the options using URL fragment, specially handy to tweak - options in your bookmarlet. -

-
-https://getfirebug.com/releases/lite/beta/firebug.jgz#enableTrace
-
-

- Options are separated by commas (,), and values are informed using - the equals to (=) symbol. If no value is informed, it is - assumed "true". -

-
-path/to/firebug.jgz#enableTrace,overrideConsole=false
-
-

is equivalent to:

-
-path/to/firebug.jgz#enableTrace=true,overrideConsole=false
-
-
-

c) Script JSON options

-

- It is possible to set options using a JSON object inside - the linked script: -

-
-<script type="text/javascript" 
-src="https://getfirebug.com/releases/lite/beta/firebug.jgz">
-{
-    overrideConsole: false,
-    startInNewWindow: true,
-    startOpened: true,
-    enableTrace: true
-}
-</script>
-
-

d) Cookies

-

- Finally, you can override the options using cookies, via User Interface, - by clicking in the Firebug icon in the upper-left corner. -

-
-
- - - -
-

What to test?

- -
-

- That's a lot of things to test, but we're particularly interested in - make sure the core of the application is working well before we move on - to the beta stage. Here are the list of the most important things to test: -

- -

5.1. Loading

-

- Firebug Lite should run fine no matter how it was loaded. -

-

- Bookmarlet - the current bookmarlet used in both Firebug Lite 1.2 and - 1.3 versions contains some problems and limitations (it won't load - for example in XHTML and/or XML+XSL documents). We're particularly - insterested in find such problems in the bookmarlet now we're in - beta stage, because updating bookmarlets is a boring task, and - should be done by the user individually, in each browser. -

-

- Local include - Firebug Lite should load fine when using relative - paths in the URL (when loaded locally). -

-

- Live include - Firebug Lite should load fine when loaded directly - from getfirebug.com. -

- -

5.2. Rendering

-

- Please report us if you see some weird behavior in the User Interface, such - as misplaced elements, elements not rendered, abnormal flickering, partial - rendered panels, or any other visual weirdness. -

- -

5.4. Document Types

-

- Firebug Lite should work in different types of documents such as - XHTML and/or XML+XSL documents. -

-
-
- - - -
-

Contributing

- -
-

- Your contribution is very important. Found a bug? Have a suggestion? Please - report us. -

-

- Found a fix for a particular issue? - Patches are welcome. - Also, if you are willing to help more deeply with coding, - join our team. -

-

- - Spread the word: - Firebug Lite 1.3.0 beta released - - Last, but not least, you can also helping us by spreading the word, inviting - more people to test this new version. Feel free to post about it in your - blog, social network, or use the retweet button on the left. -

-
-
- - -
- -
- - - -
- -
- - -
- - - \ No newline at end of file diff --git a/branches/firebug1.4/docs/beta/retweet.js b/branches/firebug1.4/docs/beta/retweet.js deleted file mode 100644 index dd8eb372..00000000 --- a/branches/firebug1.4/docs/beta/retweet.js +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Easy Retweet Button - * http://ejohn.org/blog/retweet/ - * by John Resig (ejohn.org) - * - * Licensed under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - */ - -(function(){ - -window.RetweetJS = { - // Your Bit.ly Username - bitly_user: "retweetjs", - - // Your Bit.ly API Key - // Found here: http://bit.ly/account - bitly_key: "R_6287c92ecaf9efc6f39e4f33bdbf80b1", - - // The text to replace the links with - link_text: (/windows/i.test( navigator.userAgent) ? "►" : "♻") + - " Retweet", - - // What # to show (Use "clicks" for # of clicks or "none" for nothing) - count_type: "clicks", - - // Tweet Prefix text - // "RT @jeresig " would result in: "RT @jeresig Link Title http://bit.ly/asdf" - prefix: "", - - // Style information - styling: "a.retweet { font: 12px Helvetica,Arial; color: #000; text-decoration: none; border: 0px; }" + - "a.retweet span { color: #FFF; background: #94CC3D; margin-left: 2px; border: 1px solid #43A52A; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" + - "a.vert { display: block; text-align: center; font-size: 16px; float: left; margin: 4px; }" + - "a.retweet strong.vert { display: block; margin-bottom: 4px; background: #F5F5F5; border: 1px solid #EEE; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" + - "a.retweet span.vert { display: block; font-size: 12px; margin-left: 0px; }" -}; - -//////////////// No Need to Configure Below Here //////////////// - -var loadCount = 1; - -// Asynchronously load the Bit.ly JavaScript API -// If it hasn't been loaded already -if ( typeof BitlyClient === "undefined" ) { - var head = document.getElementsByTagName("head")[0] || - document.documentElement; - var script = document.createElement("script"); - script.src = "http://bit.ly/javascript-api.js?version=latest&login=" + - RetweetJS.bitly_user + "&apiKey=" + RetweetJS.bitly_key; - script.charSet = "utf-8"; - head.appendChild( script ); - - var check = setInterval(function(){ - if ( typeof BitlyCB !== "undefined" ) { - clearInterval( check ); - head.removeChild( script ); - loaded(); - } - }, 10); - - loadCount = 0; -} - -if ( document.addEventListener ) { - document.addEventListener("DOMContentLoaded", loaded, false); - -} else if ( window.attachEvent ) { - window.attachEvent("onload", loaded); -} - -function loaded(){ - // Need to wait for doc ready and js ready - if ( ++loadCount < 2 ) { - return; - } - - var elems = [], urlElem = {}, hashURL = {}; - - BitlyCB.shortenResponse = function(data) { - for ( var url in data.results ) { - var hash = data.results[url].userHash; - hashURL[hash] = url; - - var elems = urlElem[ url ]; - - for ( var i = 0; i < elems.length; i++ ) { - elems[i].href += hash; - } - - if ( RetweetJS.count_type === "clicks" ) { - BitlyClient.stats(hash, 'BitlyCB.statsResponse'); - } - } - }; - - BitlyCB.statsResponse = function(data) { - var clicks = data.results.clicks, hash = data.results.userHash; - var url = hashURL[ hash ], elems = urlElem[ url ]; - - if ( clicks > 0 ) { - for ( var i = 0; i < elems.length; i++ ) { - var strong = document.createElement("strong"); - strong.appendChild( document.createTextNode( clicks + " " ) ); - elems[i].insertBefore(strong, elems[i].firstChild); - - if ( /(^|\s)vert(\s|$)/.test( elems[i].className ) ) { - elems[i].firstChild.className = elems[i].lastChild.className = "vert"; - } - } - } - - hashURL[ hash ] = urlElem[ url ] = null; - }; - - if ( document.getElementsByClassName ) { - elems = document.getElementsByClassName("retweet"); - } else { - var tmp = document.getElementsByTagName("a"); - for ( var i = 0; i < tmp.length; i++ ) { - if ( /(^|\s)retweet(\s|$)/.test( tmp[i].className ) ) { - elems.push( tmp[i] ); - } - } - } - - if ( elems.length && RetweetJS.styling ) { - var style = document.createElement("style"); - style.type = "text/css"; - - try { - style.appendChild( document.createTextNode( RetweetJS.styling ) ); - } catch (e) { - if ( style.styleSheet ) { - style.styleSheet.cssText = RetweetJS.styling; - } - } - - document.body.appendChild( style ); - } - - for ( var i = 0; i < elems.length; i++ ) { - var elem = elems[i]; - - if ( /(^|\s)self(\s|$)/.test( elem.className ) ) { - elem.href = window.location; - elem.title = document.title; - } - - var origText = elem.title || elem.textContent || elem.innerText, - href = elem.href; - - elem.innerHTML = "" + RetweetJS.link_text + ""; - elem.title = ""; - elem.href = "http://twitter.com/home?status=" + - encodeURIComponent(RetweetJS.prefix + origText + " http://bit.ly/"); - - if ( urlElem[ href ] ) { - urlElem[ href ].push( elem ); - } else { - urlElem[ href ] = [ elem ]; - BitlyClient.shorten(href, 'BitlyCB.shortenResponse'); - } - } - -} - -})(); diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img01.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img01.png deleted file mode 100644 index 5e0c9dde..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img01.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img02.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img02.png deleted file mode 100644 index d47d47f3..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img02.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img03.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img03.png deleted file mode 100644 index aeadf4e8..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img03.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img04.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img04.png deleted file mode 100644 index 641027d6..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img04.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img05.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img05.png deleted file mode 100644 index 1828933b..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img05.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img06.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img06.png deleted file mode 100644 index 07534179..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img06.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img07.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img07.png deleted file mode 100644 index 5a705cd4..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img07.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img08.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img08.png deleted file mode 100644 index 3b368ec3..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img08.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img09.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img09.png deleted file mode 100644 index 65f37559..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img09.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img10.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img10.png deleted file mode 100644 index e420131d..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img10.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img11.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img11.png deleted file mode 100644 index 8454dd7c..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img11.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img12.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img12.png deleted file mode 100644 index 1e818684..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img12.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img13.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img13.png deleted file mode 100644 index 850d7846..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-img13.png and /dev/null differ diff --git a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-small.png b/branches/firebug1.4/docs/beta/screenshots/firebug1.3-small.png deleted file mode 100644 index d66f197b..00000000 Binary files a/branches/firebug1.4/docs/beta/screenshots/firebug1.3-small.png and /dev/null differ diff --git a/branches/firebug1.4/docs/chrome/changelog.txt b/branches/firebug1.4/docs/chrome/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.4/docs/chrome/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.4/docs/chrome/index.html b/branches/firebug1.4/docs/chrome/index.html deleted file mode 100644 index adff58ba..00000000 --- a/branches/firebug1.4/docs/chrome/index.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -Firebug Lite for Google Chrome : Firebug - - - - - - - - - - - - - - - - - - - -
- - - -
-
- -
- -
- -
-

Firebug Lite for Google Chrome

-
- -
-

-

-
- - - -
-

Overview

- -
-

- Firebug Lite for Google Chrome is not a substitute for Firebug, - or Chrome Developer Tools. It is a tool to be used in conjunction - with these tools. Firebug Lite provides the rich visual representation - we are used to see in Firebug when it comes to HTML elements, - DOM elements, and Box Model shading. It provides also some cool - features like inspecting HTML elemements with your mouse, - and live editing CSS properties. -

-

- To get more information about - what's new - in Firebug Lite (which is compatible with all major browsers) please visit the - Firebug Lite page. -

- -

Benefits over Firebug Lite

-

- Firebug Lite for Google Chrome is basically the same you'll see - when using the bookmarklet, or including a script tag - in your page. There are, though, some benefits by using the extension - for Google Chrome, including: -

-
    -
  • Browser toolbar integration, providing a quick access to Firebug Lite
  • -
  • It works without internet connection
  • -
  • Faster loading and no FOUC (Flash of Unstyled Content), once resources - will be stored in the extension's directory on your machine
  • -
  • Firebug Lite will be loaded before all other scripts, allowing it - to capture all console calls and all XHR requests for that page
  • -
  • It is possible to activate the Firebug Lite for a particular domain, so next - time you visit a page in that domain it will be automatically active.
  • -
- -

Limitations

-

- The main limitations of the Firebug Lite version are: -

-
    -
  • Cannot read external resources
  • -
  • Won't work well on pages with frames
  • -
  • JavaScript debugger isn't available
  • -
  • Net Panel isn't available
  • -
-
-
- - -
-

Activation

- -
-

- The Firebug Lite activation scheme is very simple. When you first visit - a web page Firebug Lite icon will be gray, indicating that it is deactivated. - Clicking on it will activate Firebug Lite for all pages in that domain and the - icon will become orange. -

-

- Next time you visit a page in that domain, Firebug Lite will be automatically - active, and the UI will be open or minimized according to the last time - you used it. -

-

- To deactivate Firebug Lite for a particular domain, go to a page in that domain - and click on the "off" button. Since Firebug Lite uses localStorage to store - the activation info when you clear your browser's cache, Firebug Lite - will be deactivated for all pages. -

-
-
- - -
-

Contributing

- -
-

- Your contribution is very important. - If you have a specific issue, like a bug or feature request, please - post a detailed description - of the issue, and we will do our best to make it happen. - If you have a more general issue or have something to say, - let us know. - Found a fix for a particular issue? - Patches are welcome. - If you would like to help with some code or would like to develop - an extension for Firebug Lite, don't hesitate: - join our team. -

-
-
- - -
- -
- - - -
- -
- - -
- - - \ No newline at end of file diff --git a/branches/firebug1.4/docs/chrome/info.txt b/branches/firebug1.4/docs/chrome/info.txt deleted file mode 100644 index c7799536..00000000 --- a/branches/firebug1.4/docs/chrome/info.txt +++ /dev/null @@ -1,43 +0,0 @@ -Overview -------------- - -Firebug Lite is not a substitute for Firebug, or Chrome Developer Tools. It is a tool to be used in conjunction with these tools. Firebug Lite provides the rich visual representation we are used to see in Firebug when it comes to HTML elements, DOM elements, and Box Model shading. It provides also some cool features like inspecting HTML elemements with your mouse, and live editing CSS properties. - -For more detailed information, visit: -http://getfirebug.com/releases/lite/chrome/ - - -Benefits over Firebug Lite bookmarlet ------------------------------------------------------ - - * Browser toolbar integration - * Able to activate Firebug Lite for a particular domain - * Firebug Lite will be loaded before all other scripts, allowing it to capture all console calls, and all XHR requests for that page - * It is faster to load, because all code and images will be store in the extension's directory in your machine - * Will be able to read external resources in the next version - - -Limitations ----------------- - - * Cannot read external resources - * Won't work well on pages with frames - * JavaScript debugger isn't available - * Net Panel isn't available - - -Activation --------------- - -The Firebug Lite activation scheme is very simple. When you first visit a web page, Firebug icon will be gray, indicating that it is deactivated. Clicking on it will activate Firebug for all pages in that domain, and the icon will become orange. - -To deactivate for a particular domain, go to a page in that domain, and click on the "off" button. - - -Contributing ------------------ - -Your contribution is very important. Found a bug? Have a suggestion? Please -report us: http://code.google.com/p/fbug/issues/list - -If you would like to help with some code, or would like to develop an extension for Firebug Lite, don't hesitate, join our team: http://groups.google.com/group/firebug-working-group \ No newline at end of file diff --git a/branches/firebug1.4/docs/latest/changelog.txt b/branches/firebug1.4/docs/latest/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.4/docs/latest/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.4/docs/latest/index.html b/branches/firebug1.4/docs/latest/index.html deleted file mode 100644 index c7216f4a..00000000 --- a/branches/firebug1.4/docs/latest/index.html +++ /dev/null @@ -1,919 +0,0 @@ - - - - - -Firebug Lite : Firebug - - - - - - - - - - - - - - - - -
- - - -
- -
- -
-

Firebug Lite 1.3.0 release notes

-
- -
-

- The next generation of Firebug Lite is out! -

-
- - - -
-

Overview

- -
-

- This version was conceived to put the Firebug Lite in a new level, - by allowing code reuse from Firebug's original source. A new core - was created to accomplish the following goals: -

-

- Performance - the core of Firebug Lite 1.3 was rewritten from scratch - taking the performance into account in the first place. -

-

- Modularity - the code is now more modular, making it easier to add - new features and UI components such as panels, buttons, menus etc. - The modularity also helps the development process. Once the modules can - be isolated it is easier to detect the cause of complicated problems like - memory leaks. -

-

- Shared code - the core was designed to make it possible - to port some code directly from the Firebug source with as few as possible - modifications. As a result some features and UI elements behave exactly - as in Firebug. -

-

- Compatibility - the new core is compatible with XHTML and XML+XSLT - documents. Thanks to the new context-independent approach it supports - now the experimental persistent popups feature (popups that "live" across - different page loads of the same domain). -

-
-
- - - -
-

What's New?

- -
-

- User Interface -

-
    -
  • Port of Firebug's Visual Object Representation (aka Reps)
  • -
  • Recreation of Firebug 1.3 User Interface with pixel precision
  • -
  • Menu options
  • -
  • Resizable Side Panel
  • -
  • Skinnable Interface
  • -
-

- CSS -

-
    -
  • CSS cascading view
  • -
  • CSS inheritance view
  • -
  • Live editing CSS rules and properties
  • -
  • Autocomplete as you type feature, with smart suggestions (you'll get only the suggestions you need for each property)
  • -
  • Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys
  • -
-

- Inspector -

-
    -
  • Full BoxModel Highlight including margin, border, padding and content boxes
  • -
  • The BoxModel is highlighted when you move your mouse over a representation - of a HTML element, in any of the place of the User Interface
  • -
  • Elements are selected on-the-fly while using the Inspect tool
  • -
-

- Console -

-
    -
  • console.group(), console.groupCollapsed() and console.groupEnd()
  • -
  • console.trace() (now with file name and line numbers for some browsers)
  • -
  • Command line API functions $(), $$(), and dir()
  • -
  • Command line shortcuts $0 and $1 for recent selected elements
  • -
  • Autocomplete (tab, shift+tab)
  • -
  • can capture console messages before DOM document creation - (when installed at the HTML header)
  • -
-

- Core -

-
    -
  • XHR watcher (with Headers, Response, Post and Params tabs)
  • -
  • Port of Firebug Library (aka Lib, FBL)
  • -
  • Port of Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
  • -
  • Plugin system like Firebug
  • -
  • Context-independent (will allow cross-iframe debugging, and persistent popups)
  • -
  • Persistent popups
  • -
  • Synchronization across different windows (iframe, popup)
  • -
-

- And more... -

-
    -
  • - For a complete list of changes, check the - changelog. -
  • -
- -

1.3. What's Not in Lite?

-

- Some features are not included in Firebug Lite 1.3, but due the new core that - supports code sharing from Firebug, are likely to be included in the - Firebug Lite 1.4 version: -

-
    -
  • Live editing for all panels
  • -
  • Layout Side Panel
  • -
  • Context menu options
  • -
  • Tooltips (to show colors and images)
  • -
  • Search feature
  • -
-

- Other features though are too dependent in browser internals and will not be - supported (at least in a near future*), such as: -

-
    -
  • Javascript debugger / Javascript profiler
  • -
  • Net panel / HTTP and XHR monitor
  • -
  • Access to restricted URI resources
  • -
  • Highlight HTML changes
  • -
-

- *Discussions about remote debugging - indicates that should be possible to support JavaScript debugging in browsers - like Google Chrome and Opera in the future. - -

-
-
- - - -
-

Install

- -
-

Bookmarklet

-

- Bookmark the following links: -

-

Stable channel

- -

Beta channel

- - -

Live link

- -

- You can also link directly to the hosted version at getfirebug.com. Copy the - following code, and paste it in the TOP of the HEAD of your document: -

- -

Stable channel

-

- Firebug Lite: - -

-

- Firebug Lite debug: - -

- -

Beta channel

-

- Firebug Lite beta: - -

- -

Local link (offline)

-

- If you need using Firebug Lite while offline, - download the code, - copy it to a local destination, and link the firebug-lite.js in the TOP - of the HEAD of your document: -

-

- -

-

- If you want to debug the local installation, use the - firebug-lite-debug.js file instead: -

-

- -

- -
-
- - - -
-

Options

- -
-

- The properties you can change include (with respective default values): -

-
    -
  • saveCookies - false
  • -
  • startOpened - false
  • -
  • startInNewWindow - false
  • -
  • showIconWhenHidden - true
  • -
  • overrideConsole - true
  • -
  • ignoreFirebugElements - true
  • -
  • disableWhenFirebugActive - true
  • -
  • enableTrace - false
  • -
  • enablePersistent - false
  • -
-

- Here is the list of methods you can use to change the options, - in ascendant order of priority, that is, a particular method - will override the options of preceding methods: -

-

<html debug="true">

-

- For backwards compatibility you can still use the debug="true" attribute - in the <html> tag to make Firebug Lite starts opened, like: -

-
<html debug="true">
- -

Script URL options

-

- You can also set the options using URL fragments, specially handy to tweak - options in your bookmarklet. -

-
-https://getfirebug.com/firebug-lite.js#enableTrace
-
-

- Options are separated by commas (,), and values are informed using - the equals to (=) symbol. If no value is informed, - "true" is assumed. -

-
-path/to/firebug-lite.js#enableTrace,overrideConsole=false
-
-

is equivalent to:

-
-path/to/firebug-lite.js#enableTrace=true,overrideConsole=false
-
-

Script JSON options

-

- It is possible to set options using a JSON object inside - the linked script: -

-
-<script type="text/javascript" 
-src="https://getfirebug.com/firebug-lite.js">
-{
-    overrideConsole: false,
-    startInNewWindow: true,
-    startOpened: true,
-    enableTrace: true
-}
-</script>
-
-

Cookies

-

- Finally, you can override the options using cookies, via User - Interface, by clicking in the Firebug icon in the upper-left corner. -

-
-
- - - -
-

Extensions

- -
-

- If you are familiar with Firebug extension development, you will - see that developing an extension for Firebug Lite is very similar. - In a Firebug extension all code is encapsulated in a strange at - first glance but very clever way: -

-
-FBL.ns(function() { with (FBL) {
-
-// extension code
-
-}});
-
-

- In a Firebug Lite extension the code is encapsulated in a - similar way but using Firebug.extend instead, once - the FBL module (Firebug internal's library) is not - exposed to the global namespace: -

-
-Firebug.extend(function(FBL) { with (FBL) {
-
-// extension code
-
-}});
-
-

- If you are not familiar with Firebug extension development, - I suggest looking at Honza's series of tutorials, including - Firebug Tutorial - and Domplate Tutorial. -

-

- Here's a sample of how to create a new panel in Firebug Lite: - -

-
-Firebug.extend(function(FBL) { with (FBL) {
-// ***********************************************************************
-
-function PluginPanel(){};
-
-PluginPanel.prototype = extend(Firebug.Panel,
-{
-    name: "Plugin",
-    title: "Plugin",
-    
-    initialize: function(){
-        Firebug.Panel.initialize.apply(this, arguments);
-        
-        this.panelNode.innerHTML = "Hello World!";
-    }
-});
-
-Firebug.registerPanel(PluginPanel);
-
-// ***********************************************************************
-}});
-
- -
-
- - - -
-

Debug mode

- -
- -

- The debug mode helps detecting errors in Firebug Lite. When in - debug mode, Firebug Lite will behave as explained below: -

- -
    -
  • Firebug Lite starts opened.
  • -
  • The internal library used by Firebug Lite (aka FBL) - is exposed to the global namespace allowing the inspection of its content.
  • -
  • Firebug Lite will be forced to open even when Firebug is active - (which is not the default behavior), so you can use Firebug to debug it.
  • -
  • The "Trace Panel" is enabled (in which internal log messages of - Firebug Lite are printed).
  • -
- -

- The debug mode will be activated when you run the - Firebug Lite debug bookmarklet, and - when you the load the "firebug-lite-debug.js" or - "firebug-lite-dev.js" files. You can also activate - it manually by setting a special option "debug" - to "true", using the - Script URL or - Script JSON methods. -

- -
-
- - - -
-

Development mode

- -
- -

- If you want to debug Firebug Lite, fix a bug or add a new feature, you will want - to run Firebug Lite in development mode. To do so, first - checkout the latest version - in our repository, and then insert a script at the TOP of the HEAD of your document. -

- -

- When in development mode, some things behave quite differently to make the - development process easier, such as: -

-
    -
  • All script files are loaded separately, without compression.
  • -
  • The internal library used by Firebug Lite (aka FBL) is exposed to the - global namespace allowing you to inspect its content. It is also exposed - the domplate and its classes, and the FBTrace object
  • -
  • The skin is loaded in a separated file allowing you to rapidly change - the style and/or markup of the User Interface.
  • -
  • Firebug Lite will be forced to open even when Firebug is active - (which is not the default behavior), so you can use Firebug to debug it.
  • -
  • The "Trace Panel" is enabled (in which internal log messages of - Firebug Lite are printed).
  • -
  • A new "Dev Panel" will be available with tools to compress the skin - and the source code of the application in a single file.
  • -
- - -
-
- - -
-

Contributing

- -
-

- Your contribution is very important. Found a bug? Have a suggestion? Please - report us. -

-

- Found a fix for a particular issue? - Patches are welcome. - Also, if you are willing to help more deeply with coding, - join our team. -

-
-
- - -
- -
- - - -
- -
- - -
- - - \ No newline at end of file diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img01.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img01.png deleted file mode 100644 index 5e0c9dde..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img01.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img02.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img02.png deleted file mode 100644 index d47d47f3..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img02.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img03.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img03.png deleted file mode 100644 index aeadf4e8..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img03.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img04.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img04.png deleted file mode 100644 index 641027d6..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img04.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img05.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img05.png deleted file mode 100644 index 1828933b..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img05.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img06.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img06.png deleted file mode 100644 index 07534179..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img06.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img07.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img07.png deleted file mode 100644 index 5a705cd4..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img07.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img08.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img08.png deleted file mode 100644 index 3b368ec3..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img08.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img09.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img09.png deleted file mode 100644 index 65f37559..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img09.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img10.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img10.png deleted file mode 100644 index e420131d..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img10.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img11.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img11.png deleted file mode 100644 index 8454dd7c..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img11.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img12.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img12.png deleted file mode 100644 index 1e818684..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img12.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img13.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img13.png deleted file mode 100644 index 850d7846..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-img13.png and /dev/null differ diff --git a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-small.png b/branches/firebug1.4/docs/latest/screenshots/firebug1.3-small.png deleted file mode 100644 index d66f197b..00000000 Binary files a/branches/firebug1.4/docs/latest/screenshots/firebug1.3-small.png and /dev/null differ diff --git a/branches/firebug1.4/license.txt b/branches/firebug1.4/license.txt deleted file mode 100644 index ba43b751..00000000 --- a/branches/firebug1.4/license.txt +++ /dev/null @@ -1,30 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2007, Parakey Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Parakey Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Parakey Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/branches/firebug1.4/plugin/proxy/proxy.php b/branches/firebug1.4/plugin/proxy/proxy.php deleted file mode 100644 index 3bf3f92a..00000000 --- a/branches/firebug1.4/plugin/proxy/proxy.php +++ /dev/null @@ -1,258 +0,0 @@ - and -// are disabled by default, see for more information. -// callback - If specified, the response JSON will be wrapped in this named -// function call. This parameter and are disabled by -// default, see for more information. -// user_agent - This value will be sent to the remote URL request as the -// `User-Agent:` HTTP request header. If omitted, the browser user agent -// will be passed through. -// send_cookies - If send_cookies=1, all cookies will be forwarded through to -// the remote URL request. -// send_session - If send_session=1 and send_cookies=1, the SID cookie will be -// forwarded through to the remote URL request. -// full_headers - If a JSON request and full_headers=1, the JSON response will -// contain detailed header information. -// full_status - If a JSON request and full_status=1, the JSON response will -// contain detailed cURL status information, otherwise it will just contain -// the `http_code` property. -// -// Topic: POST Parameters -// -// All POST parameters are automatically passed through to the remote URL -// request. -// -// Topic: JSON requests -// -// This request will return the contents of the specified url in JSON format. -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/ -// -// Response: -// -// > { "contents": "...", "headers": {...}, "status": {...} } -// -// JSON object properties: -// -// contents - (String) The contents of the remote URL resource. -// headers - (Object) A hash of HTTP headers returned by the remote URL -// resource. -// status - (Object) A hash of status codes returned by cURL. -// -// Topic: JSONP requests -// -// This request will return the contents of the specified url in JSONP format -// (but only if $enable_jsonp is enabled in the PHP script). -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/&callback=foo -// -// Response: -// -// > foo({ "contents": "...", "headers": {...}, "status": {...} }) -// -// JSON object properties: -// -// contents - (String) The contents of the remote URL resource. -// headers - (Object) A hash of HTTP headers returned by the remote URL -// resource. -// status - (Object) A hash of status codes returned by cURL. -// -// Topic: Native requests -// -// This request will return the contents of the specified url in the format it -// was received in, including the same content-type and other headers (but only -// if $enable_native is enabled in the PHP script). -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/&mode=native -// -// Response: -// -// > ... -// -// Topic: Notes -// -// * Assumes magic_quotes_gpc = Off in php.ini -// -// Topic: Configuration Options -// -// These variables can be manually edited in the PHP file if necessary. -// -// $enable_jsonp - Only enable if you really need to. If you -// install this script on the same server as the page you're calling it -// from, plain JSON will work. Defaults to false. -// $enable_native - You can enable , but you should only do -// this if you also whitelist specific URLs using $valid_url_regex, to avoid -// possible XSS vulnerabilities. Defaults to false. -// $valid_url_regex - This regex is matched against the url parameter to -// ensure that it is valid. This setting only needs to be used if either -// $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which -// validates all URLs. -// -// ############################################################################ - -// Change these configuration options if needed, see above descriptions for info. -$enable_jsonp = false; -$enable_native = false; -$valid_url_regex = '/.*/'; - -// ############################################################################ - -$url = $_GET['url']; - -if ( !$url ) { - - // Passed url not specified. - $contents = 'ERROR: url not specified'; - $status = array( 'http_code' => 'ERROR' ); - -} else if ( !preg_match( $valid_url_regex, $url ) ) { - - // Passed url doesn't match $valid_url_regex. - $contents = 'ERROR: invalid url'; - $status = array( 'http_code' => 'ERROR' ); - -} else { - $ch = curl_init( $url ); - - if ( strtolower($_SERVER['REQUEST_METHOD']) == 'post' ) { - curl_setopt( $ch, CURLOPT_POST, true ); - curl_setopt( $ch, CURLOPT_POSTFIELDS, $_POST ); - } - - if ( $_GET['send_cookies'] ) { - $cookie = array(); - foreach ( $_COOKIE as $key => $value ) { - $cookie[] = $key . '=' . $value; - } - if ( $_GET['send_session'] ) { - $cookie[] = SID; - } - $cookie = implode( '; ', $cookie ); - - curl_setopt( $ch, CURLOPT_COOKIE, $cookie ); - } - - curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); - curl_setopt( $ch, CURLOPT_HEADER, true ); - curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); - - curl_setopt( $ch, CURLOPT_USERAGENT, $_GET['user_agent'] ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] ); - - list( $header, $contents ) = preg_split( '/([\r\n][\r\n])\\1/', curl_exec( $ch ), 2 ); - - $status = curl_getinfo( $ch ); - - curl_close( $ch ); -} - -// Split header text into an array. -$header_text = preg_split( '/[\r\n]+/', $header ); - -if ( $_GET['mode'] == 'native' ) { - if ( !$enable_native ) { - $contents = 'ERROR: invalid mode'; - $status = array( 'http_code' => 'ERROR' ); - } - - // Propagate headers to response. - foreach ( $header_text as $header ) { - if ( preg_match( '/^(?:Content-Type|Content-Language|Set-Cookie):/i', $header ) ) { - header( $header ); - } - } - - print $contents; - -} else { - - // $data will be serialized into JSON data. - $data = array(); - - // Propagate all HTTP headers into the JSON data object. - if ( $_GET['full_headers'] ) { - $data['headers'] = array(); - - foreach ( $header_text as $header ) { - preg_match( '/^(.+?):\s+(.*)$/', $header, $matches ); - if ( $matches ) { - $data['headers'][ $matches[1] ] = $matches[2]; - } - } - } - - // Propagate all cURL request / response info to the JSON data object. - if ( $_GET['full_status'] ) { - $data['status'] = $status; - } else { - $data['status'] = array(); - $data['status']['http_code'] = $status['http_code']; - } - - // Set the JSON data object contents, decoding it from JSON if possible. - $decoded_json = json_decode( $contents ); - $data['contents'] = $decoded_json ? $decoded_json : $contents; - - // Generate appropriate content-type header. - $is_xhr = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; - header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) ); - header('Access-Control-Allow-Origin: *'); - - // Get JSONP callback. - $jsonp_callback = $enable_jsonp && isset($_GET['callback']) ? $_GET['callback'] : null; - - // Generate JSON/JSONP string - $json = json_encode( $data ); - - print $jsonp_callback ? "$jsonp_callback($json)" : $json; - -} - -?> diff --git a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png b/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png deleted file mode 100644 index f80319b0..00000000 Binary files a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png b/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png deleted file mode 100644 index 86801243..00000000 Binary files a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/css/css.css b/branches/firebug1.4/sandbox/css/css.css deleted file mode 100644 index 448a20d1..00000000 --- a/branches/firebug1.4/sandbox/css/css.css +++ /dev/null @@ -1,4 +0,0 @@ -div #build { - position: absolute; - height: 200px; -} \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/css/css.imported.css b/branches/firebug1.4/sandbox/css/css.imported.css deleted file mode 100644 index d4eb7797..00000000 --- a/branches/firebug1.4/sandbox/css/css.imported.css +++ /dev/null @@ -1,3 +0,0 @@ -div#build { - color: red; -} \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/css/test.html b/branches/firebug1.4/sandbox/css/test.html deleted file mode 100644 index dbc3bfe6..00000000 --- a/branches/firebug1.4/sandbox/css/test.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - -
-

FirebugLite 1.3 Testing

-
-

Development Functions

- -
-
- Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
-
-

User interface files

- -
-
-

Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

-

Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

-

Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

-

Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

-

Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

-

In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

-

Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

-

Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

-

Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

-

A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

-
-
- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/domplate.html b/branches/firebug1.4/sandbox/domplate.html deleted file mode 100644 index 0b651050..00000000 --- a/branches/firebug1.4/sandbox/domplate.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - -
1
-
2
-
3
- - - diff --git a/branches/firebug1.4/sandbox/domplate/dom-attributes.html b/branches/firebug1.4/sandbox/domplate/dom-attributes.html deleted file mode 100644 index 907c535f..00000000 --- a/branches/firebug1.4/sandbox/domplate/dom-attributes.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/dom-event.html b/branches/firebug1.4/sandbox/domplate/dom-event.html deleted file mode 100644 index 9fb1a940..00000000 --- a/branches/firebug1.4/sandbox/domplate/dom-event.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/dom-properties.html b/branches/firebug1.4/sandbox/domplate/dom-properties.html deleted file mode 100644 index 59649351..00000000 --- a/branches/firebug1.4/sandbox/domplate/dom-properties.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/dynamic-class-attribute.html b/branches/firebug1.4/sandbox/domplate/dynamic-class-attribute.html deleted file mode 100644 index 76030fda..00000000 --- a/branches/firebug1.4/sandbox/domplate/dynamic-class-attribute.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/for-loop-custom-iterator.html b/branches/firebug1.4/sandbox/domplate/for-loop-custom-iterator.html deleted file mode 100644 index a1c28c9d..00000000 --- a/branches/firebug1.4/sandbox/domplate/for-loop-custom-iterator.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/for-loop.html b/branches/firebug1.4/sandbox/domplate/for-loop.html deleted file mode 100644 index 1ae3601a..00000000 --- a/branches/firebug1.4/sandbox/domplate/for-loop.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/hello-world.html b/branches/firebug1.4/sandbox/domplate/hello-world.html deleted file mode 100644 index b59fb8aa..00000000 --- a/branches/firebug1.4/sandbox/domplate/hello-world.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/input-data.html b/branches/firebug1.4/sandbox/domplate/input-data.html deleted file mode 100644 index 78b3d3c6..00000000 --- a/branches/firebug1.4/sandbox/domplate/input-data.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/pass-data.html b/branches/firebug1.4/sandbox/domplate/pass-data.html deleted file mode 100644 index ea7ed232..00000000 --- a/branches/firebug1.4/sandbox/domplate/pass-data.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/reuse-tag.html b/branches/firebug1.4/sandbox/domplate/reuse-tag.html deleted file mode 100644 index 4063c8e6..00000000 --- a/branches/firebug1.4/sandbox/domplate/reuse-tag.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/table-2d-array.html b/branches/firebug1.4/sandbox/domplate/table-2d-array.html deleted file mode 100644 index 093a480b..00000000 --- a/branches/firebug1.4/sandbox/domplate/table-2d-array.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/domplate/tree.html b/branches/firebug1.4/sandbox/domplate/tree.html deleted file mode 100644 index f32659f0..00000000 --- a/branches/firebug1.4/sandbox/domplate/tree.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - -

DomPlate Test

-
This is just a test file
-
- - - diff --git a/branches/firebug1.4/sandbox/head/xhtml/xhml-strict.html b/branches/firebug1.4/sandbox/head/xhtml/xhml-strict.html deleted file mode 100644 index ca52b133..00000000 --- a/branches/firebug1.4/sandbox/head/xhtml/xhml-strict.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -

Test HEAD

- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/head/xhtml/xhml-transitional.html b/branches/firebug1.4/sandbox/head/xhtml/xhml-transitional.html deleted file mode 100644 index 97a7b0ee..00000000 --- a/branches/firebug1.4/sandbox/head/xhtml/xhml-transitional.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -

Test HEAD

- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xml b/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xml deleted file mode 100644 index ceb78ee6..00000000 --- a/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xsl b/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xsl deleted file mode 100644 index cfb0c526..00000000 --- a/branches/firebug1.4/sandbox/head/xsl/xml-xsl.xsl +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -

Test HEAD

- - - -
- -
\ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xml b/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xml deleted file mode 100644 index c535c614..00000000 --- a/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xsl b/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xsl deleted file mode 100644 index c509b394..00000000 --- a/branches/firebug1.4/sandbox/issues/1145-xsl/firebug.xsl +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - -

Test console...

- - - - - - - -
- -
\ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.html b/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.html deleted file mode 100644 index 1f94be0b..00000000 --- a/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.txt b/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.4/sandbox/issues/2756-local-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.html b/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.html deleted file mode 100644 index bdc2ca28..00000000 --- a/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.txt b/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.4/sandbox/issues/2840-synchronous-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.html b/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.html deleted file mode 100644 index 67dce90b..00000000 --- a/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.txt b/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.4/sandbox/issues/2846-offline-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/2977-XHR-params/post.php b/branches/firebug1.4/sandbox/issues/2977-XHR-params/post.php deleted file mode 100644 index 1eceae12..00000000 --- a/branches/firebug1.4/sandbox/issues/2977-XHR-params/post.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.html b/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.html deleted file mode 100644 index ef0488d5..00000000 --- a/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.txt b/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.4/sandbox/issues/2977-XHR-params/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.html b/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.html deleted file mode 100644 index 1f94be0b..00000000 --- a/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.txt b/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.txt deleted file mode 100644 index d3ae6e72..00000000 --- a/branches/firebug1.4/sandbox/issues/3118-XHR-long-lines/test.txt +++ /dev/null @@ -1,6 +0,0 @@ -testing long line with no spaces... -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0CANYOUSEEME -... -testing long line... -This is a very long line Lorem ipsum dolor sit amet consectetuer ac enim interdum Nam Nullam. Vitae volutpat ut laoreet justo libero netus risus Nam feugiat et. Felis at Morbi tellus Mauris tincidunt Curabitur pharetra Vestibulum Pellentesque fringilla. Libero dolor lobortis Nullam est odio faucibus Curabitur et Nulla neque. Justo lacinia eget nec eros augue facilisis sem nulla. -... diff --git a/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xml b/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xml deleted file mode 100644 index c535c614..00000000 --- a/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl b/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl deleted file mode 100644 index fbb872c2..00000000 --- a/branches/firebug1.4/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - -

Test console...

- - - - -
- -
\ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3224-IE-external-CSS/test.html b/branches/firebug1.4/sandbox/issues/3224-IE-external-CSS/test.html deleted file mode 100644 index 28381b6b..00000000 --- a/branches/firebug1.4/sandbox/issues/3224-IE-external-CSS/test.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - -
-
- Req - Ser - Loa -
-
-
- - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/bookmarklet.html b/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/bookmarklet.html deleted file mode 100644 index c334956d..00000000 --- a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/bookmarklet.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -

GFC Bookmarklet Test

- -

Follow the instructions

-
    -
  1. Open this page using IE7 with Google Chrome Frame installed
  2. -
  3. Add the following bookmarklet: test
  4. -
  5. Run the bookmarklet
  6. -
  7. You should see an alert box with a message "OK"
  8. -
-

OBS: Please note that if you click the link it will work, - but if you load it via bookmarklet it won't.

- - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html b/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html deleted file mode 100644 index b8ecf5a9..00000000 --- a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -

GFC Firebug Lite Bookmarklet Test

- -

Follow the instructions

-
    -
  1. Open this page using IE7 with Google Chrome Frame installed
  2. -
  3. Visit: http://getfirebug.com/firebuglite#Stable
  4. -
  5. Add Firebug Lite bookmarklet
  6. -
  7. Run the bookmarklet
  8. -
  9. Firebug Lite should load
  10. -
- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-link.html b/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-link.html deleted file mode 100644 index ba331f3c..00000000 --- a/branches/firebug1.4/sandbox/issues/3482-google-chrome-frame/fblite-link.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -

GFC Test

-

Follow the instructions

-
    -
  1. Open this page using IE7 with Google Chrome Frame installed
  2. -
  3. You should see Firebug Lite opening without problems
  4. -
- - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html b/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html deleted file mode 100644 index a872c0e7..00000000 --- a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external.html b/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external.html deleted file mode 100644 index de1d6bfe..00000000 --- a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/external.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/jquery.js b/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/jquery.js deleted file mode 100644 index fff67764..00000000 --- a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/jquery.js +++ /dev/null @@ -1,6240 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function( window, undefined ) { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, - - // Is it a simple selector - isSimple = /^.[^:#\[\.,]*$/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // Has the ready events already been bound? - readyBound = false, - - // The functions to execute on DOM ready - readyList = [], - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwnProperty = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - indexOf = Array.prototype.indexOf; - -jQuery.fn = jQuery.prototype = { - init: function( selector, context ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context ) { - this.context = document; - this[0] = document.body; - this.selector = "body"; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - if ( elem ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $("TAG") - } else if ( !context && /^\w+$/.test( selector ) ) { - this.selector = selector; - this.context = document; - selector = document.getElementsByTagName( selector ); - return jQuery.merge( this, selector ); - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return jQuery( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.4.2", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = jQuery(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // If the DOM is already ready - if ( jQuery.isReady ) { - // Execute the function immediately - fn.call( document, jQuery ); - - // Otherwise, remember the function for later - } else if ( readyList ) { - // Add the function to the wait list - readyList.push( fn ); - } - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || jQuery(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging object literal values or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) { - var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src - : jQuery.isArray(copy) ? [] : {}; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - window.$ = _$; - - if ( deep ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // Handle when the DOM is ready - ready: function() { - // Make sure that the DOM is not already loaded - if ( !jQuery.isReady ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 13 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If there are functions bound, to execute - if ( readyList ) { - // Execute all of them - var fn, i = 0; - while ( (fn = readyList[ i++ ]) ) { - fn.call( document, jQuery ); - } - - // Reset the list of functions - readyList = null; - } - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyBound ) { - return; - } - - readyBound = true; - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - return jQuery.ready(); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", DOMContentLoaded); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return toString.call(obj) === "[object Function]"; - }, - - isArray: function( obj ) { - return toString.call(obj) === "[object Array]"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor - && !hasOwnProperty.call(obj, "constructor") - && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwnProperty.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") - .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { - - // Try to use the native JSON parser first - return window.JSON && window.JSON.parse ? - window.JSON.parse( data ) : - (new Function("return " + data))(); - - } else { - jQuery.error( "Invalid JSON: " + data ); - } - }, - - noop: function() {}, - - // Evalulates a script in a global context - globalEval: function( data ) { - if ( data && rnotwhite.test(data) ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - - if ( jQuery.support.scriptEval ) { - script.appendChild( document.createTextNode( data ) ); - } else { - script.text = data; - } - - // Use insertBefore instead of appendChild to circumvent an IE6 bug. - // This arises when a base node is used (#2709). - head.insertBefore( script, head.firstChild ); - head.removeChild( script ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction(object); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( var value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} - } - } - - return object; - }, - - trim: function( text ) { - return (text || "").replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = []; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - if ( !inv !== !callback( elems[ i ], i ) ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var ret = [], value; - - // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, length = elems.length; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - proxy: function( fn, proxy, thisObject ) { - if ( arguments.length === 2 ) { - if ( typeof proxy === "string" ) { - thisObject = fn; - fn = thisObject[ proxy ]; - proxy = undefined; - - } else if ( proxy && !jQuery.isFunction( proxy ) ) { - thisObject = proxy; - proxy = undefined; - } - } - - if ( !proxy && fn ) { - proxy = function() { - return fn.apply( thisObject || this, arguments ); - }; - } - - // Set the guid of unique handler to the same of original handler, so it can be removed - if ( fn ) { - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - } - - // So proxy can be declared as an argument - return proxy; - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) || - /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) || - /(msie) ([\w.]+)/.exec( ua ) || - !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - browser: {} -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -if ( indexOf ) { - jQuery.inArray = function( elem, array ) { - return indexOf.call( array, elem ); - }; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch( error ) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -function evalScript( i, elem ) { - if ( elem.src ) { - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - } - - if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); - } -} - -// Mutifunctional method to get and set values to a collection -// The value/s can be optionally by executed if its a function -function access( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; -} - -function now() { - return (new Date).getTime(); -} -(function() { - - jQuery.support = {}; - - var root = document.documentElement, - script = document.createElement("script"), - div = document.createElement("div"), - id = "script" + now(); - - div.style.display = "none"; - div.innerHTML = "
a"; - - var all = div.getElementsByTagName("*"), - a = div.getElementsByTagName("a")[0]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return; - } - - jQuery.support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText insted) - style: /red/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: div.getElementsByTagName("input")[0].value === "on", - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected, - - parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null, - - // Will be defined later - deleteExpando: true, - checkClone: false, - scriptEval: false, - noCloneEvent: true, - boxModel: null - }; - - script.type = "text/javascript"; - try { - script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); - } catch(e) {} - - root.insertBefore( script, root.firstChild ); - - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) - if ( window[ id ] ) { - jQuery.support.scriptEval = true; - delete window[ id ]; - } - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete script.test; - - } catch(e) { - jQuery.support.deleteExpando = false; - } - - root.removeChild( script ); - - if ( div.attachEvent && div.fireEvent ) { - div.attachEvent("onclick", function click() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - jQuery.support.noCloneEvent = false; - div.detachEvent("onclick", click); - }); - div.cloneNode(true).fireEvent("onclick"); - } - - div = document.createElement("div"); - div.innerHTML = ""; - - var fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; - - // Figure out if the W3C box model works as expected - // document.body must exist before we can do this - jQuery(function() { - var div = document.createElement("div"); - div.style.width = div.style.paddingLeft = "1px"; - - document.body.appendChild( div ); - jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; - document.body.removeChild( div ).style.display = 'none'; - - div = null; - }); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - var eventSupported = function( eventName ) { - var el = document.createElement("div"); - eventName = "on" + eventName; - - var isSupported = (eventName in el); - if ( !isSupported ) { - el.setAttribute(eventName, "return;"); - isSupported = typeof el[eventName] === "function"; - } - el = null; - - return isSupported; - }; - - jQuery.support.submitBubbles = eventSupported("submit"); - jQuery.support.changeBubbles = eventSupported("change"); - - // release memory in IE - root = script = div = all = a = null; -})(); - -jQuery.props = { - "for": "htmlFor", - "class": "className", - readonly: "readOnly", - maxlength: "maxLength", - cellspacing: "cellSpacing", - rowspan: "rowSpan", - colspan: "colSpan", - tabindex: "tabIndex", - usemap: "useMap", - frameborder: "frameBorder" -}; -var expando = "jQuery" + now(), uuid = 0, windowData = {}; - -jQuery.extend({ - cache: {}, - - expando:expando, - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - "object": true, - "applet": true - }, - - data: function( elem, name, data ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache; - - if ( !id && typeof name === "string" && data === undefined ) { - return null; - } - - // Compute a unique ID for the element - if ( !id ) { - id = ++uuid; - } - - // Avoid generating a new cache unless none exists and we - // want to manipulate it. - if ( typeof name === "object" ) { - elem[ expando ] = id; - thisCache = cache[ id ] = jQuery.extend(true, {}, name); - - } else if ( !cache[ id ] ) { - elem[ expando ] = id; - cache[ id ] = {}; - } - - thisCache = cache[ id ]; - - // Prevent overriding the named cache with undefined values - if ( data !== undefined ) { - thisCache[ name ] = data; - } - - return typeof name === "string" ? thisCache[ name ] : thisCache; - }, - - removeData: function( elem, name ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ]; - - // If we want to remove a specific section of the element's data - if ( name ) { - if ( thisCache ) { - // Remove the section of cache data - delete thisCache[ name ]; - - // If we've removed all the data, remove the element's cache - if ( jQuery.isEmptyObject(thisCache) ) { - jQuery.removeData( elem ); - } - } - - // Otherwise, we want to remove all of the element's data - } else { - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } - - // Completely remove the data cache - delete cache[ id ]; - } - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - if ( typeof key === "undefined" && this.length ) { - return jQuery.data( this[0] ); - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - } - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - } else { - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() { - jQuery.data( this, key, value ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); -jQuery.extend({ - queue: function( elem, type, data ) { - if ( !elem ) { - return; - } - - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { - return q || []; - } - - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data) ); - - } else { - q.push( data ); - } - - return q; - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), fn = queue.shift(); - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function( i, elem ) { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - } -}); -var rclass = /[\n\t]/g, - rspace = /\s+/, - rreturn = /\r/g, - rspecialurl = /href|src|style/, - rtype = /(button|input)/i, - rfocusable = /(button|input|object|select|textarea)/i, - rclickable = /^(a|area)$/i, - rradiocheck = /radio|checkbox/; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name, fn ) { - return this.each(function(){ - jQuery.attr( this, name, "" ); - if ( this.nodeType === 1 ) { - this.removeAttribute( name ); - } - }); - }, - - addClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className ) { - elem.className = value; - - } else { - var className = " " + elem.className + " ", setClass = elem.className; - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split(rspace); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, i = 0, self = jQuery(this), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery.data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - if ( value === undefined ) { - var elem = this[0]; - - if ( elem ) { - if ( jQuery.nodeName( elem, "option" ) ) { - return (elem.attributes.value || {}).specified ? elem.value : elem.text; - } - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - if ( option.selected ) { - // Get the specifc value for the option - value = jQuery(option).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - } - - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - } - - - // Everything else, we just grab the value - return (elem.value || "").replace(rreturn, ""); - - } - - return undefined; - } - - var isFunction = jQuery.isFunction(value); - - return this.each(function(i) { - var self = jQuery(this), val = value; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call(this, i, self.val()); - } - - // Typecast each time if the value is a Function and the appended - // value is therefore different each time. - if ( typeof val === "number" ) { - val += ""; - } - - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { - this.checked = jQuery.inArray( self.val(), val ) >= 0; - - } else if ( jQuery.nodeName( this, "select" ) ) { - var values = jQuery.makeArray(val); - - jQuery( "option", this ).each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - this.selectedIndex = -1; - } - - } else { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attr: function( elem, name, value, pass ) { - // don't set attributes on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery(elem)[name](value); - } - - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), - // Whether we are setting (or getting) - set = value !== undefined; - - // Try to normalize/fix the name - name = notxml && jQuery.props[ name ] || name; - - // Only do all the following if this is a node (faster for style) - if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); - - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - - // If applicable, access the attribute via the DOM 0 way - if ( name in elem && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } - - elem[ name ] = value; - } - - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; - } - - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); - - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - - return elem[ name ]; - } - - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; - } - - return elem.style.cssText; - } - - if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 - elem.setAttribute( name, "" + value ); - } - - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; - } - - // elem is actually elem.style ... set the style - // Using attr for specific style information is now deprecated. Use style instead. - return jQuery.style( elem, name, value ); - } -}); -var rnamespaces = /\.(.*)$/, - fcleanup = function( nm ) { - return nm.replace(/[^\w\s\.\|`]/g, function( ch ) { - return "\\" + ch; - }); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) { - elem = window; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery.data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events = elemData.events || {}, - eventHandle = elemData.handle, eventHandle; - - if ( !eventHandle ) { - elemData.handle = eventHandle = function() { - // Handle the second event of a trigger and when - // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && !jQuery.event.triggered ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - handleObj.guid = handler.guid; - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for global triggering - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)") - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( var j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( var j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem ); - } - } - }, - - // bubbling is internal - trigger: function( event, data, elem /*, bubbling */ ) { - // Event object or event type - var type = event.type || event, - bubbling = arguments[3]; - - if ( !bubbling ) { - event = typeof event === "object" ? - // jQuery.Event object - event[expando] ? event : - // Object literal - jQuery.extend( jQuery.Event(type), event ) : - // Just the event type (string) - jQuery.Event(type); - - if ( type.indexOf("!") >= 0 ) { - event.type = type = type.slice(0, -1); - event.exclusive = true; - } - - // Handle a global trigger - if ( !elem ) { - // Don't bubble custom events when global (to avoid too much overhead) - event.stopPropagation(); - - // Only trigger if we've ever bound an event for it - if ( jQuery.event.global[ type ] ) { - jQuery.each( jQuery.cache, function() { - if ( this.events && this.events[type] ) { - jQuery.event.trigger( event, data, this.handle.elem ); - } - }); - } - } - - // Handle triggering a single element - - // don't do events on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - // Clean up in case it is reused - event.result = undefined; - event.target = elem; - - // Clone the incoming data, if any - data = jQuery.makeArray( data ); - data.unshift( event ); - } - - event.currentTarget = elem; - - // Trigger the event, it is assumed that "handle" is a function - var handle = jQuery.data( elem, "handle" ); - if ( handle ) { - handle.apply( elem, data ); - } - - var parent = elem.parentNode || elem.ownerDocument; - - // Trigger an inline bound script - try { - if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { - if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) { - event.result = false; - } - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( !event.isPropagationStopped() && parent ) { - jQuery.event.trigger( event, data, parent, true ); - - } else if ( !event.isDefaultPrevented() ) { - var target = event.target, old, - isClick = jQuery.nodeName(target, "a") && type === "click", - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem, event ) === false) && - !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { - - try { - if ( target[ type ] ) { - // Make sure that we don't accidentally re-trigger the onFOO events - old = target[ "on" + type ]; - - if ( old ) { - target[ "on" + type ] = null; - } - - jQuery.event.triggered = true; - target[ type ](); - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( old ) { - target[ "on" + type ] = old; - } - - jQuery.event.triggered = false; - } - } - }, - - handle: function( event ) { - var all, handlers, namespaces, namespace, events; - - event = arguments[0] = jQuery.event.fix( event || window.event ); - event.currentTarget = this; - - // Namespaced event handlers - all = event.type.indexOf(".") < 0 && !event.exclusive; - - if ( !all ) { - namespaces = event.type.split("."); - event.type = namespaces.shift(); - namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - var events = jQuery.data(this, "events"), handlers = events[ event.type ]; - - if ( events && handlers ) { - // Clone the handlers to prevent manipulation - handlers = handlers.slice(0); - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Filter the functions by class - if ( all || namespace.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, arguments ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - } - - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var doc = document.documentElement, body = document.body; - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) { - event.which = event.charCode || event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); - }, - - remove: function( handleObj ) { - var remove = true, - type = handleObj.origType.replace(rnamespaces, ""); - - jQuery.each( jQuery.data(this, "events").live || [], function() { - if ( type === this.origType.replace(rnamespaces, "") ) { - remove = false; - return false; - } - }); - - if ( remove ) { - jQuery.event.remove( this, handleObj.origType, liveHandler ); - } - } - - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( this.setInterval ) { - this.onbeforeunload = eventHandle; - } - - return false; - }, - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -var removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - elem.removeEventListener( type, handle, false ); - } : - function( elem, type, handle ) { - elem.detachEvent( "on" + type, handle ); - }; - -jQuery.Event = function( src ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - // Event type - } else { - this.type = src; - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = now(); - - // Mark it as fixed - this[ expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - } - // otherwise set the returnValue property of the original event to false (IE) - e.returnValue = false; - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - // Check if mouse(over|out) are still within the same parent element - var parent = event.relatedTarget; - - // Firefox sometimes assigns relatedTarget a XUL element - // which we cannot access the parentNode property of - try { - // Traverse up the tree - while ( parent && parent !== this ) { - parent = parent.parentNode; - } - - if ( parent !== this ) { - // set the correct event type - event.type = event.data; - - // handle event if we actually just moused on to a non sub-element - jQuery.event.handle.apply( this, arguments ); - } - - // assuming we've left the element since we most likely mousedover a xul element - } catch(e) { } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( this.nodeName.toLowerCase() !== "form" ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - return trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - return trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var formElems = /textarea|input|select/i, - - changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( elem.nodeName.toLowerCase() === "select" ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !formElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery.data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery.data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - return jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - click: function( e ) { - var elem = e.target, type = elem.type; - - if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { - return testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = elem.type; - - if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - return testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information/focus[in] is not needed anymore - beforeactivate: function( e ) { - var elem = e.target; - jQuery.data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return formElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return formElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; -} - -function trigger( type, elem, args ) { - args[0].type = type; - return jQuery.event.handle.apply( elem, args ); -} - -// Create "bubbling" focus and blur events -if ( document.addEventListener ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - jQuery.event.special[ fix ] = { - setup: function() { - this.addEventListener( orig, handler, true ); - }, - teardown: function() { - this.removeEventListener( orig, handler, true ); - } - }; - - function handler( e ) { - e = jQuery.event.fix( e ); - e.type = fix; - return jQuery.event.handle.call( this, e ); - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - var handler = name === "one" ? jQuery.proxy( fn, function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }) : fn; - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - var event = jQuery.Event( type ); - event.preventDefault(); - event.stopPropagation(); - jQuery.event.trigger( event, data, this[0] ); - return event.result; - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, i = 1; - - // link all the functions, so any of them can unbind this click handler - while ( i < args.length ) { - jQuery.proxy( fn, args[ i++ ] ); - } - - return this.click( jQuery.proxy( fn, function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - })); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( type === "focus" || type === "blur" ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - context.each(function(){ - jQuery.event.add( this, liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - }); - - } else { - // unbind live handler - context.unbind( liveConvert( type, selector ), fn ); - } - } - - return this; - } -}); - -function liveHandler( event ) { - var stop, elems = [], selectors = [], args = arguments, - related, match, handleObj, elem, j, i, l, data, - events = jQuery.data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) - if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) { - return; - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( match[i].selector === handleObj.selector ) { - elem = match[i].elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) { - stop = false; - break; - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - -// Prevent memory leaks in IE -// Window isn't included so as not to unbind existing unload events -// More info: -// - http://isaacschlueter.com/2006/10/msie-memory-leaks/ -if ( window.attachEvent && !window.addEventListener ) { - window.attachEvent("onunload", function() { - for ( var id in jQuery.cache ) { - if ( jQuery.cache[ id ].handle ) { - // Try/Catch is to handle iframes being unloaded, see #4280 - try { - jQuery.event.remove( jQuery.cache[ id ].handle.elem ); - } catch(e) {} - } - } - }); -} -/*! - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var filter = Expr.filter[ type ], found, item, left = match[1]; - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = part.toLowerCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - return match[1].toLowerCase(); - }, - CHILD: function(match){ - if ( match[1] === "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 === i; - }, - eq: function(elem, i, match){ - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } else { - Sizzle.error( "Syntax error, unrecognized expression: " + name ); - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - if ( type === "first" ) { - return true; - } - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first === 0 ) { - return diff === 0; - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){ - return "\\" + (num - 0 + 1); - })); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.compareDocumentPosition ? -1 : 1; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.sourceIndex ? -1 : 1; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.ownerDocument ? -1 : 1; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

"; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE - })(); -} - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
"; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return !!(a.compareDocumentPosition(b) & 16); -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = getText; -jQuery.isXMLDoc = isXML; -jQuery.contains = contains; - -return; - -window.Sizzle = Sizzle; - -})(); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - slice = Array.prototype.slice; - -// Implement the identical functionality for filter and not -var winnow = function( elements, qualifier, keep ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var ret = this.pushStack( "", "find", selector ), length = 0; - - for ( var i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( var n = length; n < ret.length; n++ ) { - for ( var r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && jQuery.filter( selector, this ).length > 0; - }, - - closest: function( selectors, context ) { - if ( jQuery.isArray( selectors ) ) { - var ret = [], cur = this[0], match, matches = {}, selector; - - if ( cur && selectors.length ) { - for ( var i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[selector] ) { - matches[selector] = jQuery.expr.match.POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[selector]; - - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { - ret.push({ selector: selector, elem: cur }); - delete matches[selector]; - } - } - cur = cur.parentNode; - } - } - - return ret; - } - - var pos = jQuery.expr.match.POS.test( selectors ) ? - jQuery( selectors, context || this.context ) : null; - - return this.map(function( i, cur ) { - while ( cur && cur.ownerDocument && cur !== context ) { - if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) { - return cur; - } - cur = cur.parentNode; - } - return null; - }); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context || this.context ) : - jQuery.makeArray( selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, slice.call(arguments).join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], cur = elem[dir]; - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, - rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, - rtagName = /<([\w:]+)/, - rtbody = /"; - }, - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - td: [ 3, "", "
" ], - col: [ 2, "", "
" ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - - - - - diff --git a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/test.txt b/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.4/sandbox/issues/3504-jQuery-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/measure.js b/branches/firebug1.4/sandbox/measure.js deleted file mode 100644 index 9b6ddd17..00000000 --- a/branches/firebug1.4/sandbox/measure.js +++ /dev/null @@ -1,342 +0,0 @@ -/* See license.txt for terms of usage */ - -(function() { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// ************************************************************************************************ -var userAgent = navigator.userAgent.toLowerCase(); -var isOpera = /opera/.test(userAgent); -var isSafari = /webkit/.test(userAgent); -var isIE = /msie/.test(userAgent) && !/opera/.test(userAgent); -var browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; - -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint() -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this -// issue was fixed in the 532 version -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532"; -// ************************************************************************************************ - -// ************************************************************************************************ -// Measure - -function Measure(win) -{ - this.window = win.window; - this.document = win.document; -}; - -Measure.prototype = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Window Measure methods - - getWindowSize: function() - { - var width=0, height=0, el; - - if (typeof this.window.innerWidth == "number") - { - width = this.window.innerWidth; - height = this.window.innerHeight; - } - else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - else if ((el=this.document.body) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollSize: function() - { - var width=0, height=0, el; - - // first try the document.documentElement scroll size - if (!isIEQuiksMode && (el=this.document.documentElement) && - (el.scrollHeight || el.scrollWidth)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - // then we need to check if document.body has a bigger scroll size value - // because sometimes depending on the browser and the page, the document.body - // scroll size returns a smaller (and wrong) measure - if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) && - (el.scrollWidth > width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0; - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measure Methods - - getMeasure: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasureInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasure(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - { - return value; - } - else - { - return getPixelValue(el.parentNode, value + unit); - } - }, - - getMeasureBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasureInPixels(el, propName); - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasureInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - } - -}; - -// ************************************************************************************************ -// Internals - -function getCSSAutoMarginBox(el) -{ - /* - // the following elements will fail - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - // the following elements are safe - // which other elements may have auto margin? - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getStyle = isIE ? function(el, name) -{ - return el.currentStyle[name] || el.style[name] || undefined; -} -: function(el, name) -{ - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; -}; - -// From Dean Edwards: -// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - -var PIXEL = /^\d+(px)?$/i; -function getPixelValue(element, value) -{ - if (!element || !element.runtimeStyle) return 0; - - if (PIXEL.test(value)) - return parseInt(value); - - var style = element.style.left; - var runtimeStyle = element.runtimeStyle.left; - - element.runtimeStyle.left = element.currentStyle.left; - element.style.left = value || 0; - - value = element.style.pixelLeft; - - element.style.left = style; - element.runtimeStyle.left = runtimeStyle; - - return value; -}; - - -// ************************************************************************************************ - -window.Measure = Measure; - -// ************************************************************************************************ -})(); \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/plugin/index.html b/branches/firebug1.4/sandbox/plugin/index.html deleted file mode 100644 index 945d94aa..00000000 --- a/branches/firebug1.4/sandbox/plugin/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - -
-

FirebugLite 1.3 Testing

-
-

Hello World

- -
-
- Just a test note -
-
-

User interface files

- -
-
- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/plugin/plugin.js b/branches/firebug1.4/sandbox/plugin/plugin.js deleted file mode 100644 index 3dcfc4c5..00000000 --- a/branches/firebug1.4/sandbox/plugin/plugin.js +++ /dev/null @@ -1,64 +0,0 @@ -/* See license.txt for terms of usage */ - -Firebug.extend(function(FBL) { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Plugin Module - -Firebug.Plugin = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Plugin") : null; - }, - - clear: function() - { - alert("clear button clicked"); - this.getPanel().panelNode.innerHTML = ""; - } -}); - - -// ************************************************************************************************ -// Plugin Panel - -function PluginPanel(){}; - -PluginPanel.prototype = extend(Firebug.Panel, -{ - name: "Plugin", - title: "Plugin", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear Panel", - owner: Firebug.Plugin, - onClick: Firebug.Plugin.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - - this.panelNode.innerHTML = "Hello World!"; - } - -}); - -Firebug.registerPanel(PluginPanel); -Firebug.registerModule(Firebug.Plugin); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBg.png b/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBg.png deleted file mode 100644 index 025a2314..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBgHover.png b/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBgHover.png deleted file mode 100644 index 816e433d..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/detach.png b/branches/firebug1.4/sandbox/sandbox/flexBox/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/detach.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/detachHover.png b/branches/firebug1.4/sandbox/sandbox/flexBox/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/detachHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.css b/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.css deleted file mode 100644 index 7c1a2242..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.css +++ /dev/null @@ -1,406 +0,0 @@ -/* See license.txt for terms of usage */ - -/* ************************************************************************************************* - Global styles -************************************************************************************************* */ - -html, body { - font-family: Lucida Grande,Tahoma,sans-serif; - font-size: 11px; - - height: 100%; - width: 100%; - margin: 0; - padding: 0; - overflow: hidden; -} - -/* ************************************************************************************************* - General classes -************************************************************************************************* */ - -.inlineBlockLeft { - display: block; - float: left; -} - -.inlineBlockRight { - display: block; - float: right; -} - -/* ************************************************************************************************* - Main box -************************************************************************************************* */ - -#fbContentBox { - width: 100%; - height: 100%; - - visibility: hidden; -} - -/* ************************************************************************************************* - Top TabBar box -************************************************************************************************* */ - -#fbPanelBar1-tabBox { - height: 28px; - white-space: nowrap; - - background: url("tabBgTop.png") repeat-x scroll 0 0 #ddd; - _background-image: none !important; - _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png'); -} - - -/* ************************************************************************************************* - Toolbar and SidePanel Tabs Boxes -************************************************************************************************* */ - -#fbToolbar, -#fbPanelBar2-panelTabsBox { - height: 28px; - - position: relative; - - background: url("tabBg.png") repeat-x scroll 0 3px #FBFDFF; - _background-image: none !important; - _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png'); -} - -#fbToolbarContent { - white-space: nowrap; - padding: 3px 2px 2px; -} - -#fbPanelBar2-panelTabs { - white-space: nowrap; - padding: 3px 2px 2px; - /* avoid tabs wrapping to the next line when the space is too small */ - clip: rect(0pt, 1024px, 25px, 0pt); - /* Firefox needs position:absolute so the clip:rect works as expected */ - position: absolute; -} - -/* ************************************************************************************************* - Panel Container boxes -************************************************************************************************* */ - -#fbPanelPane { -} - -#fbPanelDeck { -} - -#fbSidePanelDeck { - width: 300px; -} - - -/* ************************************************************************************************* - Panel Content boxes -************************************************************************************************* */ - -#fbPanelBar1-content, -#fbPanelBar2-content { - background: #fff; - - border-top: 1px solid #999; - border-bottom: 1px solid #ccc; -} - -#fbPanelBar1-content { - border-right: 1px solid #ccc; -} - -#fbPanelBar2-content { - border-left: 1px solid #999; -} - - -/* ************************************************************************************************* - Command Popup box -************************************************************************************************* */ - -#fbCommandPopup { - height: 50px; - background: #fff; - border-top: 1px solid #999; -} - - -/* ************************************************************************************************* - Commandline box -************************************************************************************************* */ - -#fbCommandBox { - border-top: 1px solid #ccc; - background: #fff; - height: 18px; - position: relative; -} - - -/* ************************************************************************************************* - Splitters -************************************************************************************************* */ - -#fbPanelSplitter { - background: #E5E7E9; - cursor: e-resize; - width: 4px; -} - -#fbPanelSplitterContent { - height: 28px; - position: relative; -} - -#fbPanelSplitterTop { - width: 4px; - height: 28px; - - background: url("tabBg.png") repeat-x scroll center 3px #FBFDFF; - _background-image: none !important; - _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png'); -} - -#fbPanelSplitterHandler { - width: 4px; - height: 24px; - top: 4px; - left: 1px; - position: absolute; - - background: url("splitter.gif") no-repeat; -} - -#fbCommandPopupSplitter, -#fbCommandPopupSplitterContent { - background: #E5E7E9; - cursor: n-resize; - height: 4px; - overflow: hidden; -} - - -/* ************************************************************************************************* - Window Controls -************************************************************************************************* */ - -.fbWindowControls { - /* height + padding top + padding bottom == 28px (#fbPanelBar1-tabBox's height) */ - padding: 2px 7px 0 2px; - height: 26px; - position: absolute; - clear: both; - white-space: nowrap; - - background: url("tabBgTop.png") repeat-x scroll 0 0 #ddd; - _background-image: none !important; - _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png'); -} - -#fbWindowLeftControls { - left: 0; - width: 1024px; /* fixed width to avoid inline elements breaking line when there's no space */ - clear: both; -} - -#fbWindowRightControls { - right: 0; - /*width: 190px; /* fixed width to avoid inline elements breaking line when there's no space */ - width: 50px; /* fixed width to avoid inline elements breaking line when there's no space */ - clear: both; -} - - -/* ************************************************************************************************* - Main Buttons -************************************************************************************************* */ - -#fbPanelBar1-innerToolbar { - padding: 2px 0 0 2px; -} - -#fbFirebugButton { - background: url(firebugX.png) no-repeat; -} - -#fbInspectButton { - background: url(Templarian_inspector.png) no-repeat 2px 2px; -} - - -/* ************************************************************************************************* - Search -************************************************************************************************* */ - -#fbSearch { - padding: 2px 7px 0 0; - display: none; -} - -#fbSearch input { - -moz-border-radius: 5px; - border: 1px solid #999; - padding: 2px 4px; - font-family: Lucida Grande,Tahoma,sans-serif; - font-size: 11px; - width: 100px; -} - - -/* ************************************************************************************************* - Window butons -************************************************************************************************* */ - -#fbWindowButtons { - padding: 3px 0 0; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* ************************************************************************************************* - Tabs -************************************************************************************************* */ - -.panelTab { - display: block; - float: left; - padding: 6px 7px 6px; - margin: 0; - font-weight: bold; - color: #888; - font-family: Lucida Grande,Tahoma,sans-serif; - font-size: 11px; - line-height: 14px; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} -.sel { - color: #000; - background: #FBFDFF; - border: 1px solid #aaa; - border-bottom-width: 0; -} - -.panelOptions { - display: none; -} - -.sel .panelOptions { - display: inline; - font-family: monospace; - padding-left: 20px; - background: url(panelOptions.png) no-repeat 4px 0; - cursor: default; - line-height: 12px; - position: relative; - top: -1px; -} - - -/* ************************************************************************************************* - SidePanel Tabs -************************************************************************************************* */ - -#fbPanelBar2-panelTabs .panelTab { - color: #aaa; - border-bottom-width: 1px; - padding: 2px 5px 3px; - -moz-border-radius: 4px; - border-radius: 4px; -} -#fbPanelBar2-panelTabs .sel { - background: #fff; - color: #000; -} - - -/* ************************************************************************************************* - CommandLine -************************************************************************************************* */ - -#fbCommandArrow { - position: absolute; - font: 11px Monaco,monospace; - color: #00f; - padding: 2px 2px 2px 4px; - z-index: 2; -} - -#fbCommandLine { - position: absolute; - top: 1px; - _top: 2px; /* IE6 */ - left: 0; - width: 100%; - border: 0; - height: 16px; - line-height: 16px; - padding: 0 0 0 28px; - margin: 0; - font: 12px Monaco,monospace; - z-index: 1; - outline: none; -} - - -/* ************************************************************************************************* - TO ORGANIZE -************************************************************************************************* */ - -.hideSidePanelBar #fbPanelSplitter, -.hideSidePanelBar #fbSidePanelDeck { - display: none; -} - -.hideCommandPopup #fbCommandPopupSplitter, -.hideCommandPopup #fbCommandPopup { - display: none; -} - - -/* ************************************************************************************************* - webkit hack -************************************************************************************************* */ - -@media screen and (-webkit-min-device-pixel-ratio:0) { - - /* The min-height will cause a problem in IE, making the Side Panel PanelTabs - (#fbPanelBar2-panelTabs) disappears when maximizing then mizimixing the - window so we must apply this rule only to wekbit */ - #fbPanelPane { - min-height: 28px; /* avoid problem in webkit with small height */ - } - - #fbPanelDeck { - min-width: 1px; /* avoid problem in webkit with small width */ - } - -} \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.html b/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.html deleted file mode 100644 index 9be8317e..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/firebug.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - -Firebug Lite - - - - - - - - - - -
- -
- -
- -
- -
-   -   -
- -
- Consoleâ–¼ - HTMLâ–¼ - CSSâ–¼ - Scriptâ–¼ - Netâ–¼ -
- -
- -
- -
-   -   -   -
- -
- -
- -
- -
- -
- -
- -
- -
-
- Clear -
-
- -
- -
-

left

-

left

-

left

-

left

-

left

-

left

-

left

-

left

-

left

-

left

-
- -
- -
- -
-
-
 
-
 
-
-
- -
- -
-
- Styleâ–¼ - Layoutâ–¼ -
-
- -
- -
-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-

right

-
- -
- -
- -
- -
-
-
- -
-
-

command popup

-

command popup

-

command popup

-

command popup

-

command popup

-
-
- -
- >>> - -
- -
- - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/gui.css b/branches/firebug1.4/sandbox/sandbox/flexBox/gui.css deleted file mode 100644 index 01f92278..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/gui.css +++ /dev/null @@ -1,87 +0,0 @@ -/* See license.txt for terms of usage */ - -/* ************************************************************************************************* - Button -************************************************************************************************* */ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; - font-size: 11px; - line-height: 14px; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - - -/* ************************************************************************************************* - Icon Button -************************************************************************************************* */ - -.fbIconButton { - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #888 !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #eee !important; - background-color: #ccc !important; -} - - -/* ************************************************************************************************* - Small Button -************************************************************************************************* */ - -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/include/BrowserDetection.js b/branches/firebug1.4/sandbox/sandbox/flexBox/include/BrowserDetection.js deleted file mode 100644 index 4a9ebc0a..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/include/BrowserDetection.js +++ /dev/null @@ -1,31 +0,0 @@ -/* See license.txt for terms of usage */ - -define(function() { -// ************************************************************************************************ - -// ************************************************************************************************ -// Locals - -var userAgent = navigator.userAgent.toLowerCase(); -var version = (userAgent.match( /.+(?:ox|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1]; -var versionNumber = parseInt(version); - -//************************************************************************************************ -// BrowserDetection - -var BrowserDetection = -{ - version : version, - Firefox : /firefox/.test(userAgent) && versionNumber, - Opera : /opera/.test(userAgent) && versionNumber, - Safari : /webkit/.test(userAgent) && versionNumber, - IE : /msie/.test(userAgent) && !/opera/.test(userAgent) && versionNumber, - IE6 : /msie 6/i.test(navigator.appVersion) -}; - -//************************************************************************************************ - -return BrowserDetection; - -// ************************************************************************************************ -}); \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.css b/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.css deleted file mode 100644 index 1e5a6894..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.css +++ /dev/null @@ -1,115 +0,0 @@ -/* See license.txt for terms of usage */ - -/* ************************************************************************************************* - Flexible Box -************************************************************************************************* */ - -.vbox { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-box-align: stretch; - - display: -moz-box; - -moz-box-orient: vertical; - -moz-box-align: stretch; - - display: box; - box-orient: vertical; - box-align: stretch; -} - -.hbox { - display: -webkit-box; - -webkit-box-orient: horizontal; - -webkit-box-align: stretch; - - display: -moz-box; - -moz-box-orient: horizontal; - -moz-box-align: stretch; - - display: box; - box-orient: horizontal; - box-align: stretch; -} - -.boxFlex, .boxFlex1 { - -webkit-box-flex: 1; - -moz-box-flex: 1; - box-flex: 1; -} - -.boxFlex2 { - -webkit-box-flex: 2; - -moz-box-flex: 2; - box-flex: 2; -} - -/* ************************************************************************************************* - Flexible Helpers -************************************************************************************************* */ - -.boxScroll { - overflow: auto; - display: block; /* Google Chrome needs this in case of an iframe element. */ - min-height: 1px; /* Firefox needs min-height and min-width to avoid problems */ - min-width: 1px; /* with the minimum dimensions of flexible elements. */ -} - - -/* ************************************************************************************************* - Flexible Box fixes -************************************************************************************************* */ - -.boxFix, -.boxFix .vbox, -.boxFix .hbox { - position: relative; - display: block; -} - -.boxFix .boxFixPos, -.boxFix .boxContent { - position: absolute; - display: block; - height: 100%; - width: 100%; -} - -.boxFixIgnoreContents .boxFlex, -.boxFixIgnoreContents .boxFlex1, -.boxFixIgnoreContents .boxFlex2 { - position: absolute; -} - -/* ************************************************************************************************* - splitter frame -************************************************************************************************* */ - -.splitterFrame { - position: absolute; - display: block; - top: 0; - left: 0; - z-index: 2147483550; - - /* IE needs a transparent background otherwise it won't capture mouse events properly */ - background-image: url(transparentPixel.gif); -} - -/* ************************************************************************************************* - iframe box fix -************************************************************************************************* */ - -.boxFix iframe.boxScroll { - /* IE need this to properly resize the iframe using flexBox */ - display: block; - - /* IE needs height and width properties to fix iframe dimension, otherwise - the the iframe won't fit the proper space and the horizontal scrollbar - will be visible when not needed */ - height: 100%; width: 100%; - - /* - border-left: 0 !important; - border-right: 0 !important;/**/ -} diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.js b/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.js deleted file mode 100644 index b4a9305e..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/include/FlexBox.js +++ /dev/null @@ -1,834 +0,0 @@ -/* See license.txt for terms of usage */ - -define(["BrowserDetection", "Measure"], function(BrowserDetection, Measure){ - -// ************************************************************************************************ - -/* - xxxpedro notes: - - - flexBox dependencies - - className - - event (onresize, onunload) - - BrowserDetection - - lazyExecution - - Measure - - BrowserDetection - - - move to chrome/context? - - lazy - - event - - cache? - - - - scrolling - - getPosition - relative to what? - - scrolling in-browser iframe Chrome different computation than Splitter - -*/ - -// ************************************************************************************************ - -// turning debugging on makes CSS3-flexBox-supported browsers to use FlexBox class to resize -// the elements via JavaScript instead of CSS, allowing the FlexBox functions to be debugabe -var debug = false; - -// setting debugSplitterFrame to true will make the SplitterFrame element to be visible -// (the invisible element used to cover the whole UI when dragging the splitter in -// order to capture mouse events) -var debugSplitterFrame = false; - -//************************************************************************************************ - -// debug can also be enabled via URL hash like #debug or #iframe,debug -debug = debug === true ? true : /\bdebug\b/.test(document.location.hash); - -//************************************************************************************************ - -// FIXME: xxxpedro: better browser detection? always use flexBox? -var supportsFlexBox = !document.all && !window.opera; -var isIE6 = BrowserDetection.IE6; - -// ************************************************************************************************ -// FlexBox Class constructor - -function FlexBox(root, listenWindowResize) -{ - var win = root.contentWindow || window; - - this.measure = new Measure(win); - - this.boxObjects = []; - - this.root = root; - - initializeSplitters(this); - - if (supportsFlexBox && !debug) - { - this.reflow(); - return; - } - - setClass(root, "boxFix"); - - var self = this; - - this.render = function() - { - renderBoxes(this); - }; - - var resizeHandler = this.resizeHandler = isIE6 ? - // IE6 requires an special resizeHandler to make the rendering smoother - lazyExecution(self.render, self) : - // Other browsers can handle - (function(){ self.render(); }); - - if (listenWindowResize) - { - var onunload = function() - { - removeEvent(win, "resize", resizeHandler); - removeEvent(win, "unload", onunload); - - self.destroy(); - }; - - addEvent(win, "resize", resizeHandler); - addEvent(win, "unload", onunload); - } - - self.invalidate(); - - if (isIE6) - { - fixIE6BackgroundImageCache(); - setTimeout(function delayedFlexBoxReflow(){ - self.invalidate(); - }, 50); - } -} - -//************************************************************************************************ -//FlexBox Class members - -FlexBox.prototype.boxObjects = null; - -FlexBox.prototype.reflow = function() -{ - var root = this.root; - - var object = - { - element : root, - flex : null, - extra : {} - }; - - this.boxObjects = [ object ]; - - reflowBoxes(this); -}; - -FlexBox.prototype.render = function() -{ - -}; - -FlexBox.prototype.invalidate = function() -{ - this.reflow(); - this.render(); -}; - -FlexBox.prototype.resizeHandler = function() -{ -}; - -FlexBox.prototype.destroy = function() -{ - function cleanObject(object) - { - delete object.element; - delete object.extra; - delete object.orientation; - delete object.children; - delete object.layout; - } - - this.root = null; - - var boxObjects = this.boxObjects; - var boxObject; - - while (boxObject = boxObjects.pop()) - { - var childBoxObject; - var children = boxObject.children; - - while (childBoxObject = children.pop()) - { - cleanObject(childBoxObject); - childBoxObject = null; - } - - cleanObject(boxObject); - boxObject = null; - children = null; - } - - this.boxObjects = null; -}; - -//************************************************************************************************ -// FlexBox helpers - -FlexBox.prototype.getBoxOrientation = function(element) -{ - var orient = (element.className.match(/\b(v|h)box\b/) || [ 0, 0 ])[1]; - - var type = orient == "v" ? "vertical" : orient == "h" ? "horizontal" : null; - - var orientation = null; - - if (type == "vertical") - { - orientation = - { - isVertical: true, - dimension: "height", - offset: "offsetHeight", - before: "top", - after: "bottom", - mousePosition: "clientY" - }; - } - else if (type == "horizontal") - { - orientation = - { - isHorizontal: true, - dimension: "width", - offset: "offsetWidth", - before: "left", - after: "right", - mousePosition: "clientX" - }; - } - - return orientation; -}; - -FlexBox.prototype.getBoxObject = function(element) -{ - var boxObject; - var boxObjects = this.boxObjects; - - for (var i = 0; boxObject = boxObjects[i]; i++) - { - if (boxObject.element == element) - return boxObject; - } - - return null; -}; - -FlexBox.prototype.getParentBoxObject = function(element) -{ - do - { - element = element.parentNode; - } - while (element && element.nodeType == 1 && !this.getBoxOrientation(element)); - - return this.getBoxObject(element); -}; - -FlexBox.prototype.getChildObject = function(element, boxObject) -{ - var childObject; - var boxObjectFound = false; - - if (this.getBoxOrientation(element)) - { - return this.getBoxObject(element); - } - - if (!boxObject) - { - boxObject = this.getBoxObject(element, true); - } - - if (!boxObject) return null; - - for (var i = 0, children = boxObject.children; childObject = children[i]; i++) - { - if (childObject.element == element) - { - boxObjectFound = true; - break; - } - } - - return boxObjectFound ? childObject : null; -}; - -//************************************************************************************************ -// Splitter - -var splitters = []; - -function initializeSplitters(flexBox) -{ - var doc = flexBox.root.ownerDocument; - var elements = flexBox.root.getElementsByTagName("div"); - var element; - - for (var i = 0, l = elements.length; i < l; i++) - { - element = elements[i]; - if (hasClass(element, "fbSplitter")) - { - var targetId = element.getAttribute("data-target"); - var spacerId = element.getAttribute("data-spacer"); - - var target = doc.getElementById(targetId); - var spacer = doc.getElementById(spacerId); - - splitters.push(new Splitter(flexBox, element, target, spacer)); - } - } -} - -function Splitter(flexBox, splitter, target, spacer) -{ - this.flexBox = flexBox; - - this.splitter = splitter; - this.target = target; - this.spacer = spacer; - - this.document = splitter.ownerDocument; - this.window = this.document.parentWindow || this.document.defaultView; - - this.splitterFrame = this.document.createElement("div"); - this.splitterFrame.className = "splitterFrame"; - - var self = this; - - splitter.onmousedown = function(event) - { - self.onSplitterMouseDown(event); - }; -}; - -Splitter.prototype.onSplitterMouseDown = function(e) -{ - cancelEvent(e, true); - - var flexBox = this.flexBox; - var splitterFrame = this.splitterFrame; - - var root = flexBox.root; - var measure = flexBox.measure; - - var winSize = measure.getWindowSize(); - var target = this.target; - var self = this; - - var orientation = flexBox.getParentBoxObject(target).orientation; - var halfSplitterSize = Math.floor(this.splitter[orientation.offset]/2); - - openSplitterFrame(this, orientation); - - this.splitterFrame.onmousemove = function(event) - { - event = window.event || event; - cancelEvent(event, true); - - var boxObject = flexBox.getParentBoxObject(target); - var orientation = boxObject.orientation; - - var fixedSpace = boxObject.layout.fixedSpace; - var targetSize = target[orientation.offset]; - var maxSize = boxObject.element[orientation.offset] + targetSize - fixedSpace; - - var mousePosition = event[orientation.mousePosition]; - - var targetPosition = flexBox.measure.getElementPosition(target); - var positionDiff = mousePosition - targetPosition[orientation.before] + halfSplitterSize; - - var size = targetSize - positionDiff; - size = Math.min(maxSize, size); - size = Math.max(0, size); - target.style[orientation.dimension] = size + "px"; - - if (isIE6) - { - var className = target.className; - target.className = className + " boxFixIgnoreContents"; - flexBox.invalidate(); - target.className = className; - } - else - flexBox.invalidate(); - }; - - this.splitterFrame.onmouseup = function(event) - { - event = window.event || event; - cancelEvent(event, true); - - // IE9 need this timeout otherwise the mouse cursor image will freeze - // until the document is clicked again - setTimeout(function(){ - try - { - self.splitter.focus(); - } - catch (E) {} - - closeSplitterFrame(self); - },0); - }; -}; - -function openSplitterFrame(splitter, orientation) -{ - var flexBox = splitter.flexBox; - var root = flexBox.root; - var splitterFrame = splitter.splitterFrame; - - var box = flexBox.measure.getElementBox(root); - for (var prop in box) - { - splitterFrame.style[prop] = box[prop] + "px"; - } - - if (debugSplitterFrame) - { - splitterFrame.style.background = "#def"; - splitterFrame.style.opacity = 0.5; - - if (isIE6) - splitterFrame.style.filter = "alpha(opacity=50)"; - } - - splitterFrame.style.cursor = orientation.isVertical ? "n-resize" : "e-resize"; - - root.parentNode.insertBefore(splitterFrame, root); -} - -function closeSplitterFrame(splitter) -{ - var root = splitter.flexBox.root; - var splitterFrame = splitter.splitterFrame; - - splitterFrame.style.cursor = "inherit"; - - root.parentNode.removeChild(splitterFrame); -} - -//************************************************************************************************ -// lazy execution - -function lazyExecution(_function, _this, _arguments) -{ - var executionTimer; - var lastExecution = 0; - var thisObject = _this ? _this : _function.prototype ? _function.prototype : _function; - - _arguments = _arguments || []; - - return function() - { - if (new Date().getTime() - lastExecution > 50) - { - if (executionTimer) - { - clearTimeout(executionTimer); - executionTimer = null; - } - - _function.apply(thisObject, _arguments); - - lastExecution = new Date().getTime(); - } - else - { - if (executionTimer) - { - clearTimeout(executionTimer); - executionTimer = null; - } - - executionTimer = setTimeout(function delayedExecution() - { - _function.apply(thisObject, _arguments); - }, 50); - } - }; -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function reflowBoxes(flexBox) -{ - var boxObject; - var childBoxObject; - var childElement; - - var flex; - var space; - var boxSpace; - var extraSpace; - var padding; - var border; - - var match; - - var measure = flexBox.measure; - var boxObjects = flexBox.boxObjects; - - for (var index = 0; boxObject = boxObjects[index]; index++) - { - var parentElement = boxObject.element; - - var orientation = flexBox.getBoxOrientation(parentElement); - if (!orientation) - continue; - - var children = []; - var layout = {}; - - var flexSum = 0; - var fixedSpace = 0; - var minimumSpace = 0; - - for (var i = 0, childs = parentElement.childNodes, length = childs.length; i < length; i++) - { - childElement = childs[i]; - - // ignore non-element nodes - if (childElement.nodeType != 1) - continue; - - padding = measure.getMeasureBox(childElement, "padding"); - border = measure.getMeasureBox(childElement, "border"); - - extraSpace = padding[orientation.before] + padding[orientation.after] + - border[orientation.before] + border[orientation.after]; - - if (match = /\bboxFlex(\d?)\b/.exec(childElement.className)) - { - flex = match[1] - 0 || 1; - space = null; - - flexSum += flex; - minimumSpace += extraSpace; - } - else - { - boxSpace = childElement[orientation.offset]; - - space = boxSpace - extraSpace; - space = Math.max(space, 0); - - flex = null; - - fixedSpace += boxSpace; - minimumSpace += boxSpace; - } - - childBoxObject = - { - element : childElement, - flex : flex, - extra : {}, - layout : layout - }; - - childBoxObject[orientation.dimension] = space; - childBoxObject.extra[orientation.dimension] = extraSpace; - - children.push(childBoxObject); - - // if it is a box, then we need to layout it - if (flexBox.getBoxOrientation(childElement)) - { - boxObjects.push(childBoxObject); - } - } - - layout.flexSum = flexSum; - layout.minimumSpace = minimumSpace; - layout.fixedSpace = fixedSpace; - - boxObject.orientation = orientation; - boxObject.children = children; - boxObject.layout = layout; - } -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function renderBoxes(flexBox) -{ - var boxObject; - var childBoxObject; - var childElement; - - var flex; - var space; - var boxSpace; - var extraSpace; - var padding; - var border; - - var totalSpace; - var freeSpace; - - var _isIE6 = isIE6; - var measure = flexBox.measure; - var boxObjects = flexBox.boxObjects; - - // render each box, followed by its children - for (var index = 0; boxObject = boxObjects[index]; index++) - { - var computedSpace = 0; - var remainingPixels = 0; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore data from the boxObjects cache - - var parentElement = boxObject.element; - var children = boxObject.children; - var orientation = flexBox.getBoxOrientation(parentElement); - - var flexSum = boxObject.layout.flexSum; - var fixedSpace = boxObject.layout.fixedSpace; - var minimumSpace = boxObject.layout.minimumSpace; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // calculating the total space - - extraSpace = boxObject.extra[orientation.dimension]; - if (!extraSpace) - { - padding = measure.getMeasureBox(parentElement, "padding"); - border = measure.getMeasureBox(parentElement, "border"); - - extraSpace = padding[orientation.before] + padding[orientation.after] + - border[orientation.before] + border[orientation.after]; - } - - // We are setting the height of horizontal boxes in IE6, so we need to - // temporary hide the elements otherwise we will get the wrong measures - if (_isIE6) - { - var className = parentElement.className; - parentElement.className = className + " boxFixIgnoreContents"; - space = parentElement[orientation.offset]; - parentElement.className = className; - } - else - { - space = parentElement[orientation.offset]; - } - - totalSpace = space - extraSpace; - - freeSpace = totalSpace - fixedSpace; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // processing box children - - for (var i = 0, length = children.length; i < length; i++) - { - childBoxObject = children[i]; - - childElement = childBoxObject.element; - flex = childBoxObject.flex; - extraSpace = childBoxObject.extra[orientation.dimension]; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // calculating child size - - // if it is a flexible child, then we need to calculate its space - if (flex) - { - // calculate the base flexible space - space = Math.floor(freeSpace * flex / flexSum); - space -= extraSpace; - space = Math.max(space, 0); - - // calculate the remaining pixels - remainingPixels = freeSpace * flex % flexSum; - - // distribute remaining pixels - if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace) - { - // distribute a proportion of the remaining pixels, or a minimum of 1 pixel - space += Math.floor(remainingPixels * flex / flexSum) || 1; - } - - // save the value - childBoxObject[orientation.dimension] = space; - } - // if it is not a flexible child, then we already have its dimension calculated - else - { - // use the value calculated at the last reflow() operation - space = childBoxObject[orientation.dimension]; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // resizing child if necessary - - if (orientation.isHorizontal || flex) - { - if (orientation.isVertical) - { - // if it's a child of a vertical box, then we only need to adjust the height... - childElement.style.height = space + "px"; - - // unless... - - // xxxpedro 100% width of an iframe with border will exceed the width of - // its offsetParent... don't ask me why. not sure though if this - // is the best way to solve it - if (childElement.nodeName.toLowerCase() == "iframe") - { - border = measure.getMeasureBox(childElement, "border"); - - // in IE6 we need to hide the iframe in order to get the correct - // width of its parentNode - if (_isIE6) - { - childElement.style.display = "none"; - boxSpace = childElement.parentNode.offsetWidth; - childElement.style.display = "block"; - } - else - { - boxSpace = childElement.parentNode.offsetWidth; - } - - // remove the border space - childElement.style.width = - Math.max(0, boxSpace - border.left - border.right) + "px"; - } - } - else - { - setClass(childElement, "boxFixPos"); - - childElement.style.left = computedSpace + "px"; - childElement.style.width = space + "px"; - - // boxObject.height IE6 only - if (_isIE6) - { - // TODO: figure out how to solve the problem with minimumSpace - childBoxObject.height = boxObject.height || parentElement.offsetHeight; - childElement.style.height = childBoxObject.height + "px"; - } - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // update the computed space sum - - computedSpace += space; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Ensuring minimum space - - if (parentElement != flexBox.root && orientation.isVertical) - { - // TODO: check for "deeper" parents - // here we are enforcing that the parent box dimension (height or width) - // won't be smaller than the minimum space required, which is the sum - // of fixed dimension child boxes - parentElement.parentNode.style[orientation.dimension] = - Math.max(parentElement.parentNode[orientation.offset], minimumSpace) + "px"; - } - } - -} - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -// ************************************************************************************************ -// helper functions - -function hasClass(node, name) -{ - return (' ' + node.className + ' ').indexOf(' ' + name + ' ') != -1; -} - -function setClass(node, name) -{ - if (node && (' ' + node.className + ' ').indexOf(' ' + name + ' ') == -1) - node.className += " " + name; -} - -function addEvent(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on" + name, handler); -} - -function removeEvent(object, name, handler, useCapture) -{ - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on" + name, handler); -} - -function cancelEvent(e, preventDefault) -{ - if (!e) - return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -} - -// ************************************************************************************************ -// IE6 background glitch fix -// http://www.mister-pixel.com/#Content__state=is_that_simple - -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch (E) - { - } -}; - -// ************************************************************************************************ - -return FlexBox; - -// ************************************************************************************************ -}); \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/include/Measure.js b/branches/firebug1.4/sandbox/sandbox/flexBox/include/Measure.js deleted file mode 100644 index dcb015b3..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/include/Measure.js +++ /dev/null @@ -1,340 +0,0 @@ -/* See license.txt for terms of usage */ - -define(["BrowserDetection"], function(BrowserDetection) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint() -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this -// issue was fixed in the 532 version -var shouldFixElementFromPoint = BrowserDetection.Safari || - BrowserDetection.Safari && BrowserDetection.version < "532"; -// ************************************************************************************************ - -// ************************************************************************************************ -// Measure - -function Measure(win) -{ - this.window = win.window; - this.document = win.document; -}; - -Measure.prototype = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Window Measure methods - - getWindowSize: function() - { - var width=0, height=0, el; - - if (typeof this.window.innerWidth == "number") - { - width = this.window.innerWidth; - height = this.window.innerHeight; - } - else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - else if ((el=this.document.body) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollSize: function() - { - var width=0, height=0, el; - - // first try the document.documentElement scroll size - if (!isIEQuiksMode && (el=this.document.documentElement) && - (el.scrollHeight || el.scrollWidth)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - // then we need to check if document.body has a bigger scroll size value - // because sometimes depending on the browser and the page, the document.body - // scroll size returns a smaller (and wrong) measure - if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) && - (el.scrollWidth > width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0; - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = BrowserDetection.IE ? - this.document.body.clientTop || - this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measure Methods - - getMeasure: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasureInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasure(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - { - return value; - } - else - { - return getPixelValue(el.parentNode, value + unit); - } - }, - - getMeasureBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (BrowserDetection.IE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasureInPixels(el, propName); - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasureInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - } - -}; - -// ************************************************************************************************ -// Internals - -function getCSSAutoMarginBox(el) -{ - /* - // the following elements will fail - if (BrowserDetection.IE && - " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - // the following elements are safe - // which other elements may have auto margin? - if (BrowserDetection.IE && - " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getStyle = BrowserDetection.IE ? function(el, name) -{ - return el.currentStyle[name] || el.style[name] || undefined; -} -: function(el, name) -{ - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; -}; - -// From Dean Edwards: -// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 - -var PIXEL = /^\d+(px)?$/i; -function getPixelValue(element, value) -{ - if (!element || !element.runtimeStyle) return 0; - - if (PIXEL.test(value)) - return parseInt(value); - - var style = element.style.left; - var runtimeStyle = element.runtimeStyle.left; - - element.runtimeStyle.left = element.currentStyle.left; - element.style.left = value || 0; - - value = element.style.pixelLeft; - - element.style.left = style; - element.runtimeStyle.left = runtimeStyle; - - return value; -}; - - -// ************************************************************************************************ - -return Measure; - -// ************************************************************************************************ -}); \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/include/require.js b/branches/firebug1.4/sandbox/sandbox/flexBox/include/require.js deleted file mode 100644 index f6195cc9..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/include/require.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - RequireJS 0.24.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. - Available via the MIT or new BSD license. - see: http://github.com/jrburke/requirejs for details -*/ -var require,define; -(function(){function Q(e){return da.call(e)==="[object Function]"}function V(e){return da.call(e)==="[object Array]"}function W(e,g,l){for(var k in g)if(!(k in F)&&(!(k in e)||l))e[k]=g[k];return h}function ea(e,g,l){var k,p,n;for(k=0;n=g[k];k++){n=typeof n==="string"?{name:n}:n;p=n.location;if(l&&(!p||p.indexOf("/")!==0&&p.indexOf(":")===-1))p=l+"/"+(p||n.name);e[n.name]={name:n.name,location:p||n.name,lib:n.lib||"lib",main:(n.main||"lib/main").replace(qa,"").replace(fa,"")}}}function ra(e){function g(a){var b, -c;for(b=0;c=a[b];b++)if(c==="."){a.splice(b,1);b-=1}else if(c==="..")if(b===1&&(a[2]===".."||a[0]===".."))break;else if(b>0){a.splice(b-1,2);b-=2}}function l(a,b){var c;if(a.charAt(0)===".")if(b){if(t.pkgs[b])b=[b];else{b=b.split("/");b=b.slice(0,b.length-1)}a=b.concat(a.split("/"));g(a);c=t.pkgs[b=a[0]];a=a.join("/");if(c&&a===b+"/"+c.main)a=b}return a}function k(a,b){var c=a?a.indexOf("!"):-1,d=null,f=b?b.name:null,j=a,o,m;if(c!==-1){d=a.substring(0,c);a=a.substring(c+1,a.length)}if(d)d=l(d,f); -if(a){if(d)o=(c=q[d])?c.normalize?c.normalize(a,function(u){return l(u,f)}):l(a,f):"__$p"+f+"@"+a;else o=l(a,f);m=X[o];if(!m){m=h.toModuleUrl?h.toModuleUrl(i,a,b):i.nameToUrl(a,null,b);X[o]=m}}return{prefix:d,name:o,parentMap:b,url:m,originalName:j,fullName:d?d+"!"+o:o}}function p(){var a=true,b=t.priorityWait,c,d;if(b){for(d=0;c=b[d];d++)if(!v[c]){a=false;break}a&&delete t.priorityWait}return a}function n(a){return function(b){a.exports=b}}function R(a,b,c){return function(){var d=[].concat(sa.call(arguments, -0)),f;if(c&&Q(f=d[d.length-1]))f.__requireJsBuild=true;d.push(b);return a.apply(null,d)}}function ga(a,b){b=R(i.require,a,b);W(b,{nameToUrl:R(i.nameToUrl,a),toUrl:R(i.toUrl,a),isDefined:R(i.isDefined,a),ready:h.ready,isBrowser:h.isBrowser});if(h.paths)b.paths=h.paths;return b}function ta(a){var b,c,d,f,j,o,m,u=S[a];if(u)for(f=0;c=u[f];f++){b=c.fullName;c=k(c.originalName,c.parentMap);c=c.fullName;d=w[b]||[];j=w[c];if(c!==b){if(b in z){delete z[b];z[c]=true}w[c]=j?j.concat(d):d;delete w[b];for(j=0;j< -d.length;j++){m=d[j].depArray;for(o=0;o0)){if(t.priorityWait)if(p())C();else return;for(f in v)if(!(f in F)){c=true;if(!v[f])if(b)a+=f+" ";else{d=true;break}}if(c||i.waitCount){if(b&&a){f=new Error("require.js load timeout for modules: "+a);f.requireType="timeout";f.requireModules=a;return h.onError(f)}if(d|| -i.scriptCount){if(A||ma)setTimeout($,50)}else if(i.waitCount){for(D=0;a=Z[D];D++)la(a,{});$()}else h.checkReadyState()}}}function na(a,b){var c=b.name,d=b.fullName,f;if(!(d in q||d in v)){G[a]||(G[a]=q[a]);v[d]||(v[d]=false);f=function(j){require.onPluginLoad&&require.onPluginLoad(i,a,c,j);Y({prefix:b.prefix,name:b.name,fullName:b.fullName,callback:function(){return j}});v[d]=true};f.fromText=function(j,o){var m=K;i.loaded[j]=false;i.scriptCount+=1;if(m)K=false;eval(o);if(m)K=true;i.completeLoad(j)}; -G[a].load(c,ga(b.parentMap,true),f,t)}}function xa(a){if(a.prefix&&a.name.indexOf("__$p")===0&&q[a.prefix])a=k(a.originalName,a.parentMap);var b=a.prefix,c=a.fullName;if(!(z[c]||v[c])){z[c]=true;if(b)if(q[b])na(b,a);else{if(!L[b]){L[b]=[];(w[b]||(w[b]=[])).push({onDep:function(d){if(d===b){var f,j=L[b];for(d=0;d0;o--){j=c.slice(0,o).join("/");if(d[j]){c.splice(0,o,d[j]); -break}else if(j=f[j]){a=a===j.name?j.location+"/"+j.main:j.location+"/"+j.lib;c.splice(0,o,a);break}}b=c.join("/")+(b||".js");b=(b.charAt(0)==="/"||b.match(/^\w+:/)?"":m.baseUrl)+b}}return m.urlArgs?b+((b.indexOf("?")===-1?"?":"&")+m.urlArgs):b}};i.jQueryCheck=ka;i.resume=C;return i}function za(){var e,g,l;if(N&&N.readyState==="interactive")return N;e=document.getElementsByTagName("script");for(g=e.length-1;g>-1&&(l=e[g]);g--)if(l.readyState==="interactive")return N=l;return null}var Aa=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, -Ba=/require\(["']([^'"\s]+)["']\)/g,qa=/^\.\//,fa=/\.js$/,da=Object.prototype.toString,x=Array.prototype,sa=x.slice,ya=x.splice,A=!!(typeof window!=="undefined"&&navigator&&document),ma=!A&&typeof importScripts!=="undefined",Ca=A&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,oa=typeof opera!=="undefined"&&opera.toString()==="[object Opera]",ua="_r@@",F={},H={},T=[],N=null,Da=false,K=false,h;x={};var ba,r,I,U,y,O,P,D,ca,pa,E;if(typeof require!=="undefined")if(Q(require))return; -else x=require;h=require=function(e,g,l){var k="_",p;if(!V(e)&&typeof e!=="string"){p=e;if(V(g)){e=g;g=l}else e=[]}if(p&&p.context)k=p.context;l=H[k]||(H[k]=ra(k));p&&l.configure(p);return l.require(e,g)};h.version="0.24.0";h.isArray=V;h.isFunction=Q;h.mixin=W;h.jsExtRegExp=/^\/|:|\?|\.js$/;r=h.s={contexts:H,skipAsync:{},isPageLoaded:!A,readyCalls:[]};if(h.isAsync=h.isBrowser=A){I=r.head=document.getElementsByTagName("head")[0];if(U=document.getElementsByTagName("base")[0])I=r.head=U.parentNode}h.onError= -function(e){throw e;};h.load=function(e,g,l){var k=e.contextName,p=e.urlFetched,n=e.loaded;Da=false;n[g]||(n[g]=false);if(!p[l]){e.scriptCount+=1;h.attach(l,k,g);p[l]=true;if(e.jQuery&&!e.jQueryIncremented){e.jQuery.readyWait+=1;e.jQueryIncremented=true}}};define=h.def=function(e,g,l){var k;if(typeof e!=="string"){l=g;g=e;e=null}if(!h.isArray(g)){l=g;g=[]}if(!e&&!g.length&&h.isFunction(l))if(l.length){l.toString().replace(Aa,"").replace(Ba,function(p,n){g.push(n)});g=["require","exports","module"].concat(g)}if(K){k= -ba||za();if(!k)return h.onError(new Error("ERROR: No matching script interactive for "+l));e||(e=k.getAttribute("data-requiremodule"));k=H[k.getAttribute("data-requirecontext")]}(k?k.defQueue:T).push([e,g,l])};define.amd={multiversion:true,plugins:true};h.execCb=function(e,g,l){return g.apply(null,l)};h.onScriptLoad=function(e){var g=e.currentTarget||e.srcElement,l;if(e.type==="load"||Ca.test(g.readyState)){N=null;e=g.getAttribute("data-requirecontext");l=g.getAttribute("data-requiremodule");H[e].completeLoad(l); -g.detachEvent&&!oa?g.detachEvent("onreadystatechange",h.onScriptLoad):g.removeEventListener("load",h.onScriptLoad,false)}};h.attach=function(e,g,l,k,p){var n;if(A){k=k||h.onScriptLoad;n=document.createElement("script");n.type=p||"text/javascript";n.charset="utf-8";n.async=!r.skipAsync[e];n.setAttribute("data-requirecontext",g);n.setAttribute("data-requiremodule",l);if(n.attachEvent&&!oa){K=true;n.attachEvent("onreadystatechange",k)}else n.addEventListener("load",k,false);n.src=e;ba=n;U?I.insertBefore(n, -U):I.appendChild(n);ba=null;return n}else if(ma){k=H[g];g=k.loaded;g[l]=false;importScripts(e);k.completeLoad(l)}return null};if(A){y=document.getElementsByTagName("script");for(D=y.length-1;D>-1&&(O=y[D]);D--){if(!I)I=O.parentNode;if(P=O.getAttribute("data-main")){if(!x.baseUrl){y=P.split("/");O=y.pop();y=y.length?y.join("/")+"/":"./";x.baseUrl=y;P=O.replace(fa,"")}x.deps=x.deps?x.deps.concat(P):[P];break}}}r.baseUrl=x.baseUrl;h.pageLoaded=function(){if(!r.isPageLoaded){r.isPageLoaded=true;ca&&clearInterval(ca); -if(pa)document.readyState="complete";h.callReady()}};h.checkReadyState=function(){var e=r.contexts,g;for(g in e)if(!(g in F))if(e[g].waitCount)return;r.isDone=true;h.callReady()};h.callReady=function(){var e=r.readyCalls,g,l,k;if(r.isPageLoaded&&r.isDone){if(e.length){r.readyCalls=[];for(g=0;l=e[g];g++)l()}e=r.contexts;for(k in e)if(!(k in F)){g=e[k];if(g.jQueryIncremented){g.jQuery.ready(true);g.jQueryIncremented=false}}}};h.ready=function(e){r.isPageLoaded&&r.isDone?e():r.readyCalls.push(e);return h}; -if(A){if(document.addEventListener){document.addEventListener("DOMContentLoaded",h.pageLoaded,false);window.addEventListener("load",h.pageLoaded,false);if(!document.readyState){pa=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload",h.pageLoaded);if(self===self.top)ca=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");h.pageLoaded()}}catch(e){}},30)}document.readyState==="complete"&&h.pageLoaded()}h(x);if(h.isAsync&&typeof setTimeout!== -"undefined"){E=r.contexts[x.context||"_"];E.requireWait=true;setTimeout(function(){E.requireWait=false;E.takeGlobalQueue();E.jQueryCheck();E.scriptCount||E.resume();h.checkReadyState()},0)}})(); diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/min.png b/branches/firebug1.4/sandbox/sandbox/flexBox/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/min.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/minHover.png b/branches/firebug1.4/sandbox/sandbox/flexBox/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/minHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/off.png b/branches/firebug1.4/sandbox/sandbox/flexBox/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/off.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/offHover.png b/branches/firebug1.4/sandbox/sandbox/flexBox/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/offHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/panel.html b/branches/firebug1.4/sandbox/sandbox/flexBox/panel.html deleted file mode 100644 index 2e3582d0..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBox/panel.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - -
-

Lorem ipsum dolor sit amet consectetuer volutpat tortor nisl eu dolor. Vitae Nam sodales tempus tristique metus mus vestibulum orci nibh et. Adipiscing tincidunt vitae ac tristique Integer wisi iaculis mauris neque augue. Massa Vestibulum enim tempus neque et augue et condimentum Curabitur Sed. Feugiat urna interdum morbi Sed quis quis urna id orci.

-

Sed Curabitur neque tincidunt tellus dis sit vitae ligula congue euismod. Aenean tincidunt libero mattis Donec sed congue Nullam laoreet Phasellus et. Non platea gravida metus Phasellus ut justo vitae fringilla Nullam sed. Integer purus habitasse et sem sit Nam et Phasellus eget Curabitur. Nonummy dolor vitae Curabitur nunc wisi sit mauris et condimentum tempus. Eros tortor.

-

Tincidunt a sem penatibus pretium Sed Proin egestas sit at enim. Nec nec porta Phasellus laoreet pretium sed tellus felis Integer elit. Nulla laoreet Nam rhoncus nonummy dis cursus ipsum condimentum aliquam condimentum. Sapien elit suscipit orci libero interdum vitae condimentum eros orci a. Sapien tincidunt consectetuer Aliquam penatibus in ligula sodales sed.

-

Ac parturient metus dapibus vitae nec ac pharetra condimentum Integer dolor. Et justo wisi pretium euismod nunc quis at sed tincidunt tellus. Interdum et eros velit convallis eros leo et Proin ligula interdum. Vel risus id sem Aenean laoreet venenatis Vivamus tempus sem diam. Ante Aenean eu condimentum leo faucibus amet aliquam justo pede nibh. Nibh felis augue consequat et id.

-
- - - diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/panelOptions.png b/branches/firebug1.4/sandbox/sandbox/flexBox/panelOptions.png deleted file mode 100644 index 6aa876cc..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/panelOptions.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/splitter.gif b/branches/firebug1.4/sandbox/sandbox/flexBox/splitter.gif deleted file mode 100644 index 09c00bd7..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/splitter.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/transparentPixel.gif b/branches/firebug1.4/sandbox/sandbox/flexBox/transparentPixel.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBox/transparentPixel.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.IE6.css b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.IE6.css deleted file mode 100644 index 14f8aa87..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.IE6.css +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************************************/ -#fbToolbarSearch { - background-image: url(search.gif) !important; -} -/************************************************************************************************/ -.fbErrors { - background-image: url(errorIcon.gif) !important; -} -/************************************************************************************************/ -.logRow-info { - background-image: url(infoIcon.gif) !important; -} - -.logRow-warning { - background-image: url(warningIcon.gif) !important; -} - -.logRow-error { - background-image: url(errorIcon.gif) !important; -} diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.html b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/blank.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/blank.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBg.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disable.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/disableHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/down.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/down.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downActive.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downActive.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downHover.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/downHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/firebug.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/firebug.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/group.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/group.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/loading_16.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/search.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow2.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/sprite.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/sprite.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabLeft.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMid.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabMid.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabRight.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tabRight.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_close.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_open.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/up.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/up.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upActive.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upActive.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upHover.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/upHover.png and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.png b/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/img/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/blank.gif b/branches/firebug1.4/skin/classic/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/classic/blank.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/buttonBg.png b/branches/firebug1.4/skin/classic/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.4/skin/classic/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/buttonBgHover.png b/branches/firebug1.4/skin/classic/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.4/skin/classic/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/detach.png b/branches/firebug1.4/skin/classic/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.4/skin/classic/detach.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/detachHover.png b/branches/firebug1.4/skin/classic/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.4/skin/classic/detachHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/disable.gif b/branches/firebug1.4/skin/classic/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.4/skin/classic/disable.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/disable.png b/branches/firebug1.4/skin/classic/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.4/skin/classic/disable.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/disableHover.gif b/branches/firebug1.4/skin/classic/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.4/skin/classic/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/disableHover.png b/branches/firebug1.4/skin/classic/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.4/skin/classic/disableHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/down.png b/branches/firebug1.4/skin/classic/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.4/skin/classic/down.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/downActive.png b/branches/firebug1.4/skin/classic/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.4/skin/classic/downActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/downHover.png b/branches/firebug1.4/skin/classic/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.4/skin/classic/downHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/errorIcon-sm.png b/branches/firebug1.4/skin/classic/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.4/skin/classic/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/errorIcon.gif b/branches/firebug1.4/skin/classic/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.4/skin/classic/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/errorIcon.png b/branches/firebug1.4/skin/classic/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.4/skin/classic/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/firebug.css b/branches/firebug1.4/skin/classic/firebug.css deleted file mode 100644 index 004925f8..00000000 --- a/branches/firebug1.4/skin/classic/firebug.css +++ /dev/null @@ -1,3063 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font: message-box; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - /* white-space: pre; */ - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoPostText .netInfoParamName { - width: 1px; /* Google Chrome need this otherwise the first column of - the post variables table will be larger than expected */ -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -/* IE6 has problems with > operator, and multiple classes */ -/*.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, - /* avoid rule not being parsed IE6 */ -.logRow-spy .spyHead .spyTitle, -.logGroup .logGroupLabel, -.hasChildren .memberLabelCell .memberLabel, -.hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} -/* -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -/* avoid rule not being parsed IE6 */ -.opened .spyHead .spyTitle, -.opened .logGroupLabel, -.opened .memberLabelCell .memberLabel/*, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 2px 0; -} - - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; - background: #f8f8f8; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -.objectPropValue { - font-weight: normal; - font-style: italic; - color: #555555; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.arrayLeftBracket { - margin-right: 4px; -} - -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 6px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 50px; -} - -#fbToolbar { - background: url(sprite.png) #d4d0c8 0 0; - height: 28px; - font-size: 11px; -} - -#fbPanelBarBox { - background: url(sprite.png) #c5c1ba 0 -28px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #ECEBE3; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #d4d0c8 #fff #d4d0c8 #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 50px; - padding: 8px 0 4px 5px; - z-index: 6; - background: url(sprite.png) #D4D0C8 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #c5c1ba 0 -28px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #c5c1ba 0 -28px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 23px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #D4D0C8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #d4d0c8 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #d4d0c8; - color: #000; - border: 1px solid #777; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 9; - position: absolute; - height: 100%; - top: 28px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em Monaco, monospace; - position: relative; - float: left; - top: 0; - left: 0; - margin: 0 5px 0 0; - padding: 0 5px 0 10px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warn { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warn { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -/* -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.4/skin/classic/firebug.html b/branches/firebug1.4/skin/classic/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.4/skin/classic/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/skin/classic/firebug.png b/branches/firebug1.4/skin/classic/firebug.png deleted file mode 100644 index 123545a1..00000000 Binary files a/branches/firebug1.4/skin/classic/firebug.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/group.gif b/branches/firebug1.4/skin/classic/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.4/skin/classic/group.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/infoIcon.gif b/branches/firebug1.4/skin/classic/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.4/skin/classic/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/infoIcon.png b/branches/firebug1.4/skin/classic/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/skin/classic/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/loading_16.gif b/branches/firebug1.4/skin/classic/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.4/skin/classic/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/min.png b/branches/firebug1.4/skin/classic/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.4/skin/classic/min.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/minHover.png b/branches/firebug1.4/skin/classic/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.4/skin/classic/minHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/off.png b/branches/firebug1.4/skin/classic/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.4/skin/classic/off.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/offHover.png b/branches/firebug1.4/skin/classic/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.4/skin/classic/offHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/pixel_transparent.gif b/branches/firebug1.4/skin/classic/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/classic/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/roundCorner.svg b/branches/firebug1.4/skin/classic/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.4/skin/classic/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.4/skin/classic/search.gif b/branches/firebug1.4/skin/classic/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.4/skin/classic/search.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/search.png b/branches/firebug1.4/skin/classic/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.4/skin/classic/search.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/shadow.gif b/branches/firebug1.4/skin/classic/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.4/skin/classic/shadow.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/shadow2.gif b/branches/firebug1.4/skin/classic/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.4/skin/classic/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/shadowAlpha.png b/branches/firebug1.4/skin/classic/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.4/skin/classic/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/sprite.png b/branches/firebug1.4/skin/classic/sprite.png deleted file mode 100644 index 3fe97bb6..00000000 Binary files a/branches/firebug1.4/skin/classic/sprite.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabHoverLeft.png b/branches/firebug1.4/skin/classic/tabHoverLeft.png deleted file mode 100644 index 5852d8d7..00000000 Binary files a/branches/firebug1.4/skin/classic/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabHoverMid.png b/branches/firebug1.4/skin/classic/tabHoverMid.png deleted file mode 100644 index e7c9ba75..00000000 Binary files a/branches/firebug1.4/skin/classic/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabHoverRight.png b/branches/firebug1.4/skin/classic/tabHoverRight.png deleted file mode 100644 index 3c62c981..00000000 Binary files a/branches/firebug1.4/skin/classic/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabLeft.png b/branches/firebug1.4/skin/classic/tabLeft.png deleted file mode 100644 index 3368de73..00000000 Binary files a/branches/firebug1.4/skin/classic/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMenuCheckbox.png b/branches/firebug1.4/skin/classic/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMenuPin.png b/branches/firebug1.4/skin/classic/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMenuRadio.png b/branches/firebug1.4/skin/classic/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMenuTarget.png b/branches/firebug1.4/skin/classic/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMenuTargetHover.png b/branches/firebug1.4/skin/classic/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabMid.png b/branches/firebug1.4/skin/classic/tabMid.png deleted file mode 100644 index b2cfeac5..00000000 Binary files a/branches/firebug1.4/skin/classic/tabMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tabRight.png b/branches/firebug1.4/skin/classic/tabRight.png deleted file mode 100644 index 8470a95e..00000000 Binary files a/branches/firebug1.4/skin/classic/tabRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/textEditorBorders.gif b/branches/firebug1.4/skin/classic/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.4/skin/classic/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/textEditorBorders.png b/branches/firebug1.4/skin/classic/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.4/skin/classic/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/textEditorCorners.gif b/branches/firebug1.4/skin/classic/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.4/skin/classic/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/textEditorCorners.png b/branches/firebug1.4/skin/classic/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.4/skin/classic/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/titlebarMid.png b/branches/firebug1.4/skin/classic/titlebarMid.png deleted file mode 100644 index e9a74163..00000000 Binary files a/branches/firebug1.4/skin/classic/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/toolbarMid.png b/branches/firebug1.4/skin/classic/toolbarMid.png deleted file mode 100644 index a1257f52..00000000 Binary files a/branches/firebug1.4/skin/classic/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tree_close.gif b/branches/firebug1.4/skin/classic/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/skin/classic/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/tree_open.gif b/branches/firebug1.4/skin/classic/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/skin/classic/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/twistyClosed.png b/branches/firebug1.4/skin/classic/twistyClosed.png deleted file mode 100644 index f80319b0..00000000 Binary files a/branches/firebug1.4/skin/classic/twistyClosed.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/twistyOpen.png b/branches/firebug1.4/skin/classic/twistyOpen.png deleted file mode 100644 index 86801243..00000000 Binary files a/branches/firebug1.4/skin/classic/twistyOpen.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/up.png b/branches/firebug1.4/skin/classic/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.4/skin/classic/up.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/upActive.png b/branches/firebug1.4/skin/classic/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.4/skin/classic/upActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/upHover.png b/branches/firebug1.4/skin/classic/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.4/skin/classic/upHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/warningIcon.gif b/branches/firebug1.4/skin/classic/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.4/skin/classic/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/classic/warningIcon.png b/branches/firebug1.4/skin/classic/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/skin/classic/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/blank.gif b/branches/firebug1.4/skin/light/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/light/blank.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/buttonBg.png b/branches/firebug1.4/skin/light/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.4/skin/light/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/buttonBgHover.png b/branches/firebug1.4/skin/light/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.4/skin/light/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/close.png b/branches/firebug1.4/skin/light/close.png deleted file mode 100644 index ada59d8a..00000000 Binary files a/branches/firebug1.4/skin/light/close.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/closeHover.png b/branches/firebug1.4/skin/light/closeHover.png deleted file mode 100644 index be0145d2..00000000 Binary files a/branches/firebug1.4/skin/light/closeHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/detach.png b/branches/firebug1.4/skin/light/detach.png deleted file mode 100644 index 25d97e03..00000000 Binary files a/branches/firebug1.4/skin/light/detach.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/detachHover.png b/branches/firebug1.4/skin/light/detachHover.png deleted file mode 100644 index edb81253..00000000 Binary files a/branches/firebug1.4/skin/light/detachHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/disable.gif b/branches/firebug1.4/skin/light/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.4/skin/light/disable.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/disable.png b/branches/firebug1.4/skin/light/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.4/skin/light/disable.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/disableHover.gif b/branches/firebug1.4/skin/light/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.4/skin/light/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/disableHover.png b/branches/firebug1.4/skin/light/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.4/skin/light/disableHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/down.png b/branches/firebug1.4/skin/light/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.4/skin/light/down.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/downActive.png b/branches/firebug1.4/skin/light/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.4/skin/light/downActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/downHover.png b/branches/firebug1.4/skin/light/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.4/skin/light/downHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/errorIcon-sm.png b/branches/firebug1.4/skin/light/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.4/skin/light/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/errorIcon.gif b/branches/firebug1.4/skin/light/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.4/skin/light/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/errorIcon.png b/branches/firebug1.4/skin/light/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.4/skin/light/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/firebug.css b/branches/firebug1.4/skin/light/firebug.css deleted file mode 100644 index 7af18e64..00000000 --- a/branches/firebug1.4/skin/light/firebug.css +++ /dev/null @@ -1,3063 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font: message-box; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - /* white-space: pre; */ - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoPostText .netInfoParamName { - width: 1px; /* Google Chrome need this otherwise the first column of - the post variables table will be larger than expected */ -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -/* IE6 has problems with > operator, and multiple classes */ -/*.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, - /* avoid rule not being parsed IE6 */ -.logRow-spy .spyHead .spyTitle, -.logGroup .logGroupLabel, -.hasChildren .memberLabelCell .memberLabel, -.hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} -/* -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -/* avoid rule not being parsed IE6 */ -.opened .spyHead .spyTitle, -.opened .logGroupLabel, -.opened .memberLabelCell .memberLabel/*, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 2px 0; -} - - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; - background: #f8f8f8; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -.objectPropValue { - font-weight: normal; - font-style: italic; - color: #555555; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.arrayLeftBracket { - margin-right: 4px; -} - -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 5px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 50px; -} - -#fbToolbar { - background: url(sprite.png) #eee 0 0; - height: 27px; - font-size: 11px; -} - -#fbPanelBarBox { - background: url(sprite.png) #d9d9d9 0 -27px; - height: 23px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #ECEBE3; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 50px; - padding: 7px 0 4px 5px; - z-index: 6; - background: url(sprite.png) #eee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #d9d9d9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #d9d9d9 0 -27px; - position: absolute; - height: 23px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 23px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #EEEEEE; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 7px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 23px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 23px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #EEEEEE 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #eee; - color: #000; - border: 1px solid #777; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 9; - position: absolute; - height: 100%; - top: 27px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em Monaco, monospace; - position: relative; - float: left; - top: 0; - left: 0; - margin: 0 5px 0 0; - padding: 0 5px 0 10px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warn { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warn { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -/* -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.4/skin/light/firebug.html b/branches/firebug1.4/skin/light/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.4/skin/light/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/skin/light/firebug.png b/branches/firebug1.4/skin/light/firebug.png deleted file mode 100644 index 338dc5a1..00000000 Binary files a/branches/firebug1.4/skin/light/firebug.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/group.gif b/branches/firebug1.4/skin/light/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.4/skin/light/group.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/infoIcon.gif b/branches/firebug1.4/skin/light/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.4/skin/light/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/infoIcon.png b/branches/firebug1.4/skin/light/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/skin/light/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/loading_16.gif b/branches/firebug1.4/skin/light/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.4/skin/light/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/min.png b/branches/firebug1.4/skin/light/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.4/skin/light/min.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/minHover.png b/branches/firebug1.4/skin/light/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.4/skin/light/minHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/off.png b/branches/firebug1.4/skin/light/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.4/skin/light/off.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/offHover.png b/branches/firebug1.4/skin/light/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.4/skin/light/offHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/pixel_transparent.gif b/branches/firebug1.4/skin/light/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/light/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/roundCorner.svg b/branches/firebug1.4/skin/light/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.4/skin/light/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.4/skin/light/search.gif b/branches/firebug1.4/skin/light/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.4/skin/light/search.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/search.png b/branches/firebug1.4/skin/light/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.4/skin/light/search.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/shadow.gif b/branches/firebug1.4/skin/light/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.4/skin/light/shadow.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/shadow2.gif b/branches/firebug1.4/skin/light/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.4/skin/light/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/shadowAlpha.png b/branches/firebug1.4/skin/light/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.4/skin/light/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/sprite.png b/branches/firebug1.4/skin/light/sprite.png deleted file mode 100644 index d117e123..00000000 Binary files a/branches/firebug1.4/skin/light/sprite.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabHoverLeft.png b/branches/firebug1.4/skin/light/tabHoverLeft.png deleted file mode 100644 index 708215d2..00000000 Binary files a/branches/firebug1.4/skin/light/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabHoverMid.png b/branches/firebug1.4/skin/light/tabHoverMid.png deleted file mode 100644 index 6ff9a864..00000000 Binary files a/branches/firebug1.4/skin/light/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabHoverRight.png b/branches/firebug1.4/skin/light/tabHoverRight.png deleted file mode 100644 index 9f02130d..00000000 Binary files a/branches/firebug1.4/skin/light/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabLeft.png b/branches/firebug1.4/skin/light/tabLeft.png deleted file mode 100644 index 8c502135..00000000 Binary files a/branches/firebug1.4/skin/light/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMenuCheckbox.png b/branches/firebug1.4/skin/light/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.4/skin/light/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMenuPin.png b/branches/firebug1.4/skin/light/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.4/skin/light/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMenuRadio.png b/branches/firebug1.4/skin/light/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.4/skin/light/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMenuTarget.png b/branches/firebug1.4/skin/light/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.4/skin/light/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMenuTargetHover.png b/branches/firebug1.4/skin/light/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.4/skin/light/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabMid.png b/branches/firebug1.4/skin/light/tabMid.png deleted file mode 100644 index 0a00b60d..00000000 Binary files a/branches/firebug1.4/skin/light/tabMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tabRight.png b/branches/firebug1.4/skin/light/tabRight.png deleted file mode 100644 index b43c352d..00000000 Binary files a/branches/firebug1.4/skin/light/tabRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/textEditorBorders.gif b/branches/firebug1.4/skin/light/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.4/skin/light/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/textEditorBorders.png b/branches/firebug1.4/skin/light/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.4/skin/light/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/textEditorCorners.gif b/branches/firebug1.4/skin/light/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.4/skin/light/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/textEditorCorners.png b/branches/firebug1.4/skin/light/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.4/skin/light/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/titlebarMid.png b/branches/firebug1.4/skin/light/titlebarMid.png deleted file mode 100644 index 5fc63e79..00000000 Binary files a/branches/firebug1.4/skin/light/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/toolbarMid.png b/branches/firebug1.4/skin/light/toolbarMid.png deleted file mode 100644 index 8520aab2..00000000 Binary files a/branches/firebug1.4/skin/light/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tree_close.gif b/branches/firebug1.4/skin/light/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/skin/light/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/tree_open.gif b/branches/firebug1.4/skin/light/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/skin/light/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/twistyClosed.png b/branches/firebug1.4/skin/light/twistyClosed.png deleted file mode 100644 index f80319b0..00000000 Binary files a/branches/firebug1.4/skin/light/twistyClosed.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/twistyOpen.png b/branches/firebug1.4/skin/light/twistyOpen.png deleted file mode 100644 index 86801243..00000000 Binary files a/branches/firebug1.4/skin/light/twistyOpen.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/up.png b/branches/firebug1.4/skin/light/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.4/skin/light/up.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/upActive.png b/branches/firebug1.4/skin/light/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.4/skin/light/upActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/upHover.png b/branches/firebug1.4/skin/light/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.4/skin/light/upHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/light/warningIcon.gif b/branches/firebug1.4/skin/light/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.4/skin/light/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/light/warningIcon.png b/branches/firebug1.4/skin/light/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/skin/light/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/blank.gif b/branches/firebug1.4/skin/xp/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/xp/blank.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/buttonBg.png b/branches/firebug1.4/skin/xp/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.4/skin/xp/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/buttonBgHover.png b/branches/firebug1.4/skin/xp/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.4/skin/xp/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/detach.png b/branches/firebug1.4/skin/xp/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.4/skin/xp/detach.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/detachHover.png b/branches/firebug1.4/skin/xp/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.4/skin/xp/detachHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/disable.gif b/branches/firebug1.4/skin/xp/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.4/skin/xp/disable.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/disable.png b/branches/firebug1.4/skin/xp/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.4/skin/xp/disable.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/disableHover.gif b/branches/firebug1.4/skin/xp/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.4/skin/xp/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/disableHover.png b/branches/firebug1.4/skin/xp/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.4/skin/xp/disableHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/down.png b/branches/firebug1.4/skin/xp/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.4/skin/xp/down.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/downActive.png b/branches/firebug1.4/skin/xp/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.4/skin/xp/downActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/downHover.png b/branches/firebug1.4/skin/xp/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.4/skin/xp/downHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/errorIcon-sm.png b/branches/firebug1.4/skin/xp/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.4/skin/xp/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/errorIcon.gif b/branches/firebug1.4/skin/xp/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.4/skin/xp/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/errorIcon.png b/branches/firebug1.4/skin/xp/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.4/skin/xp/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/firebug-1.3a2.css b/branches/firebug1.4/skin/xp/firebug-1.3a2.css deleted file mode 100644 index b5dd5dde..00000000 --- a/branches/firebug1.4/skin/xp/firebug-1.3a2.css +++ /dev/null @@ -1,817 +0,0 @@ -.fbBtnPressed { - background: #ECEBE3; - padding: 3px 6px 2px 7px !important; - margin: 1px 0 0 1px; - _margin: 1px -1px 0 1px; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -.fbToolbarButtons { - display: none; -} - -#fbStatusBarBox { - display: none; -} - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -html, body { - margin: 0; - padding: 0; - overflow: hidden; -} - -body { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - position: fixed; - overflow: hidden; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - position: absolute; - z-index: 5; - width: 100%; - top: 0; - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; - overflow: hidden; -} - -#fbPanelBarBox { - top: 27px; - position: absolute; - z-index: 8; - width: 100%; - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 4px 5px 0; -} - -#fbToolbarIcon a { - display: block; - height: 20px; - width: 20px; - background: url(sprite.png) 0 -135px; - text-decoration: none; - cursor: default; -} - -#fbToolbarButtons { - float: left; - padding: 4px 2px 0 5px; -} - -#fbToolbarButtons a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 8px 4px; - cursor: default; -} - -#fbToolbarButtons a:hover { - color: #333; - padding: 3px 7px 3px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -#fbStatusBarBox { - position: relative; - top: 5px; - line-height: 19px; - cursor: default; -} - -.fbToolbarSeparator{ - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 10px 6px 0 0; - float: left; -} - -.fbStatusBar span { - color: #808080; - padding: 0 4px 0 0; -} - -.fbStatusBar span a { - text-decoration: none; - color: black; -} - -.fbStatusBar span a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - _width: 50px; - padding: 5px 0 5px 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 255px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 10px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 11px; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - padding-left: 6px; - background: #fff; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 7px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; -} - -div.fbFitHeight { - overflow: auto; - _position: absolute; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -#fbWindowButtons a { - font-size: 1px; - width: 16px; - height: 16px; - display: block; - float: right; - margin-right: 4px; - text-decoration: none; - cursor: default; -} - -#fbWindow_btClose { - background: url(sprite.png) 0 -119px; -} - -#fbWindow_btClose:hover { - background: url(sprite.png) -16px -119px; -} - -#fbWindow_btDetach { - background: url(sprite.png) -32px -119px; -} - -#fbWindow_btDetach:hover { - background: url(sprite.png) -48px -119px; -} - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - display: block; - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 9; - position: absolute; - height: 100%; - top: 27px; - _width: 6px; -} - -/************************************************************************************************/ -div.lineNo { - font: 11px Monaco, monospace; - float: left; - display: inline; - position: relative; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -pre.nodeCode { - font: 11px Monaco, monospace; - margin: 0; - padding-left: 10px; - overflow: hidden; - /* - _width: 100%; - /**/ -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 11px; -} - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.4/skin/xp/firebug.IE6.css b/branches/firebug1.4/skin/xp/firebug.IE6.css deleted file mode 100644 index 14f8aa87..00000000 --- a/branches/firebug1.4/skin/xp/firebug.IE6.css +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************************************/ -#fbToolbarSearch { - background-image: url(search.gif) !important; -} -/************************************************************************************************/ -.fbErrors { - background-image: url(errorIcon.gif) !important; -} -/************************************************************************************************/ -.logRow-info { - background-image: url(infoIcon.gif) !important; -} - -.logRow-warning { - background-image: url(warningIcon.gif) !important; -} - -.logRow-error { - background-image: url(errorIcon.gif) !important; -} diff --git a/branches/firebug1.4/skin/xp/firebug.css b/branches/firebug1.4/skin/xp/firebug.css deleted file mode 100644 index cc33761c..00000000 --- a/branches/firebug1.4/skin/xp/firebug.css +++ /dev/null @@ -1,3147 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -.obscured { - left: -999999px !important; -} - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - font-size: 11px; - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font-size: 11px; - font: Monaco, monospace; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - -webkit-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - white-space: pre-wrap; - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoPostText .netInfoParamName { - width: 1px; /* Google Chrome need this otherwise the first column of - the post variables table will be larger than expected */ -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow, -.memberRow.hasChildren > .memberLabelCell > .memberLabel, -.hasHeaders .netHrefLabel, -.netPageRow > .netCol > .netPageTitle { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; - min-height: 12px; -} - -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty.opened, -.logRow-spy.opened .spyHead .spyTitle, -.logGroup.opened > .logRow, -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel, -.netPageRow.opened > .netCol > .netPageTitle { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 4px 4px; -} - - - -/************************************************************************************************/ -/* Twisties IE6 */ - -/* IE6 has problems with > operator, and multiple classes */ - -* html .logRow-spy .spyHead .spyTitle, -* html .logGroup .logGroupLabel, -* html .hasChildren .memberLabelCell .memberLabel, -* html .hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} - -* html .opened .spyHead .spyTitle, -* html .opened .logGroupLabel, -* html .opened .memberLabelCell .memberLabel { - background-image: url(tree_close.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; - background: #f8f8f8; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -/* xxxpedro reps object representation .................................... */ -.objectProp-object { - color: DarkGreen; -} - -.objectProps { - color: #000; - font-weight: normal; -} - -.objectPropName { - /*font-style: italic;*/ - color: #777; -} - -/* -.objectProps .objectProp-string, -.objectProps .objectProp-number, -.objectProps .objectProp-object -{ - font-style: italic; -} -/**/ - -.objectProps .objectProp-string -{ - /*font-family: Monaco, monospace;*/ - color: #f55; -} -.objectProps .objectProp-number -{ - /*font-family: Monaco, monospace;*/ - color: #55a; -} -.objectProps .objectProp-object -{ - /*font-family: Lucida Grande,sans-serif;*/ - color: #585; -} -/* xxxpedro reps object representation .................................... */ - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.objectLeftBrace, -.objectRightBrace, -.objectEqual, -.objectComma, -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.objectLeftBrace, -.objectRightBrace, -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.objectLeftBrace, -.arrayLeftBracket { - margin-right: 4px; -} - -.objectRightBrace, -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 4px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - line-height: 13px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - background: #fff; - overflow: hidden; -} - -#fbChrome > tbody > tr > td { - padding: 0; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; - line-height: 13px; -} - -#fbPanelBarBox { - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 48px; - padding: 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #ECE9D8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - line-height: 13px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 10; - position: absolute; - height: 100%; - top: 27px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em/1.4545em Monaco, monospace; - position: relative; - float: left; - top: 0; - left: 0; - margin: 0 5px 0 0; - padding: 0 5px 0 10px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warn { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warn { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -/* -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.4/skin/xp/firebug.html b/branches/firebug1.4/skin/xp/firebug.html deleted file mode 100644 index 22960919..00000000 --- a/branches/firebug1.4/skin/xp/firebug.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
-   -   -   -
- - -
-
- - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
- -
- - - - - -
 
- -
-
-
-
-
-
- - -
 
- - -
- - -
-
-
- -
- - - - - -
- Run - Clear - - -
- -
-
-
>>>
- - -
-
- - - - - - - - - \ No newline at end of file diff --git a/branches/firebug1.4/skin/xp/firebug.png b/branches/firebug1.4/skin/xp/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.4/skin/xp/firebug.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/group.gif b/branches/firebug1.4/skin/xp/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.4/skin/xp/group.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/html.css b/branches/firebug1.4/skin/xp/html.css deleted file mode 100644 index 9d0afb50..00000000 --- a/branches/firebug1.4/skin/xp/html.css +++ /dev/null @@ -1,272 +0,0 @@ -/* See license.txt for terms of usage */ - -.panelNode-html { - -moz-box-sizing: padding-box; - padding: 4px 0 0 2px; -} - -.nodeBox { - position: relative; - font-family: Monaco, monospace; - padding-left: 13px; - -moz-user-select: -moz-none; -} -.nodeBox.search-selection { - -moz-user-select: text; -} -.twisty { - position: absolute; - left: 0px; - top: 0px; - width: 14px; - height: 14px; -} - -.nodeChildBox { - margin-left: 12px; - display: none; -} - -.nodeLabel, -.nodeCloseLabel { - margin: -2px 2px 0 2px; - border: 2px solid transparent; - -moz-border-radius: 3px; - padding: 0 2px; - color: #000088; -} - -.nodeCloseLabel { - display: none; -} - -.nodeTag { - cursor: pointer; - color: blue; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText, -.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; -} - -.nodeWhiteSpace { - border: 1px solid LightGray; - white-space: pre; /* otherwise the border will be collapsed around zero pixels */ - margin-left: 1px; - color: gray; -} - - -.nodeWhiteSpace_Space { - border: 1px solid #ddd; -} - -.nodeTextEntity { - border: 1px solid gray; - white-space: pre; /* otherwise the border will be collapsed around zero pixels */ - margin-left: 1px; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.highlightOpen > .nodeLabel { - background-color: #EEEEEE; -} - -.nodeBox.highlightOpen > .nodeCloseLabel, -.nodeBox.highlightOpen > .nodeChildBox, -.nodeBox.open > .nodeCloseLabel, -.nodeBox.open > .nodeChildBox { - display: block; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel { - border-color: Highlight; - background-color: Highlight; - color: HighlightText !important; -} - -.nodeBox.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText { - color: inherit !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.highlighted > .nodeLabel { - border-color: Highlight !important; - background-color: cyan !important; - color: #000000 !important; -} - -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText { - color: #000000 !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox, -.nodeBox.nodeHidden .nodeCloseLabel, -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText, -.nodeBox.nodeHidden .nodeText { - color: #888888; -} - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag { - color: #5F82D9; -} - -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue { - color: #D86060; -} - -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue, -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText { - color: SkyBlue !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeBox.mutated > .nodeLabel, -.nodeAttr.mutated, -.nodeValue.mutated, -.nodeText.mutated, -.nodeBox.mutated > .nodeText { - background-color: #EFFF79; - color: #FF0000 !important; -} - -.nodeBox.selected.mutated > .nodeLabel, -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated { - background-color: #EFFF79; - border-color: #EFFF79; - color: #FF0000 !important; -} - -/************************************************************************************************/ - -.logRow-dirxml { - padding-left: 0; -} - -.soloElement > .nodeBox { - padding-left: 0; -} - -.useA11y .nodeLabel.focused { - outline: 2px solid #FF9933; - -moz-outline-radius: 3px; - outline-offset: -2px; -} - -.useA11y .nodeLabelBox:focus { - outline: none; -} - -/************************************************************************************************/ - -.breakpointCode .twisty { - display: none; -} - -.breakpointCode .nodeBox.containerNodeBox, -.breakpointCode .nodeLabel { - padding-left: 0px; - margin-left: 0px; - font-family: Monaco, monospace !important; -} - -.breakpointCode .nodeTag, -.breakpointCode .nodeAttr, -.breakpointCode .nodeText, -.breakpointCode .nodeValue, -.breakpointCode .nodeLabel { - color: DarkGreen !important; -} - -.breakpointMutationType { - position: absolute; - top: 4px; - right: 20px; - color: gray; -} - - - - - - -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ -/************************************************************************************************/ - - - -/************************************************************************************************/ -/* Twisties */ - -.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow, -.memberRow.hasChildren > .memberLabelCell > .memberLabel, -.hasHeaders .netHrefLabel, -.netPageRow > .netCol > .netPageTitle { - background-image: url(twistyClosed.png); - background-repeat: no-repeat; - background-position: 2px 2px; - min-height: 12px; -} - -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -.logRow-log > .objectBox-array.hasTwisty.opened, -.logRow-spy.opened .spyHead .spyTitle, -.logGroup.opened > .logRow, -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel, -.netPageRow.opened > .netCol > .netPageTitle { - background-image: url(twistyOpen.png); -} - -.twisty { - background-position: 4px 4px; -} \ No newline at end of file diff --git a/branches/firebug1.4/skin/xp/infoIcon.gif b/branches/firebug1.4/skin/xp/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.4/skin/xp/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/infoIcon.png b/branches/firebug1.4/skin/xp/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.4/skin/xp/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/loading_16.gif b/branches/firebug1.4/skin/xp/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.4/skin/xp/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/min.png b/branches/firebug1.4/skin/xp/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.4/skin/xp/min.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/minHover.png b/branches/firebug1.4/skin/xp/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.4/skin/xp/minHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/off.png b/branches/firebug1.4/skin/xp/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.4/skin/xp/off.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/offHover.png b/branches/firebug1.4/skin/xp/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.4/skin/xp/offHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/pixel_transparent.gif b/branches/firebug1.4/skin/xp/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.4/skin/xp/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/roundCorner.svg b/branches/firebug1.4/skin/xp/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.4/skin/xp/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.4/skin/xp/search.gif b/branches/firebug1.4/skin/xp/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.4/skin/xp/search.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/search.png b/branches/firebug1.4/skin/xp/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.4/skin/xp/search.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/shadow.gif b/branches/firebug1.4/skin/xp/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.4/skin/xp/shadow.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/shadow2.gif b/branches/firebug1.4/skin/xp/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.4/skin/xp/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/shadowAlpha.png b/branches/firebug1.4/skin/xp/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.4/skin/xp/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/sprite.png b/branches/firebug1.4/skin/xp/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.4/skin/xp/sprite.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabHoverLeft.png b/branches/firebug1.4/skin/xp/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.4/skin/xp/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabHoverMid.png b/branches/firebug1.4/skin/xp/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.4/skin/xp/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabHoverRight.png b/branches/firebug1.4/skin/xp/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.4/skin/xp/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabLeft.png b/branches/firebug1.4/skin/xp/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.4/skin/xp/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMenuCheckbox.png b/branches/firebug1.4/skin/xp/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMenuPin.png b/branches/firebug1.4/skin/xp/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMenuRadio.png b/branches/firebug1.4/skin/xp/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMenuTarget.png b/branches/firebug1.4/skin/xp/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMenuTargetHover.png b/branches/firebug1.4/skin/xp/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabMid.png b/branches/firebug1.4/skin/xp/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.4/skin/xp/tabMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tabRight.png b/branches/firebug1.4/skin/xp/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.4/skin/xp/tabRight.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/textEditorBorders.gif b/branches/firebug1.4/skin/xp/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.4/skin/xp/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/textEditorBorders.png b/branches/firebug1.4/skin/xp/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.4/skin/xp/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/textEditorCorners.gif b/branches/firebug1.4/skin/xp/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.4/skin/xp/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/textEditorCorners.png b/branches/firebug1.4/skin/xp/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.4/skin/xp/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/titlebarMid.png b/branches/firebug1.4/skin/xp/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.4/skin/xp/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/toolbarMid.png b/branches/firebug1.4/skin/xp/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.4/skin/xp/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tree_close.gif b/branches/firebug1.4/skin/xp/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.4/skin/xp/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/tree_open.gif b/branches/firebug1.4/skin/xp/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.4/skin/xp/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/twistyClosed.png b/branches/firebug1.4/skin/xp/twistyClosed.png deleted file mode 100644 index f80319b0..00000000 Binary files a/branches/firebug1.4/skin/xp/twistyClosed.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/twistyOpen.png b/branches/firebug1.4/skin/xp/twistyOpen.png deleted file mode 100644 index 86801243..00000000 Binary files a/branches/firebug1.4/skin/xp/twistyOpen.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/up.png b/branches/firebug1.4/skin/xp/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.4/skin/xp/up.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/upActive.png b/branches/firebug1.4/skin/xp/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.4/skin/xp/upActive.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/upHover.png b/branches/firebug1.4/skin/xp/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.4/skin/xp/upHover.png and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/warningIcon.gif b/branches/firebug1.4/skin/xp/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.4/skin/xp/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.4/skin/xp/warningIcon.png b/branches/firebug1.4/skin/xp/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.4/skin/xp/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.4/tests/content/css/3262/issue3262.html b/branches/firebug1.4/tests/content/css/3262/issue3262.html deleted file mode 100644 index e9709533..00000000 --- a/branches/firebug1.4/tests/content/css/3262/issue3262.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - Issue 3262: [Firebug lite] Specificity of grouped CSS Rules - - - - - - - -
-
-

Issue 3262: [Firebug lite] Specificity of grouped CSS Rules

-

-
-

-
    -
    test markup
    -
    -
    -
    inspect here
    -
    -
    -

    Steps to reproduce

    -
      -
    1. Load Firebug Lite
    2. -
    3. Inspect the element which says "inspect here" inside the content section - (it is a div with id "test")
    4. -
    5. Observe the Style Side Panel
    6. -
    -

    Expected Result

    -
      -
    • The first rule should be "#test"
    • -
    • The second rule should be ".green"
    • -
    • The third rule should be "div, acronym, address, dfn, ins, kbd, samp, strike, tt, var, fieldset"
    • -
    -
    -
    - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
    -
    - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/css/3326/external.css b/branches/firebug1.4/tests/content/css/3326/external.css deleted file mode 100644 index 19dc9782..00000000 --- a/branches/firebug1.4/tests/content/css/3326/external.css +++ /dev/null @@ -1 +0,0 @@ -html #content .green {border-color: green;} \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/css/3326/imported.css b/branches/firebug1.4/tests/content/css/3326/imported.css deleted file mode 100644 index f8c6046b..00000000 --- a/branches/firebug1.4/tests/content/css/3326/imported.css +++ /dev/null @@ -1,2 +0,0 @@ -/* rule in line 2 */ -#content .border {border-style: solid;} \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/css/3326/issue3326.html b/branches/firebug1.4/tests/content/css/3326/issue3326.html deleted file mode 100644 index d85b5489..00000000 --- a/branches/firebug1.4/tests/content/css/3326/issue3326.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - Issue 3326: [Firebug lite] CSS Rule Line Number - - - - - - - - -
    -
    -

    Issue 3326: [Firebug lite] CSS Rule Line Number

    -

    -
    -

    -
      -
      test markup
      -
      -
      -
      inspect here
      -
      -
      -

      - In this test case we're actually testing three things: -

      -
        -
      1. Firebug Lite's ability of accessing three kinds of stylesheets: - internal (via <style>), external (via <link>, but from the - same domain) and imported (via @import)
      2. -
      3. Firebug Lite's ability of parsing these kinds of stylesheets and - retrieving the correct line number for the rules
      4. -
      5. Firebug Lite's ability of reordering rules according to specificity
      6. -
      -

      Steps to reproduce

      -
        -
      1. Load Firebug Lite
      2. -
      3. Inspect the element which says "inspect here" inside the content section - (it is a div with id "test")
      4. -
      5. Observe the Style Side Panel
      6. -
      -

      Expected Result

      -
        -
      • The first rule should be "#test"
      • -
      • The second rule should be ".green"
      • -
      -
      -
      - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
      -
      - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/css/4776/issue4776.html b/branches/firebug1.4/tests/content/css/4776/issue4776.html deleted file mode 100644 index 30b2b708..00000000 --- a/branches/firebug1.4/tests/content/css/4776/issue4776.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - Issue 4776: [Firebug lite] CSS Media Types - - - - - - - -
      -
      -

      Issue 4776: [Firebug lite] CSS Media Types

      -

      -
      -

      -
        -
        test markup
        -
        -
        -
        inspect here
        -
        -
        -

        Steps to reproduce

        -
          -
        1. Load Firebug Lite
        2. -
        3. Inspect the element which says "inspect here" inside the content section - (it is a div with id "test")
        4. -
        5. Observe the Style Side Panel
        6. -
        -

        Expected Result

        -
          -
        • The first rule should be "#test"
        • -
        • The second rule should be ".green"
        • -
        -
        -
        - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
        -
        - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/css/4777/issue4777.html b/branches/firebug1.4/tests/content/css/4777/issue4777.html deleted file mode 100644 index 04d49e50..00000000 --- a/branches/firebug1.4/tests/content/css/4777/issue4777.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - Issue 4777: [Firebug lite] Specificity of CSS Rules - - - - - - - -
        -
        -

        Issue 4777: [Firebug lite] Specificity of CSS Rules

        -

        -
        -

        -
          -
          test markup
          -
          -
          -
          inspect here
          -
          -
          -

          Steps to reproduce

          -
            -
          1. Load Firebug Lite
          2. -
          3. Inspect the element which says "inspect here" inside the content section - (it is a div with id "test")
          4. -
          5. Observe the Style Side Panel
          6. -
          7. Note that the most specific rule is "div#test", the one with green color
          8. -
          -

          Expected Result

          -
            -
          • The first rule should be "div#test"
          • -
          • The first rule should be "#test"
          • -
          • The first rule should be "div"
          • -
          -
          -
          - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
          -
          - - diff --git a/branches/firebug1.4/tests/content/firebug/4239/IE9.js b/branches/firebug1.4/tests/content/firebug/4239/IE9.js deleted file mode 100644 index 84659a74..00000000 --- a/branches/firebug1.4/tests/content/firebug/4239/IE9.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - IE7/IE8/IE9.js - copyright 2004-2010, Dean Edwards - http://code.google.com/p/ie7-js/ - http://www.opensource.org/licenses/mit-license.php -*/ -;(function(N,p){var h=N.IE7={version:"2.1(beta4)",toString:bT("[IE7]")};h.compat=9;var t=h.appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1]-0;if(/ie7_off/.test(top.location.search)||t<5.5||t>=h.compat)return;var E=t<6,bj=bT(),bx=p.documentElement,B,x,cy="!",U=":link{ie7-link:link}:visited{ie7-link:visited}",cz=/^[\w\.]+[^:]*$/;function bk(c,a){if(cz.test(c))c=(a||"")+c;return c};function by(c,a){c=bk(c,a);return c.slice(0,c.lastIndexOf("/")+1)};var bU=p.scripts[p.scripts.length-1],cA=by(bU.src);try{var V=new ActiveXObject("Microsoft.XMLHTTP")}catch(ex){}var bl={};function cB(c,a){try{c=bk(c,a);if(!bl[c]){V.open("GET",c,false);V.send();if(V.status==0||V.status==200){bl[c]=V.responseText}}}catch(ex){}return bl[c]||""};var dA=Array.prototype.slice,dB=/%([1-9])/g,cC=/^\s\s*/,cD=/\s\s*$/,cE=/([\/()[\]{}|*+-.,^$?\\])/g,bV=/\bbase\b/,bW=["constructor","toString"],bm;function F(){};F.extend=function(g,f){bm=true;var d=new this;O(d,g);bm=false;var c=d.constructor;function a(){if(!bm)c.apply(this,arguments)};d.constructor=a;a.extend=arguments.callee;O(a,f);a.prototype=d;return a};F.prototype.extend=function(a){return O(this,a)};var P="#",Q="#",bc=".",bn="/",dC=/\\(\d+)/g,cF=/\[(\\.|[^\]\\])+\]|\\.|\(\?/g,cG=/\(/g,cH=/\$(\d+)/,cI=/^\$\d+$/,cJ=/(\[(\\.|[^\]\\])+\]|\\.|\(\?)|\(/g,cK=/^<#\w+>$/,cL=/<#(\w+)>/g,G=F.extend({constructor:function(a){this[bc]=[];this[Q]={};this.merge(a)},add:function(c,a){delete this[bn];if(c instanceof RegExp){c=c.source}if(!this[P+c])this[bc].push(String(c));return this[Q][P+c]=new G.Item(c,a,this)},compile:function(a){if(a||!this[bn]){this[bn]=new RegExp(this,this.ignoreCase?"gi":"g")}return this[bn]},merge:function(c){for(var a in c)this.add(a,c[a])},exec:function(o){var k=this,l=k[bc],m=k[Q],j,i=this.compile(true).exec(o);if(i){var g=0,f=1;while((j=m[P+l[g++]])){var d=f+j.length+1;if(i[f]){if(j.replacement===0){return k.exec(o)}else{var c=i.slice(f,d),a=c.length;while(--a)c[a]=c[a]||"";c[0]={match:c[0],item:j};return c}}f=d}}return null},parse:function(o){o+="";var k=this,l=k[bc],m=k[Q];return o.replace(this.compile(),function(j){var i=[],g,f=1,d=arguments.length;while(--d)i[d]=arguments[d]||"";while((g=m[P+l[d++]])){var c=f+g.length+1;if(i[f]){var a=g.replacement;switch(typeof a){case"function":return a.apply(k,i.slice(f,c));case"number":return i[f+a];default:return a}}f=c}return j})},toString:function(){var g=[],f=this[bc],d=this[Q],c;for(var a=0;c=d[P+f[a]];a++){g[a]=c.source}return"("+g.join(")|(")+")"}},{IGNORE:null,Item:F.extend({constructor:function(k,l,m){var j=k.indexOf("(")===-1?0:G.count(k),i=m.dictionary;if(i&&k.indexOf("<#")!==-1){if(cK.test(k)){var g=i[Q][P+k.slice(2,-1)];k=g.replacement;j=g._5}else{k=i.parse(k)}}if(typeof l=="number")l=String(l);else if(l==null)l=0;if(typeof l=="string"&&cH.test(l)){if(cI.test(l)){var f=l.slice(1)-0;if(f&&f<=j)l=f}else{var d=l,c;l=function(a){if(!c){c=new RegExp(k,"g"+(this.ignoreCase?"i":""))}return a.replace(c,d)}}}this.length=j;this.source=String(k);this.replacement=l}}),count:function(a){return(String(a).replace(cF,"").match(cG)||"").length}}),cM=G.extend({parse:function(f){var d=this[Q];return f.replace(cL,function(c,a){a=d[P+a];return a?a._6:c})},add:function(g,f){if(f instanceof RegExp){f=f.source}var d=f.replace(cJ,cN);if(f.indexOf("(")!==-1){var c=G.count(f)}if(f.indexOf("<#")!==-1){f=this.parse(f);d=this.parse(d)}var a=this.base(g,f);a._6=d;a._5=c||a.length;return a},toString:function(){return"(<#"+this[PATTERNS].join(">)|(<#")+">)"}});function cN(c,a){return a||"(?:"};function O(i,g){if(i&&g){var f=(typeof g=="function"?Function:Object).prototype;var d=bW.length,c;if(bm)while(c=bW[--d]){var a=g[c];if(a!=f[c]){if(bV.test(a)){bX(i,c,a)}else{i[c]=a}}}for(c in g)if(typeof f[c]=="undefined"){var a=g[c];if(i[c]&&typeof a=="function"&&bV.test(a)){bX(i,c,a)}else{i[c]=a}}}return i};function bX(i,g,f){var d=i[g];i[g]=function(){var c=this.base;this.base=d;var a=f.apply(this,arguments);this.base=c;return a}};function cO(f,d){if(!d)d=f;var c={};for(var a in f)c[a]=d[a];return c};function H(g){var f=arguments,d=new RegExp("%([1-"+arguments.length+"])","g");return String(g).replace(d,function(c,a){return a":"","\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/":"","@(namespace|import)[^;\\n]+[;\\n]":"","'(\\\\.|[^'\\\\])*'":cd,'"(\\\\.|[^"\\\\])*"':cd,"\\s+":" "});function cQ(a){return cc.parse(a).replace(bz,"$1")};function bd(a){return a.replace(cb,cR)};function cd(c){var a=W.length;W[a]=c.slice(1,-1).replace(bz,"$1").replace(cP,"\\'");return"'"+a+"'"};function cR(d,c){var a=W[c];if(a==null)return d;return"'"+W[c]+"'"};function bp(a){return a.indexOf("'")===0?W[a.slice(1,-1)]:a};var cS=new G({Width:"Height",width:"height",Left:"Top",left:"top",Right:"Bottom",right:"bottom",onX:"onY"});function ce(a){return cS.parse(a)};var cf=[];function bA(a){cT(a);y(N,"onresize",a)};function y(d,c,a){d.attachEvent(c,a);cf.push(arguments)};function cU(d,c,a){try{d.detachEvent(c,a)}catch(ex){}};y(N,"onunload",function(){var a;while(a=cf.pop()){cU(a[0],a[1],a[2])}});function be(d,c,a){if(!d.elements)d.elements={};if(a)d.elements[c.uniqueID]=c;else delete d.elements[c.uniqueID];return a};y(N,"onbeforeprint",function(){if(!h.CSS.print)new cg("print");h.CSS.print.recalc()});var ch=/^\d+(px)?$/i,X=/^\d+%$/,C=function(f,d){if(ch.test(d))return parseInt(d);var c=f.style.left,a=f.runtimeStyle.left;f.runtimeStyle.left=f.currentStyle.left;f.style.left=d||0;d=f.style.pixelLeft;f.style.left=c;f.runtimeStyle.left=a;return d},bB="ie7-",ci=F.extend({constructor:function(){this.fixes=[];this.recalcs=[]},init:bj}),bC=[];function cT(a){bC.push(a)};h.recalc=function(){h.HTML.recalc();h.CSS.recalc();for(var a=0;a'@'",cm="if("+cl+"){",cn="(e.nodeName==='FORM'?IE7._0(e,'id'):e.id)",cV=/a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i,cW=/(.*)(:first-(line|letter))/,cX=/\s/,cY=/((?:\\.|[^{\\])+)\{((?:\\.|[^}\\])+)\}/g,cZ=/(?:\\.|[^,\\])+/g,I=p.styleSheets,bF=[];h.CSS=new(ci.extend({parser:new ca,screen:"",print:"",styles:[],rules:[],pseudoClasses:t<7?"first\\-child":"",dynamicPseudoClasses:{toString:function(){var c=[];for(var a in this)c.push(a);return c.join("|")}},init:function(){var j="^\x01$",i="\\[class=?[^\\]]*\\]",g=[];if(this.pseudoClasses)g.push(this.pseudoClasses);var f=this.dynamicPseudoClasses.toString();if(f)g.push(f);g=g.join("|");var d=t<7?["[>+~\\[(]|([:.])[\\w-]+\\1"]:[i];if(g)d.push(":("+g+")");this.UNKNOWN=new RegExp(d.join("|")||j,"i");var c=t<7?["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"]:[i],a=c.concat();if(g)a.push(":("+g+")");u.COMPLEX=new RegExp(a.join("|")||j,"ig");if(this.pseudoClasses)c.push(":("+this.pseudoClasses+")");bf.COMPLEX=new RegExp(c.join("|")||j,"i");f="not\\(:"+f.split("|").join("\\)|not\\(:")+"\\)|"+f;bf.MATCH=new RegExp(f?"(.*?):("+f+")(.*)":j,"i");this.createStyleSheet();this.refresh()},addEventHandler:function(){y.apply(null,arguments)},addFix:function(c,a){this.parser.add(c,a)},addRecalc:function(i,g,f,d){i=i.source||i;g=new RegExp("([{;\\s])"+i+"\\s*:\\s*"+g+"[^;}]*");var c=this.recalcs.length;if(typeof d=="string")d=i+":"+d;this.addFix(g,function(a){if(typeof d=="function")d=d(a);return(d?d:a)+";ie7-"+a.slice(1)+";ie7_recalc"+c+":1"});this.recalcs.push(arguments);return c},apply:function(){this.getInlineCSS();new cg("screen");this.trash()},createStyleSheet:function(){p.getElementsByTagName("head")[0].appendChild(p.createElement("style"));this.styleSheet=I[I.length-1];this.styleSheet.ie7=true;this.styleSheet.owningElement.ie7=true;this.styleSheet.cssText=U},getInlineCSS:function(){var d=p.getElementsByTagName("style"),c;for(var a=d.length-1;c=d[a];a--){if(!c.disabled&&!c.ie7){c._7=c.innerHTML}}},getText:function(d,c){try{var a=d.cssText}catch(e){a=""}if(V)a=cB(d.href,c)||a;return a},recalc:function(){this.screen.recalc();var q=/ie7_recalc\d+/g,n=U.match(/[{,]/g).length,o=this.styleSheet.rules,k,l,m,j,i,g,f,d,c;for(g=n;k=o[g];g++){var a=k.style.cssText;if(l=a.match(q)){j=J(k.selectorText);if(j.length)for(f=0;f*","position:relative")}l.push(g.join("\n"))}}this.cssText=l.join("\n");this.rules=h.CSS.rules.slice(k)},recalc:function(){var c,a;for(a=0;(c=this.rules[a]);a++)c.recalc()},toString:function(){return this.declarations+"@media "+this.media+"{"+this.cssText+"}"}}),R,u=h.Rule=F.extend({constructor:function(d,c){this.id=h.CSS.rules.length;this.className=u.PREFIX+this.id;var a=d.match(cW);this.selector=(a?a[1]:d)||"*";this.selectorText=this.parse(this.selector)+(a?a[2]:"");this.cssText=c;this.MATCH=new RegExp("\\s"+this.className+"(\\s|$)","g");h.CSS.rules.push(this);this.init()},init:bj,add:function(a){a.className+=" "+this.className},recalc:function(){var c=J(this.selector);for(var a=0;a0&&u.CLASS.test(f)){f=f.replace(u.CLASS,"");c--}while(d>0&&u.TAG.test(f)){f=f.replace(u.TAG,"$1*");d--}f+="."+this.className;c=Math.min(c,2);d=Math.min(d,2);var a=-10*c-d;if(a>0){f=f+","+u.MAP[a]+" "+f}return f},remove:function(a){a.className=a.className.replace(this.MATCH,"$1")},toString:function(){return H("%1 {%2}",this.selectorText,this.cssText)}},{CHILD:/>/g,CLASS:/\.[\w-]+/,CLASSES:/[.:\[]/g,MULTI:/(\.[\w-]+)+/g,PREFIX:"ie7_class",TAG:/^\w+|([\s>+~])\w+/,TAGS:/^\w|[\s>+~]\w/g,MAP:{"1":"html","2":"html body","10":".ie7_html","11":"html.ie7_html","12":"html.ie7_html body","20":".ie7_html .ie7_body","21":"html.ie7_html .ie7_body","22":"html.ie7_html body.ie7_body"}}),bf=u.extend({constructor:function(g,f,d,c,a){this.negated=d.indexOf("not")===0;if(this.negated)d=d.slice(5,-1);this.attach=f||"*";this.dynamicPseudoClass=h.CSS.dynamicPseudoClasses[d];this.target=c;this.base(g,a)},recalc:function(){var f=J(this.attach),d;for(var c=0;d=f[c];c++){var a=this.target?J(this.target,d):[d];if(a.length)this.dynamicPseudoClass.apply(d,a,this)}}}),M=F.extend({constructor:function(c,a){this.name=c;this.apply=a;this.instances={};h.CSS.dynamicPseudoClasses[c]=this},register:function(g,f){var d=g[2];if(!f&&d.negated){this.unregister(g,true)}else{g.id=d.id+g[0].uniqueID;if(!this.instances[g.id]){var c=g[1],a;for(a=0;a":function(g,f,d,c){var a="IE7._0(e,'"+f+"')";c=bp(c);if(d.length>1){if(!c||d==="~="&&cX.test(c)){return"false&&"}a="("+a+"||'')"}return"("+H(co[d],a,c)+")&&"},"<#id>":cn+"==='$1'&&","<#class>":"e.className&&(' '+e.className+' ').indexOf(' $1 ')!==-1&&",":first-child":"!"+ck+"&&",":link":"e.currentStyle['ie7-link']=='link'&&",":visited":"e.currentStyle['ie7-link']=='visited'&&"};h.HTML=new(ci.extend({fixed:{},init:bj,addFix:function(){this.fixes.push(arguments)},apply:function(){for(var f=0;f=n(d,d.currentStyle.maxWidth)){d.runtimeStyle.width=d.currentStyle.maxWidth}else{d.runtimeStyle.width=d.runtimeStyle.fixedWidth}};function m(a){if(be(m,a,/^(fixed|absolute)$/.test(a.currentStyle.position)&&bD(a,"left")!=="auto"&&bD(a,"right")!=="auto"&&L.test(bD(a,"width")))){j(a);v.boxSizing(a)}};v.fixRight=m;function j(d){var c=q(d,d.runtimeStyle._3||d.currentStyle.left),a=s(d)-q(d,d.currentStyle.right)-c-k(d,"margin");if(parseInt(d.runtimeStyle.width)===a)return;d.runtimeStyle.width="";if(bq(d)||r||d.offsetWidth=7)return;h.CSS.addRecalc("position","fixed",o,"absolute");h.CSS.addRecalc("background(-attachment)?","[^};]*fixed",q);var z=E?"body":"documentElement";function w(){if(B.currentStyle.backgroundAttachment!=="fixed"){if(B.currentStyle.backgroundImage==="none"){B.runtimeStyle.backgroundRepeat="no-repeat";B.runtimeStyle.backgroundImage="url("+bG+")"}B.runtimeStyle.backgroundAttachment="fixed"}w=bj};var r=cj("img");function A(a){return a?bq(a)||A(a.parentElement):false};function s(d,c,a){setTimeout("document.all."+d.uniqueID+".runtimeStyle.setExpression('"+c+"','"+a+"')",0)};function q(a){if(be(q,a,a.currentStyle.backgroundAttachment==="fixed"&&!a.contains(B))){w();j.bgLeft(a);j.bgTop(a);n(a)}};function n(c){r.src=c.currentStyle.backgroundImage.slice(5,-2);var a=c.canHaveChildren?c:c.parentElement;a.appendChild(r);j.setOffsetLeft(c);j.setOffsetTop(c);a.removeChild(r)};function o(a){if(be(o,a,bq(a))){Y(a,"position","absolute");Y(a,"left",a.currentStyle.left);Y(a,"top",a.currentStyle.top);w();h.Layout.fixRight(a);k(a)}};function k(d,c){p.body.getBoundingClientRect();j.positionTop(d,c);j.positionLeft(d,c,true);if(!d.runtimeStyle.autoLeft&&d.currentStyle.marginLeft==="auto"&&d.currentStyle.right!=="auto"){var a=x.clientWidth-j.getPixelWidth(d,d.currentStyle.right)-j.getPixelWidth(d,d.runtimeStyle._3)-d.clientWidth;if(d.currentStyle.marginRight==="auto")a=parseInt(a/2);if(A(d.offsetParent))d.runtimeStyle.pixelLeft+=a;else d.runtimeStyle.shiftLeft=a}if(!d.runtimeStyle.fixedWidth)j.clipWidth(d);if(!d.runtimeStyle.fixedHeight)j.clipHeight(d)};function l(){var c=q.elements;for(var a in c)n(c[a]);c=o.elements;for(a in c){k(c[a],true);k(c[a],true)}m=0};var m;bA(function(){if(!m)m=setTimeout(l,100)});var j={},i=function(g){g.bgLeft=function(a){a.style.backgroundPositionX=a.currentStyle.backgroundPositionX;if(!A(a)){s(a,"backgroundPositionX","(parseInt(runtimeStyle.offsetLeft)+document."+z+".scrollLeft)||0")}};g.setOffsetLeft=function(c){var a=A(c)?"backgroundPositionX":"offsetLeft";c.runtimeStyle[a]=g.getOffsetLeft(c,c.style.backgroundPositionX)-c.getBoundingClientRect().left-c.clientLeft+2};g.getOffsetLeft=function(c,a){switch(a){case"left":case"top":return 0;case"right":case"bottom":return x.clientWidth-r.offsetWidth;case"center":return(x.clientWidth-r.offsetWidth)/2;default:if(X.test(a)){return parseInt((x.clientWidth-r.offsetWidth)*parseFloat(a)/100)}r.style.left=a;return r.offsetLeft}};g.clipWidth=function(f){var d=f.runtimeStyle.fixWidth;f.runtimeStyle.borderRightWidth="";f.runtimeStyle.width=d?g.getPixelWidth(f,d)+"px":"";if(f.currentStyle.width!=="auto"){var c=f.getBoundingClientRect();var a=f.offsetWidth-x.clientWidth+c.left-2;if(a>=0){f.runtimeStyle.borderRightWidth="0px";a=Math.max(C(f,f.currentStyle.width)-a,0);Y(f,"width",a);return a}}};g.positionLeft=function(c,a){if(!a&&X.test(c.currentStyle.width)){c.runtimeStyle.fixWidth=c.currentStyle.width}if(c.runtimeStyle.fixWidth){c.runtimeStyle.width=g.getPixelWidth(c,c.runtimeStyle.fixWidth)}c.runtimeStyle.shiftLeft=0;c.runtimeStyle._3=c.currentStyle.left;c.runtimeStyle.autoLeft=c.currentStyle.right!=="auto"&&c.currentStyle.left==="auto";c.runtimeStyle.left="";c.runtimeStyle.screenLeft=g.getScreenLeft(c);c.runtimeStyle.pixelLeft=c.runtimeStyle.screenLeft;if(!a&&!A(c.offsetParent)){s(c,"pixelLeft","runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document."+z+".scrollLeft")}};g.getScreenLeft=function(d){var c=d.offsetLeft,a=1;if(d.runtimeStyle.autoLeft){c=x.clientWidth-d.offsetWidth-g.getPixelWidth(d,d.currentStyle.right)}if(d.currentStyle.marginLeft!=="auto"){c-=g.getPixelWidth(d,d.currentStyle.marginLeft)}while(d=d.offsetParent){if(d.currentStyle.position!=="static")a=-1;c+=d.offsetLeft*a}return c};g.getPixelWidth=function(c,a){return X.test(a)?parseInt(parseFloat(a)/100*x.clientWidth):C(c,a)}};eval("var _9="+ce(i));i(j);_9(j)})();if(t<7){var bJ={backgroundColor:"transparent",backgroundImage:"none",backgroundPositionX:null,backgroundPositionY:null,backgroundRepeat:null,borderTopWidth:0,borderRightWidth:0,borderBottomWidth:0,borderLeftStyle:"none",borderTopStyle:"none",borderRightStyle:"none",borderBottomStyle:"none",borderLeftWidth:0,borderLeftColor:"#000",borderTopColor:"#000",borderRightColor:"#000",borderBottomColor:"#000",height:null,marginTop:0,marginBottom:0,marginRight:0,marginLeft:0,width:"100%"};h.CSS.addRecalc("overflow","visible",function(d){if(d.currentStyle.position==="absolute")return;if(d.parentNode.ie7_wrapped)return;if(h.Layout&&d.currentStyle["max-height"]!=="auto"){h.Layout.maxHeight(d)}if(d.currentStyle.marginLeft==="auto")d.style.marginLeft=0;if(d.currentStyle.marginRight==="auto")d.style.marginRight=0;var c=p.createElement(cy);c.ie7_wrapped=d;for(var a in bJ){c.style[a]=d.currentStyle[a];if(bJ[a]!=null){d.runtimeStyle[a]=bJ[a]}}c.style.display="block";c.style.position="relative";d.runtimeStyle.position="absolute";d.parentNode.insertBefore(c,d);c.appendChild(d)})}function dc(){var s="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var q=0;q%4",MATCH:/(.*):(before|after).*/,count:0});h._getLang=function(c){var a="";while(c&&c.nodeType===1){a=c.lang||c.getAttribute("lang")||"";if(a)break;c=c.parentNode}return a};T=O(T,{":lang\\(([^)]+)\\)":"((ii=IE7._getLang(e))==='$1'||ii.indexOf('$1-')===0)&&"})}var dj=/^(submit|reset|button)$/;h.HTML.addRecalc("button,input",function(c){if(c.nodeName==="BUTTON"){var a=c.outerHTML.match(/ value="([^"]*)"/i);c.runtimeStyle.value=a?a[1]:""}if(c.type==="submit"){y(c,"onclick",function(){c.runtimeStyle.clicked=true;setTimeout("document.all."+c.uniqueID+".runtimeStyle.clicked=false",1)})}});h.HTML.addRecalc("form",function(d){y(d,"onsubmit",function(){for(var c,a=0;c=d[a];a++){if(dj.test(c.type)&&!c.disabled&&!c.runtimeStyle.clicked){c.disabled=true;setTimeout("document.all."+c.uniqueID+".disabled=false",1)}else if(c.nodeName==="BUTTON"&&c.type==="submit"){setTimeout("document.all."+c.uniqueID+".value='"+c.value+"'",1);c.value=c.runtimeStyle.value}}})});h.HTML.addRecalc("img",function(a){if(a.alt&&!a.title)a.title=""});if(t<8){h.CSS.addRecalc("border-spacing",bg,function(a){if(a.currentStyle.borderCollapse!=="collapse"){a.cellSpacing=C(a,a.currentStyle["ie7-border-spacing"].split(" ")[0])}});h.CSS.addRecalc("box-sizing","content-box",h.Layout.boxSizing);h.CSS.addRecalc("box-sizing","border-box",h.Layout.borderBox)}if(t<8){var dk=/^image/i;h.HTML.addRecalc("object",function(a){if(dk.test(a.type)){a.body.style.cssText="margin:0;padding:0;border:none;overflow:hidden";return a}})}var bM="!IE7._a(e,'next')&&",cs=bM.replace("next","previous");if(h.CSS.pseudoClasses)h.CSS.pseudoClasses+="|";h.CSS.pseudoClasses+="(?:first|last|only)\\-(?:child|of\\-type)|empty|root|target|"+("not|nth\\-child|nth\\-last\\-child|nth\\-of\\-type|nth\\-last\\-of\\-type".split("|").join(bK+"|")+bK);var bN=new M("checked",function(c){if(typeof c.checked!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="checked"){if(c.checked===true)bN.register(a);else bN.unregister(a)}});if(c.checked===true)bN.register(a)}),bO=new M("enabled",function(c){if(typeof c.disabled!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="disabled"){if(c.disabled===false)bO.register(a);else bO.unregister(a)}});if(c.disabled===false)bO.register(a)}),bP=new M("disabled",function(c){if(typeof c.disabled!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="disabled"){if(c.disabled===true)bP.register(a);else bP.unregister(a)}});if(c.disabled===true)bP.register(a)}),bQ=new M("indeterminate",function(c){if(typeof c.indeterminate!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="indeterminate"){if(c.indeterminate===true)bQ.register(a);else bQ.unregister(a)}});h.CSS.addEventHandler(c,"onclick",function(){bQ.unregister(a)})}),bR=new M("target",function(c){var a=arguments;if(!c.tabIndex)c.tabIndex=0;h.CSS.addEventHandler(p,"onpropertychange",function(){if(event.propertyName==="activeElement"){if(c.id&&c.id===location.hash.slice(1))bR.register(a);else bR.unregister(a)}});if(c.id&&c.id===location.hash.slice(1))bR.register(a)}),ct=1,bu={_4:1};h._b=function(l,m,j){var i=l.parentNode;if(!i||i.nodeType!==1)return NaN;var g=j?l.nodeName:"";if(g==="TR"&&l.sectionRowIndex>=0){var c=l.sectionRowIndex;return m?l.parentNode.rows.length-c+1:c}if((g==="TD"||g==="TH")&&l.cellIndex>=0){c=l.cellIndex;return m?l.parentNode.cells.length-c+1:c}if(bu._4!==ct){bu={_4:ct}}var f=(i.uniqueID)+"-"+g,d=bu[f];if(!d){d={};var c=0,a=i.firstChild;while(a){if(j?a.nodeName===g:a.nodeName>"@"){d[a.uniqueID]=++c}a=a.nextSibling}d.length=c;bu[f]=d}c=d[l.uniqueID];return m?d.length-c+1:c};h._c=function(a){a=a.firstChild;while(a){if(a.nodeType===3||a.nodeName>"@")return false;a=a.nextSibling}return true};h._a=function(d,c){var a=d.nodeName;c+="Sibling";do{d=d[c];if(d&&d.nodeName===a)break}while(d);return d};var dl={"+":1,"-":-1},dm=/ /g;T=O(O({":nth(-last)?-(?:child|(of-type))\\((<#nth_arg>)\\)(<#filter>)?":function(m,j,i,g,f){g=g.replace(dm,"");var d="IE7._b(e,"+!!j+","+!!i+")";if(g==="even")g="2n";else if(g==="odd")g="2n+1";else if(!isNaN(g))g="0n"+~~g;g=g.split("n");var c=~~(dl[g[0]]||g[0]||1),b=~~g[1];if(c===0){var a=d+"==="+b}else{a="((ii="+d+")-("+b+"))%"+c+"===0&&ii"+(c<0?"<":">")+"="+b}return this.parse(f)+a+"&&"},"<#negation>":function(c,a){if(/:not/i.test(a))bv();if(/^[#.:\[]/.test(a)){a="*"+a}return"!("+D.parse(a).slice(3,-2)+")&&"}},T),{":checked":"e.checked===true&&",":disabled":"e.disabled===true&&",":enabled":"e.disabled===false&&",":last-child":"!"+bE+"&&",":only-child":"!"+ck+"&&!"+bE+"&&",":first-of-type":cs,":last-of-type":bM,":only-of-type":cs+bM,":empty":"IE7._c(e)&&",":root":"e==R&&",":target":"H&&"+cn+"===H&&"});var dn="article,aside,audio,canvas,details,figcaption,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,summary,time,video".split(",");for(var cu=0,cv;cv=dn[cu];cu++)p.createElement(cv);U+="datalist{display:none}details{padding-left:40px;display:block;margin:1em 0}meter,progress{vertical-align:-0.2em;width:5em;height:1em;display:inline-block}progress{width:10em;}article,aside,figcaption,footer,header,hgroup,summary,section,nav{display:block;margin:1em 0}figure{margin:1em 40px;display:block}mark{background:yellow}";h.CSS.addFix(/\bopacity\s*:\s*([\d.]+)/,function(c,a){return"zoom:1;filter:Alpha(opacity="+((a*100)||1)+")"});var D,J=(function(){var o0=/^[>+~]/,bw=false;function dp(f,d,c){f=bZ(f);if(!d)d=p;var a=d;bw=o0.test(f);if(bw){d=d.parentNode;f="*"+f}try{return n.create(f,bw)(d,c?null:[],a)}catch(ex){return c?null:[]}};var dq=/^(\\.|[' >+~#.\[\]:*(),\w-\^|$=]|[^\x00-\xa0])+$/,dE=/^(href|src)$/,cw={"class":"className","for":"htmlFor"},dF=/\sie7_\w+/g,dr=/^(action|cite|codebase|data|dynsrc|href|longdesc|lowsrc|src|usemap|url)$/i;h._0=function(f,d){if(f.getAttributeNode){var c=f.getAttributeNode(d)}d=cw[d.toLowerCase()]||d;if(!c)c=f.attributes[d];var a=c&&c.specified;if(f[d]&&typeof f[d]=="boolean")return d.toLowerCase();if((a&&dr.test(d))||(!c&&E)||d==="value"||d==="type"){return f.getAttribute(d,2)}if(d==="style")return f.style.cssText.toLowerCase()||null;return a?String(c.nodeValue):null};var cx="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";O(cw,cO(cx.toLowerCase().split(","),cx.split(",")));h._1=function(c,a){a+="Sibling";do{c=c[a];if(c&&c.nodeName>"@")break}while(c);return c};var ds=/(^|[, >+~])([#.:\[])/g,dG=/\)\{/g,dt=/,/,dH=/^['"]/,du=/\\([\da-f]{2,2})/gi,dI=/last/i;h._d=function(f,d){var c=f.all[d]||null;if(!c||(c.nodeType&&h._0(c,"id")===d))return c;for(var a=0;a+~]/,operator:/[\^~|$*]?=/,nth_arg:/[+-]?\d+|[+-]?\d*n(?:\s*[+-]\s*\d+)?|even|odd/,tag:/\*|<#ident>/,id:/#(<#ident>)/,'class':/\.(<#ident>)/,pseudo:/\:([\w-]+)(?:\(([^)]+)\))?/,attr:/\[(<#ident>)(?:(<#operator>)((?:\\.|[^\[\]#.:])+))?\]/,negation:/:not\((<#tag>|<#id>|<#class>|<#attr>|<#pseudo>)\)/,sequence:/(\\.|[~*]=|\+\d|\+?\d*n\s*\+\s*\d|[^\s>+~,\*])+/,filter:/[#.:\[]<#sequence>/,selector:/[^>+~](\\.|[^,])*?/,grammar:/^(<#selector>)((,<#selector>)*)$/}),ignoreCase:true}),dv=new bb({"\\\\.|[~*]\\s+=|\\+\\s+\\d":G.IGNORE,"\\[\\s+":"[","\\(\\s+":"(","\\s+\\)":")","\\s+\\]":"]","\\s*([,>+~]|<#operator>)\\s*":"$1","\\s+$":"","\\s+":" "});function dw(a){a=dv.parse(a.replace(du,"\\x$1")).replace(bz,"$1").replace(ds,"$1*$2");if(!dq.test(a))bv();return a};function dJ(a){return a.replace(cb,dx)};function dx(c,a){return W[a]};var dy=/\{/g,dz=/\\{/g;function bS(a){return Array((a.replace(dz,"").match(dy)||"").length+1).join("}")};T=new bb(T);var v=/:target/i,Z=/:root/i;function S(c){var a="";if(Z.test(c))a+=",R=d.documentElement";if(v.test(c))a+=",H=d.location;H=H&&H.hash.replace('#','')";if(a||c.indexOf("#")!==-1){a=",t=c.nodeType,d=t===9?c:c.ownerDocument||(c.document||c).parentWindow.document"+a}return"var ii"+a+";"};var ba={" ":";while(e!=s&&(e=e.parentNode)&&e.nodeType===1){",">":".parentElement;if(e){","+":";while((e=e.previousSibling)&&!("+cl+"))continue;if(e){","~":";while((e=e.previousSibling)){"+cm},K=/\be\b/g;D=new bb({"(?:(<#selector>)(<#combinator>))?(<#tag>)(<#filter>)?$":function(j,i,g,f,d){var c="";if(f!=="*"){var a=f.toUpperCase();c+="if(e.nodeName==='"+a+(a===f?"":"'||e.nodeName==='"+f)+"'){"}if(d){c+="if("+T.parse(d).slice(0,-2)+"){"}c=c.replace(K,"e"+this.index);if(g){c+="var e=e"+(this.index++)+ba[g];c=c.replace(K,"e"+this.index)}if(i){c+=this.parse(i)}return c}});var L="e0=IE7._d(d,'%1');if(e0){",z="var n=c.getElementsByTagName('%1');",w="if(r==null)return e0;r[k++]=e0;",r=1,A=new bb({"^((?:<#selector>)?(?:<#combinator>))(<#tag>)(<#filter>)?$":true}),s={},q=new bb({"^(<#tag>)#(<#ident>)(<#filter>)?( [^,]*)?$":function(j,i,g,f,d){var c=H(L,g),a="}";if(f){c+=D.parse(i+f);a=bS(c)}if(d){c+="s=c=e0;"+n.parse("*"+d)}else{c+=w}return c+a},"^([^#,]+)#(<#ident>)(<#filter>)?$":function(g,f,d,c){var a=H(L,d);if(f==="*"){a+=w}else{a+=D.parse(f+c)+w+"break"}return a+bS(a)},"^.*$":""}),n=new bb({"<#grammar>":function(k,l,m){if(!this.groups)this.groups=[];var j=A.exec(" "+l);if(!j)bv();this.groups.push(j.slice(1));if(m){return this.parse(m.replace(dt,""))}var i=this.groups,g=i[0][r];for(var c=1;j=i[c];c++){if(g!==j[r]){g="*";break}}var f="",d=w+"continue filtering;";for(var c=0;j=i[c];c++){D.index=0;if(g!=="*")j[r]="*";j=j.join("");if(j===" *"){f=d;break}else{j=D.parse(j);if(bw)j+="if(e"+D.index+"==s){";f+=j+d+bS(j)}}var a=g==="*";return(a?"var n=c.all;":H(z,g))+"filtering:while((e0=n[i++]))"+(a?cm.replace(K,"e0"):"{")+f+"}"},"^.*$":bv}),o=/\&\&(e\d+)\.nodeType===1(\)\{\s*if\(\1\.nodeName=)/g;n.create=function(d){if(!s[d]){d=dw(d);this.groups=null;D.index=0;var c=this.parse(d);this.groups=null;D.index=0;if(d.indexOf("#")!==-1){var a=q.parse(d);if(a){c="if(t===1||t===11|!c.getElementById){"+c+"}else{"+a+"}"}}c=c.replace(o,"$2");c=S(d)+bd(c);s[d]=new Function("return function(c,r,s){var i=0,k=0,e0;"+c+"return r}")()}return s[d]};return dp})();function bv(){throw new SyntaxError("Invalid selector.");};h.loaded=true;(function(){try{if(!p.body)throw"continue";bx.doScroll("left")}catch(ex){setTimeout(arguments.callee,1);return}try{eval(bU.innerHTML)}catch(ex){}if(typeof IE7_PNG_SUFFIX=="object"){bh=IE7_PNG_SUFFIX}else{bh=new RegExp(bY(N.IE7_PNG_SUFFIX||"-trans.png")+"(\\?.*)?$","i")}B=p.body;x=E?B:bx;B.className+=" ie7_body";bx.className+=" ie7_html";if(E)dc();h.CSS.init();h.HTML.init();h.HTML.apply();h.CSS.apply();h.recalc()})()})(this,document); diff --git a/branches/firebug1.4/tests/content/firebug/4239/blank.gif b/branches/firebug1.4/tests/content/firebug/4239/blank.gif deleted file mode 100644 index a4fe2e62..00000000 Binary files a/branches/firebug1.4/tests/content/firebug/4239/blank.gif and /dev/null differ diff --git a/branches/firebug1.4/tests/content/firebug/4239/issue4239.html b/branches/firebug1.4/tests/content/firebug/4239/issue4239.html deleted file mode 100644 index aaa1eea5..00000000 --- a/branches/firebug1.4/tests/content/firebug/4239/issue4239.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - Issue 4239: [Firebug Lite] Using ie7-js library crashes IE8 - - - - - - - -
          -
          -

          Issue 4239: [Firebug Lite] Using ie7-js library crashes IE8

          -

          -
          -

          -
            -
            test markup
            -
            -
            - -

            Steps to reproduce

            -
              -
            1. Load Firebug Lite
            2. -
            3. Load IE9.js
            4. -
            -

            Expected Result

            -
              -
            • The browser should not crash
            • -
            -
            -
            - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
            -
            - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/includes/jquery-1.6.2.min.js b/branches/firebug1.4/tests/content/includes/jquery-1.6.2.min.js deleted file mode 100644 index 48590ecb..00000000 --- a/branches/firebug1.4/tests/content/includes/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
            a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
            ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
            t
            ",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

            ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
            ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
            ","
            "],thead:[1,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],col:[2,"","
            "],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
            ","
            "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
            ").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
            ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/template/issueXXXX.html b/branches/firebug1.4/tests/content/template/issueXXXX.html deleted file mode 100644 index 2acfdcee..00000000 --- a/branches/firebug1.4/tests/content/template/issueXXXX.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - Issue xxxx: Issue summary - - - - - - -
            -
            -

            Issue xxxx: Issue summary

            -

            -
            -

            -
              -
              test markup
              -
              -
              - content - -
              -
              - -

              Steps to reproduce

              -
                -
              1. Step 1
              2. -
              3. Step 2
              4. -
              5. Step 3
              6. -
              -

              Expected Result

              -
                -
              • Point 1
              • -
              • Point 2
              • -
              • Point 3
              • -
              -
              -
              - - <author name>, <email address> -
              -
              - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/template/testcase.css b/branches/firebug1.4/tests/content/template/testcase.css deleted file mode 100644 index eca9e7e2..00000000 --- a/branches/firebug1.4/tests/content/template/testcase.css +++ /dev/null @@ -1,180 +0,0 @@ -@font-face { - font-family: 'TitilliumMaps'; - src: url('http://getfirebug.com/fonts/TitilliumMaps26L001.eot'); - src: local('☺'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.woff') format('woff'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.ttf') format('truetype'); - font-weight: bold; -} - -* { - position: relative; -} - -html, body { - width: 100%; - min-height: 100%; - min-height: calc(100% - 30px); - min-height: -moz-calc(100% - 30px); - margin: 0; - padding-bottom: 30px; -} - -body { - background-color: #EAF1FB; - background: #FFFFFF linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -moz-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -webkit-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -o-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -ms-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 0.9em; -} - -#main { - margin: auto; - width: 870px; -} - -#main { - top: 20px; - border-radius: 8px; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -o-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -ms-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - background-color: rgba(255, 255, 255, 0.6); - padding: 15px; -} - -section#content { - background-image: linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -moz-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -webkit-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -o-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -ms-linear-gradient(bottom, #E6E6E6, #F0F0F0); - border-radius: 8px; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - margin: 10px 0; - padding: 10px; -} - -section#output { - background-image: linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -moz-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -webkit-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -o-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -ms-linear-gradient(bottom, #F5F5F5, #FFFFFF); - height: 50px; - margin: 10px 0; - padding: 10px; -} - -footer { - margin-top: 10px; - text-align: right; - font-size: 75%; - font-style: italic; -} - -h1, h2 { - font-family: /* TitilliumMaps, */ "Trebuchet MS", Helvetica, sans-serif; - font-size: 130%; - font-weight: bold; -} - -h1 { -} - -h2 { - margin: 0.5em 0; - border-bottom: 2px solid #9ACBE4; -} - -h3 { - margin: 0.3em 0 0.2em 0; - font-size: 105%; -} - -p, ol, ul { - margin: 0.2em 0; -} - -p { - padding-left: 20px; -} - -section#description p { - font-style: italic; -} - -ul { - list-style-type: square; - list-style-image: url(data:image/gif;base64,R0lGODlhBQAIAPcAAGOMnGOMnP///2OMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAIALAAAAAAFAAgABwgSAAEIHEiwoEGC/xImFMCwocOAADs=); -} - -li.ok, li span.ok { - color: #00B400; -} - -li.error, li span.error { - color: #DC0000; -} - -code { - color: #008C00; -} - -code.key { - color: #0000FF; -} - -input[type="text"], button { - border: 1px solid #AAAAAA; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -o-border-radius: 5px; - padding: 3px 5px; -} - -input[type="button"], button { - background-image: linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -moz-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -webkit-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -o-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -ms-linear-gradient(bottom, #A0A0A0, #C8C8C8); - box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -moz-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -webkit-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -o-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -ms-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - text-shadow: 1px 1px rgba(255, 255, 255, 0.3); -} - -input[type="button"]:hover, button:hover { - background-image: linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -moz-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -webkit-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -o-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -ms-linear-gradient(bottom, #B4B4B4, #DCDCDC); -} - -input[type="button"]:active, button:active { - background-image: linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -moz-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -webkit-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -o-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -ms-linear-gradient(top, #8C8C8C, #A0A0A0); - box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -moz-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -webkit-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -o-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -ms-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; -} \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2756/issue2756.html b/branches/firebug1.4/tests/content/xhr/2756/issue2756.html deleted file mode 100644 index c3979920..00000000 --- a/branches/firebug1.4/tests/content/xhr/2756/issue2756.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - Issue 2756: [Firebug Lite] Local XHR request not listed in console - - - - - - -
              -
              -

              Issue 2756: [Firebug Lite] Local XHR request not listed in console

              -

              -
              -

              -
                -
                test markup
                -
                -
                -

                Steps to reproduce

                -
                  -
                1. Load Firebug Lite
                2. -
                3. Make a Synchronous XHR GET "test.txt"
                4. -
                5. Make an Asynchronous XHR GET "test.txt"
                6. -
                -

                Expected Result

                -
                  -
                • There should be 2 entries in the Console Panel
                • -
                • The responseText should be "OK" for both XHR requests
                • -
                -
                -
                - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                -
                - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2756/test.txt b/branches/firebug1.4/tests/content/xhr/2756/test.txt deleted file mode 100644 index a0aba931..00000000 --- a/branches/firebug1.4/tests/content/xhr/2756/test.txt +++ /dev/null @@ -1 +0,0 @@ -OK \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2840/issue2840.html b/branches/firebug1.4/tests/content/xhr/2840/issue2840.html deleted file mode 100644 index ca76fab0..00000000 --- a/branches/firebug1.4/tests/content/xhr/2840/issue2840.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - Issue 2840: [Firebug Lite] Synchronous XHR requests - - - - - - -
                -
                -

                Issue 2840: [Firebug Lite] Synchronous XHR requests

                -

                -
                -

                -
                  -
                  test markup
                  -
                  -
                  -

                  Steps to reproduce

                  -
                    -
                  1. Load Firebug Lite
                  2. -
                  3. Load jQuery
                  4. -
                  5. Execute the following code:
                  6. -
                  -
                  -        $.ajax({
                  -            url: "test.txt",
                  -            complete: function(req, status) {
                  -                if (status == "success") {
                  -                    // this line should be executed
                  -                }
                  -            }
                  -        });
                  -                
                  -

                  Expected Result

                  -
                    -
                  • The marked line should be executed, that is, the "complete" callback - function should be called
                  • -
                  • There should be one log entry in the Console Panel
                  • -
                  -
                  -
                  - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                  -
                  - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2840/test.txt b/branches/firebug1.4/tests/content/xhr/2840/test.txt deleted file mode 100644 index a0aba931..00000000 --- a/branches/firebug1.4/tests/content/xhr/2840/test.txt +++ /dev/null @@ -1 +0,0 @@ -OK \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2846/issue2846.html b/branches/firebug1.4/tests/content/xhr/2846/issue2846.html deleted file mode 100644 index 2319d056..00000000 --- a/branches/firebug1.4/tests/content/xhr/2846/issue2846.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - Issue 2846: [Firebug Lite] Offline XHR requests - - - - - - -
                  -
                  -

                  Issue 2846: [Firebug Lite] Offline XHR requests

                  -

                  -
                  -

                  -
                    -
                    test markup
                    -
                    -
                    -

                    Steps to reproduce

                    -
                      -
                    1. Load Firebug Lite at the <head> of a page
                    2. -
                    3. Execute a XHR also at the <head> of a page
                    4. -
                    -

                    Expected Result

                    -
                      -
                    • The XHR callback should be properly called
                    • -
                    • The XHR reponseText should be the same as expected
                    • -
                    • There should be one log entry in the Console Panel
                    • -
                    -
                    -
                    - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                    -
                    - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2846/test.txt b/branches/firebug1.4/tests/content/xhr/2846/test.txt deleted file mode 100644 index a0aba931..00000000 --- a/branches/firebug1.4/tests/content/xhr/2846/test.txt +++ /dev/null @@ -1 +0,0 @@ -OK \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2977/issue2977.html b/branches/firebug1.4/tests/content/xhr/2977/issue2977.html deleted file mode 100644 index fa3999c4..00000000 --- a/branches/firebug1.4/tests/content/xhr/2977/issue2977.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - Issue 2977: [Firebug Lite] HTTP parameters in the console - - - - - - -
                    -
                    -

                    Issue 2977: [Firebug Lite] HTTP parameters in the console

                    -

                    -
                    -

                    -
                      -
                      test markup
                      -
                      -
                      - -

                      Steps to reproduce

                      -
                        -
                      1. Load Firebug Lite
                      2. -
                      3. Load jQuery
                      4. -
                      5. Execute the following code:
                      6. -
                      -
                      -        $.post("post.php?param1=1", "param2=2", function(req, status) {
                      -            if (status == "success") {
                      -                // this line should be executed
                      -            }
                      -        });
                      -                
                      -

                      Expected Result

                      -
                        -
                      • The marked line should be executed, that is, the "complete" callback - function should be called
                      • -
                      • There should be one log entry in the Console Panel
                      • -
                      • There should be a parameter "param1" in the XHR Info "Params" Tab
                      • -
                      • There should be a parameter "param2" in the XHR Info "Post" Tab
                      • -
                      -
                      -
                      - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                      -
                      - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/2977/post.php b/branches/firebug1.4/tests/content/xhr/2977/post.php deleted file mode 100644 index 923693f9..00000000 --- a/branches/firebug1.4/tests/content/xhr/2977/post.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/3504/issue3504.html b/branches/firebug1.4/tests/content/xhr/3504/issue3504.html deleted file mode 100644 index 89fa25eb..00000000 --- a/branches/firebug1.4/tests/content/xhr/3504/issue3504.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - Issue 3504: [Firebug lite] jQuery.ajax call fails in IE - - - - - - -
                      -
                      -

                      Issue 3504: [Firebug lite] jQuery.ajax call fails in IE

                      -

                      -
                      -

                      -
                        -
                        test markup
                        -
                        -
                        -

                        Steps to reproduce

                        -
                          -
                        1. Load Firebug Lite
                        2. -
                        3. Load jQuery
                        4. -
                        5. Execute the following code:
                        6. -
                        -
                        -        var success = false;
                        -        
                        -        $.ajax({
                        -            url: "test.txt",
                        -            success: function() {
                        -                success = true;
                        -            },
                        -            complete: function() {
                        -                // success variable should hold the "true" value here
                        -            }
                        -        });
                        -                
                        -

                        Expected Result

                        -
                          -
                        • The success variable should hold the "true" value after the XHR completes
                        • -
                        • There should be one log entry in the Console Panel
                        • -
                        -
                        -
                        - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                        -
                        - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/3504/test.txt b/branches/firebug1.4/tests/content/xhr/3504/test.txt deleted file mode 100644 index a0aba931..00000000 --- a/branches/firebug1.4/tests/content/xhr/3504/test.txt +++ /dev/null @@ -1 +0,0 @@ -OK \ No newline at end of file diff --git a/branches/firebug1.4/tests/content/xhr/4472/issue4472.html b/branches/firebug1.4/tests/content/xhr/4472/issue4472.html deleted file mode 100644 index b872bec4..00000000 --- a/branches/firebug1.4/tests/content/xhr/4472/issue4472.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - Issue 4472: [Firebug Lite] XHR.getAllResponseHeaders() doesn't work on IE - - - - - - -
                        -
                        -

                        Issue 4472: [Firebug Lite] XHR.getAllResponseHeaders() doesn't work on IE

                        -

                        -
                        -

                        -
                          -
                          test markup
                          -
                          -
                          - -

                          Steps to reproduce

                          -
                            -
                          1. Load Firebug Lite
                          2. -
                          3. Execute a XHR request
                          4. -
                          5. When the request is completed, call getAllResponseHeaders()
                          6. -
                          -

                          Expected Result

                          -
                            -
                          • The getAllResponseHeaders() should return the proper headers string
                          • -
                          • There should be one log entry in the Console Panel
                          • -
                          -
                          -
                          - <Pedro Simonetti>, <pedrosimonetti@gmail.com> -
                          -
                          - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/examples/async.html b/branches/firebug1.4/tests/examples/async.html deleted file mode 100644 index ae21ee00..00000000 --- a/branches/firebug1.4/tests/examples/async.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - -

                          Async test example

                          -

                          -
                          -

                          -
                            -
                            test markup
                            - - diff --git a/branches/firebug1.4/tests/examples/fail.html b/branches/firebug1.4/tests/examples/fail.html deleted file mode 100644 index b97b6663..00000000 --- a/branches/firebug1.4/tests/examples/fail.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - -

                            Fail test example

                            -

                            -
                            -

                            -
                              -
                              test markup
                              - - diff --git a/branches/firebug1.4/tests/examples/sync.html b/branches/firebug1.4/tests/examples/sync.html deleted file mode 100644 index 21fca888..00000000 --- a/branches/firebug1.4/tests/examples/sync.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - -

                              Sync test example

                              -

                              -
                              -

                              -
                                -
                                test markup
                                - - diff --git a/branches/firebug1.4/tests/fbtest/fbtest.css b/branches/firebug1.4/tests/fbtest/fbtest.css deleted file mode 100644 index ff4c9c4a..00000000 --- a/branches/firebug1.4/tests/fbtest/fbtest.css +++ /dev/null @@ -1,566 +0,0 @@ -/* ============================================================================================== */ -/* ============================================================================================== */ -/* -@font-face { - font-family: 'TitilliumMaps'; - src: url('http://getfirebug.com/fonts/TitilliumMaps26L001.eot'); - src: local('☺'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.woff') format('woff'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.ttf') format('truetype'); - font-weight: bold; -} -*/ -/* -TODO: xxxpedro -* { - position: relative; -} -*/ - -html, body { - /*width: 100%; - min-height: 100%; - min-height: calc(100% - 30px); - min-height: -moz-calc(100% - 30px);*/ - margin: 0; - padding-bottom: 30px; -} - -body { - background-color: #EAF1FB; - background: #FFFFFF linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -moz-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -webkit-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -o-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - background: #FFFFFF -ms-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat; - font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 0.9em; -} - -#main { - margin: auto; - width: 870px; -} - -#main { - margin-top: 20px; - border-radius: 8px; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -o-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - -ms-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - background-color: rgba(255, 255, 255, 0.6); - padding: 15px; -} - -#content { - background-color: #EAEAEA; - background-image: linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -moz-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -webkit-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -o-linear-gradient(bottom, #E6E6E6, #F0F0F0); - background-image: -ms-linear-gradient(bottom, #E6E6E6, #F0F0F0); - border-radius: 8px; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; - -o-border-radius: 8px; - margin: 10px 0; - padding: 10px; -} - -#output { - background-color: #FAFAFA; - background-image: linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -moz-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -webkit-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -o-linear-gradient(bottom, #F5F5F5, #FFFFFF); - background-image: -ms-linear-gradient(bottom, #F5F5F5, #FFFFFF); - height: 50px; - margin: 10px 0; - padding: 10px; -} - -footer { - margin-top: 10px; - text-align: right; - font-size: 75%; - font-style: italic; -} - -h1, h2 { - font-family: /* TitilliumMaps, */ "Trebuchet MS", Helvetica, sans-serif; - font-size: 130%; - font-weight: bold; -} - -h1 { -} - -h2 { - margin: 0.5em 0; - /*TODO: xxxpedro*/ - /*border-bottom: 2px solid #9ACBE4;*/ -} - -h3 { - margin: 0.3em 0 0.2em 0; - font-size: 105%; -} - -p, ol, ul { - margin: 0.2em 0; -} - -p { - padding-left: 20px; -} - -#description p { - font-style: italic; -} - -ul { - list-style-type: square; - list-style-image: url(data:image/gif;base64,R0lGODlhBQAIAPcAAGOMnGOMnP///2OMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAIALAAAAAAFAAgABwgSAAEIHEiwoEGC/xImFMCwocOAADs=); -} - -li.ok, li span.ok { - color: #00B400; -} - -li.error, li span.error { - color: #DC0000; -} - -code { - color: #008C00; -} - -code.key { - color: #0000FF; -} - -input[type="text"], button { - border: 1px solid #AAAAAA; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -o-border-radius: 5px; - padding: 3px 5px; -} - -input[type="button"], button { - background-image: linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -moz-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -webkit-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -o-linear-gradient(bottom, #A0A0A0, #C8C8C8); - background-image: -ms-linear-gradient(bottom, #A0A0A0, #C8C8C8); - box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -moz-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -webkit-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -o-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - -ms-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset; - text-shadow: 1px 1px rgba(255, 255, 255, 0.3); -} - -input[type="button"]:hover, button:hover { - background-image: linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -moz-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -webkit-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -o-linear-gradient(bottom, #B4B4B4, #DCDCDC); - background-image: -ms-linear-gradient(bottom, #B4B4B4, #DCDCDC); -} - -input[type="button"]:active, button:active { - background-image: linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -moz-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -webkit-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -o-linear-gradient(top, #8C8C8C, #A0A0A0); - background-image: -ms-linear-gradient(top, #8C8C8C, #A0A0A0); - box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -moz-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -webkit-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -o-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; - -ms-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset; -} - -/* ============================================================================================== */ -/* ============================================================================================== */ - -/** - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -/** Font Family and Sizes */ - -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; -} - -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } -#qunit-tests { font-size: smaller; } - - -/** Resets */ - -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult { - margin: 0; - padding: 0; -} - - -/** Header */ - -#qunit-header { - padding: 0.5em 0 0.5em 1em; - - color: #8699a4; - background-color: #0d3349; - - font-size: 1.5em; - line-height: 1em; - font-weight: normal; - - border-radius: 15px 15px 0 0; - -moz-border-radius: 15px 15px 0 0; - -webkit-border-top-right-radius: 15px; - -webkit-border-top-left-radius: 15px; -} - -#qunit-header a { - text-decoration: none; - color: #c2ccd1; -} - -#qunit-header a:hover, -#qunit-header a:focus { - color: #fff; -} - -#qunit-banner { - height: 5px; -} - -#qunit-testrunner-toolbar { - padding: 0.5em 0 0.5em 2em; - color: #5E740B; - background-color: #eee; -} - -#qunit-userAgent { - padding: 0.5em 0 0.5em 2.5em; - background-color: #2b81af; - color: #fff; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} - - -/** Tests: Pass/Fail */ - -#qunit-tests { - list-style-position: inside; -} - -#qunit-tests li { - padding: 0.4em 0.5em 0.4em 2.5em; - border-bottom: 1px solid #fff; - list-style-position: inside; -} - -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { - display: none; -} - -#qunit-tests li strong { - cursor: pointer; -} - -#qunit-tests li a { - padding: 0.5em; - color: #c2ccd1; - text-decoration: none; -} -#qunit-tests li a:hover, -#qunit-tests li a:focus { - color: #000; -} - -#qunit-tests ol { - margin-top: 0.5em; - padding: 0.5em; - - background-color: #fff; - - border-radius: 15px; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - - box-shadow: inset 0px 2px 13px #999; - -moz-box-shadow: inset 0px 2px 13px #999; - -webkit-box-shadow: inset 0px 2px 13px #999; -} - -#qunit-tests table { - border-collapse: collapse; - margin-top: .2em; -} - -#qunit-tests th { - text-align: right; - vertical-align: top; - padding: 0 .5em 0 0; -} - -#qunit-tests td { - vertical-align: top; -} - -#qunit-tests pre { - margin: 0; - white-space: pre-wrap; - word-wrap: break-word; -} - -#qunit-tests del { - background-color: #e0f2be; - color: #374e0c; - text-decoration: none; -} - -#qunit-tests ins { - background-color: #ffcaca; - color: #500; - text-decoration: none; -} - -/*** Test Counts */ - -#qunit-tests b.counts { color: black; } -#qunit-tests b.passed { color: #5E740B; } -#qunit-tests b.failed { color: #710909; } - -#qunit-tests li li { - margin: 0.5em; - padding: 0.4em 0.5em 0.4em 0.5em; - background-color: #fff; - border-bottom: none; - list-style-position: inside; -} - -/*** Passing Styles */ - -#qunit-tests li li.pass { - color: #5E740B; - background-color: #fff; - border-left: 26px solid #C6E746; -} - -#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } -#qunit-tests .pass .test-name { color: #366097; } - -#qunit-tests .pass .test-actual, -#qunit-tests .pass .test-expected { color: #999999; } - -#qunit-banner.qunit-pass { background-color: #C6E746; } - -/*** Failing Styles */ - -#qunit-tests li li.fail { - color: #710909; - background-color: #fff; - border-left: 26px solid #EE5757; - white-space: pre; -} - -#qunit-tests > li:last-child { - border-radius: 0 0 15px 15px; - -moz-border-radius: 0 0 15px 15px; - -webkit-border-bottom-right-radius: 15px; - -webkit-border-bottom-left-radius: 15px; -} - -#qunit-tests .fail { color: #000000; background-color: #EE5757; } -#qunit-tests .fail .test-name, -#qunit-tests .fail .module-name { color: #000000; } - -#qunit-tests .fail .test-actual { color: #EE5757; } -#qunit-tests .fail .test-expected { color: green; } - -#qunit-banner.qunit-fail { background-color: #EE5757; } - - -/** Result */ - -#qunit-testresult { - padding: 0.5em 0.5em 0.5em 2.5em; - - color: #2b81af; - background-color: #D2E0E6; - - border-bottom: 1px solid white; -} - -/** Fixture */ - -#qunit-fixture { - position: absolute; - top: -10000px; - left: -10000px; -} - -/* ============================================================================================== */ -/* ============================================================================================== */ - -/* -// -// This source is a Public Domain Dedication. -// http://salientqc.codeplex.com -// Attribution is appreciated. -// -*/ - -/* this file can be added to qunit.css to simplify deployment */ - -#qunit-runner-banner { - font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; - margin: 0; - padding: 0; - height: 5px; -} -#qunit-runner-banner.qunit-pass { background-color: #C6E746; } -#qunit-runner-banner.qunit-fail { background-color: #EE5757; } -.runner-test-page-counter -{ - font-size: 110%; -} -.runner-test-page-header -{ - position: relative; - font-family: "Helvetica Neue Light" , "HelveticaNeue-Light" , "Helvetica Neue" , Calibri, Helvetica, Arial; - list-style-position: inside; - font-size: small; - padding: 5px 10px; - cursor: pointer; - margin: 1px; -} -.runner-test-page-header.failed, -.runner-test-page-header.failed a, -.runner-test-page-header.failed a:hover, -.runner-test-page-header.failed a:visited -{ - background-color: #EE5757; - color: #000000; -} -.runner-test-page-header.passed, -.runner-test-page-header.passed a, -.runner-test-page-header.passed a:hover, -.runner-test-page-header.passed a:visited -{ - background-color: #D2E0E6; - color: #528CE0; -} -.runner-test-page-frame -{ - display: block; - margin: 0; - background-color: #F4F4F8; - visibility: hidden; - position: absolute; - border: 2px solid #0D3349; - width: 864px; - height: 480px; -} -.failed+.runner-test-page-frame { - border-color: #EE5757; -} -h2#qunit-runner-userAgent -{ - font-family: "Helvetica Neue Light" , "HelveticaNeue-Light" , "Helvetica Neue" , Calibri, Helvetica, Arial; - background-color: #2b81af; - margin: 0; - padding: 0; - color: #fff; - font-size: small; - padding: 0.5em 0 0.5em 2.5em; - text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; -} -#runner-test-page-container { - border: 1px solid #D2E0E6; - border-width: 0 1px; -} -.runner-test-page-header { - margin: 1px 0; - line-height: 19px; -} - -#runner-test-page body { - background: #EAF0FF; -} -#runner-test-page #main { - width: 770px; -} -#runner-test-page #qunit-header { - margin: 0; - font-size: 16px; -} -#runner-test-page #qunit-userAgent { - display: none; -} -#runner-test-page #fbtest-toolbar { - display: none; -} -.fbtest-toolbar-separator { - font-family: serif; -} -#runner-result { - background-color: #D2E0E6; - color: #2B81AF; - padding: 0.5em 0.5em 0.5em 2.5em; - font-size: small; - margin: 0; - font-family: "Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial; -} - -.runner-fullscreen-view body { - overflow: hidden; -} - -.runner-fullscreen-view #runner-test-page-frame-fullscreen { - border-width: 0; - display: block !important; - position: fixed !important; - visibility: visible !important; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 1000000; -} - -#runner-close-fullscreen-view { - background: none repeat scroll 0 0 #ff7; - border: 1px solid #dd9; - border-radius: 0 0 0 11px; - cursor: pointer; - display: none; - font-size: 16px; - padding: 4px 10px; - position: fixed; - right: 0; - top: 0; - z-index: 1000001; -} - -.runner-fullscreen-view #runner-close-fullscreen-view { - display: block; -} \ No newline at end of file diff --git a/branches/firebug1.4/tests/fbtest/fbtest.js b/branches/firebug1.4/tests/fbtest/fbtest.js deleted file mode 100644 index 03be58da..00000000 --- a/branches/firebug1.4/tests/fbtest/fbtest.js +++ /dev/null @@ -1,2457 +0,0 @@ -/* -TODO - - separate tests by groups. able to run groups individually. - - submit results? browserscope? - */ - -/** - * QUnit - A JavaScript Unit Testing Framework - * - * http://docs.jquery.com/QUnit - * - * Copyright (c) 2011 John Resig, Jörn Zaefferer - * Dual licensed under the MIT (MIT-LICENSE.txt) - * or GPL (GPL-LICENSE.txt) licenses. - */ - -(function(window) { - -var defined = { - setTimeout: typeof window.setTimeout !== "undefined", - sessionStorage: (function() { - try { - return !!sessionStorage.getItem; - } catch(e) { - return false; - } - })() -}; - -var testId = 0; - -var Test = function(name, testName, expected, testEnvironmentArg, async, callback) { - this.name = name; - this.testName = testName; - this.expected = expected; - this.testEnvironmentArg = testEnvironmentArg; - this.async = async; - this.callback = callback; - this.assertions = []; -}; -Test.prototype = { - init: function() { - var tests = id("qunit-tests"); - if (tests) { - var b = document.createElement("strong"); - b.innerHTML = "Running " + this.name; - var li = document.createElement("li"); - li.appendChild( b ); - li.className = "running"; - li.id = this.id = "test-output" + testId++; - tests.appendChild( li ); - } - }, - setup: function() { - if (this.module != config.previousModule) { - if ( config.previousModule ) { - QUnit.moduleDone( { - name: config.previousModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - config.previousModule = this.module; - config.moduleStats = { all: 0, bad: 0 }; - QUnit.moduleStart( { - name: this.module - } ); - } - - config.current = this; - this.testEnvironment = extend({ - setup: function() {}, - teardown: function() {} - }, this.moduleTestEnvironment); - if (this.testEnvironmentArg) { - extend(this.testEnvironment, this.testEnvironmentArg); - } - - QUnit.testStart( { - name: this.testName - } ); - - // allow utility functions to access the current test environment - // TODO why?? - QUnit.current_testEnvironment = this.testEnvironment; - - try { - if ( !config.pollution ) { - saveGlobal(); - } - - this.testEnvironment.setup.call(this.testEnvironment); - } catch(e) { - QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message ); - } - }, - run: function() { - if ( this.async ) { - QUnit.stop(); - } - - if ( config.notrycatch ) { - this.callback.call(this.testEnvironment); - return; - } - try { - this.callback.call(this.testEnvironment); - } catch(e) { - fail("Test " + this.testName + " died, exception and test follows", e, this.callback); - QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) ); - // else next test will carry the responsibility - saveGlobal(); - - // Restart the tests if they're blocking - if ( config.blocking ) { - start(); - } - } - }, - teardown: function() { - try { - this.testEnvironment.teardown.call(this.testEnvironment); - checkPollution(); - } catch(e) { - QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message ); - } - }, - finish: function() { - if ( this.expected && this.expected != this.assertions.length ) { - QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" ); - } - - var good = 0, bad = 0, - tests = id("qunit-tests"); - - config.stats.all += this.assertions.length; - config.moduleStats.all += this.assertions.length; - - if ( tests ) { - var ol = document.createElement("ol"); - - for ( var i = 0; i < this.assertions.length; i++ ) { - var assertion = this.assertions[i]; - - var li = document.createElement("li"); - li.className = assertion.result ? "pass" : "fail"; - li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed"); - ol.appendChild( li ); - - if ( assertion.result ) { - good++; - } else { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - - // store result when possible - if ( QUnit.config.reorder && defined.sessionStorage ) { - if (bad) { - sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad); - } else { - sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName); - } - } - - if (bad == 0) { - ol.style.display = "none"; - } - - var b = document.createElement("strong"); - b.innerHTML = this.name + " (" + bad + ", " + good + ", " + this.assertions.length + ")"; - - var a = document.createElement("a"); - a.innerHTML = "Rerun"; - a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - - addEvent(b, "click", function() { - var next = b.nextSibling.nextSibling, - display = next.style.display; - next.style.display = display === "none" ? "block" : "none"; - }); - - addEvent(b, "dblclick", function(e) { - var target = e && e.target ? e.target : window.event.srcElement; - if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) { - target = target.parentNode; - } - if ( window.location && target.nodeName.toLowerCase() === "strong" ) { - window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") }); - } - }); - - var li = id(this.id); - li.className = bad ? "fail" : "pass"; - li.removeChild( li.firstChild ); - li.appendChild( b ); - li.appendChild( a ); - li.appendChild( ol ); - - } else { - for ( var i = 0; i < this.assertions.length; i++ ) { - if ( !this.assertions[i].result ) { - bad++; - config.stats.bad++; - config.moduleStats.bad++; - } - } - } - - try { - QUnit.reset(); - } catch(e) { - fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset); - } - - QUnit.testDone( { - name: this.testName, - failed: bad, - passed: this.assertions.length - bad, - total: this.assertions.length - } ); - }, - - queue: function() { - var test = this; - synchronize(function() { - test.init(); - }); - function run() { - // each of these can by async - synchronize(function() { - test.setup(); - }); - synchronize(function() { - test.run(); - }); - synchronize(function() { - test.teardown(); - }); - synchronize(function() { - test.finish(); - }); - } - // defer when previous test run passed, if storage is available - var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName); - if (bad) { - run(); - } else { - synchronize(run); - }; - } - -}; - -var QUnit = { - - // call on start of module test to prepend name to all tests - module: function(name, testEnvironment) { - config.currentModule = name; - config.currentModuleTestEnviroment = testEnvironment; - }, - - asyncTest: function(testName, expected, callback) { - if ( arguments.length === 2 ) { - callback = expected; - expected = 0; - } - - QUnit.test(testName, expected, callback, true); - }, - - test: function(testName, expected, callback, async) { - var name = '' + testName + '', testEnvironmentArg; - - if ( arguments.length === 2 ) { - callback = expected; - expected = null; - } - // is 2nd argument a testEnvironment? - if ( expected && typeof expected === 'object') { - testEnvironmentArg = expected; - expected = null; - } - - if ( config.currentModule ) { - name = '' + config.currentModule + ": " + name; - } - - if ( !validTest(config.currentModule + ": " + testName) ) { - return; - } - - var test = new Test(name, testName, expected, testEnvironmentArg, async, callback); - test.module = config.currentModule; - test.moduleTestEnvironment = config.currentModuleTestEnviroment; - test.queue(); - }, - - /** - * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through. - */ - expect: function(asserts) { - config.current.expected = asserts; - }, - - /** - * Asserts true. - * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); - */ - ok: function(a, msg) { - a = !!a; - var details = { - result: a, - message: msg - }; - msg = escapeHtml(msg); - QUnit.log(details); - config.current.assertions.push({ - result: a, - message: msg - }); - }, - - /** - * Checks that the first two arguments are equal, with an optional message. - * Prints out both actual and expected values. - * - * Prefered to ok( actual == expected, message ) - * - * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." ); - * - * @param Object actual - * @param Object expected - * @param String message (optional) - */ - equal: function(actual, expected, message) { - QUnit.push(expected == actual, actual, expected, message); - }, - - notEqual: function(actual, expected, message) { - QUnit.push(expected != actual, actual, expected, message); - }, - - deepEqual: function(actual, expected, message) { - QUnit.push(QUnit.equiv(actual, expected), actual, expected, message); - }, - - notDeepEqual: function(actual, expected, message) { - QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message); - }, - - strictEqual: function(actual, expected, message) { - QUnit.push(expected === actual, actual, expected, message); - }, - - notStrictEqual: function(actual, expected, message) { - QUnit.push(expected !== actual, actual, expected, message); - }, - - raises: function(block, expected, message) { - var actual, ok = false; - - if (typeof expected === 'string') { - message = expected; - expected = null; - } - - try { - block(); - } catch (e) { - actual = e; - } - - if (actual) { - // we don't want to validate thrown error - if (!expected) { - ok = true; - // expected is a regexp - } else if (QUnit.objectType(expected) === "regexp") { - ok = expected.test(actual); - // expected is a constructor - } else if (actual instanceof expected) { - ok = true; - // expected is a validation function which returns true is validation passed - } else if (expected.call({}, actual) === true) { - ok = true; - } - } - - QUnit.ok(ok, message); - }, - - start: function() { - config.semaphore--; - if (config.semaphore > 0) { - // don't start until equal number of stop-calls - return; - } - if (config.semaphore < 0) { - // ignore if start is called more often then stop - config.semaphore = 0; - } - // A slight delay, to avoid any current callbacks - if ( defined.setTimeout ) { - window.setTimeout(function() { - if (config.semaphore > 0) { - return; - } - if ( config.timeout ) { - clearTimeout(config.timeout); - } - - config.blocking = false; - process(); - }, 13); - } else { - config.blocking = false; - process(); - } - }, - - stop: function(timeout) { - config.semaphore++; - config.blocking = true; - - if ( timeout && defined.setTimeout ) { - clearTimeout(config.timeout); - config.timeout = window.setTimeout(function() { - QUnit.ok( false, "Test timed out" ); - QUnit.start(); - }, timeout); - } - } -}; - -// Backwards compatibility, deprecated -QUnit.equals = QUnit.equal; -QUnit.same = QUnit.deepEqual; - -// Maintain internal state -var config = { - // The queue of tests to run - queue: [], - - // block until document ready - blocking: true, - - // when enabled, show only failing tests - // gets persisted through sessionStorage and can be changed in UI via checkbox - hidepassed: false, - - // by default, run previously failed tests first - // very useful in combination with "Hide passed tests" checked - reorder: true, - - // by default, modify document.title when suite is done - altertitle: true, - - urlConfig: ['noglobals', 'notrycatch'] -}; - -// Load paramaters -(function() { - var location = window.location || { search: "", protocol: "file:" }, - params = location.search.slice( 1 ).split( "&" ), - length = params.length, - urlParams = {}, - current; - - if ( params[ 0 ] ) { - for ( var i = 0; i < length; i++ ) { - current = params[ i ].split( "=" ); - current[ 0 ] = decodeURIComponent( current[ 0 ] ); - // allow just a key to turn on a flag, e.g., test.html?noglobals - current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; - urlParams[ current[ 0 ] ] = current[ 1 ]; - } - } - - QUnit.urlParams = urlParams; - config.filter = urlParams.filter; - - // Figure out if we're running the tests from a server or not - QUnit.isLocal = !!(location.protocol === 'file:'); -})(); - -// Expose the API as global variables, unless an 'exports' -// object exists, in that case we assume we're in CommonJS -if ( typeof exports === "undefined" || typeof require === "undefined" ) { - extend(window, QUnit); - window.QUnit = QUnit; -} else { - extend(exports, QUnit); - exports.QUnit = QUnit; -} - -// define these after exposing globals to keep them in these QUnit namespace only -extend(QUnit, { - config: config, - - // Initialize the configuration options - init: function() { - extend(config, { - stats: { all: 0, bad: 0 }, - moduleStats: { all: 0, bad: 0 }, - started: +new Date, - updateRate: 1000, - blocking: false, - autostart: true, - autorun: false, - filter: "", - queue: [], - semaphore: 0 - }); - - var tests = id( "qunit-tests" ), - banner = id( "qunit-banner" ), - result = id( "qunit-testresult" ); - - if ( tests ) { - tests.innerHTML = ""; - } - - if ( banner ) { - banner.className = ""; - } - - if ( result ) { - result.parentNode.removeChild( result ); - } - - if ( tests ) { - result = document.createElement( "p" ); - result.id = "qunit-testresult"; - result.className = "result"; - tests.parentNode.insertBefore( result, tests ); - result.innerHTML = 'Running...
                                 '; - } - }, - - /** - * Resets the test setup. Useful for tests that modify the DOM. - * - * If jQuery is available, uses jQuery's html(), otherwise just innerHTML. - */ - reset: function() { - if ( window.jQuery ) { - jQuery( "#qunit-fixture" ).html( config.fixture ); - } else { - var main = id( 'qunit-fixture' ); - if ( main ) { - main.innerHTML = config.fixture; - } - } - }, - - /** - * Trigger an event on an element. - * - * @example triggerEvent( document.body, "click" ); - * - * @param DOMElement elem - * @param String type - */ - triggerEvent: function( elem, type, event ) { - if ( document.createEvent ) { - event = document.createEvent("MouseEvents"); - event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, - 0, 0, 0, 0, 0, false, false, false, false, 0, null); - elem.dispatchEvent( event ); - - } else if ( elem.fireEvent ) { - elem.fireEvent("on"+type); - } - }, - - // Safe object type checking - is: function( type, obj ) { - return QUnit.objectType( obj ) == type; - }, - - objectType: function( obj ) { - if (typeof obj === "undefined") { - return "undefined"; - - // consider: typeof null === object - } - if (obj === null) { - return "null"; - } - - var type = Object.prototype.toString.call( obj ) - .match(/^\[object\s(.*)\]$/)[1] || ''; - - switch (type) { - case 'Number': - if (isNaN(obj)) { - return "nan"; - } else { - return "number"; - } - case 'String': - case 'Boolean': - case 'Array': - case 'Date': - case 'RegExp': - case 'Function': - return type.toLowerCase(); - } - if (typeof obj === "object") { - return "object"; - } - return undefined; - }, - - push: function(result, actual, expected, message) { - var details = { - result: result, - message: message, - actual: actual, - expected: expected - }; - - message = escapeHtml(message) || (result ? "okay" : "failed"); - message = '' + message + ""; - expected = escapeHtml(QUnit.jsDump.parse(expected)); - actual = escapeHtml(QUnit.jsDump.parse(actual)); - var output = message + ''; - if (actual != expected) { - output += ''; - output += ''; - } - if (!result) { - var source = sourceFromStacktrace(); - if (source) { - details.source = source; - output += ''; - } - } - output += "
                                Expected:
                                ' + expected + '
                                Result:
                                ' + actual + '
                                Diff:
                                ' + QUnit.diff(expected, actual) +'
                                Source:
                                ' + escapeHtml(source) + '
                                "; - - QUnit.log(details); - - config.current.assertions.push({ - result: !!result, - message: output - }); - }, - - url: function( params ) { - params = extend( extend( {}, QUnit.urlParams ), params ); - var querystring = "?", - key; - for ( key in params ) { - querystring += encodeURIComponent( key ) + "=" + - encodeURIComponent( params[ key ] ) + "&"; - } - return window.location.pathname + querystring.slice( 0, -1 ); - }, - - extend: extend, - id: id, - addEvent: addEvent, - - // Logging callbacks; all receive a single argument with the listed properties - // run test/logs.html for any related changes - begin: function() {}, - // done: { failed, passed, total, runtime } - done: function() {}, - // log: { result, actual, expected, message } - log: function() {}, - // testStart: { name } - testStart: function() {}, - // testDone: { name, failed, passed, total } - testDone: function() {}, - // moduleStart: { name } - moduleStart: function() {}, - // moduleDone: { name, failed, passed, total } - moduleDone: function() {} -}); - -if ( typeof document === "undefined" || document.readyState === "complete" ) { - config.autorun = true; -} - -QUnit.load = function() { - QUnit.begin({}); - - // Initialize the config, saving the execution queue - var oldconfig = extend({}, config); - QUnit.init(); - extend(config, oldconfig); - - config.blocking = false; - - var urlConfigHtml = '', len = config.urlConfig.length; - for ( var i = 0, val; i < len, val = config.urlConfig[i]; i++ ) { - config[val] = QUnit.urlParams[val]; - urlConfigHtml += ''; - } - - var userAgent = id("qunit-userAgent"); - if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; - } - var banner = id("qunit-header"); - if ( banner ) { - banner.innerHTML = ' ' + banner.innerHTML + ' ' + urlConfigHtml; - addEvent( banner, "change", function( event ) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url( params ); - }); - } - - var toolbar = id("qunit-testrunner-toolbar"); - if ( toolbar ) { - var filter = document.createElement("input"); - filter.type = "checkbox"; - filter.id = "qunit-filter-pass"; - addEvent( filter, "click", function() { - var ol = document.getElementById("qunit-tests"); - if ( filter.checked ) { - ol.className = ol.className + " hidepass"; - } else { - var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; - ol.className = tmp.replace(/ hidepass /, " "); - } - if ( defined.sessionStorage ) { - if (filter.checked) { - sessionStorage.setItem("qunit-filter-passed-tests", "true"); - } else { - sessionStorage.removeItem("qunit-filter-passed-tests"); - } - } - }); - if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) { - filter.checked = true; - var ol = document.getElementById("qunit-tests"); - ol.className = ol.className + " hidepass"; - } - toolbar.appendChild( filter ); - - var label = document.createElement("label"); - label.setAttribute("for", "qunit-filter-pass"); - label.innerHTML = "Hide passed tests"; - toolbar.appendChild( label ); - } - - var main = id('qunit-fixture'); - if ( main ) { - config.fixture = main.innerHTML; - } - - if (config.autostart) { - QUnit.start(); - } -}; - -addEvent(window, "load", QUnit.load); - -function done() { - config.autorun = true; - - // Log the last module results - if ( config.currentModule ) { - QUnit.moduleDone( { - name: config.currentModule, - failed: config.moduleStats.bad, - passed: config.moduleStats.all - config.moduleStats.bad, - total: config.moduleStats.all - } ); - } - - var banner = id("qunit-banner"), - tests = id("qunit-tests"), - runtime = +new Date - config.started, - passed = config.stats.all - config.stats.bad, - html = [ - 'Tests completed in ', - runtime, - ' milliseconds.
                                ', - '', - passed, - ' tests of ', - config.stats.all, - ' passed, ', - config.stats.bad, - ' failed.' - ].join(''); - - if ( banner ) { - banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass"); - } - - if ( tests ) { - id( "qunit-testresult" ).innerHTML = html; - } - - if ( config.altertitle && typeof document !== "undefined" && document.title ) { - // show ✖ for good, ✔ for bad suite result in title - // use escape sequences in case file gets loaded with non-utf-8-charset - document.title = [ - (config.stats.bad ? "\u2716" : "\u2714"), - document.title.replace(/^[\u2714\u2716] /i, "") - ].join(" "); - } - - QUnit.done( { - failed: config.stats.bad, - passed: passed, - total: config.stats.all, - runtime: runtime - } ); -} - -function validTest( name ) { - var filter = config.filter, - run = false; - - if ( !filter ) { - return true; - } - - var not = filter.charAt( 0 ) === "!"; - if ( not ) { - filter = filter.slice( 1 ); - } - - if ( name.indexOf( filter ) !== -1 ) { - return !not; - } - - if ( not ) { - run = true; - } - - return run; -} - -// so far supports only Firefox, Chrome and Opera (buggy) -// could be extended in the future to use something like https://github.com/csnover/TraceKit -function sourceFromStacktrace() { - try { - throw new Error(); - } catch ( e ) { - if (e.stacktrace) { - // Opera - return e.stacktrace.split("\n")[6]; - } else if (e.stack) { - // Firefox, Chrome - return e.stack.split("\n")[4]; - } else if (e.sourceURL) { - // Safari, PhantomJS - // TODO sourceURL points at the 'throw new Error' line above, useless - //return e.sourceURL + ":" + e.line; - } - } -} - -function escapeHtml(s) { - if (!s) { - return ""; - } - s = s + ""; - return s.replace(/[\&"<>\\]/g, function(s) { - switch(s) { - case "&": return "&"; - case "\\": return "\\\\"; - case '"': return '\"'; - case "<": return "<"; - case ">": return ">"; - default: return s; - } - }); -} - -function synchronize( callback ) { - config.queue.push( callback ); - - if ( config.autorun && !config.blocking ) { - process(); - } -} - -function process() { - var start = (new Date()).getTime(); - - while ( config.queue.length && !config.blocking ) { - if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) { - config.queue.shift()(); - } else { - window.setTimeout( process, 13 ); - break; - } - } - if (!config.blocking && !config.queue.length) { - done(); - } -} - -function saveGlobal() { - config.pollution = []; - - if ( config.noglobals ) { - for ( var key in window ) { - config.pollution.push( key ); - } - } -} - -function checkPollution( name ) { - var old = config.pollution; - saveGlobal(); - - var newGlobals = diff( config.pollution, old ); - if ( newGlobals.length > 0 ) { - ok( false, "Introduced global variable(s): " + newGlobals.join(", ") ); - } - - var deletedGlobals = diff( old, config.pollution ); - if ( deletedGlobals.length > 0 ) { - ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") ); - } -} - -// returns a new Array with the elements that are in a but not in b -function diff( a, b ) { - var result = a.slice(); - for ( var i = 0; i < result.length; i++ ) { - for ( var j = 0; j < b.length; j++ ) { - if ( result[i] === b[j] ) { - result.splice(i, 1); - i--; - break; - } - } - } - return result; -} - -function fail(message, exception, callback) { - if ( typeof console !== "undefined" && console.error && console.warn ) { - console.error(message); - console.error(exception); - console.warn(callback.toString()); - - } else if ( window.opera && opera.postError ) { - opera.postError(message, exception, callback.toString); - } -} - -function extend(a, b) { - for ( var prop in b ) { - if ( b[prop] === undefined ) { - delete a[prop]; - } else { - a[prop] = b[prop]; - } - } - - return a; -} - -function addEvent(elem, type, fn) { - if ( elem.addEventListener ) { - elem.addEventListener( type, fn, false ); - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, fn ); - } else { - fn(); - } -} - -function id(name) { - return !!(typeof document !== "undefined" && document && document.getElementById) && - document.getElementById( name ); -} - -// Test for equality any JavaScript type. -// Discussions and reference: http://philrathe.com/articles/equiv -// Test suites: http://philrathe.com/tests/equiv -// Author: Philippe Rathé -QUnit.equiv = function () { - - var innerEquiv; // the real equiv function - var callers = []; // stack to decide between skip/abort functions - var parents = []; // stack to avoiding loops from circular referencing - - // Call the o related callback with the given arguments. - function bindCallbacks(o, callbacks, args) { - var prop = QUnit.objectType(o); - if (prop) { - if (QUnit.objectType(callbacks[prop]) === "function") { - return callbacks[prop].apply(callbacks, args); - } else { - return callbacks[prop]; // or undefined - } - } - } - - var callbacks = function () { - - // for string, boolean, number and null - function useStrictEquality(b, a) { - if (b instanceof a.constructor || a instanceof b.constructor) { - // to catch short annotaion VS 'new' annotation of a - // declaration - // e.g. var i = 1; - // var j = new Number(1); - return a == b; - } else { - return a === b; - } - } - - return { - "string" : useStrictEquality, - "boolean" : useStrictEquality, - "number" : useStrictEquality, - "null" : useStrictEquality, - "undefined" : useStrictEquality, - - "nan" : function(b) { - return isNaN(b); - }, - - "date" : function(b, a) { - return QUnit.objectType(b) === "date" - && a.valueOf() === b.valueOf(); - }, - - "regexp" : function(b, a) { - return QUnit.objectType(b) === "regexp" - && a.source === b.source && // the regex itself - a.global === b.global && // and its modifers - // (gmi) ... - a.ignoreCase === b.ignoreCase - && a.multiline === b.multiline; - }, - - // - skip when the property is a method of an instance (OOP) - // - abort otherwise, - // initial === would have catch identical references anyway - "function" : function() { - var caller = callers[callers.length - 1]; - return caller !== Object && typeof caller !== "undefined"; - }, - - "array" : function(b, a) { - var i, j, loop; - var len; - - // b could be an object literal here - if (!(QUnit.objectType(b) === "array")) { - return false; - } - - len = a.length; - if (len !== b.length) { // safe and faster - return false; - } - - // track reference to avoid circular references - parents.push(a); - for (i = 0; i < len; i++) { - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) { - loop = true;// dont rewalk array - } - } - if (!loop && !innerEquiv(a[i], b[i])) { - parents.pop(); - return false; - } - } - parents.pop(); - return true; - }, - - "object" : function(b, a) { - var i, j, loop; - var eq = true; // unless we can proove it - var aProperties = [], bProperties = []; // collection of - // strings - - // comparing constructors is more strict than using - // instanceof - if (a.constructor !== b.constructor) { - return false; - } - - // stack constructor before traversing properties - callers.push(a.constructor); - // track reference to avoid circular references - parents.push(a); - - for (i in a) { // be strict: don't ensures hasOwnProperty - // and go deep - loop = false; - for (j = 0; j < parents.length; j++) { - if (parents[j] === a[i]) - loop = true; // don't go down the same path - // twice - } - aProperties.push(i); // collect a's properties - - if (!loop && !innerEquiv(a[i], b[i])) { - eq = false; - break; - } - } - - callers.pop(); // unstack, we are done - parents.pop(); - - for (i in b) { - bProperties.push(i); // collect b's properties - } - - // Ensures identical properties name - return eq - && innerEquiv(aProperties.sort(), bProperties - .sort()); - } - }; - }(); - - innerEquiv = function() { // can take multiple arguments - var args = Array.prototype.slice.apply(arguments); - if (args.length < 2) { - return true; // end transition - } - - return (function(a, b) { - if (a === b) { - return true; // catch the most you can - } else if (a === null || b === null || typeof a === "undefined" - || typeof b === "undefined" - || QUnit.objectType(a) !== QUnit.objectType(b)) { - return false; // don't lose time with error prone cases - } else { - return bindCallbacks(a, callbacks, [ b, a ]); - } - - // apply transition with (1..n) arguments - })(args[0], args[1]) - && arguments.callee.apply(this, args.splice(1, - args.length - 1)); - }; - - return innerEquiv; - -}(); - -/** - * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | - * http://flesler.blogspot.com Licensed under BSD - * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 - * - * @projectDescription Advanced and extensible data dumping for Javascript. - * @version 1.0.0 - * @author Ariel Flesler - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} - */ -QUnit.jsDump = (function() { - function quote( str ) { - return '"' + str.toString().replace(/"/g, '\\"') + '"'; - }; - function literal( o ) { - return o + ''; - }; - function join( pre, arr, post ) { - var s = jsDump.separator(), - base = jsDump.indent(), - inner = jsDump.indent(1); - if ( arr.join ) - arr = arr.join( ',' + s + inner ); - if ( !arr ) - return pre + post; - return [ pre, inner + arr, base + post ].join(s); - }; - function array( arr, stack ) { - var i = arr.length, ret = Array(i); - this.up(); - while ( i-- ) - ret[i] = this.parse( arr[i] , undefined , stack); - this.down(); - return join( '[', ret, ']' ); - }; - - var reName = /^function (\w+)/; - - var jsDump = { - parse:function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance - stack = stack || [ ]; - var parser = this.parsers[ type || this.typeOf(obj) ]; - type = typeof parser; - var inStack = inArray(obj, stack); - if (inStack != -1) { - return 'recursion('+(inStack - stack.length)+')'; - } - //else - if (type == 'function') { - stack.push(obj); - var res = parser.call( this, obj, stack ); - stack.pop(); - return res; - } - // else - return (type == 'string') ? parser : this.parsers.error; - }, - typeOf:function( obj ) { - var type; - if ( obj === null ) { - type = "null"; - } else if (typeof obj === "undefined") { - type = "undefined"; - } else if (QUnit.is("RegExp", obj)) { - type = "regexp"; - } else if (QUnit.is("Date", obj)) { - type = "date"; - } else if (QUnit.is("Function", obj)) { - type = "function"; - } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") { - type = "window"; - } else if (obj.nodeType === 9) { - type = "document"; - } else if (obj.nodeType) { - type = "node"; - } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) { - type = "array"; - } else { - type = typeof obj; - } - return type; - }, - separator:function() { - return this.multiline ? this.HTML ? '
                                ' : '\n' : this.HTML ? ' ' : ' '; - }, - indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing - if ( !this.multiline ) - return ''; - var chr = this.indentChar; - if ( this.HTML ) - chr = chr.replace(/\t/g,' ').replace(/ /g,' '); - return Array( this._depth_ + (extra||0) ).join(chr); - }, - up:function( a ) { - this._depth_ += a || 1; - }, - down:function( a ) { - this._depth_ -= a || 1; - }, - setParser:function( name, parser ) { - this.parsers[name] = parser; - }, - // The next 3 are exposed so you can use them - quote:quote, - literal:literal, - join:join, - // - _depth_: 1, - // This is the list of parsers, to modify them, use jsDump.setParser - parsers:{ - window: '[Window]', - document: '[Document]', - error:'[ERROR]', //when no parser is found, shouldn't happen - unknown: '[Unknown]', - 'null':'null', - 'undefined':'undefined', - 'function':function( fn ) { - var ret = 'function', - name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE - if ( name ) - ret += ' ' + name; - ret += '('; - - ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join(''); - return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' ); - }, - array: array, - nodelist: array, - arguments: array, - object:function( map, stack ) { - var ret = [ ]; - QUnit.jsDump.up(); - for ( var key in map ) { - var val = map[key]; - ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(val, undefined, stack)); - } - QUnit.jsDump.down(); - return join( '{', ret, '}' ); - }, - node:function( node ) { - var open = QUnit.jsDump.HTML ? '<' : '<', - close = QUnit.jsDump.HTML ? '>' : '>'; - - var tag = node.nodeName.toLowerCase(), - ret = open + tag; - - for ( var a in QUnit.jsDump.DOMAttrs ) { - var val = node[QUnit.jsDump.DOMAttrs[a]]; - if ( val ) - ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' ); - } - return ret + close + open + '/' + tag + close; - }, - functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function - var l = fn.length; - if ( !l ) return ''; - - var args = Array(l); - while ( l-- ) - args[l] = String.fromCharCode(97+l);//97 is 'a' - return ' ' + args.join(', ') + ' '; - }, - key:quote, //object calls it internally, the key part of an item in a map - functionCode:'[code]', //function calls it internally, it's the content of the function - attribute:quote, //node calls it internally, it's an html attribute value - string:quote, - date:quote, - regexp:literal, //regex - number:literal, - 'boolean':literal - }, - DOMAttrs:{//attributes to dump from nodes, name=>realName - id:'id', - name:'name', - 'class':'className' - }, - HTML:false,//if true, entities are escaped ( <, >, \t, space and \n ) - indentChar:' ',//indentation unit - multiline:true //if true, items in a collection, are separated by a \n, else just a space. - }; - - return jsDump; -})(); - -// from Sizzle.js -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -}; - -//from jquery.js -function inArray( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; -} - -/* - * Javascript Diff Algorithm - * By John Resig (http://ejohn.org/) - * Modified by Chu Alan "sprite" - * - * Released under the MIT license. - * - * More Info: - * http://ejohn.org/projects/javascript-diff-algorithm/ - * - * Usage: QUnit.diff(expected, actual) - * - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick brown fox jumped jumps over" - */ -QUnit.diff = (function() { - function diff(o, n) { - var ns = {}; - var os = {}; - - for (var i = 0; i < n.length; i++) { - if (ns[n[i]] == null) - ns[n[i]] = { - rows: [], - o: null - }; - ns[n[i]].rows.push(i); - } - - for (var i = 0; i < o.length; i++) { - if (os[o[i]] == null) - os[o[i]] = { - rows: [], - n: null - }; - os[o[i]].rows.push(i); - } - - for (var i in ns) { - if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) { - n[ns[i].rows[0]] = { - text: n[ns[i].rows[0]], - row: os[i].rows[0] - }; - o[os[i].rows[0]] = { - text: o[os[i].rows[0]], - row: ns[i].rows[0] - }; - } - } - - for (var i = 0; i < n.length - 1; i++) { - if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null && - n[i + 1] == o[n[i].row + 1]) { - n[i + 1] = { - text: n[i + 1], - row: n[i].row + 1 - }; - o[n[i].row + 1] = { - text: o[n[i].row + 1], - row: i + 1 - }; - } - } - - for (var i = n.length - 1; i > 0; i--) { - if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null && - n[i - 1] == o[n[i].row - 1]) { - n[i - 1] = { - text: n[i - 1], - row: n[i].row - 1 - }; - o[n[i].row - 1] = { - text: o[n[i].row - 1], - row: i - 1 - }; - } - } - - return { - o: o, - n: n - }; - } - - return function(o, n) { - o = o.replace(/\s+$/, ''); - n = n.replace(/\s+$/, ''); - var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/)); - - var str = ""; - - var oSpace = o.match(/\s+/g); - if (oSpace == null) { - oSpace = [" "]; - } - else { - oSpace.push(" "); - } - var nSpace = n.match(/\s+/g); - if (nSpace == null) { - nSpace = [" "]; - } - else { - nSpace.push(" "); - } - - if (out.n.length == 0) { - for (var i = 0; i < out.o.length; i++) { - str += '' + out.o[i] + oSpace[i] + ""; - } - } - else { - if (out.n[0].text == null) { - for (n = 0; n < out.o.length && out.o[n].text == null; n++) { - str += '' + out.o[n] + oSpace[n] + ""; - } - } - - for (var i = 0; i < out.n.length; i++) { - if (out.n[i].text == null) { - str += '' + out.n[i] + nSpace[i] + ""; - } - else { - var pre = ""; - - for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) { - pre += '' + out.o[n] + oSpace[n] + ""; - } - str += " " + out.n[i].text + nSpace[i] + pre; - } - } - } - - return str; - }; -})(); - -})(this); - - - -/* ############################################################################################## */ -/* ############################################################################################## */ -/* ############################################################################################## */ - -/* -// ************************************************************************************************ -// Library independent version of QUnit Runner, by Pedro Simonetti. -// Based on Sky Sanders' QUnit Runner -// ************************************************************************************************ -// -// This source is a Public Domain Dedication. -// http://salientqc.codeplex.com -// Attribution is appreciated. -// -*/ - -/* this file can safely be added to the tail of your qunit.js to simplify deployment */ - -(function(window) { - - var runner = function(tests, sequential, done) { - this.testsCompleted = 0; - this.failures = 0; - this.total = 0; - this.currentIndex = 0; - this.sequential = sequential; - this.tests = tests; - this.done = done || this.done; - var that = this; - window.onload = function() { - setTimeout(function(){ - that.runPage(); - },0); - }; - }; - - runner.prototype.nextPage = function() { - if (this.currentIndex + 1 < this.tests.length) { - this.currentIndex++; - this.runPage(); - } - }; - - runner.prototype.runPage = function() { - - if (!stats.started) stats.started = new Date().getTime(); - - var doc = document; - - // update page counter - var result = id( "runner-result" ); - result.innerHTML = "Running Test Page " + (this.currentIndex + 1) + " of " + - this.tests.length + "...
                                 "; - - // update userAgent display - id("qunit-runner-userAgent").innerHTML = window.navigator.userAgent; - - var test = this.tests[this.currentIndex]; - test.title = test.title || /\/content\/(.+)$/.exec(test.page)[1]; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // xxxpedro passing parameters to iframes - test.page = test.page + getURLParamaters(); - - // load the test page in an iframe - var container = id("runner-test-page-container"); - - var header = doc.createElement("p"); - header.className = "runner-test-page-header passed"; - header.innerHTML = "Loading " + test.title + "..."; - header.isOpen = false; - - addEvent(header, "click", function(event) - { - event = event || window.event; - var target = event.target || event.srcElement; - - // run button - var testIndex = target.getAttribute("data-fbtest-run-index"); - if (testIndex) - { - frames[testIndex].window.location.href = frames[testIndex].window.location.href; - return; - } - - // fullscreen view button - var testIndex = target.getAttribute("data-fbtest-view-index"); - if (testIndex) - { - var frameElement = frames[testIndex].frameElement; - frameElement.id = "runner-test-page-frame-fullscreen"; - frameElement.contentWindow.document.documentElement.id = ""; - document.documentElement.className = "runner-fullscreen-view"; - return; - } - - // do not toggle unless the target is the

                                element - if (target.nodeName.toLowerCase() != "p") return; - - header.isOpen = !header.isOpen; - header.nextSibling.style.visibility = header.isOpen ? "visible" : "hidden"; - header.nextSibling.style.position = header.isOpen ? "relative" : "absolute"; - }); - - test.header = header; - container.appendChild(header); - - var frame = doc.createElement("iframe"); - frame.className = "runner-test-page-frame"; - frame.setAttribute("frameBorder", "0"); - - frame.src = test.page; - test.frame = frame; - container.appendChild(frame); - - if (!this.sequential) { - this.nextPage(); - } - }; - - runner.prototype.pageProgress = function(frame, failures, total, testName, isDone) { - var that = this; - var tests = this.tests; - for(var i=0, l=tests.length; i 0 ? - "runner-test-page-header failed" : - "runner-test-page-header passed"; - - header.innerHTML = "run " + - "link "+ - "view" + - (" (" + (total - failures) + "/" + total + ") ") + - testName + - (isDone ? " (" + test.title + ")" : ""); - - if (isDone) { - test.complete = true; - that.failures += failures; - that.total += total; - that.testsCompleted++; - - // TODO: xxxpedro how is these values different from "that" ones? (that.total) - stats.failed += failures; - stats.passed += (total-failures); - stats.total += total; - stats.runtime = new Date().getTime() - stats.started; - - var html = [ - 'Tests completed in ', - stats.runtime, - ' milliseconds.
                                ', - '', - stats.passed, - ' tests of ', - stats.total, - ' passed, ', - stats.failed, - ' failed.' - ].join(''); - - var result = id( "runner-result" ); - if (result) - { - result.innerHTML = html; - } - - // are all pages finished? - if (that.testsCompleted == tests.length) { - var banner = id("qunit-runner-banner"); - banner.className = banner.className + (that.failures > 0 ? " qunit-fail" : " qunit-pass"); - that.done(that.failures, that.total); - - // TODO: xxxpedro is there a better way to flag document title for errors? - QUnit.config.altertitle = true; - QUnit.test("",function(){ok(stats.failed == 0,"");}); - } - else { - if (that.sequential) { - that.nextPage(); - } - } - } - } - } - }; - - // if you need to be notified the runner is finished.. - runner.prototype.done = function(failures, total) { - }; - - QUnit.run = function(tests, sequential, done) { - /// - /// - /// Function(failures, total) will be called when all tests complete. - if (window.__qunit_runner) { - throw new Error("One runner per page please."); - } - window.__qunit_runner = new runner(tests, sequential, done); - }; - - - // runner test page hooks - if this page has a runner as parent - // then set up the metric callbacks - if (top.__qunit_runner) { - var runner = top.__qunit_runner; - QUnit.done = function(test) { - runner.pageProgress(window.frameElement, test.failed, test.total, document.title, true); - }; - QUnit.testStart = function(test) { - runner.pageProgress(window.frameElement, 0, 0, test.name + " started"); - }; - QUnit.testDone = function(test) { - runner.pageProgress(window.frameElement, test.failed, test.total, test.name); - }; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // QUnit Runner Internals - - var id = QUnit.id; - var addEvent = QUnit.addEvent; - - var stats = { - failed: 0, - passed: 0, - total: 0, - runtime: null, - started: null - }; - - function getURLParamaters() - { - if (QUnit && QUnit.urlParams) - { - var params = QUnit.urlParams; - var querystring = "?", - key; - for ( key in params ) { - querystring += encodeURIComponent( key ) + "=" + - encodeURIComponent( params[ key ] ) + "&"; - } - return querystring.slice( 0, -1 ); - } - return ""; - } - - function loadQUnitRunner(){ - - var container = id("runner-test-page-container"); - var result = id("runner-result"); - - // xxxpedro here we are trying to detect if the current page is a test runner - // we are assuming that only test runner will have the container element - if (container) - { - QUnit.config.altertitle = false; - - var close = document.createElement("div"); - close.id = "runner-close-fullscreen-view"; - close.innerHTML = "exit fullscreen mode"; - document.body.appendChild(close); - - addEvent(close, "click", function() - { - var frameElement = QUnit.id("runner-test-page-frame-fullscreen"); - frameElement.id = ""; - frameElement.contentWindow.document.documentElement.id = "runner-test-page"; - document.documentElement.className = ""; - }); - } - - if (!result && container) { - result = document.createElement("p"); - result.id = "runner-result"; - result.className = "result"; - container.parentNode.insertBefore(result, container); - } - } - - addEvent(window, "load", loadQUnitRunner); - -})(this); - - - -/* ############################################################################################## */ -/* ############################################################################################## */ -/* ############################################################################################## */ - -/* -// ************************************************************************************************ -// Cross-browser FBTest (QUnit wrapper), by Pedro Simonetti. -// ************************************************************************************************ -*/ - -(function(window) { - - var firebugLiteInstalledViaFBTest = false; - var firebugLiteInstallationWarning = false; - - window.FBTest = - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // basic lib functions - - extend: QUnit.extend, - - addEvent: QUnit.addEvent, - - id: QUnit.id, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // util functions - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - loadScript: function(url, async, callback) - { - async = typeof async == "undefined" ? true : async; - callback = callback || function(){}; - - var callbackCalled = false; - var script = document.createElement("script"); - script.type = "text/javascript"; - - if (async) - { - // IE - if (script.readyState) - { - script.onreadystatechange = function() - { - if (script.readyState == "loaded" || script.readyState == "complete") - { - callbackCalled = true; - script.onreadystatechange = null; - callback(); - } - }; - } - // Others - else - { - script.onload = function() - { - callbackCalled = true; - callback(); - }; - } - - script.src = url; - } - else - { - var xhr = FBTest.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - script.setAttribute("firebugSrc", url); - script.text = xhr.responseText; - } - - document.getElementsByTagName("head")[0].appendChild(script); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // FBTest Execution API - - stop: QUnit.stop, - - start: QUnit.start, - - run: function() { - FBTest.isRunnerContext = true; - - var sequential = true; // false to run tests simultaneously - var runnerDone = function(failures, total) { - // get notified when runner completes - }; - - var config = getFirebugConfig(); - - if (config.testList != "empty") - { - var testListURL = getTestListLocation(config); - FBTest.loadScript(testListURL, false); - - QUnit.run(this.testList, sequential, runnerDone); - } - }, - - loadTestList: function(list) - { - if (!this.testList) - this.testList = []; - - // prefixes all list items with the test base location - var prefix = getTestBaseLocation(); - for (var i=0, l=list.length; i timeout) - { - FBTest.ok(false, "FBTest.wait timed out!"); - FBTest.start(); - } - else - setTimeout(tryClosure, interval); - } - - }; - - FBTest.stop(); - setTimeout(tryClosure, interval); - } - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // FBTest Internals - - function installFirebug() - { - // flag the document as a test case so a simplified styling is applied - if (top.QUnit != QUnit) document.documentElement.id = "runner-test-page"; - - if (firebugLiteInstalledViaFBTest) return; - - if (typeof Firebug == "undefined") - { - var config = getFirebugConfig(); - - var url = getFirebugLocation(config); - if (config.debug) url = url + "#debug"; - - FBTest.loadScript(url, config.mode == "async"); - firebugLiteInstalledViaFBTest = true; - } - else if (!firebugLiteInstallationWarning) - { - alert("FBTest Warning: Firebug Lite is already installed into the test page, " + - "which means FBTest won't be able to load different versions/channels. "+ - "To fix this issue, remove the Firebug Lite - - - - -

                                -
                                -

                                Firebug Lite FBTest Runner

                                -

                                -

                                -
                                -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.4/tests/testlists/testlist1.4.js b/branches/firebug1.4/tests/testlists/testlist1.4.js deleted file mode 100644 index 63a34890..00000000 --- a/branches/firebug1.4/tests/testlists/testlist1.4.js +++ /dev/null @@ -1,18 +0,0 @@ -FBTest.loadTestList([ - /* Firebug */ - { page: "content/firebug/4239/issue4239.html" }, - - /* XHR */ - { page: "content/xhr/2756/issue2756.html" }, - { page: "content/xhr/2840/issue2840.html" }, - { page: "content/xhr/2846/issue2846.html" }, - { page: "content/xhr/2977/issue2977.html" }, - { page: "content/xhr/3504/issue3504.html" }, - { page: "content/xhr/4472/issue4472.html" }, - - /* CSS */ - { page: "content/css/3262/issue3262.html" }, - { page: "content/css/3326/issue3326.html" }, - { page: "content/css/4776/issue4776.html" }, - { page: "content/css/4777/issue4777.html" } -]); \ No newline at end of file diff --git a/branches/firebug1.4/tests/testlists/testlistExample.js b/branches/firebug1.4/tests/testlists/testlistExample.js deleted file mode 100644 index 83467602..00000000 --- a/branches/firebug1.4/tests/testlists/testlistExample.js +++ /dev/null @@ -1,5 +0,0 @@ -FBTest.loadTestList([ - { page: "examples/async.html" }, - { page: "examples/sync.html" }, - { page: "examples/fail.html" } -]); \ No newline at end of file diff --git a/branches/firebug1.5/build/.htaccess b/branches/firebug1.5/build/.htaccess deleted file mode 100644 index cb38bde8..00000000 --- a/branches/firebug1.5/build/.htaccess +++ /dev/null @@ -1,15 +0,0 @@ -AddType "text/javascript;charset=UTF-8" .jgz .js -AddEncoding gzip .jgz - - - ExpiresActive On - ExpiresDefault A86400 - - - - RewriteEngine on - #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR] - RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR] - RewriteCond %{HTTP:Accept-Encoding} !gzip - RewriteRule (.*)\.jgz$ $1.js [L] - \ No newline at end of file diff --git a/branches/firebug1.5/build/build.bat b/branches/firebug1.5/build/build.bat deleted file mode 100644 index 6e71c227..00000000 --- a/branches/firebug1.5/build/build.bat +++ /dev/null @@ -1,21 +0,0 @@ -rd firebug-lite /s /q -rd pub /s /q - -svn export "../" "./firebug-lite" - -md pub -xcopy ".\firebug-lite\skin\." ".\pub\skin" /s /i -copy "..\docs\beta\index.html" ".\pub\index.html" -copy "..\content\changelog.txt" ".\pub" -copy ".\firebug-lite\build\*.*" ".\pub" -del ".\pub\*.bat" - -tar -cv --file=firebug-lite.tar firebug-lite/* -gzip -9 < firebug-lite.tar > ./pub/firebug-lite.tar.tgz - -del firebug-lite.tar - -rd firebug-lite /s /q - -pause - diff --git a/branches/firebug1.5/build/chrome-extension-beta/background.html b/branches/firebug1.5/build/chrome-extension-beta/background.html deleted file mode 100644 index c4133a1d..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/background.html +++ /dev/null @@ -1,187 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension-beta/contentScript.js b/branches/firebug1.5/build/chrome-extension-beta/contentScript.js deleted file mode 100644 index 1dad3c1a..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/contentScript.js +++ /dev/null @@ -1,378 +0,0 @@ -// ************************************************************************************************* - -var isActive = false; -var isOpen = false; -var extensionURL = null; - -var contextMenuElementXPath = null; -var isListeningKeyboardActivation = false; - -// ************************************************************************************************* - -// restore Firebug Lite state -var loadStateData = function() -{ - var FirebugData = localStorage.getItem("Firebug"); - - isActive = false; - isOpen = false; - extensionURL = chrome.extension.getURL(""); - - if (FirebugData) - { - FirebugData = FirebugData.split(","); - isActive = FirebugData[0] == "1"; - isOpen = FirebugData[1] == "1"; - } -} - -// ************************************************************************************************* - -// load Firebug Lite application -var loadFirebug = function() -{ - document.documentElement.setAttribute("debug", isOpen); - - injectScriptText("("+listenConsoleCalls+")()"); - - // TODO: xxxpedro - change to XHR when Issue 41024 is solved - // Issue 41024: XHR using file: and chrome-extension: protocols not working. - // http://code.google.com/p/chromium/issues/detail?id=41024 - injectFirebugScript(); -} - -// TODO: think a better solution than using the stateData parameter, required -// by the keyboard activation. -var loadFirebugAndWait = function(callback, stateData) -{ - stateData = stateData || ('1,1,'+extensionURL); - localStorage.setItem('Firebug', stateData); - loadStateData(); - chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"}); - - document.documentElement.setAttribute("debug", isOpen); - - injectFirebugScript(); - - setTimeout(function(){ - waitFirebug(callback); - },0); -}; - -var waitFirebug = function(callback) -{ - if (document && document.getElementById("FirebugChannel")) - { - stopListeningKeyboardActivation(); - callback(); - } - else - setTimeout(function(){ waitFirebug(callback); }, 100); - -}; - -// ************************************************************************************************* - -// inject Firebug Lite script into the page -var injectFirebugScript = function(url) -{ - scriptElement = document.getElementById("FirebugLite"); - if (scriptElement) - { - firebugDispatch("FB_toggle"); - } - else - { - var script = document.createElement("script"); - - script.src = extensionURL + "firebug-lite-beta.js"; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - document.documentElement.appendChild(script); - - script.onload = function() { - // TODO: xxxpedro remove this files when deploy the new structure - script = document.createElement("script"); - script.src = extensionURL + "googleChrome.js"; - document.documentElement.appendChild(script); - }; - } -} - -// inject a script into the page -var injectScriptText = function(text) -{ - var script = document.createElement("script"); - var parent = document.documentElement; - - script.text = text; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - parent.appendChild(script); - parent.removeChild(script); -} - -// ************************************************************************************************* - -// communication with the background page -chrome.extension.onRequest.addListener -( - function(request, sender, sendResponse) - { - // check if Firebug Lite is active - if (request.name == "FB_isActive") - { - loadStateData(); - sendResponse({value: ""+isActive}); - } - // load Firebug Lite application - else if (request.name == "FB_loadFirebug") - { - setTimeout(function(){ - - loadStateData(); - - //loadFirebug(); - loadFirebugAndWait(function(){ - - isActive = true; - var message = isActive ? "FB_enableIcon" : "FB_disableIcon"; - chrome.extension.sendRequest({name: message}); - - loadChannel(); - }); - - },0); - - sendResponse({}); - } - // handle context menu click by sending "FB_contextMenuClick" message - // to Firebug Lite application - else if (request.name == "FB_contextMenuClick") - { - // TODO: if not active, activate first, wait the activation to complete - // and only then dispatch the event to Firebug Lite application - if (isActive) - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - else - loadFirebugAndWait(function(){ - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - }); - } - else if (request.name == "FB_deactivate") - { - listenKeyboardActivation(); - } - else - sendResponse({}); // snub them. - } -); - -// ************************************************************************************************* - -// communication with the page -var channel = null; -var channelEvent; - -var onFirebugChannelEvent = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - chrome.extension.sendRequest({name: channel.innerText}); - } -}; - -var loadChannel = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - } -} - -var firebugDispatch = function(data) -{ - if (!channel) - loadChannel(); - - channel.innerText = data; - channel.dispatchEvent(channelEvent); -}; - -// ************************************************************************************************* - -var onContextMenu = function(event) -{ - contextMenuElementXPath = getElementXPath(event.target); -}; - -var loadListeners = function() -{ - window.addEventListener("contextmenu", onContextMenu); - window.addEventListener("unload", unloadListeners); -}; - -var unloadListeners = function() -{ - if (channel) - { - channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - - window.removeEventListener("contextmenu", onContextMenu); - window.removeEventListener("unload", unloadListeners); -}; - -// ************************************************************************************************* - -// listen to console calls before Firebug Lite finishes to load -var listenConsoleCalls = function() -{ - // TODO: xxxpedro add all console functions - var fns = ["log", "info", "warn", "error"]; - - var listener = {consoleQueue: ["chromeConsoleQueueHack"]}; - var queue = listener.consoleQueue; - - for (var i=0, l=fns.length; i 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - return ob + ""; - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - - if (elt.offsetLeft) - coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - if (elt.offsetTop) - coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - if (otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -} - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -} - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -} - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -} - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -} - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -} - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -} - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = this.getXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports window.Firebug as Firebug - */ -window.Firebug = FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.3.2", - revision: "$Revision: 9759 $", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector) - Firebug.Inspector.create(); - - if (FBL.processAllStyleSheets) - processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - chromeMap[name].destroy(); - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - this.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - this.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.Options; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function(prefs) - { - this.restorePrefs(); - - prefs = prefs || eval("(" + readCookie("FirebugLite") + ")"); - - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - }, - - savePrefs: function() - { - var json = ['{'], jl = 0; - var Options = Env.Options; - - for (var name in Options) - { - if (Options.hasOwnProperty(name)) - { - var value = Firebug[name]; - - json[++jl] = '"'; - json[++jl] = name; - - var type = typeof value; - if (type == "boolean" || type == "number") - { - json[++jl] = '":'; - json[++jl] = value; - json[++jl] = ','; - } - else - { - json[++jl] = '":"'; - json[++jl] = value; - json[++jl] = '",'; - } - } - } - - json.length = jl--; - json[++jl] = '}'; - - createCookie("FirebugLite", json.join("")); - }, - - erasePrefs: function() - { - removeCookie("FirebugLite"); - } -}; - -Firebug.restorePrefs(); - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
                                • this.startMeasuring(view);
                                • - *
                                • var size = this.measureText(lineNoCharsSpacer);
                                • - *
                                • this.stopMeasuring();
                                • - *
                                - * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - FirebugChrome.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0 - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - } - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI", - height: 250 - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - isOpen: false, - height: 250, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - consoleMessageQueue: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = options.height + "px"; - - // avoid flickering during chrome rendering - if (isFirefox) - node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = FirebugChrome.height || options.height, - - options = [ - "true,top=", - Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0), - ",left=0,height=", - height, - ",width=", - screen.availWidth-10, // Opera opens popup in a new tab if it's too big! - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - },0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - if (oldChrome) - oldChrome.close(); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Save Options in Cookies", - type: "checkbox", - value: "saveCookies", - checked: Firebug.saveCookies, - command: "saveOptions" - }, - "-", - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - saveOptions: function(target) - { - var saveEnabled = target.getAttribute("checked"); - - if (!saveEnabled) this.restorePrefs(); - - this.updateMenu(target); - - return false; - }, - - restorePrefs: function(target) - { - Firebug.restorePrefs(); - - if(Firebug.saveCookies) - Firebug.savePrefs(); - else - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - - return false; - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(FirebugChrome.selectedPanelName); - - if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !FirebugChrome.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!FirebugChrome.isOpen) - { - FirebugChrome.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - setTimeout(function(){ - node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (FirebugChrome.isOpen || !this.isInitialized) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - FirebugChrome.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = FirebugChrome.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - FirebugChrome.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - FirebugChrome.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = element[CID]; - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - } - - return id; - }, - - unset: function(element) - { - var id = element[CID]; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - - }, - - key: function(element) - { - return element[CID]; - }, - - has: function(element) - { - return map.hasOwnProperty(element[CID]); - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

                                ([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -var fetchResource = function(url) -{ - var xhr = FBL.Ajax.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - return xhr.responseText; -}; - -var fetchProxyResource = function(url) -{ - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - return data ? data.contents : ""; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

                                "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
                                "; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function DomplateTag(tagName) -{ - this.tagName = tagName; -} - -function DomplateEmbed() -{ -} - -function DomplateLoop() -{ -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -( /** @scope ns-domplate */ function() { - -var womb = null; - -var domplate = FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateEmbed.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateLoop.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
                                "; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else - attrs.push(attr); - } - } - if (classAttr) - attrs.splice(0, 0, classAttr); - if (idAttr) - attrs.splice(0, 0, idAttr); - - return attrs; - }, - - shortAttrIterator: function(elt) - { - var attrs = []; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName == "id" || attr.nodeName == "class") - attrs.push(attr); - } - } - - return attrs; - }, - - getHidden: function(elt) - { - return isVisible(elt) ? "" : "nodeHidden"; - }, - - getXPath: function(elt) - { - return getElementTreeXPath(elt); - }, - - // TODO: xxxpedro remove this? - getNodeText: function(element) - { - var text = element.textContent; - if (Firebug.showFullTextNodes) - return text; - else - return cropString(text, 50); - }, - /**/ - - getNodeTextGroups: function(element) - { - var text = element.textContent; - if (!Firebug.showFullTextNodes) - { - text=cropString(text,50); - } - - var escapeGroups=[]; - - if (Firebug.showTextNodesWithWhitespace) - escapeGroups.push({ - 'group': 'whitespace', - 'class': 'nodeWhiteSpace', - 'extra': { - '\t': '_Tab', - '\n': '_Para', - ' ' : '_Space' - } - }); - if (Firebug.showTextNodesWithEntities) - escapeGroups.push({ - 'group':'text', - 'class':'nodeTextEntity', - 'extra':{} - }); - - if (escapeGroups.length) - return escapeGroupsForEntities(text, escapeGroups); - else - return [{str:text,'class':'',extra:''}]; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyHTML: function(elt) - { - var html = getElementXML(elt); - copyToClipboard(html); - }, - - copyInnerHTML: function(elt) - { - copyToClipboard(elt.innerHTML); - }, - - copyXPath: function(elt) - { - var xpath = getElementXPath(elt); - copyToClipboard(xpath); - }, - - persistor: function(context, xpath) - { - var elts = xpath - ? getElementsByXPath(context.window.document, xpath) - : null; - - return elts && elts.length ? elts[0] : null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "element", - - supportsObject: function(object) - { - //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string"; - return instanceOf(object, "Element"); - }, - - browseObject: function(elt, context) - { - var tag = elt.nodeName.toLowerCase(); - if (tag == "script") - openNewTab(elt.src); - else if (tag == "link") - openNewTab(elt.href); - else if (tag == "a") - openNewTab(elt.href); - else if (tag == "img") - openNewTab(elt.src); - - return true; - }, - - persistObject: function(elt, context) - { - var xpath = getElementXPath(elt); - - return bind(this.persistor, top, xpath); - }, - - getTitle: function(element, context) - { - return getElementCSSSelector(element); - }, - - getTooltip: function(elt) - { - return this.getXPath(elt); - }, - - getContextMenuItems: function(elt, target, context) - { - var monitored = areEventsMonitored(elt, null, context); - - return [ - {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) }, - {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) }, - {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) }, - "-", - {label: "ShowEventsInConsole", type: "checkbox", checked: monitored, - command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) }, - "-", - {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) } - ]; - } -}); - -// ************************************************************************************************ - -this.TextNode = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "TextNode"), - " textContent="", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), """, - ">" - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "textNode", - - supportsObject: function(object) - { - return object instanceof Text; - } -}); - -// ************************************************************************************************ - -this.Document = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(doc) - { - return doc.location ? getFileName(doc.location.href) : ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Document || object instanceof XMLDocument; - return instanceOf(object, "Document"); - }, - - browseObject: function(doc, context) - { - openNewTab(doc.location.href); - return true; - }, - - persistObject: function(doc, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window.document; - }, - - getTitle: function(win, context) - { - return "document"; - }, - - getTooltip: function(doc) - { - return doc.location.href; - } -}); - -// ************************************************************************************************ - -this.StyleSheet = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(styleSheet) - { - return getFileName(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(styleSheet) - { - copyToClipboard(styleSheet.href); - }, - - openInTab: function(styleSheet) - { - openNewTab(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof CSSStyleSheet; - return instanceOf(object, "CSSStyleSheet"); - }, - - browseObject: function(styleSheet, context) - { - openNewTab(styleSheet.href); - return true; - }, - - persistObject: function(styleSheet, context) - { - return bind(this.persistor, top, styleSheet.href); - }, - - getTooltip: function(styleSheet) - { - return styleSheet.href; - }, - - getContextMenuItems: function(styleSheet, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) } - ]; - }, - - persistor: function(context, href) - { - return getStyleSheetByHref(href, context); - } -}); - -// ************************************************************************************************ - -this.Window = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(win) - { - try - { - return (win && win.location && !win.closed) ? getFileName(win.location.href) : ""; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.Window window closed?"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - return instanceOf(object, "Window"); - }, - - browseObject: function(win, context) - { - openNewTab(win.location.href); - return true; - }, - - persistObject: function(win, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window; - }, - - getTitle: function(win, context) - { - return "window"; - }, - - getTooltip: function(win) - { - if (win && !win.closed) - return win.location.href; - } -}); - -// ************************************************************************************************ - -this.Event = domplate(Firebug.Rep, -{ - tag: TAG("$copyEventTag", {object: "$object|copyEvent"}), - - copyEventTag: - OBJECTLINK("$object|summarizeEvent"), - - summarizeEvent: function(event) - { - var info = [event.type, ' ']; - - var eventFamily = getEventFamily(event.type); - if (eventFamily == "mouse") - info.push("clientX=", event.clientX, ", clientY=", event.clientY); - else if (eventFamily == "key") - info.push("charCode=", event.charCode, ", keyCode=", event.keyCode); - - return info.join(""); - }, - - copyEvent: function(event) - { - return new EventCopy(event); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Event || object instanceof EventCopy; - return instanceOf(object, "Event") || instanceOf(object, "EventCopy"); - }, - - getTitle: function(event, context) - { - return "Event " + event.type; - } -}); - -// ************************************************************************************************ - -this.SourceLink = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - hideSourceLink: function(sourceLink) - { - return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true; - }, - - getSourceLinkTitle: function(sourceLink) - { - if (!sourceLink) - return ""; - - try - { - var fileName = getFileName(sourceLink.href); - fileName = decodeURIComponent(fileName); - fileName = cropString(fileName, 17); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc); - } - - return typeof sourceLink.line == "number" ? - fileName + " (line " + sourceLink.line + ")" : - fileName; - - // TODO: xxxpedro - //return $STRF("Line", [fileName, sourceLink.line]); - }, - - copyLink: function(sourceLink) - { - copyToClipboard(sourceLink.href); - }, - - openInTab: function(sourceLink) - { - openNewTab(sourceLink.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceLink", - - supportsObject: function(object) - { - return object instanceof SourceLink; - }, - - getTooltip: function(sourceLink) - { - return decodeURI(sourceLink.href); - }, - - inspectObject: function(sourceLink, context) - { - if (sourceLink.type == "js") - { - var scriptFile = getSourceFileByHref(sourceLink.href, context); - if (scriptFile) - return Firebug.chrome.select(sourceLink); - } - else if (sourceLink.type == "css") - { - // If an object is defined, treat it as the highest priority for - // inspect actions - if (sourceLink.object) { - Firebug.chrome.select(sourceLink.object); - return; - } - - var stylesheet = getStyleSheetByHref(sourceLink.href, context); - if (stylesheet) - { - var ownerNode = stylesheet.ownerNode; - if (ownerNode) - { - Firebug.chrome.select(sourceLink, "html"); - return; - } - - var panel = context.getPanel("stylesheet"); - if (panel && panel.getRuleByLine(stylesheet, sourceLink.line)) - return Firebug.chrome.select(sourceLink); - } - } - - // Fallback is to just open the view-source window on the file - viewSource(sourceLink.href, sourceLink.line); - }, - - browseObject: function(sourceLink, context) - { - openNewTab(sourceLink.href); - return true; - }, - - getContextMenuItems: function(sourceLink, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceFile = domplate(this.SourceLink, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - persistor: function(context, href) - { - return getSourceFileByHref(href, context); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceFile", - - supportsObject: function(object) - { - return object instanceof SourceFile; - }, - - persistObject: function(sourceFile) - { - return bind(this.persistor, top, sourceFile.href); - }, - - browseObject: function(sourceLink, context) - { - }, - - getTooltip: function(sourceFile) - { - return sourceFile.href; - } -}); - -// ************************************************************************************************ - -this.StackFrame = domplate(Firebug.Rep, // XXXjjb Since the repObject is fn the stack does not have correct line numbers -{ - tag: - OBJECTBLOCK( - A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"), - " ( ", - FOR("arg", "$object|argIterator", - TAG("$arg.tag", {object: "$arg.value"}), - SPAN({"class": "arrayComma"}, "$arg.delim") - ), - " )", - SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle") - ), - - getCallName: function(frame) - { - //TODO: xxxpedro reps StackFrame - return frame.name || "anonymous"; - - //return getFunctionName(frame.script, frame.context); - }, - - getSourceLinkTitle: function(frame) - { - //TODO: xxxpedro reps StackFrame - var fileName = cropString(getFileName(frame.href), 20); - return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : ""); - - var fileName = cropString(getFileName(frame.href), 17); - return $STRF("Line", [fileName, frame.lineNo]); - }, - - argIterator: function(frame) - { - if (!frame.args) - return []; - - var items = []; - - for (var i = 0; i < frame.args.length; ++i) - { - var arg = frame.args[i]; - - if (!arg) - break; - - var rep = Firebug.getRep(arg.value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var delim = (i == frame.args.length-1 ? "" : ", "); - - items.push({name: arg.name, value: arg.value, tag: tag, delim: delim}); - } - - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackFrame", - - supportsObject: function(object) - { - return object instanceof StackFrame; - }, - - inspectObject: function(stackFrame, context) - { - var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js"); - Firebug.chrome.select(sourceLink); - }, - - getTooltip: function(stackFrame, context) - { - return $STRF("Line", [stackFrame.href, stackFrame.lineNo]); - } - -}); - -// ************************************************************************************************ - -this.StackTrace = domplate(Firebug.Rep, -{ - tag: - FOR("frame", "$object.frames focusRow", - TAG(this.StackFrame.tag, {object: "$frame"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackTrace", - - supportsObject: function(object) - { - return object instanceof StackTrace; - } -}); - -// ************************************************************************************************ - -this.jsdStackFrame = domplate(Firebug.Rep, -{ - inspectable: false, - - supportsObject: function(object) - { - return (object instanceof jsdIStackFrame) && (object.isValid); - }, - - getTitle: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - return getFunctionName(frame.script, context); - }, - - getTooltip: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame); - if (sourceInfo) - return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]); - else - return $STRF("Line", [frame.script.fileName, frame.line]); - }, - - getContextMenuItems: function(frame, target, context) - { - var fn = frame.script.functionObject.getWrappedValue(); - return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script); - } -}); - -// ************************************************************************************************ - -this.ErrorMessage = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({ - $hasTwisty: "$object|hasStackTrace", - $hasBreakSwitch: "$object|hasBreakSwitch", - $breakForError: "$object|hasErrorBreak", - _repObject: "$object", - _stackTrace: "$object|getLastErrorStackTrace", - onclick: "$onToggleError"}, - - DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'}, - "$object.message|getMessage" - ), - DIV({"class": "errorTrace"}), - DIV({"class": "errorSourceBox errorSource-$object|getSourceType"}, - IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}), - A({"class": "errorSource a11yFocus"}, "$object|getLine") - ), - TAG(this.SourceLink.tag, {object: "$object|getSourceLink"}) - ), - - getLastErrorStackTrace: function(error) - { - return error.trace; - }, - - hasStackTrace: function(error) - { - var url = error.href.toString(); - var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1); - return !fromCommandLine && error.trace; - }, - - hasBreakSwitch: function(error) - { - return error.href && error.lineNo > 0; - }, - - hasErrorBreak: function(error) - { - return fbs.hasErrorBreakpoint(error.href, error.lineNo); - }, - - getMessage: function(message) - { - var re = /\[Exception... "(.*?)" nsresult:/; - var m = re.exec(message); - return m ? m[1] : message; - }, - - getLine: function(error) - { - if (error.category == "js") - { - if (error.source) - return cropString(error.source, 80); - else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1) - return cropString(error.getSourceLine(), 80); - } - }, - - getSourceLink: function(error) - { - var ext = error.category == "css" ? "css" : "js"; - return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null; - }, - - getSourceType: function(error) - { - // Errors occurring inside of HTML event handlers look like "foo.html (line 1)" - // so let's try to skip those - if (error.source) - return "syntax"; - else if (error.lineNo == 1 && getFileExtension(error.href) != "js") - return "none"; - else if (error.category == "css") - return "none"; - else if (!error.href || !error.lineNo) - return "none"; - else - return "exec"; - }, - - onToggleError: function(event) - { - var target = event.currentTarget; - if (hasClass(event.target, "errorBreak")) - { - this.breakOnThisError(target.repObject); - } - else if (hasClass(event.target, "errorSource")) - { - var panel = Firebug.getElementPanel(event.target); - this.inspectObject(target.repObject, panel.context); - } - else if (hasClass(event.target, "errorTitle")) - { - var traceBox = target.childNodes[1]; - toggleClass(target, "opened"); - event.target.setAttribute('aria-checked', hasClass(target, "opened")); - if (hasClass(target, "opened")) - { - if (target.stackTrace) - var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox); - if (Firebug.A11yModel.enabled) - { - var panel = Firebug.getElementPanel(event.target); - dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]); - } - } - else - clearNode(traceBox); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyError: function(error) - { - var message = [ - this.getMessage(error.message), - error.href, - "Line " + error.lineNo - ]; - copyToClipboard(message.join("\n")); - }, - - breakOnThisError: function(error) - { - if (this.hasErrorBreak(error)) - Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo); - else - Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "errorMessage", - inspectable: false, - - supportsObject: function(object) - { - return object instanceof ErrorMessage; - }, - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - FirebugReps.SourceLink.inspectObject(sourceLink, context); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - var items = [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) } - ]; - - if (error.category == "css") - { - items.push( - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - - optionMenu("BreakOnAllErrors", "breakOnErrors") - ); - } - - return items; - } -}); - -// ************************************************************************************************ - -this.Assert = domplate(Firebug.Rep, -{ - tag: - DIV( - DIV({"class": "errorTitle"}), - DIV({"class": "assertDescription"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "assert", - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - Firebug.chrome.select(sourceLink); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - return [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) }, - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors, - command: bindFixed(this.breakOnAllErrors, this, error) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceText = domplate(Firebug.Rep, -{ - tag: - DIV( - FOR("line", "$object|lineIterator", - DIV({"class": "sourceRow", role : "presentation"}, - SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"), - SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text") - ) - ) - ), - - lineIterator: function(sourceText) - { - var maxLineNoChars = (sourceText.lines.length + "").length; - var list = []; - - for (var i = 0; i < sourceText.lines.length; ++i) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNo = (i+1) + ""; - while (lineNo.length < maxLineNoChars) - lineNo = " " + lineNo; - - list.push({lineNo: lineNo, text: sourceText.lines[i]}); - } - - return list; - }, - - getHTML: function(sourceText) - { - return getSourceLineRange(sourceText, 1, sourceText.lines.length); - } -}); - -//************************************************************************************************ -this.nsIDOMHistory = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showHistory"}, - OBJECTLINK("$object|summarizeHistory") - ), - - className: "nsIDOMHistory", - - summarizeHistory: function(history) - { - try - { - var items = history.length; - return items + " history entries"; - } - catch(exc) - { - return "object does not support history (nsIDOMHistory)"; - } - }, - - showHistory: function(history) - { - try - { - var items = history.length; // if this throws, then unsupported - Firebug.chrome.select(history); - } - catch (exc) - { - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object, type) - { - return (object instanceof Ci.nsIDOMHistory); - } -}); - -// ************************************************************************************************ -this.ApplicationCache = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showApplicationCache"}, - OBJECTLINK("$object|summarizeCache") - ), - - summarizeCache: function(applicationCache) - { - try - { - return applicationCache.length + " items in offline cache"; - } - catch(exc) - { - return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264"; - } - }, - - showApplicationCache: function(event) - { - openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "applicationCache", - - supportsObject: function(object, type) - { - if (Ci.nsIDOMOfflineResourceList) - return (object instanceof Ci.nsIDOMOfflineResourceList); - } - -}); - -this.Storage = domplate(Firebug.Rep, -{ - tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")), - - summarize: function(storage) - { - return storage.length +" items in Storage"; - }, - show: function(storage) - { - openNewTab("http://dev.w3.org/html5/webstorage/#storage-0"); - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "Storage", - - supportsObject: function(object, type) - { - return (object instanceof Storage); - } - -}); - -// ************************************************************************************************ -Firebug.registerRep( - //this.nsIDOMHistory, // make this early to avoid exceptions - this.Undefined, - this.Null, - this.Number, - this.String, - this.Window, - //this.ApplicationCache, // must come before Arr (array) else exceptions. - //this.ErrorMessage, - this.Element, - //this.TextNode, - this.Document, - this.StyleSheet, - this.Event, - //this.SourceLink, - //this.SourceFile, - //this.StackTrace, - //this.StackFrame, - //this.jsdStackFrame, - //this.jsdScript, - //this.NetFile, - this.Property, - this.Except, - this.Arr -); - -Firebug.setDefaultReps(this.Func, this.Obj); - -}}); - -// ************************************************************************************************ -/* - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source" - * in only this file reps.js. John J. Barton June 2007. - * -Software License Agreement (BSD License) - -Copyright (c) 2006, Yahoo! Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Yahoo! Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Yahoo! Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * / - */ - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var saveTimeout = 400; -var pageAmount = 10; - -// ************************************************************************************************ -// Globals - -var currentTarget = null; -var currentGroup = null; -var currentPanel = null; -var currentEditor = null; - -var defaultEditor = null; - -var originalClassName = null; - -var originalValue = null; -var defaultValue = null; -var previousValue = null; - -var invalidEditor = false; -var ignoreNextInput = false; - -// ************************************************************************************************ - -Firebug.Editor = extend(Firebug.Module, -{ - supportsStopEvent: true, - - dispatchName: "editor", - tabCharacter: " ", - - startEditing: function(target, value, editor) - { - this.stopEditing(); - - if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter")) - return; - - var panel = Firebug.getElementPanel(target); - if (!panel.editable) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.startEditing " + value, target); - - defaultValue = target.getAttribute("defaultValue"); - if (value == undefined) - { - var textContent = isIE ? "innerText" : "textContent"; - value = target[textContent]; - if (value == defaultValue) - value = ""; - } - - originalValue = previousValue = value; - - invalidEditor = false; - currentTarget = target; - currentPanel = panel; - currentGroup = getAncestorByClass(target, "editGroup"); - - currentPanel.editing = true; - - var panelEditor = currentPanel.getEditor(target, value); - currentEditor = editor ? editor : panelEditor; - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - var inlineParent = getInlineParent(target); - var targetSize = getOffsetSize(inlineParent); - - setClass(panel.panelNode, "editing"); - setClass(target, "editing"); - if (currentGroup) - setClass(currentGroup, "editing"); - - currentEditor.show(target, currentPanel, value, targetSize); - //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]); - currentEditor.beginEditing(target, value); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Editor start panel "+currentPanel.name); - this.attachListeners(currentEditor, panel.context); - }, - - stopEditing: function(cancel) - { - if (!currentTarget) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout); - - clearTimeout(this.saveTimeout); - delete this.saveTimeout; - - this.detachListeners(currentEditor, currentPanel.context); - - removeClass(currentPanel.panelNode, "editing"); - removeClass(currentTarget, "editing"); - if (currentGroup) - removeClass(currentGroup, "editing"); - - var value = currentEditor.getValue(); - if (value == defaultValue) - value = ""; - - var removeGroup = currentEditor.endEditing(currentTarget, value, cancel); - - try - { - if (cancel) - { - //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]); - if (value != originalValue) - this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue); - - if (removeGroup && !originalValue && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else if (!value) - { - this.saveEditAndNotifyListeners(currentTarget, null, previousValue); - - if (removeGroup && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else - this.save(value); - } - catch (exc) - { - //throw exc.message; - //ERROR(exc); - } - - currentEditor.hide(); - currentPanel.editing = false; - - //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]); - //if (FBTrace.DBG_EDITOR) - // FBTrace.sysout("Editor stop panel "+currentPanel.name); - - currentTarget = null; - currentGroup = null; - currentPanel = null; - currentEditor = null; - originalValue = null; - invalidEditor = false; - - return value; - }, - - cancelEditing: function() - { - return this.stopEditing(true); - }, - - update: function(saveNow) - { - if (this.saveTimeout) - clearTimeout(this.saveTimeout); - - invalidEditor = true; - - currentEditor.layout(); - - if (saveNow) - this.save(); - else - { - var context = currentPanel.context; - this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout); - } - }, - - save: function(value) - { - if (!invalidEditor) - return; - - if (value == undefined) - value = currentEditor.getValue(); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")); - try - { - this.saveEditAndNotifyListeners(currentTarget, value, previousValue); - - previousValue = value; - invalidEditor = false; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("editor.save FAILS "+exc, exc); - } - }, - - saveEditAndNotifyListeners: function(currentTarget, value, previousValue) - { - currentEditor.saveEdit(currentTarget, value, previousValue); - //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]); - }, - - setEditTarget: function(element) - { - if (!element) - { - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]); - this.stopEditing(); - } - else if (hasClass(element, "insertBefore")) - this.insertRow(element, "before"); - else if (hasClass(element, "insertAfter")) - this.insertRow(element, "after"); - else - this.startEditing(element); - }, - - tabNextEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var nextEditable = currentTarget; - do - { - nextEditable = !value && currentGroup - ? getNextOutsider(nextEditable, currentGroup) - : getNextByClass(nextEditable, "editable"); - } - while (nextEditable && !nextEditable.offsetHeight); - - this.setEditTarget(nextEditable); - }, - - tabPreviousEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var prevEditable = currentTarget; - do - { - prevEditable = !value && currentGroup - ? getPreviousOutsider(prevEditable, currentGroup) - : getPreviousByClass(prevEditable, "editable"); - } - while (prevEditable && !prevEditable.offsetHeight); - - this.setEditTarget(prevEditable); - }, - - insertRow: function(relative, insertWhere) - { - var group = - relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget; - var value = this.stopEditing(); - - currentPanel = Firebug.getElementPanel(group); - - currentEditor = currentPanel.getEditor(group, value); - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - currentGroup = currentEditor.insertNewRow(group, insertWhere); - if (!currentGroup) - return; - - var editable = hasClass(currentGroup, "editable") - ? currentGroup - : getNextByClass(currentGroup, "editable"); - - if (editable) - this.setEditTarget(editable); - }, - - insertRowForObject: function(relative) - { - var container = getAncestorByClass(relative, "insertInto"); - if (container) - { - relative = getChildByClass(container, "insertBefore"); - if (relative) - this.insertRow(relative, "before"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - attachListeners: function(editor, context) - { - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - addEvent(win, "resize", this.onResize); - addEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - - this.listeners = [ - chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this)) - ]; - - if (editor.arrowCompletion) - { - this.listeners.push( - chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)), - chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)), - chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)), - chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount)) - ); - } - - if (currentEditor.tabNavigation) - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")), - chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this)) - ); - } - else if (currentEditor.multiLine) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, insertTab) - ); - } - else - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this)) - ); - - if (currentEditor.tabCompletion) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)), - chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1)) - ); - } - } - }, - - detachListeners: function(editor, context) - { - if (!this.listeners) - return; - - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - removeEvent(win, "resize", this.onResize); - removeEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - if (chrome) - { - for (var i = 0; i < this.listeners.length; ++i) - chrome.keyIgnore(this.listeners[i]); - } - - delete this.listeners; - }, - - onResize: function(event) - { - currentEditor.layout(true); - }, - - onBlur: function(event) - { - if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box)) - this.stopEditing(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - Firebug.Module.initialize.apply(this, arguments); - - this.onResize = bindFixed(this.onResize, this); - this.onBlur = bind(this.onBlur, this); - }, - - disable: function() - { - this.stopEditing(); - }, - - showContext: function(browser, context) - { - this.stopEditing(); - }, - - showPanel: function(browser, panel) - { - this.stopEditing(); - } -}); - -// ************************************************************************************************ -// BaseEditor - -Firebug.BaseEditor = extend(Firebug.MeasureBox, -{ - getValue: function() - { - }, - - setValue: function(value) - { - }, - - show: function(target, panel, value, textSize, targetSize) - { - }, - - hide: function() - { - }, - - layout: function(forceAll) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for context menus within inline editors. - - getContextMenuItems: function(target) - { - var items = []; - items.push({label: "Cut", commandID: "cmd_cut"}); - items.push({label: "Copy", commandID: "cmd_copy"}); - items.push({label: "Paste", commandID: "cmd_paste"}); - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Editor Module listeners will get "onBeginEditing" just before this call - - beginEditing: function(target, value) - { - }, - - // Editor Module listeners will get "onSaveEdit" just after this call - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - } -}); - -// ************************************************************************************************ -// InlineEditor - -// basic inline editor attributes -var inlineEditorAttributes = { - "class": "textEditorInner", - - type: "text", - spellcheck: "false", - - onkeypress: "$onKeyPress", - - onoverflow: "$onOverflow", - oncontextmenu: "$onContextMenu" -}; - -// IE does not support the oninput event, so we're using the onkeydown to signalize -// the relevant keyboard events, and the onpropertychange to actually handle the -// input event, which should happen after the onkeydown event is fired and after the -// value of the input is updated, but before the onkeyup and before the input (with the -// new value) is rendered -if (isIE) -{ - inlineEditorAttributes.onpropertychange = "$onInput"; - inlineEditorAttributes.onkeydown = "$onKeyDown"; -} -// for other browsers we use the oninput event -else -{ - inlineEditorAttributes.oninput = "$onInput"; -} - -Firebug.InlineEditor = function(doc) -{ - this.initializeInline(doc); -}; - -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor, -{ - enterOnBlur: true, - outerMargin: 8, - shadowExpand: 7, - - tag: - DIV({"class": "inlineEditor"}, - DIV({"class": "textEditorTop1"}, - DIV({"class": "textEditorTop2"}) - ), - DIV({"class": "textEditorInner1"}, - DIV({"class": "textEditorInner2"}, - INPUT( - inlineEditorAttributes - ) - ) - ), - DIV({"class": "textEditorBottom1"}, - DIV({"class": "textEditorBottom2"}) - ) - ), - - inputTag : - INPUT({"class": "textEditorInner", type: "text", - /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"} - ), - - expanderTag: - IMG({"class": "inlineExpander", src: "blank.gif"}), - - initialize: function() - { - this.fixedWidth = false; - this.completeAsYouType = true; - this.tabNavigation = true; - this.multiLine = false; - this.tabCompletion = false; - this.arrowCompletion = true; - this.noWrap = true; - this.numeric = false; - }, - - destroy: function() - { - this.destroyInput(); - }, - - initializeInline: function(doc) - { - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Firebug.InlineEditor initializeInline()"); - - //this.box = this.tag.replace({}, doc, this); - this.box = this.tag.append({}, doc.body, this); - - //this.input = this.box.childNodes[1].firstChild.firstChild; // XXXjjb childNode[1] required - this.input = this.box.getElementsByTagName("input")[0]; - - if (isIElt8) - { - this.input.style.top = "-8px"; - } - - this.expander = this.expanderTag.replace({}, doc, this); - this.initialize(); - }, - - destroyInput: function() - { - // XXXjoe Need to remove input/keypress handlers to avoid leaks - }, - - getValue: function() - { - return this.input.value; - }, - - setValue: function(value) - { - // It's only a one-line editor, so new lines shouldn't be allowed - return this.input.value = stripNewLines(value); - }, - - show: function(target, panel, value, targetSize) - { - //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]); - this.target = target; - this.panel = panel; - - this.targetSize = targetSize; - - // TODO: xxxpedro editor - //this.targetOffset = getClientOffset(target); - - // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the - // offset values of invisible elements, or empty elements. So, in order to get the - // correct values, we temporary inject a character in the innerHTML of the empty element, - // then we get the offset values, and next, we restore the original innerHTML value. - var innerHTML = target.innerHTML; - var isEmptyElement = !innerHTML; - if (isEmptyElement) - target.innerHTML = "."; - - // Get the position of the target element (that is about to be edited) - this.targetOffset = - { - x: target.offsetLeft, - y: target.offsetTop - }; - - // Restore the original innerHTML value of the empty element - if (isEmptyElement) - target.innerHTML = innerHTML; - - this.originalClassName = this.box.className; - - var classNames = target.className.split(" "); - for (var i = 0; i < classNames.length; ++i) - setClass(this.box, "editor-" + classNames[i]); - - // Make the editor match the target's font style - copyTextStyles(target, this.box); - - this.setValue(value); - - if (this.fixedWidth) - this.updateLayout(true); - else - { - this.startMeasuring(target); - this.textSize = this.measureInputText(value); - - // Correct the height of the box to make the funky CSS drop-shadow line up - var parent = this.input.parentNode; - if (hasClass(parent, "textEditorInner2")) - { - var yDiff = this.textSize.height - this.shadowExpand; - - // IE6 height offset - if (isIE6) - yDiff -= 2; - - parent.style.height = yDiff + "px"; - parent.parentNode.style.height = yDiff + "px"; - } - - this.updateLayout(true); - } - - this.getAutoCompleter().reset(); - - if (isIElt8) - panel.panelNode.appendChild(this.box); - else - target.offsetParent.appendChild(this.box); - - //console.log(target); - //this.input.select(); // it's called bellow, with setTimeout - - if (isIE) - { - // reset input style - this.input.style.fontFamily = "Monospace"; - this.input.style.fontSize = "11px"; - } - - // Insert the "expander" to cover the target element with white space - if (!this.fixedWidth) - { - copyBoxStyles(target, this.expander); - - target.parentNode.replaceChild(this.expander, target); - collapse(target, true); - this.expander.parentNode.insertBefore(target, this.expander); - } - - //TODO: xxxpedro - //scrollIntoCenterView(this.box, null, true); - - // Display the editor after change its size and position to avoid flickering - this.box.style.display = "block"; - - // we need to call input.focus() and input.select() with a timeout, - // otherwise it won't work on all browsers due to timing issues - var self = this; - setTimeout(function(){ - self.input.focus(); - self.input.select(); - },0); - }, - - hide: function() - { - this.box.className = this.originalClassName; - - if (!this.fixedWidth) - { - this.stopMeasuring(); - - collapse(this.target, false); - - if (this.expander.parentNode) - this.expander.parentNode.removeChild(this.expander); - } - - if (this.box.parentNode) - { - ///setSelectionRange(this.input, 0, 0); - this.input.blur(); - - this.box.parentNode.removeChild(this.box); - } - - delete this.target; - delete this.panel; - }, - - layout: function(forceAll) - { - if (!this.fixedWidth) - this.textSize = this.measureInputText(this.input.value); - - if (forceAll) - this.targetOffset = getClientOffset(this.expander); - - this.updateLayout(false, forceAll); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - beginEditing: function(target, value) - { - }, - - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - }, - - advanceToNext: function(target, charCode) - { - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleter: function() - { - if (!this.autoCompleter) - { - this.autoCompleter = new Firebug.AutoCompleter(null, - bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this), - true, false); - } - - return this.autoCompleter; - }, - - completeValue: function(amt) - { - //console.log("completeValue"); - - var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); - - if (selectRangeCallback) - { - Firebug.Editor.update(true); - - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - else - this.incrementValue(amt); - }, - - incrementValue: function(amt) - { - var value = this.input.value; - - // TODO: xxxpedro editor - if (isIE) - var start = getInputSelectionStart(this.input), end = start; - else - var start = this.input.selectionStart, end = this.input.selectionEnd; - - //debugger; - var range = this.getAutoCompleteRange(value, start); - if (!range || range.type != "int") - range = {start: 0, end: value.length-1}; - - var expr = value.substr(range.start, range.end-range.start+1); - preExpr = value.substr(0, range.start); - postExpr = value.substr(range.end+1); - - // See if the value is an integer, and if so increment it - var intValue = parseInt(expr); - if (!!intValue || intValue == 0) - { - var m = /\d+/.exec(expr); - var digitPost = expr.substr(m.index+m[0].length); - - var completion = intValue-amt; - this.input.value = preExpr + completion + digitPost + postExpr; - - setSelectionRange(this.input, start, end); - - Firebug.Editor.update(true); - - return true; - } - else - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onKeyPress: function(event) - { - //console.log("onKeyPress", event); - if (event.keyCode == 27 && !this.completeAsYouType) - { - var reverted = this.getAutoCompleter().revert(this.input); - if (reverted) - cancelEvent(event); - } - else if (event.charCode && this.advanceToNext(this.target, event.charCode)) - { - Firebug.Editor.tabNextEditor(); - cancelEvent(event); - } - else - { - if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57) - && event.charCode != 45 && event.charCode != 46) - FBL.cancelEvent(event); - else - { - // If the user backspaces, don't autocomplete after the upcoming input event - this.ignoreNextInput = event.keyCode == 8; - } - } - }, - - onOverflow: function() - { - this.updateLayout(false, false, 3); - }, - - onKeyDown: function(event) - { - //console.log("onKeyDown", event.keyCode); - if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8) - { - this.keyDownPressed = true; - } - }, - - onInput: function(event) - { - //debugger; - - // skip not relevant onpropertychange calls on IE - if (isIE) - { - if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) - return; - - this.keyDownPressed = false; - } - - //console.log("onInput", event); - //console.trace(); - - var selectRangeCallback; - - if (this.ignoreNextInput) - { - this.ignoreNextInput = false; - this.getAutoCompleter().reset(); - } - else if (this.completeAsYouType) - selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false); - else - this.getAutoCompleter().reset(); - - Firebug.Editor.update(); - - if (selectRangeCallback) - { - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - }, - - onContextMenu: function(event) - { - cancelEvent(event); - - var popup = $("fbInlineEditorPopup"); - FBL.eraseNode(popup); - - var target = event.target || event.srcElement; - var menu = this.getContextMenuItems(target); - if (menu) - { - for (var i = 0; i < menu.length; ++i) - FBL.createMenuItem(popup, menu[i]); - } - - if (!popup.firstChild) - return false; - - popup.openPopupAtScreen(event.screenX, event.screenY, true); - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateLayout: function(initial, forceAll, extraWidth) - { - if (this.fixedWidth) - { - this.box.style.left = (this.targetOffset.x) + "px"; - this.box.style.top = (this.targetOffset.y) + "px"; - - var w = this.target.offsetWidth; - var h = this.target.offsetHeight; - this.input.style.width = w + "px"; - this.input.style.height = (h-3) + "px"; - } - else - { - if (initial || forceAll) - { - this.box.style.left = this.targetOffset.x + "px"; - this.box.style.top = this.targetOffset.y + "px"; - } - - var approxTextWidth = this.textSize.width; - var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x) - - this.outerMargin; - - var wrapped = initial - ? this.noWrap && this.targetSize.height > this.textSize.height+3 - : this.noWrap && approxTextWidth > maxWidth; - - if (wrapped) - { - var style = isIE ? - this.target.currentStyle : - this.target.ownerDocument.defaultView.getComputedStyle(this.target, ""); - - targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight); - - // Make the width fit the remaining x-space from the offset to the far right - approxTextWidth = maxWidth - targetMargin; - - this.input.style.width = "100%"; - this.box.style.width = approxTextWidth + "px"; - } - else - { - // Make the input one character wider than the text value so that - // typing does not ever cause the textbox to scroll - var charWidth = this.measureInputText('m').width; - - // Sometimes we need to make the editor a little wider, specifically when - // an overflow happens, otherwise it will scroll off some text on the left - if (extraWidth) - charWidth *= extraWidth; - - var inputWidth = approxTextWidth + charWidth; - - if (initial) - { - if (isIE) - { - // TODO: xxxpedro - var xDiff = 13; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - else - this.box.style.width = "auto"; - } - else - { - // TODO: xxxpedro - var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - - this.input.style.width = inputWidth + "px"; - } - - this.expander.style.width = approxTextWidth + "px"; - this.expander.style.height = Math.max(this.textSize.height-3,0) + "px"; - } - - if (forceAll) - scrollIntoCenterView(this.box, null, true); - } -}); - -// ************************************************************************************************ -// Autocompletion - -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive) -{ - var candidates = null; - var originalValue = null; - var originalOffset = -1; - var lastExpr = null; - var lastOffset = -1; - var exprOffset = 0; - var lastIndex = 0; - var preParsed = null; - var preExpr = null; - var postExpr = null; - - this.revert = function(textBox) - { - if (originalOffset != -1) - { - textBox.value = originalValue; - - setSelectionRange(textBox, originalOffset, originalOffset); - - this.reset(); - return true; - } - else - { - this.reset(); - return false; - } - }; - - this.reset = function() - { - candidates = null; - originalValue = null; - originalOffset = -1; - lastExpr = null; - lastOffset = 0; - exprOffset = 0; - }; - - this.complete = function(context, textBox, cycle, reverse) - { - //console.log("complete", context, textBox, cycle, reverse); - // TODO: xxxpedro important port to firebug (variable leak) - //var value = lastValue = textBox.value; - var value = textBox.value; - - //var offset = textBox.selectionStart; - var offset = getInputSelectionStart(textBox); - - // The result of selectionStart() in Safari/Chrome is 1 unit less than the result - // in Firefox. Therefore, we need to manually adjust the value here. - if (isSafari && !cycle && offset >= 0) offset++; - - if (!selectMode && originalOffset != -1) - offset = originalOffset; - - if (!candidates || !cycle || offset != lastOffset) - { - originalOffset = offset; - originalValue = value; - - // Find the part of the string that will be parsed - var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0; - preParsed = value.substr(0, parseStart); - var parsed = value.substr(parseStart); - - // Find the part of the string that is being completed - var range = getRange ? getRange(parsed, offset-parseStart, context) : null; - if (!range) - range = {start: 0, end: parsed.length-1 }; - - var expr = parsed.substr(range.start, range.end-range.start+1); - preExpr = parsed.substr(0, range.start); - postExpr = parsed.substr(range.end+1); - exprOffset = parseStart + range.start; - - if (!cycle) - { - if (!expr) - return; - else if (lastExpr && lastExpr.indexOf(expr) != 0) - { - candidates = null; - } - else if (lastExpr && lastExpr.length >= expr.length) - { - candidates = null; - lastExpr = expr; - return; - } - } - - lastExpr = expr; - lastOffset = offset; - - var searchExpr; - - // Check if the cursor is at the very right edge of the expression, or - // somewhere in the middle of it - if (expr && offset != parseStart+range.end+1) - { - if (cycle) - { - // We are in the middle of the expression, but we can - // complete by cycling to the next item in the values - // list after the expression - offset = range.start; - searchExpr = expr; - expr = ""; - } - else - { - // We can't complete unless we are at the ridge edge - return; - } - } - - var values = evaluator(preExpr, expr, postExpr, context); - if (!values) - return; - - if (expr) - { - // Filter the list of values to those which begin with expr. We - // will then go on to complete the first value in the resulting list - candidates = []; - - if (caseSensitive) - { - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.indexOf(expr) == 0) - candidates.push(name); - } - } - else - { - var lowerExpr = caseSensitive ? expr : expr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0) - candidates.push(name); - } - } - - lastIndex = reverse ? candidates.length-1 : 0; - } - else if (searchExpr) - { - var searchIndex = -1; - - // Find the first instance of searchExpr in the values list. We - // will then complete the string that is found - if (caseSensitive) - { - searchIndex = values.indexOf(expr); - } - else - { - var lowerExpr = searchExpr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name && name.toLowerCase().indexOf(lowerExpr) == 0) - { - searchIndex = i; - break; - } - } - } - - // Nothing found, so there's nothing to complete to - if (searchIndex == -1) - return this.reset(); - - expr = searchExpr; - candidates = cloneArray(values); - lastIndex = searchIndex; - } - else - { - expr = ""; - candidates = []; - for (var i = 0; i < values.length; ++i) - { - if (values[i].substr) - candidates.push(values[i]); - } - lastIndex = -1; - } - } - - if (cycle) - { - expr = lastExpr; - lastIndex += reverse ? -1 : 1; - } - - if (!candidates.length) - return; - - if (lastIndex >= candidates.length) - lastIndex = 0; - else if (lastIndex < 0) - lastIndex = candidates.length-1; - - var completion = candidates[lastIndex]; - var preCompletion = expr.substr(0, offset-exprOffset); - var postCompletion = completion.substr(offset-exprOffset); - - textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr; - var offsetEnd = preParsed.length + preExpr.length + completion.length; - - // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange() - // is working well. - /* - if (textBox.setSelectionRange) - { - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - setTimeout(function(){ - if (selectMode) - textBox.setSelectionRange(offset, offsetEnd); - else - textBox.setSelectionRange(offsetEnd, offsetEnd); - },0); - } - /**/ - - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - /* - setTimeout(function(){ - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - },0); - - return true; - /**/ - - // The editor text should be selected only after calling the editor.update() - // in Safari/Chrome, otherwise the text won't be selected. So, we're returning - // a function to be called later (in the proper time for all browsers). - // - // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid - // returning a closure. the complete() function seems to be called only twice in - // editor.js. See if this function is called anywhere else (like css.js for example). - return function(){ - //console.log("autocomplete ", textBox, offset, offsetEnd); - - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - }; - /**/ - }; -}; - -// ************************************************************************************************ -// Local Helpers - -var getDefaultEditor = function getDefaultEditor(panel) -{ - if (!defaultEditor) - { - var doc = panel.document; - defaultEditor = new Firebug.InlineEditor(doc); - } - - return defaultEditor; -} - -/** - * An outsider is the first element matching the stepper element that - * is not an child of group. Elements tagged with insertBefore or insertAfter - * classes are also excluded from these results unless they are the sibling - * of group, relative to group's parent editGroup. This allows for the proper insertion - * rows when groups are nested. - */ -var getOutsider = function getOutsider(element, group, stepper) -{ - var parentGroup = getAncestorByClass(group.parentNode, "editGroup"); - var next; - do - { - next = stepper(next || element); - } - while (isAncestor(next, group) || isGroupInsert(next, parentGroup)); - - return next; -} - -var isGroupInsert = function isGroupInsert(next, group) -{ - return (!group || isAncestor(next, group)) - && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter")); -} - -var getNextOutsider = function getNextOutsider(element, group) -{ - return getOutsider(element, group, bind(getNextByClass, FBL, "editable")); -} - -var getPreviousOutsider = function getPreviousOutsider(element, group) -{ - return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable")); -} - -var getInlineParent = function getInlineParent(element) -{ - var lastInline = element; - for (; element; element = element.parentNode) - { - //var s = element.ownerDocument.defaultView.getComputedStyle(element, ""); - var s = isIE ? - element.currentStyle : - element.ownerDocument.defaultView.getComputedStyle(element, ""); - - if (s.display != "inline") - return lastInline; - else - lastInline = element; - } - return null; -} - -var insertTab = function insertTab() -{ - insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.Editor); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0) - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -// next-generation Console Panel (will override consoje.js) -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -/* -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -/**/ -/* - -// new offline message handler -o = {x:1,y:2}; - -r = Firebug.getRep(o); - -r.tag.tag.compile(); - -outputs = []; -html = r.tag.renderHTML({object:o}, outputs); - - -// finish rendering the template (the DOM part) -target = $("build"); -target.innerHTML = html; -root = target.firstChild; - -domArgs = [root, r.tag.context, 0]; -domArgs.push.apply(domArgs, r.tag.domArgs); -domArgs.push.apply(domArgs, outputs); -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs); - - - */ -var consoleQueue = []; -var lastHighlightedObject; -var FirebugContext = Env.browser; - -// ************************************************************************************************ - -var maxQueueRequests = 500; - -// ************************************************************************************************ - -Firebug.ConsoleBase = -{ - log: function(object, context, className, rep, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]); - return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle); - }, - - logFormatted: function(objects, context, className, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]); - return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle); - }, - - openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush) - { - return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle); - }, - - closeGroup: function(context, noThrottle) - { - return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true); - }, - - logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow) - { - // TODO: xxxpedro console console2 - noThrottle = true; // xxxpedro forced because there is no TabContext yet - - if (!context) - context = FirebugContext; - - if (FBTrace.DBG_ERRORS && !context) - FBTrace.sysout("Console.logRow has no context, skipping objects", objects); - - if (!context) - return; - - if (noThrottle || !context) - { - var panel = this.getPanel(context); - if (panel) - { - var row = panel.append(appender, objects, className, rep, sourceLink, noRow); - var container = panel.panelNode; - - // TODO: xxxpedro what is this? console console2 - /* - var template = Firebug.NetMonitor.NetLimit; - - while (container.childNodes.length > maxQueueRequests + 1) - { - clearDomplate(container.firstChild.nextSibling); - container.removeChild(container.firstChild.nextSibling); - panel.limit.limitInfo.totalCount++; - template.updateCounter(panel.limit); - } - dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]); - /**/ - return row; - } - else - { - consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]); - } - } - else - { - if (!context.throttle) - { - //FBTrace.sysout("console.logRow has not context.throttle! "); - return; - } - var args = [appender, objects, context, className, rep, sourceLink, true, noRow]; - context.throttle(this.logRow, this, args); - } - }, - - appendFormatted: function(args, row, context) - { - if (!context) - context = FirebugContext; - - var panel = this.getPanel(context); - panel.appendFormatted(args, row); - }, - - clear: function(context) - { - if (!context) - //context = FirebugContext; - context = Firebug.context; - - /* - if (context) - Firebug.Errors.clear(context); - /**/ - - var panel = this.getPanel(context, true); - if (panel) - { - panel.clear(); - } - }, - - // Override to direct output to your panel - getPanel: function(context, noCreate) - { - //return context.getPanel("console", noCreate); - // TODO: xxxpedro console console2 - return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null; - } - -}; - -// ************************************************************************************************ - -//TODO: xxxpedro -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase); -var ActivableConsole = extend(Firebug.ConsoleBase, -{ - isAlwaysEnabled: function() - { - return true; - } -}); - -Firebug.Console = Firebug.Console = extend(ActivableConsole, -//Firebug.Console = extend(ActivableConsole, -{ - dispatchName: "console", - - error: function() - { - Firebug.Console.logFormatted(arguments, Firebug.browser, "error"); - }, - - flush: function() - { - dispatch(this.fbListeners,"flush",[]); - - for (var i=0, length=consoleQueue.length; i objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - if (typeof(object) != "undefined") - this.appendObject(object, row, part.rep); - else - this.appendObject(part.type, row, FirebugReps.Text); - } - else - FirebugReps.Text.tag.append({object: part}, row); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - logText(" ", row); - var object = objects[i]; - if (typeof(object) == "string") - FirebugReps.Text.tag.append({object: object}, row); - else - this.appendObject(object, row); - } - }, - - appendOpenGroup: function(objects, row, rep) - { - if (!this.groups) - this.groups = []; - - setClass(row, "logGroup"); - setClass(row, "opened"); - - var innerRow = this.createRow("logRow"); - setClass(innerRow, "logGroupLabel"); - if (rep) - rep.tag.replace({"objects": objects}, innerRow); - else - this.appendFormatted(objects, innerRow, rep); - row.appendChild(innerRow); - //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]); - var groupBody = this.createRow("logGroupBody"); - row.appendChild(groupBody); - groupBody.setAttribute('role', 'group'); - this.groups.push(groupBody); - - addEvent(innerRow, "mousedown", function(event) - { - if (isLeftClick(event)) - { - //console.log(event.currentTarget == event.target); - - var target = event.target || event.srcElement; - - target = getAncestorByClass(target, "logGroupLabel"); - - var groupRow = target.parentNode; - - if (hasClass(groupRow, "opened")) - { - removeClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'false'); - } - else - { - setClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'true'); - } - } - }); - }, - - appendCloseGroup: function(object, row, rep) - { - if (this.groups) - this.groups.pop(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TODO: xxxpedro console2 - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - onMouseDown: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - var repObject = object ? object.repObject : null; - - if (!repObject) - { - return; - } - - if (hasClass(object, "objectLink-object")) - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(repObject, true); - } - else if (hasClass(object, "objectLink-element")) - { - Firebug.chrome.selectPanel("HTML"); - Firebug.chrome.getPanel("HTML").select(repObject, true); - } - - /* - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - /**/ - - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "Console", - title: "Console", - //searchable: true, - //breakable: true, - //editable: false, - - options: - { - hasCommandLine: true, - hasToolButtons: true, - isPreRendered: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.context = Firebug.browser.window; - this.document = Firebug.chrome.document; - this.onMouseMove = bind(this.onMouseMove, this); - this.onMouseDown = bind(this.onMouseDown, this); - - this.clearButton = new Button({ - element: $("fbConsole_btClear"), - owner: Firebug.Console, - onClick: Firebug.Console.clear - }); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); // loads persisted content - //Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content - - if (!this.persistedContent && Firebug.Console.isAlwaysEnabled()) - { - this.insertLogLimit(this.context); - - // Initialize log limit and listen for changes. - this.updateMaxLimit(); - - if (this.context.consoleReloadWarning) // we have not yet injected the console - this.insertReloadWarning(); - } - - //Firebug.Console.injector.install(Firebug.browser.window); - - addEvent(this.panelNode, "mouseover", this.onMouseMove); - addEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.clearButton.initialize(); - - //consolex.trace(); - //TODO: xxxpedro remove this - /* - Firebug.Console.openGroup(["asd"], null, "group", null, false); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - /**/ - - //TODO: xxxpedro preferences prefs - //prefs.addObserver(Firebug.prefDomain, this, false); - }, - - initializeNode : function() - { - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]); - if (FBTrace.DBG_CONSOLE) - { - this.onScroller = bind(this.onScroll, this); - addEvent(this.panelNode, "scroll", this.onScroller); - } - - this.onResizer = bind(this.onResize, this); - this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - addEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - destroyNode : function() - { - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]); - if (this.onScroller) - removeEvent(this.panelNode, "scroll", this.onScroller); - - //removeEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - shutdown: function() - { - //TODO: xxxpedro console console2 - this.clearButton.shutdown(); - - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - - //TODO: xxxpedro preferences prefs - //prefs.removeObserver(Firebug.prefDomain, this, false); - }, - - ishow: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel show; " + this.context.getName(), state); - - var enabled = Firebug.Console.isAlwaysEnabled(); - if (enabled) - { - Firebug.Console.disabledPanelPage.hide(this); - this.showCommandLine(true); - this.showToolbarButtons("fbConsoleButtons", true); - Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent); - - if (state && state.wasScrolledToBottom) - { - this.wasScrolledToBottom = state.wasScrolledToBottom; - delete state.wasScrolledToBottom; - } - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - } - else - { - this.hide(state); - Firebug.Console.disabledPanelPage.show(this); - } - }, - - ihide: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel hide; " + this.context.getName(), state); - - this.showToolbarButtons("fbConsoleButtons", false); - this.showCommandLine(false); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - destroy: function(state) - { - if (this.panelNode.offsetHeight) - this.wasScrolledToBottom = isScrolledToBottom(this.panelNode); - - if (state) - state.wasScrolledToBottom = this.wasScrolledToBottom; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - shouldBreakOnNext: function() - { - // xxxHonza: shouldn't the breakOnErrors be context related? - // xxxJJB, yes, but we can't support it because we can't yet tell - // which window the error is on. - return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors"); - }, - - getBreakOnNextTooltip: function(enabled) - { - return (enabled ? $STR("console.Disable Break On All Errors") : - $STR("console.Break On All Errors")); - }, - - enablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.enablePanel.apply(this, arguments); - - this.showCommandLine(true); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - }, - - disablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - - this.showCommandLine(false); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowJavaScriptErrors", "showJSErrors"), - optionMenu("ShowJavaScriptWarnings", "showJSWarnings"), - optionMenu("ShowCSSErrors", "showCSSErrors"), - optionMenu("ShowXMLErrors", "showXMLErrors"), - optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"), - optionMenu("ShowChromeErrors", "showChromeErrors"), - optionMenu("ShowChromeMessages", "showChromeMessages"), - optionMenu("ShowExternalErrors", "showExternalErrors"), - optionMenu("ShowNetworkErrors", "showNetworkErrors"), - this.getShowStackTraceMenuItem(), - this.getStrictOptionMenuItem(), - "-", - optionMenu("LargeCommandLine", "largeCommandLine") - ]; - }, - - getShowStackTraceMenuItem: function() - { - var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace"); - if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled()) - menuItem.disabled = true; - return menuItem; - }, - - getStrictOptionMenuItem: function() - { - var strictDomain = "javascript.options"; - var strictName = "strict"; - var strictValue = prefs.getBoolPref(strictDomain+"."+strictName); - return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue, - command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) }; - }, - - getBreakOnMenuItems: function() - { - //xxxHonza: no BON options for now. - /*return [ - optionMenu("console.option.Persist Break On Error", "persistBreakOnError") - ];*/ - return []; - }, - - search: function(text) - { - if (!text) - return; - - // Make previously visible nodes invisible again - if (this.matchSet) - { - for (var i in this.matchSet) - removeClass(this.matchSet[i], "matched"); - } - - this.matchSet = []; - - function findRow(node) { return getAncestorByClass(node, "logRow"); } - var search = new TextSearch(this.panelNode, findRow); - - var logRow = search.find(text); - if (!logRow) - { - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]); - return false; - } - for (; logRow; logRow = search.findNext()) - { - setClass(logRow, "matched"); - this.matchSet.push(logRow); - } - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]); - return true; - }, - - breakOnNext: function(breaking) - { - Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // private - - createRow: function(rowName, className) - { - var elt = this.document.createElement("div"); - elt.className = rowName + (className ? " " + rowName + "-" + className : ""); - return elt; - }, - - getTopContainer: function() - { - if (this.groups && this.groups.length) - return this.groups[this.groups.length-1]; - else - return this.panelNode; - }, - - filterLogRow: function(logRow, scrolledToBottom) - { - if (this.searchText) - { - setClass(logRow, "matching"); - setClass(logRow, "matched"); - - // Search after a delay because we must wait for a frame to be created for - // the new logRow so that the finder will be able to locate it - setTimeout(bindFixed(function() - { - if (this.searchFilter(this.searchText, logRow)) - this.matchSet.push(logRow); - else - removeClass(logRow, "matched"); - - removeClass(logRow, "matching"); - - if (scrolledToBottom) - scrollToBottom(this.panelNode); - }, this), 100); - } - }, - - searchFilter: function(text, logRow) - { - var count = this.panelNode.childNodes.length; - var searchRange = this.document.createRange(); - searchRange.setStart(this.panelNode, 0); - searchRange.setEnd(this.panelNode, count); - - var startPt = this.document.createRange(); - startPt.setStartBefore(logRow); - - var endPt = this.document.createRange(); - endPt.setStartAfter(logRow); - - return finder.Find(text, searchRange, startPt, endPt) != null; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - // xxxHonza check this out. - var prefDomain = "Firebug.extension."; - var prefName = data.substr(prefDomain.length); - if (prefName == "console.logLimit") - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = 1000; - //TODO: xxxpedro preferences log limit? - //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - }, - - showCommandLine: function(shouldShow) - { - //TODO: xxxpedro show command line important - return; - - if (shouldShow) - { - collapse(Firebug.chrome.$("fbCommandBox"), false); - Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome); - } - else - { - // Make sure that entire content of the Console panel is hidden when - // the panel is disabled. - Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine); - collapse(Firebug.chrome.$("fbCommandBox"), true); - } - }, - - onScroll: function(event) - { - // Update the scroll position flag if the position changes. - this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", wasScrolledToBottom: " + - this.context.getName(), event); - }, - - onResize: function(event) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight + - ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " + - this.panelNode.scrollHeight + ", " + this.context.getName(), event); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - } -}); - -// ************************************************************************************************ - -function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -} - -// ************************************************************************************************ - -var appendObject = Firebug.ConsolePanel.prototype.appendObject; -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted; -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup; -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup; - -// ************************************************************************************************ - -//Firebug.registerActivableModule(Firebug.Console); -Firebug.registerModule(Firebug.Console); -Firebug.registerPanel(Firebug.ConsolePanel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -var frameCounters = {}; -var traceRecursion = 0; - -Firebug.Console.injector = -{ - install: function(context) - { - var win = context.window; - - var consoleHandler = new FirebugConsoleHandler(context, win); - - var properties = - [ - "log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd", - "count", - "trace", - "profile", - "profileEnd", - "clear", - "open", - "close" - ]; - - var Handler = function(name) - { - var c = consoleHandler; - var f = consoleHandler[name]; - return function(){return f.apply(c,arguments)}; - }; - - var installer = function(c) - { - for (var i=0, l=properties.length; i 1) - { - traceRecursion--; - return; - } - - var frames = []; - - for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller) - { - if (wasVisited(fn)) break; - - var args = []; - - for (var i = 0, l = fn.arguments.length; i < l; ++i) - { - args.push({value: fn.arguments[i]}); - } - - frames.push({fn: fn, name: getFuncName(fn), args: args}); - } - - - // **************************************************************************************** - - try - { - (0)(); - } - catch(e) - { - var result = e; - - var stack = - result.stack || // Firefox / Google Chrome - result.stacktrace || // Opera - ""; - - stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks - var items = stack.split(/[\n\r]/); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Google Chrome - if (FBL.isSafari) - { - //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/; - //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - - var reChromeStackItemName = /\s*\($/; - var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/; - - var framePos = 0; - for (var i=4, length=items.length; i 1) - { - objects = [errorObject]; - for (var i = 1; i < args.length; i++) - objects.push(args[i]); - } - - var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle - row.scrollIntoView(); - } - - function getComponentsStackDump() - { - // Starting with our stack, walk back to the user-level code - var frame = Components.stack; - var userURL = win.location.href.toString(); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame); - - // Drop frames until we get into user code. - while (frame && FBL.isSystemURL(frame.filename) ) - frame = frame.caller; - - // Drop two more frames, the injected console function and firebugAppendConsole() - if (frame) - frame = frame.caller; - if (frame) - frame = frame.caller; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame); - - return frame; - } - - function getStackLink() - { - // TODO: xxxpedro console2 - return; - //return FBL.getFrameSourceLink(getComponentsStackDump()); - } - - function getJSDUserStack() - { - var trace = FBL.getCurrentStackTrace(context); - - var frames = trace ? trace.frames : null; - if (frames && (frames.length > 0) ) - { - var oldest = frames.length - 1; // 6 - 1 = 5 - for (var i = 0; i < frames.length; i++) - { - if (frames[oldest - i].href.indexOf("chrome:") == 0) break; - var fn = frames[oldest - i].fn + ""; - if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break; // command line - } - FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace); - trace.frames = trace.frames.slice(2 - i); // take the oldest frames, leave 2 behind they are injection code - - return trace; - } - else - return "Firebug failed to get stack trace with any frames"; - } -} - -// ************************************************************************************************ -// Register console namespace - -FBL.registerConsole = function() -{ - //TODO: xxxpedro console options override - //if (Env.Options.overrideConsole) - var win = Env.browser.window; - Firebug.Console.injector.install(win); -}; - -registerConsole(); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -// ************************************************************************************************ -// Globals - -var commandPrefix = ">>>"; -var reOpenBracket = /[\[\(\{]/; -var reCloseBracket = /[\]\)\}]/; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var commandHistory = []; -var commandPointer = -1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var isAutoCompleting = null; -var autoCompletePrefix = null; -var autoCompleteExpr = null; -var autoCompleteBuffer = null; -var autoCompletePosition = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var fbCommandLine = null; -var fbLargeCommandLine = null; -var fbLargeCommandButtons = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _completion = -{ - window: - [ - "console" - ], - - document: - [ - "getElementById", - "getElementsByTagName" - ] -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _stack = function(command) -{ - commandHistory.push(command); - commandPointer = commandHistory.length; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -// ************************************************************************************************ -// CommandLine - -Firebug.CommandLine = extend(Firebug.Module, -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - element: null, - isMultiLine: false, - isActive: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - initialize: function(doc) - { - this.clear = bind(this.clear, this); - this.enter = bind(this.enter, this); - - this.onError = bind(this.onError, this); - this.onKeyDown = bind(this.onKeyDown, this); - this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this); - - addEvent(Firebug.browser.window, "error", this.onError); - addEvent(Firebug.chrome.window, "error", this.onError); - }, - - shutdown: function(doc) - { - this.deactivate(); - - removeEvent(Firebug.browser.window, "error", this.onError); - removeEvent(Firebug.chrome.window, "error", this.onError); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - activate: function(multiLine, hideToggleIcon, onRun) - { - defineCommandLineAPI(); - - if (this.isActive) - { - if (this.isMultiLine == multiLine) return; - - this.deactivate(); - } - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - if (multiLine) - { - onRun = onRun || this.enter; - - this.isMultiLine = true; - - this.element = fbLargeCommandLine; - - addEvent(this.element, "keydown", this.onMultiLineKeyDown); - - addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton = new Button({ - element: $("fbCommand_btRun"), - owner: Firebug.CommandLine, - onClick: onRun - }); - - this.runButton.initialize(); - - this.clearButton = new Button({ - element: $("fbCommand_btClear"), - owner: Firebug.CommandLine, - onClick: this.clear - }); - - this.clearButton.initialize(); - } - else - { - this.isMultiLine = false; - this.element = fbCommandLine; - - if (!fbCommandLine) - return; - - addEvent(this.element, "keydown", this.onKeyDown); - } - - //Firebug.Console.log("activate", this.element); - - if (isOpera) - fixOperaTabKey(this.element); - - if(this.lastValue) - this.element.value = this.lastValue; - - this.isActive = true; - }, - - deactivate: function() - { - if (!this.isActive) return; - - //Firebug.Console.log("deactivate", this.element); - - this.isActive = false; - - this.lastValue = this.element.value; - - if (this.isMultiLine) - { - removeEvent(this.element, "keydown", this.onMultiLineKeyDown); - - removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton.destroy(); - this.clearButton.destroy(); - } - else - { - removeEvent(this.element, "keydown", this.onKeyDown); - } - - this.element = null - delete this.element; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focus: function() - { - this.element.focus(); - }, - - blur: function() - { - this.element.blur(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - clear: function() - { - this.element.value = ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - evaluate: function(expr) - { - // TODO: need to register the API in console.firebug.commandLineAPI - var api = "Firebug.CommandLine.API" - - var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error); - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - enter: function() - { - var command = this.element.value; - - if (!command) return; - - _stack(command); - - Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text); - - var result = this.evaluate(command); - - Firebug.Console.log(result); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - prevCommand: function() - { - if (commandPointer > 0 && commandHistory.length > 0) - this.element.value = commandHistory[--commandPointer]; - }, - - nextCommand: function() - { - var element = this.element; - - var limit = commandHistory.length -1; - var i = commandPointer; - - if (i < limit) - element.value = commandHistory[++commandPointer]; - - else if (i == limit) - { - ++commandPointer; - element.value = ""; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - autocomplete: function(reverse) - { - var element = this.element; - - var command = element.value; - var offset = getExpressionOffset(command); - - var valBegin = offset ? command.substr(0, offset) : ""; - var val = command.substr(offset); - - var buffer, obj, objName, commandBegin, result, prefix; - - // if it is the beginning of the completion - if(!isAutoCompleting) - { - - // group1 - command begin - // group2 - base object - // group3 - property prefix - var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/; - var r = reObj.exec(val); - - // parse command - if (r[1] || r[2] || r[3]) - { - commandBegin = r[1] || ""; - objName = r[2] || ""; - prefix = r[3] || ""; - } - else if (val == "") - { - commandBegin = objName = prefix = ""; - } else - return; - - isAutoCompleting = true; - - // find base object - if(objName == "") - obj = window; - - else - { - objName = objName.replace(/\.$/, ""); - - var n = objName.split("."); - var target = window, o; - - for (var i=0, ni; ni = n[i]; i++) - { - if (o = target[ni]) - target = o; - - else - { - target = null; - break; - } - } - obj = target; - } - - // map base object - if(obj) - { - autoCompletePrefix = prefix; - autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : ""); - autoCompletePosition = -1; - - buffer = autoCompleteBuffer = isIE ? - _completion[objName || "window"] || [] : []; - - for(var p in obj) - buffer.push(p); - } - - // if it is the continuation of the last completion - } else - buffer = autoCompleteBuffer; - - if (buffer) - { - prefix = autoCompletePrefix; - - var diff = reverse ? -1 : 1; - - for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i', msg, '', - '' - ]; - - // TODO: xxxpedro ajust to Console2 - //Firebug.Console.writeRow(html, "error"); - }, - - onKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - /*tab, shift, control, alt*/ - if (code != 9 && code != 16 && code != 17 && code != 18) - { - isAutoCompleting = false; - } - - if (code == 13 /* enter */) - { - this.enter(); - this.clear(); - } - else if (code == 27 /* ESC */) - { - setTimeout(this.clear, 0); - } - else if (code == 38 /* up */) - { - this.prevCommand(); - } - else if (code == 40 /* down */) - { - this.nextCommand(); - } - else if (code == 9 /* tab */) - { - this.autocomplete(e.shiftKey); - } - else - return; - - cancelEvent(e, true); - return false; - }, - - onMultiLineKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - if (code == 13 /* enter */ && e.ctrlKey) - { - this.enter(); - } - } -}); - -Firebug.registerModule(Firebug.CommandLine); - - -// ************************************************************************************************ -// - -function getExpressionOffset(command) -{ - // XXXjoe This is kind of a poor-man's JavaScript parser - trying - // to find the start of the expression that the cursor is inside. - // Not 100% fool proof, but hey... - - var bracketCount = 0; - - var start = command.length-1; - for (; start >= 0; --start) - { - var c = command[start]; - if ((c == "," || c == ";" || c == " ") && !bracketCount) - break; - if (reOpenBracket.test(c)) - { - if (bracketCount) - --bracketCount; - else - break; - } - else if (reCloseBracket.test(c)) - ++bracketCount; - } - - return start + 1; -} - -// ************************************************************************************************ -// CommandLine API - -var CommandLineAPI = -{ - $: function(id) - { - return Firebug.browser.document.getElementById(id) - }, - - $$: function(selector, context) - { - context = context || Firebug.browser.document; - return Firebug.Selector ? - Firebug.Selector(selector, context) : - Firebug.Console.error("Firebug.Selector module not loaded."); - }, - - $0: null, - - $1: null, - - dir: function(o) - { - Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable); - }, - - dirxml: function(o) - { - ///if (o instanceof Window) - if (instanceOf(o, "Window")) - o = o.document.documentElement; - ///else if (o instanceof Document) - else if (instanceOf(o, "Document")) - o = o.documentElement; - - // TODO: xxxpedro html3 - ///Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement); - var div = Firebug.Console.log(o, Firebug.context, "dirxml"); - var html = []; - Firebug.Reps.appendNode(o, html); - div.innerHTML = html.join(""); - - } -}; - -// ************************************************************************************************ - -var defineCommandLineAPI = function defineCommandLineAPI() -{ - Firebug.CommandLine.API = {}; - for (var m in CommandLineAPI) - if (!Env.browser.window[m]) - Firebug.CommandLine.API[m] = CommandLineAPI[m]; - - var stack = FirebugChrome.htmlSelectionStack; - if (stack) - { - Firebug.CommandLine.API.$0 = stack[0]; - Firebug.CommandLine.API.$1 = stack[1]; - } -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -if (Env.Options.disableXHRListener) - return; - -// ************************************************************************************************ -// XHRSpy - -var XHRSpy = function() -{ - this.requestHeaders = []; - this.responseHeaders = []; -}; - -XHRSpy.prototype = -{ - method: null, - url: null, - async: null, - - xhrRequest: null, - - href: null, - - loaded: false, - - logRow: null, - - responseText: null, - - requestHeaders: null, - responseHeaders: null, - - sourceLink: null, // {href:"file.html", line: 22} - - getURL: function() - { - return this.href; - } -}; - -// ************************************************************************************************ -// XMLHttpRequestWrapper - -var XMLHttpRequestWrapper = function(activeXObject) -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal variables - - var xhrRequest = typeof activeXObject != "undefined" ? - activeXObject : - new _XMLHttpRequest(), - - spy = new XHRSpy(), - - self = this, - - reqType, - reqUrl, - reqStartTS; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal methods - - var updateSelfPropertiesIgnore = { - abort: 1, - channel: 1, - getAllResponseHeaders: 1, - getInterface: 1, - getResponseHeader: 1, - mozBackgroundRequest: 1, - multipart: 1, - onreadystatechange: 1, - open: 1, - send: 1, - setRequestHeader: 1 - }; - - var updateSelfProperties = function() - { - if (supportsXHRIterator) - { - for (var propName in xhrRequest) - { - if (propName in updateSelfPropertiesIgnore) - continue; - - try - { - var propValue = xhrRequest[propName]; - - if (propValue && !isFunction(propValue)) - self[propName] = propValue; - } - catch(E) - { - //console.log(propName, E.message); - } - } - } - else - { - // will fail to read these xhrRequest properties if the request is not completed - if (xhrRequest.readyState == 4) - { - self.status = xhrRequest.status; - self.statusText = xhrRequest.statusText; - self.responseText = xhrRequest.responseText; - self.responseXML = xhrRequest.responseXML; - } - } - }; - - var updateXHRPropertiesIgnore = { - channel: 1, - onreadystatechange: 1, - readyState: 1, - responseBody: 1, - responseText: 1, - responseXML: 1, - status: 1, - statusText: 1, - upload: 1 - }; - - var updateXHRProperties = function() - { - for (var propName in self) - { - if (propName in updateXHRPropertiesIgnore) - continue; - - try - { - var propValue = self[propName]; - - if (propValue && !xhrRequest[propName]) - { - xhrRequest[propName] = propValue; - } - } - catch(E) - { - //console.log(propName, E.message); - } - } - }; - - var logXHR = function() - { - var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR); - - if (row) - { - setClass(row, "loading"); - spy.logRow = row; - } - }; - - var finishXHR = function() - { - var duration = new Date().getTime() - reqStartTS; - var success = xhrRequest.status == 200; - - var responseHeadersText = xhrRequest.getAllResponseHeaders(); - var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : []; - var reHeader = /^(\S+):\s*(.*)/; - - for (var i=0, l=responses.length; i 0; - - /**/ - - return this; -}; - -// ************************************************************************************************ -// ActiveXObject Wrapper (IE6 only) - -var _ActiveXObject; -var isIE6 = /msie 6/i.test(navigator.appVersion); - -if (isIE6) -{ - _ActiveXObject = window.ActiveXObject; - - var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; - - window.ActiveXObject = function(name) - { - var error = null; - - try - { - var activeXObject = new _ActiveXObject(name); - } - catch(e) - { - error = e; - } - finally - { - if (!error) - { - if (xhrObjects.indexOf(" " + name + " ") != -1) - return new XMLHttpRequestWrapper(activeXObject); - else - return activeXObject; - } - else - throw error.message; - } - }; -} - -// ************************************************************************************************ - -// Register the XMLHttpRequestWrapper for non-IE6 browsers -if (!isIE6) -{ - var _XMLHttpRequest = XMLHttpRequest; - window.XMLHttpRequest = function() - { - return new XMLHttpRequestWrapper(); - }; -} - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval = 300; -var indentWidth = 18; - -var cacheSession = null; -var contexts = new Array(); -var panelName = "net"; -var maxQueueRequests = 500; -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup -var activeRequests = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var mimeExtensionMap = -{ - "txt": "text/plain", - "html": "text/html", - "htm": "text/html", - "xhtml": "text/html", - "xml": "text/xml", - "css": "text/css", - "js": "application/x-javascript", - "jss": "application/x-javascript", - "jpg": "image/jpg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "png": "image/png", - "bmp": "image/bmp", - "swf": "application/x-shockwave-flash", - "flv": "video/x-flv" -}; - -var fileCategories = -{ - "undefined": 1, - "html": 1, - "css": 1, - "js": 1, - "xhr": 1, - "image": 1, - "flash": 1, - "txt": 1, - "bin": 1 -}; - -var textFileCategories = -{ - "txt": 1, - "html": 1, - "xhr": 1, - "css": 1, - "js": 1 -}; - -var binaryFileCategories = -{ - "bin": 1, - "flash": 1 -}; - -var mimeCategoryMap = -{ - "text/plain": "txt", - "application/octet-stream": "bin", - "text/html": "html", - "text/xml": "html", - "text/css": "css", - "application/x-javascript": "js", - "text/javascript": "js", - "application/javascript" : "js", - "image/jpeg": "image", - "image/jpg": "image", - "image/gif": "image", - "image/png": "image", - "image/bmp": "image", - "application/x-shockwave-flash": "flash", - "video/x-flv": "flash" -}; - -var binaryCategoryMap = -{ - "image": 1, - "flash" : 1 -}; - -// ************************************************************************************************ - -/** - * @module Represents a module object for the Net panel. This object is derived - * from Firebug.ActivableModule in order to support activation (enable/disable). - * This allows to avoid (performance) expensive features if the functionality is not necessary - * for the user. - */ -Firebug.NetMonitor = extend(Firebug.ActivableModule, -{ - dispatchName: "netMonitor", - - clear: function(context) - { - // The user pressed a Clear button so, remove content of the panel... - var panel = context.getPanel(panelName, true); - if (panel) - panel.clear(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - return; - - this.panelName = panelName; - - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - // HTTP observer must be registered now (and not in monitorContext, since if a - // page is opened in a new tab the top document request would be missed otherwise. - NetHttpObserver.registerObserver(); - NetHttpActivityObserver.registerObserver(); - - Firebug.Debugger.addListener(this.DebuggerListener); - }, - - shutdown: function() - { - return; - - prefs.removeObserver(Firebug.prefDomain, this, false); - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - - NetHttpObserver.unregisterObserver(); - NetHttpActivityObserver.unregisterObserver(); - - Firebug.Debugger.removeListener(this.DebuggerListener); - } -}); - - -/** - * @domplate Represents a template that is used to reneder detailed info about a request. - * This template is rendered when a request is expanded. - */ -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoBody", _repObject: "$file"}, - TAG("$infoTabs", {file: "$file"}), - TAG("$infoBodies", {file: "$file"}) - ), - - infoTabs: - DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"}, - A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Params", - $collapsed: "$file|hideParams"}, - $STR("URLParameters") - ), - A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Headers"}, - $STR("Headers") - ), - A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Post", - $collapsed: "$file|hidePost"}, - $STR("Post") - ), - A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Put", - $collapsed: "$file|hidePut"}, - $STR("Put") - ), - A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Response", - $collapsed: "$file|hideResponse"}, - $STR("Response") - ), - A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Cache", - $collapsed: "$file|hideCache"}, - $STR("Cache") - ), - A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Html", - $collapsed: "$file|hideHtml"}, - $STR("HTML") - ) - ), - - infoBodies: - DIV({"class": "netInfoBodies outerFocusRow"}, - TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel", - cellpadding: 0, cellspacing: 0}, TBODY()), - DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}), - PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"}, - TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("Cache")}) - ) - ), - DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"}, - IFRAME({"class": "netInfoHtmlPreview", "role": "document"}) - ) - ), - - headerDataTag: - FOR("param", "$headers", - TR({"role": "listitem"}, - TD({"class": "netInfoParamName", "role": "presentation"}, - TAG("$param|getNameTag", {param: "$param"}) - ), - TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line") - ) - ) - ) - ), - - customTab: - A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"}, - "$tabTitle" - ), - - customBody: - DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - nameTag: - SPAN("$param|getParamName"), - - nameWithTooltipTag: - SPAN({title: "$param.name"}, "$param|getParamName"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getNameTag: function(param) - { - return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag; - }, - - getParamName: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - name = name.substr(0, limit) + "..."; - return name; - }, - - getParamTitle: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - return name; - return ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - hideParams: function(file) - { - return !file.urlParams || !file.urlParams.length; - }, - - hidePost: function(file) - { - return file.method.toUpperCase() != "POST"; - }, - - hidePut: function(file) - { - return file.method.toUpperCase() != "PUT"; - }, - - hideResponse: function(file) - { - return false; - //return file.category in binaryFileCategories; - }, - - hideCache: function(file) - { - return true; - //xxxHonza: I don't see any reason why not to display the cache also info for images. - return !file.cacheEntry; // || file.category=="image"; - }, - - hideHtml: function(file) - { - return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml"); - }, - - onClickTab: function(event) - { - this.selectTab(event.currentTarget || event.srcElement); - }, - - getParamValueIterator: function(param) - { - // TODO: xxxpedro console2 - return param.value; - - // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210). - // This is why the second parameter is true. - // The CODE (with style white-space:pre) element preserves whitespaces so they are - // displayed the same, as they come from the server (1194). - // In case of a long header values of post parameters the value must be wrapped (2105). - return wrapText(param.value, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - appendTab: function(netInfoBox, tabId, tabTitle) - { - // Create new tab and body. - var args = {tabId: tabId, tabTitle: tabTitle}; - ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0)); - ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0)); - this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]); - this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]); - }, - - selectTabByName: function(netInfoBox, tabName) - { - var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab"); - if (tab) - this.selectTab(tab); - }, - - selectTab: function(tab) - { - var view = tab.getAttribute("view"); - - var netInfoBox = getAncestorByClass(tab, "netInfoBody"); - - var selectedTab = netInfoBox.selectedTab; - - if (selectedTab) - { - //netInfoBox.selectedText.removeAttribute("selected"); - removeClass(netInfoBox.selectedText, "netInfoTextSelected"); - - removeClass(selectedTab, "netInfoTabSelected"); - //selectedTab.removeAttribute("selected"); - selectedTab.setAttribute("aria-selected", "false"); - } - - var textBodyName = "netInfo" + view + "Text"; - - selectedTab = netInfoBox.selectedTab = tab; - - netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0]; - //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0); - - //netInfoBox.selectedText.setAttribute("selected", "true"); - setClass(netInfoBox.selectedText, "netInfoTextSelected"); - - setClass(selectedTab, "netInfoTabSelected"); - selectedTab.setAttribute("selected", "true"); - selectedTab.setAttribute("aria-selected", "true"); - - var file = Firebug.getRepObject(netInfoBox); - - //var context = Firebug.getElementPanel(netInfoBox).context; - var context = Firebug.chrome; - - this.updateInfo(netInfoBox, file, context); - }, - - updateInfo: function(netInfoBox, file, context) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.updateInfo; file", file); - - if (!netInfoBox) - { - if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS) - FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file); - return; - } - - var tab = netInfoBox.selectedTab; - - if (hasClass(tab, "netInfoParamsTab")) - { - if (file.urlParams && !netInfoBox.urlParamsPresented) - { - netInfoBox.urlParamsPresented = true; - this.insertHeaderRows(netInfoBox, file.urlParams, "Params"); - } - } - - else if (hasClass(tab, "netInfoHeadersTab")) - { - var headersText = $$(".netInfoHeadersText", netInfoBox)[0]; - //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0); - - if (file.responseHeaders && !netInfoBox.responseHeadersPresented) - { - netInfoBox.responseHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders"); - } - - if (file.requestHeaders && !netInfoBox.requestHeadersPresented) - { - netInfoBox.requestHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders"); - } - } - - else if (hasClass(tab, "netInfoPostTab")) - { - if (!netInfoBox.postPresented) - { - netInfoBox.postPresented = true; - //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0); - var postText = $$(".netInfoPostText", netInfoBox)[0]; - NetInfoPostData.render(context, postText, file); - } - } - - else if (hasClass(tab, "netInfoPutTab")) - { - if (!netInfoBox.putPresented) - { - netInfoBox.putPresented = true; - //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0); - var putText = $$(".netInfoPutText", netInfoBox)[0]; - NetInfoPostData.render(context, putText, file); - } - } - - else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented) - { - ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0); - var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0]; - if (file.category == "image") - { - netInfoBox.responsePresented = true; - - var responseImage = netInfoBox.ownerDocument.createElement("img"); - responseImage.src = file.href; - - clearNode(responseTextBox); - responseTextBox.appendChild(responseImage, responseTextBox); - } - else ///if (!(binaryCategoryMap.hasOwnProperty(file.category))) - { - this.setResponseText(file, netInfoBox, responseTextBox, context); - } - } - - else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented) - { - var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0); - if (file.cacheEntry) { - netInfoBox.cachePresented = true; - this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache"); - } - } - - else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented) - { - netInfoBox.htmlPresented = true; - - var text = Utils.getResponseText(file, context); - - ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0); - var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0]; - - ///iframe.contentWindow.document.body.innerHTML = text; - - // TODO: xxxpedro net - remove scripts - var reScript = //gi; - - text = text.replace(reScript, ""); - - iframe.contentWindow.document.write(text); - iframe.contentWindow.document.close(); - } - - // Notify listeners about update so, content of custom tabs can be updated. - dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]); - }, - - setResponseText: function(file, netInfoBox, responseTextBox, context) - { - //********************************************** - //********************************************** - //********************************************** - netInfoBox.responsePresented = true; - // line breaks somehow are different in IE - // make this only once in the initialization? we don't have net panels and modules yet. - if (isIE) - responseTextBox.style.whiteSpace = "nowrap"; - - responseTextBox[ - typeof responseTextBox.textContent != "undefined" ? - "textContent" : - "innerText" - ] = file.responseText; - - return; - //********************************************** - //********************************************** - //********************************************** - - // Get response text and make sure it doesn't exceed the max limit. - var text = Utils.getResponseText(file, context); - var limit = Firebug.netDisplayedResponseLimit + 15; - var limitReached = text ? (text.length > limit) : false; - if (limitReached) - text = text.substr(0, limit) + "..."; - - // Insert the response into the UI. - if (text) - insertWrappedText(text, responseTextBox); - else - insertWrappedText("", responseTextBox); - - // Append a message informing the user that the response isn't fully displayed. - if (limitReached) - { - var object = { - text: $STR("net.responseSizeLimitMessage"), - onClickLink: function() { - var panel = context.getPanel("net", true); - panel.openResponseInTab(file); - } - }; - Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox); - } - - netInfoBox.responsePresented = true; - - if (FBTrace.DBG_NET) - FBTrace.sysout("net.setResponseText; response text updated"); - }, - - insertHeaderRows: function(netInfoBox, headers, tableName, rowName) - { - if (!headers.length) - return; - - var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0]; - //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0); - var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body"); - if (!tbody) - tbody = headersTable.firstChild; - var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title"); - - this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody); - removeClass(titleRow, "collapsed"); - } -}); - -var NetInfoBody = Firebug.NetMonitor.NetInfoBody; - -// ************************************************************************************************ - -/** - * @domplate Used within the Net panel to display raw source of request and response headers - * as well as pretty-formatted summary of these headers. - */ -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoHeadersTable", "role": "tabpanel"}, - DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"}, - SPAN($STR("ResponseHeaders")), - SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "ResponseHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoResponseHeadersBody", "role": "list", - "aria-label": $STR("ResponseHeaders")}) - ), - DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"}, - SPAN($STR("RequestHeaders")), - SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "RequestHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoRequestHeadersBody", "role": "list", - "aria-label": $STR("RequestHeaders")}) - ) - ), - - sourceTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - PRE({"class": "source"}) - ) - ), - - onViewSource: function(event) - { - var target = event.target; - var requestHeaders = (target.rowName == "RequestHeaders"); - - var netInfoBox = getAncestorByClass(target, "netInfoBody"); - var file = netInfoBox.repObject; - - if (target.sourceDisplayed) - { - var headers = requestHeaders ? file.requestHeaders : file.responseHeaders; - this.insertHeaderRows(netInfoBox, headers, target.rowName); - target.innerHTML = $STR("net.headers.view source"); - } - else - { - var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText; - this.insertSource(netInfoBox, source, target.rowName); - target.innerHTML = $STR("net.headers.pretty print"); - } - - target.sourceDisplayed = !target.sourceDisplayed; - - cancelEvent(event); - }, - - insertSource: function(netInfoBox, source, rowName) - { - // This breaks copy to clipboard. - //if (source) - // source = source.replace(/\r\n/gm, "\\r\\n\r\n"); - - ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0); - var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0]; - var node = this.sourceTag.replace({}, tbody); - ///var sourceNode = node.getElementsByClassName("source").item(0); - var sourceNode = $$(".source", node)[0]; - sourceNode.innerHTML = source; - }, - - insertHeaderRows: function(netInfoBox, headers, rowName) - { - var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0]; - var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0]; - - //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0); - //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0); - - clearNode(tbody); - - if (!headers.length) - return; - - NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody); - - var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title"); - removeClass(titleRow, "collapsed"); - }, - - init: function(parent) - { - var rootNode = this.tag.append({}, parent); - - var netInfoBox = getAncestorByClass(parent, "netInfoBody"); - var file = netInfoBox.repObject; - - var viewSource; - - viewSource = $$(".request", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0); - if (file.requestHeadersText) - removeClass(viewSource, "collapsed"); - - viewSource = $$(".response", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0); - if (file.responseHeadersText) - removeClass(viewSource, "collapsed"); - }, - - renderHeaders: function(parent, headers, rowName) - { - if (!parent.firstChild) - this.init(parent); - - this.insertHeaderRows(parent, headers, rowName); - } -}); - -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders; - -// ************************************************************************************************ - -/** - * @domplate Represents posted data within request info (the info, which is visible when - * a request entry is expanded. This template renders content of the Post tab. - */ -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/ -{ - // application/x-www-form-urlencoded - paramsTable: - TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")}, - TR({"class": "netInfoPostParamsTitle", "role": "presentation"}, - TD({colspan: 3, "role": "presentation"}, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parameters"), - SPAN({"class": "netInfoPostContentType"}, - "application/x-www-form-urlencoded" - ) - ) - ) - ) - ) - ), - - // multipart/form-data - partsTable: - TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parts")}, - TR({"class": "netInfoPostPartsTitle", "role": "presentation"}, - TD({colspan: 2, "role":"presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parts"), - SPAN({"class": "netInfoPostContentType"}, - "multipart/form-data" - ) - ) - ) - ) - ) - ), - - // application/json - jsonTable: - TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")}, - TBODY({"role": "list", "aria-label": $STR("JSON")}, - TR({"class": "netInfoPostJSONTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - ///$STR("jsonviewer.tab.JSON") - $STR("JSON") - ) - ) - ), - TR( - TD({"class": "netInfoPostJSONBody"}) - ) - ) - ), - - // application/xml - xmlTable: - TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")}, - TR({"class": "netInfoPostXMLTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("xmlviewer.tab.XML") - ) - ) - ), - TR( - TD({"class": "netInfoPostXMLBody"}) - ) - ) - ), - - sourceTable: - TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Source")}, - TR({"class": "netInfoPostSourceTitle", "role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - DIV({"class": "netInfoPostSource"}, - $STR("net.label.Source") - ) - ) - ) - ) - ), - - sourceBodyTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line") - ) - ) - ), - - getParamValueIterator: function(param) - { - return NetInfoBody.getParamValueIterator(param); - }, - - render: function(context, parentNode, file) - { - //debugger; - var spy = getAncestorByClass(parentNode, "spyHead"); - var spyObject = spy.repObject; - var data = spyObject.data; - - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - var contentType = file.mimeType; - - ///var text = Utils.getPostText(file, context, true); - ///if (text == undefined) - /// return; - - ///if (Utils.isURLEncodedRequest(file, context)) - // fake Utils.isURLEncodedRequest identification - if (contentType && contentType == "application/x-www-form-urlencoded" || - data && data.indexOf("=") != -1) - { - ///var lines = text.split("\n"); - ///var params = parseURLEncodedText(lines[lines.length-1]); - var params = parseURLEncodedTextArray(data); - if (params) - this.insertParameters(parentNode, params); - } - - ///if (Utils.isMultiPartRequest(file, context)) - ///{ - /// var data = this.parseMultiPartText(file, context); - /// if (data) - /// this.insertParts(parentNode, data); - ///} - - // moved to the top - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - - ///if (Firebug.JSONViewerModel.isJSON(contentType)) - var jsonData = { - responseText: data - }; - - if (Firebug.JSONViewerModel.isJSON(contentType, data)) - ///this.insertJSON(parentNode, file, context); - this.insertJSON(parentNode, jsonData, context); - - ///if (Firebug.XMLViewerModel.isXML(contentType)) - /// this.insertXML(parentNode, file, context); - - ///var postText = Utils.getPostText(file, context); - ///postText = Utils.formatPostText(postText); - var postText = data; - if (postText) - this.insertSource(parentNode, postText); - }, - - insertParameters: function(parentNode, params) - { - if (!params || !params.length) - return; - - var paramTable = this.paramsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostParamsTitle", paramTable)[0]; - //var paramTable = this.paramsTable.append(null, parentNode); - //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0); - - var tbody = paramTable.getElementsByTagName("tbody")[0]; - - NetInfoBody.headerDataTag.insertRows({headers: params}, row); - }, - - insertParts: function(parentNode, data) - { - if (!data.params || !data.params.length) - return; - - var partsTable = this.partsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostPartsTitle", paramTable)[0]; - //var partsTable = this.partsTable.append(null, parentNode); - //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0); - - NetInfoBody.headerDataTag.insertRows({headers: data.params}, row); - }, - - insertJSON: function(parentNode, file, context) - { - ///var text = Utils.getPostText(file, context); - var text = file.responseText; - ///var data = parseJSONString(text, "http://" + file.request.originalURI.host); - var data = parseJSONString(text); - if (!data) - return; - - ///var jsonTable = this.jsonTable.append(null, parentNode); - var jsonTable = this.jsonTable.append({}, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0); - var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0]; - - if (!this.toggles) - this.toggles = {}; - - Firebug.DOMPanel.DirTable.tag.replace( - {object: data, toggles: this.toggles}, jsonBody); - }, - - insertXML: function(parentNode, file, context) - { - var text = Utils.getPostText(file, context); - - var jsonTable = this.xmlTable.append(null, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0); - var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0]; - - Firebug.XMLViewerModel.insertXML(jsonBody, text); - }, - - insertSource: function(parentNode, text) - { - var sourceTable = this.sourceTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostSourceTitle", sourceTable)[0]; - //var sourceTable = this.sourceTable.append(null, parentNode); - //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0); - - var param = {value: [text]}; - this.sourceBodyTag.insertRows({param: param}, row); - }, - - parseMultiPartText: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text == undefined) - return null; - - FBTrace.sysout("net.parseMultiPartText; boundary: ", text); - - var boundary = text.match(/\s*boundary=\s*(.*)/)[1]; - - var divider = "\r\n\r\n"; - var bodyStart = text.indexOf(divider); - var body = text.substr(bodyStart + divider.length); - - var postData = {}; - postData.mimeType = "multipart/form-data"; - postData.params = []; - - var parts = body.split("--" + boundary); - for (var i=0; i 1) ? m[1] : "", - value: trim(part[1]) - }); - } - - return postData; - } -}); - -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData; - -// ************************************************************************************************ - - -// TODO: xxxpedro net i18n -var $STRP = function(a){return a;}; - -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep, -{ - collapsed: true, - - tableTag: - DIV( - TABLE({width: "100%", cellpadding: 0, cellspacing: 0}, - TBODY() - ) - ), - - limitTag: - TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"}, - TD({"class": "netCol netLimitCol", colspan: 6}, - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY( - TR( - TD( - SPAN({"class": "netLimitLabel"}, - $STRP("plural.Limit_Exceeded", [0]) - ) - ), - TD({style: "width:100%"}), - TD( - BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle", - onclick: "$onPreferences"}, - $STR("LimitPrefs") - ) - ), - TD(" ") - ) - ) - ) - ) - ), - - isCollapsed: function() - { - return this.collapsed; - }, - - onPreferences: function(event) - { - openNewTab("about:config"); - }, - - updateCounter: function(row) - { - removeClass(row, "collapsed"); - - // Update info within the limit row. - var limitLabel = row.getElementsByClassName("netLimitLabel").item(0); - limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]); - }, - - createTable: function(parent, limitInfo) - { - var table = this.tableTag.replace({}, parent); - var row = this.createRow(table.firstChild.firstChild, limitInfo); - return [table, row]; - }, - - createRow: function(parent, limitInfo) - { - var row = this.limitTag.insertRows(limitInfo, parent, this)[0]; - row.limitInfo = limitInfo; - return row; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - if (data.indexOf("net.logLimit") != -1) - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - } -}); - -var NetLimit = Firebug.NetMonitor.NetLimit; - -// ************************************************************************************************ - -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "netInfoResponseSizeLimit"}, - SPAN("$object.beforeLink"), - A({"class": "objectLink", onclick: "$onClickLink"}, - "$object.linkText" - ), - SPAN("$object.afterLink") - ), - - reLink: /^(.*)(.*)<\/a>(.*$)/, - append: function(obj, parent) - { - var m = obj.text.match(this.reLink); - return this.tag.append({onClickLink: obj.onClickLink, - object: { - beforeLink: m[1], - linkText: m[2], - afterLink: m[3] - }}, parent, this); - } -}); - -// ************************************************************************************************ -// ************************************************************************************************ - -Firebug.NetMonitor.Utils = -{ - findHeader: function(headers, name) - { - if (!headers) - return null; - - name = name.toLowerCase(); - for (var i = 0; i < headers.length; ++i) - { - var headerName = headers[i].name.toLowerCase(); - if (headerName == name) - return headers[i].value; - } - }, - - formatPostText: function(text) - { - if (text instanceof XMLDocument) - return getElementXML(text.documentElement); - else - return text; - }, - - getPostText: function(file, context, noLimit) - { - if (!file.postText) - { - file.postText = readPostTextFromRequest(file.request, context); - - if (!file.postText && context) - file.postText = readPostTextFromPage(file.href, context); - } - - if (!file.postText) - return file.postText; - - var limit = Firebug.netDisplayedPostBodyLimit; - if (file.postText.length > limit && !noLimit) - { - return cropString(file.postText, limit, - "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n"); - } - - return file.postText; - }, - - getResponseText: function(file, context) - { - // The response can be also empty string so, check agains "undefined". - return (typeof(file.responseText) != "undefined")? file.responseText : - context.sourceCache.loadText(file.href, file.method, file); - }, - - isURLEncodedRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0) - return true; - - // The header value doesn't have to be always exactly "application/x-www-form-urlencoded", - // there can be even charset specified. So, use indexOf rather than just "==". - var headerValue = Utils.findHeader(file.requestHeaders, "content-type"); - if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0) - return true; - - return false; - }, - - isMultiPartRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0) - return true; - return false; - }, - - getMimeType: function(mimeType, uri) - { - if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType))) - { - var ext = getFileExtension(uri); - if (!ext) - return mimeType; - else - { - var extMimeType = mimeExtensionMap[ext.toLowerCase()]; - return extMimeType ? extMimeType : mimeType; - } - } - else - return mimeType; - }, - - getDateFromSeconds: function(s) - { - var d = new Date(); - d.setTime(s*1000); - return d; - }, - - getHttpHeaders: function(request, file) - { - try - { - var http = QI(request, Ci.nsIHttpChannel); - file.status = request.responseStatus; - - // xxxHonza: is there any problem to do this in requestedFile method? - file.method = http.requestMethod; - file.urlParams = parseURLParams(file.href); - file.mimeType = Utils.getMimeType(request.contentType, request.name); - - if (!file.responseHeaders && Firebug.collectHttpHeaders) - { - var requestHeaders = [], responseHeaders = []; - - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - requestHeaders.push({name: name, value: value}); - } - }); - http.visitResponseHeaders({ - visitHeader: function(name, value) - { - responseHeaders.push({name: name, value: value}); - } - }); - - file.requestHeaders = requestHeaders; - file.responseHeaders = responseHeaders; - } - } - catch (exc) - { - // An exception can be throwed e.g. when the request is aborted and - // request.responseStatus is accessed. - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc); - } - }, - - isXHR: function(request) - { - try - { - var callbacks = request.notificationCallbacks; - var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null; - if (FBTrace.DBG_NET) - FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request)); - - return (xhrRequest != null); - } - catch (exc) - { - } - - return false; - }, - - getFileCategory: function(file) - { - if (file.category) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file); - return file.category; - } - - if (file.isXHR) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file); - return file.category = "xhr"; - } - - if (!file.mimeType) - { - var ext = getFileExtension(file.href); - if (ext) - file.mimeType = mimeExtensionMap[ext.toLowerCase()]; - } - - /*if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] + - ", mimeType: " + file.mimeType + " for: " + file.href, file);*/ - - if (!file.mimeType) - return ""; - - // Solve cases when charset is also specified, eg "text/html; charset=UTF-8". - var mimeType = file.mimeType; - if (mimeType) - mimeType = mimeType.split(";")[0]; - - return (file.category = mimeCategoryMap[mimeType]); - } -}; - -var Utils = Firebug.NetMonitor.Utils; - -// ************************************************************************************************ - -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable); -//Firebug.registerActivableModule(Firebug.NetMonitor); -//Firebug.registerPanel(NetPanel); - -Firebug.registerModule(Firebug.NetMonitor); -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -// List of contexts with XHR spy attached. -var contexts = []; - -// ************************************************************************************************ -// Spy Module - -/** - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor - * XHR activity of the current page and create appropriate log into the Console panel. - * This feature can be controlled by an option Show XMLHttpRequests (from within the - * console panel). - * - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is - * activated/deactivated for a site. - */ -Firebug.Spy = extend(Firebug.Module, -/** @lends Firebug.Spy */ -{ - dispatchName: "spy", - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - Firebug.Module.initialize.apply(this, arguments); - }, - - shutdown: function() - { - Firebug.Module.shutdown.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - }, - - initContext: function(context) - { - context.spies = []; - - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, context.window); - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName()); - }, - - destroyContext: function(context) - { - // For any spies that are in progress, remove our listeners so that they don't leak - this.detachObserver(context, null); - - if (FBTrace.DBG_SPY && context.spies.length) - FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies (" - + context.spies.length + ") " + context.getName()); - - delete context.spies; - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName()); - }, - - watchWindow: function(context, win) - { - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, win); - }, - - unwatchWindow: function(context, win) - { - try - { - // This make sure that the existing context is properly removed from "contexts" array. - this.detachObserver(context, win); - } - catch (ex) - { - // Get exceptions here sometimes, so let's just ignore them - // since the window is going away anyhow - ERROR(ex); - } - }, - - updateOption: function(name, value) - { - // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called, - // but somehow seems not correct - if (name == "showXMLHttpRequests") - { - var tach = value ? this.attachObserver : this.detachObserver; - for (var i = 0; i < TabWatcher.contexts.length; ++i) - { - var context = TabWatcher.contexts[i]; - iterateWindows(context.window, function(win) - { - tach.apply(this, [context, win]); - }); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Attaching Spy to XHR requests. - - /** - * Returns false if Spy should not be attached to XHRs executed by the specified window. - */ - skipSpy: function(win) - { - if (!win) - return true; - - // Don't attach spy to chrome. - var uri = safeGetWindowLocation(win); - if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0)) - return true; - }, - - attachObserver: function(context, win) - { - if (Firebug.Spy.skipSpy(win)) - return; - - for (var i=0; insIHttpChannel. - * Returns null if the request doesn't represent XHR. - */ - getXHR: function(request) - { - // Does also query-interface for nsIHttpChannel. - if (!(request instanceof Ci.nsIHttpChannel)) - return null; - - try - { - var callbacks = request.notificationCallbacks; - return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null); - } - catch (exc) - { - if (exc.name == "NS_NOINTERFACE") - { - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " + - safeGetRequestName(request)); - } - } - - return null; - } -}); - - - - - -// ************************************************************************************************ - -/* -function getSpyForXHR(request, xhrRequest, context, noCreate) -{ - var spy = null; - - // Iterate all existing spy objects in this context and look for one that is - // already created for this request. - var length = context.spies.length; - for (var i=0; i= 3) - { - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (netInfoBox) - { - netInfoBox.htmlPresented = false; - netInfoBox.responsePresented = false; - } - } - - // If the request is loading update the end time. - if (spy.xhrRequest.readyState == 3) - { - spy.responseTime = spy.endTime - spy.sendTime; - updateTime(spy); - } - - // Request loaded. Get all the info from the request now, just in case the - // XHR would be aborted in the original onReadyStateChange handler. - if (spy.xhrRequest.readyState == 4) - { - // Cumulate response so, multipart response content is properly displayed. - if (SpyHttpActivityObserver.getActivityDistributor()) - spy.responseText += spy.xhrRequest.responseText; - else - { - // xxxHonza: remove from FB 1.6 - if (!spy.responseText) - spy.responseText = spy.xhrRequest.responseText; - } - - // The XHR is loaded now (used also by the activity observer). - spy.loaded = true; - - // Update UI. - updateHttpSpyInfo(spy); - - // Notify Net pane about a request beeing loaded. - // xxxHonza: I don't think this is necessary. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); - - // Notify registered listeners about finish of the XHR. - dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]); - } - - // Pass the event to the original page handler. - callPageHandler(spy, event, originalHandler); -} - -function onHTTPSpyLoad(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy); - - // Detach must be done in onLoad (not in onreadystatechange) otherwise - // onAbort would not be handled. - spy.detach(); - - // xxxHonza: Still needed for Fx 3.5 (#502959) - if (!SpyHttpActivityObserver.getActivityDistributor()) - onHTTPSpyReadyStateChange(spy, null); -} - -function onHTTPSpyError(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } -} - -function onHTTPSpyAbort(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } - - spy.statusText = "Aborted"; - updateLogRow(spy); - - // Notify Net pane about a request beeing aborted. - // xxxHonza: the net panel shoud find out this itself. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); -} -/**/ - -// ************************************************************************************************ - -/** - * @domplate Represents a template for XHRs logged in the Console panel. The body of the - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}. - */ - -Firebug.Spy.XHR = domplate(Firebug.Rep, -/** @lends Firebug.Spy.XHR */ - -{ - tag: - DIV({"class": "spyHead", _repObject: "$object"}, - TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0, - "role": "listitem", "aria-expanded": "false"}, - TBODY({"role": "presentation"}, - TR({"class": "spyRow"}, - TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"}, - DIV({"class": "spyTitle"}, - "$object|getCaption" - ), - DIV({"class": "spyFullTitle spyTitle"}, - "$object|getFullUri" - ) - ), - TD({"class": "spyCol"}, - DIV({"class": "spyStatus"}, "$object|getStatus") - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyIcon"}) - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyTime"}) - ), - TD({"class": "spyCol"}, - TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"}) - ) - ) - ) - ) - ), - - getCaption: function(spy) - { - return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100); - }, - - getFullUri: function(spy) - { - return spy.method.toUpperCase() + " " + spy.getURL(); - }, - - getStatus: function(spy) - { - var text = ""; - if (spy.statusCode) - text += spy.statusCode + " "; - - if (spy.statusText) - return text += spy.statusText; - - return text; - }, - - onToggleBody: function(event) - { - var target = event.currentTarget || event.srcElement; - var logRow = getAncestorByClass(target, "logRow-spy"); - - if (isLeftClick(event)) - { - toggleClass(logRow, "opened"); - - var spy = getChildByClass(logRow, "spyHead").repObject; - var spyHeadTable = getAncestorByClass(target, "spyHeadTable"); - - if (hasClass(logRow, "opened")) - { - updateHttpSpyInfo(spy, logRow); - if (spyHeadTable) - spyHeadTable.setAttribute('aria-expanded', 'true'); - } - else - { - //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]); - //if (spyHeadTable) - // spyHeadTable.setAttribute('aria-expanded', 'false'); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(spy) - { - copyToClipboard(spy.getURL()); - }, - - copyParams: function(spy) - { - var text = spy.postText; - if (!text) - return; - - var url = reEncodeURL(spy, text, true); - copyToClipboard(url); - }, - - copyResponse: function(spy) - { - copyToClipboard(spy.responseText); - }, - - openInTab: function(spy) - { - openNewTab(spy.getURL(), spy.postText); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object) - { - // TODO: xxxpedro spy xhr - return false; - - return object instanceof Firebug.Spy.XMLHttpRequestSpy; - }, - - browseObject: function(spy, context) - { - var url = spy.getURL(); - openNewTab(url); - return true; - }, - - getRealObject: function(spy, context) - { - return spy.xhrRequest; - }, - - getContextMenuItems: function(spy) - { - var items = [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) } - ]; - - if (spy.postText) - { - items.push( - {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) } - ); - } - - items.push( - {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) } - ); - - return items; - } -}); - -// ************************************************************************************************ - -function updateTime(spy) -{ - var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0); - if (spy.responseTime) - timeBox.textContent = " " + formatTime(spy.responseTime); -} - -function updateLogRow(spy) -{ - updateTime(spy); - - var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0); - statusBox.textContent = Firebug.Spy.XHR.getStatus(spy); - - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "loaded"); - - try - { - var errorRange = Math.floor(spy.xhrRequest.status/100); - if (errorRange == 4 || errorRange == 5) - setClass(spy.logRow, "error"); - } - catch (exc) - { - } -} - -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow) -{ - if (!spy.logRow && logRow) - spy.logRow = logRow; - - if (!spy.logRow || !hasClass(spy.logRow, "opened")) - return; - - if (!spy.params) - //spy.params = parseURLParams(spy.href+""); - spy.params = parseURLParams(spy.href+""); - - if (!spy.requestHeaders) - spy.requestHeaders = getRequestHeaders(spy); - - if (!spy.responseHeaders && spy.loaded) - spy.responseHeaders = getResponseHeaders(spy); - - var template = Firebug.NetMonitor.NetInfoBody; - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (!netInfoBox) - { - var head = getChildByClass(spy.logRow, "spyHead"); - netInfoBox = template.tag.append({"file": spy}, head); - dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]); - template.selectTabByName(netInfoBox, "Response"); - } - else - { - template.updateInfo(netInfoBox, spy, spy.context); - } -}; - - - -// ************************************************************************************************ - -function getRequestHeaders(spy) -{ - var headers = []; - - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitRequestHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - - return headers; -} - -function getResponseHeaders(spy) -{ - var headers = []; - - try - { - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitResponseHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - } - catch (exc) - { - if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS) - FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " + - safeGetRequestName(spy.request), exc); - } - - return headers; -} - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.Spy); -//Firebug.registerRep(Firebug.Spy.XHR); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ - -// List of JSON content types. -var contentTypes = -{ - "text/plain": 1, - "text/javascript": 1, - "text/x-javascript": 1, - "text/json": 1, - "text/x-json": 1, - "application/json": 1, - "application/x-json": 1, - "application/javascript": 1, - "application/x-javascript": 1, - "application/json-rpc": 1 -}; - -// ************************************************************************************************ -// Model implementation - -Firebug.JSONViewerModel = extend(Firebug.Module, -{ - dispatchName: "jsonViewer", - initialize: function() - { - Firebug.NetMonitor.NetInfoBody.addListener(this); - - // Used by Firebug.DOMPanel.DirTable domplate. - this.toggles = {}; - }, - - shutdown: function() - { - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody", infoBox); - - // Let listeners to parse the JSON. - dispatch(this.fbListeners, "onParseJSON", [file]); - - // The JSON is still no there, try to parse most common cases. - if (!file.jsonObject) - { - ///if (this.isJSON(safeGetContentType(file.request), file.responseText)) - if (this.isJSON(file.mimeType, file.responseText)) - file.jsonObject = this.parseJSON(file); - } - - // The jsonObject is created so, the JSON tab can be displayed. - if (file.jsonObject && hasProperties(file.jsonObject)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON", - ///$STR("jsonviewer.tab.JSON")); - $STR("JSON")); - - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody; JSON object available " + - (typeof(file.jsonObject) != "undefined"), file.jsonObject); - } - }, - - isJSON: function(contentType, data) - { - // Workaround for JSON responses without proper content type - // Let's consider all responses starting with "{" as JSON. In the worst - // case there will be an exception when parsing. This means that no-JSON - // responses (and post data) (with "{") can be parsed unnecessarily, - // which represents a little overhead, but this happens only if the request - // is actually expanded by the user in the UI (Net & Console panels). - - ///var responseText = data ? trimLeft(data) : null; - ///if (responseText && responseText.indexOf("{") == 0) - /// return true; - var responseText = data ? trim(data) : null; - if (responseText && responseText.indexOf("{") == 0) - return true; - - if (!contentType) - return false; - - contentType = contentType.split(";")[0]; - contentType = trim(contentType); - return contentTypes[contentType]; - }, - - // Update listener for TabView - updateTabBody: function(infoBox, file, context) - { - var tab = infoBox.selectedTab; - ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0); - var tabBody = $$(".netInfoJSONText", infoBox)[0]; - if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated) - return; - - tabBody.updated = true; - - if (file.jsonObject) { - Firebug.DOMPanel.DirTable.tag.replace( - {object: file.jsonObject, toggles: this.toggles}, tabBody); - } - }, - - parseJSON: function(file) - { - var jsonString = new String(file.responseText); - ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host); - return parseJSONString(jsonString); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.JSONViewerModel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -// List of XML related content types. -var xmlContentTypes = -[ - "text/xml", - "application/xml", - "application/xhtml+xml", - "application/rss+xml", - "application/atom+xml",, - "application/vnd.mozilla.maybe.feed", - "application/rdf+xml", - "application/vnd.mozilla.xul+xml" -]; - -// ************************************************************************************************ -// Model implementation - -/** - * @module Implements viewer for XML based network responses. In order to create a new - * tab wihin network request detail, a listener is registered into - * Firebug.NetMonitor.NetInfoBody object. - */ -Firebug.XMLViewerModel = extend(Firebug.Module, -{ - dispatchName: "xmlViewer", - - initialize: function() - { - ///Firebug.ActivableModule.initialize.apply(this, arguments); - Firebug.Module.initialize.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.addListener(this); - }, - - shutdown: function() - { - ///Firebug.ActivableModule.shutdown.apply(this, arguments); - Firebug.Module.shutdown.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - /** - * Check response's content-type and if it's a XML, create a new tab with XML preview. - */ - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody", infoBox); - - // If the response is XML let's display a pretty preview. - ///if (this.isXML(safeGetContentType(file.request))) - if (this.isXML(file.mimeType, file.responseText)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML", - ///$STR("xmlviewer.tab.XML")); - $STR("XML")); - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody; XML response available"); - } - }, - - isXML: function(contentType) - { - if (!contentType) - return false; - - // Look if the response is XML based. - for (var i=0; i\s*/, ""); - - var div = parentNode.ownerDocument.createElement("div"); - div.innerHTML = xmlText; - - var root = div.getElementsByTagName("*")[0]; - - /*** - var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser"); - var doc = parser.parseFromString(text, "text/xml"); - var root = doc.documentElement; - - // Error handling - var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - if (root.namespaceURI == nsURI && root.nodeName == "parsererror") - { - this.ParseError.tag.replace({error: { - message: root.firstChild.nodeValue, - source: root.lastChild.textContent - }}, parentNode); - return; - } - /**/ - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc); - - // Override getHidden in these templates. The parsed XML documen is - // hidden, but we want to display it using 'visible' styling. - /* - var templates = [ - Firebug.HTMLPanel.CompleteElement, - Firebug.HTMLPanel.Element, - Firebug.HTMLPanel.TextElement, - Firebug.HTMLPanel.EmptyElement, - Firebug.HTMLPanel.XEmptyElement, - ]; - - var originals = []; - for (var i=0; iFirebug.XMLViewerModel. - */ -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "xmlInfoError"}, - DIV({"class": "xmlInfoErrorMsg"}, "$error.message"), - PRE({"class": "xmlInfoErrorSource"}, "$error|getSource") - ), - - getSource: function(error) - { - var parts = error.source.split("\n"); - if (parts.length != 2) - return error.source; - - var limit = 50; - var column = parts[1].length; - if (column >= limit) { - parts[0] = "..." + parts[0].substr(column - limit); - parts[1] = "..." + parts[1].substr(column - limit); - } - - if (parts[0].length > 80) - parts[0] = parts[0].substr(0, 80) + "..."; - - return parts.join("\n"); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.XMLViewerModel); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var ElementCache = Firebug.Lite.Cache.Element; -var cacheID = Firebug.Lite.Cache.ID; - -var ignoreHTMLProps = -{ - // ignores the attributes injected by Sizzle, otherwise it will - // be visible on IE (when enumerating element.attributes) - sizcache: 1, - sizset: 1 -}; - -// ignores also the cache property injected by firebug -ignoreHTMLProps[cacheID] = 1; - - -// ************************************************************************************************ -// HTML Module - -Firebug.HTML = extend(Firebug.Module, -{ - appendTreeNode: function(nodeArray, html) - { - var reTrim = /^\s+|\s+$/g; - - if (!nodeArray.length) nodeArray = [nodeArray]; - - for (var n=0, node; node=nodeArray[n]; n++) - { - if (node.nodeType == 1) - { - if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue; - - var uid = ElementCache(node); - var child = node.childNodes; - var childLength = child.length; - - var nodeName = node.nodeName.toLowerCase(); - - var nodeVisible = isVisible(node); - - var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 && - nodeName != "script" && nodeName != "style"; - - var nodeControl = !hasSingleTextChild && childLength > 0 ? - ('
                                ') : ''; - - var isIE = false; - - if(isIE && nodeControl) - html.push(nodeControl); - - if (typeof uid != 'undefined') - html.push( - '
                                ', - !isIE && nodeControl ? nodeControl: "", - '<', nodeName, '' - ); - else - html.push( - '
                                <', - nodeName, '' - ); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || Firebug.ignoreFirebugElements && - ignoreHTMLProps.hasOwnProperty(attr.nodeName)) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - /* - // source code nodes - if (nodeName == 'script' || nodeName == 'style') - { - - if(document.all){ - var src = node.innerHTML+'\n'; - - }else { - var src = '\n'+node.innerHTML+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + '
                                '; - } - - html.push('>
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ', - '
                                </', - nodeName, - '>
                                ', - '
                                ' - ); - - - }/**/ - - // Just a single text node child - if (hasSingleTextChild) - { - var value = child[0].nodeValue.replace(reTrim, ''); - if(value) - { - html.push( - '>', - escapeHTML(value), - '</', - nodeName, - '>
                                ' - ); - } - else - html.push('/>
                                '); // blank text, print as childless node - - } - else if (childLength > 0) - { - html.push('>'); - } - else - html.push('/>'); - - } - else if (node.nodeType == 3) - { - if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" || - node.parentNode.nodeName.toLowerCase() == "style" ) ) - { - var value = node.nodeValue.replace(reTrim, ''); - - if(isIE){ - var src = value+'\n'; - - }else { - var src = '\n'+value+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + ''; - } - - html.push('
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ' - ); - - } - else - { - var value = node.nodeValue.replace(reTrim, ''); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - } - } - }, - - appendTreeChildren: function(treeNode) - { - var doc = Firebug.chrome.document; - var uid = treeNode.id; - var parentNode = ElementCache.get(uid); - - if (parentNode.childNodes.length == 0) return; - - var treeNext = treeNode.nextSibling; - var treeParent = treeNode.parentNode; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl nodeMaximized'; - - var html = []; - var children = doc.createElement("div"); - children.className = "nodeChildren"; - this.appendTreeNode(parentNode.childNodes, html); - children.innerHTML = html.join(""); - - treeParent.insertBefore(children, treeNext); - - var closeElement = doc.createElement("div"); - closeElement.className = "objectBox-element"; - closeElement.innerHTML = '</' + - parentNode.nodeName.toLowerCase() + '>' - - treeParent.insertBefore(closeElement, treeNext); - - }, - - removeTreeChildren: function(treeNode) - { - var children = treeNode.nextSibling; - var closeTag = children.nextSibling; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl'; - - children.parentNode.removeChild(children); - closeTag.parentNode.removeChild(closeTag); - }, - - isTreeNodeVisible: function(id) - { - return $(id); - }, - - select: function(el) - { - var id = el && ElementCache(el); - if (id) - this.selectTreeNode(id); - }, - - selectTreeNode: function(id) - { - id = ""+id; - var node, stack = []; - while(id && !this.isTreeNodeVisible(id)) - { - stack.push(id); - - var node = ElementCache.get(id).parentNode; - - if (node) - id = ElementCache(node); - else - break; - } - - stack.push(id); - - while(stack.length > 0) - { - id = stack.pop(); - node = $(id); - - if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0) - this.appendTreeChildren(node); - } - - selectElement(node); - - // TODO: xxxpedro - if (fbPanel1) - fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2); - } - -}); - -Firebug.registerModule(Firebug.HTML); - -// ************************************************************************************************ -// HTML Panel - -function HTMLPanel(){}; - -HTMLPanel.prototype = extend(Firebug.Panel, -{ - name: "HTML", - title: "HTML", - - options: { - hasSidePanel: true, - //hasToolButtons: true, - isPreRendered: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "4px 3px 1px 15px"; - this.panelNode.style.minWidth = "500px"; - - if (Env.Options.enablePersistent || Firebug.chrome.type != "popup") - this.createUI(); - - if(!this.sidePanelBar.selectedPanel) - { - this.sidePanelBar.selectPanel("css"); - } - }, - - destroy: function() - { - selectedElement = null - fbPanel1 = null; - - selectedSidePanelTS = null; - selectedSidePanelTimer = null; - - Firebug.Panel.destroy.apply(this, arguments); - }, - - createUI: function() - { - var rootNode = Firebug.browser.document.documentElement; - var html = []; - Firebug.HTML.appendTreeNode(rootNode, html); - - this.panelNode.innerHTML = html.join(""); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = $("fbPanel1"); - - if(!selectedElement) - { - Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)); - } - - // TODO: xxxpedro - addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - }, - - shutdown: function() - { - // TODO: xxxpedro - removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - - removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = null; - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - reattach: function() - { - // TODO: panel reattach - if(FirebugChrome.selectedHTMLElementId) - Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId); - }, - - updateSelection: function(object) - { - var id = ElementCache(object); - - if (id) - { - Firebug.HTML.selectTreeNode(id); - } - } -}); - -Firebug.registerPanel(HTMLPanel); - -// ************************************************************************************************ - -var formatStyles = function(styles) -{ - return isIE ? - // IE return CSS property names in upper case, so we need to convert them - styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) : - // other browsers are just fine - styles; -}; - -// ************************************************************************************************ - -var selectedElement = null -var fbPanel1 = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -var selectedSidePanelTS, selectedSidePanelTimer; - -var selectElement= function selectElement(e) -{ - if (e != selectedElement) - { - if (selectedElement) - selectedElement.className = "objectBox-element"; - - e.className = e.className + " selectedElement"; - - if (FBL.isFirefox) - e.style.MozBorderRadius = "2px"; - - else if (FBL.isSafari) - e.style.WebkitBorderRadius = "2px"; - - selectedElement = e; - - FirebugChrome.selectedHTMLElementId = e.id; - - var target = ElementCache.get(e.id); - var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; - - var stack = FirebugChrome.htmlSelectionStack; - - stack.unshift(target); - - if (stack.length > 2) - stack.pop(); - - var lazySelect = function() - { - selectedSidePanelTS = new Date().getTime(); - - selectedSidePanel.select(target, true); - }; - - if (selectedSidePanelTimer) - { - clearTimeout(selectedSidePanelTimer); - selectedSidePanelTimer = null; - } - - if (new Date().getTime() - selectedSidePanelTS > 100) - setTimeout(lazySelect, 0) - else - selectedSidePanelTimer = setTimeout(lazySelect, 150); - } -} - - -// ************************************************************************************************ -// *** TODO: REFACTOR ************************************************************************** -// ************************************************************************************************ -Firebug.HTML.onTreeClick = function (e) -{ - e = e || event; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - - if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag') - { - var isIE = false; - - if(targ.className == 'nodeTag') - { - var control = isIE ? (targ.parentNode.previousSibling || targ) : - (targ.parentNode.previousSibling || targ); - - selectElement(targ.parentNode.parentNode); - - if (control.className.indexOf('nodeControl') == -1) - return; - - } else - control = targ; - - FBL.cancelEvent(e); - - var treeNode = isIE ? control.nextSibling : control.parentNode; - - //FBL.Firebug.Console.log(treeNode); - - if (control.className.indexOf(' nodeMaximized') != -1) { - FBL.Firebug.HTML.removeTreeChildren(treeNode); - } else { - FBL.Firebug.HTML.appendTreeChildren(treeNode); - } - } - else if (targ.className == 'nodeValue' || targ.className == 'nodeName') - { - /* - var input = FBL.Firebug.chrome.document.getElementById('treeInput'); - - input.style.display = "block"; - input.style.left = targ.offsetLeft + 'px'; - input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px'; - input.style.width = targ.offsetWidth + 6 + 'px'; - input.value = targ.textContent || targ.innerText; - input.focus(); - /**/ - } -} - -function onListMouseOut(e) -{ - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - if (hasClass(targ, "fbPanel")) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - } -}; - -var hoverElement = null; -var hoverElementTS = 0; - -Firebug.HTML.onListMouseMove = function onListMouseMove(e) -{ - try - { - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - var found = false; - while (targ && !found) { - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) - targ = targ.parentNode; - else - found = true; - } - - if (!targ) - { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - /* - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - /**/ - - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - - var el = ElementCache.get(uid.value); - - var nodeName = el.nodeName.toLowerCase(); - - if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1) - return; - - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return; - - if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) { - hoverElementTS = new Date().getTime(); - hoverElement = el; - FBL.Firebug.Inspector.drawBoxModel(el); - } - } - catch(E) - { - } -} - - -// ************************************************************************************************ - -Firebug.Reps = { - - appendText: function(object, html) - { - html.push(escapeHTML(objectToString(object))); - }, - - appendNull: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendString: function(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - }, - - appendInteger: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFloat: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFunction: function(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m && m[1] ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - }, - - appendObject: function(object, html) - { - /* - var rep = Firebug.getRep(object); - var outputs = []; - - rep.tag.tag.compile(); - - var str = rep.tag.renderHTML({object: object}, outputs); - html.push(str); - /**/ - - try - { - if (object == undefined) - this.appendNull("undefined", html); - else if (object == null) - this.appendNull("null", html); - else if (typeof object == "string") - this.appendString(object, html); - else if (typeof object == "number") - this.appendInteger(object, html); - else if (typeof object == "boolean") - this.appendInteger(object, html); - else if (typeof object == "function") - this.appendFunction(object, html); - else if (object.nodeType == 1) - this.appendSelector(object, html); - else if (typeof object == "object") - { - if (typeof object.length != "undefined") - this.appendArray(object, html); - else - this.appendObjectFormatted(object, html); - } - else - this.appendText(object, html); - } - catch (exc) - { - } - /**/ - }, - - appendObjectFormatted: function(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - }, - - appendSelector: function(object, html) - { - var uid = ElementCache(object); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - }, - - appendNode: function(node, html) - { - if (node.nodeType == 1) - { - var uid = ElementCache(node); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push( - '
                                ', - '', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || attr.nodeName == cacheID) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? node.style.cssText : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - if (node.firstChild) - { - html.push('>
                                '); - - for (var child = node.firstChild; child; child = child.nextSibling) - this.appendNode(child, html); - - html.push('
                                </', - node.nodeName.toLowerCase(), '>
                                '); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - var value = trim(node.nodeValue); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - }, - - appendArray: function(object, html) - { - html.push('[ '); - - for (var i = 0, l = object.length, obj; i < l; ++i) - { - this.appendObject(object[i], html); - - if (i < l-1) - html.push(', '); - } - - html.push(' ]'); - } - -}; - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -/* - -Hack: -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; -Firebug.showInfoTips = true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome); - -/**/ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var maxWidth = 100, maxHeight = 80; -var infoTipMargin = 10; -var infoTipWindowPadding = 25; - -// ************************************************************************************************ - -Firebug.InfoTip = extend(Firebug.Module, -{ - dispatchName: "infoTip", - tags: domplate( - { - infoTipTag: DIV({"class": "infoTip"}), - - colorTag: - DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, " "), - - imgTag: - DIV({"class": "infoTipImageBox infoTipLoading"}, - IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat", - onload: "$onLoadImage"}), - IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}), - DIV({"class": "infoTipCaption"}) - ), - - onLoadImage: function(event) - { - var img = event.currentTarget || event.srcElement; - ///var bgImg = img.nextSibling; - ///if (!bgImg) - /// return; // Sometimes gets called after element is dead - - ///var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - /// TODO: xxxpedro infoTip hack - var caption = getElementByClass(innerBox, "infoTipCaption"); - var bgImg = getElementByClass(innerBox, "infoTipBgImage"); - if (!bgImg) - return; // Sometimes gets called after element is dead - - // TODO: xxxpedro infoTip IE and timing issue - // TODO: use offline document to avoid flickering - if (isIE) - removeClass(innerBox, "infoTipLoading"); - - var updateInfoTip = function(){ - - var w = img.naturalWidth || img.width || 10, - h = img.naturalHeight || img.height || 10; - - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - //caption.innerHTML = $STRF("Dimensions", [w, h]); - caption.innerHTML = $STRF(w + " x " + h); - - - }; - - if (isIE) - setTimeout(updateInfoTip, 0); - else - { - updateInfoTip(); - removeClass(innerBox, "infoTipLoading"); - } - - /// - } - - /* - /// onLoadImage original - onLoadImage: function(event) - { - var img = event.currentTarget; - var bgImg = img.nextSibling; - if (!bgImg) - return; // Sometimes gets called after element is dead - - var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - var w = img.naturalWidth, h = img.naturalHeight; - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - caption.innerHTML = $STRF("Dimensions", [w, h]); - - removeClass(innerBox, "infoTipLoading"); - } - /**/ - - }), - - initializeBrowser: function(browser) - { - browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser); - browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser); - - ///var doc = browser.contentDocument; - var doc = browser.document; - if (!doc) - return; - - ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true); - addEvent(doc, "mouseover", browser.onInfoTipMouseMove); - addEvent(doc, "mouseout", browser.onInfoTipMouseOut); - addEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc)); - }, - - uninitializeBrowser: function(browser) - { - if (browser.infoTip) - { - ///var doc = browser.contentDocument; - var doc = browser.document; - ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true); - removeEvent(doc, "mouseover", browser.onInfoTipMouseMove); - removeEvent(doc, "mouseout", browser.onInfoTipMouseOut); - removeEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - browser.infoTip.parentNode.removeChild(browser.infoTip); - delete browser.infoTip; - delete browser.onInfoTipMouseMove; - } - }, - - showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset) - { - if (!Firebug.showInfoTips) - return; - - var scrollParent = getOverflowParent(target); - var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0); - - if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset)) - { - var htmlElt = infoTip.ownerDocument.documentElement; - var panelWidth = htmlElt.clientWidth; - var panelHeight = htmlElt.clientHeight; - - if (x+infoTip.offsetWidth+infoTipMargin > panelWidth) - { - infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px"; - infoTip.style.right = "auto"; - } - else - { - infoTip.style.left = (x+infoTipMargin) + "px"; - infoTip.style.right = "auto"; - } - - if (y+infoTip.offsetHeight+infoTipMargin > panelHeight) - { - infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px"; - infoTip.style.bottom = "auto"; - } - else - { - infoTip.style.top = (y+infoTipMargin) + "px"; - infoTip.style.bottom = "auto"; - } - - if (FBTrace.DBG_INFOTIP) - FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top + - ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom + - ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight + - ", offsetWidth: " + infoTip.offsetWidth + - ", x: " + x + ", panelWidth: " + panelWidth + - ", y: " + y + ", panelHeight: " + panelHeight); - - infoTip.setAttribute("active", "true"); - } - else - this.hideInfoTip(infoTip); - }, - - hideInfoTip: function(infoTip) - { - if (infoTip) - infoTip.removeAttribute("active"); - }, - - onMouseOut: function(event, browser) - { - if (!event.relatedTarget) - this.hideInfoTip(browser.infoTip); - }, - - onMouseMove: function(event, browser) - { - // Ignore if the mouse is moving over the existing info tip. - if (getAncestorByClass(event.target, "infoTip")) - return; - - if (browser.currentPanel) - { - var x = event.clientX, y = event.clientY, target = event.target || event.srcElement; - this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset); - } - else - this.hideInfoTip(browser.infoTip); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - populateColorInfoTip: function(infoTip, color) - { - this.tags.colorTag.replace({rgbValue: color}, infoTip); - return true; - }, - - populateImageInfoTip: function(infoTip, url, repeat) - { - if (!repeat) - repeat = "no-repeat"; - - this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip); - - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - disable: function() - { - // XXXjoe For each browser, call uninitializeBrowser - }, - - showPanel: function(browser, panel) - { - if (panel) - { - var infoTip = panel.panelBrowser.infoTip; - if (!infoTip) - infoTip = this.initializeBrowser(panel.panelBrowser); - this.hideInfoTip(infoTip); - } - - }, - - showSidePanel: function(browser, panel) - { - this.showPanel(browser, panel); - } -}); - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.InfoTip); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -// move to FBL -(function() { - -// ************************************************************************************************ -// XPath - -/** - * Gets an XPath for an element which describes its hierarchical location. - */ -this.getElementXPath = function(element) -{ - if (element && element.id) - return '//*[@id="' + element.id + '"]'; - else - return this.getElementTreeXPath(element); -}; - -this.getElementTreeXPath = function(element) -{ - var paths = []; - - for (; element && element.nodeType == 1; element = element.parentNode) - { - var index = 0; - for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) - { - if (sibling.nodeName == element.nodeName) - ++index; - } - - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[" + (index+1) + "]" : ""); - paths.splice(0, 0, tagName + pathIndex); - } - - return paths.length ? "/" + paths.join("/") : null; -}; - -this.getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -this.getRuleMatchingElements = function(rule, doc) -{ - var css = rule.selectorText; - var xpath = this.cssToXPath(css); - return this.getElementsByXPath(doc, xpath); -}; - - -}).call(FBL); - - - - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - -var toCamelCase = function toCamelCase(s) -{ - return s.replace(reSelectorCase, toCamelCaseReplaceFn); -}; - -var toSelectorCase = function toSelectorCase(s) -{ - return s.replace(reCamelCase, "-$1").toLowerCase(); - -}; - -var reCamelCase = /([A-Z])/g; -var reSelectorCase = /\-(.)/g; -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g) -{ - return g.toUpperCase(); -}; - - - - - -// ************************************************************************************************ - -var ElementCache = Firebug.Lite.Cache.Element; -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet; - -var globalCSSRuleIndex; - -var externalStyleSheetURLs = []; -var externalStyleSheetWarning = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'}, - SPAN("$object|STR"), - A({"href": "$href", target:"_blank"}, "$link|STR") - ) -}); - - -var processAllStyleSheetsTimeout = null; -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet) -{ - var url = styleSheet.href; - styleSheet.firebugIgnore = true; - - var source = Firebug.Lite.Proxy.load(url); - - // TODO: check for null and error responses - - - // remove comments - //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - //source = source.replace(reMultiComment, ""); - - // convert relative addresses to absolute ones - source = source.replace(/url\(([^\)]+)\)/g, function(a,name){ - - var hasDomain = /\w+:\/\/./.test(name); - - if (!hasDomain) - { - name = name.replace(/^(["'])(.+)\1$/, "$2"); - var first = name.charAt(0); - - // relative path, based on root - if (first == "/") - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLRoot - var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url); - - return m ? - "url(" + m[1] + name + ")" : - "url(" + name + ")"; - } - // relative path, based on current location - else - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLPath - var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, ""); - - path = path + name; - - var reBack = /[^\/]+\/\.\.\//; - while(reBack.test(path)) - { - path = path.replace(reBack, ""); - } - - //console.log("url(" + path + ")"); - - return "url(" + path + ")"; - } - } - - // if it is an absolute path, there is nothing to do - return a; - }); - - var oldStyle = styleSheet.ownerNode; - - if (!oldStyle) return; - - if (!oldStyle.parentNode) return; - - var style = createGlobalElement("style"); - style.setAttribute("charset","utf-8"); - style.setAttribute("type", "text/css"); - style.innerHTML = source; - - //debugger; - oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling); - oldStyle.parentNode.removeChild(oldStyle); - - - //doc.getElementsByTagName("head")[0].appendChild(style); - - doc.styleSheets[doc.styleSheets.length-1].externalURL = url; - - console.log(url, "call " + externalStyleSheetURLs.length, source); - - externalStyleSheetURLs.pop(); - - if (processAllStyleSheetsTimeout) - { - clearTimeout(processAllStyleSheetsTimeout); - } - - processAllStyleSheetsTimeout = setTimeout(function(){ - console.log("processing"); - FBL.processAllStyleSheets(doc, styleSheetIterator); - processAllStyleSheetsTimeout = null; - },200); - -}; - - -FBL.processAllStyleSheets = function(doc, styleSheetIterator) -{ - styleSheetIterator = styleSheetIterator || processStyleSheet; - - globalCSSRuleIndex = -1; - - var styleSheets = doc.styleSheets; - var importedStyleSheets = []; - - if (FBTrace.DBG_CSS) - var start = new Date().getTime(); - - for(var i=0, length=styleSheets.length; i maxSpecificity) - { - maxSpecificity = spec; - mostSpecificSelector = sel; - } - } - } - - rule.specificity = maxSpecificity; - } - } - - rules.sort(sortElementRules); - //rules.sort(solveRulesTied); - - return rules; -}; - -var sortElementRules = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - var specificityA = ruleA.specificity; - var specificityB = ruleB.specificity; - - if (specificityA > specificityB) - return 1; - - else if (specificityA < specificityB) - return -1; - - else - return ruleA.order > ruleB.order ? 1 : -1; -}; - -var solveRulesTied = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - if (ruleA.specificity == ruleB.specificity) - return ruleA.order > ruleB.order ? 1 : -1; - - return null; -}; - -var reSelectorTag = /(^|\s)(?:\w+)/g; -var reSelectorClass = /\.[\w\d_-]+/g; -var reSelectorId = /#[\w\d_-]+/g; - -var getCSSRuleSpecificity = function(selector) -{ - var match = selector.match(reSelectorTag); - var tagCount = match ? match.length : 0; - - match = selector.match(reSelectorClass); - var classCount = match ? match.length : 0; - - match = selector.match(reSelectorId); - var idCount = match ? match.length : 0; - - return tagCount + 10*classCount + 100*idCount; -}; - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule; -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor; -//const nsISelectionDisplay = Ci.nsISelectionDisplay; -//const nsISelectionController = Ci.nsISelectionController; - -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153 -//const STATE_ACTIVE = 0x01; -//const STATE_FOCUS = 0x02; -//const STATE_HOVER = 0x04; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Firebug.SourceBoxPanel = Firebug.Panel; - -var domUtils = null; - -var textContent = isIE ? "innerText" : "textContent"; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var CSSDomplateBase = { - isEditable: function(rule) - { - return !rule.isSystemSheet; - }, - isSelectorEditable: function(rule) - { - return rule.isSelectorEditable && this.isEditable(rule); - } -}; - -var CSSPropTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled", - $editGroup: "$rule|isEditable", - $cssOverridden: "$prop.overridden", role : "option"}, - A({"class": "cssPropDisable"}, "  "), - SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"), - SPAN({"class": "cssColon"}, ":"), - SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"), - SPAN({"class": "cssSemi"}, ";") - ) -}); - -var CSSRuleTag = - TAG("$rule.tag", {rule: "$rule"}); - -var CSSImportRuleTag = domplate({ - tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"}, - "@import "", - A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"), - "";" - ) -}); - -var CSSStyleRuleTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssRule insertInto", - $cssEditableRule: "$rule|isEditable", - $editGroup: "$rule|isSelectorEditable", - _repObject: "$rule.rule", - "ruleId": "$rule.id", role : 'presentation'}, - DIV({"class": "cssHead focusRow", role : 'listitem'}, - SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {" - ), - DIV({role : 'group'}, - DIV({"class": "cssPropertyListBox", role : 'listbox'}, - FOR("prop", "$rule.props", - TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"}) - ) - ) - ), - DIV({"class": "editable insertBefore", role:"presentation"}, "}") - ) -}); - -var reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; - -var reURL = /url\("?([^"\)]+)?"?\)/; - -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/; - -//const sothinkInstalled = !!$("swfcatcherKey_sidebar"); -var sothinkInstalled = false; -var styleGroups = -{ - text: [ - "font-family", - "font-size", - "font-weight", - "font-style", - "color", - "text-transform", - "text-decoration", - "letter-spacing", - "word-spacing", - "line-height", - "text-align", - "vertical-align", - "direction", - "column-count", - "column-gap", - "column-width" - ], - - background: [ - "background-color", - "background-image", - "background-repeat", - "background-position", - "background-attachment", - "opacity" - ], - - box: [ - "width", - "height", - "top", - "right", - "bottom", - "left", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width", - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color", - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style", - "-moz-border-top-radius", - "-moz-border-right-radius", - "-moz-border-bottom-radius", - "-moz-border-left-radius", - "outline-top-width", - "outline-right-width", - "outline-bottom-width", - "outline-left-width", - "outline-top-color", - "outline-right-color", - "outline-bottom-color", - "outline-left-color", - "outline-top-style", - "outline-right-style", - "outline-bottom-style", - "outline-left-style" - ], - - layout: [ - "position", - "display", - "visibility", - "z-index", - "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow - "overflow-y", - "overflow-clip", - "white-space", - "clip", - "float", - "clear", - "-moz-box-sizing" - ], - - other: [ - "cursor", - "list-style-image", - "list-style-position", - "list-style-type", - "marker-offset", - "user-focus", - "user-select", - "user-modify", - "user-input" - ] -}; - -var styleGroupTitles = -{ - text: "Text", - background: "Background", - box: "Box Model", - layout: "Layout", - other: "Other" -}; - -Firebug.CSSModule = extend(Firebug.Module, -{ - freeEdit: function(styleSheet, value) - { - if (!styleSheet.editStyleSheet) - { - var ownerNode = getStyleSheetOwnerNode(styleSheet); - styleSheet.disabled = true; - - var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL); - url.spec = styleSheet.href; - - var editStyleSheet = ownerNode.ownerDocument.createElementNS( - "http://www.w3.org/1999/xhtml", - "style"); - unwrapObject(editStyleSheet).firebugIgnore = true; - editStyleSheet.setAttribute("type", "text/css"); - editStyleSheet.setAttributeNS( - "http://www.w3.org/XML/1998/namespace", - "base", - url.directory); - if (ownerNode.hasAttribute("media")) - { - editStyleSheet.setAttribute("media", ownerNode.getAttribute("media")); - } - - // Insert the edited stylesheet directly after the old one to ensure the styles - // cascade properly. - ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling); - - styleSheet.editStyleSheet = editStyleSheet; - } - - styleSheet.editStyleSheet.innerHTML = value; - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n"); - - dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]); - }, - - insertRule: function(styleSheet, cssText, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText); - var insertIndex = styleSheet.insertRule(cssText, ruleIndex); - - dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]); - - return insertIndex; - }, - - deleteRule: function(styleSheet, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules); - dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]); - - styleSheet.deleteRule(ruleIndex); - }, - - setProperty: function(rule, propName, propValue, propPriority) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - // good browsers - if (style.getPropertyValue) - { - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect - // unless we remove the property first - style.removeProperty(propName); - - style.setProperty(propName, propValue, propPriority); - } - // sad browsers - else - { - // TODO: xxxpedro parse CSS rule to find property priority in IE? - //console.log(propName, propValue); - style[toCamelCase(propName)] = propValue; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]); - } - }, - - removeProperty: function(rule, propName, parent) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - if (style.getPropertyValue) - { - - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - style.removeProperty(propName); - } - else - { - style[toCamelCase(propName)] = ""; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]); - } - }/*, - - cleanupSheets: function(doc, context) - { - // Due to the manner in which the layout engine handles multiple - // references to the same sheet we need to kick it a little bit. - // The injecting a simple stylesheet then removing it will force - // Firefox to regenerate it's CSS hierarchy. - // - // WARN: This behavior was determined anecdotally. - // See http://code.google.com/p/fbug/issues/detail?id=2440 - var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - style.setAttribute("charset","utf-8"); - unwrapObject(style).firebugIgnore = true; - style.setAttribute("type", "text/css"); - style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}"; - addStyleSheet(doc, style); - style.parentNode.removeChild(style); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=500365 - // This voodoo touches each style sheet to force some Firefox internal change to allow edits. - var styleSheets = getAllStyleSheets(context); - for(var i = 0; i < styleSheets.length; i++) - { - try - { - var rules = styleSheets[i].cssRules; - if (rules.length > 0) - var touch = rules[0]; - if (FBTrace.DBG_CSS && touch) - FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName())); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e); - } - } - }, - cleanupSheetHandler: function(event, context) - { - var target = event.target || event.srcElement, - tagName = (target.tagName || "").toLowerCase(); - if (tagName == "link") - { - this.cleanupSheets(target.ownerDocument, context); - } - }, - watchWindow: function(context, win) - { - var cleanupSheets = bind(this.cleanupSheets, this), - cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context), - doc = win.document; - - //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false); - //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false); - }, - loadedContext: function(context) - { - var self = this; - iterateWindows(context.browser.contentWindow, function(subwin) - { - self.cleanupSheets(subwin.document, context); - }); - } - /**/ -}); - -// ************************************************************************************************ - -Firebug.CSSStyleSheetPanel = function() {}; - -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel, -{ - template: domplate( - { - tag: - DIV({"class": "cssSheet insertInto a11yCSSView"}, - FOR("rule", "$rules", - CSSRuleTag - ), - DIV({"class": "cssSheet editable insertBefore"}, "") - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - refresh: function() - { - if (this.location) - this.updateLocation(this.location); - else if (this.selection) - this.updateSelection(this.selection); - }, - - toggleEditing: function() - { - if (!this.stylesheetEditor) - this.stylesheetEditor = new StyleSheetEditor(this.document); - - if (this.editing) - Firebug.Editor.stopEditing(); - else - { - if (!this.location) - return; - - var styleSheet = this.location.editStyleSheet - ? this.location.editStyleSheet.sheet - : this.location; - - var css = getStyleSheetCSS(styleSheet, this.context); - //var topmost = getTopmostRuleLine(this.panelNode); - - this.stylesheetEditor.styleSheet = this.location; - Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor); - //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset); - } - }, - - getStylesheetURL: function(rule) - { - if (this.location.href) - return this.location.href; - else - return this.context.window.location.href; - }, - - getRuleByLine: function(styleSheet, line) - { - if (!domUtils) - return null; - - var cssRules = styleSheet.cssRules; - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - if (rule instanceof CSSStyleRule) - { - var ruleLine = domUtils.getRuleLine(rule); - if (ruleLine >= line) - return rule; - } - } - }, - - highlightRule: function(rule) - { - var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule); - if (ruleElement) - { - scrollIntoCenterView(ruleElement, this.panelNode); - setClassTimed(ruleElement, "jumpHighlight", this.context); - } - }, - - getStyleSheetRules: function(context, styleSheet) - { - var isSystemSheet = isSystemStyleSheet(styleSheet); - - function appendRules(cssRules) - { - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - - // TODO: xxxpedro opera instanceof stylesheet remove the following comments when - // the issue with opera and style sheet Classes has been solved. - - //if (rule instanceof CSSStyleRule) - if (instanceOf(rule, "CSSStyleRule")) - { - var props = this.getRuleProperties(context, rule); - //var line = domUtils.getRuleLine(rule); - var line = null; - - var selector = rule.selectorText; - - if (isIE) - { - selector = selector.replace(reSelectorTag, - function(s){return s.toLowerCase();}); - } - - var ruleId = rule.selectorText+"/"+line; - rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId, - selector: selector, props: props, - isSystemSheet: isSystemSheet, - isSelectorEditable: true}); - } - //else if (rule instanceof CSSImportRule) - else if (instanceOf(rule, "CSSImportRule")) - rules.push({tag: CSSImportRuleTag.tag, rule: rule}); - //else if (rule instanceof CSSMediaRule) - else if (instanceOf(rule, "CSSMediaRule")) - appendRules.apply(this, [rule.cssRules]); - else - { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS) - FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule); - } - } - } - - var rules = []; - appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]); - return rules; - }, - - parseCSSProps: function(style, inheritMode) - { - var props = []; - - if (Firebug.expandShorthandProps) - { - var count = style.length-1, - index = style.length; - while (index--) - { - var propName = style.item(count - index); - this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props); - } - } - else - { - var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - // TODO: xxxpedro port to firebug: variable leaked into global namespace - var m; - - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) - continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) - this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props); - }; - } - - return props; - }, - - getRuleProperties: function(context, rule, inheritMode) - { - var props = this.parseCSSProps(rule.style, inheritMode); - - // TODO: xxxpedro port to firebug: variable leaked into global namespace - //var line = domUtils.getRuleLine(rule); - var line; - var ruleId = rule.selectorText+"/"+line; - this.addOldProperties(context, ruleId, inheritMode, props); - sortProperties(props); - - return props; - }, - - addOldProperties: function(context, ruleId, inheritMode, props) - { - if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) ) - { - var moreProps = context.selectorMap[ruleId]; - for (var i = 0; i < moreProps.length; ++i) - { - var prop = moreProps[i]; - this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props); - } - } - }, - - addProperty: function(name, value, important, disabled, inheritMode, props) - { - name = name.toLowerCase(); - - if (inheritMode && !inheritedStyleNames[name]) - return; - - name = this.translateName(name, value); - if (name) - { - value = stripUnits(rgbToHex(value)); - important = important ? " !important" : ""; - - var prop = {name: name, value: value, important: important, disabled: disabled}; - props.push(prop); - } - }, - - translateName: function(name, value) - { - // Don't show these proprietary Mozilla properties - if ((value == "-moz-initial" - && (name == "-moz-background-clip" || name == "-moz-background-origin" - || name == "-moz-background-inline-policy")) - || (value == "physical" - && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source" - || name == "margin-right-ltr-source" || name == "margin-right-rtl-source")) - || (value == "physical" - && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source" - || name == "padding-right-ltr-source" || name == "padding-right-rtl-source"))) - return null; - - // Translate these back to the form the user probably expects - if (name == "margin-left-value") - return "margin-left"; - else if (name == "margin-right-value") - return "margin-right"; - else if (name == "margin-top-value") - return "margin-top"; - else if (name == "margin-bottom-value") - return "margin-bottom"; - else if (name == "padding-left-value") - return "padding-left"; - else if (name == "padding-right-value") - return "padding-right"; - else if (name == "padding-top-value") - return "padding-top"; - else if (name == "padding-bottom-value") - return "padding-bottom"; - // XXXjoe What about border! - else - return name; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - editElementStyle: function() - { - ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0]; - var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0]; - var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection); - if (!styleRuleBox) - { - var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []}; - if (!rulesBox) - { - // The element did not have any displayed styles. We need to create the whole tree and remove - // the no styles message - styleRuleBox = this.template.cascadedTag.replace({ - rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom") - }, this.panelNode); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0]; - styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0]; - } - else - styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0]; - styleRuleBox = $$(".insertInto", styleRuleBox)[0]; - } - - Firebug.Editor.insertRowForObject(styleRuleBox); - }, - - insertPropertyRow: function(row) - { - Firebug.Editor.insertRowForObject(row); - }, - - insertRule: function(row) - { - var location = getAncestorByClass(row, "cssRule"); - if (!location) - { - location = getChildByClass(this.panelNode, "cssSheet"); - Firebug.Editor.insertRowForObject(location); - } - else - { - Firebug.Editor.insertRow(location, "before"); - } - }, - - editPropertyRow: function(row) - { - var propValueBox = getChildByClass(row, "cssPropValue"); - Firebug.Editor.startEditing(propValueBox); - }, - - deletePropertyRow: function(row) - { - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - Firebug.CSSModule.removeProperty(rule, propName); - - // Remove the property from the selector map, if it was disabled - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) ) - { - var map = this.context.selectorMap[ruleId]; - for (var i = 0; i < map.length; ++i) - { - if (map[i].name == propName) - { - map.splice(i, 1); - break; - } - } - } - if (this.name == "stylesheet") - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]); - row.parentNode.removeChild(row); - - this.markChange(this.name == "stylesheet"); - }, - - disablePropertyRow: function(row) - { - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - - if (!this.context.selectorMap) - this.context.selectorMap = {}; - - // XXXjoe Generate unique key for elements too - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if (!(this.context.selectorMap.hasOwnProperty(ruleId))) - this.context.selectorMap[ruleId] = []; - - var map = this.context.selectorMap[ruleId]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - if (hasClass(row, "disabledStyle")) - { - Firebug.CSSModule.removeProperty(rule, propName); - - map.push({"name": propName, "value": parsedValue.value, - "important": parsedValue.priority}); - } - else - { - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - - var index = findPropByName(map, propName); - map.splice(index, 1); - } - - this.markChange(this.name == "stylesheet"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onMouseDown: function(event) - { - //console.log("onMouseDown", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - // XXjoe Hack to only allow clicking on the checkbox - if (!isLeftClick(event) || offset > 20) - return; - - var target = event.target || event.srcElement; - if (hasClass(target, "textEditor")) - return; - - var row = getAncestorByClass(target, "cssProp"); - if (row && hasClass(row, "editGroup")) - { - this.disablePropertyRow(row); - cancelEvent(event); - } - }, - - onDoubleClick: function(event) - { - //console.log("onDoubleClick", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - if (!isLeftClick(event) || offset <= 20) - return; - - var target = event.target || event.srcElement; - - //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20); - - // if the inline editor was clicked, don't insert a new rule - if (hasClass(target, "textEditorInner")) - return; - - var row = getAncestorByClass(target, "cssRule"); - if (row && !getAncestorByClass(target, "cssPropName") - && !getAncestorByClass(target, "cssPropValue")) - { - this.insertPropertyRow(row); - cancelEvent(event); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "stylesheet", - title: "CSS", - parentPanel: null, - searchable: true, - dependents: ["css", "stylesheet", "dom", "domSide", "layout"], - - options: - { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onMouseDown = bind(this.onMouseDown, this); - this.onDoubleClick = bind(this.onDoubleClick, this); - - if (this.name == "stylesheet") - { - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var selectNode = this.selectNode = createElement("select"); - - processAllStyleSheets(doc, function(doc, styleSheet) - { - var key = StyleSheetCache.key(styleSheet); - var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href); - var option = createElement("option", {value: key}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }); - - this.toolButtonsNode.appendChild(selectNode); - } - /**/ - }, - - onChangeSelect: function(event) - { - event = event || window.event; - var target = event.srcElement || event.currentTarget; - var key = target.value; - var styleSheet = StyleSheetCache.get(key); - - this.updateLocation(styleSheet); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - //if (!domUtils) - //{ - // try { - // domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); - // } catch (exc) { - // if (FBTrace.DBG_ERRORS) - // FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc); - // } - //} - - //TODO: xxxpedro - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - this.initializeNode(); - - if (this.name == "stylesheet") - { - var styleSheets = Firebug.browser.document.styleSheets; - - if (styleSheets.length > 0) - { - addEvent(this.selectNode, "change", this.onChangeSelect); - - this.updateLocation(styleSheets[0]); - } - } - - //Firebug.SourceBoxPanel.initialize.apply(this, arguments); - }, - - shutdown: function() - { - // must destroy the editor when we leave the panel to avoid problems (Issue 2981) - Firebug.Editor.stopEditing(); - - if (this.name == "stylesheet") - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - } - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - destroy: function(state) - { - //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop; - - //persistObjects(this, state); - - // xxxpedro we are stopping the editor in the shutdown method already - //Firebug.Editor.stopEditing(); - Firebug.Panel.destroy.apply(this, arguments); - }, - - initializeNode: function(oldPanelNode) - { - addEvent(this.panelNode, "mousedown", this.onMouseDown); - addEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']); - }, - - destroyNode: function() - { - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - removeEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']); - }, - - ishow: function(state) - { - Firebug.Inspector.stopInspecting(true); - - this.showToolbarButtons("fbCSSButtons", true); - - if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel - { - restoreObjects(this, state); - - if (!this.location) - this.location = this.getDefaultLocation(); - - if (state && state.scrollTop) - this.panelNode.scrollTop = state.scrollTop; - } - }, - - ihide: function() - { - this.showToolbarButtons("fbCSSButtons", false); - - this.lastScrollTop = this.panelNode.scrollTop; - }, - - supportsObject: function(object) - { - if (object instanceof CSSStyleSheet) - return 1; - else if (object instanceof CSSStyleRule) - return 2; - else if (object instanceof CSSStyleDeclaration) - return 2; - else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href)) - return 2; - else - return 0; - }, - - updateLocation: function(styleSheet) - { - if (!styleSheet) - return; - if (styleSheet.editStyleSheet) - styleSheet = styleSheet.editStyleSheet.sheet; - - // if it is a restricted stylesheet, show the warning message and abort the update process - if (styleSheet.restricted) - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode); - - // TODO: xxxpedro remove when there the external resource problem is fixed - externalStyleSheetWarning.tag.append({ - object: "The stylesheet could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22" - }, this.panelNode); - - return; - } - - var rules = this.getStyleSheetRules(this.context, styleSheet); - - var result; - if (rules.length) - result = this.template.tag.replace({rules: rules}, this.panelNode); - else - result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode); - - // TODO: xxxpedro need to fix showToolbarButtons function - //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location)); - - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]); - }, - - updateSelection: function(object) - { - this.selection = null; - - if (object instanceof CSSStyleDeclaration) { - object = object.parentRule; - } - - if (object instanceof CSSStyleRule) - { - this.navigate(object.parentStyleSheet); - this.highlightRule(object); - } - else if (object instanceof CSSStyleSheet) - { - this.navigate(object); - } - else if (object instanceof SourceLink) - { - try - { - var sourceLink = object; - - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - clearNode(this.panelNode); // replace rendered stylesheets - this.showSourceFile(sourceFile); - - var lineNo = object.line; - if (lineNo) - this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context)); - } - else // XXXjjb we should not be taking this path - { - var stylesheet = getStyleSheetByHref(sourceLink.href, this.context); - if (stylesheet) - this.navigate(stylesheet); - else - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink); - } - } - } - catch(exc) { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.upDateSelection FAILS "+exc, exc); - } - } - }, - - updateOption: function(name, value) - { - if (name == "expandShorthandProps") - this.refresh(); - }, - - getLocationList: function() - { - var styleSheets = getAllStyleSheets(this.context); - return styleSheets; - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }, - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ]; - }, - - getContextMenuItems: function(style, target) - { - var items = []; - - if (this.infoTipType == "color") - { - items.push( - {label: "CopyColor", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) } - ); - } - else if (this.infoTipType == "image") - { - items.push( - {label: "CopyImageLocation", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }, - {label: "OpenImageInNewTab", - command: bindFixed(openNewTab, FBL, this.infoTipObject) } - ); - } - - ///if (this.selection instanceof Element) - if (isElement(this.selection)) - { - items.push( - //"-", - {label: "EditStyle", - command: bindFixed(this.editElementStyle, this) } - ); - } - else if (!isSystemStyleSheet(this.selection)) - { - items.push( - //"-", - {label: "NewRule", - command: bindFixed(this.insertRule, this, target) } - ); - } - - var cssRule = getAncestorByClass(target, "cssRule"); - if (cssRule && hasClass(cssRule, "cssEditableRule")) - { - items.push( - "-", - {label: "NewProp", - command: bindFixed(this.insertPropertyRow, this, target) } - ); - - var propRow = getAncestorByClass(target, "cssProp"); - if (propRow) - { - var propName = getChildByClass(propRow, "cssPropName")[textContent]; - var isDisabled = hasClass(propRow, "disabledStyle"); - - items.push( - {label: $STRF("EditProp", [propName]), nol10n: true, - command: bindFixed(this.editPropertyRow, this, propRow) }, - {label: $STRF("DeleteProp", [propName]), nol10n: true, - command: bindFixed(this.deletePropertyRow, this, propRow) }, - {label: $STRF("DisableProp", [propName]), nol10n: true, - type: "checkbox", checked: isDisabled, - command: bindFixed(this.disablePropertyRow, this, propRow) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ); - - return items; - }, - - browseObject: function(object) - { - if (this.infoTipType == "image") - { - openNewTab(this.infoTipObject); - return true; - } - }, - - showInfoTip: function(infoTip, target, x, y) - { - var propValue = getAncestorByClass(target, "cssPropValue"); - if (propValue) - { - var offset = getClientOffset(propValue); - var offsetX = x-offset.x; - - var text = propValue[textContent]; - var charWidth = propValue.offsetWidth/text.length; - var charOffset = Math.floor(offsetX/charWidth); - - var cssValue = parseCSSValue(text, charOffset); - if (cssValue) - { - if (cssValue.value == this.infoTipValue) - return true; - - this.infoTipValue = cssValue.value; - - if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value))) - { - this.infoTipType = "color"; - this.infoTipObject = cssValue.value; - - return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value); - } - else if (cssValue.type == "url") - { - ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0); - var propNameNode = getElementByClass(target.parentNode, "cssPropName"); - if (propNameNode && isImageRule(propNameNode[textContent])) - { - var rule = Firebug.getRepObject(target); - var baseURL = this.getStylesheetURL(rule); - var relURL = parseURLValue(cssValue.value); - var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL); - var repeat = parseRepeatValue(text); - - this.infoTipType = "image"; - this.infoTipObject = absURL; - - return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat); - } - } - } - } - - delete this.infoTipType; - delete this.infoTipValue; - delete this.infoTipObject; - }, - - getEditor: function(target, value) - { - if (target == this.panelNode - || hasClass(target, "cssSelector") || hasClass(target, "cssRule") - || hasClass(target, "cssSheet")) - { - if (!this.ruleEditor) - this.ruleEditor = new CSSRuleEditor(this.document); - - return this.ruleEditor; - } - else - { - if (!this.editor) - this.editor = new CSSEditor(this.document); - - return this.editor; - } - }, - - getDefaultLocation: function() - { - try - { - var styleSheets = this.context.window.document.styleSheets; - if (styleSheets.length) - { - var sheet = styleSheets[0]; - return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet; - } - } - catch (exc) - { - if (FBTrace.DBG_LOCATIONS) - FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc); - } - }, - - getObjectDescription: function(styleSheet) - { - var url = getURLForStyleSheet(styleSheet); - var instance = getInstanceForStyleSheet(styleSheet); - - var baseDescription = splitURLBase(url); - if (instance) { - baseDescription.name = baseDescription.name + " #" + (instance + 1); - } - return baseDescription; - }, - - search: function(text, reverse) - { - var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse); - if (!curDoc && Firebug.searchGlobal) - { - return this.searchOtherDocs(text, reverse); - } - return curDoc; - }, - - searchOtherDocs: function(text, reverse) - { - var scanRE = Firebug.Search.getTestingRegex(text); - function scanDoc(styleSheet) { - // we don't care about reverse here as we are just looking for existence, - // if we do have a result we will handle the reverse logic on display - for (var i = 0; i < styleSheet.cssRules.length; i++) - { - if (scanRE.test(styleSheet.cssRules[i].cssText)) - { - return true; - } - } - } - - if (this.navigateToNextDocument(scanDoc, reverse)) - { - return this.searchCurrentDoc(true, text, reverse); - } - }, - - searchCurrentDoc: function(wrapSearch, text, reverse) - { - if (!text) - { - delete this.currentSearch; - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - { - row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text)); - } - else - { - if (this.editing) - { - this.currentSearch = new TextSearch(this.stylesheetEditor.box); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - scrollSelectionIntoView(this); - return true; - } - else - return false; - } - else - { - function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - } - } - - if (row) - { - this.document.defaultView.getSelection().selectAllChildren(row); - scrollIntoCenterView(row, this.panelNode); - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]); - return false; - } - }, - - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"), - Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal") - ]; - } -}); -/**/ -// ************************************************************************************************ - -function CSSElementPanel() {} - -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype, -{ - template: domplate( - { - cascadedTag: - DIV({"class": "a11yCSSView", role : 'presentation'}, - DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') }, - FOR("rule", "$rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ), - DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')}, - FOR("section", "$inherited", - H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' }, - SPAN({"class": "cssInheritLabel"}, "$inheritLabel"), - TAG(FirebugReps.Element.shortTag, {object: "$section.element"}) - ), - DIV({role : 'group'}, - FOR("rule", "$section.rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ) - ) - ) - ), - - ruleTag: - isIE ? - // IE needs the sourceLink first, otherwise it will be rendered outside the panel - DIV({"class": "cssElementRuleContainer"}, - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}), - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}) - ) - : - // other browsers need the sourceLink last, otherwise it will cause an extra space - // before the rule representation - DIV({"class": "cssElementRuleContainer"}, - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}), - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateCascadeView: function(element) - { - //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]); - var rules = [], sections = [], usedProps = {}; - this.getInheritedRules(element, sections, usedProps); - this.getElementRules(element, rules, usedProps); - - if (rules.length || sections.length) - { - var inheritLabel = "Inherited from"; // $STR("InheritedFrom"); - var result = this.template.cascadedTag.replace({rules: rules, inherited: sections, - inheritLabel: inheritLabel}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - else - { - var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - - // TODO: xxxpedro remove when there the external resource problem is fixed - if (externalStyleSheetURLs.length > 0) - externalStyleSheetWarning.tag.append({ - object: "The results here may be inaccurate because some " + - "stylesheets could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22" - }, this.panelNode); - }, - - getStylesheetURL: function(rule) - { - // if the parentStyleSheet.href is null, CSS std says its inline style. - // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location - if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href) - return rule.parentStyleSheet.href; - else - return this.selection.ownerDocument.location.href; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getInheritedRules: function(element, sections, usedProps) - { - var parent = element.parentNode; - if (parent && parent.nodeType == 1) - { - this.getInheritedRules(parent, sections, usedProps); - - var rules = []; - this.getElementRules(parent, rules, usedProps, true); - - if (rules.length) - sections.splice(0, 0, {element: parent, rules: rules}); - } - }, - - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - - // TODO: xxxpedro remove document specificity issue - //var eid = ElementCache(element); - //inspectedRules = ElementCSSRulesMap[eid]; - - inspectedRules = getElementCSSRules(element); - - if (inspectedRules) - { - for (var i = 0, length=inspectedRules.length; i < length; ++i) - { - var ruleId = inspectedRules[i]; - var ruleData = CSSRuleMap[ruleId]; - var rule = ruleData.rule; - - var ssid = ruleData.styleSheetId; - var parentStyleSheet = StyleSheetCache.get(ssid); - - var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href; // Null means inline - - var instance = null; - //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = false; - //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - // - //var line = domUtils.getRuleLine(rule); - var line; - - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: ruleData.selector, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /* - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - try - { - inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null; - } catch (exc) {} - - if (inspectedRules) - { - for (var i = 0; i < inspectedRules.Count(); ++i) - { - var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule); - - var href = rule.parentStyleSheet.href; // Null means inline - - var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - var line = domUtils.getRuleLine(rule); - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: rule.selectorText, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /**/ - markOverridenProps: function(props, usedProps, inheritMode) - { - for (var i = 0; i < props.length; ++i) - { - var prop = props[i]; - if ( usedProps.hasOwnProperty(prop.name) ) - { - var deadProps = usedProps[prop.name]; // all previous occurrences of this property - for (var j = 0; j < deadProps.length; ++j) - { - var deadProp = deadProps[j]; - if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important) - prop.overridden = true; // new occurrence overridden - else if (!prop.disabled) - deadProp.overridden = true; // previous occurrences overridden - } - } - else - usedProps[prop.name] = []; - - prop.wasInherited = inheritMode ? true : false; - usedProps[prop.name].push(prop); // all occurrences of a property seen so far, by name - } - }, - - getStyleProperties: function(element, rules, usedProps, inheritMode) - { - var props = this.parseCSSProps(element.style, inheritMode); - this.addOldProperties(this.context, getElementXPath(element), inheritMode, props); - - sortProperties(props); - this.markOverridenProps(props, usedProps, inheritMode); - - if (props.length) - rules.splice(0, 0, - {rule: element, id: getElementXPath(element), - selector: "element.style", props: props, inherited: inheritMode}); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "css", - title: "Style", - parentPanel: "HTML", - order: 0, - - initialize: function() - { - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - - //this.updateCascadeView(document.getElementsByTagName("h1")[0]); - //this.updateCascadeView(document.getElementById("build")); - - /* - this.onStateChange = bindFixed(this.contentStateCheck, this); - this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER); - this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE); - /**/ - }, - - ishow: function(state) - { - }, - - watchWindow: function(win) - { - if (domUtils) - { - // Normally these would not be required, but in order to update after the state is set - // using the options menu we need to monitor these global events as well - var doc = win.document; - ///addEvent(doc, "mouseover", this.onHoverChange); - ///addEvent(doc, "mousedown", this.onActiveChange); - } - }, - unwatchWindow: function(win) - { - var doc = win.document; - ///removeEvent(doc, "mouseover", this.onHoverChange); - ///removeEvent(doc, "mousedown", this.onActiveChange); - - if (isAncestor(this.stateChangeEl, doc)) - { - this.removeStateChangeHandlers(); - } - }, - - supportsObject: function(object) - { - return object instanceof Element ? 1 : 0; - }, - - updateView: function(element) - { - this.updateCascadeView(element); - if (domUtils) - { - this.contentState = safeGetContentState(element); - this.addStateChangeHandlers(element); - } - }, - - updateSelection: function(element) - { - if ( !instanceOf(element , "Element") ) // html supports SourceLink - return; - - if (sothinkInstalled) - { - FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode); - return; - } - - /* - if (!domUtils) - { - FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode); - return; - } - /**/ - - if (!element) - return; - - this.updateView(element); - }, - - updateOption: function(name, value) - { - if (name == "showUserAgentCSS" || name == "expandShorthandProps") - this.refresh(); - }, - - getOptionsMenuItems: function() - { - var ret = [ - {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS, - command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") }, - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") } - ]; - if (domUtils && this.selection) - { - var state = safeGetContentState(this.selection); - - ret.push("-"); - ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE, - command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)}); - ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER, - command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)}); - } - return ret; - }, - - updateContentState: function(state, remove) - { - domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state); - this.refresh(); - }, - - addStateChangeHandlers: function(el) - { - this.removeStateChangeHandlers(); - - /* - addEvent(el, "focus", this.onStateChange); - addEvent(el, "blur", this.onStateChange); - addEvent(el, "mouseup", this.onStateChange); - addEvent(el, "mousedown", this.onStateChange); - addEvent(el, "mouseover", this.onStateChange); - addEvent(el, "mouseout", this.onStateChange); - /**/ - - this.stateChangeEl = el; - }, - - removeStateChangeHandlers: function() - { - var sel = this.stateChangeEl; - if (sel) - { - /* - removeEvent(sel, "focus", this.onStateChange); - removeEvent(sel, "blur", this.onStateChange); - removeEvent(sel, "mouseup", this.onStateChange); - removeEvent(sel, "mousedown", this.onStateChange); - removeEvent(sel, "mouseover", this.onStateChange); - removeEvent(sel, "mouseout", this.onStateChange); - /**/ - } - }, - - contentStateCheck: function(state) - { - if (!state || this.contentState & state) - { - var timeoutRunner = bindFixed(function() - { - var newState = safeGetContentState(this.selection); - if (newState != this.contentState) - { - this.context.invalidatePanels(this.name); - } - }, this); - - // Delay exec until after the event has processed and the state has been updated - setTimeout(timeoutRunner, 0); - } - } -}); - -function safeGetContentState(selection) -{ - try - { - return domUtils.getContentState(selection); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.safeGetContentState; EXCEPTION", e); - } -} - -// ************************************************************************************************ - -function CSSComputedElementPanel() {} - -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype, -{ - template: domplate( - { - computedTag: - DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')}, - FOR("group", "$groups", - H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"}, - SPAN({"class": "cssInheritLabel"}, "$group.title") - ), - TABLE({width: "100%", role : 'group'}, - TBODY({role : 'presentation'}, - FOR("prop", "$group.props", - TR({"class": 'focusRow computedStyleRow', role : 'listitem'}, - TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"), - TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value") - ) - ) - ) - ) - ) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateComputedView: function(element) - { - var win = isIE ? - element.ownerDocument.parentWindow : - element.ownerDocument.defaultView; - - var style = isIE ? - element.currentStyle : - win.getComputedStyle(element, ""); - - var groups = []; - - for (var groupName in styleGroups) - { - // TODO: xxxpedro i18n $STR - //var title = $STR("StyleGroup-" + groupName); - var title = styleGroupTitles[groupName]; - var group = {title: title, props: []}; - groups.push(group); - - var props = styleGroups[groupName]; - for (var i = 0; i < props.length; ++i) - { - var propName = props[i]; - var propValue = style.getPropertyValue ? - style.getPropertyValue(propName) : - ""+style[toCamelCase(propName)]; - - if (propValue === undefined || propValue === null) - continue; - - propValue = stripUnits(rgbToHex(propValue)); - if (propValue) - group.props.push({name: propName, value: propValue}); - } - } - - var result = this.template.computedTag.replace({groups: groups}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "computed", - title: "Computed", - parentPanel: "HTML", - order: 1, - - updateView: function(element) - { - this.updateComputedView(element); - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Refresh", command: bind(this.refresh, this) } - ]; - } -}); - -// ************************************************************************************************ -// CSSEditor - -function CSSEditor(doc) -{ - this.initializeInline(doc); -} - -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var rule = Firebug.getRepObject(target); - var emptyProp = - { - // TODO: xxxpedro - uses charCode(255) to force the element being rendered, - // allowing webkit to get the correct position of the property name "span", - // when inserting a new CSS rule? - name: "", - value: "", - important: "" - }; - - if (insertWhere == "before") - return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target); - else - return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - // We need to check the value first in order to avoid a problem in IE8 - // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - if (!value) return; - - target.innerHTML = escapeForCss(value); - - var row = getAncestorByClass(target, "cssProp"); - if (hasClass(row, "disabledStyle")) - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(target); - - if (hasClass(target, "cssPropName")) - { - if (value && previousValue != value) // name of property has changed. - { - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - - if (propValue && propValue != "undefined") { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n"); - if (previousValue) - Firebug.CSSModule.removeProperty(rule, previousValue); - Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority); - } - } - else if (!value) // name of the property has been deleted, so remove the property. - Firebug.CSSModule.removeProperty(rule, previousValue); - } - else if (getAncestorByClass(target, "cssPropValue")) - { - var propName = getChildByClass(row, "cssPropName")[textContent]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - - if (FBTrace.DBG_CSS) - { - FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n"); - // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style); - } - - if (value && value != "null") - { - var parsedValue = parsePriority(value); - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - } - else if (previousValue && previousValue != "null") - Firebug.CSSModule.removeProperty(rule, propName); - } - - this.panel.markChange(this.panel.name == "stylesheet"); - }, - - advanceToNext: function(target, charCode) - { - if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName")) - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - if (hasClass(this.target, "cssPropName")) - return {start: 0, end: value.length-1}; - else - return parseCSSValue(value, offset); - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - if (hasClass(this.target, "cssPropName")) - { - return getCSSPropertyNames(); - } - else - { - var row = getAncestorByClass(this.target, "cssProp"); - var propName = getChildByClass(row, "cssPropName")[textContent]; - return getCSSKeywordsByProperty(propName); - } - } -}); - -//************************************************************************************************ -//CSSRuleEditor - -function CSSRuleEditor(doc) -{ - this.initializeInline(doc); - this.completeAsYouType = false; -} -CSSRuleEditor.uniquifier = 0; -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var emptyRule = { - selector: "", - id: "", - props: [], - isSelectorEditable: true - }; - - if (insertWhere == "before") - return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target); - else - return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue + "'", target); - - target.innerHTML = escapeForCss(value); - - if (value === previousValue) return; - - var row = getAncestorByClass(target, "cssRule"); - var styleSheet = this.panel.location; - styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet; - - var cssRules = styleSheet.cssRules; - var rule = Firebug.getRepObject(target), oldRule = rule; - var ruleIndex = cssRules.length; - if (rule || Firebug.getRepObject(row.nextSibling)) - { - var searchRule = rule || Firebug.getRepObject(row.nextSibling); - for (ruleIndex=0; ruleIndex b.name ? 1 : -1; - }); -} - -function getTopmostRuleLine(panelNode) -{ - for (var child = panelNode.firstChild; child; child = child.nextSibling) - { - if (child.offsetTop+child.offsetHeight > panelNode.scrollTop) - { - var rule = child.repObject; - if (rule) - return { - line: domUtils.getRuleLine(rule), - offset: panelNode.scrollTop-child.offsetTop - }; - } - } - return 0; -} - -function getStyleSheetCSS(sheet, context) -{ - if (sheet.ownerNode instanceof HTMLStyleElement) - return sheet.ownerNode.innerHTML; - else - return context.sourceCache.load(sheet.href).join(""); -} - -function getStyleSheetOwnerNode(sheet) { - for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet); - - return sheet.ownerNode; -} - -function scrollSelectionIntoView(panel) -{ - var selCon = getSelectionController(panel); - selCon.scrollSelectionIntoView( - nsISelectionController.SELECTION_NORMAL, - nsISelectionController.SELECTION_FOCUS_REGION, true); -} - -function getSelectionController(panel) -{ - var browser = Firebug.chrome.getPanelBrowser(panel); - return browser.docShell.QueryInterface(nsIInterfaceRequestor) - .getInterface(nsISelectionDisplay) - .QueryInterface(nsISelectionController); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Script Module - -Firebug.Script = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null; - }, - - selectSourceCode: function(index) - { - this.getPanel().selectSourceCode(index); - } -}); - -Firebug.registerModule(Firebug.Script); - - -// ************************************************************************************************ -// Script Panel - -function ScriptPanel(){}; - -ScriptPanel.prototype = extend(Firebug.Panel, -{ - name: "Script", - title: "Script", - - selectIndex: 0, // index of the current selectNode's option - sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script") - - options: { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var scripts = doc.getElementsByTagName("script"); - var selectNode = this.selectNode = createElement("select"); - - for(var i=0, script; script=scripts[i]; i++) - { - // Don't show Firebug Lite source code in the list of options - if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) - continue; - - var fileName = getFileName(script.src) || getFileName(doc.location.href); - var option = createElement("option", {value:i}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }; - - this.toolButtonsNode.appendChild(selectNode); - }, - - initialize: function() - { - // we must render the code first, so the persistent state can be restore - this.selectSourceCode(this.selectIndex); - - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.selectNode, "change", this.onChangeSelect); - }, - - shutdown: function() - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - detach: function(oldChrome, newChrome) - { - Firebug.Panel.detach.apply(this, arguments); - - var oldPanel = oldChrome.getPanel("Script"); - var index = oldPanel.selectIndex; - - this.selectNode.selectedIndex = index; - this.selectIndex = index; - this.sourceIndex = -1; - }, - - onChangeSelect: function(event) - { - var select = this.selectNode; - - this.selectIndex = select.selectedIndex; - - var option = select.options[select.selectedIndex]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - selectSourceCode: function(index) - { - var select = this.selectNode; - select.selectedIndex = index; - - var option = select.options[index]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - renderSourceCode: function(index) - { - if (this.sourceIndex != index) - { - var renderProcess = function renderProcess(src) - { - var html = [], - hl = 0; - - src = isIE && !isExternal ? - src+'\n' : // IE put an extra line when reading source of local resources - '\n'+src; - - // find the number of lines of code - src = src.replace(/\n\r|\r\n/g, "\n"); - var match = src.match(/[\n]/g); - var lines=match ? match.length : 0; - - // render the full source code + line numbers html - html[hl++] = '
                                ';
                                -                html[hl++] = escapeHTML(src);
                                -                html[hl++] = '
                                '; - - // render the line number divs - for(var l=1, lines; l<=lines; l++) - { - html[hl++] = '
                                '; - html[hl++] = l; - html[hl++] = '
                                '; - } - - html[hl++] = '
                                '; - - updatePanel(html); - }; - - var updatePanel = function(html) - { - self.panelNode.innerHTML = html.join(""); - - // IE needs this timeout, otherwise the panel won't scroll - setTimeout(function(){ - self.synchronizeUI(); - },0); - }; - - var onFailure = function() - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode); - }; - - var self = this; - - var doc = Firebug.browser.document; - var script = doc.getElementsByTagName("script")[index]; - var url = getScriptURL(script); - var isExternal = url && url != doc.location.href; - - try - { - if (isExternal) - { - Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure}); - } - else - { - var src = script.innerHTML; - renderProcess(src); - } - } - catch(e) - { - onFailure(); - } - - this.sourceIndex = index; - } - } -}); - -Firebug.registerPanel(ScriptPanel); - - -// ************************************************************************************************ - - -var getScriptURL = function getScriptURL(script) -{ - var reFile = /([^\/\?#]+)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = Firebug.browser.document; - - var file = reFile.exec(script.src); - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(doc.location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - return path + fileName; - } -}; - -var getFileName = function getFileName(path) -{ - if (!path) return ""; - - var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/); - - return match && match[0] || path; -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var ElementCache = Firebug.Lite.Cache.Element; - -var insertSliceSize = 18; -var insertInterval = 40; - -var ignoreVars = -{ - "__firebug__": 1, - "eval": 1, - - // We are forced to ignore Java-related variables, because - // trying to access them causes browser freeze - "java": 1, - "sun": 1, - "Packages": 1, - "JavaArray": 1, - "JavaMember": 1, - "JavaObject": 1, - "JavaClass": 1, - "JavaPackage": 1, - "_firebug": 1, - "_FirebugConsole": 1, - "_FirebugCommandLine": 1 -}; - -if (Firebug.ignoreFirebugElements) - ignoreVars[Firebug.Lite.Cache.ID] = 1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var memberPanelRep = - isIE6 ? - {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"} - : - {"class": "memberLabel $member.type\\Label"}; - -var RowTag = - TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation', - level: "$member.level"}, - TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'}, - A(memberPanelRep, - SPAN({}, "$member.name") - ) - ), - TD({"class": "memberValueCell", role : 'presentation'}, - TAG("$member.tag", {object: "$member.value"}) - ) - ); - -var WatchRowTag = - TR({"class": "watchNewRow", level: 0}, - TD({"class": "watchEditCell", colspan: 2}, - DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0', - 'aria-label' : $STR('press enter to add new watch expression')}, - $STR("NewWatch") - ) - ) - ); - -var SizerRow = - TR({role : 'presentation'}, - TD({width: "30%"}), - TD({width: "70%"}) - ); - -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable"; -var DirTablePlate = domplate(Firebug.Rep, -{ - tag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"}, - TBODY({role: 'presentation'}, - SizerRow, - FOR("member", "$object|memberIterator", RowTag) - ) - ), - - watchTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow, - WatchRowTag - ) - ), - - tableTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow - ) - ), - - rowTag: - FOR("member", "$members", RowTag), - - memberIterator: function(object, level) - { - return getMembers(object, level); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - if (!isLeftClick(event)) - return; - - var target = event.target || event.srcElement; - - var row = getAncestorByClass(target, "memberRow"); - var label = getAncestorByClass(target, "memberLabel"); - if (label && hasClass(row, "hasChildren")) - { - var row = label.parentNode.parentNode; - this.toggleRow(row); - } - else - { - var object = Firebug.getRepObject(target); - if (typeof(object) == "function") - { - Firebug.chrome.select(object, "script"); - cancelEvent(event); - } - else if (event.detail == 2 && !object) - { - var panel = row.parentNode.parentNode.domPanel; - if (panel) - { - var rowValue = panel.getRowPropertyValue(row); - if (typeof(rowValue) == "boolean") - panel.setPropertyValue(row, !rowValue); - else - panel.editProperty(row); - - cancelEvent(event); - } - } - } - - return false; - }, - - toggleRow: function(row) - { - var level = parseInt(row.getAttribute("level")); - var toggles = row.parentNode.parentNode.toggles; - - if (hasClass(row, "opened")) - { - removeClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Remove the path from the toggle tree - for (var i = 0; i < path.length; ++i) - { - if (i == path.length-1) - delete toggles[path[i]]; - else - toggles = toggles[path[i]]; - } - } - - var rowTag = this.rowTag; - var tbody = row.parentNode; - - setTimeout(function() - { - for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling) - { - if (parseInt(firstRow.getAttribute("level")) <= level) - break; - - tbody.removeChild(firstRow); - } - }, row.insertTimeout ? row.insertTimeout : 0); - } - else - { - setClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Mark the path in the toggle tree - for (var i = 0; i < path.length; ++i) - { - var name = path[i]; - if (toggles.hasOwnProperty(name)) - toggles = toggles[name]; - else - toggles = toggles[name] = {}; - } - } - - var value = row.lastChild.firstChild.repObject; - var members = getMembers(value, level+1); - - var rowTag = this.rowTag; - var lastRow = row; - - var delay = 0; - //var setSize = members.length; - //var rowCount = 1; - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - setTimeout(function() - { - if (lastRow.parentNode) - { - var result = rowTag.insertRows({members: slice}, lastRow); - lastRow = result[1]; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]); - //rowCount += insertSliceSize; - } - if (isLast) - row.removeAttribute("insertTimeout"); - }, delay); - } - - delay += insertInterval; - } - - row.insertTimeout = delay; - } - } -}); - - - -// ************************************************************************************************ - -Firebug.DOMBasePanel = function() {} - -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel, -{ - tag: DirTablePlate.tableTag, - - getRealObject: function(object) - { - // TODO: Move this to some global location - // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc. - // TODO: We might be able to make this check more authoritative with QueryInterface. - if (!object) return object; - if (object.wrappedJSObject) return object.wrappedJSObject; - return object; - }, - - rebuild: function(update, scrollTop) - { - //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]); - var members = getMembers(this.selection); - expandMembers(members, this.toggles, 0, 0); - - this.showMembers(members, update, scrollTop); - - //TODO: xxxpedro statusbar - if (!this.parentPanel) - updateStatusBar(this); - }, - - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!tbody.lastChild) return; - - result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //rowCount += insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop) - panelNode.scrollTop = priorScrollTop; - - - // enable to measure rendering performance - //if (isLast) alert(new Date().getTime() - renderStart + "ms"); - - - }, delay)); - - delay += insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - - /* - // new - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - var _insertSliceSize = insertSliceSize; - var _insertInterval = insertInterval; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - var lastSkip = renderStart, now; - - while (members.length) - { - with({slice: members.splice(0, _insertSliceSize), isLast: !members.length}) - { - var _tbody = tbody; - var _rowTag = rowTag; - var _panelNode = panelNode; - var _priorScrollTop = priorScrollTop; - - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!_tbody.lastChild) return; - - result = _rowTag.insertRows({members: slice}, _tbody.lastChild); - - //rowCount += _insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop) - _panelNode.scrollTop = _priorScrollTop; - - - // enable to measure rendering performance - //alert("gap: " + (new Date().getTime() - lastSkip)); - //lastSkip = new Date().getTime(); - - //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms"); - - }, delay)); - - delay += _insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - /**/ - - showEmptyMembers: function() - { - FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode); - }, - - findPathObject: function(object) - { - var pathIndex = -1; - for (var i = 0; i < this.objectPath.length; ++i) - { - // IE needs === instead of == or otherwise some objects will - // be considered equal to different objects, returning the - // wrong index of the objectPath array - if (this.getPathObject(i) === object) - return i; - } - - return -1; - }, - - getPathObject: function(index) - { - var object = this.objectPath[index]; - - if (object instanceof Property) - return object.getObject(); - else - return object; - }, - - getRowObject: function(row) - { - var object = getRowOwnerObject(row); - return object ? object : this.selection; - }, - - getRowPropertyValue: function(row) - { - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object) - { - var propName = getRowName(row); - - if (object instanceof jsdIStackFrame) - return Firebug.Debugger.evaluate(propName, this.context); - else - return object[propName]; - } - }, - /* - copyProperty: function(row) - { - var value = this.getRowPropertyValue(row); - copyToClipboard(value); - }, - - editProperty: function(row, editValue) - { - if (hasClass(row, "watchNewRow")) - { - if (this.context.stopped) - Firebug.Editor.startEditing(row, ""); - else if (Firebug.Console.isAlwaysEnabled()) // not stopped in debugger, need command line - { - if (Firebug.CommandLine.onCommandLineFocus()) - Firebug.Editor.startEditing(row, ""); - else - row.innerHTML = $STR("warning.Command line blocked?"); - } - else - row.innerHTML = $STR("warning.Console must be enabled"); - } - else if (hasClass(row, "watchRow")) - Firebug.Editor.startEditing(row, getRowName(row)); - else - { - var object = this.getRowObject(row); - this.context.thisValue = object; - - if (!editValue) - { - var propValue = this.getRowPropertyValue(row); - - var type = typeof(propValue); - if (type == "undefined" || type == "number" || type == "boolean") - editValue = propValue; - else if (type == "string") - editValue = "\"" + escapeJS(propValue) + "\""; - else if (propValue == null) - editValue = "null"; - else if (object instanceof Window || object instanceof jsdIStackFrame) - editValue = getRowName(row); - else - editValue = "this." + getRowName(row); - } - - - Firebug.Editor.startEditing(row, editValue); - } - }, - - deleteProperty: function(row) - { - if (hasClass(row, "watchRow")) - this.deleteWatch(row); - else - { - var object = getRowOwnerObject(row); - if (!object) - object = this.selection; - object = this.getRealObject(object); - - if (object) - { - var name = getRowName(row); - try - { - delete object[name]; - } - catch (exc) - { - return; - } - - this.rebuild(true); - this.markChange(); - } - } - }, - - setPropertyValue: function(row, value) // value must be string - { - if(FBTrace.DBG_DOM) - { - FBTrace.sysout("row: "+row); - FBTrace.sysout("value: "+value+" type "+typeof(value), value); - } - - var name = getRowName(row); - if (name == "this") - return; - - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object && !(object instanceof jsdIStackFrame)) - { - // unwrappedJSObject.property = unwrappedJSObject - Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(), - function success(result, context) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result); - object[name] = result; - }, - function failed(exc, context) - { - try - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc); - // If the value doesn't parse, then just store it as a string. Some users will - // not realize they're supposed to enter a JavaScript expression and just type - // literal text - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - ); - } - else if (this.context.stopped) - { - try - { - Firebug.CommandLine.evaluate(name+"="+value, this.context); - } - catch (exc) - { - try - { - // See catch block above... - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - } - - this.rebuild(true); - this.markChange(); - }, - - highlightRow: function(row) - { - if (this.highlightedRow) - cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context); - - this.highlightedRow = row; - - if (row) - setClassTimed(row, "jumpHighlight", this.context); - },/**/ - - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - create: function() - { - // TODO: xxxpedro - this.context = Firebug.browser; - - this.objectPath = []; - this.propertyPath = []; - this.viewPath = []; - this.pathIndex = -1; - this.toggles = {}; - - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.panelNode, "mousemove", this.onMouseMove); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - /* - destroy: function(state) - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - - if (this.pathIndex) - state.pathIndex = this.pathIndex; - if (this.viewPath) - state.viewPath = this.viewPath; - if (this.propertyPath) - state.propertyPath = this.propertyPath; - - if (this.propertyPath.length > 0 && !this.propertyPath[1]) - state.firstSelection = persistObject(this.getPathObject(1), this.context); - - Firebug.Panel.destroy.apply(this, arguments); - }, - /**/ - - ishow: function(state) - { - if (this.context.loaded && !this.selection) - { - if (!state) - { - this.select(null); - return; - } - if (state.viewPath) - this.viewPath = state.viewPath; - if (state.propertyPath) - this.propertyPath = state.propertyPath; - - var defaultObject = this.getDefaultSelection(this.context); - var selectObject = defaultObject; - - if (state.firstSelection) - { - var restored = state.firstSelection(this.context); - if (restored) - { - selectObject = restored; - this.objectPath = [defaultObject, restored]; - } - else - this.objectPath = [defaultObject]; - } - else - this.objectPath = [defaultObject]; - - if (this.propertyPath.length > 1) - { - for (var i = 1; i < this.propertyPath.length; ++i) - { - var name = this.propertyPath[i]; - if (!name) - continue; - - var object = selectObject; - try - { - selectObject = object[name]; - } - catch (exc) - { - selectObject = null; - } - - if (selectObject) - { - this.objectPath.push(new Property(object, name)); - } - else - { - // If we can't access a property, just stop - this.viewPath.splice(i); - this.propertyPath.splice(i); - this.objectPath.splice(i); - selectObject = this.getPathObject(this.objectPath.length-1); - break; - } - } - } - - var selection = state.pathIndex <= this.objectPath.length-1 - ? this.getPathObject(state.pathIndex) - : this.getPathObject(this.objectPath.length-1); - - this.select(selection); - } - }, - /* - hide: function() - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - }, - /**/ - - supportsObject: function(object) - { - if (object == null) - return 1000; - - if (typeof(object) == "undefined") - return 1000; - else if (object instanceof SourceLink) - return 0; - else - return 1; // just agree to support everything but not agressively. - }, - - refresh: function() - { - this.rebuild(true); - }, - - updateSelection: function(object) - { - var previousIndex = this.pathIndex; - var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex]; - - var newPath = this.pathToAppend; - delete this.pathToAppend; - - var pathIndex = this.findPathObject(object); - if (newPath || pathIndex == -1) - { - this.toggles = {}; - - if (newPath) - { - // Remove everything after the point where we are inserting, so we - // essentially replace it with the new path - if (previousView) - { - if (this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - var start = previousIndex + 1, - // Opera needs the length argument in splice(), otherwise - // it will consider that only one element should be removed - length = this.objectPath.length - start; - - this.objectPath.splice(start, length); - this.propertyPath.splice(start, length); - this.viewPath.splice(start, length); - } - - var value = this.getPathObject(previousIndex); - if (!value) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n"); - return; - } - - for (var i = 0, length = newPath.length; i < length; ++i) - { - var name = newPath[i]; - var object = value; - try - { - value = value[name]; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n"); - return; - } - - ++this.pathIndex; - this.objectPath.push(new Property(object, name)); - this.propertyPath.push(name); - this.viewPath.push({toggles: this.toggles, scrollTop: 0}); - } - } - else - { - this.toggles = {}; - - var win = Firebug.browser.window; - //var win = this.context.getGlobalScope(); - if (object === win) - { - this.pathIndex = 0; - this.objectPath = [win]; - this.propertyPath = [null]; - this.viewPath = [{toggles: this.toggles, scrollTop: 0}]; - } - else - { - this.pathIndex = 1; - this.objectPath = [win, object]; - this.propertyPath = [null, null]; - this.viewPath = [ - {toggles: {}, scrollTop: 0}, - {toggles: this.toggles, scrollTop: 0} - ]; - } - } - - this.panelNode.scrollTop = 0; - this.rebuild(); - } - else - { - this.pathIndex = pathIndex; - - var view = this.viewPath[pathIndex]; - this.toggles = view.toggles; - - // Persist the current scroll location - if (previousView && this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - this.rebuild(false, view.scrollTop); - } - }, - - getObjectPath: function(object) - { - return this.objectPath; - }, - - getDefaultSelection: function() - { - return Firebug.browser.window; - //return this.context.getGlobalScope(); - }/*, - - updateOption: function(name, value) - { - const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1, - showDOMFuncs: 1, showDOMConstants: 1}; - if ( optionMap.hasOwnProperty(name) ) - this.rebuild(true); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowUserProps", "showUserProps"), - optionMenu("ShowUserFuncs", "showUserFuncs"), - optionMenu("ShowDOMProps", "showDOMProps"), - optionMenu("ShowDOMFuncs", "showDOMFuncs"), - optionMenu("ShowDOMConstants", "showDOMConstants"), - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ]; - }, - - getContextMenuItems: function(object, target) - { - var row = getAncestorByClass(target, "memberRow"); - - var items = []; - - if (row) - { - var rowName = getRowName(row); - var rowObject = this.getRowObject(row); - var rowValue = this.getRowPropertyValue(row); - - var isWatch = hasClass(row, "watchRow"); - var isStackFrame = rowObject instanceof jsdIStackFrame; - - if (typeof(rowValue) == "string" || typeof(rowValue) == "number") - { - // Functions already have a copy item in their context menu - items.push( - "-", - {label: "CopyValue", - command: bindFixed(this.copyProperty, this, row) } - ); - } - - items.push( - "-", - {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"), - command: bindFixed(this.editProperty, this, row) } - ); - - if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName))) - { - items.push( - {label: isWatch ? "DeleteWatch" : "DeleteProperty", - command: bindFixed(this.deleteProperty, this, row) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ); - - return items; - }, - - getEditor: function(target, value) - { - if (!this.editor) - this.editor = new DOMEditor(this.document); - - return this.editor; - }/**/ -}); - -// ************************************************************************************************ - -// TODO: xxxpedro statusbar -var updateStatusBar = function(panel) -{ - var path = panel.propertyPath; - var index = panel.pathIndex; - - var r = []; - - for (var i=0, l=path.length; i'); - r.push(i==0 ? "window" : path[i] || "Object"); - r.push('
                                '); - - if(i < l-1) - r.push('>'); - } - panel.statusBarNode.innerHTML = r.join(""); -}; - - -var DOMMainPanel = Firebug.DOMPanel = function () {}; - -Firebug.DOMPanel.DirTable = DirTablePlate; - -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - onClickStatusBar: function(event) - { - var target = event.srcElement || event.target; - var element = getAncestorByClass(target, "fbHover"); - - if(element) - { - var pathIndex = element.getAttribute("pathIndex"); - - if(pathIndex) - { - this.select(this.getPathObject(pathIndex)); - } - } - }, - - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - this.select(target.repObject, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOM", - title: "DOM", - searchable: true, - statusSeparator: ">", - - options: { - hasToolButtons: true, - hasStatusBar: true - }, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - - //TODO: xxxpedro - this.onClickStatusBar = bind(this.onClickStatusBar, this); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(oldPanelNode) - { - //this.panelNode.addEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']); - - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro dom - this.ishow(); - - //TODO: xxxpedro - addEvent(this.statusBarNode, "click", this.onClickStatusBar); - }, - - shutdown: function() - { - //this.panelNode.removeEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']); - - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }/*, - - search: function(text, reverse) - { - if (!text) - { - delete this.currentSearch; - this.highlightRow(null); - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive); - else - { - function findRow(node) { return getAncestorByClass(node, "memberRow"); } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive); - } - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - - scrollIntoCenterView(row, this.panelNode); - - this.highlightRow(row); - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]); - return false; - } - }/**/ -}); - -Firebug.registerPanel(DOMMainPanel); - - -// ************************************************************************************************ - - - -// ************************************************************************************************ -// Local Helpers - -var getMembers = function getMembers(object, level) // we expect object to be user-level object wrapped in security blanket -{ - if (!level) - level = 0; - - var ordinals = [], userProps = [], userClasses = [], userFuncs = [], - domProps = [], domFuncs = [], domConstants = []; - - try - { - var domMembers = getDOMMembers(object); - //var domMembers = {}; // TODO: xxxpedro - //var domConstantMap = {}; // TODO: xxxpedro - - if (object.wrappedJSObject) - var insecureObject = object.wrappedJSObject; - else - var insecureObject = object; - - // IE function prototype is not listed in (for..in) - if (isIE && isFunction(object)) - addMember("user", userProps, "prototype", object.prototype, level); - - for (var name in insecureObject) // enumeration is safe - { - if (ignoreVars[name] == 1) // javascript.options.strict says ignoreVars is undefined. - continue; - - var val; - try - { - val = insecureObject[name]; // getter is safe - } - catch (exc) - { - // Sometimes we get exceptions trying to access certain members - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers cannot access "+name, exc); - } - - var ordinal = parseInt(name); - if (ordinal || ordinal == 0) - { - addMember("ordinal", ordinals, name, val, level); - } - else if (isFunction(val)) - { - if (isClassFunction(val) && !(name in domMembers)) - addMember("userClass", userClasses, name, val, level); - else if (name in domMembers) - addMember("domFunction", domFuncs, name, val, level, domMembers[name]); - else - addMember("userFunction", userFuncs, name, val, level); - } - else - { - //TODO: xxxpedro - /* - var getterFunction = insecureObject.__lookupGetter__(name), - setterFunction = insecureObject.__lookupSetter__(name), - prefix = ""; - - if(getterFunction && !setterFunction) - prefix = "get "; - /**/ - - var prefix = ""; - - if (name in domMembers && !(name in domConstantMap)) - addMember("dom", domProps, (prefix+name), val, level, domMembers[name]); - else if (name in domConstantMap) - addMember("dom", domConstants, (prefix+name), val, level); - else - addMember("user", userProps, (prefix+name), val, level); - } - } - } - catch (exc) - { - // Sometimes we get exceptions just from trying to iterate the members - // of certain objects, like StorageList, but don't let that gum up the works - throw exc; - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers FAILS: ", exc); - //throw exc; - } - - function sortName(a, b) { return a.name > b.name ? 1 : -1; } - function sortOrder(a, b) { return a.order > b.order ? 1 : -1; } - - var members = []; - - members.push.apply(members, ordinals); - - Firebug.showUserProps = true; // TODO: xxxpedro - Firebug.showUserFuncs = true; // TODO: xxxpedro - Firebug.showDOMProps = true; - Firebug.showDOMFuncs = true; - Firebug.showDOMConstants = true; - - if (Firebug.showUserProps) - { - userProps.sort(sortName); - members.push.apply(members, userProps); - } - - if (Firebug.showUserFuncs) - { - userClasses.sort(sortName); - members.push.apply(members, userClasses); - - userFuncs.sort(sortName); - members.push.apply(members, userFuncs); - } - - if (Firebug.showDOMProps) - { - domProps.sort(sortName); - members.push.apply(members, domProps); - } - - if (Firebug.showDOMFuncs) - { - domFuncs.sort(sortName); - members.push.apply(members, domFuncs); - } - - if (Firebug.showDOMConstants) - members.push.apply(members, domConstants); - - return members; -} - -function expandMembers(members, toggles, offset, level) // recursion starts with offset=0, level=0 -{ - var expanded = 0; - for (var i = offset; i < members.length; ++i) - { - var member = members[i]; - if (member.level > level) - break; - - if ( toggles.hasOwnProperty(member.name) ) - { - member.open = "opened"; // member.level <= level && member.name in toggles. - - var newMembers = getMembers(member.value, level+1); // sets newMembers.level to level+1 - - var args = [i+1, 0]; - args.push.apply(args, newMembers); - members.splice.apply(members, args); - - /* - if (FBTrace.DBG_DOM) - { - FBTrace.sysout("expandMembers member.name", member.name); - FBTrace.sysout("expandMembers toggles", toggles); - FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]); - FBTrace.sysout("dom.expandedMembers level: "+level+" member", member); - } - /**/ - - expanded += newMembers.length; - i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1); - } - } - - return expanded; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -function isClassFunction(fn) -{ - try - { - for (var name in fn.prototype) - return true; - } catch (exc) {} - return false; -} - -var hasProperties = function hasProperties(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - - // IE function prototype is not listed in (for..in) - if (isFunction(ob)) return true; - - return false; -} - -FBL.ErrorCopy = function(message) -{ - this.message = message; -}; - -var addMember = function addMember(type, props, name, value, level, order) -{ - var rep = Firebug.getRep(value); // do this first in case a call to instanceof reveals contents - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var ErrorCopy = function(){}; //TODO: xxxpedro - - var valueType = typeof(value); - var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) && - (isFunction(value) || (valueType == "object" && value != null) - || (valueType == "string" && value.length > Firebug.stringCropLength)); - - props.push({ - name: name, - value: value, - type: type, - rowClass: "memberRow-"+type, - open: "", - order: order, - level: level, - indent: level*16, - hasChildren: hasChildren, - tag: tag - }); -} - -var getWatchRowIndex = function getWatchRowIndex(row) -{ - var index = -1; - for (; row && hasClass(row, "watchRow"); row = row.previousSibling) - ++index; - return index; -} - -var getRowName = function getRowName(row) -{ - var node = row.firstChild; - return node.textContent ? node.textContent : node.innerText; -} - -var getRowValue = function getRowValue(row) -{ - return row.lastChild.firstChild.repObject; -} - -var getRowOwnerObject = function getRowOwnerObject(row) -{ - var parentRow = getParentRow(row); - if (parentRow) - return getRowValue(parentRow); -} - -var getParentRow = function getParentRow(row) -{ - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - return row; - } -} - -var getPath = function getPath(row) -{ - var name = getRowName(row); - var path = [name]; - - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - { - var name = getRowName(row); - path.splice(0, 0, name); - - --level; - } - } - - return path; -} - -// ************************************************************************************************ - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// DOM Module - -Firebug.DOM = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null; - } -}); - -Firebug.registerModule(Firebug.DOM); - - -// ************************************************************************************************ -// DOM Panel - -var lastHighlightedObject; - -function DOMSidePanel(){}; - -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - var object = target.repObject; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - /* - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - object = object ? object.repObject : null; - - if(!object) return; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - /**/ - - - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOMSidePanel", - parentPanel: "HTML", - title: "DOM", - - options: { - hasToolButtons: true - }, - - isInitialized: false, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - }, - - initialize: function(){ - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }, - - reattach: function(oldChrome) - { - //this.isInitialized = oldChrome.getPanel("DOM").isInitialized; - this.toggles = oldChrome.getPanel("DOMSidePanel").toggles; - } - -}); - -Firebug.registerPanel(DOMSidePanel); - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.FBTrace = {}; - -(function() { -// ************************************************************************************************ - -var traceOptions = { - DBG_TIMESTAMP: 1, - DBG_INITIALIZE: 1, - DBG_CHROME: 1, - DBG_ERRORS: 1, - DBG_DISPATCH: 1, - DBG_CSS: 1 -}; - -this.module = null; - -this.initialize = function() -{ - if (!this.messageQueue) - this.messageQueue = []; - - for (var name in traceOptions) - this[name] = traceOptions[name]; -}; - -// ************************************************************************************************ -// FBTrace API - -this.sysout = function() -{ - return this.logFormatted(arguments, ""); -}; - -this.dumpProperties = function(title, object) -{ - return this.logFormatted("dumpProperties() not supported.", "warning"); -}; - -this.dumpStack = function() -{ - return this.logFormatted("dumpStack() not supported.", "warning"); -}; - -this.flush = function(module) -{ - this.module = module; - - var queue = this.messageQueue; - this.messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - this.writeMessage(queue[i][0], queue[i][1], queue[i][2]); -}; - -this.getPanel = function() -{ - return this.module ? this.module.getPanel() : null; -}; - -//************************************************************************************************* - -this.logFormatted = function(objects, className) -{ - var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : []; - var length = objects.length; - - for (var i = 0; i < length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - - if (i == 0) - { - html.push(""); - appendText(object, html); - html.push(""); - } - else - appendText(object, html); - } - - return this.logRow(html, className); -}; - -this.logRow = function(message, className) -{ - var panel = this.getPanel(); - - if (panel && panel.panelNode) - this.writeMessage(message, className); - else - { - this.messageQueue.push([message, className]); - } - - return this.LOG_COMMAND; -}; - -this.writeMessage = function(message, className) -{ - var container = this.getPanel().containerNode; - var isScrolledToBottom = - container.scrollTop + container.offsetHeight >= container.scrollHeight; - - this.writeRow.call(this, message, className); - - if (isScrolledToBottom) - container.scrollTop = container.scrollHeight - container.offsetHeight; -}; - -this.appendRow = function(row) -{ - var container = this.getPanel().panelNode; - container.appendChild(row); -}; - -this.writeRow = function(message, className) -{ - var row = this.getPanel().panelNode.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - this.appendRow(row); -}; - -//************************************************************************************************* - -function appendText(object, html) -{ - html.push(escapeHTML(objectToString(object))); -}; - -function getTimestamp() -{ - var now = new Date(); - var ms = "" + (now.getMilliseconds() / 1000).toFixed(3); - ms = ms.substr(2); - - return now.toLocaleTimeString() + "." + ms; -}; - -//************************************************************************************************* - -var HTMLtoEntity = -{ - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ -}; - -function replaceChars(ch) -{ - return HTMLtoEntity[ch]; -}; - -function escapeHTML(value) -{ - return (value+"").replace(/[<>&"']/g, replaceChars); -}; - -//************************************************************************************************* - -function objectToString(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -}).apply(FBL.FBTrace); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// If application isn't in trace mode, the FBTrace panel won't be loaded -if (!Env.Options.enableTrace) return; - -// ************************************************************************************************ -// FBTrace Module - -Firebug.Trace = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null; - }, - - clear: function() - { - this.getPanel().panelNode.innerHTML = ""; - } -}); - -Firebug.registerModule(Firebug.Trace); - - -// ************************************************************************************************ -// FBTrace Panel - -function TracePanel(){}; - -TracePanel.prototype = extend(Firebug.Panel, -{ - name: "Trace", - title: "Trace", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear FBTrace logs", - owner: Firebug.Trace, - onClick: Firebug.Trace.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - } - -}); - -Firebug.registerPanel(TracePanel); - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; - -var parentPanelMap = {}; - - -var registerModule = Firebug.registerModule; -var registerPanel = Firebug.registerPanel; - -// ************************************************************************************************ -append(Firebug, -{ - extend: function(fn) - { - if (Firebug.chrome && Firebug.chrome.addPanel) - { - var namespace = ns(fn); - fn.call(namespace, FBL); - } - else - { - setTimeout(function(){Firebug.extend(fn);},100); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - registerModule.apply(Firebug, arguments); - - modules.push.apply(modules, arguments); - - dispatch(modules, "initialize", []); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - registerPanel.apply(Firebug, arguments); - - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - // TODO: xxxpedro investigate why Dev Panel throws an error - if (panelType.prototype.name == "Dev") continue; - - panelTypeMap[panelType.prototype.name] = arguments[i]; - - var parentPanelName = panelType.prototype.parentPanel; - if (parentPanelName) - { - parentPanelMap[parentPanelName] = 1; - } - else - { - var panelName = panelType.prototype.name; - var chrome = Firebug.chrome; - chrome.addPanel(panelName); - - // tab click handler - var onTabClick = function onTabClick() - { - chrome.selectPanel(panelName); - return false; - }; - - chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]); - } - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - } - -}); - - - - -// ************************************************************************************************ -}}); - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -FirebugChrome.Skin = -{ - CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.png) repeat-y;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disable.png) no-repeat 2px 1px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.png) no-repeat !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/infoIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/warningIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}', - HTML: '
                                 
                                 
                                >>>
                                2 errors' -}; - -// ************************************************************************************************ -}}); - -// ************************************************************************************************ -FBL.initialize(); -// ************************************************************************************************ - -})(); \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug.jpg b/branches/firebug1.5/build/chrome-extension-beta/firebug.jpg deleted file mode 100644 index 2a18aa0d..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug.jpg and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug128.png b/branches/firebug1.5/build/chrome-extension-beta/firebug128.png deleted file mode 100644 index dbca545f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug128.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug16.png b/branches/firebug1.5/build/chrome-extension-beta/firebug16.png deleted file mode 100644 index d8d0c249..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug16.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug24.png b/branches/firebug1.5/build/chrome-extension-beta/firebug24.png deleted file mode 100644 index f50ff926..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug24.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug24_disabled.png b/branches/firebug1.5/build/chrome-extension-beta/firebug24_disabled.png deleted file mode 100644 index 16d4dcde..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug24_disabled.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug32.png b/branches/firebug1.5/build/chrome-extension-beta/firebug32.png deleted file mode 100644 index c02f4f5f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug32.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/firebug48.png b/branches/firebug1.5/build/chrome-extension-beta/firebug48.png deleted file mode 100644 index b4431327..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/firebug48.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/googleChrome.js b/branches/firebug1.5/build/chrome-extension-beta/googleChrome.js deleted file mode 100644 index 26c8af3d..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/googleChrome.js +++ /dev/null @@ -1,106 +0,0 @@ -/* See license.txt for terms of usage */ - -Firebug.extend(function(FBL) { with (FBL) { -// ************************************************************************************************ - -if (!Env.isChromeExtension) return; - -// ************************************************************************************************ -// local variables - -var channel; -var channelEvent; - -// ************************************************************************************************ -// GoogleChrome Module - -Firebug.GoogleChrome = extend(Firebug.Module, -{ - initialize: function() - { - var doc = FBL.Env.browser.document; - - if (!doc.getElementById("FirebugChannel")) - { - channel = doc.createElement("div"); - channel.id = "FirebugChannel"; - channel.firebugIgnore = true; - channel.style.display = "none"; - doc.documentElement.insertBefore(channel, doc.documentElement.firstChild); - - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - }, - - dispatch: function(message) - { - channel.innerText = message; - channel.dispatchEvent(channelEvent); - } -}); - -// ************************************************************************************************ -// internals - -var onFirebugChannelEvent = function() -{ - var name = channel.innerText; - - if (name.indexOf("FB_contextMenuClick") == 0) - { - var doc = FBL.Env.browser.document; - var contextMenuElementXPath = name.split(",")[1]; - var contextMenuElement = getElementsByXPath(doc, contextMenuElementXPath)[0]; - - // If not open, open it first - Firebug.chrome.toggle(true); - - setTimeout(function(){ - - // Select the HTML panel - Firebug.chrome.selectPanel("HTML"); - - // Select the clicked element in the HTML tree - Firebug.HTML.select(contextMenuElement); - - },50); - } - else if (name == "FB_toggle") - { - Firebug.chrome.toggle(); - } - else if (name == "FB_openInNewWindow") - { - setTimeout(function(){ - Firebug.chrome.toggle(true, true); - },0); - } -}; - -var getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.GoogleChrome); - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension-beta/license.txt b/branches/firebug1.5/build/chrome-extension-beta/license.txt deleted file mode 100644 index ba43b751..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/license.txt +++ /dev/null @@ -1,30 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2007, Parakey Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Parakey Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Parakey Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/branches/firebug1.5/build/chrome-extension-beta/manifest.json b/branches/firebug1.5/build/chrome-extension-beta/manifest.json deleted file mode 100644 index 1bcfa2e9..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/manifest.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "Firebug Lite Beta for Google Chrome", - "version": "1.3.2.9760", - "description": "Firebug Lite Beta for Google Chrome, supported by the Firebug Working Group.", - "update_url": "https://getfirebug.com/releases/lite/chrome/beta/updates.xml", - "background_page": "background.html", - "browser_action": - { - "default_icon": "firebug24_disabled.png", - "default_title": "Firebug Lite 1.3.2" - }, - "icons": - { - "128": "firebug128.png", - "16": "firebug16.png", - "32": "firebug32.png", - "48": "firebug48.png" - }, - "content_scripts": - [ - { - "matches": ["http://*/*", "https://*/*"], - "js": ["contentScript.js"], - "run_at": "document_start" - } - ], - "permissions": - [ - "contextMenus", - "tabs", - "http://*/*", - "https://*/*", - "http://127.0.0.1/*", - "http://localhost/*" - ] -} \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/blank.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/blank.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBg.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBgHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detach.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detach.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detachHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/detachHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disable.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/disableHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/down.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/down.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downActive.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downActive.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/downHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon-sm.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css deleted file mode 100644 index b5dd5dde..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css +++ /dev/null @@ -1,817 +0,0 @@ -.fbBtnPressed { - background: #ECEBE3; - padding: 3px 6px 2px 7px !important; - margin: 1px 0 0 1px; - _margin: 1px -1px 0 1px; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -.fbToolbarButtons { - display: none; -} - -#fbStatusBarBox { - display: none; -} - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -html, body { - margin: 0; - padding: 0; - overflow: hidden; -} - -body { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - position: fixed; - overflow: hidden; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - position: absolute; - z-index: 5; - width: 100%; - top: 0; - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; - overflow: hidden; -} - -#fbPanelBarBox { - top: 27px; - position: absolute; - z-index: 8; - width: 100%; - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 4px 5px 0; -} - -#fbToolbarIcon a { - display: block; - height: 20px; - width: 20px; - background: url(sprite.png) 0 -135px; - text-decoration: none; - cursor: default; -} - -#fbToolbarButtons { - float: left; - padding: 4px 2px 0 5px; -} - -#fbToolbarButtons a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 8px 4px; - cursor: default; -} - -#fbToolbarButtons a:hover { - color: #333; - padding: 3px 7px 3px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -#fbStatusBarBox { - position: relative; - top: 5px; - line-height: 19px; - cursor: default; -} - -.fbToolbarSeparator{ - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 10px 6px 0 0; - float: left; -} - -.fbStatusBar span { - color: #808080; - padding: 0 4px 0 0; -} - -.fbStatusBar span a { - text-decoration: none; - color: black; -} - -.fbStatusBar span a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - _width: 50px; - padding: 5px 0 5px 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 255px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 10px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 11px; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - padding-left: 6px; - background: #fff; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 7px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; -} - -div.fbFitHeight { - overflow: auto; - _position: absolute; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -#fbWindowButtons a { - font-size: 1px; - width: 16px; - height: 16px; - display: block; - float: right; - margin-right: 4px; - text-decoration: none; - cursor: default; -} - -#fbWindow_btClose { - background: url(sprite.png) 0 -119px; -} - -#fbWindow_btClose:hover { - background: url(sprite.png) -16px -119px; -} - -#fbWindow_btDetach { - background: url(sprite.png) -32px -119px; -} - -#fbWindow_btDetach:hover { - background: url(sprite.png) -48px -119px; -} - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - display: block; - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 9; - position: absolute; - height: 100%; - top: 27px; - _width: 6px; -} - -/************************************************************************************************/ -div.lineNo { - font: 11px Monaco, monospace; - float: left; - display: inline; - position: relative; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -pre.nodeCode { - font: 11px Monaco, monospace; - margin: 0; - padding-left: 10px; - overflow: hidden; - /* - _width: 100%; - /**/ -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 11px; -} - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.IE6.css b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.IE6.css deleted file mode 100644 index 14f8aa87..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.IE6.css +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************************************/ -#fbToolbarSearch { - background-image: url(search.gif) !important; -} -/************************************************************************************************/ -.fbErrors { - background-image: url(errorIcon.gif) !important; -} -/************************************************************************************************/ -.logRow-info { - background-image: url(infoIcon.gif) !important; -} - -.logRow-warning { - background-image: url(warningIcon.gif) !important; -} - -.logRow-error { - background-image: url(errorIcon.gif) !important; -} diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.css b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.css deleted file mode 100644 index decd5917..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.css +++ /dev/null @@ -1,3056 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font: message-box; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - /* white-space: pre; */ - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding: 0 10px 0 0; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -/* IE6 has problems with > operator, and multiple classes */ -/*.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, - /* avoid rule not being parsed IE6 */ -.logRow-spy .spyHead .spyTitle, -.logGroup .logGroupLabel, -.hasChildren .memberLabelCell .memberLabel, -.hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} -/* -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -/* avoid rule not being parsed IE6 */ -.opened .spyHead .spyTitle, -.opened .logGroupLabel, -.opened .memberLabelCell .memberLabel/*, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 2px 0; -} - - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -.objectPropValue { - font-weight: normal; - font-style: italic; - color: #555555; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.arrayLeftBracket { - margin-right: 4px; -} - -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 4px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; -} - -#fbPanelBarBox { - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 48px; - padding: 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #ECE9D8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 10; - position: absolute; - height: 100%; - top: 27px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em Monaco, monospace; - position: absolute; - top: 0; - left: 0; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.html b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                - - - - -
                                -   -   -   -
                                - - -
                                -
                                - - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
                                - -
                                - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                -
                                -
                                - - -
                                 
                                - - -
                                - - -
                                -
                                -
                                - -
                                - - - - - -
                                - Run - Clear - - -
                                - -
                                -
                                -
                                >>>
                                - - -
                                -
                                - - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/firebug.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/group.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/group.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/loading_16.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/min.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/min.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/minHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/minHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/off.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/off.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/offHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/offHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/pixel_transparent.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/roundCorner.svg b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/search.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow2.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadowAlpha.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/sprite.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/sprite.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverLeft.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverMid.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverRight.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabLeft.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuPin.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuRadio.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTarget.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMid.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabRight.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tabRight.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/titlebarMid.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/toolbarMid.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_close.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_open.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/up.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/up.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upActive.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upActive.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upHover.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/upHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.gif b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.png b/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.5/build/chrome-extension-beta/skin/xp/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/background.html b/branches/firebug1.5/build/chrome-extension/background.html deleted file mode 100644 index c4133a1d..00000000 --- a/branches/firebug1.5/build/chrome-extension/background.html +++ /dev/null @@ -1,187 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension/contentScript.js b/branches/firebug1.5/build/chrome-extension/contentScript.js deleted file mode 100644 index 90b37307..00000000 --- a/branches/firebug1.5/build/chrome-extension/contentScript.js +++ /dev/null @@ -1,378 +0,0 @@ -// ************************************************************************************************* - -var isActive = false; -var isOpen = false; -var extensionURL = null; - -var contextMenuElementXPath = null; -var isListeningKeyboardActivation = false; - -// ************************************************************************************************* - -// restore Firebug Lite state -var loadStateData = function() -{ - var FirebugData = localStorage.getItem("Firebug"); - - isActive = false; - isOpen = false; - extensionURL = chrome.extension.getURL(""); - - if (FirebugData) - { - FirebugData = FirebugData.split(","); - isActive = FirebugData[0] == "1"; - isOpen = FirebugData[1] == "1"; - } -} - -// ************************************************************************************************* - -// load Firebug Lite application -var loadFirebug = function() -{ - document.documentElement.setAttribute("debug", isOpen); - - injectScriptText("("+listenConsoleCalls+")()"); - - // TODO: xxxpedro - change to XHR when Issue 41024 is solved - // Issue 41024: XHR using file: and chrome-extension: protocols not working. - // http://code.google.com/p/chromium/issues/detail?id=41024 - injectFirebugScript(); -} - -// TODO: think a better solution than using the stateData parameter, required -// by the keyboard activation. -var loadFirebugAndWait = function(callback, stateData) -{ - stateData = stateData || ('1,1,'+extensionURL); - localStorage.setItem('Firebug', stateData); - loadStateData(); - chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"}); - - document.documentElement.setAttribute("debug", isOpen); - - injectFirebugScript(); - - setTimeout(function(){ - waitFirebug(callback); - },0); -}; - -var waitFirebug = function(callback) -{ - if (document && document.getElementById("FirebugChannel")) - { - stopListeningKeyboardActivation(); - callback(); - } - else - setTimeout(function(){ waitFirebug(callback); }, 100); - -}; - -// ************************************************************************************************* - -// inject Firebug Lite script into the page -var injectFirebugScript = function(url) -{ - scriptElement = document.getElementById("FirebugLite"); - if (scriptElement) - { - firebugDispatch("FB_toggle"); - } - else - { - var script = document.createElement("script"); - - script.src = extensionURL + "firebug-lite.js"; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - document.documentElement.appendChild(script); - - script.onload = function() { - // TODO: xxxpedro remove this files when deploy the new structure - script = document.createElement("script"); - script.src = extensionURL + "googleChrome.js"; - document.documentElement.appendChild(script); - }; - } -} - -// inject a script into the page -var injectScriptText = function(text) -{ - var script = document.createElement("script"); - var parent = document.documentElement; - - script.text = text; - script.setAttribute("id", "FirebugLite"); - script.setAttribute("firebugIgnore", "true"); - script.setAttribute("extension", "Chrome"); - parent.appendChild(script); - parent.removeChild(script); -} - -// ************************************************************************************************* - -// communication with the background page -chrome.extension.onRequest.addListener -( - function(request, sender, sendResponse) - { - // check if Firebug Lite is active - if (request.name == "FB_isActive") - { - loadStateData(); - sendResponse({value: ""+isActive}); - } - // load Firebug Lite application - else if (request.name == "FB_loadFirebug") - { - setTimeout(function(){ - - loadStateData(); - - //loadFirebug(); - loadFirebugAndWait(function(){ - - isActive = true; - var message = isActive ? "FB_enableIcon" : "FB_disableIcon"; - chrome.extension.sendRequest({name: message}); - - loadChannel(); - }); - - },0); - - sendResponse({}); - } - // handle context menu click by sending "FB_contextMenuClick" message - // to Firebug Lite application - else if (request.name == "FB_contextMenuClick") - { - // TODO: if not active, activate first, wait the activation to complete - // and only then dispatch the event to Firebug Lite application - if (isActive) - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - else - loadFirebugAndWait(function(){ - firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath); - }); - } - else if (request.name == "FB_deactivate") - { - listenKeyboardActivation(); - } - else - sendResponse({}); // snub them. - } -); - -// ************************************************************************************************* - -// communication with the page -var channel = null; -var channelEvent; - -var onFirebugChannelEvent = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - chrome.extension.sendRequest({name: channel.innerText}); - } -}; - -var loadChannel = function() -{ - channel = document.getElementById("FirebugChannel"); - - if (channel) - { - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - } -} - -var firebugDispatch = function(data) -{ - if (!channel) - loadChannel(); - - channel.innerText = data; - channel.dispatchEvent(channelEvent); -}; - -// ************************************************************************************************* - -var onContextMenu = function(event) -{ - contextMenuElementXPath = getElementXPath(event.target); -}; - -var loadListeners = function() -{ - window.addEventListener("contextmenu", onContextMenu); - window.addEventListener("unload", unloadListeners); -}; - -var unloadListeners = function() -{ - if (channel) - { - channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - - window.removeEventListener("contextmenu", onContextMenu); - window.removeEventListener("unload", unloadListeners); -}; - -// ************************************************************************************************* - -// listen to console calls before Firebug Lite finishes to load -var listenConsoleCalls = function() -{ - // TODO: xxxpedro add all console functions - var fns = ["log", "info", "warn", "error"]; - - var listener = {consoleQueue: ["chromeConsoleQueueHack"]}; - var queue = listener.consoleQueue; - - for (var i=0, l=fns.length; i 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; - if (FBL.Env.isChromeExtension) - { - path = productionDir; - FBL.Env.bookmarkletOutdated = false; - script = {innerHTML: "{showIconWhenHidden:false}"}; - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - var Env = FBL.Env; - - // Always use the local skin when running in the same domain - // See Issue 3554: Firebug Lite should use local images when loaded locally - Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0; - - // detecting development and debug modes via file name - if (fileName == "firebug-lite-dev.js") - { - Env.isDevelopmentMode = true; - Env.isDebugMode = true; - } - else if (fileName == "firebug-lite-debug.js") - { - Env.isDebugMode = true; - } - - // process the - if (Env.browser.document.documentElement.getAttribute("debug") == "true") - { - Env.Options.startOpened = true; - } - - // process the Script URL Options - if (fileOptions) - { - var options = fileOptions.split(","); - - for (var i = 0, length = options.length; i < length; i++) - { - var option = options[i]; - var name, value; - - if (option.indexOf("=") != -1) - { - var parts = option.split("="); - name = parts[0]; - value = eval(unescape(parts[1])); - } - else - { - name = option; - value = true; - } - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Script JSON Options - var innerOptions = FBL.trim(script.innerHTML); - if (innerOptions) - { - var innerOptionsObject = eval("(" + innerOptions + ")"); - - for (var name in innerOptionsObject) - { - var value = innerOptionsObject[name]; - - if (name == "debug") - { - Env.isDebugMode = !!value; - } - else if (name in Env.Options) - { - Env.Options[name] = value; - } - else - { - Env[name] = value; - } - } - } - - // process the Debug Mode - if (Env.isDebugMode) - { - Env.Options.startOpened = true; - Env.Options.enableTrace = true; - Env.Options.disableWhenFirebugActive = false; - } - - var loc = Env.Location; - var isProductionRelease = path.indexOf(productionDir) != -1; - - loc.sourceDir = path; - loc.baseDir = path.substr(0, path.length - m[1].length - 1); - loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; - loc.skin = loc.skinDir + "firebug.html"; - loc.app = path + fileName; - } - else - { - throw new Error("Firebug Error: Library path not found"); - } -}; - -// ************************************************************************************************ -// Basics - -this.bind = function() // fn, thisObject, args => thisObject.fn(args, arguments); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }; -}; - -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args); -{ - var args = cloneArray(arguments), fn = args.shift(), object = args.shift(); - return function() { return fn.apply(object, args); }; -}; - -this.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -this.descend = function(prototypeParent, childProperties) -{ - function protoSetter() {}; - protoSetter.prototype = prototypeParent; - var newOb = new protoSetter(); - for (var n in childProperties) - newOb[n] = childProperties[n]; - return newOb; -}; - -this.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -this.keys = function(map) // At least sometimes the keys will be on user-level window objects -{ - var keys = []; - try - { - for (var name in map) // enumeration is safe - keys.push(name); // name is string, safe - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - } - - return keys; // return is safe -}; - -this.values = function(map) -{ - var values = []; - try - { - for (var name in map) - { - try - { - values.push(map[name]); - } - catch (exc) - { - // Sometimes we get exceptions trying to access properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - } - } - catch (exc) - { - // Sometimes we get exceptions trying to iterate properties - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.values FAILED ", exc); - } - - return values; -}; - -this.remove = function(list, item) -{ - for (var i = 0; i < list.length; ++i) - { - if (list[i] == item) - { - list.splice(i, 1); - break; - } - } -}; - -this.sliceArray = function(array, index) -{ - var slice = []; - for (var i = index; i < array.length; ++i) - slice.push(array[i]); - - return slice; -}; - -function cloneArray(array, fn) -{ - var newArray = []; - - if (fn) - for (var i = 0; i < array.length; ++i) - newArray.push(fn(array[i])); - else - for (var i = 0; i < array.length; ++i) - newArray.push(array[i]); - - return newArray; -} - -function extendArray(array, array2) -{ - var newArray = []; - newArray.push.apply(newArray, array); - newArray.push.apply(newArray, array2); - return newArray; -} - -this.extendArray = extendArray; -this.cloneArray = cloneArray; - -function arrayInsert(array, index, other) -{ - for (var i = 0; i < other.length; ++i) - array.splice(i+index, 0, other[i]); - - return array; -} - -// ************************************************************************************************ - -this.createStyleSheet = function(doc, url) -{ - //TODO: xxxpedro - //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - var style = this.createElement("link"); - style.setAttribute("charset","utf-8"); - style.firebugIgnore = true; - style.setAttribute("rel", "stylesheet"); - style.setAttribute("type", "text/css"); - style.setAttribute("href", url); - - //TODO: xxxpedro - //style.innerHTML = this.getResource(url); - return style; -}; - -this.addStyleSheet = function(doc, style) -{ - var heads = doc.getElementsByTagName("head"); - if (heads.length) - heads[0].appendChild(style); - else - doc.documentElement.appendChild(style); -}; - -this.appendStylesheet = function(doc, uri) -{ - // Make sure the stylesheet is not appended twice. - if (this.$(uri, doc)) - return; - - var styleSheet = this.createStyleSheet(doc, uri); - styleSheet.setAttribute("id", uri); - this.addStyleSheet(doc, styleSheet); -}; - -this.addScript = function(doc, id, src) -{ - var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script"); - element.setAttribute("type", "text/javascript"); - element.setAttribute("id", id); - if (!FBTrace.DBG_CONSOLE) - FBL.unwrapObject(element).firebugIgnore = true; - - element.innerHTML = src; - if (doc.documentElement) - doc.documentElement.appendChild(element); - else - { - // See issue 1079, the svg test case gives this error - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.addScript doc has no documentElement:", doc); - } - return element; -}; - - -// ************************************************************************************************ - -this.getStyle = this.isIE ? - function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : - function(el, name) - { - return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - }; - - -// ************************************************************************************************ -// Whitespace and Entity conversions - -var entityConversionLists = this.entityConversionLists = { - normal : { - whitespace : { - '\t' : '\u200c\u2192', - '\n' : '\u200c\u00b6', - '\r' : '\u200c\u00ac', - ' ' : '\u200c\u00b7' - } - }, - reverse : { - whitespace : { - ' ' : '\t', - ' ' : '\n', - '\u200c\u2192' : '\t', - '\u200c\u00b6' : '\n', - '\u200c\u00ac' : '\r', - '\u200c\u00b7' : ' ' - } - } -}; - -var normal = entityConversionLists.normal, - reverse = entityConversionLists.reverse; - -function addEntityMapToList(ccode, entity) -{ - var lists = Array.prototype.slice.call(arguments, 2), - len = lists.length, - ch = String.fromCharCode(ccode); - for (var i = 0; i < len; i++) - { - var list = lists[i]; - normal[list]=normal[list] || {}; - normal[list][ch] = '&' + entity + ';'; - reverse[list]=reverse[list] || {}; - reverse[list]['&' + entity + ';'] = ch; - } -}; - -var e = addEntityMapToList, - white = 'whitespace', - text = 'text', - attr = 'attributes', - css = 'css', - editor = 'editor'; - -e(0x0022, 'quot', attr, css); -e(0x0026, 'amp', attr, text, css); -e(0x0027, 'apos', css); -e(0x003c, 'lt', attr, text, css); -e(0x003e, 'gt', attr, text, css); -e(0xa9, 'copy', text, editor); -e(0xae, 'reg', text, editor); -e(0x2122, 'trade', text, editor); - -// See http://en.wikipedia.org/wiki/Dash -e(0x2012, '#8210', attr, text, editor); // figure dash -e(0x2013, 'ndash', attr, text, editor); // en dash -e(0x2014, 'mdash', attr, text, editor); // em dash -e(0x2015, '#8213', attr, text, editor); // horizontal bar - -e(0x00a0, 'nbsp', attr, text, white, editor); -e(0x2002, 'ensp', attr, text, white, editor); -e(0x2003, 'emsp', attr, text, white, editor); -e(0x2009, 'thinsp', attr, text, white, editor); -e(0x200c, 'zwnj', attr, text, white, editor); -e(0x200d, 'zwj', attr, text, white, editor); -e(0x200e, 'lrm', attr, text, white, editor); -e(0x200f, 'rlm', attr, text, white, editor); -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP) - -//************************************************************************************************ -// Entity escaping - -var entityConversionRegexes = { - normal : {}, - reverse : {} - }; - -var escapeEntitiesRegEx = { - normal : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('([' + chars.join('') + '])', 'gm'); - }, - reverse : function(list) - { - var chars = []; - for ( var ch in list) - { - chars.push(ch); - } - return new RegExp('(' + chars.join('|') + ')', 'gm'); - } -}; - -function getEscapeRegexp(direction, lists) -{ - var name = '', re; - var groups = [].concat(lists); - for (i = 0; i < groups.length; i++) - { - name += groups[i].group; - } - re = entityConversionRegexes[direction][name]; - if (!re) - { - var list = {}; - if (groups.length > 1) - { - for ( var i = 0; i < groups.length; i++) - { - var aList = entityConversionLists[direction][groups[i].group]; - for ( var item in aList) - list[item] = aList[item]; - } - } else if (groups.length==1) - { - list = entityConversionLists[direction][groups[0].group]; // faster for special case - } else { - list = {}; // perhaps should print out an error here? - } - re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list); - } - return re; -}; - -function createSimpleEscape(name, direction) -{ - return function(value) - { - var list = entityConversionLists[direction][name]; - return String(value).replace( - getEscapeRegexp(direction, { - group : name, - list : list - }), - function(ch) - { - return list[ch]; - } - ); - }; -}; - -function escapeGroupsForEntities(str, lists) -{ - lists = [].concat(lists); - var re = getEscapeRegexp('normal', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list, last = ''; - if (!len) - return [ { - str : String(str), - group : '', - name : '' - } ]; - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.normal[list.group][cur]; - // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space - // r = ' '; - if (r) - { - results[ri] = { - 'str' : r, - 'class' : list['class'], - 'extra' : list.extra[cur] ? list['class'] - + list.extra[cur] : '' - }; - break; - } - } - // last=cur; - if (!r) - results[ri] = { - 'str' : cur, - 'class' : '', - 'extra' : '' - }; - ri++; - } - return results; -}; - -this.escapeGroupsForEntities = escapeGroupsForEntities; - - -function unescapeEntities(str, lists) -{ - var re = getEscapeRegexp('reverse', lists), - split = String(str).split(re), - len = split.length, - results = [], - cur, r, i, ri = 0, l, list; - if (!len) - return str; - lists = [].concat(lists); - for (i = 0; i < len; i++) - { - cur = split[i]; - if (cur == '') - continue; - for (l = 0; l < lists.length; l++) - { - list = lists[l]; - r = entityConversionLists.reverse[list.group][cur]; - if (r) - { - results[ri] = r; - break; - } - } - if (!r) - results[ri] = cur; - ri++; - } - return results.join('') || ''; -}; - - -// ************************************************************************************************ -// String escaping - -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal'); -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal'); -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal'); -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal'); - -// deprecated compatibility functions -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal'); -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse'); -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML); -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML); - -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal'); - -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse'); - -this.unescapeForTextNode = function(str) -{ - if (Firebug.showTextNodesWithWhitespace) - str = unescapeWhitespace(str); - if (!Firebug.showTextNodesWithEntities) - str = escapeForElementAttribute(str); - return str; -}; - -this.escapeNewLines = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n"); -}; - -this.stripNewLines = function(value) -{ - return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value; -}; - -this.escapeJS = function(value) -{ - return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g"); -}; - -function escapeHTMLAttribute(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "&": - return "&"; - case "'": - return apos; - case '"': - return quot; - } - return "?"; - }; - var apos = "'", quot = """, around = '"'; - if( value.indexOf('"') == -1 ) { - quot = '"'; - apos = "'"; - } else if( value.indexOf("'") == -1 ) { - quot = '"'; - around = "'"; - } - return around + (String(value).replace(/[&'"]/g, replaceChars)) + around; -} - - -function escapeHTML(value) -{ - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); -} - -this.escapeHTML = escapeHTML; - -this.cropString = function(text, limit) -{ - text = text + ""; - - if (!limit) - var halfLimit = 50; - else - var halfLimit = limit / 2; - - if (text.length > limit) - return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit)); - else - return this.escapeNewLines(text); -}; - -this.isWhitespace = function(text) -{ - return !reNotWhitespace.exec(text); -}; - -this.splitLines = function(text) -{ - var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg; - var lines; - if (text.match) - { - lines = text.match(reSplitLines2); - } - else - { - var str = text+""; - lines = str.match(reSplitLines2); - } - lines.pop(); - return lines; -}; - - -// ************************************************************************************************ - -this.safeToString = function(ob) -{ - if (this.isIE) - return ob + ""; - - try - { - if (ob && "toString" in ob && typeof ob.toString == "function") - return ob.toString(); - } - catch (exc) - { - // xxxpedro it is not safe to use ob+""? - return ob + ""; - ///return "[an object with no toString() function]"; - } -}; - -// ************************************************************************************************ - -this.hasProperties = function(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - return false; -}; - -// ************************************************************************************************ -// String Util - -var reTrim = /^\s+|\s+$/g; -this.trim = function(s) -{ - return s.replace(reTrim, ""); -}; - - -// ************************************************************************************************ -// Empty - -this.emptyFn = function(){}; - - - -// ************************************************************************************************ -// Visibility - -this.isVisible = function(elt) -{ - /* - if (elt instanceof XULElement) - { - //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n"); - return (!elt.hidden && !elt.collapsed); - } - /**/ - - return this.getStyle(elt, "visibility") != "hidden" && - ( elt.offsetWidth > 0 || elt.offsetHeight > 0 - || elt.tagName in invisibleTags - || elt.namespaceURI == "http://www.w3.org/2000/svg" - || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" ); -}; - -this.collapse = function(elt, collapsed) -{ - // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, - // but it is causing a bug (the element disappears when you set the "collapsed" - // attribute, but it doesn't appear when you remove the attribute. So, for those - // cases, we need to use the class attribute. - if (this.isIElt8) - { - if (collapsed) - this.setClass(elt, "collapsed"); - else - this.removeClass(elt, "collapsed"); - } - else - elt.setAttribute("collapsed", collapsed ? "true" : "false"); -}; - -this.obscure = function(elt, obscured) -{ - if (obscured) - this.setClass(elt, "obscured"); - else - this.removeClass(elt, "obscured"); -}; - -this.hide = function(elt, hidden) -{ - elt.style.visibility = hidden ? "hidden" : "visible"; -}; - -this.clearNode = function(node) -{ - var nodeName = " " + node.nodeName.toLowerCase() + " "; - var ignoreTags = " table tbody thead tfoot th tr td "; - - // IE can't use innerHTML of table elements - if (this.isIE && ignoreTags.indexOf(nodeName) != -1) - this.eraseNode(node); - else - node.innerHTML = ""; -}; - -this.eraseNode = function(node) -{ - while (node.lastChild) - node.removeChild(node.lastChild); -}; - -// ************************************************************************************************ -// Window iteration - -this.iterateWindows = function(win, handler) -{ - if (!win || !win.document) - return; - - handler(win); - - if (win == top || !win.frames) return; // XXXjjb hack for chromeBug - - for (var i = 0; i < win.frames.length; ++i) - { - var subWin = win.frames[i]; - if (subWin != win) - this.iterateWindows(subWin, handler); - } -}; - -this.getRootWindow = function(win) -{ - for (; win; win = win.parent) - { - if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window")) - return win; - } - return null; -}; - -// ************************************************************************************************ -// Graphics - -this.getClientOffset = function(elt) -{ - var addOffset = function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - - var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, ""); - - if (elt.offsetLeft) - coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth); - if (elt.offsetTop) - coords.y += elt.offsetTop + parseInt(style.borderTopWidth); - - if (p) - { - if (p.nodeType == 1) - addOffset(p, coords, view); - } - else - { - var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - if (otherView.frameElement) - addOffset(otherView.frameElement, coords, otherView); - } - }; - - var isIE = this.isIE; - var coords = {x: 0, y: 0}; - if (elt) - { - var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView; - addOffset(elt, coords, view); - } - - return coords; -}; - -this.getViewOffset = function(elt, singleFrame) -{ - function addOffset(elt, coords, view) - { - var p = elt.offsetParent; - coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0); - coords.y += elt.offsetTop - (p ? p.scrollTop : 0); - - if (p) - { - if (p.nodeType == 1) - { - var parentStyle = view.getComputedStyle(p, ""); - if (parentStyle.position != "static") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - - if (p.localName == "TABLE") - { - coords.x += parseInt(parentStyle.paddingLeft); - coords.y += parseInt(parentStyle.paddingTop); - } - else if (p.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.marginLeft); - coords.y += parseInt(style.marginTop); - } - } - else if (p.localName == "BODY") - { - coords.x += parseInt(parentStyle.borderLeftWidth); - coords.y += parseInt(parentStyle.borderTopWidth); - } - - var parent = elt.parentNode; - while (p != parent) - { - coords.x -= parent.scrollLeft; - coords.y -= parent.scrollTop; - parent = parent.parentNode; - } - addOffset(p, coords, view); - } - } - else - { - if (elt.localName == "BODY") - { - var style = view.getComputedStyle(elt, ""); - coords.x += parseInt(style.borderLeftWidth); - coords.y += parseInt(style.borderTopWidth); - - var htmlStyle = view.getComputedStyle(elt.parentNode, ""); - coords.x -= parseInt(htmlStyle.paddingLeft); - coords.y -= parseInt(htmlStyle.paddingTop); - } - - if (elt.scrollLeft) - coords.x += elt.scrollLeft; - if (elt.scrollTop) - coords.y += elt.scrollTop; - - var win = elt.ownerDocument.defaultView; - if (win && (!singleFrame && win.frameElement)) - addOffset(win.frameElement, coords, win); - } - - } - - var coords = {x: 0, y: 0}; - if (elt) - addOffset(elt, coords, elt.ownerDocument.defaultView); - - return coords; -}; - -this.getLTRBWH = function(elt) -{ - var bcrect, - dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0}; - - if (elt) - { - bcrect = elt.getBoundingClientRect(); - dims.left = bcrect.left; - dims.top = bcrect.top; - dims.right = bcrect.right; - dims.bottom = bcrect.bottom; - - if(bcrect.width) - { - dims.width = bcrect.width; - dims.height = bcrect.height; - } - else - { - dims.width = dims.right - dims.left; - dims.height = dims.bottom - dims.top; - } - } - return dims; -}; - -this.applyBodyOffsets = function(elt, clientRect) -{ - var od = elt.ownerDocument; - if (!od.body) - return clientRect; - - var style = od.defaultView.getComputedStyle(od.body, null); - - var pos = style.getPropertyValue('position'); - if(pos === 'absolute' || pos === 'relative') - { - var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0; - var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0; - var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0; - var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0; - var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0; - var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0; - - var offsetX = borderLeft + paddingLeft + marginLeft; - var offsetY = borderTop + paddingTop + marginTop; - - clientRect.left -= offsetX; - clientRect.top -= offsetY; - clientRect.right -= offsetX; - clientRect.bottom -= offsetY; - } - - return clientRect; -}; - -this.getOffsetSize = function(elt) -{ - return {width: elt.offsetWidth, height: elt.offsetHeight}; -}; - -this.getOverflowParent = function(element) -{ - for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent) - { - if (scrollParent.scrollHeight > scrollParent.offsetHeight) - return scrollParent; - } -}; - -this.isScrolledToBottom = function(element) -{ - var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight; - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom); - return onBottom; -}; - -this.scrollToBottom = function(element) -{ - element.scrollTop = element.scrollHeight; - - if (FBTrace.DBG_CONSOLE) - { - FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight); - if (element.scrollHeight == element.offsetHeight) - FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element); - } - - return (element.scrollTop == element.scrollHeight); -}; - -this.move = function(element, x, y) -{ - element.style.left = x + "px"; - element.style.top = y + "px"; -}; - -this.resize = function(element, w, h) -{ - element.style.width = w + "px"; - element.style.height = h + "px"; -}; - -this.linesIntoCenterView = function(element, scrollBox) // {before: int, after: int} -{ - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var split = (scrollBox.clientHeight/2); - var centerY = offset.y - split; - scrollBox.scrollTop = centerY; - topSpace = split; - bottomSpace = split - element.offsetHeight; - } - - return {before: Math.round((topSpace/element.offsetHeight) + 0.5), - after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }; -}; - -this.scrollIntoCenterView = function(element, scrollBox, notX, notY) -{ - if (!element) - return; - - if (!scrollBox) - scrollBox = this.getOverflowParent(element); - - if (!scrollBox) - return; - - var offset = this.getClientOffset(element); - - if (!notY) - { - var topSpace = offset.y - scrollBox.scrollTop; - var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight) - - (offset.y + element.offsetHeight); - - if (topSpace < 0 || bottomSpace < 0) - { - var centerY = offset.y - (scrollBox.clientHeight/2); - scrollBox.scrollTop = centerY; - } - } - - if (!notX) - { - var leftSpace = offset.x - scrollBox.scrollLeft; - var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth) - - (offset.x + element.clientWidth); - - if (leftSpace < 0 || rightSpace < 0) - { - var centerX = offset.x - (scrollBox.clientWidth/2); - scrollBox.scrollLeft = centerX; - } - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML); -}; - - -// ************************************************************************************************ -// CSS - -var cssKeywordMap = null; -var cssPropNames = null; -var cssColorNames = null; -var imageRules = null; - -this.getCSSKeywordsByProperty = function(propName) -{ - if (!cssKeywordMap) - { - cssKeywordMap = {}; - - for (var name in this.cssInfo) - { - var list = []; - - var types = this.cssInfo[name]; - for (var i = 0; i < types.length; ++i) - { - var keywords = this.cssKeywords[types[i]]; - if (keywords) - list.push.apply(list, keywords); - } - - cssKeywordMap[name] = list; - } - } - - return propName in cssKeywordMap ? cssKeywordMap[propName] : []; -}; - -this.getCSSPropertyNames = function() -{ - if (!cssPropNames) - { - cssPropNames = []; - - for (var name in this.cssInfo) - cssPropNames.push(name); - } - - return cssPropNames; -}; - -this.isColorKeyword = function(keyword) -{ - if (keyword == "transparent") - return false; - - if (!cssColorNames) - { - cssColorNames = []; - - var colors = this.cssKeywords["color"]; - for (var i = 0; i < colors.length; ++i) - cssColorNames.push(colors[i].toLowerCase()); - - var systemColors = this.cssKeywords["systemColor"]; - for (var i = 0; i < systemColors.length; ++i) - cssColorNames.push(systemColors[i].toLowerCase()); - } - - return cssColorNames.indexOf ? // Array.indexOf is not available in IE - cssColorNames.indexOf(keyword.toLowerCase()) != -1 : - (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1; -}; - -this.isImageRule = function(rule) -{ - if (!imageRules) - { - imageRules = []; - - for (var i in this.cssInfo) - { - var r = i.toLowerCase(); - var suffix = "image"; - if (r.match(suffix + "$") == suffix || r == "background") - imageRules.push(r); - } - } - - return imageRules.indexOf ? // Array.indexOf is not available in IE - imageRules.indexOf(rule.toLowerCase()) != -1 : - (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1; -}; - -this.copyTextStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.fontFamily = style.fontFamily; - - // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE - // returns wrong computed styles for inherited properties (like font-*) - // - // Also would be good to create a FBL.getStyle() - toNode.style.fontSize = style.fontSize; - toNode.style.fontWeight = style.fontWeight; - toNode.style.fontStyle = style.fontStyle; - - return style; - } -}; - -this.copyBoxStyles = function(fromNode, toNode, style) -{ - var view = this.isIE ? - fromNode.ownerDocument.parentWindow : - fromNode.ownerDocument.defaultView; - - if (view) - { - if (!style) - style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, ""); - - toNode.style.marginTop = style.marginTop; - toNode.style.marginRight = style.marginRight; - toNode.style.marginBottom = style.marginBottom; - toNode.style.marginLeft = style.marginLeft; - toNode.style.borderTopWidth = style.borderTopWidth; - toNode.style.borderRightWidth = style.borderRightWidth; - toNode.style.borderBottomWidth = style.borderBottomWidth; - toNode.style.borderLeftWidth = style.borderLeftWidth; - - return style; - } -}; - -this.readBoxStyles = function(style) -{ - var styleNames = { - "margin-top": "marginTop", "margin-right": "marginRight", - "margin-left": "marginLeft", "margin-bottom": "marginBottom", - "border-top-width": "borderTop", "border-right-width": "borderRight", - "border-left-width": "borderLeft", "border-bottom-width": "borderBottom", - "padding-top": "paddingTop", "padding-right": "paddingRight", - "padding-left": "paddingLeft", "padding-bottom": "paddingBottom", - "z-index": "zIndex" - }; - - var styles = {}; - for (var styleName in styleNames) - styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0; - if (FBTrace.DBG_INSPECT) - FBTrace.sysout("readBoxStyles ", styles); - return styles; -}; - -this.getBoxFromStyles = function(style, element) -{ - var args = this.readBoxStyles(style); - args.width = element.offsetWidth - - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight); - args.height = element.offsetHeight - - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom); - return args; -}; - -this.getElementCSSSelector = function(element) -{ - var label = element.localName.toLowerCase(); - if (element.id) - label += "#" + element.id; - if (element.hasAttribute("class")) - label += "." + element.getAttribute("class").split(" ")[0]; - - return label; -}; - -this.getURLForStyleSheet= function(styleSheet) -{ - //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null. - return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL); -}; - -this.getDocumentForStyleSheet = function(styleSheet) -{ - while (styleSheet.parentStyleSheet && !styleSheet.ownerNode) - { - styleSheet = styleSheet.parentStyleSheet; - } - if (styleSheet.ownerNode) - return styleSheet.ownerNode.ownerDocument; -}; - -/** - * Retrieves the instance number for a given style sheet. The instance number - * is sheet's index within the set of all other sheets whose URL is the same. - */ -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument) -{ - // System URLs are always unique (or at least we are making this assumption) - if (FBL.isSystemStyleSheet(styleSheet)) - return 0; - - // ownerDocument is an optional hint for performance - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument); - ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet); - - var ret = 0, - styleSheets = ownerDocument.styleSheets, - href = styleSheet.href; - for (var i = 0; i < styleSheets.length; i++) - { - var curSheet = styleSheets[i]; - if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode))); - if (curSheet == styleSheet) - break; - if (curSheet.href == href) - ret++; - } - return ret; -}; - -// ************************************************************************************************ -// HTML and XML Serialization - - -var getElementType = this.getElementType = function(node) -{ - if (isElementXUL(node)) - return 'xul'; - else if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else if (isElementXHTML(node)) - return 'xhtml'; - else if (isElementHTML(node)) - return 'html'; -} - -var getElementSimpleType = this.getElementSimpleType = function(node) -{ - if (isElementSVG(node)) - return 'svg'; - else if (isElementMathML(node)) - return 'mathml'; - else - return 'html'; -} - -var isElementHTML = this.isElementHTML = function(node) -{ - return node.nodeName == node.nodeName.toUpperCase(); -} - -var isElementXHTML = this.isElementXHTML = function(node) -{ - return node.nodeName == node.nodeName.toLowerCase(); -} - -var isElementMathML = this.isElementMathML = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML'; -} - -var isElementSVG = this.isElementSVG = function(node) -{ - return node.namespaceURI == 'http://www.w3.org/2000/svg'; -} - -var isElementXUL = this.isElementXUL = function(node) -{ - return node instanceof XULElement; -} - -this.isSelfClosing = function(element) -{ - if (isElementSVG(element) || isElementMathML(element)) - return true; - var tag = element.localName.toLowerCase(); - return (this.selfClosingTags.hasOwnProperty(tag)); -}; - -this.getElementHTML = function(element) -{ - var self=this; - function toHTML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - html.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - html.push('>'); - - var pureText=true; - for (var child = element.firstChild; child; child = child.nextSibling) - pureText=pureText && (child.nodeType == Node.TEXT_NODE); - - if (pureText) - html.push(escapeForHtmlEditor(elt.textContent)); - else { - for (var child = elt.firstChild; child; child = child.nextSibling) - toHTML(child); - } - - html.push(''); - } - else if (isElementSVG(elt) || isElementMathML(elt)) - { - html.push('/>'); - } - else if (self.isSelfClosing(elt)) - { - html.push((isElementXHTML(elt))?'/>':'>'); - } - else - { - html.push('>'); - } - } - else if (elt.nodeType == Node.TEXT_NODE) - html.push(escapeForTextNode(elt.textContent)); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - html.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - html.push(''); - } - - var html = []; - toHTML(element); - return html.join(""); -}; - -this.getElementXML = function(element) -{ - function toXML(elt) - { - if (elt.nodeType == Node.ELEMENT_NODE) - { - if (unwrapObject(elt).firebugIgnore) - return; - - xml.push('<', elt.nodeName.toLowerCase()); - - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - - // Hide attributes set by Firebug - if (attr.localName.indexOf("firebug-") == 0) - continue; - - // MathML - if (attr.localName.indexOf("-moz-math") == 0) - { - // just hide for now - continue; - } - - xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"'); - } - - if (elt.firstChild) - { - xml.push('>'); - - for (var child = elt.firstChild; child; child = child.nextSibling) - toXML(child); - - xml.push(''); - } - else - xml.push('/>'); - } - else if (elt.nodeType == Node.TEXT_NODE) - xml.push(elt.nodeValue); - else if (elt.nodeType == Node.CDATA_SECTION_NODE) - xml.push(''); - else if (elt.nodeType == Node.COMMENT_NODE) - xml.push(''); - } - - var xml = []; - toXML(element); - return xml.join(""); -}; - - -// ************************************************************************************************ -// CSS classes - -this.hasClass = function(node, name) // className, className, ... -{ - // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments? - // this function can be optimized a lot if assumed 2 arguments only, - // which seems to be what happens 99% of the time - if (arguments.length == 2) - return (' '+node.className+' ').indexOf(' '+name+' ') != -1; - - if (!node || node.nodeType != 1) - return false; - else - { - for (var i=1; i= 0) - { - var size = name.length; - node.className = node.className.substr(0,index-1) + node.className.substr(index+size); - } - } -}; - -this.toggleClass = function(elt, name) -{ - if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1) - ///if (this.hasClass(elt, name)) - this.removeClass(elt, name); - else - this.setClass(elt, name); -}; - -this.setClassTimed = function(elt, name, context, timeout) -{ - if (!timeout) - timeout = 1300; - - if (elt.__setClassTimeout) - context.clearTimeout(elt.__setClassTimeout); - else - this.setClass(elt, name); - - elt.__setClassTimeout = context.setTimeout(function() - { - delete elt.__setClassTimeout; - - FBL.removeClass(elt, name); - }, timeout); -}; - -this.cancelClassTimed = function(elt, name, context) -{ - if (elt.__setClassTimeout) - { - FBL.removeClass(elt, name); - context.clearTimeout(elt.__setClassTimeout); - delete elt.__setClassTimeout; - } -}; - - -// ************************************************************************************************ -// DOM queries - -this.$ = function(id, doc) -{ - if (doc) - return doc.getElementById(id); - else - { - return FBL.Firebug.chrome.document.getElementById(id); - } -}; - -this.$$ = function(selector, doc) -{ - if (doc || !FBL.Firebug.chrome) - return FBL.Firebug.Selector(selector, doc); - else - { - return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document); - } -}; - -this.getChildByClass = function(node) // ,classname, classname, classname... -{ - for (var i = 1; i < arguments.length; ++i) - { - var className = arguments[i]; - var child = node.firstChild; - node = null; - for (; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - { - node = child; - break; - } - } - } - - return node; -}; - -this.getAncestorByClass = function(node, className) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (this.hasClass(parent, className)) - return parent; - } - - return null; -}; - - -this.getElementsByClass = function(node, className) -{ - var result = []; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (this.hasClass(child, className)) - result.push(child); - } - - return result; -}; - -this.getElementByClass = function(node, className) // className, className, ... -{ - var args = cloneArray(arguments); args.splice(0, 1); - for (var child = node.firstChild; child; child = child.nextSibling) - { - var args1 = cloneArray(args); args1.unshift(child); - if (FBL.hasClass.apply(null, args1)) - return child; - else - { - var found = FBL.getElementByClass.apply(null, args1); - if (found) - return found; - } - } - - return null; -}; - -this.isAncestor = function(node, potentialAncestor) -{ - for (var parent = node; parent; parent = parent.parentNode) - { - if (parent == potentialAncestor) - return true; - } - - return false; -}; - -this.getNextElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.nextSibling; - - return node; -}; - -this.getPreviousElement = function(node) -{ - while (node && node.nodeType != 1) - node = node.previousSibling; - - return node; -}; - -this.getBody = function(doc) -{ - if (doc.body) - return doc.body; - - var body = doc.getElementsByTagName("body")[0]; - if (body) - return body; - - return doc.firstChild; // For non-HTML docs -}; - -this.findNextDown = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.firstChild; child; child = child.nextSibling) - { - if (criteria(child)) - return child; - - var next = this.findNextDown(child, criteria); - if (next) - return next; - } -}; - -this.findPreviousUp = function(node, criteria) -{ - if (!node) - return null; - - for (var child = node.lastChild; child; child = child.previousSibling) - { - var next = this.findPreviousUp(child, criteria); - if (next) - return next; - - if (criteria(child)) - return child; - } -}; - -this.findNext = function(node, criteria, upOnly, maxRoot) -{ - if (!node) - return null; - - if (!upOnly) - { - var next = this.findNextDown(node, criteria); - if (next) - return next; - } - - for (var sib = node.nextSibling; sib; sib = sib.nextSibling) - { - if (criteria(sib)) - return sib; - - var next = this.findNextDown(sib, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - return this.findNext(node.parentNode, criteria, true); -}; - -this.findPrevious = function(node, criteria, downOnly, maxRoot) -{ - if (!node) - return null; - - for (var sib = node.previousSibling; sib; sib = sib.previousSibling) - { - var prev = this.findPreviousUp(sib, criteria); - if (prev) - return prev; - - if (criteria(sib)) - return sib; - } - - if (!downOnly) - { - var next = this.findPreviousUp(node, criteria); - if (next) - return next; - } - - if (node.parentNode && node.parentNode != maxRoot) - { - if (criteria(node.parentNode)) - return node.parentNode; - - return this.findPrevious(node.parentNode, criteria, true); - } -}; - -this.getNextByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findNext(root, iter); -}; - -this.getPreviousByClass = function(root, state) -{ - var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); }; - return this.findPrevious(root, iter); -}; - -this.isElement = function(o) -{ - try { - return o && this.instanceOf(o, "Element"); - } - catch (ex) { - return false; - } -}; - - -// ************************************************************************************************ -// DOM Modification - -// TODO: xxxpedro use doc fragments in Context API -var appendFragment = null; - -this.appendInnerHTML = function(element, html, referenceElement) -{ - // if undefined, we must convert it to null otherwise it will throw an error in IE - // when executing element.insertBefore(firstChild, referenceElement) - referenceElement = referenceElement || null; - - var doc = element.ownerDocument; - - // doc.createRange not available in IE - if (doc.createRange) - { - var range = doc.createRange(); // a helper object - range.selectNodeContents(element); // the environment to interpret the html - - var fragment = range.createContextualFragment(html); // parse - var firstChild = fragment.firstChild; - element.insertBefore(fragment, referenceElement); - } - else - { - if (!appendFragment || appendFragment.ownerDocument != doc) - appendFragment = doc.createDocumentFragment(); - - var div = doc.createElement("div"); - div.innerHTML = html; - - var firstChild = div.firstChild; - while (div.firstChild) - appendFragment.appendChild(div.firstChild); - - element.insertBefore(appendFragment, referenceElement); - - div = null; - } - - return firstChild; -}; - - -// ************************************************************************************************ -// DOM creation - -this.createElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = properties.document || FBL.Firebug.chrome.document; - - var element = doc.createElement(tagName); - - for(var name in properties) - { - if (name != "document") - { - element[name] = properties[name]; - } - } - - return element; -}; - -this.createGlobalElement = function(tagName, properties) -{ - properties = properties || {}; - var doc = FBL.Env.browser.document; - - var element = this.NS && doc.createElementNS ? - doc.createElementNS(FBL.NS, tagName) : - doc.createElement(tagName); - - for(var name in properties) - { - var propname = name; - if (FBL.isIE && name == "class") propname = "className"; - - if (name != "document") - { - element.setAttribute(propname, properties[name]); - } - } - - return element; -}; - -//************************************************************************************************ - -this.safeGetWindowLocation = function(window) -{ - try - { - if (window) - { - if (window.closed) - return "(window.closed)"; - if ("location" in window) - return window.location+""; - else - return "(no window.location)"; - } - else - return "(no context.window)"; - } - catch(exc) - { - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS) - FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc); - FBTrace.sysout("TabContext.getWindowLocation failed window:", window); - return "(getWindowLocation: "+exc+")"; - } -}; - -// ************************************************************************************************ -// Events - -this.isLeftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && // others - this.noKeyModifiers(event); -}; - -this.isMiddleClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 4 : // IE "click" and "dblclick" button model - event.button == 1) && - this.noKeyModifiers(event); -}; - -this.isRightClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 2 : // IE "click" and "dblclick" button model - event.button == 2) && - this.noKeyModifiers(event); -}; - -this.noKeyModifiers = function(event) -{ - return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey; -}; - -this.isControlClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isControl(event); -}; - -this.isShiftClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isShift(event); -}; - -this.isControl = function(event) -{ - return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey; -}; - -this.isAlt = function(event) -{ - return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey; -}; - -this.isAltClick = function(event) -{ - return (this.isIE && event.type != "click" && event.type != "dblclick" ? - event.button == 1 : // IE "click" and "dblclick" button model - event.button == 0) && - this.isAlt(event); -}; - -this.isControlShift = function(event) -{ - return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey; -}; - -this.isShift = function(event) -{ - return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey; -}; - -this.addEvent = function(object, name, handler, useCapture) -{ - if (object.addEventListener) - object.addEventListener(name, handler, useCapture); - else - object.attachEvent("on"+name, handler); -}; - -this.removeEvent = function(object, name, handler, useCapture) -{ - try - { - if (object.removeEventListener) - object.removeEventListener(name, handler, useCapture); - else - object.detachEvent("on"+name, handler); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("FBL.removeEvent error: ", object, name); - } -}; - -this.cancelEvent = function(e, preventDefault) -{ - if (!e) return; - - if (preventDefault) - { - if (e.preventDefault) - e.preventDefault(); - else - e.returnValue = false; - } - - if (e.stopPropagation) - e.stopPropagation(); - else - e.cancelBubble = true; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.addGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.addEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.addEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.addEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -this.removeGlobalEvent = function(name, handler) -{ - var doc = this.Firebug.browser.document; - var frames = this.Firebug.browser.window.frames; - - this.removeEvent(doc, name, handler); - - if (this.Firebug.chrome.type == "popup") - this.removeEvent(this.Firebug.chrome.document, name, handler); - - for (var i = 0, frame; frame = frames[i]; i++) - { - try - { - this.removeEvent(frame.document, name, handler); - } - catch(E) - { - // Avoid acess denied - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.dispatch = function(listeners, name, args) -{ - if (!listeners) return; - - try - {/**/ - if (typeof listeners.length != "undefined") - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners"); - - for (var i = 0; i < listeners.length; ++i) - { - var listener = listeners[i]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - else - { - if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object"); - - for (var prop in listeners) - { - var listener = listeners[prop]; - if ( listener[name] ) - listener[name].apply(listener, args); - } - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout(" Exception in lib.dispatch "+ name, exc); - //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener); - } - } - /**/ -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var disableTextSelectionHandler = function(event) -{ - FBL.cancelEvent(event, true); - - return false; -}; - -this.disableTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.addEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.addEvent(e, "mousedown", disableTextSelectionHandler); - } - - e.style.cursor = "default"; -}; - -this.restoreTextSelection = function(e) -{ - if (typeof e.onselectstart != "undefined") // IE - this.removeEvent(e, "selectstart", disableTextSelectionHandler); - - else // others - { - e.style.cssText = "cursor: default;"; - - // canceling the event in FF will prevent the menu popups to close when clicking over - // text-disabled elements - if (!this.isFirefox) - this.removeEvent(e, "mousedown", disableTextSelectionHandler); - } -}; - -// ************************************************************************************************ -// DOM Events - -var eventTypes = -{ - composition: [ - "composition", - "compositionstart", - "compositionend" ], - contextmenu: [ - "contextmenu" ], - drag: [ - "dragenter", - "dragover", - "dragexit", - "dragdrop", - "draggesture" ], - focus: [ - "focus", - "blur" ], - form: [ - "submit", - "reset", - "change", - "select", - "input" ], - key: [ - "keydown", - "keyup", - "keypress" ], - load: [ - "load", - "beforeunload", - "unload", - "abort", - "error" ], - mouse: [ - "mousedown", - "mouseup", - "click", - "dblclick", - "mouseover", - "mouseout", - "mousemove" ], - mutation: [ - "DOMSubtreeModified", - "DOMNodeInserted", - "DOMNodeRemoved", - "DOMNodeRemovedFromDocument", - "DOMNodeInsertedIntoDocument", - "DOMAttrModified", - "DOMCharacterDataModified" ], - paint: [ - "paint", - "resize", - "scroll" ], - scroll: [ - "overflow", - "underflow", - "overflowchanged" ], - text: [ - "text" ], - ui: [ - "DOMActivate", - "DOMFocusIn", - "DOMFocusOut" ], - xul: [ - "popupshowing", - "popupshown", - "popuphiding", - "popuphidden", - "close", - "command", - "broadcast", - "commandupdate" ] -}; - -this.getEventFamily = function(eventType) -{ - if (!this.families) - { - this.families = {}; - - for (var family in eventTypes) - { - var types = eventTypes[family]; - for (var i = 0; i < types.length; ++i) - this.families[types[i]] = family; - } - } - - return this.families[eventType]; -}; - - -// ************************************************************************************************ -// URLs - -this.getFileName = function(url) -{ - var split = this.splitURLBase(url); - return split.name; -}; - -this.splitURLBase = function(url) -{ - if (this.isDataURL(url)) - return this.splitDataURL(url); - return this.splitURLTrue(url); -}; - -this.splitDataURL = function(url) -{ - var mark = url.indexOf(':', 3); - if (mark != 4) - return false; // the first 5 chars must be 'data:' - - var point = url.indexOf(',', mark+1); - if (point < mark) - return false; // syntax error - - var props = { encodedContent: url.substr(point+1) }; - - var metadataBuffer = url.substr(mark+1, point); - var metadata = metadataBuffer.split(';'); - for (var i = 0; i < metadata.length; i++) - { - var nv = metadata[i].split('='); - if (nv.length == 2) - props[nv[0]] = nv[1]; - } - - // Additional Firebug-specific properties - if (props.hasOwnProperty('fileName')) - { - var caller_URL = decodeURIComponent(props['fileName']); - var caller_split = this.splitURLTrue(caller_URL); - - if (props.hasOwnProperty('baseLineNumber')) // this means it's probably an eval() - { - props['path'] = caller_split.path; - props['line'] = props['baseLineNumber']; - var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - props['name'] = 'eval->'+hint; - } - else - { - props['name'] = caller_split.name; - props['path'] = caller_split.path; - } - } - else - { - if (!props.hasOwnProperty('path')) - props['path'] = "data:"; - if (!props.hasOwnProperty('name')) - props['name'] = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, ""); - } - - return props; -}; - -this.splitURLTrue = function(url) -{ - var m = reSplitFile.exec(url); - if (!m) - return {name: url, path: url}; - else if (!m[2]) - return {path: m[1], name: m[1]}; - else - return {path: m[1], name: m[2]+m[3]}; -}; - -this.getFileExtension = function(url) -{ - if (!url) - return null; - - // Remove query string from the URL if any. - var queryString = url.indexOf("?"); - if (queryString != -1) - url = url.substr(0, queryString); - - // Now get the file extension. - var lastDot = url.lastIndexOf("."); - return url.substr(lastDot+1); -}; - -this.isSystemURL = function(url) -{ - if (!url) return true; - if (url.length == 0) return true; - if (url[0] == 'h') return false; - if (url.substr(0, 9) == "resource:") - return true; - else if (url.substr(0, 16) == "chrome://firebug") - return true; - else if (url == "XPCSafeJSObjectWrapper.cpp") - return true; - else if (url.substr(0, 6) == "about:") - return true; - else if (url.indexOf("firebug-service.js") != -1) - return true; - else - return false; -}; - -this.isSystemPage = function(win) -{ - try - { - var doc = win.document; - if (!doc) - return false; - - // Detect pages for pretty printed XML - if ((doc.styleSheets.length && doc.styleSheets[0].href - == "chrome://global/content/xml/XMLPrettyPrint.css") - || (doc.styleSheets.length > 1 && doc.styleSheets[1].href - == "chrome://browser/skin/feeds/subscribe.css")) - return true; - - return FBL.isSystemURL(win.location.href); - } - catch (exc) - { - // Sometimes documents just aren't ready to be manipulated here, but don't let that - // gum up the works - ERROR("tabWatcher.isSystemPage document not ready:"+ exc); - return false; - } -}; - -this.isSystemStyleSheet = function(sheet) -{ - var href = sheet && sheet.href; - return href && FBL.isSystemURL(href); -}; - -this.getURIHost = function(uri) -{ - try - { - if (uri) - return uri.host; - else - return ""; - } - catch (exc) - { - return ""; - } -}; - -this.isLocalURL = function(url) -{ - if (url.substr(0, 5) == "file:") - return true; - else if (url.substr(0, 8) == "wyciwyg:") - return true; - else - return false; -}; - -this.isDataURL = function(url) -{ - return (url && url.substr(0,5) == "data:"); -}; - -this.getLocalPath = function(url) -{ - if (this.isLocalURL(url)) - { - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var file = fileHandler.getFileFromURLSpec(url); - return file.path; - } -}; - -this.getURLFromLocalFile = function(file) -{ - var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler); - var URL = fileHandler.getURLSpecFromFile(file); - return URL; -}; - -this.getDataURLForContent = function(content, url) -{ - // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10, - var uri = "data:text/html;"; - uri += "fileName="+encodeURIComponent(url)+ ","; - uri += encodeURIComponent(content); - return uri; -}, - -this.getDomain = function(url) -{ - var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url); - return m ? m[1] : ""; -}; - -this.getURLPath = function(url) -{ - var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url); - return m ? m[1] : ""; -}; - -this.getPrettyDomain = function(url) -{ - var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url); - return m ? m[2] : ""; -}; - -this.absoluteURL = function(url, baseURL) -{ - return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g"); -}; - -this.absoluteURLWithDots = function(url, baseURL) -{ - if (url[0] == "?") - return baseURL + url; - - var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/; - var m = reURL.exec(url); - if (m) - return url; - - var m = reURL.exec(baseURL); - if (!m) - return ""; - - var head = m[1]; - var tail = m[3]; - if (url.substr(0, 2) == "//") - return m[2] + url; - else if (url[0] == "/") - { - return head + url; - } - else if (tail[tail.length-1] == "/") - return baseURL + url; - else - { - var parts = tail.split("/"); - return head + parts.slice(0, parts.length-1).join("/") + "/" + url; - } -}; - -this.normalizeURL = function(url) // this gets called a lot, any performance improvement welcome -{ - if (!url) - return ""; - // Replace one or more characters that are not forward-slash followed by /.., by space. - if (url.length < 255) // guard against monsters. - { - // Replace one or more characters that are not forward-slash followed by /.., by space. - url = url.replace(/[^\/]+\/\.\.\//, "", "g"); - // Issue 1496, avoid # - url = url.replace(/#.*/,""); - // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they - // don't match up with the URLs we get back from the DOM - url = url.replace(/file:\/([^\/])/g, "file:///$1"); - if (url.indexOf('chrome:')==0) - { - var m = reChromeCase.exec(url); // 1 is package name, 2 is path - if (m) - { - url = "chrome://"+m[1].toLowerCase()+"/"+m[2]; - } - } - } - return url; -}; - -this.denormalizeURL = function(url) -{ - return url.replace(/file:\/\/\//g, "file:/"); -}; - -this.parseURLParams = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedText(search); -}; - -this.parseURLEncodedText = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: ""}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters -// as in response/request headers and get/post parameters in Net module? -this.parseURLParamsArray = function(url) -{ - var q = url ? url.indexOf("?") : -1; - if (q == -1) - return []; - - var search = url.substr(q+1); - var h = search.lastIndexOf("#"); - if (h != -1) - search = search.substr(0, h); - - if (!search) - return []; - - return this.parseURLEncodedTextArray(search); -}; - -this.parseURLEncodedTextArray = function(text) -{ - var maxValueLength = 25000; - - var params = []; - - // Unescape '+' characters that are used to encode a space. - // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt - text = text.replace(/\+/g, " "); - - var args = text.split("&"); - for (var i = 0; i < args.length; ++i) - { - try { - var parts = args[i].split("="); - if (parts.length == 2) - { - if (parts[1].length > maxValueLength) - parts[1] = this.$STR("LargeData"); - - params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]}); - } - else - params.push({name: decodeURIComponent(parts[0]), value: [""]}); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("parseURLEncodedText EXCEPTION ", e); - FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]); - } - } - } - - params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; }); - - return params; -}; - -this.reEncodeURL = function(file, text) -{ - var lines = text.split("\n"); - var params = this.parseURLEncodedText(lines[lines.length-1]); - - var args = []; - for (var i = 0; i < params.length; ++i) - args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value)); - - var url = file.href; - url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&"); - - return url; -}; - -this.getResource = function(aURL) -{ - try - { - var channel=ioService.newChannel(aURL,null,null); - var input=channel.open(); - return FBL.readFromStream(input); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getResource FAILS for "+aURL, e); - } -}; - -this.parseJSONString = function(jsonString, originURL) -{ - // See if this is a Prototype style *-secure request. - var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/); - var matches = regex.exec(jsonString); - - if (matches) - { - jsonString = matches[1]; - - if (jsonString[0] == "\\" && jsonString[1] == "n") - jsonString = jsonString.substr(2); - - if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n") - jsonString = jsonString.substr(0, jsonString.length-2); - } - - if (jsonString.indexOf("&&&START&&&")) - { - regex = new RegExp(/&&&START&&& (.+) &&&END&&&/); - matches = regex.exec(jsonString); - if (matches) - jsonString = matches[1]; - } - - // throw on the extra parentheses - jsonString = "(" + jsonString + ")"; - - ///var s = Components.utils.Sandbox(originURL); - var jsonObject = null; - - try - { - ///jsonObject = Components.utils.evalInSandbox(jsonString, s); - - //jsonObject = Firebug.context.eval(jsonString); - jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;}); - } - catch(e) - { - /*** - if (e.message.indexOf("is not defined")) - { - var parts = e.message.split(" "); - s[parts[0]] = function(str){ return str; }; - try { - jsonObject = Components.utils.evalInSandbox(jsonString, s); - } catch(ex) { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - } - } - else - {/**/ - if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e); - return null; - ///} - } - - return jsonObject; -}; - -// ************************************************************************************************ - -this.objectToString = function(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -// Input Caret Position - -this.setSelectionRange = function(input, start, length) -{ - if (input.createTextRange) - { - var range = input.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", length - input.value.length); - range.select(); - } - else if (input.setSelectionRange) - { - input.setSelectionRange(start, length); - input.focus(); - } -}; - -// ************************************************************************************************ -// Input Selection Start / Caret Position - -this.getInputSelectionStart = function(input) -{ - if (document.selection) - { - var range = input.ownerDocument.selection.createRange(); - var text = range.text; - - //console.log("range", range.text); - - // if there is a selection, find the start position - if (text) - { - return input.value.indexOf(text); - } - // if there is no selection, find the caret position - else - { - range.moveStart("character", -input.value.length); - - return range.text.length; - } - } - else if (typeof input.selectionStart != "undefined") - return input.selectionStart; - - return 0; -}; - -// ************************************************************************************************ -// Opera Tab Fix - -function onOperaTabBlur(e) -{ - if (this.lastKey == 9) - this.focus(); -}; - -function onOperaTabKeyDown(e) -{ - this.lastKey = e.keyCode; -}; - -function onOperaTabFocus(e) -{ - this.lastKey = null; -}; - -this.fixOperaTabKey = function(el) -{ - el.onfocus = onOperaTabFocus; - el.onblur = onOperaTabBlur; - el.onkeydown = onOperaTabKeyDown; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.Property = function(object, name) -{ - this.object = object; - this.name = name; - - this.getObject = function() - { - return object[name]; - }; -}; - -this.ErrorCopy = function(message) -{ - this.message = message; -}; - -function EventCopy(event) -{ - // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to - // represent them long term in the inspector. - for (var name in event) - { - try { - this[name] = event[name]; - } catch (exc) { } - } -} - -this.EventCopy = EventCopy; - - -// ************************************************************************************************ -// Type Checking - -var toString = Object.prototype.toString; -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; - -this.isArray = function(object) { - return toString.call(object) === '[object Array]'; -}; - -this.isFunction = function(object) { - if (!object) return false; - - return toString.call(object) === "[object Function]" || - this.isIE && typeof object != "string" && reFunction.test(""+object); -}; - - -// ************************************************************************************************ -// Instance Checking - -this.instanceOf = function(object, className) -{ - if (!object || typeof object != "object") - return false; - - // Try to use the native instanceof operator. We can only use it when we know - // exactly the window where the object is located at - if (object.ownerDocument) - { - // find the correct window of the object - var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow; - - // if the class is accessible in the window, uses the native instanceof operator - // if the instanceof evaluates to "true" we can assume it is a instance, but if it - // evaluates to "false" we must continue with the duck type detection below because - // the native object may be extended, thus breaking the instanceof result - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (className in win && object instanceof win[className]) - return true; - } - // If the object doesn't have the ownerDocument property, we'll try to look at - // the current context's window - else - { - // TODO: xxxpedro context - // Since we're not using yet a Firebug.context, we'll just use the top window - // (browser) as a reference - var win = Firebug.browser.window; - if (className in win) - return object instanceof win[className]; - } - - // get the duck type model from the cache - var cache = instanceCheckMap[className]; - if (!cache) - return false; - - // starts the hacky duck type detection - for(var n in cache) - { - var obj = cache[n]; - var type = typeof obj; - obj = type == "object" ? obj : [obj]; - - for(var name in obj) - { - // avoid problems with extended native objects - // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - if (!obj.hasOwnProperty(name)) - continue; - - var value = obj[name]; - - if( n == "property" && !(value in object) || - n == "method" && !this.isFunction(object[value]) || - n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() ) - return false; - } - } - - return true; -}; - -var instanceCheckMap = -{ - // DuckTypeCheck: - // { - // property: ["window", "document"], - // method: "setTimeout", - // value: {nodeType: 1} - // }, - - Window: - { - property: ["window", "document"], - method: "setTimeout" - }, - - Document: - { - property: ["body", "cookie"], - method: "getElementById" - }, - - Node: - { - property: "ownerDocument", - method: "appendChild" - }, - - Element: - { - property: "tagName", - value: {nodeType: 1} - }, - - Location: - { - property: ["hostname", "protocol"], - method: "assign" - }, - - HTMLImageElement: - { - property: "useMap", - value: - { - nodeType: 1, - tagName: "img" - } - }, - - HTMLAnchorElement: - { - property: "hreflang", - value: - { - nodeType: 1, - tagName: "a" - } - }, - - HTMLInputElement: - { - property: "form", - value: - { - nodeType: 1, - tagName: "input" - } - }, - - HTMLButtonElement: - { - // ? - }, - - HTMLFormElement: - { - method: "submit", - value: - { - nodeType: 1, - tagName: "form" - } - }, - - HTMLBodyElement: - { - - }, - - HTMLHtmlElement: - { - - }, - - CSSStyleRule: - { - property: ["selectorText", "style"] - } - -}; - - -// ************************************************************************************************ -// DOM Constants - -/* - -Problems: - - - IE does not have window.Node, window.Element, etc - - for (var name in Node.prototype) return nothing on FF - -*/ - - -var domMemberMap2 = {}; - -var domMemberMap2Sandbox = null; - -var getDomMemberMap2 = function(name) -{ - if (!domMemberMap2Sandbox) - { - var doc = Firebug.chrome.document; - var frame = doc.createElement("iframe"); - - frame.id = "FirebugSandbox"; - frame.style.display = "none"; - frame.src = "about:blank"; - - doc.body.appendChild(frame); - - domMemberMap2Sandbox = frame.window || frame.contentWindow; - } - - var props = []; - - //var object = domMemberMap2Sandbox[name]; - //object = object.prototype || object; - - var object = null; - - if (name == "Window") - object = domMemberMap2Sandbox.window; - - else if (name == "Document") - object = domMemberMap2Sandbox.document; - - else if (name == "HTMLScriptElement") - object = domMemberMap2Sandbox.document.createElement("script"); - - else if (name == "HTMLAnchorElement") - object = domMemberMap2Sandbox.document.createElement("a"); - - else if (name.indexOf("Element") != -1) - { - object = domMemberMap2Sandbox.document.createElement("div"); - } - - if (object) - { - //object = object.prototype || object; - - //props = 'addEventListener,document,location,navigator,window'.split(','); - - for (var n in object) - props.push(n); - } - /**/ - - return props; - return extendArray(props, domMemberMap[name]); -}; - -// xxxpedro experimental get DOM members -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - FBL.domMemberCache = domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = getDomMemberMap2(name); - var cache = domMemberCache[name] = {}; - - /* - if (name.indexOf("Element") != -1) - { - this.append(cache, this.getDOMMembers("Node")); - this.append(cache, this.getDOMMembers("Element")); - } - /**/ - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument")) - { return domMemberCache.Document; } - else if (this.instanceOf(object, "Location")) - { return domMemberCache.Location; } - else if (this.instanceOf(object, "HTMLImageElement")) - { return domMemberCache.HTMLImageElement; } - else if (this.instanceOf(object, "HTMLAnchorElement")) - { return domMemberCache.HTMLAnchorElement; } - else if (this.instanceOf(object, "HTMLInputElement")) - { return domMemberCache.HTMLInputElement; } - else if (this.instanceOf(object, "HTMLButtonElement")) - { return domMemberCache.HTMLButtonElement; } - else if (this.instanceOf(object, "HTMLFormElement")) - { return domMemberCache.HTMLFormElement; } - else if (this.instanceOf(object, "HTMLBodyElement")) - { return domMemberCache.HTMLBodyElement; } - else if (this.instanceOf(object, "HTMLHtmlElement")) - { return domMemberCache.HTMLHtmlElement; } - else if (this.instanceOf(object, "HTMLScriptElement")) - { return domMemberCache.HTMLScriptElement; } - else if (this.instanceOf(object, "HTMLTableElement")) - { return domMemberCache.HTMLTableElement; } - else if (this.instanceOf(object, "HTMLTableRowElement")) - { return domMemberCache.HTMLTableRowElement; } - else if (this.instanceOf(object, "HTMLTableCellElement")) - { return domMemberCache.HTMLTableCellElement; } - else if (this.instanceOf(object, "HTMLIFrameElement")) - { return domMemberCache.HTMLIFrameElement; } - else if (this.instanceOf(object, "SVGSVGElement")) - { return domMemberCache.SVGSVGElement; } - else if (this.instanceOf(object, "SVGElement")) - { return domMemberCache.SVGElement; } - else if (this.instanceOf(object, "Element")) - { return domMemberCache.Element; } - else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection")) - { return domMemberCache.Text; } - else if (this.instanceOf(object, "Attr")) - { return domMemberCache.Attr; } - else if (this.instanceOf(object, "Node")) - { return domMemberCache.Node; } - else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy")) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("lib.getDOMMembers FAILED ", E); - - return {}; - } -}; - - -/* -this.getDOMMembers = function(object) -{ - if (!domMemberCache) - { - domMemberCache = {}; - - for (var name in domMemberMap) - { - var builtins = domMemberMap[name]; - var cache = domMemberCache[name] = {}; - - for (var i = 0; i < builtins.length; ++i) - cache[builtins[i]] = i; - } - } - - try - { - if (this.instanceOf(object, "Window")) - { return domMemberCache.Window; } - else if (object instanceof Document || object instanceof XMLDocument) - { return domMemberCache.Document; } - else if (object instanceof Location) - { return domMemberCache.Location; } - else if (object instanceof HTMLImageElement) - { return domMemberCache.HTMLImageElement; } - else if (object instanceof HTMLAnchorElement) - { return domMemberCache.HTMLAnchorElement; } - else if (object instanceof HTMLInputElement) - { return domMemberCache.HTMLInputElement; } - else if (object instanceof HTMLButtonElement) - { return domMemberCache.HTMLButtonElement; } - else if (object instanceof HTMLFormElement) - { return domMemberCache.HTMLFormElement; } - else if (object instanceof HTMLBodyElement) - { return domMemberCache.HTMLBodyElement; } - else if (object instanceof HTMLHtmlElement) - { return domMemberCache.HTMLHtmlElement; } - else if (object instanceof HTMLScriptElement) - { return domMemberCache.HTMLScriptElement; } - else if (object instanceof HTMLTableElement) - { return domMemberCache.HTMLTableElement; } - else if (object instanceof HTMLTableRowElement) - { return domMemberCache.HTMLTableRowElement; } - else if (object instanceof HTMLTableCellElement) - { return domMemberCache.HTMLTableCellElement; } - else if (object instanceof HTMLIFrameElement) - { return domMemberCache.HTMLIFrameElement; } - else if (object instanceof SVGSVGElement) - { return domMemberCache.SVGSVGElement; } - else if (object instanceof SVGElement) - { return domMemberCache.SVGElement; } - else if (object instanceof Element) - { return domMemberCache.Element; } - else if (object instanceof Text || object instanceof CDATASection) - { return domMemberCache.Text; } - else if (object instanceof Attr) - { return domMemberCache.Attr; } - else if (object instanceof Node) - { return domMemberCache.Node; } - else if (object instanceof Event || object instanceof EventCopy) - { return domMemberCache.Event; } - else - return {}; - } - catch(E) - { - return {}; - } -}; -/**/ - -this.isDOMMember = function(object, propName) -{ - var members = this.getDOMMembers(object); - return members && propName in members; -}; - -var domMemberCache = null; -var domMemberMap = {}; - -domMemberMap.Window = -[ - "document", - "frameElement", - - "innerWidth", - "innerHeight", - "outerWidth", - "outerHeight", - "screenX", - "screenY", - "pageXOffset", - "pageYOffset", - "scrollX", - "scrollY", - "scrollMaxX", - "scrollMaxY", - - "status", - "defaultStatus", - - "parent", - "opener", - "top", - "window", - "content", - "self", - - "location", - "history", - "frames", - "navigator", - "screen", - "menubar", - "toolbar", - "locationbar", - "personalbar", - "statusbar", - "directories", - "scrollbars", - "fullScreen", - "netscape", - "java", - "console", - "Components", - "controllers", - "closed", - "crypto", - "pkcs11", - - "name", - "property", - "length", - - "sessionStorage", - "globalStorage", - - "setTimeout", - "setInterval", - "clearTimeout", - "clearInterval", - "addEventListener", - "removeEventListener", - "dispatchEvent", - "getComputedStyle", - "captureEvents", - "releaseEvents", - "routeEvent", - "enableExternalCapture", - "disableExternalCapture", - "moveTo", - "moveBy", - "resizeTo", - "resizeBy", - "scroll", - "scrollTo", - "scrollBy", - "scrollByLines", - "scrollByPages", - "sizeToContent", - "setResizable", - "getSelection", - "open", - "openDialog", - "close", - "alert", - "confirm", - "prompt", - "dump", - "focus", - "blur", - "find", - "back", - "forward", - "home", - "stop", - "print", - "atob", - "btoa", - "updateCommands", - "XPCNativeWrapper", - "GeckoActiveXObject", - "applicationCache" // FF3 -]; - -domMemberMap.Location = -[ - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - - "assign", - "reload", - "replace" -]; - -domMemberMap.Node = -[ - "id", - "className", - - "nodeType", - "tagName", - "nodeName", - "localName", - "prefix", - "namespaceURI", - "nodeValue", - - "ownerDocument", - "parentNode", - "offsetParent", - "nextSibling", - "previousSibling", - "firstChild", - "lastChild", - "childNodes", - "attributes", - - "dir", - "baseURI", - "textContent", - "innerHTML", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]; - -domMemberMap.Document = extendArray(domMemberMap.Node, -[ - "documentElement", - "body", - "title", - "location", - "referrer", - "cookie", - "contentType", - "lastModified", - "characterSet", - "inputEncoding", - "xmlEncoding", - "xmlStandalone", - "xmlVersion", - "strictErrorChecking", - "documentURI", - "URL", - - "defaultView", - "doctype", - "implementation", - "styleSheets", - "images", - "links", - "forms", - "anchors", - "embeds", - "plugins", - "applets", - - "width", - "height", - - "designMode", - "compatMode", - "async", - "preferredStylesheetSet", - - "alinkColor", - "linkColor", - "vlinkColor", - "bgColor", - "fgColor", - "domain", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "captureEvents", - "releaseEvents", - "routeEvent", - "clear", - "open", - "close", - "execCommand", - "execCommandShowHelp", - "getElementsByName", - "getSelection", - "queryCommandEnabled", - "queryCommandIndeterm", - "queryCommandState", - "queryCommandSupported", - "queryCommandText", - "queryCommandValue", - "write", - "writeln", - "adoptNode", - "appendChild", - "removeChild", - "renameNode", - "cloneNode", - "compareDocumentPosition", - "createAttribute", - "createAttributeNS", - "createCDATASection", - "createComment", - "createDocumentFragment", - "createElement", - "createElementNS", - "createEntityReference", - "createEvent", - "createExpression", - "createNSResolver", - "createNodeIterator", - "createProcessingInstruction", - "createRange", - "createTextNode", - "createTreeWalker", - "domConfig", - "evaluate", - "evaluateFIXptr", - "evaluateXPointer", - "getAnonymousElementByAttribute", - "getAnonymousNodes", - "addBinding", - "removeBinding", - "getBindingParent", - "getBoxObjectFor", - "setBoxObjectFor", - "getElementById", - "getElementsByTagName", - "getElementsByTagNameNS", - "hasAttributes", - "hasChildNodes", - "importNode", - "insertBefore", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "load", - "loadBindingDocument", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "normalizeDocument", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.Element = extendArray(domMemberMap.Node, -[ - "clientWidth", - "clientHeight", - "offsetLeft", - "offsetTop", - "offsetWidth", - "offsetHeight", - "scrollLeft", - "scrollTop", - "scrollWidth", - "scrollHeight", - - "style", - - "tabIndex", - "title", - "lang", - "align", - "spellcheck", - - "addEventListener", - "removeEventListener", - "dispatchEvent", - "focus", - "blur", - "cloneNode", - "appendChild", - "insertBefore", - "replaceChild", - "removeChild", - "compareDocumentPosition", - "getElementsByTagName", - "getElementsByTagNameNS", - "getAttribute", - "getAttributeNS", - "getAttributeNode", - "getAttributeNodeNS", - "setAttribute", - "setAttributeNS", - "setAttributeNode", - "setAttributeNodeNS", - "removeAttribute", - "removeAttributeNS", - "removeAttributeNode", - "hasAttribute", - "hasAttributeNS", - "hasAttributes", - "hasChildNodes", - "lookupNamespaceURI", - "lookupPrefix", - "normalize", - "isDefaultNamespace", - "isEqualNode", - "isSameNode", - "isSupported", - "getFeature", - "getUserData", - "setUserData" -]); - -domMemberMap.SVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - "href", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getPresentationAttribute", - "preserveAspectRatio" -]); - -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element, -[ - "x", - "y", - "width", - "height", - "rx", - "ry", - "transform", - - "viewBox", - "viewport", - "currentView", - "useCurrentView", - "pixelUnitToMillimeterX", - "pixelUnitToMillimeterY", - "screenPixelToMillimeterX", - "screenPixelToMillimeterY", - "currentScale", - "currentTranslate", - "zoomAndPan", - - "ownerSVGElement", - "viewportElement", - "farthestViewportElement", - "nearestViewportElement", - "contentScriptType", - "contentStyleType", - - "getBBox", - "getCTM", - "getScreenCTM", - "getTransformToElement", - "getEnclosureList", - "getIntersectionList", - "getViewboxToViewportTransform", - "getPresentationAttribute", - "getElementById", - "checkEnclosure", - "checkIntersection", - "createSVGAngle", - "createSVGLength", - "createSVGMatrix", - "createSVGNumber", - "createSVGPoint", - "createSVGRect", - "createSVGString", - "createSVGTransform", - "createSVGTransformFromMatrix", - "deSelectAll", - "preserveAspectRatio", - "forceRedraw", - "suspendRedraw", - "unsuspendRedraw", - "unsuspendRedrawAll", - "getCurrentTime", - "setCurrentTime", - "animationsPaused", - "pauseAnimations", - "unpauseAnimations" -]); - -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element, -[ - "src", - "naturalWidth", - "naturalHeight", - "width", - "height", - "x", - "y", - "name", - "alt", - "longDesc", - "lowsrc", - "border", - "complete", - "hspace", - "vspace", - "isMap", - "useMap" -]); - -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element, -[ - "name", - "target", - "accessKey", - "href", - "protocol", - "host", - "hostname", - "port", - "pathname", - "search", - "hash", - "hreflang", - "coords", - "shape", - "text", - "type", - "rel", - "rev", - "charset" -]); - -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element, -[ - "contentDocument", - "contentWindow", - "frameBorder", - "height", - "longDesc", - "marginHeight", - "marginWidth", - "name", - "scrolling", - "src", - "width" -]); - -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "border", - "caption", - "cellPadding", - "cellSpacing", - "frame", - "rows", - "rules", - "summary", - "tBodies", - "tFoot", - "tHead", - "width", - - "createCaption", - "createTFoot", - "createTHead", - "deleteCaption", - "deleteRow", - "deleteTFoot", - "deleteTHead", - "insertRow" -]); - -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element, -[ - "bgColor", - "cells", - "ch", - "chOff", - "rowIndex", - "sectionRowIndex", - "vAlign", - - "deleteCell", - "insertCell" -]); - -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element, -[ - "abbr", - "axis", - "bgColor", - "cellIndex", - "ch", - "chOff", - "colSpan", - "headers", - "height", - "noWrap", - "rowSpan", - "scope", - "vAlign", - "width" - -]); - -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element, -[ - "src" -]); - -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element, -[ - "accessKey", - "disabled", - "form", - "name", - "type", - "value", - - "click" -]); - -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element, -[ - "type", - "value", - "checked", - "accept", - "accessKey", - "alt", - "controllers", - "defaultChecked", - "defaultValue", - "disabled", - "form", - "maxLength", - "name", - "readOnly", - "selectionEnd", - "selectionStart", - "size", - "src", - "textLength", - "useMap", - - "click", - "select", - "setSelectionRange" -]); - -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element, -[ - "acceptCharset", - "action", - "author", - "elements", - "encoding", - "enctype", - "entry_id", - "length", - "method", - "name", - "post", - "target", - "text", - "url", - - "reset", - "submit" -]); - -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element, -[ - "aLink", - "background", - "bgColor", - "link", - "text", - "vLink" -]); - -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element, -[ - "version" -]); - -domMemberMap.Text = extendArray(domMemberMap.Node, -[ - "data", - "length", - - "appendData", - "deleteData", - "insertData", - "replaceData", - "splitText", - "substringData" -]); - -domMemberMap.Attr = extendArray(domMemberMap.Node, -[ - "name", - "value", - "specified", - "ownerElement" -]); - -domMemberMap.Event = -[ - "type", - "target", - "currentTarget", - "originalTarget", - "explicitOriginalTarget", - "relatedTarget", - "rangeParent", - "rangeOffset", - "view", - - "keyCode", - "charCode", - "screenX", - "screenY", - "clientX", - "clientY", - "layerX", - "layerY", - "pageX", - "pageY", - - "detail", - "button", - "which", - "ctrlKey", - "shiftKey", - "altKey", - "metaKey", - - "eventPhase", - "timeStamp", - "bubbles", - "cancelable", - "cancelBubble", - - "isTrusted", - "isChar", - - "getPreventDefault", - "initEvent", - "initMouseEvent", - "initKeyEvent", - "initUIEvent", - "preventBubble", - "preventCapture", - "preventDefault", - "stopPropagation" -]; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.domConstantMap = -{ - "ELEMENT_NODE": 1, - "ATTRIBUTE_NODE": 1, - "TEXT_NODE": 1, - "CDATA_SECTION_NODE": 1, - "ENTITY_REFERENCE_NODE": 1, - "ENTITY_NODE": 1, - "PROCESSING_INSTRUCTION_NODE": 1, - "COMMENT_NODE": 1, - "DOCUMENT_NODE": 1, - "DOCUMENT_TYPE_NODE": 1, - "DOCUMENT_FRAGMENT_NODE": 1, - "NOTATION_NODE": 1, - - "DOCUMENT_POSITION_DISCONNECTED": 1, - "DOCUMENT_POSITION_PRECEDING": 1, - "DOCUMENT_POSITION_FOLLOWING": 1, - "DOCUMENT_POSITION_CONTAINS": 1, - "DOCUMENT_POSITION_CONTAINED_BY": 1, - "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1, - - "UNKNOWN_RULE": 1, - "STYLE_RULE": 1, - "CHARSET_RULE": 1, - "IMPORT_RULE": 1, - "MEDIA_RULE": 1, - "FONT_FACE_RULE": 1, - "PAGE_RULE": 1, - - "CAPTURING_PHASE": 1, - "AT_TARGET": 1, - "BUBBLING_PHASE": 1, - - "SCROLL_PAGE_UP": 1, - "SCROLL_PAGE_DOWN": 1, - - "MOUSEUP": 1, - "MOUSEDOWN": 1, - "MOUSEOVER": 1, - "MOUSEOUT": 1, - "MOUSEMOVE": 1, - "MOUSEDRAG": 1, - "CLICK": 1, - "DBLCLICK": 1, - "KEYDOWN": 1, - "KEYUP": 1, - "KEYPRESS": 1, - "DRAGDROP": 1, - "FOCUS": 1, - "BLUR": 1, - "SELECT": 1, - "CHANGE": 1, - "RESET": 1, - "SUBMIT": 1, - "SCROLL": 1, - "LOAD": 1, - "UNLOAD": 1, - "XFER_DONE": 1, - "ABORT": 1, - "ERROR": 1, - "LOCATE": 1, - "MOVE": 1, - "RESIZE": 1, - "FORWARD": 1, - "HELP": 1, - "BACK": 1, - "TEXT": 1, - - "ALT_MASK": 1, - "CONTROL_MASK": 1, - "SHIFT_MASK": 1, - "META_MASK": 1, - - "DOM_VK_TAB": 1, - "DOM_VK_PAGE_UP": 1, - "DOM_VK_PAGE_DOWN": 1, - "DOM_VK_UP": 1, - "DOM_VK_DOWN": 1, - "DOM_VK_LEFT": 1, - "DOM_VK_RIGHT": 1, - "DOM_VK_CANCEL": 1, - "DOM_VK_HELP": 1, - "DOM_VK_BACK_SPACE": 1, - "DOM_VK_CLEAR": 1, - "DOM_VK_RETURN": 1, - "DOM_VK_ENTER": 1, - "DOM_VK_SHIFT": 1, - "DOM_VK_CONTROL": 1, - "DOM_VK_ALT": 1, - "DOM_VK_PAUSE": 1, - "DOM_VK_CAPS_LOCK": 1, - "DOM_VK_ESCAPE": 1, - "DOM_VK_SPACE": 1, - "DOM_VK_END": 1, - "DOM_VK_HOME": 1, - "DOM_VK_PRINTSCREEN": 1, - "DOM_VK_INSERT": 1, - "DOM_VK_DELETE": 1, - "DOM_VK_0": 1, - "DOM_VK_1": 1, - "DOM_VK_2": 1, - "DOM_VK_3": 1, - "DOM_VK_4": 1, - "DOM_VK_5": 1, - "DOM_VK_6": 1, - "DOM_VK_7": 1, - "DOM_VK_8": 1, - "DOM_VK_9": 1, - "DOM_VK_SEMICOLON": 1, - "DOM_VK_EQUALS": 1, - "DOM_VK_A": 1, - "DOM_VK_B": 1, - "DOM_VK_C": 1, - "DOM_VK_D": 1, - "DOM_VK_E": 1, - "DOM_VK_F": 1, - "DOM_VK_G": 1, - "DOM_VK_H": 1, - "DOM_VK_I": 1, - "DOM_VK_J": 1, - "DOM_VK_K": 1, - "DOM_VK_L": 1, - "DOM_VK_M": 1, - "DOM_VK_N": 1, - "DOM_VK_O": 1, - "DOM_VK_P": 1, - "DOM_VK_Q": 1, - "DOM_VK_R": 1, - "DOM_VK_S": 1, - "DOM_VK_T": 1, - "DOM_VK_U": 1, - "DOM_VK_V": 1, - "DOM_VK_W": 1, - "DOM_VK_X": 1, - "DOM_VK_Y": 1, - "DOM_VK_Z": 1, - "DOM_VK_CONTEXT_MENU": 1, - "DOM_VK_NUMPAD0": 1, - "DOM_VK_NUMPAD1": 1, - "DOM_VK_NUMPAD2": 1, - "DOM_VK_NUMPAD3": 1, - "DOM_VK_NUMPAD4": 1, - "DOM_VK_NUMPAD5": 1, - "DOM_VK_NUMPAD6": 1, - "DOM_VK_NUMPAD7": 1, - "DOM_VK_NUMPAD8": 1, - "DOM_VK_NUMPAD9": 1, - "DOM_VK_MULTIPLY": 1, - "DOM_VK_ADD": 1, - "DOM_VK_SEPARATOR": 1, - "DOM_VK_SUBTRACT": 1, - "DOM_VK_DECIMAL": 1, - "DOM_VK_DIVIDE": 1, - "DOM_VK_F1": 1, - "DOM_VK_F2": 1, - "DOM_VK_F3": 1, - "DOM_VK_F4": 1, - "DOM_VK_F5": 1, - "DOM_VK_F6": 1, - "DOM_VK_F7": 1, - "DOM_VK_F8": 1, - "DOM_VK_F9": 1, - "DOM_VK_F10": 1, - "DOM_VK_F11": 1, - "DOM_VK_F12": 1, - "DOM_VK_F13": 1, - "DOM_VK_F14": 1, - "DOM_VK_F15": 1, - "DOM_VK_F16": 1, - "DOM_VK_F17": 1, - "DOM_VK_F18": 1, - "DOM_VK_F19": 1, - "DOM_VK_F20": 1, - "DOM_VK_F21": 1, - "DOM_VK_F22": 1, - "DOM_VK_F23": 1, - "DOM_VK_F24": 1, - "DOM_VK_NUM_LOCK": 1, - "DOM_VK_SCROLL_LOCK": 1, - "DOM_VK_COMMA": 1, - "DOM_VK_PERIOD": 1, - "DOM_VK_SLASH": 1, - "DOM_VK_BACK_QUOTE": 1, - "DOM_VK_OPEN_BRACKET": 1, - "DOM_VK_BACK_SLASH": 1, - "DOM_VK_CLOSE_BRACKET": 1, - "DOM_VK_QUOTE": 1, - "DOM_VK_META": 1, - - "SVG_ZOOMANDPAN_DISABLE": 1, - "SVG_ZOOMANDPAN_MAGNIFY": 1, - "SVG_ZOOMANDPAN_UNKNOWN": 1 -}; - -this.cssInfo = -{ - "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"], - "background-attachment": ["bgAttachment"], - "background-color": ["color", "systemColor"], - "background-image": ["none"], - "background-position": ["bgPosition"], - "background-repeat": ["bgRepeat"], - - "border": ["borderStyle", "thickness", "color", "systemColor", "none"], - "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"], - "border-collapse": ["borderCollapse"], - "border-color": ["color", "systemColor"], - "border-top-color": ["color", "systemColor"], - "border-right-color": ["color", "systemColor"], - "border-bottom-color": ["color", "systemColor"], - "border-left-color": ["color", "systemColor"], - "border-spacing": [], - "border-style": ["borderStyle"], - "border-top-style": ["borderStyle"], - "border-right-style": ["borderStyle"], - "border-bottom-style": ["borderStyle"], - "border-left-style": ["borderStyle"], - "border-width": ["thickness"], - "border-top-width": ["thickness"], - "border-right-width": ["thickness"], - "border-bottom-width": ["thickness"], - "border-left-width": ["thickness"], - - "bottom": ["auto"], - "caption-side": ["captionSide"], - "clear": ["clear", "none"], - "clip": ["auto"], - "color": ["color", "systemColor"], - "content": ["content"], - "counter-increment": ["none"], - "counter-reset": ["none"], - "cursor": ["cursor", "none"], - "direction": ["direction"], - "display": ["display", "none"], - "empty-cells": [], - "float": ["float", "none"], - "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"], - - "font-family": ["fontFamily"], - "font-size": ["fontSize"], - "font-size-adjust": [], - "font-stretch": [], - "font-style": ["fontStyle"], - "font-variant": ["fontVariant"], - "font-weight": ["fontWeight"], - - "height": ["auto"], - "left": ["auto"], - "letter-spacing": [], - "line-height": [], - - "list-style": ["listStyleType", "listStylePosition", "none"], - "list-style-image": ["none"], - "list-style-position": ["listStylePosition"], - "list-style-type": ["listStyleType", "none"], - - "margin": [], - "margin-top": [], - "margin-right": [], - "margin-bottom": [], - "margin-left": [], - - "marker-offset": ["auto"], - "min-height": ["none"], - "max-height": ["none"], - "min-width": ["none"], - "max-width": ["none"], - - "outline": ["borderStyle", "color", "systemColor", "none"], - "outline-color": ["color", "systemColor"], - "outline-style": ["borderStyle"], - "outline-width": [], - - "overflow": ["overflow", "auto"], - "overflow-x": ["overflow", "auto"], - "overflow-y": ["overflow", "auto"], - - "padding": [], - "padding-top": [], - "padding-right": [], - "padding-bottom": [], - "padding-left": [], - - "position": ["position"], - "quotes": ["none"], - "right": ["auto"], - "table-layout": ["tableLayout", "auto"], - "text-align": ["textAlign"], - "text-decoration": ["textDecoration", "none"], - "text-indent": [], - "text-shadow": [], - "text-transform": ["textTransform", "none"], - "top": ["auto"], - "unicode-bidi": [], - "vertical-align": ["verticalAlign"], - "white-space": ["whiteSpace"], - "width": ["auto"], - "word-spacing": [], - "z-index": [], - - "-moz-appearance": ["mozAppearance"], - "-moz-border-radius": [], - "-moz-border-radius-bottomleft": [], - "-moz-border-radius-bottomright": [], - "-moz-border-radius-topleft": [], - "-moz-border-radius-topright": [], - "-moz-border-top-colors": ["color", "systemColor"], - "-moz-border-right-colors": ["color", "systemColor"], - "-moz-border-bottom-colors": ["color", "systemColor"], - "-moz-border-left-colors": ["color", "systemColor"], - "-moz-box-align": ["mozBoxAlign"], - "-moz-box-direction": ["mozBoxDirection"], - "-moz-box-flex": [], - "-moz-box-ordinal-group": [], - "-moz-box-orient": ["mozBoxOrient"], - "-moz-box-pack": ["mozBoxPack"], - "-moz-box-sizing": ["mozBoxSizing"], - "-moz-opacity": [], - "-moz-user-focus": ["userFocus", "none"], - "-moz-user-input": ["userInput"], - "-moz-user-modify": [], - "-moz-user-select": ["userSelect", "none"], - "-moz-background-clip": [], - "-moz-background-inline-policy": [], - "-moz-background-origin": [], - "-moz-binding": [], - "-moz-column-count": [], - "-moz-column-gap": [], - "-moz-column-width": [], - "-moz-image-region": [] -}; - -this.inheritedStyleNames = -{ - "border-collapse": 1, - "border-spacing": 1, - "border-style": 1, - "caption-side": 1, - "color": 1, - "cursor": 1, - "direction": 1, - "empty-cells": 1, - "font": 1, - "font-family": 1, - "font-size-adjust": 1, - "font-size": 1, - "font-style": 1, - "font-variant": 1, - "font-weight": 1, - "letter-spacing": 1, - "line-height": 1, - "list-style": 1, - "list-style-image": 1, - "list-style-position": 1, - "list-style-type": 1, - "quotes": 1, - "text-align": 1, - "text-decoration": 1, - "text-indent": 1, - "text-shadow": 1, - "text-transform": 1, - "white-space": 1, - "word-spacing": 1 -}; - -this.cssKeywords = -{ - "appearance": - [ - "button", - "button-small", - "checkbox", - "checkbox-container", - "checkbox-small", - "dialog", - "listbox", - "menuitem", - "menulist", - "menulist-button", - "menulist-textfield", - "menupopup", - "progressbar", - "radio", - "radio-container", - "radio-small", - "resizer", - "scrollbar", - "scrollbarbutton-down", - "scrollbarbutton-left", - "scrollbarbutton-right", - "scrollbarbutton-up", - "scrollbartrack-horizontal", - "scrollbartrack-vertical", - "separator", - "statusbar", - "tab", - "tab-left-edge", - "tabpanels", - "textfield", - "toolbar", - "toolbarbutton", - "toolbox", - "tooltip", - "treeheadercell", - "treeheadersortarrow", - "treeitem", - "treetwisty", - "treetwistyopen", - "treeview", - "window" - ], - - "systemColor": - [ - "ActiveBorder", - "ActiveCaption", - "AppWorkspace", - "Background", - "ButtonFace", - "ButtonHighlight", - "ButtonShadow", - "ButtonText", - "CaptionText", - "GrayText", - "Highlight", - "HighlightText", - "InactiveBorder", - "InactiveCaption", - "InactiveCaptionText", - "InfoBackground", - "InfoText", - "Menu", - "MenuText", - "Scrollbar", - "ThreeDDarkShadow", - "ThreeDFace", - "ThreeDHighlight", - "ThreeDLightShadow", - "ThreeDShadow", - "Window", - "WindowFrame", - "WindowText", - "-moz-field", - "-moz-fieldtext", - "-moz-workspace", - "-moz-visitedhyperlinktext", - "-moz-use-text-color" - ], - - "color": - [ - "AliceBlue", - "AntiqueWhite", - "Aqua", - "Aquamarine", - "Azure", - "Beige", - "Bisque", - "Black", - "BlanchedAlmond", - "Blue", - "BlueViolet", - "Brown", - "BurlyWood", - "CadetBlue", - "Chartreuse", - "Chocolate", - "Coral", - "CornflowerBlue", - "Cornsilk", - "Crimson", - "Cyan", - "DarkBlue", - "DarkCyan", - "DarkGoldenRod", - "DarkGray", - "DarkGreen", - "DarkKhaki", - "DarkMagenta", - "DarkOliveGreen", - "DarkOrange", - "DarkOrchid", - "DarkRed", - "DarkSalmon", - "DarkSeaGreen", - "DarkSlateBlue", - "DarkSlateGray", - "DarkTurquoise", - "DarkViolet", - "DeepPink", - "DarkSkyBlue", - "DimGray", - "DodgerBlue", - "Feldspar", - "FireBrick", - "FloralWhite", - "ForestGreen", - "Fuchsia", - "Gainsboro", - "GhostWhite", - "Gold", - "GoldenRod", - "Gray", - "Green", - "GreenYellow", - "HoneyDew", - "HotPink", - "IndianRed", - "Indigo", - "Ivory", - "Khaki", - "Lavender", - "LavenderBlush", - "LawnGreen", - "LemonChiffon", - "LightBlue", - "LightCoral", - "LightCyan", - "LightGoldenRodYellow", - "LightGrey", - "LightGreen", - "LightPink", - "LightSalmon", - "LightSeaGreen", - "LightSkyBlue", - "LightSlateBlue", - "LightSlateGray", - "LightSteelBlue", - "LightYellow", - "Lime", - "LimeGreen", - "Linen", - "Magenta", - "Maroon", - "MediumAquaMarine", - "MediumBlue", - "MediumOrchid", - "MediumPurple", - "MediumSeaGreen", - "MediumSlateBlue", - "MediumSpringGreen", - "MediumTurquoise", - "MediumVioletRed", - "MidnightBlue", - "MintCream", - "MistyRose", - "Moccasin", - "NavajoWhite", - "Navy", - "OldLace", - "Olive", - "OliveDrab", - "Orange", - "OrangeRed", - "Orchid", - "PaleGoldenRod", - "PaleGreen", - "PaleTurquoise", - "PaleVioletRed", - "PapayaWhip", - "PeachPuff", - "Peru", - "Pink", - "Plum", - "PowderBlue", - "Purple", - "Red", - "RosyBrown", - "RoyalBlue", - "SaddleBrown", - "Salmon", - "SandyBrown", - "SeaGreen", - "SeaShell", - "Sienna", - "Silver", - "SkyBlue", - "SlateBlue", - "SlateGray", - "Snow", - "SpringGreen", - "SteelBlue", - "Tan", - "Teal", - "Thistle", - "Tomato", - "Turquoise", - "Violet", - "VioletRed", - "Wheat", - "White", - "WhiteSmoke", - "Yellow", - "YellowGreen", - "transparent", - "invert" - ], - - "auto": - [ - "auto" - ], - - "none": - [ - "none" - ], - - "captionSide": - [ - "top", - "bottom", - "left", - "right" - ], - - "clear": - [ - "left", - "right", - "both" - ], - - "cursor": - [ - "auto", - "cell", - "context-menu", - "crosshair", - "default", - "help", - "pointer", - "progress", - "move", - "e-resize", - "all-scroll", - "ne-resize", - "nw-resize", - "n-resize", - "se-resize", - "sw-resize", - "s-resize", - "w-resize", - "ew-resize", - "ns-resize", - "nesw-resize", - "nwse-resize", - "col-resize", - "row-resize", - "text", - "vertical-text", - "wait", - "alias", - "copy", - "move", - "no-drop", - "not-allowed", - "-moz-alias", - "-moz-cell", - "-moz-copy", - "-moz-grab", - "-moz-grabbing", - "-moz-contextmenu", - "-moz-zoom-in", - "-moz-zoom-out", - "-moz-spinning" - ], - - "direction": - [ - "ltr", - "rtl" - ], - - "bgAttachment": - [ - "scroll", - "fixed" - ], - - "bgPosition": - [ - "top", - "center", - "bottom", - "left", - "right" - ], - - "bgRepeat": - [ - "repeat", - "repeat-x", - "repeat-y", - "no-repeat" - ], - - "borderStyle": - [ - "hidden", - "dotted", - "dashed", - "solid", - "double", - "groove", - "ridge", - "inset", - "outset", - "-moz-bg-inset", - "-moz-bg-outset", - "-moz-bg-solid" - ], - - "borderCollapse": - [ - "collapse", - "separate" - ], - - "overflow": - [ - "visible", - "hidden", - "scroll", - "-moz-scrollbars-horizontal", - "-moz-scrollbars-none", - "-moz-scrollbars-vertical" - ], - - "listStyleType": - [ - "disc", - "circle", - "square", - "decimal", - "decimal-leading-zero", - "lower-roman", - "upper-roman", - "lower-greek", - "lower-alpha", - "lower-latin", - "upper-alpha", - "upper-latin", - "hebrew", - "armenian", - "georgian", - "cjk-ideographic", - "hiragana", - "katakana", - "hiragana-iroha", - "katakana-iroha", - "inherit" - ], - - "listStylePosition": - [ - "inside", - "outside" - ], - - "content": - [ - "open-quote", - "close-quote", - "no-open-quote", - "no-close-quote", - "inherit" - ], - - "fontStyle": - [ - "normal", - "italic", - "oblique", - "inherit" - ], - - "fontVariant": - [ - "normal", - "small-caps", - "inherit" - ], - - "fontWeight": - [ - "normal", - "bold", - "bolder", - "lighter", - "inherit" - ], - - "fontSize": - [ - "xx-small", - "x-small", - "small", - "medium", - "large", - "x-large", - "xx-large", - "smaller", - "larger" - ], - - "fontFamily": - [ - "Arial", - "Comic Sans MS", - "Georgia", - "Tahoma", - "Verdana", - "Times New Roman", - "Trebuchet MS", - "Lucida Grande", - "Helvetica", - "serif", - "sans-serif", - "cursive", - "fantasy", - "monospace", - "caption", - "icon", - "menu", - "message-box", - "small-caption", - "status-bar", - "inherit" - ], - - "display": - [ - "block", - "inline", - "inline-block", - "list-item", - "marker", - "run-in", - "compact", - "table", - "inline-table", - "table-row-group", - "table-column", - "table-column-group", - "table-header-group", - "table-footer-group", - "table-row", - "table-cell", - "table-caption", - "-moz-box", - "-moz-compact", - "-moz-deck", - "-moz-grid", - "-moz-grid-group", - "-moz-grid-line", - "-moz-groupbox", - "-moz-inline-block", - "-moz-inline-box", - "-moz-inline-grid", - "-moz-inline-stack", - "-moz-inline-table", - "-moz-marker", - "-moz-popup", - "-moz-runin", - "-moz-stack" - ], - - "position": - [ - "static", - "relative", - "absolute", - "fixed", - "inherit" - ], - - "float": - [ - "left", - "right" - ], - - "textAlign": - [ - "left", - "right", - "center", - "justify" - ], - - "tableLayout": - [ - "fixed" - ], - - "textDecoration": - [ - "underline", - "overline", - "line-through", - "blink" - ], - - "textTransform": - [ - "capitalize", - "lowercase", - "uppercase", - "inherit" - ], - - "unicodeBidi": - [ - "normal", - "embed", - "bidi-override" - ], - - "whiteSpace": - [ - "normal", - "pre", - "nowrap" - ], - - "verticalAlign": - [ - "baseline", - "sub", - "super", - "top", - "text-top", - "middle", - "bottom", - "text-bottom", - "inherit" - ], - - "thickness": - [ - "thin", - "medium", - "thick" - ], - - "userFocus": - [ - "ignore", - "normal" - ], - - "userInput": - [ - "disabled", - "enabled" - ], - - "userSelect": - [ - "normal" - ], - - "mozBoxSizing": - [ - "content-box", - "padding-box", - "border-box" - ], - - "mozBoxAlign": - [ - "start", - "center", - "end", - "baseline", - "stretch" - ], - - "mozBoxDirection": - [ - "normal", - "reverse" - ], - - "mozBoxOrient": - [ - "horizontal", - "vertical" - ], - - "mozBoxPack": - [ - "start", - "center", - "end" - ] -}; - -this.nonEditableTags = -{ - "HTML": 1, - "HEAD": 1, - "html": 1, - "head": 1 -}; - -this.innerEditableTags = -{ - "BODY": 1, - "body": 1 -}; - -this.selfClosingTags = -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML - "meta": 1, - "link": 1, - "area": 1, - "base": 1, - "col": 1, - "input": 1, - "img": 1, - "br": 1, - "hr": 1, - "param":1, - "embed":1 -}; - -var invisibleTags = this.invisibleTags = -{ - "HTML": 1, - "HEAD": 1, - "TITLE": 1, - "META": 1, - "LINK": 1, - "STYLE": 1, - "SCRIPT": 1, - "NOSCRIPT": 1, - "BR": 1, - "PARAM": 1, - "COL": 1, - - "html": 1, - "head": 1, - "title": 1, - "meta": 1, - "link": 1, - "style": 1, - "script": 1, - "noscript": 1, - "br": 1, - "param": 1, - "col": 1 - /* - "window": 1, - "browser": 1, - "frame": 1, - "tabbrowser": 1, - "WINDOW": 1, - "BROWSER": 1, - "FRAME": 1, - "TABBROWSER": 1, - */ -}; - - -if (typeof KeyEvent == "undefined") { - this.KeyEvent = { - DOM_VK_CANCEL: 3, - DOM_VK_HELP: 6, - DOM_VK_BACK_SPACE: 8, - DOM_VK_TAB: 9, - DOM_VK_CLEAR: 12, - DOM_VK_RETURN: 13, - DOM_VK_ENTER: 14, - DOM_VK_SHIFT: 16, - DOM_VK_CONTROL: 17, - DOM_VK_ALT: 18, - DOM_VK_PAUSE: 19, - DOM_VK_CAPS_LOCK: 20, - DOM_VK_ESCAPE: 27, - DOM_VK_SPACE: 32, - DOM_VK_PAGE_UP: 33, - DOM_VK_PAGE_DOWN: 34, - DOM_VK_END: 35, - DOM_VK_HOME: 36, - DOM_VK_LEFT: 37, - DOM_VK_UP: 38, - DOM_VK_RIGHT: 39, - DOM_VK_DOWN: 40, - DOM_VK_PRINTSCREEN: 44, - DOM_VK_INSERT: 45, - DOM_VK_DELETE: 46, - DOM_VK_0: 48, - DOM_VK_1: 49, - DOM_VK_2: 50, - DOM_VK_3: 51, - DOM_VK_4: 52, - DOM_VK_5: 53, - DOM_VK_6: 54, - DOM_VK_7: 55, - DOM_VK_8: 56, - DOM_VK_9: 57, - DOM_VK_SEMICOLON: 59, - DOM_VK_EQUALS: 61, - DOM_VK_A: 65, - DOM_VK_B: 66, - DOM_VK_C: 67, - DOM_VK_D: 68, - DOM_VK_E: 69, - DOM_VK_F: 70, - DOM_VK_G: 71, - DOM_VK_H: 72, - DOM_VK_I: 73, - DOM_VK_J: 74, - DOM_VK_K: 75, - DOM_VK_L: 76, - DOM_VK_M: 77, - DOM_VK_N: 78, - DOM_VK_O: 79, - DOM_VK_P: 80, - DOM_VK_Q: 81, - DOM_VK_R: 82, - DOM_VK_S: 83, - DOM_VK_T: 84, - DOM_VK_U: 85, - DOM_VK_V: 86, - DOM_VK_W: 87, - DOM_VK_X: 88, - DOM_VK_Y: 89, - DOM_VK_Z: 90, - DOM_VK_CONTEXT_MENU: 93, - DOM_VK_NUMPAD0: 96, - DOM_VK_NUMPAD1: 97, - DOM_VK_NUMPAD2: 98, - DOM_VK_NUMPAD3: 99, - DOM_VK_NUMPAD4: 100, - DOM_VK_NUMPAD5: 101, - DOM_VK_NUMPAD6: 102, - DOM_VK_NUMPAD7: 103, - DOM_VK_NUMPAD8: 104, - DOM_VK_NUMPAD9: 105, - DOM_VK_MULTIPLY: 106, - DOM_VK_ADD: 107, - DOM_VK_SEPARATOR: 108, - DOM_VK_SUBTRACT: 109, - DOM_VK_DECIMAL: 110, - DOM_VK_DIVIDE: 111, - DOM_VK_F1: 112, - DOM_VK_F2: 113, - DOM_VK_F3: 114, - DOM_VK_F4: 115, - DOM_VK_F5: 116, - DOM_VK_F6: 117, - DOM_VK_F7: 118, - DOM_VK_F8: 119, - DOM_VK_F9: 120, - DOM_VK_F10: 121, - DOM_VK_F11: 122, - DOM_VK_F12: 123, - DOM_VK_F13: 124, - DOM_VK_F14: 125, - DOM_VK_F15: 126, - DOM_VK_F16: 127, - DOM_VK_F17: 128, - DOM_VK_F18: 129, - DOM_VK_F19: 130, - DOM_VK_F20: 131, - DOM_VK_F21: 132, - DOM_VK_F22: 133, - DOM_VK_F23: 134, - DOM_VK_F24: 135, - DOM_VK_NUM_LOCK: 144, - DOM_VK_SCROLL_LOCK: 145, - DOM_VK_COMMA: 188, - DOM_VK_PERIOD: 190, - DOM_VK_SLASH: 191, - DOM_VK_BACK_QUOTE: 192, - DOM_VK_OPEN_BRACKET: 219, - DOM_VK_BACK_SLASH: 220, - DOM_VK_CLOSE_BRACKET: 221, - DOM_VK_QUOTE: 222, - DOM_VK_META: 224 - }; -} - - -// ************************************************************************************************ -// Ajax - -/** - * @namespace - */ -this.Ajax = -{ - - requests: [], - transport: null, - states: ["Uninitialized","Loading","Loaded","Interactive","Complete"], - - initialize: function() - { - this.transport = this.getXHRObject(); - }, - - getXHRObject: function() - { - var xhrObj = false; - try - { - xhrObj = new XMLHttpRequest(); - } - catch(e) - { - var progid = [ - "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", - "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" - ]; - - for ( var i=0; i < progid.length; ++i ) { - try - { - xhrObj = new ActiveXObject(progid[i]); - } - catch(e) - { - continue; - } - break; - } - } - finally - { - return xhrObj; - } - }, - - - /** - * Create a AJAX request. - * - * @name request - * @param {Object} options request options - * @param {String} options.url URL to be requested - * @param {String} options.type Request type ("get" ou "post"). Default is "get". - * @param {Boolean} options.async Asynchronous flag. Default is "true". - * @param {String} options.dataType Data type ("text", "html", "xml" or "json"). Default is "text". - * @param {String} options.contentType Content-type of the data being sent. Default is "application/x-www-form-urlencoded". - * @param {Function} options.onLoading onLoading callback - * @param {Function} options.onLoaded onLoaded callback - * @param {Function} options.onInteractive onInteractive callback - * @param {Function} options.onComplete onComplete callback - * @param {Function} options.onUpdate onUpdate callback - * @param {Function} options.onSuccess onSuccess callback - * @param {Function} options.onFailure onFailure callback - */ - request: function(options) - { - // process options - var o = FBL.extend( - { - // default values - type: "get", - async: true, - dataType: "text", - contentType: "application/x-www-form-urlencoded" - }, - options || {} - ); - - this.requests.push(o); - - var s = this.getState(); - if (s == "Uninitialized" || s == "Complete" || s == "Loaded") - this.sendRequest(); - }, - - serialize: function(data) - { - var r = [""], rl = 0; - if (data) { - if (typeof data == "string") r[rl++] = data; - - else if (data.innerHTML && data.elements) { - for (var i=0,el,l=(el=data.elements).length; i < l; i++) - if (el[i].name) { - r[rl++] = encodeURIComponent(el[i].name); - r[rl++] = "="; - r[rl++] = encodeURIComponent(el[i].value); - r[rl++] = "&"; - } - - } else - for(var param in data) { - r[rl++] = encodeURIComponent(param); - r[rl++] = "="; - r[rl++] = encodeURIComponent(data[param]); - r[rl++] = "&"; - } - } - return r.join("").replace(/&$/, ""); - }, - - sendRequest: function() - { - var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data; - - // open XHR object - t.open(r.type, r.url, r.async); - - //setRequestHeaders(); - - // indicates that it is a XHR request to the server - t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // if data is being sent, sets the appropriate content-type - if (data = FBL.Ajax.serialize(r.data)) - t.setRequestHeader("Content-Type", r.contentType); - - /** @ignore */ - // onreadystatechange handler - t.onreadystatechange = function() - { - FBL.Ajax.onStateChange(r); - }; - - // send the request - t.send(data); - }, - - /** - * Handles the state change - */ - onStateChange: function(options) - { - var fn, o = options, t = this.transport; - var state = this.getState(t); - - if (fn = o["on" + state]) fn(this.getResponse(o), o); - - if (state == "Complete") - { - var success = t.status == 200, response = this.getResponse(o); - - if (fn = o["onUpdate"]) - fn(response, o); - - if (fn = o["on" + (success ? "Success" : "Failure")]) - fn(response, o); - - t.onreadystatechange = FBL.emptyFn; - - if (this.requests.length > 0) - setTimeout(this.sendRequest, 10); - } - }, - - /** - * gets the appropriate response value according the type - */ - getResponse: function(options) - { - var t = this.transport, type = options.dataType; - - if (t.status != 200) return t.statusText; - else if (type == "text") return t.responseText; - else if (type == "html") return t.responseText; - else if (type == "xml") return t.responseXML; - else if (type == "json") return eval("(" + t.responseText + ")"); - }, - - /** - * returns the current state of the XHR object - */ - getState: function() - { - return this.states[this.transport.readyState]; - } - -}; - - -// ************************************************************************************************ -// Cookie, from http://www.quirksmode.org/js/cookies.html - -this.createCookie = function(name,value,days) -{ - if ('cookie' in document) - { - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - } - else - var expires = ""; - - document.cookie = name+"="+value+expires+"; path=/"; - } -}; - -this.readCookie = function (name) -{ - if ('cookie' in document) - { - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - for(var i=0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - } - - return null; -}; - -this.removeCookie = function(name) -{ - this.createCookie(name, "", -1); -}; - - -// ************************************************************************************************ -// http://www.mister-pixel.com/#Content__state=is_that_simple -var fixIE6BackgroundImageCache = function(doc) -{ - doc = doc || document; - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch(E) - { - - } -}; - -// ************************************************************************************************ -// calculatePixelsPerInch - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; - -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body) -{ - var inch = FBL.createGlobalElement("div"); - inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;"; - body.appendChild(inch); - - FBL.pixelsPerInch = { - x: inch.offsetWidth, - y: inch.offsetHeight - }; - - body.removeChild(inch); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceLink = function(url, line, type, object, instance) -{ - this.href = url; - this.instance = instance; - this.line = line; - this.type = type; - this.object = object; -}; - -this.SourceLink.prototype = -{ - toString: function() - { - return this.href; - }, - toJSON: function() // until 3.1... - { - return "{\"href\":\""+this.href+"\", "+ - (this.line?("\"line\":"+this.line+","):"")+ - (this.type?(" \"type\":\""+this.type+"\","):"")+ - "}"; - } - -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -this.SourceText = function(lines, owner) -{ - this.lines = lines; - this.owner = owner; -}; - -this.SourceText.getLineAsHTML = function(lineNo) -{ - return escapeForSourceLine(this.lines[lineNo-1]); -}; - - -// ************************************************************************************************ -}).apply(FBL); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-firebug */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; -var reps = []; - -var parentPanelMap = {}; - - -// ************************************************************************************************ -// Firebug - -/** - * @namespace describe Firebug - * @exports window.Firebug as Firebug - */ -window.Firebug = FBL.Firebug = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - version: "Firebug Lite 1.3.2", - revision: "$Revision: 9759 $", - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - modules: modules, - panelTypes: panelTypes, - panelTypeMap: panelTypeMap, - reps: reps, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Initialization - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application"); - - Firebug.browser = new Context(Env.browser); - Firebug.context = Firebug.browser; - - // Document must be cached before chrome initialization - cacheDocument(); - - if (Firebug.Inspector) - Firebug.Inspector.create(); - - if (FBL.processAllStyleSheets) - processAllStyleSheets(Firebug.browser.document); - - FirebugChrome.initialize(); - - dispatch(modules, "initialize", []); - - if (Env.onLoad) - { - var onLoad = Env.onLoad; - delete Env.onLoad; - - setTimeout(onLoad, 200); - } - }, - - shutdown: function() - { - if (Firebug.Inspector) - Firebug.Inspector.destroy(); - - dispatch(modules, "shutdown", []); - - var chromeMap = FirebugChrome.chromeMap; - - for (var name in chromeMap) - { - if (chromeMap.hasOwnProperty(name)) - { - chromeMap[name].destroy(); - } - } - - Firebug.Lite.Cache.Element.clear(); - Firebug.Lite.Cache.StyleSheet.clear(); - - Firebug.browser = null; - Firebug.context = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - modules.push.apply(modules, arguments); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - panelTypeMap[panelType.prototype.name] = arguments[i]; - - if (panelType.prototype.parentPanel) - parentPanelMap[panelType.prototype.parentPanel] = 1; - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - }, - - registerRep: function() - { - reps.push.apply(reps, arguments); - }, - - unregisterRep: function() - { - for (var i = 0; i < arguments.length; ++i) - remove(reps, arguments[i]); - }, - - setDefaultReps: function(funcRep, rep) - { - FBL.defaultRep = rep; - FBL.defaultFuncRep = funcRep; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Reps - - getRep: function(object) - { - var type = typeof object; - if (isIE && isFunction(object)) - type = "function"; - - for (var i = 0; i < reps.length; ++i) - { - var rep = reps[i]; - try - { - if (rep.supportsObject(object, type)) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("getRep type: "+type+" object: "+object, rep); - return rep; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc); - FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className); - // TODO: xxxpedro add trace to FBTrace logs like in Firebug - //firebug.trace(); - } - } - } - - return (type == 'function') ? defaultFuncRep : defaultRep; - }, - - getRepObject: function(node) - { - var target = null; - for (var child = node; child; child = child.parentNode) - { - if (hasClass(child, "repTarget")) - target = child; - - if (child.repObject) - { - if (!target && hasClass(child, "repIgnore")) - break; - else - return child.repObject; - } - } - }, - - getRepNode: function(node) - { - for (var child = node; child; child = child.parentNode) - { - if (child.repObject) - return child; - } - }, - - getElementByRepObject: function(element, object) - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (child.repObject == object) - return child; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Preferences - - getPref: function(name) - { - return Firebug[name]; - }, - - setPref: function(name, value) - { - Firebug[name] = value; - - this.savePrefs(); - }, - - setPrefs: function(prefs) - { - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - - this.savePrefs(); - }, - - restorePrefs: function() - { - var Options = Env.Options; - - for (var name in Options) - { - Firebug[name] = Options[name]; - } - }, - - loadPrefs: function(prefs) - { - this.restorePrefs(); - - prefs = prefs || eval("(" + readCookie("FirebugLite") + ")"); - - for (var name in prefs) - { - if (prefs.hasOwnProperty(name)) - Firebug[name] = prefs[name]; - } - }, - - savePrefs: function() - { - var json = ['{'], jl = 0; - var Options = Env.Options; - - for (var name in Options) - { - if (Options.hasOwnProperty(name)) - { - var value = Firebug[name]; - - json[++jl] = '"'; - json[++jl] = name; - - var type = typeof value; - if (type == "boolean" || type == "number") - { - json[++jl] = '":'; - json[++jl] = value; - json[++jl] = ','; - } - else - { - json[++jl] = '":"'; - json[++jl] = value; - json[++jl] = '",'; - } - } - } - - json.length = jl--; - json[++jl] = '}'; - - createCookie("FirebugLite", json.join("")); - }, - - erasePrefs: function() - { - removeCookie("FirebugLite"); - } -}; - -Firebug.restorePrefs(); - -if (!Env.Options.enablePersistent || - Env.Options.enablePersistent && Env.isChromeContext || - Env.isDebugMode) - Env.browser.window.Firebug = FBL.Firebug; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Other methods - -FBL.cacheDocument = function cacheDocument() -{ - var ElementCache = Firebug.Lite.Cache.Element; - var els = Firebug.browser.document.getElementsByTagName("*"); - for (var i=0, l=els.length, el; iFirebug.registerModule method. There is always one instance of a module object - * per browser window. - * @extends Firebug.Listener - */ -Firebug.Module = extend(new Firebug.Listener(), -/** @extend Firebug.Module */ -{ - /** - * Called when the window is opened. - */ - initialize: function() - { - }, - - /** - * Called when the window is closed. - */ - shutdown: function() - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when a new context is created but before the page is loaded. - */ - initContext: function(context) - { - }, - - /** - * Called after a context is detached to a separate window; - */ - reattachContext: function(browser, context) - { - }, - - /** - * Called when a context is destroyed. Module may store info on persistedState for reloaded pages. - */ - destroyContext: function(context, persistedState) - { - }, - - // Called when a FF tab is create or activated (user changes FF tab) - // Called after context is created or with context == null (to abort?) - showContext: function(browser, context) - { - }, - - /** - * Called after a context's page gets DOMContentLoaded - */ - loadedContext: function(context) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - showPanel: function(browser, panel) - { - }, - - showSidePanel: function(browser, panel) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateOption: function(name, value) - { - }, - - getObjectByURL: function(context, url) - { - } -}); - -// ************************************************************************************************ -// Panel - -/** - * @panel Base class for all panels. Every derived panel must define a constructor and - * register with "Firebug.registerPanel" method. An instance of the panel - * object is created by the framework for each browser tab where Firebug is activated. - */ -Firebug.Panel = -{ - name: "HelloWorld", - title: "Hello World!", - - parentPanel: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - options: { - hasCommandLine: false, - hasStatusBar: false, - hasToolButtons: false, - - // Pre-rendered panels are those included in the skin file (firebug.html) - isPreRendered: false, - innerHTMLSync: false - - /* - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // To be used by external extensions - panelHTML: "", - panelCSS: "", - - toolButtonsHTML: "" - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - tabNode: null, - panelNode: null, - sidePanelNode: null, - statusBarNode: null, - toolButtonsNode: null, - - panelBarNode: null, - - sidePanelBarBoxNode: null, - sidePanelBarNode: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - sidePanelBar: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - searchable: false, - editable: true, - order: 2147483647, - statusSeparator: "<", - - create: function(context, doc) - { - this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); - - this.panelBarNode = $("fbPanelBar1"); - this.sidePanelBarBoxNode = $("fbPanelBar2"); - - if (this.hasSidePanel) - { - this.sidePanelBar = extend({}, PanelBar); - this.sidePanelBar.create(this); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - if (options.isPreRendered) - { - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - } - else - { - var containerSufix = this.parentPanel ? "2" : "1"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel - var panelNode = this.panelNode = createElement("div", { - id: panelId, - className: "fbPanel" - }); - - $("fbPanel" + containerSufix).appendChild(panelNode); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Create Panel Tab - var tabHTML = '' + - this.title + ''; - - var tabNode = this.tabNode = createElement("a", { - id: panelId + "Tab", - className: "fbTab fbHover", - innerHTML: tabHTML - }); - - if (isIE6) - { - tabNode.href = "javascript:void(0)"; - } - - var panelBarNode = this.parentPanel ? - Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode : - this.panelBarNode; - - panelBarNode.appendChild(tabNode); - tabNode.style.display = "block"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create ToolButtons - if (options.hasToolButtons) - { - this.toolButtonsNode = createElement("span", { - id: panelId + "Buttons", - className: "fbToolbarButtons" - }); - - $("fbToolbarButtons").appendChild(this.toolButtonsNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create StatusBar - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - - this.statusBarNode = createElement("span", { - id: panelId + "StatusBar", - className: "fbToolbarButtons fbStatusBar" - }); - - this.statusBarBox.appendChild(this.statusBarNode); - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create SidePanel - } - - this.containerNode = this.panelNode.parentNode; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name); - - // xxxpedro contextMenu - this.onContextMenu = bind(this.onContextMenu, this); - - /* - this.context = context; - this.document = doc; - - this.panelNode = doc.createElement("div"); - this.panelNode.ownerPanel = this; - - setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid); - doc.body.appendChild(this.panelNode); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n"); - - this.initializeNode(this.panelNode); - /**/ - }, - - destroy: function(state) // Panel may store info on state - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name); - - if (this.hasSidePanel) - { - this.sidePanelBar.destroy(); - this.sidePanelBar = null; - } - - this.options = null; - this.name = null; - this.parentPanel = null; - - this.tabNode = null; - this.panelNode = null; - this.containerNode = null; - - this.toolButtonsNode = null; - this.statusBarBox = null; - this.statusBarNode = null; - - //if (this.panelNode) - // delete this.panelNode.ownerPanel; - - //this.destroyNode(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - this.sidePanelBar.initialize(); - } - - var options = this.options = extend(Firebug.Panel.options, this.options); - var panelId = "fb" + this.name; - - this.panelNode = $(panelId); - - this.tabNode = $(panelId + "Tab"); - this.tabNode.style.display = "block"; - - if (options.hasStatusBar) - { - this.statusBarBox = $("fbStatusBarBox"); - this.statusBarNode = $(panelId + "StatusBar"); - } - - if (options.hasToolButtons) - { - this.toolButtonsNode = $(panelId + "Buttons"); - } - - this.containerNode = this.panelNode.parentNode; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // restore persistent state - this.containerNode.scrollTop = this.lastScrollTop; - - // xxxpedro contextMenu - addEvent(this.containerNode, "contextmenu", this.onContextMenu); - - - /// TODO: xxxpedro infoTip Hack - Firebug.chrome.currentPanel = - Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : - Firebug.chrome.selectedPanel; - - Firebug.showInfoTips = true; - Firebug.InfoTip.initializeBrowser(Firebug.chrome); - }, - - shutdown: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name); - - /// TODO: xxxpedro infoTip Hack - Firebug.InfoTip.uninitializeBrowser(Firebug.chrome); - - if (Firebug.chrome.largeCommandLineVisible) - Firebug.chrome.hideLargeCommandLine(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (this.hasSidePanel) - { - // TODO: xxxpedro firebug1.3a6 - // new PanelBar mechanism will need to call shutdown to hide the panels (so it - // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement - // a "remember selected panel" feature in the sidePanelBar - //this.sidePanelBar.shutdown(); - } - - // store persistent state - this.lastScrollTop = this.containerNode.scrollTop; - - // xxxpedro contextMenu - removeEvent(this.containerNode, "contextmenu", this.onContextMenu); - }, - - detach: function(oldChrome, newChrome) - { - if (oldChrome.selectedPanel.name == this.name) - this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop; - }, - - reattach: function(doc) - { - if (this.options.innerHTMLSync) - this.synchronizeUI(); - }, - - synchronizeUI: function() - { - this.containerNode.scrollTop = this.lastScrollTop || 0; - }, - - show: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "inline"; - this.statusBarNode.style.display = "inline"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "inline"; - } - - this.panelNode.style.display = "block"; - - this.visible = true; - - if (!this.parentPanel) - Firebug.chrome.layout(this); - }, - - hide: function(state) - { - var options = this.options; - - if (options.hasStatusBar) - { - this.statusBarBox.style.display = "none"; - this.statusBarNode.style.display = "none"; - } - - if (options.hasToolButtons) - { - this.toolButtonsNode.style.display = "none"; - } - - this.panelNode.style.display = "none"; - - this.visible = false; - }, - - watchWindow: function(win) - { - }, - - unwatchWindow: function(win) - { - }, - - updateOption: function(name, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Toolbar helpers - */ - showToolbarButtons: function(buttonsId, show) - { - try - { - if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext. - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this); - - return; - } - var buttons = this.context.browser.chrome.$(buttonsId); - if (buttons) - collapse(buttons, show ? "false" : "true"); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc); - if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser"); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Returns a number indicating the view's ability to inspect the object. - * - * Zero means not supported, and higher numbers indicate specificity. - */ - supportsObject: function(object) - { - return 0; - }, - - hasObject: function(object) // beyond type testing, is this object selectable? - { - return false; - }, - - select: function(object, forceUpdate) - { - if (!object) - object = this.getDefaultSelection(this.context); - - if(FBTrace.DBG_PANELS) - FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection); - - if (forceUpdate || object != this.selection) - { - this.selection = object; - this.updateSelection(object); - - // TODO: xxxpedro - // XXXjoe This is kind of cheating, but, feh. - //Firebug.chrome.onPanelSelect(object, this); - //if (uiListeners.length > 0) - // dispatch(uiListeners, "onPanelSelect", [object, this]); // TODO: make Firebug.chrome a uiListener - } - }, - - updateSelection: function(object) - { - }, - - markChange: function(skipSelf) - { - if (this.dependents) - { - if (skipSelf) - { - for (var i = 0; i < this.dependents.length; ++i) - { - var panelName = this.dependents[i]; - if (panelName != this.name) - this.context.invalidatePanels(panelName); - } - } - else - this.context.invalidatePanels.apply(this.context, this.dependents); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - startInspecting: function() - { - }, - - stopInspecting: function(object, cancelled) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - search: function(text, reverse) - { - }, - - /** - * Retrieves the search options that this modules supports. - * This is used by the search UI to present the proper options. - */ - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive") - ]; - }, - - /** - * Navigates to the next document whose match parameter returns true. - */ - navigateToNextDocument: function(match, reverse) - { - // This is an approximation of the UI that is displayed by the location - // selector. This should be close enough, although it may be better - // to simply generate the sorted list within the module, rather than - // sorting within the UI. - var self = this; - function compare(a, b) { - var locA = self.getObjectDescription(a); - var locB = self.getObjectDescription(b); - if(locA.path > locB.path) - return 1; - if(locA.path < locB.path) - return -1; - if(locA.name > locB.name) - return 1; - if(locA.name < locB.name) - return -1; - return 0; - } - var allLocs = this.getLocationList().sort(compare); - for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++); - - function transformIndex(index) { - if (reverse) { - // For the reverse case we need to implement wrap around. - var intermediate = curPos - index - 1; - return (intermediate < 0 ? allLocs.length : 0) + intermediate; - } else { - return (curPos + index + 1) % allLocs.length; - } - }; - - for (var next = 0; next < allLocs.length - 1; next++) - { - var object = allLocs[transformIndex(next)]; - - if (match(object)) - { - this.navigate(object); - return object; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // Called when "Options" clicked. Return array of - // {label: 'name', nol10n: true, type: "checkbox", checked: , command:function to set } - getOptionsMenuItems: function() - { - return null; - }, - - /* - * Called by chrome.onContextMenu to build the context menu when this panel has focus. - * See also FirebugRep for a similar function also called by onContextMenu - * Extensions may monkey patch and chain off this call - * @param object: the 'realObject', a model value, eg a DOM property - * @param target: the HTML element clicked on. - * @return an array of menu items. - */ - getContextMenuItems: function(object, target) - { - return []; - }, - - getBreakOnMenuItems: function() - { - return []; - }, - - getEditor: function(target, value) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getDefaultSelection: function() - { - return null; - }, - - browseObject: function(object) - { - }, - - getPopupObject: function(target) - { - return Firebug.getRepObject(target); - }, - - getTooltipObject: function(target) - { - return Firebug.getRepObject(target); - }, - - showInfoTip: function(infoTip, x, y) - { - - }, - - getObjectPath: function(object) - { - return null; - }, - - // An array of objects that can be passed to getObjectLocation. - // The list of things a panel can show, eg sourceFiles. - // Only shown if panel.location defined and supportsObject true - getLocationList: function() - { - return null; - }, - - getDefaultLocation: function() - { - return null; - }, - - getObjectLocation: function(object) - { - return ""; - }, - - // Text for the location list menu eg script panel source file list - // return.path: group/category label, return.name: item label - getObjectDescription: function(object) - { - var url = this.getObjectLocation(object); - return FBL.splitURLBase(url); - }, - - /* - * UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint - * @param: show boolean, true turns on. - */ - highlight: function(show) - { - var tab = this.getTab(); - if (!tab) - return; - - if (show) - tab.setAttribute("highlight", "true"); - else - tab.removeAttribute("highlight"); - }, - - getTab: function() - { - var chrome = Firebug.chrome; - - var tab = chrome.$("fbPanelBar2").getTab(this.name); - if (!tab) - tab = chrome.$("fbPanelBar1").getTab(this.name); - return tab; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for Break On Next - - /** - * Called by the framework when the user clicks on the Break On Next button. - * @param {Boolean} armed Set to true if the Break On Next feature is - * to be armed for action and set to false if the Break On Next should be disarmed. - * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|. - */ - breakOnNext: function(armed) - { - }, - - /** - * Called when a panel is selected/displayed. The method should return true - * if the Break On Next feature is currently armed for this panel. - */ - shouldBreakOnNext: function() - { - return false; - }, - - /** - * Returns labels for Break On Next tooltip (one for enabled and one for disabled state). - * @param {Boolean} enabled Set to true if the Break On Next feature is - * currently activated for this panel. - */ - getBreakOnNextTooltip: function(enabled) - { - return null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // xxxpedro contextMenu - onContextMenu: function(event) - { - if (!this.getContextMenuItems) - return; - - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - var menu = this.getContextMenuItems(this.selection, target); - if (!menu) - return; - - var contextMenu = new Menu( - { - id: "fbPanelContextMenu", - - items: menu - }); - - contextMenu.show(event.clientX, event.clientY); - - return true; - - /* - // TODO: xxxpedro move code to somewhere. code to get cross-browser - // window to screen coordinates - var box = Firebug.browser.getElementPosition(Firebug.chrome.node); - - var screenY = 0; - - // Firefox - if (typeof window.mozInnerScreenY != "undefined") - { - screenY = window.mozInnerScreenY; - } - // Chrome - else if (typeof window.innerHeight != "undefined") - { - screenY = window.outerHeight - window.innerHeight; - } - // IE - else if (typeof window.screenTop != "undefined") - { - screenY = window.screenTop; - } - - contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top); - /**/ - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * MeasureBox - * To get pixels size.width and size.height: - *
                                • this.startMeasuring(view);
                                • - *
                                • var size = this.measureText(lineNoCharsSpacer);
                                • - *
                                • this.stopMeasuring();
                                • - *
                                - * - * @namespace - */ -Firebug.MeasureBox = -{ - startMeasuring: function(target) - { - if (!this.measureBox) - { - this.measureBox = target.ownerDocument.createElement("span"); - this.measureBox.className = "measureBox"; - } - - copyTextStyles(target, this.measureBox); - target.ownerDocument.body.appendChild(this.measureBox); - }, - - getMeasuringElement: function() - { - return this.measureBox; - }, - - measureText: function(value) - { - this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m"; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - measureInputText: function(value) - { - value = value ? escapeForTextNode(value) : "m"; - if (!Firebug.showTextNodesWithWhitespace) - value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m'); - this.measureBox.innerHTML = value; - return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1}; - }, - - getBox: function(target) - { - var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, ""); - var box = getBoxFromStyles(style, this.measureBox); - return box; - }, - - stopMeasuring: function() - { - this.measureBox.parentNode.removeChild(this.measureBox); - } -}; - - -// ************************************************************************************************ -if (FBL.domplate) Firebug.Rep = domplate( -{ - className: "", - inspectable: true, - - supportsObject: function(object, type) - { - return false; - }, - - inspectObject: function(object, context) - { - Firebug.chrome.select(object); - }, - - browseObject: function(object, context) - { - }, - - persistObject: function(object, context) - { - }, - - getRealObject: function(object, context) - { - return object; - }, - - getTitle: function(object) - { - var label = safeToString(object); - - var re = /\[object (.*?)\]/; - var m = re.exec(label); - - ///return m ? m[1] : label; - - // if the label is in the "[object TYPE]" format return its type - if (m) - { - return m[1]; - } - // if it is IE we need to handle some special cases - else if ( - // safeToString() fails to recognize some objects in IE - isIE && - // safeToString() returns "[object]" for some objects like window.Image - (label == "[object]" || - // safeToString() returns undefined for some objects like window.clientInformation - typeof object == "object" && typeof label == "undefined") - ) - { - return "Object"; - } - else - { - return label; - } - }, - - getTooltip: function(object) - { - return null; - }, - - getContextMenuItems: function(object, target, context) - { - return []; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Convenience for domplates - - STR: function(name) - { - return $STR(name); - }, - - cropString: function(text) - { - return cropString(text); - }, - - cropMultipleLines: function(text, limit) - { - return cropMultipleLines(text, limit); - }, - - toLowerCase: function(text) - { - return text ? text.toLowerCase() : text; - }, - - plural: function(n) - { - return n == 1 ? "" : "s"; - } -}); - -// ************************************************************************************************ - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - FirebugChrome.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0 - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - } - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Window Options - -var WindowDefaultOptions = - { - type: "frame", - id: "FirebugUI", - height: 250 - }, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Instantiated objects - - commandLine, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Interface Elements Cache - - fbTop, - fbContent, - fbContentStyle, - fbBottom, - fbBtnInspect, - - fbToolbar, - - fbPanelBox1, - fbPanelBox1Style, - fbPanelBox2, - fbPanelBox2Style, - fbPanelBar2Box, - fbPanelBar2BoxStyle, - - fbHSplitter, - fbVSplitter, - fbVSplitterStyle, - - fbPanel1, - fbPanel1Style, - fbPanel2, - fbPanel2Style, - - fbConsole, - fbConsoleStyle, - fbHTML, - - fbCommandLine, - fbLargeCommandLine, - fbLargeCommandButtons, - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Cached size values - - topHeight, - topPartialHeight, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastSelectedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLineState = 0, - lastFocusedPanelName, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastHSplitterMouseMove = 0, - onHSplitterMouseMoveBuffer = null, - onHSplitterMouseMoveTimer = null, - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - lastVSplitterMouseMove = 0; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// FirebugChrome - -/**@namespace*/ -FBL.FirebugChrome = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - isOpen: false, - height: 250, - sidePanelWidth: 350, - - selectedPanelName: "Console", - selectedHTMLElementId: null, - - chromeMap: {}, - - htmlSelectionStack: [], - consoleMessageQueue: [], - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window"); - - createChromeWindow(); - }, - - initialize: function() - { - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window"); - - if (Env.chrome.type == "frame" || Env.chrome.type == "div") - ChromeMini.create(Env.chrome); - - var chrome = Firebug.chrome = new Chrome(Env.chrome); - FirebugChrome.chromeMap[chrome.type] = chrome; - - addGlobalEvent("keydown", onGlobalKeyDown); - - if (Env.Options.enablePersistent && chrome.type == "popup") - { - // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode - var frame = FirebugChrome.chromeMap.frame; - if (frame) - frame.close(); - - //chrome.reattach(frame, chrome); - //TODO: xxxpedro persist synchronize? - chrome.initialize(); - } - }, - - clone: function(FBChrome) - { - for (var name in FBChrome) - { - var prop = FBChrome[name]; - if (FBChrome.hasOwnProperty(name) && !isFunction(prop)) - { - this[name] = prop; - } - } - } -}; - - - -// ************************************************************************************************ -// Chrome Window Creation - -var createChromeWindow = function(options) -{ - options = extend(WindowDefaultOptions, options || {}); - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Locals - - var chrome = {}, - - context = options.context || Env.browser, - - type = chrome.type = Env.Options.enablePersistent ? - "popup" : - options.type, - - isChromeFrame = type == "frame", - - useLocalSkin = Env.useLocalSkin, - - url = useLocalSkin ? - Env.Location.skin : - "about:blank", - - // document.body not available in XML+XSL documents in Firefox - body = context.document.getElementsByTagName("body")[0], - - formatNode = function(node) - { - if (!Env.isDebugMode) - { - node.firebugIgnore = true; - } - - node.style.border = "0"; - node.style.visibility = "hidden"; - node.style.zIndex = "2147483647"; // MAX z-index = 2147483647 - node.style.position = noFixedPosition ? "absolute" : "fixed"; - node.style.width = "100%"; // "102%"; IE auto margin bug - node.style.left = "0"; - node.style.bottom = noFixedPosition ? "-1px" : "0"; - node.style.height = options.height + "px"; - - // avoid flickering during chrome rendering - if (isFirefox) - node.style.display = "none"; - }, - - createChromeDiv = function() - { - //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed."); - - var node = chrome.node = createGlobalElement("div"), - style = createGlobalElement("style"), - - css = FirebugChrome.Skin.CSS - /* - .replace(/;/g, " !important;") - .replace(/!important\s!important/g, "!important") - .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/, - - // reset some styles to minimize interference from the main page's style - rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" + - // load the chrome styles - css + - // adjust some remaining styles - ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}"; - /* - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - rules += ".fbBody table.fbChrome{position: static !important;}"; - }/**/ - - style.type = "text/css"; - - if (style.styleSheet) - style.styleSheet.cssText = rules; - else - style.appendChild(context.document.createTextNode(rules)); - - document.getElementsByTagName("head")[0].appendChild(style); - - node.className = "fbBody"; - node.style.overflow = "hidden"; - node.innerHTML = getChromeDivTemplate(); - - if (isIE) - { - // IE7 CSS bug (FbChrome table bigger than its parent div) - setTimeout(function(){ - node.firstChild.style.height = "1px"; - node.firstChild.style.position = "static"; - },0); - /**/ - } - - formatNode(node); - - body.appendChild(node); - - chrome.window = window; - chrome.document = document; - onChromeLoad(chrome); - }; - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - try - { - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "div" (windowless mode) - if (type == "div") - { - createChromeDiv(); - return; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // cretate the Chrome as an "iframe" - else if (isChromeFrame) - { - // Create the Chrome Frame - var node = chrome.node = createGlobalElement("iframe"); - node.setAttribute("src", url); - node.setAttribute("frameBorder", "0"); - - formatNode(node); - - body.appendChild(node); - - // must set the id after appending to the document, otherwise will cause an - // strange error in IE, making the iframe load the page in which the bookmarklet - // was created (like getfirebug.com), before loading the injected UI HTML, - // generating an "Access Denied" error. - node.id = options.id; - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the Chrome as a "popup" - else - { - var height = FirebugChrome.height || options.height, - - options = [ - "true,top=", - Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0), - ",left=0,height=", - height, - ",width=", - screen.availWidth-10, // Opera opens popup in a new tab if it's too big! - ",resizable" - ].join(""), - - node = chrome.node = context.window.open( - url, - "popup", - options - ); - - if (node) - { - try - { - node.focus(); - } - catch(E) - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - else - { - alert("Firebug Error: Firebug popup was blocked."); - return; - } - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inject the interface HTML if it is not using the local skin - - if (!useLocalSkin) - { - var tpl = getChromeTemplate(!isChromeFrame), - doc = isChromeFrame ? node.contentWindow.document : node.document; - - doc.write(tpl); - doc.close(); - } - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Wait the Window to be loaded - - var win, - - waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100, - - waitForWindow = function() - { - if ( // Frame loaded... OR - isChromeFrame && (win=node.contentWindow) && - node.contentWindow.document.getElementById("fbCommandLine") || - - // Popup loaded - !isChromeFrame && (win=node.window) && node.document && - node.document.getElementById("fbCommandLine") ) - { - chrome.window = win.window; - chrome.document = win.document; - - // Prevent getting the wrong chrome height in FF when opening a popup - setTimeout(function(){ - onChromeLoad(chrome); - },0); - } - else - setTimeout(waitForWindow, waitDelay); - }; - - waitForWindow(); - } - catch(e) - { - var msg = e.message || e; - - if (/access/i.test(msg)) - { - // Firebug Lite could not create a window for its Graphical User Interface due to - // a access restriction. This happens in some pages, when loading via bookmarklet. - // In such cases, the only way is to load the GUI in a "windowless mode". - - if (isChromeFrame) - body.removeChild(node); - else if(type == "popup") - node.close(); - - // Load the GUI in a "windowless mode" - createChromeDiv(); - } - else - { - alert("Firebug Error: Firebug GUI could not be created."); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var onChromeLoad = function onChromeLoad(chrome) -{ - Env.chrome = chrome; - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded"); - - if (Env.Options.enablePersistent) - { - // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode - Env.FirebugChrome = FirebugChrome; - - chrome.window.Firebug = chrome.window.Firebug || {}; - chrome.window.Firebug.SharedEnv = Env; - - if (Env.isDevelopmentMode) - { - Env.browser.window.FBDev.loadChromeApplication(chrome); - } - else - { - var doc = chrome.document; - var script = doc.createElement("script"); - script.src = Env.Location.app + "#remote,persist"; - doc.getElementsByTagName("head")[0].appendChild(script); - } - } - else - { - if (chrome.type == "frame" || chrome.type == "div") - { - // initialize the chrome application - setTimeout(function(){ - FBL.Firebug.initialize(); - },0); - } - else if (chrome.type == "popup") - { - var oldChrome = FirebugChrome.chromeMap.frame; - - var newChrome = new Chrome(chrome); - - // TODO: xxxpedro sync detach reattach attach - dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]); - - if (oldChrome) - oldChrome.close(); - - newChrome.reattach(oldChrome, newChrome); - } - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var getChromeDivTemplate = function() -{ - return FirebugChrome.Skin.HTML; -}; - -var getChromeTemplate = function(isPopup) -{ - var tpl = FirebugChrome.Skin; - var r = [], i = -1; - - r[++i] = ''; - r[++i] = ''; - r[++i] = Firebug.version; - - /* - r[++i] = ''; - /**/ - - r[++i] = ''; - /**/ - - r[++i] = ''; - r[++i] = tpl.HTML; - r[++i] = ''; - - return r.join(""); -}; - - -// ************************************************************************************************ -// Chrome Class - -/**@class*/ -var Chrome = function Chrome(chrome) -{ - var type = chrome.type; - var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; - - append(this, Base); // inherit from base class (ChromeFrameBase or ChromePopupBase) - append(this, chrome); // inherit chrome window properties - append(this, new Context(chrome.window)); // inherit from Context class - - FirebugChrome.chromeMap[type] = this; - Firebug.chrome = this; - Env.chrome = chrome.window; - - this.commandLineVisible = false; - this.sidePanelVisible = false; - - this.create(); - - return this; -}; - -// ************************************************************************************************ -// ChromeBase - -/** - * @namespace - * @extends FBL.Controller - * @extends FBL.PanelBar - **/ -var ChromeBase = {}; -append(ChromeBase, Controller); -append(ChromeBase, PanelBar); -append(ChromeBase, -/**@extend ns-chrome-ChromeBase*/ -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited properties - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from createChrome function - - node: null, - type: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // inherited from Context.prototype - - document: null, - window: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // value properties - - sidePanelVisible: false, - commandLineVisible: false, - largeCommandLineVisible: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // object properties - - inspectButton: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function() - { - PanelBar.create.call(this); - - if (Firebug.Inspector) - this.inspectButton = new Button({ - type: "toggle", - element: $("fbChrome_btInspect"), - owner: Firebug.Inspector, - - onPress: Firebug.Inspector.startInspecting, - onUnpress: Firebug.Inspector.stopInspecting - }); - }, - - destroy: function() - { - if(Firebug.Inspector) - this.inspectButton.destroy(); - - PanelBar.destroy.call(this); - - this.shutdown(); - }, - - testMenu: function() - { - var firebugMenu = new Menu( - { - id: "fbFirebugMenu", - - items: - [ - { - label: "Open Firebug", - type: "shortcut", - key: isFirefox ? "Shift+F12" : "F12", - checked: true, - command: "toggleChrome" - }, - { - label: "Open Firebug in New Window", - type: "shortcut", - key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12", - command: "openPopup" - }, - { - label: "Inspect Element", - type: "shortcut", - key: "Ctrl+Shift+C", - command: "toggleInspect" - }, - { - label: "Command Line", - type: "shortcut", - key: "Ctrl+Shift+L", - command: "focusCommandLine" - }, - "-", - { - label: "Options", - type: "group", - child: "fbFirebugOptionsMenu" - }, - "-", - { - label: "Firebug Lite Website...", - command: "visitWebsite" - }, - { - label: "Discussion Group...", - command: "visitDiscussionGroup" - }, - { - label: "Issue Tracker...", - command: "visitIssueTracker" - } - ], - - onHide: function() - { - iconButton.restore(); - }, - - toggleChrome: function() - { - Firebug.chrome.toggle(); - }, - - openPopup: function() - { - Firebug.chrome.toggle(true, true); - }, - - toggleInspect: function() - { - Firebug.Inspector.toggleInspect(); - }, - - focusCommandLine: function() - { - Firebug.chrome.focusCommandLine(); - }, - - visitWebsite: function() - { - this.visit("http://getfirebug.com/lite.html"); - }, - - visitDiscussionGroup: function() - { - this.visit("http://groups.google.com/group/firebug"); - }, - - visitIssueTracker: function() - { - this.visit("http://code.google.com/p/fbug/issues/list"); - }, - - visit: function(url) - { - window.open(url); - } - - }); - - /**@private*/ - var firebugOptionsMenu = - { - id: "fbFirebugOptionsMenu", - - getItems: function() - { - var cookiesDisabled = !Firebug.saveCookies; - - return [ - { - label: "Save Options in Cookies", - type: "checkbox", - value: "saveCookies", - checked: Firebug.saveCookies, - command: "saveOptions" - }, - "-", - { - label: "Start Opened", - type: "checkbox", - value: "startOpened", - checked: Firebug.startOpened, - disabled: cookiesDisabled - }, - { - label: "Start in New Window", - type: "checkbox", - value: "startInNewWindow", - checked: Firebug.startInNewWindow, - disabled: cookiesDisabled - }, - { - label: "Show Icon When Hidden", - type: "checkbox", - value: "showIconWhenHidden", - checked: Firebug.showIconWhenHidden, - disabled: cookiesDisabled - }, - { - label: "Override Console Object", - type: "checkbox", - value: "overrideConsole", - checked: Firebug.overrideConsole, - disabled: cookiesDisabled - }, - { - label: "Ignore Firebug Elements", - type: "checkbox", - value: "ignoreFirebugElements", - checked: Firebug.ignoreFirebugElements, - disabled: cookiesDisabled - }, - { - label: "Disable When Firebug Active", - type: "checkbox", - value: "disableWhenFirebugActive", - checked: Firebug.disableWhenFirebugActive, - disabled: cookiesDisabled - }, - { - label: "Disable XHR Listener", - type: "checkbox", - value: "disableXHRListener", - checked: Firebug.disableXHRListener, - disabled: cookiesDisabled - }, - { - label: "Enable Trace Mode", - type: "checkbox", - value: "enableTrace", - checked: Firebug.enableTrace, - disabled: cookiesDisabled - }, - { - label: "Enable Persistent Mode (experimental)", - type: "checkbox", - value: "enablePersistent", - checked: Firebug.enablePersistent, - disabled: cookiesDisabled - }, - "-", - { - label: "Reset All Firebug Options", - command: "restorePrefs", - disabled: cookiesDisabled - } - ]; - }, - - onCheck: function(target, value, checked) - { - Firebug.setPref(value, checked); - }, - - saveOptions: function(target) - { - var saveEnabled = target.getAttribute("checked"); - - if (!saveEnabled) this.restorePrefs(); - - this.updateMenu(target); - - return false; - }, - - restorePrefs: function(target) - { - Firebug.restorePrefs(); - - if(Firebug.saveCookies) - Firebug.savePrefs(); - else - Firebug.erasePrefs(); - - if (target) - this.updateMenu(target); - - return false; - }, - - updateMenu: function(target) - { - var options = getElementsByClass(target.parentNode, "fbMenuOption"); - - var firstOption = options[0]; - var enabled = Firebug.saveCookies; - if (enabled) - Menu.check(firstOption); - else - Menu.uncheck(firstOption); - - if (enabled) - Menu.check(options[0]); - else - Menu.uncheck(options[0]); - - for (var i = 1, length = options.length; i < length; i++) - { - var option = options[i]; - - var value = option.getAttribute("value"); - var pref = Firebug[value]; - - if (pref) - Menu.check(option); - else - Menu.uncheck(option); - - if (enabled) - Menu.enable(option); - else - Menu.disable(option); - } - } - }; - - Menu.register(firebugOptionsMenu); - - var menu = firebugMenu; - - var testMenuClick = function(event) - { - //console.log("testMenuClick"); - cancelEvent(event, true); - - var target = event.target || event.srcElement; - - if (menu.isVisible) - menu.hide(); - else - { - var offsetLeft = isIE6 ? 1 : -4, // IE6 problem with fixed position - - chrome = Firebug.chrome, - - box = chrome.getElementBox(target), - - offset = chrome.type == "div" ? - chrome.getElementPosition(chrome.node) : - {top: 0, left: 0}; - - menu.show( - box.left + offsetLeft - offset.left, - box.top + box.height -5 - offset.top - ); - } - - return false; - }; - - var iconButton = new IconButton({ - type: "toggle", - element: $("fbFirebugButton"), - - onClick: testMenuClick - }); - - iconButton.initialize(); - - //addEvent($("fbToolbarIcon"), "click", testMenuClick); - }, - - initialize: function() - { - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Env.bookmarkletOutdated) - Firebug.Console.logFormatted([ - "A new bookmarklet version is available. " + - "Please visit http://getfirebug.com/firebuglite#Install and update it." - ], Firebug.context, "warn"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (Firebug.Console) - Firebug.Console.flush(); - - if (Firebug.Trace) - FBTrace.flush(Firebug.Trace); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize inherited classes - Controller.initialize.call(this); - PanelBar.initialize.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // create the interface elements cache - - fbTop = $("fbTop"); - fbContent = $("fbContent"); - fbContentStyle = fbContent.style; - fbBottom = $("fbBottom"); - fbBtnInspect = $("fbBtnInspect"); - - fbToolbar = $("fbToolbar"); - - fbPanelBox1 = $("fbPanelBox1"); - fbPanelBox1Style = fbPanelBox1.style; - fbPanelBox2 = $("fbPanelBox2"); - fbPanelBox2Style = fbPanelBox2.style; - fbPanelBar2Box = $("fbPanelBar2Box"); - fbPanelBar2BoxStyle = fbPanelBar2Box.style; - - fbHSplitter = $("fbHSplitter"); - fbVSplitter = $("fbVSplitter"); - fbVSplitterStyle = fbVSplitter.style; - - fbPanel1 = $("fbPanel1"); - fbPanel1Style = fbPanel1.style; - fbPanel2 = $("fbPanel2"); - fbPanel2Style = fbPanel2.style; - - fbConsole = $("fbConsole"); - fbConsoleStyle = fbConsole.style; - fbHTML = $("fbHTML"); - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - topHeight = fbTop.offsetHeight; - topPartialHeight = fbToolbar.offsetHeight; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disableTextSelection($("fbToolbar")); - disableTextSelection($("fbPanelBarBox")); - disableTextSelection($("fbPanelBar1")); - disableTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6 - if (isIE6 && Firebug.Selector) - { - // TODO: xxxpedro change to getElementsByClass - var as = $$(".fbHover"); - for (var i=0, a; a=as[i]; i++) - { - a.setAttribute("href", "javascript:void(0)"); - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // initialize all panels - /* - var panelMap = Firebug.panelTypes; - for (var i=0, p; p=panelMap[i]; i++) - { - if (!p.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - /**/ - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.initialize(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - this.addController( - [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine] - ); - - // ************************************************************************************************ - - // Select the first registered panel - // TODO: BUG IE7 - var self = this; - setTimeout(function(){ - self.selectPanel(FirebugChrome.selectedPanelName); - - if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine) - Firebug.chrome.focusCommandLine(); - },0); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - //this.draw(); - - - - - - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - var onPanelMouseDown = function onPanelMouseDown(event) - { - //console.log("onPanelMouseDown", event.target || event.srcElement, event); - - var target = event.target || event.srcElement; - - if (FBL.isLeftClick(event)) - { - var editable = FBL.getAncestorByClass(target, "editable"); - - // if an editable element has been clicked then start editing - if (editable) - { - Firebug.Editor.startEditing(editable); - FBL.cancelEvent(event); - } - // if any other element has been clicked then stop editing - else - { - if (!hasClass(target, "textEditorInner")) - Firebug.Editor.stopEditing(); - } - } - else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target)) - { - // Prevent auto-scroll when middle-clicking a rep object - FBL.cancelEvent(event); - } - }; - - Firebug.getElementPanel = function(element) - { - var panelNode = getAncestorByClass(element, "fbPanel"); - var id = panelNode.id.substr(2); - - var panel = Firebug.chrome.panelMap[id]; - - if (!panel) - { - if (Firebug.chrome.selectedPanel.sidePanelBar) - panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]; - } - - return panel; - }; - - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // TODO: xxxpedro port to Firebug - - // Improved window key code event listener. Only one "keydown" event will be attached - // to the window, and the onKeyCodeListen() function will delegate which listeners - // should be called according to the event.keyCode fired. - var onKeyCodeListenersMap = []; - var onKeyCodeListen = function(event) - { - for (var keyCode in onKeyCodeListenersMap) - { - var listeners = onKeyCodeListenersMap[keyCode]; - - for (var i = 0, listener; listener = listeners[i]; i++) - { - var filter = listener.filter || FBL.noKeyModifiers; - - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener.listener(); - FBL.cancelEvent(event, true); - return false; - } - } - } - }; - - addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen); - - /** - * @name keyCodeListen - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - var keyCode = KeyEvent["DOM_VK_"+key]; - - if (!onKeyCodeListenersMap[keyCode]) - onKeyCodeListenersMap[keyCode] = []; - - onKeyCodeListenersMap[keyCode].push({ - filter: filter, - listener: listener - }); - - return keyCode; - }; - - /** - * @name keyIgnore - * @memberOf FBL.FirebugChrome - */ - Firebug.chrome.keyIgnore = function(keyCode) - { - onKeyCodeListenersMap[keyCode] = null; - delete onKeyCodeListenersMap[keyCode]; - }; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /**/ - // move to shutdown - //removeEvent(Firebug.chrome.document, "keydown", listener[0]); - - - /* - Firebug.chrome.keyCodeListen = function(key, filter, listener, capture) - { - if (!filter) - filter = FBL.noKeyModifiers; - - var keyCode = KeyEvent["DOM_VK_"+key]; - - var fn = function fn(event) - { - if (event.keyCode == keyCode && (!filter || filter(event))) - { - listener(); - FBL.cancelEvent(event, true); - return false; - } - } - - addEvent(Firebug.chrome.document, "keydown", fn); - - return [fn, capture]; - }; - - Firebug.chrome.keyIgnore = function(listener) - { - removeEvent(Firebug.chrome.document, "keydown", listener[0]); - }; - /**/ - - - this.addController( - [fbPanel1, "mousedown", onPanelMouseDown], - [fbPanel2, "mousedown", onPanelMouseDown] - ); -/**/ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - - // menus can be used without domplate - if (FBL.domplate) - this.testMenu(); - /**/ - - //test XHR - /* - setTimeout(function(){ - - FBL.Ajax.request({url: "../content/firebug/boot.js"}); - FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"}); - - },1000); - /**/ - }, - - shutdown: function() - { - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - if(Firebug.Inspector) - this.inspectButton.shutdown(); - - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - // ************************************************************************************************ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // remove disableTextSelection event handlers - restoreTextSelection($("fbToolbar")); - restoreTextSelection($("fbPanelBarBox")); - restoreTextSelection($("fbPanelBar1")); - restoreTextSelection($("fbPanelBar2")); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // shutdown inherited classes - Controller.shutdown.call(this); - PanelBar.shutdown.call(this); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Remove the interface elements cache (this must happen after calling - // the shutdown method of all dependent components to avoid errors) - - fbTop = null; - fbContent = null; - fbContentStyle = null; - fbBottom = null; - fbBtnInspect = null; - - fbToolbar = null; - - fbPanelBox1 = null; - fbPanelBox1Style = null; - fbPanelBox2 = null; - fbPanelBox2Style = null; - fbPanelBar2Box = null; - fbPanelBar2BoxStyle = null; - - fbHSplitter = null; - fbVSplitter = null; - fbVSplitterStyle = null; - - fbPanel1 = null; - fbPanel1Style = null; - fbPanel2 = null; - - fbConsole = null; - fbConsoleStyle = null; - fbHTML = null; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // static values cache - - topHeight = null; - topPartialHeight = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - toggle: function(forceOpen, popup) - { - if(popup) - { - this.detach(); - } - else - { - if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed) - { - var frame = FirebugChrome.chromeMap.frame; - frame.reattach(); - - FirebugChrome.chromeMap.popup = null; - - frame.open(); - - return; - } - - // If the context is a popup, ignores the toggle process - if (Firebug.chrome.type == "popup") return; - - var shouldOpen = forceOpen || !FirebugChrome.isOpen; - - if(shouldOpen) - this.open(); - else - this.close(); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - detach: function() - { - if(!FirebugChrome.chromeMap.popup) - { - createChromeWindow({type: "popup"}); - } - }, - - reattach: function(oldChrome, newChrome) - { - Firebug.browser.window.Firebug = Firebug; - - // chrome synchronization - var newPanelMap = newChrome.panelMap; - var oldPanelMap = oldChrome.panelMap; - - var panel; - for(var name in newPanelMap) - { - // TODO: xxxpedro innerHTML - panel = newPanelMap[name]; - if (panel.options.innerHTMLSync) - panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML; - } - - Firebug.chrome = newChrome; - - // TODO: xxxpedro sync detach reattach attach - //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]); - - if (newChrome.type == "popup") - { - newChrome.initialize(); - //dispatch(Firebug.modules, "initialize", []); - } - else - { - // TODO: xxxpedro only needed in persistent - // should use FirebugChrome.clone, but popup FBChrome - // isn't acessible - FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name; - } - - dispatch(newPanelMap, "reattach", [oldChrome, newChrome]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - draw: function() - { - var size = this.getSize(); - - // Height related values - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0, - - y = Math.max(size.height /* chrome height */, topHeight), - - heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), - - height = heightValue + "px", - - // Width related values - sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0, - - width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px"; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Height related rendering - fbPanelBox1Style.height = height; - fbPanel1Style.height = height; - - if (isIE || isOpera) - { - // Fix IE and Opera problems with auto resizing the verticall splitter - fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px"; - } - //xxxpedro FF2 only? - /* - else if (isFirefox) - { - // Fix Firefox problem with table rows with 100% height (fit height) - fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px"; - }/**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Width related rendering - fbPanelBox1Style.width = width; - fbPanel1Style.width = width; - - // SidePanel rendering - if (Firebug.chrome.sidePanelVisible) - { - sideWidthValue = Math.max(sideWidthValue - 6, 0); - - var sideWidth = sideWidthValue + "px"; - - fbPanelBox2Style.width = sideWidth; - - fbVSplitterStyle.right = sideWidth; - - if (Firebug.chrome.largeCommandLineVisible) - { - fbLargeCommandLine = $("fbLargeCommandLine"); - - fbLargeCommandLine.style.height = heightValue - 4 + "px"; - fbLargeCommandLine.style.width = sideWidthValue - 2 + "px"; - - fbLargeCommandButtons = $("fbLargeCommandButtons"); - fbLargeCommandButtons.style.width = sideWidth; - } - else - { - fbPanel2Style.height = height; - fbPanel2Style.width = sideWidth; - - fbPanelBar2BoxStyle.width = sideWidth; - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSize: function() - { - return this.type == "div" ? - { - height: this.node.offsetHeight, - width: this.node.offsetWidth - } - : - this.getWindowSize(); - }, - - resize: function() - { - var self = this; - - // avoid partial resize when maximizing window - setTimeout(function(){ - self.draw(); - - if (noFixedPosition && (self.type == "frame" || self.type == "div")) - self.fixIEPosition(); - }, 0); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - layout: function(panel) - { - if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", ""); - - var options = panel.options; - - changeCommandLineVisibility(options.hasCommandLine); - changeSidePanelVisibility(panel.hasSidePanel); - - Firebug.chrome.draw(); - }, - - showLargeCommandLine: function(hideToggleIcon) - { - var chrome = Firebug.chrome; - - if (!chrome.largeCommandLineVisible) - { - chrome.largeCommandLineVisible = true; - - if (chrome.selectedPanel.options.hasCommandLine) - { - if (Firebug.CommandLine) - Firebug.CommandLine.blur(); - - changeCommandLineVisibility(false); - } - - changeSidePanelVisibility(true); - - fbLargeCommandLine.style.display = "block"; - fbLargeCommandButtons.style.display = "block"; - - fbPanel2Style.display = "none"; - fbPanelBar2BoxStyle.display = "none"; - - chrome.draw(); - - fbLargeCommandLine.focus(); - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(true); - } - }, - - hideLargeCommandLine: function() - { - if (Firebug.chrome.largeCommandLineVisible) - { - Firebug.chrome.largeCommandLineVisible = false; - - if (Firebug.CommandLine) - Firebug.CommandLine.setMultiLine(false); - - fbLargeCommandLine.blur(); - - fbPanel2Style.display = "block"; - fbPanelBar2BoxStyle.display = "block"; - - fbLargeCommandLine.style.display = "none"; - fbLargeCommandButtons.style.display = "none"; - - changeSidePanelVisibility(false); - - if (Firebug.chrome.selectedPanel.options.hasCommandLine) - changeCommandLineVisibility(true); - - Firebug.chrome.draw(); - - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focusCommandLine: function() - { - var selectedPanelName = this.selectedPanel.name, panelToSelect; - - if (focusCommandLineState == 0 || selectedPanelName != "Console") - { - focusCommandLineState = 0; - lastFocusedPanelName = selectedPanelName; - - panelToSelect = "Console"; - } - if (focusCommandLineState == 1) - { - panelToSelect = lastFocusedPanelName; - } - - this.selectPanel(panelToSelect); - - try - { - if (Firebug.CommandLine) - { - if (panelToSelect == "Console") - Firebug.CommandLine.focus(); - else - Firebug.CommandLine.blur(); - } - } - catch(e) - { - //TODO: xxxpedro trace error - } - - focusCommandLineState = ++focusCommandLineState % 2; - } - -}); - -// ************************************************************************************************ -// ChromeFrameBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromeFrameBase = extend(ChromeBase, -/**@extend ns-chrome-ChromeFrameBase*/ -{ - create: function() - { - ChromeBase.create.call(this); - - // restore display for the anti-flicker trick - if (isFirefox) - this.node.style.display = "block"; - - if (Env.Options.startInNewWindow) - { - this.close(); - this.toggle(true, true); - return; - } - - if (Env.Options.startOpened) - this.open(); - else - this.close(); - }, - - destroy: function() - { - removeGlobalEvent("keydown", onGlobalKeyDown); - - ChromeBase.destroy.call(this); - - this.document = null; - delete this.document; - - this.window = null; - delete this.window; - - this.node.parentNode.removeChild(this.node); - this.node = null; - delete this.node; - }, - - initialize: function() - { - //FBTrace.sysout("Frame", "initialize();") - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.browser.window, "resize", this.resize], - [$("fbWindow_btClose"), "click", this.close], - [$("fbWindow_btDetach"), "click", this.detach], - [$("fbWindow_btDeactivate"), "click", this.deactivate] - ); - - if (!Env.Options.enablePersistent) - this.addController([Firebug.browser.window, "unload", Firebug.shutdown]); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - fbVSplitter.onmousedown = onVSplitterMouseDown; - fbHSplitter.onmousedown = onHSplitterMouseDown; - - this.isInitialized = true; - }, - - shutdown: function() - { - fbVSplitter.onmousedown = null; - fbHSplitter.onmousedown = null; - - ChromeBase.shutdown.apply(this); - - this.isInitialized = false; - }, - - reattach: function() - { - var frame = FirebugChrome.chromeMap.frame; - - ChromeBase.reattach(FirebugChrome.chromeMap.popup, this); - }, - - open: function() - { - if (!FirebugChrome.isOpen) - { - FirebugChrome.isOpen = true; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,1"); - - var node = this.node; - - node.style.visibility = "hidden"; // Avoid flickering - - if (Firebug.showIconWhenHidden) - { - if (ChromeMini.isInitialized) - { - ChromeMini.shutdown(); - } - - } - else - node.style.display = "block"; - - var main = $("fbChrome"); - - // IE6 throws an error when setting this property! why? - //main.style.display = "table"; - main.style.display = ""; - - var self = this; - setTimeout(function(){ - node.style.visibility = "visible"; - - //dispatch(Firebug.modules, "initialize", []); - self.initialize(); - - if (noFixedPosition) - self.fixIEPosition(); - - self.draw(); - - }, 10); - } - }, - - close: function() - { - if (FirebugChrome.isOpen || !this.isInitialized) - { - if (this.isInitialized) - { - //dispatch(Firebug.modules, "shutdown", []); - this.shutdown(); - } - - FirebugChrome.isOpen = false; - - if (Env.isChromeExtension) - localStorage.setItem("Firebug", "1,0"); - - var node = this.node; - - if (Firebug.showIconWhenHidden) - { - node.style.visibility = "hidden"; // Avoid flickering - - // TODO: xxxpedro - persist IE fixed? - var main = $("fbChrome", FirebugChrome.chromeMap.frame.document); - main.style.display = "none"; - - ChromeMini.initialize(); - - node.style.visibility = "visible"; - } - else - node.style.display = "none"; - } - }, - - deactivate: function() - { - // if it is running as a Chrome extension, dispatch a message to the extension signaling - // that Firebug should be deactivated for the current tab - if (Env.isChromeExtension) - { - localStorage.removeItem("Firebug"); - Firebug.GoogleChrome.dispatch("FB_deactivate"); - - // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole - // app, otherwise it won't be able to be reactivated without reloading the page. - // but we need to stop listening global keys, otherwise the key activation won't work. - Firebug.chrome.close(); - } - else - { - Firebug.shutdown(); - } - }, - - fixIEPosition: function() - { - // fix IE problem with offset when not in fullscreen mode - var doc = this.document; - var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0; - - var size = Firebug.browser.getWindowSize(); - var scroll = Firebug.browser.getWindowScrollPosition(); - var maxHeight = size.height; - var height = this.node.offsetHeight; - - var bodyStyle = doc.body.currentStyle; - - this.node.style.top = maxHeight - height + scroll.top + "px"; - - if ((this.type == "frame" || this.type == "div") && - (bodyStyle.marginLeft || bodyStyle.marginRight)) - { - this.node.style.width = size.width + "px"; - } - - if (fbVSplitterStyle) - fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px"; - - this.draw(); - } - -}); - - -// ************************************************************************************************ -// ChromeMini - -/** - * @namespace - * @extends FBL.Controller - */ -var ChromeMini = extend(Controller, -/**@extend ns-chrome-ChromeMini*/ -{ - create: function(chrome) - { - append(this, chrome); - this.type = "mini"; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "block"; - - var miniIcon = $("fbMiniIcon", doc); - var width = miniIcon.offsetWidth + 10; - miniIcon.title = "Open " + Firebug.version; - - var errors = $("fbMiniErrors", doc); - if (errors.offsetWidth) - width += errors.offsetWidth + 10; - - var node = this.node; - node.style.height = "27px"; - node.style.width = width + "px"; - node.style.left = ""; - node.style.right = 0; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "true"); - this.document.body.style.backgroundColor = "transparent"; - } - else - node.style.background = "transparent"; - - if (noFixedPosition) - this.fixIEPosition(); - - this.addController( - [$("fbMiniIcon", doc), "click", onMiniIconClick] - ); - - if (noFixedPosition) - { - this.addController( - [Firebug.browser.window, "scroll", this.fixIEPosition] - ); - } - - this.isInitialized = true; - }, - - shutdown: function() - { - var node = this.node; - node.style.height = FirebugChrome.height + "px"; - node.style.width = "100%"; - node.style.left = 0; - node.style.right = ""; - - if (this.node.nodeName.toLowerCase() == "iframe") - { - node.setAttribute("allowTransparency", "false"); - this.document.body.style.backgroundColor = "#fff"; - } - else - node.style.background = "#fff"; - - if (noFixedPosition) - this.fixIEPosition(); - - var doc = FirebugChrome.chromeMap.frame.document; - - var mini = $("fbMiniChrome", doc); - mini.style.display = "none"; - - Controller.shutdown.apply(this); - - this.isInitialized = false; - }, - - draw: function() - { - - }, - - fixIEPosition: ChromeFrameBase.fixIEPosition - -}); - - -// ************************************************************************************************ -// ChromePopupBase - -/** - * @namespace - * @extends ns-chrome-ChromeBase - */ -var ChromePopupBase = extend(ChromeBase, -/**@extend ns-chrome-ChromePopupBase*/ -{ - - initialize: function() - { - setClass(this.document.body, "FirebugPopup"); - - ChromeBase.initialize.call(this); - - this.addController( - [Firebug.chrome.window, "resize", this.resize], - [Firebug.chrome.window, "unload", this.destroy] - ); - - if (Env.Options.enablePersistent) - { - this.persist = bind(this.persist, this); - addEvent(Firebug.browser.window, "unload", this.persist); - } - else - this.addController( - [Firebug.browser.window, "unload", this.close] - ); - - fbVSplitter.onmousedown = onVSplitterMouseDown; - }, - - destroy: function() - { - // TODO: xxxpedro sync detach reattach attach - var frame = FirebugChrome.chromeMap.frame; - - if(frame) - { - dispatch(frame.panelMap, "detach", [this, frame]); - - frame.reattach(this, frame); - } - - if (Env.Options.enablePersistent) - { - removeEvent(Firebug.browser.window, "unload", this.persist); - } - - ChromeBase.destroy.apply(this); - - FirebugChrome.chromeMap.popup = null; - - this.node.close(); - }, - - persist: function() - { - persistTimeStart = new Date().getTime(); - - removeEvent(Firebug.browser.window, "unload", this.persist); - - Firebug.Inspector.destroy(); - Firebug.browser.window.FirebugOldBrowser = true; - - var persistTimeStart = new Date().getTime(); - - var waitMainWindow = function() - { - var doc, head; - - try - { - if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && - doc.documentElement && (head = doc.documentElement.firstChild)*/) - { - - try - { - // exposes the FBL to the global namespace when in debug mode - if (Env.isDebugMode) - { - window.FBL = FBL; - } - - window.Firebug = Firebug; - window.opener.Firebug = Firebug; - - Env.browser = window.opener; - Firebug.browser = Firebug.context = new Context(Env.browser); - - registerConsole(); - - // the delay time should be calculated right after registering the - // console, once right after the console registration, call log messages - // will be properly handled - var persistDelay = new Date().getTime() - persistTimeStart; - - var chrome = Firebug.chrome; - addEvent(Firebug.browser.window, "unload", chrome.persist); - - FBL.cacheDocument(); - Firebug.Inspector.create(); - - var htmlPanel = chrome.getPanel("HTML"); - htmlPanel.createUI(); - - Firebug.Console.logFormatted( - ["Firebug could not capture console calls during " + - persistDelay + "ms"], - Firebug.context, - "info" - ); - } - catch(pE) - { - alert("persist error: " + (pE.message || pE)); - } - - } - else - { - window.setTimeout(waitMainWindow, 0); - } - - } catch (E) { - window.close(); - } - }; - - waitMainWindow(); - }, - - close: function() - { - this.destroy(); - } - -}); - - -//************************************************************************************************ -// UI helpers - -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility) -{ - var last = Firebug.chrome.commandLineVisible; - var visible = Firebug.chrome.commandLineVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible; - - if (visible != last) - { - if (visible) - { - fbBottom.className = ""; - - if (Firebug.CommandLine) - Firebug.CommandLine.activate(); - } - else - { - if (Firebug.CommandLine) - Firebug.CommandLine.deactivate(); - - fbBottom.className = "hide"; - } - } -}; - -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility) -{ - var last = Firebug.chrome.sidePanelVisible; - Firebug.chrome.sidePanelVisible = - typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible; - - if (Firebug.chrome.sidePanelVisible != last) - { - fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; - } -}; - - -// ************************************************************************************************ -// F12 Handler - -var onGlobalKeyDown = function onGlobalKeyDown(event) -{ - var keyCode = event.keyCode; - var shiftKey = event.shiftKey; - var ctrlKey = event.ctrlKey; - - if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox)) - { - Firebug.chrome.toggle(false, ctrlKey); - cancelEvent(event, true); - - // TODO: xxxpedro replace with a better solution. we're doing this - // to allow reactivating with the F12 key after being deactivated - if (Env.isChromeExtension) - { - Firebug.GoogleChrome.dispatch("FB_enableIcon"); - } - } - else if (keyCode == 67 /* C */ && ctrlKey && shiftKey) - { - Firebug.Inspector.toggleInspect(); - cancelEvent(event, true); - } - else if (keyCode == 76 /* L */ && ctrlKey && shiftKey) - { - Firebug.chrome.focusCommandLine(); - cancelEvent(event, true); - } -}; - -var onMiniIconClick = function onMiniIconClick(event) -{ - Firebug.chrome.toggle(false, event.ctrlKey); - cancelEvent(event, true); -}; - - -// ************************************************************************************************ -// Horizontal Splitter Handling - -var onHSplitterMouseDown = function onHSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onHSplitterMouseMove); - addGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = "fbOnMovingHSplitter"; - - return false; -}; - -var onHSplitterMouseMove = function onHSplitterMouseMove(event) -{ - cancelEvent(event, true); - - var clientY = event.clientY; - var win = isIE - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument && event.target.ownerDocument.defaultView; - - if (!win) - return; - - if (win != win.parent) - { - var frameElement = win.frameElement; - if (frameElement) - { - var framePos = Firebug.browser.getElementPosition(frameElement).top; - clientY += framePos; - - if (frameElement.style.position != "fixed") - clientY -= Firebug.browser.getWindowScrollPosition().top; - } - } - - if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI") - { - clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY; - } - /* - console.log( - typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome", - //win.frameElement.id, - event.target, - clientY - );/**/ - - onHSplitterMouseMoveBuffer = clientY; // buffer - - if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - lastHSplitterMouseMove = new Date().getTime(); - handleHSplitterMouseMove(); - } - else - if (!onHSplitterMouseMoveTimer) - onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate); - - // improving the resizing performance by canceling the mouse event. - // canceling events will prevent the page to receive such events, which would imply - // in more processing being expended. - cancelEvent(event, true); - return false; -}; - -var handleHSplitterMouseMove = function() -{ - if (onHSplitterMouseMoveTimer) - { - clearTimeout(onHSplitterMouseMoveTimer); - onHSplitterMouseMoveTimer = null; - } - - var clientY = onHSplitterMouseMoveBuffer; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - - // compute chrome fixed size (top bar and command line) - var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0; - var fixedHeight = topHeight + commandLineHeight; - var chromeNode = Firebug.chrome.node; - - var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0; - - //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height; - var height = windowSize.height; - - // compute the min and max size of the chrome - var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight); - chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize); - - FirebugChrome.height = chromeHeight; - chromeNode.style.height = chromeHeight + "px"; - - if (noFixedPosition) - Firebug.chrome.fixIEPosition(); - - Firebug.chrome.draw(); -}; - -var onHSplitterMouseUp = function onHSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onHSplitterMouseMove); - removeGlobalEvent("mouseup", onHSplitterMouseUp); - - if (isIE) - removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp); - - fbHSplitter.className = ""; - - Firebug.chrome.draw(); - - // avoid text selection in IE when returning to the document - // after the mouse leaves the document during the resizing - return false; -}; - - -// ************************************************************************************************ -// Vertical Splitter Handling - -var onVSplitterMouseDown = function onVSplitterMouseDown(event) -{ - addGlobalEvent("mousemove", onVSplitterMouseMove); - addGlobalEvent("mouseup", onVSplitterMouseUp); - - return false; -}; - -var onVSplitterMouseMove = function onVSplitterMouseMove(event) -{ - if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping - { - var target = event.target || event.srcElement; - if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome - { - var clientX = event.clientX; - var win = document.all - ? event.srcElement.ownerDocument.parentWindow - : event.target.ownerDocument.defaultView; - - if (win != win.parent) - clientX += win.frameElement ? win.frameElement.offsetLeft : 0; - - var size = Firebug.chrome.getSize(); - var x = Math.max(size.width - clientX + 3, 6); - - FirebugChrome.sidePanelWidth = x; - Firebug.chrome.draw(); - } - - lastVSplitterMouseMove = new Date().getTime(); - } - - cancelEvent(event, true); - return false; -}; - -var onVSplitterMouseUp = function onVSplitterMouseUp(event) -{ - removeGlobalEvent("mousemove", onVSplitterMouseMove); - removeGlobalEvent("mouseup", onVSplitterMouseUp); - - Firebug.chrome.draw(); -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = element[CID]; - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - } - - return id; - }, - - unset: function(element) - { - var id = element[CID]; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - - }, - - key: function(element) - { - return element[CID]; - }, - - has: function(element) - { - return map.hasOwnProperty(element[CID]); - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Proxy = -{ - // jsonp callbacks - _callbacks: {}, - - /** - * Load a resource, either locally (directly) or externally (via proxy) using - * synchronous XHR calls. Loading external resources requires the proxy plugin to - * be installed and configured (see /plugin/proxy/proxy.php). - */ - load: function(url) - { - var resourceDomain = getDomain(url); - var isLocalResource = - // empty domain means local URL - !resourceDomain || - // same domain means local too - resourceDomain == Firebug.context.window.location.host; // TODO: xxxpedro context - - return isLocalResource ? fetchResource(url) : fetchProxyResource(url); - }, - - /** - * Load a resource using JSONP technique. - */ - loadJSONP: function(url, callback) - { - var script = createGlobalElement("script"), - doc = Firebug.context.document, - - uid = "" + new Date().getTime(), - callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid, - - jsonpURL = url.indexOf("?") != -1 ? - url + "&" + callbackName : - url + "?" + callbackName; - - Firebug.Lite.Proxy._callbacks[uid] = function(data) - { - if (callback) - callback(data); - - script.parentNode.removeChild(script); - delete Firebug.Lite.Proxy._callbacks[uid]; - }; - - script.src = jsonpURL; - - if (doc.documentElement) - doc.documentElement.appendChild(script); - }, - - /** - * Load a resource using YQL (not reliable). - */ - YQL: function(url, callback) - { - var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" + - encodeURIComponent(url) + "%22&format=xml"; - - this.loadJSONP(yql, function(data) - { - var source = data.results[0]; - - // clean up YQL bogus elements - var match = /\s+

                                ([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -var fetchResource = function(url) -{ - var xhr = FBL.Ajax.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - return xhr.responseText; -}; - -var fetchProxyResource = function(url) -{ - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - return data ? data.contents : ""; -}; - - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

                                "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
                                "; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); - -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function DomplateTag(tagName) -{ - this.tagName = tagName; -} - -function DomplateEmbed() -{ -} - -function DomplateLoop() -{ -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -( /** @scope ns-domplate */ function() { - -var womb = null; - -var domplate = FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateEmbed.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateLoop.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
                                "; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); - - -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else - attrs.push(attr); - } - } - if (classAttr) - attrs.splice(0, 0, classAttr); - if (idAttr) - attrs.splice(0, 0, idAttr); - - return attrs; - }, - - shortAttrIterator: function(elt) - { - var attrs = []; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName == "id" || attr.nodeName == "class") - attrs.push(attr); - } - } - - return attrs; - }, - - getHidden: function(elt) - { - return isVisible(elt) ? "" : "nodeHidden"; - }, - - getXPath: function(elt) - { - return getElementTreeXPath(elt); - }, - - // TODO: xxxpedro remove this? - getNodeText: function(element) - { - var text = element.textContent; - if (Firebug.showFullTextNodes) - return text; - else - return cropString(text, 50); - }, - /**/ - - getNodeTextGroups: function(element) - { - var text = element.textContent; - if (!Firebug.showFullTextNodes) - { - text=cropString(text,50); - } - - var escapeGroups=[]; - - if (Firebug.showTextNodesWithWhitespace) - escapeGroups.push({ - 'group': 'whitespace', - 'class': 'nodeWhiteSpace', - 'extra': { - '\t': '_Tab', - '\n': '_Para', - ' ' : '_Space' - } - }); - if (Firebug.showTextNodesWithEntities) - escapeGroups.push({ - 'group':'text', - 'class':'nodeTextEntity', - 'extra':{} - }); - - if (escapeGroups.length) - return escapeGroupsForEntities(text, escapeGroups); - else - return [{str:text,'class':'',extra:''}]; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyHTML: function(elt) - { - var html = getElementXML(elt); - copyToClipboard(html); - }, - - copyInnerHTML: function(elt) - { - copyToClipboard(elt.innerHTML); - }, - - copyXPath: function(elt) - { - var xpath = getElementXPath(elt); - copyToClipboard(xpath); - }, - - persistor: function(context, xpath) - { - var elts = xpath - ? getElementsByXPath(context.window.document, xpath) - : null; - - return elts && elts.length ? elts[0] : null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "element", - - supportsObject: function(object) - { - //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string"; - return instanceOf(object, "Element"); - }, - - browseObject: function(elt, context) - { - var tag = elt.nodeName.toLowerCase(); - if (tag == "script") - openNewTab(elt.src); - else if (tag == "link") - openNewTab(elt.href); - else if (tag == "a") - openNewTab(elt.href); - else if (tag == "img") - openNewTab(elt.src); - - return true; - }, - - persistObject: function(elt, context) - { - var xpath = getElementXPath(elt); - - return bind(this.persistor, top, xpath); - }, - - getTitle: function(element, context) - { - return getElementCSSSelector(element); - }, - - getTooltip: function(elt) - { - return this.getXPath(elt); - }, - - getContextMenuItems: function(elt, target, context) - { - var monitored = areEventsMonitored(elt, null, context); - - return [ - {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) }, - {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) }, - {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) }, - "-", - {label: "ShowEventsInConsole", type: "checkbox", checked: monitored, - command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) }, - "-", - {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) } - ]; - } -}); - -// ************************************************************************************************ - -this.TextNode = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "TextNode"), - " textContent="", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), """, - ">" - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "textNode", - - supportsObject: function(object) - { - return object instanceof Text; - } -}); - -// ************************************************************************************************ - -this.Document = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(doc) - { - return doc.location ? getFileName(doc.location.href) : ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Document || object instanceof XMLDocument; - return instanceOf(object, "Document"); - }, - - browseObject: function(doc, context) - { - openNewTab(doc.location.href); - return true; - }, - - persistObject: function(doc, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window.document; - }, - - getTitle: function(win, context) - { - return "document"; - }, - - getTooltip: function(doc) - { - return doc.location.href; - } -}); - -// ************************************************************************************************ - -this.StyleSheet = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(styleSheet) - { - return getFileName(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(styleSheet) - { - copyToClipboard(styleSheet.href); - }, - - openInTab: function(styleSheet) - { - openNewTab(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof CSSStyleSheet; - return instanceOf(object, "CSSStyleSheet"); - }, - - browseObject: function(styleSheet, context) - { - openNewTab(styleSheet.href); - return true; - }, - - persistObject: function(styleSheet, context) - { - return bind(this.persistor, top, styleSheet.href); - }, - - getTooltip: function(styleSheet) - { - return styleSheet.href; - }, - - getContextMenuItems: function(styleSheet, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) } - ]; - }, - - persistor: function(context, href) - { - return getStyleSheetByHref(href, context); - } -}); - -// ************************************************************************************************ - -this.Window = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(win) - { - try - { - return (win && win.location && !win.closed) ? getFileName(win.location.href) : ""; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.Window window closed?"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - return instanceOf(object, "Window"); - }, - - browseObject: function(win, context) - { - openNewTab(win.location.href); - return true; - }, - - persistObject: function(win, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window; - }, - - getTitle: function(win, context) - { - return "window"; - }, - - getTooltip: function(win) - { - if (win && !win.closed) - return win.location.href; - } -}); - -// ************************************************************************************************ - -this.Event = domplate(Firebug.Rep, -{ - tag: TAG("$copyEventTag", {object: "$object|copyEvent"}), - - copyEventTag: - OBJECTLINK("$object|summarizeEvent"), - - summarizeEvent: function(event) - { - var info = [event.type, ' ']; - - var eventFamily = getEventFamily(event.type); - if (eventFamily == "mouse") - info.push("clientX=", event.clientX, ", clientY=", event.clientY); - else if (eventFamily == "key") - info.push("charCode=", event.charCode, ", keyCode=", event.keyCode); - - return info.join(""); - }, - - copyEvent: function(event) - { - return new EventCopy(event); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Event || object instanceof EventCopy; - return instanceOf(object, "Event") || instanceOf(object, "EventCopy"); - }, - - getTitle: function(event, context) - { - return "Event " + event.type; - } -}); - -// ************************************************************************************************ - -this.SourceLink = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - hideSourceLink: function(sourceLink) - { - return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true; - }, - - getSourceLinkTitle: function(sourceLink) - { - if (!sourceLink) - return ""; - - try - { - var fileName = getFileName(sourceLink.href); - fileName = decodeURIComponent(fileName); - fileName = cropString(fileName, 17); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc); - } - - return typeof sourceLink.line == "number" ? - fileName + " (line " + sourceLink.line + ")" : - fileName; - - // TODO: xxxpedro - //return $STRF("Line", [fileName, sourceLink.line]); - }, - - copyLink: function(sourceLink) - { - copyToClipboard(sourceLink.href); - }, - - openInTab: function(sourceLink) - { - openNewTab(sourceLink.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceLink", - - supportsObject: function(object) - { - return object instanceof SourceLink; - }, - - getTooltip: function(sourceLink) - { - return decodeURI(sourceLink.href); - }, - - inspectObject: function(sourceLink, context) - { - if (sourceLink.type == "js") - { - var scriptFile = getSourceFileByHref(sourceLink.href, context); - if (scriptFile) - return Firebug.chrome.select(sourceLink); - } - else if (sourceLink.type == "css") - { - // If an object is defined, treat it as the highest priority for - // inspect actions - if (sourceLink.object) { - Firebug.chrome.select(sourceLink.object); - return; - } - - var stylesheet = getStyleSheetByHref(sourceLink.href, context); - if (stylesheet) - { - var ownerNode = stylesheet.ownerNode; - if (ownerNode) - { - Firebug.chrome.select(sourceLink, "html"); - return; - } - - var panel = context.getPanel("stylesheet"); - if (panel && panel.getRuleByLine(stylesheet, sourceLink.line)) - return Firebug.chrome.select(sourceLink); - } - } - - // Fallback is to just open the view-source window on the file - viewSource(sourceLink.href, sourceLink.line); - }, - - browseObject: function(sourceLink, context) - { - openNewTab(sourceLink.href); - return true; - }, - - getContextMenuItems: function(sourceLink, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceFile = domplate(this.SourceLink, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - persistor: function(context, href) - { - return getSourceFileByHref(href, context); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceFile", - - supportsObject: function(object) - { - return object instanceof SourceFile; - }, - - persistObject: function(sourceFile) - { - return bind(this.persistor, top, sourceFile.href); - }, - - browseObject: function(sourceLink, context) - { - }, - - getTooltip: function(sourceFile) - { - return sourceFile.href; - } -}); - -// ************************************************************************************************ - -this.StackFrame = domplate(Firebug.Rep, // XXXjjb Since the repObject is fn the stack does not have correct line numbers -{ - tag: - OBJECTBLOCK( - A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"), - " ( ", - FOR("arg", "$object|argIterator", - TAG("$arg.tag", {object: "$arg.value"}), - SPAN({"class": "arrayComma"}, "$arg.delim") - ), - " )", - SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle") - ), - - getCallName: function(frame) - { - //TODO: xxxpedro reps StackFrame - return frame.name || "anonymous"; - - //return getFunctionName(frame.script, frame.context); - }, - - getSourceLinkTitle: function(frame) - { - //TODO: xxxpedro reps StackFrame - var fileName = cropString(getFileName(frame.href), 20); - return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : ""); - - var fileName = cropString(getFileName(frame.href), 17); - return $STRF("Line", [fileName, frame.lineNo]); - }, - - argIterator: function(frame) - { - if (!frame.args) - return []; - - var items = []; - - for (var i = 0; i < frame.args.length; ++i) - { - var arg = frame.args[i]; - - if (!arg) - break; - - var rep = Firebug.getRep(arg.value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var delim = (i == frame.args.length-1 ? "" : ", "); - - items.push({name: arg.name, value: arg.value, tag: tag, delim: delim}); - } - - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackFrame", - - supportsObject: function(object) - { - return object instanceof StackFrame; - }, - - inspectObject: function(stackFrame, context) - { - var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js"); - Firebug.chrome.select(sourceLink); - }, - - getTooltip: function(stackFrame, context) - { - return $STRF("Line", [stackFrame.href, stackFrame.lineNo]); - } - -}); - -// ************************************************************************************************ - -this.StackTrace = domplate(Firebug.Rep, -{ - tag: - FOR("frame", "$object.frames focusRow", - TAG(this.StackFrame.tag, {object: "$frame"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackTrace", - - supportsObject: function(object) - { - return object instanceof StackTrace; - } -}); - -// ************************************************************************************************ - -this.jsdStackFrame = domplate(Firebug.Rep, -{ - inspectable: false, - - supportsObject: function(object) - { - return (object instanceof jsdIStackFrame) && (object.isValid); - }, - - getTitle: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - return getFunctionName(frame.script, context); - }, - - getTooltip: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame); - if (sourceInfo) - return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]); - else - return $STRF("Line", [frame.script.fileName, frame.line]); - }, - - getContextMenuItems: function(frame, target, context) - { - var fn = frame.script.functionObject.getWrappedValue(); - return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script); - } -}); - -// ************************************************************************************************ - -this.ErrorMessage = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({ - $hasTwisty: "$object|hasStackTrace", - $hasBreakSwitch: "$object|hasBreakSwitch", - $breakForError: "$object|hasErrorBreak", - _repObject: "$object", - _stackTrace: "$object|getLastErrorStackTrace", - onclick: "$onToggleError"}, - - DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'}, - "$object.message|getMessage" - ), - DIV({"class": "errorTrace"}), - DIV({"class": "errorSourceBox errorSource-$object|getSourceType"}, - IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}), - A({"class": "errorSource a11yFocus"}, "$object|getLine") - ), - TAG(this.SourceLink.tag, {object: "$object|getSourceLink"}) - ), - - getLastErrorStackTrace: function(error) - { - return error.trace; - }, - - hasStackTrace: function(error) - { - var url = error.href.toString(); - var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1); - return !fromCommandLine && error.trace; - }, - - hasBreakSwitch: function(error) - { - return error.href && error.lineNo > 0; - }, - - hasErrorBreak: function(error) - { - return fbs.hasErrorBreakpoint(error.href, error.lineNo); - }, - - getMessage: function(message) - { - var re = /\[Exception... "(.*?)" nsresult:/; - var m = re.exec(message); - return m ? m[1] : message; - }, - - getLine: function(error) - { - if (error.category == "js") - { - if (error.source) - return cropString(error.source, 80); - else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1) - return cropString(error.getSourceLine(), 80); - } - }, - - getSourceLink: function(error) - { - var ext = error.category == "css" ? "css" : "js"; - return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null; - }, - - getSourceType: function(error) - { - // Errors occurring inside of HTML event handlers look like "foo.html (line 1)" - // so let's try to skip those - if (error.source) - return "syntax"; - else if (error.lineNo == 1 && getFileExtension(error.href) != "js") - return "none"; - else if (error.category == "css") - return "none"; - else if (!error.href || !error.lineNo) - return "none"; - else - return "exec"; - }, - - onToggleError: function(event) - { - var target = event.currentTarget; - if (hasClass(event.target, "errorBreak")) - { - this.breakOnThisError(target.repObject); - } - else if (hasClass(event.target, "errorSource")) - { - var panel = Firebug.getElementPanel(event.target); - this.inspectObject(target.repObject, panel.context); - } - else if (hasClass(event.target, "errorTitle")) - { - var traceBox = target.childNodes[1]; - toggleClass(target, "opened"); - event.target.setAttribute('aria-checked', hasClass(target, "opened")); - if (hasClass(target, "opened")) - { - if (target.stackTrace) - var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox); - if (Firebug.A11yModel.enabled) - { - var panel = Firebug.getElementPanel(event.target); - dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]); - } - } - else - clearNode(traceBox); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyError: function(error) - { - var message = [ - this.getMessage(error.message), - error.href, - "Line " + error.lineNo - ]; - copyToClipboard(message.join("\n")); - }, - - breakOnThisError: function(error) - { - if (this.hasErrorBreak(error)) - Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo); - else - Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "errorMessage", - inspectable: false, - - supportsObject: function(object) - { - return object instanceof ErrorMessage; - }, - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - FirebugReps.SourceLink.inspectObject(sourceLink, context); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - var items = [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) } - ]; - - if (error.category == "css") - { - items.push( - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - - optionMenu("BreakOnAllErrors", "breakOnErrors") - ); - } - - return items; - } -}); - -// ************************************************************************************************ - -this.Assert = domplate(Firebug.Rep, -{ - tag: - DIV( - DIV({"class": "errorTitle"}), - DIV({"class": "assertDescription"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "assert", - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - Firebug.chrome.select(sourceLink); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - return [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) }, - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors, - command: bindFixed(this.breakOnAllErrors, this, error) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceText = domplate(Firebug.Rep, -{ - tag: - DIV( - FOR("line", "$object|lineIterator", - DIV({"class": "sourceRow", role : "presentation"}, - SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"), - SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text") - ) - ) - ), - - lineIterator: function(sourceText) - { - var maxLineNoChars = (sourceText.lines.length + "").length; - var list = []; - - for (var i = 0; i < sourceText.lines.length; ++i) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNo = (i+1) + ""; - while (lineNo.length < maxLineNoChars) - lineNo = " " + lineNo; - - list.push({lineNo: lineNo, text: sourceText.lines[i]}); - } - - return list; - }, - - getHTML: function(sourceText) - { - return getSourceLineRange(sourceText, 1, sourceText.lines.length); - } -}); - -//************************************************************************************************ -this.nsIDOMHistory = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showHistory"}, - OBJECTLINK("$object|summarizeHistory") - ), - - className: "nsIDOMHistory", - - summarizeHistory: function(history) - { - try - { - var items = history.length; - return items + " history entries"; - } - catch(exc) - { - return "object does not support history (nsIDOMHistory)"; - } - }, - - showHistory: function(history) - { - try - { - var items = history.length; // if this throws, then unsupported - Firebug.chrome.select(history); - } - catch (exc) - { - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object, type) - { - return (object instanceof Ci.nsIDOMHistory); - } -}); - -// ************************************************************************************************ -this.ApplicationCache = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showApplicationCache"}, - OBJECTLINK("$object|summarizeCache") - ), - - summarizeCache: function(applicationCache) - { - try - { - return applicationCache.length + " items in offline cache"; - } - catch(exc) - { - return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264"; - } - }, - - showApplicationCache: function(event) - { - openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "applicationCache", - - supportsObject: function(object, type) - { - if (Ci.nsIDOMOfflineResourceList) - return (object instanceof Ci.nsIDOMOfflineResourceList); - } - -}); - -this.Storage = domplate(Firebug.Rep, -{ - tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")), - - summarize: function(storage) - { - return storage.length +" items in Storage"; - }, - show: function(storage) - { - openNewTab("http://dev.w3.org/html5/webstorage/#storage-0"); - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "Storage", - - supportsObject: function(object, type) - { - return (object instanceof Storage); - } - -}); - -// ************************************************************************************************ -Firebug.registerRep( - //this.nsIDOMHistory, // make this early to avoid exceptions - this.Undefined, - this.Null, - this.Number, - this.String, - this.Window, - //this.ApplicationCache, // must come before Arr (array) else exceptions. - //this.ErrorMessage, - this.Element, - //this.TextNode, - this.Document, - this.StyleSheet, - this.Event, - //this.SourceLink, - //this.SourceFile, - //this.StackTrace, - //this.StackFrame, - //this.jsdStackFrame, - //this.jsdScript, - //this.NetFile, - this.Property, - this.Except, - this.Arr -); - -Firebug.setDefaultReps(this.Func, this.Obj); - -}}); - -// ************************************************************************************************ -/* - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source" - * in only this file reps.js. John J. Barton June 2007. - * -Software License Agreement (BSD License) - -Copyright (c) 2006, Yahoo! Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Yahoo! Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Yahoo! Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * / - */ - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var saveTimeout = 400; -var pageAmount = 10; - -// ************************************************************************************************ -// Globals - -var currentTarget = null; -var currentGroup = null; -var currentPanel = null; -var currentEditor = null; - -var defaultEditor = null; - -var originalClassName = null; - -var originalValue = null; -var defaultValue = null; -var previousValue = null; - -var invalidEditor = false; -var ignoreNextInput = false; - -// ************************************************************************************************ - -Firebug.Editor = extend(Firebug.Module, -{ - supportsStopEvent: true, - - dispatchName: "editor", - tabCharacter: " ", - - startEditing: function(target, value, editor) - { - this.stopEditing(); - - if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter")) - return; - - var panel = Firebug.getElementPanel(target); - if (!panel.editable) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.startEditing " + value, target); - - defaultValue = target.getAttribute("defaultValue"); - if (value == undefined) - { - var textContent = isIE ? "innerText" : "textContent"; - value = target[textContent]; - if (value == defaultValue) - value = ""; - } - - originalValue = previousValue = value; - - invalidEditor = false; - currentTarget = target; - currentPanel = panel; - currentGroup = getAncestorByClass(target, "editGroup"); - - currentPanel.editing = true; - - var panelEditor = currentPanel.getEditor(target, value); - currentEditor = editor ? editor : panelEditor; - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - var inlineParent = getInlineParent(target); - var targetSize = getOffsetSize(inlineParent); - - setClass(panel.panelNode, "editing"); - setClass(target, "editing"); - if (currentGroup) - setClass(currentGroup, "editing"); - - currentEditor.show(target, currentPanel, value, targetSize); - //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]); - currentEditor.beginEditing(target, value); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Editor start panel "+currentPanel.name); - this.attachListeners(currentEditor, panel.context); - }, - - stopEditing: function(cancel) - { - if (!currentTarget) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout); - - clearTimeout(this.saveTimeout); - delete this.saveTimeout; - - this.detachListeners(currentEditor, currentPanel.context); - - removeClass(currentPanel.panelNode, "editing"); - removeClass(currentTarget, "editing"); - if (currentGroup) - removeClass(currentGroup, "editing"); - - var value = currentEditor.getValue(); - if (value == defaultValue) - value = ""; - - var removeGroup = currentEditor.endEditing(currentTarget, value, cancel); - - try - { - if (cancel) - { - //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]); - if (value != originalValue) - this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue); - - if (removeGroup && !originalValue && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else if (!value) - { - this.saveEditAndNotifyListeners(currentTarget, null, previousValue); - - if (removeGroup && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else - this.save(value); - } - catch (exc) - { - //throw exc.message; - //ERROR(exc); - } - - currentEditor.hide(); - currentPanel.editing = false; - - //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]); - //if (FBTrace.DBG_EDITOR) - // FBTrace.sysout("Editor stop panel "+currentPanel.name); - - currentTarget = null; - currentGroup = null; - currentPanel = null; - currentEditor = null; - originalValue = null; - invalidEditor = false; - - return value; - }, - - cancelEditing: function() - { - return this.stopEditing(true); - }, - - update: function(saveNow) - { - if (this.saveTimeout) - clearTimeout(this.saveTimeout); - - invalidEditor = true; - - currentEditor.layout(); - - if (saveNow) - this.save(); - else - { - var context = currentPanel.context; - this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout); - } - }, - - save: function(value) - { - if (!invalidEditor) - return; - - if (value == undefined) - value = currentEditor.getValue(); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")); - try - { - this.saveEditAndNotifyListeners(currentTarget, value, previousValue); - - previousValue = value; - invalidEditor = false; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("editor.save FAILS "+exc, exc); - } - }, - - saveEditAndNotifyListeners: function(currentTarget, value, previousValue) - { - currentEditor.saveEdit(currentTarget, value, previousValue); - //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]); - }, - - setEditTarget: function(element) - { - if (!element) - { - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]); - this.stopEditing(); - } - else if (hasClass(element, "insertBefore")) - this.insertRow(element, "before"); - else if (hasClass(element, "insertAfter")) - this.insertRow(element, "after"); - else - this.startEditing(element); - }, - - tabNextEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var nextEditable = currentTarget; - do - { - nextEditable = !value && currentGroup - ? getNextOutsider(nextEditable, currentGroup) - : getNextByClass(nextEditable, "editable"); - } - while (nextEditable && !nextEditable.offsetHeight); - - this.setEditTarget(nextEditable); - }, - - tabPreviousEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var prevEditable = currentTarget; - do - { - prevEditable = !value && currentGroup - ? getPreviousOutsider(prevEditable, currentGroup) - : getPreviousByClass(prevEditable, "editable"); - } - while (prevEditable && !prevEditable.offsetHeight); - - this.setEditTarget(prevEditable); - }, - - insertRow: function(relative, insertWhere) - { - var group = - relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget; - var value = this.stopEditing(); - - currentPanel = Firebug.getElementPanel(group); - - currentEditor = currentPanel.getEditor(group, value); - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - currentGroup = currentEditor.insertNewRow(group, insertWhere); - if (!currentGroup) - return; - - var editable = hasClass(currentGroup, "editable") - ? currentGroup - : getNextByClass(currentGroup, "editable"); - - if (editable) - this.setEditTarget(editable); - }, - - insertRowForObject: function(relative) - { - var container = getAncestorByClass(relative, "insertInto"); - if (container) - { - relative = getChildByClass(container, "insertBefore"); - if (relative) - this.insertRow(relative, "before"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - attachListeners: function(editor, context) - { - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - addEvent(win, "resize", this.onResize); - addEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - - this.listeners = [ - chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this)) - ]; - - if (editor.arrowCompletion) - { - this.listeners.push( - chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)), - chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)), - chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)), - chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount)) - ); - } - - if (currentEditor.tabNavigation) - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")), - chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this)) - ); - } - else if (currentEditor.multiLine) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, insertTab) - ); - } - else - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this)) - ); - - if (currentEditor.tabCompletion) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)), - chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1)) - ); - } - } - }, - - detachListeners: function(editor, context) - { - if (!this.listeners) - return; - - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - removeEvent(win, "resize", this.onResize); - removeEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - if (chrome) - { - for (var i = 0; i < this.listeners.length; ++i) - chrome.keyIgnore(this.listeners[i]); - } - - delete this.listeners; - }, - - onResize: function(event) - { - currentEditor.layout(true); - }, - - onBlur: function(event) - { - if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box)) - this.stopEditing(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - Firebug.Module.initialize.apply(this, arguments); - - this.onResize = bindFixed(this.onResize, this); - this.onBlur = bind(this.onBlur, this); - }, - - disable: function() - { - this.stopEditing(); - }, - - showContext: function(browser, context) - { - this.stopEditing(); - }, - - showPanel: function(browser, panel) - { - this.stopEditing(); - } -}); - -// ************************************************************************************************ -// BaseEditor - -Firebug.BaseEditor = extend(Firebug.MeasureBox, -{ - getValue: function() - { - }, - - setValue: function(value) - { - }, - - show: function(target, panel, value, textSize, targetSize) - { - }, - - hide: function() - { - }, - - layout: function(forceAll) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for context menus within inline editors. - - getContextMenuItems: function(target) - { - var items = []; - items.push({label: "Cut", commandID: "cmd_cut"}); - items.push({label: "Copy", commandID: "cmd_copy"}); - items.push({label: "Paste", commandID: "cmd_paste"}); - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Editor Module listeners will get "onBeginEditing" just before this call - - beginEditing: function(target, value) - { - }, - - // Editor Module listeners will get "onSaveEdit" just after this call - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - } -}); - -// ************************************************************************************************ -// InlineEditor - -// basic inline editor attributes -var inlineEditorAttributes = { - "class": "textEditorInner", - - type: "text", - spellcheck: "false", - - onkeypress: "$onKeyPress", - - onoverflow: "$onOverflow", - oncontextmenu: "$onContextMenu" -}; - -// IE does not support the oninput event, so we're using the onkeydown to signalize -// the relevant keyboard events, and the onpropertychange to actually handle the -// input event, which should happen after the onkeydown event is fired and after the -// value of the input is updated, but before the onkeyup and before the input (with the -// new value) is rendered -if (isIE) -{ - inlineEditorAttributes.onpropertychange = "$onInput"; - inlineEditorAttributes.onkeydown = "$onKeyDown"; -} -// for other browsers we use the oninput event -else -{ - inlineEditorAttributes.oninput = "$onInput"; -} - -Firebug.InlineEditor = function(doc) -{ - this.initializeInline(doc); -}; - -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor, -{ - enterOnBlur: true, - outerMargin: 8, - shadowExpand: 7, - - tag: - DIV({"class": "inlineEditor"}, - DIV({"class": "textEditorTop1"}, - DIV({"class": "textEditorTop2"}) - ), - DIV({"class": "textEditorInner1"}, - DIV({"class": "textEditorInner2"}, - INPUT( - inlineEditorAttributes - ) - ) - ), - DIV({"class": "textEditorBottom1"}, - DIV({"class": "textEditorBottom2"}) - ) - ), - - inputTag : - INPUT({"class": "textEditorInner", type: "text", - /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"} - ), - - expanderTag: - IMG({"class": "inlineExpander", src: "blank.gif"}), - - initialize: function() - { - this.fixedWidth = false; - this.completeAsYouType = true; - this.tabNavigation = true; - this.multiLine = false; - this.tabCompletion = false; - this.arrowCompletion = true; - this.noWrap = true; - this.numeric = false; - }, - - destroy: function() - { - this.destroyInput(); - }, - - initializeInline: function(doc) - { - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Firebug.InlineEditor initializeInline()"); - - //this.box = this.tag.replace({}, doc, this); - this.box = this.tag.append({}, doc.body, this); - - //this.input = this.box.childNodes[1].firstChild.firstChild; // XXXjjb childNode[1] required - this.input = this.box.getElementsByTagName("input")[0]; - - if (isIElt8) - { - this.input.style.top = "-8px"; - } - - this.expander = this.expanderTag.replace({}, doc, this); - this.initialize(); - }, - - destroyInput: function() - { - // XXXjoe Need to remove input/keypress handlers to avoid leaks - }, - - getValue: function() - { - return this.input.value; - }, - - setValue: function(value) - { - // It's only a one-line editor, so new lines shouldn't be allowed - return this.input.value = stripNewLines(value); - }, - - show: function(target, panel, value, targetSize) - { - //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]); - this.target = target; - this.panel = panel; - - this.targetSize = targetSize; - - // TODO: xxxpedro editor - //this.targetOffset = getClientOffset(target); - - // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the - // offset values of invisible elements, or empty elements. So, in order to get the - // correct values, we temporary inject a character in the innerHTML of the empty element, - // then we get the offset values, and next, we restore the original innerHTML value. - var innerHTML = target.innerHTML; - var isEmptyElement = !innerHTML; - if (isEmptyElement) - target.innerHTML = "."; - - // Get the position of the target element (that is about to be edited) - this.targetOffset = - { - x: target.offsetLeft, - y: target.offsetTop - }; - - // Restore the original innerHTML value of the empty element - if (isEmptyElement) - target.innerHTML = innerHTML; - - this.originalClassName = this.box.className; - - var classNames = target.className.split(" "); - for (var i = 0; i < classNames.length; ++i) - setClass(this.box, "editor-" + classNames[i]); - - // Make the editor match the target's font style - copyTextStyles(target, this.box); - - this.setValue(value); - - if (this.fixedWidth) - this.updateLayout(true); - else - { - this.startMeasuring(target); - this.textSize = this.measureInputText(value); - - // Correct the height of the box to make the funky CSS drop-shadow line up - var parent = this.input.parentNode; - if (hasClass(parent, "textEditorInner2")) - { - var yDiff = this.textSize.height - this.shadowExpand; - - // IE6 height offset - if (isIE6) - yDiff -= 2; - - parent.style.height = yDiff + "px"; - parent.parentNode.style.height = yDiff + "px"; - } - - this.updateLayout(true); - } - - this.getAutoCompleter().reset(); - - if (isIElt8) - panel.panelNode.appendChild(this.box); - else - target.offsetParent.appendChild(this.box); - - //console.log(target); - //this.input.select(); // it's called bellow, with setTimeout - - if (isIE) - { - // reset input style - this.input.style.fontFamily = "Monospace"; - this.input.style.fontSize = "11px"; - } - - // Insert the "expander" to cover the target element with white space - if (!this.fixedWidth) - { - copyBoxStyles(target, this.expander); - - target.parentNode.replaceChild(this.expander, target); - collapse(target, true); - this.expander.parentNode.insertBefore(target, this.expander); - } - - //TODO: xxxpedro - //scrollIntoCenterView(this.box, null, true); - - // Display the editor after change its size and position to avoid flickering - this.box.style.display = "block"; - - // we need to call input.focus() and input.select() with a timeout, - // otherwise it won't work on all browsers due to timing issues - var self = this; - setTimeout(function(){ - self.input.focus(); - self.input.select(); - },0); - }, - - hide: function() - { - this.box.className = this.originalClassName; - - if (!this.fixedWidth) - { - this.stopMeasuring(); - - collapse(this.target, false); - - if (this.expander.parentNode) - this.expander.parentNode.removeChild(this.expander); - } - - if (this.box.parentNode) - { - ///setSelectionRange(this.input, 0, 0); - this.input.blur(); - - this.box.parentNode.removeChild(this.box); - } - - delete this.target; - delete this.panel; - }, - - layout: function(forceAll) - { - if (!this.fixedWidth) - this.textSize = this.measureInputText(this.input.value); - - if (forceAll) - this.targetOffset = getClientOffset(this.expander); - - this.updateLayout(false, forceAll); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - beginEditing: function(target, value) - { - }, - - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - }, - - advanceToNext: function(target, charCode) - { - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleter: function() - { - if (!this.autoCompleter) - { - this.autoCompleter = new Firebug.AutoCompleter(null, - bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this), - true, false); - } - - return this.autoCompleter; - }, - - completeValue: function(amt) - { - //console.log("completeValue"); - - var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); - - if (selectRangeCallback) - { - Firebug.Editor.update(true); - - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - else - this.incrementValue(amt); - }, - - incrementValue: function(amt) - { - var value = this.input.value; - - // TODO: xxxpedro editor - if (isIE) - var start = getInputSelectionStart(this.input), end = start; - else - var start = this.input.selectionStart, end = this.input.selectionEnd; - - //debugger; - var range = this.getAutoCompleteRange(value, start); - if (!range || range.type != "int") - range = {start: 0, end: value.length-1}; - - var expr = value.substr(range.start, range.end-range.start+1); - preExpr = value.substr(0, range.start); - postExpr = value.substr(range.end+1); - - // See if the value is an integer, and if so increment it - var intValue = parseInt(expr); - if (!!intValue || intValue == 0) - { - var m = /\d+/.exec(expr); - var digitPost = expr.substr(m.index+m[0].length); - - var completion = intValue-amt; - this.input.value = preExpr + completion + digitPost + postExpr; - - setSelectionRange(this.input, start, end); - - Firebug.Editor.update(true); - - return true; - } - else - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onKeyPress: function(event) - { - //console.log("onKeyPress", event); - if (event.keyCode == 27 && !this.completeAsYouType) - { - var reverted = this.getAutoCompleter().revert(this.input); - if (reverted) - cancelEvent(event); - } - else if (event.charCode && this.advanceToNext(this.target, event.charCode)) - { - Firebug.Editor.tabNextEditor(); - cancelEvent(event); - } - else - { - if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57) - && event.charCode != 45 && event.charCode != 46) - FBL.cancelEvent(event); - else - { - // If the user backspaces, don't autocomplete after the upcoming input event - this.ignoreNextInput = event.keyCode == 8; - } - } - }, - - onOverflow: function() - { - this.updateLayout(false, false, 3); - }, - - onKeyDown: function(event) - { - //console.log("onKeyDown", event.keyCode); - if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8) - { - this.keyDownPressed = true; - } - }, - - onInput: function(event) - { - //debugger; - - // skip not relevant onpropertychange calls on IE - if (isIE) - { - if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) - return; - - this.keyDownPressed = false; - } - - //console.log("onInput", event); - //console.trace(); - - var selectRangeCallback; - - if (this.ignoreNextInput) - { - this.ignoreNextInput = false; - this.getAutoCompleter().reset(); - } - else if (this.completeAsYouType) - selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false); - else - this.getAutoCompleter().reset(); - - Firebug.Editor.update(); - - if (selectRangeCallback) - { - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - }, - - onContextMenu: function(event) - { - cancelEvent(event); - - var popup = $("fbInlineEditorPopup"); - FBL.eraseNode(popup); - - var target = event.target || event.srcElement; - var menu = this.getContextMenuItems(target); - if (menu) - { - for (var i = 0; i < menu.length; ++i) - FBL.createMenuItem(popup, menu[i]); - } - - if (!popup.firstChild) - return false; - - popup.openPopupAtScreen(event.screenX, event.screenY, true); - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateLayout: function(initial, forceAll, extraWidth) - { - if (this.fixedWidth) - { - this.box.style.left = (this.targetOffset.x) + "px"; - this.box.style.top = (this.targetOffset.y) + "px"; - - var w = this.target.offsetWidth; - var h = this.target.offsetHeight; - this.input.style.width = w + "px"; - this.input.style.height = (h-3) + "px"; - } - else - { - if (initial || forceAll) - { - this.box.style.left = this.targetOffset.x + "px"; - this.box.style.top = this.targetOffset.y + "px"; - } - - var approxTextWidth = this.textSize.width; - var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x) - - this.outerMargin; - - var wrapped = initial - ? this.noWrap && this.targetSize.height > this.textSize.height+3 - : this.noWrap && approxTextWidth > maxWidth; - - if (wrapped) - { - var style = isIE ? - this.target.currentStyle : - this.target.ownerDocument.defaultView.getComputedStyle(this.target, ""); - - targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight); - - // Make the width fit the remaining x-space from the offset to the far right - approxTextWidth = maxWidth - targetMargin; - - this.input.style.width = "100%"; - this.box.style.width = approxTextWidth + "px"; - } - else - { - // Make the input one character wider than the text value so that - // typing does not ever cause the textbox to scroll - var charWidth = this.measureInputText('m').width; - - // Sometimes we need to make the editor a little wider, specifically when - // an overflow happens, otherwise it will scroll off some text on the left - if (extraWidth) - charWidth *= extraWidth; - - var inputWidth = approxTextWidth + charWidth; - - if (initial) - { - if (isIE) - { - // TODO: xxxpedro - var xDiff = 13; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - else - this.box.style.width = "auto"; - } - else - { - // TODO: xxxpedro - var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - - this.input.style.width = inputWidth + "px"; - } - - this.expander.style.width = approxTextWidth + "px"; - this.expander.style.height = Math.max(this.textSize.height-3,0) + "px"; - } - - if (forceAll) - scrollIntoCenterView(this.box, null, true); - } -}); - -// ************************************************************************************************ -// Autocompletion - -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive) -{ - var candidates = null; - var originalValue = null; - var originalOffset = -1; - var lastExpr = null; - var lastOffset = -1; - var exprOffset = 0; - var lastIndex = 0; - var preParsed = null; - var preExpr = null; - var postExpr = null; - - this.revert = function(textBox) - { - if (originalOffset != -1) - { - textBox.value = originalValue; - - setSelectionRange(textBox, originalOffset, originalOffset); - - this.reset(); - return true; - } - else - { - this.reset(); - return false; - } - }; - - this.reset = function() - { - candidates = null; - originalValue = null; - originalOffset = -1; - lastExpr = null; - lastOffset = 0; - exprOffset = 0; - }; - - this.complete = function(context, textBox, cycle, reverse) - { - //console.log("complete", context, textBox, cycle, reverse); - // TODO: xxxpedro important port to firebug (variable leak) - //var value = lastValue = textBox.value; - var value = textBox.value; - - //var offset = textBox.selectionStart; - var offset = getInputSelectionStart(textBox); - - // The result of selectionStart() in Safari/Chrome is 1 unit less than the result - // in Firefox. Therefore, we need to manually adjust the value here. - if (isSafari && !cycle && offset >= 0) offset++; - - if (!selectMode && originalOffset != -1) - offset = originalOffset; - - if (!candidates || !cycle || offset != lastOffset) - { - originalOffset = offset; - originalValue = value; - - // Find the part of the string that will be parsed - var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0; - preParsed = value.substr(0, parseStart); - var parsed = value.substr(parseStart); - - // Find the part of the string that is being completed - var range = getRange ? getRange(parsed, offset-parseStart, context) : null; - if (!range) - range = {start: 0, end: parsed.length-1 }; - - var expr = parsed.substr(range.start, range.end-range.start+1); - preExpr = parsed.substr(0, range.start); - postExpr = parsed.substr(range.end+1); - exprOffset = parseStart + range.start; - - if (!cycle) - { - if (!expr) - return; - else if (lastExpr && lastExpr.indexOf(expr) != 0) - { - candidates = null; - } - else if (lastExpr && lastExpr.length >= expr.length) - { - candidates = null; - lastExpr = expr; - return; - } - } - - lastExpr = expr; - lastOffset = offset; - - var searchExpr; - - // Check if the cursor is at the very right edge of the expression, or - // somewhere in the middle of it - if (expr && offset != parseStart+range.end+1) - { - if (cycle) - { - // We are in the middle of the expression, but we can - // complete by cycling to the next item in the values - // list after the expression - offset = range.start; - searchExpr = expr; - expr = ""; - } - else - { - // We can't complete unless we are at the ridge edge - return; - } - } - - var values = evaluator(preExpr, expr, postExpr, context); - if (!values) - return; - - if (expr) - { - // Filter the list of values to those which begin with expr. We - // will then go on to complete the first value in the resulting list - candidates = []; - - if (caseSensitive) - { - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.indexOf(expr) == 0) - candidates.push(name); - } - } - else - { - var lowerExpr = caseSensitive ? expr : expr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0) - candidates.push(name); - } - } - - lastIndex = reverse ? candidates.length-1 : 0; - } - else if (searchExpr) - { - var searchIndex = -1; - - // Find the first instance of searchExpr in the values list. We - // will then complete the string that is found - if (caseSensitive) - { - searchIndex = values.indexOf(expr); - } - else - { - var lowerExpr = searchExpr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name && name.toLowerCase().indexOf(lowerExpr) == 0) - { - searchIndex = i; - break; - } - } - } - - // Nothing found, so there's nothing to complete to - if (searchIndex == -1) - return this.reset(); - - expr = searchExpr; - candidates = cloneArray(values); - lastIndex = searchIndex; - } - else - { - expr = ""; - candidates = []; - for (var i = 0; i < values.length; ++i) - { - if (values[i].substr) - candidates.push(values[i]); - } - lastIndex = -1; - } - } - - if (cycle) - { - expr = lastExpr; - lastIndex += reverse ? -1 : 1; - } - - if (!candidates.length) - return; - - if (lastIndex >= candidates.length) - lastIndex = 0; - else if (lastIndex < 0) - lastIndex = candidates.length-1; - - var completion = candidates[lastIndex]; - var preCompletion = expr.substr(0, offset-exprOffset); - var postCompletion = completion.substr(offset-exprOffset); - - textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr; - var offsetEnd = preParsed.length + preExpr.length + completion.length; - - // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange() - // is working well. - /* - if (textBox.setSelectionRange) - { - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - setTimeout(function(){ - if (selectMode) - textBox.setSelectionRange(offset, offsetEnd); - else - textBox.setSelectionRange(offsetEnd, offsetEnd); - },0); - } - /**/ - - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - /* - setTimeout(function(){ - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - },0); - - return true; - /**/ - - // The editor text should be selected only after calling the editor.update() - // in Safari/Chrome, otherwise the text won't be selected. So, we're returning - // a function to be called later (in the proper time for all browsers). - // - // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid - // returning a closure. the complete() function seems to be called only twice in - // editor.js. See if this function is called anywhere else (like css.js for example). - return function(){ - //console.log("autocomplete ", textBox, offset, offsetEnd); - - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - }; - /**/ - }; -}; - -// ************************************************************************************************ -// Local Helpers - -var getDefaultEditor = function getDefaultEditor(panel) -{ - if (!defaultEditor) - { - var doc = panel.document; - defaultEditor = new Firebug.InlineEditor(doc); - } - - return defaultEditor; -} - -/** - * An outsider is the first element matching the stepper element that - * is not an child of group. Elements tagged with insertBefore or insertAfter - * classes are also excluded from these results unless they are the sibling - * of group, relative to group's parent editGroup. This allows for the proper insertion - * rows when groups are nested. - */ -var getOutsider = function getOutsider(element, group, stepper) -{ - var parentGroup = getAncestorByClass(group.parentNode, "editGroup"); - var next; - do - { - next = stepper(next || element); - } - while (isAncestor(next, group) || isGroupInsert(next, parentGroup)); - - return next; -} - -var isGroupInsert = function isGroupInsert(next, group) -{ - return (!group || isAncestor(next, group)) - && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter")); -} - -var getNextOutsider = function getNextOutsider(element, group) -{ - return getOutsider(element, group, bind(getNextByClass, FBL, "editable")); -} - -var getPreviousOutsider = function getPreviousOutsider(element, group) -{ - return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable")); -} - -var getInlineParent = function getInlineParent(element) -{ - var lastInline = element; - for (; element; element = element.parentNode) - { - //var s = element.ownerDocument.defaultView.getComputedStyle(element, ""); - var s = isIE ? - element.currentStyle : - element.ownerDocument.defaultView.getComputedStyle(element, ""); - - if (s.display != "inline") - return lastInline; - else - lastInline = element; - } - return null; -} - -var insertTab = function insertTab() -{ - insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.Editor); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0) - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -// next-generation Console Panel (will override consoje.js) -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -/* -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -/**/ -/* - -// new offline message handler -o = {x:1,y:2}; - -r = Firebug.getRep(o); - -r.tag.tag.compile(); - -outputs = []; -html = r.tag.renderHTML({object:o}, outputs); - - -// finish rendering the template (the DOM part) -target = $("build"); -target.innerHTML = html; -root = target.firstChild; - -domArgs = [root, r.tag.context, 0]; -domArgs.push.apply(domArgs, r.tag.domArgs); -domArgs.push.apply(domArgs, outputs); -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs); - - - */ -var consoleQueue = []; -var lastHighlightedObject; -var FirebugContext = Env.browser; - -// ************************************************************************************************ - -var maxQueueRequests = 500; - -// ************************************************************************************************ - -Firebug.ConsoleBase = -{ - log: function(object, context, className, rep, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]); - return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle); - }, - - logFormatted: function(objects, context, className, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]); - return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle); - }, - - openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush) - { - return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle); - }, - - closeGroup: function(context, noThrottle) - { - return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true); - }, - - logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow) - { - // TODO: xxxpedro console console2 - noThrottle = true; // xxxpedro forced because there is no TabContext yet - - if (!context) - context = FirebugContext; - - if (FBTrace.DBG_ERRORS && !context) - FBTrace.sysout("Console.logRow has no context, skipping objects", objects); - - if (!context) - return; - - if (noThrottle || !context) - { - var panel = this.getPanel(context); - if (panel) - { - var row = panel.append(appender, objects, className, rep, sourceLink, noRow); - var container = panel.panelNode; - - // TODO: xxxpedro what is this? console console2 - /* - var template = Firebug.NetMonitor.NetLimit; - - while (container.childNodes.length > maxQueueRequests + 1) - { - clearDomplate(container.firstChild.nextSibling); - container.removeChild(container.firstChild.nextSibling); - panel.limit.limitInfo.totalCount++; - template.updateCounter(panel.limit); - } - dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]); - /**/ - return row; - } - else - { - consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]); - } - } - else - { - if (!context.throttle) - { - //FBTrace.sysout("console.logRow has not context.throttle! "); - return; - } - var args = [appender, objects, context, className, rep, sourceLink, true, noRow]; - context.throttle(this.logRow, this, args); - } - }, - - appendFormatted: function(args, row, context) - { - if (!context) - context = FirebugContext; - - var panel = this.getPanel(context); - panel.appendFormatted(args, row); - }, - - clear: function(context) - { - if (!context) - //context = FirebugContext; - context = Firebug.context; - - /* - if (context) - Firebug.Errors.clear(context); - /**/ - - var panel = this.getPanel(context, true); - if (panel) - { - panel.clear(); - } - }, - - // Override to direct output to your panel - getPanel: function(context, noCreate) - { - //return context.getPanel("console", noCreate); - // TODO: xxxpedro console console2 - return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null; - } - -}; - -// ************************************************************************************************ - -//TODO: xxxpedro -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase); -var ActivableConsole = extend(Firebug.ConsoleBase, -{ - isAlwaysEnabled: function() - { - return true; - } -}); - -Firebug.Console = Firebug.Console = extend(ActivableConsole, -//Firebug.Console = extend(ActivableConsole, -{ - dispatchName: "console", - - error: function() - { - Firebug.Console.logFormatted(arguments, Firebug.browser, "error"); - }, - - flush: function() - { - dispatch(this.fbListeners,"flush",[]); - - for (var i=0, length=consoleQueue.length; i objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - if (typeof(object) != "undefined") - this.appendObject(object, row, part.rep); - else - this.appendObject(part.type, row, FirebugReps.Text); - } - else - FirebugReps.Text.tag.append({object: part}, row); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - logText(" ", row); - var object = objects[i]; - if (typeof(object) == "string") - FirebugReps.Text.tag.append({object: object}, row); - else - this.appendObject(object, row); - } - }, - - appendOpenGroup: function(objects, row, rep) - { - if (!this.groups) - this.groups = []; - - setClass(row, "logGroup"); - setClass(row, "opened"); - - var innerRow = this.createRow("logRow"); - setClass(innerRow, "logGroupLabel"); - if (rep) - rep.tag.replace({"objects": objects}, innerRow); - else - this.appendFormatted(objects, innerRow, rep); - row.appendChild(innerRow); - //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]); - var groupBody = this.createRow("logGroupBody"); - row.appendChild(groupBody); - groupBody.setAttribute('role', 'group'); - this.groups.push(groupBody); - - addEvent(innerRow, "mousedown", function(event) - { - if (isLeftClick(event)) - { - //console.log(event.currentTarget == event.target); - - var target = event.target || event.srcElement; - - target = getAncestorByClass(target, "logGroupLabel"); - - var groupRow = target.parentNode; - - if (hasClass(groupRow, "opened")) - { - removeClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'false'); - } - else - { - setClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'true'); - } - } - }); - }, - - appendCloseGroup: function(object, row, rep) - { - if (this.groups) - this.groups.pop(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TODO: xxxpedro console2 - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - onMouseDown: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - var repObject = object ? object.repObject : null; - - if (!repObject) - { - return; - } - - if (hasClass(object, "objectLink-object")) - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(repObject, true); - } - else if (hasClass(object, "objectLink-element")) - { - Firebug.chrome.selectPanel("HTML"); - Firebug.chrome.getPanel("HTML").select(repObject, true); - } - - /* - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - /**/ - - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "Console", - title: "Console", - //searchable: true, - //breakable: true, - //editable: false, - - options: - { - hasCommandLine: true, - hasToolButtons: true, - isPreRendered: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.context = Firebug.browser.window; - this.document = Firebug.chrome.document; - this.onMouseMove = bind(this.onMouseMove, this); - this.onMouseDown = bind(this.onMouseDown, this); - - this.clearButton = new Button({ - element: $("fbConsole_btClear"), - owner: Firebug.Console, - onClick: Firebug.Console.clear - }); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); // loads persisted content - //Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content - - if (!this.persistedContent && Firebug.Console.isAlwaysEnabled()) - { - this.insertLogLimit(this.context); - - // Initialize log limit and listen for changes. - this.updateMaxLimit(); - - if (this.context.consoleReloadWarning) // we have not yet injected the console - this.insertReloadWarning(); - } - - //Firebug.Console.injector.install(Firebug.browser.window); - - addEvent(this.panelNode, "mouseover", this.onMouseMove); - addEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.clearButton.initialize(); - - //consolex.trace(); - //TODO: xxxpedro remove this - /* - Firebug.Console.openGroup(["asd"], null, "group", null, false); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - /**/ - - //TODO: xxxpedro preferences prefs - //prefs.addObserver(Firebug.prefDomain, this, false); - }, - - initializeNode : function() - { - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]); - if (FBTrace.DBG_CONSOLE) - { - this.onScroller = bind(this.onScroll, this); - addEvent(this.panelNode, "scroll", this.onScroller); - } - - this.onResizer = bind(this.onResize, this); - this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - addEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - destroyNode : function() - { - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]); - if (this.onScroller) - removeEvent(this.panelNode, "scroll", this.onScroller); - - //removeEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - shutdown: function() - { - //TODO: xxxpedro console console2 - this.clearButton.shutdown(); - - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - - //TODO: xxxpedro preferences prefs - //prefs.removeObserver(Firebug.prefDomain, this, false); - }, - - ishow: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel show; " + this.context.getName(), state); - - var enabled = Firebug.Console.isAlwaysEnabled(); - if (enabled) - { - Firebug.Console.disabledPanelPage.hide(this); - this.showCommandLine(true); - this.showToolbarButtons("fbConsoleButtons", true); - Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent); - - if (state && state.wasScrolledToBottom) - { - this.wasScrolledToBottom = state.wasScrolledToBottom; - delete state.wasScrolledToBottom; - } - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - } - else - { - this.hide(state); - Firebug.Console.disabledPanelPage.show(this); - } - }, - - ihide: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel hide; " + this.context.getName(), state); - - this.showToolbarButtons("fbConsoleButtons", false); - this.showCommandLine(false); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - destroy: function(state) - { - if (this.panelNode.offsetHeight) - this.wasScrolledToBottom = isScrolledToBottom(this.panelNode); - - if (state) - state.wasScrolledToBottom = this.wasScrolledToBottom; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - shouldBreakOnNext: function() - { - // xxxHonza: shouldn't the breakOnErrors be context related? - // xxxJJB, yes, but we can't support it because we can't yet tell - // which window the error is on. - return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors"); - }, - - getBreakOnNextTooltip: function(enabled) - { - return (enabled ? $STR("console.Disable Break On All Errors") : - $STR("console.Break On All Errors")); - }, - - enablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.enablePanel.apply(this, arguments); - - this.showCommandLine(true); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - }, - - disablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - - this.showCommandLine(false); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowJavaScriptErrors", "showJSErrors"), - optionMenu("ShowJavaScriptWarnings", "showJSWarnings"), - optionMenu("ShowCSSErrors", "showCSSErrors"), - optionMenu("ShowXMLErrors", "showXMLErrors"), - optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"), - optionMenu("ShowChromeErrors", "showChromeErrors"), - optionMenu("ShowChromeMessages", "showChromeMessages"), - optionMenu("ShowExternalErrors", "showExternalErrors"), - optionMenu("ShowNetworkErrors", "showNetworkErrors"), - this.getShowStackTraceMenuItem(), - this.getStrictOptionMenuItem(), - "-", - optionMenu("LargeCommandLine", "largeCommandLine") - ]; - }, - - getShowStackTraceMenuItem: function() - { - var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace"); - if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled()) - menuItem.disabled = true; - return menuItem; - }, - - getStrictOptionMenuItem: function() - { - var strictDomain = "javascript.options"; - var strictName = "strict"; - var strictValue = prefs.getBoolPref(strictDomain+"."+strictName); - return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue, - command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) }; - }, - - getBreakOnMenuItems: function() - { - //xxxHonza: no BON options for now. - /*return [ - optionMenu("console.option.Persist Break On Error", "persistBreakOnError") - ];*/ - return []; - }, - - search: function(text) - { - if (!text) - return; - - // Make previously visible nodes invisible again - if (this.matchSet) - { - for (var i in this.matchSet) - removeClass(this.matchSet[i], "matched"); - } - - this.matchSet = []; - - function findRow(node) { return getAncestorByClass(node, "logRow"); } - var search = new TextSearch(this.panelNode, findRow); - - var logRow = search.find(text); - if (!logRow) - { - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]); - return false; - } - for (; logRow; logRow = search.findNext()) - { - setClass(logRow, "matched"); - this.matchSet.push(logRow); - } - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]); - return true; - }, - - breakOnNext: function(breaking) - { - Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // private - - createRow: function(rowName, className) - { - var elt = this.document.createElement("div"); - elt.className = rowName + (className ? " " + rowName + "-" + className : ""); - return elt; - }, - - getTopContainer: function() - { - if (this.groups && this.groups.length) - return this.groups[this.groups.length-1]; - else - return this.panelNode; - }, - - filterLogRow: function(logRow, scrolledToBottom) - { - if (this.searchText) - { - setClass(logRow, "matching"); - setClass(logRow, "matched"); - - // Search after a delay because we must wait for a frame to be created for - // the new logRow so that the finder will be able to locate it - setTimeout(bindFixed(function() - { - if (this.searchFilter(this.searchText, logRow)) - this.matchSet.push(logRow); - else - removeClass(logRow, "matched"); - - removeClass(logRow, "matching"); - - if (scrolledToBottom) - scrollToBottom(this.panelNode); - }, this), 100); - } - }, - - searchFilter: function(text, logRow) - { - var count = this.panelNode.childNodes.length; - var searchRange = this.document.createRange(); - searchRange.setStart(this.panelNode, 0); - searchRange.setEnd(this.panelNode, count); - - var startPt = this.document.createRange(); - startPt.setStartBefore(logRow); - - var endPt = this.document.createRange(); - endPt.setStartAfter(logRow); - - return finder.Find(text, searchRange, startPt, endPt) != null; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - // xxxHonza check this out. - var prefDomain = "Firebug.extension."; - var prefName = data.substr(prefDomain.length); - if (prefName == "console.logLimit") - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = 1000; - //TODO: xxxpedro preferences log limit? - //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - }, - - showCommandLine: function(shouldShow) - { - //TODO: xxxpedro show command line important - return; - - if (shouldShow) - { - collapse(Firebug.chrome.$("fbCommandBox"), false); - Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome); - } - else - { - // Make sure that entire content of the Console panel is hidden when - // the panel is disabled. - Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine); - collapse(Firebug.chrome.$("fbCommandBox"), true); - } - }, - - onScroll: function(event) - { - // Update the scroll position flag if the position changes. - this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", wasScrolledToBottom: " + - this.context.getName(), event); - }, - - onResize: function(event) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight + - ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " + - this.panelNode.scrollHeight + ", " + this.context.getName(), event); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - } -}); - -// ************************************************************************************************ - -function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -} - -// ************************************************************************************************ - -var appendObject = Firebug.ConsolePanel.prototype.appendObject; -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted; -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup; -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup; - -// ************************************************************************************************ - -//Firebug.registerActivableModule(Firebug.Console); -Firebug.registerModule(Firebug.Console); -Firebug.registerPanel(Firebug.ConsolePanel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -var frameCounters = {}; -var traceRecursion = 0; - -Firebug.Console.injector = -{ - install: function(context) - { - var win = context.window; - - var consoleHandler = new FirebugConsoleHandler(context, win); - - var properties = - [ - "log", - "debug", - "info", - "warn", - "error", - "assert", - "dir", - "dirxml", - "group", - "groupCollapsed", - "groupEnd", - "time", - "timeEnd", - "count", - "trace", - "profile", - "profileEnd", - "clear", - "open", - "close" - ]; - - var Handler = function(name) - { - var c = consoleHandler; - var f = consoleHandler[name]; - return function(){return f.apply(c,arguments)}; - }; - - var installer = function(c) - { - for (var i=0, l=properties.length; i 1) - { - traceRecursion--; - return; - } - - var frames = []; - - for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller) - { - if (wasVisited(fn)) break; - - var args = []; - - for (var i = 0, l = fn.arguments.length; i < l; ++i) - { - args.push({value: fn.arguments[i]}); - } - - frames.push({fn: fn, name: getFuncName(fn), args: args}); - } - - - // **************************************************************************************** - - try - { - (0)(); - } - catch(e) - { - var result = e; - - var stack = - result.stack || // Firefox / Google Chrome - result.stacktrace || // Opera - ""; - - stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks - var items = stack.split(/[\n\r]/); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Google Chrome - if (FBL.isSafari) - { - //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/; - //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/; - - var reChromeStackItemName = /\s*\($/; - var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/; - - var framePos = 0; - for (var i=4, length=items.length; i 1) - { - objects = [errorObject]; - for (var i = 1; i < args.length; i++) - objects.push(args[i]); - } - - var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle - row.scrollIntoView(); - } - - function getComponentsStackDump() - { - // Starting with our stack, walk back to the user-level code - var frame = Components.stack; - var userURL = win.location.href.toString(); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame); - - // Drop frames until we get into user code. - while (frame && FBL.isSystemURL(frame.filename) ) - frame = frame.caller; - - // Drop two more frames, the injected console function and firebugAppendConsole() - if (frame) - frame = frame.caller; - if (frame) - frame = frame.caller; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame); - - return frame; - } - - function getStackLink() - { - // TODO: xxxpedro console2 - return; - //return FBL.getFrameSourceLink(getComponentsStackDump()); - } - - function getJSDUserStack() - { - var trace = FBL.getCurrentStackTrace(context); - - var frames = trace ? trace.frames : null; - if (frames && (frames.length > 0) ) - { - var oldest = frames.length - 1; // 6 - 1 = 5 - for (var i = 0; i < frames.length; i++) - { - if (frames[oldest - i].href.indexOf("chrome:") == 0) break; - var fn = frames[oldest - i].fn + ""; - if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break; // command line - } - FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace); - trace.frames = trace.frames.slice(2 - i); // take the oldest frames, leave 2 behind they are injection code - - return trace; - } - else - return "Firebug failed to get stack trace with any frames"; - } -} - -// ************************************************************************************************ -// Register console namespace - -FBL.registerConsole = function() -{ - //TODO: xxxpedro console options override - //if (Env.Options.overrideConsole) - var win = Env.browser.window; - Firebug.Console.injector.install(win); -}; - -registerConsole(); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -// ************************************************************************************************ -// Globals - -var commandPrefix = ">>>"; -var reOpenBracket = /[\[\(\{]/; -var reCloseBracket = /[\]\)\}]/; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var commandHistory = []; -var commandPointer = -1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var isAutoCompleting = null; -var autoCompletePrefix = null; -var autoCompleteExpr = null; -var autoCompleteBuffer = null; -var autoCompletePosition = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var fbCommandLine = null; -var fbLargeCommandLine = null; -var fbLargeCommandButtons = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _completion = -{ - window: - [ - "console" - ], - - document: - [ - "getElementById", - "getElementsByTagName" - ] -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var _stack = function(command) -{ - commandHistory.push(command); - commandPointer = commandHistory.length; -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -// ************************************************************************************************ -// CommandLine - -Firebug.CommandLine = extend(Firebug.Module, -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - element: null, - isMultiLine: false, - isActive: false, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - initialize: function(doc) - { - this.clear = bind(this.clear, this); - this.enter = bind(this.enter, this); - - this.onError = bind(this.onError, this); - this.onKeyDown = bind(this.onKeyDown, this); - this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this); - - addEvent(Firebug.browser.window, "error", this.onError); - addEvent(Firebug.chrome.window, "error", this.onError); - }, - - shutdown: function(doc) - { - this.deactivate(); - - removeEvent(Firebug.browser.window, "error", this.onError); - removeEvent(Firebug.chrome.window, "error", this.onError); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - activate: function(multiLine, hideToggleIcon, onRun) - { - defineCommandLineAPI(); - - if (this.isActive) - { - if (this.isMultiLine == multiLine) return; - - this.deactivate(); - } - - fbCommandLine = $("fbCommandLine"); - fbLargeCommandLine = $("fbLargeCommandLine"); - fbLargeCommandButtons = $("fbLargeCommandButtons"); - - if (multiLine) - { - onRun = onRun || this.enter; - - this.isMultiLine = true; - - this.element = fbLargeCommandLine; - - addEvent(this.element, "keydown", this.onMultiLineKeyDown); - - addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton = new Button({ - element: $("fbCommand_btRun"), - owner: Firebug.CommandLine, - onClick: onRun - }); - - this.runButton.initialize(); - - this.clearButton = new Button({ - element: $("fbCommand_btClear"), - owner: Firebug.CommandLine, - onClick: this.clear - }); - - this.clearButton.initialize(); - } - else - { - this.isMultiLine = false; - this.element = fbCommandLine; - - if (!fbCommandLine) - return; - - addEvent(this.element, "keydown", this.onKeyDown); - } - - //Firebug.Console.log("activate", this.element); - - if (isOpera) - fixOperaTabKey(this.element); - - if(this.lastValue) - this.element.value = this.lastValue; - - this.isActive = true; - }, - - deactivate: function() - { - if (!this.isActive) return; - - //Firebug.Console.log("deactivate", this.element); - - this.isActive = false; - - this.lastValue = this.element.value; - - if (this.isMultiLine) - { - removeEvent(this.element, "keydown", this.onMultiLineKeyDown); - - removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine); - - this.runButton.destroy(); - this.clearButton.destroy(); - } - else - { - removeEvent(this.element, "keydown", this.onKeyDown); - } - - this.element = null - delete this.element; - - fbCommandLine = null; - fbLargeCommandLine = null; - fbLargeCommandButtons = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - focus: function() - { - this.element.focus(); - }, - - blur: function() - { - this.element.blur(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - clear: function() - { - this.element.value = ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - evaluate: function(expr) - { - // TODO: need to register the API in console.firebug.commandLineAPI - var api = "Firebug.CommandLine.API" - - var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error); - - return result; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - enter: function() - { - var command = this.element.value; - - if (!command) return; - - _stack(command); - - Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text); - - var result = this.evaluate(command); - - Firebug.Console.log(result); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - prevCommand: function() - { - if (commandPointer > 0 && commandHistory.length > 0) - this.element.value = commandHistory[--commandPointer]; - }, - - nextCommand: function() - { - var element = this.element; - - var limit = commandHistory.length -1; - var i = commandPointer; - - if (i < limit) - element.value = commandHistory[++commandPointer]; - - else if (i == limit) - { - ++commandPointer; - element.value = ""; - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - autocomplete: function(reverse) - { - var element = this.element; - - var command = element.value; - var offset = getExpressionOffset(command); - - var valBegin = offset ? command.substr(0, offset) : ""; - var val = command.substr(offset); - - var buffer, obj, objName, commandBegin, result, prefix; - - // if it is the beginning of the completion - if(!isAutoCompleting) - { - - // group1 - command begin - // group2 - base object - // group3 - property prefix - var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/; - var r = reObj.exec(val); - - // parse command - if (r[1] || r[2] || r[3]) - { - commandBegin = r[1] || ""; - objName = r[2] || ""; - prefix = r[3] || ""; - } - else if (val == "") - { - commandBegin = objName = prefix = ""; - } else - return; - - isAutoCompleting = true; - - // find base object - if(objName == "") - obj = window; - - else - { - objName = objName.replace(/\.$/, ""); - - var n = objName.split("."); - var target = window, o; - - for (var i=0, ni; ni = n[i]; i++) - { - if (o = target[ni]) - target = o; - - else - { - target = null; - break; - } - } - obj = target; - } - - // map base object - if(obj) - { - autoCompletePrefix = prefix; - autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : ""); - autoCompletePosition = -1; - - buffer = autoCompleteBuffer = isIE ? - _completion[objName || "window"] || [] : []; - - for(var p in obj) - buffer.push(p); - } - - // if it is the continuation of the last completion - } else - buffer = autoCompleteBuffer; - - if (buffer) - { - prefix = autoCompletePrefix; - - var diff = reverse ? -1 : 1; - - for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i', msg, '', - '' - ]; - - // TODO: xxxpedro ajust to Console2 - //Firebug.Console.writeRow(html, "error"); - }, - - onKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - /*tab, shift, control, alt*/ - if (code != 9 && code != 16 && code != 17 && code != 18) - { - isAutoCompleting = false; - } - - if (code == 13 /* enter */) - { - this.enter(); - this.clear(); - } - else if (code == 27 /* ESC */) - { - setTimeout(this.clear, 0); - } - else if (code == 38 /* up */) - { - this.prevCommand(); - } - else if (code == 40 /* down */) - { - this.nextCommand(); - } - else if (code == 9 /* tab */) - { - this.autocomplete(e.shiftKey); - } - else - return; - - cancelEvent(e, true); - return false; - }, - - onMultiLineKeyDown: function(e) - { - e = e || event; - - var code = e.keyCode; - - if (code == 13 /* enter */ && e.ctrlKey) - { - this.enter(); - } - } -}); - -Firebug.registerModule(Firebug.CommandLine); - - -// ************************************************************************************************ -// - -function getExpressionOffset(command) -{ - // XXXjoe This is kind of a poor-man's JavaScript parser - trying - // to find the start of the expression that the cursor is inside. - // Not 100% fool proof, but hey... - - var bracketCount = 0; - - var start = command.length-1; - for (; start >= 0; --start) - { - var c = command[start]; - if ((c == "," || c == ";" || c == " ") && !bracketCount) - break; - if (reOpenBracket.test(c)) - { - if (bracketCount) - --bracketCount; - else - break; - } - else if (reCloseBracket.test(c)) - ++bracketCount; - } - - return start + 1; -} - -// ************************************************************************************************ -// CommandLine API - -var CommandLineAPI = -{ - $: function(id) - { - return Firebug.browser.document.getElementById(id) - }, - - $$: function(selector, context) - { - context = context || Firebug.browser.document; - return Firebug.Selector ? - Firebug.Selector(selector, context) : - Firebug.Console.error("Firebug.Selector module not loaded."); - }, - - $0: null, - - $1: null, - - dir: function(o) - { - Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable); - }, - - dirxml: function(o) - { - ///if (o instanceof Window) - if (instanceOf(o, "Window")) - o = o.document.documentElement; - ///else if (o instanceof Document) - else if (instanceOf(o, "Document")) - o = o.documentElement; - - // TODO: xxxpedro html3 - ///Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement); - var div = Firebug.Console.log(o, Firebug.context, "dirxml"); - var html = []; - Firebug.Reps.appendNode(o, html); - div.innerHTML = html.join(""); - - } -}; - -// ************************************************************************************************ - -var defineCommandLineAPI = function defineCommandLineAPI() -{ - Firebug.CommandLine.API = {}; - for (var m in CommandLineAPI) - if (!Env.browser.window[m]) - Firebug.CommandLine.API[m] = CommandLineAPI[m]; - - var stack = FirebugChrome.htmlSelectionStack; - if (stack) - { - Firebug.CommandLine.API.$0 = stack[0]; - Firebug.CommandLine.API.$1 = stack[1]; - } -}; - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -if (Env.Options.disableXHRListener) - return; - -// ************************************************************************************************ -// XHRSpy - -var XHRSpy = function() -{ - this.requestHeaders = []; - this.responseHeaders = []; -}; - -XHRSpy.prototype = -{ - method: null, - url: null, - async: null, - - xhrRequest: null, - - href: null, - - loaded: false, - - logRow: null, - - responseText: null, - - requestHeaders: null, - responseHeaders: null, - - sourceLink: null, // {href:"file.html", line: 22} - - getURL: function() - { - return this.href; - } -}; - -// ************************************************************************************************ -// XMLHttpRequestWrapper - -var XMLHttpRequestWrapper = function(activeXObject) -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal variables - - var xhrRequest = typeof activeXObject != "undefined" ? - activeXObject : - new _XMLHttpRequest(), - - spy = new XHRSpy(), - - self = this, - - reqType, - reqUrl, - reqStartTS; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal methods - - var updateSelfPropertiesIgnore = { - abort: 1, - channel: 1, - getAllResponseHeaders: 1, - getInterface: 1, - getResponseHeader: 1, - mozBackgroundRequest: 1, - multipart: 1, - onreadystatechange: 1, - open: 1, - send: 1, - setRequestHeader: 1 - }; - - var updateSelfProperties = function() - { - if (supportsXHRIterator) - { - for (var propName in xhrRequest) - { - if (propName in updateSelfPropertiesIgnore) - continue; - - try - { - var propValue = xhrRequest[propName]; - - if (propValue && !isFunction(propValue)) - self[propName] = propValue; - } - catch(E) - { - //console.log(propName, E.message); - } - } - } - else - { - // will fail to read these xhrRequest properties if the request is not completed - if (xhrRequest.readyState == 4) - { - self.status = xhrRequest.status; - self.statusText = xhrRequest.statusText; - self.responseText = xhrRequest.responseText; - self.responseXML = xhrRequest.responseXML; - } - } - }; - - var updateXHRPropertiesIgnore = { - channel: 1, - onreadystatechange: 1, - readyState: 1, - responseBody: 1, - responseText: 1, - responseXML: 1, - status: 1, - statusText: 1, - upload: 1 - }; - - var updateXHRProperties = function() - { - for (var propName in self) - { - if (propName in updateXHRPropertiesIgnore) - continue; - - try - { - var propValue = self[propName]; - - if (propValue && !xhrRequest[propName]) - { - xhrRequest[propName] = propValue; - } - } - catch(E) - { - //console.log(propName, E.message); - } - } - }; - - var logXHR = function() - { - var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR); - - if (row) - { - setClass(row, "loading"); - spy.logRow = row; - } - }; - - var finishXHR = function() - { - var duration = new Date().getTime() - reqStartTS; - var success = xhrRequest.status == 200; - - var responseHeadersText = xhrRequest.getAllResponseHeaders(); - var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : []; - var reHeader = /^(\S+):\s*(.*)/; - - for (var i=0, l=responses.length; i 0; - - /**/ - - return this; -}; - -// ************************************************************************************************ -// ActiveXObject Wrapper (IE6 only) - -var _ActiveXObject; -var isIE6 = /msie 6/i.test(navigator.appVersion); - -if (isIE6) -{ - _ActiveXObject = window.ActiveXObject; - - var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; - - window.ActiveXObject = function(name) - { - var error = null; - - try - { - var activeXObject = new _ActiveXObject(name); - } - catch(e) - { - error = e; - } - finally - { - if (!error) - { - if (xhrObjects.indexOf(" " + name + " ") != -1) - return new XMLHttpRequestWrapper(activeXObject); - else - return activeXObject; - } - else - throw error.message; - } - }; -} - -// ************************************************************************************************ - -// Register the XMLHttpRequestWrapper for non-IE6 browsers -if (!isIE6) -{ - var _XMLHttpRequest = XMLHttpRequest; - window.XMLHttpRequest = function() - { - return new XMLHttpRequestWrapper(); - }; -} - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval = 300; -var indentWidth = 18; - -var cacheSession = null; -var contexts = new Array(); -var panelName = "net"; -var maxQueueRequests = 500; -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup -var activeRequests = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var mimeExtensionMap = -{ - "txt": "text/plain", - "html": "text/html", - "htm": "text/html", - "xhtml": "text/html", - "xml": "text/xml", - "css": "text/css", - "js": "application/x-javascript", - "jss": "application/x-javascript", - "jpg": "image/jpg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "png": "image/png", - "bmp": "image/bmp", - "swf": "application/x-shockwave-flash", - "flv": "video/x-flv" -}; - -var fileCategories = -{ - "undefined": 1, - "html": 1, - "css": 1, - "js": 1, - "xhr": 1, - "image": 1, - "flash": 1, - "txt": 1, - "bin": 1 -}; - -var textFileCategories = -{ - "txt": 1, - "html": 1, - "xhr": 1, - "css": 1, - "js": 1 -}; - -var binaryFileCategories = -{ - "bin": 1, - "flash": 1 -}; - -var mimeCategoryMap = -{ - "text/plain": "txt", - "application/octet-stream": "bin", - "text/html": "html", - "text/xml": "html", - "text/css": "css", - "application/x-javascript": "js", - "text/javascript": "js", - "application/javascript" : "js", - "image/jpeg": "image", - "image/jpg": "image", - "image/gif": "image", - "image/png": "image", - "image/bmp": "image", - "application/x-shockwave-flash": "flash", - "video/x-flv": "flash" -}; - -var binaryCategoryMap = -{ - "image": 1, - "flash" : 1 -}; - -// ************************************************************************************************ - -/** - * @module Represents a module object for the Net panel. This object is derived - * from Firebug.ActivableModule in order to support activation (enable/disable). - * This allows to avoid (performance) expensive features if the functionality is not necessary - * for the user. - */ -Firebug.NetMonitor = extend(Firebug.ActivableModule, -{ - dispatchName: "netMonitor", - - clear: function(context) - { - // The user pressed a Clear button so, remove content of the panel... - var panel = context.getPanel(panelName, true); - if (panel) - panel.clear(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - return; - - this.panelName = panelName; - - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - // HTTP observer must be registered now (and not in monitorContext, since if a - // page is opened in a new tab the top document request would be missed otherwise. - NetHttpObserver.registerObserver(); - NetHttpActivityObserver.registerObserver(); - - Firebug.Debugger.addListener(this.DebuggerListener); - }, - - shutdown: function() - { - return; - - prefs.removeObserver(Firebug.prefDomain, this, false); - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - - NetHttpObserver.unregisterObserver(); - NetHttpActivityObserver.unregisterObserver(); - - Firebug.Debugger.removeListener(this.DebuggerListener); - } -}); - - -/** - * @domplate Represents a template that is used to reneder detailed info about a request. - * This template is rendered when a request is expanded. - */ -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoBody", _repObject: "$file"}, - TAG("$infoTabs", {file: "$file"}), - TAG("$infoBodies", {file: "$file"}) - ), - - infoTabs: - DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"}, - A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Params", - $collapsed: "$file|hideParams"}, - $STR("URLParameters") - ), - A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Headers"}, - $STR("Headers") - ), - A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Post", - $collapsed: "$file|hidePost"}, - $STR("Post") - ), - A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Put", - $collapsed: "$file|hidePut"}, - $STR("Put") - ), - A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Response", - $collapsed: "$file|hideResponse"}, - $STR("Response") - ), - A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Cache", - $collapsed: "$file|hideCache"}, - $STR("Cache") - ), - A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Html", - $collapsed: "$file|hideHtml"}, - $STR("HTML") - ) - ), - - infoBodies: - DIV({"class": "netInfoBodies outerFocusRow"}, - TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel", - cellpadding: 0, cellspacing: 0}, TBODY()), - DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}), - PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"}, - TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("Cache")}) - ) - ), - DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"}, - IFRAME({"class": "netInfoHtmlPreview", "role": "document"}) - ) - ), - - headerDataTag: - FOR("param", "$headers", - TR({"role": "listitem"}, - TD({"class": "netInfoParamName", "role": "presentation"}, - TAG("$param|getNameTag", {param: "$param"}) - ), - TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line") - ) - ) - ) - ), - - customTab: - A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"}, - "$tabTitle" - ), - - customBody: - DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - nameTag: - SPAN("$param|getParamName"), - - nameWithTooltipTag: - SPAN({title: "$param.name"}, "$param|getParamName"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getNameTag: function(param) - { - return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag; - }, - - getParamName: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - name = name.substr(0, limit) + "..."; - return name; - }, - - getParamTitle: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - return name; - return ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - hideParams: function(file) - { - return !file.urlParams || !file.urlParams.length; - }, - - hidePost: function(file) - { - return file.method.toUpperCase() != "POST"; - }, - - hidePut: function(file) - { - return file.method.toUpperCase() != "PUT"; - }, - - hideResponse: function(file) - { - return false; - //return file.category in binaryFileCategories; - }, - - hideCache: function(file) - { - return true; - //xxxHonza: I don't see any reason why not to display the cache also info for images. - return !file.cacheEntry; // || file.category=="image"; - }, - - hideHtml: function(file) - { - return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml"); - }, - - onClickTab: function(event) - { - this.selectTab(event.currentTarget || event.srcElement); - }, - - getParamValueIterator: function(param) - { - // TODO: xxxpedro console2 - return param.value; - - // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210). - // This is why the second parameter is true. - // The CODE (with style white-space:pre) element preserves whitespaces so they are - // displayed the same, as they come from the server (1194). - // In case of a long header values of post parameters the value must be wrapped (2105). - return wrapText(param.value, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - appendTab: function(netInfoBox, tabId, tabTitle) - { - // Create new tab and body. - var args = {tabId: tabId, tabTitle: tabTitle}; - ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0)); - ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0)); - this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]); - this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]); - }, - - selectTabByName: function(netInfoBox, tabName) - { - var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab"); - if (tab) - this.selectTab(tab); - }, - - selectTab: function(tab) - { - var view = tab.getAttribute("view"); - - var netInfoBox = getAncestorByClass(tab, "netInfoBody"); - - var selectedTab = netInfoBox.selectedTab; - - if (selectedTab) - { - //netInfoBox.selectedText.removeAttribute("selected"); - removeClass(netInfoBox.selectedText, "netInfoTextSelected"); - - removeClass(selectedTab, "netInfoTabSelected"); - //selectedTab.removeAttribute("selected"); - selectedTab.setAttribute("aria-selected", "false"); - } - - var textBodyName = "netInfo" + view + "Text"; - - selectedTab = netInfoBox.selectedTab = tab; - - netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0]; - //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0); - - //netInfoBox.selectedText.setAttribute("selected", "true"); - setClass(netInfoBox.selectedText, "netInfoTextSelected"); - - setClass(selectedTab, "netInfoTabSelected"); - selectedTab.setAttribute("selected", "true"); - selectedTab.setAttribute("aria-selected", "true"); - - var file = Firebug.getRepObject(netInfoBox); - - //var context = Firebug.getElementPanel(netInfoBox).context; - var context = Firebug.chrome; - - this.updateInfo(netInfoBox, file, context); - }, - - updateInfo: function(netInfoBox, file, context) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.updateInfo; file", file); - - if (!netInfoBox) - { - if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS) - FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file); - return; - } - - var tab = netInfoBox.selectedTab; - - if (hasClass(tab, "netInfoParamsTab")) - { - if (file.urlParams && !netInfoBox.urlParamsPresented) - { - netInfoBox.urlParamsPresented = true; - this.insertHeaderRows(netInfoBox, file.urlParams, "Params"); - } - } - - else if (hasClass(tab, "netInfoHeadersTab")) - { - var headersText = $$(".netInfoHeadersText", netInfoBox)[0]; - //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0); - - if (file.responseHeaders && !netInfoBox.responseHeadersPresented) - { - netInfoBox.responseHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders"); - } - - if (file.requestHeaders && !netInfoBox.requestHeadersPresented) - { - netInfoBox.requestHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders"); - } - } - - else if (hasClass(tab, "netInfoPostTab")) - { - if (!netInfoBox.postPresented) - { - netInfoBox.postPresented = true; - //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0); - var postText = $$(".netInfoPostText", netInfoBox)[0]; - NetInfoPostData.render(context, postText, file); - } - } - - else if (hasClass(tab, "netInfoPutTab")) - { - if (!netInfoBox.putPresented) - { - netInfoBox.putPresented = true; - //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0); - var putText = $$(".netInfoPutText", netInfoBox)[0]; - NetInfoPostData.render(context, putText, file); - } - } - - else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented) - { - ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0); - var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0]; - if (file.category == "image") - { - netInfoBox.responsePresented = true; - - var responseImage = netInfoBox.ownerDocument.createElement("img"); - responseImage.src = file.href; - - clearNode(responseTextBox); - responseTextBox.appendChild(responseImage, responseTextBox); - } - else ///if (!(binaryCategoryMap.hasOwnProperty(file.category))) - { - this.setResponseText(file, netInfoBox, responseTextBox, context); - } - } - - else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented) - { - var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0); - if (file.cacheEntry) { - netInfoBox.cachePresented = true; - this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache"); - } - } - - else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented) - { - netInfoBox.htmlPresented = true; - - var text = Utils.getResponseText(file, context); - - ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0); - var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0]; - - ///iframe.contentWindow.document.body.innerHTML = text; - - // TODO: xxxpedro net - remove scripts - var reScript = //gi; - - text = text.replace(reScript, ""); - - iframe.contentWindow.document.write(text); - iframe.contentWindow.document.close(); - } - - // Notify listeners about update so, content of custom tabs can be updated. - dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]); - }, - - setResponseText: function(file, netInfoBox, responseTextBox, context) - { - //********************************************** - //********************************************** - //********************************************** - netInfoBox.responsePresented = true; - // line breaks somehow are different in IE - // make this only once in the initialization? we don't have net panels and modules yet. - if (isIE) - responseTextBox.style.whiteSpace = "nowrap"; - - responseTextBox[ - typeof responseTextBox.textContent != "undefined" ? - "textContent" : - "innerText" - ] = file.responseText; - - return; - //********************************************** - //********************************************** - //********************************************** - - // Get response text and make sure it doesn't exceed the max limit. - var text = Utils.getResponseText(file, context); - var limit = Firebug.netDisplayedResponseLimit + 15; - var limitReached = text ? (text.length > limit) : false; - if (limitReached) - text = text.substr(0, limit) + "..."; - - // Insert the response into the UI. - if (text) - insertWrappedText(text, responseTextBox); - else - insertWrappedText("", responseTextBox); - - // Append a message informing the user that the response isn't fully displayed. - if (limitReached) - { - var object = { - text: $STR("net.responseSizeLimitMessage"), - onClickLink: function() { - var panel = context.getPanel("net", true); - panel.openResponseInTab(file); - } - }; - Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox); - } - - netInfoBox.responsePresented = true; - - if (FBTrace.DBG_NET) - FBTrace.sysout("net.setResponseText; response text updated"); - }, - - insertHeaderRows: function(netInfoBox, headers, tableName, rowName) - { - if (!headers.length) - return; - - var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0]; - //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0); - var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body"); - if (!tbody) - tbody = headersTable.firstChild; - var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title"); - - this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody); - removeClass(titleRow, "collapsed"); - } -}); - -var NetInfoBody = Firebug.NetMonitor.NetInfoBody; - -// ************************************************************************************************ - -/** - * @domplate Used within the Net panel to display raw source of request and response headers - * as well as pretty-formatted summary of these headers. - */ -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoHeadersTable", "role": "tabpanel"}, - DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"}, - SPAN($STR("ResponseHeaders")), - SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "ResponseHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoResponseHeadersBody", "role": "list", - "aria-label": $STR("ResponseHeaders")}) - ), - DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"}, - SPAN($STR("RequestHeaders")), - SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "RequestHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoRequestHeadersBody", "role": "list", - "aria-label": $STR("RequestHeaders")}) - ) - ), - - sourceTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - PRE({"class": "source"}) - ) - ), - - onViewSource: function(event) - { - var target = event.target; - var requestHeaders = (target.rowName == "RequestHeaders"); - - var netInfoBox = getAncestorByClass(target, "netInfoBody"); - var file = netInfoBox.repObject; - - if (target.sourceDisplayed) - { - var headers = requestHeaders ? file.requestHeaders : file.responseHeaders; - this.insertHeaderRows(netInfoBox, headers, target.rowName); - target.innerHTML = $STR("net.headers.view source"); - } - else - { - var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText; - this.insertSource(netInfoBox, source, target.rowName); - target.innerHTML = $STR("net.headers.pretty print"); - } - - target.sourceDisplayed = !target.sourceDisplayed; - - cancelEvent(event); - }, - - insertSource: function(netInfoBox, source, rowName) - { - // This breaks copy to clipboard. - //if (source) - // source = source.replace(/\r\n/gm, "\\r\\n\r\n"); - - ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0); - var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0]; - var node = this.sourceTag.replace({}, tbody); - ///var sourceNode = node.getElementsByClassName("source").item(0); - var sourceNode = $$(".source", node)[0]; - sourceNode.innerHTML = source; - }, - - insertHeaderRows: function(netInfoBox, headers, rowName) - { - var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0]; - var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0]; - - //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0); - //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0); - - clearNode(tbody); - - if (!headers.length) - return; - - NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody); - - var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title"); - removeClass(titleRow, "collapsed"); - }, - - init: function(parent) - { - var rootNode = this.tag.append({}, parent); - - var netInfoBox = getAncestorByClass(parent, "netInfoBody"); - var file = netInfoBox.repObject; - - var viewSource; - - viewSource = $$(".request", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0); - if (file.requestHeadersText) - removeClass(viewSource, "collapsed"); - - viewSource = $$(".response", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0); - if (file.responseHeadersText) - removeClass(viewSource, "collapsed"); - }, - - renderHeaders: function(parent, headers, rowName) - { - if (!parent.firstChild) - this.init(parent); - - this.insertHeaderRows(parent, headers, rowName); - } -}); - -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders; - -// ************************************************************************************************ - -/** - * @domplate Represents posted data within request info (the info, which is visible when - * a request entry is expanded. This template renders content of the Post tab. - */ -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/ -{ - // application/x-www-form-urlencoded - paramsTable: - TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")}, - TR({"class": "netInfoPostParamsTitle", "role": "presentation"}, - TD({colspan: 3, "role": "presentation"}, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parameters"), - SPAN({"class": "netInfoPostContentType"}, - "application/x-www-form-urlencoded" - ) - ) - ) - ) - ) - ), - - // multipart/form-data - partsTable: - TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parts")}, - TR({"class": "netInfoPostPartsTitle", "role": "presentation"}, - TD({colspan: 2, "role":"presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parts"), - SPAN({"class": "netInfoPostContentType"}, - "multipart/form-data" - ) - ) - ) - ) - ) - ), - - // application/json - jsonTable: - TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")}, - TBODY({"role": "list", "aria-label": $STR("JSON")}, - TR({"class": "netInfoPostJSONTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - ///$STR("jsonviewer.tab.JSON") - $STR("JSON") - ) - ) - ), - TR( - TD({"class": "netInfoPostJSONBody"}) - ) - ) - ), - - // application/xml - xmlTable: - TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")}, - TR({"class": "netInfoPostXMLTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("xmlviewer.tab.XML") - ) - ) - ), - TR( - TD({"class": "netInfoPostXMLBody"}) - ) - ) - ), - - sourceTable: - TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Source")}, - TR({"class": "netInfoPostSourceTitle", "role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - DIV({"class": "netInfoPostSource"}, - $STR("net.label.Source") - ) - ) - ) - ) - ), - - sourceBodyTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line") - ) - ) - ), - - getParamValueIterator: function(param) - { - return NetInfoBody.getParamValueIterator(param); - }, - - render: function(context, parentNode, file) - { - //debugger; - var spy = getAncestorByClass(parentNode, "spyHead"); - var spyObject = spy.repObject; - var data = spyObject.data; - - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - var contentType = file.mimeType; - - ///var text = Utils.getPostText(file, context, true); - ///if (text == undefined) - /// return; - - ///if (Utils.isURLEncodedRequest(file, context)) - // fake Utils.isURLEncodedRequest identification - if (contentType && contentType == "application/x-www-form-urlencoded" || - data && data.indexOf("=") != -1) - { - ///var lines = text.split("\n"); - ///var params = parseURLEncodedText(lines[lines.length-1]); - var params = parseURLEncodedTextArray(data); - if (params) - this.insertParameters(parentNode, params); - } - - ///if (Utils.isMultiPartRequest(file, context)) - ///{ - /// var data = this.parseMultiPartText(file, context); - /// if (data) - /// this.insertParts(parentNode, data); - ///} - - // moved to the top - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - - ///if (Firebug.JSONViewerModel.isJSON(contentType)) - var jsonData = { - responseText: data - }; - - if (Firebug.JSONViewerModel.isJSON(contentType, data)) - ///this.insertJSON(parentNode, file, context); - this.insertJSON(parentNode, jsonData, context); - - ///if (Firebug.XMLViewerModel.isXML(contentType)) - /// this.insertXML(parentNode, file, context); - - ///var postText = Utils.getPostText(file, context); - ///postText = Utils.formatPostText(postText); - var postText = data; - if (postText) - this.insertSource(parentNode, postText); - }, - - insertParameters: function(parentNode, params) - { - if (!params || !params.length) - return; - - var paramTable = this.paramsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostParamsTitle", paramTable)[0]; - //var paramTable = this.paramsTable.append(null, parentNode); - //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0); - - var tbody = paramTable.getElementsByTagName("tbody")[0]; - - NetInfoBody.headerDataTag.insertRows({headers: params}, row); - }, - - insertParts: function(parentNode, data) - { - if (!data.params || !data.params.length) - return; - - var partsTable = this.partsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostPartsTitle", paramTable)[0]; - //var partsTable = this.partsTable.append(null, parentNode); - //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0); - - NetInfoBody.headerDataTag.insertRows({headers: data.params}, row); - }, - - insertJSON: function(parentNode, file, context) - { - ///var text = Utils.getPostText(file, context); - var text = file.responseText; - ///var data = parseJSONString(text, "http://" + file.request.originalURI.host); - var data = parseJSONString(text); - if (!data) - return; - - ///var jsonTable = this.jsonTable.append(null, parentNode); - var jsonTable = this.jsonTable.append({}, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0); - var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0]; - - if (!this.toggles) - this.toggles = {}; - - Firebug.DOMPanel.DirTable.tag.replace( - {object: data, toggles: this.toggles}, jsonBody); - }, - - insertXML: function(parentNode, file, context) - { - var text = Utils.getPostText(file, context); - - var jsonTable = this.xmlTable.append(null, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0); - var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0]; - - Firebug.XMLViewerModel.insertXML(jsonBody, text); - }, - - insertSource: function(parentNode, text) - { - var sourceTable = this.sourceTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostSourceTitle", sourceTable)[0]; - //var sourceTable = this.sourceTable.append(null, parentNode); - //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0); - - var param = {value: [text]}; - this.sourceBodyTag.insertRows({param: param}, row); - }, - - parseMultiPartText: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text == undefined) - return null; - - FBTrace.sysout("net.parseMultiPartText; boundary: ", text); - - var boundary = text.match(/\s*boundary=\s*(.*)/)[1]; - - var divider = "\r\n\r\n"; - var bodyStart = text.indexOf(divider); - var body = text.substr(bodyStart + divider.length); - - var postData = {}; - postData.mimeType = "multipart/form-data"; - postData.params = []; - - var parts = body.split("--" + boundary); - for (var i=0; i 1) ? m[1] : "", - value: trim(part[1]) - }); - } - - return postData; - } -}); - -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData; - -// ************************************************************************************************ - - -// TODO: xxxpedro net i18n -var $STRP = function(a){return a;}; - -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep, -{ - collapsed: true, - - tableTag: - DIV( - TABLE({width: "100%", cellpadding: 0, cellspacing: 0}, - TBODY() - ) - ), - - limitTag: - TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"}, - TD({"class": "netCol netLimitCol", colspan: 6}, - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY( - TR( - TD( - SPAN({"class": "netLimitLabel"}, - $STRP("plural.Limit_Exceeded", [0]) - ) - ), - TD({style: "width:100%"}), - TD( - BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle", - onclick: "$onPreferences"}, - $STR("LimitPrefs") - ) - ), - TD(" ") - ) - ) - ) - ) - ), - - isCollapsed: function() - { - return this.collapsed; - }, - - onPreferences: function(event) - { - openNewTab("about:config"); - }, - - updateCounter: function(row) - { - removeClass(row, "collapsed"); - - // Update info within the limit row. - var limitLabel = row.getElementsByClassName("netLimitLabel").item(0); - limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]); - }, - - createTable: function(parent, limitInfo) - { - var table = this.tableTag.replace({}, parent); - var row = this.createRow(table.firstChild.firstChild, limitInfo); - return [table, row]; - }, - - createRow: function(parent, limitInfo) - { - var row = this.limitTag.insertRows(limitInfo, parent, this)[0]; - row.limitInfo = limitInfo; - return row; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - if (data.indexOf("net.logLimit") != -1) - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - } -}); - -var NetLimit = Firebug.NetMonitor.NetLimit; - -// ************************************************************************************************ - -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "netInfoResponseSizeLimit"}, - SPAN("$object.beforeLink"), - A({"class": "objectLink", onclick: "$onClickLink"}, - "$object.linkText" - ), - SPAN("$object.afterLink") - ), - - reLink: /^(.*)(.*)<\/a>(.*$)/, - append: function(obj, parent) - { - var m = obj.text.match(this.reLink); - return this.tag.append({onClickLink: obj.onClickLink, - object: { - beforeLink: m[1], - linkText: m[2], - afterLink: m[3] - }}, parent, this); - } -}); - -// ************************************************************************************************ -// ************************************************************************************************ - -Firebug.NetMonitor.Utils = -{ - findHeader: function(headers, name) - { - if (!headers) - return null; - - name = name.toLowerCase(); - for (var i = 0; i < headers.length; ++i) - { - var headerName = headers[i].name.toLowerCase(); - if (headerName == name) - return headers[i].value; - } - }, - - formatPostText: function(text) - { - if (text instanceof XMLDocument) - return getElementXML(text.documentElement); - else - return text; - }, - - getPostText: function(file, context, noLimit) - { - if (!file.postText) - { - file.postText = readPostTextFromRequest(file.request, context); - - if (!file.postText && context) - file.postText = readPostTextFromPage(file.href, context); - } - - if (!file.postText) - return file.postText; - - var limit = Firebug.netDisplayedPostBodyLimit; - if (file.postText.length > limit && !noLimit) - { - return cropString(file.postText, limit, - "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n"); - } - - return file.postText; - }, - - getResponseText: function(file, context) - { - // The response can be also empty string so, check agains "undefined". - return (typeof(file.responseText) != "undefined")? file.responseText : - context.sourceCache.loadText(file.href, file.method, file); - }, - - isURLEncodedRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0) - return true; - - // The header value doesn't have to be always exactly "application/x-www-form-urlencoded", - // there can be even charset specified. So, use indexOf rather than just "==". - var headerValue = Utils.findHeader(file.requestHeaders, "content-type"); - if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0) - return true; - - return false; - }, - - isMultiPartRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0) - return true; - return false; - }, - - getMimeType: function(mimeType, uri) - { - if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType))) - { - var ext = getFileExtension(uri); - if (!ext) - return mimeType; - else - { - var extMimeType = mimeExtensionMap[ext.toLowerCase()]; - return extMimeType ? extMimeType : mimeType; - } - } - else - return mimeType; - }, - - getDateFromSeconds: function(s) - { - var d = new Date(); - d.setTime(s*1000); - return d; - }, - - getHttpHeaders: function(request, file) - { - try - { - var http = QI(request, Ci.nsIHttpChannel); - file.status = request.responseStatus; - - // xxxHonza: is there any problem to do this in requestedFile method? - file.method = http.requestMethod; - file.urlParams = parseURLParams(file.href); - file.mimeType = Utils.getMimeType(request.contentType, request.name); - - if (!file.responseHeaders && Firebug.collectHttpHeaders) - { - var requestHeaders = [], responseHeaders = []; - - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - requestHeaders.push({name: name, value: value}); - } - }); - http.visitResponseHeaders({ - visitHeader: function(name, value) - { - responseHeaders.push({name: name, value: value}); - } - }); - - file.requestHeaders = requestHeaders; - file.responseHeaders = responseHeaders; - } - } - catch (exc) - { - // An exception can be throwed e.g. when the request is aborted and - // request.responseStatus is accessed. - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc); - } - }, - - isXHR: function(request) - { - try - { - var callbacks = request.notificationCallbacks; - var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null; - if (FBTrace.DBG_NET) - FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request)); - - return (xhrRequest != null); - } - catch (exc) - { - } - - return false; - }, - - getFileCategory: function(file) - { - if (file.category) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file); - return file.category; - } - - if (file.isXHR) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file); - return file.category = "xhr"; - } - - if (!file.mimeType) - { - var ext = getFileExtension(file.href); - if (ext) - file.mimeType = mimeExtensionMap[ext.toLowerCase()]; - } - - /*if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] + - ", mimeType: " + file.mimeType + " for: " + file.href, file);*/ - - if (!file.mimeType) - return ""; - - // Solve cases when charset is also specified, eg "text/html; charset=UTF-8". - var mimeType = file.mimeType; - if (mimeType) - mimeType = mimeType.split(";")[0]; - - return (file.category = mimeCategoryMap[mimeType]); - } -}; - -var Utils = Firebug.NetMonitor.Utils; - -// ************************************************************************************************ - -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable); -//Firebug.registerActivableModule(Firebug.NetMonitor); -//Firebug.registerPanel(NetPanel); - -Firebug.registerModule(Firebug.NetMonitor); -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -// List of contexts with XHR spy attached. -var contexts = []; - -// ************************************************************************************************ -// Spy Module - -/** - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor - * XHR activity of the current page and create appropriate log into the Console panel. - * This feature can be controlled by an option Show XMLHttpRequests (from within the - * console panel). - * - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is - * activated/deactivated for a site. - */ -Firebug.Spy = extend(Firebug.Module, -/** @lends Firebug.Spy */ -{ - dispatchName: "spy", - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - Firebug.Module.initialize.apply(this, arguments); - }, - - shutdown: function() - { - Firebug.Module.shutdown.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - }, - - initContext: function(context) - { - context.spies = []; - - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, context.window); - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName()); - }, - - destroyContext: function(context) - { - // For any spies that are in progress, remove our listeners so that they don't leak - this.detachObserver(context, null); - - if (FBTrace.DBG_SPY && context.spies.length) - FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies (" - + context.spies.length + ") " + context.getName()); - - delete context.spies; - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName()); - }, - - watchWindow: function(context, win) - { - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, win); - }, - - unwatchWindow: function(context, win) - { - try - { - // This make sure that the existing context is properly removed from "contexts" array. - this.detachObserver(context, win); - } - catch (ex) - { - // Get exceptions here sometimes, so let's just ignore them - // since the window is going away anyhow - ERROR(ex); - } - }, - - updateOption: function(name, value) - { - // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called, - // but somehow seems not correct - if (name == "showXMLHttpRequests") - { - var tach = value ? this.attachObserver : this.detachObserver; - for (var i = 0; i < TabWatcher.contexts.length; ++i) - { - var context = TabWatcher.contexts[i]; - iterateWindows(context.window, function(win) - { - tach.apply(this, [context, win]); - }); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Attaching Spy to XHR requests. - - /** - * Returns false if Spy should not be attached to XHRs executed by the specified window. - */ - skipSpy: function(win) - { - if (!win) - return true; - - // Don't attach spy to chrome. - var uri = safeGetWindowLocation(win); - if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0)) - return true; - }, - - attachObserver: function(context, win) - { - if (Firebug.Spy.skipSpy(win)) - return; - - for (var i=0; insIHttpChannel. - * Returns null if the request doesn't represent XHR. - */ - getXHR: function(request) - { - // Does also query-interface for nsIHttpChannel. - if (!(request instanceof Ci.nsIHttpChannel)) - return null; - - try - { - var callbacks = request.notificationCallbacks; - return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null); - } - catch (exc) - { - if (exc.name == "NS_NOINTERFACE") - { - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " + - safeGetRequestName(request)); - } - } - - return null; - } -}); - - - - - -// ************************************************************************************************ - -/* -function getSpyForXHR(request, xhrRequest, context, noCreate) -{ - var spy = null; - - // Iterate all existing spy objects in this context and look for one that is - // already created for this request. - var length = context.spies.length; - for (var i=0; i= 3) - { - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (netInfoBox) - { - netInfoBox.htmlPresented = false; - netInfoBox.responsePresented = false; - } - } - - // If the request is loading update the end time. - if (spy.xhrRequest.readyState == 3) - { - spy.responseTime = spy.endTime - spy.sendTime; - updateTime(spy); - } - - // Request loaded. Get all the info from the request now, just in case the - // XHR would be aborted in the original onReadyStateChange handler. - if (spy.xhrRequest.readyState == 4) - { - // Cumulate response so, multipart response content is properly displayed. - if (SpyHttpActivityObserver.getActivityDistributor()) - spy.responseText += spy.xhrRequest.responseText; - else - { - // xxxHonza: remove from FB 1.6 - if (!spy.responseText) - spy.responseText = spy.xhrRequest.responseText; - } - - // The XHR is loaded now (used also by the activity observer). - spy.loaded = true; - - // Update UI. - updateHttpSpyInfo(spy); - - // Notify Net pane about a request beeing loaded. - // xxxHonza: I don't think this is necessary. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); - - // Notify registered listeners about finish of the XHR. - dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]); - } - - // Pass the event to the original page handler. - callPageHandler(spy, event, originalHandler); -} - -function onHTTPSpyLoad(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy); - - // Detach must be done in onLoad (not in onreadystatechange) otherwise - // onAbort would not be handled. - spy.detach(); - - // xxxHonza: Still needed for Fx 3.5 (#502959) - if (!SpyHttpActivityObserver.getActivityDistributor()) - onHTTPSpyReadyStateChange(spy, null); -} - -function onHTTPSpyError(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } -} - -function onHTTPSpyAbort(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } - - spy.statusText = "Aborted"; - updateLogRow(spy); - - // Notify Net pane about a request beeing aborted. - // xxxHonza: the net panel shoud find out this itself. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); -} -/**/ - -// ************************************************************************************************ - -/** - * @domplate Represents a template for XHRs logged in the Console panel. The body of the - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}. - */ - -Firebug.Spy.XHR = domplate(Firebug.Rep, -/** @lends Firebug.Spy.XHR */ - -{ - tag: - DIV({"class": "spyHead", _repObject: "$object"}, - TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0, - "role": "listitem", "aria-expanded": "false"}, - TBODY({"role": "presentation"}, - TR({"class": "spyRow"}, - TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"}, - DIV({"class": "spyTitle"}, - "$object|getCaption" - ), - DIV({"class": "spyFullTitle spyTitle"}, - "$object|getFullUri" - ) - ), - TD({"class": "spyCol"}, - DIV({"class": "spyStatus"}, "$object|getStatus") - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyIcon"}) - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyTime"}) - ), - TD({"class": "spyCol"}, - TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"}) - ) - ) - ) - ) - ), - - getCaption: function(spy) - { - return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100); - }, - - getFullUri: function(spy) - { - return spy.method.toUpperCase() + " " + spy.getURL(); - }, - - getStatus: function(spy) - { - var text = ""; - if (spy.statusCode) - text += spy.statusCode + " "; - - if (spy.statusText) - return text += spy.statusText; - - return text; - }, - - onToggleBody: function(event) - { - var target = event.currentTarget || event.srcElement; - var logRow = getAncestorByClass(target, "logRow-spy"); - - if (isLeftClick(event)) - { - toggleClass(logRow, "opened"); - - var spy = getChildByClass(logRow, "spyHead").repObject; - var spyHeadTable = getAncestorByClass(target, "spyHeadTable"); - - if (hasClass(logRow, "opened")) - { - updateHttpSpyInfo(spy, logRow); - if (spyHeadTable) - spyHeadTable.setAttribute('aria-expanded', 'true'); - } - else - { - //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]); - //if (spyHeadTable) - // spyHeadTable.setAttribute('aria-expanded', 'false'); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(spy) - { - copyToClipboard(spy.getURL()); - }, - - copyParams: function(spy) - { - var text = spy.postText; - if (!text) - return; - - var url = reEncodeURL(spy, text, true); - copyToClipboard(url); - }, - - copyResponse: function(spy) - { - copyToClipboard(spy.responseText); - }, - - openInTab: function(spy) - { - openNewTab(spy.getURL(), spy.postText); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object) - { - // TODO: xxxpedro spy xhr - return false; - - return object instanceof Firebug.Spy.XMLHttpRequestSpy; - }, - - browseObject: function(spy, context) - { - var url = spy.getURL(); - openNewTab(url); - return true; - }, - - getRealObject: function(spy, context) - { - return spy.xhrRequest; - }, - - getContextMenuItems: function(spy) - { - var items = [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) } - ]; - - if (spy.postText) - { - items.push( - {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) } - ); - } - - items.push( - {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) } - ); - - return items; - } -}); - -// ************************************************************************************************ - -function updateTime(spy) -{ - var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0); - if (spy.responseTime) - timeBox.textContent = " " + formatTime(spy.responseTime); -} - -function updateLogRow(spy) -{ - updateTime(spy); - - var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0); - statusBox.textContent = Firebug.Spy.XHR.getStatus(spy); - - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "loaded"); - - try - { - var errorRange = Math.floor(spy.xhrRequest.status/100); - if (errorRange == 4 || errorRange == 5) - setClass(spy.logRow, "error"); - } - catch (exc) - { - } -} - -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow) -{ - if (!spy.logRow && logRow) - spy.logRow = logRow; - - if (!spy.logRow || !hasClass(spy.logRow, "opened")) - return; - - if (!spy.params) - //spy.params = parseURLParams(spy.href+""); - spy.params = parseURLParams(spy.href+""); - - if (!spy.requestHeaders) - spy.requestHeaders = getRequestHeaders(spy); - - if (!spy.responseHeaders && spy.loaded) - spy.responseHeaders = getResponseHeaders(spy); - - var template = Firebug.NetMonitor.NetInfoBody; - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (!netInfoBox) - { - var head = getChildByClass(spy.logRow, "spyHead"); - netInfoBox = template.tag.append({"file": spy}, head); - dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]); - template.selectTabByName(netInfoBox, "Response"); - } - else - { - template.updateInfo(netInfoBox, spy, spy.context); - } -}; - - - -// ************************************************************************************************ - -function getRequestHeaders(spy) -{ - var headers = []; - - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitRequestHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - - return headers; -} - -function getResponseHeaders(spy) -{ - var headers = []; - - try - { - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitResponseHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - } - catch (exc) - { - if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS) - FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " + - safeGetRequestName(spy.request), exc); - } - - return headers; -} - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.Spy); -//Firebug.registerRep(Firebug.Spy.XHR); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ - -// List of JSON content types. -var contentTypes = -{ - "text/plain": 1, - "text/javascript": 1, - "text/x-javascript": 1, - "text/json": 1, - "text/x-json": 1, - "application/json": 1, - "application/x-json": 1, - "application/javascript": 1, - "application/x-javascript": 1, - "application/json-rpc": 1 -}; - -// ************************************************************************************************ -// Model implementation - -Firebug.JSONViewerModel = extend(Firebug.Module, -{ - dispatchName: "jsonViewer", - initialize: function() - { - Firebug.NetMonitor.NetInfoBody.addListener(this); - - // Used by Firebug.DOMPanel.DirTable domplate. - this.toggles = {}; - }, - - shutdown: function() - { - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody", infoBox); - - // Let listeners to parse the JSON. - dispatch(this.fbListeners, "onParseJSON", [file]); - - // The JSON is still no there, try to parse most common cases. - if (!file.jsonObject) - { - ///if (this.isJSON(safeGetContentType(file.request), file.responseText)) - if (this.isJSON(file.mimeType, file.responseText)) - file.jsonObject = this.parseJSON(file); - } - - // The jsonObject is created so, the JSON tab can be displayed. - if (file.jsonObject && hasProperties(file.jsonObject)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON", - ///$STR("jsonviewer.tab.JSON")); - $STR("JSON")); - - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody; JSON object available " + - (typeof(file.jsonObject) != "undefined"), file.jsonObject); - } - }, - - isJSON: function(contentType, data) - { - // Workaround for JSON responses without proper content type - // Let's consider all responses starting with "{" as JSON. In the worst - // case there will be an exception when parsing. This means that no-JSON - // responses (and post data) (with "{") can be parsed unnecessarily, - // which represents a little overhead, but this happens only if the request - // is actually expanded by the user in the UI (Net & Console panels). - - ///var responseText = data ? trimLeft(data) : null; - ///if (responseText && responseText.indexOf("{") == 0) - /// return true; - var responseText = data ? trim(data) : null; - if (responseText && responseText.indexOf("{") == 0) - return true; - - if (!contentType) - return false; - - contentType = contentType.split(";")[0]; - contentType = trim(contentType); - return contentTypes[contentType]; - }, - - // Update listener for TabView - updateTabBody: function(infoBox, file, context) - { - var tab = infoBox.selectedTab; - ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0); - var tabBody = $$(".netInfoJSONText", infoBox)[0]; - if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated) - return; - - tabBody.updated = true; - - if (file.jsonObject) { - Firebug.DOMPanel.DirTable.tag.replace( - {object: file.jsonObject, toggles: this.toggles}, tabBody); - } - }, - - parseJSON: function(file) - { - var jsonString = new String(file.responseText); - ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host); - return parseJSONString(jsonString); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.JSONViewerModel); - -// ************************************************************************************************ -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -// List of XML related content types. -var xmlContentTypes = -[ - "text/xml", - "application/xml", - "application/xhtml+xml", - "application/rss+xml", - "application/atom+xml",, - "application/vnd.mozilla.maybe.feed", - "application/rdf+xml", - "application/vnd.mozilla.xul+xml" -]; - -// ************************************************************************************************ -// Model implementation - -/** - * @module Implements viewer for XML based network responses. In order to create a new - * tab wihin network request detail, a listener is registered into - * Firebug.NetMonitor.NetInfoBody object. - */ -Firebug.XMLViewerModel = extend(Firebug.Module, -{ - dispatchName: "xmlViewer", - - initialize: function() - { - ///Firebug.ActivableModule.initialize.apply(this, arguments); - Firebug.Module.initialize.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.addListener(this); - }, - - shutdown: function() - { - ///Firebug.ActivableModule.shutdown.apply(this, arguments); - Firebug.Module.shutdown.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - /** - * Check response's content-type and if it's a XML, create a new tab with XML preview. - */ - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody", infoBox); - - // If the response is XML let's display a pretty preview. - ///if (this.isXML(safeGetContentType(file.request))) - if (this.isXML(file.mimeType, file.responseText)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML", - ///$STR("xmlviewer.tab.XML")); - $STR("XML")); - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody; XML response available"); - } - }, - - isXML: function(contentType) - { - if (!contentType) - return false; - - // Look if the response is XML based. - for (var i=0; i\s*/, ""); - - var div = parentNode.ownerDocument.createElement("div"); - div.innerHTML = xmlText; - - var root = div.getElementsByTagName("*")[0]; - - /*** - var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser"); - var doc = parser.parseFromString(text, "text/xml"); - var root = doc.documentElement; - - // Error handling - var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - if (root.namespaceURI == nsURI && root.nodeName == "parsererror") - { - this.ParseError.tag.replace({error: { - message: root.firstChild.nodeValue, - source: root.lastChild.textContent - }}, parentNode); - return; - } - /**/ - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc); - - // Override getHidden in these templates. The parsed XML documen is - // hidden, but we want to display it using 'visible' styling. - /* - var templates = [ - Firebug.HTMLPanel.CompleteElement, - Firebug.HTMLPanel.Element, - Firebug.HTMLPanel.TextElement, - Firebug.HTMLPanel.EmptyElement, - Firebug.HTMLPanel.XEmptyElement, - ]; - - var originals = []; - for (var i=0; iFirebug.XMLViewerModel. - */ -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "xmlInfoError"}, - DIV({"class": "xmlInfoErrorMsg"}, "$error.message"), - PRE({"class": "xmlInfoErrorSource"}, "$error|getSource") - ), - - getSource: function(error) - { - var parts = error.source.split("\n"); - if (parts.length != 2) - return error.source; - - var limit = 50; - var column = parts[1].length; - if (column >= limit) { - parts[0] = "..." + parts[0].substr(column - limit); - parts[1] = "..." + parts[1].substr(column - limit); - } - - if (parts[0].length > 80) - parts[0] = parts[0].substr(0, 80) + "..."; - - return parts.join("\n"); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.XMLViewerModel); - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var ElementCache = Firebug.Lite.Cache.Element; -var cacheID = Firebug.Lite.Cache.ID; - -var ignoreHTMLProps = -{ - // ignores the attributes injected by Sizzle, otherwise it will - // be visible on IE (when enumerating element.attributes) - sizcache: 1, - sizset: 1 -}; - -// ignores also the cache property injected by firebug -ignoreHTMLProps[cacheID] = 1; - - -// ************************************************************************************************ -// HTML Module - -Firebug.HTML = extend(Firebug.Module, -{ - appendTreeNode: function(nodeArray, html) - { - var reTrim = /^\s+|\s+$/g; - - if (!nodeArray.length) nodeArray = [nodeArray]; - - for (var n=0, node; node=nodeArray[n]; n++) - { - if (node.nodeType == 1) - { - if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue; - - var uid = ElementCache(node); - var child = node.childNodes; - var childLength = child.length; - - var nodeName = node.nodeName.toLowerCase(); - - var nodeVisible = isVisible(node); - - var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 && - nodeName != "script" && nodeName != "style"; - - var nodeControl = !hasSingleTextChild && childLength > 0 ? - ('
                                ') : ''; - - var isIE = false; - - if(isIE && nodeControl) - html.push(nodeControl); - - if (typeof uid != 'undefined') - html.push( - '
                                ', - !isIE && nodeControl ? nodeControl: "", - '<', nodeName, '' - ); - else - html.push( - '
                                <', - nodeName, '' - ); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || Firebug.ignoreFirebugElements && - ignoreHTMLProps.hasOwnProperty(attr.nodeName)) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - /* - // source code nodes - if (nodeName == 'script' || nodeName == 'style') - { - - if(document.all){ - var src = node.innerHTML+'\n'; - - }else { - var src = '\n'+node.innerHTML+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + '
                                '; - } - - html.push('>
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ', - '
                                </', - nodeName, - '>
                                ', - '
                                ' - ); - - - }/**/ - - // Just a single text node child - if (hasSingleTextChild) - { - var value = child[0].nodeValue.replace(reTrim, ''); - if(value) - { - html.push( - '>', - escapeHTML(value), - '</', - nodeName, - '>' - ); - } - else - html.push('/>'); // blank text, print as childless node - - } - else if (childLength > 0) - { - html.push('>'); - } - else - html.push('/>'); - - } - else if (node.nodeType == 3) - { - if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" || - node.parentNode.nodeName.toLowerCase() == "style" ) ) - { - var value = node.nodeValue.replace(reTrim, ''); - - if(isIE){ - var src = value+'\n'; - - }else { - var src = '\n'+value+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + ''; - } - - html.push('
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ' - ); - - } - else - { - var value = node.nodeValue.replace(reTrim, ''); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - } - } - }, - - appendTreeChildren: function(treeNode) - { - var doc = Firebug.chrome.document; - var uid = treeNode.id; - var parentNode = ElementCache.get(uid); - - if (parentNode.childNodes.length == 0) return; - - var treeNext = treeNode.nextSibling; - var treeParent = treeNode.parentNode; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl nodeMaximized'; - - var html = []; - var children = doc.createElement("div"); - children.className = "nodeChildren"; - this.appendTreeNode(parentNode.childNodes, html); - children.innerHTML = html.join(""); - - treeParent.insertBefore(children, treeNext); - - var closeElement = doc.createElement("div"); - closeElement.className = "objectBox-element"; - closeElement.innerHTML = '</' + - parentNode.nodeName.toLowerCase() + '>' - - treeParent.insertBefore(closeElement, treeNext); - - }, - - removeTreeChildren: function(treeNode) - { - var children = treeNode.nextSibling; - var closeTag = children.nextSibling; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl'; - - children.parentNode.removeChild(children); - closeTag.parentNode.removeChild(closeTag); - }, - - isTreeNodeVisible: function(id) - { - return $(id); - }, - - select: function(el) - { - var id = el && ElementCache(el); - if (id) - this.selectTreeNode(id); - }, - - selectTreeNode: function(id) - { - id = ""+id; - var node, stack = []; - while(id && !this.isTreeNodeVisible(id)) - { - stack.push(id); - - var node = ElementCache.get(id).parentNode; - - if (node) - id = ElementCache(node); - else - break; - } - - stack.push(id); - - while(stack.length > 0) - { - id = stack.pop(); - node = $(id); - - if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0) - this.appendTreeChildren(node); - } - - selectElement(node); - - // TODO: xxxpedro - if (fbPanel1) - fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2); - } - -}); - -Firebug.registerModule(Firebug.HTML); - -// ************************************************************************************************ -// HTML Panel - -function HTMLPanel(){}; - -HTMLPanel.prototype = extend(Firebug.Panel, -{ - name: "HTML", - title: "HTML", - - options: { - hasSidePanel: true, - //hasToolButtons: true, - isPreRendered: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "4px 3px 1px 15px"; - this.panelNode.style.minWidth = "500px"; - - if (Env.Options.enablePersistent || Firebug.chrome.type != "popup") - this.createUI(); - - if(!this.sidePanelBar.selectedPanel) - { - this.sidePanelBar.selectPanel("css"); - } - }, - - destroy: function() - { - selectedElement = null - fbPanel1 = null; - - selectedSidePanelTS = null; - selectedSidePanelTimer = null; - - Firebug.Panel.destroy.apply(this, arguments); - }, - - createUI: function() - { - var rootNode = Firebug.browser.document.documentElement; - var html = []; - Firebug.HTML.appendTreeNode(rootNode, html); - - this.panelNode.innerHTML = html.join(""); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = $("fbPanel1"); - - if(!selectedElement) - { - Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)); - } - - // TODO: xxxpedro - addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - }, - - shutdown: function() - { - // TODO: xxxpedro - removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - - removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = null; - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - reattach: function() - { - // TODO: panel reattach - if(FirebugChrome.selectedHTMLElementId) - Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId); - }, - - updateSelection: function(object) - { - var id = ElementCache(object); - - if (id) - { - Firebug.HTML.selectTreeNode(id); - } - } -}); - -Firebug.registerPanel(HTMLPanel); - -// ************************************************************************************************ - -var formatStyles = function(styles) -{ - return isIE ? - // IE return CSS property names in upper case, so we need to convert them - styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) : - // other browsers are just fine - styles; -}; - -// ************************************************************************************************ - -var selectedElement = null -var fbPanel1 = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -var selectedSidePanelTS, selectedSidePanelTimer; - -var selectElement= function selectElement(e) -{ - if (e != selectedElement) - { - if (selectedElement) - selectedElement.className = "objectBox-element"; - - e.className = e.className + " selectedElement"; - - if (FBL.isFirefox) - e.style.MozBorderRadius = "2px"; - - else if (FBL.isSafari) - e.style.WebkitBorderRadius = "2px"; - - selectedElement = e; - - FirebugChrome.selectedHTMLElementId = e.id; - - var target = ElementCache.get(e.id); - var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; - - var stack = FirebugChrome.htmlSelectionStack; - - stack.unshift(target); - - if (stack.length > 2) - stack.pop(); - - var lazySelect = function() - { - selectedSidePanelTS = new Date().getTime(); - - selectedSidePanel.select(target, true); - }; - - if (selectedSidePanelTimer) - { - clearTimeout(selectedSidePanelTimer); - selectedSidePanelTimer = null; - } - - if (new Date().getTime() - selectedSidePanelTS > 100) - setTimeout(lazySelect, 0) - else - selectedSidePanelTimer = setTimeout(lazySelect, 150); - } -} - - -// ************************************************************************************************ -// *** TODO: REFACTOR ************************************************************************** -// ************************************************************************************************ -Firebug.HTML.onTreeClick = function (e) -{ - e = e || event; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - - if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag') - { - var isIE = false; - - if(targ.className == 'nodeTag') - { - var control = isIE ? (targ.parentNode.previousSibling || targ) : - (targ.parentNode.previousSibling || targ); - - selectElement(targ.parentNode.parentNode); - - if (control.className.indexOf('nodeControl') == -1) - return; - - } else - control = targ; - - FBL.cancelEvent(e); - - var treeNode = isIE ? control.nextSibling : control.parentNode; - - //FBL.Firebug.Console.log(treeNode); - - if (control.className.indexOf(' nodeMaximized') != -1) { - FBL.Firebug.HTML.removeTreeChildren(treeNode); - } else { - FBL.Firebug.HTML.appendTreeChildren(treeNode); - } - } - else if (targ.className == 'nodeValue' || targ.className == 'nodeName') - { - /* - var input = FBL.Firebug.chrome.document.getElementById('treeInput'); - - input.style.display = "block"; - input.style.left = targ.offsetLeft + 'px'; - input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px'; - input.style.width = targ.offsetWidth + 6 + 'px'; - input.value = targ.textContent || targ.innerText; - input.focus(); - /**/ - } -} - -function onListMouseOut(e) -{ - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - if (hasClass(targ, "fbPanel")) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - } -}; - -var hoverElement = null; -var hoverElementTS = 0; - -Firebug.HTML.onListMouseMove = function onListMouseMove(e) -{ - try - { - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - var found = false; - while (targ && !found) { - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) - targ = targ.parentNode; - else - found = true; - } - - if (!targ) - { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - /* - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - /**/ - - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - - var el = ElementCache.get(uid.value); - - var nodeName = el.nodeName.toLowerCase(); - - if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1) - return; - - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return; - - if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) { - hoverElementTS = new Date().getTime(); - hoverElement = el; - FBL.Firebug.Inspector.drawBoxModel(el); - } - } - catch(E) - { - } -} - - -// ************************************************************************************************ - -Firebug.Reps = { - - appendText: function(object, html) - { - html.push(escapeHTML(objectToString(object))); - }, - - appendNull: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendString: function(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - }, - - appendInteger: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFloat: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFunction: function(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m && m[1] ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - }, - - appendObject: function(object, html) - { - /* - var rep = Firebug.getRep(object); - var outputs = []; - - rep.tag.tag.compile(); - - var str = rep.tag.renderHTML({object: object}, outputs); - html.push(str); - /**/ - - try - { - if (object == undefined) - this.appendNull("undefined", html); - else if (object == null) - this.appendNull("null", html); - else if (typeof object == "string") - this.appendString(object, html); - else if (typeof object == "number") - this.appendInteger(object, html); - else if (typeof object == "boolean") - this.appendInteger(object, html); - else if (typeof object == "function") - this.appendFunction(object, html); - else if (object.nodeType == 1) - this.appendSelector(object, html); - else if (typeof object == "object") - { - if (typeof object.length != "undefined") - this.appendArray(object, html); - else - this.appendObjectFormatted(object, html); - } - else - this.appendText(object, html); - } - catch (exc) - { - } - /**/ - }, - - appendObjectFormatted: function(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - }, - - appendSelector: function(object, html) - { - var uid = ElementCache(object); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - }, - - appendNode: function(node, html) - { - if (node.nodeType == 1) - { - var uid = ElementCache(node); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push( - '
                                ', - '', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || attr.nodeName == cacheID) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? node.style.cssText : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - if (node.firstChild) - { - html.push('>
                                '); - - for (var child = node.firstChild; child; child = child.nextSibling) - this.appendNode(child, html); - - html.push('
                                </', - node.nodeName.toLowerCase(), '>
                                '); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - var value = trim(node.nodeValue); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - }, - - appendArray: function(object, html) - { - html.push('[ '); - - for (var i = 0, l = object.length, obj; i < l; ++i) - { - this.appendObject(object[i], html); - - if (i < l-1) - html.push(', '); - } - - html.push(' ]'); - } - -}; - - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -/* - -Hack: -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; -Firebug.showInfoTips = true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome); - -/**/ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var maxWidth = 100, maxHeight = 80; -var infoTipMargin = 10; -var infoTipWindowPadding = 25; - -// ************************************************************************************************ - -Firebug.InfoTip = extend(Firebug.Module, -{ - dispatchName: "infoTip", - tags: domplate( - { - infoTipTag: DIV({"class": "infoTip"}), - - colorTag: - DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, " "), - - imgTag: - DIV({"class": "infoTipImageBox infoTipLoading"}, - IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat", - onload: "$onLoadImage"}), - IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}), - DIV({"class": "infoTipCaption"}) - ), - - onLoadImage: function(event) - { - var img = event.currentTarget || event.srcElement; - ///var bgImg = img.nextSibling; - ///if (!bgImg) - /// return; // Sometimes gets called after element is dead - - ///var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - /// TODO: xxxpedro infoTip hack - var caption = getElementByClass(innerBox, "infoTipCaption"); - var bgImg = getElementByClass(innerBox, "infoTipBgImage"); - if (!bgImg) - return; // Sometimes gets called after element is dead - - // TODO: xxxpedro infoTip IE and timing issue - // TODO: use offline document to avoid flickering - if (isIE) - removeClass(innerBox, "infoTipLoading"); - - var updateInfoTip = function(){ - - var w = img.naturalWidth || img.width || 10, - h = img.naturalHeight || img.height || 10; - - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - //caption.innerHTML = $STRF("Dimensions", [w, h]); - caption.innerHTML = $STRF(w + " x " + h); - - - }; - - if (isIE) - setTimeout(updateInfoTip, 0); - else - { - updateInfoTip(); - removeClass(innerBox, "infoTipLoading"); - } - - /// - } - - /* - /// onLoadImage original - onLoadImage: function(event) - { - var img = event.currentTarget; - var bgImg = img.nextSibling; - if (!bgImg) - return; // Sometimes gets called after element is dead - - var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - var w = img.naturalWidth, h = img.naturalHeight; - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - caption.innerHTML = $STRF("Dimensions", [w, h]); - - removeClass(innerBox, "infoTipLoading"); - } - /**/ - - }), - - initializeBrowser: function(browser) - { - browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser); - browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser); - - ///var doc = browser.contentDocument; - var doc = browser.document; - if (!doc) - return; - - ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true); - addEvent(doc, "mouseover", browser.onInfoTipMouseMove); - addEvent(doc, "mouseout", browser.onInfoTipMouseOut); - addEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc)); - }, - - uninitializeBrowser: function(browser) - { - if (browser.infoTip) - { - ///var doc = browser.contentDocument; - var doc = browser.document; - ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true); - removeEvent(doc, "mouseover", browser.onInfoTipMouseMove); - removeEvent(doc, "mouseout", browser.onInfoTipMouseOut); - removeEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - browser.infoTip.parentNode.removeChild(browser.infoTip); - delete browser.infoTip; - delete browser.onInfoTipMouseMove; - } - }, - - showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset) - { - if (!Firebug.showInfoTips) - return; - - var scrollParent = getOverflowParent(target); - var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0); - - if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset)) - { - var htmlElt = infoTip.ownerDocument.documentElement; - var panelWidth = htmlElt.clientWidth; - var panelHeight = htmlElt.clientHeight; - - if (x+infoTip.offsetWidth+infoTipMargin > panelWidth) - { - infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px"; - infoTip.style.right = "auto"; - } - else - { - infoTip.style.left = (x+infoTipMargin) + "px"; - infoTip.style.right = "auto"; - } - - if (y+infoTip.offsetHeight+infoTipMargin > panelHeight) - { - infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px"; - infoTip.style.bottom = "auto"; - } - else - { - infoTip.style.top = (y+infoTipMargin) + "px"; - infoTip.style.bottom = "auto"; - } - - if (FBTrace.DBG_INFOTIP) - FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top + - ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom + - ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight + - ", offsetWidth: " + infoTip.offsetWidth + - ", x: " + x + ", panelWidth: " + panelWidth + - ", y: " + y + ", panelHeight: " + panelHeight); - - infoTip.setAttribute("active", "true"); - } - else - this.hideInfoTip(infoTip); - }, - - hideInfoTip: function(infoTip) - { - if (infoTip) - infoTip.removeAttribute("active"); - }, - - onMouseOut: function(event, browser) - { - if (!event.relatedTarget) - this.hideInfoTip(browser.infoTip); - }, - - onMouseMove: function(event, browser) - { - // Ignore if the mouse is moving over the existing info tip. - if (getAncestorByClass(event.target, "infoTip")) - return; - - if (browser.currentPanel) - { - var x = event.clientX, y = event.clientY, target = event.target || event.srcElement; - this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset); - } - else - this.hideInfoTip(browser.infoTip); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - populateColorInfoTip: function(infoTip, color) - { - this.tags.colorTag.replace({rgbValue: color}, infoTip); - return true; - }, - - populateImageInfoTip: function(infoTip, url, repeat) - { - if (!repeat) - repeat = "no-repeat"; - - this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip); - - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - disable: function() - { - // XXXjoe For each browser, call uninitializeBrowser - }, - - showPanel: function(browser, panel) - { - if (panel) - { - var infoTip = panel.panelBrowser.infoTip; - if (!infoTip) - infoTip = this.initializeBrowser(panel.panelBrowser); - this.hideInfoTip(infoTip); - } - - }, - - showSidePanel: function(browser, panel) - { - this.showPanel(browser, panel); - } -}); - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.InfoTip); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -// move to FBL -(function() { - -// ************************************************************************************************ -// XPath - -/** - * Gets an XPath for an element which describes its hierarchical location. - */ -this.getElementXPath = function(element) -{ - if (element && element.id) - return '//*[@id="' + element.id + '"]'; - else - return this.getElementTreeXPath(element); -}; - -this.getElementTreeXPath = function(element) -{ - var paths = []; - - for (; element && element.nodeType == 1; element = element.parentNode) - { - var index = 0; - for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) - { - if (sibling.nodeName == element.nodeName) - ++index; - } - - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[" + (index+1) + "]" : ""); - paths.splice(0, 0, tagName + pathIndex); - } - - return paths.length ? "/" + paths.join("/") : null; -}; - -this.getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -this.getRuleMatchingElements = function(rule, doc) -{ - var css = rule.selectorText; - var xpath = this.cssToXPath(css); - return this.getElementsByXPath(doc, xpath); -}; - - -}).call(FBL); - - - - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - -var toCamelCase = function toCamelCase(s) -{ - return s.replace(reSelectorCase, toCamelCaseReplaceFn); -}; - -var toSelectorCase = function toSelectorCase(s) -{ - return s.replace(reCamelCase, "-$1").toLowerCase(); - -}; - -var reCamelCase = /([A-Z])/g; -var reSelectorCase = /\-(.)/g; -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g) -{ - return g.toUpperCase(); -}; - - - - - -// ************************************************************************************************ - -var ElementCache = Firebug.Lite.Cache.Element; -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet; - -var globalCSSRuleIndex; - -var externalStyleSheetURLs = []; -var externalStyleSheetWarning = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'}, - SPAN("$object|STR"), - A({"href": "$href", target:"_blank"}, "$link|STR") - ) -}); - - -var processAllStyleSheetsTimeout = null; -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet) -{ - var url = styleSheet.href; - styleSheet.firebugIgnore = true; - - var source = Firebug.Lite.Proxy.load(url); - - // TODO: check for null and error responses - - - // remove comments - //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - //source = source.replace(reMultiComment, ""); - - // convert relative addresses to absolute ones - source = source.replace(/url\(([^\)]+)\)/g, function(a,name){ - - var hasDomain = /\w+:\/\/./.test(name); - - if (!hasDomain) - { - name = name.replace(/^(["'])(.+)\1$/, "$2"); - var first = name.charAt(0); - - // relative path, based on root - if (first == "/") - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLRoot - var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url); - - return m ? - "url(" + m[1] + name + ")" : - "url(" + name + ")"; - } - // relative path, based on current location - else - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLPath - var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, ""); - - path = path + name; - - var reBack = /[^\/]+\/\.\.\//; - while(reBack.test(path)) - { - path = path.replace(reBack, ""); - } - - //console.log("url(" + path + ")"); - - return "url(" + path + ")"; - } - } - - // if it is an absolute path, there is nothing to do - return a; - }); - - var oldStyle = styleSheet.ownerNode; - - if (!oldStyle) return; - - if (!oldStyle.parentNode) return; - - var style = createGlobalElement("style"); - style.setAttribute("charset","utf-8"); - style.setAttribute("type", "text/css"); - style.innerHTML = source; - - //debugger; - oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling); - oldStyle.parentNode.removeChild(oldStyle); - - - //doc.getElementsByTagName("head")[0].appendChild(style); - - doc.styleSheets[doc.styleSheets.length-1].externalURL = url; - - console.log(url, "call " + externalStyleSheetURLs.length, source); - - externalStyleSheetURLs.pop(); - - if (processAllStyleSheetsTimeout) - { - clearTimeout(processAllStyleSheetsTimeout); - } - - processAllStyleSheetsTimeout = setTimeout(function(){ - console.log("processing"); - FBL.processAllStyleSheets(doc, styleSheetIterator); - processAllStyleSheetsTimeout = null; - },200); - -}; - - -FBL.processAllStyleSheets = function(doc, styleSheetIterator) -{ - styleSheetIterator = styleSheetIterator || processStyleSheet; - - globalCSSRuleIndex = -1; - - var styleSheets = doc.styleSheets; - var importedStyleSheets = []; - - if (FBTrace.DBG_CSS) - var start = new Date().getTime(); - - for(var i=0, length=styleSheets.length; i maxSpecificity) - { - maxSpecificity = spec; - mostSpecificSelector = sel; - } - } - } - - rule.specificity = maxSpecificity; - } - } - - rules.sort(sortElementRules); - //rules.sort(solveRulesTied); - - return rules; -}; - -var sortElementRules = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - var specificityA = ruleA.specificity; - var specificityB = ruleB.specificity; - - if (specificityA > specificityB) - return 1; - - else if (specificityA < specificityB) - return -1; - - else - return ruleA.order > ruleB.order ? 1 : -1; -}; - -var solveRulesTied = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - if (ruleA.specificity == ruleB.specificity) - return ruleA.order > ruleB.order ? 1 : -1; - - return null; -}; - -var reSelectorTag = /(^|\s)(?:\w+)/g; -var reSelectorClass = /\.[\w\d_-]+/g; -var reSelectorId = /#[\w\d_-]+/g; - -var getCSSRuleSpecificity = function(selector) -{ - var match = selector.match(reSelectorTag); - var tagCount = match ? match.length : 0; - - match = selector.match(reSelectorClass); - var classCount = match ? match.length : 0; - - match = selector.match(reSelectorId); - var idCount = match ? match.length : 0; - - return tagCount + 10*classCount + 100*idCount; -}; - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule; -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor; -//const nsISelectionDisplay = Ci.nsISelectionDisplay; -//const nsISelectionController = Ci.nsISelectionController; - -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153 -//const STATE_ACTIVE = 0x01; -//const STATE_FOCUS = 0x02; -//const STATE_HOVER = 0x04; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Firebug.SourceBoxPanel = Firebug.Panel; - -var domUtils = null; - -var textContent = isIE ? "innerText" : "textContent"; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var CSSDomplateBase = { - isEditable: function(rule) - { - return !rule.isSystemSheet; - }, - isSelectorEditable: function(rule) - { - return rule.isSelectorEditable && this.isEditable(rule); - } -}; - -var CSSPropTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled", - $editGroup: "$rule|isEditable", - $cssOverridden: "$prop.overridden", role : "option"}, - A({"class": "cssPropDisable"}, "  "), - SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"), - SPAN({"class": "cssColon"}, ":"), - SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"), - SPAN({"class": "cssSemi"}, ";") - ) -}); - -var CSSRuleTag = - TAG("$rule.tag", {rule: "$rule"}); - -var CSSImportRuleTag = domplate({ - tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"}, - "@import "", - A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"), - "";" - ) -}); - -var CSSStyleRuleTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssRule insertInto", - $cssEditableRule: "$rule|isEditable", - $editGroup: "$rule|isSelectorEditable", - _repObject: "$rule.rule", - "ruleId": "$rule.id", role : 'presentation'}, - DIV({"class": "cssHead focusRow", role : 'listitem'}, - SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {" - ), - DIV({role : 'group'}, - DIV({"class": "cssPropertyListBox", role : 'listbox'}, - FOR("prop", "$rule.props", - TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"}) - ) - ) - ), - DIV({"class": "editable insertBefore", role:"presentation"}, "}") - ) -}); - -var reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; - -var reURL = /url\("?([^"\)]+)?"?\)/; - -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/; - -//const sothinkInstalled = !!$("swfcatcherKey_sidebar"); -var sothinkInstalled = false; -var styleGroups = -{ - text: [ - "font-family", - "font-size", - "font-weight", - "font-style", - "color", - "text-transform", - "text-decoration", - "letter-spacing", - "word-spacing", - "line-height", - "text-align", - "vertical-align", - "direction", - "column-count", - "column-gap", - "column-width" - ], - - background: [ - "background-color", - "background-image", - "background-repeat", - "background-position", - "background-attachment", - "opacity" - ], - - box: [ - "width", - "height", - "top", - "right", - "bottom", - "left", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width", - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color", - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style", - "-moz-border-top-radius", - "-moz-border-right-radius", - "-moz-border-bottom-radius", - "-moz-border-left-radius", - "outline-top-width", - "outline-right-width", - "outline-bottom-width", - "outline-left-width", - "outline-top-color", - "outline-right-color", - "outline-bottom-color", - "outline-left-color", - "outline-top-style", - "outline-right-style", - "outline-bottom-style", - "outline-left-style" - ], - - layout: [ - "position", - "display", - "visibility", - "z-index", - "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow - "overflow-y", - "overflow-clip", - "white-space", - "clip", - "float", - "clear", - "-moz-box-sizing" - ], - - other: [ - "cursor", - "list-style-image", - "list-style-position", - "list-style-type", - "marker-offset", - "user-focus", - "user-select", - "user-modify", - "user-input" - ] -}; - -var styleGroupTitles = -{ - text: "Text", - background: "Background", - box: "Box Model", - layout: "Layout", - other: "Other" -}; - -Firebug.CSSModule = extend(Firebug.Module, -{ - freeEdit: function(styleSheet, value) - { - if (!styleSheet.editStyleSheet) - { - var ownerNode = getStyleSheetOwnerNode(styleSheet); - styleSheet.disabled = true; - - var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL); - url.spec = styleSheet.href; - - var editStyleSheet = ownerNode.ownerDocument.createElementNS( - "http://www.w3.org/1999/xhtml", - "style"); - unwrapObject(editStyleSheet).firebugIgnore = true; - editStyleSheet.setAttribute("type", "text/css"); - editStyleSheet.setAttributeNS( - "http://www.w3.org/XML/1998/namespace", - "base", - url.directory); - if (ownerNode.hasAttribute("media")) - { - editStyleSheet.setAttribute("media", ownerNode.getAttribute("media")); - } - - // Insert the edited stylesheet directly after the old one to ensure the styles - // cascade properly. - ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling); - - styleSheet.editStyleSheet = editStyleSheet; - } - - styleSheet.editStyleSheet.innerHTML = value; - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n"); - - dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]); - }, - - insertRule: function(styleSheet, cssText, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText); - var insertIndex = styleSheet.insertRule(cssText, ruleIndex); - - dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]); - - return insertIndex; - }, - - deleteRule: function(styleSheet, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules); - dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]); - - styleSheet.deleteRule(ruleIndex); - }, - - setProperty: function(rule, propName, propValue, propPriority) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - // good browsers - if (style.getPropertyValue) - { - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect - // unless we remove the property first - style.removeProperty(propName); - - style.setProperty(propName, propValue, propPriority); - } - // sad browsers - else - { - // TODO: xxxpedro parse CSS rule to find property priority in IE? - //console.log(propName, propValue); - style[toCamelCase(propName)] = propValue; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]); - } - }, - - removeProperty: function(rule, propName, parent) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - if (style.getPropertyValue) - { - - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - style.removeProperty(propName); - } - else - { - style[toCamelCase(propName)] = ""; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]); - } - }/*, - - cleanupSheets: function(doc, context) - { - // Due to the manner in which the layout engine handles multiple - // references to the same sheet we need to kick it a little bit. - // The injecting a simple stylesheet then removing it will force - // Firefox to regenerate it's CSS hierarchy. - // - // WARN: This behavior was determined anecdotally. - // See http://code.google.com/p/fbug/issues/detail?id=2440 - var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - style.setAttribute("charset","utf-8"); - unwrapObject(style).firebugIgnore = true; - style.setAttribute("type", "text/css"); - style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}"; - addStyleSheet(doc, style); - style.parentNode.removeChild(style); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=500365 - // This voodoo touches each style sheet to force some Firefox internal change to allow edits. - var styleSheets = getAllStyleSheets(context); - for(var i = 0; i < styleSheets.length; i++) - { - try - { - var rules = styleSheets[i].cssRules; - if (rules.length > 0) - var touch = rules[0]; - if (FBTrace.DBG_CSS && touch) - FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName())); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e); - } - } - }, - cleanupSheetHandler: function(event, context) - { - var target = event.target || event.srcElement, - tagName = (target.tagName || "").toLowerCase(); - if (tagName == "link") - { - this.cleanupSheets(target.ownerDocument, context); - } - }, - watchWindow: function(context, win) - { - var cleanupSheets = bind(this.cleanupSheets, this), - cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context), - doc = win.document; - - //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false); - //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false); - }, - loadedContext: function(context) - { - var self = this; - iterateWindows(context.browser.contentWindow, function(subwin) - { - self.cleanupSheets(subwin.document, context); - }); - } - /**/ -}); - -// ************************************************************************************************ - -Firebug.CSSStyleSheetPanel = function() {}; - -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel, -{ - template: domplate( - { - tag: - DIV({"class": "cssSheet insertInto a11yCSSView"}, - FOR("rule", "$rules", - CSSRuleTag - ), - DIV({"class": "cssSheet editable insertBefore"}, "") - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - refresh: function() - { - if (this.location) - this.updateLocation(this.location); - else if (this.selection) - this.updateSelection(this.selection); - }, - - toggleEditing: function() - { - if (!this.stylesheetEditor) - this.stylesheetEditor = new StyleSheetEditor(this.document); - - if (this.editing) - Firebug.Editor.stopEditing(); - else - { - if (!this.location) - return; - - var styleSheet = this.location.editStyleSheet - ? this.location.editStyleSheet.sheet - : this.location; - - var css = getStyleSheetCSS(styleSheet, this.context); - //var topmost = getTopmostRuleLine(this.panelNode); - - this.stylesheetEditor.styleSheet = this.location; - Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor); - //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset); - } - }, - - getStylesheetURL: function(rule) - { - if (this.location.href) - return this.location.href; - else - return this.context.window.location.href; - }, - - getRuleByLine: function(styleSheet, line) - { - if (!domUtils) - return null; - - var cssRules = styleSheet.cssRules; - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - if (rule instanceof CSSStyleRule) - { - var ruleLine = domUtils.getRuleLine(rule); - if (ruleLine >= line) - return rule; - } - } - }, - - highlightRule: function(rule) - { - var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule); - if (ruleElement) - { - scrollIntoCenterView(ruleElement, this.panelNode); - setClassTimed(ruleElement, "jumpHighlight", this.context); - } - }, - - getStyleSheetRules: function(context, styleSheet) - { - var isSystemSheet = isSystemStyleSheet(styleSheet); - - function appendRules(cssRules) - { - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - - // TODO: xxxpedro opera instanceof stylesheet remove the following comments when - // the issue with opera and style sheet Classes has been solved. - - //if (rule instanceof CSSStyleRule) - if (instanceOf(rule, "CSSStyleRule")) - { - var props = this.getRuleProperties(context, rule); - //var line = domUtils.getRuleLine(rule); - var line = null; - - var selector = rule.selectorText; - - if (isIE) - { - selector = selector.replace(reSelectorTag, - function(s){return s.toLowerCase();}); - } - - var ruleId = rule.selectorText+"/"+line; - rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId, - selector: selector, props: props, - isSystemSheet: isSystemSheet, - isSelectorEditable: true}); - } - //else if (rule instanceof CSSImportRule) - else if (instanceOf(rule, "CSSImportRule")) - rules.push({tag: CSSImportRuleTag.tag, rule: rule}); - //else if (rule instanceof CSSMediaRule) - else if (instanceOf(rule, "CSSMediaRule")) - appendRules.apply(this, [rule.cssRules]); - else - { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS) - FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule); - } - } - } - - var rules = []; - appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]); - return rules; - }, - - parseCSSProps: function(style, inheritMode) - { - var props = []; - - if (Firebug.expandShorthandProps) - { - var count = style.length-1, - index = style.length; - while (index--) - { - var propName = style.item(count - index); - this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props); - } - } - else - { - var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - // TODO: xxxpedro port to firebug: variable leaked into global namespace - var m; - - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) - continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) - this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props); - }; - } - - return props; - }, - - getRuleProperties: function(context, rule, inheritMode) - { - var props = this.parseCSSProps(rule.style, inheritMode); - - // TODO: xxxpedro port to firebug: variable leaked into global namespace - //var line = domUtils.getRuleLine(rule); - var line; - var ruleId = rule.selectorText+"/"+line; - this.addOldProperties(context, ruleId, inheritMode, props); - sortProperties(props); - - return props; - }, - - addOldProperties: function(context, ruleId, inheritMode, props) - { - if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) ) - { - var moreProps = context.selectorMap[ruleId]; - for (var i = 0; i < moreProps.length; ++i) - { - var prop = moreProps[i]; - this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props); - } - } - }, - - addProperty: function(name, value, important, disabled, inheritMode, props) - { - name = name.toLowerCase(); - - if (inheritMode && !inheritedStyleNames[name]) - return; - - name = this.translateName(name, value); - if (name) - { - value = stripUnits(rgbToHex(value)); - important = important ? " !important" : ""; - - var prop = {name: name, value: value, important: important, disabled: disabled}; - props.push(prop); - } - }, - - translateName: function(name, value) - { - // Don't show these proprietary Mozilla properties - if ((value == "-moz-initial" - && (name == "-moz-background-clip" || name == "-moz-background-origin" - || name == "-moz-background-inline-policy")) - || (value == "physical" - && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source" - || name == "margin-right-ltr-source" || name == "margin-right-rtl-source")) - || (value == "physical" - && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source" - || name == "padding-right-ltr-source" || name == "padding-right-rtl-source"))) - return null; - - // Translate these back to the form the user probably expects - if (name == "margin-left-value") - return "margin-left"; - else if (name == "margin-right-value") - return "margin-right"; - else if (name == "margin-top-value") - return "margin-top"; - else if (name == "margin-bottom-value") - return "margin-bottom"; - else if (name == "padding-left-value") - return "padding-left"; - else if (name == "padding-right-value") - return "padding-right"; - else if (name == "padding-top-value") - return "padding-top"; - else if (name == "padding-bottom-value") - return "padding-bottom"; - // XXXjoe What about border! - else - return name; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - editElementStyle: function() - { - ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0]; - var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0]; - var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection); - if (!styleRuleBox) - { - var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []}; - if (!rulesBox) - { - // The element did not have any displayed styles. We need to create the whole tree and remove - // the no styles message - styleRuleBox = this.template.cascadedTag.replace({ - rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom") - }, this.panelNode); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0]; - styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0]; - } - else - styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0]; - styleRuleBox = $$(".insertInto", styleRuleBox)[0]; - } - - Firebug.Editor.insertRowForObject(styleRuleBox); - }, - - insertPropertyRow: function(row) - { - Firebug.Editor.insertRowForObject(row); - }, - - insertRule: function(row) - { - var location = getAncestorByClass(row, "cssRule"); - if (!location) - { - location = getChildByClass(this.panelNode, "cssSheet"); - Firebug.Editor.insertRowForObject(location); - } - else - { - Firebug.Editor.insertRow(location, "before"); - } - }, - - editPropertyRow: function(row) - { - var propValueBox = getChildByClass(row, "cssPropValue"); - Firebug.Editor.startEditing(propValueBox); - }, - - deletePropertyRow: function(row) - { - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - Firebug.CSSModule.removeProperty(rule, propName); - - // Remove the property from the selector map, if it was disabled - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) ) - { - var map = this.context.selectorMap[ruleId]; - for (var i = 0; i < map.length; ++i) - { - if (map[i].name == propName) - { - map.splice(i, 1); - break; - } - } - } - if (this.name == "stylesheet") - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]); - row.parentNode.removeChild(row); - - this.markChange(this.name == "stylesheet"); - }, - - disablePropertyRow: function(row) - { - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - - if (!this.context.selectorMap) - this.context.selectorMap = {}; - - // XXXjoe Generate unique key for elements too - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if (!(this.context.selectorMap.hasOwnProperty(ruleId))) - this.context.selectorMap[ruleId] = []; - - var map = this.context.selectorMap[ruleId]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - if (hasClass(row, "disabledStyle")) - { - Firebug.CSSModule.removeProperty(rule, propName); - - map.push({"name": propName, "value": parsedValue.value, - "important": parsedValue.priority}); - } - else - { - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - - var index = findPropByName(map, propName); - map.splice(index, 1); - } - - this.markChange(this.name == "stylesheet"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onMouseDown: function(event) - { - //console.log("onMouseDown", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - // XXjoe Hack to only allow clicking on the checkbox - if (!isLeftClick(event) || offset > 20) - return; - - var target = event.target || event.srcElement; - if (hasClass(target, "textEditor")) - return; - - var row = getAncestorByClass(target, "cssProp"); - if (row && hasClass(row, "editGroup")) - { - this.disablePropertyRow(row); - cancelEvent(event); - } - }, - - onDoubleClick: function(event) - { - //console.log("onDoubleClick", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - if (!isLeftClick(event) || offset <= 20) - return; - - var target = event.target || event.srcElement; - - //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20); - - // if the inline editor was clicked, don't insert a new rule - if (hasClass(target, "textEditorInner")) - return; - - var row = getAncestorByClass(target, "cssRule"); - if (row && !getAncestorByClass(target, "cssPropName") - && !getAncestorByClass(target, "cssPropValue")) - { - this.insertPropertyRow(row); - cancelEvent(event); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "stylesheet", - title: "CSS", - parentPanel: null, - searchable: true, - dependents: ["css", "stylesheet", "dom", "domSide", "layout"], - - options: - { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onMouseDown = bind(this.onMouseDown, this); - this.onDoubleClick = bind(this.onDoubleClick, this); - - if (this.name == "stylesheet") - { - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var selectNode = this.selectNode = createElement("select"); - - processAllStyleSheets(doc, function(doc, styleSheet) - { - var key = StyleSheetCache.key(styleSheet); - var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href); - var option = createElement("option", {value: key}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }); - - this.toolButtonsNode.appendChild(selectNode); - } - /**/ - }, - - onChangeSelect: function(event) - { - event = event || window.event; - var target = event.srcElement || event.currentTarget; - var key = target.value; - var styleSheet = StyleSheetCache.get(key); - - this.updateLocation(styleSheet); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - //if (!domUtils) - //{ - // try { - // domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); - // } catch (exc) { - // if (FBTrace.DBG_ERRORS) - // FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc); - // } - //} - - //TODO: xxxpedro - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - this.initializeNode(); - - if (this.name == "stylesheet") - { - var styleSheets = Firebug.browser.document.styleSheets; - - if (styleSheets.length > 0) - { - addEvent(this.selectNode, "change", this.onChangeSelect); - - this.updateLocation(styleSheets[0]); - } - } - - //Firebug.SourceBoxPanel.initialize.apply(this, arguments); - }, - - shutdown: function() - { - // must destroy the editor when we leave the panel to avoid problems (Issue 2981) - Firebug.Editor.stopEditing(); - - if (this.name == "stylesheet") - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - } - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - destroy: function(state) - { - //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop; - - //persistObjects(this, state); - - // xxxpedro we are stopping the editor in the shutdown method already - //Firebug.Editor.stopEditing(); - Firebug.Panel.destroy.apply(this, arguments); - }, - - initializeNode: function(oldPanelNode) - { - addEvent(this.panelNode, "mousedown", this.onMouseDown); - addEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']); - }, - - destroyNode: function() - { - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - removeEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']); - }, - - ishow: function(state) - { - Firebug.Inspector.stopInspecting(true); - - this.showToolbarButtons("fbCSSButtons", true); - - if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel - { - restoreObjects(this, state); - - if (!this.location) - this.location = this.getDefaultLocation(); - - if (state && state.scrollTop) - this.panelNode.scrollTop = state.scrollTop; - } - }, - - ihide: function() - { - this.showToolbarButtons("fbCSSButtons", false); - - this.lastScrollTop = this.panelNode.scrollTop; - }, - - supportsObject: function(object) - { - if (object instanceof CSSStyleSheet) - return 1; - else if (object instanceof CSSStyleRule) - return 2; - else if (object instanceof CSSStyleDeclaration) - return 2; - else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href)) - return 2; - else - return 0; - }, - - updateLocation: function(styleSheet) - { - if (!styleSheet) - return; - if (styleSheet.editStyleSheet) - styleSheet = styleSheet.editStyleSheet.sheet; - - // if it is a restricted stylesheet, show the warning message and abort the update process - if (styleSheet.restricted) - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode); - - // TODO: xxxpedro remove when there the external resource problem is fixed - externalStyleSheetWarning.tag.append({ - object: "The stylesheet could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22" - }, this.panelNode); - - return; - } - - var rules = this.getStyleSheetRules(this.context, styleSheet); - - var result; - if (rules.length) - result = this.template.tag.replace({rules: rules}, this.panelNode); - else - result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode); - - // TODO: xxxpedro need to fix showToolbarButtons function - //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location)); - - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]); - }, - - updateSelection: function(object) - { - this.selection = null; - - if (object instanceof CSSStyleDeclaration) { - object = object.parentRule; - } - - if (object instanceof CSSStyleRule) - { - this.navigate(object.parentStyleSheet); - this.highlightRule(object); - } - else if (object instanceof CSSStyleSheet) - { - this.navigate(object); - } - else if (object instanceof SourceLink) - { - try - { - var sourceLink = object; - - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - clearNode(this.panelNode); // replace rendered stylesheets - this.showSourceFile(sourceFile); - - var lineNo = object.line; - if (lineNo) - this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context)); - } - else // XXXjjb we should not be taking this path - { - var stylesheet = getStyleSheetByHref(sourceLink.href, this.context); - if (stylesheet) - this.navigate(stylesheet); - else - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink); - } - } - } - catch(exc) { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.upDateSelection FAILS "+exc, exc); - } - } - }, - - updateOption: function(name, value) - { - if (name == "expandShorthandProps") - this.refresh(); - }, - - getLocationList: function() - { - var styleSheets = getAllStyleSheets(this.context); - return styleSheets; - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }, - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ]; - }, - - getContextMenuItems: function(style, target) - { - var items = []; - - if (this.infoTipType == "color") - { - items.push( - {label: "CopyColor", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) } - ); - } - else if (this.infoTipType == "image") - { - items.push( - {label: "CopyImageLocation", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }, - {label: "OpenImageInNewTab", - command: bindFixed(openNewTab, FBL, this.infoTipObject) } - ); - } - - ///if (this.selection instanceof Element) - if (isElement(this.selection)) - { - items.push( - //"-", - {label: "EditStyle", - command: bindFixed(this.editElementStyle, this) } - ); - } - else if (!isSystemStyleSheet(this.selection)) - { - items.push( - //"-", - {label: "NewRule", - command: bindFixed(this.insertRule, this, target) } - ); - } - - var cssRule = getAncestorByClass(target, "cssRule"); - if (cssRule && hasClass(cssRule, "cssEditableRule")) - { - items.push( - "-", - {label: "NewProp", - command: bindFixed(this.insertPropertyRow, this, target) } - ); - - var propRow = getAncestorByClass(target, "cssProp"); - if (propRow) - { - var propName = getChildByClass(propRow, "cssPropName")[textContent]; - var isDisabled = hasClass(propRow, "disabledStyle"); - - items.push( - {label: $STRF("EditProp", [propName]), nol10n: true, - command: bindFixed(this.editPropertyRow, this, propRow) }, - {label: $STRF("DeleteProp", [propName]), nol10n: true, - command: bindFixed(this.deletePropertyRow, this, propRow) }, - {label: $STRF("DisableProp", [propName]), nol10n: true, - type: "checkbox", checked: isDisabled, - command: bindFixed(this.disablePropertyRow, this, propRow) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ); - - return items; - }, - - browseObject: function(object) - { - if (this.infoTipType == "image") - { - openNewTab(this.infoTipObject); - return true; - } - }, - - showInfoTip: function(infoTip, target, x, y) - { - var propValue = getAncestorByClass(target, "cssPropValue"); - if (propValue) - { - var offset = getClientOffset(propValue); - var offsetX = x-offset.x; - - var text = propValue[textContent]; - var charWidth = propValue.offsetWidth/text.length; - var charOffset = Math.floor(offsetX/charWidth); - - var cssValue = parseCSSValue(text, charOffset); - if (cssValue) - { - if (cssValue.value == this.infoTipValue) - return true; - - this.infoTipValue = cssValue.value; - - if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value))) - { - this.infoTipType = "color"; - this.infoTipObject = cssValue.value; - - return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value); - } - else if (cssValue.type == "url") - { - ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0); - var propNameNode = getElementByClass(target.parentNode, "cssPropName"); - if (propNameNode && isImageRule(propNameNode[textContent])) - { - var rule = Firebug.getRepObject(target); - var baseURL = this.getStylesheetURL(rule); - var relURL = parseURLValue(cssValue.value); - var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL); - var repeat = parseRepeatValue(text); - - this.infoTipType = "image"; - this.infoTipObject = absURL; - - return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat); - } - } - } - } - - delete this.infoTipType; - delete this.infoTipValue; - delete this.infoTipObject; - }, - - getEditor: function(target, value) - { - if (target == this.panelNode - || hasClass(target, "cssSelector") || hasClass(target, "cssRule") - || hasClass(target, "cssSheet")) - { - if (!this.ruleEditor) - this.ruleEditor = new CSSRuleEditor(this.document); - - return this.ruleEditor; - } - else - { - if (!this.editor) - this.editor = new CSSEditor(this.document); - - return this.editor; - } - }, - - getDefaultLocation: function() - { - try - { - var styleSheets = this.context.window.document.styleSheets; - if (styleSheets.length) - { - var sheet = styleSheets[0]; - return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet; - } - } - catch (exc) - { - if (FBTrace.DBG_LOCATIONS) - FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc); - } - }, - - getObjectDescription: function(styleSheet) - { - var url = getURLForStyleSheet(styleSheet); - var instance = getInstanceForStyleSheet(styleSheet); - - var baseDescription = splitURLBase(url); - if (instance) { - baseDescription.name = baseDescription.name + " #" + (instance + 1); - } - return baseDescription; - }, - - search: function(text, reverse) - { - var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse); - if (!curDoc && Firebug.searchGlobal) - { - return this.searchOtherDocs(text, reverse); - } - return curDoc; - }, - - searchOtherDocs: function(text, reverse) - { - var scanRE = Firebug.Search.getTestingRegex(text); - function scanDoc(styleSheet) { - // we don't care about reverse here as we are just looking for existence, - // if we do have a result we will handle the reverse logic on display - for (var i = 0; i < styleSheet.cssRules.length; i++) - { - if (scanRE.test(styleSheet.cssRules[i].cssText)) - { - return true; - } - } - } - - if (this.navigateToNextDocument(scanDoc, reverse)) - { - return this.searchCurrentDoc(true, text, reverse); - } - }, - - searchCurrentDoc: function(wrapSearch, text, reverse) - { - if (!text) - { - delete this.currentSearch; - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - { - row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text)); - } - else - { - if (this.editing) - { - this.currentSearch = new TextSearch(this.stylesheetEditor.box); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - scrollSelectionIntoView(this); - return true; - } - else - return false; - } - else - { - function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - } - } - - if (row) - { - this.document.defaultView.getSelection().selectAllChildren(row); - scrollIntoCenterView(row, this.panelNode); - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]); - return false; - } - }, - - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"), - Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal") - ]; - } -}); -/**/ -// ************************************************************************************************ - -function CSSElementPanel() {} - -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype, -{ - template: domplate( - { - cascadedTag: - DIV({"class": "a11yCSSView", role : 'presentation'}, - DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') }, - FOR("rule", "$rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ), - DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')}, - FOR("section", "$inherited", - H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' }, - SPAN({"class": "cssInheritLabel"}, "$inheritLabel"), - TAG(FirebugReps.Element.shortTag, {object: "$section.element"}) - ), - DIV({role : 'group'}, - FOR("rule", "$section.rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ) - ) - ) - ), - - ruleTag: - isIE ? - // IE needs the sourceLink first, otherwise it will be rendered outside the panel - DIV({"class": "cssElementRuleContainer"}, - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}), - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}) - ) - : - // other browsers need the sourceLink last, otherwise it will cause an extra space - // before the rule representation - DIV({"class": "cssElementRuleContainer"}, - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}), - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateCascadeView: function(element) - { - //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]); - var rules = [], sections = [], usedProps = {}; - this.getInheritedRules(element, sections, usedProps); - this.getElementRules(element, rules, usedProps); - - if (rules.length || sections.length) - { - var inheritLabel = "Inherited from"; // $STR("InheritedFrom"); - var result = this.template.cascadedTag.replace({rules: rules, inherited: sections, - inheritLabel: inheritLabel}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - else - { - var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - - // TODO: xxxpedro remove when there the external resource problem is fixed - if (externalStyleSheetURLs.length > 0) - externalStyleSheetWarning.tag.append({ - object: "The results here may be inaccurate because some " + - "stylesheets could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22" - }, this.panelNode); - }, - - getStylesheetURL: function(rule) - { - // if the parentStyleSheet.href is null, CSS std says its inline style. - // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location - if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href) - return rule.parentStyleSheet.href; - else - return this.selection.ownerDocument.location.href; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getInheritedRules: function(element, sections, usedProps) - { - var parent = element.parentNode; - if (parent && parent.nodeType == 1) - { - this.getInheritedRules(parent, sections, usedProps); - - var rules = []; - this.getElementRules(parent, rules, usedProps, true); - - if (rules.length) - sections.splice(0, 0, {element: parent, rules: rules}); - } - }, - - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - - // TODO: xxxpedro remove document specificity issue - //var eid = ElementCache(element); - //inspectedRules = ElementCSSRulesMap[eid]; - - inspectedRules = getElementCSSRules(element); - - if (inspectedRules) - { - for (var i = 0, length=inspectedRules.length; i < length; ++i) - { - var ruleId = inspectedRules[i]; - var ruleData = CSSRuleMap[ruleId]; - var rule = ruleData.rule; - - var ssid = ruleData.styleSheetId; - var parentStyleSheet = StyleSheetCache.get(ssid); - - var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href; // Null means inline - - var instance = null; - //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = false; - //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - // - //var line = domUtils.getRuleLine(rule); - var line; - - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: ruleData.selector, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /* - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - try - { - inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null; - } catch (exc) {} - - if (inspectedRules) - { - for (var i = 0; i < inspectedRules.Count(); ++i) - { - var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule); - - var href = rule.parentStyleSheet.href; // Null means inline - - var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - var line = domUtils.getRuleLine(rule); - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: rule.selectorText, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /**/ - markOverridenProps: function(props, usedProps, inheritMode) - { - for (var i = 0; i < props.length; ++i) - { - var prop = props[i]; - if ( usedProps.hasOwnProperty(prop.name) ) - { - var deadProps = usedProps[prop.name]; // all previous occurrences of this property - for (var j = 0; j < deadProps.length; ++j) - { - var deadProp = deadProps[j]; - if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important) - prop.overridden = true; // new occurrence overridden - else if (!prop.disabled) - deadProp.overridden = true; // previous occurrences overridden - } - } - else - usedProps[prop.name] = []; - - prop.wasInherited = inheritMode ? true : false; - usedProps[prop.name].push(prop); // all occurrences of a property seen so far, by name - } - }, - - getStyleProperties: function(element, rules, usedProps, inheritMode) - { - var props = this.parseCSSProps(element.style, inheritMode); - this.addOldProperties(this.context, getElementXPath(element), inheritMode, props); - - sortProperties(props); - this.markOverridenProps(props, usedProps, inheritMode); - - if (props.length) - rules.splice(0, 0, - {rule: element, id: getElementXPath(element), - selector: "element.style", props: props, inherited: inheritMode}); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "css", - title: "Style", - parentPanel: "HTML", - order: 0, - - initialize: function() - { - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - - //this.updateCascadeView(document.getElementsByTagName("h1")[0]); - //this.updateCascadeView(document.getElementById("build")); - - /* - this.onStateChange = bindFixed(this.contentStateCheck, this); - this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER); - this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE); - /**/ - }, - - ishow: function(state) - { - }, - - watchWindow: function(win) - { - if (domUtils) - { - // Normally these would not be required, but in order to update after the state is set - // using the options menu we need to monitor these global events as well - var doc = win.document; - ///addEvent(doc, "mouseover", this.onHoverChange); - ///addEvent(doc, "mousedown", this.onActiveChange); - } - }, - unwatchWindow: function(win) - { - var doc = win.document; - ///removeEvent(doc, "mouseover", this.onHoverChange); - ///removeEvent(doc, "mousedown", this.onActiveChange); - - if (isAncestor(this.stateChangeEl, doc)) - { - this.removeStateChangeHandlers(); - } - }, - - supportsObject: function(object) - { - return object instanceof Element ? 1 : 0; - }, - - updateView: function(element) - { - this.updateCascadeView(element); - if (domUtils) - { - this.contentState = safeGetContentState(element); - this.addStateChangeHandlers(element); - } - }, - - updateSelection: function(element) - { - if ( !instanceOf(element , "Element") ) // html supports SourceLink - return; - - if (sothinkInstalled) - { - FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode); - return; - } - - /* - if (!domUtils) - { - FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode); - return; - } - /**/ - - if (!element) - return; - - this.updateView(element); - }, - - updateOption: function(name, value) - { - if (name == "showUserAgentCSS" || name == "expandShorthandProps") - this.refresh(); - }, - - getOptionsMenuItems: function() - { - var ret = [ - {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS, - command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") }, - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") } - ]; - if (domUtils && this.selection) - { - var state = safeGetContentState(this.selection); - - ret.push("-"); - ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE, - command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)}); - ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER, - command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)}); - } - return ret; - }, - - updateContentState: function(state, remove) - { - domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state); - this.refresh(); - }, - - addStateChangeHandlers: function(el) - { - this.removeStateChangeHandlers(); - - /* - addEvent(el, "focus", this.onStateChange); - addEvent(el, "blur", this.onStateChange); - addEvent(el, "mouseup", this.onStateChange); - addEvent(el, "mousedown", this.onStateChange); - addEvent(el, "mouseover", this.onStateChange); - addEvent(el, "mouseout", this.onStateChange); - /**/ - - this.stateChangeEl = el; - }, - - removeStateChangeHandlers: function() - { - var sel = this.stateChangeEl; - if (sel) - { - /* - removeEvent(sel, "focus", this.onStateChange); - removeEvent(sel, "blur", this.onStateChange); - removeEvent(sel, "mouseup", this.onStateChange); - removeEvent(sel, "mousedown", this.onStateChange); - removeEvent(sel, "mouseover", this.onStateChange); - removeEvent(sel, "mouseout", this.onStateChange); - /**/ - } - }, - - contentStateCheck: function(state) - { - if (!state || this.contentState & state) - { - var timeoutRunner = bindFixed(function() - { - var newState = safeGetContentState(this.selection); - if (newState != this.contentState) - { - this.context.invalidatePanels(this.name); - } - }, this); - - // Delay exec until after the event has processed and the state has been updated - setTimeout(timeoutRunner, 0); - } - } -}); - -function safeGetContentState(selection) -{ - try - { - return domUtils.getContentState(selection); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.safeGetContentState; EXCEPTION", e); - } -} - -// ************************************************************************************************ - -function CSSComputedElementPanel() {} - -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype, -{ - template: domplate( - { - computedTag: - DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')}, - FOR("group", "$groups", - H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"}, - SPAN({"class": "cssInheritLabel"}, "$group.title") - ), - TABLE({width: "100%", role : 'group'}, - TBODY({role : 'presentation'}, - FOR("prop", "$group.props", - TR({"class": 'focusRow computedStyleRow', role : 'listitem'}, - TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"), - TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value") - ) - ) - ) - ) - ) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateComputedView: function(element) - { - var win = isIE ? - element.ownerDocument.parentWindow : - element.ownerDocument.defaultView; - - var style = isIE ? - element.currentStyle : - win.getComputedStyle(element, ""); - - var groups = []; - - for (var groupName in styleGroups) - { - // TODO: xxxpedro i18n $STR - //var title = $STR("StyleGroup-" + groupName); - var title = styleGroupTitles[groupName]; - var group = {title: title, props: []}; - groups.push(group); - - var props = styleGroups[groupName]; - for (var i = 0; i < props.length; ++i) - { - var propName = props[i]; - var propValue = style.getPropertyValue ? - style.getPropertyValue(propName) : - ""+style[toCamelCase(propName)]; - - if (propValue === undefined || propValue === null) - continue; - - propValue = stripUnits(rgbToHex(propValue)); - if (propValue) - group.props.push({name: propName, value: propValue}); - } - } - - var result = this.template.computedTag.replace({groups: groups}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "computed", - title: "Computed", - parentPanel: "HTML", - order: 1, - - updateView: function(element) - { - this.updateComputedView(element); - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Refresh", command: bind(this.refresh, this) } - ]; - } -}); - -// ************************************************************************************************ -// CSSEditor - -function CSSEditor(doc) -{ - this.initializeInline(doc); -} - -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var rule = Firebug.getRepObject(target); - var emptyProp = - { - // TODO: xxxpedro - uses charCode(255) to force the element being rendered, - // allowing webkit to get the correct position of the property name "span", - // when inserting a new CSS rule? - name: "", - value: "", - important: "" - }; - - if (insertWhere == "before") - return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target); - else - return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - // We need to check the value first in order to avoid a problem in IE8 - // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - if (!value) return; - - target.innerHTML = escapeForCss(value); - - var row = getAncestorByClass(target, "cssProp"); - if (hasClass(row, "disabledStyle")) - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(target); - - if (hasClass(target, "cssPropName")) - { - if (value && previousValue != value) // name of property has changed. - { - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - - if (propValue && propValue != "undefined") { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n"); - if (previousValue) - Firebug.CSSModule.removeProperty(rule, previousValue); - Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority); - } - } - else if (!value) // name of the property has been deleted, so remove the property. - Firebug.CSSModule.removeProperty(rule, previousValue); - } - else if (getAncestorByClass(target, "cssPropValue")) - { - var propName = getChildByClass(row, "cssPropName")[textContent]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - - if (FBTrace.DBG_CSS) - { - FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n"); - // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style); - } - - if (value && value != "null") - { - var parsedValue = parsePriority(value); - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - } - else if (previousValue && previousValue != "null") - Firebug.CSSModule.removeProperty(rule, propName); - } - - this.panel.markChange(this.panel.name == "stylesheet"); - }, - - advanceToNext: function(target, charCode) - { - if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName")) - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - if (hasClass(this.target, "cssPropName")) - return {start: 0, end: value.length-1}; - else - return parseCSSValue(value, offset); - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - if (hasClass(this.target, "cssPropName")) - { - return getCSSPropertyNames(); - } - else - { - var row = getAncestorByClass(this.target, "cssProp"); - var propName = getChildByClass(row, "cssPropName")[textContent]; - return getCSSKeywordsByProperty(propName); - } - } -}); - -//************************************************************************************************ -//CSSRuleEditor - -function CSSRuleEditor(doc) -{ - this.initializeInline(doc); - this.completeAsYouType = false; -} -CSSRuleEditor.uniquifier = 0; -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var emptyRule = { - selector: "", - id: "", - props: [], - isSelectorEditable: true - }; - - if (insertWhere == "before") - return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target); - else - return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue + "'", target); - - target.innerHTML = escapeForCss(value); - - if (value === previousValue) return; - - var row = getAncestorByClass(target, "cssRule"); - var styleSheet = this.panel.location; - styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet; - - var cssRules = styleSheet.cssRules; - var rule = Firebug.getRepObject(target), oldRule = rule; - var ruleIndex = cssRules.length; - if (rule || Firebug.getRepObject(row.nextSibling)) - { - var searchRule = rule || Firebug.getRepObject(row.nextSibling); - for (ruleIndex=0; ruleIndex b.name ? 1 : -1; - }); -} - -function getTopmostRuleLine(panelNode) -{ - for (var child = panelNode.firstChild; child; child = child.nextSibling) - { - if (child.offsetTop+child.offsetHeight > panelNode.scrollTop) - { - var rule = child.repObject; - if (rule) - return { - line: domUtils.getRuleLine(rule), - offset: panelNode.scrollTop-child.offsetTop - }; - } - } - return 0; -} - -function getStyleSheetCSS(sheet, context) -{ - if (sheet.ownerNode instanceof HTMLStyleElement) - return sheet.ownerNode.innerHTML; - else - return context.sourceCache.load(sheet.href).join(""); -} - -function getStyleSheetOwnerNode(sheet) { - for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet); - - return sheet.ownerNode; -} - -function scrollSelectionIntoView(panel) -{ - var selCon = getSelectionController(panel); - selCon.scrollSelectionIntoView( - nsISelectionController.SELECTION_NORMAL, - nsISelectionController.SELECTION_FOCUS_REGION, true); -} - -function getSelectionController(panel) -{ - var browser = Firebug.chrome.getPanelBrowser(panel); - return browser.docShell.QueryInterface(nsIInterfaceRequestor) - .getInterface(nsISelectionDisplay) - .QueryInterface(nsISelectionController); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel); - -// ************************************************************************************************ - -}}); - - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Script Module - -Firebug.Script = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null; - }, - - selectSourceCode: function(index) - { - this.getPanel().selectSourceCode(index); - } -}); - -Firebug.registerModule(Firebug.Script); - - -// ************************************************************************************************ -// Script Panel - -function ScriptPanel(){}; - -ScriptPanel.prototype = extend(Firebug.Panel, -{ - name: "Script", - title: "Script", - - selectIndex: 0, // index of the current selectNode's option - sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script") - - options: { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var scripts = doc.getElementsByTagName("script"); - var selectNode = this.selectNode = createElement("select"); - - for(var i=0, script; script=scripts[i]; i++) - { - // Don't show Firebug Lite source code in the list of options - if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) - continue; - - var fileName = getFileName(script.src) || getFileName(doc.location.href); - var option = createElement("option", {value:i}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }; - - this.toolButtonsNode.appendChild(selectNode); - }, - - initialize: function() - { - // we must render the code first, so the persistent state can be restore - this.selectSourceCode(this.selectIndex); - - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.selectNode, "change", this.onChangeSelect); - }, - - shutdown: function() - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - detach: function(oldChrome, newChrome) - { - Firebug.Panel.detach.apply(this, arguments); - - var oldPanel = oldChrome.getPanel("Script"); - var index = oldPanel.selectIndex; - - this.selectNode.selectedIndex = index; - this.selectIndex = index; - this.sourceIndex = -1; - }, - - onChangeSelect: function(event) - { - var select = this.selectNode; - - this.selectIndex = select.selectedIndex; - - var option = select.options[select.selectedIndex]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - selectSourceCode: function(index) - { - var select = this.selectNode; - select.selectedIndex = index; - - var option = select.options[index]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - renderSourceCode: function(index) - { - if (this.sourceIndex != index) - { - var renderProcess = function renderProcess(src) - { - var html = [], - hl = 0; - - src = isIE && !isExternal ? - src+'\n' : // IE put an extra line when reading source of local resources - '\n'+src; - - // find the number of lines of code - src = src.replace(/\n\r|\r\n/g, "\n"); - var match = src.match(/[\n]/g); - var lines=match ? match.length : 0; - - // render the full source code + line numbers html - html[hl++] = '
                                ';
                                -                html[hl++] = escapeHTML(src);
                                -                html[hl++] = '
                                '; - - // render the line number divs - for(var l=1, lines; l<=lines; l++) - { - html[hl++] = '
                                '; - html[hl++] = l; - html[hl++] = '
                                '; - } - - html[hl++] = '
                                '; - - updatePanel(html); - }; - - var updatePanel = function(html) - { - self.panelNode.innerHTML = html.join(""); - - // IE needs this timeout, otherwise the panel won't scroll - setTimeout(function(){ - self.synchronizeUI(); - },0); - }; - - var onFailure = function() - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode); - }; - - var self = this; - - var doc = Firebug.browser.document; - var script = doc.getElementsByTagName("script")[index]; - var url = getScriptURL(script); - var isExternal = url && url != doc.location.href; - - try - { - if (isExternal) - { - Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure}); - } - else - { - var src = script.innerHTML; - renderProcess(src); - } - } - catch(e) - { - onFailure(); - } - - this.sourceIndex = index; - } - } -}); - -Firebug.registerPanel(ScriptPanel); - - -// ************************************************************************************************ - - -var getScriptURL = function getScriptURL(script) -{ - var reFile = /([^\/\?#]+)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = Firebug.browser.document; - - var file = reFile.exec(script.src); - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(doc.location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - return path + fileName; - } -}; - -var getFileName = function getFileName(path) -{ - if (!path) return ""; - - var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/); - - return match && match[0] || path; -}; - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var ElementCache = Firebug.Lite.Cache.Element; - -var insertSliceSize = 18; -var insertInterval = 40; - -var ignoreVars = -{ - "__firebug__": 1, - "eval": 1, - - // We are forced to ignore Java-related variables, because - // trying to access them causes browser freeze - "java": 1, - "sun": 1, - "Packages": 1, - "JavaArray": 1, - "JavaMember": 1, - "JavaObject": 1, - "JavaClass": 1, - "JavaPackage": 1, - "_firebug": 1, - "_FirebugConsole": 1, - "_FirebugCommandLine": 1 -}; - -if (Firebug.ignoreFirebugElements) - ignoreVars[Firebug.Lite.Cache.ID] = 1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var memberPanelRep = - isIE6 ? - {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"} - : - {"class": "memberLabel $member.type\\Label"}; - -var RowTag = - TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation', - level: "$member.level"}, - TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'}, - A(memberPanelRep, - SPAN({}, "$member.name") - ) - ), - TD({"class": "memberValueCell", role : 'presentation'}, - TAG("$member.tag", {object: "$member.value"}) - ) - ); - -var WatchRowTag = - TR({"class": "watchNewRow", level: 0}, - TD({"class": "watchEditCell", colspan: 2}, - DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0', - 'aria-label' : $STR('press enter to add new watch expression')}, - $STR("NewWatch") - ) - ) - ); - -var SizerRow = - TR({role : 'presentation'}, - TD({width: "30%"}), - TD({width: "70%"}) - ); - -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable"; -var DirTablePlate = domplate(Firebug.Rep, -{ - tag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"}, - TBODY({role: 'presentation'}, - SizerRow, - FOR("member", "$object|memberIterator", RowTag) - ) - ), - - watchTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow, - WatchRowTag - ) - ), - - tableTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow - ) - ), - - rowTag: - FOR("member", "$members", RowTag), - - memberIterator: function(object, level) - { - return getMembers(object, level); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - if (!isLeftClick(event)) - return; - - var target = event.target || event.srcElement; - - var row = getAncestorByClass(target, "memberRow"); - var label = getAncestorByClass(target, "memberLabel"); - if (label && hasClass(row, "hasChildren")) - { - var row = label.parentNode.parentNode; - this.toggleRow(row); - } - else - { - var object = Firebug.getRepObject(target); - if (typeof(object) == "function") - { - Firebug.chrome.select(object, "script"); - cancelEvent(event); - } - else if (event.detail == 2 && !object) - { - var panel = row.parentNode.parentNode.domPanel; - if (panel) - { - var rowValue = panel.getRowPropertyValue(row); - if (typeof(rowValue) == "boolean") - panel.setPropertyValue(row, !rowValue); - else - panel.editProperty(row); - - cancelEvent(event); - } - } - } - - return false; - }, - - toggleRow: function(row) - { - var level = parseInt(row.getAttribute("level")); - var toggles = row.parentNode.parentNode.toggles; - - if (hasClass(row, "opened")) - { - removeClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Remove the path from the toggle tree - for (var i = 0; i < path.length; ++i) - { - if (i == path.length-1) - delete toggles[path[i]]; - else - toggles = toggles[path[i]]; - } - } - - var rowTag = this.rowTag; - var tbody = row.parentNode; - - setTimeout(function() - { - for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling) - { - if (parseInt(firstRow.getAttribute("level")) <= level) - break; - - tbody.removeChild(firstRow); - } - }, row.insertTimeout ? row.insertTimeout : 0); - } - else - { - setClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Mark the path in the toggle tree - for (var i = 0; i < path.length; ++i) - { - var name = path[i]; - if (toggles.hasOwnProperty(name)) - toggles = toggles[name]; - else - toggles = toggles[name] = {}; - } - } - - var value = row.lastChild.firstChild.repObject; - var members = getMembers(value, level+1); - - var rowTag = this.rowTag; - var lastRow = row; - - var delay = 0; - //var setSize = members.length; - //var rowCount = 1; - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - setTimeout(function() - { - if (lastRow.parentNode) - { - var result = rowTag.insertRows({members: slice}, lastRow); - lastRow = result[1]; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]); - //rowCount += insertSliceSize; - } - if (isLast) - row.removeAttribute("insertTimeout"); - }, delay); - } - - delay += insertInterval; - } - - row.insertTimeout = delay; - } - } -}); - - - -// ************************************************************************************************ - -Firebug.DOMBasePanel = function() {} - -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel, -{ - tag: DirTablePlate.tableTag, - - getRealObject: function(object) - { - // TODO: Move this to some global location - // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc. - // TODO: We might be able to make this check more authoritative with QueryInterface. - if (!object) return object; - if (object.wrappedJSObject) return object.wrappedJSObject; - return object; - }, - - rebuild: function(update, scrollTop) - { - //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]); - var members = getMembers(this.selection); - expandMembers(members, this.toggles, 0, 0); - - this.showMembers(members, update, scrollTop); - - //TODO: xxxpedro statusbar - if (!this.parentPanel) - updateStatusBar(this); - }, - - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!tbody.lastChild) return; - - result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //rowCount += insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop) - panelNode.scrollTop = priorScrollTop; - - - // enable to measure rendering performance - //if (isLast) alert(new Date().getTime() - renderStart + "ms"); - - - }, delay)); - - delay += insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - - /* - // new - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - var _insertSliceSize = insertSliceSize; - var _insertInterval = insertInterval; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - var lastSkip = renderStart, now; - - while (members.length) - { - with({slice: members.splice(0, _insertSliceSize), isLast: !members.length}) - { - var _tbody = tbody; - var _rowTag = rowTag; - var _panelNode = panelNode; - var _priorScrollTop = priorScrollTop; - - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!_tbody.lastChild) return; - - result = _rowTag.insertRows({members: slice}, _tbody.lastChild); - - //rowCount += _insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop) - _panelNode.scrollTop = _priorScrollTop; - - - // enable to measure rendering performance - //alert("gap: " + (new Date().getTime() - lastSkip)); - //lastSkip = new Date().getTime(); - - //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms"); - - }, delay)); - - delay += _insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - /**/ - - showEmptyMembers: function() - { - FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode); - }, - - findPathObject: function(object) - { - var pathIndex = -1; - for (var i = 0; i < this.objectPath.length; ++i) - { - // IE needs === instead of == or otherwise some objects will - // be considered equal to different objects, returning the - // wrong index of the objectPath array - if (this.getPathObject(i) === object) - return i; - } - - return -1; - }, - - getPathObject: function(index) - { - var object = this.objectPath[index]; - - if (object instanceof Property) - return object.getObject(); - else - return object; - }, - - getRowObject: function(row) - { - var object = getRowOwnerObject(row); - return object ? object : this.selection; - }, - - getRowPropertyValue: function(row) - { - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object) - { - var propName = getRowName(row); - - if (object instanceof jsdIStackFrame) - return Firebug.Debugger.evaluate(propName, this.context); - else - return object[propName]; - } - }, - /* - copyProperty: function(row) - { - var value = this.getRowPropertyValue(row); - copyToClipboard(value); - }, - - editProperty: function(row, editValue) - { - if (hasClass(row, "watchNewRow")) - { - if (this.context.stopped) - Firebug.Editor.startEditing(row, ""); - else if (Firebug.Console.isAlwaysEnabled()) // not stopped in debugger, need command line - { - if (Firebug.CommandLine.onCommandLineFocus()) - Firebug.Editor.startEditing(row, ""); - else - row.innerHTML = $STR("warning.Command line blocked?"); - } - else - row.innerHTML = $STR("warning.Console must be enabled"); - } - else if (hasClass(row, "watchRow")) - Firebug.Editor.startEditing(row, getRowName(row)); - else - { - var object = this.getRowObject(row); - this.context.thisValue = object; - - if (!editValue) - { - var propValue = this.getRowPropertyValue(row); - - var type = typeof(propValue); - if (type == "undefined" || type == "number" || type == "boolean") - editValue = propValue; - else if (type == "string") - editValue = "\"" + escapeJS(propValue) + "\""; - else if (propValue == null) - editValue = "null"; - else if (object instanceof Window || object instanceof jsdIStackFrame) - editValue = getRowName(row); - else - editValue = "this." + getRowName(row); - } - - - Firebug.Editor.startEditing(row, editValue); - } - }, - - deleteProperty: function(row) - { - if (hasClass(row, "watchRow")) - this.deleteWatch(row); - else - { - var object = getRowOwnerObject(row); - if (!object) - object = this.selection; - object = this.getRealObject(object); - - if (object) - { - var name = getRowName(row); - try - { - delete object[name]; - } - catch (exc) - { - return; - } - - this.rebuild(true); - this.markChange(); - } - } - }, - - setPropertyValue: function(row, value) // value must be string - { - if(FBTrace.DBG_DOM) - { - FBTrace.sysout("row: "+row); - FBTrace.sysout("value: "+value+" type "+typeof(value), value); - } - - var name = getRowName(row); - if (name == "this") - return; - - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object && !(object instanceof jsdIStackFrame)) - { - // unwrappedJSObject.property = unwrappedJSObject - Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(), - function success(result, context) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result); - object[name] = result; - }, - function failed(exc, context) - { - try - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc); - // If the value doesn't parse, then just store it as a string. Some users will - // not realize they're supposed to enter a JavaScript expression and just type - // literal text - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - ); - } - else if (this.context.stopped) - { - try - { - Firebug.CommandLine.evaluate(name+"="+value, this.context); - } - catch (exc) - { - try - { - // See catch block above... - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - } - - this.rebuild(true); - this.markChange(); - }, - - highlightRow: function(row) - { - if (this.highlightedRow) - cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context); - - this.highlightedRow = row; - - if (row) - setClassTimed(row, "jumpHighlight", this.context); - },/**/ - - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - create: function() - { - // TODO: xxxpedro - this.context = Firebug.browser; - - this.objectPath = []; - this.propertyPath = []; - this.viewPath = []; - this.pathIndex = -1; - this.toggles = {}; - - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.panelNode, "mousemove", this.onMouseMove); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - /* - destroy: function(state) - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - - if (this.pathIndex) - state.pathIndex = this.pathIndex; - if (this.viewPath) - state.viewPath = this.viewPath; - if (this.propertyPath) - state.propertyPath = this.propertyPath; - - if (this.propertyPath.length > 0 && !this.propertyPath[1]) - state.firstSelection = persistObject(this.getPathObject(1), this.context); - - Firebug.Panel.destroy.apply(this, arguments); - }, - /**/ - - ishow: function(state) - { - if (this.context.loaded && !this.selection) - { - if (!state) - { - this.select(null); - return; - } - if (state.viewPath) - this.viewPath = state.viewPath; - if (state.propertyPath) - this.propertyPath = state.propertyPath; - - var defaultObject = this.getDefaultSelection(this.context); - var selectObject = defaultObject; - - if (state.firstSelection) - { - var restored = state.firstSelection(this.context); - if (restored) - { - selectObject = restored; - this.objectPath = [defaultObject, restored]; - } - else - this.objectPath = [defaultObject]; - } - else - this.objectPath = [defaultObject]; - - if (this.propertyPath.length > 1) - { - for (var i = 1; i < this.propertyPath.length; ++i) - { - var name = this.propertyPath[i]; - if (!name) - continue; - - var object = selectObject; - try - { - selectObject = object[name]; - } - catch (exc) - { - selectObject = null; - } - - if (selectObject) - { - this.objectPath.push(new Property(object, name)); - } - else - { - // If we can't access a property, just stop - this.viewPath.splice(i); - this.propertyPath.splice(i); - this.objectPath.splice(i); - selectObject = this.getPathObject(this.objectPath.length-1); - break; - } - } - } - - var selection = state.pathIndex <= this.objectPath.length-1 - ? this.getPathObject(state.pathIndex) - : this.getPathObject(this.objectPath.length-1); - - this.select(selection); - } - }, - /* - hide: function() - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - }, - /**/ - - supportsObject: function(object) - { - if (object == null) - return 1000; - - if (typeof(object) == "undefined") - return 1000; - else if (object instanceof SourceLink) - return 0; - else - return 1; // just agree to support everything but not agressively. - }, - - refresh: function() - { - this.rebuild(true); - }, - - updateSelection: function(object) - { - var previousIndex = this.pathIndex; - var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex]; - - var newPath = this.pathToAppend; - delete this.pathToAppend; - - var pathIndex = this.findPathObject(object); - if (newPath || pathIndex == -1) - { - this.toggles = {}; - - if (newPath) - { - // Remove everything after the point where we are inserting, so we - // essentially replace it with the new path - if (previousView) - { - if (this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - var start = previousIndex + 1, - // Opera needs the length argument in splice(), otherwise - // it will consider that only one element should be removed - length = this.objectPath.length - start; - - this.objectPath.splice(start, length); - this.propertyPath.splice(start, length); - this.viewPath.splice(start, length); - } - - var value = this.getPathObject(previousIndex); - if (!value) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n"); - return; - } - - for (var i = 0, length = newPath.length; i < length; ++i) - { - var name = newPath[i]; - var object = value; - try - { - value = value[name]; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n"); - return; - } - - ++this.pathIndex; - this.objectPath.push(new Property(object, name)); - this.propertyPath.push(name); - this.viewPath.push({toggles: this.toggles, scrollTop: 0}); - } - } - else - { - this.toggles = {}; - - var win = Firebug.browser.window; - //var win = this.context.getGlobalScope(); - if (object === win) - { - this.pathIndex = 0; - this.objectPath = [win]; - this.propertyPath = [null]; - this.viewPath = [{toggles: this.toggles, scrollTop: 0}]; - } - else - { - this.pathIndex = 1; - this.objectPath = [win, object]; - this.propertyPath = [null, null]; - this.viewPath = [ - {toggles: {}, scrollTop: 0}, - {toggles: this.toggles, scrollTop: 0} - ]; - } - } - - this.panelNode.scrollTop = 0; - this.rebuild(); - } - else - { - this.pathIndex = pathIndex; - - var view = this.viewPath[pathIndex]; - this.toggles = view.toggles; - - // Persist the current scroll location - if (previousView && this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - this.rebuild(false, view.scrollTop); - } - }, - - getObjectPath: function(object) - { - return this.objectPath; - }, - - getDefaultSelection: function() - { - return Firebug.browser.window; - //return this.context.getGlobalScope(); - }/*, - - updateOption: function(name, value) - { - const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1, - showDOMFuncs: 1, showDOMConstants: 1}; - if ( optionMap.hasOwnProperty(name) ) - this.rebuild(true); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowUserProps", "showUserProps"), - optionMenu("ShowUserFuncs", "showUserFuncs"), - optionMenu("ShowDOMProps", "showDOMProps"), - optionMenu("ShowDOMFuncs", "showDOMFuncs"), - optionMenu("ShowDOMConstants", "showDOMConstants"), - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ]; - }, - - getContextMenuItems: function(object, target) - { - var row = getAncestorByClass(target, "memberRow"); - - var items = []; - - if (row) - { - var rowName = getRowName(row); - var rowObject = this.getRowObject(row); - var rowValue = this.getRowPropertyValue(row); - - var isWatch = hasClass(row, "watchRow"); - var isStackFrame = rowObject instanceof jsdIStackFrame; - - if (typeof(rowValue) == "string" || typeof(rowValue) == "number") - { - // Functions already have a copy item in their context menu - items.push( - "-", - {label: "CopyValue", - command: bindFixed(this.copyProperty, this, row) } - ); - } - - items.push( - "-", - {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"), - command: bindFixed(this.editProperty, this, row) } - ); - - if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName))) - { - items.push( - {label: isWatch ? "DeleteWatch" : "DeleteProperty", - command: bindFixed(this.deleteProperty, this, row) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ); - - return items; - }, - - getEditor: function(target, value) - { - if (!this.editor) - this.editor = new DOMEditor(this.document); - - return this.editor; - }/**/ -}); - -// ************************************************************************************************ - -// TODO: xxxpedro statusbar -var updateStatusBar = function(panel) -{ - var path = panel.propertyPath; - var index = panel.pathIndex; - - var r = []; - - for (var i=0, l=path.length; i'); - r.push(i==0 ? "window" : path[i] || "Object"); - r.push('
                                '); - - if(i < l-1) - r.push('>'); - } - panel.statusBarNode.innerHTML = r.join(""); -}; - - -var DOMMainPanel = Firebug.DOMPanel = function () {}; - -Firebug.DOMPanel.DirTable = DirTablePlate; - -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - onClickStatusBar: function(event) - { - var target = event.srcElement || event.target; - var element = getAncestorByClass(target, "fbHover"); - - if(element) - { - var pathIndex = element.getAttribute("pathIndex"); - - if(pathIndex) - { - this.select(this.getPathObject(pathIndex)); - } - } - }, - - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - this.select(target.repObject, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOM", - title: "DOM", - searchable: true, - statusSeparator: ">", - - options: { - hasToolButtons: true, - hasStatusBar: true - }, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - - //TODO: xxxpedro - this.onClickStatusBar = bind(this.onClickStatusBar, this); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(oldPanelNode) - { - //this.panelNode.addEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']); - - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro dom - this.ishow(); - - //TODO: xxxpedro - addEvent(this.statusBarNode, "click", this.onClickStatusBar); - }, - - shutdown: function() - { - //this.panelNode.removeEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']); - - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }/*, - - search: function(text, reverse) - { - if (!text) - { - delete this.currentSearch; - this.highlightRow(null); - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive); - else - { - function findRow(node) { return getAncestorByClass(node, "memberRow"); } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive); - } - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - - scrollIntoCenterView(row, this.panelNode); - - this.highlightRow(row); - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]); - return false; - } - }/**/ -}); - -Firebug.registerPanel(DOMMainPanel); - - -// ************************************************************************************************ - - - -// ************************************************************************************************ -// Local Helpers - -var getMembers = function getMembers(object, level) // we expect object to be user-level object wrapped in security blanket -{ - if (!level) - level = 0; - - var ordinals = [], userProps = [], userClasses = [], userFuncs = [], - domProps = [], domFuncs = [], domConstants = []; - - try - { - var domMembers = getDOMMembers(object); - //var domMembers = {}; // TODO: xxxpedro - //var domConstantMap = {}; // TODO: xxxpedro - - if (object.wrappedJSObject) - var insecureObject = object.wrappedJSObject; - else - var insecureObject = object; - - // IE function prototype is not listed in (for..in) - if (isIE && isFunction(object)) - addMember("user", userProps, "prototype", object.prototype, level); - - for (var name in insecureObject) // enumeration is safe - { - if (ignoreVars[name] == 1) // javascript.options.strict says ignoreVars is undefined. - continue; - - var val; - try - { - val = insecureObject[name]; // getter is safe - } - catch (exc) - { - // Sometimes we get exceptions trying to access certain members - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers cannot access "+name, exc); - } - - var ordinal = parseInt(name); - if (ordinal || ordinal == 0) - { - addMember("ordinal", ordinals, name, val, level); - } - else if (isFunction(val)) - { - if (isClassFunction(val) && !(name in domMembers)) - addMember("userClass", userClasses, name, val, level); - else if (name in domMembers) - addMember("domFunction", domFuncs, name, val, level, domMembers[name]); - else - addMember("userFunction", userFuncs, name, val, level); - } - else - { - //TODO: xxxpedro - /* - var getterFunction = insecureObject.__lookupGetter__(name), - setterFunction = insecureObject.__lookupSetter__(name), - prefix = ""; - - if(getterFunction && !setterFunction) - prefix = "get "; - /**/ - - var prefix = ""; - - if (name in domMembers && !(name in domConstantMap)) - addMember("dom", domProps, (prefix+name), val, level, domMembers[name]); - else if (name in domConstantMap) - addMember("dom", domConstants, (prefix+name), val, level); - else - addMember("user", userProps, (prefix+name), val, level); - } - } - } - catch (exc) - { - // Sometimes we get exceptions just from trying to iterate the members - // of certain objects, like StorageList, but don't let that gum up the works - throw exc; - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers FAILS: ", exc); - //throw exc; - } - - function sortName(a, b) { return a.name > b.name ? 1 : -1; } - function sortOrder(a, b) { return a.order > b.order ? 1 : -1; } - - var members = []; - - members.push.apply(members, ordinals); - - Firebug.showUserProps = true; // TODO: xxxpedro - Firebug.showUserFuncs = true; // TODO: xxxpedro - Firebug.showDOMProps = true; - Firebug.showDOMFuncs = true; - Firebug.showDOMConstants = true; - - if (Firebug.showUserProps) - { - userProps.sort(sortName); - members.push.apply(members, userProps); - } - - if (Firebug.showUserFuncs) - { - userClasses.sort(sortName); - members.push.apply(members, userClasses); - - userFuncs.sort(sortName); - members.push.apply(members, userFuncs); - } - - if (Firebug.showDOMProps) - { - domProps.sort(sortName); - members.push.apply(members, domProps); - } - - if (Firebug.showDOMFuncs) - { - domFuncs.sort(sortName); - members.push.apply(members, domFuncs); - } - - if (Firebug.showDOMConstants) - members.push.apply(members, domConstants); - - return members; -} - -function expandMembers(members, toggles, offset, level) // recursion starts with offset=0, level=0 -{ - var expanded = 0; - for (var i = offset; i < members.length; ++i) - { - var member = members[i]; - if (member.level > level) - break; - - if ( toggles.hasOwnProperty(member.name) ) - { - member.open = "opened"; // member.level <= level && member.name in toggles. - - var newMembers = getMembers(member.value, level+1); // sets newMembers.level to level+1 - - var args = [i+1, 0]; - args.push.apply(args, newMembers); - members.splice.apply(members, args); - - /* - if (FBTrace.DBG_DOM) - { - FBTrace.sysout("expandMembers member.name", member.name); - FBTrace.sysout("expandMembers toggles", toggles); - FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]); - FBTrace.sysout("dom.expandedMembers level: "+level+" member", member); - } - /**/ - - expanded += newMembers.length; - i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1); - } - } - - return expanded; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -function isClassFunction(fn) -{ - try - { - for (var name in fn.prototype) - return true; - } catch (exc) {} - return false; -} - -var hasProperties = function hasProperties(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - - // IE function prototype is not listed in (for..in) - if (isFunction(ob)) return true; - - return false; -} - -FBL.ErrorCopy = function(message) -{ - this.message = message; -}; - -var addMember = function addMember(type, props, name, value, level, order) -{ - var rep = Firebug.getRep(value); // do this first in case a call to instanceof reveals contents - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var ErrorCopy = function(){}; //TODO: xxxpedro - - var valueType = typeof(value); - var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) && - (isFunction(value) || (valueType == "object" && value != null) - || (valueType == "string" && value.length > Firebug.stringCropLength)); - - props.push({ - name: name, - value: value, - type: type, - rowClass: "memberRow-"+type, - open: "", - order: order, - level: level, - indent: level*16, - hasChildren: hasChildren, - tag: tag - }); -} - -var getWatchRowIndex = function getWatchRowIndex(row) -{ - var index = -1; - for (; row && hasClass(row, "watchRow"); row = row.previousSibling) - ++index; - return index; -} - -var getRowName = function getRowName(row) -{ - var node = row.firstChild; - return node.textContent ? node.textContent : node.innerText; -} - -var getRowValue = function getRowValue(row) -{ - return row.lastChild.firstChild.repObject; -} - -var getRowOwnerObject = function getRowOwnerObject(row) -{ - var parentRow = getParentRow(row); - if (parentRow) - return getRowValue(parentRow); -} - -var getParentRow = function getParentRow(row) -{ - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - return row; - } -} - -var getPath = function getPath(row) -{ - var name = getRowName(row); - var path = [name]; - - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - { - var name = getRowName(row); - path.splice(0, 0, name); - - --level; - } - } - - return path; -} - -// ************************************************************************************************ - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// DOM Module - -Firebug.DOM = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null; - } -}); - -Firebug.registerModule(Firebug.DOM); - - -// ************************************************************************************************ -// DOM Panel - -var lastHighlightedObject; - -function DOMSidePanel(){}; - -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - var object = target.repObject; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - /* - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - object = object ? object.repObject : null; - - if(!object) return; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - /**/ - - - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOMSidePanel", - parentPanel: "HTML", - title: "DOM", - - options: { - hasToolButtons: true - }, - - isInitialized: false, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - }, - - initialize: function(){ - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }, - - reattach: function(oldChrome) - { - //this.isInitialized = oldChrome.getPanel("DOM").isInitialized; - this.toggles = oldChrome.getPanel("DOMSidePanel").toggles; - } - -}); - -Firebug.registerPanel(DOMSidePanel); - - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.FBTrace = {}; - -(function() { -// ************************************************************************************************ - -var traceOptions = { - DBG_TIMESTAMP: 1, - DBG_INITIALIZE: 1, - DBG_CHROME: 1, - DBG_ERRORS: 1, - DBG_DISPATCH: 1, - DBG_CSS: 1 -}; - -this.module = null; - -this.initialize = function() -{ - if (!this.messageQueue) - this.messageQueue = []; - - for (var name in traceOptions) - this[name] = traceOptions[name]; -}; - -// ************************************************************************************************ -// FBTrace API - -this.sysout = function() -{ - return this.logFormatted(arguments, ""); -}; - -this.dumpProperties = function(title, object) -{ - return this.logFormatted("dumpProperties() not supported.", "warning"); -}; - -this.dumpStack = function() -{ - return this.logFormatted("dumpStack() not supported.", "warning"); -}; - -this.flush = function(module) -{ - this.module = module; - - var queue = this.messageQueue; - this.messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - this.writeMessage(queue[i][0], queue[i][1], queue[i][2]); -}; - -this.getPanel = function() -{ - return this.module ? this.module.getPanel() : null; -}; - -//************************************************************************************************* - -this.logFormatted = function(objects, className) -{ - var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : []; - var length = objects.length; - - for (var i = 0; i < length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - - if (i == 0) - { - html.push(""); - appendText(object, html); - html.push(""); - } - else - appendText(object, html); - } - - return this.logRow(html, className); -}; - -this.logRow = function(message, className) -{ - var panel = this.getPanel(); - - if (panel && panel.panelNode) - this.writeMessage(message, className); - else - { - this.messageQueue.push([message, className]); - } - - return this.LOG_COMMAND; -}; - -this.writeMessage = function(message, className) -{ - var container = this.getPanel().containerNode; - var isScrolledToBottom = - container.scrollTop + container.offsetHeight >= container.scrollHeight; - - this.writeRow.call(this, message, className); - - if (isScrolledToBottom) - container.scrollTop = container.scrollHeight - container.offsetHeight; -}; - -this.appendRow = function(row) -{ - var container = this.getPanel().panelNode; - container.appendChild(row); -}; - -this.writeRow = function(message, className) -{ - var row = this.getPanel().panelNode.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - this.appendRow(row); -}; - -//************************************************************************************************* - -function appendText(object, html) -{ - html.push(escapeHTML(objectToString(object))); -}; - -function getTimestamp() -{ - var now = new Date(); - var ms = "" + (now.getMilliseconds() / 1000).toFixed(3); - ms = ms.substr(2); - - return now.toLocaleTimeString() + "." + ms; -}; - -//************************************************************************************************* - -var HTMLtoEntity = -{ - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ -}; - -function replaceChars(ch) -{ - return HTMLtoEntity[ch]; -}; - -function escapeHTML(value) -{ - return (value+"").replace(/[<>&"']/g, replaceChars); -}; - -//************************************************************************************************* - -function objectToString(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -}).apply(FBL.FBTrace); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// If application isn't in trace mode, the FBTrace panel won't be loaded -if (!Env.Options.enableTrace) return; - -// ************************************************************************************************ -// FBTrace Module - -Firebug.Trace = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null; - }, - - clear: function() - { - this.getPanel().panelNode.innerHTML = ""; - } -}); - -Firebug.registerModule(Firebug.Trace); - - -// ************************************************************************************************ -// FBTrace Panel - -function TracePanel(){}; - -TracePanel.prototype = extend(Firebug.Panel, -{ - name: "Trace", - title: "Trace", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear FBTrace logs", - owner: Firebug.Trace, - onClick: Firebug.Trace.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - } - -}); - -Firebug.registerPanel(TracePanel); - -// ************************************************************************************************ -}}); - -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var modules = []; -var panelTypes = []; -var panelTypeMap = {}; - -var parentPanelMap = {}; - - -var registerModule = Firebug.registerModule; -var registerPanel = Firebug.registerPanel; - -// ************************************************************************************************ -append(Firebug, -{ - extend: function(fn) - { - if (Firebug.chrome && Firebug.chrome.addPanel) - { - var namespace = ns(fn); - fn.call(namespace, FBL); - } - else - { - setTimeout(function(){Firebug.extend(fn);},100); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Registration - - registerModule: function() - { - registerModule.apply(Firebug, arguments); - - modules.push.apply(modules, arguments); - - dispatch(modules, "initialize", []); - - if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule"); - }, - - registerPanel: function() - { - registerPanel.apply(Firebug, arguments); - - panelTypes.push.apply(panelTypes, arguments); - - for (var i = 0, panelType; panelType = arguments[i]; ++i) - { - // TODO: xxxpedro investigate why Dev Panel throws an error - if (panelType.prototype.name == "Dev") continue; - - panelTypeMap[panelType.prototype.name] = arguments[i]; - - var parentPanelName = panelType.prototype.parentPanel; - if (parentPanelName) - { - parentPanelMap[parentPanelName] = 1; - } - else - { - var panelName = panelType.prototype.name; - var chrome = Firebug.chrome; - chrome.addPanel(panelName); - - // tab click handler - var onTabClick = function onTabClick() - { - chrome.selectPanel(panelName); - return false; - }; - - chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]); - } - } - - if (FBTrace.DBG_INITIALIZE) - for (var i = 0; i < arguments.length; ++i) - FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name); - } - -}); - - - - -// ************************************************************************************************ -}}); - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -FirebugChrome.Skin = -{ - CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.png) repeat-y;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disable.png) no-repeat 2px 1px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.png) no-repeat !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/infoIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/warningIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}', - HTML: '
                                 
                                 
                                >>>
                                2 errors' -}; - -// ************************************************************************************************ -}}); - -// ************************************************************************************************ -FBL.initialize(); -// ************************************************************************************************ - -})(); \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension/firebug.jpg b/branches/firebug1.5/build/chrome-extension/firebug.jpg deleted file mode 100644 index 2a18aa0d..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug.jpg and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug128.png b/branches/firebug1.5/build/chrome-extension/firebug128.png deleted file mode 100644 index dbca545f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug128.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug16.png b/branches/firebug1.5/build/chrome-extension/firebug16.png deleted file mode 100644 index d8d0c249..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug16.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug24.png b/branches/firebug1.5/build/chrome-extension/firebug24.png deleted file mode 100644 index f50ff926..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug24.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug24_disabled.png b/branches/firebug1.5/build/chrome-extension/firebug24_disabled.png deleted file mode 100644 index 16d4dcde..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug24_disabled.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug32.png b/branches/firebug1.5/build/chrome-extension/firebug32.png deleted file mode 100644 index c02f4f5f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug32.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/firebug48.png b/branches/firebug1.5/build/chrome-extension/firebug48.png deleted file mode 100644 index b4431327..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/firebug48.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/googleChrome.js b/branches/firebug1.5/build/chrome-extension/googleChrome.js deleted file mode 100644 index 26c8af3d..00000000 --- a/branches/firebug1.5/build/chrome-extension/googleChrome.js +++ /dev/null @@ -1,106 +0,0 @@ -/* See license.txt for terms of usage */ - -Firebug.extend(function(FBL) { with (FBL) { -// ************************************************************************************************ - -if (!Env.isChromeExtension) return; - -// ************************************************************************************************ -// local variables - -var channel; -var channelEvent; - -// ************************************************************************************************ -// GoogleChrome Module - -Firebug.GoogleChrome = extend(Firebug.Module, -{ - initialize: function() - { - var doc = FBL.Env.browser.document; - - if (!doc.getElementById("FirebugChannel")) - { - channel = doc.createElement("div"); - channel.id = "FirebugChannel"; - channel.firebugIgnore = true; - channel.style.display = "none"; - doc.documentElement.insertBefore(channel, doc.documentElement.firstChild); - - channelEvent = document.createEvent("Event"); - channelEvent.initEvent("FirebugChannelEvent", true, true); - - channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent); - } - }, - - dispatch: function(message) - { - channel.innerText = message; - channel.dispatchEvent(channelEvent); - } -}); - -// ************************************************************************************************ -// internals - -var onFirebugChannelEvent = function() -{ - var name = channel.innerText; - - if (name.indexOf("FB_contextMenuClick") == 0) - { - var doc = FBL.Env.browser.document; - var contextMenuElementXPath = name.split(",")[1]; - var contextMenuElement = getElementsByXPath(doc, contextMenuElementXPath)[0]; - - // If not open, open it first - Firebug.chrome.toggle(true); - - setTimeout(function(){ - - // Select the HTML panel - Firebug.chrome.selectPanel("HTML"); - - // Select the clicked element in the HTML tree - Firebug.HTML.select(contextMenuElement); - - },50); - } - else if (name == "FB_toggle") - { - Firebug.chrome.toggle(); - } - else if (name == "FB_openInNewWindow") - { - setTimeout(function(){ - Firebug.chrome.toggle(true, true); - },0); - } -}; - -var getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.GoogleChrome); - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension/license.txt b/branches/firebug1.5/build/chrome-extension/license.txt deleted file mode 100644 index ba43b751..00000000 --- a/branches/firebug1.5/build/chrome-extension/license.txt +++ /dev/null @@ -1,30 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2007, Parakey Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Parakey Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Parakey Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/branches/firebug1.5/build/chrome-extension/manifest.json b/branches/firebug1.5/build/chrome-extension/manifest.json deleted file mode 100644 index 9fa024dd..00000000 --- a/branches/firebug1.5/build/chrome-extension/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "Firebug Lite for Google Chromeâ„¢", - "version": "1.3.2.9761", - "description": "Firebug Lite for Google Chrome, supported by the Firebug Working Group.", - "background_page": "background.html", - "browser_action": - { - "default_icon": "firebug24_disabled.png", - "default_title": "Firebug Lite 1.3.2" - }, - "icons": - { - "128": "firebug128.png", - "16": "firebug16.png", - "32": "firebug32.png", - "48": "firebug48.png" - }, - "content_scripts": - [ - { - "matches": ["http://*/*", "https://*/*"], - "js": ["contentScript.js"], - "run_at": "document_start" - } - ], - "permissions": - [ - "contextMenus", - "tabs", - "http://*/*", - "https://*/*", - "http://127.0.0.1/*", - "http://localhost/*" - ] -} \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/blank.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/blank.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBg.png b/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBgHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/detach.png b/branches/firebug1.5/build/chrome-extension/skin/xp/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/detach.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/detachHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/detachHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/disable.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/disable.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/disable.png b/branches/firebug1.5/build/chrome-extension/skin/xp/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/disable.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/disableHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/down.png b/branches/firebug1.5/build/chrome-extension/skin/xp/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/down.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/downActive.png b/branches/firebug1.5/build/chrome-extension/skin/xp/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/downActive.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/downHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/downHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon-sm.png b/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.png b/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug-1.3a2.css b/branches/firebug1.5/build/chrome-extension/skin/xp/firebug-1.3a2.css deleted file mode 100644 index b5dd5dde..00000000 --- a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug-1.3a2.css +++ /dev/null @@ -1,817 +0,0 @@ -.fbBtnPressed { - background: #ECEBE3; - padding: 3px 6px 2px 7px !important; - margin: 1px 0 0 1px; - _margin: 1px -1px 0 1px; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -.fbToolbarButtons { - display: none; -} - -#fbStatusBarBox { - display: none; -} - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -html, body { - margin: 0; - padding: 0; - overflow: hidden; -} - -body { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - position: fixed; - overflow: hidden; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - position: absolute; - z-index: 5; - width: 100%; - top: 0; - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; - overflow: hidden; -} - -#fbPanelBarBox { - top: 27px; - position: absolute; - z-index: 8; - width: 100%; - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 4px 5px 0; -} - -#fbToolbarIcon a { - display: block; - height: 20px; - width: 20px; - background: url(sprite.png) 0 -135px; - text-decoration: none; - cursor: default; -} - -#fbToolbarButtons { - float: left; - padding: 4px 2px 0 5px; -} - -#fbToolbarButtons a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 8px 4px; - cursor: default; -} - -#fbToolbarButtons a:hover { - color: #333; - padding: 3px 7px 3px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -#fbStatusBarBox { - position: relative; - top: 5px; - line-height: 19px; - cursor: default; -} - -.fbToolbarSeparator{ - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 10px 6px 0 0; - float: left; -} - -.fbStatusBar span { - color: #808080; - padding: 0 4px 0 0; -} - -.fbStatusBar span a { - text-decoration: none; - color: black; -} - -.fbStatusBar span a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - _width: 50px; - padding: 5px 0 5px 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 255px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 10px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 11px; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - padding-left: 6px; - background: #fff; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 7px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; -} - -div.fbFitHeight { - overflow: auto; - _position: absolute; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -#fbWindowButtons a { - font-size: 1px; - width: 16px; - height: 16px; - display: block; - float: right; - margin-right: 4px; - text-decoration: none; - cursor: default; -} - -#fbWindow_btClose { - background: url(sprite.png) 0 -119px; -} - -#fbWindow_btClose:hover { - background: url(sprite.png) -16px -119px; -} - -#fbWindow_btDetach { - background: url(sprite.png) -32px -119px; -} - -#fbWindow_btDetach:hover { - background: url(sprite.png) -48px -119px; -} - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - display: block; - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 9; - position: absolute; - height: 100%; - top: 27px; - _width: 6px; -} - -/************************************************************************************************/ -div.lineNo { - font: 11px Monaco, monospace; - float: left; - display: inline; - position: relative; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -pre.nodeCode { - font: 11px Monaco, monospace; - margin: 0; - padding-left: 10px; - overflow: hidden; - /* - _width: 100%; - /**/ -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 11px; -} - -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; -} - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - white-space: pre; -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -} - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.IE6.css b/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.IE6.css deleted file mode 100644 index 14f8aa87..00000000 --- a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.IE6.css +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************************************/ -#fbToolbarSearch { - background-image: url(search.gif) !important; -} -/************************************************************************************************/ -.fbErrors { - background-image: url(errorIcon.gif) !important; -} -/************************************************************************************************/ -.logRow-info { - background-image: url(infoIcon.gif) !important; -} - -.logRow-warning { - background-image: url(warningIcon.gif) !important; -} - -.logRow-error { - background-image: url(errorIcon.gif) !important; -} diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.css b/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.css deleted file mode 100644 index decd5917..00000000 --- a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.css +++ /dev/null @@ -1,3056 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font: message-box; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - /* white-space: pre; */ - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding: 0 10px 0 0; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -/* IE6 has problems with > operator, and multiple classes */ -/*.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, - /* avoid rule not being parsed IE6 */ -.logRow-spy .spyHead .spyTitle, -.logGroup .logGroupLabel, -.hasChildren .memberLabelCell .memberLabel, -.hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} -/* -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -/* avoid rule not being parsed IE6 */ -.opened .spyHead .spyTitle, -.opened .logGroupLabel, -.opened .memberLabelCell .memberLabel/*, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 2px 0; -} - - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -.objectPropValue { - font-weight: normal; - font-style: italic; - color: #555555; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.arrayLeftBracket { - margin-right: 4px; -} - -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 4px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; -} - -#fbPanelBarBox { - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 48px; - padding: 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #ECE9D8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 10; - position: absolute; - height: 100%; - top: 27px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em Monaco, monospace; - position: absolute; - top: 0; - left: 0; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.html b/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                - - - - -
                                -   -   -   -
                                - - -
                                -
                                - - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
                                - -
                                - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                -
                                -
                                - - -
                                 
                                - - -
                                - - -
                                -
                                -
                                - -
                                - - - - - -
                                - Run - Clear - - -
                                - -
                                -
                                -
                                >>>
                                - - -
                                -
                                - - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.png b/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/firebug.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/group.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/group.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.png b/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/loading_16.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/min.png b/branches/firebug1.5/build/chrome-extension/skin/xp/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/min.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/minHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/minHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/off.png b/branches/firebug1.5/build/chrome-extension/skin/xp/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/off.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/offHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/offHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/pixel_transparent.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/roundCorner.svg b/branches/firebug1.5/build/chrome-extension/skin/xp/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.5/build/chrome-extension/skin/xp/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/search.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/search.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/search.png b/branches/firebug1.5/build/chrome-extension/skin/xp/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/search.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/shadow.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/shadow.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/shadow2.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/shadowAlpha.png b/branches/firebug1.5/build/chrome-extension/skin/xp/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/sprite.png b/branches/firebug1.5/build/chrome-extension/skin/xp/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/sprite.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverLeft.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverMid.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverRight.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabLeft.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuCheckbox.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuPin.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuRadio.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTarget.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTargetHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMid.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tabRight.png b/branches/firebug1.5/build/chrome-extension/skin/xp/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tabRight.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.png b/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.png b/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/titlebarMid.png b/branches/firebug1.5/build/chrome-extension/skin/xp/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/toolbarMid.png b/branches/firebug1.5/build/chrome-extension/skin/xp/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tree_close.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/tree_open.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/up.png b/branches/firebug1.5/build/chrome-extension/skin/xp/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/up.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/upActive.png b/branches/firebug1.5/build/chrome-extension/skin/xp/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/upActive.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/upHover.png b/branches/firebug1.5/build/chrome-extension/skin/xp/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/upHover.png and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.gif b/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.png b/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.5/build/chrome-extension/skin/xp/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.5/build/compress.bat b/branches/firebug1.5/build/compress.bat deleted file mode 100644 index ebc54a3e..00000000 --- a/branches/firebug1.5/build/compress.bat +++ /dev/null @@ -1,3 +0,0 @@ -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug-lite.js firebug-lite-debug.js - -pause \ No newline at end of file diff --git a/branches/firebug1.5/build/template .htaccess b/branches/firebug1.5/build/template .htaccess deleted file mode 100644 index 2b750b1a..00000000 --- a/branches/firebug1.5/build/template .htaccess +++ /dev/null @@ -1,41 +0,0 @@ - - RewriteEngine on - RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR] - RewriteCond %{HTTP:Accept-Encoding} !gzip - RewriteRule (.*)\.jgz$ $1 [L] - - -# -# Header unset ETag -# -#FileETag None - -# -# Header unset Last-Modified -# Header set Cache-Control "private, x-gzip-ok=''" -# - -# -# - -#ExpiresActive on -#ExpiresDefault "access plus 0 seconds" - -# -#ExpiresActive On -#ExpiresDefault A300 -#ExpiresByType image/x-icon A2592000 -#ExpiresByType application/x-javascript A3600 -#ExpiresByType text/css A3600 -#ExpiresByType image/gif A604800 -#ExpiresByType image/png A604800 -#ExpiresByType image/jpeg A604800 -#ExpiresByType text/plain A300 -#ExpiresByType application/x-shockwave-flash A604800 -#ExpiresByType video/x-flv A604800 -#ExpiresByType application/pdf A604800 -#ExpiresByType text/html A300 -# - -AddType "text/javascript;charset=UTF-8" .jgz -AddEncoding gzip .jgz \ No newline at end of file diff --git a/branches/firebug1.5/content/bookmarlet.txt b/branches/firebug1.5/content/bookmarlet.txt deleted file mode 100644 index 7d27be24..00000000 --- a/branches/firebug1.5/content/bookmarlet.txt +++ /dev/null @@ -1,231 +0,0 @@ -//************************************************************************************************* -// Bookmarlet versions - -// Bookmarlet version 4 - -// stable -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// debug -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-debug.js','releases/lite/debug/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// beta -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-beta.js','releases/lite/beta/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// 1.3 dev -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/','#startOpened'); - -// 1.4 dev -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.4/','#startOpened'); - - - -//************************************************************************************************* -// 1.3.0 - -// 1.3.0 -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened'); - -// 1.3.0 X -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-debug.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#debug'); - - - -// version 2 -// version 1 - -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','build/firebug.jgz','skin/xp/sprite.png','http://firebug.local:8740/firebug1.3/','#startOpened,disableWhenFirebugActive=false'); - - -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); - - -javascript:var%20firebug=document.createElement('script');firebug.setAttribute('src','http://firebug.local:8740/firebug1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.firebug.version){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug); -http://firebug.local:8740/firebug1.3/ - - - -//************************************************************************************************* -// Bookmarlet FBL (sequencial) - -(function(F,B,L){ -L=F.createElement('script'); -L.id='FirebugLite'; -L.src=B; -F.getElementsByTagName('head')[0].appendChild(L); -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote'); - -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote'); - -//************************************************************************************************* - -(function(F,i,r,e,b,u,g,L,I,T,E){ -if(F.getElementById(b))return; - -E=F.documentElement.namespaceURI; -E=E?F[i+'NS'](E,'script'):F[i]('script'); - -E=F[i]('script'); -E[r]('id',b); -E[r]('src',I+g+T); -E[r](b,u); -(F[e]('head')[0]||F[e]('body')[0]).appendChild(E); - -E=new Image; -E[r]('src',I+L); -})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','firebug.jgz','skin/xp/sprite.png','http://getfirebug.com/releases/lite/beta/','#startOpened'); -// F i r e b u g L I T - - -//************************************************************************************************* -// Bookmarlet FBLite (parallel) - -(function(F,B,L,i,t,e){ -e=F[B]('script'); -e.id='FirebugLite'; -e.src=t+L; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=t+i; -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F B L i t - - -(function(F,B,L,i,t,e){ -e=F[B]('script'); -e.id='FirebugLite'; -e.src=L+t; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=L+i; -})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); -// F B L i t - - -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened'); - - -//--------------------------------------------------- - -(function(F,i,r,e,b,u,g){ -if(F.getElementById(r))return; - -g=F[i]('script'); -g.id=r; -g.src=u+e; -F.getElementsByTagName('head')[0].appendChild(g); - -g=F[i]('img'); -g.src=u+b; -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F i r e b u - -//--------------------------------------------------- - -(function(F,i,r,e,b,u,g){ -if(F.getElementById(r))return; - -g=F[i]('script'); -g.id=r; -g.src=u+e; - -r='getElementsByTagName'; -e='appendChild'; - -F[r]('head')[0][e](g); - -g=F[i]('img'); -g.src=u+b; - -g=F[i]('div'); -g.id='FBLI'; -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;'; -g.innerHTML='Loading...'; -F[r]('body')[0][e](g); - -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F i r e b u - -//--------------------------------------------------- - -// F,B,u,g,L,i,t,e -// F,i,r,e,b,u,g, -(function(F,B,L,i,t,e){ -if(F.getElementById('FBLS'))return; - -e=F[B]('div'); -e.id='FBLI'; -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;'; -e.innerHTML='Loading...'; -F.body.appendChild(e); - -e=F[B]('script'); -e.id='FBLS'; -e.src=t+L; -F.getElementsByTagName('head')[0].appendChild(e); - -e=F[B]('img'); -e.src=t+i; -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/'); -// F B L i t - - - -//************************************************************************************************* -// Bookmarlet FBL* (sequencial with loading indicator) - -(function(F,B,L){ -L=F.createElement('div'); -L.id='FBLI'; -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;'; -L.innerHTML='Loading ...'; -F.body.appendChild(L); - -L=F.createElement('script'); -L.id='FBLS'; -L.src=B; -F.getElementsByTagName('head')[0].appendChild(L); -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js'); - - -//************************************************************************************************* -// experimental bookmarlet - -(function(F,B,L,i,t,e){ - -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat'; -t=i?'absolute':'fixed'; - -e=F.createElement('div'); -e.id='FirebugLoadIndicator'; -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;'; -e.innerHTML='Loading Firebug Lite...'; -F.body.appendChild(e); - -e=F.createElement('script'); -e.src=L; -F.getElementsByTagName('head')[0].appendChild(e); - -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js'); - -//************************************************************************************************* - -// firebug lite 1.2 bookmarlet -javascript: - -var firebug=document.createElement('script'); -firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'); -document.body.appendChild(firebug); -(function(){ - if(window.firebug.version) - { - firebug.init(); - } - else - { - setTimeout(arguments.callee); - } -})(); -void(firebug); \ No newline at end of file diff --git a/branches/firebug1.5/content/changelog.txt b/branches/firebug1.5/content/changelog.txt deleted file mode 100644 index 1114b2eb..00000000 --- a/branches/firebug1.5/content/changelog.txt +++ /dev/null @@ -1,927 +0,0 @@ -################################################################################################### - 1.3.2 - 2011-03-22 - Revision: 9760 -################################################################################################### - -Overview: - - Issue 3422: Firebug Lite breaks Google Instant Search - - Issue 3504: Firebug lite: jQuery.ajax call fails in IE - - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - - Issue 3554: Firebug Lite should use local images when loaded locally - - Issue 3166: Listen to F12 key in for Google Chrome when inactive - - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension - - infoTips for CSS properties such as color and image - -------------------------------------------------------------------------------- -Addition -------------------------------------------------------------------------------- - - infoTips for CSS properties such as color and image - -------------------------------------------------------------------------------- -Bugfixes -------------------------------------------------------------------------------- - - Issue 3422: Firebug Lite breaks Google Instant Search - - Issue 3504: Firebug lite: jQuery.ajax call fails in IE - - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended - - Issue 3554: Firebug Lite should use local images when loaded locally - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Isolated most of Lite-specific code (not part/adaptation of Firebug's - original source) into a single directory (/content/firebug/lite/). - - Created a simple server-side proxy plugin to be used in conjunction with - Firebug Lite in order to overcome the cross-domain limitations of JavaScript - - Unifying Firebug Lite internal cache system (to be used in sourceCache). - As a bonus, the unified model allows Firebug Lite to adapt its cache when - new elements are inserted into the document, which means that now it will - be easier to use the Inspector in dynamically created content. - -------------------------------------------------------------------------------- -Chrome extension improvements -------------------------------------------------------------------------------- - - Issue 3166: Listen to F12 key in for Google Chrome when inactive - - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension - - Code refactored (chrome extension specific code isolated in a single file/module) - - Better message handling (two-way communication between the application/page, - content script and background page) - - Activation refactoring. The application is loaded how assynchronously during - activation and the activation can be started now by the BrowserAction/Icon, - the F12/ctrl+F12 key, or the context meny "Inspect with Firebug Lite" option. - It is possible also to activate-deactivate-reactivate without reloading - the page now. - - -################################################################################################### - 1.3.1 - 2010-09-07 - Revision: 7759 -################################################################################################### - -Overview: - - Issue 3272: Install Google Chrome extension results in a 404 error - - Issue 3384: Just two inadvertent globals across the Firebug Lite files - - Issue 3318: Firebug Lite dies if you hide the UI when the large command line is open - - Issue 3181: Firebug Lite Missing XHR methods/properties - - Issue 3262: CSS specificity is not being calculated properly. - - Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - - Normalizing syntax (missing semicolons) - - Added basic JsDoc comment markup - - -################################################################################################### - 1.3.1b2 - 2010-07-26 - Revision: 7413 -################################################################################################### - -Overview: - - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets - - Issue 3181: Missing XHR methods/properties - - Custom Net response viewers (XML and JSON viewers) - - Port of HTML viewer used in XHR representations - - Port of jsonViewer used in XHR representations - - Port of xmlViewer used in XHR representations - -------------------------------------------------------------------------------- -XHR -------------------------------------------------------------------------------- - - Compatibility with XMLHttpRequest 2 specification - - Issue 3181: Missing XHR methods/properties - - XHR representation is properly updated when the request is aborted - - Adjusting spy.mimeType according XHR response so we can detect when to - use custom response viewers (like HTML, XML and JSON viewers) - -------------------------------------------------------------------------------- -jsonViewer -------------------------------------------------------------------------------- - - Port of jsonViewer used in XHR representations - -------------------------------------------------------------------------------- -xmlViewer -------------------------------------------------------------------------------- - - Port of xmlViewer used in XHR representations - -------------------------------------------------------------------------------- -Net -------------------------------------------------------------------------------- - - Custom Net response viewers (XML and JSON viewers) - - Port of HTML viewer used in XHR representations - -------------------------------------------------------------------------------- -Spy -------------------------------------------------------------------------------- - - dispatching "initTabBody" event to Firebug.NetMonitor.NetInfoBody listeners - so custom response viewers can be properly initialized - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Included warnings when some external stylesheets could not be loaded - - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Avoid error when the element is not attached a document - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removing the temporary fix to RegExp problem Google Chrome 5 once it - is now fixed (and the temporary fix breaks the latest version). - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Firebug.Rep.getTitle now works for some special cases in IE - -------------------------------------------------------------------------------- -Command Line -------------------------------------------------------------------------------- - - Firebug.Console no longer uses Firebug.Console.LOG_COMMAND to identify - console calls as in the old Console panel version. - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added new experimental getDOMMember function to detect user members - (properties/functions) of several builtin objects such as window, - document, location, and instances of Element and other DOM objects - - -################################################################################################### - 1.3.1b1 - 2010-06-29 - Revision: 7198 -################################################################################################### - -Overview: - - Issue 2958: Unable to add CSS to an element that has no style rules - - Issue 3165: Styling problem with nested expandable groups - - Issue 3178: Bookmarklet does not support XML+XSLT documents - - Context menu support for Style and CSS Panels - - Using double click to insert new CSS rule (instead of mouse down) - - -------------------------------------------------------------------------------- -i18n -------------------------------------------------------------------------------- - - Unified all localization-related functions inside i18n.js - - Implemented $STRF (required for context menus) - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Improved GUI Menu component to support content menus - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Fixed timing issues when calling input.focus() and input.select() - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Panels now will stop editing when clicking on any non-editable element - -------------------------------------------------------------------------------- -UI -------------------------------------------------------------------------------- - - Issue 3165: Styling problem with nested expandable groups - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Issue 2958: Unable to add CSS to an element that has no style rules - - Using double click to insert new CSS rule (instead of mouse down) - - IE support for new features being used (context menu, double click, etc) - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Implemented panel.onContextMenu() - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Ported lib.hasProperties() - - Fixed IE mouse button detection for "dblclick" events - - Port of lib.parseJSONString() - - Making the development mode work online without requiring pre-configuration - - Enabled the bookmarlet update detection - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Added the old representations back to Firebug Lite source (Firebug.Reps) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed the broken console.dirxml() function - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed the broken dirxml() command line shortcut - -------------------------------------------------------------------------------- -Bookmarklet -------------------------------------------------------------------------------- - - Issue 3178: Bookmarklet does not support XML+XSLT documents - - -################################################################################################### - 1.3.1a2 - 2010-06-24 - Revision: 7125 -################################################################################################### - -Overview: - - Major performance improvements in the inline editor - - Major performance improvement in Chrome.keyCodeListen - - Issue 3118: Long lines in XHR response - - Issue 2981: Switching from CSS tab and back causes an error - - Fix bug in Google Chrome 5 which causes representation of "object links" - not being properly styled - - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - autocompletion cycling (with UP/DOWN keys) now works as expected for partially - typed words in IE6+, Safari/Google Chrome, and Opera - - - Major improvement in editor's autocomplete performance (was too slow on IE) - - No more problems with autocomplete when typing fast (timing issues) - - ignoring the inline editor spell checking in Safari/Google Chrome - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Fix bug in Google Chrome 5 which causes representation of "object links" - not being properly styled - -------------------------------------------------------------------------------- -UI -------------------------------------------------------------------------------- - - Issue 3118: Long lines in XHR response - - Added round corner support in the XHR tabs to Chrome and Opera - - Resetting user agent styles for tables which was creating a small glitch - (undesired blank space) between the toolbar and the panel content - -------------------------------------------------------------------------------- -Extensions -------------------------------------------------------------------------------- - - Testing Firediff extension support - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Issue 2981: Switching from CSS tab and back causes an error - - Destroying the inline editor when the panel is destroyed or hidden - - Properly dispatching some CSS change events to listeners - -------------------------------------------------------------------------------- -Firebug -------------------------------------------------------------------------------- - - Port of Firebug.Listener - - Firebug.Module now inherits from Firebug.Listener as in Firebug - - Experimental context menu support - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Improved window key code event listener. Only one "keydown" event will be - attached to the window, and the onKeyCodeListen() function will delegate - which listeners should be called according to the event.keyCode fired. - - - Fixing bug in the persistent mode (related to the new console panel) - - Improving the accuracy of the delay time calculated in the persist process. - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Fixed problem in Lib.dispatch which was preventing some listeners to be called. - - - -################################################################################################### - 1.3.0 - 2010-05-24 - Revision: 6859 -################################################################################################### - - - Refactored code - - Console e Css old modules deleted (not used anymore) - - Test modules deleted (moved to 1.4 branch) - - Comparison modules deleted (a copy of Domplate and DOM which was - used to compare the Firebug and Firebug Lite sources) - - - New distribution location and file name: - - https://getfirebug.com/firebug-lite.js (compressed) - - https://getfirebug.com/firebug-lite-debug.js (uncompressed, trace) - - https://getfirebug.com/firebug-lite-beta.js (beta channel) - - - Added "debug" URL option - - - Updated "classic" and "light" skins - - - Improvements in the debug mode (it exposes the FBL library, and forces - the UI element to be visible at HTML panel) - - - Fixed frameCounters variable leaking to global namespace - - - Firebug.extend() method added to support Firebug Lite extensions - - - Fixed the missing command line API dir() - - Fixed the missing command line api dirxml() - - Fixed the missing console.firebuglite property in the console object - - Fixed problem when loading an extension before the UI finish loading - - -################################################################################################### - 1.3.0b2 - 2010-05-06 - Revision: 6695 -################################################################################################### - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - The Console Panel now uses the same rendering engine (domplate) and object - representation (Reps) used in Firebug - - - Console now has clickable objects links, which will lead you to the related - panel, HTML if is an element, or the DOM panel if is an object - - - console.dir() now uses the same rich representation as in the DOM panel, with - items which can be collapsed, and links which can be clicked. - - - console.trace() now uses rich representation, with clickable links, and will - show the file name and line number for some browsers when found at the stacktrace - - - console.count() now works as in Firebug - - console.group() now can be collapsed, using the same representation as in Firebug - - console.groupCollapsed() added to the console object - - - new offline log messages handler (messages called before Firebug Lite UI finish - rendering), able to support clickable links and advanced representations - like the XHR watcher - - - ability to listen offline XHR messages - -------------------------------------------------------------------------------- -XHR -------------------------------------------------------------------------------- - - Fixed Issue 2977: XHR POST and URL parameters in the console - - Fixed Issue 2840: Firebug Lite 1.3b doesn't handle synchronous XHR requests - - Fixed Issue 2846: Firebug Lite 1.3b doesn't show XHR request made before the main - document is loaded - - - Fixed issue with the spinning XHR gif that wasn't being hidden sometimes in IE - - Fixed bug when there is no responseHeaders in IE - - Properly handling error when something goes wrong (like access restriction error) - -------------------------------------------------------------------------------- -Chrome extension -------------------------------------------------------------------------------- - - Fixed problem with restricted pages. the method used to load the bookmarlet - when no content script is available no longer works in recent versions of - Google Chrome, so now an alert box appears indicating that the extension - can't work on that page - - - Fixed problem when trying to activate Firebug Lite in a page which was open - before Firebug extension itself being enabled. Now it shows an alert box - asking the user to reload the page to complete the activation - - - Fixed problem in Google Chrome 5 which was caused by not using the proper - encoding (UTF-8) at the content script file - - - Fixed problem with popup. when the popup was opened, the bug icon was - becoming gray, falsely indicating that it was deactivated - - - Fixed problem with synchronization between Firebug Lite state and the - browser icon state - - - Fixed problem with UI images not loading in Mac and Linux (was related - to a bug in a third-party compression tool called Izarc) - - - Ignoring the FirebugChannel element in the HTML panel visualization - - - The core of the extension now uses the exact the same source as found - at getfirebug.com, and no longer needs to be built with a different - URL location for the images - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Fixed problem with cookies not available in XML+XSL documents - - Fixed bug at lib.findLocation() in IE, when using deep relative paths - - Basic extension system support - - Basic support for the next generation HTML panel (fully editable, cross-frame) - -------------------------------------------------------------------------------- -Net -------------------------------------------------------------------------------- - - Ported Firebug.NetMonitor.NetInfoPostData representation - - Fixed problem with the styling of XHR post tab in Google Chrome - - Fixed problem with the styling of XHR params tab in IE - -------------------------------------------------------------------------------- -ConsoleInjector -------------------------------------------------------------------------------- - - ported the consoleInjector module from Firebug - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Fixed problem with the Element's representation and attribute names - - Adjusted the StackFrame representation to be used with the new console.trace() - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Fixed styling problem with source code inside HTML tree (script tag). - The line numbers were positioned at the top of the panel. - -------------------------------------------------------------------------------- -Repository -------------------------------------------------------------------------------- - - Added issues test cases directory to the repository - - - -################################################################################################### - 1.3.0b1 - 2010-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2010-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/console.js b/branches/firebug1.5/content/firebug1.4/console.js deleted file mode 100644 index 840e3b32..00000000 --- a/branches/firebug1.5/content/firebug1.4/console.js +++ /dev/null @@ -1,1191 +0,0 @@ -/* See license.txt for terms of usage */ - -// next-generation Console Panel (will override consoje.js) -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Constants - -/* -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -/**/ -/* - -// new offline message handler -o = {x:1,y:2}; - -r = Firebug.getRep(o); - -r.tag.tag.compile(); - -outputs = []; -html = r.tag.renderHTML({object:o}, outputs); - - -// finish rendering the template (the DOM part) -target = $("build"); -target.innerHTML = html; -root = target.firstChild; - -domArgs = [root, r.tag.context, 0]; -domArgs.push.apply(domArgs, r.tag.domArgs); -domArgs.push.apply(domArgs, outputs); -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs); - - - */ -var consoleQueue = []; -var lastHighlightedObject; -var FirebugContext = Env.browser; - -// ************************************************************************************************ - -var maxQueueRequests = 500; - -// ************************************************************************************************ - -Firebug.ConsoleBase = -{ - log: function(object, context, className, rep, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]); - return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle); - }, - - logFormatted: function(objects, context, className, noThrottle, sourceLink) - { - //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]); - return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle); - }, - - openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush) - { - return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle); - }, - - closeGroup: function(context, noThrottle) - { - return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true); - }, - - logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow) - { - // TODO: xxxpedro console console2 - noThrottle = true; // xxxpedro forced because there is no TabContext yet - - if (!context) - context = FirebugContext; - - if (FBTrace.DBG_ERRORS && !context) - FBTrace.sysout("Console.logRow has no context, skipping objects", objects); - - if (!context) - return; - - if (noThrottle || !context) - { - var panel = this.getPanel(context); - if (panel) - { - var row = panel.append(appender, objects, className, rep, sourceLink, noRow); - var container = panel.panelNode; - - // TODO: xxxpedro what is this? console console2 - /* - var template = Firebug.NetMonitor.NetLimit; - - while (container.childNodes.length > maxQueueRequests + 1) - { - clearDomplate(container.firstChild.nextSibling); - container.removeChild(container.firstChild.nextSibling); - panel.limit.limitInfo.totalCount++; - template.updateCounter(panel.limit); - } - dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]); - /**/ - return row; - } - else - { - consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]); - } - } - else - { - if (!context.throttle) - { - //FBTrace.sysout("console.logRow has not context.throttle! "); - return; - } - var args = [appender, objects, context, className, rep, sourceLink, true, noRow]; - context.throttle(this.logRow, this, args); - } - }, - - appendFormatted: function(args, row, context) - { - if (!context) - context = FirebugContext; - - var panel = this.getPanel(context); - panel.appendFormatted(args, row); - }, - - clear: function(context) - { - if (!context) - //context = FirebugContext; - context = Firebug.context; - - /* - if (context) - Firebug.Errors.clear(context); - /**/ - - var panel = this.getPanel(context, true); - if (panel) - { - panel.clear(); - } - }, - - // Override to direct output to your panel - getPanel: function(context, noCreate) - { - //return context.getPanel("console", noCreate); - // TODO: xxxpedro console console2 - return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null; - } - -}; - -// ************************************************************************************************ - -//TODO: xxxpedro -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase); -var ActivableConsole = extend(Firebug.ConsoleBase, -{ - isAlwaysEnabled: function() - { - return true; - } -}); - -Firebug.Console = Firebug.Console = extend(ActivableConsole, -//Firebug.Console = extend(ActivableConsole, -{ - dispatchName: "console", - - error: function() - { - Firebug.Console.logFormatted(arguments, Firebug.browser, "error"); - }, - - flush: function() - { - dispatch(this.fbListeners,"flush",[]); - - for (var i=0, length=consoleQueue.length; i objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - var object = objects[++objIndex]; - if (typeof(object) != "undefined") - this.appendObject(object, row, part.rep); - else - this.appendObject(part.type, row, FirebugReps.Text); - } - else - FirebugReps.Text.tag.append({object: part}, row); - } - - for (var i = objIndex+1; i < objects.length; ++i) - { - logText(" ", row); - var object = objects[i]; - if (typeof(object) == "string") - FirebugReps.Text.tag.append({object: object}, row); - else - this.appendObject(object, row); - } - }, - - appendOpenGroup: function(objects, row, rep) - { - if (!this.groups) - this.groups = []; - - setClass(row, "logGroup"); - setClass(row, "opened"); - - var innerRow = this.createRow("logRow"); - setClass(innerRow, "logGroupLabel"); - if (rep) - rep.tag.replace({"objects": objects}, innerRow); - else - this.appendFormatted(objects, innerRow, rep); - row.appendChild(innerRow); - //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]); - var groupBody = this.createRow("logGroupBody"); - row.appendChild(groupBody); - groupBody.setAttribute('role', 'group'); - this.groups.push(groupBody); - - addEvent(innerRow, "mousedown", function(event) - { - if (isLeftClick(event)) - { - //console.log(event.currentTarget == event.target); - - var target = event.target || event.srcElement; - - target = getAncestorByClass(target, "logGroupLabel"); - - var groupRow = target.parentNode; - - if (hasClass(groupRow, "opened")) - { - removeClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'false'); - } - else - { - setClass(groupRow, "opened"); - target.setAttribute('aria-expanded', 'true'); - } - } - }); - }, - - appendCloseGroup: function(object, row, rep) - { - if (this.groups) - this.groups.pop(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TODO: xxxpedro console2 - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - onMouseDown: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - var repObject = object ? object.repObject : null; - - if (!repObject) - { - return; - } - - if (hasClass(object, "objectLink-object")) - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(repObject, true); - } - else if (hasClass(object, "objectLink-element")) - { - Firebug.chrome.selectPanel("HTML"); - Firebug.chrome.getPanel("HTML").select(repObject, true); - } - - /* - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - /**/ - - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "Console", - title: "Console", - //searchable: true, - //breakable: true, - //editable: false, - - options: - { - hasCommandLine: true, - hasToolButtons: true, - isPreRendered: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.context = Firebug.browser.window; - this.document = Firebug.chrome.document; - this.onMouseMove = bind(this.onMouseMove, this); - this.onMouseDown = bind(this.onMouseDown, this); - - this.clearButton = new Button({ - element: $("fbConsole_btClear"), - owner: Firebug.Console, - onClick: Firebug.Console.clear - }); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); // loads persisted content - //Firebug.ActivablePanel.initialize.apply(this, arguments); // loads persisted content - - if (!this.persistedContent && Firebug.Console.isAlwaysEnabled()) - { - this.insertLogLimit(this.context); - - // Initialize log limit and listen for changes. - this.updateMaxLimit(); - - if (this.context.consoleReloadWarning) // we have not yet injected the console - this.insertReloadWarning(); - } - - //Firebug.Console.injector.install(Firebug.browser.window); - - addEvent(this.panelNode, "mouseover", this.onMouseMove); - addEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.clearButton.initialize(); - - //consolex.trace(); - //TODO: xxxpedro remove this - /* - Firebug.Console.openGroup(["asd"], null, "group", null, false); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - Firebug.Console.log("asd"); - /**/ - - //TODO: xxxpedro preferences prefs - //prefs.addObserver(Firebug.prefDomain, this, false); - }, - - initializeNode : function() - { - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]); - if (FBTrace.DBG_CONSOLE) - { - this.onScroller = bind(this.onScroll, this); - addEvent(this.panelNode, "scroll", this.onScroller); - } - - this.onResizer = bind(this.onResize, this); - this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - addEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - destroyNode : function() - { - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]); - if (this.onScroller) - removeEvent(this.panelNode, "scroll", this.onScroller); - - //removeEvent(this.resizeEventTarget, "resize", this.onResizer); - }, - - shutdown: function() - { - //TODO: xxxpedro console console2 - this.clearButton.shutdown(); - - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - - //TODO: xxxpedro preferences prefs - //prefs.removeObserver(Firebug.prefDomain, this, false); - }, - - ishow: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel show; " + this.context.getName(), state); - - var enabled = Firebug.Console.isAlwaysEnabled(); - if (enabled) - { - Firebug.Console.disabledPanelPage.hide(this); - this.showCommandLine(true); - this.showToolbarButtons("fbConsoleButtons", true); - Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent); - - if (state && state.wasScrolledToBottom) - { - this.wasScrolledToBottom = state.wasScrolledToBottom; - delete state.wasScrolledToBottom; - } - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - } - else - { - this.hide(state); - Firebug.Console.disabledPanelPage.show(this); - } - }, - - ihide: function(state) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("Console.panel hide; " + this.context.getName(), state); - - this.showToolbarButtons("fbConsoleButtons", false); - this.showCommandLine(false); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - destroy: function(state) - { - if (this.panelNode.offsetHeight) - this.wasScrolledToBottom = isScrolledToBottom(this.panelNode); - - if (state) - state.wasScrolledToBottom = this.wasScrolledToBottom; - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", " + this.context.getName()); - }, - - shouldBreakOnNext: function() - { - // xxxHonza: shouldn't the breakOnErrors be context related? - // xxxJJB, yes, but we can't support it because we can't yet tell - // which window the error is on. - return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors"); - }, - - getBreakOnNextTooltip: function(enabled) - { - return (enabled ? $STR("console.Disable Break On All Errors") : - $STR("console.Break On All Errors")); - }, - - enablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.enablePanel.apply(this, arguments); - - this.showCommandLine(true); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - }, - - disablePanel: function(module) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName()); - - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - - this.showCommandLine(false); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowJavaScriptErrors", "showJSErrors"), - optionMenu("ShowJavaScriptWarnings", "showJSWarnings"), - optionMenu("ShowCSSErrors", "showCSSErrors"), - optionMenu("ShowXMLErrors", "showXMLErrors"), - optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"), - optionMenu("ShowChromeErrors", "showChromeErrors"), - optionMenu("ShowChromeMessages", "showChromeMessages"), - optionMenu("ShowExternalErrors", "showExternalErrors"), - optionMenu("ShowNetworkErrors", "showNetworkErrors"), - this.getShowStackTraceMenuItem(), - this.getStrictOptionMenuItem(), - "-", - optionMenu("LargeCommandLine", "largeCommandLine") - ]; - }, - - getShowStackTraceMenuItem: function() - { - var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace"); - if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled()) - menuItem.disabled = true; - return menuItem; - }, - - getStrictOptionMenuItem: function() - { - var strictDomain = "javascript.options"; - var strictName = "strict"; - var strictValue = prefs.getBoolPref(strictDomain+"."+strictName); - return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue, - command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) }; - }, - - getBreakOnMenuItems: function() - { - //xxxHonza: no BON options for now. - /*return [ - optionMenu("console.option.Persist Break On Error", "persistBreakOnError") - ];*/ - return []; - }, - - search: function(text) - { - if (!text) - return; - - // Make previously visible nodes invisible again - if (this.matchSet) - { - for (var i in this.matchSet) - removeClass(this.matchSet[i], "matched"); - } - - this.matchSet = []; - - function findRow(node) { return getAncestorByClass(node, "logRow"); } - var search = new TextSearch(this.panelNode, findRow); - - var logRow = search.find(text); - if (!logRow) - { - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]); - return false; - } - for (; logRow; logRow = search.findNext()) - { - setClass(logRow, "matched"); - this.matchSet.push(logRow); - } - dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]); - return true; - }, - - breakOnNext: function(breaking) - { - Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // private - - createRow: function(rowName, className) - { - var elt = this.document.createElement("div"); - elt.className = rowName + (className ? " " + rowName + "-" + className : ""); - return elt; - }, - - getTopContainer: function() - { - if (this.groups && this.groups.length) - return this.groups[this.groups.length-1]; - else - return this.panelNode; - }, - - filterLogRow: function(logRow, scrolledToBottom) - { - if (this.searchText) - { - setClass(logRow, "matching"); - setClass(logRow, "matched"); - - // Search after a delay because we must wait for a frame to be created for - // the new logRow so that the finder will be able to locate it - setTimeout(bindFixed(function() - { - if (this.searchFilter(this.searchText, logRow)) - this.matchSet.push(logRow); - else - removeClass(logRow, "matched"); - - removeClass(logRow, "matching"); - - if (scrolledToBottom) - scrollToBottom(this.panelNode); - }, this), 100); - } - }, - - searchFilter: function(text, logRow) - { - var count = this.panelNode.childNodes.length; - var searchRange = this.document.createRange(); - searchRange.setStart(this.panelNode, 0); - searchRange.setEnd(this.panelNode, count); - - var startPt = this.document.createRange(); - startPt.setStartBefore(logRow); - - var endPt = this.document.createRange(); - endPt.setStartAfter(logRow); - - return finder.Find(text, searchRange, startPt, endPt) != null; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - // xxxHonza check this out. - var prefDomain = "Firebug.extension."; - var prefName = data.substr(prefDomain.length); - if (prefName == "console.logLimit") - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = 1000; - //TODO: xxxpedro preferences log limit? - //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - }, - - showCommandLine: function(shouldShow) - { - //TODO: xxxpedro show command line important - return; - - if (shouldShow) - { - collapse(Firebug.chrome.$("fbCommandBox"), false); - Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome); - } - else - { - // Make sure that entire content of the Console panel is hidden when - // the panel is disabled. - Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine); - collapse(Firebug.chrome.$("fbCommandBox"), true); - } - }, - - onScroll: function(event) - { - // Update the scroll position flag if the position changes. - this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode); - - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", wasScrolledToBottom: " + - this.context.getName(), event); - }, - - onResize: function(event) - { - if (FBTrace.DBG_CONSOLE) - FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " + - this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight + - ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " + - this.panelNode.scrollHeight + ", " + this.context.getName(), event); - - if (this.wasScrolledToBottom) - scrollToBottom(this.panelNode); - } -}); - -// ************************************************************************************************ - -function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -} - -// ************************************************************************************************ - -var appendObject = Firebug.ConsolePanel.prototype.appendObject; -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted; -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup; -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup; - -// ************************************************************************************************ - -//Firebug.registerActivableModule(Firebug.Console); -Firebug.registerModule(Firebug.Console); -Firebug.registerPanel(Firebug.ConsolePanel); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/context.js b/branches/firebug1.5/content/firebug1.4/context.js deleted file mode 100644 index b3cfe198..00000000 --- a/branches/firebug1.5/content/firebug1.4/context.js +++ /dev/null @@ -1,665 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-context*/ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var refreshDelay = 300; - -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint() -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this -// issue was fixed in the 532 version -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532"; - -var evalError = "___firebug_evaluation_error___"; -var pixelsPerInch; - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - - -// ************************************************************************************************ -// Context - -/** @class */ -FBL.Context = function(win) -{ - this.window = win.window; - this.document = win.document; - - this.browser = Env.browser; - - // Some windows in IE, like iframe, doesn't have the eval() method - if (isIE && !this.window.eval) - { - // But after executing the following line the method magically appears! - this.window.execScript("null"); - // Just to make sure the "magic" really happened - if (!this.window.eval) - throw new Error("Firebug Error: eval() method not found in this window"); - } - - // Create a new "black-box" eval() method that runs in the global namespace - // of the context window, without exposing the local variables declared - // by the function that calls it - this.eval = this.window.eval("new Function('" + - "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" + - "')"); -}; - -FBL.Context.prototype = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // partial-port of Firebug tabContext.js - - browser: null, - loaded: true, - - setTimeout: function(fn, delay) - { - var win = this.window; - - if (win.setTimeout == this.setTimeout) - throw new Error("setTimeout recursion"); - - var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout - win.setTimeout.apply(win, arguments) : - win.setTimeout(fn, delay); - - if (!this.timeouts) - this.timeouts = {}; - - this.timeouts[timeout] = 1; - - return timeout; - }, - - clearTimeout: function(timeout) - { - clearTimeout(timeout); - - if (this.timeouts) - delete this.timeouts[timeout]; - }, - - setInterval: function(fn, delay) - { - var win = this.window; - - var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout - win.setInterval.apply(win, arguments) : - win.setInterval(fn, delay); - - if (!this.intervals) - this.intervals = {}; - - this.intervals[timeout] = 1; - - return timeout; - }, - - clearInterval: function(timeout) - { - clearInterval(timeout); - - if (this.intervals) - delete this.intervals[timeout]; - }, - - invalidatePanels: function() - { - if (!this.invalidPanels) - this.invalidPanels = {}; - - for (var i = 0; i < arguments.length; ++i) - { - var panelName = arguments[i]; - - // avoid error. need to create a better getPanel() function as explained below - if (!Firebug.chrome || !Firebug.chrome.selectedPanel) - return; - - //var panel = this.getPanel(panelName, true); - //TODO: xxxpedro context how to get all panels using a single function? - // the current workaround to make the invalidation works is invalidating - // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite) - var panel = Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) : - null; - - if (panel && !panel.noRefresh) - this.invalidPanels[panelName] = 1; - } - - if (this.refreshTimeout) - { - this.clearTimeout(this.refreshTimeout); - delete this.refreshTimeout; - } - - this.refreshTimeout = this.setTimeout(bindFixed(function() - { - var invalids = []; - - for (var panelName in this.invalidPanels) - { - //var panel = this.getPanel(panelName, true); - //TODO: xxxpedro context how to get all panels using a single function? - // the current workaround to make the invalidation works is invalidating - // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite) - var panel = Firebug.chrome.selectedPanel.sidePanelBar ? - Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) : - null; - - if (panel) - { - if (panel.visible && !panel.editing) - panel.refresh(); - else - panel.needsRefresh = true; - - // If the panel is being edited, we'll keep trying to - // refresh it until editing is done - if (panel.editing) - invalids.push(panelName); - } - } - - delete this.invalidPanels; - delete this.refreshTimeout; - - // Keep looping until every tab is valid - if (invalids.length) - this.invalidatePanels.apply(this, invalids); - }, this), refreshDelay); - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Evalutation Method - - /** - * Evaluates an expression in the current context window. - * - * @param {String} expr expression to be evaluated - * - * @param {String} context string indicating the global location - * of the object that will be used as the - * context. The context is referred in - * the expression as the "this" keyword. - * If no context is informed, the "window" - * context is used. - * - * @param {String} api string indicating the global location - * of the object that will be used as the - * api of the evaluation. - * - * @param {Function} errorHandler(message) error handler to be called - * if the evaluation fails. - */ - evaluate: function(expr, context, api, errorHandler) - { - // Need to remove line breaks otherwise only the first line will be executed - expr = stripNewLines(expr); - - // the default context is the "window" object. It can be any string that represents - // a global accessible element as: "my.namespaced.object" - context = context || "window"; - - var cmd, - result; - - // if the context is the "window" object, we don't need a closure - if (context == "window") - { - // try first the expression wrapped in parenthesis (so we can capture - // object literal expressions like "{}" and "{some:1,props:2}") - cmd = api ? - "with("+api+"){ ("+expr+") }" : - "(" + expr + ")"; - - result = this.eval(cmd); - - // if it results in error, then try it without parenthesis - if (result && result[evalError]) - { - cmd = api ? - "with("+api+"){ "+expr+" }" : - expr; - - result = this.eval(cmd); - - } - } - else - { - // try to execute the command using a "return" statement in the evaluation closure. - cmd = api ? - // with API and context, trying to get the return value - "(function(arguments){ with(" + api + "){ return (" + - expr + - ") } }).call(" + context + ",undefined)" - : - // with context only, trying to get the return value - "(function(arguments){ return (" + - expr + - ") }).call(" +context + ",undefined)"; - - result = this.eval(cmd); - - // if it results in error, then try it without the "return" statement - if (result && result[evalError]) - { - cmd = api ? - // with API and context, no return value - "(function(arguments){ with(" + api + "){ " + - expr + - " } }).call(" + context + ",undefined)" - : - // with context only, no return value - "(function(arguments){ " + - expr + - " }).call(" + context + ",undefined)"; - - result = this.eval(cmd); - } - } - - if (result && result[evalError]) - { - var msg = result.name ? (result.name + ": ") : ""; - msg += result.message || result; - - if (errorHandler) - result = errorHandler(msg) - else - result = msg; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Window Methods - - getWindowSize: function() - { - var width=0, height=0, el; - - if (typeof this.window.innerWidth == "number") - { - width = this.window.innerWidth; - height = this.window.innerHeight; - } - else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - else if ((el=this.document.body) && (el.clientHeight || el.clientWidth)) - { - width = el.clientWidth; - height = el.clientHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollSize: function() - { - var width=0, height=0, el; - - // first try the document.documentElement scroll size - if (!isIEQuiksMode && (el=this.document.documentElement) && - (el.scrollHeight || el.scrollWidth)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - // then we need to check if document.body has a bigger scroll size value - // because sometimes depending on the browser and the page, the document.body - // scroll size returns a smaller (and wrong) measure - if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) && - (el.scrollWidth > width || el.scrollHeight > height)) - { - width = el.scrollWidth; - height = el.scrollHeight; - } - - return {width: width, height: height}; - }, - - getWindowScrollPosition: function() - { - var top=0, left=0, el; - - if(typeof this.window.pageYOffset == "number") - { - top = this.window.pageYOffset; - left = this.window.pageXOffset; - } - else if((el=this.document.body) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft)) - { - top = el.scrollTop; - left = el.scrollLeft; - } - - return {top:top, left:left}; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Element Methods - - getElementFromPoint: function(x, y) - { - if (shouldFixElementFromPoint) - { - var scroll = this.getWindowScrollPosition(); - return this.document.elementFromPoint(x + scroll.left, y + scroll.top); - } - else - return this.document.elementFromPoint(x, y); - }, - - getElementPosition: function(el) - { - var left = 0 - var top = 0; - - do - { - left += el.offsetLeft; - top += el.offsetTop; - } - while (el = el.offsetParent); - - return {left:left, top:top}; - }, - - getElementBox: function(el) - { - var result = {}; - - if (el.getBoundingClientRect) - { - var rect = el.getBoundingClientRect(); - - // fix IE problem with offset when not in fullscreen mode - var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0; - - var scroll = this.getWindowScrollPosition(); - - result.top = Math.round(rect.top - offset + scroll.top); - result.left = Math.round(rect.left - offset + scroll.left); - result.height = Math.round(rect.bottom - rect.top); - result.width = Math.round(rect.right - rect.left); - } - else - { - var position = this.getElementPosition(el); - - result.top = position.top; - result.left = position.left; - result.height = el.offsetHeight; - result.width = el.offsetWidth; - } - - return result; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Measurement Methods - - getMeasurement: function(el, name) - { - var result = {value: 0, unit: "px"}; - - var cssValue = this.getStyle(el, name); - - if (!cssValue) return result; - if (cssValue.toLowerCase() == "auto") return result; - - var reMeasure = /(\d+\.?\d*)(.*)/; - var m = cssValue.match(reMeasure); - - if (m) - { - result.value = m[1]-0; - result.unit = m[2].toLowerCase(); - } - - return result; - }, - - getMeasurementInPixels: function(el, name) - { - if (!el) return null; - - var m = this.getMeasurement(el, name); - var value = m.value; - var unit = m.unit; - - if (unit == "px") - return value; - - else if (unit == "pt") - return this.pointsToPixels(name, value); - - if (unit == "em") - return this.emToPixels(el, value); - - else if (unit == "%") - return this.percentToPixels(el, value); - }, - - getMeasurementBox1: function(el, name) - { - var sufixes = ["Top", "Left", "Bottom", "Right"]; - var result = []; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix)); - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getMeasurementBox: function(el, name) - { - var result = []; - var sufixes = name == "border" ? - ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] : - ["Top", "Left", "Bottom", "Right"]; - - if (isIE) - { - var propName, cssValue; - var autoMargin = null; - - for(var i=0, sufix; sufix=sufixes[i]; i++) - { - propName = name + sufix; - - cssValue = el.currentStyle[propName] || el.style[propName]; - - if (cssValue == "auto") - { - if (!autoMargin) - autoMargin = this.getCSSAutoMarginBox(el); - - result[i] = autoMargin[sufix.toLowerCase()]; - } - else - result[i] = this.getMeasurementInPixels(el, propName); - - } - - } - else - { - for(var i=0, sufix; sufix=sufixes[i]; i++) - result[i] = this.getMeasurementInPixels(el, name + sufix); - } - - return {top:result[0], left:result[1], bottom:result[2], right:result[3]}; - }, - - getCSSAutoMarginBox: function(el) - { - if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1) - return {top:0, left:0, bottom:0, right:0}; - /**/ - - var offsetTop = 0; - if (false && isIEStantandMode) - { - var scrollSize = Firebug.browser.getWindowScrollSize(); - offsetTop = scrollSize.height; - } - - var box = this.document.createElement("div"); - //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;"; - box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;"; - - var clone = el.cloneNode(false); - var text = this.document.createTextNode(" "); - clone.appendChild(text); - - box.appendChild(clone); - - this.document.body.appendChild(box); - - var marginTop = clone.offsetTop - box.offsetTop - 1; - var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop; - - var marginLeft = clone.offsetLeft - box.offsetLeft - 1; - var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft; - - this.document.body.removeChild(box); - - return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight}; - }, - - getFontSizeInPixels: function(el) - { - var size = this.getMeasurement(el, "fontSize"); - - if (size.unit == "px") return size.value; - - // get font size, the dirty way - var computeDirtyFontSize = function(el, calibration) - { - var div = this.document.createElement("div"); - var divStyle = offscreenStyle; - - if (calibration) - divStyle += " font-size:"+calibration+"px;"; - - div.style.cssText = divStyle; - div.innerHTML = "A"; - el.appendChild(div); - - var value = div.offsetHeight; - el.removeChild(div); - return value; - } - - /* - var calibrationBase = 200; - var calibrationValue = computeDirtyFontSize(el, calibrationBase); - var rate = calibrationBase / calibrationValue; - /**/ - - // the "dirty technique" fails in some environments, so we're using a static value - // based in some tests. - var rate = 200 / 225; - - var value = computeDirtyFontSize(el); - - return value * rate; - }, - - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Unit Funtions - - pointsToPixels: function(name, value, returnFloat) - { - var axis = /Top$|Bottom$/.test(name) ? "y" : "x"; - - var result = value * pixelsPerInch[axis] / 72; - - return returnFloat ? result : Math.round(result); - }, - - emToPixels: function(el, value) - { - if (!el) return null; - - var fontSize = this.getFontSizeInPixels(el); - - return Math.round(value * fontSize); - }, - - exToPixels: function(el, value) - { - if (!el) return null; - - // get ex value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "ex;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - percentToPixels: function(el, value) - { - if (!el) return null; - - // get % value, the dirty way - var div = this.document.createElement("div"); - div.style.cssText = offscreenStyle + "width:"+value + "%;"; - - el.appendChild(div); - var value = div.offsetWidth; - el.removeChild(div); - - return value; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getStyle: isIE ? function(el, name) - { - return el.currentStyle[name] || el.style[name] || undefined; - } - : function(el, name) - { - return this.document.defaultView.getComputedStyle(el,null)[name] - || el.style[name] || undefined; - } - -}; - - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/css.js b/branches/firebug1.5/content/firebug1.4/css.js deleted file mode 100644 index ca6988c5..00000000 --- a/branches/firebug1.5/content/firebug1.4/css.js +++ /dev/null @@ -1,2877 +0,0 @@ -/* See license.txt for terms of usage */ - -// move to FBL -(function() { - -// ************************************************************************************************ -// XPath - -/** - * Gets an XPath for an element which describes its hierarchical location. - */ -this.getElementXPath = function(element) -{ - if (element && element.id) - return '//*[@id="' + element.id + '"]'; - else - return this.getElementTreeXPath(element); -}; - -this.getElementTreeXPath = function(element) -{ - var paths = []; - - for (; element && element.nodeType == 1; element = element.parentNode) - { - var index = 0; - for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) - { - if (sibling.nodeName == element.nodeName) - ++index; - } - - var tagName = element.nodeName.toLowerCase(); - var pathIndex = (index ? "[" + (index+1) + "]" : ""); - paths.splice(0, 0, tagName + pathIndex); - } - - return paths.length ? "/" + paths.join("/") : null; -}; - -this.getElementsByXPath = function(doc, xpath) -{ - var nodes = []; - - try { - var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null); - for (var item = result.iterateNext(); item; item = result.iterateNext()) - nodes.push(item); - } - catch (exc) - { - // Invalid xpath expressions make their way here sometimes. If that happens, - // we still want to return an empty set without an exception. - } - - return nodes; -}; - -this.getRuleMatchingElements = function(rule, doc) -{ - var css = rule.selectorText; - var xpath = this.cssToXPath(css); - return this.getElementsByXPath(doc, xpath); -}; - - -}).call(FBL); - - - - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - -var toCamelCase = function toCamelCase(s) -{ - return s.replace(reSelectorCase, toCamelCaseReplaceFn); -}; - -var toSelectorCase = function toSelectorCase(s) -{ - return s.replace(reCamelCase, "-$1").toLowerCase(); - -}; - -var reCamelCase = /([A-Z])/g; -var reSelectorCase = /\-(.)/g; -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g) -{ - return g.toUpperCase(); -}; - - - - - -// ************************************************************************************************ - -var ElementCache = Firebug.Lite.Cache.Element; -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet; - -var globalCSSRuleIndex; - -var externalStyleSheetURLs = []; -var externalStyleSheetWarning = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'}, - SPAN("$object|STR"), - A({"href": "$href", target:"_blank"}, "$link|STR") - ) -}); - - -var processAllStyleSheetsTimeout = null; -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet) -{ - var url = styleSheet.href; - styleSheet.firebugIgnore = true; - - var source = Firebug.Lite.Proxy.load(url); - - // TODO: check for null and error responses - - - // remove comments - //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g; - //source = source.replace(reMultiComment, ""); - - // convert relative addresses to absolute ones - source = source.replace(/url\(([^\)]+)\)/g, function(a,name){ - - var hasDomain = /\w+:\/\/./.test(name); - - if (!hasDomain) - { - name = name.replace(/^(["'])(.+)\1$/, "$2"); - var first = name.charAt(0); - - // relative path, based on root - if (first == "/") - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLRoot - var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url); - - return m ? - "url(" + m[1] + name + ")" : - "url(" + name + ")"; - } - // relative path, based on current location - else - { - // TODO: xxxpedro move to lib or Firebug.Lite.something - // getURLPath - var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, ""); - - path = path + name; - - var reBack = /[^\/]+\/\.\.\//; - while(reBack.test(path)) - { - path = path.replace(reBack, ""); - } - - //console.log("url(" + path + ")"); - - return "url(" + path + ")"; - } - } - - // if it is an absolute path, there is nothing to do - return a; - }); - - var oldStyle = styleSheet.ownerNode; - - if (!oldStyle) return; - - if (!oldStyle.parentNode) return; - - var style = createGlobalElement("style"); - style.setAttribute("charset","utf-8"); - style.setAttribute("type", "text/css"); - style.innerHTML = source; - - //debugger; - oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling); - oldStyle.parentNode.removeChild(oldStyle); - - - //doc.getElementsByTagName("head")[0].appendChild(style); - - doc.styleSheets[doc.styleSheets.length-1].externalURL = url; - - console.log(url, "call " + externalStyleSheetURLs.length, source); - - externalStyleSheetURLs.pop(); - - if (processAllStyleSheetsTimeout) - { - clearTimeout(processAllStyleSheetsTimeout); - } - - processAllStyleSheetsTimeout = setTimeout(function(){ - console.log("processing"); - FBL.processAllStyleSheets(doc, styleSheetIterator); - processAllStyleSheetsTimeout = null; - },200); - -}; - - -FBL.processAllStyleSheets = function(doc, styleSheetIterator) -{ - styleSheetIterator = styleSheetIterator || processStyleSheet; - - globalCSSRuleIndex = -1; - - var styleSheets = doc.styleSheets; - var importedStyleSheets = []; - - if (FBTrace.DBG_CSS) - var start = new Date().getTime(); - - for(var i=0, length=styleSheets.length; i maxSpecificity) - { - maxSpecificity = spec; - mostSpecificSelector = sel; - } - } - } - - rule.specificity = maxSpecificity; - } - } - - rules.sort(sortElementRules); - //rules.sort(solveRulesTied); - - return rules; -}; - -var sortElementRules = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - var specificityA = ruleA.specificity; - var specificityB = ruleB.specificity; - - if (specificityA > specificityB) - return 1; - - else if (specificityA < specificityB) - return -1; - - else - return ruleA.order > ruleB.order ? 1 : -1; -}; - -var solveRulesTied = function(a, b) -{ - var ruleA = CSSRuleMap[a]; - var ruleB = CSSRuleMap[b]; - - if (ruleA.specificity == ruleB.specificity) - return ruleA.order > ruleB.order ? 1 : -1; - - return null; -}; - -var reSelectorTag = /(^|\s)(?:\w+)/g; -var reSelectorClass = /\.[\w\d_-]+/g; -var reSelectorId = /#[\w\d_-]+/g; - -var getCSSRuleSpecificity = function(selector) -{ - var match = selector.match(reSelectorTag); - var tagCount = match ? match.length : 0; - - match = selector.match(reSelectorClass); - var classCount = match ? match.length : 0; - - match = selector.match(reSelectorId); - var idCount = match ? match.length : 0; - - return tagCount + 10*classCount + 100*idCount; -}; - -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ -// ************************************************************************************************ - - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule; -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor; -//const nsISelectionDisplay = Ci.nsISelectionDisplay; -//const nsISelectionController = Ci.nsISelectionController; - -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153 -//const STATE_ACTIVE = 0x01; -//const STATE_FOCUS = 0x02; -//const STATE_HOVER = 0x04; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -Firebug.SourceBoxPanel = Firebug.Panel; - -var domUtils = null; - -var textContent = isIE ? "innerText" : "textContent"; -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var CSSDomplateBase = { - isEditable: function(rule) - { - return !rule.isSystemSheet; - }, - isSelectorEditable: function(rule) - { - return rule.isSelectorEditable && this.isEditable(rule); - } -}; - -var CSSPropTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled", - $editGroup: "$rule|isEditable", - $cssOverridden: "$prop.overridden", role : "option"}, - A({"class": "cssPropDisable"}, "  "), - SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"), - SPAN({"class": "cssColon"}, ":"), - SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"), - SPAN({"class": "cssSemi"}, ";") - ) -}); - -var CSSRuleTag = - TAG("$rule.tag", {rule: "$rule"}); - -var CSSImportRuleTag = domplate({ - tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"}, - "@import "", - A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"), - "";" - ) -}); - -var CSSStyleRuleTag = domplate(CSSDomplateBase, { - tag: DIV({"class": "cssRule insertInto", - $cssEditableRule: "$rule|isEditable", - $editGroup: "$rule|isSelectorEditable", - _repObject: "$rule.rule", - "ruleId": "$rule.id", role : 'presentation'}, - DIV({"class": "cssHead focusRow", role : 'listitem'}, - SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {" - ), - DIV({role : 'group'}, - DIV({"class": "cssPropertyListBox", role : 'listbox'}, - FOR("prop", "$rule.props", - TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"}) - ) - ) - ), - DIV({"class": "editable insertBefore", role:"presentation"}, "}") - ) -}); - -var reSplitCSS = /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/; - -var reURL = /url\("?([^"\)]+)?"?\)/; - -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/; - -//const sothinkInstalled = !!$("swfcatcherKey_sidebar"); -var sothinkInstalled = false; -var styleGroups = -{ - text: [ - "font-family", - "font-size", - "font-weight", - "font-style", - "color", - "text-transform", - "text-decoration", - "letter-spacing", - "word-spacing", - "line-height", - "text-align", - "vertical-align", - "direction", - "column-count", - "column-gap", - "column-width" - ], - - background: [ - "background-color", - "background-image", - "background-repeat", - "background-position", - "background-attachment", - "opacity" - ], - - box: [ - "width", - "height", - "top", - "right", - "bottom", - "left", - "margin-top", - "margin-right", - "margin-bottom", - "margin-left", - "padding-top", - "padding-right", - "padding-bottom", - "padding-left", - "border-top-width", - "border-right-width", - "border-bottom-width", - "border-left-width", - "border-top-color", - "border-right-color", - "border-bottom-color", - "border-left-color", - "border-top-style", - "border-right-style", - "border-bottom-style", - "border-left-style", - "-moz-border-top-radius", - "-moz-border-right-radius", - "-moz-border-bottom-radius", - "-moz-border-left-radius", - "outline-top-width", - "outline-right-width", - "outline-bottom-width", - "outline-left-width", - "outline-top-color", - "outline-right-color", - "outline-bottom-color", - "outline-left-color", - "outline-top-style", - "outline-right-style", - "outline-bottom-style", - "outline-left-style" - ], - - layout: [ - "position", - "display", - "visibility", - "z-index", - "overflow-x", // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow - "overflow-y", - "overflow-clip", - "white-space", - "clip", - "float", - "clear", - "-moz-box-sizing" - ], - - other: [ - "cursor", - "list-style-image", - "list-style-position", - "list-style-type", - "marker-offset", - "user-focus", - "user-select", - "user-modify", - "user-input" - ] -}; - -var styleGroupTitles = -{ - text: "Text", - background: "Background", - box: "Box Model", - layout: "Layout", - other: "Other" -}; - -Firebug.CSSModule = extend(Firebug.Module, -{ - freeEdit: function(styleSheet, value) - { - if (!styleSheet.editStyleSheet) - { - var ownerNode = getStyleSheetOwnerNode(styleSheet); - styleSheet.disabled = true; - - var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL); - url.spec = styleSheet.href; - - var editStyleSheet = ownerNode.ownerDocument.createElementNS( - "http://www.w3.org/1999/xhtml", - "style"); - unwrapObject(editStyleSheet).firebugIgnore = true; - editStyleSheet.setAttribute("type", "text/css"); - editStyleSheet.setAttributeNS( - "http://www.w3.org/XML/1998/namespace", - "base", - url.directory); - if (ownerNode.hasAttribute("media")) - { - editStyleSheet.setAttribute("media", ownerNode.getAttribute("media")); - } - - // Insert the edited stylesheet directly after the old one to ensure the styles - // cascade properly. - ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling); - - styleSheet.editStyleSheet = editStyleSheet; - } - - styleSheet.editStyleSheet.innerHTML = value; - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n"); - - dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]); - }, - - insertRule: function(styleSheet, cssText, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText); - var insertIndex = styleSheet.insertRule(cssText, ruleIndex); - - dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]); - - return insertIndex; - }, - - deleteRule: function(styleSheet, ruleIndex) - { - if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules); - dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]); - - styleSheet.deleteRule(ruleIndex); - }, - - setProperty: function(rule, propName, propValue, propPriority) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - // good browsers - if (style.getPropertyValue) - { - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect - // unless we remove the property first - style.removeProperty(propName); - - style.setProperty(propName, propValue, propPriority); - } - // sad browsers - else - { - // TODO: xxxpedro parse CSS rule to find property priority in IE? - //console.log(propName, propValue); - style[toCamelCase(propName)] = propValue; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]); - } - }, - - removeProperty: function(rule, propName, parent) - { - var style = rule.style || rule; - - // Record the original CSS text for the inline case so we can reconstruct at a later - // point for diffing purposes - var baseText = style.cssText; - - if (style.getPropertyValue) - { - - var prevValue = style.getPropertyValue(propName); - var prevPriority = style.getPropertyPriority(propName); - - style.removeProperty(propName); - } - else - { - style[toCamelCase(propName)] = ""; - } - - if (propName) { - dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]); - } - }/*, - - cleanupSheets: function(doc, context) - { - // Due to the manner in which the layout engine handles multiple - // references to the same sheet we need to kick it a little bit. - // The injecting a simple stylesheet then removing it will force - // Firefox to regenerate it's CSS hierarchy. - // - // WARN: This behavior was determined anecdotally. - // See http://code.google.com/p/fbug/issues/detail?id=2440 - var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style"); - style.setAttribute("charset","utf-8"); - unwrapObject(style).firebugIgnore = true; - style.setAttribute("type", "text/css"); - style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}"; - addStyleSheet(doc, style); - style.parentNode.removeChild(style); - - // https://bugzilla.mozilla.org/show_bug.cgi?id=500365 - // This voodoo touches each style sheet to force some Firefox internal change to allow edits. - var styleSheets = getAllStyleSheets(context); - for(var i = 0; i < styleSheets.length; i++) - { - try - { - var rules = styleSheets[i].cssRules; - if (rules.length > 0) - var touch = rules[0]; - if (FBTrace.DBG_CSS && touch) - FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName())); - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e); - } - } - }, - cleanupSheetHandler: function(event, context) - { - var target = event.target || event.srcElement, - tagName = (target.tagName || "").toLowerCase(); - if (tagName == "link") - { - this.cleanupSheets(target.ownerDocument, context); - } - }, - watchWindow: function(context, win) - { - var cleanupSheets = bind(this.cleanupSheets, this), - cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context), - doc = win.document; - - //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false); - //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false); - }, - loadedContext: function(context) - { - var self = this; - iterateWindows(context.browser.contentWindow, function(subwin) - { - self.cleanupSheets(subwin.document, context); - }); - } - /**/ -}); - -// ************************************************************************************************ - -Firebug.CSSStyleSheetPanel = function() {}; - -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel, -{ - template: domplate( - { - tag: - DIV({"class": "cssSheet insertInto a11yCSSView"}, - FOR("rule", "$rules", - CSSRuleTag - ), - DIV({"class": "cssSheet editable insertBefore"}, "") - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - refresh: function() - { - if (this.location) - this.updateLocation(this.location); - else if (this.selection) - this.updateSelection(this.selection); - }, - - toggleEditing: function() - { - if (!this.stylesheetEditor) - this.stylesheetEditor = new StyleSheetEditor(this.document); - - if (this.editing) - Firebug.Editor.stopEditing(); - else - { - if (!this.location) - return; - - var styleSheet = this.location.editStyleSheet - ? this.location.editStyleSheet.sheet - : this.location; - - var css = getStyleSheetCSS(styleSheet, this.context); - //var topmost = getTopmostRuleLine(this.panelNode); - - this.stylesheetEditor.styleSheet = this.location; - Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor); - //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset); - } - }, - - getStylesheetURL: function(rule) - { - if (this.location.href) - return this.location.href; - else - return this.context.window.location.href; - }, - - getRuleByLine: function(styleSheet, line) - { - if (!domUtils) - return null; - - var cssRules = styleSheet.cssRules; - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - if (rule instanceof CSSStyleRule) - { - var ruleLine = domUtils.getRuleLine(rule); - if (ruleLine >= line) - return rule; - } - } - }, - - highlightRule: function(rule) - { - var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule); - if (ruleElement) - { - scrollIntoCenterView(ruleElement, this.panelNode); - setClassTimed(ruleElement, "jumpHighlight", this.context); - } - }, - - getStyleSheetRules: function(context, styleSheet) - { - var isSystemSheet = isSystemStyleSheet(styleSheet); - - function appendRules(cssRules) - { - for (var i = 0; i < cssRules.length; ++i) - { - var rule = cssRules[i]; - - // TODO: xxxpedro opera instanceof stylesheet remove the following comments when - // the issue with opera and style sheet Classes has been solved. - - //if (rule instanceof CSSStyleRule) - if (instanceOf(rule, "CSSStyleRule")) - { - var props = this.getRuleProperties(context, rule); - //var line = domUtils.getRuleLine(rule); - var line = null; - - var selector = rule.selectorText; - - if (isIE) - { - selector = selector.replace(reSelectorTag, - function(s){return s.toLowerCase();}); - } - - var ruleId = rule.selectorText+"/"+line; - rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId, - selector: selector, props: props, - isSystemSheet: isSystemSheet, - isSelectorEditable: true}); - } - //else if (rule instanceof CSSImportRule) - else if (instanceOf(rule, "CSSImportRule")) - rules.push({tag: CSSImportRuleTag.tag, rule: rule}); - //else if (rule instanceof CSSMediaRule) - else if (instanceOf(rule, "CSSMediaRule")) - appendRules.apply(this, [rule.cssRules]); - else - { - if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS) - FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule); - } - } - } - - var rules = []; - appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]); - return rules; - }, - - parseCSSProps: function(style, inheritMode) - { - var props = []; - - if (Firebug.expandShorthandProps) - { - var count = style.length-1, - index = style.length; - while (index--) - { - var propName = style.item(count - index); - this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props); - } - } - else - { - var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - // TODO: xxxpedro port to firebug: variable leaked into global namespace - var m; - - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) - continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) - this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props); - }; - } - - return props; - }, - - getRuleProperties: function(context, rule, inheritMode) - { - var props = this.parseCSSProps(rule.style, inheritMode); - - // TODO: xxxpedro port to firebug: variable leaked into global namespace - //var line = domUtils.getRuleLine(rule); - var line; - var ruleId = rule.selectorText+"/"+line; - this.addOldProperties(context, ruleId, inheritMode, props); - sortProperties(props); - - return props; - }, - - addOldProperties: function(context, ruleId, inheritMode, props) - { - if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) ) - { - var moreProps = context.selectorMap[ruleId]; - for (var i = 0; i < moreProps.length; ++i) - { - var prop = moreProps[i]; - this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props); - } - } - }, - - addProperty: function(name, value, important, disabled, inheritMode, props) - { - name = name.toLowerCase(); - - if (inheritMode && !inheritedStyleNames[name]) - return; - - name = this.translateName(name, value); - if (name) - { - value = stripUnits(rgbToHex(value)); - important = important ? " !important" : ""; - - var prop = {name: name, value: value, important: important, disabled: disabled}; - props.push(prop); - } - }, - - translateName: function(name, value) - { - // Don't show these proprietary Mozilla properties - if ((value == "-moz-initial" - && (name == "-moz-background-clip" || name == "-moz-background-origin" - || name == "-moz-background-inline-policy")) - || (value == "physical" - && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source" - || name == "margin-right-ltr-source" || name == "margin-right-rtl-source")) - || (value == "physical" - && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source" - || name == "padding-right-ltr-source" || name == "padding-right-rtl-source"))) - return null; - - // Translate these back to the form the user probably expects - if (name == "margin-left-value") - return "margin-left"; - else if (name == "margin-right-value") - return "margin-right"; - else if (name == "margin-top-value") - return "margin-top"; - else if (name == "margin-bottom-value") - return "margin-bottom"; - else if (name == "padding-left-value") - return "padding-left"; - else if (name == "padding-right-value") - return "padding-right"; - else if (name == "padding-top-value") - return "padding-top"; - else if (name == "padding-bottom-value") - return "padding-bottom"; - // XXXjoe What about border! - else - return name; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - editElementStyle: function() - { - ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0]; - var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0]; - var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection); - if (!styleRuleBox) - { - var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []}; - if (!rulesBox) - { - // The element did not have any displayed styles. We need to create the whole tree and remove - // the no styles message - styleRuleBox = this.template.cascadedTag.replace({ - rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom") - }, this.panelNode); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0]; - styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0]; - } - else - styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox); - - ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0]; - styleRuleBox = $$(".insertInto", styleRuleBox)[0]; - } - - Firebug.Editor.insertRowForObject(styleRuleBox); - }, - - insertPropertyRow: function(row) - { - Firebug.Editor.insertRowForObject(row); - }, - - insertRule: function(row) - { - var location = getAncestorByClass(row, "cssRule"); - if (!location) - { - location = getChildByClass(this.panelNode, "cssSheet"); - Firebug.Editor.insertRowForObject(location); - } - else - { - Firebug.Editor.insertRow(location, "before"); - } - }, - - editPropertyRow: function(row) - { - var propValueBox = getChildByClass(row, "cssPropValue"); - Firebug.Editor.startEditing(propValueBox); - }, - - deletePropertyRow: function(row) - { - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - Firebug.CSSModule.removeProperty(rule, propName); - - // Remove the property from the selector map, if it was disabled - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) ) - { - var map = this.context.selectorMap[ruleId]; - for (var i = 0; i < map.length; ++i) - { - if (map[i].name == propName) - { - map.splice(i, 1); - break; - } - } - } - if (this.name == "stylesheet") - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]); - row.parentNode.removeChild(row); - - this.markChange(this.name == "stylesheet"); - }, - - disablePropertyRow: function(row) - { - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(row); - var propName = getChildByClass(row, "cssPropName")[textContent]; - - if (!this.context.selectorMap) - this.context.selectorMap = {}; - - // XXXjoe Generate unique key for elements too - var ruleId = Firebug.getRepNode(row).getAttribute("ruleId"); - if (!(this.context.selectorMap.hasOwnProperty(ruleId))) - this.context.selectorMap[ruleId] = []; - - var map = this.context.selectorMap[ruleId]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - if (hasClass(row, "disabledStyle")) - { - Firebug.CSSModule.removeProperty(rule, propName); - - map.push({"name": propName, "value": parsedValue.value, - "important": parsedValue.priority}); - } - else - { - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - - var index = findPropByName(map, propName); - map.splice(index, 1); - } - - this.markChange(this.name == "stylesheet"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onMouseDown: function(event) - { - //console.log("onMouseDown", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - // XXjoe Hack to only allow clicking on the checkbox - if (!isLeftClick(event) || offset > 20) - return; - - var target = event.target || event.srcElement; - if (hasClass(target, "textEditor")) - return; - - var row = getAncestorByClass(target, "cssProp"); - if (row && hasClass(row, "editGroup")) - { - this.disablePropertyRow(row); - cancelEvent(event); - } - }, - - onDoubleClick: function(event) - { - //console.log("onDoubleClick", event.target || event.srcElement, event); - - // xxxpedro adjusting coordinates because the panel isn't a window yet - var offset = event.clientX - this.panelNode.parentNode.offsetLeft; - - if (!isLeftClick(event) || offset <= 20) - return; - - var target = event.target || event.srcElement; - - //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20); - - // if the inline editor was clicked, don't insert a new rule - if (hasClass(target, "textEditorInner")) - return; - - var row = getAncestorByClass(target, "cssRule"); - if (row && !getAncestorByClass(target, "cssPropName") - && !getAncestorByClass(target, "cssPropValue")) - { - this.insertPropertyRow(row); - cancelEvent(event); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "stylesheet", - title: "CSS", - parentPanel: null, - searchable: true, - dependents: ["css", "stylesheet", "dom", "domSide", "layout"], - - options: - { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onMouseDown = bind(this.onMouseDown, this); - this.onDoubleClick = bind(this.onDoubleClick, this); - - if (this.name == "stylesheet") - { - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var selectNode = this.selectNode = createElement("select"); - - processAllStyleSheets(doc, function(doc, styleSheet) - { - var key = StyleSheetCache.key(styleSheet); - var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href); - var option = createElement("option", {value: key}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }); - - this.toolButtonsNode.appendChild(selectNode); - } - /**/ - }, - - onChangeSelect: function(event) - { - event = event || window.event; - var target = event.srcElement || event.currentTarget; - var key = target.value; - var styleSheet = StyleSheetCache.get(key); - - this.updateLocation(styleSheet); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - //if (!domUtils) - //{ - // try { - // domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils"); - // } catch (exc) { - // if (FBTrace.DBG_ERRORS) - // FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc); - // } - //} - - //TODO: xxxpedro - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - this.initializeNode(); - - if (this.name == "stylesheet") - { - var styleSheets = Firebug.browser.document.styleSheets; - - if (styleSheets.length > 0) - { - addEvent(this.selectNode, "change", this.onChangeSelect); - - this.updateLocation(styleSheets[0]); - } - } - - //Firebug.SourceBoxPanel.initialize.apply(this, arguments); - }, - - shutdown: function() - { - // must destroy the editor when we leave the panel to avoid problems (Issue 2981) - Firebug.Editor.stopEditing(); - - if (this.name == "stylesheet") - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - } - - this.destroyNode(); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - destroy: function(state) - { - //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop; - - //persistObjects(this, state); - - // xxxpedro we are stopping the editor in the shutdown method already - //Firebug.Editor.stopEditing(); - Firebug.Panel.destroy.apply(this, arguments); - }, - - initializeNode: function(oldPanelNode) - { - addEvent(this.panelNode, "mousedown", this.onMouseDown); - addEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']); - }, - - destroyNode: function() - { - removeEvent(this.panelNode, "mousedown", this.onMouseDown); - removeEvent(this.panelNode, "dblclick", this.onDoubleClick); - //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']); - }, - - ishow: function(state) - { - Firebug.Inspector.stopInspecting(true); - - this.showToolbarButtons("fbCSSButtons", true); - - if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel - { - restoreObjects(this, state); - - if (!this.location) - this.location = this.getDefaultLocation(); - - if (state && state.scrollTop) - this.panelNode.scrollTop = state.scrollTop; - } - }, - - ihide: function() - { - this.showToolbarButtons("fbCSSButtons", false); - - this.lastScrollTop = this.panelNode.scrollTop; - }, - - supportsObject: function(object) - { - if (object instanceof CSSStyleSheet) - return 1; - else if (object instanceof CSSStyleRule) - return 2; - else if (object instanceof CSSStyleDeclaration) - return 2; - else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href)) - return 2; - else - return 0; - }, - - updateLocation: function(styleSheet) - { - if (!styleSheet) - return; - if (styleSheet.editStyleSheet) - styleSheet = styleSheet.editStyleSheet.sheet; - - // if it is a restricted stylesheet, show the warning message and abort the update process - if (styleSheet.restricted) - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode); - - // TODO: xxxpedro remove when there the external resource problem is fixed - externalStyleSheetWarning.tag.append({ - object: "The stylesheet could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22" - }, this.panelNode); - - return; - } - - var rules = this.getStyleSheetRules(this.context, styleSheet); - - var result; - if (rules.length) - result = this.template.tag.replace({rules: rules}, this.panelNode); - else - result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode); - - // TODO: xxxpedro need to fix showToolbarButtons function - //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location)); - - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]); - }, - - updateSelection: function(object) - { - this.selection = null; - - if (object instanceof CSSStyleDeclaration) { - object = object.parentRule; - } - - if (object instanceof CSSStyleRule) - { - this.navigate(object.parentStyleSheet); - this.highlightRule(object); - } - else if (object instanceof CSSStyleSheet) - { - this.navigate(object); - } - else if (object instanceof SourceLink) - { - try - { - var sourceLink = object; - - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - clearNode(this.panelNode); // replace rendered stylesheets - this.showSourceFile(sourceFile); - - var lineNo = object.line; - if (lineNo) - this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context)); - } - else // XXXjjb we should not be taking this path - { - var stylesheet = getStyleSheetByHref(sourceLink.href, this.context); - if (stylesheet) - this.navigate(stylesheet); - else - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink); - } - } - } - catch(exc) { - if (FBTrace.DBG_CSS) - FBTrace.sysout("css.upDateSelection FAILS "+exc, exc); - } - } - }, - - updateOption: function(name, value) - { - if (name == "expandShorthandProps") - this.refresh(); - }, - - getLocationList: function() - { - var styleSheets = getAllStyleSheets(this.context); - return styleSheets; - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }, - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ]; - }, - - getContextMenuItems: function(style, target) - { - var items = []; - - if (this.infoTipType == "color") - { - items.push( - {label: "CopyColor", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) } - ); - } - else if (this.infoTipType == "image") - { - items.push( - {label: "CopyImageLocation", - command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }, - {label: "OpenImageInNewTab", - command: bindFixed(openNewTab, FBL, this.infoTipObject) } - ); - } - - ///if (this.selection instanceof Element) - if (isElement(this.selection)) - { - items.push( - //"-", - {label: "EditStyle", - command: bindFixed(this.editElementStyle, this) } - ); - } - else if (!isSystemStyleSheet(this.selection)) - { - items.push( - //"-", - {label: "NewRule", - command: bindFixed(this.insertRule, this, target) } - ); - } - - var cssRule = getAncestorByClass(target, "cssRule"); - if (cssRule && hasClass(cssRule, "cssEditableRule")) - { - items.push( - "-", - {label: "NewProp", - command: bindFixed(this.insertPropertyRow, this, target) } - ); - - var propRow = getAncestorByClass(target, "cssProp"); - if (propRow) - { - var propName = getChildByClass(propRow, "cssPropName")[textContent]; - var isDisabled = hasClass(propRow, "disabledStyle"); - - items.push( - {label: $STRF("EditProp", [propName]), nol10n: true, - command: bindFixed(this.editPropertyRow, this, propRow) }, - {label: $STRF("DeleteProp", [propName]), nol10n: true, - command: bindFixed(this.deletePropertyRow, this, propRow) }, - {label: $STRF("DisableProp", [propName]), nol10n: true, - type: "checkbox", checked: isDisabled, - command: bindFixed(this.disablePropertyRow, this, propRow) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bind(this.refresh, this) } - ); - - return items; - }, - - browseObject: function(object) - { - if (this.infoTipType == "image") - { - openNewTab(this.infoTipObject); - return true; - } - }, - - showInfoTip: function(infoTip, target, x, y) - { - var propValue = getAncestorByClass(target, "cssPropValue"); - if (propValue) - { - var offset = getClientOffset(propValue); - var offsetX = x-offset.x; - - var text = propValue[textContent]; - var charWidth = propValue.offsetWidth/text.length; - var charOffset = Math.floor(offsetX/charWidth); - - var cssValue = parseCSSValue(text, charOffset); - if (cssValue) - { - if (cssValue.value == this.infoTipValue) - return true; - - this.infoTipValue = cssValue.value; - - if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value))) - { - this.infoTipType = "color"; - this.infoTipObject = cssValue.value; - - return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value); - } - else if (cssValue.type == "url") - { - ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0); - var propNameNode = getElementByClass(target.parentNode, "cssPropName"); - if (propNameNode && isImageRule(propNameNode[textContent])) - { - var rule = Firebug.getRepObject(target); - var baseURL = this.getStylesheetURL(rule); - var relURL = parseURLValue(cssValue.value); - var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL); - var repeat = parseRepeatValue(text); - - this.infoTipType = "image"; - this.infoTipObject = absURL; - - return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat); - } - } - } - } - - delete this.infoTipType; - delete this.infoTipValue; - delete this.infoTipObject; - }, - - getEditor: function(target, value) - { - if (target == this.panelNode - || hasClass(target, "cssSelector") || hasClass(target, "cssRule") - || hasClass(target, "cssSheet")) - { - if (!this.ruleEditor) - this.ruleEditor = new CSSRuleEditor(this.document); - - return this.ruleEditor; - } - else - { - if (!this.editor) - this.editor = new CSSEditor(this.document); - - return this.editor; - } - }, - - getDefaultLocation: function() - { - try - { - var styleSheets = this.context.window.document.styleSheets; - if (styleSheets.length) - { - var sheet = styleSheets[0]; - return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet; - } - } - catch (exc) - { - if (FBTrace.DBG_LOCATIONS) - FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc); - } - }, - - getObjectDescription: function(styleSheet) - { - var url = getURLForStyleSheet(styleSheet); - var instance = getInstanceForStyleSheet(styleSheet); - - var baseDescription = splitURLBase(url); - if (instance) { - baseDescription.name = baseDescription.name + " #" + (instance + 1); - } - return baseDescription; - }, - - search: function(text, reverse) - { - var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse); - if (!curDoc && Firebug.searchGlobal) - { - return this.searchOtherDocs(text, reverse); - } - return curDoc; - }, - - searchOtherDocs: function(text, reverse) - { - var scanRE = Firebug.Search.getTestingRegex(text); - function scanDoc(styleSheet) { - // we don't care about reverse here as we are just looking for existence, - // if we do have a result we will handle the reverse logic on display - for (var i = 0; i < styleSheet.cssRules.length; i++) - { - if (scanRE.test(styleSheet.cssRules[i].cssText)) - { - return true; - } - } - } - - if (this.navigateToNextDocument(scanDoc, reverse)) - { - return this.searchCurrentDoc(true, text, reverse); - } - }, - - searchCurrentDoc: function(wrapSearch, text, reverse) - { - if (!text) - { - delete this.currentSearch; - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - { - row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text)); - } - else - { - if (this.editing) - { - this.currentSearch = new TextSearch(this.stylesheetEditor.box); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - scrollSelectionIntoView(this); - return true; - } - else - return false; - } - else - { - function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text)); - } - } - - if (row) - { - this.document.defaultView.getSelection().selectAllChildren(row); - scrollIntoCenterView(row, this.panelNode); - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]); - return false; - } - }, - - getSearchOptionsMenuItems: function() - { - return [ - Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"), - Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal") - ]; - } -}); -/**/ -// ************************************************************************************************ - -function CSSElementPanel() {} - -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype, -{ - template: domplate( - { - cascadedTag: - DIV({"class": "a11yCSSView", role : 'presentation'}, - DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') }, - FOR("rule", "$rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ), - DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')}, - FOR("section", "$inherited", - H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' }, - SPAN({"class": "cssInheritLabel"}, "$inheritLabel"), - TAG(FirebugReps.Element.shortTag, {object: "$section.element"}) - ), - DIV({role : 'group'}, - FOR("rule", "$section.rules", - TAG("$ruleTag", {rule: "$rule"}) - ) - ) - ) - ) - ), - - ruleTag: - isIE ? - // IE needs the sourceLink first, otherwise it will be rendered outside the panel - DIV({"class": "cssElementRuleContainer"}, - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}), - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}) - ) - : - // other browsers need the sourceLink last, otherwise it will cause an extra space - // before the rule representation - DIV({"class": "cssElementRuleContainer"}, - TAG(CSSStyleRuleTag.tag, {rule: "$rule"}), - TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateCascadeView: function(element) - { - //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]); - var rules = [], sections = [], usedProps = {}; - this.getInheritedRules(element, sections, usedProps); - this.getElementRules(element, rules, usedProps); - - if (rules.length || sections.length) - { - var inheritLabel = "Inherited from"; // $STR("InheritedFrom"); - var result = this.template.cascadedTag.replace({rules: rules, inherited: sections, - inheritLabel: inheritLabel}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - else - { - var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - } - - // TODO: xxxpedro remove when there the external resource problem is fixed - if (externalStyleSheetURLs.length > 0) - externalStyleSheetWarning.tag.append({ - object: "The results here may be inaccurate because some " + - "stylesheets could not be loaded due to access restrictions. ", - link: "more...", - href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22" - }, this.panelNode); - }, - - getStylesheetURL: function(rule) - { - // if the parentStyleSheet.href is null, CSS std says its inline style. - // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location - if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href) - return rule.parentStyleSheet.href; - else - return this.selection.ownerDocument.location.href; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getInheritedRules: function(element, sections, usedProps) - { - var parent = element.parentNode; - if (parent && parent.nodeType == 1) - { - this.getInheritedRules(parent, sections, usedProps); - - var rules = []; - this.getElementRules(parent, rules, usedProps, true); - - if (rules.length) - sections.splice(0, 0, {element: parent, rules: rules}); - } - }, - - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - - // TODO: xxxpedro remove document specificity issue - //var eid = ElementCache(element); - //inspectedRules = ElementCSSRulesMap[eid]; - - inspectedRules = getElementCSSRules(element); - - if (inspectedRules) - { - for (var i = 0, length=inspectedRules.length; i < length; ++i) - { - var ruleId = inspectedRules[i]; - var ruleData = CSSRuleMap[ruleId]; - var rule = ruleData.rule; - - var ssid = ruleData.styleSheetId; - var parentStyleSheet = StyleSheetCache.get(ssid); - - var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href; // Null means inline - - var instance = null; - //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = false; - //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - // - //var line = domUtils.getRuleLine(rule); - var line; - - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: ruleData.selector, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /* - getElementRules: function(element, rules, usedProps, inheritMode) - { - var inspectedRules, displayedRules = {}; - try - { - inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null; - } catch (exc) {} - - if (inspectedRules) - { - for (var i = 0; i < inspectedRules.Count(); ++i) - { - var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule); - - var href = rule.parentStyleSheet.href; // Null means inline - - var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument); - - var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet); - if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules - continue; - if (!href) - href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452 - - var props = this.getRuleProperties(this.context, rule, inheritMode); - if (inheritMode && !props.length) - continue; - - var line = domUtils.getRuleLine(rule); - var ruleId = rule.selectorText+"/"+line; - var sourceLink = new SourceLink(href, line, "css", rule, instance); - - this.markOverridenProps(props, usedProps, inheritMode); - - rules.splice(0, 0, {rule: rule, id: ruleId, - selector: rule.selectorText, sourceLink: sourceLink, - props: props, inherited: inheritMode, - isSystemSheet: isSystemSheet}); - } - } - - if (element.style) - this.getStyleProperties(element, rules, usedProps, inheritMode); - - if (FBTrace.DBG_CSS) - FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules); - }, - /**/ - markOverridenProps: function(props, usedProps, inheritMode) - { - for (var i = 0; i < props.length; ++i) - { - var prop = props[i]; - if ( usedProps.hasOwnProperty(prop.name) ) - { - var deadProps = usedProps[prop.name]; // all previous occurrences of this property - for (var j = 0; j < deadProps.length; ++j) - { - var deadProp = deadProps[j]; - if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important) - prop.overridden = true; // new occurrence overridden - else if (!prop.disabled) - deadProp.overridden = true; // previous occurrences overridden - } - } - else - usedProps[prop.name] = []; - - prop.wasInherited = inheritMode ? true : false; - usedProps[prop.name].push(prop); // all occurrences of a property seen so far, by name - } - }, - - getStyleProperties: function(element, rules, usedProps, inheritMode) - { - var props = this.parseCSSProps(element.style, inheritMode); - this.addOldProperties(this.context, getElementXPath(element), inheritMode, props); - - sortProperties(props); - this.markOverridenProps(props, usedProps, inheritMode); - - if (props.length) - rules.splice(0, 0, - {rule: element, id: getElementXPath(element), - selector: "element.style", props: props, inherited: inheritMode}); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "css", - title: "Style", - parentPanel: "HTML", - order: 0, - - initialize: function() - { - this.context = Firebug.chrome; // TODO: xxxpedro css2 - this.document = Firebug.chrome.document; // TODO: xxxpedro css2 - - Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - - //this.updateCascadeView(document.getElementsByTagName("h1")[0]); - //this.updateCascadeView(document.getElementById("build")); - - /* - this.onStateChange = bindFixed(this.contentStateCheck, this); - this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER); - this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE); - /**/ - }, - - ishow: function(state) - { - }, - - watchWindow: function(win) - { - if (domUtils) - { - // Normally these would not be required, but in order to update after the state is set - // using the options menu we need to monitor these global events as well - var doc = win.document; - ///addEvent(doc, "mouseover", this.onHoverChange); - ///addEvent(doc, "mousedown", this.onActiveChange); - } - }, - unwatchWindow: function(win) - { - var doc = win.document; - ///removeEvent(doc, "mouseover", this.onHoverChange); - ///removeEvent(doc, "mousedown", this.onActiveChange); - - if (isAncestor(this.stateChangeEl, doc)) - { - this.removeStateChangeHandlers(); - } - }, - - supportsObject: function(object) - { - return object instanceof Element ? 1 : 0; - }, - - updateView: function(element) - { - this.updateCascadeView(element); - if (domUtils) - { - this.contentState = safeGetContentState(element); - this.addStateChangeHandlers(element); - } - }, - - updateSelection: function(element) - { - if ( !instanceOf(element , "Element") ) // html supports SourceLink - return; - - if (sothinkInstalled) - { - FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode); - return; - } - - /* - if (!domUtils) - { - FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode); - return; - } - /**/ - - if (!element) - return; - - this.updateView(element); - }, - - updateOption: function(name, value) - { - if (name == "showUserAgentCSS" || name == "expandShorthandProps") - this.refresh(); - }, - - getOptionsMenuItems: function() - { - var ret = [ - {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS, - command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") }, - {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps, - command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") } - ]; - if (domUtils && this.selection) - { - var state = safeGetContentState(this.selection); - - ret.push("-"); - ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE, - command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)}); - ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER, - command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)}); - } - return ret; - }, - - updateContentState: function(state, remove) - { - domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state); - this.refresh(); - }, - - addStateChangeHandlers: function(el) - { - this.removeStateChangeHandlers(); - - /* - addEvent(el, "focus", this.onStateChange); - addEvent(el, "blur", this.onStateChange); - addEvent(el, "mouseup", this.onStateChange); - addEvent(el, "mousedown", this.onStateChange); - addEvent(el, "mouseover", this.onStateChange); - addEvent(el, "mouseout", this.onStateChange); - /**/ - - this.stateChangeEl = el; - }, - - removeStateChangeHandlers: function() - { - var sel = this.stateChangeEl; - if (sel) - { - /* - removeEvent(sel, "focus", this.onStateChange); - removeEvent(sel, "blur", this.onStateChange); - removeEvent(sel, "mouseup", this.onStateChange); - removeEvent(sel, "mousedown", this.onStateChange); - removeEvent(sel, "mouseover", this.onStateChange); - removeEvent(sel, "mouseout", this.onStateChange); - /**/ - } - }, - - contentStateCheck: function(state) - { - if (!state || this.contentState & state) - { - var timeoutRunner = bindFixed(function() - { - var newState = safeGetContentState(this.selection); - if (newState != this.contentState) - { - this.context.invalidatePanels(this.name); - } - }, this); - - // Delay exec until after the event has processed and the state has been updated - setTimeout(timeoutRunner, 0); - } - } -}); - -function safeGetContentState(selection) -{ - try - { - return domUtils.getContentState(selection); - } - catch (e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("css.safeGetContentState; EXCEPTION", e); - } -} - -// ************************************************************************************************ - -function CSSComputedElementPanel() {} - -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype, -{ - template: domplate( - { - computedTag: - DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')}, - FOR("group", "$groups", - H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"}, - SPAN({"class": "cssInheritLabel"}, "$group.title") - ), - TABLE({width: "100%", role : 'group'}, - TBODY({role : 'presentation'}, - FOR("prop", "$group.props", - TR({"class": 'focusRow computedStyleRow', role : 'listitem'}, - TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"), - TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value") - ) - ) - ) - ) - ) - ) - }), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateComputedView: function(element) - { - var win = isIE ? - element.ownerDocument.parentWindow : - element.ownerDocument.defaultView; - - var style = isIE ? - element.currentStyle : - win.getComputedStyle(element, ""); - - var groups = []; - - for (var groupName in styleGroups) - { - // TODO: xxxpedro i18n $STR - //var title = $STR("StyleGroup-" + groupName); - var title = styleGroupTitles[groupName]; - var group = {title: title, props: []}; - groups.push(group); - - var props = styleGroups[groupName]; - for (var i = 0; i < props.length; ++i) - { - var propName = props[i]; - var propValue = style.getPropertyValue ? - style.getPropertyValue(propName) : - ""+style[toCamelCase(propName)]; - - if (propValue === undefined || propValue === null) - continue; - - propValue = stripUnits(rgbToHex(propValue)); - if (propValue) - group.props.push({name: propName, value: propValue}); - } - } - - var result = this.template.computedTag.replace({groups: groups}, this.panelNode); - //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "computed", - title: "Computed", - parentPanel: "HTML", - order: 1, - - updateView: function(element) - { - this.updateComputedView(element); - }, - - getOptionsMenuItems: function() - { - return [ - {label: "Refresh", command: bind(this.refresh, this) } - ]; - } -}); - -// ************************************************************************************************ -// CSSEditor - -function CSSEditor(doc) -{ - this.initializeInline(doc); -} - -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var rule = Firebug.getRepObject(target); - var emptyProp = - { - // TODO: xxxpedro - uses charCode(255) to force the element being rendered, - // allowing webkit to get the correct position of the property name "span", - // when inserting a new CSS rule? - name: "", - value: "", - important: "" - }; - - if (insertWhere == "before") - return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target); - else - return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - // We need to check the value first in order to avoid a problem in IE8 - // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite - if (!value) return; - - target.innerHTML = escapeForCss(value); - - var row = getAncestorByClass(target, "cssProp"); - if (hasClass(row, "disabledStyle")) - toggleClass(row, "disabledStyle"); - - var rule = Firebug.getRepObject(target); - - if (hasClass(target, "cssPropName")) - { - if (value && previousValue != value) // name of property has changed. - { - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - var parsedValue = parsePriority(propValue); - - if (propValue && propValue != "undefined") { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n"); - if (previousValue) - Firebug.CSSModule.removeProperty(rule, previousValue); - Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority); - } - } - else if (!value) // name of the property has been deleted, so remove the property. - Firebug.CSSModule.removeProperty(rule, previousValue); - } - else if (getAncestorByClass(target, "cssPropValue")) - { - var propName = getChildByClass(row, "cssPropName")[textContent]; - var propValue = getChildByClass(row, "cssPropValue")[textContent]; - - if (FBTrace.DBG_CSS) - { - FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n"); - // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style); - } - - if (value && value != "null") - { - var parsedValue = parsePriority(value); - Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority); - } - else if (previousValue && previousValue != "null") - Firebug.CSSModule.removeProperty(rule, propName); - } - - this.panel.markChange(this.panel.name == "stylesheet"); - }, - - advanceToNext: function(target, charCode) - { - if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName")) - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - if (hasClass(this.target, "cssPropName")) - return {start: 0, end: value.length-1}; - else - return parseCSSValue(value, offset); - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - if (hasClass(this.target, "cssPropName")) - { - return getCSSPropertyNames(); - } - else - { - var row = getAncestorByClass(this.target, "cssProp"); - var propName = getChildByClass(row, "cssPropName")[textContent]; - return getCSSKeywordsByProperty(propName); - } - } -}); - -//************************************************************************************************ -//CSSRuleEditor - -function CSSRuleEditor(doc) -{ - this.initializeInline(doc); - this.completeAsYouType = false; -} -CSSRuleEditor.uniquifier = 0; -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype, -{ - insertNewRow: function(target, insertWhere) - { - var emptyRule = { - selector: "", - id: "", - props: [], - isSelectorEditable: true - }; - - if (insertWhere == "before") - return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target); - else - return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target); - }, - - saveEdit: function(target, value, previousValue) - { - if (FBTrace.DBG_CSS) - FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "' '" + previousValue + "'", target); - - target.innerHTML = escapeForCss(value); - - if (value === previousValue) return; - - var row = getAncestorByClass(target, "cssRule"); - var styleSheet = this.panel.location; - styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet; - - var cssRules = styleSheet.cssRules; - var rule = Firebug.getRepObject(target), oldRule = rule; - var ruleIndex = cssRules.length; - if (rule || Firebug.getRepObject(row.nextSibling)) - { - var searchRule = rule || Firebug.getRepObject(row.nextSibling); - for (ruleIndex=0; ruleIndex b.name ? 1 : -1; - }); -} - -function getTopmostRuleLine(panelNode) -{ - for (var child = panelNode.firstChild; child; child = child.nextSibling) - { - if (child.offsetTop+child.offsetHeight > panelNode.scrollTop) - { - var rule = child.repObject; - if (rule) - return { - line: domUtils.getRuleLine(rule), - offset: panelNode.scrollTop-child.offsetTop - }; - } - } - return 0; -} - -function getStyleSheetCSS(sheet, context) -{ - if (sheet.ownerNode instanceof HTMLStyleElement) - return sheet.ownerNode.innerHTML; - else - return context.sourceCache.load(sheet.href).join(""); -} - -function getStyleSheetOwnerNode(sheet) { - for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet); - - return sheet.ownerNode; -} - -function scrollSelectionIntoView(panel) -{ - var selCon = getSelectionController(panel); - selCon.scrollSelectionIntoView( - nsISelectionController.SELECTION_NORMAL, - nsISelectionController.SELECTION_FOCUS_REGION, true); -} - -function getSelectionController(panel) -{ - var browser = Firebug.chrome.getPanelBrowser(panel); - return browser.docShell.QueryInterface(nsIInterfaceRequestor) - .getInterface(nsISelectionDisplay) - .QueryInterface(nsISelectionController); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.CSSModule); -Firebug.registerPanel(Firebug.CSSStyleSheetPanel); -Firebug.registerPanel(CSSElementPanel); -Firebug.registerPanel(CSSComputedElementPanel); - -// ************************************************************************************************ - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/dom.js b/branches/firebug1.5/content/firebug1.4/dom.js deleted file mode 100644 index 9c4015d2..00000000 --- a/branches/firebug1.5/content/firebug1.4/dom.js +++ /dev/null @@ -1,1687 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var ElementCache = Firebug.Lite.Cache.Element; - -var insertSliceSize = 18; -var insertInterval = 40; - -var ignoreVars = -{ - "__firebug__": 1, - "eval": 1, - - // We are forced to ignore Java-related variables, because - // trying to access them causes browser freeze - "java": 1, - "sun": 1, - "Packages": 1, - "JavaArray": 1, - "JavaMember": 1, - "JavaObject": 1, - "JavaClass": 1, - "JavaPackage": 1, - "_firebug": 1, - "_FirebugConsole": 1, - "_FirebugCommandLine": 1 -}; - -if (Firebug.ignoreFirebugElements) - ignoreVars[Firebug.Lite.Cache.ID] = 1; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var memberPanelRep = - isIE6 ? - {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"} - : - {"class": "memberLabel $member.type\\Label"}; - -var RowTag = - TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation', - level: "$member.level"}, - TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'}, - A(memberPanelRep, - SPAN({}, "$member.name") - ) - ), - TD({"class": "memberValueCell", role : 'presentation'}, - TAG("$member.tag", {object: "$member.value"}) - ) - ); - -var WatchRowTag = - TR({"class": "watchNewRow", level: 0}, - TD({"class": "watchEditCell", colspan: 2}, - DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0', - 'aria-label' : $STR('press enter to add new watch expression')}, - $STR("NewWatch") - ) - ) - ); - -var SizerRow = - TR({role : 'presentation'}, - TD({width: "30%"}), - TD({width: "70%"}) - ); - -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable"; -var DirTablePlate = domplate(Firebug.Rep, -{ - tag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"}, - TBODY({role: 'presentation'}, - SizerRow, - FOR("member", "$object|memberIterator", RowTag) - ) - ), - - watchTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow, - WatchRowTag - ) - ), - - tableTag: - TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, - _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'}, - TBODY({role : 'presentation'}, - SizerRow - ) - ), - - rowTag: - FOR("member", "$members", RowTag), - - memberIterator: function(object, level) - { - return getMembers(object, level); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - if (!isLeftClick(event)) - return; - - var target = event.target || event.srcElement; - - var row = getAncestorByClass(target, "memberRow"); - var label = getAncestorByClass(target, "memberLabel"); - if (label && hasClass(row, "hasChildren")) - { - var row = label.parentNode.parentNode; - this.toggleRow(row); - } - else - { - var object = Firebug.getRepObject(target); - if (typeof(object) == "function") - { - Firebug.chrome.select(object, "script"); - cancelEvent(event); - } - else if (event.detail == 2 && !object) - { - var panel = row.parentNode.parentNode.domPanel; - if (panel) - { - var rowValue = panel.getRowPropertyValue(row); - if (typeof(rowValue) == "boolean") - panel.setPropertyValue(row, !rowValue); - else - panel.editProperty(row); - - cancelEvent(event); - } - } - } - - return false; - }, - - toggleRow: function(row) - { - var level = parseInt(row.getAttribute("level")); - var toggles = row.parentNode.parentNode.toggles; - - if (hasClass(row, "opened")) - { - removeClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Remove the path from the toggle tree - for (var i = 0; i < path.length; ++i) - { - if (i == path.length-1) - delete toggles[path[i]]; - else - toggles = toggles[path[i]]; - } - } - - var rowTag = this.rowTag; - var tbody = row.parentNode; - - setTimeout(function() - { - for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling) - { - if (parseInt(firstRow.getAttribute("level")) <= level) - break; - - tbody.removeChild(firstRow); - } - }, row.insertTimeout ? row.insertTimeout : 0); - } - else - { - setClass(row, "opened"); - - if (toggles) - { - var path = getPath(row); - - // Mark the path in the toggle tree - for (var i = 0; i < path.length; ++i) - { - var name = path[i]; - if (toggles.hasOwnProperty(name)) - toggles = toggles[name]; - else - toggles = toggles[name] = {}; - } - } - - var value = row.lastChild.firstChild.repObject; - var members = getMembers(value, level+1); - - var rowTag = this.rowTag; - var lastRow = row; - - var delay = 0; - //var setSize = members.length; - //var rowCount = 1; - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - setTimeout(function() - { - if (lastRow.parentNode) - { - var result = rowTag.insertRows({members: slice}, lastRow); - lastRow = result[1]; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]); - //rowCount += insertSliceSize; - } - if (isLast) - row.removeAttribute("insertTimeout"); - }, delay); - } - - delay += insertInterval; - } - - row.insertTimeout = delay; - } - } -}); - - - -// ************************************************************************************************ - -Firebug.DOMBasePanel = function() {} - -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel, -{ - tag: DirTablePlate.tableTag, - - getRealObject: function(object) - { - // TODO: Move this to some global location - // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc. - // TODO: We might be able to make this check more authoritative with QueryInterface. - if (!object) return object; - if (object.wrappedJSObject) return object.wrappedJSObject; - return object; - }, - - rebuild: function(update, scrollTop) - { - //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]); - var members = getMembers(this.selection); - expandMembers(members, this.toggles, 0, 0); - - this.showMembers(members, update, scrollTop); - - //TODO: xxxpedro statusbar - if (!this.parentPanel) - updateStatusBar(this); - }, - - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - while (members.length) - { - with({slice: members.splice(0, insertSliceSize), isLast: !members.length}) - { - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!tbody.lastChild) return; - - result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //rowCount += insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop) - panelNode.scrollTop = priorScrollTop; - - - // enable to measure rendering performance - //if (isLast) alert(new Date().getTime() - renderStart + "ms"); - - - }, delay)); - - delay += insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - - /* - // new - showMembers: function(members, update, scrollTop) - { - // If we are still in the midst of inserting rows, cancel all pending - // insertions here - this is a big speedup when stepping in the debugger - if (this.timeouts) - { - for (var i = 0; i < this.timeouts.length; ++i) - this.context.clearTimeout(this.timeouts[i]); - delete this.timeouts; - } - - if (!members.length) - return this.showEmptyMembers(); - - var panelNode = this.panelNode; - var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop; - - // If we are asked to "update" the current view, then build the new table - // offscreen and swap it in when it's done - var offscreen = update && panelNode.firstChild; - var dest = offscreen ? panelNode.ownerDocument : panelNode; - - var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest); - var tbody = table.lastChild; - var rowTag = DirTablePlate.rowTag; - - // Insert the first slice immediately - //var slice = members.splice(0, insertSliceSize); - //var result = rowTag.insertRows({members: slice}, tbody.lastChild); - - //var setSize = members.length; - //var rowCount = 1; - - var panel = this; - var result; - - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - var timeouts = []; - - var delay = 0; - var _insertSliceSize = insertSliceSize; - var _insertInterval = insertInterval; - - // enable to measure rendering performance - var renderStart = new Date().getTime(); - var lastSkip = renderStart, now; - - while (members.length) - { - with({slice: members.splice(0, _insertSliceSize), isLast: !members.length}) - { - var _tbody = tbody; - var _rowTag = rowTag; - var _panelNode = panelNode; - var _priorScrollTop = priorScrollTop; - - timeouts.push(this.context.setTimeout(function() - { - // TODO: xxxpedro can this be a timing error related to the - // "iteration number" approach insted of "duration time"? - // avoid error in IE8 - if (!_tbody.lastChild) return; - - result = _rowTag.insertRows({members: slice}, _tbody.lastChild); - - //rowCount += _insertSliceSize; - //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]); - - if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop) - _panelNode.scrollTop = _priorScrollTop; - - - // enable to measure rendering performance - //alert("gap: " + (new Date().getTime() - lastSkip)); - //lastSkip = new Date().getTime(); - - //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms"); - - }, delay)); - - delay += _insertInterval; - } - } - - if (offscreen) - { - timeouts.push(this.context.setTimeout(function() - { - if (panelNode.firstChild) - panelNode.replaceChild(table, panelNode.firstChild); - else - panelNode.appendChild(table); - - // Scroll back to where we were before - panelNode.scrollTop = priorScrollTop; - }, delay)); - } - else - { - timeouts.push(this.context.setTimeout(function() - { - panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop; - }, delay)); - } - this.timeouts = timeouts; - }, - /**/ - - showEmptyMembers: function() - { - FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode); - }, - - findPathObject: function(object) - { - var pathIndex = -1; - for (var i = 0; i < this.objectPath.length; ++i) - { - // IE needs === instead of == or otherwise some objects will - // be considered equal to different objects, returning the - // wrong index of the objectPath array - if (this.getPathObject(i) === object) - return i; - } - - return -1; - }, - - getPathObject: function(index) - { - var object = this.objectPath[index]; - - if (object instanceof Property) - return object.getObject(); - else - return object; - }, - - getRowObject: function(row) - { - var object = getRowOwnerObject(row); - return object ? object : this.selection; - }, - - getRowPropertyValue: function(row) - { - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object) - { - var propName = getRowName(row); - - if (object instanceof jsdIStackFrame) - return Firebug.Debugger.evaluate(propName, this.context); - else - return object[propName]; - } - }, - /* - copyProperty: function(row) - { - var value = this.getRowPropertyValue(row); - copyToClipboard(value); - }, - - editProperty: function(row, editValue) - { - if (hasClass(row, "watchNewRow")) - { - if (this.context.stopped) - Firebug.Editor.startEditing(row, ""); - else if (Firebug.Console.isAlwaysEnabled()) // not stopped in debugger, need command line - { - if (Firebug.CommandLine.onCommandLineFocus()) - Firebug.Editor.startEditing(row, ""); - else - row.innerHTML = $STR("warning.Command line blocked?"); - } - else - row.innerHTML = $STR("warning.Console must be enabled"); - } - else if (hasClass(row, "watchRow")) - Firebug.Editor.startEditing(row, getRowName(row)); - else - { - var object = this.getRowObject(row); - this.context.thisValue = object; - - if (!editValue) - { - var propValue = this.getRowPropertyValue(row); - - var type = typeof(propValue); - if (type == "undefined" || type == "number" || type == "boolean") - editValue = propValue; - else if (type == "string") - editValue = "\"" + escapeJS(propValue) + "\""; - else if (propValue == null) - editValue = "null"; - else if (object instanceof Window || object instanceof jsdIStackFrame) - editValue = getRowName(row); - else - editValue = "this." + getRowName(row); - } - - - Firebug.Editor.startEditing(row, editValue); - } - }, - - deleteProperty: function(row) - { - if (hasClass(row, "watchRow")) - this.deleteWatch(row); - else - { - var object = getRowOwnerObject(row); - if (!object) - object = this.selection; - object = this.getRealObject(object); - - if (object) - { - var name = getRowName(row); - try - { - delete object[name]; - } - catch (exc) - { - return; - } - - this.rebuild(true); - this.markChange(); - } - } - }, - - setPropertyValue: function(row, value) // value must be string - { - if(FBTrace.DBG_DOM) - { - FBTrace.sysout("row: "+row); - FBTrace.sysout("value: "+value+" type "+typeof(value), value); - } - - var name = getRowName(row); - if (name == "this") - return; - - var object = this.getRowObject(row); - object = this.getRealObject(object); - if (object && !(object instanceof jsdIStackFrame)) - { - // unwrappedJSObject.property = unwrappedJSObject - Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(), - function success(result, context) - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result); - object[name] = result; - }, - function failed(exc, context) - { - try - { - if (FBTrace.DBG_DOM) - FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc); - // If the value doesn't parse, then just store it as a string. Some users will - // not realize they're supposed to enter a JavaScript expression and just type - // literal text - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - ); - } - else if (this.context.stopped) - { - try - { - Firebug.CommandLine.evaluate(name+"="+value, this.context); - } - catch (exc) - { - try - { - // See catch block above... - object[name] = String(value); // unwrappedJSobject.property = string - } - catch (exc) - { - return; - } - } - } - - this.rebuild(true); - this.markChange(); - }, - - highlightRow: function(row) - { - if (this.highlightedRow) - cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context); - - this.highlightedRow = row; - - if (row) - setClassTimed(row, "jumpHighlight", this.context); - },/**/ - - onMouseMove: function(event) - { - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink-element"); - object = object ? object.repObject : null; - - if(object && instanceOf(object, "Element") && object.nodeType == 1) - { - if(object != lastHighlightedObject) - { - Firebug.Inspector.drawBoxModel(object); - object = lastHighlightedObject; - } - } - else - Firebug.Inspector.hideBoxModel(); - - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - create: function() - { - // TODO: xxxpedro - this.context = Firebug.browser; - - this.objectPath = []; - this.propertyPath = []; - this.viewPath = []; - this.pathIndex = -1; - this.toggles = {}; - - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.panelNode, "mousemove", this.onMouseMove); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "mousemove", this.onMouseMove); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - /* - destroy: function(state) - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - - if (this.pathIndex) - state.pathIndex = this.pathIndex; - if (this.viewPath) - state.viewPath = this.viewPath; - if (this.propertyPath) - state.propertyPath = this.propertyPath; - - if (this.propertyPath.length > 0 && !this.propertyPath[1]) - state.firstSelection = persistObject(this.getPathObject(1), this.context); - - Firebug.Panel.destroy.apply(this, arguments); - }, - /**/ - - ishow: function(state) - { - if (this.context.loaded && !this.selection) - { - if (!state) - { - this.select(null); - return; - } - if (state.viewPath) - this.viewPath = state.viewPath; - if (state.propertyPath) - this.propertyPath = state.propertyPath; - - var defaultObject = this.getDefaultSelection(this.context); - var selectObject = defaultObject; - - if (state.firstSelection) - { - var restored = state.firstSelection(this.context); - if (restored) - { - selectObject = restored; - this.objectPath = [defaultObject, restored]; - } - else - this.objectPath = [defaultObject]; - } - else - this.objectPath = [defaultObject]; - - if (this.propertyPath.length > 1) - { - for (var i = 1; i < this.propertyPath.length; ++i) - { - var name = this.propertyPath[i]; - if (!name) - continue; - - var object = selectObject; - try - { - selectObject = object[name]; - } - catch (exc) - { - selectObject = null; - } - - if (selectObject) - { - this.objectPath.push(new Property(object, name)); - } - else - { - // If we can't access a property, just stop - this.viewPath.splice(i); - this.propertyPath.splice(i); - this.objectPath.splice(i); - selectObject = this.getPathObject(this.objectPath.length-1); - break; - } - } - } - - var selection = state.pathIndex <= this.objectPath.length-1 - ? this.getPathObject(state.pathIndex) - : this.getPathObject(this.objectPath.length-1); - - this.select(selection); - } - }, - /* - hide: function() - { - var view = this.viewPath[this.pathIndex]; - if (view && this.panelNode.scrollTop) - view.scrollTop = this.panelNode.scrollTop; - }, - /**/ - - supportsObject: function(object) - { - if (object == null) - return 1000; - - if (typeof(object) == "undefined") - return 1000; - else if (object instanceof SourceLink) - return 0; - else - return 1; // just agree to support everything but not agressively. - }, - - refresh: function() - { - this.rebuild(true); - }, - - updateSelection: function(object) - { - var previousIndex = this.pathIndex; - var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex]; - - var newPath = this.pathToAppend; - delete this.pathToAppend; - - var pathIndex = this.findPathObject(object); - if (newPath || pathIndex == -1) - { - this.toggles = {}; - - if (newPath) - { - // Remove everything after the point where we are inserting, so we - // essentially replace it with the new path - if (previousView) - { - if (this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - var start = previousIndex + 1, - // Opera needs the length argument in splice(), otherwise - // it will consider that only one element should be removed - length = this.objectPath.length - start; - - this.objectPath.splice(start, length); - this.propertyPath.splice(start, length); - this.viewPath.splice(start, length); - } - - var value = this.getPathObject(previousIndex); - if (!value) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n"); - return; - } - - for (var i = 0, length = newPath.length; i < length; ++i) - { - var name = newPath[i]; - var object = value; - try - { - value = value[name]; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n"); - return; - } - - ++this.pathIndex; - this.objectPath.push(new Property(object, name)); - this.propertyPath.push(name); - this.viewPath.push({toggles: this.toggles, scrollTop: 0}); - } - } - else - { - this.toggles = {}; - - var win = Firebug.browser.window; - //var win = this.context.getGlobalScope(); - if (object === win) - { - this.pathIndex = 0; - this.objectPath = [win]; - this.propertyPath = [null]; - this.viewPath = [{toggles: this.toggles, scrollTop: 0}]; - } - else - { - this.pathIndex = 1; - this.objectPath = [win, object]; - this.propertyPath = [null, null]; - this.viewPath = [ - {toggles: {}, scrollTop: 0}, - {toggles: this.toggles, scrollTop: 0} - ]; - } - } - - this.panelNode.scrollTop = 0; - this.rebuild(); - } - else - { - this.pathIndex = pathIndex; - - var view = this.viewPath[pathIndex]; - this.toggles = view.toggles; - - // Persist the current scroll location - if (previousView && this.panelNode.scrollTop) - previousView.scrollTop = this.panelNode.scrollTop; - - this.rebuild(false, view.scrollTop); - } - }, - - getObjectPath: function(object) - { - return this.objectPath; - }, - - getDefaultSelection: function() - { - return Firebug.browser.window; - //return this.context.getGlobalScope(); - }/*, - - updateOption: function(name, value) - { - const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1, - showDOMFuncs: 1, showDOMConstants: 1}; - if ( optionMap.hasOwnProperty(name) ) - this.rebuild(true); - }, - - getOptionsMenuItems: function() - { - return [ - optionMenu("ShowUserProps", "showUserProps"), - optionMenu("ShowUserFuncs", "showUserFuncs"), - optionMenu("ShowDOMProps", "showDOMProps"), - optionMenu("ShowDOMFuncs", "showDOMFuncs"), - optionMenu("ShowDOMConstants", "showDOMConstants"), - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ]; - }, - - getContextMenuItems: function(object, target) - { - var row = getAncestorByClass(target, "memberRow"); - - var items = []; - - if (row) - { - var rowName = getRowName(row); - var rowObject = this.getRowObject(row); - var rowValue = this.getRowPropertyValue(row); - - var isWatch = hasClass(row, "watchRow"); - var isStackFrame = rowObject instanceof jsdIStackFrame; - - if (typeof(rowValue) == "string" || typeof(rowValue) == "number") - { - // Functions already have a copy item in their context menu - items.push( - "-", - {label: "CopyValue", - command: bindFixed(this.copyProperty, this, row) } - ); - } - - items.push( - "-", - {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"), - command: bindFixed(this.editProperty, this, row) } - ); - - if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName))) - { - items.push( - {label: isWatch ? "DeleteWatch" : "DeleteProperty", - command: bindFixed(this.deleteProperty, this, row) } - ); - } - } - - items.push( - "-", - {label: "Refresh", command: bindFixed(this.rebuild, this, true) } - ); - - return items; - }, - - getEditor: function(target, value) - { - if (!this.editor) - this.editor = new DOMEditor(this.document); - - return this.editor; - }/**/ -}); - -// ************************************************************************************************ - -// TODO: xxxpedro statusbar -var updateStatusBar = function(panel) -{ - var path = panel.propertyPath; - var index = panel.pathIndex; - - var r = []; - - for (var i=0, l=path.length; i'); - r.push(i==0 ? "window" : path[i] || "Object"); - r.push(''); - - if(i < l-1) - r.push('>'); - } - panel.statusBarNode.innerHTML = r.join(""); -}; - - -var DOMMainPanel = Firebug.DOMPanel = function () {}; - -Firebug.DOMPanel.DirTable = DirTablePlate; - -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - onClickStatusBar: function(event) - { - var target = event.srcElement || event.target; - var element = getAncestorByClass(target, "fbHover"); - - if(element) - { - var pathIndex = element.getAttribute("pathIndex"); - - if(pathIndex) - { - this.select(this.getPathObject(pathIndex)); - } - } - }, - - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - this.select(target.repObject, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOM", - title: "DOM", - searchable: true, - statusSeparator: ">", - - options: { - hasToolButtons: true, - hasStatusBar: true - }, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - - //TODO: xxxpedro - this.onClickStatusBar = bind(this.onClickStatusBar, this); - - this.panelNode.style.padding = "0 1px"; - }, - - initialize: function(oldPanelNode) - { - //this.panelNode.addEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']); - - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro dom - this.ishow(); - - //TODO: xxxpedro - addEvent(this.statusBarNode, "click", this.onClickStatusBar); - }, - - shutdown: function() - { - //this.panelNode.removeEventListener("click", this.onClick, false); - //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']); - - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }/*, - - search: function(text, reverse) - { - if (!text) - { - delete this.currentSearch; - this.highlightRow(null); - return false; - } - - var row; - if (this.currentSearch && text == this.currentSearch.text) - row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive); - else - { - function findRow(node) { return getAncestorByClass(node, "memberRow"); } - this.currentSearch = new TextSearch(this.panelNode, findRow); - row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive); - } - - if (row) - { - var sel = this.document.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.currentSearch.range); - - scrollIntoCenterView(row, this.panelNode); - - this.highlightRow(row); - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]); - return true; - } - else - { - dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]); - return false; - } - }/**/ -}); - -Firebug.registerPanel(DOMMainPanel); - - -// ************************************************************************************************ - - - -// ************************************************************************************************ -// Local Helpers - -var getMembers = function getMembers(object, level) // we expect object to be user-level object wrapped in security blanket -{ - if (!level) - level = 0; - - var ordinals = [], userProps = [], userClasses = [], userFuncs = [], - domProps = [], domFuncs = [], domConstants = []; - - try - { - var domMembers = getDOMMembers(object); - //var domMembers = {}; // TODO: xxxpedro - //var domConstantMap = {}; // TODO: xxxpedro - - if (object.wrappedJSObject) - var insecureObject = object.wrappedJSObject; - else - var insecureObject = object; - - // IE function prototype is not listed in (for..in) - if (isIE && isFunction(object)) - addMember("user", userProps, "prototype", object.prototype, level); - - for (var name in insecureObject) // enumeration is safe - { - if (ignoreVars[name] == 1) // javascript.options.strict says ignoreVars is undefined. - continue; - - var val; - try - { - val = insecureObject[name]; // getter is safe - } - catch (exc) - { - // Sometimes we get exceptions trying to access certain members - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers cannot access "+name, exc); - } - - var ordinal = parseInt(name); - if (ordinal || ordinal == 0) - { - addMember("ordinal", ordinals, name, val, level); - } - else if (isFunction(val)) - { - if (isClassFunction(val) && !(name in domMembers)) - addMember("userClass", userClasses, name, val, level); - else if (name in domMembers) - addMember("domFunction", domFuncs, name, val, level, domMembers[name]); - else - addMember("userFunction", userFuncs, name, val, level); - } - else - { - //TODO: xxxpedro - /* - var getterFunction = insecureObject.__lookupGetter__(name), - setterFunction = insecureObject.__lookupSetter__(name), - prefix = ""; - - if(getterFunction && !setterFunction) - prefix = "get "; - /**/ - - var prefix = ""; - - if (name in domMembers && !(name in domConstantMap)) - addMember("dom", domProps, (prefix+name), val, level, domMembers[name]); - else if (name in domConstantMap) - addMember("dom", domConstants, (prefix+name), val, level); - else - addMember("user", userProps, (prefix+name), val, level); - } - } - } - catch (exc) - { - // Sometimes we get exceptions just from trying to iterate the members - // of certain objects, like StorageList, but don't let that gum up the works - throw exc; - if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM) - FBTrace.sysout("dom.getMembers FAILS: ", exc); - //throw exc; - } - - function sortName(a, b) { return a.name > b.name ? 1 : -1; } - function sortOrder(a, b) { return a.order > b.order ? 1 : -1; } - - var members = []; - - members.push.apply(members, ordinals); - - Firebug.showUserProps = true; // TODO: xxxpedro - Firebug.showUserFuncs = true; // TODO: xxxpedro - Firebug.showDOMProps = true; - Firebug.showDOMFuncs = true; - Firebug.showDOMConstants = true; - - if (Firebug.showUserProps) - { - userProps.sort(sortName); - members.push.apply(members, userProps); - } - - if (Firebug.showUserFuncs) - { - userClasses.sort(sortName); - members.push.apply(members, userClasses); - - userFuncs.sort(sortName); - members.push.apply(members, userFuncs); - } - - if (Firebug.showDOMProps) - { - domProps.sort(sortName); - members.push.apply(members, domProps); - } - - if (Firebug.showDOMFuncs) - { - domFuncs.sort(sortName); - members.push.apply(members, domFuncs); - } - - if (Firebug.showDOMConstants) - members.push.apply(members, domConstants); - - return members; -} - -function expandMembers(members, toggles, offset, level) // recursion starts with offset=0, level=0 -{ - var expanded = 0; - for (var i = offset; i < members.length; ++i) - { - var member = members[i]; - if (member.level > level) - break; - - if ( toggles.hasOwnProperty(member.name) ) - { - member.open = "opened"; // member.level <= level && member.name in toggles. - - var newMembers = getMembers(member.value, level+1); // sets newMembers.level to level+1 - - var args = [i+1, 0]; - args.push.apply(args, newMembers); - members.splice.apply(members, args); - - /* - if (FBTrace.DBG_DOM) - { - FBTrace.sysout("expandMembers member.name", member.name); - FBTrace.sysout("expandMembers toggles", toggles); - FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]); - FBTrace.sysout("dom.expandedMembers level: "+level+" member", member); - } - /**/ - - expanded += newMembers.length; - i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1); - } - } - - return expanded; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -function isClassFunction(fn) -{ - try - { - for (var name in fn.prototype) - return true; - } catch (exc) {} - return false; -} - -var hasProperties = function hasProperties(ob) -{ - try - { - for (var name in ob) - return true; - } catch (exc) {} - - // IE function prototype is not listed in (for..in) - if (isFunction(ob)) return true; - - return false; -} - -FBL.ErrorCopy = function(message) -{ - this.message = message; -}; - -var addMember = function addMember(type, props, name, value, level, order) -{ - var rep = Firebug.getRep(value); // do this first in case a call to instanceof reveals contents - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var ErrorCopy = function(){}; //TODO: xxxpedro - - var valueType = typeof(value); - var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) && - (isFunction(value) || (valueType == "object" && value != null) - || (valueType == "string" && value.length > Firebug.stringCropLength)); - - props.push({ - name: name, - value: value, - type: type, - rowClass: "memberRow-"+type, - open: "", - order: order, - level: level, - indent: level*16, - hasChildren: hasChildren, - tag: tag - }); -} - -var getWatchRowIndex = function getWatchRowIndex(row) -{ - var index = -1; - for (; row && hasClass(row, "watchRow"); row = row.previousSibling) - ++index; - return index; -} - -var getRowName = function getRowName(row) -{ - var node = row.firstChild; - return node.textContent ? node.textContent : node.innerText; -} - -var getRowValue = function getRowValue(row) -{ - return row.lastChild.firstChild.repObject; -} - -var getRowOwnerObject = function getRowOwnerObject(row) -{ - var parentRow = getParentRow(row); - if (parentRow) - return getRowValue(parentRow); -} - -var getParentRow = function getParentRow(row) -{ - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - return row; - } -} - -var getPath = function getPath(row) -{ - var name = getRowName(row); - var path = [name]; - - var level = parseInt(row.getAttribute("level"))-1; - for (row = row.previousSibling; row; row = row.previousSibling) - { - if (parseInt(row.getAttribute("level")) == level) - { - var name = getRowName(row); - path.splice(0, 0, name); - - --level; - } - } - - return path; -} - -// ************************************************************************************************ - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - -// ************************************************************************************************ -// DOM Module - -Firebug.DOM = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null; - } -}); - -Firebug.registerModule(Firebug.DOM); - - -// ************************************************************************************************ -// DOM Panel - -var lastHighlightedObject; - -function DOMSidePanel(){}; - -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype, -{ - selectRow: function(row, target) - { - if (!target) - target = row.lastChild.firstChild; - - if (!target || !target.repObject) - return; - - this.pathToAppend = getPath(row); - - // If the object is inside an array, look up its index - var valueBox = row.lastChild.firstChild; - if (hasClass(valueBox, "objectBox-array")) - { - var arrayIndex = FirebugReps.Arr.getItemIndex(target); - this.pathToAppend.push(arrayIndex); - } - - // Make sure we get a fresh status path for the object, since otherwise - // it might find the object in the existing path and not refresh it - //Firebug.chrome.clearStatusPath(); - - var object = target.repObject; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onClick: function(event) - { - /* - var target = event.srcElement || event.target; - - var object = getAncestorByClass(target, "objectLink"); - object = object ? object.repObject : null; - - if(!object) return; - - if (instanceOf(object, "Element")) - { - Firebug.HTML.selectTreeNode(ElementCache(object)); - } - else - { - Firebug.chrome.selectPanel("DOM"); - Firebug.chrome.getPanel("DOM").select(object, true); - } - /**/ - - - var target = event.srcElement || event.target; - var repNode = Firebug.getRepNode(target); - if (repNode) - { - var row = getAncestorByClass(target, "memberRow"); - if (row) - { - this.selectRow(row, repNode); - cancelEvent(event); - } - } - /**/ - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Panel - - name: "DOMSidePanel", - parentPanel: "HTML", - title: "DOM", - - options: { - hasToolButtons: true - }, - - isInitialized: false, - - create: function() - { - Firebug.DOMBasePanel.prototype.create.apply(this, arguments); - - this.onClick = bind(this.onClick, this); - }, - - initialize: function(){ - Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments); - - addEvent(this.panelNode, "click", this.onClick); - - // TODO: xxxpedro css2 - var selection = ElementCache.get(FirebugChrome.selectedHTMLElementId); - if (selection) - this.select(selection, true); - }, - - shutdown: function() - { - removeEvent(this.panelNode, "click", this.onClick); - - Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments); - }, - - reattach: function(oldChrome) - { - //this.isInitialized = oldChrome.getPanel("DOM").isInitialized; - this.toggles = oldChrome.getPanel("DOMSidePanel").toggles; - } - -}); - -Firebug.registerPanel(DOMSidePanel); - - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/domplate.js b/branches/firebug1.5/content/firebug1.4/domplate.js deleted file mode 100644 index 69786b13..00000000 --- a/branches/firebug1.5/content/firebug1.4/domplate.js +++ /dev/null @@ -1,1123 +0,0 @@ -// Problems in IE -// FIXED - eval return -// FIXED - addEventListener problem in IE -// FIXED doc.createRange? -// -// class reserved word -// test all honza examples in IE6 and IE7 - - -/* See license.txt for terms of usage */ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function DomplateTag(tagName) -{ - this.tagName = tagName; -} - -function DomplateEmbed() -{ -} - -function DomplateLoop() -{ -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -( /** @scope ns-domplate */ function() { - -var womb = null; - -var domplate = FBL.domplate = function() -{ - var lastSubject; - for (var i = 0; i < arguments.length; ++i) - lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i]; - - for (var name in lastSubject) - { - var val = lastSubject[name]; - if (isTag(val)) - val.tag.subject = lastSubject; - } - - return lastSubject; -}; - -domplate.context = function(context, fn) -{ - var lastContext = domplate.lastContext; - domplate.topContext = context; - fn.apply(context); - domplate.topContext = lastContext; -}; - -FBL.TAG = function() -{ - var embed = new DomplateEmbed(); - return embed.merge(arguments); -}; - -FBL.FOR = function() -{ - var loop = new DomplateLoop(); - return loop.merge(arguments); -}; - -DomplateTag.prototype = -{ - merge: function(args, oldTag) - { - if (oldTag) - this.tagName = oldTag.tagName; - - this.context = oldTag ? oldTag.context : null; - this.subject = oldTag ? oldTag.subject : null; - this.attrs = oldTag ? copyObject(oldTag.attrs) : {}; - this.classes = oldTag ? copyObject(oldTag.classes) : {}; - this.props = oldTag ? copyObject(oldTag.props) : null; - this.listeners = oldTag ? copyArray(oldTag.listeners) : null; - this.children = oldTag ? copyArray(oldTag.children) : []; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args.length ? args[0] : null; - var hasAttrs = typeof(attrs) == "object" && !isTag(attrs); - - this.children = []; - - if (domplate.topContext) - this.context = domplate.topContext; - - if (args.length) - parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children); - - if (hasAttrs) - this.parseAttrs(attrs); - - return creator(this, DomplateTag); - }, - - parseAttrs: function(args) - { - for (var name in args) - { - var val = parseValue(args[name]); - readPartNames(val, this.vars); - - if (name.indexOf("on") == 0) - { - var eventName = name.substr(2); - if (!this.listeners) - this.listeners = []; - this.listeners.push(eventName, val); - } - else if (name.indexOf("_") == 0) - { - var propName = name.substr(1); - if (!this.props) - this.props = {}; - this.props[propName] = val; - } - else if (name.indexOf("$") == 0) - { - var className = name.substr(1); - if (!this.classes) - this.classes = {}; - this.classes[className] = val; - } - else - { - if (name == "class" && this.attrs.hasOwnProperty(name) ) - this.attrs[name] += " " + val; - else - this.attrs[name] = val; - } - } - }, - - compile: function() - { - if (this.renderMarkup) - return; - - this.compileMarkup(); - this.compileDOM(); - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs); - }, - - compileMarkup: function() - { - this.markupArgs = []; - var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0}; - - this.generateMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - - var fnBlock = ['r=(function (__code__, __context__, __in__, __out__']; - for (var i = 0; i < info.argIndex; ++i) - fnBlock.push(', s', i); - fnBlock.push(') {'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (__context__) {'); - fnBlock.push('with (__in__) {'); - - fnBlock.push.apply(fnBlock, blocks); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('}})'); - - function __link__(tag, code, outputs, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var tagOutputs = []; - var markupArgs = [code, tag.tag.context, args, tagOutputs]; - markupArgs.push.apply(markupArgs, tag.tag.markupArgs); - tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs); - - outputs.push(tag); - outputs.push(tagOutputs); - } - - function __escape__(value) - { - function replaceChars(ch) - { - switch (ch) - { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case "'": - return "'"; - case '"': - return """; - } - return "?"; - }; - return String(value).replace(/[<>&"']/g, replaceChars); - } - - function __loop__(iter, outputs, fn) - { - var iterOuts = []; - outputs.push(iterOuts); - - if (iter instanceof Array) - iter = new ArrayIterator(iter); - - try - { - while (1) - { - var value = iter.next(); - var itemOuts = [0,0]; - iterOuts.push(itemOuts); - fn.apply(this, [value, itemOuts]); - } - } - catch (exc) - { - if (exc != StopIteration) - throw exc; - } - } - - var js = fnBlock.join(""); - var r = null; - eval(js); - this.renderMarkup = r; - }, - - getVarNames: function(args) - { - if (this.vars) - args.push.apply(args, this.vars); - - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.getVarNames(args); - else if (child instanceof Parts) - { - for (var i = 0; i < child.parts.length; ++i) - { - if (child.parts[i] instanceof Variable) - { - var name = child.parts[i].name; - var names = name.split("."); - args.push(names[0]); - } - } - } - } - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - topBlock.push(',"<', this.tagName, '"'); - - for (var name in this.attrs) - { - if (name != "class") - { - var val = this.attrs[name]; - topBlock.push(', " ', name, '=\\""'); - addParts(val, ',', topBlock, info, true); - topBlock.push(', "\\""'); - } - } - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - readPartNames(this.listeners[i+1], topOuts); - } - - if (this.props) - { - for (var name in this.props) - readPartNames(this.props[name], topOuts); - } - - if ( this.attrs.hasOwnProperty("class") || this.classes) - { - topBlock.push(', " class=\\""'); - if (this.attrs.hasOwnProperty("class")) - addParts(this.attrs["class"], ',', topBlock, info, true); - topBlock.push(', " "'); - for (var name in this.classes) - { - topBlock.push(', ('); - addParts(this.classes[name], '', topBlock, info); - topBlock.push(' ? "', name, '" + " " : "")'); - } - topBlock.push(', "\\""'); - } - topBlock.push(',">"'); - - this.generateChildMarkup(topBlock, topOuts, blocks, info); - topBlock.push(',""'); - }, - - generateChildMarkup: function(topBlock, topOuts, blocks, info) - { - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - child.tag.generateMarkup(topBlock, topOuts, blocks, info); - else - addParts(child, ',', topBlock, info, true); - } - }, - - addCode: function(topBlock, topOuts, blocks) - { - if (topBlock.length) - blocks.push('__code__.push(""', topBlock.join(""), ');'); - if (topOuts.length) - blocks.push('__out__.push(', topOuts.join(","), ');'); - topBlock.splice(0, topBlock.length); - topOuts.splice(0, topOuts.length); - }, - - addLocals: function(blocks) - { - var varNames = []; - this.getVarNames(varNames); - - var map = {}; - for (var i = 0; i < varNames.length; ++i) - { - var name = varNames[i]; - if ( map.hasOwnProperty(name) ) - continue; - - map[name] = 1; - var names = name.split("."); - blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';'); - } - }, - - compileDOM: function() - { - var path = []; - var blocks = []; - this.domArgs = []; - path.embedIndex = 0; - path.loopIndex = 0; - path.staticIndex = 0; - path.renderIndex = 0; - var nodeCount = this.generateDOM(path, blocks, this.domArgs); - - var fnBlock = ['r=(function (root, context, o']; - - for (var i = 0; i < path.staticIndex; ++i) - fnBlock.push(', ', 's'+i); - - for (var i = 0; i < path.renderIndex; ++i) - fnBlock.push(', ', 'd'+i); - - fnBlock.push(') {'); - for (var i = 0; i < path.loopIndex; ++i) - fnBlock.push('var l', i, ' = 0;'); - for (var i = 0; i < path.embedIndex; ++i) - fnBlock.push('var e', i, ' = 0;'); - - if (this.subject) - fnBlock.push('with (this) {'); - if (this.context) - fnBlock.push('with (context) {'); - - fnBlock.push(blocks.join("")); - - if (this.subject) - fnBlock.push('}'); - if (this.context) - fnBlock.push('}'); - - fnBlock.push('return ', nodeCount, ';'); - fnBlock.push('})'); - - function __bind__(object, fn) - { - return function(event) { return fn.apply(object, [event]); }; - } - - function __link__(node, tag, args) - { - if (!tag || !tag.tag) - return; - - tag.tag.compile(); - - var domArgs = [node, tag.tag.context, 0]; - domArgs.push.apply(domArgs, tag.tag.domArgs); - domArgs.push.apply(domArgs, args); - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs); - return tag.tag.renderDOM.apply(tag.tag.subject, domArgs); - } - - var self = this; - function __loop__(iter, fn) - { - var nodeCount = 0; - for (var i = 0; i < iter.length; ++i) - { - iter[i][0] = i; - iter[i][1] = nodeCount; - nodeCount += fn.apply(this, iter[i]); - //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount); - } - return nodeCount; - } - - function __path__(parent, offset) - { - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n"); - var root = parent; - - for (var i = 2; i < arguments.length; ++i) - { - var index = arguments[i]; - if (i == 3) - index += offset; - - if (index == -1) - parent = parent.parentNode; - else - parent = parent.childNodes[index]; - } - - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n"); - return parent; - } - - var js = fnBlock.join(""); - //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n")); - var r = null; - eval(js); - this.renderDOM = r; - }, - - generateDOM: function(path, blocks, args) - { - if (this.listeners || this.props) - this.generateNodePath(path, blocks); - - if (this.listeners) - { - for (var i = 0; i < this.listeners.length; i += 2) - { - var val = this.listeners[i+1]; - var arg = generateArg(val, path, args); - //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);'); - } - } - - if (this.props) - { - for (var name in this.props) - { - var val = this.props[name]; - var arg = generateArg(val, path, args); - blocks.push('node.', name, ' = ', arg, ';'); - } - } - - this.generateChildDOM(path, blocks, args); - return 1; - }, - - generateNodePath: function(path, blocks) - { - blocks.push("var node = __path__(root, o"); - for (var i = 0; i < path.length; ++i) - blocks.push(",", path[i]); - blocks.push(");"); - }, - - generateChildDOM: function(path, blocks, args) - { - path.push(0); - for (var i = 0; i < this.children.length; ++i) - { - var child = this.children[i]; - if (isTag(child)) - path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args); - else - path[path.length-1] += '+1'; - } - path.pop(); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateEmbed.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.value = oldTag ? oldTag.value : parseValue(args[0]); - this.attrs = oldTag ? oldTag.attrs : {}; - this.vars = oldTag ? copyArray(oldTag.vars) : []; - - var attrs = args[1]; - for (var name in attrs) - { - var val = parseValue(attrs[name]); - this.attrs[name] = val; - readPartNames(val, this.vars); - } - - return creator(this, DomplateEmbed); - }, - - getVarNames: function(names) - { - if (this.value instanceof Parts) - names.push(this.value.parts[0].name); - - if (this.vars) - names.push.apply(names, this.vars); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - blocks.push('__link__('); - addParts(this.value, '', blocks, info); - blocks.push(', __code__, __out__, {'); - - var lastName = null; - for (var name in this.attrs) - { - if (lastName) - blocks.push(','); - lastName = name; - - var val = this.attrs[name]; - blocks.push('"', name, '":'); - addParts(val, '', blocks, info); - } - - blocks.push('});'); - //this.generateChildMarkup(topBlock, topOuts, blocks, info); - }, - - generateDOM: function(path, blocks, args) - { - var embedName = 'e'+path.embedIndex++; - - this.generateNodePath(path, blocks); - - var valueName = 'd' + path.renderIndex++; - var argsName = 'd' + path.renderIndex++; - blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');'); - - return embedName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -DomplateLoop.prototype = copyObject(DomplateTag.prototype, -{ - merge: function(args, oldTag) - { - this.varName = oldTag ? oldTag.varName : args[0]; - this.iter = oldTag ? oldTag.iter : parseValue(args[1]); - this.vars = []; - - this.children = oldTag ? copyArray(oldTag.children) : []; - - var offset = Math.min(args.length, 2); - parseChildren(args, offset, this.vars, this.children); - - return creator(this, DomplateLoop); - }, - - getVarNames: function(names) - { - if (this.iter instanceof Parts) - names.push(this.iter.parts[0].name); - - DomplateTag.prototype.getVarNames.apply(this, [names]); - }, - - generateMarkup: function(topBlock, topOuts, blocks, info) - { - this.addCode(topBlock, topOuts, blocks); - - var iterName; - if (this.iter instanceof Parts) - { - var part = this.iter.parts[0]; - iterName = part.name; - - if (part.format) - { - for (var i = 0; i < part.format.length; ++i) - iterName = part.format[i] + "(" + iterName + ")"; - } - } - else - iterName = this.iter; - - blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {'); - this.generateChildMarkup(topBlock, topOuts, blocks, info); - this.addCode(topBlock, topOuts, blocks); - blocks.push('}]);'); - }, - - generateDOM: function(path, blocks, args) - { - var iterName = 'd'+path.renderIndex++; - var counterName = 'i'+path.loopIndex; - var loopName = 'l'+path.loopIndex++; - - if (!path.length) - path.push(-1, 0); - - var preIndex = path.renderIndex; - path.renderIndex = 0; - - var nodeCount = 0; - - var subBlocks = []; - var basePath = path[path.length-1]; - for (var i = 0; i < this.children.length; ++i) - { - path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount; - - var child = this.children[i]; - if (isTag(child)) - nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args); - else - nodeCount += '+1'; - } - - path[path.length-1] = basePath+'+'+loopName; - - blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName); - for (var i = 0; i < path.renderIndex; ++i) - blocks.push(',d'+i); - blocks.push(') {'); - blocks.push(subBlocks.join("")); - blocks.push('return ', nodeCount, ';'); - blocks.push('}]);'); - - path.renderIndex = preIndex; - - return loopName; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function Variable(name, format) -{ - this.name = name; - this.format = format; -} - -function Parts(parts) -{ - this.parts = parts; -} - -// ************************************************************************************************ - -function parseParts(str) -{ - var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g; - var index = 0; - var parts = []; - - var m; - while (m = re.exec(str)) - { - var pre = str.substr(index, (re.lastIndex-m[0].length)-index); - if (pre) - parts.push(pre); - - var expr = m[1].split("|"); - parts.push(new Variable(expr[0], expr.slice(1))); - index = re.lastIndex; - } - - if (!index) - return str; - - var post = str.substr(index); - if (post) - parts.push(post); - - return new Parts(parts); -} - -function parseValue(val) -{ - return typeof(val) == 'string' ? parseParts(val) : val; -} - -function parseChildren(args, offset, vars, children) -{ - for (var i = offset; i < args.length; ++i) - { - var val = parseValue(args[i]); - children.push(val); - readPartNames(val, vars); - } -} - -function readPartNames(val, vars) -{ - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - vars.push(part.name); - } - } -} - -function generateArg(val, path, args) -{ - if (val instanceof Parts) - { - var vals = []; - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var varName = 'd'+path.renderIndex++; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - varName = part.format[j] + '(' + varName + ')'; - } - - vals.push(varName); - } - else - vals.push('"'+part.replace(/"/g, '\\"')+'"'); - } - - return vals.join('+'); - } - else - { - args.push(val); - return 's' + path.staticIndex++; - } -} - -function addParts(val, delim, block, info, escapeIt) -{ - var vals = []; - if (val instanceof Parts) - { - for (var i = 0; i < val.parts.length; ++i) - { - var part = val.parts[i]; - if (part instanceof Variable) - { - var partName = part.name; - if (part.format) - { - for (var j = 0; j < part.format.length; ++j) - partName = part.format[j] + "(" + partName + ")"; - } - - if (escapeIt) - vals.push("__escape__(" + partName + ")"); - else - vals.push(partName); - } - else - vals.push('"'+ part + '"'); - } - } - else if (isTag(val)) - { - info.args.push(val); - vals.push('s'+info.argIndex++); - } - else - vals.push('"'+ val + '"'); - - var parts = vals.join(delim); - if (parts) - block.push(delim, parts); -} - -function isTag(obj) -{ - return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag; -} - -function creator(tag, cons) -{ - var fn = new Function( - "var tag = arguments.callee.tag;" + - "var cons = arguments.callee.cons;" + - "var newTag = new cons();" + - "return newTag.merge(arguments, tag);"); - - fn.tag = tag; - fn.cons = cons; - extend(fn, Renderer); - - return fn; -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function copyArray(oldArray) -{ - var ary = []; - if (oldArray) - for (var i = 0; i < oldArray.length; ++i) - ary.push(oldArray[i]); - return ary; -} - -function copyObject(l, r) -{ - var m = {}; - extend(m, l); - extend(m, r); - return m; -} - -function extend(l, r) -{ - for (var n in r) - l[n] = r[n]; -} - -function addEvent(object, name, handler) -{ - if (document.all) - object.attachEvent("on"+name, handler); - else - object.addEventListener(name, handler, false); -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -function ArrayIterator(array) -{ - var index = -1; - - this.next = function() - { - if (++index >= array.length) - throw StopIteration; - - return array[index]; - }; -} - -function StopIteration() {} - -FBL.$break = function() -{ - throw StopIteration; -}; - -// ************************************************************************************************ - -var Renderer = -{ - renderHTML: function(args, outputs, self) - { - var code = []; - var markupArgs = [code, this.tag.context, args, outputs]; - markupArgs.push.apply(markupArgs, this.tag.markupArgs); - this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs); - return code.join(""); - }, - - insertRows: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - var div = doc.createElement("div"); - div.innerHTML = ""+html+"
                                "; - - var tbody = div.firstChild.firstChild; - var parent = before.tagName == "TR" ? before.parentNode : before; - var after = before.tagName == "TR" ? before.nextSibling : null; - - var firstRow = tbody.firstChild, lastRow; - while (tbody.firstChild) - { - lastRow = tbody.firstChild; - if (after) - parent.insertBefore(lastRow, after); - else - parent.appendChild(lastRow); - } - - var offset = 0; - if (before.tagName == "TR") - { - var node = firstRow.parentNode.firstChild; - for (; node && node != firstRow; node = node.nextSibling) - ++offset; - } - - var domArgs = [firstRow, this.tag.context, offset]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - return [firstRow, lastRow]; - }, - - insertBefore: function(args, before, self) - { - return this.insertNode(args, before.ownerDocument, before, false, self); - }, - - insertAfter: function(args, after, self) - { - return this.insertNode(args, after.ownerDocument, after, true, self); - }, - - insertNode: function(args, doc, element, isAfter, self) - { - if (!args) - args = {}; - - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode html: "+html+"\n"); - - var doc = element.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - if (isAfter) - { - while (womb.firstChild) - if (element.nextSibling) - element.parentNode.insertBefore(womb.firstChild, element.nextSibling); - else - element.parentNode.appendChild(womb.firstChild); - } - else - { - while (womb.lastChild) - element.parentNode.insertBefore(womb.lastChild, element); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) - // FBTrace.sysout("domplate.insertNode domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - /**/ - - /* - insertAfter: function(args, before, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var doc = before.ownerDocument; - if (!womb || womb.ownerDocument != doc) - womb = doc.createElement("div"); - - womb.innerHTML = html; - - var root = womb.firstChild; - while (womb.firstChild) - if (before.nextSibling) - before.parentNode.insertBefore(womb.firstChild, before.nextSibling); - else - before.parentNode.appendChild(womb.firstChild); - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null), - domArgs); - - return root; - }, - /**/ - - replace: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - - var root; - if (parent.nodeType == 1) - { - parent.innerHTML = html; - root = parent.firstChild; - } - else - { - if (!parent || parent.nodeType != 9) - parent = document; - - if (!womb || womb.ownerDocument != parent) - womb = parent.createElement("div"); - womb.innerHTML = html; - - root = womb.firstChild; - //womb.removeChild(root); - } - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - }, - - append: function(args, parent, self) - { - this.tag.compile(); - - var outputs = []; - var html = this.renderHTML(args, outputs, self); - //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n"); - - if (!womb || womb.ownerDocument != parent.ownerDocument) - womb = parent.ownerDocument.createElement("div"); - womb.innerHTML = html; - - // TODO: xxxpedro domplate port to Firebug - var root = womb.firstChild; - while (womb.firstChild) - parent.appendChild(womb.firstChild); - - // clearing element reference to avoid reference error in IE8 when switching contexts - womb = null; - - var domArgs = [root, this.tag.context, 0]; - domArgs.push.apply(domArgs, this.tag.domArgs); - domArgs.push.apply(domArgs, outputs); - - //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs); - this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs); - - return root; - } -}; - -// ************************************************************************************************ - -function defineTags() -{ - for (var i = 0; i < arguments.length; ++i) - { - var tagName = arguments[i]; - var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);"); - fn.DomplateTag = DomplateTag; - - var fnName = tagName.toUpperCase(); - FBL[fnName] = fn; - } -} - -defineTags( - "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr", - "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select", - "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe" -); - -})(); diff --git a/branches/firebug1.5/content/firebug1.4/editor.js b/branches/firebug1.5/content/firebug1.4/editor.js deleted file mode 100644 index 346c093c..00000000 --- a/branches/firebug1.5/content/firebug1.4/editor.js +++ /dev/null @@ -1,1395 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var saveTimeout = 400; -var pageAmount = 10; - -// ************************************************************************************************ -// Globals - -var currentTarget = null; -var currentGroup = null; -var currentPanel = null; -var currentEditor = null; - -var defaultEditor = null; - -var originalClassName = null; - -var originalValue = null; -var defaultValue = null; -var previousValue = null; - -var invalidEditor = false; -var ignoreNextInput = false; - -// ************************************************************************************************ - -Firebug.Editor = extend(Firebug.Module, -{ - supportsStopEvent: true, - - dispatchName: "editor", - tabCharacter: " ", - - startEditing: function(target, value, editor) - { - this.stopEditing(); - - if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter")) - return; - - var panel = Firebug.getElementPanel(target); - if (!panel.editable) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.startEditing " + value, target); - - defaultValue = target.getAttribute("defaultValue"); - if (value == undefined) - { - var textContent = isIE ? "innerText" : "textContent"; - value = target[textContent]; - if (value == defaultValue) - value = ""; - } - - originalValue = previousValue = value; - - invalidEditor = false; - currentTarget = target; - currentPanel = panel; - currentGroup = getAncestorByClass(target, "editGroup"); - - currentPanel.editing = true; - - var panelEditor = currentPanel.getEditor(target, value); - currentEditor = editor ? editor : panelEditor; - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - var inlineParent = getInlineParent(target); - var targetSize = getOffsetSize(inlineParent); - - setClass(panel.panelNode, "editing"); - setClass(target, "editing"); - if (currentGroup) - setClass(currentGroup, "editing"); - - currentEditor.show(target, currentPanel, value, targetSize); - //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]); - currentEditor.beginEditing(target, value); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Editor start panel "+currentPanel.name); - this.attachListeners(currentEditor, panel.context); - }, - - stopEditing: function(cancel) - { - if (!currentTarget) - return; - - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout); - - clearTimeout(this.saveTimeout); - delete this.saveTimeout; - - this.detachListeners(currentEditor, currentPanel.context); - - removeClass(currentPanel.panelNode, "editing"); - removeClass(currentTarget, "editing"); - if (currentGroup) - removeClass(currentGroup, "editing"); - - var value = currentEditor.getValue(); - if (value == defaultValue) - value = ""; - - var removeGroup = currentEditor.endEditing(currentTarget, value, cancel); - - try - { - if (cancel) - { - //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]); - if (value != originalValue) - this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue); - - if (removeGroup && !originalValue && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else if (!value) - { - this.saveEditAndNotifyListeners(currentTarget, null, previousValue); - - if (removeGroup && currentGroup) - currentGroup.parentNode.removeChild(currentGroup); - } - else - this.save(value); - } - catch (exc) - { - //throw exc.message; - //ERROR(exc); - } - - currentEditor.hide(); - currentPanel.editing = false; - - //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]); - //if (FBTrace.DBG_EDITOR) - // FBTrace.sysout("Editor stop panel "+currentPanel.name); - - currentTarget = null; - currentGroup = null; - currentPanel = null; - currentEditor = null; - originalValue = null; - invalidEditor = false; - - return value; - }, - - cancelEditing: function() - { - return this.stopEditing(true); - }, - - update: function(saveNow) - { - if (this.saveTimeout) - clearTimeout(this.saveTimeout); - - invalidEditor = true; - - currentEditor.layout(); - - if (saveNow) - this.save(); - else - { - var context = currentPanel.context; - this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout); - } - }, - - save: function(value) - { - if (!invalidEditor) - return; - - if (value == undefined) - value = currentEditor.getValue(); - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null")); - try - { - this.saveEditAndNotifyListeners(currentTarget, value, previousValue); - - previousValue = value; - invalidEditor = false; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("editor.save FAILS "+exc, exc); - } - }, - - saveEditAndNotifyListeners: function(currentTarget, value, previousValue) - { - currentEditor.saveEdit(currentTarget, value, previousValue); - //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]); - }, - - setEditTarget: function(element) - { - if (!element) - { - dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]); - this.stopEditing(); - } - else if (hasClass(element, "insertBefore")) - this.insertRow(element, "before"); - else if (hasClass(element, "insertAfter")) - this.insertRow(element, "after"); - else - this.startEditing(element); - }, - - tabNextEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var nextEditable = currentTarget; - do - { - nextEditable = !value && currentGroup - ? getNextOutsider(nextEditable, currentGroup) - : getNextByClass(nextEditable, "editable"); - } - while (nextEditable && !nextEditable.offsetHeight); - - this.setEditTarget(nextEditable); - }, - - tabPreviousEditor: function() - { - if (!currentTarget) - return; - - var value = currentEditor.getValue(); - var prevEditable = currentTarget; - do - { - prevEditable = !value && currentGroup - ? getPreviousOutsider(prevEditable, currentGroup) - : getPreviousByClass(prevEditable, "editable"); - } - while (prevEditable && !prevEditable.offsetHeight); - - this.setEditTarget(prevEditable); - }, - - insertRow: function(relative, insertWhere) - { - var group = - relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget; - var value = this.stopEditing(); - - currentPanel = Firebug.getElementPanel(group); - - currentEditor = currentPanel.getEditor(group, value); - if (!currentEditor) - currentEditor = getDefaultEditor(currentPanel); - - currentGroup = currentEditor.insertNewRow(group, insertWhere); - if (!currentGroup) - return; - - var editable = hasClass(currentGroup, "editable") - ? currentGroup - : getNextByClass(currentGroup, "editable"); - - if (editable) - this.setEditTarget(editable); - }, - - insertRowForObject: function(relative) - { - var container = getAncestorByClass(relative, "insertInto"); - if (container) - { - relative = getChildByClass(container, "insertBefore"); - if (relative) - this.insertRow(relative, "before"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - attachListeners: function(editor, context) - { - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - addEvent(win, "resize", this.onResize); - addEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - - this.listeners = [ - chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this)) - ]; - - if (editor.arrowCompletion) - { - this.listeners.push( - chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)), - chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)), - chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)), - chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount)) - ); - } - - if (currentEditor.tabNavigation) - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")), - chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)), - chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this)) - ); - } - else if (currentEditor.multiLine) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, insertTab) - ); - } - else - { - this.listeners.push( - chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this)) - ); - - if (currentEditor.tabCompletion) - { - this.listeners.push( - chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)), - chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1)) - ); - } - } - }, - - detachListeners: function(editor, context) - { - if (!this.listeners) - return; - - var win = isIE ? - currentTarget.ownerDocument.parentWindow : - currentTarget.ownerDocument.defaultView; - - removeEvent(win, "resize", this.onResize); - removeEvent(win, "blur", this.onBlur); - - var chrome = Firebug.chrome; - if (chrome) - { - for (var i = 0; i < this.listeners.length; ++i) - chrome.keyIgnore(this.listeners[i]); - } - - delete this.listeners; - }, - - onResize: function(event) - { - currentEditor.layout(true); - }, - - onBlur: function(event) - { - if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box)) - this.stopEditing(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - Firebug.Module.initialize.apply(this, arguments); - - this.onResize = bindFixed(this.onResize, this); - this.onBlur = bind(this.onBlur, this); - }, - - disable: function() - { - this.stopEditing(); - }, - - showContext: function(browser, context) - { - this.stopEditing(); - }, - - showPanel: function(browser, panel) - { - this.stopEditing(); - } -}); - -// ************************************************************************************************ -// BaseEditor - -Firebug.BaseEditor = extend(Firebug.MeasureBox, -{ - getValue: function() - { - }, - - setValue: function(value) - { - }, - - show: function(target, panel, value, textSize, targetSize) - { - }, - - hide: function() - { - }, - - layout: function(forceAll) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Support for context menus within inline editors. - - getContextMenuItems: function(target) - { - var items = []; - items.push({label: "Cut", commandID: "cmd_cut"}); - items.push({label: "Copy", commandID: "cmd_copy"}); - items.push({label: "Paste", commandID: "cmd_paste"}); - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Editor Module listeners will get "onBeginEditing" just before this call - - beginEditing: function(target, value) - { - }, - - // Editor Module listeners will get "onSaveEdit" just after this call - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - } -}); - -// ************************************************************************************************ -// InlineEditor - -// basic inline editor attributes -var inlineEditorAttributes = { - "class": "textEditorInner", - - type: "text", - spellcheck: "false", - - onkeypress: "$onKeyPress", - - onoverflow: "$onOverflow", - oncontextmenu: "$onContextMenu" -}; - -// IE does not support the oninput event, so we're using the onkeydown to signalize -// the relevant keyboard events, and the onpropertychange to actually handle the -// input event, which should happen after the onkeydown event is fired and after the -// value of the input is updated, but before the onkeyup and before the input (with the -// new value) is rendered -if (isIE) -{ - inlineEditorAttributes.onpropertychange = "$onInput"; - inlineEditorAttributes.onkeydown = "$onKeyDown"; -} -// for other browsers we use the oninput event -else -{ - inlineEditorAttributes.oninput = "$onInput"; -} - -Firebug.InlineEditor = function(doc) -{ - this.initializeInline(doc); -}; - -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor, -{ - enterOnBlur: true, - outerMargin: 8, - shadowExpand: 7, - - tag: - DIV({"class": "inlineEditor"}, - DIV({"class": "textEditorTop1"}, - DIV({"class": "textEditorTop2"}) - ), - DIV({"class": "textEditorInner1"}, - DIV({"class": "textEditorInner2"}, - INPUT( - inlineEditorAttributes - ) - ) - ), - DIV({"class": "textEditorBottom1"}, - DIV({"class": "textEditorBottom2"}) - ) - ), - - inputTag : - INPUT({"class": "textEditorInner", type: "text", - /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"} - ), - - expanderTag: - IMG({"class": "inlineExpander", src: "blank.gif"}), - - initialize: function() - { - this.fixedWidth = false; - this.completeAsYouType = true; - this.tabNavigation = true; - this.multiLine = false; - this.tabCompletion = false; - this.arrowCompletion = true; - this.noWrap = true; - this.numeric = false; - }, - - destroy: function() - { - this.destroyInput(); - }, - - initializeInline: function(doc) - { - if (FBTrace.DBG_EDITOR) - FBTrace.sysout("Firebug.InlineEditor initializeInline()"); - - //this.box = this.tag.replace({}, doc, this); - this.box = this.tag.append({}, doc.body, this); - - //this.input = this.box.childNodes[1].firstChild.firstChild; // XXXjjb childNode[1] required - this.input = this.box.getElementsByTagName("input")[0]; - - if (isIElt8) - { - this.input.style.top = "-8px"; - } - - this.expander = this.expanderTag.replace({}, doc, this); - this.initialize(); - }, - - destroyInput: function() - { - // XXXjoe Need to remove input/keypress handlers to avoid leaks - }, - - getValue: function() - { - return this.input.value; - }, - - setValue: function(value) - { - // It's only a one-line editor, so new lines shouldn't be allowed - return this.input.value = stripNewLines(value); - }, - - show: function(target, panel, value, targetSize) - { - //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]); - this.target = target; - this.panel = panel; - - this.targetSize = targetSize; - - // TODO: xxxpedro editor - //this.targetOffset = getClientOffset(target); - - // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the - // offset values of invisible elements, or empty elements. So, in order to get the - // correct values, we temporary inject a character in the innerHTML of the empty element, - // then we get the offset values, and next, we restore the original innerHTML value. - var innerHTML = target.innerHTML; - var isEmptyElement = !innerHTML; - if (isEmptyElement) - target.innerHTML = "."; - - // Get the position of the target element (that is about to be edited) - this.targetOffset = - { - x: target.offsetLeft, - y: target.offsetTop - }; - - // Restore the original innerHTML value of the empty element - if (isEmptyElement) - target.innerHTML = innerHTML; - - this.originalClassName = this.box.className; - - var classNames = target.className.split(" "); - for (var i = 0; i < classNames.length; ++i) - setClass(this.box, "editor-" + classNames[i]); - - // Make the editor match the target's font style - copyTextStyles(target, this.box); - - this.setValue(value); - - if (this.fixedWidth) - this.updateLayout(true); - else - { - this.startMeasuring(target); - this.textSize = this.measureInputText(value); - - // Correct the height of the box to make the funky CSS drop-shadow line up - var parent = this.input.parentNode; - if (hasClass(parent, "textEditorInner2")) - { - var yDiff = this.textSize.height - this.shadowExpand; - - // IE6 height offset - if (isIE6) - yDiff -= 2; - - parent.style.height = yDiff + "px"; - parent.parentNode.style.height = yDiff + "px"; - } - - this.updateLayout(true); - } - - this.getAutoCompleter().reset(); - - if (isIElt8) - panel.panelNode.appendChild(this.box); - else - target.offsetParent.appendChild(this.box); - - //console.log(target); - //this.input.select(); // it's called bellow, with setTimeout - - if (isIE) - { - // reset input style - this.input.style.fontFamily = "Monospace"; - this.input.style.fontSize = "11px"; - } - - // Insert the "expander" to cover the target element with white space - if (!this.fixedWidth) - { - copyBoxStyles(target, this.expander); - - target.parentNode.replaceChild(this.expander, target); - collapse(target, true); - this.expander.parentNode.insertBefore(target, this.expander); - } - - //TODO: xxxpedro - //scrollIntoCenterView(this.box, null, true); - - // Display the editor after change its size and position to avoid flickering - this.box.style.display = "block"; - - // we need to call input.focus() and input.select() with a timeout, - // otherwise it won't work on all browsers due to timing issues - var self = this; - setTimeout(function(){ - self.input.focus(); - self.input.select(); - },0); - }, - - hide: function() - { - this.box.className = this.originalClassName; - - if (!this.fixedWidth) - { - this.stopMeasuring(); - - collapse(this.target, false); - - if (this.expander.parentNode) - this.expander.parentNode.removeChild(this.expander); - } - - if (this.box.parentNode) - { - ///setSelectionRange(this.input, 0, 0); - this.input.blur(); - - this.box.parentNode.removeChild(this.box); - } - - delete this.target; - delete this.panel; - }, - - layout: function(forceAll) - { - if (!this.fixedWidth) - this.textSize = this.measureInputText(this.input.value); - - if (forceAll) - this.targetOffset = getClientOffset(this.expander); - - this.updateLayout(false, forceAll); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - beginEditing: function(target, value) - { - }, - - saveEdit: function(target, value, previousValue) - { - }, - - endEditing: function(target, value, cancel) - { - // Remove empty groups by default - return true; - }, - - insertNewRow: function(target, insertWhere) - { - }, - - advanceToNext: function(target, charCode) - { - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleteRange: function(value, offset) - { - }, - - getAutoCompleteList: function(preExpr, expr, postExpr) - { - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getAutoCompleter: function() - { - if (!this.autoCompleter) - { - this.autoCompleter = new Firebug.AutoCompleter(null, - bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this), - true, false); - } - - return this.autoCompleter; - }, - - completeValue: function(amt) - { - //console.log("completeValue"); - - var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); - - if (selectRangeCallback) - { - Firebug.Editor.update(true); - - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - else - this.incrementValue(amt); - }, - - incrementValue: function(amt) - { - var value = this.input.value; - - // TODO: xxxpedro editor - if (isIE) - var start = getInputSelectionStart(this.input), end = start; - else - var start = this.input.selectionStart, end = this.input.selectionEnd; - - //debugger; - var range = this.getAutoCompleteRange(value, start); - if (!range || range.type != "int") - range = {start: 0, end: value.length-1}; - - var expr = value.substr(range.start, range.end-range.start+1); - preExpr = value.substr(0, range.start); - postExpr = value.substr(range.end+1); - - // See if the value is an integer, and if so increment it - var intValue = parseInt(expr); - if (!!intValue || intValue == 0) - { - var m = /\d+/.exec(expr); - var digitPost = expr.substr(m.index+m[0].length); - - var completion = intValue-amt; - this.input.value = preExpr + completion + digitPost + postExpr; - - setSelectionRange(this.input, start, end); - - Firebug.Editor.update(true); - - return true; - } - else - return false; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - onKeyPress: function(event) - { - //console.log("onKeyPress", event); - if (event.keyCode == 27 && !this.completeAsYouType) - { - var reverted = this.getAutoCompleter().revert(this.input); - if (reverted) - cancelEvent(event); - } - else if (event.charCode && this.advanceToNext(this.target, event.charCode)) - { - Firebug.Editor.tabNextEditor(); - cancelEvent(event); - } - else - { - if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57) - && event.charCode != 45 && event.charCode != 46) - FBL.cancelEvent(event); - else - { - // If the user backspaces, don't autocomplete after the upcoming input event - this.ignoreNextInput = event.keyCode == 8; - } - } - }, - - onOverflow: function() - { - this.updateLayout(false, false, 3); - }, - - onKeyDown: function(event) - { - //console.log("onKeyDown", event.keyCode); - if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8) - { - this.keyDownPressed = true; - } - }, - - onInput: function(event) - { - //debugger; - - // skip not relevant onpropertychange calls on IE - if (isIE) - { - if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) - return; - - this.keyDownPressed = false; - } - - //console.log("onInput", event); - //console.trace(); - - var selectRangeCallback; - - if (this.ignoreNextInput) - { - this.ignoreNextInput = false; - this.getAutoCompleter().reset(); - } - else if (this.completeAsYouType) - selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false); - else - this.getAutoCompleter().reset(); - - Firebug.Editor.update(); - - if (selectRangeCallback) - { - // We need to select the editor text after calling update in Safari/Chrome, - // otherwise the text won't be selected - if (isSafari) - setTimeout(selectRangeCallback,0); - else - selectRangeCallback(); - } - }, - - onContextMenu: function(event) - { - cancelEvent(event); - - var popup = $("fbInlineEditorPopup"); - FBL.eraseNode(popup); - - var target = event.target || event.srcElement; - var menu = this.getContextMenuItems(target); - if (menu) - { - for (var i = 0; i < menu.length; ++i) - FBL.createMenuItem(popup, menu[i]); - } - - if (!popup.firstChild) - return false; - - popup.openPopupAtScreen(event.screenX, event.screenY, true); - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - updateLayout: function(initial, forceAll, extraWidth) - { - if (this.fixedWidth) - { - this.box.style.left = (this.targetOffset.x) + "px"; - this.box.style.top = (this.targetOffset.y) + "px"; - - var w = this.target.offsetWidth; - var h = this.target.offsetHeight; - this.input.style.width = w + "px"; - this.input.style.height = (h-3) + "px"; - } - else - { - if (initial || forceAll) - { - this.box.style.left = this.targetOffset.x + "px"; - this.box.style.top = this.targetOffset.y + "px"; - } - - var approxTextWidth = this.textSize.width; - var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x) - - this.outerMargin; - - var wrapped = initial - ? this.noWrap && this.targetSize.height > this.textSize.height+3 - : this.noWrap && approxTextWidth > maxWidth; - - if (wrapped) - { - var style = isIE ? - this.target.currentStyle : - this.target.ownerDocument.defaultView.getComputedStyle(this.target, ""); - - targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight); - - // Make the width fit the remaining x-space from the offset to the far right - approxTextWidth = maxWidth - targetMargin; - - this.input.style.width = "100%"; - this.box.style.width = approxTextWidth + "px"; - } - else - { - // Make the input one character wider than the text value so that - // typing does not ever cause the textbox to scroll - var charWidth = this.measureInputText('m').width; - - // Sometimes we need to make the editor a little wider, specifically when - // an overflow happens, otherwise it will scroll off some text on the left - if (extraWidth) - charWidth *= extraWidth; - - var inputWidth = approxTextWidth + charWidth; - - if (initial) - { - if (isIE) - { - // TODO: xxxpedro - var xDiff = 13; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - else - this.box.style.width = "auto"; - } - else - { - // TODO: xxxpedro - var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth; - this.box.style.width = (inputWidth + xDiff) + "px"; - } - - this.input.style.width = inputWidth + "px"; - } - - this.expander.style.width = approxTextWidth + "px"; - this.expander.style.height = Math.max(this.textSize.height-3,0) + "px"; - } - - if (forceAll) - scrollIntoCenterView(this.box, null, true); - } -}); - -// ************************************************************************************************ -// Autocompletion - -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive) -{ - var candidates = null; - var originalValue = null; - var originalOffset = -1; - var lastExpr = null; - var lastOffset = -1; - var exprOffset = 0; - var lastIndex = 0; - var preParsed = null; - var preExpr = null; - var postExpr = null; - - this.revert = function(textBox) - { - if (originalOffset != -1) - { - textBox.value = originalValue; - - setSelectionRange(textBox, originalOffset, originalOffset); - - this.reset(); - return true; - } - else - { - this.reset(); - return false; - } - }; - - this.reset = function() - { - candidates = null; - originalValue = null; - originalOffset = -1; - lastExpr = null; - lastOffset = 0; - exprOffset = 0; - }; - - this.complete = function(context, textBox, cycle, reverse) - { - //console.log("complete", context, textBox, cycle, reverse); - // TODO: xxxpedro important port to firebug (variable leak) - //var value = lastValue = textBox.value; - var value = textBox.value; - - //var offset = textBox.selectionStart; - var offset = getInputSelectionStart(textBox); - - // The result of selectionStart() in Safari/Chrome is 1 unit less than the result - // in Firefox. Therefore, we need to manually adjust the value here. - if (isSafari && !cycle && offset >= 0) offset++; - - if (!selectMode && originalOffset != -1) - offset = originalOffset; - - if (!candidates || !cycle || offset != lastOffset) - { - originalOffset = offset; - originalValue = value; - - // Find the part of the string that will be parsed - var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0; - preParsed = value.substr(0, parseStart); - var parsed = value.substr(parseStart); - - // Find the part of the string that is being completed - var range = getRange ? getRange(parsed, offset-parseStart, context) : null; - if (!range) - range = {start: 0, end: parsed.length-1 }; - - var expr = parsed.substr(range.start, range.end-range.start+1); - preExpr = parsed.substr(0, range.start); - postExpr = parsed.substr(range.end+1); - exprOffset = parseStart + range.start; - - if (!cycle) - { - if (!expr) - return; - else if (lastExpr && lastExpr.indexOf(expr) != 0) - { - candidates = null; - } - else if (lastExpr && lastExpr.length >= expr.length) - { - candidates = null; - lastExpr = expr; - return; - } - } - - lastExpr = expr; - lastOffset = offset; - - var searchExpr; - - // Check if the cursor is at the very right edge of the expression, or - // somewhere in the middle of it - if (expr && offset != parseStart+range.end+1) - { - if (cycle) - { - // We are in the middle of the expression, but we can - // complete by cycling to the next item in the values - // list after the expression - offset = range.start; - searchExpr = expr; - expr = ""; - } - else - { - // We can't complete unless we are at the ridge edge - return; - } - } - - var values = evaluator(preExpr, expr, postExpr, context); - if (!values) - return; - - if (expr) - { - // Filter the list of values to those which begin with expr. We - // will then go on to complete the first value in the resulting list - candidates = []; - - if (caseSensitive) - { - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.indexOf(expr) == 0) - candidates.push(name); - } - } - else - { - var lowerExpr = caseSensitive ? expr : expr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0) - candidates.push(name); - } - } - - lastIndex = reverse ? candidates.length-1 : 0; - } - else if (searchExpr) - { - var searchIndex = -1; - - // Find the first instance of searchExpr in the values list. We - // will then complete the string that is found - if (caseSensitive) - { - searchIndex = values.indexOf(expr); - } - else - { - var lowerExpr = searchExpr.toLowerCase(); - for (var i = 0; i < values.length; ++i) - { - var name = values[i]; - if (name && name.toLowerCase().indexOf(lowerExpr) == 0) - { - searchIndex = i; - break; - } - } - } - - // Nothing found, so there's nothing to complete to - if (searchIndex == -1) - return this.reset(); - - expr = searchExpr; - candidates = cloneArray(values); - lastIndex = searchIndex; - } - else - { - expr = ""; - candidates = []; - for (var i = 0; i < values.length; ++i) - { - if (values[i].substr) - candidates.push(values[i]); - } - lastIndex = -1; - } - } - - if (cycle) - { - expr = lastExpr; - lastIndex += reverse ? -1 : 1; - } - - if (!candidates.length) - return; - - if (lastIndex >= candidates.length) - lastIndex = 0; - else if (lastIndex < 0) - lastIndex = candidates.length-1; - - var completion = candidates[lastIndex]; - var preCompletion = expr.substr(0, offset-exprOffset); - var postCompletion = completion.substr(offset-exprOffset); - - textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr; - var offsetEnd = preParsed.length + preExpr.length + completion.length; - - // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange() - // is working well. - /* - if (textBox.setSelectionRange) - { - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - setTimeout(function(){ - if (selectMode) - textBox.setSelectionRange(offset, offsetEnd); - else - textBox.setSelectionRange(offsetEnd, offsetEnd); - },0); - } - /**/ - - // we must select the range with a timeout, otherwise the text won't - // be properly selected (because after this function executes, the editor's - // input will be resized to fit the whole text) - /* - setTimeout(function(){ - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - },0); - - return true; - /**/ - - // The editor text should be selected only after calling the editor.update() - // in Safari/Chrome, otherwise the text won't be selected. So, we're returning - // a function to be called later (in the proper time for all browsers). - // - // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid - // returning a closure. the complete() function seems to be called only twice in - // editor.js. See if this function is called anywhere else (like css.js for example). - return function(){ - //console.log("autocomplete ", textBox, offset, offsetEnd); - - if (selectMode) - setSelectionRange(textBox, offset, offsetEnd); - else - setSelectionRange(textBox, offsetEnd, offsetEnd); - }; - /**/ - }; -}; - -// ************************************************************************************************ -// Local Helpers - -var getDefaultEditor = function getDefaultEditor(panel) -{ - if (!defaultEditor) - { - var doc = panel.document; - defaultEditor = new Firebug.InlineEditor(doc); - } - - return defaultEditor; -} - -/** - * An outsider is the first element matching the stepper element that - * is not an child of group. Elements tagged with insertBefore or insertAfter - * classes are also excluded from these results unless they are the sibling - * of group, relative to group's parent editGroup. This allows for the proper insertion - * rows when groups are nested. - */ -var getOutsider = function getOutsider(element, group, stepper) -{ - var parentGroup = getAncestorByClass(group.parentNode, "editGroup"); - var next; - do - { - next = stepper(next || element); - } - while (isAncestor(next, group) || isGroupInsert(next, parentGroup)); - - return next; -} - -var isGroupInsert = function isGroupInsert(next, group) -{ - return (!group || isAncestor(next, group)) - && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter")); -} - -var getNextOutsider = function getNextOutsider(element, group) -{ - return getOutsider(element, group, bind(getNextByClass, FBL, "editable")); -} - -var getPreviousOutsider = function getPreviousOutsider(element, group) -{ - return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable")); -} - -var getInlineParent = function getInlineParent(element) -{ - var lastInline = element; - for (; element; element = element.parentNode) - { - //var s = element.ownerDocument.defaultView.getComputedStyle(element, ""); - var s = isIE ? - element.currentStyle : - element.ownerDocument.defaultView.getComputedStyle(element, ""); - - if (s.display != "inline") - return lastInline; - else - lastInline = element; - } - return null; -} - -var insertTab = function insertTab() -{ - insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter); -} - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.Editor); - -// ************************************************************************************************ - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/highlighter.css b/branches/firebug1.5/content/firebug1.4/highlighter.css deleted file mode 100644 index df55b1f6..00000000 --- a/branches/firebug1.5/content/firebug1.4/highlighter.css +++ /dev/null @@ -1,117 +0,0 @@ -/* See license.txt for terms of usage */ - -.firebugHighlight { - z-index: 2147483647; - position: absolute; - background-color: #3875d7; -} - -.firebugLayoutBoxParent { - z-index: 2147483647; - position: absolute; - background-color: transparent; - border-right: 1px dashed #BBBBBB; - border-bottom: 1px dashed #BBBBBB; -} - -.firebugRulerH { - position: absolute; - top: -15px; - left: 0; - width: 100%; - height: 14px; - background: url(chrome://firebug/skin/rulerH.png) repeat-x; - border-top: 1px solid #BBBBBB; - border-right: 1px dashed #BBBBBB; - border-bottom: 1px solid #000000; -} - -.firebugRulerV { - position: absolute; - top: 0; - left: -15px; - width: 14px; - height: 100%; - background: url(chrome://firebug/skin/rulerV.png) repeat-y; - border-left: 1px solid #BBBBBB; - border-right: 1px solid #000000; - border-bottom: 1px dashed #BBBBBB; -} - -.overflowRulerX > .firebugRulerV { - left: 0; -} - -.overflowRulerY > .firebugRulerH { - top: 0; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.firebugLayoutBoxOffset { - z-index: 2147483647; - position: absolute; - opacity: 0.8; -} - -.firebugLayoutBoxMargin { - background-color: #EDFF64; -} - -.firebugLayoutBoxBorder { - background-color: #666666; -} - -.firebugLayoutBoxPadding { - background-color: SlateBlue; -} - -.firebugLayoutBoxContent { - background-color: SkyBlue; -} - -/*.firebugHighlightGroup .firebugLayoutBox { - background-color: transparent; -} - -.firebugHighlightBox { - background-color: Blue !important; -}*/ - -.firebugLayoutLine { - z-index: 2147483647; - background-color: #000000; - opacity: 0.4; -} - -.firebugLayoutLineLeft, -.firebugLayoutLineRight { - position: fixed; - width: 1px; - height: 100%; -} - -.firebugLayoutLineTop, -.firebugLayoutLineBottom { - position: absolute; - width: 100%; - height: 1px; -} - -.firebugLayoutLineTop { - margin-top: -1px; - border-top: 1px solid #999999; -} - -.firebugLayoutLineRight { - border-right: 1px solid #999999; -} - -.firebugLayoutLineBottom { - border-bottom: 1px solid #999999; -} - -.firebugLayoutLineLeft { - margin-left: -1px; - border-left: 1px solid #999999; -} diff --git a/branches/firebug1.5/content/firebug1.4/html.js b/branches/firebug1.5/content/firebug1.4/html.js deleted file mode 100644 index 3a9f8107..00000000 --- a/branches/firebug1.5/content/firebug1.4/html.js +++ /dev/null @@ -1,781 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Globals - -var ElementCache = Firebug.Lite.Cache.Element; -var cacheID = Firebug.Lite.Cache.ID; - -var ignoreHTMLProps = -{ - // ignores the attributes injected by Sizzle, otherwise it will - // be visible on IE (when enumerating element.attributes) - sizcache: 1, - sizset: 1 -}; - -// ignores also the cache property injected by firebug -ignoreHTMLProps[cacheID] = 1; - - -// ************************************************************************************************ -// HTML Module - -Firebug.HTML = extend(Firebug.Module, -{ - appendTreeNode: function(nodeArray, html) - { - var reTrim = /^\s+|\s+$/g; - - if (!nodeArray.length) nodeArray = [nodeArray]; - - for (var n=0, node; node=nodeArray[n]; n++) - { - if (node.nodeType == 1) - { - if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue; - - var uid = ElementCache(node); - var child = node.childNodes; - var childLength = child.length; - - var nodeName = node.nodeName.toLowerCase(); - - var nodeVisible = isVisible(node); - - var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 && - nodeName != "script" && nodeName != "style"; - - var nodeControl = !hasSingleTextChild && childLength > 0 ? - ('
                                ') : ''; - - var isIE = false; - - if(isIE && nodeControl) - html.push(nodeControl); - - if (typeof uid != 'undefined') - html.push( - '
                                ', - !isIE && nodeControl ? nodeControl: "", - '<', nodeName, '' - ); - else - html.push( - '
                                <', - nodeName, '' - ); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || Firebug.ignoreFirebugElements && - ignoreHTMLProps.hasOwnProperty(attr.nodeName)) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - /* - // source code nodes - if (nodeName == 'script' || nodeName == 'style') - { - - if(document.all){ - var src = node.innerHTML+'\n'; - - }else { - var src = '\n'+node.innerHTML+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + '
                                '; - } - - html.push('>
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ', - '
                                </', - nodeName, - '>
                                ', - '
                                ' - ); - - - }/**/ - - // Just a single text node child - if (hasSingleTextChild) - { - var value = child[0].nodeValue.replace(reTrim, ''); - if(value) - { - html.push( - '>', - escapeHTML(value), - '</', - nodeName, - '>' - ); - } - else - html.push('/>'); // blank text, print as childless node - - } - else if (childLength > 0) - { - html.push('>'); - } - else - html.push('/>'); - - } - else if (node.nodeType == 3) - { - if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" || - node.parentNode.nodeName.toLowerCase() == "style" ) ) - { - var value = node.nodeValue.replace(reTrim, ''); - - if(isIE){ - var src = value+'\n'; - - }else { - var src = '\n'+value+'\n'; - } - - var match = src.match(/\n/g); - var num = match ? match.length : 0; - var s = [], sl = 0; - - for(var c=1; c' + c + ''; - } - - html.push('
                                ', - s.join(''), - '
                                ',
                                -                            escapeHTML(src),
                                -                            '
                                ' - ); - - } - else - { - var value = node.nodeValue.replace(reTrim, ''); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - } - } - }, - - appendTreeChildren: function(treeNode) - { - var doc = Firebug.chrome.document; - var uid = treeNode.id; - var parentNode = ElementCache.get(uid); - - if (parentNode.childNodes.length == 0) return; - - var treeNext = treeNode.nextSibling; - var treeParent = treeNode.parentNode; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl nodeMaximized'; - - var html = []; - var children = doc.createElement("div"); - children.className = "nodeChildren"; - this.appendTreeNode(parentNode.childNodes, html); - children.innerHTML = html.join(""); - - treeParent.insertBefore(children, treeNext); - - var closeElement = doc.createElement("div"); - closeElement.className = "objectBox-element"; - closeElement.innerHTML = '</' + - parentNode.nodeName.toLowerCase() + '>' - - treeParent.insertBefore(closeElement, treeNext); - - }, - - removeTreeChildren: function(treeNode) - { - var children = treeNode.nextSibling; - var closeTag = children.nextSibling; - - var isIE = false; - var control = isIE ? treeNode.previousSibling : treeNode.firstChild; - control.className = 'nodeControl'; - - children.parentNode.removeChild(children); - closeTag.parentNode.removeChild(closeTag); - }, - - isTreeNodeVisible: function(id) - { - return $(id); - }, - - select: function(el) - { - var id = el && ElementCache(el); - if (id) - this.selectTreeNode(id); - }, - - selectTreeNode: function(id) - { - id = ""+id; - var node, stack = []; - while(id && !this.isTreeNodeVisible(id)) - { - stack.push(id); - - var node = ElementCache.get(id).parentNode; - - if (node) - id = ElementCache(node); - else - break; - } - - stack.push(id); - - while(stack.length > 0) - { - id = stack.pop(); - node = $(id); - - if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0) - this.appendTreeChildren(node); - } - - selectElement(node); - - // TODO: xxxpedro - if (fbPanel1) - fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2); - } - -}); - -Firebug.registerModule(Firebug.HTML); - -// ************************************************************************************************ -// HTML Panel - -function HTMLPanel(){}; - -HTMLPanel.prototype = extend(Firebug.Panel, -{ - name: "HTML", - title: "HTML", - - options: { - hasSidePanel: true, - //hasToolButtons: true, - isPreRendered: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.panelNode.style.padding = "4px 3px 1px 15px"; - this.panelNode.style.minWidth = "500px"; - - if (Env.Options.enablePersistent || Firebug.chrome.type != "popup") - this.createUI(); - - if(!this.sidePanelBar.selectedPanel) - { - this.sidePanelBar.selectPanel("css"); - } - }, - - destroy: function() - { - selectedElement = null - fbPanel1 = null; - - selectedSidePanelTS = null; - selectedSidePanelTimer = null; - - Firebug.Panel.destroy.apply(this, arguments); - }, - - createUI: function() - { - var rootNode = Firebug.browser.document.documentElement; - var html = []; - Firebug.HTML.appendTreeNode(rootNode, html); - - this.panelNode.innerHTML = html.join(""); - }, - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = $("fbPanel1"); - - if(!selectedElement) - { - Firebug.HTML.selectTreeNode(ElementCache(Firebug.browser.document.body)); - } - - // TODO: xxxpedro - addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - }, - - shutdown: function() - { - // TODO: xxxpedro - removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove); - removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove); - removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove); - - removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick); - - fbPanel1 = null; - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - reattach: function() - { - // TODO: panel reattach - if(FirebugChrome.selectedHTMLElementId) - Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId); - }, - - updateSelection: function(object) - { - var id = ElementCache(object); - - if (id) - { - Firebug.HTML.selectTreeNode(id); - } - } -}); - -Firebug.registerPanel(HTMLPanel); - -// ************************************************************************************************ - -var formatStyles = function(styles) -{ - return isIE ? - // IE return CSS property names in upper case, so we need to convert them - styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) : - // other browsers are just fine - styles; -}; - -// ************************************************************************************************ - -var selectedElement = null -var fbPanel1 = null; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -var selectedSidePanelTS, selectedSidePanelTimer; - -var selectElement= function selectElement(e) -{ - if (e != selectedElement) - { - if (selectedElement) - selectedElement.className = "objectBox-element"; - - e.className = e.className + " selectedElement"; - - if (FBL.isFirefox) - e.style.MozBorderRadius = "2px"; - - else if (FBL.isSafari) - e.style.WebkitBorderRadius = "2px"; - - selectedElement = e; - - FirebugChrome.selectedHTMLElementId = e.id; - - var target = ElementCache.get(e.id); - var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel; - - var stack = FirebugChrome.htmlSelectionStack; - - stack.unshift(target); - - if (stack.length > 2) - stack.pop(); - - var lazySelect = function() - { - selectedSidePanelTS = new Date().getTime(); - - selectedSidePanel.select(target, true); - }; - - if (selectedSidePanelTimer) - { - clearTimeout(selectedSidePanelTimer); - selectedSidePanelTimer = null; - } - - if (new Date().getTime() - selectedSidePanelTS > 100) - setTimeout(lazySelect, 0) - else - selectedSidePanelTimer = setTimeout(lazySelect, 150); - } -} - - -// ************************************************************************************************ -// *** TODO: REFACTOR ************************************************************************** -// ************************************************************************************************ -Firebug.HTML.onTreeClick = function (e) -{ - e = e || event; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - - if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag') - { - var isIE = false; - - if(targ.className == 'nodeTag') - { - var control = isIE ? (targ.parentNode.previousSibling || targ) : - (targ.parentNode.previousSibling || targ); - - selectElement(targ.parentNode.parentNode); - - if (control.className.indexOf('nodeControl') == -1) - return; - - } else - control = targ; - - FBL.cancelEvent(e); - - var treeNode = isIE ? control.nextSibling : control.parentNode; - - //FBL.Firebug.Console.log(treeNode); - - if (control.className.indexOf(' nodeMaximized') != -1) { - FBL.Firebug.HTML.removeTreeChildren(treeNode); - } else { - FBL.Firebug.HTML.appendTreeChildren(treeNode); - } - } - else if (targ.className == 'nodeValue' || targ.className == 'nodeName') - { - /* - var input = FBL.Firebug.chrome.document.getElementById('treeInput'); - - input.style.display = "block"; - input.style.left = targ.offsetLeft + 'px'; - input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px'; - input.style.width = targ.offsetWidth + 6 + 'px'; - input.value = targ.textContent || targ.innerText; - input.focus(); - /**/ - } -} - -function onListMouseOut(e) -{ - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - if (hasClass(targ, "fbPanel")) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - } -}; - -var hoverElement = null; -var hoverElementTS = 0; - -Firebug.HTML.onListMouseMove = function onListMouseMove(e) -{ - try - { - e = e || event || window; - var targ; - - if (e.target) targ = e.target; - else if (e.srcElement) targ = e.srcElement; - if (targ.nodeType == 3) // defeat Safari bug - targ = targ.parentNode; - - var found = false; - while (targ && !found) { - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) - targ = targ.parentNode; - else - found = true; - } - - if (!targ) - { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - /* - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - /**/ - - if (typeof targ.attributes[cacheID] == 'undefined') return; - - var uid = targ.attributes[cacheID]; - if (!uid) return; - - var el = ElementCache.get(uid.value); - - var nodeName = el.nodeName.toLowerCase(); - - if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1) - return; - - if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return; - - if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { - FBL.Firebug.Inspector.hideBoxModel(); - hoverElement = null; - return; - } - - if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) { - hoverElementTS = new Date().getTime(); - hoverElement = el; - FBL.Firebug.Inspector.drawBoxModel(el); - } - } - catch(E) - { - } -} - - -// ************************************************************************************************ - -Firebug.Reps = { - - appendText: function(object, html) - { - html.push(escapeHTML(objectToString(object))); - }, - - appendNull: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendString: function(object, html) - { - html.push('"', escapeHTML(objectToString(object)), - '"'); - }, - - appendInteger: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFloat: function(object, html) - { - html.push('', escapeHTML(objectToString(object)), ''); - }, - - appendFunction: function(object, html) - { - var reName = /function ?(.*?)\(/; - var m = reName.exec(objectToString(object)); - var name = m && m[1] ? m[1] : "function"; - html.push('', escapeHTML(name), '()'); - }, - - appendObject: function(object, html) - { - /* - var rep = Firebug.getRep(object); - var outputs = []; - - rep.tag.tag.compile(); - - var str = rep.tag.renderHTML({object: object}, outputs); - html.push(str); - /**/ - - try - { - if (object == undefined) - this.appendNull("undefined", html); - else if (object == null) - this.appendNull("null", html); - else if (typeof object == "string") - this.appendString(object, html); - else if (typeof object == "number") - this.appendInteger(object, html); - else if (typeof object == "boolean") - this.appendInteger(object, html); - else if (typeof object == "function") - this.appendFunction(object, html); - else if (object.nodeType == 1) - this.appendSelector(object, html); - else if (typeof object == "object") - { - if (typeof object.length != "undefined") - this.appendArray(object, html); - else - this.appendObjectFormatted(object, html); - } - else - this.appendText(object, html); - } - catch (exc) - { - } - /**/ - }, - - appendObjectFormatted: function(object, html) - { - var text = objectToString(object); - var reObject = /\[object (.*?)\]/; - - var m = reObject.exec(text); - html.push('', m ? m[1] : text, '') - }, - - appendSelector: function(object, html) - { - var uid = ElementCache(object); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push(''); - - html.push('', escapeHTML(object.nodeName.toLowerCase()), ''); - if (object.id) - html.push('#', escapeHTML(object.id), ''); - if (object.className) - html.push('.', escapeHTML(object.className), ''); - - html.push(''); - }, - - appendNode: function(node, html) - { - if (node.nodeType == 1) - { - var uid = ElementCache(node); - var uidString = uid ? [cacheID, '="', uid, '"'].join("") : ""; - - html.push( - '
                                ', - '', - '<', node.nodeName.toLowerCase(), ''); - - for (var i = 0; i < node.attributes.length; ++i) - { - var attr = node.attributes[i]; - if (!attr.specified || attr.nodeName == cacheID) - continue; - - var name = attr.nodeName.toLowerCase(); - var value = name == "style" ? node.style.cssText : attr.nodeValue; - - html.push(' ', name, - '="', escapeHTML(value), - '"') - } - - if (node.firstChild) - { - html.push('>
                                '); - - for (var child = node.firstChild; child; child = child.nextSibling) - this.appendNode(child, html); - - html.push('
                                </', - node.nodeName.toLowerCase(), '>
                                '); - } - else - html.push('/>'); - } - else if (node.nodeType == 3) - { - var value = trim(node.nodeValue); - if (value) - html.push('
                                ', escapeHTML(value),'
                                '); - } - }, - - appendArray: function(object, html) - { - html.push('[ '); - - for (var i = 0, l = object.length, obj; i < l; ++i) - { - this.appendObject(object[i], html); - - if (i < l-1) - html.push(', '); - } - - html.push(' ]'); - } - -}; - - - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/i18n.js b/branches/firebug1.5/content/firebug1.4/i18n.js deleted file mode 100644 index dbe2dd56..00000000 --- a/branches/firebug1.5/content/firebug1.4/i18n.js +++ /dev/null @@ -1,126 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-i18n */ function() { with (FBL) { -// ************************************************************************************************ - -// TODO: xxxpedro localization -var oSTR = -{ - "NoMembersWarning": "There are no properties to show for this object.", - - "EmptyStyleSheet": "There are no rules in this stylesheet.", - "EmptyElementCSS": "This element has no style rules.", - "AccessRestricted": "Access to restricted URI denied.", - - "net.label.Parameters": "Parameters", - "net.label.Source": "Source", - "URLParameters": "Params", - - "EditStyle": "Edit Element Style...", - "NewRule": "New Rule...", - - "NewProp": "New Property...", - "EditProp": 'Edit "%s"', - "DeleteProp": 'Delete "%s"', - "DisableProp": 'Disable "%s"' -}; - -// ************************************************************************************************ - -FBL.$STR = function(name) -{ - return oSTR.hasOwnProperty(name) ? oSTR[name] : name; -}; - -FBL.$STRF = function(name, args) -{ - if (!oSTR.hasOwnProperty(name)) return name; - - var format = oSTR[name]; - var objIndex = 0; - - var parts = parseFormat(format); - var trialIndex = objIndex; - var objects = args; - - for (var i= 0; i < parts.length; i++) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - if (++trialIndex > objects.length) // then too few parameters for format, assume unformatted. - { - format = ""; - objIndex = -1; - parts.length = 0; - break; - } - } - - } - - var result = []; - for (var i = 0; i < parts.length; ++i) - { - var part = parts[i]; - if (part && typeof(part) == "object") - { - result.push(""+args.shift()); - } - else - result.push(part); - } - - return result.join(""); -}; - -// ************************************************************************************************ - -var parseFormat = function parseFormat(format) -{ - var parts = []; - if (format.length <= 0) - return parts; - - var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/; - for (var m = reg.exec(format); m; m = reg.exec(format)) - { - if (m[0].substr(0, 2) == "%%") - { - parts.push(format.substr(0, m.index)); - parts.push(m[0].substr(1)); - } - else - { - var type = m[8] ? m[8] : m[5]; - var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0); - - var rep = null; - switch (type) - { - case "s": - rep = FirebugReps.Text; - break; - case "f": - case "i": - case "d": - rep = FirebugReps.Number; - break; - case "o": - rep = null; - break; - } - - parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1)); - parts.push({rep: rep, precision: precision, type: ("%" + type)}); - } - - format = format.substr(m.index+m[0].length); - } - - parts.push(format); - return parts; -}; - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/infotip.js b/branches/firebug1.5/content/firebug1.4/infotip.js deleted file mode 100644 index 680efd9f..00000000 --- a/branches/firebug1.5/content/firebug1.4/infotip.js +++ /dev/null @@ -1,369 +0,0 @@ -/* See license.txt for terms of usage */ - -/* - -Hack: -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; -Firebug.showInfoTips = true; -Firebug.InfoTip.initializeBrowser(Firebug.chrome); - -/**/ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var maxWidth = 100, maxHeight = 80; -var infoTipMargin = 10; -var infoTipWindowPadding = 25; - -// ************************************************************************************************ - -Firebug.InfoTip = extend(Firebug.Module, -{ - dispatchName: "infoTip", - tags: domplate( - { - infoTipTag: DIV({"class": "infoTip"}), - - colorTag: - DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, " "), - - imgTag: - DIV({"class": "infoTipImageBox infoTipLoading"}, - IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat", - onload: "$onLoadImage"}), - IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}), - DIV({"class": "infoTipCaption"}) - ), - - onLoadImage: function(event) - { - var img = event.currentTarget || event.srcElement; - ///var bgImg = img.nextSibling; - ///if (!bgImg) - /// return; // Sometimes gets called after element is dead - - ///var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - /// TODO: xxxpedro infoTip hack - var caption = getElementByClass(innerBox, "infoTipCaption"); - var bgImg = getElementByClass(innerBox, "infoTipBgImage"); - if (!bgImg) - return; // Sometimes gets called after element is dead - - // TODO: xxxpedro infoTip IE and timing issue - // TODO: use offline document to avoid flickering - if (isIE) - removeClass(innerBox, "infoTipLoading"); - - var updateInfoTip = function(){ - - var w = img.naturalWidth || img.width || 10, - h = img.naturalHeight || img.height || 10; - - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - //caption.innerHTML = $STRF("Dimensions", [w, h]); - caption.innerHTML = $STRF(w + " x " + h); - - - }; - - if (isIE) - setTimeout(updateInfoTip, 0); - else - { - updateInfoTip(); - removeClass(innerBox, "infoTipLoading"); - } - - /// - } - - /* - /// onLoadImage original - onLoadImage: function(event) - { - var img = event.currentTarget; - var bgImg = img.nextSibling; - if (!bgImg) - return; // Sometimes gets called after element is dead - - var caption = bgImg.nextSibling; - var innerBox = img.parentNode; - - var w = img.naturalWidth, h = img.naturalHeight; - var repeat = img.getAttribute("repeat"); - - if (repeat == "repeat-x" || (w == 1 && h > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-x"; - bgImg.style.width = maxWidth + "px"; - if (h > maxHeight) - bgImg.style.height = maxHeight + "px"; - else - bgImg.style.height = h + "px"; - } - else if (repeat == "repeat-y" || (h == 1 && w > 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat-y"; - bgImg.style.height = maxHeight + "px"; - if (w > maxWidth) - bgImg.style.width = maxWidth + "px"; - else - bgImg.style.width = w + "px"; - } - else if (repeat == "repeat" || (w == 1 && h == 1)) - { - collapse(img, true); - collapse(bgImg, false); - bgImg.style.background = "url(" + img.src + ") repeat"; - bgImg.style.width = maxWidth + "px"; - bgImg.style.height = maxHeight + "px"; - } - else - { - if (w > maxWidth || h > maxHeight) - { - if (w > h) - { - img.style.width = maxWidth + "px"; - img.style.height = Math.round((h / w) * maxWidth) + "px"; - } - else - { - img.style.width = Math.round((w / h) * maxHeight) + "px"; - img.style.height = maxHeight + "px"; - } - } - } - - caption.innerHTML = $STRF("Dimensions", [w, h]); - - removeClass(innerBox, "infoTipLoading"); - } - /**/ - - }), - - initializeBrowser: function(browser) - { - browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser); - browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser); - - ///var doc = browser.contentDocument; - var doc = browser.document; - if (!doc) - return; - - ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true); - addEvent(doc, "mouseover", browser.onInfoTipMouseMove); - addEvent(doc, "mouseout", browser.onInfoTipMouseOut); - addEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc)); - }, - - uninitializeBrowser: function(browser) - { - if (browser.infoTip) - { - ///var doc = browser.contentDocument; - var doc = browser.document; - ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true); - ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true); - ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true); - removeEvent(doc, "mouseover", browser.onInfoTipMouseMove); - removeEvent(doc, "mouseout", browser.onInfoTipMouseOut); - removeEvent(doc, "mousemove", browser.onInfoTipMouseMove); - - browser.infoTip.parentNode.removeChild(browser.infoTip); - delete browser.infoTip; - delete browser.onInfoTipMouseMove; - } - }, - - showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset) - { - if (!Firebug.showInfoTips) - return; - - var scrollParent = getOverflowParent(target); - var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0); - - if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset)) - { - var htmlElt = infoTip.ownerDocument.documentElement; - var panelWidth = htmlElt.clientWidth; - var panelHeight = htmlElt.clientHeight; - - if (x+infoTip.offsetWidth+infoTipMargin > panelWidth) - { - infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px"; - infoTip.style.right = "auto"; - } - else - { - infoTip.style.left = (x+infoTipMargin) + "px"; - infoTip.style.right = "auto"; - } - - if (y+infoTip.offsetHeight+infoTipMargin > panelHeight) - { - infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px"; - infoTip.style.bottom = "auto"; - } - else - { - infoTip.style.top = (y+infoTipMargin) + "px"; - infoTip.style.bottom = "auto"; - } - - if (FBTrace.DBG_INFOTIP) - FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top + - ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom + - ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight + - ", offsetWidth: " + infoTip.offsetWidth + - ", x: " + x + ", panelWidth: " + panelWidth + - ", y: " + y + ", panelHeight: " + panelHeight); - - infoTip.setAttribute("active", "true"); - } - else - this.hideInfoTip(infoTip); - }, - - hideInfoTip: function(infoTip) - { - if (infoTip) - infoTip.removeAttribute("active"); - }, - - onMouseOut: function(event, browser) - { - if (!event.relatedTarget) - this.hideInfoTip(browser.infoTip); - }, - - onMouseMove: function(event, browser) - { - // Ignore if the mouse is moving over the existing info tip. - if (getAncestorByClass(event.target, "infoTip")) - return; - - if (browser.currentPanel) - { - var x = event.clientX, y = event.clientY, target = event.target || event.srcElement; - this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset); - } - else - this.hideInfoTip(browser.infoTip); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - populateColorInfoTip: function(infoTip, color) - { - this.tags.colorTag.replace({rgbValue: color}, infoTip); - return true; - }, - - populateImageInfoTip: function(infoTip, url, repeat) - { - if (!repeat) - repeat = "no-repeat"; - - this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip); - - return true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - disable: function() - { - // XXXjoe For each browser, call uninitializeBrowser - }, - - showPanel: function(browser, panel) - { - if (panel) - { - var infoTip = panel.panelBrowser.infoTip; - if (!infoTip) - infoTip = this.initializeBrowser(panel.panelBrowser); - this.hideInfoTip(infoTip); - } - - }, - - showSidePanel: function(browser, panel) - { - this.showPanel(browser, panel); - } -}); - -// ************************************************************************************************ - -Firebug.registerModule(Firebug.InfoTip); - -// ************************************************************************************************ - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/insideOutBox.js b/branches/firebug1.5/content/firebug1.4/insideOutBox.js deleted file mode 100644 index 5f865d59..00000000 --- a/branches/firebug1.5/content/firebug1.4/insideOutBox.js +++ /dev/null @@ -1,561 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -/** - * View interface used to populate an InsideOutBox object. - * - * All views must implement this interface (directly or via duck typing). - */ -FBL.InsideOutBoxView = { - /** - * Retrieves the parent object for a given child object. - */ - getParentObject: function(child) {}, - - /** - * Retrieves a given child node. - * - * If both index and previousSibling are passed, the implementation - * may assume that previousSibling will be the return for getChildObject - * with index-1. - */ - getChildObject: function(parent, index, previousSibling) {}, - - /** - * Renders the HTML representation of the object. Should return an HTML - * object which will be displayed to the user. - */ - createObjectBox: function(object, isRoot) {} -}; - -/** - * Creates a tree based on objects provided by a separate "view" object. - * - * Construction uses an "inside-out" algorithm, meaning that the view's job is first - * to tell us the ancestry of each object, and secondarily its descendants. - */ -FBL.InsideOutBox = function(view, box) -{ - this.view = view; - this.box = box; - - this.rootObject = null; - - this.rootObjectBox = null; - this.selectedObjectBox = null; - this.highlightedObjectBox = null; - - this.onMouseDown = bind(this.onMouseDown, this); - - addEvent(box, "mousedown", this.onMouseDown); - // TODO: xxxpedro event - //box.addEventListener("mousedown", this.onMouseDown, false); -}; - -InsideOutBox.prototype = -{ - destroy: function() - { - removeEvent(box, "mousedown", this.onMouseDown); - // TODO: xxxpedro event - //this.box.removeEventListener("mousedown", this.onMouseDown, false); - }, - - highlight: function(object) - { - var objectBox = this.createObjectBox(object); - this.highlightObjectBox(objectBox); - return objectBox; - }, - - openObject: function(object) - { - var firstChild = this.view.getChildObject(object, 0); - if (firstChild) - object = firstChild; - - var objectBox = this.createObjectBox(object); - this.openObjectBox(objectBox); - return objectBox; - }, - - openToObject: function(object) - { - var objectBox = this.createObjectBox(object); - this.openObjectBox(objectBox); - return objectBox; - }, - - select: function(object, makeBoxVisible, forceOpen, noScrollIntoView) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.select object:", object); - var objectBox = this.createObjectBox(object); - this.selectObjectBox(objectBox, forceOpen); - if (makeBoxVisible) - { - this.openObjectBox(objectBox); - if (!noScrollIntoView) - scrollIntoCenterView(objectBox); - } - return objectBox; - }, - - expandObject: function(object) - { - var objectBox = this.createObjectBox(object); - if (objectBox) - this.expandObjectBox(objectBox); - }, - - contractObject: function(object) - { - var objectBox = this.createObjectBox(object); - if (objectBox) - this.contractObjectBox(objectBox); - }, - - highlightObjectBox: function(objectBox) - { - if (this.highlightedObjectBox) - { - removeClass(this.highlightedObjectBox, "highlighted"); - - var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox); - for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox)) - removeClass(highlightedBox, "highlightOpen"); - } - - this.highlightedObjectBox = objectBox; - - if (objectBox) - { - setClass(objectBox, "highlighted"); - - var highlightedBox = this.getParentObjectBox(objectBox); - for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox)) - setClass(highlightedBox, "highlightOpen"); - - scrollIntoCenterView(objectBox); - } - }, - - selectObjectBox: function(objectBox, forceOpen) - { - var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox; - if (!isSelected) - { - removeClass(this.selectedObjectBox, "selected"); - dispatch([Firebug.A11yModel], 'onObjectBoxUnselected', [this.selectedObjectBox]); - this.selectedObjectBox = objectBox; - - if (objectBox) - { - setClass(objectBox, "selected"); - - // Force it open the first time it is selected - if (forceOpen) - this.toggleObjectBox(objectBox, true); - } - } - dispatch([Firebug.A11yModel], 'onObjectBoxSelected', [objectBox]); - }, - - openObjectBox: function(objectBox) - { - if (objectBox) - { - // Set all of the node's ancestors to be permanently open - var parentBox = this.getParentObjectBox(objectBox); - var labelBox; - for (; parentBox; parentBox = this.getParentObjectBox(parentBox)) - { - setClass(parentBox, "open"); - labelBox = getElementByClass(parentBox, 'nodeLabelBox'); - if (labelBox) - labelBox.setAttribute('aria-expanded', 'true') - } - } - }, - - expandObjectBox: function(objectBox) - { - var nodeChildBox = this.getChildObjectBox(objectBox); - if (!nodeChildBox) - return; - - if (!objectBox.populated) - { - var firstChild = this.view.getChildObject(objectBox.repObject, 0); - this.populateChildBox(firstChild, nodeChildBox); - } - var labelBox = getElementByClass(objectBox, 'nodeLabelBox'); - if (labelBox) - labelBox.setAttribute('aria-expanded', 'true'); - setClass(objectBox, "open"); - }, - - contractObjectBox: function(objectBox) - { - removeClass(objectBox, "open"); - var nodeLabel = getElementByClass(objectBox, "nodeLabel"); - var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox'); - if (labelBox) - labelBox.setAttribute('aria-expanded', 'false'); - }, - - toggleObjectBox: function(objectBox, forceOpen) - { - var isOpen = hasClass(objectBox, "open"); - var nodeLabel = getElementByClass(objectBox, "nodeLabel"); - var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox'); - if (labelBox) - labelBox.setAttribute('aria-expanded', isOpen); - if (!forceOpen && isOpen) - this.contractObjectBox(objectBox); - - else if (!isOpen) - this.expandObjectBox(objectBox); - }, - - getNextObjectBox: function(objectBox) - { - return findNext(objectBox, isVisibleTarget, false, this.box); - }, - - getPreviousObjectBox: function(objectBox) - { - return findPrevious(objectBox, isVisibleTarget, true, this.box); - }, - - /** - * Creates all of the boxes for an object, its ancestors, and siblings. - */ - createObjectBox: function(object) - { - if (!object) - return null; - - this.rootObject = this.getRootNode(object); - - // Get or create all of the boxes for the target and its ancestors - var objectBox = this.createObjectBoxes(object, this.rootObject); - - if (FBTrace.DBG_HTML) - FBTrace.sysout("\n----\ninsideOutBox.createObjectBox for object="+formatNode(object)+" got objectBox="+formatNode(objectBox), objectBox); - if (!objectBox) - return null; - else if (object == this.rootObject) - return objectBox; - else - return this.populateChildBox(object, objectBox.parentNode); - }, - - /** - * Creates all of the boxes for an object, its ancestors, and siblings up to a root. - */ - createObjectBoxes: function(object, rootObject) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout("\n----\ninsideOutBox.createObjectBoxes("+formatNode(object)+", "+formatNode(rootObject)+")\n"); - if (!object) - return null; - - if (object == rootObject) - { - if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject) - { - if (this.rootObjectBox) - { - try { - this.box.removeChild(this.rootObjectBox); - } catch (exc) { - if (FBTrace.DBG_HTML) - FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+this.box+" must not contain "+this.rootObjectBox+"\n"); - } - } - - this.highlightedObjectBox = null; - this.selectedObjectBox = null; - this.rootObjectBox = this.view.createObjectBox(object, true); - this.box.appendChild(this.rootObjectBox); - } - if (FBTrace.DBG_HTML) - { - FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+formatNode(rootObject)+") rootObjectBox: " - +this.rootObjectBox, object); - } - return this.rootObjectBox; - } - else - { - var parentNode = this.view.getParentObject(object); - - if (FBTrace.DBG_HTML) - { - FBTrace.sysout("insideOutBox.createObjectBoxes getObjectPath(object) ", getObjectPath(object, this.view)) - FBTrace.sysout("insideOutBox.createObjectBoxes view.getParentObject("+formatNode(object)+")=parentNode: "+formatNode(parentNode), parentNode); - } - - var parentObjectBox = this.createObjectBoxes(parentNode, rootObject); - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+formatNode(parentObjectBox), parentObjectBox); - if (!parentObjectBox) - return null; - - var parentChildBox = this.getChildObjectBox(parentObjectBox); - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+formatNode(parentObjectBox)+")= parentChildBox: "+formatNode(parentChildBox)+"\n"); - if (!parentChildBox) - return null; - - var childObjectBox = this.findChildObjectBox(parentChildBox, object); - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+formatNode(parentChildBox)+","+formatNode(object)+"): childObjectBox: "+formatNode(childObjectBox), childObjectBox); - return childObjectBox - ? childObjectBox - : this.populateChildBox(object, parentChildBox); - } - }, - - findObjectBox: function(object) - { - if (!object) - return null; - - if (object == this.rootObject) - return this.rootObjectBox; - else - { - var parentNode = this.view.getParentObject(object); - var parentObjectBox = this.findObjectBox(parentNode); - if (!parentObjectBox) - return null; - - var parentChildBox = this.getChildObjectBox(parentObjectBox); - if (!parentChildBox) - return null; - - return this.findChildObjectBox(parentChildBox, object); - } - }, - - appendChildBox: function(parentNodeBox, repObject) - { - var childBox = this.getChildObjectBox(parentNodeBox); - var objectBox = this.findChildObjectBox(childBox, repObject); - if (objectBox) - return objectBox; - - objectBox = this.view.createObjectBox(repObject); - if (objectBox) - { - var childBox = this.getChildObjectBox(parentNodeBox); - childBox.appendChild(objectBox); - } - return objectBox; - }, - - insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling) - { - var childBox = this.getChildObjectBox(parentNodeBox); - var objectBox = this.findChildObjectBox(childBox, repObject); - if (objectBox) - return objectBox; - - objectBox = this.view.createObjectBox(repObject); - if (objectBox) - { - var siblingBox = this.findChildObjectBox(childBox, nextSibling); - childBox.insertBefore(objectBox, siblingBox); - } - return objectBox; - }, - - removeChildBox: function(parentNodeBox, repObject) - { - var childBox = this.getChildObjectBox(parentNodeBox); - var objectBox = this.findChildObjectBox(childBox, repObject); - if (objectBox) - childBox.removeChild(objectBox); - }, - - populateChildBox: function(repObject, nodeChildBox) // We want all children of the parent of repObject. - { - if (!repObject) - return null; - - var parentObjectBox = getAncestorByClass(nodeChildBox, "nodeBox"); - if (FBTrace.DBG_HTML) - FBTrace.sysout("+++insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") parentObjectBox.populated "+parentObjectBox.populated+"\n"); - if (parentObjectBox.populated) - return this.findChildObjectBox(nodeChildBox, repObject); - - var lastSiblingBox = this.getChildObjectBox(nodeChildBox); - var siblingBox = nodeChildBox.firstChild; - var targetBox = null; - - var view = this.view; - - var targetSibling = null; - var parentNode = view.getParentObject(repObject); - for (var i = 0; 1; ++i) - { - targetSibling = view.getChildObject(parentNode, i, targetSibling); - if (!targetSibling) - break; - - // Check if we need to start appending, or continue to insert before - if (lastSiblingBox && lastSiblingBox.repObject == targetSibling) - lastSiblingBox = null; - - if (!siblingBox || siblingBox.repObject != targetSibling) - { - var newBox = view.createObjectBox(targetSibling); - if (newBox) - { - if (lastSiblingBox) - nodeChildBox.insertBefore(newBox, lastSiblingBox); - else - nodeChildBox.appendChild(newBox); - } - - siblingBox = newBox; - } - - if (targetSibling == repObject) - targetBox = siblingBox; - - if (siblingBox && siblingBox.repObject == targetSibling) - siblingBox = siblingBox.nextSibling; - } - - if (targetBox) - parentObjectBox.populated = true; - if (FBTrace.DBG_HTML) - FBTrace.sysout("---insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox+"\n"); - - return targetBox; - }, - - getParentObjectBox: function(objectBox) - { - var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null; - return parent && parent.repObject ? parent : null; - }, - - getChildObjectBox: function(objectBox) - { - return getElementByClass(objectBox, "nodeChildBox"); - }, - - findChildObjectBox: function(parentNodeBox, repObject) - { - for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout( - "insideOutBox.findChildObjectBox " - +(childBox.repObject == repObject?"match ":"no match ") - +" childBox.repObject: " + (childBox.repObject && (childBox.repObject.localName || childBox.repObject)) - +" repObject: " +(repObject && (repObject.localName || repObject))+"\n", childBox); - if (childBox.repObject == repObject) - return childBox; - } - }, - - /** - * Determines if the given node is an ancestor of the current root. - */ - isInExistingRoot: function(node) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.isInExistingRoot for ", node); - var parentNode = node; - while (parentNode && parentNode != this.rootObject) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout(parentNode.localName+" < ", parentNode); - var parentNode = this.view.getParentObject(parentNode); - if (FBTrace.DBG_HTML) - FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode); - } - return parentNode == this.rootObject; - }, - - getRootNode: function(node) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout("insideOutBox.getRootNode for ", node); - while (1) - { - if (FBTrace.DBG_HTML) - FBTrace.sysout(node.localName+" < ", node); - var parentNode = this.view.getParentObject(node); - if (FBTrace.DBG_HTML) - FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode); - - if (!parentNode) - return node; - else - node = parentNode; - } - return null; - }, - - // ******************************************************************************************** - - onMouseDown: function(event) - { - var hitTwisty = false; - for (var child = event.target; child; child = child.parentNode) - { - if (hasClass(child, "twisty")) - hitTwisty = true; - else if (child.repObject) - { - if (hitTwisty) - this.toggleObjectBox(child); - break; - } - } - } -}; - -// ************************************************************************************************ -// Local Helpers - -function isVisibleTarget(node) -{ - if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE) - { - for (var parent = node.parentNode; parent; parent = parent.parentNode) - { - if (hasClass(parent, "nodeChildBox") - && !hasClass(parent.parentNode, "open") - && !hasClass(parent.parentNode, "highlightOpen")) - return false; - } - return true; - } -} - -function formatNode(object) -{ - if (object) - return (object.localName ? object.localName : object); - else - return "(null object)"; -} - -function getObjectPath(element, aView) -{ - var path = []; - for (; element; element = aView.getParentObject(element)) - path.push(element); - - return path; -} - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/inspector.js b/branches/firebug1.5/content/firebug1.4/inspector.js deleted file mode 100644 index 79a9441c..00000000 --- a/branches/firebug1.5/content/firebug1.4/inspector.js +++ /dev/null @@ -1,515 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Inspector Module - -var ElementCache = Firebug.Lite.Cache.Element; - -var inspectorTS, inspectorTimer, isInspecting; - -Firebug.Inspector = -{ - create: function() - { - offlineFragment = Env.browser.document.createDocumentFragment(); - - createBoxModelInspector(); - createOutlineInspector(); - }, - - destroy: function() - { - destroyBoxModelInspector(); - destroyOutlineInspector(); - - offlineFragment = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Inspect functions - - toggleInspect: function() - { - if (isInspecting) - { - this.stopInspecting(); - } - else - { - Firebug.chrome.inspectButton.changeState("pressed"); - this.startInspecting(); - } - }, - - startInspecting: function() - { - isInspecting = true; - - Firebug.chrome.selectPanel("HTML"); - - createInspectorFrame(); - - var size = Firebug.browser.getWindowScrollSize(); - - fbInspectFrame.style.width = size.width + "px"; - fbInspectFrame.style.height = size.height + "px"; - - //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody); - - addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - }, - - stopInspecting: function() - { - isInspecting = false; - - if (outlineVisible) this.hideOutline(); - removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting); - removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick); - - destroyInspectorFrame(); - - Firebug.chrome.inspectButton.restore(); - - if (Firebug.chrome.type == "popup") - Firebug.chrome.node.focus(); - }, - - onInspectingClick: function(e) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - //Firebug.Console.log(targ); - Firebug.Inspector.stopInspecting(); - }, - - onInspecting: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - fbInspectFrame.style.display = "none"; - var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY); - fbInspectFrame.style.display = "block"; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache(targ)) - { - var target = ""+ElementCache.key(targ); - var lazySelect = function() - { - inspectorTS = new Date().getTime(); - - Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)) - }; - - if (inspectorTimer) - { - clearTimeout(inspectorTimer); - inspectorTimer = null; - } - - if (new Date().getTime() - inspectorTS > 200) - setTimeout(lazySelect, 0) - else - inspectorTimer = setTimeout(lazySelect, 300); - } - - lastInspecting = new Date().getTime(); - } - }, - - // TODO: xxxpedro remove this? - onInspectingBody: function(e) - { - if (new Date().getTime() - lastInspecting > 30) - { - var targ = e.target; - - // Avoid inspecting the outline, and the FirebugUI - var id = targ.id; - if (id && /^fbOutline\w$/.test(id)) return; - if (id == "FirebugUI") return; - - // Avoid looking at text nodes in Opera - while (targ.nodeType != 1) targ = targ.parentNode; - - if (targ.nodeName.toLowerCase() == "body") return; - - //Firebug.Console.log(e.clientX, e.clientY, targ); - Firebug.Inspector.drawOutline(targ); - - if (ElementCache.has(targ)) - FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ)); - - lastInspecting = new Date().getTime(); - } - }, - - /** - * - * llttttttrr - * llttttttrr - * ll rr - * ll rr - * llbbbbbbrr - * llbbbbbbrr - */ - drawOutline: function(el) - { - var border = 2; - var scrollbarSize = 17; - - var windowSize = Firebug.browser.getWindowSize(); - var scrollSize = Firebug.browser.getWindowScrollSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - var box = Firebug.browser.getElementBox(el); - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - - (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible - scrollbarSize : 0); - - var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height - - (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible - scrollbarSize : 0); - - var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1; - - var o = outlineElements; - var style; - - style = o.fbOutlineT.style; - style.top = top-border + "px"; - style.left = left + "px"; - style.height = border + "px"; // TODO: on initialize() - style.width = width + "px"; - - style = o.fbOutlineL.style; - style.top = top-border + "px"; - style.left = left-border + "px"; - style.height = height+ numVerticalBorders*border + "px"; - style.width = border + "px"; // TODO: on initialize() - - style = o.fbOutlineB.style; - if (freeVerticalSpace > 0) - { - style.top = top+height + "px"; - style.left = left + "px"; - style.width = width + "px"; - //style.height = border + "px"; // TODO: on initialize() or worst case? - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.width = border + "px"; - //style.height = border + "px"; - } - - style = o.fbOutlineR.style; - if (freeHorizontalSpace > 0) - { - style.top = top-border + "px"; - style.left = left+width + "px"; - style.height = height + numVerticalBorders*border + "px"; - style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px"; - } - else - { - style.top = -2*border + "px"; - style.left = -2*border + "px"; - style.height = border + "px"; - style.width = border + "px"; - } - - if (!outlineVisible) this.showOutline(); - }, - - hideOutline: function() - { - if (!outlineVisible) return; - - for (var name in outline) - offlineFragment.appendChild(outlineElements[name]); - - outlineVisible = false; - }, - - showOutline: function() - { - if (outlineVisible) return; - - if (boxModelVisible) this.hideBoxModel(); - - for (var name in outline) - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]); - - outlineVisible = true; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Box Model - - drawBoxModel: function(el) - { - // avoid error when the element is not attached a document - if (!el || !el.parentNode) - return; - - var box = Firebug.browser.getElementBox(el); - - var windowSize = Firebug.browser.getWindowSize(); - var scrollPosition = Firebug.browser.getWindowScrollPosition(); - - // element may be occluded by the chrome, when in frame mode - var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0; - - // if element box is not inside the viewport, don't draw the box model - if (box.top > scrollPosition.top + windowSize.height - offsetHeight || - box.left > scrollPosition.left + windowSize.width || - scrollPosition.top > box.top + box.height || - scrollPosition.left > box.left + box.width ) - return; - - var top = box.top; - var left = box.left; - var height = box.height; - var width = box.width; - - var margin = Firebug.browser.getMeasurementBox(el, "margin"); - var padding = Firebug.browser.getMeasurementBox(el, "padding"); - var border = Firebug.browser.getMeasurementBox(el, "border"); - - boxModelStyle.top = top - margin.top + "px"; - boxModelStyle.left = left - margin.left + "px"; - boxModelStyle.height = height + margin.top + margin.bottom + "px"; - boxModelStyle.width = width + margin.left + margin.right + "px"; - - boxBorderStyle.top = margin.top + "px"; - boxBorderStyle.left = margin.left + "px"; - boxBorderStyle.height = height + "px"; - boxBorderStyle.width = width + "px"; - - boxPaddingStyle.top = margin.top + border.top + "px"; - boxPaddingStyle.left = margin.left + border.left + "px"; - boxPaddingStyle.height = height - border.top - border.bottom + "px"; - boxPaddingStyle.width = width - border.left - border.right + "px"; - - boxContentStyle.top = margin.top + border.top + padding.top + "px"; - boxContentStyle.left = margin.left + border.left + padding.left + "px"; - boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px"; - boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px"; - - if (!boxModelVisible) this.showBoxModel(); - }, - - hideBoxModel: function() - { - if (!boxModelVisible) return; - - offlineFragment.appendChild(boxModel); - boxModelVisible = false; - }, - - showBoxModel: function() - { - if (boxModelVisible) return; - - if (outlineVisible) this.hideOutline(); - - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel); - boxModelVisible = true; - } - -}; - -// ************************************************************************************************ -// Inspector Internals - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Shared variables - - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -// Internal variables - -var offlineFragment = null; - -var boxModelVisible = false; - -var boxModel, boxModelStyle, - boxMargin, boxMarginStyle, - boxBorder, boxBorderStyle, - boxPadding, boxPaddingStyle, - boxContent, boxContentStyle; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;"; -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;"; - -var inspectStyle = resetStyle + "z-index: 2147483500;"; -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" + - Env.Location.skinDir + "pixel_transparent.gif);"; - -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);"; - -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;"; -var inspectModelStyle = inspectStyle + inspectModelOpacity; -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;"; -var inspectBorderStyle = inspectStyle + "background: #666;"; -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;"; -var inspectContentStyle = inspectStyle + "background: SkyBlue;"; - - -var outlineStyle = { - fbHorizontalLine: "background: #3875D7;height: 2px;", - fbVerticalLine: "background: #3875D7;width: 2px;" -} - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var lastInspecting = 0; -var fbInspectFrame = null; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var outlineVisible = false; -var outlineElements = {}; -var outline = { - "fbOutlineT": "fbHorizontalLine", - "fbOutlineL": "fbVerticalLine", - "fbOutlineB": "fbHorizontalLine", - "fbOutlineR": "fbVerticalLine" -}; - - -var getInspectingTarget = function() -{ - -}; - -// ************************************************************************************************ -// Section - -var createInspectorFrame = function createInspectorFrame() -{ - fbInspectFrame = createGlobalElement("div"); - fbInspectFrame.id = "fbInspectFrame"; - fbInspectFrame.firebugIgnore = true; - fbInspectFrame.style.cssText = inspectFrameStyle; - Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame); -}; - -var destroyInspectorFrame = function destroyInspectorFrame() -{ - if (fbInspectFrame) - { - Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame); - fbInspectFrame = null; - } -}; - -var createOutlineInspector = function createOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name] = createGlobalElement("div"); - el.id = name; - el.firebugIgnore = true; - el.style.cssText = inspectStyle + outlineStyle[outline[name]]; - offlineFragment.appendChild(el); - } -}; - -var destroyOutlineInspector = function destroyOutlineInspector() -{ - for (var name in outline) - { - var el = outlineElements[name]; - el.parentNode.removeChild(el); - } -}; - -var createBoxModelInspector = function createBoxModelInspector() -{ - boxModel = createGlobalElement("div"); - boxModel.id = "fbBoxModel"; - boxModel.firebugIgnore = true; - boxModelStyle = boxModel.style; - boxModelStyle.cssText = inspectModelStyle; - - boxMargin = createGlobalElement("div"); - boxMargin.id = "fbBoxMargin"; - boxMarginStyle = boxMargin.style; - boxMarginStyle.cssText = inspectMarginStyle; - boxModel.appendChild(boxMargin); - - boxBorder = createGlobalElement("div"); - boxBorder.id = "fbBoxBorder"; - boxBorderStyle = boxBorder.style; - boxBorderStyle.cssText = inspectBorderStyle; - boxModel.appendChild(boxBorder); - - boxPadding = createGlobalElement("div"); - boxPadding.id = "fbBoxPadding"; - boxPaddingStyle = boxPadding.style; - boxPaddingStyle.cssText = inspectPaddingStyle; - boxModel.appendChild(boxPadding); - - boxContent = createGlobalElement("div"); - boxContent.id = "fbBoxContent"; - boxContentStyle = boxContent.style; - boxContentStyle.cssText = inspectContentStyle; - boxModel.appendChild(boxContent); - - offlineFragment.appendChild(boxModel); -}; - -var destroyBoxModelInspector = function destroyBoxModelInspector() -{ - boxModel.parentNode.removeChild(boxModel); -}; - -// ************************************************************************************************ -// Section - - - - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/jsonViewer.js b/branches/firebug1.5/content/firebug1.4/jsonViewer.js deleted file mode 100644 index 21d9508a..00000000 --- a/branches/firebug1.5/content/firebug1.4/jsonViewer.js +++ /dev/null @@ -1,125 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ - -// List of JSON content types. -var contentTypes = -{ - "text/plain": 1, - "text/javascript": 1, - "text/x-javascript": 1, - "text/json": 1, - "text/x-json": 1, - "application/json": 1, - "application/x-json": 1, - "application/javascript": 1, - "application/x-javascript": 1, - "application/json-rpc": 1 -}; - -// ************************************************************************************************ -// Model implementation - -Firebug.JSONViewerModel = extend(Firebug.Module, -{ - dispatchName: "jsonViewer", - initialize: function() - { - Firebug.NetMonitor.NetInfoBody.addListener(this); - - // Used by Firebug.DOMPanel.DirTable domplate. - this.toggles = {}; - }, - - shutdown: function() - { - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody", infoBox); - - // Let listeners to parse the JSON. - dispatch(this.fbListeners, "onParseJSON", [file]); - - // The JSON is still no there, try to parse most common cases. - if (!file.jsonObject) - { - ///if (this.isJSON(safeGetContentType(file.request), file.responseText)) - if (this.isJSON(file.mimeType, file.responseText)) - file.jsonObject = this.parseJSON(file); - } - - // The jsonObject is created so, the JSON tab can be displayed. - if (file.jsonObject && hasProperties(file.jsonObject)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON", - ///$STR("jsonviewer.tab.JSON")); - $STR("JSON")); - - if (FBTrace.DBG_JSONVIEWER) - FBTrace.sysout("jsonviewer.initTabBody; JSON object available " + - (typeof(file.jsonObject) != "undefined"), file.jsonObject); - } - }, - - isJSON: function(contentType, data) - { - // Workaround for JSON responses without proper content type - // Let's consider all responses starting with "{" as JSON. In the worst - // case there will be an exception when parsing. This means that no-JSON - // responses (and post data) (with "{") can be parsed unnecessarily, - // which represents a little overhead, but this happens only if the request - // is actually expanded by the user in the UI (Net & Console panels). - - ///var responseText = data ? trimLeft(data) : null; - ///if (responseText && responseText.indexOf("{") == 0) - /// return true; - var responseText = data ? trim(data) : null; - if (responseText && responseText.indexOf("{") == 0) - return true; - - if (!contentType) - return false; - - contentType = contentType.split(";")[0]; - contentType = trim(contentType); - return contentTypes[contentType]; - }, - - // Update listener for TabView - updateTabBody: function(infoBox, file, context) - { - var tab = infoBox.selectedTab; - ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0); - var tabBody = $$(".netInfoJSONText", infoBox)[0]; - if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated) - return; - - tabBody.updated = true; - - if (file.jsonObject) { - Firebug.DOMPanel.DirTable.tag.replace( - {object: file.jsonObject, toggles: this.toggles}, tabBody); - } - }, - - parseJSON: function(file) - { - var jsonString = new String(file.responseText); - ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host); - return parseJSONString(jsonString); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.JSONViewerModel); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/lib/htmlLib.js b/branches/firebug1.5/content/firebug1.4/lib/htmlLib.js deleted file mode 100644 index f3c0c8c8..00000000 --- a/branches/firebug1.5/content/firebug1.4/lib/htmlLib.js +++ /dev/null @@ -1,753 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -//const Ci = Components.interfaces; -//const SHOW_ALL = Ci.nsIDOMNodeFilter.SHOW_ALL; - -/** - * @class Static utility class. Contains utilities used for displaying and - * searching a HTML tree. - */ -Firebug.HTMLLib = -{ - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Node Search Utilities - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - /** - * Constructs a NodeSearch instance. - * - * @class Class used to search a DOM tree for the given text. Will display - * the search results in a IO Box. - * - * @constructor - * @param {String} text Text to search for - * @param {Object} root Root of search. This may be an element or a document - * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree. - * @param {Object} ioBox IO Box to display the search results in - * @param {Object} walker Optional walker parameter. - */ - NodeSearch: function(text, root, panelNode, ioBox, walker) - { - root = root.documentElement || root; - walker = walker || new Firebug.HTMLLib.DOMWalker(root); - var re = new ReversibleRegExp(text, "m"); - var matchCount = 0; - - /** - * Finds the first match within the document. - * - * @param {boolean} revert true to search backward, false to search forward - * @param {boolean} caseSensitive true to match exact case, false to ignore case - * @return true if no more matches were found, but matches were found previously. - */ - this.find = function(reverse, caseSensitive) - { - var match = this.findNextMatch(reverse, caseSensitive); - if (match) - { - this.lastMatch = match; - ++matchCount; - - var node = match.node; - var nodeBox = this.openToNode(node, match.isValue); - - this.selectMatched(nodeBox, node, match, reverse); - } - else if (matchCount) - return true; - else - { - this.noMatch = true; - dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]); - } - }; - - /** - * Resets the search to the beginning of the document. - */ - this.reset = function() - { - delete this.lastMatch; - }; - - /** - * Finds the next match in the document. - * - * The return value is an object with the fields - * - node: Node that contains the match - * - isValue: true if the match is a match due to the value of the node, false if it is due to the name - * - match: Regular expression result from the match - * - * @param {boolean} revert true to search backward, false to search forward - * @param {boolean} caseSensitive true to match exact case, false to ignore case - * @return Match object if found - */ - this.findNextMatch = function(reverse, caseSensitive) - { - var innerMatch = this.findNextInnerMatch(reverse, caseSensitive); - if (innerMatch) - return innerMatch; - else - this.reset(); - - function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); } - - var node; - while (node = walkNode()) - { - if (node.nodeType == Node.TEXT_NODE) - { - if (Firebug.HTMLLib.isSourceElement(node.parentNode)) - continue; - } - - var m = this.checkNode(node, reverse, caseSensitive); - if (m) - return m; - } - }; - - /** - * Helper util used to scan the current search result for more results - * in the same object. - * - * @private - */ - this.findNextInnerMatch = function(reverse, caseSensitive) - { - if (this.lastMatch) - { - var lastMatchNode = this.lastMatch.node; - var lastReMatch = this.lastMatch.match; - var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch); - if (m) - { - return { - node: lastMatchNode, - isValue: this.lastMatch.isValue, - match: m - }; - } - - // May need to check the pair for attributes - if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE - && this.lastMatch.isValue == !!reverse) - { - return this.checkNode(lastMatchNode, reverse, caseSensitive, 1); - } - } - }; - - /** - * Checks a given node for a search match. - * - * @private - */ - this.checkNode = function(node, reverse, caseSensitive, firstStep) - { - var checkOrder; - if (node.nodeType != Node.TEXT_NODE) - { - var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false }; - var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive }; - checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ]; - } - else - { - checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }]; - } - - for (var i = firstStep || 0; i < checkOrder.length; i++) { - var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive); - if (m) - return { - node: node, - isValue: checkOrder[i].isValue, - match: m - }; - } - }; - - /** - * Opens the given node in the associated IO Box. - * - * @private - */ - this.openToNode = function(node, isValue) - { - if (node.nodeType == Node.ELEMENT_NODE) - { - var nodeBox = ioBox.openToObject(node); - return nodeBox.getElementsByClassName("nodeTag")[0]; - } - else if (node.nodeType == Node.ATTRIBUTE_NODE) - { - var nodeBox = ioBox.openToObject(node.ownerElement); - if (nodeBox) - { - var attrNodeBox = Firebug.HTMLLib.findNodeAttrBox(nodeBox, node.nodeName); - if (isValue) - return getChildByClass(attrNodeBox, "nodeValue"); - else - return getChildByClass(attrNodeBox, "nodeName"); - } - } - else if (node.nodeType == Node.TEXT_NODE) - { - var nodeBox = ioBox.openToObject(node); - if (nodeBox) - return nodeBox; - else - { - var nodeBox = ioBox.openToObject(node.parentNode); - if (hasClass(nodeBox, "textNodeBox")) - nodeBox = Firebug.HTMLLib.getTextElementTextBox(nodeBox); - return nodeBox; - } - } - }; - - /** - * Selects the search results. - * - * @private - */ - this.selectMatched = function(nodeBox, node, match, reverse) - { - setTimeout(bindFixed(function() - { - var reMatch = match.match; - this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive); - dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]); - }, this)); - }; - - /** - * Select text node search results. - * - * @private - */ - this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive) - { - var row; - - // If we are still inside the same node as the last search, advance the range - // to the next substring within that node - if (nodeBox == this.lastNodeBox) - { - row = this.textSearch.findNext(false, true, reverse, caseSensitive); - } - - if (!row) - { - // Search for the first instance of the string inside the node - function findRow(node) { return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode; } - this.textSearch = new TextSearch(nodeBox, findRow); - row = this.textSearch.find(text, reverse, caseSensitive); - this.lastNodeBox = nodeBox; - } - - if (row) - { - var trueNodeBox = getAncestorByClass(nodeBox, "nodeBox"); - setClass(trueNodeBox,'search-selection'); - - scrollIntoCenterView(row, panelNode); - var sel = panelNode.ownerDocument.defaultView.getSelection(); - sel.removeAllRanges(); - sel.addRange(this.textSearch.range); - - removeClass(trueNodeBox,'search-selection'); - return true; - } - }; - }, - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** XXXjjb this code is no longer called and won't be in 1.5; if FireFinder works out we can delete this. - * Constructs a SelectorSearch instance. - * - * @class Class used to search a DOM tree for elements matching the given - * CSS selector. - * - * @constructor - * @param {String} text CSS selector to search for - * @param {Document} doc Document to search - * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree. - * @param {Object} ioBox IO Box to display the search results in - */ - SelectorSearch: function(text, doc, panelNode, ioBox) - { - this.parent = new Firebug.HTMLLib.NodeSearch(text, doc, panelNode, ioBox); - - /** - * Finds the first match within the document. - * - * @param {boolean} revert true to search backward, false to search forward - * @param {boolean} caseSensitive true to match exact case, false to ignore case - * @return true if no more matches were found, but matches were found previously. - */ - this.find = this.parent.find; - - /** - * Resets the search to the beginning of the document. - */ - this.reset = this.parent.reset; - - /** - * Opens the given node in the associated IO Box. - * - * @private - */ - this.openToNode = this.parent.openToNode; - - try - { - // http://dev.w3.org/2006/webapi/selectors-api/ - this.matchingNodes = doc.querySelectorAll(text); - this.matchIndex = 0; - } - catch(exc) - { - FBTrace.sysout("SelectorSearch FAILS "+exc, exc); - } - - /** - * Finds the next match in the document. - * - * The return value is an object with the fields - * - node: Node that contains the match - * - isValue: true if the match is a match due to the value of the node, false if it is due to the name - * - match: Regular expression result from the match - * - * @param {boolean} revert true to search backward, false to search forward - * @param {boolean} caseSensitive true to match exact case, false to ignore case - * @return Match object if found - */ - this.findNextMatch = function(reverse, caseSensitive) - { - if (!this.matchingNodes || !this.matchingNodes.length) - return undefined; - - if (reverse) - { - if (this.matchIndex > 0) - return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"}; - else - return undefined; - } - else - { - if (this.matchIndex < this.matchingNodes.length) - return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"}; - else - return undefined; - } - }; - - /** - * Selects the search results. - * - * @private - */ - this.selectMatched = function(nodeBox, node, match, reverse) - { - setTimeout(bindFixed(function() - { - ioBox.select(node, true, true); - dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]); - }, this)); - }; - }, - - - /** - * Constructs a DOMWalker instance. - * - * @constructor - * @class Implements an ordered traveral of the document, including attributes and - * iframe contents within the results. - * - * Note that the order for attributes is not defined. This will follow the - * same order as the Element.attributes accessor. - * @param {Element} root Element to traverse - */ - DOMWalker: function(root) - { - var walker; - var currentNode, attrIndex; - var pastStart, pastEnd; - var doc = root.ownerDocument; - - function createWalker(docElement) { - var walk = doc.createTreeWalker(docElement, SHOW_ALL, null, true); - walker.unshift(walk); - } - function getLastAncestor() { - while (walker[0].lastChild()) {} - return walker[0].currentNode; - } - - /** - * Move to the previous node. - * - * @return The previous node if one exists, undefined otherwise. - */ - this.previousNode = function() { - if (pastStart) { - return undefined; - } - - if (attrIndex) { - attrIndex--; - } else { - var prevNode; - if (currentNode == walker[0].root) { - if (walker.length > 1) { - walker.shift(); - prevNode = walker[0].currentNode; - } else { - prevNode = undefined; - } - } else { - if (!currentNode) { - prevNode = getLastAncestor(); - } else { - prevNode = walker[0].previousNode(); - } - if (!prevNode) { // Really shouldn't occur, but to be safe - prevNode = walker[0].root; - } - while ((prevNode.nodeName || "").toUpperCase() == "IFRAME") { - createWalker(prevNode.contentDocument.documentElement); - prevNode = getLastAncestor(); - } - } - currentNode = prevNode; - attrIndex = ((prevNode || {}).attributes || []).length; - } - - if (!currentNode) { - pastStart = true; - } else { - pastEnd = false; - } - - return this.currentNode(); - }; - - /** - * Move to the next node. - * - * @return The next node if one exists, otherwise undefined. - */ - this.nextNode = function() { - if (pastEnd) { - return undefined; - } - - if (!currentNode) { - // We are working with a new tree walker - currentNode = walker[0].root; - attrIndex = 0; - } else { - // First check attributes - var attrs = currentNode.attributes || []; - if (attrIndex < attrs.length) { - attrIndex++; - } else if ((currentNode.nodeName || "").toUpperCase() == "IFRAME") { - // Attributes have completed, check for iframe contents - createWalker(currentNode.contentDocument.documentElement); - currentNode = walker[0].root; - attrIndex = 0; - } else { - // Next node - var nextNode = walker[0].nextNode(); - while (!nextNode && walker.length > 1) { - walker.shift(); - nextNode = walker[0].nextNode(); - } - currentNode = nextNode; - attrIndex = 0; - } - } - - if (!currentNode) { - pastEnd = true; - } else { - pastStart = false; - } - - return this.currentNode(); - }; - - /** - * Retrieves the current node. - * - * @return The current node, if not past the beginning or end of the iteration. - */ - this.currentNode = function() { - if (!attrIndex) { - return currentNode; - } else { - return currentNode.attributes[attrIndex-1]; - } - }; - - /** - * Resets the walker position back to the initial position. - */ - this.reset = function() { - pastStart = false; - pastEnd = false; - walker = []; - currentNode = undefined; - attrIndex = 0; - - createWalker(root); - }; - - this.reset(); - }, - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Node/Element Utilities - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Determines if the given element is the source for a non-DOM resource such - * as Javascript source or CSS definition. - * - * @param {Element} element Element to test - * @return true if the element is a source element - */ - isSourceElement: function(element) - { - var tag = element.localName.toLowerCase(); - return tag == "script" || tag == "link" || tag == "style" - || (tag == "link" && element.getAttribute("rel") == "stylesheet"); - }, - - /** - * Retrieves the source URL for any external resource associated with a node. - * - * @param {Element} element Element to examine - * @return URL of the external resouce. - */ - getSourceHref: function(element) - { - var tag = element.localName.toLowerCase(); - if (tag == "script" && element.src) - return element.src; - else if (tag == "link") - return element.href; - else - return null; - }, - - /** - * Retrieves the source text for inline script and style elements. - * - * @param {Element} element Script or style element - * @return Source text - */ - getSourceText: function(element) - { - var tag = element.localName.toLowerCase(); - if (tag == "script" && !element.src) - return element.textContent; - else if (tag == "style") - return element.textContent; - else - return null; - }, - - /** - * Determines if the given element is a container element. - * - * @param {Element} element Element to test - * @return True if the element is a container element. - */ - isContainerElement: function(element) - { - var tag = element.localName.toLowerCase(); - switch (tag) - { - case "script": - case "style": - case "iframe": - case "frame": - case "tabbrowser": - case "browser": - return true; - case "link": - return element.getAttribute("rel") == "stylesheet"; - case "embed": - return element.getSVGDocument(); - } - return false; - }, - - /** - * Determines if the given node has any children which are elements. - * - * @param {Element} element Element to test. - * @return true if immediate children of type Element exist, false otherwise - */ - hasNoElementChildren: function(element) - { - if (element.childElementCount != 0) // FF 3.5+ - return false; - - // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces - /* - if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL) - { - var anonChildren = element.ownerDocument.getAnonymousNodes(element); - if (anonChildren) - { - for (var i = 0; i < anonChildren.length; i++) - { - if (anonChildren[i].nodeType == Node.ELEMENT_NODE) - return false; - } - } - } - /**/ - if (FBTrace.DBG_HTML) - FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element); - return true; - }, - - - /** - * Determines if the given node has any children which are comments. - * - * @param {Element} element Element to test. - * @return true if immediate children of type Comment exist, false otherwise - */ - hasCommentChildren: function(element) - { - if (element.hasChildNodes()) - { - var children = element.childNodes; - for (var i = 0; i < children.length; i++) - { - if (children[i] instanceof Comment) - return true; - } - }; - return false; - }, - - - /** - * Determines if the given node consists solely of whitespace text. - * - * @param {Node} node Node to test. - * @return true if the node is a whitespace text node - */ - isWhitespaceText: function(node) - { - if (node instanceof HTMLAppletElement) - return false; - return node.nodeType == Node.TEXT_NODE && isWhitespace(node.nodeValue); - }, - - /** - * Determines if a given element is empty. When the - * {@link Firebug#showTextNodesWithWhitespace} parameter is true, an element is - * considered empty if it has no child elements and is self closing. When - * false, an element is considered empty if the only children are whitespace - * nodes. - * - * @param {Element} element Element to test - * @return true if the element is empty, false otherwise - */ - isEmptyElement: function(element) - { - // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted. - // If the DOM has whitespace children, then the element is not empty even if - // we decide not to show the whitespace in the UI. - - // XXXsroussey reverted above but added a check for self closing tags - if (Firebug.showTextNodesWithWhitespace) - { - return !element.firstChild && isSelfClosing(element); - } - else - { - for (var child = element.firstChild; child; child = child.nextSibling) - { - if (!Firebug.HTMLLib.isWhitespaceText(child)) - return false; - } - } - return isSelfClosing(element); - }, - - /** - * Finds the next sibling of the given node. If the - * {@link Firebug#showTextNodesWithWhitespace} parameter is set to true, the next - * sibling may be a whitespace, otherwise the next is the first adjacent - * non-whitespace node. - * - * @param {Node} node Node to analyze. - * @return Next sibling node, if one exists - */ - findNextSibling: function(node) - { - if (Firebug.showTextNodesWithWhitespace) - return node.nextSibling; - else - { - // only return a non-whitespace node - for (var child = node.nextSibling; child; child = child.nextSibling) - { - if (!Firebug.HTMLLib.isWhitespaceText(child)) - return child; - } - } - }, - - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Domplate Utilities - //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Locates the attribute domplate node for a given element domplate. This method will - * only examine notes marked with the "nodeAttr" class that are the direct - * children of the given element. - * - * @param {Object} objectNodeBox The domplate element to look up the attribute for. - * @param {String} attrName Attribute name - * @return Attribute's domplate node - */ - findNodeAttrBox: function(objectNodeBox, attrName) - { - var child = objectNodeBox.firstChild.lastChild.firstChild; - for (; child; child = child.nextSibling) - { - if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild - && child.childNodes[1].firstChild.nodeValue == attrName) - { - return child; - } - } - }, - - /** - * Locates the text domplate node for a given text element domplate. - * @param {Object} nodeBox Text element domplate - * @return Element's domplate text node - */ - getTextElementTextBox: function(nodeBox) - { - var nodeLabelBox = nodeBox.firstChild.lastChild; - return getChildByClass(nodeLabelBox, "nodeText"); - } -}; - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/net.js b/branches/firebug1.5/content/firebug1.4/net.js deleted file mode 100644 index 90f74fce..00000000 --- a/branches/firebug1.5/content/firebug1.4/net.js +++ /dev/null @@ -1,1311 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/; -var layoutInterval = 300; -var indentWidth = 18; - -var cacheSession = null; -var contexts = new Array(); -var panelName = "net"; -var maxQueueRequests = 500; -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup -var activeRequests = []; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -var mimeExtensionMap = -{ - "txt": "text/plain", - "html": "text/html", - "htm": "text/html", - "xhtml": "text/html", - "xml": "text/xml", - "css": "text/css", - "js": "application/x-javascript", - "jss": "application/x-javascript", - "jpg": "image/jpg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "png": "image/png", - "bmp": "image/bmp", - "swf": "application/x-shockwave-flash", - "flv": "video/x-flv" -}; - -var fileCategories = -{ - "undefined": 1, - "html": 1, - "css": 1, - "js": 1, - "xhr": 1, - "image": 1, - "flash": 1, - "txt": 1, - "bin": 1 -}; - -var textFileCategories = -{ - "txt": 1, - "html": 1, - "xhr": 1, - "css": 1, - "js": 1 -}; - -var binaryFileCategories = -{ - "bin": 1, - "flash": 1 -}; - -var mimeCategoryMap = -{ - "text/plain": "txt", - "application/octet-stream": "bin", - "text/html": "html", - "text/xml": "html", - "text/css": "css", - "application/x-javascript": "js", - "text/javascript": "js", - "application/javascript" : "js", - "image/jpeg": "image", - "image/jpg": "image", - "image/gif": "image", - "image/png": "image", - "image/bmp": "image", - "application/x-shockwave-flash": "flash", - "video/x-flv": "flash" -}; - -var binaryCategoryMap = -{ - "image": 1, - "flash" : 1 -}; - -// ************************************************************************************************ - -/** - * @module Represents a module object for the Net panel. This object is derived - * from Firebug.ActivableModule in order to support activation (enable/disable). - * This allows to avoid (performance) expensive features if the functionality is not necessary - * for the user. - */ -Firebug.NetMonitor = extend(Firebug.ActivableModule, -{ - dispatchName: "netMonitor", - - clear: function(context) - { - // The user pressed a Clear button so, remove content of the panel... - var panel = context.getPanel(panelName, true); - if (panel) - panel.clear(); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // extends Module - - initialize: function() - { - return; - - this.panelName = panelName; - - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - // HTTP observer must be registered now (and not in monitorContext, since if a - // page is opened in a new tab the top document request would be missed otherwise. - NetHttpObserver.registerObserver(); - NetHttpActivityObserver.registerObserver(); - - Firebug.Debugger.addListener(this.DebuggerListener); - }, - - shutdown: function() - { - return; - - prefs.removeObserver(Firebug.prefDomain, this, false); - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - - NetHttpObserver.unregisterObserver(); - NetHttpActivityObserver.unregisterObserver(); - - Firebug.Debugger.removeListener(this.DebuggerListener); - } -}); - - -/** - * @domplate Represents a template that is used to reneder detailed info about a request. - * This template is rendered when a request is expanded. - */ -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoBody", _repObject: "$file"}, - TAG("$infoTabs", {file: "$file"}), - TAG("$infoBodies", {file: "$file"}) - ), - - infoTabs: - DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"}, - A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Params", - $collapsed: "$file|hideParams"}, - $STR("URLParameters") - ), - A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Headers"}, - $STR("Headers") - ), - A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Post", - $collapsed: "$file|hidePost"}, - $STR("Post") - ), - A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Put", - $collapsed: "$file|hidePut"}, - $STR("Put") - ), - A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Response", - $collapsed: "$file|hideResponse"}, - $STR("Response") - ), - A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Cache", - $collapsed: "$file|hideCache"}, - $STR("Cache") - ), - A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab", - view: "Html", - $collapsed: "$file|hideHtml"}, - $STR("HTML") - ) - ), - - infoBodies: - DIV({"class": "netInfoBodies outerFocusRow"}, - TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel", - cellpadding: 0, cellspacing: 0}, TBODY()), - DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}), - PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}), - DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"}, - TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("Cache")}) - ) - ), - DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"}, - IFRAME({"class": "netInfoHtmlPreview", "role": "document"}) - ) - ), - - headerDataTag: - FOR("param", "$headers", - TR({"role": "listitem"}, - TD({"class": "netInfoParamName", "role": "presentation"}, - TAG("$param|getNameTag", {param: "$param"}) - ), - TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line") - ) - ) - ) - ), - - customTab: - A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"}, - "$tabTitle" - ), - - customBody: - DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - nameTag: - SPAN("$param|getParamName"), - - nameWithTooltipTag: - SPAN({title: "$param.name"}, "$param|getParamName"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getNameTag: function(param) - { - return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag; - }, - - getParamName: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - name = name.substr(0, limit) + "..."; - return name; - }, - - getParamTitle: function(param) - { - var limit = 25; - var name = param.name; - if (name.length > limit) - return name; - return ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - hideParams: function(file) - { - return !file.urlParams || !file.urlParams.length; - }, - - hidePost: function(file) - { - return file.method.toUpperCase() != "POST"; - }, - - hidePut: function(file) - { - return file.method.toUpperCase() != "PUT"; - }, - - hideResponse: function(file) - { - return false; - //return file.category in binaryFileCategories; - }, - - hideCache: function(file) - { - return true; - //xxxHonza: I don't see any reason why not to display the cache also info for images. - return !file.cacheEntry; // || file.category=="image"; - }, - - hideHtml: function(file) - { - return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml"); - }, - - onClickTab: function(event) - { - this.selectTab(event.currentTarget || event.srcElement); - }, - - getParamValueIterator: function(param) - { - // TODO: xxxpedro console2 - return param.value; - - // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210). - // This is why the second parameter is true. - // The CODE (with style white-space:pre) element preserves whitespaces so they are - // displayed the same, as they come from the server (1194). - // In case of a long header values of post parameters the value must be wrapped (2105). - return wrapText(param.value, true); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - appendTab: function(netInfoBox, tabId, tabTitle) - { - // Create new tab and body. - var args = {tabId: tabId, tabTitle: tabTitle}; - ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0)); - ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0)); - this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]); - this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]); - }, - - selectTabByName: function(netInfoBox, tabName) - { - var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab"); - if (tab) - this.selectTab(tab); - }, - - selectTab: function(tab) - { - var view = tab.getAttribute("view"); - - var netInfoBox = getAncestorByClass(tab, "netInfoBody"); - - var selectedTab = netInfoBox.selectedTab; - - if (selectedTab) - { - //netInfoBox.selectedText.removeAttribute("selected"); - removeClass(netInfoBox.selectedText, "netInfoTextSelected"); - - removeClass(selectedTab, "netInfoTabSelected"); - //selectedTab.removeAttribute("selected"); - selectedTab.setAttribute("aria-selected", "false"); - } - - var textBodyName = "netInfo" + view + "Text"; - - selectedTab = netInfoBox.selectedTab = tab; - - netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0]; - //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0); - - //netInfoBox.selectedText.setAttribute("selected", "true"); - setClass(netInfoBox.selectedText, "netInfoTextSelected"); - - setClass(selectedTab, "netInfoTabSelected"); - selectedTab.setAttribute("selected", "true"); - selectedTab.setAttribute("aria-selected", "true"); - - var file = Firebug.getRepObject(netInfoBox); - - //var context = Firebug.getElementPanel(netInfoBox).context; - var context = Firebug.chrome; - - this.updateInfo(netInfoBox, file, context); - }, - - updateInfo: function(netInfoBox, file, context) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.updateInfo; file", file); - - if (!netInfoBox) - { - if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS) - FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file); - return; - } - - var tab = netInfoBox.selectedTab; - - if (hasClass(tab, "netInfoParamsTab")) - { - if (file.urlParams && !netInfoBox.urlParamsPresented) - { - netInfoBox.urlParamsPresented = true; - this.insertHeaderRows(netInfoBox, file.urlParams, "Params"); - } - } - - else if (hasClass(tab, "netInfoHeadersTab")) - { - var headersText = $$(".netInfoHeadersText", netInfoBox)[0]; - //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0); - - if (file.responseHeaders && !netInfoBox.responseHeadersPresented) - { - netInfoBox.responseHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders"); - } - - if (file.requestHeaders && !netInfoBox.requestHeadersPresented) - { - netInfoBox.requestHeadersPresented = true; - NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders"); - } - } - - else if (hasClass(tab, "netInfoPostTab")) - { - if (!netInfoBox.postPresented) - { - netInfoBox.postPresented = true; - //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0); - var postText = $$(".netInfoPostText", netInfoBox)[0]; - NetInfoPostData.render(context, postText, file); - } - } - - else if (hasClass(tab, "netInfoPutTab")) - { - if (!netInfoBox.putPresented) - { - netInfoBox.putPresented = true; - //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0); - var putText = $$(".netInfoPutText", netInfoBox)[0]; - NetInfoPostData.render(context, putText, file); - } - } - - else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented) - { - ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0); - var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0]; - if (file.category == "image") - { - netInfoBox.responsePresented = true; - - var responseImage = netInfoBox.ownerDocument.createElement("img"); - responseImage.src = file.href; - - clearNode(responseTextBox); - responseTextBox.appendChild(responseImage, responseTextBox); - } - else ///if (!(binaryCategoryMap.hasOwnProperty(file.category))) - { - this.setResponseText(file, netInfoBox, responseTextBox, context); - } - } - - else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented) - { - var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0); - if (file.cacheEntry) { - netInfoBox.cachePresented = true; - this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache"); - } - } - - else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented) - { - netInfoBox.htmlPresented = true; - - var text = Utils.getResponseText(file, context); - - ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0); - var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0]; - - ///iframe.contentWindow.document.body.innerHTML = text; - - // TODO: xxxpedro net - remove scripts - var reScript = //gi; - - text = text.replace(reScript, ""); - - iframe.contentWindow.document.write(text); - iframe.contentWindow.document.close(); - } - - // Notify listeners about update so, content of custom tabs can be updated. - dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]); - }, - - setResponseText: function(file, netInfoBox, responseTextBox, context) - { - //********************************************** - //********************************************** - //********************************************** - netInfoBox.responsePresented = true; - // line breaks somehow are different in IE - // make this only once in the initialization? we don't have net panels and modules yet. - if (isIE) - responseTextBox.style.whiteSpace = "nowrap"; - - responseTextBox[ - typeof responseTextBox.textContent != "undefined" ? - "textContent" : - "innerText" - ] = file.responseText; - - return; - //********************************************** - //********************************************** - //********************************************** - - // Get response text and make sure it doesn't exceed the max limit. - var text = Utils.getResponseText(file, context); - var limit = Firebug.netDisplayedResponseLimit + 15; - var limitReached = text ? (text.length > limit) : false; - if (limitReached) - text = text.substr(0, limit) + "..."; - - // Insert the response into the UI. - if (text) - insertWrappedText(text, responseTextBox); - else - insertWrappedText("", responseTextBox); - - // Append a message informing the user that the response isn't fully displayed. - if (limitReached) - { - var object = { - text: $STR("net.responseSizeLimitMessage"), - onClickLink: function() { - var panel = context.getPanel("net", true); - panel.openResponseInTab(file); - } - }; - Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox); - } - - netInfoBox.responsePresented = true; - - if (FBTrace.DBG_NET) - FBTrace.sysout("net.setResponseText; response text updated"); - }, - - insertHeaderRows: function(netInfoBox, headers, tableName, rowName) - { - if (!headers.length) - return; - - var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0]; - //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0); - var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body"); - if (!tbody) - tbody = headersTable.firstChild; - var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title"); - - this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody); - removeClass(titleRow, "collapsed"); - } -}); - -var NetInfoBody = Firebug.NetMonitor.NetInfoBody; - -// ************************************************************************************************ - -/** - * @domplate Used within the Net panel to display raw source of request and response headers - * as well as pretty-formatted summary of these headers. - */ -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(), -{ - tag: - DIV({"class": "netInfoHeadersTable", "role": "tabpanel"}, - DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"}, - SPAN($STR("ResponseHeaders")), - SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "ResponseHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoResponseHeadersBody", "role": "list", - "aria-label": $STR("ResponseHeaders")}) - ), - DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"}, - SPAN($STR("RequestHeaders")), - SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource", - _sourceDisplayed: false, _rowName: "RequestHeaders"}, - $STR("net.headers.view source") - ) - ), - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY({"class": "netInfoRequestHeadersBody", "role": "list", - "aria-label": $STR("RequestHeaders")}) - ) - ), - - sourceTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - PRE({"class": "source"}) - ) - ), - - onViewSource: function(event) - { - var target = event.target; - var requestHeaders = (target.rowName == "RequestHeaders"); - - var netInfoBox = getAncestorByClass(target, "netInfoBody"); - var file = netInfoBox.repObject; - - if (target.sourceDisplayed) - { - var headers = requestHeaders ? file.requestHeaders : file.responseHeaders; - this.insertHeaderRows(netInfoBox, headers, target.rowName); - target.innerHTML = $STR("net.headers.view source"); - } - else - { - var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText; - this.insertSource(netInfoBox, source, target.rowName); - target.innerHTML = $STR("net.headers.pretty print"); - } - - target.sourceDisplayed = !target.sourceDisplayed; - - cancelEvent(event); - }, - - insertSource: function(netInfoBox, source, rowName) - { - // This breaks copy to clipboard. - //if (source) - // source = source.replace(/\r\n/gm, "\\r\\n\r\n"); - - ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0); - var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0]; - var node = this.sourceTag.replace({}, tbody); - ///var sourceNode = node.getElementsByClassName("source").item(0); - var sourceNode = $$(".source", node)[0]; - sourceNode.innerHTML = source; - }, - - insertHeaderRows: function(netInfoBox, headers, rowName) - { - var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0]; - var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0]; - - //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0); - //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0); - - clearNode(tbody); - - if (!headers.length) - return; - - NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody); - - var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title"); - removeClass(titleRow, "collapsed"); - }, - - init: function(parent) - { - var rootNode = this.tag.append({}, parent); - - var netInfoBox = getAncestorByClass(parent, "netInfoBody"); - var file = netInfoBox.repObject; - - var viewSource; - - viewSource = $$(".request", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0); - if (file.requestHeadersText) - removeClass(viewSource, "collapsed"); - - viewSource = $$(".response", rootNode)[0]; - //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0); - if (file.responseHeadersText) - removeClass(viewSource, "collapsed"); - }, - - renderHeaders: function(parent, headers, rowName) - { - if (!parent.firstChild) - this.init(parent); - - this.insertHeaderRows(parent, headers, rowName); - } -}); - -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders; - -// ************************************************************************************************ - -/** - * @domplate Represents posted data within request info (the info, which is visible when - * a request entry is expanded. This template renders content of the Post tab. - */ -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/ -{ - // application/x-www-form-urlencoded - paramsTable: - TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")}, - TR({"class": "netInfoPostParamsTitle", "role": "presentation"}, - TD({colspan: 3, "role": "presentation"}, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parameters"), - SPAN({"class": "netInfoPostContentType"}, - "application/x-www-form-urlencoded" - ) - ) - ) - ) - ) - ), - - // multipart/form-data - partsTable: - TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Parts")}, - TR({"class": "netInfoPostPartsTitle", "role": "presentation"}, - TD({colspan: 2, "role":"presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("net.label.Parts"), - SPAN({"class": "netInfoPostContentType"}, - "multipart/form-data" - ) - ) - ) - ) - ) - ), - - // application/json - jsonTable: - TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")}, - TBODY({"role": "list", "aria-label": $STR("JSON")}, - TR({"class": "netInfoPostJSONTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - ///$STR("jsonviewer.tab.JSON") - $STR("JSON") - ) - ) - ), - TR( - TD({"class": "netInfoPostJSONBody"}) - ) - ) - ), - - // application/xml - xmlTable: - TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")}, - TR({"class": "netInfoPostXMLTitle", "role": "presentation"}, - TD({"role": "presentation" }, - DIV({"class": "netInfoPostParams"}, - $STR("xmlviewer.tab.XML") - ) - ) - ), - TR( - TD({"class": "netInfoPostXMLBody"}) - ) - ) - ), - - sourceTable: - TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"}, - TBODY({"role": "list", "aria-label": $STR("net.label.Source")}, - TR({"class": "netInfoPostSourceTitle", "role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - DIV({"class": "netInfoPostSource"}, - $STR("net.label.Source") - ) - ) - ) - ) - ), - - sourceBodyTag: - TR({"role": "presentation"}, - TD({colspan: 2, "role": "presentation"}, - FOR("line", "$param|getParamValueIterator", - CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line") - ) - ) - ), - - getParamValueIterator: function(param) - { - return NetInfoBody.getParamValueIterator(param); - }, - - render: function(context, parentNode, file) - { - //debugger; - var spy = getAncestorByClass(parentNode, "spyHead"); - var spyObject = spy.repObject; - var data = spyObject.data; - - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - var contentType = file.mimeType; - - ///var text = Utils.getPostText(file, context, true); - ///if (text == undefined) - /// return; - - ///if (Utils.isURLEncodedRequest(file, context)) - // fake Utils.isURLEncodedRequest identification - if (contentType && contentType == "application/x-www-form-urlencoded" || - data && data.indexOf("=") != -1) - { - ///var lines = text.split("\n"); - ///var params = parseURLEncodedText(lines[lines.length-1]); - var params = parseURLEncodedTextArray(data); - if (params) - this.insertParameters(parentNode, params); - } - - ///if (Utils.isMultiPartRequest(file, context)) - ///{ - /// var data = this.parseMultiPartText(file, context); - /// if (data) - /// this.insertParts(parentNode, data); - ///} - - // moved to the top - ///var contentType = Utils.findHeader(file.requestHeaders, "content-type"); - - ///if (Firebug.JSONViewerModel.isJSON(contentType)) - var jsonData = { - responseText: data - }; - - if (Firebug.JSONViewerModel.isJSON(contentType, data)) - ///this.insertJSON(parentNode, file, context); - this.insertJSON(parentNode, jsonData, context); - - ///if (Firebug.XMLViewerModel.isXML(contentType)) - /// this.insertXML(parentNode, file, context); - - ///var postText = Utils.getPostText(file, context); - ///postText = Utils.formatPostText(postText); - var postText = data; - if (postText) - this.insertSource(parentNode, postText); - }, - - insertParameters: function(parentNode, params) - { - if (!params || !params.length) - return; - - var paramTable = this.paramsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostParamsTitle", paramTable)[0]; - //var paramTable = this.paramsTable.append(null, parentNode); - //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0); - - var tbody = paramTable.getElementsByTagName("tbody")[0]; - - NetInfoBody.headerDataTag.insertRows({headers: params}, row); - }, - - insertParts: function(parentNode, data) - { - if (!data.params || !data.params.length) - return; - - var partsTable = this.partsTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostPartsTitle", paramTable)[0]; - //var partsTable = this.partsTable.append(null, parentNode); - //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0); - - NetInfoBody.headerDataTag.insertRows({headers: data.params}, row); - }, - - insertJSON: function(parentNode, file, context) - { - ///var text = Utils.getPostText(file, context); - var text = file.responseText; - ///var data = parseJSONString(text, "http://" + file.request.originalURI.host); - var data = parseJSONString(text); - if (!data) - return; - - ///var jsonTable = this.jsonTable.append(null, parentNode); - var jsonTable = this.jsonTable.append({}, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0); - var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0]; - - if (!this.toggles) - this.toggles = {}; - - Firebug.DOMPanel.DirTable.tag.replace( - {object: data, toggles: this.toggles}, jsonBody); - }, - - insertXML: function(parentNode, file, context) - { - var text = Utils.getPostText(file, context); - - var jsonTable = this.xmlTable.append(null, parentNode); - ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0); - var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0]; - - Firebug.XMLViewerModel.insertXML(jsonBody, text); - }, - - insertSource: function(parentNode, text) - { - var sourceTable = this.sourceTable.append({object:{}}, parentNode); - var row = $$(".netInfoPostSourceTitle", sourceTable)[0]; - //var sourceTable = this.sourceTable.append(null, parentNode); - //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0); - - var param = {value: [text]}; - this.sourceBodyTag.insertRows({param: param}, row); - }, - - parseMultiPartText: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text == undefined) - return null; - - FBTrace.sysout("net.parseMultiPartText; boundary: ", text); - - var boundary = text.match(/\s*boundary=\s*(.*)/)[1]; - - var divider = "\r\n\r\n"; - var bodyStart = text.indexOf(divider); - var body = text.substr(bodyStart + divider.length); - - var postData = {}; - postData.mimeType = "multipart/form-data"; - postData.params = []; - - var parts = body.split("--" + boundary); - for (var i=0; i 1) ? m[1] : "", - value: trim(part[1]) - }); - } - - return postData; - } -}); - -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData; - -// ************************************************************************************************ - - -// TODO: xxxpedro net i18n -var $STRP = function(a){return a;}; - -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep, -{ - collapsed: true, - - tableTag: - DIV( - TABLE({width: "100%", cellpadding: 0, cellspacing: 0}, - TBODY() - ) - ), - - limitTag: - TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"}, - TD({"class": "netCol netLimitCol", colspan: 6}, - TABLE({cellpadding: 0, cellspacing: 0}, - TBODY( - TR( - TD( - SPAN({"class": "netLimitLabel"}, - $STRP("plural.Limit_Exceeded", [0]) - ) - ), - TD({style: "width:100%"}), - TD( - BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle", - onclick: "$onPreferences"}, - $STR("LimitPrefs") - ) - ), - TD(" ") - ) - ) - ) - ) - ), - - isCollapsed: function() - { - return this.collapsed; - }, - - onPreferences: function(event) - { - openNewTab("about:config"); - }, - - updateCounter: function(row) - { - removeClass(row, "collapsed"); - - // Update info within the limit row. - var limitLabel = row.getElementsByClassName("netLimitLabel").item(0); - limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]); - }, - - createTable: function(parent, limitInfo) - { - var table = this.tableTag.replace({}, parent); - var row = this.createRow(table.firstChild.firstChild, limitInfo); - return [table, row]; - }, - - createRow: function(parent, limitInfo) - { - var row = this.limitTag.insertRows(limitInfo, parent, this)[0]; - row.limitInfo = limitInfo; - return row; - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - if (data.indexOf("net.logLimit") != -1) - this.updateMaxLimit(); - }, - - updateMaxLimit: function() - { - var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit"); - maxQueueRequests = value ? value : maxQueueRequests; - } -}); - -var NetLimit = Firebug.NetMonitor.NetLimit; - -// ************************************************************************************************ - -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "netInfoResponseSizeLimit"}, - SPAN("$object.beforeLink"), - A({"class": "objectLink", onclick: "$onClickLink"}, - "$object.linkText" - ), - SPAN("$object.afterLink") - ), - - reLink: /^(.*)(.*)<\/a>(.*$)/, - append: function(obj, parent) - { - var m = obj.text.match(this.reLink); - return this.tag.append({onClickLink: obj.onClickLink, - object: { - beforeLink: m[1], - linkText: m[2], - afterLink: m[3] - }}, parent, this); - } -}); - -// ************************************************************************************************ -// ************************************************************************************************ - -Firebug.NetMonitor.Utils = -{ - findHeader: function(headers, name) - { - if (!headers) - return null; - - name = name.toLowerCase(); - for (var i = 0; i < headers.length; ++i) - { - var headerName = headers[i].name.toLowerCase(); - if (headerName == name) - return headers[i].value; - } - }, - - formatPostText: function(text) - { - if (text instanceof XMLDocument) - return getElementXML(text.documentElement); - else - return text; - }, - - getPostText: function(file, context, noLimit) - { - if (!file.postText) - { - file.postText = readPostTextFromRequest(file.request, context); - - if (!file.postText && context) - file.postText = readPostTextFromPage(file.href, context); - } - - if (!file.postText) - return file.postText; - - var limit = Firebug.netDisplayedPostBodyLimit; - if (file.postText.length > limit && !noLimit) - { - return cropString(file.postText, limit, - "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n"); - } - - return file.postText; - }, - - getResponseText: function(file, context) - { - // The response can be also empty string so, check agains "undefined". - return (typeof(file.responseText) != "undefined")? file.responseText : - context.sourceCache.loadText(file.href, file.method, file); - }, - - isURLEncodedRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0) - return true; - - // The header value doesn't have to be always exactly "application/x-www-form-urlencoded", - // there can be even charset specified. So, use indexOf rather than just "==". - var headerValue = Utils.findHeader(file.requestHeaders, "content-type"); - if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0) - return true; - - return false; - }, - - isMultiPartRequest: function(file, context) - { - var text = Utils.getPostText(file, context); - if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0) - return true; - return false; - }, - - getMimeType: function(mimeType, uri) - { - if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType))) - { - var ext = getFileExtension(uri); - if (!ext) - return mimeType; - else - { - var extMimeType = mimeExtensionMap[ext.toLowerCase()]; - return extMimeType ? extMimeType : mimeType; - } - } - else - return mimeType; - }, - - getDateFromSeconds: function(s) - { - var d = new Date(); - d.setTime(s*1000); - return d; - }, - - getHttpHeaders: function(request, file) - { - try - { - var http = QI(request, Ci.nsIHttpChannel); - file.status = request.responseStatus; - - // xxxHonza: is there any problem to do this in requestedFile method? - file.method = http.requestMethod; - file.urlParams = parseURLParams(file.href); - file.mimeType = Utils.getMimeType(request.contentType, request.name); - - if (!file.responseHeaders && Firebug.collectHttpHeaders) - { - var requestHeaders = [], responseHeaders = []; - - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - requestHeaders.push({name: name, value: value}); - } - }); - http.visitResponseHeaders({ - visitHeader: function(name, value) - { - responseHeaders.push({name: name, value: value}); - } - }); - - file.requestHeaders = requestHeaders; - file.responseHeaders = responseHeaders; - } - } - catch (exc) - { - // An exception can be throwed e.g. when the request is aborted and - // request.responseStatus is accessed. - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc); - } - }, - - isXHR: function(request) - { - try - { - var callbacks = request.notificationCallbacks; - var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null; - if (FBTrace.DBG_NET) - FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request)); - - return (xhrRequest != null); - } - catch (exc) - { - } - - return false; - }, - - getFileCategory: function(file) - { - if (file.category) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file); - return file.category; - } - - if (file.isXHR) - { - if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file); - return file.category = "xhr"; - } - - if (!file.mimeType) - { - var ext = getFileExtension(file.href); - if (ext) - file.mimeType = mimeExtensionMap[ext.toLowerCase()]; - } - - /*if (FBTrace.DBG_NET) - FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] + - ", mimeType: " + file.mimeType + " for: " + file.href, file);*/ - - if (!file.mimeType) - return ""; - - // Solve cases when charset is also specified, eg "text/html; charset=UTF-8". - var mimeType = file.mimeType; - if (mimeType) - mimeType = mimeType.split(";")[0]; - - return (file.category = mimeCategoryMap[mimeType]); - } -}; - -var Utils = Firebug.NetMonitor.Utils; - -// ************************************************************************************************ - -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable); -//Firebug.registerActivableModule(Firebug.NetMonitor); -//Firebug.registerPanel(NetPanel); - -Firebug.registerModule(Firebug.NetMonitor); -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/reps.js b/branches/firebug1.5/content/firebug1.4/reps.js deleted file mode 100644 index d6c2366a..00000000 --- a/branches/firebug1.5/content/firebug1.4/reps.js +++ /dev/null @@ -1,1915 +0,0 @@ -/* See license.txt for terms of usage */ - -var FirebugReps = FBL.ns(function() { with (FBL) { - - -// ************************************************************************************************ -// Common Tags - -var OBJECTBOX = this.OBJECTBOX = - SPAN({"class": "objectBox objectBox-$className"}); - -var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({"class": "objectBox objectBox-$className"}); - -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation - A({ - "class": "objectLink objectLink-$className a11yFocus", - href: "javascript:void(0)", - _repObject: "$object" - }) - : // Other browsers - A({ - "class": "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - -// ************************************************************************************************ - -this.Undefined = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("undefined"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "undefined", - - supportsObject: function(object, type) - { - return type == "undefined"; - } -}); - -// ************************************************************************************************ - -this.Null = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("null"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "null", - - supportsObject: function(object, type) - { - return object == null; - } -}); - -// ************************************************************************************************ - -this.Nada = domplate(Firebug.Rep, -{ - tag: SPAN(""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "nada" -}); - -// ************************************************************************************************ - -this.Number = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "number", - - supportsObject: function(object, type) - { - return type == "boolean" || type == "number"; - } -}); - -// ************************************************************************************************ - -this.String = domplate(Firebug.Rep, -{ - tag: OBJECTBOX(""$object""), - - shortTag: OBJECTBOX(""$object|cropString""), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "string", - - supportsObject: function(object, type) - { - return type == "string"; - } -}); - -// ************************************************************************************************ - -this.Text = domplate(Firebug.Rep, -{ - tag: OBJECTBOX("$object"), - - shortTag: OBJECTBOX("$object|cropString"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "text" -}); - -// ************************************************************************************************ - -this.Caption = domplate(Firebug.Rep, -{ - tag: SPAN({"class": "caption"}, "$object") -}); - -// ************************************************************************************************ - -this.Warning = domplate(Firebug.Rep, -{ - tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR") -}); - -// ************************************************************************************************ - -this.Func = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("$object|summarizeFunction"), - - summarizeFunction: function(fn) - { - var fnRegex = /function ([^(]+\([^)]*\)) \{/; - var fnText = safeToString(fn); - - var m = fnRegex.exec(fnText); - return m ? m[1] : "function()"; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copySource: function(fn) - { - copyToClipboard(safeToString(fn)); - }, - - monitor: function(fn, script, monitored) - { - if (monitored) - Firebug.Debugger.unmonitorScript(fn, script, "monitor"); - else - Firebug.Debugger.monitorScript(fn, script, "monitor"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "function", - - supportsObject: function(object, type) - { - return isFunction(object); - }, - - inspectObject: function(fn, context) - { - var sourceLink = findSourceForFunction(fn, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - if (FBTrace.DBG_FUNCTION_NAME) - FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink); - }, - - getTooltip: function(fn, context) - { - var script = findScriptForFunctionInContext(context, fn); - if (script) - return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]); - else - if (fn.toString) - return fn.toString(); - }, - - getTitle: function(fn, context) - { - var name = fn.name ? fn.name : "function"; - return name + "()"; - }, - - getContextMenuItems: function(fn, target, context, script) - { - if (!script) - script = findScriptForFunctionInContext(context, fn); - if (!script) - return; - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = script ? getFunctionName(script, context) : fn.name; - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, fn) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); - -// ************************************************************************************************ -/* -this.jsdScript = domplate(Firebug.Rep, -{ - copySource: function(script) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.copySource(fn); - }, - - monitor: function(fn, script, monitored) - { - fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.monitor(fn, script, monitored); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "jsdScript", - inspectable: false, - - supportsObject: function(object, type) - { - return object instanceof jsdIScript; - }, - - inspectObject: function(script, context) - { - var sourceLink = getSourceLinkForScript(script, context); - if (sourceLink) - Firebug.chrome.select(sourceLink); - }, - - getRealObject: function(script, context) - { - return script; - }, - - getTooltip: function(script) - { - return $STRF("jsdIScript", [script.tag]); - }, - - getTitle: function(script, context) - { - var fn = script.functionObject.getWrappedValue(); - return FirebugReps.Func.getTitle(fn, context); - }, - - getContextMenuItems: function(script, target, context) - { - var fn = script.functionObject.getWrappedValue(); - - var scriptInfo = getSourceFileAndLineByScript(context, script); - var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false; - - var name = getFunctionName(script, context); - - return [ - {label: "CopySource", command: bindFixed(this.copySource, this, script) }, - "-", - {label: $STRF("ShowCallsInConsole", [name]), nol10n: true, - type: "checkbox", checked: monitored, - command: bindFixed(this.monitor, this, fn, script, monitored) } - ]; - } -}); -/**/ -//************************************************************************************************ - -this.Obj = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - SPAN({"class": "objectTitle"}, "$object|getTitle "), - - SPAN({"class": "objectProps"}, - SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"), - FOR("prop", "$object|propIterator", - SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"), - SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"), - TAG("$prop.tag", {object: "$prop.object"}), - SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim") - ), - SPAN({"class": "objectRightBrace"}, "}") - ) - ), - - propNumberTag: - SPAN({"class": "objectProp-number"}, "$object"), - - propStringTag: - SPAN({"class": "objectProp-string"}, ""$object""), - - propObjectTag: - SPAN({"class": "objectProp-object"}, "$object"), - - propIterator: function (object) - { - ///Firebug.ObjectShortIteratorMax; - var maxLength = 55; // default max length for long representation - - if (!object) - return []; - - var props = []; - var length = 0; - - var numProperties = 0; - var numPropertiesShown = 0; - var maxLengthReached = false; - - var lib = this; - - var propRepsMap = - { - "boolean": this.propNumberTag, - "number": this.propNumberTag, - "string": this.propStringTag, - "object": this.propObjectTag - }; - - try - { - var title = Firebug.Rep.getTitle(object); - length += title.length; - - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var type = typeof(value); - if (type == "boolean" || - type == "number" || - (type == "string" && value) || - (type == "object" && value && value.toString)) - { - var tag = propRepsMap[type]; - - var value = (type == "object") ? - Firebug.getRep(value).getTitle(value) : - value + ""; - - length += name.length + value.length + 4; - - if (length <= maxLength) - { - props.push({ - tag: tag, - name: name, - object: value, - equal: "=", - delim: ", " - }); - - numPropertiesShown++; - } - else - maxLengthReached = true; - - } - - numProperties++; - - if (maxLengthReached && numProperties > numPropertiesShown) - break; - } - - if (numProperties > numPropertiesShown) - { - props.push({ - object: "...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }); - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - fb_1_6_propIterator: function (object, max) - { - max = max || 3; - if (!object) - return []; - - var props = []; - var len = 0, count = 0; - - try - { - for (var name in object) - { - var value; - try - { - value = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof(value); - if (t == "boolean" || t == "number" || (t == "string" && value) - || (t == "object" && value && value.toString)) - { - var rep = Firebug.getRep(value); - var tag = rep.shortTag || rep.tag; - if (t == "object") - { - value = rep.getTitle(value); - tag = rep.titleTag; - } - count++; - if (count <= max) - props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "}); - else - break; - } - } - if (count > max) - { - props[Math.max(1,max-1)] = { - object: "more...", //xxxHonza localization - tag: FirebugReps.Caption.tag, - name: "", - equal:"", - delim:"" - }; - } - else if (props.length > 0) - { - props[props.length-1].delim = ''; - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - return props; - }, - - /* - propIterator: function (object) - { - if (!object) - return []; - - var props = []; - var len = 0; - - try - { - for (var name in object) - { - var val; - try - { - val = object[name]; - } - catch (exc) - { - continue; - } - - var t = typeof val; - if (t == "boolean" || t == "number" || (t == "string" && val) - || (t == "object" && !isFunction(val) && val && val.toString)) - { - var title = (t == "object") - ? Firebug.getRep(val).getTitle(val) - : val+""; - - len += name.length + title.length + 1; - if (len < 50) - props.push({name: name, value: title}); - else - break; - } - } - } - catch (exc) - { - // Sometimes we get exceptions when trying to read from certain objects, like - // StorageList, but don't let that gum up the works - // XXXjjb also History.previous fails because object is a web-page object which does not have - // permission to read the history - } - - return props; - }, - /**/ - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object, type) - { - return true; - } -}); - - -// ************************************************************************************************ - -this.Arr = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|arrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - SPAN({"class": "arrayRightBracket", role : "presentation"}, "]") - ), - - shortTag: - OBJECTBOX({_repObject: "$object"}, - SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["), - FOR("item", "$object|shortArrayIterator", - TAG("$item.tag", {object: "$item.object"}), - SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim") - ), - // TODO: xxxpedro - confirm this on Firebug - //FOR("prop", "$object|shortPropIterator", - // " $prop.name=", - // SPAN({"class": "objectPropValue"}, "$prop.value|cropString") - //), - SPAN({"class": "arrayRightBracket"}, "]") - ), - - arrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - return items; - }, - - shortArrayIterator: function(array) - { - var items = []; - for (var i = 0; i < array.length && i < 3; ++i) - { - var value = array[i]; - var rep = Firebug.getRep(value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var delim = (i == array.length-1 ? "" : ", "); - - items.push({object: value, tag: tag, delim: delim}); - } - - if (array.length > 3) - items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""}); - - return items; - }, - - shortPropIterator: this.Obj.propIterator, - - getItemIndex: function(child) - { - var arrayIndex = 0; - for (child = child.previousSibling; child; child = child.previousSibling) - { - if (child.repObject) - ++arrayIndex; - } - return arrayIndex; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "array", - - supportsObject: function(object) - { - return this.isArray(object); - }, - - // http://code.google.com/p/fbug/issues/detail?id=874 - // BEGIN Yahoo BSD Source (modified here) YAHOO.lang.isArray, YUI 2.2.2 June 2007 - isArray: function(obj) { - try { - if (!obj) - return false; - else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8) - return true; - else if (isFinite(obj.length) && isFunction(obj.splice)) - return true; - else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments - return true; - else if (instanceOf(obj, "HTMLCollection")) - return true; - else if (instanceOf(obj, "NodeList")) - return true; - else - return false; - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - { - FBTrace.sysout("isArray FAILS:", exc); /* Something weird: without the try/catch, OOM, with no exception?? */ - FBTrace.sysout("isArray Fails on obj", obj); - } - } - - return false; - }, - // END Yahoo BSD SOURCE See license below. - - getTitle: function(object, context) - { - return "[" + object.length + "]"; - } -}); - -// ************************************************************************************************ - -this.Property = domplate(Firebug.Rep, -{ - supportsObject: function(object) - { - return object instanceof Property; - }, - - getRealObject: function(prop, context) - { - return prop.object[prop.name]; - }, - - getTitle: function(prop, context) - { - return prop.name; - } -}); - -// ************************************************************************************************ - -this.NetFile = domplate(this.Obj, -{ - supportsObject: function(object) - { - return object instanceof Firebug.NetFile; - }, - - browseObject: function(file, context) - { - openNewTab(file.href); - return true; - }, - - getRealObject: function(file, context) - { - return null; - } -}); - -// ************************************************************************************************ - -this.Except = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({_repObject: "$object"}, "$object.message"), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "exception", - - supportsObject: function(object) - { - return object instanceof ErrorCopy; - } -}); - - -// ************************************************************************************************ - -this.Element = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"), - FOR("attr", "$object|attrIterator", - " $attr.nodeName="", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), """ - ), - ">" - ), - - shortTag: - OBJECTLINK( - SPAN({"class": "$object|getVisible"}, - SPAN({"class": "selectorTag"}, "$object|getSelectorTag"), - SPAN({"class": "selectorId"}, "$object|getSelectorId"), - SPAN({"class": "selectorClass"}, "$object|getSelectorClass"), - SPAN({"class": "selectorValue"}, "$object|getValue") - ) - ), - - getVisible: function(elt) - { - return isVisible(elt) ? "" : "selectorHidden"; - }, - - getSelectorTag: function(elt) - { - return elt.nodeName.toLowerCase(); - }, - - getSelectorId: function(elt) - { - return elt.id ? "#" + elt.id : ""; - }, - - getSelectorClass: function(elt) - { - return elt.className ? "." + elt.className.split(" ")[0] : ""; - }, - - getValue: function(elt) - { - // TODO: xxxpedro - return ""; - var value; - if (elt instanceof HTMLImageElement) - value = getFileName(elt.src); - else if (elt instanceof HTMLAnchorElement) - value = getFileName(elt.href); - else if (elt instanceof HTMLInputElement) - value = elt.value; - else if (elt instanceof HTMLFormElement) - value = getFileName(elt.action); - else if (elt instanceof HTMLScriptElement) - value = getFileName(elt.src); - - return value ? " " + cropString(value, 20) : ""; - }, - - attrIterator: function(elt) - { - var attrs = []; - var idAttr, classAttr; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName && attr.nodeName.indexOf("firebug-") != -1) - continue; - else if (attr.nodeName == "id") - idAttr = attr; - else if (attr.nodeName == "class") - classAttr = attr; - else - attrs.push(attr); - } - } - if (classAttr) - attrs.splice(0, 0, classAttr); - if (idAttr) - attrs.splice(0, 0, idAttr); - - return attrs; - }, - - shortAttrIterator: function(elt) - { - var attrs = []; - if (elt.attributes) - { - for (var i = 0; i < elt.attributes.length; ++i) - { - var attr = elt.attributes[i]; - if (attr.nodeName == "id" || attr.nodeName == "class") - attrs.push(attr); - } - } - - return attrs; - }, - - getHidden: function(elt) - { - return isVisible(elt) ? "" : "nodeHidden"; - }, - - getXPath: function(elt) - { - return getElementTreeXPath(elt); - }, - - // TODO: xxxpedro remove this? - getNodeText: function(element) - { - var text = element.textContent; - if (Firebug.showFullTextNodes) - return text; - else - return cropString(text, 50); - }, - /**/ - - getNodeTextGroups: function(element) - { - var text = element.textContent; - if (!Firebug.showFullTextNodes) - { - text=cropString(text,50); - } - - var escapeGroups=[]; - - if (Firebug.showTextNodesWithWhitespace) - escapeGroups.push({ - 'group': 'whitespace', - 'class': 'nodeWhiteSpace', - 'extra': { - '\t': '_Tab', - '\n': '_Para', - ' ' : '_Space' - } - }); - if (Firebug.showTextNodesWithEntities) - escapeGroups.push({ - 'group':'text', - 'class':'nodeTextEntity', - 'extra':{} - }); - - if (escapeGroups.length) - return escapeGroupsForEntities(text, escapeGroups); - else - return [{str:text,'class':'',extra:''}]; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyHTML: function(elt) - { - var html = getElementXML(elt); - copyToClipboard(html); - }, - - copyInnerHTML: function(elt) - { - copyToClipboard(elt.innerHTML); - }, - - copyXPath: function(elt) - { - var xpath = getElementXPath(elt); - copyToClipboard(xpath); - }, - - persistor: function(context, xpath) - { - var elts = xpath - ? getElementsByXPath(context.window.document, xpath) - : null; - - return elts && elts.length ? elts[0] : null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "element", - - supportsObject: function(object) - { - //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string"; - return instanceOf(object, "Element"); - }, - - browseObject: function(elt, context) - { - var tag = elt.nodeName.toLowerCase(); - if (tag == "script") - openNewTab(elt.src); - else if (tag == "link") - openNewTab(elt.href); - else if (tag == "a") - openNewTab(elt.href); - else if (tag == "img") - openNewTab(elt.src); - - return true; - }, - - persistObject: function(elt, context) - { - var xpath = getElementXPath(elt); - - return bind(this.persistor, top, xpath); - }, - - getTitle: function(element, context) - { - return getElementCSSSelector(element); - }, - - getTooltip: function(elt) - { - return this.getXPath(elt); - }, - - getContextMenuItems: function(elt, target, context) - { - var monitored = areEventsMonitored(elt, null, context); - - return [ - {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) }, - {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) }, - {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) }, - "-", - {label: "ShowEventsInConsole", type: "checkbox", checked: monitored, - command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) }, - "-", - {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) } - ]; - } -}); - -// ************************************************************************************************ - -this.TextNode = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK( - "<", - SPAN({"class": "nodeTag"}, "TextNode"), - " textContent="", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), """, - ">" - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "textNode", - - supportsObject: function(object) - { - return object instanceof Text; - } -}); - -// ************************************************************************************************ - -this.Document = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(doc) - { - return doc.location ? getFileName(doc.location.href) : ""; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Document || object instanceof XMLDocument; - return instanceOf(object, "Document"); - }, - - browseObject: function(doc, context) - { - openNewTab(doc.location.href); - return true; - }, - - persistObject: function(doc, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window.document; - }, - - getTitle: function(win, context) - { - return "document"; - }, - - getTooltip: function(doc) - { - return doc.location.href; - } -}); - -// ************************************************************************************************ - -this.StyleSheet = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(styleSheet) - { - return getFileName(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(styleSheet) - { - copyToClipboard(styleSheet.href); - }, - - openInTab: function(styleSheet) - { - openNewTab(styleSheet.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof CSSStyleSheet; - return instanceOf(object, "CSSStyleSheet"); - }, - - browseObject: function(styleSheet, context) - { - openNewTab(styleSheet.href); - return true; - }, - - persistObject: function(styleSheet, context) - { - return bind(this.persistor, top, styleSheet.href); - }, - - getTooltip: function(styleSheet) - { - return styleSheet.href; - }, - - getContextMenuItems: function(styleSheet, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) } - ]; - }, - - persistor: function(context, href) - { - return getStyleSheetByHref(href, context); - } -}); - -// ************************************************************************************************ - -this.Window = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")), - - getLocation: function(win) - { - try - { - return (win && win.location && !win.closed) ? getFileName(win.location.href) : ""; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.Window window closed?"); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - return instanceOf(object, "Window"); - }, - - browseObject: function(win, context) - { - openNewTab(win.location.href); - return true; - }, - - persistObject: function(win, context) - { - return this.persistor; - }, - - persistor: function(context) - { - return context.window; - }, - - getTitle: function(win, context) - { - return "window"; - }, - - getTooltip: function(win) - { - if (win && !win.closed) - return win.location.href; - } -}); - -// ************************************************************************************************ - -this.Event = domplate(Firebug.Rep, -{ - tag: TAG("$copyEventTag", {object: "$object|copyEvent"}), - - copyEventTag: - OBJECTLINK("$object|summarizeEvent"), - - summarizeEvent: function(event) - { - var info = [event.type, ' ']; - - var eventFamily = getEventFamily(event.type); - if (eventFamily == "mouse") - info.push("clientX=", event.clientX, ", clientY=", event.clientY); - else if (eventFamily == "key") - info.push("charCode=", event.charCode, ", keyCode=", event.keyCode); - - return info.join(""); - }, - - copyEvent: function(event) - { - return new EventCopy(event); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "object", - - supportsObject: function(object) - { - //return object instanceof Event || object instanceof EventCopy; - return instanceOf(object, "Event") || instanceOf(object, "EventCopy"); - }, - - getTitle: function(event, context) - { - return "Event " + event.type; - } -}); - -// ************************************************************************************************ - -this.SourceLink = domplate(Firebug.Rep, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - hideSourceLink: function(sourceLink) - { - return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true; - }, - - getSourceLinkTitle: function(sourceLink) - { - if (!sourceLink) - return ""; - - try - { - var fileName = getFileName(sourceLink.href); - fileName = decodeURIComponent(fileName); - fileName = cropString(fileName, 17); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc); - } - - return typeof sourceLink.line == "number" ? - fileName + " (line " + sourceLink.line + ")" : - fileName; - - // TODO: xxxpedro - //return $STRF("Line", [fileName, sourceLink.line]); - }, - - copyLink: function(sourceLink) - { - copyToClipboard(sourceLink.href); - }, - - openInTab: function(sourceLink) - { - openNewTab(sourceLink.href); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceLink", - - supportsObject: function(object) - { - return object instanceof SourceLink; - }, - - getTooltip: function(sourceLink) - { - return decodeURI(sourceLink.href); - }, - - inspectObject: function(sourceLink, context) - { - if (sourceLink.type == "js") - { - var scriptFile = getSourceFileByHref(sourceLink.href, context); - if (scriptFile) - return Firebug.chrome.select(sourceLink); - } - else if (sourceLink.type == "css") - { - // If an object is defined, treat it as the highest priority for - // inspect actions - if (sourceLink.object) { - Firebug.chrome.select(sourceLink.object); - return; - } - - var stylesheet = getStyleSheetByHref(sourceLink.href, context); - if (stylesheet) - { - var ownerNode = stylesheet.ownerNode; - if (ownerNode) - { - Firebug.chrome.select(sourceLink, "html"); - return; - } - - var panel = context.getPanel("stylesheet"); - if (panel && panel.getRuleByLine(stylesheet, sourceLink.line)) - return Firebug.chrome.select(sourceLink); - } - } - - // Fallback is to just open the view-source window on the file - viewSource(sourceLink.href, sourceLink.line); - }, - - browseObject: function(sourceLink, context) - { - openNewTab(sourceLink.href); - return true; - }, - - getContextMenuItems: function(sourceLink, target, context) - { - return [ - {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceFile = domplate(this.SourceLink, -{ - tag: - OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"), - - persistor: function(context, href) - { - return getSourceFileByHref(href, context); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "sourceFile", - - supportsObject: function(object) - { - return object instanceof SourceFile; - }, - - persistObject: function(sourceFile) - { - return bind(this.persistor, top, sourceFile.href); - }, - - browseObject: function(sourceLink, context) - { - }, - - getTooltip: function(sourceFile) - { - return sourceFile.href; - } -}); - -// ************************************************************************************************ - -this.StackFrame = domplate(Firebug.Rep, // XXXjjb Since the repObject is fn the stack does not have correct line numbers -{ - tag: - OBJECTBLOCK( - A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"), - " ( ", - FOR("arg", "$object|argIterator", - TAG("$arg.tag", {object: "$arg.value"}), - SPAN({"class": "arrayComma"}, "$arg.delim") - ), - " )", - SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle") - ), - - getCallName: function(frame) - { - //TODO: xxxpedro reps StackFrame - return frame.name || "anonymous"; - - //return getFunctionName(frame.script, frame.context); - }, - - getSourceLinkTitle: function(frame) - { - //TODO: xxxpedro reps StackFrame - var fileName = cropString(getFileName(frame.href), 20); - return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : ""); - - var fileName = cropString(getFileName(frame.href), 17); - return $STRF("Line", [fileName, frame.lineNo]); - }, - - argIterator: function(frame) - { - if (!frame.args) - return []; - - var items = []; - - for (var i = 0; i < frame.args.length; ++i) - { - var arg = frame.args[i]; - - if (!arg) - break; - - var rep = Firebug.getRep(arg.value); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - - var delim = (i == frame.args.length-1 ? "" : ", "); - - items.push({name: arg.name, value: arg.value, tag: tag, delim: delim}); - } - - return items; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackFrame", - - supportsObject: function(object) - { - return object instanceof StackFrame; - }, - - inspectObject: function(stackFrame, context) - { - var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js"); - Firebug.chrome.select(sourceLink); - }, - - getTooltip: function(stackFrame, context) - { - return $STRF("Line", [stackFrame.href, stackFrame.lineNo]); - } - -}); - -// ************************************************************************************************ - -this.StackTrace = domplate(Firebug.Rep, -{ - tag: - FOR("frame", "$object.frames focusRow", - TAG(this.StackFrame.tag, {object: "$frame"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "stackTrace", - - supportsObject: function(object) - { - return object instanceof StackTrace; - } -}); - -// ************************************************************************************************ - -this.jsdStackFrame = domplate(Firebug.Rep, -{ - inspectable: false, - - supportsObject: function(object) - { - return (object instanceof jsdIStackFrame) && (object.isValid); - }, - - getTitle: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - return getFunctionName(frame.script, context); - }, - - getTooltip: function(frame, context) - { - if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null - var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame); - if (sourceInfo) - return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]); - else - return $STRF("Line", [frame.script.fileName, frame.line]); - }, - - getContextMenuItems: function(frame, target, context) - { - var fn = frame.script.functionObject.getWrappedValue(); - return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script); - } -}); - -// ************************************************************************************************ - -this.ErrorMessage = domplate(Firebug.Rep, -{ - tag: - OBJECTBOX({ - $hasTwisty: "$object|hasStackTrace", - $hasBreakSwitch: "$object|hasBreakSwitch", - $breakForError: "$object|hasErrorBreak", - _repObject: "$object", - _stackTrace: "$object|getLastErrorStackTrace", - onclick: "$onToggleError"}, - - DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'}, - "$object.message|getMessage" - ), - DIV({"class": "errorTrace"}), - DIV({"class": "errorSourceBox errorSource-$object|getSourceType"}, - IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}), - A({"class": "errorSource a11yFocus"}, "$object|getLine") - ), - TAG(this.SourceLink.tag, {object: "$object|getSourceLink"}) - ), - - getLastErrorStackTrace: function(error) - { - return error.trace; - }, - - hasStackTrace: function(error) - { - var url = error.href.toString(); - var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1); - return !fromCommandLine && error.trace; - }, - - hasBreakSwitch: function(error) - { - return error.href && error.lineNo > 0; - }, - - hasErrorBreak: function(error) - { - return fbs.hasErrorBreakpoint(error.href, error.lineNo); - }, - - getMessage: function(message) - { - var re = /\[Exception... "(.*?)" nsresult:/; - var m = re.exec(message); - return m ? m[1] : message; - }, - - getLine: function(error) - { - if (error.category == "js") - { - if (error.source) - return cropString(error.source, 80); - else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1) - return cropString(error.getSourceLine(), 80); - } - }, - - getSourceLink: function(error) - { - var ext = error.category == "css" ? "css" : "js"; - return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null; - }, - - getSourceType: function(error) - { - // Errors occurring inside of HTML event handlers look like "foo.html (line 1)" - // so let's try to skip those - if (error.source) - return "syntax"; - else if (error.lineNo == 1 && getFileExtension(error.href) != "js") - return "none"; - else if (error.category == "css") - return "none"; - else if (!error.href || !error.lineNo) - return "none"; - else - return "exec"; - }, - - onToggleError: function(event) - { - var target = event.currentTarget; - if (hasClass(event.target, "errorBreak")) - { - this.breakOnThisError(target.repObject); - } - else if (hasClass(event.target, "errorSource")) - { - var panel = Firebug.getElementPanel(event.target); - this.inspectObject(target.repObject, panel.context); - } - else if (hasClass(event.target, "errorTitle")) - { - var traceBox = target.childNodes[1]; - toggleClass(target, "opened"); - event.target.setAttribute('aria-checked', hasClass(target, "opened")); - if (hasClass(target, "opened")) - { - if (target.stackTrace) - var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox); - if (Firebug.A11yModel.enabled) - { - var panel = Firebug.getElementPanel(event.target); - dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]); - } - } - else - clearNode(traceBox); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyError: function(error) - { - var message = [ - this.getMessage(error.message), - error.href, - "Line " + error.lineNo - ]; - copyToClipboard(message.join("\n")); - }, - - breakOnThisError: function(error) - { - if (this.hasErrorBreak(error)) - Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo); - else - Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "errorMessage", - inspectable: false, - - supportsObject: function(object) - { - return object instanceof ErrorMessage; - }, - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - FirebugReps.SourceLink.inspectObject(sourceLink, context); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - var items = [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) } - ]; - - if (error.category == "css") - { - items.push( - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - - optionMenu("BreakOnAllErrors", "breakOnErrors") - ); - } - - return items; - } -}); - -// ************************************************************************************************ - -this.Assert = domplate(Firebug.Rep, -{ - tag: - DIV( - DIV({"class": "errorTitle"}), - DIV({"class": "assertDescription"}) - ), - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "assert", - - inspectObject: function(error, context) - { - var sourceLink = this.getSourceLink(error); - Firebug.chrome.select(sourceLink); - }, - - getContextMenuItems: function(error, target, context) - { - var breakOnThisError = this.hasErrorBreak(error); - - return [ - {label: "CopyError", command: bindFixed(this.copyError, this, error) }, - "-", - {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError, - command: bindFixed(this.breakOnThisError, this, error) }, - {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors, - command: bindFixed(this.breakOnAllErrors, this, error) } - ]; - } -}); - -// ************************************************************************************************ - -this.SourceText = domplate(Firebug.Rep, -{ - tag: - DIV( - FOR("line", "$object|lineIterator", - DIV({"class": "sourceRow", role : "presentation"}, - SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"), - SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text") - ) - ) - ), - - lineIterator: function(sourceText) - { - var maxLineNoChars = (sourceText.lines.length + "").length; - var list = []; - - for (var i = 0; i < sourceText.lines.length; ++i) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNo = (i+1) + ""; - while (lineNo.length < maxLineNoChars) - lineNo = " " + lineNo; - - list.push({lineNo: lineNo, text: sourceText.lines[i]}); - } - - return list; - }, - - getHTML: function(sourceText) - { - return getSourceLineRange(sourceText, 1, sourceText.lines.length); - } -}); - -//************************************************************************************************ -this.nsIDOMHistory = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showHistory"}, - OBJECTLINK("$object|summarizeHistory") - ), - - className: "nsIDOMHistory", - - summarizeHistory: function(history) - { - try - { - var items = history.length; - return items + " history entries"; - } - catch(exc) - { - return "object does not support history (nsIDOMHistory)"; - } - }, - - showHistory: function(history) - { - try - { - var items = history.length; // if this throws, then unsupported - Firebug.chrome.select(history); - } - catch (exc) - { - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object, type) - { - return (object instanceof Ci.nsIDOMHistory); - } -}); - -// ************************************************************************************************ -this.ApplicationCache = domplate(Firebug.Rep, -{ - tag:OBJECTBOX({onclick: "$showApplicationCache"}, - OBJECTLINK("$object|summarizeCache") - ), - - summarizeCache: function(applicationCache) - { - try - { - return applicationCache.length + " items in offline cache"; - } - catch(exc) - { - return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264"; - } - }, - - showApplicationCache: function(event) - { - openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264"); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "applicationCache", - - supportsObject: function(object, type) - { - if (Ci.nsIDOMOfflineResourceList) - return (object instanceof Ci.nsIDOMOfflineResourceList); - } - -}); - -this.Storage = domplate(Firebug.Rep, -{ - tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")), - - summarize: function(storage) - { - return storage.length +" items in Storage"; - }, - show: function(storage) - { - openNewTab("http://dev.w3.org/html5/webstorage/#storage-0"); - }, - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - className: "Storage", - - supportsObject: function(object, type) - { - return (object instanceof Storage); - } - -}); - -// ************************************************************************************************ -Firebug.registerRep( - //this.nsIDOMHistory, // make this early to avoid exceptions - this.Undefined, - this.Null, - this.Number, - this.String, - this.Window, - //this.ApplicationCache, // must come before Arr (array) else exceptions. - //this.ErrorMessage, - this.Element, - //this.TextNode, - this.Document, - this.StyleSheet, - this.Event, - //this.SourceLink, - //this.SourceFile, - //this.StackTrace, - //this.StackFrame, - //this.jsdStackFrame, - //this.jsdScript, - //this.NetFile, - this.Property, - this.Except, - this.Arr -); - -Firebug.setDefaultReps(this.Func, this.Obj); - -}}); - -// ************************************************************************************************ -/* - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source" - * in only this file reps.js. John J. Barton June 2007. - * -Software License Agreement (BSD License) - -Copyright (c) 2006, Yahoo! Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, are -permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Yahoo! Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Yahoo! Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * / - */ diff --git a/branches/firebug1.5/content/firebug1.4/script.js b/branches/firebug1.5/content/firebug1.4/script.js deleted file mode 100644 index 340d8ec5..00000000 --- a/branches/firebug1.5/content/firebug1.4/script.js +++ /dev/null @@ -1,297 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Script Module - -Firebug.Script = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null; - }, - - selectSourceCode: function(index) - { - this.getPanel().selectSourceCode(index); - } -}); - -Firebug.registerModule(Firebug.Script); - - -// ************************************************************************************************ -// Script Panel - -function ScriptPanel(){}; - -ScriptPanel.prototype = extend(Firebug.Panel, -{ - name: "Script", - title: "Script", - - selectIndex: 0, // index of the current selectNode's option - sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script") - - options: { - hasToolButtons: true - }, - - create: function() - { - Firebug.Panel.create.apply(this, arguments); - - this.onChangeSelect = bind(this.onChangeSelect, this); - - var doc = Firebug.browser.document; - var scripts = doc.getElementsByTagName("script"); - var selectNode = this.selectNode = createElement("select"); - - for(var i=0, script; script=scripts[i]; i++) - { - // Don't show Firebug Lite source code in the list of options - if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore")) - continue; - - var fileName = getFileName(script.src) || getFileName(doc.location.href); - var option = createElement("option", {value:i}); - - option.appendChild(Firebug.chrome.document.createTextNode(fileName)); - selectNode.appendChild(option); - }; - - this.toolButtonsNode.appendChild(selectNode); - }, - - initialize: function() - { - // we must render the code first, so the persistent state can be restore - this.selectSourceCode(this.selectIndex); - - Firebug.Panel.initialize.apply(this, arguments); - - addEvent(this.selectNode, "change", this.onChangeSelect); - }, - - shutdown: function() - { - removeEvent(this.selectNode, "change", this.onChangeSelect); - - Firebug.Panel.shutdown.apply(this, arguments); - }, - - detach: function(oldChrome, newChrome) - { - Firebug.Panel.detach.apply(this, arguments); - - var oldPanel = oldChrome.getPanel("Script"); - var index = oldPanel.selectIndex; - - this.selectNode.selectedIndex = index; - this.selectIndex = index; - this.sourceIndex = -1; - }, - - onChangeSelect: function(event) - { - var select = this.selectNode; - - this.selectIndex = select.selectedIndex; - - var option = select.options[select.selectedIndex]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - selectSourceCode: function(index) - { - var select = this.selectNode; - select.selectedIndex = index; - - var option = select.options[index]; - if (!option) - return; - - var selectedSourceIndex = parseInt(option.value); - - this.renderSourceCode(selectedSourceIndex); - }, - - renderSourceCode: function(index) - { - if (this.sourceIndex != index) - { - var renderProcess = function renderProcess(src) - { - var html = [], - hl = 0; - - src = isIE && !isExternal ? - src+'\n' : // IE put an extra line when reading source of local resources - '\n'+src; - - // find the number of lines of code - src = src.replace(/\n\r|\r\n/g, "\n"); - var match = src.match(/[\n]/g); - var lines=match ? match.length : 0; - - // render the full source code + line numbers html - html[hl++] = '
                                ';
                                -                html[hl++] = escapeHTML(src);
                                -                html[hl++] = '
                                '; - - // render the line number divs - for(var l=1, lines; l<=lines; l++) - { - html[hl++] = '
                                '; - html[hl++] = l; - html[hl++] = '
                                '; - } - - html[hl++] = '
                                '; - - updatePanel(html); - }; - - var updatePanel = function(html) - { - self.panelNode.innerHTML = html.join(""); - - // IE needs this timeout, otherwise the panel won't scroll - setTimeout(function(){ - self.synchronizeUI(); - },0); - }; - - var onFailure = function() - { - FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode); - }; - - var self = this; - - var doc = Firebug.browser.document; - var script = doc.getElementsByTagName("script")[index]; - var url = getScriptURL(script); - var isExternal = url && url != doc.location.href; - - try - { - if (isExternal) - { - Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure}); - } - else - { - var src = script.innerHTML; - renderProcess(src); - } - } - catch(e) - { - onFailure(); - } - - this.sourceIndex = index; - } - } -}); - -Firebug.registerPanel(ScriptPanel); - - -// ************************************************************************************************ - - -var getScriptURL = function getScriptURL(script) -{ - var reFile = /([^\/\?#]+)(#.+)?$/; - var rePath = /^(.*\/)/; - var reProtocol = /^\w+:\/\//; - var path = null; - var doc = Firebug.browser.document; - - var file = reFile.exec(script.src); - - if (file) - { - var fileName = file[1]; - var fileOptions = file[2]; - - // absolute path - if (reProtocol.test(script.src)) { - path = rePath.exec(script.src)[1]; - - } - // relative path - else - { - var r = rePath.exec(script.src); - var src = r ? r[1] : script.src; - var backDir = /^((?:\.\.\/)+)(.*)/.exec(src); - var reLastDir = /^(.*\/)[^\/]+\/$/; - path = rePath.exec(doc.location.href)[1]; - - // "../some/path" - if (backDir) - { - var j = backDir[1].length/3; - var p; - while (j-- > 0) - path = reLastDir.exec(path)[1]; - - path += backDir[2]; - } - - else if(src.indexOf("/") != -1) - { - // "./some/path" - if(/^\.\/./.test(src)) - { - path += src.substring(2); - } - // "/some/path" - else if(/^\/./.test(src)) - { - var domain = /^(\w+:\/\/[^\/]+)/.exec(path); - path = domain[1] + src; - } - // "some/path" - else - { - path += src; - } - } - } - } - - var m = path && path.match(/([^\/]+)\/$/) || null; - - if (path && m) - { - return path + fileName; - } -}; - -var getFileName = function getFileName(path) -{ - if (!path) return ""; - - var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/); - - return match && match[0] || path; -}; - - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/sourceBox.js b/branches/firebug1.5/content/firebug1.4/sourceBox.js deleted file mode 100644 index 07577ddb..00000000 --- a/branches/firebug1.5/content/firebug1.4/sourceBox.js +++ /dev/null @@ -1,1070 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - - -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -/// TODO: xxxpedro debugger hack -/// TODO: xxxpedro port to Firebug Lite -Firebug.ActivableModule = Firebug.Module; -Firebug.registerActivableModule = Firebug.registerModule; -Firebug.Panel.isEnabled = function(){return true;}; -Firebug.ActivablePanel = Firebug.Panel; -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - -// ************************************************************************************************ - -/** - * @class Defines the API for SourceBoxDecorator and provides the default implementation. - * Decorators are passed the source box on construction, called to create the HTML, - * and called whenever the user scrolls the view. - */ -Firebug.SourceBoxDecorator = function(sourceBox){}; - -Firebug.SourceBoxDecorator.sourceBoxCounter = 0; - -Firebug.SourceBoxDecorator.prototype = -/** @lends Firebug.SourceBoxDecorator */ -{ - onSourceBoxCreation: function(sourceBox) - { - // allow panel-document unique ids to be generated for lines. - sourceBox.uniqueId = ++Firebug.SourceBoxDecorator.sourceBoxCounter; - }, - /* called on a delay after the view port is updated, eg vertical scroll - * The sourceBox will contain lines from firstRenderedLine to lastRenderedLine - * The user will be able to see sourceBox.firstViewableLine to sourceBox.lastViewableLine - */ - decorate: function(sourceBox, sourceFile) - { - return; - }, - - /* called once as each line is being rendered. - * @param lineNo integer 1-maxLineNumbers - */ - getUserVisibleLineNumber: function(sourceBox, lineNo) - { - return lineNo; - }, - - /* call once as each line is being rendered. - * @param lineNo integer 1-maxLineNumbers - */ - getLineHTML: function(sourceBox, lineNo) - { - var html = escapeForSourceLine(sourceBox.lines[lineNo-1]); - - // If the pref says so, replace tabs by corresponding number of spaces. - if (Firebug.replaceTabs > 0) - { - var space = new Array(Firebug.replaceTabs + 1).join(" "); - html = html.replace(/\t/g, space); - } - - return html; - }, - - /* - * @return a string unique to the sourcebox and line number, valid in getElementById() - */ - getLineId: function(sourceBox, lineNo) - { - return 'sb' + sourceBox.uniqueId + '-L' + lineNo; - } -}; - -// ************************************************************************************************ - -/** - * @panel Firebug.SourceBoxPanel: Intermediate level class for showing lines of source, eg Script Panel - * Implements a 'viewport' to render only the lines the user is viewing or has recently viewed. - * Scroll events or scrollToLine calls are converted to viewableRange line number range. - * The range of lines is rendered, skipping any that have already been rendered. Then if the - * new line range overlaps the old line range, done; else delete the old range. - * That way the lines kept contiguous. - * The rendering details are delegated to SourceBoxDecorator; each source line may be expanded into - * more rendered lines. - */ -Firebug.SourceBoxPanel = function() {}; - -var SourceBoxPanelBase = extend(Firebug.MeasureBox, Firebug.ActivablePanel); -Firebug.SourceBoxPanel = extend(SourceBoxPanelBase, -/** @lends Firebug.SourceBoxPanel */ -{ - ///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - /// TODO: xxxpedro debugger hack - /// need to refactor the Firebug Lite initialization create/destroy, intitialize/shutodown, initializeUI order of calls - create: function() - { - /// TODO: xxxpedro - this.onResize = bind(this.resizer, this); - this.sourceBoxes = {}; - this.decorator = this.getDecorator(); - - Firebug.ActivablePanel.create.apply(this, arguments); - - /// TODO: xxxpedro containerNode is not part of Firebug API - this.scrollingElement = this.containerNode; - }, - - initialize: function(context, doc) - { - /// TODO: xxxpedro - need to refactor the Firebug Lite initialization create/destroy, intitialize/shutodown, initializeUI order of calls - ///this.onResize = bind(this.resizer, this); - ///this.sourceBoxes = {}; - ///this.decorator = this.getDecorator(); - - Firebug.ActivablePanel.initialize.apply(this, arguments); - }, - - initializeNode: function(panelNode) - { - // TODO: xxxpedro - // since in Firebug Lite each Panel does not have an unique window for its - // content, we must listen to the Firebug.chrome.window instead in order to - // handle the resizing of the Panel's UI - this.resizeEventTarget = Firebug.chrome.window; - addEvent(this.resizeEventTarget, "resize", this.onResize); - ///this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - ///this.resizeEventTarget.addEventListener("resize", this.onResize, true); - this.attachToCache(); - - Firebug.ActivablePanel.initializeNode.apply(this, arguments); - }, - - reattach: function(doc) - { - var oldEventTarget = this.resizeEventTarget; - oldEventTarget.removeEventListener("resize", this.onResize, true); - Firebug.Panel.reattach.apply(this, arguments); - - // TODO: xxxpedro - this.resizeEventTarget = Firebug.chrome.window; - addEvent(this.resizeEventTarget, "resize", this.onResize); - ///this.resizeEventTarget = Firebug.chrome.$('fbContentBox'); - ///this.resizeEventTarget.addEventListener("resize", this.onResize, true); - this.attachToCache(); - }, - - destroyNode: function() - { - Firebug.ActivablePanel.destroyNode.apply(this, arguments); - - removeEvent(this.resizeEventTarget, "resize", this.onResize); - ///this.resizeEventTarget.removeEventListener("resize", this.onResize, true); - this.detachFromCache(); - }, - - attachToCache: function() - { - this.context.sourceCache.addListener(this); - }, - - detachFromCache: function() - { - this.context.sourceCache.removeListener(this); - }, - - onTextSizeChange: function(zoom) - { - this.removeAllSourceBoxes(); // clear so we start fresh with new text sizes - }, - - removeAllSourceBoxes: function() - { - this.sourceBoxes = {}; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // TabCache listener implementation - - onStartRequest: function(context, request) - { - - }, - - onStopRequest: function(context, request, responseText) - { - if (context === this.context) - { - var url = request.URI.spec; - var sourceFile = getSourceFileByHref(url, context); - if (sourceFile) - this.removeSourceBoxBySourceFile(sourceFile); - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Panel extension point. - * Called just before box is shown - */ - updateSourceBox: function(sourceBox) - { - - }, - - /* Panel extension point. Called on panel initialization - * @return Must implement SourceBoxDecorator API. - */ - getDecorator: function() - { - return new Firebug.SourceBoxDecorator(); - }, - - /* Panel extension point - * @return string eg "js" or "css" - */ - getSourceType: function() - { - throw "SourceBox.getSourceType: Need to override in extender "; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - disablePanel: function(module) - { - this.sourceBoxes = {}; // clear so we start fresh if enabled - Firebug.ActivablePanel.disablePanel.apply(this, arguments); - }, - - getSourceLinesFrom: function(selection) - { - // https://developer.mozilla.org/en/DOM/Selection - if (selection.isCollapsed) - return ""; - - var anchorSourceRow = getAncestorByClass(selection.anchorNode, "sourceRow"); - var focusSourceRow = getAncestorByClass(selection.focusNode, "sourceRow"); - if (anchorSourceRow == focusSourceRow) - { - return selection.toString();// trivial case - } - var buf = this.getSourceLine(anchorSourceRow, selection.anchorOffset); - - var currentSourceRow = anchorSourceRow.nextSibling; - while(currentSourceRow && (currentSourceRow != focusSourceRow) && hasClass(currentSourceRow, "sourceRow")) - { - buf += this.getSourceLine(currentSourceRow); - currentSourceRow = currentSourceRow.nextSibling; - } - buf += this.getSourceLine(focusSourceRow, 0, selection.focusOffset); - return buf; - }, - - getSourceLine: function(sourceRow, beginOffset, endOffset) - { - var source = getChildByClass(sourceRow, "sourceRowText").textContent; - if (endOffset) - source = source.substring(beginOffset, endOffset); - else if (beginOffset) - source = source.substring(beginOffset); - else - source = source; - - return source; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getSourceBoxBySourceFile: function(sourceFile) - { - if (sourceFile.href) - { - var sourceBox = this.getSourceBoxByURL(sourceFile.href); - if (sourceBox && sourceBox.repObject == sourceFile) - return sourceBox; - else - return null; // cause a new one to be created - } - }, - - getSourceBoxByURL: function(url) - { - return url ? this.sourceBoxes[url] : null; - }, - - removeSourceBoxBySourceFile: function(sourceFile) - { - var sourceBox = this.getSourceBoxBySourceFile(sourceFile); - if (sourceBox) // else we did not create one for this sourceFile - { - delete this.sourceBoxes[sourceFile.href]; - - if (sourceBox.parentNode === this.panelNode) - this.panelNode.removeChild(sourceBox); - - if (this.selectedSourceBox === sourceBox) // need to update the view - { - delete this.selectedSourceBox; - delete this.location; - this.showSourceFile(sourceFile); - } - } - }, - - renameSourceBox: function(oldURL, newURL) - { - var sourceBox = this.sourceBoxes[oldURL]; - if (sourceBox) - { - delete this.sourceBoxes[oldURL]; - this.sourceBoxes[newURL] = sourceBox; - } - }, - - showSourceFile: function(sourceFile) - { - var sourceBox = this.getSourceBoxBySourceFile(sourceFile); - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("firebug.showSourceFile: "+sourceFile, sourceBox); - if (!sourceBox) - { - // Has the script tag mutation event arrived? - if (sourceFile.compilation_unit_type === "scriptTagAppend" && !sourceFile.source) - { - // prevent recursion, just give message if it does not arrive - sourceFile.source = ["script tag mutation event has not arrived"]; - return; - } - sourceBox = this.createSourceBox(sourceFile); - } - - - this.showSourceBox(sourceBox); - }, - - /* - * Assumes that locations are sourceFiles, TODO lower class - */ - showSourceLink: function(sourceLink) - { - var sourceFile = getSourceFileByHref(sourceLink.href, this.context); - if (sourceFile) - { - this.navigate(sourceFile); - if (sourceLink.line) - { - this.scrollToLine(sourceLink.href, sourceLink.line, this.jumpHighlightFactory(sourceLink.line, this.context)); - dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]); - } - if (sourceLink == this.selection) // then clear it so the next link will scroll and highlight. - delete this.selection; - } - }, - - showSourceBox: function(sourceBox) - { - if (this.selectedSourceBox) - collapse(this.selectedSourceBox, true); - - this.selectedSourceBox = sourceBox; - delete this.currentSearch; - - if (sourceBox) - { - this.reView(sourceBox); - this.updateSourceBox(sourceBox); - collapse(sourceBox, false); - } - }, - - /* Private, do not call outside of this object - * A sourceBox is a div with additional operations and state. - * @param sourceFile there is at most one sourceBox for each sourceFile - */ - createSourceBox: function(sourceFile) // decorator(sourceFile, sourceBox) - { - var sourceBox = this.initializeSourceBox(sourceFile); - - sourceBox.decorator = this.decorator; - - // Framework connection - sourceBox.decorator.onSourceBoxCreation(sourceBox); - - this.sourceBoxes[sourceFile.href] = sourceBox; - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("firebug.createSourceBox with "+sourceBox.maximumLineNumber+" lines for "+sourceFile+(sourceFile.href?" sourceBoxes":" anon "), sourceBox); - - this.panelNode.appendChild(sourceBox); - this.setSourceBoxLineSizes(sourceBox); - - return sourceBox; - }, - - getSourceFileBySourceBox: function(sourceBox) - { - return sourceBox.repObject; - }, - - initializeSourceBox: function(sourceFile) - { - var sourceBox = this.document.createElement("div"); - setClass(sourceBox, "sourceBox"); - collapse(sourceBox, true); - - var lines = sourceFile.loadScriptLines(this.context); - if (!lines) - { - lines = ["Failed to load source for sourceFile "+sourceFile]; - } - - sourceBox.lines = lines; - sourceBox.repObject = sourceFile; - - sourceBox.maximumLineNumber = lines.length; - sourceBox.maxLineNoChars = (sourceBox.maximumLineNumber + "").length; - - sourceBox.getLineNode = function(lineNo) - { - // XXXjjb this method is supposed to return null if the lineNo is not in the viewport - return $(this.decorator.getLineId(this, lineNo), this.ownerDocument); - }; - - var paddedSource = - "
                                " + - "
                                "+ - "
                                "+ - "
                                "+ - "
                                "+ - "
                                "+ - "
                                "; - - appendInnerHTML(sourceBox, paddedSource); - - sourceBox.viewport = getChildByClass(sourceBox, 'sourceViewport'); - return sourceBox; - }, - - setSourceBoxLineSizes: function(sourceBox) - { - var view = sourceBox.viewport; - - var lineNoCharsSpacer = ""; - for (var i = 0; i < sourceBox.maxLineNoChars; i++) - lineNoCharsSpacer += "0"; - - this.startMeasuring(view); - var size = this.measureText(lineNoCharsSpacer); - this.stopMeasuring(); - - sourceBox.lineHeight = size.height + 1; - sourceBox.lineNoWidth = size.width; - - var view = sourceBox.viewport; // TODO some cleaner way - view.previousSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px"; - view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth +"px"; - - if (FBTrace.DBG_SOURCEFILES) - { - FBTrace.sysout("setSourceBoxLineSizes size for lineNoCharsSpacer "+lineNoCharsSpacer, size); - FBTrace.sysout("firebug.setSourceBoxLineSizes, this.scrollingElement.scrollTop "+this.scrollingElement.scrollTop+ " sourceBox.lineHeight: "+sourceBox.lineHeight+" sourceBox.lineNoWidth:"+sourceBox.lineNoWidth+"\n"); - } - }, - - /* - * @return SourceLink to currently selected source file - */ - getSourceLink: function(lineNo) - { - if (!this.selectedSourceBox) - return; - if (!lineNo) - lineNo = this.getCentralLine(this.selectedSourceBox); - return new SourceLink(this.selectedSourceBox.repObject.href, lineNo, this.getSourceType()); - }, - - /* Select sourcebox with href, scroll lineNo into center, highlight lineNo with highlighter given - * @param href a URL, null means the selected sourcefile - * @param lineNo integer 1-maximumLineNumber - * @param highlighter callback, a function(sourceBox). sourceBox.centralLine will be lineNo - */ - scrollToLine: function(href, lineNo, highlighter) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("SourceBoxPanel.scrollToLine: "+lineNo+"@"+href+" with highlighter "+highlighter, highlighter); - - if (this.context.scrollTimeout) - { - this.context.clearTimeout(this.context.scrollTimeout); - delete this.context.scrollTimeout; - } - - if (href) - { - if (!this.selectedSourceBox || this.selectedSourceBox.repObject.href != href) - { - var sourceFile = this.context.sourceFileMap[href]; - if (!sourceFile) - { - if(FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("scrollToLine FAILS, no sourceFile for href "+href, this.context.sourceFileMap); - return; - } - this.navigate(sourceFile); - } - } - - this.context.scrollTimeout = this.context.setTimeout(bindFixed(function() - { - if (!this.selectedSourceBox) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("SourceBoxPanel.scrollTimeout no selectedSourceBox"); - return; - } - - this.selectedSourceBox.targetedLine = lineNo; - - // At this time we know which sourcebox is selected but the viewport is not selected. - // We need to scroll, let the scroll handler set the viewport, then highlight any lines visible. - var skipScrolling = false; - if (this.selectedSourceBox.firstViewableLine && this.selectedSourceBox.lastViewableLine) - { - var linesFromTop = lineNo - this.selectedSourceBox.firstViewableLine; - var linesFromBot = this.selectedSourceBox.lastViewableLine - lineNo; - skipScrolling = (linesFromTop > 3 && linesFromBot > 3); - if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: skipScrolling: "+skipScrolling+" fromTop:"+linesFromTop+" fromBot:"+linesFromBot); - } - else // the selectedSourceBox has not been built - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("SourceBoxPanel.scrollTimeout, no viewable lines", this.selectedSourceBox); - } - - if (!skipScrolling) - { - var viewRange = this.getViewRangeFromTargetLine(this.selectedSourceBox, lineNo); - this.selectedSourceBox.newScrollTop = this.getScrollTopFromViewRange(this.selectedSourceBox, viewRange); - if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: newScrollTop "+this.selectedSourceBox.newScrollTop+" vs old "+this.selectedSourceBox.scrollTop+" for "+this.selectedSourceBox.repObject.href); - this.selectedSourceBox.scrollTop = this.selectedSourceBox.newScrollTop; // *may* cause scrolling - if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: scrollTo "+lineNo+" scrollTop:"+this.selectedSourceBox.scrollTop+ " lineHeight: "+this.selectedSourceBox.lineHeight); - } - - if (this.selectedSourceBox.highlighter) - this.applyDecorator(this.selectedSourceBox); // may need to highlight even if we don't scroll - - }, this)); - - this.selectedSourceBox.highlighter = highlighter; // clears if null - }, - - /* - * @return a highlighter function(sourceBox) that puts a class on the line for a time slice - */ - jumpHighlightFactory: function(lineNo, context) - { - return function jumpHighlightIfInView(sourceBox) - { - var lineNode = sourceBox.getLineNode(lineNo); - if (lineNode) - { - setClassTimed(lineNode, "jumpHighlight", context); - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("jumpHighlightFactory on line "+lineNo+" lineNode:"+lineNode.innerHTML+"\n"); - } - else - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("jumpHighlightFactory no node at line "+lineNo, sourceBox); - } - - return false; // not sticky - }; - }, - - /* - * resize and scroll event handler - */ - resizer: function(event) - { - // The resize target is Firebug as a whole. But most of the UI needs no special code for resize. - // But our SourceBoxPanel has viewport that will change size. - if (this.selectedSourceBox && this.visible) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("resizer event: "+event.type, event); - - this.reView(this.selectedSourceBox); - } - }, - - reView: function(sourceBox, clearCache) // called for all scroll events, including any time this.scrollingElement.scrollTop is set - { - if (sourceBox.targetedLine) - { - sourceBox.targetLineNumber = sourceBox.targetedLine; - var viewRange = this.getViewRangeFromTargetLine(sourceBox, sourceBox.targetedLine); - delete sourceBox.targetedLine; - } - else - { - var viewRange = this.getViewRangeFromScrollTop(sourceBox, this.scrollingElement.scrollTop); - } - - if (clearCache) - { - this.clearSourceBox(sourceBox); - } - else if (this.scrollingElement.scrollTop === sourceBox.lastScrollTop && sourceBox.clientHeight && sourceBox.clientHeight === sourceBox.lastClientHeight) - { - if (sourceBox.firstRenderedLine <= viewRange.firstLine && sourceBox.lastRenderedLine >= viewRange.lastLine) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("reView skipping sourceBox "+this.scrollingElement.scrollTop+"=scrollTop="+sourceBox.lastScrollTop+", "+ sourceBox.clientHeight+"=clientHeight="+sourceBox.lastClientHeight, sourceBox); - // skip work if nothing changes. - return; - } - } - - dispatch(this.fbListeners, "onBeforeViewportChange", [this]); // XXXjjb TODO where should this be? - this.buildViewAround(sourceBox, viewRange); - - if (Firebug.uiListeners.length > 0) - { - var link = new SourceLink(sourceBox.repObject.href, sourceBox.centralLine, this.getSourceType()); - dispatch(Firebug.uiListeners, "onViewportChange", [link]); - } - - sourceBox.lastScrollTop = this.scrollingElement.scrollTop; - sourceBox.lastClientHeight = sourceBox.clientHeight; - }, - - buildViewAround: function(sourceBox, viewRange) - { - try - { - this.updateViewportCache(sourceBox, viewRange); - } - catch(exc) - { - if(FBTrace.DBG_ERRORS) - FBTrace.sysout("buildViewAround updateViewportCache FAILS "+exc, exc); - } - - this.setViewportPadding(sourceBox, viewRange); - - sourceBox.centralLine = Math.floor( (viewRange.lastLine + viewRange.firstLine)/2 ); - - this.applyDecorator(sourceBox); - - return; - }, - - updateViewportCache: function(sourceBox, viewRange) - { - var cacheHit = this.insertedLinesOverlapCache(sourceBox, viewRange); - - if (!cacheHit) - { - this.clearSourceBox(sourceBox); // no overlap, remove old range - sourceBox.firstRenderedLine = viewRange.firstLine; // reset cached range - sourceBox.lastRenderedLine = viewRange.lastLine; - } - else // cache overlap, expand range of cache - { - sourceBox.firstRenderedLine = Math.min(viewRange.firstLine, sourceBox.firstRenderedLine); - sourceBox.lastRenderedLine = Math.max(viewRange.lastLine, sourceBox.lastRenderedLine); - } - sourceBox.firstViewableLine = viewRange.firstLine; // todo actually check that these are viewable - sourceBox.lastViewableLine = viewRange.lastLine; - sourceBox.numberOfRenderedLines = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1; - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("buildViewAround viewRange: "+viewRange.firstLine+"-"+viewRange.lastLine+" rendered: "+sourceBox.firstRenderedLine+"-"+sourceBox.lastRenderedLine, sourceBox); - }, - - /* - * Add lines from viewRange, but do not adjust first/lastRenderedLine. - * @return true if viewRange overlaps first/lastRenderedLine - */ - insertedLinesOverlapCache: function(sourceBox, viewRange) - { - var cacheHit = false; - - var linesBefore = []; // lines to be prepended - var linesAfter = []; // lines to be appended - - for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++) - { - if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine ) - { - cacheHit = true; - continue; - } - - var lineHTML = this.getSourceLineHTML(sourceBox, line); - - if (line < sourceBox.firstRenderedLine) - { - // if we are above the cache, queue lines to be prepended - linesBefore.push(lineHTML); - } - else - { - // if we are below the cache, queue lines to be appended - linesAfter.push(lineHTML); - } - } - - if (linesBefore.length > 0) - { - var topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine); - - // prepend all lines at once - appendInnerHTML(sourceBox.viewport, linesBefore.join(""), topCacheLine); - } - - if (linesAfter.length > 0) - { - // append all lines at once - appendInnerHTML(sourceBox.viewport, linesAfter.join(""), null); - } - - return cacheHit; - }, - - old_insertedLinesOverlapCache: function(sourceBox, viewRange) - { - var topCacheLine = null; - var cacheHit = false; - for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++) - { - if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine ) - { - cacheHit = true; - continue; - } - - var lineHTML = this.getSourceLineHTML(sourceBox, line); - - var ref = null; - if (line < sourceBox.firstRenderedLine) // prepend if we are above the cache - { - if (!topCacheLine) - topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine); - ref = topCacheLine; - } - - var newElement = appendInnerHTML(sourceBox.viewport, lineHTML, ref); - } - return cacheHit; - }, - - clearSourceBox: function(sourceBox) - { - if (sourceBox.firstRenderedLine) - { - var topMostCachedElement = sourceBox.getLineNode(sourceBox.firstRenderedLine); // eg 1 - var totalCached = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1; // eg 20 - 1 + 1 = 19 - if (topMostCachedElement && totalCached) - this.removeLines(sourceBox, topMostCachedElement, totalCached); - } - sourceBox.lastRenderedLine = 0; - sourceBox.firstRenderedLine = 0; - sourceBox.numberOfRenderedLines = 0; - }, - - getSourceLineHTML: function(sourceBox, i) - { - var lineNo = sourceBox.decorator.getUserVisibleLineNumber(sourceBox, i); - var lineHTML = sourceBox.decorator.getLineHTML(sourceBox, i); - var lineId = sourceBox.decorator.getLineId(sourceBox, i); // decorator lines may not have ids - - var lineNoText = this.getTextForLineNo(lineNo, sourceBox.maxLineNoChars); - - var theHTML = - '
                                '; - - return theHTML; - }, - - getTextForLineNo: function(lineNo, maxLineNoChars) - { - // Make sure all line numbers are the same width (with a fixed-width font) - var lineNoText = lineNo + ""; - while (lineNoText.length < maxLineNoChars) - lineNoText = " " + lineNoText; - - return lineNoText; - }, - - removeLines: function(sourceBox, firstRemoval, totalRemovals) - { - for(var i = 1; i <= totalRemovals; i++) - { - var nextSourceLine = firstRemoval; - firstRemoval = firstRemoval.nextSibling; - sourceBox.viewport.removeChild(nextSourceLine); - } - }, - - getCentralLine: function(sourceBox) - { - return sourceBox.centralLine; - }, - - getViewRangeFromTargetLine: function(sourceBox, targetLineNumber) - { - var viewRange = {firstLine: 1, centralLine: targetLineNumber, lastLine: 1}; - - var averageLineHeight = this.getAverageLineHeight(sourceBox); - var panelHeight = this.panelNode.clientHeight; - var linesPerViewport = Math.round((panelHeight / averageLineHeight) + 1); - - viewRange.firstLine = Math.round(targetLineNumber - linesPerViewport / 2); - - if (viewRange.firstLine <= 0) - viewRange.firstLine = 1; - - viewRange.lastLine = viewRange.firstLine + linesPerViewport; - - if (viewRange.lastLine > sourceBox.maximumLineNumber) - viewRange.lastLine = sourceBox.maximumLineNumber; - - return viewRange; - }, - - /* - * Use the average height of source lines in the cache to estimate where the scroll bar points based on scrollTop - */ - getViewRangeFromScrollTop: function(sourceBox, scrollTop) - { - var viewRange = {}; - var averageLineHeight = this.getAverageLineHeight(sourceBox); - viewRange.firstLine = Math.floor(scrollTop / averageLineHeight + 1); - - /// TODO: xxxpedro - // In Firebug Lite the "scroll container" is not the panelNode, but its parent. - var panelHeight = this.panelNode.parentNode.clientHeight; - ///var panelHeight = this.panelNode.clientHeight; - var viewableLines = Math.ceil((panelHeight / averageLineHeight) + 1); - viewRange.lastLine = viewRange.firstLine + viewableLines; - if (viewRange.lastLine > sourceBox.maximumLineNumber) - viewRange.lastLine = sourceBox.maximumLineNumber; - - viewRange.centralLine = Math.floor((viewRange.lastLine - viewRange.firstLine)/2); - - if (FBTrace.DBG_SOURCEFILES) - { - FBTrace.sysout("getViewRangeFromScrollTop scrollTop:"+scrollTop+" viewRange: "+viewRange.firstLine+"-"+viewRange.lastLine); - if (!this.noRecurse) - { - this.noRecurse = true; - var testScrollTop = this.getScrollTopFromViewRange(sourceBox, viewRange); - delete this.noRecurse; - FBTrace.sysout("getViewRangeFromScrollTop "+((scrollTop==testScrollTop)?"checks":(scrollTop+"=!scrollTop!="+testScrollTop))); - } - } - - return viewRange; - }, - - /* - * inverse of the getViewRangeFromScrollTop. - * If the viewRange was set by targetLineNumber, then this value become the new scroll top - * else the value will be the same as the scrollbar's given value of scrollTop. - */ - getScrollTopFromViewRange: function(sourceBox, viewRange) - { - var averageLineHeight = this.getAverageLineHeight(sourceBox); - var scrollTop = Math.floor(averageLineHeight * (viewRange.firstLine - 1)); - - if (FBTrace.DBG_SOURCEFILES) - { - FBTrace.sysout("getScrollTopFromViewRange viewRange:"+viewRange.firstLine+"-"+viewRange.lastLine+" averageLineHeight: "+averageLineHeight+" scrollTop "+scrollTop); - if (!this.noRecurse) - { - this.noRecurse = true; - var testViewRange = this.getViewRangeFromScrollTop(sourceBox, scrollTop); - delete this.noRecurse; - var vrStr = viewRange.firstLine+"-"+viewRange.lastLine; - var tvrStr = testViewRange.firstLine+"-"+testViewRange.lastLine; - FBTrace.sysout("getScrollTopFromCenterLine "+((vrStr==tvrStr)? "checks" : vrStr+"=!viewRange!="+tvrStr)); - } - } - - return scrollTop; - }, - - /* - * The virtual sourceBox height is the averageLineHeight * max lines - * @return float - */ - getAverageLineHeight: function(sourceBox) - { - var averageLineHeight = sourceBox.lineHeight; // fall back to single line height - - var renderedViewportHeight = sourceBox.viewport.clientHeight; - var numberOfRenderedLines = sourceBox.numberOfRenderedLines; - if (renderedViewportHeight && numberOfRenderedLines) - averageLineHeight = renderedViewportHeight / numberOfRenderedLines; - - return averageLineHeight; - }, - - /* - * The virtual sourceBox = topPadding + sourceBox.viewport + bottomPadding - * The viewport grows as more lines are added to the cache - * The virtual sourceBox height is estimated from the average height lines in the viewport cache - */ - getTotalPadding: function(sourceBox) - { - var numberOfRenderedLines = sourceBox.numberOfRenderedLines; - if (!numberOfRenderedLines) - return 0; - - var max = sourceBox.maximumLineNumber; - var averageLineHeight = this.getAverageLineHeight(sourceBox); - // total box will be the average line height times total lines - var virtualSourceBoxHeight = Math.floor(max * averageLineHeight); - if (virtualSourceBoxHeight < sourceBox.clientHeight) - { - var scrollBarHeight = sourceBox.offsetHeight - sourceBox.clientHeight; - // the total - view-taken-up - scrollbar - var totalPadding = sourceBox.clientHeight - sourceBox.viewport.clientHeight - 1; - } - else - var totalPadding = virtualSourceBoxHeight - sourceBox.viewport.clientHeight; - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("getTotalPadding clientHeight:"+sourceBox.viewport.clientHeight+" max: "+max+" gives total padding "+totalPadding); - - return totalPadding; - }, - - setViewportPadding: function(sourceBox, viewRange) - { - var firstRenderedLineElement = sourceBox.getLineNode(sourceBox.firstRenderedLine); - if (!firstRenderedLineElement) - { - // It's not an error if the panel is disabled. - if (FBTrace.DBG_ERRORS && this.isEnabled()) - FBTrace.sysout("setViewportPadding FAILS, no line at "+sourceBox.firstRenderedLine, sourceBox); - return; - } - - var firstRenderedLineOffset = firstRenderedLineElement.offsetTop; - var firstViewRangeElement = sourceBox.getLineNode(viewRange.firstLine); - var firstViewRangeOffset = firstViewRangeElement.offsetTop; - var topPadding = this.scrollingElement.scrollTop - (firstViewRangeOffset - firstRenderedLineOffset); - // Because of rounding when converting from pixels to lines, topPadding can be +/- lineHeight/2, round up - var averageLineHeight = this.getAverageLineHeight(sourceBox); - var linesOfPadding = Math.floor( (topPadding + averageLineHeight)/ averageLineHeight); - var topPadding = (linesOfPadding - 1)* averageLineHeight; - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("setViewportPadding this.scrollingElement.scrollTop - (firstViewRangeOffset - firstRenderedLineOffset): "+this.scrollingElement.scrollTop+"-"+"("+firstViewRangeOffset+"-"+firstRenderedLineOffset+")="+topPadding); - // we want the bottomPadding to take up the rest - var totalPadding = this.getTotalPadding(sourceBox); - if (totalPadding < 0) - var bottomPadding = Math.abs(totalPadding); - else - var bottomPadding = Math.floor(totalPadding - topPadding); - - if (bottomPadding < 0) - bottomPadding = 0; - - if(FBTrace.DBG_SOURCEFILES) - { - FBTrace.sysout("setViewportPadding viewport.offsetHeight: "+sourceBox.viewport.offsetHeight+" viewport.clientHeight "+sourceBox.viewport.clientHeight); - FBTrace.sysout("setViewportPadding sourceBox.offsetHeight: "+sourceBox.offsetHeight+" sourceBox.clientHeight "+sourceBox.clientHeight); - FBTrace.sysout("setViewportPadding scrollTop: "+this.scrollingElement.scrollTop+" firstRenderedLine "+sourceBox.firstRenderedLine+" bottom: "+bottomPadding+" top: "+topPadding); - } - var view = sourceBox.viewport; - - // Set the size on the line number field so the padding is filled with same style as source lines. - view.previousSibling.style.height = topPadding + "px"; - view.nextSibling.style.height = bottomPadding + "px"; - - //sourceRow - view.previousSibling.firstChild.style.height = topPadding + "px"; - view.nextSibling.firstChild.style.height = bottomPadding + "px"; - - //sourceLine - view.previousSibling.firstChild.firstChild.style.height = topPadding + "px"; - view.nextSibling.firstChild.firstChild.style.height = bottomPadding + "px"; - }, - - applyDecorator: function(sourceBox) - { - if (this.context.sourceBoxDecoratorTimeout) - { - this.context.clearTimeout(this.context.sourceBoxDecoratorTimeout); - delete this.context.sourceBoxDecoratorTimeout; - } - - // Run source code decorating on 150ms timeout, which is bigger than - // the period in which scroll events are fired. So, if the user is moving - // scroll-bar thumb (or quickly clicking on scroll-arrows), the source code is - // not decorated (the timeout cleared by the code above) and the scrolling is fast. - this.context.sourceBoxDecoratorTimeout = this.context.setTimeout( - bindFixed(this.asyncDecorating, this, sourceBox), 150); - - if (this.context.sourceBoxHighlighterTimeout) - { - this.context.clearTimeout(this.context.sourceBoxHighlighterTimeout); - delete this.context.sourceBoxHighlighterTimeout; - } - - // Source code highlighting is using different timeout: 0ms. When searching - // within the Script panel, the user expects immediate response. - this.context.sourceBoxHighlighterTimeout = this.context.setTimeout( - bindFixed(this.asyncHighlighting, this, sourceBox)); - }, - - asyncDecorating: function(sourceBox) - { - try - { - sourceBox.decorator.decorate(sourceBox, sourceBox.repObject); - - if (Firebug.uiListeners.length > 0) - dispatch(Firebug.uiListeners, "onApplyDecorator", [sourceBox]); - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("sourceBoxDecoratorTimeout "+sourceBox.repObject, sourceBox); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("sourcebox applyDecorator FAILS "+exc, exc); - } - }, - - asyncHighlighting: function(sourceBox) - { - try - { - if (sourceBox.highlighter) - { - var sticky = sourceBox.highlighter(sourceBox); - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("asyncHighlighting highlighter sticky:"+sticky, - sourceBox.highlighter); - - if (!sticky) - delete sourceBox.highlighter; - } - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("sourcebox highlighter FAILS "+exc, exc); - } - } -}); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/sourceCache.js b/branches/firebug1.5/content/firebug1.4/sourceCache.js deleted file mode 100644 index 27d4b43c..00000000 --- a/branches/firebug1.5/content/firebug1.4/sourceCache.js +++ /dev/null @@ -1,372 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -///const Cc = Components.classes; -///const Ci = Components.interfaces; -///const nsIIOService = Ci.nsIIOService; -///const nsIRequest = Ci.nsIRequest; -///const nsICachingChannel = Ci.nsICachingChannel; -///const nsIScriptableInputStream = Ci.nsIScriptableInputStream; -///const nsIUploadChannel = Ci.nsIUploadChannel; -///const nsIHttpChannel = Ci.nsIHttpChannel; - -///const IOService = Cc["@mozilla.org/network/io-service;1"]; -///const ioService = IOService.getService(nsIIOService); -///const ScriptableInputStream = Cc["@mozilla.org/scriptableinputstream;1"]; -///const chromeReg = CCSV("@mozilla.org/chrome/chrome-registry;1", "nsIToolkitChromeRegistry"); - -///const LOAD_FROM_CACHE = nsIRequest.LOAD_FROM_CACHE; -///const LOAD_BYPASS_LOCAL_CACHE_IF_BUSY = nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY; - -///const NS_BINDING_ABORTED = 0x804b0002; - -// ************************************************************************************************ - -Firebug.SourceCache = function(context) -{ - this.context = context; - this.cache = {}; -}; - -Firebug.SourceCache.prototype = extend(new Firebug.Listener(), -{ - isCached: function(url) - { - return (this.cache[url] ? true : false); - }, - - loadText: function(url, method, file) - { - var lines = this.load(url, method, file); - return lines ? lines.join("") : null; - }, - - load: function(url, method, file) - { - if (FBTrace.DBG_CACHE) - { - FBTrace.sysout("sourceCache.load: " + url); - - if (!this.cache.hasOwnProperty(url) && this.cache[url]) - FBTrace.sysout("sourceCache.load; ERROR - hasOwnProperty returns false, " + - "but the URL is cached: " + url, this.cache[url]); - } - - // xxxHonza: sometimes hasOwnProperty return false even if the URL is obviously there. - //if (this.cache.hasOwnProperty(url)) - var response = this.cache[this.removeAnchor(url)]; - if (response) - return response; - - if (FBTrace.DBG_CACHE) - { - var urls = []; - for (var prop in this.cache) - urls.push(prop); - - FBTrace.sysout("sourceCache.load: Not in the Firebug internal cache", urls); - } - - var d = FBL.splitDataURL(url); //TODO the RE should not have baseLine - if (d) - { - var src = d.encodedContent; - var data = decodeURIComponent(src); - var lines = splitLines(data); - this.cache[url] = lines; - - return lines; - } - - var j = FBL.reJavascript.exec(url); - if (j) - { - var src = url.substring(FBL.reJavascript.lastIndex); - var lines = splitLines(src); - this.cache[url] = lines; - - return lines; - } - - var c = FBL.reChrome.test(url); - if (c) - { - if (Firebug.filterSystemURLs) - return ["Filtered chrome url "+url]; // ignore chrome - - // If the chrome.manifest has xpcnativewrappers=no, platform munges the url - var reWrapperMunge = /(\S*)\s*->\s*(\S*)/; - var m = reWrapperMunge.exec(url); - if (m) - { - url = m[2]; - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache found munged xpcnativewrapper url and set it to "+url+" m "+m+" m[0]:"+m[0]+" [1]"+m[1], m); - } - - var chromeURI = makeURI(url); - if (!chromeURI) - { - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache.load failed to convert chrome to local: "+url); - return ["sourceCache failed to make URI from "+url]; - } - - var localURI = chromeReg.convertChromeURL(chromeURI); - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache.load converting chrome to local: "+url, " -> "+localURI.spec); - return this.loadFromLocal(localURI.spec); - } - - c = FBL.reFile.test(url); - if (c) - { - return this.loadFromLocal(url); - } - - // Unfortunately, the URL isn't available so, let's try to use FF cache. - // Notice that additional network request to the server can be made in - // this method (double-load). - return this.loadFromCache(url, method, file); - }, - - store: function(url, text) - { - var tempURL = this.removeAnchor(url); - - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache for " + this.context.getName() + " store url=" + - url + ((tempURL != url) ? " -> " + tempURL : ""), text); - - var lines = splitLines(text); - return this.storeSplitLines(tempURL, lines); - }, - - removeAnchor: function(url) - { - var index = url.indexOf("#"); - if (index < 0) - return url; - - return url.substr(0, index); - }, - - loadFromLocal: function(url) - { - // if we get this far then we have either a file: or chrome: url converted to file: - var src = getResource(url); - if (src) - { - var lines = splitLines(src); - this.cache[url] = lines; - - return lines; - } - }, - - loadFromCache: function(url, method, file) - { - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.loadFromCache url:"+url); - - var doc = this.context.window.document; - if (doc) - var charset = doc.characterSet; - else - var charset = "UTF-8"; - - /// TODO: xxxpedro XPCOM - /* - var channel; - try - { - channel = ioService.newChannel(url, null, null); - channel.loadFlags |= LOAD_FROM_CACHE | LOAD_BYPASS_LOCAL_CACHE_IF_BUSY; - - if (method && (channel instanceof nsIHttpChannel)) - { - var httpChannel = QI(channel, nsIHttpChannel); - httpChannel.requestMethod = method; - } - } - catch (exc) - { - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache for url:"+url+" window="+this.context.window.location.href+" FAILS:", exc); - return; - } - - if (url == this.context.browser.contentWindow.location.href) - { - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load content window href\n"); - if (channel instanceof nsIUploadChannel) - { - var postData = getPostStream(this.context); - if (postData) - { - var uploadChannel = QI(channel, nsIUploadChannel); - uploadChannel.setUploadStream(postData, "", -1); - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load uploadChannel set\n"); - } - } - - if (channel instanceof nsICachingChannel) - { - var cacheChannel = QI(channel, nsICachingChannel); - cacheChannel.cacheKey = getCacheKey(this.context); - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load cacheChannel key"+cacheChannel.cacheKey+"\n"); - } - } - else if ((method == "PUT" || method == "POST") && file) - { - if (channel instanceof nsIUploadChannel) - { - // In case of PUT and POST, don't forget to use the original body. - var postData = getPostText(file, this.context); - if (postData) - { - var postDataStream = getInputStreamFromString(postData); - var uploadChannel = QI(channel, nsIUploadChannel); - uploadChannel.setUploadStream(postDataStream, "application/x-www-form-urlencoded", -1); - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load uploadChannel set\n"); - } - } - } - - var stream; - try - { - if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load url:"+url+" with charset"+charset+"\n"); - stream = channel.open(); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - { - var isCache = (channel instanceof nsICachingChannel)?"nsICachingChannel":"NOT caching channel"; - var isUp = (channel instanceof nsIUploadChannel)?"nsIUploadChannel":"NOT nsIUploadChannel"; - FBTrace.sysout(url+" vs "+this.context.browser.contentWindow.location.href+" and "+isCache+" "+isUp+"\n"); - FBTrace.sysout("sourceCache.load fails channel.open for url="+url+ " cause:", exc); - FBTrace.sysout("sourceCache.load fails channel=", channel); - } - return ["sourceCache.load FAILS for url="+url, exc.toString()]; - } - /**/ - - try - { - ///var data = readFromStream(stream, charset); - var data = Firebug.Lite.Proxy.load(url); - var lines = splitLines(data); - this.cache[url] = lines; - return lines; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("sourceCache.load FAILS, url="+url, exc); - return ["sourceCache.load FAILS for url="+url, exc.toString()]; - } - finally - { - ///stream.close(); - } - }, - - storeSplitLines: function(url, lines) - { - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache for window="+this.context.getName()+" store url="+url+"\n"); - return this.cache[url] = lines; - }, - - invalidate: function(url) - { - url = this.removeAnchor(url); - - if (FBTrace.DBG_CACHE) - FBTrace.sysout("sourceCache.invalidate; " + url); - - delete this.cache[url]; - }, - - getLine: function(url, lineNo) - { - var lines = this.load(url); - if (lines) - { - if (lineNo <= lines.length) - return lines[lineNo-1]; - else - return (lines.length == 1) ? lines[0] : "("+lineNo+" out of range "+lines.length+")"; - } - else - return "(no source for "+url+")"; - } -}); - -var readWithXHR = function(url) -{ - Ajax.request({url: url, async: false}); - return Ajax.transport.responseText; -}; - -/// TODO: xxxpedro XPCOM -/* -// xxxHonza getPostText and readPostTextFromRequest are copied from -// net.js. These functions should be removed when this cache is -// refactored due to the double-load problem. -function getPostText(file, context) -{ - if (!file.postText) - file.postText = readPostTextFromPage(file.href, context); - - if (!file.postText) - file.postText = readPostTextFromRequest(file.request, context); - - return file.postText; -} - -// ************************************************************************************************ - -function getPostStream(context) -{ - try - { - var webNav = context.browser.webNavigation; - var descriptor = QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor; - var entry = QI(descriptor, Ci.nsISHEntry); - - if (entry.postData) - { - // Seek to the beginning, or it will probably start reading at the end - var postStream = QI(entry.postData, Ci.nsISeekableStream); - postStream.seek(0, 0); - return postStream; - } - } - catch (exc) - { - } -} - -function getCacheKey(context) -{ - try - { - var webNav = context.browser.webNavigation; - var descriptor = QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor; - var entry = QI(descriptor, Ci.nsISHEntry); - return entry.cacheKey; - } - catch (exc) - { - } -} -/**/ - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/sourceFile.js b/branches/firebug1.5/content/firebug1.4/sourceFile.js deleted file mode 100644 index 7a4c77cc..00000000 --- a/branches/firebug1.5/content/firebug1.4/sourceFile.js +++ /dev/null @@ -1,804 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -/// const Cc = Components.classes; -/// const Ci = Components.interfaces; - -/// const PCMAP_SOURCETEXT = Ci.jsdIScript.PCMAP_SOURCETEXT; -/// const PCMAP_PRETTYPRINT = Ci.jsdIScript.PCMAP_PRETTYPRINT; - -var PCMAP_SOURCETEXT = -1; -var PCMAP_PRETTYPRINT = -2; - - -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -/* - * SourceFile one for every compilation unit. - * Unique URL for each. (href) - * Unique outerScript, the statements outside of any function defintion - * sourceCache keyed by href has source for this compilation unit - * Stored by href in context. - * Contains array of jsdIScript for functions (scripts) defined in this unit - * May contain line table (for sources viewed) - */ - -Firebug.SourceFile = function (compilation_unit_type) -{ - this.compilation_unit_type = compilation_unit_type; /*@explore*/ -}; - -Firebug.SourceFile.prototype = -{ - getBaseLineOffset: function() - { - return 0; - }, - - toString: function() - { - var str = (this.compilation_unit_type?this.compilation_unit_type+" ":"")+this.href+" script.tags( "; - if (this.outerScript) - str += (this.outerScript.isValid?this.outerScript.tag:"X") +"| "; - if (this.innerScripts) - { - var numberInvalid = 0; - for (var p in this.innerScripts) - { - var script = this.innerScripts[p]; - if (script.isValid) - str += p+" "; - else - numberInvalid++; - } - } - str += ")"+(numberInvalid ? "("+numberInvalid+" invalid)" : ""); - return str; - }, - - /* - forEachScript: function(callback) - { - if (this.outerScript) - callback(this.outerScript); - if (this.innerScripts) - { - for (var p in this.innerScripts) - { - var script = this.innerScripts[p]; - var rc = callback(script); - if (rc) - return rc; - } - } - }, - - getLineRanges: function() - { - var str = ""; - this.forEachScript(function appendARange(script) - { - var endLineNumber = script.baseLineNumber + script.lineExtent; - str += " "+script.baseLineNumber +"-("+script.tag+")-"+endLineNumber; - }); - return str; - }, - - getSourceLength: function() - { - return this.sourceLength; - }, - - getLine: function(context, lineNo) - { - return context.sourceCache.getLine(this.href, lineNo); - }, - - addToLineTable: function(script) - { - if (!script || !script.isValid) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("addToLineTable got invalid script "+(script?script.tag:"null")+"\n"); - return; - } - - // For outer scripts, a better algorithm would loop over PC, use pcToLine to mark the lines. - // This assumes there are fewer PCs in an outer script than lines, probably true for large systems. - // And now addToLineTable is only used for outerScripts (eval and top-level). - // But since we can't know the range of PC values we cannot use that approach. - - if (!this.outerScriptLineMap) - this.outerScriptLineMap = []; - - var lineCount = script.lineExtent + 1; - var offset = this.getBaseLineOffset(); - if (FBTrace.DBG_LINETABLE) - { - FBTrace.sysout("lib.SourceFile.addToLineTable script.tag:"+script.tag+" lineExtent="+lineCount+" baseLineNumber="+script.baseLineNumber+" offset="+offset+" for "+this.compilation_unit_type+"\n"); - var startTime = new Date().getTime(); - } - if (lineCount > 100) - lineCount = 100; // isLineExecutable requires about 1ms per line, so it can only be called for toy programs - - for (var i = 0; i <= lineCount; i++) - { - var scriptLineNo = i + script.baseLineNumber; // the max is (i + script.baseLineNumber + script.lineExtent) - var mapLineNo = scriptLineNo - offset; - try - { - if (script.isLineExecutable(scriptLineNo, this.pcmap_type)) - this.outerScriptLineMap.push(mapLineNo); - } - catch (e) - { - // I guess not... - } - - if (FBTrace.DBG_LINETABLE) - { - var pcFromLine = script.lineToPc(scriptLineNo, this.pcmap_type); - var lineFromPC = script.pcToLine(pcFromLine, this.pcmap_type); - if (this.outerScriptLineMap.indexOf(mapLineNo) != -1) - FBTrace.sysout("lib.SourceFile.addToLineTable ["+mapLineNo+"]="+script.tag+" for scriptLineNo="+scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine+" with map="+(this.pcmap_type==PCMAP_PRETTYPRINT?"PP":"SOURCE")+"\n"); - else - FBTrace.sysout("lib.SourceFile.addToLineTable not executable scriptLineNo="+scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine+"\n"); - } - } - if (FBTrace.DBG_LINETABLE) - { - var endTime = new Date().getTime(); - var delta = endTime - startTime ; - if (delta > 0) FBTrace.sysout("SourceFile.addToLineTable processed "+lineCount+" lines in "+delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond\n"); - FBTrace.sysout("SourceFile.addToLineTable: "+this.toString()+"\n"); - } - }, - - addToLineTableByPCLoop: function(script) - { - // This code is not called; it crashes FF3pre https://bugzilla.mozilla.org/show_bug.cgi?id=430205 - if (!this.outerScriptLineMap) - this.outerScriptLineMap = {}; - - var lineCount = script.lineExtent; - var offset = this.getBaseLineOffset(); - if (FBTrace.DBG_LINETABLE) - { - FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop script.tag:"+script.tag+" lineCount="+lineCount+" offset="+offset+" for "+this.compilation_unit_type+"\n"); - var startTime = new Date().getTime(); - } - - for (var i = 0; i <= 10*lineCount; i++) - { - var lineFromPC = script.pcToLine(i, this.pcmap_type); - //FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop pc="+i+" line: "+lineFromPC+"\n"); - this.outerScriptLineMap[lineFromPC] = script; - if (lineFromPC >= lineCount) break; - } - - if (FBTrace.DBG_LINETABLE) - { - FBTrace.sysout("SourceFile.addToLineTableByPCLoop: "+this.toString()+"\n"); - var endTime = new Date().getTime(); - var delta = endTime - startTime ; - if (delta > 0) FBTrace.sysout("SourceFileaddToLineTableByPCLoop processed "+lineCount+" lines in "+delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond\n"); - } - }, - - hasScriptAtLineNumber: function(lineNo, mustBeExecutableLine) - { - var offset = this.getBaseLineOffset(); - - if (!this.innerScripts) - return; // eg URLOnly - - var targetLineNo = lineNo + offset; // lineNo is user-viewed number, targetLineNo is jsd number - - var scripts = []; - for (var p in this.innerScripts) - { - var script = this.innerScripts[p]; - if (mustBeExecutableLine && !script.isValid) - continue; - - this.addScriptAtLineNumber(scripts, script, targetLineNo, mustBeExecutableLine, offset); - - if (scripts.length) - return true; - } - - if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid) ) - this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo, mustBeExecutableLine, offset); - - return (scripts.length > 0); - }, - - getScriptsAtLineNumber: function(lineNo, mustBeExecutableLine) - { - var offset = this.getBaseLineOffset(); - - if (!this.innerScripts) - return; // eg URLOnly - - var targetLineNo = lineNo + offset; // lineNo is user-viewed number, targetLineNo is jsd number - - var scripts = []; - for (var p in this.innerScripts) - { - var script = this.innerScripts[p]; - if (mustBeExecutableLine && !script.isValid) continue; - this.addScriptAtLineNumber(scripts, script, targetLineNo, mustBeExecutableLine, offset); - } - - if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid) ) - this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo, mustBeExecutableLine, offset); - - if (FBTrace.DBG_LINETABLE) - { - if (scripts.length < 1) - { - FBTrace.sysout("lib.getScriptsAtLineNumber no targetScript at "+lineNo," for sourceFile:"+this.toString()); - return false; - } - else - { - FBTrace.sysout("getScriptsAtLineNumber offset "+offset+" for sourcefile: "+this.toString()+"\n"); - } - } - - return (scripts.length > 0) ? scripts : false; - }, - - addScriptAtLineNumber: function(scripts, script, targetLineNo, mustBeExecutableLine, offset) - { - // script.isValid will be true. - if (FBTrace.DBG_LINETABLE) - FBTrace.sysout("addScriptAtLineNumber trying "+script.tag+", is "+script.baseLineNumber+" <= "+targetLineNo +" <= "+ (script.baseLineNumber + script.lineExtent)+"? using offset = "+offset+"\n"); - - if (targetLineNo >= script.baseLineNumber) - { - if ( (script.baseLineNumber + script.lineExtent) >= targetLineNo) - { - if (mustBeExecutableLine) - { - try - { - if (!script.isLineExecutable(targetLineNo, this.pcmap_type) ) - { - if (FBTrace.DBG_LINETABLE) - FBTrace.sysout("getScriptsAtLineNumber tried "+script.tag+", not executable at targetLineNo:"+targetLineNo+" pcmap:"+this.pcmap_type+"\n"); - return; - } - } - catch (e) - { - // Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [jsdIScript.isLineExecutable] - return; - } - } - scripts.push(script); - if (FBTrace.DBG_LINETABLE) - { - var checkExecutable = ""; - if (mustBeExecutableLine) - var checkExecutable = " isLineExecutable: "+script.isLineExecutable(targetLineNo, this.pcmap_type)+"@pc:"+script.lineToPc(targetLineNo, this.pcmap_type); - FBTrace.sysout("getScriptsAtLineNumber found "+script.tag+", isValid: "+script.isValid+" targetLineNo:"+targetLineNo+checkExecutable+"\n"); - } - } - } - }, - - scriptsIfLineCouldBeExecutable: function(lineNo) // script may not be valid - { - var scripts = this.getScriptsAtLineNumber(lineNo, true); - if (FBTrace.DBG_LINETABLE && !scripts) FBTrace.sysout("lib.scriptsIfLineCouldBeExecutable this.outerScriptLineMap", this.outerScriptLineMap); - if (!scripts && this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1) ) - return [this.outerScript]; - return scripts; - }, - - /**/ - isExecutableLine: function(lineNo) // script may not be valid - { - /// TODO: xxxpedro sourceFile - return false; - - if (this.hasScriptAtLineNumber(lineNo, true)) - return true; - - if (this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1)) - return true; - - return false; - }, - - /*hasScript: function(script) - { - if (this.outerScript && (this.outerScript.tag == script.tag) ) - return true; - // XXXjjb Don't use indexOf or similar tests that rely on ===, since we are really working with - // wrappers around jsdIScript, not script themselves. I guess. - - return ( this.innerScripts && this.innerScripts.hasOwnProperty(script.tag) ); - }, - - // these objects map JSD's values to correct values - getScriptAnalyzer: function(script) - { - if (script && this.outerScript && (script.tag == this.outerScript.tag) ) - return this.getOuterScriptAnalyzer(); - return new Firebug.SourceFile.NestedScriptAnalyzer(this); - }, - - // return.path: group/category label, return.name: item label - getObjectDescription: function() - { - return FBL.splitURLBase(this.href); - }, - - isEval: function() - { - return (this.compilation_unit_type == "eval-level") || (this.compilation_unit_type == "newFunction"); - }, - - isEvent: function() - { - return (this.compilation_unit_type == "event"); - }, - - /**/ - loadScriptLines: function(context) // array of lines - { - if (this.source) - return this.source; - else - return context.sourceCache.load(this.href); - }/*, - - getOuterScriptAnalyzer: function() - { - FBTrace.sysout("getOuterScriptAnalyzer not overridden for "+sourceFile, this); - } - /**/ - -}; - -Firebug.SourceFile.summarizeSourceLineArray = function(sourceLines, size) -{ - var buf = ""; - for (var i = 0; i < sourceLines.length; i++) - { - var aLine = sourceLines[i].substr(0,240); // avoid huge lines - buf += aLine.replace(/\s/, " ", "g"); - if (buf.length > size || aLine.length > 240) - break; - } - return buf.substr(0, size); -}; - - -Firebug.SourceFile.NestedScriptAnalyzer = function(sourceFile) -{ - this.sourceFile = sourceFile; -}; - -Firebug.SourceFile.NestedScriptAnalyzer.prototype = -{ - // Adjust JSD line numbers based on origin of script - getSourceLineFromFrame: function(context, frame) - { - if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("NestedScriptAnalyzer in "+this.sourceFile.compilation_unit_type+": frame.line - this.sourceFile.getBaseLineOffset()", - frame.line +" - "+this.sourceFile.getBaseLineOffset()); - - return frame.line - (this.sourceFile.getBaseLineOffset()); - }, - // Interpret frame to give fn(args) - getFunctionDescription: function(script, context, frame) - { - if (frame) - { - var name = frame.name; - var args = FBL.getFunctionArgValues(frame); - } - else - { - var name = script.functionName; - var args = []; - } - - if (name == "anonymous") - { - name = FBL.guessFunctionName(this.sourceFile.href, this.getBaseLineNumberByScript(script), context); - } - - return {name: name, args: args}; - }, - - // link to source for this script. - getSourceLinkForScript: function (script) - { - var line = this.getBaseLineNumberByScript(script); - return new FBL.SourceLink(this.sourceFile.href, line, "js"); - }, - - getBaseLineNumberByScript: function(script) - { - return script.baseLineNumber - (this.sourceFile.getBaseLineOffset() - 1); - } -}; - -Firebug.SourceFile.addScriptsToSourceFile = function(sourceFile, outerScript, innerScripts) -{ - // Attach the innerScripts for use later - if (!sourceFile.innerScripts) - sourceFile.innerScripts = {}; - - var total = 0; - while (innerScripts.hasMoreElements()) - { - var script = innerScripts.getNext(); - ///if (!script || ( (script instanceof Ci.jsdIScript) && !script.tag) ) - if (!script) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("addScriptsToSourceFile innerScripts.getNext FAILS "+sourceFile, script); - continue; - } - sourceFile.innerScripts[script.tag] = script; - if (FBTrace.DBG_SOURCEFILES) - total++; - } - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("addScriptsToSourceFile "+ total +" scripts, sourcefile="+sourceFile.toString(), sourceFile); -}; - -/* -//------------ -Firebug.EvalLevelSourceFile = function(url, script, eval_expr, source, mapType, innerScriptEnumerator) // ctor -{ - this.href = url.href; - this.hrefKind = url.kind; - this.outerScript = script; - this.containingURL = script.fileName; - this.evalExpression = eval_expr; - this.sourceLength = source.length; - this.source = source; - this.pcmap_type = mapType; - Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator); -}; - -Firebug.EvalLevelSourceFile.prototype = - descend(new Firebug.SourceFile("eval-level"), // shared prototype -{ - getLine: function(context, lineNo) - { - return this.source[lineNo - 1]; - }, - - getBaseLineOffset: function() - { - return this.outerScript.baseLineNumber - 1; // baseLineNumber always valid even after jsdIscript isValid false - }, - - getObjectDescription: function() - { - if (this.hrefKind == "source" || this.hrefKind == "data") - return FBL.splitURLBase(this.href); - - if (!this.summary) - { - if (this.evalExpression) - this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.evalExpression.substr(0, 240), 120); - if (!this.summary) - this.summary = ""; - if (this.summary.length < 120) - this.summary = "eval("+this.summary + "...)=" + Firebug.SourceFile.summarizeSourceLineArray(this.source, 120 - this.summary.length); - } - var containingFileDescription = FBL.splitURLBase(this.containingURL); - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("EvalLevelSourceFile this.evalExpression.substr(0, 240):"+(this.evalExpression?this.evalExpression.substr(0, 240):"null")+" summary", this.summary); - return {path: containingFileDescription.path, name: containingFileDescription.name+"/eval: "+this.summary }; - }, - - getOuterScriptAnalyzer: function() - { - return new Firebug.EvalLevelSourceFile.OuterScriptAnalyzer(this); - } - -}); - -Firebug.EvalLevelSourceFile.OuterScriptAnalyzer = function(sourceFile) -{ - this.sourceFile = sourceFile; -}; - -Firebug.EvalLevelSourceFile.OuterScriptAnalyzer.prototype = -{ - // Adjust JSD line numbers based on origin of script - getSourceLineFromFrame: function(context, frame) - { - return frame.line - this.sourceFile.getBaseLineOffset(); - }, - // Interpret frame to give fn(args) - getFunctionDescription: function(script, context, frame) - { - return {name: "eval", args: [this.evalExpression] }; - }, - getSourceLinkForScript: function (script) - { - return new FBL.SourceLink(this.sourceFile.href, 1, "js"); - } -}; - -//------------ -Firebug.EventSourceFile = function(url, script, title, source, innerScriptEnumerator) -{ - this.href = url; - this.outerScript = script; - this.containingURL = script.fileName; - this.title = title; - this.source = source; // points to the sourceCache lines - this.sourceLength = source.length; - this.pcmap_type = PCMAP_PRETTYPRINT; - - Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator); -}; - -Firebug.EventSourceFile.prototype = descend(new Firebug.SourceFile("event"), // prototypical inheritance -{ - getLine: function(context, lineNo) - { - return this.source[lineNo - 1]; - }, - - getBaseLineOffset: function() - { - return 1; - }, - - getObjectDescription: function() - { - if (!this.summary) - this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.source, 120); - - var containingFileDescription = FBL.splitURLBase(this.containingURL); - - return {path: containingFileDescription.path, name: containingFileDescription.name+"/event: "+this.summary }; - }, - - getOuterScriptAnalyzer: function() - { - return new Firebug.EventSourceFile.OuterScriptAnalyzer(this); - } - -}); - -Firebug.EventSourceFile.OuterScriptAnalyzer = function(sourceFile) -{ - this.sourceFile = sourceFile; -}; - -Firebug.EventSourceFile.OuterScriptAnalyzer.prototype = -{ - // Adjust JSD line numbers based on origin of script - getSourceLineFromFrame: function(context, frame) - { - var script = frame.script; - var line = script.pcToLine(frame.pc, PCMAP_PRETTYPRINT); - return line - 1; - }, - // Interpret frame to give fn(args) - getFunctionDescription: function(script, context, frame) - { - if (frame) - { - var args = FBL.getFunctionArgValues(frame); - var name = getFunctionName(script, context, frame, true); - } - else - { - var args = []; - var name = getFunctionName(script, context); - } - return {name: name, args: args}; - }, - getSourceLinkForScript: function (script) - { - return new FBL.SourceLink(this.sourceFile.href, 1, "js"); // XXXjjb why do we need FBL.?? - } -}; - -//------------ -Firebug.SourceFile.CommonBase = -{ - getSourceLength: function() - { - if (!this.sourceLength) - this.sourceLength = this.context.sourceCache.load(this.href).length; - return this.sourceLength; - }, - - getOuterScriptAnalyzer: function() - { - return Firebug.TopLevelSourceFile.OuterScriptAnalyzer; - } - -}; -//----------- -Firebug.TopLevelSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator) -{ - this.href = url; - this.outerScript = outerScript; // Beware may not be valid after we return!! - this.sourceLength = sourceLength; - this.pcmap_type = PCMAP_SOURCETEXT; - - Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator); -}; - -Firebug.TopLevelSourceFile.prototype = descend(new Firebug.SourceFile("top-level"), Firebug.SourceFile.CommonBase); - - -Firebug.TopLevelSourceFile.OuterScriptAnalyzer = { - // Adjust JSD line numbers based on origin of script - getSourceLineFromFrame: function(context, frame) - { - return frame.line; - }, - // Interpret frame to give fn(args) - getFunctionDescription: function(script, context, frame) - { - var file_name = FBL.getFileName(FBL.normalizeURL(script.fileName)); // this is more useful that just "top_level" - file_name = file_name ? file_name: "__top_level__"; - return {name: file_name, args: []}; - }, - getSourceLinkForScript: function (script) - { - return FBL.SourceLink(FBL.normalizeURL(script.fileName), script.baseLineNumber, "js"); - } -}; - -//------- - -Firebug.EnumeratedSourceFile = function(url) // we don't have the outer script and we delay source load. -{ - this.href = new String(url); // may not be outerScript file name, eg this could be an enumerated eval - this.innerScripts = {}; - this.pcmap_type = PCMAP_SOURCETEXT; -}; - -Firebug.EnumeratedSourceFile.prototype = descend( - new Firebug.SourceFile("enumerated"), - Firebug.SourceFile.CommonBase); - -//--------- -Firebug.NoScriptSourceFile = function(context, url) // Somehow we got the URL, but not the script -{ - this.href = url; // we know this much - this.innerScripts = {}; -}; - -Firebug.NoScriptSourceFile.prototype = descend( - new Firebug.SourceFile("URLOnly"), - Firebug.SourceFile.CommonBase); - -//---------// javascript in a .xul or .xml file, no outerScript -Firebug.XULSourceFile = function(url, outerScript, innerScriptEnumerator) -{ - this.href = url; - this.pcmap_type = PCMAP_SOURCETEXT; - this.outerScript = outerScript; // Beware may not be valid after we return!! - - Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator); -}; - -Firebug.XULSourceFile.prototype = descend( - new Firebug.SourceFile("xul"), - Firebug.SourceFile.CommonBase); - -//--------- -Firebug.ScriptTagAppendSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator) // element.appendChild(scriptTag) -{ - this.href = url; - this.outerScript = outerScript; // Beware may not be valid after we return!! - this.sourceLength = sourceLength; - this.pcmap_type = PCMAP_SOURCETEXT; - - Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator); -}; - -Firebug.ScriptTagAppendSourceFile.prototype = descend( - new Firebug.SourceFile("scriptTagAppend"), - Firebug.SourceFile.CommonBase); - -/**/ -//------------------- - -Firebug.ScriptTagSourceFile = function(context, url, scriptTagNumber) // we don't have the outer script and we delay source load -{ - this.context = context; - this.href = url; // we know this is not an eval - this.scriptTagNumber = scriptTagNumber; - this.innerScripts = {}; - this.pcmap_type = PCMAP_SOURCETEXT; -}; - -Firebug.ScriptTagSourceFile.prototype = descend( - new Firebug.SourceFile("scriptTag"), - Firebug.SourceFile.CommonBase); - -//------------------- -Firebug.SourceFile.getSourceFileByScript = function(context, script) -{ - if (!context.sourceFileMap) - return null; - - // Other algorithms are possible: - // We could store an index, context.sourceFileByTag - // Or we could build a tree keyed by url, with SpiderMonkey script.fileNames at the top and our urls below - var lucky = context.sourceFileMap[script.fileName]; // we won't be lucky for file:/ urls, no normalizeURL applied - if (FBTrace.DBG_SOURCEFILES && lucky) - FBTrace.sysout("getSourceFileByScript trying to be lucky for "+ - script.tag + " in "+lucky, script); - - if (lucky && lucky.hasScript(script)) - return lucky; - - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("getSourceFileByScript looking for "+script.tag+"@"+script.fileName+" in "+ - context.getName()+": ", context.sourceFileMap); - - for (var url in context.sourceFileMap) - { - var sourceFile = context.sourceFileMap[url]; - if (sourceFile.hasScript(script)) - return sourceFile; - } -}; - -Firebug.SourceFile.getScriptAnalyzer = function(context, script) -{ - var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script); - if (FBTrace.DBG_STACK) - FBTrace.sysout("getScriptAnalyzer "+ (sourceFile?"finds sourceFile: ":"FAILS to find sourceFile"), sourceFile); - if (sourceFile) - { - var analyzer = sourceFile.getScriptAnalyzer(script); - if (FBTrace.DBG_STACK) - FBTrace.sysout("getScriptAnalyzer finds analyzer: ", analyzer); - - return analyzer; - } - return undefined; -}; - -Firebug.SourceFile.getSourceFileAndLineByScript= function(context, script, frame) -{ - var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script); - if (sourceFile) - { - if (sourceFile.pcmap_type) - var line = script.pcToLine(1, sourceFile.pcmap_type); - else - var line = 1; - - return { sourceFile: sourceFile, lineNo: line }; - } -}; - -Firebug.SourceFile.guessEnclosingFunctionName = function(url, line, context) -{ - var sourceFile = context.sourceFileMap[url]; - if (sourceFile) - { - var scripts = sourceFile.getScriptsAtLineNumber(line); - if (scripts) - { - var script = scripts[0]; // TODO try others? - var analyzer = sourceFile.getScriptAnalyzer(script); - line = analyzer.getBaseLineNumberByScript(script); - } - } - return FBL.guessFunctionName(url, line-1, context); -}; - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/spy.js b/branches/firebug1.5/content/firebug1.4/spy.js deleted file mode 100644 index 999f1324..00000000 --- a/branches/firebug1.5/content/firebug1.4/spy.js +++ /dev/null @@ -1,763 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -//const Cc = Components.classes; -//const Ci = Components.interfaces; - -// List of contexts with XHR spy attached. -var contexts = []; - -// ************************************************************************************************ -// Spy Module - -/** - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor - * XHR activity of the current page and create appropriate log into the Console panel. - * This feature can be controlled by an option Show XMLHttpRequests (from within the - * console panel). - * - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is - * activated/deactivated for a site. - */ -Firebug.Spy = extend(Firebug.Module, -/** @lends Firebug.Spy */ -{ - dispatchName: "spy", - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(this.TraceListener); - - Firebug.Module.initialize.apply(this, arguments); - }, - - shutdown: function() - { - Firebug.Module.shutdown.apply(this, arguments); - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(this.TraceListener); - }, - - initContext: function(context) - { - context.spies = []; - - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, context.window); - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName()); - }, - - destroyContext: function(context) - { - // For any spies that are in progress, remove our listeners so that they don't leak - this.detachObserver(context, null); - - if (FBTrace.DBG_SPY && context.spies.length) - FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies (" - + context.spies.length + ") " + context.getName()); - - delete context.spies; - - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName()); - }, - - watchWindow: function(context, win) - { - if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled()) - this.attachObserver(context, win); - }, - - unwatchWindow: function(context, win) - { - try - { - // This make sure that the existing context is properly removed from "contexts" array. - this.detachObserver(context, win); - } - catch (ex) - { - // Get exceptions here sometimes, so let's just ignore them - // since the window is going away anyhow - ERROR(ex); - } - }, - - updateOption: function(name, value) - { - // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called, - // but somehow seems not correct - if (name == "showXMLHttpRequests") - { - var tach = value ? this.attachObserver : this.detachObserver; - for (var i = 0; i < TabWatcher.contexts.length; ++i) - { - var context = TabWatcher.contexts[i]; - iterateWindows(context.window, function(win) - { - tach.apply(this, [context, win]); - }); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Attaching Spy to XHR requests. - - /** - * Returns false if Spy should not be attached to XHRs executed by the specified window. - */ - skipSpy: function(win) - { - if (!win) - return true; - - // Don't attach spy to chrome. - var uri = safeGetWindowLocation(win); - if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0)) - return true; - }, - - attachObserver: function(context, win) - { - if (Firebug.Spy.skipSpy(win)) - return; - - for (var i=0; insIHttpChannel. - * Returns null if the request doesn't represent XHR. - */ - getXHR: function(request) - { - // Does also query-interface for nsIHttpChannel. - if (!(request instanceof Ci.nsIHttpChannel)) - return null; - - try - { - var callbacks = request.notificationCallbacks; - return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null); - } - catch (exc) - { - if (exc.name == "NS_NOINTERFACE") - { - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " + - safeGetRequestName(request)); - } - } - - return null; - } -}); - - - - - -// ************************************************************************************************ - -/* -function getSpyForXHR(request, xhrRequest, context, noCreate) -{ - var spy = null; - - // Iterate all existing spy objects in this context and look for one that is - // already created for this request. - var length = context.spies.length; - for (var i=0; i= 3) - { - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (netInfoBox) - { - netInfoBox.htmlPresented = false; - netInfoBox.responsePresented = false; - } - } - - // If the request is loading update the end time. - if (spy.xhrRequest.readyState == 3) - { - spy.responseTime = spy.endTime - spy.sendTime; - updateTime(spy); - } - - // Request loaded. Get all the info from the request now, just in case the - // XHR would be aborted in the original onReadyStateChange handler. - if (spy.xhrRequest.readyState == 4) - { - // Cumulate response so, multipart response content is properly displayed. - if (SpyHttpActivityObserver.getActivityDistributor()) - spy.responseText += spy.xhrRequest.responseText; - else - { - // xxxHonza: remove from FB 1.6 - if (!spy.responseText) - spy.responseText = spy.xhrRequest.responseText; - } - - // The XHR is loaded now (used also by the activity observer). - spy.loaded = true; - - // Update UI. - updateHttpSpyInfo(spy); - - // Notify Net pane about a request beeing loaded. - // xxxHonza: I don't think this is necessary. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); - - // Notify registered listeners about finish of the XHR. - dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]); - } - - // Pass the event to the original page handler. - callPageHandler(spy, event, originalHandler); -} - -function onHTTPSpyLoad(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy); - - // Detach must be done in onLoad (not in onreadystatechange) otherwise - // onAbort would not be handled. - spy.detach(); - - // xxxHonza: Still needed for Fx 3.5 (#502959) - if (!SpyHttpActivityObserver.getActivityDistributor()) - onHTTPSpyReadyStateChange(spy, null); -} - -function onHTTPSpyError(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } -} - -function onHTTPSpyAbort(spy) -{ - if (FBTrace.DBG_SPY) - FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy); - - spy.detach(); - spy.loaded = true; - - if (spy.logRow) - { - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "error"); - } - - spy.statusText = "Aborted"; - updateLogRow(spy); - - // Notify Net pane about a request beeing aborted. - // xxxHonza: the net panel shoud find out this itself. - var netProgress = spy.context.netProgress; - if (netProgress) - netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]); -} -/**/ - -// ************************************************************************************************ - -/** - * @domplate Represents a template for XHRs logged in the Console panel. The body of the - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}. - */ - -Firebug.Spy.XHR = domplate(Firebug.Rep, -/** @lends Firebug.Spy.XHR */ - -{ - tag: - DIV({"class": "spyHead", _repObject: "$object"}, - TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0, - "role": "listitem", "aria-expanded": "false"}, - TBODY({"role": "presentation"}, - TR({"class": "spyRow"}, - TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"}, - DIV({"class": "spyTitle"}, - "$object|getCaption" - ), - DIV({"class": "spyFullTitle spyTitle"}, - "$object|getFullUri" - ) - ), - TD({"class": "spyCol"}, - DIV({"class": "spyStatus"}, "$object|getStatus") - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyIcon"}) - ), - TD({"class": "spyCol"}, - SPAN({"class": "spyTime"}) - ), - TD({"class": "spyCol"}, - TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"}) - ) - ) - ) - ) - ), - - getCaption: function(spy) - { - return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100); - }, - - getFullUri: function(spy) - { - return spy.method.toUpperCase() + " " + spy.getURL(); - }, - - getStatus: function(spy) - { - var text = ""; - if (spy.statusCode) - text += spy.statusCode + " "; - - if (spy.statusText) - return text += spy.statusText; - - return text; - }, - - onToggleBody: function(event) - { - var target = event.currentTarget || event.srcElement; - var logRow = getAncestorByClass(target, "logRow-spy"); - - if (isLeftClick(event)) - { - toggleClass(logRow, "opened"); - - var spy = getChildByClass(logRow, "spyHead").repObject; - var spyHeadTable = getAncestorByClass(target, "spyHeadTable"); - - if (hasClass(logRow, "opened")) - { - updateHttpSpyInfo(spy, logRow); - if (spyHeadTable) - spyHeadTable.setAttribute('aria-expanded', 'true'); - } - else - { - //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]); - //if (spyHeadTable) - // spyHeadTable.setAttribute('aria-expanded', 'false'); - } - } - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - copyURL: function(spy) - { - copyToClipboard(spy.getURL()); - }, - - copyParams: function(spy) - { - var text = spy.postText; - if (!text) - return; - - var url = reEncodeURL(spy, text, true); - copyToClipboard(url); - }, - - copyResponse: function(spy) - { - copyToClipboard(spy.responseText); - }, - - openInTab: function(spy) - { - openNewTab(spy.getURL(), spy.postText); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - supportsObject: function(object) - { - // TODO: xxxpedro spy xhr - return false; - - return object instanceof Firebug.Spy.XMLHttpRequestSpy; - }, - - browseObject: function(spy, context) - { - var url = spy.getURL(); - openNewTab(url); - return true; - }, - - getRealObject: function(spy, context) - { - return spy.xhrRequest; - }, - - getContextMenuItems: function(spy) - { - var items = [ - {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) } - ]; - - if (spy.postText) - { - items.push( - {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) } - ); - } - - items.push( - {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) }, - "-", - {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) } - ); - - return items; - } -}); - -// ************************************************************************************************ - -function updateTime(spy) -{ - var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0); - if (spy.responseTime) - timeBox.textContent = " " + formatTime(spy.responseTime); -} - -function updateLogRow(spy) -{ - updateTime(spy); - - var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0); - statusBox.textContent = Firebug.Spy.XHR.getStatus(spy); - - removeClass(spy.logRow, "loading"); - setClass(spy.logRow, "loaded"); - - try - { - var errorRange = Math.floor(spy.xhrRequest.status/100); - if (errorRange == 4 || errorRange == 5) - setClass(spy.logRow, "error"); - } - catch (exc) - { - } -} - -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow) -{ - if (!spy.logRow && logRow) - spy.logRow = logRow; - - if (!spy.logRow || !hasClass(spy.logRow, "opened")) - return; - - if (!spy.params) - //spy.params = parseURLParams(spy.href+""); - spy.params = parseURLParams(spy.href+""); - - if (!spy.requestHeaders) - spy.requestHeaders = getRequestHeaders(spy); - - if (!spy.responseHeaders && spy.loaded) - spy.responseHeaders = getResponseHeaders(spy); - - var template = Firebug.NetMonitor.NetInfoBody; - var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody"); - if (!netInfoBox) - { - var head = getChildByClass(spy.logRow, "spyHead"); - netInfoBox = template.tag.append({"file": spy}, head); - dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]); - template.selectTabByName(netInfoBox, "Response"); - } - else - { - template.updateInfo(netInfoBox, spy, spy.context); - } -}; - - - -// ************************************************************************************************ - -function getRequestHeaders(spy) -{ - var headers = []; - - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitRequestHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - - return headers; -} - -function getResponseHeaders(spy) -{ - var headers = []; - - try - { - var channel = spy.xhrRequest.channel; - if (channel instanceof Ci.nsIHttpChannel) - { - channel.visitResponseHeaders({ - visitHeader: function(name, value) - { - headers.push({name: name, value: value}); - } - }); - } - } - catch (exc) - { - if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS) - FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " + - safeGetRequestName(spy.request), exc); - } - - return headers; -} - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.Spy); -//Firebug.registerRep(Firebug.Spy.XHR); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/firebug1.4/tabContext.js b/branches/firebug1.5/content/firebug1.4/tabContext.js deleted file mode 100644 index 5d748cd0..00000000 --- a/branches/firebug1.5/content/firebug1.4/tabContext.js +++ /dev/null @@ -1,543 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -var throttleTimeWindow = 200; -var throttleMessageLimit = 30; -var throttleInterval = 30; -var throttleFlushCount = 20; - -var refreshDelay = 300; - -// ************************************************************************************************ - -Firebug.TabContext = function(win, browser, chrome, persistedState) -{ - this.window = win; - this.browser = browser; - this.persistedState = persistedState; - - /// TODO: xxxpedro context - ///browser.__defineGetter__("chrome", function() { return Firebug.chrome; }); // backward compat - - this.name = normalizeURL(this.getWindowLocation().toString()); - - this.windows = []; - this.panelMap = {}; - this.sidePanelNames = {}; - this.sourceFileMap = {}; - - // New nsITraceableChannel interface (introduced in FF3.0.4) makes possible - // to re-implement source-cache so, it solves the double-load problem. - // Anyway, keep the previous cache implementation for backward compatibility - // (with Firefox 3.0.3 and lower) - - /// TODO: xxxpedro context cache tabcache - this.sourceCache = new Firebug.SourceCache(this); - ///if (Components.interfaces.nsITraceableChannel) - /// this.sourceCache = new Firebug.TabCache(this); - ///else - /// this.sourceCache = new Firebug.SourceCache(this); - - this.global = win; // used by chromebug -}; - -Firebug.TabContext.prototype = -{ - getWindowLocation: function() - { - return safeGetWindowLocation(this.window); - }, - - getTitle: function() - { - if (this.window && this.window.document) - return this.window.document.title; - else - return ""; - }, - - getName: function() - { - if (!this.name || this.name === "about:blank") - { - var url = this.getWindowLocation().toString(); - if (isDataURL(url)) - { - var props = splitDataURL(url); - if (props.fileName) - this.name = "data url from "+props.fileName; - } - else - { - this.name = normalizeURL(url); - if (this.name === "about:blank" && this.window.frameElement) - this.name += " in "+getElementCSSSelector(this.window.frameElement); - } - } - return this.name; - }, - - getGlobalScope: function() - { - return this.window; - }, - - addSourceFile: function(sourceFile) - { - this.sourceFileMap[sourceFile.href] = sourceFile; - sourceFile.context = this; - - Firebug.onSourceFileCreated(this, sourceFile); - }, - - removeSourceFile: function(sourceFile) - { - if (FBTrace.DBG_SOURCEFILES) - FBTrace.sysout("tabContext.removeSourceFile "+sourceFile.href+" in context "+sourceFile.context.getName()); - - delete this.sourceFileMap[sourceFile.href]; - delete sourceFile.context; - - // ?? Firebug.onSourceFileDestroyed(this, sourceFile); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /// TODO: xxxpedro context - ///get chrome() // backward compat - ///{ - /// return Firebug.chrome; - ///}, - - reattach: function(oldChrome, newChrome) - { - for (var panelName in this.panelMap) - { - var panel = this.panelMap[panelName]; - panel.detach(oldChrome, newChrome); - panel.invalid = true;// this will cause reattach on next use - - var panelNode = panel.panelNode; // delete panel content - if (panelNode && panelNode.parentNode) - panelNode.parentNode.removeChild(panelNode); - } - }, - - destroy: function(state) - { - // All existing timeouts need to be cleared - if (this.timeouts) - { - for (var timeout in this.timeouts) - clearTimeout(timeout); - } - - // Also all waiting intervals must be cleared. - if (this.intervals) - { - for (var timeout in this.intervals) - clearInterval(timeout); - } - - if (this.throttleTimeout) - clearTimeout(this.throttleTimeout); - - state.panelState = {}; - - // Inherit panelStates that have not been restored yet - if (this.persistedState) - { - for (var panelName in this.persistedState.panelState) - state.panelState[panelName] = this.persistedState.panelState[panelName]; - } - - // Destroy all panels in this context. - for (var panelName in this.panelMap) - { - var panelType = Firebug.getPanelType(panelName); - this.destroyPanel(panelType, state); - } - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("tabContext.destroy "+this.getName()+" set state ", state); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - initPanelTypes: function() - { - if (!this.panelTypes) - { - this.panelTypes = []; - this.panelTypeMap = {}; - } - }, - - addPanelType: function(url, title, parentPanel) - { - url = absoluteURL(url, this.window.location.href); - if (!url) - { - // XXXjoe Need some kind of notification to console that URL is invalid - throw("addPanelType: url is invalid!"); - return; - } - - this.initPanelTypes(); - - var name = createPanelName(url); - while (name in this.panelTypeMap) - name += "_"; - - var panelType = createPanelType(name, url, title, parentPanel); - - this.panelTypes.push(panelType); - this.panelTypeMap[name] = panelType; - - return panelType; - }, - - addPanelTypeConstructor: function(panelType) - { - this.initPanelTypes(); - this.panelTypes.push(panelType); - var name = panelType.prototype.name; - this.panelTypeMap[name] = panelType; - }, - - removePanelType: function(url) - { - // NYI - }, - - getPanel: function(panelName, noCreate) - { - // Get "global" panelType, registered using Firebug.registerPanel - var panelType = Firebug.getPanelType(panelName); - - // The panelType cane be "local", available only within the context. - if (!panelType && this.panelTypeMap) - panelType = this.panelTypeMap[panelName]; - - if (!panelType) - return null; - - var enabled = panelType.prototype.isEnabled ? panelType.prototype.isEnabled() : true; - - // Create instance of the panelType only if it's enabled. - if (enabled) - return this.getPanelByType(panelType, noCreate); - - return null; - }, - - getPanelByType: function(panelType, noCreate) - { - if (!panelType || !this.panelMap) - return null; - - var panelName = panelType.prototype.name; - if ( this.panelMap.hasOwnProperty(panelName) ) - { - var panel = this.panelMap[panelName]; - //if (FBTrace.DBG_PANELS) - // FBTrace.sysout("tabContext.getPanelByType panel in panelMap, .invalid="+panel.invalid+"\n"); - if (panel.invalid) - { - var doc = this.chrome.getPanelDocument(panelType); - panel.reattach(doc); - delete panel.invalid; - } - - return panel; - } - else if (!noCreate) - { - return this.createPanel(panelType); - } - }, - - eachPanelInContext: function(callback) - { - for (var panelName in this.panelMap) - { - if (this.panelMap.hasOwnProperty(panelName)) - { - var panel = this.panelMap[panelName]; - var rc = callback(panel); - if (rc) - return rc; - } - } - }, - - createPanel: function(panelType) - { - // Instantiate a panel object. This is why panels are defined by prototype inheritance - var panel = new panelType(); - this.panelMap[panel.name] = panel; - - if (FBTrace.DBG_PANELS) - FBTrace.sysout("tabContext.createPanel; Panel created: " + panel.name, panel); - - dispatch(Firebug.modules, "onCreatePanel", [this, panel, panelType]); - - // Initialize panel and associate with a document. - if (panel.parentPanel) // then this new panel is a side panel - { - panel.mainPanel = this.panelMap[panel.parentPanel]; - panel.mainPanel.addListener(panel); // wire the side panel to get UI events from the main panel - } - - var doc = this.chrome.getPanelDocument(panelType); - panel.initialize(this, doc); - - return panel; - }, - - destroyPanel: function(panelType, state) - { - var panelName = panelType.prototype.name; - var panel = this.panelMap[panelName]; - if (!panel) - return; - - // Create an object to persist state, re-using old one if it was never restored - var panelState = panelName in state.panelState ? state.panelState[panelName] : {}; - state.panelState[panelName] = panelState; - - try - { - // Destroy the panel and allow it to persist extra info to the state object - var dontRemove = panel.destroy(panelState); - delete this.panelMap[panelName]; - - if (dontRemove) - return; - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("tabContext.destroy FAILS "+exc, exc); - - // the destroy failed, don't keep the bad state - delete state.panelState[panelName]; - } - - // Remove the panel node from the DOM and so delet its content. - var panelNode = panel.panelNode; - if (panelNode && panelNode.parentNode) - panelNode.parentNode.removeChild(panelNode); - }, - - setPanel: function(panelName, panel) // allows a panel from one context to be used in other contexts. - { - if (panel) - this.panelMap[panelName] = panel; - else - delete this.panelMap[panelName]; - }, - - invalidatePanels: function() - { - if (!this.invalidPanels) - this.invalidPanels = {}; - - for (var i = 0; i < arguments.length; ++i) - { - var panelName = arguments[i]; - var panel = this.getPanel(panelName, true); - if (panel && !panel.noRefresh) - this.invalidPanels[panelName] = 1; - } - - if (this.refreshTimeout) - { - this.clearTimeout(this.refreshTimeout); - delete this.refreshTimeout; - } - - this.refreshTimeout = this.setTimeout(bindFixed(function() - { - var invalids = []; - - for (var panelName in this.invalidPanels) - { - var panel = this.getPanel(panelName, true); - if (panel) - { - if (panel.visible && !panel.editing) - panel.refresh(); - else - panel.needsRefresh = true; - - // If the panel is being edited, we'll keep trying to - // refresh it until editing is done - if (panel.editing) - invalids.push(panelName); - } - } - - delete this.invalidPanels; - delete this.refreshTimeout; - - // Keep looping until every tab is valid - if (invalids.length) - this.invalidatePanels.apply(this, invalids); - }, this), refreshDelay); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - setTimeout: function() - { - if (setTimeout == this.setTimeout) - throw new Error("setTimeout recursion"); - var timeout = setTimeout.apply(top, arguments); - - if (!this.timeouts) - this.timeouts = {}; - - this.timeouts[timeout] = 1; - - return timeout; - }, - - clearTimeout: function(timeout) - { - clearTimeout(timeout); - - if (this.timeouts) - delete this.timeouts[timeout]; - }, - - setInterval: function() - { - var timeout = setInterval.apply(top, arguments); - - if (!this.intervals) - this.intervals = {}; - - this.intervals[timeout] = 1; - - return timeout; - }, - - clearInterval: function(timeout) - { - clearInterval(timeout); - - if (this.intervals) - delete this.intervals[timeout]; - }, - - delay: function(message, object) - { - this.throttle(message, object, null, true); - }, - - // queue the call |object.message(arg)| or just delay it if forceDelay - throttle: function(message, object, args, forceDelay) - { - if (!this.throttleInit) - { - this.throttleBuildup = 0; - this.throttleQueue = []; - this.throttleTimeout = 0; - this.lastMessageTime = 0; - this.throttleInit = true; - } - - if (!forceDelay) - { - if (!Firebug.throttleMessages) - { - message.apply(object, args); - return false; - } - - // Count how many messages have been logged during the throttle period - var logTime = new Date().getTime(); - if (logTime - this.lastMessageTime < throttleTimeWindow) - ++this.throttleBuildup; - else - this.throttleBuildup = 0; - - this.lastMessageTime = logTime; - - // If the throttle limit has been passed, enqueue the message to be logged later on a timer, - // otherwise just execute it now - if (!this.throttleQueue.length && this.throttleBuildup <= throttleMessageLimit) - { - message.apply(object, args); - return false; - } - } - - this.throttleQueue.push(message, object, args); - - if (this.throttleTimeout) - this.clearTimeout(this.throttleTimeout); - - var self = this; - this.throttleTimeout = - this.setTimeout(function() { self.flushThrottleQueue(); }, throttleInterval); - return true; - }, - - flushThrottleQueue: function() - { - var queue = this.throttleQueue; - - if (!queue[0]) - FBTrace.sysout("tabContext.flushThrottleQueue no queue[0]", queue); - - var max = throttleFlushCount * 3; - if (max > queue.length) - max = queue.length; - - for (var i = 0; i < max; i += 3) - queue[i].apply(queue[i+1], queue[i+2]); - - queue.splice(0, throttleFlushCount*3); - - if (queue.length) - { - var self = this; - this.throttleTimeout = - this.setTimeout(function f() { self.flushThrottleQueue(); }, throttleInterval); - } - else - this.throttleTimeout = 0; - } -}; - -// ************************************************************************************************ -// Local Helpers - -function createPanelType(name, url, title, parentPanel) -{ - var panelType = new Function(""); - panelType.prototype = extend(new Firebug.PluginPanel(), - { - name: name, - url: url, - title: title ? title : "...", - parentPanel: parentPanel - }); - - return panelType; -} - -function createPanelName(url) -{ - return url.replace(/[:\\\/\s\.\?\=\&\~]/g, "_"); -} - -// ************************************************************************************************ - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/tabWatcher.js b/branches/firebug1.5/content/firebug1.4/tabWatcher.js deleted file mode 100644 index bad3a82c..00000000 --- a/branches/firebug1.5/content/firebug1.4/tabWatcher.js +++ /dev/null @@ -1,1030 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -///const Cc = Components.classes; -///const Ci = Components.interfaces; -///const nsIWebNavigation = Ci.nsIWebNavigation; -///const nsIWebProgressListener = Ci.nsIWebProgressListener; -///const nsIWebProgress = Ci.nsIWebProgress; -///const nsISupportsWeakReference = Ci.nsISupportsWeakReference; -///const nsISupports = Ci.nsISupports; -///const nsIURI = Ci.nsIURI; - -///const NOTIFY_STATE_DOCUMENT = nsIWebProgress.NOTIFY_STATE_DOCUMENT; - -///const STATE_IS_WINDOW = nsIWebProgressListener.STATE_IS_WINDOW; -///const STATE_IS_DOCUMENT = nsIWebProgressListener.STATE_IS_DOCUMENT; -///const STATE_IS_REQUEST = nsIWebProgressListener.STATE_IS_REQUEST; - -///const STATE_START = nsIWebProgressListener.STATE_START; -///const STATE_STOP = nsIWebProgressListener.STATE_STOP; -///const STATE_TRANSFERRING = nsIWebProgressListener.STATE_TRANSFERRING; - -///const STOP_ALL = nsIWebNavigation.STOP_ALL; - -var dummyURI = "about:layout-dummy-request"; -var aboutBlank = "about:blank"; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element (where the "tabs" resides) -var tabBrowser = null; -///var tabBrowser = $("content"); - -// ************************************************************************************************ -// Globals - -var contexts = []; - -// ************************************************************************************************ - -top.TabWatcher = extend(new Firebug.Listener(), -{ - // Store contexts where they can be accessed externally - contexts: contexts, - - initialize: function() - { - if (Firebug.TraceModule) - Firebug.TraceModule.addListener(TraceListener); - - if (FBTrace.DBG_INITIALIZE) - FBTrace.sysout("-> tabWatcher initialize "+tabBrowser); - - /// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element - ///if (tabBrowser) - /// tabBrowser.addProgressListener(TabProgressListener, NOTIFY_STATE_DOCUMENT); - - httpObserver.addObserver(TabWatcherHttpObserver, "firebug-http-event", false); - }, - - destroy: function() - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher destroy\n"); - - this.shuttingDown = true; - - httpObserver.removeObserver(TabWatcherHttpObserver, "firebug-http-event"); - - /// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element - /* - if (tabBrowser) - { - tabBrowser.removeProgressListener(TabProgressListener); - - var browsers = Firebug.chrome.getBrowsers(); - for (var i = 0; i < browsers.length; ++i) - { - var browser = browsers[i]; - this.unwatchTopWindow(browser.contentWindow); - } - } - /**/ - - if (Firebug.TraceModule) - Firebug.TraceModule.removeListener(TraceListener); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - /** - * Called when tabBrowser browsers get a new location OR when we get a explicit user op to open firebug - * Attaches to a top-level window. Creates context unless we just re-activated on an existing context - */ - watchTopWindow: function(win, uri, userCommands) - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.watchTopWindow for: "+(uri instanceof nsIURI?uri.spec:uri)+ - ", tab: "+Firebug.getTabIdForWindow(win)+"\n"); - - if (!win) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("-> tabWatcher.watchTopWindow should not have a null window!"); - return false; - } - - var selectedBrowser = Firebug.chrome.getCurrentBrowser(); - - var context = this.getContextByWindow(win); - if (context) // then we've looked at this window before in this FF session... - { - if (FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> tabWatcher.watchTopWindow context exists "+context.getName()); - if (!this.shouldShowContext(context)) - { - // ...but now it is not wanted. - if (context.browser) - delete context.browser.showFirebug; - this.unwatchContext(win, context); - - return; // did not create a context - } - // else we should show - } - else // then we've not looked this window in this session - { - // decide whether this window will be debugged or not - var url = (uri instanceof nsIURI) ? uri.spec : uri; - if (!this.shouldCreateContext(selectedBrowser, url, userCommands)) - { - if (FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> tabWatcher will not create context "); - - delete selectedBrowser.showFirebug; - this.watchContext(win, null); - - return false; // we did not create a context - } - - var browser = this.getBrowserByWindow(win); - - context = this.createContext(win, browser, Firebug.getContextType()); - } - - if (win instanceof Ci.nsIDOMWindow && win.parent == win) - { - win.addEventListener("pageshow", onLoadWindowContent, onLoadWindowContent.capturing); - win.addEventListener("DOMContentLoaded", onLoadWindowContent, onLoadWindowContent.capturing); - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.watchTopWindow addEventListener for pageshow, DomContentLoaded "+safeGetWindowLocation(win)); - } - - // Dispatch watchWindow for the outer most DOM window - this.watchWindow(win, context); - - // This is one of two places that loaded is set. The other is in watchLoadedTopWindow - if (context && !context.loaded) - { - context.loaded = !context.browser.webProgress.isLoadingDocument; - - // If the loaded flag is set, the proper event should be dispatched. - if (context.loaded) - dispatch(this.fbListeners, "loadedContext", [context]); - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher context "+(context.loaded ? '*** LOADED ***' : 'isLoadingDocument')+" in watchTopWindow, id: "+context.uid+", uri: "+ - (uri instanceof nsIURI ? uri.spec : uri)+"\n"); - } - - if (context && !context.loaded && !context.showContextTimeout) - { - // still loading, we want to showContext one time but not too agressively - context.showContextTimeout = setTimeout(bindFixed( function delayShowContext() - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> watchTopWindow delayShowContext id:"+context.showContextTimeout, context); - if (context.window) // Sometimes context.window is not defined ? - this.rushShowContext(win, context); // calls showContext - else - { - if(FBTrace.DBG_ERRORS) - FBTrace.sysout("tabWatcher watchTopWindow no context.window "+(context.browser? context.browser.currentURI.spec : " and no context.browser")+"\n"); - } - }, this), 400); - } - else - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> watchTopWindow context.loaded:"+context.loaded+ " for "+context.getName()); - this.rushShowContext(win, context); - } - - return context; // we did create or find a context - }, - - rushShowContext: function(win, context) - { - if (context.showContextTimeout) // then the timeout even has not run, we'll not need it after all. - clearTimeout(context.showContextTimeout); - delete context.showContextTimeout; - - // Call showContext only for currently active tab. - var currentURI = Firebug.chrome.getCurrentURI(); - if (!currentURI || currentURI.spec != context.browser.currentURI.spec) - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> rushShowContext: Do not show context as it's not the active tab: " + - context.browser.currentURI.spec + "\n"); - return; - } - - this.watchContext(win, context); // calls showContext - }, - - // Listeners decide to show or not - shouldShowContext: function(context) - { - if ( dispatch2(this.fbListeners, "shouldShowContext", [context])) - return true; - else - return false; - }, - - // Listeners given force-in and veto on URIs/Window. - - shouldCreateContext: function(browser, url, userCommands) - { - // called when win has no context, answers the question: create one, true or false? - - if (!this.fbListeners) - return userCommands; - - // Create if any listener says true to showCreateContext - if (dispatch2(this.fbListeners, "shouldCreateContext", [browser, url, userCommands])) - { - if (FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+ " one listener says yes to "+ url, this.fbListeners); - return true; - } - - - if (FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+ " no opinion for: "+ url); - - // Do not Create if any Listener says true to shouldNotCreateContext - if (dispatch2(this.fbListeners, "shouldNotCreateContext", [browser, url, userCommands])) - return false; - - if (FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> shouldNotCreateContext no opinion for: "+ url); - - // create if user said so and no one else has an opinion. - return userCommands; - }, - - createContext: function(win, browser, contextType) - { - if (contexts.length == 0) - Firebug.broadcast('enableXULWindow', []); - - // If the page is reloaded, store the persisted state from the previous - // page on the new context - var persistedState = browser.persistedState; - delete browser.persistedState; - var location = safeGetWindowLocation(win).toString(); - //if (!persistedState || persistedState.location != location) - // persistedState = null; - - // xxxHonza, xxxJJB: web application detection. Based on domain check. - var prevDomain = persistedState ? getDomain(persistedState.location) : null; - var domain = getDomain(location); - // Remove this, see 3484 - //if (!persistedState || prevDomain != domain) - // persistedState = null; - - // The proper instance of FirebugChrome object (different for detached Firebug and - // accessible as Firebug.chrome property) must be used for the context object. - // (the global context object Firebug.currentContext is also different for detached firebug). - var context = new contextType(win, browser, Firebug.chrome, persistedState); - contexts.push(context); - - context.uid = FBL.getUniqueId(); - - browser.showFirebug = true; // this is the only place we should set showFirebug. - - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION) { - FBTrace.sysout("-> tabWatcher *** INIT *** context, id: "+context.uid+ - ", "+context.getName()+" browser "+browser.currentURI.spec+" Firebug.chrome.window: "+Firebug.chrome.window.location+" context.window: "+safeGetWindowLocation(context.window)); - } - - dispatch(this.fbListeners, "initContext", [context, persistedState]); - - return context; - }, - - /** - * Called once the document within a tab is completely loaded. - */ - watchLoadedTopWindow: function(win) - { - var isSystem = isSystemPage(win); - - var context = this.getContextByWindow(win); - if ((context && !context.window)) - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.watchLoadedTopWindow bailing !!!, context.window: "+ - context.window+", isSystem: "+isSystem+"\n"); - - this.unwatchTopWindow(win); - this.watchContext(win, null, isSystem); - return; - } - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> watchLoadedTopWindow context: "+ - (context?(context.uid+", loaded="+context.loaded):'undefined')+ - ", "+safeGetWindowLocation(win)+"\n"); - - if (context && !context.loaded) - { - context.loaded = true; - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> Context *** LOADED *** in watchLoadedTopWindow, id: "+context.uid+ - ", uri: "+safeGetWindowLocation(win)+"\n"); - - dispatch(this.fbListeners, "loadedContext", [context]); - - // DOMContentLoaded arrived. Whether or not we did showContext at 400ms, do it now. - this.rushShowContext(win, context); - } - }, - - /** - * Attaches to a window that may be either top-level or a frame within the page. - */ - watchWindow: function(win, context) - { - if (!context) - context = this.getContextByWindow(getRootWindow(win)); - - var location = safeGetWindowLocation(win); - - // For every window we watch, prepare for unwatch. It's OK if this is called - // more times (see 2695). - if (context && location != aboutBlank) - TabWatcherUnloader.registerWindow(win); - - // Unfortunately, dummy requests that trigger the call to watchWindow - // are called several times, so we have to avoid dispatching watchWindow - // more than once - if (context && context.windows.indexOf(win) == -1) - { - context.windows.push(win); - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> watchWindow register *** FRAME *** to context for win.location: "+location+"\n"); - - dispatch(this.fbListeners, "watchWindow", [context, win]); - - if (FBTrace.DBG_WINDOWS) - { - FBTrace.sysout("-> watchWindow for: "+location+", context: "+context.uid+"\n"); - if (context) - for (var i = 0; i < context.windows.length; i++) - FBTrace.sysout(" context: "+context.uid+", window in context: "+context.windows[i].location.href+"\n"); - } - } - }, - - /** - * Detaches from a top-level window. Destroys context - * Called when windows are closed, or user closes firebug - */ - unwatchTopWindow: function(win) - { - var context = this.getContextByWindow(win); - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.unwatchTopWindow for: " + - (context ? context.getWindowLocation() : "NULL Context") + - ", context: " + context); - - this.unwatchContext(win, context); - - return true; // we might later allow extensions to reject unwatch - }, - - /** - * Detaches from a window, top-level or frame (interior) - */ - unwatchWindow: function(win) - { - var context = this.getContextByWindow(win); - - if (!context) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("unwatchWindow: no context for win "+safeGetWindowLocation(win)); - return; - } - - var index = context.windows.indexOf(win); - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.unwatchWindow context: "+context.getName()+" index of win: "+index+"/"+context.windows.length, context.windows); - if (index != -1) - { - context.windows.splice(index, 1); - dispatch(this.fbListeners, "unwatchWindow", [context, win]); - } - }, - - /** - * Attaches to the window inside a browser because of user-activation - * returns false if no context was created by the attach attempt, eg extension rejected page - */ - watchBrowser: function(browser) - { - if (FBTrace.DBG_WINDOWS) - { - var uri = safeGetURI(browser); - FBTrace.sysout("-> tabWatcher.watchBrowser for: " + (uri instanceof nsIURI?uri.spec:uri) + "\n"); - } - - registerFrameListener(browser); - - var shouldDispatch = this.watchTopWindow(browser.contentWindow, safeGetURI(browser), true); - - if (shouldDispatch) - { - dispatch(this.fbListeners, "watchBrowser", [browser]); - return true; - } - return false; - }, - - /* - * User closes Firebug - */ - - unwatchBrowser: function(browser, userCommands) - { - if (FBTrace.DBG_WINDOWS) - { - var uri = safeGetURI(browser); - FBTrace.sysout("-> tabWatcher.unwatchBrowser for: " + (uri instanceof nsIURI?uri.spec:uri) + " user commands: "+userCommands+(browser?"":"NULL BROWSER")); - } - if (!browser) - return; - - delete browser.showFirebug; - - var shouldDispatch = this.unwatchTopWindow(browser.contentWindow); - - if (shouldDispatch) - { - dispatch(this.fbListeners, "unwatchBrowser", [browser, userCommands]); - return true; - } - return false; - }, - - watchContext: function(win, context, isSystem) // called when tabs change in firefox - { - if (this.shuttingDown) - return; - - var browser = context ? context.browser : this.getBrowserByWindow(win); - if (browser) - browser.isSystemPage = isSystem; - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher context *** SHOW *** (watchContext), id: " + - (context?context.uid:"null")+", uri: "+win.location.href+"\n"); - - dispatch(this.fbListeners, "showContext", [browser, context]); // context is null if we don't want to debug this browser - }, - - unwatchContext: function(win, context) - { - if (!context) - { - var browser = this.getBrowserByWindow(win); - if (browser) - { - browser.persistedState = {}; - delete browser.showFirebug; - dispatch(this.fbListeners, "showContext", [browser, null]); // context is null if we don't want to debug this browser - } - dispatch(this.fbListeners, "destroyContext", [null, (browser?browser.persistedState:null), browser]); - return; - } - - var persistedState = {location: context.getWindowLocation()}; - context.browser.persistedState = persistedState; // store our state on FF browser elt - - iterateWindows(context.window, function(win) - { - dispatch(TabWatcher.fbListeners, "unwatchWindow", [context, win]); - }); - - dispatch(this.fbListeners, "destroyContext", [context, persistedState, context.browser]); - - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION) - FBTrace.sysout("-> tabWatcher.unwatchContext *** DESTROY *** context "+context.uid+" for: "+ - (context.window && !context.window.closed?context.window.location:"no window or closed ")+" aborted: "+context.aborted); - - context.destroy(persistedState); - remove(contexts, context); - - for (var name in context) - delete context[name]; - - var currentBrowser = Firebug.chrome.getCurrentBrowser(); - if (!currentBrowser.showFirebug) // unwatchContext can be called on an unload event after another tab is selected - dispatch(this.fbListeners, "showContext", [browser, null]); // context is null if we don't want to debug this browser - - if (contexts.length == 0) - Firebug.broadcast("disableXULWindow", []); - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - getContextByWindow: function(winIn) - { - if (!winIn) - return; - - var rootWindow = getRootWindow(winIn); - - //if (FBTrace.DBG_INITIALIZE) - // FBTrace.sysout("winIn: "+safeGetWindowLocation(winIn).substr(0,50)+" rootWindow: "+safeGetWindowLocation(rootWindow)); - - if (rootWindow) - { - for (var i = 0; i < contexts.length; ++i) - { - var context = contexts[i]; - if (context.window == rootWindow) - return context; - } - } - }, - - getContextBySandbox: function(sandbox) - { - for (var i = 0; i < contexts.length; ++i) - { - var context = contexts[i]; - if (context.sandboxes) - { - for (var iframe = 0; iframe < context.sandboxes.length; iframe++) - { - if (context.sandboxes[iframe] == sandbox) - return context; - } - } - } - return null; - }, - - getBrowserByWindow: function(win) - { - var browsers = Firebug.chrome.getBrowsers(); - for (var i = 0; i < browsers.length; ++i) - { - var browser = browsers[i]; - if (browser.contentWindow == win) - { - registerFrameListener(browser); - return browser; - } - } - - return null; - }, - - iterateContexts: function(fn) - { - for (var i = 0; i < contexts.length; ++i) - { - var rc = fn(contexts[i]); - if (rc) - return rc; - } - } -}); - -// ************************************************************************************************ - -var TabWatcherUnloader = -{ - listeners: [], - - registerWindow: function(win) - { - var root = (win.parent == win); - var eventName = root ? "pagehide" : "unload"; - var listener = bind(root ? this.onPageHide : this.onUnload, this); - win.addEventListener(eventName, listener, false); - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.watchWindow addEventListener for " + eventName); - - this.listeners.push({ - window: win, - listener: listener, - eventName: eventName - }); - }, - - unregisterWindow: function(win) - { - var newListeners = []; - for (var i=0; i tabWatcher.Unloader; PAGE HIDE (" + - this.listeners.length + ") " + win.location, event); - - onPageHideTopWindow(event); - }, - - onUnload: function(event) - { - var win = event.currentTarget; - this.unregisterWindow(win); - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.Unloader; PAGE UNLOAD (" + - this.listeners.length + ") " + win.location, event); - - onUnloadWindow(event); - } -}; - -// ************************************************************************************************ - -/// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element -/* -var TabProgressListener = extend(BaseProgressListener, -{ - onLocationChange: function(progress, request, uri) - { - // Only watch windows that are their own parent - e.g. not frames - if (progress.DOMWindow.parent == progress.DOMWindow) - { - var srcWindow = getWindowForRequest(request); - var browser = srcWindow ? TabWatcher.getBrowserByWindow(srcWindow) : null; - var requestFromFirebuggedWindow = browser && browser.showFirebug; - - if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION) - { - FBTrace.sysout("-> TabProgressListener.onLocationChange "+ - progress.DOMWindow.location+" to: "+ - (uri?uri.spec:"null location")+ - (requestFromFirebuggedWindow?" from firebugged window":" no firebug")); - } - - if (uri && uri.spec === "about:blank") // the onStateChange will deal with this troublesome case - return; - - if (uri && uri.scheme === "wyciwyg") // document.open() was called, the document was cleared. - evictTopWindow(progress.DOMWindow, uri); - - if (uri) - TabWatcher.watchTopWindow(progress.DOMWindow, uri); - else // the location change to a non-uri means we need to hide - TabWatcher.watchContext(progress.DOMWindow, null, true); - } - }, - - onStateChange: function(progress, request, flag, status) - { - if (FBTrace.DBG_WINDOWS) - { - var win = progress.DOMWindow; - FBTrace.sysout("-> TabProgressListener.onStateChanged for: " + - safeGetName(request) + ", win: " + win.location.href + - ", content URL: " + (win.document ? win.document.URL : "no content URL") + - " " + getStateDescription(flag)); - } - } -}); -/**/ - -// ************************************************************************************************ - -/// TODO: xxxpedro tabWatcher - BaseProgressListener relies on XPCOM component -/* -var FrameProgressListener = extend(BaseProgressListener, -{ - onStateChange: function(progress, request, flag, status) - { - if (FBTrace.DBG_WINDOWS) - { - var win = progress.DOMWindow; - FBTrace.sysout("-> FrameProgressListener.onStateChanged for: " + - safeGetName(request) + ", win: " + win.location.href + - ", content URL: " + (win.document ? win.document.URL : "no content URL") + - " " + getStateDescription(flag)); - } - - if (flag & STATE_IS_REQUEST && flag & STATE_START) - { - // We need to get the hook in as soon as the new DOMWindow is created, but before - // it starts executing any scripts in the page. After lengthy analysis, it seems - // that the start of these "dummy" requests is the only state that works. - - var safeName = safeGetName(request); - if (safeName && ((safeName == dummyURI) || safeName == "about:document-onload-blocker") ) - { - var win = progress.DOMWindow; - // Another weird edge case here - when opening a new tab with about:blank, - // "unload" is dispatched to the document, but onLocationChange is not called - // again, so we have to call watchTopWindow here - - if (win.parent == win && (win.location.href == "about:blank")) - { - TabWatcher.watchTopWindow(win, win.location.href); - return; - } - else - TabWatcher.watchWindow(win); - } - } - - // Later I discovered that XHTML documents don't dispatch the dummy requests, so this - // is our best shot here at hooking them. - if (flag & STATE_IS_DOCUMENT && flag & STATE_TRANSFERRING) - { - TabWatcher.watchWindow(progress.DOMWindow); - return; - } - - } -}); - -// Registers frame listener for specified tab browser. -function registerFrameListener(browser) -{ - if (browser.frameListener) - return; - - browser.frameListener = FrameProgressListener; // just a mark saying we've registered. TODO remove! - browser.addProgressListener(FrameProgressListener, NOTIFY_STATE_DOCUMENT); - - if (FBTrace.DBG_WINDOWS) - { - var win = browser.contentWindow; - FBTrace.sysout("-> tabWatcher register FrameProgressListener for: "+ - safeGetWindowLocation(win)+", tab: "+Firebug.getTabIdForWindow(win)+"\n"); - } -} -/**/ - -function getRefererHeader(request) -{ - var http = QI(request, Ci.nsIHttpChannel); - var referer = null; - http.visitRequestHeaders({ - visitHeader: function(name, value) - { - if (name == 'referer') - referer = value; - } - }); - return referer; -} - -var TabWatcherHttpObserver = extend(Object, -{ - // nsIObserver - observe: function(aSubject, aTopic, aData) - { - try - { - if (aTopic == "http-on-modify-request") - { - aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel); - this.onModifyRequest(aSubject); - } - } - catch (err) - { - ERROR(err); - } - }, - - onModifyRequest: function(request) - { - var win = getWindowForRequest(request); - var tabId = Firebug.getTabIdForWindow(win); - - // Tab watcher is only interested in tab related requests. - if (!tabId) - return; - - // Ignore redirects - if (request.URI.spec != request.originalURI.spec) - return; - - // A document request for the specified tab is here. It can be a top window - // request (win == win.parent) or embedded iframe request. - if (request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI) - { - if ( (FBTrace.DBG_ACTIVATION || FBTrace.DBG_WINDOWS) && win == win.parent) - { - FBTrace.sysout("-> tabWatcher TabWatcherHttpObserver *** START *** " + - "document request for: " + request.URI.spec + " window for request is "+safeGetWindowLocation(win)+"\n"); - } - - if (win == win.parent) - { - // Make sure the frame listener is registered for top level window so, - // we can get all onStateChange events and init context for all opened tabs. - var browser = TabWatcher.getBrowserByWindow(win); - - if (!browser) - return; - - delete browser.FirebugLink; - - if (safeGetWindowLocation(win).toString() == "about:blank") // then this page is opened in new tab or window - { - var referer = getRefererHeader(request); - if (referer) - { - try - { - var srcURI = makeURI(referer); - browser.FirebugLink = {src: srcURI, dst: request.URI}; - } - catch(e) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("tabWatcher.onModifyRequest failed to make URI from "+referer+" because "+exc, exc); - } - } - } - else - { - // Here we know the source of the request is 'win'. For viral activation and web app tracking - browser.FirebugLink = {src: browser.currentURI, dst: request.URI}; - } - if (FBTrace.DBG_ACTIVATION && browser.FirebugLink) - FBTrace.sysout("tabWatcher.onModifyRequest created FirebugLink from "+browser.FirebugLink.src.spec + " to "+browser.FirebugLink.dst.spec); - } - } - }, - - QueryInterface : function (aIID) - { - if (aIID.equals(Ci.nsIObserver) || - aIID.equals(Ci.nsISupportsWeakReference) || - aIID.equals(Ci.nsISupports)) - { - return this; - } - - throw Components.results.NS_NOINTERFACE; - } -}); - -// ************************************************************************************************ -// Local Helpers - -function onPageHideTopWindow(event) -{ - var win = event.currentTarget; // we set the handler on a window - var doc = event.target; // the pagehide is sent to the document. - if (doc.defaultView != win) - return; // ignore page hides on interior windows - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher pagehide event.currentTarget "+safeGetWindowLocation(win), event); - - // http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching#pagehide_event - if (event.persisted) // then the page is cached and there cannot be an unload handler - { - // see Bug 484710 - add pageIgnore event for pages that are ejected from the bfcache - - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher onPageHideTopWindow for: "+safeGetWindowLocation(win)+"\n"); - TabWatcher.unwatchTopWindow(win); - } - else - { - // Page is not cached, there may be an unload - win.addEventListener("unload", onUnloadTopWindow, true); - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher onPageHideTopWindow set unload handler "+safeGetWindowLocation(win)+"\n"); - } -} - -function evictTopWindow(win, uri) -{ - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher evictTopWindow win "+safeGetWindowLocation(win)+" uri "+uri.spec); - TabWatcher.unwatchTopWindow(win); -} - -function onUnloadTopWindow(event) -{ - var win = event.currentTarget; - win.removeEventListener("unload", onUnloadTopWindow, true); - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher onUnloadTopWindow for: "+safeGetWindowLocation(win)+" typeof :"+typeof(win)+"\n"); - TabWatcher.unwatchTopWindow(win); -} - -function onLoadWindowContent(event) -{ - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.onLoadWindowContent event.type: "+event.type+"\n"); - - var win = event.currentTarget; - try - { - win.removeEventListener("pageshow", onLoadWindowContent, onLoadWindowContent.capturing); - if (FBTrace.DBG_WINDOWS) FBTrace.sysout("-> tabWatcher.onLoadWindowContent pageshow removeEventListener "+safeGetWindowLocation(win)); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener pageshow fails", exc); - } - - try - { - win.removeEventListener("DOMContentLoaded", onLoadWindowContent, onLoadWindowContent.capturing); - if (FBTrace.DBG_WINDOWS) FBTrace.sysout("-> tabWatcher.onLoadWindowContent DOMContentLoaded removeEventListener "+safeGetWindowLocation(win)); - } - catch (exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener DOMContentLoaded fails", exc); - } - - // Signal that we got the onLoadWindowContent event. This prevents the FrameProgressListener from sending it. - var context = TabWatcher.getContextByWindow(win); - if (context) - context.onLoadWindowContent = true; - - try - { - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.onLoadWindowContent:"+safeGetWindowLocation(win), win); - TabWatcher.watchLoadedTopWindow(win); - } - catch(exc) - { - if (FBTrace.DBG_ERRORS) - FBTrace.sysout("-> tabWatchter onLoadWindowContent FAILS: "+exc, exc); - } - -} -onLoadWindowContent.capturing = false; - -function onUnloadWindow(event) -{ - var win = event.currentTarget; - var eventType = "unload"; - if (FBTrace.DBG_WINDOWS) - FBTrace.sysout("-> tabWatcher.onUnloadWindow for: "+safeGetWindowLocation(win) +" removeEventListener: "+ eventType+"\n"); - TabWatcher.unwatchWindow(win); -} - -function safeGetName(request) -{ - try - { - return request.name; - } - catch (exc) - { - return null; - } -} - -function safeGetURI(browser) -{ - try - { - return browser.currentURI; - } - catch (exc) - { - return null; - } -} - -// ************************************************************************************************ - -var TraceListener = -{ - onDump: function(message) - { - var prefix = "->"; - if (message.text.indexOf(prefix) == 0) - { - message.text = message.text.substr(prefix.length); - message.text = trim(message.text); - message.type = "DBG_WINDOWS"; - } - } -}; - -// ************************************************************************************************ - -}}); diff --git a/branches/firebug1.5/content/firebug1.4/trace.js b/branches/firebug1.5/content/firebug1.4/trace.js deleted file mode 100644 index f081373b..00000000 --- a/branches/firebug1.5/content/firebug1.4/trace.js +++ /dev/null @@ -1,180 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.FBTrace = {}; - -(function() { -// ************************************************************************************************ - -var traceOptions = { - DBG_TIMESTAMP: 1, - DBG_INITIALIZE: 1, - DBG_CHROME: 1, - DBG_ERRORS: 1, - DBG_DISPATCH: 1, - DBG_CSS: 1 -}; - -this.module = null; - -this.initialize = function() -{ - if (!this.messageQueue) - this.messageQueue = []; - - for (var name in traceOptions) - this[name] = traceOptions[name]; -}; - -// ************************************************************************************************ -// FBTrace API - -this.sysout = function() -{ - return this.logFormatted(arguments, ""); -}; - -this.dumpProperties = function(title, object) -{ - return this.logFormatted("dumpProperties() not supported.", "warning"); -}; - -this.dumpStack = function() -{ - return this.logFormatted("dumpStack() not supported.", "warning"); -}; - -this.flush = function(module) -{ - this.module = module; - - var queue = this.messageQueue; - this.messageQueue = []; - - for (var i = 0; i < queue.length; ++i) - this.writeMessage(queue[i][0], queue[i][1], queue[i][2]); -}; - -this.getPanel = function() -{ - return this.module ? this.module.getPanel() : null; -}; - -//************************************************************************************************* - -this.logFormatted = function(objects, className) -{ - var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : []; - var length = objects.length; - - for (var i = 0; i < length; ++i) - { - appendText(" ", html); - - var object = objects[i]; - - if (i == 0) - { - html.push(""); - appendText(object, html); - html.push(""); - } - else - appendText(object, html); - } - - return this.logRow(html, className); -}; - -this.logRow = function(message, className) -{ - var panel = this.getPanel(); - - if (panel && panel.panelNode) - this.writeMessage(message, className); - else - { - this.messageQueue.push([message, className]); - } - - return this.LOG_COMMAND; -}; - -this.writeMessage = function(message, className) -{ - var container = this.getPanel().containerNode; - var isScrolledToBottom = - container.scrollTop + container.offsetHeight >= container.scrollHeight; - - this.writeRow.call(this, message, className); - - if (isScrolledToBottom) - container.scrollTop = container.scrollHeight - container.offsetHeight; -}; - -this.appendRow = function(row) -{ - var container = this.getPanel().panelNode; - container.appendChild(row); -}; - -this.writeRow = function(message, className) -{ - var row = this.getPanel().panelNode.ownerDocument.createElement("div"); - row.className = "logRow" + (className ? " logRow-"+className : ""); - row.innerHTML = message.join(""); - this.appendRow(row); -}; - -//************************************************************************************************* - -function appendText(object, html) -{ - html.push(escapeHTML(objectToString(object))); -}; - -function getTimestamp() -{ - var now = new Date(); - var ms = "" + (now.getMilliseconds() / 1000).toFixed(3); - ms = ms.substr(2); - - return now.toLocaleTimeString() + "." + ms; -}; - -//************************************************************************************************* - -var HTMLtoEntity = -{ - "<": "<", - ">": ">", - "&": "&", - "'": "'", - '"': """ -}; - -function replaceChars(ch) -{ - return HTMLtoEntity[ch]; -}; - -function escapeHTML(value) -{ - return (value+"").replace(/[<>&"']/g, replaceChars); -}; - -//************************************************************************************************* - -function objectToString(object) -{ - try - { - return object+""; - } - catch (exc) - { - return null; - } -}; - -// ************************************************************************************************ -}).apply(FBL.FBTrace); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/tracePanel.js b/branches/firebug1.5/content/firebug1.4/tracePanel.js deleted file mode 100644 index 560f475d..00000000 --- a/branches/firebug1.5/content/firebug1.4/tracePanel.js +++ /dev/null @@ -1,72 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -// If application isn't in trace mode, the FBTrace panel won't be loaded -if (!Env.Options.enableTrace) return; - -// ************************************************************************************************ -// FBTrace Module - -Firebug.Trace = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null; - }, - - clear: function() - { - this.getPanel().panelNode.innerHTML = ""; - } -}); - -Firebug.registerModule(Firebug.Trace); - - -// ************************************************************************************************ -// FBTrace Panel - -function TracePanel(){}; - -TracePanel.prototype = extend(Firebug.Panel, -{ - name: "Trace", - title: "Trace", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear FBTrace logs", - owner: Firebug.Trace, - onClick: Firebug.Trace.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - }, - - shutdown: function() - { - this.clearButton.shutdown(); - - Firebug.Panel.shutdown.apply(this, arguments); - } - -}); - -Firebug.registerPanel(TracePanel); - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firebug1.4/xmlViewer.js b/branches/firebug1.5/content/firebug1.4/xmlViewer.js deleted file mode 100644 index 80e2ecbb..00000000 --- a/branches/firebug1.5/content/firebug1.4/xmlViewer.js +++ /dev/null @@ -1,205 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ************************************************************************************************ -// Constants - -// List of XML related content types. -var xmlContentTypes = -[ - "text/xml", - "application/xml", - "application/xhtml+xml", - "application/rss+xml", - "application/atom+xml",, - "application/vnd.mozilla.maybe.feed", - "application/rdf+xml", - "application/vnd.mozilla.xul+xml" -]; - -// ************************************************************************************************ -// Model implementation - -/** - * @module Implements viewer for XML based network responses. In order to create a new - * tab wihin network request detail, a listener is registered into - * Firebug.NetMonitor.NetInfoBody object. - */ -Firebug.XMLViewerModel = extend(Firebug.Module, -{ - dispatchName: "xmlViewer", - - initialize: function() - { - ///Firebug.ActivableModule.initialize.apply(this, arguments); - Firebug.Module.initialize.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.addListener(this); - }, - - shutdown: function() - { - ///Firebug.ActivableModule.shutdown.apply(this, arguments); - Firebug.Module.shutdown.apply(this, arguments); - Firebug.NetMonitor.NetInfoBody.removeListener(this); - }, - - /** - * Check response's content-type and if it's a XML, create a new tab with XML preview. - */ - initTabBody: function(infoBox, file) - { - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody", infoBox); - - // If the response is XML let's display a pretty preview. - ///if (this.isXML(safeGetContentType(file.request))) - if (this.isXML(file.mimeType, file.responseText)) - { - Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML", - ///$STR("xmlviewer.tab.XML")); - $STR("XML")); - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.initTabBody; XML response available"); - } - }, - - isXML: function(contentType) - { - if (!contentType) - return false; - - // Look if the response is XML based. - for (var i=0; i\s*/, ""); - - var div = parentNode.ownerDocument.createElement("div"); - div.innerHTML = xmlText; - - var root = div.getElementsByTagName("*")[0]; - - /*** - var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser"); - var doc = parser.parseFromString(text, "text/xml"); - var root = doc.documentElement; - - // Error handling - var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml"; - if (root.namespaceURI == nsURI && root.nodeName == "parsererror") - { - this.ParseError.tag.replace({error: { - message: root.firstChild.nodeValue, - source: root.lastChild.textContent - }}, parentNode); - return; - } - /**/ - - if (FBTrace.DBG_XMLVIEWER) - FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc); - - // Override getHidden in these templates. The parsed XML documen is - // hidden, but we want to display it using 'visible' styling. - /* - var templates = [ - Firebug.HTMLPanel.CompleteElement, - Firebug.HTMLPanel.Element, - Firebug.HTMLPanel.TextElement, - Firebug.HTMLPanel.EmptyElement, - Firebug.HTMLPanel.XEmptyElement, - ]; - - var originals = []; - for (var i=0; iFirebug.XMLViewerModel. - */ -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "xmlInfoError"}, - DIV({"class": "xmlInfoErrorMsg"}, "$error.message"), - PRE({"class": "xmlInfoErrorSource"}, "$error|getSource") - ), - - getSource: function(error) - { - var parts = error.source.split("\n"); - if (parts.length != 2) - return error.source; - - var limit = 50; - var column = parts[1].length; - if (column >= limit) { - parts[0] = "..." + parts[0].substr(column - limit); - parts[1] = "..." + parts[1].substr(column - limit); - } - - if (parts[0].length > 80) - parts[0] = parts[0].substr(0, 80) + "..."; - - return parts.join("\n"); - } -}); - -// ************************************************************************************************ -// Registration - -Firebug.registerModule(Firebug.XMLViewerModel); - -}}); diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/cssEvents.js b/branches/firebug1.5/content/firediff/content/firediff-original/cssEvents.js deleted file mode 100644 index 3153ec12..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/cssEvents.js +++ /dev/null @@ -1,386 +0,0 @@ -/* See license.txt for terms of usage */ -FireDiff = FireDiff || {}; - -FBL.ns(function() { with (FBL) { - -var i18n = document.getElementById("strings_firediff"); - -var Path = FireDiff.Path, - Reps = FireDiff.reps, - CSSModel = FireDiff.CSSModel, - ChangeEvent = FireDiff.events.ChangeEvent, - - CHANGES = FireDiff.events.AnnotateAttrs.CHANGES, - REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES; - -function CSSChangeEvent(style, changeSource, xpath) { - ChangeEvent.call(this, changeSource); - - this.style = style; - this.xpath = xpath || Path.getStylePath(style); -} -CSSChangeEvent.prototype = extend(ChangeEvent.prototype, { - changeType: "CSS", - - isPropSet: function() {}, - isPropRemoval: function() {}, - - getXpath: function(target) { return Path.getStylePath(target); }, - xpathLookup: function(xpath, root) { - return Path.evaluateStylePath(xpath, root); - }, - sameFile: function(target) { - var targetXpath = target && (target.xpath || this.getXpath(target)); - return targetXpath && Path.getTopPath(targetXpath) == Path.getTopPath(this.xpath); - }, - getSnapshot: function(context) { - return new Reps.CSSSnapshot(this, context); - }, - getBaseSnapshot: function(context) { - var rootPath = Path.getTopPath(this.xpath); - var sheet = Path.evaluateStylePath(rootPath, context.window.document); - return new Reps.CSSSnapshot(sheet, context); - }, - getDocumentName: function(context) { - var rootPath = Path.getTopPath(this.xpath); - var sheet = Path.evaluateStylePath(rootPath, context.window.document); - - return sheet.href; - } -}); - -function CSSRuleEvent(style, changeSource, xpath, clone) { - CSSChangeEvent.call(this, style, changeSource, xpath); - - this.clone = clone || CSSModel.cloneCSSObject(style); -} -CSSRuleEvent.prototype = extend(CSSChangeEvent.prototype, { - // This is a little bit of a hack. The rule editor does not always have a - // valid rep object and as a consequence we can't key on the target. - // - // Since rule insert and remove events always come from Firebug we assume - // that this change applies to the current editor - appliesTo: function(target) { return target; }, - - mergeRevert: function(candidate) { - if (Path.isChildOrSelf(this.xpath, candidate.xpath) - && this.subType != candidate.subType) { - return this.merge(candidate); - } - } -}); - -function CSSInsertRuleEvent(style, changeSource, xpath, clone) { - CSSRuleEvent.call(this, style, changeSource, xpath, clone); -} -CSSInsertRuleEvent.prototype = extend(CSSRuleEvent.prototype, { - subType: "insertRule", - getSummary: function() { - return i18n.getString("summary.CSSInsertRule"); - }, - isElementAdded: function() { return true; }, - - annotateTree: function(tree, root) { - var parent = this.getInsertActionNode(tree, root).parent; - var identifier = Path.getIdentifier(this.xpath); - - if (!parent && FBTrace.DBG_ERRORS) { - FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath + " " + root, tree); - } - var rule = parent.cssRules[identifier.index-1]; - if (!rule && FBTrace.DBG_ERRORS) { - FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup rule: " + identifier.index + " " + parent, unwrapObject(parent)); - } - rule[CHANGES] = this; - rule.xpath = this.xpath; - return rule; - }, - merge: function(candidate, simplifyOnly) { - if (candidate.isElementRemoved() && this.xpath == candidate.xpath) { - return; - } - - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } else if (Path.isChildOrSelf(this.xpath, candidate.xpath) - && (candidate.isPropSet() || candidate.isPropRemoval())){ - // TODO : Handle @media nested changes? - var clone = this.clone.clone(); - candidate.apply(clone, this.xpath); - - return [ new CSSInsertRuleEvent(this.style, this.changeSource, this.xpath, clone) ]; - } - }, - isCancellation: function(candidate) { - return candidate.isElementRemoved() - && this.xpath == candidate.xpath - && this.clone.equals(candidate.clone); - }, - affectsCancellation: function(candidate) { - return Path.isChildOrSelf(this.xpath, candidate.xpath); - }, - cloneOnXPath: function(xpath) { - return new CSSInsertRuleEvent(this.style, this.changeSource, xpath, this.clone); - }, - - apply: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getInsertActionNode(style, xpath); - var identifier = Path.getIdentifier(this.xpath); - identifier.index--; - - if (actionNode.parent instanceof CSSStyleSheet - || actionNode.parent instanceof CSSMediaRule) { - Firebug.CSSModule.insertRule(actionNode.parent, this.clone.cssText, identifier.index); - } else { - actionNode.parent.cssRules.splice(identifier.index, 0, CSSModel.cloneCSSObject(this.clone)); - } - }, this)); - }, - revert: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getInsertActionNode(style, xpath); - var identifier = Path.getIdentifier(this.xpath); - identifier.index--; - - if (actionNode.parent instanceof CSSStyleSheet - || actionNode.parent instanceof CSSMediaRule) { - Firebug.CSSModule.deleteRule(actionNode.parent, identifier.index); - } else { - actionNode.parent.cssRules.splice(identifier.index, 1); - } - }, this)); - } -}); - -function CSSRemoveRuleEvent(style, changeSource, xpath, clone, styleSheet) { - CSSRuleEvent.call(this, style, changeSource, xpath, clone); - this.styleSheet = styleSheet || style.parentStyleSheet; -} -CSSRemoveRuleEvent.prototype = extend(CSSRuleEvent.prototype, { - subType: "removeRule", - getSummary: function() { - return i18n.getString("summary.CSSRemoveRule"); - }, - isElementRemoved: function() { return true; }, - - annotateTree: function(tree, root) { - var actionNode = this.getInsertActionNode(tree, root).parent; - var list = actionNode[REMOVE_CHANGES] || []; - list.push(this); - actionNode[REMOVE_CHANGES] = list; - // TODO : Verify this is UTed - actionNode.xpath = this.xpath; - - return this; - }, - merge: function(candidate, simplifyOnly) { - if (candidate.isElementAdded() && this.xpath == candidate.xpath) { - return; - } - - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } - }, - mergeRevert: function(candidate) { - if (this.isCancellation(candidate)) { - return []; - } - }, - overridesChange: function(prior) { - return !prior.isElementRemoved() && this.xpath == prior.xpath; - }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && candidate.isElementAdded() - && this.clone.equals(candidate.clone); - }, - affectsCancellation: function(candidate) { - return this.isCancellation(candidate); - }, - cloneOnXPath: function(xpath) { - return new CSSRemoveRuleEvent(this.style, this.changeSource, xpath, this.clone, this.styleSheet); - }, - - apply: CSSInsertRuleEvent.prototype.revert, - revert: CSSInsertRuleEvent.prototype.apply -}); - -function CSSPropChangeEvent(style, propName, changeSource, xpath) { - CSSChangeEvent.call(this, style, changeSource, xpath); - - this.propName = propName; -} -CSSPropChangeEvent.prototype = extend(CSSChangeEvent.prototype, { - annotateTree: function(tree, root) { - var parent = this.getActionNode(tree, root); - - if (!parent && FBTrace.DBG_ERRORS) { - FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath, tree); - } - var changes = parent.propChanges || []; - changes.push(this); - parent.propChanges = changes; - parent.xpath = this.xpath; - return parent; - }, - - merge: function(candidate, simplifyOnly) { - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } - if (this.xpath != candidate.xpath - || this.propName != candidate.propName) { - return; - } - - if (candidate.isPropSet()) { - return [ - new CSSSetPropertyEvent( - this.style, this.propName, - candidate.propValue, candidate.propPriority, - this.prevValue, this.prevPriority, this.changeSource, - this.xpath) - ]; - } else { - return [ - new CSSRemovePropertyEvent( - this.style, this.propName, - this.prevValue, this.prevPriority, - this.changeSource, this.xpath) - ]; - } - }, - mergeRevert: function(candidate) { - if (this.xpath == candidate.xpath - && this.propName == candidate.propName) { - return this.merge(candidate); - } - }, - affectsCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.propName == candidate.propName; - } -}); - -function CSSSetPropertyEvent(style, propName, propValue, propPriority, prevValue, prevPriority, changeSource, xpath) { - CSSPropChangeEvent.call(this, style, propName, changeSource, xpath); - - this.propValue = propValue; - this.propPriority = propPriority; - this.prevValue = prevValue; - this.prevPriority = prevPriority; -} -CSSSetPropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, { - subType: "setProp", - - getSummary: function() { - return i18n.getString("summary.CSSSetProperty"); - }, - isPropSet: function() { return true; }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.propName == candidate.propName - && this.prevValue == candidate.propValue - && this.prevPriority == candidate.propPriority; - }, - cloneOnXPath: function(xpath) { - return new CSSSetPropertyEvent( - this.style, this.propName, - this.propValue, this.propPriority, - this.prevValue, this.prevPriority, - this.changeSource, - xpath); - }, - - apply: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(style, xpath); - Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.propValue, this.propPriority); - }, this)); - }, - revert: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(style, xpath); - if (this.prevValue) { - Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority); - } else { - Firebug.CSSModule.removeProperty(actionNode.style, this.propName); - } - }, this)); - } -}); - -function CSSRemovePropertyEvent(style, propName, prevValue, prevPriority, changeSource, xpath) { - CSSPropChangeEvent.call(this, style, propName, changeSource, xpath); - - // Seed empty values for the current state. This makes the domplate - // display much easier - this.propValue = ""; - this.propPriority = ""; - - this.prevValue = prevValue; - this.prevPriority = prevPriority; -} -CSSRemovePropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, { - subType: "removeProp", - - getSummary: function() { - return i18n.getString("summary.CSSRemoveProperty"); - }, - isPropRemoval: function() { return true; }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.subType != candidate.subType - && this.propName == candidate.propName - && this.prevValue == candidate.propValue - && this.prevPriority == candidate.propPriority; - }, - cloneOnXPath: function(xpath) { - return new CSSRemovePropertyEvent( - this.style, this.propName, - this.prevValue, this.prevPriority, - this.changeSource, - xpath); - }, - apply: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(style, xpath); - Firebug.CSSModule.removeProperty(actionNode.style, this.propName); - }, this)); - }, - revert: function(style, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(style, xpath); - Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority); - }, this)); - } -}); - -FireDiff.events.css = { - CSSInsertRuleEvent: CSSInsertRuleEvent, - CSSRemoveRuleEvent: CSSRemoveRuleEvent, - CSSSetPropertyEvent: CSSSetPropertyEvent, - CSSRemovePropertyEvent: CSSRemovePropertyEvent -}; - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/cssModel.js b/branches/firebug1.5/content/firediff/content/firediff-original/cssModel.js deleted file mode 100644 index f7031696..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/cssModel.js +++ /dev/null @@ -1,280 +0,0 @@ -/* See license.txt for terms of usage */ -var FireDiff = FireDiff || {}; - -/* - * Implements the logic necessary to deep clone as CSS object. - * - * Note that this does not clone the CSS value types, so this could - * introduce some inconsistencies with the stored data model - */ -FireDiff.CSSModel = FBL.ns(function() { with (FBL) { - function elementEquals(left, right, i) { - if (left && left.equals) { - if (!left.equals(right)) { - if (FBTrace.DBG_FIREDIFF) { - FBTrace.sysout("Not Equal equals: " + i + " '" + left + "' '" + right + "'"); - FBTrace.sysout("Not Equal", left); - FBTrace.sysout("Not Equal", right); - } - return false; - } - } else { - if (left != right) { - if (FBTrace.DBG_FIREBUG) { - FBTrace.sysout("Not Equal ==: " + i + " '" + left + "' '" + right + "'", left); - FBTrace.sysout("Not Equal", left); - FBTrace.sysout("Not Equal", right); - } - return false; - } - } - return true; - } - - function CloneObject() {} - CloneObject.prototype = { - equals: function(test) { - if (!test) return false; - - var tested = { cssText: true }, - i; - for (i in this) { - if (this.hasOwnProperty(i) && !tested[i]) { - var left = this[i], right = test[i]; - if (!elementEquals(this[i], test[i], i)) return false; - tested[i] = true; - } - } - for (i in test) { - if (test.hasOwnProperty(i) && !tested[i]) { - // We haven't seen it before, so it must not equal - return false; - } - } - return true; - }, - isEqualNode: function(node) { - return this.equals(node); - }, - clone: function() { - return cloneCSSObject(this); - }, - cloneNode: function() { - return this.clone(); - } - } - function ArrayCloneObject(array) { - this.length = 0; - for (var i = 0; i < array.length; i++) { - this.push(cloneCSSObject(array[i])); - } - } - ArrayCloneObject.prototype = { - // for in interation does not work on built in types, thus we have to - // selectively extend the array prototype - push: Array.prototype.push, - splice: Array.prototype.splice, - equals: function arrayEquals(right) { - if (!right || this.length != right.length) return false; - for (var i = 0; i < this.length; i++) { - if (!elementEquals(this[i], right[i], i)) return false; - } - return true; - } - }; - - function StyleDeclarationClone(style) { - this.cssText = style.cssText; - this.properties = {}; - this.length = 0; - - // Copied from CSS Panel's getRuleProperties implementation - // TODO : Attempt to unify these as a lib method? - var lines = this.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g); - var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/; - var line,i=0; - while(line=lines[i++]){ - m = propRE.exec(line); - if(!m) continue; - //var name = m[1], value = m[2], important = !!m[3]; - if (m[2]) { - this.setProperty(m[1], m[2], m[3]); - } - } - - this.__defineGetter__("cssText", this.generateCSSText); - } - StyleDeclarationClone.prototype = extend(CloneObject.prototype, { - push: Array.prototype.push, - splice: Array.prototype.splice, - - getPropertyValue: function(propertyName) { - var prop = this.properties[propertyName]; - return prop && prop.value; - }, - getPropertyPriority: function(propertyName) { - var prop = this.properties[propertyName]; - return prop && prop.priority; - }, - setProperty: function(propertyName, value, priority) { - this.properties[propertyName] = { - value: value, - priority: priority || "", - - equals: function(right) { - return right && this.value == right.value && this.priority == right.priority; - } - }; - if (this.getPropIndex(propertyName) < 0) { - this.push(propertyName); - } - }, - removeProperty: function(propertyName) { - var propIndex = this.getPropIndex(propertyName); - if (propIndex >= 0) { - this.splice(propIndex, 1); - delete this.properties[propertyName]; - } - }, - equals: function(test) { - return CloneObject.prototype.equals.call(this.properties, test.properties); - }, - - generateCSSText: function() { - var out = []; - for (var i = 0; i < this.length; i++) { - out.push(this[i]); - out.push(": "); - out.push(this.getPropertyValue(this[i])); - - var priority = this.getPropertyPriority(this[i]); - if (priority) { - out.push(" "); - out.push(priority); - } - out.push("; "); - } - return out.join(""); - }, - getPropIndex: function(propName) { - for (var i = 0; i < this.length; i++) { - if (this[i] == propName) { - return i; - } - } - return -1; - } - }); - - function MediaListClone(media) { - ArrayCloneObject.call(this, []); - - // To comment on my own confusion, even though my expected is not really spec: - // https://bugzilla.mozilla.org/show_bug.cgi?id=492925 - for (var i = 0; i < media.length; i++) { - this.push(media.item(i)); - } - this.mediaText = media.mediaText; - } - MediaListClone.prototype = ArrayCloneObject.prototype; - - var RulesClone = ArrayCloneObject; - - function StyleSheetClone(sheet) { - this.type = sheet.type; - this.disabled = sheet.disabled; - this.href = sheet.href; - this.title = sheet.title; - this.media = new MediaListClone(sheet.media); - - this.cssRules = new RulesClone(sheet.cssRules); - } - StyleSheetClone.prototype = extend(CloneObject.prototype, { - insertRule: function(rule, index) { - // Note: This does not match the CSS object API. Parsing of this will - // be overly complicated, so this function differs from the CSS spec - // in that it will only accept a pre-parsed CSS clone object - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("StyleSheetClone.insertRule: " + index + " " + rule, this.cssRules); - this.cssRules.splice(index, 0, rule); - }, - deleteRule: function(index) { - this.cssRules.splice(index, 1); - } - }); - - function CSSRuleClone(rule) { - this.type = rule.type; - this.cssText = rule.cssText; - } - CSSRuleClone.prototype = CloneObject.prototype; - - function CSSStyleRuleClone(rule) { - CSSRuleClone.call(this, rule); - this.selectorText = rule.selectorText; - this.style = new StyleDeclarationClone(rule.style); - - this.__defineGetter__("cssText", function() { return this.selectorText + " { " + this.style.cssText + "}" }); - } - CSSStyleRuleClone.prototype = extend(CSSRuleClone.prototype, {}); - - function CSSMediaRuleClone(rule) { - CSSRuleClone.call(this, rule); - this.cssRules = new RulesClone(rule.cssRules); - this.media = new MediaListClone(rule.media); - } - CSSMediaRuleClone.prototype = extend(CSSRuleClone.prototype, { - insertRule: StyleSheetClone.prototype.insertRule, - deleteRule: StyleSheetClone.prototype.deleteRule - }); - function CSSFontFaceRuleClone(rule) { - CSSStyleRuleClone.call(this, rule); - this.selectorText = "@font-face"; - } - CSSFontFaceRuleClone.prototype = extend(CSSRuleClone.prototype, {}); - - function CSSImportRuleClone(rule) { - CSSRuleClone.call(this, rule); - - this.href = rule.href; - this.media = new MediaListClone(rule.media); - this.styleSheet = new StyleSheetClone(rule.styleSheet); - } - CSSImportRuleClone.prototype = extend(CSSRuleClone.prototype, {}); - - function CSSCharsetRuleClone(rule) { - CSSRuleClone.call(this, rule); - this.encoding = rule.encoding; - } - CSSCharsetRuleClone.prototype = extend(CSSRuleClone.prototype, {}); - - - function cloneCSSObject(cssRule) { - if (cssRule instanceof CSSStyleSheet || cssRule instanceof StyleSheetClone) { - return new StyleSheetClone(cssRule); - } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSStyleRuleClone) { - return new CSSStyleRuleClone(cssRule); - } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSMediaRuleClone) { - return new CSSMediaRuleClone(cssRule); - } else if (cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSFontFaceRuleClone) { - return new CSSFontFaceRuleClone(cssRule); - } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSImportRuleClone) { - return new CSSImportRuleClone(cssRule); - } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSCharsetRuleClone) { - return new CSSCharsetRuleClone(cssRule); - } else if (cssRule instanceof CSSUnknownRule || cssRule instanceof CSSRuleClone) { - return new CSSRuleClone(cssRule); - } else if (cssRule instanceof CSSStyleDeclaration || cssRule instanceof StyleDeclarationClone) { - return new StyleDeclarationClone(cssRule); - } - } - - this.StyleSheetClone = StyleSheetClone; - this.CSSStyleRuleClone = CSSStyleRuleClone; - this.CSSMediaRuleClone = CSSMediaRuleClone; - this.CSSFontFaceRuleClone = CSSFontFaceRuleClone; - this.CSSImportRuleClone = CSSImportRuleClone; - this.CSSCharsetRuleClone = CSSCharsetRuleClone; - this.CSSRuleClone = CSSRuleClone; - this.StyleDeclarationClone = StyleDeclarationClone; - this.cloneCSSObject = cloneCSSObject; -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/diff.js b/branches/firebug1.5/content/firediff/content/firediff-original/diff.js deleted file mode 100644 index 9ae1c23c..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/diff.js +++ /dev/null @@ -1,271 +0,0 @@ -/* See license.txt for terms of usage */ - -/* - * Text diff implementation. - * - * This library supports the following APIS: - * JsDiff.diffChars: Character by character diff - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace - * JsDiff.diffLines: Line based diff - * - * JsDiff.diffCss: Diff targeted at CSS content - * - * These methods are based on the implementation proposed in - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - */ -var JsDiff = (function() { - function clonePath(path) { - return { newPos: path.newPos, components: path.components.slice(0) }; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, "&"); - n = n.replace(//g, ">"); - n = n.replace(/"/g, """); - - return n; - } - - - var fbDiff = function(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - }; - fbDiff.prototype = { - diff: function(oldString, newString) { - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString == oldString) { - return [{ value: newString }]; - } - if (!newString) { - return [{ value: oldString, removed: true }]; - } - if (!oldString) { - return [{ value: newString, added: true }]; - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, oldLen = oldString.length; - var maxEditLength = newLen + oldLen; - var bestPath = [{ newPos: -1, components: [] }]; - - // Seed editLength = 0 - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos+1 >= newLen && oldPos+1 >= oldLen) { - return bestPath[0].components; - } - - for (var editLength = 1; editLength <= maxEditLength; editLength++) { - for (var diagonalPath = -1*editLength; diagonalPath <= editLength; diagonalPath+=2) { - var basePath; - var addPath = bestPath[diagonalPath-1], - removePath = bestPath[diagonalPath+1]; - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath-1] = undefined; - } - - var canAdd = addPath && addPath.newPos+1 < newLen; - var canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - bestPath[diagonalPath] = undefined; - continue; - } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - this.pushComponent(basePath.components, oldString[oldPos], undefined, true); - } else { - basePath = clonePath(addPath); - basePath.newPos++; - this.pushComponent(basePath.components, newString[basePath.newPos], true, undefined); - } - - var oldPos = this.extractCommon(basePath, newString, oldString, diagonalPath); - - if (basePath.newPos+1 >= newLen && oldPos+1 >= oldLen) { - return basePath.components; - } else { - bestPath[diagonalPath] = basePath; - } - } - } - }, - - pushComponent: function(components, value, added, removed) { - var last = components[components.length-1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length-1] = - {value: this.join(last.value, value), added: added, removed: removed }; - } else { - components.push({value: value, added: added, removed: removed }); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath; - while (newPos+1 < newLen && oldPos+1 < oldLen && this.equals(newString[newPos+1], oldString[oldPos+1])) { - newPos++; - oldPos++; - - this.pushComponent(basePath.components, newString[newPos], undefined, undefined); - } - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - if (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)) { - return true; - } else { - return left == right; - } - }, - join: function(left, right) { - return left + right; - }, - tokenize: function(value) { - return value; - } - }; - - var CharDiff = new fbDiff(); - - var WordDiff = new fbDiff(true); - WordDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/g)); - }; - - var CssDiff = new fbDiff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/g)); - }; - - var LineDiff = new fbDiff(); - LineDiff.tokenize = function(value) { - var values = value.split(/\n/g), - ret = []; - for (var i = 0; i < values.length-1; i++) { - ret.push(values[i] + "\n"); - } - if (values.length) { - ret.push(values[values.length-1]); - } - return ret; - }; - - return { - diffChars: function(oldStr, newStr) { return CharDiff.diff(oldStr, newStr); }, - diffWords: function(oldStr, newStr) { return WordDiff.diff(oldStr, newStr); }, - diffLines: function(oldStr, newStr) { return LineDiff.diff(oldStr, newStr); }, - - diffCss: function(oldStr, newStr) { return CssDiff.diff(oldStr, newStr); }, - - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; - - ret.push("Index: " + fileName); - ret.push("==================================================================="); - ret.push("--- " + fileName + "\t" + oldHeader); - ret.push("+++ " + fileName + "\t" + newHeader); - - var diff = LineDiff.diff(oldStr, newStr); - diff.push({value: "", lines: []}); // Append an empty value to make cleanup easier - - var oldRangeStart = 0, newRangeStart = 0, curRange = [], - oldLine = 1, newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, "").split("\n"); - current.lines = lines; - - if (current.added || current.removed) { - if (!oldRangeStart) { - var prev = diff[i-1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange.push.apply(curRange, prev.lines.slice(-4).map(function(entry) { return " " + entry; })); - oldRangeStart -= 4; - newRangeStart -= 4; - } - } - curRange.push.apply(curRange, lines.map(function(entry) { return (current.added?"+":"-") + entry; })); - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - if (oldRangeStart) { - if (lines.length <= 8 && i < diff.length-1) { - // Overlapping - curRange.push.apply(curRange, lines.map(function(entry) { return " " + entry; })); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - "@@ -" + oldRangeStart + "," + (oldLine-oldRangeStart+contextSize) - + " +" + newRangeStart + "," + (newLine-newRangeStart+contextSize) - + " @@"); - ret.push.apply(ret, curRange); - ret.push.apply(ret, lines.slice(0, contextSize).map(function(entry) { return " " + entry; })); - - oldRangeStart = 0; newRangeStart = 0; curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - if (diff.length > 1 && !/\n$/.test(diff[diff.length-2].value)) { - ret.push("\\ No newline at end of file\n"); - } - - return ret.join("\n"); - }, - - convertChangesToXML: function(changes){ - var ret = []; - for ( var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push(""); - } else if (change.removed) { - ret.push(""); - } - - ret.push(escapeHTML(change.value)); - - if (change.added) { - ret.push(""); - } else if (change.removed) { - ret.push(""); - } - } - return ret.join(""); - } - }; -})(); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/diffModule.js b/branches/firebug1.5/content/firediff/content/firediff-original/diffModule.js deleted file mode 100644 index 6dceed1b..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/diffModule.js +++ /dev/null @@ -1,392 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -var Events = FireDiff.events, - Path = FireDiff.Path; - -function revertChange(curChange, context) { - var ownerDoc, rootPath; - if (curChange.changeType == "CSS") { - rootPath = Path.getTopPath(curChange.xpath); - ownerDoc = Path.evaluateStylePath(rootPath, context.window.document); - } else { - ownerDoc = context.window.document.documentElement; - rootPath = Path.getElementPath(ownerDoc); - } - - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Revert change", curChange); - curChange.revert(ownerDoc, rootPath); -} - -Firebug.DiffModule = extend(Firebug.ActivableModule, { - panelName: "firediff", - - supportsFirebugEdits: Firebug.Editor.supportsStopEvent, - - initialize: function() { - Firebug.ActivableModule.initialize.apply(this, arguments); - - if (Firebug.CSSModule) { - // Maintain support for older versions of firebug that do not - // have the CSS change event implementation - Firebug.CSSModule.addListener(this); - } - if (Firebug.HTMLModule) { - Firebug.HTMLModule.addListener(this); - } - if (Firebug.Editor.supportsStopEvent) { - Firebug.Editor.addListener(this); - } - }, - - loadedContext: function(context) { - if (this.isAlwaysEnabled()) { - this.monitorContext(context); - } - }, - onEnabled: function(context) { - this.monitorContext(context); - }, - onDisabled: function(context) { - this.unmonitorContext(context); - }, - - ////////////////////////////////////////////// - // Actions - revertAllChanges: function(change, context) { - var diffContext = this.getDiffContext(context); - var changes = diffContext.changes; - - // Revert means everything, not just those that are filtered. - // Keeping the change model in sync for arbitrary changes is - // currently out of scope - // - // We also rely on filter to be designed such that the model's - // integrity remains. - for (var i = changes.length; i > 0; i--) { - var curChange = changes[i-1]; - - revertChange(curChange, context); - changes.splice(i-1, 1); - - if (change == curChange) { - break; - } - } - }, - revertChange: function(change, context, force) { - var diffContext = this.getDiffContext(context); - var changes = diffContext.changes; - - var tempChanges = changes.slice(); - var revert = Events.mergeRevert(change, tempChanges); - if ((revert.length > 1 || changes.length - tempChanges.length > 1) && !force) { - return false; - } - - // Perform the revert - for (var i = revert.length; i > 0; i--) { - var curChange = revert[i-1]; - - revertChange(curChange, context); - } - - diffContext.changes = tempChanges; - return revert; - }, - - ////////////////////////////////////////////// - // Editor Listener - onBeginEditing: function(panel, editor, target, value) { - this.onBeginFirebugChange(target); - this.onSaveEdit(panel, editor, target, value); - }, - onSaveEdit: function(panel, editor, target, value, previousValue) { - // Update the data store used for the HTML editor monitoring - var diffContext = this.getDiffContext(); - diffContext.htmlEditPath = this.getHtmlEditorPaths(editor); - }, - onStopEdit: function(panel, editor, target) { - this.onEndFirebugChange(target); - }, - - ////////////////////////////////////////////// - // CSSModule Listener - onCSSInsertRule: function(styleSheet, cssText, ruleIndex) { - styleSheet.source = "dispatch"; - this.recordChange( - new Events.css.CSSInsertRuleEvent( - styleSheet.cssRules[ruleIndex], - Events.ChangeSource.FIREBUG_CHANGE)); - }, - onCSSDeleteRule: function(styleSheet, ruleIndex) { - styleSheet.source = "dispatch"; - this.recordChange( - new Events.css.CSSRemoveRuleEvent( - styleSheet.cssRules[ruleIndex], - Events.ChangeSource.FIREBUG_CHANGE)); - }, - onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue, prevPriority, parent, baseText) { - if (!style.parentRule) { - // If we are dealing with an older version of firebug, protect ourselves from this failure and - // just drop the change completely - if (!parent) - return; - - // This is a change to the inline style of a particular element, handle this. - // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679 - this.recordChange( - new Events.dom.DOMAttrChangedEvent( - parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText, - undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE)); - } else { - this.recordChange( - new Events.css.CSSSetPropertyEvent( - style.parentRule, propName, propValue, propPriority, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE)); - } - }, - - onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, parent, baseText) { - if (!style.parentRule) { - // If we are dealing with an older version of firebug, protect ourselves from this failure and - // just drop the change completely - if (!parent) - return; - - // This is a change to the inline style of a particular element, handle this. - // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679 - this.recordChange( - new Events.dom.DOMAttrChangedEvent( - parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText, - undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE)); - } else { - this.recordChange( - new Events.css.CSSRemovePropertyEvent( - style.parentRule, propName, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE)); - } - }, - - ////////////////////////////////////////////// - // HTMLModule Listener - onBeginFirebugChange: function(node, context) { - var diffContext = this.getDiffContext(context); - - diffContext.editTarget = node; - - var rep = Firebug.getRepObject(node) || node; - if (rep instanceof Node) { - diffContext.editTargetXpath = Path.getElementPath(rep); - } else if (rep instanceof CSSRule || rep instanceof StyleSheet) { - diffContext.editTargetXpath = Path.getStylePath(rep); - } else { - diffContext.editTargetXpath = undefined; - } - - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule.onBeginFirebugChange", diffContext.editTarget); - - diffContext.editEvents = []; - }, - - onEndFirebugChange: function(node, context) { - var diffContext = this.getDiffContext(context); - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModile.onEndFirebugChange: " + node, diffContext.editEvents); - - var editEvents = diffContext.editEvents; - if (editEvents.length) { - editEvents = Events.merge(editEvents, true); - - for (var i = 0; i < editEvents.length; i++) { - var change = editEvents[i]; - // Special case for HTML free edit. It's not pretty but it gets the - // job done. In the future we may want to consider executing changes - // in the Firebug editors within ignore blocks, and generating events - // for the final states, but for now we want to keep the coupling - // low - function htmlEditChange() { - return diffContext.htmlEditPath - && diffContext.htmlEditPath[0] <= change.xpath - && change.xpath <= diffContext.htmlEditPath[1]; - } - function changeApplies() { - return change.appliesTo(Firebug.getRepObject(diffContext.editTarget) || diffContext.editTarget, diffContext.editTargetXpath); - } - if (htmlEditChange() || changeApplies()) { - change.changeSource = Events.ChangeSource.FIREBUG_CHANGE; - } - this.dispatchChange(change); - } - } - - delete diffContext.editTarget; - delete diffContext.editTargetXpath; - delete diffContext.editEvents; - delete diffContext.htmlEditPath; - }, - - ////////////////////////////////////////////// - // Self - domEventLogger: function(ev, context) { - if (!this.ignoreNode(ev.target)) { - var diffContext = this.getDiffContext(context); - this.recordChange( - Events.dom.createDOMChange(ev, diffContext.changeSource), - context); - } - }, - charDataChangedEventLogger: function(ev, context) { - // Filter out char data events whose parents are a firebug object - var filterNode = ev.target.parentNode; - if (!this.ignoreNode(ev.target.parentNode)) { - this.domEventLogger(ev, context); - } - }, - attributeChangedEventLogger: function(ev, context) { - // We only care about attributes that actually change or are created or deleted - if (ev.attrChange != MutationEvent.MODIFICATION - || ev.newValue != ev.prevValue) { - this.domEventLogger(ev, context); - } - }, - - monitorContext: function(context) { - if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.monitorContext", context); } - var diffContext = this.getDiffContext(context); - if (diffContext.eventLogger) return; - - diffContext.eventLogger = bind(this.domEventLogger, this, context); - diffContext.attrEventLogger = bind(this.attributeChangedEventLogger, this, context); - diffContext.charDataEventLogger = bind(this.charDataChangedEventLogger, this, context); - - context.window.addEventListener("DOMNodeInserted", diffContext.eventLogger, true); - context.window.addEventListener("DOMNodeRemoved", diffContext.eventLogger, true); - context.window.addEventListener("DOMAttrModified", diffContext.attrEventLogger, true); - context.window.addEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true); - }, - unmonitorContext: function(context) { - if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.unmonitorContext", context); } - var diffContext = this.getDiffContext(context); - if (!diffContext.eventLogger) return; - - context.window.removeEventListener("DOMNodeInserted", diffContext.eventLogger, true); - context.window.removeEventListener("DOMNodeRemoved", diffContext.eventLogger, true); - context.window.removeEventListener("DOMAttrModified", diffContext.attrEventLogger, true); - context.window.removeEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true); - - delete diffContext.eventLogger; - delete diffContext.attrEventLogger; - delete diffContext.charDataEventLogger; - }, - - ignoreNode: function(node) { - // Ignore firebug elements and any top level elements that are not the doc element - return node.firebugIgnore - || unwrapObject(node).firebugIgnore - || (node.className || "").indexOf("firebug") > -1 - || (node.id || "").indexOf("firebug") > -1 - || (node.hasAttribute && node.hasAttribute("firebugIgnore")); - }, - - getHtmlEditorPaths: function(editor) { - // Select the xpath update range. This is from the first to after the - // last element in the range (or '}' if there is no sibling after that - // to simplify the match test) - // - // This is not 100%, erroring on the side marking app changes as Firebug changes - // To fully resolve this, deeper integration with Firebug will be required, - // most likely in the form of changes to the editors to use diff ignore - // blocks and generate custom events. - var elements = editor.editingElements; - if (elements) { - var nextEl = getNextElement((elements[1] || elements[0]).nextSibling); - return [ - Path.getElementPath(elements[0]), - Path.getElementPath(nextEl) || '}' - ]; - } - }, - - clearChanges: function(context) { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule.clearChanges", context); - - var diffContext = this.getDiffContext(context); - diffContext.changes = []; - - dispatch(this.fbListeners, "onClearChanges", [context || FirebugContext]); - }, - - navNextChange: function(context) { - dispatch(this.fbListeners, "onNavNextChange", [context || FirebugContext]); - }, - navPrevChange: function(context) { - dispatch(this.fbListeners, "onNavPrevChange", [context || FirebugContext]); - }, - - ignoreChanges: function(worker, context) { - // If no context is available failover. This failover is mostly for testing merges. - var diffContext = this.getDiffContext(context) || {}; - try { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule: Set ignore changes", context); - diffContext.ignore = true; - - worker(); - } finally { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule: Reset ignore changes", context); - diffContext.ignore = false; - } - }, - firebugChanges: function(worker, context) { - // If no context is available failover. This failover is mostly for testing merges. - var diffContext = this.getDiffContext(context) || {}; - try { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule: Set firebug changes", context); - diffContext.changeSource = Events.ChangeSource.FIREBUG_CHANGE; - - worker(); - } finally { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule: Reset firebug changes", context); - delete diffContext.changeSource; - } - }, - - recordChange: function(change, context) { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule.recordChange", change); - var diffContext = this.getDiffContext(context); - - // Ignore if a context does not exist, we are in ignore mode, or the context is not attached - if (!diffContext || diffContext.ignore || !diffContext.eventLogger) return; - - if (!diffContext.editTarget) { - this.dispatchChange(change, context); - } else { - diffContext.editEvents.push(change); - } - }, - dispatchChange: function(change, context) { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("DiffModule.dispatchChange", change); - - var diffContext = this.getDiffContext(context); - diffContext.changes.push(change); - - dispatch(this.fbListeners, "onDiffChange", [change, context || FirebugContext]); - }, - - getChanges: function(context) { - var diffContext = this.getDiffContext(context); - return (diffContext && diffContext.changes) || []; - }, - - getDiffContext: function(context) { - context = context || FirebugContext; - if (!context) { - return null; - } - - context.diffContext = context.diffContext || { changes: [] }; - return context.diffContext; - } -}); - -Firebug.registerActivableModule(Firebug.DiffModule); - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/diffMonitor.js b/branches/firebug1.5/content/firediff/content/firediff-original/diffMonitor.js deleted file mode 100644 index 26f6d0dc..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/diffMonitor.js +++ /dev/null @@ -1,365 +0,0 @@ -/* See license.txt for terms of usage */ -var FireDiff = FireDiff || {}; - -FBL.ns(function() { with (FBL) { - -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsIDocumentEncoder = Ci.nsIDocumentEncoder; -const nsIFile = Ci.nsIFile; -const nsIFileOutputStream = Ci.nsIFileOutputStream; -const nsIFilePicker = Ci.nsIFilePicker; -const nsIPrefBranch2 = Ci.nsIPrefBranch2; -const EncoderService = Cc["@mozilla.org/layout/documentEncoder;1?type=text/plain"]; -const FileOutputService = Cc["@mozilla.org/network/file-output-stream;1"]; -const PickerService = Cc["@mozilla.org/filepicker;1"]; -const PrefService = Cc["@mozilla.org/preferences-service;1"]; -const prefs = PrefService.getService(nsIPrefBranch2); -const PromptService = Cc["@mozilla.org/embedcomp/prompt-service;1"]; -const prompt = PromptService.getService(Ci.nsIPromptService); - -var Events = FireDiff.events, - Path = FireDiff.Path, - Reps = FireDiff.reps, - Fireformat = {}; - -try { - Components.utils.import("resource://fireformat/formatters.jsm", Fireformat); -} catch (err) { -} - -var i18n = document.getElementById("strings_firediff"); -var Panel = Firebug.ActivablePanel || Firebug.Panel; - -function DiffMonitor() {} -DiffMonitor.prototype = extend(Panel, { - name: "firediff", - title: i18n.getString("title.diffMonitor"), - statusSeparator: ">", - searchable: true, - - initializeNode: function(panelNode) { - if (Firebug.DiffModule.addListener) { - Firebug.DiffModule.addListener(this); - } - - this.addStyleSheet(this.document, "chrome://firediff/skin/firediff.css", "fireDiffCss"); - this.applyDisplayPrefs(); - - if (Firebug.DiffModule.supportsFirebugEdits) { - prefs.addObserver(Firebug.prefDomain, this, false); - } - }, - - show: function(state) { - if (Firebug.version < "1.4") { - this.panelNode.innerHTML = i18n.getString("warning.firebugVersion"); - return; - } - - var enabled = Firebug.DiffModule.isAlwaysEnabled(); - if (enabled) { - Firebug.DiffModule.disabledPanelPage.hide(this); - - this.showToolbarButtons("fbDiffMonitorButtons", true); - $("cmd_copy").setAttribute("disabled", true); - - if (!this.selection) { - this.select(this.getDefaultSelection()); - } - } else { - this.hide(); - Firebug.DiffModule.disabledPanelPage.show(this); - } - }, - enablePanel: function(module) { - Panel.enablePanel.apply(this, arguments); - this.show(); - }, - disablePanel: function(module) { - Panel.disablePanel.apply(this, arguments); - this.hide(); - }, - hide: function(state) { - this.showToolbarButtons("fbDiffMonitorButtons", false); - $("cmd_copy").removeAttribute("disabled"); - - var panelStatus = Firebug.chrome.getPanelStatusElements(); - panelStatus.clear(); // clear stack on status bar - this.selection = undefined; - }, - - addStyleSheet: function(doc, uri, id) { - // Make sure the stylesheet isn't appended twice. - if ($(id, doc)) return; - - var styleSheet = createStyleSheet(doc, uri); - styleSheet.setAttribute("id", id); - addStyleSheet(doc, styleSheet); - }, - getOptionsMenuItems: function(context) { - var ret = []; - if (Firebug.DiffModule.supportsFirebugEdits) { - ret.push( - this.optionsMenu("option.showAppChanges", "firediff.displayAppChanges"), - this.optionsMenu("option.showFirebugChanges", "firediff.displayFirebugChanges"), - "-" - ); - } - ret.push({ - label: i18n.getString("option.formatterOptions"), - nol10n: true, - command: bindFixed(this.showFormatterOptions, this) - }); - - return ret; - }, - optionsMenu: function(label, option) { - var value = Firebug.getPref(Firebug.prefDomain, option); - return { - label: i18n.getString(label), - nol10n: true, - type: "checkbox", - checked: value, - command: bindFixed(Firebug.setPref, this, Firebug.prefDomain, option, !value) - }; - }, - showFormatterOptions: function() { - // See cmd_options in extensions.js - var features= "chrome,titlebar,toolbar,centerscreen,"; - try { - var instantApply = gPref.getBoolPref("browser.preferences.instantApply"); - features += (instantApply ? "dialog=no" : "modal"); - } catch (e) { - features += "modal"; - } - window.openDialog("chrome://fireformat/content/options.xul", "", features); - }, - - selectSnapshot: function(change) { - try { - // We run this here to defer change processing - this.select(change.getSnapshot(this.context)); - } catch (err) { - FBTrace.sysout(err,err); - } - }, - revertAllChanges: function(change) { - try { - Firebug.DiffModule.revertAllChanges(change, this.context); - this.updateSelection(this.lastSel); - } catch (err) { - FBTrace.sysout(err,err); - } - }, - revertChange: function(change) { - try { - var dontPrompt = this.isDontPromptOnMultipleRevert(); - var ret = Firebug.DiffModule.revertChange(change, this.context, dontPrompt); - if (!ret) { - var checked = { value: false }; - var button = prompt.confirmCheck( - null, - i18n.getString("prompt.title.MultipleRevert"), - i18n.getString("prompt.text.MultipleRevert"), - i18n.getString("prompt.dontAskAgain"), - checked); - if (!button) { - return; - } - - // Save the pref value - Firebug.setPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt", checked.value); - - // Perform a forced revert - Firebug.DiffModule.revertChange(change, this.context, true); - } - - this.updateSelection(this.lastSel); - } catch (err) { - FBTrace.sysout(err,err); - } - }, - saveSnapshot: function(change) { - var file = this.promptForFileName(i18n.getString("menu.SaveSnapshot"), change.changeType); - if (file) { - var snapshot = change.getSnapshot(this.context); - this.writeString(file, snapshot.getText()); - } - }, - saveDiff: function(change) { - try { - var file = this.promptForFileName(i18n.getString("menu.SaveDiff"), "diff"); - if (file) { - var snapshot = change.getSnapshot(this.context), - base = change.getBaseSnapshot(this.context), - snapshotText = snapshot.getText(), - baseText = base.getText(), - diff = JsDiff.createPatch( - change.getDocumentName(this.context), - baseText, snapshotText, - i18n.getString("diff.baseFile"), i18n.getString("diff.snapshot")); - - this.writeString(file, diff); - } - } catch (err) { - FBTrace.sysout(err, err); - } - }, - - - promptForFileName: function(caption, mode) { - var picker = PickerService.createInstance(nsIFilePicker); - picker.init(window, caption, nsIFilePicker.modeSave); - if (mode == "DOM") { - picker.appendFilters(nsIFilePicker.filterHTML); - picker.defaultExtension = "html"; - } else if (mode == "CSS") { - picker.appendFilter(i18n.getString("prompt.cssFiles"), "*.css"); - picker.defaultExtension = "css"; - } else if (mode == "diff") { - picker.appendFilter(i18n.getString("prompt.diffFiles"), "*.diff"); - picker.defaultExtension = "diff"; - } - picker.appendFilters(nsIFilePicker.filterText); - picker.appendFilters(nsIFilePicker.filterAll); - var ret = picker.show(); - if ((ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) && picker.file) { - return picker.file; - } - }, - writeString: function(file, string) { - var outputStream = FileOutputService.createInstance(nsIFileOutputStream); - outputStream.init(file, -1, -1, 0); // Default mode and permissions - - // The Document encoder handles all of the heavy lifting here: encoding and line break conversion - var serializer = EncoderService.createInstance(nsIDocumentEncoder); - serializer.init(document, "text/plain", nsIDocumentEncoder.OutputPreformatted); - serializer.setCharset("UTF-8"); - serializer.setNode(document.createTextNode(string)); - serializer.encodeToStream(outputStream); - - outputStream.close(); - }, - - getContextMenuItems: function(object, target) { - if (this.selection == Reps.Monitor) { - var ret = [ - { label: i18n.getString("menu.ChangeSnapshot"), command: bindFixed(this.selectSnapshot, this, object), nol10n: true }, - "-" - ]; - - if (Fireformat.Formatters) { - ret.push({ label: i18n.getString("menu.SaveSnapshot"), command: bindFixed(this.saveSnapshot, this, object), nol10n: true }); - ret.push({ label: i18n.getString("menu.SaveDiff"), command: bindFixed(this.saveDiff, this, object), nol10n: true }); - ret.push("-"); - } - - ret.push({ label: i18n.getString("menu.RevertChange"), command: bindFixed(this.revertChange, this, object), nol10n: true }); - ret.push({ label: i18n.getString("menu.RevertAllChanges"), command: bindFixed(this.revertAllChanges, this, object), nol10n: true }); - return ret; - } - }, - - getDefaultSelection: function(object) { - return Reps.Monitor; - }, - updateSelection: function(object) { - clearNode(this.panelNode); - - if (this.lastSel && this.lastSel.hide) { - this.lastSel.hide(this); - } - - object.show(this); - this.showToolbarButtons("fbDiffSnapshotNav", !!object.showNext); - this.lastSel = object; - }, - - getObjectPath: function(object) { - var ret = [ Reps.Monitor ]; - if (Reps.DOMSnapshotRep.supportsObject(object) - || Reps.CSSSnapshotRep.supportsObject(object)) { - ret.push(object); - } - return ret; - }, - supportsObject: function(object) { - if (Reps.MonitorRep.supportsObject(object) - || Reps.DOMSnapshotRep.supportsObject(object) - || Reps.CSSSnapshotRep.supportsObject(object)) - return 1000; - return 0; - }, - - search: function(text, reverse) { - if (this.selection.search) { - return this.selection.search(text, reverse, this); - } - }, - - // nsIPrefObserver - observe: function(subject, topic, data) - { - // We're observing preferences only. - if (topic != "nsPref:changed") - return; - - var prefName = data.substr(Firebug.prefDomain.length + 1); - if (prefName == "firediff.displayAppChanges" - || prefName == "firediff.displayFirebugChanges") { - this.applyDisplayPrefs(); - } - }, - - applyDisplayPrefs: function() { - this.applyDisplayPref("firediff.displayAppChanges", "showAppChanges", !Firebug.DiffModule.supportsFirebugEdits); - this.applyDisplayPref("firediff.displayFirebugChanges", "showFirebugChanges"); - }, - applyDisplayPref: function(prefName, cssName, force) { - if (force || Firebug.getPref(Firebug.prefDomain, prefName)) { - setClass(this.panelNode, cssName); - } else { - removeClass(this.panelNode, cssName); - } - }, - isDisplayAppChanges: function() { - return Firebug.getPref(Firebug.prefDomain, "firediff.displayAppChanges"); - }, - isDisplayFirebugChanges: function() { - return Firebug.getPref(Firebug.prefDomain, "firediff.displayFirebugChanges"); - }, - isDontPromptOnMultipleRevert: function() { - return !!Firebug.getPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt"); - }, - - onDiffChange: function(change, context) { - if (this.context != context || !this.selection) return; - - // this.selection could be null if an event occurs before we are displayed - if (this.selection.onChange) { - this.selection.onChange(change, this); - } - }, - onClearChanges: function(context) { - if (this.context != context) return; - - if (this.panelNode) { - clearNode(this.panelNode); - } - }, - onNavNextChange: function(context) { - if (this.selection.showNext) { - this.selection.showNext(); - } - }, - onNavPrevChange: function(context) { - if (this.selection.showPrev) { - this.selection.showPrev(); - } - } -}); - -Firebug.registerPanel(DiffMonitor); - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/domEvents.js b/branches/firebug1.5/content/firediff/content/firediff-original/domEvents.js deleted file mode 100644 index f089550d..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/domEvents.js +++ /dev/null @@ -1,446 +0,0 @@ -/* See license.txt for terms of usage */ -FireDiff = FireDiff || {}; - -FBL.ns(function() { with (FBL) { - -var i18n = document.getElementById("strings_firediff"); - -var Path = FireDiff.Path, - Reps = FireDiff.reps, - ChangeEvent = FireDiff.events.ChangeEvent, - - CHANGES = FireDiff.events.AnnotateAttrs.CHANGES, - ATTR_CHANGES = FireDiff.events.AnnotateAttrs.ATTR_CHANGES, - REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES; - -function DOMChangeEvent(target, xpath, displayXPath, changeSource) { - ChangeEvent.call(this, changeSource); - this.changeType = "DOM"; - this.xpath = xpath || Path.getElementPath(target); - this.displayXPath = displayXPath || Path.getElementPath(target, true); - - // Store this just to create a mostly accurate repobject link. This shouldn't be used otherwise - this.target = target; -} -DOMChangeEvent.prototype = extend(ChangeEvent.prototype, { - sameFile: function(target) { - return this.target.ownerDocument == target.ownerDocument - || (target.target && this.target.ownerDocument == target.target.ownerDocument); - }, - getSnapshot: function(context) { - return new Reps.DOMSnapshot(this, context.window.document); - }, - getBaseSnapshot: function(context) { - return new Reps.DOMSnapshot(null, context.window.document); - }, - getDocumentName: function() { - return this.target.ownerDocument.URL; - }, - - getXpath: function(target) { return Path.getElementPath(target); }, - xpathLookup: function(xpath, root) { - var iterate = (root.ownerDocument || root).evaluate(xpath, root, null, XPathResult.ANY_TYPE, null); - return iterate.iterateNext(); - }, - - annotateTree: function(tree, root) { - var actionNode = this.getActionNode(tree, root); - if (!actionNode) { - if (FBTrace.DBG_ERRORS) { - FBTrace.sysout("ERROR: annotateTree: actionNode is undefined tree: " + root, tree); - FBTrace.sysout("annotateTree: change", this); - } - } - actionNode[CHANGES] = this; - - if (actionNode.nodeType == Node.TEXT_NODE) { - return this; - } else { - return actionNode; - } - } -}); - -function DOMInsertedEvent(target, clone, xpath, displayXPath, changeSource) { - DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource); - this.clone = clone || target.cloneNode(true); - - if (target instanceof Text) { - this.previousValue = ""; - this.value = target.data; - } -} -DOMInsertedEvent.prototype = extend(DOMChangeEvent.prototype, { - subType: "dom_inserted", - - getSummary: function() { - return i18n.getString("summary.DOMInserted"); - }, - isElementAdded: function() { return true; }, - - apply: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getInsertActionNode(target, xpath); - - actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling); - }, this)); - }, - revert: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - if (actionNode) { - actionNode.parentNode.removeChild(actionNode); - } - }, this)); - }, - - merge: function(candidate, simplifyOnly) { - // Only changes that affect us are: - // - Remove on same xpath (Overrides) - // - Modification of self (by attr or char data change) - // - Any modification of children - // - XPath updates - - var updateXPath = candidate.getMergedXPath(this); - - // Self and Child modification - if (Path.isChild(this.xpath, candidate.xpath) - || (!updateXPath && this.xpath == candidate.xpath)) { - // Something changed without our own tree, apply those changes and call - // it a day - var clone = this.clone.cloneNode(true); // Yeah..... - candidate.apply(clone, this.xpath); - - return [new DOMInsertedEvent(this.target, clone, this.xpath, this.displayXPath, this.changeSource)]; - } - - // XPath modification - if (!simplifyOnly && updateXPath) { - return [ - this.cloneOnXPath(updateXPath), - candidate - ]; - } - }, - mergeRevert: function(candidate) { - // On revert we want to - // - Revert any changes made on this object or a child - if (Path.isChildOrSelf(this.xpath, candidate.xpath)) { - var ret = this.merge(candidate); - if (ret) { - return ret; - } - - // XPath modification - var updateXPath = candidate.getMergedXPath(this); - if (updateXPath) { - return [ - this.cloneOnXPath(updateXPath), - candidate - ]; - } - } - }, - isCancellation: function(candidate) { - return candidate.overridesChange(this) && this.xpath == candidate.xpath; - }, - affectsCancellation: function(candidate) { - return Path.isChildOrSelf(this.xpath, candidate.xpath); - }, - cloneOnXPath: function(xpath) { - return new DOMInsertedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource); - } -}); -function DOMRemovedEvent(target, clone, xpath, displayXPath, changeSource) { - DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource); - this.clone = clone || target.cloneNode(true); - - if (target instanceof Text) { - this.value = ""; - this.previousValue = target.data; - } -} -DOMRemovedEvent.prototype = extend(DOMChangeEvent.prototype, { - subType: "dom_removed", - - getSummary: function() { - return i18n.getString("summary.DOMRemoved"); - }, - isElementRemoved: function() { return true; }, - - apply: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - actionNode.parentNode.removeChild(actionNode); - }, this)); - }, - revert: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getInsertActionNode(target, xpath); - - actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling); - }, this)); - }, - - merge: function(candidate, simplifyOnly) { - if (Path.isChild(this.xpath, candidate.xpath)) { - // If this is a child WRT to xpath, we don't touch it. - return undefined; - } - - // Check for xpath modifications - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } - }, - mergeRevert: function(candidate) { - // The only thing that a delete might revert is an insert operation - // of its identity - if (this.isCancellation(candidate)) { - return []; - } - }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && candidate.isElementAdded() - && this.clone.isEqualNode(candidate.clone); - }, - affectsCancellation: function(candidate) { - return this.isCancellation(candidate); - }, - cloneOnXPath: function(xpath) { - return new DOMRemovedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource); - }, - - overridesChange: function(prior) { - return (!prior.isElementRemoved() && this.xpath == prior.xpath) - || Path.isChild(this.xpath, prior.xpath); - }, - - annotateTree: function(tree, root) { - var actionNode = this.getInsertActionNode(tree, root).parent; - var list = actionNode[REMOVE_CHANGES] || [], - i = list.length; - while (i > 0 && Path.compareXPaths(this.xpath, list[i-1].xpath) < 0) { - i--; - } - list.splice(i, 0, this); - actionNode[REMOVE_CHANGES] = list; - - this.clone.change = this; - - return this; - } -}); - - -function DOMAttrChangedEvent(target, attrChange, attrName, newValue, prevValue, xpath, displayXPath, changeSource, clone) { - DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource); - - this.attrChange = attrChange; - this.attrName = attrName; - this.previousValue = prevValue; - this.value = newValue; - - this.clone = clone || target.cloneNode(false); -} -DOMAttrChangedEvent.prototype = extend(DOMChangeEvent.prototype, { - subType: "attr_changed", - getSummary: function() { - if (this.attrChange == MutationEvent.MODIFICATION) { - return i18n.getString("summary.DOMAttrChanged"); - } else if (this.attrChange == MutationEvent.ADDITION) { - return i18n.getString("summary.DOMAttrAddition"); - } else if (this.attrChange == MutationEvent.REMOVAL) { - return i18n.getString("summary.DOMAttrRemoval"); - } - }, - isAddition: function() { return this.attrChange == MutationEvent.ADDITION; }, - isRemoval: function() { return this.attrChange == MutationEvent.REMOVAL; }, - - merge: function(candidate, simplifyOnly) { - if (this.subType != candidate.subType - || this.xpath != candidate.xpath - || this.attrName != candidate.attrName) { - // Check for xpath modifications - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } - return; - } - - var attrChange = this.attrChange; - if (candidate.attrChange == MutationEvent.REMOVAL) { - attrChange = candidate.attrChange; - } else if (this.attrChange == MutationEvent.REMOVAL) { - attrChange = MutationEvent.MODIFICATION; - } - return [ - new DOMAttrChangedEvent( - this.target, - attrChange, this.attrName, - candidate.value, this.previousValue, - this.xpath, this.displayXPath, this.changeSource, this.clone) - ]; - }, - cloneOnXPath: function(xpath) { - return new DOMAttrChangedEvent( - this.target, - this.attrChange, this.attrName, - this.value, this.previousValue, - xpath, this.displayXPath, this.changeSource, this.clone); - }, - mergeRevert: function(candidate) { - // On revert we want to - // - Revert any changes made on this exact attr - if (this.xpath == candidate.xpath && this.attrName == candidate.attrName) { - return this.merge(candidate); - } - }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.attrName == candidate.attrName - && (this.previousValue == candidate.value - || (this.attrChange == MutationEvent.ADDITION - && candidate.attrChange == MutationEvent.REMOVAL)); - }, - affectsCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.attrName == candidate.attrName; - }, - - apply: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - if (this.attrChange == MutationEvent.REMOVAL) { - actionNode.removeAttribute(this.attrName); - } else if (this.attrChange == MutationEvent.ADDITION - || this.attrChange == MutationEvent.MODIFICATION) { - actionNode.setAttribute(this.attrName, this.value); - } - }, this)); - }, - revert: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - if (this.attrChange == MutationEvent.ADDITION) { - actionNode.removeAttribute(this.attrName); - } else if (this.attrChange == MutationEvent.REMOVAL - || this.attrChange == MutationEvent.MODIFICATION) { - actionNode.setAttribute(this.attrName, this.previousValue); - } - }, this)); - }, - - annotateTree: function(tree, root) { - var actionNode = this.getActionNode(tree, root); - var list = actionNode[ATTR_CHANGES] || {}; - list[this.attrName] = this; - actionNode[ATTR_CHANGES] = list; - - return actionNode; - } -}); - -function DOMCharDataModifiedEvent(target, newValue, prevValue, xpath, displayXPath, changeSource, clone) { - DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource); - - this.previousValue = prevValue; - this.value = newValue; - - this.clone = clone || target.cloneNode(false); -} -DOMCharDataModifiedEvent.prototype = extend(DOMChangeEvent.prototype, { - subType: "char_data_modified", - getSummary: function() { - return i18n.getString("summary.DOMCharDataModified"); - }, - merge: function(candidate, simplifyOnly) { - if (this.subType != candidate.subType - || this.xpath != candidate.xpath) { - // Check for xpath modifications - var updateXpath = candidate.getMergedXPath(this); - if (!simplifyOnly && updateXpath) { - return [ - this.cloneOnXPath(updateXpath), - candidate - ]; - } - return undefined; - } - - return [ new DOMCharDataModifiedEvent(this.target, candidate.value, this.previousValue, this.xpath, this.displayXPath, this.changeSource, this.clone) ]; - }, - mergeRevert: function(candidate) { - if (this.xpath == candidate.xpath) { - return this.merge(candidate); - } - }, - isCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.subType == candidate.subType - && this.previousValue == candidate.value; - }, - affectsCancellation: function(candidate) { - return this.xpath == candidate.xpath - && this.subType == candidate.subType; - }, - - cloneOnXPath: function(xpath) { - return new DOMCharDataModifiedEvent( - this.target, this.value, this.previousValue, xpath, this.displayXPath, this.changeSource, this.clone); - }, - - apply: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - actionNode.replaceData(0, actionNode.length, this.value); - }, this)); - }, - revert: function(target, xpath) { - Firebug.DiffModule.ignoreChanges(bindFixed( - function() { - var actionNode = this.getActionNode(target, xpath); - actionNode.replaceData(0, actionNode.length, this.previousValue); - }, this)); - } -}); - -FireDiff.events.dom = { - DOMInsertedEvent: DOMInsertedEvent, - DOMRemovedEvent: DOMRemovedEvent, - DOMAttrChangedEvent: DOMAttrChangedEvent, - DOMCharDataModifiedEvent: DOMCharDataModifiedEvent, - - createDOMChange: function(ev, changeSource) { - switch (ev.type) { - case "DOMNodeInserted": - case "DOMNodeInsertedInfoDocument": - return new DOMInsertedEvent(ev.target, undefined, undefined, undefined, changeSource); - case "DOMNodeRemoved": - case "DOMNodeRemovedFromDocument": - return new DOMRemovedEvent(ev.target, undefined, undefined, undefined, changeSource); - case "DOMAttrModified": - return new DOMAttrChangedEvent(ev.target, ev.attrChange, ev.attrName, ev.newValue, ev.prevValue, undefined, undefined, changeSource); - case "DOMCharacterDataModified": - return new DOMCharDataModifiedEvent(ev.target, ev.newValue, ev.prevValue, undefined, undefined, changeSource); - } - } -}; - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/domplate.js b/branches/firebug1.5/content/firediff/content/firediff-original/domplate.js deleted file mode 100644 index 042ac1c0..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/domplate.js +++ /dev/null @@ -1,654 +0,0 @@ -/* See license.txt for terms of usage */ -var FireDiff = FireDiff || {}; -FireDiff.domplate = {}; - -FBL.ns(function() { -(function () { with(FBL) { - -var i18n = document.getElementById("strings_firediff"); -const Events = FireDiff.events, - Path = FireDiff.Path, - CSSModel = FireDiff.CSSModel, - VersionCompat = FireDiff.VersionCompat, - Search = FireDiff.search; - -var DomUtil = { - diffText: function(change) { - function getText(value) { - return Firebug.showWhitespaceNodes ? value : value.replace(/(?:^\s+)|(?:\s+$)/g, ""); - } - - var diffChanges = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - if (diffChanges.changeType) { - return JsDiff.diffWords(getText(diffChanges.previousValue), getText(diffChanges.value)); - } else { - return [{ value: getText(change.nodeValue) }]; - } - }, - diffAttr: function(attr) { - if (attr.change) { - if (attr.localName == "style") { - return JsDiff.diffCss(attr.change.previousValue, attr.change.value); - } else { - return JsDiff.diffWords(attr.change.previousValue, attr.change.value); - } - } else { - return [ { value: attr.nodeValue } ]; - } - }, - isEmptyElement: function(element) { - return !element.firstChild && !element[Events.AnnotateAttrs.REMOVE_CHANGES]; - }, - - isPureText: function(element) { - for (var child = element.firstChild; child; child = child.nextSibling) { - if (child.nodeType == Node.ELEMENT_NODE) { - return false; - } - } - var removeChanges = element[Events.AnnotateAttrs.REMOVE_CHANGES] || []; - for (var i = 0; i < removeChanges.length; i++) { - if (removeChanges[i].clone.nodeType == Node.ELEMENT_NODE) { - return false; - } - } - return true; - }, - - isWhitespaceText: function(node) { - return VersionCompat.isWhitespaceText(node.clone || node); - }, - - isSourceElement: VersionCompat.isSourceElement -}; -this.DomUtil = DomUtil; - -// Common Domplates -/** - * Pretty print attribute list. - * - * Represents a list of attributes as well as any changes that have been applies - * to these attributes. - * - * Parameter: - * change: Change object that we are displaying - */ -var attributeList = domplate({ - tag: FOR("attr", "$change|attrIterator", TAG("$attr|getAttrTag", {attr: "$attr"})), - attributeDiff: - SPAN({class: "nodeAttr", $removedClass: "$attr|isAttrRemoved", $addedClass: "$attr|isAttrAdded", - $firebugDiff: "$attr|isFirebugDiff", $appDiff: "$attr|isAppDiff"}, - " ", - SPAN({class: "nodeName"}, "$attr.localName"), "="", - SPAN({class: "nodeValue"}, - FOR("block", "$attr|diffAttr", - SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")) - ), - """ - ), - - getAttrTag: function(attr) { - return this.attributeDiff; - }, - - attrIterator: function(change) { - return Search.getAttributes(change); - }, - - isAttrAdded: function(attr) { - return attr.change && attr.change.isAddition(); - }, - isAttrRemoved: function(attr) { - return attr.change && attr.change.isRemoval(); - }, - isFirebugDiff: function(attr) { - return attr.change && attr.change.changeSource == Events.ChangeSource.FIREBUG_CHANGE; - }, - isAppDiff: function(attr) { - return attr.change && attr.change.changeSource == Events.ChangeSource.APP_CHANGE; - }, - diffAttr: function(attr) { - return DomUtil.diffAttr(attr); - } -}); - -var propertyDefinition = domplate({ - tag: - DIV({class: "cssPropDiff"}, - SPAN({$removedClass: "$change|isPropRemoved", $addedClass: "$change|isPropAdded"}, - SPAN({class: "cssPropName"}, "$change.propName"), - SPAN({class: "cssColon"}, ":"), - SPAN({class: "cssPropValue"}, - FOR("block", "$change|diffProp", - SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")), - SPAN({$removedClass: "$change|isPriorityRemoved", $addedClass: "$change|isPriorityAdded"}, - "$change|getPriorityText") - ), - SPAN({class: "cssSemi"}, ";") - )), - - diffProp: function(change) { - return JsDiff.diffCss(change.prevValue, change.propValue); - }, - isPropAdded: function(change) { return !change.prevValue; }, - isPropRemoved: function(change) { return !change.propValue; }, - - getPriorityText: function(change) { - var important = change.propPriority || change.prevPriority; - return important ? (" !" + important) : ""; - }, - isPriorityAdded: function(change) { return !change.prevPriority; }, - isPriorityRemoved: function(change) { return !change.propPriority; } -}); - -// Diff Monitor Domplates -// TODO : Allow replink in the monitor case -var textChanged = domplate(FirebugReps.TextNode, { - tag: SPAN( - {class: "textDiff", $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"}, - FOR("block", "$change|diffText", - SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value") - )), - diffText: function(change) { - return DomUtil.diffText(change); - }, - isElementAdded: function(change) { - change = change || change[FireDiff.events.AnnotateAttrs.CHANGES]; - return change && change.isElementAdded && change.isElementAdded(); - }, - isElementRemoved: function(change) { - change = change || change[FireDiff.events.AnnotateAttrs.CHANGES]; - return change && change.isElementRemoved && change.isElementRemoved(); - } -}); - -this.TextChanged = textChanged; - -// Displays a rep link to an element that has changed. -// -// These changes are primarily attribute and insertion changes -// TODO : Attempt to merge this with the domplate defined below -this.ElementChanged = domplate(FirebugReps.Element, { - tag: FirebugReps.OBJECTLINK( - {$removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"}, - "<", - SPAN({class: "nodeTag"}, "$change.clone.localName|toLowerCase"), - TAG(attributeList.tag, {change: "$change"}), - ">" - ), - isElementAdded: function(change) { - return change.isElementAdded(); - }, - isElementRemoved: function(change) { - return change.isElementRemoved(); - } -}); - -// All Changes Domplates -var ChangeElement = extend(FirebugReps.Element, { - removedChanges: function(node) { - return node[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || []; - }, - - getElementName: function(change) { - // TODO : XML Handling - change = change.clone || change; - return (change.localName || "").toLowerCase(); - }, - isElementAdded: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change && change.isElementAdded && change.isElementAdded(); - }, - isElementRemoved: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change && change.isElementRemoved && change.isElementRemoved(); - }, - isFirebugDiff: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change.changeSource == Events.ChangeSource.FIREBUG_CHANGE; - }, - isAppDiff: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change.changeSource == Events.ChangeSource.APP_CHANGE; - } -}); - -var ParentChangeElement = extend(ChangeElement, { - childIterator: function(node) { - node = node.clone || node; - if (node.contentDocument) - // TODO : Should this use contentDocument.childNodes? - return [node.contentDocument.documentElement]; - - function includeChild(child) { - return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child); - } - return new Search.RemovedIterator(new Search.DOMIterator(node), this.removedChanges(node), includeChild); - } -}); - -var allChanges = { - getNodeTag: function(node, inline) { - if (node instanceof Element) { - if (node instanceof HTMLAppletElement) - return allChanges.EmptyElement.tag; - else if (node.firebugIgnore) - return null; - else if (DomUtil.isEmptyElement(node)) - return allChanges.EmptyElement.tag; - else if (!DomUtil.isSourceElement(node) && DomUtil.isPureText(node)) - return allChanges.TextElement.tag; - else - return allChanges.Element.tag; - } - else if (node instanceof CDATASection) // Must occur before instanceof Text - return allChanges.CDATANode.tag; - else if (node instanceof Text) - return inline ? allChanges.InlineTextNode.tag : allChanges.TextNode.tag; - else if (node instanceof ProcessingInstruction) - return allChanges.ProcessingInstruction.tag; - else if (node instanceof Comment && Firebug.showCommentNodes) - return allChanges.CommentNode.tag; - else if (node instanceof SourceText) - return FirebugReps.SourceText.tag; - else if (node instanceof Document) - return allChanges.Document.tag; - else if (node instanceof DocumentType) - return allChanges.DocType.tag; - else if (node instanceof DocumentFragment) - return allChanges.Document.tag; - else - return FirebugReps.Nada.tag; - }, - - Document: domplate(ParentChangeElement, { - tag: - DIV({class: "nodeBox containerNodeBox repIgnore", _repObject: "$change" }, DIV({class: "nodeChildBox"})) - }), - - DocType: domplate(ChangeElement, { - tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - DIV({class: "nodeLabel"}, - SPAN({class: "nodeLabelBox repTarget"}, - "<!DOCTYPE ", - SPAN({class: "nodeTag"}, "$change|getDocTypeName"), - - SPAN({$collapsed: "$change|hidePublicId"}, " PUBLIC "), - SPAN({class: "nodeValue", $collapsed: "$change|hidePublicId"}, """, "$change|getPublicId", """), - - SPAN({$collapsed: "$change|hideSystemIdTag"}, " SYSTEM "), - SPAN({class: "nodeValue", $collapsed: "$change|hideSystemId"}, """, "$change|getSystemId", """), - - SPAN({class: "nodeInternalSubset", $collapsed: "$change|hideInternalSubset"}, - " [", "$change|getInternalSubset", "]"), - SPAN({class: "nodeBracket"}, ">") - ) - ) - ), - - getDocTypeName: function(change) { - // TODO : XML Handling - var docType = change.clone || change; - return (docType.name || docType).toLowerCase(); - }, - - hidePublicId: function(change) { - return !this.getPublicId(change); - }, - getPublicId: function(change) { - var docType = change.clone || change; - return docType.publicId; - }, - - hideSystemId: function(change) { - return !this.getSystemId(change); - }, - hideSystemIdTag: function(change) { - return this.hideSystemId(change) || !this.hidePublicId(change); - }, - getSystemId: function(change) { - var docType = change.clone || change; - return docType.systemId; - }, - - hideInternalSubset: function(change) { - return !this.getInternalSubset(change); - }, - getInternalSubset: function(change) { - var docType = change.clone || change; - return docType.internalSubset; - } - }), - - ProcessingInstruction: domplate(ChangeElement, { - tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - DIV({class: "nodeLabel"}, - SPAN({class: "nodeLabelBox repTarget"}, - "<?", - SPAN({class: "nodeTag"}, "xslt-param"), - SPAN({class: "nodeValue", $collapsed: "$change|hideContent"}, " ", "$change|getContent"), - SPAN({class: "nodeBracket"}, "?>") - ) - ) - ), - - hideContent: function(change) { - return !this.getContent(change); - }, - getContent: function(change) { - var instruct = change.clone || change; - return instruct.nodeValue; - } - }), - - Element: domplate(ChangeElement, { - tag: - DIV({class: "nodeBox containerNodeBox repIgnore", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - DIV({class: "nodeLabel nodeContainerLabel"}, - IMG({class: "twisty"}), - SPAN({class: "nodeLabelBox repTarget"}, - "<", - SPAN({class: "nodeTag"}, "$change|getElementName"), - TAG(attributeList.tag, {change: "$change"}), - SPAN({class: "nodeBracket"}, ">") - ) - ), - DIV({class: "nodeChildBox"}), - DIV({class: "nodeCloseLabel"}, - SPAN({class: "nodeCloseLabelBox repTarget"}, - "</", SPAN({class: "nodeTag"}, "$change|getElementName"), ">" - ) - ) - ) - }), - - TextElement: domplate(ParentChangeElement, { - tag: - DIV({class: "nodeBox textNodeBox open repIgnore", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - SPAN({class: "nodeLabel"}, - SPAN({class: "nodeLabelBox repTarget"}, - "<", - SPAN({class: "nodeTag"}, "$change|getElementName"), - TAG(attributeList.tag, {change: "$change"}), - SPAN({class: "nodeBracket"}, ">"))), - SPAN({class: "nodeChildBox"}, - FOR("child", "$change|childIterator", - TAG("$child|getNodeTag", {change: "$child"}) - )), - SPAN( - "</", - SPAN({class: "nodeTag"}, "$change|getElementName"), - ">" - ) - ), - getNodeTag: function(node) { - return allChanges.getNodeTag(node.clone || node, true); - } - }), - - EmptyElement: domplate(ChangeElement, { - tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - DIV({class: "nodeLabel"}, - SPAN({class: "nodeLabelBox repTarget"}, - "<", - SPAN({class: "nodeTag"}, "$change|getElementName"), - TAG(attributeList.tag, {change: "$change"}), - SPAN({class: "nodeBracket"}, "/>") - ) - ) - ) - }), - - TextNode: domplate(ChangeElement, { - tag: - DIV({class: "nodeBox", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"})) - ) - }), - InlineTextNode: domplate(ChangeElement, { - tag: - SPAN({_repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"})) - ) - }), - - CDATANode: domplate(ChangeElement, { - tag: DIV({class: "nodeBox", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - "<![CDATA[", - SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"})), - "]]>" - ) - }), - - CommentNode: domplate(ChangeElement, { - tag: DIV({class: "nodeBox", _repObject: "$change", - $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded", - $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"}, - DIV({class: "nodeComment"}, - "<!--", TAG(textChanged.tag, {change: "$change"}), "-->" - ) - ) - }) -}; - -this.HtmlSnapshotView = function(tree, rootXPath, panelNode) { - this.tree = tree; - this.rootXPath = rootXPath; - this.panelNode = panelNode; -} -this.HtmlSnapshotView.prototype = { - childIterator: function(parent) { - return new Search.RemovedIterator( - new Search.DOMIterator(parent.clone || parent), - parent[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES], - this.includeChild); - }, - includeChild: function(child) { - return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child); - }, - - /* InsideOutBox View Interface */ - getParentObject: function(child) { - if (child.parentNode) { - return child.parentNode.change || child.parentNode; - } - if (child.change) { - return child.change; - } - - if (child.xpath) { - var components = Path.getRelativeComponents(Path.getParentPath(child.xpath), this.rootXPath); - if (!components.right) { - var iterate = (this.tree.ownerDocument || this.tree).evaluate(components.left, this.tree, null, XPathResult.ANY_TYPE, null); - var ret = iterate.iterateNext(); - return ret; - } - } - }, - getChildObject: function(parent, index, prevSibling) { - if (!parent) return; - - var iter = parent._diffIter || this.childIterator(parent.clone || parent); - var diffCache = parent._diffCache || []; - // Read in more elements if the this is a cache miss - while (diffCache.length <= index && !parent._diffIterExhausted) { - try { - diffCache.push(iter.next()); - } catch (err) { - // Assume this is StopIterator - parent._diffIterExhausted = true; - } - } - - parent._diffIter = iter; - parent._diffCache = diffCache; - - return diffCache[index]; - }, - createObjectBox: function(object, isRoot) { - var tag = allChanges.getNodeTag(object.clone || object, false); - return tag.replace({change: object}, this.panelNode.document); - } -}; - -var CSSChangeElement = { - getCSSRules: function(change) { - var removed = change[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || []; - return new Search.RemovedIterator(new Search.ArrayIterator(change.cssRules), removed); - }, - - getNodeTag: function(cssRule) { - var CSSChanges = FireDiff.domplate.CSSChanges; - - cssRule = cssRule.changeType ? cssRule.clone : cssRule; - if (cssRule instanceof CSSStyleSheet || cssRule instanceof CSSModel.StyleSheetClone) { - return CSSChanges.CSSList.tag; - } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSModel.CSSStyleRuleClone - || cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSModel.CSSFontFaceRuleClone) { - return CSSChanges.CSSStyleRule.tag; - } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSModel.CSSMediaRuleClone) { - return CSSChanges.CSSMediaRule.tag; - } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSModel.CSSImportRuleClone) { - return CSSChanges.CSSImportRule.tag; - } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSModel.CSSCharsetRuleClone) { - return CSSChanges.CSSCharsetRule.tag; - } - } -}; -this.CSSChanges = { - CSSList: domplate(CSSChangeElement, { - tag: FOR("rule", "$change|getCSSRules", - TAG("$rule|getNodeTag", {change: "$rule"}) - ) - }), - CSSImportRule: domplate(CSSChangeElement, { - tag: DIV({ - class: "cssRuleDiff firebugDiff", - _repObject: "$change"}, - "@import "$change.href";") - }), - CSSCharsetRule: domplate(CSSChangeElement, { - tag: DIV({ - class: "cssRuleDiff firebugDiff", - _repObject: "$change" - }, "@charset "$change.encoding";") - }), - CSSMediaRule: domplate(CSSChangeElement, { - tag: DIV({ - class: "cssMediaRuleDiff firebugDiff", - _repObject: "$change" - }, - DIV({class: "cssSelector"}, "@media $change|getMediaList {"), - DIV({class: "cssMediaRuleContent"}, - FOR("rule", "$change|getCSSRules", - TAG("$rule|getNodeTag", {change: "$rule"}))), - DIV("}") - ), - getMediaList: function(change) { - var content = [], - media = change.media; - for (var i = 0; i < media.length; i++) { - content.push(media.item ? media.item(i) : media[i]); - } - return content.join(", "); - } - }), - CSSStyleRule: domplate(CSSChangeElement, { - tag: DIV({ - class: "cssRuleDiff firebugDiff", - _repObject: "$change", - $removedClass: "$change|isRemoved", $addedClass: "$change|isAdded" - }, - DIV({class: "cssHead"}, - SPAN({class: "cssSelector"}, "$change|getSelectorText"), " {"), - FOR("prop", "$change|getRemovedProps", - TAG(propertyDefinition.tag, {change: "$prop"})), - FOR("prop", "$change|getCurrentProps", - TAG(propertyDefinition.tag, {change: "$prop"})), - DIV("}") - ), - getSelectorText: function(change) { - return change.selectorText || (change.clone || change.style).selectorText; - }, - isAdded: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change.subType == "insertRule"; - }, - isRemoved: function(change) { - change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change; - return change.subType == "removeRule"; - }, - getRemovedProps: function(change) { - if (!change.propChanges) { - if (change.subType == "removeProp") { - return [change]; - } else { - return []; - } - } - - var ret = []; - for (var i = 0; i < change.propChanges.length; i++) { - var prop = change.propChanges[i]; - if (prop.subType == "removeProp") { - ret.push(prop); - } - } - return ret; - }, - getCurrentProps: function(change) { - if (change.subType == "setProp") { - return [change]; - } else if (change.subType == "removeProp") { - return []; - } - - var propList = {}, - i = 0, index = 0, - style = (change.clone || change.style).style || change.style; - for (i = 0; i < style.length; i++) { - var propName = style[i], - propValue = style.getPropertyValue(propName), - propPriority = style.getPropertyPriority(propName); - propList[propName] = { - propName: propName, - propValue: propValue, propPriority: propPriority, - prevValue: propValue, prevPriority: propPriority - }; - } - if (change.propChanges) { - for (i = 0; i < change.propChanges.length; i++) { - var prop = change.propChanges[i]; - if (prop.subType == "setProp") { - propList[prop.propName] = prop; - } - } - } - return { - next: function() { - if (index >= style.length) $break(); - return propList[style[index++]]; - } - } - } - }) -}; - -}}).apply(FireDiff.domplate); -}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/events.js b/branches/firebug1.5/content/firediff/content/firediff-original/events.js deleted file mode 100644 index aa376c20..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/events.js +++ /dev/null @@ -1,392 +0,0 @@ -/* See license.txt for terms of usage */ -FireDiff = FireDiff || {}; - -FBL.ns(function() { with (FBL) { - -var i18n = document.getElementById("strings_firediff"); - -var Events = FireDiff.events, - Path = FireDiff.Path, - Reps = FireDiff.reps, - CSSModel = FireDiff.CSSModel; - -const CHANGES = "firebug-firediff-changes"; -const ATTR_CHANGES = "firebug-firediff-attrChanges"; -const REMOVE_CHANGES = "firebug-firediff-removeChanges"; - -var ChangeSource = { - APP_CHANGE: "APP_CHANGE", - FIREBUG_CHANGE: "FIREBUG_CHANGE" -}; - -function ChangeEvent(changeSource) { - this.date = new Date(); - this.changeSource = changeSource || ChangeSource.APP_CHANGE; -} -ChangeEvent.prototype = { - getChangeType: function() { return this.changeType; }, - getSummary: function() {}, - merge: function(candidate, simplifyOnly) {}, - - /** - * Determines if a candidate change needs to be reverted or - * restored in order to revert or restore this change. The implementation - * should assume that the reverted field has already been set to the correct - * value for this event when called. - */ - mergeRevert: function(candidate) {}, - - /** - * Determines if a candidate change cancels the effects of this change. - */ - isCancellation: function(candidate) {}, - - /** - * Determines if this change affects the cancellation of another change. - * - * I.e. this change must be reverted to revert the candidate change. - */ - affectsCancellation: function(candidate) {}, - - /** - * Determines if this change negates any effect of a prior change. - */ - overridesChange: function(prior) {}, - cloneOnXPath: function(xpath) {}, - appliesTo: function(target, cachedXpath) { - // Any change that is made to the target or a child - return target && Path.isChildOrSelf(cachedXpath || this.getXpath(target), this.xpath); - }, - - /** - * Determines if a given change is in the same file as this change. - * The definition of file is up to the implementation, but may mean CSS - * style sheet, DOM document, etc. - */ - sameFile: function(otherChange) {}, - getSnapshot: function(context) {}, - getBaseSnapshot: function(context) {}, - getDocumentName: function(context) {}, - - apply: function() {}, - revert: function() {}, - - getMergedXPath: function(prior) { - var updatedPath; - if (!prior.isElementRemoved() || this.xpath != prior.xpath) { - if (this.isElementAdded()) { - updatedPath = Path.updateForInsert(prior.xpath, this.xpath); - } else if (this.isElementRemoved()) { - updatedPath = Path.updateForRemove(prior.xpath, this.xpath); - } - } - - if (updatedPath && updatedPath != prior.xpath) { - return updatedPath; - } - }, - getRevertXPath: function(prior) { - var updatedPath; - if (this.isElementAdded()) { - updatedPath = Path.updateForRevertRemove(prior.xpath, this.xpath); - } else if (this.isElementRemoved()) { - updatedPath = Path.updateForInsert(prior.xpath, this.xpath); - } - - if (updatedPath && updatedPath != prior.xpath) { - return updatedPath; - } - }, - - getXpath: function(target) {}, - xpathLookup: function(xpath, root) {}, - getActionNode: function(target, xpath) { - try { - xpath = xpath || this.getXpath(target); - if (xpath == this.xpath) { - // Empty string passed to evaluate is bad. - return target; - } - - var components = Path.getRelativeComponents(this.xpath, xpath); - if (!components.right) { - return this.xpathLookup(components.left, target); - } - } catch (err) { - if (FBTrace.DBG_ERRORS) { - FBTrace.sysout("getActionNode Error: " + err, err); - FBTrace.sysout(" - getActionNode: " + this.xpath + " " + xpath, components); - } - throw err; - } - }, - getInsertActionNode: function(target, xpath) { - xpath = xpath || this.getXpath(target); - - var parentPath = Path.getParentPath(this.xpath); - var selfId = Path.getIdentifier(this.xpath); - - var components = Path.getRelativeComponents(parentPath, xpath); - var parentEl; - if (components.left) { - parentEl = this.xpathLookup(components.left, target); - } else { - parentEl = target; - } - - var siblingEl = this.xpathLookup(selfId.tag + "[" + selfId.index + "]", parentEl); - return { - parent: parentEl, - sibling: siblingEl - }; - }, - - isElementAdded: function() { return false; }, - isElementRemoved: function() { return false; }, - - toString: function() { - return "[object ChangeEvent-" + this.changeType + "-" + this.subType + " " + this.xpath + "]"; - } -}; - -// Global API -FireDiff.events = { - ChangeEvent: ChangeEvent, - - ChangeSource: ChangeSource, - AnnotateAttrs: { - CHANGES: CHANGES, - ATTR_CHANGES: ATTR_CHANGES, - REMOVE_CHANGES: REMOVE_CHANGES - }, - - /** - * Simplifies the given change set to a reduced form, optionally updating - * all changes to the current point in time. - * - * simplifyOnly: - * truthy: Do not merge change xpaths. Change sets merged in this mode can be integrated with - * other change sets without xpath corruption. - * falsy: Merge change xpaths. This will update all changes so their xpaths reflect the current - * state of the document. Change sets merged in this mode can not be merged with other - * change sets. - */ - merge: function(changes, simplifyOnly) { - if (!changes.length) { - return changes; - } - - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Merge prior simplifyOnly: " + simplifyOnly, changes); - changes = changes.slice(); - - var ret = []; - for (var i = 0; i < changes.length; i++) { - var changeMerge = mergeChange(changes, changes[i], i, simplifyOnly); - if (changeMerge) { - ret.push(changeMerge); - } - } - - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Merge result", ret); - return ret; - }, - - /** - * Determines the changes necessary to revert a given change. - * - * Returns an array of events that need to be reverted in order to - * restore the associated object to the state prior to the given change. - * These events are defined in reverse order, with change n being dependent - * upon change n+1. These events will be merged where possible. - * - * The changes array will be modified to remove the reverted events as well - * as update the xpath of the remaining events to reflect the state of the - * system after the reverts occur. - */ - mergeRevert: function(change, changes) { - var changeIndex = getChangeIndex(changes, change); - - // Merge all relevant changes into this change. - var reverts = []; - change = revertChange(changes, change, changeIndex, reverts); - - if (change) { - reverts.splice(0, 0, change); - } - - changes[changeIndex] = undefined; - for (var i = changes.length; i > 0; i--) { - if (!changes[i-1]) { - changes.splice(i-1, 1); - } - } - - reverts.sort(function(a, b) { return b.xpath.localeCompare(a.xpath); }); - return reverts; - } -}; - -function mergeChange(changes, change, changeIndex, simplifyOnly) { - if (!change) { - return; - } - - for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) { - var candidate = changes[outerIter], - mergeValue; - if (!candidate || candidate.changeType != change.changeType) { - continue; - } - - if (change.isCancellation(candidate)) { - mergeValue = []; - } else if (candidate.overridesChange(change)) { - mergeValue = [undefined, candidate]; - } else { - mergeValue = change.merge(changes[outerIter], simplifyOnly); - } - if (!mergeValue) { - continue; - } - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Merge change " + changeIndex + " " + outerIter, mergeValue); - - if (mergeValue.length == 0 && !mergeValue[0]) { - // Cancellation special case: - updateXPathFromCancellation(changes, change, changeIndex, outerIter); - } - - change = mergeValue[0]; - changes[outerIter] = mergeValue[1]; - } - - return change; -} - -function revertChange(changes, change, changeIndex, parentDeletes) { - if (!change) { - return; - } - - for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) { - var candidate = changes[outerIter], - mergeValue = undefined, - updateXPath; - - if (change.isCancellation(candidate)) { - mergeValue = []; - } else if (candidate.isElementRemoved() - && (Path.isChild(candidate.xpath, change.xpath) - || (!change.isElementRemoved() && change.xpath == candidate.xpath))) { - changes[outerIter] = undefined; - parentDeletes.push(candidate); - } else if (Path.isChildOrSelf(change.xpath, candidate.xpath)) { - mergeValue = change.mergeRevert(candidate); - } - - if (mergeValue) { - if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Merge revert change " + changeIndex + " " + outerIter, mergeValue); - changes[outerIter] = mergeValue[1]; - - if (!mergeValue[0]) { - // Cancellation special case: - updateXPathFromCancellation(changes, change, changeIndex, outerIter); - - changeIndex = processRevertCancel(changes, candidate, outerIter, parentDeletes); - if (changeIndex) { - outerIter = changeIndex; - change = changes[changeIndex]; - changes[changeIndex] = undefined; - continue; - } else { - return; - } - } - - change = mergeValue[0]; - } else { - // We are only merging a particular change and do not need to do a full - // merge outside of this path, but we do need to make sure that xpaths - // are up to date - // Check to see if we update the candidate - updatedXPath = change.getRevertXPath(candidate); - - // Check to see if the candidate updates us - if (!updatedXPath) { - updatedXPath = candidate.getMergedXPath(change); - if (updatedXPath) { - change = change.cloneOnXPath(updatedXPath); - changes[changeIndex] = change; - } - } - } - } - - for (outerIter = changeIndex + 1; outerIter < changes.length; outerIter++) { - candidate = changes[outerIter]; - if (!candidate) { - continue; - } - updatedXPath = change.getRevertXPath(candidate); - if (updatedXPath) { - changes[outerIter] = candidate.cloneOnXPath(updatedXPath); - } - } - - return change; -} - -/** - * Lookup the next change that we may have to revert to fully revert the - * element in question to the previous state. - */ -function processRevertCancel(changes, change, curIndex, parentDeletes) { - for (; curIndex < changes.length; curIndex++) { - var candidate = changes[curIndex]; - if (!candidate) { - continue; - } - - // Check for the applies to case - if (change.affectsCancellation(candidate)) { - return curIndex; - } - - // Check for the parent delete case - if (candidate.isElementRemoved() - && Path.isChild(candidate.xpath, change.xpath)) { - changes[curIndex] = undefined; - parentDeletes.push(candidate); - } - - // Update xpaths as necessary - var updatedXPath = candidate.getMergedXPath(change); - if (updatedXPath) { - change = change.cloneOnXPath(updatedXPath); - } - } -}; - -function updateXPathFromCancellation(changes, change, changeIndex, outerIter) { - // Update any changes that happened between the current change and the - // cancellation change so their xpath acts as though these changes - // never existed - for (var cancelIter = changeIndex + 1; cancelIter < outerIter; cancelIter++) { - if (changes[cancelIter]) { - var updatedXPath = change.getRevertXPath(changes[cancelIter]); - if (updatedXPath) { - changes[cancelIter] = changes[cancelIter].cloneOnXPath(updatedXPath); - } - } - } -} -function getChangeIndex(changes, change) { - if (!change) { - return 0; - } - for (var i = 0; i < changes.length && changes[i] != change; i++) { - /* NOP */ - } - return i; -} - -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/firediff/content/firediff-original/firediff.xul b/branches/firebug1.5/content/firediff/content/firediff-original/firediff.xul deleted file mode 100644 index d7690835..00000000 --- a/branches/firebug1.5/content/firediff/content/firediff-original/firediff.xul +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - %firebugDTD; - - %firediffDTD; -]> - - - - - - - - - - - -
                                - -

                                I'll tell you a secret ...

                                -
                                - - diff --git a/branches/firebug1.5/content/firerainbow/support/screenshot.png b/branches/firebug1.5/content/firerainbow/support/screenshot.png deleted file mode 100644 index 79dfa375..00000000 Binary files a/branches/firebug1.5/content/firerainbow/support/screenshot.png and /dev/null differ diff --git a/branches/firebug1.5/content/firerainbow/themes/active4d.css b/branches/firebug1.5/content/firerainbow/themes/active4d.css deleted file mode 100644 index 802bd174..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/active4d.css +++ /dev/null @@ -1,50 +0,0 @@ -/* Active4D, converted from TextMate theme (Active4D.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #FFFFFF; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #BAD6FD; -} - -.js-string { - color: #666666; -} - -.js-atom { - color: #A8017E; -} - -.js-variable { - color: #A535AE; -} - -.js-variable { - font-weight: bold; - color: #0053FF; -} - -.js-keyword { - font-weight: bold; - color: #006699; -} - -.xml-tagname { - color: #7A7A7A; -} - -.xml-tagname { - color: #016CFF; -} - -.xml-attname { - color: #963DFF; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/all_hallows_eve.css b/branches/firebug1.5/content/firerainbow/themes/all_hallows_eve.css deleted file mode 100644 index 41374242..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/all_hallows_eve.css +++ /dev/null @@ -1,36 +0,0 @@ -/* All Hallows Eve by David Heinemeier Hansson, converted from TextMate theme (All Hallows Eve.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #000000; - font-family: Monaco, Courier New; - color: #FFFFFF; -} - -.sourceRow.hovered { - background-color: #333300; -} - -.sourceRow[exeLine="true"] { - background-color: #73597E; -} - -.js-comment, .xml-comment, .css-comment { - color: #9933CC; -} - -.js-atom { - color: #3387CC; -} - -.js-keyword { - color: #CC7833; -} - -.js-string { - color: #66CC33; -} - -.js-regexp { - color: #CCCC33; -} \ No newline at end of file diff --git a/branches/firebug1.5/content/firerainbow/themes/amy.css b/branches/firebug1.5/content/firerainbow/themes/amy.css deleted file mode 100644 index 0083ee16..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/amy.css +++ /dev/null @@ -1,46 +0,0 @@ -/* Amy by William D. Neumann, converted from TextMate theme (Amy.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #200020; - font-family: Monaco, Courier New; - color: #D0D0FF; -} - -.sourceRow.hovered { - background-color: #800000; -} - -.sourceRow[exeLine="true"] { - background-color: #800000; -} - -.js-string { - color: #999999; -} - -.js-variable { - color: #707090; -} - -.js-atom { - color: #7090B0; -} - -.js-variabledef { - color: #008080; -} - -.js-keyword { - color: #A080FF; -} - -.xml-tagname { - color: #009090; -} - -.panelNode-script { - font-size: 11px; - background-color: #200020; - font-family: Monaco, Courier New; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/blackboard.css b/branches/firebug1.5/content/firerainbow/themes/blackboard.css deleted file mode 100644 index 0ae20cd9..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/blackboard.css +++ /dev/null @@ -1,36 +0,0 @@ -/* Blackboard by Domenico Carbotta, converted from TextMate theme (Blackboard.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #0C1021; - font-family: Monaco, Courier New; - color: #F8F8F8; -} - -.sourceRow.hovered { - background-color: #FFFFFF; -} - -.sourceRow[exeLine="true"] { - background-color: #253B76; -} - -.js-comment, .xml-comment, .css-comment { - color: #AEAEAE; -} - -.js-atom { - color: #D8FA3C; -} - -.js-keyword { - color: #FBDE2D; -} - -.js-string { - color: #61CE3C; -} - -.xml-tagname { - color: #7F90AA; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/brilliance_black.css b/branches/firebug1.5/content/firerainbow/themes/brilliance_black.css deleted file mode 100644 index a58f9d2c..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/brilliance_black.css +++ /dev/null @@ -1,70 +0,0 @@ -/* Brilliance Black by Thomas Aylott, converted from TextMate theme (Brilliance Black.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #0D0D0D; - font-family: Monaco, Courier New; - color: #EEEEEE; -} - -.sourceRow.hovered { - background-color: #000080; -} - -.sourceRow[exeLine="true"] { - background-color: #0010B4; -} - -.js-regexp { - background-color: #438000; - color: #FFF800; -} - -.js-atom { - color: #C6FF00; -} - -.js-variable { - color: #07FF00; -} - -.js-variabledef { - color: #31A6FF; -} - -.xml-tagname { - color: #333333; -} - -.xml-tagname { - color: #FFFFFF; -} - -.xml-attname { - color: #FFFFFF; -} - -.xml-attname { - color: #4F00FF; -} - -.xml-attname { - color: #7900FF; -} - -.xml-attname { - color: #F800FF; -} - -.xml-attname { - color: #FF0086; -} - -.xml-attname { - font-weight: bold; - color: #FF7900; -} - -.xml-attname { - color: #C25A00; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/brilliance_dull.css b/branches/firebug1.5/content/firerainbow/themes/brilliance_dull.css deleted file mode 100644 index e7a6f094..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/brilliance_dull.css +++ /dev/null @@ -1,79 +0,0 @@ -/* Brilliance Dull by Thomas Aylott, converted from TextMate theme (Brilliance Dull.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #050505; - font-family: Monaco, Courier New; - color: #CDCDCD; -} - -.sourceRow.hovered { - background-color: #000080; -} - -.sourceRow[exeLine="true"] { - background-color: #2E2EE6; -} - -.js-regexp { - background-color: #438000; - color: #A6A458; -} - -.js-atom { - color: #95A658; -} - -.js-variable { - color: #59A559; -} - -.js-variabledef { - color: #5E6B6B; -} - -.js-variabledef { - color: #5780A6; -} - -.js-keyword { - color: #A459A5; -} - -.xml-tagname { - color: #333333; -} - -.xml-attname { - background-color: #800004; - color: #A7595A; -} - -.xml-tagname { - color: #FFFFFF; -} - -.xml-attname { - color: #FFFFFF; -} - -.xml-attname { - color: #7C58A5; -} - -.xml-attname { - color: #A459A5; -} - -.xml-attname { - color: #A75980; -} - -.xml-attname { - font-weight: bold; - color: #A77D58; -} - -.js-comment, .xml-comment, .css-comment { - color: #333333; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/cobalt.css b/branches/firebug1.5/content/firerainbow/themes/cobalt.css deleted file mode 100644 index 8fc604d0..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/cobalt.css +++ /dev/null @@ -1,68 +0,0 @@ -/* Cobalt by Jacob Rus, converted from TextMate theme (Cobalt.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #002240; - font-family: Monaco, Courier New; - color: #FFFFFF; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #B36539; -} - -.js-atom { - color: #FF628C; -} - -.js-keyword { - color: #FF9D00; -} - -.js-comment, .xml-comment, .css-comment { - color: #0088FF; -} - -.js-variable { - color: #CCCCCC; -} - -.js-variabledef { - color: #FF80E1; -} - -.js-regexp { - color: #80FFC2; -} - -.xml-tagname { - color: #9EFFFF; -} - -.css-identifier { - color: #9EFFFF; -} - -.xml-attname { - color: #FFB454; -} - -.xml-attname { - color: #5FE461; -} - -.css-colorcode { - color: #9DF39F; -} - -.css-value { - color: #F6F080; -} - -.css-at { - color: #F6AA11; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/codemirror.css b/branches/firebug1.5/content/firerainbow/themes/codemirror.css deleted file mode 100644 index 0e056d94..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/codemirror.css +++ /dev/null @@ -1,29 +0,0 @@ -.panelNode-script { - font-family: Courier New; - font-size: 9pt; - overflow: hidden; -} -.js-keyword { - color: #770088; -} -.js-atom { - color: #228811; -} -.js-variable { - color: black; -} -.js-variabledef { - color: #0000FF; -} -.js-localvariable { - color: #004499; -} -.js-property { - color: black; -} -.js-comment { - color: #AA7700; -} -.js-string { - color: #AA2222; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/cowtown.css b/branches/firebug1.5/content/firerainbow/themes/cowtown.css deleted file mode 100644 index b51f9ee2..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/cowtown.css +++ /dev/null @@ -1,44 +0,0 @@ -/* cowtown by psylux */ -.panelNode-script { - background:#3F2B18 none repeat scroll 0 0; - color:#7C4B00; - font-family:consolas,Monospaced,Courier New; - font-size:12px; - overflow:hidden; -} -.js-keyword { - color:#FF9D00; -} -.js-atom { - color:#FFFF33; -} -.js-variable { - color:#B0B9F2; -} -.js-variabledef { - color:#FFFFFF; -} -.js-localvariable { - color:#DDD87B; -} -.js-property { - color:#44FFFF; -} -.js-comment { - color:#9A4690; -} -.js-string { - color:#7EDC0F; -} -.js-regexp { - color:#FFA1AC; -} -.js-punctuation { - color:#E1EFFF; -} -.js-operator { - color:#FF6633; -} -.js-whitespace { - color:#EEFFEE; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/dawn.css b/branches/firebug1.5/content/firerainbow/themes/dawn.css deleted file mode 100644 index b697721b..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/dawn.css +++ /dev/null @@ -1,37 +0,0 @@ -/* Dawn by David Powers, converted from TextMate theme (Dawn.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #F9F9F9; - font-family: Monaco, Courier New; - color: #080808; -} - -.sourceRow.hovered { - background-color: #2463B4; -} - -.sourceRow[exeLine="true"] { - background-color: #275FFF; -} - -.js-comment, .xml-comment, .css-comment { - color: #5A525F; -} - -.js-atom { - font-weight: bold; - color: #811F24; -} - -.js-keyword { - color: #794938; -} - -.js-variable { - color: #234A97; -} - -.js-regexp { - color: #CF5628; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/eclipse.css b/branches/firebug1.5/content/firerainbow/themes/eclipse.css deleted file mode 100644 index 8875ac07..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/eclipse.css +++ /dev/null @@ -1,29 +0,0 @@ -.panelNode-script { - font-family: Courier New; - font-size: 9pt; - overflow: hidden; -} -.js-keyword { - color: #7F0055; -} -.js-atom { - color: #7F0055; -} -.js-variable { - color: black; -} -.js-variabledef { - color: black; -} -.js-localvariable { - color: black; -} -.js-property { - color: black; -} -.js-comment { - color: #3F5FBF; -} -.js-string { - color: #8E00FF; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/eiffel.css b/branches/firebug1.5/content/firerainbow/themes/eiffel.css deleted file mode 100644 index f37a8e18..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/eiffel.css +++ /dev/null @@ -1,57 +0,0 @@ -/* Eiffel by Ian Joyner, converted from TextMate theme (Eiffel.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #FFFFFF; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #C3DCFF; -} - -.js-comment, .xml-comment, .css-comment { - color: #00B418; -} - -.js-variable { - color: #0206FF; -} - -.js-keyword { - font-weight: bold; - color: #0100B6; -} - -.js-atom { - color: #CD0000; -} - -.js-atom { - color: #C5060B; -} - -.js-variable { - color: #585CF6; -} - -.js-string { - color: #D80800; -} - -.js-operator { - color: #687687; -} - -.xml-tagname { - color: #1C02FF; -} - -.xml-tagname { - font-weight: bold; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/espresso_libre.css b/branches/firebug1.5/content/firerainbow/themes/espresso_libre.css deleted file mode 100644 index f707231d..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/espresso_libre.css +++ /dev/null @@ -1,67 +0,0 @@ -/* Espresso Libre by Chris Thomas, converted from TextMate theme (Espresso Libre.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #2A211C; - font-family: Monaco, Courier New; - color: #BDAE9D; -} - -.sourceRow.hovered { - background-color: #3A312C; -} - -.sourceRow[exeLine="true"] { - background-color: #C3DCFF; -} - -.js-comment, .xml-comment, .css-comment { - color: #0066FF; -} - -.js-keyword { - font-weight: bold; - color: #43A8ED; -} - -.js-atom { - color: #44AA43; -} - -.js-atom { - font-weight: bold; - color: #C5656B; -} - -.js-variable { - font-weight: bold; - color: #585CF6; -} - -.js-variabledef { - color: #318495; -} - -.js-string { - color: #049B0A; -} - -.js-operator { - color: #687687; -} - -.xml-processing { - color: #8F7E65; -} - -.xml-processing { - color: #888888; -} - -.xml-tagname { - color: #43A8ED; -} - -.xml-tagname { - font-weight: bold; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/idle.css b/branches/firebug1.5/content/firerainbow/themes/idle.css deleted file mode 100644 index 65bf3101..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/idle.css +++ /dev/null @@ -1,32 +0,0 @@ -/* IDLE by Domenico Carbotta, converted from TextMate theme (IDLE.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #FFFFFF; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #BAD6FD; -} - -.js-comment, .xml-comment, .css-comment { - color: #919191; -} - -.js-string { - color: #00A33F; -} - -.js-variable { - color: #A535AE; -} - -.js-keyword { - color: #FF5600; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/iplastic.css b/branches/firebug1.5/content/firerainbow/themes/iplastic.css deleted file mode 100644 index 8044b5a8..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/iplastic.css +++ /dev/null @@ -1,60 +0,0 @@ -/* iPlastic by Jeroen van der Ham, converted from TextMate theme (iPlastic.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #EEEEEE; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #BAD6FD; -} - -.js-string { - color: #009933; -} - -.js-atom { - color: #0066FF; -} - -.js-regexp { - color: #FF0080; -} - -.js-keyword { - color: #0000FF; -} - -.js-variable { - color: #9700CC; -} - -.js-comment, .xml-comment, .css-comment { - color: #0066FF; -} - -.xml-tagname { - color: #0033CC; -} - -.js-atom { - color: #6782D3; -} - -.xml-processing { - color: #333333; -} - -.xml-attname { - color: #3366CC; -} - -.xml-tagname { - font-weight: bold; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/ir_black.css b/branches/firebug1.5/content/firerainbow/themes/ir_black.css deleted file mode 100644 index 0dcb6c07..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/ir_black.css +++ /dev/null @@ -1,91 +0,0 @@ -/* IR_Black, converted from TextMate theme (IR_Black.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #141414; - font-family: Monaco, Courier New; - color: #EDEDED; -} - -.sourceRow.hovered { - background-color: #FFFFFF; -} - -.sourceRow[exeLine="true"] { - background-color: #333333; -} - -.js-comment, .xml-comment, .css-comment { - color: #7C7C7C; -} - -.js-keyword { - color: #96CBFE; -} - -.js-atom { - color: #99CC99; -} - -.js-string { - font-weight: bold; - color: #A8FF60; -} - -.js-atom { - font-weight: bold; - color: #FF73FD; -} - -.js-variable { - color: #C6C5FE; -} - -.js-regexp { - color: #E9C062; -} - -.xml-tagname { - font-weight: bold; - color: #96CBFE; -} - -.xml-attname { - color: #96CBFE; -} - -.xml-attname { - color: #FFD7B1; -} - -.xml-attname { - color: #E18964; -} - -.css-identifier { - color: #96CBFE; -} - -.xml-attname { - color: #8F9D6A; -} - -.xml-attname { - color: #8B98AB; -} - -.xml-attname { - color: #62B1FE; -} - -.css-colorcode { - color: #EDEDED; -} - -.css-value { - color: #F9EE98; -} - -.css-at { - color: #8693A5; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/lazy.css b/branches/firebug1.5/content/firerainbow/themes/lazy.css deleted file mode 100644 index 3e3effff..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/lazy.css +++ /dev/null @@ -1,36 +0,0 @@ -/* LAZY by Domenico Carbotta, converted from TextMate theme (LAZY.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #FFFFFF; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #EFFCA6; -} - -.sourceRow[exeLine="true"] { - background-color: #E3FC8D; -} - -.js-comment, .xml-comment, .css-comment { - color: #8C868F; -} - -.js-atom { - color: #3B5BB5; -} - -.js-keyword { - color: #FF7800; -} - -.js-string { - color: #409B1C; -} - -.xml-tagname { - color: #3A4A64; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/mac_classic.css b/branches/firebug1.5/content/firerainbow/themes/mac_classic.css deleted file mode 100644 index 2ec2eb59..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/mac_classic.css +++ /dev/null @@ -1,68 +0,0 @@ -/* Mac Classic by Chris Thomas, converted from TextMate theme (Mac Classic.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #FFFFFF; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #4D97FF; -} - -.js-comment, .xml-comment, .css-comment { - color: #808080; -} - -.js-keyword { - color: #0000FF; -} - -.js-atom { - color: #0000CD; -} - -.js-atom { - color: #C5060B; -} - -.js-variable { - color: #585CF6; -} - -.js-variabledef { - color: #318495; -} - -.js-string { - color: #036A07; -} - -.js-operator { - color: #687687; -} - -.xml-processing { - color: #68685B; -} - -.xml-processing { - color: #888888; -} - -.xml-tagname { - color: #0000FF; -} - -.xml-tagname { - color: #0000FF; -} - -.xml-attname { - color: #9C0202; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/magicwb_amiga.css b/branches/firebug1.5/content/firerainbow/themes/magicwb_amiga.css deleted file mode 100644 index 430f8311..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/magicwb_amiga.css +++ /dev/null @@ -1,46 +0,0 @@ -/* MagicWB (Amiga) by Allan Odgaard, converted from TextMate theme (MagicWB (Amiga).tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #969696; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #B1B1B1; -} - -.js-comment, .xml-comment, .css-comment { - color: #8D2E75; -} - -.js-string { - background-color: #FF0000; - color: #FFFFFF; -} - -.js-atom { - color: #FFFFFF; -} - -.js-variable { - font-weight: bold; - color: #FFA995; -} - -.js-variabledef { - color: #FFA995; -} - -.js-keyword { - font-weight: bold; -} - -.xml-attname { - color: #3A68A3; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/pastels_on_dark.css b/branches/firebug1.5/content/firerainbow/themes/pastels_on_dark.css deleted file mode 100644 index 5a6c62c6..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/pastels_on_dark.css +++ /dev/null @@ -1,96 +0,0 @@ -/* Pastels on Dark by Mats Persson, converted from TextMate theme (Pastels on Dark.tmTheme) */ - -/* -CHANGELOG - -1) 2010-06-18 cbalz Fixed issue where stopped line on breakpoint has background color that makes text almost invisible. - -*/ - -.panelNode-script { - font-size: 11px; - background-color: #211E1E; - font-family: Monaco, Courier New; - color: #DADADA; -} - -.sourceRow.hovered { - background-color: #353030; -} - -.sourceRow[exeLine="true"] { - background-color: #73597E; -} - -.js-comment, .xml-comment, .css-comment { - color: #555555; -} - -.js-string { - color: #AD9361; -} - -.js-atom { - color: #CCCCCC; -} - -.js-keyword { - color: #A1A1FF; -} - -.js-regexp { - color: #666666; -} - -.js-variable { - color: #C1C144; -} - -.js-atom { - color: #6782D3; -} - -.js-variable { - font-weight: bold; - color: #DE8E30; -} - -.xml-attname { - color: #9B456F; -} - -.xml-processing { - color: #68685B; -} - -.xml-processing { - color: #888888; -} - -.xml-attname { - color: #9B456F; -} - -.xml-attname { - color: #EC9E00; -} - -.xml-attname { - color: #EDCA06; -} - -.xml-attname { - color: #2E759C; -} - -.css-value { - color: #9B2E4D; -} - -.css-colorcode { - color: #E1C96B; -} - -.sourceRow[exe_line="true"] { - outline: 1px solid #D9D9B6; margin-right: 1px; background-color: purple; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/rainbow.css b/branches/firebug1.5/content/firerainbow/themes/rainbow.css deleted file mode 100644 index 78067714..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/rainbow.css +++ /dev/null @@ -1,116 +0,0 @@ -.panelNode-script { - background-color: #FFFFFF; - color: black; - font-family: Monaco,Monospace,Courier New !important; - font-size: 11px; -} -.sourceRow.hovered { - background-color: #EEEEEE; -} -.sourceLine { - background: #EEEEEE none no-repeat scroll 2px 0; - border-bottom: 1px solid #EEEEEE; - border-right: 1px solid #CCCCCC; - color: #888888; -} -.sourceLine:hover { - text-decoration: none; -} -.scriptTooltip { - background: LightYellow none repeat scroll 0 0; - border: 1px solid #CBE087; - color: #000000; -} -.sourceRow[exeline="true"] { - background-color: lightgoldenrodyellow; - outline-color: #D9D9B6; - outline-style: solid; - outline-width: 1px; -} -.xml-text { - color: black; -} -.whitespace { - color: black; -} -.xml-punctuation { - color: gray; -} -.xml-tagname { - color: blue; -} -.xml-attname { - color: darkred; -} -.xml-attribute { - color: darkgreen; -} -.css-at { - color: darkred; -} -.css-string { - color: red; -} -.css-punctuation { - color: midnightblue; -} -.js-keyword { - color: blue; -} -.js-variable { - color: black; -} -.js-operator { - color: black; -} -.js-punctuation { - color: darkBlue; -} -.js-variabledef { - color: darkslategray; -} -.js-localvariable { - color: darkslateBlue; -} -.js-property { - color: teal; -} -.js-string { - color: darkgreen; -} -.js-atom { - color: saddleBrown; -} -.xml-comment { - color: gray; -} -.css-identifier { - color: midnightBlue; -} -.css-select-op { - color: cadetblue; -} -.css-unit { - color: orangered; -} -.css-value { - color: black; -} -.css-colorcode { - color: magenta; -} -.js-comment { - color: gray; -} -.js-regexp { - color: magenta; -} -.xml-entity { - color: darkgoldenrod; -} -.xml-error { - color: orangered; -} -.css-comment { - color: gray; -} \ No newline at end of file diff --git a/branches/firebug1.5/content/firerainbow/themes/slush_poppies.css b/branches/firebug1.5/content/firerainbow/themes/slush_poppies.css deleted file mode 100644 index 80466d4a..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/slush_poppies.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Slush & Poppies by William D. Neumann, converted from TextMate theme (Slush & Poppies.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #F1F1F1; - font-family: Monaco, Courier New; - color: #000000; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #B0B0FF; -} - -.js-comment, .xml-comment, .css-comment { - color: #406040; -} - -.js-string { - color: #C03030; -} - -.js-atom { - color: #0080A0; -} - -.js-keyword { - color: #2060A0; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/spacecadet.css b/branches/firebug1.5/content/firerainbow/themes/spacecadet.css deleted file mode 100644 index 77109cd6..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/spacecadet.css +++ /dev/null @@ -1,28 +0,0 @@ -/* SpaceCadet by Alex Ross, converted from TextMate theme (SpaceCadet.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #0D0D0D; - font-family: Monaco, Courier New; - color: #DDE6CF; -} - -.sourceRow.hovered { - background-color: #000000; -} - -.sourceRow[exeLine="true"] { - background-color: #40002F; -} - -.js-comment, .xml-comment, .css-comment { - color: #473C45; -} - -.js-string { - color: #805978; -} - -.js-atom { - color: #A8885A; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/sunburst.css b/branches/firebug1.5/content/firerainbow/themes/sunburst.css deleted file mode 100644 index 77fdb5f5..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/sunburst.css +++ /dev/null @@ -1,80 +0,0 @@ -/* Sunburst by Stanley Rost, converted from TextMate theme (Sunburst.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #000000; - font-family: Monaco, Courier New; - color: #F8F8F8; -} - -.sourceRow.hovered { - background-color: #FFFFFF; -} - -.sourceRow[exeLine="true"] { - background-color: #DDF0FF; -} - -.js-comment, .xml-comment, .css-comment { - color: #AEAEAE; -} - -.js-atom { - color: #3387CC; -} - -.js-keyword { - color: #E28964; -} - -.js-string { - color: #65B042; -} - -.js-variable { - color: #3E87E3; -} - -.js-regexp { - color: #E9C062; -} - -.xml-tagname { - color: #89BDFF; -} - -.xml-attname { - color: #E0C589; -} - -.xml-attname { - color: #E18964; -} - -.css-identifier { - color: #CDA869; -} - -.xml-attname { - color: #8F9D6A; -} - -.xml-attname { - color: #8B98AB; -} - -.xml-attname { - color: #9B703F; -} - -.css-colorcode { - color: #C5AF75; -} - -.css-value { - color: #F9EE98; -} - -.css-at { - color: #8693A5; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/twilight.css b/branches/firebug1.5/content/firerainbow/themes/twilight.css deleted file mode 100644 index 4f7e3a29..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/twilight.css +++ /dev/null @@ -1,80 +0,0 @@ -/* Twilight by Michael Sheets, converted from TextMate theme (Twilight.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #141414; - font-family: Monaco, Courier New; - color: #F8F8F8; -} - -.sourceRow.hovered { - background-color: #FFFFFF; -} - -.sourceRow[exeLine="true"] { - background-color: #DDF0FF; -} - -.js-comment, .xml-comment, .css-comment { - color: #5F5A60; -} - -.js-atom { - color: #CF6A4C; -} - -.js-keyword { - color: #CDA869; -} - -.js-string { - color: #8F9D6A; -} - -.js-variable { - color: #7587A6; -} - -.js-regexp { - color: #E9C062; -} - -.xml-processing { - color: #494949; -} - -.xml-tagname { - color: #AC885B; -} - -.xml-attname { - color: #E0C589; -} - -.css-identifier { - color: #CDA869; -} - -.xml-attname { - color: #8F9D6A; -} - -.xml-attname { - color: #8B98AB; -} - -.xml-attname { - color: #9B703F; -} - -.css-colorcode { - color: #C5AF75; -} - -.css-value { - color: #F9EE98; -} - -.css-at { - color: #8693A5; -} diff --git a/branches/firebug1.5/content/firerainbow/themes/zenburnesque.css b/branches/firebug1.5/content/firerainbow/themes/zenburnesque.css deleted file mode 100644 index ac566e8e..00000000 --- a/branches/firebug1.5/content/firerainbow/themes/zenburnesque.css +++ /dev/null @@ -1,32 +0,0 @@ -/* Zenburnesque by William D. Neumann, converted from TextMate theme (Zenburnesque.tmTheme) */ - -.panelNode-script { - font-size: 11px; - background-color: #404040; - font-family: Monaco, Courier New; - color: #DEDEDE; -} - -.sourceRow.hovered { - background-color: #A08040; -} - -.sourceRow[exeLine="true"] { - background-color: #A0A0C0; -} - -.js-comment, .xml-comment, .css-comment { - color: #709070; -} - -.js-string { - color: #FF2020; -} - -.js-atom { - color: #22C0FF; -} - -.js-keyword { - color: #FFFFA0; -} diff --git a/branches/firebug1.5/content/firerainbow/utils/Rakefile b/branches/firebug1.5/content/firerainbow/utils/Rakefile deleted file mode 100644 index 19719667..00000000 --- a/branches/firebug1.5/content/firerainbow/utils/Rakefile +++ /dev/null @@ -1,222 +0,0 @@ -begin - require 'Plist' -rescue LoadError - raise 'You must "gem install plist" to get plist parser' -end - -ROOT = File.expand_path('..') -SRC = ROOT -DST = File.join(ROOT, 'build') -DST_THEMES = File.join(DST, 'themes') -TMP = File.join(ROOT, 'tmp') - -THEMES_DIR = File.expand_path("~/Library/Application\\ Support/TextMate/Themes") - -# http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/ -begin - require 'Win32/Console/ANSI' if PLATFORM =~ /win32/ -rescue LoadError - raise 'You must "gem install win32console" to use terminal colors on Windows' -end - -def colorize(text, color_code) - "#{color_code}#{text}\e[0m" -end - -def red(text); colorize(text, "\e[31m"); end -def green(text); colorize(text, "\e[32m"); end -def yellow(text); colorize(text, "\e[33m"); end -def blue(text); colorize(text, "\e[34m"); end -def magenta(text); colorize(text, "\e[35m"); end -def azure(text); colorize(text, "\e[36m"); end -def white(text); colorize(text, "\e[37m"); end -def black(text); colorize(text, "\e[30m"); end - -def file_color(text); yellow(text); end -def dir_color(text); blue(text); end -def cmd_color(text); azure(text); end - -def detect_selector_from_scope(scope) - return ".panelNode-script" unless scope - parts = scope.split(',') - parts.each do |part| - case part - when "comment" - return ".js-comment, .xml-comment, .css-comment" - when "keyword" - return ".js-keyword" - when "variable", "constant.language" - return ".js-variable" - when "variable.language", "variable.other" - return ".js-variabledef" - when "string", "css.string" - return ".js-string" - when "string.regexp" - return ".js-regexp" - when "constant", "constant.numeric" - return ".js-atom" - when "keyword.operator.js" - return ".js-operator" - when "string.quoted.docinfo.doctype.DTD", "meta.tag.preprocessor.xml", "meta.tag.sgml.doctype", "meta.tag.sgml.doctype entity", "meta.tag.sgml.doctype string", "meta.tag.preprocessor.xml", "meta.tag.preprocessor.xml entity", "meta.tag.preprocessor.xml string" - return ".xml-processing" - when "entity.name.tag", "meta.tag", "declaration.tag" - return ".xml-tagname" - when /attribute-name/ - return ".xml-attname" - when "???" - return ".xml-text" - when "???" - return ".xml-entity" - when "???" - return ".xml-cdata" - when /property-value.css/ - return ".css-value" - when "meta.selector.css entity.name.tag" - return ".css-identifier" - when /property-name.css/ - return ".css-colorcode" - when "???" - return ".css-string" - when "???" - return ".css-unit" - when "???" - return ".css-important" - when "???" - return ".css-select-op" - when "???" - return ".css-punctuation" - when "???" - return ".css-compare" - when /at-rule/ - return ".css-at" - end - end - - nil -end - -def color(val) - return "???" unless val =~ /#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/ - "\##{$1}" -end - -def font_style(val) - return nil unless val=="italic" - "italic" -end - -def font_weight(val) - return nil unless val=="bold" - "bold" -end - -KNOWN_ATTRIBUTES = { - "foreground" => ["color", method(:color)], - "background" => ["background-color", method(:color)], - "fontStyle" => ["font-style", method(:font_style)], - "fontStyle" => ["font-weight", method(:font_weight)], -} - -def gen_rule(dict) - scope = dict["scope"] - selector = detect_selector_from_scope(scope) - return "" unless selector - settings = dict["settings"] - return "" unless settings - - rule = {} - KNOWN_ATTRIBUTES.each do |attr, spec| - next unless settings[attr] - spec = [spec] unless spec.is_a?(Array) - - val = settings[attr] - val = spec[1].call(val) if spec[1] - rule[spec[0]] = val if val - end - - return "" unless rule.keys.size>0 - - if (selector==".panelNode-script") then - rule["font-family"] = "Monaco, Courier New" - rule["font-size"] = "11px" - - additional = "" - highlight = color(settings["lineHighlight"]) if settings["lineHighlight"] - additional += ".sourceRow.hovered { background-color: #{highlight}; }\n\n" if highlight - selection = color(settings["selection"]) if settings["selection"] - additional += ".sourceRow[exeLine=\"true\"] { background-color: #{selection}; }\n\n" if selection - end - - res = "#{selector} {\n" - rule.each do |key, value| - res += " #{key}: #{value};\n" - end - res += "}\n\n" - - res += additional if additional - res -end - -def gen_css(data, source) - desc = "#{data["name"]}" - desc += " by #{data["author"]}" if data["author"] - desc += ", converted from TextMate theme (#{source})" - - res = "/* #{desc} */\n\n" - - data["settings"].each do |dict| - res += gen_rule(dict) - end - - { - "css" => res, - "name" => data["name"], - "author" => data["author"], - "description" => desc - } -end - -def my_mkdir(dir) - puts "#{cmd_color('creating directory')} #{dir_color(dir)}" - mkdir dir -end - -def process(dir) - files = Dir.glob(File.join(dir, "**", "*.tmTheme")) - files.each do |filename| - basename = File.basename(filename) - puts " Converting #{file_color(basename)}" - data = Plist::parse_xml(filename) - preset = gen_css(data, basename) - preset["basename"] = basename - yield preset - end -end - -task :convert do - my_mkdir(DST_THEMES) unless File.exist?(DST_THEMES) - puts "Scanning #{dir_color(THEMES_DIR)} ..." - process(THEMES_DIR) do |preset| - res = File.join(DST_THEMES, preset["basename"] + ".css") - File.open(res, "w") do |file| - file.write preset["css"] - end - end -end - -task :sql do - puts "Generating sql ..." - - res = "" - process(THEMES_DIR) do |preset| - name = preset["name"].downcase.gsub(/[\(\)&]/, "").gsub(/[ \t]/, "_").gsub(/'/, "''") - title = preset["name"].gsub(/'/, "''") - desc = preset["description"].gsub(/'/, "''") - code = preset["css"].gsub(/\n/, "\\r\\n").gsub(/'/, "''").gsub(/"/, """) - res += "('#{name}', '#{title}', '#{desc}', '#{code}', '2008-06-14 18:19:36', '2008-06-14 18:24:04'),\n" - end - - puts res -end - -task :default => :convert \ No newline at end of file diff --git a/branches/firebug1.5/content/lite/boot.js b/branches/firebug1.5/content/lite/boot.js deleted file mode 100644 index 4a529401..00000000 --- a/branches/firebug1.5/content/lite/boot.js +++ /dev/null @@ -1,3 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.initialize(); diff --git a/branches/firebug1.5/content/lite/browser.js b/branches/firebug1.5/content/lite/browser.js deleted file mode 100644 index e519576b..00000000 --- a/branches/firebug1.5/content/lite/browser.js +++ /dev/null @@ -1,27 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - - -Firebug.Lite.Browser = function(window) -{ - this.contentWindow = window; - this.contentDocument = window.document; - this.currentURI = - { - spec: window.location.href - }; -}; - -Firebug.Lite.Browser.prototype = -{ - toString: function() - { - return "Firebug.Lite.Browser"; - } -}; - - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/lite/cache.js b/branches/firebug1.5/content/lite/cache.js deleted file mode 100644 index 396cf18a..00000000 --- a/branches/firebug1.5/content/lite/cache.js +++ /dev/null @@ -1,112 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Cache = -{ - ID: "firebug" + new Date().getTime() -}; - -// ************************************************************************************************ - -/** - * TODO: if a cached element is cloned, the expando property will be cloned too in IE - * which will result in a bug. Firebug Lite will think the new cloned node is the old - * one. - * - * TODO: Investigate a possibility of cache validation, to be customized by each - * kind of cache. For ElementCache it should validate if the element still is - * inserted at the DOM. - */ -var cacheUID = 0; -var createCache = function() -{ - var map = {}; - var CID = Firebug.Lite.Cache.ID; - - // better detection - var supportsDeleteExpando = !document.all; - - var cacheFunction = function(element) - { - return cacheAPI.set(element); - }; - - var cacheAPI = - { - get: function(key) - { - return map.hasOwnProperty(key) ? - map[key] : - null; - }, - - set: function(element) - { - var id = element[CID]; - - if (!id) - { - id = ++cacheUID; - element[CID] = id; - } - - if (!map.hasOwnProperty(id)) - { - map[id] = element; - } - - return id; - }, - - unset: function(element) - { - var id = element[CID]; - - if (supportsDeleteExpando) - { - delete element[CID]; - } - else if (element.removeAttribute) - { - element.removeAttribute(CID); - } - - delete map[id]; - - }, - - key: function(element) - { - return element[CID]; - }, - - has: function(element) - { - return map.hasOwnProperty(element[CID]); - }, - - clear: function() - { - for (var id in map) - { - var element = map[id]; - cacheAPI.unset(element); - } - } - }; - - FBL.append(cacheFunction, cacheAPI); - - return cacheFunction; -}; - -// ************************************************************************************************ - -// TODO: xxxpedro : check if we need really this on FBL scope -Firebug.Lite.Cache.StyleSheet = createCache(); -Firebug.Lite.Cache.Element = createCache(); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/lite/gui.js b/branches/firebug1.5/content/lite/gui.js deleted file mode 100644 index fb0e4350..00000000 --- a/branches/firebug1.5/content/lite/gui.js +++ /dev/null @@ -1,976 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns( /** @scope ns-gui */ function() { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Controller - -/**@namespace*/ -FBL.Controller = { - - controllers: null, - controllerContext: null, - - initialize: function(context) - { - this.controllers = []; - this.controllerContext = context || Firebug.chrome; - }, - - shutdown: function() - { - this.removeControllers(); - - //this.controllers = null; - //this.controllerContext = null; - }, - - addController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - // If the first argument is a string, make a selector query - // within the controller node context - if (typeof arg[0] == "string") - { - arg[0] = $$(arg[0], this.controllerContext); - } - - // bind the handler to the proper context - var handler = arg[2]; - arg[2] = bind(handler, this); - // save the original handler as an extra-argument, so we can - // look for it later, when removing a particular controller - arg[3] = handler; - - this.controllers.push(arg); - addEvent.apply(this, arg); - } - }, - - removeController: function() - { - for (var i=0, arg; arg=arguments[i]; i++) - { - for (var j=0, c; c=this.controllers[j]; j++) - { - if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3]) - removeEvent.apply(this, c); - } - } - }, - - removeControllers: function() - { - for (var i=0, c; c=this.controllers[i]; i++) - { - removeEvent.apply(this, c); - } - } -}; - - -// ************************************************************************************************ -// PanelBar - -/**@namespace*/ -FBL.PanelBar = -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - panelMap: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - selectedPanel: null, - parentPanelName: null, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - create: function(ownerPanel) - { - this.panelMap = {}; - this.ownerPanel = ownerPanel; - - if (ownerPanel) - { - ownerPanel.sidePanelBarNode = createElement("span"); - ownerPanel.sidePanelBarNode.style.display = "none"; - ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode); - } - - var panels = Firebug.panelTypes; - for (var i=0, p; p=panels[i]; i++) - { - if ( // normal Panel of the Chrome's PanelBar - !ownerPanel && !p.prototype.parentPanel || - // Child Panel of the current Panel's SidePanelBar - ownerPanel && p.prototype.parentPanel && - ownerPanel.name == p.prototype.parentPanel) - { - this.addPanel(p.prototype.name); - } - } - }, - - destroy: function() - { - PanelBar.shutdown.call(this); - - for (var name in this.panelMap) - { - this.removePanel(name); - - var panel = this.panelMap[name]; - panel.destroy(); - - this.panelMap[name] = null; - delete this.panelMap[name]; - } - - this.panelMap = null; - this.ownerPanel = null; - }, - - initialize: function() - { - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "inline"; - - for(var name in this.panelMap) - { - (function(self, name){ - - // tab click handler - var onTabClick = function onTabClick() - { - self.selectPanel(name); - return false; - }; - - Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]); - - })(this, name); - } - }, - - shutdown: function() - { - var selectedPanel = this.selectedPanel; - - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.hide(); - selectedPanel.shutdown(); - } - - if (this.ownerPanel) - this.ownerPanel.sidePanelBarNode.style.display = "none"; - - this.selectedPanel = null; - }, - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - addPanel: function(panelName, parentPanel) - { - var PanelType = Firebug.panelTypeMap[panelName]; - var panel = this.panelMap[panelName] = new PanelType(); - - panel.create(); - }, - - removePanel: function(panelName) - { - var panel = this.panelMap[panelName]; - if (panel.hasOwnProperty(panelName)) - panel.destroy(); - }, - - selectPanel: function(panelName) - { - var selectedPanel = this.selectedPanel; - var panel = this.panelMap[panelName]; - - if (panel && selectedPanel != panel) - { - if (selectedPanel) - { - removeClass(selectedPanel.tabNode, "fbSelectedTab"); - selectedPanel.shutdown(); - selectedPanel.hide(); - } - - if (!panel.parentPanel) - FirebugChrome.selectedPanelName = panelName; - - this.selectedPanel = panel; - - setClass(panel.tabNode, "fbSelectedTab"); - panel.show(); - panel.initialize(); - } - }, - - getPanel: function(panelName) - { - var panel = this.panelMap[panelName]; - - return panel; - } - -}; - -//************************************************************************************************ -// Button - -/** - * options.element - * options.caption - * options.title - * - * options.owner - * options.className - * options.pressedClassName - * - * options.onPress - * options.onUnpress - * options.onClick - * - * @class - * @extends FBL.Controller - * - */ - -FBL.Button = function(options) -{ - options = options || {}; - - append(this, options); - - this.state = "unpressed"; - this.display = "unpressed"; - - if (this.element) - { - this.container = this.element.parentNode; - } - else - { - this.shouldDestroy = true; - - this.container = this.owner.getPanel().toolButtonsNode; - - this.element = createElement("a", { - className: this.baseClassName + " " + this.className + " fbHover", - innerHTML: this.caption - }); - - if (this.title) - this.element.title = this.title; - - this.container.appendChild(this.element); - } -}; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Button.prototype = extend(Controller, -/**@extend FBL.Button.prototype*/ -{ - type: "normal", - caption: "caption", - title: null, - - className: "", // custom class - baseClassName: "fbButton", // control class - pressedClassName: "fbBtnPressed", // control pressed class - - element: null, - container: null, - owner: null, - - state: null, - display: null, - - destroy: function() - { - this.shutdown(); - - // only remove if it is a dynamically generated button (not pre-rendered) - if (this.shouldDestroy) - this.container.removeChild(this.element); - - this.element = null; - this.container = null; - this.owner = null; - }, - - initialize: function() - { - Controller.initialize.apply(this); - - var element = this.element; - - this.addController([element, "mousedown", this.handlePress]); - - if (this.type == "normal") - this.addController( - [element, "mouseup", this.handleUnpress], - [element, "mouseout", this.handleUnpress], - [element, "click", this.handleClick] - ); - }, - - shutdown: function() - { - Controller.shutdown.apply(this); - }, - - restore: function() - { - this.changeState("unpressed"); - }, - - changeState: function(state) - { - this.state = state; - this.changeDisplay(state); - }, - - changeDisplay: function(display) - { - if (display != this.display) - { - if (display == "pressed") - { - setClass(this.element, this.pressedClassName); - } - else if (display == "unpressed") - { - removeClass(this.element, this.pressedClassName); - } - this.display = display; - } - }, - - handlePress: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - this.changeDisplay("pressed"); - this.beforeClick = true; - } - else if (this.type == "toggle") - { - if (this.state == "pressed") - { - this.changeState("unpressed"); - - if (this.onUnpress) - this.onUnpress.apply(this.owner, arguments); - } - else - { - this.changeState("pressed"); - - if (this.onPress) - this.onPress.apply(this.owner, arguments); - } - - if (this.onClick) - this.onClick.apply(this.owner, arguments); - } - - return false; - }, - - handleUnpress: function(event) - { - cancelEvent(event, true); - - if (this.beforeClick) - this.changeDisplay("unpressed"); - - return false; - }, - - handleClick: function(event) - { - cancelEvent(event, true); - - if (this.type == "normal") - { - if (this.onClick) - this.onClick.apply(this.owner); - - this.changeState("unpressed"); - } - - this.beforeClick = false; - - return false; - } -}); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -/** - * @class - * @extends FBL.Button - */ -FBL.IconButton = function() -{ - Button.apply(this, arguments); -}; - -IconButton.prototype = extend(Button.prototype, -/**@extend FBL.IconButton.prototype*/ -{ - baseClassName: "fbIconButton", - pressedClassName: "fbIconPressed" -}); - - -//************************************************************************************************ -// Menu - -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value", - _command: "$item.command"}; - -if (isIE6) - menuItemProps.href = "javascript:void(0)"; - -// Allow GUI to be loaded even when Domplate module is not installed. -if (FBL.domplate) -var MenuPlate = domplate(Firebug.Rep, -{ - tag: - DIV({"class": "fbMenu fbShadow"}, - DIV({"class": "fbMenuContent fbShadowContent"}, - FOR("item", "$object.items|memberIterator", - TAG("$item.tag", {item: "$item"}) - ) - ) - ), - - itemTag: - A(menuItemProps, - "$item.label" - ), - - checkBoxTag: - A(extend(menuItemProps, {checked : "$item.checked"}), - - "$item.label" - ), - - radioButtonTag: - A(extend(menuItemProps, {selected : "$item.selected"}), - - "$item.label" - ), - - groupTag: - A(extend(menuItemProps, {child: "$item.child"}), - "$item.label" - ), - - shortcutTag: - A(menuItemProps, - "$item.label", - SPAN({"class": "fbMenuShortcutKey"}, - "$item.key" - ) - ), - - separatorTag: - SPAN({"class": "fbMenuSeparator"}), - - memberIterator: function(items) - { - var result = []; - - for (var i=0, length=items.length; i\s+

                                ([\s\S]+)<\/p>\s+<\/body>$/.exec(source); - if (match) - source = match[1]; - - console.log(source); - }); - } -}; - -// ************************************************************************************************ - -var fetchResource = function(url) -{ - var xhr = FBL.Ajax.getXHRObject(); - xhr.open("get", url, false); - xhr.send(); - - return xhr.responseText; -}; - -var fetchProxyResource = function(url) -{ - var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url); - var response = fetchResource(proxyURL); - - try - { - var data = eval("(" + response + ")"); - } - catch(E) - { - return "ERROR: Firebug Lite Proxy plugin returned an invalid response."; - } - - return data ? data.contents : ""; -}; - - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/lite/script.js b/branches/firebug1.5/content/lite/script.js deleted file mode 100644 index e756c271..00000000 --- a/branches/firebug1.5/content/lite/script.js +++ /dev/null @@ -1,31 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Script = function(window) -{ - this.fileName = null; - this.isValid = null; - this.baseLineNumber = null; - this.lineExtent = null; - this.tag = null; - - this.functionName = null; - this.functionSource = null; -}; - -Firebug.Lite.Script.prototype = -{ - isLineExecutable: function(){}, - pcToLine: function(){}, - lineToPc: function(){}, - - toString: function() - { - return "Firebug.Lite.Script"; - } -}; - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/lite/selector.js b/branches/firebug1.5/content/lite/selector.js deleted file mode 100644 index b66a657a..00000000 --- a/branches/firebug1.5/content/lite/selector.js +++ /dev/null @@ -1,1031 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns( /**@scope ns-selector*/ function() { with (FBL) { -// ************************************************************************************************ - -/* - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -/** - * @name Firebug.Selector - * @namespace - */ - -/** - * @exports Sizzle as Firebug.Selector - */ -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) - selector += parts.shift(); - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - throw "Syntax error, unrecognized expression: " + (cur || selector); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.match[ type ].exec( expr )) != null ) { - var filter = Expr.filter[ type ], found, item; - anyFound = false; - - if ( curLoop == result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr == old ) { - if ( anyFound == null ) { - throw "Syntax error, unrecognized expression: " + expr; - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -/**#@+ @ignore */ -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag && !isXML ) { - part = part.toUpperCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part, isXML){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = isXML ? part : part.toUpperCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = isXML ? part : part.toUpperCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context, isXML){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) { - if ( !inplace ) - result.push( elem ); - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - for ( var i = 0; curLoop[i] === false; i++ ){} - return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase(); - }, - CHILD: function(match){ - if ( match[1] == "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 == i; - }, - eq: function(elem, i, match){ - return match[3] - 0 == i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) return false; - } - if ( type == 'first') return true; - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) return false; - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first == 1 && last == 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first == 0 ) { - return diff == 0; - } else { - return ( diff % first == 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value != check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source ); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 ); - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return 0; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( !!document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

                                "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE -})(); - -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){ - var div = document.createElement("div"); - div.innerHTML = "
                                "; - - // Opera can't find a second classname (in 9.6) - if ( div.getElementsByClassName("e").length === 0 ) - return; - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) - return; - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ){ - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - var sibDir = dir == "previousSibling" && !isXML; - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - if ( sibDir && elem.nodeType === 1 ) { - elem.sizcache = doneName; - elem.sizset = i; - } - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return a.compareDocumentPosition(b) & 16; -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" || - !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML"; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE - -Firebug.Selector = Sizzle; - -/**#@-*/ - -// ************************************************************************************************ -}}); \ No newline at end of file diff --git a/branches/firebug1.5/content/lite/style.js b/branches/firebug1.5/content/lite/style.js deleted file mode 100644 index 06f723e7..00000000 --- a/branches/firebug1.5/content/lite/style.js +++ /dev/null @@ -1,11 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -Firebug.Lite.Style = -{ -}; - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/content/lite/xhr.js b/branches/firebug1.5/content/lite/xhr.js deleted file mode 100644 index a8fa5b86..00000000 --- a/branches/firebug1.5/content/lite/xhr.js +++ /dev/null @@ -1,509 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { -// ************************************************************************************************ - -if (Env.Options.disableXHRListener) - return; - -// ************************************************************************************************ -// XHRSpy - -var XHRSpy = function() -{ - this.requestHeaders = []; - this.responseHeaders = []; -}; - -XHRSpy.prototype = -{ - method: null, - url: null, - async: null, - - xhrRequest: null, - - href: null, - - loaded: false, - - logRow: null, - - responseText: null, - - requestHeaders: null, - responseHeaders: null, - - sourceLink: null, // {href:"file.html", line: 22} - - getURL: function() - { - return this.href; - } -}; - -// ************************************************************************************************ -// XMLHttpRequestWrapper - -var XMLHttpRequestWrapper = function(activeXObject) -{ - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal variables - - var xhrRequest = typeof activeXObject != "undefined" ? - activeXObject : - new _XMLHttpRequest(), - - spy = new XHRSpy(), - - self = this, - - reqType, - reqUrl, - reqStartTS; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // XMLHttpRequestWrapper internal methods - - var updateSelfPropertiesIgnore = { - abort: 1, - channel: 1, - getAllResponseHeaders: 1, - getInterface: 1, - getResponseHeader: 1, - mozBackgroundRequest: 1, - multipart: 1, - onreadystatechange: 1, - open: 1, - send: 1, - setRequestHeader: 1 - }; - - var updateSelfProperties = function() - { - if (supportsXHRIterator) - { - for (var propName in xhrRequest) - { - if (propName in updateSelfPropertiesIgnore) - continue; - - try - { - var propValue = xhrRequest[propName]; - - if (propValue && !isFunction(propValue)) - self[propName] = propValue; - } - catch(E) - { - //console.log(propName, E.message); - } - } - } - else - { - // will fail to read these xhrRequest properties if the request is not completed - if (xhrRequest.readyState == 4) - { - self.status = xhrRequest.status; - self.statusText = xhrRequest.statusText; - self.responseText = xhrRequest.responseText; - self.responseXML = xhrRequest.responseXML; - } - } - }; - - var updateXHRPropertiesIgnore = { - channel: 1, - onreadystatechange: 1, - readyState: 1, - responseBody: 1, - responseText: 1, - responseXML: 1, - status: 1, - statusText: 1, - upload: 1 - }; - - var updateXHRProperties = function() - { - for (var propName in self) - { - if (propName in updateXHRPropertiesIgnore) - continue; - - try - { - var propValue = self[propName]; - - if (propValue && !xhrRequest[propName]) - { - xhrRequest[propName] = propValue; - } - } - catch(E) - { - //console.log(propName, E.message); - } - } - }; - - var logXHR = function() - { - var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR); - - if (row) - { - setClass(row, "loading"); - spy.logRow = row; - } - }; - - var finishXHR = function() - { - var duration = new Date().getTime() - reqStartTS; - var success = xhrRequest.status == 200; - - var responseHeadersText = xhrRequest.getAllResponseHeaders(); - var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : []; - var reHeader = /^(\S+):\s*(.*)/; - - for (var i=0, l=responses.length; i 0; - - /**/ - - return this; -}; - -// ************************************************************************************************ -// ActiveXObject Wrapper (IE6 only) - -var _ActiveXObject; -var isIE6 = /msie 6/i.test(navigator.appVersion); - -if (isIE6) -{ - _ActiveXObject = window.ActiveXObject; - - var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP "; - - window.ActiveXObject = function(name) - { - var error = null; - - try - { - var activeXObject = new _ActiveXObject(name); - } - catch(e) - { - error = e; - } - finally - { - if (!error) - { - if (xhrObjects.indexOf(" " + name + " ") != -1) - return new XMLHttpRequestWrapper(activeXObject); - else - return activeXObject; - } - else - throw error.message; - } - }; -} - -// ************************************************************************************************ - -// Register the XMLHttpRequestWrapper for non-IE6 browsers -if (!isIE6) -{ - var _XMLHttpRequest = XMLHttpRequest; - window.XMLHttpRequest = function() - { - return new XMLHttpRequestWrapper(); - }; -} - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/docs/beta/changelog.txt b/branches/firebug1.5/docs/beta/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.5/docs/beta/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.5/docs/beta/index.html b/branches/firebug1.5/docs/beta/index.html deleted file mode 100644 index 13ae5ed4..00000000 --- a/branches/firebug1.5/docs/beta/index.html +++ /dev/null @@ -1,791 +0,0 @@ - - - - - - -Firebug Lite 1.3.0 beta - - - - - - - - - - - - - - - - - -
                                - - - -
                                - -
                                - -
                                -

                                Firebug Lite 1.3.0 beta release notes

                                -
                                - -
                                -

                                - - Spread the word: - Firebug Lite 1.3.0 beta released - - The next generation of Firebug Lite graduated to beta! This version - is pretty stable but we need your help to make sure it is stable enough - to make a wider release. -

                                -
                                - - - -
                                -

                                Overview

                                - -
                                -

                                - This version was conceived to put the Firebug Lite in a new level, - by allowing code reuse from Firebug's original source. A new core - was created to accomplish the following goals: -

                                -

                                - Performance - the core of Firebug Lite 1.3 was rewritten from scratch - taking the performance into account in the first place. -

                                -

                                - Modularity - the code is now more modular, making easier the process - of adding new features and UI components such as panels, buttons, menus etc. - The modularity also helps the development process. Once the modules can - be isolated it is easier to detect the cause of complicated problems like - memory leaks. -

                                -

                                - Shared code - the core was designed to make it possible - to port some code directly from the Firebug source, with as few as possible - modifications. As a result, some features and UI elements behave exactly - as in Firebug. -

                                -

                                - Compatibility - the new core is compatible with XHTML and XML+XSL - documents. Thanks to the new context-independent approach, it supports - now the experimental persistent popups feature (popups that "live" across - different page loads of the same domain), and will support cross-iframe - inspection in the next version. -

                                -
                                -
                                - - - -
                                -

                                What's New?

                                - -
                                -

                                - User Interface -

                                -
                                  -
                                • Port of Firebug's Visual Object Representation (aka Reps)
                                • -
                                • Recreation of Firebug 1.3 User Interface with pixel precision
                                • -
                                • Menu options
                                • -
                                • Resizable sidePanel
                                • -
                                • Skinnable Interface
                                • -
                                -

                                - CSS -

                                -
                                  -
                                • CSS cascading view
                                • -
                                • CSS inheritance view
                                • -
                                • Live editing CSS rules and properties
                                • -
                                • Smart autocomplete (you'll get only the suggestions you need for each property)
                                • -
                                • Autocomplete as you type feature
                                • -
                                • Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys
                                • -
                                -

                                - Inspector -

                                -
                                  -
                                • Full BoxModel Highlight including margin, border, padding and content boxes
                                • -
                                • The BoxModel is highlighted when you move your mouse over a representation - of a HTML element, in any of the place of the User Interface
                                • -
                                • Elements are selected on-the-fly while using the Inspect tool
                                • -
                                -

                                - Console -

                                -
                                  -
                                • console.group() and console.groupEnd()
                                • -
                                • - console.trace() (thanks - dongryphon - for the contribution!) -
                                • -
                                • command line API functions $(), $$(), and dir()
                                • -
                                • command line shortcuts $0 and $1 for recent selected elements
                                • -
                                • autocomplete (tab, shift+tab)
                                • -
                                • can capture console messages before DOM document creation - (when installed at the HTML header)
                                • -
                                -

                                - Core -

                                -
                                  -
                                • XHR watcher (works better when you load the script in the HEAD of your document)
                                • -
                                • Port most of the Firebug Library (aka Lib, FBL)
                                • -
                                • Port the Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
                                • -
                                • Plugin system like Firebug
                                • -
                                • Context-independent (will allow cross-iframe debugging, and persistent popups)
                                • -
                                • Persistent popups
                                • -
                                • Synchronization across different windows (iframe, popup)
                                • -
                                -

                                - And more... -

                                -
                                  -
                                • - Fixed problem with Internet Explorer and inline styles representation (thanks - christophe.blin - for the contribution!) -
                                • -
                                • - For a complete list of changes, check the - changelog. -
                                • -
                                - -

                                1.2. What's missing in Firebug Lite 1.3?

                                -

                                - Here are the features that are still missing, but should be available in the - final Firebug Lite 1.3 release: -

                                -
                                  -
                                • Object links in console should be clickable
                                • -
                                • XHR watching need to work with synchronous requests
                                • -
                                • Some internal code need to be refactored (Chrome and Panels API)
                                • -
                                • Make sure the code is stable enough
                                • -
                                - -

                                1.3. What's Not in Lite?

                                -

                                - Some features are not included in Firebug Lite 1.3, but due the new core that - supports code sharing from Firebug, are likely to be included in the - Firebug Lite 1.4 version: -

                                -
                                  -
                                • Live editing for all panels
                                • -
                                • Layout Panel
                                • -
                                • Context menu options
                                • -
                                • Tooltips (to show colors and images)
                                • -
                                • Search feature
                                • -
                                -

                                - Other features though are too dependent in browser internals and will not be - supported (at least in a near future*), such as: -

                                -
                                  -
                                • Javascript debugger / Javascript profiler
                                • -
                                • Net panel / HTTP and XHR monitor
                                • -
                                • Access to restricted URI resources
                                • -
                                • Highlight HTML changes
                                • -
                                -

                                - *Recent discussions about remote debugging - indicates that should be possible to support JavaScript debugging in browsers - like Google Chrome and Opera in a not so distant future, but the - differences in the protocols - may slow down this process (hey browser developers, what about adopting a standard?). - -

                                -
                                -
                                - - - -
                                -

                                Install

                                - -
                                -

                                a) Bookmarlet

                                -

                                - Bookmark the following links: -

                                - -

                                - **The trace enabled bookmarlet is intended to help identify error in Firebug Lite. - If you find a bug, run the trace enabled bookmarlet and look for something - strange in the logs. -

                                -

                                b) Live link

                                -

                                - You can also link directly to the hosted version at getfirebug.com. Copy the - following code, and paste it in the TOP of the HEAD of your document: -

                                - -

                                c) Local link (offline)

                                -

                                - If you need using Firebug Lite while offline, - download the code, - copy to a local destination, and link the firebug.jgz in the TOP - of the HEAD of your document. -

                                - -

                                d) Development mode:

                                -

                                - If you want to debug Firebug Lite, fix a bug, or add a new feature, you will want - to run the Firebug Lite in development mode. To do so, first - checkout the latest version - in our repository, and then insert a script at the TOP of the HEAD of your document. -

                                - -

                                - When in development mode, some things behave quite differently to make the - development process easier, such as: -

                                -
                                  -
                                • All script files are loaded separately, without compression.
                                • -
                                • The internal library that Firebug Lite uses (aka FBL) is exposed to the - global namespace, allowing you to inspect its content. It is also exposed - the domplate and its classes, and the FBTrace object
                                • -
                                • The skin is loaded in a separated file, allowing you to rapidly change - the style and/or markup of the User Interface.
                                • -
                                • It will force to open Firebug Lite even when Firebug is active (which is - not the default behavior), so you can use Firebug to debug it.
                                • -
                                • A new panel "Dev" will be available with tools to compress the skin, - and the source code of the application in a single file.
                                • -
                                -
                                -
                                - - - -
                                -

                                Options

                                - -
                                -

                                - The properties you can change include (with respective default values): -

                                -
                                  -
                                • saveCookies - false
                                • -
                                • startOpened - false
                                • -
                                • startInNewWindow - false
                                • -
                                • showIconWhenHidden - true
                                • -
                                • overrideConsole - true
                                • -
                                • ignoreFirebugElements - true
                                • -
                                • disableWhenFirebugActive - true
                                • -
                                • enableTrace - false
                                • -
                                • enablePersistent - false
                                • -
                                -

                                - You can change the options using any of the following methods - (in ascendant order of priority): -

                                -

                                a) debug="true"

                                -

                                - For backwards compatibility you can still use the debug="true" attribute - in the <html> tag to make Firebug Lite starts opened, like: -

                                -
                                <html debug="true">
                                - -

                                b) Script URL options

                                -

                                - You can also set the options using URL fragment, specially handy to tweak - options in your bookmarlet. -

                                -
                                -https://getfirebug.com/releases/lite/beta/firebug.jgz#enableTrace
                                -
                                -

                                - Options are separated by commas (,), and values are informed using - the equals to (=) symbol. If no value is informed, it is - assumed "true". -

                                -
                                -path/to/firebug.jgz#enableTrace,overrideConsole=false
                                -
                                -

                                is equivalent to:

                                -
                                -path/to/firebug.jgz#enableTrace=true,overrideConsole=false
                                -
                                -
                                -

                                c) Script JSON options

                                -

                                - It is possible to set options using a JSON object inside - the linked script: -

                                -
                                -<script type="text/javascript" 
                                -src="https://getfirebug.com/releases/lite/beta/firebug.jgz">
                                -{
                                -    overrideConsole: false,
                                -    startInNewWindow: true,
                                -    startOpened: true,
                                -    enableTrace: true
                                -}
                                -</script>
                                -
                                -

                                d) Cookies

                                -

                                - Finally, you can override the options using cookies, via User Interface, - by clicking in the Firebug icon in the upper-left corner. -

                                -
                                -
                                - - - -
                                -

                                What to test?

                                - -
                                -

                                - That's a lot of things to test, but we're particularly interested in - make sure the core of the application is working well before we move on - to the beta stage. Here are the list of the most important things to test: -

                                - -

                                5.1. Loading

                                -

                                - Firebug Lite should run fine no matter how it was loaded. -

                                -

                                - Bookmarlet - the current bookmarlet used in both Firebug Lite 1.2 and - 1.3 versions contains some problems and limitations (it won't load - for example in XHTML and/or XML+XSL documents). We're particularly - insterested in find such problems in the bookmarlet now we're in - beta stage, because updating bookmarlets is a boring task, and - should be done by the user individually, in each browser. -

                                -

                                - Local include - Firebug Lite should load fine when using relative - paths in the URL (when loaded locally). -

                                -

                                - Live include - Firebug Lite should load fine when loaded directly - from getfirebug.com. -

                                - -

                                5.2. Rendering

                                -

                                - Please report us if you see some weird behavior in the User Interface, such - as misplaced elements, elements not rendered, abnormal flickering, partial - rendered panels, or any other visual weirdness. -

                                - -

                                5.4. Document Types

                                -

                                - Firebug Lite should work in different types of documents such as - XHTML and/or XML+XSL documents. -

                                -
                                -
                                - - - -
                                -

                                Contributing

                                - -
                                -

                                - Your contribution is very important. Found a bug? Have a suggestion? Please - report us. -

                                -

                                - Found a fix for a particular issue? - Patches are welcome. - Also, if you are willing to help more deeply with coding, - join our team. -

                                -

                                - - Spread the word: - Firebug Lite 1.3.0 beta released - - Last, but not least, you can also helping us by spreading the word, inviting - more people to test this new version. Feel free to post about it in your - blog, social network, or use the retweet button on the left. -

                                -
                                -
                                - - -
                                - -
                                - - - -
                                - -
                                - - -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/docs/beta/retweet.js b/branches/firebug1.5/docs/beta/retweet.js deleted file mode 100644 index dd8eb372..00000000 --- a/branches/firebug1.5/docs/beta/retweet.js +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Easy Retweet Button - * http://ejohn.org/blog/retweet/ - * by John Resig (ejohn.org) - * - * Licensed under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - */ - -(function(){ - -window.RetweetJS = { - // Your Bit.ly Username - bitly_user: "retweetjs", - - // Your Bit.ly API Key - // Found here: http://bit.ly/account - bitly_key: "R_6287c92ecaf9efc6f39e4f33bdbf80b1", - - // The text to replace the links with - link_text: (/windows/i.test( navigator.userAgent) ? "►" : "♻") + - " Retweet", - - // What # to show (Use "clicks" for # of clicks or "none" for nothing) - count_type: "clicks", - - // Tweet Prefix text - // "RT @jeresig " would result in: "RT @jeresig Link Title http://bit.ly/asdf" - prefix: "", - - // Style information - styling: "a.retweet { font: 12px Helvetica,Arial; color: #000; text-decoration: none; border: 0px; }" + - "a.retweet span { color: #FFF; background: #94CC3D; margin-left: 2px; border: 1px solid #43A52A; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" + - "a.vert { display: block; text-align: center; font-size: 16px; float: left; margin: 4px; }" + - "a.retweet strong.vert { display: block; margin-bottom: 4px; background: #F5F5F5; border: 1px solid #EEE; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" + - "a.retweet span.vert { display: block; font-size: 12px; margin-left: 0px; }" -}; - -//////////////// No Need to Configure Below Here //////////////// - -var loadCount = 1; - -// Asynchronously load the Bit.ly JavaScript API -// If it hasn't been loaded already -if ( typeof BitlyClient === "undefined" ) { - var head = document.getElementsByTagName("head")[0] || - document.documentElement; - var script = document.createElement("script"); - script.src = "http://bit.ly/javascript-api.js?version=latest&login=" + - RetweetJS.bitly_user + "&apiKey=" + RetweetJS.bitly_key; - script.charSet = "utf-8"; - head.appendChild( script ); - - var check = setInterval(function(){ - if ( typeof BitlyCB !== "undefined" ) { - clearInterval( check ); - head.removeChild( script ); - loaded(); - } - }, 10); - - loadCount = 0; -} - -if ( document.addEventListener ) { - document.addEventListener("DOMContentLoaded", loaded, false); - -} else if ( window.attachEvent ) { - window.attachEvent("onload", loaded); -} - -function loaded(){ - // Need to wait for doc ready and js ready - if ( ++loadCount < 2 ) { - return; - } - - var elems = [], urlElem = {}, hashURL = {}; - - BitlyCB.shortenResponse = function(data) { - for ( var url in data.results ) { - var hash = data.results[url].userHash; - hashURL[hash] = url; - - var elems = urlElem[ url ]; - - for ( var i = 0; i < elems.length; i++ ) { - elems[i].href += hash; - } - - if ( RetweetJS.count_type === "clicks" ) { - BitlyClient.stats(hash, 'BitlyCB.statsResponse'); - } - } - }; - - BitlyCB.statsResponse = function(data) { - var clicks = data.results.clicks, hash = data.results.userHash; - var url = hashURL[ hash ], elems = urlElem[ url ]; - - if ( clicks > 0 ) { - for ( var i = 0; i < elems.length; i++ ) { - var strong = document.createElement("strong"); - strong.appendChild( document.createTextNode( clicks + " " ) ); - elems[i].insertBefore(strong, elems[i].firstChild); - - if ( /(^|\s)vert(\s|$)/.test( elems[i].className ) ) { - elems[i].firstChild.className = elems[i].lastChild.className = "vert"; - } - } - } - - hashURL[ hash ] = urlElem[ url ] = null; - }; - - if ( document.getElementsByClassName ) { - elems = document.getElementsByClassName("retweet"); - } else { - var tmp = document.getElementsByTagName("a"); - for ( var i = 0; i < tmp.length; i++ ) { - if ( /(^|\s)retweet(\s|$)/.test( tmp[i].className ) ) { - elems.push( tmp[i] ); - } - } - } - - if ( elems.length && RetweetJS.styling ) { - var style = document.createElement("style"); - style.type = "text/css"; - - try { - style.appendChild( document.createTextNode( RetweetJS.styling ) ); - } catch (e) { - if ( style.styleSheet ) { - style.styleSheet.cssText = RetweetJS.styling; - } - } - - document.body.appendChild( style ); - } - - for ( var i = 0; i < elems.length; i++ ) { - var elem = elems[i]; - - if ( /(^|\s)self(\s|$)/.test( elem.className ) ) { - elem.href = window.location; - elem.title = document.title; - } - - var origText = elem.title || elem.textContent || elem.innerText, - href = elem.href; - - elem.innerHTML = "" + RetweetJS.link_text + ""; - elem.title = ""; - elem.href = "http://twitter.com/home?status=" + - encodeURIComponent(RetweetJS.prefix + origText + " http://bit.ly/"); - - if ( urlElem[ href ] ) { - urlElem[ href ].push( elem ); - } else { - urlElem[ href ] = [ elem ]; - BitlyClient.shorten(href, 'BitlyCB.shortenResponse'); - } - } - -} - -})(); diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img01.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img01.png deleted file mode 100644 index 5e0c9dde..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img01.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img02.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img02.png deleted file mode 100644 index d47d47f3..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img02.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img03.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img03.png deleted file mode 100644 index aeadf4e8..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img03.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img04.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img04.png deleted file mode 100644 index 641027d6..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img04.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img05.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img05.png deleted file mode 100644 index 1828933b..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img05.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img06.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img06.png deleted file mode 100644 index 07534179..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img06.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img07.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img07.png deleted file mode 100644 index 5a705cd4..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img07.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img08.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img08.png deleted file mode 100644 index 3b368ec3..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img08.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img09.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img09.png deleted file mode 100644 index 65f37559..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img09.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img10.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img10.png deleted file mode 100644 index e420131d..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img10.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img11.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img11.png deleted file mode 100644 index 8454dd7c..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img11.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img12.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img12.png deleted file mode 100644 index 1e818684..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img12.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img13.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img13.png deleted file mode 100644 index 850d7846..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-img13.png and /dev/null differ diff --git a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-small.png b/branches/firebug1.5/docs/beta/screenshots/firebug1.3-small.png deleted file mode 100644 index d66f197b..00000000 Binary files a/branches/firebug1.5/docs/beta/screenshots/firebug1.3-small.png and /dev/null differ diff --git a/branches/firebug1.5/docs/chrome/changelog.txt b/branches/firebug1.5/docs/chrome/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.5/docs/chrome/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.5/docs/chrome/index.html b/branches/firebug1.5/docs/chrome/index.html deleted file mode 100644 index adff58ba..00000000 --- a/branches/firebug1.5/docs/chrome/index.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - -Firebug Lite for Google Chrome : Firebug - - - - - - - - - - - - - - - - - - - -
                                - - - -
                                -
                                - -
                                - -
                                - -
                                -

                                Firebug Lite for Google Chrome

                                -
                                - -
                                -

                                -

                                -
                                - - - -
                                -

                                Overview

                                - -
                                -

                                - Firebug Lite for Google Chrome is not a substitute for Firebug, - or Chrome Developer Tools. It is a tool to be used in conjunction - with these tools. Firebug Lite provides the rich visual representation - we are used to see in Firebug when it comes to HTML elements, - DOM elements, and Box Model shading. It provides also some cool - features like inspecting HTML elemements with your mouse, - and live editing CSS properties. -

                                -

                                - To get more information about - what's new - in Firebug Lite (which is compatible with all major browsers) please visit the - Firebug Lite page. -

                                - -

                                Benefits over Firebug Lite

                                -

                                - Firebug Lite for Google Chrome is basically the same you'll see - when using the bookmarklet, or including a script tag - in your page. There are, though, some benefits by using the extension - for Google Chrome, including: -

                                -
                                  -
                                • Browser toolbar integration, providing a quick access to Firebug Lite
                                • -
                                • It works without internet connection
                                • -
                                • Faster loading and no FOUC (Flash of Unstyled Content), once resources - will be stored in the extension's directory on your machine
                                • -
                                • Firebug Lite will be loaded before all other scripts, allowing it - to capture all console calls and all XHR requests for that page
                                • -
                                • It is possible to activate the Firebug Lite for a particular domain, so next - time you visit a page in that domain it will be automatically active.
                                • -
                                - -

                                Limitations

                                -

                                - The main limitations of the Firebug Lite version are: -

                                -
                                  -
                                • Cannot read external resources
                                • -
                                • Won't work well on pages with frames
                                • -
                                • JavaScript debugger isn't available
                                • -
                                • Net Panel isn't available
                                • -
                                -
                                -
                                - - -
                                -

                                Activation

                                - -
                                -

                                - The Firebug Lite activation scheme is very simple. When you first visit - a web page Firebug Lite icon will be gray, indicating that it is deactivated. - Clicking on it will activate Firebug Lite for all pages in that domain and the - icon will become orange. -

                                -

                                - Next time you visit a page in that domain, Firebug Lite will be automatically - active, and the UI will be open or minimized according to the last time - you used it. -

                                -

                                - To deactivate Firebug Lite for a particular domain, go to a page in that domain - and click on the "off" button. Since Firebug Lite uses localStorage to store - the activation info when you clear your browser's cache, Firebug Lite - will be deactivated for all pages. -

                                -
                                -
                                - - -
                                -

                                Contributing

                                - -
                                -

                                - Your contribution is very important. - If you have a specific issue, like a bug or feature request, please - post a detailed description - of the issue, and we will do our best to make it happen. - If you have a more general issue or have something to say, - let us know. - Found a fix for a particular issue? - Patches are welcome. - If you would like to help with some code or would like to develop - an extension for Firebug Lite, don't hesitate: - join our team. -

                                -
                                -
                                - - -
                                - -
                                - - - -
                                - -
                                - - -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/docs/chrome/info.txt b/branches/firebug1.5/docs/chrome/info.txt deleted file mode 100644 index c7799536..00000000 --- a/branches/firebug1.5/docs/chrome/info.txt +++ /dev/null @@ -1,43 +0,0 @@ -Overview -------------- - -Firebug Lite is not a substitute for Firebug, or Chrome Developer Tools. It is a tool to be used in conjunction with these tools. Firebug Lite provides the rich visual representation we are used to see in Firebug when it comes to HTML elements, DOM elements, and Box Model shading. It provides also some cool features like inspecting HTML elemements with your mouse, and live editing CSS properties. - -For more detailed information, visit: -http://getfirebug.com/releases/lite/chrome/ - - -Benefits over Firebug Lite bookmarlet ------------------------------------------------------ - - * Browser toolbar integration - * Able to activate Firebug Lite for a particular domain - * Firebug Lite will be loaded before all other scripts, allowing it to capture all console calls, and all XHR requests for that page - * It is faster to load, because all code and images will be store in the extension's directory in your machine - * Will be able to read external resources in the next version - - -Limitations ----------------- - - * Cannot read external resources - * Won't work well on pages with frames - * JavaScript debugger isn't available - * Net Panel isn't available - - -Activation --------------- - -The Firebug Lite activation scheme is very simple. When you first visit a web page, Firebug icon will be gray, indicating that it is deactivated. Clicking on it will activate Firebug for all pages in that domain, and the icon will become orange. - -To deactivate for a particular domain, go to a page in that domain, and click on the "off" button. - - -Contributing ------------------ - -Your contribution is very important. Found a bug? Have a suggestion? Please -report us: http://code.google.com/p/fbug/issues/list - -If you would like to help with some code, or would like to develop an extension for Firebug Lite, don't hesitate, join our team: http://groups.google.com/group/firebug-working-group \ No newline at end of file diff --git a/branches/firebug1.5/docs/latest/changelog.txt b/branches/firebug1.5/docs/latest/changelog.txt deleted file mode 100644 index 7aa1e81c..00000000 --- a/branches/firebug1.5/docs/latest/changelog.txt +++ /dev/null @@ -1,485 +0,0 @@ -################################################################################################### - 1.3.0b1 - 2009-02-05 - Revision: 6012 -################################################################################################### - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented a more robust stylesheet scanner (will scan imported stylesheets) - - Implemented a cascading styles analyser (will detect which CSS rules are applied - to a particular element, in the proper cascading order) - - - Ported css.js file from Firebug, including the following features: - - live edit of CSS properties - - enable/disable CSS properties on-the-fly - - Cascading visualization - - Inheritance visualization (with overriden properties marked) - - - Ported the CSS Panel - - Ported the Style Panel - - Ported the Computed Panel divided in categories (in a separated tab) - - Fixed the problem with external stylesheets (now shows a "Access restricted" message). - -------------------------------------------------------------------------------- -Editor -------------------------------------------------------------------------------- - - Autocomplete feature with UP/DOWN keys - - "Complete as you type" feature in most browsers (not working in Opera yet) - - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN - - Navigation with TAB/SHIFT+TAB - - Fixed the CSS of editor to work in all browsers - - Pretty inline editor support in IE6 - - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't - trigger the onkeypress event, making some changes in the editor not apply - to the CSS property. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Strings are properly rendered in console.* calls - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut. - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Don't show the Firebug Lite source code in the script list - - Refactored Script panel - - Fixed potential memory leak - - Using the Warning template in the Script panel when failing to load external scripts. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - When running as Chrome extension, all images used in the interface are - stored in the extension directory, hugely improving the perceived loading - time for GUI operations, specially in the startup. - - - Implemented the chrome.deactivate() method - -------------------------------------------------------------------------------- -GUI -------------------------------------------------------------------------------- - - Added the "off" button to the UI - - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+ - - Fixed problem with panel initialization that was breaking the scroll - position persistence of the panels. - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Added domplate tag.insertBefore method - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - Added KeyEvent constants - - Added bindFixed method - - Added Whitespace and Entity conversions methods - - Added String escaping methods - - Added CSS methods - - Added DOM queries methods - - - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" - CSS selector that was used to match the element) - - - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition() - to support text selection and caret position detection in editor module - - - Making instanceOf() work also for non HTML elements (elements without ownerDocument - property), to avoid the use of the instanceof operator, that may cause error in other - browsers when the Class is not defined in the global namespace. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Ported editor.js module from Firebug - - Ported a simplified version of tabContext.js - - Implemented a more robust Cache system that will be used internally - - Implemented a message dispatching method to communicate with the Chrome extension - - -################################################################################################### - 1.3.0a5 - 2009-01-16 - Revision: 5719 -################################################################################################### - -------------------------------------------------------------------------------- -CommandLine -------------------------------------------------------------------------------- - - Large Command Line - - Refactoring CommandLine module for better readability and encapsulation (commandHistory - is now a private variable in CommandLine module) - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Fix problem in iframe creation that was blocking the UI creation via - bookmarlet in IE, for some pages. - - - Allow Firebug Lite UI to load in "windowless mode", without creating an - iframe. This is necessary to make the bookmarlet run in cases where it - is not possible to create an iframe. - - - Refactoring Chrome module for better readability - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - refined the layout of buttons (added an image background) - - refined the layout of log groups - -------------------------------------------------------------------------------- -Context -------------------------------------------------------------------------------- - - Better context evaluation (commands with multiple lines are now properly evaluated) - - context.evaluate() properly executes and returns the value of expressions with - multiple commands (be it multilined or not). - -------------------------------------------------------------------------------- -Style -------------------------------------------------------------------------------- - - Basic editing feature of inline styles (Style panel) - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - properly format inline style of elements in IE to lower-case in HTML panel - -------------------------------------------------------------------------------- -Lib -------------------------------------------------------------------------------- - - fixed visibility detection and visibility representation of elements - - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), - and others. IE has a different pattern for identifying mouse buttons. - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc). - - ported the consoleInjetor.js file that will be used with the new console (console2.js) - - ported the console.js file from Firebug codebase (not enabled yet). This will replace - the current implementation of the Console panel in the 1.3 final version. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - new XHR watcher (with response and headers tabs) - - fixed variable "root" leaking to global namespace (domplate.js) - - improved development build functions - - -################################################################################################### - 1.3.0a4 - 2009-12-31 - Revision: 5505 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Improved the performance of the application initial loading time - - Improved the performance of the popup loading time - - Refactored the chrome synchronization mechanism - - Implemented synchronization of the persistent popup - - Fixed isFunction() problem with IE when dealing with external objects - - - Improved the memory consumption. Now each panel only uses resources (listen - for events, etc) when is currently selected. - - - Implemented the "Duck Type Detection" system, to make possible identify - native classes (Document, Element, etc) in IE, and therefore, generate - the appropriate visual representation. - -------------------------------------------------------------------------------- -User Interface -------------------------------------------------------------------------------- - - Moved all UI components to a separated gui.js file. - - Implemented the Menu class (with normal, checkbox, radiobutton, group - and separator items), that will be used in options menus at 1.3 verson - and in contexts menus at 1.4 version. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - StatusBar - - SidePanel size and positioning - - - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" - anymore (appears outside its container) when the chrome has small dimensions - - - Large panels now triggers automatically the appropriate scrollbars - (some huge scripts with long lines wans't triggering the horizontal scrollbar) - -------------------------------------------------------------------------------- -Console -------------------------------------------------------------------------------- - - Fixed problem in console.time() and console.timeEnd(). - - Implemented the console.trace (thanks dongryphon for the contribution!) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Implemented the border in the BoxModel Highlight - -------------------------------------------------------------------------------- -HTML -------------------------------------------------------------------------------- - - Internet Explorer and inline styles representation (thanks christophe.blin - for the contribution!) - - - Implemented a basic sidePanel synchronization to test the overall - performance of the rendering when inspecting elements - -------------------------------------------------------------------------------- -DOM -------------------------------------------------------------------------------- - - Ported the main part of the original DOM Panel in Firebug - - Ported the DOM "views path" mechanism (click and "go into" DOM objects) - - Improved the performance of the initial rendering - - Implemented a basic DOM Panel subclass used in as HTML side panel - -------------------------------------------------------------------------------- -Script -------------------------------------------------------------------------------- - - Implemented the basics of the Script panel, with some code ported from - the Firebug Lite 1.2 version. - - - Better number of lines detection - -------------------------------------------------------------------------------- -CSS -------------------------------------------------------------------------------- - - Implemented the basics of the CSS panel, with some code ported from - the Firebug Lite 1.2 version. - - - Adjusted the rules and property names styles to lowercase - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Removed the dependency on global variables (domplate, DomplateTag) - - Adjusted the code so it can run in external contexts (persistent mode) - - - -################################################################################################### - 1.3.0a3 - 2009-09-13 - Revision: 4882 -################################################################################################### - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Better implementation of the chrome synchronization (detach and reattach methods) - - Improvements the location detection - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - XML+XSL and XHTML support - - Synchronization messages ("detach" and "reattach") are now dispatched to all panels - - Fixed problem with Chrome synchronization in Opera - - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes) - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Reimplemented the IE auto margin size calculator - - Reimplemented the pointsToPixels function - - Reimplemented the pixelsPerInch calculator - - Outline Inspector is now "cropped" to avoid triggering the scrollbars - -------------------------------------------------------------------------------- -Bookmarlet -------------------------------------------------------------------------------- - - More robust and maintainable bookmarlet - -------------------------------------------------------------------------------- -Domplate -------------------------------------------------------------------------------- - - Ported the Domplate rendering engine - -------------------------------------------------------------------------------- -Reps -------------------------------------------------------------------------------- - - Ported the visual representation rules of objects (Reps module) - -------------------------------------------------------------------------------- -Persist -------------------------------------------------------------------------------- - - Reimplemented the application core to support in the future persisted - Chromes, that is, UI windows that stays alive when the user reloads or - changes the page (considering that the following page is in the same domain). - - - -################################################################################################### - 1.3.0a2 - 2009-08-03 - Revision: 3847 -################################################################################################### - -------------------------------------------------------------------------------- -Core Changes -------------------------------------------------------------------------------- - - Context Class implemented to allow inspect different windows (contexts) - - - better settings handling: - - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode - - skin: xp, classic, light - - - all components were revised to better handling memory consumption. - create()/destroy() methods (called when something is created) and - initialize()/shutdown() when something is activated, or made visible. - - - console.log calls are now captured even when the UI is not loaded - - better location detection - - library initialization reimplemented to support future persistent applications - -------------------------------------------------------------------------------- -User Interface Changes -------------------------------------------------------------------------------- - - Created "xp" and "classic" skins. The old skin was based in a Firefox - non-default theme. - - - HTML and CSS revised to render properly in different browsers, running - on different compatibility modes (quirks mode, standards mode). - -------------------------------------------------------------------------------- -Chrome Changes -------------------------------------------------------------------------------- - - better positioning calculation, when running on different compatibility - modes (quirks mode, standards mode). - - - better window size, scrollSize and scollPosition calculations, when - running on different compatibility modes (quirks mode, standards mode). - - - element:hover now works also in IE7 & IE8 when in quirks mode. - - - resize chrome performance (buffered frame-skip technique) - - - mini-chrome implemented - -------------------------------------------------------------------------------- -Core Additions -------------------------------------------------------------------------------- - - FBTrace - internal logging system - - - DOM methods: - - createElement() - - createGlobalElement() - - - Event methods: - - bind() - - cancelEvent() - - addGlobalEvent() - - removeGlobalEvent() - - dispatch() - - disableTextSelection() - - - className methods: - - addClass() - - removeClass() - - hasClass() - - toggleClass() - -------------------------------------------------------------------------------- -Chrome Additions -------------------------------------------------------------------------------- - - Controller Class - - Module Class - - Panel Class - - PanelBar Class - - Button Class (normal and toggle buttons) - - - FBTrace Panel - - - - -################################################################################################### - 1.3.0a1 - 2009-05-03 - Revision: 2729 -################################################################################################### - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Inspect function implemented. - - - onInspecting highlight element in HTML Tree behaviour implemented. - When inspecting, the elements are being highlighted, and the scroll - is being changed to make the element visible in the tree. - -------------------------------------------------------------------------------- -Core -------------------------------------------------------------------------------- - - Problem with scope in event handlers. All functions that need to access - the "shared scope" must be assigned to a local variable. - - var onClick = function onClick(e) - { - ... - - - Revised "extend" and "append" functions - - - problem with the new Firebug for FF3, it seems that it doesn't allow - extending the console namespace anymore. - - - CommandLineAPI --> $, $$, dir, dirxml... - - - Fixed bug in getLocation function, the relative path calculation wasn't - working in all cases. - - - Fixed bug in commandLine. Commands that doesn't return a value (if, for, - while) wasn't being properly executed. - -------------------------------------------------------------------------------- -Events -------------------------------------------------------------------------------- - - Opera problem with the TAB key in commandLine - - - Better handling of the F12 key press, which wasn't being properly - attached to the Chrome Frame window. - -------------------------------------------------------------------------------- -Chrome -------------------------------------------------------------------------------- - - Problem with multiple iframes and the resizing of the Chrome, that - tries to add events on them. - - - Fixed problem in IE when resizing the Chrome, when the relative position - of the mouse wasnt being computed in all frames of the document, - resulting in strange flickerings when resizing it. - - - Fixed problem in Opera when resizing the Chrome. - - - Problem when resizing with the fbVSplitter, when it reaches the side of - the screen. Problem with negative pixel numbers. - - - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll. - - - isScrolledToBottom is not working in Firefox, it seems that this is - happening because the scrollable panel is some pixels higher than - it should be. - -------------------------------------------------------------------------------- -Inspector -------------------------------------------------------------------------------- - - Selected element in HTML tree isn't being highlighted (boxmodel) - - - BoxModel functions entirely revised. Now the position, size, padding - and margin are being computed correctly, in all units: pt, px, em, ex - and % (need to test more deeply the percentage values). - -------------------------------------------------------------------------------- -commandLine -------------------------------------------------------------------------------- - - better handling of scope of commandLine.eval(), if you type "this" it will - refer to the CommandLine module, and it should refer to "window" instead - - - - -################################################################################################### - 1.3.0a0 - 2009-01-24 - Revision: 1765 -################################################################################################### - -1.3.0 prototype \ No newline at end of file diff --git a/branches/firebug1.5/docs/latest/index.html b/branches/firebug1.5/docs/latest/index.html deleted file mode 100644 index c7216f4a..00000000 --- a/branches/firebug1.5/docs/latest/index.html +++ /dev/null @@ -1,919 +0,0 @@ - - - - - -Firebug Lite : Firebug - - - - - - - - - - - - - - - - -
                                - - - -
                                - -
                                - -
                                -

                                Firebug Lite 1.3.0 release notes

                                -
                                - -
                                -

                                - The next generation of Firebug Lite is out! -

                                -
                                - - - -
                                -

                                Overview

                                - -
                                -

                                - This version was conceived to put the Firebug Lite in a new level, - by allowing code reuse from Firebug's original source. A new core - was created to accomplish the following goals: -

                                -

                                - Performance - the core of Firebug Lite 1.3 was rewritten from scratch - taking the performance into account in the first place. -

                                -

                                - Modularity - the code is now more modular, making it easier to add - new features and UI components such as panels, buttons, menus etc. - The modularity also helps the development process. Once the modules can - be isolated it is easier to detect the cause of complicated problems like - memory leaks. -

                                -

                                - Shared code - the core was designed to make it possible - to port some code directly from the Firebug source with as few as possible - modifications. As a result some features and UI elements behave exactly - as in Firebug. -

                                -

                                - Compatibility - the new core is compatible with XHTML and XML+XSLT - documents. Thanks to the new context-independent approach it supports - now the experimental persistent popups feature (popups that "live" across - different page loads of the same domain). -

                                -
                                -
                                - - - -
                                -

                                What's New?

                                - -
                                -

                                - User Interface -

                                -
                                  -
                                • Port of Firebug's Visual Object Representation (aka Reps)
                                • -
                                • Recreation of Firebug 1.3 User Interface with pixel precision
                                • -
                                • Menu options
                                • -
                                • Resizable Side Panel
                                • -
                                • Skinnable Interface
                                • -
                                -

                                - CSS -

                                -
                                  -
                                • CSS cascading view
                                • -
                                • CSS inheritance view
                                • -
                                • Live editing CSS rules and properties
                                • -
                                • Autocomplete as you type feature, with smart suggestions (you'll get only the suggestions you need for each property)
                                • -
                                • Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys
                                • -
                                -

                                - Inspector -

                                -
                                  -
                                • Full BoxModel Highlight including margin, border, padding and content boxes
                                • -
                                • The BoxModel is highlighted when you move your mouse over a representation - of a HTML element, in any of the place of the User Interface
                                • -
                                • Elements are selected on-the-fly while using the Inspect tool
                                • -
                                -

                                - Console -

                                -
                                  -
                                • console.group(), console.groupCollapsed() and console.groupEnd()
                                • -
                                • console.trace() (now with file name and line numbers for some browsers)
                                • -
                                • Command line API functions $(), $$(), and dir()
                                • -
                                • Command line shortcuts $0 and $1 for recent selected elements
                                • -
                                • Autocomplete (tab, shift+tab)
                                • -
                                • can capture console messages before DOM document creation - (when installed at the HTML header)
                                • -
                                -

                                - Core -

                                -
                                  -
                                • XHR watcher (with Headers, Response, Post and Params tabs)
                                • -
                                • Port of Firebug Library (aka Lib, FBL)
                                • -
                                • Port of Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
                                • -
                                • Plugin system like Firebug
                                • -
                                • Context-independent (will allow cross-iframe debugging, and persistent popups)
                                • -
                                • Persistent popups
                                • -
                                • Synchronization across different windows (iframe, popup)
                                • -
                                -

                                - And more... -

                                -
                                  -
                                • - For a complete list of changes, check the - changelog. -
                                • -
                                - -

                                1.3. What's Not in Lite?

                                -

                                - Some features are not included in Firebug Lite 1.3, but due the new core that - supports code sharing from Firebug, are likely to be included in the - Firebug Lite 1.4 version: -

                                -
                                  -
                                • Live editing for all panels
                                • -
                                • Layout Side Panel
                                • -
                                • Context menu options
                                • -
                                • Tooltips (to show colors and images)
                                • -
                                • Search feature
                                • -
                                -

                                - Other features though are too dependent in browser internals and will not be - supported (at least in a near future*), such as: -

                                -
                                  -
                                • Javascript debugger / Javascript profiler
                                • -
                                • Net panel / HTTP and XHR monitor
                                • -
                                • Access to restricted URI resources
                                • -
                                • Highlight HTML changes
                                • -
                                -

                                - *Discussions about remote debugging - indicates that should be possible to support JavaScript debugging in browsers - like Google Chrome and Opera in the future. - -

                                -
                                -
                                - - - -
                                -

                                Install

                                - -
                                -

                                Bookmarklet

                                -

                                - Bookmark the following links: -

                                -

                                Stable channel

                                - -

                                Beta channel

                                - - -

                                Live link

                                - -

                                - You can also link directly to the hosted version at getfirebug.com. Copy the - following code, and paste it in the TOP of the HEAD of your document: -

                                - -

                                Stable channel

                                -

                                - Firebug Lite: - -

                                -

                                - Firebug Lite debug: - -

                                - -

                                Beta channel

                                -

                                - Firebug Lite beta: - -

                                - -

                                Local link (offline)

                                -

                                - If you need using Firebug Lite while offline, - download the code, - copy it to a local destination, and link the firebug-lite.js in the TOP - of the HEAD of your document: -

                                -

                                - -

                                -

                                - If you want to debug the local installation, use the - firebug-lite-debug.js file instead: -

                                -

                                - -

                                - -
                                -
                                - - - -
                                -

                                Options

                                - -
                                -

                                - The properties you can change include (with respective default values): -

                                -
                                  -
                                • saveCookies - false
                                • -
                                • startOpened - false
                                • -
                                • startInNewWindow - false
                                • -
                                • showIconWhenHidden - true
                                • -
                                • overrideConsole - true
                                • -
                                • ignoreFirebugElements - true
                                • -
                                • disableWhenFirebugActive - true
                                • -
                                • enableTrace - false
                                • -
                                • enablePersistent - false
                                • -
                                -

                                - Here is the list of methods you can use to change the options, - in ascendant order of priority, that is, a particular method - will override the options of preceding methods: -

                                -

                                <html debug="true">

                                -

                                - For backwards compatibility you can still use the debug="true" attribute - in the <html> tag to make Firebug Lite starts opened, like: -

                                -
                                <html debug="true">
                                - -

                                Script URL options

                                -

                                - You can also set the options using URL fragments, specially handy to tweak - options in your bookmarklet. -

                                -
                                -https://getfirebug.com/firebug-lite.js#enableTrace
                                -
                                -

                                - Options are separated by commas (,), and values are informed using - the equals to (=) symbol. If no value is informed, - "true" is assumed. -

                                -
                                -path/to/firebug-lite.js#enableTrace,overrideConsole=false
                                -
                                -

                                is equivalent to:

                                -
                                -path/to/firebug-lite.js#enableTrace=true,overrideConsole=false
                                -
                                -

                                Script JSON options

                                -

                                - It is possible to set options using a JSON object inside - the linked script: -

                                -
                                -<script type="text/javascript" 
                                -src="https://getfirebug.com/firebug-lite.js">
                                -{
                                -    overrideConsole: false,
                                -    startInNewWindow: true,
                                -    startOpened: true,
                                -    enableTrace: true
                                -}
                                -</script>
                                -
                                -

                                Cookies

                                -

                                - Finally, you can override the options using cookies, via User - Interface, by clicking in the Firebug icon in the upper-left corner. -

                                -
                                -
                                - - - -
                                -

                                Extensions

                                - -
                                -

                                - If you are familiar with Firebug extension development, you will - see that developing an extension for Firebug Lite is very similar. - In a Firebug extension all code is encapsulated in a strange at - first glance but very clever way: -

                                -
                                -FBL.ns(function() { with (FBL) {
                                -
                                -// extension code
                                -
                                -}});
                                -
                                -

                                - In a Firebug Lite extension the code is encapsulated in a - similar way but using Firebug.extend instead, once - the FBL module (Firebug internal's library) is not - exposed to the global namespace: -

                                -
                                -Firebug.extend(function(FBL) { with (FBL) {
                                -
                                -// extension code
                                -
                                -}});
                                -
                                -

                                - If you are not familiar with Firebug extension development, - I suggest looking at Honza's series of tutorials, including - Firebug Tutorial - and Domplate Tutorial. -

                                -

                                - Here's a sample of how to create a new panel in Firebug Lite: - -

                                -
                                -Firebug.extend(function(FBL) { with (FBL) {
                                -// ***********************************************************************
                                -
                                -function PluginPanel(){};
                                -
                                -PluginPanel.prototype = extend(Firebug.Panel,
                                -{
                                -    name: "Plugin",
                                -    title: "Plugin",
                                -    
                                -    initialize: function(){
                                -        Firebug.Panel.initialize.apply(this, arguments);
                                -        
                                -        this.panelNode.innerHTML = "Hello World!";
                                -    }
                                -});
                                -
                                -Firebug.registerPanel(PluginPanel);
                                -
                                -// ***********************************************************************
                                -}});
                                -
                                - -
                                -
                                - - - -
                                -

                                Debug mode

                                - -
                                - -

                                - The debug mode helps detecting errors in Firebug Lite. When in - debug mode, Firebug Lite will behave as explained below: -

                                - -
                                  -
                                • Firebug Lite starts opened.
                                • -
                                • The internal library used by Firebug Lite (aka FBL) - is exposed to the global namespace allowing the inspection of its content.
                                • -
                                • Firebug Lite will be forced to open even when Firebug is active - (which is not the default behavior), so you can use Firebug to debug it.
                                • -
                                • The "Trace Panel" is enabled (in which internal log messages of - Firebug Lite are printed).
                                • -
                                - -

                                - The debug mode will be activated when you run the - Firebug Lite debug bookmarklet, and - when you the load the "firebug-lite-debug.js" or - "firebug-lite-dev.js" files. You can also activate - it manually by setting a special option "debug" - to "true", using the - Script URL or - Script JSON methods. -

                                - -
                                -
                                - - - -
                                -

                                Development mode

                                - -
                                - -

                                - If you want to debug Firebug Lite, fix a bug or add a new feature, you will want - to run Firebug Lite in development mode. To do so, first - checkout the latest version - in our repository, and then insert a script at the TOP of the HEAD of your document. -

                                - -

                                - When in development mode, some things behave quite differently to make the - development process easier, such as: -

                                -
                                  -
                                • All script files are loaded separately, without compression.
                                • -
                                • The internal library used by Firebug Lite (aka FBL) is exposed to the - global namespace allowing you to inspect its content. It is also exposed - the domplate and its classes, and the FBTrace object
                                • -
                                • The skin is loaded in a separated file allowing you to rapidly change - the style and/or markup of the User Interface.
                                • -
                                • Firebug Lite will be forced to open even when Firebug is active - (which is not the default behavior), so you can use Firebug to debug it.
                                • -
                                • The "Trace Panel" is enabled (in which internal log messages of - Firebug Lite are printed).
                                • -
                                • A new "Dev Panel" will be available with tools to compress the skin - and the source code of the application in a single file.
                                • -
                                - - -
                                -
                                - - -
                                -

                                Contributing

                                - -
                                -

                                - Your contribution is very important. Found a bug? Have a suggestion? Please - report us. -

                                -

                                - Found a fix for a particular issue? - Patches are welcome. - Also, if you are willing to help more deeply with coding, - join our team. -

                                -
                                -
                                - - -
                                - -
                                - - - -
                                - -
                                - - -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img01.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img01.png deleted file mode 100644 index 5e0c9dde..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img01.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img02.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img02.png deleted file mode 100644 index d47d47f3..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img02.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img03.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img03.png deleted file mode 100644 index aeadf4e8..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img03.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img04.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img04.png deleted file mode 100644 index 641027d6..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img04.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img05.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img05.png deleted file mode 100644 index 1828933b..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img05.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img06.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img06.png deleted file mode 100644 index 07534179..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img06.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img07.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img07.png deleted file mode 100644 index 5a705cd4..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img07.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img08.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img08.png deleted file mode 100644 index 3b368ec3..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img08.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img09.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img09.png deleted file mode 100644 index 65f37559..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img09.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img10.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img10.png deleted file mode 100644 index e420131d..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img10.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img11.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img11.png deleted file mode 100644 index 8454dd7c..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img11.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img12.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img12.png deleted file mode 100644 index 1e818684..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img12.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img13.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img13.png deleted file mode 100644 index 850d7846..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-img13.png and /dev/null differ diff --git a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-small.png b/branches/firebug1.5/docs/latest/screenshots/firebug1.3-small.png deleted file mode 100644 index d66f197b..00000000 Binary files a/branches/firebug1.5/docs/latest/screenshots/firebug1.3-small.png and /dev/null differ diff --git a/branches/firebug1.5/license.txt b/branches/firebug1.5/license.txt deleted file mode 100644 index ba43b751..00000000 --- a/branches/firebug1.5/license.txt +++ /dev/null @@ -1,30 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2007, Parakey Inc. -All rights reserved. - -Redistribution and use of this software in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of Parakey Inc. nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of Parakey Inc. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/branches/firebug1.5/plugin/proxy/proxy.php b/branches/firebug1.5/plugin/proxy/proxy.php deleted file mode 100644 index 3bf3f92a..00000000 --- a/branches/firebug1.5/plugin/proxy/proxy.php +++ /dev/null @@ -1,258 +0,0 @@ - and -// are disabled by default, see for more information. -// callback - If specified, the response JSON will be wrapped in this named -// function call. This parameter and are disabled by -// default, see for more information. -// user_agent - This value will be sent to the remote URL request as the -// `User-Agent:` HTTP request header. If omitted, the browser user agent -// will be passed through. -// send_cookies - If send_cookies=1, all cookies will be forwarded through to -// the remote URL request. -// send_session - If send_session=1 and send_cookies=1, the SID cookie will be -// forwarded through to the remote URL request. -// full_headers - If a JSON request and full_headers=1, the JSON response will -// contain detailed header information. -// full_status - If a JSON request and full_status=1, the JSON response will -// contain detailed cURL status information, otherwise it will just contain -// the `http_code` property. -// -// Topic: POST Parameters -// -// All POST parameters are automatically passed through to the remote URL -// request. -// -// Topic: JSON requests -// -// This request will return the contents of the specified url in JSON format. -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/ -// -// Response: -// -// > { "contents": "...", "headers": {...}, "status": {...} } -// -// JSON object properties: -// -// contents - (String) The contents of the remote URL resource. -// headers - (Object) A hash of HTTP headers returned by the remote URL -// resource. -// status - (Object) A hash of status codes returned by cURL. -// -// Topic: JSONP requests -// -// This request will return the contents of the specified url in JSONP format -// (but only if $enable_jsonp is enabled in the PHP script). -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/&callback=foo -// -// Response: -// -// > foo({ "contents": "...", "headers": {...}, "status": {...} }) -// -// JSON object properties: -// -// contents - (String) The contents of the remote URL resource. -// headers - (Object) A hash of HTTP headers returned by the remote URL -// resource. -// status - (Object) A hash of status codes returned by cURL. -// -// Topic: Native requests -// -// This request will return the contents of the specified url in the format it -// was received in, including the same content-type and other headers (but only -// if $enable_native is enabled in the PHP script). -// -// Request: -// -// > ba-simple-proxy.php?url=http://example.com/&mode=native -// -// Response: -// -// > ... -// -// Topic: Notes -// -// * Assumes magic_quotes_gpc = Off in php.ini -// -// Topic: Configuration Options -// -// These variables can be manually edited in the PHP file if necessary. -// -// $enable_jsonp - Only enable if you really need to. If you -// install this script on the same server as the page you're calling it -// from, plain JSON will work. Defaults to false. -// $enable_native - You can enable , but you should only do -// this if you also whitelist specific URLs using $valid_url_regex, to avoid -// possible XSS vulnerabilities. Defaults to false. -// $valid_url_regex - This regex is matched against the url parameter to -// ensure that it is valid. This setting only needs to be used if either -// $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which -// validates all URLs. -// -// ############################################################################ - -// Change these configuration options if needed, see above descriptions for info. -$enable_jsonp = false; -$enable_native = false; -$valid_url_regex = '/.*/'; - -// ############################################################################ - -$url = $_GET['url']; - -if ( !$url ) { - - // Passed url not specified. - $contents = 'ERROR: url not specified'; - $status = array( 'http_code' => 'ERROR' ); - -} else if ( !preg_match( $valid_url_regex, $url ) ) { - - // Passed url doesn't match $valid_url_regex. - $contents = 'ERROR: invalid url'; - $status = array( 'http_code' => 'ERROR' ); - -} else { - $ch = curl_init( $url ); - - if ( strtolower($_SERVER['REQUEST_METHOD']) == 'post' ) { - curl_setopt( $ch, CURLOPT_POST, true ); - curl_setopt( $ch, CURLOPT_POSTFIELDS, $_POST ); - } - - if ( $_GET['send_cookies'] ) { - $cookie = array(); - foreach ( $_COOKIE as $key => $value ) { - $cookie[] = $key . '=' . $value; - } - if ( $_GET['send_session'] ) { - $cookie[] = SID; - } - $cookie = implode( '; ', $cookie ); - - curl_setopt( $ch, CURLOPT_COOKIE, $cookie ); - } - - curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true ); - curl_setopt( $ch, CURLOPT_HEADER, true ); - curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); - - curl_setopt( $ch, CURLOPT_USERAGENT, $_GET['user_agent'] ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] ); - - list( $header, $contents ) = preg_split( '/([\r\n][\r\n])\\1/', curl_exec( $ch ), 2 ); - - $status = curl_getinfo( $ch ); - - curl_close( $ch ); -} - -// Split header text into an array. -$header_text = preg_split( '/[\r\n]+/', $header ); - -if ( $_GET['mode'] == 'native' ) { - if ( !$enable_native ) { - $contents = 'ERROR: invalid mode'; - $status = array( 'http_code' => 'ERROR' ); - } - - // Propagate headers to response. - foreach ( $header_text as $header ) { - if ( preg_match( '/^(?:Content-Type|Content-Language|Set-Cookie):/i', $header ) ) { - header( $header ); - } - } - - print $contents; - -} else { - - // $data will be serialized into JSON data. - $data = array(); - - // Propagate all HTTP headers into the JSON data object. - if ( $_GET['full_headers'] ) { - $data['headers'] = array(); - - foreach ( $header_text as $header ) { - preg_match( '/^(.+?):\s+(.*)$/', $header, $matches ); - if ( $matches ) { - $data['headers'][ $matches[1] ] = $matches[2]; - } - } - } - - // Propagate all cURL request / response info to the JSON data object. - if ( $_GET['full_status'] ) { - $data['status'] = $status; - } else { - $data['status'] = array(); - $data['status']['http_code'] = $status['http_code']; - } - - // Set the JSON data object contents, decoding it from JSON if possible. - $decoded_json = json_decode( $contents ); - $data['contents'] = $decoded_json ? $decoded_json : $contents; - - // Generate appropriate content-type header. - $is_xhr = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; - header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) ); - header('Access-Control-Allow-Origin: *'); - - // Get JSONP callback. - $jsonp_callback = $enable_jsonp && isset($_GET['callback']) ? $_GET['callback'] : null; - - // Generate JSON/JSONP string - $json = json_encode( $data ); - - print $jsonp_callback ? "$jsonp_callback($json)" : $json; - -} - -?> diff --git a/branches/firebug1.5/sandbox/HelloModule/app/chrome.manifest b/branches/firebug1.5/sandbox/HelloModule/app/chrome.manifest deleted file mode 100644 index 1b5407a2..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/chrome.manifest +++ /dev/null @@ -1,7 +0,0 @@ -content hellomodule content/ -skin hellomodule classsic/1.0 skin/classic/ - -resource hellomodule modules/ - -overlay chrome://firebug/content/start-button/startButtonOverlay.xul chrome://hellomodule/content/helloModule.xul - diff --git a/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.js b/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.js deleted file mode 100644 index da5ee941..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.js +++ /dev/null @@ -1,88 +0,0 @@ -/* See license.txt for terms of usage */ - -FBL.ns(function() { with (FBL) { - -// ********************************************************************************************* // -// Constants - -var Ci = Components.interfaces; -var Cc = Components.classes; -var Cu = Components.utils; - -// Get ModuleLoader implementation (it's Mozilla JS code module) -Components.utils["import"]("resource://firebug/moduleLoader.js"); - -// ********************************************************************************************* // -// Firebug Panel - -var panelName = "HelloModule"; - -/** - * Panel implementation - */ -function HelloModulePanel() {} -HelloModulePanel.prototype = extend(Firebug.Panel, -{ - name: panelName, - title: "Hello Module!", - - initialize: function() - { - Firebug.Panel.initialize.apply(this, arguments); - - this.require = (new ModuleLoader(null, { - context:"resource://hellomodule/", - baseUrl:"resource://hellomodule/"} - )).loadDepsThenCallback; - }, - - show: function(state) - { - var self = this; - this.require(["dom-tree.js"], function(module) - { - var domTree = new module.DomTree(FBL.unwrapObject(self.context.window)); - domTree.append(self.panelNode); - }); - } -}); - -// ********************************************************************************************* // - -Firebug.HelloModuleModel = extend(Firebug.Module, -{ - onLoadModules: function(context) - { - // Create Module Loader implementation for specific path. - var require = (new ModuleLoader(null, { - context:"resource://hellomodule/", - baseUrl:"resource://hellomodule/"} - )).loadDepsThenCallback; - - require(["dom-tree.js", "add.js", "subtract.js"], - function(DomTree, AddModule, SubtractModule) - { - try - { - FBTrace.sysout("helloModule; All modules loaded using relative URLs!"); - FBTrace.sysout("1 + 2 = " + AddModule.add(1, 2)); - FBTrace.sysout("3 - 1 = " + SubtractModule.subtract(3, 1)); - } - catch (err) - { - FBTrace.sysout("helloModule; EXCEPTION " + err, err); - } - } - ); - } -}); - -// ********************************************************************************************* // -// Registration - -Firebug.registerPanel(HelloModulePanel); -Firebug.registerModule(Firebug.HelloModuleModel); -Firebug.registerStylesheet("chrome://hellomodule/skin/domTree.css"); - -// ********************************************************************************************* // -}}); diff --git a/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.xul b/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.xul deleted file mode 100644 index 3b672326..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/content/helloModule.xul +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - diff --git a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule.js b/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule.js deleted file mode 100644 index 4033c2e6..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule.js +++ /dev/null @@ -1,33 +0,0 @@ -/* See license.txt for terms of usage */ - -define(["FBL", "FBL/Domplate/DomTree" /*,"FBL/Plugin/Test"*/], function(FBL) { with (FBL) { - -//************************************************************************************************* -// The Application - -function HelloModuleApp() -{ -} - -/** - * The main application object. - */ -HelloModuleApp.prototype = -/** @lends HelloModuleApp */ -{ - initialize: function() - { - var content = document.getElementById("content"); - this.domTree = new Domplate.DomTree(window); - this.domTree.append(content); - } -}; - -//************************************************************************************************* -// Initialization - -var theApp = new HelloModuleApp(); -theApp.initialize(); - -//************************************************************************************************* -}}); diff --git a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.html b/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.html deleted file mode 100644 index 7c93a20a..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - Hello Module - - -
                                - - - - - diff --git a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.js b/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.js deleted file mode 100644 index 7e84c469..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/app/webapp/helloModule2.js +++ /dev/null @@ -1,33 +0,0 @@ -/* See license.txt for terms of usage */ - -define(["FBL", "Firebug", "Domplate/DomTree"], function(FBL) { with (FBL) { - -//************************************************************************************************* -// The Application - -function HelloModuleApp() -{ -} - -/** - * The main application object. - */ -HelloModuleApp.prototype = -/** @lends HelloModuleApp */ -{ - initialize: function() - { - var content = document.getElementById("content"); - this.domTree = new Domplate.DomTree(window); - this.domTree.append(content); - } -}; - -//************************************************************************************************* -// Initialization - -var theApp = new HelloModuleApp(); -theApp.initialize(); - -//************************************************************************************************* -}}); diff --git a/branches/firebug1.5/sandbox/HelloModule/build-config.js b/branches/firebug1.5/sandbox/HelloModule/build-config.js deleted file mode 100644 index 1802bdf8..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/build-config.js +++ /dev/null @@ -1,21 +0,0 @@ -({ - appDir: "app", - baseUrl: "modules", - dir: "app-build", - - // Comment out the optimize line if you want - // the code minified by Closure Compiler using - // the "simple" optimizations mode - //optimize: "simple", - optimize: "none", - - optimizeCss: "standard", - - modules: [ - { - name: "dom-tree", - include: [ - ] - } - ] -}) diff --git a/branches/firebug1.5/sandbox/HelloModule/build.bat b/branches/firebug1.5/sandbox/HelloModule/build.bat deleted file mode 100644 index 25754e9b..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/build.bat +++ /dev/null @@ -1 +0,0 @@ -requirejs\build\build.bat build-config.js diff --git a/branches/firebug1.5/sandbox/HelloModule/readme.txt b/branches/firebug1.5/sandbox/HelloModule/readme.txt deleted file mode 100644 index 74303c64..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/readme.txt +++ /dev/null @@ -1,8 +0,0 @@ - -In order to test the web part of this application run node server (within the app directory) -as follows: -$node server.js - -Then navigate your browser to: -http://localhost:8070/webapp/helloModule.html - diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/LICENSE b/branches/firebug1.5/sandbox/HelloModule/requirejs/LICENSE deleted file mode 100644 index 895df9f3..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/LICENSE +++ /dev/null @@ -1,58 +0,0 @@ -RequireJS is released under two licenses: new BSD, and MIT. You may pick the -license that best suits your development needs. The text of both licenses are -provided below. - - -The "New" BSD License: ----------------------- - -Copyright (c) 2010, The Dojo Foundation -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the Dojo Foundation nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - - -MIT License ------------ - -Copyright (c) 2010, The Dojo Foundation - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.bat b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.bat deleted file mode 100644 index 3d7effc7..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.bat +++ /dev/null @@ -1,2 +0,0 @@ -set MYDIR=%~dp0 -java -classpath %MYDIR%/lib/rhino/js.jar;%MYDIR%/lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main %MYDIR%/build.js %MYDIR% %* diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.js deleted file mode 100644 index 0baf5cf2..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/* - * This file will optimize files that can be loaded via require.js into one file. - * This file needs Rhino to require, and if the Closure compiler is used to minify - * files, Java 6 is required. - * - * Call this file like so: - * java -jar path/to/js.jar build.js directory/containing/build.js/ build.js - * - * General use: - * - * Create a build.js file that has the build options you want and pass that - * build file to this file to do the build. See example.build.js for more information. - */ - -/*jslint regexp: false, nomen: false, plusplus: false */ -/*global load: false, print: false, quit: false, logger: false, - fileUtil: false, lang: false, pragma: false, optimize: false, build: false, - java: false, Packages: false */ - -"use strict"; -var require; - -(function (args) { - var requireBuildPath = args[0]; - if (requireBuildPath.charAt(requireBuildPath.length - 1) !== "/") { - requireBuildPath += "/"; - } - load(requireBuildPath + "jslib/build.js"); - build(args); - -}(Array.prototype.slice.call(arguments))); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.sh b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.sh deleted file mode 100644 index b40ff49d..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -MYDIR=`cd \`dirname "$0"\`; pwd` -java -classpath $MYDIR/lib/rhino/js.jar:$MYDIR/lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main $MYDIR/build.js $MYDIR "$@" diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.bat b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.bat deleted file mode 100644 index 63ed769e..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.bat +++ /dev/null @@ -1,2 +0,0 @@ -set MYDIR=%~dp0 -java -classpath %MYDIR%/lib/rhino/js.jar;%MYDIR%/lib/closure/compiler.jar org.mozilla.javascript.tools.debugger.Main %MYDIR%/build.js %MYDIR% %* diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.sh b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.sh deleted file mode 100644 index 257513cb..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/buildebug.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -MYDIR=`cd \`dirname "$0"\`; pwd` -java -classpath $MYDIR/lib/rhino/js.jar:$MYDIR/lib/closure/compiler.jar org.mozilla.javascript.tools.debugger.Main $MYDIR/build.js $MYDIR "$@" diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/example.build.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/example.build.js deleted file mode 100644 index fed1ac64..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/example.build.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - * This is an example build file that demonstrates how to use the build system for - * require.js. - * - * THIS BUILD FILE WILL NOT WORK. It is referencing paths that probably - * do not exist on your machine. Just use it as a guide. - * - * - */ - -({ - //The top level directory that contains your app. If this option is used - //then it assumed your scripts are in a subdirectory under this path. - //This option is not required. If it is not specified, then baseUrl - //below is the anchor point for finding things. If this option is specified, - //then all the files from the app directory will be copied to the dir: - //output area, and baseUrl will assume to be a relative path under - //this directory. - appDir: "some/path/", - - //By default, all modules are located relative to this path. If baseUrl - //is not explicitly set, then all modules are loaded relative to - //the directory that holds the build file. - baseUrl: "./", - - //Set paths for modules. If relative paths, set relative to baseUrl above. - paths: { - "foo.bar": "../scripts/foo/bar", - "baz": "../another/path/baz" - }, - - //The directory path to save the output. If not specified, then - //the path will default to be a directory called "build" as a sibling - //to the build file. All relative paths are relative to the build file. - dir: "../some/path", - - //Used to inline i18n resources into the built file. If no locale - //is specified, i18n resources will not be inlined. Only one locale - //can be inlined for a build. Root bundles referenced by a build layer - //will be included in a build layer regardless of locale being set. - locale: "en-us", - - //How to optimize all the JS files in the build output directory. - //Right now only the following values - //are supported (default is to not do any optimization): - //- "closure": uses Google's Closure Compiler in simple optimization - //mode to minify the code. - //- "closure.keepLines": Same as closure option, but keeps line returns - //in the minified files. - //- "none": no minification will be done. - optimize: "closure", - - //Allow CSS optimizations. Allowed values: - //- "standard": @import inlining, comment removal and line returns. - //Removing line returns may have problems in IE, depending on the type - //of CSS. - //- "standard.keepLines": like "standard" but keeps line returns. - //- "none": skip CSS optimizations. - optimizeCss: "standard.keepLines", - - //If optimizeCss is in use, a list of of files to ignore for the @import - //inlining. The value of this option should be a comma separated list - //of CSS file names to ignore. The file names should match whatever - //strings are used in the @import calls. - cssImportIgnore: null, - - //Inlines the text for any text! dependencies, to avoid the separate - //async XMLHttpRequest calls to load those dependencies. - inlineText: true, - - //Allow "use strict"; be included in the RequireJS files. - //Default is false because there are not many browsers that can properly - //process and give errors on code for ES5 strict mode, - //and there is a lot of legacy code that will not work in strict mode. - useStrict: false, - - //Specify build pragmas. If the source files contain comments like so: - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - //>>excludeEnd("requireExcludeModify"); - //Then the comments that start with //>> are the build pragmas. - //excludeStart/excludeEnd and includeStart/includeEnd work, and the - //the pragmas value to the includeStart or excludeStart lines - //is evaluated to see if the code between the Start and End pragma - //lines should be included or excluded. - pragmas: { - //Indicates require will be included with jquery. - jquery: true, - //Remove require.modify() code - requireExcludeModify: true, - //Remove plugin support from require. The i18n! order! and - //text! extensions will not work. - requireExcludePlugin: true, - //Remove the page loaded detection. - requireExcludePageLoad: true - }, - - //Skip processing for pragmas. - skipPragmas: false, - - //If execModules is true, each script is execute in - //full to find the require calls/dependencies, but the code is executed - //in the Rhino JavaScript environment. Set this value to true only - //if the code follows the strict require pattern of wrapping all - //code in a require callback. If you are using jQuery, Prototype or MooTools - //you should not set this value to true. Default is false. - execModules: false, - - //If skipModuleInsertion is false, then files that do not use require.def - //to define modules will get a require.def() placeholder inserted for them. - //Also, require.pause/resume calls will be inserted. - //Set it to true to avoid this. This is useful if you are building code that - //does not use require() in the built project or in the JS files, but you - //still want to use the optimization tool from RequireJS to concatenate modules - //together. - skipModuleInsertion: false, - - //List the modules that will be optimized. All their immediate and deep - //dependencies will be included in the module's file when the build is - //done. If that module or any of its dependencies includes i18n bundles, - //only the root bundles will be included unless the locale: section is set above. - modules: [ - //Just specifying a module name means that module will be converted into - //a built file that contains all of its dependencies. If that module or any - //of its dependencies includes i18n bundles, they may not be included in the - //built file unless the locale: section is set above. - { - name: "foo/bar/bop", - - //Should the contents of require.js be included in the optimized module. - //Defaults to false. - includeRequire: true, - - //For build profiles that contain more than one modules entry, - //allow overrides for the properties that set for the whole build, - //for example a different set of pragmas for this module. - //The override's value is an object that can - //contain any of the other build options in this file. - override: { - pragmas: { - requireExcludeModify: true - } - } - }, - - //This module entry combines all the dependencies of foo/bar/bop and foo/bar/bee - //and any of their dependencies into one file. - { - name: "foo/bar/bop", - include: ["foo/bar/bee"] - }, - - //This module entry combines all the dependencies of foo/bar/bip into one file, - //but excludes foo/bar/bop and its dependencies from the built file. If you want - //to exclude a module that is also another module being optimized, it is more - //efficient if you define that module optimization entry before using it - //in an exclude array. - { - name: "foo/bar/bip", - exclude: [ - "foo/bar/bop" - ] - }, - - //This module entry shows how to specify a specific module be excluded - //from the built module file. excludeShallow means just exclude that - //specific module, but if that module has nested dependencies that are - //part of the built file, keep them in there. This is useful during - //development when you want to have a fast bundled set of modules, but - //just develop/debug one or two modules at a time. - { - name: "foo/bar/bin", - excludeShallow: [ - "foo/bar/bot" - ] - } - ] -}) - diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/build.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/build.js deleted file mode 100644 index ada1ef50..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/build.js +++ /dev/null @@ -1,698 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint regexp: false, plusplus: false, nomen: false */ -/*global java: false, lang: false, fileUtil: false, optimize: false, - load: false, quit: false, print: false, logger: false, require: false, - pragma: false */ - -"use strict"; - -var build, buildBaseConfig; -(function () { - buildBaseConfig = { - requireBuildPath: "../", - appDir: "", - pragmas: {}, - paths: {}, - optimize: "closure", - optimizeCss: "standard.keepLines", - inlineText: true, - execModules: false - }; - - build = function (args) { - var requireBuildPath, buildFile, baseUrlFile, buildPaths, deps, fileName, fileNames, - prop, props, paths, path, i, fileContents, buildFileContents = "", - doClosure, requireContents, pluginContents, pluginBuildFileContents, - baseConfig, override, builtRequirePath, cmdConfig, config, - modules, module, moduleName, builtModule, srcPath; - - if (!args || args.length < 2) { - print("java -jar path/to/js.jar build.js directory/containing/build.js/ build.js\n" + - "where build.js is the name of the build file (see example.build.js for hints on how to make a build file."); - quit(); - } - - //First argument to this script should be the directory on where to find this script. - //This path should end in a slash. - requireBuildPath = args[0]; - if (requireBuildPath.charAt(requireBuildPath.length - 1) !== "/") { - requireBuildPath += "/"; - } - - ["lang", "logger", "fileUtil", "parse", "optimize", "pragma", "build"].forEach(function (path) { - load(requireBuildPath + "jslib/" + path + ".js"); - }); - - //Next args can include a build file path as well as other build args. - //build file path comes first. If it does not contain an = then it is - //a build file path. Otherwise, just all build args. - if (args[1].indexOf("=") === -1) { - buildFile = args[1]; - args.splice(0, 2); - } else { - args.splice(0, 1); - } - - //Remaining args are options to the build - cmdConfig = build.convertArrayToObject(args); - cmdConfig.buildFile = buildFile; - cmdConfig.requireBuildPath = requireBuildPath; - - config = build.createConfig(cmdConfig); - paths = config.paths; - - //Load require.js with the build patches. - load(config.requireUrl); - load(requireBuildPath + "jslib/requirePatch.js"); - - if (!config.out && !config.cssIn) { - //This is not just a one-off file build but a full build profile, with - //lots of files to process. - - //First copy all the baseUrl content - fileUtil.copyDir((config.appDir || config.baseUrl), config.dir, /\w/, true); - - //Adjust baseUrl if config.appDir is in play, and set up build output paths. - buildPaths = {}; - if (config.appDir) { - //All the paths should be inside the appDir - buildPaths = paths; - } else { - //If no appDir, then make sure to copy the other paths to this directory. - for (prop in paths) { - if (paths.hasOwnProperty(prop)) { - //Set up build path for each path prefix. - buildPaths[prop] = prop.replace(/\./g, "/"); - - //Make sure source path is fully formed with baseUrl, - //if it is a relative URL. - srcPath = paths[prop]; - if (srcPath.indexOf('/') !== 0 && srcPath.indexOf(':') === -1) { - srcPath = config.baseUrl + srcPath; - } - - //Copy files to build area. Copy all files (the /\w/ regexp) - fileUtil.copyDir(srcPath, config.dirBaseUrl + buildPaths[prop], /\w/, true); - } - } - } - } - - //Figure out source file location for each module layer. Do this by seeding require - //with source area configuration. This is needed so that later the module layers - //can be manually copied over to the source area, since the build may be - //require multiple times and the above copyDir call only copies newer files. - require({ - baseUrl: config.baseUrl, - paths: paths - }); - modules = config.modules; - - if (modules) { - modules.forEach(function (module) { - if (module.name) { - module._sourcePath = require.nameToUrl(module.name, null, require.s.ctxName); - //If the module does not exist, and this is not a "new" module layer, - //as indicated by a true "create" property on the module, then throw an error. - if (!(new java.io.File(module._sourcePath)).exists() && !module.create) { - throw new Error("ERROR: module path does not exist: " + - module._sourcePath + " for module named: " + module.name + - ". Path is relative to: " + (new java.io.File('.')).getAbsolutePath()); - } - } - }); - } - - if (config.out) { - //Just set up the _buildPath for the module layer. - require(config); - if (!config.cssIn) { - config.modules[0]._buildPath = config.out; - } - } else if (!config.cssIn) { - //Now set up the config for require to use the build area, and calculate the - //build file locations. Pass along any config info too. - baseConfig = { - baseUrl: config.dirBaseUrl, - paths: buildPaths - }; - lang.mixin(baseConfig, config); - require(baseConfig); - - if (modules) { - modules.forEach(function (module) { - if (module.name) { - module._buildPath = require.nameToUrl(module.name, null, require.s.ctxName); - if (!module.create) { - fileUtil.copyFile(module._sourcePath, module._buildPath); - } - } - }); - } - } - - if (modules) { - //For each module layer, call require to calculate dependencies. - modules.forEach(function (module) { - module.layer = build.traceDependencies(module, config); - }); - - //Now build up shadow layers for anything that should be excluded. - //Do this after tracing dependencies for each module, in case one - //of those modules end up being one of the excluded values. - modules.forEach(function (module) { - if (module.exclude) { - module.excludeLayers = []; - module.exclude.forEach(function (exclude, i) { - //See if it is already in the list of modules. - //If not trace dependencies for it. - module.excludeLayers[i] = build.findBuildModule(exclude, modules) || - {layer: build.traceDependencies({name: exclude}, config)}; - }); - } - }); - - modules.forEach(function (module) { - if (module.exclude) { - //module.exclude is an array of module names. For each one, - //get the nested dependencies for it via a matching entry - //in the module.excludeLayers array. - module.exclude.forEach(function (excludeModule, i) { - var excludeLayer = module.excludeLayers[i].layer, map = excludeLayer.buildPathMap, prop; - for (prop in map) { - if (map.hasOwnProperty(prop)) { - build.removeModulePath(prop, map[prop], module.layer); - } - } - }); - } - if (module.excludeShallow) { - //module.excludeShallow is an array of module names. - //shallow exclusions are just that module itself, and not - //its nested dependencies. - module.excludeShallow.forEach(function (excludeShallowModule) { - var path = module.layer.buildPathMap[excludeShallowModule]; - if (path) { - build.removeModulePath(excludeShallowModule, path, module.layer); - } - }); - } - - //Flatten them and collect the build output for each module. - builtModule = build.flattenModule(module, module.layer, config); - fileUtil.saveUtf8File(module._buildPath, builtModule.text); - buildFileContents += builtModule.buildText; - }); - } - - //Do other optimizations. - if (config.out && !config.cssIn) { - //Just need to worry about one JS file. - fileName = config.modules[0]._buildPath; - optimize.jsFile(fileName, fileName, config); - } else if (!config.cssIn) { - //Normal optimizations across modules. - - //JS optimizations. - fileNames = fileUtil.getFilteredFileList(config.dir, /\.js$/, true); - for (i = 0; (fileName = fileNames[i]); i++) { - optimize.jsFile(fileName, fileName, config); - } - - //CSS optimizations - if (config.optimizeCss && config.optimizeCss !== "none") { - optimize.css(config.dir, config); - } - - //All module layers are done, write out the build.txt file. - fileUtil.saveUtf8File(config.dir + "build.txt", buildFileContents); - } - - //If just have one CSS file to optimize, do that here. - if (config.cssIn) { - optimize.cssFile(config.cssIn, config.out, config); - } - - //Print out what was built into which layers. - if (buildFileContents) { - print(buildFileContents); - } - - }; - - /** - * Converts an array that has String members of "name=value" - * into an object, where the properties on the object are the names in the array. - * Also converts the strings "true" and "false" to booleans for the values. - * member name/value pairs, and converts some comma-separated lists into - * arrays. - * @param {Array} ary - */ - build.convertArrayToObject = function (ary) { - var result = {}, i, separatorIndex, prop, value, - needArray = { - "include": true, - "exclude": true, - "excludeShallow": true - }; - - for (i = 0; i < ary.length; i++) { - separatorIndex = ary[i].indexOf("="); - if (separatorIndex === -1) { - throw "Malformed name/value pair: [" + ary[i] + "]. Format should be name=value"; - } - - value = ary[i].substring(separatorIndex + 1, ary[i].length); - if (value === "true") { - value = true; - } else if (value === "false") { - value = false; - } - - prop = ary[i].substring(0, separatorIndex); - - //Convert to array if necessary - if (needArray[prop]) { - value = value.split(","); - } - - result[prop] = value; - } - return result; //Object - }; - - build.makeAbsPath = function (path, absFilePath) { - //Add abspath if necessary. If path starts with a slash or has a colon, - //then already is an abolute path. - if (path.indexOf('/') !== 0 && path.indexOf(':') === -1) { - path = absFilePath + - (absFilePath.charAt(absFilePath.length - 1) === '/' ? '' : '/') + - path; - } - return path; - }; - - /** - * Creates a config object for an optimization build. - * It will also read the build profile if it is available, to create - * the configuration. - * - * @param {Object} cfg config options that take priority - * over defaults and ones in the build file. These options could - * be from a command line, for instance. - * - * @param {Object} the created config object. - */ - build.createConfig = function (cfg) { - /*jslint evil: true */ - var config = {}, baseUrl, buildFileContents, buildFileConfig, - paths, props, i, prop, buildFile, absFilePath, originalBaseUrl; - - lang.mixin(config, buildBaseConfig); - lang.mixin(config, cfg, true); - - //Normalize build directory location, and set up path to require.js - if (config.requireBuildPath.charAt(config.requireBuildPath.length - 1) !== "/") { - config.requireBuildPath += "/"; - //Also adjust the override config params, since it - //may be re-applied later after reading the build file. - if (cfg.requireBuildPath) { - cfg.requireBuildPath = config.requireBuildPath; - } - } - config.requireUrl = fileUtil.absPath(java.io.File(cfg.requireBuildPath + "../require.js")); - - if (config.buildFile) { - //A build file exists, load it to get more config. - buildFile = new java.io.File(config.buildFile).getAbsoluteFile(); - - //Find the build file, and make sure it exists, if this is a build - //that has a build profile, and not just command line args with an in=path - if (!buildFile.exists()) { - throw new Error("ERROR: build file does not exist: " + buildFile.getAbsolutePath()); - } - - absFilePath = config.baseUrl = fileUtil.absPath(buildFile.getParentFile()).replace(lang.backSlashRegExp, '/'); - config.dir = config.baseUrl + "/build/"; - - //Load build file options. - buildFileContents = fileUtil.readFile(buildFile); - buildFileConfig = eval("(" + buildFileContents + ")"); - lang.mixin(config, buildFileConfig, true); - - //Re-apply the override config values, things like command line - //args should take precedence over build file values. - lang.mixin(config, cfg, true); - } else { - if (!config.out && !config.cssIn) { - throw new Error("ERROR: 'out' or 'cssIn' option missing."); - } - if (!config.out) { - throw new Error("ERROR: 'out' option missing."); - } else { - config.out = config.out.replace(lang.backSlashRegExp, "/"); - } - - if (!config.cssIn && !cfg.baseUrl) { - throw new Error("ERROR: 'baseUrl' option missing."); - } - - //In this scenario, the absFile path is current directory - absFilePath = (String((new java.io.File('.')).getAbsolutePath())).replace(lang.backSlashRegExp, '/'); - } - - if (config.out && !config.cssIn) { - //Just one file to optimize. - - //Set up dummy module layer to build. - config.modules = [ - { - name: config.name, - out: config.out, - include: config.include, - exclude: config.exclude, - excludeShallow: config.excludeShallow - } - ]; - - if (config.includeRequire) { - config.modules[0].includeRequire = true; - } - - //Does not have a build file, so set up some defaults. - //Optimizing CSS should not be allowed, unless explicitly - //asked for on command line. In that case the only task is - //to optimize a CSS file. - if (!cfg.optimizeCss) { - config.optimizeCss = "none"; - } - } - - //Adjust the path properties as appropriate. - //First make sure build paths use front slashes and end in a slash, - //and make sure they are aboslute paths. - props = ["appDir", "dir", "baseUrl"]; - for (i = 0; (prop = props[i]); i++) { - if (config[prop]) { - config[prop] = config[prop].replace(lang.backSlashRegExp, "/"); - if (config[prop].charAt(config[prop].length - 1) !== "/") { - config[prop] += "/"; - } - - //Add abspath if necessary. - if (prop === "baseUrl") { - originalBaseUrl = config.baseUrl; - if (config.appDir) { - //If baseUrl with an appDir, the baseUrl is relative to - //the appDir, *not* the absFilePath. appDir and dir are - //made absolute before baseUrl, so this will work. - config.baseUrl = build.makeAbsPath(originalBaseUrl, config.appDir); - //Set up dir output baseUrl. - config.dirBaseUrl = build.makeAbsPath(originalBaseUrl, config.dir); - } else { - //The dir output baseUrl is same as regular baseUrl, both - //relative to the absFilePath. - config.baseUrl = build.makeAbsPath(config[prop], absFilePath); - config.dirBaseUrl = config.dir; - } - } else { - config[prop] = build.makeAbsPath(config[prop], absFilePath); - } - } - } - - //Make sure some other paths are absolute. - props = ["out", "cssIn"]; - for (i = 0; (prop = props[i]); i++) { - if (config[prop]) { - config[prop] = build.makeAbsPath(config[prop], absFilePath); - } - } - - //Make sure paths has a setting for require, so support plugins - //can be loaded for the build. - paths = config.paths; - if (!paths.require) { - paths.require = config.requireUrl.substring(0, config.requireUrl.lastIndexOf("/")) + "/require"; - } - - return config; - }; - - /** - * finds the module being built/optimized with the given moduleName, - * or returns null. - * @param {String} moduleName - * @param {Array} modules - * @returns {Object} the module object from the build profile, or null. - */ - build.findBuildModule = function (moduleName, modules) { - var i, module; - for (i = 0; (module = modules[i]); i++) { - if (module.name === moduleName) { - return module; - } - } - return null; - }; - - /** - * Removes a module name and path from a layer, if it is supposed to be - * excluded from the layer. - * @param {String} moduleName the name of the module - * @param {String} path the file path for the module - * @param {Object} layer the layer to remove the module/path from - */ - build.removeModulePath = function (module, path, layer) { - var index = layer.buildFilePaths.indexOf(path); - if (index !== -1) { - layer.buildFilePaths.splice(index, 1); - } - - //Take it out of the specified modules. Specified modules are mostly - //used to find require modifiers. - delete layer.specified[module]; - }; - - /** - * Uses the module build config object to trace the dependencies for the - * given module. - * - * @param {Object} module the module object from the build config info. - * @param {Object} the build config object. - * - * @returns {Object} layer information about what paths and modules should - * be in the flattened module. - */ - build.traceDependencies = function (module, config) { - var include, override, url, layer, prop, - context = require.s.contexts[require.s.ctxName], - baseConfig = context.config; - - //Reset some state set up in requirePatch.js, and clean up require's - //current context. - require._buildReset(); - - //Put back basic config - require(baseConfig); - - logger.trace("\nTracing dependencies for: " + (module.name || module.out)); - include = module.name && !module.create ? [module.name] : []; - if (module.include) { - include = include.concat(module.include); - } - - //If there are overrides to basic config, set that up now.; - if (module.override) { - override = lang.delegate(baseConfig); - lang.mixin(override, module.override, true); - require(override); - } - - //Figure out module layer dependencies by calling require to do the work. - require(include); - - //Pull out the layer dependencies. Do not use the old context - //but grab the latest value from inside require() since it was reset - //since our last context reference. - layer = require._layer; - layer.specified = require.s.contexts[require.s.ctxName].specified; - - //Add any other files that did not have an explicit name on them. - //These are files that do not call back into require when loaded. - for (prop in layer.buildPathMap) { - if (layer.buildPathMap.hasOwnProperty(prop)) { - url = layer.buildPathMap[prop]; - //Always store the url to module name mapping for use later, - //particularly for anonymous modules and tracking down files that - //did not call require.def to define a module - layer.buildFileToModule[url] = prop; - - if (!layer.loadedFiles[url]) { - //Do not add plugins to build file paths since they will - //be added later, near the top of the module layer. - if (prop.indexOf("require/") !== 0) { - layer.buildFilePaths.push(url); - } - layer.loadedFiles[url] = true; - } - } - } - - //Reset config - if (module.override) { - require(baseConfig); - } - - return layer; - }; - - /** - * Uses the module build config object to create an flattened version - * of the module, with deep dependencies included. - * - * @param {Object} module the module object from the build config info. - * - * @param {Object} layer the layer object returned from build.traceDependencies. - * - * @param {Object} the build config object. - * - * @returns {Object} with two properties: "text", the text of the flattened - * module, and "buildText", a string of text representing which files were - * included in the flattened module text. - */ - build.flattenModule = function (module, layer, config) { - var buildFileContents = "", requireContents = "", - pluginContents = "", pluginBuildFileContents = "", includeRequire, - anonDefRegExp = /(require\s*\.\s*def|define)\s*\(\s*(\[|f|\{)/, - prop, path, reqIndex, fileContents, currContents, - i, moduleName, specified, deps; - - //Use override settings, particularly for pragmas - if (module.override) { - config = lang.delegate(config); - lang.mixin(config, module.override, true); - } - - //Start build output for the module. - buildFileContents += "\n" + - (config.dir ? module._buildPath.replace(config.dir, "") : module._buildPath) + - "\n----------------\n"; - - //If the file wants require.js added to the module, add it now - requireContents = ""; - pluginContents = ""; - pluginBuildFileContents = ""; - includeRequire = false; - if ("includeRequire" in module) { - includeRequire = module.includeRequire; - } - if (includeRequire) { - requireContents = pragma.process(config.requireUrl, fileUtil.readFile(config.requireUrl), config); - buildFileContents += "require.js\n"; - } - - //Check for any plugins loaded, and hoist to the top, but below - //the require() definition. - specified = layer.specified; - for (prop in specified) { - if (specified.hasOwnProperty(prop)) { - if (prop.indexOf("require/") === 0) { - path = layer.buildPathMap[prop]; - if (path) { - pluginBuildFileContents += path.replace(config.dir, "") + "\n"; - pluginContents += pragma.process(path, fileUtil.readFile(path), config); - } - } - } - } - if (includeRequire) { - //require.js will be included so the plugins will appear right after it. - buildFileContents += pluginBuildFileContents; - } - - //If there was an existing file with require in it, hoist to the top. - if (!includeRequire && layer.existingRequireUrl) { - reqIndex = layer.buildFilePaths.indexOf(layer.existingRequireUrl); - if (reqIndex !== -1) { - layer.buildFilePaths.splice(reqIndex, 1); - layer.buildFilePaths.unshift(layer.existingRequireUrl); - } - } - - //Write the built module to disk, and build up the build output. - fileContents = ""; - for (i = 0; (path = layer.buildFilePaths[i]); i++) { - moduleName = layer.buildFileToModule[path]; - - //Add the contents but remove any pragmas. - currContents = pragma.process(path, fileUtil.readFile(path), config); - - //If anonymous module, insert the module name. - currContents = currContents.replace(anonDefRegExp, function (match, callName, suffix) { - layer.modulesWithNames[moduleName] = true; - - //Look for CommonJS require calls inside the function if this is - //an anonymous define/require.def call that just has a function registered. - deps = null; - if (suffix.indexOf('f') !== -1) { - deps = parse.getAnonDeps(path, currContents); - if (deps.length) { - deps = deps.map(function (dep) { - return "'" + dep + "'"; - }); - } else { - deps = null; - } - } - - //Adust module name if it is for a plugin - if (require.s.contexts._.defPlugin[moduleName]) { - moduleName = require.s.contexts._.defPlugin[moduleName] + '!' + moduleName; - //Mark that it is a module with a name so do not need - //a stub name insertion for it later. - layer.modulesWithNames[moduleName] = true; - } - - return "define('" + moduleName + "'," + - (deps ? ('[' + deps.toString() + '],') : '') + - suffix; - }); - - fileContents += currContents; - - buildFileContents += path.replace(config.dir, "") + "\n"; - //Some files may not have declared a require module, and if so, - //put in a placeholder call so the require does not try to load them - //after the module is processed. - //If we have a name, but no defined module, then add in the placeholder. - if (moduleName && !layer.modulesWithNames[moduleName] && !config.skipModuleInsertion) { - fileContents += 'define("' + moduleName + '", function(){});\n'; - } - - //If we have plugins but are not injecting require.js, - //then need to place the plugins after the require definition, - //if it was found. - if (layer.existingRequireUrl === path && !includeRequire) { - fileContents += pluginContents; - buildFileContents += pluginBuildFileContents; - pluginContents = ""; - } - } - - //Add the require file contents to the head of the file. - fileContents = (requireContents ? requireContents + "\n" : "") + - (pluginContents ? pluginContents + "\n" : "") + - fileContents; - - return { - text: fileContents, - buildText: buildFileContents - }; - }; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commandLine.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commandLine.js deleted file mode 100644 index e40f93e5..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commandLine.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint */ -/*global Packages: false */ -"use strict"; - -var commandLine = {}; -(function () { - var runtime = Packages.java.lang.Runtime.getRuntime(); - - /** - * Executes a command on the command line. May not work right in - * Windows environments, except maybe via something like cygwin. - * @param {String} command the command to run on the command line. - */ - commandLine.exec = function (command) { - var process = runtime.exec(["/bin/sh", "-c", command]); - process.waitFor(); - }; -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commonJs.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commonJs.js deleted file mode 100644 index 7e6c99fb..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/commonJs.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: false, regexp: false */ -/*global Packages: false, logger: false, fileUtil: false */ -"use strict"; - -var commonJs = { - depRegExp: /require\s*\(\s*["']([\w-_\.\/]+)["']\s*\)/g, - - //Set this to false in non-rhino environments. If rhino, then it uses - //rhino's decompiler to remove comments before looking for require() calls, - //otherwise, it will use a crude regexp approach to remove comments. The - //rhino way is more robust, but he regexp is more portable across environments. - useRhino: true, - - //Set to false if you do not want this file to log. Useful in environments - //like node where you want the work to happen without noise. - useLog: true, - - //Set to true to see full converted module contents logged to output. - logConverted: false, - - convertDir: function (commonJsPath, savePath, prefix) { - //Normalize prefix - prefix = prefix ? prefix + "/" : ""; - - var fileList, i, - jsFileRegExp = /\.js$/, - fileName, moduleName, convertedFileName, fileContents; - - //Get list of files to convert. - fileList = fileUtil.getFilteredFileList(commonJsPath, /\w/, true); - - //Normalize on front slashes and make sure the paths do not end in a slash. - commonJsPath = commonJsPath.replace(/\\/g, "/"); - savePath = savePath.replace(/\\/g, "/"); - if (commonJsPath.charAt(commonJsPath.length - 1) === "/") { - commonJsPath = commonJsPath.substring(0, commonJsPath.length - 1); - } - if (savePath.charAt(savePath.length - 1) === "/") { - savePath = savePath.substring(0, savePath.length - 1); - } - - //Cycle through all the JS files and convert them. - if (!fileList || !fileList.length) { - if (commonJsPath === "convert") { - //A request just to convert one file. - logger.trace('\n\n' + commonJs.convert(savePath, fileUtil.readFile(savePath))); - } else { - logger.error("No files to convert in directory: " + commonJsPath); - } - } else { - for (i = 0; (fileName = fileList[i]); i++) { - convertedFileName = fileName.replace(commonJsPath, savePath); - - //Handle JS files. - if (jsFileRegExp.test(fileName)) { - moduleName = fileName.replace(commonJsPath + "/", "").replace(/\.js$/, ""); - - fileContents = fileUtil.readFile(fileName); - fileContents = commonJs.convert(prefix + moduleName, fileName, fileContents); - fileUtil.saveUtf8File(convertedFileName, fileContents); - } else { - //Just copy the file over. - fileUtil.copyFile(fileName, convertedFileName, true); - } - } - } - }, - - /** - * Removes the comments from a string. Uses a more robust method if - * Rhino is available, otherwise a cruder regexp is used. If the regexp - * is used, then the contents may not be executable, but hopefully good - * enough to use to find require() calls. - * - * @param {String} fileContents - * @param {String} fileName mostly used for informative reasons if an error. - * - * @returns {String} a string of JS with comments removed. - */ - removeComments: function (fileContents, fileName) { - var context, script; - if (commonJs.useRhino) { - context = Packages.org.mozilla.javascript.Context.enter(); - script = context.compileString(fileContents, fileName, 1, null); - return String(context.decompileScript(script, 0)); - } else { - return fileContents.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, ""); - } - }, - - /** - * Regexp for testing if there is already a require.def call in the file, - * in which case do not try to convert it. - */ - defRegExp: /(require\s*\.\s*def|define)\s*\(/, - - /** - * Regexp for testing if there is a require([]) or require(function(){}) - * call, indicating the file is already in requirejs syntax. - */ - rjsRegExp: /require\s*\(\s*(\[|function)/, - - /** - * Does the actual file conversion. - * - * @param {String} moduleName the name of the module to use for the - * define() call. - * - * @param {String} fileName the name of the file. - * - * @param {String} fileContents the contents of a file :) - * - * @param {Boolean} skipDeps if true, require("") dependencies - * will not be searched, but the contents will just be wrapped in the - * standard require, exports, module dependencies. Only usable in sync - * environments like Node where the require("") calls can be resolved on - * the fly. - * - * @returns {String} the converted contents - */ - convert: function (moduleName, fileName, fileContents, skipDeps) { - //Strip out comments. - if (commonJs.useLog) { - logger.trace("fileName: " + fileName); - } - try { - var deps = [], depName, match, - //Remove comments - tempContents = commonJs.removeComments(fileContents, fileName), - baseName = moduleName.split("/"); - - //First see if the module is not already RequireJS-formatted. - if (commonJs.defRegExp.test(tempContents) || commonJs.rjsRegExp.test(tempContents)) { - return fileContents; - } - - //Set baseName to be one directory higher than moduleName. - baseName.pop(); - - //Reset the regexp to start at beginning of file. Do this - //since the regexp is reused across files. - commonJs.depRegExp.lastIndex = 0; - - if (!skipDeps) { - //Find dependencies in the code that was not in comments. - while ((match = commonJs.depRegExp.exec(tempContents))) { - depName = match[1]; - if (commonJs.useLog) { - logger.trace(" " + depName); - } - if (depName) { - deps.push('"' + depName + '"'); - } - } - } - - //Construct the wrapper boilerplate. - fileContents = 'define(["require", "exports", "module"' + - (deps.length ? ', ' + deps.join(",") : '') + '], ' + - 'function(require, exports, module) {\n' + - (commonJs.logConverted ? 'global._requirejs_logger.trace("Evaluating module: ' + moduleName + '");\n' : "") + - fileContents + - '\n});\n'; - } catch (e) { - logger.error("COULD NOT CONVERT: " + fileName + ", so skipping it. Error was: " + e); - return fileContents; - } - - if (commonJs.logConverted) { - logger.trace("\nREQUIREJS CONVERTED MODULE: " + moduleName + "\n\n" + fileContents + "\n"); - } - return fileContents; - } -}; \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js deleted file mode 100644 index 5a746eaa..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js +++ /dev/null @@ -1,213 +0,0 @@ -/** - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//Helper functions to deal with file I/O. - -/*jslint plusplus: false */ -/*global java: false */ -"use strict"; - -var fileUtil = { - backSlashRegExp: /\\/g, - - getLineSeparator: function () { - return java.lang.System.getProperty("line.separator"); //Java String - } -}; - -/** - * Gets the absolute file path as a string, normalized - * to using front slashes for path separators. - * @param {java.io.File} file - */ -fileUtil.absPath = function (file) { - return (file.getAbsolutePath() + "").replace(fileUtil.backSlashRegExp, "/"); -}; - -fileUtil.getFilteredFileList = function (/*String*/startDir, /*RegExp*/regExpFilters, /*boolean?*/makeUnixPaths, /*boolean?*/startDirIsJavaObject) { - //summary: Recurses startDir and finds matches to the files that match regExpFilters.include - //and do not match regExpFilters.exclude. Or just one regexp can be passed in for regExpFilters, - //and it will be treated as the "include" case. - //Ignores files/directories that start with a period (.). - var files = [], topDir, regExpInclude, regExpExclude, dirFileArray, - i, file, filePath, ok, dirFiles; - - topDir = startDir; - if (!startDirIsJavaObject) { - topDir = new java.io.File(startDir); - } - - regExpInclude = regExpFilters.include || regExpFilters; - regExpExclude = regExpFilters.exclude || null; - - if (topDir.exists()) { - dirFileArray = topDir.listFiles(); - for (i = 0; i < dirFileArray.length; i++) { - file = dirFileArray[i]; - if (file.isFile()) { - filePath = file.getPath(); - if (makeUnixPaths) { - //Make sure we have a JS string. - filePath = String(filePath); - if (filePath.indexOf("/") === -1) { - filePath = filePath.replace(/\\/g, "/"); - } - } - - ok = true; - if (regExpInclude) { - ok = filePath.match(regExpInclude); - } - if (ok && regExpExclude) { - ok = !filePath.match(regExpExclude); - } - - if (ok && !file.getName().match(/^\./)) { - files.push(filePath); - } - } else if (file.isDirectory() && !file.getName().match(/^\./)) { - dirFiles = this.getFilteredFileList(file, regExpFilters, makeUnixPaths, true); - files.push.apply(files, dirFiles); - } - } - } - - return files; //Array -}; - - -fileUtil.copyDir = function (/*String*/srcDir, /*String*/destDir, /*RegExp?*/regExpFilter, /*boolean?*/onlyCopyNew) { - //summary: copies files from srcDir to destDir using the regExpFilter to determine if the - //file should be copied. Returns a list file name strings of the destinations that were copied. - regExpFilter |= /\w/; - - var fileNames = fileUtil.getFilteredFileList(srcDir, regExpFilter, true), - copiedFiles = [], i, srcFileName, destFileName; - - for (i = 0; i < fileNames.length; i++) { - srcFileName = fileNames[i]; - destFileName = srcFileName.replace(srcDir, destDir); - - if (fileUtil.copyFile(srcFileName, destFileName, onlyCopyNew)) { - copiedFiles.push(destFileName); - } - } - - return copiedFiles.length ? copiedFiles : null; //Array or null -}; - -fileUtil.copyFile = function (/*String*/srcFileName, /*String*/destFileName, /*boolean?*/onlyCopyNew) { - //summary: copies srcFileName to destFileName. If onlyCopyNew is set, it only copies the file if - //srcFileName is newer than destFileName. Returns a boolean indicating if the copy occurred. - var destFile = new java.io.File(destFileName), srcFile, parentDir, - srcChannel, destChannel; - - //logger.trace("Src filename: " + srcFileName); - //logger.trace("Dest filename: " + destFileName); - - //If onlyCopyNew is true, then compare dates and only copy if the src is newer - //than dest. - if (onlyCopyNew) { - srcFile = new java.io.File(srcFileName); - if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified()) { - return false; //Boolean - } - } - - //Make sure destination dir exists. - parentDir = destFile.getParentFile(); - if (!parentDir.exists()) { - if (!parentDir.mkdirs()) { - throw "Could not create directory: " + parentDir.getAbsolutePath(); - } - } - - //Java's version of copy file. - srcChannel = new java.io.FileInputStream(srcFileName).getChannel(); - destChannel = new java.io.FileOutputStream(destFileName).getChannel(); - destChannel.transferFrom(srcChannel, 0, srcChannel.size()); - srcChannel.close(); - destChannel.close(); - - return true; //Boolean -}; - -fileUtil.readFile = function (/*String*/path, /*String?*/encoding) { - //summary: reads a file and returns a string - encoding = encoding || "utf-8"; - var file = new java.io.File(path), - lineSeparator = fileUtil.getLineSeparator(), - input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), - stringBuffer, line; - try { - stringBuffer = new java.lang.StringBuffer(); - line = input.readLine(); - - // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 - // http://www.unicode.org/faq/utf_bom.html - - // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 - if (line && line.length() && line.charAt(0) === 0xfeff) { - // Eat the BOM, since we've already found the encoding on this file, - // and we plan to concatenating this buffer with others; the BOM should - // only appear at the top of a file. - line = line.substring(1); - } - while (line !== null) { - stringBuffer.append(line); - stringBuffer.append(lineSeparator); - line = input.readLine(); - } - //Make sure we return a JavaScript string and not a Java string. - return String(stringBuffer.toString()); //String - } finally { - input.close(); - } -}; - -fileUtil.saveUtf8File = function (/*String*/fileName, /*String*/fileContents) { - //summary: saves a file using UTF-8 encoding. - fileUtil.saveFile(fileName, fileContents, "utf-8"); -}; - -fileUtil.saveFile = function (/*String*/fileName, /*String*/fileContents, /*String?*/encoding) { - //summary: saves a file. - var outFile = new java.io.File(fileName), outWriter, parentDir, os; - - parentDir = outFile.getAbsoluteFile().getParentFile(); - if (!parentDir.exists()) { - if (!parentDir.mkdirs()) { - throw "Could not create directory: " + parentDir.getAbsolutePath(); - } - } - - if (encoding) { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding); - } else { - outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile)); - } - - os = new java.io.BufferedWriter(outWriter); - try { - os.write(fileContents); - } finally { - os.close(); - } -}; - -fileUtil.deleteFile = function (/*String*/fileName) { - //summary: deletes a file or directory if it exists. - var file = new java.io.File(fileName), files, i; - if (file.exists()) { - if (file.isDirectory()) { - files = file.listFiles(); - for (i = 0; i < files.length; i++) { - this.deleteFile(files[i]); - } - } - file["delete"](); - } -}; diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/lang.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/lang.js deleted file mode 100644 index 5fe26c61..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/lang.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: false */ -/*global */ - -"use strict"; - -var lang = { - backSlashRegExp: /\\/g, - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - mixin: function (target, source, override) { - //Use an empty object to avoid other bad JS code that modifies - //Object.prototype. - var empty = {}, prop; - for (prop in source) { - if (override || !(prop in target)) { - target[prop] = source[prop]; - } - } - }, - - delegate: (function () { - // boodman/crockford delegation w/ cornford optimization - function TMP() {} - return function (obj, props) { - TMP.prototype = obj; - var tmp = new TMP(); - TMP.prototype = null; - if (props) { - lang.mixin(tmp, props); - } - return tmp; // Object - }; - }()) -}; - diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/logger.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/logger.js deleted file mode 100644 index e74a7ac5..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/logger.js +++ /dev/null @@ -1,45 +0,0 @@ -/** - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -var logger = { - TRACE: 0, - INFO: 1, - WARN: 2, - ERROR: 3, - level: 0, - logPrefix: "", - - trace: function(message){ - if(this.level <= this.TRACE){ - this._print(message); - } - }, - - info: function(message){ - if(this.level <= this.INFO){ - this._print(message); - } - }, - - warn: function(message){ - if(this.level <= this.WARN){ - this._print(message); - } - }, - - error: function(message){ - if(this.level <= this.ERROR){ - this._print(message); - } - }, - - _print: function(message){ - this._sysPrint((this.logPrefix ? (this.logPrefix + " ") : "") + message); - }, - - _sysPrint: function(message){ - print(message); - } -} diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/optimize.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/optimize.js deleted file mode 100644 index 69eee0ef..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/optimize.js +++ /dev/null @@ -1,377 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint plusplus: false, nomen: false, regexp: false */ -/*global require: false, java: false, Packages: false, logger: false, fileUtil: false, - readFile: false, lang: false */ - -"use strict"; - -var optimize; - -(function () { - var JSSourceFilefromCode, - textDepRegExp = /["'](text)\!([^"']+)["']/g, - relativeDefRegExp = /(require\s*\.\s*def|define)\s*\(\s*['"]([^'"]+)['"]/g, - cssImportRegExp = /\@import\s+(url\()?\s*([^);]+)\s*(\))?([\w, ]*)(;)?/g, - cjsRequireRegExp = /require\s*\(\s*$/, - cssUrlRegExp = /\url\(\s*([^\)]+)\s*\)?/g; - - - //Bind to Closure compiler, but if it is not available, do not sweat it. - try { - JSSourceFilefromCode = java.lang.Class.forName('com.google.javascript.jscomp.JSSourceFile').getMethod('fromCode', [java.lang.String, java.lang.String]); - } catch (e) {} - - //Helper for closure compiler, because of weird Java-JavaScript interactions. - function closurefromCode(filename, content) { - return JSSourceFilefromCode.invoke(null, [filename, content]); - } - - //Adds escape sequences for non-visual characters, double quote and backslash - //and surrounds with double quotes to form a valid string literal. - //Assumes the string will be in a single quote string value. - function jsEscape(text) { - return text.replace(/(['\\])/g, '\\$1') - .replace(/[\f]/g, "\\f") - .replace(/[\b]/g, "\\b") - .replace(/[\n]/g, "\\n") - .replace(/[\t]/g, "\\t") - .replace(/[\r]/g, "\\r"); - } - - /** - * If an URL from a CSS url value contains start/end quotes, remove them. - * This is not done in the regexp, since my regexp fu is not that strong, - * and the CSS spec allows for ' and " in the URL if they are backslash escaped. - * @param {String} url - */ - function cleanCssUrlQuotes(url) { - //Make sure we are not ending in whitespace. - //Not very confident of the css regexps above that there will not be ending - //whitespace. - url = url.replace(/\s+$/, ""); - - if (url.charAt(0) === "'" || url.charAt(0) === "\"") { - url = url.substring(1, url.length - 1); - } - - return url; - } - - /** - * Inlines nested stylesheets that have @import calls in them. - * @param {String} fileName - * @param {String} fileContents - * @param {String} [cssImportIgnore] - */ - function flattenCss(fileName, fileContents, cssImportIgnore) { - //Find the last slash in the name. - fileName = fileName.replace(lang.backSlashRegExp, "/"); - var endIndex = fileName.lastIndexOf("/"), - //Make a file path based on the last slash. - //If no slash, so must be just a file name. Use empty string then. - filePath = (endIndex !== -1) ? fileName.substring(0, endIndex + 1) : ""; - - //Make sure we have a delimited ignore list to make matching faster - if (cssImportIgnore && cssImportIgnore.charAt(cssImportIgnore.length - 1) !== ",") { - cssImportIgnore += ","; - } - - return fileContents.replace(cssImportRegExp, function (fullMatch, urlStart, importFileName, urlEnd, mediaTypes) { - //Only process media type "all" or empty media type rules. - if (mediaTypes && ((mediaTypes.replace(/^\s\s*/, '').replace(/\s\s*$/, '')) !== "all")) { - return fullMatch; - } - - importFileName = cleanCssUrlQuotes(importFileName); - - //Ignore the file import if it is part of an ignore list. - if (cssImportIgnore && cssImportIgnore.indexOf(importFileName + ",") !== -1) { - return fullMatch; - } - - //Make sure we have a unix path for the rest of the operation. - importFileName = importFileName.replace(lang.backSlashRegExp, "/"); - - try { - //if a relative path, then tack on the filePath. - //If it is not a relative path, then the readFile below will fail, - //and we will just skip that import. - var fullImportFileName = importFileName.charAt(0) === "/" ? importFileName : filePath + importFileName, - importContents = fileUtil.readFile(fullImportFileName), i, - importEndIndex, importPath, fixedUrlMatch, colonIndex, parts; - - //Make sure to flatten any nested imports. - importContents = flattenCss(fullImportFileName, importContents); - - //Make the full import path - importEndIndex = importFileName.lastIndexOf("/"); - - //Make a file path based on the last slash. - //If no slash, so must be just a file name. Use empty string then. - importPath = (importEndIndex !== -1) ? importFileName.substring(0, importEndIndex + 1) : ""; - - //Modify URL paths to match the path represented by this file. - importContents = importContents.replace(cssUrlRegExp, function (fullMatch, urlMatch) { - fixedUrlMatch = cleanCssUrlQuotes(urlMatch); - fixedUrlMatch = fixedUrlMatch.replace(lang.backSlashRegExp, "/"); - - //Only do the work for relative URLs. Skip things that start with / or have - //a protocol. - colonIndex = fixedUrlMatch.indexOf(":"); - if (fixedUrlMatch.charAt(0) !== "/" && (colonIndex === -1 || colonIndex > fixedUrlMatch.indexOf("/"))) { - //It is a relative URL, tack on the path prefix - urlMatch = importPath + fixedUrlMatch; - } else { - logger.trace(importFileName + "\n URL not a relative URL, skipping: " + urlMatch); - } - - //Collapse .. and . - parts = urlMatch.split("/"); - for (i = parts.length - 1; i > 0; i--) { - if (parts[i] === ".") { - parts.splice(i, 1); - } else if (parts[i] === "..") { - if (i !== 0 && parts[i - 1] !== "..") { - parts.splice(i - 1, 2); - i -= 1; - } - } - } - - return "url(" + parts.join("/") + ")"; - }); - - return importContents; - } catch (e) { - logger.trace(fileName + "\n Cannot inline css import, skipping: " + importFileName); - return fullMatch; - } - }); - } - - optimize = { - closure: function (fileName, fileContents, keepLines) { - var jscomp = Packages.com.google.javascript.jscomp, - flags = Packages.com.google.common.flags, - //Fake extern - externSourceFile = closurefromCode("fakeextern.js", " "), - //Set up source input - jsSourceFile = closurefromCode(String(fileName), String(fileContents)), - options, FLAG_compilation_level, compiler, - Compiler = Packages.com.google.javascript.jscomp.Compiler; - - logger.trace("Minifying file: " + fileName); - - //Set up options - options = new jscomp.CompilerOptions(); - options.prettyPrint = keepLines; - - FLAG_compilation_level = flags.Flag.value(jscomp.CompilationLevel.SIMPLE_OPTIMIZATIONS); - FLAG_compilation_level.get().setOptionsForCompilationLevel(options); - - //Trigger the compiler - Compiler.setLoggingLevel(Packages.java.util.logging.Level.WARNING); - compiler = new Compiler(); - compiler.compile(externSourceFile, jsSourceFile, options); - return compiler.toSource(); - }, - - //Inlines text! dependencies. - inlineText: function (fileName, fileContents) { - return fileContents.replace(textDepRegExp, function (match, prefix, dep, offset) { - var parts, modName, ext, strip, content, normalizedName, index, - defSegment, defStart, defMatch, tempMatch, defName, textPath; - - //Ignore inlining of text plugin calls that are inside the - //CommonJS convenience wrapper define(function (require,..)) - //In those cases it will be require("text!..."), so look to see - //if that text precedes the match. - defStart = offset - 20; - if (defStart < 0) { - defStart = 0; - } - - defSegment = fileContents.substring(defStart, offset); - if (cjsRequireRegExp.test(defSegment)) { - return match; - } - - parts = dep.split("!"); - modName = parts[0]; - ext = ""; - strip = parts[1]; - content = parts[2]; - - //Extension is part of modName - index = modName.lastIndexOf("."); - if (index !== -1) { - ext = modName.substring(index + 1, modName.length); - modName = modName.substring(0, index); - } - - //Adjust the text path to be a full name, not a relative - //one, if needed. - normalizedName = modName; - if (modName.charAt(0) === ".") { - //Need to backtrack an arbitrary amount in the file - //to find the require.def call - //that includes this relative name, to find what path to use - //for the relative part. - defStart = offset - 1000; - if (defStart < 0) { - defStart = 0; - } - defSegment = fileContents.substring(defStart, offset); - - //Take the last match, the one closest to current text! string. - relativeDefRegExp.lastIndex = 0; - while ((tempMatch = relativeDefRegExp.exec(defSegment)) !== null) { - defMatch = tempMatch; - } - - if (defMatch) { - //Take the last match, the one closest to current text! string. - defName = defMatch[2]; - - normalizedName = require.normalizeName(modName, defName, require.s.contexts._); - textPath = require.nameToUrl(normalizedName, "." + ext, require.s.ctxName); - } else { - //An anonymous module, and not part of a built layer - //that already has injected names. Use the fileName instead. - textPath = fileName.split('/'); - //Pop off the file name, so that there are just directories. - textPath.pop(); - textPath = textPath.join('/') + '/' + modName + "." + ext; - } - } - - if (strip !== "strip") { - content = strip; - strip = null; - } - - if (content) { - //Already an inlined resource, return. - return match; - } else { - content = readFile(textPath); - if (strip) { - content = require.textStrip(content); - } - return "'" + prefix + - "!" + modName + - (ext ? "." + ext : "") + - (strip ? "!strip" : "") + - "!" + jsEscape(content) + "'"; - } - }); - }, - - /** - * Optimizes a file that contains JavaScript content. It will inline - * text plugin files and run it through Google Closure Compiler - * minification, if the config options specify it. - * - * @param {String} fileName the name of the file to optimize - * @param {String} outFileName the name of the file to use for the - * saved optimized content. - * @param {Object} config the build config object. - */ - jsFile: function (fileName, outFileName, config) { - var doClosure = (config.optimize + "").indexOf("closure") === 0, - fileContents; - - if (config.inlineText && !optimize.textLoaded) { - //Make sure text extension is loaded. - require(["require/text"]); - optimize.textLoaded = true; - } - - fileContents = fileUtil.readFile(fileName); - - //Inline text files. - if (config.inlineText) { - fileContents = optimize.inlineText(fileName, fileContents); - } - - //Optimize the JS files if asked. - if (doClosure) { - fileContents = optimize.closure(fileName, - fileContents, - (config.optimize.indexOf(".keepLines") !== -1)); - } - - fileUtil.saveUtf8File(outFileName, fileContents); - }, - - /** - * Optimizes one CSS file, inlining @import calls, stripping comments, and - * optionally removes line returns. - * @param {String} fileName the path to the CSS file to optimize - * @param {String} outFileName the path to save the optimized file. - * @param {Object} config the config object with the optimizeCss and - * cssImportIgnore options. - */ - cssFile: function (fileName, outFileName, config) { - //Read in the file. Make sure we have a JS string. - var originalFileContents = fileUtil.readFile(fileName), - fileContents = flattenCss(fileName, originalFileContents, config.cssImportIgnore), - startIndex, endIndex; - - //Do comment removal. - try { - startIndex = -1; - //Get rid of comments. - while ((startIndex = fileContents.indexOf("/*")) !== -1) { - endIndex = fileContents.indexOf("*/", startIndex + 2); - if (endIndex === -1) { - throw "Improper comment in CSS file: " + fileName; - } - fileContents = fileContents.substring(0, startIndex) + fileContents.substring(endIndex + 2, fileContents.length); - } - //Get rid of newlines. - if (config.optimizeCss.indexOf(".keepLines") === -1) { - fileContents = fileContents.replace(/[\r\n]/g, ""); - fileContents = fileContents.replace(/\s+/g, " "); - fileContents = fileContents.replace(/\{\s/g, "{"); - fileContents = fileContents.replace(/\s\}/g, "}"); - } else { - //Remove multiple empty lines. - fileContents = fileContents.replace(/(\r\n)+/g, "\r\n"); - fileContents = fileContents.replace(/(\n)+/g, "\n"); - } - } catch (e) { - fileContents = originalFileContents; - logger.error("Could not optimized CSS file: " + fileName + ", error: " + e); - } - - fileUtil.saveUtf8File(outFileName, fileContents); - }, - - /** - * Optimizes CSS files, inlining @import calls, stripping comments, and - * optionally removes line returns. - * @param {String} startDir the path to the top level directory - * @param {Object} config the config object with the optimizeCss and - * cssImportIgnore options. - */ - css: function (startDir, config) { - if (config.optimizeCss.indexOf("standard") !== -1) { - var i, fileName, startIndex, endIndex, originalFileContents, fileContents, - fileList = fileUtil.getFilteredFileList(startDir, /\.css$/, true); - if (fileList) { - for (i = 0; i < fileList.length; i++) { - fileName = fileList[i]; - logger.trace("Optimizing (" + config.optimizeCss + ") CSS file: " + fileName); - optimize.cssFile(fileName, fileName, config); - } - } - } - } - }; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/parse.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/parse.js deleted file mode 100644 index d06e013e..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/parse.js +++ /dev/null @@ -1,399 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/* - * Java 6 is required. - */ - -/*jslint plusplus: false */ -/*global java: false, Packages: false, load: false */ - -"use strict"; - -var parse; -(function () { - //fileContents = 'require.def("foo", ["one", \n//This is a comment\n"two",\n/*Another comment*/"three"], {});', - //fileContents = 'require.def("foo", {one: "two"});', - var jscomp = Packages.com.google.javascript.jscomp, - compiler = new jscomp.Compiler(), - - //Values taken from com.google.javascript.rhino.Token, - //but duplicated here to avoid weird Java-to-JS transforms. - GETPROP = 33, - CALL = 37, - NAME = 38, - STRING = 40, - ARRAYLIT = 63, - OBJECTLIT = 64, - ASSIGN = 86, - FUNCTION = 105, - EXPR_RESULT = 130, - - //Oh Java, you rascal. - JSSourceFilefromCode = java.lang.Class.forName('com.google.javascript.jscomp.JSSourceFile').getMethod('fromCode', [java.lang.String, java.lang.String]); - - //Helper for closureOptimize, because of weird Java-JavaScript interactions. - function closurefromCode(filename, content) { - return JSSourceFilefromCode.invoke(null, [filename, content]); - } - - /** - * Calls node.getString() but makes sure a JS string is returned - */ - function nodeString(node) { - return String(node.getString()); - } - - /** - * Calls compiler.parse, and if any errors, throws. - */ - function compilerParse(jsSourceFile, fileName) { - var result = compiler.parse(jsSourceFile), - errorManager = compiler.getErrorManager(), - errorMsg = '', errors, i; - - if (errorManager.getErrorCount() > 0) { - errorMsg += 'ERROR(S) in file: ' + fileName + ':\n'; - errors = errorManager.getErrors(); - for (i = 0; i < errors.length; i++) { - errorMsg += errors[i].toString() + '\n'; - } - throw new Error(errorMsg); - } - - return result; - } - - /** - * Validates a node as being an object literal (like for i18n bundles) - * or an array literal with just string members. - * This function does not need to worry about comments, they are not - * present in this AST. - */ - function validateDeps(node) { - var type = node.getType(), i, dep; - - if (type === OBJECTLIT || type === FUNCTION) { - return true; - } - - //Dependencies can be an object literal or an array. - if (type !== ARRAYLIT) { - return false; - } - - for (i = 0; (dep = node.getChildAtIndex(i)); i++) { - if (dep.getType() !== STRING) { - return false; - } - } - return true; - } - - /** - * Main parse function. Returns a string of any valid require or define/require.def - * calls as part of one JavaScript source string. - * @param {String} fileName - * @param {String} fileContents - * @returns {String} JS source string or null, if no require or define/require.def - * calls are found. - */ - parse = function (fileName, fileContents) { - //Set up source input - var matches = [], result = null, - jsSourceFile = closurefromCode(String(fileName), String(fileContents)), - astRoot = compilerParse(jsSourceFile, fileName); - - parse.recurse(astRoot, matches); - - if (matches.length) { - result = matches.join("\n"); - } - - return result; - }; - - /** - * Handles parsing a file recursively for require calls. - * @param {Packages.com.google.javascript.rhino.Node} node - * @param {Array} matches where to store the string matches - */ - parse.recurse = function (parentNode, matches) { - var i, node, parsed; - for (i = 0; (node = parentNode.getChildAtIndex(i)); i++) { - parsed = parse.parseNode(node); - if (parsed) { - matches.push(parsed); - } - parse.recurse(node, matches); - } - }; - - /** - * Determines if the file defines require(). - * @param {String} fileName - * @param {String} fileContents - * @returns {Boolean} - */ - parse.definesRequire = function (fileName, fileContents) { - var jsSourceFile = closurefromCode(String(fileName), String(fileContents)), - astRoot = compilerParse(jsSourceFile, fileName); - - return parse.nodeHasRequire(astRoot); - }; - - /** - * Finds require("") calls inside a CommonJS anonymous module wrapped in a - * define/require.def(function(require, exports, module){}) wrapper. These dependencies - * will be added to a modified define() call that lists the dependencies - * on the outside of the function. - * @param {String} fileName - * @param {String} fileContents - * @returns {Array} an array of module names that are dependencies. Always - * returns an array, but could be of length zero. - */ - parse.getAnonDeps = function (fileName, fileContents) { - var jsSourceFile = closurefromCode(String(fileName), String(fileContents)), - astRoot = compilerParse(jsSourceFile, fileName), - deps = [], - defFunc = parse.findAnonRequireDefCallback(astRoot); - - //Now look inside the def call's function for require calls. - if (defFunc) { - parse.findRequireDepNames(defFunc, deps); - - //If no deps, still add the standard CommonJS require, exports, module, - //in that order, to the deps. - deps = ["require", "exports", "module"].concat(deps); - } - - return deps; - }; - - /** - * Finds the function in require.def(function (require, exports, module){}); - * @param {Packages.com.google.javascript.rhino.Node} node - * @returns {Boolean} - */ - - parse.findAnonRequireDefCallback = function (node) { - var methodName, func, callback, i, n; - - if (node.getType() === GETPROP && - node.getFirstChild().getType() === NAME && - nodeString(node.getFirstChild()) === "require") { - - methodName = nodeString(node.getChildAtIndex(1)); - if (methodName === "def") { - func = node.getLastSibling(); - if (func.getType() === FUNCTION) { - //Bingo. - return func; - } - } - } else if (node.getType() === EXPR_RESULT && - node.getFirstChild().getType() === CALL && - node.getFirstChild().getFirstChild().getType() === NAME && - nodeString(node.getFirstChild().getFirstChild()) === "define") { - - func = node.getFirstChild().getFirstChild().getLastSibling(); - if (func.getType() === FUNCTION) { - //Bingo. - return func; - } - } - - //Check child nodes - for (i = 0; (n = node.getChildAtIndex(i)); i++) { - if ((callback = parse.findAnonRequireDefCallback(n))) { - return callback; - } - } - - return null; - }; - - parse.findRequireDepNames = function (node, deps) { - var moduleName, i, n; - - if (node.getType() === CALL) { - if (node.getFirstChild().getType() === NAME && - nodeString(node.getFirstChild()) === "require") { - - //It is a plain require() call. - moduleName = node.getChildAtIndex(1); - if (moduleName.getType() === STRING) { - deps.push(nodeString(moduleName)); - } - } - } - - //Check child nodes - for (i = 0; (n = node.getChildAtIndex(i)); i++) { - parse.findRequireDepNames(n, deps); - } - }; - - /** - * Determines if a given node contains a require() definition. - * @param {Packages.com.google.javascript.rhino.Node} node - * @returns {Boolean} - */ - parse.nodeHasRequire = function (node) { - if (parse.isRequireNode(node)) { - return true; - } - - for (var i = 0, n; (n = node.getChildAtIndex(i)); i++) { - if (parse.nodeHasRequire(n)) { - return true; - } - } - - return false; - }; - - /** - * Is the given node the actual definition of require() - * @param {Packages.com.google.javascript.rhino.Node} node - * @returns {Boolean} - */ - parse.isRequireNode = function (node) { - //Actually look for the require.s = assignment, since - //that is more indicative of RequireJS vs a plain require definition. - var prop, name, s; - if (node.getType() === ASSIGN) { - prop = node.getFirstChild(); - if (prop.getType() === GETPROP) { - name = prop.getFirstChild(); - if (name.getType() === NAME) { - if (nodeString(name) === "require") { - s = prop.getChildAtIndex(1); - if (s && s.getType() === STRING && - nodeString(s) === "s") { - return true; - } - } - } - } - } - return false; - }; - - /** - * Convert a require/require.def/define call to a string if it is a valid - * call via static analysis of dependencies. - * @param {Packages.com.google.javascript.rhino.Node} the call node - * @param {Packages.com.google.javascript.rhino.Node} the name node inside the call - * @param {Packages.com.google.javascript.rhino.Node} the deps node inside the call - */ - parse.callToString = function (call, name, deps) { - //If name is an array, it means it is an anonymous module, - //so adjust args appropriately. An anonymous module could - //have a FUNCTION as the name type, but just ignore those - //since we just want to find dependencies. - //TODO: CHANGE THIS if/when support using a tostring - //on function to find CommonJS dependencies. - if (name.getType() === ARRAYLIT) { - deps = name; - } - - if (deps && !validateDeps(deps)) { - return null; - } - - return parse.nodeToString(call); - }; - - /** - * Determines if a specific node is a valid require or define/require.def call. - * @param {Packages.com.google.javascript.rhino.Node} node - * - * @returns {String} a JS source string with the valid require/define call. - * Otherwise null. - */ - parse.parseNode = function (node) { - var call, methodName, targetName, name, deps, callChildCount; - - if (node.getType() === EXPR_RESULT && node.getFirstChild().getType() === CALL) { - call = node.getFirstChild(); - - if (call.getFirstChild().getType() === NAME && - nodeString(call.getFirstChild()) === "require") { - - //It is a plain require() call. - deps = call.getChildAtIndex(1); - if (!validateDeps(deps)) { - return null; - } - return parse.nodeToString(call); - - } else if (call.getType() === CALL && - call.getFirstChild().getType() === NAME && - nodeString(call.getFirstChild()) === "define") { - - //A define call - name = call.getChildAtIndex(1); - deps = call.getChildAtIndex(2); - return parse.callToString(call, name, deps); - - } else if (call.getFirstChild().getType() === GETPROP && - call.getFirstChild().getFirstChild().getType() === NAME && - nodeString(call.getFirstChild().getFirstChild()) === "require") { - - //Possibly a require.def/require.modify call - - methodName = nodeString(call.getChildAtIndex(0).getChildAtIndex(1)); - if (methodName === "def") { - - //A require.def() call - name = call.getChildAtIndex(1); - deps = call.getChildAtIndex(2); - - return parse.callToString(call, name, deps); - } else if (methodName === "modify") { - - //A require.modify() call - callChildCount = call.getChildCount(); - if (callChildCount > 0) { - targetName = call.getChildAtIndex(1); - } - if (callChildCount > 1) { - name = call.getChildAtIndex(2); - } - if (callChildCount > 2) { - deps = call.getChildAtIndex(3); - } - - //Validate def name as a string - if (!targetName || targetName.getType() !== STRING || !name || name.getType() !== STRING) { - return null; - } - if (!validateDeps(deps)) { - return null; - } - - return parse.nodeToString(call); - - } - } - } - - return null; - }; - - /** - * Converts an AST node into a JS source string. Does not maintain formatting - * or even comments from original source, just returns valid JS source. - * @param {Packages.com.google.javascript.rhino.Node} node - * @returns {String} a JS source string. - */ - parse.nodeToString = function (node) { - var codeBuilder = new jscomp.Compiler.CodeBuilder(); - compiler.toSource(codeBuilder, 1, node); - return String(codeBuilder.toString()); - }; -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/pragma.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/pragma.js deleted file mode 100644 index ec6f827b..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/pragma.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ - -/*jslint regexp: false */ -/*global */ - -"use strict"; - -var pragma = { - conditionalRegExp: /(exclude|include)Start\s*\(\s*["'](\w+)["']\s*,(.*)\)/, - useStrictRegExp: /['"]use strict['"];/g, - - removeStrict: function (contents, config) { - return config.useStrict ? contents : contents.replace(pragma.useStrictRegExp, ''); - }, - - /** - * processes the fileContents for some //>> conditional statements - */ - process: function (fileName, fileContents, config) { - /*jslint evil: true */ - var foundIndex = -1, startIndex = 0, lineEndIndex, conditionLine, - matches, type, marker, condition, isTrue, endRegExp, endMatches, - endMarkerIndex, shouldInclude, startLength, pragmas = config.pragmas, - //Legacy arg defined to help in dojo conversion script. Remove later - //when dojo no longer needs conversion: - kwArgs = { - profileProperties: { - hostenvType: "browser" - } - }; - - //If pragma work is not desired, skip it. - if (config.skipPragmas) { - return pragma.removeStrict(fileContents, config); - } - - while ((foundIndex = fileContents.indexOf("//>>", startIndex)) !== -1) { - //Found a conditional. Get the conditional line. - lineEndIndex = fileContents.indexOf("\n", foundIndex); - if (lineEndIndex === -1) { - lineEndIndex = fileContents.length - 1; - } - - //Increment startIndex past the line so the next conditional search can be done. - startIndex = lineEndIndex + 1; - - //Break apart the conditional. - conditionLine = fileContents.substring(foundIndex, lineEndIndex + 1); - matches = conditionLine.match(pragma.conditionalRegExp); - if (matches) { - type = matches[1]; - marker = matches[2]; - condition = matches[3]; - isTrue = false; - //See if the condition is true. - try { - isTrue = !!eval("(" + condition + ")"); - } catch (e) { - throw "Error in file: " + - fileName + - ". Conditional comment: " + - conditionLine + - " failed with this error: " + e; - } - - //Find the endpoint marker. - endRegExp = new RegExp('\\/\\/\\>\\>\\s*' + type + 'End\\(\\s*[\'"]' + marker + '[\'"]\\s*\\)', "g"); - endMatches = endRegExp.exec(fileContents.substring(startIndex, fileContents.length)); - if (endMatches) { - endMarkerIndex = startIndex + endRegExp.lastIndex - endMatches[0].length; - - //Find the next line return based on the match position. - lineEndIndex = fileContents.indexOf("\n", endMarkerIndex); - if (lineEndIndex === -1) { - lineEndIndex = fileContents.length - 1; - } - - //Should we include the segment? - shouldInclude = ((type === "exclude" && !isTrue) || (type === "include" && isTrue)); - - //Remove the conditional comments, and optionally remove the content inside - //the conditional comments. - startLength = startIndex - foundIndex; - fileContents = fileContents.substring(0, foundIndex) + - (shouldInclude ? fileContents.substring(startIndex, endMarkerIndex) : "") + - fileContents.substring(lineEndIndex + 1, fileContents.length); - - //Move startIndex to foundIndex, since that is the new position in the file - //where we need to look for more conditionals in the next while loop pass. - startIndex = foundIndex; - } else { - throw "Error in file: " + - fileName + - ". Cannot find end marker for conditional comment: " + - conditionLine; - - } - } - } - - return pragma.removeStrict(fileContents, config); - } -}; diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js deleted file mode 100644 index 2ff8797d..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js +++ /dev/null @@ -1,173 +0,0 @@ -/** - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/* - * This file patches require.js to communicate with the build system. - */ - -/*jslint nomen: false, plusplus: false, regexp: false */ -/*global load: false, require: false, logger: false, setTimeout: true, - pragma: false, Packages: false, parse: false, java: true */ -"use strict"; - -(function () { - var layer, - lineSeparator = java.lang.System.getProperty("line.separator"), - oldDef; - - //A file read function that can deal with BOMs - function _readFile(path, encoding) { - encoding = encoding || "utf-8"; - var file = new java.io.File(path), - input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), - stringBuffer, line; - try { - stringBuffer = new java.lang.StringBuffer(); - line = input.readLine(); - - // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 - // http://www.unicode.org/faq/utf_bom.html - - // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 - if (line && line.length() && line.charAt(0) === 0xfeff) { - // Eat the BOM, since we've already found the encoding on this file, - // and we plan to concatenating this buffer with others; the BOM should - // only appear at the top of a file. - line = line.substring(1); - } - while (line !== null) { - stringBuffer.append(line); - stringBuffer.append(lineSeparator); - line = input.readLine(); - } - //Make sure we return a JavaScript string and not a Java string. - return String(stringBuffer.toString()); //String - } finally { - input.close(); - } - } - - /** Reset state for each build layer pass. */ - require._buildReset = function () { - //Clear up the existing context. - delete require.s.contexts[require.s.ctxName]; - - //These variables are not contextName-aware since the build should - //only have one context. - layer = require._layer = { - buildPathMap: {}, - buildFileToModule: {}, - buildFilePaths: [], - loadedFiles: {}, - modulesWithNames: {}, - existingRequireUrl: "" - }; - }; - - require._buildReset(); - - /** - * Makes sure the URL is something that can be supported by the - * optimization tool. - * @param {String} url - * @returns {Boolean} - */ - require._isSupportedBuildUrl = function (url) { - //Ignore URLs with protocols or question marks, means either network - //access is needed to fetch it or it is too dynamic. Note that - //on Windows, full paths are used for some urls, which include - //the drive, like c:/something, so need to test for something other - //than just a colon. - return url.indexOf("://") === -1 && url.indexOf("?") === -1; - }; - - //Override require.def to catch modules that just define an object, so that - //a dummy require.def call is not put in the build file for them. They do - //not end up getting defined via require.execCb, so we need to catch them - //at the require.def call. - oldDef = require.def; - - //This function signature does not have to be exact, just match what we - //are looking for. - define = require.def = function (name, obj) { - if (typeof name === "string" && !require.isArray(obj) && !require.isFunction(obj)) { - layer.modulesWithNames[name] = true; - } - return oldDef.apply(require, arguments); - }; - - //Override load so that the file paths can be collected. - require.load = function (moduleName, contextName) { - /*jslint evil: true */ - var url = require.nameToUrl(moduleName, null, contextName), map, - contents, - context = require.s.contexts[contextName]; - context.loaded[moduleName] = false; - - //Only handle urls that can be inlined, so that means avoiding some - //URLs like ones that require network access or may be too dynamic, - //like JSONP - if (require._isSupportedBuildUrl(url)) { - //Save the module name to path mapping. - map = layer.buildPathMap[moduleName] = url; - - //Load the file contents, process for conditionals, then - //evaluate it. - contents = _readFile(url); - contents = pragma.process(url, contents, context.config); - - //Find out if the file contains a require() definition. Need to know - //this so we can inject plugins right after it, but before they are needed, - //and to make sure this file is first, so that require.def calls work. - //This situation mainly occurs when the build is done on top of the output - //of another build, where the first build may include require somewhere in it. - if (!layer.existingRequireUrl && parse.definesRequire(url, contents)) { - layer.existingRequireUrl = url; - } - - //Only eval complete contents if asked, or if it is a require extension. - //Otherwise, treat the module as not safe for execution and parse out - //the require calls. - if (!context.config.execModules && moduleName !== "require/text" && moduleName !== "require/i18n") { - //Only find the require parts with [] dependencies and - //evaluate those. This path is useful when the code - //does not follow the strict require pattern of wrapping all - //code in a require callback. - contents = parse(url, contents); - } - - if (contents) { - eval(contents); - - //Support anonymous modules. - require.completeLoad(moduleName, context); - } - } - - //Mark the module loaded. - context.loaded[moduleName] = true; - require.checkLoaded(contextName); - }; - - //Override a method provided by require/text.js for loading text files as - //dependencies. - require.fetchText = function (url, callback) { - callback(_readFile(url)); - }; - - //Marks the module as part of the loaded set, and puts - //it in the right position for output in the build layer, - //since require() already did the dependency checks and should have - //called this method already for those dependencies. - require.execCb = function (name, cb, args) { - var url = name && layer.buildPathMap[name]; - if (url && !layer.loadedFiles[url]) { - layer.buildFilePaths.push(url); - layer.loadedFiles[url] = true; - layer.modulesWithNames[name] = true; - } - }; -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/COPYING b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/COPYING deleted file mode 100644 index d6456956..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/COPYING +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/README b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/README deleted file mode 100644 index 8718f5b5..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/README +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// -// Contents -// - -The Closure Compiler performs checking, instrumentation, and -optimizations on JavaScript code. The purpose of this README is to -explain how to build and run the Closure Compiler. - -The Closure Compiler requires Java 6 or higher. -http://www.java.com/ - - -// -// Building The Closure Compiler -// - -There are three ways to get a Closure Compiler executable. - -1) Use one we built for you. - -Pre-built Closure binaries can be found at -http://code.google.com/p/closure-compiler/downloads/list - - -2) Check out the source and build it with Apache Ant. - -First, check out the full source tree of the Closure Compiler. There -are instructions on how to do this at the project site. -http://code.google.com/p/closure-compiler/source/checkout - -Apache Ant is a cross-platform build tool. -http://ant.apache.org/ - -At the root of the source tree, there is an Ant file named -build.xml. To use it, navigate to the same directory and type the -command - -ant jar - -This will produce a jar file called "build/compiler.jar". - - -3) Check out the source and build it with Eclipse. - -Eclipse is a cross-platform IDE. -http://www.eclipse.org/ - -Under Eclipse's File menu, click "New > Project ..." and create a -"Java Project." You will see an options screen. Give the project a -name, select "Create project from existing source," and choose the -root of the checked-out source tree as the existing directory. Verify -that you are using JRE version 6 or higher. - -Eclipse can use the build.xml file to discover rules. When you -navigate to the build.xml file, you will see all the build rules in -the "Outline" pane. Run the "jar" rule to build the compiler in -build/compiler.jar. - - -// -// Running The Closure Compiler -// - -Once you have the jar binary, running the Closure Compiler is straightforward. - -On the command line, type - -java -jar compiler.jar - -This starts the compiler in interactive mode. Type - -var x = 17 + 25; - -then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux) -and "Enter" again. The Compiler will respond: - -var x=42; - -The Closure Compiler has many options for reading input from a file, -writing output to a file, checking your code, and running -optimizations. To learn more, type - -java -jar compiler.jar --help - -You can read more detailed documentation about the many flags at -http://code.google.com/closure/compiler/docs/gettingstarted_app.html - - -// -// Compiling Multiple Scripts -// - -If you have multiple scripts, you should compile them all together with -one compile command. - -java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js - -The Closure Compiler will concatenate the files in the order they're -passed at the command line. - -If you need to compile many, many scripts together, you may start to -run into problems with managing dependencies between scripts. You -should check out the Closure Library. It contains functions for -enforcing dependencies between scripts, and a tool called calcdeps.py -that knows how to give scripts to the Closure Compiler in the right -order. - -http://code.google.com/p/closure-library/ - -// -// Licensing -// - -Unless otherwise stated, all source files are licensed under -the Apache License, Version 2.0. - - ------ -Code under: -src/com/google/javascript/rhino -test/com/google/javascript/rhino - -URL: http://www.mozilla.org/rhino -Version: 1.5R3, with heavy modifications -License: Netscape Public License and MPL / GPL dual license - -Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an -implementation of JavaScript for the JVM. The JavaScript parser and -the parse tree data structures were extracted and modified -significantly for use by Google's JavaScript compiler. - -Local Modifications: The packages have been renamespaced. All code not -relavant to parsing has been removed. A JSDoc parser and static typing -system have been added. - - ------ -Code in: -lib/libtrunk_rhino_parser_jarjared.jar - -Rhino -URL: http://www.mozilla.org/rhino -Version: Trunk -License: Netscape Public License and MPL / GPL dual license - -Description: Mozilla Rhino is an implementation of JavaScript for the JVM. - -Local Modifications: None. We've used JarJar to renamespace the code -post-compilation. See: -http://code.google.com/p/jarjar/ - - ------ -Code in: -lib/args4j_deploy.jar - -Args4j -URL: https://args4j.dev.java.net/ -Version: 2.0.9 -License: MIT - -Description: -args4j is a small Java class library that makes it easy to parse command line -options/arguments in your CUI application. - -Local Modifications: None. - - ------ -Code in: -lib/google_common_deploy.jar - -Guava Libraries -URL: http://code.google.com/p/guava-libraries/ -Version: Trunk -License: Apache License 2.0 - -Description: Google's core Java libraries. - -Local Modifications: None. - - ------ -Code in: -lib/hamcrest-core-1.1.jar - -Hamcrest -URL: http://code.google.com/p/hamcrest -License: BSD -License File: LICENSE - -Description: -Provides a library of matcher objects (also known as constraints or -predicates) allowing 'match' rules to be defined declaratively, to be used in -other frameworks. Typical scenarios include testing frameworks, mocking -libraries and UI validation rules. - -Local modifications: -The original jars contained both source code and compiled classes. - -hamcrest-core-1.1.jar just contains the compiled classes. - - ----- -Code in: -lib/junit.jar - -JUnit -URL: http://sourceforge.net/projects/junit/ -Version: 4.5 -License: Common Public License 1.0 - -Description: A framework for writing and running automated tests in Java. - -Local Modifications: None. - - ---- -Code in: -lib/protobuf_deploy.jar - -Protocol Buffers -URL: http://code.google.com/p/protobuf/ -Version: 2.2.0a -License: New BSD License - -Description: Supporting libraries for protocol buffers, -an encoding of structured data. - -Local Modifications: None - - ---- -Code in: -lib/ant_deploy.jar - -URL: http://ant.apache.org/bindownload.cgi -Version: 1.6.5 -License: Apache License 2.0 -Description: - Ant is a Java based build tool. In theory it is kind of like "make" - without make's wrinkles and with the full portability of pure java code. - -Local Modifications: - Modified apache-ant-1.6.5/bin/ant to look in the ant.runfiles directory diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar deleted file mode 100644 index c087e922..00000000 Binary files a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar and /dev/null differ diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE deleted file mode 100644 index b2db4c54..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE +++ /dev/null @@ -1,4 +0,0 @@ -Mozilla Rhino (js.jar from http://www.mozilla.org/rhino/) was -initially developed by Netscape Communications Corporation and is -provided by the Dojo Foundation "as is" under the MPL 1.1 license, -available at http://www.mozilla.org/MPL diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar b/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar deleted file mode 100644 index 2369f99a..00000000 Binary files a/branches/firebug1.5/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar and /dev/null differ diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require.js deleted file mode 100644 index ff4e0f9a..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require.js +++ /dev/null @@ -1,1811 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS 0.15.0 Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//laxbreak is true to allow build pragmas to change some statements. -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */ -/*global window: false, document: false, navigator: false, -setTimeout: false, traceDeps: true, clearInterval: false, self: false, -setInterval: false, importScripts: false, jQuery: false */ -"use strict"; - -var require, define; -(function () { - //Change this version number for each release. - var version = "0.15.0", - empty = {}, s, - i, defContextName = "_", contextLoads = [], - scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState, - commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, - cjsRequireRegExp = /require\(["']([\w\!\-_\.\/]+)["']\)/g, - main, - isBrowser = !!(typeof window !== "undefined" && navigator && document), - isWebWorker = !isBrowser && typeof importScripts !== "undefined", - //PS3 indicates loaded and complete, but need to wait for complete - //specifically. Sequence is "loading", "loaded", execution, - // then "complete". The UA check is unfortunate, but not sure how - //to feature test w/o causing perf issues. - readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? /^complete$/ : /^(complete|loaded)$/, - ostring = Object.prototype.toString, - ap = Array.prototype, - aps = ap.slice, scrollIntervalId, req, baseElement, - defQueue = [], useInteractive = false, currentlyAddingScript; - - function isFunction(it) { - return ostring.call(it) === "[object Function]"; - } - - //Check for an existing version of require. If so, then exit out. Only allow - //one version of require to be active in a page. However, allow for a require - //config object, just exit quickly if require is an actual function. - if (typeof require !== "undefined") { - if (isFunction(require)) { - return; - } else { - //assume it is a config object. - cfg = require; - } - } - - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - /** - * Calls a method on a plugin. The obj object should have two property, - * name: the name of the method to call on the plugin - * args: the arguments to pass to the plugin method. - */ - function callPlugin(prefix, context, obj) { - //Call the plugin, or load it. - var plugin = s.plugins.defined[prefix], waiting; - if (plugin) { - plugin[obj.name].apply(null, obj.args); - } else { - //Put the call in the waiting call BEFORE requiring the module, - //since the require could be synchronous in some environments, - //like builds - waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []); - waiting.push(obj); - - //Load the module - req(["require/" + prefix], context.contextName); - } - } - //>>excludeEnd("requireExcludePlugin"); - - /** - * Convenience method to call main for a require.def call that was put on - * hold in the defQueue. - */ - function callDefMain(args, context) { - main.apply(req, args); - //Mark the module loaded. Must do it here in addition - //to doing it in require.def in case a script does - //not call require.def - context.loaded[args[0]] = true; - } - - /** - * Used to set up package paths from a packagePaths or packages config object. - * @param {Object} packages the object to store the new package config - * @param {Array} currentPackages an array of packages to configure - * @param {String} [dir] a prefix dir to use. - */ - function configurePackageDir(packages, currentPackages, dir) { - var i, location, pkgObj; - for (i = 0; (pkgObj = currentPackages[i]); i++) { - pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj; - location = pkgObj.location; - - //Add dir to the path, but avoid paths that start with a slash - //or have a colon (indicates a protocol) - if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) { - pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name); - } - - //Normalize package paths. - pkgObj.location = pkgObj.location || pkgObj.name; - pkgObj.lib = pkgObj.lib || "lib"; - pkgObj.main = pkgObj.main || "main"; - - packages[pkgObj.name] = pkgObj; - } - } - - /** - * Determine if priority loading is done. If so clear the priorityWait - */ - function isPriorityDone(context) { - var priorityDone = true, - priorityWait = context.config.priorityWait, - priorityName, i; - if (priorityWait) { - for (i = 0; (priorityName = priorityWait[i]); i++) { - if (!context.loaded[priorityName]) { - priorityDone = false; - break; - } - } - if (priorityDone) { - delete context.config.priorityWait; - } - } - return priorityDone; - } - - /** - * Resumes tracing of dependencies and then checks if everything is loaded. - */ - function resume(context) { - var args, i, paused = s.paused; - if (context.scriptCount <= 0) { - //Synchronous envs will push the number below zero with the - //decrement above, be sure to set it back to zero for good measure. - //require() calls that also do not end up loading scripts could - //push the number negative too. - context.scriptCount = 0; - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - req.onError(new Error('Mismatched anonymous require.def modules')); - } else { - callDefMain(args, context); - } - } - - //Skip the resume if current context is in priority wait. - if (context.config.priorityWait && !isPriorityDone(context)) { - return; - } - - if (paused.length) { - //Reset paused since this loop will process current set. - s.paused = []; - - for (i = 0; (args = paused[i]); i++) { - req.checkDeps.apply(req, args); - } - } - - if (isWebWorker) { - //In a web worker, since importScripts is synchronous, - //it may think all dependencies are loaded, but still - //in the middle of a list of dependency fetches, so - //delay the checkLoaded in a timeout for the items to complete. - //This is really hacky though, time for a rewrite. - setTimeout(function () { - req.checkLoaded(s.ctxName); - }, 30); - } else { - req.checkLoaded(s.ctxName); - } - } - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - */ - require = function (deps, callback, contextName, relModuleName) { - var context, config; - if (typeof deps === "string" && !isFunction(callback)) { - //Just return the module wanted. In this scenario, the - //second arg (if passed) is just the contextName. - return require.get(deps, callback, contextName, relModuleName); - } - // Dependencies first - if (!require.isArray(deps)) { - // deps is a config object - config = deps; - if (require.isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = contextName; - contextName = relModuleName; - relModuleName = arguments[4]; - } else { - deps = []; - } - } - - main(null, deps, callback, config, contextName, relModuleName); - - //If the require call does not trigger anything new to load, - //then resume the dependency processing. Context will be undefined - //on first run of require. - context = s.contexts[(contextName || (config && config.context) || s.ctxName)]; - if (context && context.scriptCount === 0) { - resume(context); - } - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - }; - - //Alias for caja compliance internally - - //specifically: "Dynamically computed names should use require.async()" - //even though this spec isn't really decided on. - //Since it is here, use this alias to make typing shorter. - req = require; - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * If you do override it, this method should *always* throw an error - * to stop the execution flow correctly. Otherwise, other weird errors - * will occur. - * @param {Error} err the error object. - */ - req.onError = function (err) { - throw err; - }; - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = req.def = function (name, deps, callback, contextName) { - var i, scripts, script, node = currentlyAddingScript; - - //Allow for anonymous functions - if (typeof name !== 'string') { - //Adjust args appropriately - contextName = callback; - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!req.isArray(deps)) { - contextName = callback; - callback = deps; - deps = []; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!name && !deps.length && req.isFunction(callback)) { - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies. - callback - .toString() - .replace(commentRegExp, "") - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and such, so always add those as dependencies. - //This is a bit wasteful for RequireJS modules that do not need - //an exports or module object, but erring on side of safety. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = ["require", "exports", "module"].concat(deps); - } - - //If in IE 6-8 and hit an anonymous require.def call, do the interactive/ - //currentlyAddingScript scripts stuff. - if (!name && useInteractive) { - scripts = document.getElementsByTagName('script'); - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - if (script.readyState === 'interactive') { - node = script; - break; - } - } - if (!node) { - req.onError(new Error("ERROR: No matching script interactive for " + callback)); - } - - name = node.getAttribute("data-requiremodule"); - } - - if (typeof name === 'string') { - //Do not try to auto-register a jquery later. - //Do this work here and in main, since for IE/useInteractive, this function - //is the earliest touch-point. - s.contexts[s.ctxName].jQueryDef = (name === "jquery"); - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. - defQueue.push([name, deps, callback, null, contextName]); - }; - - main = function (name, deps, callback, config, contextName, relModuleName) { - //Grab the context, or create a new one for the given context name. - var context, newContext, loaded, pluginPrefix, - canSetContext, prop, newLength, outDeps, mods, paths, index, i, - deferMods, deferModArgs, lastModArg, waitingName, packages, - packagePaths; - - contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName); - context = s.contexts[contextName]; - - if (name) { - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - // Pull off any plugin prefix. - index = name.indexOf("!"); - if (index !== -1) { - pluginPrefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } else { - //Could be that the plugin name should be auto-applied. - //Used by i18n plugin to enable anonymous i18n modules, but - //still associating the auto-generated name with the i18n plugin. - pluginPrefix = context.defPlugin[name]; - } - - //>>excludeEnd("requireExcludePlugin"); - - //If module already defined for context, or already waiting to be - //evaluated, leave. - waitingName = context.waiting[name]; - if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) { - return; - } - } - - if (contextName !== s.ctxName) { - //If nothing is waiting on being loaded in the current context, - //then switch s.ctxName to current contextName. - loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded); - canSetContext = true; - if (loaded) { - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - canSetContext = false; - break; - } - } - } - } - if (canSetContext) { - s.ctxName = contextName; - } - } - - if (!context) { - newContext = { - contextName: contextName, - config: { - waitSeconds: 7, - baseUrl: s.baseUrl || "./", - paths: {}, - packages: {} - }, - waiting: [], - specified: { - "require": true, - "exports": true, - "module": true - }, - loaded: {}, - scriptCount: 0, - urlFetched: {}, - defPlugin: {}, - defined: {}, - modifiers: {} - }; - - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - if (s.plugins.newContext) { - s.plugins.newContext(newContext); - } - //>>excludeEnd("requireExcludePlugin"); - - context = s.contexts[contextName] = newContext; - } - - //If have a config object, update the context's config object with - //the config values. - if (config) { - //Make sure the baseUrl ends in a slash. - if (config.baseUrl) { - if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") { - config.baseUrl += "/"; - } - } - - //Save off the paths and packages since they require special processing, - //they are additive. - paths = context.config.paths; - packages = context.config.packages; - - //Mix in the config values, favoring the new values over - //existing ones in context.config. - req.mixin(context.config, config, true); - - //Adjust paths if necessary. - if (config.paths) { - for (prop in config.paths) { - if (!(prop in empty)) { - paths[prop] = config.paths[prop]; - } - } - context.config.paths = paths; - } - - packagePaths = config.packagePaths; - if (packagePaths || config.packages) { - //Convert packagePaths into a packages config. - if (packagePaths) { - for (prop in packagePaths) { - if (!(prop in empty)) { - configurePackageDir(packages, packagePaths[prop], prop); - } - } - } - - //Adjust packages if necessary. - if (config.packages) { - configurePackageDir(packages, config.packages); - } - - //Done with modifications, assing packages back to context config - context.config.packages = packages; - } - - //If priority loading is in effect, trigger the loads now - if (config.priority) { - //Create a separate config property that can be - //easily tested for config priority completion. - //Do this instead of wiping out the config.priority - //in case it needs to be inspected for debug purposes later. - req(config.priority); - context.config.priorityWait = config.priority; - } - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (config.deps || config.callback) { - req(config.deps || [], config.callback); - } - - //>>excludeStart("requireExcludePageLoad", pragmas.requireExcludePageLoad); - //Set up ready callback, if asked. Useful when require is defined as a - //config object before require.js is loaded. - if (config.ready) { - req.ready(config.ready); - } - //>>excludeEnd("requireExcludePageLoad"); - - //If it is just a config block, nothing else, - //then return. - if (!deps) { - return; - } - } - - //Normalize dependency strings: need to determine if they have - //prefixes and to also normalize any relative paths. Replace the deps - //array of strings with an array of objects. - if (deps) { - outDeps = deps; - deps = []; - for (i = 0; i < outDeps.length; i++) { - deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context); - } - } - - //Store the module for later evaluation - newLength = context.waiting.push({ - name: name, - deps: deps, - callback: callback - }); - - if (name) { - //Store index of insertion for quick lookup - context.waiting[name] = newLength - 1; - - //Mark the module as specified so no need to fetch it again. - //Important to set specified here for the - //pause/resume case where there are multiple modules in a file. - context.specified[name] = true; - - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - //Load any modifiers for the module. - mods = context.modifiers[name]; - if (mods) { - req(mods, contextName); - deferMods = mods.__deferMods; - if (deferMods) { - for (i = 0; i < deferMods.length; i++) { - deferModArgs = deferMods[i]; - - //Add the context name to the def call. - lastModArg = deferModArgs[deferModArgs.length - 1]; - if (lastModArg === undefined) { - deferModArgs[deferModArgs.length - 1] = contextName; - } else if (typeof lastModArg === "string") { - deferMods.push(contextName); - } - - require.def.apply(require, deferModArgs); - } - } - } - //>>excludeEnd("requireExcludeModify"); - } - - //If the callback is not an actual function, it means it already - //has the definition of the module as a literal value. - if (name && callback && !req.isFunction(callback)) { - context.defined[name] = callback; - } - - //If a pluginPrefix is available, call the plugin, or load it. - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - if (pluginPrefix) { - callPlugin(pluginPrefix, context, { - name: "require", - args: [name, deps, callback, context] - }); - } - //>>excludeEnd("requireExcludePlugin"); - - //Hold on to the module until a script load or other adapter has finished - //evaluating the whole file. This helps when a file has more than one - //module in it -- dependencies are not traced and fetched until the whole - //file is processed. - s.paused.push([pluginPrefix, name, deps, context]); - - //Set loaded here for modules that are also loaded - //as part of a layer, where onScriptLoad is not fired - //for those cases. Do this after the inline define and - //dependency tracing is done. - //Also check if auto-registry of jQuery needs to be skipped. - if (name) { - context.loaded[name] = true; - context.jQueryDef = (name === "jquery"); - } - }; - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - req.mixin = function (target, source, force) { - for (var prop in source) { - if (!(prop in empty) && (!(prop in target) || force)) { - target[prop] = source[prop]; - } - } - return req; - }; - - req.version = version; - - //Set up page state. - s = req.s = { - ctxName: defContextName, - contexts: {}, - paused: [], - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - plugins: { - defined: {}, - callbacks: {}, - waiting: {} - }, - //>>excludeEnd("requireExcludePlugin"); - //Stores a list of URLs that should not get async script tag treatment. - skipAsync: {}, - isBrowser: isBrowser, - isPageLoaded: !isBrowser, - readyCalls: [], - doc: isBrowser ? document : null - }; - - req.isBrowser = s.isBrowser; - if (isBrowser) { - s.head = document.getElementsByTagName("head")[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName("base")[0]; - if (baseElement) { - s.head = baseElement.parentNode; - } - } - - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - /** - * Sets up a plugin callback name. Want to make it easy to test if a plugin - * needs to be called for a certain lifecycle event by testing for - * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event - * if there is a real plugin that registers for it. - */ - function makePluginCallback(name, returnOnTrue) { - var cbs = s.plugins.callbacks[name] = []; - s.plugins[name] = function () { - for (var i = 0, cb; (cb = cbs[i]); i++) { - if (cb.apply(null, arguments) === true && returnOnTrue) { - return true; - } - } - return false; - }; - } - - /** - * Registers a new plugin for require. - */ - req.plugin = function (obj) { - var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks, - waiting = s.plugins.waiting[prefix], generics, - defined = s.plugins.defined, contexts = s.contexts, context; - - //Do not allow redefinition of a plugin, there may be internal - //state in the plugin that could be lost. - if (defined[prefix]) { - return req; - } - - //Save the plugin. - defined[prefix] = obj; - - //Set up plugin callbacks for methods that need to be generic to - //require, for lifecycle cases where it does not care about a particular - //plugin, but just that some plugin work needs to be done. - generics = ["newContext", "isWaiting", "orderDeps"]; - for (i = 0; (prop = generics[i]); i++) { - if (!s.plugins[prop]) { - makePluginCallback(prop, prop === "isWaiting"); - } - cbs[prop].push(obj[prop]); - } - - //Call newContext for any contexts that were already created. - if (obj.newContext) { - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - obj.newContext(context); - } - } - } - - //If there are waiting requests for a plugin, execute them now. - if (waiting) { - for (i = 0; (call = waiting[i]); i++) { - if (obj[call.name]) { - obj[call.name].apply(null, call.args); - } - } - delete s.plugins.waiting[prefix]; - } - - return req; - }; - //>>excludeEnd("requireExcludePlugin"); - - /** - * As of jQuery 1.4.3, it supports a readyWait property that will hold off - * calling jQuery ready callbacks until all scripts are loaded. Be sure - * to track it if readyWait is available. Also, since jQuery 1.4.3 does - * not register as a module, need to do some global inference checking. - * Even if it does register as a module, not guaranteed to be the precise - * name of the global. If a jQuery is tracked for this context, then go - * ahead and register it as a module too, if not already in process. - */ - function jQueryCheck(context, jqCandidate) { - if (!context.jQuery) { - var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null); - if ($ && "readyWait" in $) { - context.jQuery = $; - - //Manually create a "jquery" module entry if not one already - //or in process. - if (!context.defined.jquery && !context.jQueryDef) { - context.defined.jquery = $; - } - - //Make sure - if (context.scriptCount) { - $.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - } - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - * @param {Object} context the context object - */ - req.completeLoad = function (moduleName, context) { - //If there is a waiting require.def call - var args; - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - break; - } else if (args[0] === moduleName) { - //Found matching require.def call for this script! - break; - } else { - //Some other named require.def call, most likely the result - //of a build layer that included many require.def calls. - callDefMain(args, context); - } - } - if (args) { - callDefMain(args, context); - } - - //Mark the script as loaded. Note that this can be different from a - //moduleName that maps to a require.def call. This line is important - //for traditional browser scripts. - context.loaded[moduleName] = true; - - //If a global jQuery is defined, check for it. Need to do it here - //instead of main() since stock jQuery does not register as - //a module via define. - jQueryCheck(context); - - context.scriptCount -= 1; - resume(context); - }; - - /** - * Legacy function, remove at some point - */ - req.pause = req.resume = function () {}; - - /** - * Trace down the dependencies to see if they are loaded. If not, trigger - * the load. - * @param {String} pluginPrefix the plugin prefix, if any associated with the name. - * - * @param {String} name: the name of the module that has the dependencies. - * - * @param {Array} deps array of dependencies. - * - * @param {Object} context: the loading context. - * - * @private - */ - req.checkDeps = function (pluginPrefix, name, deps, context) { - //Figure out if all the modules are loaded. If the module is not - //being loaded or already loaded, add it to the "to load" list, - //and request it to be loaded. - var i, dep; - - if (pluginPrefix) { - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - callPlugin(pluginPrefix, context, { - name: "checkDeps", - args: [name, deps, context] - }); - //>>excludeEnd("requireExcludePlugin"); - } else { - for (i = 0; (dep = deps[i]); i++) { - if (!context.specified[dep.fullName]) { - context.specified[dep.fullName] = true; - - //Reset the start time to use for timeouts - context.startTime = (new Date()).getTime(); - - //If a plugin, call its load method. - if (dep.prefix) { - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - callPlugin(dep.prefix, context, { - name: "load", - args: [dep.name, context.contextName] - }); - //>>excludeEnd("requireExcludePlugin"); - } else { - req.load(dep.name, context.contextName); - } - } - } - } - }; - - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - /** - * Register a module that modifies another module. The modifier will - * only be called once the target module has been loaded. - * - * First syntax: - * - * require.modify({ - * "some/target1": "my/modifier1", - * "some/target2": "my/modifier2", - * }); - * - * With this syntax, the my/modifier1 will only be loaded when - * "some/target1" is loaded. - * - * Second syntax, defining a modifier. - * - * require.modify("some/target1", "my/modifier", - * ["some/target1", "some/other"], - * function (target, other) { - * //Modify properties of target here. - * Only properties of target can be modified, but - * target cannot be replaced. - * } - * ); - */ - req.modify = function (target, name, deps, callback, contextName) { - var prop, modifier, list, - cName = (typeof target === "string" ? contextName : name) || s.ctxName, - context = s.contexts[cName], - mods = context.modifiers; - - if (typeof target === "string") { - //A modifier module. - //First store that it is a modifier. - list = mods[target] || (mods[target] = []); - if (!list[name]) { - list.push(name); - list[name] = true; - } - - //Trigger the normal module definition logic if the target - //is already in the system. - if (context.specified[target]) { - req.def(name, deps, callback, contextName); - } else { - //Hold on to the execution/dependency checks for the modifier - //until the target is fetched. - (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]); - } - } else { - //A list of modifiers. Save them for future reference. - for (prop in target) { - if (!(prop in empty)) { - //Store the modifier for future use. - modifier = target[prop]; - list = mods[prop] || (context.modifiers[prop] = []); - if (!list[modifier]) { - list.push(modifier); - list[modifier] = true; - - if (context.specified[prop]) { - //Load the modifier right away. - req([modifier], cName); - } - } - } - } - } - }; - //>>excludeEnd("requireExcludeModify"); - - req.isArray = function (it) { - return ostring.call(it) === "[object Array]"; - }; - - req.isFunction = isFunction; - - /** - * Gets one module's exported value. This method is used by require(). - * It is broken out as a separate function to allow a host environment - * shim to overwrite this function with something appropriate for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} [contextName] the name of the context to use. Uses - * default context if no contextName is provided. You should never - * pass the contextName explicitly -- it is handled by the require() code. - * @param {String} [relModuleName] a module name to use for relative - * module name lookups. You should never pass this argument explicitly -- - * it is handled by the require() code. - * - * @returns {Object} the exported module value. - */ - req.get = function (moduleName, contextName, relModuleName) { - if (moduleName === "require" || moduleName === "exports" || moduleName === "module") { - req.onError(new Error("Explicit require of " + moduleName + " is not allowed.")); - } - contextName = contextName || s.ctxName; - - var ret, context = s.contexts[contextName], nameProps; - - //Normalize module name, if it contains . or .. - nameProps = req.splitPrefix(moduleName, relModuleName, context); - - ret = context.defined[nameProps.name]; - if (ret === undefined) { - req.onError(new Error("require: module name '" + - moduleName + - "' has not been loaded yet for context: " + - contextName)); - } - return ret; - }; - - /** - * Makes the request to load a module. May be an async load depending on - * the environment and the circumstance of the load call. Override this - * method in a host environment shim to do something specific for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} contextName the name of the context to use. - */ - req.load = function (moduleName, contextName) { - var context = s.contexts[contextName], - urlFetched = context.urlFetched, - loaded = context.loaded, url; - s.isDone = false; - - //Only set loaded to false for tracking if it has not already been set. - if (!loaded[moduleName]) { - loaded[moduleName] = false; - } - - if (contextName !== s.ctxName) { - //Not in the right context now, hold on to it until - //the current context finishes all its loading. - contextLoads.push(arguments); - } else { - //First derive the path name for the module. - url = req.nameToUrl(moduleName, null, contextName); - if (!urlFetched[url]) { - context.scriptCount += 1; - req.attach(url, contextName, moduleName); - urlFetched[url] = true; - - //If tracking a jQuery, then make sure its readyWait - //is incremented to prevent its ready callbacks from - //triggering too soon. - if (context.jQuery && !context.jQueryIncremented) { - context.jQuery.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - }; - - req.jsExtRegExp = /^\/|:|\?|\.js$/; - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @param {Object} context - * @returns {String} normalized name - */ - req.normalizeName = function (name, baseName, context) { - //Adjust any relative paths. - var part; - if (name.charAt(0) === ".") { - //If have a base name, try to normalize against it, - //otherwise, assume it is a top-level require that will - //be relative to baseUrl in the end. - if (baseName) { - if (context.config.packages[baseName]) { - //If the baseName is a package name, then just treat it as one - //name to concat the name with. - baseName = [baseName]; - } else { - //Convert baseName to array, and lop off the last part, - //so that . matches that "directory" and not name of the baseName's - //module. For instance, baseName of "one/two/three", maps to - //"one/two/three.js", but we want the directory, "one/two" for - //this normalization. - baseName = baseName.split("/"); - baseName = baseName.slice(0, baseName.length - 1); - } - - name = baseName.concat(name.split("/")); - for (i = 0; (part = name[i]); i++) { - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - if (i === 1) { - //End of the line. Keep at least one non-dot - //path segment at the front so it can be mapped - //correctly to disk. Otherwise, there is likely - //no path mapping for '..'. - break; - } else if (i > 1) { - name.splice(i - 1, 2); - i -= 2; - } - } - } - name = name.join("/"); - } - } - return name; - }; - - /** - * Splits a name into a possible plugin prefix and - * the module name. If baseName is provided it will - * also normalize the name via require.normalizeName() - * - * @param {String} name the module name - * @param {String} [baseName] base name that name is - * relative to. - * @param {Object} context - * - * @returns {Object} with properties, 'prefix' (which - * may be null), 'name' and 'fullName', which is a combination - * of the prefix (if it exists) and the name. - */ - req.splitPrefix = function (name, baseName, context) { - var index = name.indexOf("!"), prefix = null; - if (index !== -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - - //Account for relative paths if there is a base name. - name = req.normalizeName(name, baseName, context); - - return { - prefix: prefix, - name: name, - fullName: prefix ? prefix + "!" + name : name - }; - }; - - /** - * Start of a public API replacement for nameToUrl. For now, just leverage - * nameToUrl, but know that nameToUrl will go away in the future. - * moduleNamePlusExt is of format "some/module/thing.html". It only works - * for module-like names and will not work with any dependency name in the - * future (for instance, passing "http://a.com/some/thing.html" will not - * make any sense) - */ - //TODO: what does requ.toUrl("packageName") resolve to? base package - //dir or lib? Probably base package dir. - /* - req.toUrl = function (moduleNamePlusExt, contextName, relModuleName) { - var index = moduleNamePlusExt.lastIndexOf('.'), - ext = null; - - if (index !== -1) { - ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length); - moduleNamePlusExt = moduleNamePlusExt.substring(0, index); - } - - return req.nameToUrl(moduleNamePlusExt, ext, contextName, relModuleName); - }; - */ - - /** - * Converts a module name to a file path. - */ - req.nameToUrl = function (moduleName, ext, contextName, relModuleName) { - var paths, packages, pkg, pkgPath, syms, i, parentModule, url, - context = s.contexts[contextName], - config = context.config; - - //Normalize module name if have a base relative module name to work from. - moduleName = req.normalizeName(moduleName, relModuleName, context); - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file. - //The slash is important for protocol-less URLs as well as full paths. - if (req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext ? ext : ""); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - packages = config.packages; - - syms = moduleName.split("/"); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i--) { - parentModule = syms.slice(0, i).join("/"); - if (paths[parentModule]) { - syms.splice(0, i, paths[parentModule]); - break; - } else if ((pkg = packages[parentModule])) { - //pkg can have just a string value to the path - //or can be an object with props: - //main, lib, name, location. - pkgPath = pkg.location + '/' + pkg.lib; - //If module name is just the package name, then looking - //for the main module. - if (moduleName === pkg.name) { - pkgPath += '/' + pkg.main; - } - syms.splice(0, i, pkgPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join("/") + (ext || ".js"); - url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url; - } - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }; - - //In async environments, checkLoaded can get called a few times in the same - //call stack. Allow only one to do the finishing work. Set to false - //for sync environments. - req.blockCheckLoaded = true; - - /** - * Checks if all modules for a context are loaded, and if so, evaluates the - * new ones in right dependency order. - * - * @private - */ - req.checkLoaded = function (contextName) { - var context = s.contexts[contextName || s.ctxName], - waitInterval = context.config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - loaded, defined = context.defined, - modifiers = context.modifiers, waiting, noLoads = "", - hasLoadedProp = false, stillLoading = false, prop, - - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps, - //>>excludeEnd("requireExcludePlugin"); - - i, module, allDone, loads, loadArgs, err; - - //If already doing a checkLoaded call, - //then do not bother checking loaded state. - if (context.isCheckLoaded) { - return; - } - - //Determine if priority loading is done. If so clear the priority. If - //not, then do not check - if (context.config.priorityWait) { - if (isPriorityDone(context)) { - //Call resume, since it could have - //some waiting dependencies to trace. - resume(context); - } else { - return; - } - } - - //Signal that checkLoaded is being require, so other calls that could be triggered - //by calling a waiting callback that then calls require and then this function - //should not proceed. At the end of this function, if there are still things - //waiting, then checkLoaded will be called again. - context.isCheckLoaded = req.blockCheckLoaded; - - //Grab waiting and loaded lists here, since it could have changed since - //this function was first called. - waiting = context.waiting; - loaded = context.loaded; - - //See if anything is still in flight. - for (prop in loaded) { - if (!(prop in empty)) { - hasLoadedProp = true; - if (!loaded[prop]) { - if (expired) { - noLoads += prop + " "; - } else { - stillLoading = true; - break; - } - } - } - } - - //Check for exit conditions. - if (!hasLoadedProp && !waiting.length - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - && (!pIsWaiting || !pIsWaiting(context)) - //>>excludeEnd("requireExcludePlugin"); - ) { - //If the loaded object had no items, then the rest of - //the work below does not need to be done. - context.isCheckLoaded = false; - return; - } - if (expired && noLoads) { - //If wait time expired, throw error of unloaded modules. - err = new Error("require.js load timeout for modules: " + noLoads); - err.requireType = "timeout"; - err.requireModules = noLoads; - req.onError(err); - } - if (stillLoading) { - //Something is still waiting to load. Wait for it. - context.isCheckLoaded = false; - if (isBrowser || isWebWorker) { - setTimeout(function () { - req.checkLoaded(contextName); - }, 50); - } - return; - } - - //Order the dependencies. Also clean up state because the evaluation - //of modules might create new loading tasks, so need to reset. - //Be sure to call plugins too. - context.waiting = []; - context.loaded = {}; - - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - //Call plugins to order their dependencies, do their - //module definitions. - if (pOrderDeps) { - pOrderDeps(context); - } - //>>excludeEnd("requireExcludePlugin"); - - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - //Before defining the modules, give priority treatment to any modifiers - //for modules that are already defined. - for (prop in modifiers) { - if (!(prop in empty)) { - if (defined[prop]) { - req.execModifiers(prop, {}, waiting, context); - } - } - } - //>>excludeEnd("requireExcludeModify"); - - //Define the modules, doing a depth first search. - for (i = 0; (module = waiting[i]); i++) { - req.exec(module, {}, waiting, context); - } - - //Indicate checkLoaded is now done. - context.isCheckLoaded = false; - - if (context.waiting.length - //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin); - || (pIsWaiting && pIsWaiting(context)) - //>>excludeEnd("requireExcludePlugin"); - ) { - //More things in this context are waiting to load. They were probably - //added while doing the work above in checkLoaded, calling module - //callbacks that triggered other require calls. - req.checkLoaded(contextName); - } else if (contextLoads.length) { - //Check for other contexts that need to load things. - //First, make sure current context has no more things to - //load. After defining the modules above, new require calls - //could have been made. - loaded = context.loaded; - allDone = true; - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - allDone = false; - break; - } - } - } - - if (allDone) { - s.ctxName = contextLoads[0][1]; - loads = contextLoads; - //Reset contextLoads in case some of the waiting loads - //are for yet another context. - contextLoads = []; - for (i = 0; (loadArgs = loads[i]); i++) { - req.load.apply(req, loadArgs); - } - } - } else { - //Make sure we reset to default context. - s.ctxName = defContextName; - s.isDone = true; - if (req.callReady) { - req.callReady(); - } - } - }; - - /** - * Helper function that creates a setExports function for a "module" - * CommonJS dependency. Do this here to avoid creating a closure that - * is part of a loop in require.exec. - */ - function makeSetExports(moduleObj) { - return function (exports) { - moduleObj.exports = exports; - }; - } - - function makeContextModuleFunc(name, contextName, moduleName) { - return function () { - //A version of a require function that forces a contextName value - //and also passes a moduleName value for items that may need to - //look up paths relative to the moduleName - var args = [].concat(aps.call(arguments, 0)); - args.push(contextName, moduleName); - return (name ? require[name] : require).apply(null, args); - }; - } - - /** - * Helper function that creates a require function object to give to - * modules that ask for it as a dependency. It needs to be specific - * per module because of the implication of path mappings that may - * need to be relative to the module name. - */ - function makeRequire(context, moduleName) { - var contextName = context.contextName, - modRequire = makeContextModuleFunc(null, contextName, moduleName); - - req.mixin(modRequire, { - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - modify: makeContextModuleFunc("modify", contextName, moduleName), - //>>excludeEnd("requireExcludeModify"); - def: makeContextModuleFunc("def", contextName, moduleName), - get: makeContextModuleFunc("get", contextName, moduleName), - nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName), - toUrl: makeContextModuleFunc("toUrl", contextName, moduleName), - ready: req.ready, - context: context, - config: context.config, - isBrowser: s.isBrowser - }); - return modRequire; - } - - /** - * Executes the modules in the correct order. - * - * @private - */ - req.exec = function (module, traced, waiting, context) { - //Some modules are just plain script files, abddo not have a formal - //module definition, - if (!module) { - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - } - - var name = module.name, cb = module.callback, deps = module.deps, j, dep, - defined = context.defined, ret, args = [], depModule, cjsModule, - usingExports = false, depName; - - //If already traced or defined, do not bother a second time. - if (name) { - if (traced[name] || name in defined) { - return defined[name]; - } - - //Mark this module as being traced, so that it is not retraced (as in a circular - //dependency) - traced[name] = true; - } - - if (deps) { - for (j = 0; (dep = deps[j]); j++) { - depName = dep.name; - if (depName === "require") { - depModule = makeRequire(context, name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - depModule = defined[name] = {}; - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = depModule = { - id: name, - uri: name ? req.nameToUrl(name, null, context.contextName) : undefined - }; - cjsModule.setExports = makeSetExports(cjsModule); - } else { - //Get dependent module. It could not exist, for a circular - //dependency or if the loaded dependency does not actually call - //require. Favor not throwing an error here if undefined because - //we want to allow code that does not use require as a module - //definition framework to still work -- allow a web site to - //gradually update to contained modules. That is more - //important than forcing a throw for the circular dependency case. - depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context)); - } - - args.push(depModule); - } - } - - //Call the callback to define the module, if necessary. - cb = module.callback; - if (cb && req.isFunction(cb)) { - ret = req.execCb(name, cb, args); - if (name) { - //If using exports and the function did not return a value, - //and the "module" object for this definition function did not - //define an exported value, then use the exports object. - if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) { - ret = defined[name]; - } else { - if (cjsModule && "exports" in cjsModule) { - ret = defined[name] = cjsModule.exports; - } else { - if (name in defined && !usingExports) { - req.onError(new Error(name + " has already been defined")); - } - defined[name] = ret; - } - } - } - } - - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - //Execute modifiers, if they exist. - req.execModifiers(name, traced, waiting, context); - //>>excludeEnd("requireExcludeModify"); - - return ret; - }; - - /** - * Executes a module callack function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * @param {String} name the module name. - * @param {Function} cb the module callback/definition function. - * @param {Array} args The arguments (dependent modules) to pass to callback. - * - * @private - */ - req.execCb = function (name, cb, args) { - return cb.apply(null, args); - }; - - //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify); - /** - * Executes modifiers for the given module name. - * @param {String} target - * @param {Object} traced - * @param {Object} context - * - * @private - */ - req.execModifiers = function (target, traced, waiting, context) { - var modifiers = context.modifiers, mods = modifiers[target], mod, i; - if (mods) { - for (i = 0; i < mods.length; i++) { - mod = mods[i]; - //Not all modifiers define a module, they might collect other modules. - //If it is just a collection it will not be in waiting. - if (mod in waiting) { - req.exec(waiting[waiting[mod]], traced, waiting, context); - } - } - delete modifiers[target]; - } - }; - //>>excludeEnd("requireExcludeModify"); - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - * - * @private - */ - req.onScriptLoad = function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement, contextName, moduleName, - context; - if (evt.type === "load" || readyRegExp.test(node.readyState)) { - //Pull out the name of the module and the context. - contextName = node.getAttribute("data-requirecontext"); - moduleName = node.getAttribute("data-requiremodule"); - context = s.contexts[contextName]; - - req.completeLoad(moduleName, context); - - //Clean up script binding. - if (node.removeEventListener) { - node.removeEventListener("load", req.onScriptLoad, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. - node.detachEvent("onreadystatechange", req.onScriptLoad); - } - } - }; - - /** - * Attaches the script represented by the URL to the current - * environment. Right now only supports browser loading, - * but can be redefined in other environments to do the right thing. - * @param {String} url the url of the script to attach. - * @param {String} contextName the name of the context that wants the script. - * @param {moduleName} the name of the module that is associated with the script. - * @param {Function} [callback] optional callback, defaults to require.onScriptLoad - * @param {String} [type] optional type, defaults to text/javascript - */ - req.attach = function (url, contextName, moduleName, callback, type) { - var node, loaded, context; - if (isBrowser) { - //In the browser so use a script tag - callback = callback || req.onScriptLoad; - node = document.createElement("script"); - node.type = type || "text/javascript"; - node.charset = "utf-8"; - //Use async so Gecko does not block on executing the script if something - //like a long-polling comet tag is being run first. Gecko likes - //to evaluate scripts in DOM order, even for dynamic scripts. - //It will fetch them async, but only evaluate the contents in DOM - //order, so a long-polling script tag can delay execution of scripts - //after it. But telling Gecko we expect async gets us the behavior - //we want -- execute it whenever it is finished downloading. Only - //Helps Firefox 3.6+ - //Allow some URLs to not be fetched async. Mostly helps the order! - //plugin - node.async = !s.skipAsync[url]; - - node.setAttribute("data-requirecontext", contextName); - node.setAttribute("data-requiremodule", moduleName); - - //Set up load listener. - if (node.addEventListener) { - node.addEventListener("load", callback, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous require.def call to a name. - //However, IE reports the script as being in "interactive" - //readyState at the time of the require.def call. - useInteractive = true; - node.attachEvent("onreadystatechange", callback); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous require.def - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - s.head.insertBefore(node, baseElement); - } else { - s.head.appendChild(node); - } - currentlyAddingScript = null; - return node; - } else if (isWebWorker) { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - context = s.contexts[contextName]; - loaded = context.loaded; - loaded[moduleName] = false; - - importScripts(url); - - //Account for anonymous modules - req.completeLoad(moduleName, context); - } - return null; - }; - - //Determine what baseUrl should be if not already defined via a require config object - s.baseUrl = cfg.baseUrl; - if (isBrowser && (!s.baseUrl || !s.head)) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - scripts = document.getElementsByTagName("script"); - if (cfg.baseUrlMatch) { - rePkg = cfg.baseUrlMatch; - } else { - //>>includeStart("jquery", pragmas.jquery); - rePkg = /(requireplugins-|require-)?jquery[\-\d\.]*(min)?\.js(\W|$)/i; - //>>includeEnd("jquery"); - - //>>includeStart("dojoConvert", pragmas.dojoConvert); - rePkg = /dojo\.js(\W|$)/i; - //>>includeEnd("dojoConvert"); - - //>>excludeStart("dojoConvert", pragmas.dojoConvert); - - //>>excludeStart("jquery", pragmas.jquery); - rePkg = /(allplugins-)?require\.js(\W|$)/i; - //>>excludeEnd("jquery"); - - //>>excludeEnd("dojoConvert"); - } - - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - //Set the "head" where we can append children by - //using the script's parent. - if (!s.head) { - s.head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. - if (!dataMain && (dataMain = script.getAttribute('data-main'))) { - cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain]; - - //Favor using data-main tag as the base URL instead of - //trying to pattern-match src values. - if (!cfg.baseUrl && (src = script.src)) { - src = src.split('/'); - src.pop(); - //Make sure current config gets the value. - s.baseUrl = cfg.baseUrl = src.length ? src.join('/') : './'; - } - } - - //Using .src instead of getAttribute to get an absolute URL. - //While using a relative URL will be fine for script tags, other - //URLs used for text! resources that use XHR calls might benefit - //from an absolute URL. - if (!s.baseUrl && (src = script.src)) { - m = src.match(rePkg); - if (m) { - s.baseUrl = src.substring(0, m.index); - break; - } - } - } - } - - //>>excludeStart("requireExcludePageLoad", pragmas.requireExcludePageLoad); - //****** START page load functionality **************** - /** - * Sets the page as loaded and triggers check for all modules loaded. - */ - req.pageLoaded = function () { - if (!s.isPageLoaded) { - s.isPageLoaded = true; - if (scrollIntervalId) { - clearInterval(scrollIntervalId); - } - - //Part of a fix for FF < 3.6 where readyState was not set to - //complete so libraries like jQuery that check for readyState - //after page load where not getting initialized correctly. - //Original approach suggested by Andrea Giammarchi: - //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html - //see other setReadyState reference for the rest of the fix. - if (setReadyState) { - document.readyState = "complete"; - } - - req.callReady(); - } - }; - - /** - * Internal function that calls back any ready functions. If you are - * integrating RequireJS with another library without require.ready support, - * you can define this method to call your page ready code instead. - */ - req.callReady = function () { - var callbacks = s.readyCalls, i, callback, contexts, context, prop; - - if (s.isPageLoaded && s.isDone) { - if (callbacks.length) { - s.readyCalls = []; - for (i = 0; (callback = callbacks[i]); i++) { - callback(); - } - } - - //If jQuery with readyWait is being tracked, updated its - //readyWait count. - contexts = s.contexts; - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - if (context.jQueryIncremented) { - context.jQuery.readyWait -= 1; - context.jQueryIncremented = false; - } - } - } - } - }; - - /** - * Registers functions to call when the page is loaded - */ - req.ready = function (callback) { - if (s.isPageLoaded && s.isDone) { - callback(); - } else { - s.readyCalls.push(callback); - } - return req; - }; - - if (isBrowser) { - if (document.addEventListener) { - //Standards. Hooray! Assumption here that if standards based, - //it knows about DOMContentLoaded. - document.addEventListener("DOMContentLoaded", req.pageLoaded, false); - window.addEventListener("load", req.pageLoaded, false); - //Part of FF < 3.6 readystate fix (see setReadyState refs for more info) - if (!document.readyState) { - setReadyState = true; - document.readyState = "loading"; - } - } else if (window.attachEvent) { - window.attachEvent("onload", req.pageLoaded); - - //DOMContentLoaded approximation, as found by Diego Perini: - //http://javascript.nwbox.com/IEContentLoaded/ - if (self === self.top) { - scrollIntervalId = setInterval(function () { - try { - //From this ticket: - //http://bugs.dojotoolkit.org/ticket/11106, - //In IE HTML Application (HTA), such as in a selenium test, - //javascript in the iframe can't see anything outside - //of it, so self===self.top is true, but the iframe is - //not the top window and doScroll will be available - //before document.body is set. Test document.body - //before trying the doScroll trick. - if (document.body) { - document.documentElement.doScroll("left"); - req.pageLoaded(); - } - } catch (e) {} - }, 30); - } - } - - //Check if document already complete, and if so, just trigger page load - //listeners. NOTE: does not work with Firefox before 3.6. To support - //those browsers, manually call require.pageLoaded(). - if (document.readyState === "complete") { - req.pageLoaded(); - } - } - //****** END page load functionality **************** - //>>excludeEnd("requireExcludePageLoad"); - - //Set up default context. If require was a configuration object, use that as base config. - req(cfg); - - //If modules are built into require.js, then need to make sure dependencies are - //traced. Use a setTimeout in the browser world, to allow all the modules to register - //themselves. In a non-browser env, assume that modules are not built into require.js, - //which seems odd to do on the server. - if (typeof setTimeout !== "undefined") { - setTimeout(function () { - var ctx = s.contexts[(cfg.context || defContextName)]; - //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3, - //make sure to hold onto it for readyWait triggering. - jQueryCheck(ctx); - resume(ctx); - }, 0); - } -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/i18n.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require/i18n.js deleted file mode 100644 index 8e5a65fd..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/i18n.js +++ /dev/null @@ -1,326 +0,0 @@ -/** - * @license RequireJS i18n Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/*jslint regexp: false, nomen: false, plusplus: false */ -/*global require: false, navigator: false */ -"use strict"; - -/** - * This plugin handles i18n! prefixed modules. It does the following: - * - * 1) A regular module can have a dependency on an i18n bundle, but the regular - * module does not want to specify what locale to load. So it just specifies - * the top-level bundle, like "i18n!nls/colors". - * - * This plugin will load the i18n bundle at nls/colors, see that it is a root/master - * bundle since it does not have a locale in its name. It will then try to find - * the best match locale available in that master bundle, then request all the - * locale pieces for that best match locale. For instance, if the locale is "en-us", - * then the plugin will ask for the "en-us", "en" and "root" bundles to be loaded - * (but only if they are specified on the master bundle). - * - * Once all the bundles for the locale pieces load, then it mixes in all those - * locale pieces into each other, then finally sets the context.defined value - * for the nls/colors bundle to be that mixed in locale. - * - * 2) A regular module specifies a specific locale to load. For instance, - * i18n!nls/fr-fr/colors. In this case, the plugin needs to load the master bundle - * first, at nls/colors, then figure out what the best match locale is for fr-fr, - * since maybe only fr or just root is defined for that locale. Once that best - * fit is found, all of its locale pieces need to have their bundles loaded. - * - * Once all the bundles for the locale pieces load, then it mixes in all those - * locale pieces into each other, then finally sets the context.defined value - * for the nls/fr-fr/colors bundle to be that mixed in locale. - */ -(function () { - //regexp for reconstructing the master bundle name from parts of the regexp match - //nlsRegExp.exec("foo/bar/baz/nls/en-ca/foo") gives: - //["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"] - //nlsRegExp.exec("foo/bar/baz/nls/foo") gives: - //["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""] - //so, if match[5] is blank, it means this is the top bundle definition. - var nlsRegExp = /(^.*(^|\/)nls(\/|$))([^\/]*)\/?([^\/]*)/, - empty = {}; - - function getWaiting(name, context) { - var nlswAry = context.nlsWaiting; - return nlswAry[name] || - //Push a new waiting object on the nlsWaiting array, but also put - //a shortcut lookup by name to the object on the array. - (nlswAry[name] = nlswAry[(nlswAry.push({ _name: name}) - 1)]); - } - - /** - * Makes sure all the locale pieces are loaded, and finds the best match - * for the requested locale. - */ - function resolveLocale(masterName, bundle, locale, context) { - //Break apart the locale to get the parts. - var i, parts, toLoad, nlsw, loc, val, bestLoc = "root"; - - parts = locale.split("-"); - - //Now see what bundles exist for each country/locale. - //Want to walk up the chain, so if locale is en-us-foo, - //look for en-us-foo, en-us, en, then root. - toLoad = []; - - nlsw = getWaiting(masterName, context); - - for (i = parts.length; i > -1; i--) { - loc = i ? parts.slice(0, i).join("-") : "root"; - val = bundle[loc]; - if (val) { - //Store which bundle to use for the default bundle definition. - if (locale === context.config.locale && !nlsw._match) { - nlsw._match = loc; - } - - //Store the best match for the target locale - if (bestLoc === "root") { - bestLoc = loc; - } - - //Track that the locale needs to be resolved with its parts. - //Mark what locale should be used when resolving. - nlsw[loc] = loc; - - //If locale value is true, it means it is a resource that - //needs to be loaded. Track it to load if it has not already - //been asked for. - if (val === true) { - //split off the bundl name from master name and insert the - //locale before the bundle name. So, if masterName is - //some/path/nls/colors, then the locale fr-fr's bundle name should - //be some/path/nls/fr-fr/colors - val = masterName.split("/"); - val.splice(-1, 0, loc); - val = val.join("/"); - - if (!context.specified[val] && !(val in context.loaded) && !context.defined[val]) { - context.defPlugin[val] = 'i18n'; - toLoad.push(val); - } - } - } - } - - //If locale was not an exact match, store the closest match for it. - if (bestLoc !== locale) { - if (context.defined[bestLoc]) { - //Already got it. Easy peasy lemon squeezy. - context.defined[locale] = context.defined[bestLoc]; - } else { - //Need to wait for things to load then define it. - nlsw[locale] = bestLoc; - } - } - - //Load any bundles that are still needed. - if (toLoad.length) { - require(toLoad, context.contextName); - } - } - - require.plugin({ - prefix: "i18n", - - /** - * This callback is prefix-specific, only gets called for this prefix - */ - require: function (name, deps, callback, context) { - var i, match, nlsw, bundle, master, toLoad, obj = context.defined[name]; - - //All i18n modules must match the nls module name structure. - match = nlsRegExp.exec(name); - //If match[5] is blank, it means this is the top bundle definition, - //so it does not have to be handled. Only deal with ones that have a locale - //(a match[4] value but no match[5]) - if (match[5]) { - master = match[1] + match[5]; - - //Track what locale bundle need to be generated once all the modules load. - nlsw = getWaiting(master, context); - nlsw[match[4]] = match[4]; - - bundle = context.nls[master]; - if (!bundle) { - //No master bundle yet, ask for it. - context.defPlugin[master] = 'i18n'; - require([master], context.contextName); - bundle = context.nls[master] = {}; - } - //For nls modules, the callback is just a regular object, - //so save it off in the bundle now. - bundle[match[4]] = callback; - } else { - //Integrate bundle into the nls area. - bundle = context.nls[name]; - if (bundle) { - //A specific locale already started the bundle object. - //Do a mixin (which will not overwrite the locale property - //on the bundle that has the previously loaded locale's info) - require.mixin(bundle, obj); - } else { - bundle = context.nls[name] = obj; - } - context.nlsRootLoaded[name] = true; - - //Make sure there are no locales waiting to be resolved. - toLoad = context.nlsToLoad[name]; - if (toLoad) { - delete context.nlsToLoad[name]; - for (i = 0; i < toLoad.length; i++) { - resolveLocale(name, bundle, toLoad[i], context); - } - } - - resolveLocale(name, bundle, context.config.locale, context); - } - }, - - /** - * Called when a new context is defined. Use this to store - * context-specific info on it. - */ - newContext: function (context) { - require.mixin(context, { - nlsWaiting: [], - nls: {}, - nlsRootLoaded: {}, - nlsToLoad: {} - }); - if (!context.config.locale) { - context.config.locale = typeof navigator === "undefined" ? "root" : - (navigator.language || navigator.userLanguage || "root").toLowerCase(); - } - }, - - /** - * Called when a dependency needs to be loaded. - */ - load: function (name, contextName) { - //Make sure the root bundle is loaded, to check if we can support - //loading the requested locale, or if a different one needs - //to be chosen. - var masterName, context = require.s.contexts[contextName], bundle, - match = nlsRegExp.exec(name), locale = match[4]; - - //If match[5] is blank, it means this is the top bundle definition, - //so it does not have to be handled. Only deal with ones that have a locale - //(a match[4] value but no match[5]) - if (match[5]) { - //locale-specific bundle - masterName = match[1] + match[5]; - bundle = context.nls[masterName]; - if (context.nlsRootLoaded[masterName] && bundle) { - resolveLocale(masterName, bundle, locale, context); - } else { - //Store this locale to figure out after masterName is loaded and load masterName. - (context.nlsToLoad[masterName] || (context.nlsToLoad[masterName] = [])).push(locale); - context.defPlugin[masterName] = 'i18n'; - require([masterName], contextName); - } - } else { - //Top-level bundle. Just call regular load, if not already loaded - if (!context.nlsRootLoaded[name]) { - context.defPlugin[name] = 'i18n'; - require.load(name, contextName); - } - } - }, - - /** - * Called when the dependencies of a module are checked. - */ - checkDeps: function (name, deps, context) { - //i18n bundles are always defined as objects for their "dependencies", - //and that object is already processed in the require method, no need to - //do work in here. - }, - - /** - * Called to determine if a module is waiting to load. - */ - isWaiting: function (context) { - return !!context.nlsWaiting.length; - }, - - /** - * Called when all modules have been loaded. - */ - orderDeps: function (context) { - //Clear up state since further processing could - //add more things to fetch. - var i, j, master, msWaiting, bundle, parts, moduleSuffix, mixed, - modulePrefix, loc, defLoc, locPart, nlsWaiting = context.nlsWaiting, - bestFit; - context.nlsWaiting = []; - context.nlsToLoad = {}; - - //First, properly mix in any nls bundles waiting to happen. - for (i = 0; (msWaiting = nlsWaiting[i]); i++) { - //Each property is a master bundle name. - master = msWaiting._name; - bundle = context.nls[master]; - defLoc = null; - - //Create the module name parts from the master name. So, if master - //is foo/nls/bar, then the parts should be prefix: "foo/nls", - // suffix: "bar", and the final locale's module name will be foo/nls/locale/bar - parts = master.split("/"); - modulePrefix = parts.slice(0, parts.length - 1).join("/"); - moduleSuffix = parts[parts.length - 1]; - //Cycle through the locale props on the waiting object and combine - //the locales together. - for (loc in msWaiting) { - if (loc !== "_name" && !(loc in empty)) { - if (loc === "_match") { - //Found default locale to use for the top-level bundle name. - defLoc = msWaiting[loc]; - - } else if (msWaiting[loc] !== loc) { - //A "best fit" locale, store it off to the end and handle - //it at the end by just assigning the best fit value, since - //after this for loop, the best fit locale will be defined. - (bestFit || (bestFit = {}))[loc] = msWaiting[loc]; - } else { - //Mix in the properties of this locale together. - //Split the locale into pieces. - mixed = {}; - parts = loc.split("-"); - for (j = parts.length; j > 0; j--) { - locPart = parts.slice(0, j).join("-"); - if (locPart !== "root" && bundle[locPart]) { - require.mixin(mixed, bundle[locPart]); - } - } - if (bundle.root) { - require.mixin(mixed, bundle.root); - } - - context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = mixed; - } - } - } - - //Finally define the default locale. Wait to the end of the property - //loop above so that the default locale bundle has been properly mixed - //together. - context.defined[master] = context.defined[modulePrefix + "/" + defLoc + "/" + moduleSuffix]; - - //Handle any best fit locale definitions. - if (bestFit) { - for (loc in bestFit) { - if (!(loc in empty)) { - context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = context.defined[modulePrefix + "/" + bestFit[loc] + "/" + moduleSuffix]; - } - } - } - } - } - }); -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/order.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require/order.js deleted file mode 100644 index 61876412..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/order.js +++ /dev/null @@ -1,138 +0,0 @@ -/** - * @license RequireJS order Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/*jslint nomen: false, plusplus: false */ -/*global require: false, window: false, document: false, setTimeout: false */ -"use strict"; - -(function () { - //Sadly necessary browser inference due to differences in the way - //that browsers load and execute dynamically inserted javascript - //and whether the script/cache method works. - //Currently, Gecko and Opera do not load/fire onload for scripts with - //type="script/cache" but they execute injected scripts in order - //unless the 'async' flag is present. - //However, this is all changing in latest browsers implementing HTML5 - //spec. Firefox nightly supports using the .async true by default, and - //if false, then it will execute in order. Favor that test first for forward - //compatibility. However, it is unclear if webkit/IE will follow suit. - //Latest webkit breaks the script/cache trick. - var supportsInOrderExecution = (document.createElement("script").async || - (window.opera && Object.prototype.toString.call(window.opera) === "[object Opera]") || - //If Firefox 2 does not have to be supported, then - //a better check may be: - //('mozIsLocallyAvailable' in window.navigator) - ("MozAppearance" in document.documentElement.style)), - readyRegExp = /^(complete|loaded)$/; - - //Callback used by the type="script/cache" callback that indicates a script - //has finished downloading. - function scriptCacheCallback(evt) { - var node = evt.currentTarget || evt.srcElement, i, - context, contextName, moduleName, waiting, cached; - - if (evt.type === "load" || readyRegExp.test(node.readyState)) { - //Pull out the name of the module and the context. - contextName = node.getAttribute("data-requirecontext"); - moduleName = node.getAttribute("data-requiremodule"); - context = require.s.contexts[contextName]; - waiting = context.orderWaiting; - cached = context.orderCached; - - //Mark this cache request as loaded - cached[moduleName] = true; - - //Find out how many ordered modules have loaded - for (i = 0; cached[waiting[i]]; i++) {} - if (i > 0) { - require(waiting.splice(0, i), contextName); - } - - //If no other order cache items are in the queue, do some cleanup. - if (!waiting.length) { - context.orderCached = {}; - } - - //Remove this script tag from the DOM - //Use a setTimeout for cleanup because some older IE versions vomit - //if removing a script node while it is being evaluated. - setTimeout(function () { - node.parentNode.removeChild(node); - }, 15); - } - } - - require.plugin({ - prefix: "order", - - /** - * This callback is prefix-specific, only gets called for this prefix - */ - require: function (name, deps, callback, context) { - //No-op, require never gets these order items, they are always - //a dependency, see load for the action. - }, - - /** - * Called when a new context is defined. Use this to store - * context-specific info on it. - */ - newContext: function (context) { - require.mixin(context, { - orderWaiting: [], - orderCached: {} - }); - }, - - /** - * Called when a dependency needs to be loaded. - */ - load: function (name, contextName) { - var context = require.s.contexts[contextName], - url = require.nameToUrl(name, null, contextName); - - //Make sure the async attribute is not set for any pathway involving - //this script. - require.s.skipAsync[url] = true; - if (supportsInOrderExecution) { - //Just a normal script tag append, but without async attribute - //on the script. - require([name], contextName); - } else { - //Credit to LABjs author Kyle Simpson for finding that scripts - //with type="script/cache" allow scripts to be downloaded into - //browser cache but not executed. Use that - //so that subsequent addition of a real type="text/javascript" - //tag will cause the scripts to be executed immediately in the - //correct order. - context.orderWaiting.push(name); - context.loaded[name] = false; - require.attach(url, contextName, name, scriptCacheCallback, "script/cache"); - } - }, - - /** - * Called when the dependencies of a module are checked. - */ - checkDeps: function (name, deps, context) { - //No-op, checkDeps never gets these order items, they are always - //a dependency, see load for the action. - }, - - /** - * Called to determine if a module is waiting to load. - */ - isWaiting: function (context) { - return !!context.orderWaiting.length; - }, - - /** - * Called when all modules have been loaded. Not needed for this plugin. - * State is reset as part of scriptCacheCallback. - */ - orderDeps: function (context) { - } - }); -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/rhino.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require/rhino.js deleted file mode 100644 index a99d6d25..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/rhino.js +++ /dev/null @@ -1,80 +0,0 @@ -/** - * @license RequireJS rhino Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/*global require: false, readFile: false */ - -/* -TODO: Work out relative paths, that use ./ and such, and allow loading normal -CommonJS modules, by overriding require.get(). -*/ - -/*globals load: false, java: false */ -"use strict"; - -(function () { - - var fileUtil = { - backSlashRegExp: /\\/g, - - getLineSeparator: function () { - return java.lang.System.getProperty("line.separator"); //Java String - } - }; - - require.load = function (moduleName, contextName) { - var url = require.nameToUrl(moduleName, null, contextName), - context = require.s.contexts[contextName]; - - //isDone is used by require.ready() - require.s.isDone = false; - - //Indicate a the module is in process of loading. - context.loaded[moduleName] = false; - - load(url); - - //Support anonymous modules. - require.completeLoad(moduleName, context); - }; - - //Adapter to get text plugin to work. - require.fetchText = function (url, callback) { - var encoding = "utf-8", - file = new java.io.File(url), - lineSeparator = fileUtil.getLineSeparator(), - input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), - stringBuffer, line, - content = ''; - try { - stringBuffer = new java.lang.StringBuffer(); - line = input.readLine(); - - // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324 - // http://www.unicode.org/faq/utf_bom.html - - // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK: - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058 - if (line && line.length() && line.charAt(0) === 0xfeff) { - // Eat the BOM, since we've already found the encoding on this file, - // and we plan to concatenating this buffer with others; the BOM should - // only appear at the top of a file. - line = line.substring(1); - } - - stringBuffer.append(line); - - while ((line = input.readLine()) !== null) { - stringBuffer.append(lineSeparator); - stringBuffer.append(line); - } - //Make sure we return a JavaScript string and not a Java string. - content = String(stringBuffer.toString()); //String - } finally { - input.close(); - } - callback(content); - }; - -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/text.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require/text.js deleted file mode 100644 index 85bf06c3..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/text.js +++ /dev/null @@ -1,195 +0,0 @@ -/** - * @license RequireJS text Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/*jslint regexp: false, nomen: false, plusplus: false */ -/*global require: false, XMLHttpRequest: false, ActiveXObject: false */ -"use strict"; - -(function () { - var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], - xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, - bodyRegExp = /]*>\s*([\s\S]+)\s*<\/body>/im; - - if (!require.textStrip) { - require.textStrip = function (text) { - //Strips declarations so that external SVG and XML - //documents can be added to a document without worry. Also, if the string - //is an HTML document, only the part inside the body tag is returned. - if (text) { - text = text.replace(xmlRegExp, ""); - var matches = text.match(bodyRegExp); - if (matches) { - text = matches[1]; - } - } else { - text = ""; - } - return text; - }; - } - - //Upgrade require to add some methods for XHR handling. But it could be that - //this require is used in a non-browser env, so detect for existing method - //before attaching one. - if (!require.getXhr) { - require.getXhr = function () { - //Would love to dump the ActiveX crap in here. Need IE 6 to die first. - var xhr, i, progId; - if (typeof XMLHttpRequest !== "undefined") { - return new XMLHttpRequest(); - } else { - for (i = 0; i < 3; i++) { - progId = progIds[i]; - try { - xhr = new ActiveXObject(progId); - } catch (e) {} - - if (xhr) { - progIds = [progId]; // so faster next time - break; - } - } - } - - if (!xhr) { - throw new Error("require.getXhr(): XMLHttpRequest not available"); - } - - return xhr; - }; - } - - if (!require.fetchText) { - require.fetchText = function (url, callback) { - var xhr = require.getXhr(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function (evt) { - //Do not explicitly handle errors, those should be - //visible via console output in the browser. - if (xhr.readyState === 4) { - callback(xhr.responseText); - } - }; - xhr.send(null); - }; - } - - require.plugin({ - prefix: "text", - - /** - * This callback is prefix-specific, only gets called for this prefix - */ - require: function (name, deps, callback, context) { - //No-op, require never gets these text items, they are always - //a dependency, see load for the action. - }, - - /** - * Called when a new context is defined. Use this to store - * context-specific info on it. - */ - newContext: function (context) { - require.mixin(context, { - text: {}, - textWaiting: [] - }); - }, - - /** - * Called when a dependency needs to be loaded. - */ - load: function (name, contextName) { - //Name has format: some.module!filext!strip!text - //The strip and text parts are optional. - //if strip is present, then that means only get the string contents - //inside a body tag in an HTML string. For XML/SVG content it means - //removing the declarations so the content can be inserted - //into the current doc without problems. - //If text is present, it is the actual text of the file. - var strip = false, text = null, key, url, index = name.indexOf("."), - modName = name.substring(0, index), fullKey, - ext = name.substring(index + 1, name.length), - context = require.s.contexts[contextName], - tWaitAry = context.textWaiting; - - index = ext.indexOf("!"); - if (index !== -1) { - //Pull off the strip arg. - strip = ext.substring(index + 1, ext.length); - ext = ext.substring(0, index); - index = strip.indexOf("!"); - if (index !== -1 && strip.substring(0, index) === "strip") { - //Pull off the text. - text = strip.substring(index + 1, strip.length); - strip = "strip"; - } else if (strip !== "strip") { - //strip is actually the inlined text. - text = strip; - strip = null; - } - } - key = modName + "!" + ext; - fullKey = strip ? key + "!" + strip : key; - - //Store off text if it is available for the given key and be done. - if (text !== null && !context.text[key]) { - context.defined[name] = context.text[key] = text; - return; - } - - //If text is not available, load it. - if (!context.text[key] && !context.textWaiting[key] && !context.textWaiting[fullKey]) { - //Keep track that the fullKey needs to be resolved, during the - //orderDeps stage. - if (!tWaitAry[fullKey]) { - tWaitAry[fullKey] = tWaitAry[(tWaitAry.push({ - name: name, - key: key, - fullKey: fullKey, - strip: !!strip - }) - 1)]; - } - - //Load the text. - url = require.nameToUrl(modName, "." + ext, contextName); - context.loaded[name] = false; - require.fetchText(url, function (text) { - context.text[key] = text; - context.loaded[name] = true; - }); - } - }, - - /** - * Called when the dependencies of a module are checked. - */ - checkDeps: function (name, deps, context) { - //No-op, checkDeps never gets these text items, they are always - //a dependency, see load for the action. - }, - - /** - * Called to determine if a module is waiting to load. - */ - isWaiting: function (context) { - return !!context.textWaiting.length; - }, - - /** - * Called when all modules have been loaded. - */ - orderDeps: function (context) { - //Clear up state since further processing could - //add more things to fetch. - var i, dep, text, tWaitAry = context.textWaiting; - context.textWaiting = []; - for (i = 0; (dep = tWaitAry[i]); i++) { - text = context.text[dep.key]; - context.defined[dep.name] = dep.strip ? require.textStrip(text) : text; - } - } - }); -}()); diff --git a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/transportD.js b/branches/firebug1.5/sandbox/HelloModule/requirejs/require/transportD.js deleted file mode 100644 index 0ad9b32c..00000000 --- a/branches/firebug1.5/sandbox/HelloModule/requirejs/require/transportD.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * @license RequireJS transportD Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -/*jslint */ -/*global require: false */ -"use strict"; - -/** - * An adapter for the CommonJS Transport/D proposal: - * http://wiki.commonjs.org/wiki/Modules/Transport/D - * NOTE: this integration does NOT support contexts, so only one version in the page. - * @param {Object} modules a dictionary of module names with module descriptors - * @param [Array] dependencies a list of module names that are dependencies for - * all the modules listed in the modules argument. - */ -require.define = function (modules, dependencies) { - var moduleName, descriptor; - for (moduleName in modules) { - if (modules.hasOwnProperty(moduleName)) { - descriptor = modules[moduleName]; - require.def( - moduleName, - (descriptor.injects || ["require", "exports", "module"]).concat(dependencies || []), - typeof descriptor === "function" ? descriptor : descriptor.factory - ); - } - } -}; diff --git a/branches/firebug1.5/sandbox/beta.html b/branches/firebug1.5/sandbox/beta.html deleted file mode 100644 index eb5e255b..00000000 --- a/branches/firebug1.5/sandbox/beta.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -Firebug Lite 1.4 Beta Testing - - - - - -
                                -

                                Firebug Lite 1.4 Beta Testing

                                -
                                -

                                Hello World

                                - -
                                -
                                - Just a test note -
                                -
                                -

                                User interface files

                                - -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/css/css.css b/branches/firebug1.5/sandbox/css/css.css deleted file mode 100644 index 448a20d1..00000000 --- a/branches/firebug1.5/sandbox/css/css.css +++ /dev/null @@ -1,4 +0,0 @@ -div #build { - position: absolute; - height: 200px; -} \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/css/css.imported.css b/branches/firebug1.5/sandbox/css/css.imported.css deleted file mode 100644 index d4eb7797..00000000 --- a/branches/firebug1.5/sandbox/css/css.imported.css +++ /dev/null @@ -1,3 +0,0 @@ -div#build { - color: red; -} \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/css/test.html b/branches/firebug1.5/sandbox/css/test.html deleted file mode 100644 index dbc3bfe6..00000000 --- a/branches/firebug1.5/sandbox/css/test.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - -
                                -

                                FirebugLite 1.3 Testing

                                -
                                -

                                Development Functions

                                - -
                                -
                                - Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
                                -
                                -

                                User interface files

                                - -
                                -
                                -

                                Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

                                -

                                Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

                                -

                                Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

                                -

                                Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

                                -

                                Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

                                -

                                In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

                                -

                                Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

                                -

                                Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

                                -

                                Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

                                -

                                A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

                                -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/dom.html b/branches/firebug1.5/sandbox/dom.html deleted file mode 100644 index ca510496..00000000 --- a/branches/firebug1.5/sandbox/dom.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -FirebugLite 1.4 Testing - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                - -
                                - Copy the bookmarlets above to test the Firebug Lite in remote pages. -
                                -
                                -

                                User interface files

                                - -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/domplate.html b/branches/firebug1.5/sandbox/domplate.html deleted file mode 100644 index 0b651050..00000000 --- a/branches/firebug1.5/sandbox/domplate.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - -
                                1
                                -
                                2
                                -
                                3
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/dom-attributes.html b/branches/firebug1.5/sandbox/domplate/dom-attributes.html deleted file mode 100644 index 907c535f..00000000 --- a/branches/firebug1.5/sandbox/domplate/dom-attributes.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/dom-event.html b/branches/firebug1.5/sandbox/domplate/dom-event.html deleted file mode 100644 index 9fb1a940..00000000 --- a/branches/firebug1.5/sandbox/domplate/dom-event.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/dom-properties.html b/branches/firebug1.5/sandbox/domplate/dom-properties.html deleted file mode 100644 index 59649351..00000000 --- a/branches/firebug1.5/sandbox/domplate/dom-properties.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/dynamic-class-attribute.html b/branches/firebug1.5/sandbox/domplate/dynamic-class-attribute.html deleted file mode 100644 index 76030fda..00000000 --- a/branches/firebug1.5/sandbox/domplate/dynamic-class-attribute.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/for-loop-custom-iterator.html b/branches/firebug1.5/sandbox/domplate/for-loop-custom-iterator.html deleted file mode 100644 index a1c28c9d..00000000 --- a/branches/firebug1.5/sandbox/domplate/for-loop-custom-iterator.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/for-loop.html b/branches/firebug1.5/sandbox/domplate/for-loop.html deleted file mode 100644 index 1ae3601a..00000000 --- a/branches/firebug1.5/sandbox/domplate/for-loop.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/hello-world.html b/branches/firebug1.5/sandbox/domplate/hello-world.html deleted file mode 100644 index b59fb8aa..00000000 --- a/branches/firebug1.5/sandbox/domplate/hello-world.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/input-data.html b/branches/firebug1.5/sandbox/domplate/input-data.html deleted file mode 100644 index 78b3d3c6..00000000 --- a/branches/firebug1.5/sandbox/domplate/input-data.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/pass-data.html b/branches/firebug1.5/sandbox/domplate/pass-data.html deleted file mode 100644 index ea7ed232..00000000 --- a/branches/firebug1.5/sandbox/domplate/pass-data.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/reuse-tag.html b/branches/firebug1.5/sandbox/domplate/reuse-tag.html deleted file mode 100644 index 4063c8e6..00000000 --- a/branches/firebug1.5/sandbox/domplate/reuse-tag.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/table-2d-array.html b/branches/firebug1.5/sandbox/domplate/table-2d-array.html deleted file mode 100644 index 093a480b..00000000 --- a/branches/firebug1.5/sandbox/domplate/table-2d-array.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/domplate/tree.html b/branches/firebug1.5/sandbox/domplate/tree.html deleted file mode 100644 index f32659f0..00000000 --- a/branches/firebug1.5/sandbox/domplate/tree.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - - - - - - -

                                DomPlate Test

                                -
                                This is just a test file
                                -
                                - - - diff --git a/branches/firebug1.5/sandbox/firebugLite.html b/branches/firebug1.5/sandbox/firebugLite.html deleted file mode 100644 index d2978628..00000000 --- a/branches/firebug1.5/sandbox/firebugLite.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -FirebugLite 1.4 Testing - - - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                -
                                -

                                Development Functions

                                - -
                                -
                                - Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
                                -
                                -

                                User interface files

                                - -
                                -
                                -

                                Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

                                -

                                Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

                                -

                                Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

                                -

                                Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

                                -

                                Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

                                -

                                In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

                                -

                                Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

                                -

                                Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

                                -

                                Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

                                -

                                A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

                                -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/firebugLite2.html b/branches/firebug1.5/sandbox/firebugLite2.html deleted file mode 100644 index 7404494c..00000000 --- a/branches/firebug1.5/sandbox/firebugLite2.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - -FirebugLite 1.4 Testing - - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                -
                                -

                                Development Functions

                                - -
                                -
                                - Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
                                -
                                -

                                User interface files

                                - -
                                -
                                -

                                Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

                                -

                                Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

                                -

                                Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

                                -

                                Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

                                -

                                Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

                                -

                                In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

                                -

                                Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

                                -

                                Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

                                -

                                Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

                                -

                                A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

                                -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/firequery/firequery.css b/branches/firebug1.5/sandbox/firequery/firequery.css deleted file mode 100644 index 0964d660..00000000 --- a/branches/firebug1.5/sandbox/firequery/firequery.css +++ /dev/null @@ -1,34 +0,0 @@ -.objectLink-jquery-data { - color: #4B0082; - padding-left: 2px; -} - -.objectLink-jquery-sign { - color: #4B0082; -} - -.nodeData { - font-size: 90%; - color: #4B0082; - background-color: #ddd; - margin-left: 3px; - margin-right: 3px; - padding: 0px 4px; - -moz-border-radius-bottomleft: 2px; - -moz-border-radius-bottomright: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-topleft: 2px; -} - -.nodeData.mutated -{ - background-color: #EFFF79; - color: #FF0000 !important; -} - -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeData.mutated > *, -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeData > .nodeValue.mutated { - background-color: #EFFF79; - border-color: #EFFF79; - color: #FF0000 !important; -} diff --git a/branches/firebug1.5/sandbox/firequery/firequery.js b/branches/firebug1.5/sandbox/firequery/firequery.js deleted file mode 100644 index 0be5b4bc..00000000 --- a/branches/firebug1.5/sandbox/firequery/firequery.js +++ /dev/null @@ -1,1094 +0,0 @@ -// This source contains copy&pasted various bits from Firebug sources. -FBL.ns(function() { - with(FBL) { - - function checkFirebugVersion(minMajor, minMinor, minPatch) { - if (!minPatch) minPatch = 0; - if (!minMinor) minMinor = 0; - if (!minMajor) minMajor = 0; - var version = Firebug.getVersion(); - if (!version) return false; - var a = version.split('.'); - if (a.length<2) return false; - // we want Firebug version 1.3+ (including alphas/betas and other weird stuff) - var major = parseInt(a[0], 10); - var minor = parseInt(a[1], 10); - if (!a[2]) a[2] = "0"; - var patch = parseInt(a[2], 10); - return (major>minMajor) || - (major==minMajor && minor>minMinor) || - (major==minMajor && minor==minMinor && patch>=minPatch); - }; - - if (!Firebug.CommandLine.evaluateInWebPage) { - // backport from FB1.4 - Firebug.CommandLine.evaluateInWebPage = function(expr, context, targetWindow) { - var win = targetWindow ? targetWindow : context.window; - var doc = (win.wrappedJSObject ? win.wrappedJSObject.document : win.document); - var element = addScript(doc, "_firebugInWebPage", expr); - element.parentNode.removeChild(element); // we don't need the script element, result is in DOM object - return "true"; - }; - } - - const fireQueryHomepage = "http://firequery.binaryage.com"; - - const Cc = Components.classes; - const Ci = Components.interfaces; - - const nsIPrefBranch = Ci.nsIPrefBranch; - const nsIPrefBranch2 = Ci.nsIPrefBranch2; - const nsIWindowMediator = Ci.nsIWindowMediator; - - const highlightCSS = "chrome://firebug/content/highlighter.css"; - - const firequeryPrefService = Cc["@mozilla.org/preferences-service;1"]; - const firequeryPrefs = firequeryPrefService.getService(nsIPrefBranch2); - - const MODIFICATION = MutationEvent.MODIFICATION; - const ADDITION = MutationEvent.ADDITION; - const REMOVAL = MutationEvent.REMOVAL; - - // jQuerify by Karl Swedberg, taken from http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet and slightly modified styles - const jQuerifyCode = "\ - (function() {\ - var el = document.createElement('div');\ - var b = document.getElementsByTagName('body')[0];\ - var otherlib = false;\ - var msg = '';\ - el.style.fontFamily = 'Arial, Verdana';\ - el.style.position = 'fixed';\ - el.style.padding = '5px 10px 5px 10px';\ - el.style.margin = '0';\ - el.style.zIndex = 1001;\ - el.style.lineHeight = '46px';\ - el.style.fontSize = '40px';\ - el.style.fontWeight = 'bold';\ - el.style.color = '#444';\ - el.style.backgroundColor = '#FFFB00';\ - el.style.MozBorderRadius = '8px';\ - el.style.opacity = '0.8';\ - el.style.textAlign = 'center';\ - if (typeof jQuery != 'undefined') {\ - msg = 'This page already using jQuery v' + jQuery.fn.jquery;\ - if (typeof $jq == 'function') {\ - msg += ' and noConflict().
                                Use $jq(), not $().';\ - }\ - return showMsg();\ - } else if (typeof $ == 'function') {\ - otherlib = true;\ - }\ - function getScript(url, success, failure) {\ - var script = document.createElement('script');\ - script.src = url;\ - var head = document.getElementsByTagName('head')[0],\ - done = false;\ - var timeout = setTimeout(function() { failure(); }, {{jQueryURLTimeout}});\ - script.onload = script.onreadystatechange = function() {\ - if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\ - done = true;\ - clearTimeout(timeout);\ - success();\ - }\ - };\ - head.appendChild(script);\ - }\ - getScript('{{jQueryURL}}', \ - function() {\ - if (typeof jQuery == 'undefined') {\ - msg = 'Sorry, but jQuery wasn\\'t able to load';\ - return showMsg(true);\ - } else {\ - msg = 'This page is now jQuerified with v' + jQuery.fn.jquery;\ - if (otherlib) {\ - msg += ' and noConflict().
                                Use $jq(), not $().';\ - }\ - }\ - return showMsg();\ - }, function() {\ - msg = 'Unable to load jQuery from:
                                {{jQueryURL}}';\ - return showMsg(true);\ - });\ - function showMsg(isError) {\ - el.innerHTML = msg;\ - if (isError) el.style.backgroundColor = '#FF4444';\ - b.appendChild(el);\ - el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\ - el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\ - window.setTimeout(function() {\ - if (typeof jQuery == 'undefined') {\ - b.removeChild(el);\ - } else {\ - b.removeChild(el);\ - if (otherlib) {\ - $jq = jQuery.noConflict();\ - }\ - }\ - },\ - 2500);\ - }\ - })();\ - "; - - const jQueryWatcherCode = "\ - (function() {\ - var timerId = setInterval(function() {\ - if (window.jQuery) {\ - clearInterval(timerId);\ - var event = document.createEvent('Events');\ - event.initEvent('jQueryDetected', true, false);\ - document.dispatchEvent(event);\ - }\ - }, {{watcherInterval}});\ - })();\ - "; - - const jQueryLintInjectorCode = "\ - (function() {\ - var el = document.createElement('div');\ - var b = document.getElementsByTagName('body')[0];\ - var otherlib = false;\ - var msg = '';\ - el.style.fontFamily = 'Arial, Verdana';\ - el.style.position = 'fixed';\ - el.style.padding = '5px 10px 5px 10px';\ - el.style.margin = '0';\ - el.style.zIndex = 1001;\ - el.style.lineHeight = '46px';\ - el.style.fontSize = '40px';\ - el.style.fontWeight = 'bold';\ - el.style.color = '#444';\ - el.style.backgroundColor = '#FFFB00';\ - el.style.MozBorderRadius = '8px';\ - el.style.opacity = '0.8';\ - el.style.textAlign = 'center';\ - if (typeof jQuery == 'undefined') {\ - msg = 'No jQuery detected!';\ - return showMsg();\ - }\ - function getScript(url, success, failure) {\ - var script = document.createElement('script');\ - script.src = url;\ - var head = document.getElementsByTagName('head')[0],\ - done = false;\ - var timeout = setTimeout(function() { failure(); }, {{jQueryLintURLTimeout}});\ - script.onload = script.onreadystatechange = function() {\ - if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\ - done = true;\ - clearTimeout(timeout);\ - success();\ - }\ - };\ - head.appendChild(script);\ - }\ - getScript('{{jQueryLintURL}}', \ - function() {\ - if (!jQuery.LINT) {\ - msg = 'Sorry, but jQuery Lint wasn\\'t able to load';\ - return showMsg(true);\ - }\ - }, function() {\ - msg = 'Unable to load jQuery Lint from:
                                {{jQueryLintURL}}';\ - return showMsg(true);\ - });\ - function showMsg(isError) {\ - el.innerHTML = msg;\ - if (isError) el.style.backgroundColor = '#FF4444';\ - b.appendChild(el);\ - el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\ - el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\ - window.setTimeout(function() {\ - if (typeof jQuery == 'undefined') {\ - b.removeChild(el);\ - } else {\ - b.removeChild(el);\ - if (otherlib) {\ - $jq = jQuery.noConflict();\ - }\ - }\ - },\ - 2500);\ - }\ - })();\ - "; - - if (Firebug.TraceModule) { - Firebug.TraceModule.DBG_FIREQUERY = false; - var type = firequeryPrefs.getPrefType('extensions.firebug.DBG_FIREQUERY'); - if (type != nsIPrefBranch.PREF_BOOL) try { - firequeryPrefs.setBoolPref('extensions.firebug.DBG_FIREQUERY', false); - } catch(e) {} - } - - function dbg() { - if (FBTrace && FBTrace.DBG_FIREQUERY) { - FBTrace.sysout.apply(this, arguments); - } - } - - var OBJECTBOX = this.OBJECTBOX = - SPAN({'class': "objectBox objectBox-$className"}); - - var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({'class': "objectBox objectBox-$className"}); - - var OBJECTLINK = this.OBJECTLINK = - A({ - 'class': "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - const edgeSize = 1; - - var generateGuid = function() { - var S4 = function() { - return (((1+Math.random())*0x10000)|0).toString(16).substring(1); - }; - return S4()+S4(); - }; - - function getNonFrameBody(elt) { - var body = getBody(elt.ownerDocument); - return body.localName.toUpperCase() == "FRAMESET" ? null : body; - } - - function attachStyles(context, body) { - var doc = body.ownerDocument; - if (!context.highlightStyle) - context.highlightStyle = createStyleSheet(doc, highlightCSS); - - if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc) - addStyleSheet(body.ownerDocument, context.highlightStyle); - } - - function evalJQueryCache(object, context) { - try { - var win = object.ownerDocument.defaultView; - var wrapper = win.wrappedJSObject || win; - var jQuery = wrapper.jQuery; - // jQuery 1.4 breaking changes (http://jquery14.com/day-01/jquery-14): - // jQuery.data(elem) no longer returns an id, it returns the element’s object cache instead. - var idOrCache = jQuery.data(object.wrappedJSObject || object); - if (typeof idOrCache == "object") return idOrCache; // jQuery 1.4+ path - return jQuery.cache[idOrCache]; // jQuery 1.3- path - } catch (ex) {} - } - - function hasJQueryCache(object, context) { - var cache = evalJQueryCache(object, context); - for (var x in cache) { - if (cache.hasOwnProperty(x)) return true; - } - } - - function findNodeDataBox(objectNodeBox, attrName) - { - var child = objectNodeBox.firstChild.lastChild.firstChild; - for (; child; child = child.nextSibling) - { - if (hasClass(child, "nodeData") && child.childNodes[0].firstChild && child.childNodes[0].firstChild.nodeValue == attrName) - { - return child; - } - } - } - - function dataDescriptor(name, data, tag) { - var rep = {}; - rep[name] = data; - return { - name: name, - data: data, - tag: tag, - rep: rep - }; - } - - function mutateData(target, attrChange, attrName, attrValue) { - this.markChange(); - - var createBox = Firebug.scrollToMutations || Firebug.expandMutations; - var objectNodeBox = createBox ? this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target); - if (!objectNodeBox) return; - - if (isVisible(objectNodeBox.repObject)) - removeClass(objectNodeBox, "nodeHidden"); - else - setClass(objectNodeBox, "nodeHidden"); - var nodeAttr; - if (attrChange == MODIFICATION || attrChange == ADDITION) { - var rep = Firebug.getRep(attrValue); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var valRep = Firebug.HTMLPanel.DataNode.tag.replace({ - attr: dataDescriptor(attrName, attrValue, tag) - }, this.document); - - nodeAttr = findNodeDataBox(objectNodeBox, attrName); - if (nodeAttr) { - nodeAttr.parentNode.replaceChild(valRep, nodeAttr); - this.highlightMutation(valRep, objectNodeBox, "mutated"); - } else { - var labelBox = objectNodeBox.firstChild.lastChild; - labelBox.insertBefore(valRep, null); - this.highlightMutation(valRep, objectNodeBox, "mutated"); - } - } else if (attrChange == REMOVAL) { - nodeAttr = findNodeDataBox(objectNodeBox, attrName); - if (nodeAttr) { - nodeAttr.parentNode.removeChild(nodeAttr); - this.highlightMutation(objectNodeBox, objectNodeBox, "mutated"); - } - } - } - - function patchJQuery(jQuery, context) { - if (jQuery.wrappedJSObject) jQuery = jQuery.wrappedJSObject; - if (jQuery._patchedByFireQuery) return; - jQuery._patchedByFireQuery = true; - jQuery.data_originalReplacedByFireQuery = jQuery.data; - jQuery.data = function(elem, name, data) { - var res = this.data_originalReplacedByFireQuery.apply(this, arguments); - try { - if (name && data!==undefined) { - mutateData.call(context.getPanel('html'), elem, MODIFICATION, name, data); - } - } catch (ex) { - // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason) - } - return res; - }; - jQuery.removeData_originalReplacedByFireQuery = jQuery.removeData; - jQuery.removeData = function(elem, name) { - var res = this.removeData_originalReplacedByFireQuery.apply(this, arguments); - try { - if (name) { - mutateData.call(context.getPanel('html'), elem, REMOVAL, name); - } - } catch (ex) { - // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason) - } - return res; - }; - - // apply jquery lint if requested - if (Firebug.FireQuery.getPref('useLint')) { - try { - var code = Firebug.FireQuery.prepareJQueryLintCode(); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - } - } - - function installJQueryWatcher(win, context) { - try { - var code = jQueryWatcherCode.replace(/\{\{watcherInterval\}\}/g, Firebug.FireQuery.getPref('watcherInterval')); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - } - - function patchWindow(win, context) { - try { - var wrapper = win.wrappedJSObject; - var jQuery = wrapper.jQuery; - patchJQuery(jQuery, context); - dbg(">>>FireQuery: successfully found and patched jQuery in the window ", win); - } catch (ex) { - dbg('>>>FireQuery: jQuery not found in the window, running watcher ...', win); - win.document.wrappedJSObject.addEventListener('jQueryDetected', function() { - try { - var wrapper = win.wrappedJSObject; - var jQuery = wrapper.jQuery; - patchJQuery(jQuery, context); - dbg(">>>FireQuery: successfully notified and patched late jQuery in the window ", win); - } catch (ex) { - dbg(">>>FireQuery: fatal error patching late jQuery in the window ", win); - } - }, true); - installJQueryWatcher(win, context); - } - } - - //////////////////////////////////////////////////////////////////////// - // Firebug.FireQuery - // - Firebug.FireQuery = extend(Firebug.ActivableModule, { - version: '0.6', - ///////////////////////////////////////////////////////////////////////////////////////// - start: function() { - dbg(">>>FireQuery.start"); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - stop: function() { - dbg(">>>FireQuery.stop"); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - initialize: function() { - dbg(">>>FireQuery.initialize"); - this.panelName = 'FireQuery'; - this.description = "jQuery related enhancements for Firebug."; - Firebug.Module.initialize.apply(this, arguments); - this.augumentConsolePanelContextMenu(); - this.start(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - shutdown: function() { - dbg(">>>FireQuery.shutdown"); - this.stop(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - augumentConsolePanelContextMenu: function() { - dbg(">>>FireQuery.augumentConsolePanelContextMenu"); - if (!Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery) { - Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery = Firebug.ConsolePanel.prototype.getOptionsMenuItems; - Firebug.ConsolePanel.prototype.getOptionsMenuItems = function() { - var items = this.getOptionsMenuItemsOriginalBeforePatchedByFireQuery.apply(this, arguments); - if (!items) items = []; - items = items.concat(Firebug.FireQuery.getOptionsMenuItems()); - return items; - }; - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - initializeUI: function() { - dbg(">>>FireQuery.initializeUI"); - Firebug.Module.initializeUI.apply(this, arguments); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - onSuspendFirebug: function(context) { - dbg(">>>FireQuery.onSuspendFirebug"); - this.stop(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - onResumeFirebug: function(context) { - dbg(">>>FireQuery.onResumeFirebug"); - this.start(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - showPanel: function(browser, panel) { - dbg(">>>FireQuery.showPanel "+panel.name, panel); - var isConsole = panel.name == "console"; - var isHTML = panel.name == "html"; - if (isConsole || isHTML) { - this.applyPanelCSS("chrome://firequery/skin/firequery.css", panel); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - loadedContext: function(context) { - dbg(">>>FireQuery.loadedContext ", context); - patchWindow(context.browser.contentWindow, context); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - prepareJQuerifyCode: function() { - var jQueryURL = this.getPref('jQueryURL') || 'chrome://firequery-resources/content/jquery.js'; - var jQueryURLTimeout = this.getPref('jQueryURLTimeout') || 5000; - - var code = jQuerifyCode; - code = code.replace(/\{\{jQueryURL\}\}/g, jQueryURL.replace("'", "\\'")); - code = code.replace(/\{\{jQueryURLTimeout\}\}/g, jQueryURLTimeout+''); - return code; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - prepareJQueryLintCode: function() { - var jQueryLintURL = this.getPref('jQueryLintURL') || 'chrome://firequery-resources/content/jquery.lint.js'; - var jQueryLintURLTimeout = this.getPref('jQueryLintURLTimeout') || 5000; - - var code = jQueryLintInjectorCode; - code = code.replace(/\{\{jQueryLintURL\}\}/g, jQueryLintURL.replace("'", "\\'")); - code = code.replace(/\{\{jQueryLintURLTimeout\}\}/g, jQueryLintURLTimeout+''); - return code; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - buttonJQuerify: function(context) { - dbg(">>>FireQuery.buttonJQuerify ", context); - try { - var code = this.prepareJQuerifyCode(); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getPref: function(name) { - var prefName = this.getPrefDomain().toLowerCase() + "." + name; - var type = firequeryPrefs.getPrefType(prefName); - if (type == nsIPrefBranch.PREF_STRING) - return firequeryPrefs.getCharPref(prefName); - else if (type == nsIPrefBranch.PREF_INT) - return firequeryPrefs.getIntPref(prefName); - else if (type == nsIPrefBranch.PREF_BOOL) - return firequeryPrefs.getBoolPref(prefName); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - setPref: function(name, value) { - var prefName = this.getPrefDomain().toLowerCase() + "." + name; - var type = firequeryPrefs.getPrefType(prefName); - if (type == nsIPrefBranch.PREF_STRING) - firequeryPrefs.setCharPref(prefName, value); - else if (type == nsIPrefBranch.PREF_INT) - firequeryPrefs.setIntPref(prefName, value); - else if (type == nsIPrefBranch.PREF_BOOL) - firequeryPrefs.setBoolPref(prefName, value); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - applyPanelCSS: function(url, panel) { - dbg(">>>FireQuery.applyPanelCSS "+url, panel); - var links = FBL.getElementsBySelector(panel.document, "link"); - for (var i=0; i < links.length; i++) { - var link = links[i]; - if (link.getAttribute('href')==url) return; // already applied - } - var styleElement = panel.document.createElement("link"); - styleElement.setAttribute("type", "text/css"); - styleElement.setAttribute("href", url); - styleElement.setAttribute("rel", "stylesheet"); - var head = this.getHeadElement(panel.document); - if (head) head.appendChild(styleElement); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - visitWebsite: function() { - dbg(">>>FireQuery.visitWebsite", arguments); - openNewTab(fireQueryHomepage); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - updateOption: function(name, value) { - dbg(">>>FireQuery.updateOption: "+name+" -> "+value); - if (name=='firequery.useLint') { - if (value) { - Firebug.Console.logFormatted(["jQuery Lint will be available after next refresh"], FirebugContext, "info"); - } else { - Firebug.Console.logFormatted(["jQuery Lint won't be loaded after next refresh"], FirebugContext, "info"); - } - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getOptionsMenuItems: function() { - var optionMenu = function(label, option) { - return { - label: label, - nol10n: true, - type: "checkbox", - checked: Firebug.FireQuery.getPref(option), - option: option, - command: function() { - Firebug.FireQuery.setPref(option, !Firebug.FireQuery.getPref(option)); // toggle - } - }; - }; - dbg(">>>FireQuery.getOptionsMenuItems", arguments); - return [ - '-', - optionMenu("Use jQuery Lint", "useLint"), - { - label: "Visit FireQuery Website...", - nol10n: true, - command: function() { - Firebug.FireQuery.visitWebsite(); - } - } - ]; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getHeadElement: function(doc) { - var heads = doc.getElementsByTagName("head"); - if (heads.length == 0) return doc.documentElement; - return heads[0]; - } - }); - - //////////////////////////////////////////////////////////////////////// - // Firebug.FireQuery.JQueryHighlighter - // - Firebug.FireQuery.JQueryHighlighter = function() { - this.seed = "highlighter-"+generateGuid(); - }; - - Firebug.FireQuery.JQueryHighlighter.prototype = { - ///////////////////////////////////////////////////////////////////////////////////////// - highlight: function(context, element) { - if (!element) return; - if (element instanceof XULElement) return; - var dims, x, y, w, h; - try { - // Firebug 1.3 path - dims = getViewOffset(element, true); - x = dims.x; y = dims.y; - w = element.offsetWidth; h = element.offsetHeight; - } catch (ex) { - try { - // Firebug 1.4 path - dims = getRectTRBLWH(element, context); - x = dims.left; y = dims.top; - w = dims.width; h = dims.height; - } catch (ex) { - try { - // Firebug 1.5+ path - dims = getLTRBWH(element, context); - x = dims.left; y = dims.top; - w = dims.width; h = dims.height; - } catch (ex) { - dbg(' getLTRBWH failed: '+ex, element); - return; - } - } - } - - var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h); - if (wacked) return; - - var nodes = this.getNodes(context, element); - - move(nodes.top, x, y-edgeSize); - resize(nodes.top, w, edgeSize); - - move(nodes.right, x+w, y-edgeSize); - resize(nodes.right, edgeSize, h+edgeSize*2); - - move(nodes.bottom, x, y+h); - resize(nodes.bottom, w, edgeSize); - - move(nodes.left, x-edgeSize, y-edgeSize); - resize(nodes.left, edgeSize, h+edgeSize*2); - - move(nodes.content, x, y); - resize(nodes.content, w, h); - - var body = getNonFrameBody(element); - if (!body) - return this.unhighlight(context); - - var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument; - if (needsAppend) { - attachStyles(context, body); - for (var edge in nodes) { - try { - body.appendChild(nodes[edge]); - } - catch(exc) { - } - } - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - unhighlight: function(context) { - var nodes = this.getNodes(context); - var body = nodes.top.parentNode; - if (body) { - for (var edge in nodes) - body.removeChild(nodes[edge]); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getNodes: function(context) { - if (!context[this.seed]) { - var doc = context.window.document; - function createEdge(name) { - var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); - div.firebugIgnore = true; - div.className = "firebugHighlight"; - return div; - } - function createBox(name) { - var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); - div.firebugIgnore = true; - div.className = "firebugHighlight"; - div.style.backgroundColor = "SkyBlue"; - div.style.opacity="0.4"; - return div; - } - context[this.seed] = { - content: createBox("Content"), - top: createEdge("Top"), - right: createEdge("Right"), - bottom: createEdge("Bottom"), - left: createEdge("Left") - }; - } - return context[this.seed]; - } - }; - - //////////////////////////////////////////////////////////////////////// - // monkey-patching of Firebug.Inspector.highlightObject - // - Firebug.Inspector.originalHighlightObject = Firebug.Inspector.highlightObject; - Firebug.Inspector.highlightObject = function(element, context, highlightType, boxFrame) { - if (!this.jQueryHighlighters) this.jQueryHighlighters = []; - var i, highlighter; - for (i=0; iminMajor) || - (major==minMajor && minor>minMinor) || - (major==minMajor && minor==minMinor && patch>=minPatch); - }; - - if (!Firebug.CommandLine.evaluateInWebPage) { - // backport from FB1.4 - Firebug.CommandLine.evaluateInWebPage = function(expr, context, targetWindow) { - var win = targetWindow ? targetWindow : context.window; - var doc = (win.wrappedJSObject ? win.wrappedJSObject.document : win.document); - var element = addScript(doc, "_firebugInWebPage", expr); - element.parentNode.removeChild(element); // we don't need the script element, result is in DOM object - return "true"; - }; - } - - //const fireQueryHomepage = "http://firequery.binaryage.com"; - - //const Cc = Components.classes; - //const Ci = Components.interfaces; - - //const nsIPrefBranch = Ci.nsIPrefBranch; - //const nsIPrefBranch2 = Ci.nsIPrefBranch2; - //const nsIWindowMediator = Ci.nsIWindowMediator; - - //const highlightCSS = "chrome://firebug/content/highlighter.css"; - - //const firequeryPrefService = Cc["@mozilla.org/preferences-service;1"]; - //const firequeryPrefs = firequeryPrefService.getService(nsIPrefBranch2); - - //const MODIFICATION = MutationEvent.MODIFICATION; - //const ADDITION = MutationEvent.ADDITION; - //const REMOVAL = MutationEvent.REMOVAL; - - // jQuerify by Karl Swedberg, taken from http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet and slightly modified styles - const jQuerifyCode = "\ - (function() {\ - var el = document.createElement('div');\ - var b = document.getElementsByTagName('body')[0];\ - var otherlib = false;\ - var msg = '';\ - el.style.fontFamily = 'Arial, Verdana';\ - el.style.position = 'fixed';\ - el.style.padding = '5px 10px 5px 10px';\ - el.style.margin = '0';\ - el.style.zIndex = 1001;\ - el.style.lineHeight = '46px';\ - el.style.fontSize = '40px';\ - el.style.fontWeight = 'bold';\ - el.style.color = '#444';\ - el.style.backgroundColor = '#FFFB00';\ - el.style.MozBorderRadius = '8px';\ - el.style.opacity = '0.8';\ - el.style.textAlign = 'center';\ - if (typeof jQuery != 'undefined') {\ - msg = 'This page already using jQuery v' + jQuery.fn.jquery;\ - if (typeof $jq == 'function') {\ - msg += ' and noConflict().
                                Use $jq(), not $().';\ - }\ - return showMsg();\ - } else if (typeof $ == 'function') {\ - otherlib = true;\ - }\ - function getScript(url, success, failure) {\ - var script = document.createElement('script');\ - script.src = url;\ - var head = document.getElementsByTagName('head')[0],\ - done = false;\ - var timeout = setTimeout(function() { failure(); }, {{jQueryURLTimeout}});\ - script.onload = script.onreadystatechange = function() {\ - if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\ - done = true;\ - clearTimeout(timeout);\ - success();\ - }\ - };\ - head.appendChild(script);\ - }\ - getScript('{{jQueryURL}}', \ - function() {\ - if (typeof jQuery == 'undefined') {\ - msg = 'Sorry, but jQuery wasn\\'t able to load';\ - return showMsg(true);\ - } else {\ - msg = 'This page is now jQuerified with v' + jQuery.fn.jquery;\ - if (otherlib) {\ - msg += ' and noConflict().
                                Use $jq(), not $().';\ - }\ - }\ - return showMsg();\ - }, function() {\ - msg = 'Unable to load jQuery from:
                                {{jQueryURL}}';\ - return showMsg(true);\ - });\ - function showMsg(isError) {\ - el.innerHTML = msg;\ - if (isError) el.style.backgroundColor = '#FF4444';\ - b.appendChild(el);\ - el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\ - el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\ - window.setTimeout(function() {\ - if (typeof jQuery == 'undefined') {\ - b.removeChild(el);\ - } else {\ - b.removeChild(el);\ - if (otherlib) {\ - $jq = jQuery.noConflict();\ - }\ - }\ - },\ - 2500);\ - }\ - })();\ - "; - - const jQueryWatcherCode = "\ - (function() {\ - var timerId = setInterval(function() {\ - if (window.jQuery) {\ - clearInterval(timerId);\ - var event = document.createEvent('Events');\ - event.initEvent('jQueryDetected', true, false);\ - document.dispatchEvent(event);\ - }\ - }, {{watcherInterval}});\ - })();\ - "; - - const jQueryLintInjectorCode = "\ - (function() {\ - var el = document.createElement('div');\ - var b = document.getElementsByTagName('body')[0];\ - var otherlib = false;\ - var msg = '';\ - el.style.fontFamily = 'Arial, Verdana';\ - el.style.position = 'fixed';\ - el.style.padding = '5px 10px 5px 10px';\ - el.style.margin = '0';\ - el.style.zIndex = 1001;\ - el.style.lineHeight = '46px';\ - el.style.fontSize = '40px';\ - el.style.fontWeight = 'bold';\ - el.style.color = '#444';\ - el.style.backgroundColor = '#FFFB00';\ - el.style.MozBorderRadius = '8px';\ - el.style.opacity = '0.8';\ - el.style.textAlign = 'center';\ - if (typeof jQuery == 'undefined') {\ - msg = 'No jQuery detected!';\ - return showMsg();\ - }\ - function getScript(url, success, failure) {\ - var script = document.createElement('script');\ - script.src = url;\ - var head = document.getElementsByTagName('head')[0],\ - done = false;\ - var timeout = setTimeout(function() { failure(); }, {{jQueryLintURLTimeout}});\ - script.onload = script.onreadystatechange = function() {\ - if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\ - done = true;\ - clearTimeout(timeout);\ - success();\ - }\ - };\ - head.appendChild(script);\ - }\ - getScript('{{jQueryLintURL}}', \ - function() {\ - if (!jQuery.LINT) {\ - msg = 'Sorry, but jQuery Lint wasn\\'t able to load';\ - return showMsg(true);\ - }\ - }, function() {\ - msg = 'Unable to load jQuery Lint from:
                                {{jQueryLintURL}}';\ - return showMsg(true);\ - });\ - function showMsg(isError) {\ - el.innerHTML = msg;\ - if (isError) el.style.backgroundColor = '#FF4444';\ - b.appendChild(el);\ - el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\ - el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\ - window.setTimeout(function() {\ - if (typeof jQuery == 'undefined') {\ - b.removeChild(el);\ - } else {\ - b.removeChild(el);\ - if (otherlib) {\ - $jq = jQuery.noConflict();\ - }\ - }\ - },\ - 2500);\ - }\ - })();\ - "; - - if (Firebug.TraceModule) { - Firebug.TraceModule.DBG_FIREQUERY = false; - var type = firequeryPrefs.getPrefType('extensions.firebug.DBG_FIREQUERY'); - if (type != nsIPrefBranch.PREF_BOOL) try { - firequeryPrefs.setBoolPref('extensions.firebug.DBG_FIREQUERY', false); - } catch(e) {} - } - - function dbg() { - if (FBTrace && FBTrace.DBG_FIREQUERY) { - FBTrace.sysout.apply(this, arguments); - } - } - - var OBJECTBOX = this.OBJECTBOX = - SPAN({'class': "objectBox objectBox-$className"}); - - var OBJECTBLOCK = this.OBJECTBLOCK = - DIV({'class': "objectBox objectBox-$className"}); - - var OBJECTLINK = this.OBJECTLINK = - A({ - 'class': "objectLink objectLink-$className a11yFocus", - _repObject: "$object" - }); - - const edgeSize = 1; - - var generateGuid = function() { - var S4 = function() { - return (((1+Math.random())*0x10000)|0).toString(16).substring(1); - }; - return S4()+S4(); - }; - - function getNonFrameBody(elt) { - var body = getBody(elt.ownerDocument); - return body.localName.toUpperCase() == "FRAMESET" ? null : body; - } - - function attachStyles(context, body) { - var doc = body.ownerDocument; - if (!context.highlightStyle) - context.highlightStyle = createStyleSheet(doc, highlightCSS); - - if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc) - addStyleSheet(body.ownerDocument, context.highlightStyle); - } - - function evalJQueryCache(object, context) { - try { - var win = object.ownerDocument.defaultView; - var wrapper = win.wrappedJSObject || win; - var jQuery = wrapper.jQuery; - // jQuery 1.4 breaking changes (http://jquery14.com/day-01/jquery-14): - // jQuery.data(elem) no longer returns an id, it returns the element’s object cache instead. - var idOrCache = jQuery.data(object.wrappedJSObject || object); - if (typeof idOrCache == "object") return idOrCache; // jQuery 1.4+ path - return jQuery.cache[idOrCache]; // jQuery 1.3- path - } catch (ex) {} - } - - function hasJQueryCache(object, context) { - var cache = evalJQueryCache(object, context); - for (var x in cache) { - if (cache.hasOwnProperty(x)) return true; - } - } - - function findNodeDataBox(objectNodeBox, attrName) - { - var child = objectNodeBox.firstChild.lastChild.firstChild; - for (; child; child = child.nextSibling) - { - if (hasClass(child, "nodeData") && child.childNodes[0].firstChild && child.childNodes[0].firstChild.nodeValue == attrName) - { - return child; - } - } - } - - function dataDescriptor(name, data, tag) { - var rep = {}; - rep[name] = data; - return { - name: name, - data: data, - tag: tag, - rep: rep - }; - } - - function mutateData(target, attrChange, attrName, attrValue) { - this.markChange(); - - var createBox = Firebug.scrollToMutations || Firebug.expandMutations; - var objectNodeBox = createBox ? this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target); - if (!objectNodeBox) return; - - if (isVisible(objectNodeBox.repObject)) - removeClass(objectNodeBox, "nodeHidden"); - else - setClass(objectNodeBox, "nodeHidden"); - var nodeAttr; - if (attrChange == MODIFICATION || attrChange == ADDITION) { - var rep = Firebug.getRep(attrValue); - var tag = rep.shortTag ? rep.shortTag : rep.tag; - var valRep = Firebug.HTMLPanel.DataNode.tag.replace({ - attr: dataDescriptor(attrName, attrValue, tag) - }, this.document); - - nodeAttr = findNodeDataBox(objectNodeBox, attrName); - if (nodeAttr) { - nodeAttr.parentNode.replaceChild(valRep, nodeAttr); - this.highlightMutation(valRep, objectNodeBox, "mutated"); - } else { - var labelBox = objectNodeBox.firstChild.lastChild; - labelBox.insertBefore(valRep, null); - this.highlightMutation(valRep, objectNodeBox, "mutated"); - } - } else if (attrChange == REMOVAL) { - nodeAttr = findNodeDataBox(objectNodeBox, attrName); - if (nodeAttr) { - nodeAttr.parentNode.removeChild(nodeAttr); - this.highlightMutation(objectNodeBox, objectNodeBox, "mutated"); - } - } - } - - function patchJQuery(jQuery, context) { - if (jQuery.wrappedJSObject) jQuery = jQuery.wrappedJSObject; - if (jQuery._patchedByFireQuery) return; - jQuery._patchedByFireQuery = true; - jQuery.data_originalReplacedByFireQuery = jQuery.data; - jQuery.data = function(elem, name, data) { - var res = this.data_originalReplacedByFireQuery.apply(this, arguments); - try { - if (name && data!==undefined) { - mutateData.call(context.getPanel('html'), elem, MODIFICATION, name, data); - } - } catch (ex) { - // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason) - } - return res; - }; - jQuery.removeData_originalReplacedByFireQuery = jQuery.removeData; - jQuery.removeData = function(elem, name) { - var res = this.removeData_originalReplacedByFireQuery.apply(this, arguments); - try { - if (name) { - mutateData.call(context.getPanel('html'), elem, REMOVAL, name); - } - } catch (ex) { - // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason) - } - return res; - }; - - // apply jquery lint if requested - if (Firebug.FireQuery.getPref('useLint')) { - try { - var code = Firebug.FireQuery.prepareJQueryLintCode(); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - } - } - - function installJQueryWatcher(win, context) { - try { - var code = jQueryWatcherCode.replace(/\{\{watcherInterval\}\}/g, Firebug.FireQuery.getPref('watcherInterval')); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - } - - function patchWindow(win, context) { - try { - var wrapper = win.wrappedJSObject; - var jQuery = wrapper.jQuery; - patchJQuery(jQuery, context); - dbg(">>>FireQuery: successfully found and patched jQuery in the window ", win); - } catch (ex) { - dbg('>>>FireQuery: jQuery not found in the window, running watcher ...', win); - win.document.wrappedJSObject.addEventListener('jQueryDetected', function() { - try { - var wrapper = win.wrappedJSObject; - var jQuery = wrapper.jQuery; - patchJQuery(jQuery, context); - dbg(">>>FireQuery: successfully notified and patched late jQuery in the window ", win); - } catch (ex) { - dbg(">>>FireQuery: fatal error patching late jQuery in the window ", win); - } - }, true); - installJQueryWatcher(win, context); - } - } - - //////////////////////////////////////////////////////////////////////// - // Firebug.FireQuery - // - Firebug.FireQuery = extend(Firebug.ActivableModule, { - version: '0.6', - ///////////////////////////////////////////////////////////////////////////////////////// - start: function() { - dbg(">>>FireQuery.start"); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - stop: function() { - dbg(">>>FireQuery.stop"); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - initialize: function() { - - setTimeout(function(){ - var doc = Firebug.chrome.document; - var styleSheet = createStyleSheet(doc, Env.Location.baseDir + "test/firequery/firequery.css"); - addStyleSheet(doc, styleSheet); - },0); - - dbg(">>>FireQuery.initialize"); - this.panelName = 'FireQuery'; - this.description = "jQuery related enhancements for Firebug."; - Firebug.Module.initialize.apply(this, arguments); - this.augumentConsolePanelContextMenu(); - this.start(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - shutdown: function() { - dbg(">>>FireQuery.shutdown"); - this.stop(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - augumentConsolePanelContextMenu: function() { - dbg(">>>FireQuery.augumentConsolePanelContextMenu"); - if (!Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery) { - Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery = Firebug.ConsolePanel.prototype.getOptionsMenuItems; - Firebug.ConsolePanel.prototype.getOptionsMenuItems = function() { - var items = this.getOptionsMenuItemsOriginalBeforePatchedByFireQuery.apply(this, arguments); - if (!items) items = []; - items = items.concat(Firebug.FireQuery.getOptionsMenuItems()); - return items; - }; - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - initializeUI: function() { - dbg(">>>FireQuery.initializeUI"); - Firebug.Module.initializeUI.apply(this, arguments); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - onSuspendFirebug: function(context) { - dbg(">>>FireQuery.onSuspendFirebug"); - this.stop(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - onResumeFirebug: function(context) { - dbg(">>>FireQuery.onResumeFirebug"); - this.start(); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - showPanel: function(browser, panel) { - dbg(">>>FireQuery.showPanel "+panel.name, panel); - var isConsole = panel.name == "console"; - var isHTML = panel.name == "html"; - if (isConsole || isHTML) { - this.applyPanelCSS("chrome://firequery/skin/firequery.css", panel); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - loadedContext: function(context) { - dbg(">>>FireQuery.loadedContext ", context); - patchWindow(context.browser.contentWindow, context); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - prepareJQuerifyCode: function() { - var jQueryURL = this.getPref('jQueryURL') || 'chrome://firequery-resources/content/jquery.js'; - var jQueryURLTimeout = this.getPref('jQueryURLTimeout') || 5000; - - var code = jQuerifyCode; - code = code.replace(/\{\{jQueryURL\}\}/g, jQueryURL.replace("'", "\\'")); - code = code.replace(/\{\{jQueryURLTimeout\}\}/g, jQueryURLTimeout+''); - return code; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - prepareJQueryLintCode: function() { - var jQueryLintURL = this.getPref('jQueryLintURL') || 'chrome://firequery-resources/content/jquery.lint.js'; - var jQueryLintURLTimeout = this.getPref('jQueryLintURLTimeout') || 5000; - - var code = jQueryLintInjectorCode; - code = code.replace(/\{\{jQueryLintURL\}\}/g, jQueryLintURL.replace("'", "\\'")); - code = code.replace(/\{\{jQueryLintURLTimeout\}\}/g, jQueryLintURLTimeout+''); - return code; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - buttonJQuerify: function(context) { - dbg(">>>FireQuery.buttonJQuerify ", context); - try { - var code = this.prepareJQuerifyCode(); - Firebug.CommandLine.evaluateInWebPage(code, context); - } catch (ex) { - dbg(" ! "+ex, context); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getPref: function(name) { - var prefName = this.getPrefDomain().toLowerCase() + "." + name; - var type = firequeryPrefs.getPrefType(prefName); - if (type == nsIPrefBranch.PREF_STRING) - return firequeryPrefs.getCharPref(prefName); - else if (type == nsIPrefBranch.PREF_INT) - return firequeryPrefs.getIntPref(prefName); - else if (type == nsIPrefBranch.PREF_BOOL) - return firequeryPrefs.getBoolPref(prefName); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - setPref: function(name, value) { - var prefName = this.getPrefDomain().toLowerCase() + "." + name; - var type = firequeryPrefs.getPrefType(prefName); - if (type == nsIPrefBranch.PREF_STRING) - firequeryPrefs.setCharPref(prefName, value); - else if (type == nsIPrefBranch.PREF_INT) - firequeryPrefs.setIntPref(prefName, value); - else if (type == nsIPrefBranch.PREF_BOOL) - firequeryPrefs.setBoolPref(prefName, value); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - applyPanelCSS: function(url, panel) { - dbg(">>>FireQuery.applyPanelCSS "+url, panel); - var links = FBL.getElementsBySelector(panel.document, "link"); - for (var i=0; i < links.length; i++) { - var link = links[i]; - if (link.getAttribute('href')==url) return; // already applied - } - var styleElement = panel.document.createElement("link"); - styleElement.setAttribute("type", "text/css"); - styleElement.setAttribute("href", url); - styleElement.setAttribute("rel", "stylesheet"); - var head = this.getHeadElement(panel.document); - if (head) head.appendChild(styleElement); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - visitWebsite: function() { - dbg(">>>FireQuery.visitWebsite", arguments); - openNewTab(fireQueryHomepage); - }, - ///////////////////////////////////////////////////////////////////////////////////////// - updateOption: function(name, value) { - dbg(">>>FireQuery.updateOption: "+name+" -> "+value); - if (name=='firequery.useLint') { - if (value) { - Firebug.Console.logFormatted(["jQuery Lint will be available after next refresh"], FirebugContext, "info"); - } else { - Firebug.Console.logFormatted(["jQuery Lint won't be loaded after next refresh"], FirebugContext, "info"); - } - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getOptionsMenuItems: function() { - var optionMenu = function(label, option) { - return { - label: label, - nol10n: true, - type: "checkbox", - checked: Firebug.FireQuery.getPref(option), - option: option, - command: function() { - Firebug.FireQuery.setPref(option, !Firebug.FireQuery.getPref(option)); // toggle - } - }; - }; - dbg(">>>FireQuery.getOptionsMenuItems", arguments); - return [ - '-', - optionMenu("Use jQuery Lint", "useLint"), - { - label: "Visit FireQuery Website...", - nol10n: true, - command: function() { - Firebug.FireQuery.visitWebsite(); - } - } - ]; - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getHeadElement: function(doc) { - var heads = doc.getElementsByTagName("head"); - if (heads.length == 0) return doc.documentElement; - return heads[0]; - } - }); - - //////////////////////////////////////////////////////////////////////// - // Firebug.FireQuery.JQueryHighlighter - // - Firebug.FireQuery.JQueryHighlighter = function() { - this.seed = "highlighter-"+generateGuid(); - }; - - Firebug.FireQuery.JQueryHighlighter.prototype = { - ///////////////////////////////////////////////////////////////////////////////////////// - highlight: function(context, element) { - if (!element) return; - if (element instanceof XULElement) return; - var dims, x, y, w, h; - try { - // Firebug 1.3 path - dims = getViewOffset(element, true); - x = dims.x; y = dims.y; - w = element.offsetWidth; h = element.offsetHeight; - } catch (ex) { - try { - // Firebug 1.4 path - dims = getRectTRBLWH(element, context); - x = dims.left; y = dims.top; - w = dims.width; h = dims.height; - } catch (ex) { - try { - // Firebug 1.5+ path - dims = getLTRBWH(element, context); - x = dims.left; y = dims.top; - w = dims.width; h = dims.height; - } catch (ex) { - dbg(' getLTRBWH failed: '+ex, element); - return; - } - } - } - - var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h); - if (wacked) return; - - var nodes = this.getNodes(context, element); - - move(nodes.top, x, y-edgeSize); - resize(nodes.top, w, edgeSize); - - move(nodes.right, x+w, y-edgeSize); - resize(nodes.right, edgeSize, h+edgeSize*2); - - move(nodes.bottom, x, y+h); - resize(nodes.bottom, w, edgeSize); - - move(nodes.left, x-edgeSize, y-edgeSize); - resize(nodes.left, edgeSize, h+edgeSize*2); - - move(nodes.content, x, y); - resize(nodes.content, w, h); - - var body = getNonFrameBody(element); - if (!body) - return this.unhighlight(context); - - var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument; - if (needsAppend) { - attachStyles(context, body); - for (var edge in nodes) { - try { - body.appendChild(nodes[edge]); - } - catch(exc) { - } - } - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - unhighlight: function(context) { - var nodes = this.getNodes(context); - var body = nodes.top.parentNode; - if (body) { - for (var edge in nodes) - body.removeChild(nodes[edge]); - } - }, - ///////////////////////////////////////////////////////////////////////////////////////// - getNodes: function(context) { - if (!context[this.seed]) { - var doc = context.window.document; - function createEdge(name) { - var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); - div.firebugIgnore = true; - div.className = "firebugHighlight"; - return div; - } - function createBox(name) { - var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div"); - div.firebugIgnore = true; - div.className = "firebugHighlight"; - div.style.backgroundColor = "SkyBlue"; - div.style.opacity="0.4"; - return div; - } - context[this.seed] = { - content: createBox("Content"), - top: createEdge("Top"), - right: createEdge("Right"), - bottom: createEdge("Bottom"), - left: createEdge("Left") - }; - } - return context[this.seed]; - } - }; - - //////////////////////////////////////////////////////////////////////// - // monkey-patching of Firebug.Inspector.highlightObject - // - Firebug.Inspector.originalHighlightObject = Firebug.Inspector.highlightObject; - Firebug.Inspector.highlightObject = function(element, context, highlightType, boxFrame) { - if (!this.jQueryHighlighters) this.jQueryHighlighters = []; - var i, highlighter; - for (i=0; i - - - -FirebugLite 1.4 Testing - - - - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                -
                                -

                                Development Functions

                                - -
                                -
                                - Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
                                -
                                -

                                User interface files

                                - -
                                -
                                -

                                Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

                                -

                                Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

                                -

                                Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

                                -

                                Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

                                -

                                Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

                                -

                                In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

                                -

                                Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

                                -

                                Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

                                -

                                Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

                                -

                                A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

                                -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/full.html b/branches/firebug1.5/sandbox/full.html deleted file mode 100644 index d548f34f..00000000 --- a/branches/firebug1.5/sandbox/full.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - -FirebugLite 1.4 Testing - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                -
                                -

                                Hello World

                                - -
                                -
                                - Just a test note -
                                -
                                -

                                User interface files

                                - -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/head/xhtml/xhml-strict.html b/branches/firebug1.5/sandbox/head/xhtml/xhml-strict.html deleted file mode 100644 index ca52b133..00000000 --- a/branches/firebug1.5/sandbox/head/xhtml/xhml-strict.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -

                                Test HEAD

                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/head/xhtml/xhml-transitional.html b/branches/firebug1.5/sandbox/head/xhtml/xhml-transitional.html deleted file mode 100644 index 97a7b0ee..00000000 --- a/branches/firebug1.5/sandbox/head/xhtml/xhml-transitional.html +++ /dev/null @@ -1,10 +0,0 @@ - - - -

                                Test HEAD

                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xml b/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xml deleted file mode 100644 index ceb78ee6..00000000 --- a/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xsl b/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xsl deleted file mode 100644 index cfb0c526..00000000 --- a/branches/firebug1.5/sandbox/head/xsl/xml-xsl.xsl +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - -

                                Test HEAD

                                - - - -
                                - -
                                \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/i18n/firebug.properties b/branches/firebug1.5/sandbox/i18n/firebug.properties deleted file mode 100644 index 8668b820..00000000 --- a/branches/firebug1.5/sandbox/i18n/firebug.properties +++ /dev/null @@ -1,790 +0,0 @@ -Firebug=Firebug -# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window. -# %S Title of the associated web page. -# examples: Firebug - Google -WindowTitle=Firebug - %S -# Panel titles -Panel-console=Console -Panel-net=Rede -Panel-html=HTML -Panel-stylesheet=CSS -Panel-script=Script -Panel-dom=DOM -Panel-css=Estilo -Panel-computed=Executado -Panel-layout=Exibição -Panel-domSide=DOM -Panel-watches=Observar -Panel-breakpoints=Pontos de Interrupção -Panel-callstack=Pilha -Panel-scopes=Escopos -firebug.DetachFirebug=Abrir Firebug em Nova Janela -firebug.AttachFirebug=Adicionar o Firebug em uma janela do Browser -# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale. -# If there is no Firebug translation for the current browser locale, this value -# will be used instead of the one in chrome://global/locale/intl.properties -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals -pluralRule=1 -# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms. -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals -# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar. -# Displays number of pages with Firebug activated. -# %S number of Firebugs activated -# example: 2 Total Firebugs -plural.Total_Firebugs=%S de total de Firebugs;%S de total de Firebugs -inBrowser=No Navegador -detached=Destacado -minimized=Minimizado -enablement.for_all_pages=para todas as páginas -enablement.on=Ativo -enablement.off=Inativo -none=Fechado -Detached=Destacado -Firebug_-_inactive_for_selected_Firefox_tab=Firebug - desativado para a aba selecionada do Firefox -Activate_Firebug_for_the_selected_Firefox_tab=Ativar Firebug para a aba selecionada do Firefox -Minimized=Minimizado -Minimize_Firebug=Minimize Firebug -On_for_all_web_pages=Desativado para todas as páginas da Web -firebug.menu.Clear_Activation_List=Limpar lista de ativação -firebug_options=Opções do Firebug -firebug_options_showQuickInfoBox=Mostrar caixa de informação rápida -# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels' -# menu (available on Firebug's tab bar). -firebug.Show_All_Panels=Mostrar todos os painéis -# Console panel options. -ShowJavaScriptErrors=Exibir Erros do JavaScript -ShowJavaScriptWarnings=Exibir Avisos do JavaScript -ShowCSSErrors=Exibir Erros das CSS -ShowXMLErrors=Exibir Erros do XML -ShowStackTrace=Exibir Pilha Traçada Com Erros -ShowXULErrors=Exibir Erros do XUL -ShowXULMessages=Exibir Mensagens do XUL -ShowXMLHttpRequests=Exibir XMLHttpRequests -ShowChromeErrors=Exibir Erros do Chrome -ShowChromeMessages=Exibir Mensagens do Chrome -ShowExternalErrors=Exibir Erros Externos -ShowNetworkErrors=Mostrar erros de Rede -JavascriptOptionsStrict=Avisos Severos (desvantagem no desempenho) -LargeCommandLine=Linha de Comando Grande -commandLineShowCompleterPopup=Mostrar Popup de lista de complementos -console_command_line=linha de comando de console -Assertion=Falha na Confirmação -# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error, -# message, etc. within a source of a web page. -# #1 File name, #2 Line number -# examples: somePage.htm (line 64) -Line=%S (linha %S) -InstanceLine=%S #%S (linha %S) -StackItem=%S (%S linha %S) -SystemItem= -# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus. -# For example, right clicking on an element in the HTML panel offers an action to inspect -# clicked element in the DOM panel (tab). -# #1 Target panel title -# examples: Inspect in DOM Tab -InspectInTab=Inspecionar na Aba %S -NoName=(sem nome) -# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug -# do not translate. -# #1 jsdIScript.tag -jsdIScript=jsdIScript %S -# HTML panel context menu items. -ShowFullText=Exibir Texto Completo -ShowWhitespace=Exibir Espaço em Branco -ShowTextNodesWithEntities=Mostrar Entidades Básicas -ShowComments=Exibir Comentários -HighlightMutations=Destacar Mudanças -ExpandMutations=Expandir Mudanças -ScrollToMutations=Rolar Mudanças na Visualização -ScrollIntoView=Rolar na Visualização -NewAttribute=Novo Atributo... -EditHTMLElement=Editar HTML... -EditSVGElement=Editar SVG... -EditMathMLElement=Editar MathML... -DeleteElement=Excluir Elemento -EditNode=Editar HTML... -DeleteNode=Excluir Nó -ShowQuickInfoBox=Mostrar caixa rápida de informações -ShadeBoxModel=Sombrear modelo de Caixa -# Quick Info Box -quickInfo=Informação Rápida -computedStyle=Style executado -# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume -# button that are used when the HTML panel is currently selected. The button allows stopping -# JS execution when DOM of the current page is modified. -html.Break_On_Mutate=Parar em uma alteração -html.Disable_Break_On_Mutate=Desabilitar parada em uma alteração -html.label.Break_On_Text_Change=Parar na troca de texto -html.label.HTML_Breakpoints=Pontos de parada no HTML -html.label.Break_On_Attribute_Change=Parar na troca de Atributos -html.label.Break_On_Child_Addition_or_Removal=Parar na inserção ou remoção de Filho -html.label.Break_On_Element_Removal=Parar na remoção de elemento -dom.label.DOM_Breakpoints=Pontos de Parada DOM -# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allows -# editing an existing HTML element attribute. -# #1 Name of the clicked attribute. -# examples: Edit Attribute "onclick"... -EditAttribute=Editar Attributo "%S"... -# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allows -# deleting an existing HTML element attribute. -# #1 Name of the clicked attribute. -# examples: Delete Attribute "onclick"... -DeleteAttribute=Excluir Atributo "%S" -# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule. -# that has been inherited. Used in the Style side panel (under HTML panel). -# examples: Inherited from table.tabView -InheritedFrom=Herdado de -SothinkWarning=A extensão Sothink SWF Catcher está impedindo o Firebug de funcionar adequadamente.

                                Por favor, leia este item na FAQ do Firebug para ajuda. -EmptyStyleSheet=Não há regras nesta folha de estilo. -EmptyElementCSS=Este elemento não possui regras de estilo. -EditStyle=Editar Estilo do Elemento... -NewRule=Nova Regra... -NewProp=Nova Propriedade... -# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu. -# Allows to edit an existing CSS rule property. -# %S Name of the clicked property -# examples: Edit "background-color"... -EditProp=Editar "%S"... -# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu. -# Allows to disable an existing CSS rule property. -# %S Name of the clicked property -# examples: Disable "background-color" -DisableProp=Desabilitar "%S" -# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu. -# Allows to delete an existing CSS rule property. -# %S Name of the clicked property -# examples: Delete "background-color" -DeleteProp=Excluir "%S" -# Console context menu labels. -BreakOnThisError=Interromper Neste Erro -BreakOnAllErrors=Interromper em Todos os Erros -DisableBreakOnNext=Desabilitar Parada no Próximo -DecompileEvals=Descompilar para código eval() -ShowAllSourceFiles=Exibir fontes do chrome -TrackThrowCatch=Acompanhar Throw/Catch -UseLastLineForEvalName=Usar Última Linha do Fonte para nomes de eval() -UseMD5ForEvalName=Usar MD5 para nomes de eval() -# LOCALIZATION NOTE do not translate, no longer used(?) -DBG_FBS_CREATION=Cuidado! DBG_FBS_CREATION -DBG_FBS_BP=Cuidado! DBG_BP -DBG_FBS_ERRORS=Cuidado! DBG_ERRORS -DBG_FBS_STEP=Cuidado! DBG_STEP -# Breakpoints side panel -Breakpoints=Pontos de Interrupção -ErrorBreakpoints=Pontos de Interrupção de Erro -LoggedFunctions=Funções Registradas -EnableAllBreakpoints=Habilitar Todos os Pontos de Interrupção -DisableAllBreakpoints=Desabilitar Todos os Pontos de Interrupção -ClearAllBreakpoints=Remover Todos os Pontos de Interrupção -# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons -# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or at -# a 'debugger' keyword. -# Continue: allows to resume the debugger -# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source. -script.balloon.Continue=Continuar -script.balloon.Disable=Desabilitar -# Script panel -StepOver=Passo Sobre -StepInto=Passo Dentro -StepOut=Passo Fora -RunUntil=Executar Até Esta Linha -ScriptsFilterStatic=Exibir Scripts Estáticos -ScriptsFilterEval=Exibir Scripts Estáticos e de eval -ScriptsFilterEvent=Exibir Scripts Estáticos e de eventos -ScriptsFilterAll=Exibir Scripts Estáticos, de eval e eventos -ScriptsFilterStaticShort=estático -ScriptsFilterEvalShort=evals -ScriptsFilterEventShort=eventos -ScriptsFilterAllShort=tudo -ShowUserProps=Exibir Propriedades Definidas pelo Usuário -ShowUserFuncs=Exibir Funções Definidas pelo Usuário -ShowDOMProps=Exibir Propriedades do DOM -ShowDOMFuncs=Exibir Funções do DOM -ShowDOMConstants=Exibir Constantes do DOM -NoMembersWarning=Não há propriedades a exibir para este objeto. -NewWatch=Nova expressão observadora... -AddWatch=Adicionar Observador -CopySourceCode=Copiar Código Fonte -CopyValue=Copiar Valor -Copy_Name=Copiar nome -Copy_Path=Copiar caminho -NewProperty=Nova Propriedade... -EditProperty=Editar Propriedade... -EditVariable=Editar Variável... -EditWatch=Editar Observador... -DeleteProperty=Excluir Propriedade -DeleteWatch=Excluir Observador -ConditionInput=Este ponto de interrupção vai parar apenas se esta expressão for verdadeira: -SetBreakpoint=Definir Ponto de Interrupção -DisableBreakpoint=Desabilitar Ponto de Interrupção -EditBreakpointCondition=Editar Condição do Ponto de Interrupção -NoBreakpointsWarning=Não há pontos de interrupção definidos nesta página. -Show_User_Agent_CSS=Mostrar User Agent CSS -Expand_Shorthand_Properties=Mostar as propriedades de "Shorthand" -script.Type_any_key_to_filter_list=Digitar qualquer tecla para filtrar na lista -# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent): -# Labels used to describe layout properties a the selected HTML element. -# Used in the Layout side panel under HMTL panel. -LayoutPadding=enchimento -LayoutBorder=borda -LayoutMargin=margem -LayoutPosition=posição -LayoutAdjacent=adjacente -position=posição -# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panel -# under HTML panel. -ShowRulers=Exibir Regras e Guias -# Net panel -Loading=Carregando... -Headers=Cabeçalhos -# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel) -net.header.Reset_Header=Reiniciar cabeçalho -# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status, -# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip, -# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip): -# Labels and tooltips for a headers displayed on top of the Net panel. -net.header.URL=URL -net.header.URL_Tooltip=URL requisitada e usando método HTTP. -net.header.Status=Status -net.header.Status_Tooltip=Status do resultado recebido. -net.header.Domain=Domínio -net.header.Domain_Tooltip=Domínio da solicitação executada. -net.header.Size=Tamanho -net.header.Size_Tooltip=Tamanho da resposta recebida. -net.header.Timeline=Linha de tempo -net.header.Timeline_Tooltip=Informação detalhada de tempo sobre a resposta solicitada. -# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group. -net.label.XHR_Breakpoints=Pontos de parada de XHR -# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context -# menu for breaking on a XHR. -net.label.Break_On_XHR=Parar no XHR -# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the -# Net panel's Headers tab (displayed if you expand a network request). The label is used -# for a button that switches the view between "show raw source code" and "pretty formated header -# values". -net.headers.view_source=ver fonte -net.headers.pretty_print=boa impressão -# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar) -net.filter.Media=Media -# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about -# a network request (displayed when a net panel entry is expanded). The content of -# this tab displays sent data (related to a HTTP send method). -Post=Postar -Put=Colocar -# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML): -# Label used in the Net panel for detailed info about a network request (displayed -# when a net panel entry is expanded) -Response=Resposta -URLParameters=Parâmetros -Cache=Cache -HTML=HTML -jsonviewer.tab.JSON=JSON -xmlviewer.tab.XML=XML -svgviewer.tab.SVG=SVG -# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel -# (expand an entry in the panel and select Headers tab). -RequestHeaders=Cabeçalhos de Solicitação -ResponseHeaders=Cabeçalhos de Resposta -# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms. -# A message displayed in the Net panel when some entries must be removed since maximum number -# of entries has been reached. -# %S the number of entries removed -# example: Firebug's log limit has been reached. 150 entries not shown. -plural.Limit_Exceeded=O limite de log do Firebug foi alcançado. %S entradas não mostradas.;O limite de log do Firebug foi alcançado. %S entradas não mostradas. -LimitPrefs=Preferências -# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit -# has been reached. Informing the user what preferencee should be changed to modify the limit. -# %S Name of a preference. -# examples: In order to change the limit modify: firebug.extensions.console.logLimit -LimitPrefsTitle=A fim de alterar o limite modifique: %S -Refresh=Atualizar -OpenInTab=Abrir em Nova Aba -Open_Response_In_New_Tab=Abrir Resultado em uma Nova Aba -# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info. -# (result of javascript profiler tool). Represents a verb. -Profile=Perfil -ProfilerStarted=O perfilador está em execução. Clique em 'Perfil' novamente para ver seu relatório. -# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms. -# Used as a caption for reported profile info (result of javascript profiler tool). -# #1 number of milliseconds -# #2 number of calls (plural) -# example: (#1ms, #2 calls) -plural.Profile_Time=(%Sms, %S chamadas);(%Sms, %S chamadas) -NothingToProfile=Sem atividade ao perfil. -PercentTooltip=Percentual de tempo gasto nesta função. -CallsHeaderTooltip=Número de vezes em que a função foi chamada. -OwnTimeHeaderTooltip=Tempo gasto na função, excluindo chamadas aninhadas. -TimeHeaderTooltip=Tempo gasto na função, incluindo chamadas aninhadas. -AvgHeaderTooltip=Média de tempo, incluindo chamadas a funções. -MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções. -MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções. -ProfileButton.Enabled.Tooltip=Perfil do tempo de execução do JavaScript. -ProfileButton.Disabled.Tooltip=Perfil do tempo de execução do JavaScript (O painel Script precisa estar habilitado). -Function=Função -Percent=Por cento -# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header -# (name of a report column). In order to see this, select the Console panel start profiling -# by clicking the Profile button and stop it by clicking again. The report is logged into the -# console panel. Make sure Script panel is enabled. -Calls=Chamadas -OwnTime=Tempo Próprio -Time=Tempo -Avg=Méd -Min=Min -Max=Máx -File=Arquivo -# Support for clipboard actions. -Copy=Copiar -Cut=Recortar -Remove=Remover -CopyHTML=Copiar HTML -CopySVG=Copiar SVG -CopyMathML=Copiar MathML -CopyInnerHTML=Copiar innerHTML -CopyXPath=Copiar XPath -Copy_CSS_Path=Copiar o caminho do CSS -CopyLocation=Copiar Localização -CopyLocationParameters=Copiar Localização com Parâmetros -CopyRequestHeaders=Copiar Cabeçalhos de Solicitação -CopyResponseHeaders=Copiar Cabeçalhos de Resposta -CopyResponse=Copiar Corpo de Resposta -CopyError=Copiar Erro -CopySource=Copiar Função -# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script -# panel when clicking a function object. -# %S Name of the function -# Log Calls to "getData" -ShowCallsInConsole=Registrar Chamadas a "%S" -ShowEventsInConsole=Registrar Eventos -panel.Enabled=Habilitado -panel.Disabled=Desabilitado -panel.Enable=Habilitar -panel.Disable=Desabilitar -# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on main -# Firebug toolbar. This button allows to open the command line even within other panels. -panel.tooltip.Show_Command_Line=Mostrar linha de comando -# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panel -# if specific method is not supported. -# %S Name of a not supported method. -console.MethodNotSupported=O console do Firebug não suporta '%S' -# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panel -# when a not supported method is used on the command line. -# %S Name of a not supported method. -commandline.MethodNotSupported=A linha de comando do Firefox não suporta '%S' -# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors): -# Tooltip for the "Break on... " button used when the Console panel is selected. -console.Disable_Break_On_All_Errors=Desabilitar paradas em todos os erros -console.Break_On_All_Errors=Parar em todos os erros -console.Break_On_This_Error=Parar neste erro -# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) -# Top of the completion popup in the command line -console.Use_TAB_and_arrow_keys=Use TAB e setas do teclado -# Console strings used when JavaScript is not available -console.JSDisabledInFirefoxPrefs=Javascript está desabilitado nas suas preferências do Firefox. Se você deseja utilizar essa janela de console, então por favor habilite essa opção através de 'Ferramentas'->'Opções'->'Conteúdo'->'Habilitar Javascript' -# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent, -# net.sizeinfo.Total_Received): -# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mouse -# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes -# even sent and received heades size. -net.sizeinfo.Response_Body=Corpo de resposta -net.sizeinfo.Post_Body=Corpo de envio -net.sizeinfo.Total_Sent=Total Enviado -net.sizeinfo.Total_Received=Total Recebido -net.ActivationMessage=Painel de Rede ativado. Qualquer requisição efetuada enquanto o Painel de Rede estiver ativo não será mostrada. -net.responseSizeLimitMessage=O limite de tamanho de resposta do Firebug foi atingido. Clique aqui para abrir o resultado em uma nova aba do Firefox. -# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net -# panel (inside the Post tab of an expanded request entry). The message informs the user that -# posted data reached Firebug's size limit and only part of it is displayed in the UI. -net.postDataSizeLimitMessage=limite de tamanho máximo do Firebug foi atingido pelo Firebug. -net.Break_On_XHR=Parar no XHR -net.label.Parameters=Parâmetros -net.label.Parts=Partes -net.label.Source=Fonte -# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events): -# Labels for Net panel's options. -net.option.Disable_Browser_Cache=Desabilitar Cache do Browser -net.option.Show_Paint_Events=Mostrar eventos de pintura -# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses): -# Net panels's option. If set to true, the net panel displays also response coming from -# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCache -net.option.Show_BF_Cache_Responses=Mostrar respostas de Cache BF -net.option.tip.Show_BF_Cache_Responses=O painel de rede pode também mostrar respostas vindas do Cache BF -script.Break_On_Next=Parar na Próxima -ShowHttpHeaders=Exibir Cabeçalhos HTTP -# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms. -# A label used in the Net panel. Displays number of HTTP requests executed by the current page. -# %S number of requests -# example: 21 requests -plural.Request_Count=%S requisição;%S requisições -FromCache=do cache -StopLoading=Parar Carregamento -LargeData=(Dado Muito Grande) -ShowComputedStyle=Exibir Estilo Computado -StyleGroup-text=Texto -StyleGroup-background=Fundo -StyleGroup-box=Modelo de Caixa -StyleGroup-layout=Exibição -StyleGroup-other=Outro -Dimensions=%S x %S -CopyColor=Copiar Cor -CopyImageLocation=Copiar Localização da Imagem -OpenImageInNewTab=Abrir Imagem em Nova Aba -OmitObjectPathStack=Omitir Barra de Ferramentas Pilha -Copy_Rule_Declaration=Copiar declaração de regra -Copy_Style_Declaration=Copiar declaração de estilo -# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms. -# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug. -# %S number of errors -# example: 111 Errors -plural.Error_Count=%S erro;%S Erros -moduleManager.title=O painel %S está desabilitado -moduleManager.desc3=Use o menu do ícone do Firebug na Barra de Status para habilitar ou desabilitar todos os painéis. Use as abas do menu menor para controle individual do painel. -Suspend_Firebug=Suspender o Firebug -Resume_Firebug=Resultado do Firebug. -Reset_Panels_To_Disabled=Reinicie os painéis para desabilitar. -Open_Console=Abrir Console -Open_Console_Tooltip=Abrir terminal de rastreio para Firebug. -Scope_Chain=Sequencia de Escopo -# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English. -# With: the scope inside of the with(obj) {} statement -With_Scope=Com -# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} }; -Call_Scope=Chamada -# Window: the scope inside of a Javascript window object. -Window_Scope=Janela -Logs=Logs -Options=Opções -Copy_Stack=Copiar Pilha -Copy Exception=Copiar Exceção -# Net panel timing info labels -requestinfo.Blocking=Bloquear -requestinfo.Resolving=Procura do DNS -requestinfo.Connecting=Conectando -requestinfo.Sending=Enviando -requestinfo.Waiting=Aguardando -requestinfo.Receiving=Recebendo -requestinfo.ContentLoad='Conteúdo DOM Carregado' (evento) -requestinfo.WindowLoad='carregar' (evento) -requestinfo.Started=Iniciado -editors.Editor_Configuration=Editor de Configurações -search.Firebug_Search=Pesquisa do Firebug -search.Next=Próximo -search.Previous=Anterior -search.Case_Sensitive=Forçar diferencial entre Maiúsculas e Minúsculas -search.Multiple_Files=Multiplos Arquivos -search.Use_Regular_Expression=Usar Expressões Regulares -search.html.CSS_Selector=Seletor CSS -search.net.Headers=Cabeçalhos -search.net.Parameters=Parâmetros -search.net.Response_Bodies=Corpo de Respostas -search.script.Multiple_Files=Arquivos Multiplos -firebug.console.Persist=Pesistente -firebug.console.Do_Not_Clear_On_Reload=Não limpar no Reload -firebug.console.Show_All_Log_Entries=Mostrar todas as entradas do Log -firebug.console.Errors=Erros -firebug.console.Filter_by_Errors=Filtrar por Erros -firebug.console.Warnings=Avisos -firebug.console.Filter_by_Warnings=Filtrar por Avisos -firebug.console.Info=Informações -firebug.console.Filter_by_Info=Filtrar por Informações -firebug.console.Debug_Info=Informação de Depuração -firebug.console.Filter_by_Debug_Info=Filtrar por Informações de Depuração -firebug.menu.Clear_Console=Limpar Console -firebug.menu.Reset_All_Options=Resetar todas as opções -firebug.menu.Enable_All_Panels=Ativar todos painéis -firebug.menu.Disable_All_Panels=Desativar todos painéis -firebug.menu.Customize_shortcuts=Customizar Atalhos -firebug.menu.Enable_Accessibility_Enhancements=Habilitar Acessórios de Acessibilidade -firebug.menu.Activate_Same_Origin_URLs=Ativar as mesmas URLs Originais -firebug.menu.Reset_All_Firebug_Options=Reiniciar todas as opções do Firebug -firebug.menu.Firebug_Online=Firebug Online -firebug.shortcut.reenterCommand.label=Repetir Comando -firebug.shortcut.toggleInspecting.label=Alternar para Inspeção -firebug.shortcut.toggleQuickInfoBox.label=Alternar para Caixa de Informação Rápida -firebug.shortcut.toggleProfiling.label=Alternar para Desempenho -firebug.shortcut.focusCommandLine.label=Selecionar Linha de Comando -firebug.shortcut.focusFirebugSearch.label=Selecionar Busca do Firebug -firebug.shortcut.focusWatchEditor.label=Selecionar Editor de Vista -firebug.shortcut.focusLocation.label=Selecionar Localização -firebug.shortcut.focusFbMenu.label=Selecionar Menu do Firebug -firebug.shortcut.nextObject.label=Próximo Objeto -firebug.shortcut.previousObject.label=Objeto Anterior -firebug.shortcut.customizeFBKeys.label=Customizar Teclas do Firebug -firebug.shortcut.detachFirebug.label=Abrir Firebug em uma Nova Janela -firebug.shortcut.leftFirebugTab.label=Trocar para painel do firebug à esquerda -firebug.shortcut.rightFirebugTab.label=Alterar para Painel do Firebug à Direita -firebug.shortcut.toggleFirebug.label=Abrir Firebug -firebug.shortcut.previousFirebugTab.label=Aba anterior do Firebug -firebug.shortcut.clearConsole.label=Limpar Console -firebug.shortcut.openTraceConsole.label=Abrir terminal de rastreamento -firebug.shortcut.navBack.label=Voltar -firebug.shortcut.navForward.label=Avançar -firebug.panel_selector=Seletor de painéis -customizeShortcuts=Atribuição de teclas de atalho para o Firebug -keybindConfirmMsg=Você deseja salvar suas novas teclas de atalhos? As novas alterarações entrarão em vigor após o Firefox ser reiniciado. -#A11y Chrome Labels (not visible, spoken by screen readers) -a11y.labels.panel_tools=painel de ferramentas -a11y.labels.firebug_panels=painéis do Firebug -a11y.labels.firebug_side_panels=painéis laterais do Firebug -a11y.labels.firebug_window=janela do Firebug -a11y.labels.firebug_status=status do Firebug -a11y.labels.reset=reiniciar -a11y.labels.reset_shortcut=reiniciar o atalho %S -aria.labels.inactive_panel=painel inativo -#A11y panelNode labels (not visible, spoken by screen readers) -a11y.labels.log_rows=monitorar linhas -a11y.labels.call_stack=chamar pilha -a11y.labels.document_structure=Estrutura do documento -a11y.labels.title_panel=painel %S -a11y.labels.title_side_panel=painel lateral %S -a11y.labels.cached=cacheado -aria.labels.stack_trace=percurso da pilha -#A11y Domplate labels (not visible, spoken by screen readers) -a11y.layout.padding=padding -a11y.layout.border=borda -a11y.layout.margin=margem -a11y.layout.position=posição -a11y.layout.position_top=posicionamento acima -a11y.layout.position_right=posicionamento a direita -a11y.layout.position_bottom=posicionamento a baixo -a11y.layout.position_left=posicionamento a esquerda -a11y.layout.margin_top=topo da margem -a11y.layout.margin_right=margem direita -a11y.layout.margin_bottom=margem da base -a11y.layout.margin_left=margem esquerda -a11y.layout.border_top=topo da borda -a11y.layout.border_right=borda direita -a11y.layout.border_bottom=borda de base -a11y.layout.border_left=borda esquerda -a11y.layout.padding_top=espaçamento superior -a11y.layout.padding_right=espaçamento direito -a11y.layout.padding_bottom=espaçamento base -a11y.layout.padding_left=espaçamento esquerdo -a11y.layout.top=topo -a11y.layout.right=direita -a11y.layout.bottom=base -a11y.layout.left=esquerda -a11y.layout.width=largura -a11y.layout.height=altura -a11y.layout.size=tamanho -a11y.layout.z-index=index-z -a11y.layout.clientBoundingRect=extensão do quadrado cliente -a11y.descriptions.press_enter_to_edit_values=pressione Enter seguifo de TAB para editar valores individuais -a11y.labels.style_rules=regras de estilo -aria.labels.inherited_style_rules=regras de estilo herdadas -a11y.labels.computed_styles=estilos processados -a11y.labels.dom_properties=propriedades DOM -# LOCALIZATION NOTE -# Used by a11y. Not directly visible in the UI, intended for screen readers. -# Describe contents of inline editor fields -a11y.labels.inline_editor=editor inine -a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S -a11y.labels.attribute_for_element=atributo para elemento %S -a11y.labels.text_contents_for_element=conteudo de texto para o elemento %S -a11y.labels.defined_in_file=definido em %S -a11y.labels.declarations_for_selector=declarações de estilo para o seletor "%S" -a11y.labels.property_for_selector=propriedade CSS para o seletor: %S -a11y.labels.value_property_in_selector=valor da propriendade %S para o seletor %S -a11y.labels.css_selector=seletor CSS -a11y.labels.source_code_for_file=código fonte para o arquivo %S -# LOCALIZATION NOTE (a11y.labels.overridden): -# Used by a11y. Not directly visible in the UI, intended for screen readers. -# indicates style property is overridden by selector with higher specificity -a11y.labels.overridden=sobrescrito -a11y.labels.press_enter_to_add_new_watch_expression=pressione enter para adicionar uma nova expressão de vistoria -# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint): -# Used by a11y. Not directly visible in the UI, intended for screen readers. -# Existence and state of a breakpoint -a11y.updates.has_conditional_break_point=tem ponto de parada condicional -a11y.updates.has_disabled_break_point=tem ponto de parada desabilitado -# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# #1 Line number, #2 Function name, #3 File name -a11y.updates.script_suspended_on_line_in_file=Script suspendido na linha %S em %S, arquivo %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a console panel search -# #1 %S String key the use is looking for. #2 number of rows that contain the matched text -# examples: Match found for "test" in 17 log rows -a11y.updates.match_found_in_logrows=resultado encontrado para "%S" na linha %S de log -# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a script panel search -# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in -# examples: Match found for "window.alert" on line 322 in utilities.js -a11y.updates.match_found_for_on_line=resultado encontrado para "%S" na linha %S em %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing an HTML panel search (if it is found in an element node) -# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying the matched element -# examples: Match found for "obj" in object element at /html/body/object[2] -a11y.updates.match_found_in_element=resultado encontrado para "%S" no elemento %S no caminho %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing an HTML panel search (if it is found in an attribute node) -# #1 Search string that was matched. #2 Attribute name #3 attribute value -# #4 the HTML element name containing. #5 XPATH string specifying the matched element -# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2] -a11y.updates.match_found_in_attribute=resultado encontrado para "%S" no atributo %S=%S para o elemento %S no caminho %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) -# #1 Search string that was matched. #2 element's text content -# #3 the HTML element name containing. #4 XPATH string specifying the matched element -# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2] -a11y.updates.match_found_in_text_content=resultado encontrado para "%S" no texto contendo: %S no elemento %S no caminho %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a CSS panel search (if it is found in a selector) -# #1 Search string that was matched. #2 selector in which the match was found -# examples: Match found for "main" in #mainContent h2 { -a11y.updates.match_found_in_selector=encontrada busca por "%S" no seletor %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a CSS panel search (if it is found in a style declaration) -# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to -# examples: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent { -a11y.updates.match_found_in_style_declaration=encontrada busca por "%S" na declaração de estilo %S no seletor %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a DOM panel search -# #1 Search string that was matched. #2 DOM property in which the match was found -# examples: Match found for "time" in _starttime : 1257324992232 (Number) -a11y.updates.match_found_in_dom_property=encontrada busca por "%S" na propriedade DOM %S -# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a Net panel search -# #1 Search string that was matched. #2 File name associated to the row in which the match was found. -# #3 Column in which the match was found #4. Column value -# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms -a11y.updates.match_found_in_net_row=encontrada busca por "%S" em %S, %s:%S; -# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Describes the match found when performing a Net panel search (if it is found in the Net summary row) -# #1 Search string that was matched. #2 Column value in which the match was found -# examples: Match found for "05" in net summary row: 4.05s -a11y.updates.match_found_in_net_summary_row=encontrada busca por "%S" no sumario de rede na linha: %S -# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly -# visible in the UI, intended for screen readers. -# Indicates that the searched string was not matched -# %S Search string that was matched. -# examples: No matched found for "wefkhwefkgwekhjgjh" -a11y.updates.no_matches_found=sem busca por "%S" no seletor %S -confirmation.Reset_All_Firebug_Options=Você tem certeza que deseja voltar todas as opções do Firebug para o estado inicial? -# Console messages. -warning.Console_must_be_enabled=O Terminal deve estar habilitado -warning.Command_line_blocked?=Linha de comando bloqueada? -message.Reload_to_activate_window_console=Reinicie para ativar a janela do terminal -# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showing -# a link to known issues (with Firefox 4.0) page. -# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissues -message.knownIssues40=Problemas com versão do Firefox para o Firebug: -# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab): -# If Firebug is displayed in an external window (detached), but not active for the -# currently selected Firefox tab, the following button label is used for an -# activation button. -label.Activate_Firebug_for_the_selected_Firefox_tab=Ativar Firebug para a aba do Firefox selecionada -# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text): -# An error message displayed in the Script panel when a source can't be displayed -# for specific URL. -# examples: Failed to load source for: http://www.example.com/script.js -# examples: The resource from this URL is not text: http://www.example.com/script.js -message.Failed_to_load_source_for=Falha em carregar fonte para -message.The_resource_from_this_URL_is_not_text=A base para essa URL não está no texto -# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script, -# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu. -firebug.history.Go_back_to_this_panel=voltar para este painel -firebug.history.Stay_on_this_panel=Ficar neste painel -firebug.history.Go_forward_to_this_panel=Voltar para este painel -# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script): -# Tooltips for back/forward buttons on the Script panel toolbar. -firebug.history.Go_back=Voltar -firebug.history.Go_forward=Avançar -# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load): -# This message is displayed within the Script panel if debugger is inactive during page load. -# The suggestion message represents an advice how to solve the problem. -script.warning.inactive_during_page_load=Painel de Script ficou inativo durante o carregamento da página -script.suggestion.inactive_during_page_load=Recarregue para ver todos os códigos -# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled): -# This message is displayed within the Script panel if javascript is not enabled. -# The suggestion message represents an advice how to solve the problem. -script.warning.javascript_not_enabled=O Javascript está desabilitado -script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Habilitar Javascript -# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed on -# the Script panel if Javascript is disabled. This button allows to enable it. -script.button.enable_javascript=Habilite o Javascript e recarregue -# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered): -# This message is displayed within the Script panel if javascript is not enabled for the current page. -# The suggestion message represents an advice how to solve the problem. -script.warning.all_scripts_filtered=Todos os scripts foram filtrados -script.suggestion.all_scripts_filtered=Veja a filtragem de Script na barra de tarefas "Mostrar Opções de Código Chrome" -# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript): -# This message is displayed within the Script panel if javascript is not enabled for the current page. -# The suggestion message represents an advice how to solve the problem. -script.warning.no_javascript=Sem Javascript nesta página -script.suggestion.no_javascript=Se as tags do - - - - - diff --git a/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xml b/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xml deleted file mode 100644 index c535c614..00000000 --- a/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xsl b/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xsl deleted file mode 100644 index c509b394..00000000 --- a/branches/firebug1.5/sandbox/issues/1145-xsl/firebug.xsl +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - -

                                Test console...

                                - - - - - - - -
                                - -
                                \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.html b/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.html deleted file mode 100644 index 1f94be0b..00000000 --- a/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.txt b/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.5/sandbox/issues/2756-local-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.html b/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.html deleted file mode 100644 index bdc2ca28..00000000 --- a/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.txt b/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.5/sandbox/issues/2840-synchronous-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.html b/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.html deleted file mode 100644 index 67dce90b..00000000 --- a/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.txt b/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.5/sandbox/issues/2846-offline-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/2977-XHR-params/post.php b/branches/firebug1.5/sandbox/issues/2977-XHR-params/post.php deleted file mode 100644 index 1eceae12..00000000 --- a/branches/firebug1.5/sandbox/issues/2977-XHR-params/post.php +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.html b/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.html deleted file mode 100644 index ef0488d5..00000000 --- a/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.txt b/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.5/sandbox/issues/2977-XHR-params/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.html b/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.html deleted file mode 100644 index 1f94be0b..00000000 --- a/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.txt b/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.txt deleted file mode 100644 index d3ae6e72..00000000 --- a/branches/firebug1.5/sandbox/issues/3118-XHR-long-lines/test.txt +++ /dev/null @@ -1,6 +0,0 @@ -testing long line with no spaces... -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0CANYOUSEEME -... -testing long line... -This is a very long line Lorem ipsum dolor sit amet consectetuer ac enim interdum Nam Nullam. Vitae volutpat ut laoreet justo libero netus risus Nam feugiat et. Felis at Morbi tellus Mauris tincidunt Curabitur pharetra Vestibulum Pellentesque fringilla. Libero dolor lobortis Nullam est odio faucibus Curabitur et Nulla neque. Justo lacinia eget nec eros augue facilisis sem nulla. -... diff --git a/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xml b/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xml deleted file mode 100644 index c535c614..00000000 --- a/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl b/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl deleted file mode 100644 index fbb872c2..00000000 --- a/branches/firebug1.5/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - -

                                Test console...

                                - - - - -
                                - -
                                \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3224-IE-external-CSS/test.html b/branches/firebug1.5/sandbox/issues/3224-IE-external-CSS/test.html deleted file mode 100644 index 28381b6b..00000000 --- a/branches/firebug1.5/sandbox/issues/3224-IE-external-CSS/test.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - -
                                -
                                - Req - Ser - Loa -
                                -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/bookmarklet.html b/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/bookmarklet.html deleted file mode 100644 index c334956d..00000000 --- a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/bookmarklet.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -

                                GFC Bookmarklet Test

                                - -

                                Follow the instructions

                                -
                                  -
                                1. Open this page using IE7 with Google Chrome Frame installed
                                2. -
                                3. Add the following bookmarklet: test
                                4. -
                                5. Run the bookmarklet
                                6. -
                                7. You should see an alert box with a message "OK"
                                8. -
                                -

                                OBS: Please note that if you click the link it will work, - but if you load it via bookmarklet it won't.

                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html b/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html deleted file mode 100644 index b8ecf5a9..00000000 --- a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - -

                                GFC Firebug Lite Bookmarklet Test

                                - -

                                Follow the instructions

                                -
                                  -
                                1. Open this page using IE7 with Google Chrome Frame installed
                                2. -
                                3. Visit: http://getfirebug.com/firebuglite#Stable
                                4. -
                                5. Add Firebug Lite bookmarklet
                                6. -
                                7. Run the bookmarklet
                                8. -
                                9. Firebug Lite should load
                                10. -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-link.html b/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-link.html deleted file mode 100644 index ba331f3c..00000000 --- a/branches/firebug1.5/sandbox/issues/3482-google-chrome-frame/fblite-link.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -

                                GFC Test

                                -

                                Follow the instructions

                                -
                                  -
                                1. Open this page using IE7 with Google Chrome Frame installed
                                2. -
                                3. You should see Firebug Lite opening without problems
                                4. -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html b/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html deleted file mode 100644 index a872c0e7..00000000 --- a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external.html b/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external.html deleted file mode 100644 index de1d6bfe..00000000 --- a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/external.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/jquery.js b/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/jquery.js deleted file mode 100644 index fff67764..00000000 --- a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/jquery.js +++ /dev/null @@ -1,6240 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.2 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Sat Feb 13 22:33:48 2010 -0500 - */ -(function( window, undefined ) { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, - - // Is it a simple selector - isSimple = /^.[^:#\[\.,]*$/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // Has the ready events already been bound? - readyBound = false, - - // The functions to execute on DOM ready - readyList = [], - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwnProperty = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - indexOf = Array.prototype.indexOf; - -jQuery.fn = jQuery.prototype = { - init: function( selector, context ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context ) { - this.context = document; - this[0] = document.body; - this.selector = "body"; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - match = quickExpr.exec( selector ); - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - if ( elem ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $("TAG") - } else if ( !context && /^\w+$/.test( selector ) ) { - this.selector = selector; - this.context = document; - selector = document.getElementsByTagName( selector ); - return jQuery.merge( this, selector ); - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return jQuery( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.4.2", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = jQuery(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // If the DOM is already ready - if ( jQuery.isReady ) { - // Execute the function immediately - fn.call( document, jQuery ); - - // Otherwise, remember the function for later - } else if ( readyList ) { - // Add the function to the wait list - readyList.push( fn ); - } - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || jQuery(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging object literal values or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) { - var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src - : jQuery.isArray(copy) ? [] : {}; - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - window.$ = _$; - - if ( deep ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // Handle when the DOM is ready - ready: function() { - // Make sure that the DOM is not already loaded - if ( !jQuery.isReady ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 13 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If there are functions bound, to execute - if ( readyList ) { - // Execute all of them - var fn, i = 0; - while ( (fn = readyList[ i++ ]) ) { - fn.call( document, jQuery ); - } - - // Reset the list of functions - readyList = null; - } - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyBound ) { - return; - } - - readyBound = true; - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - return jQuery.ready(); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent("onreadystatechange", DOMContentLoaded); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return toString.call(obj) === "[object Function]"; - }, - - isArray: function( obj ) { - return toString.call(obj) === "[object Array]"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor - && !hasOwnProperty.call(obj, "constructor") - && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwnProperty.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") - .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { - - // Try to use the native JSON parser first - return window.JSON && window.JSON.parse ? - window.JSON.parse( data ) : - (new Function("return " + data))(); - - } else { - jQuery.error( "Invalid JSON: " + data ); - } - }, - - noop: function() {}, - - // Evalulates a script in a global context - globalEval: function( data ) { - if ( data && rnotwhite.test(data) ) { - // Inspired by code by Andrea Giammarchi - // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html - var head = document.getElementsByTagName("head")[0] || document.documentElement, - script = document.createElement("script"); - - script.type = "text/javascript"; - - if ( jQuery.support.scriptEval ) { - script.appendChild( document.createTextNode( data ) ); - } else { - script.text = data; - } - - // Use insertBefore instead of appendChild to circumvent an IE6 bug. - // This arises when a base node is used (#2709). - head.insertBefore( script, head.firstChild ); - head.removeChild( script ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction(object); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( var value = object[0]; - i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {} - } - } - - return object; - }, - - trim: function( text ) { - return (text || "").replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - if ( array.indexOf ) { - return array.indexOf( elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = []; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - if ( !inv !== !callback( elems[ i ], i ) ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var ret = [], value; - - // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, length = elems.length; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - proxy: function( fn, proxy, thisObject ) { - if ( arguments.length === 2 ) { - if ( typeof proxy === "string" ) { - thisObject = fn; - fn = thisObject[ proxy ]; - proxy = undefined; - - } else if ( proxy && !jQuery.isFunction( proxy ) ) { - thisObject = proxy; - proxy = undefined; - } - } - - if ( !proxy && fn ) { - proxy = function() { - return fn.apply( thisObject || this, arguments ); - }; - } - - // Set the guid of unique handler to the same of original handler, so it can be removed - if ( fn ) { - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - } - - // So proxy can be declared as an argument - return proxy; - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) || - /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) || - /(msie) ([\w.]+)/.exec( ua ) || - !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - browser: {} -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -if ( indexOf ) { - jQuery.inArray = function( elem, array ) { - return indexOf.call( array, elem ); - }; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch( error ) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -function evalScript( i, elem ) { - if ( elem.src ) { - jQuery.ajax({ - url: elem.src, - async: false, - dataType: "script" - }); - } else { - jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); - } - - if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); - } -} - -// Mutifunctional method to get and set values to a collection -// The value/s can be optionally by executed if its a function -function access( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; -} - -function now() { - return (new Date).getTime(); -} -(function() { - - jQuery.support = {}; - - var root = document.documentElement, - script = document.createElement("script"), - div = document.createElement("div"), - id = "script" + now(); - - div.style.display = "none"; - div.innerHTML = "
                                a"; - - var all = div.getElementsByTagName("*"), - a = div.getElementsByTagName("a")[0]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return; - } - - jQuery.support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: div.firstChild.nodeType === 3, - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName("tbody").length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName("link").length, - - // Get the style information from getAttribute - // (IE uses .cssText insted) - style: /red/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: a.getAttribute("href") === "/a", - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: div.getElementsByTagName("input")[0].value === "on", - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected, - - parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null, - - // Will be defined later - deleteExpando: true, - checkClone: false, - scriptEval: false, - noCloneEvent: true, - boxModel: null - }; - - script.type = "text/javascript"; - try { - script.appendChild( document.createTextNode( "window." + id + "=1;" ) ); - } catch(e) {} - - root.insertBefore( script, root.firstChild ); - - // Make sure that the execution of code works by injecting a script - // tag with appendChild/createTextNode - // (IE doesn't support this, fails, and uses .text instead) - if ( window[ id ] ) { - jQuery.support.scriptEval = true; - delete window[ id ]; - } - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete script.test; - - } catch(e) { - jQuery.support.deleteExpando = false; - } - - root.removeChild( script ); - - if ( div.attachEvent && div.fireEvent ) { - div.attachEvent("onclick", function click() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - jQuery.support.noCloneEvent = false; - div.detachEvent("onclick", click); - }); - div.cloneNode(true).fireEvent("onclick"); - } - - div = document.createElement("div"); - div.innerHTML = ""; - - var fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked; - - // Figure out if the W3C box model works as expected - // document.body must exist before we can do this - jQuery(function() { - var div = document.createElement("div"); - div.style.width = div.style.paddingLeft = "1px"; - - document.body.appendChild( div ); - jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2; - document.body.removeChild( div ).style.display = 'none'; - - div = null; - }); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - var eventSupported = function( eventName ) { - var el = document.createElement("div"); - eventName = "on" + eventName; - - var isSupported = (eventName in el); - if ( !isSupported ) { - el.setAttribute(eventName, "return;"); - isSupported = typeof el[eventName] === "function"; - } - el = null; - - return isSupported; - }; - - jQuery.support.submitBubbles = eventSupported("submit"); - jQuery.support.changeBubbles = eventSupported("change"); - - // release memory in IE - root = script = div = all = a = null; -})(); - -jQuery.props = { - "for": "htmlFor", - "class": "className", - readonly: "readOnly", - maxlength: "maxLength", - cellspacing: "cellSpacing", - rowspan: "rowSpan", - colspan: "colSpan", - tabindex: "tabIndex", - usemap: "useMap", - frameborder: "frameBorder" -}; -var expando = "jQuery" + now(), uuid = 0, windowData = {}; - -jQuery.extend({ - cache: {}, - - expando:expando, - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - "object": true, - "applet": true - }, - - data: function( elem, name, data ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache; - - if ( !id && typeof name === "string" && data === undefined ) { - return null; - } - - // Compute a unique ID for the element - if ( !id ) { - id = ++uuid; - } - - // Avoid generating a new cache unless none exists and we - // want to manipulate it. - if ( typeof name === "object" ) { - elem[ expando ] = id; - thisCache = cache[ id ] = jQuery.extend(true, {}, name); - - } else if ( !cache[ id ] ) { - elem[ expando ] = id; - cache[ id ] = {}; - } - - thisCache = cache[ id ]; - - // Prevent overriding the named cache with undefined values - if ( data !== undefined ) { - thisCache[ name ] = data; - } - - return typeof name === "string" ? thisCache[ name ] : thisCache; - }, - - removeData: function( elem, name ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - return; - } - - elem = elem == window ? - windowData : - elem; - - var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ]; - - // If we want to remove a specific section of the element's data - if ( name ) { - if ( thisCache ) { - // Remove the section of cache data - delete thisCache[ name ]; - - // If we've removed all the data, remove the element's cache - if ( jQuery.isEmptyObject(thisCache) ) { - jQuery.removeData( elem ); - } - } - - // Otherwise, we want to remove all of the element's data - } else { - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } - - // Completely remove the data cache - delete cache[ id ]; - } - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - if ( typeof key === "undefined" && this.length ) { - return jQuery.data( this[0] ); - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - } - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - } else { - return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() { - jQuery.data( this, key, value ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); -jQuery.extend({ - queue: function( elem, type, data ) { - if ( !elem ) { - return; - } - - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { - return q || []; - } - - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data) ); - - } else { - q.push( data ); - } - - return q; - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), fn = queue.shift(); - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function( i, elem ) { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - } -}); -var rclass = /[\n\t]/g, - rspace = /\s+/, - rreturn = /\r/g, - rspecialurl = /href|src|style/, - rtype = /(button|input)/i, - rfocusable = /(button|input|object|select|textarea)/i, - rclickable = /^(a|area)$/i, - rradiocheck = /radio|checkbox/; - -jQuery.fn.extend({ - attr: function( name, value ) { - return access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name, fn ) { - return this.each(function(){ - jQuery.attr( this, name, "" ); - if ( this.nodeType === 1 ) { - this.removeAttribute( name ); - } - }); - }, - - addClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className ) { - elem.className = value; - - } else { - var className = " " + elem.className + " ", setClass = elem.className; - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split(rspace); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, i = 0, self = jQuery(this), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery.data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - if ( value === undefined ) { - var elem = this[0]; - - if ( elem ) { - if ( jQuery.nodeName( elem, "option" ) ) { - return (elem.attributes.value || {}).specified ? elem.value : elem.text; - } - - // We need to handle select boxes special - if ( jQuery.nodeName( elem, "select" ) ) { - var index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - if ( option.selected ) { - // Get the specifc value for the option - value = jQuery(option).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - return values; - } - - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) { - return elem.getAttribute("value") === null ? "on" : elem.value; - } - - - // Everything else, we just grab the value - return (elem.value || "").replace(rreturn, ""); - - } - - return undefined; - } - - var isFunction = jQuery.isFunction(value); - - return this.each(function(i) { - var self = jQuery(this), val = value; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call(this, i, self.val()); - } - - // Typecast each time if the value is a Function and the appended - // value is therefore different each time. - if ( typeof val === "number" ) { - val += ""; - } - - if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) { - this.checked = jQuery.inArray( self.val(), val ) >= 0; - - } else if ( jQuery.nodeName( this, "select" ) ) { - var values = jQuery.makeArray(val); - - jQuery( "option", this ).each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - this.selectedIndex = -1; - } - - } else { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attr: function( elem, name, value, pass ) { - // don't set attributes on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery(elem)[name](value); - } - - var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ), - // Whether we are setting (or getting) - set = value !== undefined; - - // Try to normalize/fix the name - name = notxml && jQuery.props[ name ] || name; - - // Only do all the following if this is a node (faster for style) - if ( elem.nodeType === 1 ) { - // These attributes require special treatment - var special = rspecialurl.test( name ); - - // Safari mis-reports the default selected property of an option - // Accessing the parent's selectedIndex property fixes it - if ( name === "selected" && !jQuery.support.optSelected ) { - var parent = elem.parentNode; - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - - // If applicable, access the attribute via the DOM 0 way - if ( name in elem && notxml && !special ) { - if ( set ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } - - elem[ name ] = value; - } - - // browsers index elements by id/name on forms, give priority to attributes. - if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) { - return elem.getAttributeNode( name ).nodeValue; - } - - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - if ( name === "tabIndex" ) { - var attributeNode = elem.getAttributeNode( "tabIndex" ); - - return attributeNode && attributeNode.specified ? - attributeNode.value : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - - return elem[ name ]; - } - - if ( !jQuery.support.style && notxml && name === "style" ) { - if ( set ) { - elem.style.cssText = "" + value; - } - - return elem.style.cssText; - } - - if ( set ) { - // convert the value to a string (all browsers do this but IE) see #1070 - elem.setAttribute( name, "" + value ); - } - - var attr = !jQuery.support.hrefNormalized && notxml && special ? - // Some attributes require a special call on IE - elem.getAttribute( name, 2 ) : - elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return attr === null ? undefined : attr; - } - - // elem is actually elem.style ... set the style - // Using attr for specific style information is now deprecated. Use style instead. - return jQuery.style( elem, name, value ); - } -}); -var rnamespaces = /\.(.*)$/, - fcleanup = function( nm ) { - return nm.replace(/[^\w\s\.\|`]/g, function( ch ) { - return "\\" + ch; - }); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) { - elem = window; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery.data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events = elemData.events || {}, - eventHandle = elemData.handle, eventHandle; - - if ( !eventHandle ) { - elemData.handle = eventHandle = function() { - // Handle the second event of a trigger and when - // an event is called after a page has unloaded - return typeof jQuery !== "undefined" && !jQuery.event.triggered ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - handleObj.guid = handler.guid; - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for global triggering - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)") - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( var j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( var j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem ); - } - } - }, - - // bubbling is internal - trigger: function( event, data, elem /*, bubbling */ ) { - // Event object or event type - var type = event.type || event, - bubbling = arguments[3]; - - if ( !bubbling ) { - event = typeof event === "object" ? - // jQuery.Event object - event[expando] ? event : - // Object literal - jQuery.extend( jQuery.Event(type), event ) : - // Just the event type (string) - jQuery.Event(type); - - if ( type.indexOf("!") >= 0 ) { - event.type = type = type.slice(0, -1); - event.exclusive = true; - } - - // Handle a global trigger - if ( !elem ) { - // Don't bubble custom events when global (to avoid too much overhead) - event.stopPropagation(); - - // Only trigger if we've ever bound an event for it - if ( jQuery.event.global[ type ] ) { - jQuery.each( jQuery.cache, function() { - if ( this.events && this.events[type] ) { - jQuery.event.trigger( event, data, this.handle.elem ); - } - }); - } - } - - // Handle triggering a single element - - // don't do events on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) { - return undefined; - } - - // Clean up in case it is reused - event.result = undefined; - event.target = elem; - - // Clone the incoming data, if any - data = jQuery.makeArray( data ); - data.unshift( event ); - } - - event.currentTarget = elem; - - // Trigger the event, it is assumed that "handle" is a function - var handle = jQuery.data( elem, "handle" ); - if ( handle ) { - handle.apply( elem, data ); - } - - var parent = elem.parentNode || elem.ownerDocument; - - // Trigger an inline bound script - try { - if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) { - if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) { - event.result = false; - } - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( !event.isPropagationStopped() && parent ) { - jQuery.event.trigger( event, data, parent, true ); - - } else if ( !event.isDefaultPrevented() ) { - var target = event.target, old, - isClick = jQuery.nodeName(target, "a") && type === "click", - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem, event ) === false) && - !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) { - - try { - if ( target[ type ] ) { - // Make sure that we don't accidentally re-trigger the onFOO events - old = target[ "on" + type ]; - - if ( old ) { - target[ "on" + type ] = null; - } - - jQuery.event.triggered = true; - target[ type ](); - } - - // prevent IE from throwing an error for some elements with some event types, see #3533 - } catch (e) {} - - if ( old ) { - target[ "on" + type ] = old; - } - - jQuery.event.triggered = false; - } - } - }, - - handle: function( event ) { - var all, handlers, namespaces, namespace, events; - - event = arguments[0] = jQuery.event.fix( event || window.event ); - event.currentTarget = this; - - // Namespaced event handlers - all = event.type.indexOf(".") < 0 && !event.exclusive; - - if ( !all ) { - namespaces = event.type.split("."); - event.type = namespaces.shift(); - namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - var events = jQuery.data(this, "events"), handlers = events[ event.type ]; - - if ( events && handlers ) { - // Clone the handlers to prevent manipulation - handlers = handlers.slice(0); - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Filter the functions by class - if ( all || namespace.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, arguments ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - } - - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var doc = document.documentElement, body = document.body; - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) { - event.which = event.charCode || event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); - }, - - remove: function( handleObj ) { - var remove = true, - type = handleObj.origType.replace(rnamespaces, ""); - - jQuery.each( jQuery.data(this, "events").live || [], function() { - if ( type === this.origType.replace(rnamespaces, "") ) { - remove = false; - return false; - } - }); - - if ( remove ) { - jQuery.event.remove( this, handleObj.origType, liveHandler ); - } - } - - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( this.setInterval ) { - this.onbeforeunload = eventHandle; - } - - return false; - }, - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -var removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - elem.removeEventListener( type, handle, false ); - } : - function( elem, type, handle ) { - elem.detachEvent( "on" + type, handle ); - }; - -jQuery.Event = function( src ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - // Event type - } else { - this.type = src; - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = now(); - - // Mark it as fixed - this[ expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - } - // otherwise set the returnValue property of the original event to false (IE) - e.returnValue = false; - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - // Check if mouse(over|out) are still within the same parent element - var parent = event.relatedTarget; - - // Firefox sometimes assigns relatedTarget a XUL element - // which we cannot access the parentNode property of - try { - // Traverse up the tree - while ( parent && parent !== this ) { - parent = parent.parentNode; - } - - if ( parent !== this ) { - // set the correct event type - event.type = event.data; - - // handle event if we actually just moused on to a non sub-element - jQuery.event.handle.apply( this, arguments ); - } - - // assuming we've left the element since we most likely mousedover a xul element - } catch(e) { } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( this.nodeName.toLowerCase() !== "form" ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - return trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - return trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var formElems = /textarea|input|select/i, - - changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( elem.nodeName.toLowerCase() === "select" ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !formElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery.data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery.data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - return jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - click: function( e ) { - var elem = e.target, type = elem.type; - - if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) { - return testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = elem.type; - - if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - return testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information/focus[in] is not needed anymore - beforeactivate: function( e ) { - var elem = e.target; - jQuery.data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return formElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return formElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; -} - -function trigger( type, elem, args ) { - args[0].type = type; - return jQuery.event.handle.apply( elem, args ); -} - -// Create "bubbling" focus and blur events -if ( document.addEventListener ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - jQuery.event.special[ fix ] = { - setup: function() { - this.addEventListener( orig, handler, true ); - }, - teardown: function() { - this.removeEventListener( orig, handler, true ); - } - }; - - function handler( e ) { - e = jQuery.event.fix( e ); - e.type = fix; - return jQuery.event.handle.call( this, e ); - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - var handler = name === "one" ? jQuery.proxy( fn, function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }) : fn; - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - var event = jQuery.Event( type ); - event.preventDefault(); - event.stopPropagation(); - jQuery.event.trigger( event, data, this[0] ); - return event.result; - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, i = 1; - - // link all the functions, so any of them can unbind this click handler - while ( i < args.length ) { - jQuery.proxy( fn, args[ i++ ] ); - } - - return this.click( jQuery.proxy( fn, function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - })); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( jQuery.isFunction( data ) ) { - fn = data; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( type === "focus" || type === "blur" ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - context.each(function(){ - jQuery.event.add( this, liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - }); - - } else { - // unbind live handler - context.unbind( liveConvert( type, selector ), fn ); - } - } - - return this; - } -}); - -function liveHandler( event ) { - var stop, elems = [], selectors = [], args = arguments, - related, match, handleObj, elem, j, i, l, data, - events = jQuery.data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) - if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) { - return; - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( match[i].selector === handleObj.selector ) { - elem = match[i].elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) { - stop = false; - break; - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( fn ) { - return fn ? this.bind( name, fn ) : this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - -// Prevent memory leaks in IE -// Window isn't included so as not to unbind existing unload events -// More info: -// - http://isaacschlueter.com/2006/10/msie-memory-leaks/ -if ( window.attachEvent && !window.addEventListener ) { - window.attachEvent("onunload", function() { - for ( var id in jQuery.cache ) { - if ( jQuery.cache[ id ].handle ) { - // Try/Catch is to handle iframes being unloaded, see #4280 - try { - jQuery.event.remove( jQuery.cache[ id ].handle.elem ); - } catch(e) {} - } - } - }); -} -/*! - * Sizzle CSS Selector Engine - v1.0 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function(){ - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function(selector, context, results, seed) { - results = results || []; - var origContext = context = context || document; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context), - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - var ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0]; - } - - if ( context ) { - var ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray(set); - } else { - prune = false; - } - - while ( parts.length ) { - var cur = parts.pop(), pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - } else if ( context && context.nodeType === 1 ) { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - } else { - for ( var i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function(results){ - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort(sortOrder); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[i-1] ) { - results.splice(i--, 1); - } - } - } - } - - return results; -}; - -Sizzle.matches = function(expr, set){ - return Sizzle(expr, null, null, set); -}; - -Sizzle.find = function(expr, context, isXML){ - var set, match; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var type = Expr.order[i], match; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice(1,1); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace(/\\/g, ""); - set = Expr.find[ type ]( match, context, isXML ); - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = context.getElementsByTagName("*"); - } - - return {set: set, expr: expr}; -}; - -Sizzle.filter = function(expr, set, inplace, not){ - var old = expr, result = [], curLoop = set, match, anyFound, - isXMLFilter = set && set[0] && isXML(set[0]); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var filter = Expr.filter[ type ], found, item, left = match[1]; - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - } else { - curLoop[i] = false; - } - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - match: { - ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - leftMatch: {}, - attrMap: { - "class": "className", - "for": "htmlFor" - }, - attrHandle: { - href: function(elem){ - return elem.getAttribute("href"); - } - }, - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !/\W/.test(part), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - ">": function(checkSet, part){ - var isPartStr = typeof part === "string"; - - if ( isPartStr && !/\W/.test(part) ) { - part = part.toLowerCase(); - - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - } else { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - "": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML); - }, - "~": function(checkSet, part, isXML){ - var doneName = done++, checkFn = dirCheck; - - if ( typeof part === "string" && !/\W/.test(part) ) { - var nodeCheck = part = part.toLowerCase(); - checkFn = dirNodeCheck; - } - - checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML); - } - }, - find: { - ID: function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? [m] : []; - } - }, - NAME: function(match, context){ - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], results = context.getElementsByName(match[1]); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - TAG: function(match, context){ - return context.getElementsByTagName(match[1]); - } - }, - preFilter: { - CLASS: function(match, curLoop, inplace, result, not, isXML){ - match = " " + match[1].replace(/\\/g, "") + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - ID: function(match){ - return match[1].replace(/\\/g, ""); - }, - TAG: function(match, curLoop){ - return match[1].toLowerCase(); - }, - CHILD: function(match){ - if ( match[1] === "nth" ) { - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - ATTR: function(match, curLoop, inplace, result, not, isXML){ - var name = match[1].replace(/\\/g, ""); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - PSEUDO: function(match, curLoop, inplace, result, not){ - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - if ( !inplace ) { - result.push.apply( result, ret ); - } - return false; - } - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - POS: function(match){ - match.unshift( true ); - return match; - } - }, - filters: { - enabled: function(elem){ - return elem.disabled === false && elem.type !== "hidden"; - }, - disabled: function(elem){ - return elem.disabled === true; - }, - checked: function(elem){ - return elem.checked === true; - }, - selected: function(elem){ - // Accessing this property makes selected-by-default - // options in Safari work properly - elem.parentNode.selectedIndex; - return elem.selected === true; - }, - parent: function(elem){ - return !!elem.firstChild; - }, - empty: function(elem){ - return !elem.firstChild; - }, - has: function(elem, i, match){ - return !!Sizzle( match[3], elem ).length; - }, - header: function(elem){ - return /h\d/i.test( elem.nodeName ); - }, - text: function(elem){ - return "text" === elem.type; - }, - radio: function(elem){ - return "radio" === elem.type; - }, - checkbox: function(elem){ - return "checkbox" === elem.type; - }, - file: function(elem){ - return "file" === elem.type; - }, - password: function(elem){ - return "password" === elem.type; - }, - submit: function(elem){ - return "submit" === elem.type; - }, - image: function(elem){ - return "image" === elem.type; - }, - reset: function(elem){ - return "reset" === elem.type; - }, - button: function(elem){ - return "button" === elem.type || elem.nodeName.toLowerCase() === "button"; - }, - input: function(elem){ - return /input|select|textarea|button/i.test(elem.nodeName); - } - }, - setFilters: { - first: function(elem, i){ - return i === 0; - }, - last: function(elem, i, match, array){ - return i === array.length - 1; - }, - even: function(elem, i){ - return i % 2 === 0; - }, - odd: function(elem, i){ - return i % 2 === 1; - }, - lt: function(elem, i, match){ - return i < match[3] - 0; - }, - gt: function(elem, i, match){ - return i > match[3] - 0; - }, - nth: function(elem, i, match){ - return match[3] - 0 === i; - }, - eq: function(elem, i, match){ - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function(elem, match, i, array){ - var name = match[1], filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; - } else if ( name === "not" ) { - var not = match[3]; - - for ( var i = 0, l = not.length; i < l; i++ ) { - if ( not[i] === elem ) { - return false; - } - } - - return true; - } else { - Sizzle.error( "Syntax error, unrecognized expression: " + name ); - } - }, - CHILD: function(elem, match){ - var type = match[1], node = elem; - switch (type) { - case 'only': - case 'first': - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - if ( type === "first" ) { - return true; - } - node = elem; - case 'last': - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - return true; - case 'nth': - var first = match[2], last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - if ( first === 0 ) { - return diff === 0; - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - ID: function(elem, match){ - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - TAG: function(elem, match){ - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - CLASS: function(elem, match){ - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - ATTR: function(elem, match){ - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - POS: function(elem, match, i, array){ - var name = match[2], filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){ - return "\\" + (num - 0 + 1); - })); -} - -var makeArray = function(array, results) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch(e){ - makeArray = function(array, results) { - var ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - } else { - if ( typeof array.length === "number" ) { - for ( var i = 0, l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - } else { - for ( var i = 0; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.compareDocumentPosition ? -1 : 1; - } - - var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( "sourceIndex" in document.documentElement ) { - sortOrder = function( a, b ) { - if ( !a.sourceIndex || !b.sourceIndex ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.sourceIndex ? -1 : 1; - } - - var ret = a.sourceIndex - b.sourceIndex; - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} else if ( document.createRange ) { - sortOrder = function( a, b ) { - if ( !a.ownerDocument || !b.ownerDocument ) { - if ( a == b ) { - hasDuplicate = true; - } - return a.ownerDocument ? -1 : 1; - } - - var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange(); - aRange.setStart(a, 0); - aRange.setEnd(a, 0); - bRange.setStart(b, 0); - bRange.setEnd(b, 0); - var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange); - if ( ret === 0 ) { - hasDuplicate = true; - } - return ret; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -function getText( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += getText( elem.childNodes ); - } - } - - return ret; -} - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date).getTime(); - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - var root = document.documentElement; - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function(match, context, isXML){ - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : []; - } - }; - - Expr.filter.ID = function(elem, match){ - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - root = form = null; // release memory in IE -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function(match, context){ - var results = context.getElementsByTagName(match[1]); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - Expr.attrHandle.href = function(elem){ - return elem.getAttribute("href", 2); - }; - } - - div = null; // release memory in IE -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, div = document.createElement("div"); - div.innerHTML = "

                                "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function(query, context, extra, seed){ - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && context.nodeType === 9 && !isXML(context) ) { - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(e){} - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; // release memory in IE - })(); -} - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
                                "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function(match, context, isXML) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; // release memory in IE -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - if ( elem ) { - elem = elem[dir]; - var match = false; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -var contains = document.compareDocumentPosition ? function(a, b){ - return !!(a.compareDocumentPosition(b) & 16); -} : function(a, b){ - return a !== b && (a.contains ? a.contains(b) : true); -}; - -var isXML = function(elem){ - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function(selector, context){ - var tmpSet = [], later = "", match, - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = getText; -jQuery.isXMLDoc = isXML; -jQuery.contains = contains; - -return; - -window.Sizzle = Sizzle; - -})(); -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - slice = Array.prototype.slice; - -// Implement the identical functionality for filter and not -var winnow = function( elements, qualifier, keep ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - return !!qualifier.call( elem, i, elem ) === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var ret = this.pushStack( "", "find", selector ), length = 0; - - for ( var i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( var n = length; n < ret.length; n++ ) { - for ( var r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && jQuery.filter( selector, this ).length > 0; - }, - - closest: function( selectors, context ) { - if ( jQuery.isArray( selectors ) ) { - var ret = [], cur = this[0], match, matches = {}, selector; - - if ( cur && selectors.length ) { - for ( var i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[selector] ) { - matches[selector] = jQuery.expr.match.POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[selector]; - - if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) { - ret.push({ selector: selector, elem: cur }); - delete matches[selector]; - } - } - cur = cur.parentNode; - } - } - - return ret; - } - - var pos = jQuery.expr.match.POS.test( selectors ) ? - jQuery( selectors, context || this.context ) : null; - - return this.map(function( i, cur ) { - while ( cur && cur.ownerDocument && cur !== context ) { - if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) { - return cur; - } - cur = cur.parentNode; - } - return null; - }); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context || this.context ) : - jQuery.makeArray( selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, slice.call(arguments).join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], cur = elem[dir]; - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, - rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, - rtagName = /<([\w:]+)/, - rtbody = /"; - }, - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
                                ", "
                                " ], - thead: [ 1, "", "
                                " ], - tr: [ 2, "", "
                                " ], - td: [ 3, "", "
                                " ], - col: [ 2, "", "
                                " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - - - - - diff --git a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/test.txt b/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/test.txt deleted file mode 100644 index 232b7072..00000000 --- a/branches/firebug1.5/sandbox/issues/3504-jQuery-XHR/test.txt +++ /dev/null @@ -1,3 +0,0 @@ -testing... -testing... -testing... \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/plugin/index.html b/branches/firebug1.5/sandbox/plugin/index.html deleted file mode 100644 index 945d94aa..00000000 --- a/branches/firebug1.5/sandbox/plugin/index.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - -FirebugLite 1.3 Testing - - - - - - -
                                -

                                FirebugLite 1.3 Testing

                                -
                                -

                                Hello World

                                - -
                                -
                                - Just a test note -
                                -
                                -

                                User interface files

                                - -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/plugin/plugin.js b/branches/firebug1.5/sandbox/plugin/plugin.js deleted file mode 100644 index 3dcfc4c5..00000000 --- a/branches/firebug1.5/sandbox/plugin/plugin.js +++ /dev/null @@ -1,64 +0,0 @@ -/* See license.txt for terms of usage */ - -Firebug.extend(function(FBL) { with (FBL) { -// ************************************************************************************************ - -// ************************************************************************************************ -// Plugin Module - -Firebug.Plugin = extend(Firebug.Module, -{ - getPanel: function() - { - return Firebug.chrome ? Firebug.chrome.getPanel("Plugin") : null; - }, - - clear: function() - { - alert("clear button clicked"); - this.getPanel().panelNode.innerHTML = ""; - } -}); - - -// ************************************************************************************************ -// Plugin Panel - -function PluginPanel(){}; - -PluginPanel.prototype = extend(Firebug.Panel, -{ - name: "Plugin", - title: "Plugin", - - options: { - hasToolButtons: true, - innerHTMLSync: true - }, - - create: function(){ - Firebug.Panel.create.apply(this, arguments); - - this.clearButton = new Button({ - caption: "Clear", - title: "Clear Panel", - owner: Firebug.Plugin, - onClick: Firebug.Plugin.clear - }); - }, - - initialize: function(){ - Firebug.Panel.initialize.apply(this, arguments); - - this.clearButton.initialize(); - - this.panelNode.innerHTML = "Hello World!"; - } - -}); - -Firebug.registerPanel(PluginPanel); -Firebug.registerModule(Firebug.Plugin); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/sandbox/relative.html b/branches/firebug1.5/sandbox/relative.html deleted file mode 100644 index 6f97587b..00000000 --- a/branches/firebug1.5/sandbox/relative.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -FirebugLite 1.4 Testing - - - - - - - -
                                -

                                FirebugLite 1.4 Testing

                                -
                                -

                                Development Functions

                                - -
                                -
                                - Use the "build" function to generate the full uncompressed js file, - and the "compress" functions to compress the HTML and CSS of the - User Interface files, to be used in the injected.js - file, when in bookmarlet mode. -
                                -
                                -

                                User interface files

                                - -
                                -
                                -

                                Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.

                                -

                                Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.

                                -

                                Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.

                                -

                                Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.

                                -

                                Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.

                                -

                                In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.

                                -

                                Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.

                                -

                                Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.

                                -

                                Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.

                                -

                                A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel.

                                -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/event/cache.html b/branches/firebug1.5/sandbox/sandbox/event/cache.html deleted file mode 100644 index 6f33e0cc..00000000 --- a/branches/firebug1.5/sandbox/sandbox/event/cache.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - -FirebugLite 1.4 Cache Testing - - - - - - -
                                -

                                Issue: Dynamic Cache problem with cloneNode in IE

                                - - -
                                Hello World
                                - -
                                  -
                                1. Open this page in IE
                                2. -
                                3. Inspect the "Hello" element
                                4. -
                                5. Click the "clone" button
                                6. -
                                7. You'll see a clone of the "Hello World" message with the additional ", I'm a clone!"
                                8. -
                                9. Inspect the "clone" element
                                10. -
                                11. Firebug Lite should update the HTML tree and select the proper - cloned "Hello". If Firebug Lite does not show or select the proper - element, it means that this test has failed.
                                12. -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/event/test.html b/branches/firebug1.5/sandbox/sandbox/event/test.html deleted file mode 100644 index 08531499..00000000 --- a/branches/firebug1.5/sandbox/sandbox/event/test.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - -FirebugLite 1.4 Event Testing - - - - - - -
                                -

                                FirebugLite 1.4 Event Testing

                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype1.html b/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype1.html deleted file mode 100644 index 80316d56..00000000 --- a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype1.html +++ /dev/null @@ -1,598 +0,0 @@ - - - - -~ improved sourceBox prototype #1 - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                -
                                -
                                - - ~ improved sourceBox prototype #1 - -
                                  -
                                • Buffered viewport (reduces flickering when scrolling to near locations)
                                • -
                                • Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)
                                • -
                                • Fast line insertion/deletion (documentFragment and element.replaceChild)
                                • -
                                • Faster rendering
                                • -
                                    -
                                  • - Now we are repositioning/resizing elements much less frequently. - Only the sourceBuffer needs to be positioned (there are no padding - elements), and it needs to be repositioned only when scrolling up. -
                                  • -
                                  • - Elements are resized only when the size of the viewport changes (when - Firebug's UI is resized), but not when it is scrolling. -
                                  • -
                                  • - The width of the "line number bar" (the gray stuff) is being computed - via CSS which reduces a lot the reflow when scrolling. -
                                  • -
                                  -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2.html b/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2.html deleted file mode 100644 index 7702347f..00000000 --- a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2.html +++ /dev/null @@ -1,655 +0,0 @@ - - - - -~ improved sourceBox prototype #2 - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                
                                -      
                                -
                                -
                                -
                                - - ~ improved sourceBox prototype #2 - -
                                  -
                                • Cut-and-paste friendly (version #2)
                                • -
                                • Buffered viewport (reduces flickering when scrolling to near locations)
                                • -
                                • Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)
                                • -
                                • Fast line insertion/deletion (documentFragment and element.replaceChild)
                                • -
                                • Faster rendering
                                • -
                                    -
                                  • - Now we are repositioning/resizing elements much less frequently. - Only the sourceBuffer needs to be positioned (there are no padding - elements), and it needs to be repositioned only when scrolling up. -
                                  • -
                                  • - Elements are resized only when the size of the viewport changes (when - Firebug's UI is resized), but not when it is scrolling. -
                                  • -
                                  • - The width of the "line number bar" (the gray stuff) is being computed - via CSS which reduces a lot the reflow when scrolling. -
                                  • -
                                  -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2b.html b/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2b.html deleted file mode 100644 index 3c9c46ee..00000000 --- a/branches/firebug1.5/sandbox/sandbox/fastSourceBox/prototype2b.html +++ /dev/null @@ -1,711 +0,0 @@ - - - - -~ improved sourceBox prototype #2b - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                
                                -      
                                -
                                -
                                -
                                - - ~ improved sourceBox prototype #2 - -

                                - - This file is basically the same code as in prototype2.html, but with - more function calls to generate HTML of each line (similar to what - Firebug currently does) in order to test the performance impact. - The generation of all lines takes ~20% time using this approach. - -

                                - -
                                  -
                                • Cut-and-paste friendly (version #2b)
                                • -
                                • Buffered viewport (reduces flickering when scrolling to near locations)
                                • -
                                • Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)
                                • -
                                • Fast line insertion/deletion (documentFragment and element.replaceChild)
                                • -
                                • Faster rendering
                                • -
                                    -
                                  • - Now we are repositioning/resizing elements much less frequently. - Only the sourceBuffer needs to be positioned (there are no padding - elements), and it needs to be repositioned only when scrolling up. -
                                  • -
                                  • - Elements are resized only when the size of the viewport changes (when - Firebug's UI is resized), but not when it is scrolling. -
                                  • -
                                  • - The width of the "line number bar" (the gray stuff) is being computed - via CSS which reduces a lot the reflow when scrolling. -
                                  • -
                                  -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/Templarian_inspector.png b/branches/firebug1.5/sandbox/sandbox/flexBox/Templarian_inspector.png deleted file mode 100644 index 166a9bad..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/Templarian_inspector.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/detach.png b/branches/firebug1.5/sandbox/sandbox/flexBox/detach.png deleted file mode 100644 index 0ddb9a17..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/detach.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/detachHover.png b/branches/firebug1.5/sandbox/sandbox/flexBox/detachHover.png deleted file mode 100644 index e4192729..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/detachHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/firebugX.png b/branches/firebug1.5/sandbox/sandbox/flexBox/firebugX.png deleted file mode 100644 index 904bee7f..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/firebugX.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/min.png b/branches/firebug1.5/sandbox/sandbox/flexBox/min.png deleted file mode 100644 index 1034d66f..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/min.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/minHover.png b/branches/firebug1.5/sandbox/sandbox/flexBox/minHover.png deleted file mode 100644 index b0d1e1af..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/minHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/off.png b/branches/firebug1.5/sandbox/sandbox/flexBox/off.png deleted file mode 100644 index b70b1d24..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/off.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/offHover.png b/branches/firebug1.5/sandbox/sandbox/flexBox/offHover.png deleted file mode 100644 index f3670f19..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/offHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/tabBg.png b/branches/firebug1.5/sandbox/sandbox/flexBox/tabBg.png deleted file mode 100644 index 8f936dcc..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/tabBg.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/tabBgTop.png b/branches/firebug1.5/sandbox/sandbox/flexBox/tabBgTop.png deleted file mode 100644 index abce17cf..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBox/tabBgTop.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt deleted file mode 100644 index 787ad4ef..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt +++ /dev/null @@ -1,5 +0,0 @@ -use table-fixed - -set height of both row and row's div spacer - -td > div.relative > div.absolute.overflow \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box.html deleted file mode 100644 index fc9aabec..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box1.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box1.html deleted file mode 100644 index 5c8cc48e..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box1.html +++ /dev/null @@ -1,419 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box2.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box2.html deleted file mode 100644 index 845cfedf..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box2.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box3.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box3.html deleted file mode 100644 index c9e3539d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box3.html +++ /dev/null @@ -1,464 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - - -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html deleted file mode 100644 index 480dd980..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html +++ /dev/null @@ -1,847 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html.bak b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html.bak deleted file mode 100644 index d5c2ce78..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box4.html.bak +++ /dev/null @@ -1,508 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - - -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5.html deleted file mode 100644 index e6131806..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left (I'm a div) - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5trans.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5trans.html deleted file mode 100644 index be295889..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box5trans.html +++ /dev/null @@ -1,798 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left (I'm a div) - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6.html deleted file mode 100644 index 5b6090d1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6.html +++ /dev/null @@ -1,769 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                -
                                - left (I'm a div) -
                                -
                                -
                                - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html deleted file mode 100644 index 7c178eb2..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html +++ /dev/null @@ -1,709 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left (I'm a div) - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html.bak b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html.bak deleted file mode 100644 index 68303b90..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box6trans.html.bak +++ /dev/null @@ -1,769 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                -
                                - left (I'm a div) -
                                -
                                -
                                - -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7.html deleted file mode 100644 index d06d1985..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left (I'm a div) - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html deleted file mode 100644 index 740cfb7d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html +++ /dev/null @@ -1,713 +0,0 @@ - - - - -Firebug Lite - - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - - content - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html.bak b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html.bak deleted file mode 100644 index 73d4779d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/box7trans.html.bak +++ /dev/null @@ -1,620 +0,0 @@ - - - - -Firebug Lite - - - - - - - -
                                -
                                - top -
                                -
                                - tools -
                                -
                                - -
                                - left (I'm a div) - -
                                -
                                -
                                - - -
                                -
                                - cmd -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/boxTest.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/boxTest.html deleted file mode 100644 index 1a753ca2..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/boxTest.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - -Firebug Lite - - - - -
                                -
                                - top -
                                -
                                - tools -
                                - -
                                -
                                - -
                                - left -
                                -
                                -
                                - - -
                                -
                                -
                                - cmd -
                                -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.IE6.css b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.IE6.css deleted file mode 100644 index 14f8aa87..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.IE6.css +++ /dev/null @@ -1,20 +0,0 @@ -/************************************************************************************************/ -#fbToolbarSearch { - background-image: url(search.gif) !important; -} -/************************************************************************************************/ -.fbErrors { - background-image: url(errorIcon.gif) !important; -} -/************************************************************************************************/ -.logRow-info { - background-image: url(infoIcon.gif) !important; -} - -.logRow-warning { - background-image: url(warningIcon.gif) !important; -} - -.logRow-error { - background-image: url(errorIcon.gif) !important; -} diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.css b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.css deleted file mode 100644 index decd5917..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.css +++ /dev/null @@ -1,3056 +0,0 @@ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Loose */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody { - display: none; -} -/**/ - -/* IE6 need a separated rule, otherwise it will not recognize it */ -.collapsed { - display: none; -} - -[collapsed="true"] { - display: none; -} - -#fbCSS { - padding: 0 !important; -} - -.cssPropDisable { - float: left; - display: block; - width: 2em; - cursor: default; -} - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* panelBase */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/************************************************************************************************/ - -.infoTip { - z-index: 2147483647; - position: fixed; - padding: 2px 3px; - border: 1px solid #CBE087; - background: LightYellow; - font-family: Monaco, monospace; - color: #000000; - display: none; - white-space: nowrap; - pointer-events: none; -} - -.infoTip[active="true"] { - display: block; -} - -.infoTipLoading { - width: 16px; - height: 16px; - background: url(chrome://firebug/skin/loading_16.gif) no-repeat; -} - -.infoTipImageBox { - min-width: 100px; - text-align: center; -} - -.infoTipCaption { - font: message-box; -} - -.infoTipLoading > .infoTipImage, -.infoTipLoading > .infoTipCaption { - display: none; -} - -/************************************************************************************************/ - -h1.groupHeader { - padding: 2px 4px; - margin: 0 0 4px 0; - border-top: 1px solid #CCCCCC; - border-bottom: 1px solid #CCCCCC; - background: #eee url(group.gif) repeat-x; - font-size: 11px; - font-weight: bold; - _position: relative; -} - -/************************************************************************************************/ - -.inlineEditor, -.fixedWidthEditor { - z-index: 2147483647; - position: absolute; - display: none; -} - -.inlineEditor { - margin-left: -6px; - margin-top: -3px; - /* - _margin-left: -7px; - _margin-top: -5px; - /**/ -} - -.textEditorInner, -.fixedWidthEditor { - margin: 0 0 0 0 !important; - padding: 0; - border: none !important; - font: inherit; - text-decoration: inherit; - background-color: #FFFFFF; -} - -.fixedWidthEditor { - border-top: 1px solid #888888 !important; - border-bottom: 1px solid #888888 !important; -} - -.textEditorInner { - position: relative; - top: -7px; - left: -5px; - - outline: none; - resize: none; - - /* - _border: 1px solid #999 !important; - _padding: 1px !important; - _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040"); - /**/ -} - -.textEditorInner1 { - padding-left: 11px; - background: url(textEditorBorders.png) repeat-y; - _background: url(textEditorBorders.gif) repeat-y; - _overflow: hidden; -} - -.textEditorInner2 { - position: relative; - padding-right: 2px; - background: url(textEditorBorders.png) repeat-y 100% 0; - _background: url(textEditorBorders.gif) repeat-y 100% 0; - _position: fixed; -} - -.textEditorTop1 { - background: url(textEditorCorners.png) no-repeat 100% 0; - margin-left: 11px; - height: 10px; - _background: url(textEditorCorners.gif) no-repeat 100% 0; - _overflow: hidden; -} - -.textEditorTop2 { - position: relative; - left: -11px; - width: 11px; - height: 10px; - background: url(textEditorCorners.png) no-repeat; - _background: url(textEditorCorners.gif) no-repeat; -} - -.textEditorBottom1 { - position: relative; - background: url(textEditorCorners.png) no-repeat 100% 100%; - margin-left: 11px; - height: 12px; - _background: url(textEditorCorners.gif) no-repeat 100% 100%; -} - -.textEditorBottom2 { - position: relative; - left: -11px; - width: 11px; - height: 12px; - background: url(textEditorCorners.png) no-repeat 0 100%; - _background: url(textEditorCorners.gif) no-repeat 0 100%; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* CSS */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-css { - overflow-x: hidden; -} - -.cssSheet > .insertBefore { - height: 1.5em; -} - -.cssRule { - position: relative; - margin: 0; - padding: 1em 0 0 6px; - font-family: Monaco, monospace; - color: #000000; -} - -.cssRule:first-child { - padding-top: 6px; -} - -.cssElementRuleContainer { - position: relative; -} - -.cssHead { - padding-right: 150px; -} - -.cssProp { - /*padding-left: 2em;*/ -} - -.cssPropName { - color: DarkGreen; -} - -.cssPropValue { - margin-left: 8px; - color: DarkBlue; -} - -.cssOverridden span { - text-decoration: line-through; -} - -.cssInheritedRule { -} - -.cssInheritLabel { - margin-right: 0.5em; - font-weight: bold; -} - -.cssRule .objectLink-sourceLink { - top: 0; -} - -.cssProp.editGroup:hover { - background: url(disable.png) no-repeat 2px 1px; - _background: url(disable.gif) no-repeat 2px 1px; -} - -.cssProp.editGroup.editing { - background: none; -} - -.cssProp.disabledStyle { - background: url(disableHover.png) no-repeat 2px 1px; - _background: url(disableHover.gif) no-repeat 2px 1px; - opacity: 1; - color: #CCCCCC; -} - -.disabledStyle .cssPropName, -.disabledStyle .cssPropValue { - color: #CCCCCC; -} - -.cssPropValue.editing + .cssSemi, -.inlineExpander + .cssSemi { - display: none; -} - -.cssPropValue.editing { - white-space: nowrap; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.stylePropName { - font-weight: bold; - padding: 0 4px 4px 4px; - width: 50%; -} - -.stylePropValue { - width: 50%; -} -/* -.useA11y .a11yCSSView .focusRow:focus { - outline: none; - background-color: transparent - } - - .useA11y .a11yCSSView .focusRow:focus .cssSelector, - .useA11y .a11yCSSView .focusRow:focus .cssPropName, - .useA11y .a11yCSSView .focusRow:focus .cssPropValue, - .useA11y .a11yCSSView .computedStyleRow:focus, - .useA11y .a11yCSSView .groupHeader:focus { - outline: 2px solid #FF9933; - outline-offset: -2px; - background-color: #FFFFD6; - } - - .useA11y .a11yCSSView .groupHeader:focus { - outline-offset: -2px; - } -/**/ - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Net */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - -/* See license.txt for terms of usage */ - -.panelNode-net { - overflow-x: hidden; -} - -.netTable { - width: 100%; -} - -/************************************************************************************************/ - -.hideCategory-undefined .category-undefined, -.hideCategory-html .category-html, -.hideCategory-css .category-css, -.hideCategory-js .category-js, -.hideCategory-image .category-image, -.hideCategory-xhr .category-xhr, -.hideCategory-flash .category-flash, -.hideCategory-txt .category-txt, -.hideCategory-bin .category-bin { - display: none; -} - -/************************************************************************************************/ - -.netHeadRow { - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netHeadCol { - border-bottom: 1px solid #CCCCCC; - padding: 2px 4px 2px 18px; - font-weight: bold; -} - -.netHeadLabel { - white-space: nowrap; - overflow: hidden; -} - -/************************************************************************************************/ -/* Header for Net panel table */ - -.netHeaderRow { - height: 16px; -} - -.netHeaderCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x; - white-space: nowrap; -} - -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox { - padding: 2px 14px 2px 18px; -} - -.netHeaderCellBox { - padding: 2px 14px 2px 10px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.netHeaderCell:hover:active { - background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x; -} - -.netHeaderSorted { - background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x; -} - -.netHeaderSorted > .netHeaderCellBox { - border-right-color: #6B7C93; - background: url(chrome://firebug/skin/arrowDown.png) no-repeat right; -} - -.netHeaderSorted.sortedAscending > .netHeaderCellBox { - background-image: url(chrome://firebug/skin/arrowUp.png); -} - -.netHeaderSorted:hover:active { - background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x; -} - -/************************************************************************************************/ -/* Breakpoints */ - -.panelNode-net .netRowHeader { - display: block; -} - -.netRowHeader { - cursor: pointer; - display: none; - height: 15px; - margin-right: 0 !important; -} - -/* Display brekpoint disc */ -.netRow .netRowHeader { - background-position: 5px 1px; -} - -.netRow[breakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpoint.png); -} - -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader { - background-image: url(chrome://firebug/skin/breakpointDisabled.png); -} - -.netRow.category-xhr:hover .netRowHeader { - background-color: #F6F6F6; -} - -#netBreakpointBar { - max-width: 38px; -} - -#netHrefCol > .netHeaderCellBox { - border-left: 0px; -} - -.netRow .netRowHeader { - width: 3px; -} - -.netInfoRow .netRowHeader { - display: table-cell; -} - -/************************************************************************************************/ -/* Column visibility */ - -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"], -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol, -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"], -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol, -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"], -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol, -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"], -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol, -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"], -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol { - display: none; -} - -/************************************************************************************************/ - -.netRow { - background: LightYellow; -} - -.netRow.loaded { - background: #FFFFFF; -} - -.netRow.loaded:hover { - background: #EFEFEF; -} - -.netCol { - padding: 0; - vertical-align: top; - border-bottom: 1px solid #EFEFEF; - white-space: nowrap; - height: 17px; -} - -.netLabel { - width: 100%; -} - -.netStatusCol { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.responseError > .netStatusCol { - color: red; -} - -.netDomainCol { - padding-left: 5px; -} - -.netSizeCol { - text-align: right; - padding-right: 10px; -} - -.netHrefLabel { - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 10; - position: absolute; - padding-left: 18px; - padding-top: 1px; - max-width: 15%; - font-weight: bold; -} - -.netFullHrefLabel { - display: none; - -moz-user-select: none; - padding-right: 10px; - padding-bottom: 3px; - max-width: 100%; - background: #FFFFFF; - z-index: 200; -} - -.netHrefCol:hover > .netFullHrefLabel { - display: block; -} - -.netRow.loaded:hover .netCol > .netFullHrefLabel { - background-color: #EFEFEF; -} - -.useA11y .a11yShowFullLabel { - display: block; - background-image: none !important; - border: 1px solid #CBE087; - background-color: LightYellow; - font-family: Monaco, monospace; - color: #000000; - font-size: 10px; - z-index: 2147483647; -} - -.netSizeLabel { - padding-left: 6px; -} - -.netStatusLabel, -.netDomainLabel, -.netSizeLabel, -.netBar { - padding: 1px 0 2px 0 !important; -} - -.responseError { - color: red; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.hasHeaders .netHrefLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/************************************************************************************************/ - -.netLoadingIcon { - position: absolute; - border: 0; - margin-left: 14px; - width: 16px; - height: 16px; - background: transparent no-repeat 0 0; - background-image: url(chrome://firebug/skin/loading_16.gif); - display:inline-block; -} - -.loaded .netLoadingIcon { - display: none; -} - -/************************************************************************************************/ - -.netBar, .netSummaryBar { - position: relative; - border-right: 50px solid transparent; -} - -.netResolvingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x; - z-index:60; -} - -.netConnectingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x; - z-index:50; -} - -.netBlockingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x; - z-index:40; -} - -.netSendingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x; - z-index:30; -} - -.netWaitingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x; - z-index:20; - min-width: 1px; -} - -.netReceivingBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x; - z-index:10; -} - -.netWindowLoadBar, -.netContentLoadBar { - position: absolute; - left: 0; - top: 0; - bottom: 0; - width: 1px; - background-color: red; - z-index: 70; - opacity: 0.5; - display: none; - margin-bottom:-1px; -} - -.netContentLoadBar { - background-color: Blue; -} - -.netTimeLabel { - -moz-box-sizing: padding-box; - position: absolute; - top: 1px; - left: 100%; - padding-left: 6px; - color: #444444; - min-width: 16px; -} - -/* - * Timing info tip is reusing net timeline styles to display the same - * colors for individual request phases. Notice that the info tip must - * respect also loaded and fromCache styles that also modify the - * actual color. These are used both on the same element in case - * of the tooltip. - */ -.loaded .netReceivingBar, -.loaded.netReceivingBar { - background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x; - border-color: #B6B6B6; -} - -.fromCache .netReceivingBar, -.fromCache.netReceivingBar { - background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x; - border-color: #D6D6D6; -} - -.netSummaryRow .netTimeLabel, -.loaded .netTimeLabel { - background: transparent; -} - -/************************************************************************************************/ -/* Time Info tip */ - -.timeInfoTip { - width: 150px; - height: 40px -} - -.timeInfoTipBar, -.timeInfoTipEventBar { - position: relative; - display: block; - margin: 0; - opacity: 1; - height: 15px; - width: 4px; -} - -.timeInfoTipEventBar { - width: 1px !important; -} - -.timeInfoTipCell.startTime { - padding-right: 8px; -} - -.timeInfoTipCell.elapsedTime { - text-align: right; - padding-right: 8px; -} - -/************************************************************************************************/ -/* Size Info tip */ - -.sizeInfoLabelCol { - font-weight: bold; - padding-right: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; -} - -.sizeInfoSizeCol { - font-weight: bold; -} - -.sizeInfoDetailCol { - color: gray; - text-align: right; -} - -.sizeInfoDescCol { - font-style: italic; -} - -/************************************************************************************************/ -/* Summary */ - -.netSummaryRow .netReceivingBar { - background: #BBBBBB; - border: none; -} - -.netSummaryLabel { - color: #222222; -} - -.netSummaryRow { - background: #BBBBBB !important; - font-weight: bold; -} - -.netSummaryRow .netBar { - border-right-color: #BBBBBB; -} - -.netSummaryRow > .netCol { - border-top: 1px solid #999999; - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 1px; - padding-bottom: 2px; -} - -.netSummaryRow > .netHrefCol:hover { - background: transparent !important; -} - -.netCountLabel { - padding-left: 18px; -} - -.netTotalSizeCol { - text-align: right; - padding-right: 10px; -} - -.netTotalTimeCol { - text-align: right; -} - -.netCacheSizeLabel { - position: absolute; - z-index: 1000; - left: 0; - top: 0; -} - -/************************************************************************************************/ - -.netLimitRow { - background: rgb(255, 255, 225) !important; - font-weight:normal; - color: black; - font-weight:normal; -} - -.netLimitLabel { - padding-left: 18px; -} - -.netLimitRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - vertical-align: middle !important; - padding-top: 2px; - padding-bottom: 2px; -} - -.netLimitButton { - font-size: 11px; - padding-top: 1px; - padding-bottom: 1px; -} - -/************************************************************************************************/ - -.netInfoCol { - border-top: 1px solid #EEEEEE; - background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF; -} - -.netInfoBody { - margin: 10px 0 4px 10px; -} - -.netInfoTabs { - position: relative; - padding-left: 17px; -} - -.netInfoTab { - position: relative; - top: -3px; - margin-top: 10px; - padding: 4px 6px; - border: 1px solid transparent; - border-bottom: none; - _border: none; - font-weight: bold; - color: #565656; - cursor: pointer; -} - -/*.netInfoTab:hover { - cursor: pointer; -}*/ - -/* replaced by .netInfoTabSelected for IE6 support -.netInfoTab[selected="true"] { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} -/**/ -.netInfoTabSelected { - cursor: default !important; - border: 1px solid #D7D7D7 !important; - border-bottom: none !important; - -moz-border-radius: 4px 4px 0 0; - background-color: #FFFFFF; -} - -.logRow-netInfo.error .netInfoTitle { - color: red; -} - -.logRow-netInfo.loading .netInfoResponseText { - font-style: italic; - color: #888888; -} - -.loading .netInfoResponseHeadersTitle { - display: none; -} - -.netInfoResponseSizeLimit { - font-family: Lucida Grande, Tahoma, sans-serif; - padding-top: 10px; - font-size: 11px; -} - -.netInfoText { - display: none; - margin: 0; - border: 1px solid #D7D7D7; - border-right: none; - padding: 8px; - background-color: #FFFFFF; - font-family: Monaco, monospace; - /* white-space: pre; */ - /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ -} - -/* replaced by .netInfoTextSelected for IE6 support -.netInfoText[selected="true"] { - display: block; -} -/**/ -.netInfoTextSelected { - display: block; -} - -.netInfoParamName { - padding: 0 10px 0 0; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - vertical-align: top; - text-align: right; - white-space: nowrap; -} - -.netInfoParamValue { - width: 100%; -} - -.netInfoHeadersText, -.netInfoPostText, -.netInfoPutText { - padding-top: 0; -} - -.netInfoHeadersGroup, -.netInfoPostParams, -.netInfoPostSource { - margin-bottom: 4px; - border-bottom: 1px solid #D7D7D7; - padding-top: 8px; - padding-bottom: 2px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #565656; -} - -.netInfoPostParamsTable, -.netInfoPostPartsTable, -.netInfoPostJSONTable, -.netInfoPostXMLTable, -.netInfoPostSourceTable { - margin-bottom: 10px; - width: 100%; -} - -.netInfoPostContentType { - color: #bdbdbd; - padding-left: 50px; - font-weight: normal; -} - -.netInfoHtmlPreview { - border: 0; - width: 100%; - height:100%; -} - -/************************************************************************************************/ -/* Request & Response Headers */ - -.netHeadersViewSource { - color: #bdbdbd; - margin-left: 200px; - font-weight: normal; -} - -.netHeadersViewSource:hover { - color: blue; - cursor: pointer; -} - -/************************************************************************************************/ - -.netActivationRow, -.netPageSeparatorRow { - background: rgb(229, 229, 229) !important; - font-weight: normal; - color: black; -} - -.netActivationLabel { - background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px; - padding-left: 22px; -} - -/************************************************************************************************/ - -.netPageSeparatorRow { - height: 5px !important; -} - -.netPageSeparatorLabel { - padding-left: 22px; - height: 5px !important; -} - -.netPageRow { - background-color: rgb(255, 255, 255); -} - -.netPageRow:hover { - background: #EFEFEF; -} - -.netPageLabel { - padding: 1px 0 2px 18px !important; - font-weight: bold; -} - -/************************************************************************************************/ - -.netActivationRow > .netCol { - border-bottom: 2px solid; - -moz-border-bottom-colors: #EFEFEF #999999; - padding-top: 2px; - padding-bottom: 3px; -} -/* -.useA11y .panelNode-net .a11yFocus:focus, -.useA11y .panelNode-net .focusRow:focus { - outline-offset: -2px; - background-color: #FFFFD6 !important; -} - -.useA11y .panelNode-net .netHeaderCell:focus, -.useA11y .panelNode-net :focus .netHeaderCell, -.useA11y .panelNode-net :focus .netReceivingBar, -.useA11y .netSummaryRow :focus .netBar, -.useA11y .netSummaryRow:focus .netBar { - background-color: #FFFFD6; - background-image: none; - border-color: #FFFFD6; -} -/**/ - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Windows */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/************************************************************************************************/ -/* Twisties */ - -/* IE6 has problems with > operator, and multiple classes */ -/*.twisty, -.logRow-errorMessage > .hasTwisty > .errorTitle, - /* avoid rule not being parsed IE6 */ -.logRow-spy .spyHead .spyTitle, -.logGroup .logGroupLabel, -.hasChildren .memberLabelCell .memberLabel, -.hasHeaders .netHrefLabel { - background-image: url(tree_open.gif); - background-repeat: no-repeat; - background-position: 2px 2px; -} -/* -.logRow-errorMessage > .hasTwisty.opened > .errorTitle, -/* avoid rule not being parsed IE6 */ -.opened .spyHead .spyTitle, -.opened .logGroupLabel, -.opened .memberLabelCell .memberLabel/*, -.nodeBox.highlightOpen > .nodeLabel > .twisty, -.nodeBox.open > .nodeLabel > .twisty, -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ { - background-image: url(tree_close.gif); -} - -.twisty { - background-position: 2px 0; -} - - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* Console */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-console { - overflow-x: hidden; -} - -.objectLink { - text-decoration: none; -} - -.objectLink:hover { - cursor: pointer; - text-decoration: underline; -} - -.logRow { - position: relative; - margin: 0; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - background-color: #FFFFFF; - overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */ -} - -.useA11y .logRow:focus { - border-bottom: 1px solid #000000 !important; - outline: none !important; - background-color: #FFFFAD !important; -} - -.useA11y .logRow:focus a.objectLink-sourceLink { - background-color: #FFFFAD; -} - -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus { - outline: 2px solid #FF9933; - background-color: #FFFFAD; -} - -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{ - background-color: #888888 !important; -} - -.useA11y .logGroup.opened > .logRow { - border-bottom: 1px solid #ffffff; -} - -.logGroup { - background: url(group.gif) repeat-x #FFFFFF; - padding: 0 !important; - border: none !important; -} - -.logGroupBody { - display: none; - margin-left: 16px; - border-left: 1px solid #D7D7D7; - border-top: 1px solid #D7D7D7; - background: #FFFFFF; -} - -.logGroup > .logRow { - background-color: transparent !important; - font-weight: bold; -} - -.logGroup.opened > .logRow { - border-bottom: none; -} - -.logGroup.opened > .logGroupBody { - display: block; -} - -/*****************************************************************************************/ - -.logRow-command > .objectBox-text { - font-family: Monaco, monospace; - color: #0000FF; - white-space: pre-wrap; -} - -.logRow-info, -.logRow-warn, -.logRow-error, -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-left: 22px; - background-repeat: no-repeat; - background-position: 4px 2px; -} - -.logRow-assert, -.logRow-warningMessage, -.logRow-errorMessage { - padding-top: 0; - padding-bottom: 0; -} - -.logRow-info, -.logRow-info .objectLink-sourceLink { - background-color: #FFFFFF; -} - -.logRow-warn, -.logRow-warningMessage, -.logRow-warn .objectLink-sourceLink, -.logRow-warningMessage .objectLink-sourceLink { - background-color: cyan; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage, -.logRow-error .objectLink-sourceLink, -.logRow-errorMessage .objectLink-sourceLink { - background-color: LightYellow; -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - color: #FF0000; -} - -.logRow-info { - /*background-image: url(chrome://firebug/skin/infoIcon.png);*/ -} - -.logRow-warn, -.logRow-warningMessage { - /*background-image: url(chrome://firebug/skin/warningIcon.png);*/ -} - -.logRow-error, -.logRow-assert, -.logRow-errorMessage { - /*background-image: url(chrome://firebug/skin/errorIcon.png);*/ -} - -/*****************************************************************************************/ - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-string, -.objectBox-text, -.objectLink-textNode { - white-space: pre-wrap; -} - -.objectBox-number, -.objectLink-styleRule, -.objectLink-element, -.objectLink-textNode { - color: #000088; -} - -.objectBox-string { - color: #FF0000; -} - -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - color: DarkGreen; -} - -.objectBox-null, -.objectBox-undefined { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-exception { - padding: 0 2px 0 18px; - /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/ - color: red; -} - -.objectLink-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ - -.errorTitle { - margin-top: 0px; - margin-bottom: 1px; - padding-top: 2px; - padding-bottom: 2px; -} - -.errorTrace { - margin-left: 17px; -} - -.errorSourceBox { - margin: 2px 0; -} - -.errorSource-none { - display: none; -} - -.errorSource-syntax > .errorBreak { - visibility: hidden; -} - -.errorSource { - cursor: pointer; - font-family: Monaco, monospace; - color: DarkGreen; -} - -.errorSource:hover { - text-decoration: underline; -} - -.errorBreak { - cursor: pointer; - display: none; - margin: 0 6px 0 0; - width: 13px; - height: 14px; - vertical-align: bottom; - /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/ - opacity: 0.1; -} - -.hasBreakSwitch .errorBreak { - display: inline; -} - -.breakForError .errorBreak { - opacity: 1; -} - -.assertDescription { - margin: 0; -} - -/************************************************************************************************/ - -.logRow-profile > .logRow > .objectBox-text { - font-family: Lucida Grande, Tahoma, sans-serif; - color: #000000; -} - -.logRow-profile > .logRow > .objectBox-text:last-child { - color: #555555; - font-style: italic; -} - -.logRow-profile.opened > .logRow { - padding-bottom: 4px; -} - -.profilerRunning > .logRow { - /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/ - padding-left: 22px !important; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.profileSizer { - width:100%; - overflow-x:auto; - overflow-y: scroll; -} - -.profileTable { - border-bottom: 1px solid #D7D7D7; - padding: 0 0 4px 0; -} - -.profileTable tr[odd="1"] { - background-color: #F5F5F5; - vertical-align:middle; -} - -.profileTable a { - vertical-align:middle; -} - -.profileTable td { - padding: 1px 4px 0 4px; -} - -.headerCell { - cursor: pointer; - -moz-user-select: none; - border-bottom: 1px solid #9C9C9C; - padding: 0 !important; - font-weight: bold; - /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/ -} - -.headerCellBox { - padding: 2px 4px; - border-left: 1px solid #D9D9D9; - border-right: 1px solid #9C9C9C; -} - -.headerCell:hover:active { - /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/ -} - -.headerSorted { - /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/ -} - -.headerSorted > .headerCellBox { - border-right-color: #6B7C93; - /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/ -} - -.headerSorted.sortedAscending > .headerCellBox { - /*background-image: url(chrome://firebug/skin/arrowUp.png);*/ -} - -.headerSorted:hover:active { - /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/ -} - -.linkCell { - text-align: right; -} - -.linkCell > .objectLink-sourceLink { - position: static; -} - -/*****************************************************************************************/ - -.logRow-stackTrace { - padding-top: 0; -} - -.logRow-stackTrace > .objectBox-stackFrame { - position: relative; - padding-top: 2px; -} - -/************************************************************************************************/ - -.objectLink-object { - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: DarkGreen; - white-space: pre-wrap; -} - -.objectPropValue { - font-weight: normal; - font-style: italic; - color: #555555; -} - -/************************************************************************************************/ - -.selectorTag, -.selectorId, -.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -.selectorHidden > .selectorTag { - color: #5F82D9; -} - -.selectorHidden > .selectorId { - color: #888888; -} - -.selectorHidden > .selectorClass { - color: #D86060; -} - -.selectorValue { - font-family: Lucida Grande, sans-serif; - font-style: italic; - color: #555555; -} - -/*****************************************************************************************/ - -.panelNode.searching .logRow { - display: none; -} - -.logRow.matched { - display: block !important; -} - -.logRow.matching { - position: absolute; - left: -1000px; - top: -1000px; - max-width: 0; - max-height: 0; - overflow: hidden; -} - -/*****************************************************************************************/ - -.arrayLeftBracket, -.arrayRightBracket, -.arrayComma { - font-family: Monaco, monospace; -} - -.arrayLeftBracket, -.arrayRightBracket { - font-weight: bold; -} - -.arrayLeftBracket { - margin-right: 4px; -} - -.arrayRightBracket { - margin-left: 4px; -} - -/*****************************************************************************************/ - -.logRow-dir { - padding: 0; -} - -/************************************************************************************************/ - -/* -.logRow-errorMessage > .hasTwisty > .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup > .logRow -*/ -.logRow-errorMessage .hasTwisty .errorTitle, -.logRow-spy .spyHead .spyTitle, -.logGroup .logRow { - cursor: pointer; - padding-left: 18px; - background-repeat: no-repeat; - background-position: 3px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle { - background-position: 2px 3px; -} - -.logRow-errorMessage > .hasTwisty > .errorTitle:hover, -.logRow-spy .spyHead .spyTitle:hover, -.logGroup > .logRow:hover { - text-decoration: underline; -} - -/*****************************************************************************************/ - -.logRow-spy { - padding: 0 !important; -} - -.logRow-spy, -.logRow-spy .objectLink-sourceLink { - background: url(group.gif) repeat-x #FFFFFF; - padding-right: 4px; - right: 0; -} - -.logRow-spy.opened { - padding-bottom: 4px; - border-bottom: none; -} - -.spyTitle { - color: #000000; - font-weight: bold; - -moz-box-sizing: padding-box; - overflow: hidden; - z-index: 100; - padding-left: 18px; -} - -.spyCol { - padding: 0; - white-space: nowrap; - height: 16px; -} - -.spyTitleCol:hover > .objectLink-sourceLink, -.spyTitleCol:hover > .spyTime, -.spyTitleCol:hover > .spyStatus, -.spyTitleCol:hover > .spyTitle { - display: none; -} - -.spyFullTitle { - display: none; - -moz-user-select: none; - max-width: 100%; - background-color: Transparent; -} - -.spyTitleCol:hover > .spyFullTitle { - display: block; -} - -.spyStatus { - padding-left: 10px; - color: rgb(128, 128, 128); -} - -.spyTime { - margin-left:4px; - margin-right:4px; - color: rgb(128, 128, 128); -} - -.spyIcon { - margin-right: 4px; - margin-left: 4px; - width: 16px; - height: 16px; - vertical-align: middle; - background: transparent no-repeat 0 0; - display: none; -} - -.loading .spyHead .spyRow .spyIcon { - background-image: url(loading_16.gif); - display: block; -} - -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon { - width: 0; - margin: 0; -} - -.logRow-spy.error .spyHead .spyRow .spyIcon { - background-image: url(errorIcon-sm.png); - display: block; - background-position: 2px 2px; -} - -.logRow-spy .spyHead .netInfoBody { - display: none; -} - -.logRow-spy.opened .spyHead .netInfoBody { - margin-top: 10px; - display: block; -} - -.logRow-spy.error .spyTitle, -.logRow-spy.error .spyStatus, -.logRow-spy.error .spyTime { - color: red; -} - -.logRow-spy.loading .spyResponseText { - font-style: italic; - color: #888888; -} - -/************************************************************************************************/ - -.caption { - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #444444; -} - -.warning { - padding: 10px; - font-family: Lucida Grande, Tahoma, sans-serif; - font-weight: bold; - color: #888888; -} - - - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* DOM */ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ - - -/* See license.txt for terms of usage */ - -.panelNode-dom { - overflow-x: hidden !important; -} - -.domTable { - font-size: 1em; - width: 100%; - table-layout: fixed; - background: #fff; -} - -.domTableIE { - width: auto; -} - -.memberLabelCell { - padding: 2px 0 2px 0; - vertical-align: top; -} - -.memberValueCell { - padding: 1px 0 1px 5px; - display: block; - overflow: hidden; -} - -.memberLabel { - display: block; - cursor: default; - -moz-user-select: none; - overflow: hidden; - /*position: absolute;*/ - padding-left: 18px; - /*max-width: 30%;*/ - /*white-space: nowrap;*/ - background-color: #FFFFFF; - text-decoration: none; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.memberRow.hasChildren .memberLabelCell .memberLabel:hover { - cursor: pointer; - color: blue; - text-decoration: underline; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.userLabel { - color: #000000; - font-weight: bold; -} - -.userClassLabel { - color: #E90000; - font-weight: bold; -} - -.userFunctionLabel { - color: #025E2A; - font-weight: bold; -} - -.domLabel { - color: #000000; -} - -.domFunctionLabel { - color: #025E2A; -} - -.ordinalLabel { - color: SlateBlue; - font-weight: bold; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -.scopesRow { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 5px solid #BEBEBE; - color: #666666; -} -.scopesLabel { - background-color: LightYellow; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchEditCell { - padding: 2px 18px; - background-color: LightYellow; - border-bottom: 1px solid #BEBEBE; - color: #666666; -} - -.editor-watchNewRow, -.editor-memberRow { - font-family: Monaco, monospace !important; -} - -.editor-memberRow { - padding: 1px 0 !important; -} - -.editor-watchRow { - padding-bottom: 0 !important; -} - -.watchRow > .memberLabelCell { - font-family: Monaco, monospace; - padding-top: 1px; - padding-bottom: 1px; -} - -.watchRow > .memberLabelCell > .memberLabel { - background-color: transparent; -} - -.watchRow > .memberValueCell { - padding-top: 2px; - padding-bottom: 2px; -} - -.watchRow > .memberLabelCell, -.watchRow > .memberValueCell { - background-color: #F5F5F5; - border-bottom: 1px solid #BEBEBE; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.watchToolbox { - z-index: 2147483647; - position: absolute; - right: 0; - padding: 1px 2px; -} - - -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/*************************************************************************************************/ -/* FROM ORIGINAL FIREBUG */ - - - - -/************************************************************************************************ - CSS Not organized -*************************************************************************************************/ -#fbConsole { - overflow-x: hidden !important; -} - -#fbCSS { - font: 1em Monaco, monospace; - padding: 0 7px; -} - -#fbstylesheetButtons select, #fbScriptButtons select { - font: 11px Lucida Grande, Tahoma, sans-serif; - margin-top: 1px; - padding-left: 3px; - background: #fafafa; - border: 1px inset #fff; - width: 220px; - outline: none; -} - -.Selector { margin-top:10px } -.CSSItem {margin-left: 4% } -.CSSText { padding-left:20px; } -.CSSProperty { color:#005500; } -.CSSValue { padding-left:5px; color:#000088; } - - -/************************************************************************************************ - Not organized -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbToolbarButtons { - display: none; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 4px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} - - - - - - - - - - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; -} - -#fbPanelBarBox { - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 48px; - padding: 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #ECE9D8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - display: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 10; - position: absolute; - height: 100%; - top: 27px; -} - -/************************************************************************************************/ -div.lineNo { - font: 1em Monaco, monospace; - position: absolute; - top: 0; - left: 0; - margin: 0; - padding: 0 5px 0 20px; - background: #eee; - color: #888; - border-right: 1px solid #ccc; - text-align: right; -} - -.sourceBox { - position: absolute; -} - -.sourceCode { - font: 1em Monaco, monospace; - overflow: hidden; - white-space: pre; - display: inline; -} - -/************************************************************************************************/ -.nodeControl { - margin-top: 3px; - margin-left: -14px; - float: left; - width: 9px; - height: 9px; - overflow: hidden; - cursor: default; - background: url(tree_open.gif); - _float: none; - _display: inline; - _position: absolute; -} - -div.nodeMaximized { - background: url(tree_close.gif); -} - -div.objectBox-element { - padding: 1px 3px; -} -.objectBox-selector{ - cursor: default; -} - -.selectedElement{ - background: highlight; - /* background: url(roundCorner.svg); Opera */ - color: #fff !important; -} -.selectedElement span{ - color: #fff !important; -} - -/* IE6 need this hack */ -* html .selectedElement { - position: relative; -} - -/* Webkit CSS Hack - bug in "highlight" named color */ -@media screen and (-webkit-min-device-pixel-ratio:0) { - .selectedElement{ - background: #316AC5; - color: #fff !important; - } -} - -/************************************************************************************************/ -/************************************************************************************************/ -.logRow * { - font-size: 1em; -} - -/* TODO: remove this? */ -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to -position. if so, override it at chrome.js initialization when creating the div */ -.logRow { - position: relative; - border-bottom: 1px solid #D7D7D7; - padding: 2px 4px 1px 6px; - zbackground-color: #FFFFFF; -} -/**/ - -.logRow-command { - font-family: Monaco, monospace; - color: blue; -} - -.objectBox-string, -.objectBox-text, -.objectBox-number, -.objectBox-function, -.objectLink-element, -.objectLink-textNode, -.objectLink-function, -.objectBox-stackTrace, -.objectLink-profile { - font-family: Monaco, monospace; -} - -.objectBox-null { - padding: 0 2px; - border: 1px solid #666666; - background-color: #888888; - color: #FFFFFF; -} - -.objectBox-string { - color: red; - - /* TODO: xxxpedro make long strings break line */ - /*white-space: pre; */ -} - -.objectBox-number { - color: #000088; -} - -.objectBox-function { - color: DarkGreen; -} - -.objectBox-object { - color: DarkGreen; - font-weight: bold; - font-family: Lucida Grande, sans-serif; -} - -.objectBox-array { - color: #000; -} - -/************************************************************************************************/ -.logRow-info,.logRow-error,.logRow-warning { - background: #fff no-repeat 2px 2px; - padding-left: 20px; - padding-bottom: 3px; -} - -.logRow-info { - background-image: url(infoIcon.png) !important; - background-image: url(infoIcon.gif); -} - -.logRow-warning { - background-color: cyan; - background-image: url(warningIcon.png) !important; - background-image: url(warningIcon.gif); -} - -.logRow-error { - background-color: LightYellow; - background-image: url(errorIcon.png) !important; - background-image: url(errorIcon.gif); - color: #f00; -} - -.errorMessage { - vertical-align: top; - color: #f00; -} - -.objectBox-sourceLink { - position: absolute; - right: 4px; - top: 2px; - padding-left: 8px; - font-family: Lucida Grande, sans-serif; - font-weight: bold; - color: #0000FF; -} - -/************************************************************************************************/ -/* -//TODO: remove this when console2 is finished -*/ -.logRow-group { - background: #EEEEEE; - border-bottom: none; -} - -.logGroup { - background: #EEEEEE; -} - -.logGroupBox { - margin-left: 24px; - border-top: 1px solid #D7D7D7; - border-left: 1px solid #D7D7D7; -}/**/ - -/************************************************************************************************/ -.selectorTag,.selectorId,.selectorClass { - font-family: Monaco, monospace; - font-weight: normal; -} - -.selectorTag { - color: #0000FF; -} - -.selectorId { - color: DarkBlue; -} - -.selectorClass { - color: red; -} - -/************************************************************************************************/ -.objectBox-element { - font-family: Monaco, monospace; - color: #000088; -} - -.nodeChildren { - padding-left: 26px; -} - -.nodeTag { - color: blue; - cursor: pointer; -} - -.nodeValue { - color: #FF0000; - font-weight: normal; -} - -.nodeText,.nodeComment { - margin: 0 2px; - vertical-align: top; -} - -.nodeText { - color: #333333; - font-family: Monaco, monospace; -} - -.nodeComment { - color: DarkGreen; -} - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -.nodeHidden, .nodeHidden * { - color: #888888; -} - -.nodeHidden .nodeTag { - color: #5F82D9; -} - -.nodeHidden .nodeValue { - color: #D86060; -} - -.selectedElement .nodeHidden, .selectedElement .nodeHidden * { - color: SkyBlue !important; -} - - -/************************************************************************************************/ -.log-object { - /* - _position: relative; - _height: 100%; - /**/ -} - -.property { - position: relative; - clear: both; - height: 15px; -} - -.propertyNameCell { - vertical-align: top; - float: left; - width: 28%; - position: absolute; - left: 0; - z-index: 0; -} - -.propertyValueCell { - float: right; - width: 68%; - background: #fff; - position: absolute; - padding-left: 5px; - display: table-cell; - right: 0; - z-index: 1; - /* - _position: relative; - /**/ -} - -.propertyName { - font-weight: bold; -} - -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.html deleted file mode 100644 index 4432a325..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebug.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                - - - - -
                                -   -   -   -
                                - - -
                                -
                                - - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
                                - -
                                - - - - - -
                                 
                                - -
                                -
                                -
                                -
                                -
                                -
                                - - -
                                 
                                - - -
                                - - -
                                -
                                -
                                - -
                                - - - - - -
                                - Run - Clear - - -
                                - -
                                -
                                -
                                >>>
                                - - -
                                -
                                - - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.css b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.css deleted file mode 100644 index 6c0ff19e..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.css +++ /dev/null @@ -1,897 +0,0 @@ -/* ************************************************************************************************* - Global styles -************************************************************************************************* */ - -body { - font-family: Lucida Grande,Tahoma,sans-serif; - font-size: 11px; - - height: 100%; - width: 100%; -} - -html, body { - margin: 0; - padding: 0; - overflow: hidden; -} - -table { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - border-collapse: collapse; - /*table-layout: fixed; /* IE SUCKS */ -} - - - - - - - - - - - - - - - - - - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - position: absolute; - _position: static; - top: 0; - left: 0; - height: 100%; - width: 100%; - border-collapse: collapse; - background: #fff; - overflow: hidden; -} - -#fbTop { - height: 49px; -} - -#fbToolbar { - background: url(sprite.png) #f1f2ee 0 0; - height: 27px; - font-size: 11px; -} - -#fbWindowButtons { - position: absolute; - white-space: nowrap; - right: 0; - top: 0; - height: 17px; - width: 48px; - padding: 5px; - z-index: 6; - background: url(sprite.png) #f1f2ee 0 0; -} - -#fbPanelBarBox { - background: url(sprite.png) #dbd9c9 0 -27px; - height: 22px; -} - -#fbContent { - height: 100%; - vertical-align: top; -} - -#fbBottom { - height: 18px; - background: #fff; -} - - -/************************************************************************************************ - Sub-Layout -*************************************************************************************************/ - -/* fbToolbar -*************************************************************************************************/ - -.fbToolbarButtons { - zdisplay: none; -} - - -#fbToolbarContent { - display: block; - position: absolute; - _position: absolute; - top: 0; - padding-top: 4px; - height: 23px; - clip: rect(0, 2048px, 27px, 0); -} - -#fbToolbarIcon { - float: left; - padding: 0 5px 0; -} - -#fbToolbarIcon a { - background: url(sprite.png) 0 -135px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - -#fbToolbarButtons { - padding: 0 2px 0 5px; -} - - - -/* fbPanelBarBox -*************************************************************************************************/ - -#fbPanelBar1 { - width: 1024px; /* fixed width to avoid tabs breaking line */ - z-index: 8; - left: 0; - white-space: nowrap; - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - left: 4px; -} - -#fbPanelBar2Box { - background: url(sprite.png) #dbd9c9 0 -27px; - position: absolute; - height: 22px; - width: 300px; /* fixed width to avoid tabs breaking line */ - z-index: 9; - right: 0; -} - -#fbPanelBar2 { - position: absolute; - width: 290px; /* fixed width to avoid tabs breaking line */ - height: 22px; - padding-left: 4px; -} - -/* body -*************************************************************************************************/ -.fbPanel { - display: none; -} - -#fbPanelBox1, #fbPanelBox2 { - max-height: inherit; - height: 100%; - font-size: 1em; -} - -#fbPanelBox2 { - background: #fff; -} - -#fbPanelBox2 { - width: 300px; - background: #fff; -} - -#fbPanel2 { - margin-left: 6px; - background: #fff; -} - -#fbLargeCommandLine { - display: none; - position: absolute; - z-index: 9; - top: 27px; - right: 0; - width: 294px; - height: 201px; - border-width: 0; - margin: 0; - padding: 2px 0 0 2px; - resize: none; - outline: none; - font-size: 11px; - overflow: auto; - border-top: 1px solid #B9B7AF; - _right: -1px; - _border-left: 1px solid #fff; -} - -#fbLargeCommandButtons { - display: none; - background: #ECE9D8; - bottom: 0; - right: 0; - width: 294px; - height: 21px; - padding-top: 1px; - position: fixed; - border-top: 1px solid #ACA899; - z-index: 9; -} - -#fbSmallCommandLineIcon { - background: url(down.png) no-repeat; - position: absolute; - right: 2px; - bottom: 3px; - - z-index: 99; -} - -#fbSmallCommandLineIcon:hover { - background: url(downHover.png) no-repeat; -} - -.hide { - overflow: hidden !important; - position: fixed !important; - display: none !important; - visibility: hidden !important; -} - -/* fbBottom -*************************************************************************************************/ - -#fbCommand { - height: 18px; -} - -#fbCommandBox { - position: fixed; - _position: absolute; - width: 100%; - height: 18px; - bottom: 0; - overflow: hidden; - z-index: 9; - background: #fff; - border: 0; - border-top: 1px solid #ccc; -} - -#fbCommandIcon { - position: absolute; - color: #00f; - top: 2px; - left: 6px; - display: inline; - font: 11px Monaco, monospace; - z-index: 10; -} - -#fbCommandLine { - position: absolute; - width: 100%; - top: 0; - left: 0; - border: 0; - margin: 0; - padding: 2px 0 2px 32px; - font: 11px Monaco, monospace; - z-index: 9; - outline: none; -} - -#fbLargeCommandLineIcon { - background: url(up.png) no-repeat; - position: absolute; - right: 1px; - bottom: 1px; - z-index: 10; -} - -#fbLargeCommandLineIcon:hover { - background: url(upHover.png) no-repeat; -} - -div.fbFitHeight { - overflow: auto; - position: relative; -} - - -/************************************************************************************************ - Layout Controls -*************************************************************************************************/ - -/* fbToolbar buttons -*************************************************************************************************/ -.fbSmallButton { - overflow: hidden; - width: 16px; - height: 16px; - display: block; - text-decoration: none; - cursor: default; -} - -#fbWindowButtons .fbSmallButton { - float: right; -} - -#fbWindow_btClose { - background: url(min.png); -} - -#fbWindow_btClose:hover { - background: url(minHover.png); -} - -#fbWindow_btDetach { - background: url(detach.png); -} - -#fbWindow_btDetach:hover { - background: url(detachHover.png); -} - -#fbWindow_btDeactivate { - background: url(off.png); -} - -#fbWindow_btDeactivate:hover { - background: url(offHover.png); -} - - -/* fbPanelBarBox tabs -*************************************************************************************************/ -.fbTab { - text-decoration: none; - zdisplay: none; - float: left; - width: auto; - float: left; - cursor: default; - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - font-weight: bold; - height: 22px; - color: #565656; -} - -.fbPanelBar span { - /*display: block; TODO: safe to remove this? */ - float: left; -} - -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR { - height: 22px; - width: 8px; -} - -.fbPanelBar .fbTabText { - padding: 4px 1px 0; -} - -a.fbTab:hover { - background: url(sprite.png) 0 -73px; -} - -a.fbTab:hover .fbTabL { - background: url(sprite.png) -16px -96px; -} - -a.fbTab:hover .fbTabR { - background: url(sprite.png) -24px -96px; -} - -.fbSelectedTab { - background: url(sprite.png) #f1f2ee 0 -50px !important; - color: #000; -} - -.fbSelectedTab .fbTabL { - background: url(sprite.png) 0 -96px !important; -} - -.fbSelectedTab .fbTabR { - background: url(sprite.png) -8px -96px !important; -} - -/* splitters -*************************************************************************************************/ -#fbHSplitter { - position: fixed; - _position: absolute; - left: 0; - top: 0; - width: 100%; - height: 5px; - overflow: hidden; - cursor: n-resize !important; - background: url(pixel_transparent.gif); - z-index: 9; -} - -#fbHSplitter.fbOnMovingHSplitter { - height: 100%; - z-index: 100; -} - -.fbVSplitter { - background: #ece9d8; - color: #000; - border: 1px solid #716f64; - border-width: 0 1px; - border-left-color: #aca899; - width: 4px; - cursor: e-resize; - overflow: hidden; - right: 294px; - text-decoration: none; - z-index: 10; - position: absolute; - height: 100%; - top: 27px; -} - - -/************************************************************************************************ - Mini Chrome -*************************************************************************************************/ - -#fbMiniChrome { - display: none; - right: 0; - height: 27px; - background: url(sprite.png) #f1f2ee 0 0; - margin-left: 1px; -} - -#fbMiniContent { - display: block; - position: relative; - left: -1px; - right: 0; - top: 1px; - height: 25px; - border-left: 1px solid #aca899; -} - -#fbToolbarSearch { - float: right; - border: 1px solid #ccc; - margin: 0 5px 0 0; - background: #fff url(search.png) no-repeat 4px 2px !important; - background: #fff url(search.gif) no-repeat 4px 2px; - padding-left: 20px; - font-size: 11px; -} - -#fbToolbarErrors { - float: right; - margin: 1px 4px 0 0; - font-size: 11px; -} - -#fbLeftToolbarErrors { - float: left; - margin: 7px 0px 0 5px; - font-size: 11px; -} - -.fbErrors { - padding-left: 20px; - height: 14px; - background: url(errorIcon.png) no-repeat !important; - background: url(errorIcon.gif) no-repeat; - color: #f00; - font-weight: bold; -} - -#fbMiniErrors { - display: inline; - display: none; - float: right; - margin: 5px 2px 0 5px; -} - -#fbMiniIcon { - float: right; - margin: 3px 4px 0; - height: 20px; - width: 20px; - float: right; - background: url(sprite.png) 0 -135px; - cursor: pointer; -} - - -/************************************************************************************************ - External Window -*************************************************************************************************/ - -/* -.FirebugPopup { - height: 100% !important; -} - -.FirebugPopup #fbWindowButtons { - display: none !important; -} - -.FirebugPopup #fbHSplitter { - display: none !important; -} - -/**/ - - - - -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ - -/* Components */ - -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ -/***********************************************************************************************/ - - -/************************************************************************************************ - Button -*************************************************************************************************/ - -.fbButton { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 6px 4px 7px; - cursor: default; -} - -.fbButton:hover { - color: #333; - background: #f5f5ef url(buttonBg.png); - padding: 3px 5px 3px 6px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbBtnPressed { - background: #e3e3db url(buttonBgHover.png) !important; - padding: 3px 4px 2px 6px !important; - margin: 1px 0 0 1px !important; - border: 1px solid #ACA899 !important; - border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important; -} - -#fbStatusBarBox { - top: 4px; - cursor: default; -} - -.fbToolbarSeparator { - overflow: hidden; - border: 1px solid; - border-color: transparent #fff transparent #777; - _border-color: #eee #fff #eee #777; - height: 7px; - margin: 6px 3px; - float: left; -} - -.fbBtnSelected { - font-weight: bold; -} - - - -/************************************************************************************************ - Icon Button -*************************************************************************************************/ - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; -} - -.fbIconButton { - display: block; - float: left; - height: 20px; - width: 20px; - color: #000; - margin-right: 2px; - text-decoration: none; - cursor: default; -} - -.fbIconButton:hover { - position: relative; - top: -1px; - left: -1px; - margin-right: 0; - _margin-right: 1px; - color: #333; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} - -.fbIconPressed { - position: relative; - margin-right: 0; - _margin-right: 1px; - top: 0 !important; - left: 0 !important; - height: 19px; - color: #333 !important; - border: 1px solid #bbb !important; - border-bottom: 1px solid #cfcfcf !important; - border-right: 1px solid #ddd !important; -} - -.fbBtnInspectActive { - background: #aaa; - color: #fff !important; -} - - -/************************************************************************************************ - Menu -*************************************************************************************************/ - -.fbTabMenuTarget { - display: none !important; - float: left; - width: 10px; - height: 10px; - margin-top: 6px; - background: url(tabMenuTarget.png); -} - -.fbTabMenuTarget:hover { - background: url(tabMenuTargetHover.png); -} - -.fbShadow { - float: left; - background: url(shadowAlpha.png) no-repeat bottom right !important; - background: url(shadow2.gif) no-repeat bottom right; - margin: 10px 0 0 10px !important; - margin: 10px 0 0 5px; -} - -.fbShadowContent { - display: block; - position: relative; - background-color: #fff; - border: 1px solid #a9a9a9; - top: -6px; - left: -6px; -} - -.fbMenu { - display: none; - position: absolute; - font-size: 11px; - z-index: 2147483647; -} - -.fbMenuContent { - padding: 2px; -} - -.fbMenuSeparator { - display: block; - position: relative; - padding: 1px 18px 0; - text-decoration: none; - color: #000; - cursor: default; - background: #ACA899; - margin: 4px 0; -} - -.fbMenuOption -{ - display: block; - position: relative; - padding: 2px 18px; - text-decoration: none; - color: #000; - cursor: default; -} - -.fbMenuOption:hover -{ - color: #fff; - background: #316AC5; -} - -.fbMenuGroup { - background: transparent url(tabMenuPin.png) no-repeat right 0; -} - -.fbMenuGroup:hover { - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuGroupSelected { - color: #fff; - background: #316AC5 url(tabMenuPin.png) no-repeat right -17px; -} - -.fbMenuChecked { - background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0; -} - -.fbMenuChecked:hover { - background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px; -} - -.fbMenuRadioSelected { - background: transparent url(tabMenuRadio.png) no-repeat 4px 0; -} - -.fbMenuRadioSelected:hover { - background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px; -} - -.fbMenuShortcut { - padding-right: 85px; -} - -.fbMenuShortcutKey { - position: absolute; - right: 0; - top: 2px; - width: 77px; -} - -#fbFirebugMenu { - top: 22px; - left: 0; -} - -.fbMenuDisabled { - color: #ACA899 !important; -} - -#fbFirebugSettingsMenu { - left: 245px; - top: 99px; -} - -#fbConsoleMenu { - top: 42px; - left: 48px; -} - - -/************************************************************************************************ - Status Bar -*************************************************************************************************/ - -#fbHTMLStatusBar { - display: inline; -} - -.fbStatusSeparator{ - display: block; - float: left; - padding-top: 4px; -} - -#fbStatusBarBox { - display: none; -} - -.fbStatusBar { - color: #aca899; -} - -.fbStatusBar a { - text-decoration: none; - color: black; -} - -.fbStatusBar a:hover { - color: blue; - cursor: pointer; -} - - -/************************************************************************************************ - Status Bar (previously commented) -*************************************************************************************************/ - -/* -#fbStatusBarBox a { - text-decoration: none; - display: block; - float: left; - color: #000; - padding: 4px 5px; - margin: 0 0 0 1px; - cursor: default; -} - -#fbStatusBarBox a:hover { - color: #333; - padding: 3px 4px; - border: 1px solid #fff; - border-bottom: 1px solid #bbb; - border-right: 1px solid #bbb; -} -/**/ - - -/************************************************************************************************ - Error Popup -*************************************************************************************************/ -#fbErrorPopup { - position: absolute; - right: 0; - bottom: 0; - height: 19px; - width: 75px; - background: url(sprite.png) #f1f2ee 0 0; - z-index: 999; -} - -#fbErrorPopupContent { - position: absolute; - right: 0; - top: 1px; - height: 18px; - width: 75px; - _width: 74px; - border-left: 1px solid #aca899; -} - -#fbErrorIndicator { - position: absolute; - top: 2px; - right: 5px; -} \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.html deleted file mode 100644 index 02429824..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                - - - - -
                                -   -   -   -
                                - - -
                                -
                                - - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
                                - -
                                - - - - - -
                                 
                                - -
                                -
                                -
                                - -

                                Lorem ipsum dolor sit amet consectetuer adipiscing sagittis Vestibulum Maecenas lobortis. Leo at nulla mauris nonummy quis justo Curabitur Duis Nunc Nam. Eget non amet laoreet amet congue convallis Aliquam ac et commodo. Dictumst quam Aenean in adipiscing Sed Aenean id congue odio sed. Fermentum iaculis Nam habitasse Sed turpis tellus Nunc Quisque interdum sed. Vestibulum.

                                -

                                Est rutrum lacinia ut urna Nulla tincidunt Pellentesque semper elit lacus. Tristique Curabitur convallis urna montes elit nec Duis Nulla a id. Quisque vestibulum consequat mauris pede Aliquam non congue dictum tellus amet. Nibh pulvinar Quisque et ipsum mauris Vestibulum nec sem neque nulla. Lorem elit pretium auctor tellus ac semper sit justo et nec. Orci feugiat enim augue Cras ultrices Phasellus risus Curabitur amet Sed. Malesuada sem.

                                -

                                Hac sapien hendrerit amet Nullam tempor elit aliquam consectetuer et eget. Tincidunt nec non Lorem consectetuer Sed Maecenas venenatis Vestibulum pretium feugiat. Tortor ut adipiscing ut justo et ipsum justo nec fringilla velit. Enim ligula risus auctor ut quam porttitor adipiscing netus vel semper. Vestibulum vel facilisis mauris eget sapien at pulvinar pede dolor urna. Commodo Mauris pretium Fusce Curabitur sed augue laoreet tincidunt augue sodales. Adipiscing rutrum Morbi.

                                -

                                Cum est dictumst Pellentesque lacinia pretium turpis a nulla et justo. Tincidunt tellus augue est libero nunc ut In dui ante Nulla. Porttitor tincidunt Curabitur id risus et leo Aenean Lorem nec et. Magna consectetuer sagittis eget vel Vestibulum tortor diam Vestibulum elit amet. Et cursus Maecenas tincidunt id pulvinar quam at sem Curabitur semper. Urna tincidunt Lorem ligula feugiat sollicitudin morbi.

                                -

                                Donec Aliquam ipsum ornare Nullam lobortis sed nibh dignissim Vestibulum consequat. Sociis Vestibulum tortor mauris morbi Pellentesque adipiscing convallis tincidunt id mollis. Vestibulum Curabitur justo et pellentesque id dui justo id est sed. Nibh vitae platea consectetuer Phasellus nibh sit Quisque sed interdum congue. Turpis cursus Vestibulum urna tellus est congue lacinia ut condimentum Mauris. Curabitur nunc velit sem et quis quis mauris enim et vel. Pellentesque pede urna.

                                -

                                Ornare lacinia condimentum ac pellentesque Curabitur amet risus non est amet. Neque et ac ullamcorper non semper quis porttitor wisi amet Ut. Et Vestibulum sociis quis laoreet ut non Duis tempus cursus est. Vitae et eget cursus Vivamus semper tellus a odio orci ipsum. Volutpat risus nunc Proin vitae consequat tincidunt habitasse Vestibulum Nunc lorem. Volutpat vel sapien enim est id volutpat massa tincidunt leo nonummy.

                                -

                                Leo sagittis tempus nibh gravida vel auctor vitae vitae Sed habitant. Pede aliquet et nascetur cursus dapibus congue vitae Ut magnis mollis. Aenean montes adipiscing ridiculus pellentesque sed Nulla velit augue eget urna. Tempor lorem nibh est justo nonummy Suspendisse quis urna ligula Curabitur. Amet et facilisi justo nunc habitant Nulla congue dapibus id ac. Sit pellentesque Aenean ac id sed ut sed Integer tincidunt sed. Vestibulum at.

                                -

                                Sed Vestibulum dignissim risus velit habitasse urna morbi Curabitur Sed pede. Mauris dapibus ipsum vitae ac faucibus facilisis eleifend eget Fusce euismod. Dui nibh Vestibulum tincidunt consequat tempor est facilisi laoreet et Nam. Vel volutpat dui id non rutrum leo ac a tincidunt Proin. Enim Vestibulum id rhoncus gravida id ut laoreet Curabitur risus suscipit. Dapibus dolor eget feugiat amet at lacus lacinia.

                                -

                                Malesuada tempus Curabitur mus et Vestibulum elit amet Sed cursus velit. In eros fames Vivamus lacinia augue Curabitur massa tincidunt pretium nisl. Elit sollicitudin eu id Cum quis condimentum et Aliquam Nulla id. Metus at vel est tellus urna ut ac vel morbi Nam. Nunc at leo ligula sem lorem orci ridiculus pellentesque congue sociis. Pellentesque in adipiscing lacus dui ut Vestibulum et pellentesque sociis lobortis.

                                -

                                A venenatis tincidunt sapien enim Aenean vel auctor urna dui Nam. Adipiscing Aliquam consectetuer dui dolor justo pede Sed nibh adipiscing turpis. Elit faucibus rutrum Vestibulum adipiscing volutpat vitae Vivamus Lorem sagittis diam. Nam Vestibulum urna pede felis Curabitur id ipsum vitae justo accumsan. Vestibulum Cras pretium lacus convallis interdum Cum nec justo Vestibulum venenatis. Cursus porttitor sodales tincidunt nunc pellentesque lacus vitae elit.

                                -

                                Augue feugiat Pellentesque pretium Phasellus et et ac eros ut enim. Morbi dui id urna elit ac turpis Sed malesuada venenatis dolor. Ac In Sed mauris tempus ut nibh amet felis id eu. Orci leo wisi feugiat Quisque accumsan tellus ipsum eget turpis habitasse. Nulla vitae Vivamus et orci eget cursus montes nec arcu ut. Lorem ante Nam urna wisi id justo tellus et est lobortis. Id laoreet Vestibulum.

                                -

                                At augue turpis vel ut tortor id nunc id mauris ac. Vitae vitae Lorem nibh sit sapien urna Vivamus nibh In justo. Suspendisse sagittis felis Nam eros Nam id id ac tellus lorem. Mauris tempor convallis pede malesuada id egestas tincidunt Vivamus euismod tellus. Pretium at Curabitur metus nibh sagittis nunc amet sed Donec ante. Tincidunt purus Lorem.

                                -

                                Ullamcorper scelerisque Mauris Aliquam risus rutrum nec rhoncus enim magna Vivamus. Pellentesque Curabitur nibh magna neque congue wisi wisi libero Vestibulum Ut. Massa Sed elit lobortis mauris adipiscing Proin malesuada elit lorem nunc. Ac ac ut faucibus nibh sed enim mauris condimentum feugiat auctor. Orci interdum nulla Donec nunc Cras lorem commodo Nullam ornare iaculis. Cum ridiculus condimentum dis ut Curabitur.

                                -

                                Quis nec faucibus odio id et libero ac et neque Quisque. Et malesuada at id auctor convallis odio pede fringilla Nunc mi. Suscipit justo habitant vitae mauris pharetra massa tempor tortor volutpat habitasse. Fermentum libero In urna convallis Phasellus Aenean ante enim vitae et. Lobortis id lobortis cursus suscipit Aliquam adipiscing facilisi tellus nec euismod. Mus laoreet orci ac pretium Phasellus nunc.

                                -

                                Felis augue Vestibulum sagittis Nam et auctor Vestibulum neque Curabitur facilisis. Massa convallis diam ut gravida lacus odio Curabitur Vestibulum sem Nam. Pellentesque Phasellus porttitor dui Suspendisse semper gravida nibh a elit Cum. Odio platea congue malesuada ultrices tincidunt commodo ante lobortis Vivamus laoreet. Ac ante urna sem augue urna lacinia Morbi pretium et Suspendisse. At nec sodales ipsum sem et dolor tincidunt congue massa.

                                -

                                Sed venenatis hendrerit quis feugiat nibh egestas laoreet accumsan Nullam iaculis. Est ante quis Integer vel massa condimentum interdum leo quis pulvinar. Nulla Praesent wisi congue tellus dolor accumsan Curabitur Curabitur nisl tempor. At orci Sed metus urna rhoncus tristique laoreet dapibus nulla ante. Consectetuer convallis laoreet Phasellus lacus tincidunt Curabitur In pellentesque Integer elit. Elit fringilla interdum odio quis nec adipiscing quis Aenean nunc vel.

                                -

                                Arcu ac ligula natoque orci semper et Nulla nec et Vestibulum. Eget pretium pellentesque ut leo leo id consequat quis Aenean elit. Urna consectetuer pellentesque tellus Aenean tristique eget Nulla lorem In leo. Ut sollicitudin adipiscing consectetuer pharetra pretium fames Quisque Suspendisse laoreet mi. Tristique pede Nam sed vitae turpis Nunc Vestibulum.

                                -

                                Est a ligula ac interdum lacus netus metus neque enim id. Eget risus tincidunt lacus dolor dui semper at id feugiat dui. Sed Cum wisi felis porta id amet nec nec nec congue. Iaculis cursus Curabitur porta nec ut et enim senectus convallis condimentum. Nibh nunc ipsum Phasellus mauris orci urna condimentum lacus consectetuer orci. Nibh Ut sem In metus ridiculus Duis id Aenean eu neque. Tempus vitae.

                                -

                                Aliquam laoreet magna id malesuada pede vitae Vestibulum suscipit vel In. Id semper et wisi Curabitur augue penatibus ligula mauris Donec egestas. Tellus id Mauris Sed tellus Vestibulum accumsan id justo quis dolor. Gravida montes sem eros pretium mauris nibh tempus Phasellus In convallis. Porttitor libero leo sit nunc ante vitae nisl nibh Praesent ante. Sed Mauris congue Suspendisse odio neque pellentesque Curabitur dui metus.

                                -

                                Lacus diam vitae velit et eu convallis et sagittis libero id. Tempor Donec tempus nibh sed pretium neque quam eget risus velit. Ante Quisque vitae Aenean Cum sapien laoreet nonummy congue ut auctor. Sed metus at vitae vitae adipiscing elit Duis et facilisis Cras. Condimentum ipsum congue accumsan Maecenas commodo dictum sagittis velit risus ipsum. Consequat ipsum enim malesuada Aliquam.

                                - - -
                                -
                                -
                                -
                                - - -
                                 
                                - - -
                                - - -
                                -
                                -
                                - -
                                - - - - - -
                                - Run - Clear - - -
                                - -
                                -
                                -
                                >>>
                                - - -
                                -
                                - - - - 2 errors - - - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.css b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.css deleted file mode 100644 index e2aba1f1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.css +++ /dev/null @@ -1,90 +0,0 @@ -/* ************************************************************************************************* - Global styles -************************************************************************************************* */ - -html, body { - font-family: Lucida Grande,Tahoma,sans-serif; - font-size: 11px; - - height: 100%; - width: 100%; - margin: 0; - padding: 0; - overflow: hidden; -} - -table { - height: 100%; - width: 100%; - margin: 0; - padding: 0; - border-collapse: collapse; - /*table-layout: fixed; /* IE SUCKS */ -} - - -#fbTopRow { - height: 28px; -} - -#fbTopRow div { - float: left; -} - - -#fbBottom { - height: 28px; -} - - -#fbContent, #fbPanelBox1, #fbPanelBox2, #fbPanel1, #fbPanel2 { - height: 100%; - width: 100%; -} - -#fbPanelBox1, #fbPanelBox2 { - vertical-align: top; -} - -#fbPanel1, #fbPanel2 { - height: 100%; - width: 100%; - zoverflow: auto; - position: relative; -} - -#fbConsole { - height: 100%; - width: 100%; - position: absolute; - overflow: auto; - top: 0; - left: 0; -} - -/************************************************************************************************ - General -*************************************************************************************************/ -.fbBody { - margin: 0; - padding: 0; - overflow: hidden; - - font-family: Lucida Grande, Tahoma, sans-serif; - font-size: 11px; - background: #fff; -} - -.clear { - clear: both; -} - - -/************************************************************************************************ - Master Layout -*************************************************************************************************/ -#fbChrome { - height: 100%; - width: 100%; - table-layout: fixed; -} \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.html deleted file mode 100644 index b3b804fa..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugX1.html +++ /dev/null @@ -1,237 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                                - - - - -
                                -   -   -   -
                                - - -
                                -
                                - - - -   - - - - - - - - - Inspect - - - - - Clear - - - - - - - - - - - - - -
                                - -
                                - - - - - -
                                 
                                - -
                                -
                                -
                                - -

                                Lorem ipsum dolor sit amet consectetuer adipiscing sagittis Vestibulum Maecenas lobortis. Leo at nulla mauris nonummy quis justo Curabitur Duis Nunc Nam. Eget non amet laoreet amet congue convallis Aliquam ac et commodo. Dictumst quam Aenean in adipiscing Sed Aenean id congue odio sed. Fermentum iaculis Nam habitasse Sed turpis tellus Nunc Quisque interdum sed. Vestibulum.

                                -

                                Est rutrum lacinia ut urna Nulla tincidunt Pellentesque semper elit lacus. Tristique Curabitur convallis urna montes elit nec Duis Nulla a id. Quisque vestibulum consequat mauris pede Aliquam non congue dictum tellus amet. Nibh pulvinar Quisque et ipsum mauris Vestibulum nec sem neque nulla. Lorem elit pretium auctor tellus ac semper sit justo et nec. Orci feugiat enim augue Cras ultrices Phasellus risus Curabitur amet Sed. Malesuada sem.

                                -

                                Hac sapien hendrerit amet Nullam tempor elit aliquam consectetuer et eget. Tincidunt nec non Lorem consectetuer Sed Maecenas venenatis Vestibulum pretium feugiat. Tortor ut adipiscing ut justo et ipsum justo nec fringilla velit. Enim ligula risus auctor ut quam porttitor adipiscing netus vel semper. Vestibulum vel facilisis mauris eget sapien at pulvinar pede dolor urna. Commodo Mauris pretium Fusce Curabitur sed augue laoreet tincidunt augue sodales. Adipiscing rutrum Morbi.

                                -

                                Cum est dictumst Pellentesque lacinia pretium turpis a nulla et justo. Tincidunt tellus augue est libero nunc ut In dui ante Nulla. Porttitor tincidunt Curabitur id risus et leo Aenean Lorem nec et. Magna consectetuer sagittis eget vel Vestibulum tortor diam Vestibulum elit amet. Et cursus Maecenas tincidunt id pulvinar quam at sem Curabitur semper. Urna tincidunt Lorem ligula feugiat sollicitudin morbi.

                                -

                                Donec Aliquam ipsum ornare Nullam lobortis sed nibh dignissim Vestibulum consequat. Sociis Vestibulum tortor mauris morbi Pellentesque adipiscing convallis tincidunt id mollis. Vestibulum Curabitur justo et pellentesque id dui justo id est sed. Nibh vitae platea consectetuer Phasellus nibh sit Quisque sed interdum congue. Turpis cursus Vestibulum urna tellus est congue lacinia ut condimentum Mauris. Curabitur nunc velit sem et quis quis mauris enim et vel. Pellentesque pede urna.

                                -

                                Ornare lacinia condimentum ac pellentesque Curabitur amet risus non est amet. Neque et ac ullamcorper non semper quis porttitor wisi amet Ut. Et Vestibulum sociis quis laoreet ut non Duis tempus cursus est. Vitae et eget cursus Vivamus semper tellus a odio orci ipsum. Volutpat risus nunc Proin vitae consequat tincidunt habitasse Vestibulum Nunc lorem. Volutpat vel sapien enim est id volutpat massa tincidunt leo nonummy.

                                -

                                Leo sagittis tempus nibh gravida vel auctor vitae vitae Sed habitant. Pede aliquet et nascetur cursus dapibus congue vitae Ut magnis mollis. Aenean montes adipiscing ridiculus pellentesque sed Nulla velit augue eget urna. Tempor lorem nibh est justo nonummy Suspendisse quis urna ligula Curabitur. Amet et facilisi justo nunc habitant Nulla congue dapibus id ac. Sit pellentesque Aenean ac id sed ut sed Integer tincidunt sed. Vestibulum at.

                                -

                                Sed Vestibulum dignissim risus velit habitasse urna morbi Curabitur Sed pede. Mauris dapibus ipsum vitae ac faucibus facilisis eleifend eget Fusce euismod. Dui nibh Vestibulum tincidunt consequat tempor est facilisi laoreet et Nam. Vel volutpat dui id non rutrum leo ac a tincidunt Proin. Enim Vestibulum id rhoncus gravida id ut laoreet Curabitur risus suscipit. Dapibus dolor eget feugiat amet at lacus lacinia.

                                -

                                Malesuada tempus Curabitur mus et Vestibulum elit amet Sed cursus velit. In eros fames Vivamus lacinia augue Curabitur massa tincidunt pretium nisl. Elit sollicitudin eu id Cum quis condimentum et Aliquam Nulla id. Metus at vel est tellus urna ut ac vel morbi Nam. Nunc at leo ligula sem lorem orci ridiculus pellentesque congue sociis. Pellentesque in adipiscing lacus dui ut Vestibulum et pellentesque sociis lobortis.

                                -

                                A venenatis tincidunt sapien enim Aenean vel auctor urna dui Nam. Adipiscing Aliquam consectetuer dui dolor justo pede Sed nibh adipiscing turpis. Elit faucibus rutrum Vestibulum adipiscing volutpat vitae Vivamus Lorem sagittis diam. Nam Vestibulum urna pede felis Curabitur id ipsum vitae justo accumsan. Vestibulum Cras pretium lacus convallis interdum Cum nec justo Vestibulum venenatis. Cursus porttitor sodales tincidunt nunc pellentesque lacus vitae elit.

                                -

                                Augue feugiat Pellentesque pretium Phasellus et et ac eros ut enim. Morbi dui id urna elit ac turpis Sed malesuada venenatis dolor. Ac In Sed mauris tempus ut nibh amet felis id eu. Orci leo wisi feugiat Quisque accumsan tellus ipsum eget turpis habitasse. Nulla vitae Vivamus et orci eget cursus montes nec arcu ut. Lorem ante Nam urna wisi id justo tellus et est lobortis. Id laoreet Vestibulum.

                                -

                                At augue turpis vel ut tortor id nunc id mauris ac. Vitae vitae Lorem nibh sit sapien urna Vivamus nibh In justo. Suspendisse sagittis felis Nam eros Nam id id ac tellus lorem. Mauris tempor convallis pede malesuada id egestas tincidunt Vivamus euismod tellus. Pretium at Curabitur metus nibh sagittis nunc amet sed Donec ante. Tincidunt purus Lorem.

                                -

                                Ullamcorper scelerisque Mauris Aliquam risus rutrum nec rhoncus enim magna Vivamus. Pellentesque Curabitur nibh magna neque congue wisi wisi libero Vestibulum Ut. Massa Sed elit lobortis mauris adipiscing Proin malesuada elit lorem nunc. Ac ac ut faucibus nibh sed enim mauris condimentum feugiat auctor. Orci interdum nulla Donec nunc Cras lorem commodo Nullam ornare iaculis. Cum ridiculus condimentum dis ut Curabitur.

                                -

                                Quis nec faucibus odio id et libero ac et neque Quisque. Et malesuada at id auctor convallis odio pede fringilla Nunc mi. Suscipit justo habitant vitae mauris pharetra massa tempor tortor volutpat habitasse. Fermentum libero In urna convallis Phasellus Aenean ante enim vitae et. Lobortis id lobortis cursus suscipit Aliquam adipiscing facilisi tellus nec euismod. Mus laoreet orci ac pretium Phasellus nunc.

                                -

                                Felis augue Vestibulum sagittis Nam et auctor Vestibulum neque Curabitur facilisis. Massa convallis diam ut gravida lacus odio Curabitur Vestibulum sem Nam. Pellentesque Phasellus porttitor dui Suspendisse semper gravida nibh a elit Cum. Odio platea congue malesuada ultrices tincidunt commodo ante lobortis Vivamus laoreet. Ac ante urna sem augue urna lacinia Morbi pretium et Suspendisse. At nec sodales ipsum sem et dolor tincidunt congue massa.

                                -

                                Sed venenatis hendrerit quis feugiat nibh egestas laoreet accumsan Nullam iaculis. Est ante quis Integer vel massa condimentum interdum leo quis pulvinar. Nulla Praesent wisi congue tellus dolor accumsan Curabitur Curabitur nisl tempor. At orci Sed metus urna rhoncus tristique laoreet dapibus nulla ante. Consectetuer convallis laoreet Phasellus lacus tincidunt Curabitur In pellentesque Integer elit. Elit fringilla interdum odio quis nec adipiscing quis Aenean nunc vel.

                                -

                                Arcu ac ligula natoque orci semper et Nulla nec et Vestibulum. Eget pretium pellentesque ut leo leo id consequat quis Aenean elit. Urna consectetuer pellentesque tellus Aenean tristique eget Nulla lorem In leo. Ut sollicitudin adipiscing consectetuer pharetra pretium fames Quisque Suspendisse laoreet mi. Tristique pede Nam sed vitae turpis Nunc Vestibulum.

                                -

                                Est a ligula ac interdum lacus netus metus neque enim id. Eget risus tincidunt lacus dolor dui semper at id feugiat dui. Sed Cum wisi felis porta id amet nec nec nec congue. Iaculis cursus Curabitur porta nec ut et enim senectus convallis condimentum. Nibh nunc ipsum Phasellus mauris orci urna condimentum lacus consectetuer orci. Nibh Ut sem In metus ridiculus Duis id Aenean eu neque. Tempus vitae.

                                -

                                Aliquam laoreet magna id malesuada pede vitae Vestibulum suscipit vel In. Id semper et wisi Curabitur augue penatibus ligula mauris Donec egestas. Tellus id Mauris Sed tellus Vestibulum accumsan id justo quis dolor. Gravida montes sem eros pretium mauris nibh tempus Phasellus In convallis. Porttitor libero leo sit nunc ante vitae nisl nibh Praesent ante. Sed Mauris congue Suspendisse odio neque pellentesque Curabitur dui metus.

                                -

                                Lacus diam vitae velit et eu convallis et sagittis libero id. Tempor Donec tempus nibh sed pretium neque quam eget risus velit. Ante Quisque vitae Aenean Cum sapien laoreet nonummy congue ut auctor. Sed metus at vitae vitae adipiscing elit Duis et facilisis Cras. Condimentum ipsum congue accumsan Maecenas commodo dictum sagittis velit risus ipsum. Consequat ipsum enim malesuada Aliquam.

                                - - -
                                - -
                                -
                                - - -
                                 
                                - - -
                                - - -
                                -
                                -
                                - -
                                - - - - - -
                                - Run - Clear - - -
                                - -
                                -
                                -
                                >>>
                                - - -
                                -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugtest.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugtest.html deleted file mode 100644 index 6dcfe161..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/firebugtest.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - -Firebug Lite - - - - - - - - - - - - - -
                                -
                                Top
                                -
                                -
                                - - - - - - - - -
                                - -
                                - - - - - - - - -
                                - left tools -
                                - left -
                                - -
                                - -
                                -
                                 
                                -
                                - - - -
                                - - -
                                -
                                - Command -
                                - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/ieHeight.html b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/ieHeight.html deleted file mode 100644 index df68932e..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/ieHeight.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - -Firebug Lite - - - - - -
                                - -

                                Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.

                                -

                                Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.

                                -

                                In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.

                                -

                                In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.

                                -

                                Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.

                                -

                                Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.

                                -

                                Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.

                                -

                                Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.

                                -

                                Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.

                                -

                                Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.

                                -

                                Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu.

                                -

                                Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.

                                -

                                Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.

                                -

                                Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.

                                -

                                Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.

                                -

                                Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.

                                -

                                Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.

                                -

                                At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.

                                -

                                Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.

                                -

                                Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.

                                - -
                                - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/blank.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/blank.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/blank.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBg.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBg.png deleted file mode 100644 index f367b427..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBg.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png deleted file mode 100644 index cd37a0d5..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.gif deleted file mode 100644 index dd9eb0e3..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.png deleted file mode 100644 index c28bcdf2..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disable.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.gif deleted file mode 100644 index 70565a83..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.png deleted file mode 100644 index 26fe3754..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/disableHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/down.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/down.png deleted file mode 100644 index acbbd30c..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/down.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downActive.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downActive.png deleted file mode 100644 index f4312b2f..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downActive.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downHover.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downHover.png deleted file mode 100644 index 8144e637..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/downHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png deleted file mode 100644 index 0c377e30..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif deleted file mode 100644 index 8ee8116a..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.png deleted file mode 100644 index 2d75261b..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/errorIcon.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/firebug.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/firebug.png deleted file mode 100644 index e10affeb..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/firebug.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/group.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/group.gif deleted file mode 100644 index 8db97c21..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/group.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif deleted file mode 100644 index 0618e208..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.png deleted file mode 100644 index da1e5334..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/infoIcon.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/loading_16.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/loading_16.gif deleted file mode 100644 index 085ccaec..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/loading_16.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif deleted file mode 100644 index 6865c960..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg deleted file mode 100644 index be0291f1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.gif deleted file mode 100644 index 2a620987..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.png deleted file mode 100644 index fba33b8a..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/search.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow.gif deleted file mode 100644 index af7f537e..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow2.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow2.gif deleted file mode 100644 index 099cbf35..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadow2.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png deleted file mode 100644 index a2561df9..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/sprite.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/sprite.png deleted file mode 100644 index 33d2c4d4..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/sprite.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png deleted file mode 100644 index 0fb24d0c..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png deleted file mode 100644 index fbccab54..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png deleted file mode 100644 index 3db0f361..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabLeft.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabLeft.png deleted file mode 100644 index a6cc9e94..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabLeft.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png deleted file mode 100644 index 4726e622..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png deleted file mode 100644 index eb4b11ef..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png deleted file mode 100644 index 55b982d7..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png deleted file mode 100644 index 957bd9f2..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png deleted file mode 100644 index 200a3708..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMid.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMid.png deleted file mode 100644 index 68986c3b..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabMid.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabRight.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabRight.png deleted file mode 100644 index 50113079..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tabRight.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif deleted file mode 100644 index 0ee54978..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png deleted file mode 100644 index 21682c3d..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif deleted file mode 100644 index 04f84215..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png deleted file mode 100644 index a0f839dc..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png deleted file mode 100644 index 10998ae7..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png deleted file mode 100644 index aa21dee6..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_close.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_close.gif deleted file mode 100644 index e26728ab..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_close.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_open.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_open.gif deleted file mode 100644 index edf662f3..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/tree_open.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/up.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/up.png deleted file mode 100644 index 2174d03a..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/up.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upActive.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upActive.png deleted file mode 100644 index 236cf676..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upActive.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upHover.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upHover.png deleted file mode 100644 index cd813170..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/upHover.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif deleted file mode 100644 index 84972788..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.png b/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.png deleted file mode 100644 index de51084e..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/flexBoxStudies/img/warningIcon.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/editor.css b/branches/firebug1.5/sandbox/sandbox/orion/editor.css deleted file mode 100644 index 1a3a6f5a..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/editor.css +++ /dev/null @@ -1,93 +0,0 @@ -.editor { - background-color: white; -} - -.editorContainer { - font-family: monospace; - font-size: 10pt; -} - -.editorContent { -} - -.token_comment { - color: green; -} - -.token_javadoc { - color: #00008F; -} - -.token_string { - color: blue; -} - -.token_keyword { - color: darkred; - font-weight: bold; -} - -.token_bracket_outline { - outline: 1px solid red; -} - -.token_bracket { - color: white; - background-color: grey; -} - -.token_space { - background-image: url('/editor/samples/space.png'); - background-repeat: no-repeat; - background-position: center center; -} - -.token_tab { - background-image: url('/editor/samples/tab.png'); - background-repeat: no-repeat; - background-position: left center; -} - -.line_caret { - background-color: #EAF2FE; -} - -.ruler_annotation { - background-color: #e1ebfb; - width: 16px; -} - -.ruler_annotation_todo { -} - -.ruler_annotation_todo_overview { - background-color: lightgreen; - border: 1px solid green; -} - -.ruler_annotation_breakpoint { -} - -.ruler_annotation_breakpoint_overview { - background-color: lightblue; - border: 1px solid blue; -} - -.ruler_lines { - background-color: #e1ebfb; - border-right: 1px solid #b1badf; - text-align: right; -} - -.ruler_overview { - background-color: #e1ebfb; -} - -.ruler_lines_even { - background-color: #e1ebfb; -} - -.ruler_lines_odd { - background-color: white; -} - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-model.js b/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-model.js deleted file mode 100644 index 7eaf8be5..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-model.js +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global assertEquals eclipse */ - -TextModelTestCase = TestCase("TextModelTestCase"); - -TextModelTestCase.prototype = { - test_Empty: function () { - var content = new eclipse.TextModel(); - assertEquals(":1a:", content.getLineCount(), 1); - assertEquals(":1b:", content.getLine(0), ""); - - content.setText("test"); - content.setText("", 0, 4); - assertEquals(":2a:", content.getLineCount(), 1); - assertEquals(":2b:", content.getLine(0), ""); - }, - test_Insert: function () { - var content = new eclipse.TextModel(); - var newText; - - content.setText("This\nis a test\r"); - content.setText("test\n ", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":1a:", ("test\n This\nis a test\r"), newText); - assertEquals(":1b:", 4, content.getLineCount()); - assertEquals(":1c:", ("test"), content.getLine(0)); - assertEquals(":1d:", (" This"), content.getLine(1)); - assertEquals(":1e:", ("is a test"), content.getLine(2)); - assertEquals(":1f:", (""), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("*** ", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":2a:", ("This\n*** is a test\r"), newText); - assertEquals(":2b:", 3, content.getLineCount()); - assertEquals(":2c:", ("This"), content.getLine(0)); - assertEquals(":2d:", ("*** is a test"), content.getLine(1)); - assertEquals(":2e:", (""), content.getLine(2)); - - content.setText("Line 1\r\nLine 2"); - content.setText("\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":3a:", ("\rLine 1\r\nLine 2"), newText); - assertEquals(":3b:", 3, content.getLineCount()); - assertEquals(":3c:", (""), content.getLine(0)); - assertEquals(":3d:", ("Line 1"), content.getLine(1)); - assertEquals(":3e:", ("Line 2"), content.getLine(2)); - content.setText("\r", 9, 9); - newText = content.getText(0, content.getCharCount()); - assertEquals(":3f:", ("\rLine 1\r\n\rLine 2"), newText); - assertEquals(":3g:", 4, content.getLineCount()); - assertEquals(":3h:", (""), content.getLine(0)); - assertEquals(":3i:", ("Line 1"), content.getLine(1)); - assertEquals(":3j:", (""), content.getLine(2)); - assertEquals(":3k:", ("Line 2"), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":4a:", ("\nThis\nis a test\r"), newText); - assertEquals(":4b:", 4, content.getLineCount()); - assertEquals(":4c:", (""), content.getLine(0)); - assertEquals(":4d:", ("This"), content.getLine(1)); - assertEquals(":4e:", ("is a test"), content.getLine(2)); - assertEquals(":4f:", (""), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("\r\nnewLine", 7, 7); - newText = content.getText(0, content.getCharCount()); - assertEquals(":5a:", ("This\nis\r\nnewLine a test\r"), newText); - assertEquals(":5b:", 4, content.getLineCount()); - assertEquals(":5c:", ("This"), content.getLine(0)); - assertEquals(":5d:", ("is"), content.getLine(1)); - assertEquals(":5e:", ("newLine a test"), content.getLine(2)); - assertEquals(":5f:", (""), content.getLine(3)); - - content.setText(""); - content.setText("This\nis\r\nnewLine a test\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":6a:", ("This\nis\r\nnewLine a test\r"), newText); - assertEquals(":6b:", 4, content.getLineCount()); - assertEquals(":6c:", ("This"), content.getLine(0)); - assertEquals(":6d:", ("is"), content.getLine(1)); - assertEquals(":6e:", ("newLine a test"), content.getLine(2)); - assertEquals(":6f:", (""), content.getLine(3)); - - // insert at end - content.setText("This"); - content.setText("\n ", 4, 4); - newText = content.getText(0, content.getCharCount()); - assertEquals(":7a:", ("This\n "), newText); - assertEquals(":7b:", 2, content.getLineCount()); - assertEquals(":7c:", ("This"), content.getLine(0)); - assertEquals(":7d:", (" "), content.getLine(1)); - content.setText("This\n"); - content.setText("\n", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":7e:", ("This\n\n"), newText); - assertEquals(":7f:", 3, content.getLineCount()); - assertEquals(":7g:", ("This"), content.getLine(0)); - assertEquals(":7h:", (""), content.getLine(1)); - assertEquals(":7i:", (""), content.getLine(2)); - - // insert at beginning - content.setText("This"); - content.setText("\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":8a:", ("\nThis"), newText); - assertEquals(":8b:", 2, content.getLineCount()); - assertEquals(":8c:", (""), content.getLine(0)); - assertEquals(":8d:", ("This"), content.getLine(1)); - - //insert at end - content.setText("This"); - content.setText("\n", 4, 4);//passing 5, 5 runs into problem (text model doesn't not check range and fails) - newText = content.getText(0, content.getCharCount()); - assertEquals(":8e:", "This\n", newText); - //Note: This is different than StyledText, web editor always break line on \r \n \r\n, it uses lineDelimiter for enter key - assertEquals(":8f:", 2, content.getLineCount()); - - // insert text - content.setText("This\nis a test\r"); - content.setText("*** ", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":9a:", newText, ("This\n*** is a test\r")); - assertEquals(":9b:", 3, content.getLineCount()); - assertEquals(":9c:", ("This"), content.getLine(0)); - assertEquals(":9d:", ("*** is a test"), content.getLine(1)); - assertEquals(":9e:", (""), content.getLine(2)); - - content.setText("This\n"); - content.setText("line", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":10a:", "This\nline", newText); - assertEquals(":10b:", 2, content.getLineCount()); - assertEquals(":10c:", "This", content.getLine(0)); - assertEquals(":10d:", "line", content.getLine(1)); - assertEquals(":10e:", 1, content.getLineAtOffset(8)); - assertEquals(":10f:", 1, content.getLineAtOffset(9)); - - // insert at beginning - content.setText("This\n"); - content.setText("line\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":11a:", ("line\nThis\n"), newText); - assertEquals(":11b:", 3, content.getLineCount()); - assertEquals(":11c:", ("line"), content.getLine(0)); - assertEquals(":11d:", ("This"), content.getLine(1)); - assertEquals(":11e:", 1, content.getLineAtOffset(5)); - - content.setText("Line 1\r\nLine 2\r\nLine 3"); - content.setText("\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":12a:", ("\rLine 1\r\nLine 2\r\nLine 3"), newText); - assertEquals(":12b:", 4, content.getLineCount()); - assertEquals(":12c:", (""), content.getLine(0)); - assertEquals(":12d:", ("Line 1"), content.getLine(1)); - assertEquals(":12e:", ("Line 2"), content.getLine(2)); - assertEquals(":12f:", ("Line 3"), content.getLine(3)); - - content.setText("Line 1\nLine 2\nLine 3"); - content.setText("Line1a\nLine1b\n", 7, 7); - newText = content.getText(0, content.getCharCount()); - assertEquals(":13a:", ("Line 1\nLine1a\nLine1b\nLine 2\nLine 3"), newText); - assertEquals(":13b:", 5, content.getLineCount()); - assertEquals(":13c:", ("Line 1"), content.getLine(0)); - assertEquals(":13d:", ("Line1a"), content.getLine(1)); - assertEquals(":13e:", ("Line1b"), content.getLine(2)); - assertEquals(":13f:", ("Line 2"), content.getLine(3)); - assertEquals(":13g:", ("Line 3"), content.getLine(4)); - - content.setText("Line 1\nLine 2\nLine 3"); - content.setText("l1a", 11, 11); - newText = content.getText(0, content.getCharCount()); - assertEquals(":14a:", ("Line 1\nLinel1a 2\nLine 3"), newText); - assertEquals(":14b:", 3, content.getLineCount()); - assertEquals(":14c:", ("Line 1"), content.getLine(0)); - assertEquals(":14d:", ("Linel1a 2"), content.getLine(1)); - assertEquals(":14e:", ("Line 3"), content.getLine(2)); - - content.setText("Line 1\nLine 2 is a very long line that spans many words\nLine 3"); - content.setText("very, very, ", 19, 19); - newText = content.getText(0, content.getCharCount()); - assertEquals(":15a:", ("Line 1\nLine 2 is a very, very, very long line that spans many words\nLine 3"), newText); - assertEquals(":15b:", 3, content.getLineCount()); - assertEquals(":15c:", ("Line 1"), content.getLine(0)); - assertEquals(":15d:", ("Line 2 is a very, very, very long line that spans many words"), content.getLine(1)); - assertEquals(":15e:", ("Line 3"), content.getLine(2)); - } - -}; - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-performance.js b/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-performance.js deleted file mode 100644 index 862f6327..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js-tests/test-performance.js +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global editor setTimeout log */ - -function PerformanceTestCase() { -} - -PerformanceTestCase.prototype = { - test_pageDownScrolling: function () { - var model = editor.getModel(); - editor.setSelection(0, 0); - var start = new Date().getTime(); - function t() { - var caretLine = model.getLineAtOffset(editor.getCaretOffset()); - editor.invokeAction("pageDown"); - if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine) { - setTimeout(t, 0); - } else { - log("time(page down)=" + (new Date().getTime() - start)); - } - } - editor.focus(); - t(); - }, - test_pageUpScrolling: function () { - var model = editor.getModel(); - var charCount = model.getCharCount(); - editor.setSelection(charCount, charCount); - var start = new Date().getTime(); - function t() { - var caretLine = model.getLineAtOffset(editor.getCaretOffset()); - editor.invokeAction("pageUp"); - if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine) { - setTimeout(t, 0); - } else { - log("time(page up)=" + (new Date().getTime() - start)); - } - } - editor.focus(); - t(); - }, - test_lineDownScrolling: function () { - var count = 300; - editor.setSelection(0, 0); - var model = editor.getModel(); - var caretLine = model.getLineAtOffset(editor.getCaretOffset()); - var start = new Date().getTime(); - function t() { - editor.invokeAction("lineDown"); - if ((model.getLineAtOffset(editor.getCaretOffset()) - caretLine) !== 300) { - setTimeout(t, 0); - } else { - log("time(line down)=" + (new Date().getTime() - start)); - } - } - editor.focus(); - t(); - }, - test_lineUpScrolling: function () { - var count = 300; - var model = editor.getModel(); - var charCount = model.getCharCount(); - editor.setSelection(charCount, charCount); - var caretLine = model.getLineAtOffset(editor.getCaretOffset()); - var start = new Date().getTime(); - function t() { - editor.invokeAction("lineUp"); - if ((caretLine - model.getLineAtOffset(editor.getCaretOffset())) !== count) { - setTimeout(t, 0); - } else { - log("time(line up)=" + (new Date().getTime() - start)); - } - } - editor.focus(); - t(); - } -}; \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor.js deleted file mode 100644 index f7c50b43..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor.js +++ /dev/null @@ -1,4265 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._textArea = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - if (isIE) { - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - // Feature in IE, IE does redraw the selection background right - // away after the selection changes because of mouse move events. - // The fix is to call getBoundingClientRect() on the - // body element to force the selection to be redraw. Some how - // calling this method forces a redraw. - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset); - }, - _getBoundsAtOffset_FF: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - if (isRangeRects) { - var range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBoundsAtOffset_IE: function (offset) { - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = {left: 0, right: 0}; - if (offset === model.getLineEnd(lineIndex)) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } else { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset + 1); - range.moveStart("character", offset - lineOffset); - result = range.getBoundingClientRect(); - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var textArea = this._textArea; - textArea.innerHTML = ""; - textArea.focus(); - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - var text; - if (textArea.firstChild) { - text = ""; - var child = textArea.firstChild; - while (child) { - if (child.nodeType === child.TEXT_NODE) { - text += child.data; - } else if (child.tagName === "BR") { - text += delimiter; - } - child = child.nextSibling; - } - } else { - text = textArea.value; - } - return text; - }; - - //Try execCommand first. Works on firefox with clipboard permission, - var result = false; - this._ignorePaste = true; - try { - var document = this._frameDocument; - result = document.execCommand("paste", false, null); - } catch (ex) { - } - this._ignorePaste = false; - - if (!result) { - //Try native paste in the text area, works for firefox (asynchronously) - //only works during the paste event - if (event) { - var self = this; - setTimeout(function() { - self.focus(); - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - //no event and no clipboard permission, paste can't be performed - //suggest allow clipboard helper to the user - this.focus(); - return ""; - } - } - this.focus(); - return _getText(); - } - //webkit - if (event && event.clipboardData) { - // Webkit (Chrome/Safari) allows getData during the paste event - // Note: setData is not allowed, not even during copy/cut event - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === 1) { - var textNode = lastChild.firstChild; - if (textNode.data === " ") { - lastChild = lastChild.previousSibling; - } - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction); - }, - _getOffset_FF: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x); - }, - _getXToOffset_FF: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - var offset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - done: - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - var rects = lineChild.getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= x && x < rect.right) { - if (isRangeRects) { - var range = document.createRange(); - var index = 0; - while (index < nodeLength) { - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - rect = range.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - index++; - } - break; - } - index++; - } - offset += index; - } else { - var newText = []; - for (var j = 0; j < nodeLength; j++) { - newText.push(""); - if (j === nodeLength - 1) { - newText.push(textNode.data.substring(j)); - } else { - newText.push(textNode.data.substring(j, j + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getXToOffset_IE: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window - * before using it. - */ - var rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - range.moveToElementText(lineChild); - range.move("character", low + 1); - range.moveEnd("character", mid - low); - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - if (lineChild.ignoreChars && high >= nodeLength) { - high = nodeLength - 1; - } - offset += high; - range.moveToElementText(lineChild); - range.move("character", high); - if (high === nodeLength - 1 && lineChild.ignoreChars) { - range.moveEnd("character", 1 + lineChild.ignoreChars); - } else { - range.moveEnd("character", 1); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) { - offset++; - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var topNode = this._overlayDiv || this._clientDiv; - var body = this._frameDocument.body; - var resizeNode = isIE ? this._frame : this._frameWindow; - var focusNode = isIE ? this._clientDiv: this._frameWindow; - this._handlers = [ - {target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}, - {target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}, - {target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}, - {target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}, - {target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}, - {target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}, - {target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}, - {target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}, - {target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}, - {target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}, - {target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}, - {target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}, - {target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}, - {target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}, - {target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}} - ]; - if (isIE) { - this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - for (var i=0; i"); - html.push(""); - html.push(""); - html.push(""); - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - var textArea = document.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.id = "textArea"; - textArea.tabIndex = -1; - textArea.style.position = "fixed"; - textArea.style.whiteSpace = "pre"; - textArea.style.top = "-1000px"; - textArea.style.width = "100px"; - textArea.style.height = "100px"; - body.appendChild(textArea); - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - clientDiv.contentEditable = "true"; - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// this._handleScroll(); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - if (isChrome || isFirefox || !event) { - /* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */ - var document = this._frameDocument; - var textArea = this._textArea; - textArea.value = text; - textArea.select(); - var result = false; - - //Try execCommand first, it works on firefox with clipboard permission, - // chrome 5, safari 4. - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - if (event.type === "copy" && this._isDOMSelectionComplete()) { - this.focus(); - return false; - } - var self = this; - setTimeout(function() { - self.focus(); - }, 0); - return false; - } else { - //no event and no permission, give up - this.focus(); - return true; - } - } - this.focus(); - return result; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, lineEnd; - lineEnd = this._model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineEnd = this._model.getLine(endNode.lineIndex).length; - lineChild = endNode.firstChild; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - if (window.getSelection) { - //FF - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } -//************************************************************************************************** - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - document.body.style.width = frameWidth + "px"; - document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; -//************************************************************************************************** - -var lineIndex, lineWidth, child, nextChild; -//************************************************************************************************** -(function _updatePage_removeLines(){ - lineIndex, lineWidth; - child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } -}).call(this); -//************************************************************************************************** - -var rect; -//************************************************************************************************** -(function _updatePage_createLines(){ - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - child = this._createLine(clientDiv, child, document, lineIndex, model); - rect = this._getLineBoundingClientRect(child); - lineWidth = rect.right - rect.left; - child.lineWidth = lineWidth; - // when the maxLineIndex is known measure only the lines that have changed - if (this._maxLineIndex !== -1) { - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = lineIndex; - } - } - } - if (lineIndex === topIndex) { this._topChild = child; } - if (lineIndex === bottomIndex) { this._bottomChild = child; } - if (child.lineIndex === lineIndex) { - child = this._getLineNext(child); - } - } -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateMaxLineWidth(){ - // when the maxLineIndex is not known all the visible lines need to be measured - if (this._maxLineIndex === -1) { - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - child = this._getLineNext(child); - } - } -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateRulers(){ - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); -}).call(this); -//************************************************************************************************** - -var leftWidth, rightWidth, scrollDiv, scrollHeight, clientWidth, width, scrollWidth; -//************************************************************************************************** -(function _updatePage_updateEditorDivStyle(){ - leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateScrollDivStyle(){ - scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - clientWidth = this._getClientWidth(); - width = Math.max(this._maxLineWidth, clientWidth); - /* Except by IE, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - scrollWidth = width; - if (!isIE) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateDOMSelection(){ - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - this._updateDOMSelection(); -}).call(this); -//************************************************************************************************** - if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - } - -var scroll, left, clipLeft, clipTop, clipRight, clipBottom, overlayDiv; -//************************************************************************************************** -(function _updatePage_updateViewport(){ - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - scroll = this._getScroll(); - left = scroll.x; - clipLeft = left; - clipTop = top; - clipRight = left + clientWidth; - clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } -}).call(this); -//************************************************************************************************** - - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - -//************************************************************************************************** -(function _updatePage_updateRulerSize(){ - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); -}).call(this); -//************************************************************************************************** - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - div.insertBefore(lineDiv, child); - } - if (child && child.lineIndex === lineIndex) { - child = child.nextSibling; - } - } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - div.appendChild(lineDiv); - } - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_improved.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor_improved.js deleted file mode 100644 index c314b27d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_improved.js +++ /dev/null @@ -1,4276 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; -window.editorDivStyleApplied = 0; -window.scrollDivStyleApplied = 0; -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._textArea = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - if (isIE) { - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - // Feature in IE, IE does redraw the selection background right - // away after the selection changes because of mouse move events. - // The fix is to call getBoundingClientRect() on the - // body element to force the selection to be redraw. Some how - // calling this method forces a redraw. - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset); - }, - _getBoundsAtOffset_FF: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - if (isRangeRects) { - var range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBoundsAtOffset_IE: function (offset) { - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = {left: 0, right: 0}; - if (offset === model.getLineEnd(lineIndex)) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } else { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset + 1); - range.moveStart("character", offset - lineOffset); - result = range.getBoundingClientRect(); - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var textArea = this._textArea; - textArea.innerHTML = ""; - textArea.focus(); - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - var text; - if (textArea.firstChild) { - text = ""; - var child = textArea.firstChild; - while (child) { - if (child.nodeType === child.TEXT_NODE) { - text += child.data; - } else if (child.tagName === "BR") { - text += delimiter; - } - child = child.nextSibling; - } - } else { - text = textArea.value; - } - return text; - }; - - //Try execCommand first. Works on firefox with clipboard permission, - var result = false; - this._ignorePaste = true; - try { - var document = this._frameDocument; - result = document.execCommand("paste", false, null); - } catch (ex) { - } - this._ignorePaste = false; - - if (!result) { - //Try native paste in the text area, works for firefox (asynchronously) - //only works during the paste event - if (event) { - var self = this; - setTimeout(function() { - self.focus(); - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - //no event and no clipboard permission, paste can't be performed - //suggest allow clipboard helper to the user - this.focus(); - return ""; - } - } - this.focus(); - return _getText(); - } - //webkit - if (event && event.clipboardData) { - // Webkit (Chrome/Safari) allows getData during the paste event - // Note: setData is not allowed, not even during copy/cut event - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === 1) { - var textNode = lastChild.firstChild; - if (textNode.data === " ") { - lastChild = lastChild.previousSibling; - } - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction); - }, - _getOffset_FF: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x); - }, - _getXToOffset_FF: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - var offset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - done: - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - var rects = lineChild.getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= x && x < rect.right) { - if (isRangeRects) { - var range = document.createRange(); - var index = 0; - while (index < nodeLength) { - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - rect = range.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - index++; - } - break; - } - index++; - } - offset += index; - } else { - var newText = []; - for (var j = 0; j < nodeLength; j++) { - newText.push(""); - if (j === nodeLength - 1) { - newText.push(textNode.data.substring(j)); - } else { - newText.push(textNode.data.substring(j, j + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getXToOffset_IE: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window - * before using it. - */ - var rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - range.moveToElementText(lineChild); - range.move("character", low + 1); - range.moveEnd("character", mid - low); - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - if (lineChild.ignoreChars && high >= nodeLength) { - high = nodeLength - 1; - } - offset += high; - range.moveToElementText(lineChild); - range.move("character", high); - if (high === nodeLength - 1 && lineChild.ignoreChars) { - range.moveEnd("character", 1 + lineChild.ignoreChars); - } else { - range.moveEnd("character", 1); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) { - offset++; - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var topNode = this._overlayDiv || this._clientDiv; - var body = this._frameDocument.body; - var resizeNode = isIE ? this._frame : this._frameWindow; - var focusNode = isIE ? this._clientDiv: this._frameWindow; - this._handlers = [ - {target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}, - {target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}, - {target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}, - {target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}, - {target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}, - {target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}, - {target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}, - {target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}, - {target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}, - {target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}, - {target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}, - {target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}, - {target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}, - {target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}, - {target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}} - ]; - if (isIE) { - this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - for (var i=0; i"); - html.push(""); - html.push(""); - html.push(""); - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - var textArea = document.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.id = "textArea"; - textArea.tabIndex = -1; - textArea.style.position = "fixed"; - textArea.style.whiteSpace = "pre"; - textArea.style.top = "-1000px"; - textArea.style.width = "100px"; - textArea.style.height = "100px"; - body.appendChild(textArea); - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - scrollDiv.appendChild(clientDiv); - - if (false && isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - clientDiv.contentEditable = "true"; - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// this._handleScroll(); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - if (isChrome || isFirefox || !event) { - /* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */ - var document = this._frameDocument; - var textArea = this._textArea; - textArea.value = text; - textArea.select(); - var result = false; - - //Try execCommand first, it works on firefox with clipboard permission, - // chrome 5, safari 4. - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - if (event.type === "copy" && this._isDOMSelectionComplete()) { - this.focus(); - return false; - } - var self = this; - setTimeout(function() { - self.focus(); - }, 0); - return false; - } else { - //no event and no permission, give up - this.focus(); - return true; - } - } - this.focus(); - return result; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, lineEnd; - lineEnd = this._model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineEnd = this._model.getLine(endNode.lineIndex).length; - lineChild = endNode.firstChild; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - if (window.getSelection) { - //FF - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } -//************************************************************************************************** - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - //document.body.style.width = frameWidth + "px"; - //document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = 16; - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = 256; - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; -//************************************************************************************************** - -var lineIndex, lineWidth, child, nextChild; -//************************************************************************************************** -(function _updatePage_removeLines(){ - lineIndex, lineWidth; - child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } -}).call(this); -//************************************************************************************************** - -this._maxLineWidth = 1000; -this._maxLineIndex = 1; -//var rect; -//************************************************************************************************** -(function _updatePage_createLines(){ - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - child = this._createLine(clientDiv, child, document, lineIndex, model); - /* - rect = this._getLineBoundingClientRect(child); - lineWidth = rect.right - rect.left; - child.lineWidth = lineWidth; - // when the maxLineIndex is known measure only the lines that have changed - if (this._maxLineIndex !== -1) { - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = lineIndex; - } - } - */ - } - if (lineIndex === topIndex) { this._topChild = child; } - if (lineIndex === bottomIndex) { this._bottomChild = child; } - if (child.lineIndex === lineIndex) { - child = this._getLineNext(child); - } - } -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -/* -(function _updatePage_updateMaxLineWidth(){ - // when the maxLineIndex is not known all the visible lines need to be measured - if (this._maxLineIndex === -1) { - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - child = this._getLineNext(child); - } - } -}).call(this); -*/ -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateRulers(){ - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); -}).call(this); -//************************************************************************************************** - -var leftWidth, rightWidth, scrollDiv, scrollHeight, clientWidth, width, scrollWidth; -//************************************************************************************************** -if (window.editorDivStyleApplied < 3) -(function _updatePage_updateEditorDivStyle(){ -window.editorDivStyleApplied++; - leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -if (window.scrollDivStyleApplied < 3) -(function _updatePage_updateScrollDivStyle(){ -window.scrollDivStyleApplied++; - scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - clientWidth = this._getClientWidth(); - width = Math.max(this._maxLineWidth, clientWidth); - /* Except by IE, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - scrollWidth = width; - if (!isIE) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; -}).call(this); -//************************************************************************************************** - -//************************************************************************************************** -(function _updatePage_updateDOMSelection(){ - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - this._updateDOMSelection(); -}).call(this); -//************************************************************************************************** - /*if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - }*/ - -var scroll, left, clipLeft, clipTop, clipRight, clipBottom, overlayDiv; -//************************************************************************************************** -(function _updatePage_updateViewport(){ - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - scroll = this._getScroll(); - left = scroll.x; - clipLeft = left; - clipTop = top; - clipRight = left + clientWidth; - clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } -}).call(this); -//************************************************************************************************** - - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - -//************************************************************************************************** -(function _updatePage_updateRulerSize(){ - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); -}).call(this); -//************************************************************************************************** - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - div.insertBefore(lineDiv, child); - } - if (child && child.lineIndex === lineIndex) { - child = child.nextSibling; - } - } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - div.appendChild(lineDiv); - } - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_new.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor_new.js deleted file mode 100644 index cb67f001..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_new.js +++ /dev/null @@ -1,4219 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._textArea = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - if (isIE) { - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - // Feature in IE, IE does redraw the selection background right - // away after the selection changes because of mouse move events. - // The fix is to call getBoundingClientRect() on the - // body element to force the selection to be redraw. Some how - // calling this method forces a redraw. - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset); - }, - _getBoundsAtOffset_FF: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - if (isRangeRects) { - var range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBoundsAtOffset_IE: function (offset) { - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = {left: 0, right: 0}; - if (offset === model.getLineEnd(lineIndex)) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } else { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset + 1); - range.moveStart("character", offset - lineOffset); - result = range.getBoundingClientRect(); - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var textArea = this._textArea; - textArea.innerHTML = ""; - textArea.focus(); - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - var text; - if (textArea.firstChild) { - text = ""; - var child = textArea.firstChild; - while (child) { - if (child.nodeType === child.TEXT_NODE) { - text += child.data; - } else if (child.tagName === "BR") { - text += delimiter; - } - child = child.nextSibling; - } - } else { - text = textArea.value; - } - return text; - }; - - //Try execCommand first. Works on firefox with clipboard permission, - var result = false; - this._ignorePaste = true; - try { - var document = this._frameDocument; - result = document.execCommand("paste", false, null); - } catch (ex) { - } - this._ignorePaste = false; - - if (!result) { - //Try native paste in the text area, works for firefox (asynchronously) - //only works during the paste event - if (event) { - var self = this; - setTimeout(function() { - self.focus(); - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - //no event and no clipboard permission, paste can't be performed - //suggest allow clipboard helper to the user - this.focus(); - return ""; - } - } - this.focus(); - return _getText(); - } - //webkit - if (event && event.clipboardData) { - // Webkit (Chrome/Safari) allows getData during the paste event - // Note: setData is not allowed, not even during copy/cut event - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === 1) { - var textNode = lastChild.firstChild; - if (textNode.data === " ") { - lastChild = lastChild.previousSibling; - } - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction); - }, - _getOffset_FF: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x); - }, - _getXToOffset_FF: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - var offset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - done: - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - var rects = lineChild.getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= x && x < rect.right) { - if (isRangeRects) { - var range = document.createRange(); - var index = 0; - while (index < nodeLength) { - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - rect = range.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - index++; - } - break; - } - index++; - } - offset += index; - } else { - var newText = []; - for (var j = 0; j < nodeLength; j++) { - newText.push(""); - if (j === nodeLength - 1) { - newText.push(textNode.data.substring(j)); - } else { - newText.push(textNode.data.substring(j, j + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getXToOffset_IE: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window - * before using it. - */ - var rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - range.moveToElementText(lineChild); - range.move("character", low + 1); - range.moveEnd("character", mid - low); - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - if (lineChild.ignoreChars && high >= nodeLength) { - high = nodeLength - 1; - } - offset += high; - range.moveToElementText(lineChild); - range.move("character", high); - if (high === nodeLength - 1 && lineChild.ignoreChars) { - range.moveEnd("character", 1 + lineChild.ignoreChars); - } else { - range.moveEnd("character", 1); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) { - offset++; - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var topNode = this._overlayDiv || this._clientDiv; - var body = this._frameDocument.body; - var resizeNode = isIE ? this._frame : this._frameWindow; - var focusNode = isIE ? this._clientDiv: this._frameWindow; - this._handlers = [ - {target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}, - {target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}, - {target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}, - {target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}, - {target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}, - {target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}, - {target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}, - {target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}, - {target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}, - {target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}, - {target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}, - {target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}, - {target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}, - {target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}, - {target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}} - ]; - if (isIE) { - this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - for (var i=0; i"); - html.push(""); - html.push(""); - html.push(""); - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - var textArea = document.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.id = "textArea"; - textArea.tabIndex = -1; - textArea.style.position = "fixed"; - textArea.style.whiteSpace = "pre"; - textArea.style.top = "-1000px"; - textArea.style.width = "100px"; - textArea.style.height = "100px"; - body.appendChild(textArea); - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - clientDiv.contentEditable = "true"; - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// this._handleScroll(); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - if (isChrome || isFirefox || !event) { - /* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */ - var document = this._frameDocument; - var textArea = this._textArea; - textArea.value = text; - textArea.select(); - var result = false; - - //Try execCommand first, it works on firefox with clipboard permission, - // chrome 5, safari 4. - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - if (event.type === "copy" && this._isDOMSelectionComplete()) { - this.focus(); - return false; - } - var self = this; - setTimeout(function() { - self.focus(); - }, 0); - return false; - } else { - //no event and no permission, give up - this.focus(); - return true; - } - } - this.focus(); - return result; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, lineEnd; - lineEnd = this._model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineEnd = this._model.getLine(endNode.lineIndex).length; - lineChild = endNode.firstChild; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - if (window.getSelection) { - //FF - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - document.body.style.width = frameWidth + "px"; - document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; - - var lineIndex, lineWidth; - var child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - child = this._createLine(clientDiv, child, document, lineIndex, model); - var rect = this._getLineBoundingClientRect(child); - lineWidth = rect.right - rect.left; - child.lineWidth = lineWidth; - // when the maxLineIndex is known measure only the lines that have changed - if (this._maxLineIndex !== -1) { - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = lineIndex; - } - } - } - if (lineIndex === topIndex) { this._topChild = child; } - if (lineIndex === bottomIndex) { this._bottomChild = child; } - if (child.lineIndex === lineIndex) { - child = this._getLineNext(child); - } - } - - // when the maxLineIndex is not known all the visible lines need to be measured - if (this._maxLineIndex === -1) { - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - child = this._getLineNext(child); - } - } - - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); - - var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } - - var scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - var scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - var clientWidth = this._getClientWidth(); - var width = Math.max(this._maxLineWidth, clientWidth); - /* Except by IE, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - var scrollWidth = width; - if (!isIE) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; - - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - this._updateDOMSelection(); - if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - } - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - var scroll = this._getScroll(); - var left = scroll.x; - var clipLeft = left; - var clipTop = top; - var clipRight = left + clientWidth; - var clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - var overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - div.insertBefore(lineDiv, child); - } - if (child && child.lineIndex === lineIndex) { - child = child.nextSibling; - } - } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - div.appendChild(lineDiv); - } - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_nightly.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor_nightly.js deleted file mode 100644 index 537a7c95..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_nightly.js +++ /dev/null @@ -1,4649 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined; - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || undefined; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isPad = navigator.userAgent.indexOf("iPad") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = (!isIE || isIE >= 9) && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - if (isPad) { - parent.removeChild(this._touchDiv); - this._touchDiv = null; - this._selDiv1 = null; - this._selDiv2 = null; - this._selDiv3 = null; - this._textArea = null; - } - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isPad) { - this._textArea.focus(); - } else { - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - } - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - /* - * Bug in IE 8 and earlier. For some reason when text is deselected - * the overflow selection at the end of some lines does not get redrawn. - * The fix is to create a DOM element in the body to force a redraw. - */ - if (isIE < 9) { - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDragOver: function (e) { - if (!e) { e = window.event; } - e.dataTransfer.dropEffect = "none"; - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDrop: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - /* - * Feature in IE. The selection is not restored when the - * editor gets focus and the caret is always placed at the - * beginning of the document. The fix is to update the DOM - * selection during the focus event. - */ - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (isPad) { - if (e.keyCode === 8) { - this._doBackspace({}); - e.preventDefault(); - } - return; - } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - /* - * Feature in IE. IE does redraw the selection background right - * away after the selection changes because of mouse move events. - * The fix is to call getBoundingClientRect() on the - * body element to force the selection to be redraw. Some how - * calling this method forces a redraw. - */ - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE < 9 ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (isPad && lineIndex === undefined && ruler && ruler.getOverview() === "document") { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var lineHeight = this._getLineHeight (); - var editorPad = this._getEditorPadding(); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var pixels = this._model.getLineCount () * lineHeight; - this.setTopPixel(Math.floor((e.clientY - buttonHeight - lineHeight) * pixels / trackHeight)); - } - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleInput: function (e) { - var textArea = this._textArea; - this._doContent(textArea.value); - textArea.selectionStart = textArea.selectionEnd = 0; - textArea.value = ""; - e.preventDefault(); - }, - _handleTextInput: function (e) { - this._doContent(e.data); - e.preventDefault(); - }, - _touchConvert: function (touch) { - var rect = this._frame.getBoundingClientRect(); - var body = this._parentDocument.body; - return {left: touch.clientX - rect.left - body.scrollLeft, top: touch.clientY - rect.top - body.scrollTop}; - }, - _handleTouchStart: function (e) { - var touches = e.touches, touch, pt, sel; - this._touchMoved = false; - this._touchStartScroll = undefined; - if (touches.length === 1) { - touch = touches[0]; - var pageX = touch.pageX; - var pageY = touch.pageY; - this._touchStartX = pageX; - this._touchStartY = pageY; - this._touchStartTime = e.timeStamp; - this._touchStartScroll = this._getScroll(); - sel = this._getSelection(); - pt = this._touchConvert(touches[0]); - this._touchGesture = "none"; - if (!sel.isEmpty()) { - if (this._hitOffset(sel.end, pt.left, pt.top)) { - this._touchGesture = "extendEnd"; - } else if (this._hitOffset(sel.start, pt.left, pt.top)) { - this._touchGesture = "extendStart"; - } - } - if (this._touchGesture === "none") { - var textArea = this._textArea; - textArea.value = ""; - textArea.style.left = "-1000px"; - textArea.style.top = "-1000px"; - textArea.style.width = "3000px"; - textArea.style.height = "3000px"; - var self = this; - var f = function() { - self._touchTimeout = null; - self._clickCount = 1; - self._setSelectionTo(pt.left, pt.top, false); - }; - this._touchTimeout = setTimeout(f, 200); - } - } else if (touches.length === 2) { - this._touchGesture = "select"; - if (this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - } - pt = this._touchConvert(touches[0]); - var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - pt = this._touchConvert(touches[1]); - var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - sel = this._getSelection(); - sel.setCaret(offset1); - sel.extend(offset2); - this._setSelection(sel, true, true); - } - //Cannot prevent to show maginifier -// e.preventDefault(); - }, - _handleTouchMove: function (e) { - this._touchMoved = true; - var touches = e.touches, pt, sel; - if (touches.length === 1) { - var touch = touches[0]; - var pageX = touch.pageX; - var pageY = touch.pageY; - var deltaX = this._touchStartX - pageX; - var deltaY = this._touchStartY - pageY; - pt = this._touchConvert(touch); - sel = this._getSelection(); - if (this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - } - if (this._touchGesture === "none") { - if ((e.timeStamp - this._touchStartTime) < 200 && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) { - this._touchGesture = "scroll"; - } else { - this._touchGesture = "caret"; - } - } - if (this._touchGesture === "select") { - if (this._hitOffset(sel.end, pt.left, pt.top)) { - this._touchGesture = "extendEnd"; - } else if (this._hitOffset(sel.start, pt.left, pt.top)) { - this._touchGesture = "extendStart"; - } else { - this._touchGesture = "caret"; - } - } - switch (this._touchGesture) { - case "scroll": - this._touchStartX = pageX; - this._touchStartY = pageY; - this._scrollView(deltaX, deltaY); - break; - case "extendStart": - case "extendEnd": - this._clickCount = 1; - var lineIndex = this._getYToLine(pt.top); - var offset = this._getXToOffset(lineIndex, pt.left); - sel.setCaret(this._touchGesture === "extendStart" ? sel.end : sel.start); - sel.extend(offset); - if (offset >= sel.end && this._touchGesture === "extendStart") { - this._touchGesture = "extendEnd"; - } - if (offset <= sel.start && this._touchGesture === "extendEnd") { - this._touchGesture = "extendStart"; - } - this._setSelection(sel, true, true); - break; - case "caret": - this._setSelectionTo(pt.left, pt.top, false); - break; - } - } else if (touches.length === 2) { - pt = this._touchConvert(touches[0]); - var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - pt = this._touchConvert(touches[1]); - var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - sel = this._getSelection(); - sel.setCaret(offset1); - sel.extend(offset2); - this._setSelection(sel, true, true); - } - e.preventDefault(); - }, - _handleTouchEnd: function (e) { - if (!this._touchMoved) { - if (e.touches.length === 0 && e.changedTouches.length === 1 && this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - var touch = e.changedTouches[0]; - this._clickCount = 1; - var pt = this._touchConvert(touch); - this._setSelectionTo(pt.left, pt.top, false); - } - } - if (e.touches.length === 0) { - var self = this; - setTimeout(function() { - var selection = self._getSelection(); - var text = self._model.getText(selection.start, selection.end); - var textArea = self._textArea; - textArea.value = text; - textArea.selectionStart = 0; - textArea.selectionEnd = text.length; - if (!selection.isEmpty()) { - var touchRect = self._touchDiv.getBoundingClientRect(); - var bounds = self._getOffsetBounds(selection.start); - textArea.style.left = (touchRect.width / 2) + "px"; - textArea.style.top = ((bounds.top > 40 ? bounds.top - 30 : bounds.top + 30)) + "px"; - } - }, 0); - } - e.preventDefault(); - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera || isIE >= 9; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - var range; - if (isRangeRects) { - range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else if (isIE) { - range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", index + 1); - range.moveStart("character", index); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - if (isIE) { - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var window = this._frameWindow; - var document = this._frameDocument; - var child = document.createElement("PRE"); - child.style.position = "fixed"; - child.style.left = "-1000px"; - child.appendChild(document.createTextNode(" ")); - this._clientDiv.appendChild(child); - var range = document.createRange(); - range.selectNodeContents(child); - var sel = window.getSelection(); - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - var self = this; - var cleanup = function() { - self._updateDOMSelection(); - self._clientDiv.removeChild(child); - }; - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - /* - * Use the selection anchor to determine the end of the pasted text as it is possible that - * some browsers (like Firefox) add extra elements (
                                ) after the pasted text. - */ - var endNode = null; - if (sel.anchorNode.nodeType !== child.TEXT_NODE) { - endNode = sel.anchorNode.childNodes[sel.anchorOffset]; - } - var text = []; - var getNodeText = function(node) { - var nodeChild = node.firstChild; - while (nodeChild !== endNode) { - if (nodeChild.nodeType === child.TEXT_NODE) { - text.push(nodeChild !== sel.anchorNode ? nodeChild.data : nodeChild.data.substring(0, sel.anchorOffset)); - } else if (nodeChild.tagName === "BR") { - text.push(delimiter); - } else { - getNodeText(nodeChild); - } - nodeChild = nodeChild.nextSibling; - } - }; - getNodeText(child); - cleanup(); - return text.join(""); - }; - - /* Try execCommand first. Works on firefox with clipboard permission. */ - var result = false; - this._ignorePaste = true; - try { - result = document.execCommand("paste", false, null); - } catch (ex) {} - this._ignorePaste = false; - if (!result) { - /* - * Try native paste in DOM, works for firefox during the paste event. - */ - if (event) { - setTimeout(function() { - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - /* no event and no clipboard permission, paste can't be performed */ - cleanup(); - return ""; - } - } - return _getText(); - } - //webkit - if (event && event.clipboardData) { - /* - * Webkit (Chrome/Safari) allows getData during the paste event - * Note: setData is not allowed, not even during copy/cut event - */ - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === lastChild.firstChild.length) { - lastChild = lastChild.previousSibling; - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_W3C(offset, word, direction); - }, - _getOffset_W3C: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE 8 and earlier. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window before using it. - */ - var deltaX = 0, rects; - if (isIE < 9) { - rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - start = low + 1; - end = mid === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : mid + 1; - if (isRangeRects) { - range.setStart(textNode, start); - range.setEnd(textNode, end); - } else { - range.moveToElementText(lineChild); - range.move("character", start); - range.moveEnd("character", end - start); - } - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - offset += high; - start = high; - end = high === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : high + 1; - if (isRangeRects) { - range.setStart(textNode, start); - range.setEnd(textNode, end); - } else { - range.moveToElementText(lineChild); - range.move("character", start); - range.moveEnd("character", end - start); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left * logicalXDPI / deviceXDPI - deltaX) + ((rect.right - rect.left) * logicalXDPI / deviceXDPI / 2))) { - offset++; - } - } else { - var newText = []; - for (var q = 0; q < nodeLength; q++) { - newText.push(""); - if (q === nodeLength - 1) { - newText.push(textNode.data.substring(q)); - } else { - newText.push(textNode.data.substring(q, q + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _getOffsetBounds: function(offset) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineHeight = this._getLineHeight(); - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var bounds = this._getBoundsAtOffset(offset); - var left = bounds.left; - var right = bounds.right; - var top = (lineIndex * lineHeight) - scroll.y + editorRect.top + editorPad.top; - var bottom = top + lineHeight; - return {left: left, top: top, right: right, bottom: bottom}; - }, - _hitOffset: function (offset, x, y) { - var bounds = this._getOffsetBounds(offset); - var left = bounds.left; - var right = bounds.right; - var top = bounds.top; - var bottom = bounds.bottom; - var area = 20; - left -= area; - top -= area; - right += area; - bottom += area; - return (left <= x && x <= right && top <= y && y <= bottom); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var body = this._frameDocument.body; - var handlers = this._handlers = []; - var resizeNode = isIE < 9 ? this._frame : this._frameWindow; - var focusNode = isPad ? this._textArea : (isIE ? this._clientDiv: this._frameWindow); - handlers.push({target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}); - handlers.push({target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}); - handlers.push({target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}); - if (isPad) { - var touchDiv = this._touchDiv; - var textArea = this._textArea; - handlers.push({target: textArea, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}); - handlers.push({target: textArea, type: "input", handler: function(e) { return self._handleInput(e); }}); - handlers.push({target: textArea, type: "textInput", handler: function(e) { return self._handleTextInput(e); }}); - handlers.push({target: touchDiv, type: "touchstart", handler: function(e) { return self._handleTouchStart(e); }}); - handlers.push({target: touchDiv, type: "touchmove", handler: function(e) { return self._handleTouchMove(e); }}); - handlers.push({target: touchDiv, type: "touchend", handler: function(e) { return self._handleTouchEnd(e); }}); - } else { - var topNode = this._overlayDiv || this._clientDiv; - handlers.push({target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}); - handlers.push({target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}); - handlers.push({target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}); - handlers.push({target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}); - handlers.push({target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}); - handlers.push({target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}); - handlers.push({target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}); - handlers.push({target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}); - handlers.push({target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}); - handlers.push({target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}); - handlers.push({target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}); - handlers.push({target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}); - handlers.push({target: topNode, type: "dragover", handler: function(e) { return self._handleDragOver(e);}}); - handlers.push({target: topNode, type: "drop", handler: function(e) { return self._handleDrop(e);}}); - if (isIE) { - handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - } - for (var i=0; i"); - html.push(""); - html.push(""); - if (isIE < 9) { - html.push(""); - } - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - if (isPad) { - var touchDiv = parentDocument.createElement("DIV"); - this._touchDiv = touchDiv; - touchDiv.style.position = "absolute"; - touchDiv.style.border = "0px"; - touchDiv.style.padding = "0px"; - touchDiv.style.margin = "0px"; - touchDiv.style.zIndex = "2"; - touchDiv.style.overflow = "hidden"; - touchDiv.style.background="transparent"; -// touchDiv.style.background="green"; -// touchDiv.style.opacity="0.5"; - touchDiv.style.WebkitUserSelect = "none"; - parent.appendChild(touchDiv); - - var textArea = parentDocument.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.style.position = "absolute"; - textArea.style.whiteSpace = "pre"; - textArea.style.left = "-1000px"; - textArea.tabIndex = 1; - textArea.autocapitalize = false; - textArea.autocorrect = false; - textArea.className = "editorContainer"; - textArea.style.background = "transparent"; - textArea.style.color = "transparent"; - textArea.style.border = "0px"; - textArea.style.padding = "0px"; - textArea.style.margin = "0px"; - textArea.style.borderRadius = "0px"; - textArea.style.WebkitAppearance = "none"; - textArea.style.WebkitTapHighlightColor = "transparent"; - touchDiv.appendChild(textArea); - } - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - if (isPad) { - var selDiv1 = document.createElement("DIV"); - this._selDiv1 = selDiv1; - selDiv1.id = "selDiv1"; - selDiv1.style.position = "fixed"; - selDiv1.style.borderWidth = "0px"; - selDiv1.style.margin = "0px"; - selDiv1.style.padding = "0px"; - selDiv1.style.MozOutline = "none"; - selDiv1.style.outline = "none"; - selDiv1.style.background = "lightblue"; - selDiv1.style.width="0px"; - selDiv1.style.height="0px"; - scrollDiv.appendChild(selDiv1); - var selDiv2 = document.createElement("DIV"); - this._selDiv2 = selDiv2; - selDiv2.id = "selDiv2"; - selDiv2.style.position = "fixed"; - selDiv2.style.borderWidth = "0px"; - selDiv2.style.margin = "0px"; - selDiv2.style.padding = "0px"; - selDiv2.style.MozOutline = "none"; - selDiv2.style.outline = "none"; - selDiv2.style.background = "lightblue"; - selDiv2.style.width="0px"; - selDiv2.style.height="0px"; - scrollDiv.appendChild(selDiv2); - var selDiv3 = document.createElement("DIV"); - this._selDiv3 = selDiv3; - selDiv3.id = "selDiv3"; - selDiv3.style.position = "fixed"; - selDiv3.style.borderWidth = "0px"; - selDiv3.style.margin = "0px"; - selDiv3.style.padding = "0px"; - selDiv3.style.MozOutline = "none"; - selDiv3.style.outline = "none"; - selDiv3.style.background = "lightblue"; - selDiv3.style.width="0px"; - selDiv3.style.height="0px"; - scrollDiv.appendChild(selDiv3); - } - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - if (isPad) { - clientDiv.style.WebkitTapHighlightColor = "transparent"; - } - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - if (!isPad) { - clientDiv.contentEditable = "true"; - } - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _resizeTouchDiv: function() { - var editorRect = this._editorDiv.getBoundingClientRect(); - var parentRect = this._frame.getBoundingClientRect(); - var temp = this._frame; - while (temp) { - if (temp.style && temp.style.top) { break; } - temp = temp.parentNode; - } - var parentTop = parentRect.top; - if (temp) { - parentTop -= temp.getBoundingClientRect().top; - } else { - parentTop += this._parentDocument.body.scrollTop; - } - temp = this._frame; - while (temp) { - if (temp.style && temp.style.left) { break; } - temp = temp.parentNode; - } - var parentLeft = parentRect.left; - if (temp) { - parentLeft -= temp.getBoundingClientRect().left; - } else { - parentLeft += this._parentDocument.body.scrollLeft; - } - var touchDiv = this._touchDiv; - touchDiv.style.left = (parentLeft + editorRect.left) + "px"; - touchDiv.style.top = (parentTop + editorRect.top) + "px"; - touchDiv.style.width = editorRect.width + "px"; - touchDiv.style.height = editorRect.height + "px"; - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - /* Feature in Chrome, clipboardData.setData is no-op on Chrome even though it returns true */ - if (isChrome || isFirefox || !event) { - var window = this._frameWindow; - var document = this._frameDocument; - var child = document.createElement("PRE"); - child.style.position = "fixed"; - child.style.left = "-1000px"; - var cr = 0, lf = 0, index = 0, length = text.length; - while (index < length) { - if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); } - if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); } - var start = index, end; - if (lf === -1 && cr === -1) { - child.appendChild(document.createTextNode(text.substring(index))); - break; - } - if (cr !== -1 && lf !== -1) { - if (cr + 1 === lf) { - end = cr; - index = lf + 1; - } else { - end = cr < lf ? cr : lf; - index = (cr < lf ? cr : lf) + 1; - } - } else if (cr !== -1) { - end = cr; - index = cr + 1; - } else { - end = lf; - index = lf + 1; - } - child.appendChild(document.createTextNode(text.substring(start, end))); - child.appendChild(document.createElement("BR")); - } - child.appendChild(document.createTextNode(" ")); - this._clientDiv.appendChild(child); - var range = document.createRange(); - range.setStart(child.firstChild, 0); - range.setEndBefore(child.lastChild); - var sel = window.getSelection(); - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - var self = this; - var cleanup = function() { - self._clientDiv.removeChild(child); - self._updateDOMSelection(); - }; - var result = false; - /* - * Try execCommand first, it works on firefox with clipboard permission, - * chrome 5, safari 4. - */ - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - setTimeout(cleanup, 0); - return false; - } - } - /* no event and no permission, copy can not be done */ - cleanup(); - return true; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, model = this._model; - var startLineEnd = model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= startLineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineChild = endNode.firstChild; - var endLineEnd = this._model.getLine(endNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= endLineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - - if (isPad) { - var startLineBounds, l; - range = document.createRange(); - startLineBounds = this._getLineBoundingClientRect(startNode); - if (startOffset === startLineEnd) { - l = startLineBounds.right; - } else { - range.setStart(startLineNode, startLineOffset); - range.setEnd(startLineNode, startLineOffset + 1); - l = range.getBoundingClientRect().left; - } - var textArea = this._textArea; - textArea.selectionStart = textArea.selectionEnd = 0; - var rect = this._frame.getBoundingClientRect(); - var touchRect = this._touchDiv.getBoundingClientRect(); - var editorBounds = this._editorDiv.getBoundingClientRect(); - if (!(editorBounds.left <= l && l <= editorBounds.left + editorBounds.width && - editorBounds.top <= startLineBounds.top && startLineBounds.top <= editorBounds.top + editorBounds.height) || - !(startNode === endNode && startOffset === endOffset)) - { - textArea.style.left = "-1000px"; - } else { - textArea.style.left = (l - 4 + rect.left - touchRect.left) + "px"; - } - textArea.style.top = (startLineBounds.top + rect.top - touchRect.top) + "px"; - textArea.style.width = "6px"; - textArea.style.height = (startLineBounds.bottom - startLineBounds.top) + "px"; - - var selDiv = this._selDiv1; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - selDiv = this._selDiv2; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - selDiv = this._selDiv3; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - if (!(startNode === endNode && startOffset === endOffset)) { - var handleWidth = 2; - var handleBorder = handleWidth + "px blue solid"; - var clientBounds = this._clientDiv.getBoundingClientRect(); - var left = clientBounds.left; - var right = clientBounds.right; - selDiv = this._selDiv1; - selDiv.style.left = l + "px"; - selDiv.style.top = startLineBounds.top + "px"; - selDiv.style.width = (right - l) + "px"; - selDiv.style.height = (startLineBounds.bottom - startLineBounds.top + 1) + "px"; - selDiv.style.borderLeft = handleBorder; - selDiv.style.borderRight = "0px"; - var r; - var endLineBounds = this._getLineBoundingClientRect(endNode); - if (endOffset === 0) { - r = endLineBounds.left; - } else { - if (endLineOffset === 0) { - endLineNode = endLineNode.parentNode.previousSibling.firstChild; - endLineOffset = endLineNode.length; - } - range.setStart(endLineNode, endLineOffset - 1); - range.setEnd(endLineNode, endLineOffset); - r = range.getBoundingClientRect().right; - } - if (startNode === endNode) { - selDiv.style.width = (r - l - handleWidth * 2) + "px"; - selDiv.style.borderRight = handleBorder; - } else { - selDiv = this._selDiv3; - selDiv.style.left = left + "px"; - selDiv.style.top = endLineBounds.top + "px"; - selDiv.style.width = (r - left - handleWidth) + "px"; - selDiv.style.height = (endLineBounds.bottom - endLineBounds.top) + "px"; - selDiv.style.borderRight = handleBorder; - if (endNode.lineIndex - startNode.lineIndex > 1) { - selDiv = this._selDiv2; - selDiv.style.left = startLineBounds.left + "px"; - selDiv.style.top = startLineBounds.bottom + "px"; - selDiv.style.width = (right - left) + "px"; - selDiv.style.height = (endLineBounds.top - startLineBounds.bottom + 1) + "px"; - } - } - } - return; - } - if (window.getSelection) { - //W3C - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE < 9 - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - document.body.style.width = frameWidth + "px"; - document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; - - var lineIndex, lineWidth; - var child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - var frag = document.createDocumentFragment(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - this._createLine(frag, null, document, lineIndex, model); - } else { - if (frag.firstChild) { - clientDiv.insertBefore(frag, child); - frag = document.createDocumentFragment(); - } - child = this._getLineNext(child); - } - } - if (frag.firstChild) { clientDiv.insertBefore(frag, child); } - - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth === undefined) { - var rect = this._getLineBoundingClientRect(child); - lineWidth = child.lineWidth = rect.right - rect.left; - } - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - if (child.lineIndex === topIndex) { this._topChild = child; } - if (child.lineIndex === bottomIndex) { this._bottomChild = child; } - child = this._getLineNext(child); - } - - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); - - var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } - - var scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - var scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - var clientWidth = this._getClientWidth(); - var width = Math.max(this._maxLineWidth, clientWidth); - /* - * Except by IE 8 and earlier, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - var scrollWidth = width; - if (!isIE || isIE >= 9) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; - - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - if (!isPad) { - this._updateDOMSelection(); - } - if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - } - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - var scroll = this._getScroll(); - var left = scroll.x; - var clipLeft = left; - var clipTop = top; - var clipRight = left + clientWidth; - var clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - var overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); - if (isPad) { - this._updateDOMSelection(); - var self = this; - setTimeout(function() {self._resizeTouchDiv();}, 0); - } - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv, frag; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - frag = document.createDocumentFragment(); - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - frag.appendChild(lineDiv); - } else { - if (frag.firstChild) { - div.insertBefore(frag, child); - frag = document.createDocumentFragment(); - } - if (child) { - child = child.nextSibling; - } - } - } - if (frag.firstChild) { div.insertBefore(frag, child); } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - frag = document.createDocumentFragment(); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - frag.appendChild(lineDiv); - } - div.appendChild(frag); - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_old.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor_old.js deleted file mode 100644 index a9f630ea..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_old.js +++ /dev/null @@ -1,4235 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._textArea = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - if (isIE) { - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - // Feature in IE, IE does redraw the selection background right - // away after the selection changes because of mouse move events. - // The fix is to call getBoundingClientRect() on the - // body element to force the selection to be redraw. Some how - // calling this method forces a redraw. - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset); - }, - _getBoundsAtOffset_FF: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - if (isRangeRects) { - var range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBoundsAtOffset_IE: function (offset) { - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = {left: 0, right: 0}; - if (offset === model.getLineEnd(lineIndex)) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } else { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset + 1); - range.moveStart("character", offset - lineOffset); - result = range.getBoundingClientRect(); - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var textArea = this._textArea; - textArea.innerHTML = ""; - textArea.focus(); - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - var text; - if (textArea.firstChild) { - text = ""; - var child = textArea.firstChild; - while (child) { - if (child.nodeType === child.TEXT_NODE) { - text += child.data; - } else if (child.tagName === "BR") { - text += delimiter; - } - child = child.nextSibling; - } - } else { - text = textArea.value; - } - return text; - }; - - //Try execCommand first. Works on firefox with clipboard permission, - var result = false; - this._ignorePaste = true; - try { - var document = this._frameDocument; - result = document.execCommand("paste", false, null); - } catch (ex) { - } - this._ignorePaste = false; - - if (!result) { - //Try native paste in the text area, works for firefox (asynchronously) - //only works during the paste event - if (event) { - var self = this; - setTimeout(function() { - self.focus(); - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - //no event and no clipboard permission, paste can't be performed - //suggest allow clipboard helper to the user - this.focus(); - return ""; - } - } - this.focus(); - return _getText(); - } - //webkit - if (event && event.clipboardData) { - // Webkit (Chrome/Safari) allows getData during the paste event - // Note: setData is not allowed, not even during copy/cut event - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === 1) { - var textNode = lastChild.firstChild; - if (textNode.data === " ") { - lastChild = lastChild.previousSibling; - } - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction); - }, - _getOffset_FF: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x); - }, - _getXToOffset_FF: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - var offset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - done: - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - var rects = lineChild.getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= x && x < rect.right) { - if (isRangeRects) { - var range = document.createRange(); - var index = 0; - while (index < nodeLength) { - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - rect = range.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - index++; - } - break; - } - index++; - } - offset += index; - } else { - var newText = []; - for (var j = 0; j < nodeLength; j++) { - newText.push(""); - if (j === nodeLength - 1) { - newText.push(textNode.data.substring(j)); - } else { - newText.push(textNode.data.substring(j, j + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getXToOffset_IE: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window - * before using it. - */ - var rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - range.moveToElementText(lineChild); - range.move("character", low + 1); - range.moveEnd("character", mid - low); - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - if (lineChild.ignoreChars && high >= nodeLength) { - high = nodeLength - 1; - } - offset += high; - range.moveToElementText(lineChild); - range.move("character", high); - if (high === nodeLength - 1 && lineChild.ignoreChars) { - range.moveEnd("character", 1 + lineChild.ignoreChars); - } else { - range.moveEnd("character", 1); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) { - offset++; - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var topNode = this._overlayDiv || this._clientDiv; - var body = this._frameDocument.body; - var resizeNode = isIE ? this._frame : this._frameWindow; - var focusNode = isIE ? this._clientDiv: this._frameWindow; - this._handlers = [ - {target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}, - {target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}, - {target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}, - {target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}, - {target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}, - {target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}, - {target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}, - {target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}, - {target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}, - {target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}, - {target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}, - {target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}, - {target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}, - {target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}, - {target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}} - ]; - if (isIE) { - this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - for (var i=0; i"); - html.push(""); - html.push(""); - html.push(""); - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - var textArea = document.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.id = "textArea"; - textArea.tabIndex = -1; - textArea.style.position = "fixed"; - textArea.style.whiteSpace = "pre"; - textArea.style.top = "-1000px"; - textArea.style.width = "100px"; - textArea.style.height = "100px"; - body.appendChild(textArea); - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - clientDiv.contentEditable = "true"; - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// this._handleScroll(); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - if (isChrome || isFirefox || !event) { - /* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */ - var document = this._frameDocument; - var textArea = this._textArea; - textArea.value = text; - textArea.select(); - var result = false; - - //Try execCommand first, it works on firefox with clipboard permission, - // chrome 5, safari 4. - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - if (event.type === "copy" && this._isDOMSelectionComplete()) { - this.focus(); - return false; - } - var self = this; - setTimeout(function() { - self.focus(); - }, 0); - return false; - } else { - //no event and no permission, give up - this.focus(); - return true; - } - } - this.focus(); - return result; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, lineEnd; - lineEnd = this._model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineEnd = this._model.getLine(endNode.lineIndex).length; - lineChild = endNode.firstChild; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - if (window.getSelection) { - //FF - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - //document.body.style.width = frameWidth + "px"; - //document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; - -(function _updatePage_removeLines() { - var lineIndex, lineWidth; - var child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } -})(); - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - this._maxLineWidth = 1000; - this._maxLineIndex = 1; - -(function _updatePage_createLines() { - child = this._getLineNext(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - child = this._createLine(clientDiv, child, document, lineIndex, model); - /* - var rect = this._getLineBoundingClientRect(child); - lineWidth = rect.right - rect.left; - child.lineWidth = lineWidth; - // when the maxLineIndex is known measure only the lines that have changed - if (this._maxLineIndex !== -1) { - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = lineIndex; - } - } - /**/ - } - if (lineIndex === topIndex) { this._topChild = child; } - if (lineIndex === bottomIndex) { this._bottomChild = child; } - if (child.lineIndex === lineIndex) { - child = this._getLineNext(child); - } - } -}).call(this); - - // when the maxLineIndex is not known all the visible lines need to be measured - /* - if (this._maxLineIndex === -1) { - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - child = this._getLineNext(child); - } - } - */ - - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); - - var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } - - var scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - var scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - var clientWidth = this._getClientWidth(); - var width = Math.max(this._maxLineWidth, clientWidth); - /* Except by IE, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - var scrollWidth = width; - if (!isIE) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; - - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - this._updateDOMSelection(); - if (clientHeight !== this._getClientHeight()) { - console.log("oops"); - this._updatePage(); - return; - } - -(function _updatePage_updateViewport() { - - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - var scroll = this._getScroll(); - var left = scroll.x; - var clipLeft = left; - var clipTop = top; - var clipRight = left + clientWidth; - var clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - var overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } -}).call(this); - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - div.insertBefore(lineDiv, child); - } - if (child && child.lineIndex === lineIndex) { - child = child.nextSibling; - } - } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - div.appendChild(lineDiv); - } - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_original.js b/branches/firebug1.5/sandbox/sandbox/orion/js/editor_original.js deleted file mode 100644 index dec414e7..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/editor_original.js +++ /dev/null @@ -1,4218 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._textArea = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - if (isIE) { - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - // Feature in IE, IE does redraw the selection background right - // away after the selection changes because of mouse move events. - // The fix is to call getBoundingClientRect() on the - // body element to force the selection to be redraw. Some how - // calling this method forces a redraw. - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset); - }, - _getBoundsAtOffset_FF: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - if (isRangeRects) { - var range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBoundsAtOffset_IE: function (offset) { - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = {left: 0, right: 0}; - if (offset === model.getLineEnd(lineIndex)) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } else { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset + 1); - range.moveStart("character", offset - lineOffset); - result = range.getBoundingClientRect(); - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var textArea = this._textArea; - textArea.innerHTML = ""; - textArea.focus(); - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - var text; - if (textArea.firstChild) { - text = ""; - var child = textArea.firstChild; - while (child) { - if (child.nodeType === child.TEXT_NODE) { - text += child.data; - } else if (child.tagName === "BR") { - text += delimiter; - } - child = child.nextSibling; - } - } else { - text = textArea.value; - } - return text; - }; - - //Try execCommand first. Works on firefox with clipboard permission, - var result = false; - this._ignorePaste = true; - try { - var document = this._frameDocument; - result = document.execCommand("paste", false, null); - } catch (ex) { - } - this._ignorePaste = false; - - if (!result) { - //Try native paste in the text area, works for firefox (asynchronously) - //only works during the paste event - if (event) { - var self = this; - setTimeout(function() { - self.focus(); - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - //no event and no clipboard permission, paste can't be performed - //suggest allow clipboard helper to the user - this.focus(); - return ""; - } - } - this.focus(); - return _getText(); - } - //webkit - if (event && event.clipboardData) { - // Webkit (Chrome/Safari) allows getData during the paste event - // Note: setData is not allowed, not even during copy/cut event - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === 1) { - var textNode = lastChild.firstChild; - if (textNode.data === " ") { - lastChild = lastChild.previousSibling; - } - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction); - }, - _getOffset_FF: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x); - }, - _getXToOffset_FF: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - var offset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - done: - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - var rects = lineChild.getClientRects(); - for (var i = 0; i < rects.length; i++) { - var rect = rects[i]; - if (rect.left <= x && x < rect.right) { - if (isRangeRects) { - var range = document.createRange(); - var index = 0; - while (index < nodeLength) { - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - rect = range.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - index++; - } - break; - } - index++; - } - offset += index; - } else { - var newText = []; - for (var j = 0; j < nodeLength; j++) { - newText.push(""); - if (j === nodeLength - 1) { - newText.push(textNode.data.substring(j)); - } else { - newText.push(textNode.data.substring(j, j + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getXToOffset_IE: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window - * before using it. - */ - var rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - range.moveToElementText(lineChild); - range.move("character", low + 1); - range.moveEnd("character", mid - low); - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - if (lineChild.ignoreChars && high >= nodeLength) { - high = nodeLength - 1; - } - offset += high; - range.moveToElementText(lineChild); - range.move("character", high); - if (high === nodeLength - 1 && lineChild.ignoreChars) { - range.moveEnd("character", 1 + lineChild.ignoreChars); - } else { - range.moveEnd("character", 1); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) { - offset++; - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var topNode = this._overlayDiv || this._clientDiv; - var body = this._frameDocument.body; - var resizeNode = isIE ? this._frame : this._frameWindow; - var focusNode = isIE ? this._clientDiv: this._frameWindow; - this._handlers = [ - {target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}, - {target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}, - {target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}, - {target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}, - {target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}, - {target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}, - {target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}, - {target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}, - {target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}, - {target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}, - {target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}, - {target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}, - {target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}, - {target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}, - {target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}} - ]; - if (isIE) { - this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - for (var i=0; i"); - html.push(""); - html.push(""); - html.push(""); - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - var textArea = document.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.id = "textArea"; - textArea.tabIndex = -1; - textArea.style.position = "fixed"; - textArea.style.whiteSpace = "pre"; - textArea.style.top = "-1000px"; - textArea.style.width = "100px"; - textArea.style.height = "100px"; - body.appendChild(textArea); - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - clientDiv.contentEditable = "true"; - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// this._handleScroll(); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - if (isChrome || isFirefox || !event) { - /* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */ - var document = this._frameDocument; - var textArea = this._textArea; - textArea.value = text; - textArea.select(); - var result = false; - - //Try execCommand first, it works on firefox with clipboard permission, - // chrome 5, safari 4. - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - if (event.type === "copy" && this._isDOMSelectionComplete()) { - this.focus(); - return false; - } - var self = this; - setTimeout(function() { - self.focus(); - }, 0); - return false; - } else { - //no event and no permission, give up - this.focus(); - return true; - } - } - this.focus(); - return result; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, lineEnd; - lineEnd = this._model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineEnd = this._model.getLine(endNode.lineIndex).length; - lineChild = endNode.firstChild; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - if (window.getSelection) { - //FF - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - document.body.style.width = frameWidth + "px"; - document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; - - var lineIndex, lineWidth; - var child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - child = this._createLine(clientDiv, child, document, lineIndex, model); - var rect = this._getLineBoundingClientRect(child); - lineWidth = rect.right - rect.left; - child.lineWidth = lineWidth; - // when the maxLineIndex is known measure only the lines that have changed - if (this._maxLineIndex !== -1) { - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = lineIndex; - } - } - } - if (lineIndex === topIndex) { this._topChild = child; } - if (lineIndex === bottomIndex) { this._bottomChild = child; } - if (child.lineIndex === lineIndex) { - child = this._getLineNext(child); - } - } - - // when the maxLineIndex is not known all the visible lines need to be measured - if (this._maxLineIndex === -1) { - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - child = this._getLineNext(child); - } - } - - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); - - var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } - - var scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - var scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - var clientWidth = this._getClientWidth(); - var width = Math.max(this._maxLineWidth, clientWidth); - /* Except by IE, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - var scrollWidth = width; - if (!isIE) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; - - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - this._updateDOMSelection(); - if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - } - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - var scroll = this._getScroll(); - var left = scroll.x; - var clipLeft = left; - var clipTop = top; - var clipRight = left + clientWidth; - var clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - var overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - div.insertBefore(lineDiv, child); - } - if (child && child.lineIndex === lineIndex) { - child = child.nextSibling; - } - } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - div.appendChild(lineDiv); - } - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/js/model.js b/branches/firebug1.5/sandbox/sandbox/orion/js/model.js deleted file mode 100644 index 62ed5997..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/js/model.js +++ /dev/null @@ -1,450 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global navigator */ - -/** - * @namespace The global container for eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new TextModel with the given text and default line delimiter. - * - * @param {String} [text=""] the text that the model will store - * @param {String} [lineDelimiter=platform delimiter] the line delimiter used when inserting new lines to the model. - * - * @name eclipse.TextModel - * @class The TextModel is an interface that provides text for the editor. Applications may - * implement the TextModel interface to provide a custom store for the editor content. The - * editor interacts with its text model in order to access and update the text that is being - * displayed and edited in the editor. This is the default implementation. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#setModel} - *

                                - */ -eclipse.TextModel = (function() { - var isWindows = navigator.platform.indexOf("Win") !== -1; - - /** @private */ - function TextModel(text, lineDelimiter) { - this._listeners = []; - this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); - this._lastLineIndex = -1; - this._text = [""]; - this._lineOffsets = [0]; - this.setText(text); - } - - TextModel.prototype = /** @lends eclipse.TextModel.prototype */ { - /** - * Adds a listener to the model. - * - * @param {Object} listener the listener to add. - * @param {Function} [listener.onChanged] see {@link #onChanged}. - * @param {Function} [listener.onChanging] see {@link #onChanging}. - * - * @see removeListener - */ - addListener: function(listener) { - this._listeners.push(listener); - }, - /** - * Removes a listener from the model. - * - * @param {Object} listener the listener to remove - * - * @see #addListener - */ - removeListener: function(listener) { - for (var i = 0; i < this._listeners.length; i++) { - if (this._listeners[i] === listener) { - this._listeners.splice(i, 1); - return; - } - } - }, - /** - * Returns the number of characters in the model. - * - * @returns {Number} the number of characters in the model. - */ - getCharCount: function() { - var count = 0; - for (var i = 0; i - * The valid indices are 0 to line count exclusive. Returns null - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @returns {String} the line text or null if out of range. - * - * @see #getLineAtOffset - */ - getLine: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return null; - } - var start = this._lineOffsets[lineIndex]; - if (lineIndex + 1 < lineCount) { - var text = this.getText(start, this._lineOffsets[lineIndex + 1]); - if (includeDelimiter) { - return text; - } - var end = text.length, c; - while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) { - end--; - } - return text.substring(0, end); - } else { - return this.getText(start); - } - }, - /** - * Returns the line index at the given character offset. - *

                                - * The valid offsets are 0 to char count inclusive. The line index for - * char count is line count - 1. Returns -1 if - * the offset is out of range. - *

                                - * - * @param {Number} offset a character offset. - * @returns {Number} the zero based line index or -1 if out of range. - */ - getLineAtOffset: function(offset) { - if (!(0 <= offset && offset <= this.getCharCount())) { - return -1; - } - var lineCount = this.getLineCount(); - var charCount = this.getCharCount(); - if (offset === charCount) { - return lineCount - 1; - } - var lineStart, lineEnd; - var index = this._lastLineIndex; - if (0 <= index && index < lineCount) { - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (lineStart <= offset && offset < lineEnd) { - return index; - } - } - var high = lineCount; - var low = -1; - while (high - low > 1) { - index = Math.floor((high + low) / 2); - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (offset <= lineStart) { - high = index; - } else if (offset < lineEnd) { - high = index; - break; - } else { - low = index; - } - } - this._lastLineIndex = high; - return high; - }, - /** - * Returns the number of lines in the model. - *

                                - * The model always has at least one line. - *

                                - * - * @returns {Number} the number of lines. - */ - getLineCount: function() { - return this._lineOffsets.length; - }, - /** - * Returns the line delimiter that is used by the editor - * when inserting new lines. New lines entered using key strokes - * and paste operations use this line delimiter. - * - * @return {String} the line delimiter that is used by the editor when inserting new lines. - */ - getLineDelimiter: function() { - return this._lineDelimiter; - }, - /** - * Returns the end character offset for the given line. - *

                                - * The end offset is not inclusive. This means that when the line delimiter is included, the - * offset is either the start offset of the next line or char count. When the line delimiter is - * not included, the offset is the offset of the line delimiter. - *

                                - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @return {Number} the line end offset or -1 if out of range. - * - * @see #getLineStart - */ - getLineEnd: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return -1; - } - if (lineIndex + 1 < lineCount) { - var end = this._lineOffsets[lineIndex + 1]; - if (includeDelimiter) { - return end; - } - var text = this.getText(Math.max(0, end - 2), end); - var i = text.length, c; - while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) { - i--; - } - return end - (text.length - i); - } else { - return this.getCharCount(); - } - }, - /** - * Returns the start character offset for the given line. - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @return {Number} the line start offset or -1 if out of range. - * - * @see #getLineEnd - */ - getLineStart: function(lineIndex) { - if (!(0 <= lineIndex && lineIndex < this.getLineCount())) { - return -1; - } - return this._lineOffsets[lineIndex]; - }, - /** - * Returns the text for the given range. - *

                                - * The end offset is not inclusive. This means that character at the end offset - * is not included in the returned text. - *

                                - * - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var offset = 0, chunk = 0, length; - while (chunk - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanging}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {String} text the text that is about to be inserted in the model. - * @param {Number} start the character offset in the model where the change will occur. - * @param {Number} removedCharCount the number of characters being removed from the model. - * @param {Number} addedCharCount the number of characters being added to the model. - * @param {Number} removedLineCount the number of lines being removed from the model. - * @param {Number} addedLineCount the number of lines being added to the model. - */ - onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanging) { - l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Notifies all listeners that the text has changed. - *

                                - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanged}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {Number} start the character offset in the model where the change occurred. - * @param {Number} removedCharCount the number of characters removed from the model. - * @param {Number} addedCharCount the number of characters added to the model. - * @param {Number} removedLineCount the number of lines removed from the model. - * @param {Number} addedLineCount the number of lines added to the model. - */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanged) { - l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The end offset is not inclusive. This means that the character at the - * end offset is not replaced. - *

                                - *

                                - * The text model must notify the listeners before and after the - * the text is changed by calling {@link #onChanging} and {@link #onChanged} - * respectively. - *

                                - * - * @param {String} [text=""] the new text. - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #getText - */ - setText: function(text, start, end) { - if (text === undefined) { text = ""; } - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var startLine = this.getLineAtOffset(start); - var endLine = this.getLineAtOffset(end); - var eventStart = start; - var removedCharCount = end - start; - var removedLineCount = endLine - startLine; - var addedCharCount = text.length; - var addedLineCount = 0; - var lineCount = this.getLineCount(); - - var cr = 0, lf = 0, index = 0; - var newLineOffsets = []; - while (true) { - if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); } - if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); } - if (lf === -1 && cr === -1) { break; } - if (cr !== -1 && lf !== -1) { - if (cr + 1 === lf) { - index = lf + 1; - } else { - index = (cr < lf ? cr : lf) + 1; - } - } else if (cr !== -1) { - index = cr + 1; - } else { - index = lf + 1; - } - newLineOffsets.push(start + index); - addedLineCount++; - } - - this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - - //TODO this should be done the loops below to avoid getText() - if (newLineOffsets.length === 0) { - var startLineOffset = this.getLineStart(startLine), endLineOffset; - if (endLine + 1 < lineCount) { - endLineOffset = this.getLineStart(endLine + 1); - } else { - endLineOffset = this.getCharCount(); - } - if (start !== startLineOffset) { - text = this.getText(startLineOffset, start) + text; - start = startLineOffset; - } - if (end !== endLineOffset) { - text = text + this.getText(end, endLineOffset); - end = endLineOffset; - } - } - - var changeCount = addedCharCount - removedCharCount; - for (var j = startLine + removedLineCount + 1; j < lineCount; j++) { - this._lineOffsets[j] += changeCount; - } - var args = [startLine + 1, removedLineCount].concat(newLineOffsets); - Array.prototype.splice.apply(this._lineOffsets, args); - - var offset = 0, chunk = 0, length; - while (chunk - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#setModel} - *

                                - */ -eclipse.TextModel = (function() { - var isWindows = navigator.platform.indexOf("Win") !== -1; - - /** @private */ - function TextModel(text, lineDelimiter) { - this._listeners = []; - this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); - this._lastLineIndex = -1; - this._text = [""]; - this._lineOffsets = [0]; - this.setText(text); - } - - TextModel.prototype = /** @lends eclipse.TextModel.prototype */ { - /** - * Adds a listener to the model. - * - * @param {Object} listener the listener to add. - * @param {Function} [listener.onChanged] see {@link #onChanged}. - * @param {Function} [listener.onChanging] see {@link #onChanging}. - * - * @see removeListener - */ - addListener: function(listener) { - this._listeners.push(listener); - }, - /** - * Removes a listener from the model. - * - * @param {Object} listener the listener to remove - * - * @see #addListener - */ - removeListener: function(listener) { - for (var i = 0; i < this._listeners.length; i++) { - if (this._listeners[i] === listener) { - this._listeners.splice(i, 1); - return; - } - } - }, - /** - * Returns the number of characters in the model. - * - * @returns {Number} the number of characters in the model. - */ - getCharCount: function() { - var count = 0; - for (var i = 0; i - * The valid indices are 0 to line count exclusive. Returns null - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @returns {String} the line text or null if out of range. - * - * @see #getLineAtOffset - */ - getLine: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return null; - } - var start = this._lineOffsets[lineIndex]; - if (lineIndex + 1 < lineCount) { - var text = this.getText(start, this._lineOffsets[lineIndex + 1]); - if (includeDelimiter) { - return text; - } - var end = text.length, c; - while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) { - end--; - } - return text.substring(0, end); - } else { - return this.getText(start); - } - }, - /** - * Returns the line index at the given character offset. - *

                                - * The valid offsets are 0 to char count inclusive. The line index for - * char count is line count - 1. Returns -1 if - * the offset is out of range. - *

                                - * - * @param {Number} offset a character offset. - * @returns {Number} the zero based line index or -1 if out of range. - */ - getLineAtOffset: function(offset) { - if (!(0 <= offset && offset <= this.getCharCount())) { - return -1; - } - var lineCount = this.getLineCount(); - var charCount = this.getCharCount(); - if (offset === charCount) { - return lineCount - 1; - } - var lineStart, lineEnd; - var index = this._lastLineIndex; - if (0 <= index && index < lineCount) { - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (lineStart <= offset && offset < lineEnd) { - return index; - } - } - var high = lineCount; - var low = -1; - while (high - low > 1) { - index = Math.floor((high + low) / 2); - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (offset <= lineStart) { - high = index; - } else if (offset < lineEnd) { - high = index; - break; - } else { - low = index; - } - } - this._lastLineIndex = high; - return high; - }, - /** - * Returns the number of lines in the model. - *

                                - * The model always has at least one line. - *

                                - * - * @returns {Number} the number of lines. - */ - getLineCount: function() { - return this._lineOffsets.length; - }, - /** - * Returns the line delimiter that is used by the editor - * when inserting new lines. New lines entered using key strokes - * and paste operations use this line delimiter. - * - * @return {String} the line delimiter that is used by the editor when inserting new lines. - */ - getLineDelimiter: function() { - return this._lineDelimiter; - }, - /** - * Returns the end character offset for the given line. - *

                                - * The end offset is not inclusive. This means that when the line delimiter is included, the - * offset is either the start offset of the next line or char count. When the line delimiter is - * not included, the offset is the offset of the line delimiter. - *

                                - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @return {Number} the line end offset or -1 if out of range. - * - * @see #getLineStart - */ - getLineEnd: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return -1; - } - if (lineIndex + 1 < lineCount) { - var end = this._lineOffsets[lineIndex + 1]; - if (includeDelimiter) { - return end; - } - var text = this.getText(Math.max(0, end - 2), end); - var i = text.length, c; - while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) { - i--; - } - return end - (text.length - i); - } else { - return this.getCharCount(); - } - }, - /** - * Returns the start character offset for the given line. - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @return {Number} the line start offset or -1 if out of range. - * - * @see #getLineEnd - */ - getLineStart: function(lineIndex) { - if (!(0 <= lineIndex && lineIndex < this.getLineCount())) { - return -1; - } - return this._lineOffsets[lineIndex]; - }, - /** - * Returns the text for the given range. - *

                                - * The end offset is not inclusive. This means that character at the end offset - * is not included in the returned text. - *

                                - * - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var offset = 0, chunk = 0, length; - while (chunk - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanging}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {String} text the text that is about to be inserted in the model. - * @param {Number} start the character offset in the model where the change will occur. - * @param {Number} removedCharCount the number of characters being removed from the model. - * @param {Number} addedCharCount the number of characters being added to the model. - * @param {Number} removedLineCount the number of lines being removed from the model. - * @param {Number} addedLineCount the number of lines being added to the model. - */ - onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanging) { - l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Notifies all listeners that the text has changed. - *

                                - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanged}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {Number} start the character offset in the model where the change occurred. - * @param {Number} removedCharCount the number of characters removed from the model. - * @param {Number} addedCharCount the number of characters added to the model. - * @param {Number} removedLineCount the number of lines removed from the model. - * @param {Number} addedLineCount the number of lines added to the model. - */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanged) { - l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The end offset is not inclusive. This means that the character at the - * end offset is not replaced. - *

                                - *

                                - * The text model must notify the listeners before and after the - * the text is changed by calling {@link #onChanging} and {@link #onChanged} - * respectively. - *

                                - * - * @param {String} [text=""] the new text. - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #getText - */ - setText: function(text, start, end) { - if (text === undefined) { text = ""; } - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var startLine = this.getLineAtOffset(start); - var endLine = this.getLineAtOffset(end); - var eventStart = start; - var removedCharCount = end - start; - var removedLineCount = endLine - startLine; - var addedCharCount = text.length; - var addedLineCount = 0; - var lineCount = this.getLineCount(); - - var cr = 0, lf = 0, index = 0; - var newLineOffsets = []; - while (true) { - if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); } - if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); } - if (lf === -1 && cr === -1) { break; } - if (cr !== -1 && lf !== -1) { - if (cr + 1 === lf) { - index = lf + 1; - } else { - index = (cr < lf ? cr : lf) + 1; - } - } else if (cr !== -1) { - index = cr + 1; - } else { - index = lf + 1; - } - newLineOffsets.push(start + index); - addedLineCount++; - } - - this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - - //TODO this should be done the loops below to avoid getText() - if (newLineOffsets.length === 0) { - var startLineOffset = this.getLineStart(startLine), endLineOffset; - if (endLine + 1 < lineCount) { - endLineOffset = this.getLineStart(endLine + 1); - } else { - endLineOffset = this.getCharCount(); - } - if (start !== startLineOffset) { - text = this.getText(startLineOffset, start) + text; - start = startLineOffset; - } - if (end !== endLineOffset) { - text = text + this.getText(end, endLineOffset); - end = endLineOffset; - } - } - - var changeCount = addedCharCount - removedCharCount; - for (var j = startLine + removedLineCount + 1; j < lineCount; j++) { - this._lineOffsets[j] += changeCount; - } - var args = [startLine + 1, removedLineCount].concat(newLineOffsets); - Array.prototype.splice.apply(this._lineOffsets, args); - - var offset = 0, chunk = 0, length; - while (chunk - - - - - - - - - - - - - - -
                                - -
                                -
                                - -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/orion.html b/branches/firebug1.5/sandbox/sandbox/orion/orion.html deleted file mode 100644 index c41a5668..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/orion.html +++ /dev/null @@ -1,1449 +0,0 @@ - - - - - - - - - - - - - - - -
                                - -
                                -
                                - -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/brkp_obj.gif b/branches/firebug1.5/sandbox/sandbox/orion/samples/brkp_obj.gif deleted file mode 100644 index a831fe72..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion/samples/brkp_obj.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/browserEditor.html b/branches/firebug1.5/sandbox/sandbox/orion/samples/browserEditor.html deleted file mode 100644 index 1f18d4b1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/browserEditor.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -Performance Test - - - - -

                                Performance of content editable iframe with large amount of text and styles

                                - -

                                -
                                -create editor -create editor (without styles) -create editor with lines (no styles) -clear editor -
                                - - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/console.js b/branches/firebug1.5/sandbox/sandbox/orion/samples/console.js deleted file mode 100644 index 9f398e69..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/console.js +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global window setTimeout */ - -function log (text) { - var console = window.document.getElementById('console'); - if (!console) { return; } - for (var n = 1; n < arguments.length; n++) { - text += " "; - text += arguments[n]; - } - - var document = console.contentWindow.document; - var t = document.createTextNode(text); - document.body.appendChild(t); - var br = document.createElement("br"); - document.body.appendChild(br); - if (!console.scroll) { - console.scroll = true; - setTimeout(function() { - document.body.lastChild.scrollIntoView(false); - console.scroll = false; - }, 0); - } - - //IE (causes all kinds of weird behaviour) -// console.log(text); -} - -function clearLog () { - var console = window.document.getElementById('console'); - if (!console) { return; } - var document = console.contentWindow.document; - var body = document.body; - while (body.hasChildNodes()) { body.removeChild(body.lastChild); } -} diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/cr.png b/branches/firebug1.5/sandbox/sandbox/orion/samples/cr.png deleted file mode 100644 index e38fdc17..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion/samples/cr.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/demo.html b/branches/firebug1.5/sandbox/sandbox/orion/samples/demo.html deleted file mode 100644 index 638d73b7..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/demo.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - -Orion Editor Demo - - - - - - - - - - - - -

                                Orion Editor Demo

                                - - - - - - - - - - -
                                EditorConsole
                                -
                                -Create the editor by clicking one of the buttons at the bottom. -
                                -
                                -
                                - -
                                -
                                -Java file -JavaScript file -Plain Text -Bidi Text | -ClearConsole | -test -PageDown Scroll -PageUp Scroll -LineDown Scroll -LineUp Scroll - -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/editor.css b/branches/firebug1.5/sandbox/sandbox/orion/samples/editor.css deleted file mode 100644 index 1a3a6f5a..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/editor.css +++ /dev/null @@ -1,93 +0,0 @@ -.editor { - background-color: white; -} - -.editorContainer { - font-family: monospace; - font-size: 10pt; -} - -.editorContent { -} - -.token_comment { - color: green; -} - -.token_javadoc { - color: #00008F; -} - -.token_string { - color: blue; -} - -.token_keyword { - color: darkred; - font-weight: bold; -} - -.token_bracket_outline { - outline: 1px solid red; -} - -.token_bracket { - color: white; - background-color: grey; -} - -.token_space { - background-image: url('/editor/samples/space.png'); - background-repeat: no-repeat; - background-position: center center; -} - -.token_tab { - background-image: url('/editor/samples/tab.png'); - background-repeat: no-repeat; - background-position: left center; -} - -.line_caret { - background-color: #EAF2FE; -} - -.ruler_annotation { - background-color: #e1ebfb; - width: 16px; -} - -.ruler_annotation_todo { -} - -.ruler_annotation_todo_overview { - background-color: lightgreen; - border: 1px solid green; -} - -.ruler_annotation_breakpoint { -} - -.ruler_annotation_breakpoint_overview { - background-color: lightblue; - border: 1px solid blue; -} - -.ruler_lines { - background-color: #e1ebfb; - border-right: 1px solid #b1badf; - text-align: right; -} - -.ruler_overview { - background-color: #e1ebfb; -} - -.ruler_lines_even { - background-color: #e1ebfb; -} - -.ruler_lines_odd { - background-color: white; -} - diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/rulers.js b/branches/firebug1.5/sandbox/sandbox/orion/samples/rulers.js deleted file mode 100644 index 1d0b86da..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/rulers.js +++ /dev/null @@ -1,208 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -var eclipse = eclipse || {}; - -eclipse.Ruler = (function() { - function Ruler (rulerLocation, rulerOverview, rulerStyle) { - this._location = rulerLocation || "left"; - this._overview = rulerOverview || "page"; - this._rulerStyle = rulerStyle; - this._editor = null; - } - Ruler.prototype = { - setEditor: function (editor) { - if (this._onModelChanged && this._editor) { - this._editor.removeEventListener("ModelChanged", this, this._onModelChanged); - } - this._editor = editor; - if (this._onModelChanged && this._editor) { - this._editor.addEventListener("ModelChanged", this, this._onModelChanged); - } - }, - getLocation: function() { - return this._location; - }, - getOverview: function(editor) { - return this._overview; - } - }; - return Ruler; -}()); - -eclipse.LineNumberRuler = (function() { - function LineNumberRuler (rulerLocation, rulerStyle, oddStyle, evenStyle) { - eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle); - this._oddStyle = oddStyle || {style: {backgroundColor: "white"}}; - this._evenStyle = evenStyle || {style: {backgroundColor: "white"}}; - this._numOfDigits = 0; - } - LineNumberRuler.prototype = new eclipse.Ruler(); - LineNumberRuler.prototype.getStyle = function(lineIndex) { - if (lineIndex === undefined) { - return this._rulerStyle; - } else { - return lineIndex & 1 ? this._oddStyle : this._evenStyle; - } - }; - LineNumberRuler.prototype.getHTML = function(lineIndex) { - if (lineIndex === -1) { - var model = this._editor.getModel(); - return model.getLineCount(); - } else { - return lineIndex + 1; - } - }; - LineNumberRuler.prototype._onModelChanged = function(e) { - var start = e.start; - var model = this._editor.getModel(); - var lineCount = model.getLineCount(); - var numOfDigits = (lineCount+"").length; - if (this._numOfDigits !== numOfDigits) { - this._numOfDigits = numOfDigits; - var startLine = model.getLineAtOffset(start); - this._editor.redrawLines(startLine, lineCount, this); - } - }; - return LineNumberRuler; -}()); - -eclipse.AnnotationRuler = (function() { - function AnnotationRuler (rulerLocation, rulerStyle, defaultAnnotation) { - eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle); - this._defaultAnnotation = defaultAnnotation; - this._annotations = []; - } - AnnotationRuler.prototype = new eclipse.Ruler(); - AnnotationRuler.prototype.clearAnnotations = function() { - this._annotations = []; - var lineCount = this._editor.getModel().getLineCount(); - this._editor.redrawLines(0, lineCount, this); - if (this._overviewRuler) { - this._editor.redrawLines(0, lineCount, this._overviewRuler); - } - }; - AnnotationRuler.prototype.getAnnotation = function(lineIndex) { - return this._annotations[lineIndex]; - }; - AnnotationRuler.prototype.getAnnotations = function() { - return this._annotations; - }; - AnnotationRuler.prototype.getStyle = function(lineIndex) { - switch (lineIndex) { - case undefined: - return this._rulerStyle; - case -1: - return this._defaultAnnotation ? this._defaultAnnotation.style : null; - default: - return this._annotations[lineIndex] && this._annotations[lineIndex].style ? this._annotations[lineIndex].style : null; - } - }; - AnnotationRuler.prototype.getHTML = function(lineIndex) { - if (lineIndex === -1) { - return this._defaultAnnotation ? this._defaultAnnotation.html : ""; - } else { - return this._annotations[lineIndex] && this._annotations[lineIndex].html ? this._annotations[lineIndex].html : ""; - } - }; - AnnotationRuler.prototype.setAnnotation = function(lineIndex, annotation) { - if (lineIndex === undefined) { return; } - this._annotations[lineIndex] = annotation; - this._editor.redrawLines(lineIndex, lineIndex + 1, this); - if (this._overviewRuler) { - this._editor.redrawLines(lineIndex, lineIndex + 1, this._overviewRuler); - } - }; AnnotationRuler.prototype._onModelChanged = function(e) { - var start = e.start; - var removedLineCount = e.removedLineCount; - var addedLineCount = e.addedLineCount; - var linesChanged = addedLineCount - removedLineCount; - if (linesChanged) { - var model = this._editor.getModel(); - var startLine = model.getLineAtOffset(start); - var newLines = [], lines = this._annotations; - var changed = false; - for (var prop in lines) { - var i = prop >>> 0; - if (!(startLine < i && i < startLine + removedLineCount)) { - var newIndex = i; - if (i > startLine) { - newIndex += linesChanged; - changed = true; } - newLines[newIndex] = lines[i]; - } else { - changed = true; - } - } - this._annotations = newLines; - if (changed) { - var lineCount = model.getLineCount(); - this._editor.redrawLines(startLine, lineCount, this); - //TODO redraw overview (batch it for performance) - if (this._overviewRuler) { - this._editor.redrawLines(0, lineCount, this._overviewRuler); - } - } - } - }; - return AnnotationRuler; -}()); - -eclipse.OverviewRuler = (function() { - function OverviewRuler (rulerLocation, rulerStyle, annotationRuler) { - eclipse.Ruler.call(this, rulerLocation, "document", rulerStyle); - this._annotationRuler = annotationRuler; - if (annotationRuler) { - annotationRuler._overviewRuler = this; - } - } - OverviewRuler.prototype = new eclipse.Ruler(); - OverviewRuler.prototype.getAnnotations = function() { - var annotations = this._annotationRuler.getAnnotations(); - var lines = []; - for (var prop in annotations) { - var i = prop >>> 0; - if (annotations[i] !== undefined) { - lines.push(i); - } - } - return lines; - }; - OverviewRuler.prototype.getStyle = function(lineIndex) { - var result, style; - if (lineIndex === undefined) { - result = this._rulerStyle || {}; - style = result.style || (result.style = {}); - style.lineHeight = "1px"; - style.fontSize = "1px"; - style.width = "14px"; - } else { - if (lineIndex !== -1) { - var annotation = this._annotationRuler.getAnnotation(lineIndex); - result = annotation.overviewStyle || {}; - } else { - result = {}; - } - style = result.style || (result.style = {}); - style.cursor = "pointer"; - style.width = "8px"; - style.height = "3px"; - style.left = "2px"; - } - return result; - }; - OverviewRuler.prototype.getHTML = function(lineIndex) { - return " "; - }; - OverviewRuler.prototype.onClick = function(lineIndex, e) { - if (lineIndex === undefined) { return; } - this._editor.setTopIndex(lineIndex); - }; - return OverviewRuler; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/space.png b/branches/firebug1.5/sandbox/sandbox/orion/samples/space.png deleted file mode 100644 index 9cb0a47d..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion/samples/space.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/styler.js b/branches/firebug1.5/sandbox/sandbox/orion/samples/styler.js deleted file mode 100644 index 7416af74..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/styler.js +++ /dev/null @@ -1,704 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global document window navigator */ - -var eclipse = eclipse || {}; - -eclipse.TextStyler = (function() { - - var JS_KEYWORDS = - ["break", "continue", "do", "for", /*"import",*/ "new", "this", /*"void",*/ - "case", "default", "else", "function", "in", "return", "typeof", "while", - "comment", "delete", "export", "if", /*"label",*/ "switch", "var", "with", - "abstract", "implements", "protected", /*"boolean",*/ /*"instanceOf",*/ "public", - /*"byte", "int", "short", "char",*/ "interface", "static", - /*"double", "long",*/ "synchronized", "false", /*"native",*/ "throws", - "final", "null", "transient", /*"float",*/ "package", "true", - "goto", "private", "catch", "enum", "throw", "class", "extends", "try", - "const", "finally", "debugger", "super", "undefined"]; - - var JAVA_KEYWORDS = - ["abstract", - "boolean", "break", "byte", - "case", "catch", "char", "class", "continue", - "default", "do", "double", - "else", "extends", - "false", "final", "finally", "float", "for", - "if", "implements", "import", "instanceof", "int", "interface", - "long", - "native", "new", "null", - "package", "private", "protected", "public", - "return", - "short", "static", "super", "switch", "synchronized", - "this", "throw", "throws", "transient", "true", "try", - "void", "volatile", - "while"]; - - var CSS_KEYWORDS = - ["color", "text-align", "text-indent", "text-decoration", - "font", "font-style", "font-family", "font-weight", "font-size", "font-variant", "line-height", - "background", "background-color", "background-image", "background-position", "background-repeat", "background-attachment", - "list-style", "list-style-image", "list-style-position", "list-style-type", - "outline", "outline-color", "outline-style", "outline-width", - "border", "border-left", "border-top", "border-bottom", "border-right", "border-color", "border-width", "border-style", - "border-bottom-color", "border-bottom-style", "border-bottom-width", - "border-left-color", "border-left-style", "border-left-width", - "border-top-color", "border-top-style", "border-top-width", - "border-right-color", "border-right-style", "border-right-width", - "padding", "padding-left", "padding-top", "padding-bottom", "padding-right", - "margin", "margin-left", "margin-top", "margin-bottom", "margin-right", - "width", "height", "left", "top", "right", "bottom", - "min-width", "max-width", "min-height", "max-height", - "display", "visibility", - "clip", "cursor", "overflow", "overflow-x", "overflow-y", "position", "z-index", - "vertical-align", "horizontal-align", - "float", "clear" - ]; - - // Scanner constants - var UNKOWN = 1; - var KEYWORD = 2; - var STRING = 3; - var COMMENT = 4; - var WHITE = 5; - var WHITE_TAB = 6; - var WHITE_SPACE = 7; - - // Styles - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent); - var commentStyle = {styleClass: "token_comment"}; - var javadocStyle = {styleClass: "token_javadoc"}; - var stringStyle = {styleClass: "token_string"}; - var keywordStyle = {styleClass: "token_keyword"}; - var spaceStyle = {styleClass: "token_space"}; - var tabStyle = {styleClass: "token_tab"}; - var bracketStyle = {styleClass: isIE ? "token_bracket" : "token_bracket_outline"}; - var caretLineStyle = {styleClass: "line_caret"}; - - var Scanner = (function() { - function Scanner (keywords, whitespacesVisible) { - this.keywords = keywords; - this.whitespacesVisible = whitespacesVisible; - this.setText(""); - } - - Scanner.prototype = { - getOffset: function() { - return this.offset; - }, - getStartOffset: function() { - return this.startOffset; - }, - getData: function() { - return this.text.substring(this.startOffset, this.offset); - }, - getDataLength: function() { - return this.offset - this.startOffset; - }, - _read: function() { - if (this.offset < this.text.length) { - return this.text.charCodeAt(this.offset++); - } - return -1; - }, - _unread: function(c) { - if (c !== -1) { this.offset--; } - }, - nextToken: function() { - this.startOffset = this.offset; - while (true) { - var c = this._read(); - switch (c) { - case -1: return null; - case 47: // SLASH -> comment - c = this._read(); - if (c === 47) { - while (true) { - c = this._read(); - if ((c === -1) || (c === 10)) { - this._unread(c); - return COMMENT; - } - } - } - this._unread(c); - return UNKOWN; - case 39: // SINGLE QUOTE -> char const - while(true) { - c = this._read(); - switch (c) { - case 39: - return STRING; - case -1: - this._unread(c); - return STRING; - case 92: // BACKSLASH - c = this._read(); - break; - } - } - break; - case 34: // DOUBLE QUOTE -> string - while(true) { - c = this._read(); - switch (c) { - case 34: // DOUBLE QUOTE - return STRING; - case -1: - this._unread(c); - return STRING; - case 92: // BACKSLASH - c = this._read(); - break; - } - } - break; - case 32: // SPACE - case 9: // TAB - if (this.whitespacesVisible) { - return c === 32 ? WHITE_SPACE : WHITE_TAB; - } - do { - c = this._read(); - } while(c === 32 || c === 9); - this._unread(c); - return WHITE; - default: - var isCSS = this.isCSS; - if ((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)) { //LETTER OR UNDERSCORE OR NUMBER - var off = this.offset - 1; - do { - c = this._read(); - } while((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)); //LETTER OR UNDERSCORE OR NUMBER - this._unread(c); - var word = this.text.substring(off, this.offset); - //TODO slow - for (var i=0; i 2) { - var index = (((high + low) >> 1) >> 1) << 1; - var end = offsets[index + 1]; - if (end > offset) { - high = index; - } else { - low = index; - } - } - return high; - }, - _computeComments: function(end) { - // compute comments between commentOffset and end - if (end <= this.commentOffset) { return; } - var model = this.editor.getModel(); - var charCount = model.getCharCount(); - var e = end; - // Uncomment to compute all comments -// e = charCount; - var t = /*start == this.commentOffset && e == end ? text : */model.getText(this.commentOffset, e); - if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === charCount) { - this.commentOffsets.length--; - } - var offset = 0; - while (offset < t.length) { - var begin = (this.commentOffsets.length & 1) === 0; - var search = begin ? this.commentStart : this.commentEnd; - var index = t.indexOf(search, offset); - if (index !== -1) { - this.commentOffsets.push(this.commentOffset + (begin ? index : index + search.length)); - } else { - break; - } - offset = index + search.length; - } - if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); } - this.commentOffset = e; - }, - _getCommentRanges: function(start, end) { - this._computeComments (end); - var commentCount = this.commentOffsets.length; - var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount); - if (commentStart >= commentCount) { return []; } - if (this.commentOffsets[commentStart] > end) { return []; } - var commentEnd = Math.min(commentCount - 2, this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount)); - if (this.commentOffsets[commentEnd] > end) { commentEnd = Math.max(commentStart, commentEnd - 2); } - return this.commentOffsets.slice(commentStart, commentEnd + 2); - }, - _getLineStyle: function(lineIndex) { - if (this.highlightCaretLine) { - var editor = this.editor; - var model = this.editor.getModel(); - var selection = editor.getSelection(); - if (selection.start === selection.end && model.getLineAtOffset(selection.start) === lineIndex) { - return caretLineStyle; - } - } - return null; - }, - _getStyles: function(text, start) { - var end = start + text.length; - var model = this.editor.getModel(); - - // get comment ranges that intersect with range - var commentRanges = this._getCommentRanges (start, end); - var styles = []; - - // for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc) - var offset = start; - for (var i = 0; i < commentRanges.length; i+= 2) { - var commentStart = commentRanges[i]; - if (offset < commentStart) { - this._parse(text.substring(offset - start, commentStart - start), offset, styles); - } - var style = commentStyle; - if ((commentRanges[i+1] - commentStart) > (this.commentStart.length + this.commentEnd.length)) { - var o = commentStart + this.commentStart.length; - if (model.getText(o, o + 1) === "*") { style = javadocStyle; } - } - if (this.whitespacesVisible) { - var s = Math.max(offset, commentStart); - var e = Math.min(end, commentRanges[i+1]); - this._parseWhitespace(text.substring(s - start, e - start), s, styles, style); - } else { - styles.push({start: commentRanges[i], end: commentRanges[i+1], style: style}); - } - offset = commentRanges[i+1]; - } - if (offset < end) { - this._parse(text.substring(offset - start, end - start), offset, styles); - } - return styles; - }, - _parse: function(text, offset, styles) { - var scanner = this._scanner; - scanner.setText(text); - var token; - while ((token = scanner.nextToken())) { - var tokenStart = scanner.getStartOffset() + offset; - var style = null; - if (tokenStart === this._matchingBracket) { - style = bracketStyle; - } else { - switch (token) { - case KEYWORD: style = keywordStyle; break; - case STRING: - if (this.whitespacesVisible) { - this._parseWhitespace(scanner.getData(), tokenStart, styles, stringStyle); - continue; - } else { - style = stringStyle; - } - break; - case COMMENT: - if (this.whitespacesVisible) { - this._parseWhitespace(scanner.getData(), tokenStart, styles, commentStyle); - continue; - } else { - style = commentStyle; - } - break; - case WHITE_TAB: - if (this.whitespacesVisible) { - style = tabStyle; - } - break; - case WHITE_SPACE: - if (this.whitespacesVisible) { - style = spaceStyle; - } - break; - } - } - styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style}); - } - }, - _parseWhitespace: function(text, offset, styles, s) { - var scanner = this._whitespaceScanner; - scanner.setText(text); - var token; - while ((token = scanner.nextToken())) { - var tokenStart = scanner.getStartOffset() + offset; - var style = s; - switch (token) { - case WHITE_TAB: - style = tabStyle; - break; - case WHITE_SPACE: - style = spaceStyle; - break; - } - styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style}); - } - }, - _findBrackets: function(bracket, closingBracket, text, textOffset, start, end) { - var result = []; - - // get comment ranges that intersect with range - var commentRanges = this._getCommentRanges (start, end); - - // for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc) - var offset = start, scanner = this._scanner, token, tokenData; - for (var i = 0; i < commentRanges.length; i+= 2) { - var commentStart = commentRanges[i]; - if (offset < commentStart) { - scanner.setText(text.substring(offset - start, commentStart - start)); - while ((token = scanner.nextToken())) { - if (scanner.getDataLength() !== 1) { continue; } - tokenData = scanner.getData(); - if (tokenData === bracket) { - result.push(scanner.getStartOffset() + offset - start + textOffset); - } - if (tokenData === closingBracket) { - result.push(-(scanner.getStartOffset() + offset - start + textOffset)); - } - } - } - offset = commentRanges[i+1]; - } - if (offset < end) { - scanner.setText(text.substring(offset - start, end - start)); - while ((token = scanner.nextToken())) { - if (scanner.getDataLength() !== 1) { continue; } - tokenData = scanner.getData(); - if (tokenData === bracket) { - result.push(scanner.getStartOffset() + offset - start + textOffset); - } - if (tokenData === closingBracket) { - result.push(-(scanner.getStartOffset() + offset - start + textOffset)); - } - } - } - return result; - }, - _onDestroy: function(e) { - this.destroy(); - }, - _onLineStyle: function (e) { - e.style = this._getLineStyle(e.lineIndex); - e.ranges = this._getStyles(e.lineText, e.lineStart); - }, - _onSelection: function(e) { - var oldSelection = e.oldValue; - var newSelection = e.newValue; - var editor = this.editor; - var model = editor.getModel(); - var lineIndex; - if (this._matchingBracket !== undefined) { - lineIndex = model.getLineAtOffset(this._matchingBracket); - editor.redrawLines(lineIndex, lineIndex + 1); - this._matchingBracket = this._currentBracket = undefined; - } - if (this.highlightCaretLine) { - var oldLineIndex = model.getLineAtOffset(oldSelection.start); - lineIndex = model.getLineAtOffset(newSelection.start); - var newEmpty = newSelection.start === newSelection.end; - var oldEmpty = oldSelection.start === oldSelection.end; - if (!(oldLineIndex === lineIndex && oldEmpty && newEmpty)) { - if (oldEmpty) { - editor.redrawLines(oldLineIndex, oldLineIndex + 1); - } - if ((oldLineIndex !== lineIndex || !oldEmpty) && newEmpty) { - editor.redrawLines(lineIndex, lineIndex + 1); - } - } - } - if (newSelection.start !== newSelection.end || newSelection.start === 0) { - return; - } - var caret = editor.getCaretOffset(); - if (caret === 0) { return; } - var brackets = "{}()[]<>"; - var bracket = model.getText(caret - 1, caret); - var bracketIndex = brackets.indexOf(bracket, 0); - if (bracketIndex === -1) { return; } - var closingBracket; - if (bracketIndex & 1) { - closingBracket = brackets.substring(bracketIndex - 1, bracketIndex); - } else { - closingBracket = brackets.substring(bracketIndex + 1, bracketIndex + 2); - } - lineIndex = model.getLineAtOffset(caret); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var i=0; i= 0 ? 1 : -1; - if (brackets[i] * sign === caret - 1) { - var level = 1; - this._currentBracket = brackets[i] * sign; - if (bracketIndex & 1) { - i--; - for (; i>=0; i--) { - sign = brackets[i] >= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[i] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex -= 1; - while (lineIndex >= 0) { - lineText = model.getLine(lineIndex); - lineStart = model.getLineStart(lineIndex); - lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var j=brackets.length - 1; j>=0; j--) { - sign = brackets[j] >= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[j] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex--; - } - } else { - i++; - for (; i= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[i] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex += 1; - var lineCount = model.getLineCount (); - while (lineIndex < lineCount) { - lineText = model.getLine(lineIndex); - lineStart = model.getLineStart(lineIndex); - lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var k=0; k= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[k] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex++; - } - } - break; - } - } - }, - _onModelChanged: function(e) { - var start = e.start; - var removedCharCount = e.removedCharCount; - var addedCharCount = e.addedCharCount; - if (this._matchingBracket && start < this._matchingBracket) { this._matchingBracket += addedCharCount + removedCharCount; } - if (this._currentBracket && start < this._currentBracket) { this._currentBracket += addedCharCount + removedCharCount; } - if (start >= this.commentOffset) { return; } - var model = this.editor.getModel(); - -// window.console.log("start=" + start + " added=" + addedCharCount + " removed=" + removedCharCount) -// for (var i=0; i< this.commentOffsets.length; i++) { -// window.console.log(i +"="+ this.commentOffsets[i]); -// } - - var commentCount = this.commentOffsets.length; - var extra = Math.max(this.commentStart.length - 1, this.commentEnd.length - 1); - if (commentCount === 0) { - this.commentOffset = Math.max(0, start - extra); - return; - } - var charCount = model.getCharCount(); - var oldCharCount = charCount - addedCharCount + removedCharCount; - var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount); - var end = start + removedCharCount; - var commentEnd = this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount); -// window.console.log("s=" + commentStart + " e=" + commentEnd); - var ts; - if (commentStart > 0) { - ts = this.commentOffsets[--commentStart]; - } else { - ts = Math.max(0, Math.min(this.commentOffsets[commentStart], start) - extra); - --commentStart; - } - var te; - var redrawEnd = charCount; - if (commentEnd + 1 < this.commentOffsets.length) { - te = this.commentOffsets[++commentEnd]; - if (end > (te - this.commentEnd.length)) { - if (commentEnd + 2 < this.commentOffsets.length) { - commentEnd += 2; - te = this.commentOffsets[commentEnd]; - redrawEnd = te + 1; - if (redrawEnd > start) { redrawEnd += addedCharCount - removedCharCount; } - } else { - te = Math.min(oldCharCount, end + extra); - this.commentOffset = te; - } - } - } else { - te = Math.min(oldCharCount, end + extra); - this.commentOffset = te; - if (commentEnd > 0 && commentEnd === this.commentOffsets.length) { - commentEnd = this.commentOffsets.length - 1; - } - } - if (ts > start) { ts += addedCharCount - removedCharCount; } - if (te > start) { te += addedCharCount - removedCharCount; } - -// window.console.log("commentStart="+ commentStart + " commentEnd=" + commentEnd + " ts=" + ts + " te=" + te) - - if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === oldCharCount) { - this.commentOffsets.length--; - } - - var offset = 0; - var newComments = []; - var t = model.getText(ts, te); - if (this.commentOffset < te) { this.commentOffset = te; } - while (offset < t.length) { - var begin = ((commentStart + 1 + newComments.length) & 1) === 0; - var search = begin ? this.commentStart : this.commentEnd; - var index = t.indexOf(search, offset); - if (index !== -1) { - newComments.push(ts + (begin ? index : index + search.length)); - } else { - break; - } - offset = index + search.length; - } -// window.console.log("lengths=" + newComments.length + " " + (commentEnd - commentStart) + " t=<" + t + ">") -// for (var i=0; i< newComments.length; i++) { -// window.console.log(i +"=>"+ newComments[i]); -// } - var redraw = (commentEnd - commentStart) !== newComments.length; - if (!redraw) { - for (var i=0; i start) { offset += addedCharCount - removedCharCount; } - if (offset !== newComments[i]) { - redraw = true; - break; - } - } - } - - var args = [commentStart + 1, (commentEnd - commentStart)].concat(newComments); - Array.prototype.splice.apply(this.commentOffsets, args); - for (var k=commentStart + 1 + newComments.length; k< this.commentOffsets.length; k++) { - this.commentOffsets[k] += addedCharCount - removedCharCount; - } - - if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); } - - if (redraw) { -// window.console.log ("redraw " + (start + addedCharCount) + " " + redrawEnd); - this.editor.redrawRange(start + addedCharCount, redrawEnd); - } - -// for (var i=0; i< this.commentOffsets.length; i++) { -// window.console.log(i +"="+ this.commentOffsets[i]); -// } - - } - }; - return TextStyler; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/styles.txt b/branches/firebug1.5/sandbox/sandbox/orion/samples/styles.txt deleted file mode 100644 index 98677e34..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/styles.txt +++ /dev/null @@ -1,64602 +0,0 @@ -0;80;0;false;false;63;95;191;;; -80;3;0;false;false;;;;;; -83;1;0;false;false;63;95;191;;; -84;1;0;false;false;;;;;; -85;9;0;false;false;63;95;191;;; -94;1;0;false;false;;;;;; -95;3;0;false;false;63;95;191;;; -98;1;0;false;false;;;;;; -99;5;0;false;false;63;95;191;;; -104;1;0;false;false;;;;;; -105;4;0;false;false;63;95;191;;; -109;1;0;false;false;;;;;; -110;3;0;false;false;63;95;191;;; -113;1;0;false;false;;;;;; -114;11;0;false;false;63;95;191;;; -125;1;0;false;false;;;;;; -126;3;0;false;false;63;95;191;;; -129;1;0;false;false;;;;;; -130;7;0;false;false;63;95;191;;; -137;3;0;false;false;;;;;; -140;1;0;false;false;63;95;191;;; -141;1;0;false;false;;;;;; -142;3;0;false;false;63;95;191;;; -145;1;0;false;false;;;;;; -146;6;0;false;false;63;95;191;;; -152;1;0;false;false;;;;;; -153;9;0;false;false;63;95;191;;; -162;1;0;false;false;;;;;; -163;4;0;false;false;63;95;191;;; -167;1;0;false;false;;;;;; -168;7;0;false;false;63;95;191;;; -175;1;0;false;false;;;;;; -176;3;0;false;false;63;95;191;;; -179;1;0;false;false;;;;;; -180;3;0;false;false;63;95;191;;; -183;1;0;false;false;;;;;; -184;12;0;false;false;63;95;191;;; -196;1;0;false;false;;;;;; -197;9;0;false;false;63;95;191;;; -206;3;0;false;false;;;;;; -209;1;0;false;false;63;95;191;;; -210;1;0;false;false;;;;;; -211;3;0;false;false;63;95;191;;; -214;1;0;false;false;;;;;; -215;4;0;false;false;63;95;191;;; -219;1;0;false;false;;;;;; -220;9;0;false;false;63;95;191;;; -229;1;0;false;false;;;;;; -230;5;0;false;false;63;95;191;;; -235;1;0;false;false;;;;;; -236;3;0;false;false;63;95;191;;; -239;1;0;false;false;;;;;; -240;5;0;false;false;63;95;191;;; -245;1;0;false;false;;;;;; -246;2;0;false;false;63;95;191;;; -248;1;0;false;false;;;;;; -249;3;0;false;false;63;95;191;;; -252;1;0;false;false;;;;;; -253;7;0;false;false;63;95;191;;; -260;1;0;false;false;;;;;; -261;6;0;false;false;63;95;191;;; -267;1;0;false;false;;;;;; -268;7;0;false;false;63;95;191;;; -275;1;0;false;false;;;;;; -276;4;0;false;false;63;95;191;;; -280;3;0;false;false;;;;;; -283;1;0;false;false;63;95;191;;; -284;1;0;false;false;;;;;; -285;5;0;false;false;63;95;191;;; -290;1;0;false;false;;;;;; -291;11;0;false;false;63;95;191;;; -302;1;0;false;false;;;;;; -303;4;0;false;false;63;95;191;;; -307;1;0;false;false;;;;;; -308;13;0;false;false;63;95;191;;; -321;1;0;false;false;;;;;; -322;3;0;false;false;63;95;191;;; -325;1;0;false;false;;;;;; -326;2;0;false;false;63;95;191;;; -328;1;0;false;false;;;;;; -329;9;0;false;false;63;95;191;;; -338;1;0;false;false;;;;;; -339;2;0;false;false;63;95;191;;; -341;3;0;false;false;;;;;; -344;1;0;false;false;63;95;191;;; -345;1;0;false;false;;;;;; -346;32;0;false;false;63;95;191;;; -378;1;0;false;false;127;127;159;;; -379;8;0;false;false;63;95;191;;; -387;3;0;false;false;;;;;; -390;1;0;false;false;63;95;191;;; -391;3;0;false;false;;;;;; -394;1;0;false;false;63;95;191;;; -395;1;0;false;false;;;;;; -396;13;0;false;false;63;95;191;;; -409;3;0;false;false;;;;;; -412;1;0;false;false;63;95;191;;; -413;5;0;false;false;;;;;; -418;3;0;false;false;63;95;191;;; -421;1;0;false;false;;;;;; -422;11;0;false;false;63;95;191;;; -433;1;0;false;false;;;;;; -434;1;0;false;false;127;127;159;;; -435;1;0;false;false;;;;;; -436;7;0;false;false;63;95;191;;; -443;1;0;false;false;;;;;; -444;3;0;false;false;63;95;191;;; -447;1;0;false;false;;;;;; -448;3;0;false;false;63;95;191;;; -451;1;0;false;false;;;;;; -452;14;0;false;false;63;95;191;;; -466;3;0;false;false;;;;;; -469;80;0;false;false;63;95;191;;; -549;2;0;false;false;;;;;; -551;7;1;false;false;127;0;85;;; -558;1;0;false;false;;;;;; -559;23;0;false;false;0;0;0;;; -582;6;0;false;false;;;;;; -588;6;1;false;false;127;0;85;;; -594;1;0;false;false;;;;;; -595;12;0;false;false;0;0;0;;; -607;4;0;false;false;;;;;; -611;6;1;false;false;127;0;85;;; -617;1;0;false;false;;;;;; -618;18;0;false;false;0;0;0;;; -636;2;0;false;false;;;;;; -638;6;1;false;false;127;0;85;;; -644;1;0;false;false;;;;;; -645;32;0;false;false;0;0;0;;; -677;2;0;false;false;;;;;; -679;6;1;false;false;127;0;85;;; -685;1;0;false;false;;;;;; -686;22;0;false;false;0;0;0;;; -708;2;0;false;false;;;;;; -710;6;1;false;false;127;0;85;;; -716;1;0;false;false;;;;;; -717;25;0;false;false;0;0;0;;; -742;2;0;false;false;;;;;; -744;6;1;false;false;127;0;85;;; -750;1;0;false;false;;;;;; -751;27;0;false;false;0;0;0;;; -778;2;0;false;false;;;;;; -780;6;1;false;false;127;0;85;;; -786;1;0;false;false;;;;;; -787;27;0;false;false;0;0;0;;; -814;2;0;false;false;;;;;; -816;6;1;false;false;127;0;85;;; -822;1;0;false;false;;;;;; -823;27;0;false;false;0;0;0;;; -850;2;0;false;false;;;;;; -852;6;1;false;false;127;0;85;;; -858;1;0;false;false;;;;;; -859;26;0;false;false;0;0;0;;; -885;4;0;false;false;;;;;; -889;3;0;false;false;63;95;191;;; -892;3;0;false;false;;;;;; -895;1;0;false;false;63;95;191;;; -896;1;0;false;false;;;;;; -897;1;0;false;false;63;95;191;;; -898;1;0;false;false;;;;;; -899;10;0;false;false;63;95;191;;; -909;1;0;false;false;;;;;; -910;2;0;false;false;63;95;191;;; -912;1;0;false;false;;;;;; -913;2;0;false;false;63;95;191;;; -915;1;0;false;false;;;;;; -916;8;0;false;false;63;95;191;;; -924;1;0;false;false;;;;;; -925;4;0;false;false;63;95;191;;; -929;1;0;false;false;;;;;; -930;9;0;false;false;63;95;191;;; -939;1;0;false;false;;;;;; -940;6;0;false;false;63;95;191;;; -946;1;0;false;false;;;;;; -947;4;0;false;false;63;95;191;;; -951;1;0;false;false;;;;;; -952;8;0;false;false;63;95;191;;; -960;1;0;false;false;;;;;; -961;5;0;false;false;63;95;191;;; -966;4;0;false;false;;;;;; -970;1;0;false;false;63;95;191;;; -971;1;0;false;false;;;;;; -972;2;0;false;false;63;95;191;;; -974;1;0;false;false;;;;;; -975;5;0;false;false;63;95;191;;; -980;2;0;false;false;;;;;; -982;3;0;false;false;63;95;191;;; -985;1;0;false;false;;;;;; -986;9;0;false;false;63;95;191;;; -995;1;0;false;false;;;;;; -996;5;0;false;false;63;95;191;;; -1001;1;0;false;false;;;;;; -1002;10;0;false;false;63;95;191;;; -1012;1;0;false;false;;;;;; -1013;3;0;false;false;63;95;191;;; -1016;1;0;false;false;;;;;; -1017;2;0;false;false;63;95;191;;; -1019;1;0;false;false;;;;;; -1020;7;0;false;false;63;95;191;;; -1027;1;0;false;false;;;;;; -1028;3;0;false;false;63;95;191;;; -1031;1;0;false;false;;;;;; -1032;3;0;false;false;63;95;191;;; -1035;1;0;false;false;;;;;; -1036;5;0;false;false;63;95;191;;; -1041;4;0;false;false;;;;;; -1045;1;0;false;false;63;95;191;;; -1046;1;0;false;false;;;;;; -1047;4;0;false;false;127;127;159;;; -1051;3;0;false;false;;;;;; -1054;1;0;false;false;63;95;191;;; -1055;1;0;false;false;;;;;; -1056;4;0;false;false;127;127;159;;; -1060;10;0;false;false;63;95;191;;; -1070;1;0;false;false;;;;;; -1071;5;0;false;false;63;95;191;;; -1076;4;0;false;false;;;;;; -1080;1;0;false;false;63;95;191;;; -1081;1;0;false;false;;;;;; -1082;4;0;false;false;127;127;159;;; -1086;10;0;false;false;63;95;191;;; -1096;1;0;false;false;;;;;; -1097;5;0;false;false;63;95;191;;; -1102;3;0;false;false;;;;;; -1105;1;0;false;false;63;95;191;;; -1106;1;0;false;false;;;;;; -1107;4;0;false;false;127;127;159;;; -1111;4;0;false;false;63;95;191;;; -1115;1;0;false;false;;;;;; -1116;5;0;false;false;63;95;191;;; -1121;1;0;false;false;;;;;; -1122;6;0;false;false;63;95;191;;; -1128;1;0;false;false;;;;;; -1129;7;0;false;false;63;95;191;;; -1136;1;0;false;false;;;;;; -1137;4;0;false;false;63;95;191;;; -1141;1;0;false;false;127;127;159;;; -1142;7;0;false;false;63;95;191;;; -1149;1;0;false;false;;;;;; -1150;8;0;false;false;63;95;191;;; -1158;3;0;false;false;;;;;; -1161;1;0;false;false;63;95;191;;; -1162;1;0;false;false;;;;;; -1163;4;0;false;false;127;127;159;;; -1167;9;0;false;false;63;95;191;;; -1176;3;0;false;false;;;;;; -1179;1;0;false;false;63;95;191;;; -1180;1;0;false;false;;;;;; -1181;4;0;false;false;127;127;159;;; -1185;9;0;false;false;63;95;191;;; -1194;3;0;false;false;;;;;; -1197;1;0;false;false;63;95;191;;; -1198;1;0;false;false;;;;;; -1199;5;0;false;false;127;127;159;;; -1204;3;0;false;false;;;;;; -1207;1;0;false;false;63;95;191;;; -1208;1;0;false;false;;;;;; -1209;3;0;false;false;127;127;159;;; -1212;3;0;false;false;;;;;; -1215;1;0;false;false;63;95;191;;; -1216;1;0;false;false;;;;;; -1217;2;0;false;false;63;95;191;;; -1219;1;0;false;false;;;;;; -1220;8;0;false;false;63;95;191;;; -1228;1;0;false;false;;;;;; -1229;2;0;false;false;63;95;191;;; -1231;1;0;false;false;;;;;; -1232;4;0;false;false;63;95;191;;; -1236;1;0;false;false;;;;;; -1237;5;0;false;false;63;95;191;;; -1242;1;0;false;false;;;;;; -1243;11;0;false;false;63;95;191;;; -1254;1;0;false;false;;;;;; -1255;3;0;false;false;63;95;191;;; -1258;1;0;false;false;;;;;; -1259;10;0;false;false;63;95;191;;; -1269;1;0;false;false;;;;;; -1270;5;0;false;false;63;95;191;;; -1275;1;0;false;false;;;;;; -1276;2;0;false;false;63;95;191;;; -1278;1;0;false;false;;;;;; -1279;1;0;false;false;63;95;191;;; -1280;1;0;false;false;;;;;; -1281;4;0;false;false;63;95;191;;; -1285;1;0;false;false;;;;;; -1286;3;0;false;false;63;95;191;;; -1289;4;0;false;false;;;;;; -1293;1;0;false;false;63;95;191;;; -1294;1;0;false;false;;;;;; -1295;2;0;false;false;63;95;191;;; -1297;1;0;false;false;;;;;; -1298;10;0;false;false;63;95;191;;; -1308;3;0;false;false;;;;;; -1311;1;0;false;false;63;95;191;;; -1312;1;0;false;false;;;;;; -1313;4;0;false;false;127;127;159;;; -1317;3;0;false;false;;;;;; -1320;1;0;false;false;63;95;191;;; -1321;1;0;false;false;;;;;; -1322;3;0;false;false;127;127;159;;; -1325;3;0;false;false;;;;;; -1328;1;0;false;false;63;95;191;;; -1329;1;0;false;false;;;;;; -1330;5;0;false;false;63;95;191;;; -1335;1;0;false;false;;;;;; -1336;3;0;false;false;63;95;191;;; -1339;1;0;false;false;;;;;; -1340;3;0;false;false;63;95;191;;; -1343;1;0;false;false;;;;;; -1344;4;0;false;false;63;95;191;;; -1348;1;0;false;false;;;;;; -1349;2;0;false;false;63;95;191;;; -1351;1;0;false;false;;;;;; -1352;3;0;false;false;63;95;191;;; -1355;1;0;false;false;;;;;; -1356;4;0;false;false;63;95;191;;; -1360;1;0;false;false;;;;;; -1361;6;0;false;false;63;95;191;;; -1367;1;0;false;false;;;;;; -1368;4;0;false;false;63;95;191;;; -1372;1;0;false;false;;;;;; -1373;10;0;false;false;63;95;191;;; -1383;1;0;false;false;;;;;; -1384;4;0;false;false;63;95;191;;; -1388;1;0;false;false;;;;;; -1389;5;0;false;false;63;95;191;;; -1394;1;0;false;false;;;;;; -1395;12;0;false;false;63;95;191;;; -1407;5;0;false;false;;;;;; -1412;1;0;false;false;63;95;191;;; -1413;1;0;false;false;;;;;; -1414;3;0;false;false;63;95;191;;; -1417;1;0;false;false;;;;;; -1418;3;0;false;false;63;95;191;;; -1421;1;0;false;false;;;;;; -1422;3;0;false;false;63;95;191;;; -1425;1;0;false;false;;;;;; -1426;3;0;false;false;63;95;191;;; -1429;1;0;false;false;;;;;; -1430;3;0;false;false;63;95;191;;; -1433;1;0;false;false;;;;;; -1434;4;0;false;false;63;95;191;;; -1438;1;0;false;false;;;;;; -1439;2;0;false;false;63;95;191;;; -1441;1;0;false;false;;;;;; -1442;7;0;false;false;63;95;191;;; -1449;1;0;false;false;;;;;; -1450;3;0;false;false;63;95;191;;; -1453;1;0;false;false;;;;;; -1454;10;0;false;false;63;95;191;;; -1464;1;0;false;false;;;;;; -1465;2;0;false;false;63;95;191;;; -1467;1;0;false;false;;;;;; -1468;3;0;false;false;63;95;191;;; -1471;1;0;false;false;;;;;; -1472;3;0;false;false;63;95;191;;; -1475;1;0;false;false;;;;;; -1476;6;0;false;false;63;95;191;;; -1482;1;0;false;false;;;;;; -1483;4;0;false;false;63;95;191;;; -1487;1;0;false;false;;;;;; -1488;3;0;false;false;63;95;191;;; -1491;4;0;false;false;;;;;; -1495;1;0;false;false;63;95;191;;; -1496;1;0;false;false;;;;;; -1497;18;0;false;false;63;95;191;;; -1515;2;0;false;false;;;;;; -1517;2;0;false;false;63;95;191;;; -1519;1;0;false;false;;;;;; -1520;3;0;false;false;63;95;191;;; -1523;1;0;false;false;;;;;; -1524;6;0;false;false;63;95;191;;; -1530;1;0;false;false;;;;;; -1531;4;0;false;false;63;95;191;;; -1535;1;0;false;false;;;;;; -1536;3;0;false;false;63;95;191;;; -1539;1;0;false;false;;;;;; -1540;9;0;false;false;63;95;191;;; -1549;1;0;false;false;;;;;; -1550;3;0;false;false;63;95;191;;; -1553;1;0;false;false;;;;;; -1554;4;0;false;false;63;95;191;;; -1558;1;0;false;false;;;;;; -1559;2;0;false;false;63;95;191;;; -1561;1;0;false;false;;;;;; -1562;11;0;false;false;63;95;191;;; -1573;4;0;false;false;;;;;; -1577;1;0;false;false;63;95;191;;; -1578;1;0;false;false;;;;;; -1579;3;0;false;false;63;95;191;;; -1582;1;0;false;false;;;;;; -1583;11;0;false;false;63;95;191;;; -1594;1;0;false;false;;;;;; -1595;3;0;false;false;63;95;191;;; -1598;1;0;false;false;;;;;; -1599;4;0;false;false;63;95;191;;; -1603;1;0;false;false;;;;;; -1604;5;0;false;false;63;95;191;;; -1609;1;0;false;false;;;;;; -1610;11;0;false;false;63;95;191;;; -1621;1;0;false;false;;;;;; -1622;3;0;false;false;63;95;191;;; -1625;1;0;false;false;;;;;; -1626;3;0;false;false;63;95;191;;; -1629;1;0;false;false;;;;;; -1630;7;0;false;false;63;95;191;;; -1637;2;0;false;false;;;;;; -1639;10;0;false;false;63;95;191;;; -1649;1;0;false;false;;;;;; -1650;3;0;false;false;63;95;191;;; -1653;1;0;false;false;;;;;; -1654;3;0;false;false;63;95;191;;; -1657;4;0;false;false;;;;;; -1661;1;0;false;false;63;95;191;;; -1662;1;0;false;false;;;;;; -1663;3;0;false;false;63;95;191;;; -1666;1;0;false;false;;;;;; -1667;6;0;false;false;63;95;191;;; -1673;1;0;false;false;;;;;; -1674;4;0;false;false;63;95;191;;; -1678;1;0;false;false;;;;;; -1679;3;0;false;false;63;95;191;;; -1682;1;0;false;false;;;;;; -1683;8;0;false;false;63;95;191;;; -1691;1;0;false;false;;;;;; -1692;3;0;false;false;63;95;191;;; -1695;1;0;false;false;;;;;; -1696;3;0;false;false;63;95;191;;; -1699;1;0;false;false;;;;;; -1700;3;0;false;false;63;95;191;;; -1703;1;0;false;false;;;;;; -1704;10;0;false;false;63;95;191;;; -1714;1;0;false;false;;;;;; -1715;4;0;false;false;63;95;191;;; -1719;2;0;false;false;;;;;; -1721;3;0;false;false;63;95;191;;; -1724;1;0;false;false;;;;;; -1725;9;0;false;false;63;95;191;;; -1734;3;0;false;false;;;;;; -1737;1;0;false;false;63;95;191;;; -1738;1;0;false;false;;;;;; -1739;10;0;false;false;63;95;191;;; -1749;1;0;false;false;;;;;; -1750;3;0;false;false;63;95;191;;; -1753;1;0;false;false;;;;;; -1754;2;0;false;false;63;95;191;;; -1756;1;0;false;false;;;;;; -1757;3;0;false;false;63;95;191;;; -1760;1;0;false;false;;;;;; -1761;9;0;false;false;63;95;191;;; -1770;1;0;false;false;;;;;; -1771;2;0;false;false;63;95;191;;; -1773;1;0;false;false;;;;;; -1774;3;0;false;false;63;95;191;;; -1777;1;0;false;false;;;;;; -1778;4;0;false;false;63;95;191;;; -1782;1;0;false;false;;;;;; -1783;7;0;false;false;63;95;191;;; -1790;1;0;false;false;;;;;; -1791;1;0;false;false;63;95;191;;; -1792;1;0;false;false;;;;;; -1793;18;0;false;false;63;95;191;;; -1811;3;0;false;false;;;;;; -1814;1;0;false;false;63;95;191;;; -1815;1;0;false;false;;;;;; -1816;4;0;false;false;127;127;159;;; -1820;3;0;false;false;;;;;; -1823;1;0;false;false;63;95;191;;; -1824;1;0;false;false;;;;;; -1825;4;0;false;false;127;127;159;;; -1829;26;0;false;false;63;95;191;;; -1855;3;0;false;false;;;;;; -1858;1;0;false;false;63;95;191;;; -1859;1;0;false;false;;;;;; -1860;4;0;false;false;127;127;159;;; -1864;16;0;false;false;63;95;191;;; -1880;3;0;false;false;;;;;; -1883;1;0;false;false;63;95;191;;; -1884;1;0;false;false;;;;;; -1885;4;0;false;false;127;127;159;;; -1889;40;0;false;false;63;95;191;;; -1929;3;0;false;false;;;;;; -1932;1;0;false;false;63;95;191;;; -1933;1;0;false;false;;;;;; -1934;4;0;false;false;127;127;159;;; -1938;25;0;false;false;63;95;191;;; -1963;3;0;false;false;;;;;; -1966;1;0;false;false;63;95;191;;; -1967;1;0;false;false;;;;;; -1968;4;0;false;false;127;127;159;;; -1972;28;0;false;false;63;95;191;;; -2000;3;0;false;false;;;;;; -2003;1;0;false;false;63;95;191;;; -2004;1;0;false;false;;;;;; -2005;5;0;false;false;127;127;159;;; -2010;3;0;false;false;;;;;; -2013;1;0;false;false;63;95;191;;; -2014;1;0;false;false;;;;;; -2015;4;0;false;false;127;127;159;;; -2019;3;0;false;false;;;;;; -2022;1;0;false;false;63;95;191;;; -2023;1;0;false;false;;;;;; -2024;3;0;false;false;127;127;159;;; -2027;3;0;false;false;;;;;; -2030;1;0;false;false;63;95;191;;; -2031;1;0;false;false;;;;;; -2032;5;0;false;false;63;95;191;;; -2037;1;0;false;false;;;;;; -2038;3;0;false;false;63;95;191;;; -2041;1;0;false;false;;;;;; -2042;3;0;false;false;63;95;191;;; -2045;1;0;false;false;;;;;; -2046;4;0;false;false;63;95;191;;; -2050;1;0;false;false;;;;;; -2051;2;0;false;false;63;95;191;;; -2053;1;0;false;false;;;;;; -2054;3;0;false;false;63;95;191;;; -2057;1;0;false;false;;;;;; -2058;4;0;false;false;63;95;191;;; -2062;1;0;false;false;;;;;; -2063;6;0;false;false;63;95;191;;; -2069;1;0;false;false;;;;;; -2070;4;0;false;false;63;95;191;;; -2074;1;0;false;false;;;;;; -2075;10;0;false;false;63;95;191;;; -2085;1;0;false;false;;;;;; -2086;4;0;false;false;63;95;191;;; -2090;1;0;false;false;;;;;; -2091;10;0;false;false;63;95;191;;; -2101;1;0;false;false;;;;;; -2102;7;0;false;false;63;95;191;;; -2109;3;0;false;false;;;;;; -2112;1;0;false;false;63;95;191;;; -2113;1;0;false;false;;;;;; -2114;3;0;false;false;63;95;191;;; -2117;1;0;false;false;;;;;; -2118;3;0;false;false;63;95;191;;; -2121;1;0;false;false;;;;;; -2122;3;0;false;false;63;95;191;;; -2125;1;0;false;false;;;;;; -2126;3;0;false;false;63;95;191;;; -2129;1;0;false;false;;;;;; -2130;3;0;false;false;63;95;191;;; -2133;1;0;false;false;;;;;; -2134;4;0;false;false;63;95;191;;; -2138;1;0;false;false;;;;;; -2139;2;0;false;false;63;95;191;;; -2141;1;0;false;false;;;;;; -2142;7;0;false;false;63;95;191;;; -2149;1;0;false;false;;;;;; -2150;3;0;false;false;63;95;191;;; -2153;1;0;false;false;;;;;; -2154;10;0;false;false;63;95;191;;; -2164;1;0;false;false;;;;;; -2165;2;0;false;false;63;95;191;;; -2167;1;0;false;false;;;;;; -2168;3;0;false;false;63;95;191;;; -2171;1;0;false;false;;;;;; -2172;3;0;false;false;63;95;191;;; -2175;1;0;false;false;;;;;; -2176;6;0;false;false;63;95;191;;; -2182;1;0;false;false;;;;;; -2183;4;0;false;false;63;95;191;;; -2187;1;0;false;false;;;;;; -2188;3;0;false;false;63;95;191;;; -2191;4;0;false;false;;;;;; -2195;1;0;false;false;63;95;191;;; -2196;1;0;false;false;;;;;; -2197;23;0;false;false;63;95;191;;; -2220;2;0;false;false;;;;;; -2222;2;0;false;false;63;95;191;;; -2224;1;0;false;false;;;;;; -2225;3;0;false;false;63;95;191;;; -2228;1;0;false;false;;;;;; -2229;6;0;false;false;63;95;191;;; -2235;1;0;false;false;;;;;; -2236;4;0;false;false;63;95;191;;; -2240;1;0;false;false;;;;;; -2241;3;0;false;false;63;95;191;;; -2244;1;0;false;false;;;;;; -2245;9;0;false;false;63;95;191;;; -2254;1;0;false;false;;;;;; -2255;3;0;false;false;63;95;191;;; -2258;1;0;false;false;;;;;; -2259;4;0;false;false;63;95;191;;; -2263;1;0;false;false;;;;;; -2264;2;0;false;false;63;95;191;;; -2266;1;0;false;false;;;;;; -2267;11;0;false;false;63;95;191;;; -2278;4;0;false;false;;;;;; -2282;1;0;false;false;63;95;191;;; -2283;1;0;false;false;;;;;; -2284;3;0;false;false;63;95;191;;; -2287;1;0;false;false;;;;;; -2288;11;0;false;false;63;95;191;;; -2299;1;0;false;false;;;;;; -2300;3;0;false;false;63;95;191;;; -2303;1;0;false;false;;;;;; -2304;4;0;false;false;63;95;191;;; -2308;1;0;false;false;;;;;; -2309;10;0;false;false;63;95;191;;; -2319;1;0;false;false;;;;;; -2320;5;0;false;false;63;95;191;;; -2325;1;0;false;false;;;;;; -2326;11;0;false;false;63;95;191;;; -2337;1;0;false;false;;;;;; -2338;3;0;false;false;63;95;191;;; -2341;1;0;false;false;;;;;; -2342;3;0;false;false;63;95;191;;; -2345;1;0;false;false;;;;;; -2346;7;0;false;false;63;95;191;;; -2353;5;0;false;false;;;;;; -2358;1;0;false;false;63;95;191;;; -2359;1;0;false;false;;;;;; -2360;10;0;false;false;63;95;191;;; -2370;1;0;false;false;;;;;; -2371;3;0;false;false;63;95;191;;; -2374;1;0;false;false;;;;;; -2375;3;0;false;false;63;95;191;;; -2378;1;0;false;false;;;;;; -2379;3;0;false;false;63;95;191;;; -2382;1;0;false;false;;;;;; -2383;6;0;false;false;63;95;191;;; -2389;1;0;false;false;;;;;; -2390;4;0;false;false;63;95;191;;; -2394;1;0;false;false;;;;;; -2395;3;0;false;false;63;95;191;;; -2398;1;0;false;false;;;;;; -2399;8;0;false;false;63;95;191;;; -2407;1;0;false;false;;;;;; -2408;3;0;false;false;63;95;191;;; -2411;1;0;false;false;;;;;; -2412;3;0;false;false;63;95;191;;; -2415;1;0;false;false;;;;;; -2416;3;0;false;false;63;95;191;;; -2419;1;0;false;false;;;;;; -2420;10;0;false;false;63;95;191;;; -2430;1;0;false;false;;;;;; -2431;4;0;false;false;63;95;191;;; -2435;5;0;false;false;;;;;; -2440;1;0;false;false;63;95;191;;; -2441;1;0;false;false;;;;;; -2442;3;0;false;false;63;95;191;;; -2445;1;0;false;false;;;;;; -2446;9;0;false;false;63;95;191;;; -2455;1;0;false;false;;;;;; -2456;10;0;false;false;63;95;191;;; -2466;1;0;false;false;;;;;; -2467;3;0;false;false;63;95;191;;; -2470;1;0;false;false;;;;;; -2471;2;0;false;false;63;95;191;;; -2473;1;0;false;false;;;;;; -2474;3;0;false;false;63;95;191;;; -2477;1;0;false;false;;;;;; -2478;9;0;false;false;63;95;191;;; -2487;1;0;false;false;;;;;; -2488;2;0;false;false;63;95;191;;; -2490;1;0;false;false;;;;;; -2491;3;0;false;false;63;95;191;;; -2494;1;0;false;false;;;;;; -2495;4;0;false;false;63;95;191;;; -2499;1;0;false;false;;;;;; -2500;7;0;false;false;63;95;191;;; -2507;1;0;false;false;;;;;; -2508;1;0;false;false;63;95;191;;; -2509;4;0;false;false;;;;;; -2513;1;0;false;false;63;95;191;;; -2514;1;0;false;false;;;;;; -2515;23;0;false;false;63;95;191;;; -2538;3;0;false;false;;;;;; -2541;1;0;false;false;63;95;191;;; -2542;1;0;false;false;;;;;; -2543;4;0;false;false;127;127;159;;; -2547;3;0;false;false;;;;;; -2550;1;0;false;false;63;95;191;;; -2551;1;0;false;false;;;;;; -2552;4;0;false;false;127;127;159;;; -2556;22;0;false;false;63;95;191;;; -2578;3;0;false;false;;;;;; -2581;1;0;false;false;63;95;191;;; -2582;1;0;false;false;;;;;; -2583;4;0;false;false;127;127;159;;; -2587;32;0;false;false;63;95;191;;; -2619;3;0;false;false;;;;;; -2622;1;0;false;false;63;95;191;;; -2623;1;0;false;false;;;;;; -2624;5;0;false;false;127;127;159;;; -2629;3;0;false;false;;;;;; -2632;1;0;false;false;63;95;191;;; -2633;1;0;false;false;;;;;; -2634;4;0;false;false;127;127;159;;; -2638;3;0;false;false;;;;;; -2641;1;0;false;false;63;95;191;;; -2642;1;0;false;false;;;;;; -2643;3;0;false;false;127;127;159;;; -2646;3;0;false;false;;;;;; -2649;1;0;false;false;63;95;191;;; -2650;1;0;false;false;;;;;; -2651;3;0;false;false;63;95;191;;; -2654;1;0;false;false;;;;;; -2655;7;0;false;false;63;95;191;;; -2662;1;0;false;false;;;;;; -2663;14;0;false;false;63;95;191;;; -2677;1;0;false;false;;;;;; -2678;3;0;false;false;63;95;191;;; -2681;1;0;false;false;;;;;; -2682;4;0;false;false;63;95;191;;; -2686;1;0;false;false;;;;;; -2687;6;0;false;false;63;95;191;;; -2693;1;0;false;false;;;;;; -2694;3;0;false;false;63;95;191;;; -2697;1;0;false;false;;;;;; -2698;4;0;false;false;63;95;191;;; -2702;1;0;false;false;;;;;; -2703;2;0;false;false;63;95;191;;; -2705;1;0;false;false;;;;;; -2706;4;0;false;false;63;95;191;;; -2710;1;0;false;false;127;127;159;;; -2711;8;0;false;false;63;95;191;;; -2719;2;0;false;false;;;;;; -2721;2;0;false;false;63;95;191;;; -2723;1;0;false;false;;;;;; -2724;2;0;false;false;63;95;191;;; -2726;1;0;false;false;;;;;; -2727;3;0;false;false;63;95;191;;; -2730;3;0;false;false;;;;;; -2733;1;0;false;false;63;95;191;;; -2734;1;0;false;false;;;;;; -2735;3;0;false;false;63;95;191;;; -2738;1;0;false;false;;;;;; -2739;4;0;false;false;63;95;191;;; -2743;1;0;false;false;;;;;; -2744;9;0;false;false;63;95;191;;; -2753;1;0;false;false;;;;;; -2754;3;0;false;false;63;95;191;;; -2757;1;0;false;false;;;;;; -2758;17;0;false;false;63;95;191;;; -2775;1;0;false;false;;;;;; -2776;9;0;false;false;63;95;191;;; -2785;1;0;false;false;;;;;; -2786;3;0;false;false;63;95;191;;; -2789;1;0;false;false;;;;;; -2790;3;0;false;false;63;95;191;;; -2793;1;0;false;false;;;;;; -2794;3;0;false;false;63;95;191;;; -2797;1;0;false;false;;;;;; -2798;10;0;false;false;63;95;191;;; -2808;1;0;false;false;;;;;; -2809;3;0;false;false;63;95;191;;; -2812;3;0;false;false;;;;;; -2815;1;0;false;false;63;95;191;;; -2816;1;0;false;false;;;;;; -2817;29;0;false;false;63;95;191;;; -2846;1;0;false;false;;;;;; -2847;2;0;false;false;63;95;191;;; -2849;1;0;false;false;;;;;; -2850;10;0;false;false;63;95;191;;; -2860;1;0;false;false;;;;;; -2861;3;0;false;false;63;95;191;;; -2864;1;0;false;false;;;;;; -2865;7;0;false;false;63;95;191;;; -2872;4;0;false;false;;;;;; -2876;1;0;false;false;63;95;191;;; -2877;1;0;false;false;;;;;; -2878;4;0;false;false;127;127;159;;; -2882;3;0;false;false;;;;;; -2885;1;0;false;false;63;95;191;;; -2886;1;0;false;false;;;;;; -2887;3;0;false;false;127;127;159;;; -2890;3;0;false;false;;;;;; -2893;1;0;false;false;63;95;191;;; -2894;1;0;false;false;;;;;; -2895;10;0;false;false;63;95;191;;; -2905;1;0;false;false;;;;;; -2906;4;0;false;false;63;95;191;;; -2910;1;0;false;false;;;;;; -2911;5;0;false;false;63;95;191;;; -2916;1;0;false;false;;;;;; -2917;2;0;false;false;63;95;191;;; -2919;1;0;false;false;;;;;; -2920;4;0;false;false;127;127;159;;; -2924;3;0;false;false;63;95;191;;; -2927;5;0;false;false;127;127;159;;; -2932;1;0;false;false;;;;;; -2933;8;0;false;false;63;95;191;;; -2941;1;0;false;false;;;;;; -2942;2;0;false;false;63;95;191;;; -2944;1;0;false;false;;;;;; -2945;2;0;false;false;63;95;191;;; -2947;1;0;false;false;;;;;; -2948;11;0;false;false;63;95;191;;; -2959;3;0;false;false;;;;;; -2962;1;0;false;false;63;95;191;;; -2963;1;0;false;false;;;;;; -2964;4;0;false;false;127;127;159;;; -2968;3;0;false;false;;;;;; -2971;1;0;false;false;63;95;191;;; -2972;1;0;false;false;;;;;; -2973;4;0;false;false;127;127;159;;; -2977;3;0;false;false;;;;;; -2980;1;0;false;false;63;95;191;;; -2981;1;0;false;false;;;;;; -2982;7;0;false;false;127;127;159;;; -2989;7;0;false;false;63;95;191;;; -2996;8;0;false;false;127;127;159;;; -3004;15;0;false;false;63;95;191;;; -3019;1;0;false;false;;;;;; -3020;6;0;false;false;63;95;191;;; -3026;1;0;false;false;;;;;; -3027;10;0;false;false;63;95;191;;; -3037;1;0;false;false;;;;;; -3038;7;0;false;false;63;95;191;;; -3045;1;0;false;false;;;;;; -3046;4;0;false;false;63;95;191;;; -3050;3;0;false;false;;;;;; -3053;1;0;false;false;63;95;191;;; -3054;1;0;false;false;;;;;; -3055;7;0;false;false;127;127;159;;; -3062;7;0;false;false;63;95;191;;; -3069;8;0;false;false;127;127;159;;; -3077;15;0;false;false;63;95;191;;; -3092;1;0;false;false;;;;;; -3093;18;0;false;false;63;95;191;;; -3111;1;0;false;false;;;;;; -3112;16;0;false;false;63;95;191;;; -3128;1;0;false;false;;;;;; -3129;13;0;false;false;63;95;191;;; -3142;1;0;false;false;;;;;; -3143;7;0;false;false;63;95;191;;; -3150;1;0;false;false;;;;;; -3151;10;0;false;false;63;95;191;;; -3161;1;0;false;false;;;;;; -3162;7;0;false;false;63;95;191;;; -3169;1;0;false;false;;;;;; -3170;9;0;false;false;63;95;191;;; -3179;3;0;false;false;;;;;; -3182;1;0;false;false;63;95;191;;; -3183;1;0;false;false;;;;;; -3184;5;0;false;false;127;127;159;;; -3189;3;0;false;false;;;;;; -3192;2;0;false;false;63;95;191;;; -3194;2;0;false;false;;;;;; -3196;6;1;false;false;127;0;85;;; -3202;1;0;false;false;;;;;; -3203;5;1;false;false;127;0;85;;; -3208;1;0;false;false;;;;;; -3209;10;0;false;false;0;0;0;;; -3219;1;0;false;false;;;;;; -3220;7;1;false;false;127;0;85;;; -3227;1;0;false;false;;;;;; -3228;6;0;false;false;0;0;0;;; -3234;1;0;false;false;;;;;; -3235;1;0;false;false;0;0;0;;; -3236;3;0;false;false;;;;;; -3239;6;1;false;false;127;0;85;;; -3245;1;0;false;false;;;;;; -3246;5;1;false;false;127;0;85;;; -3251;1;0;false;false;;;;;; -3252;4;1;false;false;127;0;85;;; -3256;1;0;false;false;;;;;; -3257;3;0;false;false;0;0;0;;; -3260;1;0;false;false;;;;;; -3261;1;0;false;false;0;0;0;;; -3262;1;0;false;false;;;;;; -3263;4;0;false;false;42;0;255;;; -3267;1;0;false;false;0;0;0;;; -3268;3;0;false;false;;;;;; -3271;6;1;false;false;127;0;85;;; -3277;1;0;false;false;;;;;; -3278;5;1;false;false;127;0;85;;; -3283;1;0;false;false;;;;;; -3284;6;0;false;false;0;0;0;;; -3290;1;0;false;false;;;;;; -3291;21;0;false;false;0;0;0;;; -3312;1;0;false;false;;;;;; -3313;1;0;false;false;0;0;0;;; -3314;1;0;false;false;;;;;; -3315;19;0;false;false;0;0;0;;; -3334;16;0;false;false;42;0;255;;; -3350;2;0;false;false;0;0;0;;; -3352;3;0;false;false;;;;;; -3355;6;1;false;false;127;0;85;;; -3361;1;0;false;false;;;;;; -3362;5;1;false;false;127;0;85;;; -3367;1;0;false;false;;;;;; -3368;3;1;false;false;127;0;85;;; -3371;1;0;false;false;;;;;; -3372;16;0;false;false;0;0;0;;; -3388;1;0;false;false;;;;;; -3389;1;0;false;false;0;0;0;;; -3390;1;0;false;false;;;;;; -3391;2;0;false;false;0;0;0;;; -3393;3;0;false;false;;;;;; -3396;6;1;false;false;127;0;85;;; -3402;1;0;false;false;;;;;; -3403;5;1;false;false;127;0;85;;; -3408;1;0;false;false;;;;;; -3409;3;1;false;false;127;0;85;;; -3412;1;0;false;false;;;;;; -3413;13;0;false;false;0;0;0;;; -3426;1;0;false;false;;;;;; -3427;1;0;false;false;0;0;0;;; -3428;1;0;false;false;;;;;; -3429;3;0;false;false;0;0;0;;; -3432;3;0;false;false;;;;;; -3435;6;1;false;false;127;0;85;;; -3441;1;0;false;false;;;;;; -3442;5;1;false;false;127;0;85;;; -3447;1;0;false;false;;;;;; -3448;3;1;false;false;127;0;85;;; -3451;1;0;false;false;;;;;; -3452;14;0;false;false;0;0;0;;; -3466;1;0;false;false;;;;;; -3467;1;0;false;false;0;0;0;;; -3468;1;0;false;false;;;;;; -3469;3;0;false;false;0;0;0;;; -3472;3;0;false;false;;;;;; -3475;6;1;false;false;127;0;85;;; -3481;1;0;false;false;;;;;; -3482;5;1;false;false;127;0;85;;; -3487;1;0;false;false;;;;;; -3488;3;1;false;false;127;0;85;;; -3491;1;0;false;false;;;;;; -3492;13;0;false;false;0;0;0;;; -3505;1;0;false;false;;;;;; -3506;1;0;false;false;0;0;0;;; -3507;1;0;false;false;;;;;; -3508;3;0;false;false;0;0;0;;; -3511;3;0;false;false;;;;;; -3514;6;1;false;false;127;0;85;;; -3520;1;0;false;false;;;;;; -3521;5;1;false;false;127;0;85;;; -3526;1;0;false;false;;;;;; -3527;3;1;false;false;127;0;85;;; -3530;1;0;false;false;;;;;; -3531;13;0;false;false;0;0;0;;; -3544;1;0;false;false;;;;;; -3545;1;0;false;false;0;0;0;;; -3546;1;0;false;false;;;;;; -3547;3;0;false;false;0;0;0;;; -3550;6;0;false;false;;;;;; -3556;6;1;false;false;127;0;85;;; -3562;1;0;false;false;;;;;; -3563;5;1;false;false;127;0;85;;; -3568;1;0;false;false;;;;;; -3569;3;1;false;false;127;0;85;;; -3572;1;0;false;false;;;;;; -3573;14;0;false;false;0;0;0;;; -3587;1;0;false;false;;;;;; -3588;1;0;false;false;0;0;0;;; -3589;1;0;false;false;;;;;; -3590;5;0;false;false;0;0;0;;; -3595;3;0;false;false;;;;;; -3598;6;1;false;false;127;0;85;;; -3604;1;0;false;false;;;;;; -3605;5;1;false;false;127;0;85;;; -3610;1;0;false;false;;;;;; -3611;3;1;false;false;127;0;85;;; -3614;1;0;false;false;;;;;; -3615;17;0;false;false;0;0;0;;; -3632;1;0;false;false;;;;;; -3633;1;0;false;false;0;0;0;;; -3634;1;0;false;false;;;;;; -3635;5;0;false;false;0;0;0;;; -3640;3;0;false;false;;;;;; -3643;6;1;false;false;127;0;85;;; -3649;1;0;false;false;;;;;; -3650;5;1;false;false;127;0;85;;; -3655;1;0;false;false;;;;;; -3656;3;1;false;false;127;0;85;;; -3659;1;0;false;false;;;;;; -3660;12;0;false;false;0;0;0;;; -3672;1;0;false;false;;;;;; -3673;1;0;false;false;0;0;0;;; -3674;1;0;false;false;;;;;; -3675;5;0;false;false;0;0;0;;; -3680;3;0;false;false;;;;;; -3683;6;1;false;false;127;0;85;;; -3689;1;0;false;false;;;;;; -3690;5;1;false;false;127;0;85;;; -3695;1;0;false;false;;;;;; -3696;3;1;false;false;127;0;85;;; -3699;1;0;false;false;;;;;; -3700;12;0;false;false;0;0;0;;; -3712;1;0;false;false;;;;;; -3713;1;0;false;false;0;0;0;;; -3714;1;0;false;false;;;;;; -3715;5;0;false;false;0;0;0;;; -3720;3;0;false;false;;;;;; -3723;6;1;false;false;127;0;85;;; -3729;1;0;false;false;;;;;; -3730;5;1;false;false;127;0;85;;; -3735;1;0;false;false;;;;;; -3736;3;1;false;false;127;0;85;;; -3739;1;0;false;false;;;;;; -3740;7;0;false;false;0;0;0;;; -3747;1;0;false;false;;;;;; -3748;1;0;false;false;0;0;0;;; -3749;1;0;false;false;;;;;; -3750;5;0;false;false;0;0;0;;; -3755;3;0;false;false;;;;;; -3758;6;1;false;false;127;0;85;;; -3764;1;0;false;false;;;;;; -3765;5;1;false;false;127;0;85;;; -3770;1;0;false;false;;;;;; -3771;3;1;false;false;127;0;85;;; -3774;1;0;false;false;;;;;; -3775;9;0;false;false;0;0;0;;; -3784;1;0;false;false;;;;;; -3785;1;0;false;false;0;0;0;;; -3786;1;0;false;false;;;;;; -3787;5;0;false;false;0;0;0;;; -3792;3;0;false;false;;;;;; -3795;6;1;false;false;127;0;85;;; -3801;1;0;false;false;;;;;; -3802;5;1;false;false;127;0;85;;; -3807;1;0;false;false;;;;;; -3808;3;1;false;false;127;0;85;;; -3811;1;0;false;false;;;;;; -3812;11;0;false;false;0;0;0;;; -3823;1;0;false;false;;;;;; -3824;1;0;false;false;0;0;0;;; -3825;1;0;false;false;;;;;; -3826;5;0;false;false;0;0;0;;; -3831;3;0;false;false;;;;;; -3834;6;1;false;false;127;0;85;;; -3840;1;0;false;false;;;;;; -3841;5;1;false;false;127;0;85;;; -3846;1;0;false;false;;;;;; -3847;3;1;false;false;127;0;85;;; -3850;1;0;false;false;;;;;; -3851;15;0;false;false;0;0;0;;; -3866;1;0;false;false;;;;;; -3867;1;0;false;false;0;0;0;;; -3868;1;0;false;false;;;;;; -3869;5;0;false;false;0;0;0;;; -3874;6;0;false;false;;;;;; -3880;5;0;false;false;0;0;0;;; -3885;1;0;false;false;;;;;; -3886;20;0;false;false;0;0;0;;; -3906;1;0;false;false;;;;;; -3907;31;0;false;false;63;127;95;;; -3938;1;0;false;false;;;;;; -3939;5;0;false;false;0;0;0;;; -3944;1;0;false;false;;;;;; -3945;20;0;false;false;0;0;0;;; -3965;1;0;false;false;;;;;; -3966;31;0;false;false;63;127;95;;; -3997;1;0;false;false;;;;;; -3998;17;0;false;false;0;0;0;;; -4015;1;0;false;false;;;;;; -4016;15;0;false;false;0;0;0;;; -4031;1;0;false;false;;;;;; -4032;47;0;false;false;63;127;95;;; -4079;1;0;false;false;;;;;; -4080;17;0;false;false;0;0;0;;; -4097;1;0;false;false;;;;;; -4098;8;0;false;false;0;0;0;;; -4106;3;0;false;false;;;;;; -4109;70;0;false;false;63;127;95;;; -4179;1;0;false;false;;;;;; -4180;15;0;false;false;0;0;0;;; -4195;1;0;false;false;;;;;; -4196;9;0;false;false;0;0;0;;; -4205;3;0;false;false;;;;;; -4208;8;0;false;false;0;0;0;;; -4216;1;0;false;false;;;;;; -4217;9;0;false;false;0;0;0;;; -4226;3;0;false;false;;;;;; -4229;18;0;false;false;0;0;0;;; -4247;1;0;false;false;;;;;; -4248;19;0;false;false;0;0;0;;; -4267;1;0;false;false;;;;;; -4268;85;0;false;false;63;127;95;;; -4353;1;0;false;false;;;;;; -4354;17;0;false;false;0;0;0;;; -4371;1;0;false;false;;;;;; -4372;18;0;false;false;0;0;0;;; -4390;67;0;false;false;63;127;95;;; -4457;1;0;false;false;;;;;; -4458;9;0;false;false;0;0;0;;; -4467;1;0;false;false;;;;;; -4468;10;0;false;false;0;0;0;;; -4478;3;0;false;false;;;;;; -4481;7;1;false;false;127;0;85;;; -4488;1;0;false;false;;;;;; -4489;13;0;false;false;0;0;0;;; -4502;1;0;false;false;;;;;; -4503;1;0;false;false;0;0;0;;; -4504;1;0;false;false;;;;;; -4505;5;1;false;false;127;0;85;;; -4510;1;0;false;false;0;0;0;;; -4511;2;0;false;false;;;;;; -4513;144;0;false;false;63;127;95;;; -4657;1;0;false;false;;;;;; -4658;7;1;false;false;127;0;85;;; -4665;1;0;false;false;;;;;; -4666;18;0;false;false;0;0;0;;; -4684;1;0;false;false;;;;;; -4685;1;0;false;false;0;0;0;;; -4686;1;0;false;false;;;;;; -4687;5;1;false;false;127;0;85;;; -4692;1;0;false;false;0;0;0;;; -4693;1;0;false;false;;;;;; -4694;159;0;false;false;63;127;95;;; -4853;1;0;false;false;;;;;; -4854;3;1;false;false;127;0;85;;; -4857;1;0;false;false;;;;;; -4858;20;0;false;false;0;0;0;;; -4878;1;0;false;false;;;;;; -4879;1;0;false;false;0;0;0;;; -4880;1;0;false;false;;;;;; -4881;2;0;false;false;0;0;0;;; -4883;2;0;false;false;;;;;; -4885;16;0;false;false;63;127;95;;; -4901;1;0;false;false;;;;;; -4902;3;1;false;false;127;0;85;;; -4905;1;0;false;false;;;;;; -4906;22;0;false;false;0;0;0;;; -4928;1;0;false;false;;;;;; -4929;1;0;false;false;0;0;0;;; -4930;1;0;false;false;;;;;; -4931;2;0;false;false;0;0;0;;; -4933;2;0;false;false;;;;;; -4935;16;0;false;false;63;127;95;;; -4951;1;0;false;false;;;;;; -4952;3;1;false;false;127;0;85;;; -4955;1;0;false;false;;;;;; -4956;8;0;false;false;0;0;0;;; -4964;1;0;false;false;;;;;; -4965;1;0;false;false;0;0;0;;; -4966;1;0;false;false;;;;;; -4967;2;0;false;false;0;0;0;;; -4969;5;0;false;false;;;;;; -4974;21;0;false;false;63;127;95;;; -4995;1;0;false;false;;;;;; -4996;3;1;false;false;127;0;85;;; -4999;1;0;false;false;;;;;; -5000;17;0;false;false;0;0;0;;; -5017;1;0;false;false;;;;;; -5018;1;0;false;false;0;0;0;;; -5019;1;0;false;false;;;;;; -5020;3;0;false;false;0;0;0;;; -5023;3;0;false;false;;;;;; -5026;3;1;false;false;127;0;85;;; -5029;1;0;false;false;;;;;; -5030;9;0;false;false;0;0;0;;; -5039;1;0;false;false;;;;;; -5040;1;0;false;false;0;0;0;;; -5041;1;0;false;false;;;;;; -5042;2;0;false;false;0;0;0;;; -5044;5;0;false;false;;;;;; -5049;42;0;false;false;63;127;95;;; -5091;1;0;false;false;;;;;; -5092;3;1;false;false;127;0;85;;; -5095;1;0;false;false;;;;;; -5096;16;0;false;false;0;0;0;;; -5112;1;0;false;false;;;;;; -5113;1;0;false;false;0;0;0;;; -5114;1;0;false;false;;;;;; -5115;2;0;false;false;0;0;0;;; -5117;3;0;false;false;;;;;; -5120;71;0;false;false;63;127;95;;; -5191;10;0;false;false;;;;;; -5201;41;0;false;false;63;127;95;;; -5242;1;0;false;false;;;;;; -5243;3;1;false;false;127;0;85;;; -5246;1;0;false;false;;;;;; -5247;15;0;false;false;0;0;0;;; -5262;1;0;false;false;;;;;; -5263;1;0;false;false;0;0;0;;; -5264;1;0;false;false;;;;;; -5265;2;0;false;false;0;0;0;;; -5267;3;0;false;false;;;;;; -5270;71;0;false;false;63;127;95;;; -5341;10;0;false;false;;;;;; -5351;42;0;false;false;63;127;95;;; -5393;1;0;false;false;;;;;; -5394;3;1;false;false;127;0;85;;; -5397;1;0;false;false;;;;;; -5398;11;0;false;false;0;0;0;;; -5409;6;0;false;false;;;;;; -5415;28;0;false;false;63;127;95;;; -5443;1;0;false;false;;;;;; -5444;3;1;false;false;127;0;85;;; -5447;1;0;false;false;;;;;; -5448;9;0;false;false;0;0;0;;; -5457;1;0;false;false;;;;;; -5458;1;0;false;false;0;0;0;;; -5459;1;0;false;false;;;;;; -5460;2;0;false;false;0;0;0;;; -5462;5;0;false;false;;;;;; -5467;34;0;false;false;63;127;95;;; -5501;1;0;false;false;;;;;; -5502;3;1;false;false;127;0;85;;; -5505;1;0;false;false;;;;;; -5506;11;0;false;false;0;0;0;;; -5517;3;0;false;false;;;;;; -5520;3;1;false;false;127;0;85;;; -5523;1;0;false;false;;;;;; -5524;10;0;false;false;0;0;0;;; -5534;3;0;false;false;;;;;; -5537;3;1;false;false;127;0;85;;; -5540;1;0;false;false;;;;;; -5541;12;0;false;false;0;0;0;;; -5553;3;0;false;false;;;;;; -5556;3;1;false;false;127;0;85;;; -5559;1;0;false;false;;;;;; -5560;13;0;false;false;0;0;0;;; -5573;3;0;false;false;;;;;; -5576;6;0;false;false;0;0;0;;; -5582;1;0;false;false;;;;;; -5583;12;0;false;false;0;0;0;;; -5595;5;0;false;false;;;;;; -5600;3;1;false;false;127;0;85;;; -5603;1;0;false;false;;;;;; -5604;8;0;false;false;0;0;0;;; -5612;7;0;false;false;;;;;; -5619;48;0;false;false;63;127;95;;; -5667;10;0;false;false;;;;;; -5677;46;0;false;false;63;127;95;;; -5723;1;0;false;false;;;;;; -5724;3;1;false;false;127;0;85;;; -5727;1;0;false;false;;;;;; -5728;11;0;false;false;0;0;0;;; -5739;1;0;false;false;;;;;; -5740;1;0;false;false;0;0;0;;; -5741;1;0;false;false;;;;;; -5742;2;0;false;false;0;0;0;;; -5744;3;0;false;false;;;;;; -5747;5;0;false;false;0;0;0;;; -5752;1;0;false;false;;;;;; -5753;9;0;false;false;0;0;0;;; -5762;1;0;false;false;;;;;; -5763;1;0;false;false;0;0;0;;; -5764;1;0;false;false;;;;;; -5765;3;1;false;false;127;0;85;;; -5768;1;0;false;false;;;;;; -5769;8;0;false;false;0;0;0;;; -5777;1;0;false;false;;;;;; -5778;3;0;false;false;0;0;0;;; -5781;1;0;false;false;;;;;; -5782;57;0;false;false;63;127;95;;; -5839;1;0;false;false;;;;;; -5840;5;0;false;false;0;0;0;;; -5845;1;0;false;false;;;;;; -5846;19;0;false;false;0;0;0;;; -5865;11;0;false;false;;;;;; -5876;66;0;false;false;63;127;95;;; -5942;1;0;false;false;;;;;; -5943;3;1;false;false;127;0;85;;; -5946;1;0;false;false;;;;;; -5947;16;0;false;false;0;0;0;;; -5963;4;0;false;false;;;;;; -5967;72;0;false;false;63;127;95;;; -6039;1;0;false;false;;;;;; -6040;5;0;false;false;0;0;0;;; -6045;1;0;false;false;;;;;; -6046;21;0;false;false;0;0;0;;; -6067;3;0;false;false;;;;;; -6070;44;0;false;false;63;127;95;;; -6114;1;0;false;false;;;;;; -6115;7;1;false;false;127;0;85;;; -6122;1;0;false;false;;;;;; -6123;8;0;false;false;0;0;0;;; -6131;1;0;false;false;;;;;; -6132;1;0;false;false;0;0;0;;; -6133;1;0;false;false;;;;;; -6134;4;1;false;false;127;0;85;;; -6138;1;0;false;false;0;0;0;;; -6139;3;0;false;false;;;;;; -6142;7;1;false;false;127;0;85;;; -6149;1;0;false;false;;;;;; -6150;8;0;false;false;0;0;0;;; -6158;1;0;false;false;;;;;; -6159;1;0;false;false;0;0;0;;; -6160;1;0;false;false;;;;;; -6161;5;1;false;false;127;0;85;;; -6166;1;0;false;false;0;0;0;;; -6167;3;0;false;false;;;;;; -6170;7;1;false;false;127;0;85;;; -6177;1;0;false;false;;;;;; -6178;18;0;false;false;0;0;0;;; -6196;1;0;false;false;;;;;; -6197;1;0;false;false;0;0;0;;; -6198;1;0;false;false;;;;;; -6199;4;1;false;false;127;0;85;;; -6203;1;0;false;false;0;0;0;;; -6204;1;0;false;false;;;;;; -6205;31;0;false;false;63;127;95;;; -6236;1;0;false;false;;;;;; -6237;7;1;false;false;127;0;85;;; -6244;1;0;false;false;;;;;; -6245;9;0;false;false;0;0;0;;; -6254;1;0;false;false;;;;;; -6255;1;0;false;false;0;0;0;;; -6256;1;0;false;false;;;;;; -6257;5;1;false;false;127;0;85;;; -6262;1;0;false;false;0;0;0;;; -6263;3;0;false;false;;;;;; -6266;31;0;false;false;63;127;95;;; -6297;1;0;false;false;;;;;; -6298;3;1;false;false;127;0;85;;; -6301;1;0;false;false;;;;;; -6302;9;0;false;false;0;0;0;;; -6311;1;0;false;false;;;;;; -6312;1;0;false;false;0;0;0;;; -6313;1;0;false;false;;;;;; -6314;3;0;false;false;0;0;0;;; -6317;5;0;false;false;;;;;; -6322;91;0;false;false;63;127;95;;; -6413;1;0;false;false;;;;;; -6414;9;0;false;false;0;0;0;;; -6423;1;0;false;false;;;;;; -6424;12;0;false;false;0;0;0;;; -6436;1;0;false;false;;;;;; -6437;1;0;false;false;0;0;0;;; -6438;1;0;false;false;;;;;; -6439;3;1;false;false;127;0;85;;; -6442;1;0;false;false;;;;;; -6443;12;0;false;false;0;0;0;;; -6455;3;0;false;false;;;;;; -6458;5;0;false;false;0;0;0;;; -6463;1;0;false;false;;;;;; -6464;10;0;false;false;0;0;0;;; -6474;1;0;false;false;;;;;; -6475;1;0;false;false;0;0;0;;; -6476;1;0;false;false;;;;;; -6477;4;1;false;false;127;0;85;;; -6481;1;0;false;false;0;0;0;;; -6482;3;0;false;false;;;;;; -6485;28;0;false;false;63;127;95;;; -6513;1;0;false;false;;;;;; -6514;5;0;false;false;0;0;0;;; -6519;1;0;false;false;;;;;; -6520;10;0;false;false;0;0;0;;; -6530;1;0;false;false;;;;;; -6531;1;0;false;false;0;0;0;;; -6532;1;0;false;false;;;;;; -6533;4;1;false;false;127;0;85;;; -6537;1;0;false;false;0;0;0;;; -6538;3;0;false;false;;;;;; -6541;4;0;false;false;63;127;95;;; -6545;1;0;false;false;;;;;; -6546;9;0;false;false;0;0;0;;; -6555;1;0;false;false;;;;;; -6556;10;0;false;false;0;0;0;;; -6566;3;0;false;false;;;;;; -6569;7;1;false;false;127;0;85;;; -6576;1;0;false;false;;;;;; -6577;9;0;false;false;0;0;0;;; -6586;1;0;false;false;;;;;; -6587;1;0;false;false;0;0;0;;; -6588;1;0;false;false;;;;;; -6589;5;1;false;false;127;0;85;;; -6594;1;0;false;false;0;0;0;;; -6595;3;0;false;false;;;;;; -6598;7;1;false;false;127;0;85;;; -6605;1;0;false;false;;;;;; -6606;16;0;false;false;0;0;0;;; -6622;1;0;false;false;;;;;; -6623;1;0;false;false;0;0;0;;; -6624;1;0;false;false;;;;;; -6625;5;1;false;false;127;0;85;;; -6630;1;0;false;false;0;0;0;;; -6631;1;0;false;false;;;;;; -6632;65;0;false;false;63;127;95;;; -6697;1;0;false;false;;;;;; -6698;3;1;false;false;127;0;85;;; -6701;1;0;false;false;;;;;; -6702;19;0;false;false;0;0;0;;; -6721;1;0;false;false;;;;;; -6722;1;0;false;false;0;0;0;;; -6723;1;0;false;false;;;;;; -6724;9;0;false;false;0;0;0;;; -6733;1;0;false;false;;;;;; -6734;59;0;false;false;63;127;95;;; -6793;1;0;false;false;;;;;; -6794;3;1;false;false;127;0;85;;; -6797;1;0;false;false;;;;;; -6798;18;0;false;false;0;0;0;;; -6816;1;0;false;false;;;;;; -6817;1;0;false;false;0;0;0;;; -6818;1;0;false;false;;;;;; -6819;2;0;false;false;0;0;0;;; -6821;3;0;false;false;;;;;; -6824;3;1;false;false;127;0;85;;; -6827;1;0;false;false;;;;;; -6828;20;0;false;false;0;0;0;;; -6848;3;0;false;false;;;;;; -6851;23;0;false;false;63;127;95;;; -6874;1;0;false;false;;;;;; -6875;3;1;false;false;127;0;85;;; -6878;1;0;false;false;;;;;; -6879;27;0;false;false;0;0;0;;; -6906;2;0;false;false;;;;;; -6908;24;0;false;false;63;127;95;;; -6932;1;0;false;false;;;;;; -6933;3;1;false;false;127;0;85;;; -6936;1;0;false;false;;;;;; -6937;27;0;false;false;0;0;0;;; -6964;2;0;false;false;;;;;; -6966;26;0;false;false;63;127;95;;; -6992;1;0;false;false;;;;;; -6993;3;1;false;false;127;0;85;;; -6996;1;0;false;false;;;;;; -6997;31;0;false;false;0;0;0;;; -7028;1;0;false;false;;;;;; -7029;25;0;false;false;63;127;95;;; -7054;1;0;false;false;;;;;; -7055;3;1;false;false;127;0;85;;; -7058;1;0;false;false;;;;;; -7059;31;0;false;false;0;0;0;;; -7090;4;0;false;false;;;;;; -7094;7;1;false;false;127;0;85;;; -7101;1;0;false;false;;;;;; -7102;11;0;false;false;0;0;0;;; -7113;3;0;false;false;;;;;; -7116;7;1;false;false;127;0;85;;; -7123;1;0;false;false;;;;;; -7124;12;0;false;false;0;0;0;;; -7136;1;0;false;false;;;;;; -7137;1;0;false;false;0;0;0;;; -7138;1;0;false;false;;;;;; -7139;5;1;false;false;127;0;85;;; -7144;1;0;false;false;0;0;0;;; -7145;2;0;false;false;;;;;; -7147;64;0;false;false;63;127;95;;; -7211;1;0;false;false;;;;;; -7212;5;0;false;false;0;0;0;;; -7217;1;0;false;false;;;;;; -7218;15;0;false;false;0;0;0;;; -7233;1;0;false;false;;;;;; -7234;1;0;false;false;0;0;0;;; -7235;1;0;false;false;;;;;; -7236;4;1;false;false;127;0;85;;; -7240;1;0;false;false;0;0;0;;; -7241;3;0;false;false;;;;;; -7244;5;0;false;false;0;0;0;;; -7249;1;0;false;false;;;;;; -7250;16;0;false;false;0;0;0;;; -7266;1;0;false;false;;;;;; -7267;1;0;false;false;0;0;0;;; -7268;1;0;false;false;;;;;; -7269;4;1;false;false;127;0;85;;; -7273;1;0;false;false;0;0;0;;; -7274;3;0;false;false;;;;;; -7277;3;1;false;false;127;0;85;;; -7280;1;0;false;false;;;;;; -7281;14;0;false;false;0;0;0;;; -7295;1;0;false;false;;;;;; -7296;1;0;false;false;0;0;0;;; -7297;1;0;false;false;;;;;; -7298;9;0;false;false;0;0;0;;; -7307;3;0;false;false;;;;;; -7310;7;1;false;false;127;0;85;;; -7317;1;0;false;false;;;;;; -7318;9;0;false;false;0;0;0;;; -7327;1;0;false;false;;;;;; -7328;1;0;false;false;0;0;0;;; -7329;1;0;false;false;;;;;; -7330;4;1;false;false;127;0;85;;; -7334;1;0;false;false;0;0;0;;; -7335;3;0;false;false;;;;;; -7338;5;0;false;false;0;0;0;;; -7343;1;0;false;false;;;;;; -7344;12;0;false;false;0;0;0;;; -7356;1;0;false;false;;;;;; -7357;1;0;false;false;0;0;0;;; -7358;1;0;false;false;;;;;; -7359;4;1;false;false;127;0;85;;; -7363;1;0;false;false;0;0;0;;; -7364;3;0;false;false;;;;;; -7367;7;1;false;false;127;0;85;;; -7374;1;0;false;false;;;;;; -7375;20;0;false;false;0;0;0;;; -7395;1;0;false;false;;;;;; -7396;1;0;false;false;0;0;0;;; -7397;1;0;false;false;;;;;; -7398;4;1;false;false;127;0;85;;; -7402;1;0;false;false;0;0;0;;; -7403;5;0;false;false;;;;;; -7408;5;1;false;false;127;0;85;;; -7413;1;0;false;false;;;;;; -7414;6;1;false;false;127;0;85;;; -7420;1;0;false;false;;;;;; -7421;7;1;false;false;127;0;85;;; -7428;1;0;false;false;;;;;; -7429;10;0;false;false;0;0;0;;; -7439;1;0;false;false;;;;;; -7440;7;0;false;false;0;0;0;;; -7447;1;0;false;false;;;;;; -7448;9;0;false;false;0;0;0;;; -7457;3;0;false;false;;;;;; -7460;5;1;false;false;127;0;85;;; -7465;1;0;false;false;;;;;; -7466;6;1;false;false;127;0;85;;; -7472;1;0;false;false;;;;;; -7473;7;1;false;false;127;0;85;;; -7480;1;0;false;false;;;;;; -7481;14;0;false;false;0;0;0;;; -7495;3;0;false;false;;;;;; -7498;6;1;false;false;127;0;85;;; -7504;1;0;false;false;;;;;; -7505;1;0;false;false;0;0;0;;; -7506;4;0;false;false;;;;;; -7510;6;0;false;false;0;0;0;;; -7516;1;0;false;false;;;;;; -7517;8;0;false;false;0;0;0;;; -7525;1;0;false;false;;;;;; -7526;1;0;false;false;0;0;0;;; -7527;1;0;false;false;;;;;; -7528;18;0;false;false;0;0;0;;; -7546;4;0;false;false;;;;;; -7550;9;0;false;false;0;0;0;;; -7559;1;0;false;false;;;;;; -7560;1;0;false;false;0;0;0;;; -7561;1;0;false;false;;;;;; -7562;8;0;false;false;42;0;255;;; -7570;18;0;false;false;0;0;0;;; -7588;4;0;false;false;;;;;; -7592;6;0;false;false;0;0;0;;; -7598;1;0;false;false;;;;;; -7599;1;0;false;false;0;0;0;;; -7600;1;0;false;false;;;;;; -7601;5;0;false;false;42;0;255;;; -7606;18;0;false;false;0;0;0;;; -7624;4;0;false;false;;;;;; -7628;8;0;false;false;0;0;0;;; -7636;1;0;false;false;;;;;; -7637;1;0;false;false;0;0;0;;; -7638;1;0;false;false;;;;;; -7639;7;0;false;false;42;0;255;;; -7646;18;0;false;false;0;0;0;;; -7664;4;0;false;false;;;;;; -7668;13;0;false;false;0;0;0;;; -7681;1;0;false;false;;;;;; -7682;1;0;false;false;0;0;0;;; -7683;1;0;false;false;;;;;; -7684;11;0;false;false;0;0;0;;; -7695;3;0;false;false;;;;;; -7698;1;0;false;false;0;0;0;;; -7699;5;0;false;false;;;;;; -7704;3;0;false;false;63;95;191;;; -7707;4;0;false;false;;;;;; -7711;1;0;false;false;63;95;191;;; -7712;1;0;false;false;;;;;; -7713;3;0;false;false;63;95;191;;; -7716;1;0;false;false;;;;;; -7717;8;0;false;false;63;95;191;;; -7725;1;0;false;false;;;;;; -7726;5;0;false;false;63;95;191;;; -7731;1;0;false;false;;;;;; -7732;10;0;false;false;63;95;191;;; -7742;1;0;false;false;;;;;; -7743;8;0;false;false;63;95;191;;; -7751;1;0;false;false;;;;;; -7752;2;0;false;false;63;95;191;;; -7754;1;0;false;false;;;;;; -7755;1;0;false;false;63;95;191;;; -7756;1;0;false;false;;;;;; -7757;5;0;false;false;63;95;191;;; -7762;1;0;false;false;;;;;; -7763;2;0;false;false;63;95;191;;; -7765;1;0;false;false;;;;;; -7766;5;0;false;false;63;95;191;;; -7771;4;0;false;false;;;;;; -7775;1;0;false;false;63;95;191;;; -7776;1;0;false;false;;;;;; -7777;2;0;false;false;63;95;191;;; -7779;1;0;false;false;;;;;; -7780;8;0;false;false;63;95;191;;; -7788;1;0;false;false;;;;;; -7789;2;0;false;false;63;95;191;;; -7791;1;0;false;false;;;;;; -7792;7;0;false;false;127;127;159;;; -7799;8;0;false;false;63;95;191;;; -7807;1;0;false;false;;;;;; -7808;8;0;false;false;127;127;159;;; -7816;1;0;false;false;;;;;; -7817;2;0;false;false;63;95;191;;; -7819;1;0;false;false;;;;;; -7820;8;0;false;false;63;95;191;;; -7828;1;0;false;false;;;;;; -7829;2;0;false;false;63;95;191;;; -7831;1;0;false;false;;;;;; -7832;3;0;false;false;63;95;191;;; -7835;5;0;false;false;;;;;; -7840;1;0;false;false;63;95;191;;; -7841;1;0;false;false;;;;;; -7842;25;0;false;false;63;95;191;;; -7867;1;0;false;false;;;;;; -7868;4;0;false;false;63;95;191;;; -7872;1;0;false;false;;;;;; -7873;3;0;false;false;63;95;191;;; -7876;1;0;false;false;;;;;; -7877;5;0;false;false;63;95;191;;; -7882;1;0;false;false;;;;;; -7883;6;0;false;false;63;95;191;;; -7889;1;0;false;false;;;;;; -7890;3;0;false;false;63;95;191;;; -7893;1;0;false;false;;;;;; -7894;2;0;false;false;63;95;191;;; -7896;5;0;false;false;;;;;; -7901;1;0;false;false;63;95;191;;; -7902;1;0;false;false;;;;;; -7903;7;0;false;false;63;95;191;;; -7910;1;0;false;false;;;;;; -7911;4;0;false;false;63;95;191;;; -7915;1;0;false;false;;;;;; -7916;3;0;false;false;63;95;191;;; -7919;1;0;false;false;;;;;; -7920;7;0;false;false;63;95;191;;; -7927;4;0;false;false;;;;;; -7931;2;0;false;false;63;95;191;;; -7933;3;0;false;false;;;;;; -7936;6;1;false;false;127;0;85;;; -7942;1;0;false;false;;;;;; -7943;5;1;false;false;127;0;85;;; -7948;1;0;false;false;;;;;; -7949;8;0;false;false;0;0;0;;; -7957;1;0;false;false;;;;;; -7958;10;1;false;false;127;0;85;;; -7968;1;0;false;false;;;;;; -7969;8;0;false;false;0;0;0;;; -7977;1;0;false;false;;;;;; -7978;1;0;false;false;0;0;0;;; -7979;4;0;false;false;;;;;; -7983;5;1;false;false;127;0;85;;; -7988;1;0;false;false;;;;;; -7989;6;1;false;false;127;0;85;;; -7995;1;0;false;false;;;;;; -7996;3;1;false;false;127;0;85;;; -7999;1;0;false;false;;;;;; -8000;4;0;false;false;0;0;0;;; -8004;1;0;false;false;;;;;; -8005;1;0;false;false;0;0;0;;; -8006;1;0;false;false;;;;;; -8007;2;0;false;false;0;0;0;;; -8009;6;0;false;false;;;;;; -8015;39;0;false;false;63;127;95;;; -8054;2;0;false;false;;;;;; -8056;5;1;false;false;127;0;85;;; -8061;1;0;false;false;;;;;; -8062;6;1;false;false;127;0;85;;; -8068;1;0;false;false;;;;;; -8069;3;1;false;false;127;0;85;;; -8072;1;0;false;false;;;;;; -8073;6;0;false;false;0;0;0;;; -8079;1;0;false;false;;;;;; -8080;1;0;false;false;0;0;0;;; -8081;1;0;false;false;;;;;; -8082;2;0;false;false;0;0;0;;; -8084;5;0;false;false;;;;;; -8089;35;0;false;false;63;127;95;;; -8124;2;0;false;false;;;;;; -8126;5;1;false;false;127;0;85;;; -8131;1;0;false;false;;;;;; -8132;6;1;false;false;127;0;85;;; -8138;1;0;false;false;;;;;; -8139;3;1;false;false;127;0;85;;; -8142;1;0;false;false;;;;;; -8143;5;0;false;false;0;0;0;;; -8148;1;0;false;false;;;;;; -8149;1;0;false;false;0;0;0;;; -8150;1;0;false;false;;;;;; -8151;2;0;false;false;0;0;0;;; -8153;6;0;false;false;;;;;; -8159;40;0;false;false;63;127;95;;; -8199;4;0;false;false;;;;;; -8203;10;0;false;false;0;0;0;;; -8213;1;0;false;false;;;;;; -8214;7;0;false;false;0;0;0;;; -8221;4;0;false;false;;;;;; -8225;7;0;false;false;0;0;0;;; -8232;1;0;false;false;;;;;; -8233;8;0;false;false;0;0;0;;; -8241;4;0;false;false;;;;;; -8245;13;0;false;false;0;0;0;;; -8258;1;0;false;false;;;;;; -8259;9;0;false;false;0;0;0;;; -8268;4;0;false;false;;;;;; -8272;22;0;false;false;0;0;0;;; -8294;1;0;false;false;;;;;; -8295;13;0;false;false;0;0;0;;; -8308;4;0;false;false;;;;;; -8312;17;0;false;false;0;0;0;;; -8329;1;0;false;false;;;;;; -8330;15;0;false;false;0;0;0;;; -8345;4;0;false;false;;;;;; -8349;31;0;false;false;63;127;95;;; -8380;2;0;false;false;;;;;; -8382;9;0;false;false;0;0;0;;; -8391;1;0;false;false;;;;;; -8392;11;0;false;false;0;0;0;;; -8403;7;0;false;false;;;;;; -8410;28;0;false;false;63;127;95;;; -8438;2;0;false;false;;;;;; -8440;4;0;false;false;0;0;0;;; -8444;1;0;false;false;;;;;; -8445;12;0;false;false;0;0;0;;; -8457;4;0;false;false;;;;;; -8461;8;0;false;false;0;0;0;;; -8469;1;0;false;false;;;;;; -8470;16;0;false;false;0;0;0;;; -8486;4;0;false;false;;;;;; -8490;9;0;false;false;0;0;0;;; -8499;1;0;false;false;;;;;; -8500;14;0;false;false;0;0;0;;; -8514;6;0;false;false;;;;;; -8520;55;0;false;false;63;127;95;;; -8575;2;0;false;false;;;;;; -8577;9;0;false;false;0;0;0;;; -8586;1;0;false;false;;;;;; -8587;15;0;false;false;0;0;0;;; -8602;1;0;false;false;;;;;; -8603;1;0;false;false;0;0;0;;; -8604;1;0;false;false;;;;;; -8605;3;1;false;false;127;0;85;;; -8608;1;0;false;false;;;;;; -8609;12;0;false;false;0;0;0;;; -8621;1;0;false;false;;;;;; -8622;28;0;false;false;63;127;95;;; -8650;2;0;false;false;;;;;; -8652;9;0;false;false;0;0;0;;; -8661;1;0;false;false;;;;;; -8662;10;0;false;false;0;0;0;;; -8672;1;0;false;false;;;;;; -8673;1;0;false;false;0;0;0;;; -8674;1;0;false;false;;;;;; -8675;3;1;false;false;127;0;85;;; -8678;1;0;false;false;;;;;; -8679;12;0;false;false;0;0;0;;; -8691;3;0;false;false;;;;;; -8694;23;0;false;false;63;127;95;;; -8717;2;0;false;false;;;;;; -8719;9;0;false;false;0;0;0;;; -8728;1;0;false;false;;;;;; -8729;12;0;false;false;0;0;0;;; -8741;1;0;false;false;;;;;; -8742;1;0;false;false;0;0;0;;; -8743;1;0;false;false;;;;;; -8744;3;1;false;false;127;0;85;;; -8747;1;0;false;false;;;;;; -8748;12;0;false;false;0;0;0;;; -8760;2;0;false;false;;;;;; -8762;57;0;false;false;63;127;95;;; -8819;2;0;false;false;;;;;; -8821;2;0;false;false;0;0;0;;; -8823;1;0;false;false;;;;;; -8824;3;0;false;false;0;0;0;;; -8827;11;0;false;false;;;;;; -8838;15;0;false;false;63;127;95;;; -8853;2;0;false;false;;;;;; -8855;3;1;false;false;127;0;85;;; -8858;1;0;false;false;;;;;; -8859;10;0;false;false;0;0;0;;; -8869;9;0;false;false;;;;;; -8878;38;0;false;false;63;127;95;;; -8916;2;0;false;false;;;;;; -8918;3;1;false;false;127;0;85;;; -8921;1;0;false;false;;;;;; -8922;10;0;false;false;0;0;0;;; -8932;9;0;false;false;;;;;; -8941;24;0;false;false;63;127;95;;; -8965;2;0;false;false;;;;;; -8967;3;1;false;false;127;0;85;;; -8970;1;0;false;false;;;;;; -8971;8;0;false;false;0;0;0;;; -8979;9;0;false;false;;;;;; -8988;23;0;false;false;63;127;95;;; -9011;2;0;false;false;;;;;; -9013;3;1;false;false;127;0;85;;; -9016;1;0;false;false;;;;;; -9017;9;0;false;false;0;0;0;;; -9026;9;0;false;false;;;;;; -9035;30;0;false;false;63;127;95;;; -9065;2;0;false;false;;;;;; -9067;3;1;false;false;127;0;85;;; -9070;1;0;false;false;;;;;; -9071;10;0;false;false;0;0;0;;; -9081;9;0;false;false;;;;;; -9090;34;0;false;false;63;127;95;;; -9124;2;0;false;false;;;;;; -9126;3;1;false;false;127;0;85;;; -9129;1;0;false;false;;;;;; -9130;8;0;false;false;0;0;0;;; -9138;9;0;false;false;;;;;; -9147;33;0;false;false;63;127;95;;; -9180;2;0;false;false;;;;;; -9182;7;1;false;false;127;0;85;;; -9189;1;0;false;false;;;;;; -9190;11;0;false;false;0;0;0;;; -9201;8;0;false;false;;;;;; -9209;28;0;false;false;63;127;95;;; -9237;2;0;false;false;;;;;; -9239;5;0;false;false;0;0;0;;; -9244;1;0;false;false;;;;;; -9245;9;0;false;false;0;0;0;;; -9254;1;0;false;false;;;;;; -9255;1;0;false;false;0;0;0;;; -9256;1;0;false;false;;;;;; -9257;4;1;false;false;127;0;85;;; -9261;1;0;false;false;0;0;0;;; -9262;5;0;false;false;;;;;; -9267;18;0;false;false;63;127;95;;; -9285;2;0;false;false;;;;;; -9287;7;1;false;false;127;0;85;;; -9294;1;0;false;false;;;;;; -9295;9;0;false;false;0;0;0;;; -9304;6;0;false;false;;;;;; -9310;48;0;false;false;63;127;95;;; -9358;3;0;false;false;;;;;; -9361;3;0;false;false;63;95;191;;; -9364;4;0;false;false;;;;;; -9368;1;0;false;false;63;95;191;;; -9369;1;0;false;false;;;;;; -9370;7;0;false;false;63;95;191;;; -9377;1;0;false;false;;;;;; -9378;2;0;false;false;63;95;191;;; -9380;1;0;false;false;;;;;; -9381;8;0;false;false;63;95;191;;; -9389;1;0;false;false;;;;;; -9390;2;0;false;false;63;95;191;;; -9392;1;0;false;false;;;;;; -9393;7;0;false;false;127;127;159;;; -9400;8;0;false;false;63;95;191;;; -9408;8;0;false;false;127;127;159;;; -9416;1;0;false;false;63;95;191;;; -9417;4;0;false;false;;;;;; -9421;1;0;false;false;63;95;191;;; -9422;1;0;false;false;;;;;; -9423;6;0;false;false;63;95;191;;; -9429;1;0;false;false;;;;;; -9430;3;0;false;false;63;95;191;;; -9433;1;0;false;false;;;;;; -9434;6;0;false;false;63;95;191;;; -9440;1;0;false;false;;;;;; -9441;7;0;false;false;63;95;191;;; -9448;1;0;false;false;;;;;; -9449;3;0;false;false;63;95;191;;; -9452;1;0;false;false;;;;;; -9453;9;0;false;false;63;95;191;;; -9462;1;0;false;false;;;;;; -9463;4;0;false;false;63;95;191;;; -9467;1;0;false;false;;;;;; -9468;4;0;false;false;63;95;191;;; -9472;1;0;false;false;;;;;; -9473;5;0;false;false;63;95;191;;; -9478;5;0;false;false;;;;;; -9483;1;0;false;false;63;95;191;;; -9484;1;0;false;false;;;;;; -9485;2;0;false;false;63;95;191;;; -9487;1;0;false;false;;;;;; -9488;2;0;false;false;63;95;191;;; -9490;1;0;false;false;;;;;; -9491;9;0;false;false;63;95;191;;; -9500;1;0;false;false;;;;;; -9501;4;0;false;false;63;95;191;;; -9505;1;0;false;false;;;;;; -9506;10;0;false;false;63;95;191;;; -9516;4;0;false;false;;;;;; -9520;1;0;false;false;63;95;191;;; -9521;1;0;false;false;;;;;; -9522;4;0;false;false;127;127;159;;; -9526;4;0;false;false;;;;;; -9530;1;0;false;false;63;95;191;;; -9531;1;0;false;false;;;;;; -9532;7;1;false;false;127;159;191;;; -9539;6;0;false;false;63;95;191;;; -9545;1;0;false;false;;;;;; -9546;10;0;false;false;63;95;191;;; -9556;1;0;false;false;;;;;; -9557;6;0;false;false;63;95;191;;; -9563;1;0;false;false;;;;;; -9564;2;0;false;false;63;95;191;;; -9566;1;0;false;false;;;;;; -9567;6;0;false;false;63;95;191;;; -9573;4;0;false;false;;;;;; -9577;1;0;false;false;63;95;191;;; -9578;1;0;false;false;;;;;; -9579;7;1;false;false;127;159;191;;; -9586;7;0;false;false;63;95;191;;; -9593;1;0;false;false;;;;;; -9594;7;0;false;false;63;95;191;;; -9601;1;0;false;false;;;;;; -9602;6;0;false;false;63;95;191;;; -9608;1;0;false;false;;;;;; -9609;2;0;false;false;63;95;191;;; -9611;1;0;false;false;;;;;; -9612;5;0;false;false;63;95;191;;; -9617;1;0;false;false;;;;;; -9618;3;0;false;false;63;95;191;;; -9621;4;0;false;false;;;;;; -9625;1;0;false;false;63;95;191;;; -9626;1;0;false;false;;;;;; -9627;7;1;false;false;127;159;191;;; -9634;12;0;false;false;63;95;191;;; -9646;1;0;false;false;;;;;; -9647;5;0;false;false;63;95;191;;; -9652;1;0;false;false;;;;;; -9653;7;0;false;false;63;95;191;;; -9660;4;0;false;false;;;;;; -9664;2;0;false;false;63;95;191;;; -9666;5;0;false;false;;;;;; -9671;19;0;false;false;0;0;0;;; -9690;1;0;false;false;;;;;; -9691;7;0;false;false;0;0;0;;; -9698;1;0;false;false;;;;;; -9699;7;0;false;false;0;0;0;;; -9706;1;0;false;false;;;;;; -9707;8;0;false;false;0;0;0;;; -9715;1;0;false;false;;;;;; -9716;22;0;false;false;0;0;0;;; -9738;1;0;false;false;;;;;; -9739;13;0;false;false;0;0;0;;; -9752;1;0;false;false;;;;;; -9753;1;0;false;false;0;0;0;;; -9754;4;0;false;false;;;;;; -9758;11;0;false;false;0;0;0;;; -9769;1;0;false;false;;;;;; -9770;4;0;false;false;0;0;0;;; -9774;1;0;false;false;;;;;; -9775;1;0;false;false;0;0;0;;; -9776;1;0;false;false;;;;;; -9777;25;0;false;false;0;0;0;;; -9802;6;0;false;false;;;;;; -9808;4;1;false;false;127;0;85;;; -9812;7;0;false;false;0;0;0;;; -9819;1;0;false;false;;;;;; -9820;1;0;false;false;0;0;0;;; -9821;1;0;false;false;;;;;; -9822;7;0;false;false;0;0;0;;; -9829;4;0;false;false;;;;;; -9833;4;1;false;false;127;0;85;;; -9837;8;0;false;false;0;0;0;;; -9845;1;0;false;false;;;;;; -9846;1;0;false;false;0;0;0;;; -9847;1;0;false;false;;;;;; -9848;8;0;false;false;0;0;0;;; -9856;4;0;false;false;;;;;; -9860;4;1;false;false;127;0;85;;; -9864;13;0;false;false;0;0;0;;; -9877;1;0;false;false;;;;;; -9878;1;0;false;false;0;0;0;;; -9879;1;0;false;false;;;;;; -9880;13;0;false;false;0;0;0;;; -9893;4;0;false;false;;;;;; -9897;4;1;false;false;127;0;85;;; -9901;9;0;false;false;0;0;0;;; -9910;1;0;false;false;;;;;; -9911;1;0;false;false;0;0;0;;; -9912;1;0;false;false;;;;;; -9913;18;0;false;false;0;0;0;;; -9931;1;0;false;false;;;;;; -9932;1;0;false;false;0;0;0;;; -9933;1;0;false;false;;;;;; -9934;13;0;false;false;0;0;0;;; -9947;1;0;false;false;;;;;; -9948;2;0;false;false;0;0;0;;; -9950;1;0;false;false;;;;;; -9951;2;0;false;false;0;0;0;;; -9953;4;0;false;false;;;;;; -9957;10;0;false;false;0;0;0;;; -9967;1;0;false;false;;;;;; -9968;1;0;false;false;0;0;0;;; -9969;1;0;false;false;;;;;; -9970;22;0;false;false;0;0;0;;; -9992;4;0;false;false;;;;;; -9996;9;0;false;false;0;0;0;;; -10005;1;0;false;false;;;;;; -10006;1;0;false;false;0;0;0;;; -10007;1;0;false;false;;;;;; -10008;2;0;false;false;0;0;0;;; -10010;4;0;false;false;;;;;; -10014;7;0;false;false;0;0;0;;; -10021;1;0;false;false;;;;;; -10022;1;0;false;false;0;0;0;;; -10023;1;0;false;false;;;;;; -10024;18;0;false;false;0;0;0;;; -10042;4;0;false;false;;;;;; -10046;2;1;false;false;127;0;85;;; -10048;1;0;false;false;;;;;; -10049;11;0;false;false;0;0;0;;; -10060;1;0;false;false;;;;;; -10061;2;0;false;false;0;0;0;;; -10063;1;0;false;false;;;;;; -10064;23;0;false;false;0;0;0;;; -10087;1;0;false;false;;;;;; -10088;1;0;false;false;0;0;0;;; -10089;5;0;false;false;;;;;; -10094;9;0;false;false;0;0;0;;; -10103;1;0;false;false;;;;;; -10104;1;0;false;false;0;0;0;;; -10105;1;0;false;false;;;;;; -10106;15;0;false;false;0;0;0;;; -10121;5;0;false;false;;;;;; -10126;7;0;false;false;0;0;0;;; -10133;1;0;false;false;;;;;; -10134;1;0;false;false;0;0;0;;; -10135;1;0;false;false;;;;;; -10136;13;0;false;false;0;0;0;;; -10149;5;0;false;false;;;;;; -10154;2;1;false;false;127;0;85;;; -10156;1;0;false;false;;;;;; -10157;8;0;false;false;0;0;0;;; -10165;1;0;false;false;;;;;; -10166;1;0;false;false;0;0;0;;; -10167;1;0;false;false;;;;;; -10168;10;0;false;false;0;0;0;;; -10178;1;0;false;false;;;;;; -10179;1;0;false;false;0;0;0;;; -10180;6;0;false;false;;;;;; -10186;3;1;false;false;127;0;85;;; -10189;1;0;false;false;;;;;; -10190;4;0;false;false;0;0;0;;; -10194;1;0;false;false;;;;;; -10195;1;0;false;false;0;0;0;;; -10196;1;0;false;false;;;;;; -10197;8;0;false;false;0;0;0;;; -10205;6;0;false;false;;;;;; -10211;7;0;false;false;0;0;0;;; -10218;1;0;false;false;;;;;; -10219;1;0;false;false;0;0;0;;; -10220;1;0;false;false;;;;;; -10221;10;0;false;false;0;0;0;;; -10231;6;0;false;false;;;;;; -10237;9;0;false;false;0;0;0;;; -10246;1;0;false;false;;;;;; -10247;1;0;false;false;0;0;0;;; -10248;1;0;false;false;;;;;; -10249;5;0;false;false;0;0;0;;; -10254;5;0;false;false;;;;;; -10259;1;0;false;false;0;0;0;;; -10260;7;0;false;false;;;;;; -10267;1;0;false;false;0;0;0;;; -10268;5;0;false;false;;;;;; -10273;4;1;false;false;127;0;85;;; -10277;5;0;false;false;;;;;; -10282;2;1;false;false;127;0;85;;; -10284;1;0;false;false;;;;;; -10285;11;0;false;false;0;0;0;;; -10296;1;0;false;false;;;;;; -10297;2;0;false;false;0;0;0;;; -10299;1;0;false;false;;;;;; -10300;22;0;false;false;0;0;0;;; -10322;1;0;false;false;;;;;; -10323;1;0;false;false;0;0;0;;; -10324;5;0;false;false;;;;;; -10329;9;0;false;false;0;0;0;;; -10338;1;0;false;false;;;;;; -10339;1;0;false;false;0;0;0;;; -10340;1;0;false;false;;;;;; -10341;27;0;false;false;0;0;0;;; -10368;4;0;false;false;;;;;; -10372;1;0;false;false;0;0;0;;; -10373;6;0;false;false;;;;;; -10379;15;0;false;false;0;0;0;;; -10394;1;0;false;false;;;;;; -10395;1;0;false;false;0;0;0;;; -10396;1;0;false;false;;;;;; -10397;34;0;false;false;0;0;0;;; -10431;4;0;false;false;;;;;; -10435;33;0;false;false;0;0;0;;; -10468;4;0;false;false;;;;;; -10472;30;0;false;false;0;0;0;;; -10502;3;0;false;false;;;;;; -10505;1;0;false;false;0;0;0;;; -10506;3;0;false;false;;;;;; -10509;3;0;false;false;63;95;191;;; -10512;4;0;false;false;;;;;; -10516;1;0;false;false;63;95;191;;; -10517;1;0;false;false;;;;;; -10518;6;0;false;false;63;95;191;;; -10524;1;0;false;false;;;;;; -10525;3;0;false;false;63;95;191;;; -10528;1;0;false;false;;;;;; -10529;4;0;false;false;63;95;191;;; -10533;1;0;false;false;;;;;; -10534;8;0;false;false;63;95;191;;; -10542;1;0;false;false;;;;;; -10543;2;0;false;false;63;95;191;;; -10545;1;0;false;false;;;;;; -10546;3;0;false;false;63;95;191;;; -10549;1;0;false;false;;;;;; -10550;5;0;false;false;63;95;191;;; -10555;1;0;false;false;;;;;; -10556;5;0;false;false;63;95;191;;; -10561;4;0;false;false;;;;;; -10565;1;0;false;false;63;95;191;;; -10566;1;0;false;false;;;;;; -10567;4;0;false;false;127;127;159;;; -10571;4;0;false;false;;;;;; -10575;1;0;false;false;63;95;191;;; -10576;1;0;false;false;;;;;; -10577;7;1;false;false;127;159;191;;; -10584;10;0;false;false;63;95;191;;; -10594;1;0;false;false;;;;;; -10595;6;0;false;false;63;95;191;;; -10601;1;0;false;false;;;;;; -10602;2;0;false;false;63;95;191;;; -10604;1;0;false;false;;;;;; -10605;3;0;false;false;63;95;191;;; -10608;1;0;false;false;;;;;; -10609;4;0;false;false;63;95;191;;; -10613;1;0;false;false;;;;;; -10614;2;0;false;false;63;95;191;;; -10616;1;0;false;false;;;;;; -10617;5;0;false;false;63;95;191;;; -10622;1;0;false;false;;;;;; -10623;4;0;false;false;63;95;191;;; -10627;1;0;false;false;;;;;; -10628;8;0;false;false;63;95;191;;; -10636;1;0;false;false;;;;;; -10637;4;0;false;false;63;95;191;;; -10641;5;0;false;false;;;;;; -10646;1;0;false;false;63;95;191;;; -10647;2;0;false;false;;;;;; -10649;8;0;false;false;63;95;191;;; -10657;1;0;false;false;;;;;; -10658;2;0;false;false;63;95;191;;; -10660;1;0;false;false;;;;;; -10661;3;0;false;false;63;95;191;;; -10664;1;0;false;false;;;;;; -10665;5;0;false;false;63;95;191;;; -10670;1;0;false;false;;;;;; -10671;2;0;false;false;63;95;191;;; -10673;1;0;false;false;;;;;; -10674;3;0;false;false;63;95;191;;; -10677;1;0;false;false;;;;;; -10678;9;0;false;false;63;95;191;;; -10687;4;0;false;false;;;;;; -10691;1;0;false;false;63;95;191;;; -10692;1;0;false;false;;;;;; -10693;7;1;false;false;127;159;191;;; -10700;4;0;false;false;63;95;191;;; -10704;1;0;false;false;;;;;; -10705;4;0;false;false;63;95;191;;; -10709;1;0;false;false;;;;;; -10710;2;0;false;false;63;95;191;;; -10712;1;0;false;false;;;;;; -10713;5;0;false;false;63;95;191;;; -10718;1;0;false;false;;;;;; -10719;4;0;false;false;63;95;191;;; -10723;1;0;false;false;;;;;; -10724;8;0;false;false;63;95;191;;; -10732;1;0;false;false;;;;;; -10733;4;0;false;false;63;95;191;;; -10737;5;0;false;false;;;;;; -10742;2;0;false;false;63;95;191;;; -10744;3;0;false;false;;;;;; -10747;4;1;false;false;127;0;85;;; -10751;1;0;false;false;;;;;; -10752;18;0;false;false;0;0;0;;; -10770;3;1;false;false;127;0;85;;; -10773;1;0;false;false;;;;;; -10774;11;0;false;false;0;0;0;;; -10785;1;0;false;false;;;;;; -10786;6;0;false;false;0;0;0;;; -10792;1;0;false;false;;;;;; -10793;5;0;false;false;0;0;0;;; -10798;1;0;false;false;;;;;; -10799;1;0;false;false;0;0;0;;; -10800;4;0;false;false;;;;;; -10804;3;1;false;false;127;0;85;;; -10807;2;0;false;false;0;0;0;;; -10809;1;0;false;false;;;;;; -10810;8;0;false;false;0;0;0;;; -10818;1;0;false;false;;;;;; -10819;1;0;false;false;0;0;0;;; -10820;1;0;false;false;;;;;; -10821;34;0;false;false;0;0;0;;; -10855;1;0;false;false;;;;;; -10856;6;0;false;false;0;0;0;;; -10862;8;0;false;false;;;;;; -10870;2;1;false;false;127;0;85;;; -10872;1;0;false;false;;;;;; -10873;9;0;false;false;0;0;0;;; -10882;1;0;false;false;;;;;; -10883;2;0;false;false;0;0;0;;; -10885;1;0;false;false;;;;;; -10886;4;1;false;false;127;0;85;;; -10890;1;0;false;false;0;0;0;;; -10891;1;0;false;false;;;;;; -10892;1;0;false;false;0;0;0;;; -10893;5;0;false;false;;;;;; -10898;17;0;false;false;0;0;0;;; -10915;3;1;false;false;127;0;85;;; -10918;1;0;false;false;;;;;; -10919;20;0;false;false;0;0;0;;; -10939;1;0;false;false;;;;;; -10940;10;0;false;false;0;0;0;;; -10950;4;0;false;false;;;;;; -10954;1;0;false;false;0;0;0;;; -10955;3;0;false;false;;;;;; -10958;1;0;false;false;0;0;0;;; -10959;3;0;false;false;;;;;; -10962;3;0;false;false;63;95;191;;; -10965;4;0;false;false;;;;;; -10969;1;0;false;false;63;95;191;;; -10970;1;0;false;false;;;;;; -10971;6;0;false;false;63;95;191;;; -10977;1;0;false;false;;;;;; -10978;3;0;false;false;63;95;191;;; -10981;1;0;false;false;;;;;; -10982;4;0;false;false;63;95;191;;; -10986;1;0;false;false;;;;;; -10987;10;0;false;false;63;95;191;;; -10997;1;0;false;false;;;;;; -10998;5;0;false;false;63;95;191;;; -11003;1;0;false;false;;;;;; -11004;2;0;false;false;63;95;191;;; -11006;1;0;false;false;;;;;; -11007;3;0;false;false;63;95;191;;; -11010;1;0;false;false;;;;;; -11011;5;0;false;false;63;95;191;;; -11016;1;0;false;false;;;;;; -11017;5;0;false;false;63;95;191;;; -11022;4;0;false;false;;;;;; -11026;1;0;false;false;63;95;191;;; -11027;1;0;false;false;;;;;; -11028;4;0;false;false;127;127;159;;; -11032;4;0;false;false;;;;;; -11036;1;0;false;false;63;95;191;;; -11037;1;0;false;false;;;;;; -11038;7;1;false;false;127;159;191;;; -11045;10;0;false;false;63;95;191;;; -11055;1;0;false;false;;;;;; -11056;6;0;false;false;63;95;191;;; -11062;1;0;false;false;;;;;; -11063;2;0;false;false;63;95;191;;; -11065;1;0;false;false;;;;;; -11066;3;0;false;false;63;95;191;;; -11069;1;0;false;false;;;;;; -11070;4;0;false;false;63;95;191;;; -11074;1;0;false;false;;;;;; -11075;2;0;false;false;63;95;191;;; -11077;1;0;false;false;;;;;; -11078;5;0;false;false;63;95;191;;; -11083;1;0;false;false;;;;;; -11084;3;0;false;false;63;95;191;;; -11087;1;0;false;false;;;;;; -11088;10;0;false;false;63;95;191;;; -11098;5;0;false;false;;;;;; -11103;1;0;false;false;63;95;191;;; -11104;2;0;false;false;;;;;; -11106;5;0;false;false;63;95;191;;; -11111;1;0;false;false;;;;;; -11112;4;0;false;false;63;95;191;;; -11116;1;0;false;false;;;;;; -11117;8;0;false;false;63;95;191;;; -11125;1;0;false;false;;;;;; -11126;2;0;false;false;63;95;191;;; -11128;1;0;false;false;;;;;; -11129;3;0;false;false;63;95;191;;; -11132;1;0;false;false;;;;;; -11133;5;0;false;false;63;95;191;;; -11138;1;0;false;false;;;;;; -11139;2;0;false;false;63;95;191;;; -11141;1;0;false;false;;;;;; -11142;3;0;false;false;63;95;191;;; -11145;1;0;false;false;;;;;; -11146;9;0;false;false;63;95;191;;; -11155;4;0;false;false;;;;;; -11159;1;0;false;false;63;95;191;;; -11160;1;0;false;false;;;;;; -11161;7;1;false;false;127;159;191;;; -11168;4;0;false;false;63;95;191;;; -11172;1;0;false;false;;;;;; -11173;4;0;false;false;63;95;191;;; -11177;1;0;false;false;;;;;; -11178;2;0;false;false;63;95;191;;; -11180;1;0;false;false;;;;;; -11181;5;0;false;false;63;95;191;;; -11186;1;0;false;false;;;;;; -11187;3;0;false;false;63;95;191;;; -11190;1;0;false;false;;;;;; -11191;10;0;false;false;63;95;191;;; -11201;1;0;false;false;;;;;; -11202;5;0;false;false;63;95;191;;; -11207;1;0;false;false;;;;;; -11208;3;0;false;false;63;95;191;;; -11211;4;0;false;false;;;;;; -11215;2;0;false;false;63;95;191;;; -11217;3;0;false;false;;;;;; -11220;4;1;false;false;127;0;85;;; -11224;1;0;false;false;;;;;; -11225;20;0;false;false;0;0;0;;; -11245;3;1;false;false;127;0;85;;; -11248;1;0;false;false;;;;;; -11249;11;0;false;false;0;0;0;;; -11260;1;0;false;false;;;;;; -11261;6;0;false;false;0;0;0;;; -11267;1;0;false;false;;;;;; -11268;5;0;false;false;0;0;0;;; -11273;1;0;false;false;;;;;; -11274;1;0;false;false;0;0;0;;; -11275;4;0;false;false;;;;;; -11279;15;0;false;false;0;0;0;;; -11294;1;0;false;false;;;;;; -11295;5;0;false;false;0;0;0;;; -11300;1;0;false;false;;;;;; -11301;1;0;false;false;0;0;0;;; -11302;1;0;false;false;;;;;; -11303;40;0;false;false;0;0;0;;; -11343;1;0;false;false;;;;;; -11344;6;0;false;false;0;0;0;;; -11350;8;0;false;false;;;;;; -11358;2;1;false;false;127;0;85;;; -11360;1;0;false;false;;;;;; -11361;6;0;false;false;0;0;0;;; -11367;1;0;false;false;;;;;; -11368;2;0;false;false;0;0;0;;; -11370;1;0;false;false;;;;;; -11371;4;1;false;false;127;0;85;;; -11375;1;0;false;false;0;0;0;;; -11376;1;0;false;false;;;;;; -11377;1;0;false;false;0;0;0;;; -11378;5;0;false;false;;;;;; -11383;20;0;false;false;0;0;0;;; -11403;3;1;false;false;127;0;85;;; -11406;1;0;false;false;;;;;; -11407;20;0;false;false;0;0;0;;; -11427;1;0;false;false;;;;;; -11428;7;0;false;false;0;0;0;;; -11435;4;0;false;false;;;;;; -11439;1;0;false;false;0;0;0;;; -11440;3;0;false;false;;;;;; -11443;1;0;false;false;0;0;0;;; -11444;3;0;false;false;;;;;; -11447;3;0;false;false;63;95;191;;; -11450;4;0;false;false;;;;;; -11454;1;0;false;false;63;95;191;;; -11455;1;0;false;false;;;;;; -11456;6;0;false;false;63;95;191;;; -11462;1;0;false;false;;;;;; -11463;3;0;false;false;63;95;191;;; -11466;1;0;false;false;;;;;; -11467;4;0;false;false;63;95;191;;; -11471;1;0;false;false;;;;;; -11472;4;0;false;false;63;95;191;;; -11476;1;0;false;false;;;;;; -11477;4;0;false;false;63;95;191;;; -11481;1;0;false;false;;;;;; -11482;5;0;false;false;63;95;191;;; -11487;1;0;false;false;;;;;; -11488;2;0;false;false;63;95;191;;; -11490;1;0;false;false;;;;;; -11491;2;0;false;false;63;95;191;;; -11493;1;0;false;false;;;;;; -11494;9;0;false;false;63;95;191;;; -11503;1;0;false;false;;;;;; -11504;4;0;false;false;63;95;191;;; -11508;1;0;false;false;;;;;; -11509;1;0;false;false;63;95;191;;; -11510;1;0;false;false;;;;;; -11511;9;0;false;false;63;95;191;;; -11520;4;0;false;false;;;;;; -11524;1;0;false;false;63;95;191;;; -11525;1;0;false;false;;;;;; -11526;4;0;false;false;127;127;159;;; -11530;4;0;false;false;;;;;; -11534;1;0;false;false;63;95;191;;; -11535;1;0;false;false;;;;;; -11536;7;1;false;false;127;159;191;;; -11543;14;0;false;false;63;95;191;;; -11557;1;0;false;false;;;;;; -11558;7;0;false;false;127;127;159;;; -11565;17;0;false;false;63;95;191;;; -11582;8;0;false;false;127;127;159;;; -11590;1;0;false;false;;;;;; -11591;2;0;false;false;63;95;191;;; -11593;1;0;false;false;;;;;; -11594;7;0;false;false;63;95;191;;; -11601;5;0;false;false;;;;;; -11606;1;0;false;false;63;95;191;;; -11607;2;0;false;false;;;;;; -11609;4;0;false;false;63;95;191;;; -11613;1;0;false;false;;;;;; -11614;4;0;false;false;63;95;191;;; -11618;1;0;false;false;;;;;; -11619;4;0;false;false;63;95;191;;; -11623;4;0;false;false;;;;;; -11627;2;0;false;false;63;95;191;;; -11629;3;0;false;false;;;;;; -11632;4;1;false;false;127;0;85;;; -11636;1;0;false;false;;;;;; -11637;31;0;false;false;0;0;0;;; -11668;1;0;false;false;;;;;; -11669;15;0;false;false;0;0;0;;; -11684;1;0;false;false;;;;;; -11685;1;0;false;false;0;0;0;;; -11686;5;0;false;false;;;;;; -11691;3;1;false;false;127;0;85;;; -11694;1;0;false;false;;;;;; -11695;1;0;false;false;0;0;0;;; -11696;3;1;false;false;127;0;85;;; -11699;1;0;false;false;;;;;; -11700;1;0;false;false;0;0;0;;; -11701;1;0;false;false;;;;;; -11702;1;0;false;false;0;0;0;;; -11703;1;0;false;false;;;;;; -11704;2;0;false;false;0;0;0;;; -11706;1;0;false;false;;;;;; -11707;1;0;false;false;0;0;0;;; -11708;1;0;false;false;;;;;; -11709;1;0;false;false;0;0;0;;; -11710;1;0;false;false;;;;;; -11711;30;0;false;false;0;0;0;;; -11741;1;0;false;false;;;;;; -11742;4;0;false;false;0;0;0;;; -11746;1;0;false;false;;;;;; -11747;1;0;false;false;0;0;0;;; -11748;5;0;false;false;;;;;; -11753;3;1;false;false;127;0;85;;; -11756;1;0;false;false;;;;;; -11757;10;0;false;false;0;0;0;;; -11767;1;0;false;false;;;;;; -11768;1;0;false;false;0;0;0;;; -11769;1;0;false;false;;;;;; -11770;34;0;false;false;0;0;0;;; -11804;5;0;false;false;;;;;; -11809;6;0;false;false;0;0;0;;; -11815;1;0;false;false;;;;;; -11816;4;0;false;false;0;0;0;;; -11820;1;0;false;false;;;;;; -11821;1;0;false;false;0;0;0;;; -11822;1;0;false;false;;;;;; -11823;26;0;false;false;0;0;0;;; -11849;8;0;false;false;;;;;; -11857;2;1;false;false;127;0;85;;; -11859;1;0;false;false;;;;;; -11860;34;0;false;false;0;0;0;;; -11894;1;0;false;false;;;;;; -11895;1;0;false;false;0;0;0;;; -11896;6;0;false;false;;;;;; -11902;31;0;false;false;0;0;0;;; -11933;1;0;false;false;;;;;; -11934;6;0;false;false;0;0;0;;; -11940;5;0;false;false;;;;;; -11945;1;0;false;false;0;0;0;;; -11946;5;0;false;false;;;;;; -11951;2;1;false;false;127;0;85;;; -11953;1;0;false;false;;;;;; -11954;33;0;false;false;0;0;0;;; -11987;1;0;false;false;;;;;; -11988;2;0;false;false;0;0;0;;; -11990;6;0;false;false;;;;;; -11996;32;0;false;false;0;0;0;;; -12028;1;0;false;false;;;;;; -12029;2;0;false;false;0;0;0;;; -12031;6;0;false;false;;;;;; -12037;32;0;false;false;0;0;0;;; -12069;1;0;false;false;;;;;; -12070;1;0;false;false;0;0;0;;; -12071;6;0;false;false;;;;;; -12077;26;0;false;false;0;0;0;;; -12103;1;0;false;false;;;;;; -12104;6;0;false;false;0;0;0;;; -12110;5;0;false;false;;;;;; -12115;1;0;false;false;0;0;0;;; -12116;5;0;false;false;;;;;; -12121;2;1;false;false;127;0;85;;; -12123;1;0;false;false;;;;;; -12124;17;0;false;false;0;0;0;;; -12141;1;0;false;false;;;;;; -12142;1;0;false;false;0;0;0;;; -12143;6;0;false;false;;;;;; -12149;29;0;false;false;0;0;0;;; -12178;1;0;false;false;;;;;; -12179;6;0;false;false;0;0;0;;; -12185;5;0;false;false;;;;;; -12190;1;0;false;false;0;0;0;;; -12191;4;0;false;false;;;;;; -12195;1;0;false;false;0;0;0;;; -12196;3;0;false;false;;;;;; -12199;1;0;false;false;0;0;0;;; -12200;3;0;false;false;;;;;; -12203;3;0;false;false;63;95;191;;; -12206;4;0;false;false;;;;;; -12210;1;0;false;false;63;95;191;;; -12211;1;0;false;false;;;;;; -12212;6;0;false;false;63;95;191;;; -12218;1;0;false;false;;;;;; -12219;3;0;false;false;63;95;191;;; -12222;1;0;false;false;;;;;; -12223;4;0;false;false;63;95;191;;; -12227;1;0;false;false;;;;;; -12228;6;0;false;false;63;95;191;;; -12234;1;0;false;false;;;;;; -12235;2;0;false;false;63;95;191;;; -12237;1;0;false;false;;;;;; -12238;3;0;false;false;63;95;191;;; -12241;1;0;false;false;;;;;; -12242;5;0;false;false;63;95;191;;; -12247;1;0;false;false;;;;;; -12248;5;0;false;false;63;95;191;;; -12253;4;0;false;false;;;;;; -12257;1;0;false;false;63;95;191;;; -12258;1;0;false;false;;;;;; -12259;4;0;false;false;127;127;159;;; -12263;4;0;false;false;;;;;; -12267;1;0;false;false;63;95;191;;; -12268;1;0;false;false;;;;;; -12269;7;1;false;false;127;159;191;;; -12276;10;0;false;false;63;95;191;;; -12286;1;0;false;false;;;;;; -12287;6;0;false;false;63;95;191;;; -12293;1;0;false;false;;;;;; -12294;2;0;false;false;63;95;191;;; -12296;1;0;false;false;;;;;; -12297;3;0;false;false;63;95;191;;; -12300;1;0;false;false;;;;;; -12301;4;0;false;false;63;95;191;;; -12305;1;0;false;false;;;;;; -12306;2;0;false;false;63;95;191;;; -12308;1;0;false;false;;;;;; -12309;5;0;false;false;63;95;191;;; -12314;1;0;false;false;;;;;; -12315;3;0;false;false;63;95;191;;; -12318;1;0;false;false;;;;;; -12319;6;0;false;false;63;95;191;;; -12325;1;0;false;false;;;;;; -12326;4;0;false;false;63;95;191;;; -12330;4;0;false;false;;;;;; -12334;1;0;false;false;63;95;191;;; -12335;2;0;false;false;;;;;; -12337;8;0;false;false;63;95;191;;; -12345;1;0;false;false;;;;;; -12346;2;0;false;false;63;95;191;;; -12348;1;0;false;false;;;;;; -12349;3;0;false;false;63;95;191;;; -12352;1;0;false;false;;;;;; -12353;5;0;false;false;63;95;191;;; -12358;1;0;false;false;;;;;; -12359;2;0;false;false;63;95;191;;; -12361;1;0;false;false;;;;;; -12362;3;0;false;false;63;95;191;;; -12365;1;0;false;false;;;;;; -12366;9;0;false;false;63;95;191;;; -12375;4;0;false;false;;;;;; -12379;1;0;false;false;63;95;191;;; -12380;1;0;false;false;;;;;; -12381;7;1;false;false;127;159;191;;; -12388;4;0;false;false;63;95;191;;; -12392;1;0;false;false;;;;;; -12393;4;0;false;false;63;95;191;;; -12397;1;0;false;false;;;;;; -12398;2;0;false;false;63;95;191;;; -12400;1;0;false;false;;;;;; -12401;5;0;false;false;63;95;191;;; -12406;1;0;false;false;;;;;; -12407;3;0;false;false;63;95;191;;; -12410;1;0;false;false;;;;;; -12411;6;0;false;false;63;95;191;;; -12417;1;0;false;false;;;;;; -12418;4;0;false;false;63;95;191;;; -12422;4;0;false;false;;;;;; -12426;2;0;false;false;63;95;191;;; -12428;3;0;false;false;;;;;; -12431;4;1;false;false;127;0;85;;; -12435;1;0;false;false;;;;;; -12436;15;0;false;false;0;0;0;;; -12451;3;1;false;false;127;0;85;;; -12454;1;0;false;false;;;;;; -12455;11;0;false;false;0;0;0;;; -12466;1;0;false;false;;;;;; -12467;6;0;false;false;0;0;0;;; -12473;1;0;false;false;;;;;; -12474;5;0;false;false;0;0;0;;; -12479;1;0;false;false;;;;;; -12480;1;0;false;false;0;0;0;;; -12481;4;0;false;false;;;;;; -12485;15;0;false;false;0;0;0;;; -12500;1;0;false;false;;;;;; -12501;5;0;false;false;0;0;0;;; -12506;1;0;false;false;;;;;; -12507;1;0;false;false;0;0;0;;; -12508;1;0;false;false;;;;;; -12509;35;0;false;false;0;0;0;;; -12544;1;0;false;false;;;;;; -12545;6;0;false;false;0;0;0;;; -12551;8;0;false;false;;;;;; -12559;2;1;false;false;127;0;85;;; -12561;1;0;false;false;;;;;; -12562;6;0;false;false;0;0;0;;; -12568;1;0;false;false;;;;;; -12569;2;0;false;false;0;0;0;;; -12571;1;0;false;false;;;;;; -12572;4;1;false;false;127;0;85;;; -12576;1;0;false;false;0;0;0;;; -12577;1;0;false;false;;;;;; -12578;1;0;false;false;0;0;0;;; -12579;5;0;false;false;;;;;; -12584;12;0;false;false;0;0;0;;; -12596;1;0;false;false;;;;;; -12597;6;0;false;false;0;0;0;;; -12603;1;0;false;false;;;;;; -12604;1;0;false;false;0;0;0;;; -12605;1;0;false;false;;;;;; -12606;13;0;false;false;0;0;0;;; -12619;5;0;false;false;;;;;; -12624;3;1;false;false;127;0;85;;; -12627;1;0;false;false;;;;;; -12628;1;0;false;false;0;0;0;;; -12629;3;1;false;false;127;0;85;;; -12632;1;0;false;false;;;;;; -12633;1;0;false;false;0;0;0;;; -12634;1;0;false;false;;;;;; -12635;1;0;false;false;0;0;0;;; -12636;1;0;false;false;;;;;; -12637;2;0;false;false;0;0;0;;; -12639;1;0;false;false;;;;;; -12640;1;0;false;false;0;0;0;;; -12641;1;0;false;false;;;;;; -12642;1;0;false;false;0;0;0;;; -12643;1;0;false;false;;;;;; -12644;14;0;false;false;0;0;0;;; -12658;1;0;false;false;;;;;; -12659;4;0;false;false;0;0;0;;; -12663;1;0;false;false;;;;;; -12664;1;0;false;false;0;0;0;;; -12665;6;0;false;false;;;;;; -12671;10;0;false;false;0;0;0;;; -12681;1;0;false;false;;;;;; -12682;9;0;false;false;0;0;0;;; -12691;1;0;false;false;;;;;; -12692;1;0;false;false;0;0;0;;; -12693;1;0;false;false;;;;;; -12694;4;1;false;false;127;0;85;;; -12698;1;0;false;false;0;0;0;;; -12699;6;0;false;false;;;;;; -12705;2;1;false;false;127;0;85;;; -12707;1;0;false;false;;;;;; -12708;34;0;false;false;0;0;0;;; -12742;1;0;false;false;;;;;; -12743;2;0;false;false;0;0;0;;; -12745;1;0;false;false;;;;;; -12746;20;0;false;false;0;0;0;;; -12766;1;0;false;false;;;;;; -12767;2;0;false;false;0;0;0;;; -12769;1;0;false;false;;;;;; -12770;4;1;false;false;127;0;85;;; -12774;1;0;false;false;0;0;0;;; -12775;1;0;false;false;;;;;; -12776;1;0;false;false;0;0;0;;; -12777;7;0;false;false;;;;;; -12784;9;0;false;false;0;0;0;;; -12793;1;0;false;false;;;;;; -12794;1;0;false;false;0;0;0;;; -12795;1;0;false;false;;;;;; -12796;12;0;false;false;0;0;0;;; -12808;1;0;false;false;;;;;; -12809;18;0;false;false;0;0;0;;; -12827;7;0;false;false;;;;;; -12834;20;0;false;false;0;0;0;;; -12854;1;0;false;false;;;;;; -12855;1;0;false;false;0;0;0;;; -12856;1;0;false;false;;;;;; -12857;4;1;false;false;127;0;85;;; -12861;1;0;false;false;0;0;0;;; -12862;6;0;false;false;;;;;; -12868;1;0;false;false;0;0;0;;; -12869;6;0;false;false;;;;;; -12875;2;1;false;false;127;0;85;;; -12877;1;0;false;false;;;;;; -12878;34;0;false;false;0;0;0;;; -12912;1;0;false;false;;;;;; -12913;2;0;false;false;0;0;0;;; -12915;1;0;false;false;;;;;; -12916;20;0;false;false;0;0;0;;; -12936;1;0;false;false;;;;;; -12937;2;0;false;false;0;0;0;;; -12939;1;0;false;false;;;;;; -12940;4;1;false;false;127;0;85;;; -12944;1;0;false;false;0;0;0;;; -12945;1;0;false;false;;;;;; -12946;1;0;false;false;0;0;0;;; -12947;7;0;false;false;;;;;; -12954;2;1;false;false;127;0;85;;; -12956;1;0;false;false;;;;;; -12957;10;0;false;false;0;0;0;;; -12967;1;0;false;false;;;;;; -12968;2;0;false;false;0;0;0;;; -12970;1;0;false;false;;;;;; -12971;4;1;false;false;127;0;85;;; -12975;1;0;false;false;0;0;0;;; -12976;1;0;false;false;;;;;; -12977;1;0;false;false;0;0;0;;; -12978;8;0;false;false;;;;;; -12986;9;0;false;false;0;0;0;;; -12995;1;0;false;false;;;;;; -12996;1;0;false;false;0;0;0;;; -12997;1;0;false;false;;;;;; -12998;12;0;false;false;0;0;0;;; -13010;1;0;false;false;;;;;; -13011;18;0;false;false;0;0;0;;; -13029;7;0;false;false;;;;;; -13036;1;0;false;false;0;0;0;;; -13037;7;0;false;false;;;;;; -13044;20;0;false;false;0;0;0;;; -13064;1;0;false;false;;;;;; -13065;1;0;false;false;0;0;0;;; -13066;1;0;false;false;;;;;; -13067;4;1;false;false;127;0;85;;; -13071;1;0;false;false;0;0;0;;; -13072;6;0;false;false;;;;;; -13078;1;0;false;false;0;0;0;;; -13079;6;0;false;false;;;;;; -13085;2;1;false;false;127;0;85;;; -13087;1;0;false;false;;;;;; -13088;33;0;false;false;0;0;0;;; -13121;1;0;false;false;;;;;; -13122;2;0;false;false;0;0;0;;; -13124;1;0;false;false;;;;;; -13125;19;0;false;false;0;0;0;;; -13144;1;0;false;false;;;;;; -13145;2;0;false;false;0;0;0;;; -13147;1;0;false;false;;;;;; -13148;11;0;false;false;0;0;0;;; -13159;1;0;false;false;;;;;; -13160;1;0;false;false;0;0;0;;; -13161;7;0;false;false;;;;;; -13168;2;1;false;false;127;0;85;;; -13170;1;0;false;false;;;;;; -13171;10;0;false;false;0;0;0;;; -13181;1;0;false;false;;;;;; -13182;2;0;false;false;0;0;0;;; -13184;1;0;false;false;;;;;; -13185;4;1;false;false;127;0;85;;; -13189;1;0;false;false;0;0;0;;; -13190;1;0;false;false;;;;;; -13191;1;0;false;false;0;0;0;;; -13192;8;0;false;false;;;;;; -13200;9;0;false;false;0;0;0;;; -13209;1;0;false;false;;;;;; -13210;1;0;false;false;0;0;0;;; -13211;1;0;false;false;;;;;; -13212;12;0;false;false;0;0;0;;; -13224;1;0;false;false;;;;;; -13225;18;0;false;false;0;0;0;;; -13243;7;0;false;false;;;;;; -13250;1;0;false;false;0;0;0;;; -13251;7;0;false;false;;;;;; -13258;19;0;false;false;0;0;0;;; -13277;1;0;false;false;;;;;; -13278;1;0;false;false;0;0;0;;; -13279;1;0;false;false;;;;;; -13280;11;0;false;false;0;0;0;;; -13291;6;0;false;false;;;;;; -13297;1;0;false;false;0;0;0;;; -13298;6;0;false;false;;;;;; -13304;2;1;false;false;127;0;85;;; -13306;1;0;false;false;;;;;; -13307;10;0;false;false;0;0;0;;; -13317;1;0;false;false;;;;;; -13318;2;0;false;false;0;0;0;;; -13320;1;0;false;false;;;;;; -13321;4;1;false;false;127;0;85;;; -13325;1;0;false;false;0;0;0;;; -13326;1;0;false;false;;;;;; -13327;1;0;false;false;0;0;0;;; -13328;7;0;false;false;;;;;; -13335;9;0;false;false;0;0;0;;; -13344;1;0;false;false;;;;;; -13345;1;0;false;false;0;0;0;;; -13346;1;0;false;false;;;;;; -13347;10;0;false;false;0;0;0;;; -13357;6;0;false;false;;;;;; -13363;1;0;false;false;0;0;0;;; -13364;5;0;false;false;;;;;; -13369;1;0;false;false;0;0;0;;; -13370;6;0;false;false;;;;;; -13376;15;0;false;false;0;0;0;;; -13391;3;1;false;false;127;0;85;;; -13394;1;0;false;false;;;;;; -13395;20;0;false;false;0;0;0;;; -13415;1;0;false;false;;;;;; -13416;7;0;false;false;0;0;0;;; -13423;4;0;false;false;;;;;; -13427;1;0;false;false;0;0;0;;; -13428;3;0;false;false;;;;;; -13431;1;0;false;false;0;0;0;;; -13432;3;0;false;false;;;;;; -13435;3;0;false;false;63;95;191;;; -13438;4;0;false;false;;;;;; -13442;1;0;false;false;63;95;191;;; -13443;1;0;false;false;;;;;; -13444;6;0;false;false;63;95;191;;; -13450;1;0;false;false;;;;;; -13451;3;0;false;false;63;95;191;;; -13454;1;0;false;false;;;;;; -13455;4;0;false;false;63;95;191;;; -13459;1;0;false;false;;;;;; -13460;2;0;false;false;63;95;191;;; -13462;1;0;false;false;;;;;; -13463;3;0;false;false;63;95;191;;; -13466;1;0;false;false;;;;;; -13467;9;0;false;false;63;95;191;;; -13476;1;0;false;false;;;;;; -13477;7;0;false;false;127;127;159;;; -13484;17;0;false;false;63;95;191;;; -13501;8;0;false;false;127;127;159;;; -13509;1;0;false;false;63;95;191;;; -13510;4;0;false;false;;;;;; -13514;1;0;false;false;63;95;191;;; -13515;1;0;false;false;;;;;; -13516;4;0;false;false;127;127;159;;; -13520;4;0;false;false;;;;;; -13524;1;0;false;false;63;95;191;;; -13525;1;0;false;false;;;;;; -13526;7;1;false;false;127;159;191;;; -13533;8;0;false;false;63;95;191;;; -13541;1;0;false;false;;;;;; -13542;3;0;false;false;63;95;191;;; -13545;1;0;false;false;;;;;; -13546;7;0;false;false;127;127;159;;; -13553;17;0;false;false;63;95;191;;; -13570;8;0;false;false;127;127;159;;; -13578;1;0;false;false;;;;;; -13579;2;0;false;false;63;95;191;;; -13581;1;0;false;false;;;;;; -13582;5;0;false;false;63;95;191;;; -13587;4;0;false;false;;;;;; -13591;2;0;false;false;63;95;191;;; -13593;3;0;false;false;;;;;; -13596;4;1;false;false;127;0;85;;; -13600;1;0;false;false;;;;;; -13601;29;0;false;false;0;0;0;;; -13630;1;0;false;false;;;;;; -13631;9;0;false;false;0;0;0;;; -13640;1;0;false;false;;;;;; -13641;1;0;false;false;0;0;0;;; -13642;4;0;false;false;;;;;; -13646;3;1;false;false;127;0;85;;; -13649;1;0;false;false;;;;;; -13650;12;0;false;false;0;0;0;;; -13662;1;0;false;false;;;;;; -13663;1;0;false;false;0;0;0;;; -13664;1;0;false;false;;;;;; -13665;2;0;false;false;0;0;0;;; -13667;8;0;false;false;;;;;; -13675;14;0;false;false;0;0;0;;; -13689;1;0;false;false;;;;;; -13690;1;0;false;false;0;0;0;;; -13691;1;0;false;false;;;;;; -13692;3;1;false;false;127;0;85;;; -13695;1;0;false;false;;;;;; -13696;17;0;false;false;0;0;0;;; -13713;4;0;false;false;;;;;; -13717;3;1;false;false;127;0;85;;; -13720;1;0;false;false;;;;;; -13721;1;0;false;false;0;0;0;;; -13722;3;1;false;false;127;0;85;;; -13725;1;0;false;false;;;;;; -13726;1;0;false;false;0;0;0;;; -13727;1;0;false;false;;;;;; -13728;1;0;false;false;0;0;0;;; -13729;1;0;false;false;;;;;; -13730;2;0;false;false;0;0;0;;; -13732;1;0;false;false;;;;;; -13733;1;0;false;false;0;0;0;;; -13734;1;0;false;false;;;;;; -13735;1;0;false;false;0;0;0;;; -13736;1;0;false;false;;;;;; -13737;24;0;false;false;0;0;0;;; -13761;1;0;false;false;;;;;; -13762;4;0;false;false;0;0;0;;; -13766;1;0;false;false;;;;;; -13767;1;0;false;false;0;0;0;;; -13768;5;0;false;false;;;;;; -13773;3;1;false;false;127;0;85;;; -13776;1;0;false;false;;;;;; -13777;16;0;false;false;0;0;0;;; -13793;5;0;false;false;;;;;; -13798;2;1;false;false;127;0;85;;; -13800;1;0;false;false;;;;;; -13801;2;0;false;false;0;0;0;;; -13803;1;0;false;false;;;;;; -13804;1;0;false;false;0;0;0;;; -13805;1;0;false;false;;;;;; -13806;23;0;false;false;0;0;0;;; -13829;1;0;false;false;;;;;; -13830;1;0;false;false;0;0;0;;; -13831;1;0;false;false;;;;;; -13832;2;0;false;false;0;0;0;;; -13834;1;0;false;false;;;;;; -13835;1;0;false;false;0;0;0;;; -13836;6;0;false;false;;;;;; -13842;15;0;false;false;0;0;0;;; -13857;1;0;false;false;;;;;; -13858;1;0;false;false;0;0;0;;; -13859;1;0;false;false;;;;;; -13860;26;0;false;false;0;0;0;;; -13886;1;0;false;false;;;;;; -13887;1;0;false;false;0;0;0;;; -13888;1;0;false;false;;;;;; -13889;3;0;false;false;0;0;0;;; -13892;5;0;false;false;;;;;; -13897;1;0;false;false;0;0;0;;; -13898;5;0;false;false;;;;;; -13903;4;1;false;false;127;0;85;;; -13907;1;0;false;false;;;;;; -13908;1;0;false;false;0;0;0;;; -13909;6;0;false;false;;;;;; -13915;15;0;false;false;0;0;0;;; -13930;1;0;false;false;;;;;; -13931;1;0;false;false;0;0;0;;; -13932;1;0;false;false;;;;;; -13933;24;0;false;false;0;0;0;;; -13957;5;0;false;false;;;;;; -13962;1;0;false;false;0;0;0;;; -13963;5;0;false;false;;;;;; -13968;45;0;false;false;0;0;0;;; -14013;1;0;false;false;;;;;; -14014;2;0;false;false;0;0;0;;; -14016;1;0;false;false;;;;;; -14017;35;0;false;false;0;0;0;;; -14052;1;0;false;false;;;;;; -14053;15;0;false;false;0;0;0;;; -14068;1;0;false;false;;;;;; -14069;1;0;false;false;0;0;0;;; -14070;1;0;false;false;;;;;; -14071;15;0;false;false;0;0;0;;; -14086;5;0;false;false;;;;;; -14091;12;0;false;false;0;0;0;;; -14103;1;0;false;false;;;;;; -14104;1;0;false;false;0;0;0;;; -14105;1;0;false;false;;;;;; -14106;16;0;false;false;0;0;0;;; -14122;4;0;false;false;;;;;; -14126;1;0;false;false;0;0;0;;; -14127;3;0;false;false;;;;;; -14130;1;0;false;false;0;0;0;;; -14131;3;0;false;false;;;;;; -14134;3;0;false;false;63;95;191;;; -14137;4;0;false;false;;;;;; -14141;1;0;false;false;63;95;191;;; -14142;1;0;false;false;;;;;; -14143;8;0;false;false;63;95;191;;; -14151;1;0;false;false;;;;;; -14152;3;0;false;false;63;95;191;;; -14155;1;0;false;false;;;;;; -14156;7;0;false;false;63;95;191;;; -14163;1;0;false;false;;;;;; -14164;6;0;false;false;63;95;191;;; -14170;1;0;false;false;;;;;; -14171;2;0;false;false;63;95;191;;; -14173;1;0;false;false;;;;;; -14174;3;0;false;false;63;95;191;;; -14177;1;0;false;false;;;;;; -14178;6;0;false;false;63;95;191;;; -14184;1;0;false;false;;;;;; -14185;4;0;false;false;63;95;191;;; -14189;1;0;false;false;;;;;; -14190;11;0;false;false;63;95;191;;; -14201;1;0;false;false;;;;;; -14202;3;0;false;false;63;95;191;;; -14205;5;0;false;false;;;;;; -14210;1;0;false;false;63;95;191;;; -14211;1;0;false;false;;;;;; -14212;4;0;false;false;63;95;191;;; -14216;1;0;false;false;;;;;; -14217;6;0;false;false;63;95;191;;; -14223;1;0;false;false;;;;;; -14224;4;0;false;false;63;95;191;;; -14228;1;0;false;false;;;;;; -14229;7;0;false;false;63;95;191;;; -14236;1;0;false;false;;;;;; -14237;7;0;false;false;63;95;191;;; -14244;4;0;false;false;;;;;; -14248;2;0;false;false;63;95;191;;; -14250;3;0;false;false;;;;;; -14253;4;1;false;false;127;0;85;;; -14257;1;0;false;false;;;;;; -14258;21;0;false;false;0;0;0;;; -14279;1;0;false;false;;;;;; -14280;1;0;false;false;0;0;0;;; -14281;4;0;false;false;;;;;; -14285;11;0;false;false;0;0;0;;; -14296;1;0;false;false;;;;;; -14297;6;0;false;false;0;0;0;;; -14303;1;0;false;false;;;;;; -14304;1;0;false;false;0;0;0;;; -14305;1;0;false;false;;;;;; -14306;27;0;false;false;0;0;0;;; -14333;4;0;false;false;;;;;; -14337;13;0;false;false;0;0;0;;; -14350;1;0;false;false;;;;;; -14351;1;0;false;false;0;0;0;;; -14352;1;0;false;false;;;;;; -14353;3;1;false;false;127;0;85;;; -14356;1;0;false;false;;;;;; -14357;12;0;false;false;0;0;0;;; -14369;4;0;false;false;;;;;; -14373;5;1;false;false;127;0;85;;; -14378;1;0;false;false;;;;;; -14379;26;0;false;false;0;0;0;;; -14405;1;0;false;false;;;;;; -14406;1;0;false;false;0;0;0;;; -14407;5;0;false;false;;;;;; -14412;15;0;false;false;0;0;0;;; -14427;1;0;false;false;;;;;; -14428;5;0;false;false;0;0;0;;; -14433;1;0;false;false;;;;;; -14434;1;0;false;false;0;0;0;;; -14435;1;0;false;false;;;;;; -14436;17;0;false;false;0;0;0;;; -14453;1;0;false;false;;;;;; -14454;21;0;false;false;0;0;0;;; -14475;5;0;false;false;;;;;; -14480;20;0;false;false;0;0;0;;; -14500;1;0;false;false;;;;;; -14501;1;0;false;false;0;0;0;;; -14502;1;0;false;false;;;;;; -14503;38;0;false;false;0;0;0;;; -14541;4;0;false;false;;;;;; -14545;1;0;false;false;0;0;0;;; -14546;8;0;false;false;;;;;; -14554;6;0;false;false;0;0;0;;; -14560;1;0;false;false;;;;;; -14561;1;0;false;false;0;0;0;;; -14562;1;0;false;false;;;;;; -14563;22;0;false;false;0;0;0;;; -14585;4;0;false;false;;;;;; -14589;5;1;false;false;127;0;85;;; -14594;1;0;false;false;;;;;; -14595;26;0;false;false;0;0;0;;; -14621;1;0;false;false;;;;;; -14622;1;0;false;false;0;0;0;;; -14623;5;0;false;false;;;;;; -14628;15;0;false;false;0;0;0;;; -14643;1;0;false;false;;;;;; -14644;5;0;false;false;0;0;0;;; -14649;1;0;false;false;;;;;; -14650;1;0;false;false;0;0;0;;; -14651;1;0;false;false;;;;;; -14652;17;0;false;false;0;0;0;;; -14669;1;0;false;false;;;;;; -14670;21;0;false;false;0;0;0;;; -14691;5;0;false;false;;;;;; -14696;3;1;false;false;127;0;85;;; -14699;1;0;false;false;;;;;; -14700;1;0;false;false;0;0;0;;; -14701;3;1;false;false;127;0;85;;; -14704;1;0;false;false;;;;;; -14705;1;0;false;false;0;0;0;;; -14706;1;0;false;false;;;;;; -14707;1;0;false;false;0;0;0;;; -14708;1;0;false;false;;;;;; -14709;2;0;false;false;0;0;0;;; -14711;1;0;false;false;;;;;; -14712;1;0;false;false;0;0;0;;; -14713;1;0;false;false;;;;;; -14714;1;0;false;false;0;0;0;;; -14715;1;0;false;false;;;;;; -14716;20;0;false;false;0;0;0;;; -14736;1;0;false;false;;;;;; -14737;4;0;false;false;0;0;0;;; -14741;1;0;false;false;;;;;; -14742;1;0;false;false;0;0;0;;; -14743;6;0;false;false;;;;;; -14749;10;0;false;false;0;0;0;;; -14759;1;0;false;false;;;;;; -14760;5;0;false;false;0;0;0;;; -14765;1;0;false;false;;;;;; -14766;1;0;false;false;0;0;0;;; -14767;1;0;false;false;;;;;; -14768;16;0;false;false;0;0;0;;; -14784;6;0;false;false;;;;;; -14790;5;0;false;false;0;0;0;;; -14795;1;0;false;false;;;;;; -14796;17;0;false;false;0;0;0;;; -14813;1;0;false;false;;;;;; -14814;1;0;false;false;0;0;0;;; -14815;1;0;false;false;;;;;; -14816;34;0;false;false;0;0;0;;; -14850;6;0;false;false;;;;;; -14856;5;0;false;false;0;0;0;;; -14861;1;0;false;false;;;;;; -14862;17;0;false;false;0;0;0;;; -14879;1;0;false;false;;;;;; -14880;1;0;false;false;0;0;0;;; -14881;1;0;false;false;;;;;; -14882;34;0;false;false;0;0;0;;; -14916;12;0;false;false;;;;;; -14928;2;1;false;false;127;0;85;;; -14930;1;0;false;false;;;;;; -14931;18;0;false;false;0;0;0;;; -14949;1;0;false;false;;;;;; -14950;2;0;false;false;0;0;0;;; -14952;1;0;false;false;;;;;; -14953;16;0;false;false;0;0;0;;; -14969;1;0;false;false;;;;;; -14970;2;0;false;false;0;0;0;;; -14972;8;0;false;false;;;;;; -14980;17;0;false;false;0;0;0;;; -14997;1;0;false;false;;;;;; -14998;2;0;false;false;0;0;0;;; -15000;1;0;false;false;;;;;; -15001;17;0;false;false;0;0;0;;; -15018;1;0;false;false;;;;;; -15019;1;0;false;false;0;0;0;;; -15020;7;0;false;false;;;;;; -15027;5;0;false;false;0;0;0;;; -15032;1;0;false;false;;;;;; -15033;1;0;false;false;0;0;0;;; -15034;1;0;false;false;;;;;; -15035;12;0;false;false;0;0;0;;; -15047;1;0;false;false;;;;;; -15048;14;0;false;false;0;0;0;;; -15062;7;0;false;false;;;;;; -15069;16;0;false;false;0;0;0;;; -15085;1;0;false;false;;;;;; -15086;1;0;false;false;0;0;0;;; -15087;1;0;false;false;;;;;; -15088;18;0;false;false;0;0;0;;; -15106;7;0;false;false;;;;;; -15113;16;0;false;false;0;0;0;;; -15129;1;0;false;false;;;;;; -15130;1;0;false;false;0;0;0;;; -15131;1;0;false;false;;;;;; -15132;18;0;false;false;0;0;0;;; -15150;7;0;false;false;;;;;; -15157;15;0;false;false;0;0;0;;; -15172;1;0;false;false;;;;;; -15173;1;0;false;false;0;0;0;;; -15174;1;0;false;false;;;;;; -15175;6;0;false;false;0;0;0;;; -15181;6;0;false;false;;;;;; -15187;1;0;false;false;0;0;0;;; -15188;5;0;false;false;;;;;; -15193;1;0;false;false;0;0;0;;; -15194;4;0;false;false;;;;;; -15198;1;0;false;false;0;0;0;;; -15199;5;0;false;false;;;;;; -15204;1;0;false;false;0;0;0;;; -15205;3;0;false;false;;;;;; -15208;3;0;false;false;63;95;191;;; -15211;4;0;false;false;;;;;; -15215;1;0;false;false;63;95;191;;; -15216;1;0;false;false;;;;;; -15217;8;0;false;false;63;95;191;;; -15225;1;0;false;false;;;;;; -15226;2;0;false;false;63;95;191;;; -15228;1;0;false;false;;;;;; -15229;3;0;false;false;63;95;191;;; -15232;1;0;false;false;;;;;; -15233;9;0;false;false;63;95;191;;; -15242;1;0;false;false;;;;;; -15243;3;0;false;false;63;95;191;;; -15246;1;0;false;false;;;;;; -15247;3;0;false;false;63;95;191;;; -15250;1;0;false;false;;;;;; -15251;7;0;false;false;127;127;159;;; -15258;13;0;false;false;63;95;191;;; -15271;8;0;false;false;127;127;159;;; -15279;1;0;false;false;63;95;191;;; -15280;4;0;false;false;;;;;; -15284;2;0;false;false;63;95;191;;; -15286;3;0;false;false;;;;;; -15289;4;1;false;false;127;0;85;;; -15293;1;0;false;false;;;;;; -15294;9;0;false;false;0;0;0;;; -15303;1;0;false;false;;;;;; -15304;1;0;false;false;0;0;0;;; -15305;4;0;false;false;;;;;; -15309;2;1;false;false;127;0;85;;; -15311;1;0;false;false;;;;;; -15312;14;0;false;false;0;0;0;;; -15326;1;0;false;false;;;;;; -15327;2;0;false;false;0;0;0;;; -15329;1;0;false;false;;;;;; -15330;4;1;false;false;127;0;85;;; -15334;1;0;false;false;0;0;0;;; -15335;1;0;false;false;;;;;; -15336;1;0;false;false;0;0;0;;; -15337;5;0;false;false;;;;;; -15342;11;0;false;false;0;0;0;;; -15353;1;0;false;false;;;;;; -15354;6;0;false;false;0;0;0;;; -15360;1;0;false;false;;;;;; -15361;1;0;false;false;0;0;0;;; -15362;1;0;false;false;;;;;; -15363;25;0;false;false;0;0;0;;; -15388;10;0;false;false;;;;;; -15398;5;1;false;false;127;0;85;;; -15403;1;0;false;false;;;;;; -15404;26;0;false;false;0;0;0;;; -15430;1;0;false;false;;;;;; -15431;1;0;false;false;0;0;0;;; -15432;6;0;false;false;;;;;; -15438;5;0;false;false;0;0;0;;; -15443;1;0;false;false;;;;;; -15444;5;0;false;false;0;0;0;;; -15449;1;0;false;false;;;;;; -15450;1;0;false;false;0;0;0;;; -15451;1;0;false;false;;;;;; -15452;7;0;false;false;0;0;0;;; -15459;1;0;false;false;;;;;; -15460;21;0;false;false;0;0;0;;; -15481;6;0;false;false;;;;;; -15487;16;0;false;false;0;0;0;;; -15503;5;0;false;false;;;;;; -15508;1;0;false;false;0;0;0;;; -15509;5;0;false;false;;;;;; -15514;13;0;false;false;0;0;0;;; -15527;1;0;false;false;;;;;; -15528;1;0;false;false;0;0;0;;; -15529;1;0;false;false;;;;;; -15530;4;1;false;false;127;0;85;;; -15534;1;0;false;false;0;0;0;;; -15535;4;0;false;false;;;;;; -15539;1;0;false;false;0;0;0;;; -15540;4;0;false;false;;;;;; -15544;2;1;false;false;127;0;85;;; -15546;1;0;false;false;;;;;; -15547;3;0;false;false;0;0;0;;; -15550;1;0;false;false;;;;;; -15551;2;0;false;false;0;0;0;;; -15553;1;0;false;false;;;;;; -15554;4;1;false;false;127;0;85;;; -15558;1;0;false;false;0;0;0;;; -15559;1;0;false;false;;;;;; -15560;1;0;false;false;0;0;0;;; -15561;5;0;false;false;;;;;; -15566;13;0;false;false;0;0;0;;; -15579;5;0;false;false;;;;;; -15584;2;0;false;false;0;0;0;;; -15586;1;0;false;false;;;;;; -15587;1;0;false;false;0;0;0;;; -15588;1;0;false;false;;;;;; -15589;4;1;false;false;127;0;85;;; -15593;1;0;false;false;0;0;0;;; -15594;4;0;false;false;;;;;; -15598;1;0;false;false;0;0;0;;; -15599;4;0;false;false;;;;;; -15603;2;1;false;false;127;0;85;;; -15605;1;0;false;false;;;;;; -15606;12;0;false;false;0;0;0;;; -15618;1;0;false;false;;;;;; -15619;2;0;false;false;0;0;0;;; -15621;1;0;false;false;;;;;; -15622;4;1;false;false;127;0;85;;; -15626;1;0;false;false;0;0;0;;; -15627;1;0;false;false;;;;;; -15628;1;0;false;false;0;0;0;;; -15629;5;0;false;false;;;;;; -15634;22;0;false;false;0;0;0;;; -15656;5;0;false;false;;;;;; -15661;11;0;false;false;0;0;0;;; -15672;1;0;false;false;;;;;; -15673;1;0;false;false;0;0;0;;; -15674;1;0;false;false;;;;;; -15675;4;1;false;false;127;0;85;;; -15679;1;0;false;false;0;0;0;;; -15680;4;0;false;false;;;;;; -15684;1;0;false;false;0;0;0;;; -15685;4;0;false;false;;;;;; -15689;2;1;false;false;127;0;85;;; -15691;1;0;false;false;;;;;; -15692;9;0;false;false;0;0;0;;; -15701;1;0;false;false;;;;;; -15702;2;0;false;false;0;0;0;;; -15704;1;0;false;false;;;;;; -15705;4;1;false;false;127;0;85;;; -15709;1;0;false;false;0;0;0;;; -15710;1;0;false;false;;;;;; -15711;1;0;false;false;0;0;0;;; -15712;5;0;false;false;;;;;; -15717;19;0;false;false;0;0;0;;; -15736;5;0;false;false;;;;;; -15741;8;0;false;false;0;0;0;;; -15749;1;0;false;false;;;;;; -15750;1;0;false;false;0;0;0;;; -15751;1;0;false;false;;;;;; -15752;4;1;false;false;127;0;85;;; -15756;1;0;false;false;0;0;0;;; -15757;4;0;false;false;;;;;; -15761;1;0;false;false;0;0;0;;; -15762;3;0;false;false;;;;;; -15765;1;0;false;false;0;0;0;;; -15766;3;0;false;false;;;;;; -15769;3;0;false;false;63;95;191;;; -15772;4;0;false;false;;;;;; -15776;1;0;false;false;63;95;191;;; -15777;1;0;false;false;;;;;; -15778;6;0;false;false;63;95;191;;; -15784;1;0;false;false;;;;;; -15785;8;0;false;false;63;95;191;;; -15793;1;0;false;false;;;;;; -15794;3;0;false;false;63;95;191;;; -15797;1;0;false;false;;;;;; -15798;9;0;false;false;63;95;191;;; -15807;1;0;false;false;;;;;; -15808;5;0;false;false;63;95;191;;; -15813;4;0;false;false;;;;;; -15817;1;0;false;false;63;95;191;;; -15818;5;0;false;false;;;;;; -15823;1;0;false;false;63;95;191;;; -15824;1;0;false;false;;;;;; -15825;7;1;false;false;127;159;191;;; -15832;4;0;false;false;63;95;191;;; -15836;1;0;false;false;;;;;; -15837;4;0;false;false;63;95;191;;; -15841;1;0;false;false;;;;;; -15842;4;0;false;false;63;95;191;;; -15846;1;0;false;false;;;;;; -15847;3;0;false;false;63;95;191;;; -15850;1;0;false;false;;;;;; -15851;7;0;false;false;63;95;191;;; -15858;4;0;false;false;;;;;; -15862;2;0;false;false;63;95;191;;; -15864;3;0;false;false;;;;;; -15867;4;1;false;false;127;0;85;;; -15871;1;0;false;false;;;;;; -15872;8;0;false;false;0;0;0;;; -15880;3;1;false;false;127;0;85;;; -15883;1;0;false;false;;;;;; -15884;5;0;false;false;0;0;0;;; -15889;1;0;false;false;;;;;; -15890;1;0;false;false;0;0;0;;; -15891;4;0;false;false;;;;;; -15895;21;0;false;false;0;0;0;;; -15916;1;0;false;false;;;;;; -15917;5;1;false;false;127;0;85;;; -15922;2;0;false;false;0;0;0;;; -15924;4;0;false;false;;;;;; -15928;18;0;false;false;0;0;0;;; -15946;3;0;false;false;;;;;; -15949;1;0;false;false;0;0;0;;; -15950;3;0;false;false;;;;;; -15953;3;0;false;false;63;95;191;;; -15956;4;0;false;false;;;;;; -15960;1;0;false;false;63;95;191;;; -15961;1;0;false;false;;;;;; -15962;7;0;false;false;63;95;191;;; -15969;1;0;false;false;;;;;; -15970;1;0;false;false;63;95;191;;; -15971;1;0;false;false;;;;;; -15972;7;0;false;false;127;127;159;;; -15979;13;0;false;false;63;95;191;;; -15992;8;0;false;false;127;127;159;;; -16000;1;0;false;false;;;;;; -16001;3;0;false;false;63;95;191;;; -16004;1;0;false;false;;;;;; -16005;9;0;false;false;63;95;191;;; -16014;1;0;false;false;;;;;; -16015;3;0;false;false;63;95;191;;; -16018;1;0;false;false;;;;;; -16019;4;0;false;false;63;95;191;;; -16023;1;0;false;false;;;;;; -16024;5;0;false;false;63;95;191;;; -16029;4;0;false;false;;;;;; -16033;1;0;false;false;63;95;191;;; -16034;1;0;false;false;;;;;; -16035;2;0;false;false;63;95;191;;; -16037;1;0;false;false;;;;;; -16038;6;0;false;false;63;95;191;;; -16044;4;0;false;false;;;;;; -16048;2;0;false;false;63;95;191;;; -16050;3;0;false;false;;;;;; -16053;4;1;false;false;127;0;85;;; -16057;1;0;false;false;;;;;; -16058;20;0;false;false;0;0;0;;; -16078;1;0;false;false;;;;;; -16079;1;0;false;false;0;0;0;;; -16080;4;0;false;false;;;;;; -16084;9;0;false;false;0;0;0;;; -16093;1;0;false;false;;;;;; -16094;4;0;false;false;0;0;0;;; -16098;1;0;false;false;;;;;; -16099;1;0;false;false;0;0;0;;; -16100;1;0;false;false;;;;;; -16101;22;0;false;false;0;0;0;;; -16123;1;0;false;false;;;;;; -16124;2;0;false;false;0;0;0;;; -16126;1;0;false;false;;;;;; -16127;2;0;false;false;0;0;0;;; -16129;1;0;false;false;;;;;; -16130;3;0;false;false;0;0;0;;; -16133;4;0;false;false;;;;;; -16137;5;0;false;false;0;0;0;;; -16142;1;0;false;false;;;;;; -16143;3;0;false;false;0;0;0;;; -16146;1;0;false;false;;;;;; -16147;1;0;false;false;0;0;0;;; -16148;1;0;false;false;;;;;; -16149;17;0;false;false;0;0;0;;; -16166;8;0;false;false;;;;;; -16174;11;0;false;false;0;0;0;;; -16185;1;0;false;false;;;;;; -16186;1;0;false;false;0;0;0;;; -16187;1;0;false;false;;;;;; -16188;3;1;false;false;127;0;85;;; -16191;1;0;false;false;;;;;; -16192;13;0;false;false;0;0;0;;; -16205;1;0;false;false;;;;;; -16206;26;0;false;false;0;0;0;;; -16232;1;0;false;false;;;;;; -16233;28;0;false;false;0;0;0;;; -16261;1;0;false;false;;;;;; -16262;12;0;false;false;0;0;0;;; -16274;4;0;false;false;;;;;; -16278;10;0;false;false;0;0;0;;; -16288;1;0;false;false;;;;;; -16289;1;0;false;false;0;0;0;;; -16290;1;0;false;false;;;;;; -16291;24;0;false;false;0;0;0;;; -16315;4;0;false;false;;;;;; -16319;9;0;false;false;0;0;0;;; -16328;1;0;false;false;;;;;; -16329;1;0;false;false;0;0;0;;; -16330;1;0;false;false;;;;;; -16331;17;0;false;false;0;0;0;;; -16348;4;0;false;false;;;;;; -16352;32;0;false;false;63;127;95;;; -16384;2;0;false;false;;;;;; -16386;12;0;false;false;0;0;0;;; -16398;1;0;false;false;;;;;; -16399;1;0;false;false;0;0;0;;; -16400;1;0;false;false;;;;;; -16401;5;0;false;false;0;0;0;;; -16406;1;0;false;false;;;;;; -16407;1;0;false;false;0;0;0;;; -16408;1;0;false;false;;;;;; -16409;7;0;false;false;0;0;0;;; -16416;9;0;false;false;;;;;; -16425;12;0;false;false;0;0;0;;; -16437;1;0;false;false;;;;;; -16438;1;0;false;false;0;0;0;;; -16439;1;0;false;false;;;;;; -16440;5;0;false;false;0;0;0;;; -16445;1;0;false;false;;;;;; -16446;1;0;false;false;0;0;0;;; -16447;1;0;false;false;;;;;; -16448;7;0;false;false;0;0;0;;; -16455;4;0;false;false;;;;;; -16459;16;0;false;false;0;0;0;;; -16475;1;0;false;false;;;;;; -16476;2;0;false;false;0;0;0;;; -16478;1;0;false;false;;;;;; -16479;13;0;false;false;0;0;0;;; -16492;1;0;false;false;;;;;; -16493;1;0;false;false;0;0;0;;; -16494;1;0;false;false;;;;;; -16495;12;0;false;false;0;0;0;;; -16507;4;0;false;false;;;;;; -16511;17;0;false;false;0;0;0;;; -16528;1;0;false;false;;;;;; -16529;2;0;false;false;0;0;0;;; -16531;1;0;false;false;;;;;; -16532;13;0;false;false;0;0;0;;; -16545;1;0;false;false;;;;;; -16546;1;0;false;false;0;0;0;;; -16547;1;0;false;false;;;;;; -16548;13;0;false;false;0;0;0;;; -16561;9;0;false;false;;;;;; -16570;61;0;false;false;63;127;95;;; -16631;2;0;false;false;;;;;; -16633;3;1;false;false;127;0;85;;; -16636;1;0;false;false;;;;;; -16637;5;0;false;false;0;0;0;;; -16642;1;0;false;false;;;;;; -16643;1;0;false;false;0;0;0;;; -16644;1;0;false;false;;;;;; -16645;8;0;false;false;0;0;0;;; -16653;1;0;false;false;;;;;; -16654;1;0;false;false;0;0;0;;; -16655;1;0;false;false;;;;;; -16656;17;0;false;false;0;0;0;;; -16673;1;0;false;false;;;;;; -16674;1;0;false;false;0;0;0;;; -16675;1;0;false;false;;;;;; -16676;18;0;false;false;0;0;0;;; -16694;4;0;false;false;;;;;; -16698;2;0;false;false;0;0;0;;; -16700;1;0;false;false;;;;;; -16701;1;0;false;false;0;0;0;;; -16702;1;0;false;false;;;;;; -16703;3;1;false;false;127;0;85;;; -16706;1;0;false;false;;;;;; -16707;11;0;false;false;0;0;0;;; -16718;1;0;false;false;;;;;; -16719;7;0;false;false;0;0;0;;; -16726;4;0;false;false;;;;;; -16730;24;0;false;false;0;0;0;;; -16754;4;0;false;false;;;;;; -16758;8;0;false;false;0;0;0;;; -16766;1;0;false;false;;;;;; -16767;1;0;false;false;0;0;0;;; -16768;1;0;false;false;;;;;; -16769;3;1;false;false;127;0;85;;; -16772;1;0;false;false;;;;;; -16773;14;0;false;false;0;0;0;;; -16787;5;0;false;false;;;;;; -16792;8;0;false;false;0;0;0;;; -16800;1;0;false;false;;;;;; -16801;12;0;false;false;0;0;0;;; -16813;1;0;false;false;;;;;; -16814;3;0;false;false;0;0;0;;; -16817;1;0;false;false;;;;;; -16818;15;0;false;false;0;0;0;;; -16833;5;0;false;false;;;;;; -16838;16;0;false;false;0;0;0;;; -16854;1;0;false;false;;;;;; -16855;11;0;false;false;0;0;0;;; -16866;1;0;false;false;;;;;; -16867;13;0;false;false;0;0;0;;; -16880;6;0;false;false;;;;;; -16886;17;0;false;false;0;0;0;;; -16903;1;0;false;false;;;;;; -16904;12;0;false;false;0;0;0;;; -16916;4;0;false;false;;;;;; -16920;2;1;false;false;127;0;85;;; -16922;1;0;false;false;;;;;; -16923;20;0;false;false;0;0;0;;; -16943;1;0;false;false;;;;;; -16944;2;0;false;false;0;0;0;;; -16946;1;0;false;false;;;;;; -16947;4;1;false;false;127;0;85;;; -16951;1;0;false;false;0;0;0;;; -16952;1;0;false;false;;;;;; -16953;1;0;false;false;0;0;0;;; -16954;5;0;false;false;;;;;; -16959;3;1;false;false;127;0;85;;; -16962;1;0;false;false;;;;;; -16963;10;0;false;false;0;0;0;;; -16973;1;0;false;false;;;;;; -16974;1;0;false;false;0;0;0;;; -16975;1;0;false;false;;;;;; -16976;25;0;false;false;0;0;0;;; -17001;5;0;false;false;;;;;; -17006;12;0;false;false;0;0;0;;; -17018;1;0;false;false;;;;;; -17019;2;0;false;false;0;0;0;;; -17021;1;0;false;false;;;;;; -17022;10;0;false;false;0;0;0;;; -17032;1;0;false;false;;;;;; -17033;1;0;false;false;0;0;0;;; -17034;1;0;false;false;;;;;; -17035;2;0;false;false;0;0;0;;; -17037;5;0;false;false;;;;;; -17042;17;0;false;false;0;0;0;;; -17059;1;0;false;false;;;;;; -17060;2;0;false;false;0;0;0;;; -17062;1;0;false;false;;;;;; -17063;10;0;false;false;0;0;0;;; -17073;1;0;false;false;;;;;; -17074;1;0;false;false;0;0;0;;; -17075;1;0;false;false;;;;;; -17076;2;0;false;false;0;0;0;;; -17078;4;0;false;false;;;;;; -17082;1;0;false;false;0;0;0;;; -17083;4;0;false;false;;;;;; -17087;2;1;false;false;127;0;85;;; -17089;1;0;false;false;;;;;; -17090;20;0;false;false;0;0;0;;; -17110;1;0;false;false;;;;;; -17111;2;0;false;false;0;0;0;;; -17113;1;0;false;false;;;;;; -17114;4;1;false;false;127;0;85;;; -17118;1;0;false;false;0;0;0;;; -17119;1;0;false;false;;;;;; -17120;1;0;false;false;0;0;0;;; -17121;5;0;false;false;;;;;; -17126;17;0;false;false;0;0;0;;; -17143;1;0;false;false;;;;;; -17144;2;0;false;false;0;0;0;;; -17146;1;0;false;false;;;;;; -17147;24;0;false;false;0;0;0;;; -17171;1;0;false;false;;;;;; -17172;1;0;false;false;0;0;0;;; -17173;1;0;false;false;;;;;; -17174;2;0;false;false;0;0;0;;; -17176;4;0;false;false;;;;;; -17180;1;0;false;false;0;0;0;;; -17181;4;0;false;false;;;;;; -17185;8;0;false;false;0;0;0;;; -17193;1;0;false;false;;;;;; -17194;1;0;false;false;0;0;0;;; -17195;1;0;false;false;;;;;; -17196;17;0;false;false;0;0;0;;; -17213;1;0;false;false;;;;;; -17214;1;0;false;false;0;0;0;;; -17215;1;0;false;false;;;;;; -17216;25;0;false;false;0;0;0;;; -17241;4;0;false;false;;;;;; -17245;17;0;false;false;0;0;0;;; -17262;1;0;false;false;;;;;; -17263;7;0;false;false;0;0;0;;; -17270;1;0;false;false;;;;;; -17271;1;0;false;false;0;0;0;;; -17272;1;0;false;false;;;;;; -17273;22;0;false;false;0;0;0;;; -17295;4;0;false;false;;;;;; -17299;9;0;false;false;0;0;0;;; -17308;1;0;false;false;;;;;; -17309;1;0;false;false;0;0;0;;; -17310;1;0;false;false;;;;;; -17311;2;0;false;false;0;0;0;;; -17313;4;0;false;false;;;;;; -17317;2;1;false;false;127;0;85;;; -17319;1;0;false;false;;;;;; -17320;12;0;false;false;0;0;0;;; -17332;1;0;false;false;;;;;; -17333;1;0;false;false;0;0;0;;; -17334;5;0;false;false;;;;;; -17339;7;0;false;false;0;0;0;;; -17346;1;0;false;false;;;;;; -17347;1;0;false;false;0;0;0;;; -17348;1;0;false;false;;;;;; -17349;2;0;false;false;0;0;0;;; -17351;4;0;false;false;;;;;; -17355;1;0;false;false;0;0;0;;; -17356;4;0;false;false;;;;;; -17360;4;1;false;false;127;0;85;;; -17364;1;0;false;false;;;;;; -17365;1;0;false;false;0;0;0;;; -17366;5;0;false;false;;;;;; -17371;7;0;false;false;0;0;0;;; -17378;1;0;false;false;;;;;; -17379;1;0;false;false;0;0;0;;; -17380;1;0;false;false;;;;;; -17381;22;0;false;false;0;0;0;;; -17403;1;0;false;false;;;;;; -17404;1;0;false;false;0;0;0;;; -17405;1;0;false;false;;;;;; -17406;2;0;false;false;0;0;0;;; -17408;4;0;false;false;;;;;; -17412;1;0;false;false;0;0;0;;; -17413;4;0;false;false;;;;;; -17417;11;0;false;false;0;0;0;;; -17428;1;0;false;false;;;;;; -17429;4;0;false;false;0;0;0;;; -17433;1;0;false;false;;;;;; -17434;1;0;false;false;0;0;0;;; -17435;1;0;false;false;;;;;; -17436;25;0;false;false;0;0;0;;; -17461;4;0;false;false;;;;;; -17465;2;1;false;false;127;0;85;;; -17467;1;0;false;false;;;;;; -17468;11;0;false;false;0;0;0;;; -17479;1;0;false;false;;;;;; -17480;2;0;false;false;0;0;0;;; -17482;1;0;false;false;;;;;; -17483;23;0;false;false;0;0;0;;; -17506;1;0;false;false;;;;;; -17507;1;0;false;false;0;0;0;;; -17508;5;0;false;false;;;;;; -17513;9;0;false;false;0;0;0;;; -17522;1;0;false;false;;;;;; -17523;1;0;false;false;0;0;0;;; -17524;1;0;false;false;;;;;; -17525;10;0;false;false;0;0;0;;; -17535;1;0;false;false;;;;;; -17536;1;0;false;false;0;0;0;;; -17537;1;0;false;false;;;;;; -17538;2;0;false;false;0;0;0;;; -17540;1;0;false;false;;;;;; -17541;1;0;false;false;0;0;0;;; -17542;1;0;false;false;;;;;; -17543;9;0;false;false;0;0;0;;; -17552;4;0;false;false;;;;;; -17556;1;0;false;false;0;0;0;;; -17557;5;0;false;false;;;;;; -17562;4;1;false;false;127;0;85;;; -17566;4;0;false;false;;;;;; -17570;2;1;false;false;127;0;85;;; -17572;1;0;false;false;;;;;; -17573;11;0;false;false;0;0;0;;; -17584;1;0;false;false;;;;;; -17585;2;0;false;false;0;0;0;;; -17587;1;0;false;false;;;;;; -17588;22;0;false;false;0;0;0;;; -17610;1;0;false;false;;;;;; -17611;1;0;false;false;0;0;0;;; -17612;5;0;false;false;;;;;; -17617;9;0;false;false;0;0;0;;; -17626;1;0;false;false;;;;;; -17627;1;0;false;false;0;0;0;;; -17628;1;0;false;false;;;;;; -17629;37;0;false;false;0;0;0;;; -17666;5;0;false;false;;;;;; -17671;2;1;false;false;127;0;85;;; -17673;1;0;false;false;;;;;; -17674;12;0;false;false;0;0;0;;; -17686;1;0;false;false;;;;;; -17687;1;0;false;false;0;0;0;;; -17688;1;0;false;false;;;;;; -17689;2;0;false;false;0;0;0;;; -17691;1;0;false;false;;;;;; -17692;1;0;false;false;0;0;0;;; -17693;6;0;false;false;;;;;; -17699;7;0;false;false;0;0;0;;; -17706;1;0;false;false;;;;;; -17707;1;0;false;false;0;0;0;;; -17708;1;0;false;false;;;;;; -17709;35;0;false;false;0;0;0;;; -17744;1;0;false;false;;;;;; -17745;1;0;false;false;0;0;0;;; -17746;1;0;false;false;;;;;; -17747;11;0;false;false;0;0;0;;; -17758;1;0;false;false;;;;;; -17759;1;0;false;false;0;0;0;;; -17760;1;0;false;false;;;;;; -17761;3;0;false;false;0;0;0;;; -17764;5;0;false;false;;;;;; -17769;1;0;false;false;0;0;0;;; -17770;6;0;false;false;;;;;; -17776;4;1;false;false;127;0;85;;; -17780;1;0;false;false;;;;;; -17781;1;0;false;false;0;0;0;;; -17782;6;0;false;false;;;;;; -17788;7;0;false;false;0;0;0;;; -17795;1;0;false;false;;;;;; -17796;1;0;false;false;0;0;0;;; -17797;1;0;false;false;;;;;; -17798;9;0;false;false;0;0;0;;; -17807;1;0;false;false;;;;;; -17808;1;0;false;false;0;0;0;;; -17809;1;0;false;false;;;;;; -17810;2;0;false;false;0;0;0;;; -17812;5;0;false;false;;;;;; -17817;1;0;false;false;0;0;0;;; -17818;4;0;false;false;;;;;; -17822;1;0;false;false;0;0;0;;; -17823;3;0;false;false;;;;;; -17826;1;0;false;false;0;0;0;;; -17827;3;0;false;false;;;;;; -17830;3;0;false;false;63;95;191;;; -17833;4;0;false;false;;;;;; -17837;1;0;false;false;63;95;191;;; -17838;1;0;false;false;;;;;; -17839;7;0;false;false;63;95;191;;; -17846;1;0;false;false;;;;;; -17847;3;0;false;false;63;95;191;;; -17850;1;0;false;false;;;;;; -17851;7;0;false;false;63;95;191;;; -17858;1;0;false;false;;;;;; -17859;5;0;false;false;63;95;191;;; -17864;1;0;false;false;;;;;; -17865;3;0;false;false;63;95;191;;; -17868;1;0;false;false;;;;;; -17869;3;0;false;false;63;95;191;;; -17872;1;0;false;false;;;;;; -17873;5;0;false;false;63;95;191;;; -17878;1;0;false;false;;;;;; -17879;7;0;false;false;63;95;191;;; -17886;1;0;false;false;;;;;; -17887;6;0;false;false;63;95;191;;; -17893;4;0;false;false;;;;;; -17897;1;0;false;false;63;95;191;;; -17898;1;0;false;false;;;;;; -17899;4;0;false;false;127;127;159;;; -17903;4;0;false;false;;;;;; -17907;1;0;false;false;63;95;191;;; -17908;1;0;false;false;;;;;; -17909;7;1;false;false;127;159;191;;; -17916;5;0;false;false;63;95;191;;; -17921;1;0;false;false;;;;;; -17922;7;0;false;false;63;95;191;;; -17929;1;0;false;false;;;;;; -17930;5;0;false;false;63;95;191;;; -17935;4;0;false;false;;;;;; -17939;1;0;false;false;63;95;191;;; -17940;1;0;false;false;;;;;; -17941;8;1;false;false;127;159;191;;; -17949;5;0;false;false;63;95;191;;; -17954;1;0;false;false;;;;;; -17955;6;0;false;false;63;95;191;;; -17961;1;0;false;false;;;;;; -17962;2;0;false;false;63;95;191;;; -17964;1;0;false;false;;;;;; -17965;3;0;false;false;63;95;191;;; -17968;1;0;false;false;;;;;; -17969;7;0;false;false;63;95;191;;; -17976;1;0;false;false;;;;;; -17977;4;0;false;false;63;95;191;;; -17981;1;0;false;false;;;;;; -17982;3;0;false;false;63;95;191;;; -17985;1;0;false;false;;;;;; -17986;4;0;false;false;63;95;191;;; -17990;1;0;false;false;;;;;; -17991;3;0;false;false;63;95;191;;; -17994;1;0;false;false;;;;;; -17995;6;0;false;false;63;95;191;;; -18001;5;0;false;false;;;;;; -18006;1;0;false;false;63;95;191;;; -18007;2;0;false;false;;;;;; -18009;2;0;false;false;63;95;191;;; -18011;1;0;false;false;;;;;; -18012;3;0;false;false;63;95;191;;; -18015;1;0;false;false;;;;;; -18016;7;0;false;false;63;95;191;;; -18023;1;0;false;false;;;;;; -18024;6;0;false;false;63;95;191;;; -18030;5;0;false;false;;;;;; -18035;2;0;false;false;63;95;191;;; -18037;3;0;false;false;;;;;; -18040;5;0;false;false;0;0;0;;; -18045;1;0;false;false;;;;;; -18046;21;0;false;false;0;0;0;;; -18067;1;0;false;false;;;;;; -18068;6;0;false;false;0;0;0;;; -18074;1;0;false;false;;;;;; -18075;1;0;false;false;0;0;0;;; -18076;4;0;false;false;;;;;; -18080;5;0;false;false;0;0;0;;; -18085;1;0;false;false;;;;;; -18086;12;0;false;false;0;0;0;;; -18098;1;0;false;false;;;;;; -18099;1;0;false;false;0;0;0;;; -18100;1;0;false;false;;;;;; -18101;4;1;false;false;127;0;85;;; -18105;1;0;false;false;0;0;0;;; -18106;8;0;false;false;;;;;; -18114;2;1;false;false;127;0;85;;; -18116;1;0;false;false;;;;;; -18117;6;0;false;false;0;0;0;;; -18123;1;0;false;false;;;;;; -18124;2;0;false;false;0;0;0;;; -18126;1;0;false;false;;;;;; -18127;4;1;false;false;127;0;85;;; -18131;1;0;false;false;0;0;0;;; -18132;1;0;false;false;;;;;; -18133;1;0;false;false;0;0;0;;; -18134;5;0;false;false;;;;;; -18139;12;0;false;false;0;0;0;;; -18151;1;0;false;false;;;;;; -18152;1;0;false;false;0;0;0;;; -18153;1;0;false;false;;;;;; -18154;7;0;false;false;0;0;0;;; -18161;1;0;false;false;;;;;; -18162;25;0;false;false;0;0;0;;; -18187;7;0;false;false;;;;;; -18194;2;1;false;false;127;0;85;;; -18196;1;0;false;false;;;;;; -18197;13;0;false;false;0;0;0;;; -18210;1;0;false;false;;;;;; -18211;2;0;false;false;0;0;0;;; -18213;1;0;false;false;;;;;; -18214;4;1;false;false;127;0;85;;; -18218;1;0;false;false;0;0;0;;; -18219;1;0;false;false;;;;;; -18220;1;0;false;false;0;0;0;;; -18221;6;0;false;false;;;;;; -18227;12;0;false;false;0;0;0;;; -18239;1;0;false;false;;;;;; -18240;1;0;false;false;0;0;0;;; -18241;1;0;false;false;;;;;; -18242;3;1;false;false;127;0;85;;; -18245;1;0;false;false;;;;;; -18246;14;0;false;false;0;0;0;;; -18260;1;0;false;false;;;;;; -18261;16;0;false;false;0;0;0;;; -18277;6;0;false;false;;;;;; -18283;24;0;false;false;0;0;0;;; -18307;1;0;false;false;;;;;; -18308;14;0;false;false;0;0;0;;; -18322;5;0;false;false;;;;;; -18327;1;0;false;false;0;0;0;;; -18328;4;0;false;false;;;;;; -18332;1;0;false;false;0;0;0;;; -18333;4;0;false;false;;;;;; -18337;6;1;false;false;127;0;85;;; -18343;1;0;false;false;;;;;; -18344;13;0;false;false;0;0;0;;; -18357;3;0;false;false;;;;;; -18360;1;0;false;false;0;0;0;;; -18361;3;0;false;false;;;;;; -18364;3;0;false;false;63;95;191;;; -18367;4;0;false;false;;;;;; -18371;1;0;false;false;63;95;191;;; -18372;1;0;false;false;;;;;; -18373;6;0;false;false;63;95;191;;; -18379;1;0;false;false;;;;;; -18380;3;0;false;false;63;95;191;;; -18383;1;0;false;false;;;;;; -18384;5;0;false;false;63;95;191;;; -18389;1;0;false;false;;;;;; -18390;2;0;false;false;63;95;191;;; -18392;1;0;false;false;;;;;; -18393;3;0;false;false;63;95;191;;; -18396;1;0;false;false;;;;;; -18397;9;0;false;false;63;95;191;;; -18406;1;0;false;false;;;;;; -18407;4;0;false;false;63;95;191;;; -18411;1;0;false;false;;;;;; -18412;6;0;false;false;63;95;191;;; -18418;4;0;false;false;;;;;; -18422;2;0;false;false;63;95;191;;; -18424;3;0;false;false;;;;;; -18427;4;1;false;false;127;0;85;;; -18431;1;0;false;false;;;;;; -18432;7;0;false;false;0;0;0;;; -18439;1;0;false;false;;;;;; -18440;1;0;false;false;0;0;0;;; -18441;4;0;false;false;;;;;; -18445;17;0;false;false;0;0;0;;; -18462;1;0;false;false;;;;;; -18463;7;0;false;false;0;0;0;;; -18470;1;0;false;false;;;;;; -18471;1;0;false;false;0;0;0;;; -18472;1;0;false;false;;;;;; -18473;22;0;false;false;0;0;0;;; -18495;4;0;false;false;;;;;; -18499;5;0;false;false;0;0;0;;; -18504;1;0;false;false;;;;;; -18505;10;0;false;false;0;0;0;;; -18515;1;0;false;false;;;;;; -18516;1;0;false;false;0;0;0;;; -18517;1;0;false;false;;;;;; -18518;19;0;false;false;0;0;0;;; -18537;4;0;false;false;;;;;; -18541;5;0;false;false;0;0;0;;; -18546;1;0;false;false;;;;;; -18547;10;0;false;false;0;0;0;;; -18557;1;0;false;false;;;;;; -18558;1;0;false;false;0;0;0;;; -18559;1;0;false;false;;;;;; -18560;19;0;false;false;0;0;0;;; -18579;4;0;false;false;;;;;; -18583;3;1;false;false;127;0;85;;; -18586;1;0;false;false;;;;;; -18587;10;0;false;false;0;0;0;;; -18597;1;0;false;false;;;;;; -18598;1;0;false;false;0;0;0;;; -18599;1;0;false;false;;;;;; -18600;25;0;false;false;0;0;0;;; -18625;4;0;false;false;;;;;; -18629;3;1;false;false;127;0;85;;; -18632;1;0;false;false;;;;;; -18633;6;0;false;false;0;0;0;;; -18639;1;0;false;false;;;;;; -18640;1;0;false;false;0;0;0;;; -18641;1;0;false;false;;;;;; -18642;13;0;false;false;0;0;0;;; -18655;4;0;false;false;;;;;; -18659;3;1;false;false;127;0;85;;; -18662;1;0;false;false;;;;;; -18663;4;0;false;false;0;0;0;;; -18667;1;0;false;false;;;;;; -18668;1;0;false;false;0;0;0;;; -18669;1;0;false;false;;;;;; -18670;10;0;false;false;0;0;0;;; -18680;8;0;false;false;;;;;; -18688;3;1;false;false;127;0;85;;; -18691;1;0;false;false;;;;;; -18692;1;0;false;false;0;0;0;;; -18693;3;1;false;false;127;0;85;;; -18696;1;0;false;false;;;;;; -18697;1;0;false;false;0;0;0;;; -18698;1;0;false;false;;;;;; -18699;1;0;false;false;0;0;0;;; -18700;1;0;false;false;;;;;; -18701;10;0;false;false;0;0;0;;; -18711;1;0;false;false;;;;;; -18712;1;0;false;false;0;0;0;;; -18713;1;0;false;false;;;;;; -18714;2;0;false;false;0;0;0;;; -18716;1;0;false;false;;;;;; -18717;7;0;false;false;0;0;0;;; -18724;1;0;false;false;;;;;; -18725;2;0;false;false;0;0;0;;; -18727;1;0;false;false;;;;;; -18728;4;0;false;false;0;0;0;;; -18732;1;0;false;false;;;;;; -18733;2;0;false;false;0;0;0;;; -18735;1;0;false;false;;;;;; -18736;8;0;false;false;0;0;0;;; -18744;1;0;false;false;;;;;; -18745;4;0;false;false;0;0;0;;; -18749;1;0;false;false;;;;;; -18750;6;0;false;false;0;0;0;;; -18756;1;0;false;false;;;;;; -18757;2;0;false;false;0;0;0;;; -18759;1;0;false;false;;;;;; -18760;11;0;false;false;0;0;0;;; -18771;1;0;false;false;;;;;; -18772;1;0;false;false;0;0;0;;; -18773;5;0;false;false;;;;;; -18778;6;0;false;false;0;0;0;;; -18784;1;0;false;false;;;;;; -18785;4;0;false;false;0;0;0;;; -18789;1;0;false;false;;;;;; -18790;1;0;false;false;0;0;0;;; -18791;1;0;false;false;;;;;; -18792;19;0;false;false;0;0;0;;; -18811;10;0;false;false;;;;;; -18821;2;1;false;false;127;0;85;;; -18823;1;0;false;false;;;;;; -18824;7;0;false;false;0;0;0;;; -18831;1;0;false;false;;;;;; -18832;2;0;false;false;0;0;0;;; -18834;1;0;false;false;;;;;; -18835;13;0;false;false;0;0;0;;; -18848;1;0;false;false;;;;;; -18849;1;0;false;false;0;0;0;;; -18850;6;0;false;false;;;;;; -18856;16;0;false;false;0;0;0;;; -18872;5;0;false;false;;;;;; -18877;1;0;false;false;0;0;0;;; -18878;5;0;false;false;;;;;; -18883;18;0;false;false;0;0;0;;; -18901;6;0;false;false;;;;;; -18907;5;0;false;false;0;0;0;;; -18912;1;0;false;false;;;;;; -18913;2;0;false;false;0;0;0;;; -18915;1;0;false;false;;;;;; -18916;7;0;false;false;0;0;0;;; -18923;1;0;false;false;;;;;; -18924;3;0;false;false;0;0;0;;; -18927;1;0;false;false;;;;;; -18928;11;0;false;false;0;0;0;;; -18939;1;0;false;false;;;;;; -18940;11;0;false;false;0;0;0;;; -18951;1;0;false;false;;;;;; -18952;4;1;false;false;127;0;85;;; -18956;2;0;false;false;0;0;0;;; -18958;5;0;false;false;;;;;; -18963;2;1;false;false;127;0;85;;; -18965;1;0;false;false;;;;;; -18966;7;0;false;false;0;0;0;;; -18973;1;0;false;false;;;;;; -18974;1;0;false;false;0;0;0;;; -18975;1;0;false;false;;;;;; -18976;10;0;false;false;0;0;0;;; -18986;1;0;false;false;;;;;; -18987;1;0;false;false;0;0;0;;; -18988;1;0;false;false;;;;;; -18989;1;0;false;false;0;0;0;;; -18990;1;0;false;false;;;;;; -18991;1;0;false;false;0;0;0;;; -18992;1;0;false;false;;;;;; -18993;12;0;false;false;0;0;0;;; -19005;1;0;false;false;;;;;; -19006;1;0;false;false;0;0;0;;; -19007;1;0;false;false;;;;;; -19008;18;0;false;false;0;0;0;;; -19026;1;0;false;false;;;;;; -19027;1;0;false;false;0;0;0;;; -19028;6;0;false;false;;;;;; -19034;20;0;false;false;63;127;95;;; -19054;4;0;false;false;;;;;; -19058;14;0;false;false;0;0;0;;; -19072;6;0;false;false;;;;;; -19078;6;0;false;false;0;0;0;;; -19084;1;0;false;false;;;;;; -19085;1;0;false;false;0;0;0;;; -19086;1;0;false;false;;;;;; -19087;12;0;false;false;0;0;0;;; -19099;1;0;false;false;;;;;; -19100;1;0;false;false;0;0;0;;; -19101;1;0;false;false;;;;;; -19102;11;0;false;false;0;0;0;;; -19113;6;0;false;false;;;;;; -19119;7;0;false;false;0;0;0;;; -19126;5;0;false;false;;;;;; -19131;1;0;false;false;0;0;0;;; -19132;4;0;false;false;;;;;; -19136;1;0;false;false;0;0;0;;; -19137;4;0;false;false;;;;;; -19141;2;1;false;false;127;0;85;;; -19143;1;0;false;false;;;;;; -19144;7;0;false;false;0;0;0;;; -19151;1;0;false;false;;;;;; -19152;1;0;false;false;0;0;0;;; -19153;1;0;false;false;;;;;; -19154;13;0;false;false;0;0;0;;; -19167;1;0;false;false;;;;;; -19168;1;0;false;false;0;0;0;;; -19169;5;0;false;false;;;;;; -19174;23;0;false;false;63;127;95;;; -19197;3;0;false;false;;;;;; -19200;14;0;false;false;0;0;0;;; -19214;4;0;false;false;;;;;; -19218;1;0;false;false;0;0;0;;; -19219;3;0;false;false;;;;;; -19222;1;0;false;false;0;0;0;;; -19223;3;0;false;false;;;;;; -19226;3;0;false;false;63;95;191;;; -19229;4;0;false;false;;;;;; -19233;1;0;false;false;63;95;191;;; -19234;1;0;false;false;;;;;; -19235;5;0;false;false;63;95;191;;; -19240;1;0;false;false;;;;;; -19241;6;0;false;false;63;95;191;;; -19247;1;0;false;false;;;;;; -19248;2;0;false;false;63;95;191;;; -19250;1;0;false;false;;;;;; -19251;6;0;false;false;63;95;191;;; -19257;1;0;false;false;;;;;; -19258;12;0;false;false;63;95;191;;; -19270;4;0;false;false;;;;;; -19274;1;0;false;false;63;95;191;;; -19275;5;0;false;false;;;;;; -19280;1;0;false;false;63;95;191;;; -19281;1;0;false;false;;;;;; -19282;7;1;false;false;127;159;191;;; -19289;4;0;false;false;63;95;191;;; -19293;1;0;false;false;;;;;; -19294;4;0;false;false;63;95;191;;; -19298;1;0;false;false;;;;;; -19299;6;0;false;false;63;95;191;;; -19305;1;0;false;false;;;;;; -19306;2;0;false;false;63;95;191;;; -19308;1;0;false;false;;;;;; -19309;6;0;false;false;63;95;191;;; -19315;1;0;false;false;;;;;; -19316;2;0;false;false;63;95;191;;; -19318;1;0;false;false;;;;;; -19319;9;0;false;false;63;95;191;;; -19328;1;0;false;false;;;;;; -19329;2;0;false;false;63;95;191;;; -19331;1;0;false;false;;;;;; -19332;3;0;false;false;63;95;191;;; -19335;1;0;false;false;;;;;; -19336;22;0;false;false;63;95;191;;; -19358;1;0;false;false;;;;;; -19359;6;0;false;false;63;95;191;;; -19365;1;0;false;false;;;;;; -19366;2;0;false;false;63;95;191;;; -19368;1;0;false;false;;;;;; -19369;7;0;false;false;63;95;191;;; -19376;4;0;false;false;;;;;; -19380;1;0;false;false;63;95;191;;; -19381;1;0;false;false;;;;;; -19382;7;1;false;false;127;159;191;;; -19389;6;0;false;false;63;95;191;;; -19395;1;0;false;false;;;;;; -19396;4;0;false;false;63;95;191;;; -19400;1;0;false;false;;;;;; -19401;1;0;false;false;63;95;191;;; -19402;1;0;false;false;;;;;; -19403;5;0;false;false;63;95;191;;; -19408;1;0;false;false;;;;;; -19409;3;0;false;false;63;95;191;;; -19412;1;0;false;false;;;;;; -19413;7;0;false;false;63;95;191;;; -19420;1;0;false;false;;;;;; -19421;5;0;false;false;63;95;191;;; -19426;1;0;false;false;;;;;; -19427;1;0;false;false;63;95;191;;; -19428;1;0;false;false;;;;;; -19429;5;0;false;false;63;95;191;;; -19434;1;0;false;false;;;;;; -19435;3;0;false;false;63;95;191;;; -19438;1;0;false;false;;;;;; -19439;6;0;false;false;63;95;191;;; -19445;4;0;false;false;;;;;; -19449;2;0;false;false;63;95;191;;; -19451;3;0;false;false;;;;;; -19454;4;1;false;false;127;0;85;;; -19458;1;0;false;false;;;;;; -19459;16;0;false;false;0;0;0;;; -19475;3;1;false;false;127;0;85;;; -19478;1;0;false;false;;;;;; -19479;5;0;false;false;0;0;0;;; -19484;1;0;false;false;;;;;; -19485;7;1;false;false;127;0;85;;; -19492;1;0;false;false;;;;;; -19493;7;0;false;false;0;0;0;;; -19500;1;0;false;false;;;;;; -19501;1;0;false;false;0;0;0;;; -19502;4;0;false;false;;;;;; -19506;3;1;false;false;127;0;85;;; -19509;1;0;false;false;;;;;; -19510;16;0;false;false;0;0;0;;; -19526;1;0;false;false;;;;;; -19527;1;0;false;false;0;0;0;;; -19528;1;0;false;false;;;;;; -19529;2;0;false;false;0;0;0;;; -19531;4;0;false;false;;;;;; -19535;5;1;false;false;127;0;85;;; -19540;1;0;false;false;;;;;; -19541;3;1;false;false;127;0;85;;; -19544;1;0;false;false;;;;;; -19545;12;0;false;false;0;0;0;;; -19557;1;0;false;false;;;;;; -19558;1;0;false;false;0;0;0;;; -19559;1;0;false;false;;;;;; -19560;2;0;false;false;0;0;0;;; -19562;4;0;false;false;;;;;; -19566;6;0;false;false;0;0;0;;; -19572;1;0;false;false;;;;;; -19573;5;0;false;false;0;0;0;;; -19578;8;0;false;false;;;;;; -19586;2;1;false;false;127;0;85;;; -19588;1;0;false;false;;;;;; -19589;8;0;false;false;0;0;0;;; -19597;1;0;false;false;;;;;; -19598;1;0;false;false;0;0;0;;; -19599;5;0;false;false;;;;;; -19604;4;0;false;false;0;0;0;;; -19608;1;0;false;false;;;;;; -19609;1;0;false;false;0;0;0;;; -19610;1;0;false;false;;;;;; -19611;20;0;false;false;0;0;0;;; -19631;4;0;false;false;;;;;; -19635;1;0;false;false;0;0;0;;; -19636;4;0;false;false;;;;;; -19640;4;1;false;false;127;0;85;;; -19644;1;0;false;false;;;;;; -19645;1;0;false;false;0;0;0;;; -19646;5;0;false;false;;;;;; -19651;4;0;false;false;0;0;0;;; -19655;1;0;false;false;;;;;; -19656;1;0;false;false;0;0;0;;; -19657;1;0;false;false;;;;;; -19658;20;0;false;false;0;0;0;;; -19678;4;0;false;false;;;;;; -19682;1;0;false;false;0;0;0;;; -19683;4;0;false;false;;;;;; -19687;2;1;false;false;127;0;85;;; -19689;1;0;false;false;;;;;; -19690;5;0;false;false;0;0;0;;; -19695;1;0;false;false;;;;;; -19696;2;0;false;false;0;0;0;;; -19698;1;0;false;false;;;;;; -19699;4;1;false;false;127;0;85;;; -19703;1;0;false;false;0;0;0;;; -19704;1;0;false;false;;;;;; -19705;1;0;false;false;0;0;0;;; -19706;5;0;false;false;;;;;; -19711;6;1;false;false;127;0;85;;; -19717;1;0;false;false;0;0;0;;; -19718;4;0;false;false;;;;;; -19722;1;0;false;false;0;0;0;;; -19723;4;0;false;false;;;;;; -19727;3;1;false;false;127;0;85;;; -19730;1;0;false;false;;;;;; -19731;1;0;false;false;0;0;0;;; -19732;3;1;false;false;127;0;85;;; -19735;1;0;false;false;;;;;; -19736;1;0;false;false;0;0;0;;; -19737;1;0;false;false;;;;;; -19738;1;0;false;false;0;0;0;;; -19739;1;0;false;false;;;;;; -19740;2;0;false;false;0;0;0;;; -19742;1;0;false;false;;;;;; -19743;1;0;false;false;0;0;0;;; -19744;1;0;false;false;;;;;; -19745;1;0;false;false;0;0;0;;; -19746;1;0;false;false;;;;;; -19747;13;0;false;false;0;0;0;;; -19760;1;0;false;false;;;;;; -19761;4;0;false;false;0;0;0;;; -19765;1;0;false;false;;;;;; -19766;1;0;false;false;0;0;0;;; -19767;5;0;false;false;;;;;; -19772;3;1;false;false;127;0;85;;; -19775;1;0;false;false;;;;;; -19776;12;0;false;false;0;0;0;;; -19788;1;0;false;false;;;;;; -19789;1;0;false;false;0;0;0;;; -19790;1;0;false;false;;;;;; -19791;46;0;false;false;0;0;0;;; -19837;1;0;false;false;;;;;; -19838;18;0;false;false;0;0;0;;; -19856;5;0;false;false;;;;;; -19861;6;0;false;false;0;0;0;;; -19867;1;0;false;false;;;;;; -19868;8;0;false;false;0;0;0;;; -19876;10;0;false;false;;;;;; -19886;2;1;false;false;127;0;85;;; -19888;1;0;false;false;;;;;; -19889;13;0;false;false;0;0;0;;; -19902;1;0;false;false;;;;;; -19903;2;0;false;false;0;0;0;;; -19905;1;0;false;false;;;;;; -19906;3;0;false;false;0;0;0;;; -19909;1;0;false;false;;;;;; -19910;1;0;false;false;0;0;0;;; -19911;6;0;false;false;;;;;; -19917;7;0;false;false;0;0;0;;; -19924;1;0;false;false;;;;;; -19925;1;0;false;false;0;0;0;;; -19926;1;0;false;false;;;;;; -19927;33;0;false;false;0;0;0;;; -19960;6;0;false;false;;;;;; -19966;31;0;false;false;0;0;0;;; -19997;1;0;false;false;;;;;; -19998;2;0;false;false;0;0;0;;; -20000;1;0;false;false;;;;;; -20001;5;0;false;false;0;0;0;;; -20006;1;0;false;false;;;;;; -20007;8;0;false;false;0;0;0;;; -20015;6;0;false;false;;;;;; -20021;5;1;false;false;127;0;85;;; -20026;1;0;false;false;0;0;0;;; -20027;5;0;false;false;;;;;; -20032;1;0;false;false;0;0;0;;; -20033;5;0;false;false;;;;;; -20038;4;1;false;false;127;0;85;;; -20042;1;0;false;false;;;;;; -20043;1;0;false;false;0;0;0;;; -20044;6;0;false;false;;;;;; -20050;7;0;false;false;0;0;0;;; -20057;1;0;false;false;;;;;; -20058;1;0;false;false;0;0;0;;; -20059;1;0;false;false;;;;;; -20060;32;0;false;false;0;0;0;;; -20092;1;0;false;false;;;;;; -20093;14;0;false;false;0;0;0;;; -20107;6;0;false;false;;;;;; -20113;31;0;false;false;0;0;0;;; -20144;1;0;false;false;;;;;; -20145;2;0;false;false;0;0;0;;; -20147;1;0;false;false;;;;;; -20148;5;0;false;false;0;0;0;;; -20153;1;0;false;false;;;;;; -20154;8;0;false;false;0;0;0;;; -20162;6;0;false;false;;;;;; -20168;16;0;false;false;0;0;0;;; -20184;1;0;false;false;;;;;; -20185;1;0;false;false;0;0;0;;; -20186;1;0;false;false;;;;;; -20187;12;0;false;false;0;0;0;;; -20199;1;0;false;false;;;;;; -20200;1;0;false;false;0;0;0;;; -20201;1;0;false;false;;;;;; -20202;42;0;false;false;0;0;0;;; -20244;5;0;false;false;;;;;; -20249;1;0;false;false;0;0;0;;; -20250;4;0;false;false;;;;;; -20254;1;0;false;false;0;0;0;;; -20255;3;0;false;false;;;;;; -20258;1;0;false;false;0;0;0;;; -20259;3;0;false;false;;;;;; -20262;3;0;false;false;63;95;191;;; -20265;4;0;false;false;;;;;; -20269;1;0;false;false;63;95;191;;; -20270;1;0;false;false;;;;;; -20271;5;0;false;false;63;95;191;;; -20276;1;0;false;false;;;;;; -20277;3;0;false;false;63;95;191;;; -20280;1;0;false;false;;;;;; -20281;7;0;false;false;63;95;191;;; -20288;1;0;false;false;;;;;; -20289;2;0;false;false;63;95;191;;; -20291;1;0;false;false;;;;;; -20292;1;0;false;false;63;95;191;;; -20293;1;0;false;false;;;;;; -20294;6;0;false;false;63;95;191;;; -20300;1;0;false;false;;;;;; -20301;2;0;false;false;63;95;191;;; -20303;1;0;false;false;;;;;; -20304;6;0;false;false;63;95;191;;; -20310;1;0;false;false;;;;;; -20311;11;0;false;false;63;95;191;;; -20322;4;0;false;false;;;;;; -20326;1;0;false;false;63;95;191;;; -20327;1;0;false;false;;;;;; -20328;7;0;false;false;63;95;191;;; -20335;1;0;false;false;;;;;; -20336;3;0;false;false;63;95;191;;; -20339;1;0;false;false;;;;;; -20340;7;0;false;false;63;95;191;;; -20347;1;0;false;false;;;;;; -20348;4;0;false;false;63;95;191;;; -20352;1;0;false;false;;;;;; -20353;5;0;false;false;63;95;191;;; -20358;1;0;false;false;;;;;; -20359;9;0;false;false;63;95;191;;; -20368;1;0;false;false;;;;;; -20369;9;0;false;false;63;95;191;;; -20378;4;0;false;false;;;;;; -20382;1;0;false;false;63;95;191;;; -20383;1;0;false;false;;;;;; -20384;3;0;false;false;63;95;191;;; -20387;1;0;false;false;;;;;; -20388;4;0;false;false;63;95;191;;; -20392;1;0;false;false;;;;;; -20393;3;0;false;false;63;95;191;;; -20396;1;0;false;false;;;;;; -20397;4;0;false;false;63;95;191;;; -20401;1;0;false;false;;;;;; -20402;8;0;false;false;63;95;191;;; -20410;1;0;false;false;;;;;; -20411;9;0;false;false;63;95;191;;; -20420;1;0;false;false;;;;;; -20421;3;0;false;false;63;95;191;;; -20424;1;0;false;false;;;;;; -20425;5;0;false;false;63;95;191;;; -20430;1;0;false;false;;;;;; -20431;7;0;false;false;63;95;191;;; -20438;1;0;false;false;;;;;; -20439;5;0;false;false;63;95;191;;; -20444;4;0;false;false;;;;;; -20448;1;0;false;false;63;95;191;;; -20449;5;0;false;false;;;;;; -20454;1;0;false;false;63;95;191;;; -20455;1;0;false;false;;;;;; -20456;7;1;false;false;127;159;191;;; -20463;7;0;false;false;63;95;191;;; -20470;1;0;false;false;;;;;; -20471;10;0;false;false;63;95;191;;; -20481;1;0;false;false;;;;;; -20482;7;0;false;false;63;95;191;;; -20489;1;0;false;false;;;;;; -20490;2;0;false;false;63;95;191;;; -20492;1;0;false;false;;;;;; -20493;5;0;false;false;63;95;191;;; -20498;4;0;false;false;;;;;; -20502;1;0;false;false;63;95;191;;; -20503;1;0;false;false;;;;;; -20504;7;1;false;false;127;159;191;;; -20511;9;0;false;false;63;95;191;;; -20520;1;0;false;false;;;;;; -20521;9;0;false;false;63;95;191;;; -20530;1;0;false;false;;;;;; -20531;2;0;false;false;63;95;191;;; -20533;1;0;false;false;;;;;; -20534;3;0;false;false;63;95;191;;; -20537;1;0;false;false;;;;;; -20538;8;0;false;false;63;95;191;;; -20546;1;0;false;false;;;;;; -20547;7;0;false;false;63;95;191;;; -20554;1;0;false;false;;;;;; -20555;9;0;false;false;63;95;191;;; -20564;1;0;false;false;;;;;; -20565;7;0;false;false;63;95;191;;; -20572;5;0;false;false;;;;;; -20577;1;0;false;false;63;95;191;;; -20578;1;0;false;false;;;;;; -20579;7;1;false;false;127;159;191;;; -20586;4;0;false;false;63;95;191;;; -20590;1;0;false;false;;;;;; -20591;4;0;false;false;63;95;191;;; -20595;1;0;false;false;;;;;; -20596;6;0;false;false;63;95;191;;; -20602;1;0;false;false;;;;;; -20603;2;0;false;false;63;95;191;;; -20605;1;0;false;false;;;;;; -20606;6;0;false;false;63;95;191;;; -20612;1;0;false;false;;;;;; -20613;2;0;false;false;63;95;191;;; -20615;1;0;false;false;;;;;; -20616;9;0;false;false;63;95;191;;; -20625;1;0;false;false;;;;;; -20626;2;0;false;false;63;95;191;;; -20628;1;0;false;false;;;;;; -20629;3;0;false;false;63;95;191;;; -20632;1;0;false;false;;;;;; -20633;10;0;false;false;63;95;191;;; -20643;1;0;false;false;;;;;; -20644;8;0;false;false;63;95;191;;; -20652;4;0;false;false;;;;;; -20656;1;0;false;false;63;95;191;;; -20657;1;0;false;false;;;;;; -20658;7;1;false;false;127;159;191;;; -20665;6;0;false;false;63;95;191;;; -20671;1;0;false;false;;;;;; -20672;4;0;false;false;63;95;191;;; -20676;1;0;false;false;;;;;; -20677;1;0;false;false;63;95;191;;; -20678;1;0;false;false;;;;;; -20679;5;0;false;false;63;95;191;;; -20684;1;0;false;false;;;;;; -20685;3;0;false;false;63;95;191;;; -20688;1;0;false;false;;;;;; -20689;7;0;false;false;63;95;191;;; -20696;1;0;false;false;;;;;; -20697;5;0;false;false;63;95;191;;; -20702;1;0;false;false;;;;;; -20703;1;0;false;false;63;95;191;;; -20704;1;0;false;false;;;;;; -20705;5;0;false;false;63;95;191;;; -20710;1;0;false;false;;;;;; -20711;3;0;false;false;63;95;191;;; -20714;1;0;false;false;;;;;; -20715;6;0;false;false;63;95;191;;; -20721;4;0;false;false;;;;;; -20725;2;0;false;false;63;95;191;;; -20727;3;0;false;false;;;;;; -20730;4;1;false;false;127;0;85;;; -20734;1;0;false;false;;;;;; -20735;29;0;false;false;0;0;0;;; -20764;1;0;false;false;;;;;; -20765;8;0;false;false;0;0;0;;; -20773;1;0;false;false;;;;;; -20774;3;1;false;false;127;0;85;;; -20777;1;0;false;false;;;;;; -20778;10;0;false;false;0;0;0;;; -20788;1;0;false;false;;;;;; -20789;3;1;false;false;127;0;85;;; -20792;1;0;false;false;;;;;; -20793;5;0;false;false;0;0;0;;; -20798;1;0;false;false;;;;;; -20799;7;1;false;false;127;0;85;;; -20806;1;0;false;false;;;;;; -20807;7;0;false;false;0;0;0;;; -20814;1;0;false;false;;;;;; -20815;1;0;false;false;0;0;0;;; -20816;6;0;false;false;;;;;; -20822;3;1;false;false;127;0;85;;; -20825;1;0;false;false;;;;;; -20826;9;0;false;false;0;0;0;;; -20835;1;0;false;false;;;;;; -20836;1;0;false;false;0;0;0;;; -20837;1;0;false;false;;;;;; -20838;49;0;false;false;0;0;0;;; -20887;8;0;false;false;;;;;; -20895;2;1;false;false;127;0;85;;; -20897;1;0;false;false;;;;;; -20898;10;0;false;false;0;0;0;;; -20908;1;0;false;false;;;;;; -20909;2;0;false;false;0;0;0;;; -20911;1;0;false;false;;;;;; -20912;3;0;false;false;0;0;0;;; -20915;1;0;false;false;;;;;; -20916;1;0;false;false;0;0;0;;; -20917;5;0;false;false;;;;;; -20922;5;1;false;false;127;0;85;;; -20927;1;0;false;false;;;;;; -20928;3;1;false;false;127;0;85;;; -20931;1;0;false;false;;;;;; -20932;13;0;false;false;0;0;0;;; -20945;1;0;false;false;;;;;; -20946;1;0;false;false;0;0;0;;; -20947;1;0;false;false;;;;;; -20948;41;0;false;false;0;0;0;;; -20989;5;0;false;false;;;;;; -20994;12;0;false;false;0;0;0;;; -21006;1;0;false;false;;;;;; -21007;6;0;false;false;0;0;0;;; -21013;1;0;false;false;;;;;; -21014;1;0;false;false;0;0;0;;; -21015;1;0;false;false;;;;;; -21016;3;1;false;false;127;0;85;;; -21019;1;0;false;false;;;;;; -21020;30;0;false;false;0;0;0;;; -21050;1;0;false;false;;;;;; -21051;3;0;false;false;0;0;0;;; -21054;1;0;false;false;;;;;; -21055;12;0;false;false;0;0;0;;; -21067;5;0;false;false;;;;;; -21072;13;0;false;false;0;0;0;;; -21085;1;0;false;false;;;;;; -21086;7;0;false;false;0;0;0;;; -21093;5;0;false;false;;;;;; -21098;13;0;false;false;0;0;0;;; -21111;1;0;false;false;;;;;; -21112;28;0;false;false;0;0;0;;; -21140;1;0;false;false;;;;;; -21141;1;0;false;false;0;0;0;;; -21142;1;0;false;false;;;;;; -21143;16;0;false;false;0;0;0;;; -21159;5;0;false;false;;;;;; -21164;7;0;false;false;0;0;0;;; -21171;1;0;false;false;;;;;; -21172;1;0;false;false;0;0;0;;; -21173;1;0;false;false;;;;;; -21174;18;0;false;false;0;0;0;;; -21192;4;0;false;false;;;;;; -21196;1;0;false;false;0;0;0;;; -21197;4;0;false;false;;;;;; -21201;2;1;false;false;127;0;85;;; -21203;1;0;false;false;;;;;; -21204;17;0;false;false;0;0;0;;; -21221;1;0;false;false;;;;;; -21222;1;0;false;false;0;0;0;;; -21223;1;0;false;false;;;;;; -21224;2;0;false;false;0;0;0;;; -21226;1;0;false;false;;;;;; -21227;1;0;false;false;0;0;0;;; -21228;5;0;false;false;;;;;; -21233;3;1;false;false;127;0;85;;; -21236;1;0;false;false;;;;;; -21237;13;0;false;false;0;0;0;;; -21250;5;0;false;false;;;;;; -21255;3;1;false;false;127;0;85;;; -21258;1;0;false;false;;;;;; -21259;5;0;false;false;0;0;0;;; -21264;1;0;false;false;;;;;; -21265;1;0;false;false;0;0;0;;; -21266;1;0;false;false;;;;;; -21267;2;0;false;false;0;0;0;;; -21269;5;0;false;false;;;;;; -21274;3;1;false;false;127;0;85;;; -21277;1;0;false;false;;;;;; -21278;5;0;false;false;0;0;0;;; -21283;1;0;false;false;;;;;; -21284;1;0;false;false;0;0;0;;; -21285;1;0;false;false;;;;;; -21286;2;0;false;false;0;0;0;;; -21288;5;0;false;false;;;;;; -21293;10;0;false;false;0;0;0;;; -21303;1;0;false;false;;;;;; -21304;6;0;false;false;0;0;0;;; -21310;1;0;false;false;;;;;; -21311;1;0;false;false;0;0;0;;; -21312;1;0;false;false;;;;;; -21313;3;1;false;false;127;0;85;;; -21316;1;0;false;false;;;;;; -21317;20;0;false;false;0;0;0;;; -21337;5;0;false;false;;;;;; -21342;24;0;false;false;0;0;0;;; -21366;5;0;false;false;;;;;; -21371;28;0;false;false;0;0;0;;; -21399;5;0;false;false;;;;;; -21404;12;0;false;false;0;0;0;;; -21416;1;0;false;false;;;;;; -21417;1;0;false;false;0;0;0;;; -21418;1;0;false;false;;;;;; -21419;30;0;false;false;0;0;0;;; -21449;5;0;false;false;;;;;; -21454;2;1;false;false;127;0;85;;; -21456;1;0;false;false;;;;;; -21457;8;0;false;false;0;0;0;;; -21465;1;0;false;false;;;;;; -21466;1;0;false;false;0;0;0;;; -21467;6;0;false;false;;;;;; -21473;5;0;false;false;0;0;0;;; -21478;1;0;false;false;;;;;; -21479;1;0;false;false;0;0;0;;; -21480;1;0;false;false;;;;;; -21481;12;0;false;false;0;0;0;;; -21493;1;0;false;false;;;;;; -21494;1;0;false;false;0;0;0;;; -21495;1;0;false;false;;;;;; -21496;24;0;false;false;0;0;0;;; -21520;1;0;false;false;;;;;; -21521;1;0;false;false;0;0;0;;; -21522;1;0;false;false;;;;;; -21523;2;0;false;false;0;0;0;;; -21525;5;0;false;false;;;;;; -21530;1;0;false;false;0;0;0;;; -21531;5;0;false;false;;;;;; -21536;4;1;false;false;127;0;85;;; -21540;1;0;false;false;;;;;; -21541;1;0;false;false;0;0;0;;; -21542;6;0;false;false;;;;;; -21548;5;0;false;false;0;0;0;;; -21553;1;0;false;false;;;;;; -21554;1;0;false;false;0;0;0;;; -21555;1;0;false;false;;;;;; -21556;12;0;false;false;0;0;0;;; -21568;1;0;false;false;;;;;; -21569;1;0;false;false;0;0;0;;; -21570;1;0;false;false;;;;;; -21571;17;0;false;false;0;0;0;;; -21588;1;0;false;false;;;;;; -21589;1;0;false;false;0;0;0;;; -21590;1;0;false;false;;;;;; -21591;25;0;false;false;0;0;0;;; -21616;5;0;false;false;;;;;; -21621;1;0;false;false;0;0;0;;; -21622;5;0;false;false;;;;;; -21627;2;1;false;false;127;0;85;;; -21629;1;0;false;false;;;;;; -21630;10;0;false;false;0;0;0;;; -21640;1;0;false;false;;;;;; -21641;2;0;false;false;0;0;0;;; -21643;1;0;false;false;;;;;; -21644;5;0;false;false;0;0;0;;; -21649;1;0;false;false;;;;;; -21650;1;0;false;false;0;0;0;;; -21651;6;0;false;false;;;;;; -21657;5;0;false;false;0;0;0;;; -21662;1;0;false;false;;;;;; -21663;1;0;false;false;0;0;0;;; -21664;1;0;false;false;;;;;; -21665;13;0;false;false;0;0;0;;; -21678;5;0;false;false;;;;;; -21683;1;0;false;false;0;0;0;;; -21684;5;0;false;false;;;;;; -21689;4;1;false;false;127;0;85;;; -21693;9;0;false;false;;;;;; -21702;2;1;false;false;127;0;85;;; -21704;1;0;false;false;;;;;; -21705;10;0;false;false;0;0;0;;; -21715;1;0;false;false;;;;;; -21716;2;0;false;false;0;0;0;;; -21718;1;0;false;false;;;;;; -21719;7;0;false;false;0;0;0;;; -21726;1;0;false;false;;;;;; -21727;1;0;false;false;0;0;0;;; -21728;6;0;false;false;;;;;; -21734;5;0;false;false;0;0;0;;; -21739;1;0;false;false;;;;;; -21740;1;0;false;false;0;0;0;;; -21741;1;0;false;false;;;;;; -21742;10;0;false;false;0;0;0;;; -21752;1;0;false;false;;;;;; -21753;1;0;false;false;0;0;0;;; -21754;1;0;false;false;;;;;; -21755;13;0;false;false;0;0;0;;; -21768;1;0;false;false;;;;;; -21769;1;0;false;false;0;0;0;;; -21770;1;0;false;false;;;;;; -21771;2;0;false;false;0;0;0;;; -21773;5;0;false;false;;;;;; -21778;1;0;false;false;0;0;0;;; -21779;5;0;false;false;;;;;; -21784;4;1;false;false;127;0;85;;; -21788;6;0;false;false;;;;;; -21794;2;1;false;false;127;0;85;;; -21796;1;0;false;false;;;;;; -21797;10;0;false;false;0;0;0;;; -21807;1;0;false;false;;;;;; -21808;2;0;false;false;0;0;0;;; -21810;1;0;false;false;;;;;; -21811;6;0;false;false;0;0;0;;; -21817;1;0;false;false;;;;;; -21818;1;0;false;false;0;0;0;;; -21819;6;0;false;false;;;;;; -21825;5;0;false;false;0;0;0;;; -21830;1;0;false;false;;;;;; -21831;1;0;false;false;0;0;0;;; -21832;1;0;false;false;;;;;; -21833;12;0;false;false;0;0;0;;; -21845;1;0;false;false;;;;;; -21846;1;0;false;false;0;0;0;;; -21847;1;0;false;false;;;;;; -21848;16;0;false;false;0;0;0;;; -21864;1;0;false;false;;;;;; -21865;1;0;false;false;0;0;0;;; -21866;1;0;false;false;;;;;; -21867;13;0;false;false;0;0;0;;; -21880;5;0;false;false;;;;;; -21885;1;0;false;false;0;0;0;;; -21886;5;0;false;false;;;;;; -21891;15;0;false;false;0;0;0;;; -21906;1;0;false;false;;;;;; -21907;6;0;false;false;0;0;0;;; -21913;1;0;false;false;;;;;; -21914;7;0;false;false;0;0;0;;; -21921;5;0;false;false;;;;;; -21926;17;0;false;false;0;0;0;;; -21943;4;0;false;false;;;;;; -21947;1;0;false;false;0;0;0;;; -21948;3;0;false;false;;;;;; -21951;1;0;false;false;0;0;0;;; -21952;3;0;false;false;;;;;; -21955;3;0;false;false;63;95;191;;; -21958;4;0;false;false;;;;;; -21962;1;0;false;false;63;95;191;;; -21963;1;0;false;false;;;;;; -21964;6;0;false;false;63;95;191;;; -21970;1;0;false;false;;;;;; -21971;1;0;false;false;63;95;191;;; -21972;1;0;false;false;;;;;; -21973;5;0;false;false;63;95;191;;; -21978;1;0;false;false;;;;;; -21979;3;0;false;false;63;95;191;;; -21982;1;0;false;false;;;;;; -21983;3;0;false;false;63;95;191;;; -21986;1;0;false;false;;;;;; -21987;6;0;false;false;63;95;191;;; -21993;1;0;false;false;;;;;; -21994;3;0;false;false;63;95;191;;; -21997;1;0;false;false;;;;;; -21998;5;0;false;false;63;95;191;;; -22003;1;0;false;false;;;;;; -22004;9;0;false;false;63;95;191;;; -22013;1;0;false;false;;;;;; -22014;2;0;false;false;63;95;191;;; -22016;1;0;false;false;;;;;; -22017;3;0;false;false;63;95;191;;; -22020;1;0;false;false;;;;;; -22021;12;0;false;false;63;95;191;;; -22033;4;0;false;false;;;;;; -22037;2;0;false;false;63;95;191;;; -22039;3;0;false;false;;;;;; -22042;6;1;false;false;127;0;85;;; -22048;1;0;false;false;;;;;; -22049;4;1;false;false;127;0;85;;; -22053;1;0;false;false;;;;;; -22054;5;0;false;false;0;0;0;;; -22059;1;0;false;false;;;;;; -22060;1;0;false;false;0;0;0;;; -22061;4;0;false;false;;;;;; -22065;6;0;false;false;0;0;0;;; -22071;1;0;false;false;;;;;; -22072;7;0;false;false;0;0;0;;; -22079;1;0;false;false;;;;;; -22080;1;0;false;false;0;0;0;;; -22081;1;0;false;false;;;;;; -22082;21;0;false;false;0;0;0;;; -22103;8;0;false;false;;;;;; -22111;2;1;false;false;127;0;85;;; -22113;1;0;false;false;;;;;; -22114;8;0;false;false;0;0;0;;; -22122;1;0;false;false;;;;;; -22123;2;0;false;false;0;0;0;;; -22125;1;0;false;false;;;;;; -22126;4;1;false;false;127;0;85;;; -22130;1;0;false;false;0;0;0;;; -22131;1;0;false;false;;;;;; -22132;1;0;false;false;0;0;0;;; -22133;5;0;false;false;;;;;; -22138;7;0;false;false;0;0;0;;; -22145;1;0;false;false;;;;;; -22146;1;0;false;false;0;0;0;;; -22147;1;0;false;false;;;;;; -22148;10;0;false;false;42;0;255;;; -22158;1;0;false;false;0;0;0;;; -22159;4;0;false;false;;;;;; -22163;1;0;false;false;0;0;0;;; -22164;6;0;false;false;;;;;; -22170;2;1;false;false;127;0;85;;; -22172;1;0;false;false;;;;;; -22173;27;0;false;false;0;0;0;;; -22200;1;0;false;false;;;;;; -22201;1;0;false;false;0;0;0;;; -22202;5;0;false;false;;;;;; -22207;22;0;false;false;0;0;0;;; -22229;5;0;false;false;;;;;; -22234;21;0;false;false;0;0;0;;; -22255;5;0;false;false;;;;;; -22260;8;0;false;false;0;0;0;;; -22268;5;0;false;false;;;;;; -22273;10;0;false;false;0;0;0;;; -22283;5;0;false;false;;;;;; -22288;17;0;false;false;0;0;0;;; -22305;7;0;false;false;;;;;; -22312;1;0;false;false;0;0;0;;; -22313;3;0;false;false;;;;;; -22316;1;0;false;false;0;0;0;;; -22317;3;0;false;false;;;;;; -22320;3;0;false;false;63;95;191;;; -22323;4;0;false;false;;;;;; -22327;1;0;false;false;63;95;191;;; -22328;1;0;false;false;;;;;; -22329;5;0;false;false;63;95;191;;; -22334;1;0;false;false;;;;;; -22335;8;0;false;false;63;95;191;;; -22343;1;0;false;false;;;;;; -22344;1;0;false;false;63;95;191;;; -22345;1;0;false;false;;;;;; -22346;3;0;false;false;63;95;191;;; -22349;1;0;false;false;;;;;; -22350;5;0;false;false;63;95;191;;; -22355;4;0;false;false;;;;;; -22359;1;0;false;false;63;95;191;;; -22360;5;0;false;false;;;;;; -22365;1;0;false;false;63;95;191;;; -22366;1;0;false;false;;;;;; -22367;7;1;false;false;127;159;191;;; -22374;4;0;false;false;63;95;191;;; -22378;1;0;false;false;;;;;; -22379;4;0;false;false;63;95;191;;; -22383;1;0;false;false;;;;;; -22384;6;0;false;false;63;95;191;;; -22390;1;0;false;false;;;;;; -22391;2;0;false;false;63;95;191;;; -22393;1;0;false;false;;;;;; -22394;2;0;false;false;63;95;191;;; -22396;1;0;false;false;;;;;; -22397;7;0;false;false;63;95;191;;; -22404;4;0;false;false;;;;;; -22408;2;0;false;false;63;95;191;;; -22410;3;0;false;false;;;;;; -22413;4;1;false;false;127;0;85;;; -22417;1;0;false;false;;;;;; -22418;10;0;false;false;0;0;0;;; -22428;3;1;false;false;127;0;85;;; -22431;1;0;false;false;;;;;; -22432;5;0;false;false;0;0;0;;; -22437;1;0;false;false;;;;;; -22438;1;0;false;false;0;0;0;;; -22439;4;0;false;false;;;;;; -22443;20;0;false;false;0;0;0;;; -22463;4;0;false;false;;;;;; -22467;21;0;false;false;0;0;0;;; -22488;1;0;false;false;;;;;; -22489;4;1;false;false;127;0;85;;; -22493;2;0;false;false;0;0;0;;; -22495;3;0;false;false;;;;;; -22498;1;0;false;false;0;0;0;;; -22499;4;0;false;false;;;;;; -22503;1;0;false;false;0;0;0;;; -22504;3;0;false;false;;;;;; -22507;3;0;false;false;63;95;191;;; -22510;4;0;false;false;;;;;; -22514;1;0;false;false;63;95;191;;; -22515;1;0;false;false;;;;;; -22516;3;0;false;false;63;95;191;;; -22519;1;0;false;false;;;;;; -22520;6;0;false;false;127;127;159;;; -22526;9;0;false;false;63;95;191;;; -22535;7;0;false;false;127;127;159;;; -22542;1;0;false;false;;;;;; -22543;5;0;false;false;63;95;191;;; -22548;1;0;false;false;;;;;; -22549;2;0;false;false;63;95;191;;; -22551;1;0;false;false;;;;;; -22552;4;0;false;false;63;95;191;;; -22556;1;0;false;false;;;;;; -22557;2;0;false;false;63;95;191;;; -22559;1;0;false;false;;;;;; -22560;5;0;false;false;63;95;191;;; -22565;1;0;false;false;;;;;; -22566;6;0;false;false;63;95;191;;; -22572;1;0;false;false;;;;;; -22573;7;0;false;false;63;95;191;;; -22580;1;0;false;false;;;;;; -22581;2;0;false;false;63;95;191;;; -22583;4;0;false;false;;;;;; -22587;1;0;false;false;63;95;191;;; -22588;1;0;false;false;;;;;; -22589;4;0;false;false;63;95;191;;; -22593;1;0;false;false;;;;;; -22594;5;0;false;false;63;95;191;;; -22599;1;0;false;false;;;;;; -22600;3;0;false;false;63;95;191;;; -22603;1;0;false;false;;;;;; -22604;14;0;false;false;63;95;191;;; -22618;1;0;false;false;;;;;; -22619;8;0;false;false;63;95;191;;; -22627;1;0;false;false;;;;;; -22628;4;0;false;false;63;95;191;;; -22632;1;0;false;false;;;;;; -22633;3;0;false;false;63;95;191;;; -22636;1;0;false;false;;;;;; -22637;3;0;false;false;63;95;191;;; -22640;1;0;false;false;;;;;; -22641;13;0;false;false;63;95;191;;; -22654;5;0;false;false;;;;;; -22659;1;0;false;false;63;95;191;;; -22660;1;0;false;false;;;;;; -22661;7;0;false;false;63;95;191;;; -22668;1;0;false;false;;;;;; -22669;4;0;false;false;63;95;191;;; -22673;4;0;false;false;;;;;; -22677;1;0;false;false;63;95;191;;; -22678;1;0;false;false;;;;;; -22679;3;0;false;false;127;127;159;;; -22682;4;0;false;false;;;;;; -22686;1;0;false;false;63;95;191;;; -22687;1;0;false;false;;;;;; -22688;10;0;false;false;63;95;191;;; -22698;1;0;false;false;;;;;; -22699;2;0;false;false;63;95;191;;; -22701;1;0;false;false;;;;;; -22702;10;0;false;false;63;95;191;;; -22712;1;0;false;false;;;;;; -22713;2;0;false;false;63;95;191;;; -22715;1;0;false;false;;;;;; -22716;6;0;false;false;63;95;191;;; -22722;1;0;false;false;;;;;; -22723;1;0;false;false;63;95;191;;; -22724;1;0;false;false;;;;;; -22725;5;0;false;false;63;95;191;;; -22730;1;0;false;false;;;;;; -22731;3;0;false;false;63;95;191;;; -22734;1;0;false;false;;;;;; -22735;6;0;false;false;63;95;191;;; -22741;1;0;false;false;;;;;; -22742;4;0;false;false;63;95;191;;; -22746;1;0;false;false;;;;;; -22747;5;0;false;false;63;95;191;;; -22752;5;0;false;false;;;;;; -22757;1;0;false;false;63;95;191;;; -22758;1;0;false;false;;;;;; -22759;7;0;false;false;63;95;191;;; -22766;1;0;false;false;;;;;; -22767;3;0;false;false;63;95;191;;; -22770;1;0;false;false;;;;;; -22771;4;0;false;false;63;95;191;;; -22775;1;0;false;false;;;;;; -22776;7;0;false;false;63;95;191;;; -22783;5;0;false;false;;;;;; -22788;1;0;false;false;63;95;191;;; -22789;1;0;false;false;;;;;; -22790;4;0;false;false;127;127;159;;; -22794;4;0;false;false;;;;;; -22798;1;0;false;false;63;95;191;;; -22799;1;0;false;false;;;;;; -22800;3;0;false;false;127;127;159;;; -22803;4;0;false;false;;;;;; -22807;1;0;false;false;63;95;191;;; -22808;1;0;false;false;;;;;; -22809;5;0;false;false;63;95;191;;; -22814;1;0;false;false;;;;;; -22815;3;0;false;false;63;95;191;;; -22818;1;0;false;false;;;;;; -22819;7;0;false;false;63;95;191;;; -22826;1;0;false;false;;;;;; -22827;5;0;false;false;63;95;191;;; -22832;1;0;false;false;;;;;; -22833;3;0;false;false;63;95;191;;; -22836;1;0;false;false;;;;;; -22837;4;0;false;false;63;95;191;;; -22841;1;0;false;false;;;;;; -22842;6;0;false;false;63;95;191;;; -22848;1;0;false;false;;;;;; -22849;3;0;false;false;63;95;191;;; -22852;1;0;false;false;;;;;; -22853;2;0;false;false;63;95;191;;; -22855;1;0;false;false;;;;;; -22856;8;0;false;false;63;95;191;;; -22864;1;0;false;false;;;;;; -22865;5;0;false;false;63;95;191;;; -22870;1;0;false;false;;;;;; -22871;4;0;false;false;63;95;191;;; -22875;1;0;false;false;;;;;; -22876;2;0;false;false;63;95;191;;; -22878;4;0;false;false;;;;;; -22882;1;0;false;false;63;95;191;;; -22883;1;0;false;false;;;;;; -22884;9;0;false;false;63;95;191;;; -22893;1;0;false;false;;;;;; -22894;5;0;false;false;63;95;191;;; -22899;1;0;false;false;;;;;; -22900;3;0;false;false;63;95;191;;; -22903;1;0;false;false;;;;;; -22904;6;0;false;false;63;95;191;;; -22910;1;0;false;false;;;;;; -22911;7;0;false;false;63;95;191;;; -22918;1;0;false;false;;;;;; -22919;4;0;false;false;63;95;191;;; -22923;1;0;false;false;;;;;; -22924;3;0;false;false;63;95;191;;; -22927;1;0;false;false;;;;;; -22928;18;0;false;false;63;95;191;;; -22946;1;0;false;false;;;;;; -22947;2;0;false;false;63;95;191;;; -22949;5;0;false;false;;;;;; -22954;1;0;false;false;63;95;191;;; -22955;1;0;false;false;;;;;; -22956;4;0;false;false;63;95;191;;; -22960;1;0;false;false;;;;;; -22961;2;0;false;false;63;95;191;;; -22963;1;0;false;false;;;;;; -22964;5;0;false;false;63;95;191;;; -22969;1;0;false;false;;;;;; -22970;3;0;false;false;63;95;191;;; -22973;1;0;false;false;;;;;; -22974;8;0;false;false;63;95;191;;; -22982;1;0;false;false;;;;;; -22983;2;0;false;false;63;95;191;;; -22985;1;0;false;false;;;;;; -22986;3;0;false;false;63;95;191;;; -22989;1;0;false;false;;;;;; -22990;7;0;false;false;63;95;191;;; -22997;1;0;false;false;;;;;; -22998;3;0;false;false;63;95;191;;; -23001;1;0;false;false;;;;;; -23002;6;0;false;false;63;95;191;;; -23008;1;0;false;false;;;;;; -23009;3;0;false;false;63;95;191;;; -23012;1;0;false;false;;;;;; -23013;7;0;false;false;63;95;191;;; -23020;1;0;false;false;;;;;; -23021;2;0;false;false;63;95;191;;; -23023;4;0;false;false;;;;;; -23027;1;0;false;false;63;95;191;;; -23028;1;0;false;false;;;;;; -23029;3;0;false;false;63;95;191;;; -23032;1;0;false;false;;;;;; -23033;3;0;false;false;63;95;191;;; -23036;1;0;false;false;;;;;; -23037;6;0;false;false;63;95;191;;; -23043;1;0;false;false;;;;;; -23044;4;0;false;false;63;95;191;;; -23048;1;0;false;false;;;;;; -23049;4;0;false;false;63;95;191;;; -23053;1;0;false;false;;;;;; -23054;3;0;false;false;63;95;191;;; -23057;1;0;false;false;;;;;; -23058;8;0;false;false;63;95;191;;; -23066;1;0;false;false;;;;;; -23067;2;0;false;false;63;95;191;;; -23069;1;0;false;false;;;;;; -23070;3;0;false;false;63;95;191;;; -23073;1;0;false;false;;;;;; -23074;7;0;false;false;63;95;191;;; -23081;1;0;false;false;;;;;; -23082;2;0;false;false;63;95;191;;; -23084;1;0;false;false;;;;;; -23085;9;0;false;false;63;95;191;;; -23094;1;0;false;false;;;;;; -23095;3;0;false;false;63;95;191;;; -23098;5;0;false;false;;;;;; -23103;1;0;false;false;63;95;191;;; -23104;1;0;false;false;;;;;; -23105;6;0;false;false;63;95;191;;; -23111;1;0;false;false;;;;;; -23112;4;0;false;false;63;95;191;;; -23116;1;0;false;false;;;;;; -23117;4;0;false;false;63;95;191;;; -23121;1;0;false;false;;;;;; -23122;3;0;false;false;63;95;191;;; -23125;1;0;false;false;;;;;; -23126;4;0;false;false;63;95;191;;; -23130;1;0;false;false;;;;;; -23131;2;0;false;false;63;95;191;;; -23133;1;0;false;false;;;;;; -23134;4;0;false;false;63;95;191;;; -23138;1;0;false;false;;;;;; -23139;3;0;false;false;63;95;191;;; -23142;1;0;false;false;;;;;; -23143;3;0;false;false;63;95;191;;; -23146;1;0;false;false;;;;;; -23147;5;0;false;false;63;95;191;;; -23152;1;0;false;false;;;;;; -23153;5;0;false;false;63;95;191;;; -23158;4;0;false;false;;;;;; -23162;1;0;false;false;63;95;191;;; -23163;1;0;false;false;;;;;; -23164;4;0;false;false;127;127;159;;; -23168;4;0;false;false;;;;;; -23172;2;0;false;false;63;95;191;;; -23174;3;0;false;false;;;;;; -23177;5;1;false;false;127;0;85;;; -23182;1;0;false;false;;;;;; -23183;9;0;false;false;0;0;0;;; -23192;1;0;false;false;;;;;; -23193;7;1;false;false;127;0;85;;; -23200;1;0;false;false;;;;;; -23201;10;0;false;false;0;0;0;;; -23211;1;0;false;false;;;;;; -23212;1;0;false;false;0;0;0;;; -23213;4;0;false;false;;;;;; -23217;6;1;false;false;127;0;85;;; -23223;1;0;false;false;;;;;; -23224;5;1;false;false;127;0;85;;; -23229;1;0;false;false;;;;;; -23230;3;1;false;false;127;0;85;;; -23233;1;0;false;false;;;;;; -23234;18;0;false;false;0;0;0;;; -23252;1;0;false;false;;;;;; -23253;1;0;false;false;0;0;0;;; -23254;1;0;false;false;;;;;; -23255;2;0;false;false;0;0;0;;; -23257;4;0;false;false;;;;;; -23261;6;1;false;false;127;0;85;;; -23267;1;0;false;false;;;;;; -23268;5;1;false;false;127;0;85;;; -23273;1;0;false;false;;;;;; -23274;3;1;false;false;127;0;85;;; -23277;1;0;false;false;;;;;; -23278;18;0;false;false;0;0;0;;; -23296;1;0;false;false;;;;;; -23297;1;0;false;false;0;0;0;;; -23298;1;0;false;false;;;;;; -23299;2;0;false;false;0;0;0;;; -23301;4;0;false;false;;;;;; -23305;6;0;false;false;0;0;0;;; -23311;1;0;false;false;;;;;; -23312;10;0;false;false;0;0;0;;; -23322;1;0;false;false;;;;;; -23323;1;0;false;false;0;0;0;;; -23324;1;0;false;false;;;;;; -23325;3;1;false;false;127;0;85;;; -23328;1;0;false;false;;;;;; -23329;9;0;false;false;0;0;0;;; -23338;4;0;false;false;;;;;; -23342;7;1;false;false;127;0;85;;; -23349;1;0;false;false;;;;;; -23350;13;0;false;false;0;0;0;;; -23363;7;0;false;false;;;;;; -23370;3;0;false;false;63;95;191;;; -23373;4;0;false;false;;;;;; -23377;1;0;false;false;63;95;191;;; -23378;1;0;false;false;;;;;; -23379;7;0;false;false;63;95;191;;; -23386;1;0;false;false;;;;;; -23387;1;0;false;false;63;95;191;;; -23388;1;0;false;false;;;;;; -23389;3;0;false;false;63;95;191;;; -23392;1;0;false;false;;;;;; -23393;6;0;false;false;63;95;191;;; -23399;1;0;false;false;;;;;; -23400;4;0;false;false;63;95;191;;; -23404;1;0;false;false;;;;;; -23405;6;0;false;false;63;95;191;;; -23411;1;0;false;false;;;;;; -23412;7;0;false;false;63;95;191;;; -23419;1;0;false;false;;;;;; -23420;8;0;false;false;63;95;191;;; -23428;1;0;false;false;;;;;; -23429;2;0;false;false;63;95;191;;; -23431;1;0;false;false;;;;;; -23432;6;0;false;false;63;95;191;;; -23438;1;0;false;false;;;;;; -23439;7;0;false;false;63;95;191;;; -23446;4;0;false;false;;;;;; -23450;1;0;false;false;63;95;191;;; -23451;1;0;false;false;;;;;; -23452;2;0;false;false;63;95;191;;; -23454;1;0;false;false;;;;;; -23455;3;0;false;false;63;95;191;;; -23458;1;0;false;false;;;;;; -23459;9;0;false;false;63;95;191;;; -23468;2;0;false;false;;;;;; -23470;6;0;false;false;127;127;159;;; -23476;5;0;false;false;63;95;191;;; -23481;7;0;false;false;127;127;159;;; -23488;1;0;false;false;;;;;; -23489;3;0;false;false;63;95;191;;; -23492;1;0;false;false;;;;;; -23493;6;0;false;false;127;127;159;;; -23499;6;0;false;false;63;95;191;;; -23505;7;0;false;false;127;127;159;;; -23512;3;0;false;false;63;95;191;;; -23515;1;0;false;false;;;;;; -23516;2;0;false;false;63;95;191;;; -23518;1;0;false;false;;;;;; -23519;3;0;false;false;63;95;191;;; -23522;1;0;false;false;;;;;; -23523;2;0;false;false;63;95;191;;; -23525;1;0;false;false;;;;;; -23526;7;0;false;false;63;95;191;;; -23533;1;0;false;false;;;;;; -23534;7;0;false;false;63;95;191;;; -23541;5;0;false;false;;;;;; -23546;1;0;false;false;63;95;191;;; -23547;1;0;false;false;;;;;; -23548;6;0;false;false;63;95;191;;; -23554;4;0;false;false;;;;;; -23558;1;0;false;false;63;95;191;;; -23559;1;0;false;false;;;;;; -23560;3;0;false;false;127;127;159;;; -23563;4;0;false;false;;;;;; -23567;1;0;false;false;63;95;191;;; -23568;4;0;false;false;;;;;; -23572;1;0;false;false;63;95;191;;; -23573;1;0;false;false;;;;;; -23574;7;1;false;false;127;159;191;;; -23581;5;0;false;false;63;95;191;;; -23586;1;0;false;false;;;;;; -23587;5;0;false;false;63;95;191;;; -23592;1;0;false;false;;;;;; -23593;6;0;false;false;63;95;191;;; -23599;1;0;false;false;;;;;; -23600;2;0;false;false;63;95;191;;; -23602;1;0;false;false;;;;;; -23603;7;0;false;false;63;95;191;;; -23610;1;0;false;false;;;;;; -23611;2;0;false;false;63;95;191;;; -23613;1;0;false;false;;;;;; -23614;6;0;false;false;63;95;191;;; -23620;1;0;false;false;;;;;; -23621;1;0;false;false;63;95;191;;; -23622;1;0;false;false;;;;;; -23623;5;0;false;false;63;95;191;;; -23628;1;0;false;false;;;;;; -23629;4;0;false;false;63;95;191;;; -23633;5;0;false;false;;;;;; -23638;1;0;false;false;63;95;191;;; -23639;2;0;false;false;;;;;; -23641;9;0;false;false;63;95;191;;; -23650;1;0;false;false;;;;;; -23651;2;0;false;false;63;95;191;;; -23653;1;0;false;false;;;;;; -23654;8;0;false;false;63;95;191;;; -23662;4;0;false;false;;;;;; -23666;1;0;false;false;63;95;191;;; -23667;1;0;false;false;;;;;; -23668;7;1;false;false;127;159;191;;; -23675;6;0;false;false;63;95;191;;; -23681;1;0;false;false;;;;;; -23682;6;0;false;false;63;95;191;;; -23688;1;0;false;false;;;;;; -23689;2;0;false;false;63;95;191;;; -23691;1;0;false;false;;;;;; -23692;7;0;false;false;63;95;191;;; -23699;1;0;false;false;;;;;; -23700;2;0;false;false;63;95;191;;; -23702;1;0;false;false;;;;;; -23703;5;0;false;false;63;95;191;;; -23708;4;0;false;false;;;;;; -23712;2;0;false;false;63;95;191;;; -23714;3;0;false;false;;;;;; -23717;6;1;false;false;127;0;85;;; -23723;1;0;false;false;;;;;; -23724;10;0;false;false;0;0;0;;; -23734;3;1;false;false;127;0;85;;; -23737;1;0;false;false;;;;;; -23738;6;0;false;false;0;0;0;;; -23744;1;0;false;false;;;;;; -23745;3;1;false;false;127;0;85;;; -23748;1;0;false;false;;;;;; -23749;7;0;false;false;0;0;0;;; -23756;1;0;false;false;;;;;; -23757;1;0;false;false;0;0;0;;; -23758;4;0;false;false;;;;;; -23762;5;1;false;false;127;0;85;;; -23767;7;0;false;false;0;0;0;;; -23774;1;0;false;false;;;;;; -23775;8;0;false;false;0;0;0;;; -23783;4;0;false;false;;;;;; -23787;39;0;false;false;0;0;0;;; -23826;4;0;false;false;;;;;; -23830;39;0;false;false;0;0;0;;; -23869;6;0;false;false;;;;;; -23875;13;0;false;false;0;0;0;;; -23888;3;0;false;false;;;;;; -23891;1;0;false;false;0;0;0;;; -23892;3;0;false;false;;;;;; -23895;3;0;false;false;63;95;191;;; -23898;4;0;false;false;;;;;; -23902;1;0;false;false;63;95;191;;; -23903;1;0;false;false;;;;;; -23904;6;0;false;false;63;95;191;;; -23910;1;0;false;false;;;;;; -23911;3;0;false;false;63;95;191;;; -23914;1;0;false;false;;;;;; -23915;3;0;false;false;63;95;191;;; -23918;1;0;false;false;;;;;; -23919;7;0;false;false;63;95;191;;; -23926;1;0;false;false;;;;;; -23927;4;0;false;false;63;95;191;;; -23931;1;0;false;false;;;;;; -23932;6;0;false;false;63;95;191;;; -23938;1;0;false;false;;;;;; -23939;2;0;false;false;63;95;191;;; -23941;1;0;false;false;;;;;; -23942;4;0;false;false;63;95;191;;; -23946;1;0;false;false;;;;;; -23947;7;0;false;false;63;95;191;;; -23954;1;0;false;false;;;;;; -23955;3;0;false;false;63;95;191;;; -23958;1;0;false;false;;;;;; -23959;2;0;false;false;63;95;191;;; -23961;1;0;false;false;;;;;; -23962;8;0;false;false;63;95;191;;; -23970;4;0;false;false;;;;;; -23974;1;0;false;false;63;95;191;;; -23975;1;0;false;false;;;;;; -23976;3;0;false;false;127;127;159;;; -23979;5;0;false;false;63;95;191;;; -23984;4;0;false;false;127;127;159;;; -23988;2;0;false;false;;;;;; -23990;6;0;false;false;127;127;159;;; -23996;10;0;false;false;63;95;191;;; -24006;7;0;false;false;127;127;159;;; -24013;1;0;false;false;;;;;; -24014;4;0;false;false;63;95;191;;; -24018;1;0;false;false;;;;;; -24019;3;0;false;false;63;95;191;;; -24022;1;0;false;false;;;;;; -24023;6;0;false;false;63;95;191;;; -24029;1;0;false;false;;;;;; -24030;1;0;false;false;63;95;191;;; -24031;1;0;false;false;;;;;; -24032;5;0;false;false;63;95;191;;; -24037;1;0;false;false;;;;;; -24038;3;0;false;false;63;95;191;;; -24041;1;0;false;false;;;;;; -24042;6;0;false;false;63;95;191;;; -24048;1;0;false;false;;;;;; -24049;5;0;false;false;63;95;191;;; -24054;5;0;false;false;;;;;; -24059;1;0;false;false;63;95;191;;; -24060;1;0;false;false;;;;;; -24061;6;0;false;false;127;127;159;;; -24067;7;0;false;false;63;95;191;;; -24074;7;0;false;false;127;127;159;;; -24081;1;0;false;false;;;;;; -24082;3;0;false;false;63;95;191;;; -24085;1;0;false;false;;;;;; -24086;4;0;false;false;63;95;191;;; -24090;1;0;false;false;;;;;; -24091;7;0;false;false;63;95;191;;; -24098;4;0;false;false;;;;;; -24102;2;0;false;false;63;95;191;;; -24104;3;0;false;false;;;;;; -24107;6;1;false;false;127;0;85;;; -24113;1;0;false;false;;;;;; -24114;4;1;false;false;127;0;85;;; -24118;1;0;false;false;;;;;; -24119;7;0;false;false;0;0;0;;; -24126;1;0;false;false;;;;;; -24127;1;0;false;false;0;0;0;;; -24128;4;0;false;false;;;;;; -24132;2;1;false;false;127;0;85;;; -24134;1;0;false;false;;;;;; -24135;13;0;false;false;0;0;0;;; -24148;1;0;false;false;;;;;; -24149;1;0;false;false;0;0;0;;; -24150;5;0;false;false;;;;;; -24155;14;0;false;false;0;0;0;;; -24169;5;0;false;false;;;;;; -24174;6;0;false;false;0;0;0;;; -24180;8;0;false;false;42;0;255;;; -24188;2;0;false;false;0;0;0;;; -24190;5;0;false;false;;;;;; -24195;5;1;false;false;127;0;85;;; -24200;9;0;false;false;0;0;0;;; -24209;4;0;false;false;;;;;; -24213;1;0;false;false;0;0;0;;; -24214;3;0;false;false;;;;;; -24217;1;0;false;false;0;0;0;;; -24218;4;0;false;false;;;;;; -24222;3;0;false;false;63;95;191;;; -24225;4;0;false;false;;;;;; -24229;1;0;false;false;63;95;191;;; -24230;1;0;false;false;;;;;; -24231;7;0;false;false;63;95;191;;; -24238;1;0;false;false;;;;;; -24239;3;0;false;false;63;95;191;;; -24242;1;0;false;false;;;;;; -24243;5;0;false;false;63;95;191;;; -24248;1;0;false;false;;;;;; -24249;2;0;false;false;63;95;191;;; -24251;1;0;false;false;;;;;; -24252;3;0;false;false;63;95;191;;; -24255;1;0;false;false;;;;;; -24256;9;0;false;false;63;95;191;;; -24265;1;0;false;false;;;;;; -24266;5;0;false;false;63;95;191;;; -24271;1;0;false;false;;;;;; -24272;2;0;false;false;63;95;191;;; -24274;1;0;false;false;;;;;; -24275;3;0;false;false;63;95;191;;; -24278;1;0;false;false;;;;;; -24279;3;0;false;false;63;95;191;;; -24282;1;0;false;false;;;;;; -24283;5;0;false;false;63;95;191;;; -24288;1;0;false;false;;;;;; -24289;6;0;false;false;63;95;191;;; -24295;4;0;false;false;;;;;; -24299;1;0;false;false;63;95;191;;; -24300;1;0;false;false;;;;;; -24301;3;0;false;false;127;127;159;;; -24304;4;0;false;false;;;;;; -24308;1;0;false;false;63;95;191;;; -24309;4;0;false;false;;;;;; -24313;1;0;false;false;63;95;191;;; -24314;1;0;false;false;;;;;; -24315;7;1;false;false;127;159;191;;; -24322;5;0;false;false;63;95;191;;; -24327;1;0;false;false;;;;;; -24328;3;0;false;false;63;95;191;;; -24331;1;0;false;false;;;;;; -24332;5;0;false;false;63;95;191;;; -24337;4;0;false;false;;;;;; -24341;1;0;false;false;63;95;191;;; -24342;1;0;false;false;;;;;; -24343;7;1;false;false;127;159;191;;; -24350;12;0;false;false;63;95;191;;; -24362;1;0;false;false;;;;;; -24363;6;0;false;false;63;95;191;;; -24369;1;0;false;false;;;;;; -24370;5;0;false;false;63;95;191;;; -24375;1;0;false;false;;;;;; -24376;2;0;false;false;63;95;191;;; -24378;1;0;false;false;;;;;; -24379;5;0;false;false;63;95;191;;; -24384;1;0;false;false;;;;;; -24385;2;0;false;false;63;95;191;;; -24387;1;0;false;false;;;;;; -24388;4;0;false;false;63;95;191;;; -24392;4;0;false;false;;;;;; -24396;1;0;false;false;63;95;191;;; -24397;1;0;false;false;;;;;; -24398;8;1;false;false;127;159;191;;; -24406;3;0;false;false;63;95;191;;; -24409;1;0;false;false;;;;;; -24410;5;0;false;false;63;95;191;;; -24415;1;0;false;false;;;;;; -24416;2;0;false;false;63;95;191;;; -24418;1;0;false;false;;;;;; -24419;3;0;false;false;63;95;191;;; -24422;1;0;false;false;;;;;; -24423;9;0;false;false;63;95;191;;; -24432;1;0;false;false;;;;;; -24433;5;0;false;false;63;95;191;;; -24438;1;0;false;false;;;;;; -24439;2;0;false;false;63;95;191;;; -24441;1;0;false;false;;;;;; -24442;3;0;false;false;63;95;191;;; -24445;1;0;false;false;;;;;; -24446;3;0;false;false;63;95;191;;; -24449;1;0;false;false;;;;;; -24450;5;0;false;false;63;95;191;;; -24455;1;0;false;false;;;;;; -24456;5;0;false;false;63;95;191;;; -24461;4;0;false;false;;;;;; -24465;1;0;false;false;63;95;191;;; -24466;2;0;false;false;;;;;; -24468;2;0;false;false;63;95;191;;; -24470;1;0;false;false;;;;;; -24471;14;0;false;false;63;95;191;;; -24485;1;0;false;false;;;;;; -24486;2;0;false;false;63;95;191;;; -24488;1;0;false;false;;;;;; -24489;7;0;false;false;63;95;191;;; -24496;1;0;false;false;;;;;; -24497;2;0;false;false;63;95;191;;; -24499;1;0;false;false;;;;;; -24500;5;0;false;false;63;95;191;;; -24505;4;0;false;false;;;;;; -24509;2;0;false;false;63;95;191;;; -24511;3;0;false;false;;;;;; -24514;3;1;false;false;127;0;85;;; -24517;1;0;false;false;;;;;; -24518;19;0;false;false;0;0;0;;; -24537;1;0;false;false;;;;;; -24538;6;0;false;false;0;0;0;;; -24544;1;0;false;false;;;;;; -24545;3;1;false;false;127;0;85;;; -24548;1;0;false;false;;;;;; -24549;13;0;false;false;0;0;0;;; -24562;1;0;false;false;;;;;; -24563;1;0;false;false;0;0;0;;; -24564;4;0;false;false;;;;;; -24568;3;1;false;false;127;0;85;;; -24571;1;0;false;false;;;;;; -24572;6;0;false;false;0;0;0;;; -24578;8;0;false;false;;;;;; -24586;2;1;false;false;127;0;85;;; -24588;1;0;false;false;;;;;; -24589;6;0;false;false;0;0;0;;; -24595;1;0;false;false;;;;;; -24596;2;0;false;false;0;0;0;;; -24598;1;0;false;false;;;;;; -24599;4;1;false;false;127;0;85;;; -24603;1;0;false;false;0;0;0;;; -24604;1;0;false;false;;;;;; -24605;1;0;false;false;0;0;0;;; -24606;5;0;false;false;;;;;; -24611;5;0;false;false;0;0;0;;; -24616;1;0;false;false;;;;;; -24617;1;0;false;false;0;0;0;;; -24618;1;0;false;false;;;;;; -24619;13;0;false;false;0;0;0;;; -24632;4;0;false;false;;;;;; -24636;1;0;false;false;0;0;0;;; -24637;4;0;false;false;;;;;; -24641;4;1;false;false;127;0;85;;; -24645;1;0;false;false;;;;;; -24646;1;0;false;false;0;0;0;;; -24647;7;0;false;false;;;;;; -24654;5;0;false;false;0;0;0;;; -24659;1;0;false;false;;;;;; -24660;1;0;false;false;0;0;0;;; -24661;1;0;false;false;;;;;; -24662;26;0;false;false;0;0;0;;; -24688;5;0;false;false;;;;;; -24693;2;1;false;false;127;0;85;;; -24695;1;0;false;false;;;;;; -24696;6;0;false;false;0;0;0;;; -24702;1;0;false;false;;;;;; -24703;2;0;false;false;0;0;0;;; -24705;1;0;false;false;;;;;; -24706;3;0;false;false;0;0;0;;; -24709;1;0;false;false;;;;;; -24710;1;0;false;false;0;0;0;;; -24711;6;0;false;false;;;;;; -24717;5;0;false;false;0;0;0;;; -24722;1;0;false;false;;;;;; -24723;1;0;false;false;0;0;0;;; -24724;1;0;false;false;;;;;; -24725;18;0;false;false;0;0;0;;; -24743;6;0;false;false;;;;;; -24749;29;0;false;false;0;0;0;;; -24778;5;0;false;false;;;;;; -24783;1;0;false;false;0;0;0;;; -24784;4;0;false;false;;;;;; -24788;1;0;false;false;0;0;0;;; -24789;4;0;false;false;;;;;; -24793;6;1;false;false;127;0;85;;; -24799;1;0;false;false;;;;;; -24800;6;0;false;false;0;0;0;;; -24806;3;0;false;false;;;;;; -24809;1;0;false;false;0;0;0;;; -24810;3;0;false;false;;;;;; -24813;3;0;false;false;63;95;191;;; -24816;4;0;false;false;;;;;; -24820;1;0;false;false;63;95;191;;; -24821;1;0;false;false;;;;;; -24822;10;0;false;false;63;95;191;;; -24832;1;0;false;false;;;;;; -24833;2;0;false;false;63;95;191;;; -24835;1;0;false;false;;;;;; -24836;7;0;false;false;63;95;191;;; -24843;1;0;false;false;;;;;; -24844;3;0;false;false;63;95;191;;; -24847;1;0;false;false;;;;;; -24848;6;0;false;false;63;95;191;;; -24854;1;0;false;false;;;;;; -24855;2;0;false;false;63;95;191;;; -24857;1;0;false;false;;;;;; -24858;8;0;false;false;63;95;191;;; -24866;4;0;false;false;;;;;; -24870;1;0;false;false;63;95;191;;; -24871;1;0;false;false;;;;;; -24872;5;0;false;false;63;95;191;;; -24877;1;0;false;false;;;;;; -24878;5;0;false;false;63;95;191;;; -24883;1;0;false;false;;;;;; -24884;7;0;false;false;63;95;191;;; -24891;1;0;false;false;;;;;; -24892;3;0;false;false;63;95;191;;; -24895;1;0;false;false;;;;;; -24896;2;0;false;false;63;95;191;;; -24898;1;0;false;false;;;;;; -24899;7;0;false;false;63;95;191;;; -24906;1;0;false;false;;;;;; -24907;8;0;false;false;63;95;191;;; -24915;1;0;false;false;;;;;; -24916;2;0;false;false;63;95;191;;; -24918;1;0;false;false;;;;;; -24919;3;0;false;false;63;95;191;;; -24922;4;0;false;false;;;;;; -24926;2;0;false;false;63;95;191;;; -24928;3;0;false;false;;;;;; -24931;4;1;false;false;127;0;85;;; -24935;1;0;false;false;;;;;; -24936;12;0;false;false;0;0;0;;; -24948;1;0;false;false;;;;;; -24949;1;0;false;false;0;0;0;;; -24950;4;0;false;false;;;;;; -24954;5;1;false;false;127;0;85;;; -24959;1;0;false;false;;;;;; -24960;6;0;false;false;0;0;0;;; -24966;1;0;false;false;;;;;; -24967;5;0;false;false;0;0;0;;; -24972;1;0;false;false;;;;;; -24973;1;0;false;false;0;0;0;;; -24974;1;0;false;false;;;;;; -24975;12;0;false;false;42;0;255;;; -24987;1;0;false;false;0;0;0;;; -24988;4;0;false;false;;;;;; -24992;5;1;false;false;127;0;85;;; -24997;1;0;false;false;;;;;; -24998;6;0;false;false;0;0;0;;; -25004;1;0;false;false;;;;;; -25005;5;0;false;false;0;0;0;;; -25010;1;0;false;false;;;;;; -25011;1;0;false;false;0;0;0;;; -25012;1;0;false;false;;;;;; -25013;12;0;false;false;42;0;255;;; -25025;1;0;false;false;0;0;0;;; -25026;4;0;false;false;;;;;; -25030;5;1;false;false;127;0;85;;; -25035;1;0;false;false;;;;;; -25036;6;0;false;false;0;0;0;;; -25042;1;0;false;false;;;;;; -25043;5;0;false;false;0;0;0;;; -25048;1;0;false;false;;;;;; -25049;1;0;false;false;0;0;0;;; -25050;1;0;false;false;;;;;; -25051;12;0;false;false;42;0;255;;; -25063;1;0;false;false;0;0;0;;; -25064;6;0;false;false;;;;;; -25070;5;1;false;false;127;0;85;;; -25075;1;0;false;false;;;;;; -25076;6;0;false;false;0;0;0;;; -25082;1;0;false;false;;;;;; -25083;5;0;false;false;0;0;0;;; -25088;1;0;false;false;;;;;; -25089;1;0;false;false;0;0;0;;; -25090;1;0;false;false;;;;;; -25091;12;0;false;false;42;0;255;;; -25103;1;0;false;false;0;0;0;;; -25104;4;0;false;false;;;;;; -25108;6;0;false;false;0;0;0;;; -25114;1;0;false;false;;;;;; -25115;6;0;false;false;0;0;0;;; -25121;1;0;false;false;;;;;; -25122;1;0;false;false;0;0;0;;; -25123;1;0;false;false;;;;;; -25124;19;0;false;false;0;0;0;;; -25143;9;0;false;false;42;0;255;;; -25152;16;0;false;false;0;0;0;;; -25168;4;0;false;false;;;;;; -25172;6;0;false;false;0;0;0;;; -25178;1;0;false;false;;;;;; -25179;9;0;false;false;0;0;0;;; -25188;1;0;false;false;;;;;; -25189;1;0;false;false;0;0;0;;; -25190;1;0;false;false;;;;;; -25191;19;0;false;false;0;0;0;;; -25210;12;0;false;false;42;0;255;;; -25222;2;0;false;false;0;0;0;;; -25224;4;0;false;false;;;;;; -25228;3;1;false;false;127;0;85;;; -25231;1;0;false;false;;;;;; -25232;12;0;false;false;0;0;0;;; -25244;1;0;false;false;;;;;; -25245;1;0;false;false;0;0;0;;; -25246;1;0;false;false;;;;;; -25247;2;0;false;false;0;0;0;;; -25249;8;0;false;false;;;;;; -25257;2;1;false;false;127;0;85;;; -25259;1;0;false;false;;;;;; -25260;25;0;false;false;0;0;0;;; -25285;1;0;false;false;;;;;; -25286;2;0;false;false;0;0;0;;; -25288;1;0;false;false;;;;;; -25289;9;0;false;false;0;0;0;;; -25298;1;0;false;false;;;;;; -25299;2;0;false;false;0;0;0;;; -25301;1;0;false;false;;;;;; -25302;4;1;false;false;127;0;85;;; -25306;1;0;false;false;0;0;0;;; -25307;1;0;false;false;;;;;; -25308;1;0;false;false;0;0;0;;; -25309;5;0;false;false;;;;;; -25314;3;1;false;false;127;0;85;;; -25317;1;0;false;false;;;;;; -25318;10;0;false;false;0;0;0;;; -25328;1;0;false;false;;;;;; -25329;1;0;false;false;0;0;0;;; -25330;1;0;false;false;;;;;; -25331;18;0;false;false;0;0;0;;; -25349;3;0;false;false;42;0;255;;; -25352;2;0;false;false;0;0;0;;; -25354;5;0;false;false;;;;;; -25359;2;1;false;false;127;0;85;;; -25361;1;0;false;false;;;;;; -25362;11;0;false;false;0;0;0;;; -25373;1;0;false;false;;;;;; -25374;2;0;false;false;0;0;0;;; -25376;1;0;false;false;;;;;; -25377;3;0;false;false;0;0;0;;; -25380;1;0;false;false;;;;;; -25381;1;0;false;false;0;0;0;;; -25382;6;0;false;false;;;;;; -25388;9;0;false;false;0;0;0;;; -25397;1;0;false;false;;;;;; -25398;1;0;false;false;0;0;0;;; -25399;1;0;false;false;;;;;; -25400;22;0;false;false;0;0;0;;; -25422;1;0;false;false;;;;;; -25423;12;0;false;false;0;0;0;;; -25435;6;0;false;false;;;;;; -25441;3;1;false;false;127;0;85;;; -25444;1;0;false;false;;;;;; -25445;1;0;false;false;0;0;0;;; -25446;7;0;false;false;;;;;; -25453;12;0;false;false;0;0;0;;; -25465;1;0;false;false;;;;;; -25466;1;0;false;false;0;0;0;;; -25467;1;0;false;false;;;;;; -25468;28;0;false;false;0;0;0;;; -25496;6;0;false;false;;;;;; -25502;1;0;false;false;0;0;0;;; -25503;6;0;false;false;;;;;; -25509;5;1;false;false;127;0;85;;; -25514;1;0;false;false;;;;;; -25515;22;0;false;false;0;0;0;;; -25537;1;0;false;false;;;;;; -25538;10;0;false;false;0;0;0;;; -25548;1;0;false;false;;;;;; -25549;1;0;false;false;0;0;0;;; -25550;7;0;false;false;;;;;; -25557;54;0;false;false;63;127;95;;; -25611;5;0;false;false;;;;;; -25616;31;0;false;false;63;127;95;;; -25647;4;0;false;false;;;;;; -25651;1;0;false;false;0;0;0;;; -25652;5;0;false;false;;;;;; -25657;1;0;false;false;0;0;0;;; -25658;4;0;false;false;;;;;; -25662;1;0;false;false;0;0;0;;; -25663;4;0;false;false;;;;;; -25667;2;1;false;false;127;0;85;;; -25669;1;0;false;false;;;;;; -25670;26;0;false;false;0;0;0;;; -25696;1;0;false;false;;;;;; -25697;2;0;false;false;0;0;0;;; -25699;5;0;false;false;;;;;; -25704;25;0;false;false;0;0;0;;; -25729;1;0;false;false;;;;;; -25730;2;0;false;false;0;0;0;;; -25732;5;0;false;false;;;;;; -25737;25;0;false;false;0;0;0;;; -25762;1;0;false;false;;;;;; -25763;2;0;false;false;0;0;0;;; -25765;5;0;false;false;;;;;; -25770;26;0;false;false;0;0;0;;; -25796;1;0;false;false;;;;;; -25797;2;0;false;false;0;0;0;;; -25799;1;0;false;false;;;;;; -25800;12;0;false;false;0;0;0;;; -25812;1;0;false;false;;;;;; -25813;1;0;false;false;0;0;0;;; -25814;1;0;false;false;;;;;; -25815;3;0;false;false;0;0;0;;; -25818;1;0;false;false;;;;;; -25819;1;0;false;false;0;0;0;;; -25820;5;0;false;false;;;;;; -25825;12;0;false;false;0;0;0;;; -25837;1;0;false;false;;;;;; -25838;1;0;false;false;0;0;0;;; -25839;1;0;false;false;;;;;; -25840;4;1;false;false;127;0;85;;; -25844;1;0;false;false;0;0;0;;; -25845;4;0;false;false;;;;;; -25849;1;0;false;false;0;0;0;;; -25850;4;0;false;false;;;;;; -25854;4;1;false;false;127;0;85;;; -25858;1;0;false;false;;;;;; -25859;1;0;false;false;0;0;0;;; -25860;5;0;false;false;;;;;; -25865;12;0;false;false;0;0;0;;; -25877;1;0;false;false;;;;;; -25878;1;0;false;false;0;0;0;;; -25879;1;0;false;false;;;;;; -25880;5;1;false;false;127;0;85;;; -25885;1;0;false;false;0;0;0;;; -25886;4;0;false;false;;;;;; -25890;1;0;false;false;0;0;0;;; -25891;3;0;false;false;;;;;; -25894;1;0;false;false;0;0;0;;; -25895;3;0;false;false;;;;;; -25898;3;0;false;false;63;95;191;;; -25901;4;0;false;false;;;;;; -25905;1;0;false;false;63;95;191;;; -25906;1;0;false;false;;;;;; -25907;7;0;false;false;63;95;191;;; -25914;1;0;false;false;;;;;; -25915;3;0;false;false;63;95;191;;; -25918;1;0;false;false;;;;;; -25919;9;0;false;false;63;95;191;;; -25928;1;0;false;false;;;;;; -25929;7;0;false;false;63;95;191;;; -25936;1;0;false;false;;;;;; -25937;2;0;false;false;63;95;191;;; -25939;1;0;false;false;;;;;; -25940;8;0;false;false;63;95;191;;; -25948;1;0;false;false;;;;;; -25949;2;0;false;false;63;95;191;;; -25951;1;0;false;false;;;;;; -25952;3;0;false;false;63;95;191;;; -25955;1;0;false;false;;;;;; -25956;3;0;false;false;63;95;191;;; -25959;1;0;false;false;;;;;; -25960;5;0;false;false;63;95;191;;; -25965;4;0;false;false;;;;;; -25969;1;0;false;false;63;95;191;;; -25970;1;0;false;false;;;;;; -25971;4;0;false;false;63;95;191;;; -25975;1;0;false;false;;;;;; -25976;4;0;false;false;63;95;191;;; -25980;1;0;false;false;;;;;; -25981;6;0;false;false;127;127;159;;; -25987;5;0;false;false;63;95;191;;; -25992;7;0;false;false;127;127;159;;; -25999;1;0;false;false;;;;;; -26000;2;0;false;false;63;95;191;;; -26002;1;0;false;false;;;;;; -26003;3;0;false;false;63;95;191;;; -26006;1;0;false;false;;;;;; -26007;3;0;false;false;63;95;191;;; -26010;1;0;false;false;;;;;; -26011;10;0;false;false;63;95;191;;; -26021;1;0;false;false;;;;;; -26022;6;0;false;false;127;127;159;;; -26028;3;0;false;false;63;95;191;;; -26031;7;0;false;false;127;127;159;;; -26038;1;0;false;false;63;95;191;;; -26039;4;0;false;false;;;;;; -26043;1;0;false;false;63;95;191;;; -26044;1;0;false;false;;;;;; -26045;3;0;false;false;127;127;159;;; -26048;4;0;false;false;;;;;; -26052;1;0;false;false;63;95;191;;; -26053;4;0;false;false;;;;;; -26057;1;0;false;false;63;95;191;;; -26058;1;0;false;false;;;;;; -26059;7;1;false;false;127;159;191;;; -26066;6;0;false;false;63;95;191;;; -26072;1;0;false;false;;;;;; -26073;6;0;false;false;63;95;191;;; -26079;1;0;false;false;;;;;; -26080;2;0;false;false;63;95;191;;; -26082;1;0;false;false;;;;;; -26083;4;0;false;false;63;95;191;;; -26087;1;0;false;false;;;;;; -26088;1;0;false;false;63;95;191;;; -26089;1;0;false;false;;;;;; -26090;7;0;false;false;63;95;191;;; -26097;1;0;false;false;;;;;; -26098;5;0;false;false;63;95;191;;; -26103;1;0;false;false;;;;;; -26104;4;0;false;false;63;95;191;;; -26108;1;0;false;false;;;;;; -26109;3;0;false;false;63;95;191;;; -26112;1;0;false;false;;;;;; -26113;7;0;false;false;63;95;191;;; -26120;4;0;false;false;;;;;; -26124;1;0;false;false;63;95;191;;; -26125;2;0;false;false;;;;;; -26127;4;0;false;false;63;95;191;;; -26131;1;0;false;false;;;;;; -26132;7;0;false;false;63;95;191;;; -26139;1;0;false;false;;;;;; -26140;4;0;false;false;63;95;191;;; -26144;1;0;false;false;;;;;; -26145;6;0;false;false;63;95;191;;; -26151;1;0;false;false;;;;;; -26152;6;0;false;false;63;95;191;;; -26158;1;0;false;false;;;;;; -26159;2;0;false;false;63;95;191;;; -26161;1;0;false;false;;;;;; -26162;7;0;false;false;63;95;191;;; -26169;1;0;false;false;;;;;; -26170;5;0;false;false;63;95;191;;; -26175;1;0;false;false;;;;;; -26176;20;0;false;false;63;95;191;;; -26196;4;0;false;false;;;;;; -26200;1;0;false;false;63;95;191;;; -26201;1;0;false;false;;;;;; -26202;7;1;false;false;127;159;191;;; -26209;5;0;false;false;63;95;191;;; -26214;1;0;false;false;;;;;; -26215;5;0;false;false;63;95;191;;; -26220;1;0;false;false;;;;;; -26221;6;0;false;false;63;95;191;;; -26227;1;0;false;false;;;;;; -26228;2;0;false;false;63;95;191;;; -26230;1;0;false;false;;;;;; -26231;8;0;false;false;63;95;191;;; -26239;1;0;false;false;;;;;; -26240;1;0;false;false;63;95;191;;; -26241;1;0;false;false;;;;;; -26242;6;0;false;false;63;95;191;;; -26248;4;0;false;false;;;;;; -26252;1;0;false;false;63;95;191;;; -26253;1;0;false;false;;;;;; -26254;7;1;false;false;127;159;191;;; -26261;3;0;false;false;63;95;191;;; -26264;1;0;false;false;;;;;; -26265;3;0;false;false;63;95;191;;; -26268;1;0;false;false;;;;;; -26269;6;0;false;false;63;95;191;;; -26275;1;0;false;false;;;;;; -26276;2;0;false;false;63;95;191;;; -26278;1;0;false;false;;;;;; -26279;7;0;false;false;63;95;191;;; -26286;4;0;false;false;;;;;; -26290;2;0;false;false;63;95;191;;; -26292;3;0;false;false;;;;;; -26295;4;1;false;false;127;0;85;;; -26299;1;0;false;false;;;;;; -26300;12;0;false;false;0;0;0;;; -26312;1;0;false;false;;;;;; -26313;7;0;false;false;0;0;0;;; -26320;1;0;false;false;;;;;; -26321;3;1;false;false;127;0;85;;; -26324;1;0;false;false;;;;;; -26325;6;0;false;false;0;0;0;;; -26331;1;0;false;false;;;;;; -26332;3;1;false;false;127;0;85;;; -26335;1;0;false;false;;;;;; -26336;4;0;false;false;0;0;0;;; -26340;1;0;false;false;;;;;; -26341;1;0;false;false;0;0;0;;; -26342;4;0;false;false;;;;;; -26346;3;1;false;false;127;0;85;;; -26349;1;0;false;false;;;;;; -26350;1;0;false;false;0;0;0;;; -26351;3;1;false;false;127;0;85;;; -26354;1;0;false;false;;;;;; -26355;5;0;false;false;0;0;0;;; -26360;1;0;false;false;;;;;; -26361;1;0;false;false;0;0;0;;; -26362;1;0;false;false;;;;;; -26363;6;0;false;false;0;0;0;;; -26369;1;0;false;false;;;;;; -26370;5;0;false;false;0;0;0;;; -26375;1;0;false;false;;;;;; -26376;1;0;false;false;0;0;0;;; -26377;1;0;false;false;;;;;; -26378;4;0;false;false;0;0;0;;; -26382;1;0;false;false;;;;;; -26383;8;0;false;false;0;0;0;;; -26391;1;0;false;false;;;;;; -26392;1;0;false;false;0;0;0;;; -26393;5;0;false;false;;;;;; -26398;4;1;false;false;127;0;85;;; -26402;1;0;false;false;;;;;; -26403;2;0;false;false;0;0;0;;; -26405;1;0;false;false;;;;;; -26406;1;0;false;false;0;0;0;;; -26407;1;0;false;false;;;;;; -26408;21;0;false;false;0;0;0;;; -26429;5;0;false;false;;;;;; -26434;2;1;false;false;127;0;85;;; -26436;1;0;false;false;;;;;; -26437;3;0;false;false;0;0;0;;; -26440;1;0;false;false;;;;;; -26441;1;0;false;false;0;0;0;;; -26442;1;0;false;false;;;;;; -26443;4;0;false;false;0;0;0;;; -26447;1;0;false;false;;;;;; -26448;2;0;false;false;0;0;0;;; -26450;1;0;false;false;;;;;; -26451;13;0;false;false;0;0;0;;; -26464;1;0;false;false;;;;;; -26465;1;0;false;false;0;0;0;;; -26466;6;0;false;false;;;;;; -26472;58;0;false;false;63;127;95;;; -26530;4;0;false;false;;;;;; -26534;41;0;false;false;63;127;95;;; -26575;4;0;false;false;;;;;; -26579;2;1;false;false;127;0;85;;; -26581;1;0;false;false;;;;;; -26582;6;0;false;false;0;0;0;;; -26588;1;0;false;false;;;;;; -26589;1;0;false;false;0;0;0;;; -26590;1;0;false;false;;;;;; -26591;6;0;false;false;0;0;0;;; -26597;1;0;false;false;;;;;; -26598;1;0;false;false;0;0;0;;; -26599;7;0;false;false;;;;;; -26606;29;0;false;false;0;0;0;;; -26635;1;0;false;false;;;;;; -26636;8;0;false;false;0;0;0;;; -26644;6;0;false;false;;;;;; -26650;1;0;false;false;0;0;0;;; -26651;6;0;false;false;;;;;; -26657;6;0;false;false;0;0;0;;; -26663;5;0;false;false;42;0;255;;; -26668;2;0;false;false;0;0;0;;; -26670;6;0;false;false;;;;;; -26676;24;0;false;false;0;0;0;;; -26700;5;1;false;false;127;0;85;;; -26705;1;0;false;false;0;0;0;;; -26706;1;0;false;false;;;;;; -26707;5;0;false;false;0;0;0;;; -26712;6;0;false;false;;;;;; -26718;6;0;false;false;0;0;0;;; -26724;3;0;false;false;42;0;255;;; -26727;2;0;false;false;0;0;0;;; -26729;6;0;false;false;;;;;; -26735;27;0;false;false;63;127;95;;; -26762;4;0;false;false;;;;;; -26766;5;0;false;false;0;0;0;;; -26771;1;0;false;false;;;;;; -26772;1;0;false;false;0;0;0;;; -26773;1;0;false;false;;;;;; -26774;5;0;false;false;0;0;0;;; -26779;1;0;false;false;;;;;; -26780;1;0;false;false;0;0;0;;; -26781;1;0;false;false;;;;;; -26782;2;0;false;false;0;0;0;;; -26784;5;0;false;false;;;;;; -26789;1;0;false;false;0;0;0;;; -26790;5;0;false;false;;;;;; -26795;4;1;false;false;127;0;85;;; -26799;5;0;false;false;;;;;; -26804;2;1;false;false;127;0;85;;; -26806;1;0;false;false;;;;;; -26807;3;0;false;false;0;0;0;;; -26810;1;0;false;false;;;;;; -26811;2;0;false;false;0;0;0;;; -26813;1;0;false;false;;;;;; -26814;3;0;false;false;42;0;255;;; -26817;1;0;false;false;;;;;; -26818;2;0;false;false;0;0;0;;; -26820;1;0;false;false;;;;;; -26821;2;0;false;false;0;0;0;;; -26823;1;0;false;false;;;;;; -26824;2;0;false;false;0;0;0;;; -26826;1;0;false;false;;;;;; -26827;3;0;false;false;42;0;255;;; -26830;1;0;false;false;;;;;; -26831;2;0;false;false;0;0;0;;; -26833;1;0;false;false;;;;;; -26834;2;0;false;false;0;0;0;;; -26836;1;0;false;false;;;;;; -26837;2;0;false;false;0;0;0;;; -26839;1;0;false;false;;;;;; -26840;4;0;false;false;42;0;255;;; -26844;1;0;false;false;0;0;0;;; -26845;1;0;false;false;;;;;; -26846;1;0;false;false;0;0;0;;; -26847;6;0;false;false;;;;;; -26853;58;0;false;false;63;127;95;;; -26911;4;0;false;false;;;;;; -26915;41;0;false;false;63;127;95;;; -26956;4;0;false;false;;;;;; -26960;2;1;false;false;127;0;85;;; -26962;1;0;false;false;;;;;; -26963;6;0;false;false;0;0;0;;; -26969;1;0;false;false;;;;;; -26970;1;0;false;false;0;0;0;;; -26971;1;0;false;false;;;;;; -26972;6;0;false;false;0;0;0;;; -26978;1;0;false;false;;;;;; -26979;1;0;false;false;0;0;0;;; -26980;7;0;false;false;;;;;; -26987;29;0;false;false;0;0;0;;; -27016;1;0;false;false;;;;;; -27017;8;0;false;false;0;0;0;;; -27025;6;0;false;false;;;;;; -27031;1;0;false;false;0;0;0;;; -27032;6;0;false;false;;;;;; -27038;6;0;false;false;0;0;0;;; -27044;4;0;false;false;42;0;255;;; -27048;2;0;false;false;0;0;0;;; -27050;6;0;false;false;;;;;; -27056;10;0;false;false;0;0;0;;; -27066;6;0;false;false;;;;;; -27072;5;0;false;false;0;0;0;;; -27077;1;0;false;false;;;;;; -27078;1;0;false;false;0;0;0;;; -27079;1;0;false;false;;;;;; -27080;5;0;false;false;0;0;0;;; -27085;1;0;false;false;;;;;; -27086;1;0;false;false;0;0;0;;; -27087;1;0;false;false;;;;;; -27088;2;0;false;false;0;0;0;;; -27090;5;0;false;false;;;;;; -27095;1;0;false;false;0;0;0;;; -27096;4;0;false;false;;;;;; -27100;1;0;false;false;0;0;0;;; -27101;4;0;false;false;;;;;; -27105;54;0;false;false;63;127;95;;; -27159;2;0;false;false;;;;;; -27161;21;0;false;false;63;127;95;;; -27182;2;0;false;false;;;;;; -27184;2;1;false;false;127;0;85;;; -27186;1;0;false;false;;;;;; -27187;6;0;false;false;0;0;0;;; -27193;1;0;false;false;;;;;; -27194;1;0;false;false;0;0;0;;; -27195;1;0;false;false;;;;;; -27196;4;0;false;false;0;0;0;;; -27200;1;0;false;false;;;;;; -27201;1;0;false;false;0;0;0;;; -27202;5;0;false;false;;;;;; -27207;29;0;false;false;0;0;0;;; -27236;1;0;false;false;;;;;; -27237;6;0;false;false;0;0;0;;; -27243;4;0;false;false;;;;;; -27247;1;0;false;false;0;0;0;;; -27248;3;0;false;false;;;;;; -27251;1;0;false;false;0;0;0;;; -27252;4;0;false;false;;;;;; -27256;3;0;false;false;63;95;191;;; -27259;4;0;false;false;;;;;; -27263;1;0;false;false;63;95;191;;; -27264;1;0;false;false;;;;;; -27265;6;0;false;false;63;95;191;;; -27271;1;0;false;false;;;;;; -27272;3;0;false;false;63;95;191;;; -27275;1;0;false;false;;;;;; -27276;3;0;false;false;63;95;191;;; -27279;1;0;false;false;;;;;; -27280;6;0;false;false;63;95;191;;; -27286;1;0;false;false;;;;;; -27287;9;0;false;false;63;95;191;;; -27296;1;0;false;false;;;;;; -27297;4;0;false;false;63;95;191;;; -27301;1;0;false;false;;;;;; -27302;5;0;false;false;63;95;191;;; -27307;1;0;false;false;;;;;; -27308;3;0;false;false;63;95;191;;; -27311;1;0;false;false;;;;;; -27312;5;0;false;false;63;95;191;;; -27317;1;0;false;false;;;;;; -27318;6;0;false;false;63;95;191;;; -27324;4;0;false;false;;;;;; -27328;2;0;false;false;63;95;191;;; -27330;3;0;false;false;;;;;; -27333;4;1;false;false;127;0;85;;; -27337;1;0;false;false;;;;;; -27338;13;0;false;false;0;0;0;;; -27351;1;0;false;false;;;;;; -27352;1;0;false;false;0;0;0;;; -27353;4;0;false;false;;;;;; -27357;12;0;false;false;0;0;0;;; -27369;1;0;false;false;;;;;; -27370;6;0;false;false;0;0;0;;; -27376;1;0;false;false;;;;;; -27377;1;0;false;false;0;0;0;;; -27378;1;0;false;false;;;;;; -27379;3;1;false;false;127;0;85;;; -27382;1;0;false;false;;;;;; -27383;15;0;false;false;0;0;0;;; -27398;4;0;false;false;;;;;; -27402;8;0;false;false;0;0;0;;; -27410;1;0;false;false;;;;;; -27411;8;0;false;false;0;0;0;;; -27419;1;0;false;false;;;;;; -27420;1;0;false;false;0;0;0;;; -27421;1;0;false;false;;;;;; -27422;27;0;false;false;0;0;0;;; -27449;4;0;false;false;;;;;; -27453;14;0;false;false;0;0;0;;; -27467;15;0;false;false;42;0;255;;; -27482;2;0;false;false;0;0;0;;; -27484;4;0;false;false;;;;;; -27488;59;0;false;false;63;127;95;;; -27547;2;0;false;false;;;;;; -27549;44;0;false;false;63;127;95;;; -27593;2;0;false;false;;;;;; -27595;6;0;false;false;0;0;0;;; -27601;1;0;false;false;;;;;; -27602;3;0;false;false;0;0;0;;; -27605;1;0;false;false;;;;;; -27606;1;0;false;false;0;0;0;;; -27607;1;0;false;false;;;;;; -27608;19;0;false;false;0;0;0;;; -27627;15;0;false;false;42;0;255;;; -27642;16;0;false;false;0;0;0;;; -27658;4;0;false;false;;;;;; -27662;2;1;false;false;127;0;85;;; -27664;1;0;false;false;;;;;; -27665;16;0;false;false;0;0;0;;; -27681;4;0;false;false;42;0;255;;; -27685;1;0;false;false;0;0;0;;; -27686;1;0;false;false;;;;;; -27687;2;0;false;false;0;0;0;;; -27689;1;0;false;false;;;;;; -27690;15;0;false;false;0;0;0;;; -27705;4;0;false;false;42;0;255;;; -27709;2;0;false;false;0;0;0;;; -27711;1;0;false;false;;;;;; -27712;1;0;false;false;0;0;0;;; -27713;5;0;false;false;;;;;; -27718;3;0;false;false;0;0;0;;; -27721;1;0;false;false;;;;;; -27722;1;0;false;false;0;0;0;;; -27723;1;0;false;false;;;;;; -27724;16;0;false;false;0;0;0;;; -27740;1;0;false;false;;;;;; -27741;14;0;false;false;0;0;0;;; -27755;5;0;false;false;;;;;; -27760;14;0;false;false;0;0;0;;; -27774;11;0;false;false;42;0;255;;; -27785;2;0;false;false;0;0;0;;; -27787;5;0;false;false;;;;;; -27792;19;0;false;false;0;0;0;;; -27811;4;0;false;false;;;;;; -27815;1;0;false;false;0;0;0;;; -27816;4;0;false;false;;;;;; -27820;14;0;false;false;0;0;0;;; -27834;36;0;false;false;42;0;255;;; -27870;2;0;false;false;0;0;0;;; -27872;4;0;false;false;;;;;; -27876;34;0;false;false;0;0;0;;; -27910;4;0;false;false;;;;;; -27914;14;0;false;false;0;0;0;;; -27928;18;0;false;false;42;0;255;;; -27946;2;0;false;false;0;0;0;;; -27948;4;0;false;false;;;;;; -27952;3;1;false;false;127;0;85;;; -27955;1;0;false;false;;;;;; -27956;1;0;false;false;0;0;0;;; -27957;3;1;false;false;127;0;85;;; -27960;1;0;false;false;;;;;; -27961;1;0;false;false;0;0;0;;; -27962;1;0;false;false;;;;;; -27963;1;0;false;false;0;0;0;;; -27964;1;0;false;false;;;;;; -27965;2;0;false;false;0;0;0;;; -27967;1;0;false;false;;;;;; -27968;1;0;false;false;0;0;0;;; -27969;1;0;false;false;;;;;; -27970;1;0;false;false;0;0;0;;; -27971;1;0;false;false;;;;;; -27972;18;0;false;false;0;0;0;;; -27990;1;0;false;false;;;;;; -27991;4;0;false;false;0;0;0;;; -27995;1;0;false;false;;;;;; -27996;1;0;false;false;0;0;0;;; -27997;5;0;false;false;;;;;; -28002;5;0;false;false;0;0;0;;; -28007;1;0;false;false;;;;;; -28008;5;0;false;false;0;0;0;;; -28013;1;0;false;false;;;;;; -28014;1;0;false;false;0;0;0;;; -28015;1;0;false;false;;;;;; -28016;7;0;false;false;0;0;0;;; -28023;1;0;false;false;;;;;; -28024;24;0;false;false;0;0;0;;; -28048;5;0;false;false;;;;;; -28053;14;0;false;false;0;0;0;;; -28067;7;0;false;false;42;0;255;;; -28074;2;0;false;false;0;0;0;;; -28076;5;0;false;false;;;;;; -28081;30;0;false;false;0;0;0;;; -28111;5;0;false;false;;;;;; -28116;14;0;false;false;0;0;0;;; -28130;9;0;false;false;42;0;255;;; -28139;2;0;false;false;0;0;0;;; -28141;5;0;false;false;;;;;; -28146;32;0;false;false;0;0;0;;; -28178;5;0;false;false;;;;;; -28183;14;0;false;false;0;0;0;;; -28197;8;0;false;false;42;0;255;;; -28205;2;0;false;false;0;0;0;;; -28207;5;0;false;false;;;;;; -28212;31;0;false;false;0;0;0;;; -28243;5;0;false;false;;;;;; -28248;14;0;false;false;0;0;0;;; -28262;3;0;false;false;42;0;255;;; -28265;2;0;false;false;0;0;0;;; -28267;4;0;false;false;;;;;; -28271;1;0;false;false;0;0;0;;; -28272;5;0;false;false;;;;;; -28277;60;0;false;false;63;127;95;;; -28337;2;0;false;false;;;;;; -28339;61;0;false;false;63;127;95;;; -28400;2;0;false;false;;;;;; -28402;14;0;false;false;0;0;0;;; -28416;14;0;false;false;42;0;255;;; -28430;2;0;false;false;0;0;0;;; -28432;4;0;false;false;;;;;; -28436;42;0;false;false;63;127;95;;; -28478;2;0;false;false;;;;;; -28480;34;0;false;false;0;0;0;;; -28514;1;0;false;false;;;;;; -28515;1;0;false;false;0;0;0;;; -28516;1;0;false;false;;;;;; -28517;3;0;false;false;0;0;0;;; -28520;4;0;false;false;;;;;; -28524;14;0;false;false;0;0;0;;; -28538;3;0;false;false;42;0;255;;; -28541;2;0;false;false;0;0;0;;; -28543;4;0;false;false;;;;;; -28547;24;0;false;false;0;0;0;;; -28571;1;0;false;false;;;;;; -28572;3;0;false;false;0;0;0;;; -28575;3;0;false;false;;;;;; -28578;1;0;false;false;0;0;0;;; -28579;3;0;false;false;;;;;; -28582;3;0;false;false;63;95;191;;; -28585;4;0;false;false;;;;;; -28589;1;0;false;false;63;95;191;;; -28590;1;0;false;false;;;;;; -28591;7;0;false;false;63;95;191;;; -28598;1;0;false;false;;;;;; -28599;3;0;false;false;63;95;191;;; -28602;1;0;false;false;;;;;; -28603;9;0;false;false;63;95;191;;; -28612;1;0;false;false;;;;;; -28613;4;0;false;false;63;95;191;;; -28617;1;0;false;false;;;;;; -28618;4;0;false;false;63;95;191;;; -28622;1;0;false;false;;;;;; -28623;2;0;false;false;63;95;191;;; -28625;1;0;false;false;;;;;; -28626;3;0;false;false;63;95;191;;; -28629;1;0;false;false;;;;;; -28630;3;0;false;false;63;95;191;;; -28633;1;0;false;false;;;;;; -28634;5;0;false;false;63;95;191;;; -28639;2;0;false;false;;;;;; -28641;5;0;false;false;63;95;191;;; -28646;1;0;false;false;;;;;; -28647;4;0;false;false;63;95;191;;; -28651;1;0;false;false;;;;;; -28652;2;0;false;false;63;95;191;;; -28654;1;0;false;false;;;;;; -28655;9;0;false;false;63;95;191;;; -28664;5;0;false;false;;;;;; -28669;1;0;false;false;63;95;191;;; -28670;1;0;false;false;;;;;; -28671;5;0;false;false;63;95;191;;; -28676;1;0;false;false;;;;;; -28677;3;0;false;false;63;95;191;;; -28680;1;0;false;false;;;;;; -28681;6;0;false;false;63;95;191;;; -28687;1;0;false;false;;;;;; -28688;7;0;false;false;63;95;191;;; -28695;1;0;false;false;;;;;; -28696;4;0;false;false;63;95;191;;; -28700;1;0;false;false;;;;;; -28701;3;0;false;false;63;95;191;;; -28704;1;0;false;false;;;;;; -28705;18;0;false;false;63;95;191;;; -28723;1;0;false;false;;;;;; -28724;2;0;false;false;63;95;191;;; -28726;1;0;false;false;;;;;; -28727;4;0;false;false;63;95;191;;; -28731;1;0;false;false;;;;;; -28732;2;0;false;false;63;95;191;;; -28734;1;0;false;false;;;;;; -28735;5;0;false;false;63;95;191;;; -28740;1;0;false;false;;;;;; -28741;3;0;false;false;63;95;191;;; -28744;5;0;false;false;;;;;; -28749;1;0;false;false;63;95;191;;; -28750;1;0;false;false;;;;;; -28751;8;0;false;false;63;95;191;;; -28759;1;0;false;false;;;;;; -28760;2;0;false;false;63;95;191;;; -28762;1;0;false;false;;;;;; -28763;3;0;false;false;63;95;191;;; -28766;1;0;false;false;;;;;; -28767;7;0;false;false;63;95;191;;; -28774;4;0;false;false;;;;;; -28778;1;0;false;false;63;95;191;;; -28779;1;0;false;false;;;;;; -28780;3;0;false;false;127;127;159;;; -28783;4;0;false;false;;;;;; -28787;1;0;false;false;63;95;191;;; -28788;4;0;false;false;;;;;; -28792;1;0;false;false;63;95;191;;; -28793;1;0;false;false;;;;;; -28794;7;1;false;false;127;159;191;;; -28801;4;0;false;false;63;95;191;;; -28805;1;0;false;false;;;;;; -28806;4;0;false;false;63;95;191;;; -28810;1;0;false;false;;;;;; -28811;4;0;false;false;63;95;191;;; -28815;1;0;false;false;;;;;; -28816;2;0;false;false;63;95;191;;; -28818;1;0;false;false;;;;;; -28819;5;0;false;false;63;95;191;;; -28824;1;0;false;false;;;;;; -28825;2;0;false;false;63;95;191;;; -28827;1;0;false;false;;;;;; -28828;4;0;false;false;63;95;191;;; -28832;1;0;false;false;;;;;; -28833;4;0;false;false;63;95;191;;; -28837;1;0;false;false;;;;;; -28838;3;0;false;false;63;95;191;;; -28841;1;0;false;false;;;;;; -28842;7;0;false;false;63;95;191;;; -28849;1;0;false;false;;;;;; -28850;4;0;false;false;63;95;191;;; -28854;1;0;false;false;;;;;; -28855;6;0;false;false;63;95;191;;; -28861;4;0;false;false;;;;;; -28865;1;0;false;false;63;95;191;;; -28866;2;0;false;false;;;;;; -28868;4;0;false;false;63;95;191;;; -28872;1;0;false;false;;;;;; -28873;6;0;false;false;63;95;191;;; -28879;1;0;false;false;;;;;; -28880;6;0;false;false;63;95;191;;; -28886;1;0;false;false;;;;;; -28887;2;0;false;false;63;95;191;;; -28889;1;0;false;false;;;;;; -28890;7;0;false;false;63;95;191;;; -28897;1;0;false;false;;;;;; -28898;5;0;false;false;63;95;191;;; -28903;1;0;false;false;;;;;; -28904;20;0;false;false;63;95;191;;; -28924;4;0;false;false;;;;;; -28928;1;0;false;false;63;95;191;;; -28929;1;0;false;false;;;;;; -28930;7;1;false;false;127;159;191;;; -28937;10;0;false;false;63;95;191;;; -28947;1;0;false;false;;;;;; -28948;6;0;false;false;63;95;191;;; -28954;1;0;false;false;;;;;; -28955;2;0;false;false;63;95;191;;; -28957;1;0;false;false;;;;;; -28958;3;0;false;false;63;95;191;;; -28961;1;0;false;false;;;;;; -28962;5;0;false;false;63;95;191;;; -28967;1;0;false;false;;;;;; -28968;1;0;false;false;63;95;191;;; -28969;1;0;false;false;;;;;; -28970;5;0;false;false;63;95;191;;; -28975;1;0;false;false;;;;;; -28976;4;0;false;false;63;95;191;;; -28980;1;0;false;false;;;;;; -28981;3;0;false;false;63;95;191;;; -28984;1;0;false;false;;;;;; -28985;5;0;false;false;63;95;191;;; -28990;1;0;false;false;;;;;; -28991;2;0;false;false;63;95;191;;; -28993;1;0;false;false;;;;;; -28994;3;0;false;false;63;95;191;;; -28997;5;0;false;false;;;;;; -29002;1;0;false;false;63;95;191;;; -29003;2;0;false;false;;;;;; -29005;6;0;false;false;63;95;191;;; -29011;1;0;false;false;;;;;; -29012;9;0;false;false;63;95;191;;; -29021;1;0;false;false;;;;;; -29022;3;0;false;false;63;95;191;;; -29025;1;0;false;false;;;;;; -29026;4;0;false;false;63;95;191;;; -29030;1;0;false;false;;;;;; -29031;9;0;false;false;63;95;191;;; -29040;1;0;false;false;;;;;; -29041;6;0;false;false;63;95;191;;; -29047;1;0;false;false;;;;;; -29048;3;0;false;false;63;95;191;;; -29051;1;0;false;false;;;;;; -29052;5;0;false;false;63;95;191;;; -29057;1;0;false;false;;;;;; -29058;6;0;false;false;63;95;191;;; -29064;1;0;false;false;;;;;; -29065;2;0;false;false;63;95;191;;; -29067;1;0;false;false;;;;;; -29068;5;0;false;false;63;95;191;;; -29073;1;0;false;false;;;;;; -29074;3;0;false;false;63;95;191;;; -29077;5;0;false;false;;;;;; -29082;1;0;false;false;63;95;191;;; -29083;2;0;false;false;;;;;; -29085;3;0;false;false;63;95;191;;; -29088;1;0;false;false;;;;;; -29089;6;0;false;false;63;95;191;;; -29095;1;0;false;false;;;;;; -29096;9;0;false;false;63;95;191;;; -29105;1;0;false;false;;;;;; -29106;6;0;false;false;63;95;191;;; -29112;1;0;false;false;;;;;; -29113;6;0;false;false;63;95;191;;; -29119;1;0;false;false;;;;;; -29120;8;0;false;false;63;95;191;;; -29128;1;0;false;false;;;;;; -29129;2;0;false;false;63;95;191;;; -29131;1;0;false;false;;;;;; -29132;8;0;false;false;63;95;191;;; -29140;4;0;false;false;;;;;; -29144;1;0;false;false;63;95;191;;; -29145;1;0;false;false;;;;;; -29146;11;1;false;false;127;159;191;;; -29157;12;0;false;false;63;95;191;;; -29169;1;0;false;false;;;;;; -29170;4;0;false;false;127;127;159;;; -29174;4;0;false;false;;;;;; -29178;1;0;false;false;63;95;191;;; -29179;3;0;false;false;;;;;; -29182;4;0;false;false;127;127;159;;; -29186;8;0;false;false;63;95;191;;; -29194;1;0;false;false;;;;;; -29195;4;0;false;false;63;95;191;;; -29199;1;0;false;false;;;;;; -29200;3;0;false;false;63;95;191;;; -29203;1;0;false;false;;;;;; -29204;6;0;false;false;63;95;191;;; -29210;1;0;false;false;;;;;; -29211;2;0;false;false;63;95;191;;; -29213;1;0;false;false;;;;;; -29214;7;0;false;false;63;95;191;;; -29221;5;0;false;false;127;127;159;;; -29226;4;0;false;false;;;;;; -29230;1;0;false;false;63;95;191;;; -29231;1;0;false;false;;;;;; -29232;5;0;false;false;127;127;159;;; -29237;4;0;false;false;;;;;; -29241;2;0;false;false;63;95;191;;; -29243;3;0;false;false;;;;;; -29246;6;1;false;false;127;0;85;;; -29252;1;0;false;false;;;;;; -29253;4;1;false;false;127;0;85;;; -29257;1;0;false;false;;;;;; -29258;16;0;false;false;0;0;0;;; -29274;1;0;false;false;;;;;; -29275;5;0;false;false;0;0;0;;; -29280;1;0;false;false;;;;;; -29281;3;1;false;false;127;0;85;;; -29284;1;0;false;false;;;;;; -29285;11;0;false;false;0;0;0;;; -29296;1;0;false;false;;;;;; -29297;1;0;false;false;0;0;0;;; -29298;4;0;false;false;;;;;; -29302;12;0;false;false;0;0;0;;; -29314;1;0;false;false;;;;;; -29315;6;0;false;false;0;0;0;;; -29321;1;0;false;false;;;;;; -29322;1;0;false;false;0;0;0;;; -29323;1;0;false;false;;;;;; -29324;3;1;false;false;127;0;85;;; -29327;1;0;false;false;;;;;; -29328;14;0;false;false;0;0;0;;; -29342;4;0;false;false;;;;;; -29346;5;0;false;false;0;0;0;;; -29351;1;0;false;false;;;;;; -29352;14;0;false;false;0;0;0;;; -29366;1;0;false;false;;;;;; -29367;1;0;false;false;0;0;0;;; -29368;1;0;false;false;;;;;; -29369;4;1;false;false;127;0;85;;; -29373;1;0;false;false;0;0;0;;; -29374;4;0;false;false;;;;;; -29378;15;0;false;false;0;0;0;;; -29393;1;0;false;false;;;;;; -29394;6;0;false;false;0;0;0;;; -29400;8;0;false;false;;;;;; -29408;2;1;false;false;127;0;85;;; -29410;1;0;false;false;;;;;; -29411;12;0;false;false;0;0;0;;; -29423;1;0;false;false;;;;;; -29424;1;0;false;false;0;0;0;;; -29425;5;0;false;false;;;;;; -29430;24;0;false;false;0;0;0;;; -29454;4;0;false;false;;;;;; -29458;1;0;false;false;0;0;0;;; -29459;4;0;false;false;;;;;; -29463;5;0;false;false;0;0;0;;; -29468;1;0;false;false;;;;;; -29469;1;0;false;false;0;0;0;;; -29470;1;0;false;false;;;;;; -29471;37;0;false;false;0;0;0;;; -29508;1;0;false;false;;;;;; -29509;6;0;false;false;0;0;0;;; -29515;4;0;false;false;;;;;; -29519;2;1;false;false;127;0;85;;; -29521;1;0;false;false;;;;;; -29522;6;0;false;false;0;0;0;;; -29528;1;0;false;false;;;;;; -29529;2;0;false;false;0;0;0;;; -29531;1;0;false;false;;;;;; -29532;4;1;false;false;127;0;85;;; -29536;1;0;false;false;0;0;0;;; -29537;1;0;false;false;;;;;; -29538;1;0;false;false;0;0;0;;; -29539;5;0;false;false;;;;;; -29544;6;0;false;false;0;0;0;;; -29550;1;0;false;false;;;;;; -29551;1;0;false;false;0;0;0;;; -29552;1;0;false;false;;;;;; -29553;13;0;false;false;0;0;0;;; -29566;4;0;false;false;;;;;; -29570;1;0;false;false;0;0;0;;; -29571;4;0;false;false;;;;;; -29575;5;0;false;false;0;0;0;;; -29580;1;0;false;false;;;;;; -29581;1;0;false;false;0;0;0;;; -29582;1;0;false;false;;;;;; -29583;42;0;false;false;0;0;0;;; -29625;1;0;false;false;;;;;; -29626;6;0;false;false;0;0;0;;; -29632;4;0;false;false;;;;;; -29636;2;1;false;false;127;0;85;;; -29638;1;0;false;false;;;;;; -29639;6;0;false;false;0;0;0;;; -29645;1;0;false;false;;;;;; -29646;2;0;false;false;0;0;0;;; -29648;1;0;false;false;;;;;; -29649;4;1;false;false;127;0;85;;; -29653;1;0;false;false;0;0;0;;; -29654;1;0;false;false;;;;;; -29655;1;0;false;false;0;0;0;;; -29656;5;0;false;false;;;;;; -29661;14;0;false;false;0;0;0;;; -29675;1;0;false;false;;;;;; -29676;1;0;false;false;0;0;0;;; -29677;1;0;false;false;;;;;; -29678;21;0;false;false;0;0;0;;; -29699;4;0;false;false;;;;;; -29703;1;0;false;false;0;0;0;;; -29704;4;0;false;false;;;;;; -29708;2;1;false;false;127;0;85;;; -29710;1;0;false;false;;;;;; -29711;15;0;false;false;0;0;0;;; -29726;1;0;false;false;;;;;; -29727;2;0;false;false;0;0;0;;; -29729;1;0;false;false;;;;;; -29730;4;1;false;false;127;0;85;;; -29734;1;0;false;false;0;0;0;;; -29735;1;0;false;false;;;;;; -29736;1;0;false;false;0;0;0;;; -29737;5;0;false;false;;;;;; -29742;14;0;false;false;0;0;0;;; -29756;1;0;false;false;;;;;; -29757;1;0;false;false;0;0;0;;; -29758;1;0;false;false;;;;;; -29759;16;0;false;false;0;0;0;;; -29775;4;0;false;false;;;;;; -29779;1;0;false;false;0;0;0;;; -29780;4;0;false;false;;;;;; -29784;21;0;false;false;0;0;0;;; -29805;1;0;false;false;;;;;; -29806;11;0;false;false;0;0;0;;; -29817;1;0;false;false;;;;;; -29818;7;0;false;false;0;0;0;;; -29825;1;0;false;false;;;;;; -29826;16;0;false;false;0;0;0;;; -29842;3;0;false;false;;;;;; -29845;1;0;false;false;0;0;0;;; -29846;3;0;false;false;;;;;; -29849;3;0;false;false;63;95;191;;; -29852;4;0;false;false;;;;;; -29856;1;0;false;false;63;95;191;;; -29857;1;0;false;false;;;;;; -29858;7;0;false;false;63;95;191;;; -29865;1;0;false;false;;;;;; -29866;3;0;false;false;63;95;191;;; -29869;1;0;false;false;;;;;; -29870;9;0;false;false;63;95;191;;; -29879;1;0;false;false;;;;;; -29880;4;0;false;false;63;95;191;;; -29884;1;0;false;false;;;;;; -29885;10;0;false;false;63;95;191;;; -29895;1;0;false;false;;;;;; -29896;2;0;false;false;63;95;191;;; -29898;1;0;false;false;;;;;; -29899;3;0;false;false;63;95;191;;; -29902;1;0;false;false;;;;;; -29903;3;0;false;false;63;95;191;;; -29906;1;0;false;false;;;;;; -29907;5;0;false;false;63;95;191;;; -29912;4;0;false;false;;;;;; -29916;1;0;false;false;63;95;191;;; -29917;1;0;false;false;;;;;; -29918;3;0;false;false;127;127;159;;; -29921;4;0;false;false;;;;;; -29925;1;0;false;false;63;95;191;;; -29926;4;0;false;false;;;;;; -29930;1;0;false;false;63;95;191;;; -29931;1;0;false;false;;;;;; -29932;7;1;false;false;127;159;191;;; -29939;13;0;false;false;63;95;191;;; -29952;1;0;false;false;;;;;; -29953;4;0;false;false;63;95;191;;; -29957;1;0;false;false;;;;;; -29958;9;0;false;false;63;95;191;;; -29967;1;0;false;false;;;;;; -29968;2;0;false;false;63;95;191;;; -29970;1;0;false;false;;;;;; -29971;5;0;false;false;63;95;191;;; -29976;1;0;false;false;;;;;; -29977;2;0;false;false;63;95;191;;; -29979;1;0;false;false;;;;;; -29980;4;0;false;false;63;95;191;;; -29984;4;0;false;false;;;;;; -29988;1;0;false;false;63;95;191;;; -29989;1;0;false;false;;;;;; -29990;11;1;false;false;127;159;191;;; -30001;12;0;false;false;63;95;191;;; -30013;1;0;false;false;;;;;; -30014;4;0;false;false;127;127;159;;; -30018;4;0;false;false;;;;;; -30022;1;0;false;false;63;95;191;;; -30023;3;0;false;false;;;;;; -30026;4;0;false;false;127;127;159;;; -30030;8;0;false;false;63;95;191;;; -30038;1;0;false;false;;;;;; -30039;4;0;false;false;63;95;191;;; -30043;1;0;false;false;;;;;; -30044;3;0;false;false;63;95;191;;; -30047;1;0;false;false;;;;;; -30048;6;0;false;false;63;95;191;;; -30054;1;0;false;false;;;;;; -30055;2;0;false;false;63;95;191;;; -30057;1;0;false;false;;;;;; -30058;7;0;false;false;63;95;191;;; -30065;5;0;false;false;127;127;159;;; -30070;4;0;false;false;;;;;; -30074;1;0;false;false;63;95;191;;; -30075;1;0;false;false;;;;;; -30076;5;0;false;false;127;127;159;;; -30081;4;0;false;false;;;;;; -30085;2;0;false;false;63;95;191;;; -30087;3;0;false;false;;;;;; -30090;6;1;false;false;127;0;85;;; -30096;1;0;false;false;;;;;; -30097;4;1;false;false;127;0;85;;; -30101;1;0;false;false;;;;;; -30102;25;0;false;false;0;0;0;;; -30127;1;0;false;false;;;;;; -30128;14;0;false;false;0;0;0;;; -30142;1;0;false;false;;;;;; -30143;1;0;false;false;0;0;0;;; -30144;4;0;false;false;;;;;; -30148;2;1;false;false;127;0;85;;; -30150;1;0;false;false;;;;;; -30151;12;0;false;false;0;0;0;;; -30163;1;0;false;false;;;;;; -30164;1;0;false;false;0;0;0;;; -30165;5;0;false;false;;;;;; -30170;24;0;false;false;0;0;0;;; -30194;4;0;false;false;;;;;; -30198;1;0;false;false;0;0;0;;; -30199;4;0;false;false;;;;;; -30203;20;0;false;false;0;0;0;;; -30223;1;0;false;false;;;;;; -30224;2;0;false;false;0;0;0;;; -30226;1;0;false;false;;;;;; -30227;24;0;false;false;0;0;0;;; -30251;4;0;false;false;;;;;; -30255;6;0;false;false;0;0;0;;; -30261;8;0;false;false;42;0;255;;; -30269;2;0;false;false;0;0;0;;; -30271;3;0;false;false;;;;;; -30274;1;0;false;false;0;0;0;;; -30275;3;0;false;false;;;;;; -30278;3;0;false;false;63;95;191;;; -30281;4;0;false;false;;;;;; -30285;1;0;false;false;63;95;191;;; -30286;1;0;false;false;;;;;; -30287;7;0;false;false;63;95;191;;; -30294;1;0;false;false;;;;;; -30295;3;0;false;false;63;95;191;;; -30298;1;0;false;false;;;;;; -30299;9;0;false;false;63;95;191;;; -30308;1;0;false;false;;;;;; -30309;4;0;false;false;63;95;191;;; -30313;1;0;false;false;;;;;; -30314;4;0;false;false;63;95;191;;; -30318;1;0;false;false;;;;;; -30319;2;0;false;false;63;95;191;;; -30321;1;0;false;false;;;;;; -30322;3;0;false;false;63;95;191;;; -30325;1;0;false;false;;;;;; -30326;3;0;false;false;63;95;191;;; -30329;1;0;false;false;;;;;; -30330;5;0;false;false;63;95;191;;; -30335;4;0;false;false;;;;;; -30339;1;0;false;false;63;95;191;;; -30340;1;0;false;false;;;;;; -30341;3;0;false;false;63;95;191;;; -30344;1;0;false;false;;;;;; -30345;3;0;false;false;63;95;191;;; -30348;1;0;false;false;;;;;; -30349;6;0;false;false;63;95;191;;; -30355;1;0;false;false;;;;;; -30356;3;0;false;false;63;95;191;;; -30359;1;0;false;false;;;;;; -30360;4;0;false;false;63;95;191;;; -30364;1;0;false;false;;;;;; -30365;6;0;false;false;63;95;191;;; -30371;1;0;false;false;;;;;; -30372;9;0;false;false;63;95;191;;; -30381;1;0;false;false;;;;;; -30382;2;0;false;false;63;95;191;;; -30384;1;0;false;false;;;;;; -30385;8;0;false;false;63;95;191;;; -30393;1;0;false;false;;;;;; -30394;3;0;false;false;63;95;191;;; -30397;1;0;false;false;;;;;; -30398;17;0;false;false;63;95;191;;; -30415;4;0;false;false;;;;;; -30419;1;0;false;false;63;95;191;;; -30420;1;0;false;false;;;;;; -30421;10;0;false;false;63;95;191;;; -30431;1;0;false;false;;;;;; -30432;2;0;false;false;63;95;191;;; -30434;1;0;false;false;;;;;; -30435;7;0;false;false;63;95;191;;; -30442;1;0;false;false;;;;;; -30443;2;0;false;false;63;95;191;;; -30445;1;0;false;false;;;;;; -30446;7;0;false;false;63;95;191;;; -30453;1;0;false;false;;;;;; -30454;3;0;false;false;63;95;191;;; -30457;1;0;false;false;;;;;; -30458;4;0;false;false;63;95;191;;; -30462;1;0;false;false;;;;;; -30463;9;0;false;false;63;95;191;;; -30472;1;0;false;false;;;;;; -30473;2;0;false;false;63;95;191;;; -30475;1;0;false;false;;;;;; -30476;3;0;false;false;63;95;191;;; -30479;1;0;false;false;;;;;; -30480;4;0;false;false;63;95;191;;; -30484;1;0;false;false;;;;;; -30485;7;0;false;false;63;95;191;;; -30492;4;0;false;false;;;;;; -30496;1;0;false;false;63;95;191;;; -30497;1;0;false;false;;;;;; -30498;5;0;false;false;63;95;191;;; -30503;1;0;false;false;;;;;; -30504;10;0;false;false;63;95;191;;; -30514;1;0;false;false;;;;;; -30515;6;0;false;false;63;95;191;;; -30521;1;0;false;false;;;;;; -30522;4;0;false;false;63;95;191;;; -30526;1;0;false;false;;;;;; -30527;10;0;false;false;63;95;191;;; -30537;1;0;false;false;;;;;; -30538;4;0;false;false;63;95;191;;; -30542;1;0;false;false;;;;;; -30543;3;0;false;false;63;95;191;;; -30546;1;0;false;false;;;;;; -30547;4;0;false;false;63;95;191;;; -30551;1;0;false;false;;;;;; -30552;10;0;false;false;63;95;191;;; -30562;1;0;false;false;;;;;; -30563;6;0;false;false;63;95;191;;; -30569;4;0;false;false;;;;;; -30573;1;0;false;false;63;95;191;;; -30574;1;0;false;false;;;;;; -30575;10;0;false;false;63;95;191;;; -30585;1;0;false;false;;;;;; -30586;6;0;false;false;63;95;191;;; -30592;1;0;false;false;;;;;; -30593;3;0;false;false;63;95;191;;; -30596;1;0;false;false;;;;;; -30597;7;0;false;false;63;95;191;;; -30604;1;0;false;false;;;;;; -30605;5;0;false;false;63;95;191;;; -30610;1;0;false;false;;;;;; -30611;3;0;false;false;63;95;191;;; -30614;1;0;false;false;;;;;; -30615;10;0;false;false;63;95;191;;; -30625;1;0;false;false;;;;;; -30626;3;0;false;false;63;95;191;;; -30629;1;0;false;false;;;;;; -30630;4;0;false;false;63;95;191;;; -30634;1;0;false;false;;;;;; -30635;3;0;false;false;63;95;191;;; -30638;1;0;false;false;;;;;; -30639;3;0;false;false;63;95;191;;; -30642;1;0;false;false;;;;;; -30643;5;0;false;false;63;95;191;;; -30648;4;0;false;false;;;;;; -30652;1;0;false;false;63;95;191;;; -30653;1;0;false;false;;;;;; -30654;3;0;false;false;127;127;159;;; -30657;4;0;false;false;;;;;; -30661;1;0;false;false;63;95;191;;; -30662;4;0;false;false;;;;;; -30666;1;0;false;false;63;95;191;;; -30667;1;0;false;false;;;;;; -30668;7;1;false;false;127;159;191;;; -30675;4;0;false;false;63;95;191;;; -30679;1;0;false;false;;;;;; -30680;4;0;false;false;63;95;191;;; -30684;1;0;false;false;;;;;; -30685;4;0;false;false;63;95;191;;; -30689;1;0;false;false;;;;;; -30690;2;0;false;false;63;95;191;;; -30692;1;0;false;false;;;;;; -30693;5;0;false;false;63;95;191;;; -30698;1;0;false;false;;;;;; -30699;2;0;false;false;63;95;191;;; -30701;1;0;false;false;;;;;; -30702;4;0;false;false;63;95;191;;; -30706;1;0;false;false;;;;;; -30707;4;0;false;false;63;95;191;;; -30711;1;0;false;false;;;;;; -30712;3;0;false;false;63;95;191;;; -30715;1;0;false;false;;;;;; -30716;7;0;false;false;63;95;191;;; -30723;1;0;false;false;;;;;; -30724;4;0;false;false;63;95;191;;; -30728;1;0;false;false;;;;;; -30729;6;0;false;false;63;95;191;;; -30735;4;0;false;false;;;;;; -30739;1;0;false;false;63;95;191;;; -30740;2;0;false;false;;;;;; -30742;4;0;false;false;63;95;191;;; -30746;1;0;false;false;;;;;; -30747;6;0;false;false;63;95;191;;; -30753;1;0;false;false;;;;;; -30754;6;0;false;false;63;95;191;;; -30760;1;0;false;false;;;;;; -30761;2;0;false;false;63;95;191;;; -30763;1;0;false;false;;;;;; -30764;7;0;false;false;63;95;191;;; -30771;1;0;false;false;;;;;; -30772;5;0;false;false;63;95;191;;; -30777;1;0;false;false;;;;;; -30778;20;0;false;false;63;95;191;;; -30798;4;0;false;false;;;;;; -30802;1;0;false;false;63;95;191;;; -30803;1;0;false;false;;;;;; -30804;7;1;false;false;127;159;191;;; -30811;10;0;false;false;63;95;191;;; -30821;1;0;false;false;;;;;; -30822;6;0;false;false;63;95;191;;; -30828;1;0;false;false;;;;;; -30829;2;0;false;false;63;95;191;;; -30831;1;0;false;false;;;;;; -30832;3;0;false;false;63;95;191;;; -30835;1;0;false;false;;;;;; -30836;5;0;false;false;63;95;191;;; -30841;1;0;false;false;;;;;; -30842;1;0;false;false;63;95;191;;; -30843;1;0;false;false;;;;;; -30844;5;0;false;false;63;95;191;;; -30849;1;0;false;false;;;;;; -30850;4;0;false;false;63;95;191;;; -30854;1;0;false;false;;;;;; -30855;3;0;false;false;63;95;191;;; -30858;1;0;false;false;;;;;; -30859;5;0;false;false;63;95;191;;; -30864;1;0;false;false;;;;;; -30865;2;0;false;false;63;95;191;;; -30867;1;0;false;false;;;;;; -30868;3;0;false;false;63;95;191;;; -30871;5;0;false;false;;;;;; -30876;1;0;false;false;63;95;191;;; -30877;2;0;false;false;;;;;; -30879;6;0;false;false;63;95;191;;; -30885;1;0;false;false;;;;;; -30886;9;0;false;false;63;95;191;;; -30895;1;0;false;false;;;;;; -30896;3;0;false;false;63;95;191;;; -30899;1;0;false;false;;;;;; -30900;4;0;false;false;63;95;191;;; -30904;1;0;false;false;;;;;; -30905;9;0;false;false;63;95;191;;; -30914;1;0;false;false;;;;;; -30915;6;0;false;false;63;95;191;;; -30921;1;0;false;false;;;;;; -30922;3;0;false;false;63;95;191;;; -30925;1;0;false;false;;;;;; -30926;5;0;false;false;63;95;191;;; -30931;1;0;false;false;;;;;; -30932;6;0;false;false;63;95;191;;; -30938;1;0;false;false;;;;;; -30939;2;0;false;false;63;95;191;;; -30941;1;0;false;false;;;;;; -30942;5;0;false;false;63;95;191;;; -30947;1;0;false;false;;;;;; -30948;3;0;false;false;63;95;191;;; -30951;5;0;false;false;;;;;; -30956;1;0;false;false;63;95;191;;; -30957;2;0;false;false;;;;;; -30959;3;0;false;false;63;95;191;;; -30962;1;0;false;false;;;;;; -30963;6;0;false;false;63;95;191;;; -30969;1;0;false;false;;;;;; -30970;9;0;false;false;63;95;191;;; -30979;1;0;false;false;;;;;; -30980;6;0;false;false;63;95;191;;; -30986;1;0;false;false;;;;;; -30987;6;0;false;false;63;95;191;;; -30993;1;0;false;false;;;;;; -30994;8;0;false;false;63;95;191;;; -31002;1;0;false;false;;;;;; -31003;2;0;false;false;63;95;191;;; -31005;1;0;false;false;;;;;; -31006;8;0;false;false;63;95;191;;; -31014;4;0;false;false;;;;;; -31018;1;0;false;false;63;95;191;;; -31019;1;0;false;false;;;;;; -31020;7;1;false;false;127;159;191;;; -31027;6;0;false;false;63;95;191;;; -31033;1;0;false;false;;;;;; -31034;6;0;false;false;63;95;191;;; -31040;1;0;false;false;;;;;; -31041;2;0;false;false;63;95;191;;; -31043;1;0;false;false;;;;;; -31044;3;0;false;false;63;95;191;;; -31047;1;0;false;false;;;;;; -31048;3;0;false;false;63;95;191;;; -31051;1;0;false;false;;;;;; -31052;11;0;false;false;63;95;191;;; -31063;1;0;false;false;;;;;; -31064;4;0;false;false;63;95;191;;; -31068;1;0;false;false;;;;;; -31069;3;0;false;false;63;95;191;;; -31072;1;0;false;false;;;;;; -31073;2;0;false;false;63;95;191;;; -31075;1;0;false;false;;;;;; -31076;5;0;false;false;63;95;191;;; -31081;4;0;false;false;;;;;; -31085;1;0;false;false;63;95;191;;; -31086;1;0;false;false;;;;;; -31087;7;1;false;false;127;159;191;;; -31094;14;0;false;false;63;95;191;;; -31108;1;0;false;false;;;;;; -31109;4;0;false;false;63;95;191;;; -31113;1;0;false;false;;;;;; -31114;10;0;false;false;63;95;191;;; -31124;1;0;false;false;;;;;; -31125;5;0;false;false;63;95;191;;; -31130;1;0;false;false;;;;;; -31131;2;0;false;false;63;95;191;;; -31133;1;0;false;false;;;;;; -31134;3;0;false;false;63;95;191;;; -31137;1;0;false;false;;;;;; -31138;3;0;false;false;63;95;191;;; -31141;1;0;false;false;;;;;; -31142;11;0;false;false;63;95;191;;; -31153;5;0;false;false;;;;;; -31158;1;0;false;false;63;95;191;;; -31159;2;0;false;false;;;;;; -31161;3;0;false;false;63;95;191;;; -31164;1;0;false;false;;;;;; -31165;2;0;false;false;63;95;191;;; -31167;1;0;false;false;;;;;; -31168;5;0;false;false;63;95;191;;; -31173;4;0;false;false;;;;;; -31177;2;0;false;false;63;95;191;;; -31179;3;0;false;false;;;;;; -31182;4;1;false;false;127;0;85;;; -31186;1;0;false;false;;;;;; -31187;22;0;false;false;0;0;0;;; -31209;1;0;false;false;;;;;; -31210;5;0;false;false;0;0;0;;; -31215;1;0;false;false;;;;;; -31216;3;1;false;false;127;0;85;;; -31219;1;0;false;false;;;;;; -31220;11;0;false;false;0;0;0;;; -31231;1;0;false;false;;;;;; -31232;12;0;false;false;0;0;0;;; -31244;1;0;false;false;;;;;; -31245;7;0;false;false;0;0;0;;; -31252;1;0;false;false;;;;;; -31253;5;0;false;false;0;0;0;;; -31258;1;0;false;false;;;;;; -31259;15;0;false;false;0;0;0;;; -31274;1;0;false;false;;;;;; -31275;1;0;false;false;0;0;0;;; -31276;4;0;false;false;;;;;; -31280;3;1;false;false;127;0;85;;; -31283;1;0;false;false;;;;;; -31284;10;0;false;false;0;0;0;;; -31294;1;0;false;false;;;;;; -31295;1;0;false;false;0;0;0;;; -31296;1;0;false;false;;;;;; -31297;14;0;false;false;0;0;0;;; -31311;4;0;false;false;;;;;; -31315;3;1;false;false;127;0;85;;; -31318;1;0;false;false;;;;;; -31319;10;0;false;false;0;0;0;;; -31329;4;0;false;false;;;;;; -31333;3;1;false;false;127;0;85;;; -31336;1;0;false;false;;;;;; -31337;8;0;false;false;0;0;0;;; -31345;4;0;false;false;;;;;; -31349;3;1;false;false;127;0;85;;; -31352;1;0;false;false;;;;;; -31353;11;0;false;false;0;0;0;;; -31364;1;0;false;false;;;;;; -31365;1;0;false;false;0;0;0;;; -31366;1;0;false;false;;;;;; -31367;11;0;false;false;0;0;0;;; -31378;6;0;false;false;;;;;; -31384;3;1;false;false;127;0;85;;; -31387;1;0;false;false;;;;;; -31388;9;0;false;false;0;0;0;;; -31397;1;0;false;false;;;;;; -31398;1;0;false;false;0;0;0;;; -31399;1;0;false;false;;;;;; -31400;11;0;false;false;0;0;0;;; -31411;1;0;false;false;;;;;; -31412;1;0;false;false;0;0;0;;; -31413;1;0;false;false;;;;;; -31414;5;1;false;false;127;0;85;;; -31419;16;0;false;false;0;0;0;;; -31435;4;0;false;false;;;;;; -31439;3;1;false;false;127;0;85;;; -31442;1;0;false;false;;;;;; -31443;13;0;false;false;0;0;0;;; -31456;1;0;false;false;;;;;; -31457;1;0;false;false;0;0;0;;; -31458;1;0;false;false;;;;;; -31459;20;0;false;false;0;0;0;;; -31479;1;0;false;false;;;;;; -31480;9;0;false;false;0;0;0;;; -31489;1;0;false;false;;;;;; -31490;1;0;false;false;0;0;0;;; -31491;1;0;false;false;;;;;; -31492;12;0;false;false;0;0;0;;; -31504;4;0;false;false;;;;;; -31508;3;1;false;false;127;0;85;;; -31511;1;0;false;false;;;;;; -31512;11;0;false;false;0;0;0;;; -31523;1;0;false;false;;;;;; -31524;1;0;false;false;0;0;0;;; -31525;1;0;false;false;;;;;; -31526;11;0;false;false;0;0;0;;; -31537;1;0;false;false;;;;;; -31538;1;0;false;false;0;0;0;;; -31539;1;0;false;false;;;;;; -31540;11;0;false;false;0;0;0;;; -31551;8;0;false;false;;;;;; -31559;2;1;false;false;127;0;85;;; -31561;1;0;false;false;;;;;; -31562;12;0;false;false;0;0;0;;; -31574;1;0;false;false;;;;;; -31575;2;0;false;false;0;0;0;;; -31577;1;0;false;false;;;;;; -31578;14;0;false;false;0;0;0;;; -31592;1;0;false;false;;;;;; -31593;1;0;false;false;0;0;0;;; -31594;5;0;false;false;;;;;; -31599;6;1;false;false;127;0;85;;; -31605;1;0;false;false;0;0;0;;; -31606;5;0;false;false;;;;;; -31611;38;0;false;false;63;127;95;;; -31649;2;0;false;false;;;;;; -31651;1;0;false;false;0;0;0;;; -31652;4;0;false;false;;;;;; -31656;4;1;false;false;127;0;85;;; -31660;4;0;false;false;;;;;; -31664;2;1;false;false;127;0;85;;; -31666;1;0;false;false;;;;;; -31667;12;0;false;false;0;0;0;;; -31679;1;0;false;false;;;;;; -31680;1;0;false;false;0;0;0;;; -31681;1;0;false;false;;;;;; -31682;2;0;false;false;0;0;0;;; -31684;1;0;false;false;;;;;; -31685;1;0;false;false;0;0;0;;; -31686;5;0;false;false;;;;;; -31691;9;0;false;false;0;0;0;;; -31700;1;0;false;false;;;;;; -31701;1;0;false;false;0;0;0;;; -31702;1;0;false;false;;;;;; -31703;12;0;false;false;0;0;0;;; -31715;2;0;false;false;;;;;; -31717;39;0;false;false;63;127;95;;; -31756;2;0;false;false;;;;;; -31758;1;0;false;false;0;0;0;;; -31759;4;0;false;false;;;;;; -31763;4;1;false;false;127;0;85;;; -31767;1;0;false;false;;;;;; -31768;1;0;false;false;0;0;0;;; -31769;5;0;false;false;;;;;; -31774;9;0;false;false;0;0;0;;; -31783;1;0;false;false;;;;;; -31784;1;0;false;false;0;0;0;;; -31785;1;0;false;false;;;;;; -31786;2;0;false;false;0;0;0;;; -31788;4;0;false;false;;;;;; -31792;1;0;false;false;0;0;0;;; -31793;4;0;false;false;;;;;; -31797;2;1;false;false;127;0;85;;; -31799;1;0;false;false;;;;;; -31800;15;0;false;false;0;0;0;;; -31815;1;0;false;false;;;;;; -31816;2;0;false;false;0;0;0;;; -31818;1;0;false;false;;;;;; -31819;4;1;false;false;127;0;85;;; -31823;1;0;false;false;0;0;0;;; -31824;1;0;false;false;;;;;; -31825;1;0;false;false;0;0;0;;; -31826;5;0;false;false;;;;;; -31831;6;0;false;false;0;0;0;;; -31837;14;0;false;false;42;0;255;;; -31851;2;0;false;false;0;0;0;;; -31853;5;0;false;false;;;;;; -31858;35;0;false;false;0;0;0;;; -31893;1;0;false;false;;;;;; -31894;21;0;false;false;0;0;0;;; -31915;5;0;false;false;;;;;; -31920;6;0;false;false;0;0;0;;; -31926;3;0;false;false;42;0;255;;; -31929;2;0;false;false;0;0;0;;; -31931;5;0;false;false;;;;;; -31936;1;0;false;false;0;0;0;;; -31937;4;0;false;false;;;;;; -31941;3;1;false;false;127;0;85;;; -31944;1;0;false;false;;;;;; -31945;1;0;false;false;0;0;0;;; -31946;3;1;false;false;127;0;85;;; -31949;1;0;false;false;;;;;; -31950;1;0;false;false;0;0;0;;; -31951;1;0;false;false;;;;;; -31952;1;0;false;false;0;0;0;;; -31953;1;0;false;false;;;;;; -31954;2;0;false;false;0;0;0;;; -31956;1;0;false;false;;;;;; -31957;1;0;false;false;0;0;0;;; -31958;1;0;false;false;;;;;; -31959;1;0;false;false;0;0;0;;; -31960;1;0;false;false;;;;;; -31961;14;0;false;false;0;0;0;;; -31975;1;0;false;false;;;;;; -31976;4;0;false;false;0;0;0;;; -31980;1;0;false;false;;;;;; -31981;1;0;false;false;0;0;0;;; -31982;7;0;false;false;;;;;; -31989;10;0;false;false;0;0;0;;; -31999;1;0;false;false;;;;;; -32000;5;0;false;false;0;0;0;;; -32005;1;0;false;false;;;;;; -32006;1;0;false;false;0;0;0;;; -32007;1;0;false;false;;;;;; -32008;10;0;false;false;0;0;0;;; -32018;5;0;false;false;;;;;; -32023;3;1;false;false;127;0;85;;; -32026;1;0;false;false;;;;;; -32027;5;0;false;false;0;0;0;;; -32032;1;0;false;false;;;;;; -32033;1;0;false;false;0;0;0;;; -32034;1;0;false;false;;;;;; -32035;11;0;false;false;0;0;0;;; -32046;1;0;false;false;;;;;; -32047;1;0;false;false;0;0;0;;; -32048;1;0;false;false;;;;;; -32049;11;0;false;false;0;0;0;;; -32060;5;0;false;false;;;;;; -32065;3;1;false;false;127;0;85;;; -32068;1;0;false;false;;;;;; -32069;3;0;false;false;0;0;0;;; -32072;1;0;false;false;;;;;; -32073;1;0;false;false;0;0;0;;; -32074;1;0;false;false;;;;;; -32075;5;0;false;false;0;0;0;;; -32080;1;0;false;false;;;;;; -32081;1;0;false;false;0;0;0;;; -32082;1;0;false;false;;;;;; -32083;13;0;false;false;0;0;0;;; -32096;5;0;false;false;;;;;; -32101;3;1;false;false;127;0;85;;; -32104;1;0;false;false;;;;;; -32105;11;0;false;false;0;0;0;;; -32116;5;0;false;false;;;;;; -32121;33;0;false;false;63;127;95;;; -32154;3;0;false;false;;;;;; -32157;2;1;false;false;127;0;85;;; -32159;1;0;false;false;;;;;; -32160;4;0;false;false;0;0;0;;; -32164;1;0;false;false;;;;;; -32165;1;0;false;false;0;0;0;;; -32166;1;0;false;false;;;;;; -32167;12;0;false;false;0;0;0;;; -32179;1;0;false;false;;;;;; -32180;1;0;false;false;0;0;0;;; -32181;6;0;false;false;;;;;; -32187;8;1;false;false;127;0;85;;; -32195;1;0;false;false;0;0;0;;; -32196;5;0;false;false;;;;;; -32201;1;0;false;false;0;0;0;;; -32202;5;0;false;false;;;;;; -32207;50;0;false;false;63;127;95;;; -32257;3;0;false;false;;;;;; -32260;2;1;false;false;127;0;85;;; -32262;1;0;false;false;;;;;; -32263;6;0;false;false;0;0;0;;; -32269;1;0;false;false;;;;;; -32270;2;0;false;false;0;0;0;;; -32272;1;0;false;false;;;;;; -32273;14;0;false;false;0;0;0;;; -32287;1;0;false;false;;;;;; -32288;1;0;false;false;0;0;0;;; -32289;6;0;false;false;;;;;; -32295;5;1;false;false;127;0;85;;; -32300;1;0;false;false;0;0;0;;; -32301;5;0;false;false;;;;;; -32306;1;0;false;false;0;0;0;;; -32307;5;0;false;false;;;;;; -32312;28;0;false;false;63;127;95;;; -32340;3;0;false;false;;;;;; -32343;2;1;false;false;127;0;85;;; -32345;1;0;false;false;;;;;; -32346;10;0;false;false;0;0;0;;; -32356;1;0;false;false;;;;;; -32357;1;0;false;false;0;0;0;;; -32358;1;0;false;false;;;;;; -32359;6;0;false;false;0;0;0;;; -32365;1;0;false;false;;;;;; -32366;1;0;false;false;0;0;0;;; -32367;7;0;false;false;;;;;; -32374;27;0;false;false;63;127;95;;; -32401;4;0;false;false;;;;;; -32405;61;0;false;false;63;127;95;;; -32466;4;0;false;false;;;;;; -32470;30;0;false;false;63;127;95;;; -32500;4;0;false;false;;;;;; -32504;11;0;false;false;0;0;0;;; -32515;1;0;false;false;;;;;; -32516;10;0;false;false;0;0;0;;; -32526;1;0;false;false;;;;;; -32527;7;0;false;false;0;0;0;;; -32534;6;0;false;false;;;;;; -32540;9;0;false;false;0;0;0;;; -32549;1;0;false;false;;;;;; -32550;1;0;false;false;0;0;0;;; -32551;1;0;false;false;;;;;; -32552;6;0;false;false;0;0;0;;; -32558;5;0;false;false;;;;;; -32563;1;0;false;false;0;0;0;;; -32564;5;0;false;false;;;;;; -32569;22;0;false;false;63;127;95;;; -32591;3;0;false;false;;;;;; -32594;10;0;false;false;0;0;0;;; -32604;1;0;false;false;;;;;; -32605;1;0;false;false;0;0;0;;; -32606;1;0;false;false;;;;;; -32607;31;0;false;false;0;0;0;;; -32638;1;0;false;false;;;;;; -32639;20;0;false;false;0;0;0;;; -32659;5;0;false;false;;;;;; -32664;6;0;false;false;0;0;0;;; -32670;7;0;false;false;42;0;255;;; -32677;2;0;false;false;0;0;0;;; -32679;5;0;false;false;;;;;; -32684;37;0;false;false;0;0;0;;; -32721;1;0;false;false;;;;;; -32722;21;0;false;false;0;0;0;;; -32743;5;0;false;false;;;;;; -32748;2;1;false;false;127;0;85;;; -32750;1;0;false;false;;;;;; -32751;11;0;false;false;0;0;0;;; -32762;1;0;false;false;;;;;; -32763;2;0;false;false;0;0;0;;; -32765;1;0;false;false;;;;;; -32766;19;0;false;false;0;0;0;;; -32785;1;0;false;false;;;;;; -32786;1;0;false;false;0;0;0;;; -32787;6;0;false;false;;;;;; -32793;6;0;false;false;0;0;0;;; -32799;13;0;false;false;42;0;255;;; -32812;2;0;false;false;0;0;0;;; -32814;6;0;false;false;;;;;; -32820;18;0;false;false;0;0;0;;; -32838;5;0;false;false;;;;;; -32843;1;0;false;false;0;0;0;;; -32844;5;0;false;false;;;;;; -32849;2;1;false;false;127;0;85;;; -32851;1;0;false;false;;;;;; -32852;17;0;false;false;0;0;0;;; -32869;1;0;false;false;;;;;; -32870;1;0;false;false;0;0;0;;; -32871;1;0;false;false;;;;;; -32872;9;0;false;false;0;0;0;;; -32881;1;0;false;false;;;;;; -32882;2;0;false;false;0;0;0;;; -32884;1;0;false;false;;;;;; -32885;2;0;false;false;0;0;0;;; -32887;1;0;false;false;;;;;; -32888;1;0;false;false;0;0;0;;; -32889;6;0;false;false;;;;;; -32895;6;0;false;false;0;0;0;;; -32901;5;0;false;false;42;0;255;;; -32906;2;0;false;false;0;0;0;;; -32908;6;0;false;false;;;;;; -32914;1;0;false;false;0;0;0;;; -32915;5;0;false;false;;;;;; -32920;2;1;false;false;127;0;85;;; -32922;1;0;false;false;;;;;; -32923;17;0;false;false;0;0;0;;; -32940;1;0;false;false;;;;;; -32941;1;0;false;false;0;0;0;;; -32942;1;0;false;false;;;;;; -32943;11;0;false;false;0;0;0;;; -32954;1;0;false;false;;;;;; -32955;2;0;false;false;0;0;0;;; -32957;1;0;false;false;;;;;; -32958;2;0;false;false;0;0;0;;; -32960;1;0;false;false;;;;;; -32961;1;0;false;false;0;0;0;;; -32962;6;0;false;false;;;;;; -32968;6;0;false;false;0;0;0;;; -32974;5;0;false;false;42;0;255;;; -32979;2;0;false;false;0;0;0;;; -32981;6;0;false;false;;;;;; -32987;1;0;false;false;0;0;0;;; -32988;5;0;false;false;;;;;; -32993;2;1;false;false;127;0;85;;; -32995;1;0;false;false;;;;;; -32996;17;0;false;false;0;0;0;;; -33013;1;0;false;false;;;;;; -33014;1;0;false;false;0;0;0;;; -33015;6;0;false;false;;;;;; -33021;6;0;false;false;0;0;0;;; -33027;6;0;false;false;42;0;255;;; -33033;2;0;false;false;0;0;0;;; -33035;5;0;false;false;;;;;; -33040;1;0;false;false;0;0;0;;; -33041;5;0;false;false;;;;;; -33046;2;1;false;false;127;0;85;;; -33048;1;0;false;false;;;;;; -33049;17;0;false;false;0;0;0;;; -33066;1;0;false;false;;;;;; -33067;1;0;false;false;0;0;0;;; -33068;6;0;false;false;;;;;; -33074;6;0;false;false;0;0;0;;; -33080;10;0;false;false;42;0;255;;; -33090;2;0;false;false;0;0;0;;; -33092;5;0;false;false;;;;;; -33097;1;0;false;false;0;0;0;;; -33098;5;0;false;false;;;;;; -33103;6;0;false;false;0;0;0;;; -33109;3;0;false;false;42;0;255;;; -33112;2;0;false;false;0;0;0;;; -33114;6;0;false;false;;;;;; -33120;62;0;false;false;63;127;95;;; -33182;3;0;false;false;;;;;; -33185;7;0;false;false;0;0;0;;; -33192;1;0;false;false;;;;;; -33193;1;0;false;false;0;0;0;;; -33194;1;0;false;false;;;;;; -33195;13;0;false;false;0;0;0;;; -33208;1;0;false;false;;;;;; -33209;15;0;false;false;0;0;0;;; -33224;5;0;false;false;;;;;; -33229;67;0;false;false;63;127;95;;; -33296;3;0;false;false;;;;;; -33299;7;0;false;false;0;0;0;;; -33306;1;0;false;false;;;;;; -33307;1;0;false;false;0;0;0;;; -33308;1;0;false;false;;;;;; -33309;17;0;false;false;0;0;0;;; -33326;1;0;false;false;;;;;; -33327;11;0;false;false;0;0;0;;; -33338;5;0;false;false;;;;;; -33343;11;0;false;false;0;0;0;;; -33354;1;0;false;false;;;;;; -33355;10;0;false;false;0;0;0;;; -33365;1;0;false;false;;;;;; -33366;9;0;false;false;0;0;0;;; -33375;5;0;false;false;;;;;; -33380;2;1;false;false;127;0;85;;; -33382;1;0;false;false;;;;;; -33383;17;0;false;false;0;0;0;;; -33400;1;0;false;false;;;;;; -33401;1;0;false;false;0;0;0;;; -33402;1;0;false;false;;;;;; -33403;9;0;false;false;0;0;0;;; -33412;1;0;false;false;;;;;; -33413;2;0;false;false;0;0;0;;; -33415;1;0;false;false;;;;;; -33416;2;0;false;false;0;0;0;;; -33418;1;0;false;false;;;;;; -33419;1;0;false;false;0;0;0;;; -33420;6;0;false;false;;;;;; -33426;6;0;false;false;0;0;0;;; -33432;6;0;false;false;42;0;255;;; -33438;2;0;false;false;0;0;0;;; -33440;6;0;false;false;;;;;; -33446;1;0;false;false;0;0;0;;; -33447;5;0;false;false;;;;;; -33452;2;1;false;false;127;0;85;;; -33454;1;0;false;false;;;;;; -33455;17;0;false;false;0;0;0;;; -33472;1;0;false;false;;;;;; -33473;1;0;false;false;0;0;0;;; -33474;1;0;false;false;;;;;; -33475;11;0;false;false;0;0;0;;; -33486;1;0;false;false;;;;;; -33487;2;0;false;false;0;0;0;;; -33489;1;0;false;false;;;;;; -33490;2;0;false;false;0;0;0;;; -33492;1;0;false;false;;;;;; -33493;1;0;false;false;0;0;0;;; -33494;6;0;false;false;;;;;; -33500;6;0;false;false;0;0;0;;; -33506;6;0;false;false;42;0;255;;; -33512;2;0;false;false;0;0;0;;; -33514;6;0;false;false;;;;;; -33520;1;0;false;false;0;0;0;;; -33521;5;0;false;false;;;;;; -33526;2;1;false;false;127;0;85;;; -33528;1;0;false;false;;;;;; -33529;17;0;false;false;0;0;0;;; -33546;1;0;false;false;;;;;; -33547;1;0;false;false;0;0;0;;; -33548;6;0;false;false;;;;;; -33554;6;0;false;false;0;0;0;;; -33560;7;0;false;false;42;0;255;;; -33567;2;0;false;false;0;0;0;;; -33569;5;0;false;false;;;;;; -33574;1;0;false;false;0;0;0;;; -33575;8;0;false;false;;;;;; -33583;2;1;false;false;127;0;85;;; -33585;1;0;false;false;;;;;; -33586;17;0;false;false;0;0;0;;; -33603;1;0;false;false;;;;;; -33604;1;0;false;false;0;0;0;;; -33605;6;0;false;false;;;;;; -33611;6;0;false;false;0;0;0;;; -33617;11;0;false;false;42;0;255;;; -33628;2;0;false;false;0;0;0;;; -33630;5;0;false;false;;;;;; -33635;1;0;false;false;0;0;0;;; -33636;5;0;false;false;;;;;; -33641;6;0;false;false;0;0;0;;; -33647;3;0;false;false;42;0;255;;; -33650;2;0;false;false;0;0;0;;; -33652;5;0;false;false;;;;;; -33657;9;0;false;false;0;0;0;;; -33666;1;0;false;false;;;;;; -33667;1;0;false;false;0;0;0;;; -33668;1;0;false;false;;;;;; -33669;8;0;false;false;0;0;0;;; -33677;4;0;false;false;;;;;; -33681;1;0;false;false;0;0;0;;; -33682;4;0;false;false;;;;;; -33686;47;0;false;false;63;127;95;;; -33733;2;0;false;false;;;;;; -33735;2;1;false;false;127;0;85;;; -33737;1;0;false;false;;;;;; -33738;10;0;false;false;0;0;0;;; -33748;1;0;false;false;;;;;; -33749;1;0;false;false;0;0;0;;; -33750;1;0;false;false;;;;;; -33751;14;0;false;false;0;0;0;;; -33765;1;0;false;false;;;;;; -33766;1;0;false;false;0;0;0;;; -33767;5;0;false;false;;;;;; -33772;11;0;false;false;0;0;0;;; -33783;1;0;false;false;;;;;; -33784;10;0;false;false;0;0;0;;; -33794;1;0;false;false;;;;;; -33795;15;0;false;false;0;0;0;;; -33810;4;0;false;false;;;;;; -33814;1;0;false;false;0;0;0;;; -33815;4;0;false;false;;;;;; -33819;2;1;false;false;127;0;85;;; -33821;1;0;false;false;;;;;; -33822;15;0;false;false;0;0;0;;; -33837;1;0;false;false;;;;;; -33838;2;0;false;false;0;0;0;;; -33840;1;0;false;false;;;;;; -33841;4;1;false;false;127;0;85;;; -33845;1;0;false;false;0;0;0;;; -33846;1;0;false;false;;;;;; -33847;1;0;false;false;0;0;0;;; -33848;5;0;false;false;;;;;; -33853;6;0;false;false;0;0;0;;; -33859;3;0;false;false;42;0;255;;; -33862;2;0;false;false;0;0;0;;; -33864;4;0;false;false;;;;;; -33868;1;0;false;false;0;0;0;;; -33869;3;0;false;false;;;;;; -33872;1;0;false;false;0;0;0;;; -33873;3;0;false;false;;;;;; -33876;1;0;false;false;0;0;0;;; -33877;3;0;false;false;;;;;; -33880;3;0;false;false;63;95;191;;; -33883;4;0;false;false;;;;;; -33887;1;0;false;false;63;95;191;;; -33888;1;0;false;false;;;;;; -33889;3;0;false;false;63;95;191;;; -33892;1;0;false;false;;;;;; -33893;6;0;false;false;127;127;159;;; -33899;10;0;false;false;63;95;191;;; -33909;7;0;false;false;127;127;159;;; -33916;1;0;false;false;;;;;; -33917;5;0;false;false;63;95;191;;; -33922;1;0;false;false;;;;;; -33923;2;0;false;false;63;95;191;;; -33925;1;0;false;false;;;;;; -33926;4;0;false;false;63;95;191;;; -33930;1;0;false;false;;;;;; -33931;2;0;false;false;63;95;191;;; -33933;1;0;false;false;;;;;; -33934;5;0;false;false;63;95;191;;; -33939;1;0;false;false;;;;;; -33940;6;0;false;false;63;95;191;;; -33946;1;0;false;false;;;;;; -33947;7;0;false;false;63;95;191;;; -33954;1;0;false;false;;;;;; -33955;2;0;false;false;63;95;191;;; -33957;4;0;false;false;;;;;; -33961;1;0;false;false;63;95;191;;; -33962;1;0;false;false;;;;;; -33963;1;0;false;false;63;95;191;;; -33964;1;0;false;false;;;;;; -33965;7;0;false;false;63;95;191;;; -33972;2;0;false;false;;;;;; -33974;5;0;false;false;63;95;191;;; -33979;1;0;false;false;;;;;; -33980;3;0;false;false;63;95;191;;; -33983;1;0;false;false;;;;;; -33984;7;0;false;false;63;95;191;;; -33991;1;0;false;false;;;;;; -33992;5;0;false;false;63;95;191;;; -33997;1;0;false;false;;;;;; -33998;3;0;false;false;63;95;191;;; -34001;1;0;false;false;;;;;; -34002;4;0;false;false;63;95;191;;; -34006;1;0;false;false;;;;;; -34007;6;0;false;false;63;95;191;;; -34013;1;0;false;false;;;;;; -34014;3;0;false;false;63;95;191;;; -34017;1;0;false;false;;;;;; -34018;2;0;false;false;63;95;191;;; -34020;1;0;false;false;;;;;; -34021;8;0;false;false;63;95;191;;; -34029;1;0;false;false;;;;;; -34030;2;0;false;false;63;95;191;;; -34032;1;0;false;false;;;;;; -34033;5;0;false;false;63;95;191;;; -34038;5;0;false;false;;;;;; -34043;1;0;false;false;63;95;191;;; -34044;1;0;false;false;;;;;; -34045;7;0;false;false;63;95;191;;; -34052;1;0;false;false;;;;;; -34053;6;0;false;false;63;95;191;;; -34059;1;0;false;false;;;;;; -34060;7;0;false;false;63;95;191;;; -34067;1;0;false;false;;;;;; -34068;3;0;false;false;63;95;191;;; -34071;1;0;false;false;;;;;; -34072;5;0;false;false;63;95;191;;; -34077;1;0;false;false;;;;;; -34078;3;0;false;false;63;95;191;;; -34081;1;0;false;false;;;;;; -34082;6;0;false;false;63;95;191;;; -34088;1;0;false;false;;;;;; -34089;2;0;false;false;63;95;191;;; -34091;1;0;false;false;;;;;; -34092;3;0;false;false;63;95;191;;; -34095;1;0;false;false;;;;;; -34096;7;0;false;false;63;95;191;;; -34103;1;0;false;false;;;;;; -34104;7;0;false;false;63;95;191;;; -34111;5;0;false;false;;;;;; -34116;1;0;false;false;63;95;191;;; -34117;1;0;false;false;;;;;; -34118;6;0;false;false;63;95;191;;; -34124;1;0;false;false;;;;;; -34125;6;0;false;false;63;95;191;;; -34131;1;0;false;false;;;;;; -34132;9;0;false;false;63;95;191;;; -34141;4;0;false;false;;;;;; -34145;1;0;false;false;63;95;191;;; -34146;1;0;false;false;;;;;; -34147;3;0;false;false;127;127;159;;; -34150;4;0;false;false;;;;;; -34154;1;0;false;false;63;95;191;;; -34155;1;0;false;false;;;;;; -34156;4;0;false;false;127;127;159;;; -34160;5;0;false;false;63;95;191;;; -34165;4;0;false;false;127;127;159;;; -34169;1;0;false;false;;;;;; -34170;6;0;false;false;127;127;159;;; -34176;10;0;false;false;63;95;191;;; -34186;7;0;false;false;127;127;159;;; -34193;1;0;false;false;;;;;; -34194;2;0;false;false;63;95;191;;; -34196;1;0;false;false;;;;;; -34197;10;0;false;false;63;95;191;;; -34207;1;0;false;false;;;;;; -34208;2;0;false;false;63;95;191;;; -34210;1;0;false;false;;;;;; -34211;6;0;false;false;63;95;191;;; -34217;1;0;false;false;;;;;; -34218;1;0;false;false;63;95;191;;; -34219;1;0;false;false;;;;;; -34220;5;0;false;false;63;95;191;;; -34225;1;0;false;false;;;;;; -34226;6;0;false;false;63;95;191;;; -34232;1;0;false;false;;;;;; -34233;4;0;false;false;63;95;191;;; -34237;1;0;false;false;;;;;; -34238;5;0;false;false;63;95;191;;; -34243;1;0;false;false;;;;;; -34244;7;0;false;false;63;95;191;;; -34251;5;0;false;false;;;;;; -34256;1;0;false;false;63;95;191;;; -34257;1;0;false;false;;;;;; -34258;3;0;false;false;63;95;191;;; -34261;1;0;false;false;;;;;; -34262;4;0;false;false;63;95;191;;; -34266;1;0;false;false;;;;;; -34267;7;0;false;false;63;95;191;;; -34274;5;0;false;false;;;;;; -34279;2;0;false;false;63;95;191;;; -34281;3;0;false;false;;;;;; -34284;5;1;false;false;127;0;85;;; -34289;1;0;false;false;;;;;; -34290;10;0;false;false;0;0;0;;; -34300;1;0;false;false;;;;;; -34301;1;0;false;false;0;0;0;;; -34302;4;0;false;false;;;;;; -34306;7;1;false;false;127;0;85;;; -34313;1;0;false;false;;;;;; -34314;12;0;false;false;0;0;0;;; -34326;1;0;false;false;;;;;; -34327;7;0;false;false;0;0;0;;; -34334;4;0;false;false;;;;;; -34338;7;1;false;false;127;0;85;;; -34345;1;0;false;false;;;;;; -34346;3;1;false;false;127;0;85;;; -34349;1;0;false;false;;;;;; -34350;12;0;false;false;0;0;0;;; -34362;1;0;false;false;;;;;; -34363;51;0;false;false;63;127;95;;; -34414;2;0;false;false;;;;;; -34416;7;1;false;false;127;0;85;;; -34423;1;0;false;false;;;;;; -34424;3;1;false;false;127;0;85;;; -34427;1;0;false;false;;;;;; -34428;10;0;false;false;0;0;0;;; -34438;2;0;false;false;;;;;; -34440;52;0;false;false;63;127;95;;; -34492;9;0;false;false;;;;;; -34501;52;0;false;false;63;127;95;;; -34553;2;0;false;false;;;;;; -34555;7;1;false;false;127;0;85;;; -34562;1;0;false;false;;;;;; -34563;7;1;false;false;127;0;85;;; -34570;1;0;false;false;;;;;; -34571;8;0;false;false;0;0;0;;; -34579;1;0;false;false;;;;;; -34580;1;0;false;false;0;0;0;;; -34581;1;0;false;false;;;;;; -34582;5;1;false;false;127;0;85;;; -34587;1;0;false;false;0;0;0;;; -34588;6;0;false;false;;;;;; -34594;3;0;false;false;63;95;191;;; -34597;4;0;false;false;;;;;; -34601;1;0;false;false;63;95;191;;; -34602;1;0;false;false;;;;;; -34603;7;0;false;false;63;95;191;;; -34610;1;0;false;false;;;;;; -34611;1;0;false;false;63;95;191;;; -34612;1;0;false;false;;;;;; -34613;6;0;false;false;63;95;191;;; -34619;1;0;false;false;;;;;; -34620;4;0;false;false;63;95;191;;; -34624;1;0;false;false;;;;;; -34625;6;0;false;false;63;95;191;;; -34631;1;0;false;false;;;;;; -34632;7;0;false;false;63;95;191;;; -34639;1;0;false;false;;;;;; -34640;8;0;false;false;63;95;191;;; -34648;1;0;false;false;;;;;; -34649;2;0;false;false;63;95;191;;; -34651;1;0;false;false;;;;;; -34652;6;0;false;false;63;95;191;;; -34658;1;0;false;false;;;;;; -34659;7;0;false;false;63;95;191;;; -34666;4;0;false;false;;;;;; -34670;1;0;false;false;63;95;191;;; -34671;1;0;false;false;;;;;; -34672;2;0;false;false;63;95;191;;; -34674;1;0;false;false;;;;;; -34675;3;0;false;false;63;95;191;;; -34678;1;0;false;false;;;;;; -34679;9;0;false;false;63;95;191;;; -34688;2;0;false;false;;;;;; -34690;6;0;false;false;127;127;159;;; -34696;5;0;false;false;63;95;191;;; -34701;7;0;false;false;127;127;159;;; -34708;1;0;false;false;;;;;; -34709;3;0;false;false;63;95;191;;; -34712;1;0;false;false;;;;;; -34713;6;0;false;false;127;127;159;;; -34719;6;0;false;false;63;95;191;;; -34725;7;0;false;false;127;127;159;;; -34732;1;0;false;false;;;;;; -34733;3;0;false;false;63;95;191;;; -34736;1;0;false;false;;;;;; -34737;2;0;false;false;63;95;191;;; -34739;1;0;false;false;;;;;; -34740;3;0;false;false;63;95;191;;; -34743;1;0;false;false;;;;;; -34744;2;0;false;false;63;95;191;;; -34746;1;0;false;false;;;;;; -34747;7;0;false;false;63;95;191;;; -34754;1;0;false;false;;;;;; -34755;7;0;false;false;63;95;191;;; -34762;1;0;false;false;;;;;; -34763;6;0;false;false;63;95;191;;; -34769;4;0;false;false;;;;;; -34773;1;0;false;false;63;95;191;;; -34774;1;0;false;false;;;;;; -34775;3;0;false;false;127;127;159;;; -34778;4;0;false;false;;;;;; -34782;1;0;false;false;63;95;191;;; -34783;4;0;false;false;;;;;; -34787;1;0;false;false;63;95;191;;; -34788;1;0;false;false;;;;;; -34789;7;1;false;false;127;159;191;;; -34796;5;0;false;false;63;95;191;;; -34801;1;0;false;false;;;;;; -34802;5;0;false;false;63;95;191;;; -34807;1;0;false;false;;;;;; -34808;6;0;false;false;63;95;191;;; -34814;1;0;false;false;;;;;; -34815;2;0;false;false;63;95;191;;; -34817;1;0;false;false;;;;;; -34818;7;0;false;false;63;95;191;;; -34825;1;0;false;false;;;;;; -34826;2;0;false;false;63;95;191;;; -34828;1;0;false;false;;;;;; -34829;6;0;false;false;63;95;191;;; -34835;1;0;false;false;;;;;; -34836;1;0;false;false;63;95;191;;; -34837;1;0;false;false;;;;;; -34838;5;0;false;false;63;95;191;;; -34843;1;0;false;false;;;;;; -34844;4;0;false;false;63;95;191;;; -34848;1;0;false;false;;;;;; -34849;9;0;false;false;63;95;191;;; -34858;1;0;false;false;;;;;; -34859;2;0;false;false;63;95;191;;; -34861;1;0;false;false;;;;;; -34862;8;0;false;false;63;95;191;;; -34870;4;0;false;false;;;;;; -34874;1;0;false;false;63;95;191;;; -34875;1;0;false;false;;;;;; -34876;7;1;false;false;127;159;191;;; -34883;6;0;false;false;63;95;191;;; -34889;1;0;false;false;;;;;; -34890;6;0;false;false;63;95;191;;; -34896;1;0;false;false;;;;;; -34897;2;0;false;false;63;95;191;;; -34899;1;0;false;false;;;;;; -34900;7;0;false;false;63;95;191;;; -34907;1;0;false;false;;;;;; -34908;2;0;false;false;63;95;191;;; -34910;1;0;false;false;;;;;; -34911;5;0;false;false;63;95;191;;; -34916;4;0;false;false;;;;;; -34920;2;0;false;false;63;95;191;;; -34922;3;0;false;false;;;;;; -34925;6;1;false;false;127;0;85;;; -34931;1;0;false;false;;;;;; -34932;11;0;false;false;0;0;0;;; -34943;3;1;false;false;127;0;85;;; -34946;1;0;false;false;;;;;; -34947;6;0;false;false;0;0;0;;; -34953;1;0;false;false;;;;;; -34954;3;1;false;false;127;0;85;;; -34957;1;0;false;false;;;;;; -34958;7;0;false;false;0;0;0;;; -34965;1;0;false;false;;;;;; -34966;1;0;false;false;0;0;0;;; -34967;4;0;false;false;;;;;; -34971;6;0;false;false;0;0;0;;; -34977;1;0;false;false;;;;;; -34978;1;0;false;false;0;0;0;;; -34979;1;0;false;false;;;;;; -34980;3;1;false;false;127;0;85;;; -34983;1;0;false;false;;;;;; -34984;21;0;false;false;0;0;0;;; -35005;4;0;false;false;;;;;; -35009;11;0;false;false;0;0;0;;; -35020;1;0;false;false;;;;;; -35021;1;0;false;false;0;0;0;;; -35022;1;0;false;false;;;;;; -35023;6;0;false;false;0;0;0;;; -35029;4;0;false;false;;;;;; -35033;9;0;false;false;0;0;0;;; -35042;1;0;false;false;;;;;; -35043;1;0;false;false;0;0;0;;; -35044;1;0;false;false;;;;;; -35045;5;0;false;false;0;0;0;;; -35050;1;0;false;false;;;;;; -35051;1;0;false;false;0;0;0;;; -35052;1;0;false;false;;;;;; -35053;7;0;false;false;0;0;0;;; -35060;3;0;false;false;;;;;; -35063;1;0;false;false;0;0;0;;; -35064;3;0;false;false;;;;;; -35067;3;0;false;false;63;95;191;;; -35070;4;0;false;false;;;;;; -35074;1;0;false;false;63;95;191;;; -35075;1;0;false;false;;;;;; -35076;6;0;false;false;63;95;191;;; -35082;1;0;false;false;;;;;; -35083;3;0;false;false;63;95;191;;; -35086;1;0;false;false;;;;;; -35087;7;0;false;false;63;95;191;;; -35094;1;0;false;false;;;;;; -35095;4;0;false;false;63;95;191;;; -35099;1;0;false;false;;;;;; -35100;6;0;false;false;63;95;191;;; -35106;1;0;false;false;;;;;; -35107;2;0;false;false;63;95;191;;; -35109;1;0;false;false;;;;;; -35110;4;0;false;false;63;95;191;;; -35114;1;0;false;false;;;;;; -35115;7;0;false;false;63;95;191;;; -35122;1;0;false;false;;;;;; -35123;3;0;false;false;63;95;191;;; -35126;1;0;false;false;;;;;; -35127;2;0;false;false;63;95;191;;; -35129;1;0;false;false;;;;;; -35130;8;0;false;false;63;95;191;;; -35138;4;0;false;false;;;;;; -35142;1;0;false;false;63;95;191;;; -35143;1;0;false;false;;;;;; -35144;3;0;false;false;127;127;159;;; -35147;5;0;false;false;63;95;191;;; -35152;4;0;false;false;127;127;159;;; -35156;2;0;false;false;;;;;; -35158;6;0;false;false;127;127;159;;; -35164;10;0;false;false;63;95;191;;; -35174;7;0;false;false;127;127;159;;; -35181;1;0;false;false;;;;;; -35182;2;0;false;false;63;95;191;;; -35184;1;0;false;false;;;;;; -35185;3;0;false;false;63;95;191;;; -35188;1;0;false;false;;;;;; -35189;10;0;false;false;63;95;191;;; -35199;1;0;false;false;;;;;; -35200;2;0;false;false;63;95;191;;; -35202;1;0;false;false;;;;;; -35203;6;0;false;false;63;95;191;;; -35209;1;0;false;false;;;;;; -35210;1;0;false;false;63;95;191;;; -35211;1;0;false;false;;;;;; -35212;5;0;false;false;63;95;191;;; -35217;1;0;false;false;;;;;; -35218;6;0;false;false;63;95;191;;; -35224;1;0;false;false;;;;;; -35225;6;0;false;false;63;95;191;;; -35231;4;0;false;false;;;;;; -35235;1;0;false;false;63;95;191;;; -35236;1;0;false;false;;;;;; -35237;3;0;false;false;63;95;191;;; -35240;1;0;false;false;;;;;; -35241;6;0;false;false;63;95;191;;; -35247;1;0;false;false;;;;;; -35248;2;0;false;false;63;95;191;;; -35250;1;0;false;false;;;;;; -35251;7;0;false;false;63;95;191;;; -35258;4;0;false;false;;;;;; -35262;2;0;false;false;63;95;191;;; -35264;3;0;false;false;;;;;; -35267;6;1;false;false;127;0;85;;; -35273;1;0;false;false;;;;;; -35274;4;1;false;false;127;0;85;;; -35278;1;0;false;false;;;;;; -35279;7;0;false;false;0;0;0;;; -35286;1;0;false;false;;;;;; -35287;1;0;false;false;0;0;0;;; -35288;4;0;false;false;;;;;; -35292;2;1;false;false;127;0;85;;; -35294;1;0;false;false;;;;;; -35295;11;0;false;false;0;0;0;;; -35306;1;0;false;false;;;;;; -35307;1;0;false;false;0;0;0;;; -35308;5;0;false;false;;;;;; -35313;8;0;false;false;0;0;0;;; -35321;1;0;false;false;;;;;; -35322;1;0;false;false;0;0;0;;; -35323;1;0;false;false;;;;;; -35324;4;1;false;false;127;0;85;;; -35328;1;0;false;false;0;0;0;;; -35329;4;0;false;false;;;;;; -35333;1;0;false;false;0;0;0;;; -35334;3;0;false;false;;;;;; -35337;1;0;false;false;0;0;0;;; -35338;3;0;false;false;;;;;; -35341;3;0;false;false;63;95;191;;; -35344;5;0;false;false;;;;;; -35349;1;0;false;false;63;95;191;;; -35350;1;0;false;false;;;;;; -35351;7;0;false;false;63;95;191;;; -35358;1;0;false;false;;;;;; -35359;3;0;false;false;63;95;191;;; -35362;1;0;false;false;;;;;; -35363;6;0;false;false;63;95;191;;; -35369;1;0;false;false;;;;;; -35370;2;0;false;false;63;95;191;;; -35372;1;0;false;false;;;;;; -35373;10;0;false;false;63;95;191;;; -35383;1;0;false;false;;;;;; -35384;2;0;false;false;63;95;191;;; -35386;1;0;false;false;;;;;; -35387;6;0;false;false;63;95;191;;; -35393;4;0;false;false;;;;;; -35397;1;0;false;false;63;95;191;;; -35398;1;0;false;false;;;;;; -35399;8;1;false;false;127;159;191;;; -35407;3;0;false;false;63;95;191;;; -35410;1;0;false;false;;;;;; -35411;7;0;false;false;63;95;191;;; -35418;1;0;false;false;;;;;; -35419;6;0;false;false;63;95;191;;; -35425;1;0;false;false;;;;;; -35426;2;0;false;false;63;95;191;;; -35428;1;0;false;false;;;;;; -35429;10;0;false;false;63;95;191;;; -35439;1;0;false;false;;;;;; -35440;2;0;false;false;63;95;191;;; -35442;1;0;false;false;;;;;; -35443;5;0;false;false;63;95;191;;; -35448;4;0;false;false;;;;;; -35452;2;0;false;false;63;95;191;;; -35454;3;0;false;false;;;;;; -35457;6;1;false;false;127;0;85;;; -35463;1;0;false;false;;;;;; -35464;3;1;false;false;127;0;85;;; -35467;1;0;false;false;;;;;; -35468;14;0;false;false;0;0;0;;; -35482;1;0;false;false;;;;;; -35483;1;0;false;false;0;0;0;;; -35484;4;0;false;false;;;;;; -35488;6;1;false;false;127;0;85;;; -35494;1;0;false;false;;;;;; -35495;9;0;false;false;0;0;0;;; -35504;1;0;false;false;;;;;; -35505;1;0;false;false;0;0;0;;; -35506;1;0;false;false;;;;;; -35507;12;0;false;false;0;0;0;;; -35519;3;0;false;false;;;;;; -35522;1;0;false;false;0;0;0;;; -35523;4;0;false;false;;;;;; -35527;3;0;false;false;63;95;191;;; -35530;5;0;false;false;;;;;; -35535;1;0;false;false;63;95;191;;; -35536;1;0;false;false;;;;;; -35537;7;0;false;false;63;95;191;;; -35544;1;0;false;false;;;;;; -35545;3;0;false;false;63;95;191;;; -35548;1;0;false;false;;;;;; -35549;6;0;false;false;63;95;191;;; -35555;1;0;false;false;;;;;; -35556;5;0;false;false;63;95;191;;; -35561;1;0;false;false;;;;;; -35562;7;0;false;false;63;95;191;;; -35569;1;0;false;false;;;;;; -35570;7;0;false;false;63;95;191;;; -35577;1;0;false;false;;;;;; -35578;1;0;false;false;63;95;191;;; -35579;1;0;false;false;;;;;; -35580;5;0;false;false;63;95;191;;; -35585;1;0;false;false;;;;;; -35586;4;0;false;false;63;95;191;;; -35590;1;0;false;false;;;;;; -35591;3;0;false;false;63;95;191;;; -35594;1;0;false;false;;;;;; -35595;5;0;false;false;63;95;191;;; -35600;1;0;false;false;;;;;; -35601;2;0;false;false;63;95;191;;; -35603;5;0;false;false;;;;;; -35608;1;0;false;false;63;95;191;;; -35609;1;0;false;false;;;;;; -35610;3;0;false;false;63;95;191;;; -35613;1;0;false;false;;;;;; -35614;6;0;false;false;63;95;191;;; -35620;1;0;false;false;;;;;; -35621;5;0;false;false;63;95;191;;; -35626;1;0;false;false;;;;;; -35627;4;0;false;false;63;95;191;;; -35631;1;0;false;false;;;;;; -35632;2;0;false;false;63;95;191;;; -35634;1;0;false;false;;;;;; -35635;5;0;false;false;63;95;191;;; -35640;1;0;false;false;;;;;; -35641;7;0;false;false;63;95;191;;; -35648;1;0;false;false;;;;;; -35649;6;0;false;false;63;95;191;;; -35655;4;0;false;false;;;;;; -35659;1;0;false;false;63;95;191;;; -35660;1;0;false;false;;;;;; -35661;8;1;false;false;127;159;191;;; -35669;3;0;false;false;63;95;191;;; -35672;1;0;false;false;;;;;; -35673;7;0;false;false;63;95;191;;; -35680;1;0;false;false;;;;;; -35681;6;0;false;false;63;95;191;;; -35687;1;0;false;false;;;;;; -35688;5;0;false;false;63;95;191;;; -35693;1;0;false;false;;;;;; -35694;7;0;false;false;63;95;191;;; -35701;1;0;false;false;;;;;; -35702;6;0;false;false;63;95;191;;; -35708;4;0;false;false;;;;;; -35712;2;0;false;false;63;95;191;;; -35714;3;0;false;false;;;;;; -35717;6;1;false;false;127;0;85;;; -35723;1;0;false;false;;;;;; -35724;3;1;false;false;127;0;85;;; -35727;1;0;false;false;;;;;; -35728;10;0;false;false;0;0;0;;; -35738;1;0;false;false;;;;;; -35739;1;0;false;false;0;0;0;;; -35740;4;0;false;false;;;;;; -35744;6;1;false;false;127;0;85;;; -35750;1;0;false;false;;;;;; -35751;12;0;false;false;0;0;0;;; -35763;3;0;false;false;;;;;; -35766;1;0;false;false;0;0;0;;; -35767;3;0;false;false;;;;;; -35770;3;0;false;false;63;95;191;;; -35773;4;0;false;false;;;;;; -35777;1;0;false;false;63;95;191;;; -35778;1;0;false;false;;;;;; -35779;7;0;false;false;63;95;191;;; -35786;1;0;false;false;;;;;; -35787;7;0;false;false;63;95;191;;; -35794;1;0;false;false;;;;;; -35795;3;0;false;false;63;95;191;;; -35798;1;0;false;false;;;;;; -35799;6;0;false;false;63;95;191;;; -35805;1;0;false;false;;;;;; -35806;2;0;false;false;63;95;191;;; -35808;1;0;false;false;;;;;; -35809;7;0;false;false;63;95;191;;; -35816;4;0;false;false;;;;;; -35820;1;0;false;false;63;95;191;;; -35821;1;0;false;false;;;;;; -35822;8;1;false;false;127;159;191;;; -35830;1;0;false;false;63;95;191;;; -35831;1;0;false;false;;;;;; -35832;7;0;false;false;63;95;191;;; -35839;1;0;false;false;;;;;; -35840;10;0;false;false;63;95;191;;; -35850;1;0;false;false;;;;;; -35851;7;0;false;false;63;95;191;;; -35858;1;0;false;false;;;;;; -35859;2;0;false;false;63;95;191;;; -35861;1;0;false;false;;;;;; -35862;3;0;false;false;63;95;191;;; -35865;1;0;false;false;;;;;; -35866;3;0;false;false;63;95;191;;; -35869;1;0;false;false;;;;;; -35870;6;0;false;false;63;95;191;;; -35876;1;0;false;false;;;;;; -35877;2;0;false;false;63;95;191;;; -35879;1;0;false;false;;;;;; -35880;6;0;false;false;63;95;191;;; -35886;4;0;false;false;;;;;; -35890;2;0;false;false;63;95;191;;; -35892;3;0;false;false;;;;;; -35895;6;1;false;false;127;0;85;;; -35901;1;0;false;false;;;;;; -35902;7;1;false;false;127;0;85;;; -35909;1;0;false;false;;;;;; -35910;10;0;false;false;0;0;0;;; -35920;1;0;false;false;;;;;; -35921;1;0;false;false;0;0;0;;; -35922;4;0;false;false;;;;;; -35926;6;1;false;false;127;0;85;;; -35932;1;0;false;false;;;;;; -35933;9;0;false;false;0;0;0;;; -35942;3;0;false;false;;;;;; -35945;1;0;false;false;0;0;0;;; -35946;3;0;false;false;;;;;; -35949;3;0;false;false;63;95;191;;; -35952;4;0;false;false;;;;;; -35956;1;0;false;false;63;95;191;;; -35957;1;0;false;false;;;;;; -35958;7;0;false;false;63;95;191;;; -35965;1;0;false;false;;;;;; -35966;3;0;false;false;63;95;191;;; -35969;1;0;false;false;;;;;; -35970;7;0;false;false;63;95;191;;; -35977;2;0;false;false;;;;;; -35979;6;0;false;false;127;127;159;;; -35985;7;0;false;false;63;95;191;;; -35992;7;0;false;false;127;127;159;;; -35999;1;0;false;false;;;;;; -36000;4;0;false;false;63;95;191;;; -36004;1;0;false;false;;;;;; -36005;2;0;false;false;63;95;191;;; -36007;1;0;false;false;;;;;; -36008;6;0;false;false;63;95;191;;; -36014;1;0;false;false;;;;;; -36015;6;0;false;false;63;95;191;;; -36021;1;0;false;false;;;;;; -36022;6;0;false;false;127;127;159;;; -36028;10;0;false;false;63;95;191;;; -36038;7;0;false;false;127;127;159;;; -36045;5;0;false;false;;;;;; -36050;1;0;false;false;63;95;191;;; -36051;1;0;false;false;;;;;; -36052;2;0;false;false;63;95;191;;; -36054;1;0;false;false;;;;;; -36055;10;0;false;false;63;95;191;;; -36065;1;0;false;false;;;;;; -36066;2;0;false;false;63;95;191;;; -36068;1;0;false;false;;;;;; -36069;6;0;false;false;63;95;191;;; -36075;1;0;false;false;;;;;; -36076;1;0;false;false;63;95;191;;; -36077;1;0;false;false;;;;;; -36078;5;0;false;false;63;95;191;;; -36083;1;0;false;false;;;;;; -36084;7;0;false;false;63;95;191;;; -36091;4;0;false;false;;;;;; -36095;1;0;false;false;63;95;191;;; -36096;4;0;false;false;;;;;; -36100;1;0;false;false;63;95;191;;; -36101;1;0;false;false;;;;;; -36102;8;1;false;false;127;159;191;;; -36110;3;0;false;false;63;95;191;;; -36113;1;0;false;false;;;;;; -36114;6;0;false;false;63;95;191;;; -36120;4;0;false;false;;;;;; -36124;2;0;false;false;63;95;191;;; -36126;3;0;false;false;;;;;; -36129;6;1;false;false;127;0;85;;; -36135;1;0;false;false;;;;;; -36136;6;0;false;false;0;0;0;;; -36142;1;0;false;false;;;;;; -36143;10;0;false;false;0;0;0;;; -36153;1;0;false;false;;;;;; -36154;1;0;false;false;0;0;0;;; -36155;4;0;false;false;;;;;; -36159;6;1;false;false;127;0;85;;; -36165;1;0;false;false;;;;;; -36166;18;0;false;false;0;0;0;;; -36184;3;0;false;false;;;;;; -36187;1;0;false;false;0;0;0;;; -36188;3;0;false;false;;;;;; -36191;3;0;false;false;63;95;191;;; -36194;4;0;false;false;;;;;; -36198;1;0;false;false;63;95;191;;; -36199;1;0;false;false;;;;;; -36200;7;0;false;false;63;95;191;;; -36207;1;0;false;false;;;;;; -36208;3;0;false;false;63;95;191;;; -36211;1;0;false;false;;;;;; -36212;5;0;false;false;63;95;191;;; -36217;1;0;false;false;;;;;; -36218;6;0;false;false;63;95;191;;; -36224;1;0;false;false;;;;;; -36225;2;0;false;false;63;95;191;;; -36227;1;0;false;false;;;;;; -36228;3;0;false;false;63;95;191;;; -36231;1;0;false;false;;;;;; -36232;5;0;false;false;63;95;191;;; -36237;4;0;false;false;;;;;; -36241;2;0;false;false;63;95;191;;; -36243;3;0;false;false;;;;;; -36246;4;1;false;false;127;0;85;;; -36250;1;0;false;false;;;;;; -36251;12;0;false;false;0;0;0;;; -36263;1;0;false;false;;;;;; -36264;7;0;false;false;0;0;0;;; -36271;1;0;false;false;;;;;; -36272;1;0;false;false;0;0;0;;; -36273;4;0;false;false;;;;;; -36277;22;0;false;false;0;0;0;;; -36299;3;0;false;false;;;;;; -36302;1;0;false;false;0;0;0;;; -36303;4;0;false;false;;;;;; -36307;3;0;false;false;63;95;191;;; -36310;4;0;false;false;;;;;; -36314;1;0;false;false;63;95;191;;; -36315;1;0;false;false;;;;;; -36316;7;0;false;false;63;95;191;;; -36323;1;0;false;false;;;;;; -36324;3;0;false;false;63;95;191;;; -36327;1;0;false;false;;;;;; -36328;5;0;false;false;63;95;191;;; -36333;1;0;false;false;;;;;; -36334;6;0;false;false;63;95;191;;; -36340;1;0;false;false;;;;;; -36341;2;0;false;false;63;95;191;;; -36343;1;0;false;false;;;;;; -36344;3;0;false;false;63;95;191;;; -36347;1;0;false;false;;;;;; -36348;4;0;false;false;63;95;191;;; -36352;1;0;false;false;;;;;; -36353;2;0;false;false;63;95;191;;; -36355;1;0;false;false;;;;;; -36356;3;0;false;false;63;95;191;;; -36359;1;0;false;false;;;;;; -36360;9;0;false;false;63;95;191;;; -36369;1;0;false;false;;;;;; -36370;7;0;false;false;63;95;191;;; -36377;4;0;false;false;;;;;; -36381;1;0;false;false;63;95;191;;; -36382;1;0;false;false;;;;;; -36383;2;0;false;false;63;95;191;;; -36385;1;0;false;false;;;;;; -36386;7;0;false;false;63;95;191;;; -36393;1;0;false;false;;;;;; -36394;2;0;false;false;63;95;191;;; -36396;1;0;false;false;;;;;; -36397;8;0;false;false;63;95;191;;; -36405;1;0;false;false;;;;;; -36406;2;0;false;false;63;95;191;;; -36408;1;0;false;false;;;;;; -36409;8;0;false;false;63;95;191;;; -36417;1;0;false;false;;;;;; -36418;14;0;false;false;63;95;191;;; -36432;4;0;false;false;;;;;; -36436;1;0;false;false;63;95;191;;; -36437;1;0;false;false;;;;;; -36438;3;0;false;false;127;127;159;;; -36441;4;0;false;false;;;;;; -36445;1;0;false;false;63;95;191;;; -36446;4;0;false;false;;;;;; -36450;1;0;false;false;63;95;191;;; -36451;1;0;false;false;;;;;; -36452;7;1;false;false;127;159;191;;; -36459;6;0;false;false;63;95;191;;; -36465;1;0;false;false;;;;;; -36466;4;0;false;false;63;95;191;;; -36470;1;0;false;false;;;;;; -36471;2;0;false;false;63;95;191;;; -36473;1;0;false;false;;;;;; -36474;6;0;false;false;63;95;191;;; -36480;4;0;false;false;;;;;; -36484;1;0;false;false;63;95;191;;; -36485;1;0;false;false;;;;;; -36486;7;1;false;false;127;159;191;;; -36493;6;0;false;false;63;95;191;;; -36499;1;0;false;false;;;;;; -36500;6;0;false;false;63;95;191;;; -36506;1;0;false;false;;;;;; -36507;2;0;false;false;63;95;191;;; -36509;1;0;false;false;;;;;; -36510;3;0;false;false;63;95;191;;; -36513;1;0;false;false;;;;;; -36514;8;0;false;false;63;95;191;;; -36522;1;0;false;false;;;;;; -36523;4;0;false;false;63;95;191;;; -36527;1;0;false;false;;;;;; -36528;2;0;false;false;63;95;191;;; -36530;1;0;false;false;;;;;; -36531;6;0;false;false;63;95;191;;; -36537;1;0;false;false;;;;;; -36538;8;0;false;false;63;95;191;;; -36546;1;0;false;false;;;;;; -36547;3;0;false;false;63;95;191;;; -36550;4;0;false;false;;;;;; -36554;2;0;false;false;63;95;191;;; -36556;3;0;false;false;;;;;; -36559;4;1;false;false;127;0;85;;; -36563;1;0;false;false;;;;;; -36564;12;0;false;false;0;0;0;;; -36576;1;0;false;false;;;;;; -36577;7;0;false;false;0;0;0;;; -36584;1;0;false;false;;;;;; -36585;3;1;false;false;127;0;85;;; -36588;1;0;false;false;;;;;; -36589;7;0;false;false;0;0;0;;; -36596;1;0;false;false;;;;;; -36597;1;0;false;false;0;0;0;;; -36598;4;0;false;false;;;;;; -36602;2;1;false;false;127;0;85;;; -36604;1;0;false;false;;;;;; -36605;7;0;false;false;0;0;0;;; -36612;1;0;false;false;;;;;; -36613;1;0;false;false;0;0;0;;; -36614;1;0;false;false;;;;;; -36615;1;0;false;false;0;0;0;;; -36616;1;0;false;false;;;;;; -36617;2;0;false;false;0;0;0;;; -36619;1;0;false;false;;;;;; -36620;6;0;false;false;0;0;0;;; -36626;1;0;false;false;;;;;; -36627;1;0;false;false;0;0;0;;; -36628;1;0;false;false;;;;;; -36629;16;0;false;false;0;0;0;;; -36645;1;0;false;false;;;;;; -36646;1;0;false;false;0;0;0;;; -36647;5;0;false;false;;;;;; -36652;6;1;false;false;127;0;85;;; -36658;1;0;false;false;0;0;0;;; -36659;4;0;false;false;;;;;; -36663;1;0;false;false;0;0;0;;; -36664;4;0;false;false;;;;;; -36668;21;0;false;false;0;0;0;;; -36689;1;0;false;false;;;;;; -36690;8;0;false;false;0;0;0;;; -36698;3;0;false;false;;;;;; -36701;1;0;false;false;0;0;0;;; -36702;4;0;false;false;;;;;; -36706;3;0;false;false;63;95;191;;; -36709;4;0;false;false;;;;;; -36713;1;0;false;false;63;95;191;;; -36714;1;0;false;false;;;;;; -36715;7;0;false;false;63;95;191;;; -36722;1;0;false;false;;;;;; -36723;3;0;false;false;63;95;191;;; -36726;1;0;false;false;;;;;; -36727;5;0;false;false;63;95;191;;; -36732;1;0;false;false;;;;;; -36733;3;0;false;false;63;95;191;;; -36736;1;0;false;false;;;;;; -36737;2;0;false;false;63;95;191;;; -36739;1;0;false;false;;;;;; -36740;3;0;false;false;63;95;191;;; -36743;1;0;false;false;;;;;; -36744;5;0;false;false;63;95;191;;; -36749;4;0;false;false;;;;;; -36753;2;0;false;false;63;95;191;;; -36755;3;0;false;false;;;;;; -36758;4;1;false;false;127;0;85;;; -36762;1;0;false;false;;;;;; -36763;6;0;false;false;0;0;0;;; -36769;3;1;false;false;127;0;85;;; -36772;1;0;false;false;;;;;; -36773;2;0;false;false;0;0;0;;; -36775;1;0;false;false;;;;;; -36776;1;0;false;false;0;0;0;;; -36777;4;0;false;false;;;;;; -36781;17;0;false;false;0;0;0;;; -36798;3;0;false;false;;;;;; -36801;1;0;false;false;0;0;0;;; -36802;3;0;false;false;;;;;; -36805;3;0;false;false;63;95;191;;; -36808;4;0;false;false;;;;;; -36812;1;0;false;false;63;95;191;;; -36813;1;0;false;false;;;;;; -36814;7;0;false;false;63;95;191;;; -36821;1;0;false;false;;;;;; -36822;3;0;false;false;63;95;191;;; -36825;1;0;false;false;;;;;; -36826;5;0;false;false;63;95;191;;; -36831;1;0;false;false;;;;;; -36832;9;0;false;false;63;95;191;;; -36841;1;0;false;false;;;;;; -36842;2;0;false;false;63;95;191;;; -36844;1;0;false;false;;;;;; -36845;3;0;false;false;63;95;191;;; -36848;1;0;false;false;;;;;; -36849;5;0;false;false;63;95;191;;; -36854;4;0;false;false;;;;;; -36858;2;0;false;false;63;95;191;;; -36860;3;0;false;false;;;;;; -36863;4;1;false;false;127;0;85;;; -36867;1;0;false;false;;;;;; -36868;6;0;false;false;0;0;0;;; -36874;4;1;false;false;127;0;85;;; -36878;1;0;false;false;;;;;; -36879;2;0;false;false;0;0;0;;; -36881;1;0;false;false;;;;;; -36882;1;0;false;false;0;0;0;;; -36883;4;0;false;false;;;;;; -36887;17;0;false;false;0;0;0;;; -36904;3;0;false;false;;;;;; -36907;1;0;false;false;0;0;0;;; -36908;6;0;false;false;;;;;; -36914;3;0;false;false;63;95;191;;; -36917;4;0;false;false;;;;;; -36921;1;0;false;false;63;95;191;;; -36922;1;0;false;false;;;;;; -36923;7;0;false;false;63;95;191;;; -36930;1;0;false;false;;;;;; -36931;3;0;false;false;63;95;191;;; -36934;1;0;false;false;;;;;; -36935;9;0;false;false;63;95;191;;; -36944;1;0;false;false;;;;;; -36945;4;0;false;false;63;95;191;;; -36949;1;0;false;false;;;;;; -36950;4;0;false;false;63;95;191;;; -36954;1;0;false;false;;;;;; -36955;2;0;false;false;63;95;191;;; -36957;1;0;false;false;;;;;; -36958;3;0;false;false;63;95;191;;; -36961;1;0;false;false;;;;;; -36962;5;0;false;false;63;95;191;;; -36967;4;0;false;false;;;;;; -36971;1;0;false;false;63;95;191;;; -36972;1;0;false;false;;;;;; -36973;3;0;false;false;127;127;159;;; -36976;4;0;false;false;;;;;; -36980;1;0;false;false;63;95;191;;; -36981;4;0;false;false;;;;;; -36985;1;0;false;false;63;95;191;;; -36986;1;0;false;false;;;;;; -36987;7;1;false;false;127;159;191;;; -36994;4;0;false;false;63;95;191;;; -36998;1;0;false;false;;;;;; -36999;4;0;false;false;63;95;191;;; -37003;1;0;false;false;;;;;; -37004;4;0;false;false;63;95;191;;; -37008;1;0;false;false;;;;;; -37009;2;0;false;false;63;95;191;;; -37011;1;0;false;false;;;;;; -37012;6;0;false;false;63;95;191;;; -37018;1;0;false;false;;;;;; -37019;4;0;false;false;63;95;191;;; -37023;1;0;false;false;;;;;; -37024;3;0;false;false;63;95;191;;; -37027;1;0;false;false;;;;;; -37028;7;0;false;false;63;95;191;;; -37035;1;0;false;false;;;;;; -37036;4;0;false;false;63;95;191;;; -37040;1;0;false;false;;;;;; -37041;6;0;false;false;63;95;191;;; -37047;4;0;false;false;;;;;; -37051;1;0;false;false;63;95;191;;; -37052;2;0;false;false;;;;;; -37054;4;0;false;false;63;95;191;;; -37058;1;0;false;false;;;;;; -37059;6;0;false;false;63;95;191;;; -37065;1;0;false;false;;;;;; -37066;6;0;false;false;63;95;191;;; -37072;1;0;false;false;;;;;; -37073;2;0;false;false;63;95;191;;; -37075;1;0;false;false;;;;;; -37076;7;0;false;false;63;95;191;;; -37083;1;0;false;false;;;;;; -37084;5;0;false;false;63;95;191;;; -37089;1;0;false;false;;;;;; -37090;20;0;false;false;63;95;191;;; -37110;4;0;false;false;;;;;; -37114;1;0;false;false;63;95;191;;; -37115;1;0;false;false;;;;;; -37116;7;1;false;false;127;159;191;;; -37123;10;0;false;false;63;95;191;;; -37133;1;0;false;false;;;;;; -37134;6;0;false;false;63;95;191;;; -37140;1;0;false;false;;;;;; -37141;2;0;false;false;63;95;191;;; -37143;1;0;false;false;;;;;; -37144;3;0;false;false;63;95;191;;; -37147;1;0;false;false;;;;;; -37148;5;0;false;false;63;95;191;;; -37153;1;0;false;false;;;;;; -37154;1;0;false;false;63;95;191;;; -37155;1;0;false;false;;;;;; -37156;5;0;false;false;63;95;191;;; -37161;1;0;false;false;;;;;; -37162;4;0;false;false;63;95;191;;; -37166;1;0;false;false;;;;;; -37167;3;0;false;false;63;95;191;;; -37170;1;0;false;false;;;;;; -37171;5;0;false;false;63;95;191;;; -37176;1;0;false;false;;;;;; -37177;2;0;false;false;63;95;191;;; -37179;1;0;false;false;;;;;; -37180;3;0;false;false;63;95;191;;; -37183;5;0;false;false;;;;;; -37188;1;0;false;false;63;95;191;;; -37189;2;0;false;false;;;;;; -37191;6;0;false;false;63;95;191;;; -37197;1;0;false;false;;;;;; -37198;9;0;false;false;63;95;191;;; -37207;1;0;false;false;;;;;; -37208;3;0;false;false;63;95;191;;; -37211;1;0;false;false;;;;;; -37212;4;0;false;false;63;95;191;;; -37216;1;0;false;false;;;;;; -37217;9;0;false;false;63;95;191;;; -37226;1;0;false;false;;;;;; -37227;6;0;false;false;63;95;191;;; -37233;1;0;false;false;;;;;; -37234;3;0;false;false;63;95;191;;; -37237;1;0;false;false;;;;;; -37238;5;0;false;false;63;95;191;;; -37243;1;0;false;false;;;;;; -37244;6;0;false;false;63;95;191;;; -37250;1;0;false;false;;;;;; -37251;2;0;false;false;63;95;191;;; -37253;1;0;false;false;;;;;; -37254;5;0;false;false;63;95;191;;; -37259;1;0;false;false;;;;;; -37260;3;0;false;false;63;95;191;;; -37263;5;0;false;false;;;;;; -37268;1;0;false;false;63;95;191;;; -37269;1;0;false;false;;;;;; -37270;3;0;false;false;63;95;191;;; -37273;1;0;false;false;;;;;; -37274;6;0;false;false;63;95;191;;; -37280;1;0;false;false;;;;;; -37281;9;0;false;false;63;95;191;;; -37290;1;0;false;false;;;;;; -37291;6;0;false;false;63;95;191;;; -37297;1;0;false;false;;;;;; -37298;6;0;false;false;63;95;191;;; -37304;1;0;false;false;;;;;; -37305;8;0;false;false;63;95;191;;; -37313;1;0;false;false;;;;;; -37314;2;0;false;false;63;95;191;;; -37316;1;0;false;false;;;;;; -37317;8;0;false;false;63;95;191;;; -37325;4;0;false;false;;;;;; -37329;1;0;false;false;63;95;191;;; -37330;1;0;false;false;;;;;; -37331;11;1;false;false;127;159;191;;; -37342;12;0;false;false;63;95;191;;; -37354;1;0;false;false;;;;;; -37355;4;0;false;false;127;127;159;;; -37359;4;0;false;false;;;;;; -37363;1;0;false;false;63;95;191;;; -37364;3;0;false;false;;;;;; -37367;4;0;false;false;127;127;159;;; -37371;8;0;false;false;63;95;191;;; -37379;1;0;false;false;;;;;; -37380;4;0;false;false;63;95;191;;; -37384;1;0;false;false;;;;;; -37385;3;0;false;false;63;95;191;;; -37388;1;0;false;false;;;;;; -37389;6;0;false;false;63;95;191;;; -37395;1;0;false;false;;;;;; -37396;2;0;false;false;63;95;191;;; -37398;1;0;false;false;;;;;; -37399;7;0;false;false;63;95;191;;; -37406;5;0;false;false;127;127;159;;; -37411;4;0;false;false;;;;;; -37415;1;0;false;false;63;95;191;;; -37416;1;0;false;false;;;;;; -37417;5;0;false;false;127;127;159;;; -37422;4;0;false;false;;;;;; -37426;2;0;false;false;63;95;191;;; -37428;3;0;false;false;;;;;; -37431;6;1;false;false;127;0;85;;; -37437;1;0;false;false;;;;;; -37438;4;1;false;false;127;0;85;;; -37442;1;0;false;false;;;;;; -37443;16;0;false;false;0;0;0;;; -37459;1;0;false;false;;;;;; -37460;5;0;false;false;0;0;0;;; -37465;1;0;false;false;;;;;; -37466;3;1;false;false;127;0;85;;; -37469;1;0;false;false;;;;;; -37470;11;0;false;false;0;0;0;;; -37481;1;0;false;false;;;;;; -37482;1;0;false;false;0;0;0;;; -37483;4;0;false;false;;;;;; -37487;3;1;false;false;127;0;85;;; -37490;1;0;false;false;;;;;; -37491;10;0;false;false;0;0;0;;; -37501;1;0;false;false;;;;;; -37502;1;0;false;false;0;0;0;;; -37503;1;0;false;false;;;;;; -37504;14;0;false;false;0;0;0;;; -37518;4;0;false;false;;;;;; -37522;3;1;false;false;127;0;85;;; -37525;1;0;false;false;;;;;; -37526;10;0;false;false;0;0;0;;; -37536;4;0;false;false;;;;;; -37540;3;1;false;false;127;0;85;;; -37543;1;0;false;false;;;;;; -37544;8;0;false;false;0;0;0;;; -37552;4;0;false;false;;;;;; -37556;3;1;false;false;127;0;85;;; -37559;1;0;false;false;;;;;; -37560;11;0;false;false;0;0;0;;; -37571;1;0;false;false;;;;;; -37572;1;0;false;false;0;0;0;;; -37573;1;0;false;false;;;;;; -37574;11;0;false;false;0;0;0;;; -37585;1;0;false;false;;;;;; -37586;1;0;false;false;0;0;0;;; -37587;1;0;false;false;;;;;; -37588;11;0;false;false;0;0;0;;; -37599;8;0;false;false;;;;;; -37607;2;1;false;false;127;0;85;;; -37609;1;0;false;false;;;;;; -37610;10;0;false;false;0;0;0;;; -37620;1;0;false;false;;;;;; -37621;1;0;false;false;0;0;0;;; -37622;5;0;false;false;;;;;; -37627;24;0;false;false;0;0;0;;; -37651;4;0;false;false;;;;;; -37655;1;0;false;false;0;0;0;;; -37656;6;0;false;false;;;;;; -37662;2;1;false;false;127;0;85;;; -37664;1;0;false;false;;;;;; -37665;12;0;false;false;0;0;0;;; -37677;1;0;false;false;;;;;; -37678;2;0;false;false;0;0;0;;; -37680;1;0;false;false;;;;;; -37681;11;0;false;false;0;0;0;;; -37692;1;0;false;false;;;;;; -37693;1;0;false;false;0;0;0;;; -37694;5;0;false;false;;;;;; -37699;6;1;false;false;127;0;85;;; -37705;1;0;false;false;0;0;0;;; -37706;7;0;false;false;;;;;; -37713;38;0;false;false;63;127;95;;; -37751;2;0;false;false;;;;;; -37753;1;0;false;false;0;0;0;;; -37754;4;0;false;false;;;;;; -37758;4;1;false;false;127;0;85;;; -37762;4;0;false;false;;;;;; -37766;2;1;false;false;127;0;85;;; -37768;1;0;false;false;;;;;; -37769;12;0;false;false;0;0;0;;; -37781;1;0;false;false;;;;;; -37782;1;0;false;false;0;0;0;;; -37783;1;0;false;false;;;;;; -37784;2;0;false;false;0;0;0;;; -37786;1;0;false;false;;;;;; -37787;1;0;false;false;0;0;0;;; -37788;5;0;false;false;;;;;; -37793;9;0;false;false;0;0;0;;; -37802;1;0;false;false;;;;;; -37803;1;0;false;false;0;0;0;;; -37804;1;0;false;false;;;;;; -37805;12;0;false;false;0;0;0;;; -37817;2;0;false;false;;;;;; -37819;35;0;false;false;63;127;95;;; -37854;2;0;false;false;;;;;; -37856;1;0;false;false;0;0;0;;; -37857;4;0;false;false;;;;;; -37861;4;1;false;false;127;0;85;;; -37865;1;0;false;false;;;;;; -37866;1;0;false;false;0;0;0;;; -37867;5;0;false;false;;;;;; -37872;9;0;false;false;0;0;0;;; -37881;1;0;false;false;;;;;; -37882;1;0;false;false;0;0;0;;; -37883;1;0;false;false;;;;;; -37884;2;0;false;false;0;0;0;;; -37886;4;0;false;false;;;;;; -37890;1;0;false;false;0;0;0;;; -37891;4;0;false;false;;;;;; -37895;7;0;false;false;0;0;0;;; -37902;1;0;false;false;;;;;; -37903;1;0;false;false;0;0;0;;; -37904;1;0;false;false;;;;;; -37905;20;0;false;false;0;0;0;;; -37925;1;0;false;false;;;;;; -37926;9;0;false;false;0;0;0;;; -37935;1;0;false;false;;;;;; -37936;1;0;false;false;0;0;0;;; -37937;1;0;false;false;;;;;; -37938;12;0;false;false;0;0;0;;; -37950;4;0;false;false;;;;;; -37954;2;1;false;false;127;0;85;;; -37956;1;0;false;false;;;;;; -37957;10;0;false;false;0;0;0;;; -37967;1;0;false;false;;;;;; -37968;1;0;false;false;0;0;0;;; -37969;1;0;false;false;;;;;; -37970;8;0;false;false;0;0;0;;; -37978;1;0;false;false;;;;;; -37979;1;0;false;false;0;0;0;;; -37980;5;0;false;false;;;;;; -37985;31;0;false;false;0;0;0;;; -38016;1;0;false;false;;;;;; -38017;10;0;false;false;0;0;0;;; -38027;4;0;false;false;;;;;; -38031;1;0;false;false;0;0;0;;; -38032;5;0;false;false;;;;;; -38037;1;0;false;false;0;0;0;;; -38038;3;0;false;false;;;;;; -38041;3;0;false;false;63;95;191;;; -38044;4;0;false;false;;;;;; -38048;1;0;false;false;63;95;191;;; -38049;1;0;false;false;;;;;; -38050;7;0;false;false;63;95;191;;; -38057;1;0;false;false;;;;;; -38058;3;0;false;false;63;95;191;;; -38061;1;0;false;false;;;;;; -38062;9;0;false;false;63;95;191;;; -38071;1;0;false;false;;;;;; -38072;4;0;false;false;63;95;191;;; -38076;1;0;false;false;;;;;; -38077;10;0;false;false;63;95;191;;; -38087;1;0;false;false;;;;;; -38088;2;0;false;false;63;95;191;;; -38090;1;0;false;false;;;;;; -38091;3;0;false;false;63;95;191;;; -38094;1;0;false;false;;;;;; -38095;5;0;false;false;63;95;191;;; -38100;4;0;false;false;;;;;; -38104;1;0;false;false;63;95;191;;; -38105;1;0;false;false;;;;;; -38106;3;0;false;false;127;127;159;;; -38109;4;0;false;false;;;;;; -38113;1;0;false;false;63;95;191;;; -38114;4;0;false;false;;;;;; -38118;1;0;false;false;63;95;191;;; -38119;1;0;false;false;;;;;; -38120;7;1;false;false;127;159;191;;; -38127;13;0;false;false;63;95;191;;; -38140;1;0;false;false;;;;;; -38141;4;0;false;false;63;95;191;;; -38145;1;0;false;false;;;;;; -38146;9;0;false;false;63;95;191;;; -38155;1;0;false;false;;;;;; -38156;2;0;false;false;63;95;191;;; -38158;1;0;false;false;;;;;; -38159;5;0;false;false;63;95;191;;; -38164;4;0;false;false;;;;;; -38168;1;0;false;false;63;95;191;;; -38169;1;0;false;false;;;;;; -38170;11;1;false;false;127;159;191;;; -38181;12;0;false;false;63;95;191;;; -38193;1;0;false;false;;;;;; -38194;4;0;false;false;127;127;159;;; -38198;4;0;false;false;;;;;; -38202;1;0;false;false;63;95;191;;; -38203;3;0;false;false;;;;;; -38206;4;0;false;false;127;127;159;;; -38210;8;0;false;false;63;95;191;;; -38218;1;0;false;false;;;;;; -38219;4;0;false;false;63;95;191;;; -38223;1;0;false;false;;;;;; -38224;3;0;false;false;63;95;191;;; -38227;1;0;false;false;;;;;; -38228;6;0;false;false;63;95;191;;; -38234;1;0;false;false;;;;;; -38235;2;0;false;false;63;95;191;;; -38237;1;0;false;false;;;;;; -38238;7;0;false;false;63;95;191;;; -38245;5;0;false;false;127;127;159;;; -38250;4;0;false;false;;;;;; -38254;1;0;false;false;63;95;191;;; -38255;1;0;false;false;;;;;; -38256;5;0;false;false;127;127;159;;; -38261;4;0;false;false;;;;;; -38265;2;0;false;false;63;95;191;;; -38267;3;0;false;false;;;;;; -38270;6;1;false;false;127;0;85;;; -38276;1;0;false;false;;;;;; -38277;4;1;false;false;127;0;85;;; -38281;1;0;false;false;;;;;; -38282;25;0;false;false;0;0;0;;; -38307;1;0;false;false;;;;;; -38308;14;0;false;false;0;0;0;;; -38322;1;0;false;false;;;;;; -38323;1;0;false;false;0;0;0;;; -38324;4;0;false;false;;;;;; -38328;2;1;false;false;127;0;85;;; -38330;1;0;false;false;;;;;; -38331;10;0;false;false;0;0;0;;; -38341;1;0;false;false;;;;;; -38342;1;0;false;false;0;0;0;;; -38343;5;0;false;false;;;;;; -38348;24;0;false;false;0;0;0;;; -38372;4;0;false;false;;;;;; -38376;1;0;false;false;0;0;0;;; -38377;4;0;false;false;;;;;; -38381;21;0;false;false;0;0;0;;; -38402;3;0;false;false;;;;;; -38405;1;0;false;false;0;0;0;;; -38406;3;0;false;false;;;;;; -38409;1;0;false;false;0;0;0;;; -38410;3;0;false;false;;;;;; -38413;3;0;false;false;63;95;191;;; -38416;4;0;false;false;;;;;; -38420;1;0;false;false;63;95;191;;; -38421;1;0;false;false;;;;;; -38422;9;0;false;false;63;95;191;;; -38431;1;0;false;false;;;;;; -38432;8;0;false;false;63;95;191;;; -38440;1;0;false;false;;;;;; -38441;2;0;false;false;63;95;191;;; -38443;1;0;false;false;;;;;; -38444;9;0;false;false;63;95;191;;; -38453;1;0;false;false;;;;;; -38454;2;0;false;false;63;95;191;;; -38456;1;0;false;false;;;;;; -38457;9;0;false;false;63;95;191;;; -38466;1;0;false;false;;;;;; -38467;3;0;false;false;63;95;191;;; -38470;1;0;false;false;;;;;; -38471;10;0;false;false;63;95;191;;; -38481;5;0;false;false;;;;;; -38486;1;0;false;false;63;95;191;;; -38487;1;0;false;false;;;;;; -38488;4;0;false;false;63;95;191;;; -38492;1;0;false;false;;;;;; -38493;5;0;false;false;63;95;191;;; -38498;1;0;false;false;;;;;; -38499;5;0;false;false;63;95;191;;; -38504;4;0;false;false;;;;;; -38508;1;0;false;false;63;95;191;;; -38509;1;0;false;false;;;;;; -38510;12;0;false;false;63;95;191;;; -38522;1;0;false;false;;;;;; -38523;4;0;false;false;63;95;191;;; -38527;1;0;false;false;;;;;; -38528;2;0;false;false;63;95;191;;; -38530;1;0;false;false;;;;;; -38531;6;0;false;false;63;95;191;;; -38537;1;0;false;false;;;;;; -38538;1;0;false;false;63;95;191;;; -38539;1;0;false;false;;;;;; -38540;4;0;false;false;63;95;191;;; -38544;1;0;false;false;;;;;; -38545;5;0;false;false;63;95;191;;; -38550;1;0;false;false;;;;;; -38551;2;0;false;false;63;95;191;;; -38553;1;0;false;false;;;;;; -38554;6;0;false;false;127;127;159;;; -38560;8;0;false;false;63;95;191;;; -38568;7;0;false;false;127;127;159;;; -38575;1;0;false;false;63;95;191;;; -38576;4;0;false;false;;;;;; -38580;2;0;false;false;63;95;191;;; -38582;3;0;false;false;;;;;; -38585;9;1;false;false;127;0;85;;; -38594;1;0;false;false;;;;;; -38595;9;0;false;false;0;0;0;;; -38604;1;0;false;false;;;;;; -38605;1;0;false;false;0;0;0;;; -38606;3;0;false;false;;;;;; -38609;3;0;false;false;63;95;191;;; -38612;4;0;false;false;;;;;; -38616;1;0;false;false;63;95;191;;; -38617;1;0;false;false;;;;;; -38618;10;0;false;false;63;95;191;;; -38628;1;0;false;false;;;;;; -38629;3;0;false;false;63;95;191;;; -38632;1;0;false;false;;;;;; -38633;5;0;false;false;63;95;191;;; -38638;1;0;false;false;;;;;; -38639;2;0;false;false;63;95;191;;; -38641;1;0;false;false;;;;;; -38642;3;0;false;false;63;95;191;;; -38645;1;0;false;false;;;;;; -38646;9;0;false;false;63;95;191;;; -38655;1;0;false;false;;;;;; -38656;6;0;false;false;63;95;191;;; -38662;4;0;false;false;;;;;; -38666;1;0;false;false;63;95;191;;; -38667;1;0;false;false;;;;;; -38668;3;0;false;false;127;127;159;;; -38671;4;0;false;false;;;;;; -38675;1;0;false;false;63;95;191;;; -38676;5;0;false;false;;;;;; -38681;1;0;false;false;63;95;191;;; -38682;1;0;false;false;;;;;; -38683;7;1;false;false;127;159;191;;; -38690;9;0;false;false;63;95;191;;; -38699;1;0;false;false;;;;;; -38700;5;0;false;false;63;95;191;;; -38705;1;0;false;false;;;;;; -38706;4;0;false;false;63;95;191;;; -38710;1;0;false;false;;;;;; -38711;2;0;false;false;63;95;191;;; -38713;1;0;false;false;;;;;; -38714;9;0;false;false;63;95;191;;; -38723;4;0;false;false;;;;;; -38727;1;0;false;false;63;95;191;;; -38728;1;0;false;false;;;;;; -38729;7;1;false;false;127;159;191;;; -38736;9;0;false;false;63;95;191;;; -38745;1;0;false;false;;;;;; -38746;6;0;false;false;63;95;191;;; -38752;1;0;false;false;;;;;; -38753;2;0;false;false;63;95;191;;; -38755;1;0;false;false;;;;;; -38756;5;0;false;false;63;95;191;;; -38761;1;0;false;false;;;;;; -38762;2;0;false;false;63;95;191;;; -38764;1;0;false;false;;;;;; -38765;9;0;false;false;63;95;191;;; -38774;4;0;false;false;;;;;; -38778;2;0;false;false;63;95;191;;; -38780;3;0;false;false;;;;;; -38783;6;1;false;false;127;0;85;;; -38789;1;0;false;false;;;;;; -38790;4;1;false;false;127;0;85;;; -38794;1;0;false;false;;;;;; -38795;10;0;false;false;0;0;0;;; -38805;3;1;false;false;127;0;85;;; -38808;1;0;false;false;;;;;; -38809;10;0;false;false;0;0;0;;; -38819;1;0;false;false;;;;;; -38820;3;1;false;false;127;0;85;;; -38823;1;0;false;false;;;;;; -38824;11;0;false;false;0;0;0;;; -38835;3;0;false;false;;;;;; -38838;3;0;false;false;63;95;191;;; -38841;4;0;false;false;;;;;; -38845;1;0;false;false;63;95;191;;; -38846;1;0;false;false;;;;;; -38847;7;0;false;false;63;95;191;;; -38854;1;0;false;false;;;;;; -38855;1;0;false;false;63;95;191;;; -38856;1;0;false;false;;;;;; -38857;5;0;false;false;63;95;191;;; -38862;1;0;false;false;;;;;; -38863;4;0;false;false;63;95;191;;; -38867;1;0;false;false;;;;;; -38868;4;0;false;false;63;95;191;;; -38872;1;0;false;false;;;;;; -38873;2;0;false;false;63;95;191;;; -38875;1;0;false;false;;;;;; -38876;4;0;false;false;63;95;191;;; -38880;1;0;false;false;;;;;; -38881;2;0;false;false;63;95;191;;; -38883;1;0;false;false;;;;;; -38884;3;0;false;false;63;95;191;;; -38887;1;0;false;false;;;;;; -38888;6;0;false;false;127;127;159;;; -38894;10;0;false;false;63;95;191;;; -38904;7;0;false;false;127;127;159;;; -38911;5;0;false;false;;;;;; -38916;1;0;false;false;63;95;191;;; -38917;1;0;false;false;;;;;; -38918;6;0;false;false;63;95;191;;; -38924;1;0;false;false;;;;;; -38925;2;0;false;false;63;95;191;;; -38927;1;0;false;false;;;;;; -38928;4;0;false;false;63;95;191;;; -38932;1;0;false;false;;;;;; -38933;1;0;false;false;63;95;191;;; -38934;1;0;false;false;;;;;; -38935;10;0;false;false;63;95;191;;; -38945;1;0;false;false;;;;;; -38946;6;0;false;false;63;95;191;;; -38952;1;0;false;false;;;;;; -38953;4;0;false;false;63;95;191;;; -38957;4;0;false;false;;;;;; -38961;1;0;false;false;63;95;191;;; -38962;1;0;false;false;;;;;; -38963;3;0;false;false;127;127;159;;; -38966;4;0;false;false;;;;;; -38970;1;0;false;false;63;95;191;;; -38971;4;0;false;false;;;;;; -38975;1;0;false;false;63;95;191;;; -38976;1;0;false;false;;;;;; -38977;8;1;false;false;127;159;191;;; -38985;3;0;false;false;63;95;191;;; -38988;1;0;false;false;;;;;; -38989;4;0;false;false;63;95;191;;; -38993;1;0;false;false;;;;;; -38994;5;0;false;false;63;95;191;;; -38999;4;0;false;false;;;;;; -39003;2;0;false;false;63;95;191;;; -39005;3;0;false;false;;;;;; -39008;6;1;false;false;127;0;85;;; -39014;1;0;false;false;;;;;; -39015;3;1;false;false;127;0;85;;; -39018;1;0;false;false;;;;;; -39019;11;0;false;false;0;0;0;;; -39030;3;0;false;false;;;;;; -39033;3;0;false;false;63;95;191;;; -39036;4;0;false;false;;;;;; -39040;1;0;false;false;63;95;191;;; -39041;1;0;false;false;;;;;; -39042;6;0;false;false;63;95;191;;; -39048;1;0;false;false;;;;;; -39049;3;0;false;false;63;95;191;;; -39052;1;0;false;false;;;;;; -39053;5;0;false;false;63;95;191;;; -39058;1;0;false;false;;;;;; -39059;2;0;false;false;63;95;191;;; -39061;1;0;false;false;;;;;; -39062;3;0;false;false;63;95;191;;; -39065;1;0;false;false;;;;;; -39066;9;0;false;false;63;95;191;;; -39075;1;0;false;false;;;;;; -39076;6;0;false;false;63;95;191;;; -39082;4;0;false;false;;;;;; -39086;1;0;false;false;63;95;191;;; -39087;1;0;false;false;;;;;; -39088;4;0;false;false;63;95;191;;; -39092;1;0;false;false;;;;;; -39093;6;0;false;false;63;95;191;;; -39099;1;0;false;false;;;;;; -39100;2;0;false;false;63;95;191;;; -39102;1;0;false;false;;;;;; -39103;6;0;false;false;63;95;191;;; -39109;1;0;false;false;;;;;; -39110;2;0;false;false;63;95;191;;; -39112;1;0;false;false;;;;;; -39113;6;0;false;false;127;127;159;;; -39119;19;0;false;false;63;95;191;;; -39138;7;0;false;false;127;127;159;;; -39145;4;0;false;false;;;;;; -39149;1;0;false;false;63;95;191;;; -39150;1;0;false;false;;;;;; -39151;3;0;false;false;63;95;191;;; -39154;1;0;false;false;;;;;; -39155;6;0;false;false;63;95;191;;; -39161;1;0;false;false;;;;;; -39162;12;0;false;false;63;95;191;;; -39174;1;0;false;false;;;;;; -39175;2;0;false;false;63;95;191;;; -39177;1;0;false;false;;;;;; -39178;4;0;false;false;63;95;191;;; -39182;1;0;false;false;;;;;; -39183;6;0;false;false;63;95;191;;; -39189;1;0;false;false;;;;;; -39190;10;0;false;false;63;95;191;;; -39200;1;0;false;false;;;;;; -39201;6;0;false;false;63;95;191;;; -39207;1;0;false;false;;;;;; -39208;6;0;false;false;63;95;191;;; -39214;4;0;false;false;;;;;; -39218;1;0;false;false;63;95;191;;; -39219;1;0;false;false;;;;;; -39220;3;0;false;false;127;127;159;;; -39223;4;0;false;false;;;;;; -39227;1;0;false;false;63;95;191;;; -39228;4;0;false;false;;;;;; -39232;1;0;false;false;63;95;191;;; -39233;1;0;false;false;;;;;; -39234;7;1;false;false;127;159;191;;; -39241;9;0;false;false;63;95;191;;; -39250;1;0;false;false;;;;;; -39251;3;0;false;false;63;95;191;;; -39254;1;0;false;false;;;;;; -39255;5;0;false;false;63;95;191;;; -39260;1;0;false;false;;;;;; -39261;4;0;false;false;63;95;191;;; -39265;1;0;false;false;;;;;; -39266;2;0;false;false;63;95;191;;; -39268;1;0;false;false;;;;;; -39269;5;0;false;false;63;95;191;;; -39274;4;0;false;false;;;;;; -39278;1;0;false;false;63;95;191;;; -39279;1;0;false;false;;;;;; -39280;7;1;false;false;127;159;191;;; -39287;9;0;false;false;63;95;191;;; -39296;1;0;false;false;;;;;; -39297;3;0;false;false;63;95;191;;; -39300;1;0;false;false;;;;;; -39301;6;0;false;false;63;95;191;;; -39307;1;0;false;false;;;;;; -39308;2;0;false;false;63;95;191;;; -39310;1;0;false;false;;;;;; -39311;5;0;false;false;63;95;191;;; -39316;1;0;false;false;;;;;; -39317;2;0;false;false;63;95;191;;; -39319;1;0;false;false;;;;;; -39320;5;0;false;false;63;95;191;;; -39325;4;0;false;false;;;;;; -39329;1;0;false;false;63;95;191;;; -39330;1;0;false;false;;;;;; -39331;7;1;false;false;127;159;191;;; -39338;17;0;false;false;63;95;191;;; -39355;1;0;false;false;;;;;; -39356;17;0;false;false;63;95;191;;; -39373;1;0;false;false;;;;;; -39374;6;0;false;false;63;95;191;;; -39380;1;0;false;false;;;;;; -39381;6;0;false;false;63;95;191;;; -39387;1;0;false;false;;;;;; -39388;1;0;false;false;63;95;191;;; -39389;5;0;false;false;;;;;; -39394;1;0;false;false;63;95;191;;; -39395;2;0;false;false;;;;;; -39397;5;0;false;false;63;95;191;;; -39402;1;0;false;false;;;;;; -39403;5;0;false;false;63;95;191;;; -39408;1;0;false;false;;;;;; -39409;4;0;false;false;63;95;191;;; -39413;1;0;false;false;;;;;; -39414;2;0;false;false;63;95;191;;; -39416;1;0;false;false;;;;;; -39417;2;0;false;false;63;95;191;;; -39419;1;0;false;false;;;;;; -39420;2;0;false;false;63;95;191;;; -39422;1;0;false;false;;;;;; -39423;8;0;false;false;63;95;191;;; -39431;1;0;false;false;;;;;; -39432;2;0;false;false;63;95;191;;; -39434;1;0;false;false;;;;;; -39435;3;0;false;false;63;95;191;;; -39438;1;0;false;false;;;;;; -39439;5;0;false;false;63;95;191;;; -39444;1;0;false;false;;;;;; -39445;10;0;false;false;63;95;191;;; -39455;4;0;false;false;;;;;; -39459;1;0;false;false;63;95;191;;; -39460;2;0;false;false;;;;;; -39462;9;0;false;false;63;95;191;;; -39471;1;0;false;false;;;;;; -39472;5;0;false;false;63;95;191;;; -39477;1;0;false;false;;;;;; -39478;3;0;false;false;63;95;191;;; -39481;1;0;false;false;;;;;; -39482;2;0;false;false;63;95;191;;; -39484;1;0;false;false;;;;;; -39485;3;0;false;false;63;95;191;;; -39488;1;0;false;false;;;;;; -39489;2;0;false;false;63;95;191;;; -39491;1;0;false;false;;;;;; -39492;1;0;false;false;63;95;191;;; -39493;4;0;false;false;;;;;; -39497;2;0;false;false;63;95;191;;; -39499;3;0;false;false;;;;;; -39502;6;1;false;false;127;0;85;;; -39508;1;0;false;false;;;;;; -39509;4;1;false;false;127;0;85;;; -39513;1;0;false;false;;;;;; -39514;12;0;false;false;0;0;0;;; -39526;3;1;false;false;127;0;85;;; -39529;1;0;false;false;;;;;; -39530;10;0;false;false;0;0;0;;; -39540;1;0;false;false;;;;;; -39541;3;1;false;false;127;0;85;;; -39544;1;0;false;false;;;;;; -39545;10;0;false;false;0;0;0;;; -39555;1;0;false;false;;;;;; -39556;7;1;false;false;127;0;85;;; -39563;1;0;false;false;;;;;; -39564;19;0;false;false;0;0;0;;; -39583;3;0;false;false;;;;;; -39586;3;0;false;false;63;95;191;;; -39589;4;0;false;false;;;;;; -39593;1;0;false;false;63;95;191;;; -39594;1;0;false;false;;;;;; -39595;6;0;false;false;63;95;191;;; -39601;1;0;false;false;;;;;; -39602;3;0;false;false;63;95;191;;; -39605;1;0;false;false;;;;;; -39606;5;0;false;false;63;95;191;;; -39611;1;0;false;false;;;;;; -39612;2;0;false;false;63;95;191;;; -39614;1;0;false;false;;;;;; -39615;3;0;false;false;63;95;191;;; -39618;1;0;false;false;;;;;; -39619;9;0;false;false;63;95;191;;; -39628;1;0;false;false;;;;;; -39629;6;0;false;false;63;95;191;;; -39635;4;0;false;false;;;;;; -39639;1;0;false;false;63;95;191;;; -39640;1;0;false;false;;;;;; -39641;3;0;false;false;127;127;159;;; -39644;4;0;false;false;;;;;; -39648;1;0;false;false;63;95;191;;; -39649;4;0;false;false;;;;;; -39653;1;0;false;false;63;95;191;;; -39654;1;0;false;false;;;;;; -39655;7;1;false;false;127;159;191;;; -39662;9;0;false;false;63;95;191;;; -39671;1;0;false;false;;;;;; -39672;3;0;false;false;63;95;191;;; -39675;1;0;false;false;;;;;; -39676;5;0;false;false;63;95;191;;; -39681;1;0;false;false;;;;;; -39682;4;0;false;false;63;95;191;;; -39686;1;0;false;false;;;;;; -39687;2;0;false;false;63;95;191;;; -39689;1;0;false;false;;;;;; -39690;5;0;false;false;63;95;191;;; -39695;4;0;false;false;;;;;; -39699;1;0;false;false;63;95;191;;; -39700;1;0;false;false;;;;;; -39701;7;1;false;false;127;159;191;;; -39708;9;0;false;false;63;95;191;;; -39717;1;0;false;false;;;;;; -39718;3;0;false;false;63;95;191;;; -39721;1;0;false;false;;;;;; -39722;6;0;false;false;63;95;191;;; -39728;1;0;false;false;;;;;; -39729;2;0;false;false;63;95;191;;; -39731;1;0;false;false;;;;;; -39732;5;0;false;false;63;95;191;;; -39737;1;0;false;false;;;;;; -39738;2;0;false;false;63;95;191;;; -39740;1;0;false;false;;;;;; -39741;5;0;false;false;63;95;191;;; -39746;4;0;false;false;;;;;; -39750;1;0;false;false;63;95;191;;; -39751;1;0;false;false;;;;;; -39752;7;1;false;false;127;159;191;;; -39759;17;0;false;false;63;95;191;;; -39776;1;0;false;false;;;;;; -39777;17;0;false;false;63;95;191;;; -39794;1;0;false;false;;;;;; -39795;6;0;false;false;63;95;191;;; -39801;1;0;false;false;;;;;; -39802;6;0;false;false;63;95;191;;; -39808;1;0;false;false;;;;;; -39809;1;0;false;false;63;95;191;;; -39810;5;0;false;false;;;;;; -39815;1;0;false;false;63;95;191;;; -39816;2;0;false;false;;;;;; -39818;5;0;false;false;63;95;191;;; -39823;1;0;false;false;;;;;; -39824;5;0;false;false;63;95;191;;; -39829;1;0;false;false;;;;;; -39830;4;0;false;false;63;95;191;;; -39834;1;0;false;false;;;;;; -39835;2;0;false;false;63;95;191;;; -39837;1;0;false;false;;;;;; -39838;2;0;false;false;63;95;191;;; -39840;1;0;false;false;;;;;; -39841;2;0;false;false;63;95;191;;; -39843;1;0;false;false;;;;;; -39844;8;0;false;false;63;95;191;;; -39852;1;0;false;false;;;;;; -39853;2;0;false;false;63;95;191;;; -39855;1;0;false;false;;;;;; -39856;3;0;false;false;63;95;191;;; -39859;1;0;false;false;;;;;; -39860;5;0;false;false;63;95;191;;; -39865;1;0;false;false;;;;;; -39866;10;0;false;false;63;95;191;;; -39876;4;0;false;false;;;;;; -39880;1;0;false;false;63;95;191;;; -39881;2;0;false;false;;;;;; -39883;9;0;false;false;63;95;191;;; -39892;1;0;false;false;;;;;; -39893;5;0;false;false;63;95;191;;; -39898;1;0;false;false;;;;;; -39899;3;0;false;false;63;95;191;;; -39902;1;0;false;false;;;;;; -39903;2;0;false;false;63;95;191;;; -39905;1;0;false;false;;;;;; -39906;3;0;false;false;63;95;191;;; -39909;1;0;false;false;;;;;; -39910;2;0;false;false;63;95;191;;; -39912;1;0;false;false;;;;;; -39913;1;0;false;false;63;95;191;;; -39914;4;0;false;false;;;;;; -39918;2;0;false;false;63;95;191;;; -39920;3;0;false;false;;;;;; -39923;6;1;false;false;127;0;85;;; -39929;1;0;false;false;;;;;; -39930;4;1;false;false;127;0;85;;; -39934;1;0;false;false;;;;;; -39935;6;0;false;false;0;0;0;;; -39941;3;1;false;false;127;0;85;;; -39944;1;0;false;false;;;;;; -39945;10;0;false;false;0;0;0;;; -39955;1;0;false;false;;;;;; -39956;3;1;false;false;127;0;85;;; -39959;1;0;false;false;;;;;; -39960;10;0;false;false;0;0;0;;; -39970;1;0;false;false;;;;;; -39971;7;1;false;false;127;0;85;;; -39978;1;0;false;false;;;;;; -39979;19;0;false;false;0;0;0;;; -39998;3;0;false;false;;;;;; -40001;3;0;false;false;63;95;191;;; -40004;5;0;false;false;;;;;; -40009;1;0;false;false;63;95;191;;; -40010;1;0;false;false;;;;;; -40011;6;0;false;false;63;95;191;;; -40017;1;0;false;false;;;;;; -40018;4;0;false;false;63;95;191;;; -40022;1;0;false;false;;;;;; -40023;1;0;false;false;63;95;191;;; -40024;1;0;false;false;;;;;; -40025;4;0;false;false;63;95;191;;; -40029;1;0;false;false;;;;;; -40030;6;0;false;false;63;95;191;;; -40036;1;0;false;false;;;;;; -40037;9;0;false;false;63;95;191;;; -40046;4;0;false;false;;;;;; -40050;1;0;false;false;63;95;191;;; -40051;1;0;false;false;;;;;; -40052;3;0;false;false;127;127;159;;; -40055;4;0;false;false;;;;;; -40059;1;0;false;false;63;95;191;;; -40060;4;0;false;false;;;;;; -40064;1;0;false;false;63;95;191;;; -40065;1;0;false;false;;;;;; -40066;7;1;false;false;127;159;191;;; -40073;11;0;false;false;63;95;191;;; -40084;1;0;false;false;;;;;; -40085;3;0;false;false;63;95;191;;; -40088;1;0;false;false;;;;;; -40089;5;0;false;false;63;95;191;;; -40094;1;0;false;false;;;;;; -40095;6;0;false;false;63;95;191;;; -40101;1;0;false;false;;;;;; -40102;2;0;false;false;63;95;191;;; -40104;1;0;false;false;;;;;; -40105;3;0;false;false;63;95;191;;; -40108;1;0;false;false;;;;;; -40109;4;0;false;false;63;95;191;;; -40113;1;0;false;false;;;;;; -40114;6;0;false;false;63;95;191;;; -40120;4;0;false;false;;;;;; -40124;1;0;false;false;63;95;191;;; -40125;1;0;false;false;;;;;; -40126;7;1;false;false;127;159;191;;; -40133;12;0;false;false;63;95;191;;; -40145;1;0;false;false;;;;;; -40146;3;0;false;false;63;95;191;;; -40149;1;0;false;false;;;;;; -40150;6;0;false;false;63;95;191;;; -40156;1;0;false;false;;;;;; -40157;2;0;false;false;63;95;191;;; -40159;1;0;false;false;;;;;; -40160;8;0;false;false;63;95;191;;; -40168;1;0;false;false;;;;;; -40169;5;0;false;false;63;95;191;;; -40174;4;0;false;false;;;;;; -40178;1;0;false;false;63;95;191;;; -40179;1;0;false;false;;;;;; -40180;7;1;false;false;127;159;191;;; -40187;16;0;false;false;63;95;191;;; -40203;1;0;false;false;;;;;; -40204;3;0;false;false;63;95;191;;; -40207;1;0;false;false;;;;;; -40208;6;0;false;false;63;95;191;;; -40214;1;0;false;false;;;;;; -40215;2;0;false;false;63;95;191;;; -40217;1;0;false;false;;;;;; -40218;7;0;false;false;63;95;191;;; -40225;1;0;false;false;;;;;; -40226;5;0;false;false;63;95;191;;; -40231;4;0;false;false;;;;;; -40235;1;0;false;false;63;95;191;;; -40236;1;0;false;false;;;;;; -40237;7;1;false;false;127;159;191;;; -40244;12;0;false;false;63;95;191;;; -40256;1;0;false;false;;;;;; -40257;3;0;false;false;63;95;191;;; -40260;1;0;false;false;;;;;; -40261;6;0;false;false;63;95;191;;; -40267;1;0;false;false;;;;;; -40268;2;0;false;false;63;95;191;;; -40270;1;0;false;false;;;;;; -40271;3;0;false;false;63;95;191;;; -40274;1;0;false;false;;;;;; -40275;10;0;false;false;63;95;191;;; -40285;4;0;false;false;;;;;; -40289;1;0;false;false;63;95;191;;; -40290;1;0;false;false;;;;;; -40291;7;1;false;false;127;159;191;;; -40298;16;0;false;false;63;95;191;;; -40314;1;0;false;false;;;;;; -40315;3;0;false;false;63;95;191;;; -40318;1;0;false;false;;;;;; -40319;6;0;false;false;63;95;191;;; -40325;1;0;false;false;;;;;; -40326;2;0;false;false;63;95;191;;; -40328;1;0;false;false;;;;;; -40329;7;0;false;false;63;95;191;;; -40336;1;0;false;false;;;;;; -40337;10;0;false;false;63;95;191;;; -40347;4;0;false;false;;;;;; -40351;2;0;false;false;63;95;191;;; -40353;5;0;false;false;;;;;; -40358;6;1;false;false;127;0;85;;; -40364;1;0;false;false;;;;;; -40365;4;1;false;false;127;0;85;;; -40369;1;0;false;false;;;;;; -40370;12;0;false;false;0;0;0;;; -40382;3;1;false;false;127;0;85;;; -40385;1;0;false;false;;;;;; -40386;12;0;false;false;0;0;0;;; -40398;1;0;false;false;;;;;; -40399;3;1;false;false;127;0;85;;; -40402;1;0;false;false;;;;;; -40403;13;0;false;false;0;0;0;;; -40416;1;0;false;false;;;;;; -40417;3;1;false;false;127;0;85;;; -40420;1;0;false;false;;;;;; -40421;17;0;false;false;0;0;0;;; -40438;1;0;false;false;;;;;; -40439;3;1;false;false;127;0;85;;; -40442;1;0;false;false;;;;;; -40443;13;0;false;false;0;0;0;;; -40456;1;0;false;false;;;;;; -40457;3;1;false;false;127;0;85;;; -40460;1;0;false;false;;;;;; -40461;18;0;false;false;0;0;0;;; -40479;3;0;false;false;;;;;; -40482;1;0;false;false;0;0;0;;; -40483;3;0;false;false;;;;;; -40486;3;0;false;false;63;95;191;;; -40489;4;0;false;false;;;;;; -40493;1;0;false;false;63;95;191;;; -40494;1;0;false;false;;;;;; -40495;5;0;false;false;63;95;191;;; -40500;1;0;false;false;;;;;; -40501;5;0;false;false;63;95;191;;; -40506;1;0;false;false;;;;;; -40507;2;0;false;false;63;95;191;;; -40509;1;0;false;false;;;;;; -40510;4;0;false;false;63;95;191;;; -40514;1;0;false;false;;;;;; -40515;6;0;false;false;63;95;191;;; -40521;1;0;false;false;;;;;; -40522;3;0;false;false;63;95;191;;; -40525;1;0;false;false;;;;;; -40526;3;0;false;false;63;95;191;;; -40529;1;0;false;false;;;;;; -40530;7;0;false;false;63;95;191;;; -40537;1;0;false;false;;;;;; -40538;4;0;false;false;63;95;191;;; -40542;1;0;false;false;;;;;; -40543;2;0;false;false;63;95;191;;; -40545;1;0;false;false;;;;;; -40546;3;0;false;false;63;95;191;;; -40549;5;0;false;false;;;;;; -40554;1;0;false;false;63;95;191;;; -40555;1;0;false;false;;;;;; -40556;10;0;false;false;63;95;191;;; -40566;1;0;false;false;;;;;; -40567;9;0;false;false;63;95;191;;; -40576;4;0;false;false;;;;;; -40580;1;0;false;false;63;95;191;;; -40581;1;0;false;false;;;;;; -40582;4;0;false;false;63;95;191;;; -40586;1;0;false;false;;;;;; -40587;6;0;false;false;63;95;191;;; -40593;1;0;false;false;;;;;; -40594;3;0;false;false;63;95;191;;; -40597;1;0;false;false;;;;;; -40598;10;0;false;false;63;95;191;;; -40608;1;0;false;false;;;;;; -40609;4;0;false;false;63;95;191;;; -40613;1;0;false;false;;;;;; -40614;9;0;false;false;63;95;191;;; -40623;1;0;false;false;;;;;; -40624;2;0;false;false;63;95;191;;; -40626;1;0;false;false;;;;;; -40627;1;0;false;false;63;95;191;;; -40628;1;0;false;false;;;;;; -40629;4;0;false;false;63;95;191;;; -40633;1;0;false;false;;;;;; -40634;2;0;false;false;63;95;191;;; -40636;5;0;false;false;;;;;; -40641;1;0;false;false;63;95;191;;; -40642;1;0;false;false;;;;;; -40643;6;0;false;false;127;127;159;;; -40649;9;0;false;false;63;95;191;;; -40658;7;0;false;false;127;127;159;;; -40665;1;0;false;false;;;;;; -40666;3;0;false;false;63;95;191;;; -40669;1;0;false;false;;;;;; -40670;6;0;false;false;63;95;191;;; -40676;1;0;false;false;;;;;; -40677;5;0;false;false;63;95;191;;; -40682;1;0;false;false;;;;;; -40683;5;0;false;false;63;95;191;;; -40688;1;0;false;false;;;;;; -40689;2;0;false;false;63;95;191;;; -40691;1;0;false;false;;;;;; -40692;1;0;false;false;63;95;191;;; -40693;1;0;false;false;;;;;; -40694;4;0;false;false;63;95;191;;; -40698;5;0;false;false;;;;;; -40703;1;0;false;false;63;95;191;;; -40704;1;0;false;false;;;;;; -40705;2;0;false;false;63;95;191;;; -40707;1;0;false;false;;;;;; -40708;6;0;false;false;127;127;159;;; -40714;11;0;false;false;63;95;191;;; -40725;7;0;false;false;127;127;159;;; -40732;1;0;false;false;;;;;; -40733;2;0;false;false;63;95;191;;; -40735;1;0;false;false;;;;;; -40736;6;0;false;false;127;127;159;;; -40742;5;0;false;false;63;95;191;;; -40747;7;0;false;false;127;127;159;;; -40754;1;0;false;false;63;95;191;;; -40755;4;0;false;false;;;;;; -40759;2;0;false;false;63;95;191;;; -40761;3;0;false;false;;;;;; -40764;5;1;false;false;127;0;85;;; -40769;1;0;false;false;;;;;; -40770;17;0;false;false;0;0;0;;; -40787;1;0;false;false;;;;;; -40788;10;1;false;false;127;0;85;;; -40798;1;0;false;false;;;;;; -40799;9;0;false;false;0;0;0;;; -40808;1;0;false;false;;;;;; -40809;1;0;false;false;0;0;0;;; -40810;4;0;false;false;;;;;; -40814;10;0;false;false;0;0;0;;; -40824;1;0;false;false;;;;;; -40825;7;0;false;false;0;0;0;;; -40832;4;0;false;false;;;;;; -40836;58;0;false;false;63;127;95;;; -40894;2;0;false;false;;;;;; -40896;3;1;false;false;127;0;85;;; -40899;2;0;false;false;0;0;0;;; -40901;1;0;false;false;;;;;; -40902;10;0;false;false;0;0;0;;; -40912;4;0;false;false;;;;;; -40916;70;0;false;false;63;127;95;;; -40986;2;0;false;false;;;;;; -40988;17;0;false;false;0;0;0;;; -41005;1;0;false;false;;;;;; -41006;8;0;false;false;0;0;0;;; -41014;2;0;false;false;;;;;; -41016;46;0;false;false;63;127;95;;; -41062;2;0;false;false;;;;;; -41064;3;1;false;false;127;0;85;;; -41067;1;0;false;false;;;;;; -41068;10;0;false;false;0;0;0;;; -41078;5;0;false;false;;;;;; -41083;39;0;false;false;63;127;95;;; -41122;2;0;false;false;;;;;; -41124;3;1;false;false;127;0;85;;; -41127;1;0;false;false;;;;;; -41128;9;0;false;false;0;0;0;;; -41137;5;0;false;false;;;;;; -41142;45;0;false;false;63;127;95;;; -41187;2;0;false;false;;;;;; -41189;3;1;false;false;127;0;85;;; -41192;1;0;false;false;;;;;; -41193;18;0;false;false;0;0;0;;; -41211;3;0;false;false;;;;;; -41214;29;0;false;false;63;127;95;;; -41243;7;0;false;false;;;;;; -41250;3;0;false;false;63;95;191;;; -41253;5;0;false;false;;;;;; -41258;1;0;false;false;63;95;191;;; -41259;1;0;false;false;;;;;; -41260;7;0;false;false;63;95;191;;; -41267;1;0;false;false;;;;;; -41268;1;0;false;false;63;95;191;;; -41269;1;0;false;false;;;;;; -41270;3;0;false;false;63;95;191;;; -41273;1;0;false;false;;;;;; -41274;6;0;false;false;127;127;159;;; -41280;17;0;false;false;63;95;191;;; -41297;7;0;false;false;127;127;159;;; -41304;1;0;false;false;;;;;; -41305;3;0;false;false;63;95;191;;; -41308;1;0;false;false;;;;;; -41309;9;0;false;false;63;95;191;;; -41318;1;0;false;false;;;;;; -41319;5;0;false;false;63;95;191;;; -41324;5;0;false;false;;;;;; -41329;1;0;false;false;63;95;191;;; -41330;1;0;false;false;;;;;; -41331;3;0;false;false;63;95;191;;; -41334;1;0;false;false;;;;;; -41335;3;0;false;false;63;95;191;;; -41338;1;0;false;false;;;;;; -41339;5;0;false;false;63;95;191;;; -41344;1;0;false;false;;;;;; -41345;6;0;false;false;63;95;191;;; -41351;1;0;false;false;;;;;; -41352;2;0;false;false;63;95;191;;; -41354;1;0;false;false;;;;;; -41355;6;0;false;false;63;95;191;;; -41361;4;0;false;false;;;;;; -41365;1;0;false;false;63;95;191;;; -41366;1;0;false;false;;;;;; -41367;3;0;false;false;127;127;159;;; -41370;4;0;false;false;;;;;; -41374;1;0;false;false;63;95;191;;; -41375;4;0;false;false;;;;;; -41379;1;0;false;false;63;95;191;;; -41380;1;0;false;false;;;;;; -41381;7;1;false;false;127;159;191;;; -41388;6;0;false;false;63;95;191;;; -41394;1;0;false;false;;;;;; -41395;3;0;false;false;63;95;191;;; -41398;1;0;false;false;;;;;; -41399;10;0;false;false;63;95;191;;; -41409;1;0;false;false;;;;;; -41410;6;0;false;false;63;95;191;;; -41416;1;0;false;false;;;;;; -41417;4;0;false;false;63;95;191;;; -41421;1;0;false;false;;;;;; -41422;2;0;false;false;63;95;191;;; -41424;1;0;false;false;;;;;; -41425;6;0;false;false;63;95;191;;; -41431;1;0;false;false;;;;;; -41432;1;0;false;false;63;95;191;;; -41433;1;0;false;false;;;;;; -41434;2;0;false;false;63;95;191;;; -41436;1;0;false;false;;;;;; -41437;3;0;false;false;63;95;191;;; -41440;5;0;false;false;;;;;; -41445;1;0;false;false;63;95;191;;; -41446;2;0;false;false;;;;;; -41448;4;0;false;false;63;95;191;;; -41452;1;0;false;false;;;;;; -41453;9;0;false;false;63;95;191;;; -41462;4;0;false;false;;;;;; -41466;1;0;false;false;63;95;191;;; -41467;1;0;false;false;;;;;; -41468;7;1;false;false;127;159;191;;; -41475;7;0;false;false;63;95;191;;; -41482;1;0;false;false;;;;;; -41483;1;0;false;false;63;95;191;;; -41484;1;0;false;false;;;;;; -41485;17;0;false;false;63;95;191;;; -41502;1;0;false;false;;;;;; -41503;10;0;false;false;63;95;191;;; -41513;1;0;false;false;;;;;; -41514;3;0;false;false;63;95;191;;; -41517;1;0;false;false;;;;;; -41518;7;0;false;false;63;95;191;;; -41525;1;0;false;false;;;;;; -41526;6;0;false;false;63;95;191;;; -41532;4;0;false;false;;;;;; -41536;1;0;false;false;63;95;191;;; -41537;2;0;false;false;;;;;; -41539;2;0;false;false;63;95;191;;; -41541;1;0;false;false;;;;;; -41542;5;0;false;false;63;95;191;;; -41547;1;0;false;false;;;;;; -41548;2;0;false;false;63;95;191;;; -41550;1;0;false;false;;;;;; -41551;8;0;false;false;63;95;191;;; -41559;1;0;false;false;;;;;; -41560;5;0;false;false;63;95;191;;; -41565;1;0;false;false;;;;;; -41566;3;0;false;false;63;95;191;;; -41569;4;0;false;false;;;;;; -41573;2;0;false;false;63;95;191;;; -41575;3;0;false;false;;;;;; -41578;6;1;false;false;127;0;85;;; -41584;1;0;false;false;;;;;; -41585;28;0;false;false;0;0;0;;; -41613;1;0;false;false;;;;;; -41614;7;0;false;false;0;0;0;;; -41621;1;0;false;false;;;;;; -41622;17;0;false;false;0;0;0;;; -41639;1;0;false;false;;;;;; -41640;8;0;false;false;0;0;0;;; -41648;1;0;false;false;;;;;; -41649;1;0;false;false;0;0;0;;; -41650;4;0;false;false;;;;;; -41654;4;1;false;false;127;0;85;;; -41658;7;0;false;false;0;0;0;;; -41665;1;0;false;false;;;;;; -41666;1;0;false;false;0;0;0;;; -41667;1;0;false;false;;;;;; -41668;7;0;false;false;0;0;0;;; -41675;4;0;false;false;;;;;; -41679;4;1;false;false;127;0;85;;; -41683;8;0;false;false;0;0;0;;; -41691;1;0;false;false;;;;;; -41692;1;0;false;false;0;0;0;;; -41693;1;0;false;false;;;;;; -41694;8;0;false;false;0;0;0;;; -41702;4;0;false;false;;;;;; -41706;4;1;false;false;127;0;85;;; -41710;10;0;false;false;0;0;0;;; -41720;1;0;false;false;;;;;; -41721;1;0;false;false;0;0;0;;; -41722;1;0;false;false;;;;;; -41723;23;0;false;false;0;0;0;;; -41746;4;0;false;false;;;;;; -41750;9;0;false;false;0;0;0;;; -41759;1;0;false;false;;;;;; -41760;1;0;false;false;0;0;0;;; -41761;1;0;false;false;;;;;; -41762;3;1;false;false;127;0;85;;; -41765;1;0;false;false;;;;;; -41766;3;1;false;false;127;0;85;;; -41769;12;0;false;false;0;0;0;;; -41781;4;0;false;false;;;;;; -41785;8;0;false;false;0;0;0;;; -41793;1;0;false;false;;;;;; -41794;10;0;false;false;0;0;0;;; -41804;1;0;false;false;;;;;; -41805;5;1;false;false;127;0;85;;; -41810;2;0;false;false;0;0;0;;; -41812;3;0;false;false;;;;;; -41815;1;0;false;false;0;0;0;;; -41816;3;0;false;false;;;;;; -41819;3;0;false;false;63;95;191;;; -41822;4;0;false;false;;;;;; -41826;1;0;false;false;63;95;191;;; -41827;1;0;false;false;;;;;; -41828;10;0;false;false;63;95;191;;; -41838;1;0;false;false;;;;;; -41839;3;0;false;false;63;95;191;;; -41842;1;0;false;false;;;;;; -41843;5;0;false;false;63;95;191;;; -41848;1;0;false;false;;;;;; -41849;2;0;false;false;63;95;191;;; -41851;1;0;false;false;;;;;; -41852;4;0;false;false;63;95;191;;; -41856;1;0;false;false;;;;;; -41857;4;0;false;false;63;95;191;;; -41861;1;0;false;false;;;;;; -41862;2;0;false;false;63;95;191;;; -41864;1;0;false;false;;;;;; -41865;3;0;false;false;63;95;191;;; -41868;1;0;false;false;;;;;; -41869;5;0;false;false;63;95;191;;; -41874;1;0;false;false;;;;;; -41875;5;0;false;false;63;95;191;;; -41880;1;0;false;false;;;;;; -41881;2;0;false;false;63;95;191;;; -41883;1;0;false;false;;;;;; -41884;2;0;false;false;63;95;191;;; -41886;1;0;false;false;;;;;; -41887;3;0;false;false;63;95;191;;; -41890;4;0;false;false;;;;;; -41894;1;0;false;false;63;95;191;;; -41895;1;0;false;false;;;;;; -41896;3;0;false;false;63;95;191;;; -41899;1;0;false;false;;;;;; -41900;4;0;false;false;63;95;191;;; -41904;1;0;false;false;;;;;; -41905;10;0;false;false;63;95;191;;; -41915;1;0;false;false;;;;;; -41916;4;0;false;false;63;95;191;;; -41920;4;0;false;false;;;;;; -41924;1;0;false;false;63;95;191;;; -41925;1;0;false;false;;;;;; -41926;2;0;false;false;63;95;191;;; -41928;1;0;false;false;;;;;; -41929;3;0;false;false;63;95;191;;; -41932;1;0;false;false;;;;;; -41933;4;0;false;false;63;95;191;;; -41937;1;0;false;false;;;;;; -41938;2;0;false;false;63;95;191;;; -41940;1;0;false;false;;;;;; -41941;3;0;false;false;63;95;191;;; -41944;1;0;false;false;;;;;; -41945;5;0;false;false;63;95;191;;; -41950;1;0;false;false;;;;;; -41951;5;0;false;false;63;95;191;;; -41956;1;0;false;false;;;;;; -41957;2;0;false;false;63;95;191;;; -41959;1;0;false;false;;;;;; -41960;5;0;false;false;63;95;191;;; -41965;1;0;false;false;;;;;; -41966;4;0;false;false;63;95;191;;; -41970;1;0;false;false;;;;;; -41971;3;0;false;false;63;95;191;;; -41974;1;0;false;false;;;;;; -41975;9;0;false;false;63;95;191;;; -41984;1;0;false;false;;;;;; -41985;6;0;false;false;63;95;191;;; -41991;4;0;false;false;;;;;; -41995;1;0;false;false;63;95;191;;; -41996;1;0;false;false;;;;;; -41997;5;0;false;false;63;95;191;;; -42002;1;0;false;false;;;;;; -42003;3;0;false;false;63;95;191;;; -42006;1;0;false;false;;;;;; -42007;7;0;false;false;63;95;191;;; -42014;1;0;false;false;;;;;; -42015;4;0;false;false;63;95;191;;; -42019;1;0;false;false;;;;;; -42020;5;0;false;false;63;95;191;;; -42025;1;0;false;false;;;;;; -42026;2;0;false;false;63;95;191;;; -42028;1;0;false;false;;;;;; -42029;8;0;false;false;63;95;191;;; -42037;4;0;false;false;;;;;; -42041;1;0;false;false;63;95;191;;; -42042;1;0;false;false;;;;;; -42043;3;0;false;false;127;127;159;;; -42046;4;0;false;false;;;;;; -42050;1;0;false;false;63;95;191;;; -42051;5;0;false;false;;;;;; -42056;1;0;false;false;63;95;191;;; -42057;1;0;false;false;;;;;; -42058;7;1;false;false;127;159;191;;; -42065;9;0;false;false;63;95;191;;; -42074;1;0;false;false;;;;;; -42075;5;0;false;false;63;95;191;;; -42080;1;0;false;false;;;;;; -42081;4;0;false;false;63;95;191;;; -42085;1;0;false;false;;;;;; -42086;2;0;false;false;63;95;191;;; -42088;1;0;false;false;;;;;; -42089;9;0;false;false;63;95;191;;; -42098;1;0;false;false;;;;;; -42099;3;0;false;false;63;95;191;;; -42102;1;0;false;false;;;;;; -42103;4;0;false;false;63;95;191;;; -42107;1;0;false;false;;;;;; -42108;5;0;false;false;63;95;191;;; -42113;1;0;false;false;;;;;; -42114;2;0;false;false;63;95;191;;; -42116;4;0;false;false;;;;;; -42120;1;0;false;false;63;95;191;;; -42121;1;0;false;false;;;;;; -42122;7;1;false;false;127;159;191;;; -42129;9;0;false;false;63;95;191;;; -42138;1;0;false;false;;;;;; -42139;6;0;false;false;63;95;191;;; -42145;1;0;false;false;;;;;; -42146;2;0;false;false;63;95;191;;; -42148;1;0;false;false;;;;;; -42149;5;0;false;false;63;95;191;;; -42154;1;0;false;false;;;;;; -42155;2;0;false;false;63;95;191;;; -42157;1;0;false;false;;;;;; -42158;9;0;false;false;63;95;191;;; -42167;1;0;false;false;;;;;; -42168;3;0;false;false;63;95;191;;; -42171;1;0;false;false;;;;;; -42172;4;0;false;false;63;95;191;;; -42176;1;0;false;false;;;;;; -42177;5;0;false;false;63;95;191;;; -42182;1;0;false;false;;;;;; -42183;3;0;false;false;63;95;191;;; -42186;4;0;false;false;;;;;; -42190;2;0;false;false;63;95;191;;; -42192;3;0;false;false;;;;;; -42195;6;1;false;false;127;0;85;;; -42201;1;0;false;false;;;;;; -42202;4;1;false;false;127;0;85;;; -42206;1;0;false;false;;;;;; -42207;10;0;false;false;0;0;0;;; -42217;3;1;false;false;127;0;85;;; -42220;1;0;false;false;;;;;; -42221;10;0;false;false;0;0;0;;; -42231;1;0;false;false;;;;;; -42232;3;1;false;false;127;0;85;;; -42235;1;0;false;false;;;;;; -42236;10;0;false;false;0;0;0;;; -42246;1;0;false;false;;;;;; -42247;1;0;false;false;0;0;0;;; -42248;4;0;false;false;;;;;; -42252;3;1;false;false;127;0;85;;; -42255;1;0;false;false;;;;;; -42256;10;0;false;false;0;0;0;;; -42266;1;0;false;false;;;;;; -42267;1;0;false;false;0;0;0;;; -42268;1;0;false;false;;;;;; -42269;2;0;false;false;0;0;0;;; -42271;4;0;false;false;;;;;; -42275;3;1;false;false;127;0;85;;; -42278;1;0;false;false;;;;;; -42279;7;0;false;false;0;0;0;;; -42286;1;0;false;false;;;;;; -42287;1;0;false;false;0;0;0;;; -42288;1;0;false;false;;;;;; -42289;9;0;false;false;0;0;0;;; -42298;1;0;false;false;;;;;; -42299;1;0;false;false;0;0;0;;; -42300;1;0;false;false;;;;;; -42301;10;0;false;false;0;0;0;;; -42311;9;0;false;false;;;;;; -42320;2;1;false;false;127;0;85;;; -42322;1;0;false;false;;;;;; -42323;10;0;false;false;0;0;0;;; -42333;1;0;false;false;;;;;; -42334;1;0;false;false;0;0;0;;; -42335;1;0;false;false;;;;;; -42336;1;0;false;false;0;0;0;;; -42337;1;0;false;false;;;;;; -42338;2;0;false;false;0;0;0;;; -42340;1;0;false;false;;;;;; -42341;7;0;false;false;0;0;0;;; -42348;1;0;false;false;;;;;; -42349;1;0;false;false;0;0;0;;; -42350;1;0;false;false;;;;;; -42351;17;0;false;false;0;0;0;;; -42368;1;0;false;false;;;;;; -42369;1;0;false;false;0;0;0;;; -42370;5;0;false;false;;;;;; -42375;6;1;false;false;127;0;85;;; -42381;1;0;false;false;0;0;0;;; -42382;4;0;false;false;;;;;; -42386;1;0;false;false;0;0;0;;; -42387;4;0;false;false;;;;;; -42391;10;0;false;false;0;0;0;;; -42401;1;0;false;false;;;;;; -42402;1;0;false;false;0;0;0;;; -42403;1;0;false;false;;;;;; -42404;16;0;false;false;0;0;0;;; -42420;4;0;false;false;;;;;; -42424;3;1;false;false;127;0;85;;; -42427;1;0;false;false;;;;;; -42428;1;0;false;false;0;0;0;;; -42429;3;1;false;false;127;0;85;;; -42432;1;0;false;false;;;;;; -42433;1;0;false;false;0;0;0;;; -42434;1;0;false;false;;;;;; -42435;1;0;false;false;0;0;0;;; -42436;1;0;false;false;;;;;; -42437;10;0;false;false;0;0;0;;; -42447;1;0;false;false;;;;;; -42448;1;0;false;false;0;0;0;;; -42449;1;0;false;false;;;;;; -42450;1;0;false;false;0;0;0;;; -42451;1;0;false;false;;;;;; -42452;8;0;false;false;0;0;0;;; -42460;1;0;false;false;;;;;; -42461;4;0;false;false;0;0;0;;; -42465;1;0;false;false;;;;;; -42466;1;0;false;false;0;0;0;;; -42467;5;0;false;false;;;;;; -42472;2;1;false;false;127;0;85;;; -42474;1;0;false;false;;;;;; -42475;13;0;false;false;0;0;0;;; -42488;1;0;false;false;;;;;; -42489;2;0;false;false;0;0;0;;; -42491;1;0;false;false;;;;;; -42492;3;0;false;false;0;0;0;;; -42495;1;0;false;false;;;;;; -42496;1;0;false;false;0;0;0;;; -42497;6;0;false;false;;;;;; -42503;6;0;false;false;0;0;0;;; -42509;1;0;false;false;;;;;; -42510;4;0;false;false;0;0;0;;; -42514;1;0;false;false;;;;;; -42515;1;0;false;false;0;0;0;;; -42516;1;0;false;false;;;;;; -42517;19;0;false;false;0;0;0;;; -42536;6;0;false;false;;;;;; -42542;3;1;false;false;127;0;85;;; -42545;1;0;false;false;;;;;; -42546;10;0;false;false;0;0;0;;; -42556;1;0;false;false;;;;;; -42557;1;0;false;false;0;0;0;;; -42558;1;0;false;false;;;;;; -42559;27;0;false;false;0;0;0;;; -42586;6;0;false;false;;;;;; -42592;12;0;false;false;0;0;0;;; -42604;1;0;false;false;;;;;; -42605;1;0;false;false;0;0;0;;; -42606;1;0;false;false;;;;;; -42607;18;0;false;false;0;0;0;;; -42625;1;0;false;false;;;;;; -42626;11;0;false;false;0;0;0;;; -42637;1;0;false;false;;;;;; -42638;1;0;false;false;0;0;0;;; -42639;1;0;false;false;;;;;; -42640;11;0;false;false;0;0;0;;; -42651;5;0;false;false;;;;;; -42656;1;0;false;false;0;0;0;;; -42657;5;0;false;false;;;;;; -42662;2;1;false;false;127;0;85;;; -42664;1;0;false;false;;;;;; -42665;13;0;false;false;0;0;0;;; -42678;1;0;false;false;;;;;; -42679;1;0;false;false;0;0;0;;; -42680;1;0;false;false;;;;;; -42681;9;0;false;false;0;0;0;;; -42690;1;0;false;false;;;;;; -42691;1;0;false;false;0;0;0;;; -42692;6;0;false;false;;;;;; -42698;8;0;false;false;0;0;0;;; -42706;1;0;false;false;;;;;; -42707;1;0;false;false;0;0;0;;; -42708;1;0;false;false;;;;;; -42709;13;0;false;false;0;0;0;;; -42722;6;0;false;false;;;;;; -42728;17;0;false;false;0;0;0;;; -42745;1;0;false;false;;;;;; -42746;1;0;false;false;0;0;0;;; -42747;1;0;false;false;;;;;; -42748;2;0;false;false;0;0;0;;; -42750;5;0;false;false;;;;;; -42755;1;0;false;false;0;0;0;;; -42756;4;0;false;false;;;;;; -42760;1;0;false;false;0;0;0;;; -42761;3;0;false;false;;;;;; -42764;1;0;false;false;0;0;0;;; -42765;3;0;false;false;;;;;; -42768;3;0;false;false;63;95;191;;; -42771;5;0;false;false;;;;;; -42776;1;0;false;false;63;95;191;;; -42777;1;0;false;false;;;;;; -42778;10;0;false;false;63;95;191;;; -42788;1;0;false;false;;;;;; -42789;3;0;false;false;63;95;191;;; -42792;1;0;false;false;;;;;; -42793;5;0;false;false;63;95;191;;; -42798;1;0;false;false;;;;;; -42799;2;0;false;false;63;95;191;;; -42801;1;0;false;false;;;;;; -42802;3;0;false;false;63;95;191;;; -42805;1;0;false;false;;;;;; -42806;7;0;false;false;63;95;191;;; -42813;1;0;false;false;;;;;; -42814;5;0;false;false;63;95;191;;; -42819;1;0;false;false;;;;;; -42820;2;0;false;false;63;95;191;;; -42822;1;0;false;false;;;;;; -42823;3;0;false;false;63;95;191;;; -42826;1;0;false;false;;;;;; -42827;9;0;false;false;63;95;191;;; -42836;5;0;false;false;;;;;; -42841;1;0;false;false;63;95;191;;; -42842;1;0;false;false;;;;;; -42843;6;0;false;false;63;95;191;;; -42849;4;0;false;false;;;;;; -42853;1;0;false;false;63;95;191;;; -42854;1;0;false;false;;;;;; -42855;3;0;false;false;127;127;159;;; -42858;4;0;false;false;;;;;; -42862;1;0;false;false;63;95;191;;; -42863;4;0;false;false;;;;;; -42867;1;0;false;false;63;95;191;;; -42868;1;0;false;false;;;;;; -42869;7;1;false;false;127;159;191;;; -42876;9;0;false;false;63;95;191;;; -42885;1;0;false;false;;;;;; -42886;3;0;false;false;63;95;191;;; -42889;1;0;false;false;;;;;; -42890;5;0;false;false;63;95;191;;; -42895;1;0;false;false;;;;;; -42896;7;0;false;false;63;95;191;;; -42903;1;0;false;false;;;;;; -42904;4;0;false;false;63;95;191;;; -42908;4;0;false;false;;;;;; -42912;1;0;false;false;63;95;191;;; -42913;1;0;false;false;;;;;; -42914;7;1;false;false;127;159;191;;; -42921;12;0;false;false;63;95;191;;; -42933;1;0;false;false;;;;;; -42934;3;0;false;false;63;95;191;;; -42937;1;0;false;false;;;;;; -42938;6;0;false;false;63;95;191;;; -42944;1;0;false;false;;;;;; -42945;2;0;false;false;63;95;191;;; -42947;1;0;false;false;;;;;; -42948;8;0;false;false;63;95;191;;; -42956;1;0;false;false;;;;;; -42957;5;0;false;false;63;95;191;;; -42962;4;0;false;false;;;;;; -42966;2;0;false;false;63;95;191;;; -42968;5;0;false;false;;;;;; -42973;4;1;false;false;127;0;85;;; -42977;1;0;false;false;;;;;; -42978;17;0;false;false;0;0;0;;; -42995;3;1;false;false;127;0;85;;; -42998;1;0;false;false;;;;;; -42999;10;0;false;false;0;0;0;;; -43009;1;0;false;false;;;;;; -43010;3;1;false;false;127;0;85;;; -43013;1;0;false;false;;;;;; -43014;13;0;false;false;0;0;0;;; -43027;1;0;false;false;;;;;; -43028;1;0;false;false;0;0;0;;; -43029;4;0;false;false;;;;;; -43033;3;1;false;false;127;0;85;;; -43036;1;0;false;false;;;;;; -43037;8;0;false;false;0;0;0;;; -43045;1;0;false;false;;;;;; -43046;1;0;false;false;0;0;0;;; -43047;1;0;false;false;;;;;; -43048;21;0;false;false;0;0;0;;; -43069;4;0;false;false;;;;;; -43073;3;1;false;false;127;0;85;;; -43076;1;0;false;false;;;;;; -43077;10;0;false;false;0;0;0;;; -43087;1;0;false;false;;;;;; -43088;1;0;false;false;0;0;0;;; -43089;1;0;false;false;;;;;; -43090;33;0;false;false;0;0;0;;; -43123;1;0;false;false;;;;;; -43124;9;0;false;false;0;0;0;;; -43133;1;0;false;false;;;;;; -43134;1;0;false;false;0;0;0;;; -43135;1;0;false;false;;;;;; -43136;14;0;false;false;0;0;0;;; -43150;8;0;false;false;;;;;; -43158;9;0;false;false;0;0;0;;; -43167;1;0;false;false;;;;;; -43168;1;0;false;false;0;0;0;;; -43169;1;0;false;false;;;;;; -43170;19;0;false;false;0;0;0;;; -43189;1;0;false;false;;;;;; -43190;10;0;false;false;0;0;0;;; -43200;4;0;false;false;;;;;; -43204;20;0;false;false;0;0;0;;; -43224;1;0;false;false;;;;;; -43225;10;0;false;false;0;0;0;;; -43235;1;0;false;false;;;;;; -43236;1;0;false;false;0;0;0;;; -43237;1;0;false;false;;;;;; -43238;9;0;false;false;0;0;0;;; -43247;1;0;false;false;;;;;; -43248;1;0;false;false;0;0;0;;; -43249;1;0;false;false;;;;;; -43250;3;0;false;false;0;0;0;;; -43253;3;0;false;false;;;;;; -43256;1;0;false;false;0;0;0;;; -43257;3;0;false;false;;;;;; -43260;3;0;false;false;63;95;191;;; -43263;4;0;false;false;;;;;; -43267;1;0;false;false;63;95;191;;; -43268;1;0;false;false;;;;;; -43269;8;0;false;false;63;95;191;;; -43277;1;0;false;false;;;;;; -43278;3;0;false;false;63;95;191;;; -43281;1;0;false;false;;;;;; -43282;5;0;false;false;63;95;191;;; -43287;1;0;false;false;;;;;; -43288;2;0;false;false;63;95;191;;; -43290;1;0;false;false;;;;;; -43291;3;0;false;false;63;95;191;;; -43294;1;0;false;false;;;;;; -43295;5;0;false;false;63;95;191;;; -43300;1;0;false;false;;;;;; -43301;5;0;false;false;63;95;191;;; -43306;4;0;false;false;;;;;; -43310;1;0;false;false;63;95;191;;; -43311;1;0;false;false;;;;;; -43312;3;0;false;false;127;127;159;;; -43315;4;0;false;false;;;;;; -43319;1;0;false;false;63;95;191;;; -43320;5;0;false;false;;;;;; -43325;1;0;false;false;63;95;191;;; -43326;1;0;false;false;;;;;; -43327;7;1;false;false;127;159;191;;; -43334;4;0;false;false;63;95;191;;; -43338;1;0;false;false;;;;;; -43339;3;0;false;false;63;95;191;;; -43342;1;0;false;false;;;;;; -43343;4;0;false;false;63;95;191;;; -43347;1;0;false;false;;;;;; -43348;2;0;false;false;63;95;191;;; -43350;1;0;false;false;;;;;; -43351;7;0;false;false;63;95;191;;; -43358;4;0;false;false;;;;;; -43362;1;0;false;false;63;95;191;;; -43363;1;0;false;false;;;;;; -43364;7;1;false;false;127;159;191;;; -43371;10;0;false;false;63;95;191;;; -43381;1;0;false;false;;;;;; -43382;5;0;false;false;63;95;191;;; -43387;1;0;false;false;;;;;; -43388;6;0;false;false;63;95;191;;; -43394;1;0;false;false;;;;;; -43395;2;0;false;false;63;95;191;;; -43397;1;0;false;false;;;;;; -43398;3;0;false;false;63;95;191;;; -43401;1;0;false;false;;;;;; -43402;4;0;false;false;63;95;191;;; -43406;1;0;false;false;;;;;; -43407;2;0;false;false;63;95;191;;; -43409;1;0;false;false;;;;;; -43410;8;0;false;false;63;95;191;;; -43418;1;0;false;false;;;;;; -43419;8;0;false;false;63;95;191;;; -43427;5;0;false;false;;;;;; -43432;1;0;false;false;63;95;191;;; -43433;2;0;false;false;;;;;; -43435;2;0;false;false;63;95;191;;; -43437;1;0;false;false;;;;;; -43438;3;0;false;false;63;95;191;;; -43441;1;0;false;false;;;;;; -43442;5;0;false;false;63;95;191;;; -43447;1;0;false;false;;;;;; -43448;2;0;false;false;63;95;191;;; -43450;1;0;false;false;;;;;; -43451;3;0;false;false;63;95;191;;; -43454;1;0;false;false;;;;;; -43455;8;0;false;false;63;95;191;;; -43463;4;0;false;false;;;;;; -43467;1;0;false;false;63;95;191;;; -43468;1;0;false;false;;;;;; -43469;8;1;false;false;127;159;191;;; -43477;3;0;false;false;63;95;191;;; -43480;1;0;false;false;;;;;; -43481;5;0;false;false;63;95;191;;; -43486;1;0;false;false;;;;;; -43487;2;0;false;false;63;95;191;;; -43489;1;0;false;false;;;;;; -43490;3;0;false;false;63;95;191;;; -43493;1;0;false;false;;;;;; -43494;5;0;false;false;63;95;191;;; -43499;1;0;false;false;;;;;; -43500;4;0;false;false;63;95;191;;; -43504;4;0;false;false;;;;;; -43508;2;0;false;false;63;95;191;;; -43510;3;0;false;false;;;;;; -43513;3;1;false;false;127;0;85;;; -43516;1;0;false;false;;;;;; -43517;19;0;false;false;0;0;0;;; -43536;1;0;false;false;;;;;; -43537;5;0;false;false;0;0;0;;; -43542;1;0;false;false;;;;;; -43543;3;1;false;false;127;0;85;;; -43546;1;0;false;false;;;;;; -43547;11;0;false;false;0;0;0;;; -43558;1;0;false;false;;;;;; -43559;1;0;false;false;0;0;0;;; -43560;4;0;false;false;;;;;; -43564;10;0;false;false;0;0;0;;; -43574;1;0;false;false;;;;;; -43575;6;0;false;false;0;0;0;;; -43581;1;0;false;false;;;;;; -43582;1;0;false;false;0;0;0;;; -43583;1;0;false;false;;;;;; -43584;28;0;false;false;0;0;0;;; -43612;1;0;false;false;;;;;; -43613;12;0;false;false;0;0;0;;; -43625;4;0;false;false;;;;;; -43629;9;0;false;false;0;0;0;;; -43638;1;0;false;false;;;;;; -43639;4;0;false;false;0;0;0;;; -43643;1;0;false;false;;;;;; -43644;1;0;false;false;0;0;0;;; -43645;1;0;false;false;;;;;; -43646;24;0;false;false;0;0;0;;; -43670;4;0;false;false;;;;;; -43674;35;0;false;false;0;0;0;;; -43709;4;0;false;false;;;;;; -43713;6;1;false;false;127;0;85;;; -43719;1;0;false;false;;;;;; -43720;6;0;false;false;0;0;0;;; -43726;1;0;false;false;;;;;; -43727;1;0;false;false;0;0;0;;; -43728;1;0;false;false;;;;;; -43729;10;0;false;false;0;0;0;;; -43739;1;0;false;false;;;;;; -43740;1;0;false;false;0;0;0;;; -43741;1;0;false;false;;;;;; -43742;10;0;false;false;0;0;0;;; -43752;1;0;false;false;;;;;; -43753;1;0;false;false;0;0;0;;; -43754;1;0;false;false;;;;;; -43755;12;0;false;false;0;0;0;;; -43767;3;0;false;false;;;;;; -43770;1;0;false;false;0;0;0;;; -43771;3;0;false;false;;;;;; -43774;3;0;false;false;63;95;191;;; -43777;4;0;false;false;;;;;; -43781;1;0;false;false;63;95;191;;; -43782;1;0;false;false;;;;;; -43783;5;0;false;false;63;95;191;;; -43788;1;0;false;false;;;;;; -43789;3;0;false;false;63;95;191;;; -43792;1;0;false;false;;;;;; -43793;6;0;false;false;127;127;159;;; -43799;9;0;false;false;63;95;191;;; -43808;7;0;false;false;127;127;159;;; -43815;1;0;false;false;;;;;; -43816;5;0;false;false;63;95;191;;; -43821;1;0;false;false;;;;;; -43822;2;0;false;false;63;95;191;;; -43824;1;0;false;false;;;;;; -43825;10;0;false;false;63;95;191;;; -43835;1;0;false;false;;;;;; -43836;3;0;false;false;63;95;191;;; -43839;1;0;false;false;;;;;; -43840;4;0;false;false;63;95;191;;; -43844;1;0;false;false;;;;;; -43845;5;0;false;false;63;95;191;;; -43850;4;0;false;false;;;;;; -43854;1;0;false;false;63;95;191;;; -43855;1;0;false;false;;;;;; -43856;12;0;false;false;63;95;191;;; -43868;4;0;false;false;;;;;; -43872;1;0;false;false;63;95;191;;; -43873;1;0;false;false;;;;;; -43874;3;0;false;false;127;127;159;;; -43877;4;0;false;false;;;;;; -43881;1;0;false;false;63;95;191;;; -43882;4;0;false;false;;;;;; -43886;1;0;false;false;63;95;191;;; -43887;1;0;false;false;;;;;; -43888;7;1;false;false;127;159;191;;; -43895;8;0;false;false;63;95;191;;; -43903;1;0;false;false;;;;;; -43904;3;0;false;false;63;95;191;;; -43907;1;0;false;false;;;;;; -43908;6;0;false;false;63;95;191;;; -43914;1;0;false;false;;;;;; -43915;2;0;false;false;63;95;191;;; -43917;1;0;false;false;;;;;; -43918;8;0;false;false;63;95;191;;; -43926;1;0;false;false;;;;;; -43927;2;0;false;false;63;95;191;;; -43929;1;0;false;false;;;;;; -43930;8;0;false;false;63;95;191;;; -43938;1;0;false;false;;;;;; -43939;3;0;false;false;63;95;191;;; -43942;1;0;false;false;;;;;; -43943;5;0;false;false;63;95;191;;; -43948;1;0;false;false;;;;;; -43949;2;0;false;false;63;95;191;;; -43951;4;0;false;false;;;;;; -43955;2;0;false;false;63;95;191;;; -43957;3;0;false;false;;;;;; -43960;4;1;false;false;127;0;85;;; -43964;1;0;false;false;;;;;; -43965;12;0;false;false;0;0;0;;; -43977;3;1;false;false;127;0;85;;; -43980;1;0;false;false;;;;;; -43981;9;0;false;false;0;0;0;;; -43990;1;0;false;false;;;;;; -43991;1;0;false;false;0;0;0;;; -43992;4;0;false;false;;;;;; -43996;3;1;false;false;127;0;85;;; -43999;1;0;false;false;;;;;; -44000;4;0;false;false;0;0;0;;; -44004;1;0;false;false;;;;;; -44005;1;0;false;false;0;0;0;;; -44006;1;0;false;false;;;;;; -44007;17;0;false;false;0;0;0;;; -44024;4;0;false;false;;;;;; -44028;2;1;false;false;127;0;85;;; -44030;1;0;false;false;;;;;; -44031;5;0;false;false;0;0;0;;; -44036;1;0;false;false;;;;;; -44037;1;0;false;false;0;0;0;;; -44038;1;0;false;false;;;;;; -44039;9;0;false;false;0;0;0;;; -44048;1;0;false;false;;;;;; -44049;2;0;false;false;0;0;0;;; -44051;1;0;false;false;;;;;; -44052;9;0;false;false;0;0;0;;; -44061;1;0;false;false;;;;;; -44062;1;0;false;false;0;0;0;;; -44063;5;0;false;false;;;;;; -44068;6;1;false;false;127;0;85;;; -44074;1;0;false;false;0;0;0;;; -44075;4;0;false;false;;;;;; -44079;1;0;false;false;0;0;0;;; -44080;4;0;false;false;;;;;; -44084;3;1;false;false;127;0;85;;; -44087;2;0;false;false;0;0;0;;; -44089;1;0;false;false;;;;;; -44090;8;0;false;false;0;0;0;;; -44098;1;0;false;false;;;;;; -44099;1;0;false;false;0;0;0;;; -44100;1;0;false;false;;;;;; -44101;3;1;false;false;127;0;85;;; -44104;1;0;false;false;;;;;; -44105;3;1;false;false;127;0;85;;; -44108;14;0;false;false;0;0;0;;; -44122;1;0;false;false;;;;;; -44123;1;0;false;false;0;0;0;;; -44124;1;0;false;false;;;;;; -44125;2;0;false;false;0;0;0;;; -44127;1;0;false;false;;;;;; -44128;4;0;false;false;0;0;0;;; -44132;1;0;false;false;;;;;; -44133;1;0;false;false;0;0;0;;; -44134;1;0;false;false;;;;;; -44135;11;0;false;false;0;0;0;;; -44146;4;0;false;false;;;;;; -44150;27;0;false;false;0;0;0;;; -44177;1;0;false;false;;;;;; -44178;2;0;false;false;0;0;0;;; -44180;1;0;false;false;;;;;; -44181;9;0;false;false;0;0;0;;; -44190;1;0;false;false;;;;;; -44191;2;0;false;false;0;0;0;;; -44193;1;0;false;false;;;;;; -44194;6;0;false;false;0;0;0;;; -44200;4;0;false;false;;;;;; -44204;9;0;false;false;0;0;0;;; -44213;1;0;false;false;;;;;; -44214;1;0;false;false;0;0;0;;; -44215;1;0;false;false;;;;;; -44216;9;0;false;false;0;0;0;;; -44225;4;0;false;false;;;;;; -44229;11;0;false;false;0;0;0;;; -44240;1;0;false;false;;;;;; -44241;16;0;false;false;0;0;0;;; -44257;1;0;false;false;;;;;; -44258;1;0;false;false;0;0;0;;; -44259;1;0;false;false;;;;;; -44260;5;0;false;false;0;0;0;;; -44265;1;0;false;false;;;;;; -44266;5;1;false;false;127;0;85;;; -44271;2;0;false;false;0;0;0;;; -44273;3;0;false;false;;;;;; -44276;1;0;false;false;0;0;0;;; -44277;3;0;false;false;;;;;; -44280;3;0;false;false;63;95;191;;; -44283;4;0;false;false;;;;;; -44287;1;0;false;false;63;95;191;;; -44288;1;0;false;false;;;;;; -44289;7;0;false;false;63;95;191;;; -44296;1;0;false;false;;;;;; -44297;3;0;false;false;63;95;191;;; -44300;1;0;false;false;;;;;; -44301;5;0;false;false;63;95;191;;; -44306;1;0;false;false;;;;;; -44307;2;0;false;false;63;95;191;;; -44309;1;0;false;false;;;;;; -44310;3;0;false;false;63;95;191;;; -44313;1;0;false;false;;;;;; -44314;7;0;false;false;63;95;191;;; -44321;1;0;false;false;;;;;; -44322;8;0;false;false;63;95;191;;; -44330;1;0;false;false;;;;;; -44331;5;0;false;false;63;95;191;;; -44336;4;0;false;false;;;;;; -44340;1;0;false;false;63;95;191;;; -44341;1;0;false;false;;;;;; -44342;3;0;false;false;127;127;159;;; -44345;4;0;false;false;;;;;; -44349;1;0;false;false;63;95;191;;; -44350;4;0;false;false;;;;;; -44354;1;0;false;false;63;95;191;;; -44355;1;0;false;false;;;;;; -44356;8;1;false;false;127;159;191;;; -44364;3;0;false;false;63;95;191;;; -44367;1;0;false;false;;;;;; -44368;5;0;false;false;63;95;191;;; -44373;1;0;false;false;;;;;; -44374;2;0;false;false;63;95;191;;; -44376;1;0;false;false;;;;;; -44377;3;0;false;false;63;95;191;;; -44380;1;0;false;false;;;;;; -44381;7;0;false;false;63;95;191;;; -44388;1;0;false;false;;;;;; -44389;8;0;false;false;63;95;191;;; -44397;1;0;false;false;;;;;; -44398;5;0;false;false;63;95;191;;; -44403;4;0;false;false;;;;;; -44407;2;0;false;false;63;95;191;;; -44409;3;0;false;false;;;;;; -44412;6;1;false;false;127;0;85;;; -44418;1;0;false;false;;;;;; -44419;3;1;false;false;127;0;85;;; -44422;1;0;false;false;;;;;; -44423;10;0;false;false;0;0;0;;; -44433;1;0;false;false;;;;;; -44434;1;0;false;false;0;0;0;;; -44435;4;0;false;false;;;;;; -44439;6;1;false;false;127;0;85;;; -44445;1;0;false;false;;;;;; -44446;9;0;false;false;0;0;0;;; -44455;3;0;false;false;;;;;; -44458;1;0;false;false;0;0;0;;; -44459;3;0;false;false;;;;;; -44462;3;0;false;false;63;95;191;;; -44465;4;0;false;false;;;;;; -44469;1;0;false;false;63;95;191;;; -44470;1;0;false;false;;;;;; -44471;7;0;false;false;63;95;191;;; -44478;1;0;false;false;;;;;; -44479;3;0;false;false;63;95;191;;; -44482;1;0;false;false;;;;;; -44483;4;0;false;false;63;95;191;;; -44487;1;0;false;false;;;;;; -44488;5;0;false;false;63;95;191;;; -44493;1;0;false;false;;;;;; -44494;5;0;false;false;63;95;191;;; -44499;1;0;false;false;;;;;; -44500;2;0;false;false;63;95;191;;; -44502;1;0;false;false;;;;;; -44503;7;0;false;false;63;95;191;;; -44510;1;0;false;false;;;;;; -44511;8;0;false;false;63;95;191;;; -44519;1;0;false;false;;;;;; -44520;2;0;false;false;63;95;191;;; -44522;1;0;false;false;;;;;; -44523;7;0;false;false;63;95;191;;; -44530;1;0;false;false;;;;;; -44531;6;0;false;false;63;95;191;;; -44537;4;0;false;false;;;;;; -44541;1;0;false;false;63;95;191;;; -44542;1;0;false;false;;;;;; -44543;3;0;false;false;127;127;159;;; -44546;4;0;false;false;;;;;; -44550;1;0;false;false;63;95;191;;; -44551;4;0;false;false;;;;;; -44555;1;0;false;false;63;95;191;;; -44556;1;0;false;false;;;;;; -44557;7;1;false;false;127;159;191;;; -44564;9;0;false;false;63;95;191;;; -44573;1;0;false;false;;;;;; -44574;3;0;false;false;63;95;191;;; -44577;1;0;false;false;;;;;; -44578;8;0;false;false;63;95;191;;; -44586;1;0;false;false;;;;;; -44587;4;0;false;false;63;95;191;;; -44591;1;0;false;false;;;;;; -44592;2;0;false;false;63;95;191;;; -44594;1;0;false;false;;;;;; -44595;3;0;false;false;63;95;191;;; -44598;1;0;false;false;;;;;; -44599;6;0;false;false;63;95;191;;; -44605;1;0;false;false;;;;;; -44606;4;0;false;false;63;95;191;;; -44610;1;0;false;false;;;;;; -44611;4;0;false;false;63;95;191;;; -44615;1;0;false;false;;;;;; -44616;5;0;false;false;63;95;191;;; -44621;4;0;false;false;;;;;; -44625;1;0;false;false;63;95;191;;; -44626;1;0;false;false;;;;;; -44627;7;1;false;false;127;159;191;;; -44634;5;0;false;false;63;95;191;;; -44639;1;0;false;false;;;;;; -44640;3;0;false;false;63;95;191;;; -44643;1;0;false;false;;;;;; -44644;6;0;false;false;63;95;191;;; -44650;1;0;false;false;;;;;; -44651;2;0;false;false;63;95;191;;; -44653;1;0;false;false;;;;;; -44654;5;0;false;false;63;95;191;;; -44659;1;0;false;false;;;;;; -44660;2;0;false;false;63;95;191;;; -44662;1;0;false;false;;;;;; -44663;3;0;false;false;63;95;191;;; -44666;1;0;false;false;;;;;; -44667;7;0;false;false;63;95;191;;; -44674;1;0;false;false;;;;;; -44675;1;0;false;false;63;95;191;;; -44676;1;0;false;false;;;;;; -44677;1;0;false;false;63;95;191;;; -44678;1;0;false;false;;;;;; -44679;9;0;false;false;63;95;191;;; -44688;1;0;false;false;;;;;; -44689;5;0;false;false;63;95;191;;; -44694;1;0;false;false;;;;;; -44695;9;0;false;false;63;95;191;;; -44704;4;0;false;false;;;;;; -44708;1;0;false;false;63;95;191;;; -44709;2;0;false;false;;;;;; -44711;29;0;false;false;63;95;191;;; -44740;2;0;false;false;;;;;; -44742;2;0;false;false;63;95;191;;; -44744;3;0;false;false;;;;;; -44747;4;1;false;false;127;0;85;;; -44751;1;0;false;false;;;;;; -44752;13;0;false;false;0;0;0;;; -44765;3;1;false;false;127;0;85;;; -44768;1;0;false;false;;;;;; -44769;10;0;false;false;0;0;0;;; -44779;1;0;false;false;;;;;; -44780;3;1;false;false;127;0;85;;; -44783;1;0;false;false;;;;;; -44784;6;0;false;false;0;0;0;;; -44790;1;0;false;false;;;;;; -44791;1;0;false;false;0;0;0;;; -44792;4;0;false;false;;;;;; -44796;7;1;false;false;127;0;85;;; -44803;1;0;false;false;;;;;; -44804;9;0;false;false;0;0;0;;; -44813;1;0;false;false;;;;;; -44814;1;0;false;false;0;0;0;;; -44815;1;0;false;false;;;;;; -44816;5;0;false;false;0;0;0;;; -44821;1;0;false;false;;;;;; -44822;1;0;false;false;0;0;0;;; -44823;1;0;false;false;;;;;; -44824;2;0;false;false;0;0;0;;; -44826;8;0;false;false;;;;;; -44834;2;1;false;false;127;0;85;;; -44836;1;0;false;false;;;;;; -44837;6;0;false;false;0;0;0;;; -44843;1;0;false;false;;;;;; -44844;2;0;false;false;0;0;0;;; -44846;1;0;false;false;;;;;; -44847;2;0;false;false;0;0;0;;; -44849;1;0;false;false;;;;;; -44850;1;0;false;false;0;0;0;;; -44851;5;0;false;false;;;;;; -44856;6;1;false;false;127;0;85;;; -44862;1;0;false;false;0;0;0;;; -44863;4;0;false;false;;;;;; -44867;1;0;false;false;0;0;0;;; -44868;4;0;false;false;;;;;; -44872;2;1;false;false;127;0;85;;; -44874;1;0;false;false;;;;;; -44875;11;0;false;false;0;0;0;;; -44886;1;0;false;false;;;;;; -44887;1;0;false;false;0;0;0;;; -44888;5;0;false;false;;;;;; -44893;52;0;false;false;63;127;95;;; -44945;3;0;false;false;;;;;; -44948;19;0;false;false;0;0;0;;; -44967;5;0;false;false;;;;;; -44972;3;1;false;false;127;0;85;;; -44975;1;0;false;false;;;;;; -44976;1;0;false;false;0;0;0;;; -44977;3;1;false;false;127;0;85;;; -44980;1;0;false;false;;;;;; -44981;1;0;false;false;0;0;0;;; -44982;1;0;false;false;;;;;; -44983;1;0;false;false;0;0;0;;; -44984;1;0;false;false;;;;;; -44985;9;0;false;false;0;0;0;;; -44994;1;0;false;false;;;;;; -44995;1;0;false;false;0;0;0;;; -44996;1;0;false;false;;;;;; -44997;2;0;false;false;0;0;0;;; -44999;1;0;false;false;;;;;; -45000;1;0;false;false;0;0;0;;; -45001;1;0;false;false;;;;;; -45002;2;0;false;false;0;0;0;;; -45004;1;0;false;false;;;;;; -45005;10;0;false;false;0;0;0;;; -45015;1;0;false;false;;;;;; -45016;4;0;false;false;0;0;0;;; -45020;1;0;false;false;;;;;; -45021;1;0;false;false;0;0;0;;; -45022;6;0;false;false;;;;;; -45028;11;0;false;false;0;0;0;;; -45039;1;0;false;false;;;;;; -45040;1;0;false;false;0;0;0;;; -45041;1;0;false;false;;;;;; -45042;6;0;false;false;0;0;0;;; -45048;1;0;false;false;;;;;; -45049;1;0;false;false;0;0;0;;; -45050;1;0;false;false;;;;;; -45051;13;0;false;false;0;0;0;;; -45064;5;0;false;false;;;;;; -45069;1;0;false;false;0;0;0;;; -45070;5;0;false;false;;;;;; -45075;24;0;false;false;63;127;95;;; -45099;3;0;false;false;;;;;; -45102;3;1;false;false;127;0;85;;; -45105;1;0;false;false;;;;;; -45106;1;0;false;false;0;0;0;;; -45107;3;1;false;false;127;0;85;;; -45110;1;0;false;false;;;;;; -45111;1;0;false;false;0;0;0;;; -45112;1;0;false;false;;;;;; -45113;1;0;false;false;0;0;0;;; -45114;1;0;false;false;;;;;; -45115;9;0;false;false;0;0;0;;; -45124;1;0;false;false;;;;;; -45125;1;0;false;false;0;0;0;;; -45126;1;0;false;false;;;;;; -45127;2;0;false;false;0;0;0;;; -45129;1;0;false;false;;;;;; -45130;1;0;false;false;0;0;0;;; -45131;1;0;false;false;;;;;; -45132;2;0;false;false;0;0;0;;; -45134;1;0;false;false;;;;;; -45135;9;0;false;false;0;0;0;;; -45144;1;0;false;false;;;;;; -45145;1;0;false;false;0;0;0;;; -45146;1;0;false;false;;;;;; -45147;5;0;false;false;0;0;0;;; -45152;1;0;false;false;;;;;; -45153;2;0;false;false;0;0;0;;; -45155;1;0;false;false;;;;;; -45156;1;0;false;false;0;0;0;;; -45157;1;0;false;false;;;;;; -45158;1;0;false;false;0;0;0;;; -45159;1;0;false;false;;;;;; -45160;17;0;false;false;0;0;0;;; -45177;1;0;false;false;;;;;; -45178;4;0;false;false;0;0;0;;; -45182;1;0;false;false;;;;;; -45183;1;0;false;false;0;0;0;;; -45184;6;0;false;false;;;;;; -45190;12;0;false;false;0;0;0;;; -45202;1;0;false;false;;;;;; -45203;1;0;false;false;0;0;0;;; -45204;1;0;false;false;;;;;; -45205;3;0;false;false;0;0;0;;; -45208;5;0;false;false;;;;;; -45213;1;0;false;false;0;0;0;;; -45214;5;0;false;false;;;;;; -45219;57;0;false;false;63;127;95;;; -45276;3;0;false;false;;;;;; -45279;2;1;false;false;127;0;85;;; -45281;1;0;false;false;;;;;; -45282;18;0;false;false;0;0;0;;; -45300;1;0;false;false;;;;;; -45301;2;0;false;false;0;0;0;;; -45303;1;0;false;false;;;;;; -45304;10;0;false;false;0;0;0;;; -45314;1;0;false;false;;;;;; -45315;1;0;false;false;0;0;0;;; -45316;6;0;false;false;;;;;; -45322;17;0;false;false;0;0;0;;; -45339;1;0;false;false;;;;;; -45340;2;0;false;false;0;0;0;;; -45342;1;0;false;false;;;;;; -45343;6;0;false;false;0;0;0;;; -45349;5;0;false;false;;;;;; -45354;1;0;false;false;0;0;0;;; -45355;4;0;false;false;;;;;; -45359;1;0;false;false;0;0;0;;; -45360;5;0;false;false;;;;;; -45365;4;1;false;false;127;0;85;;; -45369;1;0;false;false;;;;;; -45370;1;0;false;false;0;0;0;;; -45371;5;0;false;false;;;;;; -45376;23;0;false;false;63;127;95;;; -45399;3;0;false;false;;;;;; -45402;3;1;false;false;127;0;85;;; -45405;1;0;false;false;;;;;; -45406;1;0;false;false;0;0;0;;; -45407;3;1;false;false;127;0;85;;; -45410;1;0;false;false;;;;;; -45411;1;0;false;false;0;0;0;;; -45412;1;0;false;false;;;;;; -45413;1;0;false;false;0;0;0;;; -45414;1;0;false;false;;;;;; -45415;9;0;false;false;0;0;0;;; -45424;1;0;false;false;;;;;; -45425;1;0;false;false;0;0;0;;; -45426;1;0;false;false;;;;;; -45427;6;0;false;false;0;0;0;;; -45433;1;0;false;false;;;;;; -45434;1;0;false;false;0;0;0;;; -45435;1;0;false;false;;;;;; -45436;1;0;false;false;0;0;0;;; -45437;1;0;false;false;;;;;; -45438;10;0;false;false;0;0;0;;; -45448;1;0;false;false;;;;;; -45449;4;0;false;false;0;0;0;;; -45453;1;0;false;false;;;;;; -45454;1;0;false;false;0;0;0;;; -45455;6;0;false;false;;;;;; -45461;18;0;false;false;0;0;0;;; -45479;1;0;false;false;;;;;; -45480;1;0;false;false;0;0;0;;; -45481;1;0;false;false;;;;;; -45482;13;0;false;false;0;0;0;;; -45495;5;0;false;false;;;;;; -45500;1;0;false;false;0;0;0;;; -45501;5;0;false;false;;;;;; -45506;39;0;false;false;63;127;95;;; -45545;3;0;false;false;;;;;; -45548;2;1;false;false;127;0;85;;; -45550;1;0;false;false;;;;;; -45551;18;0;false;false;0;0;0;;; -45569;1;0;false;false;;;;;; -45570;1;0;false;false;0;0;0;;; -45571;1;0;false;false;;;;;; -45572;9;0;false;false;0;0;0;;; -45581;1;0;false;false;;;;;; -45582;2;0;false;false;0;0;0;;; -45584;1;0;false;false;;;;;; -45585;17;0;false;false;0;0;0;;; -45602;1;0;false;false;;;;;; -45603;2;0;false;false;0;0;0;;; -45605;1;0;false;false;;;;;; -45606;9;0;false;false;0;0;0;;; -45615;1;0;false;false;;;;;; -45616;1;0;false;false;0;0;0;;; -45617;1;0;false;false;;;;;; -45618;6;0;false;false;0;0;0;;; -45624;1;0;false;false;;;;;; -45625;1;0;false;false;0;0;0;;; -45626;6;0;false;false;;;;;; -45632;8;0;false;false;0;0;0;;; -45640;1;0;false;false;;;;;; -45641;1;0;false;false;0;0;0;;; -45642;1;0;false;false;;;;;; -45643;2;0;false;false;0;0;0;;; -45645;6;0;false;false;;;;;; -45651;17;0;false;false;0;0;0;;; -45668;1;0;false;false;;;;;; -45669;1;0;false;false;0;0;0;;; -45670;1;0;false;false;;;;;; -45671;3;0;false;false;0;0;0;;; -45674;5;0;false;false;;;;;; -45679;1;0;false;false;0;0;0;;; -45680;5;0;false;false;;;;;; -45685;4;1;false;false;127;0;85;;; -45689;5;0;false;false;;;;;; -45694;2;1;false;false;127;0;85;;; -45696;1;0;false;false;;;;;; -45697;18;0;false;false;0;0;0;;; -45715;1;0;false;false;;;;;; -45716;2;0;false;false;0;0;0;;; -45718;1;0;false;false;;;;;; -45719;9;0;false;false;0;0;0;;; -45728;1;0;false;false;;;;;; -45729;1;0;false;false;0;0;0;;; -45730;1;0;false;false;;;;;; -45731;6;0;false;false;0;0;0;;; -45737;1;0;false;false;;;;;; -45738;1;0;false;false;0;0;0;;; -45739;6;0;false;false;;;;;; -45745;17;0;false;false;0;0;0;;; -45762;1;0;false;false;;;;;; -45763;2;0;false;false;0;0;0;;; -45765;1;0;false;false;;;;;; -45766;6;0;false;false;0;0;0;;; -45772;5;0;false;false;;;;;; -45777;1;0;false;false;0;0;0;;; -45778;4;0;false;false;;;;;; -45782;1;0;false;false;0;0;0;;; -45783;4;0;false;false;;;;;; -45787;9;0;false;false;0;0;0;;; -45796;1;0;false;false;;;;;; -45797;2;0;false;false;0;0;0;;; -45799;1;0;false;false;;;;;; -45800;6;0;false;false;0;0;0;;; -45806;3;0;false;false;;;;;; -45809;1;0;false;false;0;0;0;;; -45810;3;0;false;false;;;;;; -45813;3;0;false;false;63;95;191;;; -45816;4;0;false;false;;;;;; -45820;1;0;false;false;63;95;191;;; -45821;1;0;false;false;;;;;; -45822;6;0;false;false;63;95;191;;; -45828;1;0;false;false;;;;;; -45829;3;0;false;false;63;95;191;;; -45832;1;0;false;false;;;;;; -45833;4;0;false;false;63;95;191;;; -45837;1;0;false;false;;;;;; -45838;5;0;false;false;63;95;191;;; -45843;1;0;false;false;;;;;; -45844;2;0;false;false;63;95;191;;; -45846;1;0;false;false;;;;;; -45847;3;0;false;false;63;95;191;;; -45850;1;0;false;false;;;;;; -45851;5;0;false;false;63;95;191;;; -45856;1;0;false;false;;;;;; -45857;2;0;false;false;63;95;191;;; -45859;1;0;false;false;;;;;; -45860;3;0;false;false;63;95;191;;; -45863;1;0;false;false;;;;;; -45864;9;0;false;false;63;95;191;;; -45873;1;0;false;false;;;;;; -45874;6;0;false;false;63;95;191;;; -45880;4;0;false;false;;;;;; -45884;1;0;false;false;63;95;191;;; -45885;1;0;false;false;;;;;; -45886;3;0;false;false;127;127;159;;; -45889;4;0;false;false;;;;;; -45893;1;0;false;false;63;95;191;;; -45894;4;0;false;false;;;;;; -45898;1;0;false;false;63;95;191;;; -45899;1;0;false;false;;;;;; -45900;7;1;false;false;127;159;191;;; -45907;9;0;false;false;63;95;191;;; -45916;1;0;false;false;;;;;; -45917;3;0;false;false;63;95;191;;; -45920;1;0;false;false;;;;;; -45921;5;0;false;false;63;95;191;;; -45926;1;0;false;false;;;;;; -45927;4;0;false;false;63;95;191;;; -45931;1;0;false;false;;;;;; -45932;2;0;false;false;63;95;191;;; -45934;1;0;false;false;;;;;; -45935;5;0;false;false;63;95;191;;; -45940;4;0;false;false;;;;;; -45944;1;0;false;false;63;95;191;;; -45945;1;0;false;false;;;;;; -45946;7;1;false;false;127;159;191;;; -45953;9;0;false;false;63;95;191;;; -45962;1;0;false;false;;;;;; -45963;3;0;false;false;63;95;191;;; -45966;1;0;false;false;;;;;; -45967;6;0;false;false;63;95;191;;; -45973;1;0;false;false;;;;;; -45974;2;0;false;false;63;95;191;;; -45976;1;0;false;false;;;;;; -45977;5;0;false;false;63;95;191;;; -45982;1;0;false;false;;;;;; -45983;2;0;false;false;63;95;191;;; -45985;1;0;false;false;;;;;; -45986;5;0;false;false;63;95;191;;; -45991;4;0;false;false;;;;;; -45995;1;0;false;false;63;95;191;;; -45996;1;0;false;false;;;;;; -45997;7;1;false;false;127;159;191;;; -46004;17;0;false;false;63;95;191;;; -46021;1;0;false;false;;;;;; -46022;7;0;false;false;63;95;191;;; -46029;1;0;false;false;;;;;; -46030;3;0;false;false;63;95;191;;; -46033;1;0;false;false;;;;;; -46034;6;0;false;false;63;95;191;;; -46040;1;0;false;false;;;;;; -46041;4;0;false;false;63;95;191;;; -46045;1;0;false;false;;;;;; -46046;2;0;false;false;63;95;191;;; -46048;1;0;false;false;;;;;; -46049;5;0;false;false;63;95;191;;; -46054;5;0;false;false;;;;;; -46059;1;0;false;false;63;95;191;;; -46060;2;0;false;false;;;;;; -46062;5;0;false;false;63;95;191;;; -46067;1;0;false;false;;;;;; -46068;3;0;false;false;63;95;191;;; -46071;1;0;false;false;;;;;; -46072;7;0;false;false;63;95;191;;; -46079;1;0;false;false;;;;;; -46080;5;0;false;false;63;95;191;;; -46085;1;0;false;false;;;;;; -46086;2;0;false;false;63;95;191;;; -46088;1;0;false;false;;;;;; -46089;3;0;false;false;63;95;191;;; -46092;1;0;false;false;;;;;; -46093;9;0;false;false;63;95;191;;; -46102;1;0;false;false;;;;;; -46103;6;0;false;false;63;95;191;;; -46109;1;0;false;false;;;;;; -46110;5;0;false;false;63;95;191;;; -46115;1;0;false;false;;;;;; -46116;2;0;false;false;63;95;191;;; -46118;5;0;false;false;;;;;; -46123;1;0;false;false;63;95;191;;; -46124;2;0;false;false;;;;;; -46126;11;0;false;false;63;95;191;;; -46137;1;0;false;false;;;;;; -46138;9;0;false;false;63;95;191;;; -46147;1;0;false;false;;;;;; -46148;7;0;false;false;63;95;191;;; -46155;1;0;false;false;;;;;; -46156;5;0;false;false;63;95;191;;; -46161;1;0;false;false;;;;;; -46162;2;0;false;false;63;95;191;;; -46164;1;0;false;false;;;;;; -46165;3;0;false;false;63;95;191;;; -46168;1;0;false;false;;;;;; -46169;2;0;false;false;63;95;191;;; -46171;1;0;false;false;;;;;; -46172;1;0;false;false;63;95;191;;; -46173;1;0;false;false;;;;;; -46174;2;0;false;false;63;95;191;;; -46176;1;0;false;false;;;;;; -46177;3;0;false;false;63;95;191;;; -46180;5;0;false;false;;;;;; -46185;1;0;false;false;63;95;191;;; -46186;2;0;false;false;;;;;; -46188;6;0;false;false;63;95;191;;; -46194;1;0;false;false;;;;;; -46195;4;0;false;false;63;95;191;;; -46199;1;0;false;false;;;;;; -46200;2;0;false;false;63;95;191;;; -46202;1;0;false;false;;;;;; -46203;5;0;false;false;63;95;191;;; -46208;1;0;false;false;;;;;; -46209;6;0;false;false;63;95;191;;; -46215;4;0;false;false;;;;;; -46219;2;0;false;false;63;95;191;;; -46221;3;0;false;false;;;;;; -46224;6;1;false;false;127;0;85;;; -46230;1;0;false;false;;;;;; -46231;4;1;false;false;127;0;85;;; -46235;1;0;false;false;;;;;; -46236;12;0;false;false;0;0;0;;; -46248;3;1;false;false;127;0;85;;; -46251;1;0;false;false;;;;;; -46252;10;0;false;false;0;0;0;;; -46262;1;0;false;false;;;;;; -46263;3;1;false;false;127;0;85;;; -46266;1;0;false;false;;;;;; -46267;10;0;false;false;0;0;0;;; -46277;1;0;false;false;;;;;; -46278;7;1;false;false;127;0;85;;; -46285;1;0;false;false;;;;;; -46286;18;0;false;false;0;0;0;;; -46304;1;0;false;false;;;;;; -46305;1;0;false;false;0;0;0;;; -46306;4;0;false;false;;;;;; -46310;16;0;false;false;0;0;0;;; -46326;1;0;false;false;;;;;; -46327;10;0;false;false;0;0;0;;; -46337;1;0;false;false;;;;;; -46338;19;0;false;false;0;0;0;;; -46357;3;0;false;false;;;;;; -46360;1;0;false;false;0;0;0;;; -46361;3;0;false;false;;;;;; -46364;3;0;false;false;63;95;191;;; -46367;4;0;false;false;;;;;; -46371;1;0;false;false;63;95;191;;; -46372;1;0;false;false;;;;;; -46373;6;0;false;false;63;95;191;;; -46379;1;0;false;false;;;;;; -46380;3;0;false;false;63;95;191;;; -46383;1;0;false;false;;;;;; -46384;4;0;false;false;63;95;191;;; -46388;1;0;false;false;;;;;; -46389;5;0;false;false;63;95;191;;; -46394;1;0;false;false;;;;;; -46395;2;0;false;false;63;95;191;;; -46397;1;0;false;false;;;;;; -46398;3;0;false;false;63;95;191;;; -46401;1;0;false;false;;;;;; -46402;5;0;false;false;63;95;191;;; -46407;1;0;false;false;;;;;; -46408;2;0;false;false;63;95;191;;; -46410;1;0;false;false;;;;;; -46411;3;0;false;false;63;95;191;;; -46414;1;0;false;false;;;;;; -46415;9;0;false;false;63;95;191;;; -46424;1;0;false;false;;;;;; -46425;6;0;false;false;63;95;191;;; -46431;4;0;false;false;;;;;; -46435;1;0;false;false;63;95;191;;; -46436;1;0;false;false;;;;;; -46437;3;0;false;false;127;127;159;;; -46440;4;0;false;false;;;;;; -46444;1;0;false;false;63;95;191;;; -46445;4;0;false;false;;;;;; -46449;1;0;false;false;63;95;191;;; -46450;1;0;false;false;;;;;; -46451;7;1;false;false;127;159;191;;; -46458;9;0;false;false;63;95;191;;; -46467;1;0;false;false;;;;;; -46468;3;0;false;false;63;95;191;;; -46471;1;0;false;false;;;;;; -46472;5;0;false;false;63;95;191;;; -46477;1;0;false;false;;;;;; -46478;4;0;false;false;63;95;191;;; -46482;1;0;false;false;;;;;; -46483;2;0;false;false;63;95;191;;; -46485;1;0;false;false;;;;;; -46486;5;0;false;false;63;95;191;;; -46491;4;0;false;false;;;;;; -46495;1;0;false;false;63;95;191;;; -46496;1;0;false;false;;;;;; -46497;7;1;false;false;127;159;191;;; -46504;9;0;false;false;63;95;191;;; -46513;1;0;false;false;;;;;; -46514;3;0;false;false;63;95;191;;; -46517;1;0;false;false;;;;;; -46518;6;0;false;false;63;95;191;;; -46524;1;0;false;false;;;;;; -46525;2;0;false;false;63;95;191;;; -46527;1;0;false;false;;;;;; -46528;5;0;false;false;63;95;191;;; -46533;1;0;false;false;;;;;; -46534;2;0;false;false;63;95;191;;; -46536;1;0;false;false;;;;;; -46537;5;0;false;false;63;95;191;;; -46542;4;0;false;false;;;;;; -46546;1;0;false;false;63;95;191;;; -46547;1;0;false;false;;;;;; -46548;7;1;false;false;127;159;191;;; -46555;17;0;false;false;63;95;191;;; -46572;1;0;false;false;;;;;; -46573;7;0;false;false;63;95;191;;; -46580;1;0;false;false;;;;;; -46581;3;0;false;false;63;95;191;;; -46584;1;0;false;false;;;;;; -46585;6;0;false;false;63;95;191;;; -46591;1;0;false;false;;;;;; -46592;4;0;false;false;63;95;191;;; -46596;1;0;false;false;;;;;; -46597;2;0;false;false;63;95;191;;; -46599;1;0;false;false;;;;;; -46600;5;0;false;false;63;95;191;;; -46605;5;0;false;false;;;;;; -46610;1;0;false;false;63;95;191;;; -46611;2;0;false;false;;;;;; -46613;5;0;false;false;63;95;191;;; -46618;1;0;false;false;;;;;; -46619;3;0;false;false;63;95;191;;; -46622;1;0;false;false;;;;;; -46623;7;0;false;false;63;95;191;;; -46630;1;0;false;false;;;;;; -46631;5;0;false;false;63;95;191;;; -46636;1;0;false;false;;;;;; -46637;2;0;false;false;63;95;191;;; -46639;1;0;false;false;;;;;; -46640;3;0;false;false;63;95;191;;; -46643;1;0;false;false;;;;;; -46644;9;0;false;false;63;95;191;;; -46653;1;0;false;false;;;;;; -46654;6;0;false;false;63;95;191;;; -46660;1;0;false;false;;;;;; -46661;5;0;false;false;63;95;191;;; -46666;1;0;false;false;;;;;; -46667;2;0;false;false;63;95;191;;; -46669;5;0;false;false;;;;;; -46674;1;0;false;false;63;95;191;;; -46675;2;0;false;false;;;;;; -46677;11;0;false;false;63;95;191;;; -46688;1;0;false;false;;;;;; -46689;9;0;false;false;63;95;191;;; -46698;1;0;false;false;;;;;; -46699;7;0;false;false;63;95;191;;; -46706;1;0;false;false;;;;;; -46707;5;0;false;false;63;95;191;;; -46712;1;0;false;false;;;;;; -46713;2;0;false;false;63;95;191;;; -46715;1;0;false;false;;;;;; -46716;3;0;false;false;63;95;191;;; -46719;1;0;false;false;;;;;; -46720;2;0;false;false;63;95;191;;; -46722;1;0;false;false;;;;;; -46723;1;0;false;false;63;95;191;;; -46724;1;0;false;false;;;;;; -46725;2;0;false;false;63;95;191;;; -46727;1;0;false;false;;;;;; -46728;3;0;false;false;63;95;191;;; -46731;5;0;false;false;;;;;; -46736;1;0;false;false;63;95;191;;; -46737;2;0;false;false;;;;;; -46739;6;0;false;false;63;95;191;;; -46745;1;0;false;false;;;;;; -46746;4;0;false;false;63;95;191;;; -46750;1;0;false;false;;;;;; -46751;2;0;false;false;63;95;191;;; -46753;1;0;false;false;;;;;; -46754;5;0;false;false;63;95;191;;; -46759;1;0;false;false;;;;;; -46760;6;0;false;false;63;95;191;;; -46766;4;0;false;false;;;;;; -46770;2;0;false;false;63;95;191;;; -46772;3;0;false;false;;;;;; -46775;6;1;false;false;127;0;85;;; -46781;1;0;false;false;;;;;; -46782;4;1;false;false;127;0;85;;; -46786;1;0;false;false;;;;;; -46787;6;0;false;false;0;0;0;;; -46793;3;1;false;false;127;0;85;;; -46796;1;0;false;false;;;;;; -46797;10;0;false;false;0;0;0;;; -46807;1;0;false;false;;;;;; -46808;3;1;false;false;127;0;85;;; -46811;1;0;false;false;;;;;; -46812;10;0;false;false;0;0;0;;; -46822;1;0;false;false;;;;;; -46823;7;1;false;false;127;0;85;;; -46830;1;0;false;false;;;;;; -46831;18;0;false;false;0;0;0;;; -46849;1;0;false;false;;;;;; -46850;1;0;false;false;0;0;0;;; -46851;4;0;false;false;;;;;; -46855;3;1;false;false;127;0;85;;; -46858;1;0;false;false;;;;;; -46859;7;0;false;false;0;0;0;;; -46866;1;0;false;false;;;;;; -46867;1;0;false;false;0;0;0;;; -46868;1;0;false;false;;;;;; -46869;9;0;false;false;0;0;0;;; -46878;1;0;false;false;;;;;; -46879;1;0;false;false;0;0;0;;; -46880;1;0;false;false;;;;;; -46881;10;0;false;false;0;0;0;;; -46891;8;0;false;false;;;;;; -46899;2;1;false;false;127;0;85;;; -46901;1;0;false;false;;;;;; -46902;10;0;false;false;0;0;0;;; -46912;1;0;false;false;;;;;; -46913;1;0;false;false;0;0;0;;; -46914;1;0;false;false;;;;;; -46915;1;0;false;false;0;0;0;;; -46916;1;0;false;false;;;;;; -46917;2;0;false;false;0;0;0;;; -46919;1;0;false;false;;;;;; -46920;7;0;false;false;0;0;0;;; -46927;1;0;false;false;;;;;; -46928;1;0;false;false;0;0;0;;; -46929;1;0;false;false;;;;;; -46930;17;0;false;false;0;0;0;;; -46947;1;0;false;false;;;;;; -46948;1;0;false;false;0;0;0;;; -46949;5;0;false;false;;;;;; -46954;6;1;false;false;127;0;85;;; -46960;1;0;false;false;0;0;0;;; -46961;4;0;false;false;;;;;; -46965;1;0;false;false;0;0;0;;; -46966;4;0;false;false;;;;;; -46970;3;1;false;false;127;0;85;;; -46973;1;0;false;false;;;;;; -46974;1;0;false;false;0;0;0;;; -46975;3;1;false;false;127;0;85;;; -46978;1;0;false;false;;;;;; -46979;1;0;false;false;0;0;0;;; -46980;1;0;false;false;;;;;; -46981;1;0;false;false;0;0;0;;; -46982;1;0;false;false;;;;;; -46983;10;0;false;false;0;0;0;;; -46993;1;0;false;false;;;;;; -46994;1;0;false;false;0;0;0;;; -46995;1;0;false;false;;;;;; -46996;1;0;false;false;0;0;0;;; -46997;1;0;false;false;;;;;; -46998;8;0;false;false;0;0;0;;; -47006;1;0;false;false;;;;;; -47007;4;0;false;false;0;0;0;;; -47011;1;0;false;false;;;;;; -47012;1;0;false;false;0;0;0;;; -47013;5;0;false;false;;;;;; -47018;12;0;false;false;0;0;0;;; -47030;1;0;false;false;;;;;; -47031;1;0;false;false;0;0;0;;; -47032;1;0;false;false;;;;;; -47033;3;0;false;false;0;0;0;;; -47036;4;0;false;false;;;;;; -47040;1;0;false;false;0;0;0;;; -47041;6;0;false;false;;;;;; -47047;69;0;false;false;63;127;95;;; -47116;2;0;false;false;;;;;; -47118;29;0;false;false;63;127;95;;; -47147;2;0;false;false;;;;;; -47149;2;1;false;false;127;0;85;;; -47151;1;0;false;false;;;;;; -47152;18;0;false;false;0;0;0;;; -47170;1;0;false;false;;;;;; -47171;2;0;false;false;0;0;0;;; -47173;1;0;false;false;;;;;; -47174;9;0;false;false;0;0;0;;; -47183;1;0;false;false;;;;;; -47184;2;0;false;false;0;0;0;;; -47186;1;0;false;false;;;;;; -47187;17;0;false;false;0;0;0;;; -47204;1;0;false;false;;;;;; -47205;1;0;false;false;0;0;0;;; -47206;1;0;false;false;;;;;; -47207;8;0;false;false;0;0;0;;; -47215;1;0;false;false;;;;;; -47216;1;0;false;false;0;0;0;;; -47217;5;0;false;false;;;;;; -47222;8;0;false;false;0;0;0;;; -47230;1;0;false;false;;;;;; -47231;1;0;false;false;0;0;0;;; -47232;1;0;false;false;;;;;; -47233;2;0;false;false;0;0;0;;; -47235;5;0;false;false;;;;;; -47240;17;0;false;false;0;0;0;;; -47257;1;0;false;false;;;;;; -47258;1;0;false;false;0;0;0;;; -47259;1;0;false;false;;;;;; -47260;3;0;false;false;0;0;0;;; -47263;5;0;false;false;;;;;; -47268;2;1;false;false;127;0;85;;; -47270;1;0;false;false;;;;;; -47271;19;0;false;false;0;0;0;;; -47290;1;0;false;false;;;;;; -47291;1;0;false;false;0;0;0;;; -47292;6;0;false;false;;;;;; -47298;3;1;false;false;127;0;85;;; -47301;1;0;false;false;;;;;; -47302;1;0;false;false;0;0;0;;; -47303;3;1;false;false;127;0;85;;; -47306;1;0;false;false;;;;;; -47307;1;0;false;false;0;0;0;;; -47308;1;0;false;false;;;;;; -47309;1;0;false;false;0;0;0;;; -47310;1;0;false;false;;;;;; -47311;2;0;false;false;0;0;0;;; -47313;1;0;false;false;;;;;; -47314;1;0;false;false;0;0;0;;; -47315;1;0;false;false;;;;;; -47316;1;0;false;false;0;0;0;;; -47317;1;0;false;false;;;;;; -47318;10;0;false;false;0;0;0;;; -47328;1;0;false;false;;;;;; -47329;4;0;false;false;0;0;0;;; -47333;1;0;false;false;;;;;; -47334;1;0;false;false;0;0;0;;; -47335;7;0;false;false;;;;;; -47342;2;1;false;false;127;0;85;;; -47344;1;0;false;false;;;;;; -47345;13;0;false;false;0;0;0;;; -47358;1;0;false;false;;;;;; -47359;1;0;false;false;0;0;0;;; -47360;1;0;false;false;;;;;; -47361;9;0;false;false;0;0;0;;; -47370;1;0;false;false;;;;;; -47371;1;0;false;false;0;0;0;;; -47372;8;0;false;false;;;;;; -47380;8;0;false;false;0;0;0;;; -47388;1;0;false;false;;;;;; -47389;1;0;false;false;0;0;0;;; -47390;1;0;false;false;;;;;; -47391;13;0;false;false;0;0;0;;; -47404;8;0;false;false;;;;;; -47412;17;0;false;false;0;0;0;;; -47429;1;0;false;false;;;;;; -47430;1;0;false;false;0;0;0;;; -47431;1;0;false;false;;;;;; -47432;2;0;false;false;0;0;0;;; -47434;7;0;false;false;;;;;; -47441;1;0;false;false;0;0;0;;; -47442;6;0;false;false;;;;;; -47448;1;0;false;false;0;0;0;;; -47449;8;0;false;false;;;;;; -47457;1;0;false;false;0;0;0;;; -47458;4;0;false;false;;;;;; -47462;1;0;false;false;0;0;0;;; -47463;3;0;false;false;;;;;; -47466;1;0;false;false;0;0;0;;; -47467;3;0;false;false;;;;;; -47470;3;0;false;false;63;95;191;;; -47473;5;0;false;false;;;;;; -47478;1;0;false;false;63;95;191;;; -47479;1;0;false;false;;;;;; -47480;7;0;false;false;63;95;191;;; -47487;1;0;false;false;;;;;; -47488;3;0;false;false;63;95;191;;; -47491;1;0;false;false;;;;;; -47492;4;0;false;false;63;95;191;;; -47496;1;0;false;false;;;;;; -47497;5;0;false;false;63;95;191;;; -47502;1;0;false;false;;;;;; -47503;5;0;false;false;63;95;191;;; -47508;1;0;false;false;;;;;; -47509;2;0;false;false;63;95;191;;; -47511;1;0;false;false;;;;;; -47512;7;0;false;false;63;95;191;;; -47519;1;0;false;false;;;;;; -47520;1;0;false;false;63;95;191;;; -47521;1;0;false;false;;;;;; -47522;4;0;false;false;63;95;191;;; -47526;1;0;false;false;;;;;; -47527;7;0;false;false;63;95;191;;; -47534;4;0;false;false;;;;;; -47538;1;0;false;false;63;95;191;;; -47539;1;0;false;false;;;;;; -47540;5;0;false;false;63;95;191;;; -47545;1;0;false;false;;;;;; -47546;8;0;false;false;63;95;191;;; -47554;1;0;false;false;;;;;; -47555;2;0;false;false;63;95;191;;; -47557;1;0;false;false;;;;;; -47558;3;0;false;false;63;95;191;;; -47561;1;0;false;false;;;;;; -47562;4;0;false;false;63;95;191;;; -47566;1;0;false;false;;;;;; -47567;6;0;false;false;63;95;191;;; -47573;1;0;false;false;;;;;; -47574;4;0;false;false;63;95;191;;; -47578;1;0;false;false;;;;;; -47579;2;0;false;false;63;95;191;;; -47581;1;0;false;false;;;;;; -47582;6;0;false;false;63;95;191;;; -47588;4;0;false;false;;;;;; -47592;1;0;false;false;63;95;191;;; -47593;1;0;false;false;;;;;; -47594;3;0;false;false;127;127;159;;; -47597;4;0;false;false;;;;;; -47601;1;0;false;false;63;95;191;;; -47602;4;0;false;false;;;;;; -47606;1;0;false;false;63;95;191;;; -47607;1;0;false;false;;;;;; -47608;7;1;false;false;127;159;191;;; -47615;11;0;false;false;63;95;191;;; -47626;1;0;false;false;;;;;; -47627;3;0;false;false;63;95;191;;; -47630;1;0;false;false;;;;;; -47631;5;0;false;false;63;95;191;;; -47636;1;0;false;false;;;;;; -47637;6;0;false;false;63;95;191;;; -47643;1;0;false;false;;;;;; -47644;2;0;false;false;63;95;191;;; -47646;1;0;false;false;;;;;; -47647;3;0;false;false;63;95;191;;; -47650;1;0;false;false;;;;;; -47651;4;0;false;false;63;95;191;;; -47655;1;0;false;false;;;;;; -47656;6;0;false;false;63;95;191;;; -47662;4;0;false;false;;;;;; -47666;1;0;false;false;63;95;191;;; -47667;1;0;false;false;;;;;; -47668;7;1;false;false;127;159;191;;; -47675;12;0;false;false;63;95;191;;; -47687;1;0;false;false;;;;;; -47688;3;0;false;false;63;95;191;;; -47691;1;0;false;false;;;;;; -47692;6;0;false;false;63;95;191;;; -47698;1;0;false;false;;;;;; -47699;2;0;false;false;63;95;191;;; -47701;1;0;false;false;;;;;; -47702;8;0;false;false;63;95;191;;; -47710;1;0;false;false;;;;;; -47711;5;0;false;false;63;95;191;;; -47716;4;0;false;false;;;;;; -47720;1;0;false;false;63;95;191;;; -47721;1;0;false;false;;;;;; -47722;7;1;false;false;127;159;191;;; -47729;16;0;false;false;63;95;191;;; -47745;1;0;false;false;;;;;; -47746;3;0;false;false;63;95;191;;; -47749;1;0;false;false;;;;;; -47750;6;0;false;false;63;95;191;;; -47756;1;0;false;false;;;;;; -47757;2;0;false;false;63;95;191;;; -47759;1;0;false;false;;;;;; -47760;7;0;false;false;63;95;191;;; -47767;1;0;false;false;;;;;; -47768;5;0;false;false;63;95;191;;; -47773;4;0;false;false;;;;;; -47777;1;0;false;false;63;95;191;;; -47778;1;0;false;false;;;;;; -47779;7;1;false;false;127;159;191;;; -47786;12;0;false;false;63;95;191;;; -47798;1;0;false;false;;;;;; -47799;3;0;false;false;63;95;191;;; -47802;1;0;false;false;;;;;; -47803;6;0;false;false;63;95;191;;; -47809;1;0;false;false;;;;;; -47810;2;0;false;false;63;95;191;;; -47812;1;0;false;false;;;;;; -47813;3;0;false;false;63;95;191;;; -47816;1;0;false;false;;;;;; -47817;10;0;false;false;63;95;191;;; -47827;4;0;false;false;;;;;; -47831;1;0;false;false;63;95;191;;; -47832;1;0;false;false;;;;;; -47833;7;1;false;false;127;159;191;;; -47840;16;0;false;false;63;95;191;;; -47856;1;0;false;false;;;;;; -47857;3;0;false;false;63;95;191;;; -47860;1;0;false;false;;;;;; -47861;6;0;false;false;63;95;191;;; -47867;1;0;false;false;;;;;; -47868;2;0;false;false;63;95;191;;; -47870;1;0;false;false;;;;;; -47871;7;0;false;false;63;95;191;;; -47878;1;0;false;false;;;;;; -47879;10;0;false;false;63;95;191;;; -47889;4;0;false;false;;;;;; -47893;2;0;false;false;63;95;191;;; -47895;5;0;false;false;;;;;; -47900;6;1;false;false;127;0;85;;; -47906;1;0;false;false;;;;;; -47907;4;1;false;false;127;0;85;;; -47911;1;0;false;false;;;;;; -47912;12;0;false;false;0;0;0;;; -47924;3;1;false;false;127;0;85;;; -47927;1;0;false;false;;;;;; -47928;12;0;false;false;0;0;0;;; -47940;1;0;false;false;;;;;; -47941;3;1;false;false;127;0;85;;; -47944;1;0;false;false;;;;;; -47945;13;0;false;false;0;0;0;;; -47958;1;0;false;false;;;;;; -47959;3;1;false;false;127;0;85;;; -47962;1;0;false;false;;;;;; -47963;17;0;false;false;0;0;0;;; -47980;1;0;false;false;;;;;; -47981;3;1;false;false;127;0;85;;; -47984;1;0;false;false;;;;;; -47985;13;0;false;false;0;0;0;;; -47998;1;0;false;false;;;;;; -47999;3;1;false;false;127;0;85;;; -48002;1;0;false;false;;;;;; -48003;17;0;false;false;0;0;0;;; -48020;1;0;false;false;;;;;; -48021;1;0;false;false;0;0;0;;; -48022;4;0;false;false;;;;;; -48026;3;1;false;false;127;0;85;;; -48029;1;0;false;false;;;;;; -48030;9;0;false;false;0;0;0;;; -48039;1;0;false;false;;;;;; -48040;1;0;false;false;0;0;0;;; -48041;1;0;false;false;;;;;; -48042;36;0;false;false;0;0;0;;; -48078;4;0;false;false;;;;;; -48082;7;1;false;false;127;0;85;;; -48089;1;0;false;false;;;;;; -48090;14;0;false;false;0;0;0;;; -48104;1;0;false;false;;;;;; -48105;1;0;false;false;0;0;0;;; -48106;1;0;false;false;;;;;; -48107;18;0;false;false;0;0;0;;; -48125;1;0;false;false;;;;;; -48126;1;0;false;false;0;0;0;;; -48127;1;0;false;false;;;;;; -48128;9;0;false;false;0;0;0;;; -48137;1;0;false;false;;;;;; -48138;2;0;false;false;0;0;0;;; -48140;1;0;false;false;;;;;; -48141;17;0;false;false;0;0;0;;; -48158;1;0;false;false;;;;;; -48159;2;0;false;false;0;0;0;;; -48161;1;0;false;false;;;;;; -48162;9;0;false;false;0;0;0;;; -48171;1;0;false;false;;;;;; -48172;1;0;false;false;0;0;0;;; -48173;1;0;false;false;;;;;; -48174;18;0;false;false;0;0;0;;; -48192;4;0;false;false;;;;;; -48196;25;0;false;false;63;127;95;;; -48221;2;0;false;false;;;;;; -48223;2;1;false;false;127;0;85;;; -48225;1;0;false;false;;;;;; -48226;10;0;false;false;0;0;0;;; -48236;1;0;false;false;;;;;; -48237;2;0;false;false;0;0;0;;; -48239;1;0;false;false;;;;;; -48240;1;0;false;false;0;0;0;;; -48241;1;0;false;false;;;;;; -48242;2;0;false;false;0;0;0;;; -48244;1;0;false;false;;;;;; -48245;16;0;false;false;0;0;0;;; -48261;1;0;false;false;;;;;; -48262;2;0;false;false;0;0;0;;; -48264;1;0;false;false;;;;;; -48265;10;0;false;false;0;0;0;;; -48275;1;0;false;false;;;;;; -48276;1;0;false;false;0;0;0;;; -48277;5;0;false;false;;;;;; -48282;9;0;false;false;0;0;0;;; -48291;1;0;false;false;;;;;; -48292;1;0;false;false;0;0;0;;; -48293;1;0;false;false;;;;;; -48294;13;0;false;false;0;0;0;;; -48307;5;0;false;false;;;;;; -48312;9;0;false;false;0;0;0;;; -48321;1;0;false;false;;;;;; -48322;1;0;false;false;0;0;0;;; -48323;1;0;false;false;;;;;; -48324;3;1;false;false;127;0;85;;; -48327;1;0;false;false;;;;;; -48328;3;1;false;false;127;0;85;;; -48331;12;0;false;false;0;0;0;;; -48343;5;0;false;false;;;;;; -48348;8;0;false;false;0;0;0;;; -48356;1;0;false;false;;;;;; -48357;10;0;false;false;0;0;0;;; -48367;1;0;false;false;;;;;; -48368;5;1;false;false;127;0;85;;; -48373;2;0;false;false;0;0;0;;; -48375;5;0;false;false;;;;;; -48380;8;0;false;false;0;0;0;;; -48388;1;0;false;false;;;;;; -48389;1;0;false;false;0;0;0;;; -48390;1;0;false;false;;;;;; -48391;2;0;false;false;0;0;0;;; -48393;4;0;false;false;;;;;; -48397;1;0;false;false;0;0;0;;; -48398;4;0;false;false;;;;;; -48402;4;1;false;false;127;0;85;;; -48406;1;0;false;false;;;;;; -48407;1;0;false;false;0;0;0;;; -48408;5;0;false;false;;;;;; -48413;23;0;false;false;0;0;0;;; -48436;1;0;false;false;;;;;; -48437;19;0;false;false;0;0;0;;; -48456;5;0;false;false;;;;;; -48461;23;0;false;false;0;0;0;;; -48484;1;0;false;false;;;;;; -48485;14;0;false;false;0;0;0;;; -48499;5;0;false;false;;;;;; -48504;20;0;false;false;0;0;0;;; -48524;1;0;false;false;;;;;; -48525;1;0;false;false;0;0;0;;; -48526;1;0;false;false;;;;;; -48527;3;0;false;false;0;0;0;;; -48530;4;0;false;false;;;;;; -48534;1;0;false;false;0;0;0;;; -48535;4;0;false;false;;;;;; -48539;79;0;false;false;63;127;95;;; -48618;2;0;false;false;;;;;; -48620;72;0;false;false;63;127;95;;; -48692;2;0;false;false;;;;;; -48694;30;0;false;false;63;127;95;;; -48724;2;0;false;false;;;;;; -48726;27;0;false;false;0;0;0;;; -48753;1;0;false;false;;;;;; -48754;14;0;false;false;0;0;0;;; -48768;4;0;false;false;;;;;; -48772;79;0;false;false;63;127;95;;; -48851;2;0;false;false;;;;;; -48853;71;0;false;false;63;127;95;;; -48924;2;0;false;false;;;;;; -48926;22;0;false;false;63;127;95;;; -48948;2;0;false;false;;;;;; -48950;2;1;false;false;127;0;85;;; -48952;1;0;false;false;;;;;; -48953;15;0;false;false;0;0;0;;; -48968;1;0;false;false;;;;;; -48969;2;0;false;false;0;0;0;;; -48971;6;0;false;false;;;;;; -48977;18;0;false;false;0;0;0;;; -48995;1;0;false;false;;;;;; -48996;2;0;false;false;0;0;0;;; -48998;1;0;false;false;;;;;; -48999;2;0;false;false;0;0;0;;; -49001;1;0;false;false;;;;;; -49002;2;0;false;false;0;0;0;;; -49004;1;0;false;false;;;;;; -49005;28;0;false;false;0;0;0;;; -49033;1;0;false;false;;;;;; -49034;1;0;false;false;0;0;0;;; -49035;1;0;false;false;;;;;; -49036;10;0;false;false;0;0;0;;; -49046;1;0;false;false;;;;;; -49047;1;0;false;false;0;0;0;;; -49048;5;0;false;false;;;;;; -49053;65;0;false;false;63;127;95;;; -49118;3;0;false;false;;;;;; -49121;60;0;false;false;63;127;95;;; -49181;3;0;false;false;;;;;; -49184;8;0;false;false;0;0;0;;; -49192;1;0;false;false;;;;;; -49193;1;0;false;false;0;0;0;;; -49194;1;0;false;false;;;;;; -49195;2;0;false;false;0;0;0;;; -49197;5;0;false;false;;;;;; -49202;3;1;false;false;127;0;85;;; -49205;1;0;false;false;;;;;; -49206;1;0;false;false;0;0;0;;; -49207;3;1;false;false;127;0;85;;; -49210;1;0;false;false;;;;;; -49211;1;0;false;false;0;0;0;;; -49212;1;0;false;false;;;;;; -49213;1;0;false;false;0;0;0;;; -49214;1;0;false;false;;;;;; -49215;2;0;false;false;0;0;0;;; -49217;1;0;false;false;;;;;; -49218;1;0;false;false;0;0;0;;; -49219;1;0;false;false;;;;;; -49220;1;0;false;false;0;0;0;;; -49221;1;0;false;false;;;;;; -49222;10;0;false;false;0;0;0;;; -49232;1;0;false;false;;;;;; -49233;4;0;false;false;0;0;0;;; -49237;1;0;false;false;;;;;; -49238;1;0;false;false;0;0;0;;; -49239;6;0;false;false;;;;;; -49245;2;1;false;false;127;0;85;;; -49247;1;0;false;false;;;;;; -49248;13;0;false;false;0;0;0;;; -49261;1;0;false;false;;;;;; -49262;1;0;false;false;0;0;0;;; -49263;1;0;false;false;;;;;; -49264;9;0;false;false;0;0;0;;; -49273;1;0;false;false;;;;;; -49274;1;0;false;false;0;0;0;;; -49275;7;0;false;false;;;;;; -49282;8;0;false;false;0;0;0;;; -49290;1;0;false;false;;;;;; -49291;1;0;false;false;0;0;0;;; -49292;1;0;false;false;;;;;; -49293;13;0;false;false;0;0;0;;; -49306;7;0;false;false;;;;;; -49313;17;0;false;false;0;0;0;;; -49330;1;0;false;false;;;;;; -49331;1;0;false;false;0;0;0;;; -49332;1;0;false;false;;;;;; -49333;2;0;false;false;0;0;0;;; -49335;6;0;false;false;;;;;; -49341;1;0;false;false;0;0;0;;; -49342;5;0;false;false;;;;;; -49347;1;0;false;false;0;0;0;;; -49348;7;0;false;false;;;;;; -49355;1;0;false;false;0;0;0;;; -49356;3;0;false;false;;;;;; -49359;1;0;false;false;0;0;0;;; -49360;3;0;false;false;;;;;; -49363;1;0;false;false;0;0;0;;; -49364;3;0;false;false;;;;;; -49367;3;0;false;false;63;95;191;;; -49370;4;0;false;false;;;;;; -49374;1;0;false;false;63;95;191;;; -49375;1;0;false;false;;;;;; -49376;7;0;false;false;63;95;191;;; -49383;1;0;false;false;;;;;; -49384;3;0;false;false;63;95;191;;; -49387;1;0;false;false;;;;;; -49388;4;0;false;false;63;95;191;;; -49392;1;0;false;false;;;;;; -49393;8;0;false;false;63;95;191;;; -49401;1;0;false;false;;;;;; -49402;2;0;false;false;63;95;191;;; -49404;1;0;false;false;;;;;; -49405;3;0;false;false;63;95;191;;; -49408;1;0;false;false;;;;;; -49409;8;0;false;false;63;95;191;;; -49417;4;0;false;false;;;;;; -49421;1;0;false;false;63;95;191;;; -49422;1;0;false;false;;;;;; -49423;3;0;false;false;63;95;191;;; -49426;1;0;false;false;;;;;; -49427;4;0;false;false;63;95;191;;; -49431;1;0;false;false;;;;;; -49432;8;0;false;false;63;95;191;;; -49440;1;0;false;false;;;;;; -49441;4;0;false;false;63;95;191;;; -49445;1;0;false;false;;;;;; -49446;6;0;false;false;63;95;191;;; -49452;1;0;false;false;;;;;; -49453;2;0;false;false;63;95;191;;; -49455;1;0;false;false;;;;;; -49456;2;0;false;false;63;95;191;;; -49458;1;0;false;false;;;;;; -49459;1;0;false;false;63;95;191;;; -49460;1;0;false;false;;;;;; -49461;10;0;false;false;63;95;191;;; -49471;1;0;false;false;;;;;; -49472;6;0;false;false;63;95;191;;; -49478;5;0;false;false;;;;;; -49483;1;0;false;false;63;95;191;;; -49484;1;0;false;false;;;;;; -49485;10;0;false;false;63;95;191;;; -49495;1;0;false;false;;;;;; -49496;4;0;false;false;63;95;191;;; -49500;1;0;false;false;;;;;; -49501;6;0;false;false;127;127;159;;; -49507;5;0;false;false;63;95;191;;; -49512;7;0;false;false;127;127;159;;; -49519;1;0;false;false;;;;;; -49520;2;0;false;false;63;95;191;;; -49522;1;0;false;false;;;;;; -49523;6;0;false;false;127;127;159;;; -49529;11;0;false;false;63;95;191;;; -49540;7;0;false;false;127;127;159;;; -49547;4;0;false;false;;;;;; -49551;1;0;false;false;63;95;191;;; -49552;1;0;false;false;;;;;; -49553;2;0;false;false;63;95;191;;; -49555;1;0;false;false;;;;;; -49556;7;0;false;false;63;95;191;;; -49563;1;0;false;false;;;;;; -49564;3;0;false;false;63;95;191;;; -49567;1;0;false;false;;;;;; -49568;4;0;false;false;63;95;191;;; -49572;1;0;false;false;;;;;; -49573;8;0;false;false;63;95;191;;; -49581;1;0;false;false;;;;;; -49582;2;0;false;false;63;95;191;;; -49584;1;0;false;false;;;;;; -49585;12;0;false;false;63;95;191;;; -49597;1;0;false;false;;;;;; -49598;11;0;false;false;63;95;191;;; -49609;5;0;false;false;;;;;; -49614;1;0;false;false;63;95;191;;; -49615;1;0;false;false;;;;;; -49616;7;0;false;false;63;95;191;;; -49623;1;0;false;false;;;;;; -49624;2;0;false;false;63;95;191;;; -49626;1;0;false;false;;;;;; -49627;2;0;false;false;63;95;191;;; -49629;1;0;false;false;;;;;; -49630;6;0;false;false;127;127;159;;; -49636;9;0;false;false;63;95;191;;; -49645;7;0;false;false;127;127;159;;; -49652;1;0;false;false;63;95;191;;; -49653;4;0;false;false;;;;;; -49657;2;0;false;false;63;95;191;;; -49659;3;0;false;false;;;;;; -49662;5;1;false;false;127;0;85;;; -49667;1;0;false;false;;;;;; -49668;13;0;false;false;0;0;0;;; -49681;1;0;false;false;;;;;; -49682;10;1;false;false;127;0;85;;; -49692;1;0;false;false;;;;;; -49693;9;0;false;false;0;0;0;;; -49702;1;0;false;false;;;;;; -49703;1;0;false;false;0;0;0;;; -49704;4;0;false;false;;;;;; -49708;10;0;false;false;0;0;0;;; -49718;1;0;false;false;;;;;; -49719;7;0;false;false;0;0;0;;; -49726;4;0;false;false;;;;;; -49730;14;0;false;false;0;0;0;;; -49744;1;0;false;false;;;;;; -49745;14;0;false;false;0;0;0;;; -49759;9;0;false;false;;;;;; -49768;3;0;false;false;63;95;191;;; -49771;5;0;false;false;;;;;; -49776;1;0;false;false;63;95;191;;; -49777;1;0;false;false;;;;;; -49778;7;0;false;false;63;95;191;;; -49785;1;0;false;false;;;;;; -49786;1;0;false;false;63;95;191;;; -49787;1;0;false;false;;;;;; -49788;3;0;false;false;63;95;191;;; -49791;1;0;false;false;;;;;; -49792;6;0;false;false;127;127;159;;; -49798;13;0;false;false;63;95;191;;; -49811;7;0;false;false;127;127;159;;; -49818;1;0;false;false;;;;;; -49819;3;0;false;false;63;95;191;;; -49822;1;0;false;false;;;;;; -49823;10;0;false;false;63;95;191;;; -49833;1;0;false;false;;;;;; -49834;2;0;false;false;63;95;191;;; -49836;1;0;false;false;;;;;; -49837;7;0;false;false;63;95;191;;; -49844;4;0;false;false;;;;;; -49848;1;0;false;false;63;95;191;;; -49849;1;0;false;false;;;;;; -49850;4;0;false;false;63;95;191;;; -49854;1;0;false;false;;;;;; -49855;9;0;false;false;63;95;191;;; -49864;4;0;false;false;;;;;; -49868;1;0;false;false;63;95;191;;; -49869;1;0;false;false;;;;;; -49870;3;0;false;false;127;127;159;;; -49873;4;0;false;false;;;;;; -49877;1;0;false;false;63;95;191;;; -49878;4;0;false;false;;;;;; -49882;1;0;false;false;63;95;191;;; -49883;1;0;false;false;;;;;; -49884;7;1;false;false;127;159;191;;; -49891;6;0;false;false;63;95;191;;; -49897;1;0;false;false;;;;;; -49898;3;0;false;false;63;95;191;;; -49901;1;0;false;false;;;;;; -49902;10;0;false;false;63;95;191;;; -49912;1;0;false;false;;;;;; -49913;6;0;false;false;63;95;191;;; -49919;1;0;false;false;;;;;; -49920;2;0;false;false;63;95;191;;; -49922;1;0;false;false;;;;;; -49923;4;0;false;false;63;95;191;;; -49927;1;0;false;false;;;;;; -49928;7;0;false;false;63;95;191;;; -49935;1;0;false;false;;;;;; -49936;3;0;false;false;63;95;191;;; -49939;4;0;false;false;;;;;; -49943;1;0;false;false;63;95;191;;; -49944;1;0;false;false;;;;;; -49945;7;1;false;false;127;159;191;;; -49952;7;0;false;false;63;95;191;;; -49959;1;0;false;false;;;;;; -49960;3;0;false;false;63;95;191;;; -49963;1;0;false;false;;;;;; -49964;7;0;false;false;63;95;191;;; -49971;1;0;false;false;;;;;; -49972;8;0;false;false;63;95;191;;; -49980;1;0;false;false;;;;;; -49981;4;0;false;false;63;95;191;;; -49985;1;0;false;false;;;;;; -49986;4;0;false;false;63;95;191;;; -49990;1;0;false;false;;;;;; -49991;3;0;false;false;63;95;191;;; -49994;1;0;false;false;;;;;; -49995;6;0;false;false;63;95;191;;; -50001;1;0;false;false;;;;;; -50002;4;0;false;false;63;95;191;;; -50006;1;0;false;false;;;;;; -50007;9;0;false;false;63;95;191;;; -50016;4;0;false;false;;;;;; -50020;2;0;false;false;63;95;191;;; -50022;3;0;false;false;;;;;; -50025;6;1;false;false;127;0;85;;; -50031;1;0;false;false;;;;;; -50032;24;0;false;false;0;0;0;;; -50056;1;0;false;false;;;;;; -50057;7;0;false;false;0;0;0;;; -50064;1;0;false;false;;;;;; -50065;14;0;false;false;0;0;0;;; -50079;1;0;false;false;;;;;; -50080;8;0;false;false;0;0;0;;; -50088;1;0;false;false;;;;;; -50089;1;0;false;false;0;0;0;;; -50090;4;0;false;false;;;;;; -50094;4;1;false;false;127;0;85;;; -50098;7;0;false;false;0;0;0;;; -50105;1;0;false;false;;;;;; -50106;1;0;false;false;0;0;0;;; -50107;1;0;false;false;;;;;; -50108;7;0;false;false;0;0;0;;; -50115;4;0;false;false;;;;;; -50119;13;0;false;false;0;0;0;;; -50132;1;0;false;false;;;;;; -50133;1;0;false;false;0;0;0;;; -50134;1;0;false;false;;;;;; -50135;8;0;false;false;0;0;0;;; -50143;4;0;false;false;;;;;; -50147;26;0;false;false;0;0;0;;; -50173;3;0;false;false;;;;;; -50176;1;0;false;false;0;0;0;;; -50177;3;0;false;false;;;;;; -50180;3;0;false;false;63;95;191;;; -50183;4;0;false;false;;;;;; -50187;1;0;false;false;63;95;191;;; -50188;1;0;false;false;;;;;; -50189;2;0;false;false;63;95;191;;; -50191;1;0;false;false;;;;;; -50192;8;0;false;false;63;95;191;;; -50200;1;0;false;false;;;;;; -50201;5;0;false;false;63;95;191;;; -50206;1;0;false;false;;;;;; -50207;3;0;false;false;63;95;191;;; -50210;1;0;false;false;;;;;; -50211;7;0;false;false;63;95;191;;; -50218;1;0;false;false;;;;;; -50219;11;0;false;false;63;95;191;;; -50230;1;0;false;false;;;;;; -50231;5;0;false;false;63;95;191;;; -50236;1;0;false;false;;;;;; -50237;6;0;false;false;63;95;191;;; -50243;4;0;false;false;;;;;; -50247;1;0;false;false;63;95;191;;; -50248;1;0;false;false;;;;;; -50249;3;0;false;false;127;127;159;;; -50252;4;0;false;false;;;;;; -50256;1;0;false;false;63;95;191;;; -50257;5;0;false;false;;;;;; -50262;1;0;false;false;63;95;191;;; -50263;1;0;false;false;;;;;; -50264;7;1;false;false;127;159;191;;; -50271;9;0;false;false;63;95;191;;; -50280;1;0;false;false;;;;;; -50281;5;0;false;false;63;95;191;;; -50286;1;0;false;false;;;;;; -50287;4;0;false;false;63;95;191;;; -50291;1;0;false;false;;;;;; -50292;2;0;false;false;63;95;191;;; -50294;1;0;false;false;;;;;; -50295;9;0;false;false;63;95;191;;; -50304;4;0;false;false;;;;;; -50308;1;0;false;false;63;95;191;;; -50309;1;0;false;false;;;;;; -50310;7;1;false;false;127;159;191;;; -50317;9;0;false;false;63;95;191;;; -50326;1;0;false;false;;;;;; -50327;6;0;false;false;63;95;191;;; -50333;1;0;false;false;;;;;; -50334;2;0;false;false;63;95;191;;; -50336;1;0;false;false;;;;;; -50337;5;0;false;false;63;95;191;;; -50342;1;0;false;false;;;;;; -50343;2;0;false;false;63;95;191;;; -50345;1;0;false;false;;;;;; -50346;9;0;false;false;63;95;191;;; -50355;4;0;false;false;;;;;; -50359;2;0;false;false;63;95;191;;; -50361;3;0;false;false;;;;;; -50364;6;1;false;false;127;0;85;;; -50370;1;0;false;false;;;;;; -50371;4;1;false;false;127;0;85;;; -50375;1;0;false;false;;;;;; -50376;10;0;false;false;0;0;0;;; -50386;3;1;false;false;127;0;85;;; -50389;1;0;false;false;;;;;; -50390;10;0;false;false;0;0;0;;; -50400;1;0;false;false;;;;;; -50401;3;1;false;false;127;0;85;;; -50404;1;0;false;false;;;;;; -50405;10;0;false;false;0;0;0;;; -50415;1;0;false;false;;;;;; -50416;1;0;false;false;0;0;0;;; -50417;3;0;false;false;;;;;; -50420;1;0;false;false;0;0;0;;; -50421;3;0;false;false;;;;;; -50424;3;0;false;false;63;95;191;;; -50427;4;0;false;false;;;;;; -50431;1;0;false;false;63;95;191;;; -50432;1;0;false;false;;;;;; -50433;7;0;false;false;63;95;191;;; -50440;1;0;false;false;;;;;; -50441;3;0;false;false;63;95;191;;; -50444;1;0;false;false;;;;;; -50445;6;0;false;false;63;95;191;;; -50451;1;0;false;false;;;;;; -50452;4;0;false;false;63;95;191;;; -50456;1;0;false;false;;;;;; -50457;6;0;false;false;63;95;191;;; -50463;1;0;false;false;;;;;; -50464;5;0;false;false;63;95;191;;; -50469;1;0;false;false;;;;;; -50470;3;0;false;false;63;95;191;;; -50473;1;0;false;false;;;;;; -50474;7;0;false;false;63;95;191;;; -50481;1;0;false;false;;;;;; -50482;2;0;false;false;63;95;191;;; -50484;1;0;false;false;;;;;; -50485;5;0;false;false;63;95;191;;; -50490;4;0;false;false;;;;;; -50494;1;0;false;false;63;95;191;;; -50495;1;0;false;false;;;;;; -50496;2;0;false;false;63;95;191;;; -50498;1;0;false;false;;;;;; -50499;2;0;false;false;63;95;191;;; -50501;1;0;false;false;;;;;; -50502;10;0;false;false;63;95;191;;; -50512;1;0;false;false;;;;;; -50513;6;0;false;false;63;95;191;;; -50519;1;0;false;false;;;;;; -50520;4;0;false;false;63;95;191;;; -50524;4;0;false;false;;;;;; -50528;1;0;false;false;63;95;191;;; -50529;1;0;false;false;;;;;; -50530;3;0;false;false;127;127;159;;; -50533;4;0;false;false;;;;;; -50537;1;0;false;false;63;95;191;;; -50538;4;0;false;false;;;;;; -50542;1;0;false;false;63;95;191;;; -50543;1;0;false;false;;;;;; -50544;8;1;false;false;127;159;191;;; -50552;3;0;false;false;63;95;191;;; -50555;1;0;false;false;;;;;; -50556;4;0;false;false;63;95;191;;; -50560;1;0;false;false;;;;;; -50561;5;0;false;false;63;95;191;;; -50566;4;0;false;false;;;;;; -50570;2;0;false;false;63;95;191;;; -50572;3;0;false;false;;;;;; -50575;6;1;false;false;127;0;85;;; -50581;1;0;false;false;;;;;; -50582;3;1;false;false;127;0;85;;; -50585;1;0;false;false;;;;;; -50586;10;0;false;false;0;0;0;;; -50596;1;0;false;false;;;;;; -50597;1;0;false;false;0;0;0;;; -50598;4;0;false;false;;;;;; -50602;6;1;false;false;127;0;85;;; -50608;1;0;false;false;;;;;; -50609;29;0;false;false;0;0;0;;; -50638;3;0;false;false;;;;;; -50641;1;0;false;false;0;0;0;;; -50642;3;0;false;false;;;;;; -50645;3;0;false;false;63;95;191;;; -50648;4;0;false;false;;;;;; -50652;1;0;false;false;63;95;191;;; -50653;1;0;false;false;;;;;; -50654;5;0;false;false;63;95;191;;; -50659;1;0;false;false;;;;;; -50660;3;0;false;false;63;95;191;;; -50663;1;0;false;false;;;;;; -50664;5;0;false;false;63;95;191;;; -50669;1;0;false;false;;;;;; -50670;2;0;false;false;63;95;191;;; -50672;1;0;false;false;;;;;; -50673;3;0;false;false;63;95;191;;; -50676;1;0;false;false;;;;;; -50677;9;0;false;false;63;95;191;;; -50686;1;0;false;false;;;;;; -50687;6;0;false;false;63;95;191;;; -50693;4;0;false;false;;;;;; -50697;1;0;false;false;63;95;191;;; -50698;1;0;false;false;;;;;; -50699;4;0;false;false;63;95;191;;; -50703;1;0;false;false;;;;;; -50704;6;0;false;false;63;95;191;;; -50710;1;0;false;false;;;;;; -50711;2;0;false;false;63;95;191;;; -50713;1;0;false;false;;;;;; -50714;6;0;false;false;63;95;191;;; -50720;1;0;false;false;;;;;; -50721;2;0;false;false;63;95;191;;; -50723;1;0;false;false;;;;;; -50724;6;0;false;false;127;127;159;;; -50730;19;0;false;false;63;95;191;;; -50749;7;0;false;false;127;127;159;;; -50756;1;0;false;false;63;95;191;;; -50757;4;0;false;false;;;;;; -50761;1;0;false;false;63;95;191;;; -50762;1;0;false;false;;;;;; -50763;1;0;false;false;63;95;191;;; -50764;1;0;false;false;;;;;; -50765;6;0;false;false;63;95;191;;; -50771;1;0;false;false;;;;;; -50772;2;0;false;false;63;95;191;;; -50774;1;0;false;false;;;;;; -50775;9;0;false;false;63;95;191;;; -50784;1;0;false;false;;;;;; -50785;3;0;false;false;63;95;191;;; -50788;1;0;false;false;;;;;; -50789;10;0;false;false;63;95;191;;; -50799;4;0;false;false;;;;;; -50803;1;0;false;false;63;95;191;;; -50804;1;0;false;false;;;;;; -50805;3;0;false;false;127;127;159;;; -50808;4;0;false;false;;;;;; -50812;1;0;false;false;63;95;191;;; -50813;4;0;false;false;;;;;; -50817;1;0;false;false;63;95;191;;; -50818;1;0;false;false;;;;;; -50819;7;1;false;false;127;159;191;;; -50826;9;0;false;false;63;95;191;;; -50835;1;0;false;false;;;;;; -50836;3;0;false;false;63;95;191;;; -50839;1;0;false;false;;;;;; -50840;5;0;false;false;63;95;191;;; -50845;1;0;false;false;;;;;; -50846;4;0;false;false;63;95;191;;; -50850;1;0;false;false;;;;;; -50851;2;0;false;false;63;95;191;;; -50853;1;0;false;false;;;;;; -50854;5;0;false;false;63;95;191;;; -50859;4;0;false;false;;;;;; -50863;1;0;false;false;63;95;191;;; -50864;1;0;false;false;;;;;; -50865;7;1;false;false;127;159;191;;; -50872;9;0;false;false;63;95;191;;; -50881;1;0;false;false;;;;;; -50882;3;0;false;false;63;95;191;;; -50885;1;0;false;false;;;;;; -50886;6;0;false;false;63;95;191;;; -50892;1;0;false;false;;;;;; -50893;2;0;false;false;63;95;191;;; -50895;1;0;false;false;;;;;; -50896;5;0;false;false;63;95;191;;; -50901;1;0;false;false;;;;;; -50902;2;0;false;false;63;95;191;;; -50904;1;0;false;false;;;;;; -50905;5;0;false;false;63;95;191;;; -50910;4;0;false;false;;;;;; -50914;1;0;false;false;63;95;191;;; -50915;1;0;false;false;;;;;; -50916;7;1;false;false;127;159;191;;; -50923;17;0;false;false;63;95;191;;; -50940;1;0;false;false;;;;;; -50941;17;0;false;false;63;95;191;;; -50958;1;0;false;false;;;;;; -50959;6;0;false;false;63;95;191;;; -50965;1;0;false;false;;;;;; -50966;6;0;false;false;63;95;191;;; -50972;1;0;false;false;;;;;; -50973;1;0;false;false;63;95;191;;; -50974;5;0;false;false;;;;;; -50979;1;0;false;false;63;95;191;;; -50980;2;0;false;false;;;;;; -50982;5;0;false;false;63;95;191;;; -50987;1;0;false;false;;;;;; -50988;5;0;false;false;63;95;191;;; -50993;1;0;false;false;;;;;; -50994;4;0;false;false;63;95;191;;; -50998;1;0;false;false;;;;;; -50999;2;0;false;false;63;95;191;;; -51001;1;0;false;false;;;;;; -51002;2;0;false;false;63;95;191;;; -51004;1;0;false;false;;;;;; -51005;2;0;false;false;63;95;191;;; -51007;1;0;false;false;;;;;; -51008;8;0;false;false;63;95;191;;; -51016;1;0;false;false;;;;;; -51017;2;0;false;false;63;95;191;;; -51019;1;0;false;false;;;;;; -51020;3;0;false;false;63;95;191;;; -51023;1;0;false;false;;;;;; -51024;5;0;false;false;63;95;191;;; -51029;1;0;false;false;;;;;; -51030;10;0;false;false;63;95;191;;; -51040;4;0;false;false;;;;;; -51044;1;0;false;false;63;95;191;;; -51045;2;0;false;false;;;;;; -51047;9;0;false;false;63;95;191;;; -51056;1;0;false;false;;;;;; -51057;5;0;false;false;63;95;191;;; -51062;1;0;false;false;;;;;; -51063;3;0;false;false;63;95;191;;; -51066;1;0;false;false;;;;;; -51067;2;0;false;false;63;95;191;;; -51069;1;0;false;false;;;;;; -51070;3;0;false;false;63;95;191;;; -51073;1;0;false;false;;;;;; -51074;2;0;false;false;63;95;191;;; -51076;1;0;false;false;;;;;; -51077;1;0;false;false;63;95;191;;; -51078;4;0;false;false;;;;;; -51082;2;0;false;false;63;95;191;;; -51084;3;0;false;false;;;;;; -51087;6;1;false;false;127;0;85;;; -51093;1;0;false;false;;;;;; -51094;4;1;false;false;127;0;85;;; -51098;1;0;false;false;;;;;; -51099;12;0;false;false;0;0;0;;; -51111;3;1;false;false;127;0;85;;; -51114;1;0;false;false;;;;;; -51115;10;0;false;false;0;0;0;;; -51125;1;0;false;false;;;;;; -51126;3;1;false;false;127;0;85;;; -51129;1;0;false;false;;;;;; -51130;10;0;false;false;0;0;0;;; -51140;1;0;false;false;;;;;; -51141;7;1;false;false;127;0;85;;; -51148;1;0;false;false;;;;;; -51149;18;0;false;false;0;0;0;;; -51167;1;0;false;false;;;;;; -51168;1;0;false;false;0;0;0;;; -51169;7;0;false;false;;;;;; -51176;2;1;false;false;127;0;85;;; -51178;1;0;false;false;;;;;; -51179;10;0;false;false;0;0;0;;; -51189;1;0;false;false;;;;;; -51190;2;0;false;false;0;0;0;;; -51192;1;0;false;false;;;;;; -51193;29;0;false;false;0;0;0;;; -51222;1;0;false;false;;;;;; -51223;1;0;false;false;0;0;0;;; -51224;5;0;false;false;;;;;; -51229;44;0;false;false;63;127;95;;; -51273;3;0;false;false;;;;;; -51276;26;0;false;false;0;0;0;;; -51302;7;0;false;false;;;;;; -51309;1;0;false;false;0;0;0;;; -51310;7;0;false;false;;;;;; -51317;4;1;false;false;127;0;85;;; -51321;1;0;false;false;;;;;; -51322;1;0;false;false;0;0;0;;; -51323;8;0;false;false;;;;;; -51331;30;0;false;false;0;0;0;;; -51361;1;0;false;false;;;;;; -51362;11;0;false;false;0;0;0;;; -51373;7;0;false;false;;;;;; -51380;1;0;false;false;0;0;0;;; -51381;3;0;false;false;;;;;; -51384;1;0;false;false;0;0;0;;; -51385;3;0;false;false;;;;;; -51388;3;0;false;false;63;95;191;;; -51391;4;0;false;false;;;;;; -51395;1;0;false;false;63;95;191;;; -51396;1;0;false;false;;;;;; -51397;7;0;false;false;63;95;191;;; -51404;1;0;false;false;;;;;; -51405;3;0;false;false;63;95;191;;; -51408;1;0;false;false;;;;;; -51409;5;0;false;false;63;95;191;;; -51414;1;0;false;false;;;;;; -51415;2;0;false;false;63;95;191;;; -51417;1;0;false;false;;;;;; -51418;3;0;false;false;63;95;191;;; -51421;1;0;false;false;;;;;; -51422;9;0;false;false;63;95;191;;; -51431;1;0;false;false;;;;;; -51432;5;0;false;false;63;95;191;;; -51437;1;0;false;false;;;;;; -51438;3;0;false;false;63;95;191;;; -51441;1;0;false;false;;;;;; -51442;7;0;false;false;63;95;191;;; -51449;4;0;false;false;;;;;; -51453;1;0;false;false;63;95;191;;; -51454;1;0;false;false;;;;;; -51455;3;0;false;false;63;95;191;;; -51458;1;0;false;false;;;;;; -51459;6;0;false;false;63;95;191;;; -51465;1;0;false;false;;;;;; -51466;2;0;false;false;63;95;191;;; -51468;1;0;false;false;;;;;; -51469;3;0;false;false;63;95;191;;; -51472;1;0;false;false;;;;;; -51473;4;0;false;false;63;95;191;;; -51477;1;0;false;false;;;;;; -51478;8;0;false;false;63;95;191;;; -51486;1;0;false;false;;;;;; -51487;3;0;false;false;63;95;191;;; -51490;1;0;false;false;;;;;; -51491;8;0;false;false;63;95;191;;; -51499;4;0;false;false;;;;;; -51503;1;0;false;false;63;95;191;;; -51504;1;0;false;false;;;;;; -51505;3;0;false;false;127;127;159;;; -51508;4;0;false;false;;;;;; -51512;1;0;false;false;63;95;191;;; -51513;4;0;false;false;;;;;; -51517;1;0;false;false;63;95;191;;; -51518;1;0;false;false;;;;;; -51519;7;1;false;false;127;159;191;;; -51526;9;0;false;false;63;95;191;;; -51535;1;0;false;false;;;;;; -51536;3;0;false;false;63;95;191;;; -51539;1;0;false;false;;;;;; -51540;5;0;false;false;63;95;191;;; -51545;1;0;false;false;;;;;; -51546;4;0;false;false;63;95;191;;; -51550;1;0;false;false;;;;;; -51551;2;0;false;false;63;95;191;;; -51553;1;0;false;false;;;;;; -51554;5;0;false;false;63;95;191;;; -51559;4;0;false;false;;;;;; -51563;1;0;false;false;63;95;191;;; -51564;1;0;false;false;;;;;; -51565;7;1;false;false;127;159;191;;; -51572;9;0;false;false;63;95;191;;; -51581;1;0;false;false;;;;;; -51582;3;0;false;false;63;95;191;;; -51585;1;0;false;false;;;;;; -51586;6;0;false;false;63;95;191;;; -51592;1;0;false;false;;;;;; -51593;2;0;false;false;63;95;191;;; -51595;1;0;false;false;;;;;; -51596;5;0;false;false;63;95;191;;; -51601;1;0;false;false;;;;;; -51602;2;0;false;false;63;95;191;;; -51604;1;0;false;false;;;;;; -51605;5;0;false;false;63;95;191;;; -51610;4;0;false;false;;;;;; -51614;1;0;false;false;63;95;191;;; -51615;1;0;false;false;;;;;; -51616;7;1;false;false;127;159;191;;; -51623;17;0;false;false;63;95;191;;; -51640;1;0;false;false;;;;;; -51641;17;0;false;false;63;95;191;;; -51658;1;0;false;false;;;;;; -51659;6;0;false;false;63;95;191;;; -51665;1;0;false;false;;;;;; -51666;6;0;false;false;63;95;191;;; -51672;1;0;false;false;;;;;; -51673;1;0;false;false;63;95;191;;; -51674;5;0;false;false;;;;;; -51679;1;0;false;false;63;95;191;;; -51680;2;0;false;false;;;;;; -51682;5;0;false;false;63;95;191;;; -51687;1;0;false;false;;;;;; -51688;5;0;false;false;63;95;191;;; -51693;1;0;false;false;;;;;; -51694;4;0;false;false;63;95;191;;; -51698;1;0;false;false;;;;;; -51699;2;0;false;false;63;95;191;;; -51701;1;0;false;false;;;;;; -51702;2;0;false;false;63;95;191;;; -51704;1;0;false;false;;;;;; -51705;2;0;false;false;63;95;191;;; -51707;1;0;false;false;;;;;; -51708;8;0;false;false;63;95;191;;; -51716;1;0;false;false;;;;;; -51717;2;0;false;false;63;95;191;;; -51719;1;0;false;false;;;;;; -51720;3;0;false;false;63;95;191;;; -51723;1;0;false;false;;;;;; -51724;5;0;false;false;63;95;191;;; -51729;1;0;false;false;;;;;; -51730;10;0;false;false;63;95;191;;; -51740;4;0;false;false;;;;;; -51744;1;0;false;false;63;95;191;;; -51745;2;0;false;false;;;;;; -51747;9;0;false;false;63;95;191;;; -51756;1;0;false;false;;;;;; -51757;5;0;false;false;63;95;191;;; -51762;1;0;false;false;;;;;; -51763;3;0;false;false;63;95;191;;; -51766;1;0;false;false;;;;;; -51767;2;0;false;false;63;95;191;;; -51769;1;0;false;false;;;;;; -51770;3;0;false;false;63;95;191;;; -51773;1;0;false;false;;;;;; -51774;2;0;false;false;63;95;191;;; -51776;1;0;false;false;;;;;; -51777;1;0;false;false;63;95;191;;; -51778;4;0;false;false;;;;;; -51782;2;0;false;false;63;95;191;;; -51784;3;0;false;false;;;;;; -51787;6;1;false;false;127;0;85;;; -51793;1;0;false;false;;;;;; -51794;4;1;false;false;127;0;85;;; -51798;1;0;false;false;;;;;; -51799;6;0;false;false;0;0;0;;; -51805;3;1;false;false;127;0;85;;; -51808;1;0;false;false;;;;;; -51809;10;0;false;false;0;0;0;;; -51819;1;0;false;false;;;;;; -51820;3;1;false;false;127;0;85;;; -51823;1;0;false;false;;;;;; -51824;10;0;false;false;0;0;0;;; -51834;1;0;false;false;;;;;; -51835;7;1;false;false;127;0;85;;; -51842;1;0;false;false;;;;;; -51843;18;0;false;false;0;0;0;;; -51861;1;0;false;false;;;;;; -51862;1;0;false;false;0;0;0;;; -51863;4;0;false;false;;;;;; -51867;3;1;false;false;127;0;85;;; -51870;1;0;false;false;;;;;; -51871;9;0;false;false;0;0;0;;; -51880;1;0;false;false;;;;;; -51881;1;0;false;false;0;0;0;;; -51882;1;0;false;false;;;;;; -51883;23;0;false;false;0;0;0;;; -51906;1;0;false;false;;;;;; -51907;1;0;false;false;0;0;0;;; -51908;1;0;false;false;;;;;; -51909;8;0;false;false;0;0;0;;; -51917;1;0;false;false;;;;;; -51918;1;0;false;false;0;0;0;;; -51919;1;0;false;false;;;;;; -51920;2;0;false;false;0;0;0;;; -51922;7;0;false;false;;;;;; -51929;3;1;false;false;127;0;85;;; -51932;2;0;false;false;0;0;0;;; -51934;1;0;false;false;;;;;; -51935;14;0;false;false;0;0;0;;; -51949;1;0;false;false;;;;;; -51950;1;0;false;false;0;0;0;;; -51951;1;0;false;false;;;;;; -51952;3;1;false;false;127;0;85;;; -51955;1;0;false;false;;;;;; -51956;3;1;false;false;127;0;85;;; -51959;12;0;false;false;0;0;0;;; -51971;14;0;false;false;;;;;; -51985;3;1;false;false;127;0;85;;; -51988;1;0;false;false;;;;;; -51989;1;0;false;false;0;0;0;;; -51990;3;1;false;false;127;0;85;;; -51993;1;0;false;false;;;;;; -51994;1;0;false;false;0;0;0;;; -51995;1;0;false;false;;;;;; -51996;1;0;false;false;0;0;0;;; -51997;1;0;false;false;;;;;; -51998;2;0;false;false;0;0;0;;; -52000;1;0;false;false;;;;;; -52001;1;0;false;false;0;0;0;;; -52002;1;0;false;false;;;;;; -52003;1;0;false;false;0;0;0;;; -52004;1;0;false;false;;;;;; -52005;10;0;false;false;0;0;0;;; -52015;1;0;false;false;;;;;; -52016;4;0;false;false;0;0;0;;; -52020;1;0;false;false;;;;;; -52021;1;0;false;false;0;0;0;;; -52022;8;0;false;false;;;;;; -52030;17;0;false;false;0;0;0;;; -52047;1;0;false;false;;;;;; -52048;1;0;false;false;0;0;0;;; -52049;1;0;false;false;;;;;; -52050;31;0;false;false;0;0;0;;; -52081;1;0;false;false;;;;;; -52082;1;0;false;false;0;0;0;;; -52083;1;0;false;false;;;;;; -52084;10;0;false;false;0;0;0;;; -52094;7;0;false;false;;;;;; -52101;1;0;false;false;0;0;0;;; -52102;7;0;false;false;;;;;; -52109;22;0;false;false;0;0;0;;; -52131;1;0;false;false;;;;;; -52132;10;0;false;false;0;0;0;;; -52142;1;0;false;false;;;;;; -52143;19;0;false;false;0;0;0;;; -52162;4;0;false;false;;;;;; -52166;53;0;false;false;63;127;95;;; -52219;5;0;false;false;;;;;; -52224;2;1;false;false;127;0;85;;; -52226;1;0;false;false;;;;;; -52227;24;0;false;false;0;0;0;;; -52251;1;0;false;false;;;;;; -52252;1;0;false;false;0;0;0;;; -52253;1;0;false;false;;;;;; -52254;8;0;false;false;0;0;0;;; -52262;1;0;false;false;;;;;; -52263;1;0;false;false;0;0;0;;; -52264;1;0;false;false;;;;;; -52265;1;0;false;false;0;0;0;;; -52266;1;0;false;false;;;;;; -52267;2;0;false;false;0;0;0;;; -52269;1;0;false;false;;;;;; -52270;10;0;false;false;0;0;0;;; -52280;1;0;false;false;;;;;; -52281;1;0;false;false;0;0;0;;; -52282;8;0;false;false;;;;;; -52290;40;0;false;false;63;127;95;;; -52330;6;0;false;false;;;;;; -52336;24;0;false;false;0;0;0;;; -52360;7;0;false;false;;;;;; -52367;1;0;false;false;0;0;0;;; -52368;7;0;false;false;;;;;; -52375;4;1;false;false;127;0;85;;; -52379;1;0;false;false;;;;;; -52380;1;0;false;false;0;0;0;;; -52381;8;0;false;false;;;;;; -52389;3;1;false;false;127;0;85;;; -52392;1;0;false;false;;;;;; -52393;1;0;false;false;0;0;0;;; -52394;3;1;false;false;127;0;85;;; -52397;1;0;false;false;;;;;; -52398;1;0;false;false;0;0;0;;; -52399;1;0;false;false;;;;;; -52400;1;0;false;false;0;0;0;;; -52401;1;0;false;false;;;;;; -52402;2;0;false;false;0;0;0;;; -52404;1;0;false;false;;;;;; -52405;1;0;false;false;0;0;0;;; -52406;1;0;false;false;;;;;; -52407;1;0;false;false;0;0;0;;; -52408;1;0;false;false;;;;;; -52409;10;0;false;false;0;0;0;;; -52419;1;0;false;false;;;;;; -52420;4;0;false;false;0;0;0;;; -52424;1;0;false;false;;;;;; -52425;1;0;false;false;0;0;0;;; -52426;9;0;false;false;;;;;; -52435;2;1;false;false;127;0;85;;; -52437;1;0;false;false;;;;;; -52438;32;0;false;false;0;0;0;;; -52470;1;0;false;false;;;;;; -52471;1;0;false;false;0;0;0;;; -52472;1;0;false;false;;;;;; -52473;9;0;false;false;0;0;0;;; -52482;1;0;false;false;;;;;; -52483;2;0;false;false;0;0;0;;; -52485;1;0;false;false;;;;;; -52486;18;0;false;false;0;0;0;;; -52504;1;0;false;false;;;;;; -52505;1;0;false;false;0;0;0;;; -52506;10;0;false;false;;;;;; -52516;53;0;false;false;63;127;95;;; -52569;8;0;false;false;;;;;; -52577;24;0;false;false;0;0;0;;; -52601;10;0;false;false;;;;;; -52611;5;1;false;false;127;0;85;;; -52616;1;0;false;false;0;0;0;;; -52617;9;0;false;false;;;;;; -52626;1;0;false;false;0;0;0;;; -52627;8;0;false;false;;;;;; -52635;1;0;false;false;0;0;0;;; -52636;13;0;false;false;;;;;; -52649;1;0;false;false;0;0;0;;; -52650;3;0;false;false;;;;;; -52653;1;0;false;false;0;0;0;;; -52654;3;0;false;false;;;;;; -52657;3;0;false;false;63;95;191;;; -52660;5;0;false;false;;;;;; -52665;1;0;false;false;63;95;191;;; -52666;1;0;false;false;;;;;; -52667;6;0;false;false;63;95;191;;; -52673;1;0;false;false;;;;;; -52674;3;0;false;false;63;95;191;;; -52677;1;0;false;false;;;;;; -52678;4;0;false;false;63;95;191;;; -52682;1;0;false;false;;;;;; -52683;6;0;false;false;63;95;191;;; -52689;1;0;false;false;;;;;; -52690;12;0;false;false;63;95;191;;; -52702;1;0;false;false;;;;;; -52703;2;0;false;false;63;95;191;;; -52705;1;0;false;false;;;;;; -52706;3;0;false;false;63;95;191;;; -52709;1;0;false;false;;;;;; -52710;4;0;false;false;63;95;191;;; -52714;1;0;false;false;;;;;; -52715;4;0;false;false;63;95;191;;; -52719;1;0;false;false;;;;;; -52720;8;0;false;false;63;95;191;;; -52728;4;0;false;false;;;;;; -52732;1;0;false;false;63;95;191;;; -52733;1;0;false;false;;;;;; -52734;3;0;false;false;127;127;159;;; -52737;4;0;false;false;;;;;; -52741;1;0;false;false;63;95;191;;; -52742;4;0;false;false;;;;;; -52746;1;0;false;false;63;95;191;;; -52747;1;0;false;false;;;;;; -52748;7;1;false;false;127;159;191;;; -52755;11;0;false;false;63;95;191;;; -52766;1;0;false;false;;;;;; -52767;3;0;false;false;63;95;191;;; -52770;1;0;false;false;;;;;; -52771;5;0;false;false;63;95;191;;; -52776;1;0;false;false;;;;;; -52777;6;0;false;false;63;95;191;;; -52783;1;0;false;false;;;;;; -52784;2;0;false;false;63;95;191;;; -52786;1;0;false;false;;;;;; -52787;3;0;false;false;63;95;191;;; -52790;1;0;false;false;;;;;; -52791;4;0;false;false;63;95;191;;; -52795;1;0;false;false;;;;;; -52796;6;0;false;false;63;95;191;;; -52802;4;0;false;false;;;;;; -52806;1;0;false;false;63;95;191;;; -52807;1;0;false;false;;;;;; -52808;7;1;false;false;127;159;191;;; -52815;12;0;false;false;63;95;191;;; -52827;1;0;false;false;;;;;; -52828;3;0;false;false;63;95;191;;; -52831;1;0;false;false;;;;;; -52832;6;0;false;false;63;95;191;;; -52838;1;0;false;false;;;;;; -52839;2;0;false;false;63;95;191;;; -52841;1;0;false;false;;;;;; -52842;8;0;false;false;63;95;191;;; -52850;1;0;false;false;;;;;; -52851;5;0;false;false;63;95;191;;; -52856;4;0;false;false;;;;;; -52860;1;0;false;false;63;95;191;;; -52861;1;0;false;false;;;;;; -52862;7;1;false;false;127;159;191;;; -52869;16;0;false;false;63;95;191;;; -52885;1;0;false;false;;;;;; -52886;3;0;false;false;63;95;191;;; -52889;1;0;false;false;;;;;; -52890;6;0;false;false;63;95;191;;; -52896;1;0;false;false;;;;;; -52897;2;0;false;false;63;95;191;;; -52899;1;0;false;false;;;;;; -52900;7;0;false;false;63;95;191;;; -52907;1;0;false;false;;;;;; -52908;5;0;false;false;63;95;191;;; -52913;4;0;false;false;;;;;; -52917;1;0;false;false;63;95;191;;; -52918;1;0;false;false;;;;;; -52919;7;1;false;false;127;159;191;;; -52926;12;0;false;false;63;95;191;;; -52938;1;0;false;false;;;;;; -52939;3;0;false;false;63;95;191;;; -52942;1;0;false;false;;;;;; -52943;6;0;false;false;63;95;191;;; -52949;1;0;false;false;;;;;; -52950;2;0;false;false;63;95;191;;; -52952;1;0;false;false;;;;;; -52953;3;0;false;false;63;95;191;;; -52956;1;0;false;false;;;;;; -52957;10;0;false;false;63;95;191;;; -52967;4;0;false;false;;;;;; -52971;1;0;false;false;63;95;191;;; -52972;1;0;false;false;;;;;; -52973;7;1;false;false;127;159;191;;; -52980;16;0;false;false;63;95;191;;; -52996;1;0;false;false;;;;;; -52997;3;0;false;false;63;95;191;;; -53000;1;0;false;false;;;;;; -53001;6;0;false;false;63;95;191;;; -53007;1;0;false;false;;;;;; -53008;2;0;false;false;63;95;191;;; -53010;1;0;false;false;;;;;; -53011;7;0;false;false;63;95;191;;; -53018;1;0;false;false;;;;;; -53019;10;0;false;false;63;95;191;;; -53029;4;0;false;false;;;;;; -53033;2;0;false;false;63;95;191;;; -53035;5;0;false;false;;;;;; -53040;6;1;false;false;127;0;85;;; -53046;1;0;false;false;;;;;; -53047;4;1;false;false;127;0;85;;; -53051;1;0;false;false;;;;;; -53052;12;0;false;false;0;0;0;;; -53064;3;1;false;false;127;0;85;;; -53067;1;0;false;false;;;;;; -53068;12;0;false;false;0;0;0;;; -53080;1;0;false;false;;;;;; -53081;3;1;false;false;127;0;85;;; -53084;1;0;false;false;;;;;; -53085;13;0;false;false;0;0;0;;; -53098;1;0;false;false;;;;;; -53099;3;1;false;false;127;0;85;;; -53102;1;0;false;false;;;;;; -53103;17;0;false;false;0;0;0;;; -53120;1;0;false;false;;;;;; -53121;3;1;false;false;127;0;85;;; -53124;1;0;false;false;;;;;; -53125;13;0;false;false;0;0;0;;; -53138;1;0;false;false;;;;;; -53139;3;1;false;false;127;0;85;;; -53142;1;0;false;false;;;;;; -53143;17;0;false;false;0;0;0;;; -53160;1;0;false;false;;;;;; -53161;1;0;false;false;0;0;0;;; -53162;4;0;false;false;;;;;; -53166;3;1;false;false;127;0;85;;; -53169;1;0;false;false;;;;;; -53170;9;0;false;false;0;0;0;;; -53179;1;0;false;false;;;;;; -53180;1;0;false;false;0;0;0;;; -53181;1;0;false;false;;;;;; -53182;43;0;false;false;0;0;0;;; -53225;4;0;false;false;;;;;; -53229;38;0;false;false;0;0;0;;; -53267;1;0;false;false;;;;;; -53268;13;0;false;false;0;0;0;;; -53281;1;0;false;false;;;;;; -53282;17;0;false;false;0;0;0;;; -53299;1;0;false;false;;;;;; -53300;13;0;false;false;0;0;0;;; -53313;1;0;false;false;;;;;; -53314;18;0;false;false;0;0;0;;; -53332;6;0;false;false;;;;;; -53338;70;0;false;false;63;127;95;;; -53408;2;0;false;false;;;;;; -53410;70;0;false;false;63;127;95;;; -53480;2;0;false;false;;;;;; -53482;72;0;false;false;63;127;95;;; -53554;2;0;false;false;;;;;; -53556;68;0;false;false;63;127;95;;; -53624;2;0;false;false;;;;;; -53626;2;1;false;false;127;0;85;;; -53628;1;0;false;false;;;;;; -53629;10;0;false;false;0;0;0;;; -53639;1;0;false;false;;;;;; -53640;1;0;false;false;0;0;0;;; -53641;5;0;false;false;;;;;; -53646;3;1;false;false;127;0;85;;; -53649;1;0;false;false;;;;;; -53650;9;0;false;false;0;0;0;;; -53659;1;0;false;false;;;;;; -53660;1;0;false;false;0;0;0;;; -53661;1;0;false;false;;;;;; -53662;23;0;false;false;0;0;0;;; -53685;5;0;false;false;;;;;; -53690;2;1;false;false;127;0;85;;; -53692;1;0;false;false;;;;;; -53693;10;0;false;false;0;0;0;;; -53703;1;0;false;false;;;;;; -53704;2;0;false;false;0;0;0;;; -53706;1;0;false;false;;;;;; -53707;10;0;false;false;0;0;0;;; -53717;1;0;false;false;;;;;; -53718;9;0;false;false;0;0;0;;; -53727;1;0;false;false;;;;;; -53728;1;0;false;false;0;0;0;;; -53729;1;0;false;false;;;;;; -53730;9;0;false;false;0;0;0;;; -53739;1;0;false;false;;;;;; -53740;1;0;false;false;0;0;0;;; -53741;1;0;false;false;;;;;; -53742;2;0;false;false;0;0;0;;; -53744;6;0;false;false;;;;;; -53750;1;0;false;false;0;0;0;;; -53751;4;0;false;false;;;;;; -53755;2;1;false;false;127;0;85;;; -53757;1;0;false;false;;;;;; -53758;10;0;false;false;0;0;0;;; -53768;1;0;false;false;;;;;; -53769;2;0;false;false;0;0;0;;; -53771;1;0;false;false;;;;;; -53772;24;0;false;false;0;0;0;;; -53796;1;0;false;false;;;;;; -53797;1;0;false;false;0;0;0;;; -53798;5;0;false;false;;;;;; -53803;65;0;false;false;63;127;95;;; -53868;3;0;false;false;;;;;; -53871;64;0;false;false;63;127;95;;; -53935;3;0;false;false;;;;;; -53938;51;0;false;false;63;127;95;;; -53989;3;0;false;false;;;;;; -53992;24;0;false;false;0;0;0;;; -54016;4;0;false;false;;;;;; -54020;1;0;false;false;0;0;0;;; -54021;3;0;false;false;;;;;; -54024;1;0;false;false;0;0;0;;; -54025;3;0;false;false;;;;;; -54028;1;0;false;false;0;0;0;;; -54029;4;0;false;false;;;;;; -54033;3;0;false;false;63;95;191;;; -54036;3;0;false;false;;;;;; -54039;1;0;false;false;63;95;191;;; -54040;1;0;false;false;;;;;; -54041;10;0;false;false;63;95;191;;; -54051;1;0;false;false;;;;;; -54052;1;0;false;false;63;95;191;;; -54053;1;0;false;false;;;;;; -54054;3;0;false;false;63;95;191;;; -54057;1;0;false;false;;;;;; -54058;8;0;false;false;63;95;191;;; -54066;1;0;false;false;;;;;; -54067;2;0;false;false;63;95;191;;; -54069;1;0;false;false;;;;;; -54070;4;0;false;false;63;95;191;;; -54074;1;0;false;false;;;;;; -54075;5;0;false;false;63;95;191;;; -54080;1;0;false;false;;;;;; -54081;5;0;false;false;63;95;191;;; -54086;1;0;false;false;;;;;; -54087;3;0;false;false;63;95;191;;; -54090;1;0;false;false;;;;;; -54091;6;0;false;false;63;95;191;;; -54097;3;0;false;false;;;;;; -54100;1;0;false;false;63;95;191;;; -54101;1;0;false;false;;;;;; -54102;3;0;false;false;63;95;191;;; -54105;1;0;false;false;;;;;; -54106;1;0;false;false;63;95;191;;; -54107;1;0;false;false;;;;;; -54108;5;0;false;false;63;95;191;;; -54113;1;0;false;false;;;;;; -54114;5;0;false;false;63;95;191;;; -54119;1;0;false;false;;;;;; -54120;10;0;false;false;63;95;191;;; -54130;1;0;false;false;;;;;; -54131;3;0;false;false;63;95;191;;; -54134;1;0;false;false;;;;;; -54135;8;0;false;false;63;95;191;;; -54143;1;0;false;false;;;;;; -54144;3;0;false;false;63;95;191;;; -54147;1;0;false;false;;;;;; -54148;11;0;false;false;63;95;191;;; -54159;3;0;false;false;;;;;; -54162;1;0;false;false;63;95;191;;; -54163;1;0;false;false;;;;;; -54164;3;0;false;false;127;127;159;;; -54167;3;0;false;false;;;;;; -54170;1;0;false;false;63;95;191;;; -54171;1;0;false;false;;;;;; -54172;3;0;false;false;63;95;191;;; -54175;1;0;false;false;;;;;; -54176;5;0;false;false;63;95;191;;; -54181;1;0;false;false;;;;;; -54182;5;0;false;false;63;95;191;;; -54187;1;0;false;false;;;;;; -54188;2;0;false;false;63;95;191;;; -54190;1;0;false;false;;;;;; -54191;6;0;false;false;63;95;191;;; -54197;1;0;false;false;;;;;; -54198;3;0;false;false;63;95;191;;; -54201;1;0;false;false;;;;;; -54202;2;0;false;false;63;95;191;;; -54204;1;0;false;false;;;;;; -54205;3;0;false;false;63;95;191;;; -54208;1;0;false;false;;;;;; -54209;5;0;false;false;63;95;191;;; -54214;1;0;false;false;;;;;; -54215;9;0;false;false;63;95;191;;; -54224;1;0;false;false;;;;;; -54225;7;0;false;false;63;95;191;;; -54232;1;0;false;false;;;;;; -54233;2;0;false;false;63;95;191;;; -54235;3;0;false;false;;;;;; -54238;1;0;false;false;63;95;191;;; -54239;1;0;false;false;;;;;; -54240;5;0;false;false;63;95;191;;; -54245;1;0;false;false;;;;;; -54246;6;0;false;false;127;127;159;;; -54252;3;0;false;false;63;95;191;;; -54255;7;0;false;false;127;127;159;;; -54262;1;0;false;false;;;;;; -54263;5;0;false;false;63;95;191;;; -54268;1;0;false;false;;;;;; -54269;2;0;false;false;63;95;191;;; -54271;1;0;false;false;;;;;; -54272;10;0;false;false;63;95;191;;; -54282;1;0;false;false;;;;;; -54283;2;0;false;false;63;95;191;;; -54285;1;0;false;false;;;;;; -54286;9;0;false;false;63;95;191;;; -54295;1;0;false;false;;;;;; -54296;2;0;false;false;63;95;191;;; -54298;1;0;false;false;;;;;; -54299;4;0;false;false;63;95;191;;; -54303;3;0;false;false;;;;;; -54306;1;0;false;false;63;95;191;;; -54307;1;0;false;false;;;;;; -54308;6;0;false;false;63;95;191;;; -54314;1;0;false;false;;;;;; -54315;2;0;false;false;63;95;191;;; -54317;1;0;false;false;;;;;; -54318;4;0;false;false;63;95;191;;; -54322;1;0;false;false;;;;;; -54323;2;0;false;false;63;95;191;;; -54325;1;0;false;false;;;;;; -54326;5;0;false;false;63;95;191;;; -54331;1;0;false;false;;;;;; -54332;2;0;false;false;63;95;191;;; -54334;1;0;false;false;;;;;; -54335;4;0;false;false;127;127;159;;; -54339;7;0;false;false;63;95;191;;; -54346;1;0;false;false;;;;;; -54347;2;0;false;false;63;95;191;;; -54349;5;0;false;false;127;127;159;;; -54354;4;0;false;false;63;95;191;;; -54358;1;0;false;false;;;;;; -54359;8;0;false;false;63;95;191;;; -54367;4;0;false;false;;;;;; -54371;1;0;false;false;63;95;191;;; -54372;1;0;false;false;;;;;; -54373;5;0;false;false;63;95;191;;; -54378;1;0;false;false;;;;;; -54379;3;0;false;false;63;95;191;;; -54382;1;0;false;false;;;;;; -54383;5;0;false;false;63;95;191;;; -54388;1;0;false;false;;;;;; -54389;3;0;false;false;63;95;191;;; -54392;1;0;false;false;;;;;; -54393;6;0;false;false;127;127;159;;; -54399;3;0;false;false;63;95;191;;; -54402;7;0;false;false;127;127;159;;; -54409;1;0;false;false;;;;;; -54410;3;0;false;false;63;95;191;;; -54413;1;0;false;false;;;;;; -54414;9;0;false;false;63;95;191;;; -54423;1;0;false;false;;;;;; -54424;3;0;false;false;63;95;191;;; -54427;1;0;false;false;;;;;; -54428;2;0;false;false;63;95;191;;; -54430;1;0;false;false;;;;;; -54431;4;0;false;false;63;95;191;;; -54435;3;0;false;false;;;;;; -54438;1;0;false;false;63;95;191;;; -54439;1;0;false;false;;;;;; -54440;2;0;false;false;63;95;191;;; -54442;1;0;false;false;;;;;; -54443;5;0;false;false;63;95;191;;; -54448;1;0;false;false;;;;;; -54449;6;0;false;false;127;127;159;;; -54455;3;0;false;false;63;95;191;;; -54458;7;0;false;false;127;127;159;;; -54465;1;0;false;false;;;;;; -54466;5;0;false;false;63;95;191;;; -54471;1;0;false;false;;;;;; -54472;10;0;false;false;63;95;191;;; -54482;1;0;false;false;;;;;; -54483;3;0;false;false;63;95;191;;; -54486;1;0;false;false;;;;;; -54487;5;0;false;false;63;95;191;;; -54492;1;0;false;false;;;;;; -54493;11;0;false;false;63;95;191;;; -54504;3;0;false;false;;;;;; -54507;1;0;false;false;63;95;191;;; -54508;1;0;false;false;;;;;; -54509;5;0;false;false;63;95;191;;; -54514;1;0;false;false;;;;;; -54515;3;0;false;false;63;95;191;;; -54518;1;0;false;false;;;;;; -54519;5;0;false;false;63;95;191;;; -54524;1;0;false;false;;;;;; -54525;9;0;false;false;63;95;191;;; -54534;1;0;false;false;;;;;; -54535;4;0;false;false;63;95;191;;; -54539;1;0;false;false;;;;;; -54540;3;0;false;false;63;95;191;;; -54543;1;0;false;false;;;;;; -54544;10;0;false;false;63;95;191;;; -54554;1;0;false;false;;;;;; -54555;2;0;false;false;63;95;191;;; -54557;1;0;false;false;;;;;; -54558;3;0;false;false;63;95;191;;; -54561;1;0;false;false;;;;;; -54562;6;0;false;false;63;95;191;;; -54568;3;0;false;false;;;;;; -54571;1;0;false;false;63;95;191;;; -54572;1;0;false;false;;;;;; -54573;5;0;false;false;63;95;191;;; -54578;1;0;false;false;;;;;; -54579;4;0;false;false;63;95;191;;; -54583;1;0;false;false;;;;;; -54584;3;0;false;false;63;95;191;;; -54587;1;0;false;false;;;;;; -54588;4;0;false;false;63;95;191;;; -54592;1;0;false;false;;;;;; -54593;9;0;false;false;63;95;191;;; -54602;1;0;false;false;;;;;; -54603;4;0;false;false;63;95;191;;; -54607;1;0;false;false;;;;;; -54608;13;0;false;false;63;95;191;;; -54621;3;0;false;false;;;;;; -54624;1;0;false;false;63;95;191;;; -54625;1;0;false;false;;;;;; -54626;4;0;false;false;127;127;159;;; -54630;3;0;false;false;;;;;; -54633;1;0;false;false;63;95;191;;; -54634;3;0;false;false;;;;;; -54637;1;0;false;false;63;95;191;;; -54638;1;0;false;false;;;;;; -54639;7;1;false;false;127;159;191;;; -54646;6;0;false;false;63;95;191;;; -54652;1;0;false;false;;;;;; -54653;1;0;false;false;63;95;191;;; -54654;1;0;false;false;;;;;; -54655;6;0;false;false;63;95;191;;; -54661;1;0;false;false;;;;;; -54662;5;0;false;false;63;95;191;;; -54667;1;0;false;false;;;;;; -54668;4;0;false;false;63;95;191;;; -54672;1;0;false;false;;;;;; -54673;2;0;false;false;63;95;191;;; -54675;1;0;false;false;;;;;; -54676;3;0;false;false;63;95;191;;; -54679;1;0;false;false;;;;;; -54680;6;0;false;false;63;95;191;;; -54686;1;0;false;false;;;;;; -54687;2;0;false;false;63;95;191;;; -54689;1;0;false;false;;;;;; -54690;3;0;false;false;63;95;191;;; -54693;1;0;false;false;;;;;; -54694;3;0;false;false;63;95;191;;; -54697;1;0;false;false;;;;;; -54698;8;0;false;false;63;95;191;;; -54706;1;0;false;false;;;;;; -54707;7;0;false;false;63;95;191;;; -54714;1;0;false;false;;;;;; -54715;2;0;false;false;63;95;191;;; -54717;1;0;false;false;;;;;; -54718;5;0;false;false;63;95;191;;; -54723;3;0;false;false;;;;;; -54726;1;0;false;false;63;95;191;;; -54727;1;0;false;false;;;;;; -54728;7;1;false;false;127;159;191;;; -54735;5;0;false;false;63;95;191;;; -54740;1;0;false;false;;;;;; -54741;3;0;false;false;63;95;191;;; -54744;1;0;false;false;;;;;; -54745;5;0;false;false;63;95;191;;; -54750;1;0;false;false;;;;;; -54751;2;0;false;false;63;95;191;;; -54753;1;0;false;false;;;;;; -54754;6;0;false;false;63;95;191;;; -54760;1;0;false;false;;;;;; -54761;2;0;false;false;63;95;191;;; -54763;1;0;false;false;;;;;; -54764;9;0;false;false;63;95;191;;; -54773;3;0;false;false;;;;;; -54776;1;0;false;false;63;95;191;;; -54777;3;0;false;false;;;;;; -54780;1;0;false;false;63;95;191;;; -54781;1;0;false;false;;;;;; -54782;11;1;false;false;127;159;191;;; -54793;24;0;false;false;63;95;191;;; -54817;1;0;false;false;;;;;; -54818;4;0;false;false;127;127;159;;; -54822;3;0;false;false;;;;;; -54825;1;0;false;false;63;95;191;;; -54826;4;0;false;false;;;;;; -54830;4;0;false;false;127;127;159;;; -54834;19;0;false;false;63;95;191;;; -54853;1;0;false;false;;;;;; -54854;1;0;false;false;127;127;159;;; -54855;1;0;false;false;;;;;; -54856;2;0;false;false;63;95;191;;; -54858;1;0;false;false;;;;;; -54859;3;0;false;false;63;95;191;;; -54862;1;0;false;false;;;;;; -54863;6;0;false;false;63;95;191;;; -54869;1;0;false;false;;;;;; -54870;2;0;false;false;63;95;191;;; -54872;1;0;false;false;;;;;; -54873;4;0;false;false;63;95;191;;; -54877;5;0;false;false;127;127;159;;; -54882;3;0;false;false;;;;;; -54885;1;0;false;false;63;95;191;;; -54886;1;0;false;false;;;;;; -54887;5;0;false;false;127;127;159;;; -54892;3;0;false;false;;;;;; -54895;1;0;false;false;63;95;191;;; -54896;1;0;false;false;;;;;; -54897;11;1;false;false;127;159;191;;; -54908;12;0;false;false;63;95;191;;; -54920;1;0;false;false;;;;;; -54921;4;0;false;false;127;127;159;;; -54925;3;0;false;false;;;;;; -54928;1;0;false;false;63;95;191;;; -54929;4;0;false;false;;;;;; -54933;4;0;false;false;127;127;159;;; -54937;27;0;false;false;63;95;191;;; -54964;1;0;false;false;;;;;; -54965;1;0;false;false;127;127;159;;; -54966;1;0;false;false;;;;;; -54967;2;0;false;false;63;95;191;;; -54969;1;0;false;false;;;;;; -54970;3;0;false;false;63;95;191;;; -54973;1;0;false;false;;;;;; -54974;6;0;false;false;63;95;191;;; -54980;1;0;false;false;;;;;; -54981;4;0;false;false;63;95;191;;; -54985;1;0;false;false;;;;;; -54986;3;0;false;false;63;95;191;;; -54989;1;0;false;false;;;;;; -54990;6;0;false;false;63;95;191;;; -54996;1;0;false;false;;;;;; -54997;4;0;false;false;63;95;191;;; -55001;1;0;false;false;;;;;; -55002;7;0;false;false;63;95;191;;; -55009;1;0;false;false;;;;;; -55010;3;0;false;false;63;95;191;;; -55013;1;0;false;false;;;;;; -55014;6;0;false;false;63;95;191;;; -55020;5;0;false;false;127;127;159;;; -55025;3;0;false;false;;;;;; -55028;1;0;false;false;63;95;191;;; -55029;1;0;false;false;;;;;; -55030;5;0;false;false;127;127;159;;; -55035;3;0;false;false;;;;;; -55038;1;0;false;false;63;95;191;;; -55039;3;0;false;false;;;;;; -55042;1;0;false;false;63;95;191;;; -55043;1;0;false;false;;;;;; -55044;5;1;false;false;127;159;191;;; -55049;18;0;false;false;63;95;191;;; -55067;3;0;false;false;;;;;; -55070;1;0;false;false;63;95;191;;; -55071;1;0;false;false;;;;;; -55072;5;1;false;false;127;159;191;;; -55077;9;0;false;false;63;95;191;;; -55086;3;0;false;false;;;;;; -55089;1;0;false;false;63;95;191;;; -55090;1;0;false;false;;;;;; -55091;5;1;false;false;127;159;191;;; -55096;13;0;false;false;63;95;191;;; -55109;3;0;false;false;;;;;; -55112;1;0;false;false;63;95;191;;; -55113;1;0;false;false;;;;;; -55114;5;1;false;false;127;159;191;;; -55119;10;0;false;false;63;95;191;;; -55129;3;0;false;false;;;;;; -55132;1;0;false;false;63;95;191;;; -55133;1;0;false;false;;;;;; -55134;5;1;false;false;127;159;191;;; -55139;8;0;false;false;63;95;191;;; -55147;3;0;false;false;;;;;; -55150;1;0;false;false;63;95;191;;; -55151;1;0;false;false;;;;;; -55152;5;1;false;false;127;159;191;;; -55157;9;0;false;false;63;95;191;;; -55166;3;0;false;false;;;;;; -55169;2;0;false;false;63;95;191;;; -55171;2;0;false;false;;;;;; -55173;6;1;false;false;127;0;85;;; -55179;1;0;false;false;;;;;; -55180;20;0;false;false;0;0;0;;; -55200;1;0;false;false;;;;;; -55201;7;0;false;false;0;0;0;;; -55208;1;0;false;false;;;;;; -55209;3;1;false;false;127;0;85;;; -55212;1;0;false;false;;;;;; -55213;6;0;false;false;0;0;0;;; -55219;1;0;false;false;;;;;; -55220;1;0;false;false;0;0;0;;; -55221;3;0;false;false;;;;;; -55224;5;1;false;false;127;0;85;;; -55229;8;0;false;false;0;0;0;;; -55237;1;0;false;false;;;;;; -55238;16;0;false;false;0;0;0;;; -55254;1;0;false;false;;;;;; -55255;1;0;false;false;0;0;0;;; -55256;1;0;false;false;;;;;; -55257;20;0;false;false;0;0;0;;; -55277;1;0;false;false;;;;;; -55278;1;0;false;false;0;0;0;;; -55279;1;0;false;false;;;;;; -55280;20;0;false;false;0;0;0;;; -55300;3;0;false;false;;;;;; -55303;87;0;false;false;63;127;95;;; -55390;1;0;false;false;;;;;; -55391;85;0;false;false;63;127;95;;; -55476;1;0;false;false;;;;;; -55477;5;1;false;false;127;0;85;;; -55482;32;0;false;false;0;0;0;;; -55514;3;0;false;false;;;;;; -55517;5;1;false;false;127;0;85;;; -55522;32;0;false;false;0;0;0;;; -55554;3;0;false;false;;;;;; -55557;7;0;false;false;0;0;0;;; -55564;1;0;false;false;;;;;; -55565;7;0;false;false;0;0;0;;; -55572;1;0;false;false;;;;;; -55573;1;0;false;false;0;0;0;;; -55574;1;0;false;false;;;;;; -55575;13;0;false;false;0;0;0;;; -55588;3;0;false;false;;;;;; -55591;10;0;false;false;0;0;0;;; -55601;1;0;false;false;;;;;; -55602;1;0;false;false;0;0;0;;; -55603;1;0;false;false;;;;;; -55604;1;0;false;false;0;0;0;;; -55605;5;1;false;false;127;0;85;;; -55610;11;0;false;false;0;0;0;;; -55621;1;0;false;false;;;;;; -55622;1;0;false;false;0;0;0;;; -55623;1;0;false;false;;;;;; -55624;13;0;false;false;0;0;0;;; -55637;1;0;false;false;;;;;; -55638;2;0;false;false;0;0;0;;; -55640;1;0;false;false;;;;;; -55641;2;0;false;false;0;0;0;;; -55643;3;0;false;false;;;;;; -55646;2;1;false;false;127;0;85;;; -55648;1;0;false;false;;;;;; -55649;7;0;false;false;0;0;0;;; -55656;1;0;false;false;;;;;; -55657;1;0;false;false;0;0;0;;; -55658;1;0;false;false;;;;;; -55659;14;0;false;false;0;0;0;;; -55673;1;0;false;false;;;;;; -55674;2;0;false;false;0;0;0;;; -55676;1;0;false;false;;;;;; -55677;2;0;false;false;0;0;0;;; -55679;1;0;false;false;;;;;; -55680;1;0;false;false;0;0;0;;; -55681;4;0;false;false;;;;;; -55685;12;0;false;false;0;0;0;;; -55697;5;1;false;false;127;0;85;;; -55702;2;0;false;false;0;0;0;;; -55704;3;0;false;false;;;;;; -55707;1;0;false;false;0;0;0;;; -55708;3;0;false;false;;;;;; -55711;10;0;false;false;0;0;0;;; -55721;1;0;false;false;;;;;; -55722;1;0;false;false;0;0;0;;; -55723;1;0;false;false;;;;;; -55724;11;0;false;false;0;0;0;;; -55735;1;0;false;false;;;;;; -55736;1;0;false;false;0;0;0;;; -55737;1;0;false;false;;;;;; -55738;13;0;false;false;0;0;0;;; -55751;1;0;false;false;;;;;; -55752;1;0;false;false;0;0;0;;; -55753;1;0;false;false;;;;;; -55754;16;0;false;false;0;0;0;;; -55770;1;0;false;false;;;;;; -55771;1;0;false;false;0;0;0;;; -55772;1;0;false;false;;;;;; -55773;2;0;false;false;0;0;0;;; -55775;1;0;false;false;;;;;; -55776;2;0;false;false;0;0;0;;; -55778;3;0;false;false;;;;;; -55781;2;1;false;false;127;0;85;;; -55783;1;0;false;false;;;;;; -55784;7;0;false;false;0;0;0;;; -55791;1;0;false;false;;;;;; -55792;1;0;false;false;0;0;0;;; -55793;1;0;false;false;;;;;; -55794;11;0;false;false;0;0;0;;; -55805;1;0;false;false;;;;;; -55806;2;0;false;false;0;0;0;;; -55808;1;0;false;false;;;;;; -55809;1;0;false;false;0;0;0;;; -55810;1;0;false;false;;;;;; -55811;2;0;false;false;0;0;0;;; -55813;1;0;false;false;;;;;; -55814;6;0;false;false;0;0;0;;; -55820;1;0;false;false;;;;;; -55821;1;0;false;false;0;0;0;;; -55822;1;0;false;false;;;;;; -55823;11;0;false;false;0;0;0;;; -55834;1;0;false;false;;;;;; -55835;2;0;false;false;0;0;0;;; -55837;1;0;false;false;;;;;; -55838;2;0;false;false;0;0;0;;; -55840;1;0;false;false;;;;;; -55841;1;0;false;false;0;0;0;;; -55842;4;0;false;false;;;;;; -55846;10;0;false;false;0;0;0;;; -55856;1;0;false;false;;;;;; -55857;1;0;false;false;0;0;0;;; -55858;1;0;false;false;;;;;; -55859;9;0;false;false;0;0;0;;; -55868;1;0;false;false;;;;;; -55869;1;0;false;false;0;0;0;;; -55870;1;0;false;false;;;;;; -55871;11;0;false;false;0;0;0;;; -55882;1;0;false;false;;;;;; -55883;1;0;false;false;0;0;0;;; -55884;1;0;false;false;;;;;; -55885;12;0;false;false;0;0;0;;; -55897;1;0;false;false;;;;;; -55898;1;0;false;false;0;0;0;;; -55899;1;0;false;false;;;;;; -55900;2;0;false;false;0;0;0;;; -55902;3;0;false;false;;;;;; -55905;1;0;false;false;0;0;0;;; -55906;3;0;false;false;;;;;; -55909;9;0;false;false;0;0;0;;; -55918;1;0;false;false;;;;;; -55919;1;0;false;false;0;0;0;;; -55920;1;0;false;false;;;;;; -55921;3;1;false;false;127;0;85;;; -55924;1;0;false;false;;;;;; -55925;19;0;false;false;0;0;0;;; -55944;3;0;false;false;;;;;; -55947;24;0;false;false;0;0;0;;; -55971;3;0;false;false;;;;;; -55974;21;0;false;false;0;0;0;;; -55995;3;0;false;false;;;;;; -55998;2;1;false;false;127;0;85;;; -56000;1;0;false;false;;;;;; -56001;7;0;false;false;0;0;0;;; -56008;1;0;false;false;;;;;; -56009;1;0;false;false;0;0;0;;; -56010;1;0;false;false;;;;;; -56011;9;0;false;false;0;0;0;;; -56020;1;0;false;false;;;;;; -56021;2;0;false;false;0;0;0;;; -56023;1;0;false;false;;;;;; -56024;2;0;false;false;0;0;0;;; -56026;1;0;false;false;;;;;; -56027;1;0;false;false;0;0;0;;; -56028;4;0;false;false;;;;;; -56032;12;0;false;false;0;0;0;;; -56044;4;1;false;false;127;0;85;;; -56048;2;0;false;false;0;0;0;;; -56050;3;0;false;false;;;;;; -56053;1;0;false;false;0;0;0;;; -56054;3;0;false;false;;;;;; -56057;4;1;false;false;127;0;85;;; -56061;1;0;false;false;;;;;; -56062;1;0;false;false;0;0;0;;; -56063;4;0;false;false;;;;;; -56067;9;0;false;false;0;0;0;;; -56076;1;0;false;false;;;;;; -56077;1;0;false;false;0;0;0;;; -56078;1;0;false;false;;;;;; -56079;3;1;false;false;127;0;85;;; -56082;1;0;false;false;;;;;; -56083;18;0;false;false;0;0;0;;; -56101;4;1;false;false;127;0;85;;; -56105;1;0;false;false;0;0;0;;; -56106;1;0;false;false;;;;;; -56107;9;0;false;false;0;0;0;;; -56116;3;0;false;false;;;;;; -56119;1;0;false;false;0;0;0;;; -56120;4;0;false;false;;;;;; -56124;12;0;false;false;0;0;0;;; -56136;1;0;false;false;;;;;; -56137;1;0;false;false;0;0;0;;; -56138;1;0;false;false;;;;;; -56139;3;1;false;false;127;0;85;;; -56142;1;0;false;false;;;;;; -56143;6;0;false;false;0;0;0;;; -56149;4;1;false;false;127;0;85;;; -56153;1;0;false;false;0;0;0;;; -56154;1;0;false;false;;;;;; -56155;10;0;false;false;0;0;0;;; -56165;3;0;false;false;;;;;; -56168;2;1;false;false;127;0;85;;; -56170;1;0;false;false;;;;;; -56171;15;0;false;false;0;0;0;;; -56186;1;0;false;false;;;;;; -56187;1;0;false;false;0;0;0;;; -56188;4;0;false;false;;;;;; -56192;21;0;false;false;0;0;0;;; -56213;4;0;false;false;;;;;; -56217;8;0;false;false;0;0;0;;; -56225;1;0;false;false;;;;;; -56226;8;0;false;false;0;0;0;;; -56234;1;0;false;false;;;;;; -56235;1;0;false;false;0;0;0;;; -56236;1;0;false;false;;;;;; -56237;3;1;false;false;127;0;85;;; -56240;1;0;false;false;;;;;; -56241;10;0;false;false;0;0;0;;; -56251;1;0;false;false;;;;;; -56252;1;0;false;false;0;0;0;;; -56253;5;0;false;false;;;;;; -56258;6;1;false;false;127;0;85;;; -56264;1;0;false;false;;;;;; -56265;4;1;false;false;127;0;85;;; -56269;1;0;false;false;;;;;; -56270;5;0;false;false;0;0;0;;; -56275;1;0;false;false;;;;;; -56276;1;0;false;false;0;0;0;;; -56277;6;0;false;false;;;;;; -56283;3;1;false;false;127;0;85;;; -56286;1;0;false;false;;;;;; -56287;9;0;false;false;0;0;0;;; -56296;1;0;false;false;;;;;; -56297;1;0;false;false;0;0;0;;; -56298;1;0;false;false;;;;;; -56299;30;0;false;false;0;0;0;;; -56329;1;0;false;false;;;;;; -56330;2;0;false;false;0;0;0;;; -56332;1;0;false;false;;;;;; -56333;22;0;false;false;0;0;0;;; -56355;1;0;false;false;;;;;; -56356;1;0;false;false;0;0;0;;; -56357;1;0;false;false;;;;;; -56358;9;0;false;false;0;0;0;;; -56367;1;0;false;false;;;;;; -56368;1;0;false;false;0;0;0;;; -56369;1;0;false;false;;;;;; -56370;9;0;false;false;0;0;0;;; -56379;6;0;false;false;;;;;; -56385;2;1;false;false;127;0;85;;; -56387;1;0;false;false;;;;;; -56388;10;0;false;false;0;0;0;;; -56398;1;0;false;false;;;;;; -56399;2;0;false;false;0;0;0;;; -56401;1;0;false;false;;;;;; -56402;15;0;false;false;0;0;0;;; -56417;1;0;false;false;;;;;; -56418;6;1;false;false;127;0;85;;; -56424;1;0;false;false;0;0;0;;; -56425;6;0;false;false;;;;;; -56431;2;1;false;false;127;0;85;;; -56433;1;0;false;false;;;;;; -56434;11;0;false;false;0;0;0;;; -56445;1;0;false;false;;;;;; -56446;2;0;false;false;0;0;0;;; -56448;1;0;false;false;;;;;; -56449;13;0;false;false;0;0;0;;; -56462;1;0;false;false;;;;;; -56463;6;1;false;false;127;0;85;;; -56469;1;0;false;false;0;0;0;;; -56470;6;0;false;false;;;;;; -56476;3;1;false;false;127;0;85;;; -56479;1;0;false;false;;;;;; -56480;9;0;false;false;0;0;0;;; -56489;1;0;false;false;;;;;; -56490;1;0;false;false;0;0;0;;; -56491;1;0;false;false;;;;;; -56492;15;0;false;false;0;0;0;;; -56507;6;0;false;false;;;;;; -56513;6;0;false;false;0;0;0;;; -56519;1;0;false;false;;;;;; -56520;4;0;false;false;0;0;0;;; -56524;1;0;false;false;;;;;; -56525;1;0;false;false;0;0;0;;; -56526;1;0;false;false;;;;;; -56527;27;0;false;false;0;0;0;;; -56554;6;0;false;false;;;;;; -56560;3;1;false;false;127;0;85;;; -56563;1;0;false;false;;;;;; -56564;10;0;false;false;0;0;0;;; -56574;1;0;false;false;;;;;; -56575;1;0;false;false;0;0;0;;; -56576;1;0;false;false;;;;;; -56577;35;0;false;false;0;0;0;;; -56612;6;0;false;false;;;;;; -56618;3;1;false;false;127;0;85;;; -56621;1;0;false;false;;;;;; -56622;12;0;false;false;0;0;0;;; -56634;1;0;false;false;;;;;; -56635;1;0;false;false;0;0;0;;; -56636;1;0;false;false;;;;;; -56637;11;0;false;false;0;0;0;;; -56648;1;0;false;false;;;;;; -56649;1;0;false;false;0;0;0;;; -56650;1;0;false;false;;;;;; -56651;11;0;false;false;0;0;0;;; -56662;6;0;false;false;;;;;; -56668;3;1;false;false;127;0;85;;; -56671;1;0;false;false;;;;;; -56672;9;0;false;false;0;0;0;;; -56681;1;0;false;false;;;;;; -56682;1;0;false;false;0;0;0;;; -56683;1;0;false;false;;;;;; -56684;18;0;false;false;0;0;0;;; -56702;1;0;false;false;;;;;; -56703;10;0;false;false;0;0;0;;; -56713;1;0;false;false;;;;;; -56714;14;0;false;false;0;0;0;;; -56728;6;0;false;false;;;;;; -56734;27;0;false;false;0;0;0;;; -56761;1;0;false;false;;;;;; -56762;15;0;false;false;0;0;0;;; -56777;1;0;false;false;;;;;; -56778;11;0;false;false;0;0;0;;; -56789;5;0;false;false;;;;;; -56794;1;0;false;false;0;0;0;;; -56795;4;0;false;false;;;;;; -56799;2;0;false;false;0;0;0;;; -56801;4;0;false;false;;;;;; -56805;36;0;false;false;0;0;0;;; -56841;1;0;false;false;;;;;; -56842;10;0;false;false;0;0;0;;; -56852;3;0;false;false;;;;;; -56855;1;0;false;false;0;0;0;;; -56856;3;0;false;false;;;;;; -56859;23;0;false;false;0;0;0;;; -56882;4;0;false;false;;;;;; -56886;22;0;false;false;0;0;0;;; -56908;3;0;false;false;;;;;; -56911;20;0;false;false;0;0;0;;; -56931;3;0;false;false;;;;;; -56934;11;0;false;false;0;0;0;;; -56945;1;0;false;false;;;;;; -56946;1;0;false;false;0;0;0;;; -56947;1;0;false;false;;;;;; -56948;3;1;false;false;127;0;85;;; -56951;1;0;false;false;;;;;; -56952;15;0;false;false;0;0;0;;; -56967;1;0;false;false;;;;;; -56968;18;0;false;false;0;0;0;;; -56986;3;0;false;false;;;;;; -56989;23;0;false;false;0;0;0;;; -57012;3;0;false;false;;;;;; -57015;19;0;false;false;0;0;0;;; -57034;3;0;false;false;;;;;; -57037;27;0;false;false;0;0;0;;; -57064;3;0;false;false;;;;;; -57067;23;0;false;false;0;0;0;;; -57090;2;0;false;false;;;;;; -57092;1;0;false;false;0;0;0;;; -57093;2;0;false;false;;;;;; -57095;3;0;false;false;63;95;191;;; -57098;5;0;false;false;;;;;; -57103;1;0;false;false;63;95;191;;; -57104;1;0;false;false;;;;;; -57105;4;0;false;false;63;95;191;;; -57109;1;0;false;false;;;;;; -57110;2;0;false;false;63;95;191;;; -57112;1;0;false;false;;;;;; -57113;8;0;false;false;63;95;191;;; -57121;1;0;false;false;;;;;; -57122;6;0;false;false;63;95;191;;; -57128;1;0;false;false;;;;;; -57129;9;0;false;false;63;95;191;;; -57138;1;0;false;false;;;;;; -57139;2;0;false;false;63;95;191;;; -57141;1;0;false;false;;;;;; -57142;14;0;false;false;63;95;191;;; -57156;1;0;false;false;;;;;; -57157;5;0;false;false;63;95;191;;; -57162;1;0;false;false;;;;;; -57163;2;0;false;false;63;95;191;;; -57165;1;0;false;false;;;;;; -57166;4;0;false;false;63;95;191;;; -57170;1;0;false;false;;;;;; -57171;2;0;false;false;63;95;191;;; -57173;1;0;false;false;;;;;; -57174;3;0;false;false;63;95;191;;; -57177;4;0;false;false;;;;;; -57181;1;0;false;false;63;95;191;;; -57182;1;0;false;false;;;;;; -57183;6;0;false;false;63;95;191;;; -57189;1;0;false;false;;;;;; -57190;4;0;false;false;63;95;191;;; -57194;1;0;false;false;;;;;; -57195;3;0;false;false;63;95;191;;; -57198;1;0;false;false;;;;;; -57199;6;0;false;false;63;95;191;;; -57205;1;0;false;false;;;;;; -57206;4;0;false;false;63;95;191;;; -57210;1;0;false;false;;;;;; -57211;3;0;false;false;63;95;191;;; -57214;1;0;false;false;;;;;; -57215;8;0;false;false;63;95;191;;; -57223;3;0;false;false;;;;;; -57226;1;0;false;false;63;95;191;;; -57227;1;0;false;false;;;;;; -57228;3;0;false;false;127;127;159;;; -57231;3;0;false;false;;;;;; -57234;1;0;false;false;63;95;191;;; -57235;3;0;false;false;;;;;; -57238;1;0;false;false;63;95;191;;; -57239;1;0;false;false;;;;;; -57240;7;1;false;false;127;159;191;;; -57247;22;0;false;false;63;95;191;;; -57269;1;0;false;false;;;;;; -57270;3;0;false;false;63;95;191;;; -57273;1;0;false;false;;;;;; -57274;8;0;false;false;63;95;191;;; -57282;3;0;false;false;;;;;; -57285;1;0;false;false;63;95;191;;; -57286;1;0;false;false;;;;;; -57287;11;1;false;false;127;159;191;;; -57298;12;0;false;false;63;95;191;;; -57310;1;0;false;false;;;;;; -57311;4;0;false;false;127;127;159;;; -57315;3;0;false;false;;;;;; -57318;1;0;false;false;63;95;191;;; -57319;4;0;false;false;;;;;; -57323;4;0;false;false;127;127;159;;; -57327;21;0;false;false;63;95;191;;; -57348;1;0;false;false;;;;;; -57349;1;0;false;false;127;127;159;;; -57350;1;0;false;false;;;;;; -57351;2;0;false;false;63;95;191;;; -57353;1;0;false;false;;;;;; -57354;3;0;false;false;63;95;191;;; -57357;1;0;false;false;;;;;; -57358;8;0;false;false;63;95;191;;; -57366;1;0;false;false;;;;;; -57367;3;0;false;false;63;95;191;;; -57370;1;0;false;false;;;;;; -57371;4;0;false;false;63;95;191;;; -57375;1;0;false;false;;;;;; -57376;8;0;false;false;63;95;191;;; -57384;5;0;false;false;127;127;159;;; -57389;3;0;false;false;;;;;; -57392;1;0;false;false;63;95;191;;; -57393;4;0;false;false;;;;;; -57397;4;0;false;false;127;127;159;;; -57401;27;0;false;false;63;95;191;;; -57428;1;0;false;false;;;;;; -57429;1;0;false;false;127;127;159;;; -57430;1;0;false;false;;;;;; -57431;2;0;false;false;63;95;191;;; -57433;1;0;false;false;;;;;; -57434;3;0;false;false;63;95;191;;; -57437;1;0;false;false;;;;;; -57438;6;0;false;false;63;95;191;;; -57444;1;0;false;false;;;;;; -57445;4;0;false;false;63;95;191;;; -57449;1;0;false;false;;;;;; -57450;3;0;false;false;63;95;191;;; -57453;1;0;false;false;;;;;; -57454;6;0;false;false;63;95;191;;; -57460;1;0;false;false;;;;;; -57461;4;0;false;false;63;95;191;;; -57465;1;0;false;false;;;;;; -57466;7;0;false;false;63;95;191;;; -57473;1;0;false;false;;;;;; -57474;3;0;false;false;63;95;191;;; -57477;1;0;false;false;;;;;; -57478;8;0;false;false;63;95;191;;; -57486;5;0;false;false;127;127;159;;; -57491;3;0;false;false;;;;;; -57494;1;0;false;false;63;95;191;;; -57495;1;0;false;false;;;;;; -57496;5;0;false;false;127;127;159;;; -57501;3;0;false;false;;;;;; -57504;1;0;false;false;63;95;191;;; -57505;1;0;false;false;;;;;; -57506;11;1;false;false;127;159;191;;; -57517;24;0;false;false;63;95;191;;; -57541;1;0;false;false;;;;;; -57542;4;0;false;false;127;127;159;;; -57546;3;0;false;false;;;;;; -57549;1;0;false;false;63;95;191;;; -57550;4;0;false;false;;;;;; -57554;4;0;false;false;127;127;159;;; -57558;19;0;false;false;63;95;191;;; -57577;1;0;false;false;;;;;; -57578;4;0;false;false;63;95;191;;; -57582;1;0;false;false;;;;;; -57583;8;0;false;false;63;95;191;;; -57591;1;0;false;false;;;;;; -57592;2;0;false;false;63;95;191;;; -57594;1;0;false;false;;;;;; -57595;4;0;false;false;63;95;191;;; -57599;5;0;false;false;127;127;159;;; -57604;3;0;false;false;;;;;; -57607;1;0;false;false;63;95;191;;; -57608;1;0;false;false;;;;;; -57609;5;0;false;false;127;127;159;;; -57614;3;0;false;false;;;;;; -57617;2;0;false;false;63;95;191;;; -57619;2;0;false;false;;;;;; -57621;6;1;false;false;127;0;85;;; -57627;1;0;false;false;;;;;; -57628;4;1;false;false;127;0;85;;; -57632;1;0;false;false;;;;;; -57633;48;0;false;false;0;0;0;;; -57681;1;0;false;false;;;;;; -57682;23;0;false;false;0;0;0;;; -57705;1;0;false;false;;;;;; -57706;1;0;false;false;0;0;0;;; -57707;3;0;false;false;;;;;; -57710;14;0;false;false;0;0;0;;; -57724;3;0;false;false;;;;;; -57727;2;1;false;false;127;0;85;;; -57729;1;0;false;false;;;;;; -57730;23;0;false;false;0;0;0;;; -57753;1;0;false;false;;;;;; -57754;2;0;false;false;0;0;0;;; -57756;1;0;false;false;;;;;; -57757;4;1;false;false;127;0;85;;; -57761;1;0;false;false;0;0;0;;; -57762;1;0;false;false;;;;;; -57763;35;0;false;false;0;0;0;;; -57798;3;0;false;false;;;;;; -57801;18;0;false;false;0;0;0;;; -57819;1;0;false;false;;;;;; -57820;13;0;false;false;0;0;0;;; -57833;1;0;false;false;;;;;; -57834;1;0;false;false;0;0;0;;; -57835;1;0;false;false;;;;;; -57836;3;1;false;false;127;0;85;;; -57839;1;0;false;false;;;;;; -57840;43;0;false;false;0;0;0;;; -57883;3;0;false;false;;;;;; -57886;27;0;false;false;0;0;0;;; -57913;1;0;false;false;;;;;; -57914;15;0;false;false;0;0;0;;; -57929;2;0;false;false;;;;;; -57931;1;0;false;false;0;0;0;;; -57932;2;0;false;false;;;;;; -57934;3;0;false;false;63;95;191;;; -57937;4;0;false;false;;;;;; -57941;1;0;false;false;63;95;191;;; -57942;1;0;false;false;;;;;; -57943;4;0;false;false;63;95;191;;; -57947;1;0;false;false;;;;;; -57948;1;0;false;false;63;95;191;;; -57949;1;0;false;false;;;;;; -57950;3;0;false;false;63;95;191;;; -57953;1;0;false;false;;;;;; -57954;2;0;false;false;63;95;191;;; -57956;1;0;false;false;;;;;; -57957;2;0;false;false;63;95;191;;; -57959;1;0;false;false;;;;;; -57960;7;0;false;false;63;95;191;;; -57967;3;0;false;false;;;;;; -57970;1;0;false;false;63;95;191;;; -57971;1;0;false;false;;;;;; -57972;3;0;false;false;63;95;191;;; -57975;1;0;false;false;;;;;; -57976;6;0;false;false;63;95;191;;; -57982;1;0;false;false;;;;;; -57983;3;0;false;false;63;95;191;;; -57986;1;0;false;false;;;;;; -57987;2;0;false;false;63;95;191;;; -57989;1;0;false;false;;;;;; -57990;10;0;false;false;63;95;191;;; -58000;1;0;false;false;;;;;; -58001;4;0;false;false;63;95;191;;; -58005;1;0;false;false;;;;;; -58006;1;0;false;false;63;95;191;;; -58007;1;0;false;false;;;;;; -58008;5;0;false;false;63;95;191;;; -58013;1;0;false;false;;;;;; -58014;8;0;false;false;63;95;191;;; -58022;1;0;false;false;;;;;; -58023;4;0;false;false;63;95;191;;; -58027;1;0;false;false;;;;;; -58028;3;0;false;false;63;95;191;;; -58031;1;0;false;false;;;;;; -58032;3;0;false;false;63;95;191;;; -58035;1;0;false;false;;;;;; -58036;4;0;false;false;63;95;191;;; -58040;4;0;false;false;;;;;; -58044;1;0;false;false;63;95;191;;; -58045;1;0;false;false;;;;;; -58046;4;0;false;false;63;95;191;;; -58050;1;0;false;false;;;;;; -58051;3;0;false;false;63;95;191;;; -58054;1;0;false;false;;;;;; -58055;6;0;false;false;63;95;191;;; -58061;1;0;false;false;;;;;; -58062;11;0;false;false;63;95;191;;; -58073;1;0;false;false;;;;;; -58074;2;0;false;false;63;95;191;;; -58076;1;0;false;false;;;;;; -58077;3;0;false;false;63;95;191;;; -58080;1;0;false;false;;;;;; -58081;10;0;false;false;63;95;191;;; -58091;3;0;false;false;;;;;; -58094;1;0;false;false;63;95;191;;; -58095;1;0;false;false;;;;;; -58096;3;0;false;false;127;127;159;;; -58099;3;0;false;false;;;;;; -58102;1;0;false;false;63;95;191;;; -58103;3;0;false;false;;;;;; -58106;1;0;false;false;63;95;191;;; -58107;1;0;false;false;;;;;; -58108;7;1;false;false;127;159;191;;; -58115;3;0;false;false;63;95;191;;; -58118;1;0;false;false;;;;;; -58119;1;0;false;false;63;95;191;;; -58120;1;0;false;false;;;;;; -58121;3;0;false;false;63;95;191;;; -58124;1;0;false;false;;;;;; -58125;4;0;false;false;63;95;191;;; -58129;1;0;false;false;;;;;; -58130;7;0;false;false;63;95;191;;; -58137;1;0;false;false;;;;;; -58138;2;0;false;false;63;95;191;;; -58140;1;0;false;false;;;;;; -58141;8;0;false;false;63;95;191;;; -58149;1;0;false;false;;;;;; -58150;2;0;false;false;63;95;191;;; -58152;1;0;false;false;;;;;; -58153;1;0;false;false;63;95;191;;; -58154;1;0;false;false;;;;;; -58155;10;0;false;false;63;95;191;;; -58165;4;0;false;false;;;;;; -58169;1;0;false;false;63;95;191;;; -58170;2;0;false;false;;;;;; -58172;10;0;false;false;63;95;191;;; -58182;1;0;false;false;;;;;; -58183;3;0;false;false;63;95;191;;; -58186;1;0;false;false;;;;;; -58187;4;0;false;false;63;95;191;;; -58191;1;0;false;false;;;;;; -58192;1;0;false;false;63;95;191;;; -58193;1;0;false;false;;;;;; -58194;5;0;false;false;63;95;191;;; -58199;1;0;false;false;;;;;; -58200;5;0;false;false;63;95;191;;; -58205;2;0;false;false;;;;;; -58207;9;0;false;false;63;95;191;;; -58216;1;0;false;false;;;;;; -58217;5;0;false;false;63;95;191;;; -58222;1;0;false;false;;;;;; -58223;5;0;false;false;63;95;191;;; -58228;1;0;false;false;;;;;; -58229;3;0;false;false;63;95;191;;; -58232;1;0;false;false;;;;;; -58233;3;0;false;false;63;95;191;;; -58236;1;0;false;false;;;;;; -58237;2;0;false;false;63;95;191;;; -58239;1;0;false;false;;;;;; -58240;4;0;false;false;63;95;191;;; -58244;1;0;false;false;;;;;; -58245;2;0;false;false;63;95;191;;; -58247;3;0;false;false;;;;;; -58250;1;0;false;false;63;95;191;;; -58251;2;0;false;false;;;;;; -58253;9;0;false;false;63;95;191;;; -58262;1;0;false;false;;;;;; -58263;9;0;false;false;63;95;191;;; -58272;1;0;false;false;;;;;; -58273;9;0;false;false;63;95;191;;; -58282;1;0;false;false;;;;;; -58283;5;0;false;false;63;95;191;;; -58288;1;0;false;false;;;;;; -58289;5;0;false;false;63;95;191;;; -58294;1;0;false;false;;;;;; -58295;5;0;false;false;63;95;191;;; -58300;1;0;false;false;;;;;; -58301;7;0;false;false;63;95;191;;; -58308;1;0;false;false;;;;;; -58309;3;0;false;false;63;95;191;;; -58312;1;0;false;false;;;;;; -58313;8;0;false;false;63;95;191;;; -58321;1;0;false;false;;;;;; -58322;8;0;false;false;63;95;191;;; -58330;4;0;false;false;;;;;; -58334;1;0;false;false;63;95;191;;; -58335;2;0;false;false;;;;;; -58337;12;0;false;false;63;95;191;;; -58349;2;0;false;false;;;;;; -58351;8;0;false;false;63;95;191;;; -58359;1;0;false;false;;;;;; -58360;5;0;false;false;63;95;191;;; -58365;1;0;false;false;;;;;; -58366;3;0;false;false;63;95;191;;; -58369;1;0;false;false;;;;;; -58370;2;0;false;false;63;95;191;;; -58372;1;0;false;false;;;;;; -58373;5;0;false;false;63;95;191;;; -58378;1;0;false;false;;;;;; -58379;5;0;false;false;63;95;191;;; -58384;1;0;false;false;;;;;; -58385;5;0;false;false;63;95;191;;; -58390;1;0;false;false;;;;;; -58391;3;0;false;false;63;95;191;;; -58394;1;0;false;false;;;;;; -58395;8;0;false;false;63;95;191;;; -58403;1;0;false;false;;;;;; -58404;5;0;false;false;63;95;191;;; -58409;1;0;false;false;;;;;; -58410;5;0;false;false;63;95;191;;; -58415;3;0;false;false;;;;;; -58418;1;0;false;false;63;95;191;;; -58419;2;0;false;false;;;;;; -58421;6;0;false;false;63;95;191;;; -58427;1;0;false;false;;;;;; -58428;9;0;false;false;63;95;191;;; -58437;1;0;false;false;;;;;; -58438;10;0;false;false;63;95;191;;; -58448;1;0;false;false;;;;;; -58449;8;0;false;false;63;95;191;;; -58457;1;0;false;false;;;;;; -58458;12;0;false;false;63;95;191;;; -58470;1;0;false;false;;;;;; -58471;5;0;false;false;63;95;191;;; -58476;1;0;false;false;;;;;; -58477;6;0;false;false;63;95;191;;; -58483;3;0;false;false;;;;;; -58486;1;0;false;false;63;95;191;;; -58487;1;0;false;false;;;;;; -58488;7;1;false;false;127;159;191;;; -58495;6;0;false;false;63;95;191;;; -58501;1;0;false;false;;;;;; -58502;3;0;false;false;63;95;191;;; -58505;1;0;false;false;;;;;; -58506;2;0;false;false;63;95;191;;; -58508;1;0;false;false;;;;;; -58509;3;0;false;false;63;95;191;;; -58512;1;0;false;false;;;;;; -58513;10;0;false;false;63;95;191;;; -58523;1;0;false;false;;;;;; -58524;7;0;false;false;63;95;191;;; -58531;1;0;false;false;;;;;; -58532;7;0;false;false;63;95;191;;; -58539;1;0;false;false;;;;;; -58540;2;0;false;false;63;95;191;;; -58542;1;0;false;false;;;;;; -58543;8;0;false;false;63;95;191;;; -58551;4;0;false;false;;;;;; -58555;1;0;false;false;63;95;191;;; -58556;2;0;false;false;;;;;; -58558;3;0;false;false;63;95;191;;; -58561;1;0;false;false;;;;;; -58562;8;0;false;false;63;95;191;;; -58570;1;0;false;false;;;;;; -58571;2;0;false;false;63;95;191;;; -58573;1;0;false;false;;;;;; -58574;6;0;false;false;63;95;191;;; -58580;1;0;false;false;;;;;; -58581;1;0;false;false;63;95;191;;; -58582;1;0;false;false;;;;;; -58583;3;0;false;false;63;95;191;;; -58586;1;0;false;false;;;;;; -58587;8;0;false;false;63;95;191;;; -58595;3;0;false;false;;;;;; -58598;1;0;false;false;63;95;191;;; -58599;1;0;false;false;;;;;; -58600;11;1;false;false;127;159;191;;; -58611;12;0;false;false;63;95;191;;; -58623;1;0;false;false;;;;;; -58624;4;0;false;false;127;127;159;;; -58628;3;0;false;false;;;;;; -58631;1;0;false;false;63;95;191;;; -58632;4;0;false;false;;;;;; -58636;4;0;false;false;127;127;159;;; -58640;21;0;false;false;63;95;191;;; -58661;1;0;false;false;;;;;; -58662;1;0;false;false;127;127;159;;; -58663;1;0;false;false;;;;;; -58664;2;0;false;false;63;95;191;;; -58666;1;0;false;false;;;;;; -58667;3;0;false;false;63;95;191;;; -58670;1;0;false;false;;;;;; -58671;8;0;false;false;63;95;191;;; -58679;1;0;false;false;;;;;; -58680;3;0;false;false;63;95;191;;; -58683;1;0;false;false;;;;;; -58684;4;0;false;false;63;95;191;;; -58688;1;0;false;false;;;;;; -58689;8;0;false;false;63;95;191;;; -58697;5;0;false;false;127;127;159;;; -58702;3;0;false;false;;;;;; -58705;1;0;false;false;63;95;191;;; -58706;4;0;false;false;;;;;; -58710;4;0;false;false;127;127;159;;; -58714;27;0;false;false;63;95;191;;; -58741;1;0;false;false;;;;;; -58742;1;0;false;false;127;127;159;;; -58743;1;0;false;false;;;;;; -58744;2;0;false;false;63;95;191;;; -58746;1;0;false;false;;;;;; -58747;3;0;false;false;63;95;191;;; -58750;1;0;false;false;;;;;; -58751;6;0;false;false;63;95;191;;; -58757;1;0;false;false;;;;;; -58758;4;0;false;false;63;95;191;;; -58762;1;0;false;false;;;;;; -58763;3;0;false;false;63;95;191;;; -58766;1;0;false;false;;;;;; -58767;6;0;false;false;63;95;191;;; -58773;1;0;false;false;;;;;; -58774;4;0;false;false;63;95;191;;; -58778;1;0;false;false;;;;;; -58779;7;0;false;false;63;95;191;;; -58786;1;0;false;false;;;;;; -58787;3;0;false;false;63;95;191;;; -58790;1;0;false;false;;;;;; -58791;8;0;false;false;63;95;191;;; -58799;5;0;false;false;127;127;159;;; -58804;3;0;false;false;;;;;; -58807;1;0;false;false;63;95;191;;; -58808;1;0;false;false;;;;;; -58809;5;0;false;false;127;127;159;;; -58814;3;0;false;false;;;;;; -58817;2;0;false;false;63;95;191;;; -58819;2;0;false;false;;;;;; -58821;6;1;false;false;127;0;85;;; -58827;1;0;false;false;;;;;; -58828;4;1;false;false;127;0;85;;; -58832;1;0;false;false;;;;;; -58833;14;0;false;false;0;0;0;;; -58847;3;1;false;false;127;0;85;;; -58850;1;0;false;false;;;;;; -58851;4;0;false;false;0;0;0;;; -58855;1;0;false;false;;;;;; -58856;3;1;false;false;127;0;85;;; -58859;1;0;false;false;;;;;; -58860;7;0;false;false;0;0;0;;; -58867;1;0;false;false;;;;;; -58868;1;0;false;false;0;0;0;;; -58869;3;0;false;false;;;;;; -58872;14;0;false;false;0;0;0;;; -58886;7;0;false;false;;;;;; -58893;3;1;false;false;127;0;85;;; -58896;1;0;false;false;;;;;; -58897;8;0;false;false;0;0;0;;; -58905;1;0;false;false;;;;;; -58906;1;0;false;false;0;0;0;;; -58907;1;0;false;false;;;;;; -58908;3;0;false;false;0;0;0;;; -58911;1;0;false;false;;;;;; -58912;1;0;false;false;0;0;0;;; -58913;1;0;false;false;;;;;; -58914;13;0;false;false;0;0;0;;; -58927;3;0;false;false;;;;;; -58930;3;1;false;false;127;0;85;;; -58933;1;0;false;false;;;;;; -58934;13;0;false;false;0;0;0;;; -58947;1;0;false;false;;;;;; -58948;1;0;false;false;0;0;0;;; -58949;1;0;false;false;;;;;; -58950;3;0;false;false;0;0;0;;; -58953;1;0;false;false;;;;;; -58954;1;0;false;false;0;0;0;;; -58955;1;0;false;false;;;;;; -58956;18;0;false;false;0;0;0;;; -58974;3;0;false;false;;;;;; -58977;4;1;false;false;127;0;85;;; -58981;1;0;false;false;;;;;; -58982;7;0;false;false;0;0;0;;; -58989;1;0;false;false;;;;;; -58990;1;0;false;false;0;0;0;;; -58991;1;0;false;false;;;;;; -58992;1;0;false;false;0;0;0;;; -58993;4;1;false;false;127;0;85;;; -58997;10;0;false;false;0;0;0;;; -59007;5;0;false;false;;;;;; -59012;2;1;false;false;127;0;85;;; -59014;1;0;false;false;;;;;; -59015;33;0;false;false;0;0;0;;; -59048;1;0;false;false;;;;;; -59049;1;0;false;false;0;0;0;;; -59050;4;0;false;false;;;;;; -59054;54;0;false;false;63;127;95;;; -59108;2;0;false;false;;;;;; -59110;37;0;false;false;63;127;95;;; -59147;2;0;false;false;;;;;; -59149;4;1;false;false;127;0;85;;; -59153;1;0;false;false;;;;;; -59154;2;0;false;false;0;0;0;;; -59156;1;0;false;false;;;;;; -59157;1;0;false;false;0;0;0;;; -59158;1;0;false;false;;;;;; -59159;31;0;false;false;0;0;0;;; -59190;4;0;false;false;;;;;; -59194;3;1;false;false;127;0;85;;; -59197;1;0;false;false;;;;;; -59198;6;0;false;false;0;0;0;;; -59204;1;0;false;false;;;;;; -59205;1;0;false;false;0;0;0;;; -59206;1;0;false;false;;;;;; -59207;2;0;false;false;0;0;0;;; -59209;1;0;false;false;;;;;; -59210;1;0;false;false;0;0;0;;; -59211;1;0;false;false;;;;;; -59212;14;0;false;false;0;0;0;;; -59226;4;0;false;false;;;;;; -59230;2;1;false;false;127;0;85;;; -59232;1;0;false;false;;;;;; -59233;7;0;false;false;0;0;0;;; -59240;1;0;false;false;;;;;; -59241;2;0;false;false;0;0;0;;; -59243;1;0;false;false;;;;;; -59244;9;0;false;false;0;0;0;;; -59253;1;0;false;false;;;;;; -59254;1;0;false;false;0;0;0;;; -59255;5;0;false;false;;;;;; -59260;20;0;false;false;0;0;0;;; -59280;3;1;false;false;127;0;85;;; -59283;1;0;false;false;;;;;; -59284;17;0;false;false;0;0;0;;; -59301;4;0;false;false;;;;;; -59305;1;0;false;false;0;0;0;;; -59306;4;0;false;false;;;;;; -59310;4;1;false;false;127;0;85;;; -59314;1;0;false;false;;;;;; -59315;1;0;false;false;0;0;0;;; -59316;6;0;false;false;;;;;; -59322;17;0;false;false;0;0;0;;; -59339;3;1;false;false;127;0;85;;; -59342;1;0;false;false;;;;;; -59343;16;0;false;false;0;0;0;;; -59359;1;0;false;false;;;;;; -59360;3;1;false;false;127;0;85;;; -59363;1;0;false;false;;;;;; -59364;17;0;false;false;0;0;0;;; -59381;4;0;false;false;;;;;; -59385;1;0;false;false;0;0;0;;; -59386;4;0;false;false;;;;;; -59390;2;0;false;false;0;0;0;;; -59392;1;0;false;false;;;;;; -59393;1;0;false;false;0;0;0;;; -59394;1;0;false;false;;;;;; -59395;31;0;false;false;0;0;0;;; -59426;4;0;false;false;;;;;; -59430;6;0;false;false;0;0;0;;; -59436;1;0;false;false;;;;;; -59437;1;0;false;false;0;0;0;;; -59438;1;0;false;false;;;;;; -59439;2;0;false;false;0;0;0;;; -59441;1;0;false;false;;;;;; -59442;1;0;false;false;0;0;0;;; -59443;1;0;false;false;;;;;; -59444;14;0;false;false;0;0;0;;; -59458;4;0;false;false;;;;;; -59462;2;1;false;false;127;0;85;;; -59464;1;0;false;false;;;;;; -59465;7;0;false;false;0;0;0;;; -59472;1;0;false;false;;;;;; -59473;2;0;false;false;0;0;0;;; -59475;1;0;false;false;;;;;; -59476;9;0;false;false;0;0;0;;; -59485;1;0;false;false;;;;;; -59486;1;0;false;false;0;0;0;;; -59487;5;0;false;false;;;;;; -59492;20;0;false;false;0;0;0;;; -59512;3;1;false;false;127;0;85;;; -59515;1;0;false;false;;;;;; -59516;17;0;false;false;0;0;0;;; -59533;4;0;false;false;;;;;; -59537;1;0;false;false;0;0;0;;; -59538;4;0;false;false;;;;;; -59542;4;1;false;false;127;0;85;;; -59546;1;0;false;false;;;;;; -59547;1;0;false;false;0;0;0;;; -59548;6;0;false;false;;;;;; -59554;17;0;false;false;0;0;0;;; -59571;3;1;false;false;127;0;85;;; -59574;1;0;false;false;;;;;; -59575;16;0;false;false;0;0;0;;; -59591;1;0;false;false;;;;;; -59592;3;1;false;false;127;0;85;;; -59595;1;0;false;false;;;;;; -59596;17;0;false;false;0;0;0;;; -59613;4;0;false;false;;;;;; -59617;1;0;false;false;0;0;0;;; -59618;3;0;false;false;;;;;; -59621;1;0;false;false;0;0;0;;; -59622;1;0;false;false;;;;;; -59623;4;1;false;false;127;0;85;;; -59627;1;0;false;false;;;;;; -59628;1;0;false;false;0;0;0;;; -59629;4;0;false;false;;;;;; -59633;2;1;false;false;127;0;85;;; -59635;1;0;false;false;;;;;; -59636;7;0;false;false;0;0;0;;; -59643;1;0;false;false;;;;;; -59644;2;0;false;false;0;0;0;;; -59646;1;0;false;false;;;;;; -59647;9;0;false;false;0;0;0;;; -59656;1;0;false;false;;;;;; -59657;1;0;false;false;0;0;0;;; -59658;5;0;false;false;;;;;; -59663;20;0;false;false;0;0;0;;; -59683;3;1;false;false;127;0;85;;; -59686;1;0;false;false;;;;;; -59687;14;0;false;false;0;0;0;;; -59701;4;0;false;false;;;;;; -59705;1;0;false;false;0;0;0;;; -59706;4;0;false;false;;;;;; -59710;4;1;false;false;127;0;85;;; -59714;1;0;false;false;;;;;; -59715;1;0;false;false;0;0;0;;; -59716;6;0;false;false;;;;;; -59722;17;0;false;false;0;0;0;;; -59739;3;1;false;false;127;0;85;;; -59742;1;0;false;false;;;;;; -59743;13;0;false;false;0;0;0;;; -59756;1;0;false;false;;;;;; -59757;3;1;false;false;127;0;85;;; -59760;1;0;false;false;;;;;; -59761;17;0;false;false;0;0;0;;; -59778;4;0;false;false;;;;;; -59782;1;0;false;false;0;0;0;;; -59783;3;0;false;false;;;;;; -59786;1;0;false;false;0;0;0;;; -59787;6;0;false;false;;;;;; -59793;1;0;false;false;0;0;0;;; -59794;2;0;false;false;;;;;; -59796;3;0;false;false;63;95;191;;; -59799;3;0;false;false;;;;;; -59802;1;0;false;false;63;95;191;;; -59803;1;0;false;false;;;;;; -59804;4;0;false;false;63;95;191;;; -59808;1;0;false;false;;;;;; -59809;1;0;false;false;63;95;191;;; -59810;1;0;false;false;;;;;; -59811;13;0;false;false;63;95;191;;; -59824;1;0;false;false;;;;;; -59825;7;0;false;false;63;95;191;;; -59832;1;0;false;false;;;;;; -59833;9;0;false;false;63;95;191;;; -59842;1;0;false;false;;;;;; -59843;1;0;false;false;63;95;191;;; -59844;1;0;false;false;;;;;; -59845;16;0;false;false;63;95;191;;; -59861;1;0;false;false;;;;;; -59862;2;0;false;false;63;95;191;;; -59864;1;0;false;false;;;;;; -59865;4;0;false;false;63;95;191;;; -59869;4;0;false;false;;;;;; -59873;1;0;false;false;63;95;191;;; -59874;1;0;false;false;;;;;; -59875;8;0;false;false;63;95;191;;; -59883;1;0;false;false;;;;;; -59884;1;0;false;false;63;95;191;;; -59885;1;0;false;false;;;;;; -59886;4;0;false;false;63;95;191;;; -59890;1;0;false;false;;;;;; -59891;2;0;false;false;63;95;191;;; -59893;1;0;false;false;;;;;; -59894;4;0;false;false;63;95;191;;; -59898;1;0;false;false;;;;;; -59899;2;0;false;false;63;95;191;;; -59901;1;0;false;false;;;;;; -59902;8;0;false;false;63;95;191;;; -59910;1;0;false;false;;;;;; -59911;2;0;false;false;63;95;191;;; -59913;1;0;false;false;;;;;; -59914;9;0;false;false;63;95;191;;; -59923;1;0;false;false;;;;;; -59924;3;0;false;false;63;95;191;;; -59927;1;0;false;false;;;;;; -59928;4;0;false;false;63;95;191;;; -59932;1;0;false;false;;;;;; -59933;3;0;false;false;63;95;191;;; -59936;4;0;false;false;;;;;; -59940;1;0;false;false;63;95;191;;; -59941;1;0;false;false;;;;;; -59942;7;0;false;false;63;95;191;;; -59949;1;0;false;false;;;;;; -59950;4;0;false;false;63;95;191;;; -59954;1;0;false;false;;;;;; -59955;6;0;false;false;63;95;191;;; -59961;1;0;false;false;;;;;; -59962;2;0;false;false;63;95;191;;; -59964;1;0;false;false;;;;;; -59965;3;0;false;false;63;95;191;;; -59968;1;0;false;false;;;;;; -59969;4;0;false;false;63;95;191;;; -59973;1;0;false;false;;;;;; -59974;4;0;false;false;63;95;191;;; -59978;1;0;false;false;;;;;; -59979;6;0;false;false;63;95;191;;; -59985;1;0;false;false;;;;;; -59986;2;0;false;false;63;95;191;;; -59988;1;0;false;false;;;;;; -59989;7;0;false;false;63;95;191;;; -59996;1;0;false;false;;;;;; -59997;2;0;false;false;63;95;191;;; -59999;1;0;false;false;;;;;; -60000;2;0;false;false;63;95;191;;; -60002;1;0;false;false;;;;;; -60003;4;0;false;false;63;95;191;;; -60007;4;0;false;false;;;;;; -60011;1;0;false;false;63;95;191;;; -60012;1;0;false;false;;;;;; -60013;3;0;false;false;63;95;191;;; -60016;1;0;false;false;;;;;; -60017;1;0;false;false;63;95;191;;; -60018;1;0;false;false;;;;;; -60019;9;0;false;false;63;95;191;;; -60028;1;0;false;false;;;;;; -60029;9;0;false;false;63;95;191;;; -60038;1;0;false;false;;;;;; -60039;4;0;false;false;63;95;191;;; -60043;1;0;false;false;;;;;; -60044;3;0;false;false;63;95;191;;; -60047;1;0;false;false;;;;;; -60048;11;0;false;false;63;95;191;;; -60059;1;0;false;false;;;;;; -60060;5;0;false;false;63;95;191;;; -60065;3;0;false;false;;;;;; -60068;1;0;false;false;63;95;191;;; -60069;1;0;false;false;;;;;; -60070;4;0;false;false;63;95;191;;; -60074;1;0;false;false;;;;;; -60075;3;0;false;false;63;95;191;;; -60078;1;0;false;false;;;;;; -60079;2;0;false;false;63;95;191;;; -60081;1;0;false;false;;;;;; -60082;4;0;false;false;63;95;191;;; -60086;1;0;false;false;;;;;; -60087;4;0;false;false;63;95;191;;; -60091;1;0;false;false;;;;;; -60092;8;0;false;false;63;95;191;;; -60100;1;0;false;false;;;;;; -60101;8;0;false;false;63;95;191;;; -60109;1;0;false;false;;;;;; -60110;2;0;false;false;63;95;191;;; -60112;1;0;false;false;;;;;; -60113;5;0;false;false;63;95;191;;; -60118;1;0;false;false;127;127;159;;; -60119;2;0;false;false;63;95;191;;; -60121;1;0;false;false;127;127;159;;; -60122;4;0;false;false;63;95;191;;; -60126;1;0;false;false;;;;;; -60127;4;0;false;false;63;95;191;;; -60131;1;0;false;false;;;;;; -60132;6;0;false;false;63;95;191;;; -60138;3;0;false;false;;;;;; -60141;1;0;false;false;63;95;191;;; -60142;1;0;false;false;;;;;; -60143;3;0;false;false;63;95;191;;; -60146;1;0;false;false;;;;;; -60147;2;0;false;false;63;95;191;;; -60149;1;0;false;false;;;;;; -60150;9;0;false;false;63;95;191;;; -60159;1;0;false;false;;;;;; -60160;8;0;false;false;63;95;191;;; -60168;1;0;false;false;;;;;; -60169;2;0;false;false;63;95;191;;; -60171;1;0;false;false;;;;;; -60172;4;0;false;false;63;95;191;;; -60176;1;0;false;false;;;;;; -60177;6;0;false;false;63;95;191;;; -60183;4;0;false;false;;;;;; -60187;1;0;false;false;63;95;191;;; -60188;1;0;false;false;;;;;; -60189;5;0;false;false;63;95;191;;; -60194;1;0;false;false;;;;;; -60195;8;0;false;false;63;95;191;;; -60203;1;0;false;false;;;;;; -60204;4;0;false;false;63;95;191;;; -60208;1;0;false;false;;;;;; -60209;6;0;false;false;63;95;191;;; -60215;1;0;false;false;;;;;; -60216;8;0;false;false;63;95;191;;; -60224;1;0;false;false;;;;;; -60225;2;0;false;false;63;95;191;;; -60227;1;0;false;false;;;;;; -60228;1;0;false;false;63;95;191;;; -60229;1;0;false;false;;;;;; -60230;5;0;false;false;63;95;191;;; -60235;1;0;false;false;127;127;159;;; -60236;2;0;false;false;63;95;191;;; -60238;1;0;false;false;127;127;159;;; -60239;4;0;false;false;63;95;191;;; -60243;1;0;false;false;;;;;; -60244;8;0;false;false;63;95;191;;; -60252;3;0;false;false;;;;;; -60255;1;0;false;false;63;95;191;;; -60256;1;0;false;false;;;;;; -60257;6;0;false;false;63;95;191;;; -60263;1;0;false;false;;;;;; -60264;9;0;false;false;63;95;191;;; -60273;1;0;false;false;;;;;; -60274;6;0;false;false;63;95;191;;; -60280;1;0;false;false;;;;;; -60281;2;0;false;false;63;95;191;;; -60283;1;0;false;false;;;;;; -60284;7;0;false;false;63;95;191;;; -60291;1;0;false;false;;;;;; -60292;5;0;false;false;63;95;191;;; -60297;1;0;false;false;;;;;; -60298;2;0;false;false;63;95;191;;; -60300;1;0;false;false;;;;;; -60301;4;0;false;false;63;95;191;;; -60305;1;0;false;false;;;;;; -60306;6;0;false;false;63;95;191;;; -60312;1;0;false;false;;;;;; -60313;4;0;false;false;63;95;191;;; -60317;1;0;false;false;;;;;; -60318;3;0;false;false;63;95;191;;; -60321;1;0;false;false;;;;;; -60322;3;0;false;false;63;95;191;;; -60325;3;0;false;false;;;;;; -60328;1;0;false;false;63;95;191;;; -60329;1;0;false;false;;;;;; -60330;3;0;false;false;63;95;191;;; -60333;1;0;false;false;;;;;; -60334;4;0;false;false;63;95;191;;; -60338;1;0;false;false;;;;;; -60339;3;0;false;false;63;95;191;;; -60342;1;0;false;false;;;;;; -60343;7;0;false;false;63;95;191;;; -60350;4;0;false;false;;;;;; -60354;1;0;false;false;63;95;191;;; -60355;1;0;false;false;;;;;; -60356;3;0;false;false;127;127;159;;; -60359;3;0;false;false;;;;;; -60362;1;0;false;false;63;95;191;;; -60363;3;0;false;false;;;;;; -60366;1;0;false;false;63;95;191;;; -60367;1;0;false;false;;;;;; -60368;7;1;false;false;127;159;191;;; -60375;8;0;false;false;63;95;191;;; -60383;1;0;false;false;;;;;; -60384;3;0;false;false;63;95;191;;; -60387;1;0;false;false;;;;;; -60388;8;0;false;false;63;95;191;;; -60396;3;0;false;false;;;;;; -60399;1;0;false;false;63;95;191;;; -60400;1;0;false;false;;;;;; -60401;11;1;false;false;127;159;191;;; -60412;12;0;false;false;63;95;191;;; -60424;1;0;false;false;;;;;; -60425;4;0;false;false;127;127;159;;; -60429;3;0;false;false;;;;;; -60432;1;0;false;false;63;95;191;;; -60433;4;0;false;false;;;;;; -60437;4;0;false;false;127;127;159;;; -60441;21;0;false;false;63;95;191;;; -60462;1;0;false;false;;;;;; -60463;1;0;false;false;127;127;159;;; -60464;1;0;false;false;;;;;; -60465;2;0;false;false;63;95;191;;; -60467;1;0;false;false;;;;;; -60468;3;0;false;false;63;95;191;;; -60471;1;0;false;false;;;;;; -60472;8;0;false;false;63;95;191;;; -60480;1;0;false;false;;;;;; -60481;3;0;false;false;63;95;191;;; -60484;1;0;false;false;;;;;; -60485;4;0;false;false;63;95;191;;; -60489;1;0;false;false;;;;;; -60490;8;0;false;false;63;95;191;;; -60498;5;0;false;false;127;127;159;;; -60503;3;0;false;false;;;;;; -60506;1;0;false;false;63;95;191;;; -60507;4;0;false;false;;;;;; -60511;4;0;false;false;127;127;159;;; -60515;27;0;false;false;63;95;191;;; -60542;1;0;false;false;;;;;; -60543;1;0;false;false;127;127;159;;; -60544;1;0;false;false;;;;;; -60545;2;0;false;false;63;95;191;;; -60547;1;0;false;false;;;;;; -60548;3;0;false;false;63;95;191;;; -60551;1;0;false;false;;;;;; -60552;6;0;false;false;63;95;191;;; -60558;1;0;false;false;;;;;; -60559;4;0;false;false;63;95;191;;; -60563;1;0;false;false;;;;;; -60564;3;0;false;false;63;95;191;;; -60567;1;0;false;false;;;;;; -60568;6;0;false;false;63;95;191;;; -60574;1;0;false;false;;;;;; -60575;4;0;false;false;63;95;191;;; -60579;1;0;false;false;;;;;; -60580;7;0;false;false;63;95;191;;; -60587;1;0;false;false;;;;;; -60588;3;0;false;false;63;95;191;;; -60591;1;0;false;false;;;;;; -60592;8;0;false;false;63;95;191;;; -60600;5;0;false;false;127;127;159;;; -60605;3;0;false;false;;;;;; -60608;1;0;false;false;63;95;191;;; -60609;1;0;false;false;;;;;; -60610;5;0;false;false;127;127;159;;; -60615;3;0;false;false;;;;;; -60618;1;0;false;false;63;95;191;;; -60619;1;0;false;false;;;;;; -60620;11;1;false;false;127;159;191;;; -60631;24;0;false;false;63;95;191;;; -60655;1;0;false;false;;;;;; -60656;4;0;false;false;127;127;159;;; -60660;3;0;false;false;;;;;; -60663;1;0;false;false;63;95;191;;; -60664;4;0;false;false;;;;;; -60668;4;0;false;false;127;127;159;;; -60672;19;0;false;false;63;95;191;;; -60691;1;0;false;false;;;;;; -60692;4;0;false;false;63;95;191;;; -60696;1;0;false;false;;;;;; -60697;8;0;false;false;63;95;191;;; -60705;1;0;false;false;;;;;; -60706;2;0;false;false;63;95;191;;; -60708;1;0;false;false;;;;;; -60709;4;0;false;false;63;95;191;;; -60713;5;0;false;false;127;127;159;;; -60718;3;0;false;false;;;;;; -60721;1;0;false;false;63;95;191;;; -60722;1;0;false;false;;;;;; -60723;5;0;false;false;127;127;159;;; -60728;3;0;false;false;;;;;; -60731;1;0;false;false;63;95;191;;; -60732;1;0;false;false;;;;;; -60733;5;1;false;false;127;159;191;;; -60738;16;0;false;false;63;95;191;;; -60754;3;0;false;false;;;;;; -60757;1;0;false;false;63;95;191;;; -60758;1;0;false;false;;;;;; -60759;7;1;false;false;127;159;191;;; -60766;3;0;false;false;63;95;191;;; -60769;3;0;false;false;;;;;; -60772;2;0;false;false;63;95;191;;; -60774;2;0;false;false;;;;;; -60776;6;1;false;false;127;0;85;;; -60782;1;0;false;false;;;;;; -60783;4;1;false;false;127;0;85;;; -60787;1;0;false;false;;;;;; -60788;42;0;false;false;0;0;0;;; -60830;1;0;false;false;;;;;; -60831;9;0;false;false;0;0;0;;; -60840;1;0;false;false;;;;;; -60841;1;0;false;false;0;0;0;;; -60842;3;0;false;false;;;;;; -60845;14;0;false;false;0;0;0;;; -60859;3;0;false;false;;;;;; -60862;2;1;false;false;127;0;85;;; -60864;1;0;false;false;;;;;; -60865;9;0;false;false;0;0;0;;; -60874;1;0;false;false;;;;;; -60875;2;0;false;false;0;0;0;;; -60877;1;0;false;false;;;;;; -60878;4;1;false;false;127;0;85;;; -60882;1;0;false;false;0;0;0;;; -60883;1;0;false;false;;;;;; -60884;1;0;false;false;0;0;0;;; -60885;4;0;false;false;;;;;; -60889;35;0;false;false;0;0;0;;; -60924;3;0;false;false;;;;;; -60927;1;0;false;false;0;0;0;;; -60928;3;0;false;false;;;;;; -60931;18;0;false;false;0;0;0;;; -60949;1;0;false;false;;;;;; -60950;13;0;false;false;0;0;0;;; -60963;1;0;false;false;;;;;; -60964;1;0;false;false;0;0;0;;; -60965;1;0;false;false;;;;;; -60966;3;1;false;false;127;0;85;;; -60969;1;0;false;false;;;;;; -60970;29;0;false;false;0;0;0;;; -60999;3;0;false;false;;;;;; -61002;28;0;false;false;0;0;0;;; -61030;1;0;false;false;;;;;; -61031;15;0;false;false;0;0;0;;; -61046;3;0;false;false;;;;;; -61049;1;0;false;false;0;0;0;;; -61050;2;0;false;false;;;;;; -61052;3;0;false;false;63;95;191;;; -61055;3;0;false;false;;;;;; -61058;1;0;false;false;63;95;191;;; -61059;1;0;false;false;;;;;; -61060;4;0;false;false;63;95;191;;; -61064;1;0;false;false;;;;;; -61065;1;0;false;false;63;95;191;;; -61066;1;0;false;false;;;;;; -61067;4;0;false;false;63;95;191;;; -61071;1;0;false;false;;;;;; -61072;10;0;false;false;63;95;191;;; -61082;1;0;false;false;;;;;; -61083;9;0;false;false;63;95;191;;; -61092;1;0;false;false;;;;;; -61093;1;0;false;false;63;95;191;;; -61094;1;0;false;false;;;;;; -61095;17;0;false;false;63;95;191;;; -61112;1;0;false;false;;;;;; -61113;5;0;false;false;63;95;191;;; -61118;1;0;false;false;;;;;; -61119;2;0;false;false;63;95;191;;; -61121;1;0;false;false;;;;;; -61122;4;0;false;false;63;95;191;;; -61126;1;0;false;false;;;;;; -61127;2;0;false;false;63;95;191;;; -61129;1;0;false;false;;;;;; -61130;3;0;false;false;63;95;191;;; -61133;4;0;false;false;;;;;; -61137;1;0;false;false;63;95;191;;; -61138;1;0;false;false;;;;;; -61139;6;0;false;false;63;95;191;;; -61145;1;0;false;false;;;;;; -61146;2;0;false;false;63;95;191;;; -61148;1;0;false;false;;;;;; -61149;9;0;false;false;63;95;191;;; -61158;1;0;false;false;;;;;; -61159;3;0;false;false;63;95;191;;; -61162;1;0;false;false;;;;;; -61163;10;0;false;false;63;95;191;;; -61173;1;0;false;false;;;;;; -61174;5;0;false;false;63;95;191;;; -61179;1;0;false;false;;;;;; -61180;3;0;false;false;63;95;191;;; -61183;1;0;false;false;;;;;; -61184;1;0;false;false;63;95;191;;; -61185;1;0;false;false;;;;;; -61186;5;0;false;false;63;95;191;;; -61191;3;0;false;false;;;;;; -61194;1;0;false;false;63;95;191;;; -61195;1;0;false;false;;;;;; -61196;3;0;false;false;127;127;159;;; -61199;3;0;false;false;;;;;; -61202;1;0;false;false;63;95;191;;; -61203;3;0;false;false;;;;;; -61206;1;0;false;false;63;95;191;;; -61207;1;0;false;false;;;;;; -61208;7;1;false;false;127;159;191;;; -61215;8;0;false;false;63;95;191;;; -61223;1;0;false;false;;;;;; -61224;3;0;false;false;63;95;191;;; -61227;1;0;false;false;;;;;; -61228;8;0;false;false;63;95;191;;; -61236;3;0;false;false;;;;;; -61239;1;0;false;false;63;95;191;;; -61240;1;0;false;false;;;;;; -61241;11;1;false;false;127;159;191;;; -61252;12;0;false;false;63;95;191;;; -61264;1;0;false;false;;;;;; -61265;4;0;false;false;127;127;159;;; -61269;3;0;false;false;;;;;; -61272;1;0;false;false;63;95;191;;; -61273;4;0;false;false;;;;;; -61277;4;0;false;false;127;127;159;;; -61281;21;0;false;false;63;95;191;;; -61302;1;0;false;false;;;;;; -61303;1;0;false;false;127;127;159;;; -61304;1;0;false;false;;;;;; -61305;2;0;false;false;63;95;191;;; -61307;1;0;false;false;;;;;; -61308;3;0;false;false;63;95;191;;; -61311;1;0;false;false;;;;;; -61312;8;0;false;false;63;95;191;;; -61320;1;0;false;false;;;;;; -61321;3;0;false;false;63;95;191;;; -61324;1;0;false;false;;;;;; -61325;4;0;false;false;63;95;191;;; -61329;1;0;false;false;;;;;; -61330;8;0;false;false;63;95;191;;; -61338;5;0;false;false;127;127;159;;; -61343;3;0;false;false;;;;;; -61346;1;0;false;false;63;95;191;;; -61347;4;0;false;false;;;;;; -61351;4;0;false;false;127;127;159;;; -61355;27;0;false;false;63;95;191;;; -61382;1;0;false;false;;;;;; -61383;1;0;false;false;127;127;159;;; -61384;1;0;false;false;;;;;; -61385;2;0;false;false;63;95;191;;; -61387;1;0;false;false;;;;;; -61388;3;0;false;false;63;95;191;;; -61391;1;0;false;false;;;;;; -61392;6;0;false;false;63;95;191;;; -61398;1;0;false;false;;;;;; -61399;4;0;false;false;63;95;191;;; -61403;1;0;false;false;;;;;; -61404;3;0;false;false;63;95;191;;; -61407;1;0;false;false;;;;;; -61408;6;0;false;false;63;95;191;;; -61414;1;0;false;false;;;;;; -61415;4;0;false;false;63;95;191;;; -61419;1;0;false;false;;;;;; -61420;7;0;false;false;63;95;191;;; -61427;1;0;false;false;;;;;; -61428;3;0;false;false;63;95;191;;; -61431;1;0;false;false;;;;;; -61432;8;0;false;false;63;95;191;;; -61440;5;0;false;false;127;127;159;;; -61445;3;0;false;false;;;;;; -61448;1;0;false;false;63;95;191;;; -61449;1;0;false;false;;;;;; -61450;5;0;false;false;127;127;159;;; -61455;3;0;false;false;;;;;; -61458;1;0;false;false;63;95;191;;; -61459;1;0;false;false;;;;;; -61460;11;1;false;false;127;159;191;;; -61471;24;0;false;false;63;95;191;;; -61495;1;0;false;false;;;;;; -61496;4;0;false;false;127;127;159;;; -61500;3;0;false;false;;;;;; -61503;1;0;false;false;63;95;191;;; -61504;4;0;false;false;;;;;; -61508;4;0;false;false;127;127;159;;; -61512;19;0;false;false;63;95;191;;; -61531;1;0;false;false;;;;;; -61532;4;0;false;false;63;95;191;;; -61536;1;0;false;false;;;;;; -61537;8;0;false;false;63;95;191;;; -61545;1;0;false;false;;;;;; -61546;2;0;false;false;63;95;191;;; -61548;1;0;false;false;;;;;; -61549;4;0;false;false;63;95;191;;; -61553;5;0;false;false;127;127;159;;; -61558;3;0;false;false;;;;;; -61561;1;0;false;false;63;95;191;;; -61562;1;0;false;false;;;;;; -61563;5;0;false;false;127;127;159;;; -61568;3;0;false;false;;;;;; -61571;2;0;false;false;63;95;191;;; -61573;2;0;false;false;;;;;; -61575;6;1;false;false;127;0;85;;; -61581;1;0;false;false;;;;;; -61582;4;1;false;false;127;0;85;;; -61586;1;0;false;false;;;;;; -61587;48;0;false;false;0;0;0;;; -61635;1;0;false;false;;;;;; -61636;9;0;false;false;0;0;0;;; -61645;1;0;false;false;;;;;; -61646;1;0;false;false;0;0;0;;; -61647;3;0;false;false;;;;;; -61650;14;0;false;false;0;0;0;;; -61664;3;0;false;false;;;;;; -61667;2;1;false;false;127;0;85;;; -61669;1;0;false;false;;;;;; -61670;9;0;false;false;0;0;0;;; -61679;1;0;false;false;;;;;; -61680;2;0;false;false;0;0;0;;; -61682;1;0;false;false;;;;;; -61683;4;1;false;false;127;0;85;;; -61687;1;0;false;false;0;0;0;;; -61688;1;0;false;false;;;;;; -61689;35;0;false;false;0;0;0;;; -61724;3;0;false;false;;;;;; -61727;2;1;false;false;127;0;85;;; -61729;1;0;false;false;;;;;; -61730;21;0;false;false;0;0;0;;; -61751;1;0;false;false;;;;;; -61752;1;0;false;false;0;0;0;;; -61753;4;0;false;false;;;;;; -61757;48;0;false;false;0;0;0;;; -61805;4;0;false;false;;;;;; -61809;38;0;false;false;0;0;0;;; -61847;1;0;false;false;;;;;; -61848;30;0;false;false;0;0;0;;; -61878;1;0;false;false;;;;;; -61879;4;1;false;false;127;0;85;;; -61883;2;0;false;false;0;0;0;;; -61885;4;0;false;false;;;;;; -61889;18;0;false;false;0;0;0;;; -61907;1;0;false;false;;;;;; -61908;1;0;false;false;0;0;0;;; -61909;1;0;false;false;;;;;; -61910;4;1;false;false;127;0;85;;; -61914;1;0;false;false;0;0;0;;; -61915;3;0;false;false;;;;;; -61918;1;0;false;false;0;0;0;;; -61919;4;0;false;false;;;;;; -61923;18;0;false;false;0;0;0;;; -61941;1;0;false;false;;;;;; -61942;13;0;false;false;0;0;0;;; -61955;1;0;false;false;;;;;; -61956;1;0;false;false;0;0;0;;; -61957;1;0;false;false;;;;;; -61958;3;1;false;false;127;0;85;;; -61961;1;0;false;false;;;;;; -61962;29;0;false;false;0;0;0;;; -61991;3;0;false;false;;;;;; -61994;30;0;false;false;0;0;0;;; -62024;1;0;false;false;;;;;; -62025;15;0;false;false;0;0;0;;; -62040;3;0;false;false;;;;;; -62043;1;0;false;false;0;0;0;;; -62044;2;0;false;false;;;;;; -62046;3;0;false;false;63;95;191;;; -62049;3;0;false;false;;;;;; -62052;1;0;false;false;63;95;191;;; -62053;1;0;false;false;;;;;; -62054;4;0;false;false;63;95;191;;; -62058;1;0;false;false;;;;;; -62059;1;0;false;false;63;95;191;;; -62060;1;0;false;false;;;;;; -62061;4;0;false;false;63;95;191;;; -62065;1;0;false;false;;;;;; -62066;5;0;false;false;63;95;191;;; -62071;1;0;false;false;;;;;; -62072;9;0;false;false;63;95;191;;; -62081;1;0;false;false;;;;;; -62082;1;0;false;false;63;95;191;;; -62083;1;0;false;false;;;;;; -62084;12;0;false;false;63;95;191;;; -62096;1;0;false;false;;;;;; -62097;5;0;false;false;63;95;191;;; -62102;1;0;false;false;;;;;; -62103;2;0;false;false;63;95;191;;; -62105;1;0;false;false;;;;;; -62106;4;0;false;false;63;95;191;;; -62110;1;0;false;false;;;;;; -62111;2;0;false;false;63;95;191;;; -62113;1;0;false;false;;;;;; -62114;3;0;false;false;63;95;191;;; -62117;1;0;false;false;;;;;; -62118;6;0;false;false;63;95;191;;; -62124;1;0;false;false;;;;;; -62125;2;0;false;false;63;95;191;;; -62127;4;0;false;false;;;;;; -62131;1;0;false;false;63;95;191;;; -62132;1;0;false;false;;;;;; -62133;9;0;false;false;63;95;191;;; -62142;1;0;false;false;;;;;; -62143;3;0;false;false;63;95;191;;; -62146;1;0;false;false;;;;;; -62147;6;0;false;false;63;95;191;;; -62153;1;0;false;false;;;;;; -62154;3;0;false;false;63;95;191;;; -62157;1;0;false;false;;;;;; -62158;1;0;false;false;63;95;191;;; -62159;1;0;false;false;;;;;; -62160;5;0;false;false;63;95;191;;; -62165;3;0;false;false;;;;;; -62168;1;0;false;false;63;95;191;;; -62169;1;0;false;false;;;;;; -62170;3;0;false;false;127;127;159;;; -62173;3;0;false;false;;;;;; -62176;1;0;false;false;63;95;191;;; -62177;3;0;false;false;;;;;; -62180;1;0;false;false;63;95;191;;; -62181;1;0;false;false;;;;;; -62182;7;1;false;false;127;159;191;;; -62189;8;0;false;false;63;95;191;;; -62197;1;0;false;false;;;;;; -62198;3;0;false;false;63;95;191;;; -62201;1;0;false;false;;;;;; -62202;8;0;false;false;63;95;191;;; -62210;3;0;false;false;;;;;; -62213;1;0;false;false;63;95;191;;; -62214;1;0;false;false;;;;;; -62215;11;1;false;false;127;159;191;;; -62226;12;0;false;false;63;95;191;;; -62238;1;0;false;false;;;;;; -62239;4;0;false;false;127;127;159;;; -62243;3;0;false;false;;;;;; -62246;1;0;false;false;63;95;191;;; -62247;4;0;false;false;;;;;; -62251;4;0;false;false;127;127;159;;; -62255;21;0;false;false;63;95;191;;; -62276;1;0;false;false;;;;;; -62277;1;0;false;false;127;127;159;;; -62278;1;0;false;false;;;;;; -62279;2;0;false;false;63;95;191;;; -62281;1;0;false;false;;;;;; -62282;3;0;false;false;63;95;191;;; -62285;1;0;false;false;;;;;; -62286;8;0;false;false;63;95;191;;; -62294;1;0;false;false;;;;;; -62295;3;0;false;false;63;95;191;;; -62298;1;0;false;false;;;;;; -62299;4;0;false;false;63;95;191;;; -62303;1;0;false;false;;;;;; -62304;8;0;false;false;63;95;191;;; -62312;5;0;false;false;127;127;159;;; -62317;3;0;false;false;;;;;; -62320;1;0;false;false;63;95;191;;; -62321;4;0;false;false;;;;;; -62325;4;0;false;false;127;127;159;;; -62329;27;0;false;false;63;95;191;;; -62356;1;0;false;false;;;;;; -62357;1;0;false;false;127;127;159;;; -62358;1;0;false;false;;;;;; -62359;2;0;false;false;63;95;191;;; -62361;1;0;false;false;;;;;; -62362;3;0;false;false;63;95;191;;; -62365;1;0;false;false;;;;;; -62366;6;0;false;false;63;95;191;;; -62372;1;0;false;false;;;;;; -62373;4;0;false;false;63;95;191;;; -62377;1;0;false;false;;;;;; -62378;3;0;false;false;63;95;191;;; -62381;1;0;false;false;;;;;; -62382;6;0;false;false;63;95;191;;; -62388;1;0;false;false;;;;;; -62389;4;0;false;false;63;95;191;;; -62393;1;0;false;false;;;;;; -62394;7;0;false;false;63;95;191;;; -62401;1;0;false;false;;;;;; -62402;3;0;false;false;63;95;191;;; -62405;1;0;false;false;;;;;; -62406;8;0;false;false;63;95;191;;; -62414;5;0;false;false;127;127;159;;; -62419;3;0;false;false;;;;;; -62422;1;0;false;false;63;95;191;;; -62423;1;0;false;false;;;;;; -62424;5;0;false;false;127;127;159;;; -62429;3;0;false;false;;;;;; -62432;1;0;false;false;63;95;191;;; -62433;1;0;false;false;;;;;; -62434;11;1;false;false;127;159;191;;; -62445;24;0;false;false;63;95;191;;; -62469;1;0;false;false;;;;;; -62470;4;0;false;false;127;127;159;;; -62474;3;0;false;false;;;;;; -62477;1;0;false;false;63;95;191;;; -62478;4;0;false;false;;;;;; -62482;4;0;false;false;127;127;159;;; -62486;19;0;false;false;63;95;191;;; -62505;1;0;false;false;;;;;; -62506;4;0;false;false;63;95;191;;; -62510;1;0;false;false;;;;;; -62511;8;0;false;false;63;95;191;;; -62519;1;0;false;false;;;;;; -62520;2;0;false;false;63;95;191;;; -62522;1;0;false;false;;;;;; -62523;4;0;false;false;63;95;191;;; -62527;5;0;false;false;127;127;159;;; -62532;3;0;false;false;;;;;; -62535;1;0;false;false;63;95;191;;; -62536;1;0;false;false;;;;;; -62537;5;0;false;false;127;127;159;;; -62542;3;0;false;false;;;;;; -62545;2;0;false;false;63;95;191;;; -62547;2;0;false;false;;;;;; -62549;6;1;false;false;127;0;85;;; -62555;1;0;false;false;;;;;; -62556;4;1;false;false;127;0;85;;; -62560;1;0;false;false;;;;;; -62561;38;0;false;false;0;0;0;;; -62599;1;0;false;false;;;;;; -62600;9;0;false;false;0;0;0;;; -62609;1;0;false;false;;;;;; -62610;1;0;false;false;0;0;0;;; -62611;3;0;false;false;;;;;; -62614;14;0;false;false;0;0;0;;; -62628;3;0;false;false;;;;;; -62631;2;1;false;false;127;0;85;;; -62633;1;0;false;false;;;;;; -62634;9;0;false;false;0;0;0;;; -62643;1;0;false;false;;;;;; -62644;2;0;false;false;0;0;0;;; -62646;1;0;false;false;;;;;; -62647;4;1;false;false;127;0;85;;; -62651;1;0;false;false;0;0;0;;; -62652;1;0;false;false;;;;;; -62653;1;0;false;false;0;0;0;;; -62654;4;0;false;false;;;;;; -62658;35;0;false;false;0;0;0;;; -62693;3;0;false;false;;;;;; -62696;1;0;false;false;0;0;0;;; -62697;3;0;false;false;;;;;; -62700;2;1;false;false;127;0;85;;; -62702;1;0;false;false;;;;;; -62703;16;0;false;false;0;0;0;;; -62719;1;0;false;false;;;;;; -62720;1;0;false;false;0;0;0;;; -62721;4;0;false;false;;;;;; -62725;43;0;false;false;0;0;0;;; -62768;4;0;false;false;;;;;; -62772;32;0;false;false;0;0;0;;; -62804;4;1;false;false;127;0;85;;; -62808;2;0;false;false;0;0;0;;; -62810;4;0;false;false;;;;;; -62814;13;0;false;false;0;0;0;;; -62827;1;0;false;false;;;;;; -62828;1;0;false;false;0;0;0;;; -62829;1;0;false;false;;;;;; -62830;4;1;false;false;127;0;85;;; -62834;1;0;false;false;0;0;0;;; -62835;3;0;false;false;;;;;; -62838;1;0;false;false;0;0;0;;; -62839;3;0;false;false;;;;;; -62842;18;0;false;false;0;0;0;;; -62860;1;0;false;false;;;;;; -62861;13;0;false;false;0;0;0;;; -62874;1;0;false;false;;;;;; -62875;1;0;false;false;0;0;0;;; -62876;1;0;false;false;;;;;; -62877;3;1;false;false;127;0;85;;; -62880;1;0;false;false;;;;;; -62881;29;0;false;false;0;0;0;;; -62910;3;0;false;false;;;;;; -62913;25;0;false;false;0;0;0;;; -62938;1;0;false;false;;;;;; -62939;15;0;false;false;0;0;0;;; -62954;3;0;false;false;;;;;; -62957;1;0;false;false;0;0;0;;; -62958;2;0;false;false;;;;;; -62960;3;0;false;false;63;95;191;;; -62963;5;0;false;false;;;;;; -62968;1;0;false;false;63;95;191;;; -62969;1;0;false;false;;;;;; -62970;4;0;false;false;63;95;191;;; -62974;1;0;false;false;;;;;; -62975;1;0;false;false;63;95;191;;; -62976;1;0;false;false;;;;;; -62977;6;0;false;false;63;95;191;;; -62983;1;0;false;false;;;;;; -62984;9;0;false;false;63;95;191;;; -62993;1;0;false;false;;;;;; -62994;1;0;false;false;63;95;191;;; -62995;1;0;false;false;;;;;; -62996;6;0;false;false;63;95;191;;; -63002;1;0;false;false;;;;;; -63003;5;0;false;false;63;95;191;;; -63008;1;0;false;false;;;;;; -63009;2;0;false;false;63;95;191;;; -63011;1;0;false;false;;;;;; -63012;4;0;false;false;63;95;191;;; -63016;1;0;false;false;;;;;; -63017;2;0;false;false;63;95;191;;; -63019;1;0;false;false;;;;;; -63020;3;0;false;false;63;95;191;;; -63023;1;0;false;false;;;;;; -63024;6;0;false;false;63;95;191;;; -63030;1;0;false;false;;;;;; -63031;4;0;false;false;63;95;191;;; -63035;1;0;false;false;;;;;; -63036;3;0;false;false;63;95;191;;; -63039;1;0;false;false;;;;;; -63040;6;0;false;false;63;95;191;;; -63046;1;0;false;false;;;;;; -63047;4;0;false;false;63;95;191;;; -63051;4;0;false;false;;;;;; -63055;1;0;false;false;63;95;191;;; -63056;1;0;false;false;;;;;; -63057;3;0;false;false;63;95;191;;; -63060;1;0;false;false;;;;;; -63061;8;0;false;false;63;95;191;;; -63069;3;0;false;false;;;;;; -63072;1;0;false;false;63;95;191;;; -63073;1;0;false;false;;;;;; -63074;3;0;false;false;127;127;159;;; -63077;3;0;false;false;;;;;; -63080;1;0;false;false;63;95;191;;; -63081;3;0;false;false;;;;;; -63084;1;0;false;false;63;95;191;;; -63085;1;0;false;false;;;;;; -63086;7;1;false;false;127;159;191;;; -63093;14;0;false;false;63;95;191;;; -63107;1;0;false;false;;;;;; -63108;3;0;false;false;63;95;191;;; -63111;1;0;false;false;;;;;; -63112;8;0;false;false;63;95;191;;; -63120;3;0;false;false;;;;;; -63123;1;0;false;false;63;95;191;;; -63124;1;0;false;false;;;;;; -63125;11;1;false;false;127;159;191;;; -63136;12;0;false;false;63;95;191;;; -63148;1;0;false;false;;;;;; -63149;4;0;false;false;127;127;159;;; -63153;3;0;false;false;;;;;; -63156;1;0;false;false;63;95;191;;; -63157;4;0;false;false;;;;;; -63161;4;0;false;false;127;127;159;;; -63165;21;0;false;false;63;95;191;;; -63186;1;0;false;false;;;;;; -63187;1;0;false;false;127;127;159;;; -63188;1;0;false;false;;;;;; -63189;2;0;false;false;63;95;191;;; -63191;1;0;false;false;;;;;; -63192;3;0;false;false;63;95;191;;; -63195;1;0;false;false;;;;;; -63196;8;0;false;false;63;95;191;;; -63204;1;0;false;false;;;;;; -63205;3;0;false;false;63;95;191;;; -63208;1;0;false;false;;;;;; -63209;4;0;false;false;63;95;191;;; -63213;1;0;false;false;;;;;; -63214;8;0;false;false;63;95;191;;; -63222;5;0;false;false;127;127;159;;; -63227;3;0;false;false;;;;;; -63230;1;0;false;false;63;95;191;;; -63231;4;0;false;false;;;;;; -63235;4;0;false;false;127;127;159;;; -63239;27;0;false;false;63;95;191;;; -63266;1;0;false;false;;;;;; -63267;1;0;false;false;127;127;159;;; -63268;1;0;false;false;;;;;; -63269;2;0;false;false;63;95;191;;; -63271;1;0;false;false;;;;;; -63272;3;0;false;false;63;95;191;;; -63275;1;0;false;false;;;;;; -63276;6;0;false;false;63;95;191;;; -63282;1;0;false;false;;;;;; -63283;4;0;false;false;63;95;191;;; -63287;1;0;false;false;;;;;; -63288;3;0;false;false;63;95;191;;; -63291;1;0;false;false;;;;;; -63292;6;0;false;false;63;95;191;;; -63298;1;0;false;false;;;;;; -63299;4;0;false;false;63;95;191;;; -63303;1;0;false;false;;;;;; -63304;7;0;false;false;63;95;191;;; -63311;1;0;false;false;;;;;; -63312;3;0;false;false;63;95;191;;; -63315;1;0;false;false;;;;;; -63316;8;0;false;false;63;95;191;;; -63324;5;0;false;false;127;127;159;;; -63329;3;0;false;false;;;;;; -63332;1;0;false;false;63;95;191;;; -63333;1;0;false;false;;;;;; -63334;5;0;false;false;127;127;159;;; -63339;3;0;false;false;;;;;; -63342;1;0;false;false;63;95;191;;; -63343;1;0;false;false;;;;;; -63344;11;1;false;false;127;159;191;;; -63355;24;0;false;false;63;95;191;;; -63379;1;0;false;false;;;;;; -63380;4;0;false;false;127;127;159;;; -63384;3;0;false;false;;;;;; -63387;1;0;false;false;63;95;191;;; -63388;4;0;false;false;;;;;; -63392;4;0;false;false;127;127;159;;; -63396;19;0;false;false;63;95;191;;; -63415;1;0;false;false;;;;;; -63416;4;0;false;false;63;95;191;;; -63420;1;0;false;false;;;;;; -63421;8;0;false;false;63;95;191;;; -63429;1;0;false;false;;;;;; -63430;2;0;false;false;63;95;191;;; -63432;1;0;false;false;;;;;; -63433;4;0;false;false;63;95;191;;; -63437;5;0;false;false;127;127;159;;; -63442;3;0;false;false;;;;;; -63445;1;0;false;false;63;95;191;;; -63446;1;0;false;false;;;;;; -63447;5;0;false;false;127;127;159;;; -63452;3;0;false;false;;;;;; -63455;2;0;false;false;63;95;191;;; -63457;2;0;false;false;;;;;; -63459;6;1;false;false;127;0;85;;; -63465;1;0;false;false;;;;;; -63466;4;1;false;false;127;0;85;;; -63470;1;0;false;false;;;;;; -63471;32;0;false;false;0;0;0;;; -63503;1;0;false;false;;;;;; -63504;15;0;false;false;0;0;0;;; -63519;1;0;false;false;;;;;; -63520;1;0;false;false;0;0;0;;; -63521;3;0;false;false;;;;;; -63524;14;0;false;false;0;0;0;;; -63538;3;0;false;false;;;;;; -63541;2;1;false;false;127;0;85;;; -63543;1;0;false;false;;;;;; -63544;15;0;false;false;0;0;0;;; -63559;1;0;false;false;;;;;; -63560;2;0;false;false;0;0;0;;; -63562;1;0;false;false;;;;;; -63563;4;1;false;false;127;0;85;;; -63567;1;0;false;false;0;0;0;;; -63568;1;0;false;false;;;;;; -63569;1;0;false;false;0;0;0;;; -63570;4;0;false;false;;;;;; -63574;35;0;false;false;0;0;0;;; -63609;3;0;false;false;;;;;; -63612;1;0;false;false;0;0;0;;; -63613;3;0;false;false;;;;;; -63616;13;0;false;false;0;0;0;;; -63629;1;0;false;false;;;;;; -63630;13;0;false;false;0;0;0;;; -63643;1;0;false;false;;;;;; -63644;1;0;false;false;0;0;0;;; -63645;1;0;false;false;;;;;; -63646;3;1;false;false;127;0;85;;; -63649;1;0;false;false;;;;;; -63650;30;0;false;false;0;0;0;;; -63680;3;0;false;false;;;;;; -63683;23;0;false;false;0;0;0;;; -63706;1;0;false;false;;;;;; -63707;15;0;false;false;0;0;0;;; -63722;2;0;false;false;;;;;; -63724;1;0;false;false;0;0;0;;; -63725;2;0;false;false;;;;;; -63727;3;0;false;false;63;95;191;;; -63730;5;0;false;false;;;;;; -63735;1;0;false;false;63;95;191;;; -63736;1;0;false;false;;;;;; -63737;4;0;false;false;63;95;191;;; -63741;1;0;false;false;;;;;; -63742;1;0;false;false;63;95;191;;; -63743;1;0;false;false;;;;;; -63744;9;0;false;false;63;95;191;;; -63753;1;0;false;false;;;;;; -63754;9;0;false;false;63;95;191;;; -63763;1;0;false;false;;;;;; -63764;1;0;false;false;63;95;191;;; -63765;1;0;false;false;;;;;; -63766;9;0;false;false;63;95;191;;; -63775;1;0;false;false;;;;;; -63776;5;0;false;false;63;95;191;;; -63781;1;0;false;false;;;;;; -63782;2;0;false;false;63;95;191;;; -63784;1;0;false;false;;;;;; -63785;4;0;false;false;63;95;191;;; -63789;1;0;false;false;;;;;; -63790;2;0;false;false;63;95;191;;; -63792;1;0;false;false;;;;;; -63793;3;0;false;false;63;95;191;;; -63796;1;0;false;false;;;;;; -63797;6;0;false;false;63;95;191;;; -63803;1;0;false;false;;;;;; -63804;4;0;false;false;63;95;191;;; -63808;1;0;false;false;;;;;; -63809;3;0;false;false;63;95;191;;; -63812;4;0;false;false;;;;;; -63816;1;0;false;false;63;95;191;;; -63817;1;0;false;false;;;;;; -63818;9;0;false;false;63;95;191;;; -63827;1;0;false;false;;;;;; -63828;3;0;false;false;63;95;191;;; -63831;1;0;false;false;;;;;; -63832;8;0;false;false;63;95;191;;; -63840;3;0;false;false;;;;;; -63843;1;0;false;false;63;95;191;;; -63844;1;0;false;false;;;;;; -63845;3;0;false;false;127;127;159;;; -63848;3;0;false;false;;;;;; -63851;1;0;false;false;63;95;191;;; -63852;1;0;false;false;;;;;; -63853;4;0;false;false;63;95;191;;; -63857;1;0;false;false;;;;;; -63858;6;0;false;false;127;127;159;;; -63864;14;0;false;false;63;95;191;;; -63878;7;0;false;false;127;127;159;;; -63885;1;0;false;false;;;;;; -63886;2;0;false;false;63;95;191;;; -63888;1;0;false;false;;;;;; -63889;7;0;false;false;63;95;191;;; -63896;1;0;false;false;;;;;; -63897;3;0;false;false;63;95;191;;; -63900;1;0;false;false;;;;;; -63901;5;0;false;false;63;95;191;;; -63906;1;0;false;false;;;;;; -63907;1;0;false;false;63;95;191;;; -63908;1;0;false;false;;;;;; -63909;3;0;false;false;63;95;191;;; -63912;1;0;false;false;;;;;; -63913;1;0;false;false;63;95;191;;; -63914;1;0;false;false;;;;;; -63915;6;0;false;false;63;95;191;;; -63921;1;0;false;false;;;;;; -63922;7;0;false;false;63;95;191;;; -63929;3;0;false;false;;;;;; -63932;1;0;false;false;63;95;191;;; -63933;1;0;false;false;;;;;; -63934;3;0;false;false;63;95;191;;; -63937;1;0;false;false;;;;;; -63938;5;0;false;false;63;95;191;;; -63943;1;0;false;false;;;;;; -63944;3;0;false;false;63;95;191;;; -63947;1;0;false;false;;;;;; -63948;3;0;false;false;63;95;191;;; -63951;1;0;false;false;;;;;; -63952;5;0;false;false;63;95;191;;; -63957;1;0;false;false;;;;;; -63958;7;0;false;false;63;95;191;;; -63965;1;0;false;false;;;;;; -63966;2;0;false;false;63;95;191;;; -63968;1;0;false;false;;;;;; -63969;3;0;false;false;63;95;191;;; -63972;1;0;false;false;;;;;; -63973;10;0;false;false;63;95;191;;; -63983;3;0;false;false;;;;;; -63986;1;0;false;false;63;95;191;;; -63987;1;0;false;false;;;;;; -63988;6;0;false;false;127;127;159;;; -63994;21;0;false;false;63;95;191;;; -64015;7;0;false;false;127;127;159;;; -64022;1;0;false;false;;;;;; -64023;2;0;false;false;63;95;191;;; -64025;1;0;false;false;;;;;; -64026;3;0;false;false;63;95;191;;; -64029;1;0;false;false;;;;;; -64030;6;0;false;false;63;95;191;;; -64036;1;0;false;false;;;;;; -64037;3;0;false;false;63;95;191;;; -64040;1;0;false;false;;;;;; -64041;12;0;false;false;63;95;191;;; -64053;3;0;false;false;;;;;; -64056;1;0;false;false;63;95;191;;; -64057;1;0;false;false;;;;;; -64058;4;0;false;false;127;127;159;;; -64062;3;0;false;false;;;;;; -64065;1;0;false;false;63;95;191;;; -64066;4;0;false;false;;;;;; -64070;1;0;false;false;63;95;191;;; -64071;1;0;false;false;;;;;; -64072;7;1;false;false;127;159;191;;; -64079;8;0;false;false;63;95;191;;; -64087;1;0;false;false;;;;;; -64088;3;0;false;false;63;95;191;;; -64091;1;0;false;false;;;;;; -64092;8;0;false;false;63;95;191;;; -64100;3;0;false;false;;;;;; -64103;1;0;false;false;63;95;191;;; -64104;1;0;false;false;;;;;; -64105;11;1;false;false;127;159;191;;; -64116;12;0;false;false;63;95;191;;; -64128;1;0;false;false;;;;;; -64129;4;0;false;false;127;127;159;;; -64133;3;0;false;false;;;;;; -64136;1;0;false;false;63;95;191;;; -64137;4;0;false;false;;;;;; -64141;4;0;false;false;127;127;159;;; -64145;21;0;false;false;63;95;191;;; -64166;1;0;false;false;;;;;; -64167;1;0;false;false;127;127;159;;; -64168;1;0;false;false;;;;;; -64169;2;0;false;false;63;95;191;;; -64171;1;0;false;false;;;;;; -64172;3;0;false;false;63;95;191;;; -64175;1;0;false;false;;;;;; -64176;8;0;false;false;63;95;191;;; -64184;1;0;false;false;;;;;; -64185;3;0;false;false;63;95;191;;; -64188;1;0;false;false;;;;;; -64189;4;0;false;false;63;95;191;;; -64193;1;0;false;false;;;;;; -64194;8;0;false;false;63;95;191;;; -64202;5;0;false;false;127;127;159;;; -64207;3;0;false;false;;;;;; -64210;1;0;false;false;63;95;191;;; -64211;4;0;false;false;;;;;; -64215;4;0;false;false;127;127;159;;; -64219;27;0;false;false;63;95;191;;; -64246;1;0;false;false;;;;;; -64247;1;0;false;false;127;127;159;;; -64248;1;0;false;false;;;;;; -64249;2;0;false;false;63;95;191;;; -64251;1;0;false;false;;;;;; -64252;3;0;false;false;63;95;191;;; -64255;1;0;false;false;;;;;; -64256;6;0;false;false;63;95;191;;; -64262;1;0;false;false;;;;;; -64263;4;0;false;false;63;95;191;;; -64267;1;0;false;false;;;;;; -64268;3;0;false;false;63;95;191;;; -64271;1;0;false;false;;;;;; -64272;6;0;false;false;63;95;191;;; -64278;1;0;false;false;;;;;; -64279;4;0;false;false;63;95;191;;; -64283;1;0;false;false;;;;;; -64284;7;0;false;false;63;95;191;;; -64291;1;0;false;false;;;;;; -64292;3;0;false;false;63;95;191;;; -64295;1;0;false;false;;;;;; -64296;8;0;false;false;63;95;191;;; -64304;5;0;false;false;127;127;159;;; -64309;3;0;false;false;;;;;; -64312;1;0;false;false;63;95;191;;; -64313;1;0;false;false;;;;;; -64314;5;0;false;false;127;127;159;;; -64319;3;0;false;false;;;;;; -64322;1;0;false;false;63;95;191;;; -64323;1;0;false;false;;;;;; -64324;11;1;false;false;127;159;191;;; -64335;24;0;false;false;63;95;191;;; -64359;1;0;false;false;;;;;; -64360;4;0;false;false;127;127;159;;; -64364;3;0;false;false;;;;;; -64367;1;0;false;false;63;95;191;;; -64368;4;0;false;false;;;;;; -64372;4;0;false;false;127;127;159;;; -64376;19;0;false;false;63;95;191;;; -64395;1;0;false;false;;;;;; -64396;4;0;false;false;63;95;191;;; -64400;1;0;false;false;;;;;; -64401;8;0;false;false;63;95;191;;; -64409;1;0;false;false;;;;;; -64410;2;0;false;false;63;95;191;;; -64412;1;0;false;false;;;;;; -64413;4;0;false;false;63;95;191;;; -64417;5;0;false;false;127;127;159;;; -64422;3;0;false;false;;;;;; -64425;1;0;false;false;63;95;191;;; -64426;1;0;false;false;;;;;; -64427;5;0;false;false;127;127;159;;; -64432;3;0;false;false;;;;;; -64435;2;0;false;false;63;95;191;;; -64437;2;0;false;false;;;;;; -64439;6;1;false;false;127;0;85;;; -64445;1;0;false;false;;;;;; -64446;4;1;false;false;127;0;85;;; -64450;1;0;false;false;;;;;; -64451;38;0;false;false;0;0;0;;; -64489;1;0;false;false;;;;;; -64490;9;0;false;false;0;0;0;;; -64499;1;0;false;false;;;;;; -64500;1;0;false;false;0;0;0;;; -64501;3;0;false;false;;;;;; -64504;14;0;false;false;0;0;0;;; -64518;3;0;false;false;;;;;; -64521;2;1;false;false;127;0;85;;; -64523;1;0;false;false;;;;;; -64524;9;0;false;false;0;0;0;;; -64533;1;0;false;false;;;;;; -64534;2;0;false;false;0;0;0;;; -64536;1;0;false;false;;;;;; -64537;4;1;false;false;127;0;85;;; -64541;1;0;false;false;0;0;0;;; -64542;1;0;false;false;;;;;; -64543;1;0;false;false;0;0;0;;; -64544;4;0;false;false;;;;;; -64548;35;0;false;false;0;0;0;;; -64583;3;0;false;false;;;;;; -64586;1;0;false;false;0;0;0;;; -64587;3;0;false;false;;;;;; -64590;13;0;false;false;0;0;0;;; -64603;1;0;false;false;;;;;; -64604;13;0;false;false;0;0;0;;; -64617;1;0;false;false;;;;;; -64618;1;0;false;false;0;0;0;;; -64619;1;0;false;false;;;;;; -64620;3;1;false;false;127;0;85;;; -64623;1;0;false;false;;;;;; -64624;24;0;false;false;0;0;0;;; -64648;3;0;false;false;;;;;; -64651;26;0;false;false;0;0;0;;; -64677;1;0;false;false;;;;;; -64678;15;0;false;false;0;0;0;;; -64693;3;0;false;false;;;;;; -64696;1;0;false;false;0;0;0;;; -64697;2;0;false;false;;;;;; -64699;3;0;false;false;63;95;191;;; -64702;5;0;false;false;;;;;; -64707;1;0;false;false;63;95;191;;; -64708;1;0;false;false;;;;;; -64709;4;0;false;false;63;95;191;;; -64713;1;0;false;false;;;;;; -64714;1;0;false;false;63;95;191;;; -64715;1;0;false;false;;;;;; -64716;6;0;false;false;63;95;191;;; -64722;1;0;false;false;;;;;; -64723;3;0;false;false;63;95;191;;; -64726;1;0;false;false;;;;;; -64727;9;0;false;false;63;95;191;;; -64736;1;0;false;false;;;;;; -64737;1;0;false;false;63;95;191;;; -64738;1;0;false;false;;;;;; -64739;9;0;false;false;63;95;191;;; -64748;1;0;false;false;;;;;; -64749;5;0;false;false;63;95;191;;; -64754;1;0;false;false;;;;;; -64755;2;0;false;false;63;95;191;;; -64757;1;0;false;false;;;;;; -64758;4;0;false;false;63;95;191;;; -64762;1;0;false;false;;;;;; -64763;2;0;false;false;63;95;191;;; -64765;1;0;false;false;;;;;; -64766;3;0;false;false;63;95;191;;; -64769;1;0;false;false;;;;;; -64770;6;0;false;false;63;95;191;;; -64776;1;0;false;false;;;;;; -64777;4;0;false;false;63;95;191;;; -64781;1;0;false;false;;;;;; -64782;1;0;false;false;63;95;191;;; -64783;1;0;false;false;;;;;; -64784;3;0;false;false;63;95;191;;; -64787;4;0;false;false;;;;;; -64791;1;0;false;false;63;95;191;;; -64792;1;0;false;false;;;;;; -64793;2;0;false;false;63;95;191;;; -64795;1;0;false;false;;;;;; -64796;8;0;false;false;63;95;191;;; -64804;1;0;false;false;;;;;; -64805;3;0;false;false;63;95;191;;; -64808;1;0;false;false;;;;;; -64809;6;0;false;false;63;95;191;;; -64815;1;0;false;false;;;;;; -64816;7;0;false;false;63;95;191;;; -64823;1;0;false;false;;;;;; -64824;3;0;false;false;63;95;191;;; -64827;1;0;false;false;;;;;; -64828;3;0;false;false;63;95;191;;; -64831;1;0;false;false;;;;;; -64832;5;0;false;false;63;95;191;;; -64837;1;0;false;false;;;;;; -64838;2;0;false;false;63;95;191;;; -64840;1;0;false;false;;;;;; -64841;3;0;false;false;63;95;191;;; -64844;1;0;false;false;;;;;; -64845;8;0;false;false;63;95;191;;; -64853;1;0;false;false;;;;;; -64854;4;0;false;false;63;95;191;;; -64858;1;0;false;false;;;;;; -64859;3;0;false;false;63;95;191;;; -64862;1;0;false;false;;;;;; -64863;4;0;false;false;63;95;191;;; -64867;1;0;false;false;;;;;; -64868;5;0;false;false;63;95;191;;; -64873;4;0;false;false;;;;;; -64877;1;0;false;false;63;95;191;;; -64878;1;0;false;false;;;;;; -64879;2;0;false;false;63;95;191;;; -64881;1;0;false;false;;;;;; -64882;3;0;false;false;63;95;191;;; -64885;1;0;false;false;;;;;; -64886;5;0;false;false;63;95;191;;; -64891;1;0;false;false;;;;;; -64892;2;0;false;false;63;95;191;;; -64894;1;0;false;false;;;;;; -64895;6;0;false;false;63;95;191;;; -64901;4;0;false;false;;;;;; -64905;1;0;false;false;63;95;191;;; -64906;1;0;false;false;;;;;; -64907;3;0;false;false;127;127;159;;; -64910;3;0;false;false;;;;;; -64913;1;0;false;false;63;95;191;;; -64914;3;0;false;false;;;;;; -64917;1;0;false;false;63;95;191;;; -64918;1;0;false;false;;;;;; -64919;7;1;false;false;127;159;191;;; -64926;8;0;false;false;63;95;191;;; -64934;1;0;false;false;;;;;; -64935;3;0;false;false;63;95;191;;; -64938;1;0;false;false;;;;;; -64939;8;0;false;false;63;95;191;;; -64947;3;0;false;false;;;;;; -64950;1;0;false;false;63;95;191;;; -64951;1;0;false;false;;;;;; -64952;11;1;false;false;127;159;191;;; -64963;12;0;false;false;63;95;191;;; -64975;1;0;false;false;;;;;; -64976;4;0;false;false;127;127;159;;; -64980;3;0;false;false;;;;;; -64983;1;0;false;false;63;95;191;;; -64984;4;0;false;false;;;;;; -64988;4;0;false;false;127;127;159;;; -64992;21;0;false;false;63;95;191;;; -65013;1;0;false;false;;;;;; -65014;1;0;false;false;127;127;159;;; -65015;1;0;false;false;;;;;; -65016;2;0;false;false;63;95;191;;; -65018;1;0;false;false;;;;;; -65019;3;0;false;false;63;95;191;;; -65022;1;0;false;false;;;;;; -65023;8;0;false;false;63;95;191;;; -65031;1;0;false;false;;;;;; -65032;3;0;false;false;63;95;191;;; -65035;1;0;false;false;;;;;; -65036;4;0;false;false;63;95;191;;; -65040;1;0;false;false;;;;;; -65041;8;0;false;false;63;95;191;;; -65049;5;0;false;false;127;127;159;;; -65054;3;0;false;false;;;;;; -65057;1;0;false;false;63;95;191;;; -65058;4;0;false;false;;;;;; -65062;4;0;false;false;127;127;159;;; -65066;27;0;false;false;63;95;191;;; -65093;1;0;false;false;;;;;; -65094;1;0;false;false;127;127;159;;; -65095;1;0;false;false;;;;;; -65096;2;0;false;false;63;95;191;;; -65098;1;0;false;false;;;;;; -65099;3;0;false;false;63;95;191;;; -65102;1;0;false;false;;;;;; -65103;6;0;false;false;63;95;191;;; -65109;1;0;false;false;;;;;; -65110;4;0;false;false;63;95;191;;; -65114;1;0;false;false;;;;;; -65115;3;0;false;false;63;95;191;;; -65118;1;0;false;false;;;;;; -65119;6;0;false;false;63;95;191;;; -65125;1;0;false;false;;;;;; -65126;4;0;false;false;63;95;191;;; -65130;1;0;false;false;;;;;; -65131;7;0;false;false;63;95;191;;; -65138;1;0;false;false;;;;;; -65139;3;0;false;false;63;95;191;;; -65142;1;0;false;false;;;;;; -65143;8;0;false;false;63;95;191;;; -65151;5;0;false;false;127;127;159;;; -65156;3;0;false;false;;;;;; -65159;1;0;false;false;63;95;191;;; -65160;1;0;false;false;;;;;; -65161;5;0;false;false;127;127;159;;; -65166;3;0;false;false;;;;;; -65169;1;0;false;false;63;95;191;;; -65170;1;0;false;false;;;;;; -65171;11;1;false;false;127;159;191;;; -65182;24;0;false;false;63;95;191;;; -65206;1;0;false;false;;;;;; -65207;4;0;false;false;127;127;159;;; -65211;3;0;false;false;;;;;; -65214;1;0;false;false;63;95;191;;; -65215;4;0;false;false;;;;;; -65219;4;0;false;false;127;127;159;;; -65223;19;0;false;false;63;95;191;;; -65242;1;0;false;false;;;;;; -65243;4;0;false;false;63;95;191;;; -65247;1;0;false;false;;;;;; -65248;8;0;false;false;63;95;191;;; -65256;1;0;false;false;;;;;; -65257;2;0;false;false;63;95;191;;; -65259;1;0;false;false;;;;;; -65260;4;0;false;false;63;95;191;;; -65264;5;0;false;false;127;127;159;;; -65269;3;0;false;false;;;;;; -65272;1;0;false;false;63;95;191;;; -65273;1;0;false;false;;;;;; -65274;5;0;false;false;127;127;159;;; -65279;3;0;false;false;;;;;; -65282;2;0;false;false;63;95;191;;; -65284;2;0;false;false;;;;;; -65286;6;1;false;false;127;0;85;;; -65292;1;0;false;false;;;;;; -65293;4;1;false;false;127;0;85;;; -65297;1;0;false;false;;;;;; -65298;38;0;false;false;0;0;0;;; -65336;1;0;false;false;;;;;; -65337;9;0;false;false;0;0;0;;; -65346;1;0;false;false;;;;;; -65347;1;0;false;false;0;0;0;;; -65348;3;0;false;false;;;;;; -65351;14;0;false;false;0;0;0;;; -65365;3;0;false;false;;;;;; -65368;2;1;false;false;127;0;85;;; -65370;1;0;false;false;;;;;; -65371;9;0;false;false;0;0;0;;; -65380;1;0;false;false;;;;;; -65381;2;0;false;false;0;0;0;;; -65383;1;0;false;false;;;;;; -65384;4;1;false;false;127;0;85;;; -65388;1;0;false;false;0;0;0;;; -65389;1;0;false;false;;;;;; -65390;1;0;false;false;0;0;0;;; -65391;4;0;false;false;;;;;; -65395;35;0;false;false;0;0;0;;; -65430;3;0;false;false;;;;;; -65433;1;0;false;false;0;0;0;;; -65434;3;0;false;false;;;;;; -65437;18;0;false;false;0;0;0;;; -65455;1;0;false;false;;;;;; -65456;13;0;false;false;0;0;0;;; -65469;1;0;false;false;;;;;; -65470;1;0;false;false;0;0;0;;; -65471;1;0;false;false;;;;;; -65472;3;1;false;false;127;0;85;;; -65475;1;0;false;false;;;;;; -65476;29;0;false;false;0;0;0;;; -65505;3;0;false;false;;;;;; -65508;22;0;false;false;0;0;0;;; -65530;1;0;false;false;;;;;; -65531;15;0;false;false;0;0;0;;; -65546;3;0;false;false;;;;;; -65549;1;0;false;false;0;0;0;;; -65550;2;0;false;false;;;;;; -65552;3;0;false;false;63;95;191;;; -65555;5;0;false;false;;;;;; -65560;1;0;false;false;63;95;191;;; -65561;1;0;false;false;;;;;; -65562;4;0;false;false;63;95;191;;; -65566;1;0;false;false;;;;;; -65567;1;0;false;false;63;95;191;;; -65568;1;0;false;false;;;;;; -65569;6;0;false;false;63;95;191;;; -65575;1;0;false;false;;;;;; -65576;9;0;false;false;63;95;191;;; -65585;1;0;false;false;;;;;; -65586;1;0;false;false;63;95;191;;; -65587;1;0;false;false;;;;;; -65588;6;0;false;false;63;95;191;;; -65594;1;0;false;false;;;;;; -65595;5;0;false;false;63;95;191;;; -65600;1;0;false;false;;;;;; -65601;2;0;false;false;63;95;191;;; -65603;1;0;false;false;;;;;; -65604;4;0;false;false;63;95;191;;; -65608;1;0;false;false;;;;;; -65609;2;0;false;false;63;95;191;;; -65611;1;0;false;false;;;;;; -65612;3;0;false;false;63;95;191;;; -65615;1;0;false;false;;;;;; -65616;6;0;false;false;63;95;191;;; -65622;1;0;false;false;;;;;; -65623;4;0;false;false;63;95;191;;; -65627;1;0;false;false;;;;;; -65628;3;0;false;false;63;95;191;;; -65631;1;0;false;false;;;;;; -65632;6;0;false;false;63;95;191;;; -65638;1;0;false;false;;;;;; -65639;4;0;false;false;63;95;191;;; -65643;4;0;false;false;;;;;; -65647;1;0;false;false;63;95;191;;; -65648;1;0;false;false;;;;;; -65649;2;0;false;false;63;95;191;;; -65651;1;0;false;false;;;;;; -65652;5;0;false;false;63;95;191;;; -65657;1;0;false;false;;;;;; -65658;2;0;false;false;63;95;191;;; -65660;1;0;false;false;;;;;; -65661;7;0;false;false;63;95;191;;; -65668;1;0;false;false;;;;;; -65669;3;0;false;false;63;95;191;;; -65672;1;0;false;false;;;;;; -65673;8;0;false;false;63;95;191;;; -65681;1;0;false;false;;;;;; -65682;3;0;false;false;63;95;191;;; -65685;1;0;false;false;;;;;; -65686;3;0;false;false;63;95;191;;; -65689;1;0;false;false;;;;;; -65690;3;0;false;false;63;95;191;;; -65693;1;0;false;false;;;;;; -65694;5;0;false;false;63;95;191;;; -65699;1;0;false;false;;;;;; -65700;4;0;false;false;63;95;191;;; -65704;1;0;false;false;;;;;; -65705;3;0;false;false;63;95;191;;; -65708;1;0;false;false;;;;;; -65709;3;0;false;false;63;95;191;;; -65712;1;0;false;false;;;;;; -65713;4;0;false;false;63;95;191;;; -65717;1;0;false;false;;;;;; -65718;5;0;false;false;63;95;191;;; -65723;1;0;false;false;;;;;; -65724;2;0;false;false;63;95;191;;; -65726;4;0;false;false;;;;;; -65730;1;0;false;false;63;95;191;;; -65731;1;0;false;false;;;;;; -65732;6;0;false;false;63;95;191;;; -65738;1;0;false;false;;;;;; -65739;3;0;false;false;63;95;191;;; -65742;1;0;false;false;;;;;; -65743;4;0;false;false;63;95;191;;; -65747;1;0;false;false;;;;;; -65748;4;0;false;false;63;95;191;;; -65752;1;0;false;false;;;;;; -65753;2;0;false;false;63;95;191;;; -65755;1;0;false;false;;;;;; -65756;3;0;false;false;63;95;191;;; -65759;1;0;false;false;;;;;; -65760;2;0;false;false;63;95;191;;; -65762;1;0;false;false;;;;;; -65763;3;0;false;false;63;95;191;;; -65766;1;0;false;false;;;;;; -65767;6;0;false;false;63;95;191;;; -65773;1;0;false;false;;;;;; -65774;2;0;false;false;63;95;191;;; -65776;1;0;false;false;;;;;; -65777;2;0;false;false;63;95;191;;; -65779;1;0;false;false;;;;;; -65780;5;0;false;false;63;95;191;;; -65785;1;0;false;false;;;;;; -65786;3;0;false;false;63;95;191;;; -65789;1;0;false;false;;;;;; -65790;6;0;false;false;63;95;191;;; -65796;1;0;false;false;;;;;; -65797;2;0;false;false;63;95;191;;; -65799;1;0;false;false;;;;;; -65800;6;0;false;false;63;95;191;;; -65806;1;0;false;false;;;;;; -65807;3;0;false;false;63;95;191;;; -65810;4;0;false;false;;;;;; -65814;1;0;false;false;63;95;191;;; -65815;1;0;false;false;;;;;; -65816;4;0;false;false;63;95;191;;; -65820;1;0;false;false;;;;;; -65821;7;0;false;false;63;95;191;;; -65828;3;0;false;false;;;;;; -65831;1;0;false;false;63;95;191;;; -65832;1;0;false;false;;;;;; -65833;3;0;false;false;127;127;159;;; -65836;3;0;false;false;;;;;; -65839;1;0;false;false;63;95;191;;; -65840;3;0;false;false;;;;;; -65843;1;0;false;false;63;95;191;;; -65844;1;0;false;false;;;;;; -65845;7;1;false;false;127;159;191;;; -65852;14;0;false;false;63;95;191;;; -65866;1;0;false;false;;;;;; -65867;3;0;false;false;63;95;191;;; -65870;1;0;false;false;;;;;; -65871;8;0;false;false;63;95;191;;; -65879;3;0;false;false;;;;;; -65882;1;0;false;false;63;95;191;;; -65883;1;0;false;false;;;;;; -65884;11;1;false;false;127;159;191;;; -65895;12;0;false;false;63;95;191;;; -65907;1;0;false;false;;;;;; -65908;4;0;false;false;127;127;159;;; -65912;3;0;false;false;;;;;; -65915;1;0;false;false;63;95;191;;; -65916;4;0;false;false;;;;;; -65920;4;0;false;false;127;127;159;;; -65924;21;0;false;false;63;95;191;;; -65945;1;0;false;false;;;;;; -65946;1;0;false;false;127;127;159;;; -65947;1;0;false;false;;;;;; -65948;2;0;false;false;63;95;191;;; -65950;1;0;false;false;;;;;; -65951;3;0;false;false;63;95;191;;; -65954;1;0;false;false;;;;;; -65955;8;0;false;false;63;95;191;;; -65963;1;0;false;false;;;;;; -65964;3;0;false;false;63;95;191;;; -65967;1;0;false;false;;;;;; -65968;4;0;false;false;63;95;191;;; -65972;1;0;false;false;;;;;; -65973;8;0;false;false;63;95;191;;; -65981;5;0;false;false;127;127;159;;; -65986;3;0;false;false;;;;;; -65989;1;0;false;false;63;95;191;;; -65990;4;0;false;false;;;;;; -65994;4;0;false;false;127;127;159;;; -65998;27;0;false;false;63;95;191;;; -66025;1;0;false;false;;;;;; -66026;1;0;false;false;127;127;159;;; -66027;1;0;false;false;;;;;; -66028;2;0;false;false;63;95;191;;; -66030;1;0;false;false;;;;;; -66031;3;0;false;false;63;95;191;;; -66034;1;0;false;false;;;;;; -66035;6;0;false;false;63;95;191;;; -66041;1;0;false;false;;;;;; -66042;4;0;false;false;63;95;191;;; -66046;1;0;false;false;;;;;; -66047;3;0;false;false;63;95;191;;; -66050;1;0;false;false;;;;;; -66051;6;0;false;false;63;95;191;;; -66057;1;0;false;false;;;;;; -66058;4;0;false;false;63;95;191;;; -66062;1;0;false;false;;;;;; -66063;7;0;false;false;63;95;191;;; -66070;1;0;false;false;;;;;; -66071;3;0;false;false;63;95;191;;; -66074;1;0;false;false;;;;;; -66075;8;0;false;false;63;95;191;;; -66083;5;0;false;false;127;127;159;;; -66088;3;0;false;false;;;;;; -66091;1;0;false;false;63;95;191;;; -66092;1;0;false;false;;;;;; -66093;5;0;false;false;127;127;159;;; -66098;3;0;false;false;;;;;; -66101;1;0;false;false;63;95;191;;; -66102;1;0;false;false;;;;;; -66103;11;1;false;false;127;159;191;;; -66114;24;0;false;false;63;95;191;;; -66138;1;0;false;false;;;;;; -66139;4;0;false;false;127;127;159;;; -66143;3;0;false;false;;;;;; -66146;1;0;false;false;63;95;191;;; -66147;4;0;false;false;;;;;; -66151;4;0;false;false;127;127;159;;; -66155;19;0;false;false;63;95;191;;; -66174;1;0;false;false;;;;;; -66175;4;0;false;false;63;95;191;;; -66179;1;0;false;false;;;;;; -66180;8;0;false;false;63;95;191;;; -66188;1;0;false;false;;;;;; -66189;2;0;false;false;63;95;191;;; -66191;1;0;false;false;;;;;; -66192;4;0;false;false;63;95;191;;; -66196;5;0;false;false;127;127;159;;; -66201;3;0;false;false;;;;;; -66204;1;0;false;false;63;95;191;;; -66205;1;0;false;false;;;;;; -66206;5;0;false;false;127;127;159;;; -66211;3;0;false;false;;;;;; -66214;2;0;false;false;63;95;191;;; -66216;2;0;false;false;;;;;; -66218;6;1;false;false;127;0;85;;; -66224;1;0;false;false;;;;;; -66225;4;1;false;false;127;0;85;;; -66229;1;0;false;false;;;;;; -66230;32;0;false;false;0;0;0;;; -66262;1;0;false;false;;;;;; -66263;15;0;false;false;0;0;0;;; -66278;1;0;false;false;;;;;; -66279;1;0;false;false;0;0;0;;; -66280;3;0;false;false;;;;;; -66283;14;0;false;false;0;0;0;;; -66297;3;0;false;false;;;;;; -66300;2;1;false;false;127;0;85;;; -66302;1;0;false;false;;;;;; -66303;15;0;false;false;0;0;0;;; -66318;1;0;false;false;;;;;; -66319;2;0;false;false;0;0;0;;; -66321;1;0;false;false;;;;;; -66322;4;1;false;false;127;0;85;;; -66326;1;0;false;false;0;0;0;;; -66327;1;0;false;false;;;;;; -66328;1;0;false;false;0;0;0;;; -66329;4;0;false;false;;;;;; -66333;35;0;false;false;0;0;0;;; -66368;3;0;false;false;;;;;; -66371;1;0;false;false;0;0;0;;; -66372;3;0;false;false;;;;;; -66375;13;0;false;false;0;0;0;;; -66388;1;0;false;false;;;;;; -66389;13;0;false;false;0;0;0;;; -66402;1;0;false;false;;;;;; -66403;1;0;false;false;0;0;0;;; -66404;1;0;false;false;;;;;; -66405;3;1;false;false;127;0;85;;; -66408;1;0;false;false;;;;;; -66409;30;0;false;false;0;0;0;;; -66439;3;0;false;false;;;;;; -66442;23;0;false;false;0;0;0;;; -66465;1;0;false;false;;;;;; -66466;15;0;false;false;0;0;0;;; -66481;2;0;false;false;;;;;; -66483;1;0;false;false;0;0;0;;; -66484;2;0;false;false;;;;;; -66486;3;0;false;false;63;95;191;;; -66489;4;0;false;false;;;;;; -66493;1;0;false;false;63;95;191;;; -66494;1;0;false;false;;;;;; -66495;7;0;false;false;63;95;191;;; -66502;1;0;false;false;;;;;; -66503;1;0;false;false;63;95;191;;; -66504;1;0;false;false;;;;;; -66505;6;0;false;false;63;95;191;;; -66511;1;0;false;false;;;;;; -66512;2;0;false;false;63;95;191;;; -66514;1;0;false;false;;;;;; -66515;3;0;false;false;63;95;191;;; -66518;1;0;false;false;;;;;; -66519;4;0;false;false;63;95;191;;; -66523;1;0;false;false;;;;;; -66524;2;0;false;false;63;95;191;;; -66526;1;0;false;false;;;;;; -66527;3;0;false;false;63;95;191;;; -66530;1;0;false;false;;;;;; -66531;3;0;false;false;63;95;191;;; -66534;1;0;false;false;;;;;; -66535;2;0;false;false;63;95;191;;; -66537;1;0;false;false;;;;;; -66538;3;0;false;false;63;95;191;;; -66541;1;0;false;false;;;;;; -66542;7;0;false;false;63;95;191;;; -66549;3;0;false;false;;;;;; -66552;1;0;false;false;63;95;191;;; -66553;1;0;false;false;;;;;; -66554;3;0;false;false;127;127;159;;; -66557;3;0;false;false;;;;;; -66560;1;0;false;false;63;95;191;;; -66561;3;0;false;false;;;;;; -66564;1;0;false;false;63;95;191;;; -66565;1;0;false;false;;;;;; -66566;7;1;false;false;127;159;191;;; -66573;6;0;false;false;63;95;191;;; -66579;1;0;false;false;;;;;; -66580;3;0;false;false;63;95;191;;; -66583;1;0;false;false;;;;;; -66584;6;0;false;false;63;95;191;;; -66590;1;0;false;false;;;;;; -66591;2;0;false;false;63;95;191;;; -66593;1;0;false;false;;;;;; -66594;2;0;false;false;63;95;191;;; -66596;1;0;false;false;;;;;; -66597;8;0;false;false;63;95;191;;; -66605;3;0;false;false;;;;;; -66608;1;0;false;false;63;95;191;;; -66609;1;0;false;false;;;;;; -66610;5;1;false;false;127;159;191;;; -66615;33;0;false;false;63;95;191;;; -66648;3;0;false;false;;;;;; -66651;1;0;false;false;63;95;191;;; -66652;1;0;false;false;;;;;; -66653;11;1;false;false;127;159;191;;; -66664;12;0;false;false;63;95;191;;; -66676;1;0;false;false;;;;;; -66677;4;0;false;false;127;127;159;;; -66681;3;0;false;false;;;;;; -66684;1;0;false;false;63;95;191;;; -66685;4;0;false;false;;;;;; -66689;4;0;false;false;127;127;159;;; -66693;21;0;false;false;63;95;191;;; -66714;1;0;false;false;;;;;; -66715;1;0;false;false;127;127;159;;; -66716;1;0;false;false;;;;;; -66717;2;0;false;false;63;95;191;;; -66719;1;0;false;false;;;;;; -66720;3;0;false;false;63;95;191;;; -66723;1;0;false;false;;;;;; -66724;8;0;false;false;63;95;191;;; -66732;1;0;false;false;;;;;; -66733;3;0;false;false;63;95;191;;; -66736;1;0;false;false;;;;;; -66737;4;0;false;false;63;95;191;;; -66741;1;0;false;false;;;;;; -66742;8;0;false;false;63;95;191;;; -66750;5;0;false;false;127;127;159;;; -66755;3;0;false;false;;;;;; -66758;1;0;false;false;63;95;191;;; -66759;4;0;false;false;;;;;; -66763;4;0;false;false;127;127;159;;; -66767;27;0;false;false;63;95;191;;; -66794;1;0;false;false;;;;;; -66795;1;0;false;false;127;127;159;;; -66796;1;0;false;false;;;;;; -66797;2;0;false;false;63;95;191;;; -66799;1;0;false;false;;;;;; -66800;3;0;false;false;63;95;191;;; -66803;1;0;false;false;;;;;; -66804;6;0;false;false;63;95;191;;; -66810;1;0;false;false;;;;;; -66811;4;0;false;false;63;95;191;;; -66815;1;0;false;false;;;;;; -66816;3;0;false;false;63;95;191;;; -66819;1;0;false;false;;;;;; -66820;6;0;false;false;63;95;191;;; -66826;1;0;false;false;;;;;; -66827;4;0;false;false;63;95;191;;; -66831;1;0;false;false;;;;;; -66832;7;0;false;false;63;95;191;;; -66839;1;0;false;false;;;;;; -66840;3;0;false;false;63;95;191;;; -66843;1;0;false;false;;;;;; -66844;8;0;false;false;63;95;191;;; -66852;5;0;false;false;127;127;159;;; -66857;3;0;false;false;;;;;; -66860;1;0;false;false;63;95;191;;; -66861;1;0;false;false;;;;;; -66862;5;0;false;false;127;127;159;;; -66867;3;0;false;false;;;;;; -66870;1;0;false;false;63;95;191;;; -66871;1;0;false;false;;;;;; -66872;11;1;false;false;127;159;191;;; -66883;24;0;false;false;63;95;191;;; -66907;1;0;false;false;;;;;; -66908;4;0;false;false;127;127;159;;; -66912;3;0;false;false;;;;;; -66915;1;0;false;false;63;95;191;;; -66916;4;0;false;false;;;;;; -66920;4;0;false;false;127;127;159;;; -66924;19;0;false;false;63;95;191;;; -66943;1;0;false;false;;;;;; -66944;4;0;false;false;63;95;191;;; -66948;1;0;false;false;;;;;; -66949;8;0;false;false;63;95;191;;; -66957;1;0;false;false;;;;;; -66958;2;0;false;false;63;95;191;;; -66960;1;0;false;false;;;;;; -66961;4;0;false;false;63;95;191;;; -66965;5;0;false;false;127;127;159;;; -66970;3;0;false;false;;;;;; -66973;1;0;false;false;63;95;191;;; -66974;1;0;false;false;;;;;; -66975;5;0;false;false;127;127;159;;; -66980;3;0;false;false;;;;;; -66983;2;0;false;false;63;95;191;;; -66985;2;0;false;false;;;;;; -66987;6;1;false;false;127;0;85;;; -66993;1;0;false;false;;;;;; -66994;4;1;false;false;127;0;85;;; -66998;1;0;false;false;;;;;; -66999;13;0;false;false;0;0;0;;; -67012;1;0;false;false;;;;;; -67013;7;0;false;false;0;0;0;;; -67020;1;0;false;false;;;;;; -67021;1;0;false;false;0;0;0;;; -67022;3;0;false;false;;;;;; -67025;14;0;false;false;0;0;0;;; -67039;3;0;false;false;;;;;; -67042;2;1;false;false;127;0;85;;; -67044;1;0;false;false;;;;;; -67045;7;0;false;false;0;0;0;;; -67052;1;0;false;false;;;;;; -67053;2;0;false;false;0;0;0;;; -67055;1;0;false;false;;;;;; -67056;4;1;false;false;127;0;85;;; -67060;1;0;false;false;0;0;0;;; -67061;1;0;false;false;;;;;; -67062;1;0;false;false;0;0;0;;; -67063;4;0;false;false;;;;;; -67067;35;0;false;false;0;0;0;;; -67102;3;0;false;false;;;;;; -67105;1;0;false;false;0;0;0;;; -67106;3;0;false;false;;;;;; -67109;3;1;false;false;127;0;85;;; -67112;1;0;false;false;;;;;; -67113;8;0;false;false;0;0;0;;; -67121;1;0;false;false;;;;;; -67122;1;0;false;false;0;0;0;;; -67123;1;0;false;false;;;;;; -67124;24;0;false;false;0;0;0;;; -67148;1;0;false;false;;;;;; -67149;3;0;false;false;0;0;0;;; -67152;3;0;false;false;;;;;; -67155;26;0;false;false;0;0;0;;; -67181;1;0;false;false;;;;;; -67182;2;0;false;false;0;0;0;;; -67184;1;0;false;false;;;;;; -67185;8;0;false;false;0;0;0;;; -67193;2;0;false;false;;;;;; -67195;1;0;false;false;0;0;0;;; -67196;2;0;false;false;;;;;; -67198;3;0;false;false;63;95;191;;; -67201;3;0;false;false;;;;;; -67204;1;0;false;false;63;95;191;;; -67205;1;0;false;false;;;;;; -67206;10;0;false;false;63;95;191;;; -67216;1;0;false;false;;;;;; -67217;3;0;false;false;63;95;191;;; -67220;1;0;false;false;;;;;; -67221;5;0;false;false;63;95;191;;; -67226;1;0;false;false;;;;;; -67227;2;0;false;false;63;95;191;;; -67229;1;0;false;false;;;;;; -67230;3;0;false;false;63;95;191;;; -67233;1;0;false;false;;;;;; -67234;6;0;false;false;63;95;191;;; -67240;1;0;false;false;;;;;; -67241;7;0;false;false;63;95;191;;; -67248;1;0;false;false;;;;;; -67249;5;0;false;false;63;95;191;;; -67254;3;0;false;false;;;;;; -67257;2;0;false;false;63;95;191;;; -67259;2;0;false;false;;;;;; -67261;4;1;false;false;127;0;85;;; -67265;1;0;false;false;;;;;; -67266;23;0;false;false;0;0;0;;; -67289;1;0;false;false;;;;;; -67290;1;0;false;false;0;0;0;;; -67291;3;0;false;false;;;;;; -67294;9;0;false;false;0;0;0;;; -67303;1;0;false;false;;;;;; -67304;1;0;false;false;0;0;0;;; -67305;1;0;false;false;;;;;; -67306;22;0;false;false;0;0;0;;; -67328;3;0;false;false;;;;;; -67331;29;0;false;false;0;0;0;;; -67360;1;0;false;false;;;;;; -67361;23;0;false;false;0;0;0;;; -67384;1;0;false;false;;;;;; -67385;1;0;false;false;0;0;0;;; -67386;1;0;false;false;;;;;; -67387;8;0;false;false;0;0;0;;; -67395;1;0;false;false;;;;;; -67396;1;0;false;false;0;0;0;;; -67397;1;0;false;false;;;;;; -67398;3;0;false;false;0;0;0;;; -67401;2;0;false;false;;;;;; -67403;1;0;false;false;0;0;0;;; -67404;2;0;false;false;;;;;; -67406;3;0;false;false;63;95;191;;; -67409;3;0;false;false;;;;;; -67412;1;0;false;false;63;95;191;;; -67413;1;0;false;false;;;;;; -67414;10;0;false;false;63;95;191;;; -67424;1;0;false;false;;;;;; -67425;3;0;false;false;63;95;191;;; -67428;1;0;false;false;;;;;; -67429;6;0;false;false;63;95;191;;; -67435;1;0;false;false;;;;;; -67436;4;0;false;false;63;95;191;;; -67440;3;0;false;false;;;;;; -67443;2;0;false;false;63;95;191;;; -67445;2;0;false;false;;;;;; -67447;4;1;false;false;127;0;85;;; -67451;1;0;false;false;;;;;; -67452;21;0;false;false;0;0;0;;; -67473;1;0;false;false;;;;;; -67474;1;0;false;false;0;0;0;;; -67475;3;0;false;false;;;;;; -67478;9;0;false;false;0;0;0;;; -67487;1;0;false;false;;;;;; -67488;13;0;false;false;0;0;0;;; -67501;1;0;false;false;;;;;; -67502;1;0;false;false;0;0;0;;; -67503;1;0;false;false;;;;;; -67504;19;0;false;false;0;0;0;;; -67523;3;0;false;false;;;;;; -67526;9;0;false;false;0;0;0;;; -67535;1;0;false;false;;;;;; -67536;11;0;false;false;0;0;0;;; -67547;1;0;false;false;;;;;; -67548;1;0;false;false;0;0;0;;; -67549;1;0;false;false;;;;;; -67550;17;0;false;false;0;0;0;;; -67567;6;0;false;false;;;;;; -67573;16;0;false;false;0;0;0;;; -67589;3;0;false;false;;;;;; -67592;2;1;false;false;127;0;85;;; -67594;1;0;false;false;;;;;; -67595;12;0;false;false;0;0;0;;; -67607;1;0;false;false;;;;;; -67608;2;0;false;false;0;0;0;;; -67610;1;0;false;false;;;;;; -67611;4;1;false;false;127;0;85;;; -67615;1;0;false;false;0;0;0;;; -67616;1;0;false;false;;;;;; -67617;1;0;false;false;0;0;0;;; -67618;4;0;false;false;;;;;; -67622;49;0;false;false;0;0;0;;; -67671;3;0;false;false;;;;;; -67674;1;0;false;false;0;0;0;;; -67675;4;0;false;false;;;;;; -67679;2;1;false;false;127;0;85;;; -67681;1;0;false;false;;;;;; -67682;14;0;false;false;0;0;0;;; -67696;1;0;false;false;;;;;; -67697;2;0;false;false;0;0;0;;; -67699;1;0;false;false;;;;;; -67700;4;1;false;false;127;0;85;;; -67704;1;0;false;false;0;0;0;;; -67705;1;0;false;false;;;;;; -67706;1;0;false;false;0;0;0;;; -67707;4;0;false;false;;;;;; -67711;53;0;false;false;0;0;0;;; -67764;3;0;false;false;;;;;; -67767;1;0;false;false;0;0;0;;; -67768;2;0;false;false;;;;;; -67770;1;0;false;false;0;0;0;;; -67771;2;0;false;false;;;;;; -67773;3;0;false;false;63;95;191;;; -67776;3;0;false;false;;;;;; -67779;1;0;false;false;63;95;191;;; -67780;1;0;false;false;;;;;; -67781;10;0;false;false;63;95;191;;; -67791;1;0;false;false;;;;;; -67792;3;0;false;false;63;95;191;;; -67795;1;0;false;false;;;;;; -67796;3;0;false;false;63;95;191;;; -67799;1;0;false;false;;;;;; -67800;5;0;false;false;63;95;191;;; -67805;1;0;false;false;;;;;; -67806;5;0;false;false;63;95;191;;; -67811;1;0;false;false;;;;;; -67812;2;0;false;false;63;95;191;;; -67814;1;0;false;false;;;;;; -67815;3;0;false;false;63;95;191;;; -67818;1;0;false;false;;;;;; -67819;7;0;false;false;63;95;191;;; -67826;1;0;false;false;;;;;; -67827;8;0;false;false;63;95;191;;; -67835;1;0;false;false;;;;;; -67836;6;0;false;false;63;95;191;;; -67842;1;0;false;false;;;;;; -67843;7;0;false;false;63;95;191;;; -67850;3;0;false;false;;;;;; -67853;1;0;false;false;63;95;191;;; -67854;1;0;false;false;;;;;; -67855;3;0;false;false;63;95;191;;; -67858;1;0;false;false;;;;;; -67859;3;0;false;false;63;95;191;;; -67862;1;0;false;false;;;;;; -67863;5;0;false;false;63;95;191;;; -67868;1;0;false;false;;;;;; -67869;2;0;false;false;63;95;191;;; -67871;1;0;false;false;;;;;; -67872;3;0;false;false;63;95;191;;; -67875;1;0;false;false;;;;;; -67876;5;0;false;false;63;95;191;;; -67881;1;0;false;false;;;;;; -67882;2;0;false;false;63;95;191;;; -67884;1;0;false;false;;;;;; -67885;3;0;false;false;63;95;191;;; -67888;1;0;false;false;;;;;; -67889;7;0;false;false;63;95;191;;; -67896;1;0;false;false;;;;;; -67897;5;0;false;false;63;95;191;;; -67902;1;0;false;false;;;;;; -67903;7;0;false;false;63;95;191;;; -67910;1;0;false;false;;;;;; -67911;4;0;false;false;63;95;191;;; -67915;1;0;false;false;;;;;; -67916;2;0;false;false;63;95;191;;; -67918;1;0;false;false;;;;;; -67919;3;0;false;false;63;95;191;;; -67922;3;0;false;false;;;;;; -67925;1;0;false;false;63;95;191;;; -67926;1;0;false;false;;;;;; -67927;7;0;false;false;63;95;191;;; -67934;1;0;false;false;;;;;; -67935;9;0;false;false;63;95;191;;; -67944;1;0;false;false;;;;;; -67945;7;0;false;false;63;95;191;;; -67952;1;0;false;false;;;;;; -67953;4;0;false;false;63;95;191;;; -67957;1;0;false;false;;;;;; -67958;2;0;false;false;63;95;191;;; -67960;1;0;false;false;;;;;; -67961;2;0;false;false;63;95;191;;; -67963;1;0;false;false;;;;;; -67964;4;0;false;false;63;95;191;;; -67968;1;0;false;false;;;;;; -67969;2;0;false;false;63;95;191;;; -67971;1;0;false;false;;;;;; -67972;5;0;false;false;63;95;191;;; -67977;1;0;false;false;;;;;; -67978;8;0;false;false;63;95;191;;; -67986;3;0;false;false;;;;;; -67989;1;0;false;false;63;95;191;;; -67990;1;0;false;false;;;;;; -67991;3;0;false;false;63;95;191;;; -67994;1;0;false;false;;;;;; -67995;3;0;false;false;63;95;191;;; -67998;1;0;false;false;;;;;; -67999;5;0;false;false;63;95;191;;; -68004;1;0;false;false;;;;;; -68005;6;0;false;false;63;95;191;;; -68011;1;0;false;false;;;;;; -68012;2;0;false;false;63;95;191;;; -68014;1;0;false;false;;;;;; -68015;2;0;false;false;63;95;191;;; -68017;3;0;false;false;;;;;; -68020;2;0;false;false;63;95;191;;; -68022;2;0;false;false;;;;;; -68024;4;1;false;false;127;0;85;;; -68028;1;0;false;false;;;;;; -68029;19;0;false;false;0;0;0;;; -68048;1;0;false;false;;;;;; -68049;1;0;false;false;0;0;0;;; -68050;3;0;false;false;;;;;; -68053;3;1;false;false;127;0;85;;; -68056;1;0;false;false;;;;;; -68057;11;0;false;false;0;0;0;;; -68068;1;0;false;false;;;;;; -68069;1;0;false;false;0;0;0;;; -68070;1;0;false;false;;;;;; -68071;9;0;false;false;0;0;0;;; -68080;3;0;false;false;;;;;; -68083;3;1;false;false;127;0;85;;; -68086;1;0;false;false;;;;;; -68087;17;0;false;false;0;0;0;;; -68104;1;0;false;false;;;;;; -68105;1;0;false;false;0;0;0;;; -68106;1;0;false;false;;;;;; -68107;23;0;false;false;0;0;0;;; -68130;3;0;false;false;;;;;; -68133;3;1;false;false;127;0;85;;; -68136;1;0;false;false;;;;;; -68137;16;0;false;false;0;0;0;;; -68153;1;0;false;false;;;;;; -68154;1;0;false;false;0;0;0;;; -68155;1;0;false;false;;;;;; -68156;23;0;false;false;0;0;0;;; -68179;6;0;false;false;;;;;; -68185;2;1;false;false;127;0;85;;; -68187;1;0;false;false;;;;;; -68188;18;0;false;false;0;0;0;;; -68206;1;0;false;false;;;;;; -68207;2;0;false;false;0;0;0;;; -68209;1;0;false;false;;;;;; -68210;2;0;false;false;0;0;0;;; -68212;1;0;false;false;;;;;; -68213;1;0;false;false;0;0;0;;; -68214;4;0;false;false;;;;;; -68218;6;1;false;false;127;0;85;;; -68224;1;0;false;false;0;0;0;;; -68225;3;0;false;false;;;;;; -68228;1;0;false;false;0;0;0;;; -68229;3;0;false;false;;;;;; -68232;8;0;false;false;0;0;0;;; -68240;1;0;false;false;;;;;; -68241;1;0;false;false;0;0;0;;; -68242;1;0;false;false;;;;;; -68243;40;0;false;false;0;0;0;;; -68283;1;0;false;false;;;;;; -68284;19;0;false;false;0;0;0;;; -68303;3;0;false;false;;;;;; -68306;69;0;false;false;63;127;95;;; -68375;1;0;false;false;;;;;; -68376;68;0;false;false;63;127;95;;; -68444;1;0;false;false;;;;;; -68445;21;0;false;false;63;127;95;;; -68466;1;0;false;false;;;;;; -68467;2;1;false;false;127;0;85;;; -68469;1;0;false;false;;;;;; -68470;9;0;false;false;0;0;0;;; -68479;1;0;false;false;;;;;; -68480;1;0;false;false;0;0;0;;; -68481;1;0;false;false;;;;;; -68482;2;0;false;false;0;0;0;;; -68484;1;0;false;false;;;;;; -68485;1;0;false;false;0;0;0;;; -68486;4;0;false;false;;;;;; -68490;2;1;false;false;127;0;85;;; -68492;1;0;false;false;;;;;; -68493;17;0;false;false;0;0;0;;; -68510;1;0;false;false;;;;;; -68511;1;0;false;false;0;0;0;;; -68512;1;0;false;false;;;;;; -68513;2;0;false;false;0;0;0;;; -68515;1;0;false;false;;;;;; -68516;1;0;false;false;0;0;0;;; -68517;5;0;false;false;;;;;; -68522;3;1;false;false;127;0;85;;; -68525;1;0;false;false;;;;;; -68526;11;0;false;false;0;0;0;;; -68537;1;0;false;false;;;;;; -68538;1;0;false;false;0;0;0;;; -68539;1;0;false;false;;;;;; -68540;20;0;false;false;0;0;0;;; -68560;1;0;false;false;;;;;; -68561;1;0;false;false;0;0;0;;; -68562;1;0;false;false;;;;;; -68563;17;0;false;false;0;0;0;;; -68580;5;0;false;false;;;;;; -68585;3;1;false;false;127;0;85;;; -68588;1;0;false;false;;;;;; -68589;16;0;false;false;0;0;0;;; -68605;1;0;false;false;;;;;; -68606;1;0;false;false;0;0;0;;; -68607;1;0;false;false;;;;;; -68608;8;0;false;false;0;0;0;;; -68616;1;0;false;false;;;;;; -68617;1;0;false;false;0;0;0;;; -68618;1;0;false;false;;;;;; -68619;18;0;false;false;0;0;0;;; -68637;5;0;false;false;;;;;; -68642;3;1;false;false;127;0;85;;; -68645;1;0;false;false;;;;;; -68646;21;0;false;false;0;0;0;;; -68667;1;0;false;false;;;;;; -68668;1;0;false;false;0;0;0;;; -68669;1;0;false;false;;;;;; -68670;11;0;false;false;0;0;0;;; -68681;1;0;false;false;;;;;; -68682;1;0;false;false;0;0;0;;; -68683;1;0;false;false;;;;;; -68684;17;0;false;false;0;0;0;;; -68701;5;0;false;false;;;;;; -68706;70;0;false;false;63;127;95;;; -68776;3;0;false;false;;;;;; -68779;73;0;false;false;63;127;95;;; -68852;3;0;false;false;;;;;; -68855;54;0;false;false;63;127;95;;; -68909;3;0;false;false;;;;;; -68912;2;1;false;false;127;0;85;;; -68914;1;0;false;false;;;;;; -68915;22;0;false;false;0;0;0;;; -68937;1;0;false;false;;;;;; -68938;1;0;false;false;0;0;0;;; -68939;1;0;false;false;;;;;; -68940;18;0;false;false;0;0;0;;; -68958;1;0;false;false;;;;;; -68959;1;0;false;false;0;0;0;;; -68960;6;0;false;false;;;;;; -68966;11;0;false;false;0;0;0;;; -68977;5;0;false;false;;;;;; -68982;1;0;false;false;0;0;0;;; -68983;4;0;false;false;;;;;; -68987;1;0;false;false;0;0;0;;; -68988;4;0;false;false;;;;;; -68992;4;1;false;false;127;0;85;;; -68996;5;0;false;false;;;;;; -69001;2;1;false;false;127;0;85;;; -69003;1;0;false;false;;;;;; -69004;9;0;false;false;0;0;0;;; -69013;1;0;false;false;;;;;; -69014;2;0;false;false;0;0;0;;; -69016;1;0;false;false;;;;;; -69017;23;0;false;false;0;0;0;;; -69040;1;0;false;false;;;;;; -69041;1;0;false;false;0;0;0;;; -69042;5;0;false;false;;;;;; -69047;8;0;false;false;0;0;0;;; -69055;1;0;false;false;;;;;; -69056;1;0;false;false;0;0;0;;; -69057;1;0;false;false;;;;;; -69058;22;0;false;false;0;0;0;;; -69080;1;0;false;false;;;;;; -69081;1;0;false;false;0;0;0;;; -69082;1;0;false;false;;;;;; -69083;2;0;false;false;0;0;0;;; -69085;4;0;false;false;;;;;; -69089;1;0;false;false;0;0;0;;; -69090;3;0;false;false;;;;;; -69093;1;0;false;false;0;0;0;;; -69094;3;0;false;false;;;;;; -69097;2;1;false;false;127;0;85;;; -69099;1;0;false;false;;;;;; -69100;9;0;false;false;0;0;0;;; -69109;1;0;false;false;;;;;; -69110;2;0;false;false;0;0;0;;; -69112;1;0;false;false;;;;;; -69113;12;0;false;false;0;0;0;;; -69125;1;0;false;false;;;;;; -69126;1;0;false;false;0;0;0;;; -69127;4;0;false;false;;;;;; -69131;9;0;false;false;0;0;0;;; -69140;1;0;false;false;;;;;; -69141;1;0;false;false;0;0;0;;; -69142;1;0;false;false;;;;;; -69143;34;0;false;false;0;0;0;;; -69177;4;0;false;false;;;;;; -69181;29;0;false;false;0;0;0;;; -69210;1;0;false;false;;;;;; -69211;23;0;false;false;0;0;0;;; -69234;1;0;false;false;;;;;; -69235;1;0;false;false;0;0;0;;; -69236;1;0;false;false;;;;;; -69237;8;0;false;false;0;0;0;;; -69245;1;0;false;false;;;;;; -69246;1;0;false;false;0;0;0;;; -69247;1;0;false;false;;;;;; -69248;3;0;false;false;0;0;0;;; -69251;4;0;false;false;;;;;; -69255;25;0;false;false;0;0;0;;; -69280;3;0;false;false;;;;;; -69283;1;0;false;false;0;0;0;;; -69284;2;0;false;false;;;;;; -69286;1;0;false;false;0;0;0;;; -69287;2;0;false;false;;;;;; -69289;3;0;false;false;63;95;191;;; -69292;3;0;false;false;;;;;; -69295;1;0;false;false;63;95;191;;; -69296;1;0;false;false;;;;;; -69297;5;0;false;false;63;95;191;;; -69302;1;0;false;false;;;;;; -69303;3;0;false;false;63;95;191;;; -69306;1;0;false;false;;;;;; -69307;6;0;false;false;63;95;191;;; -69313;1;0;false;false;;;;;; -69314;4;0;false;false;63;95;191;;; -69318;1;0;false;false;;;;;; -69319;2;0;false;false;63;95;191;;; -69321;1;0;false;false;;;;;; -69322;6;0;false;false;63;95;191;;; -69328;1;0;false;false;;;;;; -69329;2;0;false;false;63;95;191;;; -69331;1;0;false;false;;;;;; -69332;7;0;false;false;63;95;191;;; -69339;1;0;false;false;;;;;; -69340;2;0;false;false;63;95;191;;; -69342;1;0;false;false;;;;;; -69343;6;0;false;false;63;95;191;;; -69349;1;0;false;false;;;;;; -69350;4;0;false;false;63;95;191;;; -69354;1;0;false;false;;;;;; -69355;5;0;false;false;63;95;191;;; -69360;3;0;false;false;;;;;; -69363;2;0;false;false;63;95;191;;; -69365;2;0;false;false;;;;;; -69367;6;1;false;false;127;0;85;;; -69373;1;0;false;false;;;;;; -69374;3;1;false;false;127;0;85;;; -69377;1;0;false;false;;;;;; -69378;11;0;false;false;0;0;0;;; -69389;3;1;false;false;127;0;85;;; -69392;1;0;false;false;;;;;; -69393;6;0;false;false;0;0;0;;; -69399;1;0;false;false;;;;;; -69400;1;0;false;false;0;0;0;;; -69401;3;0;false;false;;;;;; -69404;2;1;false;false;127;0;85;;; -69406;1;0;false;false;;;;;; -69407;7;0;false;false;0;0;0;;; -69414;1;0;false;false;;;;;; -69415;1;0;false;false;0;0;0;;; -69416;1;0;false;false;;;;;; -69417;11;0;false;false;0;0;0;;; -69428;1;0;false;false;;;;;; -69429;2;0;false;false;0;0;0;;; -69431;1;0;false;false;;;;;; -69432;2;0;false;false;0;0;0;;; -69434;1;0;false;false;;;;;; -69435;1;0;false;false;0;0;0;;; -69436;4;0;false;false;;;;;; -69440;5;0;false;false;0;0;0;;; -69445;1;0;false;false;;;;;; -69446;2;0;false;false;0;0;0;;; -69448;1;0;false;false;;;;;; -69449;14;0;false;false;0;0;0;;; -69463;1;0;false;false;;;;;; -69464;1;0;false;false;0;0;0;;; -69465;1;0;false;false;;;;;; -69466;12;0;false;false;0;0;0;;; -69478;1;0;false;false;;;;;; -69479;1;0;false;false;0;0;0;;; -69480;1;0;false;false;;;;;; -69481;8;0;false;false;0;0;0;;; -69489;1;0;false;false;;;;;; -69490;1;0;false;false;0;0;0;;; -69491;1;0;false;false;;;;;; -69492;11;0;false;false;0;0;0;;; -69503;3;0;false;false;;;;;; -69506;1;0;false;false;0;0;0;;; -69507;1;0;false;false;;;;;; -69508;4;1;false;false;127;0;85;;; -69512;1;0;false;false;;;;;; -69513;1;0;false;false;0;0;0;;; -69514;4;0;false;false;;;;;; -69518;5;0;false;false;0;0;0;;; -69523;1;0;false;false;;;;;; -69524;2;0;false;false;0;0;0;;; -69526;1;0;false;false;;;;;; -69527;10;0;false;false;0;0;0;;; -69537;4;0;false;false;;;;;; -69541;2;1;false;false;127;0;85;;; -69543;1;0;false;false;;;;;; -69544;7;0;false;false;0;0;0;;; -69551;1;0;false;false;;;;;; -69552;1;0;false;false;0;0;0;;; -69553;1;0;false;false;;;;;; -69554;9;0;false;false;0;0;0;;; -69563;1;0;false;false;;;;;; -69564;2;0;false;false;0;0;0;;; -69566;1;0;false;false;;;;;; -69567;2;0;false;false;0;0;0;;; -69569;1;0;false;false;;;;;; -69570;1;0;false;false;0;0;0;;; -69571;5;0;false;false;;;;;; -69576;5;0;false;false;0;0;0;;; -69581;1;0;false;false;;;;;; -69582;2;0;false;false;0;0;0;;; -69584;1;0;false;false;;;;;; -69585;14;0;false;false;0;0;0;;; -69599;4;0;false;false;;;;;; -69603;1;0;false;false;0;0;0;;; -69604;3;0;false;false;;;;;; -69607;1;0;false;false;0;0;0;;; -69608;3;0;false;false;;;;;; -69611;6;1;false;false;127;0;85;;; -69617;1;0;false;false;;;;;; -69618;6;0;false;false;0;0;0;;; -69624;2;0;false;false;;;;;; -69626;1;0;false;false;0;0;0;;; -69627;2;0;false;false;;;;;; -69629;3;0;false;false;63;95;191;;; -69632;3;0;false;false;;;;;; -69635;1;0;false;false;63;95;191;;; -69636;1;0;false;false;;;;;; -69637;7;0;false;false;63;95;191;;; -69644;1;0;false;false;;;;;; -69645;4;0;false;false;63;95;191;;; -69649;1;0;false;false;;;;;; -69650;3;0;false;false;63;95;191;;; -69653;1;0;false;false;;;;;; -69654;4;0;false;false;63;95;191;;; -69658;1;0;false;false;;;;;; -69659;2;0;false;false;63;95;191;;; -69661;1;0;false;false;;;;;; -69662;3;0;false;false;63;95;191;;; -69665;1;0;false;false;;;;;; -69666;3;0;false;false;63;95;191;;; -69669;1;0;false;false;;;;;; -69670;5;0;false;false;63;95;191;;; -69675;1;0;false;false;;;;;; -69676;4;0;false;false;63;95;191;;; -69680;1;0;false;false;;;;;; -69681;9;0;false;false;63;95;191;;; -69690;1;0;false;false;;;;;; -69691;2;0;false;false;63;95;191;;; -69693;1;0;false;false;;;;;; -69694;1;0;false;false;63;95;191;;; -69695;1;0;false;false;;;;;; -69696;6;0;false;false;63;95;191;;; -69702;1;0;false;false;;;;;; -69703;2;0;false;false;63;95;191;;; -69705;1;0;false;false;;;;;; -69706;2;0;false;false;63;95;191;;; -69708;4;0;false;false;;;;;; -69712;1;0;false;false;63;95;191;;; -69713;1;0;false;false;;;;;; -69714;7;0;false;false;63;95;191;;; -69721;1;0;false;false;;;;;; -69722;6;0;false;false;63;95;191;;; -69728;3;0;false;false;;;;;; -69731;2;0;false;false;63;95;191;;; -69733;2;0;false;false;;;;;; -69735;4;1;false;false;127;0;85;;; -69739;1;0;false;false;;;;;; -69740;22;0;false;false;0;0;0;;; -69762;1;0;false;false;;;;;; -69763;1;0;false;false;0;0;0;;; -69764;3;0;false;false;;;;;; -69767;3;1;false;false;127;0;85;;; -69770;1;0;false;false;;;;;; -69771;17;0;false;false;0;0;0;;; -69788;1;0;false;false;;;;;; -69789;1;0;false;false;0;0;0;;; -69790;1;0;false;false;;;;;; -69791;11;0;false;false;0;0;0;;; -69802;1;0;false;false;;;;;; -69803;22;0;false;false;0;0;0;;; -69825;1;0;false;false;;;;;; -69826;1;0;false;false;0;0;0;;; -69827;1;0;false;false;;;;;; -69828;10;0;false;false;0;0;0;;; -69838;1;0;false;false;;;;;; -69839;1;0;false;false;0;0;0;;; -69840;1;0;false;false;;;;;; -69841;24;0;false;false;0;0;0;;; -69865;6;0;false;false;;;;;; -69871;2;1;false;false;127;0;85;;; -69873;1;0;false;false;;;;;; -69874;18;0;false;false;0;0;0;;; -69892;1;0;false;false;;;;;; -69893;1;0;false;false;0;0;0;;; -69894;1;0;false;false;;;;;; -69895;21;0;false;false;0;0;0;;; -69916;1;0;false;false;;;;;; -69917;1;0;false;false;0;0;0;;; -69918;4;0;false;false;;;;;; -69922;65;0;false;false;63;127;95;;; -69987;2;0;false;false;;;;;; -69989;18;0;false;false;63;127;95;;; -70007;2;0;false;false;;;;;; -70009;42;0;false;false;0;0;0;;; -70051;1;0;false;false;;;;;; -70052;4;1;false;false;127;0;85;;; -70056;2;0;false;false;0;0;0;;; -70058;3;0;false;false;;;;;; -70061;1;0;false;false;0;0;0;;; -70062;2;0;false;false;;;;;; -70064;1;0;false;false;0;0;0;;; -70065;2;0;false;false;;;;;; -70067;3;0;false;false;63;95;191;;; -70070;3;0;false;false;;;;;; -70073;1;0;false;false;63;95;191;;; -70074;1;0;false;false;;;;;; -70075;7;0;false;false;63;95;191;;; -70082;1;0;false;false;;;;;; -70083;4;0;false;false;63;95;191;;; -70087;1;0;false;false;;;;;; -70088;2;0;false;false;63;95;191;;; -70090;1;0;false;false;;;;;; -70091;3;0;false;false;63;95;191;;; -70094;1;0;false;false;;;;;; -70095;5;0;false;false;63;95;191;;; -70100;1;0;false;false;;;;;; -70101;2;0;false;false;63;95;191;;; -70103;1;0;false;false;;;;;; -70104;3;0;false;false;63;95;191;;; -70107;1;0;false;false;;;;;; -70108;3;0;false;false;63;95;191;;; -70111;1;0;false;false;;;;;; -70112;5;0;false;false;63;95;191;;; -70117;1;0;false;false;;;;;; -70118;4;0;false;false;63;95;191;;; -70122;1;0;false;false;;;;;; -70123;9;0;false;false;63;95;191;;; -70132;1;0;false;false;;;;;; -70133;2;0;false;false;63;95;191;;; -70135;1;0;false;false;;;;;; -70136;1;0;false;false;63;95;191;;; -70137;1;0;false;false;;;;;; -70138;7;0;false;false;63;95;191;;; -70145;3;0;false;false;;;;;; -70148;2;0;false;false;63;95;191;;; -70150;2;0;false;false;;;;;; -70152;4;1;false;false;127;0;85;;; -70156;1;0;false;false;;;;;; -70157;21;0;false;false;0;0;0;;; -70178;1;0;false;false;;;;;; -70179;1;0;false;false;0;0;0;;; -70180;3;0;false;false;;;;;; -70183;3;1;false;false;127;0;85;;; -70186;1;0;false;false;;;;;; -70187;19;0;false;false;0;0;0;;; -70206;1;0;false;false;;;;;; -70207;1;0;false;false;0;0;0;;; -70208;1;0;false;false;;;;;; -70209;11;0;false;false;0;0;0;;; -70220;1;0;false;false;;;;;; -70221;20;0;false;false;0;0;0;;; -70241;1;0;false;false;;;;;; -70242;1;0;false;false;0;0;0;;; -70243;1;0;false;false;;;;;; -70244;22;0;false;false;0;0;0;;; -70266;1;0;false;false;;;;;; -70267;1;0;false;false;0;0;0;;; -70268;1;0;false;false;;;;;; -70269;10;0;false;false;0;0;0;;; -70279;1;0;false;false;;;;;; -70280;1;0;false;false;0;0;0;;; -70281;1;0;false;false;;;;;; -70282;14;0;false;false;0;0;0;;; -70296;6;0;false;false;;;;;; -70302;2;1;false;false;127;0;85;;; -70304;1;0;false;false;;;;;; -70305;20;0;false;false;0;0;0;;; -70325;1;0;false;false;;;;;; -70326;1;0;false;false;0;0;0;;; -70327;1;0;false;false;;;;;; -70328;23;0;false;false;0;0;0;;; -70351;1;0;false;false;;;;;; -70352;1;0;false;false;0;0;0;;; -70353;7;0;false;false;;;;;; -70360;69;0;false;false;63;127;95;;; -70429;2;0;false;false;;;;;; -70431;66;0;false;false;63;127;95;;; -70497;2;0;false;false;;;;;; -70499;44;0;false;false;63;127;95;;; -70543;2;0;false;false;;;;;; -70545;39;0;false;false;0;0;0;;; -70584;1;0;false;false;;;;;; -70585;1;0;false;false;0;0;0;;; -70586;1;0;false;false;;;;;; -70587;24;0;false;false;0;0;0;;; -70611;8;0;false;false;;;;;; -70619;1;0;false;false;0;0;0;;; -70620;2;0;false;false;;;;;; -70622;1;0;false;false;0;0;0;;; -70623;2;0;false;false;;;;;; -70625;3;0;false;false;63;95;191;;; -70628;3;0;false;false;;;;;; -70631;1;0;false;false;63;95;191;;; -70632;1;0;false;false;;;;;; -70633;6;0;false;false;63;95;191;;; -70639;1;0;false;false;;;;;; -70640;3;0;false;false;63;95;191;;; -70643;1;0;false;false;;;;;; -70644;6;0;false;false;63;95;191;;; -70650;1;0;false;false;;;;;; -70651;7;0;false;false;63;95;191;;; -70658;3;0;false;false;;;;;; -70661;1;0;false;false;63;95;191;;; -70662;4;0;false;false;;;;;; -70666;1;0;false;false;63;95;191;;; -70667;1;0;false;false;;;;;; -70668;7;1;false;false;127;159;191;;; -70675;2;0;false;false;63;95;191;;; -70677;1;0;false;false;;;;;; -70678;2;0;false;false;63;95;191;;; -70680;1;0;false;false;;;;;; -70681;2;0;false;false;63;95;191;;; -70683;1;0;false;false;;;;;; -70684;6;0;false;false;63;95;191;;; -70690;1;0;false;false;;;;;; -70691;2;0;false;false;63;95;191;;; -70693;3;0;false;false;;;;;; -70696;1;0;false;false;63;95;191;;; -70697;1;0;false;false;;;;;; -70698;7;1;false;false;127;159;191;;; -70705;10;0;false;false;63;95;191;;; -70715;1;0;false;false;;;;;; -70716;10;0;false;false;63;95;191;;; -70726;1;0;false;false;;;;;; -70727;5;0;false;false;63;95;191;;; -70732;1;0;false;false;;;;;; -70733;2;0;false;false;63;95;191;;; -70735;1;0;false;false;;;;;; -70736;3;0;false;false;63;95;191;;; -70739;1;0;false;false;;;;;; -70740;3;0;false;false;63;95;191;;; -70743;1;0;false;false;;;;;; -70744;8;0;false;false;63;95;191;;; -70752;1;0;false;false;;;;;; -70753;3;0;false;false;63;95;191;;; -70756;1;0;false;false;;;;;; -70757;6;0;false;false;63;95;191;;; -70763;3;0;false;false;;;;;; -70766;1;0;false;false;63;95;191;;; -70767;1;0;false;false;;;;;; -70768;7;1;false;false;127;159;191;;; -70775;10;0;false;false;63;95;191;;; -70785;1;0;false;false;;;;;; -70786;6;0;false;false;63;95;191;;; -70792;1;0;false;false;;;;;; -70793;6;0;false;false;63;95;191;;; -70799;1;0;false;false;;;;;; -70800;4;0;false;false;63;95;191;;; -70804;1;0;false;false;;;;;; -70805;10;0;false;false;63;95;191;;; -70815;3;0;false;false;;;;;; -70818;2;0;false;false;63;95;191;;; -70820;2;0;false;false;;;;;; -70822;4;1;false;false;127;0;85;;; -70826;1;0;false;false;;;;;; -70827;14;0;false;false;0;0;0;;; -70841;1;0;false;false;;;;;; -70842;3;0;false;false;0;0;0;;; -70845;1;0;false;false;;;;;; -70846;5;0;false;false;0;0;0;;; -70851;1;0;false;false;;;;;; -70852;11;0;false;false;0;0;0;;; -70863;1;0;false;false;;;;;; -70864;9;0;false;false;0;0;0;;; -70873;1;0;false;false;;;;;; -70874;11;0;false;false;0;0;0;;; -70885;1;0;false;false;;;;;; -70886;3;1;false;false;127;0;85;;; -70889;1;0;false;false;;;;;; -70890;2;0;false;false;0;0;0;;; -70892;1;0;false;false;;;;;; -70893;1;0;false;false;0;0;0;;; -70894;3;0;false;false;;;;;; -70897;32;0;false;false;63;127;95;;; -70929;1;0;false;false;;;;;; -70930;29;0;false;false;0;0;0;;; -70959;3;0;false;false;;;;;; -70962;2;1;false;false;127;0;85;;; -70964;1;0;false;false;;;;;; -70965;10;0;false;false;0;0;0;;; -70975;1;0;false;false;;;;;; -70976;1;0;false;false;0;0;0;;; -70977;1;0;false;false;;;;;; -70978;2;0;false;false;0;0;0;;; -70980;1;0;false;false;;;;;; -70981;1;0;false;false;0;0;0;;; -70982;4;0;false;false;;;;;; -70986;19;0;false;false;0;0;0;;; -71005;1;0;false;false;;;;;; -71006;3;0;false;false;0;0;0;;; -71009;1;0;false;false;;;;;; -71010;17;0;false;false;0;0;0;;; -71027;1;0;false;false;;;;;; -71028;11;0;false;false;0;0;0;;; -71039;3;0;false;false;;;;;; -71042;1;0;false;false;0;0;0;;; -71043;3;0;false;false;;;;;; -71046;2;1;false;false;127;0;85;;; -71048;1;0;false;false;;;;;; -71049;13;0;false;false;0;0;0;;; -71062;1;0;false;false;;;;;; -71063;1;0;false;false;0;0;0;;; -71064;1;0;false;false;;;;;; -71065;2;0;false;false;0;0;0;;; -71067;1;0;false;false;;;;;; -71068;1;0;false;false;0;0;0;;; -71069;4;0;false;false;;;;;; -71073;19;0;false;false;0;0;0;;; -71092;1;0;false;false;;;;;; -71093;17;0;false;false;0;0;0;;; -71110;1;0;false;false;;;;;; -71111;1;0;false;false;0;0;0;;; -71112;1;0;false;false;;;;;; -71113;12;0;false;false;0;0;0;;; -71125;1;0;false;false;;;;;; -71126;1;0;false;false;0;0;0;;; -71127;1;0;false;false;;;;;; -71128;2;0;false;false;0;0;0;;; -71130;1;0;false;false;;;;;; -71131;17;0;false;false;0;0;0;;; -71148;1;0;false;false;;;;;; -71149;14;0;false;false;0;0;0;;; -71163;3;0;false;false;;;;;; -71166;1;0;false;false;0;0;0;;; -71167;3;0;false;false;;;;;; -71170;2;1;false;false;127;0;85;;; -71172;1;0;false;false;;;;;; -71173;11;0;false;false;0;0;0;;; -71184;1;0;false;false;;;;;; -71185;1;0;false;false;0;0;0;;; -71186;1;0;false;false;;;;;; -71187;2;0;false;false;0;0;0;;; -71189;1;0;false;false;;;;;; -71190;1;0;false;false;0;0;0;;; -71191;4;0;false;false;;;;;; -71195;19;0;false;false;0;0;0;;; -71214;1;0;false;false;;;;;; -71215;3;0;false;false;0;0;0;;; -71218;1;0;false;false;;;;;; -71219;11;0;false;false;0;0;0;;; -71230;1;0;false;false;;;;;; -71231;19;0;false;false;0;0;0;;; -71250;3;0;false;false;;;;;; -71253;1;0;false;false;0;0;0;;; -71254;3;0;false;false;;;;;; -71257;2;1;false;false;127;0;85;;; -71259;1;0;false;false;;;;;; -71260;12;0;false;false;0;0;0;;; -71272;1;0;false;false;;;;;; -71273;1;0;false;false;0;0;0;;; -71274;1;0;false;false;;;;;; -71275;2;0;false;false;0;0;0;;; -71277;1;0;false;false;;;;;; -71278;1;0;false;false;0;0;0;;; -71279;4;0;false;false;;;;;; -71283;33;0;false;false;0;0;0;;; -71316;1;0;false;false;;;;;; -71317;1;0;false;false;0;0;0;;; -71318;1;0;false;false;;;;;; -71319;12;0;false;false;0;0;0;;; -71331;1;0;false;false;;;;;; -71332;3;0;false;false;0;0;0;;; -71335;1;0;false;false;;;;;; -71336;12;0;false;false;0;0;0;;; -71348;1;0;false;false;;;;;; -71349;19;0;false;false;0;0;0;;; -71368;3;0;false;false;;;;;; -71371;1;0;false;false;0;0;0;;; -71372;2;0;false;false;;;;;; -71374;1;0;false;false;0;0;0;;; -71375;2;0;false;false;;;;;; -71377;3;0;false;false;63;95;191;;; -71380;3;0;false;false;;;;;; -71383;1;0;false;false;63;95;191;;; -71384;1;0;false;false;;;;;; -71385;7;0;false;false;63;95;191;;; -71392;1;0;false;false;;;;;; -71393;3;0;false;false;63;95;191;;; -71396;1;0;false;false;;;;;; -71397;6;0;false;false;63;95;191;;; -71403;1;0;false;false;;;;;; -71404;10;0;false;false;63;95;191;;; -71414;3;0;false;false;;;;;; -71417;1;0;false;false;63;95;191;;; -71418;1;0;false;false;;;;;; -71419;3;0;false;false;127;127;159;;; -71422;3;0;false;false;;;;;; -71425;1;0;false;false;63;95;191;;; -71426;3;0;false;false;;;;;; -71429;1;0;false;false;63;95;191;;; -71430;1;0;false;false;;;;;; -71431;7;1;false;false;127;159;191;;; -71438;9;0;false;false;63;95;191;;; -71447;1;0;false;false;;;;;; -71448;1;0;false;false;63;95;191;;; -71449;1;0;false;false;;;;;; -71450;9;0;false;false;63;95;191;;; -71459;1;0;false;false;;;;;; -71460;5;0;false;false;63;95;191;;; -71465;1;0;false;false;;;;;; -71466;2;0;false;false;63;95;191;;; -71468;1;0;false;false;;;;;; -71469;4;0;false;false;63;95;191;;; -71473;1;0;false;false;;;;;; -71474;4;0;false;false;63;95;191;;; -71478;1;0;false;false;;;;;; -71479;3;0;false;false;63;95;191;;; -71482;1;0;false;false;;;;;; -71483;2;0;false;false;63;95;191;;; -71485;1;0;false;false;;;;;; -71486;4;0;false;false;63;95;191;;; -71490;1;0;false;false;;;;;; -71491;3;0;false;false;63;95;191;;; -71494;1;0;false;false;;;;;; -71495;4;0;false;false;63;95;191;;; -71499;1;0;false;false;;;;;; -71500;3;0;false;false;63;95;191;;; -71503;1;0;false;false;;;;;; -71504;9;0;false;false;63;95;191;;; -71513;1;0;false;false;;;;;; -71514;2;0;false;false;63;95;191;;; -71516;1;0;false;false;;;;;; -71517;8;0;false;false;63;95;191;;; -71525;1;0;false;false;;;;;; -71526;6;0;false;false;63;95;191;;; -71532;3;0;false;false;;;;;; -71535;2;0;false;false;63;95;191;;; -71537;2;0;false;false;;;;;; -71539;4;1;false;false;127;0;85;;; -71543;1;0;false;false;;;;;; -71544;15;0;false;false;0;0;0;;; -71559;7;1;false;false;127;0;85;;; -71566;1;0;false;false;;;;;; -71567;10;0;false;false;0;0;0;;; -71577;1;0;false;false;;;;;; -71578;1;0;false;false;0;0;0;;; -71579;3;0;false;false;;;;;; -71582;3;1;false;false;127;0;85;;; -71585;1;0;false;false;;;;;; -71586;14;0;false;false;0;0;0;;; -71600;1;0;false;false;;;;;; -71601;1;0;false;false;0;0;0;;; -71602;1;0;false;false;;;;;; -71603;12;0;false;false;0;0;0;;; -71615;3;0;false;false;;;;;; -71618;3;1;false;false;127;0;85;;; -71621;1;0;false;false;;;;;; -71622;12;0;false;false;0;0;0;;; -71634;1;0;false;false;;;;;; -71635;1;0;false;false;0;0;0;;; -71636;1;0;false;false;;;;;; -71637;12;0;false;false;0;0;0;;; -71649;3;0;false;false;;;;;; -71652;3;1;false;false;127;0;85;;; -71655;1;0;false;false;;;;;; -71656;6;0;false;false;0;0;0;;; -71662;1;0;false;false;;;;;; -71663;1;0;false;false;0;0;0;;; -71664;1;0;false;false;;;;;; -71665;23;0;false;false;0;0;0;;; -71688;6;0;false;false;;;;;; -71694;17;0;false;false;0;0;0;;; -71711;3;0;false;false;;;;;; -71714;33;0;false;false;63;127;95;;; -71747;1;0;false;false;;;;;; -71748;2;1;false;false;127;0;85;;; -71750;1;0;false;false;;;;;; -71751;13;0;false;false;0;0;0;;; -71764;1;0;false;false;;;;;; -71765;1;0;false;false;0;0;0;;; -71766;1;0;false;false;;;;;; -71767;14;0;false;false;0;0;0;;; -71781;1;0;false;false;;;;;; -71782;1;0;false;false;0;0;0;;; -71783;1;0;false;false;;;;;; -71784;2;0;false;false;0;0;0;;; -71786;1;0;false;false;;;;;; -71787;1;0;false;false;0;0;0;;; -71788;4;0;false;false;;;;;; -71792;64;0;false;false;63;127;95;;; -71856;2;0;false;false;;;;;; -71858;47;0;false;false;63;127;95;;; -71905;2;0;false;false;;;;;; -71907;3;1;false;false;127;0;85;;; -71910;1;0;false;false;;;;;; -71911;11;0;false;false;0;0;0;;; -71922;1;0;false;false;;;;;; -71923;1;0;false;false;0;0;0;;; -71924;1;0;false;false;;;;;; -71925;24;0;false;false;0;0;0;;; -71949;1;0;false;false;;;;;; -71950;8;0;false;false;0;0;0;;; -71958;4;0;false;false;;;;;; -71962;3;1;false;false;127;0;85;;; -71965;1;0;false;false;;;;;; -71966;9;0;false;false;0;0;0;;; -71975;1;0;false;false;;;;;; -71976;1;0;false;false;0;0;0;;; -71977;1;0;false;false;;;;;; -71978;22;0;false;false;0;0;0;;; -72000;1;0;false;false;;;;;; -72001;8;0;false;false;0;0;0;;; -72009;4;0;false;false;;;;;; -72013;2;1;false;false;127;0;85;;; -72015;1;0;false;false;;;;;; -72016;10;0;false;false;0;0;0;;; -72026;1;0;false;false;;;;;; -72027;1;0;false;false;0;0;0;;; -72028;1;0;false;false;;;;;; -72029;11;0;false;false;0;0;0;;; -72040;1;0;false;false;;;;;; -72041;1;0;false;false;0;0;0;;; -72042;1;0;false;false;;;;;; -72043;2;0;false;false;0;0;0;;; -72045;1;0;false;false;;;;;; -72046;1;0;false;false;0;0;0;;; -72047;5;0;false;false;;;;;; -72052;32;0;false;false;0;0;0;;; -72084;1;0;false;false;;;;;; -72085;9;0;false;false;0;0;0;;; -72094;1;0;false;false;;;;;; -72095;1;0;false;false;0;0;0;;; -72096;1;0;false;false;;;;;; -72097;12;0;false;false;0;0;0;;; -72109;1;0;false;false;;;;;; -72110;4;1;false;false;127;0;85;;; -72114;2;0;false;false;0;0;0;;; -72116;4;0;false;false;;;;;; -72120;1;0;false;false;0;0;0;;; -72121;4;0;false;false;;;;;; -72125;2;1;false;false;127;0;85;;; -72127;1;0;false;false;;;;;; -72128;11;0;false;false;0;0;0;;; -72139;1;0;false;false;;;;;; -72140;1;0;false;false;0;0;0;;; -72141;5;0;false;false;;;;;; -72146;21;0;false;false;0;0;0;;; -72167;4;0;false;false;;;;;; -72171;1;0;false;false;0;0;0;;; -72172;3;0;false;false;;;;;; -72175;1;0;false;false;0;0;0;;; -72176;2;0;false;false;;;;;; -72178;1;0;false;false;0;0;0;;; -72179;2;0;false;false;;;;;; -72181;6;1;false;false;127;0;85;;; -72187;1;0;false;false;;;;;; -72188;5;0;false;false;0;0;0;;; -72193;1;0;false;false;;;;;; -72194;11;0;false;false;0;0;0;;; -72205;1;0;false;false;;;;;; -72206;1;0;false;false;0;0;0;;; -72207;3;1;false;false;127;0;85;;; -72210;1;0;false;false;;;;;; -72211;6;0;false;false;0;0;0;;; -72217;1;0;false;false;;;;;; -72218;3;1;false;false;127;0;85;;; -72221;1;0;false;false;;;;;; -72222;6;0;false;false;0;0;0;;; -72228;1;0;false;false;;;;;; -72229;7;1;false;false;127;0;85;;; -72236;1;0;false;false;;;;;; -72237;8;0;false;false;0;0;0;;; -72245;1;0;false;false;;;;;; -72246;1;0;false;false;0;0;0;;; -72247;3;0;false;false;;;;;; -72250;14;0;false;false;0;0;0;;; -72264;3;0;false;false;;;;;; -72267;3;1;false;false;127;0;85;;; -72270;1;0;false;false;;;;;; -72271;6;0;false;false;0;0;0;;; -72277;1;0;false;false;;;;;; -72278;6;0;false;false;0;0;0;;; -72284;1;0;false;false;;;;;; -72285;7;0;false;false;0;0;0;;; -72292;3;0;false;false;;;;;; -72295;7;1;false;false;127;0;85;;; -72302;1;0;false;false;;;;;; -72303;10;0;false;false;0;0;0;;; -72313;1;0;false;false;;;;;; -72314;1;0;false;false;0;0;0;;; -72315;1;0;false;false;;;;;; -72316;11;0;false;false;0;0;0;;; -72327;1;0;false;false;;;;;; -72328;1;0;false;false;0;0;0;;; -72329;1;0;false;false;;;;;; -72330;11;0;false;false;0;0;0;;; -72341;1;0;false;false;;;;;; -72342;2;0;false;false;0;0;0;;; -72344;1;0;false;false;;;;;; -72345;2;0;false;false;0;0;0;;; -72347;6;0;false;false;;;;;; -72353;2;1;false;false;127;0;85;;; -72355;1;0;false;false;;;;;; -72356;12;0;false;false;0;0;0;;; -72368;1;0;false;false;;;;;; -72369;1;0;false;false;0;0;0;;; -72370;4;0;false;false;;;;;; -72374;5;0;false;false;0;0;0;;; -72379;1;0;false;false;;;;;; -72380;1;0;false;false;0;0;0;;; -72381;1;0;false;false;;;;;; -72382;2;0;false;false;0;0;0;;; -72384;3;0;false;false;;;;;; -72387;1;0;false;false;0;0;0;;; -72388;1;0;false;false;;;;;; -72389;4;1;false;false;127;0;85;;; -72393;1;0;false;false;;;;;; -72394;1;0;false;false;0;0;0;;; -72395;4;0;false;false;;;;;; -72399;5;0;false;false;0;0;0;;; -72404;1;0;false;false;;;;;; -72405;1;0;false;false;0;0;0;;; -72406;1;0;false;false;;;;;; -72407;23;0;false;false;0;0;0;;; -72430;3;0;false;false;;;;;; -72433;1;0;false;false;0;0;0;;; -72434;3;0;false;false;;;;;; -72437;2;1;false;false;127;0;85;;; -72439;1;0;false;false;;;;;; -72440;6;0;false;false;0;0;0;;; -72446;1;0;false;false;;;;;; -72447;2;0;false;false;0;0;0;;; -72449;1;0;false;false;;;;;; -72450;12;0;false;false;0;0;0;;; -72462;1;0;false;false;;;;;; -72463;1;0;false;false;0;0;0;;; -72464;4;0;false;false;;;;;; -72468;5;0;false;false;0;0;0;;; -72473;1;0;false;false;;;;;; -72474;1;0;false;false;0;0;0;;; -72475;1;0;false;false;;;;;; -72476;6;0;false;false;0;0;0;;; -72482;3;0;false;false;;;;;; -72485;1;0;false;false;0;0;0;;; -72486;4;0;false;false;;;;;; -72490;4;1;false;false;127;0;85;;; -72494;1;0;false;false;;;;;; -72495;1;0;false;false;0;0;0;;; -72496;4;0;false;false;;;;;; -72500;5;0;false;false;0;0;0;;; -72505;1;0;false;false;;;;;; -72506;1;0;false;false;0;0;0;;; -72507;1;0;false;false;;;;;; -72508;14;0;false;false;0;0;0;;; -72522;3;0;false;false;;;;;; -72525;1;0;false;false;0;0;0;;; -72526;3;0;false;false;;;;;; -72529;2;1;false;false;127;0;85;;; -72531;1;0;false;false;;;;;; -72532;6;0;false;false;0;0;0;;; -72538;1;0;false;false;;;;;; -72539;2;0;false;false;0;0;0;;; -72541;1;0;false;false;;;;;; -72542;12;0;false;false;0;0;0;;; -72554;1;0;false;false;;;;;; -72555;1;0;false;false;0;0;0;;; -72556;4;0;false;false;;;;;; -72560;9;0;false;false;0;0;0;;; -72569;1;0;false;false;;;;;; -72570;16;0;false;false;0;0;0;;; -72586;1;0;false;false;;;;;; -72587;1;0;false;false;0;0;0;;; -72588;1;0;false;false;;;;;; -72589;10;0;false;false;0;0;0;;; -72599;4;0;false;false;;;;;; -72603;2;1;false;false;127;0;85;;; -72605;1;0;false;false;;;;;; -72606;10;0;false;false;0;0;0;;; -72616;1;0;false;false;;;;;; -72617;1;0;false;false;0;0;0;;; -72618;5;0;false;false;;;;;; -72623;73;0;false;false;63;127;95;;; -72696;3;0;false;false;;;;;; -72699;54;0;false;false;63;127;95;;; -72753;3;0;false;false;;;;;; -72756;16;0;false;false;0;0;0;;; -72772;1;0;false;false;;;;;; -72773;1;0;false;false;0;0;0;;; -72774;1;0;false;false;;;;;; -72775;3;1;false;false;127;0;85;;; -72778;1;0;false;false;;;;;; -72779;18;0;false;false;0;0;0;;; -72797;4;1;false;false;127;0;85;;; -72801;1;0;false;false;0;0;0;;; -72802;1;0;false;false;;;;;; -72803;16;0;false;false;0;0;0;;; -72819;5;0;false;false;;;;;; -72824;2;1;false;false;127;0;85;;; -72826;1;0;false;false;;;;;; -72827;13;0;false;false;0;0;0;;; -72840;1;0;false;false;;;;;; -72841;1;0;false;false;0;0;0;;; -72842;6;0;false;false;;;;;; -72848;5;0;false;false;0;0;0;;; -72853;1;0;false;false;;;;;; -72854;1;0;false;false;0;0;0;;; -72855;1;0;false;false;;;;;; -72856;30;0;false;false;0;0;0;;; -72886;5;0;false;false;;;;;; -72891;1;0;false;false;0;0;0;;; -72892;4;0;false;false;;;;;; -72896;1;0;false;false;0;0;0;;; -72897;4;0;false;false;;;;;; -72901;51;0;false;false;63;127;95;;; -72952;2;0;false;false;;;;;; -72954;51;0;false;false;63;127;95;;; -73005;2;0;false;false;;;;;; -73007;28;0;false;false;63;127;95;;; -73035;2;0;false;false;;;;;; -73037;3;1;false;false;127;0;85;;; -73040;1;0;false;false;;;;;; -73041;12;0;false;false;0;0;0;;; -73053;1;0;false;false;;;;;; -73054;1;0;false;false;0;0;0;;; -73055;1;0;false;false;;;;;; -73056;8;0;false;false;0;0;0;;; -73064;1;0;false;false;;;;;; -73065;7;0;false;false;0;0;0;;; -73072;1;0;false;false;;;;;; -73073;31;0;false;false;0;0;0;;; -73104;1;0;false;false;;;;;; -73105;1;0;false;false;0;0;0;;; -73106;1;0;false;false;;;;;; -73107;12;0;false;false;0;0;0;;; -73119;4;0;false;false;;;;;; -73123;29;0;false;false;0;0;0;;; -73152;1;0;false;false;;;;;; -73153;14;0;false;false;0;0;0;;; -73167;4;0;false;false;;;;;; -73171;5;0;false;false;0;0;0;;; -73176;1;0;false;false;;;;;; -73177;1;0;false;false;0;0;0;;; -73178;1;0;false;false;;;;;; -73179;27;0;false;false;0;0;0;;; -73206;1;0;false;false;;;;;; -73207;1;0;false;false;0;0;0;;; -73208;1;0;false;false;;;;;; -73209;10;0;false;false;0;0;0;;; -73219;1;0;false;false;;;;;; -73220;1;0;false;false;0;0;0;;; -73221;1;0;false;false;;;;;; -73222;12;0;false;false;0;0;0;;; -73234;3;0;false;false;;;;;; -73237;1;0;false;false;0;0;0;;; -73238;3;0;false;false;;;;;; -73241;4;1;false;false;127;0;85;;; -73245;3;0;false;false;;;;;; -73248;2;1;false;false;127;0;85;;; -73250;1;0;false;false;;;;;; -73251;9;0;false;false;0;0;0;;; -73260;1;0;false;false;;;;;; -73261;2;0;false;false;0;0;0;;; -73263;1;0;false;false;;;;;; -73264;12;0;false;false;0;0;0;;; -73276;1;0;false;false;;;;;; -73277;1;0;false;false;0;0;0;;; -73278;4;0;false;false;;;;;; -73282;55;0;false;false;63;127;95;;; -73337;2;0;false;false;;;;;; -73339;46;0;false;false;63;127;95;;; -73385;2;0;false;false;;;;;; -73387;14;0;false;false;0;0;0;;; -73401;1;0;false;false;;;;;; -73402;14;0;false;false;0;0;0;;; -73416;1;0;false;false;;;;;; -73417;1;0;false;false;0;0;0;;; -73418;1;0;false;false;;;;;; -73419;3;1;false;false;127;0;85;;; -73422;1;0;false;false;;;;;; -73423;24;0;false;false;0;0;0;;; -73447;1;0;false;false;;;;;; -73448;16;0;false;false;0;0;0;;; -73464;4;0;false;false;;;;;; -73468;32;0;false;false;0;0;0;;; -73500;4;0;false;false;;;;;; -73504;5;0;false;false;0;0;0;;; -73509;1;0;false;false;;;;;; -73510;1;0;false;false;0;0;0;;; -73511;1;0;false;false;;;;;; -73512;30;0;false;false;0;0;0;;; -73542;3;0;false;false;;;;;; -73545;1;0;false;false;0;0;0;;; -73546;3;0;false;false;;;;;; -73549;2;1;false;false;127;0;85;;; -73551;1;0;false;false;;;;;; -73552;6;0;false;false;0;0;0;;; -73558;1;0;false;false;;;;;; -73559;2;0;false;false;0;0;0;;; -73561;1;0;false;false;;;;;; -73562;12;0;false;false;0;0;0;;; -73574;1;0;false;false;;;;;; -73575;1;0;false;false;0;0;0;;; -73576;4;0;false;false;;;;;; -73580;6;0;false;false;0;0;0;;; -73586;1;0;false;false;;;;;; -73587;1;0;false;false;0;0;0;;; -73588;1;0;false;false;;;;;; -73589;6;0;false;false;0;0;0;;; -73595;3;0;false;false;;;;;; -73598;1;0;false;false;0;0;0;;; -73599;4;0;false;false;;;;;; -73603;4;1;false;false;127;0;85;;; -73607;1;0;false;false;;;;;; -73608;1;0;false;false;0;0;0;;; -73609;4;0;false;false;;;;;; -73613;6;0;false;false;0;0;0;;; -73619;1;0;false;false;;;;;; -73620;1;0;false;false;0;0;0;;; -73621;1;0;false;false;;;;;; -73622;5;0;false;false;0;0;0;;; -73627;1;0;false;false;;;;;; -73628;1;0;false;false;0;0;0;;; -73629;1;0;false;false;;;;;; -73630;10;0;false;false;0;0;0;;; -73640;1;0;false;false;;;;;; -73641;1;0;false;false;0;0;0;;; -73642;1;0;false;false;;;;;; -73643;9;0;false;false;0;0;0;;; -73652;1;0;false;false;;;;;; -73653;1;0;false;false;0;0;0;;; -73654;1;0;false;false;;;;;; -73655;13;0;false;false;0;0;0;;; -73668;3;0;false;false;;;;;; -73671;1;0;false;false;0;0;0;;; -73672;3;0;false;false;;;;;; -73675;46;0;false;false;63;127;95;;; -73721;1;0;false;false;;;;;; -73722;2;1;false;false;127;0;85;;; -73724;1;0;false;false;;;;;; -73725;6;0;false;false;0;0;0;;; -73731;1;0;false;false;;;;;; -73732;2;0;false;false;0;0;0;;; -73734;1;0;false;false;;;;;; -73735;2;0;false;false;0;0;0;;; -73737;1;0;false;false;;;;;; -73738;1;0;false;false;0;0;0;;; -73739;4;0;false;false;;;;;; -73743;5;0;false;false;0;0;0;;; -73748;1;0;false;false;;;;;; -73749;1;0;false;false;0;0;0;;; -73750;1;0;false;false;;;;;; -73751;14;0;false;false;0;0;0;;; -73765;3;0;false;false;;;;;; -73768;1;0;false;false;0;0;0;;; -73769;3;0;false;false;;;;;; -73772;2;1;false;false;127;0;85;;; -73774;1;0;false;false;;;;;; -73775;7;0;false;false;0;0;0;;; -73782;1;0;false;false;;;;;; -73783;2;0;false;false;0;0;0;;; -73785;1;0;false;false;;;;;; -73786;2;0;false;false;0;0;0;;; -73788;1;0;false;false;;;;;; -73789;1;0;false;false;0;0;0;;; -73790;4;0;false;false;;;;;; -73794;2;1;false;false;127;0;85;;; -73796;1;0;false;false;;;;;; -73797;12;0;false;false;0;0;0;;; -73809;1;0;false;false;;;;;; -73810;1;0;false;false;0;0;0;;; -73811;5;0;false;false;;;;;; -73816;6;0;false;false;0;0;0;;; -73822;1;0;false;false;;;;;; -73823;1;0;false;false;0;0;0;;; -73824;1;0;false;false;;;;;; -73825;11;0;false;false;0;0;0;;; -73836;4;0;false;false;;;;;; -73840;1;0;false;false;0;0;0;;; -73841;4;0;false;false;;;;;; -73845;4;1;false;false;127;0;85;;; -73849;1;0;false;false;;;;;; -73850;1;0;false;false;0;0;0;;; -73851;5;0;false;false;;;;;; -73856;6;0;false;false;0;0;0;;; -73862;1;0;false;false;;;;;; -73863;1;0;false;false;0;0;0;;; -73864;1;0;false;false;;;;;; -73865;15;0;false;false;0;0;0;;; -73880;4;0;false;false;;;;;; -73884;1;0;false;false;0;0;0;;; -73885;3;0;false;false;;;;;; -73888;1;0;false;false;0;0;0;;; -73889;3;0;false;false;;;;;; -73892;9;0;false;false;0;0;0;;; -73901;1;0;false;false;;;;;; -73902;4;0;false;false;0;0;0;;; -73906;1;0;false;false;;;;;; -73907;1;0;false;false;0;0;0;;; -73908;1;0;false;false;;;;;; -73909;14;0;false;false;0;0;0;;; -73923;1;0;false;false;;;;;; -73924;2;0;false;false;0;0;0;;; -73926;1;0;false;false;;;;;; -73927;6;0;false;false;0;0;0;;; -73933;1;0;false;false;;;;;; -73934;8;0;false;false;0;0;0;;; -73942;3;0;false;false;;;;;; -73945;6;1;false;false;127;0;85;;; -73951;1;0;false;false;;;;;; -73952;3;1;false;false;127;0;85;;; -73955;1;0;false;false;;;;;; -73956;5;0;false;false;0;0;0;;; -73961;1;0;false;false;;;;;; -73962;12;0;false;false;0;0;0;;; -73974;1;0;false;false;;;;;; -73975;13;0;false;false;0;0;0;;; -73988;2;0;false;false;;;;;; -73990;1;0;false;false;0;0;0;;; -73991;2;0;false;false;;;;;; -73993;3;0;false;false;63;95;191;;; -73996;3;0;false;false;;;;;; -73999;1;0;false;false;63;95;191;;; -74000;1;0;false;false;;;;;; -74001;6;0;false;false;63;95;191;;; -74007;1;0;false;false;;;;;; -74008;3;0;false;false;63;95;191;;; -74011;1;0;false;false;;;;;; -74012;8;0;false;false;63;95;191;;; -74020;1;0;false;false;;;;;; -74021;4;0;false;false;63;95;191;;; -74025;1;0;false;false;;;;;; -74026;2;0;false;false;63;95;191;;; -74028;1;0;false;false;;;;;; -74029;3;0;false;false;63;95;191;;; -74032;1;0;false;false;;;;;; -74033;6;0;false;false;127;127;159;;; -74039;13;0;false;false;63;95;191;;; -74052;7;0;false;false;127;127;159;;; -74059;1;0;false;false;;;;;; -74060;10;0;false;false;63;95;191;;; -74070;3;0;false;false;;;;;; -74073;1;0;false;false;63;95;191;;; -74074;1;0;false;false;;;;;; -74075;3;0;false;false;63;95;191;;; -74078;1;0;false;false;;;;;; -74079;4;0;false;false;63;95;191;;; -74083;1;0;false;false;;;;;; -74084;4;0;false;false;63;95;191;;; -74088;1;0;false;false;;;;;; -74089;2;0;false;false;63;95;191;;; -74091;1;0;false;false;;;;;; -74092;3;0;false;false;63;95;191;;; -74095;1;0;false;false;;;;;; -74096;2;0;false;false;63;95;191;;; -74098;1;0;false;false;;;;;; -74099;3;0;false;false;63;95;191;;; -74102;1;0;false;false;;;;;; -74103;9;0;false;false;63;95;191;;; -74112;1;0;false;false;;;;;; -74113;2;0;false;false;63;95;191;;; -74115;1;0;false;false;;;;;; -74116;5;0;false;false;63;95;191;;; -74121;1;0;false;false;;;;;; -74122;4;0;false;false;63;95;191;;; -74126;1;0;false;false;;;;;; -74127;6;0;false;false;63;95;191;;; -74133;1;0;false;false;;;;;; -74134;3;0;false;false;63;95;191;;; -74137;1;0;false;false;;;;;; -74138;3;0;false;false;63;95;191;;; -74141;1;0;false;false;;;;;; -74142;7;0;false;false;63;95;191;;; -74149;3;0;false;false;;;;;; -74152;1;0;false;false;63;95;191;;; -74153;1;0;false;false;;;;;; -74154;3;0;false;false;63;95;191;;; -74157;1;0;false;false;;;;;; -74158;6;0;false;false;127;127;159;;; -74164;13;0;false;false;63;95;191;;; -74177;7;0;false;false;127;127;159;;; -74184;1;0;false;false;;;;;; -74185;9;0;false;false;63;95;191;;; -74194;1;0;false;false;;;;;; -74195;2;0;false;false;63;95;191;;; -74197;1;0;false;false;;;;;; -74198;4;0;false;false;63;95;191;;; -74202;1;0;false;false;;;;;; -74203;3;0;false;false;63;95;191;;; -74206;1;0;false;false;;;;;; -74207;4;0;false;false;63;95;191;;; -74211;1;0;false;false;;;;;; -74212;4;0;false;false;63;95;191;;; -74216;1;0;false;false;;;;;; -74217;2;0;false;false;63;95;191;;; -74219;3;0;false;false;;;;;; -74222;1;0;false;false;63;95;191;;; -74223;2;0;false;false;;;;;; -74225;11;0;false;false;63;95;191;;; -74236;1;0;false;false;;;;;; -74237;2;0;false;false;63;95;191;;; -74239;1;0;false;false;;;;;; -74240;8;0;false;false;63;95;191;;; -74248;1;0;false;false;;;;;; -74249;11;0;false;false;63;95;191;;; -74260;1;0;false;false;;;;;; -74261;5;0;false;false;63;95;191;;; -74266;1;0;false;false;;;;;; -74267;2;0;false;false;63;95;191;;; -74269;1;0;false;false;;;;;; -74270;14;0;false;false;63;95;191;;; -74284;1;0;false;false;;;;;; -74285;2;0;false;false;63;95;191;;; -74287;4;0;false;false;;;;;; -74291;1;0;false;false;63;95;191;;; -74292;2;0;false;false;;;;;; -74294;2;0;false;false;63;95;191;;; -74296;1;0;false;false;;;;;; -74297;4;0;false;false;63;95;191;;; -74301;1;0;false;false;;;;;; -74302;7;0;false;false;63;95;191;;; -74309;3;0;false;false;;;;;; -74312;1;0;false;false;63;95;191;;; -74313;4;0;false;false;;;;;; -74317;1;0;false;false;63;95;191;;; -74318;1;0;false;false;;;;;; -74319;3;0;false;false;127;127;159;;; -74322;3;0;false;false;;;;;; -74325;1;0;false;false;63;95;191;;; -74326;3;0;false;false;;;;;; -74329;1;0;false;false;63;95;191;;; -74330;1;0;false;false;;;;;; -74331;11;1;false;false;127;159;191;;; -74342;12;0;false;false;63;95;191;;; -74354;1;0;false;false;;;;;; -74355;4;0;false;false;127;127;159;;; -74359;3;0;false;false;;;;;; -74362;1;0;false;false;63;95;191;;; -74363;4;0;false;false;;;;;; -74367;4;0;false;false;127;127;159;;; -74371;21;0;false;false;63;95;191;;; -74392;1;0;false;false;;;;;; -74393;1;0;false;false;127;127;159;;; -74394;1;0;false;false;;;;;; -74395;2;0;false;false;63;95;191;;; -74397;1;0;false;false;;;;;; -74398;3;0;false;false;63;95;191;;; -74401;1;0;false;false;;;;;; -74402;8;0;false;false;63;95;191;;; -74410;1;0;false;false;;;;;; -74411;3;0;false;false;63;95;191;;; -74414;1;0;false;false;;;;;; -74415;4;0;false;false;63;95;191;;; -74419;1;0;false;false;;;;;; -74420;8;0;false;false;63;95;191;;; -74428;5;0;false;false;127;127;159;;; -74433;3;0;false;false;;;;;; -74436;1;0;false;false;63;95;191;;; -74437;4;0;false;false;;;;;; -74441;4;0;false;false;127;127;159;;; -74445;27;0;false;false;63;95;191;;; -74472;1;0;false;false;;;;;; -74473;1;0;false;false;127;127;159;;; -74474;1;0;false;false;;;;;; -74475;2;0;false;false;63;95;191;;; -74477;1;0;false;false;;;;;; -74478;3;0;false;false;63;95;191;;; -74481;1;0;false;false;;;;;; -74482;6;0;false;false;63;95;191;;; -74488;1;0;false;false;;;;;; -74489;4;0;false;false;63;95;191;;; -74493;1;0;false;false;;;;;; -74494;3;0;false;false;63;95;191;;; -74497;1;0;false;false;;;;;; -74498;6;0;false;false;63;95;191;;; -74504;1;0;false;false;;;;;; -74505;4;0;false;false;63;95;191;;; -74509;1;0;false;false;;;;;; -74510;7;0;false;false;63;95;191;;; -74517;1;0;false;false;;;;;; -74518;3;0;false;false;63;95;191;;; -74521;1;0;false;false;;;;;; -74522;8;0;false;false;63;95;191;;; -74530;5;0;false;false;127;127;159;;; -74535;3;0;false;false;;;;;; -74538;1;0;false;false;63;95;191;;; -74539;1;0;false;false;;;;;; -74540;5;0;false;false;127;127;159;;; -74545;3;0;false;false;;;;;; -74548;2;0;false;false;63;95;191;;; -74550;2;0;false;false;;;;;; -74552;6;1;false;false;127;0;85;;; -74558;1;0;false;false;;;;;; -74559;4;1;false;false;127;0;85;;; -74563;1;0;false;false;;;;;; -74564;6;0;false;false;0;0;0;;; -74570;1;0;false;false;;;;;; -74571;1;0;false;false;0;0;0;;; -74572;3;0;false;false;;;;;; -74575;14;0;false;false;0;0;0;;; -74589;3;0;false;false;;;;;; -74592;20;0;false;false;0;0;0;;; -74612;2;0;false;false;;;;;; -74614;1;0;false;false;0;0;0;;; -74615;4;0;false;false;;;;;; -74619;3;0;false;false;63;95;191;;; -74622;3;0;false;false;;;;;; -74625;1;0;false;false;63;95;191;;; -74626;1;0;false;false;;;;;; -74627;6;0;false;false;63;95;191;;; -74633;1;0;false;false;;;;;; -74634;3;0;false;false;63;95;191;;; -74637;1;0;false;false;;;;;; -74638;8;0;false;false;63;95;191;;; -74646;1;0;false;false;;;;;; -74647;4;0;false;false;63;95;191;;; -74651;1;0;false;false;;;;;; -74652;2;0;false;false;63;95;191;;; -74654;1;0;false;false;;;;;; -74655;3;0;false;false;63;95;191;;; -74658;1;0;false;false;;;;;; -74659;9;0;false;false;63;95;191;;; -74668;1;0;false;false;;;;;; -74669;10;0;false;false;63;95;191;;; -74679;2;0;false;false;;;;;; -74681;3;0;false;false;63;95;191;;; -74684;1;0;false;false;;;;;; -74685;4;0;false;false;63;95;191;;; -74689;1;0;false;false;;;;;; -74690;4;0;false;false;63;95;191;;; -74694;1;0;false;false;;;;;; -74695;2;0;false;false;63;95;191;;; -74697;1;0;false;false;;;;;; -74698;3;0;false;false;63;95;191;;; -74701;1;0;false;false;;;;;; -74702;2;0;false;false;63;95;191;;; -74704;1;0;false;false;;;;;; -74705;3;0;false;false;63;95;191;;; -74708;4;0;false;false;;;;;; -74712;1;0;false;false;63;95;191;;; -74713;1;0;false;false;;;;;; -74714;9;0;false;false;63;95;191;;; -74723;1;0;false;false;;;;;; -74724;2;0;false;false;63;95;191;;; -74726;1;0;false;false;;;;;; -74727;5;0;false;false;63;95;191;;; -74732;1;0;false;false;;;;;; -74733;4;0;false;false;63;95;191;;; -74737;1;0;false;false;;;;;; -74738;6;0;false;false;63;95;191;;; -74744;1;0;false;false;;;;;; -74745;3;0;false;false;63;95;191;;; -74748;1;0;false;false;;;;;; -74749;3;0;false;false;63;95;191;;; -74752;1;0;false;false;;;;;; -74753;7;0;false;false;63;95;191;;; -74760;3;0;false;false;;;;;; -74763;1;0;false;false;63;95;191;;; -74764;4;0;false;false;;;;;; -74768;1;0;false;false;63;95;191;;; -74769;1;0;false;false;;;;;; -74770;3;0;false;false;127;127;159;;; -74773;3;0;false;false;63;95;191;;; -74776;1;0;false;false;;;;;; -74777;13;0;false;false;63;95;191;;; -74790;1;0;false;false;;;;;; -74791;2;0;false;false;63;95;191;;; -74793;2;0;false;false;;;;;; -74795;3;0;false;false;63;95;191;;; -74798;1;0;false;false;;;;;; -74799;2;0;false;false;63;95;191;;; -74801;1;0;false;false;;;;;; -74802;3;0;false;false;63;95;191;;; -74805;1;0;false;false;;;;;; -74806;9;0;false;false;63;95;191;;; -74815;1;0;false;false;;;;;; -74816;9;0;false;false;63;95;191;;; -74825;1;0;false;false;;;;;; -74826;7;0;false;false;63;95;191;;; -74833;1;0;false;false;;;;;; -74834;2;0;false;false;63;95;191;;; -74836;1;0;false;false;;;;;; -74837;5;0;false;false;63;95;191;;; -74842;4;0;false;false;;;;;; -74846;1;0;false;false;63;95;191;;; -74847;1;0;false;false;;;;;; -74848;6;0;false;false;127;127;159;;; -74854;3;0;false;false;63;95;191;;; -74857;7;0;false;false;127;127;159;;; -74864;1;0;false;false;63;95;191;;; -74865;2;0;false;false;;;;;; -74867;3;0;false;false;63;95;191;;; -74870;1;0;false;false;;;;;; -74871;6;0;false;false;127;127;159;;; -74877;13;0;false;false;63;95;191;;; -74890;7;0;false;false;127;127;159;;; -74897;2;0;false;false;;;;;; -74899;9;0;false;false;63;95;191;;; -74908;1;0;false;false;;;;;; -74909;2;0;false;false;63;95;191;;; -74911;4;0;false;false;;;;;; -74915;1;0;false;false;63;95;191;;; -74916;1;0;false;false;;;;;; -74917;4;0;false;false;63;95;191;;; -74921;1;0;false;false;;;;;; -74922;3;0;false;false;63;95;191;;; -74925;1;0;false;false;;;;;; -74926;4;0;false;false;63;95;191;;; -74930;1;0;false;false;;;;;; -74931;4;0;false;false;63;95;191;;; -74935;1;0;false;false;;;;;; -74936;2;0;false;false;63;95;191;;; -74938;1;0;false;false;;;;;; -74939;11;0;false;false;63;95;191;;; -74950;1;0;false;false;;;;;; -74951;2;0;false;false;63;95;191;;; -74953;1;0;false;false;;;;;; -74954;8;0;false;false;63;95;191;;; -74962;1;0;false;false;;;;;; -74963;11;0;false;false;63;95;191;;; -74974;1;0;false;false;;;;;; -74975;5;0;false;false;63;95;191;;; -74980;1;0;false;false;;;;;; -74981;2;0;false;false;63;95;191;;; -74983;1;0;false;false;;;;;; -74984;14;0;false;false;63;95;191;;; -74998;4;0;false;false;;;;;; -75002;1;0;false;false;63;95;191;;; -75003;1;0;false;false;;;;;; -75004;2;0;false;false;63;95;191;;; -75006;1;0;false;false;;;;;; -75007;2;0;false;false;63;95;191;;; -75009;1;0;false;false;;;;;; -75010;4;0;false;false;63;95;191;;; -75014;1;0;false;false;;;;;; -75015;7;0;false;false;63;95;191;;; -75022;2;0;false;false;;;;;; -75024;3;0;false;false;63;95;191;;; -75027;1;0;false;false;;;;;; -75028;6;0;false;false;127;127;159;;; -75034;23;0;false;false;63;95;191;;; -75057;7;0;false;false;127;127;159;;; -75064;4;0;false;false;;;;;; -75068;1;0;false;false;63;95;191;;; -75069;1;0;false;false;;;;;; -75070;9;0;false;false;63;95;191;;; -75079;1;0;false;false;;;;;; -75080;2;0;false;false;63;95;191;;; -75082;1;0;false;false;;;;;; -75083;4;0;false;false;63;95;191;;; -75087;1;0;false;false;;;;;; -75088;3;0;false;false;63;95;191;;; -75091;1;0;false;false;;;;;; -75092;4;0;false;false;63;95;191;;; -75096;1;0;false;false;;;;;; -75097;4;0;false;false;63;95;191;;; -75101;1;0;false;false;;;;;; -75102;2;0;false;false;63;95;191;;; -75104;1;0;false;false;;;;;; -75105;11;0;false;false;63;95;191;;; -75116;1;0;false;false;;;;;; -75117;2;0;false;false;63;95;191;;; -75119;1;0;false;false;;;;;; -75120;9;0;false;false;63;95;191;;; -75129;1;0;false;false;;;;;; -75130;4;0;false;false;63;95;191;;; -75134;1;0;false;false;;;;;; -75135;3;0;false;false;63;95;191;;; -75138;1;0;false;false;;;;;; -75139;7;0;false;false;63;95;191;;; -75146;4;0;false;false;;;;;; -75150;1;0;false;false;63;95;191;;; -75151;1;0;false;false;;;;;; -75152;4;0;false;false;63;95;191;;; -75156;1;0;false;false;;;;;; -75157;3;0;false;false;63;95;191;;; -75160;1;0;false;false;;;;;; -75161;6;0;false;false;63;95;191;;; -75167;1;0;false;false;;;;;; -75168;5;0;false;false;63;95;191;;; -75173;1;0;false;false;;;;;; -75174;7;0;false;false;63;95;191;;; -75181;4;0;false;false;127;127;159;;; -75185;3;0;false;false;;;;;; -75188;1;0;false;false;63;95;191;;; -75189;4;0;false;false;;;;;; -75193;1;0;false;false;63;95;191;;; -75194;1;0;false;false;;;;;; -75195;7;1;false;false;127;159;191;;; -75202;13;0;false;false;63;95;191;;; -75215;1;0;false;false;;;;;; -75216;9;0;false;false;63;95;191;;; -75225;1;0;false;false;;;;;; -75226;3;0;false;false;63;95;191;;; -75229;1;0;false;false;;;;;; -75230;4;0;false;false;63;95;191;;; -75234;1;0;false;false;;;;;; -75235;2;0;false;false;63;95;191;;; -75237;1;0;false;false;;;;;; -75238;9;0;false;false;63;95;191;;; -75247;3;0;false;false;;;;;; -75250;1;0;false;false;63;95;191;;; -75251;3;0;false;false;;;;;; -75254;1;0;false;false;63;95;191;;; -75255;1;0;false;false;;;;;; -75256;11;1;false;false;127;159;191;;; -75267;12;0;false;false;63;95;191;;; -75279;1;0;false;false;;;;;; -75280;4;0;false;false;127;127;159;;; -75284;3;0;false;false;;;;;; -75287;1;0;false;false;63;95;191;;; -75288;4;0;false;false;;;;;; -75292;4;0;false;false;127;127;159;;; -75296;21;0;false;false;63;95;191;;; -75317;1;0;false;false;;;;;; -75318;1;0;false;false;127;127;159;;; -75319;1;0;false;false;;;;;; -75320;2;0;false;false;63;95;191;;; -75322;1;0;false;false;;;;;; -75323;3;0;false;false;63;95;191;;; -75326;1;0;false;false;;;;;; -75327;8;0;false;false;63;95;191;;; -75335;1;0;false;false;;;;;; -75336;3;0;false;false;63;95;191;;; -75339;1;0;false;false;;;;;; -75340;4;0;false;false;63;95;191;;; -75344;1;0;false;false;;;;;; -75345;8;0;false;false;63;95;191;;; -75353;5;0;false;false;127;127;159;;; -75358;3;0;false;false;;;;;; -75361;1;0;false;false;63;95;191;;; -75362;4;0;false;false;;;;;; -75366;4;0;false;false;127;127;159;;; -75370;27;0;false;false;63;95;191;;; -75397;1;0;false;false;;;;;; -75398;1;0;false;false;127;127;159;;; -75399;1;0;false;false;;;;;; -75400;2;0;false;false;63;95;191;;; -75402;1;0;false;false;;;;;; -75403;3;0;false;false;63;95;191;;; -75406;1;0;false;false;;;;;; -75407;6;0;false;false;63;95;191;;; -75413;1;0;false;false;;;;;; -75414;4;0;false;false;63;95;191;;; -75418;1;0;false;false;;;;;; -75419;3;0;false;false;63;95;191;;; -75422;1;0;false;false;;;;;; -75423;6;0;false;false;63;95;191;;; -75429;1;0;false;false;;;;;; -75430;4;0;false;false;63;95;191;;; -75434;1;0;false;false;;;;;; -75435;7;0;false;false;63;95;191;;; -75442;1;0;false;false;;;;;; -75443;3;0;false;false;63;95;191;;; -75446;1;0;false;false;;;;;; -75447;8;0;false;false;63;95;191;;; -75455;5;0;false;false;127;127;159;;; -75460;3;0;false;false;;;;;; -75463;1;0;false;false;63;95;191;;; -75464;1;0;false;false;;;;;; -75465;5;0;false;false;127;127;159;;; -75470;3;0;false;false;;;;;; -75473;1;0;false;false;63;95;191;;; -75474;4;0;false;false;;;;;; -75478;1;0;false;false;63;95;191;;; -75479;1;0;false;false;;;;;; -75480;7;1;false;false;127;159;191;;; -75487;3;0;false;false;63;95;191;;; -75490;3;0;false;false;;;;;; -75493;2;0;false;false;63;95;191;;; -75495;2;0;false;false;;;;;; -75497;6;1;false;false;127;0;85;;; -75503;1;0;false;false;;;;;; -75504;4;1;false;false;127;0;85;;; -75508;1;0;false;false;;;;;; -75509;5;0;false;false;0;0;0;;; -75514;3;1;false;false;127;0;85;;; -75517;1;0;false;false;;;;;; -75518;14;0;false;false;0;0;0;;; -75532;1;0;false;false;;;;;; -75533;1;0;false;false;0;0;0;;; -75534;3;0;false;false;;;;;; -75537;14;0;false;false;0;0;0;;; -75551;3;0;false;false;;;;;; -75554;2;1;false;false;127;0;85;;; -75556;1;0;false;false;;;;;; -75557;14;0;false;false;0;0;0;;; -75571;1;0;false;false;;;;;; -75572;2;0;false;false;0;0;0;;; -75574;1;0;false;false;;;;;; -75575;13;0;false;false;0;0;0;;; -75588;1;0;false;false;;;;;; -75589;2;0;false;false;0;0;0;;; -75591;6;0;false;false;;;;;; -75597;13;0;false;false;0;0;0;;; -75610;1;0;false;false;;;;;; -75611;2;0;false;false;0;0;0;;; -75613;1;0;false;false;;;;;; -75614;24;0;false;false;0;0;0;;; -75638;1;0;false;false;;;;;; -75639;6;1;false;false;127;0;85;;; -75645;1;0;false;false;0;0;0;;; -75646;3;0;false;false;;;;;; -75649;3;1;false;false;127;0;85;;; -75652;1;0;false;false;;;;;; -75653;6;0;false;false;0;0;0;;; -75659;1;0;false;false;;;;;; -75660;1;0;false;false;0;0;0;;; -75661;1;0;false;false;;;;;; -75662;11;0;false;false;0;0;0;;; -75673;1;0;false;false;;;;;; -75674;1;0;false;false;0;0;0;;; -75675;1;0;false;false;;;;;; -75676;12;0;false;false;0;0;0;;; -75688;3;0;false;false;;;;;; -75691;2;1;false;false;127;0;85;;; -75693;1;0;false;false;;;;;; -75694;7;0;false;false;0;0;0;;; -75701;1;0;false;false;;;;;; -75702;1;0;false;false;0;0;0;;; -75703;1;0;false;false;;;;;; -75704;2;0;false;false;0;0;0;;; -75706;1;0;false;false;;;;;; -75707;1;0;false;false;0;0;0;;; -75708;4;0;false;false;;;;;; -75712;3;1;false;false;127;0;85;;; -75715;1;0;false;false;;;;;; -75716;1;0;false;false;0;0;0;;; -75717;5;0;false;false;;;;;; -75722;32;0;false;false;0;0;0;;; -75754;1;0;false;false;;;;;; -75755;7;0;false;false;0;0;0;;; -75762;1;0;false;false;;;;;; -75763;15;0;false;false;0;0;0;;; -75778;4;0;false;false;;;;;; -75782;1;0;false;false;0;0;0;;; -75783;4;0;false;false;;;;;; -75787;5;1;false;false;127;0;85;;; -75792;1;0;false;false;;;;;; -75793;9;0;false;false;0;0;0;;; -75802;1;0;false;false;;;;;; -75803;6;0;false;false;0;0;0;;; -75809;1;0;false;false;;;;;; -75810;1;0;false;false;0;0;0;;; -75811;5;0;false;false;;;;;; -75816;69;0;false;false;63;127;95;;; -75885;3;0;false;false;;;;;; -75888;64;0;false;false;63;127;95;;; -75952;3;0;false;false;;;;;; -75955;18;0;false;false;63;127;95;;; -75973;3;0;false;false;;;;;; -75976;47;0;false;false;63;127;95;;; -76023;3;0;false;false;;;;;; -76026;2;1;false;false;127;0;85;;; -76028;1;0;false;false;;;;;; -76029;11;0;false;false;0;0;0;;; -76040;1;0;false;false;;;;;; -76041;2;0;false;false;0;0;0;;; -76043;1;0;false;false;;;;;; -76044;31;0;false;false;0;0;0;;; -76075;1;0;false;false;;;;;; -76076;1;0;false;false;0;0;0;;; -76077;6;0;false;false;;;;;; -76083;5;1;false;false;127;0;85;;; -76088;1;0;false;false;;;;;; -76089;6;0;false;false;0;0;0;;; -76095;5;0;false;false;;;;;; -76100;1;0;false;false;0;0;0;;; -76101;4;0;false;false;;;;;; -76105;1;0;false;false;0;0;0;;; -76106;3;0;false;false;;;;;; -76109;1;0;false;false;0;0;0;;; -76110;2;0;false;false;;;;;; -76112;1;0;false;false;0;0;0;;; -76113;2;0;false;false;;;;;; -76115;3;0;false;false;63;95;191;;; -76118;3;0;false;false;;;;;; -76121;1;0;false;false;63;95;191;;; -76122;1;0;false;false;;;;;; -76123;7;0;false;false;63;95;191;;; -76130;1;0;false;false;;;;;; -76131;1;0;false;false;63;95;191;;; -76132;1;0;false;false;;;;;; -76133;6;0;false;false;63;95;191;;; -76139;1;0;false;false;;;;;; -76140;4;0;false;false;63;95;191;;; -76144;1;0;false;false;;;;;; -76145;4;0;false;false;63;95;191;;; -76149;1;0;false;false;;;;;; -76150;4;0;false;false;63;95;191;;; -76154;1;0;false;false;;;;;; -76155;3;0;false;false;63;95;191;;; -76158;1;0;false;false;;;;;; -76159;4;0;false;false;63;95;191;;; -76163;1;0;false;false;;;;;; -76164;9;0;false;false;63;95;191;;; -76173;1;0;false;false;;;;;; -76174;9;0;false;false;63;95;191;;; -76183;1;0;false;false;;;;;; -76184;2;0;false;false;63;95;191;;; -76186;1;0;false;false;;;;;; -76187;3;0;false;false;63;95;191;;; -76190;4;0;false;false;;;;;; -76194;1;0;false;false;63;95;191;;; -76195;1;0;false;false;;;;;; -76196;17;0;false;false;63;95;191;;; -76213;1;0;false;false;;;;;; -76214;15;0;false;false;63;95;191;;; -76229;3;0;false;false;;;;;; -76232;1;0;false;false;63;95;191;;; -76233;1;0;false;false;;;;;; -76234;7;0;false;false;63;95;191;;; -76241;1;0;false;false;;;;;; -76242;4;0;false;false;63;95;191;;; -76246;1;0;false;false;;;;;; -76247;3;0;false;false;63;95;191;;; -76250;1;0;false;false;;;;;; -76251;5;0;false;false;63;95;191;;; -76256;1;0;false;false;;;;;; -76257;4;0;false;false;63;95;191;;; -76261;1;0;false;false;;;;;; -76262;2;0;false;false;63;95;191;;; -76264;1;0;false;false;;;;;; -76265;3;0;false;false;63;95;191;;; -76268;1;0;false;false;;;;;; -76269;6;0;false;false;63;95;191;;; -76275;1;0;false;false;;;;;; -76276;3;0;false;false;63;95;191;;; -76279;1;0;false;false;;;;;; -76280;3;0;false;false;63;95;191;;; -76283;1;0;false;false;;;;;; -76284;10;0;false;false;63;95;191;;; -76294;1;0;false;false;;;;;; -76295;6;0;false;false;63;95;191;;; -76301;3;0;false;false;;;;;; -76304;1;0;false;false;63;95;191;;; -76305;1;0;false;false;;;;;; -76306;3;0;false;false;127;127;159;;; -76309;3;0;false;false;;;;;; -76312;1;0;false;false;63;95;191;;; -76313;3;0;false;false;;;;;; -76316;1;0;false;false;63;95;191;;; -76317;1;0;false;false;;;;;; -76318;7;1;false;false;127;159;191;;; -76325;4;0;false;false;63;95;191;;; -76329;1;0;false;false;;;;;; -76330;3;0;false;false;63;95;191;;; -76333;1;0;false;false;;;;;; -76334;4;0;false;false;63;95;191;;; -76338;1;0;false;false;;;;;; -76339;4;0;false;false;63;95;191;;; -76343;1;0;false;false;;;;;; -76344;3;0;false;false;63;95;191;;; -76347;1;0;false;false;;;;;; -76348;4;0;false;false;63;95;191;;; -76352;1;0;false;false;;;;;; -76353;4;0;false;false;63;95;191;;; -76357;1;0;false;false;;;;;; -76358;10;0;false;false;63;95;191;;; -76368;1;0;false;false;;;;;; -76369;4;0;false;false;63;95;191;;; -76373;1;0;false;false;;;;;; -76374;5;0;false;false;63;95;191;;; -76379;4;0;false;false;;;;;; -76383;1;0;false;false;63;95;191;;; -76384;2;0;false;false;;;;;; -76386;5;0;false;false;63;95;191;;; -76391;1;0;false;false;;;;;; -76392;3;0;false;false;63;95;191;;; -76395;1;0;false;false;;;;;; -76396;5;0;false;false;63;95;191;;; -76401;1;0;false;false;;;;;; -76402;4;0;false;false;63;95;191;;; -76406;1;0;false;false;;;;;; -76407;10;0;false;false;63;95;191;;; -76417;1;0;false;false;;;;;; -76418;8;0;false;false;63;95;191;;; -76426;1;0;false;false;;;;;; -76427;4;0;false;false;63;95;191;;; -76431;1;0;false;false;;;;;; -76432;10;0;false;false;63;95;191;;; -76442;4;0;false;false;;;;;; -76446;1;0;false;false;63;95;191;;; -76447;2;0;false;false;;;;;; -76449;3;0;false;false;63;95;191;;; -76452;1;0;false;false;;;;;; -76453;2;0;false;false;63;95;191;;; -76455;1;0;false;false;;;;;; -76456;7;0;false;false;63;95;191;;; -76463;1;0;false;false;;;;;; -76464;2;0;false;false;63;95;191;;; -76466;1;0;false;false;;;;;; -76467;7;0;false;false;63;95;191;;; -76474;1;0;false;false;;;;;; -76475;5;0;false;false;63;95;191;;; -76480;1;0;false;false;;;;;; -76481;8;0;false;false;63;95;191;;; -76489;3;0;false;false;;;;;; -76492;1;0;false;false;63;95;191;;; -76493;1;0;false;false;;;;;; -76494;8;1;false;false;127;159;191;;; -76502;3;0;false;false;63;95;191;;; -76505;1;0;false;false;;;;;; -76506;9;0;false;false;63;95;191;;; -76515;1;0;false;false;;;;;; -76516;4;0;false;false;63;95;191;;; -76520;1;0;false;false;;;;;; -76521;4;0;false;false;63;95;191;;; -76525;1;0;false;false;;;;;; -76526;4;0;false;false;63;95;191;;; -76530;1;0;false;false;;;;;; -76531;4;0;false;false;63;95;191;;; -76535;1;0;false;false;;;;;; -76536;3;0;false;false;63;95;191;;; -76539;1;0;false;false;;;;;; -76540;4;0;false;false;63;95;191;;; -76544;1;0;false;false;;;;;; -76545;9;0;false;false;63;95;191;;; -76554;4;0;false;false;;;;;; -76558;1;0;false;false;63;95;191;;; -76559;2;0;false;false;;;;;; -76561;9;0;false;false;63;95;191;;; -76570;1;0;false;false;;;;;; -76571;2;0;false;false;63;95;191;;; -76573;1;0;false;false;;;;;; -76574;3;0;false;false;63;95;191;;; -76577;1;0;false;false;;;;;; -76578;6;0;false;false;63;95;191;;; -76584;1;0;false;false;;;;;; -76585;7;0;false;false;63;95;191;;; -76592;1;0;false;false;;;;;; -76593;4;0;false;false;63;95;191;;; -76597;1;0;false;false;;;;;; -76598;3;0;false;false;63;95;191;;; -76601;1;0;false;false;;;;;; -76602;5;0;false;false;63;95;191;;; -76607;1;0;false;false;;;;;; -76608;4;0;false;false;63;95;191;;; -76612;1;0;false;false;;;;;; -76613;2;0;false;false;63;95;191;;; -76615;1;0;false;false;;;;;; -76616;3;0;false;false;63;95;191;;; -76619;1;0;false;false;;;;;; -76620;6;0;false;false;63;95;191;;; -76626;4;0;false;false;;;;;; -76630;1;0;false;false;63;95;191;;; -76631;2;0;false;false;;;;;; -76633;3;0;false;false;63;95;191;;; -76636;1;0;false;false;;;;;; -76637;3;0;false;false;63;95;191;;; -76640;1;0;false;false;;;;;; -76641;10;0;false;false;63;95;191;;; -76651;1;0;false;false;;;;;; -76652;6;0;false;false;63;95;191;;; -76658;3;0;false;false;;;;;; -76661;2;0;false;false;63;95;191;;; -76663;2;0;false;false;;;;;; -76665;6;0;false;false;0;0;0;;; -76671;1;0;false;false;;;;;; -76672;28;0;false;false;0;0;0;;; -76700;1;0;false;false;;;;;; -76701;5;0;false;false;0;0;0;;; -76706;1;0;false;false;;;;;; -76707;1;0;false;false;0;0;0;;; -76708;3;0;false;false;;;;;; -76711;12;0;false;false;0;0;0;;; -76723;1;0;false;false;;;;;; -76724;14;0;false;false;0;0;0;;; -76738;3;0;false;false;;;;;; -76741;6;0;false;false;0;0;0;;; -76747;1;0;false;false;;;;;; -76748;9;0;false;false;0;0;0;;; -76757;1;0;false;false;;;;;; -76758;1;0;false;false;0;0;0;;; -76759;1;0;false;false;;;;;; -76760;19;0;false;false;0;0;0;;; -76779;3;0;false;false;;;;;; -76782;3;1;false;false;127;0;85;;; -76785;1;0;false;false;;;;;; -76786;6;0;false;false;0;0;0;;; -76792;1;0;false;false;;;;;; -76793;1;0;false;false;0;0;0;;; -76794;1;0;false;false;;;;;; -76795;14;0;false;false;0;0;0;;; -76809;4;0;false;false;;;;;; -76813;3;1;false;false;127;0;85;;; -76816;1;0;false;false;;;;;; -76817;7;0;false;false;0;0;0;;; -76824;1;0;false;false;;;;;; -76825;1;0;false;false;0;0;0;;; -76826;1;0;false;false;;;;;; -76827;2;0;false;false;0;0;0;;; -76829;3;0;false;false;;;;;; -76832;3;1;false;false;127;0;85;;; -76835;1;0;false;false;;;;;; -76836;7;0;false;false;0;0;0;;; -76843;1;0;false;false;;;;;; -76844;1;0;false;false;0;0;0;;; -76845;1;0;false;false;;;;;; -76846;2;0;false;false;0;0;0;;; -76848;3;0;false;false;;;;;; -76851;3;1;false;false;127;0;85;;; -76854;1;0;false;false;;;;;; -76855;1;0;false;false;0;0;0;;; -76856;1;0;false;false;;;;;; -76857;1;0;false;false;0;0;0;;; -76858;1;0;false;false;;;;;; -76859;2;0;false;false;0;0;0;;; -76861;6;0;false;false;;;;;; -76867;2;1;false;false;127;0;85;;; -76869;1;0;false;false;;;;;; -76870;7;0;false;false;0;0;0;;; -76877;1;0;false;false;;;;;; -76878;2;0;false;false;0;0;0;;; -76880;1;0;false;false;;;;;; -76881;2;0;false;false;0;0;0;;; -76883;1;0;false;false;;;;;; -76884;1;0;false;false;0;0;0;;; -76885;4;0;false;false;;;;;; -76889;6;1;false;false;127;0;85;;; -76895;1;0;false;false;;;;;; -76896;5;0;false;false;0;0;0;;; -76901;3;0;false;false;;;;;; -76904;1;0;false;false;0;0;0;;; -76905;3;0;false;false;;;;;; -76908;13;0;false;false;0;0;0;;; -76921;1;0;false;false;;;;;; -76922;1;0;false;false;0;0;0;;; -76923;1;0;false;false;;;;;; -76924;3;1;false;false;127;0;85;;; -76927;1;0;false;false;;;;;; -76928;21;0;false;false;0;0;0;;; -76949;3;0;false;false;;;;;; -76952;5;1;false;false;127;0;85;;; -76957;1;0;false;false;;;;;; -76958;2;0;false;false;0;0;0;;; -76960;1;0;false;false;;;;;; -76961;1;0;false;false;0;0;0;;; -76962;1;0;false;false;;;;;; -76963;7;0;false;false;0;0;0;;; -76970;1;0;false;false;;;;;; -76971;1;0;false;false;0;0;0;;; -76972;4;0;false;false;;;;;; -76976;2;1;false;false;127;0;85;;; -76978;1;0;false;false;;;;;; -76979;8;0;false;false;0;0;0;;; -76987;1;0;false;false;;;;;; -76988;2;0;false;false;0;0;0;;; -76990;1;0;false;false;;;;;; -76991;3;0;false;false;0;0;0;;; -76994;1;0;false;false;;;;;; -76995;1;0;false;false;0;0;0;;; -76996;5;0;false;false;;;;;; -77001;7;0;false;false;0;0;0;;; -77008;1;0;false;false;;;;;; -77009;1;0;false;false;0;0;0;;; -77010;1;0;false;false;;;;;; -77011;20;0;false;false;0;0;0;;; -77031;1;0;false;false;;;;;; -77032;3;0;false;false;0;0;0;;; -77035;4;0;false;false;;;;;; -77039;1;0;false;false;0;0;0;;; -77040;4;0;false;false;;;;;; -77044;2;1;false;false;127;0;85;;; -77046;1;0;false;false;;;;;; -77047;8;0;false;false;0;0;0;;; -77055;1;0;false;false;;;;;; -77056;2;0;false;false;0;0;0;;; -77058;1;0;false;false;;;;;; -77059;3;0;false;false;0;0;0;;; -77062;1;0;false;false;;;;;; -77063;1;0;false;false;0;0;0;;; -77064;5;0;false;false;;;;;; -77069;7;0;false;false;0;0;0;;; -77076;1;0;false;false;;;;;; -77077;1;0;false;false;0;0;0;;; -77078;1;0;false;false;;;;;; -77079;20;0;false;false;0;0;0;;; -77099;1;0;false;false;;;;;; -77100;3;0;false;false;0;0;0;;; -77103;4;0;false;false;;;;;; -77107;1;0;false;false;0;0;0;;; -77108;4;0;false;false;;;;;; -77112;2;1;false;false;127;0;85;;; -77114;1;0;false;false;;;;;; -77115;8;0;false;false;0;0;0;;; -77123;1;0;false;false;;;;;; -77124;2;0;false;false;0;0;0;;; -77126;1;0;false;false;;;;;; -77127;2;0;false;false;0;0;0;;; -77129;1;0;false;false;;;;;; -77130;2;0;false;false;0;0;0;;; -77132;1;0;false;false;;;;;; -77133;7;0;false;false;0;0;0;;; -77140;1;0;false;false;;;;;; -77141;2;0;false;false;0;0;0;;; -77143;1;0;false;false;;;;;; -77144;3;0;false;false;0;0;0;;; -77147;1;0;false;false;;;;;; -77148;1;0;false;false;0;0;0;;; -77149;1;0;false;false;;;;;; -77150;25;0;false;false;63;127;95;;; -77175;3;0;false;false;;;;;; -77178;5;1;false;false;127;0;85;;; -77183;1;0;false;false;0;0;0;;; -77184;4;0;false;false;;;;;; -77188;1;0;false;false;0;0;0;;; -77189;4;0;false;false;;;;;; -77193;4;1;false;false;127;0;85;;; -77197;9;0;false;false;;;;;; -77206;42;0;false;false;63;127;95;;; -77248;2;0;false;false;;;;;; -77250;2;1;false;false;127;0;85;;; -77252;1;0;false;false;;;;;; -77253;9;0;false;false;0;0;0;;; -77262;1;0;false;false;;;;;; -77263;1;0;false;false;0;0;0;;; -77264;1;0;false;false;;;;;; -77265;7;0;false;false;0;0;0;;; -77272;1;0;false;false;;;;;; -77273;2;0;false;false;0;0;0;;; -77275;1;0;false;false;;;;;; -77276;7;0;false;false;0;0;0;;; -77283;1;0;false;false;;;;;; -77284;2;0;false;false;0;0;0;;; -77286;1;0;false;false;;;;;; -77287;3;0;false;false;0;0;0;;; -77290;1;0;false;false;;;;;; -77291;2;0;false;false;0;0;0;;; -77293;1;0;false;false;;;;;; -77294;7;0;false;false;0;0;0;;; -77301;1;0;false;false;;;;;; -77302;2;0;false;false;0;0;0;;; -77304;1;0;false;false;;;;;; -77305;3;0;false;false;0;0;0;;; -77308;1;0;false;false;;;;;; -77309;1;0;false;false;0;0;0;;; -77310;6;0;false;false;;;;;; -77316;38;0;false;false;0;0;0;;; -77354;1;0;false;false;;;;;; -77355;10;0;false;false;0;0;0;;; -77365;5;0;false;false;;;;;; -77370;2;1;false;false;127;0;85;;; -77372;1;0;false;false;;;;;; -77373;8;0;false;false;0;0;0;;; -77381;1;0;false;false;;;;;; -77382;2;0;false;false;0;0;0;;; -77384;1;0;false;false;;;;;; -77385;7;0;false;false;0;0;0;;; -77392;1;0;false;false;;;;;; -77393;1;0;false;false;0;0;0;;; -77394;1;0;false;false;;;;;; -77395;2;0;false;false;0;0;0;;; -77397;1;0;false;false;;;;;; -77398;1;0;false;false;0;0;0;;; -77399;2;0;false;false;;;;;; -77401;23;0;false;false;63;127;95;;; -77424;4;0;false;false;;;;;; -77428;1;0;false;false;0;0;0;;; -77429;1;0;false;false;;;;;; -77430;1;0;false;false;0;0;0;;; -77431;1;0;false;false;;;;;; -77432;7;0;false;false;0;0;0;;; -77439;1;0;false;false;;;;;; -77440;1;0;false;false;0;0;0;;; -77441;1;0;false;false;;;;;; -77442;2;0;false;false;0;0;0;;; -77444;5;0;false;false;;;;;; -77449;1;0;false;false;0;0;0;;; -77450;5;0;false;false;;;;;; -77455;4;1;false;false;127;0;85;;; -77459;1;0;false;false;;;;;; -77460;1;0;false;false;0;0;0;;; -77461;6;0;false;false;;;;;; -77467;1;0;false;false;0;0;0;;; -77468;1;0;false;false;;;;;; -77469;1;0;false;false;0;0;0;;; -77470;1;0;false;false;;;;;; -77471;7;0;false;false;0;0;0;;; -77478;1;0;false;false;;;;;; -77479;1;0;false;false;0;0;0;;; -77480;1;0;false;false;;;;;; -77481;2;0;false;false;0;0;0;;; -77483;5;0;false;false;;;;;; -77488;1;0;false;false;0;0;0;;; -77489;4;0;false;false;;;;;; -77493;1;0;false;false;0;0;0;;; -77494;4;0;false;false;;;;;; -77498;4;1;false;false;127;0;85;;; -77502;1;0;false;false;;;;;; -77503;1;0;false;false;0;0;0;;; -77504;9;0;false;false;;;;;; -77513;25;0;false;false;63;127;95;;; -77538;3;0;false;false;;;;;; -77541;38;0;false;false;0;0;0;;; -77579;1;0;false;false;;;;;; -77580;10;0;false;false;0;0;0;;; -77590;5;0;false;false;;;;;; -77595;1;0;false;false;0;0;0;;; -77596;1;0;false;false;;;;;; -77597;1;0;false;false;0;0;0;;; -77598;1;0;false;false;;;;;; -77599;7;0;false;false;0;0;0;;; -77606;1;0;false;false;;;;;; -77607;1;0;false;false;0;0;0;;; -77608;1;0;false;false;;;;;; -77609;2;0;false;false;0;0;0;;; -77611;4;0;false;false;;;;;; -77615;1;0;false;false;0;0;0;;; -77616;4;0;false;false;;;;;; -77620;2;1;false;false;127;0;85;;; -77622;1;0;false;false;;;;;; -77623;16;0;false;false;0;0;0;;; -77639;1;0;false;false;;;;;; -77640;1;0;false;false;0;0;0;;; -77641;5;0;false;false;;;;;; -77646;5;1;false;false;127;0;85;;; -77651;1;0;false;false;0;0;0;;; -77652;4;0;false;false;;;;;; -77656;1;0;false;false;0;0;0;;; -77657;4;0;false;false;;;;;; -77661;32;0;false;false;0;0;0;;; -77693;3;0;false;false;;;;;; -77696;1;0;false;false;0;0;0;;; -77697;3;0;false;false;;;;;; -77700;69;0;false;false;63;127;95;;; -77769;1;0;false;false;;;;;; -77770;58;0;false;false;63;127;95;;; -77828;1;0;false;false;;;;;; -77829;2;1;false;false;127;0;85;;; -77831;1;0;false;false;;;;;; -77832;2;0;false;false;0;0;0;;; -77834;1;0;false;false;;;;;; -77835;1;0;false;false;0;0;0;;; -77836;1;0;false;false;;;;;; -77837;6;0;false;false;0;0;0;;; -77843;1;0;false;false;;;;;; -77844;2;0;false;false;0;0;0;;; -77846;1;0;false;false;;;;;; -77847;16;0;false;false;0;0;0;;; -77863;1;0;false;false;;;;;; -77864;2;0;false;false;0;0;0;;; -77866;1;0;false;false;;;;;; -77867;22;0;false;false;0;0;0;;; -77889;1;0;false;false;;;;;; -77890;2;0;false;false;0;0;0;;; -77892;1;0;false;false;;;;;; -77893;3;0;false;false;0;0;0;;; -77896;1;0;false;false;;;;;; -77897;1;0;false;false;0;0;0;;; -77898;4;0;false;false;;;;;; -77902;40;0;false;false;0;0;0;;; -77942;3;0;false;false;;;;;; -77945;1;0;false;false;0;0;0;;; -77946;3;0;false;false;;;;;; -77949;6;1;false;false;127;0;85;;; -77955;1;0;false;false;;;;;; -77956;25;0;false;false;0;0;0;;; -77981;2;0;false;false;;;;;; -77983;1;0;false;false;0;0;0;;; -77984;2;0;false;false;;;;;; -77986;3;0;false;false;63;95;191;;; -77989;3;0;false;false;;;;;; -77992;1;0;false;false;63;95;191;;; -77993;1;0;false;false;;;;;; -77994;7;0;false;false;63;95;191;;; -78001;1;0;false;false;;;;;; -78002;7;0;false;false;63;95;191;;; -78009;1;0;false;false;;;;;; -78010;3;0;false;false;63;95;191;;; -78013;1;0;false;false;;;;;; -78014;9;0;false;false;63;95;191;;; -78023;3;0;false;false;;;;;; -78026;2;0;false;false;63;95;191;;; -78028;2;0;false;false;;;;;; -78030;4;1;false;false;127;0;85;;; -78034;1;0;false;false;;;;;; -78035;19;0;false;false;0;0;0;;; -78054;1;0;false;false;;;;;; -78055;1;0;false;false;0;0;0;;; -78056;3;0;false;false;;;;;; -78059;3;1;false;false;127;0;85;;; -78062;1;0;false;false;;;;;; -78063;7;0;false;false;0;0;0;;; -78070;1;0;false;false;;;;;; -78071;1;0;false;false;0;0;0;;; -78072;1;0;false;false;;;;;; -78073;12;0;false;false;0;0;0;;; -78085;1;0;false;false;;;;;; -78086;1;0;false;false;0;0;0;;; -78087;1;0;false;false;;;;;; -78088;14;0;false;false;0;0;0;;; -78102;1;0;false;false;;;;;; -78103;1;0;false;false;0;0;0;;; -78104;1;0;false;false;;;;;; -78105;16;0;false;false;0;0;0;;; -78121;3;0;false;false;;;;;; -78124;3;1;false;false;127;0;85;;; -78127;1;0;false;false;;;;;; -78128;11;0;false;false;0;0;0;;; -78139;1;0;false;false;;;;;; -78140;1;0;false;false;0;0;0;;; -78141;1;0;false;false;;;;;; -78142;12;0;false;false;0;0;0;;; -78154;1;0;false;false;;;;;; -78155;1;0;false;false;0;0;0;;; -78156;1;0;false;false;;;;;; -78157;15;0;false;false;0;0;0;;; -78172;1;0;false;false;;;;;; -78173;1;0;false;false;0;0;0;;; -78174;1;0;false;false;;;;;; -78175;15;0;false;false;0;0;0;;; -78190;6;0;false;false;;;;;; -78196;15;0;false;false;63;127;95;;; -78211;1;0;false;false;;;;;; -78212;27;0;false;false;0;0;0;;; -78239;1;0;false;false;;;;;; -78240;12;0;false;false;0;0;0;;; -78252;4;0;false;false;;;;;; -78256;29;0;false;false;0;0;0;;; -78285;1;0;false;false;;;;;; -78286;14;0;false;false;0;0;0;;; -78300;3;0;false;false;;;;;; -78303;23;0;false;false;0;0;0;;; -78326;1;0;false;false;;;;;; -78327;15;0;false;false;0;0;0;;; -78342;3;0;false;false;;;;;; -78345;22;0;false;false;0;0;0;;; -78367;1;0;false;false;;;;;; -78368;13;0;false;false;0;0;0;;; -78381;3;0;false;false;;;;;; -78384;26;0;false;false;0;0;0;;; -78410;1;0;false;false;;;;;; -78411;12;0;false;false;0;0;0;;; -78423;3;0;false;false;;;;;; -78426;28;0;false;false;0;0;0;;; -78454;1;0;false;false;;;;;; -78455;14;0;false;false;0;0;0;;; -78469;3;0;false;false;;;;;; -78472;22;0;false;false;0;0;0;;; -78494;1;0;false;false;;;;;; -78495;1;0;false;false;0;0;0;;; -78496;1;0;false;false;;;;;; -78497;9;0;false;false;0;0;0;;; -78506;1;0;false;false;;;;;; -78507;15;0;false;false;0;0;0;;; -78522;3;0;false;false;;;;;; -78525;21;0;false;false;0;0;0;;; -78546;1;0;false;false;;;;;; -78547;1;0;false;false;0;0;0;;; -78548;1;0;false;false;;;;;; -78549;9;0;false;false;0;0;0;;; -78558;1;0;false;false;;;;;; -78559;13;0;false;false;0;0;0;;; -78572;3;0;false;false;;;;;; -78575;25;0;false;false;0;0;0;;; -78600;1;0;false;false;;;;;; -78601;1;0;false;false;0;0;0;;; -78602;1;0;false;false;;;;;; -78603;9;0;false;false;0;0;0;;; -78612;1;0;false;false;;;;;; -78613;17;0;false;false;0;0;0;;; -78630;3;0;false;false;;;;;; -78633;27;0;false;false;0;0;0;;; -78660;1;0;false;false;;;;;; -78661;1;0;false;false;0;0;0;;; -78662;1;0;false;false;;;;;; -78663;9;0;false;false;0;0;0;;; -78672;1;0;false;false;;;;;; -78673;15;0;false;false;0;0;0;;; -78688;3;0;false;false;;;;;; -78691;22;0;false;false;0;0;0;;; -78713;1;0;false;false;;;;;; -78714;16;0;false;false;0;0;0;;; -78730;3;0;false;false;;;;;; -78733;26;0;false;false;0;0;0;;; -78759;1;0;false;false;;;;;; -78760;20;0;false;false;0;0;0;;; -78780;3;0;false;false;;;;;; -78783;21;0;false;false;0;0;0;;; -78804;1;0;false;false;;;;;; -78805;1;0;false;false;0;0;0;;; -78806;1;0;false;false;;;;;; -78807;9;0;false;false;0;0;0;;; -78816;1;0;false;false;;;;;; -78817;14;0;false;false;0;0;0;;; -78831;3;0;false;false;;;;;; -78834;25;0;false;false;0;0;0;;; -78859;1;0;false;false;;;;;; -78860;1;0;false;false;0;0;0;;; -78861;1;0;false;false;;;;;; -78862;9;0;false;false;0;0;0;;; -78871;1;0;false;false;;;;;; -78872;18;0;false;false;0;0;0;;; -78890;6;0;false;false;;;;;; -78896;14;0;false;false;63;127;95;;; -78910;1;0;false;false;;;;;; -78911;26;0;false;false;0;0;0;;; -78937;1;0;false;false;;;;;; -78938;1;0;false;false;0;0;0;;; -78939;1;0;false;false;;;;;; -78940;9;0;false;false;0;0;0;;; -78949;1;0;false;false;;;;;; -78950;19;0;false;false;0;0;0;;; -78969;4;0;false;false;;;;;; -78973;28;0;false;false;0;0;0;;; -79001;1;0;false;false;;;;;; -79002;1;0;false;false;0;0;0;;; -79003;1;0;false;false;;;;;; -79004;9;0;false;false;0;0;0;;; -79013;1;0;false;false;;;;;; -79014;21;0;false;false;0;0;0;;; -79035;3;0;false;false;;;;;; -79038;22;0;false;false;0;0;0;;; -79060;1;0;false;false;;;;;; -79061;1;0;false;false;0;0;0;;; -79062;1;0;false;false;;;;;; -79063;9;0;false;false;0;0;0;;; -79072;1;0;false;false;;;;;; -79073;22;0;false;false;0;0;0;;; -79095;3;0;false;false;;;;;; -79098;21;0;false;false;0;0;0;;; -79119;1;0;false;false;;;;;; -79120;1;0;false;false;0;0;0;;; -79121;1;0;false;false;;;;;; -79122;9;0;false;false;0;0;0;;; -79131;1;0;false;false;;;;;; -79132;20;0;false;false;0;0;0;;; -79152;3;0;false;false;;;;;; -79155;25;0;false;false;0;0;0;;; -79180;1;0;false;false;;;;;; -79181;1;0;false;false;0;0;0;;; -79182;1;0;false;false;;;;;; -79183;9;0;false;false;0;0;0;;; -79192;1;0;false;false;;;;;; -79193;19;0;false;false;0;0;0;;; -79212;3;0;false;false;;;;;; -79215;27;0;false;false;0;0;0;;; -79242;1;0;false;false;;;;;; -79243;1;0;false;false;0;0;0;;; -79244;1;0;false;false;;;;;; -79245;9;0;false;false;0;0;0;;; -79254;1;0;false;false;;;;;; -79255;21;0;false;false;0;0;0;;; -79276;3;0;false;false;;;;;; -79279;22;0;false;false;0;0;0;;; -79301;1;0;false;false;;;;;; -79302;1;0;false;false;0;0;0;;; -79303;1;0;false;false;;;;;; -79304;8;0;false;false;0;0;0;;; -79312;1;0;false;false;;;;;; -79313;1;0;false;false;0;0;0;;; -79314;1;0;false;false;;;;;; -79315;9;0;false;false;0;0;0;;; -79324;1;0;false;false;;;;;; -79325;22;0;false;false;0;0;0;;; -79347;4;0;false;false;;;;;; -79351;21;0;false;false;0;0;0;;; -79372;1;0;false;false;;;;;; -79373;1;0;false;false;0;0;0;;; -79374;1;0;false;false;;;;;; -79375;8;0;false;false;0;0;0;;; -79383;1;0;false;false;;;;;; -79384;1;0;false;false;0;0;0;;; -79385;1;0;false;false;;;;;; -79386;9;0;false;false;0;0;0;;; -79395;1;0;false;false;;;;;; -79396;20;0;false;false;0;0;0;;; -79416;3;0;false;false;;;;;; -79419;25;0;false;false;0;0;0;;; -79444;1;0;false;false;;;;;; -79445;1;0;false;false;0;0;0;;; -79446;1;0;false;false;;;;;; -79447;8;0;false;false;0;0;0;;; -79455;1;0;false;false;;;;;; -79456;1;0;false;false;0;0;0;;; -79457;1;0;false;false;;;;;; -79458;9;0;false;false;0;0;0;;; -79467;1;0;false;false;;;;;; -79468;24;0;false;false;0;0;0;;; -79492;3;0;false;false;;;;;; -79495;27;0;false;false;0;0;0;;; -79522;1;0;false;false;;;;;; -79523;1;0;false;false;0;0;0;;; -79524;1;0;false;false;;;;;; -79525;8;0;false;false;0;0;0;;; -79533;1;0;false;false;;;;;; -79534;1;0;false;false;0;0;0;;; -79535;1;0;false;false;;;;;; -79536;9;0;false;false;0;0;0;;; -79545;1;0;false;false;;;;;; -79546;22;0;false;false;0;0;0;;; -79568;3;0;false;false;;;;;; -79571;21;0;false;false;0;0;0;;; -79592;1;0;false;false;;;;;; -79593;1;0;false;false;0;0;0;;; -79594;1;0;false;false;;;;;; -79595;9;0;false;false;0;0;0;;; -79604;1;0;false;false;;;;;; -79605;23;0;false;false;0;0;0;;; -79628;3;0;false;false;;;;;; -79631;25;0;false;false;0;0;0;;; -79656;1;0;false;false;;;;;; -79657;1;0;false;false;0;0;0;;; -79658;1;0;false;false;;;;;; -79659;9;0;false;false;0;0;0;;; -79668;1;0;false;false;;;;;; -79669;27;0;false;false;0;0;0;;; -79696;4;0;false;false;;;;;; -79700;21;0;false;false;0;0;0;;; -79721;1;0;false;false;;;;;; -79722;1;0;false;false;0;0;0;;; -79723;1;0;false;false;;;;;; -79724;8;0;false;false;0;0;0;;; -79732;1;0;false;false;;;;;; -79733;1;0;false;false;0;0;0;;; -79734;1;0;false;false;;;;;; -79735;9;0;false;false;0;0;0;;; -79744;1;0;false;false;;;;;; -79745;21;0;false;false;0;0;0;;; -79766;3;0;false;false;;;;;; -79769;25;0;false;false;0;0;0;;; -79794;1;0;false;false;;;;;; -79795;1;0;false;false;0;0;0;;; -79796;1;0;false;false;;;;;; -79797;8;0;false;false;0;0;0;;; -79805;1;0;false;false;;;;;; -79806;1;0;false;false;0;0;0;;; -79807;1;0;false;false;;;;;; -79808;9;0;false;false;0;0;0;;; -79817;1;0;false;false;;;;;; -79818;25;0;false;false;0;0;0;;; -79843;20;0;false;false;;;;;; -79863;17;0;false;false;63;127;95;;; -79880;1;0;false;false;;;;;; -79881;21;0;false;false;63;127;95;;; -79902;1;0;false;false;;;;;; -79903;14;0;false;false;0;0;0;;; -79917;3;0;false;false;42;0;255;;; -79920;1;0;false;false;;;;;; -79921;1;0;false;false;0;0;0;;; -79922;1;0;false;false;;;;;; -79923;9;0;false;false;0;0;0;;; -79932;1;0;false;false;;;;;; -79933;8;0;false;false;0;0;0;;; -79941;3;0;false;false;;;;;; -79944;14;0;false;false;0;0;0;;; -79958;3;0;false;false;42;0;255;;; -79961;1;0;false;false;;;;;; -79962;1;0;false;false;0;0;0;;; -79963;1;0;false;false;;;;;; -79964;9;0;false;false;0;0;0;;; -79973;1;0;false;false;;;;;; -79974;9;0;false;false;0;0;0;;; -79983;3;0;false;false;;;;;; -79986;14;0;false;false;0;0;0;;; -80000;3;0;false;false;42;0;255;;; -80003;1;0;false;false;;;;;; -80004;1;0;false;false;0;0;0;;; -80005;1;0;false;false;;;;;; -80006;9;0;false;false;0;0;0;;; -80015;1;0;false;false;;;;;; -80016;10;0;false;false;0;0;0;;; -80026;3;0;false;false;;;;;; -80029;36;0;false;false;63;127;95;;; -80065;1;0;false;false;;;;;; -80066;21;0;false;false;0;0;0;;; -80087;1;0;false;false;;;;;; -80088;1;0;false;false;0;0;0;;; -80089;1;0;false;false;;;;;; -80090;9;0;false;false;0;0;0;;; -80099;1;0;false;false;;;;;; -80100;8;0;false;false;0;0;0;;; -80108;3;0;false;false;;;;;; -80111;24;0;false;false;0;0;0;;; -80135;1;0;false;false;;;;;; -80136;1;0;false;false;0;0;0;;; -80137;1;0;false;false;;;;;; -80138;9;0;false;false;0;0;0;;; -80147;1;0;false;false;;;;;; -80148;9;0;false;false;0;0;0;;; -80157;3;0;false;false;;;;;; -80160;24;0;false;false;0;0;0;;; -80184;1;0;false;false;;;;;; -80185;1;0;false;false;0;0;0;;; -80186;1;0;false;false;;;;;; -80187;9;0;false;false;0;0;0;;; -80196;1;0;false;false;;;;;; -80197;10;0;false;false;0;0;0;;; -80207;3;0;false;false;;;;;; -80210;20;0;false;false;0;0;0;;; -80230;1;0;false;false;;;;;; -80231;1;0;false;false;0;0;0;;; -80232;1;0;false;false;;;;;; -80233;9;0;false;false;0;0;0;;; -80242;1;0;false;false;;;;;; -80243;20;0;false;false;0;0;0;;; -80263;6;0;false;false;;;;;; -80269;21;0;false;false;0;0;0;;; -80290;1;0;false;false;;;;;; -80291;20;0;false;false;0;0;0;;; -80311;3;0;false;false;;;;;; -80314;22;0;false;false;0;0;0;;; -80336;1;0;false;false;;;;;; -80337;16;0;false;false;0;0;0;;; -80353;3;0;false;false;;;;;; -80356;20;0;false;false;0;0;0;;; -80376;1;0;false;false;;;;;; -80377;1;0;false;false;0;0;0;;; -80378;1;0;false;false;;;;;; -80379;9;0;false;false;0;0;0;;; -80388;1;0;false;false;;;;;; -80389;25;0;false;false;0;0;0;;; -80414;3;0;false;false;;;;;; -80417;21;0;false;false;0;0;0;;; -80438;1;0;false;false;;;;;; -80439;1;0;false;false;0;0;0;;; -80440;1;0;false;false;;;;;; -80441;9;0;false;false;0;0;0;;; -80450;1;0;false;false;;;;;; -80451;21;0;false;false;0;0;0;;; -80472;6;0;false;false;;;;;; -80478;18;0;false;false;63;127;95;;; -80496;1;0;false;false;;;;;; -80497;25;0;false;false;0;0;0;;; -80522;1;0;false;false;;;;;; -80523;21;0;false;false;0;0;0;;; -80544;2;0;false;false;;;;;; -80546;1;0;false;false;0;0;0;;; -80547;2;0;false;false;;;;;; -80549;3;0;false;false;63;95;191;;; -80552;3;0;false;false;;;;;; -80555;1;0;false;false;63;95;191;;; -80556;1;0;false;false;;;;;; -80557;6;0;false;false;63;95;191;;; -80563;1;0;false;false;;;;;; -80564;3;0;false;false;63;95;191;;; -80567;1;0;false;false;;;;;; -80568;7;0;false;false;63;95;191;;; -80575;1;0;false;false;;;;;; -80576;2;0;false;false;63;95;191;;; -80578;1;0;false;false;;;;;; -80579;3;0;false;false;63;95;191;;; -80582;1;0;false;false;;;;;; -80583;3;0;false;false;63;95;191;;; -80586;1;0;false;false;;;;;; -80587;3;0;false;false;63;95;191;;; -80590;1;0;false;false;;;;;; -80591;5;0;false;false;63;95;191;;; -80596;1;0;false;false;;;;;; -80597;2;0;false;false;63;95;191;;; -80599;1;0;false;false;;;;;; -80600;4;0;false;false;63;95;191;;; -80604;1;0;false;false;;;;;; -80605;5;0;false;false;63;95;191;;; -80610;2;0;false;false;;;;;; -80612;4;0;false;false;63;95;191;;; -80616;3;0;false;false;;;;;; -80619;1;0;false;false;63;95;191;;; -80620;1;0;false;false;;;;;; -80621;6;0;false;false;63;95;191;;; -80627;1;0;false;false;;;;;; -80628;4;0;false;false;63;95;191;;; -80632;1;0;false;false;;;;;; -80633;5;0;false;false;63;95;191;;; -80638;1;0;false;false;;;;;; -80639;2;0;false;false;63;95;191;;; -80641;1;0;false;false;;;;;; -80642;2;0;false;false;63;95;191;;; -80644;1;0;false;false;;;;;; -80645;6;0;false;false;63;95;191;;; -80651;1;0;false;false;;;;;; -80652;4;0;false;false;63;95;191;;; -80656;1;0;false;false;;;;;; -80657;6;0;false;false;63;95;191;;; -80663;1;0;false;false;;;;;; -80664;8;0;false;false;63;95;191;;; -80672;1;0;false;false;;;;;; -80673;3;0;false;false;63;95;191;;; -80676;1;0;false;false;;;;;; -80677;4;0;false;false;63;95;191;;; -80681;1;0;false;false;;;;;; -80682;3;0;false;false;63;95;191;;; -80685;3;0;false;false;;;;;; -80688;1;0;false;false;63;95;191;;; -80689;1;0;false;false;;;;;; -80690;4;0;false;false;63;95;191;;; -80694;1;0;false;false;;;;;; -80695;7;0;false;false;63;95;191;;; -80702;1;0;false;false;;;;;; -80703;4;0;false;false;63;95;191;;; -80707;1;0;false;false;;;;;; -80708;5;0;false;false;63;95;191;;; -80713;1;0;false;false;;;;;; -80714;6;0;false;false;63;95;191;;; -80720;1;0;false;false;;;;;; -80721;6;0;false;false;63;95;191;;; -80727;1;0;false;false;;;;;; -80728;5;0;false;false;63;95;191;;; -80733;1;0;false;false;;;;;; -80734;2;0;false;false;63;95;191;;; -80736;1;0;false;false;;;;;; -80737;5;0;false;false;63;95;191;;; -80742;1;0;false;false;;;;;; -80743;4;0;false;false;63;95;191;;; -80747;1;0;false;false;;;;;; -80748;8;0;false;false;63;95;191;;; -80756;3;0;false;false;;;;;; -80759;2;0;false;false;63;95;191;;; -80761;2;0;false;false;;;;;; -80763;4;1;false;false;127;0;85;;; -80767;1;0;false;false;;;;;; -80768;20;0;false;false;0;0;0;;; -80788;1;0;false;false;;;;;; -80789;1;0;false;false;0;0;0;;; -80790;3;0;false;false;;;;;; -80793;3;1;false;false;127;0;85;;; -80796;1;0;false;false;;;;;; -80797;10;0;false;false;0;0;0;;; -80807;1;0;false;false;;;;;; -80808;1;0;false;false;0;0;0;;; -80809;1;0;false;false;;;;;; -80810;17;0;false;false;0;0;0;;; -80827;3;0;false;false;;;;;; -80830;7;0;false;false;0;0;0;;; -80837;1;0;false;false;;;;;; -80838;7;0;false;false;0;0;0;;; -80845;1;0;false;false;;;;;; -80846;1;0;false;false;0;0;0;;; -80847;1;0;false;false;;;;;; -80848;13;0;false;false;0;0;0;;; -80861;3;0;false;false;;;;;; -80864;2;1;false;false;127;0;85;;; -80866;1;0;false;false;;;;;; -80867;16;0;false;false;0;0;0;;; -80883;1;0;false;false;;;;;; -80884;2;0;false;false;0;0;0;;; -80886;1;0;false;false;;;;;; -80887;4;1;false;false;127;0;85;;; -80891;1;0;false;false;0;0;0;;; -80892;1;0;false;false;;;;;; -80893;1;0;false;false;0;0;0;;; -80894;4;0;false;false;;;;;; -80898;2;1;false;false;127;0;85;;; -80900;1;0;false;false;;;;;; -80901;13;0;false;false;0;0;0;;; -80914;1;0;false;false;;;;;; -80915;2;0;false;false;0;0;0;;; -80917;1;0;false;false;;;;;; -80918;4;1;false;false;127;0;85;;; -80922;1;0;false;false;;;;;; -80923;2;0;false;false;0;0;0;;; -80925;1;0;false;false;;;;;; -80926;48;0;false;false;0;0;0;;; -80974;1;0;false;false;;;;;; -80975;1;0;false;false;0;0;0;;; -80976;5;0;false;false;;;;;; -80981;22;0;false;false;0;0;0;;; -81003;4;1;false;false;127;0;85;;; -81007;2;0;false;false;0;0;0;;; -81009;4;0;false;false;;;;;; -81013;1;0;false;false;0;0;0;;; -81014;4;0;false;false;;;;;; -81018;26;0;false;false;0;0;0;;; -81044;3;0;false;false;;;;;; -81047;1;0;false;false;0;0;0;;; -81048;3;0;false;false;;;;;; -81051;15;0;false;false;0;0;0;;; -81066;1;0;false;false;;;;;; -81067;1;0;false;false;0;0;0;;; -81068;1;0;false;false;;;;;; -81069;3;1;false;false;127;0;85;;; -81072;1;0;false;false;;;;;; -81073;14;0;false;false;0;0;0;;; -81087;1;0;false;false;;;;;; -81088;11;0;false;false;0;0;0;;; -81099;1;0;false;false;;;;;; -81100;12;0;false;false;0;0;0;;; -81112;3;0;false;false;;;;;; -81115;2;0;false;false;0;0;0;;; -81117;1;0;false;false;;;;;; -81118;2;0;false;false;0;0;0;;; -81120;1;0;false;false;;;;;; -81121;1;0;false;false;0;0;0;;; -81122;1;0;false;false;;;;;; -81123;3;1;false;false;127;0;85;;; -81126;1;0;false;false;;;;;; -81127;2;0;false;false;0;0;0;;; -81129;1;0;false;false;;;;;; -81130;18;0;false;false;0;0;0;;; -81148;4;0;false;false;;;;;; -81152;58;0;false;false;0;0;0;;; -81210;3;0;false;false;;;;;; -81213;19;0;false;false;0;0;0;;; -81232;1;0;false;false;;;;;; -81233;2;0;false;false;0;0;0;;; -81235;1;0;false;false;;;;;; -81236;11;0;false;false;0;0;0;;; -81247;1;0;false;false;;;;;; -81248;12;0;false;false;0;0;0;;; -81260;3;0;false;false;;;;;; -81263;58;0;false;false;0;0;0;;; -81321;3;0;false;false;;;;;; -81324;30;0;false;false;0;0;0;;; -81354;3;0;false;false;;;;;; -81357;32;0;false;false;0;0;0;;; -81389;3;0;false;false;;;;;; -81392;21;0;false;false;0;0;0;;; -81413;3;0;false;false;;;;;; -81416;13;0;false;false;0;0;0;;; -81429;7;0;false;false;;;;;; -81436;2;1;false;false;127;0;85;;; -81438;1;0;false;false;;;;;; -81439;17;0;false;false;0;0;0;;; -81456;1;0;false;false;;;;;; -81457;2;0;false;false;0;0;0;;; -81459;1;0;false;false;;;;;; -81460;4;1;false;false;127;0;85;;; -81464;1;0;false;false;0;0;0;;; -81465;1;0;false;false;;;;;; -81466;1;0;false;false;0;0;0;;; -81467;4;0;false;false;;;;;; -81471;2;1;false;false;127;0;85;;; -81473;1;0;false;false;;;;;; -81474;13;0;false;false;0;0;0;;; -81487;1;0;false;false;;;;;; -81488;2;0;false;false;0;0;0;;; -81490;1;0;false;false;;;;;; -81491;4;1;false;false;127;0;85;;; -81495;1;0;false;false;;;;;; -81496;2;0;false;false;0;0;0;;; -81498;1;0;false;false;;;;;; -81499;49;0;false;false;0;0;0;;; -81548;1;0;false;false;;;;;; -81549;1;0;false;false;0;0;0;;; -81550;5;0;false;false;;;;;; -81555;22;0;false;false;0;0;0;;; -81577;4;1;false;false;127;0;85;;; -81581;2;0;false;false;0;0;0;;; -81583;4;0;false;false;;;;;; -81587;1;0;false;false;0;0;0;;; -81588;4;0;false;false;;;;;; -81592;27;0;false;false;0;0;0;;; -81619;3;0;false;false;;;;;; -81622;1;0;false;false;0;0;0;;; -81623;3;0;false;false;;;;;; -81626;16;0;false;false;0;0;0;;; -81642;1;0;false;false;;;;;; -81643;1;0;false;false;0;0;0;;; -81644;1;0;false;false;;;;;; -81645;3;1;false;false;127;0;85;;; -81648;1;0;false;false;;;;;; -81649;14;0;false;false;0;0;0;;; -81663;1;0;false;false;;;;;; -81664;11;0;false;false;0;0;0;;; -81675;1;0;false;false;;;;;; -81676;12;0;false;false;0;0;0;;; -81688;3;0;false;false;;;;;; -81691;2;0;false;false;0;0;0;;; -81693;1;0;false;false;;;;;; -81694;1;0;false;false;0;0;0;;; -81695;1;0;false;false;;;;;; -81696;3;1;false;false;127;0;85;;; -81699;1;0;false;false;;;;;; -81700;2;0;false;false;0;0;0;;; -81702;1;0;false;false;;;;;; -81703;19;0;false;false;0;0;0;;; -81722;4;0;false;false;;;;;; -81726;58;0;false;false;0;0;0;;; -81784;3;0;false;false;;;;;; -81787;19;0;false;false;0;0;0;;; -81806;1;0;false;false;;;;;; -81807;2;0;false;false;0;0;0;;; -81809;1;0;false;false;;;;;; -81810;11;0;false;false;0;0;0;;; -81821;1;0;false;false;;;;;; -81822;12;0;false;false;0;0;0;;; -81834;3;0;false;false;;;;;; -81837;58;0;false;false;0;0;0;;; -81895;3;0;false;false;;;;;; -81898;52;0;false;false;0;0;0;;; -81950;3;0;false;false;;;;;; -81953;32;0;false;false;0;0;0;;; -81985;3;0;false;false;;;;;; -81988;32;0;false;false;0;0;0;;; -82020;3;0;false;false;;;;;; -82023;13;0;false;false;0;0;0;;; -82036;2;0;false;false;;;;;; -82038;1;0;false;false;0;0;0;;; -82039;2;0;false;false;;;;;; -82041;3;0;false;false;63;95;191;;; -82044;3;0;false;false;;;;;; -82047;1;0;false;false;63;95;191;;; -82048;1;0;false;false;;;;;; -82049;5;0;false;false;63;95;191;;; -82054;1;0;false;false;;;;;; -82055;3;0;false;false;63;95;191;;; -82058;1;0;false;false;;;;;; -82059;8;0;false;false;63;95;191;;; -82067;1;0;false;false;;;;;; -82068;4;0;false;false;63;95;191;;; -82072;1;0;false;false;;;;;; -82073;2;0;false;false;63;95;191;;; -82075;1;0;false;false;;;;;; -82076;3;0;false;false;63;95;191;;; -82079;1;0;false;false;;;;;; -82080;10;0;false;false;63;95;191;;; -82090;2;0;false;false;;;;;; -82092;3;0;false;false;63;95;191;;; -82095;1;0;false;false;;;;;; -82096;4;0;false;false;63;95;191;;; -82100;1;0;false;false;;;;;; -82101;4;0;false;false;63;95;191;;; -82105;1;0;false;false;;;;;; -82106;2;0;false;false;63;95;191;;; -82108;1;0;false;false;;;;;; -82109;3;0;false;false;63;95;191;;; -82112;1;0;false;false;;;;;; -82113;2;0;false;false;63;95;191;;; -82115;1;0;false;false;;;;;; -82116;3;0;false;false;63;95;191;;; -82119;4;0;false;false;;;;;; -82123;1;0;false;false;63;95;191;;; -82124;1;0;false;false;;;;;; -82125;9;0;false;false;63;95;191;;; -82134;1;0;false;false;;;;;; -82135;2;0;false;false;63;95;191;;; -82137;1;0;false;false;;;;;; -82138;5;0;false;false;63;95;191;;; -82143;1;0;false;false;;;;;; -82144;4;0;false;false;63;95;191;;; -82148;1;0;false;false;;;;;; -82149;6;0;false;false;63;95;191;;; -82155;1;0;false;false;;;;;; -82156;3;0;false;false;63;95;191;;; -82159;1;0;false;false;;;;;; -82160;3;0;false;false;63;95;191;;; -82163;1;0;false;false;;;;;; -82164;7;0;false;false;63;95;191;;; -82171;3;0;false;false;;;;;; -82174;1;0;false;false;63;95;191;;; -82175;1;0;false;false;;;;;; -82176;3;0;false;false;127;127;159;;; -82179;3;0;false;false;;;;;; -82182;1;0;false;false;63;95;191;;; -82183;3;0;false;false;;;;;; -82186;1;0;false;false;63;95;191;;; -82187;1;0;false;false;;;;;; -82188;11;1;false;false;127;159;191;;; -82199;12;0;false;false;63;95;191;;; -82211;1;0;false;false;;;;;; -82212;4;0;false;false;127;127;159;;; -82216;3;0;false;false;;;;;; -82219;1;0;false;false;63;95;191;;; -82220;4;0;false;false;;;;;; -82224;4;0;false;false;127;127;159;;; -82228;21;0;false;false;63;95;191;;; -82249;1;0;false;false;;;;;; -82250;1;0;false;false;127;127;159;;; -82251;1;0;false;false;;;;;; -82252;2;0;false;false;63;95;191;;; -82254;1;0;false;false;;;;;; -82255;3;0;false;false;63;95;191;;; -82258;1;0;false;false;;;;;; -82259;8;0;false;false;63;95;191;;; -82267;1;0;false;false;;;;;; -82268;3;0;false;false;63;95;191;;; -82271;1;0;false;false;;;;;; -82272;4;0;false;false;63;95;191;;; -82276;1;0;false;false;;;;;; -82277;8;0;false;false;63;95;191;;; -82285;5;0;false;false;127;127;159;;; -82290;3;0;false;false;;;;;; -82293;1;0;false;false;63;95;191;;; -82294;4;0;false;false;;;;;; -82298;4;0;false;false;127;127;159;;; -82302;27;0;false;false;63;95;191;;; -82329;1;0;false;false;;;;;; -82330;1;0;false;false;127;127;159;;; -82331;1;0;false;false;;;;;; -82332;2;0;false;false;63;95;191;;; -82334;1;0;false;false;;;;;; -82335;3;0;false;false;63;95;191;;; -82338;1;0;false;false;;;;;; -82339;6;0;false;false;63;95;191;;; -82345;1;0;false;false;;;;;; -82346;4;0;false;false;63;95;191;;; -82350;1;0;false;false;;;;;; -82351;3;0;false;false;63;95;191;;; -82354;1;0;false;false;;;;;; -82355;6;0;false;false;63;95;191;;; -82361;1;0;false;false;;;;;; -82362;4;0;false;false;63;95;191;;; -82366;1;0;false;false;;;;;; -82367;7;0;false;false;63;95;191;;; -82374;1;0;false;false;;;;;; -82375;3;0;false;false;63;95;191;;; -82378;1;0;false;false;;;;;; -82379;8;0;false;false;63;95;191;;; -82387;5;0;false;false;127;127;159;;; -82392;3;0;false;false;;;;;; -82395;1;0;false;false;63;95;191;;; -82396;1;0;false;false;;;;;; -82397;5;0;false;false;127;127;159;;; -82402;3;0;false;false;;;;;; -82405;2;0;false;false;63;95;191;;; -82407;2;0;false;false;;;;;; -82409;6;1;false;false;127;0;85;;; -82415;1;0;false;false;;;;;; -82416;4;1;false;false;127;0;85;;; -82420;1;0;false;false;;;;;; -82421;6;0;false;false;0;0;0;;; -82427;3;0;false;false;;;;;; -82430;14;0;false;false;0;0;0;;; -82444;3;0;false;false;;;;;; -82447;3;1;false;false;127;0;85;;; -82450;1;0;false;false;;;;;; -82451;6;0;false;false;0;0;0;;; -82457;1;0;false;false;;;;;; -82458;1;0;false;false;0;0;0;;; -82459;1;0;false;false;;;;;; -82460;11;0;false;false;0;0;0;;; -82471;1;0;false;false;;;;;; -82472;1;0;false;false;0;0;0;;; -82473;1;0;false;false;;;;;; -82474;12;0;false;false;0;0;0;;; -82486;6;0;false;false;;;;;; -82492;2;1;false;false;127;0;85;;; -82494;1;0;false;false;;;;;; -82495;7;0;false;false;0;0;0;;; -82502;1;0;false;false;;;;;; -82503;1;0;false;false;0;0;0;;; -82504;1;0;false;false;;;;;; -82505;2;0;false;false;0;0;0;;; -82507;1;0;false;false;;;;;; -82508;1;0;false;false;0;0;0;;; -82509;4;0;false;false;;;;;; -82513;3;1;false;false;127;0;85;;; -82516;1;0;false;false;;;;;; -82517;1;0;false;false;0;0;0;;; -82518;5;0;false;false;;;;;; -82523;32;0;false;false;0;0;0;;; -82555;1;0;false;false;;;;;; -82556;7;0;false;false;0;0;0;;; -82563;1;0;false;false;;;;;; -82564;15;0;false;false;0;0;0;;; -82579;4;0;false;false;;;;;; -82583;1;0;false;false;0;0;0;;; -82584;4;0;false;false;;;;;; -82588;5;1;false;false;127;0;85;;; -82593;1;0;false;false;;;;;; -82594;9;0;false;false;0;0;0;;; -82603;1;0;false;false;;;;;; -82604;6;0;false;false;0;0;0;;; -82610;1;0;false;false;;;;;; -82611;1;0;false;false;0;0;0;;; -82612;5;0;false;false;;;;;; -82617;69;0;false;false;63;127;95;;; -82686;3;0;false;false;;;;;; -82689;64;0;false;false;63;127;95;;; -82753;3;0;false;false;;;;;; -82756;18;0;false;false;63;127;95;;; -82774;3;0;false;false;;;;;; -82777;47;0;false;false;63;127;95;;; -82824;3;0;false;false;;;;;; -82827;2;1;false;false;127;0;85;;; -82829;1;0;false;false;;;;;; -82830;11;0;false;false;0;0;0;;; -82841;1;0;false;false;;;;;; -82842;2;0;false;false;0;0;0;;; -82844;1;0;false;false;;;;;; -82845;31;0;false;false;0;0;0;;; -82876;1;0;false;false;;;;;; -82877;1;0;false;false;0;0;0;;; -82878;6;0;false;false;;;;;; -82884;5;1;false;false;127;0;85;;; -82889;1;0;false;false;;;;;; -82890;6;0;false;false;0;0;0;;; -82896;5;0;false;false;;;;;; -82901;1;0;false;false;0;0;0;;; -82902;5;0;false;false;;;;;; -82907;52;0;false;false;63;127;95;;; -82959;3;0;false;false;;;;;; -82962;21;0;false;false;63;127;95;;; -82983;3;0;false;false;;;;;; -82986;6;1;false;false;127;0;85;;; -82992;1;0;false;false;0;0;0;;; -82993;4;0;false;false;;;;;; -82997;1;0;false;false;0;0;0;;; -82998;4;0;false;false;;;;;; -83002;11;0;false;false;0;0;0;;; -83013;3;0;false;false;;;;;; -83016;1;0;false;false;0;0;0;;; -83017;2;0;false;false;;;;;; -83019;1;0;false;false;0;0;0;;; -83020;2;0;false;false;;;;;; -83022;3;0;false;false;63;95;191;;; -83025;4;0;false;false;;;;;; -83029;1;0;false;false;63;95;191;;; -83030;1;0;false;false;;;;;; -83031;1;0;false;false;63;95;191;;; -83032;1;0;false;false;;;;;; -83033;5;0;false;false;63;95;191;;; -83038;1;0;false;false;;;;;; -83039;4;0;false;false;63;95;191;;; -83043;1;0;false;false;;;;;; -83044;5;0;false;false;63;95;191;;; -83049;1;0;false;false;;;;;; -83050;3;0;false;false;63;95;191;;; -83053;1;0;false;false;;;;;; -83054;9;0;false;false;63;95;191;;; -83063;2;0;false;false;;;;;; -83065;3;0;false;false;63;95;191;;; -83068;1;0;false;false;;;;;; -83069;2;0;false;false;63;95;191;;; -83071;1;0;false;false;;;;;; -83072;2;0;false;false;63;95;191;;; -83074;1;0;false;false;;;;;; -83075;6;0;false;false;63;95;191;;; -83081;1;0;false;false;;;;;; -83082;5;0;false;false;63;95;191;;; -83087;1;0;false;false;;;;;; -83088;14;0;false;false;63;95;191;;; -83102;2;0;false;false;;;;;; -83104;2;0;false;false;63;95;191;;; -83106;3;0;false;false;;;;;; -83109;1;0;false;false;63;95;191;;; -83110;1;0;false;false;;;;;; -83111;3;0;false;false;63;95;191;;; -83114;1;0;false;false;;;;;; -83115;4;0;false;false;63;95;191;;; -83119;1;0;false;false;;;;;; -83120;8;0;false;false;63;95;191;;; -83128;1;0;false;false;;;;;; -83129;2;0;false;false;63;95;191;;; -83131;1;0;false;false;;;;;; -83132;7;0;false;false;63;95;191;;; -83139;1;0;false;false;;;;;; -83140;2;0;false;false;63;95;191;;; -83142;1;0;false;false;;;;;; -83143;3;0;false;false;63;95;191;;; -83146;1;0;false;false;;;;;; -83147;6;0;false;false;63;95;191;;; -83153;1;0;false;false;;;;;; -83154;5;0;false;false;63;95;191;;; -83159;1;0;false;false;;;;;; -83160;8;0;false;false;63;95;191;;; -83168;1;0;false;false;;;;;; -83169;14;0;false;false;63;95;191;;; -83183;5;0;false;false;;;;;; -83188;1;0;false;false;63;95;191;;; -83189;1;0;false;false;;;;;; -83190;10;0;false;false;63;95;191;;; -83200;1;0;false;false;;;;;; -83201;5;0;false;false;63;95;191;;; -83206;1;0;false;false;;;;;; -83207;5;0;false;false;63;95;191;;; -83212;1;0;false;false;;;;;; -83213;4;0;false;false;63;95;191;;; -83217;1;0;false;false;;;;;; -83218;4;0;false;false;63;95;191;;; -83222;1;0;false;false;;;;;; -83223;3;0;false;false;63;95;191;;; -83226;1;0;false;false;;;;;; -83227;6;0;false;false;63;95;191;;; -83233;1;0;false;false;;;;;; -83234;2;0;false;false;63;95;191;;; -83236;1;0;false;false;;;;;; -83237;3;0;false;false;63;95;191;;; -83240;1;0;false;false;;;;;; -83241;14;0;false;false;63;95;191;;; -83255;3;0;false;false;;;;;; -83258;2;0;false;false;63;95;191;;; -83260;2;0;false;false;;;;;; -83262;4;1;false;false;127;0;85;;; -83266;1;0;false;false;;;;;; -83267;18;0;false;false;0;0;0;;; -83285;1;0;false;false;;;;;; -83286;6;0;false;false;0;0;0;;; -83292;1;0;false;false;;;;;; -83293;1;0;false;false;0;0;0;;; -83294;3;0;false;false;;;;;; -83297;9;0;false;false;0;0;0;;; -83306;1;0;false;false;;;;;; -83307;4;0;false;false;0;0;0;;; -83311;1;0;false;false;;;;;; -83312;1;0;false;false;0;0;0;;; -83313;1;0;false;false;;;;;; -83314;16;0;false;false;0;0;0;;; -83330;8;0;false;false;;;;;; -83338;2;1;false;false;127;0;85;;; -83340;1;0;false;false;;;;;; -83341;8;0;false;false;0;0;0;;; -83349;1;0;false;false;;;;;; -83350;1;0;false;false;0;0;0;;; -83351;1;0;false;false;;;;;; -83352;12;0;false;false;0;0;0;;; -83364;1;0;false;false;;;;;; -83365;1;0;false;false;0;0;0;;; -83366;4;0;false;false;;;;;; -83370;22;0;false;false;0;0;0;;; -83392;1;0;false;false;;;;;; -83393;7;0;false;false;0;0;0;;; -83400;1;0;false;false;;;;;; -83401;1;0;false;false;0;0;0;;; -83402;1;0;false;false;;;;;; -83403;13;0;false;false;0;0;0;;; -83416;3;0;false;false;;;;;; -83419;1;0;false;false;0;0;0;;; -83420;3;0;false;false;;;;;; -83423;4;1;false;false;127;0;85;;; -83427;4;0;false;false;;;;;; -83431;2;1;false;false;127;0;85;;; -83433;1;0;false;false;;;;;; -83434;8;0;false;false;0;0;0;;; -83442;1;0;false;false;;;;;; -83443;1;0;false;false;0;0;0;;; -83444;1;0;false;false;;;;;; -83445;2;0;false;false;0;0;0;;; -83447;1;0;false;false;;;;;; -83448;1;0;false;false;0;0;0;;; -83449;4;0;false;false;;;;;; -83453;20;0;false;false;0;0;0;;; -83473;1;0;false;false;;;;;; -83474;10;0;false;false;0;0;0;;; -83484;3;0;false;false;;;;;; -83487;1;0;false;false;0;0;0;;; -83488;3;0;false;false;;;;;; -83491;4;1;false;false;127;0;85;;; -83495;4;0;false;false;;;;;; -83499;2;1;false;false;127;0;85;;; -83501;1;0;false;false;;;;;; -83502;8;0;false;false;0;0;0;;; -83510;1;0;false;false;;;;;; -83511;1;0;false;false;0;0;0;;; -83512;1;0;false;false;;;;;; -83513;10;0;false;false;0;0;0;;; -83523;1;0;false;false;;;;;; -83524;2;0;false;false;0;0;0;;; -83526;1;0;false;false;;;;;; -83527;10;0;false;false;0;0;0;;; -83537;1;0;false;false;;;;;; -83538;1;0;false;false;0;0;0;;; -83539;4;0;false;false;;;;;; -83543;32;0;false;false;0;0;0;;; -83575;1;0;false;false;;;;;; -83576;10;0;false;false;0;0;0;;; -83586;1;0;false;false;;;;;; -83587;1;0;false;false;0;0;0;;; -83588;1;0;false;false;;;;;; -83589;9;0;false;false;0;0;0;;; -83598;3;0;false;false;;;;;; -83601;1;0;false;false;0;0;0;;; -83602;3;0;false;false;;;;;; -83605;4;1;false;false;127;0;85;;; -83609;4;0;false;false;;;;;; -83613;2;1;false;false;127;0;85;;; -83615;1;0;false;false;;;;;; -83616;8;0;false;false;0;0;0;;; -83624;1;0;false;false;;;;;; -83625;1;0;false;false;0;0;0;;; -83626;1;0;false;false;;;;;; -83627;10;0;false;false;0;0;0;;; -83637;1;0;false;false;;;;;; -83638;1;0;false;false;0;0;0;;; -83639;1;0;false;false;;;;;; -83640;10;0;false;false;0;0;0;;; -83650;1;0;false;false;;;;;; -83651;1;0;false;false;0;0;0;;; -83652;1;0;false;false;;;;;; -83653;11;0;false;false;0;0;0;;; -83664;1;0;false;false;;;;;; -83665;2;0;false;false;0;0;0;;; -83667;1;0;false;false;;;;;; -83668;10;0;false;false;0;0;0;;; -83678;1;0;false;false;;;;;; -83679;1;0;false;false;0;0;0;;; -83680;4;0;false;false;;;;;; -83684;28;0;false;false;0;0;0;;; -83712;1;0;false;false;;;;;; -83713;7;0;false;false;0;0;0;;; -83720;1;0;false;false;;;;;; -83721;1;0;false;false;0;0;0;;; -83722;1;0;false;false;;;;;; -83723;11;0;false;false;0;0;0;;; -83734;1;0;false;false;;;;;; -83735;1;0;false;false;0;0;0;;; -83736;1;0;false;false;;;;;; -83737;10;0;false;false;0;0;0;;; -83747;1;0;false;false;;;;;; -83748;1;0;false;false;0;0;0;;; -83749;1;0;false;false;;;;;; -83750;14;0;false;false;0;0;0;;; -83764;3;0;false;false;;;;;; -83767;1;0;false;false;0;0;0;;; -83768;3;0;false;false;;;;;; -83771;4;1;false;false;127;0;85;;; -83775;1;0;false;false;;;;;; -83776;1;0;false;false;0;0;0;;; -83777;4;0;false;false;;;;;; -83781;16;0;false;false;0;0;0;;; -83797;3;0;false;false;;;;;; -83800;1;0;false;false;0;0;0;;; -83801;2;0;false;false;;;;;; -83803;1;0;false;false;0;0;0;;; -83804;2;0;false;false;;;;;; -83806;3;0;false;false;63;95;191;;; -83809;4;0;false;false;;;;;; -83813;1;0;false;false;63;95;191;;; -83814;1;0;false;false;;;;;; -83815;9;0;false;false;63;95;191;;; -83824;1;0;false;false;;;;;; -83825;14;0;false;false;63;95;191;;; -83839;3;0;false;false;;;;;; -83842;1;0;false;false;63;95;191;;; -83843;1;0;false;false;;;;;; -83844;3;0;false;false;127;127;159;;; -83847;3;0;false;false;;;;;; -83850;1;0;false;false;63;95;191;;; -83851;3;0;false;false;;;;;; -83854;1;0;false;false;63;95;191;;; -83855;1;0;false;false;;;;;; -83856;7;1;false;false;127;159;191;;; -83863;9;0;false;false;63;95;191;;; -83872;1;0;false;false;;;;;; -83873;7;0;false;false;63;95;191;;; -83880;1;0;false;false;;;;;; -83881;9;0;false;false;63;95;191;;; -83890;1;0;false;false;;;;;; -83891;16;0;false;false;63;95;191;;; -83907;1;0;false;false;;;;;; -83908;19;0;false;false;63;95;191;;; -83927;3;0;false;false;;;;;; -83930;2;0;false;false;63;95;191;;; -83932;2;0;false;false;;;;;; -83934;4;1;false;false;127;0;85;;; -83938;1;0;false;false;;;;;; -83939;13;0;false;false;0;0;0;;; -83952;3;1;false;false;127;0;85;;; -83955;1;0;false;false;;;;;; -83956;10;0;false;false;0;0;0;;; -83966;1;0;false;false;;;;;; -83967;3;1;false;false;127;0;85;;; -83970;1;0;false;false;;;;;; -83971;9;0;false;false;0;0;0;;; -83980;1;0;false;false;;;;;; -83981;1;0;false;false;0;0;0;;; -83982;3;0;false;false;;;;;; -83985;8;0;false;false;0;0;0;;; -83993;1;0;false;false;;;;;; -83994;5;0;false;false;0;0;0;;; -83999;1;0;false;false;;;;;; -84000;1;0;false;false;0;0;0;;; -84001;1;0;false;false;;;;;; -84002;4;1;false;false;127;0;85;;; -84006;1;0;false;false;0;0;0;;; -84007;6;0;false;false;;;;;; -84013;18;0;false;false;0;0;0;;; -84031;1;0;false;false;;;;;; -84032;1;0;false;false;0;0;0;;; -84033;1;0;false;false;;;;;; -84034;9;0;false;false;0;0;0;;; -84043;5;0;false;false;;;;;; -84048;69;0;false;false;63;127;95;;; -84117;1;0;false;false;;;;;; -84118;2;1;false;false;127;0;85;;; -84120;1;0;false;false;;;;;; -84121;20;0;false;false;0;0;0;;; -84141;1;0;false;false;;;;;; -84142;2;0;false;false;0;0;0;;; -84144;1;0;false;false;;;;;; -84145;10;0;false;false;0;0;0;;; -84155;1;0;false;false;;;;;; -84156;1;0;false;false;0;0;0;;; -84157;4;0;false;false;;;;;; -84161;6;1;false;false;127;0;85;;; -84167;1;0;false;false;0;0;0;;; -84168;3;0;false;false;;;;;; -84171;1;0;false;false;0;0;0;;; -84172;6;0;false;false;;;;;; -84178;5;1;false;false;127;0;85;;; -84183;1;0;false;false;;;;;; -84184;7;0;false;false;0;0;0;;; -84191;1;0;false;false;;;;;; -84192;7;0;false;false;0;0;0;;; -84199;1;0;false;false;;;;;; -84200;1;0;false;false;0;0;0;;; -84201;1;0;false;false;;;;;; -84202;13;0;false;false;0;0;0;;; -84215;3;0;false;false;;;;;; -84218;65;0;false;false;63;127;95;;; -84283;1;0;false;false;;;;;; -84284;50;0;false;false;63;127;95;;; -84334;1;0;false;false;;;;;; -84335;2;1;false;false;127;0;85;;; -84337;1;0;false;false;;;;;; -84338;10;0;false;false;0;0;0;;; -84348;1;0;false;false;;;;;; -84349;2;0;false;false;0;0;0;;; -84351;1;0;false;false;;;;;; -84352;7;0;false;false;0;0;0;;; -84359;1;0;false;false;;;;;; -84360;1;0;false;false;0;0;0;;; -84361;4;0;false;false;;;;;; -84365;5;0;false;false;0;0;0;;; -84370;1;0;false;false;;;;;; -84371;1;0;false;false;0;0;0;;; -84372;1;0;false;false;;;;;; -84373;3;1;false;false;127;0;85;;; -84376;1;0;false;false;;;;;; -84377;10;0;false;false;0;0;0;;; -84387;1;0;false;false;;;;;; -84388;1;0;false;false;0;0;0;;; -84389;5;0;false;false;;;;;; -84394;6;1;false;false;127;0;85;;; -84400;1;0;false;false;;;;;; -84401;4;1;false;false;127;0;85;;; -84405;1;0;false;false;;;;;; -84406;5;0;false;false;0;0;0;;; -84411;1;0;false;false;;;;;; -84412;1;0;false;false;0;0;0;;; -84413;6;0;false;false;;;;;; -84419;2;1;false;false;127;0;85;;; -84421;1;0;false;false;;;;;; -84422;20;0;false;false;0;0;0;;; -84442;1;0;false;false;;;;;; -84443;2;0;false;false;0;0;0;;; -84445;1;0;false;false;;;;;; -84446;7;0;false;false;0;0;0;;; -84453;1;0;false;false;;;;;; -84454;1;0;false;false;0;0;0;;; -84455;7;0;false;false;;;;;; -84462;3;1;false;false;127;0;85;;; -84465;1;0;false;false;;;;;; -84466;5;0;false;false;0;0;0;;; -84471;1;0;false;false;;;;;; -84472;1;0;false;false;0;0;0;;; -84473;1;0;false;false;;;;;; -84474;19;0;false;false;0;0;0;;; -84493;1;0;false;false;;;;;; -84494;1;0;false;false;0;0;0;;; -84495;1;0;false;false;;;;;; -84496;16;0;false;false;0;0;0;;; -84512;1;0;false;false;;;;;; -84513;1;0;false;false;0;0;0;;; -84514;1;0;false;false;;;;;; -84515;2;0;false;false;0;0;0;;; -84517;7;0;false;false;;;;;; -84524;25;0;false;false;0;0;0;;; -84549;7;0;false;false;;;;;; -84556;32;0;false;false;0;0;0;;; -84588;1;0;false;false;;;;;; -84589;4;1;false;false;127;0;85;;; -84593;2;0;false;false;0;0;0;;; -84595;6;0;false;false;;;;;; -84601;1;0;false;false;0;0;0;;; -84602;5;0;false;false;;;;;; -84607;1;0;false;false;0;0;0;;; -84608;4;0;false;false;;;;;; -84612;2;0;false;false;0;0;0;;; -84614;4;0;false;false;;;;;; -84618;19;0;false;false;0;0;0;;; -84637;1;0;false;false;;;;;; -84638;1;0;false;false;0;0;0;;; -84639;1;0;false;false;;;;;; -84640;10;0;false;false;0;0;0;;; -84650;4;0;false;false;;;;;; -84654;32;0;false;false;0;0;0;;; -84686;1;0;false;false;;;;;; -84687;7;0;false;false;0;0;0;;; -84694;3;0;false;false;;;;;; -84697;1;0;false;false;0;0;0;;; -84698;1;0;false;false;;;;;; -84699;4;1;false;false;127;0;85;;; -84703;1;0;false;false;;;;;; -84704;2;1;false;false;127;0;85;;; -84706;1;0;false;false;;;;;; -84707;10;0;false;false;0;0;0;;; -84717;1;0;false;false;;;;;; -84718;2;0;false;false;0;0;0;;; -84720;1;0;false;false;;;;;; -84721;9;0;false;false;0;0;0;;; -84730;1;0;false;false;;;;;; -84731;1;0;false;false;0;0;0;;; -84732;4;0;false;false;;;;;; -84736;5;0;false;false;0;0;0;;; -84741;1;0;false;false;;;;;; -84742;1;0;false;false;0;0;0;;; -84743;1;0;false;false;;;;;; -84744;3;1;false;false;127;0;85;;; -84747;1;0;false;false;;;;;; -84748;10;0;false;false;0;0;0;;; -84758;1;0;false;false;;;;;; -84759;1;0;false;false;0;0;0;;; -84760;5;0;false;false;;;;;; -84765;6;1;false;false;127;0;85;;; -84771;1;0;false;false;;;;;; -84772;4;1;false;false;127;0;85;;; -84776;1;0;false;false;;;;;; -84777;5;0;false;false;0;0;0;;; -84782;1;0;false;false;;;;;; -84783;1;0;false;false;0;0;0;;; -84784;6;0;false;false;;;;;; -84790;2;1;false;false;127;0;85;;; -84792;1;0;false;false;;;;;; -84793;20;0;false;false;0;0;0;;; -84813;1;0;false;false;;;;;; -84814;2;0;false;false;0;0;0;;; -84816;1;0;false;false;;;;;; -84817;9;0;false;false;0;0;0;;; -84826;1;0;false;false;;;;;; -84827;1;0;false;false;0;0;0;;; -84828;7;0;false;false;;;;;; -84835;3;1;false;false;127;0;85;;; -84838;1;0;false;false;;;;;; -84839;5;0;false;false;0;0;0;;; -84844;1;0;false;false;;;;;; -84845;1;0;false;false;0;0;0;;; -84846;1;0;false;false;;;;;; -84847;19;0;false;false;0;0;0;;; -84866;1;0;false;false;;;;;; -84867;1;0;false;false;0;0;0;;; -84868;1;0;false;false;;;;;; -84869;16;0;false;false;0;0;0;;; -84885;1;0;false;false;;;;;; -84886;1;0;false;false;0;0;0;;; -84887;1;0;false;false;;;;;; -84888;2;0;false;false;0;0;0;;; -84890;7;0;false;false;;;;;; -84897;27;0;false;false;0;0;0;;; -84924;7;0;false;false;;;;;; -84931;32;0;false;false;0;0;0;;; -84963;1;0;false;false;;;;;; -84964;4;1;false;false;127;0;85;;; -84968;2;0;false;false;0;0;0;;; -84970;6;0;false;false;;;;;; -84976;1;0;false;false;0;0;0;;; -84977;5;0;false;false;;;;;; -84982;1;0;false;false;0;0;0;;; -84983;4;0;false;false;;;;;; -84987;2;0;false;false;0;0;0;;; -84989;4;0;false;false;;;;;; -84993;19;0;false;false;0;0;0;;; -85012;1;0;false;false;;;;;; -85013;1;0;false;false;0;0;0;;; -85014;1;0;false;false;;;;;; -85015;10;0;false;false;0;0;0;;; -85025;4;0;false;false;;;;;; -85029;32;0;false;false;0;0;0;;; -85061;1;0;false;false;;;;;; -85062;7;0;false;false;0;0;0;;; -85069;3;0;false;false;;;;;; -85072;1;0;false;false;0;0;0;;; -85073;1;0;false;false;;;;;; -85074;4;1;false;false;127;0;85;;; -85078;1;0;false;false;;;;;; -85079;2;1;false;false;127;0;85;;; -85081;1;0;false;false;;;;;; -85082;10;0;false;false;0;0;0;;; -85092;1;0;false;false;;;;;; -85093;2;0;false;false;0;0;0;;; -85095;1;0;false;false;;;;;; -85096;15;0;false;false;0;0;0;;; -85111;1;0;false;false;;;;;; -85112;1;0;false;false;0;0;0;;; -85113;4;0;false;false;;;;;; -85117;5;0;false;false;0;0;0;;; -85122;1;0;false;false;;;;;; -85123;1;0;false;false;0;0;0;;; -85124;1;0;false;false;;;;;; -85125;3;1;false;false;127;0;85;;; -85128;1;0;false;false;;;;;; -85129;10;0;false;false;0;0;0;;; -85139;1;0;false;false;;;;;; -85140;1;0;false;false;0;0;0;;; -85141;5;0;false;false;;;;;; -85146;6;1;false;false;127;0;85;;; -85152;1;0;false;false;;;;;; -85153;4;1;false;false;127;0;85;;; -85157;1;0;false;false;;;;;; -85158;5;0;false;false;0;0;0;;; -85163;1;0;false;false;;;;;; -85164;1;0;false;false;0;0;0;;; -85165;6;0;false;false;;;;;; -85171;2;1;false;false;127;0;85;;; -85173;1;0;false;false;;;;;; -85174;20;0;false;false;0;0;0;;; -85194;1;0;false;false;;;;;; -85195;2;0;false;false;0;0;0;;; -85197;1;0;false;false;;;;;; -85198;15;0;false;false;0;0;0;;; -85213;1;0;false;false;;;;;; -85214;1;0;false;false;0;0;0;;; -85215;7;0;false;false;;;;;; -85222;15;0;false;false;0;0;0;;; -85237;7;0;false;false;;;;;; -85244;30;0;false;false;0;0;0;;; -85274;7;0;false;false;;;;;; -85281;19;0;false;false;0;0;0;;; -85300;7;0;false;false;;;;;; -85307;32;0;false;false;0;0;0;;; -85339;1;0;false;false;;;;;; -85340;4;1;false;false;127;0;85;;; -85344;2;0;false;false;0;0;0;;; -85346;6;0;false;false;;;;;; -85352;1;0;false;false;0;0;0;;; -85353;5;0;false;false;;;;;; -85358;1;0;false;false;0;0;0;;; -85359;4;0;false;false;;;;;; -85363;2;0;false;false;0;0;0;;; -85365;4;0;false;false;;;;;; -85369;19;0;false;false;0;0;0;;; -85388;1;0;false;false;;;;;; -85389;1;0;false;false;0;0;0;;; -85390;1;0;false;false;;;;;; -85391;10;0;false;false;0;0;0;;; -85401;4;0;false;false;;;;;; -85405;32;0;false;false;0;0;0;;; -85437;1;0;false;false;;;;;; -85438;7;0;false;false;0;0;0;;; -85445;3;0;false;false;;;;;; -85448;1;0;false;false;0;0;0;;; -85449;1;0;false;false;;;;;; -85450;4;1;false;false;127;0;85;;; -85454;1;0;false;false;;;;;; -85455;2;1;false;false;127;0;85;;; -85457;1;0;false;false;;;;;; -85458;10;0;false;false;0;0;0;;; -85468;1;0;false;false;;;;;; -85469;2;0;false;false;0;0;0;;; -85471;1;0;false;false;;;;;; -85472;19;0;false;false;0;0;0;;; -85491;1;0;false;false;;;;;; -85492;1;0;false;false;0;0;0;;; -85493;4;0;false;false;;;;;; -85497;5;0;false;false;0;0;0;;; -85502;1;0;false;false;;;;;; -85503;1;0;false;false;0;0;0;;; -85504;1;0;false;false;;;;;; -85505;3;1;false;false;127;0;85;;; -85508;1;0;false;false;;;;;; -85509;10;0;false;false;0;0;0;;; -85519;1;0;false;false;;;;;; -85520;1;0;false;false;0;0;0;;; -85521;5;0;false;false;;;;;; -85526;6;1;false;false;127;0;85;;; -85532;1;0;false;false;;;;;; -85533;4;1;false;false;127;0;85;;; -85537;1;0;false;false;;;;;; -85538;5;0;false;false;0;0;0;;; -85543;1;0;false;false;;;;;; -85544;1;0;false;false;0;0;0;;; -85545;6;0;false;false;;;;;; -85551;2;1;false;false;127;0;85;;; -85553;1;0;false;false;;;;;; -85554;20;0;false;false;0;0;0;;; -85574;1;0;false;false;;;;;; -85575;2;0;false;false;0;0;0;;; -85577;1;0;false;false;;;;;; -85578;19;0;false;false;0;0;0;;; -85597;1;0;false;false;;;;;; -85598;1;0;false;false;0;0;0;;; -85599;7;0;false;false;;;;;; -85606;19;0;false;false;0;0;0;;; -85625;7;0;false;false;;;;;; -85632;30;0;false;false;0;0;0;;; -85662;7;0;false;false;;;;;; -85669;19;0;false;false;0;0;0;;; -85688;7;0;false;false;;;;;; -85695;32;0;false;false;0;0;0;;; -85727;1;0;false;false;;;;;; -85728;4;1;false;false;127;0;85;;; -85732;2;0;false;false;0;0;0;;; -85734;6;0;false;false;;;;;; -85740;1;0;false;false;0;0;0;;; -85741;5;0;false;false;;;;;; -85746;1;0;false;false;0;0;0;;; -85747;4;0;false;false;;;;;; -85751;2;0;false;false;0;0;0;;; -85753;4;0;false;false;;;;;; -85757;19;0;false;false;0;0;0;;; -85776;1;0;false;false;;;;;; -85777;1;0;false;false;0;0;0;;; -85778;1;0;false;false;;;;;; -85779;10;0;false;false;0;0;0;;; -85789;4;0;false;false;;;;;; -85793;32;0;false;false;0;0;0;;; -85825;1;0;false;false;;;;;; -85826;7;0;false;false;0;0;0;;; -85833;3;0;false;false;;;;;; -85836;1;0;false;false;0;0;0;;; -85837;2;0;false;false;;;;;; -85839;1;0;false;false;0;0;0;;; -85840;2;0;false;false;;;;;; -85842;3;0;false;false;63;95;191;;; -85845;3;0;false;false;;;;;; -85848;1;0;false;false;63;95;191;;; -85849;1;0;false;false;;;;;; -85850;7;0;false;false;63;95;191;;; -85857;1;0;false;false;;;;;; -85858;3;0;false;false;63;95;191;;; -85861;1;0;false;false;;;;;; -85862;8;0;false;false;63;95;191;;; -85870;1;0;false;false;;;;;; -85871;10;0;false;false;63;95;191;;; -85881;1;0;false;false;;;;;; -85882;6;0;false;false;63;95;191;;; -85888;1;0;false;false;;;;;; -85889;3;0;false;false;63;95;191;;; -85892;1;0;false;false;;;;;; -85893;8;0;false;false;63;95;191;;; -85901;1;0;false;false;;;;;; -85902;4;0;false;false;63;95;191;;; -85906;1;0;false;false;;;;;; -85907;2;0;false;false;63;95;191;;; -85909;1;0;false;false;;;;;; -85910;4;0;false;false;63;95;191;;; -85914;3;0;false;false;;;;;; -85917;1;0;false;false;63;95;191;;; -85918;1;0;false;false;;;;;; -85919;4;0;false;false;63;95;191;;; -85923;1;0;false;false;;;;;; -85924;3;0;false;false;63;95;191;;; -85927;1;0;false;false;;;;;; -85928;5;0;false;false;63;95;191;;; -85933;1;0;false;false;;;;;; -85934;2;0;false;false;63;95;191;;; -85936;1;0;false;false;;;;;; -85937;5;0;false;false;63;95;191;;; -85942;1;0;false;false;;;;;; -85943;2;0;false;false;63;95;191;;; -85945;1;0;false;false;;;;;; -85946;3;0;false;false;63;95;191;;; -85949;1;0;false;false;;;;;; -85950;7;0;false;false;63;95;191;;; -85957;1;0;false;false;;;;;; -85958;5;0;false;false;63;95;191;;; -85963;3;0;false;false;;;;;; -85966;2;0;false;false;63;95;191;;; -85968;2;0;false;false;;;;;; -85970;4;1;false;false;127;0;85;;; -85974;1;0;false;false;;;;;; -85975;13;0;false;false;0;0;0;;; -85988;1;0;false;false;;;;;; -85989;1;0;false;false;0;0;0;;; -85990;3;0;false;false;;;;;; -85993;5;0;false;false;0;0;0;;; -85998;1;0;false;false;;;;;; -85999;5;0;false;false;0;0;0;;; -86004;1;0;false;false;;;;;; -86005;1;0;false;false;0;0;0;;; -86006;1;0;false;false;;;;;; -86007;3;1;false;false;127;0;85;;; -86010;1;0;false;false;;;;;; -86011;8;0;false;false;0;0;0;;; -86019;3;0;false;false;;;;;; -86022;10;0;false;false;0;0;0;;; -86032;1;0;false;false;;;;;; -86033;1;0;false;false;0;0;0;;; -86034;1;0;false;false;;;;;; -86035;2;0;false;false;42;0;255;;; -86037;1;0;false;false;0;0;0;;; -86038;3;0;false;false;;;;;; -86041;2;1;false;false;127;0;85;;; -86043;1;0;false;false;;;;;; -86044;12;0;false;false;0;0;0;;; -86056;1;0;false;false;;;;;; -86057;2;0;false;false;0;0;0;;; -86059;1;0;false;false;;;;;; -86060;12;0;false;false;0;0;0;;; -86072;1;0;false;false;;;;;; -86073;1;0;false;false;0;0;0;;; -86074;4;0;false;false;;;;;; -86078;11;0;false;false;0;0;0;;; -86089;1;0;false;false;;;;;; -86090;1;0;false;false;0;0;0;;; -86091;1;0;false;false;;;;;; -86092;12;0;false;false;0;0;0;;; -86104;4;0;false;false;;;;;; -86108;9;0;false;false;0;0;0;;; -86117;1;0;false;false;;;;;; -86118;1;0;false;false;0;0;0;;; -86119;1;0;false;false;;;;;; -86120;12;0;false;false;0;0;0;;; -86132;4;0;false;false;;;;;; -86136;20;0;false;false;0;0;0;;; -86156;3;0;false;false;;;;;; -86159;1;0;false;false;0;0;0;;; -86160;3;0;false;false;;;;;; -86163;4;1;false;false;127;0;85;;; -86167;3;0;false;false;;;;;; -86170;2;1;false;false;127;0;85;;; -86172;1;0;false;false;;;;;; -86173;12;0;false;false;0;0;0;;; -86185;1;0;false;false;;;;;; -86186;1;0;false;false;0;0;0;;; -86187;1;0;false;false;;;;;; -86188;2;0;false;false;0;0;0;;; -86190;1;0;false;false;;;;;; -86191;1;0;false;false;0;0;0;;; -86192;4;0;false;false;;;;;; -86196;3;1;false;false;127;0;85;;; -86199;1;0;false;false;;;;;; -86200;4;0;false;false;0;0;0;;; -86204;1;0;false;false;;;;;; -86205;1;0;false;false;0;0;0;;; -86206;1;0;false;false;;;;;; -86207;37;0;false;false;0;0;0;;; -86244;4;0;false;false;;;;;; -86248;3;1;false;false;127;0;85;;; -86251;1;0;false;false;;;;;; -86252;10;0;false;false;0;0;0;;; -86262;1;0;false;false;;;;;; -86263;1;0;false;false;0;0;0;;; -86264;1;0;false;false;;;;;; -86265;30;0;false;false;0;0;0;;; -86295;10;0;false;false;;;;;; -86305;2;1;false;false;127;0;85;;; -86307;1;0;false;false;;;;;; -86308;12;0;false;false;0;0;0;;; -86320;1;0;false;false;;;;;; -86321;2;0;false;false;0;0;0;;; -86323;1;0;false;false;;;;;; -86324;11;0;false;false;0;0;0;;; -86335;1;0;false;false;;;;;; -86336;1;0;false;false;0;0;0;;; -86337;5;0;false;false;;;;;; -86342;10;0;false;false;0;0;0;;; -86352;1;0;false;false;;;;;; -86353;1;0;false;false;0;0;0;;; -86354;1;0;false;false;;;;;; -86355;28;0;false;false;0;0;0;;; -86383;1;0;false;false;;;;;; -86384;1;0;false;false;0;0;0;;; -86385;1;0;false;false;;;;;; -86386;3;0;false;false;0;0;0;;; -86389;5;0;false;false;;;;;; -86394;11;0;false;false;0;0;0;;; -86405;1;0;false;false;;;;;; -86406;1;0;false;false;0;0;0;;; -86407;1;0;false;false;;;;;; -86408;10;0;false;false;0;0;0;;; -86418;1;0;false;false;;;;;; -86419;1;0;false;false;0;0;0;;; -86420;1;0;false;false;;;;;; -86421;20;0;false;false;0;0;0;;; -86441;1;0;false;false;;;;;; -86442;1;0;false;false;0;0;0;;; -86443;1;0;false;false;;;;;; -86444;12;0;false;false;0;0;0;;; -86456;5;0;false;false;;;;;; -86461;9;0;false;false;0;0;0;;; -86470;1;0;false;false;;;;;; -86471;1;0;false;false;0;0;0;;; -86472;1;0;false;false;;;;;; -86473;12;0;false;false;0;0;0;;; -86485;4;0;false;false;;;;;; -86489;1;0;false;false;0;0;0;;; -86490;4;0;false;false;;;;;; -86494;4;1;false;false;127;0;85;;; -86498;1;0;false;false;;;;;; -86499;1;0;false;false;0;0;0;;; -86500;5;0;false;false;;;;;; -86505;6;0;false;false;0;0;0;;; -86511;1;0;false;false;;;;;; -86512;8;0;false;false;0;0;0;;; -86520;1;0;false;false;;;;;; -86521;1;0;false;false;0;0;0;;; -86522;1;0;false;false;;;;;; -86523;22;0;false;false;0;0;0;;; -86545;5;0;false;false;;;;;; -86550;10;0;false;false;0;0;0;;; -86560;1;0;false;false;;;;;; -86561;6;0;false;false;0;0;0;;; -86567;1;0;false;false;;;;;; -86568;1;0;false;false;0;0;0;;; -86569;1;0;false;false;;;;;; -86570;32;0;false;false;0;0;0;;; -86602;1;0;false;false;;;;;; -86603;12;0;false;false;0;0;0;;; -86615;5;0;false;false;;;;;; -86620;3;1;false;false;127;0;85;;; -86623;1;0;false;false;;;;;; -86624;5;0;false;false;0;0;0;;; -86629;1;0;false;false;;;;;; -86630;1;0;false;false;0;0;0;;; -86631;1;0;false;false;;;;;; -86632;36;0;false;false;0;0;0;;; -86668;1;0;false;false;;;;;; -86669;1;0;false;false;0;0;0;;; -86670;1;0;false;false;;;;;; -86671;11;0;false;false;0;0;0;;; -86682;1;0;false;false;;;;;; -86683;19;0;false;false;0;0;0;;; -86702;5;0;false;false;;;;;; -86707;35;0;false;false;0;0;0;;; -86742;6;0;false;false;;;;;; -86748;11;0;false;false;0;0;0;;; -86759;1;0;false;false;;;;;; -86760;1;0;false;false;0;0;0;;; -86761;1;0;false;false;;;;;; -86762;5;0;false;false;0;0;0;;; -86767;1;0;false;false;;;;;; -86768;1;0;false;false;0;0;0;;; -86769;1;0;false;false;;;;;; -86770;11;0;false;false;0;0;0;;; -86781;5;0;false;false;;;;;; -86786;9;0;false;false;0;0;0;;; -86795;1;0;false;false;;;;;; -86796;1;0;false;false;0;0;0;;; -86797;1;0;false;false;;;;;; -86798;12;0;false;false;0;0;0;;; -86810;4;0;false;false;;;;;; -86814;1;0;false;false;0;0;0;;; -86815;4;0;false;false;;;;;; -86819;20;0;false;false;0;0;0;;; -86839;3;0;false;false;;;;;; -86842;1;0;false;false;0;0;0;;; -86843;2;0;false;false;;;;;; -86845;1;0;false;false;0;0;0;;; -86846;2;0;false;false;;;;;; -86848;3;0;false;false;63;95;191;;; -86851;3;0;false;false;;;;;; -86854;1;0;false;false;63;95;191;;; -86855;1;0;false;false;;;;;; -86856;8;0;false;false;63;95;191;;; -86864;1;0;false;false;;;;;; -86865;3;0;false;false;63;95;191;;; -86868;1;0;false;false;;;;;; -86869;9;0;false;false;63;95;191;;; -86878;1;0;false;false;;;;;; -86879;4;0;false;false;63;95;191;;; -86883;1;0;false;false;;;;;; -86884;3;0;false;false;63;95;191;;; -86887;1;0;false;false;;;;;; -86888;9;0;false;false;63;95;191;;; -86897;1;0;false;false;;;;;; -86898;2;0;false;false;63;95;191;;; -86900;1;0;false;false;;;;;; -86901;6;0;false;false;63;95;191;;; -86907;1;0;false;false;;;;;; -86908;3;0;false;false;63;95;191;;; -86911;1;0;false;false;;;;;; -86912;9;0;false;false;63;95;191;;; -86921;1;0;false;false;;;;;; -86922;2;0;false;false;63;95;191;;; -86924;1;0;false;false;;;;;; -86925;3;0;false;false;63;95;191;;; -86928;4;0;false;false;;;;;; -86932;1;0;false;false;63;95;191;;; -86933;1;0;false;false;;;;;; -86934;7;0;false;false;63;95;191;;; -86941;1;0;false;false;;;;;; -86942;5;0;false;false;63;95;191;;; -86947;1;0;false;false;;;;;; -86948;8;0;false;false;63;95;191;;; -86956;1;0;false;false;;;;;; -86957;2;0;false;false;63;95;191;;; -86959;1;0;false;false;;;;;; -86960;2;0;false;false;63;95;191;;; -86962;1;0;false;false;;;;;; -86963;9;0;false;false;63;95;191;;; -86972;1;0;false;false;;;;;; -86973;7;0;false;false;63;95;191;;; -86980;3;0;false;false;;;;;; -86983;1;0;false;false;63;95;191;;; -86984;1;0;false;false;;;;;; -86985;2;0;false;false;63;95;191;;; -86987;1;0;false;false;;;;;; -86988;1;0;false;false;63;95;191;;; -86989;1;0;false;false;;;;;; -86990;8;0;false;false;63;95;191;;; -86998;1;0;false;false;;;;;; -86999;6;0;false;false;63;95;191;;; -87005;1;0;false;false;;;;;; -87006;3;0;false;false;63;95;191;;; -87009;1;0;false;false;;;;;; -87010;5;0;false;false;63;95;191;;; -87015;1;0;false;false;;;;;; -87016;7;0;false;false;63;95;191;;; -87023;1;0;false;false;;;;;; -87024;2;0;false;false;63;95;191;;; -87026;1;0;false;false;;;;;; -87027;4;0;false;false;63;95;191;;; -87031;1;0;false;false;;;;;; -87032;3;0;false;false;63;95;191;;; -87035;1;0;false;false;;;;;; -87036;4;0;false;false;63;95;191;;; -87040;1;0;false;false;;;;;; -87041;5;0;false;false;63;95;191;;; -87046;1;0;false;false;;;;;; -87047;9;0;false;false;63;95;191;;; -87056;4;0;false;false;;;;;; -87060;1;0;false;false;63;95;191;;; -87061;1;0;false;false;;;;;; -87062;4;0;false;false;63;95;191;;; -87066;1;0;false;false;;;;;; -87067;2;0;false;false;63;95;191;;; -87069;1;0;false;false;;;;;; -87070;3;0;false;false;63;95;191;;; -87073;1;0;false;false;;;;;; -87074;6;0;false;false;63;95;191;;; -87080;1;0;false;false;;;;;; -87081;2;0;false;false;63;95;191;;; -87083;1;0;false;false;;;;;; -87084;4;0;false;false;63;95;191;;; -87088;1;0;false;false;;;;;; -87089;9;0;false;false;63;95;191;;; -87098;3;0;false;false;;;;;; -87101;1;0;false;false;63;95;191;;; -87102;1;0;false;false;;;;;; -87103;3;0;false;false;127;127;159;;; -87106;3;0;false;false;;;;;; -87109;1;0;false;false;63;95;191;;; -87110;3;0;false;false;;;;;; -87113;1;0;false;false;63;95;191;;; -87114;1;0;false;false;;;;;; -87115;7;1;false;false;127;159;191;;; -87122;3;0;false;false;63;95;191;;; -87125;1;0;false;false;;;;;; -87126;3;0;false;false;63;95;191;;; -87129;1;0;false;false;;;;;; -87130;9;0;false;false;63;95;191;;; -87139;1;0;false;false;;;;;; -87140;5;0;false;false;63;95;191;;; -87145;1;0;false;false;;;;;; -87146;2;0;false;false;63;95;191;;; -87148;1;0;false;false;;;;;; -87149;3;0;false;false;63;95;191;;; -87152;1;0;false;false;;;;;; -87153;4;0;false;false;63;95;191;;; -87157;3;0;false;false;;;;;; -87160;2;0;false;false;63;95;191;;; -87162;2;0;false;false;;;;;; -87164;4;1;false;false;127;0;85;;; -87168;1;0;false;false;;;;;; -87169;10;0;false;false;0;0;0;;; -87179;4;1;false;false;127;0;85;;; -87183;1;0;false;false;;;;;; -87184;4;0;false;false;0;0;0;;; -87188;1;0;false;false;;;;;; -87189;1;0;false;false;0;0;0;;; -87190;3;0;false;false;;;;;; -87193;5;0;false;false;0;0;0;;; -87198;1;0;false;false;;;;;; -87199;6;0;false;false;0;0;0;;; -87205;6;0;false;false;;;;;; -87211;2;1;false;false;127;0;85;;; -87213;1;0;false;false;;;;;; -87214;10;0;false;false;0;0;0;;; -87224;1;0;false;false;;;;;; -87225;1;0;false;false;0;0;0;;; -87226;1;0;false;false;;;;;; -87227;1;0;false;false;0;0;0;;; -87228;1;0;false;false;;;;;; -87229;2;0;false;false;0;0;0;;; -87231;5;0;false;false;;;;;; -87236;22;0;false;false;0;0;0;;; -87258;1;0;false;false;;;;;; -87259;1;0;false;false;0;0;0;;; -87260;1;0;false;false;;;;;; -87261;12;0;false;false;0;0;0;;; -87273;1;0;false;false;;;;;; -87274;1;0;false;false;0;0;0;;; -87275;1;0;false;false;;;;;; -87276;12;0;false;false;0;0;0;;; -87288;1;0;false;false;;;;;; -87289;2;0;false;false;0;0;0;;; -87291;1;0;false;false;;;;;; -87292;10;0;false;false;0;0;0;;; -87302;1;0;false;false;;;;;; -87303;1;0;false;false;0;0;0;;; -87304;4;0;false;false;;;;;; -87308;6;1;false;false;127;0;85;;; -87314;1;0;false;false;0;0;0;;; -87315;3;0;false;false;;;;;; -87318;1;0;false;false;0;0;0;;; -87319;4;0;false;false;;;;;; -87323;5;0;false;false;0;0;0;;; -87328;1;0;false;false;;;;;; -87329;1;0;false;false;0;0;0;;; -87330;1;0;false;false;;;;;; -87331;3;1;false;false;127;0;85;;; -87334;1;0;false;false;;;;;; -87335;8;0;false;false;0;0;0;;; -87343;3;0;false;false;;;;;; -87346;11;0;false;false;0;0;0;;; -87357;1;0;false;false;;;;;; -87358;1;0;false;false;0;0;0;;; -87359;1;0;false;false;;;;;; -87360;12;0;false;false;0;0;0;;; -87372;3;0;false;false;;;;;; -87375;9;0;false;false;0;0;0;;; -87384;1;0;false;false;;;;;; -87385;1;0;false;false;0;0;0;;; -87386;1;0;false;false;;;;;; -87387;12;0;false;false;0;0;0;;; -87399;3;0;false;false;;;;;; -87402;55;0;false;false;63;127;95;;; -87457;1;0;false;false;;;;;; -87458;69;0;false;false;63;127;95;;; -87527;1;0;false;false;;;;;; -87528;40;0;false;false;63;127;95;;; -87568;1;0;false;false;;;;;; -87569;2;1;false;false;127;0;85;;; -87571;1;0;false;false;;;;;; -87572;4;0;false;false;0;0;0;;; -87576;1;0;false;false;;;;;; -87577;2;0;false;false;0;0;0;;; -87579;1;0;false;false;;;;;; -87580;6;0;false;false;0;0;0;;; -87586;1;0;false;false;;;;;; -87587;2;0;false;false;0;0;0;;; -87589;1;0;false;false;;;;;; -87590;3;0;false;false;0;0;0;;; -87593;1;0;false;false;;;;;; -87594;2;0;false;false;0;0;0;;; -87596;1;0;false;false;;;;;; -87597;7;0;false;false;0;0;0;;; -87604;1;0;false;false;;;;;; -87605;1;0;false;false;0;0;0;;; -87606;4;0;false;false;;;;;; -87610;2;1;false;false;127;0;85;;; -87612;1;0;false;false;;;;;; -87613;17;0;false;false;0;0;0;;; -87630;1;0;false;false;;;;;; -87631;1;0;false;false;0;0;0;;; -87632;5;0;false;false;;;;;; -87637;10;0;false;false;0;0;0;;; -87647;1;0;false;false;;;;;; -87648;1;0;false;false;0;0;0;;; -87649;1;0;false;false;;;;;; -87650;19;0;false;false;0;0;0;;; -87669;4;0;false;false;;;;;; -87673;1;0;false;false;0;0;0;;; -87674;3;0;false;false;;;;;; -87677;1;0;false;false;0;0;0;;; -87678;3;0;false;false;;;;;; -87681;69;0;false;false;63;127;95;;; -87750;1;0;false;false;;;;;; -87751;66;0;false;false;63;127;95;;; -87817;1;0;false;false;;;;;; -87818;4;1;false;false;127;0;85;;; -87822;3;0;false;false;;;;;; -87825;2;1;false;false;127;0;85;;; -87827;1;0;false;false;;;;;; -87828;12;0;false;false;0;0;0;;; -87840;1;0;false;false;;;;;; -87841;2;0;false;false;0;0;0;;; -87843;1;0;false;false;;;;;; -87844;11;0;false;false;0;0;0;;; -87855;1;0;false;false;;;;;; -87856;2;0;false;false;0;0;0;;; -87858;1;0;false;false;;;;;; -87859;9;0;false;false;0;0;0;;; -87868;1;0;false;false;;;;;; -87869;2;0;false;false;0;0;0;;; -87871;1;0;false;false;;;;;; -87872;3;0;false;false;0;0;0;;; -87875;1;0;false;false;;;;;; -87876;2;0;false;false;0;0;0;;; -87878;1;0;false;false;;;;;; -87879;4;0;false;false;0;0;0;;; -87883;1;0;false;false;;;;;; -87884;1;0;false;false;0;0;0;;; -87885;4;0;false;false;;;;;; -87889;3;1;false;false;127;0;85;;; -87892;1;0;false;false;;;;;; -87893;9;0;false;false;0;0;0;;; -87902;1;0;false;false;;;;;; -87903;1;0;false;false;0;0;0;;; -87904;1;0;false;false;;;;;; -87905;35;0;false;false;0;0;0;;; -87940;4;0;false;false;;;;;; -87944;3;1;false;false;127;0;85;;; -87947;1;0;false;false;;;;;; -87948;10;0;false;false;0;0;0;;; -87958;1;0;false;false;;;;;; -87959;1;0;false;false;0;0;0;;; -87960;1;0;false;false;;;;;; -87961;35;0;false;false;0;0;0;;; -87996;4;0;false;false;;;;;; -88000;6;0;false;false;0;0;0;;; -88006;1;0;false;false;;;;;; -88007;4;0;false;false;0;0;0;;; -88011;1;0;false;false;;;;;; -88012;1;0;false;false;0;0;0;;; -88013;1;0;false;false;;;;;; -88014;27;0;false;false;0;0;0;;; -88041;4;0;false;false;;;;;; -88045;66;0;false;false;63;127;95;;; -88111;2;0;false;false;;;;;; -88113;20;0;false;false;63;127;95;;; -88133;2;0;false;false;;;;;; -88135;2;1;false;false;127;0;85;;; -88137;1;0;false;false;;;;;; -88138;10;0;false;false;0;0;0;;; -88148;1;0;false;false;;;;;; -88149;1;0;false;false;0;0;0;;; -88150;1;0;false;false;;;;;; -88151;10;0;false;false;0;0;0;;; -88161;1;0;false;false;;;;;; -88162;1;0;false;false;0;0;0;;; -88163;1;0;false;false;;;;;; -88164;14;0;false;false;0;0;0;;; -88178;1;0;false;false;;;;;; -88179;1;0;false;false;0;0;0;;; -88180;5;0;false;false;;;;;; -88185;12;0;false;false;0;0;0;;; -88197;4;0;false;false;;;;;; -88201;1;0;false;false;0;0;0;;; -88202;4;0;false;false;;;;;; -88206;10;0;false;false;0;0;0;;; -88216;1;0;false;false;;;;;; -88217;1;0;false;false;0;0;0;;; -88218;1;0;false;false;;;;;; -88219;3;1;false;false;127;0;85;;; -88222;1;0;false;false;;;;;; -88223;7;0;false;false;0;0;0;;; -88230;3;1;false;false;127;0;85;;; -88233;1;0;false;false;;;;;; -88234;4;1;false;false;127;0;85;;; -88238;2;0;false;false;0;0;0;;; -88240;1;0;false;false;;;;;; -88241;7;0;false;false;0;0;0;;; -88248;3;0;false;false;;;;;; -88251;1;0;false;false;0;0;0;;; -88252;3;0;false;false;;;;;; -88255;4;1;false;false;127;0;85;;; -88259;1;0;false;false;;;;;; -88260;1;0;false;false;0;0;0;;; -88261;4;0;false;false;;;;;; -88265;10;0;false;false;0;0;0;;; -88275;1;0;false;false;;;;;; -88276;1;0;false;false;0;0;0;;; -88277;1;0;false;false;;;;;; -88278;3;1;false;false;127;0;85;;; -88281;1;0;false;false;;;;;; -88282;7;0;false;false;0;0;0;;; -88289;3;1;false;false;127;0;85;;; -88292;1;0;false;false;;;;;; -88293;4;1;false;false;127;0;85;;; -88297;2;0;false;false;0;0;0;;; -88299;1;0;false;false;;;;;; -88300;7;0;false;false;0;0;0;;; -88307;3;0;false;false;;;;;; -88310;1;0;false;false;0;0;0;;; -88311;3;0;false;false;;;;;; -88314;2;1;false;false;127;0;85;;; -88316;1;0;false;false;;;;;; -88317;11;0;false;false;0;0;0;;; -88328;1;0;false;false;;;;;; -88329;2;0;false;false;0;0;0;;; -88331;1;0;false;false;;;;;; -88332;4;1;false;false;127;0;85;;; -88336;1;0;false;false;0;0;0;;; -88337;1;0;false;false;;;;;; -88338;1;0;false;false;0;0;0;;; -88339;4;0;false;false;;;;;; -88343;20;0;false;false;0;0;0;;; -88363;3;0;false;false;;;;;; -88366;1;0;false;false;0;0;0;;; -88367;2;0;false;false;;;;;; -88369;1;0;false;false;0;0;0;;; -88370;2;0;false;false;;;;;; -88372;3;0;false;false;63;95;191;;; -88375;3;0;false;false;;;;;; -88378;1;0;false;false;63;95;191;;; -88379;1;0;false;false;;;;;; -88380;5;0;false;false;63;95;191;;; -88385;1;0;false;false;;;;;; -88386;3;0;false;false;63;95;191;;; -88389;1;0;false;false;;;;;; -88390;5;0;false;false;63;95;191;;; -88395;1;0;false;false;;;;;; -88396;5;0;false;false;63;95;191;;; -88401;1;0;false;false;;;;;; -88402;3;0;false;false;63;95;191;;; -88405;1;0;false;false;;;;;; -88406;4;0;false;false;63;95;191;;; -88410;1;0;false;false;;;;;; -88411;9;0;false;false;63;95;191;;; -88420;1;0;false;false;;;;;; -88421;2;0;false;false;63;95;191;;; -88423;1;0;false;false;;;;;; -88424;3;0;false;false;63;95;191;;; -88427;1;0;false;false;;;;;; -88428;6;0;false;false;63;95;191;;; -88434;1;0;false;false;;;;;; -88435;8;0;false;false;63;95;191;;; -88443;3;0;false;false;;;;;; -88446;2;0;false;false;63;95;191;;; -88448;2;0;false;false;;;;;; -88450;4;1;false;false;127;0;85;;; -88454;1;0;false;false;;;;;; -88455;14;0;false;false;0;0;0;;; -88469;1;0;false;false;;;;;; -88470;1;0;false;false;0;0;0;;; -88471;3;0;false;false;;;;;; -88474;63;0;false;false;63;127;95;;; -88537;1;0;false;false;;;;;; -88538;27;0;false;false;63;127;95;;; -88565;1;0;false;false;;;;;; -88566;2;1;false;false;127;0;85;;; -88568;1;0;false;false;;;;;; -88569;16;0;false;false;0;0;0;;; -88585;1;0;false;false;;;;;; -88586;1;0;false;false;0;0;0;;; -88587;4;0;false;false;;;;;; -88591;12;0;false;false;0;0;0;;; -88603;3;0;false;false;;;;;; -88606;1;0;false;false;0;0;0;;; -88607;3;0;false;false;;;;;; -88610;4;1;false;false;127;0;85;;; -88614;1;0;false;false;;;;;; -88615;1;0;false;false;0;0;0;;; -88616;4;0;false;false;;;;;; -88620;3;1;false;false;127;0;85;;; -88623;1;0;false;false;;;;;; -88624;6;0;false;false;0;0;0;;; -88630;1;0;false;false;;;;;; -88631;1;0;false;false;0;0;0;;; -88632;1;0;false;false;;;;;; -88633;23;0;false;false;0;0;0;;; -88656;6;0;false;false;;;;;; -88662;2;1;false;false;127;0;85;;; -88664;1;0;false;false;;;;;; -88665;12;0;false;false;0;0;0;;; -88677;1;0;false;false;;;;;; -88678;1;0;false;false;0;0;0;;; -88679;1;0;false;false;;;;;; -88680;7;0;false;false;0;0;0;;; -88687;1;0;false;false;;;;;; -88688;1;0;false;false;0;0;0;;; -88689;5;0;false;false;;;;;; -88694;11;0;false;false;0;0;0;;; -88705;1;0;false;false;;;;;; -88706;1;0;false;false;0;0;0;;; -88707;1;0;false;false;;;;;; -88708;7;0;false;false;0;0;0;;; -88715;5;0;false;false;;;;;; -88720;12;0;false;false;0;0;0;;; -88732;4;0;false;false;;;;;; -88736;1;0;false;false;0;0;0;;; -88737;3;0;false;false;;;;;; -88740;1;0;false;false;0;0;0;;; -88741;2;0;false;false;;;;;; -88743;1;0;false;false;0;0;0;;; -88744;2;0;false;false;;;;;; -88746;3;0;false;false;63;95;191;;; -88749;3;0;false;false;;;;;; -88752;1;0;false;false;63;95;191;;; -88753;1;0;false;false;;;;;; -88754;5;0;false;false;63;95;191;;; -88759;1;0;false;false;;;;;; -88760;3;0;false;false;63;95;191;;; -88763;1;0;false;false;;;;;; -88764;5;0;false;false;63;95;191;;; -88769;1;0;false;false;;;;;; -88770;2;0;false;false;63;95;191;;; -88772;1;0;false;false;;;;;; -88773;5;0;false;false;63;95;191;;; -88778;1;0;false;false;;;;;; -88779;2;0;false;false;63;95;191;;; -88781;1;0;false;false;;;;;; -88782;3;0;false;false;63;95;191;;; -88785;1;0;false;false;;;;;; -88786;5;0;false;false;63;95;191;;; -88791;1;0;false;false;;;;;; -88792;9;0;false;false;63;95;191;;; -88801;1;0;false;false;;;;;; -88802;2;0;false;false;63;95;191;;; -88804;1;0;false;false;;;;;; -88805;3;0;false;false;63;95;191;;; -88808;1;0;false;false;;;;;; -88809;6;0;false;false;63;95;191;;; -88815;1;0;false;false;;;;;; -88816;8;0;false;false;63;95;191;;; -88824;3;0;false;false;;;;;; -88827;2;0;false;false;63;95;191;;; -88829;2;0;false;false;;;;;; -88831;4;1;false;false;127;0;85;;; -88835;1;0;false;false;;;;;; -88836;16;0;false;false;0;0;0;;; -88852;1;0;false;false;;;;;; -88853;1;0;false;false;0;0;0;;; -88854;3;0;false;false;;;;;; -88857;2;1;false;false;127;0;85;;; -88859;1;0;false;false;;;;;; -88860;12;0;false;false;0;0;0;;; -88872;1;0;false;false;;;;;; -88873;1;0;false;false;0;0;0;;; -88874;1;0;false;false;;;;;; -88875;2;0;false;false;0;0;0;;; -88877;1;0;false;false;;;;;; -88878;1;0;false;false;0;0;0;;; -88879;4;0;false;false;;;;;; -88883;11;0;false;false;0;0;0;;; -88894;1;0;false;false;;;;;; -88895;1;0;false;false;0;0;0;;; -88896;1;0;false;false;;;;;; -88897;2;0;false;false;0;0;0;;; -88899;4;0;false;false;;;;;; -88903;12;0;false;false;0;0;0;;; -88915;3;0;false;false;;;;;; -88918;1;0;false;false;0;0;0;;; -88919;2;0;false;false;;;;;; -88921;1;0;false;false;0;0;0;;; -88922;2;0;false;false;;;;;; -88924;3;0;false;false;63;95;191;;; -88927;3;0;false;false;;;;;; -88930;1;0;false;false;63;95;191;;; -88931;1;0;false;false;;;;;; -88932;5;0;false;false;63;95;191;;; -88937;1;0;false;false;;;;;; -88938;3;0;false;false;63;95;191;;; -88941;1;0;false;false;;;;;; -88942;5;0;false;false;63;95;191;;; -88947;1;0;false;false;;;;;; -88948;2;0;false;false;63;95;191;;; -88950;1;0;false;false;;;;;; -88951;3;0;false;false;63;95;191;;; -88954;1;0;false;false;;;;;; -88955;5;0;false;false;63;95;191;;; -88960;1;0;false;false;;;;;; -88961;2;0;false;false;63;95;191;;; -88963;1;0;false;false;;;;;; -88964;3;0;false;false;63;95;191;;; -88967;1;0;false;false;;;;;; -88968;9;0;false;false;63;95;191;;; -88977;1;0;false;false;;;;;; -88978;2;0;false;false;63;95;191;;; -88980;1;0;false;false;;;;;; -88981;1;0;false;false;63;95;191;;; -88982;1;0;false;false;;;;;; -88983;9;0;false;false;63;95;191;;; -88992;1;0;false;false;;;;;; -88993;7;0;false;false;63;95;191;;; -89000;3;0;false;false;;;;;; -89003;1;0;false;false;63;95;191;;; -89004;1;0;false;false;;;;;; -89005;10;0;false;false;63;95;191;;; -89015;1;0;false;false;;;;;; -89016;2;0;false;false;63;95;191;;; -89018;1;0;false;false;;;;;; -89019;2;0;false;false;63;95;191;;; -89021;1;0;false;false;;;;;; -89022;9;0;false;false;63;95;191;;; -89031;1;0;false;false;;;;;; -89032;6;0;false;false;63;95;191;;; -89038;1;0;false;false;;;;;; -89039;4;0;false;false;63;95;191;;; -89043;1;0;false;false;;;;;; -89044;3;0;false;false;63;95;191;;; -89047;1;0;false;false;;;;;; -89048;6;0;false;false;63;95;191;;; -89054;1;0;false;false;;;;;; -89055;9;0;false;false;63;95;191;;; -89064;1;0;false;false;;;;;; -89065;2;0;false;false;63;95;191;;; -89067;1;0;false;false;;;;;; -89068;3;0;false;false;63;95;191;;; -89071;4;0;false;false;;;;;; -89075;1;0;false;false;63;95;191;;; -89076;1;0;false;false;;;;;; -89077;6;0;false;false;63;95;191;;; -89083;1;0;false;false;;;;;; -89084;9;0;false;false;63;95;191;;; -89093;1;0;false;false;;;;;; -89094;6;0;false;false;63;95;191;;; -89100;3;0;false;false;;;;;; -89103;1;0;false;false;63;95;191;;; -89104;1;0;false;false;;;;;; -89105;3;0;false;false;127;127;159;;; -89108;3;0;false;false;;;;;; -89111;1;0;false;false;63;95;191;;; -89112;3;0;false;false;;;;;; -89115;1;0;false;false;63;95;191;;; -89116;1;0;false;false;;;;;; -89117;5;1;false;false;127;159;191;;; -89122;26;0;false;false;63;95;191;;; -89148;3;0;false;false;;;;;; -89151;2;0;false;false;63;95;191;;; -89153;2;0;false;false;;;;;; -89155;4;1;false;false;127;0;85;;; -89159;1;0;false;false;;;;;; -89160;18;0;false;false;0;0;0;;; -89178;1;0;false;false;;;;;; -89179;1;0;false;false;0;0;0;;; -89180;3;0;false;false;;;;;; -89183;9;0;false;false;0;0;0;;; -89192;1;0;false;false;;;;;; -89193;1;0;false;false;0;0;0;;; -89194;1;0;false;false;;;;;; -89195;5;1;false;false;127;0;85;;; -89200;1;0;false;false;0;0;0;;; -89201;3;0;false;false;;;;;; -89204;2;1;false;false;127;0;85;;; -89206;1;0;false;false;;;;;; -89207;12;0;false;false;0;0;0;;; -89219;1;0;false;false;;;;;; -89220;1;0;false;false;0;0;0;;; -89221;1;0;false;false;;;;;; -89222;11;0;false;false;0;0;0;;; -89233;1;0;false;false;;;;;; -89234;1;0;false;false;0;0;0;;; -89235;1;0;false;false;;;;;; -89236;2;0;false;false;0;0;0;;; -89238;1;0;false;false;;;;;; -89239;1;0;false;false;0;0;0;;; -89240;4;0;false;false;;;;;; -89244;3;1;false;false;127;0;85;;; -89247;1;0;false;false;;;;;; -89248;10;0;false;false;0;0;0;;; -89258;8;0;false;false;;;;;; -89266;11;0;false;false;0;0;0;;; -89277;1;0;false;false;;;;;; -89278;1;0;false;false;0;0;0;;; -89279;1;0;false;false;;;;;; -89280;12;0;false;false;0;0;0;;; -89292;4;0;false;false;;;;;; -89296;9;0;false;false;0;0;0;;; -89305;1;0;false;false;;;;;; -89306;1;0;false;false;0;0;0;;; -89307;1;0;false;false;;;;;; -89308;15;0;false;false;0;0;0;;; -89323;4;0;false;false;;;;;; -89327;21;0;false;false;0;0;0;;; -89348;3;0;false;false;;;;;; -89351;1;0;false;false;0;0;0;;; -89352;3;0;false;false;;;;;; -89355;4;1;false;false;127;0;85;;; -89359;1;0;false;false;;;;;; -89360;1;0;false;false;0;0;0;;; -89361;4;0;false;false;;;;;; -89365;28;0;false;false;0;0;0;;; -89393;3;0;false;false;;;;;; -89396;1;0;false;false;0;0;0;;; -89397;2;0;false;false;;;;;; -89399;1;0;false;false;0;0;0;;; -89400;2;0;false;false;;;;;; -89402;3;0;false;false;63;95;191;;; -89405;3;0;false;false;;;;;; -89408;1;0;false;false;63;95;191;;; -89409;1;0;false;false;;;;;; -89410;5;0;false;false;63;95;191;;; -89415;1;0;false;false;;;;;; -89416;3;0;false;false;63;95;191;;; -89419;1;0;false;false;;;;;; -89420;5;0;false;false;63;95;191;;; -89425;1;0;false;false;;;;;; -89426;2;0;false;false;63;95;191;;; -89428;1;0;false;false;;;;;; -89429;3;0;false;false;63;95;191;;; -89432;1;0;false;false;;;;;; -89433;3;0;false;false;63;95;191;;; -89436;1;0;false;false;;;;;; -89437;2;0;false;false;63;95;191;;; -89439;1;0;false;false;;;;;; -89440;3;0;false;false;63;95;191;;; -89443;1;0;false;false;;;;;; -89444;9;0;false;false;63;95;191;;; -89453;1;0;false;false;;;;;; -89454;2;0;false;false;63;95;191;;; -89456;1;0;false;false;;;;;; -89457;1;0;false;false;63;95;191;;; -89458;1;0;false;false;;;;;; -89459;9;0;false;false;63;95;191;;; -89468;1;0;false;false;;;;;; -89469;7;0;false;false;63;95;191;;; -89476;3;0;false;false;;;;;; -89479;1;0;false;false;63;95;191;;; -89480;1;0;false;false;;;;;; -89481;10;0;false;false;63;95;191;;; -89491;1;0;false;false;;;;;; -89492;2;0;false;false;63;95;191;;; -89494;1;0;false;false;;;;;; -89495;2;0;false;false;63;95;191;;; -89497;1;0;false;false;;;;;; -89498;9;0;false;false;63;95;191;;; -89507;1;0;false;false;;;;;; -89508;6;0;false;false;63;95;191;;; -89514;1;0;false;false;;;;;; -89515;4;0;false;false;63;95;191;;; -89519;1;0;false;false;;;;;; -89520;3;0;false;false;63;95;191;;; -89523;1;0;false;false;;;;;; -89524;6;0;false;false;63;95;191;;; -89530;1;0;false;false;;;;;; -89531;9;0;false;false;63;95;191;;; -89540;1;0;false;false;;;;;; -89541;2;0;false;false;63;95;191;;; -89543;1;0;false;false;;;;;; -89544;3;0;false;false;63;95;191;;; -89547;4;0;false;false;;;;;; -89551;1;0;false;false;63;95;191;;; -89552;1;0;false;false;;;;;; -89553;6;0;false;false;63;95;191;;; -89559;1;0;false;false;;;;;; -89560;9;0;false;false;63;95;191;;; -89569;1;0;false;false;;;;;; -89570;6;0;false;false;63;95;191;;; -89576;3;0;false;false;;;;;; -89579;1;0;false;false;63;95;191;;; -89580;1;0;false;false;;;;;; -89581;3;0;false;false;127;127;159;;; -89584;3;0;false;false;;;;;; -89587;1;0;false;false;63;95;191;;; -89588;3;0;false;false;;;;;; -89591;1;0;false;false;63;95;191;;; -89592;1;0;false;false;;;;;; -89593;5;1;false;false;127;159;191;;; -89598;22;0;false;false;63;95;191;;; -89620;3;0;false;false;;;;;; -89623;2;0;false;false;63;95;191;;; -89625;2;0;false;false;;;;;; -89627;4;1;false;false;127;0;85;;; -89631;1;0;false;false;;;;;; -89632;14;0;false;false;0;0;0;;; -89646;1;0;false;false;;;;;; -89647;1;0;false;false;0;0;0;;; -89648;3;0;false;false;;;;;; -89651;9;0;false;false;0;0;0;;; -89660;1;0;false;false;;;;;; -89661;1;0;false;false;0;0;0;;; -89662;1;0;false;false;;;;;; -89663;4;1;false;false;127;0;85;;; -89667;1;0;false;false;0;0;0;;; -89668;3;0;false;false;;;;;; -89671;2;1;false;false;127;0;85;;; -89673;1;0;false;false;;;;;; -89674;12;0;false;false;0;0;0;;; -89686;1;0;false;false;;;;;; -89687;1;0;false;false;0;0;0;;; -89688;1;0;false;false;;;;;; -89689;11;0;false;false;0;0;0;;; -89700;1;0;false;false;;;;;; -89701;1;0;false;false;0;0;0;;; -89702;1;0;false;false;;;;;; -89703;2;0;false;false;0;0;0;;; -89705;1;0;false;false;;;;;; -89706;1;0;false;false;0;0;0;;; -89707;4;0;false;false;;;;;; -89711;3;1;false;false;127;0;85;;; -89714;1;0;false;false;;;;;; -89715;10;0;false;false;0;0;0;;; -89725;6;0;false;false;;;;;; -89731;11;0;false;false;0;0;0;;; -89742;1;0;false;false;;;;;; -89743;1;0;false;false;0;0;0;;; -89744;1;0;false;false;;;;;; -89745;12;0;false;false;0;0;0;;; -89757;4;0;false;false;;;;;; -89761;9;0;false;false;0;0;0;;; -89770;1;0;false;false;;;;;; -89771;1;0;false;false;0;0;0;;; -89772;1;0;false;false;;;;;; -89773;15;0;false;false;0;0;0;;; -89788;4;0;false;false;;;;;; -89792;21;0;false;false;0;0;0;;; -89813;3;0;false;false;;;;;; -89816;1;0;false;false;0;0;0;;; -89817;3;0;false;false;;;;;; -89820;4;1;false;false;127;0;85;;; -89824;1;0;false;false;;;;;; -89825;1;0;false;false;0;0;0;;; -89826;4;0;false;false;;;;;; -89830;24;0;false;false;0;0;0;;; -89854;3;0;false;false;;;;;; -89857;1;0;false;false;0;0;0;;; -89858;2;0;false;false;;;;;; -89860;1;0;false;false;0;0;0;;; -89861;2;0;false;false;;;;;; -89863;3;0;false;false;63;95;191;;; -89866;3;0;false;false;;;;;; -89869;1;0;false;false;63;95;191;;; -89870;1;0;false;false;;;;;; -89871;7;0;false;false;63;95;191;;; -89878;1;0;false;false;;;;;; -89879;3;0;false;false;63;95;191;;; -89882;1;0;false;false;;;;;; -89883;4;0;false;false;63;95;191;;; -89887;1;0;false;false;;;;;; -89888;10;0;false;false;63;95;191;;; -89898;1;0;false;false;;;;;; -89899;6;0;false;false;63;95;191;;; -89905;1;0;false;false;;;;;; -89906;3;0;false;false;63;95;191;;; -89909;1;0;false;false;;;;;; -89910;8;0;false;false;63;95;191;;; -89918;1;0;false;false;;;;;; -89919;4;0;false;false;63;95;191;;; -89923;1;0;false;false;;;;;; -89924;2;0;false;false;63;95;191;;; -89926;1;0;false;false;;;;;; -89927;4;0;false;false;63;95;191;;; -89931;3;0;false;false;;;;;; -89934;2;0;false;false;63;95;191;;; -89936;2;0;false;false;;;;;; -89938;4;1;false;false;127;0;85;;; -89942;1;0;false;false;;;;;; -89943;10;0;false;false;0;0;0;;; -89953;1;0;false;false;;;;;; -89954;1;0;false;false;0;0;0;;; -89955;3;0;false;false;;;;;; -89958;5;0;false;false;0;0;0;;; -89963;1;0;false;false;;;;;; -89964;5;0;false;false;0;0;0;;; -89969;1;0;false;false;;;;;; -89970;1;0;false;false;0;0;0;;; -89971;1;0;false;false;;;;;; -89972;3;1;false;false;127;0;85;;; -89975;1;0;false;false;;;;;; -89976;8;0;false;false;0;0;0;;; -89984;3;0;false;false;;;;;; -89987;10;0;false;false;0;0;0;;; -89997;1;0;false;false;;;;;; -89998;1;0;false;false;0;0;0;;; -89999;1;0;false;false;;;;;; -90000;2;0;false;false;42;0;255;;; -90002;1;0;false;false;0;0;0;;; -90003;3;0;false;false;;;;;; -90006;2;1;false;false;127;0;85;;; -90008;1;0;false;false;;;;;; -90009;12;0;false;false;0;0;0;;; -90021;1;0;false;false;;;;;; -90022;2;0;false;false;0;0;0;;; -90024;1;0;false;false;;;;;; -90025;12;0;false;false;0;0;0;;; -90037;1;0;false;false;;;;;; -90038;1;0;false;false;0;0;0;;; -90039;4;0;false;false;;;;;; -90043;11;0;false;false;0;0;0;;; -90054;1;0;false;false;;;;;; -90055;1;0;false;false;0;0;0;;; -90056;1;0;false;false;;;;;; -90057;12;0;false;false;0;0;0;;; -90069;4;0;false;false;;;;;; -90073;9;0;false;false;0;0;0;;; -90082;1;0;false;false;;;;;; -90083;1;0;false;false;0;0;0;;; -90084;1;0;false;false;;;;;; -90085;12;0;false;false;0;0;0;;; -90097;4;0;false;false;;;;;; -90101;20;0;false;false;0;0;0;;; -90121;3;0;false;false;;;;;; -90124;1;0;false;false;0;0;0;;; -90125;3;0;false;false;;;;;; -90128;4;1;false;false;127;0;85;;; -90132;3;0;false;false;;;;;; -90135;2;1;false;false;127;0;85;;; -90137;1;0;false;false;;;;;; -90138;12;0;false;false;0;0;0;;; -90150;1;0;false;false;;;;;; -90151;1;0;false;false;0;0;0;;; -90152;1;0;false;false;;;;;; -90153;23;0;false;false;0;0;0;;; -90176;1;0;false;false;;;;;; -90177;1;0;false;false;0;0;0;;; -90178;4;0;false;false;;;;;; -90182;3;1;false;false;127;0;85;;; -90185;1;0;false;false;;;;;; -90186;4;0;false;false;0;0;0;;; -90190;1;0;false;false;;;;;; -90191;1;0;false;false;0;0;0;;; -90192;1;0;false;false;;;;;; -90193;37;0;false;false;0;0;0;;; -90230;4;0;false;false;;;;;; -90234;3;1;false;false;127;0;85;;; -90237;1;0;false;false;;;;;; -90238;10;0;false;false;0;0;0;;; -90248;1;0;false;false;;;;;; -90249;1;0;false;false;0;0;0;;; -90250;1;0;false;false;;;;;; -90251;30;0;false;false;0;0;0;;; -90281;4;0;false;false;;;;;; -90285;3;1;false;false;127;0;85;;; -90288;1;0;false;false;;;;;; -90289;10;0;false;false;0;0;0;;; -90299;1;0;false;false;;;;;; -90300;1;0;false;false;0;0;0;;; -90301;1;0;false;false;;;;;; -90302;31;0;false;false;0;0;0;;; -90333;10;0;false;false;;;;;; -90343;2;1;false;false;127;0;85;;; -90345;1;0;false;false;;;;;; -90346;12;0;false;false;0;0;0;;; -90358;1;0;false;false;;;;;; -90359;2;0;false;false;0;0;0;;; -90361;1;0;false;false;;;;;; -90362;10;0;false;false;0;0;0;;; -90372;1;0;false;false;;;;;; -90373;1;0;false;false;0;0;0;;; -90374;1;0;false;false;;;;;; -90375;11;0;false;false;0;0;0;;; -90386;1;0;false;false;;;;;; -90387;1;0;false;false;0;0;0;;; -90388;5;0;false;false;;;;;; -90393;11;0;false;false;0;0;0;;; -90404;1;0;false;false;;;;;; -90405;1;0;false;false;0;0;0;;; -90406;1;0;false;false;;;;;; -90407;12;0;false;false;0;0;0;;; -90419;5;0;false;false;;;;;; -90424;9;0;false;false;0;0;0;;; -90433;1;0;false;false;;;;;; -90434;1;0;false;false;0;0;0;;; -90435;1;0;false;false;;;;;; -90436;28;0;false;false;0;0;0;;; -90464;1;0;false;false;;;;;; -90465;1;0;false;false;0;0;0;;; -90466;1;0;false;false;;;;;; -90467;3;0;false;false;0;0;0;;; -90470;4;0;false;false;;;;;; -90474;1;0;false;false;0;0;0;;; -90475;4;0;false;false;;;;;; -90479;4;1;false;false;127;0;85;;; -90483;1;0;false;false;;;;;; -90484;1;0;false;false;0;0;0;;; -90485;5;0;false;false;;;;;; -90490;11;0;false;false;0;0;0;;; -90501;1;0;false;false;;;;;; -90502;1;0;false;false;0;0;0;;; -90503;1;0;false;false;;;;;; -90504;12;0;false;false;0;0;0;;; -90516;5;0;false;false;;;;;; -90521;9;0;false;false;0;0;0;;; -90530;1;0;false;false;;;;;; -90531;1;0;false;false;0;0;0;;; -90532;1;0;false;false;;;;;; -90533;27;0;false;false;0;0;0;;; -90560;1;0;false;false;;;;;; -90561;6;0;false;false;0;0;0;;; -90567;4;0;false;false;;;;;; -90571;1;0;false;false;0;0;0;;; -90572;4;0;false;false;;;;;; -90576;20;0;false;false;0;0;0;;; -90596;3;0;false;false;;;;;; -90599;1;0;false;false;0;0;0;;; -90600;2;0;false;false;;;;;; -90602;1;0;false;false;0;0;0;;; -90603;2;0;false;false;;;;;; -90605;3;0;false;false;63;95;191;;; -90608;3;0;false;false;;;;;; -90611;1;0;false;false;63;95;191;;; -90612;1;0;false;false;;;;;; -90613;7;0;false;false;63;95;191;;; -90620;1;0;false;false;;;;;; -90621;3;0;false;false;63;95;191;;; -90624;1;0;false;false;;;;;; -90625;4;0;false;false;63;95;191;;; -90629;1;0;false;false;;;;;; -90630;5;0;false;false;63;95;191;;; -90635;3;0;false;false;;;;;; -90638;2;0;false;false;63;95;191;;; -90640;2;0;false;false;;;;;; -90642;4;1;false;false;127;0;85;;; -90646;1;0;false;false;;;;;; -90647;18;0;false;false;0;0;0;;; -90665;1;0;false;false;;;;;; -90666;1;0;false;false;0;0;0;;; -90667;3;0;false;false;;;;;; -90670;2;1;false;false;127;0;85;;; -90672;1;0;false;false;;;;;; -90673;12;0;false;false;0;0;0;;; -90685;1;0;false;false;;;;;; -90686;2;0;false;false;0;0;0;;; -90688;1;0;false;false;;;;;; -90689;12;0;false;false;0;0;0;;; -90701;1;0;false;false;;;;;; -90702;1;0;false;false;0;0;0;;; -90703;4;0;false;false;;;;;; -90707;44;0;false;false;63;127;95;;; -90751;2;0;false;false;;;;;; -90753;36;0;false;false;63;127;95;;; -90789;2;0;false;false;;;;;; -90791;11;0;false;false;0;0;0;;; -90802;3;0;false;false;;;;;; -90805;1;0;false;false;0;0;0;;; -90806;1;0;false;false;;;;;; -90807;4;1;false;false;127;0;85;;; -90811;1;0;false;false;;;;;; -90812;1;0;false;false;0;0;0;;; -90813;4;0;false;false;;;;;; -90817;5;0;false;false;0;0;0;;; -90822;1;0;false;false;;;;;; -90823;5;0;false;false;0;0;0;;; -90828;1;0;false;false;;;;;; -90829;1;0;false;false;0;0;0;;; -90830;1;0;false;false;;;;;; -90831;3;1;false;false;127;0;85;;; -90834;1;0;false;false;;;;;; -90835;8;0;false;false;0;0;0;;; -90843;4;0;false;false;;;;;; -90847;10;0;false;false;0;0;0;;; -90857;1;0;false;false;;;;;; -90858;1;0;false;false;0;0;0;;; -90859;1;0;false;false;;;;;; -90860;2;0;false;false;42;0;255;;; -90862;1;0;false;false;0;0;0;;; -90863;4;0;false;false;;;;;; -90867;11;0;false;false;0;0;0;;; -90878;1;0;false;false;;;;;; -90879;1;0;false;false;0;0;0;;; -90880;1;0;false;false;;;;;; -90881;12;0;false;false;0;0;0;;; -90893;4;0;false;false;;;;;; -90897;9;0;false;false;0;0;0;;; -90906;1;0;false;false;;;;;; -90907;1;0;false;false;0;0;0;;; -90908;1;0;false;false;;;;;; -90909;24;0;false;false;0;0;0;;; -90933;4;0;false;false;;;;;; -90937;20;0;false;false;0;0;0;;; -90957;3;0;false;false;;;;;; -90960;1;0;false;false;0;0;0;;; -90961;2;0;false;false;;;;;; -90963;1;0;false;false;0;0;0;;; -90964;2;0;false;false;;;;;; -90966;3;0;false;false;63;95;191;;; -90969;3;0;false;false;;;;;; -90972;1;0;false;false;63;95;191;;; -90973;1;0;false;false;;;;;; -90974;7;0;false;false;63;95;191;;; -90981;1;0;false;false;;;;;; -90982;3;0;false;false;63;95;191;;; -90985;1;0;false;false;;;;;; -90986;8;0;false;false;63;95;191;;; -90994;1;0;false;false;;;;;; -90995;5;0;false;false;63;95;191;;; -91000;3;0;false;false;;;;;; -91003;2;0;false;false;63;95;191;;; -91005;2;0;false;false;;;;;; -91007;4;1;false;false;127;0;85;;; -91011;1;0;false;false;;;;;; -91012;22;0;false;false;0;0;0;;; -91034;1;0;false;false;;;;;; -91035;1;0;false;false;0;0;0;;; -91036;3;0;false;false;;;;;; -91039;2;1;false;false;127;0;85;;; -91041;1;0;false;false;;;;;; -91042;12;0;false;false;0;0;0;;; -91054;1;0;false;false;;;;;; -91055;2;0;false;false;0;0;0;;; -91057;1;0;false;false;;;;;; -91058;12;0;false;false;0;0;0;;; -91070;1;0;false;false;;;;;; -91071;1;0;false;false;0;0;0;;; -91072;4;0;false;false;;;;;; -91076;40;0;false;false;63;127;95;;; -91116;2;0;false;false;;;;;; -91118;39;0;false;false;63;127;95;;; -91157;2;0;false;false;;;;;; -91159;14;0;false;false;0;0;0;;; -91173;3;0;false;false;;;;;; -91176;1;0;false;false;0;0;0;;; -91177;1;0;false;false;;;;;; -91178;4;1;false;false;127;0;85;;; -91182;1;0;false;false;;;;;; -91183;1;0;false;false;0;0;0;;; -91184;4;0;false;false;;;;;; -91188;5;0;false;false;0;0;0;;; -91193;1;0;false;false;;;;;; -91194;5;0;false;false;0;0;0;;; -91199;1;0;false;false;;;;;; -91200;1;0;false;false;0;0;0;;; -91201;1;0;false;false;;;;;; -91202;3;1;false;false;127;0;85;;; -91205;1;0;false;false;;;;;; -91206;8;0;false;false;0;0;0;;; -91214;4;0;false;false;;;;;; -91218;10;0;false;false;0;0;0;;; -91228;1;0;false;false;;;;;; -91229;1;0;false;false;0;0;0;;; -91230;1;0;false;false;;;;;; -91231;2;0;false;false;42;0;255;;; -91233;1;0;false;false;0;0;0;;; -91234;4;0;false;false;;;;;; -91238;11;0;false;false;0;0;0;;; -91249;1;0;false;false;;;;;; -91250;1;0;false;false;0;0;0;;; -91251;1;0;false;false;;;;;; -91252;26;0;false;false;0;0;0;;; -91278;4;0;false;false;;;;;; -91282;9;0;false;false;0;0;0;;; -91291;1;0;false;false;;;;;; -91292;1;0;false;false;0;0;0;;; -91293;1;0;false;false;;;;;; -91294;12;0;false;false;0;0;0;;; -91306;4;0;false;false;;;;;; -91310;20;0;false;false;0;0;0;;; -91330;3;0;false;false;;;;;; -91333;1;0;false;false;0;0;0;;; -91334;2;0;false;false;;;;;; -91336;1;0;false;false;0;0;0;;; -91337;2;0;false;false;;;;;; -91339;3;0;false;false;63;95;191;;; -91342;3;0;false;false;;;;;; -91345;1;0;false;false;63;95;191;;; -91346;1;0;false;false;;;;;; -91347;5;0;false;false;63;95;191;;; -91352;1;0;false;false;;;;;; -91353;3;0;false;false;63;95;191;;; -91356;1;0;false;false;;;;;; -91357;5;0;false;false;63;95;191;;; -91362;1;0;false;false;;;;;; -91363;3;0;false;false;63;95;191;;; -91366;1;0;false;false;;;;;; -91367;4;0;false;false;63;95;191;;; -91371;1;0;false;false;;;;;; -91372;4;0;false;false;63;95;191;;; -91376;1;0;false;false;;;;;; -91377;3;0;false;false;63;95;191;;; -91380;1;0;false;false;;;;;; -91381;2;0;false;false;63;95;191;;; -91383;1;0;false;false;;;;;; -91384;3;0;false;false;63;95;191;;; -91387;1;0;false;false;;;;;; -91388;4;0;false;false;63;95;191;;; -91392;1;0;false;false;;;;;; -91393;9;0;false;false;63;95;191;;; -91402;1;0;false;false;;;;;; -91403;6;0;false;false;63;95;191;;; -91409;1;0;false;false;;;;;; -91410;8;0;false;false;63;95;191;;; -91418;4;0;false;false;;;;;; -91422;1;0;false;false;63;95;191;;; -91423;1;0;false;false;;;;;; -91424;2;0;false;false;63;95;191;;; -91426;1;0;false;false;;;;;; -91427;3;0;false;false;63;95;191;;; -91430;1;0;false;false;;;;;; -91431;9;0;false;false;63;95;191;;; -91440;1;0;false;false;;;;;; -91441;2;0;false;false;63;95;191;;; -91443;1;0;false;false;;;;;; -91444;3;0;false;false;63;95;191;;; -91447;1;0;false;false;;;;;; -91448;5;0;false;false;63;95;191;;; -91453;1;0;false;false;;;;;; -91454;4;0;false;false;63;95;191;;; -91458;1;0;false;false;;;;;; -91459;3;0;false;false;63;95;191;;; -91462;1;0;false;false;;;;;; -91463;5;0;false;false;63;95;191;;; -91468;1;0;false;false;;;;;; -91469;2;0;false;false;63;95;191;;; -91471;1;0;false;false;;;;;; -91472;3;0;false;false;63;95;191;;; -91475;1;0;false;false;;;;;; -91476;3;0;false;false;63;95;191;;; -91479;1;0;false;false;;;;;; -91480;2;0;false;false;63;95;191;;; -91482;1;0;false;false;;;;;; -91483;3;0;false;false;63;95;191;;; -91486;1;0;false;false;;;;;; -91487;3;0;false;false;63;95;191;;; -91490;1;0;false;false;;;;;; -91491;4;0;false;false;63;95;191;;; -91495;4;0;false;false;;;;;; -91499;1;0;false;false;63;95;191;;; -91500;1;0;false;false;;;;;; -91501;2;0;false;false;63;95;191;;; -91503;1;0;false;false;;;;;; -91504;3;0;false;false;63;95;191;;; -91507;1;0;false;false;;;;;; -91508;3;0;false;false;63;95;191;;; -91511;1;0;false;false;;;;;; -91512;4;0;false;false;63;95;191;;; -91516;1;0;false;false;;;;;; -91517;2;0;false;false;63;95;191;;; -91519;1;0;false;false;;;;;; -91520;7;0;false;false;63;95;191;;; -91527;1;0;false;false;;;;;; -91528;4;0;false;false;63;95;191;;; -91532;1;0;false;false;;;;;; -91533;3;0;false;false;63;95;191;;; -91536;1;0;false;false;;;;;; -91537;9;0;false;false;63;95;191;;; -91546;1;0;false;false;;;;;; -91547;7;0;false;false;63;95;191;;; -91554;3;0;false;false;;;;;; -91557;1;0;false;false;63;95;191;;; -91558;4;0;false;false;;;;;; -91562;1;0;false;false;63;95;191;;; -91563;1;0;false;false;;;;;; -91564;8;1;false;false;127;159;191;;; -91572;5;0;false;false;63;95;191;;; -91577;1;0;false;false;;;;;; -91578;2;0;false;false;63;95;191;;; -91580;1;0;false;false;;;;;; -91581;3;0;false;false;63;95;191;;; -91584;1;0;false;false;;;;;; -91585;3;0;false;false;63;95;191;;; -91588;1;0;false;false;;;;;; -91589;4;0;false;false;63;95;191;;; -91593;1;0;false;false;;;;;; -91594;8;0;false;false;63;95;191;;; -91602;1;0;false;false;;;;;; -91603;2;0;false;false;63;95;191;;; -91605;1;0;false;false;;;;;; -91606;3;0;false;false;63;95;191;;; -91609;1;0;false;false;;;;;; -91610;5;0;false;false;63;95;191;;; -91615;1;0;false;false;;;;;; -91616;4;0;false;false;63;95;191;;; -91620;1;0;false;false;;;;;; -91621;2;0;false;false;63;95;191;;; -91623;1;0;false;false;;;;;; -91624;3;0;false;false;63;95;191;;; -91627;1;0;false;false;;;;;; -91628;8;0;false;false;63;95;191;;; -91636;3;0;false;false;;;;;; -91639;2;0;false;false;63;95;191;;; -91641;2;0;false;false;;;;;; -91643;3;1;false;false;127;0;85;;; -91646;1;0;false;false;;;;;; -91647;12;0;false;false;0;0;0;;; -91659;1;0;false;false;;;;;; -91660;1;0;false;false;0;0;0;;; -91661;3;0;false;false;;;;;; -91664;2;1;false;false;127;0;85;;; -91666;1;0;false;false;;;;;; -91667;16;0;false;false;0;0;0;;; -91683;1;0;false;false;;;;;; -91684;1;0;false;false;0;0;0;;; -91685;4;0;false;false;;;;;; -91689;6;1;false;false;127;0;85;;; -91695;1;0;false;false;;;;;; -91696;2;0;false;false;0;0;0;;; -91698;3;0;false;false;;;;;; -91701;1;0;false;false;0;0;0;;; -91702;3;0;false;false;;;;;; -91705;72;0;false;false;63;127;95;;; -91777;1;0;false;false;;;;;; -91778;16;0;false;false;63;127;95;;; -91794;1;0;false;false;;;;;; -91795;3;1;false;false;127;0;85;;; -91798;1;0;false;false;;;;;; -91799;9;0;false;false;0;0;0;;; -91808;1;0;false;false;;;;;; -91809;1;0;false;false;0;0;0;;; -91810;1;0;false;false;;;;;; -91811;15;0;false;false;0;0;0;;; -91826;4;0;false;false;;;;;; -91830;2;1;false;false;127;0;85;;; -91832;1;0;false;false;;;;;; -91833;10;0;false;false;0;0;0;;; -91843;1;0;false;false;;;;;; -91844;1;0;false;false;0;0;0;;; -91845;1;0;false;false;;;;;; -91846;22;0;false;false;0;0;0;;; -91868;1;0;false;false;;;;;; -91869;1;0;false;false;0;0;0;;; -91870;1;0;false;false;;;;;; -91871;2;0;false;false;0;0;0;;; -91873;1;0;false;false;;;;;; -91874;1;0;false;false;0;0;0;;; -91875;4;0;false;false;;;;;; -91879;12;0;false;false;0;0;0;;; -91891;4;0;false;false;;;;;; -91895;11;0;false;false;0;0;0;;; -91906;1;0;false;false;;;;;; -91907;1;0;false;false;0;0;0;;; -91908;1;0;false;false;;;;;; -91909;33;0;false;false;0;0;0;;; -91942;1;0;false;false;;;;;; -91943;11;0;false;false;0;0;0;;; -91954;3;0;false;false;;;;;; -91957;1;0;false;false;0;0;0;;; -91958;3;0;false;false;;;;;; -91961;6;1;false;false;127;0;85;;; -91967;1;0;false;false;;;;;; -91968;10;0;false;false;0;0;0;;; -91978;2;0;false;false;;;;;; -91980;1;0;false;false;0;0;0;;; -91981;2;0;false;false;;;;;; -91983;3;0;false;false;63;95;191;;; -91986;3;0;false;false;;;;;; -91989;1;0;false;false;63;95;191;;; -91990;1;0;false;false;;;;;; -91991;5;0;false;false;63;95;191;;; -91996;1;0;false;false;;;;;; -91997;3;0;false;false;63;95;191;;; -92000;1;0;false;false;;;;;; -92001;5;0;false;false;63;95;191;;; -92006;1;0;false;false;;;;;; -92007;2;0;false;false;63;95;191;;; -92009;1;0;false;false;;;;;; -92010;3;0;false;false;63;95;191;;; -92013;1;0;false;false;;;;;; -92014;3;0;false;false;63;95;191;;; -92017;1;0;false;false;;;;;; -92018;2;0;false;false;63;95;191;;; -92020;1;0;false;false;;;;;; -92021;3;0;false;false;63;95;191;;; -92024;1;0;false;false;;;;;; -92025;5;0;false;false;63;95;191;;; -92030;3;0;false;false;;;;;; -92033;2;0;false;false;63;95;191;;; -92035;2;0;false;false;;;;;; -92037;4;1;false;false;127;0;85;;; -92041;1;0;false;false;;;;;; -92042;11;0;false;false;0;0;0;;; -92053;1;0;false;false;;;;;; -92054;1;0;false;false;0;0;0;;; -92055;3;0;false;false;;;;;; -92058;3;1;false;false;127;0;85;;; -92061;1;0;false;false;;;;;; -92062;9;0;false;false;0;0;0;;; -92071;1;0;false;false;;;;;; -92072;1;0;false;false;0;0;0;;; -92073;1;0;false;false;;;;;; -92074;15;0;false;false;0;0;0;;; -92089;3;0;false;false;;;;;; -92092;3;1;false;false;127;0;85;;; -92095;1;0;false;false;;;;;; -92096;10;0;false;false;0;0;0;;; -92106;1;0;false;false;;;;;; -92107;1;0;false;false;0;0;0;;; -92108;1;0;false;false;;;;;; -92109;35;0;false;false;0;0;0;;; -92144;4;0;false;false;;;;;; -92148;3;1;false;false;127;0;85;;; -92151;1;0;false;false;;;;;; -92152;10;0;false;false;0;0;0;;; -92162;1;0;false;false;;;;;; -92163;1;0;false;false;0;0;0;;; -92164;1;0;false;false;;;;;; -92165;36;0;false;false;0;0;0;;; -92201;3;0;false;false;;;;;; -92204;3;1;false;false;127;0;85;;; -92207;1;0;false;false;;;;;; -92208;13;0;false;false;0;0;0;;; -92221;1;0;false;false;;;;;; -92222;1;0;false;false;0;0;0;;; -92223;1;0;false;false;;;;;; -92224;10;0;false;false;0;0;0;;; -92234;1;0;false;false;;;;;; -92235;1;0;false;false;0;0;0;;; -92236;1;0;false;false;;;;;; -92237;11;0;false;false;0;0;0;;; -92248;6;0;false;false;;;;;; -92254;2;1;false;false;127;0;85;;; -92256;1;0;false;false;;;;;; -92257;12;0;false;false;0;0;0;;; -92269;1;0;false;false;;;;;; -92270;1;0;false;false;0;0;0;;; -92271;1;0;false;false;;;;;; -92272;14;0;false;false;0;0;0;;; -92286;1;0;false;false;;;;;; -92287;1;0;false;false;0;0;0;;; -92288;4;0;false;false;;;;;; -92292;11;0;false;false;0;0;0;;; -92303;1;0;false;false;;;;;; -92304;1;0;false;false;0;0;0;;; -92305;1;0;false;false;;;;;; -92306;14;0;false;false;0;0;0;;; -92320;4;0;false;false;;;;;; -92324;12;0;false;false;0;0;0;;; -92336;3;0;false;false;;;;;; -92339;1;0;false;false;0;0;0;;; -92340;2;0;false;false;;;;;; -92342;1;0;false;false;0;0;0;;; -92343;2;0;false;false;;;;;; -92345;3;0;false;false;63;95;191;;; -92348;3;0;false;false;;;;;; -92351;1;0;false;false;63;95;191;;; -92352;1;0;false;false;;;;;; -92353;5;0;false;false;63;95;191;;; -92358;1;0;false;false;;;;;; -92359;3;0;false;false;63;95;191;;; -92362;1;0;false;false;;;;;; -92363;5;0;false;false;63;95;191;;; -92368;1;0;false;false;;;;;; -92369;2;0;false;false;63;95;191;;; -92371;1;0;false;false;;;;;; -92372;3;0;false;false;63;95;191;;; -92375;1;0;false;false;;;;;; -92376;9;0;false;false;63;95;191;;; -92385;1;0;false;false;;;;;; -92386;2;0;false;false;63;95;191;;; -92388;1;0;false;false;;;;;; -92389;3;0;false;false;63;95;191;;; -92392;1;0;false;false;;;;;; -92393;5;0;false;false;63;95;191;;; -92398;3;0;false;false;;;;;; -92401;2;0;false;false;63;95;191;;; -92403;2;0;false;false;;;;;; -92405;4;1;false;false;127;0;85;;; -92409;1;0;false;false;;;;;; -92410;13;0;false;false;0;0;0;;; -92423;1;0;false;false;;;;;; -92424;1;0;false;false;0;0;0;;; -92425;3;0;false;false;;;;;; -92428;3;1;false;false;127;0;85;;; -92431;1;0;false;false;;;;;; -92432;9;0;false;false;0;0;0;;; -92441;1;0;false;false;;;;;; -92442;1;0;false;false;0;0;0;;; -92443;1;0;false;false;;;;;; -92444;15;0;false;false;0;0;0;;; -92459;3;0;false;false;;;;;; -92462;3;1;false;false;127;0;85;;; -92465;1;0;false;false;;;;;; -92466;10;0;false;false;0;0;0;;; -92476;1;0;false;false;;;;;; -92477;1;0;false;false;0;0;0;;; -92478;1;0;false;false;;;;;; -92479;35;0;false;false;0;0;0;;; -92514;3;0;false;false;;;;;; -92517;2;1;false;false;127;0;85;;; -92519;1;0;false;false;;;;;; -92520;12;0;false;false;0;0;0;;; -92532;1;0;false;false;;;;;; -92533;1;0;false;false;0;0;0;;; -92534;1;0;false;false;;;;;; -92535;11;0;false;false;0;0;0;;; -92546;1;0;false;false;;;;;; -92547;1;0;false;false;0;0;0;;; -92548;4;0;false;false;;;;;; -92552;11;0;false;false;0;0;0;;; -92563;1;0;false;false;;;;;; -92564;1;0;false;false;0;0;0;;; -92565;1;0;false;false;;;;;; -92566;11;0;false;false;0;0;0;;; -92577;4;0;false;false;;;;;; -92581;21;0;false;false;0;0;0;;; -92602;3;0;false;false;;;;;; -92605;1;0;false;false;0;0;0;;; -92606;2;0;false;false;;;;;; -92608;1;0;false;false;0;0;0;;; -92609;2;0;false;false;;;;;; -92611;3;0;false;false;63;95;191;;; -92614;3;0;false;false;;;;;; -92617;1;0;false;false;63;95;191;;; -92618;1;0;false;false;;;;;; -92619;5;0;false;false;63;95;191;;; -92624;1;0;false;false;;;;;; -92625;3;0;false;false;63;95;191;;; -92628;1;0;false;false;;;;;; -92629;5;0;false;false;63;95;191;;; -92634;1;0;false;false;;;;;; -92635;3;0;false;false;63;95;191;;; -92638;1;0;false;false;;;;;; -92639;4;0;false;false;63;95;191;;; -92643;1;0;false;false;;;;;; -92644;2;0;false;false;63;95;191;;; -92646;1;0;false;false;;;;;; -92647;3;0;false;false;63;95;191;;; -92650;1;0;false;false;;;;;; -92651;2;0;false;false;63;95;191;;; -92653;1;0;false;false;;;;;; -92654;3;0;false;false;63;95;191;;; -92657;1;0;false;false;;;;;; -92658;4;0;false;false;63;95;191;;; -92662;1;0;false;false;;;;;; -92663;9;0;false;false;63;95;191;;; -92672;1;0;false;false;;;;;; -92673;6;0;false;false;63;95;191;;; -92679;1;0;false;false;;;;;; -92680;8;0;false;false;63;95;191;;; -92688;4;0;false;false;;;;;; -92692;1;0;false;false;63;95;191;;; -92693;1;0;false;false;;;;;; -92694;2;0;false;false;63;95;191;;; -92696;1;0;false;false;;;;;; -92697;3;0;false;false;63;95;191;;; -92700;1;0;false;false;;;;;; -92701;9;0;false;false;63;95;191;;; -92710;1;0;false;false;;;;;; -92711;2;0;false;false;63;95;191;;; -92713;1;0;false;false;;;;;; -92714;3;0;false;false;63;95;191;;; -92717;1;0;false;false;;;;;; -92718;5;0;false;false;63;95;191;;; -92723;1;0;false;false;;;;;; -92724;4;0;false;false;63;95;191;;; -92728;1;0;false;false;;;;;; -92729;3;0;false;false;63;95;191;;; -92732;1;0;false;false;;;;;; -92733;5;0;false;false;63;95;191;;; -92738;1;0;false;false;;;;;; -92739;2;0;false;false;63;95;191;;; -92741;1;0;false;false;;;;;; -92742;3;0;false;false;63;95;191;;; -92745;1;0;false;false;;;;;; -92746;3;0;false;false;63;95;191;;; -92749;1;0;false;false;;;;;; -92750;2;0;false;false;63;95;191;;; -92752;1;0;false;false;;;;;; -92753;3;0;false;false;63;95;191;;; -92756;1;0;false;false;;;;;; -92757;3;0;false;false;63;95;191;;; -92760;1;0;false;false;;;;;; -92761;4;0;false;false;63;95;191;;; -92765;4;0;false;false;;;;;; -92769;1;0;false;false;63;95;191;;; -92770;1;0;false;false;;;;;; -92771;2;0;false;false;63;95;191;;; -92773;1;0;false;false;;;;;; -92774;3;0;false;false;63;95;191;;; -92777;1;0;false;false;;;;;; -92778;3;0;false;false;63;95;191;;; -92781;1;0;false;false;;;;;; -92782;4;0;false;false;63;95;191;;; -92786;1;0;false;false;;;;;; -92787;2;0;false;false;63;95;191;;; -92789;1;0;false;false;;;;;; -92790;7;0;false;false;63;95;191;;; -92797;1;0;false;false;;;;;; -92798;4;0;false;false;63;95;191;;; -92802;1;0;false;false;;;;;; -92803;3;0;false;false;63;95;191;;; -92806;1;0;false;false;;;;;; -92807;9;0;false;false;63;95;191;;; -92816;1;0;false;false;;;;;; -92817;7;0;false;false;63;95;191;;; -92824;3;0;false;false;;;;;; -92827;1;0;false;false;63;95;191;;; -92828;4;0;false;false;;;;;; -92832;1;0;false;false;63;95;191;;; -92833;1;0;false;false;;;;;; -92834;8;1;false;false;127;159;191;;; -92842;5;0;false;false;63;95;191;;; -92847;1;0;false;false;;;;;; -92848;2;0;false;false;63;95;191;;; -92850;1;0;false;false;;;;;; -92851;3;0;false;false;63;95;191;;; -92854;1;0;false;false;;;;;; -92855;3;0;false;false;63;95;191;;; -92858;1;0;false;false;;;;;; -92859;4;0;false;false;63;95;191;;; -92863;1;0;false;false;;;;;; -92864;8;0;false;false;63;95;191;;; -92872;1;0;false;false;;;;;; -92873;2;0;false;false;63;95;191;;; -92875;1;0;false;false;;;;;; -92876;3;0;false;false;63;95;191;;; -92879;1;0;false;false;;;;;; -92880;5;0;false;false;63;95;191;;; -92885;1;0;false;false;;;;;; -92886;4;0;false;false;63;95;191;;; -92890;1;0;false;false;;;;;; -92891;2;0;false;false;63;95;191;;; -92893;1;0;false;false;;;;;; -92894;3;0;false;false;63;95;191;;; -92897;1;0;false;false;;;;;; -92898;8;0;false;false;63;95;191;;; -92906;3;0;false;false;;;;;; -92909;2;0;false;false;63;95;191;;; -92911;2;0;false;false;;;;;; -92913;3;1;false;false;127;0;85;;; -92916;1;0;false;false;;;;;; -92917;10;0;false;false;0;0;0;;; -92927;1;0;false;false;;;;;; -92928;1;0;false;false;0;0;0;;; -92929;3;0;false;false;;;;;; -92932;3;1;false;false;127;0;85;;; -92935;1;0;false;false;;;;;; -92936;9;0;false;false;0;0;0;;; -92945;1;0;false;false;;;;;; -92946;1;0;false;false;0;0;0;;; -92947;1;0;false;false;;;;;; -92948;15;0;false;false;0;0;0;;; -92963;3;0;false;false;;;;;; -92966;2;1;false;false;127;0;85;;; -92968;1;0;false;false;;;;;; -92969;10;0;false;false;0;0;0;;; -92979;1;0;false;false;;;;;; -92980;1;0;false;false;0;0;0;;; -92981;1;0;false;false;;;;;; -92982;2;0;false;false;0;0;0;;; -92984;1;0;false;false;;;;;; -92985;1;0;false;false;0;0;0;;; -92986;4;0;false;false;;;;;; -92990;12;0;false;false;0;0;0;;; -93002;4;0;false;false;;;;;; -93006;11;0;false;false;0;0;0;;; -93017;1;0;false;false;;;;;; -93018;1;0;false;false;0;0;0;;; -93019;1;0;false;false;;;;;; -93020;33;0;false;false;0;0;0;;; -93053;1;0;false;false;;;;;; -93054;11;0;false;false;0;0;0;;; -93065;3;0;false;false;;;;;; -93068;1;0;false;false;0;0;0;;; -93069;3;0;false;false;;;;;; -93072;6;1;false;false;127;0;85;;; -93078;1;0;false;false;;;;;; -93079;10;0;false;false;0;0;0;;; -93089;2;0;false;false;;;;;; -93091;1;0;false;false;0;0;0;;; -93092;2;0;false;false;;;;;; -93094;3;0;false;false;63;95;191;;; -93097;3;0;false;false;;;;;; -93100;1;0;false;false;63;95;191;;; -93101;1;0;false;false;;;;;; -93102;5;0;false;false;63;95;191;;; -93107;1;0;false;false;;;;;; -93108;3;0;false;false;63;95;191;;; -93111;1;0;false;false;;;;;; -93112;5;0;false;false;63;95;191;;; -93117;1;0;false;false;;;;;; -93118;2;0;false;false;63;95;191;;; -93120;1;0;false;false;;;;;; -93121;3;0;false;false;63;95;191;;; -93124;1;0;false;false;;;;;; -93125;9;0;false;false;63;95;191;;; -93134;1;0;false;false;;;;;; -93135;9;0;false;false;63;95;191;;; -93144;3;0;false;false;;;;;; -93147;1;0;false;false;63;95;191;;; -93148;1;0;false;false;;;;;; -93149;3;0;false;false;127;127;159;;; -93152;3;0;false;false;;;;;; -93155;1;0;false;false;63;95;191;;; -93156;3;0;false;false;;;;;; -93159;1;0;false;false;63;95;191;;; -93160;1;0;false;false;;;;;; -93161;7;1;false;false;127;159;191;;; -93168;1;0;false;false;63;95;191;;; -93169;1;0;false;false;;;;;; -93170;1;0;false;false;63;95;191;;; -93171;1;0;false;false;;;;;; -93172;8;0;false;false;63;95;191;;; -93180;1;0;false;false;;;;;; -93181;2;0;false;false;63;95;191;;; -93183;1;0;false;false;;;;;; -93184;3;0;false;false;63;95;191;;; -93187;1;0;false;false;;;;;; -93188;3;0;false;false;63;95;191;;; -93191;1;0;false;false;;;;;; -93192;5;0;false;false;63;95;191;;; -93197;1;0;false;false;;;;;; -93198;8;0;false;false;63;95;191;;; -93206;3;0;false;false;;;;;; -93209;1;0;false;false;63;95;191;;; -93210;1;0;false;false;;;;;; -93211;7;1;false;false;127;159;191;;; -93218;1;0;false;false;63;95;191;;; -93219;1;0;false;false;;;;;; -93220;1;0;false;false;63;95;191;;; -93221;1;0;false;false;;;;;; -93222;8;0;false;false;63;95;191;;; -93230;1;0;false;false;;;;;; -93231;2;0;false;false;63;95;191;;; -93233;1;0;false;false;;;;;; -93234;3;0;false;false;63;95;191;;; -93237;1;0;false;false;;;;;; -93238;3;0;false;false;63;95;191;;; -93241;1;0;false;false;;;;;; -93242;5;0;false;false;63;95;191;;; -93247;1;0;false;false;;;;;; -93248;8;0;false;false;63;95;191;;; -93256;3;0;false;false;;;;;; -93259;1;0;false;false;63;95;191;;; -93260;1;0;false;false;;;;;; -93261;7;1;false;false;127;159;191;;; -93268;6;0;false;false;63;95;191;;; -93274;1;0;false;false;;;;;; -93275;3;0;false;false;63;95;191;;; -93278;1;0;false;false;;;;;; -93279;8;0;false;false;63;95;191;;; -93287;1;0;false;false;;;;;; -93288;6;0;false;false;63;95;191;;; -93294;1;0;false;false;;;;;; -93295;2;0;false;false;63;95;191;;; -93297;1;0;false;false;;;;;; -93298;1;0;false;false;63;95;191;;; -93299;1;0;false;false;;;;;; -93300;9;0;false;false;63;95;191;;; -93309;1;0;false;false;;;;;; -93310;10;0;false;false;63;95;191;;; -93320;3;0;false;false;;;;;; -93323;1;0;false;false;63;95;191;;; -93324;2;0;false;false;;;;;; -93326;7;0;false;false;63;95;191;;; -93333;1;0;false;false;;;;;; -93334;3;0;false;false;63;95;191;;; -93337;1;0;false;false;;;;;; -93338;4;0;false;false;63;95;191;;; -93342;1;0;false;false;;;;;; -93343;9;0;false;false;63;95;191;;; -93352;1;0;false;false;;;;;; -93353;2;0;false;false;63;95;191;;; -93355;1;0;false;false;;;;;; -93356;3;0;false;false;63;95;191;;; -93359;1;0;false;false;;;;;; -93360;9;0;false;false;63;95;191;;; -93369;3;0;false;false;;;;;; -93372;2;0;false;false;63;95;191;;; -93374;2;0;false;false;;;;;; -93376;4;1;false;false;127;0;85;;; -93380;1;0;false;false;;;;;; -93381;22;0;false;false;0;0;0;;; -93403;3;1;false;false;127;0;85;;; -93406;1;0;false;false;;;;;; -93407;2;0;false;false;0;0;0;;; -93409;1;0;false;false;;;;;; -93410;3;1;false;false;127;0;85;;; -93413;1;0;false;false;;;;;; -93414;2;0;false;false;0;0;0;;; -93416;1;0;false;false;;;;;; -93417;7;1;false;false;127;0;85;;; -93424;1;0;false;false;;;;;; -93425;7;0;false;false;0;0;0;;; -93432;1;0;false;false;;;;;; -93433;1;0;false;false;0;0;0;;; -93434;3;0;false;false;;;;;; -93437;3;1;false;false;127;0;85;;; -93440;1;0;false;false;;;;;; -93441;4;0;false;false;0;0;0;;; -93445;1;0;false;false;;;;;; -93446;1;0;false;false;0;0;0;;; -93447;1;0;false;false;;;;;; -93448;2;0;false;false;0;0;0;;; -93450;1;0;false;false;;;;;; -93451;1;0;false;false;0;0;0;;; -93452;1;0;false;false;;;;;; -93453;21;0;false;false;0;0;0;;; -93474;1;0;false;false;;;;;; -93475;1;0;false;false;0;0;0;;; -93476;1;0;false;false;;;;;; -93477;11;0;false;false;0;0;0;;; -93488;3;0;false;false;;;;;; -93491;3;1;false;false;127;0;85;;; -93494;1;0;false;false;;;;;; -93495;9;0;false;false;0;0;0;;; -93504;1;0;false;false;;;;;; -93505;1;0;false;false;0;0;0;;; -93506;1;0;false;false;;;;;; -93507;23;0;false;false;0;0;0;;; -93530;3;0;false;false;;;;;; -93533;3;1;false;false;127;0;85;;; -93536;1;0;false;false;;;;;; -93537;15;0;false;false;0;0;0;;; -93552;3;0;false;false;;;;;; -93555;3;1;false;false;127;0;85;;; -93558;1;0;false;false;;;;;; -93559;13;0;false;false;0;0;0;;; -93572;3;0;false;false;;;;;; -93575;7;1;false;false;127;0;85;;; -93582;1;0;false;false;;;;;; -93583;12;0;false;false;0;0;0;;; -93595;1;0;false;false;;;;;; -93596;1;0;false;false;0;0;0;;; -93597;1;0;false;false;;;;;; -93598;10;0;false;false;0;0;0;;; -93608;5;0;false;false;;;;;; -93613;20;0;false;false;0;0;0;;; -93633;1;0;false;false;;;;;; -93634;1;0;false;false;0;0;0;;; -93635;1;0;false;false;;;;;; -93636;4;1;false;false;127;0;85;;; -93640;1;0;false;false;0;0;0;;; -93641;3;0;false;false;;;;;; -93644;2;1;false;false;127;0;85;;; -93646;1;0;false;false;;;;;; -93647;5;0;false;false;0;0;0;;; -93652;1;0;false;false;;;;;; -93653;1;0;false;false;0;0;0;;; -93654;1;0;false;false;;;;;; -93655;9;0;false;false;0;0;0;;; -93664;1;0;false;false;;;;;; -93665;1;0;false;false;0;0;0;;; -93666;1;0;false;false;;;;;; -93667;2;0;false;false;0;0;0;;; -93669;1;0;false;false;;;;;; -93670;1;0;false;false;0;0;0;;; -93671;4;0;false;false;;;;;; -93675;4;0;false;false;0;0;0;;; -93679;1;0;false;false;;;;;; -93680;1;0;false;false;0;0;0;;; -93681;1;0;false;false;;;;;; -93682;9;0;false;false;0;0;0;;; -93691;1;0;false;false;;;;;; -93692;1;0;false;false;0;0;0;;; -93693;1;0;false;false;;;;;; -93694;2;0;false;false;0;0;0;;; -93696;3;0;false;false;;;;;; -93699;1;0;false;false;0;0;0;;; -93700;4;0;false;false;;;;;; -93704;67;0;false;false;63;127;95;;; -93771;1;0;false;false;;;;;; -93772;41;0;false;false;63;127;95;;; -93813;1;0;false;false;;;;;; -93814;2;1;false;false;127;0;85;;; -93816;1;0;false;false;;;;;; -93817;5;0;false;false;0;0;0;;; -93822;1;0;false;false;;;;;; -93823;1;0;false;false;0;0;0;;; -93824;1;0;false;false;;;;;; -93825;1;0;false;false;0;0;0;;; -93826;1;0;false;false;;;;;; -93827;2;0;false;false;0;0;0;;; -93829;1;0;false;false;;;;;; -93830;15;0;false;false;0;0;0;;; -93845;1;0;false;false;;;;;; -93846;2;0;false;false;0;0;0;;; -93848;1;0;false;false;;;;;; -93849;4;0;false;false;0;0;0;;; -93853;1;0;false;false;;;;;; -93854;1;0;false;false;0;0;0;;; -93855;1;0;false;false;;;;;; -93856;3;0;false;false;0;0;0;;; -93859;1;0;false;false;;;;;; -93860;1;0;false;false;0;0;0;;; -93861;4;0;false;false;;;;;; -93865;6;1;false;false;127;0;85;;; -93871;1;0;false;false;0;0;0;;; -93872;3;0;false;false;;;;;; -93875;1;0;false;false;0;0;0;;; -93876;3;0;false;false;;;;;; -93879;14;0;false;false;0;0;0;;; -93893;1;0;false;false;;;;;; -93894;1;0;false;false;0;0;0;;; -93895;1;0;false;false;;;;;; -93896;27;0;false;false;0;0;0;;; -93923;1;0;false;false;;;;;; -93924;6;0;false;false;0;0;0;;; -93930;6;0;false;false;;;;;; -93936;2;1;false;false;127;0;85;;; -93938;1;0;false;false;;;;;; -93939;18;0;false;false;0;0;0;;; -93957;1;0;false;false;;;;;; -93958;1;0;false;false;0;0;0;;; -93959;4;0;false;false;;;;;; -93963;69;0;false;false;63;127;95;;; -94032;2;0;false;false;;;;;; -94034;14;0;false;false;0;0;0;;; -94048;1;0;false;false;;;;;; -94049;1;0;false;false;0;0;0;;; -94050;1;0;false;false;;;;;; -94051;20;0;false;false;0;0;0;;; -94071;1;0;false;false;;;;;; -94072;15;0;false;false;0;0;0;;; -94087;1;0;false;false;;;;;; -94088;6;0;false;false;0;0;0;;; -94094;3;0;false;false;;;;;; -94097;1;0;false;false;0;0;0;;; -94098;3;0;false;false;;;;;; -94101;12;0;false;false;0;0;0;;; -94113;1;0;false;false;;;;;; -94114;1;0;false;false;0;0;0;;; -94115;1;0;false;false;;;;;; -94116;40;0;false;false;0;0;0;;; -94156;3;0;false;false;;;;;; -94159;59;0;false;false;63;127;95;;; -94218;1;0;false;false;;;;;; -94219;55;0;false;false;63;127;95;;; -94274;1;0;false;false;;;;;; -94275;46;0;false;false;63;127;95;;; -94321;1;0;false;false;;;;;; -94322;2;1;false;false;127;0;85;;; -94324;1;0;false;false;;;;;; -94325;2;0;false;false;0;0;0;;; -94327;1;0;false;false;;;;;; -94328;2;0;false;false;0;0;0;;; -94330;1;0;false;false;;;;;; -94331;1;0;false;false;0;0;0;;; -94332;1;0;false;false;;;;;; -94333;2;0;false;false;0;0;0;;; -94335;1;0;false;false;;;;;; -94336;1;0;false;false;0;0;0;;; -94337;1;0;false;false;;;;;; -94338;1;0;false;false;0;0;0;;; -94339;1;0;false;false;;;;;; -94340;22;0;false;false;0;0;0;;; -94362;1;0;false;false;;;;;; -94363;2;0;false;false;0;0;0;;; -94365;5;0;false;false;;;;;; -94370;2;0;false;false;0;0;0;;; -94372;1;0;false;false;;;;;; -94373;2;0;false;false;0;0;0;;; -94375;1;0;false;false;;;;;; -94376;1;0;false;false;0;0;0;;; -94377;1;0;false;false;;;;;; -94378;2;0;false;false;0;0;0;;; -94380;1;0;false;false;;;;;; -94381;1;0;false;false;0;0;0;;; -94382;1;0;false;false;;;;;; -94383;1;0;false;false;0;0;0;;; -94384;1;0;false;false;;;;;; -94385;21;0;false;false;0;0;0;;; -94406;1;0;false;false;;;;;; -94407;2;0;false;false;0;0;0;;; -94409;1;0;false;false;;;;;; -94410;8;0;false;false;0;0;0;;; -94418;1;0;false;false;;;;;; -94419;2;0;false;false;0;0;0;;; -94421;5;0;false;false;;;;;; -94426;12;0;false;false;0;0;0;;; -94438;1;0;false;false;;;;;; -94439;2;0;false;false;0;0;0;;; -94441;1;0;false;false;;;;;; -94442;38;0;false;false;0;0;0;;; -94480;1;0;false;false;;;;;; -94481;1;0;false;false;0;0;0;;; -94482;4;0;false;false;;;;;; -94486;2;1;false;false;127;0;85;;; -94488;1;0;false;false;;;;;; -94489;15;0;false;false;0;0;0;;; -94504;1;0;false;false;;;;;; -94505;2;0;false;false;0;0;0;;; -94507;1;0;false;false;;;;;; -94508;11;0;false;false;0;0;0;;; -94519;1;0;false;false;;;;;; -94520;2;0;false;false;0;0;0;;; -94522;1;0;false;false;;;;;; -94523;9;0;false;false;0;0;0;;; -94532;1;0;false;false;;;;;; -94533;2;0;false;false;0;0;0;;; -94535;1;0;false;false;;;;;; -94536;13;0;false;false;0;0;0;;; -94549;1;0;false;false;;;;;; -94550;1;0;false;false;0;0;0;;; -94551;5;0;false;false;;;;;; -94556;11;0;false;false;0;0;0;;; -94567;1;0;false;false;;;;;; -94568;1;0;false;false;0;0;0;;; -94569;1;0;false;false;;;;;; -94570;15;0;false;false;0;0;0;;; -94585;5;0;false;false;;;;;; -94590;2;1;false;false;127;0;85;;; -94592;1;0;false;false;;;;;; -94593;8;0;false;false;0;0;0;;; -94601;1;0;false;false;;;;;; -94602;1;0;false;false;0;0;0;;; -94603;6;0;false;false;;;;;; -94609;19;0;false;false;0;0;0;;; -94628;5;0;false;false;;;;;; -94633;1;0;false;false;0;0;0;;; -94634;5;0;false;false;;;;;; -94639;12;0;false;false;0;0;0;;; -94651;4;0;false;false;;;;;; -94655;1;0;false;false;0;0;0;;; -94656;3;0;false;false;;;;;; -94659;1;0;false;false;0;0;0;;; -94660;3;0;false;false;;;;;; -94663;2;1;false;false;127;0;85;;; -94665;1;0;false;false;;;;;; -94666;9;0;false;false;0;0;0;;; -94675;1;0;false;false;;;;;; -94676;1;0;false;false;0;0;0;;; -94677;4;0;false;false;;;;;; -94681;11;0;false;false;0;0;0;;; -94692;1;0;false;false;;;;;; -94693;1;0;false;false;0;0;0;;; -94694;1;0;false;false;;;;;; -94695;15;0;false;false;0;0;0;;; -94710;4;0;false;false;;;;;; -94714;15;0;false;false;0;0;0;;; -94729;4;1;false;false;127;0;85;;; -94733;2;0;false;false;0;0;0;;; -94735;3;0;false;false;;;;;; -94738;1;0;false;false;0;0;0;;; -94739;2;0;false;false;;;;;; -94741;1;0;false;false;0;0;0;;; -94742;2;0;false;false;;;;;; -94744;3;0;false;false;63;95;191;;; -94747;3;0;false;false;;;;;; -94750;1;0;false;false;63;95;191;;; -94751;1;0;false;false;;;;;; -94752;7;0;false;false;63;95;191;;; -94759;1;0;false;false;;;;;; -94760;3;0;false;false;63;95;191;;; -94763;1;0;false;false;;;;;; -94764;9;0;false;false;63;95;191;;; -94773;1;0;false;false;;;;;; -94774;5;0;false;false;63;95;191;;; -94779;1;0;false;false;;;;;; -94780;2;0;false;false;63;95;191;;; -94782;1;0;false;false;;;;;; -94783;3;0;false;false;63;95;191;;; -94786;1;0;false;false;;;;;; -94787;5;0;false;false;63;95;191;;; -94792;1;0;false;false;;;;;; -94793;8;0;false;false;63;95;191;;; -94801;3;0;false;false;;;;;; -94804;2;0;false;false;63;95;191;;; -94806;2;0;false;false;;;;;; -94808;4;1;false;false;127;0;85;;; -94812;1;0;false;false;;;;;; -94813;18;0;false;false;0;0;0;;; -94831;1;0;false;false;;;;;; -94832;1;0;false;false;0;0;0;;; -94833;3;0;false;false;;;;;; -94836;2;1;false;false;127;0;85;;; -94838;1;0;false;false;;;;;; -94839;12;0;false;false;0;0;0;;; -94851;1;0;false;false;;;;;; -94852;2;0;false;false;0;0;0;;; -94854;1;0;false;false;;;;;; -94855;11;0;false;false;0;0;0;;; -94866;1;0;false;false;;;;;; -94867;2;0;false;false;0;0;0;;; -94869;5;0;false;false;;;;;; -94874;12;0;false;false;0;0;0;;; -94886;1;0;false;false;;;;;; -94887;1;0;false;false;0;0;0;;; -94888;1;0;false;false;;;;;; -94889;11;0;false;false;0;0;0;;; -94900;1;0;false;false;;;;;; -94901;2;0;false;false;0;0;0;;; -94903;6;0;false;false;;;;;; -94909;11;0;false;false;0;0;0;;; -94920;1;0;false;false;;;;;; -94921;1;0;false;false;0;0;0;;; -94922;1;0;false;false;;;;;; -94923;11;0;false;false;0;0;0;;; -94934;1;0;false;false;;;;;; -94935;2;0;false;false;0;0;0;;; -94937;1;0;false;false;;;;;; -94938;15;0;false;false;0;0;0;;; -94953;1;0;false;false;;;;;; -94954;2;0;false;false;0;0;0;;; -94956;1;0;false;false;;;;;; -94957;13;0;false;false;0;0;0;;; -94970;1;0;false;false;;;;;; -94971;1;0;false;false;0;0;0;;; -94972;4;0;false;false;;;;;; -94976;32;0;false;false;0;0;0;;; -95008;3;0;false;false;;;;;; -95011;1;0;false;false;0;0;0;;; -95012;3;0;false;false;;;;;; -95015;4;1;false;false;127;0;85;;; -95019;1;0;false;false;;;;;; -95020;1;0;false;false;0;0;0;;; -95021;4;0;false;false;;;;;; -95025;28;0;false;false;0;0;0;;; -95053;3;0;false;false;;;;;; -95056;1;0;false;false;0;0;0;;; -95057;2;0;false;false;;;;;; -95059;1;0;false;false;0;0;0;;; -95060;2;0;false;false;;;;;; -95062;3;0;false;false;63;95;191;;; -95065;3;0;false;false;;;;;; -95068;1;0;false;false;63;95;191;;; -95069;1;0;false;false;;;;;; -95070;7;0;false;false;63;95;191;;; -95077;1;0;false;false;;;;;; -95078;3;0;false;false;63;95;191;;; -95081;1;0;false;false;;;;;; -95082;6;0;false;false;63;95;191;;; -95088;1;0;false;false;;;;;; -95089;2;0;false;false;63;95;191;;; -95091;1;0;false;false;;;;;; -95092;3;0;false;false;63;95;191;;; -95095;1;0;false;false;;;;;; -95096;4;0;false;false;63;95;191;;; -95100;1;0;false;false;;;;;; -95101;2;0;false;false;63;95;191;;; -95103;1;0;false;false;;;;;; -95104;3;0;false;false;63;95;191;;; -95107;1;0;false;false;;;;;; -95108;9;0;false;false;63;95;191;;; -95117;1;0;false;false;;;;;; -95118;7;0;false;false;63;95;191;;; -95125;4;0;false;false;;;;;; -95129;1;0;false;false;63;95;191;;; -95130;1;0;false;false;;;;;; -95131;2;0;false;false;63;95;191;;; -95133;1;0;false;false;;;;;; -95134;3;0;false;false;63;95;191;;; -95137;1;0;false;false;;;;;; -95138;7;0;false;false;63;95;191;;; -95145;1;0;false;false;;;;;; -95146;9;0;false;false;63;95;191;;; -95155;1;0;false;false;;;;;; -95156;7;0;false;false;63;95;191;;; -95163;1;0;false;false;;;;;; -95164;4;0;false;false;63;95;191;;; -95168;1;0;false;false;;;;;; -95169;4;0;false;false;63;95;191;;; -95173;1;0;false;false;;;;;; -95174;5;0;false;false;63;95;191;;; -95179;1;0;false;false;;;;;; -95180;2;0;false;false;63;95;191;;; -95182;1;0;false;false;;;;;; -95183;3;0;false;false;63;95;191;;; -95186;1;0;false;false;;;;;; -95187;5;0;false;false;63;95;191;;; -95192;4;0;false;false;;;;;; -95196;1;0;false;false;63;95;191;;; -95197;1;0;false;false;;;;;; -95198;6;0;false;false;63;95;191;;; -95204;1;0;false;false;;;;;; -95205;5;0;false;false;63;95;191;;; -95210;1;0;false;false;;;;;; -95211;2;0;false;false;63;95;191;;; -95213;1;0;false;false;;;;;; -95214;5;0;false;false;63;95;191;;; -95219;1;0;false;false;;;;;; -95220;2;0;false;false;63;95;191;;; -95222;1;0;false;false;;;;;; -95223;5;0;false;false;63;95;191;;; -95228;1;0;false;false;;;;;; -95229;2;0;false;false;63;95;191;;; -95231;1;0;false;false;;;;;; -95232;2;0;false;false;63;95;191;;; -95234;1;0;false;false;;;;;; -95235;4;0;false;false;63;95;191;;; -95239;1;0;false;false;;;;;; -95240;6;0;false;false;63;95;191;;; -95246;1;0;false;false;;;;;; -95247;2;0;false;false;63;95;191;;; -95249;1;0;false;false;;;;;; -95250;8;0;false;false;63;95;191;;; -95258;1;0;false;false;;;;;; -95259;2;0;false;false;63;95;191;;; -95261;4;0;false;false;;;;;; -95265;1;0;false;false;63;95;191;;; -95266;1;0;false;false;;;;;; -95267;3;0;false;false;63;95;191;;; -95270;1;0;false;false;127;127;159;;; -95271;4;0;false;false;63;95;191;;; -95275;1;0;false;false;;;;;; -95276;10;0;false;false;63;95;191;;; -95286;1;0;false;false;;;;;; -95287;3;0;false;false;63;95;191;;; -95290;1;0;false;false;;;;;; -95291;5;0;false;false;63;95;191;;; -95296;1;0;false;false;;;;;; -95297;6;0;false;false;63;95;191;;; -95303;1;0;false;false;;;;;; -95304;2;0;false;false;63;95;191;;; -95306;1;0;false;false;;;;;; -95307;3;0;false;false;63;95;191;;; -95310;1;0;false;false;;;;;; -95311;4;0;false;false;63;95;191;;; -95315;1;0;false;false;;;;;; -95316;10;0;false;false;63;95;191;;; -95326;1;0;false;false;;;;;; -95327;3;0;false;false;63;95;191;;; -95330;3;0;false;false;;;;;; -95333;1;0;false;false;63;95;191;;; -95334;1;0;false;false;;;;;; -95335;9;0;false;false;63;95;191;;; -95344;1;0;false;false;;;;;; -95345;2;0;false;false;63;95;191;;; -95347;1;0;false;false;;;;;; -95348;9;0;false;false;63;95;191;;; -95357;1;0;false;false;;;;;; -95358;2;0;false;false;63;95;191;;; -95360;1;0;false;false;;;;;; -95361;3;0;false;false;63;95;191;;; -95364;1;0;false;false;;;;;; -95365;7;0;false;false;63;95;191;;; -95372;1;0;false;false;;;;;; -95373;9;0;false;false;63;95;191;;; -95382;1;0;false;false;;;;;; -95383;7;0;false;false;63;95;191;;; -95390;1;0;false;false;;;;;; -95391;4;0;false;false;63;95;191;;; -95395;4;0;false;false;;;;;; -95399;1;0;false;false;63;95;191;;; -95400;1;0;false;false;;;;;; -95401;3;0;false;false;63;95;191;;; -95404;1;0;false;false;;;;;; -95405;5;0;false;false;63;95;191;;; -95410;1;0;false;false;;;;;; -95411;2;0;false;false;63;95;191;;; -95413;1;0;false;false;;;;;; -95414;4;0;false;false;63;95;191;;; -95418;1;0;false;false;;;;;; -95419;5;0;false;false;63;95;191;;; -95424;1;0;false;false;;;;;; -95425;3;0;false;false;63;95;191;;; -95428;1;0;false;false;;;;;; -95429;3;0;false;false;63;95;191;;; -95432;1;0;false;false;;;;;; -95433;6;0;false;false;63;95;191;;; -95439;1;0;false;false;;;;;; -95440;2;0;false;false;63;95;191;;; -95442;1;0;false;false;;;;;; -95443;3;0;false;false;63;95;191;;; -95446;1;0;false;false;;;;;; -95447;4;0;false;false;63;95;191;;; -95451;1;0;false;false;;;;;; -95452;9;0;false;false;63;95;191;;; -95461;4;0;false;false;;;;;; -95465;1;0;false;false;63;95;191;;; -95466;1;0;false;false;;;;;; -95467;3;0;false;false;63;95;191;;; -95470;1;0;false;false;;;;;; -95471;9;0;false;false;63;95;191;;; -95480;1;0;false;false;;;;;; -95481;2;0;false;false;63;95;191;;; -95483;1;0;false;false;;;;;; -95484;9;0;false;false;63;95;191;;; -95493;3;0;false;false;;;;;; -95496;1;0;false;false;63;95;191;;; -95497;4;0;false;false;;;;;; -95501;1;0;false;false;63;95;191;;; -95502;1;0;false;false;;;;;; -95503;7;1;false;false;127;159;191;;; -95510;1;0;false;false;63;95;191;;; -95511;1;0;false;false;;;;;; -95512;5;0;false;false;63;95;191;;; -95517;1;0;false;false;;;;;; -95518;1;0;false;false;63;95;191;;; -95519;1;0;false;false;;;;;; -95520;8;0;false;false;63;95;191;;; -95528;3;0;false;false;;;;;; -95531;1;0;false;false;63;95;191;;; -95532;1;0;false;false;;;;;; -95533;7;1;false;false;127;159;191;;; -95540;14;0;false;false;63;95;191;;; -95554;1;0;false;false;;;;;; -95555;5;0;false;false;63;95;191;;; -95560;1;0;false;false;;;;;; -95561;6;0;false;false;63;95;191;;; -95567;1;0;false;false;;;;;; -95568;2;0;false;false;63;95;191;;; -95570;1;0;false;false;;;;;; -95571;3;0;false;false;63;95;191;;; -95574;1;0;false;false;;;;;; -95575;5;0;false;false;63;95;191;;; -95580;1;0;false;false;;;;;; -95581;6;0;false;false;63;95;191;;; -95587;1;0;false;false;;;;;; -95588;8;0;false;false;63;95;191;;; -95596;3;0;false;false;;;;;; -95599;1;0;false;false;63;95;191;;; -95600;1;0;false;false;;;;;; -95601;7;1;false;false;127;159;191;;; -95608;4;0;false;false;63;95;191;;; -95612;1;0;false;false;;;;;; -95613;4;0;false;false;63;95;191;;; -95617;1;0;false;false;;;;;; -95618;5;0;false;false;63;95;191;;; -95623;1;0;false;false;;;;;; -95624;2;0;false;false;63;95;191;;; -95626;1;0;false;false;;;;;; -95627;3;0;false;false;63;95;191;;; -95630;1;0;false;false;;;;;; -95631;5;0;false;false;63;95;191;;; -95636;1;0;false;false;;;;;; -95637;6;0;false;false;63;95;191;;; -95643;1;0;false;false;;;;;; -95644;8;0;false;false;63;95;191;;; -95652;3;0;false;false;;;;;; -95655;2;0;false;false;63;95;191;;; -95657;2;0;false;false;;;;;; -95659;3;1;false;false;127;0;85;;; -95662;1;0;false;false;;;;;; -95663;18;0;false;false;0;0;0;;; -95681;3;1;false;false;127;0;85;;; -95684;1;0;false;false;;;;;; -95685;2;0;false;false;0;0;0;;; -95687;1;0;false;false;;;;;; -95688;3;1;false;false;127;0;85;;; -95691;1;0;false;false;;;;;; -95692;15;0;false;false;0;0;0;;; -95707;1;0;false;false;;;;;; -95708;3;1;false;false;127;0;85;;; -95711;1;0;false;false;;;;;; -95712;5;0;false;false;0;0;0;;; -95717;1;0;false;false;;;;;; -95718;1;0;false;false;0;0;0;;; -95719;3;0;false;false;;;;;; -95722;3;1;false;false;127;0;85;;; -95725;1;0;false;false;;;;;; -95726;11;0;false;false;0;0;0;;; -95737;5;0;false;false;;;;;; -95742;66;0;false;false;63;127;95;;; -95808;1;0;false;false;;;;;; -95809;76;0;false;false;63;127;95;;; -95885;1;0;false;false;;;;;; -95886;74;0;false;false;63;127;95;;; -95960;1;0;false;false;;;;;; -95961;50;0;false;false;63;127;95;;; -96011;2;0;false;false;;;;;; -96013;2;1;false;false;127;0;85;;; -96015;1;0;false;false;;;;;; -96016;15;0;false;false;0;0;0;;; -96031;1;0;false;false;;;;;; -96032;1;0;false;false;0;0;0;;; -96033;1;0;false;false;;;;;; -96034;15;0;false;false;0;0;0;;; -96049;1;0;false;false;;;;;; -96050;2;0;false;false;0;0;0;;; -96052;1;0;false;false;;;;;; -96053;15;0;false;false;0;0;0;;; -96068;1;0;false;false;;;;;; -96069;2;0;false;false;0;0;0;;; -96071;1;0;false;false;;;;;; -96072;12;0;false;false;0;0;0;;; -96084;1;0;false;false;;;;;; -96085;1;0;false;false;0;0;0;;; -96086;4;0;false;false;;;;;; -96090;15;0;false;false;0;0;0;;; -96105;1;0;false;false;;;;;; -96106;1;0;false;false;0;0;0;;; -96107;1;0;false;false;;;;;; -96108;23;0;false;false;0;0;0;;; -96131;3;0;false;false;;;;;; -96134;1;0;false;false;0;0;0;;; -96135;3;0;false;false;;;;;; -96138;4;1;false;false;127;0;85;;; -96142;3;0;false;false;;;;;; -96145;2;1;false;false;127;0;85;;; -96147;1;0;false;false;;;;;; -96148;15;0;false;false;0;0;0;;; -96163;1;0;false;false;;;;;; -96164;1;0;false;false;0;0;0;;; -96165;1;0;false;false;;;;;; -96166;15;0;false;false;0;0;0;;; -96181;1;0;false;false;;;;;; -96182;2;0;false;false;0;0;0;;; -96184;1;0;false;false;;;;;; -96185;15;0;false;false;0;0;0;;; -96200;1;0;false;false;;;;;; -96201;2;0;false;false;0;0;0;;; -96203;1;0;false;false;;;;;; -96204;12;0;false;false;0;0;0;;; -96216;1;0;false;false;;;;;; -96217;1;0;false;false;0;0;0;;; -96218;4;0;false;false;;;;;; -96222;15;0;false;false;0;0;0;;; -96237;1;0;false;false;;;;;; -96238;1;0;false;false;0;0;0;;; -96239;1;0;false;false;;;;;; -96240;23;0;false;false;0;0;0;;; -96263;3;0;false;false;;;;;; -96266;1;0;false;false;0;0;0;;; -96267;3;0;false;false;;;;;; -96270;2;1;false;false;127;0;85;;; -96272;1;0;false;false;;;;;; -96273;2;0;false;false;0;0;0;;; -96275;1;0;false;false;;;;;; -96276;2;0;false;false;0;0;0;;; -96278;1;0;false;false;;;;;; -96279;1;0;false;false;0;0;0;;; -96280;1;0;false;false;;;;;; -96281;2;0;false;false;0;0;0;;; -96283;1;0;false;false;;;;;; -96284;1;0;false;false;0;0;0;;; -96285;1;0;false;false;;;;;; -96286;1;0;false;false;0;0;0;;; -96287;1;0;false;false;;;;;; -96288;22;0;false;false;0;0;0;;; -96310;1;0;false;false;;;;;; -96311;1;0;false;false;0;0;0;;; -96312;4;0;false;false;;;;;; -96316;32;0;false;false;63;127;95;;; -96348;2;0;false;false;;;;;; -96350;2;1;false;false;127;0;85;;; -96352;1;0;false;false;;;;;; -96353;12;0;false;false;0;0;0;;; -96365;1;0;false;false;;;;;; -96366;2;0;false;false;0;0;0;;; -96368;1;0;false;false;;;;;; -96369;12;0;false;false;0;0;0;;; -96381;1;0;false;false;;;;;; -96382;1;0;false;false;0;0;0;;; -96383;5;0;false;false;;;;;; -96388;10;0;false;false;0;0;0;;; -96398;1;0;false;false;;;;;; -96399;1;0;false;false;0;0;0;;; -96400;1;0;false;false;;;;;; -96401;29;0;false;false;0;0;0;;; -96430;4;0;false;false;;;;;; -96434;1;0;false;false;0;0;0;;; -96435;4;0;false;false;;;;;; -96439;4;1;false;false;127;0;85;;; -96443;1;0;false;false;;;;;; -96444;1;0;false;false;0;0;0;;; -96445;5;0;false;false;;;;;; -96450;10;0;false;false;0;0;0;;; -96460;1;0;false;false;;;;;; -96461;1;0;false;false;0;0;0;;; -96462;1;0;false;false;;;;;; -96463;35;0;false;false;0;0;0;;; -96498;4;0;false;false;;;;;; -96502;1;0;false;false;0;0;0;;; -96503;4;0;false;false;;;;;; -96507;59;0;false;false;63;127;95;;; -96566;2;0;false;false;;;;;; -96568;2;1;false;false;127;0;85;;; -96570;1;0;false;false;;;;;; -96571;36;0;false;false;0;0;0;;; -96607;1;0;false;false;;;;;; -96608;2;0;false;false;0;0;0;;; -96610;1;0;false;false;;;;;; -96611;5;0;false;false;0;0;0;;; -96616;1;0;false;false;;;;;; -96617;1;0;false;false;0;0;0;;; -96618;5;0;false;false;;;;;; -96623;14;0;false;false;0;0;0;;; -96637;1;0;false;false;;;;;; -96638;1;0;false;false;0;0;0;;; -96639;1;0;false;false;;;;;; -96640;11;0;false;false;0;0;0;;; -96651;4;0;false;false;;;;;; -96655;1;0;false;false;0;0;0;;; -96656;3;0;false;false;;;;;; -96659;1;0;false;false;0;0;0;;; -96660;3;0;false;false;;;;;; -96663;6;1;false;false;127;0;85;;; -96669;1;0;false;false;;;;;; -96670;15;0;false;false;0;0;0;;; -96685;2;0;false;false;;;;;; -96687;1;0;false;false;0;0;0;;; -96688;2;0;false;false;;;;;; -96690;3;0;false;false;63;95;191;;; -96693;3;0;false;false;;;;;; -96696;1;0;false;false;63;95;191;;; -96697;1;0;false;false;;;;;; -96698;7;0;false;false;63;95;191;;; -96705;1;0;false;false;;;;;; -96706;3;0;false;false;63;95;191;;; -96709;1;0;false;false;;;;;; -96710;4;0;false;false;63;95;191;;; -96714;1;0;false;false;;;;;; -96715;4;0;false;false;63;95;191;;; -96719;1;0;false;false;;;;;; -96720;2;0;false;false;63;95;191;;; -96722;1;0;false;false;;;;;; -96723;4;0;false;false;63;95;191;;; -96727;1;0;false;false;;;;;; -96728;3;0;false;false;63;95;191;;; -96731;1;0;false;false;;;;;; -96732;4;0;false;false;63;95;191;;; -96736;1;0;false;false;;;;;; -96737;4;0;false;false;63;95;191;;; -96741;1;0;false;false;;;;;; -96742;10;0;false;false;63;95;191;;; -96752;1;0;false;false;;;;;; -96753;2;0;false;false;63;95;191;;; -96755;1;0;false;false;;;;;; -96756;6;0;false;false;63;95;191;;; -96762;3;0;false;false;;;;;; -96765;1;0;false;false;63;95;191;;; -96766;1;0;false;false;;;;;; -96767;2;0;false;false;63;95;191;;; -96769;1;0;false;false;;;;;; -96770;3;0;false;false;63;95;191;;; -96773;1;0;false;false;;;;;; -96774;7;0;false;false;63;95;191;;; -96781;1;0;false;false;;;;;; -96782;4;0;false;false;63;95;191;;; -96786;1;0;false;false;;;;;; -96787;7;0;false;false;63;95;191;;; -96794;1;0;false;false;;;;;; -96795;3;0;false;false;63;95;191;;; -96798;1;0;false;false;;;;;; -96799;5;0;false;false;63;95;191;;; -96804;1;0;false;false;;;;;; -96805;7;0;false;false;63;95;191;;; -96812;1;0;false;false;;;;;; -96813;3;0;false;false;63;95;191;;; -96816;1;0;false;false;;;;;; -96817;5;0;false;false;63;95;191;;; -96822;3;0;false;false;;;;;; -96825;1;0;false;false;63;95;191;;; -96826;1;0;false;false;;;;;; -96827;3;0;false;false;63;95;191;;; -96830;1;0;false;false;;;;;; -96831;5;0;false;false;63;95;191;;; -96836;1;0;false;false;;;;;; -96837;2;0;false;false;63;95;191;;; -96839;1;0;false;false;;;;;; -96840;8;0;false;false;63;95;191;;; -96848;1;0;false;false;;;;;; -96849;3;0;false;false;63;95;191;;; -96852;1;0;false;false;;;;;; -96853;4;0;false;false;63;95;191;;; -96857;1;0;false;false;;;;;; -96858;6;0;false;false;63;95;191;;; -96864;1;0;false;false;;;;;; -96865;2;0;false;false;63;95;191;;; -96867;1;0;false;false;;;;;; -96868;5;0;false;false;63;95;191;;; -96873;1;0;false;false;;;;;; -96874;2;0;false;false;63;95;191;;; -96876;1;0;false;false;;;;;; -96877;4;0;false;false;63;95;191;;; -96881;1;0;false;false;;;;;; -96882;3;0;false;false;63;95;191;;; -96885;1;0;false;false;;;;;; -96886;8;0;false;false;63;95;191;;; -96894;4;0;false;false;;;;;; -96898;1;0;false;false;63;95;191;;; -96899;1;0;false;false;;;;;; -96900;8;0;false;false;63;95;191;;; -96908;1;0;false;false;;;;;; -96909;2;0;false;false;63;95;191;;; -96911;1;0;false;false;;;;;; -96912;3;0;false;false;63;95;191;;; -96915;1;0;false;false;;;;;; -96916;3;0;false;false;63;95;191;;; -96919;1;0;false;false;;;;;; -96920;4;0;false;false;63;95;191;;; -96924;1;0;false;false;;;;;; -96925;7;0;false;false;63;95;191;;; -96932;1;0;false;false;;;;;; -96933;3;0;false;false;63;95;191;;; -96936;1;0;false;false;;;;;; -96937;5;0;false;false;63;95;191;;; -96942;1;0;false;false;;;;;; -96943;3;0;false;false;63;95;191;;; -96946;1;0;false;false;;;;;; -96947;9;0;false;false;63;95;191;;; -96956;1;0;false;false;;;;;; -96957;2;0;false;false;63;95;191;;; -96959;1;0;false;false;;;;;; -96960;3;0;false;false;63;95;191;;; -96963;1;0;false;false;;;;;; -96964;3;0;false;false;63;95;191;;; -96967;4;0;false;false;;;;;; -96971;1;0;false;false;63;95;191;;; -96972;1;0;false;false;;;;;; -96973;2;0;false;false;63;95;191;;; -96975;1;0;false;false;;;;;; -96976;3;0;false;false;63;95;191;;; -96979;1;0;false;false;;;;;; -96980;4;0;false;false;63;95;191;;; -96984;1;0;false;false;;;;;; -96985;5;0;false;false;63;95;191;;; -96990;1;0;false;false;;;;;; -96991;1;0;false;false;63;95;191;;; -96992;1;0;false;false;;;;;; -96993;4;0;false;false;63;95;191;;; -96997;1;0;false;false;;;;;; -96998;4;0;false;false;63;95;191;;; -97002;1;0;false;false;;;;;; -97003;6;0;false;false;63;95;191;;; -97009;1;0;false;false;;;;;; -97010;2;0;false;false;63;95;191;;; -97012;1;0;false;false;;;;;; -97013;3;0;false;false;63;95;191;;; -97016;1;0;false;false;;;;;; -97017;9;0;false;false;63;95;191;;; -97026;1;0;false;false;;;;;; -97027;2;0;false;false;63;95;191;;; -97029;1;0;false;false;;;;;; -97030;4;0;false;false;63;95;191;;; -97034;1;0;false;false;;;;;; -97035;4;0;false;false;63;95;191;;; -97039;4;0;false;false;;;;;; -97043;1;0;false;false;63;95;191;;; -97044;1;0;false;false;;;;;; -97045;3;0;false;false;63;95;191;;; -97048;1;0;false;false;;;;;; -97049;5;0;false;false;63;95;191;;; -97054;1;0;false;false;;;;;; -97055;2;0;false;false;63;95;191;;; -97057;1;0;false;false;;;;;; -97058;5;0;false;false;63;95;191;;; -97063;1;0;false;false;;;;;; -97064;5;0;false;false;63;95;191;;; -97069;1;0;false;false;;;;;; -97070;3;0;false;false;63;95;191;;; -97073;1;0;false;false;;;;;; -97074;4;0;false;false;63;95;191;;; -97078;1;0;false;false;;;;;; -97079;10;0;false;false;63;95;191;;; -97089;3;0;false;false;;;;;; -97092;1;0;false;false;63;95;191;;; -97093;1;0;false;false;;;;;; -97094;3;0;false;false;127;127;159;;; -97097;3;0;false;false;;;;;; -97100;1;0;false;false;63;95;191;;; -97101;3;0;false;false;;;;;; -97104;1;0;false;false;63;95;191;;; -97105;1;0;false;false;;;;;; -97106;7;1;false;false;127;159;191;;; -97113;6;0;false;false;63;95;191;;; -97119;1;0;false;false;;;;;; -97120;7;0;false;false;63;95;191;;; -97127;1;0;false;false;;;;;; -97128;2;0;false;false;63;95;191;;; -97130;1;0;false;false;;;;;; -97131;3;0;false;false;63;95;191;;; -97134;1;0;false;false;;;;;; -97135;2;0;false;false;63;95;191;;; -97137;1;0;false;false;;;;;; -97138;6;0;false;false;63;95;191;;; -97144;1;0;false;false;;;;;; -97145;3;0;false;false;63;95;191;;; -97148;1;0;false;false;;;;;; -97149;4;0;false;false;63;95;191;;; -97153;3;0;false;false;;;;;; -97156;2;0;false;false;63;95;191;;; -97158;2;0;false;false;;;;;; -97160;4;1;false;false;127;0;85;;; -97164;1;0;false;false;;;;;; -97165;11;0;false;false;0;0;0;;; -97176;7;1;false;false;127;0;85;;; -97183;1;0;false;false;;;;;; -97184;7;0;false;false;0;0;0;;; -97191;1;0;false;false;;;;;; -97192;3;1;false;false;127;0;85;;; -97195;1;0;false;false;;;;;; -97196;6;0;false;false;0;0;0;;; -97202;1;0;false;false;;;;;; -97203;1;0;false;false;0;0;0;;; -97204;3;0;false;false;;;;;; -97207;3;1;false;false;127;0;85;;; -97210;1;0;false;false;;;;;; -97211;9;0;false;false;0;0;0;;; -97220;1;0;false;false;;;;;; -97221;1;0;false;false;0;0;0;;; -97222;1;0;false;false;;;;;; -97223;23;0;false;false;0;0;0;;; -97246;3;0;false;false;;;;;; -97249;3;1;false;false;127;0;85;;; -97252;1;0;false;false;;;;;; -97253;10;0;false;false;0;0;0;;; -97263;1;0;false;false;;;;;; -97264;1;0;false;false;0;0;0;;; -97265;1;0;false;false;;;;;; -97266;8;0;false;false;0;0;0;;; -97274;3;0;false;false;;;;;; -97277;3;1;false;false;127;0;85;;; -97280;1;0;false;false;;;;;; -97281;16;0;false;false;0;0;0;;; -97297;1;0;false;false;;;;;; -97298;1;0;false;false;0;0;0;;; -97299;1;0;false;false;;;;;; -97300;23;0;false;false;0;0;0;;; -97323;3;0;false;false;;;;;; -97326;3;1;false;false;127;0;85;;; -97329;1;0;false;false;;;;;; -97330;10;0;false;false;0;0;0;;; -97340;6;0;false;false;;;;;; -97346;50;0;false;false;63;127;95;;; -97396;1;0;false;false;;;;;; -97397;2;1;false;false;127;0;85;;; -97399;1;0;false;false;;;;;; -97400;16;0;false;false;0;0;0;;; -97416;1;0;false;false;;;;;; -97417;1;0;false;false;0;0;0;;; -97418;4;0;false;false;;;;;; -97422;6;1;false;false;127;0;85;;; -97428;1;0;false;false;0;0;0;;; -97429;3;0;false;false;;;;;; -97432;1;0;false;false;0;0;0;;; -97433;3;0;false;false;;;;;; -97436;9;0;false;false;0;0;0;;; -97445;1;0;false;false;;;;;; -97446;1;0;false;false;0;0;0;;; -97447;1;0;false;false;;;;;; -97448;15;0;false;false;0;0;0;;; -97463;3;0;false;false;;;;;; -97466;2;1;false;false;127;0;85;;; -97468;1;0;false;false;;;;;; -97469;10;0;false;false;0;0;0;;; -97479;1;0;false;false;;;;;; -97480;1;0;false;false;0;0;0;;; -97481;1;0;false;false;;;;;; -97482;9;0;false;false;0;0;0;;; -97491;1;0;false;false;;;;;; -97492;1;0;false;false;0;0;0;;; -97493;1;0;false;false;;;;;; -97494;2;0;false;false;0;0;0;;; -97496;1;0;false;false;;;;;; -97497;1;0;false;false;0;0;0;;; -97498;4;0;false;false;;;;;; -97502;3;1;false;false;127;0;85;;; -97505;1;0;false;false;;;;;; -97506;15;0;false;false;0;0;0;;; -97521;1;0;false;false;;;;;; -97522;1;0;false;false;0;0;0;;; -97523;1;0;false;false;;;;;; -97524;9;0;false;false;0;0;0;;; -97533;1;0;false;false;;;;;; -97534;1;0;false;false;0;0;0;;; -97535;1;0;false;false;;;;;; -97536;23;0;false;false;0;0;0;;; -97559;4;0;false;false;;;;;; -97563;3;1;false;false;127;0;85;;; -97566;1;0;false;false;;;;;; -97567;8;0;false;false;0;0;0;;; -97575;1;0;false;false;;;;;; -97576;1;0;false;false;0;0;0;;; -97577;1;0;false;false;;;;;; -97578;23;0;false;false;0;0;0;;; -97601;4;0;false;false;;;;;; -97605;3;1;false;false;127;0;85;;; -97608;1;0;false;false;;;;;; -97609;11;0;false;false;0;0;0;;; -97620;1;0;false;false;;;;;; -97621;1;0;false;false;0;0;0;;; -97622;1;0;false;false;;;;;; -97623;18;0;false;false;0;0;0;;; -97641;1;0;false;false;;;;;; -97642;1;0;false;false;0;0;0;;; -97643;1;0;false;false;;;;;; -97644;9;0;false;false;0;0;0;;; -97653;1;0;false;false;;;;;; -97654;1;0;false;false;0;0;0;;; -97655;1;0;false;false;;;;;; -97656;2;0;false;false;0;0;0;;; -97658;1;0;false;false;;;;;; -97659;7;0;false;false;0;0;0;;; -97666;4;0;false;false;;;;;; -97670;3;1;false;false;127;0;85;;; -97673;1;0;false;false;;;;;; -97674;13;0;false;false;0;0;0;;; -97687;8;0;false;false;;;;;; -97695;65;0;false;false;63;127;95;;; -97760;2;0;false;false;;;;;; -97762;38;0;false;false;63;127;95;;; -97800;2;0;false;false;;;;;; -97802;11;0;false;false;0;0;0;;; -97813;1;0;false;false;;;;;; -97814;1;0;false;false;0;0;0;;; -97815;1;0;false;false;;;;;; -97816;11;0;false;false;0;0;0;;; -97827;1;0;false;false;;;;;; -97828;13;0;false;false;0;0;0;;; -97841;4;0;false;false;;;;;; -97845;9;0;false;false;0;0;0;;; -97854;1;0;false;false;;;;;; -97855;2;0;false;false;0;0;0;;; -97857;1;0;false;false;;;;;; -97858;12;0;false;false;0;0;0;;; -97870;4;0;false;false;;;;;; -97874;11;0;false;false;0;0;0;;; -97885;1;0;false;false;;;;;; -97886;1;0;false;false;0;0;0;;; -97887;1;0;false;false;;;;;; -97888;33;0;false;false;0;0;0;;; -97921;1;0;false;false;;;;;; -97922;11;0;false;false;0;0;0;;; -97933;5;0;false;false;;;;;; -97938;2;1;false;false;127;0;85;;; -97940;1;0;false;false;;;;;; -97941;8;0;false;false;0;0;0;;; -97949;1;0;false;false;;;;;; -97950;1;0;false;false;0;0;0;;; -97951;5;0;false;false;;;;;; -97956;28;0;false;false;0;0;0;;; -97984;4;0;false;false;;;;;; -97988;1;0;false;false;0;0;0;;; -97989;4;0;false;false;;;;;; -97993;42;0;false;false;63;127;95;;; -98035;2;0;false;false;;;;;; -98037;12;0;false;false;0;0;0;;; -98049;1;0;false;false;;;;;; -98050;1;0;false;false;0;0;0;;; -98051;1;0;false;false;;;;;; -98052;20;0;false;false;0;0;0;;; -98072;1;0;false;false;;;;;; -98073;1;0;false;false;0;0;0;;; -98074;1;0;false;false;;;;;; -98075;11;0;false;false;0;0;0;;; -98086;1;0;false;false;;;;;; -98087;1;0;false;false;0;0;0;;; -98088;1;0;false;false;;;;;; -98089;23;0;false;false;0;0;0;;; -98112;4;0;false;false;;;;;; -98116;2;1;false;false;127;0;85;;; -98118;1;0;false;false;;;;;; -98119;13;0;false;false;0;0;0;;; -98132;1;0;false;false;;;;;; -98133;1;0;false;false;0;0;0;;; -98134;1;0;false;false;;;;;; -98135;8;0;false;false;0;0;0;;; -98143;1;0;false;false;;;;;; -98144;1;0;false;false;0;0;0;;; -98145;1;0;false;false;;;;;; -98146;16;0;false;false;0;0;0;;; -98162;1;0;false;false;;;;;; -98163;1;0;false;false;0;0;0;;; -98164;5;0;false;false;;;;;; -98169;12;0;false;false;0;0;0;;; -98181;1;0;false;false;;;;;; -98182;1;0;false;false;0;0;0;;; -98183;1;0;false;false;;;;;; -98184;15;0;false;false;0;0;0;;; -98199;1;0;false;false;;;;;; -98200;1;0;false;false;0;0;0;;; -98201;1;0;false;false;;;;;; -98202;9;0;false;false;0;0;0;;; -98211;4;0;false;false;;;;;; -98215;1;0;false;false;0;0;0;;; -98216;4;0;false;false;;;;;; -98220;2;1;false;false;127;0;85;;; -98222;1;0;false;false;;;;;; -98223;13;0;false;false;0;0;0;;; -98236;1;0;false;false;;;;;; -98237;1;0;false;false;0;0;0;;; -98238;1;0;false;false;;;;;; -98239;21;0;false;false;0;0;0;;; -98260;1;0;false;false;;;;;; -98261;1;0;false;false;0;0;0;;; -98262;7;0;false;false;;;;;; -98269;37;0;false;false;0;0;0;;; -98306;1;0;false;false;;;;;; -98307;4;1;false;false;127;0;85;;; -98311;2;0;false;false;0;0;0;;; -98313;4;0;false;false;;;;;; -98317;1;0;false;false;0;0;0;;; -98318;3;0;false;false;;;;;; -98321;1;0;false;false;0;0;0;;; -98322;3;0;false;false;;;;;; -98325;66;0;false;false;63;127;95;;; -98391;1;0;false;false;;;;;; -98392;69;0;false;false;63;127;95;;; -98461;1;0;false;false;;;;;; -98462;21;0;false;false;0;0;0;;; -98483;3;0;false;false;;;;;; -98486;51;0;false;false;63;127;95;;; -98537;1;0;false;false;;;;;; -98538;3;1;false;false;127;0;85;;; -98541;1;0;false;false;;;;;; -98542;13;0;false;false;0;0;0;;; -98555;1;0;false;false;;;;;; -98556;1;0;false;false;0;0;0;;; -98557;1;0;false;false;;;;;; -98558;16;0;false;false;0;0;0;;; -98574;1;0;false;false;;;;;; -98575;1;0;false;false;0;0;0;;; -98576;1;0;false;false;;;;;; -98577;23;0;false;false;0;0;0;;; -98600;3;0;false;false;;;;;; -98603;7;0;false;false;0;0;0;;; -98610;1;0;false;false;;;;;; -98611;1;0;false;false;0;0;0;;; -98612;1;0;false;false;;;;;; -98613;10;0;false;false;0;0;0;;; -98623;1;0;false;false;;;;;; -98624;1;0;false;false;0;0;0;;; -98625;1;0;false;false;;;;;; -98626;14;0;false;false;0;0;0;;; -98640;2;0;false;false;;;;;; -98642;1;0;false;false;0;0;0;;; -98643;2;0;false;false;;;;;; -98645;3;0;false;false;63;95;191;;; -98648;3;0;false;false;;;;;; -98651;1;0;false;false;63;95;191;;; -98652;1;0;false;false;;;;;; -98653;5;0;false;false;63;95;191;;; -98658;1;0;false;false;;;;;; -98659;3;0;false;false;63;95;191;;; -98662;1;0;false;false;;;;;; -98663;6;0;false;false;63;95;191;;; -98669;1;0;false;false;;;;;; -98670;2;0;false;false;63;95;191;;; -98672;1;0;false;false;;;;;; -98673;3;0;false;false;63;95;191;;; -98676;1;0;false;false;;;;;; -98677;3;0;false;false;63;95;191;;; -98680;1;0;false;false;;;;;; -98681;2;0;false;false;63;95;191;;; -98683;1;0;false;false;;;;;; -98684;3;0;false;false;63;95;191;;; -98687;1;0;false;false;;;;;; -98688;4;0;false;false;63;95;191;;; -98692;1;0;false;false;;;;;; -98693;5;0;false;false;63;95;191;;; -98698;1;0;false;false;;;;;; -98699;7;0;false;false;63;95;191;;; -98706;1;0;false;false;;;;;; -98707;5;0;false;false;63;95;191;;; -98712;3;0;false;false;;;;;; -98715;2;0;false;false;63;95;191;;; -98717;2;0;false;false;;;;;; -98719;4;1;false;false;127;0;85;;; -98723;1;0;false;false;;;;;; -98724;11;0;false;false;0;0;0;;; -98735;1;0;false;false;;;;;; -98736;1;0;false;false;0;0;0;;; -98737;3;0;false;false;;;;;; -98740;57;0;false;false;63;127;95;;; -98797;1;0;false;false;;;;;; -98798;2;1;false;false;127;0;85;;; -98800;1;0;false;false;;;;;; -98801;16;0;false;false;0;0;0;;; -98817;1;0;false;false;;;;;; -98818;1;0;false;false;0;0;0;;; -98819;4;0;false;false;;;;;; -98823;12;0;false;false;0;0;0;;; -98835;3;0;false;false;;;;;; -98838;1;0;false;false;0;0;0;;; -98839;3;0;false;false;;;;;; -98842;4;1;false;false;127;0;85;;; -98846;1;0;false;false;;;;;; -98847;1;0;false;false;0;0;0;;; -98848;4;0;false;false;;;;;; -98852;3;1;false;false;127;0;85;;; -98855;1;0;false;false;;;;;; -98856;4;0;false;false;0;0;0;;; -98860;1;0;false;false;;;;;; -98861;1;0;false;false;0;0;0;;; -98862;1;0;false;false;;;;;; -98863;17;0;false;false;0;0;0;;; -98880;4;0;false;false;;;;;; -98884;3;1;false;false;127;0;85;;; -98887;1;0;false;false;;;;;; -98888;17;0;false;false;0;0;0;;; -98905;1;0;false;false;;;;;; -98906;1;0;false;false;0;0;0;;; -98907;1;0;false;false;;;;;; -98908;29;0;false;false;0;0;0;;; -98937;1;0;false;false;;;;;; -98938;1;0;false;false;0;0;0;;; -98939;1;0;false;false;;;;;; -98940;31;0;false;false;0;0;0;;; -98971;7;0;false;false;;;;;; -98978;2;1;false;false;127;0;85;;; -98980;1;0;false;false;;;;;; -98981;12;0;false;false;0;0;0;;; -98993;1;0;false;false;;;;;; -98994;1;0;false;false;0;0;0;;; -98995;1;0;false;false;;;;;; -98996;18;0;false;false;0;0;0;;; -99014;1;0;false;false;;;;;; -99015;1;0;false;false;0;0;0;;; -99016;5;0;false;false;;;;;; -99021;11;0;false;false;0;0;0;;; -99032;1;0;false;false;;;;;; -99033;1;0;false;false;0;0;0;;; -99034;1;0;false;false;;;;;; -99035;18;0;false;false;0;0;0;;; -99053;5;0;false;false;;;;;; -99058;12;0;false;false;0;0;0;;; -99070;4;0;false;false;;;;;; -99074;1;0;false;false;0;0;0;;; -99075;3;0;false;false;;;;;; -99078;1;0;false;false;0;0;0;;; -99079;2;0;false;false;;;;;; -99081;1;0;false;false;0;0;0;;; -99082;2;0;false;false;;;;;; -99084;3;0;false;false;63;95;191;;; -99087;3;0;false;false;;;;;; -99090;1;0;false;false;63;95;191;;; -99091;1;0;false;false;;;;;; -99092;5;0;false;false;63;95;191;;; -99097;1;0;false;false;;;;;; -99098;3;0;false;false;63;95;191;;; -99101;1;0;false;false;;;;;; -99102;6;0;false;false;63;95;191;;; -99108;1;0;false;false;;;;;; -99109;2;0;false;false;63;95;191;;; -99111;1;0;false;false;;;;;; -99112;3;0;false;false;63;95;191;;; -99115;1;0;false;false;;;;;; -99116;9;0;false;false;63;95;191;;; -99125;1;0;false;false;;;;;; -99126;2;0;false;false;63;95;191;;; -99128;1;0;false;false;;;;;; -99129;3;0;false;false;63;95;191;;; -99132;1;0;false;false;;;;;; -99133;5;0;false;false;63;95;191;;; -99138;1;0;false;false;;;;;; -99139;5;0;false;false;63;95;191;;; -99144;1;0;false;false;;;;;; -99145;7;0;false;false;63;95;191;;; -99152;1;0;false;false;;;;;; -99153;5;0;false;false;63;95;191;;; -99158;3;0;false;false;;;;;; -99161;2;0;false;false;63;95;191;;; -99163;2;0;false;false;;;;;; -99165;4;1;false;false;127;0;85;;; -99169;1;0;false;false;;;;;; -99170;13;0;false;false;0;0;0;;; -99183;1;0;false;false;;;;;; -99184;1;0;false;false;0;0;0;;; -99185;3;0;false;false;;;;;; -99188;3;1;false;false;127;0;85;;; -99191;1;0;false;false;;;;;; -99192;14;0;false;false;0;0;0;;; -99206;1;0;false;false;;;;;; -99207;1;0;false;false;0;0;0;;; -99208;1;0;false;false;;;;;; -99209;34;0;false;false;0;0;0;;; -99243;6;0;false;false;;;;;; -99249;2;1;false;false;127;0;85;;; -99251;1;0;false;false;;;;;; -99252;12;0;false;false;0;0;0;;; -99264;1;0;false;false;;;;;; -99265;1;0;false;false;0;0;0;;; -99266;1;0;false;false;;;;;; -99267;15;0;false;false;0;0;0;;; -99282;1;0;false;false;;;;;; -99283;1;0;false;false;0;0;0;;; -99284;4;0;false;false;;;;;; -99288;11;0;false;false;0;0;0;;; -99299;1;0;false;false;;;;;; -99300;1;0;false;false;0;0;0;;; -99301;1;0;false;false;;;;;; -99302;15;0;false;false;0;0;0;;; -99317;4;0;false;false;;;;;; -99321;66;0;false;false;63;127;95;;; -99387;2;0;false;false;;;;;; -99389;69;0;false;false;63;127;95;;; -99458;2;0;false;false;;;;;; -99460;20;0;false;false;0;0;0;;; -99480;3;0;false;false;;;;;; -99483;1;0;false;false;0;0;0;;; -99484;2;0;false;false;;;;;; -99486;1;0;false;false;0;0;0;;; -99487;2;0;false;false;;;;;; -99489;3;0;false;false;63;95;191;;; -99492;3;0;false;false;;;;;; -99495;1;0;false;false;63;95;191;;; -99496;1;0;false;false;;;;;; -99497;7;0;false;false;63;95;191;;; -99504;1;0;false;false;;;;;; -99505;3;0;false;false;63;95;191;;; -99508;1;0;false;false;;;;;; -99509;4;0;false;false;63;95;191;;; -99513;1;0;false;false;;;;;; -99514;2;0;false;false;63;95;191;;; -99516;1;0;false;false;;;;;; -99517;2;0;false;false;63;95;191;;; -99519;1;0;false;false;;;;;; -99520;4;0;false;false;63;95;191;;; -99524;1;0;false;false;;;;;; -99525;3;0;false;false;63;95;191;;; -99528;1;0;false;false;;;;;; -99529;5;0;false;false;63;95;191;;; -99534;1;0;false;false;;;;;; -99535;4;0;false;false;63;95;191;;; -99539;1;0;false;false;;;;;; -99540;10;0;false;false;63;95;191;;; -99550;1;0;false;false;;;;;; -99551;2;0;false;false;63;95;191;;; -99553;1;0;false;false;;;;;; -99554;6;0;false;false;63;95;191;;; -99560;3;0;false;false;;;;;; -99563;1;0;false;false;63;95;191;;; -99564;1;0;false;false;;;;;; -99565;2;0;false;false;63;95;191;;; -99567;1;0;false;false;;;;;; -99568;3;0;false;false;63;95;191;;; -99571;1;0;false;false;;;;;; -99572;7;0;false;false;63;95;191;;; -99579;1;0;false;false;;;;;; -99580;4;0;false;false;63;95;191;;; -99584;1;0;false;false;;;;;; -99585;7;0;false;false;63;95;191;;; -99592;1;0;false;false;;;;;; -99593;3;0;false;false;63;95;191;;; -99596;1;0;false;false;;;;;; -99597;5;0;false;false;63;95;191;;; -99602;1;0;false;false;;;;;; -99603;7;0;false;false;63;95;191;;; -99610;1;0;false;false;;;;;; -99611;4;0;false;false;63;95;191;;; -99615;1;0;false;false;;;;;; -99616;5;0;false;false;63;95;191;;; -99621;3;0;false;false;;;;;; -99624;1;0;false;false;63;95;191;;; -99625;1;0;false;false;;;;;; -99626;3;0;false;false;63;95;191;;; -99629;1;0;false;false;;;;;; -99630;5;0;false;false;63;95;191;;; -99635;1;0;false;false;;;;;; -99636;2;0;false;false;63;95;191;;; -99638;1;0;false;false;;;;;; -99639;8;0;false;false;63;95;191;;; -99647;1;0;false;false;;;;;; -99648;3;0;false;false;63;95;191;;; -99651;1;0;false;false;;;;;; -99652;4;0;false;false;63;95;191;;; -99656;1;0;false;false;;;;;; -99657;6;0;false;false;63;95;191;;; -99663;1;0;false;false;;;;;; -99664;2;0;false;false;63;95;191;;; -99666;1;0;false;false;;;;;; -99667;5;0;false;false;63;95;191;;; -99672;1;0;false;false;;;;;; -99673;2;0;false;false;63;95;191;;; -99675;1;0;false;false;;;;;; -99676;4;0;false;false;63;95;191;;; -99680;1;0;false;false;;;;;; -99681;3;0;false;false;63;95;191;;; -99684;1;0;false;false;;;;;; -99685;8;0;false;false;63;95;191;;; -99693;4;0;false;false;;;;;; -99697;1;0;false;false;63;95;191;;; -99698;1;0;false;false;;;;;; -99699;8;0;false;false;63;95;191;;; -99707;1;0;false;false;;;;;; -99708;2;0;false;false;63;95;191;;; -99710;1;0;false;false;;;;;; -99711;3;0;false;false;63;95;191;;; -99714;1;0;false;false;;;;;; -99715;3;0;false;false;63;95;191;;; -99718;1;0;false;false;;;;;; -99719;4;0;false;false;63;95;191;;; -99723;1;0;false;false;;;;;; -99724;7;0;false;false;63;95;191;;; -99731;1;0;false;false;;;;;; -99732;3;0;false;false;63;95;191;;; -99735;1;0;false;false;;;;;; -99736;5;0;false;false;63;95;191;;; -99741;1;0;false;false;;;;;; -99742;3;0;false;false;63;95;191;;; -99745;1;0;false;false;;;;;; -99746;9;0;false;false;63;95;191;;; -99755;1;0;false;false;;;;;; -99756;2;0;false;false;63;95;191;;; -99758;1;0;false;false;;;;;; -99759;3;0;false;false;63;95;191;;; -99762;1;0;false;false;;;;;; -99763;9;0;false;false;63;95;191;;; -99772;4;0;false;false;;;;;; -99776;1;0;false;false;63;95;191;;; -99777;1;0;false;false;;;;;; -99778;2;0;false;false;63;95;191;;; -99780;1;0;false;false;;;;;; -99781;3;0;false;false;63;95;191;;; -99784;1;0;false;false;;;;;; -99785;4;0;false;false;63;95;191;;; -99789;1;0;false;false;;;;;; -99790;5;0;false;false;63;95;191;;; -99795;1;0;false;false;;;;;; -99796;1;0;false;false;63;95;191;;; -99797;1;0;false;false;;;;;; -99798;4;0;false;false;63;95;191;;; -99802;1;0;false;false;;;;;; -99803;4;0;false;false;63;95;191;;; -99807;1;0;false;false;;;;;; -99808;6;0;false;false;63;95;191;;; -99814;1;0;false;false;;;;;; -99815;2;0;false;false;63;95;191;;; -99817;1;0;false;false;;;;;; -99818;3;0;false;false;63;95;191;;; -99821;1;0;false;false;;;;;; -99822;9;0;false;false;63;95;191;;; -99831;1;0;false;false;;;;;; -99832;2;0;false;false;63;95;191;;; -99834;1;0;false;false;;;;;; -99835;4;0;false;false;63;95;191;;; -99839;1;0;false;false;;;;;; -99840;4;0;false;false;63;95;191;;; -99844;1;0;false;false;;;;;; -99845;3;0;false;false;63;95;191;;; -99848;3;0;false;false;;;;;; -99851;1;0;false;false;63;95;191;;; -99852;1;0;false;false;;;;;; -99853;5;0;false;false;63;95;191;;; -99858;1;0;false;false;;;;;; -99859;2;0;false;false;63;95;191;;; -99861;1;0;false;false;;;;;; -99862;5;0;false;false;63;95;191;;; -99867;1;0;false;false;;;;;; -99868;2;0;false;false;63;95;191;;; -99870;1;0;false;false;;;;;; -99871;5;0;false;false;63;95;191;;; -99876;1;0;false;false;;;;;; -99877;2;0;false;false;63;95;191;;; -99879;1;0;false;false;;;;;; -99880;3;0;false;false;63;95;191;;; -99883;1;0;false;false;;;;;; -99884;5;0;false;false;63;95;191;;; -99889;1;0;false;false;;;;;; -99890;10;0;false;false;63;95;191;;; -99900;3;0;false;false;;;;;; -99903;2;0;false;false;63;95;191;;; -99905;2;0;false;false;;;;;; -99907;4;1;false;false;127;0;85;;; -99911;1;0;false;false;;;;;; -99912;9;0;false;false;0;0;0;;; -99921;7;1;false;false;127;0;85;;; -99928;1;0;false;false;;;;;; -99929;7;0;false;false;0;0;0;;; -99936;1;0;false;false;;;;;; -99937;3;1;false;false;127;0;85;;; -99940;1;0;false;false;;;;;; -99941;6;0;false;false;0;0;0;;; -99947;1;0;false;false;;;;;; -99948;1;0;false;false;0;0;0;;; -99949;3;0;false;false;;;;;; -99952;3;1;false;false;127;0;85;;; -99955;1;0;false;false;;;;;; -99956;10;0;false;false;0;0;0;;; -99966;1;0;false;false;;;;;; -99967;1;0;false;false;0;0;0;;; -99968;1;0;false;false;;;;;; -99969;8;0;false;false;0;0;0;;; -99977;3;0;false;false;;;;;; -99980;3;1;false;false;127;0;85;;; -99983;1;0;false;false;;;;;; -99984;16;0;false;false;0;0;0;;; -100000;1;0;false;false;;;;;; -100001;1;0;false;false;0;0;0;;; -100002;1;0;false;false;;;;;; -100003;23;0;false;false;0;0;0;;; -100026;3;0;false;false;;;;;; -100029;3;1;false;false;127;0;85;;; -100032;1;0;false;false;;;;;; -100033;9;0;false;false;0;0;0;;; -100042;1;0;false;false;;;;;; -100043;1;0;false;false;0;0;0;;; -100044;1;0;false;false;;;;;; -100045;15;0;false;false;0;0;0;;; -100060;6;0;false;false;;;;;; -100066;2;1;false;false;127;0;85;;; -100068;1;0;false;false;;;;;; -100069;10;0;false;false;0;0;0;;; -100079;1;0;false;false;;;;;; -100080;1;0;false;false;0;0;0;;; -100081;1;0;false;false;;;;;; -100082;2;0;false;false;0;0;0;;; -100084;1;0;false;false;;;;;; -100085;1;0;false;false;0;0;0;;; -100086;5;0;false;false;;;;;; -100091;3;1;false;false;127;0;85;;; -100094;1;0;false;false;;;;;; -100095;11;0;false;false;0;0;0;;; -100106;1;0;false;false;;;;;; -100107;1;0;false;false;0;0;0;;; -100108;1;0;false;false;;;;;; -100109;11;0;false;false;0;0;0;;; -100120;1;0;false;false;;;;;; -100121;19;0;false;false;0;0;0;;; -100140;1;0;false;false;;;;;; -100141;8;0;false;false;0;0;0;;; -100149;4;0;false;false;;;;;; -100153;3;1;false;false;127;0;85;;; -100156;1;0;false;false;;;;;; -100157;13;0;false;false;0;0;0;;; -100170;8;0;false;false;;;;;; -100178;9;0;false;false;0;0;0;;; -100187;1;0;false;false;;;;;; -100188;2;0;false;false;0;0;0;;; -100190;1;0;false;false;;;;;; -100191;12;0;false;false;0;0;0;;; -100203;4;0;false;false;;;;;; -100207;11;0;false;false;0;0;0;;; -100218;1;0;false;false;;;;;; -100219;1;0;false;false;0;0;0;;; -100220;1;0;false;false;;;;;; -100221;33;0;false;false;0;0;0;;; -100254;1;0;false;false;;;;;; -100255;11;0;false;false;0;0;0;;; -100266;4;0;false;false;;;;;; -100270;2;1;false;false;127;0;85;;; -100272;1;0;false;false;;;;;; -100273;8;0;false;false;0;0;0;;; -100281;1;0;false;false;;;;;; -100282;1;0;false;false;0;0;0;;; -100283;5;0;false;false;;;;;; -100288;32;0;false;false;0;0;0;;; -100320;4;0;false;false;;;;;; -100324;1;0;false;false;0;0;0;;; -100325;4;0;false;false;;;;;; -100329;37;0;false;false;63;127;95;;; -100366;2;0;false;false;;;;;; -100368;12;0;false;false;0;0;0;;; -100380;1;0;false;false;;;;;; -100381;1;0;false;false;0;0;0;;; -100382;1;0;false;false;;;;;; -100383;11;0;false;false;0;0;0;;; -100394;1;0;false;false;;;;;; -100395;20;0;false;false;0;0;0;;; -100415;1;0;false;false;;;;;; -100416;1;0;false;false;0;0;0;;; -100417;1;0;false;false;;;;;; -100418;11;0;false;false;0;0;0;;; -100429;1;0;false;false;;;;;; -100430;1;0;false;false;0;0;0;;; -100431;1;0;false;false;;;;;; -100432;24;0;false;false;0;0;0;;; -100456;4;0;false;false;;;;;; -100460;2;1;false;false;127;0;85;;; -100462;1;0;false;false;;;;;; -100463;13;0;false;false;0;0;0;;; -100476;1;0;false;false;;;;;; -100477;1;0;false;false;0;0;0;;; -100478;1;0;false;false;;;;;; -100479;21;0;false;false;0;0;0;;; -100500;1;0;false;false;;;;;; -100501;1;0;false;false;0;0;0;;; -100502;5;0;false;false;;;;;; -100507;37;0;false;false;0;0;0;;; -100544;1;0;false;false;;;;;; -100545;4;1;false;false;127;0;85;;; -100549;2;0;false;false;0;0;0;;; -100551;4;0;false;false;;;;;; -100555;1;0;false;false;0;0;0;;; -100556;3;0;false;false;;;;;; -100559;1;0;false;false;0;0;0;;; -100560;3;0;false;false;;;;;; -100563;66;0;false;false;63;127;95;;; -100629;1;0;false;false;;;;;; -100630;69;0;false;false;63;127;95;;; -100699;1;0;false;false;;;;;; -100700;21;0;false;false;0;0;0;;; -100721;3;0;false;false;;;;;; -100724;51;0;false;false;63;127;95;;; -100775;1;0;false;false;;;;;; -100776;3;1;false;false;127;0;85;;; -100779;1;0;false;false;;;;;; -100780;13;0;false;false;0;0;0;;; -100793;1;0;false;false;;;;;; -100794;1;0;false;false;0;0;0;;; -100795;1;0;false;false;;;;;; -100796;16;0;false;false;0;0;0;;; -100812;1;0;false;false;;;;;; -100813;1;0;false;false;0;0;0;;; -100814;1;0;false;false;;;;;; -100815;23;0;false;false;0;0;0;;; -100838;3;0;false;false;;;;;; -100841;7;0;false;false;0;0;0;;; -100848;1;0;false;false;;;;;; -100849;1;0;false;false;0;0;0;;; -100850;1;0;false;false;;;;;; -100851;10;0;false;false;0;0;0;;; -100861;1;0;false;false;;;;;; -100862;1;0;false;false;0;0;0;;; -100863;1;0;false;false;;;;;; -100864;14;0;false;false;0;0;0;;; -100878;2;0;false;false;;;;;; -100880;1;0;false;false;0;0;0;;; -100881;2;0;false;false;;;;;; -100883;3;0;false;false;63;95;191;;; -100886;3;0;false;false;;;;;; -100889;1;0;false;false;63;95;191;;; -100890;1;0;false;false;;;;;; -100891;7;0;false;false;63;95;191;;; -100898;1;0;false;false;;;;;; -100899;3;0;false;false;63;95;191;;; -100902;1;0;false;false;;;;;; -100903;9;0;false;false;63;95;191;;; -100912;1;0;false;false;;;;;; -100913;2;0;false;false;63;95;191;;; -100915;1;0;false;false;;;;;; -100916;6;0;false;false;63;95;191;;; -100922;1;0;false;false;;;;;; -100923;2;0;false;false;63;95;191;;; -100925;1;0;false;false;;;;;; -100926;3;0;false;false;63;95;191;;; -100929;1;0;false;false;;;;;; -100930;7;0;false;false;63;95;191;;; -100937;1;0;false;false;;;;;; -100938;5;0;false;false;63;95;191;;; -100943;1;0;false;false;;;;;; -100944;9;0;false;false;63;95;191;;; -100953;3;0;false;false;;;;;; -100956;2;0;false;false;63;95;191;;; -100958;2;0;false;false;;;;;; -100960;4;1;false;false;127;0;85;;; -100964;1;0;false;false;;;;;; -100965;12;0;false;false;0;0;0;;; -100977;3;1;false;false;127;0;85;;; -100980;1;0;false;false;;;;;; -100981;10;0;false;false;0;0;0;;; -100991;1;0;false;false;;;;;; -100992;1;0;false;false;0;0;0;;; -100993;3;0;false;false;;;;;; -100996;3;1;false;false;127;0;85;;; -100999;1;0;false;false;;;;;; -101000;11;0;false;false;0;0;0;;; -101011;1;0;false;false;;;;;; -101012;1;0;false;false;0;0;0;;; -101013;1;0;false;false;;;;;; -101014;3;0;false;false;0;0;0;;; -101017;3;0;false;false;;;;;; -101020;3;1;false;false;127;0;85;;; -101023;1;0;false;false;;;;;; -101024;9;0;false;false;0;0;0;;; -101033;1;0;false;false;;;;;; -101034;1;0;false;false;0;0;0;;; -101035;1;0;false;false;;;;;; -101036;3;0;false;false;0;0;0;;; -101039;6;0;false;false;;;;;; -101045;2;1;false;false;127;0;85;;; -101047;1;0;false;false;;;;;; -101048;16;0;false;false;0;0;0;;; -101064;1;0;false;false;;;;;; -101065;2;0;false;false;0;0;0;;; -101067;1;0;false;false;;;;;; -101068;3;0;false;false;0;0;0;;; -101071;1;0;false;false;;;;;; -101072;1;0;false;false;0;0;0;;; -101073;4;0;false;false;;;;;; -101077;15;0;false;false;0;0;0;;; -101092;1;0;false;false;;;;;; -101093;1;0;false;false;0;0;0;;; -101094;1;0;false;false;;;;;; -101095;12;0;false;false;0;0;0;;; -101107;3;0;false;false;;;;;; -101110;1;0;false;false;0;0;0;;; -101111;4;0;false;false;;;;;; -101115;2;1;false;false;127;0;85;;; -101117;1;0;false;false;;;;;; -101118;10;0;false;false;0;0;0;;; -101128;1;0;false;false;;;;;; -101129;2;0;false;false;0;0;0;;; -101131;1;0;false;false;;;;;; -101132;19;0;false;false;0;0;0;;; -101151;1;0;false;false;;;;;; -101152;1;0;false;false;0;0;0;;; -101153;4;0;false;false;;;;;; -101157;2;1;false;false;127;0;85;;; -101159;1;0;false;false;;;;;; -101160;12;0;false;false;0;0;0;;; -101172;1;0;false;false;;;;;; -101173;1;0;false;false;0;0;0;;; -101174;1;0;false;false;;;;;; -101175;12;0;false;false;0;0;0;;; -101187;1;0;false;false;;;;;; -101188;1;0;false;false;0;0;0;;; -101189;5;0;false;false;;;;;; -101194;19;0;false;false;63;127;95;;; -101213;3;0;false;false;;;;;; -101216;9;0;false;false;0;0;0;;; -101225;1;0;false;false;;;;;; -101226;1;0;false;false;0;0;0;;; -101227;1;0;false;false;;;;;; -101228;12;0;false;false;0;0;0;;; -101240;6;0;false;false;;;;;; -101246;11;0;false;false;0;0;0;;; -101257;1;0;false;false;;;;;; -101258;1;0;false;false;0;0;0;;; -101259;1;0;false;false;;;;;; -101260;11;0;false;false;0;0;0;;; -101271;1;0;false;false;;;;;; -101272;1;0;false;false;0;0;0;;; -101273;1;0;false;false;;;;;; -101274;12;0;false;false;0;0;0;;; -101286;7;0;false;false;;;;;; -101293;46;0;false;false;63;127;95;;; -101339;3;0;false;false;;;;;; -101342;2;1;false;false;127;0;85;;; -101344;1;0;false;false;;;;;; -101345;12;0;false;false;0;0;0;;; -101357;1;0;false;false;;;;;; -101358;2;0;false;false;0;0;0;;; -101360;1;0;false;false;;;;;; -101361;16;0;false;false;0;0;0;;; -101377;1;0;false;false;;;;;; -101378;1;0;false;false;0;0;0;;; -101379;6;0;false;false;;;;;; -101385;9;0;false;false;0;0;0;;; -101394;1;0;false;false;;;;;; -101395;1;0;false;false;0;0;0;;; -101396;1;0;false;false;;;;;; -101397;12;0;false;false;0;0;0;;; -101409;6;0;false;false;;;;;; -101415;11;0;false;false;0;0;0;;; -101426;1;0;false;false;;;;;; -101427;1;0;false;false;0;0;0;;; -101428;1;0;false;false;;;;;; -101429;16;0;false;false;0;0;0;;; -101445;5;0;false;false;;;;;; -101450;1;0;false;false;0;0;0;;; -101451;4;0;false;false;;;;;; -101455;1;0;false;false;0;0;0;;; -101456;4;0;false;false;;;;;; -101460;4;1;false;false;127;0;85;;; -101464;1;0;false;false;;;;;; -101465;59;0;false;false;63;127;95;;; -101524;2;0;false;false;;;;;; -101526;2;1;false;false;127;0;85;;; -101528;1;0;false;false;;;;;; -101529;16;0;false;false;0;0;0;;; -101545;1;0;false;false;;;;;; -101546;2;0;false;false;0;0;0;;; -101548;1;0;false;false;;;;;; -101549;11;0;false;false;0;0;0;;; -101560;1;0;false;false;;;;;; -101561;2;0;false;false;0;0;0;;; -101563;1;0;false;false;;;;;; -101564;11;0;false;false;0;0;0;;; -101575;1;0;false;false;;;;;; -101576;1;0;false;false;0;0;0;;; -101577;1;0;false;false;;;;;; -101578;12;0;false;false;0;0;0;;; -101590;1;0;false;false;;;;;; -101591;1;0;false;false;0;0;0;;; -101592;5;0;false;false;;;;;; -101597;68;0;false;false;63;127;95;;; -101665;3;0;false;false;;;;;; -101668;24;0;false;false;63;127;95;;; -101692;3;0;false;false;;;;;; -101695;9;0;false;false;0;0;0;;; -101704;1;0;false;false;;;;;; -101705;1;0;false;false;0;0;0;;; -101706;1;0;false;false;;;;;; -101707;12;0;false;false;0;0;0;;; -101719;5;0;false;false;;;;;; -101724;11;0;false;false;0;0;0;;; -101735;1;0;false;false;;;;;; -101736;1;0;false;false;0;0;0;;; -101737;1;0;false;false;;;;;; -101738;11;0;false;false;0;0;0;;; -101749;1;0;false;false;;;;;; -101750;1;0;false;false;0;0;0;;; -101751;1;0;false;false;;;;;; -101752;12;0;false;false;0;0;0;;; -101764;6;0;false;false;;;;;; -101770;1;0;false;false;0;0;0;;; -101771;3;0;false;false;;;;;; -101774;1;0;false;false;0;0;0;;; -101775;3;0;false;false;;;;;; -101778;4;1;false;false;127;0;85;;; -101782;1;0;false;false;;;;;; -101783;1;0;false;false;0;0;0;;; -101784;4;0;false;false;;;;;; -101788;2;1;false;false;127;0;85;;; -101790;1;0;false;false;;;;;; -101791;12;0;false;false;0;0;0;;; -101803;1;0;false;false;;;;;; -101804;1;0;false;false;0;0;0;;; -101805;1;0;false;false;;;;;; -101806;12;0;false;false;0;0;0;;; -101818;1;0;false;false;;;;;; -101819;1;0;false;false;0;0;0;;; -101820;5;0;false;false;;;;;; -101825;19;0;false;false;63;127;95;;; -101844;3;0;false;false;;;;;; -101847;11;0;false;false;0;0;0;;; -101858;1;0;false;false;;;;;; -101859;1;0;false;false;0;0;0;;; -101860;1;0;false;false;;;;;; -101861;12;0;false;false;0;0;0;;; -101873;5;0;false;false;;;;;; -101878;9;0;false;false;0;0;0;;; -101887;1;0;false;false;;;;;; -101888;1;0;false;false;0;0;0;;; -101889;1;0;false;false;;;;;; -101890;11;0;false;false;0;0;0;;; -101901;1;0;false;false;;;;;; -101902;1;0;false;false;0;0;0;;; -101903;1;0;false;false;;;;;; -101904;12;0;false;false;0;0;0;;; -101916;5;0;false;false;;;;;; -101921;46;0;false;false;63;127;95;;; -101967;3;0;false;false;;;;;; -101970;2;1;false;false;127;0;85;;; -101972;1;0;false;false;;;;;; -101973;12;0;false;false;0;0;0;;; -101985;1;0;false;false;;;;;; -101986;2;0;false;false;0;0;0;;; -101988;1;0;false;false;;;;;; -101989;16;0;false;false;0;0;0;;; -102005;1;0;false;false;;;;;; -102006;1;0;false;false;0;0;0;;; -102007;6;0;false;false;;;;;; -102013;11;0;false;false;0;0;0;;; -102024;1;0;false;false;;;;;; -102025;1;0;false;false;0;0;0;;; -102026;1;0;false;false;;;;;; -102027;12;0;false;false;0;0;0;;; -102039;10;0;false;false;;;;;; -102049;11;0;false;false;0;0;0;;; -102060;1;0;false;false;;;;;; -102061;1;0;false;false;0;0;0;;; -102062;1;0;false;false;;;;;; -102063;16;0;false;false;0;0;0;;; -102079;5;0;false;false;;;;;; -102084;1;0;false;false;0;0;0;;; -102085;4;0;false;false;;;;;; -102089;1;0;false;false;0;0;0;;; -102090;4;0;false;false;;;;;; -102094;4;1;false;false;127;0;85;;; -102098;1;0;false;false;;;;;; -102099;59;0;false;false;63;127;95;;; -102158;2;0;false;false;;;;;; -102160;2;1;false;false;127;0;85;;; -102162;1;0;false;false;;;;;; -102163;16;0;false;false;0;0;0;;; -102179;1;0;false;false;;;;;; -102180;2;0;false;false;0;0;0;;; -102182;1;0;false;false;;;;;; -102183;11;0;false;false;0;0;0;;; -102194;1;0;false;false;;;;;; -102195;2;0;false;false;0;0;0;;; -102197;1;0;false;false;;;;;; -102198;11;0;false;false;0;0;0;;; -102209;1;0;false;false;;;;;; -102210;1;0;false;false;0;0;0;;; -102211;1;0;false;false;;;;;; -102212;12;0;false;false;0;0;0;;; -102224;1;0;false;false;;;;;; -102225;1;0;false;false;0;0;0;;; -102226;5;0;false;false;;;;;; -102231;69;0;false;false;63;127;95;;; -102300;3;0;false;false;;;;;; -102303;24;0;false;false;63;127;95;;; -102327;3;0;false;false;;;;;; -102330;11;0;false;false;0;0;0;;; -102341;1;0;false;false;;;;;; -102342;1;0;false;false;0;0;0;;; -102343;1;0;false;false;;;;;; -102344;12;0;false;false;0;0;0;;; -102356;5;0;false;false;;;;;; -102361;9;0;false;false;0;0;0;;; -102370;1;0;false;false;;;;;; -102371;1;0;false;false;0;0;0;;; -102372;1;0;false;false;;;;;; -102373;11;0;false;false;0;0;0;;; -102384;1;0;false;false;;;;;; -102385;1;0;false;false;0;0;0;;; -102386;1;0;false;false;;;;;; -102387;12;0;false;false;0;0;0;;; -102399;6;0;false;false;;;;;; -102405;1;0;false;false;0;0;0;;; -102406;3;0;false;false;;;;;; -102409;1;0;false;false;0;0;0;;; -102410;3;0;false;false;;;;;; -102413;2;1;false;false;127;0;85;;; -102415;1;0;false;false;;;;;; -102416;12;0;false;false;0;0;0;;; -102428;1;0;false;false;;;;;; -102429;2;0;false;false;0;0;0;;; -102431;1;0;false;false;;;;;; -102432;2;0;false;false;0;0;0;;; -102434;1;0;false;false;;;;;; -102435;2;0;false;false;0;0;0;;; -102437;1;0;false;false;;;;;; -102438;9;0;false;false;0;0;0;;; -102447;1;0;false;false;;;;;; -102448;2;0;false;false;0;0;0;;; -102450;1;0;false;false;;;;;; -102451;3;0;false;false;0;0;0;;; -102454;1;0;false;false;;;;;; -102455;1;0;false;false;0;0;0;;; -102456;4;0;false;false;;;;;; -102460;32;0;false;false;0;0;0;;; -102492;1;0;false;false;;;;;; -102493;9;0;false;false;0;0;0;;; -102502;1;0;false;false;;;;;; -102503;1;0;false;false;0;0;0;;; -102504;1;0;false;false;;;;;; -102505;12;0;false;false;0;0;0;;; -102517;1;0;false;false;;;;;; -102518;4;1;false;false;127;0;85;;; -102522;2;0;false;false;0;0;0;;; -102524;4;0;false;false;;;;;; -102528;21;0;false;false;0;0;0;;; -102549;3;0;false;false;;;;;; -102552;1;0;false;false;0;0;0;;; -102553;2;0;false;false;;;;;; -102555;1;0;false;false;0;0;0;;; -102556;2;0;false;false;;;;;; -102558;3;0;false;false;63;95;191;;; -102561;3;0;false;false;;;;;; -102564;1;0;false;false;63;95;191;;; -102565;1;0;false;false;;;;;; -102566;5;0;false;false;63;95;191;;; -102571;1;0;false;false;;;;;; -102572;3;0;false;false;63;95;191;;; -102575;1;0;false;false;;;;;; -102576;5;0;false;false;63;95;191;;; -102581;1;0;false;false;;;;;; -102582;2;0;false;false;63;95;191;;; -102584;1;0;false;false;;;;;; -102585;3;0;false;false;63;95;191;;; -102588;1;0;false;false;;;;;; -102589;4;0;false;false;63;95;191;;; -102593;1;0;false;false;;;;;; -102594;9;0;false;false;63;95;191;;; -102603;1;0;false;false;;;;;; -102604;2;0;false;false;63;95;191;;; -102606;1;0;false;false;;;;;; -102607;2;0;false;false;63;95;191;;; -102609;1;0;false;false;;;;;; -102610;3;0;false;false;63;95;191;;; -102613;1;0;false;false;;;;;; -102614;9;0;false;false;63;95;191;;; -102623;1;0;false;false;;;;;; -102624;2;0;false;false;63;95;191;;; -102626;1;0;false;false;;;;;; -102627;3;0;false;false;63;95;191;;; -102630;4;0;false;false;;;;;; -102634;1;0;false;false;63;95;191;;; -102635;1;0;false;false;;;;;; -102636;4;0;false;false;63;95;191;;; -102640;1;0;false;false;;;;;; -102641;4;0;false;false;63;95;191;;; -102645;1;0;false;false;;;;;; -102646;2;0;false;false;63;95;191;;; -102648;1;0;false;false;;;;;; -102649;3;0;false;false;63;95;191;;; -102652;1;0;false;false;;;;;; -102653;6;0;false;false;63;95;191;;; -102659;1;0;false;false;;;;;; -102660;2;0;false;false;63;95;191;;; -102662;1;0;false;false;;;;;; -102663;2;0;false;false;63;95;191;;; -102665;1;0;false;false;;;;;; -102666;3;0;false;false;63;95;191;;; -102669;1;0;false;false;;;;;; -102670;3;0;false;false;63;95;191;;; -102673;1;0;false;false;;;;;; -102674;2;0;false;false;63;95;191;;; -102676;1;0;false;false;;;;;; -102677;1;0;false;false;63;95;191;;; -102678;1;0;false;false;;;;;; -102679;5;0;false;false;63;95;191;;; -102684;3;0;false;false;;;;;; -102687;2;0;false;false;63;95;191;;; -102689;2;0;false;false;;;;;; -102691;4;1;false;false;127;0;85;;; -102695;1;0;false;false;;;;;; -102696;23;0;false;false;0;0;0;;; -102719;1;0;false;false;;;;;; -102720;1;0;false;false;0;0;0;;; -102721;3;0;false;false;;;;;; -102724;3;1;false;false;127;0;85;;; -102727;1;0;false;false;;;;;; -102728;9;0;false;false;0;0;0;;; -102737;1;0;false;false;;;;;; -102738;1;0;false;false;0;0;0;;; -102739;1;0;false;false;;;;;; -102740;15;0;false;false;0;0;0;;; -102755;3;0;false;false;;;;;; -102758;3;1;false;false;127;0;85;;; -102761;1;0;false;false;;;;;; -102762;10;0;false;false;0;0;0;;; -102772;1;0;false;false;;;;;; -102773;1;0;false;false;0;0;0;;; -102774;1;0;false;false;;;;;; -102775;35;0;false;false;0;0;0;;; -102810;3;0;false;false;;;;;; -102813;3;1;false;false;127;0;85;;; -102816;1;0;false;false;;;;;; -102817;12;0;false;false;0;0;0;;; -102829;1;0;false;false;;;;;; -102830;1;0;false;false;0;0;0;;; -102831;1;0;false;false;;;;;; -102832;11;0;false;false;0;0;0;;; -102843;1;0;false;false;;;;;; -102844;1;0;false;false;0;0;0;;; -102845;1;0;false;false;;;;;; -102846;11;0;false;false;0;0;0;;; -102857;3;0;false;false;;;;;; -102860;9;0;false;false;0;0;0;;; -102869;1;0;false;false;;;;;; -102870;1;0;false;false;0;0;0;;; -102871;1;0;false;false;;;;;; -102872;4;1;false;false;127;0;85;;; -102876;1;0;false;false;0;0;0;;; -102877;3;0;false;false;;;;;; -102880;2;1;false;false;127;0;85;;; -102882;1;0;false;false;;;;;; -102883;13;0;false;false;0;0;0;;; -102896;1;0;false;false;;;;;; -102897;1;0;false;false;0;0;0;;; -102898;1;0;false;false;;;;;; -102899;36;0;false;false;0;0;0;;; -102935;1;0;false;false;;;;;; -102936;1;0;false;false;0;0;0;;; -102937;4;0;false;false;;;;;; -102941;11;0;false;false;0;0;0;;; -102952;1;0;false;false;;;;;; -102953;1;0;false;false;0;0;0;;; -102954;1;0;false;false;;;;;; -102955;27;0;false;false;0;0;0;;; -102982;1;0;false;false;;;;;; -102983;11;0;false;false;0;0;0;;; -102994;4;0;false;false;;;;;; -102998;12;0;false;false;0;0;0;;; -103010;3;0;false;false;;;;;; -103013;1;0;false;false;0;0;0;;; -103014;3;0;false;false;;;;;; -103017;4;1;false;false;127;0;85;;; -103021;3;0;false;false;;;;;; -103024;2;1;false;false;127;0;85;;; -103026;1;0;false;false;;;;;; -103027;10;0;false;false;0;0;0;;; -103037;1;0;false;false;;;;;; -103038;1;0;false;false;0;0;0;;; -103039;1;0;false;false;;;;;; -103040;22;0;false;false;0;0;0;;; -103062;1;0;false;false;;;;;; -103063;1;0;false;false;0;0;0;;; -103064;1;0;false;false;;;;;; -103065;1;0;false;false;0;0;0;;; -103066;1;0;false;false;;;;;; -103067;2;0;false;false;0;0;0;;; -103069;1;0;false;false;;;;;; -103070;16;0;false;false;0;0;0;;; -103086;1;0;false;false;;;;;; -103087;1;0;false;false;0;0;0;;; -103088;4;0;false;false;;;;;; -103092;64;0;false;false;63;127;95;;; -103156;2;0;false;false;;;;;; -103158;12;0;false;false;0;0;0;;; -103170;6;0;false;false;;;;;; -103176;11;0;false;false;0;0;0;;; -103187;1;0;false;false;;;;;; -103188;1;0;false;false;0;0;0;;; -103189;1;0;false;false;;;;;; -103190;35;0;false;false;0;0;0;;; -103225;4;0;false;false;;;;;; -103229;66;0;false;false;63;127;95;;; -103295;2;0;false;false;;;;;; -103297;69;0;false;false;63;127;95;;; -103366;2;0;false;false;;;;;; -103368;21;0;false;false;0;0;0;;; -103389;3;0;false;false;;;;;; -103392;1;0;false;false;0;0;0;;; -103393;2;0;false;false;;;;;; -103395;1;0;false;false;0;0;0;;; -103396;2;0;false;false;;;;;; -103398;3;0;false;false;63;95;191;;; -103401;3;0;false;false;;;;;; -103404;1;0;false;false;63;95;191;;; -103405;1;0;false;false;;;;;; -103406;5;0;false;false;63;95;191;;; -103411;1;0;false;false;;;;;; -103412;3;0;false;false;63;95;191;;; -103415;1;0;false;false;;;;;; -103416;5;0;false;false;63;95;191;;; -103421;1;0;false;false;;;;;; -103422;2;0;false;false;63;95;191;;; -103424;1;0;false;false;;;;;; -103425;3;0;false;false;63;95;191;;; -103428;1;0;false;false;;;;;; -103429;8;0;false;false;63;95;191;;; -103437;1;0;false;false;;;;;; -103438;9;0;false;false;63;95;191;;; -103447;1;0;false;false;;;;;; -103448;2;0;false;false;63;95;191;;; -103450;1;0;false;false;;;;;; -103451;2;0;false;false;63;95;191;;; -103453;1;0;false;false;;;;;; -103454;3;0;false;false;63;95;191;;; -103457;1;0;false;false;;;;;; -103458;3;0;false;false;63;95;191;;; -103461;1;0;false;false;;;;;; -103462;2;0;false;false;63;95;191;;; -103464;1;0;false;false;;;;;; -103465;3;0;false;false;63;95;191;;; -103468;1;0;false;false;;;;;; -103469;8;0;false;false;63;95;191;;; -103477;4;0;false;false;;;;;; -103481;1;0;false;false;63;95;191;;; -103482;1;0;false;false;;;;;; -103483;4;0;false;false;63;95;191;;; -103487;1;0;false;false;;;;;; -103488;2;0;false;false;63;95;191;;; -103490;1;0;false;false;;;;;; -103491;3;0;false;false;63;95;191;;; -103494;1;0;false;false;;;;;; -103495;6;0;false;false;63;95;191;;; -103501;1;0;false;false;;;;;; -103502;2;0;false;false;63;95;191;;; -103504;1;0;false;false;;;;;; -103505;2;0;false;false;63;95;191;;; -103507;1;0;false;false;;;;;; -103508;3;0;false;false;63;95;191;;; -103511;1;0;false;false;;;;;; -103512;9;0;false;false;63;95;191;;; -103521;1;0;false;false;;;;;; -103522;2;0;false;false;63;95;191;;; -103524;1;0;false;false;;;;;; -103525;1;0;false;false;63;95;191;;; -103526;1;0;false;false;;;;;; -103527;5;0;false;false;63;95;191;;; -103532;3;0;false;false;;;;;; -103535;2;0;false;false;63;95;191;;; -103537;2;0;false;false;;;;;; -103539;4;1;false;false;127;0;85;;; -103543;1;0;false;false;;;;;; -103544;27;0;false;false;0;0;0;;; -103571;1;0;false;false;;;;;; -103572;1;0;false;false;0;0;0;;; -103573;3;0;false;false;;;;;; -103576;3;1;false;false;127;0;85;;; -103579;1;0;false;false;;;;;; -103580;9;0;false;false;0;0;0;;; -103589;1;0;false;false;;;;;; -103590;1;0;false;false;0;0;0;;; -103591;1;0;false;false;;;;;; -103592;15;0;false;false;0;0;0;;; -103607;3;0;false;false;;;;;; -103610;3;1;false;false;127;0;85;;; -103613;1;0;false;false;;;;;; -103614;10;0;false;false;0;0;0;;; -103624;1;0;false;false;;;;;; -103625;1;0;false;false;0;0;0;;; -103626;1;0;false;false;;;;;; -103627;35;0;false;false;0;0;0;;; -103662;3;0;false;false;;;;;; -103665;3;1;false;false;127;0;85;;; -103668;1;0;false;false;;;;;; -103669;12;0;false;false;0;0;0;;; -103681;1;0;false;false;;;;;; -103682;1;0;false;false;0;0;0;;; -103683;1;0;false;false;;;;;; -103684;11;0;false;false;0;0;0;;; -103695;1;0;false;false;;;;;; -103696;1;0;false;false;0;0;0;;; -103697;1;0;false;false;;;;;; -103698;11;0;false;false;0;0;0;;; -103709;3;0;false;false;;;;;; -103712;9;0;false;false;0;0;0;;; -103721;1;0;false;false;;;;;; -103722;1;0;false;false;0;0;0;;; -103723;1;0;false;false;;;;;; -103724;5;1;false;false;127;0;85;;; -103729;1;0;false;false;0;0;0;;; -103730;3;0;false;false;;;;;; -103733;2;1;false;false;127;0;85;;; -103735;1;0;false;false;;;;;; -103736;13;0;false;false;0;0;0;;; -103749;1;0;false;false;;;;;; -103750;1;0;false;false;0;0;0;;; -103751;1;0;false;false;;;;;; -103752;2;0;false;false;0;0;0;;; -103754;1;0;false;false;;;;;; -103755;1;0;false;false;0;0;0;;; -103756;4;0;false;false;;;;;; -103760;11;0;false;false;0;0;0;;; -103771;1;0;false;false;;;;;; -103772;1;0;false;false;0;0;0;;; -103773;1;0;false;false;;;;;; -103774;31;0;false;false;0;0;0;;; -103805;1;0;false;false;;;;;; -103806;11;0;false;false;0;0;0;;; -103817;4;0;false;false;;;;;; -103821;21;0;false;false;0;0;0;;; -103842;3;0;false;false;;;;;; -103845;1;0;false;false;0;0;0;;; -103846;3;0;false;false;;;;;; -103849;4;1;false;false;127;0;85;;; -103853;3;0;false;false;;;;;; -103856;2;1;false;false;127;0;85;;; -103858;1;0;false;false;;;;;; -103859;10;0;false;false;0;0;0;;; -103869;1;0;false;false;;;;;; -103870;1;0;false;false;0;0;0;;; -103871;1;0;false;false;;;;;; -103872;2;0;false;false;0;0;0;;; -103874;1;0;false;false;;;;;; -103875;1;0;false;false;0;0;0;;; -103876;4;0;false;false;;;;;; -103880;12;0;false;false;0;0;0;;; -103892;4;0;false;false;;;;;; -103896;10;0;false;false;0;0;0;;; -103906;1;0;false;false;;;;;; -103907;1;0;false;false;0;0;0;;; -103908;1;0;false;false;;;;;; -103909;35;0;false;false;0;0;0;;; -103944;4;0;false;false;;;;;; -103948;11;0;false;false;0;0;0;;; -103959;1;0;false;false;;;;;; -103960;1;0;false;false;0;0;0;;; -103961;1;0;false;false;;;;;; -103962;10;0;false;false;0;0;0;;; -103972;1;0;false;false;;;;;; -103973;1;0;false;false;0;0;0;;; -103974;1;0;false;false;;;;;; -103975;36;0;false;false;0;0;0;;; -104011;4;0;false;false;;;;;; -104015;12;0;false;false;0;0;0;;; -104027;3;0;false;false;;;;;; -104030;1;0;false;false;0;0;0;;; -104031;2;0;false;false;;;;;; -104033;1;0;false;false;0;0;0;;; -104034;2;0;false;false;;;;;; -104036;3;0;false;false;63;95;191;;; -104039;3;0;false;false;;;;;; -104042;1;0;false;false;63;95;191;;; -104043;1;0;false;false;;;;;; -104044;5;0;false;false;63;95;191;;; -104049;1;0;false;false;;;;;; -104050;3;0;false;false;63;95;191;;; -104053;1;0;false;false;;;;;; -104054;5;0;false;false;63;95;191;;; -104059;1;0;false;false;;;;;; -104060;3;0;false;false;63;95;191;;; -104063;1;0;false;false;;;;;; -104064;4;0;false;false;63;95;191;;; -104068;1;0;false;false;;;;;; -104069;4;0;false;false;63;95;191;;; -104073;1;0;false;false;;;;;; -104074;3;0;false;false;63;95;191;;; -104077;1;0;false;false;;;;;; -104078;2;0;false;false;63;95;191;;; -104080;1;0;false;false;;;;;; -104081;3;0;false;false;63;95;191;;; -104084;1;0;false;false;;;;;; -104085;4;0;false;false;63;95;191;;; -104089;1;0;false;false;;;;;; -104090;9;0;false;false;63;95;191;;; -104099;1;0;false;false;;;;;; -104100;6;0;false;false;63;95;191;;; -104106;1;0;false;false;;;;;; -104107;8;0;false;false;63;95;191;;; -104115;4;0;false;false;;;;;; -104119;1;0;false;false;63;95;191;;; -104120;1;0;false;false;;;;;; -104121;2;0;false;false;63;95;191;;; -104123;1;0;false;false;;;;;; -104124;3;0;false;false;63;95;191;;; -104127;1;0;false;false;;;;;; -104128;9;0;false;false;63;95;191;;; -104137;1;0;false;false;;;;;; -104138;2;0;false;false;63;95;191;;; -104140;1;0;false;false;;;;;; -104141;3;0;false;false;63;95;191;;; -104144;1;0;false;false;;;;;; -104145;5;0;false;false;63;95;191;;; -104150;1;0;false;false;;;;;; -104151;5;0;false;false;63;95;191;;; -104156;1;0;false;false;;;;;; -104157;3;0;false;false;63;95;191;;; -104160;1;0;false;false;;;;;; -104161;5;0;false;false;63;95;191;;; -104166;1;0;false;false;;;;;; -104167;2;0;false;false;63;95;191;;; -104169;1;0;false;false;;;;;; -104170;3;0;false;false;63;95;191;;; -104173;1;0;false;false;;;;;; -104174;3;0;false;false;63;95;191;;; -104177;1;0;false;false;;;;;; -104178;2;0;false;false;63;95;191;;; -104180;1;0;false;false;;;;;; -104181;3;0;false;false;63;95;191;;; -104184;1;0;false;false;;;;;; -104185;3;0;false;false;63;95;191;;; -104188;1;0;false;false;;;;;; -104189;4;0;false;false;63;95;191;;; -104193;4;0;false;false;;;;;; -104197;1;0;false;false;63;95;191;;; -104198;1;0;false;false;;;;;; -104199;2;0;false;false;63;95;191;;; -104201;1;0;false;false;;;;;; -104202;3;0;false;false;63;95;191;;; -104205;1;0;false;false;;;;;; -104206;3;0;false;false;63;95;191;;; -104209;1;0;false;false;;;;;; -104210;4;0;false;false;63;95;191;;; -104214;1;0;false;false;;;;;; -104215;2;0;false;false;63;95;191;;; -104217;1;0;false;false;;;;;; -104218;7;0;false;false;63;95;191;;; -104225;1;0;false;false;;;;;; -104226;4;0;false;false;63;95;191;;; -104230;1;0;false;false;;;;;; -104231;3;0;false;false;63;95;191;;; -104234;1;0;false;false;;;;;; -104235;9;0;false;false;63;95;191;;; -104244;1;0;false;false;;;;;; -104245;7;0;false;false;63;95;191;;; -104252;3;0;false;false;;;;;; -104255;1;0;false;false;63;95;191;;; -104256;1;0;false;false;;;;;; -104257;5;0;false;false;63;95;191;;; -104262;1;0;false;false;;;;;; -104263;3;0;false;false;63;95;191;;; -104266;1;0;false;false;;;;;; -104267;5;0;false;false;63;95;191;;; -104272;1;0;false;false;;;;;; -104273;2;0;false;false;63;95;191;;; -104275;1;0;false;false;;;;;; -104276;3;0;false;false;63;95;191;;; -104279;1;0;false;false;;;;;; -104280;3;0;false;false;63;95;191;;; -104283;1;0;false;false;;;;;; -104284;2;0;false;false;63;95;191;;; -104286;1;0;false;false;;;;;; -104287;3;0;false;false;63;95;191;;; -104290;1;0;false;false;;;;;; -104291;4;0;false;false;63;95;191;;; -104295;1;0;false;false;;;;;; -104296;2;0;false;false;63;95;191;;; -104298;1;0;false;false;;;;;; -104299;3;0;false;false;63;95;191;;; -104302;1;0;false;false;;;;;; -104303;5;0;false;false;63;95;191;;; -104308;1;0;false;false;;;;;; -104309;7;0;false;false;63;95;191;;; -104316;1;0;false;false;;;;;; -104317;2;0;false;false;63;95;191;;; -104319;1;0;false;false;;;;;; -104320;2;0;false;false;63;95;191;;; -104322;1;0;false;false;;;;;; -104323;3;0;false;false;63;95;191;;; -104326;4;0;false;false;;;;;; -104330;1;0;false;false;63;95;191;;; -104331;1;0;false;false;;;;;; -104332;4;0;false;false;63;95;191;;; -104336;1;0;false;false;;;;;; -104337;5;0;false;false;63;95;191;;; -104342;3;0;false;false;;;;;; -104345;1;0;false;false;63;95;191;;; -104346;1;0;false;false;;;;;; -104347;7;0;false;false;63;95;191;;; -104354;1;0;false;false;;;;;; -104355;3;0;false;false;63;95;191;;; -104358;1;0;false;false;;;;;; -104359;9;0;false;false;63;95;191;;; -104368;1;0;false;false;;;;;; -104369;9;0;false;false;63;95;191;;; -104378;1;0;false;false;;;;;; -104379;2;0;false;false;63;95;191;;; -104381;1;0;false;false;;;;;; -104382;3;0;false;false;63;95;191;;; -104385;1;0;false;false;;;;;; -104386;5;0;false;false;63;95;191;;; -104391;1;0;false;false;;;;;; -104392;7;0;false;false;63;95;191;;; -104399;1;0;false;false;;;;;; -104400;4;0;false;false;63;95;191;;; -104404;1;0;false;false;;;;;; -104405;3;0;false;false;63;95;191;;; -104408;1;0;false;false;;;;;; -104409;6;0;false;false;63;95;191;;; -104415;1;0;false;false;;;;;; -104416;3;0;false;false;63;95;191;;; -104419;3;0;false;false;;;;;; -104422;1;0;false;false;63;95;191;;; -104423;1;0;false;false;;;;;; -104424;2;0;false;false;63;95;191;;; -104426;1;0;false;false;;;;;; -104427;2;0;false;false;63;95;191;;; -104429;1;0;false;false;;;;;; -104430;8;0;false;false;63;95;191;;; -104438;1;0;false;false;;;;;; -104439;4;0;false;false;63;95;191;;; -104443;1;0;false;false;;;;;; -104444;3;0;false;false;63;95;191;;; -104447;1;0;false;false;;;;;; -104448;3;0;false;false;63;95;191;;; -104451;1;0;false;false;;;;;; -104452;10;0;false;false;63;95;191;;; -104462;1;0;false;false;;;;;; -104463;9;0;false;false;63;95;191;;; -104472;1;0;false;false;;;;;; -104473;2;0;false;false;63;95;191;;; -104475;1;0;false;false;;;;;; -104476;3;0;false;false;63;95;191;;; -104479;1;0;false;false;;;;;; -104480;8;0;false;false;63;95;191;;; -104488;1;0;false;false;;;;;; -104489;9;0;false;false;63;95;191;;; -104498;3;0;false;false;;;;;; -104501;1;0;false;false;63;95;191;;; -104502;1;0;false;false;;;;;; -104503;10;0;false;false;63;95;191;;; -104513;3;0;false;false;;;;;; -104516;2;0;false;false;63;95;191;;; -104518;2;0;false;false;;;;;; -104520;4;1;false;false;127;0;85;;; -104524;1;0;false;false;;;;;; -104525;21;0;false;false;0;0;0;;; -104546;1;0;false;false;;;;;; -104547;1;0;false;false;0;0;0;;; -104548;3;0;false;false;;;;;; -104551;3;1;false;false;127;0;85;;; -104554;1;0;false;false;;;;;; -104555;11;0;false;false;0;0;0;;; -104566;3;0;false;false;;;;;; -104569;3;1;false;false;127;0;85;;; -104572;1;0;false;false;;;;;; -104573;10;0;false;false;0;0;0;;; -104583;3;0;false;false;;;;;; -104586;3;1;false;false;127;0;85;;; -104589;1;0;false;false;;;;;; -104590;16;0;false;false;0;0;0;;; -104606;6;0;false;false;;;;;; -104612;2;1;false;false;127;0;85;;; -104614;1;0;false;false;;;;;; -104615;16;0;false;false;0;0;0;;; -104631;1;0;false;false;;;;;; -104632;1;0;false;false;0;0;0;;; -104633;4;0;false;false;;;;;; -104637;6;1;false;false;127;0;85;;; -104643;1;0;false;false;0;0;0;;; -104644;3;0;false;false;;;;;; -104647;1;0;false;false;0;0;0;;; -104648;3;0;false;false;;;;;; -104651;9;0;false;false;0;0;0;;; -104660;1;0;false;false;;;;;; -104661;1;0;false;false;0;0;0;;; -104662;1;0;false;false;;;;;; -104663;15;0;false;false;0;0;0;;; -104678;4;0;false;false;;;;;; -104682;15;0;false;false;0;0;0;;; -104697;1;0;false;false;;;;;; -104698;1;0;false;false;0;0;0;;; -104699;1;0;false;false;;;;;; -104700;35;0;false;false;0;0;0;;; -104735;3;0;false;false;;;;;; -104738;31;0;false;false;63;127;95;;; -104769;1;0;false;false;;;;;; -104770;10;0;false;false;0;0;0;;; -104780;1;0;false;false;;;;;; -104781;1;0;false;false;0;0;0;;; -104782;1;0;false;false;;;;;; -104783;7;0;false;false;0;0;0;;; -104790;1;0;false;false;;;;;; -104791;1;0;false;false;0;0;0;;; -104792;1;0;false;false;;;;;; -104793;13;0;false;false;0;0;0;;; -104806;4;0;false;false;;;;;; -104810;27;0;false;false;0;0;0;;; -104837;1;0;false;false;;;;;; -104838;10;0;false;false;0;0;0;;; -104848;1;0;false;false;;;;;; -104849;11;0;false;false;0;0;0;;; -104860;1;0;false;false;;;;;; -104861;1;0;false;false;0;0;0;;; -104862;1;0;false;false;;;;;; -104863;17;0;false;false;0;0;0;;; -104880;3;0;false;false;;;;;; -104883;2;1;false;false;127;0;85;;; -104885;1;0;false;false;;;;;; -104886;10;0;false;false;0;0;0;;; -104896;1;0;false;false;;;;;; -104897;2;0;false;false;0;0;0;;; -104899;1;0;false;false;;;;;; -104900;22;0;false;false;0;0;0;;; -104922;1;0;false;false;;;;;; -104923;1;0;false;false;0;0;0;;; -104924;1;0;false;false;;;;;; -104925;2;0;false;false;0;0;0;;; -104927;1;0;false;false;;;;;; -104928;1;0;false;false;0;0;0;;; -104929;4;0;false;false;;;;;; -104933;11;0;false;false;0;0;0;;; -104944;1;0;false;false;;;;;; -104945;1;0;false;false;0;0;0;;; -104946;1;0;false;false;;;;;; -104947;23;0;false;false;0;0;0;;; -104970;3;0;false;false;;;;;; -104973;1;0;false;false;0;0;0;;; -104974;3;0;false;false;;;;;; -104977;4;1;false;false;127;0;85;;; -104981;1;0;false;false;;;;;; -104982;1;0;false;false;0;0;0;;; -104983;4;0;false;false;;;;;; -104987;9;0;false;false;0;0;0;;; -104996;1;0;false;false;;;;;; -104997;1;0;false;false;0;0;0;;; -104998;1;0;false;false;;;;;; -104999;13;0;false;false;0;0;0;;; -105012;3;0;false;false;;;;;; -105015;1;0;false;false;0;0;0;;; -105016;3;0;false;false;;;;;; -105019;30;0;false;false;0;0;0;;; -105049;4;0;false;false;;;;;; -105053;59;0;false;false;63;127;95;;; -105112;1;0;false;false;;;;;; -105113;33;0;false;false;63;127;95;;; -105146;1;0;false;false;;;;;; -105147;28;0;false;false;0;0;0;;; -105175;3;0;false;false;;;;;; -105178;66;0;false;false;63;127;95;;; -105244;1;0;false;false;;;;;; -105245;69;0;false;false;63;127;95;;; -105314;1;0;false;false;;;;;; -105315;21;0;false;false;0;0;0;;; -105336;3;0;false;false;;;;;; -105339;48;0;false;false;63;127;95;;; -105387;1;0;false;false;;;;;; -105388;7;0;false;false;0;0;0;;; -105395;1;0;false;false;;;;;; -105396;1;0;false;false;0;0;0;;; -105397;1;0;false;false;;;;;; -105398;11;0;false;false;0;0;0;;; -105409;2;0;false;false;;;;;; -105411;1;0;false;false;0;0;0;;; -105412;2;0;false;false;;;;;; -105414;3;0;false;false;63;95;191;;; -105417;3;0;false;false;;;;;; -105420;1;0;false;false;63;95;191;;; -105421;1;0;false;false;;;;;; -105422;5;0;false;false;63;95;191;;; -105427;1;0;false;false;;;;;; -105428;3;0;false;false;63;95;191;;; -105431;1;0;false;false;;;;;; -105432;5;0;false;false;63;95;191;;; -105437;1;0;false;false;;;;;; -105438;3;0;false;false;63;95;191;;; -105441;1;0;false;false;;;;;; -105442;4;0;false;false;63;95;191;;; -105446;1;0;false;false;;;;;; -105447;2;0;false;false;63;95;191;;; -105449;1;0;false;false;;;;;; -105450;3;0;false;false;63;95;191;;; -105453;1;0;false;false;;;;;; -105454;2;0;false;false;63;95;191;;; -105456;1;0;false;false;;;;;; -105457;3;0;false;false;63;95;191;;; -105460;1;0;false;false;;;;;; -105461;4;0;false;false;63;95;191;;; -105465;1;0;false;false;;;;;; -105466;9;0;false;false;63;95;191;;; -105475;1;0;false;false;;;;;; -105476;6;0;false;false;63;95;191;;; -105482;1;0;false;false;;;;;; -105483;8;0;false;false;63;95;191;;; -105491;4;0;false;false;;;;;; -105495;1;0;false;false;63;95;191;;; -105496;1;0;false;false;;;;;; -105497;2;0;false;false;63;95;191;;; -105499;1;0;false;false;;;;;; -105500;3;0;false;false;63;95;191;;; -105503;1;0;false;false;;;;;; -105504;9;0;false;false;63;95;191;;; -105513;1;0;false;false;;;;;; -105514;2;0;false;false;63;95;191;;; -105516;1;0;false;false;;;;;; -105517;3;0;false;false;63;95;191;;; -105520;1;0;false;false;;;;;; -105521;5;0;false;false;63;95;191;;; -105526;1;0;false;false;;;;;; -105527;5;0;false;false;63;95;191;;; -105532;1;0;false;false;;;;;; -105533;3;0;false;false;63;95;191;;; -105536;1;0;false;false;;;;;; -105537;5;0;false;false;63;95;191;;; -105542;1;0;false;false;;;;;; -105543;2;0;false;false;63;95;191;;; -105545;1;0;false;false;;;;;; -105546;3;0;false;false;63;95;191;;; -105549;1;0;false;false;;;;;; -105550;3;0;false;false;63;95;191;;; -105553;1;0;false;false;;;;;; -105554;2;0;false;false;63;95;191;;; -105556;1;0;false;false;;;;;; -105557;3;0;false;false;63;95;191;;; -105560;1;0;false;false;;;;;; -105561;3;0;false;false;63;95;191;;; -105564;1;0;false;false;;;;;; -105565;4;0;false;false;63;95;191;;; -105569;4;0;false;false;;;;;; -105573;1;0;false;false;63;95;191;;; -105574;1;0;false;false;;;;;; -105575;2;0;false;false;63;95;191;;; -105577;1;0;false;false;;;;;; -105578;3;0;false;false;63;95;191;;; -105581;1;0;false;false;;;;;; -105582;3;0;false;false;63;95;191;;; -105585;1;0;false;false;;;;;; -105586;4;0;false;false;63;95;191;;; -105590;1;0;false;false;;;;;; -105591;2;0;false;false;63;95;191;;; -105593;1;0;false;false;;;;;; -105594;7;0;false;false;63;95;191;;; -105601;1;0;false;false;;;;;; -105602;4;0;false;false;63;95;191;;; -105606;1;0;false;false;;;;;; -105607;3;0;false;false;63;95;191;;; -105610;1;0;false;false;;;;;; -105611;9;0;false;false;63;95;191;;; -105620;1;0;false;false;;;;;; -105621;7;0;false;false;63;95;191;;; -105628;3;0;false;false;;;;;; -105631;1;0;false;false;63;95;191;;; -105632;1;0;false;false;;;;;; -105633;5;0;false;false;63;95;191;;; -105638;1;0;false;false;;;;;; -105639;3;0;false;false;63;95;191;;; -105642;1;0;false;false;;;;;; -105643;5;0;false;false;63;95;191;;; -105648;1;0;false;false;;;;;; -105649;2;0;false;false;63;95;191;;; -105651;1;0;false;false;;;;;; -105652;3;0;false;false;63;95;191;;; -105655;1;0;false;false;;;;;; -105656;9;0;false;false;63;95;191;;; -105665;1;0;false;false;;;;;; -105666;2;0;false;false;63;95;191;;; -105668;1;0;false;false;;;;;; -105669;3;0;false;false;63;95;191;;; -105672;1;0;false;false;;;;;; -105673;8;0;false;false;63;95;191;;; -105681;1;0;false;false;;;;;; -105682;2;0;false;false;63;95;191;;; -105684;1;0;false;false;;;;;; -105685;2;0;false;false;63;95;191;;; -105687;1;0;false;false;;;;;; -105688;2;0;false;false;63;95;191;;; -105690;1;0;false;false;;;;;; -105691;7;0;false;false;63;95;191;;; -105698;1;0;false;false;;;;;; -105699;2;0;false;false;63;95;191;;; -105701;1;0;false;false;;;;;; -105702;3;0;false;false;63;95;191;;; -105705;3;0;false;false;;;;;; -105708;1;0;false;false;63;95;191;;; -105709;1;0;false;false;;;;;; -105710;5;0;false;false;63;95;191;;; -105715;1;0;false;false;;;;;; -105716;5;0;false;false;63;95;191;;; -105721;3;0;false;false;;;;;; -105724;1;0;false;false;63;95;191;;; -105725;1;0;false;false;;;;;; -105726;7;0;false;false;63;95;191;;; -105733;1;0;false;false;;;;;; -105734;3;0;false;false;63;95;191;;; -105737;1;0;false;false;;;;;; -105738;9;0;false;false;63;95;191;;; -105747;1;0;false;false;;;;;; -105748;9;0;false;false;63;95;191;;; -105757;1;0;false;false;;;;;; -105758;2;0;false;false;63;95;191;;; -105760;1;0;false;false;;;;;; -105761;3;0;false;false;63;95;191;;; -105764;1;0;false;false;;;;;; -105765;5;0;false;false;63;95;191;;; -105770;1;0;false;false;;;;;; -105771;7;0;false;false;63;95;191;;; -105778;1;0;false;false;;;;;; -105779;4;0;false;false;63;95;191;;; -105783;1;0;false;false;;;;;; -105784;3;0;false;false;63;95;191;;; -105787;1;0;false;false;;;;;; -105788;6;0;false;false;63;95;191;;; -105794;1;0;false;false;;;;;; -105795;3;0;false;false;63;95;191;;; -105798;3;0;false;false;;;;;; -105801;1;0;false;false;63;95;191;;; -105802;1;0;false;false;;;;;; -105803;2;0;false;false;63;95;191;;; -105805;1;0;false;false;;;;;; -105806;2;0;false;false;63;95;191;;; -105808;1;0;false;false;;;;;; -105809;8;0;false;false;63;95;191;;; -105817;1;0;false;false;;;;;; -105818;4;0;false;false;63;95;191;;; -105822;1;0;false;false;;;;;; -105823;3;0;false;false;63;95;191;;; -105826;1;0;false;false;;;;;; -105827;3;0;false;false;63;95;191;;; -105830;1;0;false;false;;;;;; -105831;10;0;false;false;63;95;191;;; -105841;1;0;false;false;;;;;; -105842;9;0;false;false;63;95;191;;; -105851;1;0;false;false;;;;;; -105852;2;0;false;false;63;95;191;;; -105854;1;0;false;false;;;;;; -105855;3;0;false;false;63;95;191;;; -105858;1;0;false;false;;;;;; -105859;8;0;false;false;63;95;191;;; -105867;1;0;false;false;;;;;; -105868;9;0;false;false;63;95;191;;; -105877;3;0;false;false;;;;;; -105880;1;0;false;false;63;95;191;;; -105881;1;0;false;false;;;;;; -105882;10;0;false;false;63;95;191;;; -105892;3;0;false;false;;;;;; -105895;2;0;false;false;63;95;191;;; -105897;2;0;false;false;;;;;; -105899;4;1;false;false;127;0;85;;; -105903;1;0;false;false;;;;;; -105904;19;0;false;false;0;0;0;;; -105923;1;0;false;false;;;;;; -105924;1;0;false;false;0;0;0;;; -105925;3;0;false;false;;;;;; -105928;3;1;false;false;127;0;85;;; -105931;1;0;false;false;;;;;; -105932;11;0;false;false;0;0;0;;; -105943;3;0;false;false;;;;;; -105946;3;1;false;false;127;0;85;;; -105949;1;0;false;false;;;;;; -105950;9;0;false;false;0;0;0;;; -105959;1;0;false;false;;;;;; -105960;1;0;false;false;0;0;0;;; -105961;1;0;false;false;;;;;; -105962;15;0;false;false;0;0;0;;; -105977;4;0;false;false;;;;;; -105981;3;1;false;false;127;0;85;;; -105984;1;0;false;false;;;;;; -105985;15;0;false;false;0;0;0;;; -106000;1;0;false;false;;;;;; -106001;1;0;false;false;0;0;0;;; -106002;1;0;false;false;;;;;; -106003;35;0;false;false;0;0;0;;; -106038;6;0;false;false;;;;;; -106044;31;0;false;false;63;127;95;;; -106075;1;0;false;false;;;;;; -106076;10;0;false;false;0;0;0;;; -106086;1;0;false;false;;;;;; -106087;1;0;false;false;0;0;0;;; -106088;1;0;false;false;;;;;; -106089;7;0;false;false;0;0;0;;; -106096;1;0;false;false;;;;;; -106097;1;0;false;false;0;0;0;;; -106098;1;0;false;false;;;;;; -106099;13;0;false;false;0;0;0;;; -106112;4;0;false;false;;;;;; -106116;27;0;false;false;0;0;0;;; -106143;1;0;false;false;;;;;; -106144;10;0;false;false;0;0;0;;; -106154;1;0;false;false;;;;;; -106155;11;0;false;false;0;0;0;;; -106166;1;0;false;false;;;;;; -106167;1;0;false;false;0;0;0;;; -106168;1;0;false;false;;;;;; -106169;17;0;false;false;0;0;0;;; -106186;4;0;false;false;;;;;; -106190;2;1;false;false;127;0;85;;; -106192;1;0;false;false;;;;;; -106193;10;0;false;false;0;0;0;;; -106203;1;0;false;false;;;;;; -106204;2;0;false;false;0;0;0;;; -106206;1;0;false;false;;;;;; -106207;2;0;false;false;0;0;0;;; -106209;1;0;false;false;;;;;; -106210;1;0;false;false;0;0;0;;; -106211;4;0;false;false;;;;;; -106215;11;0;false;false;0;0;0;;; -106226;1;0;false;false;;;;;; -106227;1;0;false;false;0;0;0;;; -106228;1;0;false;false;;;;;; -106229;2;0;false;false;0;0;0;;; -106231;3;0;false;false;;;;;; -106234;1;0;false;false;0;0;0;;; -106235;3;0;false;false;;;;;; -106238;4;1;false;false;127;0;85;;; -106242;1;0;false;false;;;;;; -106243;1;0;false;false;0;0;0;;; -106244;4;0;false;false;;;;;; -106248;9;0;false;false;0;0;0;;; -106257;1;0;false;false;;;;;; -106258;1;0;false;false;0;0;0;;; -106259;1;0;false;false;;;;;; -106260;11;0;false;false;0;0;0;;; -106271;3;0;false;false;;;;;; -106274;1;0;false;false;0;0;0;;; -106275;3;0;false;false;;;;;; -106278;30;0;false;false;0;0;0;;; -106308;3;0;false;false;;;;;; -106311;66;0;false;false;63;127;95;;; -106377;1;0;false;false;;;;;; -106378;69;0;false;false;63;127;95;;; -106447;1;0;false;false;;;;;; -106448;21;0;false;false;0;0;0;;; -106469;3;0;false;false;;;;;; -106472;32;0;false;false;0;0;0;;; -106504;3;0;false;false;;;;;; -106507;49;0;false;false;63;127;95;;; -106556;1;0;false;false;;;;;; -106557;7;0;false;false;0;0;0;;; -106564;1;0;false;false;;;;;; -106565;1;0;false;false;0;0;0;;; -106566;1;0;false;false;;;;;; -106567;11;0;false;false;0;0;0;;; -106578;2;0;false;false;;;;;; -106580;1;0;false;false;0;0;0;;; -106581;2;0;false;false;;;;;; -106583;3;0;false;false;63;95;191;;; -106586;3;0;false;false;;;;;; -106589;1;0;false;false;63;95;191;;; -106590;1;0;false;false;;;;;; -106591;7;0;false;false;63;95;191;;; -106598;1;0;false;false;;;;;; -106599;3;0;false;false;63;95;191;;; -106602;1;0;false;false;;;;;; -106603;4;0;false;false;63;95;191;;; -106607;1;0;false;false;;;;;; -106608;4;0;false;false;63;95;191;;; -106612;1;0;false;false;;;;;; -106613;2;0;false;false;63;95;191;;; -106615;1;0;false;false;;;;;; -106616;4;0;false;false;63;95;191;;; -106620;1;0;false;false;;;;;; -106621;3;0;false;false;63;95;191;;; -106624;1;0;false;false;;;;;; -106625;4;0;false;false;63;95;191;;; -106629;1;0;false;false;;;;;; -106630;4;0;false;false;63;95;191;;; -106634;1;0;false;false;;;;;; -106635;10;0;false;false;63;95;191;;; -106645;1;0;false;false;;;;;; -106646;2;0;false;false;63;95;191;;; -106648;1;0;false;false;;;;;; -106649;6;0;false;false;63;95;191;;; -106655;3;0;false;false;;;;;; -106658;1;0;false;false;63;95;191;;; -106659;1;0;false;false;;;;;; -106660;2;0;false;false;63;95;191;;; -106662;1;0;false;false;;;;;; -106663;3;0;false;false;63;95;191;;; -106666;1;0;false;false;;;;;; -106667;7;0;false;false;63;95;191;;; -106674;1;0;false;false;;;;;; -106675;4;0;false;false;63;95;191;;; -106679;1;0;false;false;;;;;; -106680;7;0;false;false;63;95;191;;; -106687;1;0;false;false;;;;;; -106688;3;0;false;false;63;95;191;;; -106691;1;0;false;false;;;;;; -106692;5;0;false;false;63;95;191;;; -106697;1;0;false;false;;;;;; -106698;7;0;false;false;63;95;191;;; -106705;1;0;false;false;;;;;; -106706;3;0;false;false;63;95;191;;; -106709;1;0;false;false;;;;;; -106710;5;0;false;false;63;95;191;;; -106715;3;0;false;false;;;;;; -106718;1;0;false;false;63;95;191;;; -106719;1;0;false;false;;;;;; -106720;3;0;false;false;63;95;191;;; -106723;1;0;false;false;;;;;; -106724;5;0;false;false;63;95;191;;; -106729;1;0;false;false;;;;;; -106730;2;0;false;false;63;95;191;;; -106732;1;0;false;false;;;;;; -106733;8;0;false;false;63;95;191;;; -106741;1;0;false;false;;;;;; -106742;3;0;false;false;63;95;191;;; -106745;1;0;false;false;;;;;; -106746;4;0;false;false;63;95;191;;; -106750;1;0;false;false;;;;;; -106751;6;0;false;false;63;95;191;;; -106757;1;0;false;false;;;;;; -106758;2;0;false;false;63;95;191;;; -106760;1;0;false;false;;;;;; -106761;5;0;false;false;63;95;191;;; -106766;1;0;false;false;;;;;; -106767;2;0;false;false;63;95;191;;; -106769;1;0;false;false;;;;;; -106770;4;0;false;false;63;95;191;;; -106774;1;0;false;false;;;;;; -106775;3;0;false;false;63;95;191;;; -106778;1;0;false;false;;;;;; -106779;8;0;false;false;63;95;191;;; -106787;4;0;false;false;;;;;; -106791;1;0;false;false;63;95;191;;; -106792;1;0;false;false;;;;;; -106793;8;0;false;false;63;95;191;;; -106801;1;0;false;false;;;;;; -106802;2;0;false;false;63;95;191;;; -106804;1;0;false;false;;;;;; -106805;3;0;false;false;63;95;191;;; -106808;1;0;false;false;;;;;; -106809;3;0;false;false;63;95;191;;; -106812;1;0;false;false;;;;;; -106813;4;0;false;false;63;95;191;;; -106817;1;0;false;false;;;;;; -106818;7;0;false;false;63;95;191;;; -106825;1;0;false;false;;;;;; -106826;3;0;false;false;63;95;191;;; -106829;1;0;false;false;;;;;; -106830;5;0;false;false;63;95;191;;; -106835;1;0;false;false;;;;;; -106836;3;0;false;false;63;95;191;;; -106839;1;0;false;false;;;;;; -106840;9;0;false;false;63;95;191;;; -106849;1;0;false;false;;;;;; -106850;2;0;false;false;63;95;191;;; -106852;1;0;false;false;;;;;; -106853;3;0;false;false;63;95;191;;; -106856;1;0;false;false;;;;;; -106857;3;0;false;false;63;95;191;;; -106860;4;0;false;false;;;;;; -106864;1;0;false;false;63;95;191;;; -106865;1;0;false;false;;;;;; -106866;2;0;false;false;63;95;191;;; -106868;1;0;false;false;;;;;; -106869;3;0;false;false;63;95;191;;; -106872;1;0;false;false;;;;;; -106873;4;0;false;false;63;95;191;;; -106877;1;0;false;false;;;;;; -106878;5;0;false;false;63;95;191;;; -106883;1;0;false;false;;;;;; -106884;1;0;false;false;63;95;191;;; -106885;1;0;false;false;;;;;; -106886;4;0;false;false;63;95;191;;; -106890;1;0;false;false;;;;;; -106891;4;0;false;false;63;95;191;;; -106895;1;0;false;false;;;;;; -106896;6;0;false;false;63;95;191;;; -106902;1;0;false;false;;;;;; -106903;2;0;false;false;63;95;191;;; -106905;1;0;false;false;;;;;; -106906;3;0;false;false;63;95;191;;; -106909;1;0;false;false;;;;;; -106910;9;0;false;false;63;95;191;;; -106919;1;0;false;false;;;;;; -106920;2;0;false;false;63;95;191;;; -106922;1;0;false;false;;;;;; -106923;4;0;false;false;63;95;191;;; -106927;1;0;false;false;;;;;; -106928;4;0;false;false;63;95;191;;; -106932;4;0;false;false;;;;;; -106936;1;0;false;false;63;95;191;;; -106937;1;0;false;false;;;;;; -106938;3;0;false;false;63;95;191;;; -106941;1;0;false;false;;;;;; -106942;5;0;false;false;63;95;191;;; -106947;1;0;false;false;;;;;; -106948;2;0;false;false;63;95;191;;; -106950;1;0;false;false;;;;;; -106951;5;0;false;false;63;95;191;;; -106956;1;0;false;false;;;;;; -106957;5;0;false;false;63;95;191;;; -106962;1;0;false;false;;;;;; -106963;3;0;false;false;63;95;191;;; -106966;1;0;false;false;;;;;; -106967;4;0;false;false;63;95;191;;; -106971;1;0;false;false;;;;;; -106972;10;0;false;false;63;95;191;;; -106982;3;0;false;false;;;;;; -106985;1;0;false;false;63;95;191;;; -106986;1;0;false;false;;;;;; -106987;3;0;false;false;127;127;159;;; -106990;3;0;false;false;;;;;; -106993;1;0;false;false;63;95;191;;; -106994;1;0;false;false;;;;;; -106995;7;0;false;false;63;95;191;;; -107002;1;0;false;false;;;;;; -107003;3;0;false;false;63;95;191;;; -107006;1;0;false;false;;;;;; -107007;9;0;false;false;63;95;191;;; -107016;1;0;false;false;;;;;; -107017;9;0;false;false;63;95;191;;; -107026;1;0;false;false;;;;;; -107027;2;0;false;false;63;95;191;;; -107029;1;0;false;false;;;;;; -107030;3;0;false;false;63;95;191;;; -107033;1;0;false;false;;;;;; -107034;5;0;false;false;63;95;191;;; -107039;1;0;false;false;;;;;; -107040;7;0;false;false;63;95;191;;; -107047;1;0;false;false;;;;;; -107048;4;0;false;false;63;95;191;;; -107052;1;0;false;false;;;;;; -107053;3;0;false;false;63;95;191;;; -107056;1;0;false;false;;;;;; -107057;6;0;false;false;63;95;191;;; -107063;1;0;false;false;;;;;; -107064;3;0;false;false;63;95;191;;; -107067;3;0;false;false;;;;;; -107070;1;0;false;false;63;95;191;;; -107071;1;0;false;false;;;;;; -107072;2;0;false;false;63;95;191;;; -107074;1;0;false;false;;;;;; -107075;2;0;false;false;63;95;191;;; -107077;1;0;false;false;;;;;; -107078;8;0;false;false;63;95;191;;; -107086;1;0;false;false;;;;;; -107087;4;0;false;false;63;95;191;;; -107091;1;0;false;false;;;;;; -107092;3;0;false;false;63;95;191;;; -107095;1;0;false;false;;;;;; -107096;3;0;false;false;63;95;191;;; -107099;1;0;false;false;;;;;; -107100;10;0;false;false;63;95;191;;; -107110;1;0;false;false;;;;;; -107111;9;0;false;false;63;95;191;;; -107120;1;0;false;false;;;;;; -107121;2;0;false;false;63;95;191;;; -107123;1;0;false;false;;;;;; -107124;3;0;false;false;63;95;191;;; -107127;1;0;false;false;;;;;; -107128;8;0;false;false;63;95;191;;; -107136;1;0;false;false;;;;;; -107137;9;0;false;false;63;95;191;;; -107146;3;0;false;false;;;;;; -107149;1;0;false;false;63;95;191;;; -107150;1;0;false;false;;;;;; -107151;10;0;false;false;63;95;191;;; -107161;3;0;false;false;;;;;; -107164;1;0;false;false;63;95;191;;; -107165;1;0;false;false;;;;;; -107166;4;0;false;false;127;127;159;;; -107170;3;0;false;false;;;;;; -107173;2;0;false;false;63;95;191;;; -107175;2;0;false;false;;;;;; -107177;4;1;false;false;127;0;85;;; -107181;1;0;false;false;;;;;; -107182;20;0;false;false;0;0;0;;; -107202;3;1;false;false;127;0;85;;; -107205;1;0;false;false;;;;;; -107206;6;0;false;false;0;0;0;;; -107212;1;0;false;false;;;;;; -107213;1;0;false;false;0;0;0;;; -107214;3;0;false;false;;;;;; -107217;3;1;false;false;127;0;85;;; -107220;1;0;false;false;;;;;; -107221;11;0;false;false;0;0;0;;; -107232;3;0;false;false;;;;;; -107235;3;1;false;false;127;0;85;;; -107238;1;0;false;false;;;;;; -107239;9;0;false;false;0;0;0;;; -107248;1;0;false;false;;;;;; -107249;1;0;false;false;0;0;0;;; -107250;1;0;false;false;;;;;; -107251;15;0;false;false;0;0;0;;; -107266;3;0;false;false;;;;;; -107269;3;1;false;false;127;0;85;;; -107272;1;0;false;false;;;;;; -107273;15;0;false;false;0;0;0;;; -107288;1;0;false;false;;;;;; -107289;1;0;false;false;0;0;0;;; -107290;1;0;false;false;;;;;; -107291;35;0;false;false;0;0;0;;; -107326;6;0;false;false;;;;;; -107332;31;0;false;false;63;127;95;;; -107363;1;0;false;false;;;;;; -107364;10;0;false;false;0;0;0;;; -107374;1;0;false;false;;;;;; -107375;1;0;false;false;0;0;0;;; -107376;1;0;false;false;;;;;; -107377;7;0;false;false;0;0;0;;; -107384;1;0;false;false;;;;;; -107385;1;0;false;false;0;0;0;;; -107386;1;0;false;false;;;;;; -107387;13;0;false;false;0;0;0;;; -107400;4;0;false;false;;;;;; -107404;27;0;false;false;0;0;0;;; -107431;1;0;false;false;;;;;; -107432;10;0;false;false;0;0;0;;; -107442;1;0;false;false;;;;;; -107443;11;0;false;false;0;0;0;;; -107454;1;0;false;false;;;;;; -107455;1;0;false;false;0;0;0;;; -107456;1;0;false;false;;;;;; -107457;17;0;false;false;0;0;0;;; -107474;3;0;false;false;;;;;; -107477;11;0;false;false;0;0;0;;; -107488;4;1;false;false;127;0;85;;; -107492;1;0;false;false;0;0;0;;; -107493;1;0;false;false;;;;;; -107494;7;0;false;false;0;0;0;;; -107501;3;0;false;false;;;;;; -107504;7;0;false;false;0;0;0;;; -107511;1;0;false;false;;;;;; -107512;1;0;false;false;0;0;0;;; -107513;1;0;false;false;;;;;; -107514;11;0;false;false;0;0;0;;; -107525;2;0;false;false;;;;;; -107527;1;0;false;false;0;0;0;;; -107528;2;0;false;false;;;;;; -107530;3;0;false;false;63;95;191;;; -107533;3;0;false;false;;;;;; -107536;1;0;false;false;63;95;191;;; -107537;1;0;false;false;;;;;; -107538;7;0;false;false;63;95;191;;; -107545;1;0;false;false;;;;;; -107546;3;0;false;false;63;95;191;;; -107549;1;0;false;false;;;;;; -107550;4;0;false;false;63;95;191;;; -107554;1;0;false;false;;;;;; -107555;2;0;false;false;63;95;191;;; -107557;1;0;false;false;;;;;; -107558;2;0;false;false;63;95;191;;; -107560;1;0;false;false;;;;;; -107561;4;0;false;false;63;95;191;;; -107565;1;0;false;false;;;;;; -107566;3;0;false;false;63;95;191;;; -107569;1;0;false;false;;;;;; -107570;5;0;false;false;63;95;191;;; -107575;1;0;false;false;;;;;; -107576;4;0;false;false;63;95;191;;; -107580;1;0;false;false;;;;;; -107581;10;0;false;false;63;95;191;;; -107591;1;0;false;false;;;;;; -107592;2;0;false;false;63;95;191;;; -107594;1;0;false;false;;;;;; -107595;6;0;false;false;63;95;191;;; -107601;3;0;false;false;;;;;; -107604;1;0;false;false;63;95;191;;; -107605;1;0;false;false;;;;;; -107606;2;0;false;false;63;95;191;;; -107608;1;0;false;false;;;;;; -107609;3;0;false;false;63;95;191;;; -107612;1;0;false;false;;;;;; -107613;7;0;false;false;63;95;191;;; -107620;1;0;false;false;;;;;; -107621;4;0;false;false;63;95;191;;; -107625;1;0;false;false;;;;;; -107626;7;0;false;false;63;95;191;;; -107633;1;0;false;false;;;;;; -107634;3;0;false;false;63;95;191;;; -107637;1;0;false;false;;;;;; -107638;5;0;false;false;63;95;191;;; -107643;1;0;false;false;;;;;; -107644;7;0;false;false;63;95;191;;; -107651;1;0;false;false;;;;;; -107652;4;0;false;false;63;95;191;;; -107656;1;0;false;false;;;;;; -107657;5;0;false;false;63;95;191;;; -107662;3;0;false;false;;;;;; -107665;1;0;false;false;63;95;191;;; -107666;1;0;false;false;;;;;; -107667;3;0;false;false;63;95;191;;; -107670;1;0;false;false;;;;;; -107671;5;0;false;false;63;95;191;;; -107676;1;0;false;false;;;;;; -107677;2;0;false;false;63;95;191;;; -107679;1;0;false;false;;;;;; -107680;8;0;false;false;63;95;191;;; -107688;1;0;false;false;;;;;; -107689;3;0;false;false;63;95;191;;; -107692;1;0;false;false;;;;;; -107693;4;0;false;false;63;95;191;;; -107697;1;0;false;false;;;;;; -107698;6;0;false;false;63;95;191;;; -107704;1;0;false;false;;;;;; -107705;2;0;false;false;63;95;191;;; -107707;1;0;false;false;;;;;; -107708;5;0;false;false;63;95;191;;; -107713;1;0;false;false;;;;;; -107714;2;0;false;false;63;95;191;;; -107716;1;0;false;false;;;;;; -107717;4;0;false;false;63;95;191;;; -107721;1;0;false;false;;;;;; -107722;3;0;false;false;63;95;191;;; -107725;1;0;false;false;;;;;; -107726;8;0;false;false;63;95;191;;; -107734;4;0;false;false;;;;;; -107738;1;0;false;false;63;95;191;;; -107739;1;0;false;false;;;;;; -107740;8;0;false;false;63;95;191;;; -107748;1;0;false;false;;;;;; -107749;2;0;false;false;63;95;191;;; -107751;1;0;false;false;;;;;; -107752;3;0;false;false;63;95;191;;; -107755;1;0;false;false;;;;;; -107756;3;0;false;false;63;95;191;;; -107759;1;0;false;false;;;;;; -107760;4;0;false;false;63;95;191;;; -107764;1;0;false;false;;;;;; -107765;7;0;false;false;63;95;191;;; -107772;1;0;false;false;;;;;; -107773;3;0;false;false;63;95;191;;; -107776;1;0;false;false;;;;;; -107777;5;0;false;false;63;95;191;;; -107782;1;0;false;false;;;;;; -107783;3;0;false;false;63;95;191;;; -107786;1;0;false;false;;;;;; -107787;9;0;false;false;63;95;191;;; -107796;1;0;false;false;;;;;; -107797;2;0;false;false;63;95;191;;; -107799;1;0;false;false;;;;;; -107800;3;0;false;false;63;95;191;;; -107803;1;0;false;false;;;;;; -107804;9;0;false;false;63;95;191;;; -107813;4;0;false;false;;;;;; -107817;1;0;false;false;63;95;191;;; -107818;1;0;false;false;;;;;; -107819;2;0;false;false;63;95;191;;; -107821;1;0;false;false;;;;;; -107822;3;0;false;false;63;95;191;;; -107825;1;0;false;false;;;;;; -107826;4;0;false;false;63;95;191;;; -107830;1;0;false;false;;;;;; -107831;5;0;false;false;63;95;191;;; -107836;1;0;false;false;;;;;; -107837;1;0;false;false;63;95;191;;; -107838;1;0;false;false;;;;;; -107839;4;0;false;false;63;95;191;;; -107843;1;0;false;false;;;;;; -107844;4;0;false;false;63;95;191;;; -107848;1;0;false;false;;;;;; -107849;6;0;false;false;63;95;191;;; -107855;1;0;false;false;;;;;; -107856;2;0;false;false;63;95;191;;; -107858;1;0;false;false;;;;;; -107859;3;0;false;false;63;95;191;;; -107862;1;0;false;false;;;;;; -107863;9;0;false;false;63;95;191;;; -107872;1;0;false;false;;;;;; -107873;2;0;false;false;63;95;191;;; -107875;1;0;false;false;;;;;; -107876;4;0;false;false;63;95;191;;; -107880;1;0;false;false;;;;;; -107881;4;0;false;false;63;95;191;;; -107885;1;0;false;false;;;;;; -107886;3;0;false;false;63;95;191;;; -107889;3;0;false;false;;;;;; -107892;1;0;false;false;63;95;191;;; -107893;1;0;false;false;;;;;; -107894;5;0;false;false;63;95;191;;; -107899;1;0;false;false;;;;;; -107900;2;0;false;false;63;95;191;;; -107902;1;0;false;false;;;;;; -107903;5;0;false;false;63;95;191;;; -107908;1;0;false;false;;;;;; -107909;2;0;false;false;63;95;191;;; -107911;1;0;false;false;;;;;; -107912;5;0;false;false;63;95;191;;; -107917;1;0;false;false;;;;;; -107918;2;0;false;false;63;95;191;;; -107920;1;0;false;false;;;;;; -107921;3;0;false;false;63;95;191;;; -107924;1;0;false;false;;;;;; -107925;5;0;false;false;63;95;191;;; -107930;1;0;false;false;;;;;; -107931;10;0;false;false;63;95;191;;; -107941;3;0;false;false;;;;;; -107944;1;0;false;false;63;95;191;;; -107945;1;0;false;false;;;;;; -107946;3;0;false;false;127;127;159;;; -107949;3;0;false;false;;;;;; -107952;1;0;false;false;63;95;191;;; -107953;1;0;false;false;;;;;; -107954;7;0;false;false;63;95;191;;; -107961;1;0;false;false;;;;;; -107962;3;0;false;false;63;95;191;;; -107965;1;0;false;false;;;;;; -107966;9;0;false;false;63;95;191;;; -107975;1;0;false;false;;;;;; -107976;9;0;false;false;63;95;191;;; -107985;1;0;false;false;;;;;; -107986;2;0;false;false;63;95;191;;; -107988;1;0;false;false;;;;;; -107989;3;0;false;false;63;95;191;;; -107992;1;0;false;false;;;;;; -107993;5;0;false;false;63;95;191;;; -107998;1;0;false;false;;;;;; -107999;7;0;false;false;63;95;191;;; -108006;1;0;false;false;;;;;; -108007;4;0;false;false;63;95;191;;; -108011;1;0;false;false;;;;;; -108012;3;0;false;false;63;95;191;;; -108015;1;0;false;false;;;;;; -108016;6;0;false;false;63;95;191;;; -108022;1;0;false;false;;;;;; -108023;3;0;false;false;63;95;191;;; -108026;3;0;false;false;;;;;; -108029;1;0;false;false;63;95;191;;; -108030;1;0;false;false;;;;;; -108031;2;0;false;false;63;95;191;;; -108033;1;0;false;false;;;;;; -108034;2;0;false;false;63;95;191;;; -108036;1;0;false;false;;;;;; -108037;8;0;false;false;63;95;191;;; -108045;1;0;false;false;;;;;; -108046;4;0;false;false;63;95;191;;; -108050;1;0;false;false;;;;;; -108051;3;0;false;false;63;95;191;;; -108054;1;0;false;false;;;;;; -108055;3;0;false;false;63;95;191;;; -108058;1;0;false;false;;;;;; -108059;10;0;false;false;63;95;191;;; -108069;1;0;false;false;;;;;; -108070;9;0;false;false;63;95;191;;; -108079;1;0;false;false;;;;;; -108080;2;0;false;false;63;95;191;;; -108082;1;0;false;false;;;;;; -108083;3;0;false;false;63;95;191;;; -108086;1;0;false;false;;;;;; -108087;8;0;false;false;63;95;191;;; -108095;1;0;false;false;;;;;; -108096;9;0;false;false;63;95;191;;; -108105;3;0;false;false;;;;;; -108108;1;0;false;false;63;95;191;;; -108109;1;0;false;false;;;;;; -108110;10;0;false;false;63;95;191;;; -108120;3;0;false;false;;;;;; -108123;1;0;false;false;63;95;191;;; -108124;1;0;false;false;;;;;; -108125;4;0;false;false;127;127;159;;; -108129;3;0;false;false;;;;;; -108132;2;0;false;false;63;95;191;;; -108134;2;0;false;false;;;;;; -108136;4;1;false;false;127;0;85;;; -108140;1;0;false;false;;;;;; -108141;18;0;false;false;0;0;0;;; -108159;3;1;false;false;127;0;85;;; -108162;1;0;false;false;;;;;; -108163;6;0;false;false;0;0;0;;; -108169;1;0;false;false;;;;;; -108170;1;0;false;false;0;0;0;;; -108171;3;0;false;false;;;;;; -108174;3;1;false;false;127;0;85;;; -108177;1;0;false;false;;;;;; -108178;11;0;false;false;0;0;0;;; -108189;3;0;false;false;;;;;; -108192;3;1;false;false;127;0;85;;; -108195;1;0;false;false;;;;;; -108196;9;0;false;false;0;0;0;;; -108205;1;0;false;false;;;;;; -108206;1;0;false;false;0;0;0;;; -108207;1;0;false;false;;;;;; -108208;15;0;false;false;0;0;0;;; -108223;3;0;false;false;;;;;; -108226;3;1;false;false;127;0;85;;; -108229;1;0;false;false;;;;;; -108230;15;0;false;false;0;0;0;;; -108245;1;0;false;false;;;;;; -108246;1;0;false;false;0;0;0;;; -108247;1;0;false;false;;;;;; -108248;35;0;false;false;0;0;0;;; -108283;6;0;false;false;;;;;; -108289;31;0;false;false;63;127;95;;; -108320;1;0;false;false;;;;;; -108321;10;0;false;false;0;0;0;;; -108331;1;0;false;false;;;;;; -108332;1;0;false;false;0;0;0;;; -108333;1;0;false;false;;;;;; -108334;7;0;false;false;0;0;0;;; -108341;1;0;false;false;;;;;; -108342;1;0;false;false;0;0;0;;; -108343;1;0;false;false;;;;;; -108344;13;0;false;false;0;0;0;;; -108357;4;0;false;false;;;;;; -108361;27;0;false;false;0;0;0;;; -108388;1;0;false;false;;;;;; -108389;10;0;false;false;0;0;0;;; -108399;1;0;false;false;;;;;; -108400;11;0;false;false;0;0;0;;; -108411;1;0;false;false;;;;;; -108412;1;0;false;false;0;0;0;;; -108413;1;0;false;false;;;;;; -108414;17;0;false;false;0;0;0;;; -108431;3;0;false;false;;;;;; -108434;9;0;false;false;0;0;0;;; -108443;4;1;false;false;127;0;85;;; -108447;1;0;false;false;0;0;0;;; -108448;1;0;false;false;;;;;; -108449;7;0;false;false;0;0;0;;; -108456;3;0;false;false;;;;;; -108459;7;0;false;false;0;0;0;;; -108466;1;0;false;false;;;;;; -108467;1;0;false;false;0;0;0;;; -108468;1;0;false;false;;;;;; -108469;11;0;false;false;0;0;0;;; -108480;2;0;false;false;;;;;; -108482;1;0;false;false;0;0;0;;; -108483;2;0;false;false;;;;;; -108485;3;0;false;false;63;95;191;;; -108488;3;0;false;false;;;;;; -108491;1;0;false;false;63;95;191;;; -108492;1;0;false;false;;;;;; -108493;5;0;false;false;63;95;191;;; -108498;1;0;false;false;;;;;; -108499;3;0;false;false;63;95;191;;; -108502;1;0;false;false;;;;;; -108503;5;0;false;false;63;95;191;;; -108508;1;0;false;false;;;;;; -108509;2;0;false;false;63;95;191;;; -108511;1;0;false;false;;;;;; -108512;3;0;false;false;63;95;191;;; -108515;1;0;false;false;;;;;; -108516;3;0;false;false;63;95;191;;; -108519;1;0;false;false;;;;;; -108520;2;0;false;false;63;95;191;;; -108522;1;0;false;false;;;;;; -108523;3;0;false;false;63;95;191;;; -108526;1;0;false;false;;;;;; -108527;4;0;false;false;63;95;191;;; -108531;1;0;false;false;;;;;; -108532;4;0;false;false;63;95;191;;; -108536;1;0;false;false;;;;;; -108537;1;0;false;false;63;95;191;;; -108538;3;0;false;false;;;;;; -108541;2;0;false;false;63;95;191;;; -108543;2;0;false;false;;;;;; -108545;4;1;false;false;127;0;85;;; -108549;1;0;false;false;;;;;; -108550;21;0;false;false;0;0;0;;; -108571;1;0;false;false;;;;;; -108572;1;0;false;false;0;0;0;;; -108573;3;0;false;false;;;;;; -108576;3;1;false;false;127;0;85;;; -108579;1;0;false;false;;;;;; -108580;14;0;false;false;0;0;0;;; -108594;1;0;false;false;;;;;; -108595;1;0;false;false;0;0;0;;; -108596;1;0;false;false;;;;;; -108597;24;0;false;false;0;0;0;;; -108621;3;0;false;false;;;;;; -108624;71;0;false;false;63;127;95;;; -108695;1;0;false;false;;;;;; -108696;9;0;false;false;0;0;0;;; -108705;1;0;false;false;;;;;; -108706;1;0;false;false;0;0;0;;; -108707;1;0;false;false;;;;;; -108708;5;1;false;false;127;0;85;;; -108713;1;0;false;false;0;0;0;;; -108714;3;0;false;false;;;;;; -108717;71;0;false;false;63;127;95;;; -108788;1;0;false;false;;;;;; -108789;45;0;false;false;63;127;95;;; -108834;1;0;false;false;;;;;; -108835;2;1;false;false;127;0;85;;; -108837;1;0;false;false;;;;;; -108838;16;0;false;false;0;0;0;;; -108854;1;0;false;false;;;;;; -108855;2;0;false;false;0;0;0;;; -108857;5;0;false;false;;;;;; -108862;36;0;false;false;0;0;0;;; -108898;1;0;false;false;;;;;; -108899;2;0;false;false;0;0;0;;; -108901;1;0;false;false;;;;;; -108902;40;0;false;false;0;0;0;;; -108942;1;0;false;false;;;;;; -108943;1;0;false;false;0;0;0;;; -108944;4;0;false;false;;;;;; -108948;11;0;false;false;0;0;0;;; -108959;1;0;false;false;;;;;; -108960;1;0;false;false;0;0;0;;; -108961;1;0;false;false;;;;;; -108962;15;0;false;false;0;0;0;;; -108977;4;0;false;false;;;;;; -108981;12;0;false;false;0;0;0;;; -108993;3;0;false;false;;;;;; -108996;1;0;false;false;0;0;0;;; -108997;2;0;false;false;;;;;; -108999;1;0;false;false;0;0;0;;; -109000;2;0;false;false;;;;;; -109002;3;0;false;false;63;95;191;;; -109005;3;0;false;false;;;;;; -109008;1;0;false;false;63;95;191;;; -109009;1;0;false;false;;;;;; -109010;5;0;false;false;63;95;191;;; -109015;1;0;false;false;;;;;; -109016;3;0;false;false;63;95;191;;; -109019;1;0;false;false;;;;;; -109020;5;0;false;false;63;95;191;;; -109025;1;0;false;false;;;;;; -109026;2;0;false;false;63;95;191;;; -109028;1;0;false;false;;;;;; -109029;3;0;false;false;63;95;191;;; -109032;1;0;false;false;;;;;; -109033;5;0;false;false;63;95;191;;; -109038;1;0;false;false;;;;;; -109039;2;0;false;false;63;95;191;;; -109041;1;0;false;false;;;;;; -109042;3;0;false;false;63;95;191;;; -109045;1;0;false;false;;;;;; -109046;8;0;false;false;63;95;191;;; -109054;1;0;false;false;;;;;; -109055;5;0;false;false;63;95;191;;; -109060;3;0;false;false;;;;;; -109063;2;0;false;false;63;95;191;;; -109065;2;0;false;false;;;;;; -109067;4;1;false;false;127;0;85;;; -109071;1;0;false;false;;;;;; -109072;25;0;false;false;0;0;0;;; -109097;1;0;false;false;;;;;; -109098;1;0;false;false;0;0;0;;; -109099;3;0;false;false;;;;;; -109102;3;1;false;false;127;0;85;;; -109105;1;0;false;false;;;;;; -109106;10;0;false;false;0;0;0;;; -109116;4;0;false;false;;;;;; -109120;9;0;false;false;0;0;0;;; -109129;1;0;false;false;;;;;; -109130;1;0;false;false;0;0;0;;; -109131;1;0;false;false;;;;;; -109132;5;1;false;false;127;0;85;;; -109137;1;0;false;false;0;0;0;;; -109138;3;0;false;false;;;;;; -109141;11;0;false;false;0;0;0;;; -109152;1;0;false;false;;;;;; -109153;1;0;false;false;0;0;0;;; -109154;1;0;false;false;;;;;; -109155;26;0;false;false;0;0;0;;; -109181;3;0;false;false;;;;;; -109184;9;0;false;false;0;0;0;;; -109193;1;0;false;false;;;;;; -109194;1;0;false;false;0;0;0;;; -109195;1;0;false;false;;;;;; -109196;37;0;false;false;0;0;0;;; -109233;3;0;false;false;;;;;; -109236;54;0;false;false;63;127;95;;; -109290;1;0;false;false;;;;;; -109291;62;0;false;false;63;127;95;;; -109353;1;0;false;false;;;;;; -109354;2;1;false;false;127;0;85;;; -109356;1;0;false;false;;;;;; -109357;9;0;false;false;0;0;0;;; -109366;1;0;false;false;;;;;; -109367;2;0;false;false;0;0;0;;; -109369;1;0;false;false;;;;;; -109370;9;0;false;false;0;0;0;;; -109379;1;0;false;false;;;;;; -109380;1;0;false;false;0;0;0;;; -109381;1;0;false;false;;;;;; -109382;22;0;false;false;0;0;0;;; -109404;1;0;false;false;;;;;; -109405;1;0;false;false;0;0;0;;; -109406;1;0;false;false;;;;;; -109407;1;0;false;false;0;0;0;;; -109408;1;0;false;false;;;;;; -109409;2;0;false;false;0;0;0;;; -109411;4;0;false;false;;;;;; -109415;11;0;false;false;0;0;0;;; -109426;1;0;false;false;;;;;; -109427;2;0;false;false;0;0;0;;; -109429;1;0;false;false;;;;;; -109430;33;0;false;false;0;0;0;;; -109463;1;0;false;false;;;;;; -109464;1;0;false;false;0;0;0;;; -109465;1;0;false;false;;;;;; -109466;3;0;false;false;0;0;0;;; -109469;1;0;false;false;;;;;; -109470;1;0;false;false;0;0;0;;; -109471;4;0;false;false;;;;;; -109475;12;0;false;false;0;0;0;;; -109487;3;0;false;false;;;;;; -109490;1;0;false;false;0;0;0;;; -109491;3;0;false;false;;;;;; -109494;21;0;false;false;0;0;0;;; -109515;2;0;false;false;;;;;; -109517;1;0;false;false;0;0;0;;; -109518;2;0;false;false;;;;;; -109520;3;0;false;false;63;95;191;;; -109523;3;0;false;false;;;;;; -109526;1;0;false;false;63;95;191;;; -109527;1;0;false;false;;;;;; -109528;5;0;false;false;63;95;191;;; -109533;1;0;false;false;;;;;; -109534;3;0;false;false;63;95;191;;; -109537;1;0;false;false;;;;;; -109538;5;0;false;false;63;95;191;;; -109543;1;0;false;false;;;;;; -109544;3;0;false;false;63;95;191;;; -109547;1;0;false;false;;;;;; -109548;9;0;false;false;63;95;191;;; -109557;1;0;false;false;;;;;; -109558;2;0;false;false;63;95;191;;; -109560;1;0;false;false;;;;;; -109561;3;0;false;false;63;95;191;;; -109564;1;0;false;false;;;;;; -109565;5;0;false;false;63;95;191;;; -109570;2;0;false;false;;;;;; -109572;2;0;false;false;63;95;191;;; -109574;1;0;false;false;;;;;; -109575;3;0;false;false;63;95;191;;; -109578;1;0;false;false;;;;;; -109579;2;0;false;false;63;95;191;;; -109581;1;0;false;false;;;;;; -109582;2;0;false;false;63;95;191;;; -109584;1;0;false;false;;;;;; -109585;3;0;false;false;63;95;191;;; -109588;1;0;false;false;;;;;; -109589;8;0;false;false;63;95;191;;; -109597;1;0;false;false;;;;;; -109598;5;0;false;false;63;95;191;;; -109603;3;0;false;false;;;;;; -109606;1;0;false;false;63;95;191;;; -109607;1;0;false;false;;;;;; -109608;4;0;false;false;63;95;191;;; -109612;1;0;false;false;;;;;; -109613;2;0;false;false;63;95;191;;; -109615;1;0;false;false;;;;;; -109616;1;0;false;false;63;95;191;;; -109617;1;0;false;false;;;;;; -109618;4;0;false;false;63;95;191;;; -109622;1;0;false;false;;;;;; -109623;6;0;false;false;63;95;191;;; -109629;1;0;false;false;;;;;; -109630;3;0;false;false;63;95;191;;; -109633;1;0;false;false;;;;;; -109634;2;0;false;false;63;95;191;;; -109636;1;0;false;false;;;;;; -109637;1;0;false;false;63;95;191;;; -109638;1;0;false;false;;;;;; -109639;3;0;false;false;63;95;191;;; -109642;1;0;false;false;;;;;; -109643;9;0;false;false;63;95;191;;; -109652;1;0;false;false;;;;;; -109653;3;0;false;false;63;95;191;;; -109656;1;0;false;false;;;;;; -109657;5;0;false;false;63;95;191;;; -109662;1;0;false;false;;;;;; -109663;2;0;false;false;63;95;191;;; -109665;1;0;false;false;;;;;; -109666;5;0;false;false;63;95;191;;; -109671;1;0;false;false;;;;;; -109672;2;0;false;false;63;95;191;;; -109674;1;0;false;false;;;;;; -109675;3;0;false;false;63;95;191;;; -109678;4;0;false;false;;;;;; -109682;1;0;false;false;63;95;191;;; -109683;1;0;false;false;;;;;; -109684;9;0;false;false;63;95;191;;; -109693;1;0;false;false;;;;;; -109694;2;0;false;false;63;95;191;;; -109696;1;0;false;false;;;;;; -109697;3;0;false;false;63;95;191;;; -109700;1;0;false;false;;;;;; -109701;3;0;false;false;63;95;191;;; -109704;1;0;false;false;;;;;; -109705;7;0;false;false;63;95;191;;; -109712;1;0;false;false;;;;;; -109713;9;0;false;false;63;95;191;;; -109722;1;0;false;false;;;;;; -109723;6;0;false;false;63;95;191;;; -109729;1;0;false;false;;;;;; -109730;3;0;false;false;63;95;191;;; -109733;1;0;false;false;;;;;; -109734;4;0;false;false;63;95;191;;; -109738;1;0;false;false;;;;;; -109739;3;0;false;false;63;95;191;;; -109742;1;0;false;false;;;;;; -109743;9;0;false;false;63;95;191;;; -109752;1;0;false;false;;;;;; -109753;2;0;false;false;63;95;191;;; -109755;1;0;false;false;;;;;; -109756;3;0;false;false;63;95;191;;; -109759;4;0;false;false;;;;;; -109763;1;0;false;false;63;95;191;;; -109764;1;0;false;false;;;;;; -109765;4;0;false;false;63;95;191;;; -109769;1;0;false;false;;;;;; -109770;9;0;false;false;63;95;191;;; -109779;1;0;false;false;;;;;; -109780;4;0;false;false;63;95;191;;; -109784;1;0;false;false;;;;;; -109785;7;0;false;false;63;95;191;;; -109792;1;0;false;false;;;;;; -109793;4;0;false;false;63;95;191;;; -109797;1;0;false;false;;;;;; -109798;3;0;false;false;63;95;191;;; -109801;1;0;false;false;;;;;; -109802;2;0;false;false;63;95;191;;; -109804;1;0;false;false;;;;;; -109805;1;0;false;false;63;95;191;;; -109806;1;0;false;false;;;;;; -109807;3;0;false;false;63;95;191;;; -109810;1;0;false;false;;;;;; -109811;9;0;false;false;63;95;191;;; -109820;3;0;false;false;;;;;; -109823;2;0;false;false;63;95;191;;; -109825;2;0;false;false;;;;;; -109827;4;1;false;false;127;0;85;;; -109831;1;0;false;false;;;;;; -109832;18;0;false;false;0;0;0;;; -109850;1;0;false;false;;;;;; -109851;1;0;false;false;0;0;0;;; -109852;3;0;false;false;;;;;; -109855;11;0;false;false;0;0;0;;; -109866;1;0;false;false;;;;;; -109867;1;0;false;false;0;0;0;;; -109868;1;0;false;false;;;;;; -109869;31;0;false;false;0;0;0;;; -109900;1;0;false;false;;;;;; -109901;16;0;false;false;0;0;0;;; -109917;3;0;false;false;;;;;; -109920;12;0;false;false;0;0;0;;; -109932;2;0;false;false;;;;;; -109934;1;0;false;false;0;0;0;;; -109935;2;0;false;false;;;;;; -109937;3;0;false;false;63;95;191;;; -109940;3;0;false;false;;;;;; -109943;1;0;false;false;63;95;191;;; -109944;1;0;false;false;;;;;; -109945;5;0;false;false;63;95;191;;; -109950;1;0;false;false;;;;;; -109951;3;0;false;false;63;95;191;;; -109954;1;0;false;false;;;;;; -109955;5;0;false;false;63;95;191;;; -109960;1;0;false;false;;;;;; -109961;3;0;false;false;63;95;191;;; -109964;1;0;false;false;;;;;; -109965;9;0;false;false;63;95;191;;; -109974;1;0;false;false;;;;;; -109975;2;0;false;false;63;95;191;;; -109977;1;0;false;false;;;;;; -109978;3;0;false;false;63;95;191;;; -109981;1;0;false;false;;;;;; -109982;6;0;false;false;63;95;191;;; -109988;2;0;false;false;;;;;; -109990;2;0;false;false;63;95;191;;; -109992;1;0;false;false;;;;;; -109993;3;0;false;false;63;95;191;;; -109996;1;0;false;false;;;;;; -109997;2;0;false;false;63;95;191;;; -109999;1;0;false;false;;;;;; -110000;2;0;false;false;63;95;191;;; -110002;1;0;false;false;;;;;; -110003;3;0;false;false;63;95;191;;; -110006;1;0;false;false;;;;;; -110007;4;0;false;false;63;95;191;;; -110011;1;0;false;false;;;;;; -110012;5;0;false;false;63;95;191;;; -110017;3;0;false;false;;;;;; -110020;1;0;false;false;63;95;191;;; -110021;1;0;false;false;;;;;; -110022;4;0;false;false;63;95;191;;; -110026;1;0;false;false;;;;;; -110027;2;0;false;false;63;95;191;;; -110029;1;0;false;false;;;;;; -110030;1;0;false;false;63;95;191;;; -110031;1;0;false;false;;;;;; -110032;4;0;false;false;63;95;191;;; -110036;1;0;false;false;;;;;; -110037;6;0;false;false;63;95;191;;; -110043;1;0;false;false;;;;;; -110044;3;0;false;false;63;95;191;;; -110047;1;0;false;false;;;;;; -110048;2;0;false;false;63;95;191;;; -110050;1;0;false;false;;;;;; -110051;1;0;false;false;63;95;191;;; -110052;1;0;false;false;;;;;; -110053;3;0;false;false;63;95;191;;; -110056;1;0;false;false;;;;;; -110057;9;0;false;false;63;95;191;;; -110066;1;0;false;false;;;;;; -110067;3;0;false;false;63;95;191;;; -110070;1;0;false;false;;;;;; -110071;5;0;false;false;63;95;191;;; -110076;1;0;false;false;;;;;; -110077;2;0;false;false;63;95;191;;; -110079;1;0;false;false;;;;;; -110080;5;0;false;false;63;95;191;;; -110085;1;0;false;false;;;;;; -110086;2;0;false;false;63;95;191;;; -110088;1;0;false;false;;;;;; -110089;3;0;false;false;63;95;191;;; -110092;4;0;false;false;;;;;; -110096;1;0;false;false;63;95;191;;; -110097;1;0;false;false;;;;;; -110098;3;0;false;false;63;95;191;;; -110101;1;0;false;false;;;;;; -110102;2;0;false;false;63;95;191;;; -110104;1;0;false;false;;;;;; -110105;3;0;false;false;63;95;191;;; -110108;1;0;false;false;;;;;; -110109;3;0;false;false;63;95;191;;; -110112;1;0;false;false;;;;;; -110113;7;0;false;false;63;95;191;;; -110120;1;0;false;false;;;;;; -110121;9;0;false;false;63;95;191;;; -110130;1;0;false;false;;;;;; -110131;5;0;false;false;63;95;191;;; -110136;1;0;false;false;;;;;; -110137;3;0;false;false;63;95;191;;; -110140;1;0;false;false;;;;;; -110141;4;0;false;false;63;95;191;;; -110145;1;0;false;false;;;;;; -110146;3;0;false;false;63;95;191;;; -110149;1;0;false;false;;;;;; -110150;9;0;false;false;63;95;191;;; -110159;1;0;false;false;;;;;; -110160;2;0;false;false;63;95;191;;; -110162;1;0;false;false;;;;;; -110163;3;0;false;false;63;95;191;;; -110166;4;0;false;false;;;;;; -110170;1;0;false;false;63;95;191;;; -110171;1;0;false;false;;;;;; -110172;5;0;false;false;63;95;191;;; -110177;1;0;false;false;;;;;; -110178;9;0;false;false;63;95;191;;; -110187;1;0;false;false;;;;;; -110188;5;0;false;false;63;95;191;;; -110193;1;0;false;false;;;;;; -110194;7;0;false;false;63;95;191;;; -110201;1;0;false;false;;;;;; -110202;4;0;false;false;63;95;191;;; -110206;1;0;false;false;;;;;; -110207;3;0;false;false;63;95;191;;; -110210;1;0;false;false;;;;;; -110211;2;0;false;false;63;95;191;;; -110213;1;0;false;false;;;;;; -110214;1;0;false;false;63;95;191;;; -110215;1;0;false;false;;;;;; -110216;3;0;false;false;63;95;191;;; -110219;1;0;false;false;;;;;; -110220;9;0;false;false;63;95;191;;; -110229;3;0;false;false;;;;;; -110232;2;0;false;false;63;95;191;;; -110234;2;0;false;false;;;;;; -110236;4;1;false;false;127;0;85;;; -110240;1;0;false;false;;;;;; -110241;14;0;false;false;0;0;0;;; -110255;1;0;false;false;;;;;; -110256;1;0;false;false;0;0;0;;; -110257;3;0;false;false;;;;;; -110260;11;0;false;false;0;0;0;;; -110271;1;0;false;false;;;;;; -110272;1;0;false;false;0;0;0;;; -110273;1;0;false;false;;;;;; -110274;27;0;false;false;0;0;0;;; -110301;1;0;false;false;;;;;; -110302;16;0;false;false;0;0;0;;; -110318;3;0;false;false;;;;;; -110321;12;0;false;false;0;0;0;;; -110333;2;0;false;false;;;;;; -110335;1;0;false;false;0;0;0;;; -110336;2;0;false;false;;;;;; -110338;3;0;false;false;63;95;191;;; -110341;3;0;false;false;;;;;; -110344;1;0;false;false;63;95;191;;; -110345;1;0;false;false;;;;;; -110346;5;0;false;false;63;95;191;;; -110351;1;0;false;false;;;;;; -110352;3;0;false;false;63;95;191;;; -110355;1;0;false;false;;;;;; -110356;5;0;false;false;63;95;191;;; -110361;1;0;false;false;;;;;; -110362;2;0;false;false;63;95;191;;; -110364;1;0;false;false;;;;;; -110365;3;0;false;false;63;95;191;;; -110368;1;0;false;false;;;;;; -110369;3;0;false;false;63;95;191;;; -110372;1;0;false;false;;;;;; -110373;2;0;false;false;63;95;191;;; -110375;1;0;false;false;;;;;; -110376;3;0;false;false;63;95;191;;; -110379;1;0;false;false;;;;;; -110380;4;0;false;false;63;95;191;;; -110384;1;0;false;false;;;;;; -110385;5;0;false;false;63;95;191;;; -110390;3;0;false;false;;;;;; -110393;1;0;false;false;63;95;191;;; -110394;1;0;false;false;;;;;; -110395;2;0;false;false;63;95;191;;; -110397;1;0;false;false;;;;;; -110398;1;0;false;false;63;95;191;;; -110399;1;0;false;false;;;;;; -110400;9;0;false;false;63;95;191;;; -110409;1;0;false;false;;;;;; -110410;7;0;false;false;63;95;191;;; -110417;1;0;false;false;;;;;; -110418;4;0;false;false;63;95;191;;; -110422;1;0;false;false;;;;;; -110423;3;0;false;false;63;95;191;;; -110426;1;0;false;false;;;;;; -110427;5;0;false;false;63;95;191;;; -110432;1;0;false;false;;;;;; -110433;2;0;false;false;63;95;191;;; -110435;1;0;false;false;;;;;; -110436;3;0;false;false;63;95;191;;; -110439;1;0;false;false;;;;;; -110440;3;0;false;false;63;95;191;;; -110443;1;0;false;false;;;;;; -110444;2;0;false;false;63;95;191;;; -110446;1;0;false;false;;;;;; -110447;3;0;false;false;63;95;191;;; -110450;1;0;false;false;;;;;; -110451;9;0;false;false;63;95;191;;; -110460;3;0;false;false;;;;;; -110463;1;0;false;false;63;95;191;;; -110464;1;0;false;false;;;;;; -110465;3;0;false;false;63;95;191;;; -110468;1;0;false;false;;;;;; -110469;6;0;false;false;63;95;191;;; -110475;1;0;false;false;;;;;; -110476;3;0;false;false;63;95;191;;; -110479;1;0;false;false;;;;;; -110480;10;0;false;false;63;95;191;;; -110490;3;0;false;false;;;;;; -110493;2;0;false;false;63;95;191;;; -110495;2;0;false;false;;;;;; -110497;4;1;false;false;127;0;85;;; -110501;1;0;false;false;;;;;; -110502;12;0;false;false;0;0;0;;; -110514;1;0;false;false;;;;;; -110515;1;0;false;false;0;0;0;;; -110516;3;0;false;false;;;;;; -110519;2;1;false;false;127;0;85;;; -110521;1;0;false;false;;;;;; -110522;12;0;false;false;0;0;0;;; -110534;1;0;false;false;;;;;; -110535;1;0;false;false;0;0;0;;; -110536;1;0;false;false;;;;;; -110537;11;0;false;false;0;0;0;;; -110548;1;0;false;false;;;;;; -110549;1;0;false;false;0;0;0;;; -110550;1;0;false;false;;;;;; -110551;2;0;false;false;0;0;0;;; -110553;1;0;false;false;;;;;; -110554;1;0;false;false;0;0;0;;; -110555;4;0;false;false;;;;;; -110559;3;1;false;false;127;0;85;;; -110562;1;0;false;false;;;;;; -110563;10;0;false;false;0;0;0;;; -110573;8;0;false;false;;;;;; -110581;11;0;false;false;0;0;0;;; -110592;1;0;false;false;;;;;; -110593;1;0;false;false;0;0;0;;; -110594;1;0;false;false;;;;;; -110595;12;0;false;false;0;0;0;;; -110607;4;0;false;false;;;;;; -110611;9;0;false;false;0;0;0;;; -110620;1;0;false;false;;;;;; -110621;1;0;false;false;0;0;0;;; -110622;1;0;false;false;;;;;; -110623;15;0;false;false;0;0;0;;; -110638;4;0;false;false;;;;;; -110642;21;0;false;false;0;0;0;;; -110663;3;0;false;false;;;;;; -110666;1;0;false;false;0;0;0;;; -110667;3;0;false;false;;;;;; -110670;4;1;false;false;127;0;85;;; -110674;1;0;false;false;;;;;; -110675;1;0;false;false;0;0;0;;; -110676;4;0;false;false;;;;;; -110680;22;0;false;false;0;0;0;;; -110702;3;0;false;false;;;;;; -110705;1;0;false;false;0;0;0;;; -110706;2;0;false;false;;;;;; -110708;1;0;false;false;0;0;0;;; -110709;2;0;false;false;;;;;; -110711;3;0;false;false;63;95;191;;; -110714;3;0;false;false;;;;;; -110717;1;0;false;false;63;95;191;;; -110718;1;0;false;false;;;;;; -110719;5;0;false;false;63;95;191;;; -110724;1;0;false;false;;;;;; -110725;3;0;false;false;63;95;191;;; -110728;1;0;false;false;;;;;; -110729;5;0;false;false;63;95;191;;; -110734;1;0;false;false;;;;;; -110735;2;0;false;false;63;95;191;;; -110737;1;0;false;false;;;;;; -110738;3;0;false;false;63;95;191;;; -110741;1;0;false;false;;;;;; -110742;5;0;false;false;63;95;191;;; -110747;1;0;false;false;;;;;; -110748;2;0;false;false;63;95;191;;; -110750;1;0;false;false;;;;;; -110751;3;0;false;false;63;95;191;;; -110754;1;0;false;false;;;;;; -110755;8;0;false;false;63;95;191;;; -110763;1;0;false;false;;;;;; -110764;5;0;false;false;63;95;191;;; -110769;3;0;false;false;;;;;; -110772;1;0;false;false;63;95;191;;; -110773;1;0;false;false;;;;;; -110774;2;0;false;false;63;95;191;;; -110776;1;0;false;false;;;;;; -110777;1;0;false;false;63;95;191;;; -110778;1;0;false;false;;;;;; -110779;9;0;false;false;63;95;191;;; -110788;1;0;false;false;;;;;; -110789;7;0;false;false;63;95;191;;; -110796;1;0;false;false;;;;;; -110797;4;0;false;false;63;95;191;;; -110801;1;0;false;false;;;;;; -110802;3;0;false;false;63;95;191;;; -110805;1;0;false;false;;;;;; -110806;5;0;false;false;63;95;191;;; -110811;1;0;false;false;;;;;; -110812;2;0;false;false;63;95;191;;; -110814;1;0;false;false;;;;;; -110815;3;0;false;false;63;95;191;;; -110818;1;0;false;false;;;;;; -110819;5;0;false;false;63;95;191;;; -110824;1;0;false;false;;;;;; -110825;2;0;false;false;63;95;191;;; -110827;1;0;false;false;;;;;; -110828;3;0;false;false;63;95;191;;; -110831;1;0;false;false;;;;;; -110832;9;0;false;false;63;95;191;;; -110841;3;0;false;false;;;;;; -110844;1;0;false;false;63;95;191;;; -110845;1;0;false;false;;;;;; -110846;3;0;false;false;63;95;191;;; -110849;1;0;false;false;;;;;; -110850;6;0;false;false;63;95;191;;; -110856;1;0;false;false;;;;;; -110857;3;0;false;false;63;95;191;;; -110860;1;0;false;false;;;;;; -110861;10;0;false;false;63;95;191;;; -110871;3;0;false;false;;;;;; -110874;2;0;false;false;63;95;191;;; -110876;2;0;false;false;;;;;; -110878;4;1;false;false;127;0;85;;; -110882;1;0;false;false;;;;;; -110883;16;0;false;false;0;0;0;;; -110899;1;0;false;false;;;;;; -110900;1;0;false;false;0;0;0;;; -110901;3;0;false;false;;;;;; -110904;2;1;false;false;127;0;85;;; -110906;1;0;false;false;;;;;; -110907;12;0;false;false;0;0;0;;; -110919;1;0;false;false;;;;;; -110920;1;0;false;false;0;0;0;;; -110921;1;0;false;false;;;;;; -110922;11;0;false;false;0;0;0;;; -110933;1;0;false;false;;;;;; -110934;1;0;false;false;0;0;0;;; -110935;1;0;false;false;;;;;; -110936;2;0;false;false;0;0;0;;; -110938;1;0;false;false;;;;;; -110939;1;0;false;false;0;0;0;;; -110940;4;0;false;false;;;;;; -110944;3;1;false;false;127;0;85;;; -110947;1;0;false;false;;;;;; -110948;10;0;false;false;0;0;0;;; -110958;8;0;false;false;;;;;; -110966;11;0;false;false;0;0;0;;; -110977;1;0;false;false;;;;;; -110978;1;0;false;false;0;0;0;;; -110979;1;0;false;false;;;;;; -110980;12;0;false;false;0;0;0;;; -110992;4;0;false;false;;;;;; -110996;9;0;false;false;0;0;0;;; -111005;1;0;false;false;;;;;; -111006;1;0;false;false;0;0;0;;; -111007;1;0;false;false;;;;;; -111008;15;0;false;false;0;0;0;;; -111023;4;0;false;false;;;;;; -111027;21;0;false;false;0;0;0;;; -111048;3;0;false;false;;;;;; -111051;1;0;false;false;0;0;0;;; -111052;3;0;false;false;;;;;; -111055;4;1;false;false;127;0;85;;; -111059;1;0;false;false;;;;;; -111060;1;0;false;false;0;0;0;;; -111061;4;0;false;false;;;;;; -111065;26;0;false;false;0;0;0;;; -111091;3;0;false;false;;;;;; -111094;1;0;false;false;0;0;0;;; -111095;2;0;false;false;;;;;; -111097;1;0;false;false;0;0;0;;; -111098;2;0;false;false;;;;;; -111100;3;0;false;false;63;95;191;;; -111103;3;0;false;false;;;;;; -111106;1;0;false;false;63;95;191;;; -111107;1;0;false;false;;;;;; -111108;5;0;false;false;63;95;191;;; -111113;1;0;false;false;;;;;; -111114;3;0;false;false;63;95;191;;; -111117;1;0;false;false;;;;;; -111118;9;0;false;false;63;95;191;;; -111127;1;0;false;false;;;;;; -111128;10;0;false;false;63;95;191;;; -111138;3;0;false;false;;;;;; -111141;1;0;false;false;63;95;191;;; -111142;1;0;false;false;;;;;; -111143;4;0;false;false;63;95;191;;; -111147;1;0;false;false;;;;;; -111148;8;0;false;false;63;95;191;;; -111156;1;0;false;false;;;;;; -111157;7;0;false;false;63;95;191;;; -111164;1;0;false;false;;;;;; -111165;12;0;false;false;63;95;191;;; -111177;1;0;false;false;;;;;; -111178;3;0;false;false;63;95;191;;; -111181;1;0;false;false;;;;;; -111182;8;0;false;false;63;95;191;;; -111190;1;0;false;false;;;;;; -111191;4;0;false;false;63;95;191;;; -111195;1;0;false;false;;;;;; -111196;4;0;false;false;63;95;191;;; -111200;1;0;false;false;;;;;; -111201;15;0;false;false;63;95;191;;; -111216;1;0;false;false;;;;;; -111217;2;0;false;false;63;95;191;;; -111219;4;0;false;false;;;;;; -111223;1;0;false;false;63;95;191;;; -111224;1;0;false;false;;;;;; -111225;6;0;false;false;63;95;191;;; -111231;3;0;false;false;;;;;; -111234;1;0;false;false;63;95;191;;; -111235;1;0;false;false;;;;;; -111236;3;0;false;false;127;127;159;;; -111239;3;0;false;false;;;;;; -111242;1;0;false;false;63;95;191;;; -111243;3;0;false;false;;;;;; -111246;1;0;false;false;63;95;191;;; -111247;1;0;false;false;;;;;; -111248;7;1;false;false;127;159;191;;; -111255;1;0;false;false;63;95;191;;; -111256;1;0;false;false;;;;;; -111257;3;0;false;false;63;95;191;;; -111260;1;0;false;false;;;;;; -111261;1;0;false;false;63;95;191;;; -111262;1;0;false;false;;;;;; -111263;8;0;false;false;63;95;191;;; -111271;3;0;false;false;;;;;; -111274;1;0;false;false;63;95;191;;; -111275;1;0;false;false;;;;;; -111276;7;1;false;false;127;159;191;;; -111283;1;0;false;false;63;95;191;;; -111284;1;0;false;false;;;;;; -111285;3;0;false;false;63;95;191;;; -111288;1;0;false;false;;;;;; -111289;1;0;false;false;63;95;191;;; -111290;1;0;false;false;;;;;; -111291;8;0;false;false;63;95;191;;; -111299;3;0;false;false;;;;;; -111302;1;0;false;false;63;95;191;;; -111303;1;0;false;false;;;;;; -111304;7;1;false;false;127;159;191;;; -111311;5;0;false;false;63;95;191;;; -111316;1;0;false;false;;;;;; -111317;3;0;false;false;63;95;191;;; -111320;1;0;false;false;;;;;; -111321;5;0;false;false;63;95;191;;; -111326;3;0;false;false;;;;;; -111329;1;0;false;false;63;95;191;;; -111330;1;0;false;false;;;;;; -111331;7;1;false;false;127;159;191;;; -111338;6;0;false;false;63;95;191;;; -111344;1;0;false;false;;;;;; -111345;3;0;false;false;63;95;191;;; -111348;1;0;false;false;;;;;; -111349;6;0;false;false;63;95;191;;; -111355;3;0;false;false;;;;;; -111358;1;0;false;false;63;95;191;;; -111359;1;0;false;false;;;;;; -111360;7;1;false;false;127;159;191;;; -111367;15;0;false;false;63;95;191;;; -111382;1;0;false;false;;;;;; -111383;10;0;false;false;63;95;191;;; -111393;1;0;false;false;;;;;; -111394;3;0;false;false;63;95;191;;; -111397;1;0;false;false;;;;;; -111398;10;0;false;false;63;95;191;;; -111408;1;0;false;false;;;;;; -111409;2;0;false;false;63;95;191;;; -111411;1;0;false;false;;;;;; -111412;12;0;false;false;63;95;191;;; -111424;1;0;false;false;;;;;; -111425;3;0;false;false;63;95;191;;; -111428;1;0;false;false;;;;;; -111429;9;0;false;false;63;95;191;;; -111438;4;0;false;false;;;;;; -111442;1;0;false;false;63;95;191;;; -111443;2;0;false;false;;;;;; -111445;6;0;false;false;63;95;191;;; -111451;1;0;false;false;;;;;; -111452;5;0;false;false;63;95;191;;; -111457;1;0;false;false;;;;;; -111458;10;0;false;false;63;95;191;;; -111468;1;0;false;false;;;;;; -111469;3;0;false;false;63;95;191;;; -111472;1;0;false;false;;;;;; -111473;10;0;false;false;63;95;191;;; -111483;1;0;false;false;;;;;; -111484;8;0;false;false;63;95;191;;; -111492;1;0;false;false;;;;;; -111493;7;0;false;false;63;95;191;;; -111500;1;0;false;false;;;;;; -111501;12;0;false;false;63;95;191;;; -111513;1;0;false;false;;;;;; -111514;3;0;false;false;63;95;191;;; -111517;4;0;false;false;;;;;; -111521;1;0;false;false;63;95;191;;; -111522;2;0;false;false;;;;;; -111524;6;0;false;false;63;95;191;;; -111530;1;0;false;false;;;;;; -111531;5;0;false;false;63;95;191;;; -111536;3;0;false;false;;;;;; -111539;2;0;false;false;63;95;191;;; -111541;2;0;false;false;;;;;; -111543;4;1;false;false;127;0;85;;; -111547;1;0;false;false;;;;;; -111548;5;0;false;false;0;0;0;;; -111553;3;1;false;false;127;0;85;;; -111556;1;0;false;false;;;;;; -111557;2;0;false;false;0;0;0;;; -111559;1;0;false;false;;;;;; -111560;3;1;false;false;127;0;85;;; -111563;1;0;false;false;;;;;; -111564;2;0;false;false;0;0;0;;; -111566;1;0;false;false;;;;;; -111567;3;1;false;false;127;0;85;;; -111570;1;0;false;false;;;;;; -111571;6;0;false;false;0;0;0;;; -111577;1;0;false;false;;;;;; -111578;3;1;false;false;127;0;85;;; -111581;1;0;false;false;;;;;; -111582;7;0;false;false;0;0;0;;; -111589;1;0;false;false;;;;;; -111590;7;1;false;false;127;0;85;;; -111597;1;0;false;false;;;;;; -111598;16;0;false;false;0;0;0;;; -111614;1;0;false;false;;;;;; -111615;1;0;false;false;0;0;0;;; -111616;3;0;false;false;;;;;; -111619;2;1;false;false;127;0;85;;; -111621;1;0;false;false;;;;;; -111622;17;0;false;false;0;0;0;;; -111639;1;0;false;false;;;;;; -111640;1;0;false;false;0;0;0;;; -111641;4;0;false;false;;;;;; -111645;8;0;false;false;0;0;0;;; -111653;1;0;false;false;;;;;; -111654;1;0;false;false;0;0;0;;; -111655;1;0;false;false;;;;;; -111656;11;0;false;false;0;0;0;;; -111667;1;0;false;false;;;;;; -111668;1;0;false;false;0;0;0;;; -111669;1;0;false;false;;;;;; -111670;1;0;false;false;0;0;0;;; -111671;1;0;false;false;;;;;; -111672;10;0;false;false;0;0;0;;; -111682;1;0;false;false;;;;;; -111683;6;0;false;false;0;0;0;;; -111689;1;0;false;false;;;;;; -111690;7;0;false;false;0;0;0;;; -111697;1;0;false;false;;;;;; -111698;4;1;false;false;127;0;85;;; -111702;2;0;false;false;0;0;0;;; -111704;3;0;false;false;;;;;; -111707;1;0;false;false;0;0;0;;; -111708;3;0;false;false;;;;;; -111711;4;1;false;false;127;0;85;;; -111715;1;0;false;false;;;;;; -111716;1;0;false;false;0;0;0;;; -111717;4;0;false;false;;;;;; -111721;3;1;false;false;127;0;85;;; -111724;1;0;false;false;;;;;; -111725;9;0;false;false;0;0;0;;; -111734;1;0;false;false;;;;;; -111735;1;0;false;false;0;0;0;;; -111736;1;0;false;false;;;;;; -111737;2;0;false;false;0;0;0;;; -111739;1;0;false;false;;;;;; -111740;1;0;false;false;0;0;0;;; -111741;1;0;false;false;;;;;; -111742;21;0;false;false;0;0;0;;; -111763;1;0;false;false;;;;;; -111764;1;0;false;false;0;0;0;;; -111765;1;0;false;false;;;;;; -111766;11;0;false;false;0;0;0;;; -111777;4;0;false;false;;;;;; -111781;3;1;false;false;127;0;85;;; -111784;1;0;false;false;;;;;; -111785;4;0;false;false;0;0;0;;; -111789;1;0;false;false;;;;;; -111790;1;0;false;false;0;0;0;;; -111791;1;0;false;false;;;;;; -111792;1;0;false;false;0;0;0;;; -111793;1;0;false;false;;;;;; -111794;1;0;false;false;0;0;0;;; -111795;1;0;false;false;;;;;; -111796;7;0;false;false;0;0;0;;; -111803;4;0;false;false;;;;;; -111807;3;1;false;false;127;0;85;;; -111810;1;0;false;false;;;;;; -111811;17;0;false;false;0;0;0;;; -111828;1;0;false;false;;;;;; -111829;1;0;false;false;0;0;0;;; -111830;1;0;false;false;;;;;; -111831;10;0;false;false;0;0;0;;; -111841;1;0;false;false;;;;;; -111842;1;0;false;false;0;0;0;;; -111843;1;0;false;false;;;;;; -111844;9;0;false;false;0;0;0;;; -111853;1;0;false;false;;;;;; -111854;1;0;false;false;0;0;0;;; -111855;1;0;false;false;;;;;; -111856;11;0;false;false;0;0;0;;; -111867;4;0;false;false;;;;;; -111871;3;1;false;false;127;0;85;;; -111874;1;0;false;false;;;;;; -111875;13;0;false;false;0;0;0;;; -111888;1;0;false;false;;;;;; -111889;1;0;false;false;0;0;0;;; -111890;1;0;false;false;;;;;; -111891;9;0;false;false;0;0;0;;; -111900;1;0;false;false;;;;;; -111901;1;0;false;false;0;0;0;;; -111902;1;0;false;false;;;;;; -111903;10;0;false;false;0;0;0;;; -111913;1;0;false;false;;;;;; -111914;1;0;false;false;0;0;0;;; -111915;1;0;false;false;;;;;; -111916;22;0;false;false;0;0;0;;; -111938;4;0;false;false;;;;;; -111942;3;1;false;false;127;0;85;;; -111945;1;0;false;false;;;;;; -111946;6;0;false;false;0;0;0;;; -111952;1;0;false;false;;;;;; -111953;1;0;false;false;0;0;0;;; -111954;1;0;false;false;;;;;; -111955;17;0;false;false;0;0;0;;; -111972;1;0;false;false;;;;;; -111973;1;0;false;false;0;0;0;;; -111974;1;0;false;false;;;;;; -111975;13;0;false;false;0;0;0;;; -111988;1;0;false;false;;;;;; -111989;1;0;false;false;0;0;0;;; -111990;1;0;false;false;;;;;; -111991;10;0;false;false;0;0;0;;; -112001;1;0;false;false;;;;;; -112002;48;0;false;false;63;127;95;;; -112050;2;0;false;false;;;;;; -112052;3;1;false;false;127;0;85;;; -112055;1;0;false;false;;;;;; -112056;9;0;false;false;0;0;0;;; -112065;1;0;false;false;;;;;; -112066;1;0;false;false;0;0;0;;; -112067;1;0;false;false;;;;;; -112068;23;0;false;false;0;0;0;;; -112091;4;0;false;false;;;;;; -112095;5;0;false;false;0;0;0;;; -112100;1;0;false;false;;;;;; -112101;10;0;false;false;0;0;0;;; -112111;1;0;false;false;;;;;; -112112;1;0;false;false;0;0;0;;; -112113;1;0;false;false;;;;;; -112114;16;0;false;false;0;0;0;;; -112130;4;0;false;false;;;;;; -112134;5;0;false;false;0;0;0;;; -112139;1;0;false;false;;;;;; -112140;10;0;false;false;0;0;0;;; -112150;1;0;false;false;;;;;; -112151;1;0;false;false;0;0;0;;; -112152;1;0;false;false;;;;;; -112153;16;0;false;false;0;0;0;;; -112169;4;0;false;false;;;;;; -112173;2;0;false;false;0;0;0;;; -112175;1;0;false;false;;;;;; -112176;2;0;false;false;0;0;0;;; -112178;1;0;false;false;;;;;; -112179;1;0;false;false;0;0;0;;; -112180;1;0;false;false;;;;;; -112181;8;0;false;false;0;0;0;;; -112189;7;0;false;false;;;;;; -112196;2;1;false;false;127;0;85;;; -112198;1;0;false;false;;;;;; -112199;16;0;false;false;0;0;0;;; -112215;1;0;false;false;;;;;; -112216;1;0;false;false;0;0;0;;; -112217;5;0;false;false;;;;;; -112222;9;0;false;false;0;0;0;;; -112231;1;0;false;false;;;;;; -112232;1;0;false;false;0;0;0;;; -112233;1;0;false;false;;;;;; -112234;2;0;false;false;0;0;0;;; -112236;4;0;false;false;;;;;; -112240;1;0;false;false;0;0;0;;; -112241;4;0;false;false;;;;;; -112245;3;1;false;false;127;0;85;;; -112248;1;0;false;false;;;;;; -112249;1;0;false;false;0;0;0;;; -112250;3;1;false;false;127;0;85;;; -112253;1;0;false;false;;;;;; -112254;1;0;false;false;0;0;0;;; -112255;1;0;false;false;;;;;; -112256;1;0;false;false;0;0;0;;; -112257;1;0;false;false;;;;;; -112258;10;0;false;false;0;0;0;;; -112268;1;0;false;false;;;;;; -112269;6;0;false;false;0;0;0;;; -112275;1;0;false;false;;;;;; -112276;1;0;false;false;0;0;0;;; -112277;1;0;false;false;;;;;; -112278;4;0;false;false;0;0;0;;; -112282;1;0;false;false;;;;;; -112283;2;0;false;false;0;0;0;;; -112285;1;0;false;false;;;;;; -112286;1;0;false;false;0;0;0;;; -112287;1;0;false;false;;;;;; -112288;1;0;false;false;0;0;0;;; -112289;1;0;false;false;;;;;; -112290;10;0;false;false;0;0;0;;; -112300;1;0;false;false;;;;;; -112301;4;0;false;false;0;0;0;;; -112305;1;0;false;false;;;;;; -112306;6;0;false;false;0;0;0;;; -112312;1;0;false;false;;;;;; -112313;2;0;false;false;0;0;0;;; -112315;1;0;false;false;;;;;; -112316;11;0;false;false;0;0;0;;; -112327;1;0;false;false;;;;;; -112328;1;0;false;false;0;0;0;;; -112329;5;0;false;false;;;;;; -112334;6;0;false;false;0;0;0;;; -112340;1;0;false;false;;;;;; -112341;4;0;false;false;0;0;0;;; -112345;1;0;false;false;;;;;; -112346;1;0;false;false;0;0;0;;; -112347;1;0;false;false;;;;;; -112348;19;0;false;false;0;0;0;;; -112367;5;0;false;false;;;;;; -112372;23;0;false;false;0;0;0;;; -112395;1;0;false;false;;;;;; -112396;2;0;false;false;0;0;0;;; -112398;1;0;false;false;;;;;; -112399;7;0;false;false;0;0;0;;; -112406;1;0;false;false;;;;;; -112407;3;0;false;false;0;0;0;;; -112410;1;0;false;false;;;;;; -112411;11;0;false;false;0;0;0;;; -112422;1;0;false;false;;;;;; -112423;11;0;false;false;0;0;0;;; -112434;1;0;false;false;;;;;; -112435;17;0;false;false;0;0;0;;; -112452;4;0;false;false;;;;;; -112456;1;0;false;false;0;0;0;;; -112457;4;0;false;false;;;;;; -112461;13;0;false;false;0;0;0;;; -112474;4;0;false;false;;;;;; -112478;1;0;false;false;0;0;0;;; -112479;2;0;false;false;;;;;; -112481;1;0;false;false;0;0;0;;; -112482;2;0;false;false;;;;;; -112484;3;0;false;false;63;95;191;;; -112487;4;0;false;false;;;;;; -112491;1;0;false;false;63;95;191;;; -112492;1;0;false;false;;;;;; -112493;4;0;false;false;63;95;191;;; -112497;1;0;false;false;;;;;; -112498;3;0;false;false;63;95;191;;; -112501;1;0;false;false;;;;;; -112502;10;0;false;false;63;95;191;;; -112512;1;0;false;false;;;;;; -112513;8;0;false;false;63;95;191;;; -112521;3;0;false;false;;;;;; -112524;2;0;false;false;63;95;191;;; -112526;2;0;false;false;;;;;; -112528;4;1;false;false;127;0;85;;; -112532;1;0;false;false;;;;;; -112533;15;0;false;false;0;0;0;;; -112548;1;0;false;false;;;;;; -112549;1;0;false;false;0;0;0;;; -112550;3;0;false;false;;;;;; -112553;19;0;false;false;0;0;0;;; -112572;1;0;false;false;;;;;; -112573;1;0;false;false;0;0;0;;; -112574;1;0;false;false;;;;;; -112575;9;0;false;false;0;0;0;;; -112584;2;0;false;false;;;;;; -112586;1;0;false;false;0;0;0;;; -112587;2;0;false;false;;;;;; -112589;6;1;false;false;127;0;85;;; -112595;1;0;false;false;;;;;; -112596;5;0;false;false;0;0;0;;; -112601;1;0;false;false;;;;;; -112602;15;0;false;false;0;0;0;;; -112617;1;0;false;false;;;;;; -112618;1;0;false;false;0;0;0;;; -112619;3;0;false;false;;;;;; -112622;14;0;false;false;0;0;0;;; -112636;3;0;false;false;;;;;; -112639;2;1;false;false;127;0;85;;; -112641;1;0;false;false;;;;;; -112642;11;0;false;false;0;0;0;;; -112653;1;0;false;false;;;;;; -112654;2;0;false;false;0;0;0;;; -112656;1;0;false;false;;;;;; -112657;4;1;false;false;127;0;85;;; -112661;1;0;false;false;0;0;0;;; -112662;1;0;false;false;;;;;; -112663;1;0;false;false;0;0;0;;; -112664;4;0;false;false;;;;;; -112668;6;1;false;false;127;0;85;;; -112674;1;0;false;false;;;;;; -112675;55;0;false;false;0;0;0;;; -112730;3;0;false;false;;;;;; -112733;1;0;false;false;0;0;0;;; -112734;3;0;false;false;;;;;; -112737;6;1;false;false;127;0;85;;; -112743;1;0;false;false;;;;;; -112744;11;0;false;false;0;0;0;;; -112755;2;0;false;false;;;;;; -112757;1;0;false;false;0;0;0;;; -112758;2;0;false;false;;;;;; -112760;3;0;false;false;63;95;191;;; -112763;3;0;false;false;;;;;; -112766;1;0;false;false;63;95;191;;; -112767;1;0;false;false;;;;;; -112768;7;0;false;false;63;95;191;;; -112775;1;0;false;false;;;;;; -112776;3;0;false;false;63;95;191;;; -112779;1;0;false;false;;;;;; -112780;9;0;false;false;63;95;191;;; -112789;1;0;false;false;;;;;; -112790;2;0;false;false;63;95;191;;; -112792;1;0;false;false;;;;;; -112793;7;0;false;false;63;95;191;;; -112800;4;0;false;false;;;;;; -112804;1;0;false;false;63;95;191;;; -112805;4;0;false;false;;;;;; -112809;1;0;false;false;63;95;191;;; -112810;1;0;false;false;;;;;; -112811;8;1;false;false;127;159;191;;; -112819;8;0;false;false;63;95;191;;; -112827;1;0;false;false;;;;;; -112828;3;0;false;false;63;95;191;;; -112831;1;0;false;false;;;;;; -112832;8;0;false;false;63;95;191;;; -112840;3;0;false;false;;;;;; -112843;1;0;false;false;63;95;191;;; -112844;1;0;false;false;;;;;; -112845;11;1;false;false;127;159;191;;; -112856;12;0;false;false;63;95;191;;; -112868;1;0;false;false;;;;;; -112869;4;0;false;false;127;127;159;;; -112873;3;0;false;false;;;;;; -112876;1;0;false;false;63;95;191;;; -112877;4;0;false;false;;;;;; -112881;4;0;false;false;127;127;159;;; -112885;21;0;false;false;63;95;191;;; -112906;1;0;false;false;;;;;; -112907;1;0;false;false;127;127;159;;; -112908;1;0;false;false;;;;;; -112909;2;0;false;false;63;95;191;;; -112911;1;0;false;false;;;;;; -112912;3;0;false;false;63;95;191;;; -112915;1;0;false;false;;;;;; -112916;8;0;false;false;63;95;191;;; -112924;1;0;false;false;;;;;; -112925;3;0;false;false;63;95;191;;; -112928;1;0;false;false;;;;;; -112929;4;0;false;false;63;95;191;;; -112933;1;0;false;false;;;;;; -112934;8;0;false;false;63;95;191;;; -112942;5;0;false;false;127;127;159;;; -112947;3;0;false;false;;;;;; -112950;1;0;false;false;63;95;191;;; -112951;4;0;false;false;;;;;; -112955;4;0;false;false;127;127;159;;; -112959;27;0;false;false;63;95;191;;; -112986;1;0;false;false;;;;;; -112987;1;0;false;false;127;127;159;;; -112988;1;0;false;false;;;;;; -112989;2;0;false;false;63;95;191;;; -112991;1;0;false;false;;;;;; -112992;3;0;false;false;63;95;191;;; -112995;1;0;false;false;;;;;; -112996;6;0;false;false;63;95;191;;; -113002;1;0;false;false;;;;;; -113003;4;0;false;false;63;95;191;;; -113007;1;0;false;false;;;;;; -113008;3;0;false;false;63;95;191;;; -113011;1;0;false;false;;;;;; -113012;6;0;false;false;63;95;191;;; -113018;1;0;false;false;;;;;; -113019;4;0;false;false;63;95;191;;; -113023;1;0;false;false;;;;;; -113024;7;0;false;false;63;95;191;;; -113031;1;0;false;false;;;;;; -113032;3;0;false;false;63;95;191;;; -113035;1;0;false;false;;;;;; -113036;8;0;false;false;63;95;191;;; -113044;5;0;false;false;127;127;159;;; -113049;3;0;false;false;;;;;; -113052;1;0;false;false;63;95;191;;; -113053;1;0;false;false;;;;;; -113054;5;0;false;false;127;127;159;;; -113059;3;0;false;false;;;;;; -113062;1;0;false;false;63;95;191;;; -113063;1;0;false;false;;;;;; -113064;7;1;false;false;127;159;191;;; -113071;3;0;false;false;63;95;191;;; -113074;3;0;false;false;;;;;; -113077;2;0;false;false;63;95;191;;; -113079;2;0;false;false;;;;;; -113081;6;1;false;false;127;0;85;;; -113087;1;0;false;false;;;;;; -113088;3;1;false;false;127;0;85;;; -113091;1;0;false;false;;;;;; -113092;13;0;false;false;0;0;0;;; -113105;1;0;false;false;;;;;; -113106;1;0;false;false;0;0;0;;; -113107;3;0;false;false;;;;;; -113110;14;0;false;false;0;0;0;;; -113124;3;0;false;false;;;;;; -113127;6;1;false;false;127;0;85;;; -113133;1;0;false;false;;;;;; -113134;23;0;false;false;0;0;0;;; -113157;2;0;false;false;;;;;; -113159;1;0;false;false;0;0;0;;; -113160;2;0;false;false;;;;;; -113162;3;0;false;false;63;95;191;;; -113165;3;0;false;false;;;;;; -113168;1;0;false;false;63;95;191;;; -113169;1;0;false;false;;;;;; -113170;4;0;false;false;63;95;191;;; -113174;1;0;false;false;;;;;; -113175;3;0;false;false;63;95;191;;; -113178;1;0;false;false;;;;;; -113179;4;0;false;false;63;95;191;;; -113183;1;0;false;false;;;;;; -113184;8;0;false;false;63;95;191;;; -113192;1;0;false;false;;;;;; -113193;5;0;false;false;63;95;191;;; -113198;2;0;false;false;;;;;; -113200;4;0;false;false;63;95;191;;; -113204;1;0;false;false;;;;;; -113205;4;0;false;false;63;95;191;;; -113209;1;0;false;false;;;;;; -113210;3;0;false;false;63;95;191;;; -113213;1;0;false;false;;;;;; -113214;4;0;false;false;63;95;191;;; -113218;1;0;false;false;;;;;; -113219;4;0;false;false;63;95;191;;; -113223;1;0;false;false;;;;;; -113224;7;0;false;false;63;95;191;;; -113231;3;0;false;false;;;;;; -113234;1;0;false;false;63;95;191;;; -113235;1;0;false;false;;;;;; -113236;9;0;false;false;63;95;191;;; -113245;1;0;false;false;;;;;; -113246;2;0;false;false;63;95;191;;; -113248;1;0;false;false;;;;;; -113249;7;0;false;false;63;95;191;;; -113256;1;0;false;false;;;;;; -113257;2;0;false;false;63;95;191;;; -113259;1;0;false;false;;;;;; -113260;8;0;false;false;63;95;191;;; -113268;1;0;false;false;;;;;; -113269;2;0;false;false;63;95;191;;; -113271;1;0;false;false;;;;;; -113272;4;0;false;false;63;95;191;;; -113276;1;0;false;false;;;;;; -113277;4;0;false;false;63;95;191;;; -113281;1;0;false;false;;;;;; -113282;3;0;false;false;63;95;191;;; -113285;1;0;false;false;;;;;; -113286;3;0;false;false;63;95;191;;; -113289;1;0;false;false;;;;;; -113290;4;0;false;false;63;95;191;;; -113294;3;0;false;false;;;;;; -113297;1;0;false;false;63;95;191;;; -113298;1;0;false;false;;;;;; -113299;6;0;false;false;63;95;191;;; -113305;3;0;false;false;;;;;; -113308;1;0;false;false;63;95;191;;; -113309;3;0;false;false;;;;;; -113312;1;0;false;false;63;95;191;;; -113313;1;0;false;false;;;;;; -113314;8;1;false;false;127;159;191;;; -113322;3;0;false;false;63;95;191;;; -113325;1;0;false;false;;;;;; -113326;7;0;false;false;63;95;191;;; -113333;1;0;false;false;;;;;; -113334;8;0;false;false;63;95;191;;; -113342;1;0;false;false;;;;;; -113343;4;0;false;false;63;95;191;;; -113347;3;0;false;false;;;;;; -113350;1;0;false;false;63;95;191;;; -113351;1;0;false;false;;;;;; -113352;11;1;false;false;127;159;191;;; -113363;12;0;false;false;63;95;191;;; -113375;1;0;false;false;;;;;; -113376;4;0;false;false;127;127;159;;; -113380;3;0;false;false;;;;;; -113383;1;0;false;false;63;95;191;;; -113384;4;0;false;false;;;;;; -113388;4;0;false;false;127;127;159;;; -113392;21;0;false;false;63;95;191;;; -113413;1;0;false;false;;;;;; -113414;1;0;false;false;127;127;159;;; -113415;1;0;false;false;;;;;; -113416;2;0;false;false;63;95;191;;; -113418;1;0;false;false;;;;;; -113419;3;0;false;false;63;95;191;;; -113422;1;0;false;false;;;;;; -113423;8;0;false;false;63;95;191;;; -113431;1;0;false;false;;;;;; -113432;3;0;false;false;63;95;191;;; -113435;1;0;false;false;;;;;; -113436;4;0;false;false;63;95;191;;; -113440;1;0;false;false;;;;;; -113441;8;0;false;false;63;95;191;;; -113449;5;0;false;false;127;127;159;;; -113454;3;0;false;false;;;;;; -113457;1;0;false;false;63;95;191;;; -113458;4;0;false;false;;;;;; -113462;4;0;false;false;127;127;159;;; -113466;27;0;false;false;63;95;191;;; -113493;1;0;false;false;;;;;; -113494;1;0;false;false;127;127;159;;; -113495;1;0;false;false;;;;;; -113496;2;0;false;false;63;95;191;;; -113498;1;0;false;false;;;;;; -113499;3;0;false;false;63;95;191;;; -113502;1;0;false;false;;;;;; -113503;6;0;false;false;63;95;191;;; -113509;1;0;false;false;;;;;; -113510;4;0;false;false;63;95;191;;; -113514;1;0;false;false;;;;;; -113515;3;0;false;false;63;95;191;;; -113518;1;0;false;false;;;;;; -113519;6;0;false;false;63;95;191;;; -113525;1;0;false;false;;;;;; -113526;4;0;false;false;63;95;191;;; -113530;1;0;false;false;;;;;; -113531;7;0;false;false;63;95;191;;; -113538;1;0;false;false;;;;;; -113539;3;0;false;false;63;95;191;;; -113542;1;0;false;false;;;;;; -113543;8;0;false;false;63;95;191;;; -113551;5;0;false;false;127;127;159;;; -113556;3;0;false;false;;;;;; -113559;1;0;false;false;63;95;191;;; -113560;1;0;false;false;;;;;; -113561;5;0;false;false;127;127;159;;; -113566;3;0;false;false;;;;;; -113569;1;0;false;false;63;95;191;;; -113570;1;0;false;false;;;;;; -113571;3;0;false;false;127;127;159;;; -113574;3;0;false;false;;;;;; -113577;1;0;false;false;63;95;191;;; -113578;1;0;false;false;;;;;; -113579;12;1;false;false;127;159;191;;; -113591;3;0;false;false;63;95;191;;; -113594;1;0;false;false;;;;;; -113595;19;0;false;false;63;95;191;;; -113614;1;0;false;false;;;;;; -113615;8;0;false;false;63;95;191;;; -113623;3;0;false;false;;;;;; -113626;1;0;false;false;63;95;191;;; -113627;1;0;false;false;;;;;; -113628;4;0;false;false;127;127;159;;; -113632;3;0;false;false;;;;;; -113635;2;0;false;false;63;95;191;;; -113637;2;0;false;false;;;;;; -113639;6;1;false;false;127;0;85;;; -113645;1;0;false;false;;;;;; -113646;7;1;false;false;127;0;85;;; -113653;1;0;false;false;;;;;; -113654;17;0;false;false;0;0;0;;; -113671;1;0;false;false;;;;;; -113672;1;0;false;false;0;0;0;;; -113673;3;0;false;false;;;;;; -113676;14;0;false;false;0;0;0;;; -113690;3;0;false;false;;;;;; -113693;6;1;false;false;127;0;85;;; -113699;1;0;false;false;;;;;; -113700;13;0;false;false;0;0;0;;; -113713;2;0;false;false;;;;;; -113715;1;0;false;false;0;0;0;;; -113716;2;0;false;false;;;;;; -113718;3;0;false;false;63;95;191;;; -113721;4;0;false;false;;;;;; -113725;1;0;false;false;63;95;191;;; -113726;1;0;false;false;;;;;; -113727;7;0;false;false;63;95;191;;; -113734;1;0;false;false;;;;;; -113735;3;0;false;false;63;95;191;;; -113738;1;0;false;false;;;;;; -113739;5;0;false;false;63;95;191;;; -113744;1;0;false;false;;;;;; -113745;2;0;false;false;63;95;191;;; -113747;1;0;false;false;;;;;; -113748;3;0;false;false;63;95;191;;; -113751;1;0;false;false;;;;;; -113752;4;0;false;false;63;95;191;;; -113756;1;0;false;false;;;;;; -113757;5;0;false;false;63;95;191;;; -113762;1;0;false;false;;;;;; -113763;7;0;false;false;63;95;191;;; -113770;1;0;false;false;;;;;; -113771;5;0;false;false;63;95;191;;; -113776;3;0;false;false;;;;;; -113779;1;0;false;false;63;95;191;;; -113780;1;0;false;false;;;;;; -113781;3;0;false;false;127;127;159;;; -113784;3;0;false;false;;;;;; -113787;1;0;false;false;63;95;191;;; -113788;3;0;false;false;;;;;; -113791;1;0;false;false;63;95;191;;; -113792;1;0;false;false;;;;;; -113793;8;1;false;false;127;159;191;;; -113801;5;0;false;false;63;95;191;;; -113806;1;0;false;false;;;;;; -113807;2;0;false;false;63;95;191;;; -113809;1;0;false;false;;;;;; -113810;3;0;false;false;63;95;191;;; -113813;1;0;false;false;;;;;; -113814;4;0;false;false;63;95;191;;; -113818;1;0;false;false;;;;;; -113819;5;0;false;false;63;95;191;;; -113824;1;0;false;false;;;;;; -113825;7;0;false;false;63;95;191;;; -113832;1;0;false;false;;;;;; -113833;5;0;false;false;63;95;191;;; -113838;3;0;false;false;;;;;; -113841;2;0;false;false;63;95;191;;; -113843;2;0;false;false;;;;;; -113845;3;1;false;false;127;0;85;;; -113848;1;0;false;false;;;;;; -113849;16;0;false;false;0;0;0;;; -113865;1;0;false;false;;;;;; -113866;1;0;false;false;0;0;0;;; -113867;3;0;false;false;;;;;; -113870;3;1;false;false;127;0;85;;; -113873;1;0;false;false;;;;;; -113874;9;0;false;false;0;0;0;;; -113883;1;0;false;false;;;;;; -113884;1;0;false;false;0;0;0;;; -113885;1;0;false;false;;;;;; -113886;2;0;false;false;0;0;0;;; -113888;6;0;false;false;;;;;; -113894;2;1;false;false;127;0;85;;; -113896;1;0;false;false;;;;;; -113897;11;0;false;false;0;0;0;;; -113908;1;0;false;false;;;;;; -113909;2;0;false;false;0;0;0;;; -113911;1;0;false;false;;;;;; -113912;2;0;false;false;0;0;0;;; -113914;1;0;false;false;;;;;; -113915;1;0;false;false;0;0;0;;; -113916;4;0;false;false;;;;;; -113920;57;0;false;false;63;127;95;;; -113977;2;0;false;false;;;;;; -113979;3;1;false;false;127;0;85;;; -113982;1;0;false;false;;;;;; -113983;20;0;false;false;0;0;0;;; -114003;1;0;false;false;;;;;; -114004;1;0;false;false;0;0;0;;; -114005;1;0;false;false;;;;;; -114006;8;0;false;false;0;0;0;;; -114014;1;0;false;false;;;;;; -114015;1;0;false;false;0;0;0;;; -114016;1;0;false;false;;;;;; -114017;10;0;false;false;0;0;0;;; -114027;1;0;false;false;;;;;; -114028;1;0;false;false;0;0;0;;; -114029;1;0;false;false;;;;;; -114030;21;0;false;false;0;0;0;;; -114051;4;0;false;false;;;;;; -114055;9;0;false;false;0;0;0;;; -114064;1;0;false;false;;;;;; -114065;1;0;false;false;0;0;0;;; -114066;1;0;false;false;;;;;; -114067;23;0;false;false;0;0;0;;; -114090;1;0;false;false;;;;;; -114091;1;0;false;false;0;0;0;;; -114092;1;0;false;false;;;;;; -114093;21;0;false;false;0;0;0;;; -114114;1;0;false;false;;;;;; -114115;1;0;false;false;0;0;0;;; -114116;1;0;false;false;;;;;; -114117;11;0;false;false;0;0;0;;; -114128;3;0;false;false;;;;;; -114131;1;0;false;false;0;0;0;;; -114132;3;0;false;false;;;;;; -114135;6;1;false;false;127;0;85;;; -114141;1;0;false;false;;;;;; -114142;31;0;false;false;0;0;0;;; -114173;1;0;false;false;;;;;; -114174;1;0;false;false;0;0;0;;; -114175;1;0;false;false;;;;;; -114176;2;0;false;false;0;0;0;;; -114178;1;0;false;false;;;;;; -114179;8;0;false;false;0;0;0;;; -114187;1;0;false;false;;;;;; -114188;1;0;false;false;0;0;0;;; -114189;1;0;false;false;;;;;; -114190;11;0;false;false;0;0;0;;; -114201;1;0;false;false;;;;;; -114202;9;0;false;false;0;0;0;;; -114211;1;0;false;false;;;;;; -114212;1;0;false;false;0;0;0;;; -114213;1;0;false;false;;;;;; -114214;4;0;false;false;0;0;0;;; -114218;2;0;false;false;;;;;; -114220;1;0;false;false;0;0;0;;; -114221;2;0;false;false;;;;;; -114223;3;0;false;false;63;95;191;;; -114226;3;0;false;false;;;;;; -114229;1;0;false;false;63;95;191;;; -114230;1;0;false;false;;;;;; -114231;7;0;false;false;63;95;191;;; -114238;1;0;false;false;;;;;; -114239;3;0;false;false;63;95;191;;; -114242;1;0;false;false;;;;;; -114243;5;0;false;false;63;95;191;;; -114248;1;0;false;false;;;;;; -114249;8;0;false;false;63;95;191;;; -114257;1;0;false;false;;;;;; -114258;8;0;false;false;63;95;191;;; -114266;1;0;false;false;;;;;; -114267;2;0;false;false;63;95;191;;; -114269;1;0;false;false;;;;;; -114270;3;0;false;false;63;95;191;;; -114273;1;0;false;false;;;;;; -114274;5;0;false;false;63;95;191;;; -114279;1;0;false;false;;;;;; -114280;2;0;false;false;63;95;191;;; -114282;1;0;false;false;;;;;; -114283;3;0;false;false;63;95;191;;; -114286;1;0;false;false;;;;;; -114287;5;0;false;false;63;95;191;;; -114292;3;0;false;false;;;;;; -114295;1;0;false;false;63;95;191;;; -114296;1;0;false;false;;;;;; -114297;3;0;false;false;127;127;159;;; -114300;3;0;false;false;;;;;; -114303;1;0;false;false;63;95;191;;; -114304;3;0;false;false;;;;;; -114307;1;0;false;false;63;95;191;;; -114308;1;0;false;false;;;;;; -114309;8;1;false;false;127;159;191;;; -114317;3;0;false;false;63;95;191;;; -114320;1;0;false;false;;;;;; -114321;5;0;false;false;63;95;191;;; -114326;1;0;false;false;;;;;; -114327;8;0;false;false;63;95;191;;; -114335;1;0;false;false;;;;;; -114336;8;0;false;false;63;95;191;;; -114344;1;0;false;false;;;;;; -114345;2;0;false;false;63;95;191;;; -114347;1;0;false;false;;;;;; -114348;3;0;false;false;63;95;191;;; -114351;1;0;false;false;;;;;; -114352;5;0;false;false;63;95;191;;; -114357;1;0;false;false;;;;;; -114358;2;0;false;false;63;95;191;;; -114360;1;0;false;false;;;;;; -114361;3;0;false;false;63;95;191;;; -114364;1;0;false;false;;;;;; -114365;5;0;false;false;63;95;191;;; -114370;3;0;false;false;;;;;; -114373;1;0;false;false;63;95;191;;; -114374;1;0;false;false;;;;;; -114375;11;1;false;false;127;159;191;;; -114386;12;0;false;false;63;95;191;;; -114398;1;0;false;false;;;;;; -114399;4;0;false;false;127;127;159;;; -114403;3;0;false;false;;;;;; -114406;1;0;false;false;63;95;191;;; -114407;4;0;false;false;;;;;; -114411;4;0;false;false;127;127;159;;; -114415;21;0;false;false;63;95;191;;; -114436;1;0;false;false;;;;;; -114437;1;0;false;false;127;127;159;;; -114438;1;0;false;false;;;;;; -114439;2;0;false;false;63;95;191;;; -114441;1;0;false;false;;;;;; -114442;3;0;false;false;63;95;191;;; -114445;1;0;false;false;;;;;; -114446;8;0;false;false;63;95;191;;; -114454;1;0;false;false;;;;;; -114455;3;0;false;false;63;95;191;;; -114458;1;0;false;false;;;;;; -114459;4;0;false;false;63;95;191;;; -114463;1;0;false;false;;;;;; -114464;8;0;false;false;63;95;191;;; -114472;5;0;false;false;127;127;159;;; -114477;3;0;false;false;;;;;; -114480;1;0;false;false;63;95;191;;; -114481;4;0;false;false;;;;;; -114485;4;0;false;false;127;127;159;;; -114489;27;0;false;false;63;95;191;;; -114516;1;0;false;false;;;;;; -114517;1;0;false;false;127;127;159;;; -114518;1;0;false;false;;;;;; -114519;2;0;false;false;63;95;191;;; -114521;1;0;false;false;;;;;; -114522;3;0;false;false;63;95;191;;; -114525;1;0;false;false;;;;;; -114526;6;0;false;false;63;95;191;;; -114532;1;0;false;false;;;;;; -114533;4;0;false;false;63;95;191;;; -114537;1;0;false;false;;;;;; -114538;3;0;false;false;63;95;191;;; -114541;1;0;false;false;;;;;; -114542;6;0;false;false;63;95;191;;; -114548;1;0;false;false;;;;;; -114549;4;0;false;false;63;95;191;;; -114553;1;0;false;false;;;;;; -114554;7;0;false;false;63;95;191;;; -114561;1;0;false;false;;;;;; -114562;3;0;false;false;63;95;191;;; -114565;1;0;false;false;;;;;; -114566;8;0;false;false;63;95;191;;; -114574;5;0;false;false;127;127;159;;; -114579;3;0;false;false;;;;;; -114582;1;0;false;false;63;95;191;;; -114583;1;0;false;false;;;;;; -114584;5;0;false;false;127;127;159;;; -114589;3;0;false;false;;;;;; -114592;2;0;false;false;63;95;191;;; -114594;2;0;false;false;;;;;; -114596;6;1;false;false;127;0;85;;; -114602;1;0;false;false;;;;;; -114603;3;1;false;false;127;0;85;;; -114606;1;0;false;false;;;;;; -114607;16;0;false;false;0;0;0;;; -114623;1;0;false;false;;;;;; -114624;1;0;false;false;0;0;0;;; -114625;3;0;false;false;;;;;; -114628;14;0;false;false;0;0;0;;; -114642;6;0;false;false;;;;;; -114648;6;1;false;false;127;0;85;;; -114654;1;0;false;false;;;;;; -114655;12;0;false;false;0;0;0;;; -114667;2;0;false;false;;;;;; -114669;1;0;false;false;0;0;0;;; -114670;2;0;false;false;;;;;; -114672;3;0;false;false;63;95;191;;; -114675;3;0;false;false;;;;;; -114678;1;0;false;false;63;95;191;;; -114679;1;0;false;false;;;;;; -114680;7;0;false;false;63;95;191;;; -114687;1;0;false;false;;;;;; -114688;3;0;false;false;63;95;191;;; -114691;1;0;false;false;;;;;; -114692;5;0;false;false;63;95;191;;; -114697;1;0;false;false;;;;;; -114698;6;0;false;false;63;95;191;;; -114704;1;0;false;false;;;;;; -114705;2;0;false;false;63;95;191;;; -114707;1;0;false;false;;;;;; -114708;3;0;false;false;63;95;191;;; -114711;1;0;false;false;;;;;; -114712;5;0;false;false;63;95;191;;; -114717;1;0;false;false;;;;;; -114718;1;0;false;false;63;95;191;;; -114719;1;0;false;false;;;;;; -114720;8;0;false;false;63;95;191;;; -114728;1;0;false;false;;;;;; -114729;2;0;false;false;63;95;191;;; -114731;1;0;false;false;;;;;; -114732;3;0;false;false;63;95;191;;; -114735;1;0;false;false;;;;;; -114736;5;0;false;false;63;95;191;;; -114741;3;0;false;false;;;;;; -114744;1;0;false;false;63;95;191;;; -114745;1;0;false;false;;;;;; -114746;3;0;false;false;63;95;191;;; -114749;1;0;false;false;;;;;; -114750;5;0;false;false;63;95;191;;; -114755;1;0;false;false;;;;;; -114756;6;0;false;false;63;95;191;;; -114762;1;0;false;false;;;;;; -114763;2;0;false;false;63;95;191;;; -114765;1;0;false;false;;;;;; -114766;3;0;false;false;63;95;191;;; -114769;1;0;false;false;;;;;; -114770;6;0;false;false;63;95;191;;; -114776;1;0;false;false;;;;;; -114777;2;0;false;false;63;95;191;;; -114779;1;0;false;false;;;;;; -114780;3;0;false;false;63;95;191;;; -114783;1;0;false;false;;;;;; -114784;9;0;false;false;63;95;191;;; -114793;1;0;false;false;;;;;; -114794;5;0;false;false;63;95;191;;; -114799;1;0;false;false;;;;;; -114800;3;0;false;false;63;95;191;;; -114803;1;0;false;false;;;;;; -114804;5;0;false;false;63;95;191;;; -114809;1;0;false;false;;;;;; -114810;4;0;false;false;63;95;191;;; -114814;1;0;false;false;;;;;; -114815;2;0;false;false;63;95;191;;; -114817;3;0;false;false;;;;;; -114820;1;0;false;false;63;95;191;;; -114821;1;0;false;false;;;;;; -114822;6;0;false;false;63;95;191;;; -114828;1;0;false;false;;;;;; -114829;4;0;false;false;63;95;191;;; -114833;1;0;false;false;;;;;; -114834;1;0;false;false;63;95;191;;; -114835;1;0;false;false;;;;;; -114836;5;0;false;false;63;95;191;;; -114841;1;0;false;false;;;;;; -114842;5;0;false;false;63;95;191;;; -114847;1;0;false;false;;;;;; -114848;7;0;false;false;63;95;191;;; -114855;1;0;false;false;;;;;; -114856;3;0;false;false;63;95;191;;; -114859;1;0;false;false;;;;;; -114860;5;0;false;false;63;95;191;;; -114865;1;0;false;false;;;;;; -114866;6;0;false;false;63;95;191;;; -114872;1;0;false;false;;;;;; -114873;4;0;false;false;63;95;191;;; -114877;1;0;false;false;;;;;; -114878;2;0;false;false;63;95;191;;; -114880;1;0;false;false;;;;;; -114881;3;0;false;false;63;95;191;;; -114884;1;0;false;false;;;;;; -114885;6;0;false;false;63;95;191;;; -114891;1;0;false;false;;;;;; -114892;2;0;false;false;63;95;191;;; -114894;4;0;false;false;;;;;; -114898;1;0;false;false;63;95;191;;; -114899;1;0;false;false;;;;;; -114900;3;0;false;false;63;95;191;;; -114903;1;0;false;false;;;;;; -114904;9;0;false;false;63;95;191;;; -114913;1;0;false;false;;;;;; -114914;5;0;false;false;63;95;191;;; -114919;1;0;false;false;;;;;; -114920;3;0;false;false;63;95;191;;; -114923;1;0;false;false;;;;;; -114924;7;0;false;false;63;95;191;;; -114931;1;0;false;false;;;;;; -114932;3;0;false;false;63;95;191;;; -114935;1;0;false;false;;;;;; -114936;2;0;false;false;63;95;191;;; -114938;1;0;false;false;;;;;; -114939;3;0;false;false;63;95;191;;; -114942;1;0;false;false;;;;;; -114943;5;0;false;false;63;95;191;;; -114948;1;0;false;false;;;;;; -114949;5;0;false;false;63;95;191;;; -114954;1;0;false;false;;;;;; -114955;6;0;false;false;63;95;191;;; -114961;1;0;false;false;;;;;; -114962;2;0;false;false;63;95;191;;; -114964;1;0;false;false;;;;;; -114965;3;0;false;false;63;95;191;;; -114968;1;0;false;false;;;;;; -114969;6;0;false;false;63;95;191;;; -114975;4;0;false;false;;;;;; -114979;1;0;false;false;63;95;191;;; -114980;1;0;false;false;;;;;; -114981;4;0;false;false;63;95;191;;; -114985;1;0;false;false;;;;;; -114986;2;0;false;false;63;95;191;;; -114988;1;0;false;false;;;;;; -114989;1;0;false;false;63;95;191;;; -114990;1;0;false;false;;;;;; -114991;10;0;false;false;63;95;191;;; -115001;3;0;false;false;;;;;; -115004;1;0;false;false;63;95;191;;; -115005;1;0;false;false;;;;;; -115006;7;0;false;false;63;95;191;;; -115013;1;0;false;false;;;;;; -115014;8;0;false;false;63;95;191;;; -115022;1;0;false;false;;;;;; -115023;6;0;false;false;63;95;191;;; -115029;1;0;false;false;;;;;; -115030;9;0;false;false;63;95;191;;; -115039;1;0;false;false;;;;;; -115040;3;0;false;false;63;95;191;;; -115043;1;0;false;false;;;;;; -115044;5;0;false;false;63;95;191;;; -115049;1;0;false;false;;;;;; -115050;7;0;false;false;63;95;191;;; -115057;1;0;false;false;;;;;; -115058;9;0;false;false;63;95;191;;; -115067;1;0;false;false;;;;;; -115068;10;0;false;false;63;95;191;;; -115078;4;0;false;false;;;;;; -115082;1;0;false;false;63;95;191;;; -115083;1;0;false;false;;;;;; -115084;6;0;false;false;63;95;191;;; -115090;1;0;false;false;;;;;; -115091;3;0;false;false;63;95;191;;; -115094;1;0;false;false;;;;;; -115095;7;0;false;false;63;95;191;;; -115102;1;0;false;false;;;;;; -115103;6;0;false;false;63;95;191;;; -115109;1;0;false;false;;;;;; -115110;2;0;false;false;63;95;191;;; -115112;1;0;false;false;;;;;; -115113;1;0;false;false;63;95;191;;; -115114;1;0;false;false;;;;;; -115115;4;0;false;false;63;95;191;;; -115119;1;0;false;false;;;;;; -115120;7;0;false;false;63;95;191;;; -115127;4;0;false;false;;;;;; -115131;1;0;false;false;63;95;191;;; -115132;1;0;false;false;;;;;; -115133;9;0;false;false;63;95;191;;; -115142;1;0;false;false;;;;;; -115143;3;0;false;false;63;95;191;;; -115146;1;0;false;false;;;;;; -115147;7;0;false;false;63;95;191;;; -115154;1;0;false;false;;;;;; -115155;8;0;false;false;63;95;191;;; -115163;1;0;false;false;;;;;; -115164;2;0;false;false;63;95;191;;; -115166;1;0;false;false;;;;;; -115167;4;0;false;false;63;95;191;;; -115171;1;0;false;false;;;;;; -115172;2;0;false;false;63;95;191;;; -115174;1;0;false;false;;;;;; -115175;4;0;false;false;63;95;191;;; -115179;1;0;false;false;;;;;; -115180;5;0;false;false;63;95;191;;; -115185;1;0;false;false;;;;;; -115186;5;0;false;false;63;95;191;;; -115191;1;0;false;false;;;;;; -115192;2;0;false;false;63;95;191;;; -115194;1;0;false;false;;;;;; -115195;12;0;false;false;63;95;191;;; -115207;3;0;false;false;;;;;; -115210;1;0;false;false;63;95;191;;; -115211;1;0;false;false;;;;;; -115212;3;0;false;false;127;127;159;;; -115215;3;0;false;false;;;;;; -115218;1;0;false;false;63;95;191;;; -115219;3;0;false;false;;;;;; -115222;1;0;false;false;63;95;191;;; -115223;1;0;false;false;;;;;; -115224;7;1;false;false;127;159;191;;; -115231;4;0;false;false;63;95;191;;; -115235;1;0;false;false;;;;;; -115236;4;0;false;false;63;95;191;;; -115240;1;0;false;false;;;;;; -115241;2;0;false;false;63;95;191;;; -115243;1;0;false;false;;;;;; -115244;3;0;false;false;63;95;191;;; -115247;1;0;false;false;;;;;; -115248;4;0;false;false;63;95;191;;; -115252;1;0;false;false;;;;;; -115253;2;0;false;false;63;95;191;;; -115255;1;0;false;false;;;;;; -115256;9;0;false;false;63;95;191;;; -115265;1;0;false;false;;;;;; -115266;3;0;false;false;63;95;191;;; -115269;1;0;false;false;;;;;; -115270;6;0;false;false;63;95;191;;; -115276;1;0;false;false;;;;;; -115277;2;0;false;false;63;95;191;;; -115279;3;0;false;false;;;;;; -115282;1;0;false;false;63;95;191;;; -115283;1;0;false;false;;;;;; -115284;7;1;false;false;127;159;191;;; -115291;10;0;false;false;63;95;191;;; -115301;1;0;false;false;;;;;; -115302;6;0;false;false;63;95;191;;; -115308;1;0;false;false;;;;;; -115309;2;0;false;false;63;95;191;;; -115311;1;0;false;false;;;;;; -115312;3;0;false;false;63;95;191;;; -115315;1;0;false;false;;;;;; -115316;5;0;false;false;63;95;191;;; -115321;1;0;false;false;;;;;; -115322;9;0;false;false;63;95;191;;; -115331;1;0;false;false;;;;;; -115332;2;0;false;false;63;95;191;;; -115334;1;0;false;false;;;;;; -115335;3;0;false;false;63;95;191;;; -115338;1;0;false;false;;;;;; -115339;5;0;false;false;63;95;191;;; -115344;4;0;false;false;;;;;; -115348;1;0;false;false;63;95;191;;; -115349;2;0;false;false;;;;;; -115351;1;0;false;false;63;95;191;;; -115352;1;0;false;false;;;;;; -115353;5;0;false;false;63;95;191;;; -115358;1;0;false;false;;;;;; -115359;4;0;false;false;63;95;191;;; -115363;1;0;false;false;;;;;; -115364;3;0;false;false;63;95;191;;; -115367;1;0;false;false;;;;;; -115368;9;0;false;false;63;95;191;;; -115377;1;0;false;false;;;;;; -115378;2;0;false;false;63;95;191;;; -115380;1;0;false;false;;;;;; -115381;3;0;false;false;63;95;191;;; -115384;1;0;false;false;;;;;; -115385;9;0;false;false;63;95;191;;; -115394;3;0;false;false;;;;;; -115397;1;0;false;false;63;95;191;;; -115398;1;0;false;false;;;;;; -115399;7;1;false;false;127;159;191;;; -115406;11;0;false;false;63;95;191;;; -115417;1;0;false;false;;;;;; -115418;1;0;false;false;63;95;191;;; -115419;1;0;false;false;;;;;; -115420;8;0;false;false;63;95;191;;; -115428;1;0;false;false;;;;;; -115429;2;0;false;false;63;95;191;;; -115431;1;0;false;false;;;;;; -115432;3;0;false;false;63;95;191;;; -115435;1;0;false;false;;;;;; -115436;4;0;false;false;63;95;191;;; -115440;3;0;false;false;;;;;; -115443;1;0;false;false;63;95;191;;; -115444;1;0;false;false;;;;;; -115445;8;1;false;false;127;159;191;;; -115453;5;0;false;false;63;95;191;;; -115458;1;0;false;false;;;;;; -115459;6;0;false;false;63;95;191;;; -115465;1;0;false;false;;;;;; -115466;2;0;false;false;63;95;191;;; -115468;1;0;false;false;;;;;; -115469;3;0;false;false;63;95;191;;; -115472;1;0;false;false;;;;;; -115473;1;0;false;false;63;95;191;;; -115474;1;0;false;false;;;;;; -115475;8;0;false;false;63;95;191;;; -115483;1;0;false;false;;;;;; -115484;8;0;false;false;63;95;191;;; -115492;1;0;false;false;;;;;; -115493;2;0;false;false;63;95;191;;; -115495;1;0;false;false;;;;;; -115496;3;0;false;false;63;95;191;;; -115499;1;0;false;false;;;;;; -115500;5;0;false;false;63;95;191;;; -115505;1;0;false;false;;;;;; -115506;2;0;false;false;63;95;191;;; -115508;1;0;false;false;;;;;; -115509;3;0;false;false;63;95;191;;; -115512;1;0;false;false;;;;;; -115513;5;0;false;false;63;95;191;;; -115518;3;0;false;false;;;;;; -115521;2;0;false;false;63;95;191;;; -115523;2;0;false;false;;;;;; -115525;3;1;false;false;127;0;85;;; -115528;1;0;false;false;;;;;; -115529;19;0;false;false;0;0;0;;; -115548;1;0;false;false;;;;;; -115549;5;0;false;false;0;0;0;;; -115554;1;0;false;false;;;;;; -115555;3;1;false;false;127;0;85;;; -115558;1;0;false;false;;;;;; -115559;11;0;false;false;0;0;0;;; -115570;1;0;false;false;;;;;; -115571;3;1;false;false;127;0;85;;; -115574;1;0;false;false;;;;;; -115575;12;0;false;false;0;0;0;;; -115587;1;0;false;false;;;;;; -115588;1;0;false;false;0;0;0;;; -115589;3;0;false;false;;;;;; -115592;3;1;false;false;127;0;85;;; -115595;1;0;false;false;;;;;; -115596;1;0;false;false;0;0;0;;; -115597;1;0;false;false;;;;;; -115598;1;0;false;false;0;0;0;;; -115599;1;0;false;false;;;;;; -115600;11;0;false;false;0;0;0;;; -115611;1;0;false;false;;;;;; -115612;1;0;false;false;0;0;0;;; -115613;1;0;false;false;;;;;; -115614;10;0;false;false;0;0;0;;; -115624;1;0;false;false;;;;;; -115625;1;0;false;false;0;0;0;;; -115626;1;0;false;false;;;;;; -115627;23;0;false;false;0;0;0;;; -115650;3;0;false;false;;;;;; -115653;10;0;false;false;0;0;0;;; -115663;1;0;false;false;;;;;; -115664;6;0;false;false;0;0;0;;; -115670;1;0;false;false;;;;;; -115671;1;0;false;false;0;0;0;;; -115672;1;0;false;false;;;;;; -115673;28;0;false;false;0;0;0;;; -115701;1;0;false;false;;;;;; -115702;12;0;false;false;0;0;0;;; -115714;3;0;false;false;;;;;; -115717;3;1;false;false;127;0;85;;; -115720;2;0;false;false;0;0;0;;; -115722;1;0;false;false;;;;;; -115723;8;0;false;false;0;0;0;;; -115731;1;0;false;false;;;;;; -115732;1;0;false;false;0;0;0;;; -115733;1;0;false;false;;;;;; -115734;3;1;false;false;127;0;85;;; -115737;1;0;false;false;;;;;; -115738;3;1;false;false;127;0;85;;; -115741;4;0;false;false;0;0;0;;; -115745;3;0;false;false;;;;;; -115748;3;1;false;false;127;0;85;;; -115751;1;0;false;false;;;;;; -115752;12;0;false;false;0;0;0;;; -115764;1;0;false;false;;;;;; -115765;1;0;false;false;0;0;0;;; -115766;1;0;false;false;;;;;; -115767;19;0;false;false;0;0;0;;; -115786;1;0;false;false;;;;;; -115787;2;0;false;false;0;0;0;;; -115789;1;0;false;false;;;;;; -115790;10;0;false;false;0;0;0;;; -115800;3;0;false;false;;;;;; -115803;9;0;false;false;0;0;0;;; -115812;1;0;false;false;;;;;; -115813;1;0;false;false;0;0;0;;; -115814;1;0;false;false;;;;;; -115815;5;1;false;false;127;0;85;;; -115820;1;0;false;false;0;0;0;;; -115821;3;0;false;false;;;;;; -115824;2;1;false;false;127;0;85;;; -115826;1;0;false;false;;;;;; -115827;12;0;false;false;0;0;0;;; -115839;1;0;false;false;;;;;; -115840;2;0;false;false;0;0;0;;; -115842;1;0;false;false;;;;;; -115843;2;0;false;false;0;0;0;;; -115845;1;0;false;false;;;;;; -115846;1;0;false;false;0;0;0;;; -115847;4;0;false;false;;;;;; -115851;3;1;false;false;127;0;85;;; -115854;1;0;false;false;;;;;; -115855;10;0;false;false;0;0;0;;; -115865;1;0;false;false;;;;;; -115866;1;0;false;false;0;0;0;;; -115867;1;0;false;false;;;;;; -115868;14;0;false;false;0;0;0;;; -115882;4;0;false;false;;;;;; -115886;2;1;false;false;127;0;85;;; -115888;1;0;false;false;;;;;; -115889;13;0;false;false;0;0;0;;; -115902;1;0;false;false;;;;;; -115903;1;0;false;false;0;0;0;;; -115904;1;0;false;false;;;;;; -115905;11;0;false;false;0;0;0;;; -115916;1;0;false;false;;;;;; -115917;2;0;false;false;0;0;0;;; -115919;1;0;false;false;;;;;; -115920;11;0;false;false;0;0;0;;; -115931;1;0;false;false;;;;;; -115932;1;0;false;false;0;0;0;;; -115933;5;0;false;false;;;;;; -115938;12;0;false;false;0;0;0;;; -115950;1;0;false;false;;;;;; -115951;1;0;false;false;0;0;0;;; -115952;1;0;false;false;;;;;; -115953;11;0;false;false;0;0;0;;; -115964;5;0;false;false;;;;;; -115969;9;0;false;false;0;0;0;;; -115978;1;0;false;false;;;;;; -115979;1;0;false;false;0;0;0;;; -115980;1;0;false;false;;;;;; -115981;4;1;false;false;127;0;85;;; -115985;1;0;false;false;0;0;0;;; -115986;4;0;false;false;;;;;; -115990;1;0;false;false;0;0;0;;; -115991;1;0;false;false;;;;;; -115992;4;1;false;false;127;0;85;;; -115996;1;0;false;false;;;;;; -115997;1;0;false;false;0;0;0;;; -115998;5;0;false;false;;;;;; -116003;3;1;false;false;127;0;85;;; -116006;1;0;false;false;;;;;; -116007;6;0;false;false;0;0;0;;; -116013;5;0;false;false;;;;;; -116018;3;1;false;false;127;0;85;;; -116021;1;0;false;false;;;;;; -116022;6;0;false;false;0;0;0;;; -116028;1;0;false;false;;;;;; -116029;1;0;false;false;0;0;0;;; -116030;1;0;false;false;;;;;; -116031;13;0;false;false;0;0;0;;; -116044;5;0;false;false;;;;;; -116049;5;1;false;false;127;0;85;;; -116054;1;0;false;false;;;;;; -116055;7;0;false;false;0;0;0;;; -116062;1;0;false;false;;;;;; -116063;1;0;false;false;0;0;0;;; -116064;1;0;false;false;;;;;; -116065;1;0;false;false;0;0;0;;; -116066;1;0;false;false;;;;;; -116067;2;0;false;false;0;0;0;;; -116069;1;0;false;false;;;;;; -116070;39;0;false;false;0;0;0;;; -116109;1;0;false;false;;;;;; -116110;9;0;false;false;0;0;0;;; -116119;5;0;false;false;;;;;; -116124;2;1;false;false;127;0;85;;; -116126;1;0;false;false;;;;;; -116127;7;0;false;false;0;0;0;;; -116134;1;0;false;false;;;;;; -116135;2;0;false;false;0;0;0;;; -116137;1;0;false;false;;;;;; -116138;1;0;false;false;0;0;0;;; -116139;1;0;false;false;;;;;; -116140;2;0;false;false;0;0;0;;; -116142;1;0;false;false;;;;;; -116143;39;0;false;false;0;0;0;;; -116182;1;0;false;false;;;;;; -116183;1;0;false;false;0;0;0;;; -116184;6;0;false;false;;;;;; -116190;5;0;false;false;0;0;0;;; -116195;1;0;false;false;;;;;; -116196;1;0;false;false;0;0;0;;; -116197;1;0;false;false;;;;;; -116198;12;0;false;false;0;0;0;;; -116210;1;0;false;false;;;;;; -116211;1;0;false;false;0;0;0;;; -116212;1;0;false;false;;;;;; -116213;1;0;false;false;0;0;0;;; -116214;1;0;false;false;;;;;; -116215;1;0;false;false;0;0;0;;; -116216;1;0;false;false;;;;;; -116217;2;0;false;false;0;0;0;;; -116219;5;0;false;false;;;;;; -116224;1;0;false;false;0;0;0;;; -116225;1;0;false;false;;;;;; -116226;4;1;false;false;127;0;85;;; -116230;1;0;false;false;;;;;; -116231;1;0;false;false;0;0;0;;; -116232;6;0;false;false;;;;;; -116238;5;0;false;false;0;0;0;;; -116243;1;0;false;false;;;;;; -116244;1;0;false;false;0;0;0;;; -116245;1;0;false;false;;;;;; -116246;23;0;false;false;0;0;0;;; -116269;1;0;false;false;;;;;; -116270;1;0;false;false;0;0;0;;; -116271;1;0;false;false;;;;;; -116272;4;0;false;false;0;0;0;;; -116276;5;0;false;false;;;;;; -116281;1;0;false;false;0;0;0;;; -116282;5;0;false;false;;;;;; -116287;12;0;false;false;0;0;0;;; -116299;1;0;false;false;;;;;; -116300;2;0;false;false;0;0;0;;; -116302;1;0;false;false;;;;;; -116303;12;0;false;false;0;0;0;;; -116315;5;0;false;false;;;;;; -116320;3;1;false;false;127;0;85;;; -116323;1;0;false;false;;;;;; -116324;13;0;false;false;0;0;0;;; -116337;1;0;false;false;;;;;; -116338;1;0;false;false;0;0;0;;; -116339;1;0;false;false;;;;;; -116340;29;0;false;false;0;0;0;;; -116369;1;0;false;false;;;;;; -116370;1;0;false;false;0;0;0;;; -116371;1;0;false;false;;;;;; -116372;4;0;false;false;0;0;0;;; -116376;5;0;false;false;;;;;; -116381;9;0;false;false;0;0;0;;; -116390;2;0;false;false;;;;;; -116392;1;0;false;false;0;0;0;;; -116393;1;0;false;false;;;;;; -116394;6;0;false;false;0;0;0;;; -116400;1;0;false;false;;;;;; -116401;1;0;false;false;0;0;0;;; -116402;1;0;false;false;;;;;; -116403;14;0;false;false;0;0;0;;; -116417;1;0;false;false;;;;;; -116418;2;0;false;false;0;0;0;;; -116420;1;0;false;false;;;;;; -116421;2;0;false;false;0;0;0;;; -116423;4;0;false;false;;;;;; -116427;1;0;false;false;0;0;0;;; -116428;3;0;false;false;;;;;; -116431;1;0;false;false;0;0;0;;; -116432;3;0;false;false;;;;;; -116435;35;0;false;false;0;0;0;;; -116470;3;0;false;false;;;;;; -116473;6;1;false;false;127;0;85;;; -116479;1;0;false;false;;;;;; -116480;13;0;false;false;0;0;0;;; -116493;2;0;false;false;;;;;; -116495;1;0;false;false;0;0;0;;; -116496;2;0;false;false;;;;;; -116498;3;0;false;false;63;95;191;;; -116501;3;0;false;false;;;;;; -116504;1;0;false;false;63;95;191;;; -116505;1;0;false;false;;;;;; -116506;7;0;false;false;63;95;191;;; -116513;1;0;false;false;;;;;; -116514;3;0;false;false;63;95;191;;; -116517;1;0;false;false;;;;;; -116518;5;0;false;false;63;95;191;;; -116523;1;0;false;false;;;;;; -116524;6;0;false;false;63;95;191;;; -116530;3;0;false;false;;;;;; -116533;1;0;false;false;63;95;191;;; -116534;1;0;false;false;;;;;; -116535;3;0;false;false;127;127;159;;; -116538;3;0;false;false;;;;;; -116541;1;0;false;false;63;95;191;;; -116542;3;0;false;false;;;;;; -116545;1;0;false;false;63;95;191;;; -116546;1;0;false;false;;;;;; -116547;8;1;false;false;127;159;191;;; -116555;3;0;false;false;63;95;191;;; -116558;1;0;false;false;;;;;; -116559;5;0;false;false;63;95;191;;; -116564;1;0;false;false;;;;;; -116565;6;0;false;false;63;95;191;;; -116571;1;0;false;false;;;;;; -116572;1;0;false;false;63;95;191;;; -116573;1;0;false;false;;;;;; -116574;2;0;false;false;63;95;191;;; -116576;1;0;false;false;;;;;; -116577;5;0;false;false;63;95;191;;; -116582;1;0;false;false;;;;;; -116583;2;0;false;false;63;95;191;;; -116585;1;0;false;false;;;;;; -116586;5;0;false;false;63;95;191;;; -116591;3;0;false;false;;;;;; -116594;2;0;false;false;63;95;191;;; -116596;2;0;false;false;;;;;; -116598;3;1;false;false;127;0;85;;; -116601;1;0;false;false;;;;;; -116602;15;0;false;false;0;0;0;;; -116617;1;0;false;false;;;;;; -116618;1;0;false;false;0;0;0;;; -116619;3;0;false;false;;;;;; -116622;5;0;false;false;0;0;0;;; -116627;1;0;false;false;;;;;; -116628;5;0;false;false;0;0;0;;; -116633;1;0;false;false;;;;;; -116634;1;0;false;false;0;0;0;;; -116635;1;0;false;false;;;;;; -116636;11;0;false;false;0;0;0;;; -116647;3;0;false;false;;;;;; -116650;2;1;false;false;127;0;85;;; -116652;1;0;false;false;;;;;; -116653;6;0;false;false;0;0;0;;; -116659;1;0;false;false;;;;;; -116660;2;0;false;false;0;0;0;;; -116662;1;0;false;false;;;;;; -116663;4;1;false;false;127;0;85;;; -116667;1;0;false;false;0;0;0;;; -116668;1;0;false;false;;;;;; -116669;6;1;false;false;127;0;85;;; -116675;1;0;false;false;;;;;; -116676;2;0;false;false;0;0;0;;; -116678;3;0;false;false;;;;;; -116681;6;1;false;false;127;0;85;;; -116687;1;0;false;false;;;;;; -116688;18;0;false;false;0;0;0;;; -116706;2;0;false;false;;;;;; -116708;1;0;false;false;0;0;0;;; -116709;2;0;false;false;;;;;; -116711;6;0;false;false;0;0;0;;; -116717;1;0;false;false;;;;;; -116718;20;0;false;false;0;0;0;;; -116738;3;1;false;false;127;0;85;;; -116741;1;0;false;false;;;;;; -116742;14;0;false;false;0;0;0;;; -116756;1;0;false;false;;;;;; -116757;1;0;false;false;0;0;0;;; -116758;3;0;false;false;;;;;; -116761;12;0;false;false;0;0;0;;; -116773;1;0;false;false;;;;;; -116774;17;0;false;false;0;0;0;;; -116791;1;0;false;false;;;;;; -116792;1;0;false;false;0;0;0;;; -116793;1;0;false;false;;;;;; -116794;27;0;false;false;0;0;0;;; -116821;3;0;false;false;;;;;; -116824;6;1;false;false;127;0;85;;; -116830;1;0;false;false;;;;;; -116831;40;0;false;false;0;0;0;;; -116871;1;0;false;false;;;;;; -116872;15;0;false;false;0;0;0;;; -116887;2;0;false;false;;;;;; -116889;1;0;false;false;0;0;0;;; -116890;2;0;false;false;;;;;; -116892;3;1;false;false;127;0;85;;; -116895;1;0;false;false;;;;;; -116896;15;0;false;false;0;0;0;;; -116911;3;1;false;false;127;0;85;;; -116914;1;0;false;false;;;;;; -116915;7;0;false;false;0;0;0;;; -116922;1;0;false;false;;;;;; -116923;3;1;false;false;127;0;85;;; -116926;1;0;false;false;;;;;; -116927;10;0;false;false;0;0;0;;; -116937;1;0;false;false;;;;;; -116938;1;0;false;false;0;0;0;;; -116939;3;0;false;false;;;;;; -116942;6;0;false;false;0;0;0;;; -116948;1;0;false;false;;;;;; -116949;4;0;false;false;0;0;0;;; -116953;1;0;false;false;;;;;; -116954;1;0;false;false;0;0;0;;; -116955;1;0;false;false;;;;;; -116956;27;0;false;false;0;0;0;;; -116983;3;0;false;false;;;;;; -116986;3;1;false;false;127;0;85;;; -116989;1;0;false;false;;;;;; -116990;10;0;false;false;0;0;0;;; -117000;1;0;false;false;;;;;; -117001;1;0;false;false;0;0;0;;; -117002;1;0;false;false;;;;;; -117003;35;0;false;false;0;0;0;;; -117038;4;0;false;false;;;;;; -117042;10;0;false;false;0;0;0;;; -117052;1;0;false;false;;;;;; -117053;6;0;false;false;0;0;0;;; -117059;1;0;false;false;;;;;; -117060;1;0;false;false;0;0;0;;; -117061;1;0;false;false;;;;;; -117062;28;0;false;false;0;0;0;;; -117090;1;0;false;false;;;;;; -117091;12;0;false;false;0;0;0;;; -117103;3;0;false;false;;;;;; -117106;6;0;false;false;0;0;0;;; -117112;1;0;false;false;;;;;; -117113;2;0;false;false;0;0;0;;; -117115;1;0;false;false;;;;;; -117116;11;0;false;false;0;0;0;;; -117127;3;0;false;false;;;;;; -117130;6;0;false;false;0;0;0;;; -117136;1;0;false;false;;;;;; -117137;1;0;false;false;0;0;0;;; -117138;1;0;false;false;;;;;; -117139;28;0;false;false;0;0;0;;; -117167;1;0;false;false;;;;;; -117168;22;0;false;false;0;0;0;;; -117190;3;0;false;false;;;;;; -117193;6;0;false;false;0;0;0;;; -117199;1;0;false;false;;;;;; -117200;2;0;false;false;0;0;0;;; -117202;1;0;false;false;;;;;; -117203;11;0;false;false;0;0;0;;; -117214;3;0;false;false;;;;;; -117217;35;0;false;false;0;0;0;;; -117252;3;0;false;false;;;;;; -117255;6;1;false;false;127;0;85;;; -117261;1;0;false;false;;;;;; -117262;7;0;false;false;0;0;0;;; -117269;2;0;false;false;;;;;; -117271;1;0;false;false;0;0;0;;; -117272;2;0;false;false;;;;;; -117274;3;1;false;false;127;0;85;;; -117277;1;0;false;false;;;;;; -117278;19;0;false;false;0;0;0;;; -117297;3;1;false;false;127;0;85;;; -117300;1;0;false;false;;;;;; -117301;7;0;false;false;0;0;0;;; -117308;1;0;false;false;;;;;; -117309;3;1;false;false;127;0;85;;; -117312;1;0;false;false;;;;;; -117313;10;0;false;false;0;0;0;;; -117323;1;0;false;false;;;;;; -117324;1;0;false;false;0;0;0;;; -117325;3;0;false;false;;;;;; -117328;6;0;false;false;0;0;0;;; -117334;1;0;false;false;;;;;; -117335;4;0;false;false;0;0;0;;; -117339;1;0;false;false;;;;;; -117340;1;0;false;false;0;0;0;;; -117341;1;0;false;false;;;;;; -117342;27;0;false;false;0;0;0;;; -117369;3;0;false;false;;;;;; -117372;3;1;false;false;127;0;85;;; -117375;1;0;false;false;;;;;; -117376;10;0;false;false;0;0;0;;; -117386;1;0;false;false;;;;;; -117387;1;0;false;false;0;0;0;;; -117388;1;0;false;false;;;;;; -117389;35;0;false;false;0;0;0;;; -117424;4;0;false;false;;;;;; -117428;10;0;false;false;0;0;0;;; -117438;1;0;false;false;;;;;; -117439;6;0;false;false;0;0;0;;; -117445;1;0;false;false;;;;;; -117446;1;0;false;false;0;0;0;;; -117447;1;0;false;false;;;;;; -117448;28;0;false;false;0;0;0;;; -117476;1;0;false;false;;;;;; -117477;12;0;false;false;0;0;0;;; -117489;3;0;false;false;;;;;; -117492;6;0;false;false;0;0;0;;; -117498;1;0;false;false;;;;;; -117499;2;0;false;false;0;0;0;;; -117501;1;0;false;false;;;;;; -117502;11;0;false;false;0;0;0;;; -117513;3;0;false;false;;;;;; -117516;6;0;false;false;0;0;0;;; -117522;1;0;false;false;;;;;; -117523;1;0;false;false;0;0;0;;; -117524;1;0;false;false;;;;;; -117525;32;0;false;false;0;0;0;;; -117557;1;0;false;false;;;;;; -117558;22;0;false;false;0;0;0;;; -117580;3;0;false;false;;;;;; -117583;6;0;false;false;0;0;0;;; -117589;1;0;false;false;;;;;; -117590;2;0;false;false;0;0;0;;; -117592;1;0;false;false;;;;;; -117593;11;0;false;false;0;0;0;;; -117604;3;0;false;false;;;;;; -117607;35;0;false;false;0;0;0;;; -117642;3;0;false;false;;;;;; -117645;6;1;false;false;127;0;85;;; -117651;1;0;false;false;;;;;; -117652;7;0;false;false;0;0;0;;; -117659;2;0;false;false;;;;;; -117661;1;0;false;false;0;0;0;;; -117662;2;0;false;false;;;;;; -117664;3;0;false;false;63;95;191;;; -117667;3;0;false;false;;;;;; -117670;1;0;false;false;63;95;191;;; -117671;1;0;false;false;;;;;; -117672;7;0;false;false;63;95;191;;; -117679;1;0;false;false;;;;;; -117680;3;0;false;false;63;95;191;;; -117683;1;0;false;false;;;;;; -117684;7;0;false;false;63;95;191;;; -117691;1;0;false;false;;;;;; -117692;14;0;false;false;63;95;191;;; -117706;1;0;false;false;;;;;; -117707;4;0;false;false;63;95;191;;; -117711;1;0;false;false;;;;;; -117712;2;0;false;false;63;95;191;;; -117714;1;0;false;false;;;;;; -117715;4;0;false;false;63;95;191;;; -117719;1;0;false;false;;;;;; -117720;3;0;false;false;63;95;191;;; -117723;1;0;false;false;;;;;; -117724;4;0;false;false;63;95;191;;; -117728;1;0;false;false;;;;;; -117729;7;0;false;false;63;95;191;;; -117736;3;0;false;false;;;;;; -117739;1;0;false;false;63;95;191;;; -117740;1;0;false;false;;;;;; -117741;2;0;false;false;63;95;191;;; -117743;1;0;false;false;;;;;; -117744;4;0;false;false;63;95;191;;; -117748;1;0;false;false;;;;;; -117749;2;0;false;false;63;95;191;;; -117751;1;0;false;false;;;;;; -117752;2;0;false;false;63;95;191;;; -117754;1;0;false;false;;;;;; -117755;4;0;false;false;63;95;191;;; -117759;1;0;false;false;;;;;; -117760;7;0;false;false;63;95;191;;; -117767;1;0;false;false;;;;;; -117768;7;0;false;false;63;95;191;;; -117775;1;0;false;false;;;;;; -117776;14;0;false;false;63;95;191;;; -117790;1;0;false;false;;;;;; -117791;3;0;false;false;63;95;191;;; -117794;1;0;false;false;;;;;; -117795;4;0;false;false;63;95;191;;; -117799;1;0;false;false;;;;;; -117800;4;0;false;false;63;95;191;;; -117804;3;0;false;false;;;;;; -117807;1;0;false;false;63;95;191;;; -117808;1;0;false;false;;;;;; -117809;3;0;false;false;127;127;159;;; -117812;3;0;false;false;;;;;; -117815;1;0;false;false;63;95;191;;; -117816;3;0;false;false;;;;;; -117819;1;0;false;false;63;95;191;;; -117820;1;0;false;false;;;;;; -117821;8;1;false;false;127;159;191;;; -117829;7;0;false;false;63;95;191;;; -117836;1;0;false;false;;;;;; -117837;14;0;false;false;63;95;191;;; -117851;1;0;false;false;;;;;; -117852;4;0;false;false;63;95;191;;; -117856;1;0;false;false;;;;;; -117857;2;0;false;false;63;95;191;;; -117859;1;0;false;false;;;;;; -117860;4;0;false;false;63;95;191;;; -117864;1;0;false;false;;;;;; -117865;3;0;false;false;63;95;191;;; -117868;1;0;false;false;;;;;; -117869;4;0;false;false;63;95;191;;; -117873;1;0;false;false;;;;;; -117874;7;0;false;false;63;95;191;;; -117881;1;0;false;false;;;;;; -117882;2;0;false;false;63;95;191;;; -117884;1;0;false;false;;;;;; -117885;4;0;false;false;63;95;191;;; -117889;4;0;false;false;;;;;; -117893;1;0;false;false;63;95;191;;; -117894;1;0;false;false;;;;;; -117895;2;0;false;false;63;95;191;;; -117897;1;0;false;false;;;;;; -117898;2;0;false;false;63;95;191;;; -117900;1;0;false;false;;;;;; -117901;4;0;false;false;63;95;191;;; -117905;1;0;false;false;;;;;; -117906;7;0;false;false;63;95;191;;; -117913;1;0;false;false;;;;;; -117914;7;0;false;false;63;95;191;;; -117921;1;0;false;false;;;;;; -117922;14;0;false;false;63;95;191;;; -117936;1;0;false;false;;;;;; -117937;3;0;false;false;63;95;191;;; -117940;1;0;false;false;;;;;; -117941;4;0;false;false;63;95;191;;; -117945;1;0;false;false;;;;;; -117946;4;0;false;false;63;95;191;;; -117950;3;0;false;false;;;;;; -117953;1;0;false;false;63;95;191;;; -117954;1;0;false;false;;;;;; -117955;11;1;false;false;127;159;191;;; -117966;12;0;false;false;63;95;191;;; -117978;1;0;false;false;;;;;; -117979;4;0;false;false;127;127;159;;; -117983;3;0;false;false;;;;;; -117986;1;0;false;false;63;95;191;;; -117987;4;0;false;false;;;;;; -117991;4;0;false;false;127;127;159;;; -117995;21;0;false;false;63;95;191;;; -118016;1;0;false;false;;;;;; -118017;1;0;false;false;127;127;159;;; -118018;1;0;false;false;;;;;; -118019;2;0;false;false;63;95;191;;; -118021;1;0;false;false;;;;;; -118022;3;0;false;false;63;95;191;;; -118025;1;0;false;false;;;;;; -118026;8;0;false;false;63;95;191;;; -118034;1;0;false;false;;;;;; -118035;3;0;false;false;63;95;191;;; -118038;1;0;false;false;;;;;; -118039;4;0;false;false;63;95;191;;; -118043;1;0;false;false;;;;;; -118044;8;0;false;false;63;95;191;;; -118052;5;0;false;false;127;127;159;;; -118057;3;0;false;false;;;;;; -118060;1;0;false;false;63;95;191;;; -118061;4;0;false;false;;;;;; -118065;4;0;false;false;127;127;159;;; -118069;27;0;false;false;63;95;191;;; -118096;1;0;false;false;;;;;; -118097;1;0;false;false;127;127;159;;; -118098;1;0;false;false;;;;;; -118099;2;0;false;false;63;95;191;;; -118101;1;0;false;false;;;;;; -118102;3;0;false;false;63;95;191;;; -118105;1;0;false;false;;;;;; -118106;6;0;false;false;63;95;191;;; -118112;1;0;false;false;;;;;; -118113;4;0;false;false;63;95;191;;; -118117;1;0;false;false;;;;;; -118118;3;0;false;false;63;95;191;;; -118121;1;0;false;false;;;;;; -118122;6;0;false;false;63;95;191;;; -118128;1;0;false;false;;;;;; -118129;4;0;false;false;63;95;191;;; -118133;1;0;false;false;;;;;; -118134;7;0;false;false;63;95;191;;; -118141;1;0;false;false;;;;;; -118142;3;0;false;false;63;95;191;;; -118145;1;0;false;false;;;;;; -118146;8;0;false;false;63;95;191;;; -118154;5;0;false;false;127;127;159;;; -118159;3;0;false;false;;;;;; -118162;1;0;false;false;63;95;191;;; -118163;1;0;false;false;;;;;; -118164;5;0;false;false;127;127;159;;; -118169;3;0;false;false;;;;;; -118172;2;0;false;false;63;95;191;;; -118174;2;0;false;false;;;;;; -118176;6;1;false;false;127;0;85;;; -118182;1;0;false;false;;;;;; -118183;17;0;false;false;0;0;0;;; -118200;1;0;false;false;;;;;; -118201;12;0;false;false;0;0;0;;; -118213;1;0;false;false;;;;;; -118214;1;0;false;false;0;0;0;;; -118215;3;0;false;false;;;;;; -118218;14;0;false;false;0;0;0;;; -118232;6;0;false;false;;;;;; -118238;6;1;false;false;127;0;85;;; -118244;1;0;false;false;;;;;; -118245;15;0;false;false;0;0;0;;; -118260;2;0;false;false;;;;;; -118262;1;0;false;false;0;0;0;;; -118263;2;0;false;false;;;;;; -118265;3;0;false;false;63;95;191;;; -118268;4;0;false;false;;;;;; -118272;1;0;false;false;63;95;191;;; -118273;1;0;false;false;;;;;; -118274;7;0;false;false;63;95;191;;; -118281;1;0;false;false;;;;;; -118282;7;0;false;false;63;95;191;;; -118289;1;0;false;false;;;;;; -118290;3;0;false;false;63;95;191;;; -118293;1;0;false;false;;;;;; -118294;6;0;false;false;63;95;191;;; -118300;1;0;false;false;;;;;; -118301;10;0;false;false;63;95;191;;; -118311;1;0;false;false;;;;;; -118312;6;0;false;false;63;95;191;;; -118318;1;0;false;false;;;;;; -118319;5;0;false;false;63;95;191;;; -118324;1;0;false;false;;;;;; -118325;5;0;false;false;63;95;191;;; -118330;1;0;false;false;;;;;; -118331;9;0;false;false;63;95;191;;; -118340;3;0;false;false;;;;;; -118343;1;0;false;false;63;95;191;;; -118344;1;0;false;false;;;;;; -118345;3;0;false;false;127;127;159;;; -118348;3;0;false;false;;;;;; -118351;1;0;false;false;63;95;191;;; -118352;3;0;false;false;;;;;; -118355;1;0;false;false;63;95;191;;; -118356;1;0;false;false;;;;;; -118357;8;1;false;false;127;159;191;;; -118365;4;0;false;false;63;95;191;;; -118369;1;0;false;false;;;;;; -118370;2;0;false;false;63;95;191;;; -118372;1;0;false;false;;;;;; -118373;6;0;false;false;63;95;191;;; -118379;1;0;false;false;;;;;; -118380;8;0;false;false;63;95;191;;; -118388;1;0;false;false;;;;;; -118389;1;0;false;false;63;95;191;;; -118390;1;0;false;false;;;;;; -118391;4;0;false;false;63;95;191;;; -118395;1;0;false;false;;;;;; -118396;7;0;false;false;63;95;191;;; -118403;1;0;false;false;;;;;; -118404;3;0;false;false;63;95;191;;; -118407;1;0;false;false;;;;;; -118408;5;0;false;false;63;95;191;;; -118413;1;0;false;false;;;;;; -118414;5;0;false;false;63;95;191;;; -118419;1;0;false;false;;;;;; -118420;2;0;false;false;63;95;191;;; -118422;1;0;false;false;;;;;; -118423;6;0;false;false;63;95;191;;; -118429;1;0;false;false;;;;;; -118430;6;0;false;false;63;95;191;;; -118436;3;0;false;false;;;;;; -118439;1;0;false;false;63;95;191;;; -118440;1;0;false;false;;;;;; -118441;4;0;false;false;63;95;191;;; -118445;1;0;false;false;;;;;; -118446;3;0;false;false;63;95;191;;; -118449;1;0;false;false;;;;;; -118450;4;0;false;false;63;95;191;;; -118454;1;0;false;false;;;;;; -118455;6;0;false;false;63;95;191;;; -118461;1;0;false;false;;;;;; -118462;2;0;false;false;63;95;191;;; -118464;1;0;false;false;;;;;; -118465;7;0;false;false;63;95;191;;; -118472;1;0;false;false;;;;;; -118473;5;0;false;false;63;95;191;;; -118478;1;0;false;false;;;;;; -118479;6;0;false;false;63;95;191;;; -118485;3;0;false;false;;;;;; -118488;1;0;false;false;63;95;191;;; -118489;1;0;false;false;;;;;; -118490;11;1;false;false;127;159;191;;; -118501;12;0;false;false;63;95;191;;; -118513;1;0;false;false;;;;;; -118514;4;0;false;false;127;127;159;;; -118518;3;0;false;false;;;;;; -118521;1;0;false;false;63;95;191;;; -118522;4;0;false;false;;;;;; -118526;4;0;false;false;127;127;159;;; -118530;21;0;false;false;63;95;191;;; -118551;1;0;false;false;;;;;; -118552;1;0;false;false;127;127;159;;; -118553;1;0;false;false;;;;;; -118554;2;0;false;false;63;95;191;;; -118556;1;0;false;false;;;;;; -118557;3;0;false;false;63;95;191;;; -118560;1;0;false;false;;;;;; -118561;8;0;false;false;63;95;191;;; -118569;1;0;false;false;;;;;; -118570;3;0;false;false;63;95;191;;; -118573;1;0;false;false;;;;;; -118574;4;0;false;false;63;95;191;;; -118578;1;0;false;false;;;;;; -118579;8;0;false;false;63;95;191;;; -118587;5;0;false;false;127;127;159;;; -118592;3;0;false;false;;;;;; -118595;1;0;false;false;63;95;191;;; -118596;4;0;false;false;;;;;; -118600;4;0;false;false;127;127;159;;; -118604;27;0;false;false;63;95;191;;; -118631;1;0;false;false;;;;;; -118632;1;0;false;false;127;127;159;;; -118633;1;0;false;false;;;;;; -118634;2;0;false;false;63;95;191;;; -118636;1;0;false;false;;;;;; -118637;3;0;false;false;63;95;191;;; -118640;1;0;false;false;;;;;; -118641;6;0;false;false;63;95;191;;; -118647;1;0;false;false;;;;;; -118648;4;0;false;false;63;95;191;;; -118652;1;0;false;false;;;;;; -118653;3;0;false;false;63;95;191;;; -118656;1;0;false;false;;;;;; -118657;6;0;false;false;63;95;191;;; -118663;1;0;false;false;;;;;; -118664;4;0;false;false;63;95;191;;; -118668;1;0;false;false;;;;;; -118669;7;0;false;false;63;95;191;;; -118676;1;0;false;false;;;;;; -118677;3;0;false;false;63;95;191;;; -118680;1;0;false;false;;;;;; -118681;8;0;false;false;63;95;191;;; -118689;5;0;false;false;127;127;159;;; -118694;3;0;false;false;;;;;; -118697;1;0;false;false;63;95;191;;; -118698;1;0;false;false;;;;;; -118699;5;0;false;false;127;127;159;;; -118704;3;0;false;false;;;;;; -118707;2;0;false;false;63;95;191;;; -118709;2;0;false;false;;;;;; -118711;6;1;false;false;127;0;85;;; -118717;1;0;false;false;;;;;; -118718;7;1;false;false;127;0;85;;; -118725;1;0;false;false;;;;;; -118726;23;0;false;false;0;0;0;;; -118749;1;0;false;false;;;;;; -118750;1;0;false;false;0;0;0;;; -118751;3;0;false;false;;;;;; -118754;14;0;false;false;0;0;0;;; -118768;3;0;false;false;;;;;; -118771;6;1;false;false;127;0;85;;; -118777;1;0;false;false;;;;;; -118778;19;0;false;false;0;0;0;;; -118797;2;0;false;false;;;;;; -118799;1;0;false;false;0;0;0;;; -118800;2;0;false;false;;;;;; -118802;3;0;false;false;63;95;191;;; -118805;3;0;false;false;;;;;; -118808;1;0;false;false;63;95;191;;; -118809;1;0;false;false;;;;;; -118810;7;0;false;false;63;95;191;;; -118817;1;0;false;false;;;;;; -118818;7;0;false;false;63;95;191;;; -118825;1;0;false;false;;;;;; -118826;3;0;false;false;63;95;191;;; -118829;1;0;false;false;;;;;; -118830;6;0;false;false;63;95;191;;; -118836;1;0;false;false;;;;;; -118837;7;0;false;false;63;95;191;;; -118844;1;0;false;false;;;;;; -118845;3;0;false;false;63;95;191;;; -118848;1;0;false;false;;;;;; -118849;2;0;false;false;63;95;191;;; -118851;1;0;false;false;;;;;; -118852;7;0;false;false;63;95;191;;; -118859;3;0;false;false;;;;;; -118862;1;0;false;false;63;95;191;;; -118863;1;0;false;false;;;;;; -118864;3;0;false;false;127;127;159;;; -118867;3;0;false;false;;;;;; -118870;1;0;false;false;63;95;191;;; -118871;3;0;false;false;;;;;; -118874;1;0;false;false;63;95;191;;; -118875;1;0;false;false;;;;;; -118876;8;1;false;false;127;159;191;;; -118884;4;0;false;false;63;95;191;;; -118888;1;0;false;false;;;;;; -118889;2;0;false;false;63;95;191;;; -118891;1;0;false;false;;;;;; -118892;7;0;false;false;63;95;191;;; -118899;1;0;false;false;;;;;; -118900;3;0;false;false;63;95;191;;; -118903;1;0;false;false;;;;;; -118904;2;0;false;false;63;95;191;;; -118906;1;0;false;false;;;;;; -118907;7;0;false;false;63;95;191;;; -118914;1;0;false;false;;;;;; -118915;5;0;false;false;63;95;191;;; -118920;1;0;false;false;;;;;; -118921;9;0;false;false;63;95;191;;; -118930;3;0;false;false;;;;;; -118933;1;0;false;false;63;95;191;;; -118934;1;0;false;false;;;;;; -118935;11;1;false;false;127;159;191;;; -118946;12;0;false;false;63;95;191;;; -118958;1;0;false;false;;;;;; -118959;4;0;false;false;127;127;159;;; -118963;3;0;false;false;;;;;; -118966;1;0;false;false;63;95;191;;; -118967;4;0;false;false;;;;;; -118971;4;0;false;false;127;127;159;;; -118975;21;0;false;false;63;95;191;;; -118996;1;0;false;false;;;;;; -118997;1;0;false;false;127;127;159;;; -118998;1;0;false;false;;;;;; -118999;2;0;false;false;63;95;191;;; -119001;1;0;false;false;;;;;; -119002;3;0;false;false;63;95;191;;; -119005;1;0;false;false;;;;;; -119006;8;0;false;false;63;95;191;;; -119014;1;0;false;false;;;;;; -119015;3;0;false;false;63;95;191;;; -119018;1;0;false;false;;;;;; -119019;4;0;false;false;63;95;191;;; -119023;1;0;false;false;;;;;; -119024;8;0;false;false;63;95;191;;; -119032;5;0;false;false;127;127;159;;; -119037;3;0;false;false;;;;;; -119040;1;0;false;false;63;95;191;;; -119041;4;0;false;false;;;;;; -119045;4;0;false;false;127;127;159;;; -119049;27;0;false;false;63;95;191;;; -119076;1;0;false;false;;;;;; -119077;1;0;false;false;127;127;159;;; -119078;1;0;false;false;;;;;; -119079;2;0;false;false;63;95;191;;; -119081;1;0;false;false;;;;;; -119082;3;0;false;false;63;95;191;;; -119085;1;0;false;false;;;;;; -119086;6;0;false;false;63;95;191;;; -119092;1;0;false;false;;;;;; -119093;4;0;false;false;63;95;191;;; -119097;1;0;false;false;;;;;; -119098;3;0;false;false;63;95;191;;; -119101;1;0;false;false;;;;;; -119102;6;0;false;false;63;95;191;;; -119108;1;0;false;false;;;;;; -119109;4;0;false;false;63;95;191;;; -119113;1;0;false;false;;;;;; -119114;7;0;false;false;63;95;191;;; -119121;1;0;false;false;;;;;; -119122;3;0;false;false;63;95;191;;; -119125;1;0;false;false;;;;;; -119126;8;0;false;false;63;95;191;;; -119134;5;0;false;false;127;127;159;;; -119139;3;0;false;false;;;;;; -119142;1;0;false;false;63;95;191;;; -119143;1;0;false;false;;;;;; -119144;5;0;false;false;127;127;159;;; -119149;3;0;false;false;;;;;; -119152;2;0;false;false;63;95;191;;; -119154;2;0;false;false;;;;;; -119156;6;1;false;false;127;0;85;;; -119162;1;0;false;false;;;;;; -119163;7;1;false;false;127;0;85;;; -119170;1;0;false;false;;;;;; -119171;13;0;false;false;0;0;0;;; -119184;1;0;false;false;;;;;; -119185;1;0;false;false;0;0;0;;; -119186;3;0;false;false;;;;;; -119189;14;0;false;false;0;0;0;;; -119203;3;0;false;false;;;;;; -119206;6;1;false;false;127;0;85;;; -119212;1;0;false;false;;;;;; -119213;9;0;false;false;0;0;0;;; -119222;2;0;false;false;;;;;; -119224;1;0;false;false;0;0;0;;; -119225;2;0;false;false;;;;;; -119227;6;1;false;false;127;0;85;;; -119233;1;0;false;false;;;;;; -119234;5;0;false;false;0;0;0;;; -119239;1;0;false;false;;;;;; -119240;15;0;false;false;0;0;0;;; -119255;1;0;false;false;;;;;; -119256;1;0;false;false;0;0;0;;; -119257;3;0;false;false;;;;;; -119260;14;0;false;false;0;0;0;;; -119274;3;0;false;false;;;;;; -119277;2;1;false;false;127;0;85;;; -119279;1;0;false;false;;;;;; -119280;11;0;false;false;0;0;0;;; -119291;1;0;false;false;;;;;; -119292;2;0;false;false;0;0;0;;; -119294;1;0;false;false;;;;;; -119295;4;1;false;false;127;0;85;;; -119299;1;0;false;false;0;0;0;;; -119300;1;0;false;false;;;;;; -119301;1;0;false;false;0;0;0;;; -119302;4;0;false;false;;;;;; -119306;6;1;false;false;127;0;85;;; -119312;1;0;false;false;;;;;; -119313;55;0;false;false;0;0;0;;; -119368;3;0;false;false;;;;;; -119371;1;0;false;false;0;0;0;;; -119372;3;0;false;false;;;;;; -119375;6;1;false;false;127;0;85;;; -119381;1;0;false;false;;;;;; -119382;11;0;false;false;0;0;0;;; -119393;2;0;false;false;;;;;; -119395;1;0;false;false;0;0;0;;; -119396;2;0;false;false;;;;;; -119398;3;0;false;false;63;95;191;;; -119401;4;0;false;false;;;;;; -119405;1;0;false;false;63;95;191;;; -119406;1;0;false;false;;;;;; -119407;6;0;false;false;63;95;191;;; -119413;1;0;false;false;;;;;; -119414;1;0;false;false;63;95;191;;; -119415;1;0;false;false;;;;;; -119416;2;0;false;false;63;95;191;;; -119418;1;0;false;false;;;;;; -119419;2;0;false;false;63;95;191;;; -119421;1;0;false;false;;;;;; -119422;3;0;false;false;63;95;191;;; -119425;1;0;false;false;;;;;; -119426;3;0;false;false;63;95;191;;; -119429;1;0;false;false;;;;;; -119430;9;0;false;false;63;95;191;;; -119439;1;0;false;false;;;;;; -119440;3;0;false;false;63;95;191;;; -119443;1;0;false;false;;;;;; -119444;6;0;false;false;63;95;191;;; -119450;1;0;false;false;;;;;; -119451;3;0;false;false;63;95;191;;; -119454;1;0;false;false;;;;;; -119455;6;0;false;false;63;95;191;;; -119461;1;0;false;false;;;;;; -119462;4;0;false;false;63;95;191;;; -119466;1;0;false;false;;;;;; -119467;5;0;false;false;63;95;191;;; -119472;1;0;false;false;;;;;; -119473;2;0;false;false;63;95;191;;; -119475;3;0;false;false;;;;;; -119478;1;0;false;false;63;95;191;;; -119479;1;0;false;false;;;;;; -119480;9;0;false;false;63;95;191;;; -119489;1;0;false;false;;;;;; -119490;3;0;false;false;63;95;191;;; -119493;1;0;false;false;;;;;; -119494;7;0;false;false;63;95;191;;; -119501;1;0;false;false;;;;;; -119502;6;0;false;false;63;95;191;;; -119508;3;0;false;false;;;;;; -119511;1;0;false;false;63;95;191;;; -119512;1;0;false;false;;;;;; -119513;3;0;false;false;127;127;159;;; -119516;3;0;false;false;;;;;; -119519;1;0;false;false;63;95;191;;; -119520;3;0;false;false;;;;;; -119523;1;0;false;false;63;95;191;;; -119524;1;0;false;false;;;;;; -119525;8;1;false;false;127;159;191;;; -119533;3;0;false;false;63;95;191;;; -119536;3;0;false;false;;;;;; -119539;2;0;false;false;63;95;191;;; -119541;2;0;false;false;;;;;; -119543;2;0;false;false;0;0;0;;; -119545;1;0;false;false;;;;;; -119546;7;0;false;false;0;0;0;;; -119553;1;0;false;false;;;;;; -119554;1;0;false;false;0;0;0;;; -119555;3;0;false;false;;;;;; -119558;6;1;false;false;127;0;85;;; -119564;1;0;false;false;;;;;; -119565;3;1;false;false;127;0;85;;; -119568;1;0;false;false;;;;;; -119569;3;0;false;false;0;0;0;;; -119572;4;1;false;false;127;0;85;;; -119576;2;0;false;false;0;0;0;;; -119578;2;0;false;false;;;;;; -119580;1;0;false;false;0;0;0;;; -119581;2;0;false;false;;;;;; -119583;3;0;false;false;63;95;191;;; -119586;4;0;false;false;;;;;; -119590;1;0;false;false;63;95;191;;; -119591;1;0;false;false;;;;;; -119592;7;0;false;false;63;95;191;;; -119599;1;0;false;false;;;;;; -119600;3;0;false;false;63;95;191;;; -119603;1;0;false;false;;;;;; -119604;10;0;false;false;63;95;191;;; -119614;1;0;false;false;;;;;; -119615;6;0;false;false;63;95;191;;; -119621;1;0;false;false;;;;;; -119622;10;0;false;false;63;95;191;;; -119632;3;0;false;false;;;;;; -119635;1;0;false;false;63;95;191;;; -119636;1;0;false;false;;;;;; -119637;3;0;false;false;127;127;159;;; -119640;3;0;false;false;;;;;; -119643;1;0;false;false;63;95;191;;; -119644;3;0;false;false;;;;;; -119647;1;0;false;false;63;95;191;;; -119648;1;0;false;false;;;;;; -119649;8;1;false;false;127;159;191;;; -119657;10;0;false;false;63;95;191;;; -119667;1;0;false;false;;;;;; -119668;6;0;false;false;63;95;191;;; -119674;1;0;false;false;;;;;; -119675;10;0;false;false;63;95;191;;; -119685;3;0;false;false;;;;;; -119688;2;0;false;false;63;95;191;;; -119690;2;0;false;false;;;;;; -119692;3;1;false;false;127;0;85;;; -119695;1;0;false;false;;;;;; -119696;24;0;false;false;0;0;0;;; -119720;1;0;false;false;;;;;; -119721;1;0;false;false;0;0;0;;; -119722;3;0;false;false;;;;;; -119725;2;0;false;false;0;0;0;;; -119727;1;0;false;false;;;;;; -119728;2;0;false;false;0;0;0;;; -119730;1;0;false;false;;;;;; -119731;1;0;false;false;0;0;0;;; -119732;1;0;false;false;;;;;; -119733;8;0;false;false;0;0;0;;; -119741;3;0;false;false;;;;;; -119744;3;1;false;false;127;0;85;;; -119747;1;0;false;false;;;;;; -119748;9;0;false;false;0;0;0;;; -119757;1;0;false;false;;;;;; -119758;1;0;false;false;0;0;0;;; -119759;1;0;false;false;;;;;; -119760;42;0;false;false;0;0;0;;; -119802;6;0;false;false;;;;;; -119808;13;0;false;false;0;0;0;;; -119821;3;0;false;false;;;;;; -119824;6;1;false;false;127;0;85;;; -119830;1;0;false;false;;;;;; -119831;10;0;false;false;0;0;0;;; -119841;2;0;false;false;;;;;; -119843;1;0;false;false;0;0;0;;; -119844;2;0;false;false;;;;;; -119846;3;0;false;false;63;95;191;;; -119849;4;0;false;false;;;;;; -119853;1;0;false;false;63;95;191;;; -119854;1;0;false;false;;;;;; -119855;7;0;false;false;63;95;191;;; -119862;1;0;false;false;;;;;; -119863;3;0;false;false;63;95;191;;; -119866;1;0;false;false;;;;;; -119867;10;0;false;false;63;95;191;;; -119877;1;0;false;false;;;;;; -119878;6;0;false;false;63;95;191;;; -119884;1;0;false;false;;;;;; -119885;6;0;false;false;63;95;191;;; -119891;1;0;false;false;;;;;; -119892;8;0;false;false;63;95;191;;; -119900;1;0;false;false;;;;;; -119901;2;0;false;false;63;95;191;;; -119903;1;0;false;false;;;;;; -119904;3;0;false;false;63;95;191;;; -119907;1;0;false;false;;;;;; -119908;5;0;false;false;63;95;191;;; -119913;1;0;false;false;;;;;; -119914;2;0;false;false;63;95;191;;; -119916;1;0;false;false;;;;;; -119917;3;0;false;false;63;95;191;;; -119920;1;0;false;false;;;;;; -119921;5;0;false;false;63;95;191;;; -119926;3;0;false;false;;;;;; -119929;1;0;false;false;63;95;191;;; -119930;1;0;false;false;;;;;; -119931;3;0;false;false;127;127;159;;; -119934;3;0;false;false;;;;;; -119937;1;0;false;false;63;95;191;;; -119938;3;0;false;false;;;;;; -119941;1;0;false;false;63;95;191;;; -119942;1;0;false;false;;;;;; -119943;8;1;false;false;127;159;191;;; -119951;10;0;false;false;63;95;191;;; -119961;1;0;false;false;;;;;; -119962;6;0;false;false;63;95;191;;; -119968;1;0;false;false;;;;;; -119969;6;0;false;false;63;95;191;;; -119975;1;0;false;false;;;;;; -119976;8;0;false;false;63;95;191;;; -119984;1;0;false;false;;;;;; -119985;2;0;false;false;63;95;191;;; -119987;1;0;false;false;;;;;; -119988;3;0;false;false;63;95;191;;; -119991;1;0;false;false;;;;;; -119992;5;0;false;false;63;95;191;;; -119997;1;0;false;false;;;;;; -119998;2;0;false;false;63;95;191;;; -120000;1;0;false;false;;;;;; -120001;3;0;false;false;63;95;191;;; -120004;1;0;false;false;;;;;; -120005;5;0;false;false;63;95;191;;; -120010;3;0;false;false;;;;;; -120013;1;0;false;false;63;95;191;;; -120014;1;0;false;false;;;;;; -120015;8;0;false;false;63;95;191;;; -120023;1;0;false;false;;;;;; -120024;2;0;false;false;63;95;191;;; -120026;1;0;false;false;;;;;; -120027;9;0;false;false;63;95;191;;; -120036;1;0;false;false;;;;;; -120037;10;0;false;false;63;95;191;;; -120047;1;0;false;false;;;;;; -120048;8;0;false;false;63;95;191;;; -120056;1;0;false;false;;;;;; -120057;2;0;false;false;63;95;191;;; -120059;1;0;false;false;;;;;; -120060;2;0;false;false;63;95;191;;; -120062;1;0;false;false;;;;;; -120063;2;0;false;false;63;95;191;;; -120065;1;0;false;false;;;;;; -120066;1;0;false;false;63;95;191;;; -120067;1;0;false;false;;;;;; -120068;1;0;false;false;63;95;191;;; -120069;1;0;false;false;;;;;; -120070;3;0;false;false;63;95;191;;; -120073;1;0;false;false;;;;;; -120074;7;0;false;false;63;95;191;;; -120081;1;0;false;false;;;;;; -120082;2;0;false;false;63;95;191;;; -120084;1;0;false;false;;;;;; -120085;8;0;false;false;63;95;191;;; -120093;3;0;false;false;;;;;; -120096;1;0;false;false;63;95;191;;; -120097;1;0;false;false;;;;;; -120098;11;1;false;false;127;159;191;;; -120109;12;0;false;false;63;95;191;;; -120121;1;0;false;false;;;;;; -120122;4;0;false;false;127;127;159;;; -120126;3;0;false;false;;;;;; -120129;1;0;false;false;63;95;191;;; -120130;4;0;false;false;;;;;; -120134;4;0;false;false;127;127;159;;; -120138;21;0;false;false;63;95;191;;; -120159;1;0;false;false;;;;;; -120160;1;0;false;false;127;127;159;;; -120161;1;0;false;false;;;;;; -120162;2;0;false;false;63;95;191;;; -120164;1;0;false;false;;;;;; -120165;3;0;false;false;63;95;191;;; -120168;1;0;false;false;;;;;; -120169;8;0;false;false;63;95;191;;; -120177;1;0;false;false;;;;;; -120178;3;0;false;false;63;95;191;;; -120181;1;0;false;false;;;;;; -120182;4;0;false;false;63;95;191;;; -120186;1;0;false;false;;;;;; -120187;8;0;false;false;63;95;191;;; -120195;5;0;false;false;127;127;159;;; -120200;3;0;false;false;;;;;; -120203;1;0;false;false;63;95;191;;; -120204;4;0;false;false;;;;;; -120208;4;0;false;false;127;127;159;;; -120212;27;0;false;false;63;95;191;;; -120239;1;0;false;false;;;;;; -120240;1;0;false;false;127;127;159;;; -120241;1;0;false;false;;;;;; -120242;2;0;false;false;63;95;191;;; -120244;1;0;false;false;;;;;; -120245;3;0;false;false;63;95;191;;; -120248;1;0;false;false;;;;;; -120249;6;0;false;false;63;95;191;;; -120255;1;0;false;false;;;;;; -120256;4;0;false;false;63;95;191;;; -120260;1;0;false;false;;;;;; -120261;3;0;false;false;63;95;191;;; -120264;1;0;false;false;;;;;; -120265;6;0;false;false;63;95;191;;; -120271;1;0;false;false;;;;;; -120272;4;0;false;false;63;95;191;;; -120276;1;0;false;false;;;;;; -120277;7;0;false;false;63;95;191;;; -120284;1;0;false;false;;;;;; -120285;3;0;false;false;63;95;191;;; -120288;1;0;false;false;;;;;; -120289;8;0;false;false;63;95;191;;; -120297;5;0;false;false;127;127;159;;; -120302;3;0;false;false;;;;;; -120305;1;0;false;false;63;95;191;;; -120306;1;0;false;false;;;;;; -120307;5;0;false;false;127;127;159;;; -120312;3;0;false;false;;;;;; -120315;2;0;false;false;63;95;191;;; -120317;2;0;false;false;;;;;; -120319;6;1;false;false;127;0;85;;; -120325;1;0;false;false;;;;;; -120326;3;1;false;false;127;0;85;;; -120329;1;0;false;false;;;;;; -120330;20;0;false;false;0;0;0;;; -120350;1;0;false;false;;;;;; -120351;1;0;false;false;0;0;0;;; -120352;4;0;false;false;;;;;; -120356;14;0;false;false;0;0;0;;; -120370;3;0;false;false;;;;;; -120373;6;1;false;false;127;0;85;;; -120379;1;0;false;false;;;;;; -120380;22;0;false;false;0;0;0;;; -120402;1;0;false;false;;;;;; -120403;1;0;false;false;0;0;0;;; -120404;1;0;false;false;;;;;; -120405;25;0;false;false;0;0;0;;; -120430;2;0;false;false;;;;;; -120432;1;0;false;false;0;0;0;;; -120433;2;0;false;false;;;;;; -120435;3;0;false;false;63;95;191;;; -120438;4;0;false;false;;;;;; -120442;1;0;false;false;63;95;191;;; -120443;1;0;false;false;;;;;; -120444;7;0;false;false;63;95;191;;; -120451;1;0;false;false;;;;;; -120452;3;0;false;false;63;95;191;;; -120455;1;0;false;false;;;;;; -120456;10;0;false;false;63;95;191;;; -120466;1;0;false;false;;;;;; -120467;6;0;false;false;63;95;191;;; -120473;1;0;false;false;;;;;; -120474;6;0;false;false;63;95;191;;; -120480;1;0;false;false;;;;;; -120481;8;0;false;false;63;95;191;;; -120489;1;0;false;false;;;;;; -120490;2;0;false;false;63;95;191;;; -120492;1;0;false;false;;;;;; -120493;3;0;false;false;63;95;191;;; -120496;1;0;false;false;;;;;; -120497;5;0;false;false;63;95;191;;; -120502;1;0;false;false;;;;;; -120503;2;0;false;false;63;95;191;;; -120505;1;0;false;false;;;;;; -120506;3;0;false;false;63;95;191;;; -120509;1;0;false;false;;;;;; -120510;5;0;false;false;63;95;191;;; -120515;3;0;false;false;;;;;; -120518;1;0;false;false;63;95;191;;; -120519;1;0;false;false;;;;;; -120520;3;0;false;false;127;127;159;;; -120523;3;0;false;false;;;;;; -120526;1;0;false;false;63;95;191;;; -120527;3;0;false;false;;;;;; -120530;1;0;false;false;63;95;191;;; -120531;1;0;false;false;;;;;; -120532;8;1;false;false;127;159;191;;; -120540;3;0;false;false;63;95;191;;; -120543;1;0;false;false;;;;;; -120544;10;0;false;false;63;95;191;;; -120554;1;0;false;false;;;;;; -120555;6;0;false;false;63;95;191;;; -120561;1;0;false;false;;;;;; -120562;6;0;false;false;63;95;191;;; -120568;1;0;false;false;;;;;; -120569;8;0;false;false;63;95;191;;; -120577;1;0;false;false;;;;;; -120578;2;0;false;false;63;95;191;;; -120580;1;0;false;false;;;;;; -120581;3;0;false;false;63;95;191;;; -120584;1;0;false;false;;;;;; -120585;5;0;false;false;63;95;191;;; -120590;1;0;false;false;;;;;; -120591;2;0;false;false;63;95;191;;; -120593;1;0;false;false;;;;;; -120594;3;0;false;false;63;95;191;;; -120597;1;0;false;false;;;;;; -120598;5;0;false;false;63;95;191;;; -120603;3;0;false;false;;;;;; -120606;1;0;false;false;63;95;191;;; -120607;1;0;false;false;;;;;; -120608;8;0;false;false;63;95;191;;; -120616;1;0;false;false;;;;;; -120617;2;0;false;false;63;95;191;;; -120619;1;0;false;false;;;;;; -120620;5;0;false;false;63;95;191;;; -120625;1;0;false;false;;;;;; -120626;8;0;false;false;63;95;191;;; -120634;1;0;false;false;;;;;; -120635;2;0;false;false;63;95;191;;; -120637;1;0;false;false;;;;;; -120638;2;0;false;false;63;95;191;;; -120640;1;0;false;false;;;;;; -120641;2;0;false;false;63;95;191;;; -120643;1;0;false;false;;;;;; -120644;1;0;false;false;63;95;191;;; -120645;1;0;false;false;;;;;; -120646;1;0;false;false;63;95;191;;; -120647;1;0;false;false;;;;;; -120648;3;0;false;false;63;95;191;;; -120651;1;0;false;false;;;;;; -120652;7;0;false;false;63;95;191;;; -120659;1;0;false;false;;;;;; -120660;2;0;false;false;63;95;191;;; -120662;1;0;false;false;;;;;; -120663;9;0;false;false;63;95;191;;; -120672;3;0;false;false;;;;;; -120675;1;0;false;false;63;95;191;;; -120676;1;0;false;false;;;;;; -120677;11;1;false;false;127;159;191;;; -120688;12;0;false;false;63;95;191;;; -120700;1;0;false;false;;;;;; -120701;4;0;false;false;127;127;159;;; -120705;3;0;false;false;;;;;; -120708;1;0;false;false;63;95;191;;; -120709;4;0;false;false;;;;;; -120713;4;0;false;false;127;127;159;;; -120717;21;0;false;false;63;95;191;;; -120738;1;0;false;false;;;;;; -120739;1;0;false;false;127;127;159;;; -120740;1;0;false;false;;;;;; -120741;2;0;false;false;63;95;191;;; -120743;1;0;false;false;;;;;; -120744;3;0;false;false;63;95;191;;; -120747;1;0;false;false;;;;;; -120748;8;0;false;false;63;95;191;;; -120756;1;0;false;false;;;;;; -120757;3;0;false;false;63;95;191;;; -120760;1;0;false;false;;;;;; -120761;4;0;false;false;63;95;191;;; -120765;1;0;false;false;;;;;; -120766;8;0;false;false;63;95;191;;; -120774;5;0;false;false;127;127;159;;; -120779;3;0;false;false;;;;;; -120782;1;0;false;false;63;95;191;;; -120783;4;0;false;false;;;;;; -120787;4;0;false;false;127;127;159;;; -120791;27;0;false;false;63;95;191;;; -120818;1;0;false;false;;;;;; -120819;1;0;false;false;127;127;159;;; -120820;1;0;false;false;;;;;; -120821;2;0;false;false;63;95;191;;; -120823;1;0;false;false;;;;;; -120824;3;0;false;false;63;95;191;;; -120827;1;0;false;false;;;;;; -120828;6;0;false;false;63;95;191;;; -120834;1;0;false;false;;;;;; -120835;4;0;false;false;63;95;191;;; -120839;1;0;false;false;;;;;; -120840;3;0;false;false;63;95;191;;; -120843;1;0;false;false;;;;;; -120844;6;0;false;false;63;95;191;;; -120850;1;0;false;false;;;;;; -120851;4;0;false;false;63;95;191;;; -120855;1;0;false;false;;;;;; -120856;7;0;false;false;63;95;191;;; -120863;1;0;false;false;;;;;; -120864;3;0;false;false;63;95;191;;; -120867;1;0;false;false;;;;;; -120868;8;0;false;false;63;95;191;;; -120876;5;0;false;false;127;127;159;;; -120881;3;0;false;false;;;;;; -120884;1;0;false;false;63;95;191;;; -120885;1;0;false;false;;;;;; -120886;5;0;false;false;127;127;159;;; -120891;3;0;false;false;;;;;; -120894;2;0;false;false;63;95;191;;; -120896;2;0;false;false;;;;;; -120898;6;1;false;false;127;0;85;;; -120904;1;0;false;false;;;;;; -120905;3;1;false;false;127;0;85;;; -120908;1;0;false;false;;;;;; -120909;20;0;false;false;0;0;0;;; -120929;1;0;false;false;;;;;; -120930;1;0;false;false;0;0;0;;; -120931;4;0;false;false;;;;;; -120935;14;0;false;false;0;0;0;;; -120949;3;0;false;false;;;;;; -120952;6;1;false;false;127;0;85;;; -120958;1;0;false;false;;;;;; -120959;23;0;false;false;0;0;0;;; -120982;2;0;false;false;;;;;; -120984;1;0;false;false;0;0;0;;; -120985;2;0;false;false;;;;;; -120987;3;0;false;false;63;95;191;;; -120990;4;0;false;false;;;;;; -120994;1;0;false;false;63;95;191;;; -120995;1;0;false;false;;;;;; -120996;7;0;false;false;63;95;191;;; -121003;1;0;false;false;;;;;; -121004;3;0;false;false;63;95;191;;; -121007;1;0;false;false;;;;;; -121008;6;0;false;false;63;95;191;;; -121014;1;0;false;false;;;;;; -121015;8;0;false;false;63;95;191;;; -121023;1;0;false;false;;;;;; -121024;2;0;false;false;63;95;191;;; -121026;1;0;false;false;;;;;; -121027;3;0;false;false;63;95;191;;; -121030;1;0;false;false;;;;;; -121031;4;0;false;false;63;95;191;;; -121035;3;0;false;false;;;;;; -121038;1;0;false;false;63;95;191;;; -121039;1;0;false;false;;;;;; -121040;7;0;false;false;63;95;191;;; -121047;1;0;false;false;;;;;; -121048;8;0;false;false;63;95;191;;; -121056;1;0;false;false;;;;;; -121057;2;0;false;false;63;95;191;;; -121059;1;0;false;false;;;;;; -121060;5;0;false;false;63;95;191;;; -121065;1;0;false;false;;;;;; -121066;2;0;false;false;63;95;191;;; -121068;1;0;false;false;;;;;; -121069;2;0;false;false;63;95;191;;; -121071;1;0;false;false;;;;;; -121072;6;0;false;false;63;95;191;;; -121078;1;0;false;false;;;;;; -121079;10;0;false;false;63;95;191;;; -121089;1;0;false;false;;;;;; -121090;4;0;false;false;63;95;191;;; -121094;1;0;false;false;;;;;; -121095;3;0;false;false;63;95;191;;; -121098;1;0;false;false;;;;;; -121099;4;0;false;false;63;95;191;;; -121103;3;0;false;false;;;;;; -121106;1;0;false;false;63;95;191;;; -121107;1;0;false;false;;;;;; -121108;3;0;false;false;127;127;159;;; -121111;3;0;false;false;;;;;; -121114;1;0;false;false;63;95;191;;; -121115;3;0;false;false;;;;;; -121118;1;0;false;false;63;95;191;;; -121119;1;0;false;false;;;;;; -121120;7;1;false;false;127;159;191;;; -121127;3;0;false;false;63;95;191;;; -121130;1;0;false;false;;;;;; -121131;1;0;false;false;63;95;191;;; -121132;1;0;false;false;;;;;; -121133;3;0;false;false;63;95;191;;; -121136;1;0;false;false;;;;;; -121137;4;0;false;false;63;95;191;;; -121141;1;0;false;false;;;;;; -121142;7;0;false;false;63;95;191;;; -121149;1;0;false;false;;;;;; -121150;2;0;false;false;63;95;191;;; -121152;1;0;false;false;;;;;; -121153;8;0;false;false;63;95;191;;; -121161;1;0;false;false;;;;;; -121162;2;0;false;false;63;95;191;;; -121164;1;0;false;false;;;;;; -121165;1;0;false;false;63;95;191;;; -121166;1;0;false;false;;;;;; -121167;10;0;false;false;63;95;191;;; -121177;4;0;false;false;;;;;; -121181;1;0;false;false;63;95;191;;; -121182;2;0;false;false;;;;;; -121184;10;0;false;false;63;95;191;;; -121194;1;0;false;false;;;;;; -121195;3;0;false;false;63;95;191;;; -121198;1;0;false;false;;;;;; -121199;4;0;false;false;63;95;191;;; -121203;1;0;false;false;;;;;; -121204;1;0;false;false;63;95;191;;; -121205;1;0;false;false;;;;;; -121206;5;0;false;false;63;95;191;;; -121211;1;0;false;false;;;;;; -121212;5;0;false;false;63;95;191;;; -121217;2;0;false;false;;;;;; -121219;9;0;false;false;63;95;191;;; -121228;1;0;false;false;;;;;; -121229;5;0;false;false;63;95;191;;; -121234;1;0;false;false;;;;;; -121235;5;0;false;false;63;95;191;;; -121240;1;0;false;false;;;;;; -121241;3;0;false;false;63;95;191;;; -121244;1;0;false;false;;;;;; -121245;3;0;false;false;63;95;191;;; -121248;1;0;false;false;;;;;; -121249;2;0;false;false;63;95;191;;; -121251;1;0;false;false;;;;;; -121252;4;0;false;false;63;95;191;;; -121256;1;0;false;false;;;;;; -121257;2;0;false;false;63;95;191;;; -121259;3;0;false;false;;;;;; -121262;1;0;false;false;63;95;191;;; -121263;2;0;false;false;;;;;; -121265;9;0;false;false;63;95;191;;; -121274;1;0;false;false;;;;;; -121275;9;0;false;false;63;95;191;;; -121284;1;0;false;false;;;;;; -121285;9;0;false;false;63;95;191;;; -121294;1;0;false;false;;;;;; -121295;5;0;false;false;63;95;191;;; -121300;1;0;false;false;;;;;; -121301;5;0;false;false;63;95;191;;; -121306;1;0;false;false;;;;;; -121307;5;0;false;false;63;95;191;;; -121312;1;0;false;false;;;;;; -121313;7;0;false;false;63;95;191;;; -121320;1;0;false;false;;;;;; -121321;3;0;false;false;63;95;191;;; -121324;1;0;false;false;;;;;; -121325;8;0;false;false;63;95;191;;; -121333;1;0;false;false;;;;;; -121334;8;0;false;false;63;95;191;;; -121342;4;0;false;false;;;;;; -121346;1;0;false;false;63;95;191;;; -121347;2;0;false;false;;;;;; -121349;12;0;false;false;63;95;191;;; -121361;2;0;false;false;;;;;; -121363;8;0;false;false;63;95;191;;; -121371;1;0;false;false;;;;;; -121372;5;0;false;false;63;95;191;;; -121377;1;0;false;false;;;;;; -121378;3;0;false;false;63;95;191;;; -121381;1;0;false;false;;;;;; -121382;2;0;false;false;63;95;191;;; -121384;1;0;false;false;;;;;; -121385;5;0;false;false;63;95;191;;; -121390;1;0;false;false;;;;;; -121391;5;0;false;false;63;95;191;;; -121396;1;0;false;false;;;;;; -121397;5;0;false;false;63;95;191;;; -121402;1;0;false;false;;;;;; -121403;3;0;false;false;63;95;191;;; -121406;1;0;false;false;;;;;; -121407;8;0;false;false;63;95;191;;; -121415;1;0;false;false;;;;;; -121416;5;0;false;false;63;95;191;;; -121421;1;0;false;false;;;;;; -121422;5;0;false;false;63;95;191;;; -121427;3;0;false;false;;;;;; -121430;1;0;false;false;63;95;191;;; -121431;2;0;false;false;;;;;; -121433;6;0;false;false;63;95;191;;; -121439;1;0;false;false;;;;;; -121440;9;0;false;false;63;95;191;;; -121449;1;0;false;false;;;;;; -121450;10;0;false;false;63;95;191;;; -121460;1;0;false;false;;;;;; -121461;8;0;false;false;63;95;191;;; -121469;1;0;false;false;;;;;; -121470;12;0;false;false;63;95;191;;; -121482;1;0;false;false;;;;;; -121483;5;0;false;false;63;95;191;;; -121488;1;0;false;false;;;;;; -121489;6;0;false;false;63;95;191;;; -121495;3;0;false;false;;;;;; -121498;1;0;false;false;63;95;191;;; -121499;1;0;false;false;;;;;; -121500;8;1;false;false;127;159;191;;; -121508;3;0;false;false;63;95;191;;; -121511;1;0;false;false;;;;;; -121512;2;0;false;false;63;95;191;;; -121514;1;0;false;false;;;;;; -121515;3;0;false;false;63;95;191;;; -121518;1;0;false;false;;;;;; -121519;10;0;false;false;63;95;191;;; -121529;1;0;false;false;;;;;; -121530;7;0;false;false;63;95;191;;; -121537;1;0;false;false;;;;;; -121538;7;0;false;false;63;95;191;;; -121545;1;0;false;false;;;;;; -121546;2;0;false;false;63;95;191;;; -121548;1;0;false;false;;;;;; -121549;7;0;false;false;63;95;191;;; -121556;1;0;false;false;;;;;; -121557;2;0;false;false;63;95;191;;; -121559;1;0;false;false;;;;;; -121560;8;0;false;false;63;95;191;;; -121568;4;0;false;false;;;;;; -121572;1;0;false;false;63;95;191;;; -121573;2;0;false;false;;;;;; -121575;2;0;false;false;63;95;191;;; -121577;1;0;false;false;;;;;; -121578;5;0;false;false;63;95;191;;; -121583;1;0;false;false;;;;;; -121584;2;0;false;false;63;95;191;;; -121586;1;0;false;false;;;;;; -121587;2;0;false;false;63;95;191;;; -121589;1;0;false;false;;;;;; -121590;6;0;false;false;63;95;191;;; -121596;1;0;false;false;;;;;; -121597;10;0;false;false;63;95;191;;; -121607;1;0;false;false;;;;;; -121608;4;0;false;false;63;95;191;;; -121612;1;0;false;false;;;;;; -121613;3;0;false;false;63;95;191;;; -121616;1;0;false;false;;;;;; -121617;4;0;false;false;63;95;191;;; -121621;3;0;false;false;;;;;; -121624;1;0;false;false;63;95;191;;; -121625;1;0;false;false;;;;;; -121626;11;1;false;false;127;159;191;;; -121637;12;0;false;false;63;95;191;;; -121649;1;0;false;false;;;;;; -121650;4;0;false;false;127;127;159;;; -121654;3;0;false;false;;;;;; -121657;1;0;false;false;63;95;191;;; -121658;4;0;false;false;;;;;; -121662;4;0;false;false;127;127;159;;; -121666;21;0;false;false;63;95;191;;; -121687;1;0;false;false;;;;;; -121688;1;0;false;false;127;127;159;;; -121689;1;0;false;false;;;;;; -121690;2;0;false;false;63;95;191;;; -121692;1;0;false;false;;;;;; -121693;3;0;false;false;63;95;191;;; -121696;1;0;false;false;;;;;; -121697;8;0;false;false;63;95;191;;; -121705;1;0;false;false;;;;;; -121706;3;0;false;false;63;95;191;;; -121709;1;0;false;false;;;;;; -121710;4;0;false;false;63;95;191;;; -121714;1;0;false;false;;;;;; -121715;8;0;false;false;63;95;191;;; -121723;5;0;false;false;127;127;159;;; -121728;3;0;false;false;;;;;; -121731;1;0;false;false;63;95;191;;; -121732;4;0;false;false;;;;;; -121736;4;0;false;false;127;127;159;;; -121740;27;0;false;false;63;95;191;;; -121767;1;0;false;false;;;;;; -121768;1;0;false;false;127;127;159;;; -121769;1;0;false;false;;;;;; -121770;2;0;false;false;63;95;191;;; -121772;1;0;false;false;;;;;; -121773;3;0;false;false;63;95;191;;; -121776;1;0;false;false;;;;;; -121777;6;0;false;false;63;95;191;;; -121783;1;0;false;false;;;;;; -121784;4;0;false;false;63;95;191;;; -121788;1;0;false;false;;;;;; -121789;3;0;false;false;63;95;191;;; -121792;1;0;false;false;;;;;; -121793;6;0;false;false;63;95;191;;; -121799;1;0;false;false;;;;;; -121800;4;0;false;false;63;95;191;;; -121804;1;0;false;false;;;;;; -121805;7;0;false;false;63;95;191;;; -121812;1;0;false;false;;;;;; -121813;3;0;false;false;63;95;191;;; -121816;1;0;false;false;;;;;; -121817;8;0;false;false;63;95;191;;; -121825;5;0;false;false;127;127;159;;; -121830;3;0;false;false;;;;;; -121833;1;0;false;false;63;95;191;;; -121834;1;0;false;false;;;;;; -121835;5;0;false;false;127;127;159;;; -121840;3;0;false;false;;;;;; -121843;2;0;false;false;63;95;191;;; -121845;2;0;false;false;;;;;; -121847;6;1;false;false;127;0;85;;; -121853;1;0;false;false;;;;;; -121854;3;1;false;false;127;0;85;;; -121857;1;0;false;false;;;;;; -121858;14;0;false;false;0;0;0;;; -121872;3;1;false;false;127;0;85;;; -121875;1;0;false;false;;;;;; -121876;4;0;false;false;0;0;0;;; -121880;1;0;false;false;;;;;; -121881;1;0;false;false;0;0;0;;; -121882;3;0;false;false;;;;;; -121885;14;0;false;false;0;0;0;;; -121899;3;0;false;false;;;;;; -121902;7;0;false;false;0;0;0;;; -121909;1;0;false;false;;;;;; -121910;6;0;false;false;0;0;0;;; -121916;1;0;false;false;;;;;; -121917;1;0;false;false;0;0;0;;; -121918;1;0;false;false;;;;;; -121919;9;0;false;false;0;0;0;;; -121928;1;0;false;false;;;;;; -121929;17;0;false;false;0;0;0;;; -121946;3;1;false;false;127;0;85;;; -121949;1;0;false;false;;;;;; -121950;14;0;false;false;0;0;0;;; -121964;3;0;false;false;;;;;; -121967;3;1;false;false;127;0;85;;; -121970;1;0;false;false;;;;;; -121971;10;0;false;false;0;0;0;;; -121981;6;0;false;false;;;;;; -121987;2;1;false;false;127;0;85;;; -121989;1;0;false;false;;;;;; -121990;7;0;false;false;0;0;0;;; -121997;1;0;false;false;;;;;; -121998;2;0;false;false;0;0;0;;; -122000;1;0;false;false;;;;;; -122001;4;1;false;false;127;0;85;;; -122005;1;0;false;false;0;0;0;;; -122006;1;0;false;false;;;;;; -122007;1;0;false;false;0;0;0;;; -122008;4;0;false;false;;;;;; -122012;9;0;false;false;0;0;0;;; -122021;1;0;false;false;;;;;; -122022;1;0;false;false;0;0;0;;; -122023;1;0;false;false;;;;;; -122024;9;0;false;false;0;0;0;;; -122033;3;0;false;false;;;;;; -122036;1;0;false;false;0;0;0;;; -122037;3;0;false;false;;;;;; -122040;4;1;false;false;127;0;85;;; -122044;1;0;false;false;;;;;; -122045;1;0;false;false;0;0;0;;; -122046;4;0;false;false;;;;;; -122050;9;0;false;false;0;0;0;;; -122059;1;0;false;false;;;;;; -122060;1;0;false;false;0;0;0;;; -122061;1;0;false;false;;;;;; -122062;18;0;false;false;0;0;0;;; -122080;3;0;false;false;;;;;; -122083;1;0;false;false;0;0;0;;; -122084;3;0;false;false;;;;;; -122087;6;1;false;false;127;0;85;;; -122093;1;0;false;false;;;;;; -122094;10;0;false;false;0;0;0;;; -122104;2;0;false;false;;;;;; -122106;1;0;false;false;0;0;0;;; -122107;2;0;false;false;;;;;; -122109;3;0;false;false;63;95;191;;; -122112;3;0;false;false;;;;;; -122115;1;0;false;false;63;95;191;;; -122116;1;0;false;false;;;;;; -122117;4;0;false;false;63;95;191;;; -122121;1;0;false;false;;;;;; -122122;3;0;false;false;63;95;191;;; -122125;1;0;false;false;;;;;; -122126;6;0;false;false;63;95;191;;; -122132;1;0;false;false;;;;;; -122133;2;0;false;false;63;95;191;;; -122135;1;0;false;false;;;;;; -122136;11;0;false;false;63;95;191;;; -122147;3;0;false;false;;;;;; -122150;1;0;false;false;63;95;191;;; -122151;1;0;false;false;;;;;; -122152;3;0;false;false;127;127;159;;; -122155;3;0;false;false;;;;;; -122158;1;0;false;false;63;95;191;;; -122159;3;0;false;false;;;;;; -122162;1;0;false;false;63;95;191;;; -122163;1;0;false;false;;;;;; -122164;8;1;false;false;127;159;191;;; -122172;6;0;false;false;63;95;191;;; -122178;1;0;false;false;;;;;; -122179;2;0;false;false;63;95;191;;; -122181;1;0;false;false;;;;;; -122182;10;0;false;false;63;95;191;;; -122192;1;0;false;false;;;;;; -122193;2;0;false;false;63;95;191;;; -122195;1;0;false;false;;;;;; -122196;3;0;false;false;63;95;191;;; -122199;1;0;false;false;;;;;; -122200;6;0;false;false;63;95;191;;; -122206;3;0;false;false;;;;;; -122209;1;0;false;false;63;95;191;;; -122210;1;0;false;false;;;;;; -122211;11;1;false;false;127;159;191;;; -122222;12;0;false;false;63;95;191;;; -122234;1;0;false;false;;;;;; -122235;4;0;false;false;127;127;159;;; -122239;3;0;false;false;;;;;; -122242;1;0;false;false;63;95;191;;; -122243;4;0;false;false;;;;;; -122247;4;0;false;false;127;127;159;;; -122251;21;0;false;false;63;95;191;;; -122272;1;0;false;false;;;;;; -122273;1;0;false;false;127;127;159;;; -122274;1;0;false;false;;;;;; -122275;2;0;false;false;63;95;191;;; -122277;1;0;false;false;;;;;; -122278;3;0;false;false;63;95;191;;; -122281;1;0;false;false;;;;;; -122282;8;0;false;false;63;95;191;;; -122290;1;0;false;false;;;;;; -122291;3;0;false;false;63;95;191;;; -122294;1;0;false;false;;;;;; -122295;4;0;false;false;63;95;191;;; -122299;1;0;false;false;;;;;; -122300;8;0;false;false;63;95;191;;; -122308;5;0;false;false;127;127;159;;; -122313;3;0;false;false;;;;;; -122316;1;0;false;false;63;95;191;;; -122317;4;0;false;false;;;;;; -122321;4;0;false;false;127;127;159;;; -122325;27;0;false;false;63;95;191;;; -122352;1;0;false;false;;;;;; -122353;1;0;false;false;127;127;159;;; -122354;1;0;false;false;;;;;; -122355;2;0;false;false;63;95;191;;; -122357;1;0;false;false;;;;;; -122358;3;0;false;false;63;95;191;;; -122361;1;0;false;false;;;;;; -122362;6;0;false;false;63;95;191;;; -122368;1;0;false;false;;;;;; -122369;4;0;false;false;63;95;191;;; -122373;1;0;false;false;;;;;; -122374;3;0;false;false;63;95;191;;; -122377;1;0;false;false;;;;;; -122378;6;0;false;false;63;95;191;;; -122384;1;0;false;false;;;;;; -122385;4;0;false;false;63;95;191;;; -122389;1;0;false;false;;;;;; -122390;7;0;false;false;63;95;191;;; -122397;1;0;false;false;;;;;; -122398;3;0;false;false;63;95;191;;; -122401;1;0;false;false;;;;;; -122402;8;0;false;false;63;95;191;;; -122410;5;0;false;false;127;127;159;;; -122415;3;0;false;false;;;;;; -122418;1;0;false;false;63;95;191;;; -122419;1;0;false;false;;;;;; -122420;5;0;false;false;127;127;159;;; -122425;3;0;false;false;;;;;; -122428;2;0;false;false;63;95;191;;; -122430;2;0;false;false;;;;;; -122432;6;1;false;false;127;0;85;;; -122438;1;0;false;false;;;;;; -122439;3;1;false;false;127;0;85;;; -122442;1;0;false;false;;;;;; -122443;14;0;false;false;0;0;0;;; -122457;1;0;false;false;;;;;; -122458;1;0;false;false;0;0;0;;; -122459;3;0;false;false;;;;;; -122462;14;0;false;false;0;0;0;;; -122476;3;0;false;false;;;;;; -122479;6;1;false;false;127;0;85;;; -122485;1;0;false;false;;;;;; -122486;23;0;false;false;0;0;0;;; -122509;2;0;false;false;;;;;; -122511;1;0;false;false;0;0;0;;; -122512;2;0;false;false;;;;;; -122514;3;0;false;false;63;95;191;;; -122517;3;0;false;false;;;;;; -122520;1;0;false;false;63;95;191;;; -122521;1;0;false;false;;;;;; -122522;7;0;false;false;63;95;191;;; -122529;1;0;false;false;;;;;; -122530;3;0;false;false;63;95;191;;; -122533;1;0;false;false;;;;;; -122534;10;0;false;false;63;95;191;;; -122544;1;0;false;false;;;;;; -122545;5;0;false;false;63;95;191;;; -122550;1;0;false;false;;;;;; -122551;2;0;false;false;63;95;191;;; -122553;1;0;false;false;;;;;; -122554;3;0;false;false;63;95;191;;; -122557;1;0;false;false;;;;;; -122558;4;0;false;false;63;95;191;;; -122562;1;0;false;false;;;;;; -122563;2;0;false;false;63;95;191;;; -122565;1;0;false;false;;;;;; -122566;3;0;false;false;63;95;191;;; -122569;1;0;false;false;;;;;; -122570;5;0;false;false;63;95;191;;; -122575;1;0;false;false;;;;;; -122576;6;0;false;false;63;95;191;;; -122582;3;0;false;false;;;;;; -122585;1;0;false;false;63;95;191;;; -122586;1;0;false;false;;;;;; -122587;7;0;false;false;63;95;191;;; -122594;1;0;false;false;;;;;; -122595;4;0;false;false;63;95;191;;; -122599;1;0;false;false;;;;;; -122600;2;0;false;false;63;95;191;;; -122602;1;0;false;false;;;;;; -122603;1;0;false;false;63;95;191;;; -122604;1;0;false;false;;;;;; -122605;22;0;false;false;63;95;191;;; -122627;1;0;false;false;;;;;; -122628;3;0;false;false;63;95;191;;; -122631;1;0;false;false;;;;;; -122632;4;0;false;false;63;95;191;;; -122636;1;0;false;false;;;;;; -122637;3;0;false;false;63;95;191;;; -122640;1;0;false;false;;;;;; -122641;2;0;false;false;63;95;191;;; -122643;1;0;false;false;;;;;; -122644;2;0;false;false;63;95;191;;; -122646;1;0;false;false;;;;;; -122647;2;0;false;false;63;95;191;;; -122649;1;0;false;false;;;;;; -122650;10;0;false;false;63;95;191;;; -122660;4;0;false;false;;;;;; -122664;1;0;false;false;63;95;191;;; -122665;1;0;false;false;;;;;; -122666;5;0;false;false;63;95;191;;; -122671;1;0;false;false;;;;;; -122672;3;0;false;false;63;95;191;;; -122675;1;0;false;false;;;;;; -122676;4;0;false;false;63;95;191;;; -122680;1;0;false;false;;;;;; -122681;9;0;false;false;63;95;191;;; -122690;1;0;false;false;;;;;; -122691;3;0;false;false;63;95;191;;; -122694;1;0;false;false;;;;;; -122695;3;0;false;false;63;95;191;;; -122698;1;0;false;false;;;;;; -122699;5;0;false;false;63;95;191;;; -122704;1;0;false;false;;;;;; -122705;6;0;false;false;63;95;191;;; -122711;1;0;false;false;;;;;; -122712;3;0;false;false;63;95;191;;; -122715;1;0;false;false;;;;;; -122716;2;0;false;false;63;95;191;;; -122718;1;0;false;false;;;;;; -122719;6;0;false;false;63;95;191;;; -122725;1;0;false;false;;;;;; -122726;2;0;false;false;63;95;191;;; -122728;1;0;false;false;;;;;; -122729;1;0;false;false;63;95;191;;; -122730;3;0;false;false;;;;;; -122733;1;0;false;false;63;95;191;;; -122734;1;0;false;false;;;;;; -122735;22;0;false;false;63;95;191;;; -122757;1;0;false;false;;;;;; -122758;3;0;false;false;63;95;191;;; -122761;1;0;false;false;;;;;; -122762;4;0;false;false;63;95;191;;; -122766;1;0;false;false;;;;;; -122767;3;0;false;false;63;95;191;;; -122770;1;0;false;false;;;;;; -122771;5;0;false;false;63;95;191;;; -122776;1;0;false;false;;;;;; -122777;3;0;false;false;63;95;191;;; -122780;1;0;false;false;;;;;; -122781;8;0;false;false;63;95;191;;; -122789;1;0;false;false;;;;;; -122790;9;0;false;false;63;95;191;;; -122799;1;0;false;false;;;;;; -122800;3;0;false;false;63;95;191;;; -122803;3;0;false;false;;;;;; -122806;1;0;false;false;63;95;191;;; -122807;1;0;false;false;;;;;; -122808;4;0;false;false;63;95;191;;; -122812;1;0;false;false;;;;;; -122813;10;0;false;false;63;95;191;;; -122823;1;0;false;false;;;;;; -122824;7;0;false;false;63;95;191;;; -122831;3;0;false;false;;;;;; -122834;1;0;false;false;63;95;191;;; -122835;4;0;false;false;;;;;; -122839;1;0;false;false;63;95;191;;; -122840;1;0;false;false;;;;;; -122841;7;1;false;false;127;159;191;;; -122848;5;0;false;false;63;95;191;;; -122853;1;0;false;false;;;;;; -122854;3;0;false;false;63;95;191;;; -122857;1;0;false;false;;;;;; -122858;5;0;false;false;63;95;191;;; -122863;1;0;false;false;;;;;; -122864;2;0;false;false;63;95;191;;; -122866;1;0;false;false;;;;;; -122867;3;0;false;false;63;95;191;;; -122870;1;0;false;false;;;;;; -122871;4;0;false;false;63;95;191;;; -122875;3;0;false;false;;;;;; -122878;1;0;false;false;63;95;191;;; -122879;1;0;false;false;;;;;; -122880;8;1;false;false;127;159;191;;; -122888;3;0;false;false;63;95;191;;; -122891;1;0;false;false;;;;;; -122892;10;0;false;false;63;95;191;;; -122902;1;0;false;false;;;;;; -122903;5;0;false;false;63;95;191;;; -122908;1;0;false;false;;;;;; -122909;2;0;false;false;63;95;191;;; -122911;1;0;false;false;;;;;; -122912;3;0;false;false;63;95;191;;; -122915;1;0;false;false;;;;;; -122916;4;0;false;false;63;95;191;;; -122920;1;0;false;false;;;;;; -122921;2;0;false;false;63;95;191;;; -122923;1;0;false;false;;;;;; -122924;3;0;false;false;63;95;191;;; -122927;1;0;false;false;;;;;; -122928;5;0;false;false;63;95;191;;; -122933;1;0;false;false;;;;;; -122934;6;0;false;false;63;95;191;;; -122940;3;0;false;false;;;;;; -122943;1;0;false;false;63;95;191;;; -122944;4;0;false;false;;;;;; -122948;1;0;false;false;63;95;191;;; -122949;1;0;false;false;;;;;; -122950;11;1;false;false;127;159;191;;; -122961;12;0;false;false;63;95;191;;; -122973;1;0;false;false;;;;;; -122974;4;0;false;false;127;127;159;;; -122978;3;0;false;false;;;;;; -122981;1;0;false;false;63;95;191;;; -122982;4;0;false;false;;;;;; -122986;4;0;false;false;127;127;159;;; -122990;21;0;false;false;63;95;191;;; -123011;1;0;false;false;;;;;; -123012;1;0;false;false;127;127;159;;; -123013;1;0;false;false;;;;;; -123014;2;0;false;false;63;95;191;;; -123016;1;0;false;false;;;;;; -123017;3;0;false;false;63;95;191;;; -123020;1;0;false;false;;;;;; -123021;8;0;false;false;63;95;191;;; -123029;1;0;false;false;;;;;; -123030;3;0;false;false;63;95;191;;; -123033;1;0;false;false;;;;;; -123034;4;0;false;false;63;95;191;;; -123038;1;0;false;false;;;;;; -123039;8;0;false;false;63;95;191;;; -123047;5;0;false;false;127;127;159;;; -123052;3;0;false;false;;;;;; -123055;1;0;false;false;63;95;191;;; -123056;4;0;false;false;;;;;; -123060;4;0;false;false;127;127;159;;; -123064;27;0;false;false;63;95;191;;; -123091;1;0;false;false;;;;;; -123092;1;0;false;false;127;127;159;;; -123093;1;0;false;false;;;;;; -123094;2;0;false;false;63;95;191;;; -123096;1;0;false;false;;;;;; -123097;3;0;false;false;63;95;191;;; -123100;1;0;false;false;;;;;; -123101;6;0;false;false;63;95;191;;; -123107;1;0;false;false;;;;;; -123108;4;0;false;false;63;95;191;;; -123112;1;0;false;false;;;;;; -123113;3;0;false;false;63;95;191;;; -123116;1;0;false;false;;;;;; -123117;6;0;false;false;63;95;191;;; -123123;1;0;false;false;;;;;; -123124;4;0;false;false;63;95;191;;; -123128;1;0;false;false;;;;;; -123129;7;0;false;false;63;95;191;;; -123136;1;0;false;false;;;;;; -123137;3;0;false;false;63;95;191;;; -123140;1;0;false;false;;;;;; -123141;8;0;false;false;63;95;191;;; -123149;5;0;false;false;127;127;159;;; -123154;3;0;false;false;;;;;; -123157;1;0;false;false;63;95;191;;; -123158;1;0;false;false;;;;;; -123159;5;0;false;false;127;127;159;;; -123164;3;0;false;false;;;;;; -123167;1;0;false;false;63;95;191;;; -123168;1;0;false;false;;;;;; -123169;11;1;false;false;127;159;191;;; -123180;24;0;false;false;63;95;191;;; -123204;1;0;false;false;;;;;; -123205;4;0;false;false;127;127;159;;; -123209;3;0;false;false;;;;;; -123212;1;0;false;false;63;95;191;;; -123213;4;0;false;false;;;;;; -123217;4;0;false;false;127;127;159;;; -123221;22;0;false;false;63;95;191;;; -123243;1;0;false;false;;;;;; -123244;4;0;false;false;63;95;191;;; -123248;1;0;false;false;;;;;; -123249;3;0;false;false;63;95;191;;; -123252;1;0;false;false;;;;;; -123253;5;0;false;false;63;95;191;;; -123258;1;0;false;false;;;;;; -123259;2;0;false;false;63;95;191;;; -123261;1;0;false;false;;;;;; -123262;7;0;false;false;63;95;191;;; -123269;5;0;false;false;127;127;159;;; -123274;3;0;false;false;;;;;; -123277;1;0;false;false;63;95;191;;; -123278;1;0;false;false;;;;;; -123279;5;0;false;false;127;127;159;;; -123284;3;0;false;false;;;;;; -123287;2;0;false;false;63;95;191;;; -123289;2;0;false;false;;;;;; -123291;6;1;false;false;127;0;85;;; -123297;1;0;false;false;;;;;; -123298;5;0;false;false;0;0;0;;; -123303;1;0;false;false;;;;;; -123304;18;0;false;false;0;0;0;;; -123322;3;1;false;false;127;0;85;;; -123325;1;0;false;false;;;;;; -123326;6;0;false;false;0;0;0;;; -123332;1;0;false;false;;;;;; -123333;1;0;false;false;0;0;0;;; -123334;3;0;false;false;;;;;; -123337;14;0;false;false;0;0;0;;; -123351;3;0;false;false;;;;;; -123354;5;0;false;false;0;0;0;;; -123359;1;0;false;false;;;;;; -123360;14;0;false;false;0;0;0;;; -123374;1;0;false;false;;;;;; -123375;1;0;false;false;0;0;0;;; -123376;1;0;false;false;;;;;; -123377;4;1;false;false;127;0;85;;; -123381;1;0;false;false;0;0;0;;; -123382;6;0;false;false;;;;;; -123388;2;1;false;false;127;0;85;;; -123390;1;0;false;false;;;;;; -123391;6;0;false;false;0;0;0;;; -123397;1;0;false;false;;;;;; -123398;1;0;false;false;0;0;0;;; -123399;1;0;false;false;;;;;; -123400;1;0;false;false;0;0;0;;; -123401;1;0;false;false;;;;;; -123402;2;0;false;false;0;0;0;;; -123404;1;0;false;false;;;;;; -123405;5;0;false;false;0;0;0;;; -123410;1;0;false;false;;;;;; -123411;1;0;false;false;0;0;0;;; -123412;1;0;false;false;;;;;; -123413;30;0;false;false;0;0;0;;; -123443;1;0;false;false;;;;;; -123444;1;0;false;false;0;0;0;;; -123445;4;0;false;false;;;;;; -123449;38;0;false;false;0;0;0;;; -123487;3;0;false;false;;;;;; -123490;1;0;false;false;0;0;0;;; -123491;3;0;false;false;;;;;; -123494;2;1;false;false;127;0;85;;; -123496;1;0;false;false;;;;;; -123497;21;0;false;false;0;0;0;;; -123518;1;0;false;false;;;;;; -123519;1;0;false;false;0;0;0;;; -123520;4;0;false;false;;;;;; -123524;14;0;false;false;0;0;0;;; -123538;1;0;false;false;;;;;; -123539;1;0;false;false;0;0;0;;; -123540;1;0;false;false;;;;;; -123541;43;0;false;false;0;0;0;;; -123584;3;0;false;false;;;;;; -123587;1;0;false;false;0;0;0;;; -123588;3;0;false;false;;;;;; -123591;6;1;false;false;127;0;85;;; -123597;1;0;false;false;;;;;; -123598;15;0;false;false;0;0;0;;; -123613;2;0;false;false;;;;;; -123615;1;0;false;false;0;0;0;;; -123616;2;0;false;false;;;;;; -123618;3;0;false;false;63;95;191;;; -123621;3;0;false;false;;;;;; -123624;1;0;false;false;63;95;191;;; -123625;1;0;false;false;;;;;; -123626;7;0;false;false;63;95;191;;; -123633;1;0;false;false;;;;;; -123634;3;0;false;false;63;95;191;;; -123637;1;0;false;false;;;;;; -123638;4;0;false;false;63;95;191;;; -123642;1;0;false;false;;;;;; -123643;10;0;false;false;63;95;191;;; -123653;1;0;false;false;;;;;; -123654;4;0;false;false;63;95;191;;; -123658;1;0;false;false;;;;;; -123659;3;0;false;false;63;95;191;;; -123662;1;0;false;false;;;;;; -123663;3;0;false;false;63;95;191;;; -123666;1;0;false;false;;;;;; -123667;5;0;false;false;63;95;191;;; -123672;1;0;false;false;;;;;; -123673;4;0;false;false;63;95;191;;; -123677;1;0;false;false;;;;;; -123678;2;0;false;false;63;95;191;;; -123680;1;0;false;false;;;;;; -123681;4;0;false;false;63;95;191;;; -123685;1;0;false;false;;;;;; -123686;2;0;false;false;63;95;191;;; -123688;4;0;false;false;;;;;; -123692;1;0;false;false;63;95;191;;; -123693;1;0;false;false;;;;;; -123694;5;0;false;false;63;95;191;;; -123699;1;0;false;false;;;;;; -123700;2;0;false;false;63;95;191;;; -123702;1;0;false;false;;;;;; -123703;5;0;false;false;63;95;191;;; -123708;3;0;false;false;;;;;; -123711;1;0;false;false;63;95;191;;; -123712;1;0;false;false;;;;;; -123713;3;0;false;false;127;127;159;;; -123716;3;0;false;false;;;;;; -123719;1;0;false;false;63;95;191;;; -123720;1;0;false;false;;;;;; -123721;7;1;false;false;127;159;191;;; -123728;10;0;false;false;63;95;191;;; -123738;1;0;false;false;;;;;; -123739;6;0;false;false;63;95;191;;; -123745;1;0;false;false;;;;;; -123746;2;0;false;false;63;95;191;;; -123748;1;0;false;false;;;;;; -123749;3;0;false;false;63;95;191;;; -123752;1;0;false;false;;;;;; -123753;4;0;false;false;63;95;191;;; -123757;1;0;false;false;;;;;; -123758;5;0;false;false;63;95;191;;; -123763;1;0;false;false;;;;;; -123764;8;0;false;false;63;95;191;;; -123772;1;0;false;false;;;;;; -123773;2;0;false;false;63;95;191;;; -123775;1;0;false;false;;;;;; -123776;3;0;false;false;63;95;191;;; -123779;1;0;false;false;;;;;; -123780;5;0;false;false;63;95;191;;; -123785;3;0;false;false;;;;;; -123788;1;0;false;false;63;95;191;;; -123789;2;0;false;false;;;;;; -123791;2;0;false;false;63;95;191;;; -123793;1;0;false;false;;;;;; -123794;3;0;false;false;63;95;191;;; -123797;1;0;false;false;;;;;; -123798;8;0;false;false;63;95;191;;; -123806;3;0;false;false;;;;;; -123809;1;0;false;false;63;95;191;;; -123810;1;0;false;false;;;;;; -123811;7;1;false;false;127;159;191;;; -123818;4;0;false;false;63;95;191;;; -123822;1;0;false;false;;;;;; -123823;4;0;false;false;63;95;191;;; -123827;1;0;false;false;;;;;; -123828;2;0;false;false;63;95;191;;; -123830;1;0;false;false;;;;;; -123831;3;0;false;false;63;95;191;;; -123834;1;0;false;false;;;;;; -123835;4;0;false;false;63;95;191;;; -123839;1;0;false;false;;;;;; -123840;10;0;false;false;63;95;191;;; -123850;1;0;false;false;;;;;; -123851;4;0;false;false;63;95;191;;; -123855;1;0;false;false;;;;;; -123856;3;0;false;false;63;95;191;;; -123859;3;0;false;false;;;;;; -123862;1;0;false;false;63;95;191;;; -123863;1;0;false;false;;;;;; -123864;8;1;false;false;127;159;191;;; -123872;4;0;false;false;63;95;191;;; -123876;1;0;false;false;;;;;; -123877;10;0;false;false;63;95;191;;; -123887;1;0;false;false;;;;;; -123888;4;0;false;false;63;95;191;;; -123892;1;0;false;false;;;;;; -123893;3;0;false;false;63;95;191;;; -123896;1;0;false;false;;;;;; -123897;3;0;false;false;63;95;191;;; -123900;1;0;false;false;;;;;; -123901;5;0;false;false;63;95;191;;; -123906;1;0;false;false;;;;;; -123907;5;0;false;false;63;95;191;;; -123912;3;0;false;false;;;;;; -123915;2;0;false;false;63;95;191;;; -123917;2;0;false;false;;;;;; -123919;15;0;false;false;0;0;0;;; -123934;1;0;false;false;;;;;; -123935;22;0;false;false;0;0;0;;; -123957;3;1;false;false;127;0;85;;; -123960;1;0;false;false;;;;;; -123961;11;0;false;false;0;0;0;;; -123972;1;0;false;false;;;;;; -123973;6;0;false;false;0;0;0;;; -123979;1;0;false;false;;;;;; -123980;5;0;false;false;0;0;0;;; -123985;1;0;false;false;;;;;; -123986;1;0;false;false;0;0;0;;; -123987;3;0;false;false;;;;;; -123990;6;1;false;false;127;0;85;;; -123996;1;0;false;false;;;;;; -123997;32;0;false;false;0;0;0;;; -124029;1;0;false;false;;;;;; -124030;11;0;false;false;0;0;0;;; -124041;1;0;false;false;;;;;; -124042;6;0;false;false;0;0;0;;; -124048;2;0;false;false;;;;;; -124050;1;0;false;false;0;0;0;;; -124051;2;0;false;false;;;;;; -124053;3;0;false;false;63;95;191;;; -124056;4;0;false;false;;;;;; -124060;1;0;false;false;63;95;191;;; -124061;1;0;false;false;;;;;; -124062;4;0;false;false;63;95;191;;; -124066;1;0;false;false;;;;;; -124067;3;0;false;false;63;95;191;;; -124070;1;0;false;false;;;;;; -124071;6;0;false;false;63;95;191;;; -124077;1;0;false;false;;;;;; -124078;2;0;false;false;63;95;191;;; -124080;1;0;false;false;;;;;; -124081;4;0;false;false;63;95;191;;; -124085;1;0;false;false;;;;;; -124086;6;0;false;false;63;95;191;;; -124092;3;0;false;false;;;;;; -124095;1;0;false;false;63;95;191;;; -124096;1;0;false;false;;;;;; -124097;3;0;false;false;127;127;159;;; -124100;3;0;false;false;;;;;; -124103;1;0;false;false;63;95;191;;; -124104;3;0;false;false;;;;;; -124107;1;0;false;false;63;95;191;;; -124108;1;0;false;false;;;;;; -124109;8;1;false;false;127;159;191;;; -124117;3;0;false;false;63;95;191;;; -124120;1;0;false;false;;;;;; -124121;6;0;false;false;63;95;191;;; -124127;1;0;false;false;;;;;; -124128;2;0;false;false;63;95;191;;; -124130;1;0;false;false;;;;;; -124131;5;0;false;false;63;95;191;;; -124136;1;0;false;false;;;;;; -124137;2;0;false;false;63;95;191;;; -124139;1;0;false;false;;;;;; -124140;3;0;false;false;63;95;191;;; -124143;1;0;false;false;;;;;; -124144;6;0;false;false;63;95;191;;; -124150;3;0;false;false;;;;;; -124153;1;0;false;false;63;95;191;;; -124154;1;0;false;false;;;;;; -124155;11;1;false;false;127;159;191;;; -124166;12;0;false;false;63;95;191;;; -124178;1;0;false;false;;;;;; -124179;4;0;false;false;127;127;159;;; -124183;3;0;false;false;;;;;; -124186;1;0;false;false;63;95;191;;; -124187;4;0;false;false;;;;;; -124191;4;0;false;false;127;127;159;;; -124195;21;0;false;false;63;95;191;;; -124216;1;0;false;false;;;;;; -124217;1;0;false;false;127;127;159;;; -124218;1;0;false;false;;;;;; -124219;2;0;false;false;63;95;191;;; -124221;1;0;false;false;;;;;; -124222;3;0;false;false;63;95;191;;; -124225;1;0;false;false;;;;;; -124226;8;0;false;false;63;95;191;;; -124234;1;0;false;false;;;;;; -124235;3;0;false;false;63;95;191;;; -124238;1;0;false;false;;;;;; -124239;4;0;false;false;63;95;191;;; -124243;1;0;false;false;;;;;; -124244;8;0;false;false;63;95;191;;; -124252;5;0;false;false;127;127;159;;; -124257;3;0;false;false;;;;;; -124260;1;0;false;false;63;95;191;;; -124261;4;0;false;false;;;;;; -124265;4;0;false;false;127;127;159;;; -124269;27;0;false;false;63;95;191;;; -124296;1;0;false;false;;;;;; -124297;1;0;false;false;127;127;159;;; -124298;1;0;false;false;;;;;; -124299;2;0;false;false;63;95;191;;; -124301;1;0;false;false;;;;;; -124302;3;0;false;false;63;95;191;;; -124305;1;0;false;false;;;;;; -124306;6;0;false;false;63;95;191;;; -124312;1;0;false;false;;;;;; -124313;4;0;false;false;63;95;191;;; -124317;1;0;false;false;;;;;; -124318;3;0;false;false;63;95;191;;; -124321;1;0;false;false;;;;;; -124322;6;0;false;false;63;95;191;;; -124328;1;0;false;false;;;;;; -124329;4;0;false;false;63;95;191;;; -124333;1;0;false;false;;;;;; -124334;7;0;false;false;63;95;191;;; -124341;1;0;false;false;;;;;; -124342;3;0;false;false;63;95;191;;; -124345;1;0;false;false;;;;;; -124346;8;0;false;false;63;95;191;;; -124354;5;0;false;false;127;127;159;;; -124359;3;0;false;false;;;;;; -124362;1;0;false;false;63;95;191;;; -124363;1;0;false;false;;;;;; -124364;5;0;false;false;127;127;159;;; -124369;3;0;false;false;;;;;; -124372;2;0;false;false;63;95;191;;; -124374;2;0;false;false;;;;;; -124376;6;1;false;false;127;0;85;;; -124382;1;0;false;false;;;;;; -124383;3;1;false;false;127;0;85;;; -124386;1;0;false;false;;;;;; -124387;14;0;false;false;0;0;0;;; -124401;1;0;false;false;;;;;; -124402;1;0;false;false;0;0;0;;; -124403;3;0;false;false;;;;;; -124406;14;0;false;false;0;0;0;;; -124420;3;0;false;false;;;;;; -124423;6;1;false;false;127;0;85;;; -124429;1;0;false;false;;;;;; -124430;31;0;false;false;0;0;0;;; -124461;1;0;false;false;;;;;; -124462;1;0;false;false;0;0;0;;; -124463;1;0;false;false;;;;;; -124464;2;0;false;false;0;0;0;;; -124466;2;0;false;false;;;;;; -124468;1;0;false;false;0;0;0;;; -124469;2;0;false;false;;;;;; -124471;3;0;false;false;63;95;191;;; -124474;3;0;false;false;;;;;; -124477;1;0;false;false;63;95;191;;; -124478;1;0;false;false;;;;;; -124479;7;0;false;false;63;95;191;;; -124486;1;0;false;false;;;;;; -124487;3;0;false;false;63;95;191;;; -124490;1;0;false;false;;;;;; -124491;6;0;false;false;63;95;191;;; -124497;1;0;false;false;;;;;; -124498;2;0;false;false;63;95;191;;; -124500;1;0;false;false;;;;;; -124501;5;0;false;false;63;95;191;;; -124506;1;0;false;false;;;;;; -124507;4;0;false;false;63;95;191;;; -124511;1;0;false;false;;;;;; -124512;3;0;false;false;63;95;191;;; -124515;1;0;false;false;;;;;; -124516;2;0;false;false;63;95;191;;; -124518;1;0;false;false;;;;;; -124519;10;0;false;false;63;95;191;;; -124529;1;0;false;false;;;;;; -124530;9;0;false;false;63;95;191;;; -124539;1;0;false;false;;;;;; -124540;2;0;false;false;63;95;191;;; -124542;1;0;false;false;;;;;; -124543;3;0;false;false;63;95;191;;; -124546;4;0;false;false;;;;;; -124550;1;0;false;false;63;95;191;;; -124551;1;0;false;false;;;;;; -124552;6;0;false;false;63;95;191;;; -124558;1;0;false;false;;;;;; -124559;6;0;false;false;63;95;191;;; -124565;1;0;false;false;;;;;; -124566;5;0;false;false;63;95;191;;; -124571;3;0;false;false;;;;;; -124574;1;0;false;false;63;95;191;;; -124575;1;0;false;false;;;;;; -124576;3;0;false;false;127;127;159;;; -124579;3;0;false;false;;;;;; -124582;1;0;false;false;63;95;191;;; -124583;3;0;false;false;;;;;; -124586;1;0;false;false;63;95;191;;; -124587;1;0;false;false;;;;;; -124588;8;1;false;false;127;159;191;;; -124596;6;0;false;false;63;95;191;;; -124602;1;0;false;false;;;;;; -124603;2;0;false;false;63;95;191;;; -124605;1;0;false;false;;;;;; -124606;5;0;false;false;63;95;191;;; -124611;1;0;false;false;;;;;; -124612;4;0;false;false;63;95;191;;; -124616;1;0;false;false;;;;;; -124617;3;0;false;false;63;95;191;;; -124620;1;0;false;false;;;;;; -124621;2;0;false;false;63;95;191;;; -124623;1;0;false;false;;;;;; -124624;10;0;false;false;63;95;191;;; -124634;1;0;false;false;;;;;; -124635;9;0;false;false;63;95;191;;; -124644;1;0;false;false;;;;;; -124645;2;0;false;false;63;95;191;;; -124647;1;0;false;false;;;;;; -124648;3;0;false;false;63;95;191;;; -124651;1;0;false;false;;;;;; -124652;6;0;false;false;63;95;191;;; -124658;4;0;false;false;;;;;; -124662;1;0;false;false;63;95;191;;; -124663;2;0;false;false;;;;;; -124665;6;0;false;false;63;95;191;;; -124671;1;0;false;false;;;;;; -124672;5;0;false;false;63;95;191;;; -124677;3;0;false;false;;;;;; -124680;2;0;false;false;63;95;191;;; -124682;2;0;false;false;;;;;; -124684;3;1;false;false;127;0;85;;; -124687;1;0;false;false;;;;;; -124688;19;0;false;false;0;0;0;;; -124707;1;0;false;false;;;;;; -124708;1;0;false;false;0;0;0;;; -124709;3;0;false;false;;;;;; -124712;3;1;false;false;127;0;85;;; -124715;1;0;false;false;;;;;; -124716;10;0;false;false;0;0;0;;; -124726;6;0;false;false;;;;;; -124732;2;1;false;false;127;0;85;;; -124734;1;0;false;false;;;;;; -124735;11;0;false;false;0;0;0;;; -124746;1;0;false;false;;;;;; -124747;2;0;false;false;0;0;0;;; -124749;1;0;false;false;;;;;; -124750;2;0;false;false;0;0;0;;; -124752;1;0;false;false;;;;;; -124753;1;0;false;false;0;0;0;;; -124754;4;0;false;false;;;;;; -124758;9;0;false;false;0;0;0;;; -124767;1;0;false;false;;;;;; -124768;1;0;false;false;0;0;0;;; -124769;1;0;false;false;;;;;; -124770;22;0;false;false;0;0;0;;; -124792;1;0;false;false;;;;;; -124793;1;0;false;false;0;0;0;;; -124794;1;0;false;false;;;;;; -124795;11;0;false;false;0;0;0;;; -124806;3;0;false;false;;;;;; -124809;1;0;false;false;0;0;0;;; -124810;3;0;false;false;;;;;; -124813;4;1;false;false;127;0;85;;; -124817;1;0;false;false;;;;;; -124818;1;0;false;false;0;0;0;;; -124819;4;0;false;false;;;;;; -124823;9;0;false;false;0;0;0;;; -124832;1;0;false;false;;;;;; -124833;1;0;false;false;0;0;0;;; -124834;1;0;false;false;;;;;; -124835;2;0;false;false;0;0;0;;; -124837;3;0;false;false;;;;;; -124840;1;0;false;false;0;0;0;;; -124841;3;0;false;false;;;;;; -124844;6;1;false;false;127;0;85;;; -124850;1;0;false;false;;;;;; -124851;10;0;false;false;0;0;0;;; -124861;2;0;false;false;;;;;; -124863;1;0;false;false;0;0;0;;; -124864;2;0;false;false;;;;;; -124866;3;0;false;false;63;95;191;;; -124869;3;0;false;false;;;;;; -124872;1;0;false;false;63;95;191;;; -124873;1;0;false;false;;;;;; -124874;7;0;false;false;63;95;191;;; -124881;1;0;false;false;;;;;; -124882;3;0;false;false;63;95;191;;; -124885;1;0;false;false;;;;;; -124886;4;0;false;false;63;95;191;;; -124890;1;0;false;false;;;;;; -124891;2;0;false;false;63;95;191;;; -124893;1;0;false;false;;;;;; -124894;3;0;false;false;63;95;191;;; -124897;1;0;false;false;;;;;; -124898;9;0;false;false;63;95;191;;; -124907;1;0;false;false;;;;;; -124908;6;0;false;false;63;95;191;;; -124914;1;0;false;false;;;;;; -124915;2;0;false;false;63;95;191;;; -124917;1;0;false;false;;;;;; -124918;3;0;false;false;63;95;191;;; -124921;1;0;false;false;;;;;; -124922;4;0;false;false;63;95;191;;; -124926;3;0;false;false;;;;;; -124929;1;0;false;false;63;95;191;;; -124930;1;0;false;false;;;;;; -124931;5;0;false;false;63;95;191;;; -124936;1;0;false;false;;;;;; -124937;1;0;false;false;63;95;191;;; -124938;1;0;false;false;;;;;; -124939;4;0;false;false;63;95;191;;; -124943;1;0;false;false;;;;;; -124944;6;0;false;false;63;95;191;;; -124950;1;0;false;false;;;;;; -124951;4;0;false;false;63;95;191;;; -124955;1;0;false;false;;;;;; -124956;14;0;false;false;63;95;191;;; -124970;1;0;false;false;;;;;; -124971;2;0;false;false;63;95;191;;; -124973;1;0;false;false;;;;;; -124974;4;0;false;false;63;95;191;;; -124978;1;0;false;false;;;;;; -124979;31;0;false;false;63;95;191;;; -125010;3;0;false;false;;;;;; -125013;1;0;false;false;63;95;191;;; -125014;1;0;false;false;;;;;; -125015;7;0;false;false;63;95;191;;; -125022;1;0;false;false;;;;;; -125023;3;0;false;false;63;95;191;;; -125026;1;0;false;false;;;;;; -125027;4;0;false;false;63;95;191;;; -125031;1;0;false;false;;;;;; -125032;2;0;false;false;63;95;191;;; -125034;1;0;false;false;;;;;; -125035;3;0;false;false;63;95;191;;; -125038;1;0;false;false;;;;;; -125039;6;0;false;false;63;95;191;;; -125045;1;0;false;false;;;;;; -125046;9;0;false;false;63;95;191;;; -125055;3;0;false;false;;;;;; -125058;1;0;false;false;63;95;191;;; -125059;3;0;false;false;;;;;; -125062;1;0;false;false;63;95;191;;; -125063;1;0;false;false;;;;;; -125064;7;1;false;false;127;159;191;;; -125071;6;0;false;false;63;95;191;;; -125077;1;0;false;false;;;;;; -125078;6;0;false;false;63;95;191;;; -125084;1;0;false;false;;;;;; -125085;8;0;false;false;63;95;191;;; -125093;1;0;false;false;;;;;; -125094;2;0;false;false;63;95;191;;; -125096;1;0;false;false;;;;;; -125097;3;0;false;false;63;95;191;;; -125100;1;0;false;false;;;;;; -125101;5;0;false;false;63;95;191;;; -125106;1;0;false;false;;;;;; -125107;2;0;false;false;63;95;191;;; -125109;1;0;false;false;;;;;; -125110;3;0;false;false;63;95;191;;; -125113;1;0;false;false;;;;;; -125114;8;0;false;false;63;95;191;;; -125122;4;0;false;false;;;;;; -125126;1;0;false;false;63;95;191;;; -125127;2;0;false;false;;;;;; -125129;1;0;false;false;63;95;191;;; -125130;1;0;false;false;;;;;; -125131;29;0;false;false;63;95;191;;; -125160;1;0;false;false;;;;;; -125161;1;0;false;false;63;95;191;;; -125162;1;0;false;false;;;;;; -125163;8;1;false;false;127;159;191;;; -125171;4;0;false;false;63;95;191;;; -125175;1;0;false;false;;;;;; -125176;2;0;false;false;63;95;191;;; -125178;1;0;false;false;;;;;; -125179;3;0;false;false;63;95;191;;; -125182;1;0;false;false;;;;;; -125183;9;0;false;false;63;95;191;;; -125192;1;0;false;false;;;;;; -125193;6;0;false;false;63;95;191;;; -125199;1;0;false;false;;;;;; -125200;2;0;false;false;63;95;191;;; -125202;1;0;false;false;;;;;; -125203;3;0;false;false;63;95;191;;; -125206;1;0;false;false;;;;;; -125207;4;0;false;false;63;95;191;;; -125211;3;0;false;false;;;;;; -125214;1;0;false;false;63;95;191;;; -125215;1;0;false;false;;;;;; -125216;11;1;false;false;127;159;191;;; -125227;12;0;false;false;63;95;191;;; -125239;1;0;false;false;;;;;; -125240;4;0;false;false;127;127;159;;; -125244;3;0;false;false;;;;;; -125247;1;0;false;false;63;95;191;;; -125248;4;0;false;false;;;;;; -125252;4;0;false;false;127;127;159;;; -125256;21;0;false;false;63;95;191;;; -125277;1;0;false;false;;;;;; -125278;1;0;false;false;127;127;159;;; -125279;1;0;false;false;;;;;; -125280;2;0;false;false;63;95;191;;; -125282;1;0;false;false;;;;;; -125283;3;0;false;false;63;95;191;;; -125286;1;0;false;false;;;;;; -125287;8;0;false;false;63;95;191;;; -125295;1;0;false;false;;;;;; -125296;3;0;false;false;63;95;191;;; -125299;1;0;false;false;;;;;; -125300;4;0;false;false;63;95;191;;; -125304;1;0;false;false;;;;;; -125305;8;0;false;false;63;95;191;;; -125313;5;0;false;false;127;127;159;;; -125318;3;0;false;false;;;;;; -125321;1;0;false;false;63;95;191;;; -125322;4;0;false;false;;;;;; -125326;4;0;false;false;127;127;159;;; -125330;27;0;false;false;63;95;191;;; -125357;1;0;false;false;;;;;; -125358;1;0;false;false;127;127;159;;; -125359;1;0;false;false;;;;;; -125360;2;0;false;false;63;95;191;;; -125362;1;0;false;false;;;;;; -125363;3;0;false;false;63;95;191;;; -125366;1;0;false;false;;;;;; -125367;6;0;false;false;63;95;191;;; -125373;1;0;false;false;;;;;; -125374;4;0;false;false;63;95;191;;; -125378;1;0;false;false;;;;;; -125379;3;0;false;false;63;95;191;;; -125382;1;0;false;false;;;;;; -125383;6;0;false;false;63;95;191;;; -125389;1;0;false;false;;;;;; -125390;4;0;false;false;63;95;191;;; -125394;1;0;false;false;;;;;; -125395;7;0;false;false;63;95;191;;; -125402;1;0;false;false;;;;;; -125403;3;0;false;false;63;95;191;;; -125406;1;0;false;false;;;;;; -125407;8;0;false;false;63;95;191;;; -125415;5;0;false;false;127;127;159;;; -125420;3;0;false;false;;;;;; -125423;1;0;false;false;63;95;191;;; -125424;1;0;false;false;;;;;; -125425;5;0;false;false;127;127;159;;; -125430;3;0;false;false;;;;;; -125433;1;0;false;false;63;95;191;;; -125434;1;0;false;false;;;;;; -125435;11;1;false;false;127;159;191;;; -125446;24;0;false;false;63;95;191;;; -125470;1;0;false;false;;;;;; -125471;4;0;false;false;127;127;159;;; -125475;3;0;false;false;;;;;; -125478;1;0;false;false;63;95;191;;; -125479;3;0;false;false;;;;;; -125482;4;0;false;false;127;127;159;;; -125486;19;0;false;false;63;95;191;;; -125505;1;0;false;false;;;;;; -125506;4;0;false;false;63;95;191;;; -125510;1;0;false;false;;;;;; -125511;3;0;false;false;63;95;191;;; -125514;1;0;false;false;;;;;; -125515;6;0;false;false;63;95;191;;; -125521;1;0;false;false;;;;;; -125522;2;0;false;false;63;95;191;;; -125524;1;0;false;false;;;;;; -125525;7;0;false;false;63;95;191;;; -125532;1;0;false;false;;;;;; -125533;3;0;false;false;63;95;191;;; -125536;1;0;false;false;;;;;; -125537;5;0;false;false;63;95;191;;; -125542;1;0;false;false;;;;;; -125543;5;0;false;false;63;95;191;;; -125548;1;0;false;false;;;;;; -125549;9;0;false;false;63;95;191;;; -125558;1;0;false;false;;;;;; -125559;15;0;false;false;63;95;191;;; -125574;5;0;false;false;127;127;159;;; -125579;4;0;false;false;;;;;; -125583;1;0;false;false;63;95;191;;; -125584;1;0;false;false;;;;;; -125585;5;0;false;false;127;127;159;;; -125590;3;0;false;false;;;;;; -125593;2;0;false;false;63;95;191;;; -125595;2;0;false;false;;;;;; -125597;6;1;false;false;127;0;85;;; -125603;1;0;false;false;;;;;; -125604;3;1;false;false;127;0;85;;; -125607;1;0;false;false;;;;;; -125608;16;0;false;false;0;0;0;;; -125624;3;1;false;false;127;0;85;;; -125627;1;0;false;false;;;;;; -125628;7;0;false;false;0;0;0;;; -125635;1;0;false;false;;;;;; -125636;1;0;false;false;0;0;0;;; -125637;3;0;false;false;;;;;; -125640;14;0;false;false;0;0;0;;; -125654;6;0;false;false;;;;;; -125660;2;1;false;false;127;0;85;;; -125662;1;0;false;false;;;;;; -125663;7;0;false;false;0;0;0;;; -125670;1;0;false;false;;;;;; -125671;1;0;false;false;0;0;0;;; -125672;1;0;false;false;;;;;; -125673;1;0;false;false;0;0;0;;; -125674;1;0;false;false;;;;;; -125675;2;0;false;false;0;0;0;;; -125677;1;0;false;false;;;;;; -125678;6;0;false;false;0;0;0;;; -125684;1;0;false;false;;;;;; -125685;1;0;false;false;0;0;0;;; -125686;1;0;false;false;;;;;; -125687;15;0;false;false;0;0;0;;; -125702;1;0;false;false;;;;;; -125703;1;0;false;false;0;0;0;;; -125704;4;0;false;false;;;;;; -125708;35;0;false;false;0;0;0;;; -125743;5;0;false;false;;;;;; -125748;1;0;false;false;0;0;0;;; -125749;3;0;false;false;;;;;; -125752;6;1;false;false;127;0;85;;; -125758;1;0;false;false;;;;;; -125759;39;0;false;false;0;0;0;;; -125798;2;0;false;false;;;;;; -125800;1;0;false;false;0;0;0;;; -125801;2;0;false;false;;;;;; -125803;3;0;false;false;63;95;191;;; -125806;3;0;false;false;;;;;; -125809;1;0;false;false;63;95;191;;; -125810;1;0;false;false;;;;;; -125811;7;0;false;false;63;95;191;;; -125818;1;0;false;false;;;;;; -125819;3;0;false;false;63;95;191;;; -125822;1;0;false;false;;;;;; -125823;4;0;false;false;63;95;191;;; -125827;1;0;false;false;;;;;; -125828;9;0;false;false;63;95;191;;; -125837;1;0;false;false;;;;;; -125838;4;0;false;false;63;95;191;;; -125842;1;0;false;false;;;;;; -125843;3;0;false;false;63;95;191;;; -125846;1;0;false;false;;;;;; -125847;8;0;false;false;63;95;191;;; -125855;1;0;false;false;;;;;; -125856;3;0;false;false;63;95;191;;; -125859;1;0;false;false;;;;;; -125860;5;0;false;false;63;95;191;;; -125865;1;0;false;false;;;;;; -125866;2;0;false;false;63;95;191;;; -125868;1;0;false;false;;;;;; -125869;3;0;false;false;63;95;191;;; -125872;1;0;false;false;;;;;; -125873;4;0;false;false;63;95;191;;; -125877;3;0;false;false;;;;;; -125880;1;0;false;false;63;95;191;;; -125881;1;0;false;false;;;;;; -125882;2;0;false;false;63;95;191;;; -125884;1;0;false;false;;;;;; -125885;5;0;false;false;63;95;191;;; -125890;1;0;false;false;;;;;; -125891;10;0;false;false;63;95;191;;; -125901;3;0;false;false;;;;;; -125904;1;0;false;false;63;95;191;;; -125905;1;0;false;false;;;;;; -125906;3;0;false;false;127;127;159;;; -125909;3;0;false;false;;;;;; -125912;1;0;false;false;63;95;191;;; -125913;3;0;false;false;;;;;; -125916;1;0;false;false;63;95;191;;; -125917;1;0;false;false;;;;;; -125918;8;1;false;false;127;159;191;;; -125926;4;0;false;false;63;95;191;;; -125930;1;0;false;false;;;;;; -125931;9;0;false;false;63;95;191;;; -125940;1;0;false;false;;;;;; -125941;4;0;false;false;63;95;191;;; -125945;1;0;false;false;;;;;; -125946;3;0;false;false;63;95;191;;; -125949;1;0;false;false;;;;;; -125950;8;0;false;false;63;95;191;;; -125958;1;0;false;false;;;;;; -125959;3;0;false;false;63;95;191;;; -125962;1;0;false;false;;;;;; -125963;5;0;false;false;63;95;191;;; -125968;1;0;false;false;;;;;; -125969;2;0;false;false;63;95;191;;; -125971;1;0;false;false;;;;;; -125972;3;0;false;false;63;95;191;;; -125975;1;0;false;false;;;;;; -125976;4;0;false;false;63;95;191;;; -125980;3;0;false;false;;;;;; -125983;1;0;false;false;63;95;191;;; -125984;1;0;false;false;;;;;; -125985;2;0;false;false;63;95;191;;; -125987;1;0;false;false;;;;;; -125988;5;0;false;false;63;95;191;;; -125993;1;0;false;false;;;;;; -125994;10;0;false;false;63;95;191;;; -126004;3;0;false;false;;;;;; -126007;1;0;false;false;63;95;191;;; -126008;1;0;false;false;;;;;; -126009;11;1;false;false;127;159;191;;; -126020;12;0;false;false;63;95;191;;; -126032;1;0;false;false;;;;;; -126033;4;0;false;false;127;127;159;;; -126037;3;0;false;false;;;;;; -126040;1;0;false;false;63;95;191;;; -126041;4;0;false;false;;;;;; -126045;4;0;false;false;127;127;159;;; -126049;21;0;false;false;63;95;191;;; -126070;1;0;false;false;;;;;; -126071;1;0;false;false;127;127;159;;; -126072;1;0;false;false;;;;;; -126073;2;0;false;false;63;95;191;;; -126075;1;0;false;false;;;;;; -126076;3;0;false;false;63;95;191;;; -126079;1;0;false;false;;;;;; -126080;8;0;false;false;63;95;191;;; -126088;1;0;false;false;;;;;; -126089;3;0;false;false;63;95;191;;; -126092;1;0;false;false;;;;;; -126093;4;0;false;false;63;95;191;;; -126097;1;0;false;false;;;;;; -126098;8;0;false;false;63;95;191;;; -126106;5;0;false;false;127;127;159;;; -126111;3;0;false;false;;;;;; -126114;1;0;false;false;63;95;191;;; -126115;4;0;false;false;;;;;; -126119;4;0;false;false;127;127;159;;; -126123;27;0;false;false;63;95;191;;; -126150;1;0;false;false;;;;;; -126151;1;0;false;false;127;127;159;;; -126152;1;0;false;false;;;;;; -126153;2;0;false;false;63;95;191;;; -126155;1;0;false;false;;;;;; -126156;3;0;false;false;63;95;191;;; -126159;1;0;false;false;;;;;; -126160;6;0;false;false;63;95;191;;; -126166;1;0;false;false;;;;;; -126167;4;0;false;false;63;95;191;;; -126171;1;0;false;false;;;;;; -126172;3;0;false;false;63;95;191;;; -126175;1;0;false;false;;;;;; -126176;6;0;false;false;63;95;191;;; -126182;1;0;false;false;;;;;; -126183;4;0;false;false;63;95;191;;; -126187;1;0;false;false;;;;;; -126188;7;0;false;false;63;95;191;;; -126195;1;0;false;false;;;;;; -126196;3;0;false;false;63;95;191;;; -126199;1;0;false;false;;;;;; -126200;8;0;false;false;63;95;191;;; -126208;5;0;false;false;127;127;159;;; -126213;3;0;false;false;;;;;; -126216;1;0;false;false;63;95;191;;; -126217;1;0;false;false;;;;;; -126218;5;0;false;false;127;127;159;;; -126223;3;0;false;false;;;;;; -126226;2;0;false;false;63;95;191;;; -126228;2;0;false;false;;;;;; -126230;6;1;false;false;127;0;85;;; -126236;1;0;false;false;;;;;; -126237;6;0;false;false;0;0;0;;; -126243;1;0;false;false;;;;;; -126244;18;0;false;false;0;0;0;;; -126262;1;0;false;false;;;;;; -126263;1;0;false;false;0;0;0;;; -126264;3;0;false;false;;;;;; -126267;14;0;false;false;0;0;0;;; -126281;3;0;false;false;;;;;; -126284;6;1;false;false;127;0;85;;; -126290;1;0;false;false;;;;;; -126291;27;0;false;false;0;0;0;;; -126318;2;0;false;false;;;;;; -126320;1;0;false;false;0;0;0;;; -126321;2;0;false;false;;;;;; -126323;3;0;false;false;63;95;191;;; -126326;3;0;false;false;;;;;; -126329;1;0;false;false;63;95;191;;; -126330;1;0;false;false;;;;;; -126331;7;0;false;false;63;95;191;;; -126338;1;0;false;false;;;;;; -126339;1;0;false;false;63;95;191;;; -126340;1;0;false;false;;;;;; -126341;15;0;false;false;63;95;191;;; -126356;1;0;false;false;;;;;; -126357;4;0;false;false;63;95;191;;; -126361;1;0;false;false;;;;;; -126362;3;0;false;false;63;95;191;;; -126365;1;0;false;false;;;;;; -126366;2;0;false;false;63;95;191;;; -126368;1;0;false;false;;;;;; -126369;4;0;false;false;63;95;191;;; -126373;1;0;false;false;;;;;; -126374;2;0;false;false;63;95;191;;; -126376;1;0;false;false;;;;;; -126377;7;0;false;false;63;95;191;;; -126384;1;0;false;false;;;;;; -126385;4;0;false;false;63;95;191;;; -126389;1;0;false;false;;;;;; -126390;4;0;false;false;63;95;191;;; -126394;4;0;false;false;;;;;; -126398;1;0;false;false;63;95;191;;; -126399;1;0;false;false;;;;;; -126400;2;0;false;false;63;95;191;;; -126402;1;0;false;false;;;;;; -126403;6;0;false;false;63;95;191;;; -126409;1;0;false;false;;;;;; -126410;3;0;false;false;63;95;191;;; -126413;1;0;false;false;;;;;; -126414;10;0;false;false;63;95;191;;; -126424;1;0;false;false;;;;;; -126425;5;0;false;false;63;95;191;;; -126430;1;0;false;false;;;;;; -126431;3;0;false;false;63;95;191;;; -126434;1;0;false;false;;;;;; -126435;1;0;false;false;63;95;191;;; -126436;1;0;false;false;;;;;; -126437;5;0;false;false;63;95;191;;; -126442;3;0;false;false;;;;;; -126445;1;0;false;false;63;95;191;;; -126446;1;0;false;false;;;;;; -126447;3;0;false;false;63;95;191;;; -126450;1;0;false;false;;;;;; -126451;9;0;false;false;63;95;191;;; -126460;1;0;false;false;;;;;; -126461;4;0;false;false;63;95;191;;; -126465;1;0;false;false;;;;;; -126466;3;0;false;false;63;95;191;;; -126469;1;0;false;false;;;;;; -126470;2;0;false;false;63;95;191;;; -126472;1;0;false;false;;;;;; -126473;1;0;false;false;63;95;191;;; -126474;1;0;false;false;;;;;; -126475;6;0;false;false;63;95;191;;; -126481;1;0;false;false;;;;;; -126482;9;0;false;false;63;95;191;;; -126491;1;0;false;false;;;;;; -126492;4;0;false;false;63;95;191;;; -126496;1;0;false;false;;;;;; -126497;2;0;false;false;63;95;191;;; -126499;1;0;false;false;;;;;; -126500;2;0;false;false;63;95;191;;; -126502;1;0;false;false;;;;;; -126503;4;0;false;false;63;95;191;;; -126507;4;0;false;false;;;;;; -126511;1;0;false;false;63;95;191;;; -126512;1;0;false;false;;;;;; -126513;4;0;false;false;63;95;191;;; -126517;1;0;false;false;;;;;; -126518;5;0;false;false;63;95;191;;; -126523;1;0;false;false;;;;;; -126524;3;0;false;false;63;95;191;;; -126527;1;0;false;false;;;;;; -126528;8;0;false;false;63;95;191;;; -126536;1;0;false;false;;;;;; -126537;6;0;false;false;63;95;191;;; -126543;1;0;false;false;;;;;; -126544;4;0;false;false;63;95;191;;; -126548;1;0;false;false;;;;;; -126549;6;0;false;false;63;95;191;;; -126555;1;0;false;false;;;;;; -126556;2;0;false;false;63;95;191;;; -126558;1;0;false;false;;;;;; -126559;3;0;false;false;63;95;191;;; -126562;1;0;false;false;;;;;; -126563;1;0;false;false;63;95;191;;; -126564;1;0;false;false;;;;;; -126565;7;0;false;false;63;95;191;;; -126572;4;0;false;false;;;;;; -126576;1;0;false;false;63;95;191;;; -126577;1;0;false;false;;;;;; -126578;11;0;false;false;63;95;191;;; -126589;1;0;false;false;;;;;; -126590;5;0;false;false;63;95;191;;; -126595;3;0;false;false;;;;;; -126598;1;0;false;false;63;95;191;;; -126599;1;0;false;false;;;;;; -126600;3;0;false;false;127;127;159;;; -126603;3;0;false;false;;;;;; -126606;1;0;false;false;63;95;191;;; -126607;3;0;false;false;;;;;; -126610;1;0;false;false;63;95;191;;; -126611;1;0;false;false;;;;;; -126612;7;1;false;false;127;159;191;;; -126619;10;0;false;false;63;95;191;;; -126629;1;0;false;false;;;;;; -126630;6;0;false;false;63;95;191;;; -126636;1;0;false;false;;;;;; -126637;2;0;false;false;63;95;191;;; -126639;1;0;false;false;;;;;; -126640;3;0;false;false;63;95;191;;; -126643;1;0;false;false;;;;;; -126644;5;0;false;false;63;95;191;;; -126649;1;0;false;false;;;;;; -126650;4;0;false;false;63;95;191;;; -126654;1;0;false;false;;;;;; -126655;3;0;false;false;63;95;191;;; -126658;1;0;false;false;;;;;; -126659;2;0;false;false;63;95;191;;; -126661;1;0;false;false;;;;;; -126662;3;0;false;false;63;95;191;;; -126665;1;0;false;false;;;;;; -126666;6;0;false;false;63;95;191;;; -126672;1;0;false;false;;;;;; -126673;2;0;false;false;63;95;191;;; -126675;3;0;false;false;;;;;; -126678;1;0;false;false;63;95;191;;; -126679;2;0;false;false;;;;;; -126681;1;0;false;false;63;95;191;;; -126682;1;0;false;false;;;;;; -126683;6;0;false;false;63;95;191;;; -126689;1;0;false;false;;;;;; -126690;4;0;false;false;63;95;191;;; -126694;1;0;false;false;;;;;; -126695;2;0;false;false;63;95;191;;; -126697;1;0;false;false;;;;;; -126698;3;0;false;false;63;95;191;;; -126701;1;0;false;false;;;;;; -126702;6;0;false;false;63;95;191;;; -126708;1;0;false;false;;;;;; -126709;2;0;false;false;63;95;191;;; -126711;1;0;false;false;;;;;; -126712;2;0;false;false;63;95;191;;; -126714;1;0;false;false;;;;;; -126715;4;0;false;false;63;95;191;;; -126719;1;0;false;false;;;;;; -126720;4;0;false;false;63;95;191;;; -126724;1;0;false;false;;;;;; -126725;5;0;false;false;63;95;191;;; -126730;3;0;false;false;;;;;; -126733;1;0;false;false;63;95;191;;; -126734;1;0;false;false;;;;;; -126735;7;1;false;false;127;159;191;;; -126742;4;0;false;false;63;95;191;;; -126746;1;0;false;false;;;;;; -126747;4;0;false;false;63;95;191;;; -126751;1;0;false;false;;;;;; -126752;5;0;false;false;63;95;191;;; -126757;1;0;false;false;;;;;; -126758;4;0;false;false;63;95;191;;; -126762;1;0;false;false;;;;;; -126763;3;0;false;false;63;95;191;;; -126766;1;0;false;false;;;;;; -126767;2;0;false;false;63;95;191;;; -126769;1;0;false;false;;;;;; -126770;3;0;false;false;63;95;191;;; -126773;1;0;false;false;;;;;; -126774;4;0;false;false;63;95;191;;; -126778;1;0;false;false;;;;;; -126779;2;0;false;false;63;95;191;;; -126781;1;0;false;false;;;;;; -126782;1;0;false;false;63;95;191;;; -126783;1;0;false;false;;;;;; -126784;10;0;false;false;63;95;191;;; -126794;1;0;false;false;;;;;; -126795;2;0;false;false;63;95;191;;; -126797;4;0;false;false;;;;;; -126801;1;0;false;false;63;95;191;;; -126802;2;0;false;false;;;;;; -126804;3;0;false;false;63;95;191;;; -126807;1;0;false;false;;;;;; -126808;6;0;false;false;63;95;191;;; -126814;1;0;false;false;;;;;; -126815;2;0;false;false;63;95;191;;; -126817;1;0;false;false;;;;;; -126818;2;0;false;false;63;95;191;;; -126820;1;0;false;false;;;;;; -126821;4;0;false;false;63;95;191;;; -126825;1;0;false;false;;;;;; -126826;4;0;false;false;63;95;191;;; -126830;1;0;false;false;;;;;; -126831;5;0;false;false;63;95;191;;; -126836;3;0;false;false;;;;;; -126839;1;0;false;false;63;95;191;;; -126840;1;0;false;false;;;;;; -126841;8;1;false;false;127;159;191;;; -126849;15;0;false;false;63;95;191;;; -126864;1;0;false;false;;;;;; -126865;4;0;false;false;63;95;191;;; -126869;1;0;false;false;;;;;; -126870;3;0;false;false;63;95;191;;; -126873;1;0;false;false;;;;;; -126874;2;0;false;false;63;95;191;;; -126876;1;0;false;false;;;;;; -126877;4;0;false;false;63;95;191;;; -126881;1;0;false;false;;;;;; -126882;2;0;false;false;63;95;191;;; -126884;1;0;false;false;;;;;; -126885;7;0;false;false;63;95;191;;; -126892;1;0;false;false;;;;;; -126893;4;0;false;false;63;95;191;;; -126897;1;0;false;false;;;;;; -126898;4;0;false;false;63;95;191;;; -126902;4;0;false;false;;;;;; -126906;1;0;false;false;63;95;191;;; -126907;2;0;false;false;;;;;; -126909;3;0;false;false;63;95;191;;; -126912;1;0;false;false;;;;;; -126913;3;0;false;false;63;95;191;;; -126916;1;0;false;false;;;;;; -126917;5;0;false;false;63;95;191;;; -126922;1;0;false;false;;;;;; -126923;5;0;false;false;63;95;191;;; -126928;3;0;false;false;;;;;; -126931;2;0;false;false;63;95;191;;; -126933;2;0;false;false;;;;;; -126935;15;0;false;false;0;0;0;;; -126950;1;0;false;false;;;;;; -126951;14;0;false;false;0;0;0;;; -126965;3;1;false;false;127;0;85;;; -126968;1;0;false;false;;;;;; -126969;10;0;false;false;0;0;0;;; -126979;1;0;false;false;;;;;; -126980;3;1;false;false;127;0;85;;; -126983;1;0;false;false;;;;;; -126984;11;0;false;false;0;0;0;;; -126995;1;0;false;false;;;;;; -126996;6;0;false;false;0;0;0;;; -127002;1;0;false;false;;;;;; -127003;5;0;false;false;0;0;0;;; -127008;1;0;false;false;;;;;; -127009;1;0;false;false;0;0;0;;; -127010;3;0;false;false;;;;;; -127013;15;0;false;false;0;0;0;;; -127028;1;0;false;false;;;;;; -127029;5;0;false;false;0;0;0;;; -127034;1;0;false;false;;;;;; -127035;1;0;false;false;0;0;0;;; -127036;1;0;false;false;;;;;; -127037;4;1;false;false;127;0;85;;; -127041;1;0;false;false;0;0;0;;; -127042;6;0;false;false;;;;;; -127048;2;1;false;false;127;0;85;;; -127050;1;0;false;false;;;;;; -127051;24;0;false;false;0;0;0;;; -127075;1;0;false;false;;;;;; -127076;1;0;false;false;0;0;0;;; -127077;4;0;false;false;;;;;; -127081;5;0;false;false;0;0;0;;; -127086;1;0;false;false;;;;;; -127087;1;0;false;false;0;0;0;;; -127088;1;0;false;false;;;;;; -127089;3;1;false;false;127;0;85;;; -127092;1;0;false;false;;;;;; -127093;32;0;false;false;0;0;0;;; -127125;6;0;false;false;;;;;; -127131;2;1;false;false;127;0;85;;; -127133;1;0;false;false;;;;;; -127134;10;0;false;false;0;0;0;;; -127144;1;0;false;false;;;;;; -127145;1;0;false;false;0;0;0;;; -127146;8;0;false;false;;;;;; -127154;73;0;false;false;63;127;95;;; -127227;6;0;false;false;;;;;; -127233;3;1;false;false;127;0;85;;; -127236;1;0;false;false;;;;;; -127237;9;0;false;false;0;0;0;;; -127246;1;0;false;false;;;;;; -127247;1;0;false;false;0;0;0;;; -127248;1;0;false;false;;;;;; -127249;43;0;false;false;0;0;0;;; -127292;16;0;false;false;;;;;; -127308;12;0;false;false;0;0;0;;; -127320;1;0;false;false;;;;;; -127321;1;0;false;false;0;0;0;;; -127322;1;0;false;false;;;;;; -127323;42;0;false;false;0;0;0;;; -127365;5;0;false;false;;;;;; -127370;10;0;false;false;0;0;0;;; -127380;1;0;false;false;;;;;; -127381;1;0;false;false;0;0;0;;; -127382;1;0;false;false;;;;;; -127383;34;0;false;false;0;0;0;;; -127417;4;0;false;false;;;;;; -127421;1;0;false;false;0;0;0;;; -127422;4;0;false;false;;;;;; -127426;4;1;false;false;127;0;85;;; -127430;1;0;false;false;;;;;; -127431;1;0;false;false;0;0;0;;; -127432;5;0;false;false;;;;;; -127437;12;0;false;false;0;0;0;;; -127449;1;0;false;false;;;;;; -127450;1;0;false;false;0;0;0;;; -127451;1;0;false;false;;;;;; -127452;11;0;false;false;0;0;0;;; -127463;5;0;false;false;;;;;; -127468;10;0;false;false;0;0;0;;; -127478;1;0;false;false;;;;;; -127479;1;0;false;false;0;0;0;;; -127480;1;0;false;false;;;;;; -127481;5;0;false;false;0;0;0;;; -127486;4;0;false;false;;;;;; -127490;1;0;false;false;0;0;0;;; -127491;4;0;false;false;;;;;; -127495;26;0;false;false;0;0;0;;; -127521;1;0;false;false;;;;;; -127522;7;0;false;false;0;0;0;;; -127529;3;0;false;false;;;;;; -127532;1;0;false;false;0;0;0;;; -127533;3;0;false;false;;;;;; -127536;6;1;false;false;127;0;85;;; -127542;1;0;false;false;;;;;; -127543;6;0;false;false;0;0;0;;; -127549;3;0;false;false;;;;;; -127552;1;0;false;false;0;0;0;;; -127553;2;0;false;false;;;;;; -127555;3;0;false;false;63;95;191;;; -127558;3;0;false;false;;;;;; -127561;1;0;false;false;63;95;191;;; -127562;1;0;false;false;;;;;; -127563;7;0;false;false;63;95;191;;; -127570;1;0;false;false;;;;;; -127571;3;0;false;false;63;95;191;;; -127574;1;0;false;false;;;;;; -127575;4;0;false;false;63;95;191;;; -127579;1;0;false;false;;;;;; -127580;7;0;false;false;63;95;191;;; -127587;3;0;false;false;;;;;; -127590;1;0;false;false;63;95;191;;; -127591;1;0;false;false;;;;;; -127592;3;0;false;false;127;127;159;;; -127595;3;0;false;false;;;;;; -127598;1;0;false;false;63;95;191;;; -127599;3;0;false;false;;;;;; -127602;1;0;false;false;63;95;191;;; -127603;1;0;false;false;;;;;; -127604;8;1;false;false;127;159;191;;; -127612;4;0;false;false;63;95;191;;; -127616;1;0;false;false;;;;;; -127617;6;0;false;false;63;95;191;;; -127623;1;0;false;false;;;;;; -127624;2;0;false;false;63;95;191;;; -127626;1;0;false;false;;;;;; -127627;6;0;false;false;63;95;191;;; -127633;3;0;false;false;;;;;; -127636;1;0;false;false;63;95;191;;; -127637;1;0;false;false;;;;;; -127638;11;1;false;false;127;159;191;;; -127649;12;0;false;false;63;95;191;;; -127661;1;0;false;false;;;;;; -127662;4;0;false;false;127;127;159;;; -127666;3;0;false;false;;;;;; -127669;1;0;false;false;63;95;191;;; -127670;4;0;false;false;;;;;; -127674;4;0;false;false;127;127;159;;; -127678;21;0;false;false;63;95;191;;; -127699;1;0;false;false;;;;;; -127700;1;0;false;false;127;127;159;;; -127701;1;0;false;false;;;;;; -127702;2;0;false;false;63;95;191;;; -127704;1;0;false;false;;;;;; -127705;3;0;false;false;63;95;191;;; -127708;1;0;false;false;;;;;; -127709;8;0;false;false;63;95;191;;; -127717;1;0;false;false;;;;;; -127718;3;0;false;false;63;95;191;;; -127721;1;0;false;false;;;;;; -127722;4;0;false;false;63;95;191;;; -127726;1;0;false;false;;;;;; -127727;8;0;false;false;63;95;191;;; -127735;5;0;false;false;127;127;159;;; -127740;3;0;false;false;;;;;; -127743;1;0;false;false;63;95;191;;; -127744;4;0;false;false;;;;;; -127748;4;0;false;false;127;127;159;;; -127752;27;0;false;false;63;95;191;;; -127779;1;0;false;false;;;;;; -127780;1;0;false;false;127;127;159;;; -127781;1;0;false;false;;;;;; -127782;2;0;false;false;63;95;191;;; -127784;1;0;false;false;;;;;; -127785;3;0;false;false;63;95;191;;; -127788;1;0;false;false;;;;;; -127789;6;0;false;false;63;95;191;;; -127795;1;0;false;false;;;;;; -127796;4;0;false;false;63;95;191;;; -127800;1;0;false;false;;;;;; -127801;3;0;false;false;63;95;191;;; -127804;1;0;false;false;;;;;; -127805;6;0;false;false;63;95;191;;; -127811;1;0;false;false;;;;;; -127812;4;0;false;false;63;95;191;;; -127816;1;0;false;false;;;;;; -127817;7;0;false;false;63;95;191;;; -127824;1;0;false;false;;;;;; -127825;3;0;false;false;63;95;191;;; -127828;1;0;false;false;;;;;; -127829;8;0;false;false;63;95;191;;; -127837;5;0;false;false;127;127;159;;; -127842;3;0;false;false;;;;;; -127845;1;0;false;false;63;95;191;;; -127846;1;0;false;false;;;;;; -127847;5;0;false;false;127;127;159;;; -127852;3;0;false;false;;;;;; -127855;2;0;false;false;63;95;191;;; -127857;2;0;false;false;;;;;; -127859;6;1;false;false;127;0;85;;; -127865;1;0;false;false;;;;;; -127866;3;1;false;false;127;0;85;;; -127869;1;0;false;false;;;;;; -127870;15;0;false;false;0;0;0;;; -127885;1;0;false;false;;;;;; -127886;1;0;false;false;0;0;0;;; -127887;3;0;false;false;;;;;; -127890;14;0;false;false;0;0;0;;; -127904;3;0;false;false;;;;;; -127907;6;1;false;false;127;0;85;;; -127913;1;0;false;false;;;;;; -127914;11;0;false;false;0;0;0;;; -127925;2;0;false;false;;;;;; -127927;1;0;false;false;0;0;0;;; -127928;2;0;false;false;;;;;; -127930;3;0;false;false;63;95;191;;; -127933;3;0;false;false;;;;;; -127936;1;0;false;false;63;95;191;;; -127937;1;0;false;false;;;;;; -127938;7;0;false;false;63;95;191;;; -127945;1;0;false;false;;;;;; -127946;1;0;false;false;63;95;191;;; -127947;1;0;false;false;;;;;; -127948;9;0;false;false;63;95;191;;; -127957;1;0;false;false;;;;;; -127958;15;0;false;false;63;95;191;;; -127973;1;0;false;false;;;;;; -127974;9;0;false;false;63;95;191;;; -127983;1;0;false;false;;;;;; -127984;2;0;false;false;63;95;191;;; -127986;1;0;false;false;;;;;; -127987;7;0;false;false;63;95;191;;; -127994;1;0;false;false;;;;;; -127995;2;0;false;false;63;95;191;;; -127997;1;0;false;false;;;;;; -127998;3;0;false;false;63;95;191;;; -128001;3;0;false;false;;;;;; -128004;1;0;false;false;63;95;191;;; -128005;1;0;false;false;;;;;; -128006;4;0;false;false;63;95;191;;; -128010;1;0;false;false;;;;;; -128011;4;0;false;false;63;95;191;;; -128015;1;0;false;false;;;;;; -128016;2;0;false;false;63;95;191;;; -128018;1;0;false;false;;;;;; -128019;2;0;false;false;63;95;191;;; -128021;1;0;false;false;;;;;; -128022;4;0;false;false;63;95;191;;; -128026;1;0;false;false;;;;;; -128027;3;0;false;false;63;95;191;;; -128030;1;0;false;false;;;;;; -128031;2;0;false;false;63;95;191;;; -128033;1;0;false;false;;;;;; -128034;1;0;false;false;63;95;191;;; -128035;1;0;false;false;;;;;; -128036;4;0;false;false;63;95;191;;; -128040;1;0;false;false;;;;;; -128041;8;0;false;false;63;95;191;;; -128049;1;0;false;false;;;;;; -128050;2;0;false;false;63;95;191;;; -128052;1;0;false;false;;;;;; -128053;4;0;false;false;63;95;191;;; -128057;1;0;false;false;;;;;; -128058;5;0;false;false;63;95;191;;; -128063;4;0;false;false;;;;;; -128067;1;0;false;false;63;95;191;;; -128068;1;0;false;false;;;;;; -128069;11;0;false;false;63;95;191;;; -128080;1;0;false;false;;;;;; -128081;15;0;false;false;63;95;191;;; -128096;3;0;false;false;;;;;; -128099;1;0;false;false;63;95;191;;; -128100;1;0;false;false;;;;;; -128101;3;0;false;false;127;127;159;;; -128104;3;0;false;false;;;;;; -128107;1;0;false;false;63;95;191;;; -128108;4;0;false;false;;;;;; -128112;1;0;false;false;63;95;191;;; -128113;1;0;false;false;;;;;; -128114;7;1;false;false;127;159;191;;; -128121;7;0;false;false;63;95;191;;; -128128;1;0;false;false;;;;;; -128129;17;0;false;false;63;95;191;;; -128146;1;0;false;false;;;;;; -128147;2;0;false;false;63;95;191;;; -128149;1;0;false;false;;;;;; -128150;6;0;false;false;63;95;191;;; -128156;1;0;false;false;;;;;; -128157;3;0;false;false;63;95;191;;; -128160;1;0;false;false;;;;;; -128161;9;0;false;false;63;95;191;;; -128170;1;0;false;false;;;;;; -128171;3;0;false;false;63;95;191;;; -128174;3;0;false;false;;;;;; -128177;1;0;false;false;63;95;191;;; -128178;1;0;false;false;;;;;; -128179;8;1;false;false;127;159;191;;; -128187;1;0;false;false;63;95;191;;; -128188;1;0;false;false;;;;;; -128189;9;0;false;false;63;95;191;;; -128198;1;0;false;false;;;;;; -128199;14;0;false;false;63;95;191;;; -128213;3;0;false;false;;;;;; -128216;2;0;false;false;63;95;191;;; -128218;2;0;false;false;;;;;; -128220;9;0;false;false;0;0;0;;; -128229;1;0;false;false;;;;;; -128230;30;0;false;false;0;0;0;;; -128260;1;0;false;false;;;;;; -128261;8;0;false;false;0;0;0;;; -128269;1;0;false;false;;;;;; -128270;1;0;false;false;0;0;0;;; -128271;3;0;false;false;;;;;; -128274;9;0;false;false;0;0;0;;; -128283;1;0;false;false;;;;;; -128284;10;0;false;false;0;0;0;;; -128294;9;0;false;false;;;;;; -128303;2;1;false;false;127;0;85;;; -128305;1;0;false;false;;;;;; -128306;10;0;false;false;0;0;0;;; -128316;1;0;false;false;;;;;; -128317;1;0;false;false;0;0;0;;; -128318;4;0;false;false;;;;;; -128322;9;0;false;false;0;0;0;;; -128331;1;0;false;false;;;;;; -128332;1;0;false;false;0;0;0;;; -128333;1;0;false;false;;;;;; -128334;3;1;false;false;127;0;85;;; -128337;1;0;false;false;;;;;; -128338;14;0;false;false;0;0;0;;; -128352;4;1;false;false;127;0;85;;; -128356;1;0;false;false;0;0;0;;; -128357;1;0;false;false;;;;;; -128358;16;0;false;false;0;0;0;;; -128374;1;0;false;false;;;;;; -128375;9;0;false;false;0;0;0;;; -128384;3;0;false;false;;;;;; -128387;1;0;false;false;0;0;0;;; -128388;3;0;false;false;;;;;; -128391;4;1;false;false;127;0;85;;; -128395;1;0;false;false;;;;;; -128396;1;0;false;false;0;0;0;;; -128397;4;0;false;false;;;;;; -128401;9;0;false;false;0;0;0;;; -128410;1;0;false;false;;;;;; -128411;1;0;false;false;0;0;0;;; -128412;1;0;false;false;;;;;; -128413;3;1;false;false;127;0;85;;; -128416;1;0;false;false;;;;;; -128417;18;0;false;false;0;0;0;;; -128435;4;1;false;false;127;0;85;;; -128439;1;0;false;false;0;0;0;;; -128440;1;0;false;false;;;;;; -128441;9;0;false;false;0;0;0;;; -128450;3;0;false;false;;;;;; -128453;1;0;false;false;0;0;0;;; -128454;3;0;false;false;;;;;; -128457;6;1;false;false;127;0;85;;; -128463;1;0;false;false;;;;;; -128464;10;0;false;false;0;0;0;;; -128474;2;0;false;false;;;;;; -128476;1;0;false;false;0;0;0;;; -128477;2;0;false;false;;;;;; -128479;3;0;false;false;63;95;191;;; -128482;3;0;false;false;;;;;; -128485;1;0;false;false;63;95;191;;; -128486;1;0;false;false;;;;;; -128487;7;0;false;false;63;95;191;;; -128494;1;0;false;false;;;;;; -128495;3;0;false;false;63;95;191;;; -128498;1;0;false;false;;;;;; -128499;4;0;false;false;63;95;191;;; -128503;1;0;false;false;;;;;; -128504;5;0;false;false;63;95;191;;; -128509;1;0;false;false;;;;;; -128510;4;0;false;false;63;95;191;;; -128514;1;0;false;false;;;;;; -128515;3;0;false;false;63;95;191;;; -128518;1;0;false;false;;;;;; -128519;3;0;false;false;63;95;191;;; -128522;1;0;false;false;;;;;; -128523;5;0;false;false;63;95;191;;; -128528;1;0;false;false;;;;;; -128529;4;0;false;false;63;95;191;;; -128533;1;0;false;false;;;;;; -128534;2;0;false;false;63;95;191;;; -128536;1;0;false;false;;;;;; -128537;4;0;false;false;63;95;191;;; -128541;1;0;false;false;;;;;; -128542;2;0;false;false;63;95;191;;; -128544;1;0;false;false;;;;;; -128545;5;0;false;false;63;95;191;;; -128550;1;0;false;false;;;;;; -128551;2;0;false;false;63;95;191;;; -128553;4;0;false;false;;;;;; -128557;1;0;false;false;63;95;191;;; -128558;1;0;false;false;;;;;; -128559;5;0;false;false;63;95;191;;; -128564;1;0;false;false;;;;;; -128565;2;0;false;false;63;95;191;;; -128567;1;0;false;false;;;;;; -128568;5;0;false;false;63;95;191;;; -128573;1;0;false;false;;;;;; -128574;2;0;false;false;63;95;191;;; -128576;1;0;false;false;;;;;; -128577;1;0;false;false;63;95;191;;; -128578;1;0;false;false;;;;;; -128579;17;0;false;false;63;95;191;;; -128596;1;0;false;false;;;;;; -128597;3;0;false;false;63;95;191;;; -128600;1;0;false;false;;;;;; -128601;2;0;false;false;63;95;191;;; -128603;1;0;false;false;;;;;; -128604;4;0;false;false;63;95;191;;; -128608;1;0;false;false;;;;;; -128609;3;0;false;false;63;95;191;;; -128612;1;0;false;false;;;;;; -128613;3;0;false;false;63;95;191;;; -128616;1;0;false;false;;;;;; -128617;3;0;false;false;63;95;191;;; -128620;1;0;false;false;;;;;; -128621;7;0;false;false;63;95;191;;; -128628;4;0;false;false;;;;;; -128632;1;0;false;false;63;95;191;;; -128633;1;0;false;false;;;;;; -128634;3;0;false;false;63;95;191;;; -128637;1;0;false;false;;;;;; -128638;22;0;false;false;63;95;191;;; -128660;1;0;false;false;;;;;; -128661;5;0;false;false;63;95;191;;; -128666;1;0;false;false;;;;;; -128667;4;0;false;false;63;95;191;;; -128671;1;0;false;false;;;;;; -128672;2;0;false;false;63;95;191;;; -128674;1;0;false;false;;;;;; -128675;11;0;false;false;63;95;191;;; -128686;1;0;false;false;;;;;; -128687;2;0;false;false;63;95;191;;; -128689;1;0;false;false;;;;;; -128690;2;0;false;false;63;95;191;;; -128692;1;0;false;false;;;;;; -128693;5;0;false;false;63;95;191;;; -128698;4;0;false;false;;;;;; -128702;1;0;false;false;63;95;191;;; -128703;1;0;false;false;;;;;; -128704;6;0;false;false;63;95;191;;; -128710;3;0;false;false;;;;;; -128713;1;0;false;false;63;95;191;;; -128714;1;0;false;false;;;;;; -128715;3;0;false;false;127;127;159;;; -128718;3;0;false;false;;;;;; -128721;1;0;false;false;63;95;191;;; -128722;4;0;false;false;;;;;; -128726;1;0;false;false;63;95;191;;; -128727;1;0;false;false;;;;;; -128728;7;1;false;false;127;159;191;;; -128735;10;0;false;false;63;95;191;;; -128745;1;0;false;false;;;;;; -128746;6;0;false;false;63;95;191;;; -128752;1;0;false;false;;;;;; -128753;2;0;false;false;63;95;191;;; -128755;1;0;false;false;;;;;; -128756;3;0;false;false;63;95;191;;; -128759;1;0;false;false;;;;;; -128760;4;0;false;false;63;95;191;;; -128764;1;0;false;false;;;;;; -128765;5;0;false;false;63;95;191;;; -128770;1;0;false;false;;;;;; -128771;8;0;false;false;63;95;191;;; -128779;1;0;false;false;;;;;; -128780;2;0;false;false;63;95;191;;; -128782;1;0;false;false;;;;;; -128783;3;0;false;false;63;95;191;;; -128786;1;0;false;false;;;;;; -128787;5;0;false;false;63;95;191;;; -128792;1;0;false;false;;;;;; -128793;2;0;false;false;63;95;191;;; -128795;4;0;false;false;;;;;; -128799;1;0;false;false;63;95;191;;; -128800;2;0;false;false;;;;;; -128802;3;0;false;false;63;95;191;;; -128805;1;0;false;false;;;;;; -128806;8;0;false;false;63;95;191;;; -128814;3;0;false;false;;;;;; -128817;1;0;false;false;63;95;191;;; -128818;1;0;false;false;;;;;; -128819;7;1;false;false;127;159;191;;; -128826;4;0;false;false;63;95;191;;; -128830;1;0;false;false;;;;;; -128831;4;0;false;false;63;95;191;;; -128835;1;0;false;false;;;;;; -128836;2;0;false;false;63;95;191;;; -128838;1;0;false;false;;;;;; -128839;3;0;false;false;63;95;191;;; -128842;1;0;false;false;;;;;; -128843;4;0;false;false;63;95;191;;; -128847;1;0;false;false;;;;;; -128848;6;0;false;false;63;95;191;;; -128854;1;0;false;false;;;;;; -128855;3;0;false;false;63;95;191;;; -128858;3;0;false;false;;;;;; -128861;1;0;false;false;63;95;191;;; -128862;1;0;false;false;;;;;; -128863;8;1;false;false;127;159;191;;; -128871;4;0;false;false;63;95;191;;; -128875;1;0;false;false;;;;;; -128876;5;0;false;false;63;95;191;;; -128881;1;0;false;false;;;;;; -128882;4;0;false;false;63;95;191;;; -128886;1;0;false;false;;;;;; -128887;3;0;false;false;63;95;191;;; -128890;1;0;false;false;;;;;; -128891;3;0;false;false;63;95;191;;; -128894;1;0;false;false;;;;;; -128895;5;0;false;false;63;95;191;;; -128900;1;0;false;false;;;;;; -128901;5;0;false;false;63;95;191;;; -128906;1;0;false;false;;;;;; -128907;6;0;false;false;63;95;191;;; -128913;1;0;false;false;;;;;; -128914;3;0;false;false;63;95;191;;; -128917;1;0;false;false;;;;;; -128918;5;0;false;false;63;95;191;;; -128923;1;0;false;false;;;;;; -128924;6;0;false;false;63;95;191;;; -128930;4;0;false;false;;;;;; -128934;1;0;false;false;63;95;191;;; -128935;2;0;false;false;;;;;; -128937;4;0;false;false;63;95;191;;; -128941;1;0;false;false;;;;;; -128942;5;0;false;false;63;95;191;;; -128947;1;0;false;false;;;;;; -128948;3;0;false;false;63;95;191;;; -128951;1;0;false;false;;;;;; -128952;3;0;false;false;63;95;191;;; -128955;1;0;false;false;;;;;; -128956;5;0;false;false;63;95;191;;; -128961;1;0;false;false;;;;;; -128962;4;0;false;false;63;95;191;;; -128966;1;0;false;false;;;;;; -128967;3;0;false;false;63;95;191;;; -128970;3;0;false;false;;;;;; -128973;2;0;false;false;63;95;191;;; -128975;2;0;false;false;;;;;; -128977;15;0;false;false;0;0;0;;; -128992;1;0;false;false;;;;;; -128993;17;0;false;false;0;0;0;;; -129010;3;1;false;false;127;0;85;;; -129013;1;0;false;false;;;;;; -129014;11;0;false;false;0;0;0;;; -129025;1;0;false;false;;;;;; -129026;6;0;false;false;0;0;0;;; -129032;1;0;false;false;;;;;; -129033;5;0;false;false;0;0;0;;; -129038;1;0;false;false;;;;;; -129039;1;0;false;false;0;0;0;;; -129040;3;0;false;false;;;;;; -129043;6;1;false;false;127;0;85;;; -129049;1;0;false;false;;;;;; -129050;27;0;false;false;0;0;0;;; -129077;1;0;false;false;;;;;; -129078;11;0;false;false;0;0;0;;; -129089;1;0;false;false;;;;;; -129090;6;0;false;false;0;0;0;;; -129096;2;0;false;false;;;;;; -129098;1;0;false;false;0;0;0;;; -129099;2;0;false;false;;;;;; -129101;3;0;false;false;63;95;191;;; -129104;3;0;false;false;;;;;; -129107;1;0;false;false;63;95;191;;; -129108;1;0;false;false;;;;;; -129109;7;0;false;false;63;95;191;;; -129116;1;0;false;false;;;;;; -129117;3;0;false;false;63;95;191;;; -129120;1;0;false;false;;;;;; -129121;2;0;false;false;63;95;191;;; -129123;1;0;false;false;;;;;; -129124;1;0;false;false;63;95;191;;; -129125;1;0;false;false;;;;;; -129126;8;0;false;false;63;95;191;;; -129134;1;0;false;false;;;;;; -129135;2;0;false;false;63;95;191;;; -129137;1;0;false;false;;;;;; -129138;3;0;false;false;63;95;191;;; -129141;1;0;false;false;;;;;; -129142;5;0;false;false;63;95;191;;; -129147;1;0;false;false;;;;;; -129148;4;0;false;false;63;95;191;;; -129152;1;0;false;false;;;;;; -129153;6;0;false;false;63;95;191;;; -129159;1;0;false;false;;;;;; -129160;2;0;false;false;63;95;191;;; -129162;1;0;false;false;;;;;; -129163;3;0;false;false;63;95;191;;; -129166;1;0;false;false;;;;;; -129167;9;0;false;false;63;95;191;;; -129176;4;0;false;false;;;;;; -129180;1;0;false;false;63;95;191;;; -129181;1;0;false;false;;;;;; -129182;8;0;false;false;63;95;191;;; -129190;1;0;false;false;;;;;; -129191;3;0;false;false;63;95;191;;; -129194;1;0;false;false;;;;;; -129195;2;0;false;false;63;95;191;;; -129197;1;0;false;false;;;;;; -129198;3;0;false;false;63;95;191;;; -129201;1;0;false;false;;;;;; -129202;9;0;false;false;63;95;191;;; -129211;1;0;false;false;;;;;; -129212;6;0;false;false;63;95;191;;; -129218;1;0;false;false;;;;;; -129219;2;0;false;false;63;95;191;;; -129221;1;0;false;false;;;;;; -129222;3;0;false;false;63;95;191;;; -129225;1;0;false;false;;;;;; -129226;5;0;false;false;63;95;191;;; -129231;1;0;false;false;;;;;; -129232;3;0;false;false;63;95;191;;; -129235;1;0;false;false;;;;;; -129236;5;0;false;false;63;95;191;;; -129241;1;0;false;false;;;;;; -129242;2;0;false;false;63;95;191;;; -129244;4;0;false;false;;;;;; -129248;1;0;false;false;63;95;191;;; -129249;1;0;false;false;;;;;; -129250;8;0;false;false;63;95;191;;; -129258;1;0;false;false;;;;;; -129259;2;0;false;false;63;95;191;;; -129261;1;0;false;false;;;;;; -129262;3;0;false;false;63;95;191;;; -129265;1;0;false;false;;;;;; -129266;5;0;false;false;63;95;191;;; -129271;1;0;false;false;;;;;; -129272;4;0;false;false;63;95;191;;; -129276;1;0;false;false;;;;;; -129277;6;0;false;false;63;95;191;;; -129283;1;0;false;false;;;;;; -129284;2;0;false;false;63;95;191;;; -129286;1;0;false;false;;;;;; -129287;3;0;false;false;63;95;191;;; -129290;1;0;false;false;;;;;; -129291;6;0;false;false;63;95;191;;; -129297;1;0;false;false;;;;;; -129298;6;0;false;false;63;95;191;;; -129304;1;0;false;false;;;;;; -129305;5;0;false;false;63;95;191;;; -129310;3;0;false;false;;;;;; -129313;1;0;false;false;63;95;191;;; -129314;1;0;false;false;;;;;; -129315;3;0;false;false;127;127;159;;; -129318;3;0;false;false;;;;;; -129321;1;0;false;false;63;95;191;;; -129322;3;0;false;false;;;;;; -129325;1;0;false;false;63;95;191;;; -129326;1;0;false;false;;;;;; -129327;7;1;false;false;127;159;191;;; -129334;6;0;false;false;63;95;191;;; -129340;1;0;false;false;;;;;; -129341;6;0;false;false;63;95;191;;; -129347;1;0;false;false;;;;;; -129348;8;0;false;false;63;95;191;;; -129356;1;0;false;false;;;;;; -129357;2;0;false;false;63;95;191;;; -129359;1;0;false;false;;;;;; -129360;3;0;false;false;63;95;191;;; -129363;1;0;false;false;;;;;; -129364;5;0;false;false;63;95;191;;; -129369;1;0;false;false;;;;;; -129370;2;0;false;false;63;95;191;;; -129372;1;0;false;false;;;;;; -129373;3;0;false;false;63;95;191;;; -129376;1;0;false;false;;;;;; -129377;8;0;false;false;63;95;191;;; -129385;4;0;false;false;;;;;; -129389;1;0;false;false;63;95;191;;; -129390;2;0;false;false;;;;;; -129392;1;0;false;false;63;95;191;;; -129393;1;0;false;false;;;;;; -129394;29;0;false;false;63;95;191;;; -129423;1;0;false;false;;;;;; -129424;1;0;false;false;63;95;191;;; -129425;1;0;false;false;;;;;; -129426;8;1;false;false;127;159;191;;; -129434;2;0;false;false;63;95;191;;; -129436;1;0;false;false;;;;;; -129437;1;0;false;false;63;95;191;;; -129438;1;0;false;false;;;;;; -129439;8;0;false;false;63;95;191;;; -129447;1;0;false;false;;;;;; -129448;2;0;false;false;63;95;191;;; -129450;1;0;false;false;;;;;; -129451;3;0;false;false;63;95;191;;; -129454;1;0;false;false;;;;;; -129455;5;0;false;false;63;95;191;;; -129460;1;0;false;false;;;;;; -129461;4;0;false;false;63;95;191;;; -129465;1;0;false;false;;;;;; -129466;6;0;false;false;63;95;191;;; -129472;1;0;false;false;;;;;; -129473;2;0;false;false;63;95;191;;; -129475;1;0;false;false;;;;;; -129476;3;0;false;false;63;95;191;;; -129479;1;0;false;false;;;;;; -129480;9;0;false;false;63;95;191;;; -129489;4;0;false;false;;;;;; -129493;1;0;false;false;63;95;191;;; -129494;2;0;false;false;;;;;; -129496;8;0;false;false;63;95;191;;; -129504;1;0;false;false;;;;;; -129505;3;0;false;false;63;95;191;;; -129508;1;0;false;false;;;;;; -129509;2;0;false;false;63;95;191;;; -129511;1;0;false;false;;;;;; -129512;3;0;false;false;63;95;191;;; -129515;1;0;false;false;;;;;; -129516;9;0;false;false;63;95;191;;; -129525;1;0;false;false;;;;;; -129526;6;0;false;false;63;95;191;;; -129532;1;0;false;false;;;;;; -129533;2;0;false;false;63;95;191;;; -129535;1;0;false;false;;;;;; -129536;3;0;false;false;63;95;191;;; -129539;1;0;false;false;;;;;; -129540;5;0;false;false;63;95;191;;; -129545;3;0;false;false;;;;;; -129548;1;0;false;false;63;95;191;;; -129549;1;0;false;false;;;;;; -129550;11;1;false;false;127;159;191;;; -129561;12;0;false;false;63;95;191;;; -129573;1;0;false;false;;;;;; -129574;4;0;false;false;127;127;159;;; -129578;3;0;false;false;;;;;; -129581;1;0;false;false;63;95;191;;; -129582;4;0;false;false;;;;;; -129586;4;0;false;false;127;127;159;;; -129590;21;0;false;false;63;95;191;;; -129611;1;0;false;false;;;;;; -129612;1;0;false;false;127;127;159;;; -129613;1;0;false;false;;;;;; -129614;2;0;false;false;63;95;191;;; -129616;1;0;false;false;;;;;; -129617;3;0;false;false;63;95;191;;; -129620;1;0;false;false;;;;;; -129621;8;0;false;false;63;95;191;;; -129629;1;0;false;false;;;;;; -129630;3;0;false;false;63;95;191;;; -129633;1;0;false;false;;;;;; -129634;4;0;false;false;63;95;191;;; -129638;1;0;false;false;;;;;; -129639;8;0;false;false;63;95;191;;; -129647;5;0;false;false;127;127;159;;; -129652;3;0;false;false;;;;;; -129655;1;0;false;false;63;95;191;;; -129656;4;0;false;false;;;;;; -129660;4;0;false;false;127;127;159;;; -129664;27;0;false;false;63;95;191;;; -129691;1;0;false;false;;;;;; -129692;1;0;false;false;127;127;159;;; -129693;1;0;false;false;;;;;; -129694;2;0;false;false;63;95;191;;; -129696;1;0;false;false;;;;;; -129697;3;0;false;false;63;95;191;;; -129700;1;0;false;false;;;;;; -129701;6;0;false;false;63;95;191;;; -129707;1;0;false;false;;;;;; -129708;4;0;false;false;63;95;191;;; -129712;1;0;false;false;;;;;; -129713;3;0;false;false;63;95;191;;; -129716;1;0;false;false;;;;;; -129717;6;0;false;false;63;95;191;;; -129723;1;0;false;false;;;;;; -129724;4;0;false;false;63;95;191;;; -129728;1;0;false;false;;;;;; -129729;7;0;false;false;63;95;191;;; -129736;1;0;false;false;;;;;; -129737;3;0;false;false;63;95;191;;; -129740;1;0;false;false;;;;;; -129741;8;0;false;false;63;95;191;;; -129749;5;0;false;false;127;127;159;;; -129754;3;0;false;false;;;;;; -129757;1;0;false;false;63;95;191;;; -129758;1;0;false;false;;;;;; -129759;5;0;false;false;127;127;159;;; -129764;3;0;false;false;;;;;; -129767;1;0;false;false;63;95;191;;; -129768;1;0;false;false;;;;;; -129769;11;1;false;false;127;159;191;;; -129780;24;0;false;false;63;95;191;;; -129804;1;0;false;false;;;;;; -129805;4;0;false;false;127;127;159;;; -129809;3;0;false;false;;;;;; -129812;1;0;false;false;63;95;191;;; -129813;3;0;false;false;;;;;; -129816;4;0;false;false;127;127;159;;; -129820;19;0;false;false;63;95;191;;; -129839;1;0;false;false;;;;;; -129840;4;0;false;false;63;95;191;;; -129844;1;0;false;false;;;;;; -129845;3;0;false;false;63;95;191;;; -129848;1;0;false;false;;;;;; -129849;6;0;false;false;63;95;191;;; -129855;1;0;false;false;;;;;; -129856;2;0;false;false;63;95;191;;; -129858;1;0;false;false;;;;;; -129859;7;0;false;false;63;95;191;;; -129866;1;0;false;false;;;;;; -129867;3;0;false;false;63;95;191;;; -129870;1;0;false;false;;;;;; -129871;5;0;false;false;63;95;191;;; -129876;1;0;false;false;;;;;; -129877;5;0;false;false;63;95;191;;; -129882;1;0;false;false;;;;;; -129883;9;0;false;false;63;95;191;;; -129892;1;0;false;false;;;;;; -129893;15;0;false;false;63;95;191;;; -129908;5;0;false;false;127;127;159;;; -129913;4;0;false;false;;;;;; -129917;1;0;false;false;63;95;191;;; -129918;1;0;false;false;;;;;; -129919;5;0;false;false;127;127;159;;; -129924;3;0;false;false;;;;;; -129927;2;0;false;false;63;95;191;;; -129929;2;0;false;false;;;;;; -129931;6;1;false;false;127;0;85;;; -129937;1;0;false;false;;;;;; -129938;5;0;false;false;0;0;0;;; -129943;1;0;false;false;;;;;; -129944;20;0;false;false;0;0;0;;; -129964;3;1;false;false;127;0;85;;; -129967;1;0;false;false;;;;;; -129968;7;0;false;false;0;0;0;;; -129975;1;0;false;false;;;;;; -129976;1;0;false;false;0;0;0;;; -129977;3;0;false;false;;;;;; -129980;14;0;false;false;0;0;0;;; -129994;3;0;false;false;;;;;; -129997;2;1;false;false;127;0;85;;; -129999;1;0;false;false;;;;;; -130000;7;0;false;false;0;0;0;;; -130007;1;0;false;false;;;;;; -130008;1;0;false;false;0;0;0;;; -130009;1;0;false;false;;;;;; -130010;1;0;false;false;0;0;0;;; -130011;1;0;false;false;;;;;; -130012;2;0;false;false;0;0;0;;; -130014;1;0;false;false;;;;;; -130015;6;0;false;false;0;0;0;;; -130021;1;0;false;false;;;;;; -130022;1;0;false;false;0;0;0;;; -130023;1;0;false;false;;;;;; -130024;15;0;false;false;0;0;0;;; -130039;1;0;false;false;;;;;; -130040;1;0;false;false;0;0;0;;; -130041;4;0;false;false;;;;;; -130045;35;0;false;false;0;0;0;;; -130080;5;0;false;false;;;;;; -130085;1;0;false;false;0;0;0;;; -130086;3;0;false;false;;;;;; -130089;3;1;false;false;127;0;85;;; -130092;1;0;false;false;;;;;; -130093;4;0;false;false;0;0;0;;; -130097;1;0;false;false;;;;;; -130098;1;0;false;false;0;0;0;;; -130099;1;0;false;false;;;;;; -130100;32;0;false;false;0;0;0;;; -130132;3;0;false;false;;;;;; -130135;3;1;false;false;127;0;85;;; -130138;1;0;false;false;;;;;; -130139;10;0;false;false;0;0;0;;; -130149;1;0;false;false;;;;;; -130150;1;0;false;false;0;0;0;;; -130151;1;0;false;false;;;;;; -130152;30;0;false;false;0;0;0;;; -130182;3;0;false;false;;;;;; -130185;6;0;false;false;0;0;0;;; -130191;1;0;false;false;;;;;; -130192;11;0;false;false;0;0;0;;; -130203;1;0;false;false;;;;;; -130204;1;0;false;false;0;0;0;;; -130205;1;0;false;false;;;;;; -130206;22;0;false;false;0;0;0;;; -130228;3;0;false;false;;;;;; -130231;3;1;false;false;127;0;85;;; -130234;1;0;false;false;;;;;; -130235;1;0;false;false;0;0;0;;; -130236;1;0;false;false;;;;;; -130237;1;0;false;false;0;0;0;;; -130238;1;0;false;false;;;;;; -130239;25;0;false;false;0;0;0;;; -130264;1;0;false;false;;;;;; -130265;5;0;false;false;0;0;0;;; -130270;1;0;false;false;;;;;; -130271;6;0;false;false;0;0;0;;; -130277;1;0;false;false;;;;;; -130278;1;0;false;false;0;0;0;;; -130279;1;0;false;false;;;;;; -130280;12;0;false;false;0;0;0;;; -130292;3;0;false;false;;;;;; -130295;3;1;false;false;127;0;85;;; -130298;1;0;false;false;;;;;; -130299;1;0;false;false;0;0;0;;; -130300;1;0;false;false;;;;;; -130301;1;0;false;false;0;0;0;;; -130302;1;0;false;false;;;;;; -130303;4;0;false;false;0;0;0;;; -130307;1;0;false;false;;;;;; -130308;1;0;false;false;0;0;0;;; -130309;1;0;false;false;;;;;; -130310;10;0;false;false;0;0;0;;; -130320;1;0;false;false;;;;;; -130321;1;0;false;false;0;0;0;;; -130322;1;0;false;false;;;;;; -130323;21;0;false;false;0;0;0;;; -130344;6;0;false;false;;;;;; -130350;6;1;false;false;127;0;85;;; -130356;1;0;false;false;;;;;; -130357;3;1;false;false;127;0;85;;; -130360;1;0;false;false;;;;;; -130361;8;0;false;false;0;0;0;;; -130369;1;0;false;false;;;;;; -130370;3;0;false;false;0;0;0;;; -130373;2;0;false;false;;;;;; -130375;1;0;false;false;0;0;0;;; -130376;2;0;false;false;;;;;; -130378;3;0;false;false;63;95;191;;; -130381;3;0;false;false;;;;;; -130384;1;0;false;false;63;95;191;;; -130385;1;0;false;false;;;;;; -130386;7;0;false;false;63;95;191;;; -130393;1;0;false;false;;;;;; -130394;3;0;false;false;63;95;191;;; -130397;1;0;false;false;;;;;; -130398;9;0;false;false;63;95;191;;; -130407;1;0;false;false;;;;;; -130408;6;0;false;false;63;95;191;;; -130414;1;0;false;false;;;;;; -130415;2;0;false;false;63;95;191;;; -130417;1;0;false;false;;;;;; -130418;3;0;false;false;63;95;191;;; -130421;1;0;false;false;;;;;; -130422;5;0;false;false;63;95;191;;; -130427;1;0;false;false;;;;;; -130428;9;0;false;false;63;95;191;;; -130437;1;0;false;false;;;;;; -130438;2;0;false;false;63;95;191;;; -130440;1;0;false;false;;;;;; -130441;3;0;false;false;63;95;191;;; -130444;1;0;false;false;;;;;; -130445;5;0;false;false;63;95;191;;; -130450;1;0;false;false;;;;;; -130451;5;0;false;false;63;95;191;;; -130456;3;0;false;false;;;;;; -130459;1;0;false;false;63;95;191;;; -130460;1;0;false;false;;;;;; -130461;3;0;false;false;127;127;159;;; -130464;3;0;false;false;;;;;; -130467;1;0;false;false;63;95;191;;; -130468;3;0;false;false;;;;;; -130471;1;0;false;false;63;95;191;;; -130472;1;0;false;false;;;;;; -130473;7;1;false;false;127;159;191;;; -130480;9;0;false;false;63;95;191;;; -130489;1;0;false;false;;;;;; -130490;5;0;false;false;63;95;191;;; -130495;1;0;false;false;;;;;; -130496;2;0;false;false;63;95;191;;; -130498;1;0;false;false;;;;;; -130499;3;0;false;false;63;95;191;;; -130502;1;0;false;false;;;;;; -130503;5;0;false;false;63;95;191;;; -130508;1;0;false;false;;;;;; -130509;1;0;false;false;63;95;191;;; -130510;1;0;false;false;;;;;; -130511;5;0;false;false;63;95;191;;; -130516;1;0;false;false;;;;;; -130517;8;0;false;false;63;95;191;;; -130525;1;0;false;false;;;;;; -130526;2;0;false;false;63;95;191;;; -130528;1;0;false;false;;;;;; -130529;3;0;false;false;63;95;191;;; -130532;1;0;false;false;;;;;; -130533;5;0;false;false;63;95;191;;; -130538;4;0;false;false;;;;;; -130542;1;0;false;false;63;95;191;;; -130543;2;0;false;false;;;;;; -130545;4;0;false;false;63;95;191;;; -130549;1;0;false;false;;;;;; -130550;2;0;false;false;63;95;191;;; -130552;1;0;false;false;;;;;; -130553;3;0;false;false;63;95;191;;; -130556;1;0;false;false;;;;;; -130557;8;0;false;false;63;95;191;;; -130565;1;0;false;false;;;;;; -130566;1;0;false;false;63;95;191;;; -130567;1;0;false;false;;;;;; -130568;39;0;false;false;63;95;191;;; -130607;1;0;false;false;;;;;; -130608;1;0;false;false;63;95;191;;; -130609;2;0;false;false;;;;;; -130611;9;0;false;false;63;95;191;;; -130620;1;0;false;false;;;;;; -130621;3;0;false;false;63;95;191;;; -130624;1;0;false;false;;;;;; -130625;6;0;false;false;63;95;191;;; -130631;1;0;false;false;;;;;; -130632;2;0;false;false;63;95;191;;; -130634;1;0;false;false;;;;;; -130635;1;0;false;false;63;95;191;;; -130636;3;0;false;false;;;;;; -130639;1;0;false;false;63;95;191;;; -130640;1;0;false;false;;;;;; -130641;8;1;false;false;127;159;191;;; -130649;6;0;false;false;63;95;191;;; -130655;1;0;false;false;;;;;; -130656;6;0;false;false;63;95;191;;; -130662;1;0;false;false;;;;;; -130663;2;0;false;false;63;95;191;;; -130665;1;0;false;false;;;;;; -130666;3;0;false;false;63;95;191;;; -130669;1;0;false;false;;;;;; -130670;5;0;false;false;63;95;191;;; -130675;1;0;false;false;;;;;; -130676;9;0;false;false;63;95;191;;; -130685;1;0;false;false;;;;;; -130686;2;0;false;false;63;95;191;;; -130688;1;0;false;false;;;;;; -130689;3;0;false;false;63;95;191;;; -130692;1;0;false;false;;;;;; -130693;5;0;false;false;63;95;191;;; -130698;1;0;false;false;;;;;; -130699;8;0;false;false;63;95;191;;; -130707;1;0;false;false;;;;;; -130708;2;0;false;false;63;95;191;;; -130710;3;0;false;false;;;;;; -130713;1;0;false;false;63;95;191;;; -130714;2;0;false;false;;;;;; -130716;3;0;false;false;63;95;191;;; -130719;1;0;false;false;;;;;; -130720;9;0;false;false;63;95;191;;; -130729;1;0;false;false;;;;;; -130730;2;0;false;false;63;95;191;;; -130732;1;0;false;false;;;;;; -130733;3;0;false;false;63;95;191;;; -130736;1;0;false;false;;;;;; -130737;9;0;false;false;63;95;191;;; -130746;1;0;false;false;;;;;; -130747;3;0;false;false;63;95;191;;; -130750;1;0;false;false;;;;;; -130751;5;0;false;false;63;95;191;;; -130756;1;0;false;false;;;;;; -130757;9;0;false;false;63;95;191;;; -130766;1;0;false;false;;;;;; -130767;2;0;false;false;63;95;191;;; -130769;1;0;false;false;;;;;; -130770;3;0;false;false;63;95;191;;; -130773;1;0;false;false;;;;;; -130774;8;0;false;false;63;95;191;;; -130782;1;0;false;false;;;;;; -130783;2;0;false;false;63;95;191;;; -130785;3;0;false;false;;;;;; -130788;1;0;false;false;63;95;191;;; -130789;1;0;false;false;;;;;; -130790;2;0;false;false;63;95;191;;; -130792;1;0;false;false;;;;;; -130793;6;0;false;false;63;95;191;;; -130799;1;0;false;false;;;;;; -130800;2;0;false;false;63;95;191;;; -130802;5;0;false;false;;;;;; -130807;1;0;false;false;63;95;191;;; -130808;2;0;false;false;;;;;; -130810;4;0;false;false;63;95;191;;; -130814;1;0;false;false;;;;;; -130815;5;0;false;false;63;95;191;;; -130820;1;0;false;false;;;;;; -130821;3;0;false;false;63;95;191;;; -130824;1;0;false;false;;;;;; -130825;3;0;false;false;63;95;191;;; -130828;1;0;false;false;;;;;; -130829;3;0;false;false;63;95;191;;; -130832;1;0;false;false;;;;;; -130833;6;0;false;false;63;95;191;;; -130839;1;0;false;false;;;;;; -130840;18;0;false;false;63;95;191;;; -130858;1;0;false;false;;;;;; -130859;2;0;false;false;63;95;191;;; -130861;1;0;false;false;;;;;; -130862;1;0;false;false;63;95;191;;; -130863;1;0;false;false;;;;;; -130864;5;0;false;false;63;95;191;;; -130869;1;0;false;false;;;;;; -130870;4;0;false;false;63;95;191;;; -130874;1;0;false;false;;;;;; -130875;4;0;false;false;63;95;191;;; -130879;4;0;false;false;;;;;; -130883;1;0;false;false;63;95;191;;; -130884;2;0;false;false;;;;;; -130886;7;0;false;false;63;95;191;;; -130893;1;0;false;false;;;;;; -130894;2;0;false;false;63;95;191;;; -130896;3;0;false;false;;;;;; -130899;1;0;false;false;63;95;191;;; -130900;1;0;false;false;;;;;; -130901;11;1;false;false;127;159;191;;; -130912;12;0;false;false;63;95;191;;; -130924;1;0;false;false;;;;;; -130925;4;0;false;false;127;127;159;;; -130929;3;0;false;false;;;;;; -130932;1;0;false;false;63;95;191;;; -130933;4;0;false;false;;;;;; -130937;4;0;false;false;127;127;159;;; -130941;21;0;false;false;63;95;191;;; -130962;1;0;false;false;;;;;; -130963;1;0;false;false;127;127;159;;; -130964;1;0;false;false;;;;;; -130965;2;0;false;false;63;95;191;;; -130967;1;0;false;false;;;;;; -130968;3;0;false;false;63;95;191;;; -130971;1;0;false;false;;;;;; -130972;8;0;false;false;63;95;191;;; -130980;1;0;false;false;;;;;; -130981;3;0;false;false;63;95;191;;; -130984;1;0;false;false;;;;;; -130985;4;0;false;false;63;95;191;;; -130989;1;0;false;false;;;;;; -130990;8;0;false;false;63;95;191;;; -130998;5;0;false;false;127;127;159;;; -131003;3;0;false;false;;;;;; -131006;1;0;false;false;63;95;191;;; -131007;4;0;false;false;;;;;; -131011;4;0;false;false;127;127;159;;; -131015;27;0;false;false;63;95;191;;; -131042;1;0;false;false;;;;;; -131043;1;0;false;false;127;127;159;;; -131044;1;0;false;false;;;;;; -131045;2;0;false;false;63;95;191;;; -131047;1;0;false;false;;;;;; -131048;3;0;false;false;63;95;191;;; -131051;1;0;false;false;;;;;; -131052;6;0;false;false;63;95;191;;; -131058;1;0;false;false;;;;;; -131059;4;0;false;false;63;95;191;;; -131063;1;0;false;false;;;;;; -131064;3;0;false;false;63;95;191;;; -131067;1;0;false;false;;;;;; -131068;6;0;false;false;63;95;191;;; -131074;1;0;false;false;;;;;; -131075;4;0;false;false;63;95;191;;; -131079;1;0;false;false;;;;;; -131080;7;0;false;false;63;95;191;;; -131087;1;0;false;false;;;;;; -131088;3;0;false;false;63;95;191;;; -131091;1;0;false;false;;;;;; -131092;8;0;false;false;63;95;191;;; -131100;5;0;false;false;127;127;159;;; -131105;3;0;false;false;;;;;; -131108;1;0;false;false;63;95;191;;; -131109;1;0;false;false;;;;;; -131110;5;0;false;false;127;127;159;;; -131115;3;0;false;false;;;;;; -131118;1;0;false;false;63;95;191;;; -131119;1;0;false;false;;;;;; -131120;11;1;false;false;127;159;191;;; -131131;24;0;false;false;63;95;191;;; -131155;1;0;false;false;;;;;; -131156;4;0;false;false;127;127;159;;; -131160;3;0;false;false;;;;;; -131163;1;0;false;false;63;95;191;;; -131164;3;0;false;false;;;;;; -131167;4;0;false;false;127;127;159;;; -131171;19;0;false;false;63;95;191;;; -131190;1;0;false;false;;;;;; -131191;4;0;false;false;63;95;191;;; -131195;1;0;false;false;;;;;; -131196;3;0;false;false;63;95;191;;; -131199;1;0;false;false;;;;;; -131200;6;0;false;false;63;95;191;;; -131206;1;0;false;false;;;;;; -131207;2;0;false;false;63;95;191;;; -131209;1;0;false;false;;;;;; -131210;7;0;false;false;63;95;191;;; -131217;1;0;false;false;;;;;; -131218;3;0;false;false;63;95;191;;; -131221;1;0;false;false;;;;;; -131222;5;0;false;false;63;95;191;;; -131227;1;0;false;false;;;;;; -131228;5;0;false;false;63;95;191;;; -131233;1;0;false;false;;;;;; -131234;9;0;false;false;63;95;191;;; -131243;1;0;false;false;;;;;; -131244;15;0;false;false;63;95;191;;; -131259;5;0;false;false;127;127;159;;; -131264;4;0;false;false;;;;;; -131268;1;0;false;false;63;95;191;;; -131269;1;0;false;false;;;;;; -131270;5;0;false;false;127;127;159;;; -131275;3;0;false;false;;;;;; -131278;1;0;false;false;63;95;191;;; -131279;1;0;false;false;;;;;; -131280;7;1;false;false;127;159;191;;; -131287;3;0;false;false;63;95;191;;; -131290;3;0;false;false;;;;;; -131293;2;0;false;false;63;95;191;;; -131295;2;0;false;false;;;;;; -131297;6;1;false;false;127;0;85;;; -131303;1;0;false;false;;;;;; -131304;3;1;false;false;127;0;85;;; -131307;1;0;false;false;;;;;; -131308;16;0;false;false;0;0;0;;; -131324;3;1;false;false;127;0;85;;; -131327;1;0;false;false;;;;;; -131328;10;0;false;false;0;0;0;;; -131338;1;0;false;false;;;;;; -131339;1;0;false;false;0;0;0;;; -131340;3;0;false;false;;;;;; -131343;14;0;false;false;0;0;0;;; -131357;6;0;false;false;;;;;; -131363;2;1;false;false;127;0;85;;; -131365;1;0;false;false;;;;;; -131366;10;0;false;false;0;0;0;;; -131376;1;0;false;false;;;;;; -131377;1;0;false;false;0;0;0;;; -131378;1;0;false;false;;;;;; -131379;1;0;false;false;0;0;0;;; -131380;1;0;false;false;;;;;; -131381;2;0;false;false;0;0;0;;; -131383;5;0;false;false;;;;;; -131388;10;0;false;false;0;0;0;;; -131398;1;0;false;false;;;;;; -131399;1;0;false;false;0;0;0;;; -131400;1;0;false;false;;;;;; -131401;1;0;false;false;0;0;0;;; -131402;1;0;false;false;;;;;; -131403;2;0;false;false;0;0;0;;; -131405;1;0;false;false;;;;;; -131406;9;0;false;false;0;0;0;;; -131415;1;0;false;false;;;;;; -131416;2;0;false;false;0;0;0;;; -131418;1;0;false;false;;;;;; -131419;31;0;false;false;0;0;0;;; -131450;1;0;false;false;;;;;; -131451;1;0;false;false;0;0;0;;; -131452;4;0;false;false;;;;;; -131456;35;0;false;false;0;0;0;;; -131491;5;0;false;false;;;;;; -131496;1;0;false;false;0;0;0;;; -131497;3;0;false;false;;;;;; -131500;6;1;false;false;127;0;85;;; -131506;1;0;false;false;;;;;; -131507;42;0;false;false;0;0;0;;; -131549;2;0;false;false;;;;;; -131551;1;0;false;false;0;0;0;;; -131552;2;0;false;false;;;;;; -131554;3;0;false;false;63;95;191;;; -131557;3;0;false;false;;;;;; -131560;1;0;false;false;63;95;191;;; -131561;1;0;false;false;;;;;; -131562;7;0;false;false;63;95;191;;; -131569;1;0;false;false;;;;;; -131570;3;0;false;false;63;95;191;;; -131573;1;0;false;false;;;;;; -131574;6;0;false;false;63;95;191;;; -131580;1;0;false;false;;;;;; -131581;2;0;false;false;63;95;191;;; -131583;1;0;false;false;;;;;; -131584;3;0;false;false;63;95;191;;; -131587;1;0;false;false;;;;;; -131588;9;0;false;false;63;95;191;;; -131597;1;0;false;false;;;;;; -131598;2;0;false;false;63;95;191;;; -131600;1;0;false;false;;;;;; -131601;3;0;false;false;63;95;191;;; -131604;1;0;false;false;;;;;; -131605;5;0;false;false;63;95;191;;; -131610;1;0;false;false;;;;;; -131611;8;0;false;false;63;95;191;;; -131619;1;0;false;false;;;;;; -131620;8;0;false;false;63;95;191;;; -131628;4;0;false;false;;;;;; -131632;1;0;false;false;63;95;191;;; -131633;1;0;false;false;;;;;; -131634;2;0;false;false;63;95;191;;; -131636;1;0;false;false;;;;;; -131637;3;0;false;false;63;95;191;;; -131640;1;0;false;false;;;;;; -131641;5;0;false;false;63;95;191;;; -131646;1;0;false;false;;;;;; -131647;9;0;false;false;63;95;191;;; -131656;1;0;false;false;;;;;; -131657;2;0;false;false;63;95;191;;; -131659;1;0;false;false;;;;;; -131660;3;0;false;false;63;95;191;;; -131663;1;0;false;false;;;;;; -131664;9;0;false;false;63;95;191;;; -131673;3;0;false;false;;;;;; -131676;1;0;false;false;63;95;191;;; -131677;1;0;false;false;;;;;; -131678;3;0;false;false;63;95;191;;; -131681;1;0;false;false;;;;;; -131682;6;0;false;false;63;95;191;;; -131688;1;0;false;false;;;;;; -131689;5;0;false;false;63;95;191;;; -131694;1;0;false;false;;;;;; -131695;8;0;false;false;63;95;191;;; -131703;1;0;false;false;;;;;; -131704;3;0;false;false;63;95;191;;; -131707;1;0;false;false;;;;;; -131708;9;0;false;false;63;95;191;;; -131717;1;0;false;false;;;;;; -131718;6;0;false;false;63;95;191;;; -131724;1;0;false;false;;;;;; -131725;4;0;false;false;63;95;191;;; -131729;1;0;false;false;;;;;; -131730;3;0;false;false;63;95;191;;; -131733;1;0;false;false;;;;;; -131734;5;0;false;false;63;95;191;;; -131739;1;0;false;false;;;;;; -131740;4;0;false;false;63;95;191;;; -131744;3;0;false;false;;;;;; -131747;1;0;false;false;63;95;191;;; -131748;1;0;false;false;;;;;; -131749;2;0;false;false;63;95;191;;; -131751;1;0;false;false;;;;;; -131752;6;0;false;false;63;95;191;;; -131758;1;0;false;false;;;;;; -131759;2;0;false;false;63;95;191;;; -131761;1;0;false;false;;;;;; -131762;2;0;false;false;63;95;191;;; -131764;1;0;false;false;;;;;; -131765;1;0;false;false;63;95;191;;; -131766;1;0;false;false;;;;;; -131767;5;0;false;false;63;95;191;;; -131772;1;0;false;false;;;;;; -131773;5;0;false;false;63;95;191;;; -131778;1;0;false;false;;;;;; -131779;8;0;false;false;63;95;191;;; -131787;1;0;false;false;;;;;; -131788;2;0;false;false;63;95;191;;; -131790;1;0;false;false;;;;;; -131791;3;0;false;false;63;95;191;;; -131794;1;0;false;false;;;;;; -131795;9;0;false;false;63;95;191;;; -131804;1;0;false;false;;;;;; -131805;9;0;false;false;63;95;191;;; -131814;3;0;false;false;;;;;; -131817;1;0;false;false;63;95;191;;; -131818;1;0;false;false;;;;;; -131819;2;0;false;false;63;95;191;;; -131821;1;0;false;false;;;;;; -131822;3;0;false;false;63;95;191;;; -131825;1;0;false;false;;;;;; -131826;1;0;false;false;63;95;191;;; -131827;1;0;false;false;;;;;; -131828;10;0;false;false;63;95;191;;; -131838;1;0;false;false;;;;;; -131839;2;0;false;false;63;95;191;;; -131841;1;0;false;false;;;;;; -131842;3;0;false;false;63;95;191;;; -131845;1;0;false;false;;;;;; -131846;8;0;false;false;63;95;191;;; -131854;1;0;false;false;;;;;; -131855;2;0;false;false;63;95;191;;; -131857;1;0;false;false;;;;;; -131858;6;0;false;false;63;95;191;;; -131864;1;0;false;false;;;;;; -131865;3;0;false;false;63;95;191;;; -131868;1;0;false;false;;;;;; -131869;6;0;false;false;63;95;191;;; -131875;1;0;false;false;;;;;; -131876;2;0;false;false;63;95;191;;; -131878;1;0;false;false;;;;;; -131879;1;0;false;false;63;95;191;;; -131880;1;0;false;false;;;;;; -131881;9;0;false;false;63;95;191;;; -131890;3;0;false;false;;;;;; -131893;1;0;false;false;63;95;191;;; -131894;1;0;false;false;;;;;; -131895;3;0;false;false;63;95;191;;; -131898;1;0;false;false;;;;;; -131899;8;0;false;false;63;95;191;;; -131907;1;0;false;false;;;;;; -131908;6;0;false;false;63;95;191;;; -131914;1;0;false;false;;;;;; -131915;4;0;false;false;63;95;191;;; -131919;1;0;false;false;;;;;; -131920;2;0;false;false;63;95;191;;; -131922;1;0;false;false;;;;;; -131923;6;0;false;false;63;95;191;;; -131929;1;0;false;false;;;;;; -131930;3;0;false;false;63;95;191;;; -131933;1;0;false;false;;;;;; -131934;10;0;false;false;63;95;191;;; -131944;3;0;false;false;;;;;; -131947;1;0;false;false;63;95;191;;; -131948;1;0;false;false;;;;;; -131949;3;0;false;false;127;127;159;;; -131952;3;0;false;false;;;;;; -131955;1;0;false;false;63;95;191;;; -131956;3;0;false;false;;;;;; -131959;1;0;false;false;63;95;191;;; -131960;1;0;false;false;;;;;; -131961;7;1;false;false;127;159;191;;; -131968;5;0;false;false;63;95;191;;; -131973;1;0;false;false;;;;;; -131974;3;0;false;false;63;95;191;;; -131977;1;0;false;false;;;;;; -131978;6;0;false;false;63;95;191;;; -131984;1;0;false;false;;;;;; -131985;2;0;false;false;63;95;191;;; -131987;1;0;false;false;;;;;; -131988;9;0;false;false;63;95;191;;; -131997;1;0;false;false;;;;;; -131998;8;0;false;false;63;95;191;;; -132006;1;0;false;false;;;;;; -132007;3;0;false;false;63;95;191;;; -132010;1;0;false;false;;;;;; -132011;8;0;false;false;63;95;191;;; -132019;1;0;false;false;;;;;; -132020;2;0;false;false;63;95;191;;; -132022;4;0;false;false;;;;;; -132026;1;0;false;false;63;95;191;;; -132027;2;0;false;false;;;;;; -132029;3;0;false;false;63;95;191;;; -132032;1;0;false;false;;;;;; -132033;6;0;false;false;63;95;191;;; -132039;1;0;false;false;;;;;; -132040;2;0;false;false;63;95;191;;; -132042;1;0;false;false;;;;;; -132043;3;0;false;false;63;95;191;;; -132046;1;0;false;false;;;;;; -132047;6;0;false;false;63;95;191;;; -132053;1;0;false;false;;;;;; -132054;6;0;false;false;63;95;191;;; -132060;1;0;false;false;;;;;; -132061;5;0;false;false;63;95;191;;; -132066;3;0;false;false;;;;;; -132069;1;0;false;false;63;95;191;;; -132070;1;0;false;false;;;;;; -132071;8;1;false;false;127;159;191;;; -132079;6;0;false;false;63;95;191;;; -132085;1;0;false;false;;;;;; -132086;2;0;false;false;63;95;191;;; -132088;1;0;false;false;;;;;; -132089;3;0;false;false;63;95;191;;; -132092;1;0;false;false;;;;;; -132093;9;0;false;false;63;95;191;;; -132102;1;0;false;false;;;;;; -132103;2;0;false;false;63;95;191;;; -132105;1;0;false;false;;;;;; -132106;3;0;false;false;63;95;191;;; -132109;1;0;false;false;;;;;; -132110;5;0;false;false;63;95;191;;; -132115;1;0;false;false;;;;;; -132116;8;0;false;false;63;95;191;;; -132124;1;0;false;false;;;;;; -132125;8;0;false;false;63;95;191;;; -132133;4;0;false;false;;;;;; -132137;1;0;false;false;63;95;191;;; -132138;2;0;false;false;;;;;; -132140;2;0;false;false;63;95;191;;; -132142;1;0;false;false;;;;;; -132143;3;0;false;false;63;95;191;;; -132146;1;0;false;false;;;;;; -132147;5;0;false;false;63;95;191;;; -132152;1;0;false;false;;;;;; -132153;9;0;false;false;63;95;191;;; -132162;1;0;false;false;;;;;; -132163;2;0;false;false;63;95;191;;; -132165;1;0;false;false;;;;;; -132166;3;0;false;false;63;95;191;;; -132169;1;0;false;false;;;;;; -132170;9;0;false;false;63;95;191;;; -132179;3;0;false;false;;;;;; -132182;1;0;false;false;63;95;191;;; -132183;1;0;false;false;;;;;; -132184;11;1;false;false;127;159;191;;; -132195;12;0;false;false;63;95;191;;; -132207;1;0;false;false;;;;;; -132208;4;0;false;false;127;127;159;;; -132212;3;0;false;false;;;;;; -132215;1;0;false;false;63;95;191;;; -132216;4;0;false;false;;;;;; -132220;4;0;false;false;127;127;159;;; -132224;21;0;false;false;63;95;191;;; -132245;1;0;false;false;;;;;; -132246;1;0;false;false;127;127;159;;; -132247;1;0;false;false;;;;;; -132248;2;0;false;false;63;95;191;;; -132250;1;0;false;false;;;;;; -132251;3;0;false;false;63;95;191;;; -132254;1;0;false;false;;;;;; -132255;8;0;false;false;63;95;191;;; -132263;1;0;false;false;;;;;; -132264;3;0;false;false;63;95;191;;; -132267;1;0;false;false;;;;;; -132268;4;0;false;false;63;95;191;;; -132272;1;0;false;false;;;;;; -132273;8;0;false;false;63;95;191;;; -132281;5;0;false;false;127;127;159;;; -132286;3;0;false;false;;;;;; -132289;1;0;false;false;63;95;191;;; -132290;4;0;false;false;;;;;; -132294;4;0;false;false;127;127;159;;; -132298;27;0;false;false;63;95;191;;; -132325;1;0;false;false;;;;;; -132326;1;0;false;false;127;127;159;;; -132327;1;0;false;false;;;;;; -132328;2;0;false;false;63;95;191;;; -132330;1;0;false;false;;;;;; -132331;3;0;false;false;63;95;191;;; -132334;1;0;false;false;;;;;; -132335;6;0;false;false;63;95;191;;; -132341;1;0;false;false;;;;;; -132342;4;0;false;false;63;95;191;;; -132346;1;0;false;false;;;;;; -132347;3;0;false;false;63;95;191;;; -132350;1;0;false;false;;;;;; -132351;6;0;false;false;63;95;191;;; -132357;1;0;false;false;;;;;; -132358;4;0;false;false;63;95;191;;; -132362;1;0;false;false;;;;;; -132363;7;0;false;false;63;95;191;;; -132370;1;0;false;false;;;;;; -132371;3;0;false;false;63;95;191;;; -132374;1;0;false;false;;;;;; -132375;8;0;false;false;63;95;191;;; -132383;5;0;false;false;127;127;159;;; -132388;3;0;false;false;;;;;; -132391;1;0;false;false;63;95;191;;; -132392;1;0;false;false;;;;;; -132393;5;0;false;false;127;127;159;;; -132398;3;0;false;false;;;;;; -132401;1;0;false;false;63;95;191;;; -132402;1;0;false;false;;;;;; -132403;11;1;false;false;127;159;191;;; -132414;24;0;false;false;63;95;191;;; -132438;1;0;false;false;;;;;; -132439;4;0;false;false;127;127;159;;; -132443;3;0;false;false;;;;;; -132446;1;0;false;false;63;95;191;;; -132447;3;0;false;false;;;;;; -132450;4;0;false;false;127;127;159;;; -132454;19;0;false;false;63;95;191;;; -132473;1;0;false;false;;;;;; -132474;4;0;false;false;63;95;191;;; -132478;1;0;false;false;;;;;; -132479;5;0;false;false;63;95;191;;; -132484;1;0;false;false;;;;;; -132485;2;0;false;false;63;95;191;;; -132487;1;0;false;false;;;;;; -132488;4;0;false;false;63;95;191;;; -132492;5;0;false;false;127;127;159;;; -132497;3;0;false;false;;;;;; -132500;1;0;false;false;63;95;191;;; -132501;3;0;false;false;;;;;; -132504;4;0;false;false;127;127;159;;; -132508;22;0;false;false;63;95;191;;; -132530;1;0;false;false;;;;;; -132531;4;0;false;false;63;95;191;;; -132535;1;0;false;false;;;;;; -132536;5;0;false;false;63;95;191;;; -132541;1;0;false;false;;;;;; -132542;2;0;false;false;63;95;191;;; -132544;1;0;false;false;;;;;; -132545;2;0;false;false;63;95;191;;; -132547;1;0;false;false;;;;;; -132548;9;0;false;false;63;95;191;;; -132557;1;0;false;false;;;;;; -132558;2;0;false;false;63;95;191;;; -132560;1;0;false;false;;;;;; -132561;3;0;false;false;63;95;191;;; -132564;1;0;false;false;;;;;; -132565;9;0;false;false;63;95;191;;; -132574;1;0;false;false;;;;;; -132575;8;0;false;false;63;95;191;;; -132583;5;0;false;false;127;127;159;;; -132588;3;0;false;false;;;;;; -132591;1;0;false;false;63;95;191;;; -132592;1;0;false;false;;;;;; -132593;5;0;false;false;127;127;159;;; -132598;3;0;false;false;;;;;; -132601;2;0;false;false;63;95;191;;; -132603;2;0;false;false;;;;;; -132605;6;1;false;false;127;0;85;;; -132611;1;0;false;false;;;;;; -132612;3;1;false;false;127;0;85;;; -132615;1;0;false;false;;;;;; -132616;25;0;false;false;0;0;0;;; -132641;1;0;false;false;;;;;; -132642;6;0;false;false;0;0;0;;; -132648;1;0;false;false;;;;;; -132649;1;0;false;false;0;0;0;;; -132650;3;0;false;false;;;;;; -132653;14;0;false;false;0;0;0;;; -132667;3;0;false;false;;;;;; -132670;10;0;false;false;0;0;0;;; -132680;1;0;false;false;;;;;; -132681;7;0;false;false;0;0;0;;; -132688;3;0;false;false;;;;;; -132691;3;1;false;false;127;0;85;;; -132694;1;0;false;false;;;;;; -132695;5;0;false;false;0;0;0;;; -132700;3;0;false;false;;;;;; -132703;3;1;false;false;127;0;85;;; -132706;1;0;false;false;;;;;; -132707;11;0;false;false;0;0;0;;; -132718;3;0;false;false;;;;;; -132721;3;1;false;false;127;0;85;;; -132724;1;0;false;false;;;;;; -132725;13;0;false;false;0;0;0;;; -132738;3;0;false;false;;;;;; -132741;6;0;false;false;0;0;0;;; -132747;1;0;false;false;;;;;; -132748;9;0;false;false;0;0;0;;; -132757;6;0;false;false;;;;;; -132763;2;1;false;false;127;0;85;;; -132765;1;0;false;false;;;;;; -132766;6;0;false;false;0;0;0;;; -132772;1;0;false;false;;;;;; -132773;2;0;false;false;0;0;0;;; -132775;1;0;false;false;;;;;; -132776;4;1;false;false;127;0;85;;; -132780;1;0;false;false;0;0;0;;; -132781;1;0;false;false;;;;;; -132782;1;0;false;false;0;0;0;;; -132783;4;0;false;false;;;;;; -132787;35;0;false;false;0;0;0;;; -132822;3;0;false;false;;;;;; -132825;1;0;false;false;0;0;0;;; -132826;3;0;false;false;;;;;; -132829;55;0;false;false;63;127;95;;; -132884;1;0;false;false;;;;;; -132885;2;1;false;false;127;0;85;;; -132887;1;0;false;false;;;;;; -132888;8;0;false;false;0;0;0;;; -132896;1;0;false;false;;;;;; -132897;1;0;false;false;0;0;0;;; -132898;1;0;false;false;;;;;; -132899;20;0;false;false;0;0;0;;; -132919;1;0;false;false;;;;;; -132920;1;0;false;false;0;0;0;;; -132921;1;0;false;false;;;;;; -132922;1;0;false;false;0;0;0;;; -132923;1;0;false;false;;;;;; -132924;2;0;false;false;0;0;0;;; -132926;1;0;false;false;;;;;; -132927;7;0;false;false;0;0;0;;; -132934;1;0;false;false;;;;;; -132935;1;0;false;false;0;0;0;;; -132936;1;0;false;false;;;;;; -132937;22;0;false;false;0;0;0;;; -132959;1;0;false;false;;;;;; -132960;1;0;false;false;0;0;0;;; -132961;1;0;false;false;;;;;; -132962;2;0;false;false;0;0;0;;; -132964;1;0;false;false;;;;;; -132965;1;0;false;false;0;0;0;;; -132966;4;0;false;false;;;;;; -132970;38;0;false;false;0;0;0;;; -133008;3;0;false;false;;;;;; -133011;1;0;false;false;0;0;0;;; -133012;4;0;false;false;;;;;; -133016;4;0;false;false;0;0;0;;; -133020;1;0;false;false;;;;;; -133021;1;0;false;false;0;0;0;;; -133022;1;0;false;false;;;;;; -133023;14;0;false;false;0;0;0;;; -133037;1;0;false;false;;;;;; -133038;1;0;false;false;0;0;0;;; -133039;1;0;false;false;;;;;; -133040;8;0;false;false;0;0;0;;; -133048;1;0;false;false;;;;;; -133049;1;0;false;false;0;0;0;;; -133050;1;0;false;false;;;;;; -133051;11;0;false;false;0;0;0;;; -133062;4;0;false;false;;;;;; -133066;36;0;false;false;63;127;95;;; -133102;1;0;false;false;;;;;; -133103;2;1;false;false;127;0;85;;; -133105;1;0;false;false;;;;;; -133106;5;0;false;false;0;0;0;;; -133111;1;0;false;false;;;;;; -133112;2;0;false;false;0;0;0;;; -133114;1;0;false;false;;;;;; -133115;23;0;false;false;0;0;0;;; -133138;1;0;false;false;;;;;; -133139;1;0;false;false;0;0;0;;; -133140;4;0;false;false;;;;;; -133144;38;0;false;false;0;0;0;;; -133182;3;0;false;false;;;;;; -133185;1;0;false;false;0;0;0;;; -133186;4;0;false;false;;;;;; -133190;8;0;false;false;0;0;0;;; -133198;1;0;false;false;;;;;; -133199;1;0;false;false;0;0;0;;; -133200;1;0;false;false;;;;;; -133201;22;0;false;false;0;0;0;;; -133223;3;0;false;false;;;;;; -133226;10;0;false;false;0;0;0;;; -133236;1;0;false;false;;;;;; -133237;1;0;false;false;0;0;0;;; -133238;1;0;false;false;;;;;; -133239;30;0;false;false;0;0;0;;; -133269;7;0;false;false;;;;;; -133276;3;1;false;false;127;0;85;;; -133279;1;0;false;false;;;;;; -133280;1;0;false;false;0;0;0;;; -133281;1;0;false;false;;;;;; -133282;1;0;false;false;0;0;0;;; -133283;1;0;false;false;;;;;; -133284;7;0;false;false;0;0;0;;; -133291;1;0;false;false;;;;;; -133292;1;0;false;false;0;0;0;;; -133293;1;0;false;false;;;;;; -133294;10;0;false;false;0;0;0;;; -133304;1;0;false;false;;;;;; -133305;1;0;false;false;0;0;0;;; -133306;1;0;false;false;;;;;; -133307;23;0;false;false;0;0;0;;; -133330;3;0;false;false;;;;;; -133333;6;0;false;false;0;0;0;;; -133339;1;0;false;false;;;;;; -133340;1;0;false;false;0;0;0;;; -133341;1;0;false;false;;;;;; -133342;32;0;false;false;0;0;0;;; -133374;1;0;false;false;;;;;; -133375;12;0;false;false;0;0;0;;; -133387;3;0;false;false;;;;;; -133390;9;0;false;false;0;0;0;;; -133399;1;0;false;false;;;;;; -133400;4;0;false;false;0;0;0;;; -133404;1;0;false;false;;;;;; -133405;1;0;false;false;0;0;0;;; -133406;1;0;false;false;;;;;; -133407;24;0;false;false;0;0;0;;; -133431;3;0;false;false;;;;;; -133434;2;1;false;false;127;0;85;;; -133436;1;0;false;false;;;;;; -133437;2;0;false;false;0;0;0;;; -133439;1;0;false;false;;;;;; -133440;1;0;false;false;0;0;0;;; -133441;1;0;false;false;;;;;; -133442;6;0;false;false;0;0;0;;; -133448;1;0;false;false;;;;;; -133449;1;0;false;false;0;0;0;;; -133450;1;0;false;false;;;;;; -133451;11;0;false;false;0;0;0;;; -133462;1;0;false;false;;;;;; -133463;1;0;false;false;0;0;0;;; -133464;4;0;false;false;;;;;; -133468;35;0;false;false;0;0;0;;; -133503;4;0;false;false;;;;;; -133507;38;0;false;false;0;0;0;;; -133545;3;0;false;false;;;;;; -133548;1;0;false;false;0;0;0;;; -133549;3;0;false;false;;;;;; -133552;3;1;false;false;127;0;85;;; -133555;2;0;false;false;0;0;0;;; -133557;1;0;false;false;;;;;; -133558;8;0;false;false;0;0;0;;; -133566;1;0;false;false;;;;;; -133567;1;0;false;false;0;0;0;;; -133568;1;0;false;false;;;;;; -133569;3;1;false;false;127;0;85;;; -133572;1;0;false;false;;;;;; -133573;3;1;false;false;127;0;85;;; -133576;4;0;false;false;0;0;0;;; -133580;3;0;false;false;;;;;; -133583;12;0;false;false;0;0;0;;; -133595;1;0;false;false;;;;;; -133596;1;0;false;false;0;0;0;;; -133597;1;0;false;false;;;;;; -133598;19;0;false;false;0;0;0;;; -133617;1;0;false;false;;;;;; -133618;2;0;false;false;0;0;0;;; -133620;1;0;false;false;;;;;; -133621;10;0;false;false;0;0;0;;; -133631;3;0;false;false;;;;;; -133634;2;1;false;false;127;0;85;;; -133636;1;0;false;false;;;;;; -133637;13;0;false;false;0;0;0;;; -133650;1;0;false;false;;;;;; -133651;2;0;false;false;0;0;0;;; -133653;1;0;false;false;;;;;; -133654;17;0;false;false;0;0;0;;; -133671;1;0;false;false;;;;;; -133672;1;0;false;false;0;0;0;;; -133673;1;0;false;false;;;;;; -133674;2;0;false;false;0;0;0;;; -133676;1;0;false;false;;;;;; -133677;1;0;false;false;0;0;0;;; -133678;4;0;false;false;;;;;; -133682;12;0;false;false;0;0;0;;; -133694;1;0;false;false;;;;;; -133695;1;0;false;false;0;0;0;;; -133696;1;0;false;false;;;;;; -133697;27;0;false;false;0;0;0;;; -133724;1;0;false;false;;;;;; -133725;12;0;false;false;0;0;0;;; -133737;1;0;false;false;;;;;; -133738;1;0;false;false;0;0;0;;; -133739;1;0;false;false;;;;;; -133740;13;0;false;false;0;0;0;;; -133753;5;0;false;false;;;;;; -133758;1;0;false;false;0;0;0;;; -133759;3;0;false;false;;;;;; -133762;35;0;false;false;0;0;0;;; -133797;3;0;false;false;;;;;; -133800;6;1;false;false;127;0;85;;; -133806;1;0;false;false;;;;;; -133807;10;0;false;false;0;0;0;;; -133817;1;0;false;false;;;;;; -133818;1;0;false;false;0;0;0;;; -133819;1;0;false;false;;;;;; -133820;13;0;false;false;0;0;0;;; -133833;2;0;false;false;;;;;; -133835;1;0;false;false;0;0;0;;; -133836;2;0;false;false;;;;;; -133838;3;0;false;false;63;95;191;;; -133841;3;0;false;false;;;;;; -133844;1;0;false;false;63;95;191;;; -133845;1;0;false;false;;;;;; -133846;7;0;false;false;63;95;191;;; -133853;1;0;false;false;;;;;; -133854;3;0;false;false;63;95;191;;; -133857;1;0;false;false;;;;;; -133858;6;0;false;false;63;95;191;;; -133864;1;0;false;false;;;;;; -133865;2;0;false;false;63;95;191;;; -133867;1;0;false;false;;;;;; -133868;3;0;false;false;63;95;191;;; -133871;1;0;false;false;;;;;; -133872;9;0;false;false;63;95;191;;; -133881;1;0;false;false;;;;;; -133882;1;0;false;false;63;95;191;;; -133883;1;0;false;false;;;;;; -133884;8;0;false;false;63;95;191;;; -133892;1;0;false;false;;;;;; -133893;2;0;false;false;63;95;191;;; -133895;1;0;false;false;;;;;; -133896;3;0;false;false;63;95;191;;; -133899;1;0;false;false;;;;;; -133900;9;0;false;false;63;95;191;;; -133909;1;0;false;false;;;;;; -133910;5;0;false;false;63;95;191;;; -133915;3;0;false;false;;;;;; -133918;1;0;false;false;63;95;191;;; -133919;1;0;false;false;;;;;; -133920;3;0;false;false;127;127;159;;; -133923;3;0;false;false;;;;;; -133926;1;0;false;false;63;95;191;;; -133927;3;0;false;false;;;;;; -133930;1;0;false;false;63;95;191;;; -133931;1;0;false;false;;;;;; -133932;7;1;false;false;127;159;191;;; -133939;1;0;false;false;63;95;191;;; -133940;1;0;false;false;;;;;; -133941;1;0;false;false;63;95;191;;; -133942;1;0;false;false;;;;;; -133943;8;0;false;false;63;95;191;;; -133951;1;0;false;false;;;;;; -133952;2;0;false;false;63;95;191;;; -133954;1;0;false;false;;;;;; -133955;3;0;false;false;63;95;191;;; -133958;1;0;false;false;;;;;; -133959;5;0;false;false;63;95;191;;; -133964;1;0;false;false;;;;;; -133965;8;0;false;false;63;95;191;;; -133973;3;0;false;false;;;;;; -133976;1;0;false;false;63;95;191;;; -133977;1;0;false;false;;;;;; -133978;7;1;false;false;127;159;191;;; -133985;4;0;false;false;63;95;191;;; -133989;1;0;false;false;;;;;; -133990;4;0;false;false;63;95;191;;; -133994;1;0;false;false;;;;;; -133995;3;0;false;false;63;95;191;;; -133998;1;0;false;false;;;;;; -133999;5;0;false;false;63;95;191;;; -134004;1;0;false;false;;;;;; -134005;8;0;false;false;63;95;191;;; -134013;1;0;false;false;;;;;; -134014;2;0;false;false;63;95;191;;; -134016;1;0;false;false;;;;;; -134017;2;0;false;false;63;95;191;;; -134019;3;0;false;false;;;;;; -134022;1;0;false;false;63;95;191;;; -134023;1;0;false;false;;;;;; -134024;8;1;false;false;127;159;191;;; -134032;3;0;false;false;63;95;191;;; -134035;1;0;false;false;;;;;; -134036;6;0;false;false;63;95;191;;; -134042;1;0;false;false;;;;;; -134043;2;0;false;false;63;95;191;;; -134045;1;0;false;false;;;;;; -134046;3;0;false;false;63;95;191;;; -134049;1;0;false;false;;;;;; -134050;9;0;false;false;63;95;191;;; -134059;1;0;false;false;;;;;; -134060;1;0;false;false;63;95;191;;; -134061;1;0;false;false;;;;;; -134062;8;0;false;false;63;95;191;;; -134070;1;0;false;false;;;;;; -134071;2;0;false;false;63;95;191;;; -134073;1;0;false;false;;;;;; -134074;3;0;false;false;63;95;191;;; -134077;1;0;false;false;;;;;; -134078;9;0;false;false;63;95;191;;; -134087;1;0;false;false;;;;;; -134088;5;0;false;false;63;95;191;;; -134093;3;0;false;false;;;;;; -134096;1;0;false;false;63;95;191;;; -134097;2;0;false;false;;;;;; -134099;8;0;false;false;63;95;191;;; -134107;1;0;false;false;;;;;; -134108;2;0;false;false;63;95;191;;; -134110;1;0;false;false;;;;;; -134111;3;0;false;false;63;95;191;;; -134114;1;0;false;false;;;;;; -134115;9;0;false;false;63;95;191;;; -134124;1;0;false;false;;;;;; -134125;2;0;false;false;63;95;191;;; -134127;1;0;false;false;;;;;; -134128;3;0;false;false;63;95;191;;; -134131;1;0;false;false;;;;;; -134132;8;0;false;false;63;95;191;;; -134140;3;0;false;false;;;;;; -134143;2;0;false;false;63;95;191;;; -134145;2;0;false;false;;;;;; -134147;3;1;false;false;127;0;85;;; -134150;1;0;false;false;;;;;; -134151;25;0;false;false;0;0;0;;; -134176;3;1;false;false;127;0;85;;; -134179;1;0;false;false;;;;;; -134180;2;0;false;false;0;0;0;;; -134182;1;0;false;false;;;;;; -134183;3;1;false;false;127;0;85;;; -134186;1;0;false;false;;;;;; -134187;5;0;false;false;0;0;0;;; -134192;1;0;false;false;;;;;; -134193;1;0;false;false;0;0;0;;; -134194;3;0;false;false;;;;;; -134197;6;0;false;false;0;0;0;;; -134203;1;0;false;false;;;;;; -134204;8;0;false;false;0;0;0;;; -134212;1;0;false;false;;;;;; -134213;1;0;false;false;0;0;0;;; -134214;1;0;false;false;;;;;; -134215;22;0;false;false;0;0;0;;; -134237;3;0;false;false;;;;;; -134240;3;1;false;false;127;0;85;;; -134243;1;0;false;false;;;;;; -134244;10;0;false;false;0;0;0;;; -134254;1;0;false;false;;;;;; -134255;1;0;false;false;0;0;0;;; -134256;1;0;false;false;;;;;; -134257;30;0;false;false;0;0;0;;; -134287;3;0;false;false;;;;;; -134290;6;1;false;false;127;0;85;;; -134296;1;0;false;false;;;;;; -134297;22;0;false;false;0;0;0;;; -134319;1;0;false;false;;;;;; -134320;11;0;false;false;0;0;0;;; -134331;1;0;false;false;;;;;; -134332;2;0;false;false;0;0;0;;; -134334;1;0;false;false;;;;;; -134335;1;0;false;false;0;0;0;;; -134336;1;0;false;false;;;;;; -134337;11;0;false;false;0;0;0;;; -134348;2;0;false;false;;;;;; -134350;1;0;false;false;0;0;0;;; -134351;2;0;false;false;;;;;; -134353;3;0;false;false;63;95;191;;; -134356;3;0;false;false;;;;;; -134359;1;0;false;false;63;95;191;;; -134360;1;0;false;false;;;;;; -134361;6;0;false;false;63;95;191;;; -134367;1;0;false;false;;;;;; -134368;3;0;false;false;63;95;191;;; -134371;1;0;false;false;;;;;; -134372;11;0;false;false;63;95;191;;; -134383;1;0;false;false;;;;;; -134384;2;0;false;false;63;95;191;;; -134386;1;0;false;false;;;;;; -134387;3;0;false;false;63;95;191;;; -134390;1;0;false;false;;;;;; -134391;9;0;false;false;63;95;191;;; -134400;3;0;false;false;;;;;; -134403;1;0;false;false;63;95;191;;; -134404;3;0;false;false;;;;;; -134407;1;0;false;false;63;95;191;;; -134408;1;0;false;false;;;;;; -134409;8;1;false;false;127;159;191;;; -134417;3;0;false;false;63;95;191;;; -134420;1;0;false;false;;;;;; -134421;11;0;false;false;63;95;191;;; -134432;1;0;false;false;;;;;; -134433;5;0;false;false;63;95;191;;; -134438;3;0;false;false;;;;;; -134441;1;0;false;false;63;95;191;;; -134442;4;0;false;false;;;;;; -134446;1;0;false;false;63;95;191;;; -134447;1;0;false;false;;;;;; -134448;11;1;false;false;127;159;191;;; -134459;12;0;false;false;63;95;191;;; -134471;1;0;false;false;;;;;; -134472;4;0;false;false;127;127;159;;; -134476;3;0;false;false;;;;;; -134479;1;0;false;false;63;95;191;;; -134480;4;0;false;false;;;;;; -134484;4;0;false;false;127;127;159;;; -134488;21;0;false;false;63;95;191;;; -134509;1;0;false;false;;;;;; -134510;1;0;false;false;127;127;159;;; -134511;1;0;false;false;;;;;; -134512;2;0;false;false;63;95;191;;; -134514;1;0;false;false;;;;;; -134515;3;0;false;false;63;95;191;;; -134518;1;0;false;false;;;;;; -134519;8;0;false;false;63;95;191;;; -134527;1;0;false;false;;;;;; -134528;3;0;false;false;63;95;191;;; -134531;1;0;false;false;;;;;; -134532;4;0;false;false;63;95;191;;; -134536;1;0;false;false;;;;;; -134537;8;0;false;false;63;95;191;;; -134545;5;0;false;false;127;127;159;;; -134550;3;0;false;false;;;;;; -134553;1;0;false;false;63;95;191;;; -134554;4;0;false;false;;;;;; -134558;4;0;false;false;127;127;159;;; -134562;27;0;false;false;63;95;191;;; -134589;1;0;false;false;;;;;; -134590;1;0;false;false;127;127;159;;; -134591;1;0;false;false;;;;;; -134592;2;0;false;false;63;95;191;;; -134594;1;0;false;false;;;;;; -134595;3;0;false;false;63;95;191;;; -134598;1;0;false;false;;;;;; -134599;6;0;false;false;63;95;191;;; -134605;1;0;false;false;;;;;; -134606;4;0;false;false;63;95;191;;; -134610;1;0;false;false;;;;;; -134611;3;0;false;false;63;95;191;;; -134614;1;0;false;false;;;;;; -134615;6;0;false;false;63;95;191;;; -134621;1;0;false;false;;;;;; -134622;4;0;false;false;63;95;191;;; -134626;1;0;false;false;;;;;; -134627;7;0;false;false;63;95;191;;; -134634;1;0;false;false;;;;;; -134635;3;0;false;false;63;95;191;;; -134638;1;0;false;false;;;;;; -134639;8;0;false;false;63;95;191;;; -134647;5;0;false;false;127;127;159;;; -134652;3;0;false;false;;;;;; -134655;1;0;false;false;63;95;191;;; -134656;1;0;false;false;;;;;; -134657;5;0;false;false;127;127;159;;; -134662;3;0;false;false;;;;;; -134665;1;0;false;false;63;95;191;;; -134666;4;0;false;false;;;;;; -134670;1;0;false;false;63;95;191;;; -134671;1;0;false;false;;;;;; -134672;7;1;false;false;127;159;191;;; -134679;5;0;false;false;63;95;191;;; -134684;3;0;false;false;;;;;; -134687;2;0;false;false;63;95;191;;; -134689;2;0;false;false;;;;;; -134691;6;1;false;false;127;0;85;;; -134697;1;0;false;false;;;;;; -134698;3;1;false;false;127;0;85;;; -134701;1;0;false;false;;;;;; -134702;14;0;false;false;0;0;0;;; -134716;1;0;false;false;;;;;; -134717;2;0;false;false;0;0;0;;; -134719;1;0;false;false;;;;;; -134720;1;0;false;false;0;0;0;;; -134721;3;0;false;false;;;;;; -134724;14;0;false;false;0;0;0;;; -134738;3;0;false;false;;;;;; -134741;6;1;false;false;127;0;85;;; -134747;1;0;false;false;;;;;; -134748;12;0;false;false;0;0;0;;; -134760;1;0;false;false;;;;;; -134761;1;0;false;false;0;0;0;;; -134762;1;0;false;false;;;;;; -134763;17;0;false;false;0;0;0;;; -134780;1;0;false;false;;;;;; -134781;1;0;false;false;0;0;0;;; -134782;1;0;false;false;;;;;; -134783;18;0;false;false;0;0;0;;; -134801;2;0;false;false;;;;;; -134803;1;0;false;false;0;0;0;;; -134804;2;0;false;false;;;;;; -134806;3;0;false;false;63;95;191;;; -134809;4;0;false;false;;;;;; -134813;1;0;false;false;63;95;191;;; -134814;1;0;false;false;;;;;; -134815;7;0;false;false;63;95;191;;; -134822;1;0;false;false;;;;;; -134823;3;0;false;false;63;95;191;;; -134826;1;0;false;false;;;;;; -134827;5;0;false;false;63;95;191;;; -134832;1;0;false;false;;;;;; -134833;2;0;false;false;63;95;191;;; -134835;1;0;false;false;;;;;; -134836;3;0;false;false;63;95;191;;; -134839;1;0;false;false;;;;;; -134840;4;0;false;false;63;95;191;;; -134844;1;0;false;false;;;;;; -134845;9;0;false;false;63;95;191;;; -134854;1;0;false;false;;;;;; -134855;7;0;false;false;63;95;191;;; -134862;1;0;false;false;;;;;; -134863;5;0;false;false;63;95;191;;; -134868;3;0;false;false;;;;;; -134871;1;0;false;false;63;95;191;;; -134872;3;0;false;false;;;;;; -134875;1;0;false;false;63;95;191;;; -134876;1;0;false;false;;;;;; -134877;8;1;false;false;127;159;191;;; -134885;5;0;false;false;63;95;191;;; -134890;1;0;false;false;;;;;; -134891;2;0;false;false;63;95;191;;; -134893;1;0;false;false;;;;;; -134894;3;0;false;false;63;95;191;;; -134897;1;0;false;false;;;;;; -134898;4;0;false;false;63;95;191;;; -134902;1;0;false;false;;;;;; -134903;9;0;false;false;63;95;191;;; -134912;1;0;false;false;;;;;; -134913;7;0;false;false;63;95;191;;; -134920;1;0;false;false;;;;;; -134921;5;0;false;false;63;95;191;;; -134926;3;0;false;false;;;;;; -134929;2;0;false;false;63;95;191;;; -134931;2;0;false;false;;;;;; -134933;3;1;false;false;127;0;85;;; -134936;1;0;false;false;;;;;; -134937;23;0;false;false;0;0;0;;; -134960;1;0;false;false;;;;;; -134961;1;0;false;false;0;0;0;;; -134962;3;0;false;false;;;;;; -134965;3;1;false;false;127;0;85;;; -134968;1;0;false;false;;;;;; -134969;16;0;false;false;0;0;0;;; -134985;1;0;false;false;;;;;; -134986;1;0;false;false;0;0;0;;; -134987;1;0;false;false;;;;;; -134988;42;0;false;false;0;0;0;;; -135030;1;0;false;false;;;;;; -135031;12;0;false;false;0;0;0;;; -135043;3;0;false;false;;;;;; -135046;6;1;false;false;127;0;85;;; -135052;1;0;false;false;;;;;; -135053;32;0;false;false;0;0;0;;; -135085;1;0;false;false;;;;;; -135086;8;0;false;false;0;0;0;;; -135094;1;0;false;false;;;;;; -135095;1;0;false;false;0;0;0;;; -135096;1;0;false;false;;;;;; -135097;17;0;false;false;0;0;0;;; -135114;1;0;false;false;;;;;; -135115;1;0;false;false;0;0;0;;; -135116;1;0;false;false;;;;;; -135117;2;0;false;false;0;0;0;;; -135119;2;0;false;false;;;;;; -135121;1;0;false;false;0;0;0;;; -135122;2;0;false;false;;;;;; -135124;3;0;false;false;63;95;191;;; -135127;3;0;false;false;;;;;; -135130;1;0;false;false;63;95;191;;; -135131;1;0;false;false;;;;;; -135132;7;0;false;false;63;95;191;;; -135139;1;0;false;false;;;;;; -135140;3;0;false;false;63;95;191;;; -135143;1;0;false;false;;;;;; -135144;7;0;false;false;63;95;191;;; -135151;1;0;false;false;;;;;; -135152;2;0;false;false;63;95;191;;; -135154;1;0;false;false;;;;;; -135155;3;0;false;false;63;95;191;;; -135158;1;0;false;false;;;;;; -135159;9;0;false;false;63;95;191;;; -135168;1;0;false;false;;;;;; -135169;5;0;false;false;63;95;191;;; -135174;1;0;false;false;;;;;; -135175;5;0;false;false;63;95;191;;; -135180;1;0;false;false;;;;;; -135181;3;0;false;false;63;95;191;;; -135184;1;0;false;false;;;;;; -135185;8;0;false;false;63;95;191;;; -135193;1;0;false;false;;;;;; -135194;4;0;false;false;63;95;191;;; -135198;4;0;false;false;;;;;; -135202;1;0;false;false;63;95;191;;; -135203;1;0;false;false;;;;;; -135204;9;0;false;false;63;95;191;;; -135213;1;0;false;false;;;;;; -135214;2;0;false;false;63;95;191;;; -135216;1;0;false;false;;;;;; -135217;8;0;false;false;63;95;191;;; -135225;1;0;false;false;;;;;; -135226;6;0;false;false;63;95;191;;; -135232;3;0;false;false;;;;;; -135235;1;0;false;false;63;95;191;;; -135236;1;0;false;false;;;;;; -135237;3;0;false;false;127;127;159;;; -135240;3;0;false;false;;;;;; -135243;1;0;false;false;63;95;191;;; -135244;3;0;false;false;;;;;; -135247;1;0;false;false;63;95;191;;; -135248;1;0;false;false;;;;;; -135249;7;1;false;false;127;159;191;;; -135256;6;0;false;false;63;95;191;;; -135262;1;0;false;false;;;;;; -135263;3;0;false;false;63;95;191;;; -135266;1;0;false;false;;;;;; -135267;10;0;false;false;63;95;191;;; -135277;1;0;false;false;;;;;; -135278;2;0;false;false;63;95;191;;; -135280;1;0;false;false;;;;;; -135281;5;0;false;false;63;95;191;;; -135286;1;0;false;false;;;;;; -135287;4;0;false;false;63;95;191;;; -135291;1;0;false;false;;;;;; -135292;4;0;false;false;63;95;191;;; -135296;1;0;false;false;;;;;; -135297;4;0;false;false;63;95;191;;; -135301;3;0;false;false;;;;;; -135304;1;0;false;false;63;95;191;;; -135305;1;0;false;false;;;;;; -135306;8;1;false;false;127;159;191;;; -135314;3;0;false;false;63;95;191;;; -135317;1;0;false;false;;;;;; -135318;7;0;false;false;63;95;191;;; -135325;1;0;false;false;;;;;; -135326;2;0;false;false;63;95;191;;; -135328;1;0;false;false;;;;;; -135329;3;0;false;false;63;95;191;;; -135332;1;0;false;false;;;;;; -135333;9;0;false;false;63;95;191;;; -135342;1;0;false;false;;;;;; -135343;5;0;false;false;63;95;191;;; -135348;1;0;false;false;;;;;; -135349;5;0;false;false;63;95;191;;; -135354;1;0;false;false;;;;;; -135355;3;0;false;false;63;95;191;;; -135358;1;0;false;false;;;;;; -135359;8;0;false;false;63;95;191;;; -135367;1;0;false;false;;;;;; -135368;4;0;false;false;63;95;191;;; -135372;4;0;false;false;;;;;; -135376;1;0;false;false;63;95;191;;; -135377;2;0;false;false;;;;;; -135379;9;0;false;false;63;95;191;;; -135388;1;0;false;false;;;;;; -135389;2;0;false;false;63;95;191;;; -135391;1;0;false;false;;;;;; -135392;8;0;false;false;63;95;191;;; -135400;1;0;false;false;;;;;; -135401;5;0;false;false;63;95;191;;; -135406;1;0;false;false;;;;;; -135407;2;0;false;false;63;95;191;;; -135409;1;0;false;false;;;;;; -135410;7;0;false;false;63;95;191;;; -135417;1;0;false;false;;;;;; -135418;2;0;false;false;63;95;191;;; -135420;1;0;false;false;;;;;; -135421;3;0;false;false;63;95;191;;; -135424;1;0;false;false;;;;;; -135425;9;0;false;false;63;95;191;;; -135434;1;0;false;false;;;;;; -135435;11;0;false;false;63;95;191;;; -135446;3;0;false;false;;;;;; -135449;2;0;false;false;63;95;191;;; -135451;2;0;false;false;;;;;; -135453;6;0;false;false;0;0;0;;; -135459;1;0;false;false;;;;;; -135460;35;0;false;false;0;0;0;;; -135495;1;0;false;false;;;;;; -135496;7;0;false;false;0;0;0;;; -135503;1;0;false;false;;;;;; -135504;1;0;false;false;0;0;0;;; -135505;3;0;false;false;;;;;; -135508;3;1;false;false;127;0;85;;; -135511;1;0;false;false;;;;;; -135512;3;0;false;false;0;0;0;;; -135515;1;0;false;false;;;;;; -135516;1;0;false;false;0;0;0;;; -135517;1;0;false;false;;;;;; -135518;17;0;false;false;0;0;0;;; -135535;1;0;false;false;;;;;; -135536;1;0;false;false;0;0;0;;; -135537;1;0;false;false;;;;;; -135538;22;0;false;false;0;0;0;;; -135560;3;0;false;false;;;;;; -135563;3;1;false;false;127;0;85;;; -135566;1;0;false;false;;;;;; -135567;9;0;false;false;0;0;0;;; -135576;1;0;false;false;;;;;; -135577;1;0;false;false;0;0;0;;; -135578;1;0;false;false;;;;;; -135579;50;0;false;false;0;0;0;;; -135629;3;0;false;false;;;;;; -135632;3;1;false;false;127;0;85;;; -135635;1;0;false;false;;;;;; -135636;7;0;false;false;0;0;0;;; -135643;1;0;false;false;;;;;; -135644;1;0;false;false;0;0;0;;; -135645;1;0;false;false;;;;;; -135646;36;0;false;false;0;0;0;;; -135682;3;0;false;false;;;;;; -135685;6;0;false;false;0;0;0;;; -135691;1;0;false;false;;;;;; -135692;11;0;false;false;0;0;0;;; -135703;1;0;false;false;;;;;; -135704;1;0;false;false;0;0;0;;; -135705;1;0;false;false;;;;;; -135706;32;0;false;false;0;0;0;;; -135738;3;0;false;false;;;;;; -135741;3;1;false;false;127;0;85;;; -135744;1;0;false;false;;;;;; -135745;13;0;false;false;0;0;0;;; -135758;1;0;false;false;;;;;; -135759;1;0;false;false;0;0;0;;; -135760;1;0;false;false;;;;;; -135761;40;0;false;false;0;0;0;;; -135801;6;0;false;false;;;;;; -135807;3;1;false;false;127;0;85;;; -135810;1;0;false;false;;;;;; -135811;1;0;false;false;0;0;0;;; -135812;3;1;false;false;127;0;85;;; -135815;1;0;false;false;;;;;; -135816;1;0;false;false;0;0;0;;; -135817;1;0;false;false;;;;;; -135818;1;0;false;false;0;0;0;;; -135819;1;0;false;false;;;;;; -135820;10;0;false;false;0;0;0;;; -135830;1;0;false;false;;;;;; -135831;1;0;false;false;0;0;0;;; -135832;1;0;false;false;;;;;; -135833;2;0;false;false;0;0;0;;; -135835;1;0;false;false;;;;;; -135836;8;0;false;false;0;0;0;;; -135844;1;0;false;false;;;;;; -135845;4;0;false;false;0;0;0;;; -135849;1;0;false;false;;;;;; -135850;1;0;false;false;0;0;0;;; -135851;4;0;false;false;;;;;; -135855;43;0;false;false;0;0;0;;; -135898;1;0;false;false;;;;;; -135899;35;0;false;false;0;0;0;;; -135934;4;0;false;false;;;;;; -135938;2;1;false;false;127;0;85;;; -135940;1;0;false;false;;;;;; -135941;2;0;false;false;0;0;0;;; -135943;1;0;false;false;;;;;; -135944;1;0;false;false;0;0;0;;; -135945;1;0;false;false;;;;;; -135946;8;0;false;false;0;0;0;;; -135954;1;0;false;false;;;;;; -135955;1;0;false;false;0;0;0;;; -135956;5;0;false;false;;;;;; -135961;49;0;false;false;0;0;0;;; -136010;4;0;false;false;;;;;; -136014;1;0;false;false;0;0;0;;; -136015;3;0;false;false;;;;;; -136018;1;0;false;false;0;0;0;;; -136019;3;0;false;false;;;;;; -136022;2;1;false;false;127;0;85;;; -136024;1;0;false;false;;;;;; -136025;4;0;false;false;0;0;0;;; -136029;1;0;false;false;;;;;; -136030;1;0;false;false;0;0;0;;; -136031;1;0;false;false;;;;;; -136032;13;0;false;false;0;0;0;;; -136045;1;0;false;false;;;;;; -136046;1;0;false;false;0;0;0;;; -136047;1;0;false;false;;;;;; -136048;21;0;false;false;0;0;0;;; -136069;1;0;false;false;;;;;; -136070;1;0;false;false;0;0;0;;; -136071;4;0;false;false;;;;;; -136075;49;0;false;false;0;0;0;;; -136124;3;0;false;false;;;;;; -136127;1;0;false;false;0;0;0;;; -136128;3;0;false;false;;;;;; -136131;15;0;false;false;0;0;0;;; -136146;3;0;false;false;;;;;; -136149;6;1;false;false;127;0;85;;; -136155;1;0;false;false;;;;;; -136156;18;0;false;false;0;0;0;;; -136174;2;0;false;false;;;;;; -136176;1;0;false;false;0;0;0;;; -136177;2;0;false;false;;;;;; -136179;3;0;false;false;63;95;191;;; -136182;3;0;false;false;;;;;; -136185;1;0;false;false;63;95;191;;; -136186;1;0;false;false;;;;;; -136187;7;0;false;false;63;95;191;;; -136194;1;0;false;false;;;;;; -136195;3;0;false;false;63;95;191;;; -136198;1;0;false;false;;;;;; -136199;10;0;false;false;63;95;191;;; -136209;3;0;false;false;;;;;; -136212;1;0;false;false;63;95;191;;; -136213;1;0;false;false;;;;;; -136214;3;0;false;false;127;127;159;;; -136217;3;0;false;false;;;;;; -136220;1;0;false;false;63;95;191;;; -136221;1;0;false;false;;;;;; -136222;4;0;false;false;63;95;191;;; -136226;1;0;false;false;;;;;; -136227;10;0;false;false;63;95;191;;; -136237;1;0;false;false;;;;;; -136238;3;0;false;false;63;95;191;;; -136241;1;0;false;false;;;;;; -136242;9;0;false;false;63;95;191;;; -136251;1;0;false;false;;;;;; -136252;2;0;false;false;63;95;191;;; -136254;1;0;false;false;;;;;; -136255;5;0;false;false;63;95;191;;; -136260;1;0;false;false;;;;;; -136261;2;0;false;false;63;95;191;;; -136263;1;0;false;false;;;;;; -136264;5;0;false;false;63;95;191;;; -136269;1;0;false;false;;;;;; -136270;10;0;false;false;63;95;191;;; -136280;2;0;false;false;;;;;; -136282;2;0;false;false;63;95;191;;; -136284;1;0;false;false;;;;;; -136285;1;0;false;false;63;95;191;;; -136286;1;0;false;false;;;;;; -136287;4;0;false;false;63;95;191;;; -136291;3;0;false;false;;;;;; -136294;1;0;false;false;63;95;191;;; -136295;1;0;false;false;;;;;; -136296;6;0;false;false;63;95;191;;; -136302;1;0;false;false;;;;;; -136303;4;0;false;false;63;95;191;;; -136307;1;0;false;false;;;;;; -136308;8;0;false;false;63;95;191;;; -136316;1;0;false;false;;;;;; -136317;1;0;false;false;63;95;191;;; -136318;1;0;false;false;;;;;; -136319;11;0;false;false;63;95;191;;; -136330;1;0;false;false;;;;;; -136331;5;0;false;false;63;95;191;;; -136336;1;0;false;false;;;;;; -136337;3;0;false;false;63;95;191;;; -136340;1;0;false;false;;;;;; -136341;3;0;false;false;63;95;191;;; -136344;1;0;false;false;;;;;; -136345;5;0;false;false;63;95;191;;; -136350;1;0;false;false;;;;;; -136351;10;0;false;false;63;95;191;;; -136361;4;0;false;false;;;;;; -136365;1;0;false;false;63;95;191;;; -136366;1;0;false;false;;;;;; -136367;7;0;false;false;63;95;191;;; -136374;1;0;false;false;;;;;; -136375;4;0;false;false;63;95;191;;; -136379;1;0;false;false;;;;;; -136380;4;0;false;false;63;95;191;;; -136384;3;0;false;false;;;;;; -136387;1;0;false;false;63;95;191;;; -136388;1;0;false;false;;;;;; -136389;3;0;false;false;127;127;159;;; -136392;3;0;false;false;;;;;; -136395;1;0;false;false;63;95;191;;; -136396;3;0;false;false;;;;;; -136399;1;0;false;false;63;95;191;;; -136400;1;0;false;false;;;;;; -136401;8;1;false;false;127;159;191;;; -136409;5;0;false;false;63;95;191;;; -136414;1;0;false;false;;;;;; -136415;3;0;false;false;63;95;191;;; -136418;1;0;false;false;;;;;; -136419;3;0;false;false;63;95;191;;; -136422;1;0;false;false;;;;;; -136423;2;0;false;false;63;95;191;;; -136425;1;0;false;false;;;;;; -136426;3;0;false;false;63;95;191;;; -136429;1;0;false;false;;;;;; -136430;10;0;false;false;63;95;191;;; -136440;1;0;false;false;;;;;; -136441;1;0;false;false;63;95;191;;; -136442;1;0;false;false;;;;;; -136443;2;0;false;false;63;95;191;;; -136445;1;0;false;false;;;;;; -136446;3;0;false;false;63;95;191;;; -136449;1;0;false;false;;;;;; -136450;6;0;false;false;63;95;191;;; -136456;1;0;false;false;;;;;; -136457;2;0;false;false;63;95;191;;; -136459;1;0;false;false;;;;;; -136460;3;0;false;false;63;95;191;;; -136463;1;0;false;false;;;;;; -136464;5;0;false;false;63;95;191;;; -136469;4;0;false;false;;;;;; -136473;1;0;false;false;63;95;191;;; -136474;2;0;false;false;;;;;; -136476;8;0;false;false;63;95;191;;; -136484;1;0;false;false;;;;;; -136485;10;0;false;false;63;95;191;;; -136495;1;0;false;false;;;;;; -136496;1;0;false;false;63;95;191;;; -136497;1;0;false;false;;;;;; -136498;2;0;false;false;63;95;191;;; -136500;1;0;false;false;;;;;; -136501;3;0;false;false;63;95;191;;; -136504;1;0;false;false;;;;;; -136505;6;0;false;false;63;95;191;;; -136511;1;0;false;false;;;;;; -136512;5;0;false;false;63;95;191;;; -136517;1;0;false;false;;;;;; -136518;3;0;false;false;63;95;191;;; -136521;1;0;false;false;;;;;; -136522;4;0;false;false;63;95;191;;; -136526;1;0;false;false;;;;;; -136527;8;0;false;false;63;95;191;;; -136535;1;0;false;false;;;;;; -136536;10;0;false;false;63;95;191;;; -136546;3;0;false;false;;;;;; -136549;1;0;false;false;63;95;191;;; -136550;2;0;false;false;;;;;; -136552;3;0;false;false;63;95;191;;; -136555;1;0;false;false;;;;;; -136556;9;0;false;false;63;95;191;;; -136565;1;0;false;false;;;;;; -136566;6;0;false;false;63;95;191;;; -136572;1;0;false;false;;;;;; -136573;8;0;false;false;63;95;191;;; -136581;1;0;false;false;;;;;; -136582;3;0;false;false;63;95;191;;; -136585;1;0;false;false;;;;;; -136586;6;0;false;false;63;95;191;;; -136592;1;0;false;false;;;;;; -136593;6;0;false;false;63;95;191;;; -136599;1;0;false;false;;;;;; -136600;1;0;false;false;63;95;191;;; -136601;1;0;false;false;;;;;; -136602;4;0;false;false;63;95;191;;; -136606;1;0;false;false;;;;;; -136607;6;0;false;false;63;95;191;;; -136613;1;0;false;false;;;;;; -136614;6;0;false;false;63;95;191;;; -136620;1;0;false;false;;;;;; -136621;2;0;false;false;63;95;191;;; -136623;6;0;false;false;;;;;; -136629;1;0;false;false;63;95;191;;; -136630;2;0;false;false;;;;;; -136632;80;0;false;false;63;95;191;;; -136712;1;0;false;false;;;;;; -136713;1;0;false;false;63;95;191;;; -136714;2;0;false;false;;;;;; -136716;7;0;false;false;63;95;191;;; -136723;1;0;false;false;;;;;; -136724;7;0;false;false;63;95;191;;; -136731;1;0;false;false;;;;;; -136732;3;0;false;false;63;95;191;;; -136735;1;0;false;false;;;;;; -136736;11;0;false;false;63;95;191;;; -136747;1;0;false;false;;;;;; -136748;2;0;false;false;63;95;191;;; -136750;1;0;false;false;;;;;; -136751;3;0;false;false;63;95;191;;; -136754;1;0;false;false;;;;;; -136755;5;0;false;false;63;95;191;;; -136760;1;0;false;false;;;;;; -136761;3;0;false;false;63;95;191;;; -136764;1;0;false;false;;;;;; -136765;3;0;false;false;63;95;191;;; -136768;1;0;false;false;;;;;; -136769;2;0;false;false;63;95;191;;; -136771;1;0;false;false;;;;;; -136772;3;0;false;false;63;95;191;;; -136775;1;0;false;false;;;;;; -136776;9;0;false;false;63;95;191;;; -136785;4;0;false;false;;;;;; -136789;1;0;false;false;63;95;191;;; -136790;2;0;false;false;;;;;; -136792;6;0;false;false;63;95;191;;; -136798;1;0;false;false;;;;;; -136799;11;0;false;false;63;95;191;;; -136810;1;0;false;false;;;;;; -136811;2;0;false;false;63;95;191;;; -136813;1;0;false;false;;;;;; -136814;5;0;false;false;63;95;191;;; -136819;1;0;false;false;;;;;; -136820;2;0;false;false;63;95;191;;; -136822;1;0;false;false;;;;;; -136823;9;0;false;false;63;95;191;;; -136832;1;0;false;false;;;;;; -136833;7;0;false;false;63;95;191;;; -136840;1;0;false;false;;;;;; -136841;4;0;false;false;63;95;191;;; -136845;1;0;false;false;;;;;; -136846;3;0;false;false;63;95;191;;; -136849;1;0;false;false;;;;;; -136850;9;0;false;false;63;95;191;;; -136859;1;0;false;false;;;;;; -136860;2;0;false;false;63;95;191;;; -136862;1;0;false;false;;;;;; -136863;6;0;false;false;63;95;191;;; -136869;3;0;false;false;;;;;; -136872;1;0;false;false;63;95;191;;; -136873;1;0;false;false;;;;;; -136874;5;1;false;false;127;159;191;;; -136879;18;0;false;false;63;95;191;;; -136897;3;0;false;false;;;;;; -136900;1;0;false;false;63;95;191;;; -136901;1;0;false;false;;;;;; -136902;11;1;false;false;127;159;191;;; -136913;12;0;false;false;63;95;191;;; -136925;1;0;false;false;;;;;; -136926;4;0;false;false;127;127;159;;; -136930;3;0;false;false;;;;;; -136933;1;0;false;false;63;95;191;;; -136934;4;0;false;false;;;;;; -136938;4;0;false;false;127;127;159;;; -136942;21;0;false;false;63;95;191;;; -136963;1;0;false;false;;;;;; -136964;1;0;false;false;127;127;159;;; -136965;1;0;false;false;;;;;; -136966;2;0;false;false;63;95;191;;; -136968;1;0;false;false;;;;;; -136969;3;0;false;false;63;95;191;;; -136972;1;0;false;false;;;;;; -136973;8;0;false;false;63;95;191;;; -136981;1;0;false;false;;;;;; -136982;3;0;false;false;63;95;191;;; -136985;1;0;false;false;;;;;; -136986;4;0;false;false;63;95;191;;; -136990;1;0;false;false;;;;;; -136991;8;0;false;false;63;95;191;;; -136999;5;0;false;false;127;127;159;;; -137004;3;0;false;false;;;;;; -137007;1;0;false;false;63;95;191;;; -137008;4;0;false;false;;;;;; -137012;4;0;false;false;127;127;159;;; -137016;27;0;false;false;63;95;191;;; -137043;1;0;false;false;;;;;; -137044;1;0;false;false;127;127;159;;; -137045;1;0;false;false;;;;;; -137046;2;0;false;false;63;95;191;;; -137048;1;0;false;false;;;;;; -137049;3;0;false;false;63;95;191;;; -137052;1;0;false;false;;;;;; -137053;6;0;false;false;63;95;191;;; -137059;1;0;false;false;;;;;; -137060;4;0;false;false;63;95;191;;; -137064;1;0;false;false;;;;;; -137065;3;0;false;false;63;95;191;;; -137068;1;0;false;false;;;;;; -137069;6;0;false;false;63;95;191;;; -137075;1;0;false;false;;;;;; -137076;4;0;false;false;63;95;191;;; -137080;1;0;false;false;;;;;; -137081;7;0;false;false;63;95;191;;; -137088;1;0;false;false;;;;;; -137089;3;0;false;false;63;95;191;;; -137092;1;0;false;false;;;;;; -137093;8;0;false;false;63;95;191;;; -137101;5;0;false;false;127;127;159;;; -137106;3;0;false;false;;;;;; -137109;1;0;false;false;63;95;191;;; -137110;1;0;false;false;;;;;; -137111;5;0;false;false;127;127;159;;; -137116;3;0;false;false;;;;;; -137119;2;0;false;false;63;95;191;;; -137121;2;0;false;false;;;;;; -137123;6;1;false;false;127;0;85;;; -137129;1;0;false;false;;;;;; -137130;5;0;false;false;0;0;0;;; -137135;1;0;false;false;;;;;; -137136;14;0;false;false;0;0;0;;; -137150;1;0;false;false;;;;;; -137151;1;0;false;false;0;0;0;;; -137152;3;0;false;false;;;;;; -137155;14;0;false;false;0;0;0;;; -137169;3;0;false;false;;;;;; -137172;6;1;false;false;127;0;85;;; -137178;1;0;false;false;;;;;; -137179;3;1;false;false;127;0;85;;; -137182;1;0;false;false;;;;;; -137183;18;0;false;false;0;0;0;;; -137201;1;0;false;false;;;;;; -137202;13;0;false;false;0;0;0;;; -137215;2;0;false;false;;;;;; -137217;1;0;false;false;0;0;0;;; -137218;2;0;false;false;;;;;; -137220;3;0;false;false;63;95;191;;; -137223;3;0;false;false;;;;;; -137226;1;0;false;false;63;95;191;;; -137227;1;0;false;false;;;;;; -137228;7;0;false;false;63;95;191;;; -137235;1;0;false;false;;;;;; -137236;3;0;false;false;63;95;191;;; -137239;1;0;false;false;;;;;; -137240;10;0;false;false;63;95;191;;; -137250;3;0;false;false;;;;;; -137253;1;0;false;false;63;95;191;;; -137254;1;0;false;false;;;;;; -137255;3;0;false;false;127;127;159;;; -137258;3;0;false;false;;;;;; -137261;1;0;false;false;63;95;191;;; -137262;3;0;false;false;;;;;; -137265;1;0;false;false;63;95;191;;; -137266;1;0;false;false;;;;;; -137267;8;1;false;false;127;159;191;;; -137275;5;0;false;false;63;95;191;;; -137280;1;0;false;false;;;;;; -137281;3;0;false;false;63;95;191;;; -137284;1;0;false;false;;;;;; -137285;6;0;false;false;63;95;191;;; -137291;1;0;false;false;;;;;; -137292;2;0;false;false;63;95;191;;; -137294;1;0;false;false;;;;;; -137295;3;0;false;false;63;95;191;;; -137298;1;0;false;false;;;;;; -137299;10;0;false;false;63;95;191;;; -137309;1;0;false;false;;;;;; -137310;1;0;false;false;63;95;191;;; -137311;1;0;false;false;;;;;; -137312;2;0;false;false;63;95;191;;; -137314;1;0;false;false;;;;;; -137315;3;0;false;false;63;95;191;;; -137318;1;0;false;false;;;;;; -137319;6;0;false;false;63;95;191;;; -137325;1;0;false;false;;;;;; -137326;2;0;false;false;63;95;191;;; -137328;1;0;false;false;;;;;; -137329;3;0;false;false;63;95;191;;; -137332;4;0;false;false;;;;;; -137336;1;0;false;false;63;95;191;;; -137337;2;0;false;false;;;;;; -137339;5;0;false;false;63;95;191;;; -137344;1;0;false;false;;;;;; -137345;8;0;false;false;63;95;191;;; -137353;1;0;false;false;;;;;; -137354;10;0;false;false;63;95;191;;; -137364;1;0;false;false;;;;;; -137365;8;0;false;false;63;95;191;;; -137373;1;0;false;false;;;;;; -137374;2;0;false;false;63;95;191;;; -137376;1;0;false;false;;;;;; -137377;3;0;false;false;63;95;191;;; -137380;1;0;false;false;;;;;; -137381;5;0;false;false;63;95;191;;; -137386;1;0;false;false;;;;;; -137387;9;0;false;false;63;95;191;;; -137396;1;0;false;false;;;;;; -137397;2;0;false;false;63;95;191;;; -137399;1;0;false;false;;;;;; -137400;3;0;false;false;63;95;191;;; -137403;4;0;false;false;;;;;; -137407;1;0;false;false;63;95;191;;; -137408;2;0;false;false;;;;;; -137410;6;0;false;false;63;95;191;;; -137416;1;0;false;false;;;;;; -137417;8;0;false;false;63;95;191;;; -137425;1;0;false;false;;;;;; -137426;1;0;false;false;63;95;191;;; -137427;1;0;false;false;;;;;; -137428;2;0;false;false;63;95;191;;; -137430;1;0;false;false;;;;;; -137431;3;0;false;false;63;95;191;;; -137434;1;0;false;false;;;;;; -137435;6;0;false;false;63;95;191;;; -137441;1;0;false;false;;;;;; -137442;2;0;false;false;63;95;191;;; -137444;1;0;false;false;;;;;; -137445;3;0;false;false;63;95;191;;; -137448;1;0;false;false;;;;;; -137449;10;0;false;false;63;95;191;;; -137459;4;0;false;false;;;;;; -137463;1;0;false;false;63;95;191;;; -137464;2;0;false;false;;;;;; -137466;3;0;false;false;63;95;191;;; -137469;1;0;false;false;;;;;; -137470;9;0;false;false;63;95;191;;; -137479;1;0;false;false;;;;;; -137480;6;0;false;false;63;95;191;;; -137486;1;0;false;false;;;;;; -137487;8;0;false;false;63;95;191;;; -137495;1;0;false;false;;;;;; -137496;3;0;false;false;63;95;191;;; -137499;1;0;false;false;;;;;; -137500;6;0;false;false;63;95;191;;; -137506;1;0;false;false;;;;;; -137507;6;0;false;false;63;95;191;;; -137513;1;0;false;false;;;;;; -137514;6;0;false;false;63;95;191;;; -137520;1;0;false;false;;;;;; -137521;4;0;false;false;63;95;191;;; -137525;1;0;false;false;;;;;; -137526;6;0;false;false;63;95;191;;; -137532;1;0;false;false;;;;;; -137533;6;0;false;false;63;95;191;;; -137539;1;0;false;false;;;;;; -137540;2;0;false;false;63;95;191;;; -137542;6;0;false;false;;;;;; -137548;1;0;false;false;63;95;191;;; -137549;2;0;false;false;;;;;; -137551;10;0;false;false;63;95;191;;; -137561;2;0;false;false;;;;;; -137563;2;0;false;false;63;95;191;;; -137565;1;0;false;false;;;;;; -137566;9;0;false;false;63;95;191;;; -137575;1;0;false;false;;;;;; -137576;2;0;false;false;63;95;191;;; -137578;1;0;false;false;;;;;; -137579;1;0;false;false;63;95;191;;; -137580;1;0;false;false;;;;;; -137581;9;0;false;false;63;95;191;;; -137590;1;0;false;false;;;;;; -137591;2;0;false;false;63;95;191;;; -137593;1;0;false;false;;;;;; -137594;5;0;false;false;63;95;191;;; -137599;1;0;false;false;127;127;159;;; -137600;2;0;false;false;63;95;191;;; -137602;1;0;false;false;127;127;159;;; -137603;4;0;false;false;63;95;191;;; -137607;1;0;false;false;;;;;; -137608;6;0;false;false;63;95;191;;; -137614;1;0;false;false;;;;;; -137615;3;0;false;false;63;95;191;;; -137618;1;0;false;false;;;;;; -137619;4;0;false;false;63;95;191;;; -137623;1;0;false;false;127;127;159;;; -137624;2;0;false;false;63;95;191;;; -137626;1;0;false;false;127;127;159;;; -137627;5;0;false;false;63;95;191;;; -137632;4;0;false;false;;;;;; -137636;1;0;false;false;63;95;191;;; -137637;2;0;false;false;;;;;; -137639;7;0;false;false;63;95;191;;; -137646;1;0;false;false;;;;;; -137647;7;0;false;false;63;95;191;;; -137654;1;0;false;false;;;;;; -137655;3;0;false;false;63;95;191;;; -137658;1;0;false;false;;;;;; -137659;11;0;false;false;63;95;191;;; -137670;1;0;false;false;;;;;; -137671;2;0;false;false;63;95;191;;; -137673;1;0;false;false;;;;;; -137674;3;0;false;false;63;95;191;;; -137677;1;0;false;false;;;;;; -137678;5;0;false;false;63;95;191;;; -137683;1;0;false;false;;;;;; -137684;3;0;false;false;63;95;191;;; -137687;1;0;false;false;;;;;; -137688;3;0;false;false;63;95;191;;; -137691;1;0;false;false;;;;;; -137692;2;0;false;false;63;95;191;;; -137694;1;0;false;false;;;;;; -137695;3;0;false;false;63;95;191;;; -137698;1;0;false;false;;;;;; -137699;9;0;false;false;63;95;191;;; -137708;4;0;false;false;;;;;; -137712;1;0;false;false;63;95;191;;; -137713;2;0;false;false;;;;;; -137715;6;0;false;false;63;95;191;;; -137721;1;0;false;false;;;;;; -137722;11;0;false;false;63;95;191;;; -137733;1;0;false;false;;;;;; -137734;2;0;false;false;63;95;191;;; -137736;1;0;false;false;;;;;; -137737;5;0;false;false;63;95;191;;; -137742;1;0;false;false;;;;;; -137743;2;0;false;false;63;95;191;;; -137745;1;0;false;false;;;;;; -137746;9;0;false;false;63;95;191;;; -137755;1;0;false;false;;;;;; -137756;7;0;false;false;63;95;191;;; -137763;1;0;false;false;;;;;; -137764;4;0;false;false;63;95;191;;; -137768;1;0;false;false;;;;;; -137769;3;0;false;false;63;95;191;;; -137772;1;0;false;false;;;;;; -137773;9;0;false;false;63;95;191;;; -137782;1;0;false;false;;;;;; -137783;2;0;false;false;63;95;191;;; -137785;1;0;false;false;;;;;; -137786;6;0;false;false;63;95;191;;; -137792;3;0;false;false;;;;;; -137795;1;0;false;false;63;95;191;;; -137796;1;0;false;false;;;;;; -137797;11;1;false;false;127;159;191;;; -137808;12;0;false;false;63;95;191;;; -137820;1;0;false;false;;;;;; -137821;4;0;false;false;127;127;159;;; -137825;3;0;false;false;;;;;; -137828;1;0;false;false;63;95;191;;; -137829;4;0;false;false;;;;;; -137833;4;0;false;false;127;127;159;;; -137837;21;0;false;false;63;95;191;;; -137858;1;0;false;false;;;;;; -137859;1;0;false;false;127;127;159;;; -137860;1;0;false;false;;;;;; -137861;2;0;false;false;63;95;191;;; -137863;1;0;false;false;;;;;; -137864;3;0;false;false;63;95;191;;; -137867;1;0;false;false;;;;;; -137868;8;0;false;false;63;95;191;;; -137876;1;0;false;false;;;;;; -137877;3;0;false;false;63;95;191;;; -137880;1;0;false;false;;;;;; -137881;4;0;false;false;63;95;191;;; -137885;1;0;false;false;;;;;; -137886;8;0;false;false;63;95;191;;; -137894;5;0;false;false;127;127;159;;; -137899;3;0;false;false;;;;;; -137902;1;0;false;false;63;95;191;;; -137903;4;0;false;false;;;;;; -137907;4;0;false;false;127;127;159;;; -137911;27;0;false;false;63;95;191;;; -137938;1;0;false;false;;;;;; -137939;1;0;false;false;127;127;159;;; -137940;1;0;false;false;;;;;; -137941;2;0;false;false;63;95;191;;; -137943;1;0;false;false;;;;;; -137944;3;0;false;false;63;95;191;;; -137947;1;0;false;false;;;;;; -137948;6;0;false;false;63;95;191;;; -137954;1;0;false;false;;;;;; -137955;4;0;false;false;63;95;191;;; -137959;1;0;false;false;;;;;; -137960;3;0;false;false;63;95;191;;; -137963;1;0;false;false;;;;;; -137964;6;0;false;false;63;95;191;;; -137970;1;0;false;false;;;;;; -137971;4;0;false;false;63;95;191;;; -137975;1;0;false;false;;;;;; -137976;7;0;false;false;63;95;191;;; -137983;1;0;false;false;;;;;; -137984;3;0;false;false;63;95;191;;; -137987;1;0;false;false;;;;;; -137988;8;0;false;false;63;95;191;;; -137996;5;0;false;false;127;127;159;;; -138001;3;0;false;false;;;;;; -138004;1;0;false;false;63;95;191;;; -138005;1;0;false;false;;;;;; -138006;5;0;false;false;127;127;159;;; -138011;3;0;false;false;;;;;; -138014;2;0;false;false;63;95;191;;; -138016;2;0;false;false;;;;;; -138018;6;1;false;false;127;0;85;;; -138024;1;0;false;false;;;;;; -138025;5;0;false;false;0;0;0;;; -138030;1;0;false;false;;;;;; -138031;19;0;false;false;0;0;0;;; -138050;1;0;false;false;;;;;; -138051;1;0;false;false;0;0;0;;; -138052;3;0;false;false;;;;;; -138055;14;0;false;false;0;0;0;;; -138069;3;0;false;false;;;;;; -138072;6;1;false;false;127;0;85;;; -138078;1;0;false;false;;;;;; -138079;3;1;false;false;127;0;85;;; -138082;1;0;false;false;;;;;; -138083;18;0;false;false;0;0;0;;; -138101;1;0;false;false;;;;;; -138102;11;0;false;false;0;0;0;;; -138113;1;0;false;false;;;;;; -138114;1;0;false;false;0;0;0;;; -138115;1;0;false;false;;;;;; -138116;13;0;false;false;0;0;0;;; -138129;2;0;false;false;;;;;; -138131;1;0;false;false;0;0;0;;; -138132;2;0;false;false;;;;;; -138134;3;0;false;false;63;95;191;;; -138137;3;0;false;false;;;;;; -138140;1;0;false;false;63;95;191;;; -138141;1;0;false;false;;;;;; -138142;7;0;false;false;63;95;191;;; -138149;1;0;false;false;;;;;; -138150;3;0;false;false;63;95;191;;; -138153;1;0;false;false;;;;;; -138154;10;0;false;false;63;95;191;;; -138164;1;0;false;false;;;;;; -138165;9;0;false;false;63;95;191;;; -138174;1;0;false;false;;;;;; -138175;10;0;false;false;63;95;191;;; -138185;1;0;false;false;;;;;; -138186;6;0;false;false;63;95;191;;; -138192;3;0;false;false;;;;;; -138195;1;0;false;false;63;95;191;;; -138196;3;0;false;false;;;;;; -138199;1;0;false;false;63;95;191;;; -138200;1;0;false;false;;;;;; -138201;8;1;false;false;127;159;191;;; -138209;3;0;false;false;63;95;191;;; -138212;1;0;false;false;;;;;; -138213;9;0;false;false;63;95;191;;; -138222;1;0;false;false;;;;;; -138223;10;0;false;false;63;95;191;;; -138233;1;0;false;false;;;;;; -138234;5;0;false;false;63;95;191;;; -138239;3;0;false;false;;;;;; -138242;1;0;false;false;63;95;191;;; -138243;3;0;false;false;;;;;; -138246;1;0;false;false;63;95;191;;; -138247;1;0;false;false;;;;;; -138248;11;1;false;false;127;159;191;;; -138259;12;0;false;false;63;95;191;;; -138271;1;0;false;false;;;;;; -138272;4;0;false;false;127;127;159;;; -138276;3;0;false;false;;;;;; -138279;1;0;false;false;63;95;191;;; -138280;4;0;false;false;;;;;; -138284;4;0;false;false;127;127;159;;; -138288;21;0;false;false;63;95;191;;; -138309;1;0;false;false;;;;;; -138310;1;0;false;false;127;127;159;;; -138311;1;0;false;false;;;;;; -138312;2;0;false;false;63;95;191;;; -138314;1;0;false;false;;;;;; -138315;3;0;false;false;63;95;191;;; -138318;1;0;false;false;;;;;; -138319;8;0;false;false;63;95;191;;; -138327;1;0;false;false;;;;;; -138328;3;0;false;false;63;95;191;;; -138331;1;0;false;false;;;;;; -138332;4;0;false;false;63;95;191;;; -138336;1;0;false;false;;;;;; -138337;8;0;false;false;63;95;191;;; -138345;5;0;false;false;127;127;159;;; -138350;3;0;false;false;;;;;; -138353;1;0;false;false;63;95;191;;; -138354;4;0;false;false;;;;;; -138358;4;0;false;false;127;127;159;;; -138362;27;0;false;false;63;95;191;;; -138389;1;0;false;false;;;;;; -138390;1;0;false;false;127;127;159;;; -138391;1;0;false;false;;;;;; -138392;2;0;false;false;63;95;191;;; -138394;1;0;false;false;;;;;; -138395;3;0;false;false;63;95;191;;; -138398;1;0;false;false;;;;;; -138399;6;0;false;false;63;95;191;;; -138405;1;0;false;false;;;;;; -138406;4;0;false;false;63;95;191;;; -138410;1;0;false;false;;;;;; -138411;3;0;false;false;63;95;191;;; -138414;1;0;false;false;;;;;; -138415;6;0;false;false;63;95;191;;; -138421;1;0;false;false;;;;;; -138422;4;0;false;false;63;95;191;;; -138426;1;0;false;false;;;;;; -138427;7;0;false;false;63;95;191;;; -138434;1;0;false;false;;;;;; -138435;3;0;false;false;63;95;191;;; -138438;1;0;false;false;;;;;; -138439;8;0;false;false;63;95;191;;; -138447;5;0;false;false;127;127;159;;; -138452;3;0;false;false;;;;;; -138455;1;0;false;false;63;95;191;;; -138456;1;0;false;false;;;;;; -138457;5;0;false;false;127;127;159;;; -138462;3;0;false;false;;;;;; -138465;1;0;false;false;63;95;191;;; -138466;1;0;false;false;;;;;; -138467;7;1;false;false;127;159;191;;; -138474;3;0;false;false;63;95;191;;; -138477;3;0;false;false;;;;;; -138480;2;0;false;false;63;95;191;;; -138482;2;0;false;false;;;;;; -138484;6;1;false;false;127;0;85;;; -138490;1;0;false;false;;;;;; -138491;5;0;false;false;0;0;0;;; -138496;1;0;false;false;;;;;; -138497;24;0;false;false;0;0;0;;; -138521;1;0;false;false;;;;;; -138522;1;0;false;false;0;0;0;;; -138523;3;0;false;false;;;;;; -138526;14;0;false;false;0;0;0;;; -138540;3;0;false;false;;;;;; -138543;2;1;false;false;127;0;85;;; -138545;1;0;false;false;;;;;; -138546;20;0;false;false;0;0;0;;; -138566;1;0;false;false;;;;;; -138567;2;0;false;false;0;0;0;;; -138569;1;0;false;false;;;;;; -138570;4;1;false;false;127;0;85;;; -138574;1;0;false;false;0;0;0;;; -138575;1;0;false;false;;;;;; -138576;1;0;false;false;0;0;0;;; -138577;4;0;false;false;;;;;; -138581;6;1;false;false;127;0;85;;; -138587;1;0;false;false;;;;;; -138588;54;0;false;false;0;0;0;;; -138642;3;0;false;false;;;;;; -138645;1;0;false;false;0;0;0;;; -138646;3;0;false;false;;;;;; -138649;6;1;false;false;127;0;85;;; -138655;1;0;false;false;;;;;; -138656;20;0;false;false;0;0;0;;; -138676;2;0;false;false;;;;;; -138678;1;0;false;false;0;0;0;;; -138679;2;0;false;false;;;;;; -138681;3;0;false;false;63;95;191;;; -138684;3;0;false;false;;;;;; -138687;1;0;false;false;63;95;191;;; -138688;1;0;false;false;;;;;; -138689;4;0;false;false;63;95;191;;; -138693;1;0;false;false;;;;;; -138694;3;0;false;false;63;95;191;;; -138697;1;0;false;false;;;;;; -138698;6;0;false;false;63;95;191;;; -138704;1;0;false;false;;;;;; -138705;2;0;false;false;63;95;191;;; -138707;1;0;false;false;;;;;; -138708;8;0;false;false;63;95;191;;; -138716;1;0;false;false;;;;;; -138717;11;0;false;false;63;95;191;;; -138728;3;0;false;false;;;;;; -138731;1;0;false;false;63;95;191;;; -138732;1;0;false;false;;;;;; -138733;3;0;false;false;127;127;159;;; -138736;3;0;false;false;;;;;; -138739;1;0;false;false;63;95;191;;; -138740;3;0;false;false;;;;;; -138743;1;0;false;false;63;95;191;;; -138744;1;0;false;false;;;;;; -138745;8;1;false;false;127;159;191;;; -138753;3;0;false;false;63;95;191;;; -138756;1;0;false;false;;;;;; -138757;6;0;false;false;63;95;191;;; -138763;1;0;false;false;;;;;; -138764;2;0;false;false;63;95;191;;; -138766;1;0;false;false;;;;;; -138767;8;0;false;false;63;95;191;;; -138775;1;0;false;false;;;;;; -138776;11;0;false;false;63;95;191;;; -138787;3;0;false;false;;;;;; -138790;1;0;false;false;63;95;191;;; -138791;1;0;false;false;;;;;; -138792;11;1;false;false;127;159;191;;; -138803;12;0;false;false;63;95;191;;; -138815;1;0;false;false;;;;;; -138816;4;0;false;false;127;127;159;;; -138820;3;0;false;false;;;;;; -138823;1;0;false;false;63;95;191;;; -138824;4;0;false;false;;;;;; -138828;4;0;false;false;127;127;159;;; -138832;21;0;false;false;63;95;191;;; -138853;1;0;false;false;;;;;; -138854;1;0;false;false;127;127;159;;; -138855;1;0;false;false;;;;;; -138856;2;0;false;false;63;95;191;;; -138858;1;0;false;false;;;;;; -138859;3;0;false;false;63;95;191;;; -138862;1;0;false;false;;;;;; -138863;8;0;false;false;63;95;191;;; -138871;1;0;false;false;;;;;; -138872;3;0;false;false;63;95;191;;; -138875;1;0;false;false;;;;;; -138876;4;0;false;false;63;95;191;;; -138880;1;0;false;false;;;;;; -138881;8;0;false;false;63;95;191;;; -138889;5;0;false;false;127;127;159;;; -138894;3;0;false;false;;;;;; -138897;1;0;false;false;63;95;191;;; -138898;4;0;false;false;;;;;; -138902;4;0;false;false;127;127;159;;; -138906;27;0;false;false;63;95;191;;; -138933;1;0;false;false;;;;;; -138934;1;0;false;false;127;127;159;;; -138935;1;0;false;false;;;;;; -138936;2;0;false;false;63;95;191;;; -138938;1;0;false;false;;;;;; -138939;3;0;false;false;63;95;191;;; -138942;1;0;false;false;;;;;; -138943;6;0;false;false;63;95;191;;; -138949;1;0;false;false;;;;;; -138950;4;0;false;false;63;95;191;;; -138954;1;0;false;false;;;;;; -138955;3;0;false;false;63;95;191;;; -138958;1;0;false;false;;;;;; -138959;6;0;false;false;63;95;191;;; -138965;1;0;false;false;;;;;; -138966;4;0;false;false;63;95;191;;; -138970;1;0;false;false;;;;;; -138971;7;0;false;false;63;95;191;;; -138978;1;0;false;false;;;;;; -138979;3;0;false;false;63;95;191;;; -138982;1;0;false;false;;;;;; -138983;8;0;false;false;63;95;191;;; -138991;5;0;false;false;127;127;159;;; -138996;3;0;false;false;;;;;; -138999;1;0;false;false;63;95;191;;; -139000;1;0;false;false;;;;;; -139001;5;0;false;false;127;127;159;;; -139006;3;0;false;false;;;;;; -139009;2;0;false;false;63;95;191;;; -139011;2;0;false;false;;;;;; -139013;6;1;false;false;127;0;85;;; -139019;1;0;false;false;;;;;; -139020;3;1;false;false;127;0;85;;; -139023;1;0;false;false;;;;;; -139024;19;0;false;false;0;0;0;;; -139043;1;0;false;false;;;;;; -139044;1;0;false;false;0;0;0;;; -139045;3;0;false;false;;;;;; -139048;14;0;false;false;0;0;0;;; -139062;3;0;false;false;;;;;; -139065;6;1;false;false;127;0;85;;; -139071;1;0;false;false;;;;;; -139072;22;0;false;false;0;0;0;;; -139094;2;0;false;false;;;;;; -139096;1;0;false;false;0;0;0;;; -139097;2;0;false;false;;;;;; -139099;3;0;false;false;63;95;191;;; -139102;3;0;false;false;;;;;; -139105;1;0;false;false;63;95;191;;; -139106;1;0;false;false;;;;;; -139107;7;0;false;false;63;95;191;;; -139114;1;0;false;false;;;;;; -139115;3;0;false;false;63;95;191;;; -139118;1;0;false;false;;;;;; -139119;10;0;false;false;63;95;191;;; -139129;1;0;false;false;;;;;; -139130;9;0;false;false;63;95;191;;; -139139;1;0;false;false;;;;;; -139140;10;0;false;false;63;95;191;;; -139150;1;0;false;false;;;;;; -139151;6;0;false;false;63;95;191;;; -139157;3;0;false;false;;;;;; -139160;1;0;false;false;63;95;191;;; -139161;3;0;false;false;;;;;; -139164;1;0;false;false;63;95;191;;; -139165;1;0;false;false;;;;;; -139166;8;1;false;false;127;159;191;;; -139174;3;0;false;false;63;95;191;;; -139177;1;0;false;false;;;;;; -139178;9;0;false;false;63;95;191;;; -139187;1;0;false;false;;;;;; -139188;10;0;false;false;63;95;191;;; -139198;1;0;false;false;;;;;; -139199;5;0;false;false;63;95;191;;; -139204;3;0;false;false;;;;;; -139207;1;0;false;false;63;95;191;;; -139208;3;0;false;false;;;;;; -139211;1;0;false;false;63;95;191;;; -139212;1;0;false;false;;;;;; -139213;11;1;false;false;127;159;191;;; -139224;12;0;false;false;63;95;191;;; -139236;1;0;false;false;;;;;; -139237;4;0;false;false;127;127;159;;; -139241;3;0;false;false;;;;;; -139244;1;0;false;false;63;95;191;;; -139245;4;0;false;false;;;;;; -139249;4;0;false;false;127;127;159;;; -139253;21;0;false;false;63;95;191;;; -139274;1;0;false;false;;;;;; -139275;1;0;false;false;127;127;159;;; -139276;1;0;false;false;;;;;; -139277;2;0;false;false;63;95;191;;; -139279;1;0;false;false;;;;;; -139280;3;0;false;false;63;95;191;;; -139283;1;0;false;false;;;;;; -139284;8;0;false;false;63;95;191;;; -139292;1;0;false;false;;;;;; -139293;3;0;false;false;63;95;191;;; -139296;1;0;false;false;;;;;; -139297;4;0;false;false;63;95;191;;; -139301;1;0;false;false;;;;;; -139302;8;0;false;false;63;95;191;;; -139310;5;0;false;false;127;127;159;;; -139315;3;0;false;false;;;;;; -139318;1;0;false;false;63;95;191;;; -139319;4;0;false;false;;;;;; -139323;4;0;false;false;127;127;159;;; -139327;27;0;false;false;63;95;191;;; -139354;1;0;false;false;;;;;; -139355;1;0;false;false;127;127;159;;; -139356;1;0;false;false;;;;;; -139357;2;0;false;false;63;95;191;;; -139359;1;0;false;false;;;;;; -139360;3;0;false;false;63;95;191;;; -139363;1;0;false;false;;;;;; -139364;6;0;false;false;63;95;191;;; -139370;1;0;false;false;;;;;; -139371;4;0;false;false;63;95;191;;; -139375;1;0;false;false;;;;;; -139376;3;0;false;false;63;95;191;;; -139379;1;0;false;false;;;;;; -139380;6;0;false;false;63;95;191;;; -139386;1;0;false;false;;;;;; -139387;4;0;false;false;63;95;191;;; -139391;1;0;false;false;;;;;; -139392;7;0;false;false;63;95;191;;; -139399;1;0;false;false;;;;;; -139400;3;0;false;false;63;95;191;;; -139403;1;0;false;false;;;;;; -139404;8;0;false;false;63;95;191;;; -139412;5;0;false;false;127;127;159;;; -139417;3;0;false;false;;;;;; -139420;1;0;false;false;63;95;191;;; -139421;1;0;false;false;;;;;; -139422;5;0;false;false;127;127;159;;; -139427;3;0;false;false;;;;;; -139430;1;0;false;false;63;95;191;;; -139431;1;0;false;false;;;;;; -139432;7;1;false;false;127;159;191;;; -139439;3;0;false;false;63;95;191;;; -139442;3;0;false;false;;;;;; -139445;2;0;false;false;63;95;191;;; -139447;2;0;false;false;;;;;; -139449;6;1;false;false;127;0;85;;; -139455;1;0;false;false;;;;;; -139456;5;0;false;false;0;0;0;;; -139461;1;0;false;false;;;;;; -139462;24;0;false;false;0;0;0;;; -139486;1;0;false;false;;;;;; -139487;1;0;false;false;0;0;0;;; -139488;3;0;false;false;;;;;; -139491;14;0;false;false;0;0;0;;; -139505;3;0;false;false;;;;;; -139508;2;1;false;false;127;0;85;;; -139510;1;0;false;false;;;;;; -139511;20;0;false;false;0;0;0;;; -139531;1;0;false;false;;;;;; -139532;2;0;false;false;0;0;0;;; -139534;1;0;false;false;;;;;; -139535;4;1;false;false;127;0;85;;; -139539;1;0;false;false;0;0;0;;; -139540;1;0;false;false;;;;;; -139541;1;0;false;false;0;0;0;;; -139542;4;0;false;false;;;;;; -139546;6;1;false;false;127;0;85;;; -139552;1;0;false;false;;;;;; -139553;59;0;false;false;0;0;0;;; -139612;3;0;false;false;;;;;; -139615;1;0;false;false;0;0;0;;; -139616;3;0;false;false;;;;;; -139619;6;1;false;false;127;0;85;;; -139625;1;0;false;false;;;;;; -139626;20;0;false;false;0;0;0;;; -139646;2;0;false;false;;;;;; -139648;1;0;false;false;0;0;0;;; -139649;2;0;false;false;;;;;; -139651;3;0;false;false;63;95;191;;; -139654;3;0;false;false;;;;;; -139657;1;0;false;false;63;95;191;;; -139658;1;0;false;false;;;;;; -139659;7;0;false;false;63;95;191;;; -139666;1;0;false;false;;;;;; -139667;3;0;false;false;63;95;191;;; -139670;1;0;false;false;;;;;; -139671;8;0;false;false;63;95;191;;; -139679;1;0;false;false;;;;;; -139680;5;0;false;false;63;95;191;;; -139685;3;0;false;false;;;;;; -139688;1;0;false;false;63;95;191;;; -139689;1;0;false;false;;;;;; -139690;3;0;false;false;127;127;159;;; -139693;3;0;false;false;;;;;; -139696;1;0;false;false;63;95;191;;; -139697;3;0;false;false;;;;;; -139700;1;0;false;false;63;95;191;;; -139701;1;0;false;false;;;;;; -139702;8;1;false;false;127;159;191;;; -139710;8;0;false;false;63;95;191;;; -139718;1;0;false;false;;;;;; -139719;5;0;false;false;63;95;191;;; -139724;1;0;false;false;;;;;; -139725;2;0;false;false;63;95;191;;; -139727;1;0;false;false;;;;;; -139728;2;0;false;false;63;95;191;;; -139730;1;0;false;false;;;;;; -139731;5;0;false;false;63;95;191;;; -139736;1;0;false;false;;;;;; -139737;6;0;false;false;63;95;191;;; -139743;1;0;false;false;;;;;; -139744;2;0;false;false;63;95;191;;; -139746;1;0;false;false;;;;;; -139747;5;0;false;false;63;95;191;;; -139752;1;0;false;false;;;;;; -139753;2;0;false;false;63;95;191;;; -139755;1;0;false;false;;;;;; -139756;2;0;false;false;63;95;191;;; -139758;1;0;false;false;;;;;; -139759;10;0;false;false;63;95;191;;; -139769;3;0;false;false;;;;;; -139772;1;0;false;false;63;95;191;;; -139773;1;0;false;false;;;;;; -139774;11;1;false;false;127;159;191;;; -139785;12;0;false;false;63;95;191;;; -139797;1;0;false;false;;;;;; -139798;4;0;false;false;127;127;159;;; -139802;3;0;false;false;;;;;; -139805;1;0;false;false;63;95;191;;; -139806;4;0;false;false;;;;;; -139810;4;0;false;false;127;127;159;;; -139814;21;0;false;false;63;95;191;;; -139835;1;0;false;false;;;;;; -139836;1;0;false;false;127;127;159;;; -139837;1;0;false;false;;;;;; -139838;2;0;false;false;63;95;191;;; -139840;1;0;false;false;;;;;; -139841;3;0;false;false;63;95;191;;; -139844;1;0;false;false;;;;;; -139845;8;0;false;false;63;95;191;;; -139853;1;0;false;false;;;;;; -139854;3;0;false;false;63;95;191;;; -139857;1;0;false;false;;;;;; -139858;4;0;false;false;63;95;191;;; -139862;1;0;false;false;;;;;; -139863;8;0;false;false;63;95;191;;; -139871;5;0;false;false;127;127;159;;; -139876;3;0;false;false;;;;;; -139879;1;0;false;false;63;95;191;;; -139880;4;0;false;false;;;;;; -139884;4;0;false;false;127;127;159;;; -139888;27;0;false;false;63;95;191;;; -139915;1;0;false;false;;;;;; -139916;1;0;false;false;127;127;159;;; -139917;1;0;false;false;;;;;; -139918;2;0;false;false;63;95;191;;; -139920;1;0;false;false;;;;;; -139921;3;0;false;false;63;95;191;;; -139924;1;0;false;false;;;;;; -139925;6;0;false;false;63;95;191;;; -139931;1;0;false;false;;;;;; -139932;4;0;false;false;63;95;191;;; -139936;1;0;false;false;;;;;; -139937;3;0;false;false;63;95;191;;; -139940;1;0;false;false;;;;;; -139941;6;0;false;false;63;95;191;;; -139947;1;0;false;false;;;;;; -139948;4;0;false;false;63;95;191;;; -139952;1;0;false;false;;;;;; -139953;7;0;false;false;63;95;191;;; -139960;1;0;false;false;;;;;; -139961;3;0;false;false;63;95;191;;; -139964;1;0;false;false;;;;;; -139965;8;0;false;false;63;95;191;;; -139973;5;0;false;false;127;127;159;;; -139978;3;0;false;false;;;;;; -139981;1;0;false;false;63;95;191;;; -139982;1;0;false;false;;;;;; -139983;5;0;false;false;127;127;159;;; -139988;3;0;false;false;;;;;; -139991;2;0;false;false;63;95;191;;; -139993;2;0;false;false;;;;;; -139995;6;1;false;false;127;0;85;;; -140001;1;0;false;false;;;;;; -140002;6;0;false;false;0;0;0;;; -140008;1;0;false;false;;;;;; -140009;18;0;false;false;0;0;0;;; -140027;1;0;false;false;;;;;; -140028;1;0;false;false;0;0;0;;; -140029;3;0;false;false;;;;;; -140032;14;0;false;false;0;0;0;;; -140046;3;0;false;false;;;;;; -140049;6;1;false;false;127;0;85;;; -140055;1;0;false;false;;;;;; -140056;33;0;false;false;0;0;0;;; -140089;1;0;false;false;;;;;; -140090;11;0;false;false;0;0;0;;; -140101;1;0;false;false;;;;;; -140102;1;0;false;false;0;0;0;;; -140103;1;0;false;false;;;;;; -140104;13;0;false;false;0;0;0;;; -140117;2;0;false;false;;;;;; -140119;1;0;false;false;0;0;0;;; -140120;4;0;false;false;;;;;; -140124;6;1;false;false;127;0;85;;; -140130;1;0;false;false;;;;;; -140131;3;1;false;false;127;0;85;;; -140134;1;0;false;false;;;;;; -140135;10;0;false;false;0;0;0;;; -140145;1;0;false;false;;;;;; -140146;1;0;false;false;0;0;0;;; -140147;3;0;false;false;;;;;; -140150;3;1;false;false;127;0;85;;; -140153;1;0;false;false;;;;;; -140154;5;0;false;false;0;0;0;;; -140159;1;0;false;false;;;;;; -140160;1;0;false;false;0;0;0;;; -140161;1;0;false;false;;;;;; -140162;5;1;false;false;127;0;85;;; -140167;12;0;false;false;0;0;0;;; -140179;3;0;false;false;;;;;; -140182;5;0;false;false;0;0;0;;; -140187;1;0;false;false;;;;;; -140188;2;0;false;false;0;0;0;;; -140190;1;0;false;false;;;;;; -140191;19;0;false;false;0;0;0;;; -140210;1;0;false;false;;;;;; -140211;1;0;false;false;0;0;0;;; -140212;1;0;false;false;;;;;; -140213;17;0;false;false;0;0;0;;; -140230;1;0;false;false;;;;;; -140231;1;0;false;false;0;0;0;;; -140232;1;0;false;false;;;;;; -140233;14;0;false;false;0;0;0;;; -140247;3;0;false;false;;;;;; -140250;2;1;false;false;127;0;85;;; -140252;1;0;false;false;;;;;; -140253;14;0;false;false;0;0;0;;; -140267;1;0;false;false;;;;;; -140268;1;0;false;false;0;0;0;;; -140269;4;0;false;false;;;;;; -140273;5;0;false;false;0;0;0;;; -140278;1;0;false;false;;;;;; -140279;2;0;false;false;0;0;0;;; -140281;1;0;false;false;;;;;; -140282;17;0;false;false;0;0;0;;; -140299;1;0;false;false;;;;;; -140300;1;0;false;false;0;0;0;;; -140301;1;0;false;false;;;;;; -140302;13;0;false;false;0;0;0;;; -140315;3;0;false;false;;;;;; -140318;1;0;false;false;0;0;0;;; -140319;1;0;false;false;;;;;; -140320;4;1;false;false;127;0;85;;; -140324;1;0;false;false;;;;;; -140325;1;0;false;false;0;0;0;;; -140326;4;0;false;false;;;;;; -140330;5;0;false;false;0;0;0;;; -140335;1;0;false;false;;;;;; -140336;2;0;false;false;0;0;0;;; -140338;1;0;false;false;;;;;; -140339;18;0;false;false;0;0;0;;; -140357;3;0;false;false;;;;;; -140360;1;0;false;false;0;0;0;;; -140361;3;0;false;false;;;;;; -140364;6;1;false;false;127;0;85;;; -140370;1;0;false;false;;;;;; -140371;6;0;false;false;0;0;0;;; -140377;2;0;false;false;;;;;; -140379;1;0;false;false;0;0;0;;; -140380;4;0;false;false;;;;;; -140384;3;0;false;false;63;95;191;;; -140387;3;0;false;false;;;;;; -140390;1;0;false;false;63;95;191;;; -140391;1;0;false;false;;;;;; -140392;7;0;false;false;63;95;191;;; -140399;1;0;false;false;;;;;; -140400;3;0;false;false;63;95;191;;; -140403;1;0;false;false;;;;;; -140404;4;0;false;false;63;95;191;;; -140408;1;0;false;false;;;;;; -140409;8;0;false;false;63;95;191;;; -140417;1;0;false;false;;;;;; -140418;4;0;false;false;63;95;191;;; -140422;1;0;false;false;;;;;; -140423;6;0;false;false;63;95;191;;; -140429;1;0;false;false;;;;;; -140430;2;0;false;false;63;95;191;;; -140432;1;0;false;false;;;;;; -140433;7;0;false;false;63;95;191;;; -140440;1;0;false;false;;;;;; -140441;2;0;false;false;63;95;191;;; -140443;1;0;false;false;;;;;; -140444;2;0;false;false;63;95;191;;; -140446;1;0;false;false;;;;;; -140447;4;0;false;false;63;95;191;;; -140451;4;0;false;false;;;;;; -140455;1;0;false;false;63;95;191;;; -140456;1;0;false;false;;;;;; -140457;3;0;false;false;63;95;191;;; -140460;1;0;false;false;;;;;; -140461;1;0;false;false;63;95;191;;; -140462;1;0;false;false;;;;;; -140463;9;0;false;false;63;95;191;;; -140472;1;0;false;false;;;;;; -140473;9;0;false;false;63;95;191;;; -140482;1;0;false;false;;;;;; -140483;4;0;false;false;63;95;191;;; -140487;1;0;false;false;;;;;; -140488;3;0;false;false;63;95;191;;; -140491;1;0;false;false;;;;;; -140492;11;0;false;false;63;95;191;;; -140503;1;0;false;false;;;;;; -140504;5;0;false;false;63;95;191;;; -140509;3;0;false;false;;;;;; -140512;1;0;false;false;63;95;191;;; -140513;1;0;false;false;;;;;; -140514;3;0;false;false;127;127;159;;; -140517;3;0;false;false;;;;;; -140520;1;0;false;false;63;95;191;;; -140521;3;0;false;false;;;;;; -140524;1;0;false;false;63;95;191;;; -140525;1;0;false;false;;;;;; -140526;7;1;false;false;127;159;191;;; -140533;10;0;false;false;63;95;191;;; -140543;1;0;false;false;;;;;; -140544;6;0;false;false;63;95;191;;; -140550;1;0;false;false;;;;;; -140551;2;0;false;false;63;95;191;;; -140553;1;0;false;false;;;;;; -140554;3;0;false;false;63;95;191;;; -140557;1;0;false;false;;;;;; -140558;5;0;false;false;63;95;191;;; -140563;1;0;false;false;;;;;; -140564;9;0;false;false;63;95;191;;; -140573;1;0;false;false;;;;;; -140574;2;0;false;false;63;95;191;;; -140576;1;0;false;false;;;;;; -140577;3;0;false;false;63;95;191;;; -140580;1;0;false;false;;;;;; -140581;5;0;false;false;63;95;191;;; -140586;4;0;false;false;;;;;; -140590;1;0;false;false;63;95;191;;; -140591;2;0;false;false;;;;;; -140593;1;0;false;false;63;95;191;;; -140594;1;0;false;false;;;;;; -140595;5;0;false;false;63;95;191;;; -140600;1;0;false;false;;;;;; -140601;4;0;false;false;63;95;191;;; -140605;1;0;false;false;;;;;; -140606;3;0;false;false;63;95;191;;; -140609;1;0;false;false;;;;;; -140610;9;0;false;false;63;95;191;;; -140619;1;0;false;false;;;;;; -140620;2;0;false;false;63;95;191;;; -140622;1;0;false;false;;;;;; -140623;3;0;false;false;63;95;191;;; -140626;1;0;false;false;;;;;; -140627;9;0;false;false;63;95;191;;; -140636;3;0;false;false;;;;;; -140639;1;0;false;false;63;95;191;;; -140640;1;0;false;false;;;;;; -140641;7;1;false;false;127;159;191;;; -140648;4;0;false;false;63;95;191;;; -140652;1;0;false;false;;;;;; -140653;4;0;false;false;63;95;191;;; -140657;1;0;false;false;;;;;; -140658;2;0;false;false;63;95;191;;; -140660;1;0;false;false;;;;;; -140661;3;0;false;false;63;95;191;;; -140664;1;0;false;false;;;;;; -140665;4;0;false;false;63;95;191;;; -140669;1;0;false;false;;;;;; -140670;2;0;false;false;63;95;191;;; -140672;1;0;false;false;;;;;; -140673;7;0;false;false;63;95;191;;; -140680;1;0;false;false;;;;;; -140681;4;0;false;false;63;95;191;;; -140685;1;0;false;false;;;;;; -140686;8;0;false;false;63;95;191;;; -140694;1;0;false;false;;;;;; -140695;3;0;false;false;63;95;191;;; -140698;3;0;false;false;;;;;; -140701;1;0;false;false;63;95;191;;; -140702;1;0;false;false;;;;;; -140703;8;1;false;false;127;159;191;;; -140711;4;0;false;false;63;95;191;;; -140715;1;0;false;false;;;;;; -140716;8;0;false;false;63;95;191;;; -140724;1;0;false;false;;;;;; -140725;4;0;false;false;63;95;191;;; -140729;1;0;false;false;;;;;; -140730;6;0;false;false;63;95;191;;; -140736;1;0;false;false;;;;;; -140737;2;0;false;false;63;95;191;;; -140739;1;0;false;false;;;;;; -140740;7;0;false;false;63;95;191;;; -140747;1;0;false;false;;;;;; -140748;2;0;false;false;63;95;191;;; -140750;1;0;false;false;;;;;; -140751;2;0;false;false;63;95;191;;; -140753;1;0;false;false;;;;;; -140754;4;0;false;false;63;95;191;;; -140758;1;0;false;false;;;;;; -140759;3;0;false;false;63;95;191;;; -140762;1;0;false;false;;;;;; -140763;1;0;false;false;63;95;191;;; -140764;3;0;false;false;;;;;; -140767;1;0;false;false;63;95;191;;; -140768;2;0;false;false;;;;;; -140770;9;0;false;false;63;95;191;;; -140779;1;0;false;false;;;;;; -140780;9;0;false;false;63;95;191;;; -140789;1;0;false;false;;;;;; -140790;4;0;false;false;63;95;191;;; -140794;1;0;false;false;;;;;; -140795;3;0;false;false;63;95;191;;; -140798;1;0;false;false;;;;;; -140799;11;0;false;false;63;95;191;;; -140810;1;0;false;false;;;;;; -140811;5;0;false;false;63;95;191;;; -140816;1;0;false;false;;;;;; -140817;4;0;false;false;63;95;191;;; -140821;1;0;false;false;;;;;; -140822;3;0;false;false;63;95;191;;; -140825;1;0;false;false;;;;;; -140826;5;0;false;false;63;95;191;;; -140831;4;0;false;false;;;;;; -140835;1;0;false;false;63;95;191;;; -140836;2;0;false;false;;;;;; -140838;5;0;false;false;63;95;191;;; -140843;1;0;false;false;;;;;; -140844;2;0;false;false;63;95;191;;; -140846;1;0;false;false;;;;;; -140847;1;0;false;false;63;95;191;;; -140848;1;0;false;false;;;;;; -140849;7;0;false;false;63;95;191;;; -140856;1;0;false;false;;;;;; -140857;2;0;false;false;63;95;191;;; -140859;1;0;false;false;;;;;; -140860;10;0;false;false;63;95;191;;; -140870;1;0;false;false;;;;;; -140871;8;0;false;false;63;95;191;;; -140879;1;0;false;false;;;;;; -140880;2;0;false;false;63;95;191;;; -140882;1;0;false;false;;;;;; -140883;3;0;false;false;63;95;191;;; -140886;1;0;false;false;;;;;; -140887;5;0;false;false;63;95;191;;; -140892;1;0;false;false;;;;;; -140893;2;0;false;false;63;95;191;;; -140895;1;0;false;false;;;;;; -140896;3;0;false;false;63;95;191;;; -140899;4;0;false;false;;;;;; -140903;1;0;false;false;63;95;191;;; -140904;2;0;false;false;;;;;; -140906;5;0;false;false;63;95;191;;; -140911;1;0;false;false;;;;;; -140912;6;0;false;false;63;95;191;;; -140918;1;0;false;false;;;;;; -140919;6;0;false;false;63;95;191;;; -140925;1;0;false;false;;;;;; -140926;4;0;false;false;63;95;191;;; -140930;1;0;false;false;;;;;; -140931;1;0;false;false;63;95;191;;; -140932;1;0;false;false;;;;;; -140933;3;0;false;false;63;95;191;;; -140936;1;0;false;false;;;;;; -140937;4;0;false;false;63;95;191;;; -140941;1;0;false;false;;;;;; -140942;4;0;false;false;63;95;191;;; -140946;1;0;false;false;;;;;; -140947;3;0;false;false;63;95;191;;; -140950;1;0;false;false;;;;;; -140951;4;0;false;false;63;95;191;;; -140955;1;0;false;false;;;;;; -140956;7;0;false;false;63;95;191;;; -140963;4;0;false;false;;;;;; -140967;1;0;false;false;63;95;191;;; -140968;1;0;false;false;;;;;; -140969;11;1;false;false;127;159;191;;; -140980;24;0;false;false;63;95;191;;; -141004;1;0;false;false;;;;;; -141005;4;0;false;false;127;127;159;;; -141009;3;0;false;false;;;;;; -141012;1;0;false;false;63;95;191;;; -141013;4;0;false;false;;;;;; -141017;4;0;false;false;127;127;159;;; -141021;22;0;false;false;63;95;191;;; -141043;1;0;false;false;;;;;; -141044;1;0;false;false;127;127;159;;; -141045;1;0;false;false;;;;;; -141046;2;0;false;false;63;95;191;;; -141048;1;0;false;false;;;;;; -141049;3;0;false;false;63;95;191;;; -141052;1;0;false;false;;;;;; -141053;7;0;false;false;63;95;191;;; -141060;1;0;false;false;;;;;; -141061;7;0;false;false;63;95;191;;; -141068;1;0;false;false;;;;;; -141069;8;0;false;false;63;95;191;;; -141077;4;0;false;false;;;;;; -141081;1;0;false;false;63;95;191;;; -141082;3;0;false;false;;;;;; -141085;2;0;false;false;63;95;191;;; -141087;1;0;false;false;;;;;; -141088;3;0;false;false;63;95;191;;; -141091;1;0;false;false;;;;;; -141092;8;0;false;false;63;95;191;;; -141100;1;0;false;false;;;;;; -141101;2;0;false;false;63;95;191;;; -141103;1;0;false;false;;;;;; -141104;3;0;false;false;63;95;191;;; -141107;1;0;false;false;;;;;; -141108;5;0;false;false;63;95;191;;; -141113;1;0;false;false;;;;;; -141114;4;0;false;false;63;95;191;;; -141118;1;0;false;false;;;;;; -141119;2;0;false;false;63;95;191;;; -141121;1;0;false;false;;;;;; -141122;3;0;false;false;63;95;191;;; -141125;1;0;false;false;;;;;; -141126;3;0;false;false;63;95;191;;; -141129;1;0;false;false;;;;;; -141130;2;0;false;false;63;95;191;;; -141132;1;0;false;false;;;;;; -141133;9;0;false;false;63;95;191;;; -141142;1;0;false;false;;;;;; -141143;6;0;false;false;63;95;191;;; -141149;3;0;false;false;;;;;; -141152;1;0;false;false;63;95;191;;; -141153;3;0;false;false;;;;;; -141156;6;0;false;false;63;95;191;;; -141162;1;0;false;false;;;;;; -141163;3;0;false;false;63;95;191;;; -141166;1;0;false;false;;;;;; -141167;4;0;false;false;63;95;191;;; -141171;1;0;false;false;;;;;; -141172;6;0;false;false;63;95;191;;; -141178;1;0;false;false;;;;;; -141179;2;0;false;false;63;95;191;;; -141181;1;0;false;false;;;;;; -141182;4;0;false;false;63;95;191;;; -141186;1;0;false;false;;;;;; -141187;10;0;false;false;63;95;191;;; -141197;5;0;false;false;127;127;159;;; -141202;3;0;false;false;;;;;; -141205;1;0;false;false;63;95;191;;; -141206;1;0;false;false;;;;;; -141207;5;0;false;false;127;127;159;;; -141212;3;0;false;false;;;;;; -141215;2;0;false;false;63;95;191;;; -141217;2;0;false;false;;;;;; -141219;3;1;false;false;127;0;85;;; -141222;1;0;false;false;;;;;; -141223;2;0;false;false;0;0;0;;; -141225;1;0;false;false;;;;;; -141226;16;0;false;false;0;0;0;;; -141242;3;1;false;false;127;0;85;;; -141245;1;0;false;false;;;;;; -141246;11;0;false;false;0;0;0;;; -141257;1;0;false;false;;;;;; -141258;6;0;false;false;0;0;0;;; -141264;1;0;false;false;;;;;; -141265;5;0;false;false;0;0;0;;; -141270;1;0;false;false;;;;;; -141271;1;0;false;false;0;0;0;;; -141272;3;0;false;false;;;;;; -141275;2;1;false;false;127;0;85;;; -141277;1;0;false;false;;;;;; -141278;31;0;false;false;0;0;0;;; -141309;1;0;false;false;;;;;; -141310;1;0;false;false;0;0;0;;; -141311;4;0;false;false;;;;;; -141315;6;1;false;false;127;0;85;;; -141321;1;0;false;false;;;;;; -141322;34;0;false;false;0;0;0;;; -141356;1;0;false;false;;;;;; -141357;12;0;false;false;0;0;0;;; -141369;3;0;false;false;;;;;; -141372;1;0;false;false;0;0;0;;; -141373;3;0;false;false;;;;;; -141376;15;0;false;false;0;0;0;;; -141391;1;0;false;false;;;;;; -141392;5;0;false;false;0;0;0;;; -141397;1;0;false;false;;;;;; -141398;1;0;false;false;0;0;0;;; -141399;1;0;false;false;;;;;; -141400;30;0;false;false;0;0;0;;; -141430;1;0;false;false;;;;;; -141431;11;0;false;false;0;0;0;;; -141442;1;0;false;false;;;;;; -141443;6;0;false;false;0;0;0;;; -141449;3;0;false;false;;;;;; -141452;3;1;false;false;127;0;85;;; -141455;1;0;false;false;;;;;; -141456;10;0;false;false;0;0;0;;; -141466;1;0;false;false;;;;;; -141467;1;0;false;false;0;0;0;;; -141468;1;0;false;false;;;;;; -141469;14;0;false;false;0;0;0;;; -141483;3;0;false;false;;;;;; -141486;3;1;false;false;127;0;85;;; -141489;2;0;false;false;0;0;0;;; -141491;1;0;false;false;;;;;; -141492;9;0;false;false;0;0;0;;; -141501;3;0;false;false;;;;;; -141504;2;1;false;false;127;0;85;;; -141506;1;0;false;false;;;;;; -141507;6;0;false;false;0;0;0;;; -141513;1;0;false;false;;;;;; -141514;2;0;false;false;0;0;0;;; -141516;1;0;false;false;;;;;; -141517;4;1;false;false;127;0;85;;; -141521;1;0;false;false;;;;;; -141522;2;0;false;false;0;0;0;;; -141524;1;0;false;false;;;;;; -141525;14;0;false;false;0;0;0;;; -141539;1;0;false;false;;;;;; -141540;2;0;false;false;0;0;0;;; -141542;1;0;false;false;;;;;; -141543;4;1;false;false;127;0;85;;; -141547;1;0;false;false;;;;;; -141548;2;0;false;false;0;0;0;;; -141550;1;0;false;false;;;;;; -141551;21;0;false;false;0;0;0;;; -141572;1;0;false;false;;;;;; -141573;2;0;false;false;0;0;0;;; -141575;1;0;false;false;;;;;; -141576;2;0;false;false;0;0;0;;; -141578;1;0;false;false;;;;;; -141579;1;0;false;false;0;0;0;;; -141580;4;0;false;false;;;;;; -141584;8;0;false;false;0;0;0;;; -141592;1;0;false;false;;;;;; -141593;1;0;false;false;0;0;0;;; -141594;1;0;false;false;;;;;; -141595;3;1;false;false;127;0;85;;; -141598;1;0;false;false;;;;;; -141599;3;1;false;false;127;0;85;;; -141602;2;0;false;false;0;0;0;;; -141604;1;0;false;false;;;;;; -141605;3;0;false;false;0;0;0;;; -141608;1;0;false;false;;;;;; -141609;12;0;false;false;0;0;0;;; -141621;3;0;false;false;;;;;; -141624;1;0;false;false;0;0;0;;; -141625;3;0;false;false;;;;;; -141628;4;1;false;false;127;0;85;;; -141632;1;0;false;false;;;;;; -141633;1;0;false;false;0;0;0;;; -141634;4;0;false;false;;;;;; -141638;3;1;false;false;127;0;85;;; -141641;1;0;false;false;;;;;; -141642;12;0;false;false;0;0;0;;; -141654;1;0;false;false;;;;;; -141655;1;0;false;false;0;0;0;;; -141656;1;0;false;false;;;;;; -141657;22;0;false;false;0;0;0;;; -141679;8;0;false;false;;;;;; -141687;35;0;false;false;63;127;95;;; -141722;2;0;false;false;;;;;; -141724;2;1;false;false;127;0;85;;; -141726;1;0;false;false;;;;;; -141727;18;0;false;false;0;0;0;;; -141745;1;0;false;false;;;;;; -141746;2;0;false;false;0;0;0;;; -141748;1;0;false;false;;;;;; -141749;2;0;false;false;0;0;0;;; -141751;1;0;false;false;;;;;; -141752;1;0;false;false;0;0;0;;; -141753;5;0;false;false;;;;;; -141758;38;0;false;false;0;0;0;;; -141796;4;0;false;false;;;;;; -141800;1;0;false;false;0;0;0;;; -141801;6;0;false;false;;;;;; -141807;3;1;false;false;127;0;85;;; -141810;1;0;false;false;;;;;; -141811;1;0;false;false;0;0;0;;; -141812;3;1;false;false;127;0;85;;; -141815;1;0;false;false;;;;;; -141816;1;0;false;false;0;0;0;;; -141817;1;0;false;false;;;;;; -141818;1;0;false;false;0;0;0;;; -141819;1;0;false;false;;;;;; -141820;2;0;false;false;0;0;0;;; -141822;1;0;false;false;;;;;; -141823;1;0;false;false;0;0;0;;; -141824;1;0;false;false;;;;;; -141825;1;0;false;false;0;0;0;;; -141826;1;0;false;false;;;;;; -141827;13;0;false;false;0;0;0;;; -141840;1;0;false;false;;;;;; -141841;4;0;false;false;0;0;0;;; -141845;1;0;false;false;;;;;; -141846;1;0;false;false;0;0;0;;; -141847;5;0;false;false;;;;;; -141852;2;1;false;false;127;0;85;;; -141854;1;0;false;false;;;;;; -141855;18;0;false;false;0;0;0;;; -141873;1;0;false;false;;;;;; -141874;2;0;false;false;0;0;0;;; -141876;1;0;false;false;;;;;; -141877;16;0;false;false;0;0;0;;; -141893;1;0;false;false;;;;;; -141894;1;0;false;false;0;0;0;;; -141895;1;0;false;false;;;;;; -141896;2;0;false;false;0;0;0;;; -141898;1;0;false;false;;;;;; -141899;2;0;false;false;0;0;0;;; -141901;1;0;false;false;;;;;; -141902;17;0;false;false;0;0;0;;; -141919;1;0;false;false;;;;;; -141920;1;0;false;false;0;0;0;;; -141921;1;0;false;false;;;;;; -141922;11;0;false;false;0;0;0;;; -141933;1;0;false;false;;;;;; -141934;1;0;false;false;0;0;0;;; -141935;6;0;false;false;;;;;; -141941;38;0;false;false;0;0;0;;; -141979;5;0;false;false;;;;;; -141984;1;0;false;false;0;0;0;;; -141985;6;0;false;false;;;;;; -141991;1;0;false;false;0;0;0;;; -141992;4;0;false;false;;;;;; -141996;54;0;false;false;63;127;95;;; -142050;2;0;false;false;;;;;; -142052;2;1;false;false;127;0;85;;; -142054;1;0;false;false;;;;;; -142055;28;0;false;false;0;0;0;;; -142083;1;0;false;false;;;;;; -142084;1;0;false;false;0;0;0;;; -142085;1;0;false;false;;;;;; -142086;2;0;false;false;0;0;0;;; -142088;1;0;false;false;;;;;; -142089;2;0;false;false;0;0;0;;; -142091;1;0;false;false;;;;;; -142092;11;0;false;false;0;0;0;;; -142103;1;0;false;false;;;;;; -142104;1;0;false;false;0;0;0;;; -142105;5;0;false;false;;;;;; -142110;8;0;false;false;0;0;0;;; -142118;1;0;false;false;;;;;; -142119;1;0;false;false;0;0;0;;; -142120;1;0;false;false;;;;;; -142121;3;1;false;false;127;0;85;;; -142124;1;0;false;false;;;;;; -142125;3;1;false;false;127;0;85;;; -142128;13;0;false;false;0;0;0;;; -142141;1;0;false;false;;;;;; -142142;1;0;false;false;0;0;0;;; -142143;1;0;false;false;;;;;; -142144;3;0;false;false;0;0;0;;; -142147;5;0;false;false;;;;;; -142152;32;0;false;false;0;0;0;;; -142184;1;0;false;false;;;;;; -142185;2;0;false;false;0;0;0;;; -142187;1;0;false;false;;;;;; -142188;9;0;false;false;0;0;0;;; -142197;1;0;false;false;;;;;; -142198;2;0;false;false;0;0;0;;; -142200;1;0;false;false;;;;;; -142201;14;0;false;false;0;0;0;;; -142215;5;0;false;false;;;;;; -142220;22;0;false;false;0;0;0;;; -142242;1;0;false;false;;;;;; -142243;1;0;false;false;0;0;0;;; -142244;1;0;false;false;;;;;; -142245;11;0;false;false;0;0;0;;; -142256;4;0;false;false;;;;;; -142260;1;0;false;false;0;0;0;;; -142261;4;0;false;false;;;;;; -142265;4;1;false;false;127;0;85;;; -142269;1;0;false;false;;;;;; -142270;1;0;false;false;0;0;0;;; -142271;5;0;false;false;;;;;; -142276;8;0;false;false;0;0;0;;; -142284;1;0;false;false;;;;;; -142285;1;0;false;false;0;0;0;;; -142286;1;0;false;false;;;;;; -142287;15;0;false;false;0;0;0;;; -142302;4;0;false;false;;;;;; -142306;1;0;false;false;0;0;0;;; -142307;3;0;false;false;;;;;; -142310;1;0;false;false;0;0;0;;; -142311;3;0;false;false;;;;;; -142314;6;1;false;false;127;0;85;;; -142320;1;0;false;false;;;;;; -142321;9;0;false;false;0;0;0;;; -142330;2;0;false;false;;;;;; -142332;1;0;false;false;0;0;0;;; -142333;2;0;false;false;;;;;; -142335;3;0;false;false;63;95;191;;; -142338;3;0;false;false;;;;;; -142341;1;0;false;false;63;95;191;;; -142342;1;0;false;false;;;;;; -142343;5;1;false;false;127;159;191;;; -142348;16;0;false;false;63;95;191;;; -142364;3;0;false;false;;;;;; -142367;1;0;false;false;63;95;191;;; -142368;1;0;false;false;;;;;; -142369;8;0;false;false;63;95;191;;; -142377;1;0;false;false;;;;;; -142378;10;0;false;false;63;95;191;;; -142388;1;0;false;false;;;;;; -142389;15;0;false;false;63;95;191;;; -142404;1;0;false;false;;;;;; -142405;4;0;false;false;63;95;191;;; -142409;1;0;false;false;;;;;; -142410;6;0;false;false;63;95;191;;; -142416;1;0;false;false;;;;;; -142417;4;0;false;false;63;95;191;;; -142421;1;0;false;false;;;;;; -142422;3;0;false;false;63;95;191;;; -142425;1;0;false;false;;;;;; -142426;2;0;false;false;63;95;191;;; -142428;1;0;false;false;;;;;; -142429;8;0;false;false;63;95;191;;; -142437;3;0;false;false;;;;;; -142440;2;0;false;false;63;95;191;;; -142442;2;0;false;false;;;;;; -142444;3;1;false;false;127;0;85;;; -142447;1;0;false;false;;;;;; -142448;2;0;false;false;0;0;0;;; -142450;1;0;false;false;;;;;; -142451;35;0;false;false;0;0;0;;; -142486;1;0;false;false;;;;;; -142487;5;0;false;false;0;0;0;;; -142492;1;0;false;false;;;;;; -142493;3;1;false;false;127;0;85;;; -142496;1;0;false;false;;;;;; -142497;11;0;false;false;0;0;0;;; -142508;1;0;false;false;;;;;; -142509;1;0;false;false;0;0;0;;; -142510;3;0;false;false;;;;;; -142513;15;0;false;false;0;0;0;;; -142528;1;0;false;false;;;;;; -142529;6;0;false;false;0;0;0;;; -142535;3;0;false;false;;;;;; -142538;10;0;false;false;0;0;0;;; -142548;1;0;false;false;;;;;; -142549;2;0;false;false;0;0;0;;; -142551;1;0;false;false;;;;;; -142552;6;0;false;false;0;0;0;;; -142558;1;0;false;false;;;;;; -142559;1;0;false;false;0;0;0;;; -142560;1;0;false;false;;;;;; -142561;3;1;false;false;127;0;85;;; -142564;1;0;false;false;;;;;; -142565;10;0;false;false;0;0;0;;; -142575;1;0;false;false;;;;;; -142576;4;0;false;false;0;0;0;;; -142580;3;0;false;false;;;;;; -142583;3;1;false;false;127;0;85;;; -142586;1;0;false;false;;;;;; -142587;10;0;false;false;0;0;0;;; -142597;1;0;false;false;;;;;; -142598;1;0;false;false;0;0;0;;; -142599;1;0;false;false;;;;;; -142600;14;0;false;false;0;0;0;;; -142614;3;0;false;false;;;;;; -142617;2;1;false;false;127;0;85;;; -142619;1;0;false;false;;;;;; -142620;15;0;false;false;0;0;0;;; -142635;1;0;false;false;;;;;; -142636;1;0;false;false;0;0;0;;; -142637;4;0;false;false;;;;;; -142641;6;1;false;false;127;0;85;;; -142647;1;0;false;false;;;;;; -142648;3;1;false;false;127;0;85;;; -142651;1;0;false;false;;;;;; -142652;3;1;false;false;127;0;85;;; -142655;2;0;false;false;0;0;0;;; -142657;1;0;false;false;;;;;; -142658;3;0;false;false;0;0;0;;; -142661;1;0;false;false;;;;;; -142662;12;0;false;false;0;0;0;;; -142674;3;0;false;false;;;;;; -142677;1;0;false;false;0;0;0;;; -142678;3;0;false;false;;;;;; -142681;5;0;false;false;0;0;0;;; -142686;1;0;false;false;;;;;; -142687;1;0;false;false;0;0;0;;; -142688;1;0;false;false;;;;;; -142689;37;0;false;false;0;0;0;;; -142726;1;0;false;false;;;;;; -142727;6;0;false;false;0;0;0;;; -142733;3;0;false;false;;;;;; -142736;2;1;false;false;127;0;85;;; -142738;1;0;false;false;;;;;; -142739;6;0;false;false;0;0;0;;; -142745;1;0;false;false;;;;;; -142746;2;0;false;false;0;0;0;;; -142748;1;0;false;false;;;;;; -142749;4;1;false;false;127;0;85;;; -142753;1;0;false;false;0;0;0;;; -142754;1;0;false;false;;;;;; -142755;1;0;false;false;0;0;0;;; -142756;4;0;false;false;;;;;; -142760;6;0;false;false;0;0;0;;; -142766;1;0;false;false;;;;;; -142767;1;0;false;false;0;0;0;;; -142768;1;0;false;false;;;;;; -142769;13;0;false;false;0;0;0;;; -142782;3;0;false;false;;;;;; -142785;1;0;false;false;0;0;0;;; -142786;3;0;false;false;;;;;; -142789;2;1;false;false;127;0;85;;; -142791;1;0;false;false;;;;;; -142792;14;0;false;false;0;0;0;;; -142806;1;0;false;false;;;;;; -142807;2;0;false;false;0;0;0;;; -142809;1;0;false;false;;;;;; -142810;2;0;false;false;0;0;0;;; -142812;1;0;false;false;;;;;; -142813;1;0;false;false;0;0;0;;; -142814;4;0;false;false;;;;;; -142818;6;1;false;false;127;0;85;;; -142824;1;0;false;false;;;;;; -142825;3;1;false;false;127;0;85;;; -142828;1;0;false;false;;;;;; -142829;3;1;false;false;127;0;85;;; -142832;2;0;false;false;0;0;0;;; -142834;1;0;false;false;;;;;; -142835;3;0;false;false;0;0;0;;; -142838;1;0;false;false;;;;;; -142839;12;0;false;false;0;0;0;;; -142851;3;0;false;false;;;;;; -142854;1;0;false;false;0;0;0;;; -142855;3;0;false;false;;;;;; -142858;3;1;false;false;127;0;85;;; -142861;1;0;false;false;;;;;; -142862;4;0;false;false;0;0;0;;; -142866;1;0;false;false;;;;;; -142867;5;0;false;false;0;0;0;;; -142872;1;0;false;false;;;;;; -142873;1;0;false;false;0;0;0;;; -142874;1;0;false;false;;;;;; -142875;2;0;false;false;0;0;0;;; -142877;3;0;false;false;;;;;; -142880;5;1;false;false;127;0;85;;; -142885;1;0;false;false;;;;;; -142886;2;0;false;false;0;0;0;;; -142888;1;0;false;false;;;;;; -142889;1;0;false;false;0;0;0;;; -142890;1;0;false;false;;;;;; -142891;13;0;false;false;0;0;0;;; -142904;1;0;false;false;;;;;; -142905;2;0;false;false;0;0;0;;; -142907;1;0;false;false;;;;;; -142908;15;0;false;false;0;0;0;;; -142923;1;0;false;false;;;;;; -142924;2;0;false;false;0;0;0;;; -142926;1;0;false;false;;;;;; -142927;1;0;false;false;0;0;0;;; -142928;1;0;false;false;;;;;; -142929;2;0;false;false;0;0;0;;; -142931;1;0;false;false;;;;;; -142932;16;0;false;false;0;0;0;;; -142948;1;0;false;false;;;;;; -142949;2;0;false;false;0;0;0;;; -142951;1;0;false;false;;;;;; -142952;11;0;false;false;0;0;0;;; -142963;1;0;false;false;;;;;; -142964;1;0;false;false;0;0;0;;; -142965;4;0;false;false;;;;;; -142969;4;0;false;false;0;0;0;;; -142973;3;0;false;false;;;;;; -142976;1;0;false;false;0;0;0;;; -142977;3;0;false;false;;;;;; -142980;3;1;false;false;127;0;85;;; -142983;2;0;false;false;0;0;0;;; -142985;1;0;false;false;;;;;; -142986;7;0;false;false;0;0;0;;; -142993;1;0;false;false;;;;;; -142994;1;0;false;false;0;0;0;;; -142995;1;0;false;false;;;;;; -142996;3;1;false;false;127;0;85;;; -142999;1;0;false;false;;;;;; -143000;3;1;false;false;127;0;85;;; -143003;15;0;false;false;0;0;0;;; -143018;1;0;false;false;;;;;; -143019;1;0;false;false;0;0;0;;; -143020;1;0;false;false;;;;;; -143021;2;0;false;false;0;0;0;;; -143023;1;0;false;false;;;;;; -143024;1;0;false;false;0;0;0;;; -143025;1;0;false;false;;;;;; -143026;1;0;false;false;0;0;0;;; -143027;1;0;false;false;;;;;; -143028;1;0;false;false;0;0;0;;; -143029;1;0;false;false;;;;;; -143030;3;0;false;false;0;0;0;;; -143033;3;0;false;false;;;;;; -143036;3;1;false;false;127;0;85;;; -143039;1;0;false;false;;;;;; -143040;1;0;false;false;0;0;0;;; -143041;3;1;false;false;127;0;85;;; -143044;1;0;false;false;;;;;; -143045;1;0;false;false;0;0;0;;; -143046;1;0;false;false;;;;;; -143047;1;0;false;false;0;0;0;;; -143048;1;0;false;false;;;;;; -143049;2;0;false;false;0;0;0;;; -143051;1;0;false;false;;;;;; -143052;1;0;false;false;0;0;0;;; -143053;1;0;false;false;;;;;; -143054;1;0;false;false;0;0;0;;; -143055;1;0;false;false;;;;;; -143056;14;0;false;false;0;0;0;;; -143070;1;0;false;false;;;;;; -143071;4;0;false;false;0;0;0;;; -143075;1;0;false;false;;;;;; -143076;1;0;false;false;0;0;0;;; -143077;4;0;false;false;;;;;; -143081;10;0;false;false;0;0;0;;; -143091;1;0;false;false;;;;;; -143092;5;0;false;false;0;0;0;;; -143097;1;0;false;false;;;;;; -143098;1;0;false;false;0;0;0;;; -143099;1;0;false;false;;;;;; -143100;10;0;false;false;0;0;0;;; -143110;4;0;false;false;;;;;; -143114;3;1;false;false;127;0;85;;; -143117;1;0;false;false;;;;;; -143118;14;0;false;false;0;0;0;;; -143132;1;0;false;false;;;;;; -143133;1;0;false;false;0;0;0;;; -143134;1;0;false;false;;;;;; -143135;20;0;false;false;0;0;0;;; -143155;1;0;false;false;;;;;; -143156;1;0;false;false;0;0;0;;; -143157;1;0;false;false;;;;;; -143158;11;0;false;false;0;0;0;;; -143169;1;0;false;false;;;;;; -143170;3;0;false;false;0;0;0;;; -143173;4;0;false;false;;;;;; -143177;3;1;false;false;127;0;85;;; -143180;1;0;false;false;;;;;; -143181;12;0;false;false;0;0;0;;; -143193;1;0;false;false;;;;;; -143194;1;0;false;false;0;0;0;;; -143195;1;0;false;false;;;;;; -143196;20;0;false;false;0;0;0;;; -143216;1;0;false;false;;;;;; -143217;1;0;false;false;0;0;0;;; -143218;1;0;false;false;;;;;; -143219;12;0;false;false;0;0;0;;; -143231;1;0;false;false;;;;;; -143232;1;0;false;false;0;0;0;;; -143233;1;0;false;false;;;;;; -143234;11;0;false;false;0;0;0;;; -143245;1;0;false;false;;;;;; -143246;16;0;false;false;0;0;0;;; -143262;4;0;false;false;;;;;; -143266;12;0;false;false;0;0;0;;; -143278;1;0;false;false;;;;;; -143279;1;0;false;false;0;0;0;;; -143280;1;0;false;false;;;;;; -143281;8;0;false;false;0;0;0;;; -143289;1;0;false;false;;;;;; -143290;14;0;false;false;0;0;0;;; -143304;1;0;false;false;;;;;; -143305;11;0;false;false;0;0;0;;; -143316;1;0;false;false;;;;;; -143317;4;0;false;false;0;0;0;;; -143321;4;0;false;false;;;;;; -143325;2;1;false;false;127;0;85;;; -143327;1;0;false;false;;;;;; -143328;2;0;false;false;0;0;0;;; -143330;1;0;false;false;;;;;; -143331;1;0;false;false;0;0;0;;; -143332;1;0;false;false;;;;;; -143333;1;0;false;false;0;0;0;;; -143334;1;0;false;false;;;;;; -143335;2;0;false;false;0;0;0;;; -143337;1;0;false;false;;;;;; -143338;5;0;false;false;0;0;0;;; -143343;1;0;false;false;;;;;; -143344;1;0;false;false;0;0;0;;; -143345;1;0;false;false;;;;;; -143346;1;0;false;false;0;0;0;;; -143347;1;0;false;false;;;;;; -143348;2;0;false;false;0;0;0;;; -143350;5;0;false;false;;;;;; -143355;16;0;false;false;0;0;0;;; -143371;1;0;false;false;;;;;; -143372;2;0;false;false;0;0;0;;; -143374;1;0;false;false;;;;;; -143375;16;0;false;false;0;0;0;;; -143391;1;0;false;false;;;;;; -143392;2;0;false;false;0;0;0;;; -143394;1;0;false;false;;;;;; -143395;14;0;false;false;0;0;0;;; -143409;1;0;false;false;;;;;; -143410;2;0;false;false;0;0;0;;; -143412;1;0;false;false;;;;;; -143413;17;0;false;false;0;0;0;;; -143430;1;0;false;false;;;;;; -143431;2;0;false;false;0;0;0;;; -143433;6;0;false;false;;;;;; -143439;13;0;false;false;0;0;0;;; -143452;1;0;false;false;;;;;; -143453;2;0;false;false;0;0;0;;; -143455;1;0;false;false;;;;;; -143456;16;0;false;false;0;0;0;;; -143472;1;0;false;false;;;;;; -143473;2;0;false;false;0;0;0;;; -143475;1;0;false;false;;;;;; -143476;12;0;false;false;0;0;0;;; -143488;1;0;false;false;;;;;; -143489;2;0;false;false;0;0;0;;; -143491;1;0;false;false;;;;;; -143492;18;0;false;false;0;0;0;;; -143510;1;0;false;false;;;;;; -143511;2;0;false;false;0;0;0;;; -143513;6;0;false;false;;;;;; -143519;29;0;false;false;0;0;0;;; -143548;1;0;false;false;;;;;; -143549;1;0;false;false;0;0;0;;; -143550;5;0;false;false;;;;;; -143555;16;0;false;false;0;0;0;;; -143571;1;0;false;false;;;;;; -143572;1;0;false;false;0;0;0;;; -143573;1;0;false;false;;;;;; -143574;26;0;false;false;0;0;0;;; -143600;1;0;false;false;;;;;; -143601;16;0;false;false;0;0;0;;; -143617;5;0;false;false;;;;;; -143622;16;0;false;false;0;0;0;;; -143638;1;0;false;false;;;;;; -143639;1;0;false;false;0;0;0;;; -143640;1;0;false;false;;;;;; -143641;26;0;false;false;0;0;0;;; -143667;1;0;false;false;;;;;; -143668;14;0;false;false;0;0;0;;; -143682;4;0;false;false;;;;;; -143686;1;0;false;false;0;0;0;;; -143687;1;0;false;false;;;;;; -143688;4;1;false;false;127;0;85;;; -143692;1;0;false;false;;;;;; -143693;1;0;false;false;0;0;0;;; -143694;5;0;false;false;;;;;; -143699;2;1;false;false;127;0;85;;; -143701;1;0;false;false;;;;;; -143702;15;0;false;false;0;0;0;;; -143717;1;0;false;false;;;;;; -143718;1;0;false;false;0;0;0;;; -143719;1;0;false;false;;;;;; -143720;13;0;false;false;0;0;0;;; -143733;1;0;false;false;;;;;; -143734;1;0;false;false;0;0;0;;; -143735;1;0;false;false;;;;;; -143736;3;0;false;false;0;0;0;;; -143739;1;0;false;false;;;;;; -143740;1;0;false;false;0;0;0;;; -143741;6;0;false;false;;;;;; -143747;14;0;false;false;0;0;0;;; -143761;1;0;false;false;;;;;; -143762;1;0;false;false;0;0;0;;; -143763;1;0;false;false;;;;;; -143764;15;0;false;false;0;0;0;;; -143779;6;0;false;false;;;;;; -143785;8;0;false;false;0;0;0;;; -143793;5;0;false;false;;;;;; -143798;1;0;false;false;0;0;0;;; -143799;5;0;false;false;;;;;; -143804;14;0;false;false;0;0;0;;; -143818;1;0;false;false;;;;;; -143819;1;0;false;false;0;0;0;;; -143820;1;0;false;false;;;;;; -143821;13;0;false;false;0;0;0;;; -143834;5;0;false;false;;;;;; -143839;8;0;false;false;0;0;0;;; -143847;4;0;false;false;;;;;; -143851;1;0;false;false;0;0;0;;; -143852;3;0;false;false;;;;;; -143855;1;0;false;false;0;0;0;;; -143856;3;0;false;false;;;;;; -143859;60;0;false;false;63;127;95;;; -143919;1;0;false;false;;;;;; -143920;2;1;false;false;127;0;85;;; -143922;1;0;false;false;;;;;; -143923;11;0;false;false;0;0;0;;; -143934;1;0;false;false;;;;;; -143935;1;0;false;false;0;0;0;;; -143936;1;0;false;false;;;;;; -143937;17;0;false;false;0;0;0;;; -143954;1;0;false;false;;;;;; -143955;1;0;false;false;0;0;0;;; -143956;4;0;false;false;;;;;; -143960;7;0;false;false;0;0;0;;; -143967;1;0;false;false;;;;;; -143968;7;0;false;false;0;0;0;;; -143975;1;0;false;false;;;;;; -143976;1;0;false;false;0;0;0;;; -143977;1;0;false;false;;;;;; -143978;11;0;false;false;0;0;0;;; -143989;4;0;false;false;;;;;; -143993;8;0;false;false;0;0;0;;; -144001;3;0;false;false;;;;;; -144004;1;0;false;false;0;0;0;;; -144005;5;0;false;false;;;;;; -144010;2;1;false;false;127;0;85;;; -144012;1;0;false;false;;;;;; -144013;6;0;false;false;0;0;0;;; -144019;1;0;false;false;;;;;; -144020;2;0;false;false;0;0;0;;; -144022;1;0;false;false;;;;;; -144023;15;0;false;false;0;0;0;;; -144038;1;0;false;false;;;;;; -144039;1;0;false;false;0;0;0;;; -144040;4;0;false;false;;;;;; -144044;6;1;false;false;127;0;85;;; -144050;1;0;false;false;;;;;; -144051;8;0;false;false;0;0;0;;; -144059;3;0;false;false;;;;;; -144062;1;0;false;false;0;0;0;;; -144063;3;0;false;false;;;;;; -144066;3;1;false;false;127;0;85;;; -144069;1;0;false;false;;;;;; -144070;2;0;false;false;0;0;0;;; -144072;1;0;false;false;;;;;; -144073;6;0;false;false;0;0;0;;; -144079;1;0;false;false;;;;;; -144080;1;0;false;false;0;0;0;;; -144081;1;0;false;false;;;;;; -144082;3;1;false;false;127;0;85;;; -144085;1;0;false;false;;;;;; -144086;3;1;false;false;127;0;85;;; -144089;1;0;false;false;;;;;; -144090;8;0;false;false;0;0;0;;; -144098;3;0;false;false;;;;;; -144101;16;0;false;false;0;0;0;;; -144117;1;0;false;false;;;;;; -144118;9;0;false;false;0;0;0;;; -144127;1;0;false;false;;;;;; -144128;2;0;false;false;0;0;0;;; -144130;1;0;false;false;;;;;; -144131;7;0;false;false;0;0;0;;; -144138;1;0;false;false;;;;;; -144139;2;0;false;false;0;0;0;;; -144141;1;0;false;false;;;;;; -144142;7;0;false;false;0;0;0;;; -144149;3;0;false;false;;;;;; -144152;6;1;false;false;127;0;85;;; -144158;1;0;false;false;;;;;; -144159;7;0;false;false;0;0;0;;; -144166;2;0;false;false;;;;;; -144168;1;0;false;false;0;0;0;;; -144169;2;0;false;false;;;;;; -144171;3;0;false;false;63;95;191;;; -144174;3;0;false;false;;;;;; -144177;1;0;false;false;63;95;191;;; -144178;1;0;false;false;;;;;; -144179;7;0;false;false;63;95;191;;; -144186;1;0;false;false;;;;;; -144187;3;0;false;false;63;95;191;;; -144190;1;0;false;false;;;;;; -144191;5;0;false;false;63;95;191;;; -144196;1;0;false;false;;;;;; -144197;5;0;false;false;63;95;191;;; -144202;1;0;false;false;;;;;; -144203;2;0;false;false;63;95;191;;; -144205;1;0;false;false;;;;;; -144206;3;0;false;false;63;95;191;;; -144209;1;0;false;false;;;;;; -144210;5;0;false;false;63;95;191;;; -144215;1;0;false;false;;;;;; -144216;7;0;false;false;63;95;191;;; -144223;3;0;false;false;;;;;; -144226;1;0;false;false;63;95;191;;; -144227;1;0;false;false;;;;;; -144228;7;0;false;false;63;95;191;;; -144235;1;0;false;false;;;;;; -144236;4;0;false;false;63;95;191;;; -144240;1;0;false;false;;;;;; -144241;2;0;false;false;63;95;191;;; -144243;1;0;false;false;;;;;; -144244;1;0;false;false;63;95;191;;; -144245;1;0;false;false;;;;;; -144246;17;0;false;false;63;95;191;;; -144263;1;0;false;false;;;;;; -144264;3;0;false;false;63;95;191;;; -144267;1;0;false;false;;;;;; -144268;4;0;false;false;63;95;191;;; -144272;1;0;false;false;;;;;; -144273;3;0;false;false;63;95;191;;; -144276;1;0;false;false;;;;;; -144277;2;0;false;false;63;95;191;;; -144279;1;0;false;false;;;;;; -144280;2;0;false;false;63;95;191;;; -144282;1;0;false;false;;;;;; -144283;1;0;false;false;63;95;191;;; -144284;1;0;false;false;;;;;; -144285;5;0;false;false;63;95;191;;; -144290;1;0;false;false;;;;;; -144291;2;0;false;false;63;95;191;;; -144293;1;0;false;false;;;;;; -144294;3;0;false;false;63;95;191;;; -144297;1;0;false;false;;;;;; -144298;3;0;false;false;63;95;191;;; -144301;3;0;false;false;;;;;; -144304;1;0;false;false;63;95;191;;; -144305;1;0;false;false;;;;;; -144306;3;0;false;false;63;95;191;;; -144309;1;0;false;false;;;;;; -144310;3;0;false;false;63;95;191;;; -144313;1;0;false;false;;;;;; -144314;7;0;false;false;63;95;191;;; -144321;4;0;false;false;;;;;; -144325;1;0;false;false;63;95;191;;; -144326;1;0;false;false;;;;;; -144327;6;0;false;false;63;95;191;;; -144333;1;0;false;false;;;;;; -144334;3;0;false;false;63;95;191;;; -144337;1;0;false;false;;;;;; -144338;2;0;false;false;63;95;191;;; -144340;1;0;false;false;;;;;; -144341;6;0;false;false;63;95;191;;; -144347;1;0;false;false;;;;;; -144348;2;0;false;false;63;95;191;;; -144350;1;0;false;false;;;;;; -144351;1;0;false;false;63;95;191;;; -144352;1;0;false;false;;;;;; -144353;17;0;false;false;63;95;191;;; -144370;1;0;false;false;;;;;; -144371;3;0;false;false;63;95;191;;; -144374;1;0;false;false;;;;;; -144375;4;0;false;false;63;95;191;;; -144379;1;0;false;false;;;;;; -144380;3;0;false;false;63;95;191;;; -144383;1;0;false;false;;;;;; -144384;5;0;false;false;63;95;191;;; -144389;1;0;false;false;;;;;; -144390;3;0;false;false;63;95;191;;; -144393;4;0;false;false;;;;;; -144397;1;0;false;false;63;95;191;;; -144398;1;0;false;false;;;;;; -144399;8;0;false;false;63;95;191;;; -144407;1;0;false;false;;;;;; -144408;9;0;false;false;63;95;191;;; -144417;1;0;false;false;;;;;; -144418;3;0;false;false;63;95;191;;; -144421;1;0;false;false;;;;;; -144422;7;0;false;false;63;95;191;;; -144429;3;0;false;false;;;;;; -144432;1;0;false;false;63;95;191;;; -144433;1;0;false;false;;;;;; -144434;3;0;false;false;127;127;159;;; -144437;3;0;false;false;;;;;; -144440;1;0;false;false;63;95;191;;; -144441;3;0;false;false;;;;;; -144444;1;0;false;false;63;95;191;;; -144445;1;0;false;false;;;;;; -144446;7;1;false;false;127;159;191;;; -144453;6;0;false;false;63;95;191;;; -144459;1;0;false;false;;;;;; -144460;3;0;false;false;63;95;191;;; -144463;1;0;false;false;;;;;; -144464;6;0;false;false;63;95;191;;; -144470;1;0;false;false;;;;;; -144471;2;0;false;false;63;95;191;;; -144473;1;0;false;false;;;;;; -144474;6;0;false;false;63;95;191;;; -144480;1;0;false;false;;;;;; -144481;3;0;false;false;63;95;191;;; -144484;1;0;false;false;;;;;; -144485;5;0;false;false;63;95;191;;; -144490;1;0;false;false;;;;;; -144491;4;0;false;false;63;95;191;;; -144495;4;0;false;false;;;;;; -144499;1;0;false;false;63;95;191;;; -144500;2;0;false;false;;;;;; -144502;1;0;false;false;63;95;191;;; -144503;1;0;false;false;;;;;; -144504;42;0;false;false;63;95;191;;; -144546;1;0;false;false;;;;;; -144547;1;0;false;false;63;95;191;;; -144548;1;0;false;false;;;;;; -144549;8;1;false;false;127;159;191;;; -144557;1;0;false;false;63;95;191;;; -144558;1;0;false;false;;;;;; -144559;10;0;false;false;63;95;191;;; -144569;1;0;false;false;;;;;; -144570;4;0;false;false;63;95;191;;; -144574;1;0;false;false;;;;;; -144575;5;0;false;false;63;95;191;;; -144580;1;0;false;false;;;;;; -144581;2;0;false;false;63;95;191;;; -144583;1;0;false;false;;;;;; -144584;6;0;false;false;63;95;191;;; -144590;1;0;false;false;;;;;; -144591;3;0;false;false;63;95;191;;; -144594;1;0;false;false;;;;;; -144595;6;0;false;false;63;95;191;;; -144601;1;0;false;false;;;;;; -144602;2;0;false;false;63;95;191;;; -144604;1;0;false;false;;;;;; -144605;2;0;false;false;63;95;191;;; -144607;1;0;false;false;;;;;; -144608;10;0;false;false;63;95;191;;; -144618;3;0;false;false;;;;;; -144621;1;0;false;false;63;95;191;;; -144622;2;0;false;false;;;;;; -144624;3;0;false;false;63;95;191;;; -144627;1;0;false;false;;;;;; -144628;5;0;false;false;63;95;191;;; -144633;1;0;false;false;;;;;; -144634;2;0;false;false;63;95;191;;; -144636;1;0;false;false;;;;;; -144637;3;0;false;false;63;95;191;;; -144640;1;0;false;false;;;;;; -144641;5;0;false;false;63;95;191;;; -144646;1;0;false;false;;;;;; -144647;7;0;false;false;63;95;191;;; -144654;1;0;false;false;;;;;; -144655;4;0;false;false;63;95;191;;; -144659;1;0;false;false;;;;;; -144660;2;0;false;false;63;95;191;;; -144662;1;0;false;false;;;;;; -144663;1;0;false;false;63;95;191;;; -144664;1;0;false;false;;;;;; -144665;17;0;false;false;63;95;191;;; -144682;1;0;false;false;;;;;; -144683;3;0;false;false;63;95;191;;; -144686;1;0;false;false;;;;;; -144687;4;0;false;false;63;95;191;;; -144691;1;0;false;false;;;;;; -144692;3;0;false;false;63;95;191;;; -144695;4;0;false;false;;;;;; -144699;1;0;false;false;63;95;191;;; -144700;2;0;false;false;;;;;; -144702;2;0;false;false;63;95;191;;; -144704;1;0;false;false;;;;;; -144705;2;0;false;false;63;95;191;;; -144707;1;0;false;false;;;;;; -144708;1;0;false;false;63;95;191;;; -144709;1;0;false;false;;;;;; -144710;5;0;false;false;63;95;191;;; -144715;1;0;false;false;;;;;; -144716;2;0;false;false;63;95;191;;; -144718;1;0;false;false;;;;;; -144719;3;0;false;false;63;95;191;;; -144722;1;0;false;false;;;;;; -144723;3;0;false;false;63;95;191;;; -144726;1;0;false;false;;;;;; -144727;3;0;false;false;63;95;191;;; -144730;1;0;false;false;;;;;; -144731;3;0;false;false;63;95;191;;; -144734;1;0;false;false;;;;;; -144735;5;0;false;false;63;95;191;;; -144740;1;0;false;false;;;;;; -144741;7;0;false;false;63;95;191;;; -144748;3;0;false;false;;;;;; -144751;1;0;false;false;63;95;191;;; -144752;1;0;false;false;;;;;; -144753;11;1;false;false;127;159;191;;; -144764;12;0;false;false;63;95;191;;; -144776;1;0;false;false;;;;;; -144777;4;0;false;false;127;127;159;;; -144781;3;0;false;false;;;;;; -144784;1;0;false;false;63;95;191;;; -144785;4;0;false;false;;;;;; -144789;4;0;false;false;127;127;159;;; -144793;21;0;false;false;63;95;191;;; -144814;1;0;false;false;;;;;; -144815;1;0;false;false;127;127;159;;; -144816;1;0;false;false;;;;;; -144817;2;0;false;false;63;95;191;;; -144819;1;0;false;false;;;;;; -144820;3;0;false;false;63;95;191;;; -144823;1;0;false;false;;;;;; -144824;8;0;false;false;63;95;191;;; -144832;1;0;false;false;;;;;; -144833;3;0;false;false;63;95;191;;; -144836;1;0;false;false;;;;;; -144837;4;0;false;false;63;95;191;;; -144841;1;0;false;false;;;;;; -144842;8;0;false;false;63;95;191;;; -144850;5;0;false;false;127;127;159;;; -144855;3;0;false;false;;;;;; -144858;1;0;false;false;63;95;191;;; -144859;4;0;false;false;;;;;; -144863;4;0;false;false;127;127;159;;; -144867;27;0;false;false;63;95;191;;; -144894;1;0;false;false;;;;;; -144895;1;0;false;false;127;127;159;;; -144896;1;0;false;false;;;;;; -144897;2;0;false;false;63;95;191;;; -144899;1;0;false;false;;;;;; -144900;3;0;false;false;63;95;191;;; -144903;1;0;false;false;;;;;; -144904;6;0;false;false;63;95;191;;; -144910;1;0;false;false;;;;;; -144911;4;0;false;false;63;95;191;;; -144915;1;0;false;false;;;;;; -144916;3;0;false;false;63;95;191;;; -144919;1;0;false;false;;;;;; -144920;6;0;false;false;63;95;191;;; -144926;1;0;false;false;;;;;; -144927;4;0;false;false;63;95;191;;; -144931;1;0;false;false;;;;;; -144932;7;0;false;false;63;95;191;;; -144939;1;0;false;false;;;;;; -144940;3;0;false;false;63;95;191;;; -144943;1;0;false;false;;;;;; -144944;8;0;false;false;63;95;191;;; -144952;5;0;false;false;127;127;159;;; -144957;3;0;false;false;;;;;; -144960;1;0;false;false;63;95;191;;; -144961;1;0;false;false;;;;;; -144962;5;0;false;false;127;127;159;;; -144967;3;0;false;false;;;;;; -144970;1;0;false;false;63;95;191;;; -144971;1;0;false;false;;;;;; -144972;11;1;false;false;127;159;191;;; -144983;24;0;false;false;63;95;191;;; -145007;1;0;false;false;;;;;; -145008;4;0;false;false;127;127;159;;; -145012;3;0;false;false;;;;;; -145015;1;0;false;false;63;95;191;;; -145016;3;0;false;false;;;;;; -145019;4;0;false;false;127;127;159;;; -145023;22;0;false;false;63;95;191;;; -145045;1;0;false;false;;;;;; -145046;4;0;false;false;63;95;191;;; -145050;1;0;false;false;;;;;; -145051;3;0;false;false;63;95;191;;; -145054;1;0;false;false;;;;;; -145055;6;0;false;false;63;95;191;;; -145061;1;0;false;false;;;;;; -145062;2;0;false;false;63;95;191;;; -145064;1;0;false;false;;;;;; -145065;7;0;false;false;63;95;191;;; -145072;5;0;false;false;127;127;159;;; -145077;3;0;false;false;;;;;; -145080;1;0;false;false;63;95;191;;; -145081;1;0;false;false;;;;;; -145082;5;0;false;false;127;127;159;;; -145087;3;0;false;false;;;;;; -145090;2;0;false;false;63;95;191;;; -145092;2;0;false;false;;;;;; -145094;6;1;false;false;127;0;85;;; -145100;1;0;false;false;;;;;; -145101;10;0;false;false;0;0;0;;; -145111;1;0;false;false;;;;;; -145112;22;0;false;false;0;0;0;;; -145134;3;1;false;false;127;0;85;;; -145137;1;0;false;false;;;;;; -145138;7;0;false;false;0;0;0;;; -145145;1;0;false;false;;;;;; -145146;1;0;false;false;0;0;0;;; -145147;3;0;false;false;;;;;; -145150;14;0;false;false;0;0;0;;; -145164;3;0;false;false;;;;;; -145167;2;1;false;false;127;0;85;;; -145169;1;0;false;false;;;;;; -145170;7;0;false;false;0;0;0;;; -145177;1;0;false;false;;;;;; -145178;1;0;false;false;0;0;0;;; -145179;1;0;false;false;;;;;; -145180;1;0;false;false;0;0;0;;; -145181;1;0;false;false;;;;;; -145182;2;0;false;false;0;0;0;;; -145184;1;0;false;false;;;;;; -145185;6;0;false;false;0;0;0;;; -145191;1;0;false;false;;;;;; -145192;2;0;false;false;0;0;0;;; -145194;1;0;false;false;;;;;; -145195;15;0;false;false;0;0;0;;; -145210;1;0;false;false;;;;;; -145211;1;0;false;false;0;0;0;;; -145212;4;0;false;false;;;;;; -145216;38;0;false;false;0;0;0;;; -145254;3;0;false;false;;;;;; -145257;1;0;false;false;0;0;0;;; -145258;5;0;false;false;;;;;; -145263;2;1;false;false;127;0;85;;; -145265;1;0;false;false;;;;;; -145266;16;0;false;false;0;0;0;;; -145282;1;0;false;false;;;;;; -145283;1;0;false;false;0;0;0;;; -145284;4;0;false;false;;;;;; -145288;6;1;false;false;127;0;85;;; -145294;1;0;false;false;;;;;; -145295;48;0;false;false;0;0;0;;; -145343;3;0;false;false;;;;;; -145346;1;0;false;false;0;0;0;;; -145347;4;0;false;false;;;;;; -145351;6;1;false;false;127;0;85;;; -145357;1;0;false;false;;;;;; -145358;4;1;false;false;127;0;85;;; -145362;1;0;false;false;0;0;0;;; -145363;2;0;false;false;;;;;; -145365;1;0;false;false;0;0;0;;; -145366;2;0;false;false;;;;;; -145368;3;0;false;false;63;95;191;;; -145371;3;0;false;false;;;;;; -145374;1;0;false;false;63;95;191;;; -145375;1;0;false;false;;;;;; -145376;7;0;false;false;63;95;191;;; -145383;1;0;false;false;;;;;; -145384;3;0;false;false;63;95;191;;; -145387;1;0;false;false;;;;;; -145388;7;0;false;false;63;95;191;;; -145395;3;0;false;false;;;;;; -145398;1;0;false;false;63;95;191;;; -145399;1;0;false;false;;;;;; -145400;7;0;false;false;63;95;191;;; -145407;1;0;false;false;;;;;; -145408;2;0;false;false;63;95;191;;; -145410;1;0;false;false;;;;;; -145411;5;0;false;false;63;95;191;;; -145416;1;0;false;false;;;;;; -145417;5;0;false;false;63;95;191;;; -145422;1;0;false;false;;;;;; -145423;2;0;false;false;63;95;191;;; -145425;1;0;false;false;;;;;; -145426;1;0;false;false;63;95;191;;; -145427;1;0;false;false;;;;;; -145428;17;0;false;false;63;95;191;;; -145445;1;0;false;false;;;;;; -145446;3;0;false;false;63;95;191;;; -145449;1;0;false;false;;;;;; -145450;4;0;false;false;63;95;191;;; -145454;1;0;false;false;;;;;; -145455;4;0;false;false;63;95;191;;; -145459;4;0;false;false;;;;;; -145463;1;0;false;false;63;95;191;;; -145464;1;0;false;false;;;;;; -145465;6;0;false;false;63;95;191;;; -145471;1;0;false;false;;;;;; -145472;3;0;false;false;63;95;191;;; -145475;1;0;false;false;;;;;; -145476;2;0;false;false;63;95;191;;; -145478;1;0;false;false;;;;;; -145479;6;0;false;false;63;95;191;;; -145485;1;0;false;false;;;;;; -145486;2;0;false;false;63;95;191;;; -145488;1;0;false;false;;;;;; -145489;1;0;false;false;63;95;191;;; -145490;1;0;false;false;;;;;; -145491;17;0;false;false;63;95;191;;; -145508;1;0;false;false;;;;;; -145509;3;0;false;false;63;95;191;;; -145512;1;0;false;false;;;;;; -145513;4;0;false;false;63;95;191;;; -145517;1;0;false;false;;;;;; -145518;3;0;false;false;63;95;191;;; -145521;1;0;false;false;;;;;; -145522;5;0;false;false;63;95;191;;; -145527;1;0;false;false;;;;;; -145528;3;0;false;false;63;95;191;;; -145531;4;0;false;false;;;;;; -145535;1;0;false;false;63;95;191;;; -145536;1;0;false;false;;;;;; -145537;8;0;false;false;63;95;191;;; -145545;1;0;false;false;;;;;; -145546;9;0;false;false;63;95;191;;; -145555;1;0;false;false;;;;;; -145556;3;0;false;false;63;95;191;;; -145559;1;0;false;false;;;;;; -145560;7;0;false;false;63;95;191;;; -145567;3;0;false;false;;;;;; -145570;1;0;false;false;63;95;191;;; -145571;1;0;false;false;;;;;; -145572;3;0;false;false;127;127;159;;; -145575;3;0;false;false;;;;;; -145578;1;0;false;false;63;95;191;;; -145579;3;0;false;false;;;;;; -145582;1;0;false;false;63;95;191;;; -145583;1;0;false;false;;;;;; -145584;8;1;false;false;127;159;191;;; -145592;3;0;false;false;63;95;191;;; -145595;1;0;false;false;;;;;; -145596;6;0;false;false;63;95;191;;; -145602;1;0;false;false;;;;;; -145603;2;0;false;false;63;95;191;;; -145605;1;0;false;false;;;;;; -145606;2;0;false;false;63;95;191;;; -145608;1;0;false;false;;;;;; -145609;5;0;false;false;63;95;191;;; -145614;1;0;false;false;;;;;; -145615;5;0;false;false;63;95;191;;; -145620;1;0;false;false;;;;;; -145621;2;0;false;false;63;95;191;;; -145623;1;0;false;false;;;;;; -145624;1;0;false;false;63;95;191;;; -145625;1;0;false;false;;;;;; -145626;17;0;false;false;63;95;191;;; -145643;1;0;false;false;;;;;; -145644;3;0;false;false;63;95;191;;; -145647;1;0;false;false;;;;;; -145648;4;0;false;false;63;95;191;;; -145652;1;0;false;false;;;;;; -145653;4;0;false;false;63;95;191;;; -145657;4;0;false;false;;;;;; -145661;1;0;false;false;63;95;191;;; -145662;3;0;false;false;;;;;; -145665;1;0;false;false;63;95;191;;; -145666;1;0;false;false;;;;;; -145667;11;1;false;false;127;159;191;;; -145678;12;0;false;false;63;95;191;;; -145690;1;0;false;false;;;;;; -145691;4;0;false;false;127;127;159;;; -145695;3;0;false;false;;;;;; -145698;1;0;false;false;63;95;191;;; -145699;4;0;false;false;;;;;; -145703;4;0;false;false;127;127;159;;; -145707;21;0;false;false;63;95;191;;; -145728;1;0;false;false;;;;;; -145729;1;0;false;false;127;127;159;;; -145730;1;0;false;false;;;;;; -145731;2;0;false;false;63;95;191;;; -145733;1;0;false;false;;;;;; -145734;3;0;false;false;63;95;191;;; -145737;1;0;false;false;;;;;; -145738;8;0;false;false;63;95;191;;; -145746;1;0;false;false;;;;;; -145747;3;0;false;false;63;95;191;;; -145750;1;0;false;false;;;;;; -145751;4;0;false;false;63;95;191;;; -145755;1;0;false;false;;;;;; -145756;8;0;false;false;63;95;191;;; -145764;5;0;false;false;127;127;159;;; -145769;3;0;false;false;;;;;; -145772;1;0;false;false;63;95;191;;; -145773;4;0;false;false;;;;;; -145777;4;0;false;false;127;127;159;;; -145781;27;0;false;false;63;95;191;;; -145808;1;0;false;false;;;;;; -145809;1;0;false;false;127;127;159;;; -145810;1;0;false;false;;;;;; -145811;2;0;false;false;63;95;191;;; -145813;1;0;false;false;;;;;; -145814;3;0;false;false;63;95;191;;; -145817;1;0;false;false;;;;;; -145818;6;0;false;false;63;95;191;;; -145824;1;0;false;false;;;;;; -145825;4;0;false;false;63;95;191;;; -145829;1;0;false;false;;;;;; -145830;3;0;false;false;63;95;191;;; -145833;1;0;false;false;;;;;; -145834;6;0;false;false;63;95;191;;; -145840;1;0;false;false;;;;;; -145841;4;0;false;false;63;95;191;;; -145845;1;0;false;false;;;;;; -145846;7;0;false;false;63;95;191;;; -145853;1;0;false;false;;;;;; -145854;3;0;false;false;63;95;191;;; -145857;1;0;false;false;;;;;; -145858;8;0;false;false;63;95;191;;; -145866;5;0;false;false;127;127;159;;; -145871;3;0;false;false;;;;;; -145874;1;0;false;false;63;95;191;;; -145875;1;0;false;false;;;;;; -145876;5;0;false;false;127;127;159;;; -145881;3;0;false;false;;;;;; -145884;2;0;false;false;63;95;191;;; -145886;2;0;false;false;;;;;; -145888;6;1;false;false;127;0;85;;; -145894;1;0;false;false;;;;;; -145895;10;0;false;false;0;0;0;;; -145905;1;0;false;false;;;;;; -145906;2;0;false;false;0;0;0;;; -145908;1;0;false;false;;;;;; -145909;16;0;false;false;0;0;0;;; -145925;1;0;false;false;;;;;; -145926;1;0;false;false;0;0;0;;; -145927;3;0;false;false;;;;;; -145930;14;0;false;false;0;0;0;;; -145944;3;0;false;false;;;;;; -145947;10;0;false;false;0;0;0;;; -145957;1;0;false;false;;;;;; -145958;9;0;false;false;0;0;0;;; -145967;6;0;false;false;;;;;; -145973;2;1;false;false;127;0;85;;; -145975;1;0;false;false;;;;;; -145976;16;0;false;false;0;0;0;;; -145992;1;0;false;false;;;;;; -145993;1;0;false;false;0;0;0;;; -145994;4;0;false;false;;;;;; -145998;6;0;false;false;0;0;0;;; -146004;1;0;false;false;;;;;; -146005;1;0;false;false;0;0;0;;; -146006;1;0;false;false;;;;;; -146007;35;0;false;false;0;0;0;;; -146042;3;0;false;false;;;;;; -146045;1;0;false;false;0;0;0;;; -146046;3;0;false;false;;;;;; -146049;4;1;false;false;127;0;85;;; -146053;1;0;false;false;;;;;; -146054;1;0;false;false;0;0;0;;; -146055;4;0;false;false;;;;;; -146059;6;0;false;false;0;0;0;;; -146065;1;0;false;false;;;;;; -146066;1;0;false;false;0;0;0;;; -146067;1;0;false;false;;;;;; -146068;3;1;false;false;127;0;85;;; -146071;1;0;false;false;;;;;; -146072;14;0;false;false;0;0;0;;; -146086;3;0;false;false;;;;;; -146089;1;0;false;false;0;0;0;;; -146090;3;0;false;false;;;;;; -146093;6;1;false;false;127;0;85;;; -146099;1;0;false;false;;;;;; -146100;7;0;false;false;0;0;0;;; -146107;2;0;false;false;;;;;; -146109;1;0;false;false;0;0;0;;; -146110;2;0;false;false;;;;;; -146112;3;0;false;false;63;95;191;;; -146115;3;0;false;false;;;;;; -146118;1;0;false;false;63;95;191;;; -146119;1;0;false;false;;;;;; -146120;7;0;false;false;63;95;191;;; -146127;1;0;false;false;;;;;; -146128;3;0;false;false;63;95;191;;; -146131;1;0;false;false;;;;;; -146132;6;0;false;false;63;95;191;;; -146138;1;0;false;false;;;;;; -146139;3;0;false;false;63;95;191;;; -146142;1;0;false;false;;;;;; -146143;3;0;false;false;63;95;191;;; -146146;1;0;false;false;;;;;; -146147;5;0;false;false;63;95;191;;; -146152;1;0;false;false;;;;;; -146153;4;0;false;false;63;95;191;;; -146157;1;0;false;false;;;;;; -146158;6;0;false;false;63;95;191;;; -146164;3;0;false;false;;;;;; -146167;1;0;false;false;63;95;191;;; -146168;1;0;false;false;;;;;; -146169;7;0;false;false;63;95;191;;; -146176;1;0;false;false;;;;;; -146177;2;0;false;false;63;95;191;;; -146179;1;0;false;false;;;;;; -146180;5;0;false;false;63;95;191;;; -146185;1;0;false;false;;;;;; -146186;5;0;false;false;63;95;191;;; -146191;1;0;false;false;;;;;; -146192;2;0;false;false;63;95;191;;; -146194;1;0;false;false;;;;;; -146195;1;0;false;false;63;95;191;;; -146196;1;0;false;false;;;;;; -146197;17;0;false;false;63;95;191;;; -146214;1;0;false;false;;;;;; -146215;3;0;false;false;63;95;191;;; -146218;1;0;false;false;;;;;; -146219;4;0;false;false;63;95;191;;; -146223;1;0;false;false;;;;;; -146224;4;0;false;false;63;95;191;;; -146228;4;0;false;false;;;;;; -146232;1;0;false;false;63;95;191;;; -146233;1;0;false;false;;;;;; -146234;6;0;false;false;63;95;191;;; -146240;1;0;false;false;;;;;; -146241;3;0;false;false;63;95;191;;; -146244;1;0;false;false;;;;;; -146245;2;0;false;false;63;95;191;;; -146247;1;0;false;false;;;;;; -146248;6;0;false;false;63;95;191;;; -146254;1;0;false;false;;;;;; -146255;2;0;false;false;63;95;191;;; -146257;1;0;false;false;;;;;; -146258;1;0;false;false;63;95;191;;; -146259;1;0;false;false;;;;;; -146260;17;0;false;false;63;95;191;;; -146277;1;0;false;false;;;;;; -146278;3;0;false;false;63;95;191;;; -146281;1;0;false;false;;;;;; -146282;4;0;false;false;63;95;191;;; -146286;1;0;false;false;;;;;; -146287;3;0;false;false;63;95;191;;; -146290;1;0;false;false;;;;;; -146291;5;0;false;false;63;95;191;;; -146296;1;0;false;false;;;;;; -146297;3;0;false;false;63;95;191;;; -146300;4;0;false;false;;;;;; -146304;1;0;false;false;63;95;191;;; -146305;1;0;false;false;;;;;; -146306;8;0;false;false;63;95;191;;; -146314;1;0;false;false;;;;;; -146315;9;0;false;false;63;95;191;;; -146324;1;0;false;false;;;;;; -146325;3;0;false;false;63;95;191;;; -146328;1;0;false;false;;;;;; -146329;7;0;false;false;63;95;191;;; -146336;3;0;false;false;;;;;; -146339;1;0;false;false;63;95;191;;; -146340;4;0;false;false;;;;;; -146344;1;0;false;false;63;95;191;;; -146345;1;0;false;false;;;;;; -146346;7;1;false;false;127;159;191;;; -146353;5;0;false;false;63;95;191;;; -146358;1;0;false;false;;;;;; -146359;3;0;false;false;63;95;191;;; -146362;1;0;false;false;;;;;; -146363;5;0;false;false;63;95;191;;; -146368;1;0;false;false;;;;;; -146369;6;0;false;false;63;95;191;;; -146375;1;0;false;false;;;;;; -146376;2;0;false;false;63;95;191;;; -146378;1;0;false;false;;;;;; -146379;3;0;false;false;63;95;191;;; -146382;1;0;false;false;;;;;; -146383;5;0;false;false;63;95;191;;; -146388;1;0;false;false;;;;;; -146389;6;0;false;false;63;95;191;;; -146395;1;0;false;false;;;;;; -146396;2;0;false;false;63;95;191;;; -146398;1;0;false;false;;;;;; -146399;6;0;false;false;63;95;191;;; -146405;3;0;false;false;;;;;; -146408;1;0;false;false;63;95;191;;; -146409;1;0;false;false;;;;;; -146410;7;1;false;false;127;159;191;;; -146417;6;0;false;false;63;95;191;;; -146423;1;0;false;false;;;;;; -146424;3;0;false;false;63;95;191;;; -146427;1;0;false;false;;;;;; -146428;6;0;false;false;63;95;191;;; -146434;1;0;false;false;;;;;; -146435;2;0;false;false;63;95;191;;; -146437;1;0;false;false;;;;;; -146438;5;0;false;false;63;95;191;;; -146443;1;0;false;false;;;;;; -146444;6;0;false;false;63;95;191;;; -146450;1;0;false;false;;;;;; -146451;2;0;false;false;63;95;191;;; -146453;1;0;false;false;;;;;; -146454;6;0;false;false;63;95;191;;; -146460;3;0;false;false;;;;;; -146463;1;0;false;false;63;95;191;;; -146464;3;0;false;false;;;;;; -146467;1;0;false;false;63;95;191;;; -146468;1;0;false;false;;;;;; -146469;8;1;false;false;127;159;191;;; -146477;3;0;false;false;63;95;191;;; -146480;1;0;false;false;;;;;; -146481;6;0;false;false;63;95;191;;; -146487;1;0;false;false;;;;;; -146488;2;0;false;false;63;95;191;;; -146490;1;0;false;false;;;;;; -146491;2;0;false;false;63;95;191;;; -146493;1;0;false;false;;;;;; -146494;5;0;false;false;63;95;191;;; -146499;1;0;false;false;;;;;; -146500;5;0;false;false;63;95;191;;; -146505;1;0;false;false;;;;;; -146506;2;0;false;false;63;95;191;;; -146508;1;0;false;false;;;;;; -146509;1;0;false;false;63;95;191;;; -146510;1;0;false;false;;;;;; -146511;17;0;false;false;63;95;191;;; -146528;1;0;false;false;;;;;; -146529;3;0;false;false;63;95;191;;; -146532;4;0;false;false;;;;;; -146536;1;0;false;false;63;95;191;;; -146537;2;0;false;false;;;;;; -146539;4;0;false;false;63;95;191;;; -146543;1;0;false;false;;;;;; -146544;4;0;false;false;63;95;191;;; -146548;2;0;false;false;;;;;; -146550;3;0;false;false;63;95;191;;; -146553;1;0;false;false;;;;;; -146554;8;0;false;false;63;95;191;;; -146562;1;0;false;false;;;;;; -146563;6;0;false;false;63;95;191;;; -146569;1;0;false;false;;;;;; -146570;4;0;false;false;63;95;191;;; -146574;1;0;false;false;;;;;; -146575;7;0;false;false;63;95;191;;; -146582;1;0;false;false;;;;;; -146583;3;0;false;false;63;95;191;;; -146586;1;0;false;false;;;;;; -146587;5;0;false;false;63;95;191;;; -146592;1;0;false;false;;;;;; -146593;6;0;false;false;63;95;191;;; -146599;2;0;false;false;;;;;; -146601;3;0;false;false;63;95;191;;; -146604;1;0;false;false;;;;;; -146605;5;0;false;false;63;95;191;;; -146610;4;0;false;false;;;;;; -146614;1;0;false;false;63;95;191;;; -146615;2;0;false;false;;;;;; -146617;8;0;false;false;63;95;191;;; -146625;1;0;false;false;;;;;; -146626;6;0;false;false;127;127;159;;; -146632;10;0;false;false;63;95;191;;; -146642;7;0;false;false;127;127;159;;; -146649;1;0;false;false;;;;;; -146650;4;0;false;false;63;95;191;;; -146654;1;0;false;false;;;;;; -146655;4;0;false;false;63;95;191;;; -146659;1;0;false;false;;;;;; -146660;1;0;false;false;63;95;191;;; -146661;1;0;false;false;;;;;; -146662;8;0;false;false;63;95;191;;; -146670;1;0;false;false;;;;;; -146671;6;0;false;false;63;95;191;;; -146677;1;0;false;false;;;;;; -146678;2;0;false;false;63;95;191;;; -146680;1;0;false;false;;;;;; -146681;5;0;false;false;63;95;191;;; -146686;4;0;false;false;;;;;; -146690;1;0;false;false;63;95;191;;; -146691;2;0;false;false;;;;;; -146693;3;0;false;false;63;95;191;;; -146696;1;0;false;false;;;;;; -146697;3;0;false;false;63;95;191;;; -146700;1;0;false;false;;;;;; -146701;4;0;false;false;63;95;191;;; -146705;1;0;false;false;;;;;; -146706;8;0;false;false;63;95;191;;; -146714;1;0;false;false;;;;;; -146715;6;0;false;false;127;127;159;;; -146721;10;0;false;false;63;95;191;;; -146731;7;0;false;false;127;127;159;;; -146738;1;0;false;false;;;;;; -146739;4;0;false;false;63;95;191;;; -146743;1;0;false;false;;;;;; -146744;4;0;false;false;63;95;191;;; -146748;1;0;false;false;;;;;; -146749;2;0;false;false;63;95;191;;; -146751;1;0;false;false;;;;;; -146752;6;0;false;false;63;95;191;;; -146758;4;0;false;false;;;;;; -146762;1;0;false;false;63;95;191;;; -146763;2;0;false;false;;;;;; -146765;6;0;false;false;63;95;191;;; -146771;1;0;false;false;;;;;; -146772;23;0;false;false;63;95;191;;; -146795;1;0;false;false;;;;;; -146796;1;0;false;false;63;95;191;;; -146797;3;0;false;false;;;;;; -146800;1;0;false;false;63;95;191;;; -146801;1;0;false;false;;;;;; -146802;11;1;false;false;127;159;191;;; -146813;12;0;false;false;63;95;191;;; -146825;1;0;false;false;;;;;; -146826;4;0;false;false;127;127;159;;; -146830;3;0;false;false;;;;;; -146833;1;0;false;false;63;95;191;;; -146834;4;0;false;false;;;;;; -146838;4;0;false;false;127;127;159;;; -146842;21;0;false;false;63;95;191;;; -146863;1;0;false;false;;;;;; -146864;1;0;false;false;127;127;159;;; -146865;1;0;false;false;;;;;; -146866;2;0;false;false;63;95;191;;; -146868;1;0;false;false;;;;;; -146869;3;0;false;false;63;95;191;;; -146872;1;0;false;false;;;;;; -146873;8;0;false;false;63;95;191;;; -146881;1;0;false;false;;;;;; -146882;3;0;false;false;63;95;191;;; -146885;1;0;false;false;;;;;; -146886;4;0;false;false;63;95;191;;; -146890;1;0;false;false;;;;;; -146891;8;0;false;false;63;95;191;;; -146899;5;0;false;false;127;127;159;;; -146904;3;0;false;false;;;;;; -146907;1;0;false;false;63;95;191;;; -146908;4;0;false;false;;;;;; -146912;4;0;false;false;127;127;159;;; -146916;27;0;false;false;63;95;191;;; -146943;1;0;false;false;;;;;; -146944;1;0;false;false;127;127;159;;; -146945;1;0;false;false;;;;;; -146946;2;0;false;false;63;95;191;;; -146948;1;0;false;false;;;;;; -146949;3;0;false;false;63;95;191;;; -146952;1;0;false;false;;;;;; -146953;6;0;false;false;63;95;191;;; -146959;1;0;false;false;;;;;; -146960;4;0;false;false;63;95;191;;; -146964;1;0;false;false;;;;;; -146965;3;0;false;false;63;95;191;;; -146968;1;0;false;false;;;;;; -146969;6;0;false;false;63;95;191;;; -146975;1;0;false;false;;;;;; -146976;4;0;false;false;63;95;191;;; -146980;1;0;false;false;;;;;; -146981;7;0;false;false;63;95;191;;; -146988;1;0;false;false;;;;;; -146989;3;0;false;false;63;95;191;;; -146992;1;0;false;false;;;;;; -146993;8;0;false;false;63;95;191;;; -147001;5;0;false;false;127;127;159;;; -147006;3;0;false;false;;;;;; -147009;1;0;false;false;63;95;191;;; -147010;1;0;false;false;;;;;; -147011;5;0;false;false;127;127;159;;; -147016;3;0;false;false;;;;;; -147019;1;0;false;false;63;95;191;;; -147020;1;0;false;false;;;;;; -147021;11;1;false;false;127;159;191;;; -147032;24;0;false;false;63;95;191;;; -147056;1;0;false;false;;;;;; -147057;4;0;false;false;127;127;159;;; -147061;3;0;false;false;;;;;; -147064;1;0;false;false;63;95;191;;; -147065;3;0;false;false;;;;;; -147068;4;0;false;false;127;127;159;;; -147072;19;0;false;false;63;95;191;;; -147091;1;0;false;false;;;;;; -147092;4;0;false;false;63;95;191;;; -147096;1;0;false;false;;;;;; -147097;5;0;false;false;63;95;191;;; -147102;1;0;false;false;;;;;; -147103;6;0;false;false;63;95;191;;; -147109;1;0;false;false;;;;;; -147110;3;0;false;false;63;95;191;;; -147113;1;0;false;false;;;;;; -147114;3;0;false;false;63;95;191;;; -147117;1;0;false;false;;;;;; -147118;7;0;false;false;63;95;191;;; -147125;1;0;false;false;;;;;; -147126;3;0;false;false;63;95;191;;; -147129;1;0;false;false;;;;;; -147130;6;0;false;false;63;95;191;;; -147136;1;0;false;false;;;;;; -147137;7;0;false;false;63;95;191;;; -147144;5;0;false;false;127;127;159;;; -147149;4;0;false;false;;;;;; -147153;1;0;false;false;63;95;191;;; -147154;1;0;false;false;;;;;; -147155;5;0;false;false;127;127;159;;; -147160;3;0;false;false;;;;;; -147163;1;0;false;false;63;95;191;;; -147164;4;0;false;false;;;;;; -147168;1;0;false;false;63;95;191;;; -147169;1;0;false;false;;;;;; -147170;7;1;false;false;127;159;191;;; -147177;3;0;false;false;63;95;191;;; -147180;3;0;false;false;;;;;; -147183;2;0;false;false;63;95;191;;; -147185;2;0;false;false;;;;;; -147187;6;1;false;false;127;0;85;;; -147193;1;0;false;false;;;;;; -147194;10;0;false;false;0;0;0;;; -147204;1;0;false;false;;;;;; -147205;2;0;false;false;0;0;0;;; -147207;1;0;false;false;;;;;; -147208;15;0;false;false;0;0;0;;; -147223;3;1;false;false;127;0;85;;; -147226;1;0;false;false;;;;;; -147227;6;0;false;false;0;0;0;;; -147233;1;0;false;false;;;;;; -147234;3;1;false;false;127;0;85;;; -147237;1;0;false;false;;;;;; -147238;7;0;false;false;0;0;0;;; -147245;1;0;false;false;;;;;; -147246;1;0;false;false;0;0;0;;; -147247;3;0;false;false;;;;;; -147250;14;0;false;false;0;0;0;;; -147264;3;0;false;false;;;;;; -147267;3;1;false;false;127;0;85;;; -147270;1;0;false;false;;;;;; -147271;13;0;false;false;0;0;0;;; -147284;1;0;false;false;;;;;; -147285;1;0;false;false;0;0;0;;; -147286;1;0;false;false;;;;;; -147287;15;0;false;false;0;0;0;;; -147302;3;0;false;false;;;;;; -147305;3;1;false;false;127;0;85;;; -147308;1;0;false;false;;;;;; -147309;3;0;false;false;0;0;0;;; -147312;1;0;false;false;;;;;; -147313;1;0;false;false;0;0;0;;; -147314;1;0;false;false;;;;;; -147315;5;0;false;false;0;0;0;;; -147320;1;0;false;false;;;;;; -147321;1;0;false;false;0;0;0;;; -147322;1;0;false;false;;;;;; -147323;7;0;false;false;0;0;0;;; -147330;3;0;false;false;;;;;; -147333;2;1;false;false;127;0;85;;; -147335;1;0;false;false;;;;;; -147336;6;0;false;false;0;0;0;;; -147342;1;0;false;false;;;;;; -147343;1;0;false;false;0;0;0;;; -147344;1;0;false;false;;;;;; -147345;3;0;false;false;0;0;0;;; -147348;1;0;false;false;;;;;; -147349;2;0;false;false;0;0;0;;; -147351;1;0;false;false;;;;;; -147352;5;0;false;false;0;0;0;;; -147357;1;0;false;false;;;;;; -147358;1;0;false;false;0;0;0;;; -147359;1;0;false;false;;;;;; -147360;1;0;false;false;0;0;0;;; -147361;1;0;false;false;;;;;; -147362;2;0;false;false;0;0;0;;; -147364;1;0;false;false;;;;;; -147365;3;0;false;false;0;0;0;;; -147368;1;0;false;false;;;;;; -147369;1;0;false;false;0;0;0;;; -147370;1;0;false;false;;;;;; -147371;14;0;false;false;0;0;0;;; -147385;1;0;false;false;;;;;; -147386;1;0;false;false;0;0;0;;; -147387;4;0;false;false;;;;;; -147391;35;0;false;false;0;0;0;;; -147426;3;0;false;false;;;;;; -147429;1;0;false;false;0;0;0;;; -147430;4;0;false;false;;;;;; -147434;10;0;false;false;0;0;0;;; -147444;1;0;false;false;;;;;; -147445;9;0;false;false;0;0;0;;; -147454;6;0;false;false;;;;;; -147460;2;1;false;false;127;0;85;;; -147462;1;0;false;false;;;;;; -147463;16;0;false;false;0;0;0;;; -147479;1;0;false;false;;;;;; -147480;1;0;false;false;0;0;0;;; -147481;4;0;false;false;;;;;; -147485;6;0;false;false;0;0;0;;; -147491;1;0;false;false;;;;;; -147492;1;0;false;false;0;0;0;;; -147493;1;0;false;false;;;;;; -147494;42;0;false;false;0;0;0;;; -147536;1;0;false;false;;;;;; -147537;8;0;false;false;0;0;0;;; -147545;4;0;false;false;;;;;; -147549;2;1;false;false;127;0;85;;; -147551;1;0;false;false;;;;;; -147552;7;0;false;false;0;0;0;;; -147559;1;0;false;false;;;;;; -147560;2;0;false;false;0;0;0;;; -147562;1;0;false;false;;;;;; -147563;4;1;false;false;127;0;85;;; -147567;1;0;false;false;0;0;0;;; -147568;1;0;false;false;;;;;; -147569;6;1;false;false;127;0;85;;; -147575;1;0;false;false;;;;;; -147576;3;1;false;false;127;0;85;;; -147579;1;0;false;false;;;;;; -147580;14;0;false;false;0;0;0;;; -147594;4;0;false;false;;;;;; -147598;62;0;false;false;63;127;95;;; -147660;2;0;false;false;;;;;; -147662;64;0;false;false;63;127;95;;; -147726;2;0;false;false;;;;;; -147728;32;0;false;false;63;127;95;;; -147760;2;0;false;false;;;;;; -147762;2;1;false;false;127;0;85;;; -147764;1;0;false;false;;;;;; -147765;14;0;false;false;0;0;0;;; -147779;1;0;false;false;;;;;; -147780;2;0;false;false;0;0;0;;; -147782;1;0;false;false;;;;;; -147783;2;0;false;false;0;0;0;;; -147785;1;0;false;false;;;;;; -147786;1;0;false;false;0;0;0;;; -147787;5;0;false;false;;;;;; -147792;10;0;false;false;0;0;0;;; -147802;1;0;false;false;;;;;; -147803;5;0;false;false;0;0;0;;; -147808;1;0;false;false;;;;;; -147809;1;0;false;false;0;0;0;;; -147810;1;0;false;false;;;;;; -147811;10;0;false;false;0;0;0;;; -147821;5;0;false;false;;;;;; -147826;2;1;false;false;127;0;85;;; -147828;1;0;false;false;;;;;; -147829;12;0;false;false;0;0;0;;; -147841;1;0;false;false;;;;;; -147842;1;0;false;false;0;0;0;;; -147843;1;0;false;false;;;;;; -147844;6;0;false;false;0;0;0;;; -147850;1;0;false;false;;;;;; -147851;1;0;false;false;0;0;0;;; -147852;6;0;false;false;;;;;; -147858;10;0;false;false;0;0;0;;; -147868;1;0;false;false;;;;;; -147869;8;0;false;false;0;0;0;;; -147877;1;0;false;false;;;;;; -147878;1;0;false;false;0;0;0;;; -147879;1;0;false;false;;;;;; -147880;30;0;false;false;0;0;0;;; -147910;6;0;false;false;;;;;; -147916;15;0;false;false;0;0;0;;; -147931;1;0;false;false;;;;;; -147932;1;0;false;false;0;0;0;;; -147933;1;0;false;false;;;;;; -147934;15;0;false;false;0;0;0;;; -147949;1;0;false;false;;;;;; -147950;1;0;false;false;0;0;0;;; -147951;1;0;false;false;;;;;; -147952;6;0;false;false;0;0;0;;; -147958;1;0;false;false;;;;;; -147959;1;0;false;false;0;0;0;;; -147960;1;0;false;false;;;;;; -147961;16;0;false;false;0;0;0;;; -147977;6;0;false;false;;;;;; -147983;14;0;false;false;0;0;0;;; -147997;1;0;false;false;;;;;; -147998;1;0;false;false;0;0;0;;; -147999;1;0;false;false;;;;;; -148000;6;0;false;false;0;0;0;;; -148006;6;0;false;false;;;;;; -148012;9;0;false;false;0;0;0;;; -148021;1;0;false;false;;;;;; -148022;1;0;false;false;0;0;0;;; -148023;1;0;false;false;;;;;; -148024;9;0;false;false;0;0;0;;; -148033;5;0;false;false;;;;;; -148038;1;0;false;false;0;0;0;;; -148039;5;0;false;false;;;;;; -148044;2;1;false;false;127;0;85;;; -148046;1;0;false;false;;;;;; -148047;12;0;false;false;0;0;0;;; -148059;1;0;false;false;;;;;; -148060;1;0;false;false;0;0;0;;; -148061;1;0;false;false;;;;;; -148062;12;0;false;false;0;0;0;;; -148074;1;0;false;false;;;;;; -148075;1;0;false;false;0;0;0;;; -148076;1;0;false;false;;;;;; -148077;6;0;false;false;0;0;0;;; -148083;1;0;false;false;;;;;; -148084;1;0;false;false;0;0;0;;; -148085;1;0;false;false;;;;;; -148086;8;0;false;false;0;0;0;;; -148094;1;0;false;false;;;;;; -148095;1;0;false;false;0;0;0;;; -148096;6;0;false;false;;;;;; -148102;10;0;false;false;0;0;0;;; -148112;1;0;false;false;;;;;; -148113;8;0;false;false;0;0;0;;; -148121;1;0;false;false;;;;;; -148122;1;0;false;false;0;0;0;;; -148123;1;0;false;false;;;;;; -148124;30;0;false;false;0;0;0;;; -148154;6;0;false;false;;;;;; -148160;15;0;false;false;0;0;0;;; -148175;1;0;false;false;;;;;; -148176;1;0;false;false;0;0;0;;; -148177;1;0;false;false;;;;;; -148178;5;0;false;false;0;0;0;;; -148183;1;0;false;false;;;;;; -148184;1;0;false;false;0;0;0;;; -148185;1;0;false;false;;;;;; -148186;6;0;false;false;0;0;0;;; -148192;1;0;false;false;;;;;; -148193;1;0;false;false;0;0;0;;; -148194;1;0;false;false;;;;;; -148195;15;0;false;false;0;0;0;;; -148210;6;0;false;false;;;;;; -148216;9;0;false;false;0;0;0;;; -148225;1;0;false;false;;;;;; -148226;1;0;false;false;0;0;0;;; -148227;1;0;false;false;;;;;; -148228;9;0;false;false;0;0;0;;; -148237;5;0;false;false;;;;;; -148242;1;0;false;false;0;0;0;;; -148243;4;0;false;false;;;;;; -148247;1;0;false;false;0;0;0;;; -148248;1;0;false;false;;;;;; -148249;4;1;false;false;127;0;85;;; -148253;1;0;false;false;;;;;; -148254;2;1;false;false;127;0;85;;; -148256;1;0;false;false;;;;;; -148257;14;0;false;false;0;0;0;;; -148271;1;0;false;false;;;;;; -148272;1;0;false;false;0;0;0;;; -148273;1;0;false;false;;;;;; -148274;2;0;false;false;0;0;0;;; -148276;1;0;false;false;;;;;; -148277;1;0;false;false;0;0;0;;; -148278;5;0;false;false;;;;;; -148283;10;0;false;false;0;0;0;;; -148293;1;0;false;false;;;;;; -148294;5;0;false;false;0;0;0;;; -148299;1;0;false;false;;;;;; -148300;1;0;false;false;0;0;0;;; -148301;1;0;false;false;;;;;; -148302;10;0;false;false;0;0;0;;; -148312;5;0;false;false;;;;;; -148317;2;1;false;false;127;0;85;;; -148319;1;0;false;false;;;;;; -148320;12;0;false;false;0;0;0;;; -148332;1;0;false;false;;;;;; -148333;1;0;false;false;0;0;0;;; -148334;1;0;false;false;;;;;; -148335;6;0;false;false;0;0;0;;; -148341;1;0;false;false;;;;;; -148342;1;0;false;false;0;0;0;;; -148343;6;0;false;false;;;;;; -148349;10;0;false;false;0;0;0;;; -148359;1;0;false;false;;;;;; -148360;8;0;false;false;0;0;0;;; -148368;1;0;false;false;;;;;; -148369;1;0;false;false;0;0;0;;; -148370;1;0;false;false;;;;;; -148371;30;0;false;false;0;0;0;;; -148401;6;0;false;false;;;;;; -148407;15;0;false;false;0;0;0;;; -148422;1;0;false;false;;;;;; -148423;1;0;false;false;0;0;0;;; -148424;1;0;false;false;;;;;; -148425;15;0;false;false;0;0;0;;; -148440;1;0;false;false;;;;;; -148441;1;0;false;false;0;0;0;;; -148442;1;0;false;false;;;;;; -148443;6;0;false;false;0;0;0;;; -148449;1;0;false;false;;;;;; -148450;1;0;false;false;0;0;0;;; -148451;1;0;false;false;;;;;; -148452;16;0;false;false;0;0;0;;; -148468;6;0;false;false;;;;;; -148474;14;0;false;false;0;0;0;;; -148488;1;0;false;false;;;;;; -148489;1;0;false;false;0;0;0;;; -148490;1;0;false;false;;;;;; -148491;6;0;false;false;0;0;0;;; -148497;6;0;false;false;;;;;; -148503;9;0;false;false;0;0;0;;; -148512;1;0;false;false;;;;;; -148513;1;0;false;false;0;0;0;;; -148514;1;0;false;false;;;;;; -148515;9;0;false;false;0;0;0;;; -148524;5;0;false;false;;;;;; -148529;1;0;false;false;0;0;0;;; -148530;5;0;false;false;;;;;; -148535;5;0;false;false;0;0;0;;; -148540;1;0;false;false;;;;;; -148541;1;0;false;false;0;0;0;;; -148542;1;0;false;false;;;;;; -148543;20;0;false;false;0;0;0;;; -148563;1;0;false;false;;;;;; -148564;1;0;false;false;0;0;0;;; -148565;1;0;false;false;;;;;; -148566;3;0;false;false;0;0;0;;; -148569;5;0;false;false;;;;;; -148574;2;1;false;false;127;0;85;;; -148576;1;0;false;false;;;;;; -148577;12;0;false;false;0;0;0;;; -148589;1;0;false;false;;;;;; -148590;1;0;false;false;0;0;0;;; -148591;1;0;false;false;;;;;; -148592;12;0;false;false;0;0;0;;; -148604;1;0;false;false;;;;;; -148605;1;0;false;false;0;0;0;;; -148606;1;0;false;false;;;;;; -148607;6;0;false;false;0;0;0;;; -148613;1;0;false;false;;;;;; -148614;1;0;false;false;0;0;0;;; -148615;1;0;false;false;;;;;; -148616;8;0;false;false;0;0;0;;; -148624;1;0;false;false;;;;;; -148625;1;0;false;false;0;0;0;;; -148626;6;0;false;false;;;;;; -148632;10;0;false;false;0;0;0;;; -148642;1;0;false;false;;;;;; -148643;8;0;false;false;0;0;0;;; -148651;1;0;false;false;;;;;; -148652;1;0;false;false;0;0;0;;; -148653;1;0;false;false;;;;;; -148654;32;0;false;false;0;0;0;;; -148686;1;0;false;false;;;;;; -148687;1;0;false;false;0;0;0;;; -148688;1;0;false;false;;;;;; -148689;11;0;false;false;0;0;0;;; -148700;6;0;false;false;;;;;; -148706;15;0;false;false;0;0;0;;; -148721;1;0;false;false;;;;;; -148722;1;0;false;false;0;0;0;;; -148723;1;0;false;false;;;;;; -148724;5;0;false;false;0;0;0;;; -148729;1;0;false;false;;;;;; -148730;1;0;false;false;0;0;0;;; -148731;1;0;false;false;;;;;; -148732;6;0;false;false;0;0;0;;; -148738;1;0;false;false;;;;;; -148739;1;0;false;false;0;0;0;;; -148740;1;0;false;false;;;;;; -148741;15;0;false;false;0;0;0;;; -148756;6;0;false;false;;;;;; -148762;20;0;false;false;0;0;0;;; -148782;1;0;false;false;;;;;; -148783;1;0;false;false;0;0;0;;; -148784;1;0;false;false;;;;;; -148785;2;0;false;false;0;0;0;;; -148787;1;0;false;false;;;;;; -148788;1;0;false;false;0;0;0;;; -148789;1;0;false;false;;;;;; -148790;9;0;false;false;0;0;0;;; -148799;5;0;false;false;;;;;; -148804;1;0;false;false;0;0;0;;; -148805;4;0;false;false;;;;;; -148809;1;0;false;false;0;0;0;;; -148810;3;0;false;false;;;;;; -148813;1;0;false;false;0;0;0;;; -148814;3;0;false;false;;;;;; -148817;4;1;false;false;127;0;85;;; -148821;1;0;false;false;;;;;; -148822;1;0;false;false;0;0;0;;; -148823;4;0;false;false;;;;;; -148827;6;0;false;false;0;0;0;;; -148833;1;0;false;false;;;;;; -148834;1;0;false;false;0;0;0;;; -148835;1;0;false;false;;;;;; -148836;3;1;false;false;127;0;85;;; -148839;1;0;false;false;;;;;; -148840;14;0;false;false;0;0;0;;; -148854;3;0;false;false;;;;;; -148857;1;0;false;false;0;0;0;;; -148858;3;0;false;false;;;;;; -148861;6;1;false;false;127;0;85;;; -148867;1;0;false;false;;;;;; -148868;7;0;false;false;0;0;0;;; -148875;2;0;false;false;;;;;; -148877;1;0;false;false;0;0;0;;; -148878;2;0;false;false;;;;;; -148880;3;0;false;false;63;95;191;;; -148883;3;0;false;false;;;;;; -148886;1;0;false;false;63;95;191;;; -148887;1;0;false;false;;;;;; -148888;7;0;false;false;63;95;191;;; -148895;1;0;false;false;;;;;; -148896;3;0;false;false;63;95;191;;; -148899;1;0;false;false;;;;;; -148900;3;0;false;false;63;95;191;;; -148903;1;0;false;false;;;;;; -148904;5;0;false;false;63;95;191;;; -148909;1;0;false;false;;;;;; -148910;8;0;false;false;63;95;191;;; -148918;1;0;false;false;;;;;; -148919;2;0;false;false;63;95;191;;; -148921;1;0;false;false;;;;;; -148922;11;0;false;false;63;95;191;;; -148933;3;0;false;false;;;;;; -148936;1;0;false;false;63;95;191;;; -148937;3;0;false;false;;;;;; -148940;1;0;false;false;63;95;191;;; -148941;1;0;false;false;;;;;; -148942;8;1;false;false;127;159;191;;; -148950;3;0;false;false;63;95;191;;; -148953;1;0;false;false;;;;;; -148954;5;0;false;false;63;95;191;;; -148959;1;0;false;false;;;;;; -148960;8;0;false;false;63;95;191;;; -148968;1;0;false;false;;;;;; -148969;2;0;false;false;63;95;191;;; -148971;1;0;false;false;;;;;; -148972;10;0;false;false;63;95;191;;; -148982;3;0;false;false;;;;;; -148985;1;0;false;false;63;95;191;;; -148986;1;0;false;false;;;;;; -148987;11;1;false;false;127;159;191;;; -148998;12;0;false;false;63;95;191;;; -149010;1;0;false;false;;;;;; -149011;4;0;false;false;127;127;159;;; -149015;3;0;false;false;;;;;; -149018;1;0;false;false;63;95;191;;; -149019;4;0;false;false;;;;;; -149023;4;0;false;false;127;127;159;;; -149027;21;0;false;false;63;95;191;;; -149048;1;0;false;false;;;;;; -149049;1;0;false;false;127;127;159;;; -149050;1;0;false;false;;;;;; -149051;2;0;false;false;63;95;191;;; -149053;1;0;false;false;;;;;; -149054;3;0;false;false;63;95;191;;; -149057;1;0;false;false;;;;;; -149058;8;0;false;false;63;95;191;;; -149066;1;0;false;false;;;;;; -149067;3;0;false;false;63;95;191;;; -149070;1;0;false;false;;;;;; -149071;4;0;false;false;63;95;191;;; -149075;1;0;false;false;;;;;; -149076;8;0;false;false;63;95;191;;; -149084;5;0;false;false;127;127;159;;; -149089;3;0;false;false;;;;;; -149092;1;0;false;false;63;95;191;;; -149093;4;0;false;false;;;;;; -149097;4;0;false;false;127;127;159;;; -149101;27;0;false;false;63;95;191;;; -149128;1;0;false;false;;;;;; -149129;1;0;false;false;127;127;159;;; -149130;1;0;false;false;;;;;; -149131;2;0;false;false;63;95;191;;; -149133;1;0;false;false;;;;;; -149134;3;0;false;false;63;95;191;;; -149137;1;0;false;false;;;;;; -149138;6;0;false;false;63;95;191;;; -149144;1;0;false;false;;;;;; -149145;4;0;false;false;63;95;191;;; -149149;1;0;false;false;;;;;; -149150;3;0;false;false;63;95;191;;; -149153;1;0;false;false;;;;;; -149154;6;0;false;false;63;95;191;;; -149160;1;0;false;false;;;;;; -149161;4;0;false;false;63;95;191;;; -149165;1;0;false;false;;;;;; -149166;7;0;false;false;63;95;191;;; -149173;1;0;false;false;;;;;; -149174;3;0;false;false;63;95;191;;; -149177;1;0;false;false;;;;;; -149178;8;0;false;false;63;95;191;;; -149186;5;0;false;false;127;127;159;;; -149191;3;0;false;false;;;;;; -149194;1;0;false;false;63;95;191;;; -149195;1;0;false;false;;;;;; -149196;5;0;false;false;127;127;159;;; -149201;3;0;false;false;;;;;; -149204;2;0;false;false;63;95;191;;; -149206;2;0;false;false;;;;;; -149208;6;1;false;false;127;0;85;;; -149214;1;0;false;false;;;;;; -149215;3;1;false;false;127;0;85;;; -149218;1;0;false;false;;;;;; -149219;9;0;false;false;0;0;0;;; -149228;1;0;false;false;;;;;; -149229;1;0;false;false;0;0;0;;; -149230;3;0;false;false;;;;;; -149233;14;0;false;false;0;0;0;;; -149247;3;0;false;false;;;;;; -149250;6;1;false;false;127;0;85;;; -149256;1;0;false;false;;;;;; -149257;10;0;false;false;0;0;0;;; -149267;2;0;false;false;;;;;; -149269;1;0;false;false;0;0;0;;; -149270;2;0;false;false;;;;;; -149272;3;0;false;false;63;95;191;;; -149275;3;0;false;false;;;;;; -149278;1;0;false;false;63;95;191;;; -149279;1;0;false;false;;;;;; -149280;7;0;false;false;63;95;191;;; -149287;1;0;false;false;;;;;; -149288;1;0;false;false;63;95;191;;; -149289;1;0;false;false;;;;;; -149290;4;0;false;false;63;95;191;;; -149294;1;0;false;false;;;;;; -149295;2;0;false;false;63;95;191;;; -149297;1;0;false;false;;;;;; -149298;3;0;false;false;63;95;191;;; -149301;1;0;false;false;;;;;; -149302;6;0;false;false;63;95;191;;; -149308;1;0;false;false;;;;;; -149309;8;0;false;false;63;95;191;;; -149317;3;0;false;false;;;;;; -149320;1;0;false;false;63;95;191;;; -149321;1;0;false;false;;;;;; -149322;3;0;false;false;127;127;159;;; -149325;3;0;false;false;;;;;; -149328;1;0;false;false;63;95;191;;; -149329;3;0;false;false;;;;;; -149332;1;0;false;false;63;95;191;;; -149333;1;0;false;false;;;;;; -149334;8;1;false;false;127;159;191;;; -149342;4;0;false;false;63;95;191;;; -149346;1;0;false;false;;;;;; -149347;2;0;false;false;63;95;191;;; -149349;1;0;false;false;;;;;; -149350;3;0;false;false;63;95;191;;; -149353;1;0;false;false;;;;;; -149354;6;0;false;false;63;95;191;;; -149360;1;0;false;false;;;;;; -149361;7;0;false;false;63;95;191;;; -149368;3;0;false;false;;;;;; -149371;1;0;false;false;63;95;191;;; -149372;1;0;false;false;;;;;; -149373;11;1;false;false;127;159;191;;; -149384;12;0;false;false;63;95;191;;; -149396;1;0;false;false;;;;;; -149397;4;0;false;false;127;127;159;;; -149401;3;0;false;false;;;;;; -149404;1;0;false;false;63;95;191;;; -149405;4;0;false;false;;;;;; -149409;4;0;false;false;127;127;159;;; -149413;21;0;false;false;63;95;191;;; -149434;1;0;false;false;;;;;; -149435;1;0;false;false;127;127;159;;; -149436;1;0;false;false;;;;;; -149437;2;0;false;false;63;95;191;;; -149439;1;0;false;false;;;;;; -149440;3;0;false;false;63;95;191;;; -149443;1;0;false;false;;;;;; -149444;8;0;false;false;63;95;191;;; -149452;1;0;false;false;;;;;; -149453;3;0;false;false;63;95;191;;; -149456;1;0;false;false;;;;;; -149457;4;0;false;false;63;95;191;;; -149461;1;0;false;false;;;;;; -149462;8;0;false;false;63;95;191;;; -149470;5;0;false;false;127;127;159;;; -149475;3;0;false;false;;;;;; -149478;1;0;false;false;63;95;191;;; -149479;4;0;false;false;;;;;; -149483;4;0;false;false;127;127;159;;; -149487;27;0;false;false;63;95;191;;; -149514;1;0;false;false;;;;;; -149515;1;0;false;false;127;127;159;;; -149516;1;0;false;false;;;;;; -149517;2;0;false;false;63;95;191;;; -149519;1;0;false;false;;;;;; -149520;3;0;false;false;63;95;191;;; -149523;1;0;false;false;;;;;; -149524;6;0;false;false;63;95;191;;; -149530;1;0;false;false;;;;;; -149531;4;0;false;false;63;95;191;;; -149535;1;0;false;false;;;;;; -149536;3;0;false;false;63;95;191;;; -149539;1;0;false;false;;;;;; -149540;6;0;false;false;63;95;191;;; -149546;1;0;false;false;;;;;; -149547;4;0;false;false;63;95;191;;; -149551;1;0;false;false;;;;;; -149552;7;0;false;false;63;95;191;;; -149559;1;0;false;false;;;;;; -149560;3;0;false;false;63;95;191;;; -149563;1;0;false;false;;;;;; -149564;8;0;false;false;63;95;191;;; -149572;5;0;false;false;127;127;159;;; -149577;3;0;false;false;;;;;; -149580;1;0;false;false;63;95;191;;; -149581;1;0;false;false;;;;;; -149582;5;0;false;false;127;127;159;;; -149587;3;0;false;false;;;;;; -149590;2;0;false;false;63;95;191;;; -149592;2;0;false;false;;;;;; -149594;6;1;false;false;127;0;85;;; -149600;1;0;false;false;;;;;; -149601;6;0;false;false;0;0;0;;; -149607;1;0;false;false;;;;;; -149608;9;0;false;false;0;0;0;;; -149617;1;0;false;false;;;;;; -149618;1;0;false;false;0;0;0;;; -149619;3;0;false;false;;;;;; -149622;14;0;false;false;0;0;0;;; -149636;3;0;false;false;;;;;; -149639;6;1;false;false;127;0;85;;; -149645;1;0;false;false;;;;;; -149646;23;0;false;false;0;0;0;;; -149669;1;0;false;false;;;;;; -149670;16;0;false;false;0;0;0;;; -149686;2;0;false;false;;;;;; -149688;1;0;false;false;0;0;0;;; -149689;3;0;false;false;;;;;; -149692;3;0;false;false;63;95;191;;; -149695;3;0;false;false;;;;;; -149698;1;0;false;false;63;95;191;;; -149699;1;0;false;false;;;;;; -149700;7;0;false;false;63;95;191;;; -149707;1;0;false;false;;;;;; -149708;3;0;false;false;63;95;191;;; -149711;1;0;false;false;;;;;; -149712;6;0;false;false;63;95;191;;; -149718;1;0;false;false;;;;;; -149719;7;0;false;false;63;95;191;;; -149726;1;0;false;false;;;;;; -149727;7;0;false;false;63;95;191;;; -149734;1;0;false;false;;;;;; -149735;3;0;false;false;63;95;191;;; -149738;1;0;false;false;;;;;; -149739;3;0;false;false;63;95;191;;; -149742;1;0;false;false;;;;;; -149743;8;0;false;false;63;95;191;;; -149751;3;0;false;false;;;;;; -149754;1;0;false;false;63;95;191;;; -149755;1;0;false;false;;;;;; -149756;3;0;false;false;127;127;159;;; -149759;3;0;false;false;;;;;; -149762;1;0;false;false;63;95;191;;; -149763;3;0;false;false;;;;;; -149766;1;0;false;false;63;95;191;;; -149767;1;0;false;false;;;;;; -149768;7;1;false;false;127;159;191;;; -149775;5;0;false;false;63;95;191;;; -149780;1;0;false;false;;;;;; -149781;6;0;false;false;63;95;191;;; -149787;1;0;false;false;;;;;; -149788;2;0;false;false;63;95;191;;; -149790;1;0;false;false;;;;;; -149791;3;0;false;false;63;95;191;;; -149794;1;0;false;false;;;;;; -149795;5;0;false;false;63;95;191;;; -149800;1;0;false;false;;;;;; -149801;9;0;false;false;63;95;191;;; -149810;1;0;false;false;;;;;; -149811;2;0;false;false;63;95;191;;; -149813;1;0;false;false;;;;;; -149814;3;0;false;false;63;95;191;;; -149817;1;0;false;false;;;;;; -149818;8;0;false;false;63;95;191;;; -149826;1;0;false;false;;;;;; -149827;6;0;false;false;63;95;191;;; -149833;3;0;false;false;;;;;; -149836;1;0;false;false;63;95;191;;; -149837;1;0;false;false;;;;;; -149838;7;1;false;false;127;159;191;;; -149845;3;0;false;false;63;95;191;;; -149848;1;0;false;false;;;;;; -149849;6;0;false;false;63;95;191;;; -149855;1;0;false;false;;;;;; -149856;2;0;false;false;63;95;191;;; -149858;1;0;false;false;;;;;; -149859;3;0;false;false;63;95;191;;; -149862;1;0;false;false;;;;;; -149863;4;0;false;false;63;95;191;;; -149867;1;0;false;false;;;;;; -149868;9;0;false;false;63;95;191;;; -149877;1;0;false;false;;;;;; -149878;2;0;false;false;63;95;191;;; -149880;1;0;false;false;;;;;; -149881;3;0;false;false;63;95;191;;; -149884;1;0;false;false;;;;;; -149885;8;0;false;false;63;95;191;;; -149893;1;0;false;false;;;;;; -149894;6;0;false;false;63;95;191;;; -149900;4;0;false;false;;;;;; -149904;1;0;false;false;63;95;191;;; -149905;1;0;false;false;;;;;; -149906;8;1;false;false;127;159;191;;; -149914;6;0;false;false;63;95;191;;; -149920;1;0;false;false;;;;;; -149921;7;0;false;false;63;95;191;;; -149928;1;0;false;false;;;;;; -149929;8;0;false;false;63;95;191;;; -149937;1;0;false;false;;;;;; -149938;2;0;false;false;63;95;191;;; -149940;1;0;false;false;;;;;; -149941;5;0;false;false;63;95;191;;; -149946;1;0;false;false;;;;;; -149947;3;0;false;false;63;95;191;;; -149950;1;0;false;false;;;;;; -149951;6;0;false;false;63;95;191;;; -149957;1;0;false;false;;;;;; -149958;2;0;false;false;63;95;191;;; -149960;1;0;false;false;;;;;; -149961;3;0;false;false;63;95;191;;; -149964;3;0;false;false;;;;;; -149967;1;0;false;false;63;95;191;;; -149968;1;0;false;false;;;;;; -149969;5;1;false;false;127;159;191;;; -149974;22;0;false;false;63;95;191;;; -149996;3;0;false;false;;;;;; -149999;1;0;false;false;63;95;191;;; -150000;1;0;false;false;;;;;; -150001;11;1;false;false;127;159;191;;; -150012;12;0;false;false;63;95;191;;; -150024;1;0;false;false;;;;;; -150025;4;0;false;false;127;127;159;;; -150029;3;0;false;false;;;;;; -150032;1;0;false;false;63;95;191;;; -150033;4;0;false;false;;;;;; -150037;4;0;false;false;127;127;159;;; -150041;21;0;false;false;63;95;191;;; -150062;1;0;false;false;;;;;; -150063;1;0;false;false;127;127;159;;; -150064;1;0;false;false;;;;;; -150065;2;0;false;false;63;95;191;;; -150067;1;0;false;false;;;;;; -150068;3;0;false;false;63;95;191;;; -150071;1;0;false;false;;;;;; -150072;8;0;false;false;63;95;191;;; -150080;1;0;false;false;;;;;; -150081;3;0;false;false;63;95;191;;; -150084;1;0;false;false;;;;;; -150085;4;0;false;false;63;95;191;;; -150089;1;0;false;false;;;;;; -150090;8;0;false;false;63;95;191;;; -150098;5;0;false;false;127;127;159;;; -150103;3;0;false;false;;;;;; -150106;1;0;false;false;63;95;191;;; -150107;4;0;false;false;;;;;; -150111;4;0;false;false;127;127;159;;; -150115;27;0;false;false;63;95;191;;; -150142;1;0;false;false;;;;;; -150143;1;0;false;false;127;127;159;;; -150144;1;0;false;false;;;;;; -150145;2;0;false;false;63;95;191;;; -150147;1;0;false;false;;;;;; -150148;3;0;false;false;63;95;191;;; -150151;1;0;false;false;;;;;; -150152;6;0;false;false;63;95;191;;; -150158;1;0;false;false;;;;;; -150159;4;0;false;false;63;95;191;;; -150163;1;0;false;false;;;;;; -150164;3;0;false;false;63;95;191;;; -150167;1;0;false;false;;;;;; -150168;6;0;false;false;63;95;191;;; -150174;1;0;false;false;;;;;; -150175;4;0;false;false;63;95;191;;; -150179;1;0;false;false;;;;;; -150180;7;0;false;false;63;95;191;;; -150187;1;0;false;false;;;;;; -150188;3;0;false;false;63;95;191;;; -150191;1;0;false;false;;;;;; -150192;8;0;false;false;63;95;191;;; -150200;5;0;false;false;127;127;159;;; -150205;3;0;false;false;;;;;; -150208;1;0;false;false;63;95;191;;; -150209;1;0;false;false;;;;;; -150210;5;0;false;false;127;127;159;;; -150215;3;0;false;false;;;;;; -150218;1;0;false;false;63;95;191;;; -150219;1;0;false;false;;;;;; -150220;11;1;false;false;127;159;191;;; -150231;24;0;false;false;63;95;191;;; -150255;1;0;false;false;;;;;; -150256;4;0;false;false;127;127;159;;; -150260;3;0;false;false;;;;;; -150263;1;0;false;false;63;95;191;;; -150264;3;0;false;false;;;;;; -150267;4;0;false;false;127;127;159;;; -150271;19;0;false;false;63;95;191;;; -150290;1;0;false;false;;;;;; -150291;4;0;false;false;63;95;191;;; -150295;1;0;false;false;;;;;; -150296;5;0;false;false;63;95;191;;; -150301;1;0;false;false;;;;;; -150302;6;0;false;false;63;95;191;;; -150308;1;0;false;false;;;;;; -150309;3;0;false;false;63;95;191;;; -150312;1;0;false;false;;;;;; -150313;3;0;false;false;63;95;191;;; -150316;1;0;false;false;;;;;; -150317;7;0;false;false;63;95;191;;; -150324;1;0;false;false;;;;;; -150325;3;0;false;false;63;95;191;;; -150328;1;0;false;false;;;;;; -150329;6;0;false;false;63;95;191;;; -150335;1;0;false;false;;;;;; -150336;7;0;false;false;63;95;191;;; -150343;5;0;false;false;127;127;159;;; -150348;4;0;false;false;;;;;; -150352;1;0;false;false;63;95;191;;; -150353;1;0;false;false;;;;;; -150354;5;0;false;false;127;127;159;;; -150359;3;0;false;false;;;;;; -150362;2;0;false;false;63;95;191;;; -150364;2;0;false;false;;;;;; -150366;6;1;false;false;127;0;85;;; -150372;1;0;false;false;;;;;; -150373;6;0;false;false;0;0;0;;; -150379;1;0;false;false;;;;;; -150380;8;0;false;false;0;0;0;;; -150388;3;1;false;false;127;0;85;;; -150391;1;0;false;false;;;;;; -150392;6;0;false;false;0;0;0;;; -150398;1;0;false;false;;;;;; -150399;3;1;false;false;127;0;85;;; -150402;1;0;false;false;;;;;; -150403;4;0;false;false;0;0;0;;; -150407;1;0;false;false;;;;;; -150408;1;0;false;false;0;0;0;;; -150409;3;0;false;false;;;;;; -150412;14;0;false;false;0;0;0;;; -150426;3;0;false;false;;;;;; -150429;3;1;false;false;127;0;85;;; -150432;1;0;false;false;;;;;; -150433;13;0;false;false;0;0;0;;; -150446;1;0;false;false;;;;;; -150447;1;0;false;false;0;0;0;;; -150448;1;0;false;false;;;;;; -150449;15;0;false;false;0;0;0;;; -150464;6;0;false;false;;;;;; -150470;2;1;false;false;127;0;85;;; -150472;1;0;false;false;;;;;; -150473;6;0;false;false;0;0;0;;; -150479;1;0;false;false;;;;;; -150480;1;0;false;false;0;0;0;;; -150481;1;0;false;false;;;;;; -150482;1;0;false;false;0;0;0;;; -150483;1;0;false;false;;;;;; -150484;2;0;false;false;0;0;0;;; -150486;1;0;false;false;;;;;; -150487;5;0;false;false;0;0;0;;; -150492;1;0;false;false;;;;;; -150493;2;0;false;false;0;0;0;;; -150495;1;0;false;false;;;;;; -150496;13;0;false;false;0;0;0;;; -150509;1;0;false;false;;;;;; -150510;2;0;false;false;0;0;0;;; -150512;1;0;false;false;;;;;; -150513;3;0;false;false;0;0;0;;; -150516;1;0;false;false;;;;;; -150517;1;0;false;false;0;0;0;;; -150518;1;0;false;false;;;;;; -150519;1;0;false;false;0;0;0;;; -150520;1;0;false;false;;;;;; -150521;2;0;false;false;0;0;0;;; -150523;1;0;false;false;;;;;; -150524;3;0;false;false;0;0;0;;; -150527;1;0;false;false;;;;;; -150528;2;0;false;false;0;0;0;;; -150530;1;0;false;false;;;;;; -150531;13;0;false;false;0;0;0;;; -150544;1;0;false;false;;;;;; -150545;2;0;false;false;0;0;0;;; -150547;1;0;false;false;;;;;; -150548;5;0;false;false;0;0;0;;; -150553;1;0;false;false;;;;;; -150554;1;0;false;false;0;0;0;;; -150555;1;0;false;false;;;;;; -150556;4;0;false;false;0;0;0;;; -150560;1;0;false;false;;;;;; -150561;1;0;false;false;0;0;0;;; -150562;4;0;false;false;;;;;; -150566;35;0;false;false;0;0;0;;; -150601;3;0;false;false;;;;;; -150604;1;0;false;false;0;0;0;;; -150605;4;0;false;false;;;;;; -150609;6;1;false;false;127;0;85;;; -150615;1;0;false;false;;;;;; -150616;27;0;false;false;0;0;0;;; -150643;1;0;false;false;;;;;; -150644;3;0;false;false;0;0;0;;; -150647;1;0;false;false;;;;;; -150648;1;0;false;false;0;0;0;;; -150649;1;0;false;false;;;;;; -150650;5;0;false;false;0;0;0;;; -150655;1;0;false;false;;;;;; -150656;1;0;false;false;0;0;0;;; -150657;1;0;false;false;;;;;; -150658;3;0;false;false;0;0;0;;; -150661;2;0;false;false;;;;;; -150663;1;0;false;false;0;0;0;;; -150664;2;0;false;false;;;;;; -150666;3;0;false;false;63;95;191;;; -150669;3;0;false;false;;;;;; -150672;1;0;false;false;63;95;191;;; -150673;1;0;false;false;;;;;; -150674;7;0;false;false;63;95;191;;; -150681;1;0;false;false;;;;;; -150682;3;0;false;false;63;95;191;;; -150685;1;0;false;false;;;;;; -150686;8;0;false;false;63;95;191;;; -150694;1;0;false;false;;;;;; -150695;8;0;false;false;63;95;191;;; -150703;1;0;false;false;;;;;; -150704;9;0;false;false;63;95;191;;; -150713;1;0;false;false;;;;;; -150714;4;0;false;false;63;95;191;;; -150718;1;0;false;false;;;;;; -150719;8;0;false;false;63;95;191;;; -150727;1;0;false;false;;;;;; -150728;3;0;false;false;63;95;191;;; -150731;1;0;false;false;;;;;; -150732;10;0;false;false;63;95;191;;; -150742;1;0;false;false;;;;;; -150743;7;0;false;false;63;95;191;;; -150750;1;0;false;false;;;;;; -150751;3;0;false;false;63;95;191;;; -150754;1;0;false;false;;;;;; -150755;8;0;false;false;63;95;191;;; -150763;3;0;false;false;;;;;; -150766;1;0;false;false;63;95;191;;; -150767;1;0;false;false;;;;;; -150768;3;0;false;false;127;127;159;;; -150771;3;0;false;false;;;;;; -150774;1;0;false;false;63;95;191;;; -150775;3;0;false;false;;;;;; -150778;1;0;false;false;63;95;191;;; -150779;1;0;false;false;;;;;; -150780;7;1;false;false;127;159;191;;; -150787;5;0;false;false;63;95;191;;; -150792;1;0;false;false;;;;;; -150793;6;0;false;false;63;95;191;;; -150799;1;0;false;false;;;;;; -150800;2;0;false;false;63;95;191;;; -150802;1;0;false;false;;;;;; -150803;3;0;false;false;63;95;191;;; -150806;1;0;false;false;;;;;; -150807;5;0;false;false;63;95;191;;; -150812;1;0;false;false;;;;;; -150813;9;0;false;false;63;95;191;;; -150822;1;0;false;false;;;;;; -150823;8;0;false;false;63;95;191;;; -150831;1;0;false;false;;;;;; -150832;2;0;false;false;63;95;191;;; -150834;1;0;false;false;;;;;; -150835;3;0;false;false;63;95;191;;; -150838;1;0;false;false;;;;;; -150839;8;0;false;false;63;95;191;;; -150847;1;0;false;false;;;;;; -150848;3;0;false;false;63;95;191;;; -150851;3;0;false;false;;;;;; -150854;1;0;false;false;63;95;191;;; -150855;1;0;false;false;;;;;; -150856;7;1;false;false;127;159;191;;; -150863;3;0;false;false;63;95;191;;; -150866;1;0;false;false;;;;;; -150867;6;0;false;false;63;95;191;;; -150873;1;0;false;false;;;;;; -150874;2;0;false;false;63;95;191;;; -150876;1;0;false;false;;;;;; -150877;3;0;false;false;63;95;191;;; -150880;1;0;false;false;;;;;; -150881;4;0;false;false;63;95;191;;; -150885;1;0;false;false;;;;;; -150886;9;0;false;false;63;95;191;;; -150895;1;0;false;false;;;;;; -150896;8;0;false;false;63;95;191;;; -150904;1;0;false;false;;;;;; -150905;2;0;false;false;63;95;191;;; -150907;1;0;false;false;;;;;; -150908;3;0;false;false;63;95;191;;; -150911;1;0;false;false;;;;;; -150912;8;0;false;false;63;95;191;;; -150920;1;0;false;false;;;;;; -150921;3;0;false;false;63;95;191;;; -150924;4;0;false;false;;;;;; -150928;1;0;false;false;63;95;191;;; -150929;1;0;false;false;;;;;; -150930;8;1;false;false;127;159;191;;; -150938;8;0;false;false;63;95;191;;; -150946;1;0;false;false;;;;;; -150947;3;0;false;false;63;95;191;;; -150950;1;0;false;false;;;;;; -150951;2;0;false;false;63;95;191;;; -150953;1;0;false;false;;;;;; -150954;3;0;false;false;63;95;191;;; -150957;1;0;false;false;;;;;; -150958;4;0;false;false;63;95;191;;; -150962;1;0;false;false;;;;;; -150963;7;0;false;false;63;95;191;;; -150970;1;0;false;false;;;;;; -150971;5;0;false;false;63;95;191;;; -150976;1;0;false;false;;;;;; -150977;3;0;false;false;63;95;191;;; -150980;1;0;false;false;;;;;; -150981;3;0;false;false;63;95;191;;; -150984;3;0;false;false;;;;;; -150987;1;0;false;false;63;95;191;;; -150988;1;0;false;false;;;;;; -150989;11;1;false;false;127;159;191;;; -151000;12;0;false;false;63;95;191;;; -151012;1;0;false;false;;;;;; -151013;4;0;false;false;127;127;159;;; -151017;3;0;false;false;;;;;; -151020;1;0;false;false;63;95;191;;; -151021;4;0;false;false;;;;;; -151025;4;0;false;false;127;127;159;;; -151029;21;0;false;false;63;95;191;;; -151050;1;0;false;false;;;;;; -151051;1;0;false;false;127;127;159;;; -151052;1;0;false;false;;;;;; -151053;2;0;false;false;63;95;191;;; -151055;1;0;false;false;;;;;; -151056;3;0;false;false;63;95;191;;; -151059;1;0;false;false;;;;;; -151060;8;0;false;false;63;95;191;;; -151068;1;0;false;false;;;;;; -151069;3;0;false;false;63;95;191;;; -151072;1;0;false;false;;;;;; -151073;4;0;false;false;63;95;191;;; -151077;1;0;false;false;;;;;; -151078;8;0;false;false;63;95;191;;; -151086;5;0;false;false;127;127;159;;; -151091;3;0;false;false;;;;;; -151094;1;0;false;false;63;95;191;;; -151095;4;0;false;false;;;;;; -151099;4;0;false;false;127;127;159;;; -151103;27;0;false;false;63;95;191;;; -151130;1;0;false;false;;;;;; -151131;1;0;false;false;127;127;159;;; -151132;1;0;false;false;;;;;; -151133;2;0;false;false;63;95;191;;; -151135;1;0;false;false;;;;;; -151136;3;0;false;false;63;95;191;;; -151139;1;0;false;false;;;;;; -151140;6;0;false;false;63;95;191;;; -151146;1;0;false;false;;;;;; -151147;4;0;false;false;63;95;191;;; -151151;1;0;false;false;;;;;; -151152;3;0;false;false;63;95;191;;; -151155;1;0;false;false;;;;;; -151156;6;0;false;false;63;95;191;;; -151162;1;0;false;false;;;;;; -151163;4;0;false;false;63;95;191;;; -151167;1;0;false;false;;;;;; -151168;7;0;false;false;63;95;191;;; -151175;1;0;false;false;;;;;; -151176;3;0;false;false;63;95;191;;; -151179;1;0;false;false;;;;;; -151180;8;0;false;false;63;95;191;;; -151188;5;0;false;false;127;127;159;;; -151193;3;0;false;false;;;;;; -151196;1;0;false;false;63;95;191;;; -151197;1;0;false;false;;;;;; -151198;5;0;false;false;127;127;159;;; -151203;3;0;false;false;;;;;; -151206;1;0;false;false;63;95;191;;; -151207;1;0;false;false;;;;;; -151208;11;1;false;false;127;159;191;;; -151219;24;0;false;false;63;95;191;;; -151243;1;0;false;false;;;;;; -151244;4;0;false;false;127;127;159;;; -151248;3;0;false;false;;;;;; -151251;1;0;false;false;63;95;191;;; -151252;3;0;false;false;;;;;; -151255;4;0;false;false;127;127;159;;; -151259;19;0;false;false;63;95;191;;; -151278;1;0;false;false;;;;;; -151279;4;0;false;false;63;95;191;;; -151283;1;0;false;false;;;;;; -151284;5;0;false;false;63;95;191;;; -151289;1;0;false;false;;;;;; -151290;6;0;false;false;63;95;191;;; -151296;1;0;false;false;;;;;; -151297;3;0;false;false;63;95;191;;; -151300;1;0;false;false;;;;;; -151301;3;0;false;false;63;95;191;;; -151304;1;0;false;false;;;;;; -151305;7;0;false;false;63;95;191;;; -151312;1;0;false;false;;;;;; -151313;3;0;false;false;63;95;191;;; -151316;1;0;false;false;;;;;; -151317;6;0;false;false;63;95;191;;; -151323;1;0;false;false;;;;;; -151324;7;0;false;false;63;95;191;;; -151331;5;0;false;false;127;127;159;;; -151336;4;0;false;false;;;;;; -151340;1;0;false;false;63;95;191;;; -151341;1;0;false;false;;;;;; -151342;5;0;false;false;127;127;159;;; -151347;3;0;false;false;;;;;; -151350;1;0;false;false;63;95;191;;; -151351;1;0;false;false;;;;;; -151352;7;1;false;false;127;159;191;;; -151359;3;0;false;false;63;95;191;;; -151362;3;0;false;false;;;;;; -151365;2;0;false;false;63;95;191;;; -151367;2;0;false;false;;;;;; -151369;6;1;false;false;127;0;85;;; -151375;1;0;false;false;;;;;; -151376;9;0;false;false;0;0;0;;; -151385;1;0;false;false;;;;;; -151386;14;0;false;false;0;0;0;;; -151400;3;1;false;false;127;0;85;;; -151403;1;0;false;false;;;;;; -151404;6;0;false;false;0;0;0;;; -151410;1;0;false;false;;;;;; -151411;3;1;false;false;127;0;85;;; -151414;1;0;false;false;;;;;; -151415;4;0;false;false;0;0;0;;; -151419;1;0;false;false;;;;;; -151420;1;0;false;false;0;0;0;;; -151421;3;0;false;false;;;;;; -151424;14;0;false;false;0;0;0;;; -151438;4;0;false;false;;;;;; -151442;3;1;false;false;127;0;85;;; -151445;1;0;false;false;;;;;; -151446;13;0;false;false;0;0;0;;; -151459;1;0;false;false;;;;;; -151460;1;0;false;false;0;0;0;;; -151461;1;0;false;false;;;;;; -151462;15;0;false;false;0;0;0;;; -151477;4;0;false;false;;;;;; -151481;2;1;false;false;127;0;85;;; -151483;1;0;false;false;;;;;; -151484;6;0;false;false;0;0;0;;; -151490;1;0;false;false;;;;;; -151491;1;0;false;false;0;0;0;;; -151492;1;0;false;false;;;;;; -151493;1;0;false;false;0;0;0;;; -151494;1;0;false;false;;;;;; -151495;2;0;false;false;0;0;0;;; -151497;1;0;false;false;;;;;; -151498;5;0;false;false;0;0;0;;; -151503;1;0;false;false;;;;;; -151504;2;0;false;false;0;0;0;;; -151506;1;0;false;false;;;;;; -151507;13;0;false;false;0;0;0;;; -151520;1;0;false;false;;;;;; -151521;2;0;false;false;0;0;0;;; -151523;1;0;false;false;;;;;; -151524;3;0;false;false;0;0;0;;; -151527;1;0;false;false;;;;;; -151528;1;0;false;false;0;0;0;;; -151529;1;0;false;false;;;;;; -151530;1;0;false;false;0;0;0;;; -151531;1;0;false;false;;;;;; -151532;2;0;false;false;0;0;0;;; -151534;1;0;false;false;;;;;; -151535;3;0;false;false;0;0;0;;; -151538;1;0;false;false;;;;;; -151539;2;0;false;false;0;0;0;;; -151541;1;0;false;false;;;;;; -151542;13;0;false;false;0;0;0;;; -151555;1;0;false;false;;;;;; -151556;2;0;false;false;0;0;0;;; -151558;1;0;false;false;;;;;; -151559;5;0;false;false;0;0;0;;; -151564;1;0;false;false;;;;;; -151565;1;0;false;false;0;0;0;;; -151566;1;0;false;false;;;;;; -151567;4;0;false;false;0;0;0;;; -151571;1;0;false;false;;;;;; -151572;1;0;false;false;0;0;0;;; -151573;4;0;false;false;;;;;; -151577;35;0;false;false;0;0;0;;; -151612;3;0;false;false;;;;;; -151615;1;0;false;false;0;0;0;;; -151616;3;0;false;false;;;;;; -151619;3;1;false;false;127;0;85;;; -151622;1;0;false;false;;;;;; -151623;9;0;false;false;0;0;0;;; -151632;1;0;false;false;;;;;; -151633;1;0;false;false;0;0;0;;; -151634;1;0;false;false;;;;;; -151635;31;0;false;false;0;0;0;;; -151666;3;0;false;false;;;;;; -151669;3;1;false;false;127;0;85;;; -151672;1;0;false;false;;;;;; -151673;7;0;false;false;0;0;0;;; -151680;1;0;false;false;;;;;; -151681;1;0;false;false;0;0;0;;; -151682;1;0;false;false;;;;;; -151683;29;0;false;false;0;0;0;;; -151712;3;0;false;false;;;;;; -151715;9;0;false;false;0;0;0;;; -151724;1;0;false;false;;;;;; -151725;5;0;false;false;0;0;0;;; -151730;3;0;false;false;;;;;; -151733;3;1;false;false;127;0;85;;; -151736;1;0;false;false;;;;;; -151737;1;0;false;false;0;0;0;;; -151738;1;0;false;false;;;;;; -151739;1;0;false;false;0;0;0;;; -151740;1;0;false;false;;;;;; -151741;9;0;false;false;0;0;0;;; -151750;1;0;false;false;;;;;; -151751;1;0;false;false;0;0;0;;; -151752;1;0;false;false;;;;;; -151753;11;0;false;false;0;0;0;;; -151764;3;0;false;false;;;;;; -151767;3;1;false;false;127;0;85;;; -151770;1;0;false;false;;;;;; -151771;6;0;false;false;0;0;0;;; -151777;1;0;false;false;;;;;; -151778;1;0;false;false;0;0;0;;; -151779;1;0;false;false;;;;;; -151780;8;0;false;false;0;0;0;;; -151788;1;0;false;false;;;;;; -151789;1;0;false;false;0;0;0;;; -151790;1;0;false;false;;;;;; -151791;2;0;false;false;0;0;0;;; -151793;1;0;false;false;;;;;; -151794;1;0;false;false;0;0;0;;; -151795;1;0;false;false;;;;;; -151796;10;0;false;false;0;0;0;;; -151806;1;0;false;false;;;;;; -151807;1;0;false;false;0;0;0;;; -151808;1;0;false;false;;;;;; -151809;2;0;false;false;0;0;0;;; -151811;3;0;false;false;;;;;; -151814;3;1;false;false;127;0;85;;; -151817;1;0;false;false;;;;;; -151818;4;0;false;false;0;0;0;;; -151822;1;0;false;false;;;;;; -151823;1;0;false;false;0;0;0;;; -151824;1;0;false;false;;;;;; -151825;11;0;false;false;0;0;0;;; -151836;1;0;false;false;;;;;; -151837;5;0;false;false;0;0;0;;; -151842;1;0;false;false;;;;;; -151843;1;0;false;false;0;0;0;;; -151844;1;0;false;false;;;;;; -151845;2;0;false;false;0;0;0;;; -151847;3;0;false;false;;;;;; -151850;3;1;false;false;127;0;85;;; -151853;1;0;false;false;;;;;; -151854;1;0;false;false;0;0;0;;; -151855;3;1;false;false;127;0;85;;; -151858;1;0;false;false;;;;;; -151859;1;0;false;false;0;0;0;;; -151860;1;0;false;false;;;;;; -151861;1;0;false;false;0;0;0;;; -151862;1;0;false;false;;;;;; -151863;10;0;false;false;0;0;0;;; -151873;1;0;false;false;;;;;; -151874;1;0;false;false;0;0;0;;; -151875;1;0;false;false;;;;;; -151876;2;0;false;false;0;0;0;;; -151878;1;0;false;false;;;;;; -151879;8;0;false;false;0;0;0;;; -151887;1;0;false;false;;;;;; -151888;4;0;false;false;0;0;0;;; -151892;1;0;false;false;;;;;; -151893;1;0;false;false;0;0;0;;; -151894;4;0;false;false;;;;;; -151898;3;1;false;false;127;0;85;;; -151901;1;0;false;false;;;;;; -151902;10;0;false;false;0;0;0;;; -151912;1;0;false;false;;;;;; -151913;1;0;false;false;0;0;0;;; -151914;1;0;false;false;;;;;; -151915;27;0;false;false;0;0;0;;; -151942;4;0;false;false;;;;;; -151946;6;0;false;false;0;0;0;;; -151952;1;0;false;false;;;;;; -151953;4;0;false;false;0;0;0;;; -151957;1;0;false;false;;;;;; -151958;1;0;false;false;0;0;0;;; -151959;1;0;false;false;;;;;; -151960;19;0;false;false;0;0;0;;; -151979;4;0;false;false;;;;;; -151983;10;0;false;false;0;0;0;;; -151993;1;0;false;false;;;;;; -151994;6;0;false;false;0;0;0;;; -152000;1;0;false;false;;;;;; -152001;1;0;false;false;0;0;0;;; -152002;1;0;false;false;;;;;; -152003;28;0;false;false;0;0;0;;; -152031;1;0;false;false;;;;;; -152032;12;0;false;false;0;0;0;;; -152044;4;0;false;false;;;;;; -152048;2;1;false;false;127;0;85;;; -152050;1;0;false;false;;;;;; -152051;2;0;false;false;0;0;0;;; -152053;1;0;false;false;;;;;; -152054;2;0;false;false;0;0;0;;; -152056;1;0;false;false;;;;;; -152057;9;0;false;false;0;0;0;;; -152066;1;0;false;false;;;;;; -152067;2;0;false;false;0;0;0;;; -152069;1;0;false;false;;;;;; -152070;1;0;false;false;0;0;0;;; -152071;1;0;false;false;;;;;; -152072;2;0;false;false;0;0;0;;; -152074;1;0;false;false;;;;;; -152075;8;0;false;false;0;0;0;;; -152083;1;0;false;false;;;;;; -152084;1;0;false;false;0;0;0;;; -152085;5;0;false;false;;;;;; -152090;4;0;false;false;0;0;0;;; -152094;1;0;false;false;;;;;; -152095;1;0;false;false;0;0;0;;; -152096;1;0;false;false;;;;;; -152097;22;0;false;false;0;0;0;;; -152119;1;0;false;false;;;;;; -152120;1;0;false;false;0;0;0;;; -152121;1;0;false;false;;;;;; -152122;11;0;false;false;0;0;0;;; -152133;1;0;false;false;;;;;; -152134;3;0;false;false;0;0;0;;; -152137;1;0;false;false;;;;;; -152138;1;0;false;false;0;0;0;;; -152139;1;0;false;false;;;;;; -152140;12;0;false;false;0;0;0;;; -152152;4;0;false;false;;;;;; -152156;1;0;false;false;0;0;0;;; -152157;1;0;false;false;;;;;; -152158;4;1;false;false;127;0;85;;; -152162;1;0;false;false;;;;;; -152163;2;1;false;false;127;0;85;;; -152165;1;0;false;false;;;;;; -152166;2;0;false;false;0;0;0;;; -152168;1;0;false;false;;;;;; -152169;2;0;false;false;0;0;0;;; -152171;1;0;false;false;;;;;; -152172;10;0;false;false;0;0;0;;; -152182;1;0;false;false;;;;;; -152183;1;0;false;false;0;0;0;;; -152184;5;0;false;false;;;;;; -152189;4;0;false;false;0;0;0;;; -152193;1;0;false;false;;;;;; -152194;1;0;false;false;0;0;0;;; -152195;1;0;false;false;;;;;; -152196;22;0;false;false;0;0;0;;; -152218;1;0;false;false;;;;;; -152219;1;0;false;false;0;0;0;;; -152220;1;0;false;false;;;;;; -152221;11;0;false;false;0;0;0;;; -152232;1;0;false;false;;;;;; -152233;15;0;false;false;0;0;0;;; -152248;4;0;false;false;;;;;; -152252;1;0;false;false;0;0;0;;; -152253;1;0;false;false;;;;;; -152254;4;1;false;false;127;0;85;;; -152258;1;0;false;false;;;;;; -152259;2;1;false;false;127;0;85;;; -152261;1;0;false;false;;;;;; -152262;2;0;false;false;0;0;0;;; -152264;1;0;false;false;;;;;; -152265;2;0;false;false;0;0;0;;; -152267;1;0;false;false;;;;;; -152268;8;0;false;false;0;0;0;;; -152276;1;0;false;false;;;;;; -152277;1;0;false;false;0;0;0;;; -152278;5;0;false;false;;;;;; -152283;4;0;false;false;0;0;0;;; -152287;1;0;false;false;;;;;; -152288;1;0;false;false;0;0;0;;; -152289;1;0;false;false;;;;;; -152290;19;0;false;false;0;0;0;;; -152309;1;0;false;false;;;;;; -152310;3;0;false;false;0;0;0;;; -152313;1;0;false;false;;;;;; -152314;1;0;false;false;0;0;0;;; -152315;1;0;false;false;;;;;; -152316;12;0;false;false;0;0;0;;; -152328;4;0;false;false;;;;;; -152332;1;0;false;false;0;0;0;;; -152333;1;0;false;false;;;;;; -152334;4;1;false;false;127;0;85;;; -152338;1;0;false;false;;;;;; -152339;1;0;false;false;0;0;0;;; -152340;5;0;false;false;;;;;; -152345;4;0;false;false;0;0;0;;; -152349;1;0;false;false;;;;;; -152350;1;0;false;false;0;0;0;;; -152351;1;0;false;false;;;;;; -152352;24;0;false;false;0;0;0;;; -152376;4;0;false;false;;;;;; -152380;1;0;false;false;0;0;0;;; -152381;4;0;false;false;;;;;; -152385;4;0;false;false;0;0;0;;; -152389;1;0;false;false;;;;;; -152390;1;0;false;false;0;0;0;;; -152391;1;0;false;false;;;;;; -152392;8;0;false;false;0;0;0;;; -152400;1;0;false;false;;;;;; -152401;6;0;false;false;0;0;0;;; -152407;1;0;false;false;;;;;; -152408;8;0;false;false;0;0;0;;; -152416;4;0;false;false;;;;;; -152420;5;0;false;false;0;0;0;;; -152425;1;0;false;false;;;;;; -152426;1;0;false;false;0;0;0;;; -152427;1;0;false;false;;;;;; -152428;8;0;false;false;0;0;0;;; -152436;1;0;false;false;;;;;; -152437;7;0;false;false;0;0;0;;; -152444;1;0;false;false;;;;;; -152445;6;0;false;false;0;0;0;;; -152451;1;0;false;false;;;;;; -152452;1;0;false;false;0;0;0;;; -152453;1;0;false;false;;;;;; -152454;12;0;false;false;0;0;0;;; -152466;4;0;false;false;;;;;; -152470;35;0;false;false;0;0;0;;; -152505;3;0;false;false;;;;;; -152508;1;0;false;false;0;0;0;;; -152509;3;0;false;false;;;;;; -152512;4;0;false;false;0;0;0;;; -152516;1;0;false;false;;;;;; -152517;1;0;false;false;0;0;0;;; -152518;1;0;false;false;;;;;; -152519;3;1;false;false;127;0;85;;; -152522;1;0;false;false;;;;;; -152523;9;0;false;false;0;0;0;;; -152532;1;0;false;false;;;;;; -152533;6;0;false;false;0;0;0;;; -152539;1;0;false;false;;;;;; -152540;2;0;false;false;0;0;0;;; -152542;1;0;false;false;;;;;; -152543;11;0;false;false;0;0;0;;; -152554;1;0;false;false;;;;;; -152555;8;0;false;false;0;0;0;;; -152563;3;0;false;false;;;;;; -152566;6;0;false;false;0;0;0;;; -152572;1;0;false;false;;;;;; -152573;2;0;false;false;0;0;0;;; -152575;1;0;false;false;;;;;; -152576;10;0;false;false;0;0;0;;; -152586;1;0;false;false;;;;;; -152587;1;0;false;false;0;0;0;;; -152588;1;0;false;false;;;;;; -152589;23;0;false;false;0;0;0;;; -152612;3;0;false;false;;;;;; -152615;6;0;false;false;0;0;0;;; -152621;1;0;false;false;;;;;; -152622;2;0;false;false;0;0;0;;; -152624;1;0;false;false;;;;;; -152625;21;0;false;false;0;0;0;;; -152646;3;0;false;false;;;;;; -152649;6;1;false;false;127;0;85;;; -152655;1;0;false;false;;;;;; -152656;5;0;false;false;0;0;0;;; -152661;2;0;false;false;;;;;; -152663;1;0;false;false;0;0;0;;; -152664;2;0;false;false;;;;;; -152666;3;0;false;false;63;95;191;;; -152669;3;0;false;false;;;;;; -152672;1;0;false;false;63;95;191;;; -152673;1;0;false;false;;;;;; -152674;7;0;false;false;63;95;191;;; -152681;1;0;false;false;;;;;; -152682;3;0;false;false;63;95;191;;; -152685;1;0;false;false;;;;;; -152686;6;0;false;false;63;95;191;;; -152692;1;0;false;false;;;;;; -152693;7;0;false;false;63;95;191;;; -152700;1;0;false;false;;;;;; -152701;8;0;false;false;63;95;191;;; -152709;1;0;false;false;;;;;; -152710;2;0;false;false;63;95;191;;; -152712;1;0;false;false;;;;;; -152713;5;0;false;false;63;95;191;;; -152718;1;0;false;false;;;;;; -152719;3;0;false;false;63;95;191;;; -152722;1;0;false;false;;;;;; -152723;6;0;false;false;63;95;191;;; -152729;1;0;false;false;;;;;; -152730;11;0;false;false;63;95;191;;; -152741;3;0;false;false;;;;;; -152744;1;0;false;false;63;95;191;;; -152745;1;0;false;false;;;;;; -152746;3;0;false;false;127;127;159;;; -152749;3;0;false;false;;;;;; -152752;1;0;false;false;63;95;191;;; -152753;3;0;false;false;;;;;; -152756;1;0;false;false;63;95;191;;; -152757;1;0;false;false;;;;;; -152758;7;1;false;false;127;159;191;;; -152765;5;0;false;false;63;95;191;;; -152770;1;0;false;false;;;;;; -152771;6;0;false;false;63;95;191;;; -152777;1;0;false;false;;;;;; -152778;2;0;false;false;63;95;191;;; -152780;1;0;false;false;;;;;; -152781;3;0;false;false;63;95;191;;; -152784;1;0;false;false;;;;;; -152785;5;0;false;false;63;95;191;;; -152790;1;0;false;false;;;;;; -152791;9;0;false;false;63;95;191;;; -152800;1;0;false;false;;;;;; -152801;2;0;false;false;63;95;191;;; -152803;1;0;false;false;;;;;; -152804;3;0;false;false;63;95;191;;; -152807;1;0;false;false;;;;;; -152808;8;0;false;false;63;95;191;;; -152816;1;0;false;false;;;;;; -152817;6;0;false;false;63;95;191;;; -152823;3;0;false;false;;;;;; -152826;1;0;false;false;63;95;191;;; -152827;1;0;false;false;;;;;; -152828;7;1;false;false;127;159;191;;; -152835;6;0;false;false;63;95;191;;; -152841;1;0;false;false;;;;;; -152842;6;0;false;false;63;95;191;;; -152848;1;0;false;false;;;;;; -152849;2;0;false;false;63;95;191;;; -152851;1;0;false;false;;;;;; -152852;10;0;false;false;63;95;191;;; -152862;1;0;false;false;;;;;; -152863;2;0;false;false;63;95;191;;; -152865;1;0;false;false;;;;;; -152866;6;0;false;false;63;95;191;;; -152872;4;0;false;false;;;;;; -152876;1;0;false;false;63;95;191;;; -152877;1;0;false;false;;;;;; -152878;8;1;false;false;127;159;191;;; -152886;6;0;false;false;63;95;191;;; -152892;1;0;false;false;;;;;; -152893;7;0;false;false;63;95;191;;; -152900;1;0;false;false;;;;;; -152901;8;0;false;false;63;95;191;;; -152909;1;0;false;false;;;;;; -152910;2;0;false;false;63;95;191;;; -152912;1;0;false;false;;;;;; -152913;5;0;false;false;63;95;191;;; -152918;1;0;false;false;;;;;; -152919;3;0;false;false;63;95;191;;; -152922;1;0;false;false;;;;;; -152923;9;0;false;false;63;95;191;;; -152932;1;0;false;false;;;;;; -152933;6;0;false;false;63;95;191;;; -152939;1;0;false;false;;;;;; -152940;11;0;false;false;63;95;191;;; -152951;3;0;false;false;;;;;; -152954;1;0;false;false;63;95;191;;; -152955;1;0;false;false;;;;;; -152956;11;1;false;false;127;159;191;;; -152967;12;0;false;false;63;95;191;;; -152979;1;0;false;false;;;;;; -152980;4;0;false;false;127;127;159;;; -152984;3;0;false;false;;;;;; -152987;1;0;false;false;63;95;191;;; -152988;4;0;false;false;;;;;; -152992;4;0;false;false;127;127;159;;; -152996;21;0;false;false;63;95;191;;; -153017;1;0;false;false;;;;;; -153018;1;0;false;false;127;127;159;;; -153019;1;0;false;false;;;;;; -153020;2;0;false;false;63;95;191;;; -153022;1;0;false;false;;;;;; -153023;3;0;false;false;63;95;191;;; -153026;1;0;false;false;;;;;; -153027;8;0;false;false;63;95;191;;; -153035;1;0;false;false;;;;;; -153036;3;0;false;false;63;95;191;;; -153039;1;0;false;false;;;;;; -153040;4;0;false;false;63;95;191;;; -153044;1;0;false;false;;;;;; -153045;8;0;false;false;63;95;191;;; -153053;5;0;false;false;127;127;159;;; -153058;3;0;false;false;;;;;; -153061;1;0;false;false;63;95;191;;; -153062;4;0;false;false;;;;;; -153066;4;0;false;false;127;127;159;;; -153070;27;0;false;false;63;95;191;;; -153097;1;0;false;false;;;;;; -153098;1;0;false;false;127;127;159;;; -153099;1;0;false;false;;;;;; -153100;2;0;false;false;63;95;191;;; -153102;1;0;false;false;;;;;; -153103;3;0;false;false;63;95;191;;; -153106;1;0;false;false;;;;;; -153107;6;0;false;false;63;95;191;;; -153113;1;0;false;false;;;;;; -153114;4;0;false;false;63;95;191;;; -153118;1;0;false;false;;;;;; -153119;3;0;false;false;63;95;191;;; -153122;1;0;false;false;;;;;; -153123;6;0;false;false;63;95;191;;; -153129;1;0;false;false;;;;;; -153130;4;0;false;false;63;95;191;;; -153134;1;0;false;false;;;;;; -153135;7;0;false;false;63;95;191;;; -153142;1;0;false;false;;;;;; -153143;3;0;false;false;63;95;191;;; -153146;1;0;false;false;;;;;; -153147;8;0;false;false;63;95;191;;; -153155;5;0;false;false;127;127;159;;; -153160;3;0;false;false;;;;;; -153163;1;0;false;false;63;95;191;;; -153164;1;0;false;false;;;;;; -153165;5;0;false;false;127;127;159;;; -153170;3;0;false;false;;;;;; -153173;1;0;false;false;63;95;191;;; -153174;1;0;false;false;;;;;; -153175;11;1;false;false;127;159;191;;; -153186;24;0;false;false;63;95;191;;; -153210;1;0;false;false;;;;;; -153211;4;0;false;false;127;127;159;;; -153215;3;0;false;false;;;;;; -153218;1;0;false;false;63;95;191;;; -153219;3;0;false;false;;;;;; -153222;4;0;false;false;127;127;159;;; -153226;19;0;false;false;63;95;191;;; -153245;1;0;false;false;;;;;; -153246;4;0;false;false;63;95;191;;; -153250;1;0;false;false;;;;;; -153251;5;0;false;false;63;95;191;;; -153256;1;0;false;false;;;;;; -153257;6;0;false;false;63;95;191;;; -153263;1;0;false;false;;;;;; -153264;6;0;false;false;63;95;191;;; -153270;1;0;false;false;;;;;; -153271;3;0;false;false;63;95;191;;; -153274;1;0;false;false;;;;;; -153275;7;0;false;false;63;95;191;;; -153282;1;0;false;false;;;;;; -153283;3;0;false;false;63;95;191;;; -153286;1;0;false;false;;;;;; -153287;6;0;false;false;63;95;191;;; -153293;1;0;false;false;;;;;; -153294;7;0;false;false;63;95;191;;; -153301;5;0;false;false;127;127;159;;; -153306;4;0;false;false;;;;;; -153310;1;0;false;false;63;95;191;;; -153311;1;0;false;false;;;;;; -153312;5;0;false;false;127;127;159;;; -153317;3;0;false;false;;;;;; -153320;2;0;false;false;63;95;191;;; -153322;2;0;false;false;;;;;; -153324;6;1;false;false;127;0;85;;; -153330;1;0;false;false;;;;;; -153331;6;0;false;false;0;0;0;;; -153337;1;0;false;false;;;;;; -153338;13;0;false;false;0;0;0;;; -153351;3;1;false;false;127;0;85;;; -153354;1;0;false;false;;;;;; -153355;6;0;false;false;0;0;0;;; -153361;1;0;false;false;;;;;; -153362;3;1;false;false;127;0;85;;; -153365;1;0;false;false;;;;;; -153366;7;0;false;false;0;0;0;;; -153373;1;0;false;false;;;;;; -153374;1;0;false;false;0;0;0;;; -153375;3;0;false;false;;;;;; -153378;14;0;false;false;0;0;0;;; -153392;3;0;false;false;;;;;; -153395;3;1;false;false;127;0;85;;; -153398;1;0;false;false;;;;;; -153399;13;0;false;false;0;0;0;;; -153412;1;0;false;false;;;;;; -153413;1;0;false;false;0;0;0;;; -153414;1;0;false;false;;;;;; -153415;15;0;false;false;0;0;0;;; -153430;3;0;false;false;;;;;; -153433;3;1;false;false;127;0;85;;; -153436;1;0;false;false;;;;;; -153437;3;0;false;false;0;0;0;;; -153440;1;0;false;false;;;;;; -153441;1;0;false;false;0;0;0;;; -153442;1;0;false;false;;;;;; -153443;5;0;false;false;0;0;0;;; -153448;1;0;false;false;;;;;; -153449;1;0;false;false;0;0;0;;; -153450;1;0;false;false;;;;;; -153451;7;0;false;false;0;0;0;;; -153458;6;0;false;false;;;;;; -153464;2;1;false;false;127;0;85;;; -153466;1;0;false;false;;;;;; -153467;6;0;false;false;0;0;0;;; -153473;1;0;false;false;;;;;; -153474;1;0;false;false;0;0;0;;; -153475;1;0;false;false;;;;;; -153476;3;0;false;false;0;0;0;;; -153479;1;0;false;false;;;;;; -153480;2;0;false;false;0;0;0;;; -153482;1;0;false;false;;;;;; -153483;5;0;false;false;0;0;0;;; -153488;1;0;false;false;;;;;; -153489;1;0;false;false;0;0;0;;; -153490;1;0;false;false;;;;;; -153491;1;0;false;false;0;0;0;;; -153492;1;0;false;false;;;;;; -153493;2;0;false;false;0;0;0;;; -153495;1;0;false;false;;;;;; -153496;3;0;false;false;0;0;0;;; -153499;1;0;false;false;;;;;; -153500;1;0;false;false;0;0;0;;; -153501;1;0;false;false;;;;;; -153502;14;0;false;false;0;0;0;;; -153516;1;0;false;false;;;;;; -153517;1;0;false;false;0;0;0;;; -153518;4;0;false;false;;;;;; -153522;35;0;false;false;0;0;0;;; -153557;3;0;false;false;;;;;; -153560;1;0;false;false;0;0;0;;; -153561;4;0;false;false;;;;;; -153565;6;1;false;false;127;0;85;;; -153571;1;0;false;false;;;;;; -153572;27;0;false;false;0;0;0;;; -153599;1;0;false;false;;;;;; -153600;8;0;false;false;0;0;0;;; -153608;2;0;false;false;;;;;; -153610;1;0;false;false;0;0;0;;; -153611;2;0;false;false;;;;;; -153613;3;0;false;false;63;95;191;;; -153616;3;0;false;false;;;;;; -153619;1;0;false;false;63;95;191;;; -153620;1;0;false;false;;;;;; -153621;7;0;false;false;63;95;191;;; -153628;1;0;false;false;;;;;; -153629;3;0;false;false;63;95;191;;; -153632;1;0;false;false;;;;;; -153633;7;0;false;false;63;95;191;;; -153640;1;0;false;false;;;;;; -153641;6;0;false;false;63;95;191;;; -153647;1;0;false;false;;;;;; -153648;2;0;false;false;63;95;191;;; -153650;1;0;false;false;;;;;; -153651;10;0;false;false;63;95;191;;; -153661;1;0;false;false;;;;;; -153662;4;0;false;false;63;95;191;;; -153666;1;0;false;false;;;;;; -153667;3;0;false;false;63;95;191;;; -153670;1;0;false;false;;;;;; -153671;8;0;false;false;63;95;191;;; -153679;1;0;false;false;;;;;; -153680;2;0;false;false;63;95;191;;; -153682;1;0;false;false;;;;;; -153683;7;0;false;false;63;95;191;;; -153690;1;0;false;false;;;;;; -153691;2;0;false;false;63;95;191;;; -153693;1;0;false;false;;;;;; -153694;8;0;false;false;63;95;191;;; -153702;3;0;false;false;;;;;; -153705;1;0;false;false;63;95;191;;; -153706;4;0;false;false;;;;;; -153710;1;0;false;false;63;95;191;;; -153711;1;0;false;false;;;;;; -153712;8;1;false;false;127;159;191;;; -153720;3;0;false;false;63;95;191;;; -153723;1;0;false;false;;;;;; -153724;4;0;false;false;63;95;191;;; -153728;1;0;false;false;;;;;; -153729;5;0;false;false;63;95;191;;; -153734;3;0;false;false;;;;;; -153737;1;0;false;false;63;95;191;;; -153738;3;0;false;false;;;;;; -153741;1;0;false;false;63;95;191;;; -153742;1;0;false;false;;;;;; -153743;11;1;false;false;127;159;191;;; -153754;12;0;false;false;63;95;191;;; -153766;1;0;false;false;;;;;; -153767;4;0;false;false;127;127;159;;; -153771;3;0;false;false;;;;;; -153774;1;0;false;false;63;95;191;;; -153775;4;0;false;false;;;;;; -153779;4;0;false;false;127;127;159;;; -153783;21;0;false;false;63;95;191;;; -153804;1;0;false;false;;;;;; -153805;1;0;false;false;127;127;159;;; -153806;1;0;false;false;;;;;; -153807;2;0;false;false;63;95;191;;; -153809;1;0;false;false;;;;;; -153810;3;0;false;false;63;95;191;;; -153813;1;0;false;false;;;;;; -153814;8;0;false;false;63;95;191;;; -153822;1;0;false;false;;;;;; -153823;3;0;false;false;63;95;191;;; -153826;1;0;false;false;;;;;; -153827;4;0;false;false;63;95;191;;; -153831;1;0;false;false;;;;;; -153832;8;0;false;false;63;95;191;;; -153840;5;0;false;false;127;127;159;;; -153845;3;0;false;false;;;;;; -153848;1;0;false;false;63;95;191;;; -153849;4;0;false;false;;;;;; -153853;4;0;false;false;127;127;159;;; -153857;27;0;false;false;63;95;191;;; -153884;1;0;false;false;;;;;; -153885;1;0;false;false;127;127;159;;; -153886;1;0;false;false;;;;;; -153887;2;0;false;false;63;95;191;;; -153889;1;0;false;false;;;;;; -153890;3;0;false;false;63;95;191;;; -153893;1;0;false;false;;;;;; -153894;6;0;false;false;63;95;191;;; -153900;1;0;false;false;;;;;; -153901;4;0;false;false;63;95;191;;; -153905;1;0;false;false;;;;;; -153906;3;0;false;false;63;95;191;;; -153909;1;0;false;false;;;;;; -153910;6;0;false;false;63;95;191;;; -153916;1;0;false;false;;;;;; -153917;4;0;false;false;63;95;191;;; -153921;1;0;false;false;;;;;; -153922;7;0;false;false;63;95;191;;; -153929;1;0;false;false;;;;;; -153930;3;0;false;false;63;95;191;;; -153933;1;0;false;false;;;;;; -153934;8;0;false;false;63;95;191;;; -153942;5;0;false;false;127;127;159;;; -153947;3;0;false;false;;;;;; -153950;1;0;false;false;63;95;191;;; -153951;1;0;false;false;;;;;; -153952;5;0;false;false;127;127;159;;; -153957;3;0;false;false;;;;;; -153960;2;0;false;false;63;95;191;;; -153962;2;0;false;false;;;;;; -153964;6;1;false;false;127;0;85;;; -153970;1;0;false;false;;;;;; -153971;3;1;false;false;127;0;85;;; -153974;1;0;false;false;;;;;; -153975;14;0;false;false;0;0;0;;; -153989;1;0;false;false;;;;;; -153990;1;0;false;false;0;0;0;;; -153991;3;0;false;false;;;;;; -153994;14;0;false;false;0;0;0;;; -154008;6;0;false;false;;;;;; -154014;6;1;false;false;127;0;85;;; -154020;1;0;false;false;;;;;; -154021;10;0;false;false;0;0;0;;; -154031;2;0;false;false;;;;;; -154033;1;0;false;false;0;0;0;;; -154034;2;0;false;false;;;;;; -154036;3;0;false;false;63;95;191;;; -154039;3;0;false;false;;;;;; -154042;1;0;false;false;63;95;191;;; -154043;1;0;false;false;;;;;; -154044;4;0;false;false;63;95;191;;; -154048;1;0;false;false;;;;;; -154049;3;0;false;false;63;95;191;;; -154052;1;0;false;false;;;;;; -154053;3;0;false;false;63;95;191;;; -154056;1;0;false;false;;;;;; -154057;6;0;false;false;63;95;191;;; -154063;2;0;false;false;;;;;; -154065;3;0;false;false;63;95;191;;; -154068;1;0;false;false;;;;;; -154069;3;0;false;false;63;95;191;;; -154072;1;0;false;false;;;;;; -154073;5;0;false;false;63;95;191;;; -154078;1;0;false;false;;;;;; -154079;2;0;false;false;63;95;191;;; -154081;1;0;false;false;;;;;; -154082;3;0;false;false;63;95;191;;; -154085;1;0;false;false;;;;;; -154086;5;0;false;false;63;95;191;;; -154091;1;0;false;false;;;;;; -154092;2;0;false;false;63;95;191;;; -154094;1;0;false;false;;;;;; -154095;3;0;false;false;63;95;191;;; -154098;1;0;false;false;;;;;; -154099;5;0;false;false;63;95;191;;; -154104;1;0;false;false;;;;;; -154105;7;0;false;false;63;95;191;;; -154112;1;0;false;false;;;;;; -154113;4;0;false;false;63;95;191;;; -154117;1;0;false;false;;;;;; -154118;4;0;false;false;63;95;191;;; -154122;3;0;false;false;;;;;; -154125;1;0;false;false;63;95;191;;; -154126;1;0;false;false;;;;;; -154127;2;0;false;false;63;95;191;;; -154129;1;0;false;false;;;;;; -154130;9;0;false;false;63;95;191;;; -154139;1;0;false;false;;;;;; -154140;2;0;false;false;63;95;191;;; -154142;1;0;false;false;;;;;; -154143;3;0;false;false;63;95;191;;; -154146;1;0;false;false;;;;;; -154147;3;0;false;false;63;95;191;;; -154150;1;0;false;false;;;;;; -154151;2;0;false;false;63;95;191;;; -154153;1;0;false;false;;;;;; -154154;3;0;false;false;63;95;191;;; -154157;1;0;false;false;;;;;; -154158;6;0;false;false;63;95;191;;; -154164;1;0;false;false;;;;;; -154165;2;0;false;false;63;95;191;;; -154167;1;0;false;false;;;;;; -154168;3;0;false;false;63;95;191;;; -154171;1;0;false;false;;;;;; -154172;7;0;false;false;63;95;191;;; -154179;1;0;false;false;;;;;; -154180;9;0;false;false;63;95;191;;; -154189;1;0;false;false;;;;;; -154190;7;0;false;false;63;95;191;;; -154197;1;0;false;false;;;;;; -154198;4;0;false;false;63;95;191;;; -154202;1;0;false;false;;;;;; -154203;2;0;false;false;63;95;191;;; -154205;4;0;false;false;;;;;; -154209;1;0;false;false;63;95;191;;; -154210;1;0;false;false;;;;;; -154211;2;0;false;false;63;95;191;;; -154213;1;0;false;false;;;;;; -154214;4;0;false;false;63;95;191;;; -154218;1;0;false;false;;;;;; -154219;2;0;false;false;63;95;191;;; -154221;1;0;false;false;;;;;; -154222;5;0;false;false;63;95;191;;; -154227;1;0;false;false;;;;;; -154228;8;0;false;false;63;95;191;;; -154236;4;0;false;false;;;;;; -154240;1;0;false;false;63;95;191;;; -154241;1;0;false;false;;;;;; -154242;3;0;false;false;63;95;191;;; -154245;1;0;false;false;;;;;; -154246;3;0;false;false;63;95;191;;; -154249;1;0;false;false;;;;;; -154250;5;0;false;false;63;95;191;;; -154255;1;0;false;false;;;;;; -154256;7;0;false;false;63;95;191;;; -154263;1;0;false;false;;;;;; -154264;4;0;false;false;63;95;191;;; -154268;1;0;false;false;;;;;; -154269;3;0;false;false;63;95;191;;; -154272;1;0;false;false;;;;;; -154273;6;0;false;false;63;95;191;;; -154279;1;0;false;false;;;;;; -154280;2;0;false;false;63;95;191;;; -154282;1;0;false;false;;;;;; -154283;9;0;false;false;63;95;191;;; -154292;1;0;false;false;;;;;; -154293;8;0;false;false;63;95;191;;; -154301;1;0;false;false;;;;;; -154302;2;0;false;false;63;95;191;;; -154304;1;0;false;false;;;;;; -154305;4;0;false;false;63;95;191;;; -154309;1;0;false;false;;;;;; -154310;6;0;false;false;63;95;191;;; -154316;3;0;false;false;;;;;; -154319;1;0;false;false;63;95;191;;; -154320;1;0;false;false;;;;;; -154321;3;0;false;false;127;127;159;;; -154324;3;0;false;false;;;;;; -154327;1;0;false;false;63;95;191;;; -154328;3;0;false;false;;;;;; -154331;1;0;false;false;63;95;191;;; -154332;1;0;false;false;;;;;; -154333;8;1;false;false;127;159;191;;; -154341;3;0;false;false;63;95;191;;; -154344;1;0;false;false;;;;;; -154345;5;0;false;false;63;95;191;;; -154350;1;0;false;false;;;;;; -154351;2;0;false;false;63;95;191;;; -154353;1;0;false;false;;;;;; -154354;3;0;false;false;63;95;191;;; -154357;1;0;false;false;;;;;; -154358;3;0;false;false;63;95;191;;; -154361;1;0;false;false;;;;;; -154362;4;0;false;false;63;95;191;;; -154366;3;0;false;false;;;;;; -154369;1;0;false;false;63;95;191;;; -154370;1;0;false;false;;;;;; -154371;11;1;false;false;127;159;191;;; -154382;12;0;false;false;63;95;191;;; -154394;1;0;false;false;;;;;; -154395;4;0;false;false;127;127;159;;; -154399;3;0;false;false;;;;;; -154402;1;0;false;false;63;95;191;;; -154403;4;0;false;false;;;;;; -154407;4;0;false;false;127;127;159;;; -154411;21;0;false;false;63;95;191;;; -154432;1;0;false;false;;;;;; -154433;1;0;false;false;127;127;159;;; -154434;1;0;false;false;;;;;; -154435;2;0;false;false;63;95;191;;; -154437;1;0;false;false;;;;;; -154438;3;0;false;false;63;95;191;;; -154441;1;0;false;false;;;;;; -154442;8;0;false;false;63;95;191;;; -154450;1;0;false;false;;;;;; -154451;3;0;false;false;63;95;191;;; -154454;1;0;false;false;;;;;; -154455;4;0;false;false;63;95;191;;; -154459;1;0;false;false;;;;;; -154460;8;0;false;false;63;95;191;;; -154468;5;0;false;false;127;127;159;;; -154473;3;0;false;false;;;;;; -154476;1;0;false;false;63;95;191;;; -154477;4;0;false;false;;;;;; -154481;4;0;false;false;127;127;159;;; -154485;27;0;false;false;63;95;191;;; -154512;1;0;false;false;;;;;; -154513;1;0;false;false;127;127;159;;; -154514;1;0;false;false;;;;;; -154515;2;0;false;false;63;95;191;;; -154517;1;0;false;false;;;;;; -154518;3;0;false;false;63;95;191;;; -154521;1;0;false;false;;;;;; -154522;6;0;false;false;63;95;191;;; -154528;1;0;false;false;;;;;; -154529;4;0;false;false;63;95;191;;; -154533;1;0;false;false;;;;;; -154534;3;0;false;false;63;95;191;;; -154537;1;0;false;false;;;;;; -154538;6;0;false;false;63;95;191;;; -154544;1;0;false;false;;;;;; -154545;4;0;false;false;63;95;191;;; -154549;1;0;false;false;;;;;; -154550;7;0;false;false;63;95;191;;; -154557;1;0;false;false;;;;;; -154558;3;0;false;false;63;95;191;;; -154561;1;0;false;false;;;;;; -154562;8;0;false;false;63;95;191;;; -154570;5;0;false;false;127;127;159;;; -154575;3;0;false;false;;;;;; -154578;1;0;false;false;63;95;191;;; -154579;1;0;false;false;;;;;; -154580;5;0;false;false;127;127;159;;; -154585;3;0;false;false;;;;;; -154588;2;0;false;false;63;95;191;;; -154590;2;0;false;false;;;;;; -154592;6;1;false;false;127;0;85;;; -154598;1;0;false;false;;;;;; -154599;3;1;false;false;127;0;85;;; -154602;1;0;false;false;;;;;; -154603;13;0;false;false;0;0;0;;; -154616;1;0;false;false;;;;;; -154617;1;0;false;false;0;0;0;;; -154618;3;0;false;false;;;;;; -154621;14;0;false;false;0;0;0;;; -154635;3;0;false;false;;;;;; -154638;3;1;false;false;127;0;85;;; -154641;1;0;false;false;;;;;; -154642;15;0;false;false;0;0;0;;; -154657;1;0;false;false;;;;;; -154658;1;0;false;false;0;0;0;;; -154659;1;0;false;false;;;;;; -154660;9;0;false;false;0;0;0;;; -154669;6;0;false;false;;;;;; -154675;2;1;false;false;127;0;85;;; -154677;1;0;false;false;;;;;; -154678;10;0;false;false;0;0;0;;; -154688;1;0;false;false;;;;;; -154689;1;0;false;false;0;0;0;;; -154690;4;0;false;false;;;;;; -154694;3;1;false;false;127;0;85;;; -154697;1;0;false;false;;;;;; -154698;16;0;false;false;0;0;0;;; -154714;1;0;false;false;;;;;; -154715;1;0;false;false;0;0;0;;; -154716;1;0;false;false;;;;;; -154717;34;0;false;false;0;0;0;;; -154751;4;0;false;false;;;;;; -154755;15;0;false;false;0;0;0;;; -154770;1;0;false;false;;;;;; -154771;1;0;false;false;0;0;0;;; -154772;1;0;false;false;;;;;; -154773;49;0;false;false;0;0;0;;; -154822;3;0;false;false;;;;;; -154825;1;0;false;false;0;0;0;;; -154826;3;0;false;false;;;;;; -154829;6;1;false;false;127;0;85;;; -154835;1;0;false;false;;;;;; -154836;16;0;false;false;0;0;0;;; -154852;2;0;false;false;;;;;; -154854;1;0;false;false;0;0;0;;; -154855;2;0;false;false;;;;;; -154857;3;0;false;false;63;95;191;;; -154860;3;0;false;false;;;;;; -154863;1;0;false;false;63;95;191;;; -154864;1;0;false;false;;;;;; -154865;4;0;false;false;63;95;191;;; -154869;1;0;false;false;;;;;; -154870;3;0;false;false;63;95;191;;; -154873;1;0;false;false;;;;;; -154874;3;0;false;false;63;95;191;;; -154877;1;0;false;false;;;;;; -154878;6;0;false;false;63;95;191;;; -154884;2;0;false;false;;;;;; -154886;3;0;false;false;63;95;191;;; -154889;1;0;false;false;;;;;; -154890;3;0;false;false;63;95;191;;; -154893;1;0;false;false;;;;;; -154894;5;0;false;false;63;95;191;;; -154899;1;0;false;false;;;;;; -154900;2;0;false;false;63;95;191;;; -154902;1;0;false;false;;;;;; -154903;3;0;false;false;63;95;191;;; -154906;1;0;false;false;;;;;; -154907;5;0;false;false;63;95;191;;; -154912;1;0;false;false;;;;;; -154913;8;0;false;false;63;95;191;;; -154921;1;0;false;false;;;;;; -154922;2;0;false;false;63;95;191;;; -154924;1;0;false;false;;;;;; -154925;3;0;false;false;63;95;191;;; -154928;1;0;false;false;;;;;; -154929;4;0;false;false;63;95;191;;; -154933;1;0;false;false;;;;;; -154934;4;0;false;false;63;95;191;;; -154938;1;0;false;false;;;;;; -154939;2;0;false;false;63;95;191;;; -154941;4;0;false;false;;;;;; -154945;1;0;false;false;63;95;191;;; -154946;1;0;false;false;;;;;; -154947;9;0;false;false;63;95;191;;; -154956;1;0;false;false;;;;;; -154957;2;0;false;false;63;95;191;;; -154959;1;0;false;false;;;;;; -154960;3;0;false;false;63;95;191;;; -154963;1;0;false;false;;;;;; -154964;3;0;false;false;63;95;191;;; -154967;1;0;false;false;;;;;; -154968;2;0;false;false;63;95;191;;; -154970;1;0;false;false;;;;;; -154971;3;0;false;false;63;95;191;;; -154974;1;0;false;false;;;;;; -154975;10;0;false;false;63;95;191;;; -154985;1;0;false;false;;;;;; -154986;4;0;false;false;63;95;191;;; -154990;1;0;false;false;;;;;; -154991;6;0;false;false;63;95;191;;; -154997;1;0;false;false;;;;;; -154998;3;0;false;false;63;95;191;;; -155001;1;0;false;false;;;;;; -155002;2;0;false;false;63;95;191;;; -155004;1;0;false;false;;;;;; -155005;8;0;false;false;63;95;191;;; -155013;1;0;false;false;;;;;; -155014;2;0;false;false;63;95;191;;; -155016;1;0;false;false;;;;;; -155017;6;0;false;false;63;95;191;;; -155023;4;0;false;false;;;;;; -155027;1;0;false;false;63;95;191;;; -155028;1;0;false;false;;;;;; -155029;2;0;false;false;63;95;191;;; -155031;1;0;false;false;;;;;; -155032;8;0;false;false;63;95;191;;; -155040;1;0;false;false;;;;;; -155041;3;0;false;false;63;95;191;;; -155044;1;0;false;false;;;;;; -155045;6;0;false;false;63;95;191;;; -155051;1;0;false;false;;;;;; -155052;5;0;false;false;63;95;191;;; -155057;1;0;false;false;;;;;; -155058;2;0;false;false;63;95;191;;; -155060;1;0;false;false;;;;;; -155061;4;0;false;false;63;95;191;;; -155065;1;0;false;false;;;;;; -155066;1;0;false;false;63;95;191;;; -155067;1;0;false;false;;;;;; -155068;7;0;false;false;63;95;191;;; -155075;1;0;false;false;;;;;; -155076;4;0;false;false;63;95;191;;; -155080;1;0;false;false;;;;;; -155081;3;0;false;false;63;95;191;;; -155084;1;0;false;false;;;;;; -155085;2;0;false;false;63;95;191;;; -155087;1;0;false;false;;;;;; -155088;9;0;false;false;63;95;191;;; -155097;1;0;false;false;;;;;; -155098;2;0;false;false;63;95;191;;; -155100;1;0;false;false;;;;;; -155101;3;0;false;false;63;95;191;;; -155104;1;0;false;false;;;;;; -155105;3;0;false;false;63;95;191;;; -155108;4;0;false;false;;;;;; -155112;1;0;false;false;63;95;191;;; -155113;1;0;false;false;;;;;; -155114;3;0;false;false;63;95;191;;; -155117;1;0;false;false;;;;;; -155118;7;0;false;false;63;95;191;;; -155125;2;0;false;false;;;;;; -155127;3;0;false;false;63;95;191;;; -155130;1;0;false;false;;;;;; -155131;3;0;false;false;63;95;191;;; -155134;1;0;false;false;;;;;; -155135;5;0;false;false;63;95;191;;; -155140;1;0;false;false;;;;;; -155141;7;0;false;false;63;95;191;;; -155148;1;0;false;false;;;;;; -155149;4;0;false;false;63;95;191;;; -155153;1;0;false;false;;;;;; -155154;3;0;false;false;63;95;191;;; -155157;1;0;false;false;;;;;; -155158;6;0;false;false;63;95;191;;; -155164;1;0;false;false;;;;;; -155165;2;0;false;false;63;95;191;;; -155167;1;0;false;false;;;;;; -155168;9;0;false;false;63;95;191;;; -155177;2;0;false;false;;;;;; -155179;3;0;false;false;63;95;191;;; -155182;1;0;false;false;;;;;; -155183;3;0;false;false;63;95;191;;; -155186;1;0;false;false;;;;;; -155187;5;0;false;false;63;95;191;;; -155192;4;0;false;false;;;;;; -155196;1;0;false;false;63;95;191;;; -155197;1;0;false;false;;;;;; -155198;4;0;false;false;63;95;191;;; -155202;1;0;false;false;;;;;; -155203;3;0;false;false;63;95;191;;; -155206;1;0;false;false;;;;;; -155207;7;0;false;false;63;95;191;;; -155214;1;0;false;false;;;;;; -155215;3;0;false;false;63;95;191;;; -155218;1;0;false;false;;;;;; -155219;6;0;false;false;63;95;191;;; -155225;1;0;false;false;;;;;; -155226;9;0;false;false;63;95;191;;; -155235;3;0;false;false;;;;;; -155238;1;0;false;false;63;95;191;;; -155239;1;0;false;false;;;;;; -155240;3;0;false;false;127;127;159;;; -155243;3;0;false;false;;;;;; -155246;1;0;false;false;63;95;191;;; -155247;3;0;false;false;;;;;; -155250;1;0;false;false;63;95;191;;; -155251;1;0;false;false;;;;;; -155252;8;1;false;false;127;159;191;;; -155260;5;0;false;false;63;95;191;;; -155265;1;0;false;false;;;;;; -155266;8;0;false;false;63;95;191;;; -155274;1;0;false;false;;;;;; -155275;2;0;false;false;63;95;191;;; -155277;1;0;false;false;;;;;; -155278;3;0;false;false;63;95;191;;; -155281;1;0;false;false;;;;;; -155282;3;0;false;false;63;95;191;;; -155285;1;0;false;false;;;;;; -155286;4;0;false;false;63;95;191;;; -155290;3;0;false;false;;;;;; -155293;1;0;false;false;63;95;191;;; -155294;1;0;false;false;;;;;; -155295;11;1;false;false;127;159;191;;; -155306;12;0;false;false;63;95;191;;; -155318;1;0;false;false;;;;;; -155319;4;0;false;false;127;127;159;;; -155323;3;0;false;false;;;;;; -155326;1;0;false;false;63;95;191;;; -155327;4;0;false;false;;;;;; -155331;4;0;false;false;127;127;159;;; -155335;21;0;false;false;63;95;191;;; -155356;1;0;false;false;;;;;; -155357;1;0;false;false;127;127;159;;; -155358;1;0;false;false;;;;;; -155359;2;0;false;false;63;95;191;;; -155361;1;0;false;false;;;;;; -155362;3;0;false;false;63;95;191;;; -155365;1;0;false;false;;;;;; -155366;8;0;false;false;63;95;191;;; -155374;1;0;false;false;;;;;; -155375;3;0;false;false;63;95;191;;; -155378;1;0;false;false;;;;;; -155379;4;0;false;false;63;95;191;;; -155383;1;0;false;false;;;;;; -155384;8;0;false;false;63;95;191;;; -155392;5;0;false;false;127;127;159;;; -155397;3;0;false;false;;;;;; -155400;1;0;false;false;63;95;191;;; -155401;4;0;false;false;;;;;; -155405;4;0;false;false;127;127;159;;; -155409;27;0;false;false;63;95;191;;; -155436;1;0;false;false;;;;;; -155437;1;0;false;false;127;127;159;;; -155438;1;0;false;false;;;;;; -155439;2;0;false;false;63;95;191;;; -155441;1;0;false;false;;;;;; -155442;3;0;false;false;63;95;191;;; -155445;1;0;false;false;;;;;; -155446;6;0;false;false;63;95;191;;; -155452;1;0;false;false;;;;;; -155453;4;0;false;false;63;95;191;;; -155457;1;0;false;false;;;;;; -155458;3;0;false;false;63;95;191;;; -155461;1;0;false;false;;;;;; -155462;6;0;false;false;63;95;191;;; -155468;1;0;false;false;;;;;; -155469;4;0;false;false;63;95;191;;; -155473;1;0;false;false;;;;;; -155474;7;0;false;false;63;95;191;;; -155481;1;0;false;false;;;;;; -155482;3;0;false;false;63;95;191;;; -155485;1;0;false;false;;;;;; -155486;8;0;false;false;63;95;191;;; -155494;5;0;false;false;127;127;159;;; -155499;3;0;false;false;;;;;; -155502;1;0;false;false;63;95;191;;; -155503;1;0;false;false;;;;;; -155504;5;0;false;false;127;127;159;;; -155509;3;0;false;false;;;;;; -155512;2;0;false;false;63;95;191;;; -155514;2;0;false;false;;;;;; -155516;6;1;false;false;127;0;85;;; -155522;1;0;false;false;;;;;; -155523;3;1;false;false;127;0;85;;; -155526;1;0;false;false;;;;;; -155527;13;0;false;false;0;0;0;;; -155540;1;0;false;false;;;;;; -155541;1;0;false;false;0;0;0;;; -155542;3;0;false;false;;;;;; -155545;14;0;false;false;0;0;0;;; -155559;3;0;false;false;;;;;; -155562;6;1;false;false;127;0;85;;; -155568;1;0;false;false;;;;;; -155569;21;0;false;false;0;0;0;;; -155590;2;0;false;false;;;;;; -155592;1;0;false;false;0;0;0;;; -155593;2;0;false;false;;;;;; -155595;3;0;false;false;63;95;191;;; -155598;4;0;false;false;;;;;; -155602;1;0;false;false;63;95;191;;; -155603;1;0;false;false;;;;;; -155604;7;0;false;false;63;95;191;;; -155611;1;0;false;false;;;;;; -155612;3;0;false;false;63;95;191;;; -155615;1;0;false;false;;;;;; -155616;8;0;false;false;63;95;191;;; -155624;1;0;false;false;;;;;; -155625;6;0;false;false;63;95;191;;; -155631;1;0;false;false;;;;;; -155632;10;0;false;false;63;95;191;;; -155642;3;0;false;false;;;;;; -155645;1;0;false;false;63;95;191;;; -155646;1;0;false;false;;;;;; -155647;3;0;false;false;127;127;159;;; -155650;3;0;false;false;;;;;; -155653;1;0;false;false;63;95;191;;; -155654;3;0;false;false;;;;;; -155657;1;0;false;false;63;95;191;;; -155658;1;0;false;false;;;;;; -155659;8;1;false;false;127;159;191;;; -155667;8;0;false;false;63;95;191;;; -155675;1;0;false;false;;;;;; -155676;6;0;false;false;63;95;191;;; -155682;1;0;false;false;;;;;; -155683;10;0;false;false;63;95;191;;; -155693;3;0;false;false;;;;;; -155696;2;0;false;false;63;95;191;;; -155698;2;0;false;false;;;;;; -155700;3;1;false;false;127;0;85;;; -155703;1;0;false;false;;;;;; -155704;22;0;false;false;0;0;0;;; -155726;1;0;false;false;;;;;; -155727;1;0;false;false;0;0;0;;; -155728;3;0;false;false;;;;;; -155731;6;1;false;false;127;0;85;;; -155737;1;0;false;false;;;;;; -155738;11;0;false;false;0;0;0;;; -155749;2;0;false;false;;;;;; -155751;1;0;false;false;0;0;0;;; -155752;2;0;false;false;;;;;; -155754;3;1;false;false;127;0;85;;; -155757;1;0;false;false;;;;;; -155758;19;0;false;false;0;0;0;;; -155777;1;0;false;false;;;;;; -155778;1;0;false;false;0;0;0;;; -155779;3;0;false;false;;;;;; -155782;2;1;false;false;127;0;85;;; -155784;1;0;false;false;;;;;; -155785;16;0;false;false;0;0;0;;; -155801;1;0;false;false;;;;;; -155802;6;1;false;false;127;0;85;;; -155808;1;0;false;false;;;;;; -155809;12;0;false;false;0;0;0;;; -155821;3;0;false;false;;;;;; -155824;2;1;false;false;127;0;85;;; -155826;1;0;false;false;;;;;; -155827;22;0;false;false;0;0;0;;; -155849;1;0;false;false;;;;;; -155850;2;0;false;false;0;0;0;;; -155852;1;0;false;false;;;;;; -155853;14;0;false;false;0;0;0;;; -155867;1;0;false;false;;;;;; -155868;2;0;false;false;0;0;0;;; -155870;1;0;false;false;;;;;; -155871;9;0;false;false;0;0;0;;; -155880;1;0;false;false;;;;;; -155881;6;1;false;false;127;0;85;;; -155887;1;0;false;false;;;;;; -155888;15;0;false;false;0;0;0;;; -155903;3;0;false;false;;;;;; -155906;20;0;false;false;0;0;0;;; -155926;1;0;false;false;;;;;; -155927;1;0;false;false;0;0;0;;; -155928;1;0;false;false;;;;;; -155929;5;1;false;false;127;0;85;;; -155934;1;0;false;false;0;0;0;;; -155935;3;0;false;false;;;;;; -155938;3;1;false;false;127;0;85;;; -155941;1;0;false;false;;;;;; -155942;9;0;false;false;0;0;0;;; -155951;1;0;false;false;;;;;; -155952;1;0;false;false;0;0;0;;; -155953;1;0;false;false;;;;;; -155954;15;0;false;false;0;0;0;;; -155969;3;0;false;false;;;;;; -155972;3;1;false;false;127;0;85;;; -155975;1;0;false;false;;;;;; -155976;10;0;false;false;0;0;0;;; -155986;1;0;false;false;;;;;; -155987;1;0;false;false;0;0;0;;; -155988;1;0;false;false;;;;;; -155989;35;0;false;false;0;0;0;;; -156024;3;0;false;false;;;;;; -156027;6;0;false;false;0;0;0;;; -156033;1;0;false;false;;;;;; -156034;4;0;false;false;0;0;0;;; -156038;1;0;false;false;;;;;; -156039;1;0;false;false;0;0;0;;; -156040;1;0;false;false;;;;;; -156041;27;0;false;false;0;0;0;;; -156068;3;0;false;false;;;;;; -156071;3;1;false;false;127;0;85;;; -156074;1;0;false;false;;;;;; -156075;6;0;false;false;0;0;0;;; -156081;1;0;false;false;;;;;; -156082;1;0;false;false;0;0;0;;; -156083;1;0;false;false;;;;;; -156084;11;0;false;false;0;0;0;;; -156095;1;0;false;false;;;;;; -156096;1;0;false;false;0;0;0;;; -156097;1;0;false;false;;;;;; -156098;11;0;false;false;0;0;0;;; -156109;3;0;false;false;;;;;; -156112;3;1;false;false;127;0;85;;; -156115;1;0;false;false;;;;;; -156116;10;0;false;false;0;0;0;;; -156126;1;0;false;false;;;;;; -156127;1;0;false;false;0;0;0;;; -156128;1;0;false;false;;;;;; -156129;14;0;false;false;0;0;0;;; -156143;3;0;false;false;;;;;; -156146;2;1;false;false;127;0;85;;; -156148;1;0;false;false;;;;;; -156149;11;0;false;false;0;0;0;;; -156160;1;0;false;false;;;;;; -156161;2;0;false;false;0;0;0;;; -156163;1;0;false;false;;;;;; -156164;2;0;false;false;0;0;0;;; -156166;1;0;false;false;;;;;; -156167;6;1;false;false;127;0;85;;; -156173;1;0;false;false;;;;;; -156174;12;0;false;false;0;0;0;;; -156186;1;0;false;false;;;;;; -156187;1;0;false;false;0;0;0;;; -156188;1;0;false;false;;;;;; -156189;9;0;false;false;0;0;0;;; -156198;1;0;false;false;;;;;; -156199;1;0;false;false;0;0;0;;; -156200;1;0;false;false;;;;;; -156201;9;0;false;false;0;0;0;;; -156210;3;0;false;false;;;;;; -156213;2;1;false;false;127;0;85;;; -156215;1;0;false;false;;;;;; -156216;10;0;false;false;0;0;0;;; -156226;1;0;false;false;;;;;; -156227;2;0;false;false;0;0;0;;; -156229;1;0;false;false;;;;;; -156230;6;0;false;false;0;0;0;;; -156236;1;0;false;false;;;;;; -156237;1;0;false;false;0;0;0;;; -156238;1;0;false;false;;;;;; -156239;2;0;false;false;0;0;0;;; -156241;1;0;false;false;;;;;; -156242;9;0;false;false;0;0;0;;; -156251;3;0;false;false;;;;;; -156254;2;1;false;false;127;0;85;;; -156256;1;0;false;false;;;;;; -156257;7;0;false;false;0;0;0;;; -156264;1;0;false;false;;;;;; -156265;2;0;false;false;0;0;0;;; -156267;1;0;false;false;;;;;; -156268;10;0;false;false;0;0;0;;; -156278;1;0;false;false;;;;;; -156279;2;0;false;false;0;0;0;;; -156281;1;0;false;false;;;;;; -156282;6;0;false;false;0;0;0;;; -156288;1;0;false;false;;;;;; -156289;1;0;false;false;0;0;0;;; -156290;1;0;false;false;;;;;; -156291;2;0;false;false;0;0;0;;; -156293;1;0;false;false;;;;;; -156294;9;0;false;false;0;0;0;;; -156303;3;0;false;false;;;;;; -156306;5;1;false;false;127;0;85;;; -156311;1;0;false;false;;;;;; -156312;7;0;false;false;0;0;0;;; -156319;1;0;false;false;;;;;; -156320;1;0;false;false;0;0;0;;; -156321;1;0;false;false;;;;;; -156322;1;0;false;false;0;0;0;;; -156323;1;0;false;false;;;;;; -156324;2;0;false;false;0;0;0;;; -156326;1;0;false;false;;;;;; -156327;39;0;false;false;0;0;0;;; -156366;1;0;false;false;;;;;; -156367;9;0;false;false;0;0;0;;; -156376;3;0;false;false;;;;;; -156379;2;1;false;false;127;0;85;;; -156381;1;0;false;false;;;;;; -156382;7;0;false;false;0;0;0;;; -156389;1;0;false;false;;;;;; -156390;2;0;false;false;0;0;0;;; -156392;1;0;false;false;;;;;; -156393;1;0;false;false;0;0;0;;; -156394;1;0;false;false;;;;;; -156395;2;0;false;false;0;0;0;;; -156397;1;0;false;false;;;;;; -156398;39;0;false;false;0;0;0;;; -156437;1;0;false;false;;;;;; -156438;1;0;false;false;0;0;0;;; -156439;4;0;false;false;;;;;; -156443;6;1;false;false;127;0;85;;; -156449;1;0;false;false;;;;;; -156450;12;0;false;false;0;0;0;;; -156462;1;0;false;false;;;;;; -156463;1;0;false;false;0;0;0;;; -156464;1;0;false;false;;;;;; -156465;9;0;false;false;0;0;0;;; -156474;1;0;false;false;;;;;; -156475;1;0;false;false;0;0;0;;; -156476;1;0;false;false;;;;;; -156477;9;0;false;false;0;0;0;;; -156486;3;0;false;false;;;;;; -156489;1;0;false;false;0;0;0;;; -156490;3;0;false;false;;;;;; -156493;10;0;false;false;0;0;0;;; -156503;1;0;false;false;;;;;; -156504;6;0;false;false;0;0;0;;; -156510;1;0;false;false;;;;;; -156511;1;0;false;false;0;0;0;;; -156512;1;0;false;false;;;;;; -156513;28;0;false;false;0;0;0;;; -156541;1;0;false;false;;;;;; -156542;12;0;false;false;0;0;0;;; -156554;3;0;false;false;;;;;; -156557;3;1;false;false;127;0;85;;; -156560;1;0;false;false;;;;;; -156561;5;0;false;false;0;0;0;;; -156566;1;0;false;false;;;;;; -156567;1;0;false;false;0;0;0;;; -156568;1;0;false;false;;;;;; -156569;24;0;false;false;0;0;0;;; -156593;3;0;false;false;;;;;; -156596;35;0;false;false;0;0;0;;; -156631;3;0;false;false;;;;;; -156634;6;1;false;false;127;0;85;;; -156640;1;0;false;false;;;;;; -156641;7;0;false;false;0;0;0;;; -156648;1;0;false;false;;;;;; -156649;1;0;false;false;0;0;0;;; -156650;1;0;false;false;;;;;; -156651;2;0;false;false;0;0;0;;; -156653;1;0;false;false;;;;;; -156654;2;0;false;false;0;0;0;;; -156656;1;0;false;false;;;;;; -156657;2;0;false;false;0;0;0;;; -156659;1;0;false;false;;;;;; -156660;1;0;false;false;0;0;0;;; -156661;1;0;false;false;;;;;; -156662;9;0;false;false;0;0;0;;; -156671;1;0;false;false;;;;;; -156672;1;0;false;false;0;0;0;;; -156673;1;0;false;false;;;;;; -156674;9;0;false;false;0;0;0;;; -156683;2;0;false;false;;;;;; -156685;1;0;false;false;0;0;0;;; -156686;2;0;false;false;;;;;; -156688;3;0;false;false;63;95;191;;; -156691;3;0;false;false;;;;;; -156694;1;0;false;false;63;95;191;;; -156695;1;0;false;false;;;;;; -156696;7;0;false;false;63;95;191;;; -156703;1;0;false;false;;;;;; -156704;3;0;false;false;63;95;191;;; -156707;1;0;false;false;;;;;; -156708;5;0;false;false;63;95;191;;; -156713;1;0;false;false;;;;;; -156714;2;0;false;false;63;95;191;;; -156716;1;0;false;false;;;;;; -156717;3;0;false;false;63;95;191;;; -156720;1;0;false;false;;;;;; -156721;4;0;false;false;63;95;191;;; -156725;1;0;false;false;;;;;; -156726;3;0;false;false;63;95;191;;; -156729;1;0;false;false;;;;;; -156730;5;0;false;false;63;95;191;;; -156735;1;0;false;false;;;;;; -156736;2;0;false;false;63;95;191;;; -156738;1;0;false;false;;;;;; -156739;3;0;false;false;63;95;191;;; -156742;3;0;false;false;;;;;; -156745;1;0;false;false;63;95;191;;; -156746;1;0;false;false;;;;;; -156747;4;0;false;false;63;95;191;;; -156751;1;0;false;false;;;;;; -156752;2;0;false;false;63;95;191;;; -156754;1;0;false;false;;;;;; -156755;4;0;false;false;63;95;191;;; -156759;1;0;false;false;;;;;; -156760;4;0;false;false;63;95;191;;; -156764;1;0;false;false;;;;;; -156765;4;0;false;false;63;95;191;;; -156769;1;0;false;false;;;;;; -156770;3;0;false;false;63;95;191;;; -156773;1;0;false;false;;;;;; -156774;2;0;false;false;63;95;191;;; -156776;1;0;false;false;;;;;; -156777;3;0;false;false;63;95;191;;; -156780;1;0;false;false;;;;;; -156781;3;0;false;false;63;95;191;;; -156784;1;0;false;false;;;;;; -156785;2;0;false;false;63;95;191;;; -156787;1;0;false;false;;;;;; -156788;3;0;false;false;63;95;191;;; -156791;1;0;false;false;;;;;; -156792;7;0;false;false;63;95;191;;; -156799;1;0;false;false;;;;;; -156800;5;0;false;false;63;95;191;;; -156805;4;0;false;false;;;;;; -156809;1;0;false;false;63;95;191;;; -156810;1;0;false;false;;;;;; -156811;9;0;false;false;63;95;191;;; -156820;1;0;false;false;;;;;; -156821;2;0;false;false;63;95;191;;; -156823;1;0;false;false;;;;;; -156824;3;0;false;false;63;95;191;;; -156827;1;0;false;false;;;;;; -156828;10;0;false;false;63;95;191;;; -156838;1;0;false;false;;;;;; -156839;7;0;false;false;63;95;191;;; -156846;1;0;false;false;;;;;; -156847;4;0;false;false;63;95;191;;; -156851;1;0;false;false;;;;;; -156852;3;0;false;false;63;95;191;;; -156855;1;0;false;false;;;;;; -156856;5;0;false;false;63;95;191;;; -156861;1;0;false;false;;;;;; -156862;6;0;false;false;63;95;191;;; -156868;3;0;false;false;;;;;; -156871;1;0;false;false;63;95;191;;; -156872;1;0;false;false;;;;;; -156873;2;0;false;false;63;95;191;;; -156875;1;0;false;false;;;;;; -156876;3;0;false;false;63;95;191;;; -156879;1;0;false;false;;;;;; -156880;10;0;false;false;63;95;191;;; -156890;1;0;false;false;;;;;; -156891;2;0;false;false;63;95;191;;; -156893;1;0;false;false;;;;;; -156894;9;0;false;false;63;95;191;;; -156903;1;0;false;false;;;;;; -156904;3;0;false;false;63;95;191;;; -156907;1;0;false;false;;;;;; -156908;5;0;false;false;63;95;191;;; -156913;1;0;false;false;;;;;; -156914;5;0;false;false;63;95;191;;; -156919;3;0;false;false;;;;;; -156922;1;0;false;false;63;95;191;;; -156923;4;0;false;false;;;;;; -156927;1;0;false;false;63;95;191;;; -156928;1;0;false;false;;;;;; -156929;8;1;false;false;127;159;191;;; -156937;3;0;false;false;63;95;191;;; -156940;1;0;false;false;;;;;; -156941;5;0;false;false;63;95;191;;; -156946;1;0;false;false;;;;;; -156947;2;0;false;false;63;95;191;;; -156949;1;0;false;false;;;;;; -156950;3;0;false;false;63;95;191;;; -156953;1;0;false;false;;;;;; -156954;4;0;false;false;63;95;191;;; -156958;1;0;false;false;;;;;; -156959;3;0;false;false;63;95;191;;; -156962;1;0;false;false;;;;;; -156963;5;0;false;false;63;95;191;;; -156968;1;0;false;false;;;;;; -156969;2;0;false;false;63;95;191;;; -156971;1;0;false;false;;;;;; -156972;3;0;false;false;63;95;191;;; -156975;3;0;false;false;;;;;; -156978;2;0;false;false;63;95;191;;; -156980;2;0;false;false;;;;;; -156982;3;1;false;false;127;0;85;;; -156985;1;0;false;false;;;;;; -156986;14;0;false;false;0;0;0;;; -157000;1;0;false;false;;;;;; -157001;1;0;false;false;0;0;0;;; -157002;3;0;false;false;;;;;; -157005;3;1;false;false;127;0;85;;; -157008;1;0;false;false;;;;;; -157009;9;0;false;false;0;0;0;;; -157018;1;0;false;false;;;;;; -157019;1;0;false;false;0;0;0;;; -157020;1;0;false;false;;;;;; -157021;37;0;false;false;0;0;0;;; -157058;3;0;false;false;;;;;; -157061;3;1;false;false;127;0;85;;; -157064;1;0;false;false;;;;;; -157065;11;0;false;false;0;0;0;;; -157076;1;0;false;false;;;;;; -157077;1;0;false;false;0;0;0;;; -157078;1;0;false;false;;;;;; -157079;11;0;false;false;0;0;0;;; -157090;3;0;false;false;;;;;; -157093;2;1;false;false;127;0;85;;; -157095;1;0;false;false;;;;;; -157096;9;0;false;false;0;0;0;;; -157105;1;0;false;false;;;;;; -157106;2;0;false;false;0;0;0;;; -157108;1;0;false;false;;;;;; -157109;7;0;false;false;0;0;0;;; -157116;1;0;false;false;;;;;; -157117;2;0;false;false;0;0;0;;; -157119;1;0;false;false;;;;;; -157120;11;0;false;false;0;0;0;;; -157131;1;0;false;false;;;;;; -157132;2;0;false;false;0;0;0;;; -157134;4;0;false;false;;;;;; -157138;9;0;false;false;0;0;0;;; -157147;1;0;false;false;;;;;; -157148;1;0;false;false;0;0;0;;; -157149;1;0;false;false;;;;;; -157150;22;0;false;false;0;0;0;;; -157172;1;0;false;false;;;;;; -157173;1;0;false;false;0;0;0;;; -157174;1;0;false;false;;;;;; -157175;1;0;false;false;0;0;0;;; -157176;1;0;false;false;;;;;; -157177;2;0;false;false;0;0;0;;; -157179;4;0;false;false;;;;;; -157183;11;0;false;false;0;0;0;;; -157194;1;0;false;false;;;;;; -157195;2;0;false;false;0;0;0;;; -157197;1;0;false;false;;;;;; -157198;33;0;false;false;0;0;0;;; -157231;1;0;false;false;;;;;; -157232;1;0;false;false;0;0;0;;; -157233;1;0;false;false;;;;;; -157234;3;0;false;false;0;0;0;;; -157237;1;0;false;false;;;;;; -157238;1;0;false;false;0;0;0;;; -157239;4;0;false;false;;;;;; -157243;12;0;false;false;0;0;0;;; -157255;3;0;false;false;;;;;; -157258;1;0;false;false;0;0;0;;; -157259;3;0;false;false;;;;;; -157262;6;1;false;false;127;0;85;;; -157268;1;0;false;false;;;;;; -157269;10;0;false;false;0;0;0;;; -157279;2;0;false;false;;;;;; -157281;1;0;false;false;0;0;0;;; -157282;2;0;false;false;;;;;; -157284;3;0;false;false;63;95;191;;; -157287;3;0;false;false;;;;;; -157290;1;0;false;false;63;95;191;;; -157291;1;0;false;false;;;;;; -157292;7;0;false;false;63;95;191;;; -157299;1;0;false;false;;;;;; -157300;3;0;false;false;63;95;191;;; -157303;1;0;false;false;;;;;; -157304;6;0;false;false;63;95;191;;; -157310;1;0;false;false;;;;;; -157311;2;0;false;false;63;95;191;;; -157313;1;0;false;false;;;;;; -157314;3;0;false;false;63;95;191;;; -157317;1;0;false;false;;;;;; -157318;9;0;false;false;63;95;191;;; -157327;1;0;false;false;;;;;; -157328;5;0;false;false;63;95;191;;; -157333;1;0;false;false;;;;;; -157334;3;0;false;false;63;95;191;;; -157337;1;0;false;false;;;;;; -157338;4;0;false;false;63;95;191;;; -157342;1;0;false;false;;;;;; -157343;2;0;false;false;63;95;191;;; -157345;1;0;false;false;;;;;; -157346;3;0;false;false;63;95;191;;; -157349;1;0;false;false;;;;;; -157350;9;0;false;false;63;95;191;;; -157359;3;0;false;false;;;;;; -157362;1;0;false;false;63;95;191;;; -157363;1;0;false;false;;;;;; -157364;7;0;false;false;63;95;191;;; -157371;3;0;false;false;;;;;; -157374;1;0;false;false;63;95;191;;; -157375;1;0;false;false;;;;;; -157376;3;0;false;false;127;127;159;;; -157379;3;0;false;false;;;;;; -157382;1;0;false;false;63;95;191;;; -157383;1;0;false;false;;;;;; -157384;5;0;false;false;63;95;191;;; -157389;1;0;false;false;;;;;; -157390;3;0;false;false;63;95;191;;; -157393;1;0;false;false;;;;;; -157394;3;0;false;false;63;95;191;;; -157397;1;0;false;false;;;;;; -157398;7;0;false;false;63;95;191;;; -157405;1;0;false;false;;;;;; -157406;2;0;false;false;63;95;191;;; -157408;1;0;false;false;;;;;; -157409;5;0;false;false;63;95;191;;; -157414;1;0;false;false;;;;;; -157415;6;0;false;false;63;95;191;;; -157421;1;0;false;false;;;;;; -157422;2;0;false;false;63;95;191;;; -157424;1;0;false;false;;;;;; -157425;1;0;false;false;63;95;191;;; -157426;1;0;false;false;;;;;; -157427;8;0;false;false;63;95;191;;; -157435;1;0;false;false;;;;;; -157436;2;0;false;false;63;95;191;;; -157438;1;0;false;false;;;;;; -157439;11;0;false;false;63;95;191;;; -157450;3;0;false;false;;;;;; -157453;1;0;false;false;63;95;191;;; -157454;1;0;false;false;;;;;; -157455;4;0;false;false;127;127;159;;; -157459;3;0;false;false;;;;;; -157462;1;0;false;false;63;95;191;;; -157463;1;0;false;false;;;;;; -157464;4;0;false;false;127;127;159;;; -157468;4;0;false;false;63;95;191;;; -157472;1;0;false;false;;;;;; -157473;1;0;false;false;63;95;191;;; -157474;1;0;false;false;127;127;159;;; -157475;1;0;false;false;63;95;191;;; -157476;1;0;false;false;;;;;; -157477;3;0;false;false;63;95;191;;; -157480;1;0;false;false;;;;;; -157481;1;0;false;false;63;95;191;;; -157482;1;0;false;false;127;127;159;;; -157483;1;0;false;false;63;95;191;;; -157484;1;0;false;false;;;;;; -157485;6;0;false;false;63;95;191;;; -157491;1;0;false;false;;;;;; -157492;2;0;false;false;63;95;191;;; -157494;1;0;false;false;127;127;159;;; -157495;2;0;false;false;63;95;191;;; -157497;1;0;false;false;;;;;; -157498;3;0;false;false;63;95;191;;; -157501;1;0;false;false;;;;;; -157502;2;0;false;false;63;95;191;;; -157504;1;0;false;false;127;127;159;;; -157505;4;0;false;false;63;95;191;;; -157509;3;0;false;false;;;;;; -157512;1;0;false;false;63;95;191;;; -157513;1;0;false;false;;;;;; -157514;4;0;false;false;127;127;159;;; -157518;5;0;false;false;63;95;191;;; -157523;1;0;false;false;;;;;; -157524;5;0;false;false;63;95;191;;; -157529;1;0;false;false;;;;;; -157530;9;0;false;false;63;95;191;;; -157539;1;0;false;false;;;;;; -157540;6;0;false;false;63;95;191;;; -157546;1;0;false;false;;;;;; -157547;4;0;false;false;63;95;191;;; -157551;1;0;false;false;;;;;; -157552;6;0;false;false;63;95;191;;; -157558;3;0;false;false;;;;;; -157561;1;0;false;false;63;95;191;;; -157562;1;0;false;false;;;;;; -157563;5;0;false;false;127;127;159;;; -157568;3;0;false;false;;;;;; -157571;1;0;false;false;63;95;191;;; -157572;1;0;false;false;;;;;; -157573;4;0;false;false;127;127;159;;; -157577;3;0;false;false;;;;;; -157580;1;0;false;false;63;95;191;;; -157581;1;0;false;false;;;;;; -157582;3;0;false;false;127;127;159;;; -157585;3;0;false;false;;;;;; -157588;1;0;false;false;63;95;191;;; -157589;1;0;false;false;;;;;; -157590;5;0;false;false;63;95;191;;; -157595;1;0;false;false;;;;;; -157596;10;0;false;false;63;95;191;;; -157606;1;0;false;false;;;;;; -157607;1;0;false;false;63;95;191;;; -157608;1;0;false;false;;;;;; -157609;1;0;false;false;63;95;191;;; -157610;1;0;false;false;;;;;; -157611;6;0;false;false;63;95;191;;; -157617;1;0;false;false;;;;;; -157618;3;0;false;false;63;95;191;;; -157621;1;0;false;false;;;;;; -157622;3;0;false;false;63;95;191;;; -157625;1;0;false;false;;;;;; -157626;7;0;false;false;63;95;191;;; -157633;1;0;false;false;;;;;; -157634;2;0;false;false;63;95;191;;; -157636;1;0;false;false;;;;;; -157637;4;0;false;false;63;95;191;;; -157641;1;0;false;false;;;;;; -157642;3;0;false;false;63;95;191;;; -157645;1;0;false;false;;;;;; -157646;7;0;false;false;63;95;191;;; -157653;1;0;false;false;;;;;; -157654;2;0;false;false;63;95;191;;; -157656;3;0;false;false;;;;;; -157659;1;0;false;false;63;95;191;;; -157660;1;0;false;false;;;;;; -157661;4;0;false;false;63;95;191;;; -157665;1;0;false;false;;;;;; -157666;2;0;false;false;63;95;191;;; -157668;1;0;false;false;;;;;; -157669;3;0;false;false;63;95;191;;; -157672;1;0;false;false;;;;;; -157673;4;0;false;false;63;95;191;;; -157677;1;0;false;false;;;;;; -157678;7;0;false;false;63;95;191;;; -157685;1;0;false;false;;;;;; -157686;2;0;false;false;63;95;191;;; -157688;1;0;false;false;;;;;; -157689;2;0;false;false;63;95;191;;; -157691;1;0;false;false;;;;;; -157692;3;0;false;false;63;95;191;;; -157695;1;0;false;false;;;;;; -157696;5;0;false;false;63;95;191;;; -157701;1;0;false;false;;;;;; -157702;10;0;false;false;63;95;191;;; -157712;2;0;false;false;;;;;; -157714;4;0;false;false;63;95;191;;; -157718;1;0;false;false;;;;;; -157719;6;0;false;false;63;95;191;;; -157725;1;0;false;false;;;;;; -157726;3;0;false;false;63;95;191;;; -157729;4;0;false;false;;;;;; -157733;1;0;false;false;63;95;191;;; -157734;1;0;false;false;;;;;; -157735;7;0;false;false;63;95;191;;; -157742;1;0;false;false;;;;;; -157743;2;0;false;false;63;95;191;;; -157745;1;0;false;false;;;;;; -157746;3;0;false;false;63;95;191;;; -157749;1;0;false;false;;;;;; -157750;5;0;false;false;63;95;191;;; -157755;3;0;false;false;;;;;; -157758;1;0;false;false;63;95;191;;; -157759;1;0;false;false;;;;;; -157760;4;0;false;false;127;127;159;;; -157764;3;0;false;false;;;;;; -157767;2;0;false;false;63;95;191;;; -157769;2;0;false;false;;;;;; -157771;3;1;false;false;127;0;85;;; -157774;1;0;false;false;;;;;; -157775;11;0;false;false;0;0;0;;; -157786;3;1;false;false;127;0;85;;; -157789;1;0;false;false;;;;;; -157790;7;0;false;false;0;0;0;;; -157797;1;0;false;false;;;;;; -157798;1;0;false;false;0;0;0;;; -157799;3;0;false;false;;;;;; -157802;3;1;false;false;127;0;85;;; -157805;1;0;false;false;;;;;; -157806;4;0;false;false;0;0;0;;; -157810;1;0;false;false;;;;;; -157811;1;0;false;false;0;0;0;;; -157812;1;0;false;false;;;;;; -157813;39;0;false;false;0;0;0;;; -157852;3;0;false;false;;;;;; -157855;3;1;false;false;127;0;85;;; -157858;1;0;false;false;;;;;; -157859;10;0;false;false;0;0;0;;; -157869;1;0;false;false;;;;;; -157870;1;0;false;false;0;0;0;;; -157871;1;0;false;false;;;;;; -157872;37;0;false;false;0;0;0;;; -157909;3;0;false;false;;;;;; -157912;6;0;false;false;0;0;0;;; -157918;1;0;false;false;;;;;; -157919;8;0;false;false;0;0;0;;; -157927;1;0;false;false;;;;;; -157928;1;0;false;false;0;0;0;;; -157929;1;0;false;false;;;;;; -157930;29;0;false;false;0;0;0;;; -157959;3;0;false;false;;;;;; -157962;3;1;false;false;127;0;85;;; -157965;1;0;false;false;;;;;; -157966;10;0;false;false;0;0;0;;; -157976;1;0;false;false;;;;;; -157977;1;0;false;false;0;0;0;;; -157978;1;0;false;false;;;;;; -157979;18;0;false;false;0;0;0;;; -157997;6;0;false;false;;;;;; -158003;2;1;false;false;127;0;85;;; -158005;1;0;false;false;;;;;; -158006;7;0;false;false;0;0;0;;; -158013;1;0;false;false;;;;;; -158014;2;0;false;false;0;0;0;;; -158016;1;0;false;false;;;;;; -158017;15;0;false;false;0;0;0;;; -158032;1;0;false;false;;;;;; -158033;1;0;false;false;0;0;0;;; -158034;4;0;false;false;;;;;; -158038;6;1;false;false;127;0;85;;; -158044;1;0;false;false;;;;;; -158045;7;0;false;false;0;0;0;;; -158052;3;0;false;false;;;;;; -158055;1;0;false;false;0;0;0;;; -158056;3;0;false;false;;;;;; -158059;2;1;false;false;127;0;85;;; -158061;1;0;false;false;;;;;; -158062;7;0;false;false;0;0;0;;; -158069;1;0;false;false;;;;;; -158070;2;0;false;false;0;0;0;;; -158072;1;0;false;false;;;;;; -158073;10;0;false;false;0;0;0;;; -158083;1;0;false;false;;;;;; -158084;1;0;false;false;0;0;0;;; -158085;1;0;false;false;;;;;; -158086;11;0;false;false;0;0;0;;; -158097;1;0;false;false;;;;;; -158098;1;0;false;false;0;0;0;;; -158099;4;0;false;false;;;;;; -158103;7;0;false;false;0;0;0;;; -158110;4;0;false;false;;;;;; -158114;6;0;false;false;0;0;0;;; -158120;1;0;false;false;;;;;; -158121;1;0;false;false;0;0;0;;; -158122;1;0;false;false;;;;;; -158123;37;0;false;false;0;0;0;;; -158160;3;0;false;false;;;;;; -158163;1;0;false;false;0;0;0;;; -158164;3;0;false;false;;;;;; -158167;4;1;false;false;127;0;85;;; -158171;1;0;false;false;;;;;; -158172;1;0;false;false;0;0;0;;; -158173;4;0;false;false;;;;;; -158177;10;0;false;false;0;0;0;;; -158187;1;0;false;false;;;;;; -158188;6;0;false;false;0;0;0;;; -158194;1;0;false;false;;;;;; -158195;1;0;false;false;0;0;0;;; -158196;1;0;false;false;;;;;; -158197;32;0;false;false;0;0;0;;; -158229;1;0;false;false;;;;;; -158230;12;0;false;false;0;0;0;;; -158242;4;0;false;false;;;;;; -158246;6;0;false;false;0;0;0;;; -158252;1;0;false;false;;;;;; -158253;2;0;false;false;0;0;0;;; -158255;1;0;false;false;;;;;; -158256;11;0;false;false;0;0;0;;; -158267;4;0;false;false;;;;;; -158271;6;0;false;false;0;0;0;;; -158277;1;0;false;false;;;;;; -158278;1;0;false;false;0;0;0;;; -158279;1;0;false;false;;;;;; -158280;28;0;false;false;0;0;0;;; -158308;1;0;false;false;;;;;; -158309;19;0;false;false;0;0;0;;; -158328;4;0;false;false;;;;;; -158332;6;0;false;false;0;0;0;;; -158338;1;0;false;false;;;;;; -158339;2;0;false;false;0;0;0;;; -158341;1;0;false;false;;;;;; -158342;11;0;false;false;0;0;0;;; -158353;4;0;false;false;;;;;; -158357;35;0;false;false;0;0;0;;; -158392;3;0;false;false;;;;;; -158395;1;0;false;false;0;0;0;;; -158396;3;0;false;false;;;;;; -158399;6;1;false;false;127;0;85;;; -158405;1;0;false;false;;;;;; -158406;7;0;false;false;0;0;0;;; -158413;2;0;false;false;;;;;; -158415;1;0;false;false;0;0;0;;; -158416;2;0;false;false;;;;;; -158418;3;0;false;false;63;95;191;;; -158421;3;0;false;false;;;;;; -158424;1;0;false;false;63;95;191;;; -158425;1;0;false;false;;;;;; -158426;7;0;false;false;63;95;191;;; -158433;1;0;false;false;;;;;; -158434;3;0;false;false;63;95;191;;; -158437;1;0;false;false;;;;;; -158438;6;0;false;false;63;95;191;;; -158444;1;0;false;false;;;;;; -158445;2;0;false;false;63;95;191;;; -158447;1;0;false;false;;;;;; -158448;3;0;false;false;63;95;191;;; -158451;1;0;false;false;;;;;; -158452;9;0;false;false;63;95;191;;; -158461;1;0;false;false;;;;;; -158462;5;0;false;false;63;95;191;;; -158467;1;0;false;false;;;;;; -158468;3;0;false;false;63;95;191;;; -158471;1;0;false;false;;;;;; -158472;4;0;false;false;63;95;191;;; -158476;1;0;false;false;;;;;; -158477;2;0;false;false;63;95;191;;; -158479;1;0;false;false;;;;;; -158480;3;0;false;false;63;95;191;;; -158483;1;0;false;false;;;;;; -158484;9;0;false;false;63;95;191;;; -158493;3;0;false;false;;;;;; -158496;1;0;false;false;63;95;191;;; -158497;1;0;false;false;;;;;; -158498;7;0;false;false;63;95;191;;; -158505;3;0;false;false;;;;;; -158508;1;0;false;false;63;95;191;;; -158509;1;0;false;false;;;;;; -158510;3;0;false;false;127;127;159;;; -158513;3;0;false;false;;;;;; -158516;1;0;false;false;63;95;191;;; -158517;1;0;false;false;;;;;; -158518;5;0;false;false;63;95;191;;; -158523;1;0;false;false;;;;;; -158524;3;0;false;false;63;95;191;;; -158527;1;0;false;false;;;;;; -158528;3;0;false;false;63;95;191;;; -158531;1;0;false;false;;;;;; -158532;7;0;false;false;63;95;191;;; -158539;1;0;false;false;;;;;; -158540;2;0;false;false;63;95;191;;; -158542;1;0;false;false;;;;;; -158543;5;0;false;false;63;95;191;;; -158548;1;0;false;false;;;;;; -158549;6;0;false;false;63;95;191;;; -158555;1;0;false;false;;;;;; -158556;2;0;false;false;63;95;191;;; -158558;1;0;false;false;;;;;; -158559;1;0;false;false;63;95;191;;; -158560;1;0;false;false;;;;;; -158561;8;0;false;false;63;95;191;;; -158569;1;0;false;false;;;;;; -158570;2;0;false;false;63;95;191;;; -158572;1;0;false;false;;;;;; -158573;11;0;false;false;63;95;191;;; -158584;3;0;false;false;;;;;; -158587;1;0;false;false;63;95;191;;; -158588;1;0;false;false;;;;;; -158589;4;0;false;false;127;127;159;;; -158593;3;0;false;false;;;;;; -158596;1;0;false;false;63;95;191;;; -158597;1;0;false;false;;;;;; -158598;4;0;false;false;127;127;159;;; -158602;4;0;false;false;63;95;191;;; -158606;1;0;false;false;;;;;; -158607;1;0;false;false;63;95;191;;; -158608;1;0;false;false;127;127;159;;; -158609;1;0;false;false;63;95;191;;; -158610;1;0;false;false;;;;;; -158611;3;0;false;false;63;95;191;;; -158614;1;0;false;false;;;;;; -158615;1;0;false;false;63;95;191;;; -158616;1;0;false;false;127;127;159;;; -158617;1;0;false;false;63;95;191;;; -158618;1;0;false;false;;;;;; -158619;6;0;false;false;63;95;191;;; -158625;1;0;false;false;;;;;; -158626;2;0;false;false;63;95;191;;; -158628;1;0;false;false;127;127;159;;; -158629;2;0;false;false;63;95;191;;; -158631;1;0;false;false;;;;;; -158632;3;0;false;false;63;95;191;;; -158635;1;0;false;false;;;;;; -158636;2;0;false;false;63;95;191;;; -158638;1;0;false;false;127;127;159;;; -158639;4;0;false;false;63;95;191;;; -158643;3;0;false;false;;;;;; -158646;1;0;false;false;63;95;191;;; -158647;1;0;false;false;;;;;; -158648;4;0;false;false;127;127;159;;; -158652;5;0;false;false;63;95;191;;; -158657;1;0;false;false;;;;;; -158658;5;0;false;false;63;95;191;;; -158663;1;0;false;false;;;;;; -158664;9;0;false;false;63;95;191;;; -158673;1;0;false;false;;;;;; -158674;6;0;false;false;63;95;191;;; -158680;1;0;false;false;;;;;; -158681;4;0;false;false;63;95;191;;; -158685;1;0;false;false;;;;;; -158686;6;0;false;false;63;95;191;;; -158692;3;0;false;false;;;;;; -158695;1;0;false;false;63;95;191;;; -158696;1;0;false;false;;;;;; -158697;5;0;false;false;127;127;159;;; -158702;3;0;false;false;;;;;; -158705;1;0;false;false;63;95;191;;; -158706;1;0;false;false;;;;;; -158707;4;0;false;false;127;127;159;;; -158711;3;0;false;false;;;;;; -158714;1;0;false;false;63;95;191;;; -158715;1;0;false;false;;;;;; -158716;3;0;false;false;127;127;159;;; -158719;3;0;false;false;;;;;; -158722;1;0;false;false;63;95;191;;; -158723;1;0;false;false;;;;;; -158724;6;0;false;false;63;95;191;;; -158730;1;0;false;false;;;;;; -158731;3;0;false;false;63;95;191;;; -158734;1;0;false;false;;;;;; -158735;7;0;false;false;63;95;191;;; -158742;1;0;false;false;;;;;; -158743;3;0;false;false;63;95;191;;; -158746;1;0;false;false;;;;;; -158747;2;0;false;false;63;95;191;;; -158749;1;0;false;false;;;;;; -158750;3;0;false;false;63;95;191;;; -158753;1;0;false;false;;;;;; -158754;9;0;false;false;63;95;191;;; -158763;1;0;false;false;;;;;; -158764;1;0;false;false;63;95;191;;; -158765;1;0;false;false;;;;;; -158766;5;0;false;false;63;95;191;;; -158771;2;0;false;false;;;;;; -158773;4;0;false;false;63;95;191;;; -158777;1;0;false;false;;;;;; -158778;6;0;false;false;63;95;191;;; -158784;1;0;false;false;;;;;; -158785;3;0;false;false;63;95;191;;; -158788;1;0;false;false;;;;;; -158789;7;0;false;false;63;95;191;;; -158796;4;0;false;false;;;;;; -158800;1;0;false;false;63;95;191;;; -158801;1;0;false;false;;;;;; -158802;2;0;false;false;63;95;191;;; -158804;1;0;false;false;;;;;; -158805;3;0;false;false;63;95;191;;; -158808;1;0;false;false;;;;;; -158809;5;0;false;false;63;95;191;;; -158814;3;0;false;false;;;;;; -158817;1;0;false;false;63;95;191;;; -158818;1;0;false;false;;;;;; -158819;4;0;false;false;127;127;159;;; -158823;3;0;false;false;;;;;; -158826;2;0;false;false;63;95;191;;; -158828;2;0;false;false;;;;;; -158830;3;1;false;false;127;0;85;;; -158833;1;0;false;false;;;;;; -158834;19;0;false;false;0;0;0;;; -158853;3;1;false;false;127;0;85;;; -158856;1;0;false;false;;;;;; -158857;7;0;false;false;0;0;0;;; -158864;1;0;false;false;;;;;; -158865;1;0;false;false;0;0;0;;; -158866;3;0;false;false;;;;;; -158869;3;1;false;false;127;0;85;;; -158872;1;0;false;false;;;;;; -158873;4;0;false;false;0;0;0;;; -158877;1;0;false;false;;;;;; -158878;1;0;false;false;0;0;0;;; -158879;1;0;false;false;;;;;; -158880;39;0;false;false;0;0;0;;; -158919;3;0;false;false;;;;;; -158922;3;1;false;false;127;0;85;;; -158925;1;0;false;false;;;;;; -158926;10;0;false;false;0;0;0;;; -158936;1;0;false;false;;;;;; -158937;1;0;false;false;0;0;0;;; -158938;1;0;false;false;;;;;; -158939;37;0;false;false;0;0;0;;; -158976;3;0;false;false;;;;;; -158979;6;0;false;false;0;0;0;;; -158985;1;0;false;false;;;;;; -158986;8;0;false;false;0;0;0;;; -158994;1;0;false;false;;;;;; -158995;1;0;false;false;0;0;0;;; -158996;1;0;false;false;;;;;; -158997;29;0;false;false;0;0;0;;; -159026;3;0;false;false;;;;;; -159029;3;1;false;false;127;0;85;;; -159032;1;0;false;false;;;;;; -159033;10;0;false;false;0;0;0;;; -159043;1;0;false;false;;;;;; -159044;1;0;false;false;0;0;0;;; -159045;1;0;false;false;;;;;; -159046;18;0;false;false;0;0;0;;; -159064;6;0;false;false;;;;;; -159070;2;1;false;false;127;0;85;;; -159072;1;0;false;false;;;;;; -159073;7;0;false;false;0;0;0;;; -159080;1;0;false;false;;;;;; -159081;2;0;false;false;0;0;0;;; -159083;1;0;false;false;;;;;; -159084;15;0;false;false;0;0;0;;; -159099;1;0;false;false;;;;;; -159100;1;0;false;false;0;0;0;;; -159101;4;0;false;false;;;;;; -159105;6;1;false;false;127;0;85;;; -159111;1;0;false;false;;;;;; -159112;7;0;false;false;0;0;0;;; -159119;3;0;false;false;;;;;; -159122;1;0;false;false;0;0;0;;; -159123;3;0;false;false;;;;;; -159126;2;1;false;false;127;0;85;;; -159128;1;0;false;false;;;;;; -159129;7;0;false;false;0;0;0;;; -159136;1;0;false;false;;;;;; -159137;2;0;false;false;0;0;0;;; -159139;1;0;false;false;;;;;; -159140;10;0;false;false;0;0;0;;; -159150;1;0;false;false;;;;;; -159151;1;0;false;false;0;0;0;;; -159152;1;0;false;false;;;;;; -159153;11;0;false;false;0;0;0;;; -159164;1;0;false;false;;;;;; -159165;1;0;false;false;0;0;0;;; -159166;4;0;false;false;;;;;; -159170;7;0;false;false;0;0;0;;; -159177;4;0;false;false;;;;;; -159181;6;0;false;false;0;0;0;;; -159187;1;0;false;false;;;;;; -159188;1;0;false;false;0;0;0;;; -159189;1;0;false;false;;;;;; -159190;37;0;false;false;0;0;0;;; -159227;3;0;false;false;;;;;; -159230;1;0;false;false;0;0;0;;; -159231;3;0;false;false;;;;;; -159234;4;1;false;false;127;0;85;;; -159238;1;0;false;false;;;;;; -159239;1;0;false;false;0;0;0;;; -159240;4;0;false;false;;;;;; -159244;6;0;false;false;0;0;0;;; -159250;1;0;false;false;;;;;; -159251;2;0;false;false;0;0;0;;; -159253;1;0;false;false;;;;;; -159254;11;0;false;false;0;0;0;;; -159265;4;0;false;false;;;;;; -159269;4;1;false;false;127;0;85;;; -159273;1;0;false;false;;;;;; -159274;2;0;false;false;0;0;0;;; -159276;1;0;false;false;;;;;; -159277;1;0;false;false;0;0;0;;; -159278;1;0;false;false;;;;;; -159279;24;0;false;false;0;0;0;;; -159303;4;0;false;false;;;;;; -159307;7;1;false;false;127;0;85;;; -159314;1;0;false;false;;;;;; -159315;13;0;false;false;0;0;0;;; -159328;1;0;false;false;;;;;; -159329;1;0;false;false;0;0;0;;; -159330;1;0;false;false;;;;;; -159331;34;0;false;false;0;0;0;;; -159365;8;0;false;false;;;;;; -159373;5;1;false;false;127;0;85;;; -159378;1;0;false;false;;;;;; -159379;7;0;false;false;0;0;0;;; -159386;1;0;false;false;;;;;; -159387;1;0;false;false;0;0;0;;; -159388;1;0;false;false;;;;;; -159389;10;0;false;false;0;0;0;;; -159399;1;0;false;false;;;;;; -159400;1;0;false;false;0;0;0;;; -159401;1;0;false;false;;;;;; -159402;1;0;false;false;0;0;0;;; -159403;1;0;false;false;;;;;; -159404;2;0;false;false;0;0;0;;; -159406;1;0;false;false;;;;;; -159407;33;0;false;false;0;0;0;;; -159440;1;0;false;false;;;;;; -159441;2;0;false;false;0;0;0;;; -159443;1;0;false;false;;;;;; -159444;13;0;false;false;0;0;0;;; -159457;1;0;false;false;;;;;; -159458;2;0;false;false;0;0;0;;; -159460;1;0;false;false;;;;;; -159461;31;0;false;false;0;0;0;;; -159492;1;0;false;false;;;;;; -159493;1;0;false;false;0;0;0;;; -159494;5;0;false;false;;;;;; -159499;9;0;false;false;0;0;0;;; -159508;5;0;false;false;;;;;; -159513;2;0;false;false;0;0;0;;; -159515;1;0;false;false;;;;;; -159516;1;0;false;false;0;0;0;;; -159517;1;0;false;false;;;;;; -159518;24;0;false;false;0;0;0;;; -159542;4;0;false;false;;;;;; -159546;1;0;false;false;0;0;0;;; -159547;4;0;false;false;;;;;; -159551;2;1;false;false;127;0;85;;; -159553;1;0;false;false;;;;;; -159554;7;0;false;false;0;0;0;;; -159561;1;0;false;false;;;;;; -159562;2;0;false;false;0;0;0;;; -159564;1;0;false;false;;;;;; -159565;10;0;false;false;0;0;0;;; -159575;1;0;false;false;;;;;; -159576;1;0;false;false;0;0;0;;; -159577;1;0;false;false;;;;;; -159578;1;0;false;false;0;0;0;;; -159579;1;0;false;false;;;;;; -159580;2;0;false;false;0;0;0;;; -159582;1;0;false;false;;;;;; -159583;33;0;false;false;0;0;0;;; -159616;1;0;false;false;;;;;; -159617;2;0;false;false;0;0;0;;; -159619;1;0;false;false;;;;;; -159620;13;0;false;false;0;0;0;;; -159633;1;0;false;false;;;;;; -159634;2;0;false;false;0;0;0;;; -159636;1;0;false;false;;;;;; -159637;31;0;false;false;0;0;0;;; -159668;1;0;false;false;;;;;; -159669;1;0;false;false;0;0;0;;; -159670;5;0;false;false;;;;;; -159675;9;0;false;false;0;0;0;;; -159684;4;0;false;false;;;;;; -159688;1;0;false;false;0;0;0;;; -159689;4;0;false;false;;;;;; -159693;6;0;false;false;0;0;0;;; -159699;1;0;false;false;;;;;; -159700;2;0;false;false;0;0;0;;; -159702;1;0;false;false;;;;;; -159703;11;0;false;false;0;0;0;;; -159714;3;0;false;false;;;;;; -159717;1;0;false;false;0;0;0;;; -159718;3;0;false;false;;;;;; -159721;6;1;false;false;127;0;85;;; -159727;1;0;false;false;;;;;; -159728;7;0;false;false;0;0;0;;; -159735;2;0;false;false;;;;;; -159737;1;0;false;false;0;0;0;;; -159738;2;0;false;false;;;;;; -159740;3;0;false;false;63;95;191;;; -159743;3;0;false;false;;;;;; -159746;1;0;false;false;63;95;191;;; -159747;1;0;false;false;;;;;; -159748;7;0;false;false;63;95;191;;; -159755;1;0;false;false;;;;;; -159756;3;0;false;false;63;95;191;;; -159759;1;0;false;false;;;;;; -159760;5;0;false;false;63;95;191;;; -159765;1;0;false;false;;;;;; -159766;6;0;false;false;63;95;191;;; -159772;1;0;false;false;;;;;; -159773;2;0;false;false;63;95;191;;; -159775;1;0;false;false;;;;;; -159776;3;0;false;false;63;95;191;;; -159779;1;0;false;false;;;;;; -159780;4;0;false;false;63;95;191;;; -159784;1;0;false;false;;;;;; -159785;2;0;false;false;63;95;191;;; -159787;1;0;false;false;;;;;; -159788;3;0;false;false;63;95;191;;; -159791;1;0;false;false;;;;;; -159792;9;0;false;false;63;95;191;;; -159801;1;0;false;false;;;;;; -159802;7;0;false;false;63;95;191;;; -159809;3;0;false;false;;;;;; -159812;1;0;false;false;63;95;191;;; -159813;1;0;false;false;;;;;; -159814;5;0;false;false;63;95;191;;; -159819;1;0;false;false;;;;;; -159820;3;0;false;false;63;95;191;;; -159823;1;0;false;false;;;;;; -159824;3;0;false;false;63;95;191;;; -159827;1;0;false;false;;;;;; -159828;7;0;false;false;63;95;191;;; -159835;1;0;false;false;;;;;; -159836;2;0;false;false;63;95;191;;; -159838;1;0;false;false;;;;;; -159839;5;0;false;false;63;95;191;;; -159844;1;0;false;false;;;;;; -159845;6;0;false;false;63;95;191;;; -159851;1;0;false;false;;;;;; -159852;2;0;false;false;63;95;191;;; -159854;1;0;false;false;;;;;; -159855;1;0;false;false;63;95;191;;; -159856;1;0;false;false;;;;;; -159857;8;0;false;false;63;95;191;;; -159865;1;0;false;false;;;;;; -159866;2;0;false;false;63;95;191;;; -159868;1;0;false;false;;;;;; -159869;11;0;false;false;63;95;191;;; -159880;3;0;false;false;;;;;; -159883;1;0;false;false;63;95;191;;; -159884;1;0;false;false;;;;;; -159885;3;0;false;false;127;127;159;;; -159888;3;0;false;false;;;;;; -159891;1;0;false;false;63;95;191;;; -159892;1;0;false;false;;;;;; -159893;4;0;false;false;127;127;159;;; -159897;3;0;false;false;;;;;; -159900;1;0;false;false;63;95;191;;; -159901;1;0;false;false;;;;;; -159902;4;0;false;false;127;127;159;;; -159906;4;0;false;false;63;95;191;;; -159910;1;0;false;false;;;;;; -159911;1;0;false;false;63;95;191;;; -159912;1;0;false;false;127;127;159;;; -159913;1;0;false;false;63;95;191;;; -159914;1;0;false;false;;;;;; -159915;3;0;false;false;63;95;191;;; -159918;1;0;false;false;;;;;; -159919;1;0;false;false;63;95;191;;; -159920;1;0;false;false;127;127;159;;; -159921;1;0;false;false;63;95;191;;; -159922;1;0;false;false;;;;;; -159923;6;0;false;false;63;95;191;;; -159929;1;0;false;false;;;;;; -159930;2;0;false;false;63;95;191;;; -159932;1;0;false;false;127;127;159;;; -159933;2;0;false;false;63;95;191;;; -159935;1;0;false;false;;;;;; -159936;3;0;false;false;63;95;191;;; -159939;1;0;false;false;;;;;; -159940;2;0;false;false;63;95;191;;; -159942;1;0;false;false;127;127;159;;; -159943;4;0;false;false;63;95;191;;; -159947;3;0;false;false;;;;;; -159950;1;0;false;false;63;95;191;;; -159951;1;0;false;false;;;;;; -159952;4;0;false;false;127;127;159;;; -159956;5;0;false;false;63;95;191;;; -159961;1;0;false;false;;;;;; -159962;5;0;false;false;63;95;191;;; -159967;1;0;false;false;;;;;; -159968;9;0;false;false;63;95;191;;; -159977;1;0;false;false;;;;;; -159978;6;0;false;false;63;95;191;;; -159984;1;0;false;false;;;;;; -159985;4;0;false;false;63;95;191;;; -159989;1;0;false;false;;;;;; -159990;6;0;false;false;63;95;191;;; -159996;3;0;false;false;;;;;; -159999;1;0;false;false;63;95;191;;; -160000;1;0;false;false;;;;;; -160001;5;0;false;false;127;127;159;;; -160006;3;0;false;false;;;;;; -160009;1;0;false;false;63;95;191;;; -160010;1;0;false;false;;;;;; -160011;4;0;false;false;127;127;159;;; -160015;3;0;false;false;;;;;; -160018;1;0;false;false;63;95;191;;; -160019;1;0;false;false;;;;;; -160020;3;0;false;false;127;127;159;;; -160023;3;0;false;false;;;;;; -160026;1;0;false;false;63;95;191;;; -160027;1;0;false;false;;;;;; -160028;5;0;false;false;63;95;191;;; -160033;1;0;false;false;;;;;; -160034;10;0;false;false;63;95;191;;; -160044;1;0;false;false;;;;;; -160045;1;0;false;false;63;95;191;;; -160046;1;0;false;false;;;;;; -160047;1;0;false;false;63;95;191;;; -160048;1;0;false;false;;;;;; -160049;6;0;false;false;63;95;191;;; -160055;1;0;false;false;;;;;; -160056;3;0;false;false;63;95;191;;; -160059;1;0;false;false;;;;;; -160060;3;0;false;false;63;95;191;;; -160063;1;0;false;false;;;;;; -160064;7;0;false;false;63;95;191;;; -160071;1;0;false;false;;;;;; -160072;2;0;false;false;63;95;191;;; -160074;1;0;false;false;;;;;; -160075;4;0;false;false;63;95;191;;; -160079;1;0;false;false;;;;;; -160080;3;0;false;false;63;95;191;;; -160083;1;0;false;false;;;;;; -160084;7;0;false;false;63;95;191;;; -160091;1;0;false;false;;;;;; -160092;2;0;false;false;63;95;191;;; -160094;3;0;false;false;;;;;; -160097;1;0;false;false;63;95;191;;; -160098;1;0;false;false;;;;;; -160099;4;0;false;false;63;95;191;;; -160103;1;0;false;false;;;;;; -160104;2;0;false;false;63;95;191;;; -160106;1;0;false;false;;;;;; -160107;3;0;false;false;63;95;191;;; -160110;1;0;false;false;;;;;; -160111;4;0;false;false;63;95;191;;; -160115;1;0;false;false;;;;;; -160116;7;0;false;false;63;95;191;;; -160123;1;0;false;false;;;;;; -160124;2;0;false;false;63;95;191;;; -160126;1;0;false;false;;;;;; -160127;2;0;false;false;63;95;191;;; -160129;1;0;false;false;;;;;; -160130;3;0;false;false;63;95;191;;; -160133;1;0;false;false;;;;;; -160134;5;0;false;false;63;95;191;;; -160139;1;0;false;false;;;;;; -160140;10;0;false;false;63;95;191;;; -160150;2;0;false;false;;;;;; -160152;4;0;false;false;63;95;191;;; -160156;1;0;false;false;;;;;; -160157;6;0;false;false;63;95;191;;; -160163;1;0;false;false;;;;;; -160164;3;0;false;false;63;95;191;;; -160167;1;0;false;false;;;;;; -160168;7;0;false;false;63;95;191;;; -160175;4;0;false;false;;;;;; -160179;1;0;false;false;63;95;191;;; -160180;1;0;false;false;;;;;; -160181;2;0;false;false;63;95;191;;; -160183;1;0;false;false;;;;;; -160184;3;0;false;false;63;95;191;;; -160187;1;0;false;false;;;;;; -160188;5;0;false;false;63;95;191;;; -160193;3;0;false;false;;;;;; -160196;1;0;false;false;63;95;191;;; -160197;1;0;false;false;;;;;; -160198;4;0;false;false;127;127;159;;; -160202;3;0;false;false;;;;;; -160205;2;0;false;false;63;95;191;;; -160207;2;0;false;false;;;;;; -160209;3;1;false;false;127;0;85;;; -160212;1;0;false;false;;;;;; -160213;13;0;false;false;0;0;0;;; -160226;3;1;false;false;127;0;85;;; -160229;1;0;false;false;;;;;; -160230;7;0;false;false;0;0;0;;; -160237;1;0;false;false;;;;;; -160238;1;0;false;false;0;0;0;;; -160239;3;0;false;false;;;;;; -160242;3;1;false;false;127;0;85;;; -160245;1;0;false;false;;;;;; -160246;4;0;false;false;0;0;0;;; -160250;1;0;false;false;;;;;; -160251;1;0;false;false;0;0;0;;; -160252;1;0;false;false;;;;;; -160253;39;0;false;false;0;0;0;;; -160292;3;0;false;false;;;;;; -160295;3;1;false;false;127;0;85;;; -160298;1;0;false;false;;;;;; -160299;10;0;false;false;0;0;0;;; -160309;1;0;false;false;;;;;; -160310;1;0;false;false;0;0;0;;; -160311;1;0;false;false;;;;;; -160312;37;0;false;false;0;0;0;;; -160349;3;0;false;false;;;;;; -160352;6;0;false;false;0;0;0;;; -160358;1;0;false;false;;;;;; -160359;8;0;false;false;0;0;0;;; -160367;1;0;false;false;;;;;; -160368;1;0;false;false;0;0;0;;; -160369;1;0;false;false;;;;;; -160370;29;0;false;false;0;0;0;;; -160399;5;0;false;false;;;;;; -160404;2;1;false;false;127;0;85;;; -160406;1;0;false;false;;;;;; -160407;7;0;false;false;0;0;0;;; -160414;1;0;false;false;;;;;; -160415;2;0;false;false;0;0;0;;; -160417;1;0;false;false;;;;;; -160418;2;0;false;false;0;0;0;;; -160420;1;0;false;false;;;;;; -160421;1;0;false;false;0;0;0;;; -160422;4;0;false;false;;;;;; -160426;6;1;false;false;127;0;85;;; -160432;1;0;false;false;;;;;; -160433;7;0;false;false;0;0;0;;; -160440;3;0;false;false;;;;;; -160443;1;0;false;false;0;0;0;;; -160444;3;0;false;false;;;;;; -160447;2;1;false;false;127;0;85;;; -160449;1;0;false;false;;;;;; -160450;7;0;false;false;0;0;0;;; -160457;1;0;false;false;;;;;; -160458;2;0;false;false;0;0;0;;; -160460;1;0;false;false;;;;;; -160461;11;0;false;false;0;0;0;;; -160472;1;0;false;false;;;;;; -160473;1;0;false;false;0;0;0;;; -160474;4;0;false;false;;;;;; -160478;7;0;false;false;0;0;0;;; -160485;4;0;false;false;;;;;; -160489;8;0;false;false;0;0;0;;; -160497;1;0;false;false;;;;;; -160498;1;0;false;false;0;0;0;;; -160499;1;0;false;false;;;;;; -160500;29;0;false;false;0;0;0;;; -160529;4;0;false;false;;;;;; -160533;6;0;false;false;0;0;0;;; -160539;1;0;false;false;;;;;; -160540;1;0;false;false;0;0;0;;; -160541;1;0;false;false;;;;;; -160542;36;0;false;false;0;0;0;;; -160578;1;0;false;false;;;;;; -160579;1;0;false;false;0;0;0;;; -160580;1;0;false;false;;;;;; -160581;18;0;false;false;0;0;0;;; -160599;3;0;false;false;;;;;; -160602;1;0;false;false;0;0;0;;; -160603;3;0;false;false;;;;;; -160606;4;1;false;false;127;0;85;;; -160610;1;0;false;false;;;;;; -160611;1;0;false;false;0;0;0;;; -160612;4;0;false;false;;;;;; -160616;10;0;false;false;0;0;0;;; -160626;1;0;false;false;;;;;; -160627;6;0;false;false;0;0;0;;; -160633;1;0;false;false;;;;;; -160634;1;0;false;false;0;0;0;;; -160635;1;0;false;false;;;;;; -160636;32;0;false;false;0;0;0;;; -160668;1;0;false;false;;;;;; -160669;12;0;false;false;0;0;0;;; -160681;4;0;false;false;;;;;; -160685;6;0;false;false;0;0;0;;; -160691;1;0;false;false;;;;;; -160692;2;0;false;false;0;0;0;;; -160694;1;0;false;false;;;;;; -160695;11;0;false;false;0;0;0;;; -160706;4;0;false;false;;;;;; -160710;6;0;false;false;0;0;0;;; -160716;1;0;false;false;;;;;; -160717;1;0;false;false;0;0;0;;; -160718;1;0;false;false;;;;;; -160719;32;0;false;false;0;0;0;;; -160751;1;0;false;false;;;;;; -160752;19;0;false;false;0;0;0;;; -160771;4;0;false;false;;;;;; -160775;6;0;false;false;0;0;0;;; -160781;1;0;false;false;;;;;; -160782;2;0;false;false;0;0;0;;; -160784;1;0;false;false;;;;;; -160785;11;0;false;false;0;0;0;;; -160796;4;0;false;false;;;;;; -160800;35;0;false;false;0;0;0;;; -160835;4;0;false;false;;;;;; -160839;1;0;false;false;0;0;0;;; -160840;3;0;false;false;;;;;; -160843;6;1;false;false;127;0;85;;; -160849;1;0;false;false;;;;;; -160850;7;0;false;false;0;0;0;;; -160857;2;0;false;false;;;;;; -160859;1;0;false;false;0;0;0;;; -160860;2;0;false;false;;;;;; -160862;3;0;false;false;63;95;191;;; -160865;3;0;false;false;;;;;; -160868;1;0;false;false;63;95;191;;; -160869;1;0;false;false;;;;;; -160870;7;0;false;false;63;95;191;;; -160877;1;0;false;false;;;;;; -160878;7;0;false;false;63;95;191;;; -160885;1;0;false;false;;;;;; -160886;3;0;false;false;63;95;191;;; -160889;1;0;false;false;;;;;; -160890;6;0;false;false;63;95;191;;; -160896;1;0;false;false;;;;;; -160897;5;0;false;false;63;95;191;;; -160902;1;0;false;false;;;;;; -160903;6;0;false;false;63;95;191;;; -160909;3;0;false;false;;;;;; -160912;1;0;false;false;63;95;191;;; -160913;1;0;false;false;;;;;; -160914;3;0;false;false;127;127;159;;; -160917;3;0;false;false;;;;;; -160920;1;0;false;false;63;95;191;;; -160921;3;0;false;false;;;;;; -160924;1;0;false;false;63;95;191;;; -160925;1;0;false;false;;;;;; -160926;8;1;false;false;127;159;191;;; -160934;4;0;false;false;63;95;191;;; -160938;1;0;false;false;;;;;; -160939;2;0;false;false;63;95;191;;; -160941;1;0;false;false;;;;;; -160942;6;0;false;false;63;95;191;;; -160948;1;0;false;false;;;;;; -160949;5;0;false;false;63;95;191;;; -160954;1;0;false;false;;;;;; -160955;6;0;false;false;63;95;191;;; -160961;1;0;false;false;;;;;; -160962;5;0;false;false;63;95;191;;; -160967;1;0;false;false;;;;;; -160968;9;0;false;false;63;95;191;;; -160977;3;0;false;false;;;;;; -160980;1;0;false;false;63;95;191;;; -160981;1;0;false;false;;;;;; -160982;7;1;false;false;127;159;191;;; -160989;3;0;false;false;63;95;191;;; -160992;3;0;false;false;;;;;; -160995;2;0;false;false;63;95;191;;; -160997;2;0;false;false;;;;;; -160999;6;1;false;false;127;0;85;;; -161005;1;0;false;false;;;;;; -161006;7;1;false;false;127;0;85;;; -161013;1;0;false;false;;;;;; -161014;13;0;false;false;0;0;0;;; -161027;1;0;false;false;;;;;; -161028;1;0;false;false;0;0;0;;; -161029;3;0;false;false;;;;;; -161032;14;0;false;false;0;0;0;;; -161046;3;0;false;false;;;;;; -161049;6;1;false;false;127;0;85;;; -161055;1;0;false;false;;;;;; -161056;9;0;false;false;0;0;0;;; -161065;2;0;false;false;;;;;; -161067;1;0;false;false;0;0;0;;; -161068;2;0;false;false;;;;;; -161070;3;0;false;false;63;95;191;;; -161073;4;0;false;false;;;;;; -161077;1;0;false;false;63;95;191;;; -161078;1;0;false;false;;;;;; -161079;7;0;false;false;63;95;191;;; -161086;1;0;false;false;;;;;; -161087;3;0;false;false;63;95;191;;; -161090;1;0;false;false;;;;;; -161091;1;0;false;false;63;95;191;;; -161092;1;0;false;false;;;;;; -161093;8;0;false;false;63;95;191;;; -161101;1;0;false;false;;;;;; -161102;2;0;false;false;63;95;191;;; -161104;1;0;false;false;;;;;; -161105;3;0;false;false;63;95;191;;; -161108;1;0;false;false;;;;;; -161109;9;0;false;false;63;95;191;;; -161118;1;0;false;false;;;;;; -161119;2;0;false;false;63;95;191;;; -161121;1;0;false;false;;;;;; -161122;3;0;false;false;63;95;191;;; -161125;1;0;false;false;;;;;; -161126;4;0;false;false;63;95;191;;; -161130;1;0;false;false;;;;;; -161131;6;0;false;false;63;95;191;;; -161137;1;0;false;false;;;;;; -161138;2;0;false;false;63;95;191;;; -161140;1;0;false;false;;;;;; -161141;3;0;false;false;63;95;191;;; -161144;1;0;false;false;;;;;; -161145;5;0;false;false;63;95;191;;; -161150;3;0;false;false;;;;;; -161153;1;0;false;false;63;95;191;;; -161154;1;0;false;false;;;;;; -161155;3;0;false;false;127;127;159;;; -161158;5;0;false;false;63;95;191;;; -161163;4;0;false;false;127;127;159;;; -161167;1;0;false;false;;;;;; -161168;4;0;false;false;63;95;191;;; -161172;1;0;false;false;;;;;; -161173;3;0;false;false;63;95;191;;; -161176;1;0;false;false;;;;;; -161177;6;0;false;false;63;95;191;;; -161183;1;0;false;false;;;;;; -161184;7;0;false;false;63;95;191;;; -161191;1;0;false;false;;;;;; -161192;6;0;false;false;63;95;191;;; -161198;1;0;false;false;;;;;; -161199;3;0;false;false;63;95;191;;; -161202;1;0;false;false;;;;;; -161203;4;0;false;false;63;95;191;;; -161207;1;0;false;false;;;;;; -161208;6;0;false;false;63;95;191;;; -161214;1;0;false;false;;;;;; -161215;5;0;false;false;63;95;191;;; -161220;1;0;false;false;;;;;; -161221;4;0;false;false;63;95;191;;; -161225;1;0;false;false;;;;;; -161226;7;0;false;false;63;95;191;;; -161233;1;0;false;false;;;;;; -161234;7;0;false;false;63;95;191;;; -161241;3;0;false;false;;;;;; -161244;1;0;false;false;63;95;191;;; -161245;1;0;false;false;;;;;; -161246;3;0;false;false;127;127;159;;; -161249;3;0;false;false;;;;;; -161252;1;0;false;false;63;95;191;;; -161253;3;0;false;false;;;;;; -161256;1;0;false;false;63;95;191;;; -161257;1;0;false;false;;;;;; -161258;8;1;false;false;127;159;191;;; -161266;1;0;false;false;63;95;191;;; -161267;1;0;false;false;;;;;; -161268;8;0;false;false;63;95;191;;; -161276;1;0;false;false;;;;;; -161277;2;0;false;false;63;95;191;;; -161279;1;0;false;false;;;;;; -161280;3;0;false;false;63;95;191;;; -161283;1;0;false;false;;;;;; -161284;9;0;false;false;63;95;191;;; -161293;1;0;false;false;;;;;; -161294;2;0;false;false;63;95;191;;; -161296;1;0;false;false;;;;;; -161297;3;0;false;false;63;95;191;;; -161300;1;0;false;false;;;;;; -161301;5;0;false;false;63;95;191;;; -161306;1;0;false;false;;;;;; -161307;6;0;false;false;63;95;191;;; -161313;1;0;false;false;;;;;; -161314;2;0;false;false;63;95;191;;; -161316;1;0;false;false;;;;;; -161317;3;0;false;false;63;95;191;;; -161320;1;0;false;false;;;;;; -161321;5;0;false;false;63;95;191;;; -161326;3;0;false;false;;;;;; -161329;2;0;false;false;63;95;191;;; -161331;2;0;false;false;;;;;; -161333;3;1;false;false;127;0;85;;; -161336;1;0;false;false;;;;;; -161337;19;0;false;false;0;0;0;;; -161356;1;0;false;false;;;;;; -161357;5;0;false;false;0;0;0;;; -161362;1;0;false;false;;;;;; -161363;3;1;false;false;127;0;85;;; -161366;1;0;false;false;;;;;; -161367;10;0;false;false;0;0;0;;; -161377;1;0;false;false;;;;;; -161378;3;1;false;false;127;0;85;;; -161381;1;0;false;false;;;;;; -161382;13;0;false;false;0;0;0;;; -161395;1;0;false;false;;;;;; -161396;1;0;false;false;0;0;0;;; -161397;3;0;false;false;;;;;; -161400;3;1;false;false;127;0;85;;; -161403;1;0;false;false;;;;;; -161404;1;0;false;false;0;0;0;;; -161405;1;0;false;false;;;;;; -161406;1;0;false;false;0;0;0;;; -161407;1;0;false;false;;;;;; -161408;2;0;false;false;0;0;0;;; -161410;3;0;false;false;;;;;; -161413;3;1;false;false;127;0;85;;; -161416;1;0;false;false;;;;;; -161417;10;0;false;false;0;0;0;;; -161427;1;0;false;false;;;;;; -161428;1;0;false;false;0;0;0;;; -161429;1;0;false;false;;;;;; -161430;14;0;false;false;0;0;0;;; -161444;3;0;false;false;;;;;; -161447;2;1;false;false;127;0;85;;; -161449;1;0;false;false;;;;;; -161450;10;0;false;false;0;0;0;;; -161460;1;0;false;false;;;;;; -161461;1;0;false;false;0;0;0;;; -161462;1;0;false;false;;;;;; -161463;22;0;false;false;0;0;0;;; -161485;1;0;false;false;;;;;; -161486;1;0;false;false;0;0;0;;; -161487;1;0;false;false;;;;;; -161488;2;0;false;false;0;0;0;;; -161490;1;0;false;false;;;;;; -161491;1;0;false;false;0;0;0;;; -161492;4;0;false;false;;;;;; -161496;3;1;false;false;127;0;85;;; -161499;1;0;false;false;;;;;; -161500;13;0;false;false;0;0;0;;; -161513;1;0;false;false;;;;;; -161514;1;0;false;false;0;0;0;;; -161515;1;0;false;false;;;;;; -161516;33;0;false;false;0;0;0;;; -161549;1;0;false;false;;;;;; -161550;1;0;false;false;0;0;0;;; -161551;1;0;false;false;;;;;; -161552;2;0;false;false;0;0;0;;; -161554;1;0;false;false;;;;;; -161555;1;0;false;false;0;0;0;;; -161556;1;0;false;false;;;;;; -161557;2;0;false;false;0;0;0;;; -161559;4;0;false;false;;;;;; -161563;2;1;false;false;127;0;85;;; -161565;1;0;false;false;;;;;; -161566;11;0;false;false;0;0;0;;; -161577;1;0;false;false;;;;;; -161578;1;0;false;false;0;0;0;;; -161579;1;0;false;false;;;;;; -161580;12;0;false;false;0;0;0;;; -161592;1;0;false;false;;;;;; -161593;2;0;false;false;0;0;0;;; -161595;1;0;false;false;;;;;; -161596;12;0;false;false;0;0;0;;; -161608;1;0;false;false;;;;;; -161609;2;0;false;false;0;0;0;;; -161611;1;0;false;false;;;;;; -161612;14;0;false;false;0;0;0;;; -161626;1;0;false;false;;;;;; -161627;1;0;false;false;0;0;0;;; -161628;5;0;false;false;;;;;; -161633;12;0;false;false;0;0;0;;; -161645;1;0;false;false;;;;;; -161646;1;0;false;false;0;0;0;;; -161647;1;0;false;false;;;;;; -161648;11;0;false;false;0;0;0;;; -161659;4;0;false;false;;;;;; -161663;1;0;false;false;0;0;0;;; -161664;3;0;false;false;;;;;; -161667;1;0;false;false;0;0;0;;; -161668;3;0;false;false;;;;;; -161671;2;1;false;false;127;0;85;;; -161673;1;0;false;false;;;;;; -161674;11;0;false;false;0;0;0;;; -161685;1;0;false;false;;;;;; -161686;2;0;false;false;0;0;0;;; -161688;1;0;false;false;;;;;; -161689;1;0;false;false;0;0;0;;; -161690;2;0;false;false;;;;;; -161692;2;0;false;false;0;0;0;;; -161694;1;0;false;false;;;;;; -161695;12;0;false;false;0;0;0;;; -161707;1;0;false;false;;;;;; -161708;2;0;false;false;0;0;0;;; -161710;1;0;false;false;;;;;; -161711;11;0;false;false;0;0;0;;; -161722;1;0;false;false;;;;;; -161723;1;0;false;false;0;0;0;;; -161724;4;0;false;false;;;;;; -161728;3;1;false;false;127;0;85;;; -161731;1;0;false;false;;;;;; -161732;10;0;false;false;0;0;0;;; -161742;1;0;false;false;;;;;; -161743;1;0;false;false;0;0;0;;; -161744;1;0;false;false;;;;;; -161745;35;0;false;false;0;0;0;;; -161780;4;0;false;false;;;;;; -161784;10;0;false;false;0;0;0;;; -161794;1;0;false;false;;;;;; -161795;6;0;false;false;0;0;0;;; -161801;1;0;false;false;;;;;; -161802;1;0;false;false;0;0;0;;; -161803;1;0;false;false;;;;;; -161804;28;0;false;false;0;0;0;;; -161832;1;0;false;false;;;;;; -161833;12;0;false;false;0;0;0;;; -161845;4;0;false;false;;;;;; -161849;2;1;false;false;127;0;85;;; -161851;1;0;false;false;;;;;; -161852;11;0;false;false;0;0;0;;; -161863;1;0;false;false;;;;;; -161864;2;0;false;false;0;0;0;;; -161866;1;0;false;false;;;;;; -161867;12;0;false;false;0;0;0;;; -161879;1;0;false;false;;;;;; -161880;2;0;false;false;0;0;0;;; -161882;1;0;false;false;;;;;; -161883;2;0;false;false;0;0;0;;; -161885;1;0;false;false;;;;;; -161886;1;0;false;false;0;0;0;;; -161887;5;0;false;false;;;;;; -161892;1;0;false;false;0;0;0;;; -161893;1;0;false;false;;;;;; -161894;1;0;false;false;0;0;0;;; -161895;1;0;false;false;;;;;; -161896;32;0;false;false;0;0;0;;; -161928;1;0;false;false;;;;;; -161929;5;1;false;false;127;0;85;;; -161934;4;0;false;false;0;0;0;;; -161938;4;0;false;false;;;;;; -161942;1;0;false;false;0;0;0;;; -161943;1;0;false;false;;;;;; -161944;4;1;false;false;127;0;85;;; -161948;1;0;false;false;;;;;; -161949;1;0;false;false;0;0;0;;; -161950;5;0;false;false;;;;;; -161955;1;0;false;false;0;0;0;;; -161956;1;0;false;false;;;;;; -161957;1;0;false;false;0;0;0;;; -161958;1;0;false;false;;;;;; -161959;31;0;false;false;0;0;0;;; -161990;1;0;false;false;;;;;; -161991;1;0;false;false;0;0;0;;; -161992;1;0;false;false;;;;;; -161993;2;0;false;false;0;0;0;;; -161995;1;0;false;false;;;;;; -161996;4;1;false;false;127;0;85;;; -162000;4;0;false;false;0;0;0;;; -162004;4;0;false;false;;;;;; -162008;1;0;false;false;0;0;0;;; -162009;4;0;false;false;;;;;; -162013;35;0;false;false;0;0;0;;; -162048;3;0;false;false;;;;;; -162051;1;0;false;false;0;0;0;;; -162052;3;0;false;false;;;;;; -162055;6;1;false;false;127;0;85;;; -162061;1;0;false;false;;;;;; -162062;1;0;false;false;0;0;0;;; -162063;1;0;false;false;;;;;; -162064;1;0;false;false;0;0;0;;; -162065;1;0;false;false;;;;;; -162066;10;0;false;false;0;0;0;;; -162076;1;0;false;false;;;;;; -162077;1;0;false;false;0;0;0;;; -162078;1;0;false;false;;;;;; -162079;23;0;false;false;0;0;0;;; -162102;2;0;false;false;;;;;; -162104;1;0;false;false;0;0;0;;; -162105;2;0;false;false;;;;;; -162107;3;0;false;false;63;95;191;;; -162110;4;0;false;false;;;;;; -162114;1;0;false;false;63;95;191;;; -162115;1;0;false;false;;;;;; -162116;7;0;false;false;63;95;191;;; -162123;1;0;false;false;;;;;; -162124;1;0;false;false;63;95;191;;; -162125;1;0;false;false;;;;;; -162126;7;0;false;false;63;95;191;;; -162133;2;0;false;false;;;;;; -162135;3;0;false;false;63;95;191;;; -162138;1;0;false;false;;;;;; -162139;3;0;false;false;63;95;191;;; -162142;1;0;false;false;;;;;; -162143;9;0;false;false;63;95;191;;; -162152;1;0;false;false;;;;;; -162153;2;0;false;false;63;95;191;;; -162155;1;0;false;false;;;;;; -162156;8;0;false;false;63;95;191;;; -162164;1;0;false;false;;;;;; -162165;4;0;false;false;63;95;191;;; -162169;1;0;false;false;;;;;; -162170;3;0;false;false;63;95;191;;; -162173;1;0;false;false;;;;;; -162174;3;0;false;false;63;95;191;;; -162177;1;0;false;false;;;;;; -162178;5;0;false;false;63;95;191;;; -162183;5;0;false;false;;;;;; -162188;1;0;false;false;63;95;191;;; -162189;1;0;false;false;;;;;; -162190;3;0;false;false;127;127;159;;; -162193;3;0;false;false;;;;;; -162196;1;0;false;false;63;95;191;;; -162197;3;0;false;false;;;;;; -162200;1;0;false;false;63;95;191;;; -162201;1;0;false;false;;;;;; -162202;7;1;false;false;127;159;191;;; -162209;6;0;false;false;63;95;191;;; -162215;1;0;false;false;;;;;; -162216;3;0;false;false;63;95;191;;; -162219;1;0;false;false;;;;;; -162220;6;0;false;false;63;95;191;;; -162226;3;0;false;false;;;;;; -162229;1;0;false;false;63;95;191;;; -162230;1;0;false;false;;;;;; -162231;5;1;false;false;127;159;191;;; -162236;33;0;false;false;63;95;191;;; -162269;3;0;false;false;;;;;; -162272;1;0;false;false;63;95;191;;; -162273;1;0;false;false;;;;;; -162274;11;1;false;false;127;159;191;;; -162285;12;0;false;false;63;95;191;;; -162297;1;0;false;false;;;;;; -162298;4;0;false;false;127;127;159;;; -162302;3;0;false;false;;;;;; -162305;1;0;false;false;63;95;191;;; -162306;4;0;false;false;;;;;; -162310;4;0;false;false;127;127;159;;; -162314;21;0;false;false;63;95;191;;; -162335;1;0;false;false;;;;;; -162336;1;0;false;false;127;127;159;;; -162337;1;0;false;false;;;;;; -162338;2;0;false;false;63;95;191;;; -162340;1;0;false;false;;;;;; -162341;3;0;false;false;63;95;191;;; -162344;1;0;false;false;;;;;; -162345;8;0;false;false;63;95;191;;; -162353;1;0;false;false;;;;;; -162354;3;0;false;false;63;95;191;;; -162357;1;0;false;false;;;;;; -162358;4;0;false;false;63;95;191;;; -162362;1;0;false;false;;;;;; -162363;8;0;false;false;63;95;191;;; -162371;5;0;false;false;127;127;159;;; -162376;3;0;false;false;;;;;; -162379;1;0;false;false;63;95;191;;; -162380;4;0;false;false;;;;;; -162384;4;0;false;false;127;127;159;;; -162388;27;0;false;false;63;95;191;;; -162415;1;0;false;false;;;;;; -162416;1;0;false;false;127;127;159;;; -162417;1;0;false;false;;;;;; -162418;2;0;false;false;63;95;191;;; -162420;1;0;false;false;;;;;; -162421;3;0;false;false;63;95;191;;; -162424;1;0;false;false;;;;;; -162425;6;0;false;false;63;95;191;;; -162431;1;0;false;false;;;;;; -162432;4;0;false;false;63;95;191;;; -162436;1;0;false;false;;;;;; -162437;3;0;false;false;63;95;191;;; -162440;1;0;false;false;;;;;; -162441;6;0;false;false;63;95;191;;; -162447;1;0;false;false;;;;;; -162448;4;0;false;false;63;95;191;;; -162452;1;0;false;false;;;;;; -162453;7;0;false;false;63;95;191;;; -162460;1;0;false;false;;;;;; -162461;3;0;false;false;63;95;191;;; -162464;1;0;false;false;;;;;; -162465;8;0;false;false;63;95;191;;; -162473;5;0;false;false;127;127;159;;; -162478;3;0;false;false;;;;;; -162481;1;0;false;false;63;95;191;;; -162482;1;0;false;false;;;;;; -162483;5;0;false;false;127;127;159;;; -162488;3;0;false;false;;;;;; -162491;1;0;false;false;63;95;191;;; -162492;1;0;false;false;;;;;; -162493;11;1;false;false;127;159;191;;; -162504;24;0;false;false;63;95;191;;; -162528;1;0;false;false;;;;;; -162529;4;0;false;false;127;127;159;;; -162533;3;0;false;false;;;;;; -162536;1;0;false;false;63;95;191;;; -162537;4;0;false;false;;;;;; -162541;4;0;false;false;127;127;159;;; -162545;19;0;false;false;63;95;191;;; -162564;1;0;false;false;;;;;; -162565;4;0;false;false;63;95;191;;; -162569;1;0;false;false;;;;;; -162570;6;0;false;false;63;95;191;;; -162576;1;0;false;false;;;;;; -162577;2;0;false;false;63;95;191;;; -162579;1;0;false;false;;;;;; -162580;4;0;false;false;63;95;191;;; -162584;5;0;false;false;127;127;159;;; -162589;3;0;false;false;;;;;; -162592;1;0;false;false;63;95;191;;; -162593;1;0;false;false;;;;;; -162594;5;0;false;false;127;127;159;;; -162599;3;0;false;false;;;;;; -162602;2;0;false;false;63;95;191;;; -162604;2;0;false;false;;;;;; -162606;6;1;false;false;127;0;85;;; -162612;1;0;false;false;;;;;; -162613;4;1;false;false;127;0;85;;; -162617;1;0;false;false;;;;;; -162618;13;0;false;false;0;0;0;;; -162631;1;0;false;false;;;;;; -162632;7;0;false;false;0;0;0;;; -162639;1;0;false;false;;;;;; -162640;1;0;false;false;0;0;0;;; -162641;3;0;false;false;;;;;; -162644;14;0;false;false;0;0;0;;; -162658;3;0;false;false;;;;;; -162661;2;1;false;false;127;0;85;;; -162663;1;0;false;false;;;;;; -162664;7;0;false;false;0;0;0;;; -162671;1;0;false;false;;;;;; -162672;2;0;false;false;0;0;0;;; -162674;1;0;false;false;;;;;; -162675;4;1;false;false;127;0;85;;; -162679;1;0;false;false;0;0;0;;; -162680;1;0;false;false;;;;;; -162681;1;0;false;false;0;0;0;;; -162682;4;0;false;false;;;;;; -162686;35;0;false;false;0;0;0;;; -162721;3;0;false;false;;;;;; -162724;1;0;false;false;0;0;0;;; -162725;3;0;false;false;;;;;; -162728;5;0;false;false;0;0;0;;; -162733;1;0;false;false;;;;;; -162734;3;0;false;false;0;0;0;;; -162737;1;0;false;false;;;;;; -162738;1;0;false;false;0;0;0;;; -162739;1;0;false;false;;;;;; -162740;20;0;false;false;0;0;0;;; -162760;3;0;false;false;;;;;; -162763;23;0;false;false;0;0;0;;; -162786;1;0;false;false;;;;;; -162787;6;0;false;false;0;0;0;;; -162793;1;0;false;false;;;;;; -162794;8;0;false;false;0;0;0;;; -162802;2;0;false;false;;;;;; -162804;1;0;false;false;0;0;0;;; -162805;2;0;false;false;;;;;; -162807;3;0;false;false;63;95;191;;; -162810;3;0;false;false;;;;;; -162813;1;0;false;false;63;95;191;;; -162814;1;0;false;false;;;;;; -162815;7;0;false;false;63;95;191;;; -162822;1;0;false;false;;;;;; -162823;7;0;false;false;63;95;191;;; -162830;1;0;false;false;;;;;; -162831;6;0;false;false;63;95;191;;; -162837;1;0;false;false;;;;;; -162838;9;0;false;false;63;95;191;;; -162847;1;0;false;false;;;;;; -162848;3;0;false;false;63;95;191;;; -162851;1;0;false;false;;;;;; -162852;3;0;false;false;63;95;191;;; -162855;1;0;false;false;;;;;; -162856;3;0;false;false;63;95;191;;; -162859;1;0;false;false;;;;;; -162860;7;0;false;false;63;95;191;;; -162867;1;0;false;false;;;;;; -162868;7;0;false;false;63;95;191;;; -162875;1;0;false;false;;;;;; -162876;6;0;false;false;63;95;191;;; -162882;3;0;false;false;;;;;; -162885;2;0;false;false;63;95;191;;; -162887;2;0;false;false;;;;;; -162889;4;1;false;false;127;0;85;;; -162893;1;0;false;false;;;;;; -162894;23;0;false;false;0;0;0;;; -162917;1;0;false;false;;;;;; -162918;1;0;false;false;0;0;0;;; -162919;3;0;false;false;;;;;; -162922;18;0;false;false;0;0;0;;; -162940;1;0;false;false;;;;;; -162941;1;0;false;false;0;0;0;;; -162942;1;0;false;false;;;;;; -162943;3;1;false;false;127;0;85;;; -162946;1;0;false;false;;;;;; -162947;20;0;false;false;0;0;0;;; -162967;1;0;false;false;;;;;; -162968;1;0;false;false;0;0;0;;; -162969;4;0;false;false;;;;;; -162973;6;1;false;false;127;0;85;;; -162979;1;0;false;false;;;;;; -162980;4;1;false;false;127;0;85;;; -162984;1;0;false;false;;;;;; -162985;30;0;false;false;0;0;0;;; -163015;1;0;false;false;;;;;; -163016;6;0;false;false;0;0;0;;; -163022;1;0;false;false;;;;;; -163023;1;0;false;false;0;0;0;;; -163024;5;0;false;false;;;;;; -163029;26;0;false;false;0;0;0;;; -163055;4;0;false;false;;;;;; -163059;1;0;false;false;0;0;0;;; -163060;4;0;false;false;;;;;; -163064;6;1;false;false;127;0;85;;; -163070;1;0;false;false;;;;;; -163071;4;1;false;false;127;0;85;;; -163075;1;0;false;false;;;;;; -163076;28;0;false;false;0;0;0;;; -163104;1;0;false;false;;;;;; -163105;6;0;false;false;0;0;0;;; -163111;1;0;false;false;;;;;; -163112;1;0;false;false;0;0;0;;; -163113;5;0;false;false;;;;;; -163118;25;0;false;false;0;0;0;;; -163143;4;0;false;false;;;;;; -163147;1;0;false;false;0;0;0;;; -163148;4;0;false;false;;;;;; -163152;6;1;false;false;127;0;85;;; -163158;1;0;false;false;;;;;; -163159;4;1;false;false;127;0;85;;; -163163;1;0;false;false;;;;;; -163164;24;0;false;false;0;0;0;;; -163188;1;0;false;false;;;;;; -163189;6;0;false;false;0;0;0;;; -163195;1;0;false;false;;;;;; -163196;1;0;false;false;0;0;0;;; -163197;5;0;false;false;;;;;; -163202;21;0;false;false;0;0;0;;; -163223;4;0;false;false;;;;;; -163227;1;0;false;false;0;0;0;;; -163228;3;0;false;false;;;;;; -163231;2;0;false;false;0;0;0;;; -163233;3;0;false;false;;;;;; -163236;14;0;false;false;0;0;0;;; -163250;1;0;false;false;;;;;; -163251;1;0;false;false;0;0;0;;; -163252;1;0;false;false;;;;;; -163253;7;0;false;false;0;0;0;;; -163260;1;0;false;false;;;;;; -163261;1;0;false;false;0;0;0;;; -163262;1;0;false;false;;;;;; -163263;3;1;false;false;127;0;85;;; -163266;1;0;false;false;;;;;; -163267;17;0;false;false;0;0;0;;; -163284;3;0;false;false;;;;;; -163287;50;0;false;false;0;0;0;;; -163337;2;0;false;false;;;;;; -163339;1;0;false;false;0;0;0;;; -163340;2;0;false;false;;;;;; -163342;3;0;false;false;63;95;191;;; -163345;3;0;false;false;;;;;; -163348;1;0;false;false;63;95;191;;; -163349;1;0;false;false;;;;;; -163350;7;0;false;false;63;95;191;;; -163357;1;0;false;false;;;;;; -163358;1;0;false;false;63;95;191;;; -163359;1;0;false;false;;;;;; -163360;7;0;false;false;63;95;191;;; -163367;1;0;false;false;;;;;; -163368;4;0;false;false;63;95;191;;; -163372;1;0;false;false;;;;;; -163373;5;0;false;false;63;95;191;;; -163378;1;0;false;false;;;;;; -163379;9;0;false;false;63;95;191;;; -163388;3;0;false;false;;;;;; -163391;1;0;false;false;63;95;191;;; -163392;1;0;false;false;;;;;; -163393;4;0;false;false;63;95;191;;; -163397;1;0;false;false;;;;;; -163398;2;0;false;false;63;95;191;;; -163400;1;0;false;false;;;;;; -163401;5;0;false;false;63;95;191;;; -163406;1;0;false;false;;;;;; -163407;4;0;false;false;63;95;191;;; -163411;1;0;false;false;;;;;; -163412;10;0;false;false;63;95;191;;; -163422;1;0;false;false;;;;;; -163423;6;0;false;false;63;95;191;;; -163429;1;0;false;false;;;;;; -163430;3;0;false;false;63;95;191;;; -163433;1;0;false;false;;;;;; -163434;7;0;false;false;63;95;191;;; -163441;3;0;false;false;;;;;; -163444;1;0;false;false;63;95;191;;; -163445;1;0;false;false;;;;;; -163446;7;0;false;false;63;95;191;;; -163453;1;0;false;false;;;;;; -163454;4;0;false;false;63;95;191;;; -163458;1;0;false;false;;;;;; -163459;3;0;false;false;63;95;191;;; -163462;1;0;false;false;;;;;; -163463;4;0;false;false;63;95;191;;; -163467;1;0;false;false;;;;;; -163468;4;0;false;false;63;95;191;;; -163472;1;0;false;false;;;;;; -163473;1;0;false;false;63;95;191;;; -163474;1;0;false;false;;;;;; -163475;18;0;false;false;63;95;191;;; -163493;3;0;false;false;;;;;; -163496;1;0;false;false;63;95;191;;; -163497;1;0;false;false;;;;;; -163498;3;0;false;false;127;127;159;;; -163501;3;0;false;false;;;;;; -163504;1;0;false;false;63;95;191;;; -163505;3;0;false;false;;;;;; -163508;1;0;false;false;63;95;191;;; -163509;1;0;false;false;;;;;; -163510;5;1;false;false;127;159;191;;; -163515;21;0;false;false;63;95;191;;; -163536;3;0;false;false;;;;;; -163539;2;0;false;false;63;95;191;;; -163541;2;0;false;false;;;;;; -163543;4;1;false;false;127;0;85;;; -163547;1;0;false;false;;;;;; -163548;26;0;false;false;0;0;0;;; -163574;1;0;false;false;;;;;; -163575;1;0;false;false;0;0;0;;; -163576;3;0;false;false;;;;;; -163579;17;0;false;false;0;0;0;;; -163596;1;0;false;false;;;;;; -163597;1;0;false;false;0;0;0;;; -163598;1;0;false;false;;;;;; -163599;3;1;false;false;127;0;85;;; -163602;1;0;false;false;;;;;; -163603;34;0;false;false;0;0;0;;; -163637;3;0;false;false;;;;;; -163640;18;0;false;false;0;0;0;;; -163658;1;0;false;false;;;;;; -163659;13;0;false;false;0;0;0;;; -163672;1;0;false;false;;;;;; -163673;1;0;false;false;0;0;0;;; -163674;1;0;false;false;;;;;; -163675;3;1;false;false;127;0;85;;; -163678;1;0;false;false;;;;;; -163679;38;0;false;false;0;0;0;;; -163717;3;0;false;false;;;;;; -163720;2;1;false;false;127;0;85;;; -163722;1;0;false;false;;;;;; -163723;16;0;false;false;0;0;0;;; -163739;1;0;false;false;;;;;; -163740;1;0;false;false;0;0;0;;; -163741;4;0;false;false;;;;;; -163745;25;0;false;false;0;0;0;;; -163770;1;0;false;false;;;;;; -163771;15;0;false;false;0;0;0;;; -163786;3;0;false;false;;;;;; -163789;1;0;false;false;0;0;0;;; -163790;3;0;false;false;;;;;; -163793;2;1;false;false;127;0;85;;; -163795;1;0;false;false;;;;;; -163796;21;0;false;false;0;0;0;;; -163817;1;0;false;false;;;;;; -163818;1;0;false;false;0;0;0;;; -163819;4;0;false;false;;;;;; -163823;30;0;false;false;0;0;0;;; -163853;1;0;false;false;;;;;; -163854;15;0;false;false;0;0;0;;; -163869;3;0;false;false;;;;;; -163872;1;0;false;false;0;0;0;;; -163873;2;0;false;false;;;;;; -163875;1;0;false;false;0;0;0;;; -163876;2;0;false;false;;;;;; -163878;3;0;false;false;63;95;191;;; -163881;4;0;false;false;;;;;; -163885;1;0;false;false;63;95;191;;; -163886;1;0;false;false;;;;;; -163887;4;0;false;false;63;95;191;;; -163891;1;0;false;false;;;;;; -163892;5;0;false;false;63;95;191;;; -163897;1;0;false;false;;;;;; -163898;9;0;false;false;63;95;191;;; -163907;3;0;false;false;;;;;; -163910;2;0;false;false;63;95;191;;; -163912;2;0;false;false;;;;;; -163914;4;1;false;false;127;0;85;;; -163918;1;0;false;false;;;;;; -163919;18;0;false;false;0;0;0;;; -163937;1;0;false;false;;;;;; -163938;1;0;false;false;0;0;0;;; -163939;3;0;false;false;;;;;; -163942;9;0;false;false;0;0;0;;; -163951;1;0;false;false;;;;;; -163952;11;0;false;false;0;0;0;;; -163963;1;0;false;false;;;;;; -163964;1;0;false;false;0;0;0;;; -163965;1;0;false;false;;;;;; -163966;17;0;false;false;0;0;0;;; -163983;3;0;false;false;;;;;; -163986;9;0;false;false;0;0;0;;; -163995;1;0;false;false;;;;;; -163996;13;0;false;false;0;0;0;;; -164009;1;0;false;false;;;;;; -164010;1;0;false;false;0;0;0;;; -164011;1;0;false;false;;;;;; -164012;19;0;false;false;0;0;0;;; -164031;6;0;false;false;;;;;; -164037;8;0;false;false;0;0;0;;; -164045;1;0;false;false;;;;;; -164046;1;0;false;false;0;0;0;;; -164047;1;0;false;false;;;;;; -164048;3;1;false;false;127;0;85;;; -164051;1;0;false;false;;;;;; -164052;10;0;false;false;0;0;0;;; -164062;1;0;false;false;;;;;; -164063;1;0;false;false;0;0;0;;; -164064;4;0;false;false;;;;;; -164068;6;1;false;false;127;0;85;;; -164074;1;0;false;false;;;;;; -164075;4;1;false;false;127;0;85;;; -164079;1;0;false;false;;;;;; -164080;17;0;false;false;0;0;0;;; -164097;1;0;false;false;;;;;; -164098;6;0;false;false;0;0;0;;; -164104;1;0;false;false;;;;;; -164105;1;0;false;false;0;0;0;;; -164106;5;0;false;false;;;;;; -164111;6;1;false;false;127;0;85;;; -164117;1;0;false;false;;;;;; -164118;12;0;false;false;0;0;0;;; -164130;1;0;false;false;;;;;; -164131;1;0;false;false;0;0;0;;; -164132;6;0;false;false;;;;;; -164138;4;1;false;false;127;0;85;;; -164142;1;0;false;false;;;;;; -164143;12;0;false;false;0;0;0;;; -164155;1;0;false;false;;;;;; -164156;21;0;false;false;0;0;0;;; -164177;1;0;false;false;;;;;; -164178;5;1;false;false;127;0;85;;; -164183;1;0;false;false;0;0;0;;; -164184;6;0;false;false;;;;;; -164190;4;1;false;false;127;0;85;;; -164194;1;0;false;false;;;;;; -164195;12;0;false;false;0;0;0;;; -164207;1;0;false;false;;;;;; -164208;21;0;false;false;0;0;0;;; -164229;1;0;false;false;;;;;; -164230;5;1;false;false;127;0;85;;; -164235;1;0;false;false;0;0;0;;; -164236;6;0;false;false;;;;;; -164242;4;1;false;false;127;0;85;;; -164246;1;0;false;false;;;;;; -164247;10;0;false;false;0;0;0;;; -164257;1;0;false;false;;;;;; -164258;19;0;false;false;0;0;0;;; -164277;1;0;false;false;;;;;; -164278;5;1;false;false;127;0;85;;; -164283;1;0;false;false;0;0;0;;; -164284;6;0;false;false;;;;;; -164290;4;1;false;false;127;0;85;;; -164294;1;0;false;false;;;;;; -164295;14;0;false;false;0;0;0;;; -164309;1;0;false;false;;;;;; -164310;23;0;false;false;0;0;0;;; -164333;1;0;false;false;;;;;; -164334;5;1;false;false;127;0;85;;; -164339;1;0;false;false;0;0;0;;; -164340;6;0;false;false;;;;;; -164346;4;1;false;false;127;0;85;;; -164350;1;0;false;false;;;;;; -164351;12;0;false;false;0;0;0;;; -164363;1;0;false;false;;;;;; -164364;21;0;false;false;0;0;0;;; -164385;1;0;false;false;;;;;; -164386;5;1;false;false;127;0;85;;; -164391;1;0;false;false;0;0;0;;; -164392;6;0;false;false;;;;;; -164398;4;1;false;false;127;0;85;;; -164402;1;0;false;false;;;;;; -164403;21;0;false;false;0;0;0;;; -164424;1;0;false;false;;;;;; -164425;30;0;false;false;0;0;0;;; -164455;1;0;false;false;;;;;; -164456;5;1;false;false;127;0;85;;; -164461;1;0;false;false;0;0;0;;; -164462;6;0;false;false;;;;;; -164468;4;1;false;false;127;0;85;;; -164472;1;0;false;false;;;;;; -164473;14;0;false;false;0;0;0;;; -164487;1;0;false;false;;;;;; -164488;23;0;false;false;0;0;0;;; -164511;1;0;false;false;;;;;; -164512;5;1;false;false;127;0;85;;; -164517;1;0;false;false;0;0;0;;; -164518;6;0;false;false;;;;;; -164524;4;1;false;false;127;0;85;;; -164528;1;0;false;false;;;;;; -164529;10;0;false;false;0;0;0;;; -164539;1;0;false;false;;;;;; -164540;19;0;false;false;0;0;0;;; -164559;1;0;false;false;;;;;; -164560;5;1;false;false;127;0;85;;; -164565;1;0;false;false;0;0;0;;; -164566;6;0;false;false;;;;;; -164572;4;1;false;false;127;0;85;;; -164576;1;0;false;false;;;;;; -164577;11;0;false;false;0;0;0;;; -164588;1;0;false;false;;;;;; -164589;20;0;false;false;0;0;0;;; -164609;1;0;false;false;;;;;; -164610;5;1;false;false;127;0;85;;; -164615;1;0;false;false;0;0;0;;; -164616;6;0;false;false;;;;;; -164622;4;1;false;false;127;0;85;;; -164626;1;0;false;false;;;;;; -164627;13;0;false;false;0;0;0;;; -164640;1;0;false;false;;;;;; -164641;22;0;false;false;0;0;0;;; -164663;1;0;false;false;;;;;; -164664;5;1;false;false;127;0;85;;; -164669;1;0;false;false;0;0;0;;; -164670;5;0;false;false;;;;;; -164675;1;0;false;false;0;0;0;;; -164676;4;0;false;false;;;;;; -164680;1;0;false;false;0;0;0;;; -164681;5;0;false;false;;;;;; -164686;2;0;false;false;0;0;0;;; -164688;3;0;false;false;;;;;; -164691;24;0;false;false;0;0;0;;; -164715;1;0;false;false;;;;;; -164716;10;0;false;false;0;0;0;;; -164726;3;0;false;false;;;;;; -164729;24;0;false;false;0;0;0;;; -164753;1;0;false;false;;;;;; -164754;10;0;false;false;0;0;0;;; -164764;3;0;false;false;;;;;; -164767;22;0;false;false;0;0;0;;; -164789;1;0;false;false;;;;;; -164790;10;0;false;false;0;0;0;;; -164800;3;0;false;false;;;;;; -164803;26;0;false;false;0;0;0;;; -164829;1;0;false;false;;;;;; -164830;10;0;false;false;0;0;0;;; -164840;3;0;false;false;;;;;; -164843;24;0;false;false;0;0;0;;; -164867;1;0;false;false;;;;;; -164868;10;0;false;false;0;0;0;;; -164878;3;0;false;false;;;;;; -164881;33;0;false;false;0;0;0;;; -164914;1;0;false;false;;;;;; -164915;10;0;false;false;0;0;0;;; -164925;3;0;false;false;;;;;; -164928;26;0;false;false;0;0;0;;; -164954;1;0;false;false;;;;;; -164955;10;0;false;false;0;0;0;;; -164965;3;0;false;false;;;;;; -164968;22;0;false;false;0;0;0;;; -164990;1;0;false;false;;;;;; -164991;10;0;false;false;0;0;0;;; -165001;3;0;false;false;;;;;; -165004;23;0;false;false;0;0;0;;; -165027;1;0;false;false;;;;;; -165028;10;0;false;false;0;0;0;;; -165038;3;0;false;false;;;;;; -165041;25;0;false;false;0;0;0;;; -165066;1;0;false;false;;;;;; -165067;10;0;false;false;0;0;0;;; -165077;3;0;false;false;;;;;; -165080;2;1;false;false;127;0;85;;; -165082;1;0;false;false;;;;;; -165083;12;0;false;false;0;0;0;;; -165095;1;0;false;false;;;;;; -165096;2;0;false;false;0;0;0;;; -165098;1;0;false;false;;;;;; -165099;4;1;false;false;127;0;85;;; -165103;1;0;false;false;0;0;0;;; -165104;1;0;false;false;;;;;; -165105;1;0;false;false;0;0;0;;; -165106;4;0;false;false;;;;;; -165110;38;0;false;false;0;0;0;;; -165148;1;0;false;false;;;;;; -165149;3;1;false;false;127;0;85;;; -165152;1;0;false;false;;;;;; -165153;10;0;false;false;0;0;0;;; -165163;1;0;false;false;;;;;; -165164;1;0;false;false;0;0;0;;; -165165;5;0;false;false;;;;;; -165170;6;1;false;false;127;0;85;;; -165176;1;0;false;false;;;;;; -165177;4;1;false;false;127;0;85;;; -165181;1;0;false;false;;;;;; -165182;17;0;false;false;0;0;0;;; -165199;1;0;false;false;;;;;; -165200;6;0;false;false;0;0;0;;; -165206;1;0;false;false;;;;;; -165207;1;0;false;false;0;0;0;;; -165208;6;0;false;false;;;;;; -165214;28;0;false;false;0;0;0;;; -165242;5;0;false;false;;;;;; -165247;1;0;false;false;0;0;0;;; -165248;4;0;false;false;;;;;; -165252;3;0;false;false;0;0;0;;; -165255;3;0;false;false;;;;;; -165258;1;0;false;false;0;0;0;;; -165259;3;0;false;false;;;;;; -165262;2;1;false;false;127;0;85;;; -165264;1;0;false;false;;;;;; -165265;14;0;false;false;0;0;0;;; -165279;1;0;false;false;;;;;; -165280;2;0;false;false;0;0;0;;; -165282;1;0;false;false;;;;;; -165283;4;1;false;false;127;0;85;;; -165287;1;0;false;false;0;0;0;;; -165288;1;0;false;false;;;;;; -165289;1;0;false;false;0;0;0;;; -165290;4;0;false;false;;;;;; -165294;40;0;false;false;0;0;0;;; -165334;1;0;false;false;;;;;; -165335;3;1;false;false;127;0;85;;; -165338;1;0;false;false;;;;;; -165339;10;0;false;false;0;0;0;;; -165349;1;0;false;false;;;;;; -165350;1;0;false;false;0;0;0;;; -165351;5;0;false;false;;;;;; -165356;6;1;false;false;127;0;85;;; -165362;1;0;false;false;;;;;; -165363;4;1;false;false;127;0;85;;; -165367;1;0;false;false;;;;;; -165368;17;0;false;false;0;0;0;;; -165385;1;0;false;false;;;;;; -165386;6;0;false;false;0;0;0;;; -165392;1;0;false;false;;;;;; -165393;1;0;false;false;0;0;0;;; -165394;6;0;false;false;;;;;; -165400;30;0;false;false;0;0;0;;; -165430;5;0;false;false;;;;;; -165435;1;0;false;false;0;0;0;;; -165436;4;0;false;false;;;;;; -165440;3;0;false;false;0;0;0;;; -165443;3;0;false;false;;;;;; -165446;1;0;false;false;0;0;0;;; -165447;2;0;false;false;;;;;; -165449;1;0;false;false;0;0;0;;; -165450;2;0;false;false;;;;;; -165452;17;0;false;false;0;0;0;;; -165469;1;0;false;false;;;;;; -165470;20;0;false;false;0;0;0;;; -165490;1;0;false;false;;;;;; -165491;1;0;false;false;0;0;0;;; -165492;3;0;false;false;;;;;; -165495;6;1;false;false;127;0;85;;; -165501;1;0;false;false;;;;;; -165502;8;0;false;false;0;0;0;;; -165510;2;0;false;false;;;;;; -165512;1;0;false;false;0;0;0;;; -165513;2;0;false;false;;;;;; -165515;3;1;false;false;127;0;85;;; -165518;1;0;false;false;;;;;; -165519;28;0;false;false;0;0;0;;; -165547;1;0;false;false;;;;;; -165548;1;0;false;false;0;0;0;;; -165549;3;0;false;false;;;;;; -165552;6;1;false;false;127;0;85;;; -165558;1;0;false;false;;;;;; -165559;23;0;false;false;0;0;0;;; -165582;2;0;false;false;;;;;; -165584;1;0;false;false;0;0;0;;; -165585;2;0;false;false;;;;;; -165587;5;0;false;false;0;0;0;;; -165592;1;0;false;false;;;;;; -165593;22;0;false;false;0;0;0;;; -165615;1;0;false;false;;;;;; -165616;1;0;false;false;0;0;0;;; -165617;3;0;false;false;;;;;; -165620;6;1;false;false;127;0;85;;; -165626;1;0;false;false;;;;;; -165627;10;0;false;false;0;0;0;;; -165637;2;0;false;false;;;;;; -165639;1;0;false;false;0;0;0;;; -165640;2;0;false;false;;;;;; -165642;7;1;false;false;127;0;85;;; -165649;1;0;false;false;;;;;; -165650;21;0;false;false;0;0;0;;; -165671;1;0;false;false;;;;;; -165672;1;0;false;false;0;0;0;;; -165673;3;0;false;false;;;;;; -165676;6;1;false;false;127;0;85;;; -165682;1;0;false;false;;;;;; -165683;9;0;false;false;0;0;0;;; -165692;2;0;false;false;;;;;; -165694;1;0;false;false;0;0;0;;; -165695;2;0;false;false;;;;;; -165697;3;0;false;false;63;95;191;;; -165700;3;0;false;false;;;;;; -165703;1;0;false;false;63;95;191;;; -165704;1;0;false;false;;;;;; -165705;4;0;false;false;63;95;191;;; -165709;1;0;false;false;;;;;; -165710;2;0;false;false;63;95;191;;; -165712;1;0;false;false;;;;;; -165713;13;0;false;false;63;95;191;;; -165726;1;0;false;false;;;;;; -165727;2;0;false;false;63;95;191;;; -165729;1;0;false;false;;;;;; -165730;6;0;false;false;63;95;191;;; -165736;1;0;false;false;;;;;; -165737;17;0;false;false;63;95;191;;; -165754;1;0;false;false;;;;;; -165755;5;0;false;false;63;95;191;;; -165760;1;0;false;false;;;;;; -165761;4;0;false;false;63;95;191;;; -165765;3;0;false;false;;;;;; -165768;1;0;false;false;63;95;191;;; -165769;1;0;false;false;;;;;; -165770;2;0;false;false;63;95;191;;; -165772;1;0;false;false;;;;;; -165773;8;0;false;false;63;95;191;;; -165781;1;0;false;false;;;;;; -165782;5;0;false;false;63;95;191;;; -165787;1;0;false;false;;;;;; -165788;6;0;false;false;63;95;191;;; -165794;3;0;false;false;;;;;; -165797;2;0;false;false;63;95;191;;; -165799;2;0;false;false;;;;;; -165801;4;1;false;false;127;0;85;;; -165805;1;0;false;false;;;;;; -165806;16;0;false;false;0;0;0;;; -165822;1;0;false;false;;;;;; -165823;1;0;false;false;0;0;0;;; -165824;3;0;false;false;;;;;; -165827;5;1;false;false;127;0;85;;; -165832;10;0;false;false;0;0;0;;; -165842;2;0;false;false;;;;;; -165844;1;0;false;false;0;0;0;;; -165845;2;0;false;false;;;;;; -165847;3;0;false;false;63;95;191;;; -165850;4;0;false;false;;;;;; -165854;1;0;false;false;63;95;191;;; -165855;1;0;false;false;;;;;; -165856;7;0;false;false;63;95;191;;; -165863;1;0;false;false;;;;;; -165864;3;0;false;false;63;95;191;;; -165867;1;0;false;false;;;;;; -165868;9;0;false;false;63;95;191;;; -165877;1;0;false;false;;;;;; -165878;4;0;false;false;63;95;191;;; -165882;1;0;false;false;;;;;; -165883;6;0;false;false;63;95;191;;; -165889;3;0;false;false;;;;;; -165892;1;0;false;false;63;95;191;;; -165893;1;0;false;false;;;;;; -165894;3;0;false;false;127;127;159;;; -165897;3;0;false;false;;;;;; -165900;1;0;false;false;63;95;191;;; -165901;3;0;false;false;;;;;; -165904;1;0;false;false;63;95;191;;; -165905;1;0;false;false;;;;;; -165906;7;1;false;false;127;159;191;;; -165913;5;0;false;false;63;95;191;;; -165918;1;0;false;false;;;;;; -165919;6;0;false;false;63;95;191;;; -165925;1;0;false;false;;;;;; -165926;2;0;false;false;63;95;191;;; -165928;1;0;false;false;;;;;; -165929;3;0;false;false;63;95;191;;; -165932;1;0;false;false;;;;;; -165933;5;0;false;false;63;95;191;;; -165938;1;0;false;false;;;;;; -165939;9;0;false;false;63;95;191;;; -165948;1;0;false;false;;;;;; -165949;2;0;false;false;63;95;191;;; -165951;1;0;false;false;;;;;; -165952;6;0;false;false;63;95;191;;; -165958;3;0;false;false;;;;;; -165961;1;0;false;false;63;95;191;;; -165962;1;0;false;false;;;;;; -165963;7;1;false;false;127;159;191;;; -165970;6;0;false;false;63;95;191;;; -165976;1;0;false;false;;;;;; -165977;6;0;false;false;63;95;191;;; -165983;1;0;false;false;;;;;; -165984;2;0;false;false;63;95;191;;; -165986;1;0;false;false;;;;;; -165987;10;0;false;false;63;95;191;;; -165997;1;0;false;false;;;;;; -165998;2;0;false;false;63;95;191;;; -166000;1;0;false;false;;;;;; -166001;6;0;false;false;63;95;191;;; -166007;3;0;false;false;;;;;; -166010;1;0;false;false;63;95;191;;; -166011;1;0;false;false;;;;;; -166012;7;1;false;false;127;159;191;;; -166019;15;0;false;false;63;95;191;;; -166034;1;0;false;false;;;;;; -166035;4;0;false;false;63;95;191;;; -166039;1;0;false;false;;;;;; -166040;2;0;false;false;63;95;191;;; -166042;1;0;false;false;;;;;; -166043;3;0;false;false;63;95;191;;; -166046;1;0;false;false;;;;;; -166047;10;0;false;false;63;95;191;;; -166057;1;0;false;false;;;;;; -166058;6;0;false;false;63;95;191;;; -166064;1;0;false;false;;;;;; -166065;2;0;false;false;63;95;191;;; -166067;1;0;false;false;;;;;; -166068;7;0;false;false;63;95;191;;; -166075;1;0;false;false;;;;;; -166076;2;0;false;false;63;95;191;;; -166078;4;0;false;false;;;;;; -166082;1;0;false;false;63;95;191;;; -166083;2;0;false;false;;;;;; -166085;4;0;false;false;63;95;191;;; -166089;1;0;false;false;;;;;; -166090;2;0;false;false;63;95;191;;; -166092;1;0;false;false;;;;;; -166093;3;0;false;false;63;95;191;;; -166096;1;0;false;false;;;;;; -166097;6;0;false;false;63;95;191;;; -166103;1;0;false;false;;;;;; -166104;10;0;false;false;63;95;191;;; -166114;2;0;false;false;;;;;; -166116;2;0;false;false;63;95;191;;; -166118;1;0;false;false;;;;;; -166119;5;0;false;false;63;95;191;;; -166124;1;0;false;false;;;;;; -166125;3;0;false;false;63;95;191;;; -166128;1;0;false;false;;;;;; -166129;6;0;false;false;63;95;191;;; -166135;1;0;false;false;;;;;; -166136;6;0;false;false;63;95;191;;; -166142;1;0;false;false;;;;;; -166143;5;0;false;false;63;95;191;;; -166148;1;0;false;false;;;;;; -166149;4;0;false;false;63;95;191;;; -166153;3;0;false;false;;;;;; -166156;1;0;false;false;63;95;191;;; -166157;2;0;false;false;;;;;; -166159;2;0;false;false;63;95;191;;; -166161;1;0;false;false;;;;;; -166162;7;0;false;false;63;95;191;;; -166169;1;0;false;false;;;;;; -166170;6;0;false;false;63;95;191;;; -166176;1;0;false;false;;;;;; -166177;8;0;false;false;63;95;191;;; -166185;1;0;false;false;;;;;; -166186;2;0;false;false;63;95;191;;; -166188;1;0;false;false;;;;;; -166189;8;0;false;false;63;95;191;;; -166197;2;0;false;false;;;;;; -166199;2;0;false;false;63;95;191;;; -166201;1;0;false;false;;;;;; -166202;3;0;false;false;63;95;191;;; -166205;1;0;false;false;;;;;; -166206;6;0;false;false;63;95;191;;; -166212;1;0;false;false;;;;;; -166213;5;0;false;false;63;95;191;;; -166218;1;0;false;false;;;;;; -166219;8;0;false;false;63;95;191;;; -166227;3;0;false;false;;;;;; -166230;1;0;false;false;63;95;191;;; -166231;1;0;false;false;;;;;; -166232;3;0;false;false;63;95;191;;; -166235;1;0;false;false;;;;;; -166236;4;0;false;false;63;95;191;;; -166240;1;0;false;false;;;;;; -166241;9;0;false;false;63;95;191;;; -166250;1;0;false;false;;;;;; -166251;2;0;false;false;63;95;191;;; -166253;1;0;false;false;;;;;; -166254;1;0;false;false;63;95;191;;; -166255;1;0;false;false;;;;;; -166256;4;0;false;false;63;95;191;;; -166260;1;0;false;false;;;;;; -166261;6;0;false;false;63;95;191;;; -166267;1;0;false;false;;;;;; -166268;3;0;false;false;63;95;191;;; -166271;1;0;false;false;;;;;; -166272;6;0;false;false;63;95;191;;; -166278;1;0;false;false;;;;;; -166279;4;0;false;false;63;95;191;;; -166283;1;0;false;false;;;;;; -166284;2;0;false;false;63;95;191;;; -166286;1;0;false;false;;;;;; -166287;8;0;false;false;63;95;191;;; -166295;1;0;false;false;;;;;; -166296;3;0;false;false;63;95;191;;; -166299;4;0;false;false;;;;;; -166303;1;0;false;false;63;95;191;;; -166304;2;0;false;false;;;;;; -166306;4;0;false;false;63;95;191;;; -166310;1;0;false;false;;;;;; -166311;2;0;false;false;63;95;191;;; -166313;1;0;false;false;;;;;; -166314;7;0;false;false;63;95;191;;; -166321;1;0;false;false;;;;;; -166322;3;0;false;false;63;95;191;;; -166325;1;0;false;false;;;;;; -166326;3;0;false;false;63;95;191;;; -166329;1;0;false;false;;;;;; -166330;3;0;false;false;63;95;191;;; -166333;1;0;false;false;;;;;; -166334;2;0;false;false;63;95;191;;; -166336;1;0;false;false;;;;;; -166337;3;0;false;false;63;95;191;;; -166340;1;0;false;false;;;;;; -166341;5;0;false;false;63;95;191;;; -166346;1;0;false;false;;;;;; -166347;6;0;false;false;63;95;191;;; -166353;1;0;false;false;;;;;; -166354;2;0;false;false;63;95;191;;; -166356;1;0;false;false;;;;;; -166357;3;0;false;false;63;95;191;;; -166360;1;0;false;false;;;;;; -166361;7;0;false;false;63;95;191;;; -166368;3;0;false;false;;;;;; -166371;1;0;false;false;63;95;191;;; -166372;2;0;false;false;;;;;; -166374;3;0;false;false;63;95;191;;; -166377;1;0;false;false;;;;;; -166378;6;0;false;false;63;95;191;;; -166384;1;0;false;false;;;;;; -166385;9;0;false;false;63;95;191;;; -166394;1;0;false;false;;;;;; -166395;4;0;false;false;63;95;191;;; -166399;1;0;false;false;;;;;; -166400;2;0;false;false;63;95;191;;; -166402;1;0;false;false;;;;;; -166403;6;0;false;false;63;95;191;;; -166409;1;0;false;false;;;;;; -166410;3;0;false;false;63;95;191;;; -166413;1;0;false;false;;;;;; -166414;8;0;false;false;63;95;191;;; -166422;1;0;false;false;;;;;; -166423;2;0;false;false;63;95;191;;; -166425;1;0;false;false;;;;;; -166426;15;0;false;false;63;95;191;;; -166441;1;0;false;false;;;;;; -166442;2;0;false;false;63;95;191;;; -166444;4;0;false;false;;;;;; -166448;1;0;false;false;63;95;191;;; -166449;2;0;false;false;;;;;; -166451;3;0;false;false;63;95;191;;; -166454;1;0;false;false;;;;;; -166455;2;0;false;false;63;95;191;;; -166457;1;0;false;false;;;;;; -166458;6;0;false;false;63;95;191;;; -166464;2;0;false;false;;;;;; -166466;7;0;false;false;63;95;191;;; -166473;1;0;false;false;;;;;; -166474;2;0;false;false;63;95;191;;; -166476;1;0;false;false;;;;;; -166477;3;0;false;false;63;95;191;;; -166480;1;0;false;false;;;;;; -166481;3;0;false;false;63;95;191;;; -166484;1;0;false;false;;;;;; -166485;4;0;false;false;63;95;191;;; -166489;1;0;false;false;;;;;; -166490;3;0;false;false;63;95;191;;; -166493;1;0;false;false;;;;;; -166494;2;0;false;false;63;95;191;;; -166496;1;0;false;false;;;;;; -166497;3;0;false;false;63;95;191;;; -166500;1;0;false;false;;;;;; -166501;2;0;false;false;63;95;191;;; -166503;1;0;false;false;;;;;; -166504;5;0;false;false;63;95;191;;; -166509;1;0;false;false;;;;;; -166510;7;0;false;false;63;95;191;;; -166517;1;0;false;false;;;;;; -166518;2;0;false;false;63;95;191;;; -166520;4;0;false;false;;;;;; -166524;1;0;false;false;63;95;191;;; -166525;2;0;false;false;;;;;; -166527;3;0;false;false;63;95;191;;; -166530;1;0;false;false;;;;;; -166531;4;0;false;false;63;95;191;;; -166535;1;0;false;false;;;;;; -166536;2;0;false;false;63;95;191;;; -166538;1;0;false;false;;;;;; -166539;6;0;false;false;63;95;191;;; -166545;1;0;false;false;;;;;; -166546;4;0;false;false;63;95;191;;; -166550;1;0;false;false;;;;;; -166551;3;0;false;false;63;95;191;;; -166554;1;0;false;false;;;;;; -166555;5;0;false;false;63;95;191;;; -166560;1;0;false;false;;;;;; -166561;6;0;false;false;63;95;191;;; -166567;2;0;false;false;;;;;; -166569;2;0;false;false;63;95;191;;; -166571;1;0;false;false;;;;;; -166572;4;0;false;false;63;95;191;;; -166576;1;0;false;false;;;;;; -166577;6;0;false;false;63;95;191;;; -166583;1;0;false;false;;;;;; -166584;2;0;false;false;63;95;191;;; -166586;1;0;false;false;;;;;; -166587;10;0;false;false;63;95;191;;; -166597;4;0;false;false;;;;;; -166601;1;0;false;false;63;95;191;;; -166602;2;0;false;false;;;;;; -166604;6;0;false;false;63;95;191;;; -166610;1;0;false;false;;;;;; -166611;3;0;false;false;63;95;191;;; -166614;1;0;false;false;;;;;; -166615;3;0;false;false;63;95;191;;; -166618;1;0;false;false;;;;;; -166619;6;0;false;false;63;95;191;;; -166625;1;0;false;false;;;;;; -166626;5;0;false;false;63;95;191;;; -166631;1;0;false;false;;;;;; -166632;4;0;false;false;63;95;191;;; -166636;1;0;false;false;;;;;; -166637;8;0;false;false;63;95;191;;; -166645;1;0;false;false;;;;;; -166646;15;0;false;false;63;95;191;;; -166661;1;0;false;false;;;;;; -166662;6;0;false;false;63;95;191;;; -166668;1;0;false;false;;;;;; -166669;2;0;false;false;63;95;191;;; -166671;4;0;false;false;;;;;; -166675;1;0;false;false;63;95;191;;; -166676;2;0;false;false;;;;;; -166678;3;0;false;false;63;95;191;;; -166681;1;0;false;false;;;;;; -166682;2;0;false;false;63;95;191;;; -166684;1;0;false;false;;;;;; -166685;5;0;false;false;63;95;191;;; -166690;2;0;false;false;;;;;; -166692;2;0;false;false;63;95;191;;; -166694;1;0;false;false;;;;;; -166695;4;0;false;false;63;95;191;;; -166699;1;0;false;false;;;;;; -166700;10;0;false;false;63;95;191;;; -166710;1;0;false;false;;;;;; -166711;6;0;false;false;63;95;191;;; -166717;1;0;false;false;;;;;; -166718;4;0;false;false;63;95;191;;; -166722;1;0;false;false;;;;;; -166723;7;0;false;false;63;95;191;;; -166730;1;0;false;false;;;;;; -166731;3;0;false;false;63;95;191;;; -166734;1;0;false;false;;;;;; -166735;3;0;false;false;63;95;191;;; -166738;1;0;false;false;;;;;; -166739;6;0;false;false;63;95;191;;; -166745;4;0;false;false;;;;;; -166749;1;0;false;false;63;95;191;;; -166750;2;0;false;false;;;;;; -166752;6;0;false;false;63;95;191;;; -166758;1;0;false;false;;;;;; -166759;15;0;false;false;63;95;191;;; -166774;1;0;false;false;;;;;; -166775;3;0;false;false;63;95;191;;; -166778;1;0;false;false;;;;;; -166779;2;0;false;false;63;95;191;;; -166781;1;0;false;false;;;;;; -166782;3;0;false;false;63;95;191;;; -166785;1;0;false;false;;;;;; -166786;2;0;false;false;63;95;191;;; -166788;1;0;false;false;;;;;; -166789;6;0;false;false;63;95;191;;; -166795;4;0;false;false;;;;;; -166799;2;0;false;false;63;95;191;;; -166801;2;0;false;false;;;;;; -166803;4;1;false;false;127;0;85;;; -166807;1;0;false;false;;;;;; -166808;20;0;false;false;0;0;0;;; -166828;3;1;false;false;127;0;85;;; -166831;1;0;false;false;;;;;; -166832;6;0;false;false;0;0;0;;; -166838;1;0;false;false;;;;;; -166839;3;1;false;false;127;0;85;;; -166842;1;0;false;false;;;;;; -166843;7;0;false;false;0;0;0;;; -166850;1;0;false;false;;;;;; -166851;7;1;false;false;127;0;85;;; -166858;1;0;false;false;;;;;; -166859;16;0;false;false;0;0;0;;; -166875;1;0;false;false;;;;;; -166876;1;0;false;false;0;0;0;;; -166877;3;0;false;false;;;;;; -166880;3;1;false;false;127;0;85;;; -166883;1;0;false;false;;;;;; -166884;3;0;false;false;0;0;0;;; -166887;1;0;false;false;;;;;; -166888;1;0;false;false;0;0;0;;; -166889;1;0;false;false;;;;;; -166890;5;0;false;false;0;0;0;;; -166895;1;0;false;false;;;;;; -166896;1;0;false;false;0;0;0;;; -166897;1;0;false;false;;;;;; -166898;7;0;false;false;0;0;0;;; -166905;3;0;false;false;;;;;; -166908;3;1;false;false;127;0;85;;; -166911;1;0;false;false;;;;;; -166912;9;0;false;false;0;0;0;;; -166921;1;0;false;false;;;;;; -166922;1;0;false;false;0;0;0;;; -166923;1;0;false;false;;;;;; -166924;31;0;false;false;0;0;0;;; -166955;3;0;false;false;;;;;; -166958;3;1;false;false;127;0;85;;; -166961;1;0;false;false;;;;;; -166962;8;0;false;false;0;0;0;;; -166970;1;0;false;false;;;;;; -166971;1;0;false;false;0;0;0;;; -166972;1;0;false;false;;;;;; -166973;29;0;false;false;0;0;0;;; -167002;3;0;false;false;;;;;; -167005;3;1;false;false;127;0;85;;; -167008;1;0;false;false;;;;;; -167009;18;0;false;false;0;0;0;;; -167027;3;0;false;false;;;;;; -167030;3;1;false;false;127;0;85;;; -167033;1;0;false;false;;;;;; -167034;18;0;false;false;0;0;0;;; -167052;1;0;false;false;;;;;; -167053;1;0;false;false;0;0;0;;; -167054;1;0;false;false;;;;;; -167055;24;0;false;false;0;0;0;;; -167079;3;0;false;false;;;;;; -167082;3;1;false;false;127;0;85;;; -167085;1;0;false;false;;;;;; -167086;15;0;false;false;0;0;0;;; -167101;1;0;false;false;;;;;; -167102;1;0;false;false;0;0;0;;; -167103;1;0;false;false;;;;;; -167104;20;0;false;false;0;0;0;;; -167124;1;0;false;false;;;;;; -167125;1;0;false;false;0;0;0;;; -167126;1;0;false;false;;;;;; -167127;11;0;false;false;0;0;0;;; -167138;3;0;false;false;;;;;; -167141;56;0;false;false;63;127;95;;; -167197;1;0;false;false;;;;;; -167198;2;1;false;false;127;0;85;;; -167200;1;0;false;false;;;;;; -167201;10;0;false;false;0;0;0;;; -167211;1;0;false;false;;;;;; -167212;1;0;false;false;0;0;0;;; -167213;1;0;false;false;;;;;; -167214;18;0;false;false;0;0;0;;; -167232;1;0;false;false;;;;;; -167233;2;0;false;false;0;0;0;;; -167235;1;0;false;false;;;;;; -167236;8;0;false;false;0;0;0;;; -167244;1;0;false;false;;;;;; -167245;1;0;false;false;0;0;0;;; -167246;1;0;false;false;;;;;; -167247;16;0;false;false;0;0;0;;; -167263;1;0;false;false;;;;;; -167264;1;0;false;false;0;0;0;;; -167265;4;0;false;false;;;;;; -167269;6;1;false;false;127;0;85;;; -167275;1;0;false;false;0;0;0;;; -167276;3;0;false;false;;;;;; -167279;1;0;false;false;0;0;0;;; -167280;3;0;false;false;;;;;; -167283;30;0;false;false;63;127;95;;; -167313;1;0;false;false;;;;;; -167314;2;1;false;false;127;0;85;;; -167316;1;0;false;false;;;;;; -167317;16;0;false;false;0;0;0;;; -167333;1;0;false;false;;;;;; -167334;1;0;false;false;0;0;0;;; -167335;1;0;false;false;;;;;; -167336;10;0;false;false;0;0;0;;; -167346;1;0;false;false;;;;;; -167347;1;0;false;false;0;0;0;;; -167348;4;0;false;false;;;;;; -167352;9;0;false;false;0;0;0;;; -167361;1;0;false;false;;;;;; -167362;1;0;false;false;0;0;0;;; -167363;1;0;false;false;;;;;; -167364;16;0;false;false;0;0;0;;; -167380;4;0;false;false;;;;;; -167384;17;0;false;false;0;0;0;;; -167401;1;0;false;false;;;;;; -167402;1;0;false;false;0;0;0;;; -167403;1;0;false;false;;;;;; -167404;2;0;false;false;0;0;0;;; -167406;3;0;false;false;;;;;; -167409;1;0;false;false;0;0;0;;; -167410;3;0;false;false;;;;;; -167413;4;1;false;false;127;0;85;;; -167417;1;0;false;false;;;;;; -167418;1;0;false;false;0;0;0;;; -167419;4;0;false;false;;;;;; -167423;17;0;false;false;0;0;0;;; -167440;1;0;false;false;;;;;; -167441;1;0;false;false;0;0;0;;; -167442;1;0;false;false;;;;;; -167443;5;0;false;false;0;0;0;;; -167448;1;0;false;false;;;;;; -167449;1;0;false;false;0;0;0;;; -167450;1;0;false;false;;;;;; -167451;35;0;false;false;0;0;0;;; -167486;3;0;false;false;;;;;; -167489;1;0;false;false;0;0;0;;; -167490;3;0;false;false;;;;;; -167493;2;1;false;false;127;0;85;;; -167495;1;0;false;false;;;;;; -167496;19;0;false;false;0;0;0;;; -167515;1;0;false;false;;;;;; -167516;1;0;false;false;0;0;0;;; -167517;1;0;false;false;;;;;; -167518;1;0;false;false;0;0;0;;; -167519;1;0;false;false;;;;;; -167520;1;0;false;false;0;0;0;;; -167521;1;0;false;false;;;;;; -167522;9;0;false;false;0;0;0;;; -167531;1;0;false;false;;;;;; -167532;1;0;false;false;0;0;0;;; -167533;4;0;false;false;;;;;; -167537;8;0;false;false;0;0;0;;; -167545;1;0;false;false;;;;;; -167546;1;0;false;false;0;0;0;;; -167547;1;0;false;false;;;;;; -167548;18;0;false;false;0;0;0;;; -167566;1;0;false;false;;;;;; -167567;1;0;false;false;0;0;0;;; -167568;1;0;false;false;;;;;; -167569;2;0;false;false;0;0;0;;; -167571;1;0;false;false;;;;;; -167572;58;0;false;false;63;127;95;;; -167630;2;0;false;false;;;;;; -167632;3;0;false;false;0;0;0;;; -167635;1;0;false;false;;;;;; -167636;1;0;false;false;0;0;0;;; -167637;1;0;false;false;;;;;; -167638;34;0;false;false;0;0;0;;; -167672;3;0;false;false;;;;;; -167675;1;0;false;false;0;0;0;;; -167676;3;0;false;false;;;;;; -167679;22;0;false;false;0;0;0;;; -167701;1;0;false;false;;;;;; -167702;18;0;false;false;0;0;0;;; -167720;1;0;false;false;;;;;; -167721;9;0;false;false;0;0;0;;; -167730;1;0;false;false;;;;;; -167731;4;0;false;false;0;0;0;;; -167735;1;0;false;false;;;;;; -167736;17;0;false;false;0;0;0;;; -167753;6;0;false;false;;;;;; -167759;76;0;false;false;63;127;95;;; -167835;1;0;false;false;;;;;; -167836;2;1;false;false;127;0;85;;; -167838;1;0;false;false;;;;;; -167839;9;0;false;false;0;0;0;;; -167848;1;0;false;false;;;;;; -167849;1;0;false;false;0;0;0;;; -167850;1;0;false;false;;;;;; -167851;9;0;false;false;0;0;0;;; -167860;1;0;false;false;;;;;; -167861;1;0;false;false;0;0;0;;; -167862;1;0;false;false;;;;;; -167863;2;0;false;false;0;0;0;;; -167865;1;0;false;false;;;;;; -167866;1;0;false;false;0;0;0;;; -167867;4;0;false;false;;;;;; -167871;9;0;false;false;0;0;0;;; -167880;1;0;false;false;;;;;; -167881;10;0;false;false;0;0;0;;; -167891;1;0;false;false;;;;;; -167892;1;0;false;false;0;0;0;;; -167893;1;0;false;false;;;;;; -167894;16;0;false;false;0;0;0;;; -167910;4;0;false;false;;;;;; -167914;3;1;false;false;127;0;85;;; -167917;1;0;false;false;;;;;; -167918;11;0;false;false;0;0;0;;; -167929;1;0;false;false;;;;;; -167930;1;0;false;false;0;0;0;;; -167931;1;0;false;false;;;;;; -167932;8;0;false;false;0;0;0;;; -167940;1;0;false;false;;;;;; -167941;1;0;false;false;0;0;0;;; -167942;1;0;false;false;;;;;; -167943;10;0;false;false;0;0;0;;; -167953;1;0;false;false;;;;;; -167954;1;0;false;false;0;0;0;;; -167955;1;0;false;false;;;;;; -167956;21;0;false;false;0;0;0;;; -167977;6;0;false;false;;;;;; -167983;3;1;false;false;127;0;85;;; -167986;1;0;false;false;;;;;; -167987;7;0;false;false;0;0;0;;; -167994;1;0;false;false;;;;;; -167995;1;0;false;false;0;0;0;;; -167996;1;0;false;false;;;;;; -167997;10;0;false;false;0;0;0;;; -168007;1;0;false;false;;;;;; -168008;1;0;false;false;0;0;0;;; -168009;1;0;false;false;;;;;; -168010;2;0;false;false;0;0;0;;; -168012;1;0;false;false;;;;;; -168013;1;0;false;false;0;0;0;;; -168014;1;0;false;false;;;;;; -168015;10;0;false;false;0;0;0;;; -168025;1;0;false;false;;;;;; -168026;1;0;false;false;0;0;0;;; -168027;1;0;false;false;;;;;; -168028;21;0;false;false;0;0;0;;; -168049;6;0;false;false;;;;;; -168055;7;0;false;false;0;0;0;;; -168062;1;0;false;false;;;;;; -168063;8;0;false;false;0;0;0;;; -168071;1;0;false;false;;;;;; -168072;17;0;false;false;0;0;0;;; -168089;1;0;false;false;;;;;; -168090;11;0;false;false;0;0;0;;; -168101;1;0;false;false;;;;;; -168102;1;0;false;false;0;0;0;;; -168103;1;0;false;false;;;;;; -168104;8;0;false;false;0;0;0;;; -168112;1;0;false;false;;;;;; -168113;17;0;false;false;0;0;0;;; -168130;3;0;false;false;;;;;; -168133;1;0;false;false;0;0;0;;; -168134;2;0;false;false;;;;;; -168136;1;0;false;false;0;0;0;;; -168137;2;0;false;false;;;;;; -168139;3;0;false;false;63;95;191;;; -168142;3;0;false;false;;;;;; -168145;1;0;false;false;63;95;191;;; -168146;1;0;false;false;;;;;; -168147;7;0;false;false;63;95;191;;; -168154;1;0;false;false;;;;;; -168155;3;0;false;false;63;95;191;;; -168158;1;0;false;false;;;;;; -168159;6;0;false;false;63;95;191;;; -168165;1;0;false;false;;;;;; -168166;4;0;false;false;63;95;191;;; -168170;1;0;false;false;;;;;; -168171;4;0;false;false;63;95;191;;; -168175;1;0;false;false;;;;;; -168176;5;0;false;false;63;95;191;;; -168181;1;0;false;false;;;;;; -168182;11;0;false;false;63;95;191;;; -168193;1;0;false;false;;;;;; -168194;7;0;false;false;63;95;191;;; -168201;1;0;false;false;;;;;; -168202;5;0;false;false;63;95;191;;; -168207;1;0;false;false;;;;;; -168208;3;0;false;false;63;95;191;;; -168211;1;0;false;false;;;;;; -168212;6;0;false;false;63;95;191;;; -168218;3;0;false;false;;;;;; -168221;1;0;false;false;63;95;191;;; -168222;1;0;false;false;;;;;; -168223;13;0;false;false;63;95;191;;; -168236;1;0;false;false;;;;;; -168237;7;0;false;false;63;95;191;;; -168244;1;0;false;false;;;;;; -168245;4;0;false;false;63;95;191;;; -168249;3;0;false;false;;;;;; -168252;1;0;false;false;63;95;191;;; -168253;3;0;false;false;;;;;; -168256;1;0;false;false;63;95;191;;; -168257;1;0;false;false;;;;;; -168258;8;1;false;false;127;159;191;;; -168266;3;0;false;false;63;95;191;;; -168269;1;0;false;false;;;;;; -168270;6;0;false;false;63;95;191;;; -168276;1;0;false;false;;;;;; -168277;4;0;false;false;63;95;191;;; -168281;1;0;false;false;;;;;; -168282;4;0;false;false;63;95;191;;; -168286;1;0;false;false;;;;;; -168287;5;0;false;false;63;95;191;;; -168292;1;0;false;false;;;;;; -168293;11;0;false;false;63;95;191;;; -168304;1;0;false;false;;;;;; -168305;7;0;false;false;63;95;191;;; -168312;1;0;false;false;;;;;; -168313;5;0;false;false;63;95;191;;; -168318;1;0;false;false;;;;;; -168319;3;0;false;false;63;95;191;;; -168322;1;0;false;false;;;;;; -168323;6;0;false;false;63;95;191;;; -168329;3;0;false;false;;;;;; -168332;1;0;false;false;63;95;191;;; -168333;1;0;false;false;;;;;; -168334;11;1;false;false;127;159;191;;; -168345;12;0;false;false;63;95;191;;; -168357;1;0;false;false;;;;;; -168358;4;0;false;false;127;127;159;;; -168362;3;0;false;false;;;;;; -168365;1;0;false;false;63;95;191;;; -168366;4;0;false;false;;;;;; -168370;4;0;false;false;127;127;159;;; -168374;21;0;false;false;63;95;191;;; -168395;1;0;false;false;;;;;; -168396;1;0;false;false;127;127;159;;; -168397;1;0;false;false;;;;;; -168398;2;0;false;false;63;95;191;;; -168400;1;0;false;false;;;;;; -168401;3;0;false;false;63;95;191;;; -168404;1;0;false;false;;;;;; -168405;8;0;false;false;63;95;191;;; -168413;1;0;false;false;;;;;; -168414;3;0;false;false;63;95;191;;; -168417;1;0;false;false;;;;;; -168418;4;0;false;false;63;95;191;;; -168422;1;0;false;false;;;;;; -168423;8;0;false;false;63;95;191;;; -168431;5;0;false;false;127;127;159;;; -168436;3;0;false;false;;;;;; -168439;1;0;false;false;63;95;191;;; -168440;4;0;false;false;;;;;; -168444;4;0;false;false;127;127;159;;; -168448;27;0;false;false;63;95;191;;; -168475;1;0;false;false;;;;;; -168476;1;0;false;false;127;127;159;;; -168477;1;0;false;false;;;;;; -168478;2;0;false;false;63;95;191;;; -168480;1;0;false;false;;;;;; -168481;3;0;false;false;63;95;191;;; -168484;1;0;false;false;;;;;; -168485;6;0;false;false;63;95;191;;; -168491;1;0;false;false;;;;;; -168492;4;0;false;false;63;95;191;;; -168496;1;0;false;false;;;;;; -168497;3;0;false;false;63;95;191;;; -168500;1;0;false;false;;;;;; -168501;6;0;false;false;63;95;191;;; -168507;1;0;false;false;;;;;; -168508;4;0;false;false;63;95;191;;; -168512;1;0;false;false;;;;;; -168513;7;0;false;false;63;95;191;;; -168520;1;0;false;false;;;;;; -168521;3;0;false;false;63;95;191;;; -168524;1;0;false;false;;;;;; -168525;8;0;false;false;63;95;191;;; -168533;5;0;false;false;127;127;159;;; -168538;3;0;false;false;;;;;; -168541;1;0;false;false;63;95;191;;; -168542;1;0;false;false;;;;;; -168543;5;0;false;false;127;127;159;;; -168548;3;0;false;false;;;;;; -168551;2;0;false;false;63;95;191;;; -168553;2;0;false;false;;;;;; -168555;6;0;false;false;0;0;0;;; -168561;1;0;false;false;;;;;; -168562;9;0;false;false;0;0;0;;; -168571;3;0;false;false;;;;;; -168574;14;0;false;false;0;0;0;;; -168588;3;0;false;false;;;;;; -168591;9;0;false;false;0;0;0;;; -168600;1;0;false;false;;;;;; -168601;9;0;false;false;0;0;0;;; -168610;1;0;false;false;;;;;; -168611;1;0;false;false;0;0;0;;; -168612;1;0;false;false;;;;;; -168613;3;1;false;false;127;0;85;;; -168616;1;0;false;false;;;;;; -168617;12;0;false;false;0;0;0;;; -168629;1;0;false;false;;;;;; -168630;16;0;false;false;0;0;0;;; -168646;3;0;false;false;;;;;; -168649;6;1;false;false;127;0;85;;; -168655;1;0;false;false;;;;;; -168656;36;0;false;false;0;0;0;;; -168692;2;0;false;false;;;;;; -168694;1;0;false;false;0;0;0;;; -168695;2;0;false;false;;;;;; -168697;3;0;false;false;63;95;191;;; -168700;4;0;false;false;;;;;; -168704;1;0;false;false;63;95;191;;; -168705;1;0;false;false;;;;;; -168706;5;0;false;false;63;95;191;;; -168711;1;0;false;false;;;;;; -168712;10;0;false;false;63;95;191;;; -168722;3;0;false;false;;;;;; -168725;2;0;false;false;63;95;191;;; -168727;2;0;false;false;;;;;; -168729;4;1;false;false;127;0;85;;; -168733;1;0;false;false;;;;;; -168734;19;0;false;false;0;0;0;;; -168753;1;0;false;false;;;;;; -168754;6;0;false;false;0;0;0;;; -168760;1;0;false;false;;;;;; -168761;1;0;false;false;0;0;0;;; -168762;3;0;false;false;;;;;; -168765;27;0;false;false;0;0;0;;; -168792;1;0;false;false;;;;;; -168793;10;0;false;false;0;0;0;;; -168803;3;0;false;false;;;;;; -168806;28;0;false;false;0;0;0;;; -168834;1;0;false;false;;;;;; -168835;7;0;false;false;0;0;0;;; -168842;3;0;false;false;;;;;; -168845;10;0;false;false;0;0;0;;; -168855;1;0;false;false;;;;;; -168856;1;0;false;false;0;0;0;;; -168857;1;0;false;false;;;;;; -168858;9;0;false;false;0;0;0;;; -168867;5;0;false;false;;;;;; -168872;20;0;false;false;0;0;0;;; -168892;3;0;false;false;;;;;; -168895;22;0;false;false;0;0;0;;; -168917;3;0;false;false;;;;;; -168920;2;1;false;false;127;0;85;;; -168922;1;0;false;false;;;;;; -168923;9;0;false;false;0;0;0;;; -168932;1;0;false;false;;;;;; -168933;2;0;false;false;0;0;0;;; -168935;1;0;false;false;;;;;; -168936;4;1;false;false;127;0;85;;; -168940;1;0;false;false;0;0;0;;; -168941;1;0;false;false;;;;;; -168942;1;0;false;false;0;0;0;;; -168943;4;0;false;false;;;;;; -168947;19;0;false;false;0;0;0;;; -168966;4;0;false;false;;;;;; -168970;8;0;false;false;0;0;0;;; -168978;1;0;false;false;;;;;; -168979;1;0;false;false;0;0;0;;; -168980;1;0;false;false;;;;;; -168981;4;1;false;false;127;0;85;;; -168985;1;0;false;false;0;0;0;;; -168986;3;0;false;false;;;;;; -168989;1;0;false;false;0;0;0;;; -168990;3;0;false;false;;;;;; -168993;2;1;false;false;127;0;85;;; -168995;1;0;false;false;;;;;; -168996;8;0;false;false;0;0;0;;; -169004;1;0;false;false;;;;;; -169005;2;0;false;false;0;0;0;;; -169007;1;0;false;false;;;;;; -169008;4;1;false;false;127;0;85;;; -169012;1;0;false;false;0;0;0;;; -169013;1;0;false;false;;;;;; -169014;1;0;false;false;0;0;0;;; -169015;4;0;false;false;;;;;; -169019;53;0;false;false;0;0;0;;; -169072;4;0;false;false;;;;;; -169076;7;0;false;false;0;0;0;;; -169083;1;0;false;false;;;;;; -169084;1;0;false;false;0;0;0;;; -169085;1;0;false;false;;;;;; -169086;4;1;false;false;127;0;85;;; -169090;1;0;false;false;0;0;0;;; -169091;3;0;false;false;;;;;; -169094;1;0;false;false;0;0;0;;; -169095;3;0;false;false;;;;;; -169098;2;1;false;false;127;0;85;;; -169100;1;0;false;false;;;;;; -169101;13;0;false;false;0;0;0;;; -169114;1;0;false;false;;;;;; -169115;2;0;false;false;0;0;0;;; -169117;1;0;false;false;;;;;; -169118;4;1;false;false;127;0;85;;; -169122;1;0;false;false;0;0;0;;; -169123;1;0;false;false;;;;;; -169124;1;0;false;false;0;0;0;;; -169125;4;0;false;false;;;;;; -169129;23;0;false;false;0;0;0;;; -169152;4;0;false;false;;;;;; -169156;12;0;false;false;0;0;0;;; -169168;1;0;false;false;;;;;; -169169;1;0;false;false;0;0;0;;; -169170;1;0;false;false;;;;;; -169171;4;1;false;false;127;0;85;;; -169175;1;0;false;false;0;0;0;;; -169176;3;0;false;false;;;;;; -169179;1;0;false;false;0;0;0;;; -169180;3;0;false;false;;;;;; -169183;2;1;false;false;127;0;85;;; -169185;1;0;false;false;;;;;; -169186;16;0;false;false;0;0;0;;; -169202;1;0;false;false;;;;;; -169203;2;0;false;false;0;0;0;;; -169205;1;0;false;false;;;;;; -169206;4;1;false;false;127;0;85;;; -169210;1;0;false;false;0;0;0;;; -169211;1;0;false;false;;;;;; -169212;1;0;false;false;0;0;0;;; -169213;4;0;false;false;;;;;; -169217;26;0;false;false;0;0;0;;; -169243;4;0;false;false;;;;;; -169247;15;0;false;false;0;0;0;;; -169262;1;0;false;false;;;;;; -169263;1;0;false;false;0;0;0;;; -169264;1;0;false;false;;;;;; -169265;4;1;false;false;127;0;85;;; -169269;1;0;false;false;0;0;0;;; -169270;3;0;false;false;;;;;; -169273;1;0;false;false;0;0;0;;; -169274;3;0;false;false;;;;;; -169277;2;1;false;false;127;0;85;;; -169279;1;0;false;false;;;;;; -169280;17;0;false;false;0;0;0;;; -169297;1;0;false;false;;;;;; -169298;2;0;false;false;0;0;0;;; -169300;1;0;false;false;;;;;; -169301;4;1;false;false;127;0;85;;; -169305;1;0;false;false;0;0;0;;; -169306;1;0;false;false;;;;;; -169307;1;0;false;false;0;0;0;;; -169308;4;0;false;false;;;;;; -169312;27;0;false;false;0;0;0;;; -169339;4;0;false;false;;;;;; -169343;16;0;false;false;0;0;0;;; -169359;1;0;false;false;;;;;; -169360;1;0;false;false;0;0;0;;; -169361;1;0;false;false;;;;;; -169362;4;1;false;false;127;0;85;;; -169366;1;0;false;false;0;0;0;;; -169367;3;0;false;false;;;;;; -169370;1;0;false;false;0;0;0;;; -169371;3;0;false;false;;;;;; -169374;2;1;false;false;127;0;85;;; -169376;1;0;false;false;;;;;; -169377;18;0;false;false;0;0;0;;; -169395;1;0;false;false;;;;;; -169396;2;0;false;false;0;0;0;;; -169398;1;0;false;false;;;;;; -169399;4;1;false;false;127;0;85;;; -169403;1;0;false;false;0;0;0;;; -169404;1;0;false;false;;;;;; -169405;1;0;false;false;0;0;0;;; -169406;4;0;false;false;;;;;; -169410;28;0;false;false;0;0;0;;; -169438;4;0;false;false;;;;;; -169442;17;0;false;false;0;0;0;;; -169459;1;0;false;false;;;;;; -169460;1;0;false;false;0;0;0;;; -169461;1;0;false;false;;;;;; -169462;4;1;false;false;127;0;85;;; -169466;1;0;false;false;0;0;0;;; -169467;3;0;false;false;;;;;; -169470;1;0;false;false;0;0;0;;; -169471;3;0;false;false;;;;;; -169474;2;1;false;false;127;0;85;;; -169476;1;0;false;false;;;;;; -169477;15;0;false;false;0;0;0;;; -169492;1;0;false;false;;;;;; -169493;1;0;false;false;0;0;0;;; -169494;4;0;false;false;;;;;; -169498;40;0;false;false;0;0;0;;; -169538;3;0;false;false;;;;;; -169541;1;0;false;false;0;0;0;;; -169542;3;0;false;false;;;;;; -169545;19;0;false;false;0;0;0;;; -169564;1;0;false;false;;;;;; -169565;1;0;false;false;0;0;0;;; -169566;1;0;false;false;;;;;; -169567;4;1;false;false;127;0;85;;; -169571;1;0;false;false;0;0;0;;; -169572;3;0;false;false;;;;;; -169575;19;0;false;false;0;0;0;;; -169594;1;0;false;false;;;;;; -169595;1;0;false;false;0;0;0;;; -169596;1;0;false;false;;;;;; -169597;4;1;false;false;127;0;85;;; -169601;1;0;false;false;0;0;0;;; -169602;3;0;false;false;;;;;; -169605;14;0;false;false;0;0;0;;; -169619;1;0;false;false;;;;;; -169620;1;0;false;false;0;0;0;;; -169621;1;0;false;false;;;;;; -169622;4;1;false;false;127;0;85;;; -169626;1;0;false;false;0;0;0;;; -169627;3;0;false;false;;;;;; -169630;18;0;false;false;0;0;0;;; -169648;1;0;false;false;;;;;; -169649;1;0;false;false;0;0;0;;; -169650;1;0;false;false;;;;;; -169651;4;1;false;false;127;0;85;;; -169655;1;0;false;false;0;0;0;;; -169656;3;0;false;false;;;;;; -169659;9;0;false;false;0;0;0;;; -169668;1;0;false;false;;;;;; -169669;1;0;false;false;0;0;0;;; -169670;1;0;false;false;;;;;; -169671;4;1;false;false;127;0;85;;; -169675;1;0;false;false;0;0;0;;; -169676;3;0;false;false;;;;;; -169679;11;0;false;false;0;0;0;;; -169690;1;0;false;false;;;;;; -169691;1;0;false;false;0;0;0;;; -169692;1;0;false;false;;;;;; -169693;4;1;false;false;127;0;85;;; -169697;1;0;false;false;0;0;0;;; -169698;3;0;false;false;;;;;; -169701;9;0;false;false;0;0;0;;; -169710;1;0;false;false;;;;;; -169711;1;0;false;false;0;0;0;;; -169712;1;0;false;false;;;;;; -169713;4;1;false;false;127;0;85;;; -169717;1;0;false;false;0;0;0;;; -169718;3;0;false;false;;;;;; -169721;20;0;false;false;0;0;0;;; -169741;1;0;false;false;;;;;; -169742;1;0;false;false;0;0;0;;; -169743;1;0;false;false;;;;;; -169744;4;1;false;false;127;0;85;;; -169748;1;0;false;false;0;0;0;;; -169749;3;0;false;false;;;;;; -169752;12;0;false;false;0;0;0;;; -169764;1;0;false;false;;;;;; -169765;1;0;false;false;0;0;0;;; -169766;1;0;false;false;;;;;; -169767;4;1;false;false;127;0;85;;; -169771;1;0;false;false;0;0;0;;; -169772;3;0;false;false;;;;;; -169775;10;0;false;false;0;0;0;;; -169785;1;0;false;false;;;;;; -169786;1;0;false;false;0;0;0;;; -169787;1;0;false;false;;;;;; -169788;4;1;false;false;127;0;85;;; -169792;1;0;false;false;0;0;0;;; -169793;3;0;false;false;;;;;; -169796;10;0;false;false;0;0;0;;; -169806;1;0;false;false;;;;;; -169807;1;0;false;false;0;0;0;;; -169808;1;0;false;false;;;;;; -169809;4;1;false;false;127;0;85;;; -169813;1;0;false;false;0;0;0;;; -169814;3;0;false;false;;;;;; -169817;9;0;false;false;0;0;0;;; -169826;1;0;false;false;;;;;; -169827;1;0;false;false;0;0;0;;; -169828;1;0;false;false;;;;;; -169829;4;1;false;false;127;0;85;;; -169833;1;0;false;false;0;0;0;;; -169834;2;0;false;false;;;;;; -169836;1;0;false;false;0;0;0;;; -169837;2;0;false;false;;;;;; -169839;3;0;false;false;63;95;191;;; -169842;4;0;false;false;;;;;; -169846;1;0;false;false;63;95;191;;; -169847;1;0;false;false;;;;;; -169848;7;0;false;false;63;95;191;;; -169855;1;0;false;false;;;;;; -169856;3;0;false;false;63;95;191;;; -169859;1;0;false;false;;;;;; -169860;6;0;false;false;63;95;191;;; -169866;1;0;false;false;;;;;; -169867;13;0;false;false;63;95;191;;; -169880;3;0;false;false;;;;;; -169883;2;0;false;false;63;95;191;;; -169885;2;0;false;false;;;;;; -169887;4;1;false;false;127;0;85;;; -169891;1;0;false;false;;;;;; -169892;28;0;false;false;0;0;0;;; -169920;1;0;false;false;;;;;; -169921;6;0;false;false;0;0;0;;; -169927;1;0;false;false;;;;;; -169928;1;0;false;false;0;0;0;;; -169929;3;0;false;false;;;;;; -169932;3;1;false;false;127;0;85;;; -169935;1;0;false;false;;;;;; -169936;11;0;false;false;0;0;0;;; -169947;1;0;false;false;;;;;; -169948;1;0;false;false;0;0;0;;; -169949;1;0;false;false;;;;;; -169950;33;0;false;false;0;0;0;;; -169983;1;0;false;false;;;;;; -169984;1;0;false;false;0;0;0;;; -169985;1;0;false;false;;;;;; -169986;23;0;false;false;0;0;0;;; -170009;3;0;false;false;;;;;; -170012;30;0;false;false;0;0;0;;; -170042;2;0;false;false;;;;;; -170044;1;0;false;false;0;0;0;;; -170045;2;0;false;false;;;;;; -170047;3;0;false;false;63;95;191;;; -170050;3;0;false;false;;;;;; -170053;1;0;false;false;63;95;191;;; -170054;1;0;false;false;;;;;; -170055;2;0;false;false;63;95;191;;; -170057;1;0;false;false;;;;;; -170058;2;0;false;false;63;95;191;;; -170060;1;0;false;false;;;;;; -170061;6;0;false;false;63;95;191;;; -170067;1;0;false;false;;;;;; -170068;3;0;false;false;63;95;191;;; -170071;1;0;false;false;;;;;; -170072;4;0;false;false;63;95;191;;; -170076;1;0;false;false;;;;;; -170077;10;0;false;false;63;95;191;;; -170087;1;0;false;false;;;;;; -170088;3;0;false;false;63;95;191;;; -170091;1;0;false;false;;;;;; -170092;3;0;false;false;63;95;191;;; -170095;1;0;false;false;;;;;; -170096;3;0;false;false;63;95;191;;; -170099;1;0;false;false;;;;;; -170100;6;0;false;false;63;95;191;;; -170106;1;0;false;false;;;;;; -170107;7;0;false;false;63;95;191;;; -170114;1;0;false;false;;;;;; -170115;3;0;false;false;63;95;191;;; -170118;1;0;false;false;;;;;; -170119;7;0;false;false;63;95;191;;; -170126;3;0;false;false;;;;;; -170129;1;0;false;false;63;95;191;;; -170130;1;0;false;false;;;;;; -170131;10;0;false;false;63;95;191;;; -170141;1;0;false;false;;;;;; -170142;2;0;false;false;63;95;191;;; -170144;1;0;false;false;;;;;; -170145;1;0;false;false;63;95;191;;; -170146;1;0;false;false;;;;;; -170147;9;0;false;false;63;95;191;;; -170156;1;0;false;false;;;;;; -170157;3;0;false;false;63;95;191;;; -170160;1;0;false;false;;;;;; -170161;4;0;false;false;63;95;191;;; -170165;1;0;false;false;;;;;; -170166;7;0;false;false;63;95;191;;; -170173;1;0;false;false;;;;;; -170174;5;0;false;false;63;95;191;;; -170179;1;0;false;false;;;;;; -170180;2;0;false;false;63;95;191;;; -170182;1;0;false;false;;;;;; -170183;2;0;false;false;63;95;191;;; -170185;1;0;false;false;;;;;; -170186;3;0;false;false;63;95;191;;; -170189;1;0;false;false;;;;;; -170190;8;0;false;false;63;95;191;;; -170198;3;0;false;false;;;;;; -170201;1;0;false;false;63;95;191;;; -170202;1;0;false;false;;;;;; -170203;3;0;false;false;127;127;159;;; -170206;3;0;false;false;;;;;; -170209;1;0;false;false;63;95;191;;; -170210;3;0;false;false;;;;;; -170213;1;0;false;false;63;95;191;;; -170214;1;0;false;false;;;;;; -170215;7;1;false;false;127;159;191;;; -170222;5;0;false;false;63;95;191;;; -170227;1;0;false;false;;;;;; -170228;8;0;false;false;63;95;191;;; -170236;1;0;false;false;;;;;; -170237;5;0;false;false;63;95;191;;; -170242;3;0;false;false;;;;;; -170245;2;0;false;false;63;95;191;;; -170247;2;0;false;false;;;;;; -170249;4;1;false;false;127;0;85;;; -170253;1;0;false;false;;;;;; -170254;15;0;false;false;0;0;0;;; -170269;1;0;false;false;;;;;; -170270;6;0;false;false;0;0;0;;; -170276;1;0;false;false;;;;;; -170277;1;0;false;false;0;0;0;;; -170278;3;0;false;false;;;;;; -170281;3;1;false;false;127;0;85;;; -170284;1;0;false;false;;;;;; -170285;7;0;false;false;0;0;0;;; -170292;3;0;false;false;;;;;; -170295;9;0;false;false;0;0;0;;; -170304;1;0;false;false;;;;;; -170305;1;0;false;false;0;0;0;;; -170306;1;0;false;false;;;;;; -170307;4;1;false;false;127;0;85;;; -170311;1;0;false;false;0;0;0;;; -170312;3;0;false;false;;;;;; -170315;2;1;false;false;127;0;85;;; -170317;1;0;false;false;;;;;; -170318;14;0;false;false;0;0;0;;; -170332;1;0;false;false;;;;;; -170333;2;0;false;false;0;0;0;;; -170335;1;0;false;false;;;;;; -170336;2;0;false;false;0;0;0;;; -170338;1;0;false;false;;;;;; -170339;1;0;false;false;0;0;0;;; -170340;4;0;false;false;;;;;; -170344;35;0;false;false;63;127;95;;; -170379;2;0;false;false;;;;;; -170381;6;0;false;false;0;0;0;;; -170387;1;0;false;false;;;;;; -170388;1;0;false;false;0;0;0;;; -170389;1;0;false;false;;;;;; -170390;27;0;false;false;0;0;0;;; -170417;1;0;false;false;;;;;; -170418;1;0;false;false;0;0;0;;; -170419;1;0;false;false;;;;;; -170420;17;0;false;false;0;0;0;;; -170437;3;0;false;false;;;;;; -170440;1;0;false;false;0;0;0;;; -170441;3;0;false;false;;;;;; -170444;4;1;false;false;127;0;85;;; -170448;1;0;false;false;;;;;; -170449;1;0;false;false;0;0;0;;; -170450;4;0;false;false;;;;;; -170454;26;0;false;false;63;127;95;;; -170480;2;0;false;false;;;;;; -170482;6;0;false;false;0;0;0;;; -170488;1;0;false;false;;;;;; -170489;1;0;false;false;0;0;0;;; -170490;1;0;false;false;;;;;; -170491;29;0;false;false;0;0;0;;; -170520;1;0;false;false;;;;;; -170521;1;0;false;false;0;0;0;;; -170522;1;0;false;false;;;;;; -170523;17;0;false;false;0;0;0;;; -170540;4;0;false;false;;;;;; -170544;2;1;false;false;127;0;85;;; -170546;1;0;false;false;;;;;; -170547;7;0;false;false;0;0;0;;; -170554;1;0;false;false;;;;;; -170555;2;0;false;false;0;0;0;;; -170557;1;0;false;false;;;;;; -170558;9;0;false;false;0;0;0;;; -170567;1;0;false;false;;;;;; -170568;1;0;false;false;0;0;0;;; -170569;6;0;false;false;;;;;; -170575;39;0;false;false;63;127;95;;; -170614;3;0;false;false;;;;;; -170617;2;1;false;false;127;0;85;;; -170619;1;0;false;false;;;;;; -170620;17;0;false;false;0;0;0;;; -170637;1;0;false;false;;;;;; -170638;1;0;false;false;0;0;0;;; -170639;1;0;false;false;;;;;; -170640;9;0;false;false;0;0;0;;; -170649;1;0;false;false;;;;;; -170650;2;0;false;false;0;0;0;;; -170652;1;0;false;false;;;;;; -170653;1;0;false;false;0;0;0;;; -170654;1;0;false;false;;;;;; -170655;2;0;false;false;0;0;0;;; -170657;1;0;false;false;;;;;; -170658;16;0;false;false;0;0;0;;; -170674;1;0;false;false;;;;;; -170675;2;0;false;false;0;0;0;;; -170677;1;0;false;false;;;;;; -170678;2;0;false;false;0;0;0;;; -170680;1;0;false;false;;;;;; -170681;2;0;false;false;0;0;0;;; -170683;1;0;false;false;;;;;; -170684;15;0;false;false;0;0;0;;; -170699;1;0;false;false;;;;;; -170700;2;0;false;false;0;0;0;;; -170702;1;0;false;false;;;;;; -170703;3;0;false;false;0;0;0;;; -170706;1;0;false;false;;;;;; -170707;1;0;false;false;0;0;0;;; -170708;6;0;false;false;;;;;; -170714;63;0;false;false;63;127;95;;; -170777;4;0;false;false;;;;;; -170781;64;0;false;false;63;127;95;;; -170845;4;0;false;false;;;;;; -170849;3;1;false;false;127;0;85;;; -170852;1;0;false;false;;;;;; -170853;1;0;false;false;0;0;0;;; -170854;1;0;false;false;;;;;; -170855;1;0;false;false;0;0;0;;; -170856;1;0;false;false;;;;;; -170857;15;0;false;false;0;0;0;;; -170872;1;0;false;false;;;;;; -170873;1;0;false;false;0;0;0;;; -170874;1;0;false;false;;;;;; -170875;3;0;false;false;0;0;0;;; -170878;6;0;false;false;;;;;; -170884;6;0;false;false;0;0;0;;; -170890;1;0;false;false;;;;;; -170891;1;0;false;false;0;0;0;;; -170892;1;0;false;false;;;;;; -170893;15;0;false;false;0;0;0;;; -170908;1;0;false;false;;;;;; -170909;1;0;false;false;0;0;0;;; -170910;1;0;false;false;;;;;; -170911;17;0;false;false;0;0;0;;; -170928;5;0;false;false;;;;;; -170933;1;0;false;false;0;0;0;;; -170934;4;0;false;false;;;;;; -170938;1;0;false;false;0;0;0;;; -170939;3;0;false;false;;;;;; -170942;1;0;false;false;0;0;0;;; -170943;3;0;false;false;;;;;; -170946;2;1;false;false;127;0;85;;; -170948;1;0;false;false;;;;;; -170949;7;0;false;false;0;0;0;;; -170956;1;0;false;false;;;;;; -170957;2;0;false;false;0;0;0;;; -170959;1;0;false;false;;;;;; -170960;9;0;false;false;0;0;0;;; -170969;1;0;false;false;;;;;; -170970;1;0;false;false;0;0;0;;; -170971;4;0;false;false;;;;;; -170975;7;1;false;false;127;0;85;;; -170982;1;0;false;false;;;;;; -170983;6;0;false;false;0;0;0;;; -170989;1;0;false;false;;;;;; -170990;1;0;false;false;0;0;0;;; -170991;1;0;false;false;;;;;; -170992;5;1;false;false;127;0;85;;; -170997;1;0;false;false;0;0;0;;; -170998;8;0;false;false;;;;;; -171006;2;1;false;false;127;0;85;;; -171008;1;0;false;false;;;;;; -171009;11;0;false;false;0;0;0;;; -171020;1;0;false;false;;;;;; -171021;1;0;false;false;0;0;0;;; -171022;5;0;false;false;;;;;; -171027;60;0;false;false;63;127;95;;; -171087;3;0;false;false;;;;;; -171090;63;0;false;false;63;127;95;;; -171153;3;0;false;false;;;;;; -171156;60;0;false;false;63;127;95;;; -171216;3;0;false;false;;;;;; -171219;36;0;false;false;63;127;95;;; -171255;3;0;false;false;;;;;; -171258;6;0;false;false;0;0;0;;; -171264;1;0;false;false;;;;;; -171265;1;0;false;false;0;0;0;;; -171266;1;0;false;false;;;;;; -171267;16;0;false;false;0;0;0;;; -171283;1;0;false;false;;;;;; -171284;1;0;false;false;0;0;0;;; -171285;1;0;false;false;;;;;; -171286;12;0;false;false;0;0;0;;; -171298;1;0;false;false;;;;;; -171299;2;0;false;false;0;0;0;;; -171301;1;0;false;false;;;;;; -171302;1;0;false;false;0;0;0;;; -171303;1;0;false;false;;;;;; -171304;2;0;false;false;0;0;0;;; -171306;7;0;false;false;;;;;; -171313;16;0;false;false;0;0;0;;; -171329;1;0;false;false;;;;;; -171330;1;0;false;false;0;0;0;;; -171331;1;0;false;false;;;;;; -171332;12;0;false;false;0;0;0;;; -171344;1;0;false;false;;;;;; -171345;1;0;false;false;0;0;0;;; -171346;1;0;false;false;;;;;; -171347;11;0;false;false;0;0;0;;; -171358;1;0;false;false;;;;;; -171359;2;0;false;false;0;0;0;;; -171361;1;0;false;false;;;;;; -171362;2;0;false;false;0;0;0;;; -171364;4;0;false;false;;;;;; -171368;1;0;false;false;0;0;0;;; -171369;1;0;false;false;;;;;; -171370;4;1;false;false;127;0;85;;; -171374;1;0;false;false;;;;;; -171375;2;1;false;false;127;0;85;;; -171377;1;0;false;false;;;;;; -171378;10;0;false;false;0;0;0;;; -171388;1;0;false;false;;;;;; -171389;1;0;false;false;0;0;0;;; -171390;5;0;false;false;;;;;; -171395;60;0;false;false;63;127;95;;; -171455;3;0;false;false;;;;;; -171458;63;0;false;false;63;127;95;;; -171521;3;0;false;false;;;;;; -171524;52;0;false;false;63;127;95;;; -171576;3;0;false;false;;;;;; -171579;34;0;false;false;63;127;95;;; -171613;3;0;false;false;;;;;; -171616;6;0;false;false;0;0;0;;; -171622;1;0;false;false;;;;;; -171623;1;0;false;false;0;0;0;;; -171624;1;0;false;false;;;;;; -171625;16;0;false;false;0;0;0;;; -171641;1;0;false;false;;;;;; -171642;1;0;false;false;0;0;0;;; -171643;1;0;false;false;;;;;; -171644;9;0;false;false;0;0;0;;; -171653;1;0;false;false;;;;;; -171654;2;0;false;false;0;0;0;;; -171656;1;0;false;false;;;;;; -171657;1;0;false;false;0;0;0;;; -171658;1;0;false;false;;;;;; -171659;2;0;false;false;0;0;0;;; -171661;7;0;false;false;;;;;; -171668;16;0;false;false;0;0;0;;; -171684;1;0;false;false;;;;;; -171685;1;0;false;false;0;0;0;;; -171686;1;0;false;false;;;;;; -171687;9;0;false;false;0;0;0;;; -171696;1;0;false;false;;;;;; -171697;1;0;false;false;0;0;0;;; -171698;1;0;false;false;;;;;; -171699;11;0;false;false;0;0;0;;; -171710;1;0;false;false;;;;;; -171711;2;0;false;false;0;0;0;;; -171713;1;0;false;false;;;;;; -171714;2;0;false;false;0;0;0;;; -171716;4;0;false;false;;;;;; -171720;1;0;false;false;0;0;0;;; -171721;1;0;false;false;;;;;; -171722;4;1;false;false;127;0;85;;; -171726;1;0;false;false;;;;;; -171727;1;0;false;false;0;0;0;;; -171728;5;0;false;false;;;;;; -171733;60;0;false;false;63;127;95;;; -171793;3;0;false;false;;;;;; -171796;62;0;false;false;63;127;95;;; -171858;3;0;false;false;;;;;; -171861;59;0;false;false;63;127;95;;; -171920;3;0;false;false;;;;;; -171923;44;0;false;false;63;127;95;;; -171967;3;0;false;false;;;;;; -171970;6;0;false;false;0;0;0;;; -171976;1;0;false;false;;;;;; -171977;1;0;false;false;0;0;0;;; -171978;1;0;false;false;;;;;; -171979;16;0;false;false;0;0;0;;; -171995;1;0;false;false;;;;;; -171996;1;0;false;false;0;0;0;;; -171997;1;0;false;false;;;;;; -171998;8;0;false;false;0;0;0;;; -172006;1;0;false;false;;;;;; -172007;2;0;false;false;0;0;0;;; -172009;1;0;false;false;;;;;; -172010;1;0;false;false;0;0;0;;; -172011;1;0;false;false;;;;;; -172012;2;0;false;false;0;0;0;;; -172014;8;0;false;false;;;;;; -172022;16;0;false;false;0;0;0;;; -172038;1;0;false;false;;;;;; -172039;1;0;false;false;0;0;0;;; -172040;1;0;false;false;;;;;; -172041;9;0;false;false;0;0;0;;; -172050;1;0;false;false;;;;;; -172051;2;0;false;false;0;0;0;;; -172053;1;0;false;false;;;;;; -172054;1;0;false;false;0;0;0;;; -172055;1;0;false;false;;;;;; -172056;2;0;false;false;0;0;0;;; -172058;7;0;false;false;;;;;; -172065;16;0;false;false;0;0;0;;; -172081;1;0;false;false;;;;;; -172082;1;0;false;false;0;0;0;;; -172083;1;0;false;false;;;;;; -172084;8;0;false;false;0;0;0;;; -172092;1;0;false;false;;;;;; -172093;1;0;false;false;0;0;0;;; -172094;1;0;false;false;;;;;; -172095;11;0;false;false;0;0;0;;; -172106;1;0;false;false;;;;;; -172107;2;0;false;false;0;0;0;;; -172109;1;0;false;false;;;;;; -172110;1;0;false;false;0;0;0;;; -172111;1;0;false;false;;;;;; -172112;2;0;false;false;0;0;0;;; -172114;7;0;false;false;;;;;; -172121;16;0;false;false;0;0;0;;; -172137;1;0;false;false;;;;;; -172138;1;0;false;false;0;0;0;;; -172139;1;0;false;false;;;;;; -172140;9;0;false;false;0;0;0;;; -172149;1;0;false;false;;;;;; -172150;1;0;false;false;0;0;0;;; -172151;1;0;false;false;;;;;; -172152;11;0;false;false;0;0;0;;; -172163;1;0;false;false;;;;;; -172164;2;0;false;false;0;0;0;;; -172166;1;0;false;false;;;;;; -172167;2;0;false;false;0;0;0;;; -172169;4;0;false;false;;;;;; -172173;1;0;false;false;0;0;0;;; -172174;4;0;false;false;;;;;; -172178;73;0;false;false;63;127;95;;; -172251;2;0;false;false;;;;;; -172253;17;0;false;false;63;127;95;;; -172270;2;0;false;false;;;;;; -172272;2;1;false;false;127;0;85;;; -172274;1;0;false;false;;;;;; -172275;8;0;false;false;0;0;0;;; -172283;1;0;false;false;;;;;; -172284;2;0;false;false;0;0;0;;; -172286;1;0;false;false;;;;;; -172287;15;0;false;false;0;0;0;;; -172302;1;0;false;false;;;;;; -172303;1;0;false;false;0;0;0;;; -172304;1;0;false;false;;;;;; -172305;2;0;false;false;0;0;0;;; -172307;1;0;false;false;;;;;; -172308;2;0;false;false;0;0;0;;; -172310;1;0;false;false;;;;;; -172311;15;0;false;false;0;0;0;;; -172326;1;0;false;false;;;;;; -172327;2;0;false;false;0;0;0;;; -172329;1;0;false;false;;;;;; -172330;7;0;false;false;0;0;0;;; -172337;1;0;false;false;;;;;; -172338;2;0;false;false;0;0;0;;; -172340;9;0;false;false;;;;;; -172349;15;0;false;false;0;0;0;;; -172364;1;0;false;false;;;;;; -172365;2;0;false;false;0;0;0;;; -172367;1;0;false;false;;;;;; -172368;6;0;false;false;0;0;0;;; -172374;1;0;false;false;;;;;; -172375;2;0;false;false;0;0;0;;; -172377;1;0;false;false;;;;;; -172378;15;0;false;false;0;0;0;;; -172393;1;0;false;false;;;;;; -172394;2;0;false;false;0;0;0;;; -172396;1;0;false;false;;;;;; -172397;6;0;false;false;0;0;0;;; -172403;1;0;false;false;;;;;; -172404;2;0;false;false;0;0;0;;; -172406;9;0;false;false;;;;;; -172415;15;0;false;false;0;0;0;;; -172430;1;0;false;false;;;;;; -172431;2;0;false;false;0;0;0;;; -172433;1;0;false;false;;;;;; -172434;4;0;false;false;0;0;0;;; -172438;1;0;false;false;;;;;; -172439;1;0;false;false;0;0;0;;; -172440;5;0;false;false;;;;;; -172445;27;0;false;false;0;0;0;;; -172472;4;0;false;false;;;;;; -172476;1;0;false;false;0;0;0;;; -172477;3;0;false;false;;;;;; -172480;1;0;false;false;0;0;0;;; -172481;3;0;false;false;;;;;; -172484;4;1;false;false;127;0;85;;; -172488;1;0;false;false;;;;;; -172489;1;0;false;false;0;0;0;;; -172490;4;0;false;false;;;;;; -172494;21;0;false;false;0;0;0;;; -172515;5;0;false;false;;;;;; -172520;1;0;false;false;0;0;0;;; -172521;2;0;false;false;;;;;; -172523;1;0;false;false;0;0;0;;; -172524;2;0;false;false;;;;;; -172526;3;0;false;false;63;95;191;;; -172529;3;0;false;false;;;;;; -172532;1;0;false;false;63;95;191;;; -172533;1;0;false;false;;;;;; -172534;2;0;false;false;63;95;191;;; -172536;1;0;false;false;;;;;; -172537;1;0;false;false;63;95;191;;; -172538;1;0;false;false;;;;;; -172539;9;0;false;false;63;95;191;;; -172548;1;0;false;false;;;;;; -172549;8;0;false;false;63;95;191;;; -172557;1;0;false;false;;;;;; -172558;7;0;false;false;63;95;191;;; -172565;1;0;false;false;;;;;; -172566;6;0;false;false;63;95;191;;; -172572;1;0;false;false;;;;;; -172573;4;0;false;false;63;95;191;;; -172577;1;0;false;false;;;;;; -172578;3;0;false;false;63;95;191;;; -172581;1;0;false;false;;;;;; -172582;3;0;false;false;63;95;191;;; -172585;1;0;false;false;;;;;; -172586;4;0;false;false;63;95;191;;; -172590;1;0;false;false;;;;;; -172591;3;0;false;false;63;95;191;;; -172594;1;0;false;false;;;;;; -172595;7;0;false;false;63;95;191;;; -172602;3;0;false;false;;;;;; -172605;1;0;false;false;63;95;191;;; -172606;1;0;false;false;;;;;; -172607;6;0;false;false;63;95;191;;; -172613;1;0;false;false;;;;;; -172614;2;0;false;false;63;95;191;;; -172616;1;0;false;false;;;;;; -172617;10;0;false;false;63;95;191;;; -172627;3;0;false;false;;;;;; -172630;1;0;false;false;63;95;191;;; -172631;1;0;false;false;;;;;; -172632;3;0;false;false;127;127;159;;; -172635;3;0;false;false;;;;;; -172638;1;0;false;false;63;95;191;;; -172639;3;0;false;false;;;;;; -172642;1;0;false;false;63;95;191;;; -172643;1;0;false;false;;;;;; -172644;7;1;false;false;127;159;191;;; -172651;5;0;false;false;63;95;191;;; -172656;1;0;false;false;;;;;; -172657;8;0;false;false;63;95;191;;; -172665;1;0;false;false;;;;;; -172666;5;0;false;false;63;95;191;;; -172671;3;0;false;false;;;;;; -172674;2;0;false;false;63;95;191;;; -172676;2;0;false;false;;;;;; -172678;4;1;false;false;127;0;85;;; -172682;1;0;false;false;;;;;; -172683;19;0;false;false;0;0;0;;; -172702;1;0;false;false;;;;;; -172703;6;0;false;false;0;0;0;;; -172709;1;0;false;false;;;;;; -172710;1;0;false;false;0;0;0;;; -172711;3;0;false;false;;;;;; -172714;2;1;false;false;127;0;85;;; -172716;1;0;false;false;;;;;; -172717;19;0;false;false;0;0;0;;; -172736;1;0;false;false;;;;;; -172737;2;0;false;false;0;0;0;;; -172739;1;0;false;false;;;;;; -172740;4;1;false;false;127;0;85;;; -172744;1;0;false;false;0;0;0;;; -172745;1;0;false;false;;;;;; -172746;1;0;false;false;0;0;0;;; -172747;4;0;false;false;;;;;; -172751;18;0;false;false;0;0;0;;; -172769;1;0;false;false;;;;;; -172770;1;0;false;false;0;0;0;;; -172771;1;0;false;false;;;;;; -172772;3;1;false;false;127;0;85;;; -172775;1;0;false;false;;;;;; -172776;18;0;false;false;0;0;0;;; -172794;1;0;false;false;;;;;; -172795;13;0;false;false;0;0;0;;; -172808;3;0;false;false;;;;;; -172811;1;0;false;false;0;0;0;;; -172812;6;0;false;false;;;;;; -172818;5;0;false;false;0;0;0;;; -172823;1;0;false;false;;;;;; -172824;11;0;false;false;0;0;0;;; -172835;1;0;false;false;;;;;; -172836;1;0;false;false;0;0;0;;; -172837;1;0;false;false;;;;;; -172838;3;1;false;false;127;0;85;;; -172841;1;0;false;false;;;;;; -172842;8;0;false;false;0;0;0;;; -172850;3;0;false;false;;;;;; -172853;21;0;false;false;0;0;0;;; -172874;1;0;false;false;;;;;; -172875;1;0;false;false;0;0;0;;; -172876;1;0;false;false;;;;;; -172877;16;0;false;false;0;0;0;;; -172893;3;0;false;false;;;;;; -172896;19;0;false;false;0;0;0;;; -172915;1;0;false;false;;;;;; -172916;1;0;false;false;0;0;0;;; -172917;1;0;false;false;;;;;; -172918;14;0;false;false;0;0;0;;; -172932;3;0;false;false;;;;;; -172935;21;0;false;false;0;0;0;;; -172956;1;0;false;false;;;;;; -172957;1;0;false;false;0;0;0;;; -172958;1;0;false;false;;;;;; -172959;16;0;false;false;0;0;0;;; -172975;3;0;false;false;;;;;; -172978;16;0;false;false;0;0;0;;; -172994;1;0;false;false;;;;;; -172995;1;0;false;false;0;0;0;;; -172996;1;0;false;false;;;;;; -172997;4;1;false;false;127;0;85;;; -173001;1;0;false;false;0;0;0;;; -173002;3;0;false;false;;;;;; -173005;26;0;false;false;0;0;0;;; -173031;1;0;false;false;;;;;; -173032;13;0;false;false;0;0;0;;; -173045;3;0;false;false;;;;;; -173048;2;1;false;false;127;0;85;;; -173050;1;0;false;false;;;;;; -173051;18;0;false;false;0;0;0;;; -173069;1;0;false;false;;;;;; -173070;1;0;false;false;0;0;0;;; -173071;4;0;false;false;;;;;; -173075;17;0;false;false;0;0;0;;; -173092;3;0;false;false;;;;;; -173095;1;0;false;false;0;0;0;;; -173096;2;0;false;false;;;;;; -173098;1;0;false;false;0;0;0;;; -173099;2;0;false;false;;;;;; -173101;3;0;false;false;63;95;191;;; -173104;3;0;false;false;;;;;; -173107;1;0;false;false;63;95;191;;; -173108;1;0;false;false;;;;;; -173109;6;0;false;false;63;95;191;;; -173115;1;0;false;false;;;;;; -173116;3;0;false;false;63;95;191;;; -173119;1;0;false;false;;;;;; -173120;9;0;false;false;63;95;191;;; -173129;1;0;false;false;;;;;; -173130;10;0;false;false;63;95;191;;; -173140;3;0;false;false;;;;;; -173143;1;0;false;false;63;95;191;;; -173144;1;0;false;false;;;;;; -173145;3;0;false;false;127;127;159;;; -173148;3;0;false;false;;;;;; -173151;1;0;false;false;63;95;191;;; -173152;3;0;false;false;;;;;; -173155;1;0;false;false;63;95;191;;; -173156;1;0;false;false;;;;;; -173157;7;1;false;false;127;159;191;;; -173164;5;0;false;false;63;95;191;;; -173169;1;0;false;false;;;;;; -173170;8;0;false;false;63;95;191;;; -173178;1;0;false;false;;;;;; -173179;5;0;false;false;63;95;191;;; -173184;3;0;false;false;;;;;; -173187;2;0;false;false;63;95;191;;; -173189;2;0;false;false;;;;;; -173191;4;1;false;false;127;0;85;;; -173195;1;0;false;false;;;;;; -173196;17;0;false;false;0;0;0;;; -173213;1;0;false;false;;;;;; -173214;6;0;false;false;0;0;0;;; -173220;1;0;false;false;;;;;; -173221;1;0;false;false;0;0;0;;; -173222;3;0;false;false;;;;;; -173225;2;1;false;false;127;0;85;;; -173227;1;0;false;false;;;;;; -173228;19;0;false;false;0;0;0;;; -173247;1;0;false;false;;;;;; -173248;2;0;false;false;0;0;0;;; -173250;1;0;false;false;;;;;; -173251;4;1;false;false;127;0;85;;; -173255;1;0;false;false;0;0;0;;; -173256;1;0;false;false;;;;;; -173257;1;0;false;false;0;0;0;;; -173258;4;0;false;false;;;;;; -173262;2;1;false;false;127;0;85;;; -173264;1;0;false;false;;;;;; -173265;21;0;false;false;0;0;0;;; -173286;1;0;false;false;;;;;; -173287;2;0;false;false;0;0;0;;; -173289;1;0;false;false;;;;;; -173290;11;0;false;false;0;0;0;;; -173301;1;0;false;false;;;;;; -173302;2;0;false;false;0;0;0;;; -173304;1;0;false;false;;;;;; -173305;20;0;false;false;0;0;0;;; -173325;1;0;false;false;;;;;; -173326;2;0;false;false;0;0;0;;; -173328;1;0;false;false;;;;;; -173329;12;0;false;false;0;0;0;;; -173341;1;0;false;false;;;;;; -173342;1;0;false;false;0;0;0;;; -173343;5;0;false;false;;;;;; -173348;3;1;false;false;127;0;85;;; -173351;1;0;false;false;;;;;; -173352;1;0;false;false;0;0;0;;; -173353;6;0;false;false;;;;;; -173359;2;1;false;false;127;0;85;;; -173361;1;0;false;false;;;;;; -173362;12;0;false;false;0;0;0;;; -173374;1;0;false;false;;;;;; -173375;1;0;false;false;0;0;0;;; -173376;1;0;false;false;;;;;; -173377;11;0;false;false;0;0;0;;; -173388;1;0;false;false;;;;;; -173389;1;0;false;false;0;0;0;;; -173390;1;0;false;false;;;;;; -173391;2;0;false;false;0;0;0;;; -173393;1;0;false;false;;;;;; -173394;1;0;false;false;0;0;0;;; -173395;7;0;false;false;;;;;; -173402;32;0;false;false;0;0;0;;; -173434;1;0;false;false;;;;;; -173435;11;0;false;false;0;0;0;;; -173446;1;0;false;false;;;;;; -173447;1;0;false;false;0;0;0;;; -173448;1;0;false;false;;;;;; -173449;12;0;false;false;0;0;0;;; -173461;1;0;false;false;;;;;; -173462;25;0;false;false;0;0;0;;; -173487;6;0;false;false;;;;;; -173493;1;0;false;false;0;0;0;;; -173494;5;0;false;false;;;;;; -173499;1;0;false;false;0;0;0;;; -173500;5;0;false;false;;;;;; -173505;5;1;false;false;127;0;85;;; -173510;1;0;false;false;;;;;; -173511;9;0;false;false;0;0;0;;; -173520;1;0;false;false;;;;;; -173521;6;0;false;false;0;0;0;;; -173527;1;0;false;false;;;;;; -173528;1;0;false;false;0;0;0;;; -173529;6;0;false;false;;;;;; -173535;69;0;false;false;63;127;95;;; -173604;4;0;false;false;;;;;; -173608;64;0;false;false;63;127;95;;; -173672;4;0;false;false;;;;;; -173676;18;0;false;false;63;127;95;;; -173694;4;0;false;false;;;;;; -173698;47;0;false;false;63;127;95;;; -173745;4;0;false;false;;;;;; -173749;2;1;false;false;127;0;85;;; -173751;1;0;false;false;;;;;; -173752;11;0;false;false;0;0;0;;; -173763;1;0;false;false;;;;;; -173764;2;0;false;false;0;0;0;;; -173766;1;0;false;false;;;;;; -173767;31;0;false;false;0;0;0;;; -173798;1;0;false;false;;;;;; -173799;1;0;false;false;0;0;0;;; -173800;7;0;false;false;;;;;; -173807;5;1;false;false;127;0;85;;; -173812;1;0;false;false;;;;;; -173813;6;0;false;false;0;0;0;;; -173819;6;0;false;false;;;;;; -173825;1;0;false;false;0;0;0;;; -173826;5;0;false;false;;;;;; -173831;1;0;false;false;0;0;0;;; -173832;4;0;false;false;;;;;; -173836;1;0;false;false;0;0;0;;; -173837;3;0;false;false;;;;;; -173840;1;0;false;false;0;0;0;;; -173841;3;0;false;false;;;;;; -173844;18;0;false;false;0;0;0;;; -173862;1;0;false;false;;;;;; -173863;1;0;false;false;0;0;0;;; -173864;1;0;false;false;;;;;; -173865;4;1;false;false;127;0;85;;; -173869;1;0;false;false;0;0;0;;; -173870;2;0;false;false;;;;;; -173872;1;0;false;false;0;0;0;;; -173873;2;0;false;false;;;;;; -173875;3;0;false;false;63;95;191;;; -173878;3;0;false;false;;;;;; -173881;1;0;false;false;63;95;191;;; -173882;1;0;false;false;;;;;; -173883;7;0;false;false;63;95;191;;; -173890;1;0;false;false;;;;;; -173891;3;0;false;false;63;95;191;;; -173894;1;0;false;false;;;;;; -173895;5;0;false;false;63;95;191;;; -173900;1;0;false;false;;;;;; -173901;8;0;false;false;63;95;191;;; -173909;1;0;false;false;;;;;; -173910;3;0;false;false;63;95;191;;; -173913;1;0;false;false;;;;;; -173914;9;0;false;false;63;95;191;;; -173923;1;0;false;false;;;;;; -173924;2;0;false;false;63;95;191;;; -173926;1;0;false;false;;;;;; -173927;5;0;false;false;63;95;191;;; -173932;1;0;false;false;;;;;; -173933;6;0;false;false;63;95;191;;; -173939;1;0;false;false;;;;;; -173940;1;0;false;false;63;95;191;;; -173941;1;0;false;false;;;;;; -173942;3;0;false;false;63;95;191;;; -173945;1;0;false;false;;;;;; -173946;4;0;false;false;63;95;191;;; -173950;4;0;false;false;;;;;; -173954;1;0;false;false;63;95;191;;; -173955;1;0;false;false;;;;;; -173956;8;0;false;false;63;95;191;;; -173964;3;0;false;false;;;;;; -173967;2;0;false;false;63;95;191;;; -173969;2;0;false;false;;;;;; -173971;4;1;false;false;127;0;85;;; -173975;1;0;false;false;;;;;; -173976;28;0;false;false;0;0;0;;; -174004;1;0;false;false;;;;;; -174005;6;0;false;false;0;0;0;;; -174011;1;0;false;false;;;;;; -174012;1;0;false;false;0;0;0;;; -174013;3;0;false;false;;;;;; -174016;2;1;false;false;127;0;85;;; -174018;1;0;false;false;;;;;; -174019;13;0;false;false;0;0;0;;; -174032;1;0;false;false;;;;;; -174033;2;0;false;false;0;0;0;;; -174035;1;0;false;false;;;;;; -174036;1;0;false;false;0;0;0;;; -174037;1;0;false;false;;;;;; -174038;2;0;false;false;0;0;0;;; -174040;1;0;false;false;;;;;; -174041;20;0;false;false;0;0;0;;; -174061;1;0;false;false;;;;;; -174062;1;0;false;false;0;0;0;;; -174063;4;0;false;false;;;;;; -174067;6;1;false;false;127;0;85;;; -174073;1;0;false;false;0;0;0;;; -174074;3;0;false;false;;;;;; -174077;1;0;false;false;0;0;0;;; -174078;3;0;false;false;;;;;; -174081;7;0;false;false;0;0;0;;; -174088;1;0;false;false;;;;;; -174089;2;0;false;false;0;0;0;;; -174091;1;0;false;false;;;;;; -174092;10;0;false;false;0;0;0;;; -174102;3;0;false;false;;;;;; -174105;16;0;false;false;0;0;0;;; -174121;1;0;false;false;;;;;; -174122;1;0;false;false;0;0;0;;; -174123;1;0;false;false;;;;;; -174124;4;1;false;false;127;0;85;;; -174128;1;0;false;false;0;0;0;;; -174129;3;0;false;false;;;;;; -174132;11;0;false;false;0;0;0;;; -174143;1;0;false;false;;;;;; -174144;1;0;false;false;0;0;0;;; -174145;1;0;false;false;;;;;; -174146;26;0;false;false;0;0;0;;; -174172;3;0;false;false;;;;;; -174175;17;0;false;false;0;0;0;;; -174192;3;0;false;false;;;;;; -174195;11;0;false;false;0;0;0;;; -174206;1;0;false;false;;;;;; -174207;1;0;false;false;0;0;0;;; -174208;1;0;false;false;;;;;; -174209;32;0;false;false;0;0;0;;; -174241;3;0;false;false;;;;;; -174244;12;0;false;false;0;0;0;;; -174256;3;0;false;false;;;;;; -174259;19;0;false;false;0;0;0;;; -174278;3;0;false;false;;;;;; -174281;20;0;false;false;0;0;0;;; -174301;1;0;false;false;;;;;; -174302;1;0;false;false;0;0;0;;; -174303;1;0;false;false;;;;;; -174304;3;1;false;false;127;0;85;;; -174307;1;0;false;false;;;;;; -174308;18;0;false;false;0;0;0;;; -174326;1;0;false;false;;;;;; -174327;13;0;false;false;0;0;0;;; -174340;2;0;false;false;;;;;; -174342;1;0;false;false;0;0;0;;; -174343;2;0;false;false;;;;;; -174345;3;0;false;false;63;95;191;;; -174348;4;0;false;false;;;;;; -174352;1;0;false;false;63;95;191;;; -174353;1;0;false;false;;;;;; -174354;7;0;false;false;63;95;191;;; -174361;1;0;false;false;;;;;; -174362;3;0;false;false;63;95;191;;; -174365;1;0;false;false;;;;;; -174366;5;0;false;false;63;95;191;;; -174371;1;0;false;false;;;;;; -174372;8;0;false;false;63;95;191;;; -174380;1;0;false;false;;;;;; -174381;3;0;false;false;63;95;191;;; -174384;1;0;false;false;;;;;; -174385;9;0;false;false;63;95;191;;; -174394;1;0;false;false;;;;;; -174395;2;0;false;false;63;95;191;;; -174397;1;0;false;false;;;;;; -174398;5;0;false;false;63;95;191;;; -174403;1;0;false;false;;;;;; -174404;6;0;false;false;63;95;191;;; -174410;1;0;false;false;;;;;; -174411;1;0;false;false;63;95;191;;; -174412;1;0;false;false;;;;;; -174413;3;0;false;false;63;95;191;;; -174416;1;0;false;false;;;;;; -174417;4;0;false;false;63;95;191;;; -174421;4;0;false;false;;;;;; -174425;1;0;false;false;63;95;191;;; -174426;1;0;false;false;;;;;; -174427;8;0;false;false;63;95;191;;; -174435;3;0;false;false;;;;;; -174438;2;0;false;false;63;95;191;;; -174440;2;0;false;false;;;;;; -174442;4;1;false;false;127;0;85;;; -174446;1;0;false;false;;;;;; -174447;21;0;false;false;0;0;0;;; -174468;1;0;false;false;;;;;; -174469;6;0;false;false;0;0;0;;; -174475;1;0;false;false;;;;;; -174476;1;0;false;false;0;0;0;;; -174477;3;0;false;false;;;;;; -174480;9;0;false;false;0;0;0;;; -174489;1;0;false;false;;;;;; -174490;1;0;false;false;0;0;0;;; -174491;1;0;false;false;;;;;; -174492;4;1;false;false;127;0;85;;; -174496;1;0;false;false;0;0;0;;; -174497;3;0;false;false;;;;;; -174500;16;0;false;false;0;0;0;;; -174516;1;0;false;false;;;;;; -174517;1;0;false;false;0;0;0;;; -174518;1;0;false;false;;;;;; -174519;5;1;false;false;127;0;85;;; -174524;1;0;false;false;0;0;0;;; -174525;3;0;false;false;;;;;; -174528;2;1;false;false;127;0;85;;; -174530;1;0;false;false;;;;;; -174531;13;0;false;false;0;0;0;;; -174544;1;0;false;false;;;;;; -174545;2;0;false;false;0;0;0;;; -174547;1;0;false;false;;;;;; -174548;2;0;false;false;0;0;0;;; -174550;1;0;false;false;;;;;; -174551;1;0;false;false;0;0;0;;; -174552;4;0;false;false;;;;;; -174556;6;0;false;false;0;0;0;;; -174562;1;0;false;false;;;;;; -174563;4;0;false;false;0;0;0;;; -174567;1;0;false;false;;;;;; -174568;1;0;false;false;0;0;0;;; -174569;1;0;false;false;;;;;; -174570;53;0;false;false;0;0;0;;; -174623;4;0;false;false;;;;;; -174627;2;1;false;false;127;0;85;;; -174629;1;0;false;false;;;;;; -174630;5;0;false;false;0;0;0;;; -174635;1;0;false;false;;;;;; -174636;2;0;false;false;0;0;0;;; -174638;1;0;false;false;;;;;; -174639;4;1;false;false;127;0;85;;; -174643;1;0;false;false;;;;;; -174644;2;0;false;false;0;0;0;;; -174646;1;0;false;false;;;;;; -174647;13;0;false;false;0;0;0;;; -174660;1;0;false;false;;;;;; -174661;1;0;false;false;0;0;0;;; -174662;1;0;false;false;;;;;; -174663;2;0;false;false;0;0;0;;; -174665;1;0;false;false;;;;;; -174666;1;0;false;false;0;0;0;;; -174667;5;0;false;false;;;;;; -174672;20;0;false;false;63;127;95;;; -174692;3;0;false;false;;;;;; -174695;3;1;false;false;127;0;85;;; -174698;1;0;false;false;;;;;; -174699;1;0;false;false;0;0;0;;; -174700;1;0;false;false;;;;;; -174701;1;0;false;false;0;0;0;;; -174702;1;0;false;false;;;;;; -174703;8;0;false;false;0;0;0;;; -174711;5;0;false;false;;;;;; -174716;3;1;false;false;127;0;85;;; -174719;1;0;false;false;;;;;; -174720;1;0;false;false;0;0;0;;; -174721;1;0;false;false;;;;;; -174722;1;0;false;false;0;0;0;;; -174723;1;0;false;false;;;;;; -174724;7;0;false;false;0;0;0;;; -174731;1;0;false;false;;;;;; -174732;1;0;false;false;0;0;0;;; -174733;1;0;false;false;;;;;; -174734;10;0;false;false;0;0;0;;; -174744;5;0;false;false;;;;;; -174749;24;0;false;false;0;0;0;;; -174773;1;0;false;false;;;;;; -174774;2;0;false;false;0;0;0;;; -174776;1;0;false;false;;;;;; -174777;5;1;false;false;127;0;85;;; -174782;2;0;false;false;0;0;0;;; -174784;5;0;false;false;;;;;; -174789;16;0;false;false;63;127;95;;; -174805;3;0;false;false;;;;;; -174808;5;0;false;false;0;0;0;;; -174813;1;0;false;false;;;;;; -174814;1;0;false;false;0;0;0;;; -174815;1;0;false;false;;;;;; -174816;1;0;false;false;0;0;0;;; -174817;1;0;false;false;;;;;; -174818;3;1;false;false;127;0;85;;; -174821;1;0;false;false;;;;;; -174822;8;0;false;false;0;0;0;;; -174830;5;0;false;false;;;;;; -174835;7;0;false;false;0;0;0;;; -174842;1;0;false;false;;;;;; -174843;1;0;false;false;0;0;0;;; -174844;1;0;false;false;;;;;; -174845;12;0;false;false;0;0;0;;; -174857;5;0;false;false;;;;;; -174862;5;0;false;false;0;0;0;;; -174867;1;0;false;false;;;;;; -174868;1;0;false;false;0;0;0;;; -174869;1;0;false;false;;;;;; -174870;12;0;false;false;0;0;0;;; -174882;5;0;false;false;;;;;; -174887;6;0;false;false;0;0;0;;; -174893;1;0;false;false;;;;;; -174894;1;0;false;false;0;0;0;;; -174895;1;0;false;false;;;;;; -174896;28;0;false;false;0;0;0;;; -174924;5;0;false;false;;;;;; -174929;16;0;false;false;0;0;0;;; -174945;4;0;false;false;;;;;; -174949;1;0;false;false;0;0;0;;; -174950;3;0;false;false;;;;;; -174953;1;0;false;false;0;0;0;;; -174954;3;0;false;false;;;;;; -174957;2;1;false;false;127;0;85;;; -174959;1;0;false;false;;;;;; -174960;14;0;false;false;0;0;0;;; -174974;1;0;false;false;;;;;; -174975;2;0;false;false;0;0;0;;; -174977;1;0;false;false;;;;;; -174978;2;0;false;false;0;0;0;;; -174980;1;0;false;false;;;;;; -174981;2;0;false;false;0;0;0;;; -174983;1;0;false;false;;;;;; -174984;10;0;false;false;0;0;0;;; -174994;1;0;false;false;;;;;; -174995;2;0;false;false;0;0;0;;; -174997;1;0;false;false;;;;;; -174998;16;0;false;false;0;0;0;;; -175014;1;0;false;false;;;;;; -175015;1;0;false;false;0;0;0;;; -175016;1;0;false;false;;;;;; -175017;9;0;false;false;0;0;0;;; -175026;1;0;false;false;;;;;; -175027;2;0;false;false;0;0;0;;; -175029;1;0;false;false;;;;;; -175030;3;0;false;false;0;0;0;;; -175033;1;0;false;false;;;;;; -175034;1;0;false;false;0;0;0;;; -175035;4;0;false;false;;;;;; -175039;6;1;false;false;127;0;85;;; -175045;1;0;false;false;0;0;0;;; -175046;4;0;false;false;;;;;; -175050;1;0;false;false;0;0;0;;; -175051;3;0;false;false;;;;;; -175054;7;1;false;false;127;0;85;;; -175061;1;0;false;false;;;;;; -175062;6;0;false;false;0;0;0;;; -175068;1;0;false;false;;;;;; -175069;1;0;false;false;0;0;0;;; -175070;1;0;false;false;;;;;; -175071;16;0;false;false;0;0;0;;; -175087;1;0;false;false;;;;;; -175088;1;0;false;false;0;0;0;;; -175089;1;0;false;false;;;;;; -175090;9;0;false;false;0;0;0;;; -175099;1;0;false;false;;;;;; -175100;2;0;false;false;0;0;0;;; -175102;1;0;false;false;;;;;; -175103;2;0;false;false;0;0;0;;; -175105;4;0;false;false;;;;;; -175109;7;0;false;false;0;0;0;;; -175116;1;0;false;false;;;;;; -175117;2;0;false;false;0;0;0;;; -175119;1;0;false;false;;;;;; -175120;10;0;false;false;0;0;0;;; -175130;3;0;false;false;;;;;; -175133;30;0;false;false;0;0;0;;; -175163;1;0;false;false;;;;;; -175164;8;0;false;false;0;0;0;;; -175172;1;0;false;false;;;;;; -175173;8;0;false;false;0;0;0;;; -175181;2;0;false;false;;;;;; -175183;1;0;false;false;0;0;0;;; -175184;2;0;false;false;;;;;; -175186;3;0;false;false;63;95;191;;; -175189;4;0;false;false;;;;;; -175193;1;0;false;false;63;95;191;;; -175194;1;0;false;false;;;;;; -175195;7;0;false;false;63;95;191;;; -175202;1;0;false;false;;;;;; -175203;3;0;false;false;63;95;191;;; -175206;1;0;false;false;;;;;; -175207;5;0;false;false;63;95;191;;; -175212;1;0;false;false;;;;;; -175213;8;0;false;false;63;95;191;;; -175221;1;0;false;false;;;;;; -175222;3;0;false;false;63;95;191;;; -175225;1;0;false;false;;;;;; -175226;9;0;false;false;63;95;191;;; -175235;1;0;false;false;;;;;; -175236;2;0;false;false;63;95;191;;; -175238;1;0;false;false;;;;;; -175239;5;0;false;false;63;95;191;;; -175244;1;0;false;false;;;;;; -175245;6;0;false;false;63;95;191;;; -175251;1;0;false;false;;;;;; -175252;1;0;false;false;63;95;191;;; -175253;1;0;false;false;;;;;; -175254;2;0;false;false;63;95;191;;; -175256;1;0;false;false;;;;;; -175257;7;0;false;false;63;95;191;;; -175264;4;0;false;false;;;;;; -175268;1;0;false;false;63;95;191;;; -175269;1;0;false;false;;;;;; -175270;6;0;false;false;63;95;191;;; -175276;1;0;false;false;;;;;; -175277;3;0;false;false;63;95;191;;; -175280;1;0;false;false;;;;;; -175281;5;0;false;false;63;95;191;;; -175286;1;0;false;false;;;;;; -175287;5;0;false;false;63;95;191;;; -175292;3;0;false;false;;;;;; -175295;2;0;false;false;63;95;191;;; -175297;2;0;false;false;;;;;; -175299;4;1;false;false;127;0;85;;; -175303;1;0;false;false;;;;;; -175304;21;0;false;false;0;0;0;;; -175325;1;0;false;false;;;;;; -175326;6;0;false;false;0;0;0;;; -175332;1;0;false;false;;;;;; -175333;1;0;false;false;0;0;0;;; -175334;3;0;false;false;;;;;; -175337;2;1;false;false;127;0;85;;; -175339;1;0;false;false;;;;;; -175340;12;0;false;false;0;0;0;;; -175352;1;0;false;false;;;;;; -175353;6;1;false;false;127;0;85;;; -175359;1;0;false;false;0;0;0;;; -175360;3;0;false;false;;;;;; -175363;2;1;false;false;127;0;85;;; -175365;1;0;false;false;;;;;; -175366;17;0;false;false;0;0;0;;; -175383;1;0;false;false;;;;;; -175384;1;0;false;false;0;0;0;;; -175385;1;0;false;false;;;;;; -175386;12;0;false;false;0;0;0;;; -175398;1;0;false;false;;;;;; -175399;2;0;false;false;0;0;0;;; -175401;1;0;false;false;;;;;; -175402;2;0;false;false;0;0;0;;; -175404;1;0;false;false;;;;;; -175405;1;0;false;false;0;0;0;;; -175406;4;0;false;false;;;;;; -175410;6;1;false;false;127;0;85;;; -175416;1;0;false;false;0;0;0;;; -175417;3;0;false;false;;;;;; -175420;1;0;false;false;0;0;0;;; -175421;3;0;false;false;;;;;; -175424;7;0;false;false;0;0;0;;; -175431;1;0;false;false;;;;;; -175432;2;0;false;false;0;0;0;;; -175434;1;0;false;false;;;;;; -175435;10;0;false;false;0;0;0;;; -175445;3;0;false;false;;;;;; -175448;30;0;false;false;0;0;0;;; -175478;1;0;false;false;;;;;; -175479;8;0;false;false;0;0;0;;; -175487;1;0;false;false;;;;;; -175488;4;1;false;false;127;0;85;;; -175492;2;0;false;false;0;0;0;;; -175494;3;0;false;false;;;;;; -175497;9;0;false;false;0;0;0;;; -175506;3;0;false;false;;;;;; -175509;20;0;false;false;0;0;0;;; -175529;2;0;false;false;;;;;; -175531;1;0;false;false;0;0;0;;; -175532;2;0;false;false;;;;;; -175534;3;0;false;false;63;95;191;;; -175537;4;0;false;false;;;;;; -175541;1;0;false;false;63;95;191;;; -175542;1;0;false;false;;;;;; -175543;13;0;false;false;63;95;191;;; -175556;1;0;false;false;;;;;; -175557;4;0;false;false;63;95;191;;; -175561;1;0;false;false;;;;;; -175562;4;0;false;false;63;95;191;;; -175566;1;0;false;false;;;;;; -175567;3;0;false;false;63;95;191;;; -175570;1;0;false;false;;;;;; -175571;5;0;false;false;63;95;191;;; -175576;1;0;false;false;;;;;; -175577;6;0;false;false;63;95;191;;; -175583;1;0;false;false;;;;;; -175584;2;0;false;false;63;95;191;;; -175586;1;0;false;false;;;;;; -175587;9;0;false;false;63;95;191;;; -175596;3;0;false;false;;;;;; -175599;2;0;false;false;63;95;191;;; -175601;2;0;false;false;;;;;; -175603;4;1;false;false;127;0;85;;; -175607;1;0;false;false;;;;;; -175608;19;0;false;false;0;0;0;;; -175627;1;0;false;false;;;;;; -175628;6;0;false;false;0;0;0;;; -175634;1;0;false;false;;;;;; -175635;1;0;false;false;0;0;0;;; -175636;3;0;false;false;;;;;; -175639;9;0;false;false;0;0;0;;; -175648;1;0;false;false;;;;;; -175649;1;0;false;false;0;0;0;;; -175650;1;0;false;false;;;;;; -175651;5;1;false;false;127;0;85;;; -175656;1;0;false;false;0;0;0;;; -175657;3;0;false;false;;;;;; -175660;16;0;false;false;0;0;0;;; -175676;1;0;false;false;;;;;; -175677;1;0;false;false;0;0;0;;; -175678;1;0;false;false;;;;;; -175679;5;1;false;false;127;0;85;;; -175684;1;0;false;false;0;0;0;;; -175685;3;0;false;false;;;;;; -175688;7;0;false;false;0;0;0;;; -175695;1;0;false;false;;;;;; -175696;2;0;false;false;0;0;0;;; -175698;1;0;false;false;;;;;; -175699;10;0;false;false;0;0;0;;; -175709;3;0;false;false;;;;;; -175712;16;0;false;false;0;0;0;;; -175728;3;0;false;false;;;;;; -175731;2;1;false;false;127;0;85;;; -175733;1;0;false;false;;;;;; -175734;13;0;false;false;0;0;0;;; -175747;1;0;false;false;;;;;; -175748;2;0;false;false;0;0;0;;; -175750;1;0;false;false;;;;;; -175751;2;0;false;false;0;0;0;;; -175753;1;0;false;false;;;;;; -175754;1;0;false;false;0;0;0;;; -175755;4;0;false;false;;;;;; -175759;3;1;false;false;127;0;85;;; -175762;1;0;false;false;;;;;; -175763;1;0;false;false;0;0;0;;; -175764;5;0;false;false;;;;;; -175769;2;1;false;false;127;0;85;;; -175771;1;0;false;false;;;;;; -175772;12;0;false;false;0;0;0;;; -175784;1;0;false;false;;;;;; -175785;1;0;false;false;0;0;0;;; -175786;1;0;false;false;;;;;; -175787;11;0;false;false;0;0;0;;; -175798;1;0;false;false;;;;;; -175799;1;0;false;false;0;0;0;;; -175800;1;0;false;false;;;;;; -175801;2;0;false;false;0;0;0;;; -175803;1;0;false;false;;;;;; -175804;1;0;false;false;0;0;0;;; -175805;6;0;false;false;;;;;; -175811;32;0;false;false;0;0;0;;; -175843;1;0;false;false;;;;;; -175844;11;0;false;false;0;0;0;;; -175855;1;0;false;false;;;;;; -175856;1;0;false;false;0;0;0;;; -175857;1;0;false;false;;;;;; -175858;12;0;false;false;0;0;0;;; -175870;1;0;false;false;;;;;; -175871;25;0;false;false;0;0;0;;; -175896;5;0;false;false;;;;;; -175901;1;0;false;false;0;0;0;;; -175902;4;0;false;false;;;;;; -175906;1;0;false;false;0;0;0;;; -175907;4;0;false;false;;;;;; -175911;5;1;false;false;127;0;85;;; -175916;1;0;false;false;;;;;; -175917;9;0;false;false;0;0;0;;; -175926;1;0;false;false;;;;;; -175927;6;0;false;false;0;0;0;;; -175933;1;0;false;false;;;;;; -175934;1;0;false;false;0;0;0;;; -175935;5;0;false;false;;;;;; -175940;69;0;false;false;63;127;95;;; -176009;3;0;false;false;;;;;; -176012;64;0;false;false;63;127;95;;; -176076;3;0;false;false;;;;;; -176079;18;0;false;false;63;127;95;;; -176097;3;0;false;false;;;;;; -176100;47;0;false;false;63;127;95;;; -176147;3;0;false;false;;;;;; -176150;2;1;false;false;127;0;85;;; -176152;1;0;false;false;;;;;; -176153;11;0;false;false;0;0;0;;; -176164;1;0;false;false;;;;;; -176165;2;0;false;false;0;0;0;;; -176167;1;0;false;false;;;;;; -176168;31;0;false;false;0;0;0;;; -176199;1;0;false;false;;;;;; -176200;1;0;false;false;0;0;0;;; -176201;6;0;false;false;;;;;; -176207;5;1;false;false;127;0;85;;; -176212;1;0;false;false;;;;;; -176213;6;0;false;false;0;0;0;;; -176219;5;0;false;false;;;;;; -176224;1;0;false;false;0;0;0;;; -176225;4;0;false;false;;;;;; -176229;1;0;false;false;0;0;0;;; -176230;3;0;false;false;;;;;; -176233;1;0;false;false;0;0;0;;; -176234;2;0;false;false;;;;;; -176236;1;0;false;false;0;0;0;;; -176237;2;0;false;false;;;;;; -176239;3;0;false;false;63;95;191;;; -176242;3;0;false;false;;;;;; -176245;1;0;false;false;63;95;191;;; -176246;1;0;false;false;;;;;; -176247;7;0;false;false;63;95;191;;; -176254;1;0;false;false;;;;;; -176255;3;0;false;false;63;95;191;;; -176258;1;0;false;false;;;;;; -176259;11;0;false;false;63;95;191;;; -176270;1;0;false;false;;;;;; -176271;4;0;false;false;63;95;191;;; -176275;1;0;false;false;;;;;; -176276;9;0;false;false;63;95;191;;; -176285;1;0;false;false;;;;;; -176286;2;0;false;false;63;95;191;;; -176288;1;0;false;false;;;;;; -176289;3;0;false;false;63;95;191;;; -176292;1;0;false;false;;;;;; -176293;5;0;false;false;63;95;191;;; -176298;1;0;false;false;;;;;; -176299;6;0;false;false;63;95;191;;; -176305;3;0;false;false;;;;;; -176308;1;0;false;false;63;95;191;;; -176309;1;0;false;false;;;;;; -176310;3;0;false;false;127;127;159;;; -176313;3;0;false;false;;;;;; -176316;1;0;false;false;63;95;191;;; -176317;3;0;false;false;;;;;; -176320;1;0;false;false;63;95;191;;; -176321;1;0;false;false;;;;;; -176322;7;1;false;false;127;159;191;;; -176329;5;0;false;false;63;95;191;;; -176334;1;0;false;false;;;;;; -176335;5;0;false;false;63;95;191;;; -176340;1;0;false;false;;;;;; -176341;5;0;false;false;63;95;191;;; -176346;3;0;false;false;;;;;; -176349;2;0;false;false;63;95;191;;; -176351;2;0;false;false;;;;;; -176353;4;1;false;false;127;0;85;;; -176357;1;0;false;false;;;;;; -176358;17;0;false;false;0;0;0;;; -176375;1;0;false;false;;;;;; -176376;6;0;false;false;0;0;0;;; -176382;1;0;false;false;;;;;; -176383;1;0;false;false;0;0;0;;; -176384;3;0;false;false;;;;;; -176387;33;0;false;false;63;127;95;;; -176420;1;0;false;false;;;;;; -176421;2;1;false;false;127;0;85;;; -176423;1;0;false;false;;;;;; -176424;13;0;false;false;0;0;0;;; -176437;1;0;false;false;;;;;; -176438;2;0;false;false;0;0;0;;; -176440;1;0;false;false;;;;;; -176441;2;0;false;false;0;0;0;;; -176443;1;0;false;false;;;;;; -176444;6;1;false;false;127;0;85;;; -176450;1;0;false;false;0;0;0;;; -176451;3;0;false;false;;;;;; -176454;3;1;false;false;127;0;85;;; -176457;1;0;false;false;;;;;; -176458;9;0;false;false;0;0;0;;; -176467;1;0;false;false;;;;;; -176468;1;0;false;false;0;0;0;;; -176469;1;0;false;false;;;;;; -176470;11;0;false;false;0;0;0;;; -176481;1;0;false;false;;;;;; -176482;8;0;false;false;0;0;0;;; -176490;1;0;false;false;;;;;; -176491;1;0;false;false;0;0;0;;; -176492;1;0;false;false;;;;;; -176493;9;0;false;false;0;0;0;;; -176502;1;0;false;false;;;;;; -176503;1;0;false;false;0;0;0;;; -176504;1;0;false;false;;;;;; -176505;21;0;false;false;0;0;0;;; -176526;1;0;false;false;;;;;; -176527;1;0;false;false;0;0;0;;; -176528;1;0;false;false;;;;;; -176529;12;0;false;false;0;0;0;;; -176541;3;0;false;false;;;;;; -176544;3;1;false;false;127;0;85;;; -176547;1;0;false;false;;;;;; -176548;17;0;false;false;0;0;0;;; -176565;1;0;false;false;;;;;; -176566;1;0;false;false;0;0;0;;; -176567;1;0;false;false;;;;;; -176568;10;0;false;false;0;0;0;;; -176578;1;0;false;false;;;;;; -176579;1;0;false;false;0;0;0;;; -176580;1;0;false;false;;;;;; -176581;9;0;false;false;0;0;0;;; -176590;1;0;false;false;;;;;; -176591;1;0;false;false;0;0;0;;; -176592;1;0;false;false;;;;;; -176593;11;0;false;false;0;0;0;;; -176604;3;0;false;false;;;;;; -176607;3;1;false;false;127;0;85;;; -176610;1;0;false;false;;;;;; -176611;13;0;false;false;0;0;0;;; -176624;1;0;false;false;;;;;; -176625;1;0;false;false;0;0;0;;; -176626;1;0;false;false;;;;;; -176627;8;0;false;false;0;0;0;;; -176635;1;0;false;false;;;;;; -176636;1;0;false;false;0;0;0;;; -176637;1;0;false;false;;;;;; -176638;10;0;false;false;0;0;0;;; -176648;1;0;false;false;;;;;; -176649;1;0;false;false;0;0;0;;; -176650;1;0;false;false;;;;;; -176651;21;0;false;false;0;0;0;;; -176672;3;0;false;false;;;;;; -176675;3;1;false;false;127;0;85;;; -176678;1;0;false;false;;;;;; -176679;6;0;false;false;0;0;0;;; -176685;1;0;false;false;;;;;; -176686;1;0;false;false;0;0;0;;; -176687;1;0;false;false;;;;;; -176688;17;0;false;false;0;0;0;;; -176705;1;0;false;false;;;;;; -176706;1;0;false;false;0;0;0;;; -176707;1;0;false;false;;;;;; -176708;13;0;false;false;0;0;0;;; -176721;1;0;false;false;;;;;; -176722;1;0;false;false;0;0;0;;; -176723;1;0;false;false;;;;;; -176724;10;0;false;false;0;0;0;;; -176734;1;0;false;false;;;;;; -176735;63;0;false;false;63;127;95;;; -176798;1;0;false;false;;;;;; -176799;3;1;false;false;127;0;85;;; -176802;1;0;false;false;;;;;; -176803;12;0;false;false;0;0;0;;; -176815;1;0;false;false;;;;;; -176816;1;0;false;false;0;0;0;;; -176817;1;0;false;false;;;;;; -176818;7;0;false;false;0;0;0;;; -176825;1;0;false;false;;;;;; -176826;1;0;false;false;0;0;0;;; -176827;1;0;false;false;;;;;; -176828;12;0;false;false;0;0;0;;; -176840;1;0;false;false;;;;;; -176841;1;0;false;false;0;0;0;;; -176842;1;0;false;false;;;;;; -176843;7;0;false;false;0;0;0;;; -176850;3;0;false;false;;;;;; -176853;22;0;false;false;0;0;0;;; -176875;1;0;false;false;;;;;; -176876;10;0;false;false;0;0;0;;; -176886;1;0;false;false;;;;;; -176887;7;0;false;false;0;0;0;;; -176894;1;0;false;false;;;;;; -176895;14;0;false;false;0;0;0;;; -176909;2;0;false;false;;;;;; -176911;1;0;false;false;0;0;0;;; -176912;3;0;false;false;;;;;; -176915;3;0;false;false;63;95;191;;; -176918;3;0;false;false;;;;;; -176921;1;0;false;false;63;95;191;;; -176922;1;0;false;false;;;;;; -176923;12;0;false;false;63;95;191;;; -176935;1;0;false;false;;;;;; -176936;3;0;false;false;63;95;191;;; -176939;1;0;false;false;;;;;; -176940;6;0;false;false;63;95;191;;; -176946;1;0;false;false;;;;;; -176947;5;0;false;false;63;95;191;;; -176952;1;0;false;false;;;;;; -176953;7;0;false;false;63;95;191;;; -176960;1;0;false;false;;;;;; -176961;3;0;false;false;63;95;191;;; -176964;1;0;false;false;;;;;; -176965;5;0;false;false;63;95;191;;; -176970;1;0;false;false;;;;;; -176971;4;0;false;false;63;95;191;;; -176975;1;0;false;false;;;;;; -176976;2;0;false;false;63;95;191;;; -176978;1;0;false;false;;;;;; -176979;4;0;false;false;63;95;191;;; -176983;4;0;false;false;;;;;; -176987;1;0;false;false;63;95;191;;; -176988;1;0;false;false;;;;;; -176989;4;0;false;false;63;95;191;;; -176993;1;0;false;false;;;;;; -176994;5;0;false;false;63;95;191;;; -176999;3;0;false;false;;;;;; -177002;1;0;false;false;63;95;191;;; -177003;1;0;false;false;;;;;; -177004;3;0;false;false;127;127;159;;; -177007;3;0;false;false;;;;;; -177010;1;0;false;false;63;95;191;;; -177011;3;0;false;false;;;;;; -177014;1;0;false;false;63;95;191;;; -177015;1;0;false;false;;;;;; -177016;7;1;false;false;127;159;191;;; -177023;5;0;false;false;63;95;191;;; -177028;1;0;false;false;;;;;; -177029;6;0;false;false;63;95;191;;; -177035;1;0;false;false;;;;;; -177036;5;0;false;false;63;95;191;;; -177041;3;0;false;false;;;;;; -177044;2;0;false;false;63;95;191;;; -177046;2;0;false;false;;;;;; -177048;4;1;false;false;127;0;85;;; -177052;1;0;false;false;;;;;; -177053;18;0;false;false;0;0;0;;; -177071;1;0;false;false;;;;;; -177072;6;0;false;false;0;0;0;;; -177078;1;0;false;false;;;;;; -177079;1;0;false;false;0;0;0;;; -177080;3;0;false;false;;;;;; -177083;3;1;false;false;127;0;85;;; -177086;1;0;false;false;;;;;; -177087;9;0;false;false;0;0;0;;; -177096;1;0;false;false;;;;;; -177097;1;0;false;false;0;0;0;;; -177098;1;0;false;false;;;;;; -177099;17;0;false;false;0;0;0;;; -177116;3;0;false;false;;;;;; -177119;3;1;false;false;127;0;85;;; -177122;1;0;false;false;;;;;; -177123;8;0;false;false;0;0;0;;; -177131;1;0;false;false;;;;;; -177132;1;0;false;false;0;0;0;;; -177133;1;0;false;false;;;;;; -177134;16;0;false;false;0;0;0;;; -177150;6;0;false;false;;;;;; -177156;9;0;false;false;0;0;0;;; -177165;1;0;false;false;;;;;; -177166;10;0;false;false;0;0;0;;; -177176;1;0;false;false;;;;;; -177177;1;0;false;false;0;0;0;;; -177178;1;0;false;false;;;;;; -177179;16;0;false;false;0;0;0;;; -177195;3;0;false;false;;;;;; -177198;16;0;false;false;0;0;0;;; -177214;1;0;false;false;;;;;; -177215;1;0;false;false;0;0;0;;; -177216;1;0;false;false;;;;;; -177217;18;0;false;false;0;0;0;;; -177235;3;0;false;false;;;;;; -177238;15;0;false;false;0;0;0;;; -177253;1;0;false;false;;;;;; -177254;1;0;false;false;0;0;0;;; -177255;1;0;false;false;;;;;; -177256;17;0;false;false;0;0;0;;; -177273;3;0;false;false;;;;;; -177276;57;0;false;false;63;127;95;;; -177333;3;0;false;false;;;;;; -177336;2;1;false;false;127;0;85;;; -177338;1;0;false;false;;;;;; -177339;9;0;false;false;0;0;0;;; -177348;1;0;false;false;;;;;; -177349;2;0;false;false;0;0;0;;; -177351;1;0;false;false;;;;;; -177352;16;0;false;false;0;0;0;;; -177368;1;0;false;false;;;;;; -177369;1;0;false;false;0;0;0;;; -177370;4;0;false;false;;;;;; -177374;2;1;false;false;127;0;85;;; -177376;1;0;false;false;;;;;; -177377;12;0;false;false;0;0;0;;; -177389;1;0;false;false;;;;;; -177390;1;0;false;false;0;0;0;;; -177391;1;0;false;false;;;;;; -177392;2;0;false;false;0;0;0;;; -177394;1;0;false;false;;;;;; -177395;1;0;false;false;0;0;0;;; -177396;5;0;false;false;;;;;; -177401;3;1;false;false;127;0;85;;; -177404;1;0;false;false;;;;;; -177405;1;0;false;false;0;0;0;;; -177406;1;0;false;false;;;;;; -177407;1;0;false;false;0;0;0;;; -177408;1;0;false;false;;;;;; -177409;9;0;false;false;0;0;0;;; -177418;1;0;false;false;;;;;; -177419;1;0;false;false;0;0;0;;; -177420;1;0;false;false;;;;;; -177421;15;0;false;false;0;0;0;;; -177436;1;0;false;false;;;;;; -177437;1;0;false;false;0;0;0;;; -177438;1;0;false;false;;;;;; -177439;8;0;false;false;0;0;0;;; -177447;1;0;false;false;;;;;; -177448;1;0;false;false;0;0;0;;; -177449;1;0;false;false;;;;;; -177450;17;0;false;false;0;0;0;;; -177467;1;0;false;false;;;;;; -177468;12;0;false;false;0;0;0;;; -177480;6;0;false;false;;;;;; -177486;9;0;false;false;0;0;0;;; -177495;1;0;false;false;;;;;; -177496;2;0;false;false;0;0;0;;; -177498;1;0;false;false;;;;;; -177499;12;0;false;false;0;0;0;;; -177511;1;0;false;false;;;;;; -177512;10;0;false;false;0;0;0;;; -177522;1;0;false;false;;;;;; -177523;5;1;false;false;127;0;85;;; -177528;2;0;false;false;0;0;0;;; -177530;4;0;false;false;;;;;; -177534;1;0;false;false;0;0;0;;; -177535;3;0;false;false;;;;;; -177538;1;0;false;false;0;0;0;;; -177539;3;0;false;false;;;;;; -177542;2;1;false;false;127;0;85;;; -177544;1;0;false;false;;;;;; -177545;10;0;false;false;0;0;0;;; -177555;1;0;false;false;;;;;; -177556;2;0;false;false;0;0;0;;; -177558;1;0;false;false;;;;;; -177559;17;0;false;false;0;0;0;;; -177576;1;0;false;false;;;;;; -177577;1;0;false;false;0;0;0;;; -177578;4;0;false;false;;;;;; -177582;2;1;false;false;127;0;85;;; -177584;1;0;false;false;;;;;; -177585;13;0;false;false;0;0;0;;; -177598;1;0;false;false;;;;;; -177599;1;0;false;false;0;0;0;;; -177600;1;0;false;false;;;;;; -177601;2;0;false;false;0;0;0;;; -177603;1;0;false;false;;;;;; -177604;1;0;false;false;0;0;0;;; -177605;5;0;false;false;;;;;; -177610;3;1;false;false;127;0;85;;; -177613;1;0;false;false;;;;;; -177614;1;0;false;false;0;0;0;;; -177615;1;0;false;false;;;;;; -177616;1;0;false;false;0;0;0;;; -177617;1;0;false;false;;;;;; -177618;10;0;false;false;0;0;0;;; -177628;1;0;false;false;;;;;; -177629;1;0;false;false;0;0;0;;; -177630;1;0;false;false;;;;;; -177631;16;0;false;false;0;0;0;;; -177647;1;0;false;false;;;;;; -177648;1;0;false;false;0;0;0;;; -177649;1;0;false;false;;;;;; -177650;9;0;false;false;0;0;0;;; -177659;1;0;false;false;;;;;; -177660;1;0;false;false;0;0;0;;; -177661;1;0;false;false;;;;;; -177662;18;0;false;false;0;0;0;;; -177680;1;0;false;false;;;;;; -177681;13;0;false;false;0;0;0;;; -177694;6;0;false;false;;;;;; -177700;9;0;false;false;0;0;0;;; -177709;1;0;false;false;;;;;; -177710;2;0;false;false;0;0;0;;; -177712;1;0;false;false;;;;;; -177713;9;0;false;false;0;0;0;;; -177722;1;0;false;false;;;;;; -177723;13;0;false;false;0;0;0;;; -177736;1;0;false;false;;;;;; -177737;5;1;false;false;127;0;85;;; -177742;2;0;false;false;0;0;0;;; -177744;4;0;false;false;;;;;; -177748;1;0;false;false;0;0;0;;; -177749;3;0;false;false;;;;;; -177752;1;0;false;false;0;0;0;;; -177753;3;0;false;false;;;;;; -177756;2;1;false;false;127;0;85;;; -177758;1;0;false;false;;;;;; -177759;10;0;false;false;0;0;0;;; -177769;1;0;false;false;;;;;; -177770;1;0;false;false;0;0;0;;; -177771;4;0;false;false;;;;;; -177775;2;1;false;false;127;0;85;;; -177777;1;0;false;false;;;;;; -177778;9;0;false;false;0;0;0;;; -177787;1;0;false;false;;;;;; -177788;2;0;false;false;0;0;0;;; -177790;1;0;false;false;;;;;; -177791;16;0;false;false;0;0;0;;; -177807;1;0;false;false;;;;;; -177808;1;0;false;false;0;0;0;;; -177809;6;0;false;false;;;;;; -177815;25;0;false;false;0;0;0;;; -177840;4;0;false;false;;;;;; -177844;1;0;false;false;0;0;0;;; -177845;3;0;false;false;;;;;; -177848;1;0;false;false;0;0;0;;; -177849;3;0;false;false;;;;;; -177852;4;1;false;false;127;0;85;;; -177856;3;0;false;false;;;;;; -177859;2;1;false;false;127;0;85;;; -177861;1;0;false;false;;;;;; -177862;17;0;false;false;0;0;0;;; -177879;1;0;false;false;;;;;; -177880;1;0;false;false;0;0;0;;; -177881;1;0;false;false;;;;;; -177882;10;0;false;false;0;0;0;;; -177892;1;0;false;false;;;;;; -177893;1;0;false;false;0;0;0;;; -177894;4;0;false;false;;;;;; -177898;3;1;false;false;127;0;85;;; -177901;1;0;false;false;;;;;; -177902;9;0;false;false;0;0;0;;; -177911;1;0;false;false;;;;;; -177912;1;0;false;false;0;0;0;;; -177913;1;0;false;false;;;;;; -177914;23;0;false;false;0;0;0;;; -177937;4;0;false;false;;;;;; -177941;3;1;false;false;127;0;85;;; -177944;1;0;false;false;;;;;; -177945;14;0;false;false;0;0;0;;; -177959;1;0;false;false;;;;;; -177960;1;0;false;false;0;0;0;;; -177961;1;0;false;false;;;;;; -177962;8;0;false;false;0;0;0;;; -177970;1;0;false;false;;;;;; -177971;1;0;false;false;0;0;0;;; -177972;1;0;false;false;;;;;; -177973;9;0;false;false;0;0;0;;; -177982;1;0;false;false;;;;;; -177983;1;0;false;false;0;0;0;;; -177984;1;0;false;false;;;;;; -177985;11;0;false;false;0;0;0;;; -177996;4;0;false;false;;;;;; -178000;3;1;false;false;127;0;85;;; -178003;1;0;false;false;;;;;; -178004;12;0;false;false;0;0;0;;; -178016;1;0;false;false;;;;;; -178017;1;0;false;false;0;0;0;;; -178018;1;0;false;false;;;;;; -178019;35;0;false;false;0;0;0;;; -178054;1;0;false;false;;;;;; -178055;1;0;false;false;0;0;0;;; -178056;1;0;false;false;;;;;; -178057;10;0;false;false;0;0;0;;; -178067;1;0;false;false;;;;;; -178068;12;0;false;false;0;0;0;;; -178080;8;0;false;false;;;;;; -178088;14;0;false;false;0;0;0;;; -178102;1;0;false;false;;;;;; -178103;1;0;false;false;0;0;0;;; -178104;1;0;false;false;;;;;; -178105;24;0;false;false;0;0;0;;; -178129;1;0;false;false;;;;;; -178130;11;0;false;false;0;0;0;;; -178141;4;0;false;false;;;;;; -178145;12;0;false;false;0;0;0;;; -178157;1;0;false;false;;;;;; -178158;1;0;false;false;0;0;0;;; -178159;1;0;false;false;;;;;; -178160;22;0;false;false;0;0;0;;; -178182;1;0;false;false;;;;;; -178183;9;0;false;false;0;0;0;;; -178192;1;0;false;false;;;;;; -178193;1;0;false;false;0;0;0;;; -178194;1;0;false;false;;;;;; -178195;16;0;false;false;0;0;0;;; -178211;4;0;false;false;;;;;; -178215;35;0;false;false;0;0;0;;; -178250;1;0;false;false;;;;;; -178251;14;0;false;false;0;0;0;;; -178265;3;0;false;false;;;;;; -178268;1;0;false;false;0;0;0;;; -178269;3;0;false;false;;;;;; -178272;16;0;false;false;0;0;0;;; -178288;3;0;false;false;;;;;; -178291;23;0;false;false;0;0;0;;; -178314;3;0;false;false;;;;;; -178317;22;0;false;false;0;0;0;;; -178339;4;0;false;false;;;;;; -178343;2;1;false;false;127;0;85;;; -178345;1;0;false;false;;;;;; -178346;10;0;false;false;0;0;0;;; -178356;1;0;false;false;;;;;; -178357;2;0;false;false;0;0;0;;; -178359;1;0;false;false;;;;;; -178360;17;0;false;false;0;0;0;;; -178377;1;0;false;false;;;;;; -178378;1;0;false;false;0;0;0;;; -178379;4;0;false;false;;;;;; -178383;20;0;false;false;0;0;0;;; -178403;3;0;false;false;;;;;; -178406;1;0;false;false;0;0;0;;; -178407;2;0;false;false;;;;;; -178409;1;0;false;false;0;0;0;;; -178410;2;0;false;false;;;;;; -178412;3;0;false;false;63;95;191;;; -178415;3;0;false;false;;;;;; -178418;1;0;false;false;63;95;191;;; -178419;1;0;false;false;;;;;; -178420;7;0;false;false;63;95;191;;; -178427;1;0;false;false;;;;;; -178428;3;0;false;false;63;95;191;;; -178431;1;0;false;false;;;;;; -178432;5;0;false;false;63;95;191;;; -178437;1;0;false;false;;;;;; -178438;8;0;false;false;63;95;191;;; -178446;1;0;false;false;;;;;; -178447;3;0;false;false;63;95;191;;; -178450;1;0;false;false;;;;;; -178451;9;0;false;false;63;95;191;;; -178460;1;0;false;false;;;;;; -178461;3;0;false;false;63;95;191;;; -178464;1;0;false;false;;;;;; -178465;3;0;false;false;63;95;191;;; -178468;1;0;false;false;;;;;; -178469;6;0;false;false;63;95;191;;; -178475;1;0;false;false;;;;;; -178476;4;0;false;false;63;95;191;;; -178480;1;0;false;false;;;;;; -178481;2;0;false;false;63;95;191;;; -178483;1;0;false;false;;;;;; -178484;7;0;false;false;63;95;191;;; -178491;4;0;false;false;;;;;; -178495;1;0;false;false;63;95;191;;; -178496;1;0;false;false;;;;;; -178497;3;0;false;false;63;95;191;;; -178500;1;0;false;false;;;;;; -178501;7;0;false;false;63;95;191;;; -178508;1;0;false;false;;;;;; -178509;7;0;false;false;63;95;191;;; -178516;3;0;false;false;;;;;; -178519;1;0;false;false;63;95;191;;; -178520;1;0;false;false;;;;;; -178521;3;0;false;false;127;127;159;;; -178524;3;0;false;false;;;;;; -178527;2;0;false;false;63;95;191;;; -178529;2;0;false;false;;;;;; -178531;4;1;false;false;127;0;85;;; -178535;1;0;false;false;;;;;; -178536;34;0;false;false;0;0;0;;; -178570;1;0;false;false;;;;;; -178571;6;0;false;false;0;0;0;;; -178577;1;0;false;false;;;;;; -178578;1;0;false;false;0;0;0;;; -178579;3;0;false;false;;;;;; -178582;42;0;false;false;0;0;0;;; -178624;5;0;false;false;;;;;; -178629;27;0;false;false;0;0;0;;; -178656;5;0;false;false;;;;;; -178661;31;0;false;false;0;0;0;;; -178692;4;0;false;false;;;;;; -178696;27;0;false;false;0;0;0;;; -178723;4;0;false;false;;;;;; -178727;32;0;false;false;0;0;0;;; -178759;3;0;false;false;;;;;; -178762;16;0;false;false;0;0;0;;; -178778;3;0;false;false;;;;;; -178781;68;0;false;false;63;127;95;;; -178849;1;0;false;false;;;;;; -178850;52;0;false;false;63;127;95;;; -178902;1;0;false;false;;;;;; -178903;5;0;false;false;63;127;95;;; -178908;1;0;false;false;;;;;; -178909;65;0;false;false;63;127;95;;; -178974;1;0;false;false;;;;;; -178975;68;0;false;false;63;127;95;;; -179043;1;0;false;false;;;;;; -179044;70;0;false;false;63;127;95;;; -179114;1;0;false;false;;;;;; -179115;39;0;false;false;63;127;95;;; -179154;1;0;false;false;;;;;; -179155;18;0;false;false;63;127;95;;; -179173;1;0;false;false;;;;;; -179174;16;0;false;false;0;0;0;;; -179190;4;0;false;false;;;;;; -179194;20;0;false;false;0;0;0;;; -179214;5;0;false;false;;;;;; -179219;31;0;false;false;0;0;0;;; -179250;5;0;false;false;;;;;; -179255;28;0;false;false;0;0;0;;; -179283;7;0;false;false;;;;;; -179290;2;1;false;false;127;0;85;;; -179292;1;0;false;false;;;;;; -179293;31;0;false;false;0;0;0;;; -179324;1;0;false;false;;;;;; -179325;1;0;false;false;0;0;0;;; -179326;1;0;false;false;;;;;; -179327;2;0;false;false;0;0;0;;; -179329;1;0;false;false;;;;;; -179330;1;0;false;false;0;0;0;;; -179331;4;0;false;false;;;;;; -179335;56;0;false;false;63;127;95;;; -179391;2;0;false;false;;;;;; -179393;18;0;false;false;63;127;95;;; -179411;2;0;false;false;;;;;; -179413;65;0;false;false;63;127;95;;; -179478;2;0;false;false;;;;;; -179480;18;0;false;false;63;127;95;;; -179498;2;0;false;false;;;;;; -179500;23;0;false;false;0;0;0;;; -179523;3;0;false;false;;;;;; -179526;1;0;false;false;0;0;0;;; -179527;3;0;false;false;;;;;; -179530;2;1;false;false;127;0;85;;; -179532;1;0;false;false;;;;;; -179533;31;0;false;false;0;0;0;;; -179564;1;0;false;false;;;;;; -179565;1;0;false;false;0;0;0;;; -179566;1;0;false;false;;;;;; -179567;2;0;false;false;0;0;0;;; -179569;1;0;false;false;;;;;; -179570;1;0;false;false;0;0;0;;; -179571;4;0;false;false;;;;;; -179575;19;0;false;false;63;127;95;;; -179594;2;0;false;false;;;;;; -179596;22;0;false;false;0;0;0;;; -179618;3;0;false;false;;;;;; -179621;1;0;false;false;0;0;0;;; -179622;3;0;false;false;;;;;; -179625;71;0;false;false;63;127;95;;; -179696;1;0;false;false;;;;;; -179697;67;0;false;false;63;127;95;;; -179764;1;0;false;false;;;;;; -179765;2;1;false;false;127;0;85;;; -179767;1;0;false;false;;;;;; -179768;27;0;false;false;0;0;0;;; -179795;1;0;false;false;;;;;; -179796;2;0;false;false;0;0;0;;; -179798;1;0;false;false;;;;;; -179799;1;0;false;false;0;0;0;;; -179800;1;0;false;false;;;;;; -179801;2;0;false;false;0;0;0;;; -179803;1;0;false;false;;;;;; -179804;30;0;false;false;0;0;0;;; -179834;1;0;false;false;;;;;; -179835;2;0;false;false;0;0;0;;; -179837;1;0;false;false;;;;;; -179838;2;0;false;false;0;0;0;;; -179840;1;0;false;false;;;;;; -179841;1;0;false;false;0;0;0;;; -179842;4;0;false;false;;;;;; -179846;3;1;false;false;127;0;85;;; -179849;1;0;false;false;;;;;; -179850;9;0;false;false;0;0;0;;; -179859;1;0;false;false;;;;;; -179860;1;0;false;false;0;0;0;;; -179861;1;0;false;false;;;;;; -179862;45;0;false;false;0;0;0;;; -179907;4;0;false;false;;;;;; -179911;3;1;false;false;127;0;85;;; -179914;1;0;false;false;;;;;; -179915;6;0;false;false;0;0;0;;; -179921;1;0;false;false;;;;;; -179922;1;0;false;false;0;0;0;;; -179923;1;0;false;false;;;;;; -179924;9;0;false;false;0;0;0;;; -179933;1;0;false;false;;;;;; -179934;1;0;false;false;0;0;0;;; -179935;1;0;false;false;;;;;; -179936;10;0;false;false;0;0;0;;; -179946;1;0;false;false;;;;;; -179947;1;0;false;false;0;0;0;;; -179948;1;0;false;false;;;;;; -179949;20;0;false;false;0;0;0;;; -179969;1;0;false;false;;;;;; -179970;1;0;false;false;0;0;0;;; -179971;1;0;false;false;;;;;; -179972;10;0;false;false;0;0;0;;; -179982;6;0;false;false;;;;;; -179988;2;1;false;false;127;0;85;;; -179990;1;0;false;false;;;;;; -179991;15;0;false;false;0;0;0;;; -180006;1;0;false;false;;;;;; -180007;1;0;false;false;0;0;0;;; -180008;5;0;false;false;;;;;; -180013;2;0;false;false;0;0;0;;; -180015;1;0;false;false;;;;;; -180016;2;0;false;false;0;0;0;;; -180018;1;0;false;false;;;;;; -180019;1;0;false;false;0;0;0;;; -180020;1;0;false;false;;;;;; -180021;8;0;false;false;0;0;0;;; -180029;5;0;false;false;;;;;; -180034;5;0;false;false;0;0;0;;; -180039;1;0;false;false;;;;;; -180040;5;0;false;false;0;0;0;;; -180045;1;0;false;false;;;;;; -180046;1;0;false;false;0;0;0;;; -180047;1;0;false;false;;;;;; -180048;11;0;false;false;0;0;0;;; -180059;5;0;false;false;;;;;; -180064;7;1;false;false;127;0;85;;; -180071;1;0;false;false;;;;;; -180072;12;0;false;false;0;0;0;;; -180084;1;0;false;false;;;;;; -180085;1;0;false;false;0;0;0;;; -180086;1;0;false;false;;;;;; -180087;5;1;false;false;127;0;85;;; -180092;1;0;false;false;0;0;0;;; -180093;10;0;false;false;;;;;; -180103;2;1;false;false;127;0;85;;; -180105;1;0;false;false;;;;;; -180106;6;0;false;false;0;0;0;;; -180112;1;0;false;false;;;;;; -180113;2;0;false;false;0;0;0;;; -180115;1;0;false;false;;;;;; -180116;4;1;false;false;127;0;85;;; -180120;1;0;false;false;0;0;0;;; -180121;1;0;false;false;;;;;; -180122;1;0;false;false;0;0;0;;; -180123;6;0;false;false;;;;;; -180129;12;0;false;false;0;0;0;;; -180141;1;0;false;false;;;;;; -180142;1;0;false;false;0;0;0;;; -180143;1;0;false;false;;;;;; -180144;19;0;false;false;0;0;0;;; -180163;6;0;false;false;;;;;; -180169;17;0;false;false;0;0;0;;; -180186;5;1;false;false;127;0;85;;; -180191;2;0;false;false;0;0;0;;; -180193;5;0;false;false;;;;;; -180198;1;0;false;false;0;0;0;;; -180199;5;0;false;false;;;;;; -180204;16;0;false;false;0;0;0;;; -180220;1;0;false;false;;;;;; -180221;10;0;false;false;0;0;0;;; -180231;1;0;false;false;;;;;; -180232;7;0;false;false;0;0;0;;; -180239;1;0;false;false;;;;;; -180240;12;0;false;false;0;0;0;;; -180252;5;0;false;false;;;;;; -180257;2;1;false;false;127;0;85;;; -180259;1;0;false;false;;;;;; -180260;6;0;false;false;0;0;0;;; -180266;1;0;false;false;;;;;; -180267;2;0;false;false;0;0;0;;; -180269;1;0;false;false;;;;;; -180270;4;1;false;false;127;0;85;;; -180274;1;0;false;false;0;0;0;;; -180275;1;0;false;false;;;;;; -180276;1;0;false;false;0;0;0;;; -180277;6;0;false;false;;;;;; -180283;31;0;false;false;0;0;0;;; -180314;5;0;false;false;;;;;; -180319;1;0;false;false;0;0;0;;; -180320;5;0;false;false;;;;;; -180325;13;0;false;false;0;0;0;;; -180338;4;0;false;false;;;;;; -180342;1;0;false;false;0;0;0;;; -180343;1;0;false;false;;;;;; -180344;4;1;false;false;127;0;85;;; -180348;1;0;false;false;;;;;; -180349;1;0;false;false;0;0;0;;; -180350;5;0;false;false;;;;;; -180355;9;0;false;false;0;0;0;;; -180364;1;0;false;false;;;;;; -180365;7;0;false;false;0;0;0;;; -180372;1;0;false;false;;;;;; -180373;22;0;false;false;0;0;0;;; -180395;1;0;false;false;;;;;; -180396;11;0;false;false;0;0;0;;; -180407;1;0;false;false;;;;;; -180408;5;1;false;false;127;0;85;;; -180413;2;0;false;false;0;0;0;;; -180415;5;0;false;false;;;;;; -180420;9;0;false;false;0;0;0;;; -180429;4;0;false;false;;;;;; -180433;1;0;false;false;0;0;0;;; -180434;3;0;false;false;;;;;; -180437;1;0;false;false;0;0;0;;; -180438;2;0;false;false;;;;;; -180440;1;0;false;false;0;0;0;;; -180441;2;0;false;false;;;;;; -180443;3;0;false;false;63;95;191;;; -180446;3;0;false;false;;;;;; -180449;1;0;false;false;63;95;191;;; -180450;1;0;false;false;;;;;; -180451;7;0;false;false;63;95;191;;; -180458;1;0;false;false;;;;;; -180459;3;0;false;false;63;95;191;;; -180462;1;0;false;false;;;;;; -180463;6;0;false;false;63;95;191;;; -180469;1;0;false;false;;;;;; -180470;2;0;false;false;63;95;191;;; -180472;1;0;false;false;;;;;; -180473;7;0;false;false;63;95;191;;; -180480;1;0;false;false;;;;;; -180481;1;0;false;false;63;95;191;;; -180482;1;0;false;false;;;;;; -180483;7;0;false;false;63;95;191;;; -180490;1;0;false;false;;;;;; -180491;7;0;false;false;63;95;191;;; -180498;1;0;false;false;;;;;; -180499;7;0;false;false;63;95;191;;; -180506;3;0;false;false;;;;;; -180509;1;0;false;false;63;95;191;;; -180510;1;0;false;false;;;;;; -180511;3;0;false;false;127;127;159;;; -180514;3;0;false;false;;;;;; -180517;1;0;false;false;63;95;191;;; -180518;3;0;false;false;;;;;; -180521;1;0;false;false;63;95;191;;; -180522;1;0;false;false;;;;;; -180523;7;1;false;false;127;159;191;;; -180530;11;0;false;false;63;95;191;;; -180541;1;0;false;false;;;;;; -180542;3;0;false;false;63;95;191;;; -180545;1;0;false;false;;;;;; -180546;5;0;false;false;63;95;191;;; -180551;1;0;false;false;;;;;; -180552;6;0;false;false;63;95;191;;; -180558;1;0;false;false;;;;;; -180559;2;0;false;false;63;95;191;;; -180561;1;0;false;false;;;;;; -180562;3;0;false;false;63;95;191;;; -180565;1;0;false;false;;;;;; -180566;6;0;false;false;63;95;191;;; -180572;3;0;false;false;;;;;; -180575;1;0;false;false;63;95;191;;; -180576;1;0;false;false;;;;;; -180577;7;1;false;false;127;159;191;;; -180584;13;0;false;false;63;95;191;;; -180597;1;0;false;false;;;;;; -180598;4;0;false;false;63;95;191;;; -180602;1;0;false;false;;;;;; -180603;4;0;false;false;63;95;191;;; -180607;1;0;false;false;;;;;; -180608;2;0;false;false;63;95;191;;; -180610;1;0;false;false;;;;;; -180611;5;0;false;false;63;95;191;;; -180616;1;0;false;false;;;;;; -180617;2;0;false;false;63;95;191;;; -180619;1;0;false;false;;;;;; -180620;2;0;false;false;63;95;191;;; -180622;1;0;false;false;;;;;; -180623;8;0;false;false;63;95;191;;; -180631;1;0;false;false;;;;;; -180632;2;0;false;false;63;95;191;;; -180634;1;0;false;false;;;;;; -180635;5;0;false;false;63;95;191;;; -180640;1;0;false;false;;;;;; -180641;6;0;false;false;63;95;191;;; -180647;4;0;false;false;;;;;; -180651;1;0;false;false;63;95;191;;; -180652;1;0;false;false;;;;;; -180653;2;0;false;false;63;95;191;;; -180655;1;0;false;false;;;;;; -180656;2;0;false;false;63;95;191;;; -180658;1;0;false;false;;;;;; -180659;4;0;false;false;63;95;191;;; -180663;1;0;false;false;;;;;; -180664;4;0;false;false;63;95;191;;; -180668;1;0;false;false;;;;;; -180669;2;0;false;false;63;95;191;;; -180671;1;0;false;false;;;;;; -180672;8;0;false;false;63;95;191;;; -180680;3;0;false;false;;;;;; -180683;1;0;false;false;63;95;191;;; -180684;1;0;false;false;;;;;; -180685;7;1;false;false;127;159;191;;; -180692;22;0;false;false;63;95;191;;; -180714;1;0;false;false;;;;;; -180715;6;0;false;false;63;95;191;;; -180721;1;0;false;false;;;;;; -180722;2;0;false;false;63;95;191;;; -180724;1;0;false;false;;;;;; -180725;4;0;false;false;63;95;191;;; -180729;1;0;false;false;;;;;; -180730;4;0;false;false;63;95;191;;; -180734;1;0;false;false;;;;;; -180735;2;0;false;false;63;95;191;;; -180737;1;0;false;false;;;;;; -180738;5;0;false;false;63;95;191;;; -180743;1;0;false;false;;;;;; -180744;2;0;false;false;63;95;191;;; -180746;1;0;false;false;;;;;; -180747;2;0;false;false;63;95;191;;; -180749;1;0;false;false;;;;;; -180750;8;0;false;false;63;95;191;;; -180758;3;0;false;false;;;;;; -180761;1;0;false;false;63;95;191;;; -180762;1;0;false;false;;;;;; -180763;7;1;false;false;127;159;191;;; -180770;18;0;false;false;63;95;191;;; -180788;1;0;false;false;;;;;; -180789;6;0;false;false;63;95;191;;; -180795;1;0;false;false;;;;;; -180796;2;0;false;false;63;95;191;;; -180798;1;0;false;false;;;;;; -180799;4;0;false;false;63;95;191;;; -180803;1;0;false;false;;;;;; -180804;4;0;false;false;63;95;191;;; -180808;1;0;false;false;;;;;; -180809;2;0;false;false;63;95;191;;; -180811;1;0;false;false;;;;;; -180812;5;0;false;false;63;95;191;;; -180817;1;0;false;false;;;;;; -180818;2;0;false;false;63;95;191;;; -180820;1;0;false;false;;;;;; -180821;2;0;false;false;63;95;191;;; -180823;1;0;false;false;;;;;; -180824;8;0;false;false;63;95;191;;; -180832;3;0;false;false;;;;;; -180835;1;0;false;false;63;95;191;;; -180836;1;0;false;false;;;;;; -180837;7;1;false;false;127;159;191;;; -180844;22;0;false;false;63;95;191;;; -180866;1;0;false;false;;;;;; -180867;6;0;false;false;63;95;191;;; -180873;1;0;false;false;;;;;; -180874;2;0;false;false;63;95;191;;; -180876;1;0;false;false;;;;;; -180877;5;0;false;false;63;95;191;;; -180882;1;0;false;false;;;;;; -180883;4;0;false;false;63;95;191;;; -180887;1;0;false;false;;;;;; -180888;3;0;false;false;63;95;191;;; -180891;1;0;false;false;;;;;; -180892;5;0;false;false;63;95;191;;; -180897;1;0;false;false;;;;;; -180898;2;0;false;false;63;95;191;;; -180900;1;0;false;false;;;;;; -180901;2;0;false;false;63;95;191;;; -180903;1;0;false;false;;;;;; -180904;8;0;false;false;63;95;191;;; -180912;3;0;false;false;;;;;; -180915;1;0;false;false;63;95;191;;; -180916;1;0;false;false;;;;;; -180917;7;1;false;false;127;159;191;;; -180924;18;0;false;false;63;95;191;;; -180942;1;0;false;false;;;;;; -180943;6;0;false;false;63;95;191;;; -180949;1;0;false;false;;;;;; -180950;2;0;false;false;63;95;191;;; -180952;1;0;false;false;;;;;; -180953;3;0;false;false;63;95;191;;; -180956;1;0;false;false;;;;;; -180957;5;0;false;false;63;95;191;;; -180962;1;0;false;false;;;;;; -180963;4;0;false;false;63;95;191;;; -180967;1;0;false;false;;;;;; -180968;3;0;false;false;63;95;191;;; -180971;1;0;false;false;;;;;; -180972;5;0;false;false;63;95;191;;; -180977;1;0;false;false;;;;;; -180978;2;0;false;false;63;95;191;;; -180980;1;0;false;false;;;;;; -180981;2;0;false;false;63;95;191;;; -180983;1;0;false;false;;;;;; -180984;8;0;false;false;63;95;191;;; -180992;3;0;false;false;;;;;; -180995;2;0;false;false;63;95;191;;; -180997;2;0;false;false;;;;;; -180999;4;1;false;false;127;0;85;;; -181003;1;0;false;false;;;;;; -181004;36;0;false;false;0;0;0;;; -181040;1;0;false;false;;;;;; -181041;6;0;false;false;0;0;0;;; -181047;1;0;false;false;;;;;; -181048;1;0;false;false;0;0;0;;; -181049;3;0;false;false;;;;;; -181052;3;1;false;false;127;0;85;;; -181055;1;0;false;false;;;;;; -181056;10;0;false;false;0;0;0;;; -181066;4;0;false;false;;;;;; -181070;3;1;false;false;127;0;85;;; -181073;1;0;false;false;;;;;; -181074;12;0;false;false;0;0;0;;; -181086;3;0;false;false;;;;;; -181089;7;1;false;false;127;0;85;;; -181096;1;0;false;false;;;;;; -181097;17;0;false;false;0;0;0;;; -181114;1;0;false;false;;;;;; -181115;1;0;false;false;0;0;0;;; -181116;1;0;false;false;;;;;; -181117;22;0;false;false;0;0;0;;; -181139;1;0;false;false;;;;;; -181140;1;0;false;false;0;0;0;;; -181141;1;0;false;false;;;;;; -181142;1;0;false;false;0;0;0;;; -181143;1;0;false;false;;;;;; -181144;2;0;false;false;0;0;0;;; -181146;1;0;false;false;;;;;; -181147;18;0;false;false;0;0;0;;; -181165;1;0;false;false;;;;;; -181166;1;0;false;false;0;0;0;;; -181167;1;0;false;false;;;;;; -181168;2;0;false;false;0;0;0;;; -181170;8;0;false;false;;;;;; -181178;2;1;false;false;127;0;85;;; -181180;1;0;false;false;;;;;; -181181;23;0;false;false;0;0;0;;; -181204;1;0;false;false;;;;;; -181205;1;0;false;false;0;0;0;;; -181206;1;0;false;false;;;;;; -181207;2;0;false;false;0;0;0;;; -181209;1;0;false;false;;;;;; -181210;1;0;false;false;0;0;0;;; -181211;4;0;false;false;;;;;; -181215;11;0;false;false;0;0;0;;; -181226;1;0;false;false;;;;;; -181227;2;0;false;false;0;0;0;;; -181229;1;0;false;false;;;;;; -181230;23;0;false;false;0;0;0;;; -181253;4;0;false;false;;;;;; -181257;22;0;false;false;0;0;0;;; -181279;1;0;false;false;;;;;; -181280;2;0;false;false;0;0;0;;; -181282;1;0;false;false;;;;;; -181283;3;0;false;false;0;0;0;;; -181286;3;0;false;false;;;;;; -181289;1;0;false;false;0;0;0;;; -181290;3;0;false;false;;;;;; -181293;19;0;false;false;0;0;0;;; -181312;1;0;false;false;;;;;; -181313;1;0;false;false;0;0;0;;; -181314;1;0;false;false;;;;;; -181315;12;0;false;false;0;0;0;;; -181327;3;0;false;false;;;;;; -181330;26;0;false;false;0;0;0;;; -181356;1;0;false;false;;;;;; -181357;1;0;false;false;0;0;0;;; -181358;1;0;false;false;;;;;; -181359;19;0;false;false;0;0;0;;; -181378;3;0;false;false;;;;;; -181381;26;0;false;false;0;0;0;;; -181407;1;0;false;false;;;;;; -181408;1;0;false;false;0;0;0;;; -181409;1;0;false;false;;;;;; -181410;19;0;false;false;0;0;0;;; -181429;3;0;false;false;;;;;; -181432;30;0;false;false;0;0;0;;; -181462;1;0;false;false;;;;;; -181463;1;0;false;false;0;0;0;;; -181464;1;0;false;false;;;;;; -181465;23;0;false;false;0;0;0;;; -181488;3;0;false;false;;;;;; -181491;30;0;false;false;0;0;0;;; -181521;1;0;false;false;;;;;; -181522;1;0;false;false;0;0;0;;; -181523;1;0;false;false;;;;;; -181524;23;0;false;false;0;0;0;;; -181547;3;0;false;false;;;;;; -181550;9;0;false;false;0;0;0;;; -181559;1;0;false;false;;;;;; -181560;1;0;false;false;0;0;0;;; -181561;1;0;false;false;;;;;; -181562;37;0;false;false;0;0;0;;; -181599;3;0;false;false;;;;;; -181602;11;0;false;false;0;0;0;;; -181613;1;0;false;false;;;;;; -181614;1;0;false;false;0;0;0;;; -181615;1;0;false;false;;;;;; -181616;9;0;false;false;0;0;0;;; -181625;1;0;false;false;;;;;; -181626;1;0;false;false;0;0;0;;; -181627;1;0;false;false;;;;;; -181628;10;0;false;false;0;0;0;;; -181638;1;0;false;false;;;;;; -181639;1;0;false;false;0;0;0;;; -181640;1;0;false;false;;;;;; -181641;20;0;false;false;0;0;0;;; -181661;1;0;false;false;;;;;; -181662;1;0;false;false;0;0;0;;; -181663;1;0;false;false;;;;;; -181664;10;0;false;false;0;0;0;;; -181674;3;0;false;false;;;;;; -181677;2;1;false;false;127;0;85;;; -181679;1;0;false;false;;;;;; -181680;19;0;false;false;0;0;0;;; -181699;1;0;false;false;;;;;; -181700;1;0;false;false;0;0;0;;; -181701;4;0;false;false;;;;;; -181705;34;0;false;false;0;0;0;;; -181739;1;0;false;false;;;;;; -181740;19;0;false;false;0;0;0;;; -181759;1;0;false;false;;;;;; -181760;24;0;false;false;0;0;0;;; -181784;3;0;false;false;;;;;; -181787;1;0;false;false;0;0;0;;; -181788;3;0;false;false;;;;;; -181791;49;0;false;false;63;127;95;;; -181840;1;0;false;false;;;;;; -181841;2;1;false;false;127;0;85;;; -181843;1;0;false;false;;;;;; -181844;18;0;false;false;0;0;0;;; -181862;1;0;false;false;;;;;; -181863;2;0;false;false;0;0;0;;; -181865;1;0;false;false;;;;;; -181866;4;1;false;false;127;0;85;;; -181870;1;0;false;false;0;0;0;;; -181871;1;0;false;false;;;;;; -181872;1;0;false;false;0;0;0;;; -181873;4;0;false;false;;;;;; -181877;38;0;false;false;0;0;0;;; -181915;3;0;false;false;;;;;; -181918;1;0;false;false;0;0;0;;; -181919;6;0;false;false;;;;;; -181925;77;0;false;false;63;127;95;;; -182002;1;0;false;false;;;;;; -182003;70;0;false;false;63;127;95;;; -182073;1;0;false;false;;;;;; -182074;74;0;false;false;63;127;95;;; -182148;1;0;false;false;;;;;; -182149;17;0;false;false;63;127;95;;; -182166;1;0;false;false;;;;;; -182167;3;1;false;false;127;0;85;;; -182170;1;0;false;false;;;;;; -182171;12;0;false;false;0;0;0;;; -182183;1;0;false;false;;;;;; -182184;1;0;false;false;0;0;0;;; -182185;1;0;false;false;;;;;; -182186;22;0;false;false;0;0;0;;; -182208;1;0;false;false;;;;;; -182209;1;0;false;false;0;0;0;;; -182210;1;0;false;false;;;;;; -182211;22;0;false;false;0;0;0;;; -182233;1;0;false;false;;;;;; -182234;1;0;false;false;0;0;0;;; -182235;1;0;false;false;;;;;; -182236;19;0;false;false;0;0;0;;; -182255;3;0;false;false;;;;;; -182258;2;1;false;false;127;0;85;;; -182260;1;0;false;false;;;;;; -182261;12;0;false;false;0;0;0;;; -182273;1;0;false;false;;;;;; -182274;1;0;false;false;0;0;0;;; -182275;1;0;false;false;;;;;; -182276;13;0;false;false;0;0;0;;; -182289;1;0;false;false;;;;;; -182290;11;0;false;false;0;0;0;;; -182301;1;0;false;false;;;;;; -182302;1;0;false;false;0;0;0;;; -182303;1;0;false;false;;;;;; -182304;13;0;false;false;0;0;0;;; -182317;2;0;false;false;;;;;; -182319;1;0;false;false;0;0;0;;; -182320;2;0;false;false;;;;;; -182322;3;0;false;false;63;95;191;;; -182325;3;0;false;false;;;;;; -182328;1;0;false;false;63;95;191;;; -182329;1;0;false;false;;;;;; -182330;6;0;false;false;63;95;191;;; -182336;1;0;false;false;;;;;; -182337;4;0;false;false;63;95;191;;; -182341;1;0;false;false;;;;;; -182342;3;0;false;false;63;95;191;;; -182345;1;0;false;false;;;;;; -182346;6;0;false;false;63;95;191;;; -182352;1;0;false;false;;;;;; -182353;7;0;false;false;63;95;191;;; -182360;1;0;false;false;;;;;; -182361;2;0;false;false;63;95;191;;; -182363;1;0;false;false;;;;;; -182364;3;0;false;false;63;95;191;;; -182367;1;0;false;false;;;;;; -182368;16;0;false;false;63;95;191;;; -182384;1;0;false;false;;;;;; -182385;11;0;false;false;63;95;191;;; -182396;4;0;false;false;;;;;; -182400;1;0;false;false;63;95;191;;; -182401;1;0;false;false;;;;;; -182402;3;0;false;false;63;95;191;;; -182405;1;0;false;false;;;;;; -182406;3;0;false;false;63;95;191;;; -182409;1;0;false;false;;;;;; -182410;8;0;false;false;63;95;191;;; -182418;1;0;false;false;;;;;; -182419;6;0;false;false;63;95;191;;; -182425;1;0;false;false;;;;;; -182426;3;0;false;false;63;95;191;;; -182429;1;0;false;false;;;;;; -182430;5;0;false;false;63;95;191;;; -182435;1;0;false;false;;;;;; -182436;9;0;false;false;63;95;191;;; -182445;1;0;false;false;;;;;; -182446;9;0;false;false;63;95;191;;; -182455;1;0;false;false;;;;;; -182456;3;0;false;false;63;95;191;;; -182459;1;0;false;false;;;;;; -182460;6;0;false;false;63;95;191;;; -182466;1;0;false;false;;;;;; -182467;8;0;false;false;63;95;191;;; -182475;4;0;false;false;;;;;; -182479;1;0;false;false;63;95;191;;; -182480;1;0;false;false;;;;;; -182481;12;0;false;false;63;95;191;;; -182493;1;0;false;false;;;;;; -182494;3;0;false;false;63;95;191;;; -182497;1;0;false;false;;;;;; -182498;7;0;false;false;63;95;191;;; -182505;1;0;false;false;;;;;; -182506;5;0;false;false;63;95;191;;; -182511;1;0;false;false;;;;;; -182512;3;0;false;false;63;95;191;;; -182515;1;0;false;false;;;;;; -182516;6;0;false;false;63;95;191;;; -182522;1;0;false;false;;;;;; -182523;5;0;false;false;63;95;191;;; -182528;1;0;false;false;;;;;; -182529;7;0;false;false;63;95;191;;; -182536;1;0;false;false;;;;;; -182537;3;0;false;false;63;95;191;;; -182540;1;0;false;false;;;;;; -182541;7;0;false;false;63;95;191;;; -182548;3;0;false;false;;;;;; -182551;1;0;false;false;63;95;191;;; -182552;1;0;false;false;;;;;; -182553;3;0;false;false;127;127;159;;; -182556;3;0;false;false;;;;;; -182559;1;0;false;false;63;95;191;;; -182560;3;0;false;false;;;;;; -182563;1;0;false;false;63;95;191;;; -182564;1;0;false;false;;;;;; -182565;7;1;false;false;127;159;191;;; -182572;5;0;false;false;63;95;191;;; -182577;1;0;false;false;;;;;; -182578;4;0;false;false;63;95;191;;; -182582;1;0;false;false;;;;;; -182583;6;0;false;false;63;95;191;;; -182589;1;0;false;false;;;;;; -182590;6;0;false;false;63;95;191;;; -182596;4;0;false;false;;;;;; -182600;2;0;false;false;63;95;191;;; -182602;2;0;false;false;;;;;; -182604;4;1;false;false;127;0;85;;; -182608;1;0;false;false;;;;;; -182609;30;0;false;false;0;0;0;;; -182639;1;0;false;false;;;;;; -182640;6;0;false;false;0;0;0;;; -182646;1;0;false;false;;;;;; -182647;1;0;false;false;0;0;0;;; -182648;3;0;false;false;;;;;; -182651;8;0;false;false;0;0;0;;; -182659;2;0;false;false;;;;;; -182661;1;0;false;false;0;0;0;;; -182662;2;0;false;false;;;;;; -182664;3;0;false;false;63;95;191;;; -182667;3;0;false;false;;;;;; -182670;1;0;false;false;63;95;191;;; -182671;1;0;false;false;;;;;; -182672;6;0;false;false;63;95;191;;; -182678;1;0;false;false;;;;;; -182679;4;0;false;false;63;95;191;;; -182683;1;0;false;false;;;;;; -182684;1;0;false;false;63;95;191;;; -182685;1;0;false;false;;;;;; -182686;9;0;false;false;63;95;191;;; -182695;1;0;false;false;;;;;; -182696;3;0;false;false;63;95;191;;; -182699;1;0;false;false;;;;;; -182700;2;0;false;false;63;95;191;;; -182702;1;0;false;false;;;;;; -182703;8;0;false;false;63;95;191;;; -182711;3;0;false;false;;;;;; -182714;1;0;false;false;63;95;191;;; -182715;1;0;false;false;;;;;; -182716;5;0;false;false;63;95;191;;; -182721;1;0;false;false;;;;;; -182722;3;0;false;false;63;95;191;;; -182725;1;0;false;false;;;;;; -182726;4;0;false;false;63;95;191;;; -182730;1;0;false;false;;;;;; -182731;9;0;false;false;63;95;191;;; -182740;1;0;false;false;;;;;; -182741;2;0;false;false;63;95;191;;; -182743;1;0;false;false;;;;;; -182744;5;0;false;false;63;95;191;;; -182749;1;0;false;false;;;;;; -182750;4;0;false;false;63;95;191;;; -182754;1;0;false;false;;;;;; -182755;3;0;false;false;63;95;191;;; -182758;1;0;false;false;;;;;; -182759;6;0;false;false;63;95;191;;; -182765;1;0;false;false;;;;;; -182766;2;0;false;false;63;95;191;;; -182768;1;0;false;false;;;;;; -182769;2;0;false;false;63;95;191;;; -182771;1;0;false;false;;;;;; -182772;6;0;false;false;63;95;191;;; -182778;4;0;false;false;;;;;; -182782;1;0;false;false;63;95;191;;; -182783;1;0;false;false;;;;;; -182784;4;0;false;false;63;95;191;;; -182788;1;0;false;false;;;;;; -182789;4;0;false;false;63;95;191;;; -182793;1;0;false;false;;;;;; -182794;2;0;false;false;63;95;191;;; -182796;1;0;false;false;;;;;; -182797;2;0;false;false;63;95;191;;; -182799;1;0;false;false;;;;;; -182800;5;0;false;false;63;95;191;;; -182805;1;0;false;false;;;;;; -182806;4;0;false;false;63;95;191;;; -182810;1;0;false;false;;;;;; -182811;3;0;false;false;63;95;191;;; -182814;1;0;false;false;;;;;; -182815;3;0;false;false;63;95;191;;; -182818;1;0;false;false;127;127;159;;; -182819;8;0;false;false;63;95;191;;; -182827;1;0;false;false;;;;;; -182828;4;0;false;false;63;95;191;;; -182832;1;0;false;false;;;;;; -182833;1;0;false;false;63;95;191;;; -182834;4;0;false;false;;;;;; -182838;1;0;false;false;63;95;191;;; -182839;1;0;false;false;;;;;; -182840;4;0;false;false;63;95;191;;; -182844;1;0;false;false;;;;;; -182845;2;0;false;false;63;95;191;;; -182847;1;0;false;false;;;;;; -182848;8;0;false;false;63;95;191;;; -182856;1;0;false;false;;;;;; -182857;5;0;false;false;63;95;191;;; -182862;1;0;false;false;;;;;; -182863;4;0;false;false;63;95;191;;; -182867;1;0;false;false;;;;;; -182868;4;0;false;false;63;95;191;;; -182872;1;0;false;false;;;;;; -182873;2;0;false;false;63;95;191;;; -182875;1;0;false;false;;;;;; -182876;4;0;false;false;63;95;191;;; -182880;1;0;false;false;;;;;; -182881;2;0;false;false;63;95;191;;; -182883;1;0;false;false;;;;;; -182884;7;0;false;false;63;95;191;;; -182891;1;0;false;false;;;;;; -182892;3;0;false;false;63;95;191;;; -182895;1;0;false;false;;;;;; -182896;3;0;false;false;63;95;191;;; -182899;4;0;false;false;;;;;; -182903;1;0;false;false;63;95;191;;; -182904;1;0;false;false;;;;;; -182905;9;0;false;false;63;95;191;;; -182914;1;0;false;false;;;;;; -182915;3;0;false;false;63;95;191;;; -182918;1;0;false;false;;;;;; -182919;7;0;false;false;63;95;191;;; -182926;1;0;false;false;;;;;; -182927;3;0;false;false;63;95;191;;; -182930;1;0;false;false;;;;;; -182931;3;0;false;false;63;95;191;;; -182934;1;0;false;false;;;;;; -182935;3;0;false;false;63;95;191;;; -182938;1;0;false;false;;;;;; -182939;5;0;false;false;63;95;191;;; -182944;1;0;false;false;;;;;; -182945;8;0;false;false;63;95;191;;; -182953;3;0;false;false;;;;;; -182956;1;0;false;false;63;95;191;;; -182957;1;0;false;false;;;;;; -182958;3;0;false;false;127;127;159;;; -182961;3;0;false;false;;;;;; -182964;1;0;false;false;63;95;191;;; -182965;3;0;false;false;;;;;; -182968;1;0;false;false;63;95;191;;; -182969;1;0;false;false;;;;;; -182970;7;1;false;false;127;159;191;;; -182977;5;0;false;false;63;95;191;;; -182982;1;0;false;false;;;;;; -182983;3;0;false;false;63;95;191;;; -182986;1;0;false;false;;;;;; -182987;5;0;false;false;63;95;191;;; -182992;3;0;false;false;;;;;; -182995;2;0;false;false;63;95;191;;; -182997;2;0;false;false;;;;;; -182999;4;1;false;false;127;0;85;;; -183003;1;0;false;false;;;;;; -183004;20;0;false;false;0;0;0;;; -183024;1;0;false;false;;;;;; -183025;6;0;false;false;0;0;0;;; -183031;1;0;false;false;;;;;; -183032;1;0;false;false;0;0;0;;; -183033;3;0;false;false;;;;;; -183036;6;1;false;false;127;0;85;;; -183042;1;0;false;false;;;;;; -183043;14;0;false;false;0;0;0;;; -183057;1;0;false;false;;;;;; -183058;1;0;false;false;0;0;0;;; -183059;4;0;false;false;;;;;; -183063;4;1;false;false;127;0;85;;; -183067;1;0;false;false;;;;;; -183068;20;0;false;false;0;0;0;;; -183088;4;0;false;false;;;;;; -183092;4;1;false;false;127;0;85;;; -183096;1;0;false;false;;;;;; -183097;23;0;false;false;0;0;0;;; -183120;4;0;false;false;;;;;; -183124;4;1;false;false;127;0;85;;; -183128;1;0;false;false;;;;;; -183129;27;0;false;false;0;0;0;;; -183156;5;0;false;false;;;;;; -183161;10;0;false;false;0;0;0;;; -183171;1;0;false;false;;;;;; -183172;1;0;false;false;0;0;0;;; -183173;1;0;false;false;;;;;; -183174;4;1;false;false;127;0;85;;; -183178;1;0;false;false;0;0;0;;; -183179;5;0;false;false;;;;;; -183184;5;1;false;false;127;0;85;;; -183189;1;0;false;false;0;0;0;;; -183190;4;0;false;false;;;;;; -183194;4;1;false;false;127;0;85;;; -183198;1;0;false;false;;;;;; -183199;20;0;false;false;0;0;0;;; -183219;4;0;false;false;;;;;; -183223;4;1;false;false;127;0;85;;; -183227;1;0;false;false;;;;;; -183228;22;0;false;false;0;0;0;;; -183250;4;0;false;false;;;;;; -183254;4;1;false;false;127;0;85;;; -183258;1;0;false;false;;;;;; -183259;26;0;false;false;0;0;0;;; -183285;5;0;false;false;;;;;; -183290;2;1;false;false;127;0;85;;; -183292;1;0;false;false;;;;;; -183293;12;0;false;false;0;0;0;;; -183305;1;0;false;false;;;;;; -183306;1;0;false;false;0;0;0;;; -183307;1;0;false;false;;;;;; -183308;11;0;false;false;0;0;0;;; -183319;1;0;false;false;;;;;; -183320;2;0;false;false;0;0;0;;; -183322;1;0;false;false;;;;;; -183323;2;0;false;false;0;0;0;;; -183325;1;0;false;false;;;;;; -183326;1;0;false;false;0;0;0;;; -183327;6;0;false;false;;;;;; -183333;10;0;false;false;0;0;0;;; -183343;1;0;false;false;;;;;; -183344;1;0;false;false;0;0;0;;; -183345;1;0;false;false;;;;;; -183346;4;1;false;false;127;0;85;;; -183350;1;0;false;false;0;0;0;;; -183351;5;0;false;false;;;;;; -183356;1;0;false;false;0;0;0;;; -183357;1;0;false;false;;;;;; -183358;4;1;false;false;127;0;85;;; -183362;1;0;false;false;;;;;; -183363;1;0;false;false;0;0;0;;; -183364;6;0;false;false;;;;;; -183370;2;1;false;false;127;0;85;;; -183372;1;0;false;false;;;;;; -183373;10;0;false;false;0;0;0;;; -183383;1;0;false;false;;;;;; -183384;2;0;false;false;0;0;0;;; -183386;1;0;false;false;;;;;; -183387;16;0;false;false;0;0;0;;; -183403;1;0;false;false;;;;;; -183404;1;0;false;false;0;0;0;;; -183405;1;0;false;false;;;;;; -183406;18;0;false;false;0;0;0;;; -183424;1;0;false;false;;;;;; -183425;2;0;false;false;0;0;0;;; -183427;1;0;false;false;;;;;; -183428;2;0;false;false;0;0;0;;; -183430;1;0;false;false;;;;;; -183431;1;0;false;false;0;0;0;;; -183432;7;0;false;false;;;;;; -183439;10;0;false;false;0;0;0;;; -183449;1;0;false;false;;;;;; -183450;1;0;false;false;0;0;0;;; -183451;1;0;false;false;;;;;; -183452;4;1;false;false;127;0;85;;; -183456;1;0;false;false;0;0;0;;; -183457;6;0;false;false;;;;;; -183463;1;0;false;false;0;0;0;;; -183464;5;0;false;false;;;;;; -183469;1;0;false;false;0;0;0;;; -183470;5;0;false;false;;;;;; -183475;5;1;false;false;127;0;85;;; -183480;1;0;false;false;0;0;0;;; -183481;3;0;false;false;;;;;; -183484;1;0;false;false;0;0;0;;; -183485;2;0;false;false;;;;;; -183487;1;0;false;false;0;0;0;;; -183488;2;0;false;false;;;;;; -183490;3;0;false;false;63;95;191;;; -183493;4;0;false;false;;;;;; -183497;1;0;false;false;63;95;191;;; -183498;1;0;false;false;;;;;; -183499;7;0;false;false;63;95;191;;; -183506;1;0;false;false;;;;;; -183507;3;0;false;false;63;95;191;;; -183510;1;0;false;false;;;;;; -183511;6;0;false;false;63;95;191;;; -183517;1;0;false;false;;;;;; -183518;11;0;false;false;63;95;191;;; -183529;3;0;false;false;;;;;; -183532;2;0;false;false;63;95;191;;; -183534;2;0;false;false;;;;;; -183536;4;1;false;false;127;0;85;;; -183540;1;0;false;false;;;;;; -183541;26;0;false;false;0;0;0;;; -183567;1;0;false;false;;;;;; -183568;6;0;false;false;0;0;0;;; -183574;1;0;false;false;;;;;; -183575;1;0;false;false;0;0;0;;; -183576;3;0;false;false;;;;;; -183579;56;0;false;false;0;0;0;;; -183635;1;0;false;false;;;;;; -183636;5;1;false;false;127;0;85;;; -183641;2;0;false;false;0;0;0;;; -183643;2;0;false;false;;;;;; -183645;1;0;false;false;0;0;0;;; -183646;2;0;false;false;;;;;; -183648;3;0;false;false;63;95;191;;; -183651;3;0;false;false;;;;;; -183654;1;0;false;false;63;95;191;;; -183655;1;0;false;false;;;;;; -183656;3;0;false;false;63;95;191;;; -183659;1;0;false;false;;;;;; -183660;13;0;false;false;63;95;191;;; -183673;1;0;false;false;;;;;; -183674;7;0;false;false;63;95;191;;; -183681;1;0;false;false;;;;;; -183682;3;0;false;false;63;95;191;;; -183685;1;0;false;false;;;;;; -183686;3;0;false;false;63;95;191;;; -183689;1;0;false;false;;;;;; -183690;7;0;false;false;63;95;191;;; -183697;3;0;false;false;;;;;; -183700;2;0;false;false;63;95;191;;; -183702;2;0;false;false;;;;;; -183704;4;1;false;false;127;0;85;;; -183708;1;0;false;false;;;;;; -183709;22;0;false;false;0;0;0;;; -183731;1;0;false;false;;;;;; -183732;1;0;false;false;0;0;0;;; -183733;3;0;false;false;;;;;; -183736;5;1;false;false;127;0;85;;; -183741;1;0;false;false;;;;;; -183742;10;0;false;false;0;0;0;;; -183752;1;0;false;false;;;;;; -183753;10;0;false;false;0;0;0;;; -183763;1;0;false;false;;;;;; -183764;1;0;false;false;0;0;0;;; -183765;1;0;false;false;;;;;; -183766;16;0;false;false;0;0;0;;; -183782;3;0;false;false;;;;;; -183785;33;0;false;false;0;0;0;;; -183818;3;1;false;false;127;0;85;;; -183821;1;0;false;false;;;;;; -183822;19;0;false;false;0;0;0;;; -183841;1;0;false;false;;;;;; -183842;1;0;false;false;0;0;0;;; -183843;4;0;false;false;;;;;; -183847;6;1;false;false;127;0;85;;; -183853;1;0;false;false;;;;;; -183854;4;1;false;false;127;0;85;;; -183858;1;0;false;false;;;;;; -183859;23;0;false;false;0;0;0;;; -183882;1;0;false;false;;;;;; -183883;2;0;false;false;0;0;0;;; -183885;1;0;false;false;;;;;; -183886;1;0;false;false;0;0;0;;; -183887;5;0;false;false;;;;;; -183892;8;0;false;false;0;0;0;;; -183900;1;0;false;false;;;;;; -183901;1;0;false;false;0;0;0;;; -183902;1;0;false;false;;;;;; -183903;17;0;false;false;0;0;0;;; -183920;4;0;false;false;;;;;; -183924;1;0;false;false;0;0;0;;; -183925;3;0;false;false;;;;;; -183928;3;0;false;false;0;0;0;;; -183931;3;0;false;false;;;;;; -183934;37;0;false;false;0;0;0;;; -183971;3;1;false;false;127;0;85;;; -183974;1;0;false;false;;;;;; -183975;23;0;false;false;0;0;0;;; -183998;1;0;false;false;;;;;; -183999;1;0;false;false;0;0;0;;; -184000;4;0;false;false;;;;;; -184004;6;1;false;false;127;0;85;;; -184010;1;0;false;false;;;;;; -184011;4;1;false;false;127;0;85;;; -184015;1;0;false;false;;;;;; -184016;34;0;false;false;0;0;0;;; -184050;1;0;false;false;;;;;; -184051;2;0;false;false;0;0;0;;; -184053;1;0;false;false;;;;;; -184054;1;0;false;false;0;0;0;;; -184055;5;0;false;false;;;;;; -184060;8;0;false;false;0;0;0;;; -184068;1;0;false;false;;;;;; -184069;1;0;false;false;0;0;0;;; -184070;1;0;false;false;;;;;; -184071;11;0;false;false;0;0;0;;; -184082;4;1;false;false;127;0;85;;; -184086;18;0;false;false;0;0;0;;; -184104;4;0;false;false;;;;;; -184108;1;0;false;false;0;0;0;;; -184109;4;0;false;false;;;;;; -184113;6;1;false;false;127;0;85;;; -184119;1;0;false;false;;;;;; -184120;4;1;false;false;127;0;85;;; -184124;1;0;false;false;;;;;; -184125;37;0;false;false;0;0;0;;; -184162;1;0;false;false;;;;;; -184163;2;0;false;false;0;0;0;;; -184165;1;0;false;false;;;;;; -184166;1;0;false;false;0;0;0;;; -184167;5;0;false;false;;;;;; -184172;5;0;false;false;0;0;0;;; -184177;1;0;false;false;;;;;; -184178;9;0;false;false;0;0;0;;; -184187;1;0;false;false;;;;;; -184188;1;0;false;false;0;0;0;;; -184189;1;0;false;false;;;;;; -184190;11;0;false;false;0;0;0;;; -184201;4;1;false;false;127;0;85;;; -184205;21;0;false;false;0;0;0;;; -184226;5;0;false;false;;;;;; -184231;8;0;false;false;0;0;0;;; -184239;1;0;false;false;;;;;; -184240;1;0;false;false;0;0;0;;; -184241;1;0;false;false;;;;;; -184242;12;0;false;false;0;0;0;;; -184254;5;0;false;false;;;;;; -184259;8;0;false;false;0;0;0;;; -184267;1;0;false;false;;;;;; -184268;1;0;false;false;0;0;0;;; -184269;1;0;false;false;;;;;; -184270;12;0;false;false;0;0;0;;; -184282;4;0;false;false;;;;;; -184286;1;0;false;false;0;0;0;;; -184287;3;0;false;false;;;;;; -184290;3;0;false;false;0;0;0;;; -184293;3;0;false;false;;;;;; -184296;40;0;false;false;0;0;0;;; -184336;3;1;false;false;127;0;85;;; -184339;1;0;false;false;;;;;; -184340;26;0;false;false;0;0;0;;; -184366;1;0;false;false;;;;;; -184367;1;0;false;false;0;0;0;;; -184368;4;0;false;false;;;;;; -184372;6;1;false;false;127;0;85;;; -184378;1;0;false;false;;;;;; -184379;4;1;false;false;127;0;85;;; -184383;1;0;false;false;;;;;; -184384;30;0;false;false;0;0;0;;; -184414;1;0;false;false;;;;;; -184415;2;0;false;false;0;0;0;;; -184417;1;0;false;false;;;;;; -184418;1;0;false;false;0;0;0;;; -184419;5;0;false;false;;;;;; -184424;8;0;false;false;0;0;0;;; -184432;1;0;false;false;;;;;; -184433;1;0;false;false;0;0;0;;; -184434;1;0;false;false;;;;;; -184435;14;0;false;false;0;0;0;;; -184449;4;0;false;false;;;;;; -184453;1;0;false;false;0;0;0;;; -184454;4;0;false;false;;;;;; -184458;6;1;false;false;127;0;85;;; -184464;1;0;false;false;;;;;; -184465;4;1;false;false;127;0;85;;; -184469;1;0;false;false;;;;;; -184470;31;0;false;false;0;0;0;;; -184501;1;0;false;false;;;;;; -184502;2;0;false;false;0;0;0;;; -184504;1;0;false;false;;;;;; -184505;1;0;false;false;0;0;0;;; -184506;5;0;false;false;;;;;; -184511;3;1;false;false;127;0;85;;; -184514;1;0;false;false;;;;;; -184515;5;0;false;false;0;0;0;;; -184520;1;0;false;false;;;;;; -184521;1;0;false;false;0;0;0;;; -184522;1;0;false;false;;;;;; -184523;2;0;false;false;0;0;0;;; -184525;5;0;false;false;;;;;; -184530;2;1;false;false;127;0;85;;; -184532;1;0;false;false;;;;;; -184533;13;0;false;false;0;0;0;;; -184546;1;0;false;false;;;;;; -184547;5;0;false;false;0;0;0;;; -184552;1;0;false;false;;;;;; -184553;2;0;false;false;0;0;0;;; -184555;1;0;false;false;;;;;; -184556;20;0;false;false;0;0;0;;; -184576;5;0;false;false;;;;;; -184581;2;1;false;false;127;0;85;;; -184583;1;0;false;false;;;;;; -184584;18;0;false;false;0;0;0;;; -184602;1;0;false;false;;;;;; -184603;5;0;false;false;0;0;0;;; -184608;1;0;false;false;;;;;; -184609;2;0;false;false;0;0;0;;; -184611;1;0;false;false;;;;;; -184612;18;0;false;false;0;0;0;;; -184630;5;0;false;false;;;;;; -184635;2;1;false;false;127;0;85;;; -184637;1;0;false;false;;;;;; -184638;14;0;false;false;0;0;0;;; -184652;1;0;false;false;;;;;; -184653;5;0;false;false;0;0;0;;; -184658;1;0;false;false;;;;;; -184659;2;0;false;false;0;0;0;;; -184661;1;0;false;false;;;;;; -184662;20;0;false;false;0;0;0;;; -184682;5;0;false;false;;;;;; -184687;2;1;false;false;127;0;85;;; -184689;1;0;false;false;;;;;; -184690;16;0;false;false;0;0;0;;; -184706;1;0;false;false;;;;;; -184707;5;0;false;false;0;0;0;;; -184712;1;0;false;false;;;;;; -184713;2;0;false;false;0;0;0;;; -184715;1;0;false;false;;;;;; -184716;19;0;false;false;0;0;0;;; -184735;5;0;false;false;;;;;; -184740;8;0;false;false;0;0;0;;; -184748;1;0;false;false;;;;;; -184749;1;0;false;false;0;0;0;;; -184750;1;0;false;false;;;;;; -184751;6;0;false;false;0;0;0;;; -184757;4;0;false;false;;;;;; -184761;1;0;false;false;0;0;0;;; -184762;4;0;false;false;;;;;; -184766;6;1;false;false;127;0;85;;; -184772;1;0;false;false;;;;;; -184773;4;1;false;false;127;0;85;;; -184777;1;0;false;false;;;;;; -184778;31;0;false;false;0;0;0;;; -184809;1;0;false;false;;;;;; -184810;2;0;false;false;0;0;0;;; -184812;1;0;false;false;;;;;; -184813;1;0;false;false;0;0;0;;; -184814;5;0;false;false;;;;;; -184819;8;0;false;false;0;0;0;;; -184827;1;0;false;false;;;;;; -184828;1;0;false;false;0;0;0;;; -184829;1;0;false;false;;;;;; -184830;11;0;false;false;0;0;0;;; -184841;4;1;false;false;127;0;85;;; -184845;11;0;false;false;0;0;0;;; -184856;4;0;false;false;;;;;; -184860;1;0;false;false;0;0;0;;; -184861;3;0;false;false;;;;;; -184864;3;0;false;false;0;0;0;;; -184867;5;0;false;false;;;;;; -184872;24;0;false;false;0;0;0;;; -184896;1;0;false;false;;;;;; -184897;3;1;false;false;127;0;85;;; -184900;1;0;false;false;;;;;; -184901;10;0;false;false;0;0;0;;; -184911;1;0;false;false;;;;;; -184912;1;0;false;false;0;0;0;;; -184913;4;0;false;false;;;;;; -184917;6;1;false;false;127;0;85;;; -184923;1;0;false;false;;;;;; -184924;4;1;false;false;127;0;85;;; -184928;1;0;false;false;;;;;; -184929;17;0;false;false;0;0;0;;; -184946;1;0;false;false;;;;;; -184947;6;0;false;false;0;0;0;;; -184953;1;0;false;false;;;;;; -184954;1;0;false;false;0;0;0;;; -184955;5;0;false;false;;;;;; -184960;38;0;false;false;0;0;0;;; -184998;4;0;false;false;;;;;; -185002;1;0;false;false;0;0;0;;; -185003;3;0;false;false;;;;;; -185006;3;0;false;false;0;0;0;;; -185009;2;0;false;false;;;;;; -185011;1;0;false;false;0;0;0;;; -185012;2;0;false;false;;;;;; -185014;3;0;false;false;63;95;191;;; -185017;4;0;false;false;;;;;; -185021;1;0;false;false;63;95;191;;; -185022;1;0;false;false;;;;;; -185023;11;0;false;false;63;95;191;;; -185034;1;0;false;false;;;;;; -185035;3;0;false;false;63;95;191;;; -185038;1;0;false;false;;;;;; -185039;5;0;false;false;63;95;191;;; -185044;1;0;false;false;;;;;; -185045;4;0;false;false;63;95;191;;; -185049;1;0;false;false;;;;;; -185050;2;0;false;false;63;95;191;;; -185052;1;0;false;false;;;;;; -185053;6;0;false;false;63;95;191;;; -185059;1;0;false;false;;;;;; -185060;4;0;false;false;63;95;191;;; -185064;1;0;false;false;;;;;; -185065;7;0;false;false;63;95;191;;; -185072;3;0;false;false;;;;;; -185075;1;0;false;false;63;95;191;;; -185076;1;0;false;false;;;;;; -185077;9;0;false;false;63;95;191;;; -185086;1;0;false;false;;;;;; -185087;4;0;false;false;63;95;191;;; -185091;1;0;false;false;;;;;; -185092;7;0;false;false;63;95;191;;; -185099;1;0;false;false;;;;;; -185100;3;0;false;false;63;95;191;;; -185103;1;0;false;false;;;;;; -185104;4;0;false;false;63;95;191;;; -185108;1;0;false;false;;;;;; -185109;5;0;false;false;63;95;191;;; -185114;1;0;false;false;;;;;; -185115;3;0;false;false;63;95;191;;; -185118;1;0;false;false;;;;;; -185119;10;0;false;false;63;95;191;;; -185129;3;0;false;false;;;;;; -185132;2;0;false;false;63;95;191;;; -185134;2;0;false;false;;;;;; -185136;4;1;false;false;127;0;85;;; -185140;1;0;false;false;;;;;; -185141;20;0;false;false;0;0;0;;; -185161;1;0;false;false;;;;;; -185162;1;0;false;false;0;0;0;;; -185163;3;0;false;false;;;;;; -185166;2;1;false;false;127;0;85;;; -185168;1;0;false;false;;;;;; -185169;9;0;false;false;0;0;0;;; -185178;1;0;false;false;;;;;; -185179;2;0;false;false;0;0;0;;; -185181;1;0;false;false;;;;;; -185182;4;1;false;false;127;0;85;;; -185186;1;0;false;false;0;0;0;;; -185187;1;0;false;false;;;;;; -185188;1;0;false;false;0;0;0;;; -185189;4;0;false;false;;;;;; -185193;19;0;false;false;0;0;0;;; -185212;3;0;false;false;;;;;; -185215;1;0;false;false;0;0;0;;; -185216;3;0;false;false;;;;;; -185219;8;0;false;false;0;0;0;;; -185227;1;0;false;false;;;;;; -185228;1;0;false;false;0;0;0;;; -185229;1;0;false;false;;;;;; -185230;3;1;false;false;127;0;85;;; -185233;1;0;false;false;;;;;; -185234;29;0;false;false;0;0;0;;; -185263;1;0;false;false;;;;;; -185264;10;0;false;false;0;0;0;;; -185274;1;0;false;false;;;;;; -185275;4;1;false;false;127;0;85;;; -185279;1;0;false;false;0;0;0;;; -185280;1;0;false;false;;;;;; -185281;11;0;false;false;0;0;0;;; -185292;3;0;false;false;;;;;; -185295;10;0;false;false;0;0;0;;; -185305;1;0;false;false;;;;;; -185306;1;0;false;false;0;0;0;;; -185307;1;0;false;false;;;;;; -185308;25;0;false;false;0;0;0;;; -185333;3;0;false;false;;;;;; -185336;2;1;false;false;127;0;85;;; -185338;1;0;false;false;;;;;; -185339;10;0;false;false;0;0;0;;; -185349;1;0;false;false;;;;;; -185350;1;0;false;false;0;0;0;;; -185351;4;0;false;false;;;;;; -185355;7;0;false;false;0;0;0;;; -185362;1;0;false;false;;;;;; -185363;1;0;false;false;0;0;0;;; -185364;1;0;false;false;;;;;; -185365;3;1;false;false;127;0;85;;; -185368;1;0;false;false;;;;;; -185369;24;0;false;false;0;0;0;;; -185393;1;0;false;false;;;;;; -185394;16;0;false;false;0;0;0;;; -185410;3;0;false;false;;;;;; -185413;1;0;false;false;0;0;0;;; -185414;2;0;false;false;;;;;; -185416;1;0;false;false;0;0;0;;; -185417;2;0;false;false;;;;;; -185419;3;0;false;false;63;95;191;;; -185422;3;0;false;false;;;;;; -185425;1;0;false;false;63;95;191;;; -185426;1;0;false;false;;;;;; -185427;8;0;false;false;63;95;191;;; -185435;1;0;false;false;;;;;; -185436;3;0;false;false;63;95;191;;; -185439;1;0;false;false;;;;;; -185440;7;0;false;false;63;95;191;;; -185447;3;0;false;false;;;;;; -185450;1;0;false;false;63;95;191;;; -185451;1;0;false;false;;;;;; -185452;3;0;false;false;127;127;159;;; -185455;3;0;false;false;;;;;; -185458;1;0;false;false;63;95;191;;; -185459;3;0;false;false;;;;;; -185462;1;0;false;false;63;95;191;;; -185463;1;0;false;false;;;;;; -185464;7;1;false;false;127;159;191;;; -185471;6;0;false;false;63;95;191;;; -185477;1;0;false;false;;;;;; -185478;3;0;false;false;63;95;191;;; -185481;1;0;false;false;;;;;; -185482;2;0;false;false;63;95;191;;; -185484;1;0;false;false;;;;;; -185485;3;0;false;false;63;95;191;;; -185488;1;0;false;false;;;;;; -185489;7;0;false;false;63;95;191;;; -185496;1;0;false;false;;;;;; -185497;7;0;false;false;63;95;191;;; -185504;1;0;false;false;;;;;; -185505;2;0;false;false;63;95;191;;; -185507;1;0;false;false;;;;;; -185508;7;0;false;false;63;95;191;;; -185515;3;0;false;false;;;;;; -185518;2;0;false;false;63;95;191;;; -185520;2;0;false;false;;;;;; -185522;6;1;false;false;127;0;85;;; -185528;1;0;false;false;;;;;; -185529;4;1;false;false;127;0;85;;; -185533;1;0;false;false;;;;;; -185534;13;0;false;false;0;0;0;;; -185547;3;1;false;false;127;0;85;;; -185550;1;0;false;false;;;;;; -185551;7;0;false;false;0;0;0;;; -185558;1;0;false;false;;;;;; -185559;1;0;false;false;0;0;0;;; -185560;3;0;false;false;;;;;; -185563;3;1;false;false;127;0;85;;; -185566;1;0;false;false;;;;;; -185567;11;0;false;false;0;0;0;;; -185578;1;0;false;false;;;;;; -185579;17;0;false;false;0;0;0;;; -185596;1;0;false;false;;;;;; -185597;14;0;false;false;0;0;0;;; -185611;3;0;false;false;;;;;; -185614;3;1;false;false;127;0;85;;; -185617;1;0;false;false;;;;;; -185618;10;0;false;false;0;0;0;;; -185628;6;0;false;false;;;;;; -185634;14;0;false;false;0;0;0;;; -185648;3;0;false;false;;;;;; -185651;20;0;false;false;0;0;0;;; -185671;1;0;false;false;;;;;; -185672;1;0;false;false;0;0;0;;; -185673;1;0;false;false;;;;;; -185674;4;1;false;false;127;0;85;;; -185678;1;0;false;false;0;0;0;;; -185679;3;0;false;false;;;;;; -185682;6;1;false;false;127;0;85;;; -185688;1;0;false;false;;;;;; -185689;8;0;false;false;0;0;0;;; -185697;1;0;false;false;;;;;; -185698;1;0;false;false;0;0;0;;; -185699;4;0;false;false;;;;;; -185703;15;0;false;false;63;127;95;;; -185718;2;0;false;false;;;;;; -185720;4;1;false;false;127;0;85;;; -185724;1;0;false;false;;;;;; -185725;11;0;false;false;0;0;0;;; -185736;5;0;false;false;;;;;; -185741;9;0;false;false;0;0;0;;; -185750;1;0;false;false;;;;;; -185751;1;0;false;false;0;0;0;;; -185752;1;0;false;false;;;;;; -185753;11;0;false;false;0;0;0;;; -185764;5;0;false;false;;;;;; -185769;10;0;false;false;0;0;0;;; -185779;1;0;false;false;;;;;; -185780;1;0;false;false;0;0;0;;; -185781;1;0;false;false;;;;;; -185782;8;0;false;false;0;0;0;;; -185790;5;0;false;false;;;;;; -185795;16;0;false;false;0;0;0;;; -185811;1;0;false;false;;;;;; -185812;1;0;false;false;0;0;0;;; -185813;1;0;false;false;;;;;; -185814;23;0;false;false;0;0;0;;; -185837;5;0;false;false;;;;;; -185842;66;0;false;false;63;127;95;;; -185908;3;0;false;false;;;;;; -185911;69;0;false;false;63;127;95;;; -185980;3;0;false;false;;;;;; -185983;21;0;false;false;0;0;0;;; -186004;5;0;false;false;;;;;; -186009;51;0;false;false;63;127;95;;; -186060;3;0;false;false;;;;;; -186063;13;0;false;false;0;0;0;;; -186076;1;0;false;false;;;;;; -186077;1;0;false;false;0;0;0;;; -186078;1;0;false;false;;;;;; -186079;16;0;false;false;0;0;0;;; -186095;1;0;false;false;;;;;; -186096;1;0;false;false;0;0;0;;; -186097;1;0;false;false;;;;;; -186098;23;0;false;false;0;0;0;;; -186121;5;0;false;false;;;;;; -186126;7;0;false;false;0;0;0;;; -186133;1;0;false;false;;;;;; -186134;1;0;false;false;0;0;0;;; -186135;1;0;false;false;;;;;; -186136;10;0;false;false;0;0;0;;; -186146;1;0;false;false;;;;;; -186147;1;0;false;false;0;0;0;;; -186148;1;0;false;false;;;;;; -186149;14;0;false;false;0;0;0;;; -186163;5;0;false;false;;;;;; -186168;15;0;false;false;0;0;0;;; -186183;4;1;false;false;127;0;85;;; -186187;2;0;false;false;0;0;0;;; -186189;5;0;false;false;;;;;; -186194;5;1;false;false;127;0;85;;; -186199;1;0;false;false;0;0;0;;; -186200;4;0;false;false;;;;;; -186204;4;1;false;false;127;0;85;;; -186208;1;0;false;false;;;;;; -186209;13;0;false;false;0;0;0;;; -186222;5;0;false;false;;;;;; -186227;9;0;false;false;0;0;0;;; -186236;1;0;false;false;;;;;; -186237;1;0;false;false;0;0;0;;; -186238;1;0;false;false;;;;;; -186239;13;0;false;false;0;0;0;;; -186252;5;0;false;false;;;;;; -186257;10;0;false;false;0;0;0;;; -186267;1;0;false;false;;;;;; -186268;1;0;false;false;0;0;0;;; -186269;1;0;false;false;;;;;; -186270;8;0;false;false;0;0;0;;; -186278;5;0;false;false;;;;;; -186283;16;0;false;false;0;0;0;;; -186299;1;0;false;false;;;;;; -186300;1;0;false;false;0;0;0;;; -186301;1;0;false;false;;;;;; -186302;23;0;false;false;0;0;0;;; -186325;5;0;false;false;;;;;; -186330;66;0;false;false;63;127;95;;; -186396;3;0;false;false;;;;;; -186399;69;0;false;false;63;127;95;;; -186468;3;0;false;false;;;;;; -186471;21;0;false;false;0;0;0;;; -186492;5;0;false;false;;;;;; -186497;51;0;false;false;63;127;95;;; -186548;3;0;false;false;;;;;; -186551;13;0;false;false;0;0;0;;; -186564;1;0;false;false;;;;;; -186565;1;0;false;false;0;0;0;;; -186566;1;0;false;false;;;;;; -186567;16;0;false;false;0;0;0;;; -186583;1;0;false;false;;;;;; -186584;1;0;false;false;0;0;0;;; -186585;1;0;false;false;;;;;; -186586;23;0;false;false;0;0;0;;; -186609;5;0;false;false;;;;;; -186614;7;0;false;false;0;0;0;;; -186621;1;0;false;false;;;;;; -186622;1;0;false;false;0;0;0;;; -186623;1;0;false;false;;;;;; -186624;10;0;false;false;0;0;0;;; -186634;1;0;false;false;;;;;; -186635;1;0;false;false;0;0;0;;; -186636;1;0;false;false;;;;;; -186637;14;0;false;false;0;0;0;;; -186651;5;0;false;false;;;;;; -186656;15;0;false;false;0;0;0;;; -186671;4;1;false;false;127;0;85;;; -186675;2;0;false;false;0;0;0;;; -186677;5;0;false;false;;;;;; -186682;5;1;false;false;127;0;85;;; -186687;1;0;false;false;0;0;0;;; -186688;4;0;false;false;;;;;; -186692;4;1;false;false;127;0;85;;; -186696;1;0;false;false;;;;;; -186697;14;0;false;false;0;0;0;;; -186711;5;0;false;false;;;;;; -186716;14;0;false;false;0;0;0;;; -186730;5;0;false;false;;;;;; -186735;15;0;false;false;0;0;0;;; -186750;4;1;false;false;127;0;85;;; -186754;2;0;false;false;0;0;0;;; -186756;5;0;false;false;;;;;; -186761;5;1;false;false;127;0;85;;; -186766;1;0;false;false;0;0;0;;; -186767;4;0;false;false;;;;;; -186771;4;1;false;false;127;0;85;;; -186775;1;0;false;false;;;;;; -186776;12;0;false;false;0;0;0;;; -186788;5;0;false;false;;;;;; -186793;12;0;false;false;0;0;0;;; -186805;5;0;false;false;;;;;; -186810;15;0;false;false;0;0;0;;; -186825;4;1;false;false;127;0;85;;; -186829;2;0;false;false;0;0;0;;; -186831;5;0;false;false;;;;;; -186836;5;1;false;false;127;0;85;;; -186841;1;0;false;false;0;0;0;;; -186842;4;0;false;false;;;;;; -186846;4;1;false;false;127;0;85;;; -186850;1;0;false;false;;;;;; -186851;19;0;false;false;0;0;0;;; -186870;5;0;false;false;;;;;; -186875;19;0;false;false;0;0;0;;; -186894;5;0;false;false;;;;;; -186899;15;0;false;false;0;0;0;;; -186914;4;1;false;false;127;0;85;;; -186918;2;0;false;false;0;0;0;;; -186920;5;0;false;false;;;;;; -186925;5;1;false;false;127;0;85;;; -186930;1;0;false;false;0;0;0;;; -186931;4;0;false;false;;;;;; -186935;4;1;false;false;127;0;85;;; -186939;1;0;false;false;;;;;; -186940;15;0;false;false;0;0;0;;; -186955;5;0;false;false;;;;;; -186960;15;0;false;false;0;0;0;;; -186975;5;0;false;false;;;;;; -186980;15;0;false;false;0;0;0;;; -186995;4;1;false;false;127;0;85;;; -186999;2;0;false;false;0;0;0;;; -187001;5;0;false;false;;;;;; -187006;5;1;false;false;127;0;85;;; -187011;1;0;false;false;0;0;0;;; -187012;4;0;false;false;;;;;; -187016;4;1;false;false;127;0;85;;; -187020;1;0;false;false;;;;;; -187021;11;0;false;false;0;0;0;;; -187032;5;0;false;false;;;;;; -187037;9;0;false;false;0;0;0;;; -187046;5;1;false;false;127;0;85;;; -187051;1;0;false;false;0;0;0;;; -187052;1;0;false;false;;;;;; -187053;21;0;false;false;0;0;0;;; -187074;5;0;false;false;;;;;; -187079;15;0;false;false;0;0;0;;; -187094;4;1;false;false;127;0;85;;; -187098;2;0;false;false;0;0;0;;; -187100;5;0;false;false;;;;;; -187105;5;1;false;false;127;0;85;;; -187110;1;0;false;false;0;0;0;;; -187111;4;0;false;false;;;;;; -187115;4;1;false;false;127;0;85;;; -187119;1;0;false;false;;;;;; -187120;13;0;false;false;0;0;0;;; -187133;5;0;false;false;;;;;; -187138;11;0;false;false;0;0;0;;; -187149;5;1;false;false;127;0;85;;; -187154;1;0;false;false;0;0;0;;; -187155;1;0;false;false;;;;;; -187156;21;0;false;false;0;0;0;;; -187177;5;0;false;false;;;;;; -187182;15;0;false;false;0;0;0;;; -187197;4;1;false;false;127;0;85;;; -187201;2;0;false;false;0;0;0;;; -187203;5;0;false;false;;;;;; -187208;5;1;false;false;127;0;85;;; -187213;1;0;false;false;0;0;0;;; -187214;4;0;false;false;;;;;; -187218;4;1;false;false;127;0;85;;; -187222;1;0;false;false;;;;;; -187223;17;0;false;false;0;0;0;;; -187240;5;0;false;false;;;;;; -187245;17;0;false;false;0;0;0;;; -187262;5;0;false;false;;;;;; -187267;15;0;false;false;0;0;0;;; -187282;4;1;false;false;127;0;85;;; -187286;2;0;false;false;0;0;0;;; -187288;5;0;false;false;;;;;; -187293;5;1;false;false;127;0;85;;; -187298;1;0;false;false;0;0;0;;; -187299;4;0;false;false;;;;;; -187303;4;1;false;false;127;0;85;;; -187307;1;0;false;false;;;;;; -187308;13;0;false;false;0;0;0;;; -187321;5;0;false;false;;;;;; -187326;13;0;false;false;0;0;0;;; -187339;5;0;false;false;;;;;; -187344;15;0;false;false;0;0;0;;; -187359;4;1;false;false;127;0;85;;; -187363;2;0;false;false;0;0;0;;; -187365;5;0;false;false;;;;;; -187370;5;1;false;false;127;0;85;;; -187375;1;0;false;false;0;0;0;;; -187376;4;0;false;false;;;;;; -187380;4;1;false;false;127;0;85;;; -187384;1;0;false;false;;;;;; -187385;14;0;false;false;0;0;0;;; -187399;5;0;false;false;;;;;; -187404;17;0;false;false;0;0;0;;; -187421;5;0;false;false;;;;;; -187426;15;0;false;false;0;0;0;;; -187441;4;1;false;false;127;0;85;;; -187445;2;0;false;false;0;0;0;;; -187447;5;0;false;false;;;;;; -187452;5;1;false;false;127;0;85;;; -187457;1;0;false;false;0;0;0;;; -187458;4;0;false;false;;;;;; -187462;4;1;false;false;127;0;85;;; -187466;1;0;false;false;;;;;; -187467;12;0;false;false;0;0;0;;; -187479;5;0;false;false;;;;;; -187484;15;0;false;false;0;0;0;;; -187499;5;0;false;false;;;;;; -187504;15;0;false;false;0;0;0;;; -187519;4;1;false;false;127;0;85;;; -187523;2;0;false;false;0;0;0;;; -187525;5;0;false;false;;;;;; -187530;5;1;false;false;127;0;85;;; -187535;1;0;false;false;0;0;0;;; -187536;4;0;false;false;;;;;; -187540;4;1;false;false;127;0;85;;; -187544;1;0;false;false;;;;;; -187545;16;0;false;false;0;0;0;;; -187561;5;0;false;false;;;;;; -187566;14;0;false;false;0;0;0;;; -187580;5;0;false;false;;;;;; -187585;15;0;false;false;0;0;0;;; -187600;4;1;false;false;127;0;85;;; -187604;2;0;false;false;0;0;0;;; -187606;5;0;false;false;;;;;; -187611;5;1;false;false;127;0;85;;; -187616;1;0;false;false;0;0;0;;; -187617;4;0;false;false;;;;;; -187621;4;1;false;false;127;0;85;;; -187625;1;0;false;false;;;;;; -187626;14;0;false;false;0;0;0;;; -187640;5;0;false;false;;;;;; -187645;12;0;false;false;0;0;0;;; -187657;5;0;false;false;;;;;; -187662;15;0;false;false;0;0;0;;; -187677;4;1;false;false;127;0;85;;; -187681;2;0;false;false;0;0;0;;; -187683;5;0;false;false;;;;;; -187688;5;1;false;false;127;0;85;;; -187693;1;0;false;false;0;0;0;;; -187694;4;0;false;false;;;;;; -187698;15;0;false;false;63;127;95;;; -187713;2;0;false;false;;;;;; -187715;4;1;false;false;127;0;85;;; -187719;1;0;false;false;;;;;; -187720;18;0;false;false;0;0;0;;; -187738;5;0;false;false;;;;;; -187743;20;0;false;false;0;0;0;;; -187763;5;0;false;false;;;;;; -187768;5;1;false;false;127;0;85;;; -187773;1;0;false;false;0;0;0;;; -187774;4;0;false;false;;;;;; -187778;4;1;false;false;127;0;85;;; -187782;1;0;false;false;;;;;; -187783;14;0;false;false;0;0;0;;; -187797;5;0;false;false;;;;;; -187802;12;0;false;false;0;0;0;;; -187814;5;0;false;false;;;;;; -187819;5;1;false;false;127;0;85;;; -187824;1;0;false;false;0;0;0;;; -187825;4;0;false;false;;;;;; -187829;4;1;false;false;127;0;85;;; -187833;1;0;false;false;;;;;; -187834;20;0;false;false;0;0;0;;; -187854;5;0;false;false;;;;;; -187859;22;0;false;false;0;0;0;;; -187881;5;0;false;false;;;;;; -187886;5;1;false;false;127;0;85;;; -187891;1;0;false;false;0;0;0;;; -187892;4;0;false;false;;;;;; -187896;4;1;false;false;127;0;85;;; -187900;1;0;false;false;;;;;; -187901;21;0;false;false;0;0;0;;; -187922;5;0;false;false;;;;;; -187927;14;0;false;false;0;0;0;;; -187941;5;0;false;false;;;;;; -187946;32;0;false;false;0;0;0;;; -187978;5;0;false;false;;;;;; -187983;5;1;false;false;127;0;85;;; -187988;1;0;false;false;0;0;0;;; -187989;4;0;false;false;;;;;; -187993;4;1;false;false;127;0;85;;; -187997;1;0;false;false;;;;;; -187998;19;0;false;false;0;0;0;;; -188017;5;0;false;false;;;;;; -188022;12;0;false;false;0;0;0;;; -188034;5;0;false;false;;;;;; -188039;28;0;false;false;0;0;0;;; -188067;5;0;false;false;;;;;; -188072;5;1;false;false;127;0;85;;; -188077;1;0;false;false;0;0;0;;; -188078;4;0;false;false;;;;;; -188082;4;1;false;false;127;0;85;;; -188086;1;0;false;false;;;;;; -188087;26;0;false;false;0;0;0;;; -188113;5;0;false;false;;;;;; -188118;28;0;false;false;0;0;0;;; -188146;5;0;false;false;;;;;; -188151;32;0;false;false;0;0;0;;; -188183;5;0;false;false;;;;;; -188188;5;1;false;false;127;0;85;;; -188193;1;0;false;false;0;0;0;;; -188194;4;0;false;false;;;;;; -188198;4;1;false;false;127;0;85;;; -188202;1;0;false;false;;;;;; -188203;22;0;false;false;0;0;0;;; -188225;5;0;false;false;;;;;; -188230;24;0;false;false;0;0;0;;; -188254;5;0;false;false;;;;;; -188259;28;0;false;false;0;0;0;;; -188287;5;0;false;false;;;;;; -188292;5;1;false;false;127;0;85;;; -188297;1;0;false;false;0;0;0;;; -188298;4;0;false;false;;;;;; -188302;4;1;false;false;127;0;85;;; -188306;1;0;false;false;;;;;; -188307;18;0;false;false;0;0;0;;; -188325;5;0;false;false;;;;;; -188330;39;0;false;false;0;0;0;;; -188369;5;0;false;false;;;;;; -188374;5;1;false;false;127;0;85;;; -188379;1;0;false;false;0;0;0;;; -188380;4;0;false;false;;;;;; -188384;4;1;false;false;127;0;85;;; -188388;1;0;false;false;;;;;; -188389;20;0;false;false;0;0;0;;; -188409;5;0;false;false;;;;;; -188414;41;0;false;false;0;0;0;;; -188455;5;0;false;false;;;;;; -188460;5;1;false;false;127;0;85;;; -188465;1;0;false;false;0;0;0;;; -188466;4;0;false;false;;;;;; -188470;4;1;false;false;127;0;85;;; -188474;1;0;false;false;;;;;; -188475;24;0;false;false;0;0;0;;; -188499;5;0;false;false;;;;;; -188504;26;0;false;false;0;0;0;;; -188530;5;0;false;false;;;;;; -188535;32;0;false;false;0;0;0;;; -188567;5;0;false;false;;;;;; -188572;5;1;false;false;127;0;85;;; -188577;1;0;false;false;0;0;0;;; -188578;4;0;false;false;;;;;; -188582;4;1;false;false;127;0;85;;; -188586;1;0;false;false;;;;;; -188587;20;0;false;false;0;0;0;;; -188607;5;0;false;false;;;;;; -188612;22;0;false;false;0;0;0;;; -188634;5;0;false;false;;;;;; -188639;28;0;false;false;0;0;0;;; -188667;5;0;false;false;;;;;; -188672;5;1;false;false;127;0;85;;; -188677;1;0;false;false;0;0;0;;; -188678;4;0;false;false;;;;;; -188682;4;1;false;false;127;0;85;;; -188686;1;0;false;false;;;;;; -188687;21;0;false;false;0;0;0;;; -188708;5;0;false;false;;;;;; -188713;17;0;false;false;0;0;0;;; -188730;5;0;false;false;;;;;; -188735;32;0;false;false;0;0;0;;; -188767;5;0;false;false;;;;;; -188772;5;1;false;false;127;0;85;;; -188777;1;0;false;false;0;0;0;;; -188778;4;0;false;false;;;;;; -188782;4;1;false;false;127;0;85;;; -188786;1;0;false;false;;;;;; -188787;19;0;false;false;0;0;0;;; -188806;5;0;false;false;;;;;; -188811;15;0;false;false;0;0;0;;; -188826;5;0;false;false;;;;;; -188831;28;0;false;false;0;0;0;;; -188859;5;0;false;false;;;;;; -188864;5;1;false;false;127;0;85;;; -188869;1;0;false;false;0;0;0;;; -188870;4;0;false;false;;;;;; -188874;4;1;false;false;127;0;85;;; -188878;1;0;false;false;;;;;; -188879;23;0;false;false;0;0;0;;; -188902;5;0;false;false;;;;;; -188907;14;0;false;false;0;0;0;;; -188921;5;0;false;false;;;;;; -188926;32;0;false;false;0;0;0;;; -188958;5;0;false;false;;;;;; -188963;5;1;false;false;127;0;85;;; -188968;1;0;false;false;0;0;0;;; -188969;4;0;false;false;;;;;; -188973;4;1;false;false;127;0;85;;; -188977;1;0;false;false;;;;;; -188978;21;0;false;false;0;0;0;;; -188999;5;0;false;false;;;;;; -189004;12;0;false;false;0;0;0;;; -189016;5;0;false;false;;;;;; -189021;28;0;false;false;0;0;0;;; -189049;5;0;false;false;;;;;; -189054;5;1;false;false;127;0;85;;; -189059;1;0;false;false;0;0;0;;; -189060;4;0;false;false;;;;;; -189064;20;0;false;false;63;127;95;;; -189084;2;0;false;false;;;;;; -189086;4;1;false;false;127;0;85;;; -189090;1;0;false;false;;;;;; -189091;7;0;false;false;0;0;0;;; -189098;5;0;false;false;;;;;; -189103;6;0;false;false;0;0;0;;; -189109;5;0;false;false;;;;;; -189114;5;1;false;false;127;0;85;;; -189119;1;0;false;false;0;0;0;;; -189120;4;0;false;false;;;;;; -189124;4;1;false;false;127;0;85;;; -189128;1;0;false;false;;;;;; -189129;8;0;false;false;0;0;0;;; -189137;5;0;false;false;;;;;; -189142;7;0;false;false;0;0;0;;; -189149;5;0;false;false;;;;;; -189154;5;1;false;false;127;0;85;;; -189159;1;0;false;false;0;0;0;;; -189160;4;0;false;false;;;;;; -189164;4;1;false;false;127;0;85;;; -189168;1;0;false;false;;;;;; -189169;9;0;false;false;0;0;0;;; -189178;5;0;false;false;;;;;; -189183;8;0;false;false;0;0;0;;; -189191;5;0;false;false;;;;;; -189196;5;1;false;false;127;0;85;;; -189201;1;0;false;false;0;0;0;;; -189202;4;0;false;false;;;;;; -189206;4;1;false;false;127;0;85;;; -189210;1;0;false;false;;;;;; -189211;19;0;false;false;0;0;0;;; -189230;5;0;false;false;;;;;; -189235;14;0;false;false;0;0;0;;; -189249;5;0;false;false;;;;;; -189254;5;1;false;false;127;0;85;;; -189259;1;0;false;false;0;0;0;;; -189260;4;0;false;false;;;;;; -189264;4;1;false;false;127;0;85;;; -189268;1;0;false;false;;;;;; -189269;15;0;false;false;0;0;0;;; -189284;5;0;false;false;;;;;; -189289;11;0;false;false;0;0;0;;; -189300;5;0;false;false;;;;;; -189305;5;1;false;false;127;0;85;;; -189310;1;0;false;false;0;0;0;;; -189311;4;0;false;false;;;;;; -189315;4;1;false;false;127;0;85;;; -189319;1;0;false;false;;;;;; -189320;24;0;false;false;0;0;0;;; -189344;5;0;false;false;;;;;; -189349;23;0;false;false;0;0;0;;; -189372;5;0;false;false;;;;;; -189377;5;1;false;false;127;0;85;;; -189382;1;0;false;false;0;0;0;;; -189383;4;0;false;false;;;;;; -189387;4;1;false;false;127;0;85;;; -189391;1;0;false;false;;;;;; -189392;20;0;false;false;0;0;0;;; -189412;5;0;false;false;;;;;; -189417;19;0;false;false;0;0;0;;; -189436;5;0;false;false;;;;;; -189441;5;1;false;false;127;0;85;;; -189446;1;0;false;false;0;0;0;;; -189447;4;0;false;false;;;;;; -189451;18;0;false;false;63;127;95;;; -189469;2;0;false;false;;;;;; -189471;4;1;false;false;127;0;85;;; -189475;1;0;false;false;;;;;; -189476;20;0;false;false;0;0;0;;; -189496;5;0;false;false;;;;;; -189501;9;0;false;false;0;0;0;;; -189510;1;0;false;false;;;;;; -189511;1;0;false;false;0;0;0;;; -189512;1;0;false;false;;;;;; -189513;11;0;false;false;0;0;0;;; -189524;2;0;false;false;;;;;; -189526;33;0;false;false;63;127;95;;; -189559;3;0;false;false;;;;;; -189562;5;1;false;false;127;0;85;;; -189567;1;0;false;false;0;0;0;;; -189568;3;0;false;false;;;;;; -189571;1;0;false;false;0;0;0;;; -189572;2;0;false;false;;;;;; -189574;1;0;false;false;0;0;0;;; -189575;2;0;false;false;;;;;; -189577;3;0;false;false;63;95;191;;; -189580;3;0;false;false;;;;;; -189583;1;0;false;false;63;95;191;;; -189584;1;0;false;false;;;;;; -189585;9;0;false;false;63;95;191;;; -189594;1;0;false;false;;;;;; -189595;5;0;false;false;63;95;191;;; -189600;1;0;false;false;;;;;; -189601;3;0;false;false;63;95;191;;; -189604;1;0;false;false;;;;;; -189605;8;0;false;false;63;95;191;;; -189613;1;0;false;false;;;;;; -189614;4;0;false;false;63;95;191;;; -189618;3;0;false;false;;;;;; -189621;2;0;false;false;63;95;191;;; -189623;2;0;false;false;;;;;; -189625;7;1;false;false;127;0;85;;; -189632;1;0;false;false;;;;;; -189633;8;0;false;false;0;0;0;;; -189641;1;0;false;false;;;;;; -189642;1;0;false;false;0;0;0;;; -189643;3;0;false;false;;;;;; -189646;6;1;false;false;127;0;85;;; -189652;1;0;false;false;;;;;; -189653;6;0;false;false;0;0;0;;; -189659;1;0;false;false;;;;;; -189660;2;0;false;false;0;0;0;;; -189662;1;0;false;false;;;;;; -189663;25;0;false;false;0;0;0;;; -189688;1;0;false;false;;;;;; -189689;2;0;false;false;0;0;0;;; -189691;1;0;false;false;;;;;; -189692;11;0;false;false;0;0;0;;; -189703;2;0;false;false;;;;;; -189705;1;0;false;false;0;0;0;;; -189706;2;0;false;false;;;;;; -189708;3;0;false;false;63;95;191;;; -189711;3;0;false;false;;;;;; -189714;1;0;false;false;63;95;191;;; -189715;1;0;false;false;;;;;; -189716;7;0;false;false;63;95;191;;; -189723;1;0;false;false;;;;;; -189724;7;0;false;false;63;95;191;;; -189731;1;0;false;false;;;;;; -189732;3;0;false;false;63;95;191;;; -189735;1;0;false;false;;;;;; -189736;5;0;false;false;63;95;191;;; -189741;1;0;false;false;;;;;; -189742;6;0;false;false;63;95;191;;; -189748;1;0;false;false;;;;;; -189749;2;0;false;false;63;95;191;;; -189751;1;0;false;false;;;;;; -189752;6;0;false;false;63;95;191;;; -189758;1;0;false;false;;;;;; -189759;1;0;false;false;63;95;191;;; -189760;1;0;false;false;;;;;; -189761;5;0;false;false;63;95;191;;; -189766;1;0;false;false;;;;;; -189767;4;0;false;false;63;95;191;;; -189771;1;0;false;false;;;;;; -189772;4;0;false;false;63;95;191;;; -189776;1;0;false;false;;;;;; -189777;10;0;false;false;63;95;191;;; -189787;3;0;false;false;;;;;; -189790;1;0;false;false;63;95;191;;; -189791;1;0;false;false;;;;;; -189792;8;0;false;false;63;95;191;;; -189800;4;0;false;false;;;;;; -189804;1;0;false;false;63;95;191;;; -189805;1;0;false;false;;;;;; -189806;11;0;false;false;63;95;191;;; -189817;1;0;false;false;;;;;; -189818;18;0;false;false;63;95;191;;; -189836;1;0;false;false;;;;;; -189837;2;0;false;false;63;95;191;;; -189839;1;0;false;false;;;;;; -189840;5;0;false;false;63;95;191;;; -189845;1;0;false;false;;;;;; -189846;3;0;false;false;63;95;191;;; -189849;1;0;false;false;;;;;; -189850;18;0;false;false;63;95;191;;; -189868;1;0;false;false;;;;;; -189869;2;0;false;false;63;95;191;;; -189871;1;0;false;false;;;;;; -189872;4;0;false;false;63;95;191;;; -189876;3;0;false;false;;;;;; -189879;1;0;false;false;63;95;191;;; -189880;4;0;false;false;;;;;; -189884;1;0;false;false;63;95;191;;; -189885;1;0;false;false;;;;;; -189886;8;1;false;false;127;159;191;;; -189894;4;0;false;false;63;95;191;;; -189898;1;0;false;false;;;;;; -189899;2;0;false;false;63;95;191;;; -189901;1;0;false;false;;;;;; -189902;3;0;false;false;63;95;191;;; -189905;1;0;false;false;;;;;; -189906;5;0;false;false;63;95;191;;; -189911;1;0;false;false;;;;;; -189912;6;0;false;false;63;95;191;;; -189918;1;0;false;false;;;;;; -189919;2;0;false;false;63;95;191;;; -189921;1;0;false;false;;;;;; -189922;6;0;false;false;63;95;191;;; -189928;1;0;false;false;;;;;; -189929;1;0;false;false;63;95;191;;; -189930;1;0;false;false;;;;;; -189931;5;0;false;false;63;95;191;;; -189936;1;0;false;false;;;;;; -189937;4;0;false;false;63;95;191;;; -189941;1;0;false;false;;;;;; -189942;4;0;false;false;63;95;191;;; -189946;1;0;false;false;;;;;; -189947;10;0;false;false;63;95;191;;; -189957;3;0;false;false;;;;;; -189960;1;0;false;false;63;95;191;;; -189961;1;0;false;false;;;;;; -189962;5;0;false;false;63;95;191;;; -189967;1;0;false;false;;;;;; -189968;2;0;false;false;63;95;191;;; -189970;1;0;false;false;;;;;; -189971;3;0;false;false;63;95;191;;; -189974;1;0;false;false;;;;;; -189975;5;0;false;false;63;95;191;;; -189980;1;0;false;false;;;;;; -189981;6;0;false;false;63;95;191;;; -189987;1;0;false;false;;;;;; -189988;2;0;false;false;63;95;191;;; -189990;1;0;false;false;;;;;; -189991;6;0;false;false;63;95;191;;; -189997;1;0;false;false;;;;;; -189998;2;0;false;false;63;95;191;;; -190000;1;0;false;false;;;;;; -190001;5;0;false;false;63;95;191;;; -190006;1;0;false;false;;;;;; -190007;1;0;false;false;63;95;191;;; -190008;1;0;false;false;;;;;; -190009;4;0;false;false;63;95;191;;; -190013;1;0;false;false;;;;;; -190014;10;0;false;false;63;95;191;;; -190024;3;0;false;false;;;;;; -190027;2;0;false;false;63;95;191;;; -190029;2;0;false;false;;;;;; -190031;7;1;false;false;127;0;85;;; -190038;1;0;false;false;;;;;; -190039;16;0;false;false;0;0;0;;; -190055;3;1;false;false;127;0;85;;; -190058;1;0;false;false;;;;;; -190059;7;0;false;false;0;0;0;;; -190066;1;0;false;false;;;;;; -190067;1;0;false;false;0;0;0;;; -190068;3;0;false;false;;;;;; -190071;3;1;false;false;127;0;85;;; -190074;1;0;false;false;;;;;; -190075;4;0;false;false;0;0;0;;; -190079;1;0;false;false;;;;;; -190080;1;0;false;false;0;0;0;;; -190081;1;0;false;false;;;;;; -190082;32;0;false;false;0;0;0;;; -190114;3;0;false;false;;;;;; -190117;3;1;false;false;127;0;85;;; -190120;1;0;false;false;;;;;; -190121;10;0;false;false;0;0;0;;; -190131;1;0;false;false;;;;;; -190132;1;0;false;false;0;0;0;;; -190133;1;0;false;false;;;;;; -190134;30;0;false;false;0;0;0;;; -190164;4;0;false;false;;;;;; -190168;3;1;false;false;127;0;85;;; -190171;1;0;false;false;;;;;; -190172;12;0;false;false;0;0;0;;; -190184;1;0;false;false;;;;;; -190185;1;0;false;false;0;0;0;;; -190186;1;0;false;false;;;;;; -190187;6;0;false;false;0;0;0;;; -190193;1;0;false;false;;;;;; -190194;1;0;false;false;0;0;0;;; -190195;1;0;false;false;;;;;; -190196;11;0;false;false;0;0;0;;; -190207;3;0;false;false;;;;;; -190210;63;0;false;false;63;127;95;;; -190273;1;0;false;false;;;;;; -190274;65;0;false;false;63;127;95;;; -190339;1;0;false;false;;;;;; -190340;44;0;false;false;63;127;95;;; -190384;1;0;false;false;;;;;; -190385;6;1;false;false;127;0;85;;; -190391;1;0;false;false;;;;;; -190392;12;0;false;false;0;0;0;;; -190404;1;0;false;false;;;;;; -190405;1;0;false;false;0;0;0;;; -190406;1;0;false;false;;;;;; -190407;31;0;false;false;0;0;0;;; -190438;2;0;false;false;;;;;; -190440;1;0;false;false;0;0;0;;; -190441;2;0;false;false;;;;;; -190443;3;0;false;false;63;95;191;;; -190446;3;0;false;false;;;;;; -190449;1;0;false;false;63;95;191;;; -190450;1;0;false;false;;;;;; -190451;7;0;false;false;63;95;191;;; -190458;1;0;false;false;;;;;; -190459;7;0;false;false;63;95;191;;; -190466;1;0;false;false;;;;;; -190467;3;0;false;false;63;95;191;;; -190470;1;0;false;false;;;;;; -190471;6;0;false;false;63;95;191;;; -190477;1;0;false;false;;;;;; -190478;2;0;false;false;63;95;191;;; -190480;1;0;false;false;;;;;; -190481;8;0;false;false;63;95;191;;; -190489;1;0;false;false;;;;;; -190490;6;0;false;false;63;95;191;;; -190496;1;0;false;false;;;;;; -190497;14;0;false;false;63;95;191;;; -190511;1;0;false;false;;;;;; -190512;2;0;false;false;63;95;191;;; -190514;1;0;false;false;;;;;; -190515;4;0;false;false;63;95;191;;; -190519;4;0;false;false;;;;;; -190523;1;0;false;false;63;95;191;;; -190524;1;0;false;false;;;;;; -190525;7;0;false;false;63;95;191;;; -190532;1;0;false;false;;;;;; -190533;7;0;false;false;63;95;191;;; -190540;4;0;false;false;;;;;; -190544;1;0;false;false;63;95;191;;; -190545;4;0;false;false;;;;;; -190549;1;0;false;false;63;95;191;;; -190550;1;0;false;false;;;;;; -190551;8;1;false;false;127;159;191;;; -190559;10;0;false;false;63;95;191;;; -190569;1;0;false;false;;;;;; -190570;8;0;false;false;63;95;191;;; -190578;1;0;false;false;;;;;; -190579;6;0;false;false;63;95;191;;; -190585;1;0;false;false;;;;;; -190586;2;0;false;false;63;95;191;;; -190588;1;0;false;false;;;;;; -190589;5;0;false;false;63;95;191;;; -190594;1;0;false;false;;;;;; -190595;9;0;false;false;63;95;191;;; -190604;1;0;false;false;;;;;; -190605;9;0;false;false;63;95;191;;; -190614;1;0;false;false;;;;;; -190615;6;0;false;false;63;95;191;;; -190621;4;0;false;false;;;;;; -190625;1;0;false;false;63;95;191;;; -190626;2;0;false;false;;;;;; -190628;2;0;false;false;63;95;191;;; -190630;1;0;false;false;;;;;; -190631;4;0;false;false;63;95;191;;; -190635;1;0;false;false;;;;;; -190636;8;0;false;false;63;95;191;;; -190644;3;0;false;false;;;;;; -190647;2;0;false;false;63;95;191;;; -190649;2;0;false;false;;;;;; -190651;7;1;false;false;127;0;85;;; -190658;1;0;false;false;;;;;; -190659;12;0;false;false;0;0;0;;; -190671;1;0;false;false;;;;;; -190672;1;0;false;false;0;0;0;;; -190673;3;0;false;false;;;;;; -190676;6;1;false;false;127;0;85;;; -190682;1;0;false;false;;;;;; -190683;11;0;false;false;0;0;0;;; -190694;2;0;false;false;;;;;; -190696;1;0;false;false;0;0;0;;; -190697;2;0;false;false;;;;;; -190699;3;0;false;false;63;95;191;;; -190702;3;0;false;false;;;;;; -190705;1;0;false;false;63;95;191;;; -190706;1;0;false;false;;;;;; -190707;7;0;false;false;63;95;191;;; -190714;1;0;false;false;;;;;; -190715;7;0;false;false;63;95;191;;; -190722;1;0;false;false;;;;;; -190723;2;0;false;false;63;95;191;;; -190725;1;0;false;false;;;;;; -190726;3;0;false;false;63;95;191;;; -190729;1;0;false;false;;;;;; -190730;3;0;false;false;63;95;191;;; -190733;1;0;false;false;;;;;; -190734;5;0;false;false;63;95;191;;; -190739;1;0;false;false;;;;;; -190740;5;0;false;false;63;95;191;;; -190745;1;0;false;false;;;;;; -190746;3;0;false;false;63;95;191;;; -190749;1;0;false;false;;;;;; -190750;8;0;false;false;63;95;191;;; -190758;3;0;false;false;;;;;; -190761;1;0;false;false;63;95;191;;; -190762;1;0;false;false;;;;;; -190763;3;0;false;false;127;127;159;;; -190766;3;0;false;false;;;;;; -190769;1;0;false;false;63;95;191;;; -190770;3;0;false;false;;;;;; -190773;1;0;false;false;63;95;191;;; -190774;1;0;false;false;;;;;; -190775;8;1;false;false;127;159;191;;; -190783;4;0;false;false;63;95;191;;; -190787;1;0;false;false;;;;;; -190788;2;0;false;false;63;95;191;;; -190790;1;0;false;false;;;;;; -190791;3;0;false;false;63;95;191;;; -190794;1;0;false;false;;;;;; -190795;2;0;false;false;63;95;191;;; -190797;1;0;false;false;;;;;; -190798;3;0;false;false;63;95;191;;; -190801;1;0;false;false;;;;;; -190802;5;0;false;false;63;95;191;;; -190807;1;0;false;false;;;;;; -190808;2;0;false;false;63;95;191;;; -190810;1;0;false;false;;;;;; -190811;7;0;false;false;63;95;191;;; -190818;3;0;false;false;;;;;; -190821;1;0;false;false;63;95;191;;; -190822;1;0;false;false;;;;;; -190823;5;0;false;false;63;95;191;;; -190828;1;0;false;false;;;;;; -190829;2;0;false;false;63;95;191;;; -190831;1;0;false;false;;;;;; -190832;4;0;false;false;63;95;191;;; -190836;1;0;false;false;;;;;; -190837;2;0;false;false;63;95;191;;; -190839;1;0;false;false;;;;;; -190840;3;0;false;false;63;95;191;;; -190843;1;0;false;false;;;;;; -190844;5;0;false;false;63;95;191;;; -190849;1;0;false;false;;;;;; -190850;2;0;false;false;63;95;191;;; -190852;1;0;false;false;;;;;; -190853;7;0;false;false;63;95;191;;; -190860;3;0;false;false;;;;;; -190863;2;0;false;false;63;95;191;;; -190865;2;0;false;false;;;;;; -190867;7;1;false;false;127;0;85;;; -190874;1;0;false;false;;;;;; -190875;14;0;false;false;0;0;0;;; -190889;3;1;false;false;127;0;85;;; -190892;1;0;false;false;;;;;; -190893;10;0;false;false;0;0;0;;; -190903;1;0;false;false;;;;;; -190904;3;1;false;false;127;0;85;;; -190907;1;0;false;false;;;;;; -190908;9;0;false;false;0;0;0;;; -190917;1;0;false;false;;;;;; -190918;1;0;false;false;0;0;0;;; -190919;3;0;false;false;;;;;; -190922;3;1;false;false;127;0;85;;; -190925;1;0;false;false;;;;;; -190926;18;0;false;false;0;0;0;;; -190944;1;0;false;false;;;;;; -190945;1;0;false;false;0;0;0;;; -190946;1;0;false;false;;;;;; -190947;24;0;false;false;0;0;0;;; -190971;3;0;false;false;;;;;; -190974;3;1;false;false;127;0;85;;; -190977;1;0;false;false;;;;;; -190978;15;0;false;false;0;0;0;;; -190993;1;0;false;false;;;;;; -190994;1;0;false;false;0;0;0;;; -190995;1;0;false;false;;;;;; -190996;20;0;false;false;0;0;0;;; -191016;1;0;false;false;;;;;; -191017;1;0;false;false;0;0;0;;; -191018;1;0;false;false;;;;;; -191019;11;0;false;false;0;0;0;;; -191030;3;0;false;false;;;;;; -191033;7;1;false;false;127;0;85;;; -191040;1;0;false;false;;;;;; -191041;10;0;false;false;0;0;0;;; -191051;1;0;false;false;;;;;; -191052;1;0;false;false;0;0;0;;; -191053;1;0;false;false;;;;;; -191054;9;0;false;false;0;0;0;;; -191063;1;0;false;false;;;;;; -191064;1;0;false;false;0;0;0;;; -191065;1;0;false;false;;;;;; -191066;18;0;false;false;0;0;0;;; -191084;1;0;false;false;;;;;; -191085;2;0;false;false;0;0;0;;; -191087;1;0;false;false;;;;;; -191088;8;0;false;false;0;0;0;;; -191096;1;0;false;false;;;;;; -191097;1;0;false;false;0;0;0;;; -191098;1;0;false;false;;;;;; -191099;16;0;false;false;0;0;0;;; -191115;3;0;false;false;;;;;; -191118;6;1;false;false;127;0;85;;; -191124;1;0;false;false;;;;;; -191125;12;0;false;false;0;0;0;;; -191137;2;0;false;false;;;;;; -191139;1;0;false;false;0;0;0;;; -191140;2;0;false;false;;;;;; -191142;3;0;false;false;63;95;191;;; -191145;3;0;false;false;;;;;; -191148;1;0;false;false;63;95;191;;; -191149;1;0;false;false;;;;;; -191150;7;0;false;false;63;95;191;;; -191157;1;0;false;false;;;;;; -191158;7;0;false;false;63;95;191;;; -191165;1;0;false;false;;;;;; -191166;3;0;false;false;63;95;191;;; -191169;1;0;false;false;;;;;; -191170;6;0;false;false;63;95;191;;; -191176;1;0;false;false;;;;;; -191177;3;0;false;false;63;95;191;;; -191180;1;0;false;false;;;;;; -191181;4;0;false;false;63;95;191;;; -191185;1;0;false;false;;;;;; -191186;4;0;false;false;63;95;191;;; -191190;1;0;false;false;;;;;; -191191;3;0;false;false;63;95;191;;; -191194;1;0;false;false;;;;;; -191195;5;0;false;false;63;95;191;;; -191200;3;0;false;false;;;;;; -191203;1;0;false;false;63;95;191;;; -191204;1;0;false;false;;;;;; -191205;3;0;false;false;127;127;159;;; -191208;3;0;false;false;;;;;; -191211;1;0;false;false;63;95;191;;; -191212;3;0;false;false;;;;;; -191215;1;0;false;false;63;95;191;;; -191216;1;0;false;false;;;;;; -191217;8;1;false;false;127;159;191;;; -191225;4;0;false;false;63;95;191;;; -191229;1;0;false;false;;;;;; -191230;2;0;false;false;63;95;191;;; -191232;1;0;false;false;;;;;; -191233;6;0;false;false;63;95;191;;; -191239;1;0;false;false;;;;;; -191240;3;0;false;false;63;95;191;;; -191243;1;0;false;false;;;;;; -191244;4;0;false;false;63;95;191;;; -191248;1;0;false;false;;;;;; -191249;4;0;false;false;63;95;191;;; -191253;1;0;false;false;;;;;; -191254;3;0;false;false;63;95;191;;; -191257;1;0;false;false;;;;;; -191258;5;0;false;false;63;95;191;;; -191263;1;0;false;false;;;;;; -191264;5;0;false;false;63;95;191;;; -191269;1;0;false;false;;;;;; -191270;2;0;false;false;63;95;191;;; -191272;1;0;false;false;;;;;; -191273;6;0;false;false;63;95;191;;; -191279;1;0;false;false;;;;;; -191280;3;0;false;false;63;95;191;;; -191283;1;0;false;false;;;;;; -191284;4;0;false;false;63;95;191;;; -191288;4;0;false;false;;;;;; -191292;1;0;false;false;63;95;191;;; -191293;2;0;false;false;;;;;; -191295;8;0;false;false;63;95;191;;; -191303;1;0;false;false;;;;;; -191304;5;0;false;false;63;95;191;;; -191309;3;0;false;false;;;;;; -191312;2;0;false;false;63;95;191;;; -191314;2;0;false;false;;;;;; -191316;7;1;false;false;127;0;85;;; -191323;1;0;false;false;;;;;; -191324;14;0;false;false;0;0;0;;; -191338;1;0;false;false;;;;;; -191339;1;0;false;false;0;0;0;;; -191340;3;0;false;false;;;;;; -191343;6;1;false;false;127;0;85;;; -191349;1;0;false;false;;;;;; -191350;11;0;false;false;0;0;0;;; -191361;1;0;false;false;;;;;; -191362;1;0;false;false;0;0;0;;; -191363;1;0;false;false;;;;;; -191364;11;0;false;false;0;0;0;;; -191375;1;0;false;false;;;;;; -191376;2;0;false;false;0;0;0;;; -191378;1;0;false;false;;;;;; -191379;2;0;false;false;0;0;0;;; -191381;2;0;false;false;;;;;; -191383;1;0;false;false;0;0;0;;; -191384;2;0;false;false;;;;;; -191386;3;0;false;false;63;95;191;;; -191389;3;0;false;false;;;;;; -191392;1;0;false;false;63;95;191;;; -191393;1;0;false;false;;;;;; -191394;5;0;false;false;63;95;191;;; -191399;1;0;false;false;;;;;; -191400;3;0;false;false;63;95;191;;; -191403;1;0;false;false;;;;;; -191404;9;0;false;false;63;95;191;;; -191413;1;0;false;false;;;;;; -191414;6;0;false;false;63;95;191;;; -191420;1;0;false;false;;;;;; -191421;6;0;false;false;63;95;191;;; -191427;1;0;false;false;;;;;; -191428;14;0;false;false;63;95;191;;; -191442;1;0;false;false;;;;;; -191443;4;0;false;false;63;95;191;;; -191447;1;0;false;false;;;;;; -191448;2;0;false;false;63;95;191;;; -191450;1;0;false;false;;;;;; -191451;7;0;false;false;63;95;191;;; -191458;1;0;false;false;;;;;; -191459;2;0;false;false;63;95;191;;; -191461;4;0;false;false;;;;;; -191465;1;0;false;false;63;95;191;;; -191466;1;0;false;false;;;;;; -191467;3;0;false;false;63;95;191;;; -191470;1;0;false;false;;;;;; -191471;5;0;false;false;63;95;191;;; -191476;1;0;false;false;;;;;; -191477;3;0;false;false;63;95;191;;; -191480;1;0;false;false;;;;;; -191481;4;0;false;false;63;95;191;;; -191485;1;0;false;false;;;;;; -191486;1;0;false;false;63;95;191;;; -191487;1;0;false;false;;;;;; -191488;6;0;false;false;63;95;191;;; -191494;1;0;false;false;;;;;; -191495;6;0;false;false;63;95;191;;; -191501;3;0;false;false;;;;;; -191504;1;0;false;false;63;95;191;;; -191505;1;0;false;false;;;;;; -191506;3;0;false;false;127;127;159;;; -191509;3;0;false;false;;;;;; -191512;1;0;false;false;63;95;191;;; -191513;3;0;false;false;;;;;; -191516;1;0;false;false;63;95;191;;; -191517;1;0;false;false;;;;;; -191518;7;1;false;false;127;159;191;;; -191525;5;0;false;false;63;95;191;;; -191530;1;0;false;false;;;;;; -191531;3;0;false;false;63;95;191;;; -191534;1;0;false;false;;;;;; -191535;4;0;false;false;63;95;191;;; -191539;1;0;false;false;;;;;; -191540;6;0;false;false;63;95;191;;; -191546;1;0;false;false;;;;;; -191547;6;0;false;false;63;95;191;;; -191553;4;0;false;false;;;;;; -191557;1;0;false;false;63;95;191;;; -191558;1;0;false;false;;;;;; -191559;4;0;false;false;127;127;159;;; -191563;3;0;false;false;;;;;; -191566;1;0;false;false;63;95;191;;; -191567;1;0;false;false;;;;;; -191568;4;0;false;false;127;127;159;;; -191572;11;0;false;false;63;95;191;;; -191583;1;0;false;false;;;;;; -191584;1;0;false;false;127;127;159;;; -191585;1;0;false;false;;;;;; -191586;3;0;false;false;63;95;191;;; -191589;1;0;false;false;;;;;; -191590;7;0;false;false;63;95;191;;; -191597;1;0;false;false;;;;;; -191598;5;0;false;false;63;95;191;;; -191603;1;0;false;false;;;;;; -191604;6;0;false;false;63;95;191;;; -191610;5;0;false;false;127;127;159;;; -191615;3;0;false;false;;;;;; -191618;1;0;false;false;63;95;191;;; -191619;2;0;false;false;;;;;; -191621;4;0;false;false;127;127;159;;; -191625;9;0;false;false;63;95;191;;; -191634;1;0;false;false;;;;;; -191635;1;0;false;false;127;127;159;;; -191636;1;0;false;false;;;;;; -191637;3;0;false;false;63;95;191;;; -191640;1;0;false;false;;;;;; -191641;7;0;false;false;63;95;191;;; -191648;1;0;false;false;;;;;; -191649;3;0;false;false;63;95;191;;; -191652;1;0;false;false;;;;;; -191653;6;0;false;false;63;95;191;;; -191659;5;0;false;false;127;127;159;;; -191664;3;0;false;false;;;;;; -191667;1;0;false;false;63;95;191;;; -191668;2;0;false;false;;;;;; -191670;4;0;false;false;127;127;159;;; -191674;10;0;false;false;63;95;191;;; -191684;1;0;false;false;;;;;; -191685;1;0;false;false;127;127;159;;; -191686;1;0;false;false;;;;;; -191687;3;0;false;false;63;95;191;;; -191690;1;0;false;false;;;;;; -191691;3;0;false;false;63;95;191;;; -191694;1;0;false;false;;;;;; -191695;4;0;false;false;63;95;191;;; -191699;5;0;false;false;127;127;159;;; -191704;3;0;false;false;;;;;; -191707;1;0;false;false;63;95;191;;; -191708;1;0;false;false;;;;;; -191709;5;0;false;false;127;127;159;;; -191714;3;0;false;false;;;;;; -191717;1;0;false;false;63;95;191;;; -191718;1;0;false;false;;;;;; -191719;7;1;false;false;127;159;191;;; -191726;11;0;false;false;63;95;191;;; -191737;1;0;false;false;;;;;; -191738;7;0;false;false;63;95;191;;; -191745;1;0;false;false;;;;;; -191746;2;0;false;false;63;95;191;;; -191748;1;0;false;false;;;;;; -191749;3;0;false;false;63;95;191;;; -191752;1;0;false;false;;;;;; -191753;2;0;false;false;63;95;191;;; -191755;1;0;false;false;;;;;; -191756;5;0;false;false;63;95;191;;; -191761;1;0;false;false;;;;;; -191762;6;0;false;false;63;95;191;;; -191768;1;0;false;false;;;;;; -191769;2;0;false;false;63;95;191;;; -191771;1;0;false;false;;;;;; -191772;3;0;false;false;63;95;191;;; -191775;1;0;false;false;;;;;; -191776;6;0;false;false;63;95;191;;; -191782;3;0;false;false;;;;;; -191785;1;0;false;false;63;95;191;;; -191786;1;0;false;false;;;;;; -191787;3;0;false;false;63;95;191;;; -191790;1;0;false;false;;;;;; -191791;3;0;false;false;63;95;191;;; -191794;1;0;false;false;;;;;; -191795;4;0;false;false;63;95;191;;; -191799;3;0;false;false;;;;;; -191802;2;0;false;false;63;95;191;;; -191804;2;0;false;false;;;;;; -191806;4;1;false;false;127;0;85;;; -191810;1;0;false;false;;;;;; -191811;19;0;false;false;0;0;0;;; -191830;1;0;false;false;;;;;; -191831;6;0;false;false;0;0;0;;; -191837;1;0;false;false;;;;;; -191838;7;1;false;false;127;0;85;;; -191845;1;0;false;false;;;;;; -191846;12;0;false;false;0;0;0;;; -191858;1;0;false;false;;;;;; -191859;1;0;false;false;0;0;0;;; -191860;3;0;false;false;;;;;; -191863;10;0;false;false;0;0;0;;; -191873;1;0;false;false;;;;;; -191874;1;0;false;false;0;0;0;;; -191875;1;0;false;false;;;;;; -191876;4;1;false;false;127;0;85;;; -191880;1;0;false;false;0;0;0;;; -191881;3;0;false;false;;;;;; -191884;27;0;false;false;0;0;0;;; -191911;1;0;false;false;;;;;; -191912;7;0;false;false;0;0;0;;; -191919;3;0;false;false;;;;;; -191922;2;1;false;false;127;0;85;;; -191924;1;0;false;false;;;;;; -191925;12;0;false;false;0;0;0;;; -191937;1;0;false;false;;;;;; -191938;1;0;false;false;0;0;0;;; -191939;4;0;false;false;;;;;; -191943;15;0;false;false;0;0;0;;; -191958;1;0;false;false;;;;;; -191959;15;0;false;false;0;0;0;;; -191974;1;0;false;false;;;;;; -191975;1;0;false;false;0;0;0;;; -191976;1;0;false;false;;;;;; -191977;4;1;false;false;127;0;85;;; -191981;1;0;false;false;0;0;0;;; -191982;4;0;false;false;;;;;; -191986;3;1;false;false;127;0;85;;; -191989;1;0;false;false;;;;;; -191990;14;0;false;false;0;0;0;;; -192004;1;0;false;false;;;;;; -192005;1;0;false;false;0;0;0;;; -192006;1;0;false;false;;;;;; -192007;9;0;false;false;0;0;0;;; -192016;1;0;false;false;;;;;; -192017;1;0;false;false;0;0;0;;; -192018;1;0;false;false;;;;;; -192019;12;0;false;false;0;0;0;;; -192031;4;0;false;false;;;;;; -192035;2;1;false;false;127;0;85;;; -192037;1;0;false;false;;;;;; -192038;29;0;false;false;0;0;0;;; -192067;1;0;false;false;;;;;; -192068;1;0;false;false;0;0;0;;; -192069;5;0;false;false;;;;;; -192074;15;0;false;false;0;0;0;;; -192089;1;0;false;false;;;;;; -192090;1;0;false;false;0;0;0;;; -192091;1;0;false;false;;;;;; -192092;3;1;false;false;127;0;85;;; -192095;1;0;false;false;;;;;; -192096;32;0;false;false;0;0;0;;; -192128;5;0;false;false;;;;;; -192133;21;0;false;false;0;0;0;;; -192154;1;0;false;false;;;;;; -192155;1;0;false;false;0;0;0;;; -192156;1;0;false;false;;;;;; -192157;12;0;false;false;0;0;0;;; -192169;5;0;false;false;;;;;; -192174;19;0;false;false;0;0;0;;; -192193;1;0;false;false;;;;;; -192194;1;0;false;false;0;0;0;;; -192195;1;0;false;false;;;;;; -192196;11;0;false;false;0;0;0;;; -192207;1;0;false;false;;;;;; -192208;1;0;false;false;0;0;0;;; -192209;1;0;false;false;;;;;; -192210;20;0;false;false;0;0;0;;; -192230;5;0;false;false;;;;;; -192235;20;0;false;false;0;0;0;;; -192255;1;0;false;false;;;;;; -192256;1;0;false;false;0;0;0;;; -192257;1;0;false;false;;;;;; -192258;33;0;false;false;0;0;0;;; -192291;1;0;false;false;;;;;; -192292;16;0;false;false;0;0;0;;; -192308;4;0;false;false;;;;;; -192312;1;0;false;false;0;0;0;;; -192313;4;0;false;false;;;;;; -192317;2;1;false;false;127;0;85;;; -192319;1;0;false;false;;;;;; -192320;13;0;false;false;0;0;0;;; -192333;1;0;false;false;;;;;; -192334;1;0;false;false;0;0;0;;; -192335;5;0;false;false;;;;;; -192340;69;0;false;false;63;127;95;;; -192409;3;0;false;false;;;;;; -192412;2;1;false;false;127;0;85;;; -192414;1;0;false;false;;;;;; -192415;20;0;false;false;0;0;0;;; -192435;1;0;false;false;;;;;; -192436;2;0;false;false;0;0;0;;; -192438;1;0;false;false;;;;;; -192439;2;0;false;false;0;0;0;;; -192441;1;0;false;false;;;;;; -192442;1;0;false;false;0;0;0;;; -192443;6;0;false;false;;;;;; -192449;3;1;false;false;127;0;85;;; -192452;1;0;false;false;;;;;; -192453;9;0;false;false;0;0;0;;; -192462;1;0;false;false;;;;;; -192463;1;0;false;false;0;0;0;;; -192464;1;0;false;false;;;;;; -192465;37;0;false;false;0;0;0;;; -192502;6;0;false;false;;;;;; -192508;3;1;false;false;127;0;85;;; -192511;1;0;false;false;;;;;; -192512;10;0;false;false;0;0;0;;; -192522;1;0;false;false;;;;;; -192523;1;0;false;false;0;0;0;;; -192524;1;0;false;false;;;;;; -192525;35;0;false;false;0;0;0;;; -192560;6;0;false;false;;;;;; -192566;6;0;false;false;0;0;0;;; -192572;1;0;false;false;;;;;; -192573;8;0;false;false;0;0;0;;; -192581;1;0;false;false;;;;;; -192582;1;0;false;false;0;0;0;;; -192583;1;0;false;false;;;;;; -192584;27;0;false;false;0;0;0;;; -192611;6;0;false;false;;;;;; -192617;10;0;false;false;0;0;0;;; -192627;1;0;false;false;;;;;; -192628;6;0;false;false;0;0;0;;; -192634;1;0;false;false;;;;;; -192635;1;0;false;false;0;0;0;;; -192636;1;0;false;false;;;;;; -192637;32;0;false;false;0;0;0;;; -192669;1;0;false;false;;;;;; -192670;12;0;false;false;0;0;0;;; -192682;6;0;false;false;;;;;; -192688;3;1;false;false;127;0;85;;; -192691;1;0;false;false;;;;;; -192692;10;0;false;false;0;0;0;;; -192702;1;0;false;false;;;;;; -192703;1;0;false;false;0;0;0;;; -192704;1;0;false;false;;;;;; -192705;27;0;false;false;0;0;0;;; -192732;1;0;false;false;;;;;; -192733;1;0;false;false;0;0;0;;; -192734;1;0;false;false;;;;;; -192735;12;0;false;false;0;0;0;;; -192747;6;0;false;false;;;;;; -192753;3;1;false;false;127;0;85;;; -192756;1;0;false;false;;;;;; -192757;12;0;false;false;0;0;0;;; -192769;1;0;false;false;;;;;; -192770;1;0;false;false;0;0;0;;; -192771;1;0;false;false;;;;;; -192772;35;0;false;false;0;0;0;;; -192807;6;0;false;false;;;;;; -192813;2;1;false;false;127;0;85;;; -192815;1;0;false;false;;;;;; -192816;10;0;false;false;0;0;0;;; -192826;1;0;false;false;;;;;; -192827;2;0;false;false;0;0;0;;; -192829;1;0;false;false;;;;;; -192830;13;0;false;false;0;0;0;;; -192843;1;0;false;false;;;;;; -192844;1;0;false;false;0;0;0;;; -192845;7;0;false;false;;;;;; -192852;35;0;false;false;0;0;0;;; -192887;7;0;false;false;;;;;; -192894;10;0;false;false;0;0;0;;; -192904;1;0;false;false;;;;;; -192905;1;0;false;false;0;0;0;;; -192906;1;0;false;false;;;;;; -192907;38;0;false;false;0;0;0;;; -192945;7;0;false;false;;;;;; -192952;8;0;false;false;0;0;0;;; -192960;1;0;false;false;;;;;; -192961;1;0;false;false;0;0;0;;; -192962;1;0;false;false;;;;;; -192963;30;0;false;false;0;0;0;;; -192993;7;0;false;false;;;;;; -193000;6;0;false;false;0;0;0;;; -193006;1;0;false;false;;;;;; -193007;1;0;false;false;0;0;0;;; -193008;1;0;false;false;;;;;; -193009;32;0;false;false;0;0;0;;; -193041;1;0;false;false;;;;;; -193042;12;0;false;false;0;0;0;;; -193054;6;0;false;false;;;;;; -193060;1;0;false;false;0;0;0;;; -193061;6;0;false;false;;;;;; -193067;3;1;false;false;127;0;85;;; -193070;1;0;false;false;;;;;; -193071;8;0;false;false;0;0;0;;; -193079;1;0;false;false;;;;;; -193080;1;0;false;false;0;0;0;;; -193081;1;0;false;false;;;;;; -193082;25;0;false;false;0;0;0;;; -193107;1;0;false;false;;;;;; -193108;1;0;false;false;0;0;0;;; -193109;1;0;false;false;;;;;; -193110;12;0;false;false;0;0;0;;; -193122;6;0;false;false;;;;;; -193128;35;0;false;false;0;0;0;;; -193163;6;0;false;false;;;;;; -193169;9;0;false;false;0;0;0;;; -193178;1;0;false;false;;;;;; -193179;1;0;false;false;0;0;0;;; -193180;1;0;false;false;;;;;; -193181;10;0;false;false;0;0;0;;; -193191;1;0;false;false;;;;;; -193192;2;0;false;false;0;0;0;;; -193194;1;0;false;false;;;;;; -193195;9;0;false;false;0;0;0;;; -193204;5;0;false;false;;;;;; -193209;1;0;false;false;0;0;0;;; -193210;4;0;false;false;;;;;; -193214;1;0;false;false;0;0;0;;; -193215;4;0;false;false;;;;;; -193219;37;0;false;false;0;0;0;;; -193256;1;0;false;false;;;;;; -193257;15;0;false;false;0;0;0;;; -193272;1;0;false;false;;;;;; -193273;12;0;false;false;0;0;0;;; -193285;4;0;false;false;;;;;; -193289;62;0;false;false;63;127;95;;; -193351;2;0;false;false;;;;;; -193353;18;0;false;false;63;127;95;;; -193371;2;0;false;false;;;;;; -193373;2;1;false;false;127;0;85;;; -193375;1;0;false;false;;;;;; -193376;13;0;false;false;0;0;0;;; -193389;1;0;false;false;;;;;; -193390;1;0;false;false;0;0;0;;; -193391;5;0;false;false;;;;;; -193396;52;0;false;false;63;127;95;;; -193448;3;0;false;false;;;;;; -193451;32;0;false;false;0;0;0;;; -193483;1;0;false;false;;;;;; -193484;1;0;false;false;0;0;0;;; -193485;1;0;false;false;;;;;; -193486;20;0;false;false;0;0;0;;; -193506;1;0;false;false;;;;;; -193507;2;0;false;false;0;0;0;;; -193509;1;0;false;false;;;;;; -193510;4;1;false;false;127;0;85;;; -193514;2;0;false;false;0;0;0;;; -193516;5;0;false;false;;;;;; -193521;12;0;false;false;0;0;0;;; -193533;4;0;false;false;;;;;; -193537;1;0;false;false;0;0;0;;; -193538;4;0;false;false;;;;;; -193542;23;0;false;false;0;0;0;;; -193565;4;0;false;false;;;;;; -193569;2;1;false;false;127;0;85;;; -193571;1;0;false;false;;;;;; -193572;29;0;false;false;0;0;0;;; -193601;1;0;false;false;;;;;; -193602;1;0;false;false;0;0;0;;; -193603;5;0;false;false;;;;;; -193608;31;0;false;false;0;0;0;;; -193639;1;0;false;false;;;;;; -193640;17;0;false;false;0;0;0;;; -193657;4;0;false;false;;;;;; -193661;1;0;false;false;0;0;0;;; -193662;3;0;false;false;;;;;; -193665;1;0;false;false;0;0;0;;; -193666;2;0;false;false;;;;;; -193668;1;0;false;false;0;0;0;;; -193669;2;0;false;false;;;;;; -193671;3;0;false;false;63;95;191;;; -193674;4;0;false;false;;;;;; -193678;1;0;false;false;63;95;191;;; -193679;1;0;false;false;;;;;; -193680;8;0;false;false;63;95;191;;; -193688;1;0;false;false;;;;;; -193689;3;0;false;false;63;95;191;;; -193692;1;0;false;false;;;;;; -193693;9;0;false;false;63;95;191;;; -193702;1;0;false;false;;;;;; -193703;4;0;false;false;63;95;191;;; -193707;1;0;false;false;;;;;; -193708;3;0;false;false;63;95;191;;; -193711;1;0;false;false;;;;;; -193712;4;0;false;false;63;95;191;;; -193716;1;0;false;false;;;;;; -193717;2;0;false;false;63;95;191;;; -193719;1;0;false;false;;;;;; -193720;3;0;false;false;63;95;191;;; -193723;1;0;false;false;;;;;; -193724;6;0;false;false;127;127;159;;; -193730;13;0;false;false;63;95;191;;; -193743;7;0;false;false;127;127;159;;; -193750;5;0;false;false;;;;;; -193755;1;0;false;false;63;95;191;;; -193756;1;0;false;false;;;;;; -193757;9;0;false;false;63;95;191;;; -193766;2;0;false;false;;;;;; -193768;3;0;false;false;63;95;191;;; -193771;1;0;false;false;;;;;; -193772;2;0;false;false;63;95;191;;; -193774;1;0;false;false;;;;;; -193775;5;0;false;false;63;95;191;;; -193780;1;0;false;false;;;;;; -193781;2;0;false;false;63;95;191;;; -193783;1;0;false;false;;;;;; -193784;2;0;false;false;63;95;191;;; -193786;1;0;false;false;;;;;; -193787;10;0;false;false;63;95;191;;; -193797;2;0;false;false;;;;;; -193799;7;0;false;false;63;95;191;;; -193806;1;0;false;false;;;;;; -193807;3;0;false;false;63;95;191;;; -193810;1;0;false;false;;;;;; -193811;4;0;false;false;63;95;191;;; -193815;1;0;false;false;;;;;; -193816;2;0;false;false;63;95;191;;; -193818;1;0;false;false;;;;;; -193819;3;0;false;false;63;95;191;;; -193822;1;0;false;false;;;;;; -193823;7;0;false;false;63;95;191;;; -193830;4;0;false;false;;;;;; -193834;1;0;false;false;63;95;191;;; -193835;1;0;false;false;;;;;; -193836;5;0;false;false;63;95;191;;; -193841;1;0;false;false;;;;;; -193842;7;0;false;false;63;95;191;;; -193849;3;0;false;false;;;;;; -193852;2;0;false;false;63;95;191;;; -193854;1;0;false;false;;;;;; -193855;3;0;false;false;63;95;191;;; -193858;1;0;false;false;;;;;; -193859;6;0;false;false;63;95;191;;; -193865;1;0;false;false;;;;;; -193866;3;0;false;false;63;95;191;;; -193869;1;0;false;false;;;;;; -193870;3;0;false;false;63;95;191;;; -193873;1;0;false;false;;;;;; -193874;10;0;false;false;63;95;191;;; -193884;1;0;false;false;;;;;; -193885;5;0;false;false;63;95;191;;; -193890;1;0;false;false;;;;;; -193891;3;0;false;false;63;95;191;;; -193894;1;0;false;false;;;;;; -193895;3;0;false;false;63;95;191;;; -193898;4;0;false;false;;;;;; -193902;1;0;false;false;63;95;191;;; -193903;1;0;false;false;;;;;; -193904;9;0;false;false;63;95;191;;; -193913;1;0;false;false;;;;;; -193914;4;0;false;false;63;95;191;;; -193918;1;0;false;false;;;;;; -193919;8;0;false;false;63;95;191;;; -193927;1;0;false;false;;;;;; -193928;4;0;false;false;63;95;191;;; -193932;1;0;false;false;;;;;; -193933;4;0;false;false;63;95;191;;; -193937;1;0;false;false;;;;;; -193938;3;0;false;false;63;95;191;;; -193941;1;0;false;false;;;;;; -193942;5;0;false;false;63;95;191;;; -193947;1;0;false;false;;;;;; -193948;4;0;false;false;63;95;191;;; -193952;1;0;false;false;;;;;; -193953;3;0;false;false;63;95;191;;; -193956;1;0;false;false;;;;;; -193957;5;0;false;false;63;95;191;;; -193962;1;0;false;false;;;;;; -193963;4;0;false;false;63;95;191;;; -193967;1;0;false;false;;;;;; -193968;7;0;false;false;63;95;191;;; -193975;3;0;false;false;;;;;; -193978;1;0;false;false;63;95;191;;; -193979;1;0;false;false;;;;;; -193980;4;0;false;false;63;95;191;;; -193984;1;0;false;false;;;;;; -193985;10;0;false;false;63;95;191;;; -193995;1;0;false;false;;;;;; -193996;2;0;false;false;63;95;191;;; -193998;2;0;false;false;;;;;; -194000;8;0;false;false;63;95;191;;; -194008;1;0;false;false;;;;;; -194009;2;0;false;false;63;95;191;;; -194011;1;0;false;false;;;;;; -194012;3;0;false;false;63;95;191;;; -194015;1;0;false;false;;;;;; -194016;7;0;false;false;63;95;191;;; -194023;3;0;false;false;;;;;; -194026;1;0;false;false;63;95;191;;; -194027;1;0;false;false;;;;;; -194028;3;0;false;false;127;127;159;;; -194031;3;0;false;false;;;;;; -194034;1;0;false;false;63;95;191;;; -194035;3;0;false;false;;;;;; -194038;1;0;false;false;63;95;191;;; -194039;1;0;false;false;;;;;; -194040;11;1;false;false;127;159;191;;; -194051;12;0;false;false;63;95;191;;; -194063;1;0;false;false;;;;;; -194064;4;0;false;false;127;127;159;;; -194068;3;0;false;false;;;;;; -194071;1;0;false;false;63;95;191;;; -194072;4;0;false;false;;;;;; -194076;4;0;false;false;127;127;159;;; -194080;21;0;false;false;63;95;191;;; -194101;1;0;false;false;;;;;; -194102;1;0;false;false;127;127;159;;; -194103;1;0;false;false;;;;;; -194104;2;0;false;false;63;95;191;;; -194106;1;0;false;false;;;;;; -194107;3;0;false;false;63;95;191;;; -194110;1;0;false;false;;;;;; -194111;8;0;false;false;63;95;191;;; -194119;1;0;false;false;;;;;; -194120;3;0;false;false;63;95;191;;; -194123;1;0;false;false;;;;;; -194124;4;0;false;false;63;95;191;;; -194128;1;0;false;false;;;;;; -194129;8;0;false;false;63;95;191;;; -194137;5;0;false;false;127;127;159;;; -194142;3;0;false;false;;;;;; -194145;1;0;false;false;63;95;191;;; -194146;4;0;false;false;;;;;; -194150;4;0;false;false;127;127;159;;; -194154;27;0;false;false;63;95;191;;; -194181;1;0;false;false;;;;;; -194182;1;0;false;false;127;127;159;;; -194183;1;0;false;false;;;;;; -194184;2;0;false;false;63;95;191;;; -194186;1;0;false;false;;;;;; -194187;3;0;false;false;63;95;191;;; -194190;1;0;false;false;;;;;; -194191;6;0;false;false;63;95;191;;; -194197;1;0;false;false;;;;;; -194198;4;0;false;false;63;95;191;;; -194202;1;0;false;false;;;;;; -194203;3;0;false;false;63;95;191;;; -194206;1;0;false;false;;;;;; -194207;6;0;false;false;63;95;191;;; -194213;1;0;false;false;;;;;; -194214;4;0;false;false;63;95;191;;; -194218;1;0;false;false;;;;;; -194219;7;0;false;false;63;95;191;;; -194226;1;0;false;false;;;;;; -194227;3;0;false;false;63;95;191;;; -194230;1;0;false;false;;;;;; -194231;8;0;false;false;63;95;191;;; -194239;5;0;false;false;127;127;159;;; -194244;3;0;false;false;;;;;; -194247;1;0;false;false;63;95;191;;; -194248;1;0;false;false;;;;;; -194249;5;0;false;false;127;127;159;;; -194254;3;0;false;false;;;;;; -194257;2;0;false;false;63;95;191;;; -194259;2;0;false;false;;;;;; -194261;6;1;false;false;127;0;85;;; -194267;1;0;false;false;;;;;; -194268;4;1;false;false;127;0;85;;; -194272;1;0;false;false;;;;;; -194273;8;0;false;false;0;0;0;;; -194281;3;0;false;false;;;;;; -194284;14;0;false;false;0;0;0;;; -194298;4;0;false;false;;;;;; -194302;6;0;false;false;0;0;0;;; -194308;1;0;false;false;;;;;; -194309;5;0;false;false;0;0;0;;; -194314;3;0;false;false;;;;;; -194317;4;0;false;false;0;0;0;;; -194321;1;0;false;false;;;;;; -194322;1;0;false;false;0;0;0;;; -194323;1;0;false;false;;;;;; -194324;8;0;false;false;0;0;0;;; -194332;1;0;false;false;;;;;; -194333;35;0;false;false;0;0;0;;; -194368;3;0;false;false;;;;;; -194371;2;1;false;false;127;0;85;;; -194373;1;0;false;false;;;;;; -194374;5;0;false;false;0;0;0;;; -194379;1;0;false;false;;;;;; -194380;2;0;false;false;0;0;0;;; -194382;1;0;false;false;;;;;; -194383;4;1;false;false;127;0;85;;; -194387;1;0;false;false;;;;;; -194388;2;0;false;false;0;0;0;;; -194390;1;0;false;false;;;;;; -194391;13;0;false;false;0;0;0;;; -194404;1;0;false;false;;;;;; -194405;1;0;false;false;0;0;0;;; -194406;1;0;false;false;;;;;; -194407;2;0;false;false;0;0;0;;; -194409;1;0;false;false;;;;;; -194410;1;0;false;false;0;0;0;;; -194411;4;0;false;false;;;;;; -194415;5;0;false;false;0;0;0;;; -194420;1;0;false;false;;;;;; -194421;5;0;false;false;0;0;0;;; -194426;1;0;false;false;;;;;; -194427;1;0;false;false;0;0;0;;; -194428;1;0;false;false;;;;;; -194429;3;1;false;false;127;0;85;;; -194432;1;0;false;false;;;;;; -194433;8;0;false;false;0;0;0;;; -194441;4;0;false;false;;;;;; -194445;11;0;false;false;0;0;0;;; -194456;1;0;false;false;;;;;; -194457;1;0;false;false;0;0;0;;; -194458;1;0;false;false;;;;;; -194459;12;0;false;false;0;0;0;;; -194471;4;0;false;false;;;;;; -194475;9;0;false;false;0;0;0;;; -194484;1;0;false;false;;;;;; -194485;1;0;false;false;0;0;0;;; -194486;1;0;false;false;;;;;; -194487;12;0;false;false;0;0;0;;; -194499;4;0;false;false;;;;;; -194503;10;0;false;false;0;0;0;;; -194513;1;0;false;false;;;;;; -194514;1;0;false;false;0;0;0;;; -194515;1;0;false;false;;;;;; -194516;28;0;false;false;0;0;0;;; -194544;4;0;false;false;;;;;; -194548;20;0;false;false;0;0;0;;; -194568;3;0;false;false;;;;;; -194571;1;0;false;false;0;0;0;;; -194572;2;0;false;false;;;;;; -194574;1;0;false;false;0;0;0;;; -194575;2;0;false;false;;;;;; -194577;3;0;false;false;63;95;191;;; -194580;3;0;false;false;;;;;; -194583;1;0;false;false;63;95;191;;; -194584;1;0;false;false;;;;;; -194585;6;0;false;false;63;95;191;;; -194591;1;0;false;false;;;;;; -194592;3;0;false;false;63;95;191;;; -194595;1;0;false;false;;;;;; -194596;9;0;false;false;63;95;191;;; -194605;1;0;false;false;;;;;; -194606;5;0;false;false;63;95;191;;; -194611;2;0;false;false;;;;;; -194613;6;0;false;false;63;95;191;;; -194619;1;0;false;false;;;;;; -194620;3;0;false;false;63;95;191;;; -194623;1;0;false;false;;;;;; -194624;2;0;false;false;63;95;191;;; -194626;1;0;false;false;;;;;; -194627;3;0;false;false;63;95;191;;; -194630;1;0;false;false;;;;;; -194631;3;0;false;false;63;95;191;;; -194634;1;0;false;false;;;;;; -194635;6;0;false;false;63;95;191;;; -194641;1;0;false;false;;;;;; -194642;2;0;false;false;63;95;191;;; -194644;1;0;false;false;;;;;; -194645;7;0;false;false;63;95;191;;; -194652;3;0;false;false;;;;;; -194655;1;0;false;false;63;95;191;;; -194656;1;0;false;false;;;;;; -194657;6;0;false;false;63;95;191;;; -194663;1;0;false;false;;;;;; -194664;8;0;false;false;63;95;191;;; -194672;3;0;false;false;;;;;; -194675;1;0;false;false;63;95;191;;; -194676;1;0;false;false;;;;;; -194677;3;0;false;false;127;127;159;;; -194680;3;0;false;false;;;;;; -194683;1;0;false;false;63;95;191;;; -194684;3;0;false;false;;;;;; -194687;1;0;false;false;63;95;191;;; -194688;1;0;false;false;;;;;; -194689;7;1;false;false;127;159;191;;; -194696;2;0;false;false;63;95;191;;; -194698;1;0;false;false;;;;;; -194699;2;0;false;false;63;95;191;;; -194701;1;0;false;false;;;;;; -194702;2;0;false;false;63;95;191;;; -194704;1;0;false;false;;;;;; -194705;6;0;false;false;63;95;191;;; -194711;1;0;false;false;;;;;; -194712;2;0;false;false;63;95;191;;; -194714;4;0;false;false;;;;;; -194718;1;0;false;false;63;95;191;;; -194719;1;0;false;false;;;;;; -194720;7;1;false;false;127;159;191;;; -194727;9;0;false;false;63;95;191;;; -194736;1;0;false;false;;;;;; -194737;5;0;false;false;63;95;191;;; -194742;1;0;false;false;;;;;; -194743;4;0;false;false;63;95;191;;; -194747;1;0;false;false;;;;;; -194748;2;0;false;false;63;95;191;;; -194750;1;0;false;false;;;;;; -194751;6;0;false;false;63;95;191;;; -194757;3;0;false;false;;;;;; -194760;1;0;false;false;63;95;191;;; -194761;1;0;false;false;;;;;; -194762;7;1;false;false;127;159;191;;; -194769;6;0;false;false;63;95;191;;; -194775;1;0;false;false;;;;;; -194776;1;0;false;false;63;95;191;;; -194777;1;0;false;false;;;;;; -194778;5;0;false;false;63;95;191;;; -194783;1;0;false;false;;;;;; -194784;8;0;false;false;63;95;191;;; -194792;1;0;false;false;;;;;; -194793;2;0;false;false;63;95;191;;; -194795;1;0;false;false;;;;;; -194796;5;0;false;false;63;95;191;;; -194801;1;0;false;false;;;;;; -194802;9;0;false;false;63;95;191;;; -194811;1;0;false;false;;;;;; -194812;2;0;false;false;63;95;191;;; -194814;3;0;false;false;;;;;; -194817;1;0;false;false;63;95;191;;; -194818;1;0;false;false;;;;;; -194819;7;1;false;false;127;159;191;;; -194826;12;0;false;false;63;95;191;;; -194838;1;0;false;false;;;;;; -194839;12;0;false;false;63;95;191;;; -194851;1;0;false;false;;;;;; -194852;6;0;false;false;63;95;191;;; -194858;1;0;false;false;;;;;; -194859;4;0;false;false;63;95;191;;; -194863;1;0;false;false;;;;;; -194864;4;0;false;false;63;95;191;;; -194868;1;0;false;false;;;;;; -194869;5;0;false;false;63;95;191;;; -194874;1;0;false;false;;;;;; -194875;2;0;false;false;63;95;191;;; -194877;1;0;false;false;;;;;; -194878;2;0;false;false;63;95;191;;; -194880;1;0;false;false;;;;;; -194881;6;0;false;false;63;95;191;;; -194887;1;0;false;false;;;;;; -194888;4;0;false;false;63;95;191;;; -194892;1;0;false;false;;;;;; -194893;5;0;false;false;63;95;191;;; -194898;3;0;false;false;;;;;; -194901;2;0;false;false;63;95;191;;; -194903;2;0;false;false;;;;;; -194905;4;1;false;false;127;0;85;;; -194909;1;0;false;false;;;;;; -194910;15;0;false;false;0;0;0;;; -194925;1;0;false;false;;;;;; -194926;3;0;false;false;0;0;0;;; -194929;3;1;false;false;127;0;85;;; -194932;1;0;false;false;;;;;; -194933;10;0;false;false;0;0;0;;; -194943;3;1;false;false;127;0;85;;; -194946;1;0;false;false;;;;;; -194947;7;0;false;false;0;0;0;;; -194954;1;0;false;false;;;;;; -194955;3;1;false;false;127;0;85;;; -194958;1;0;false;false;;;;;; -194959;13;0;false;false;0;0;0;;; -194972;1;0;false;false;;;;;; -194973;1;0;false;false;0;0;0;;; -194974;3;0;false;false;;;;;; -194977;9;0;false;false;0;0;0;;; -194986;1;0;false;false;;;;;; -194987;10;0;false;false;0;0;0;;; -194997;1;0;false;false;;;;;; -194998;1;0;false;false;0;0;0;;; -194999;1;0;false;false;;;;;; -195000;16;0;false;false;0;0;0;;; -195016;3;0;false;false;;;;;; -195019;5;0;false;false;0;0;0;;; -195024;1;0;false;false;;;;;; -195025;10;0;false;false;0;0;0;;; -195035;1;0;false;false;;;;;; -195036;1;0;false;false;0;0;0;;; -195037;1;0;false;false;;;;;; -195038;16;0;false;false;0;0;0;;; -195054;6;0;false;false;;;;;; -195060;67;0;false;false;63;127;95;;; -195127;1;0;false;false;;;;;; -195128;39;0;false;false;63;127;95;;; -195167;1;0;false;false;;;;;; -195168;2;1;false;false;127;0;85;;; -195170;1;0;false;false;;;;;; -195171;17;0;false;false;0;0;0;;; -195188;1;0;false;false;;;;;; -195189;2;0;false;false;0;0;0;;; -195191;1;0;false;false;;;;;; -195192;2;0;false;false;0;0;0;;; -195194;1;0;false;false;;;;;; -195195;1;0;false;false;0;0;0;;; -195196;4;0;false;false;;;;;; -195200;6;1;false;false;127;0;85;;; -195206;1;0;false;false;0;0;0;;; -195207;3;0;false;false;;;;;; -195210;1;0;false;false;0;0;0;;; -195211;3;0;false;false;;;;;; -195214;2;1;false;false;127;0;85;;; -195216;1;0;false;false;;;;;; -195217;13;0;false;false;0;0;0;;; -195230;1;0;false;false;;;;;; -195231;1;0;false;false;0;0;0;;; -195232;1;0;false;false;;;;;; -195233;2;0;false;false;0;0;0;;; -195235;1;0;false;false;;;;;; -195236;1;0;false;false;0;0;0;;; -195237;4;0;false;false;;;;;; -195241;71;0;false;false;63;127;95;;; -195312;2;0;false;false;;;;;; -195314;5;0;false;false;0;0;0;;; -195319;1;0;false;false;;;;;; -195320;10;0;false;false;0;0;0;;; -195330;1;0;false;false;;;;;; -195331;1;0;false;false;0;0;0;;; -195332;1;0;false;false;;;;;; -195333;16;0;false;false;0;0;0;;; -195349;4;0;false;false;;;;;; -195353;3;1;false;false;127;0;85;;; -195356;1;0;false;false;;;;;; -195357;9;0;false;false;0;0;0;;; -195366;1;0;false;false;;;;;; -195367;1;0;false;false;0;0;0;;; -195368;1;0;false;false;;;;;; -195369;23;0;false;false;0;0;0;;; -195392;4;0;false;false;;;;;; -195396;3;1;false;false;127;0;85;;; -195399;1;0;false;false;;;;;; -195400;7;0;false;false;0;0;0;;; -195407;1;0;false;false;;;;;; -195408;1;0;false;false;0;0;0;;; -195409;1;0;false;false;;;;;; -195410;12;0;false;false;0;0;0;;; -195422;1;0;false;false;;;;;; -195423;1;0;false;false;0;0;0;;; -195424;1;0;false;false;;;;;; -195425;17;0;false;false;0;0;0;;; -195442;1;0;false;false;;;;;; -195443;1;0;false;false;0;0;0;;; -195444;1;0;false;false;;;;;; -195445;18;0;false;false;0;0;0;;; -195463;4;0;false;false;;;;;; -195467;2;1;false;false;127;0;85;;; -195469;1;0;false;false;;;;;; -195470;16;0;false;false;0;0;0;;; -195486;1;0;false;false;;;;;; -195487;1;0;false;false;0;0;0;;; -195488;5;0;false;false;;;;;; -195493;9;0;false;false;0;0;0;;; -195502;1;0;false;false;;;;;; -195503;1;0;false;false;0;0;0;;; -195504;1;0;false;false;;;;;; -195505;2;0;false;false;0;0;0;;; -195507;4;0;false;false;;;;;; -195511;1;0;false;false;0;0;0;;; -195512;4;0;false;false;;;;;; -195516;3;1;false;false;127;0;85;;; -195519;1;0;false;false;;;;;; -195520;7;0;false;false;0;0;0;;; -195527;1;0;false;false;;;;;; -195528;12;0;false;false;0;0;0;;; -195540;4;0;false;false;;;;;; -195544;5;0;false;false;0;0;0;;; -195549;1;0;false;false;;;;;; -195550;11;0;false;false;0;0;0;;; -195561;4;0;false;false;;;;;; -195565;2;0;false;false;0;0;0;;; -195567;1;0;false;false;;;;;; -195568;7;0;false;false;0;0;0;;; -195575;4;0;false;false;;;;;; -195579;7;1;false;false;127;0;85;;; -195586;1;0;false;false;;;;;; -195587;12;0;false;false;0;0;0;;; -195599;1;0;false;false;;;;;; -195600;1;0;false;false;0;0;0;;; -195601;1;0;false;false;;;;;; -195602;13;0;false;false;0;0;0;;; -195615;1;0;false;false;;;;;; -195616;2;0;false;false;0;0;0;;; -195618;1;0;false;false;;;;;; -195619;17;0;false;false;0;0;0;;; -195636;1;0;false;false;;;;;; -195637;2;0;false;false;0;0;0;;; -195639;1;0;false;false;;;;;; -195640;9;0;false;false;0;0;0;;; -195649;4;0;false;false;;;;;; -195653;17;0;false;false;0;0;0;;; -195670;1;0;false;false;;;;;; -195671;1;0;false;false;0;0;0;;; -195672;1;0;false;false;;;;;; -195673;9;0;false;false;0;0;0;;; -195682;4;0;false;false;;;;;; -195686;2;1;false;false;127;0;85;;; -195688;1;0;false;false;;;;;; -195689;14;0;false;false;0;0;0;;; -195703;1;0;false;false;;;;;; -195704;1;0;false;false;0;0;0;;; -195705;5;0;false;false;;;;;; -195710;6;0;false;false;0;0;0;;; -195716;1;0;false;false;;;;;; -195717;1;0;false;false;0;0;0;;; -195718;1;0;false;false;;;;;; -195719;2;0;false;false;0;0;0;;; -195721;5;0;false;false;;;;;; -195726;11;0;false;false;0;0;0;;; -195737;1;0;false;false;;;;;; -195738;1;0;false;false;0;0;0;;; -195739;1;0;false;false;;;;;; -195740;13;0;false;false;0;0;0;;; -195753;5;0;false;false;;;;;; -195758;10;0;false;false;0;0;0;;; -195768;1;0;false;false;;;;;; -195769;1;0;false;false;0;0;0;;; -195770;1;0;false;false;;;;;; -195771;3;1;false;false;127;0;85;;; -195774;1;0;false;false;;;;;; -195775;19;0;false;false;0;0;0;;; -195794;1;0;false;false;;;;;; -195795;17;0;false;false;0;0;0;;; -195812;1;0;false;false;;;;;; -195813;14;0;false;false;0;0;0;;; -195827;5;0;false;false;;;;;; -195832;6;0;false;false;0;0;0;;; -195838;1;0;false;false;;;;;; -195839;1;0;false;false;0;0;0;;; -195840;1;0;false;false;;;;;; -195841;3;1;false;false;127;0;85;;; -195844;1;0;false;false;;;;;; -195845;14;0;false;false;0;0;0;;; -195859;1;0;false;false;;;;;; -195860;9;0;false;false;0;0;0;;; -195869;5;0;false;false;;;;;; -195874;26;0;false;false;0;0;0;;; -195900;5;0;false;false;;;;;; -195905;33;0;false;false;0;0;0;;; -195938;5;0;false;false;;;;;; -195943;33;0;false;false;0;0;0;;; -195976;4;0;false;false;;;;;; -195980;1;0;false;false;0;0;0;;; -195981;1;0;false;false;;;;;; -195982;4;1;false;false;127;0;85;;; -195986;1;0;false;false;;;;;; -195987;1;0;false;false;0;0;0;;; -195988;5;0;false;false;;;;;; -195993;6;0;false;false;0;0;0;;; -195999;1;0;false;false;;;;;; -196000;1;0;false;false;0;0;0;;; -196001;1;0;false;false;;;;;; -196002;7;0;false;false;0;0;0;;; -196009;5;0;false;false;;;;;; -196014;11;0;false;false;0;0;0;;; -196025;1;0;false;false;;;;;; -196026;1;0;false;false;0;0;0;;; -196027;1;0;false;false;;;;;; -196028;6;0;false;false;0;0;0;;; -196034;1;0;false;false;;;;;; -196035;1;0;false;false;0;0;0;;; -196036;1;0;false;false;;;;;; -196037;13;0;false;false;0;0;0;;; -196050;5;0;false;false;;;;;; -196055;10;0;false;false;0;0;0;;; -196065;1;0;false;false;;;;;; -196066;1;0;false;false;0;0;0;;; -196067;1;0;false;false;;;;;; -196068;4;1;false;false;127;0;85;;; -196072;1;0;false;false;0;0;0;;; -196073;5;0;false;false;;;;;; -196078;6;0;false;false;0;0;0;;; -196084;1;0;false;false;;;;;; -196085;1;0;false;false;0;0;0;;; -196086;1;0;false;false;;;;;; -196087;3;0;false;false;0;0;0;;; -196090;4;0;false;false;;;;;; -196094;1;0;false;false;0;0;0;;; -196095;6;0;false;false;;;;;; -196101;3;1;false;false;127;0;85;;; -196104;1;0;false;false;;;;;; -196105;1;0;false;false;0;0;0;;; -196106;3;1;false;false;127;0;85;;; -196109;1;0;false;false;;;;;; -196110;1;0;false;false;0;0;0;;; -196111;1;0;false;false;;;;;; -196112;1;0;false;false;0;0;0;;; -196113;1;0;false;false;;;;;; -196114;10;0;false;false;0;0;0;;; -196124;1;0;false;false;;;;;; -196125;6;0;false;false;0;0;0;;; -196131;1;0;false;false;;;;;; -196132;1;0;false;false;0;0;0;;; -196133;1;0;false;false;;;;;; -196134;11;0;false;false;0;0;0;;; -196145;1;0;false;false;;;;;; -196146;2;0;false;false;0;0;0;;; -196148;1;0;false;false;;;;;; -196149;1;0;false;false;0;0;0;;; -196150;1;0;false;false;;;;;; -196151;1;0;false;false;0;0;0;;; -196152;1;0;false;false;;;;;; -196153;10;0;false;false;0;0;0;;; -196163;1;0;false;false;;;;;; -196164;4;0;false;false;0;0;0;;; -196168;1;0;false;false;;;;;; -196169;6;0;false;false;0;0;0;;; -196175;1;0;false;false;;;;;; -196176;2;0;false;false;0;0;0;;; -196178;1;0;false;false;;;;;; -196179;11;0;false;false;0;0;0;;; -196190;1;0;false;false;;;;;; -196191;1;0;false;false;0;0;0;;; -196192;5;0;false;false;;;;;; -196197;6;0;false;false;0;0;0;;; -196203;1;0;false;false;;;;;; -196204;4;0;false;false;0;0;0;;; -196208;1;0;false;false;;;;;; -196209;1;0;false;false;0;0;0;;; -196210;1;0;false;false;;;;;; -196211;19;0;false;false;0;0;0;;; -196230;5;0;false;false;;;;;; -196235;23;0;false;false;0;0;0;;; -196258;1;0;false;false;;;;;; -196259;2;0;false;false;0;0;0;;; -196261;1;0;false;false;;;;;; -196262;7;0;false;false;0;0;0;;; -196269;1;0;false;false;;;;;; -196270;7;0;false;false;0;0;0;;; -196277;1;0;false;false;;;;;; -196278;11;0;false;false;0;0;0;;; -196289;1;0;false;false;;;;;; -196290;11;0;false;false;0;0;0;;; -196301;1;0;false;false;;;;;; -196302;4;1;false;false;127;0;85;;; -196306;2;0;false;false;0;0;0;;; -196308;4;0;false;false;;;;;; -196312;1;0;false;false;0;0;0;;; -196313;4;0;false;false;;;;;; -196317;2;1;false;false;127;0;85;;; -196319;1;0;false;false;;;;;; -196320;7;0;false;false;0;0;0;;; -196327;1;0;false;false;;;;;; -196328;1;0;false;false;0;0;0;;; -196329;1;0;false;false;;;;;; -196330;12;0;false;false;0;0;0;;; -196342;1;0;false;false;;;;;; -196343;1;0;false;false;0;0;0;;; -196344;5;0;false;false;;;;;; -196349;33;0;false;false;0;0;0;;; -196382;5;0;false;false;;;;;; -196387;23;0;false;false;0;0;0;;; -196410;1;0;false;false;;;;;; -196411;7;0;false;false;0;0;0;;; -196418;1;0;false;false;;;;;; -196419;17;0;false;false;0;0;0;;; -196436;1;0;false;false;;;;;; -196437;11;0;false;false;0;0;0;;; -196448;1;0;false;false;;;;;; -196449;1;0;false;false;0;0;0;;; -196450;1;0;false;false;;;;;; -196451;8;0;false;false;0;0;0;;; -196459;4;0;false;false;;;;;; -196463;1;0;false;false;0;0;0;;; -196464;4;0;false;false;;;;;; -196468;2;1;false;false;127;0;85;;; -196470;1;0;false;false;;;;;; -196471;14;0;false;false;0;0;0;;; -196485;1;0;false;false;;;;;; -196486;1;0;false;false;0;0;0;;; -196487;5;0;false;false;;;;;; -196492;19;0;false;false;0;0;0;;; -196511;1;0;false;false;;;;;; -196512;11;0;false;false;0;0;0;;; -196523;1;0;false;false;;;;;; -196524;11;0;false;false;0;0;0;;; -196535;1;0;false;false;;;;;; -196536;8;0;false;false;0;0;0;;; -196544;5;0;false;false;;;;;; -196549;24;0;false;false;0;0;0;;; -196573;1;0;false;false;;;;;; -196574;2;0;false;false;0;0;0;;; -196576;1;0;false;false;;;;;; -196577;8;0;false;false;0;0;0;;; -196585;5;0;false;false;;;;;; -196590;17;0;false;false;0;0;0;;; -196607;5;0;false;false;;;;;; -196612;21;0;false;false;0;0;0;;; -196633;4;0;false;false;;;;;; -196637;1;0;false;false;0;0;0;;; -196638;3;0;false;false;;;;;; -196641;1;0;false;false;0;0;0;;; -196642;3;0;false;false;;;;;; -196645;15;0;false;false;0;0;0;;; -196660;1;0;false;false;;;;;; -196661;11;0;false;false;0;0;0;;; -196672;1;0;false;false;;;;;; -196673;11;0;false;false;0;0;0;;; -196684;1;0;false;false;;;;;; -196685;3;0;false;false;0;0;0;;; -196688;2;0;false;false;;;;;; -196690;1;0;false;false;0;0;0;;; -196691;2;0;false;false;;;;;; -196693;3;0;false;false;63;95;191;;; -196696;4;0;false;false;;;;;; -196700;1;0;false;false;63;95;191;;; -196701;1;0;false;false;;;;;; -196702;6;0;false;false;63;95;191;;; -196708;1;0;false;false;;;;;; -196709;3;0;false;false;63;95;191;;; -196712;1;0;false;false;;;;;; -196713;8;0;false;false;63;95;191;;; -196721;1;0;false;false;;;;;; -196722;4;0;false;false;63;95;191;;; -196726;1;0;false;false;;;;;; -196727;2;0;false;false;63;95;191;;; -196729;1;0;false;false;;;;;; -196730;3;0;false;false;63;95;191;;; -196733;1;0;false;false;;;;;; -196734;7;0;false;false;63;95;191;;; -196741;1;0;false;false;;;;;; -196742;8;0;false;false;63;95;191;;; -196750;3;0;false;false;;;;;; -196753;1;0;false;false;63;95;191;;; -196754;3;0;false;false;;;;;; -196757;1;0;false;false;63;95;191;;; -196758;1;0;false;false;;;;;; -196759;11;1;false;false;127;159;191;;; -196770;12;0;false;false;63;95;191;;; -196782;1;0;false;false;;;;;; -196783;4;0;false;false;127;127;159;;; -196787;3;0;false;false;;;;;; -196790;1;0;false;false;63;95;191;;; -196791;4;0;false;false;;;;;; -196795;4;0;false;false;127;127;159;;; -196799;21;0;false;false;63;95;191;;; -196820;1;0;false;false;;;;;; -196821;1;0;false;false;127;127;159;;; -196822;1;0;false;false;;;;;; -196823;2;0;false;false;63;95;191;;; -196825;1;0;false;false;;;;;; -196826;3;0;false;false;63;95;191;;; -196829;1;0;false;false;;;;;; -196830;8;0;false;false;63;95;191;;; -196838;1;0;false;false;;;;;; -196839;3;0;false;false;63;95;191;;; -196842;1;0;false;false;;;;;; -196843;4;0;false;false;63;95;191;;; -196847;1;0;false;false;;;;;; -196848;8;0;false;false;63;95;191;;; -196856;5;0;false;false;127;127;159;;; -196861;3;0;false;false;;;;;; -196864;1;0;false;false;63;95;191;;; -196865;4;0;false;false;;;;;; -196869;4;0;false;false;127;127;159;;; -196873;27;0;false;false;63;95;191;;; -196900;1;0;false;false;;;;;; -196901;1;0;false;false;127;127;159;;; -196902;1;0;false;false;;;;;; -196903;2;0;false;false;63;95;191;;; -196905;1;0;false;false;;;;;; -196906;3;0;false;false;63;95;191;;; -196909;1;0;false;false;;;;;; -196910;6;0;false;false;63;95;191;;; -196916;1;0;false;false;;;;;; -196917;4;0;false;false;63;95;191;;; -196921;1;0;false;false;;;;;; -196922;3;0;false;false;63;95;191;;; -196925;1;0;false;false;;;;;; -196926;6;0;false;false;63;95;191;;; -196932;1;0;false;false;;;;;; -196933;4;0;false;false;63;95;191;;; -196937;1;0;false;false;;;;;; -196938;7;0;false;false;63;95;191;;; -196945;1;0;false;false;;;;;; -196946;3;0;false;false;63;95;191;;; -196949;1;0;false;false;;;;;; -196950;8;0;false;false;63;95;191;;; -196958;5;0;false;false;127;127;159;;; -196963;3;0;false;false;;;;;; -196966;1;0;false;false;63;95;191;;; -196967;1;0;false;false;;;;;; -196968;5;0;false;false;127;127;159;;; -196973;3;0;false;false;;;;;; -196976;2;0;false;false;63;95;191;;; -196978;2;0;false;false;;;;;; -196980;6;1;false;false;127;0;85;;; -196986;1;0;false;false;;;;;; -196987;4;1;false;false;127;0;85;;; -196991;1;0;false;false;;;;;; -196992;7;0;false;false;0;0;0;;; -196999;1;0;false;false;;;;;; -197000;1;0;false;false;0;0;0;;; -197001;3;0;false;false;;;;;; -197004;14;0;false;false;0;0;0;;; -197018;3;0;false;false;;;;;; -197021;7;0;false;false;0;0;0;;; -197028;1;0;false;false;;;;;; -197029;7;0;false;false;0;0;0;;; -197036;1;0;false;false;;;;;; -197037;1;0;false;false;0;0;0;;; -197038;1;0;false;false;;;;;; -197039;3;1;false;false;127;0;85;;; -197042;1;0;false;false;;;;;; -197043;10;0;false;false;0;0;0;;; -197053;3;0;false;false;;;;;; -197056;22;0;false;false;0;0;0;;; -197078;1;0;false;false;;;;;; -197079;7;0;false;false;0;0;0;;; -197086;1;0;false;false;;;;;; -197087;1;0;false;false;0;0;0;;; -197088;1;0;false;false;;;;;; -197089;3;1;false;false;127;0;85;;; -197092;1;0;false;false;;;;;; -197093;25;0;false;false;0;0;0;;; -197118;6;0;false;false;;;;;; -197124;27;0;false;false;0;0;0;;; -197151;1;0;false;false;;;;;; -197152;1;0;false;false;0;0;0;;; -197153;1;0;false;false;;;;;; -197154;4;1;false;false;127;0;85;;; -197158;1;0;false;false;0;0;0;;; -197159;3;0;false;false;;;;;; -197162;27;0;false;false;0;0;0;;; -197189;1;0;false;false;;;;;; -197190;1;0;false;false;0;0;0;;; -197191;1;0;false;false;;;;;; -197192;4;1;false;false;127;0;85;;; -197196;1;0;false;false;0;0;0;;; -197197;3;0;false;false;;;;;; -197200;26;0;false;false;0;0;0;;; -197226;1;0;false;false;;;;;; -197227;1;0;false;false;0;0;0;;; -197228;1;0;false;false;;;;;; -197229;4;1;false;false;127;0;85;;; -197233;1;0;false;false;0;0;0;;; -197234;3;0;false;false;;;;;; -197237;27;0;false;false;0;0;0;;; -197264;1;0;false;false;;;;;; -197265;1;0;false;false;0;0;0;;; -197266;1;0;false;false;;;;;; -197267;4;1;false;false;127;0;85;;; -197271;1;0;false;false;0;0;0;;; -197272;4;0;false;false;;;;;; -197276;3;1;false;false;127;0;85;;; -197279;1;0;false;false;;;;;; -197280;9;0;false;false;0;0;0;;; -197289;4;1;false;false;127;0;85;;; -197293;1;0;false;false;0;0;0;;; -197294;1;0;false;false;;;;;; -197295;8;0;false;false;0;0;0;;; -197303;1;0;false;false;;;;;; -197304;15;0;false;false;0;0;0;;; -197319;3;0;false;false;;;;;; -197322;18;0;false;false;0;0;0;;; -197340;2;0;false;false;;;;;; -197342;1;0;false;false;0;0;0;;; -197343;2;0;false;false;;;;;; -197345;3;0;false;false;63;95;191;;; -197348;4;0;false;false;;;;;; -197352;1;0;false;false;63;95;191;;; -197353;1;0;false;false;;;;;; -197354;7;0;false;false;63;95;191;;; -197361;1;0;false;false;;;;;; -197362;1;0;false;false;63;95;191;;; -197363;1;0;false;false;;;;;; -197364;8;0;false;false;63;95;191;;; -197372;1;0;false;false;;;;;; -197373;4;0;false;false;63;95;191;;; -197377;1;0;false;false;;;;;; -197378;4;0;false;false;63;95;191;;; -197382;1;0;false;false;;;;;; -197383;5;0;false;false;63;95;191;;; -197388;1;0;false;false;;;;;; -197389;3;0;false;false;63;95;191;;; -197392;1;0;false;false;;;;;; -197393;8;0;false;false;63;95;191;;; -197401;1;0;false;false;;;;;; -197402;4;0;false;false;63;95;191;;; -197406;3;0;false;false;;;;;; -197409;1;0;false;false;63;95;191;;; -197410;1;0;false;false;;;;;; -197411;2;0;false;false;63;95;191;;; -197413;1;0;false;false;;;;;; -197414;3;0;false;false;63;95;191;;; -197417;1;0;false;false;;;;;; -197418;9;0;false;false;63;95;191;;; -197427;1;0;false;false;;;;;; -197428;8;0;false;false;63;95;191;;; -197436;3;0;false;false;;;;;; -197439;1;0;false;false;63;95;191;;; -197440;1;0;false;false;;;;;; -197441;3;0;false;false;127;127;159;;; -197444;3;0;false;false;;;;;; -197447;1;0;false;false;63;95;191;;; -197448;1;0;false;false;;;;;; -197449;3;0;false;false;63;95;191;;; -197452;1;0;false;false;;;;;; -197453;8;0;false;false;63;95;191;;; -197461;1;0;false;false;;;;;; -197462;3;0;false;false;63;95;191;;; -197465;1;0;false;false;;;;;; -197466;2;0;false;false;63;95;191;;; -197468;1;0;false;false;;;;;; -197469;3;0;false;false;63;95;191;;; -197472;1;0;false;false;;;;;; -197473;2;0;false;false;63;95;191;;; -197475;1;0;false;false;;;;;; -197476;1;0;false;false;63;95;191;;; -197477;1;0;false;false;;;;;; -197478;3;0;false;false;63;95;191;;; -197481;1;0;false;false;127;127;159;;; -197482;2;0;false;false;63;95;191;;; -197484;1;0;false;false;;;;;; -197485;7;0;false;false;63;95;191;;; -197492;3;0;false;false;;;;;; -197495;1;0;false;false;63;95;191;;; -197496;1;0;false;false;;;;;; -197497;4;0;false;false;127;127;159;;; -197501;3;0;false;false;;;;;; -197504;1;0;false;false;63;95;191;;; -197505;4;0;false;false;;;;;; -197509;1;0;false;false;63;95;191;;; -197510;1;0;false;false;;;;;; -197511;7;1;false;false;127;159;191;;; -197518;7;0;false;false;63;95;191;;; -197525;1;0;false;false;;;;;; -197526;3;0;false;false;63;95;191;;; -197529;1;0;false;false;;;;;; -197530;7;0;false;false;63;95;191;;; -197537;1;0;false;false;;;;;; -197538;2;0;false;false;63;95;191;;; -197540;1;0;false;false;;;;;; -197541;5;0;false;false;63;95;191;;; -197546;1;0;false;false;;;;;; -197547;2;0;false;false;63;95;191;;; -197549;3;0;false;false;;;;;; -197552;1;0;false;false;63;95;191;;; -197553;1;0;false;false;;;;;; -197554;11;1;false;false;127;159;191;;; -197565;12;0;false;false;63;95;191;;; -197577;1;0;false;false;;;;;; -197578;4;0;false;false;127;127;159;;; -197582;3;0;false;false;;;;;; -197585;1;0;false;false;63;95;191;;; -197586;4;0;false;false;;;;;; -197590;4;0;false;false;127;127;159;;; -197594;21;0;false;false;63;95;191;;; -197615;1;0;false;false;;;;;; -197616;1;0;false;false;127;127;159;;; -197617;1;0;false;false;;;;;; -197618;2;0;false;false;63;95;191;;; -197620;1;0;false;false;;;;;; -197621;3;0;false;false;63;95;191;;; -197624;1;0;false;false;;;;;; -197625;8;0;false;false;63;95;191;;; -197633;1;0;false;false;;;;;; -197634;3;0;false;false;63;95;191;;; -197637;1;0;false;false;;;;;; -197638;4;0;false;false;63;95;191;;; -197642;1;0;false;false;;;;;; -197643;8;0;false;false;63;95;191;;; -197651;5;0;false;false;127;127;159;;; -197656;3;0;false;false;;;;;; -197659;1;0;false;false;63;95;191;;; -197660;4;0;false;false;;;;;; -197664;4;0;false;false;127;127;159;;; -197668;27;0;false;false;63;95;191;;; -197695;1;0;false;false;;;;;; -197696;1;0;false;false;127;127;159;;; -197697;1;0;false;false;;;;;; -197698;2;0;false;false;63;95;191;;; -197700;1;0;false;false;;;;;; -197701;3;0;false;false;63;95;191;;; -197704;1;0;false;false;;;;;; -197705;6;0;false;false;63;95;191;;; -197711;1;0;false;false;;;;;; -197712;4;0;false;false;63;95;191;;; -197716;1;0;false;false;;;;;; -197717;3;0;false;false;63;95;191;;; -197720;1;0;false;false;;;;;; -197721;6;0;false;false;63;95;191;;; -197727;1;0;false;false;;;;;; -197728;4;0;false;false;63;95;191;;; -197732;1;0;false;false;;;;;; -197733;7;0;false;false;63;95;191;;; -197740;1;0;false;false;;;;;; -197741;3;0;false;false;63;95;191;;; -197744;1;0;false;false;;;;;; -197745;8;0;false;false;63;95;191;;; -197753;5;0;false;false;127;127;159;;; -197758;3;0;false;false;;;;;; -197761;1;0;false;false;63;95;191;;; -197762;1;0;false;false;;;;;; -197763;5;0;false;false;127;127;159;;; -197768;3;0;false;false;;;;;; -197771;1;0;false;false;63;95;191;;; -197772;1;0;false;false;;;;;; -197773;11;1;false;false;127;159;191;;; -197784;24;0;false;false;63;95;191;;; -197808;1;0;false;false;;;;;; -197809;4;0;false;false;127;127;159;;; -197813;3;0;false;false;;;;;; -197816;1;0;false;false;63;95;191;;; -197817;4;0;false;false;;;;;; -197821;4;0;false;false;127;127;159;;; -197825;19;0;false;false;63;95;191;;; -197844;1;0;false;false;;;;;; -197845;4;0;false;false;63;95;191;;; -197849;1;0;false;false;;;;;; -197850;7;0;false;false;63;95;191;;; -197857;1;0;false;false;;;;;; -197858;2;0;false;false;63;95;191;;; -197860;1;0;false;false;;;;;; -197861;4;0;false;false;63;95;191;;; -197865;5;0;false;false;127;127;159;;; -197870;3;0;false;false;;;;;; -197873;1;0;false;false;63;95;191;;; -197874;1;0;false;false;;;;;; -197875;5;0;false;false;127;127;159;;; -197880;3;0;false;false;;;;;; -197883;2;0;false;false;63;95;191;;; -197885;2;0;false;false;;;;;; -197887;6;1;false;false;127;0;85;;; -197893;1;0;false;false;;;;;; -197894;8;0;false;false;0;0;0;;; -197902;1;0;false;false;;;;;; -197903;13;0;false;false;0;0;0;;; -197916;1;0;false;false;;;;;; -197917;8;0;false;false;0;0;0;;; -197925;1;0;false;false;;;;;; -197926;1;0;false;false;0;0;0;;; -197927;3;0;false;false;;;;;; -197930;14;0;false;false;0;0;0;;; -197944;4;0;false;false;;;;;; -197948;22;0;false;false;0;0;0;;; -197970;1;0;false;false;;;;;; -197971;7;0;false;false;0;0;0;;; -197978;1;0;false;false;;;;;; -197979;1;0;false;false;0;0;0;;; -197980;1;0;false;false;;;;;; -197981;3;1;false;false;127;0;85;;; -197984;1;0;false;false;;;;;; -197985;25;0;false;false;0;0;0;;; -198010;3;0;false;false;;;;;; -198013;27;0;false;false;0;0;0;;; -198040;1;0;false;false;;;;;; -198041;1;0;false;false;0;0;0;;; -198042;1;0;false;false;;;;;; -198043;4;1;false;false;127;0;85;;; -198047;1;0;false;false;0;0;0;;; -198048;3;0;false;false;;;;;; -198051;27;0;false;false;0;0;0;;; -198078;1;0;false;false;;;;;; -198079;1;0;false;false;0;0;0;;; -198080;1;0;false;false;;;;;; -198081;4;1;false;false;127;0;85;;; -198085;1;0;false;false;0;0;0;;; -198086;3;0;false;false;;;;;; -198089;26;0;false;false;0;0;0;;; -198115;1;0;false;false;;;;;; -198116;1;0;false;false;0;0;0;;; -198117;1;0;false;false;;;;;; -198118;4;1;false;false;127;0;85;;; -198122;1;0;false;false;0;0;0;;; -198123;3;0;false;false;;;;;; -198126;27;0;false;false;0;0;0;;; -198153;1;0;false;false;;;;;; -198154;1;0;false;false;0;0;0;;; -198155;1;0;false;false;;;;;; -198156;4;1;false;false;127;0;85;;; -198160;1;0;false;false;0;0;0;;; -198161;3;0;false;false;;;;;; -198164;2;1;false;false;127;0;85;;; -198166;1;0;false;false;;;;;; -198167;8;0;false;false;0;0;0;;; -198175;1;0;false;false;;;;;; -198176;2;0;false;false;0;0;0;;; -198178;1;0;false;false;;;;;; -198179;4;1;false;false;127;0;85;;; -198183;1;0;false;false;0;0;0;;; -198184;1;0;false;false;;;;;; -198185;1;0;false;false;0;0;0;;; -198186;4;0;false;false;;;;;; -198190;35;0;false;false;0;0;0;;; -198225;3;0;false;false;;;;;; -198228;1;0;false;false;0;0;0;;; -198229;3;0;false;false;;;;;; -198232;6;1;false;false;127;0;85;;; -198238;1;0;false;false;;;;;; -198239;14;0;false;false;0;0;0;;; -198253;1;0;false;false;;;;;; -198254;9;0;false;false;0;0;0;;; -198263;2;0;false;false;;;;;; -198265;1;0;false;false;0;0;0;;; -198266;2;0;false;false;;;;;; -198268;3;0;false;false;63;95;191;;; -198271;4;0;false;false;;;;;; -198275;1;0;false;false;63;95;191;;; -198276;1;0;false;false;;;;;; -198277;7;0;false;false;63;95;191;;; -198284;1;0;false;false;;;;;; -198285;1;0;false;false;63;95;191;;; -198286;1;0;false;false;;;;;; -198287;8;0;false;false;63;95;191;;; -198295;1;0;false;false;;;;;; -198296;4;0;false;false;63;95;191;;; -198300;1;0;false;false;;;;;; -198301;4;0;false;false;63;95;191;;; -198305;1;0;false;false;;;;;; -198306;5;0;false;false;63;95;191;;; -198311;1;0;false;false;;;;;; -198312;3;0;false;false;63;95;191;;; -198315;1;0;false;false;;;;;; -198316;8;0;false;false;63;95;191;;; -198324;1;0;false;false;;;;;; -198325;4;0;false;false;63;95;191;;; -198329;3;0;false;false;;;;;; -198332;1;0;false;false;63;95;191;;; -198333;1;0;false;false;;;;;; -198334;2;0;false;false;63;95;191;;; -198336;1;0;false;false;;;;;; -198337;3;0;false;false;63;95;191;;; -198340;1;0;false;false;;;;;; -198341;9;0;false;false;63;95;191;;; -198350;1;0;false;false;;;;;; -198351;8;0;false;false;63;95;191;;; -198359;3;0;false;false;;;;;; -198362;1;0;false;false;63;95;191;;; -198363;1;0;false;false;;;;;; -198364;3;0;false;false;127;127;159;;; -198367;3;0;false;false;;;;;; -198370;1;0;false;false;63;95;191;;; -198371;1;0;false;false;;;;;; -198372;3;0;false;false;63;95;191;;; -198375;1;0;false;false;;;;;; -198376;8;0;false;false;63;95;191;;; -198384;1;0;false;false;;;;;; -198385;3;0;false;false;63;95;191;;; -198388;1;0;false;false;;;;;; -198389;2;0;false;false;63;95;191;;; -198391;1;0;false;false;;;;;; -198392;3;0;false;false;63;95;191;;; -198395;1;0;false;false;;;;;; -198396;2;0;false;false;63;95;191;;; -198398;1;0;false;false;;;;;; -198399;1;0;false;false;63;95;191;;; -198400;1;0;false;false;;;;;; -198401;3;0;false;false;63;95;191;;; -198404;1;0;false;false;127;127;159;;; -198405;2;0;false;false;63;95;191;;; -198407;1;0;false;false;;;;;; -198408;7;0;false;false;63;95;191;;; -198415;3;0;false;false;;;;;; -198418;1;0;false;false;63;95;191;;; -198419;1;0;false;false;;;;;; -198420;4;0;false;false;127;127;159;;; -198424;3;0;false;false;;;;;; -198427;1;0;false;false;63;95;191;;; -198428;4;0;false;false;;;;;; -198432;1;0;false;false;63;95;191;;; -198433;1;0;false;false;;;;;; -198434;7;1;false;false;127;159;191;;; -198441;7;0;false;false;63;95;191;;; -198448;1;0;false;false;;;;;; -198449;3;0;false;false;63;95;191;;; -198452;1;0;false;false;;;;;; -198453;7;0;false;false;63;95;191;;; -198460;1;0;false;false;;;;;; -198461;2;0;false;false;63;95;191;;; -198463;1;0;false;false;;;;;; -198464;5;0;false;false;63;95;191;;; -198469;1;0;false;false;;;;;; -198470;2;0;false;false;63;95;191;;; -198472;3;0;false;false;;;;;; -198475;1;0;false;false;63;95;191;;; -198476;1;0;false;false;;;;;; -198477;7;1;false;false;127;159;191;;; -198484;7;0;false;false;63;95;191;;; -198491;1;0;false;false;;;;;; -198492;5;0;false;false;63;95;191;;; -198497;1;0;false;false;;;;;; -198498;7;0;false;false;63;95;191;;; -198505;1;0;false;false;;;;;; -198506;2;0;false;false;63;95;191;;; -198508;1;0;false;false;;;;;; -198509;3;0;false;false;63;95;191;;; -198512;1;0;false;false;;;;;; -198513;6;0;false;false;63;95;191;;; -198519;1;0;false;false;;;;;; -198520;8;0;false;false;63;95;191;;; -198528;3;0;false;false;;;;;; -198531;1;0;false;false;63;95;191;;; -198532;1;0;false;false;;;;;; -198533;11;1;false;false;127;159;191;;; -198544;12;0;false;false;63;95;191;;; -198556;1;0;false;false;;;;;; -198557;4;0;false;false;127;127;159;;; -198561;3;0;false;false;;;;;; -198564;1;0;false;false;63;95;191;;; -198565;4;0;false;false;;;;;; -198569;4;0;false;false;127;127;159;;; -198573;21;0;false;false;63;95;191;;; -198594;1;0;false;false;;;;;; -198595;1;0;false;false;127;127;159;;; -198596;1;0;false;false;;;;;; -198597;2;0;false;false;63;95;191;;; -198599;1;0;false;false;;;;;; -198600;3;0;false;false;63;95;191;;; -198603;1;0;false;false;;;;;; -198604;8;0;false;false;63;95;191;;; -198612;1;0;false;false;;;;;; -198613;3;0;false;false;63;95;191;;; -198616;1;0;false;false;;;;;; -198617;4;0;false;false;63;95;191;;; -198621;1;0;false;false;;;;;; -198622;8;0;false;false;63;95;191;;; -198630;5;0;false;false;127;127;159;;; -198635;3;0;false;false;;;;;; -198638;1;0;false;false;63;95;191;;; -198639;4;0;false;false;;;;;; -198643;4;0;false;false;127;127;159;;; -198647;27;0;false;false;63;95;191;;; -198674;1;0;false;false;;;;;; -198675;1;0;false;false;127;127;159;;; -198676;1;0;false;false;;;;;; -198677;2;0;false;false;63;95;191;;; -198679;1;0;false;false;;;;;; -198680;3;0;false;false;63;95;191;;; -198683;1;0;false;false;;;;;; -198684;6;0;false;false;63;95;191;;; -198690;1;0;false;false;;;;;; -198691;4;0;false;false;63;95;191;;; -198695;1;0;false;false;;;;;; -198696;3;0;false;false;63;95;191;;; -198699;1;0;false;false;;;;;; -198700;6;0;false;false;63;95;191;;; -198706;1;0;false;false;;;;;; -198707;4;0;false;false;63;95;191;;; -198711;1;0;false;false;;;;;; -198712;7;0;false;false;63;95;191;;; -198719;1;0;false;false;;;;;; -198720;3;0;false;false;63;95;191;;; -198723;1;0;false;false;;;;;; -198724;8;0;false;false;63;95;191;;; -198732;5;0;false;false;127;127;159;;; -198737;3;0;false;false;;;;;; -198740;1;0;false;false;63;95;191;;; -198741;1;0;false;false;;;;;; -198742;5;0;false;false;127;127;159;;; -198747;3;0;false;false;;;;;; -198750;1;0;false;false;63;95;191;;; -198751;1;0;false;false;;;;;; -198752;11;1;false;false;127;159;191;;; -198763;24;0;false;false;63;95;191;;; -198787;1;0;false;false;;;;;; -198788;4;0;false;false;127;127;159;;; -198792;3;0;false;false;;;;;; -198795;1;0;false;false;63;95;191;;; -198796;4;0;false;false;;;;;; -198800;4;0;false;false;127;127;159;;; -198804;19;0;false;false;63;95;191;;; -198823;1;0;false;false;;;;;; -198824;4;0;false;false;63;95;191;;; -198828;1;0;false;false;;;;;; -198829;7;0;false;false;63;95;191;;; -198836;1;0;false;false;;;;;; -198837;2;0;false;false;63;95;191;;; -198839;1;0;false;false;;;;;; -198840;7;0;false;false;63;95;191;;; -198847;1;0;false;false;;;;;; -198848;2;0;false;false;63;95;191;;; -198850;1;0;false;false;;;;;; -198851;4;0;false;false;63;95;191;;; -198855;5;0;false;false;127;127;159;;; -198860;3;0;false;false;;;;;; -198863;1;0;false;false;63;95;191;;; -198864;1;0;false;false;;;;;; -198865;5;0;false;false;127;127;159;;; -198870;3;0;false;false;;;;;; -198873;1;0;false;false;63;95;191;;; -198874;1;0;false;false;;;;;; -198875;7;1;false;false;127;159;191;;; -198882;3;0;false;false;63;95;191;;; -198885;3;0;false;false;;;;;; -198888;2;0;false;false;63;95;191;;; -198890;2;0;false;false;;;;;; -198892;6;1;false;false;127;0;85;;; -198898;1;0;false;false;;;;;; -198899;8;0;false;false;0;0;0;;; -198907;1;0;false;false;;;;;; -198908;13;0;false;false;0;0;0;;; -198921;1;0;false;false;;;;;; -198922;8;0;false;false;0;0;0;;; -198930;1;0;false;false;;;;;; -198931;22;0;false;false;0;0;0;;; -198953;1;0;false;false;;;;;; -198954;8;0;false;false;0;0;0;;; -198962;1;0;false;false;;;;;; -198963;1;0;false;false;0;0;0;;; -198964;3;0;false;false;;;;;; -198967;14;0;false;false;0;0;0;;; -198981;3;0;false;false;;;;;; -198984;2;1;false;false;127;0;85;;; -198986;1;0;false;false;;;;;; -198987;8;0;false;false;0;0;0;;; -198995;1;0;false;false;;;;;; -198996;2;0;false;false;0;0;0;;; -198998;1;0;false;false;;;;;; -198999;4;1;false;false;127;0;85;;; -199003;1;0;false;false;;;;;; -199004;2;0;false;false;0;0;0;;; -199006;1;0;false;false;;;;;; -199007;7;0;false;false;0;0;0;;; -199014;1;0;false;false;;;;;; -199015;2;0;false;false;0;0;0;;; -199017;1;0;false;false;;;;;; -199018;4;1;false;false;127;0;85;;; -199022;1;0;false;false;0;0;0;;; -199023;1;0;false;false;;;;;; -199024;1;0;false;false;0;0;0;;; -199025;4;0;false;false;;;;;; -199029;35;0;false;false;0;0;0;;; -199064;3;0;false;false;;;;;; -199067;1;0;false;false;0;0;0;;; -199068;3;0;false;false;;;;;; -199071;6;1;false;false;127;0;85;;; -199077;1;0;false;false;;;;;; -199078;3;1;false;false;127;0;85;;; -199081;1;0;false;false;;;;;; -199082;9;0;false;false;0;0;0;;; -199091;4;1;false;false;127;0;85;;; -199095;1;0;false;false;0;0;0;;; -199096;1;0;false;false;;;;;; -199097;8;0;false;false;0;0;0;;; -199105;1;0;false;false;;;;;; -199106;9;0;false;false;0;0;0;;; -199115;2;0;false;false;;;;;; -199117;1;0;false;false;0;0;0;;; -199118;2;0;false;false;;;;;; -199120;3;0;false;false;63;95;191;;; -199123;3;0;false;false;;;;;; -199126;1;0;false;false;63;95;191;;; -199127;1;0;false;false;;;;;; -199128;6;0;false;false;63;95;191;;; -199134;1;0;false;false;;;;;; -199135;3;0;false;false;63;95;191;;; -199138;1;0;false;false;;;;;; -199139;6;0;false;false;63;95;191;;; -199145;1;0;false;false;;;;;; -199146;6;0;false;false;63;95;191;;; -199152;1;0;false;false;;;;;; -199153;2;0;false;false;63;95;191;;; -199155;1;0;false;false;;;;;; -199156;3;0;false;false;63;95;191;;; -199159;1;0;false;false;;;;;; -199160;8;0;false;false;63;95;191;;; -199168;1;0;false;false;;;;;; -199169;2;0;false;false;63;95;191;;; -199171;1;0;false;false;;;;;; -199172;2;0;false;false;63;95;191;;; -199174;1;0;false;false;;;;;; -199175;6;0;false;false;63;95;191;;; -199181;3;0;false;false;;;;;; -199184;1;0;false;false;63;95;191;;; -199185;1;0;false;false;;;;;; -199186;2;0;false;false;63;95;191;;; -199188;1;0;false;false;;;;;; -199189;7;0;false;false;63;95;191;;; -199196;1;0;false;false;;;;;; -199197;2;0;false;false;63;95;191;;; -199199;1;0;false;false;;;;;; -199200;2;0;false;false;63;95;191;;; -199202;1;0;false;false;;;;;; -199203;8;0;false;false;63;95;191;;; -199211;1;0;false;false;;;;;; -199212;3;0;false;false;63;95;191;;; -199215;1;0;false;false;;;;;; -199216;4;0;false;false;63;95;191;;; -199220;1;0;false;false;;;;;; -199221;4;0;false;false;63;95;191;;; -199225;1;0;false;false;;;;;; -199226;1;0;false;false;63;95;191;;; -199227;1;0;false;false;;;;;; -199228;5;0;false;false;63;95;191;;; -199233;1;0;false;false;;;;;; -199234;7;0;false;false;63;95;191;;; -199241;3;0;false;false;;;;;; -199244;1;0;false;false;63;95;191;;; -199245;1;0;false;false;;;;;; -199246;2;0;false;false;63;95;191;;; -199248;1;0;false;false;;;;;; -199249;10;0;false;false;63;95;191;;; -199259;1;0;false;false;;;;;; -199260;3;0;false;false;63;95;191;;; -199263;1;0;false;false;;;;;; -199264;7;0;false;false;63;95;191;;; -199271;1;0;false;false;;;;;; -199272;4;0;false;false;63;95;191;;; -199276;1;0;false;false;;;;;; -199277;2;0;false;false;63;95;191;;; -199279;1;0;false;false;;;;;; -199280;10;0;false;false;63;95;191;;; -199290;1;0;false;false;;;;;; -199291;8;0;false;false;63;95;191;;; -199299;3;0;false;false;;;;;; -199302;1;0;false;false;63;95;191;;; -199303;1;0;false;false;;;;;; -199304;3;0;false;false;127;127;159;;; -199307;3;0;false;false;;;;;; -199310;1;0;false;false;63;95;191;;; -199311;1;0;false;false;;;;;; -199312;12;0;false;false;63;95;191;;; -199324;1;0;false;false;;;;;; -199325;3;0;false;false;63;95;191;;; -199328;1;0;false;false;;;;;; -199329;7;0;false;false;63;95;191;;; -199336;1;0;false;false;;;;;; -199337;5;0;false;false;63;95;191;;; -199342;1;0;false;false;;;;;; -199343;3;0;false;false;63;95;191;;; -199346;1;0;false;false;;;;;; -199347;3;0;false;false;63;95;191;;; -199350;1;0;false;false;;;;;; -199351;5;0;false;false;63;95;191;;; -199356;1;0;false;false;;;;;; -199357;2;0;false;false;63;95;191;;; -199359;1;0;false;false;;;;;; -199360;3;0;false;false;63;95;191;;; -199363;1;0;false;false;;;;;; -199364;7;0;false;false;63;95;191;;; -199371;3;0;false;false;;;;;; -199374;1;0;false;false;63;95;191;;; -199375;1;0;false;false;;;;;; -199376;4;0;false;false;63;95;191;;; -199380;1;0;false;false;;;;;; -199381;1;0;false;false;63;95;191;;; -199382;1;0;false;false;;;;;; -199383;6;0;false;false;127;127;159;;; -199389;17;0;false;false;63;95;191;;; -199406;7;0;false;false;127;127;159;;; -199413;1;0;false;false;;;;;; -199414;2;0;false;false;63;95;191;;; -199416;1;0;false;false;;;;;; -199417;4;0;false;false;63;95;191;;; -199421;1;0;false;false;;;;;; -199422;1;0;false;false;63;95;191;;; -199423;1;0;false;false;;;;;; -199424;6;0;false;false;63;95;191;;; -199430;1;0;false;false;;;;;; -199431;4;0;false;false;63;95;191;;; -199435;4;0;false;false;;;;;; -199439;1;0;false;false;63;95;191;;; -199440;1;0;false;false;;;;;; -199441;2;0;false;false;63;95;191;;; -199443;1;0;false;false;;;;;; -199444;3;0;false;false;63;95;191;;; -199447;1;0;false;false;;;;;; -199448;4;0;false;false;63;95;191;;; -199452;1;0;false;false;;;;;; -199453;12;0;false;false;63;95;191;;; -199465;1;0;false;false;;;;;; -199466;2;0;false;false;63;95;191;;; -199468;1;0;false;false;;;;;; -199469;3;0;false;false;63;95;191;;; -199472;1;0;false;false;;;;;; -199473;6;0;false;false;63;95;191;;; -199479;1;0;false;false;;;;;; -199480;4;0;false;false;63;95;191;;; -199484;1;0;false;false;;;;;; -199485;6;0;false;false;63;95;191;;; -199491;1;0;false;false;;;;;; -199492;4;0;false;false;63;95;191;;; -199496;1;0;false;false;;;;;; -199497;7;0;false;false;63;95;191;;; -199504;4;0;false;false;;;;;; -199508;1;0;false;false;63;95;191;;; -199509;1;0;false;false;;;;;; -199510;3;0;false;false;63;95;191;;; -199513;1;0;false;false;;;;;; -199514;4;0;false;false;63;95;191;;; -199518;1;0;false;false;;;;;; -199519;3;0;false;false;63;95;191;;; -199522;1;0;false;false;;;;;; -199523;7;0;false;false;63;95;191;;; -199530;1;0;false;false;;;;;; -199531;5;0;false;false;63;95;191;;; -199536;1;0;false;false;;;;;; -199537;3;0;false;false;63;95;191;;; -199540;1;0;false;false;;;;;; -199541;4;0;false;false;63;95;191;;; -199545;1;0;false;false;;;;;; -199546;8;0;false;false;63;95;191;;; -199554;3;0;false;false;;;;;; -199557;1;0;false;false;63;95;191;;; -199558;1;0;false;false;;;;;; -199559;4;0;false;false;127;127;159;;; -199563;3;0;false;false;;;;;; -199566;1;0;false;false;63;95;191;;; -199567;3;0;false;false;;;;;; -199570;1;0;false;false;63;95;191;;; -199571;1;0;false;false;;;;;; -199572;11;1;false;false;127;159;191;;; -199583;12;0;false;false;63;95;191;;; -199595;1;0;false;false;;;;;; -199596;4;0;false;false;127;127;159;;; -199600;3;0;false;false;;;;;; -199603;1;0;false;false;63;95;191;;; -199604;4;0;false;false;;;;;; -199608;4;0;false;false;127;127;159;;; -199612;21;0;false;false;63;95;191;;; -199633;1;0;false;false;;;;;; -199634;1;0;false;false;127;127;159;;; -199635;1;0;false;false;;;;;; -199636;2;0;false;false;63;95;191;;; -199638;1;0;false;false;;;;;; -199639;3;0;false;false;63;95;191;;; -199642;1;0;false;false;;;;;; -199643;8;0;false;false;63;95;191;;; -199651;1;0;false;false;;;;;; -199652;3;0;false;false;63;95;191;;; -199655;1;0;false;false;;;;;; -199656;4;0;false;false;63;95;191;;; -199660;1;0;false;false;;;;;; -199661;8;0;false;false;63;95;191;;; -199669;5;0;false;false;127;127;159;;; -199674;3;0;false;false;;;;;; -199677;1;0;false;false;63;95;191;;; -199678;4;0;false;false;;;;;; -199682;4;0;false;false;127;127;159;;; -199686;27;0;false;false;63;95;191;;; -199713;1;0;false;false;;;;;; -199714;1;0;false;false;127;127;159;;; -199715;1;0;false;false;;;;;; -199716;2;0;false;false;63;95;191;;; -199718;1;0;false;false;;;;;; -199719;3;0;false;false;63;95;191;;; -199722;1;0;false;false;;;;;; -199723;6;0;false;false;63;95;191;;; -199729;1;0;false;false;;;;;; -199730;4;0;false;false;63;95;191;;; -199734;1;0;false;false;;;;;; -199735;3;0;false;false;63;95;191;;; -199738;1;0;false;false;;;;;; -199739;6;0;false;false;63;95;191;;; -199745;1;0;false;false;;;;;; -199746;4;0;false;false;63;95;191;;; -199750;1;0;false;false;;;;;; -199751;7;0;false;false;63;95;191;;; -199758;1;0;false;false;;;;;; -199759;3;0;false;false;63;95;191;;; -199762;1;0;false;false;;;;;; -199763;8;0;false;false;63;95;191;;; -199771;5;0;false;false;127;127;159;;; -199776;3;0;false;false;;;;;; -199779;1;0;false;false;63;95;191;;; -199780;1;0;false;false;;;;;; -199781;5;0;false;false;127;127;159;;; -199786;3;0;false;false;;;;;; -199789;1;0;false;false;63;95;191;;; -199790;3;0;false;false;;;;;; -199793;1;0;false;false;63;95;191;;; -199794;1;0;false;false;;;;;; -199795;5;1;false;false;127;159;191;;; -199800;14;0;false;false;63;95;191;;; -199814;3;0;false;false;;;;;; -199817;2;0;false;false;63;95;191;;; -199819;2;0;false;false;;;;;; -199821;6;1;false;false;127;0;85;;; -199827;1;0;false;false;;;;;; -199828;4;1;false;false;127;0;85;;; -199832;1;0;false;false;;;;;; -199833;8;0;false;false;0;0;0;;; -199841;1;0;false;false;;;;;; -199842;1;0;false;false;0;0;0;;; -199843;3;0;false;false;;;;;; -199846;3;1;false;false;127;0;85;;; -199849;1;0;false;false;;;;;; -199850;10;0;false;false;0;0;0;;; -199860;6;0;false;false;;;;;; -199866;5;1;false;false;127;0;85;;; -199871;10;0;false;false;0;0;0;;; -199881;3;0;false;false;;;;;; -199884;9;0;false;false;0;0;0;;; -199893;1;0;false;false;;;;;; -199894;1;0;false;false;0;0;0;;; -199895;1;0;false;false;;;;;; -199896;23;0;false;false;0;0;0;;; -199919;1;0;false;false;;;;;; -199920;1;0;false;false;0;0;0;;; -199921;1;0;false;false;;;;;; -199922;8;0;false;false;0;0;0;;; -199930;1;0;false;false;;;;;; -199931;1;0;false;false;0;0;0;;; -199932;1;0;false;false;;;;;; -199933;2;0;false;false;0;0;0;;; -199935;3;0;false;false;;;;;; -199938;31;0;false;false;0;0;0;;; -199969;1;0;false;false;;;;;; -199970;10;0;false;false;0;0;0;;; -199980;1;0;false;false;;;;;; -199981;4;1;false;false;127;0;85;;; -199985;2;0;false;false;0;0;0;;; -199987;3;0;false;false;;;;;; -199990;29;0;false;false;0;0;0;;; -200019;1;0;false;false;;;;;; -200020;11;0;false;false;0;0;0;;; -200031;3;0;false;false;;;;;; -200034;25;0;false;false;0;0;0;;; -200059;2;0;false;false;;;;;; -200061;1;0;false;false;0;0;0;;; -200062;2;0;false;false;;;;;; -200064;3;0;false;false;63;95;191;;; -200067;3;0;false;false;;;;;; -200070;1;0;false;false;63;95;191;;; -200071;1;0;false;false;;;;;; -200072;6;0;false;false;63;95;191;;; -200078;1;0;false;false;;;;;; -200079;3;0;false;false;63;95;191;;; -200082;1;0;false;false;;;;;; -200083;11;0;false;false;63;95;191;;; -200094;1;0;false;false;;;;;; -200095;4;0;false;false;63;95;191;;; -200099;1;0;false;false;;;;;; -200100;2;0;false;false;63;95;191;;; -200102;1;0;false;false;;;;;; -200103;3;0;false;false;63;95;191;;; -200106;1;0;false;false;;;;;; -200107;8;0;false;false;63;95;191;;; -200115;1;0;false;false;;;;;; -200116;9;0;false;false;63;95;191;;; -200125;1;0;false;false;;;;;; -200126;2;0;false;false;63;95;191;;; -200128;3;0;false;false;;;;;; -200131;1;0;false;false;63;95;191;;; -200132;1;0;false;false;;;;;; -200133;3;0;false;false;63;95;191;;; -200136;1;0;false;false;;;;;; -200137;9;0;false;false;63;95;191;;; -200146;1;0;false;false;;;;;; -200147;2;0;false;false;63;95;191;;; -200149;1;0;false;false;;;;;; -200150;2;0;false;false;63;95;191;;; -200152;1;0;false;false;;;;;; -200153;6;0;false;false;63;95;191;;; -200159;1;0;false;false;;;;;; -200160;2;0;false;false;63;95;191;;; -200162;1;0;false;false;;;;;; -200163;7;0;false;false;63;95;191;;; -200170;1;0;false;false;;;;;; -200171;2;0;false;false;63;95;191;;; -200173;1;0;false;false;;;;;; -200174;2;0;false;false;63;95;191;;; -200176;1;0;false;false;;;;;; -200177;8;0;false;false;63;95;191;;; -200185;4;0;false;false;;;;;; -200189;1;0;false;false;63;95;191;;; -200190;1;0;false;false;;;;;; -200191;3;0;false;false;63;95;191;;; -200194;1;0;false;false;;;;;; -200195;4;0;false;false;63;95;191;;; -200199;1;0;false;false;;;;;; -200200;4;0;false;false;63;95;191;;; -200204;1;0;false;false;;;;;; -200205;1;0;false;false;63;95;191;;; -200206;1;0;false;false;;;;;; -200207;5;0;false;false;63;95;191;;; -200212;1;0;false;false;;;;;; -200213;7;0;false;false;63;95;191;;; -200220;1;0;false;false;;;;;; -200221;2;0;false;false;63;95;191;;; -200223;1;0;false;false;;;;;; -200224;10;0;false;false;63;95;191;;; -200234;1;0;false;false;;;;;; -200235;4;0;false;false;63;95;191;;; -200239;1;0;false;false;;;;;; -200240;4;0;false;false;63;95;191;;; -200244;1;0;false;false;;;;;; -200245;2;0;false;false;63;95;191;;; -200247;3;0;false;false;;;;;; -200250;1;0;false;false;63;95;191;;; -200251;1;0;false;false;;;;;; -200252;3;0;false;false;63;95;191;;; -200255;1;0;false;false;;;;;; -200256;8;0;false;false;63;95;191;;; -200264;1;0;false;false;;;;;; -200265;4;0;false;false;63;95;191;;; -200269;1;0;false;false;;;;;; -200270;2;0;false;false;63;95;191;;; -200272;1;0;false;false;;;;;; -200273;8;0;false;false;63;95;191;;; -200281;1;0;false;false;;;;;; -200282;2;0;false;false;63;95;191;;; -200284;1;0;false;false;;;;;; -200285;3;0;false;false;63;95;191;;; -200288;1;0;false;false;;;;;; -200289;6;0;false;false;127;127;159;;; -200295;3;0;false;false;63;95;191;;; -200298;7;0;false;false;127;127;159;;; -200305;1;0;false;false;;;;;; -200306;4;0;false;false;63;95;191;;; -200310;3;0;false;false;;;;;; -200313;1;0;false;false;63;95;191;;; -200314;1;0;false;false;;;;;; -200315;2;0;false;false;63;95;191;;; -200317;1;0;false;false;;;;;; -200318;6;0;false;false;127;127;159;;; -200324;4;0;false;false;63;95;191;;; -200328;7;0;false;false;127;127;159;;; -200335;1;0;false;false;63;95;191;;; -200336;1;0;false;false;;;;;; -200337;3;0;false;false;63;95;191;;; -200340;1;0;false;false;;;;;; -200341;8;0;false;false;63;95;191;;; -200349;1;0;false;false;;;;;; -200350;2;0;false;false;63;95;191;;; -200352;1;0;false;false;;;;;; -200353;3;0;false;false;63;95;191;;; -200356;1;0;false;false;;;;;; -200357;8;0;false;false;63;95;191;;; -200365;1;0;false;false;;;;;; -200366;5;0;false;false;63;95;191;;; -200371;3;0;false;false;;;;;; -200374;1;0;false;false;63;95;191;;; -200375;1;0;false;false;;;;;; -200376;9;0;false;false;63;95;191;;; -200385;1;0;false;false;;;;;; -200386;4;0;false;false;63;95;191;;; -200390;1;0;false;false;;;;;; -200391;3;0;false;false;63;95;191;;; -200394;1;0;false;false;;;;;; -200395;9;0;false;false;63;95;191;;; -200404;1;0;false;false;;;;;; -200405;4;0;false;false;63;95;191;;; -200409;1;0;false;false;;;;;; -200410;4;0;false;false;63;95;191;;; -200414;1;0;false;false;;;;;; -200415;4;0;false;false;63;95;191;;; -200419;1;0;false;false;;;;;; -200420;5;0;false;false;63;95;191;;; -200425;1;0;false;false;;;;;; -200426;5;0;false;false;63;95;191;;; -200431;3;0;false;false;;;;;; -200434;1;0;false;false;63;95;191;;; -200435;1;0;false;false;;;;;; -200436;12;0;false;false;63;95;191;;; -200448;1;0;false;false;;;;;; -200449;6;0;false;false;63;95;191;;; -200455;1;0;false;false;;;;;; -200456;2;0;false;false;63;95;191;;; -200458;1;0;false;false;;;;;; -200459;3;0;false;false;63;95;191;;; -200462;1;0;false;false;;;;;; -200463;6;0;false;false;127;127;159;;; -200469;3;0;false;false;63;95;191;;; -200472;7;0;false;false;127;127;159;;; -200479;1;0;false;false;;;;;; -200480;4;0;false;false;63;95;191;;; -200484;1;0;false;false;;;;;; -200485;2;0;false;false;63;95;191;;; -200487;4;0;false;false;;;;;; -200491;1;0;false;false;63;95;191;;; -200492;1;0;false;false;;;;;; -200493;6;0;false;false;127;127;159;;; -200499;5;0;false;false;63;95;191;;; -200504;7;0;false;false;127;127;159;;; -200511;1;0;false;false;63;95;191;;; -200512;1;0;false;false;;;;;; -200513;3;0;false;false;63;95;191;;; -200516;1;0;false;false;;;;;; -200517;8;0;false;false;63;95;191;;; -200525;1;0;false;false;;;;;; -200526;4;0;false;false;63;95;191;;; -200530;1;0;false;false;;;;;; -200531;3;0;false;false;63;95;191;;; -200534;1;0;false;false;;;;;; -200535;2;0;false;false;63;95;191;;; -200537;1;0;false;false;;;;;; -200538;8;0;false;false;63;95;191;;; -200546;3;0;false;false;;;;;; -200549;1;0;false;false;63;95;191;;; -200550;1;0;false;false;;;;;; -200551;3;0;false;false;127;127;159;;; -200554;3;0;false;false;;;;;; -200557;1;0;false;false;63;95;191;;; -200558;1;0;false;false;;;;;; -200559;5;0;false;false;63;95;191;;; -200564;1;0;false;false;;;;;; -200565;3;0;false;false;63;95;191;;; -200568;1;0;false;false;;;;;; -200569;7;0;false;false;63;95;191;;; -200576;1;0;false;false;;;;;; -200577;5;0;false;false;63;95;191;;; -200582;1;0;false;false;;;;;; -200583;2;0;false;false;63;95;191;;; -200585;1;0;false;false;;;;;; -200586;3;0;false;false;63;95;191;;; -200589;1;0;false;false;;;;;; -200590;5;0;false;false;63;95;191;;; -200595;1;0;false;false;;;;;; -200596;2;0;false;false;63;95;191;;; -200598;1;0;false;false;;;;;; -200599;3;0;false;false;63;95;191;;; -200602;1;0;false;false;;;;;; -200603;9;0;false;false;63;95;191;;; -200612;1;0;false;false;;;;;; -200613;9;0;false;false;63;95;191;;; -200622;3;0;false;false;;;;;; -200625;1;0;false;false;63;95;191;;; -200626;1;0;false;false;;;;;; -200627;2;0;false;false;63;95;191;;; -200629;1;0;false;false;;;;;; -200630;8;0;false;false;63;95;191;;; -200638;1;0;false;false;;;;;; -200639;12;0;false;false;63;95;191;;; -200651;1;0;false;false;;;;;; -200652;3;0;false;false;63;95;191;;; -200655;1;0;false;false;;;;;; -200656;7;0;false;false;63;95;191;;; -200663;1;0;false;false;;;;;; -200664;5;0;false;false;63;95;191;;; -200669;1;0;false;false;;;;;; -200670;2;0;false;false;63;95;191;;; -200672;1;0;false;false;;;;;; -200673;3;0;false;false;63;95;191;;; -200676;1;0;false;false;;;;;; -200677;7;0;false;false;63;95;191;;; -200684;1;0;false;false;;;;;; -200685;6;0;false;false;63;95;191;;; -200691;3;0;false;false;;;;;; -200694;1;0;false;false;63;95;191;;; -200695;1;0;false;false;;;;;; -200696;4;0;false;false;63;95;191;;; -200700;1;0;false;false;;;;;; -200701;1;0;false;false;63;95;191;;; -200702;1;0;false;false;;;;;; -200703;6;0;false;false;127;127;159;;; -200709;17;0;false;false;63;95;191;;; -200726;7;0;false;false;127;127;159;;; -200733;1;0;false;false;;;;;; -200734;2;0;false;false;63;95;191;;; -200736;1;0;false;false;;;;;; -200737;4;0;false;false;63;95;191;;; -200741;1;0;false;false;;;;;; -200742;1;0;false;false;63;95;191;;; -200743;1;0;false;false;;;;;; -200744;6;0;false;false;63;95;191;;; -200750;1;0;false;false;;;;;; -200751;4;0;false;false;63;95;191;;; -200755;4;0;false;false;;;;;; -200759;1;0;false;false;63;95;191;;; -200760;1;0;false;false;;;;;; -200761;2;0;false;false;63;95;191;;; -200763;1;0;false;false;;;;;; -200764;3;0;false;false;63;95;191;;; -200767;1;0;false;false;;;;;; -200768;4;0;false;false;63;95;191;;; -200772;1;0;false;false;;;;;; -200773;12;0;false;false;63;95;191;;; -200785;1;0;false;false;;;;;; -200786;2;0;false;false;63;95;191;;; -200788;1;0;false;false;;;;;; -200789;3;0;false;false;63;95;191;;; -200792;1;0;false;false;;;;;; -200793;6;0;false;false;63;95;191;;; -200799;1;0;false;false;;;;;; -200800;4;0;false;false;63;95;191;;; -200804;1;0;false;false;;;;;; -200805;6;0;false;false;63;95;191;;; -200811;1;0;false;false;;;;;; -200812;4;0;false;false;63;95;191;;; -200816;1;0;false;false;;;;;; -200817;7;0;false;false;63;95;191;;; -200824;4;0;false;false;;;;;; -200828;1;0;false;false;63;95;191;;; -200829;1;0;false;false;;;;;; -200830;3;0;false;false;63;95;191;;; -200833;1;0;false;false;;;;;; -200834;4;0;false;false;63;95;191;;; -200838;1;0;false;false;;;;;; -200839;3;0;false;false;63;95;191;;; -200842;1;0;false;false;;;;;; -200843;7;0;false;false;63;95;191;;; -200850;1;0;false;false;;;;;; -200851;5;0;false;false;63;95;191;;; -200856;1;0;false;false;;;;;; -200857;3;0;false;false;63;95;191;;; -200860;1;0;false;false;;;;;; -200861;4;0;false;false;63;95;191;;; -200865;1;0;false;false;;;;;; -200866;8;0;false;false;63;95;191;;; -200874;3;0;false;false;;;;;; -200877;1;0;false;false;63;95;191;;; -200878;1;0;false;false;;;;;; -200879;4;0;false;false;127;127;159;;; -200883;3;0;false;false;;;;;; -200886;1;0;false;false;63;95;191;;; -200887;3;0;false;false;;;;;; -200890;1;0;false;false;63;95;191;;; -200891;1;0;false;false;;;;;; -200892;7;1;false;false;127;159;191;;; -200899;1;0;false;false;63;95;191;;; -200900;1;0;false;false;;;;;; -200901;3;0;false;false;63;95;191;;; -200904;1;0;false;false;;;;;; -200905;1;0;false;false;63;95;191;;; -200906;1;0;false;false;;;;;; -200907;10;0;false;false;63;95;191;;; -200917;1;0;false;false;;;;;; -200918;2;0;false;false;63;95;191;;; -200920;1;0;false;false;;;;;; -200921;3;0;false;false;63;95;191;;; -200924;1;0;false;false;;;;;; -200925;4;0;false;false;63;95;191;;; -200929;1;0;false;false;;;;;; -200930;2;0;false;false;63;95;191;;; -200932;1;0;false;false;;;;;; -200933;4;0;false;false;63;95;191;;; -200937;3;0;false;false;;;;;; -200940;1;0;false;false;63;95;191;;; -200941;1;0;false;false;;;;;; -200942;7;1;false;false;127;159;191;;; -200949;1;0;false;false;63;95;191;;; -200950;1;0;false;false;;;;;; -200951;3;0;false;false;63;95;191;;; -200954;1;0;false;false;;;;;; -200955;1;0;false;false;63;95;191;;; -200956;1;0;false;false;;;;;; -200957;10;0;false;false;63;95;191;;; -200967;1;0;false;false;;;;;; -200968;2;0;false;false;63;95;191;;; -200970;1;0;false;false;;;;;; -200971;3;0;false;false;63;95;191;;; -200974;1;0;false;false;;;;;; -200975;4;0;false;false;63;95;191;;; -200979;1;0;false;false;;;;;; -200980;2;0;false;false;63;95;191;;; -200982;1;0;false;false;;;;;; -200983;4;0;false;false;63;95;191;;; -200987;3;0;false;false;;;;;; -200990;1;0;false;false;63;95;191;;; -200991;1;0;false;false;;;;;; -200992;7;1;false;false;127;159;191;;; -200999;5;0;false;false;63;95;191;;; -201004;1;0;false;false;;;;;; -201005;3;0;false;false;63;95;191;;; -201008;1;0;false;false;;;;;; -201009;5;0;false;false;63;95;191;;; -201014;1;0;false;false;;;;;; -201015;2;0;false;false;63;95;191;;; -201017;1;0;false;false;;;;;; -201018;3;0;false;false;63;95;191;;; -201021;1;0;false;false;;;;;; -201022;4;0;false;false;63;95;191;;; -201026;1;0;false;false;;;;;; -201027;2;0;false;false;63;95;191;;; -201029;1;0;false;false;;;;;; -201030;4;0;false;false;63;95;191;;; -201034;3;0;false;false;;;;;; -201037;1;0;false;false;63;95;191;;; -201038;1;0;false;false;;;;;; -201039;7;1;false;false;127;159;191;;; -201046;6;0;false;false;63;95;191;;; -201052;1;0;false;false;;;;;; -201053;3;0;false;false;63;95;191;;; -201056;1;0;false;false;;;;;; -201057;6;0;false;false;63;95;191;;; -201063;1;0;false;false;;;;;; -201064;2;0;false;false;63;95;191;;; -201066;1;0;false;false;;;;;; -201067;3;0;false;false;63;95;191;;; -201070;1;0;false;false;;;;;; -201071;4;0;false;false;63;95;191;;; -201075;1;0;false;false;;;;;; -201076;2;0;false;false;63;95;191;;; -201078;1;0;false;false;;;;;; -201079;4;0;false;false;63;95;191;;; -201083;3;0;false;false;;;;;; -201086;1;0;false;false;63;95;191;;; -201087;1;0;false;false;;;;;; -201088;7;1;false;false;127;159;191;;; -201095;3;0;false;false;63;95;191;;; -201098;1;0;false;false;;;;;; -201099;6;0;false;false;127;127;159;;; -201105;4;0;false;false;63;95;191;;; -201109;7;0;false;false;127;127;159;;; -201116;1;0;false;false;;;;;; -201117;2;0;false;false;63;95;191;;; -201119;1;0;false;false;;;;;; -201120;8;0;false;false;63;95;191;;; -201128;1;0;false;false;;;;;; -201129;6;0;false;false;63;95;191;;; -201135;1;0;false;false;;;;;; -201136;7;0;false;false;63;95;191;;; -201143;1;0;false;false;;;;;; -201144;3;0;false;false;63;95;191;;; -201147;1;0;false;false;;;;;; -201148;6;0;false;false;127;127;159;;; -201154;5;0;false;false;63;95;191;;; -201159;7;0;false;false;127;127;159;;; -201166;1;0;false;false;;;;;; -201167;9;0;false;false;63;95;191;;; -201176;3;0;false;false;;;;;; -201179;1;0;false;false;63;95;191;;; -201180;3;0;false;false;;;;;; -201183;1;0;false;false;63;95;191;;; -201184;1;0;false;false;;;;;; -201185;11;1;false;false;127;159;191;;; -201196;12;0;false;false;63;95;191;;; -201208;1;0;false;false;;;;;; -201209;4;0;false;false;127;127;159;;; -201213;3;0;false;false;;;;;; -201216;1;0;false;false;63;95;191;;; -201217;4;0;false;false;;;;;; -201221;4;0;false;false;127;127;159;;; -201225;21;0;false;false;63;95;191;;; -201246;1;0;false;false;;;;;; -201247;1;0;false;false;127;127;159;;; -201248;1;0;false;false;;;;;; -201249;2;0;false;false;63;95;191;;; -201251;1;0;false;false;;;;;; -201252;3;0;false;false;63;95;191;;; -201255;1;0;false;false;;;;;; -201256;8;0;false;false;63;95;191;;; -201264;1;0;false;false;;;;;; -201265;3;0;false;false;63;95;191;;; -201268;1;0;false;false;;;;;; -201269;4;0;false;false;63;95;191;;; -201273;1;0;false;false;;;;;; -201274;8;0;false;false;63;95;191;;; -201282;5;0;false;false;127;127;159;;; -201287;3;0;false;false;;;;;; -201290;1;0;false;false;63;95;191;;; -201291;4;0;false;false;;;;;; -201295;4;0;false;false;127;127;159;;; -201299;27;0;false;false;63;95;191;;; -201326;1;0;false;false;;;;;; -201327;1;0;false;false;127;127;159;;; -201328;1;0;false;false;;;;;; -201329;2;0;false;false;63;95;191;;; -201331;1;0;false;false;;;;;; -201332;3;0;false;false;63;95;191;;; -201335;1;0;false;false;;;;;; -201336;6;0;false;false;63;95;191;;; -201342;1;0;false;false;;;;;; -201343;4;0;false;false;63;95;191;;; -201347;1;0;false;false;;;;;; -201348;3;0;false;false;63;95;191;;; -201351;1;0;false;false;;;;;; -201352;6;0;false;false;63;95;191;;; -201358;1;0;false;false;;;;;; -201359;4;0;false;false;63;95;191;;; -201363;1;0;false;false;;;;;; -201364;7;0;false;false;63;95;191;;; -201371;1;0;false;false;;;;;; -201372;3;0;false;false;63;95;191;;; -201375;1;0;false;false;;;;;; -201376;8;0;false;false;63;95;191;;; -201384;5;0;false;false;127;127;159;;; -201389;3;0;false;false;;;;;; -201392;1;0;false;false;63;95;191;;; -201393;1;0;false;false;;;;;; -201394;5;0;false;false;127;127;159;;; -201399;3;0;false;false;;;;;; -201402;1;0;false;false;63;95;191;;; -201403;3;0;false;false;;;;;; -201406;1;0;false;false;63;95;191;;; -201407;1;0;false;false;;;;;; -201408;5;1;false;false;127;159;191;;; -201413;14;0;false;false;63;95;191;;; -201427;3;0;false;false;;;;;; -201430;2;0;false;false;63;95;191;;; -201432;2;0;false;false;;;;;; -201434;6;1;false;false;127;0;85;;; -201440;1;0;false;false;;;;;; -201441;4;1;false;false;127;0;85;;; -201445;1;0;false;false;;;;;; -201446;7;0;false;false;0;0;0;;; -201453;3;1;false;false;127;0;85;;; -201456;1;0;false;false;;;;;; -201457;2;0;false;false;0;0;0;;; -201459;1;0;false;false;;;;;; -201460;3;1;false;false;127;0;85;;; -201463;1;0;false;false;;;;;; -201464;2;0;false;false;0;0;0;;; -201466;1;0;false;false;;;;;; -201467;3;1;false;false;127;0;85;;; -201470;1;0;false;false;;;;;; -201471;6;0;false;false;0;0;0;;; -201477;1;0;false;false;;;;;; -201478;3;1;false;false;127;0;85;;; -201481;1;0;false;false;;;;;; -201482;7;0;false;false;0;0;0;;; -201489;1;0;false;false;;;;;; -201490;7;1;false;false;127;0;85;;; -201497;1;0;false;false;;;;;; -201498;4;0;false;false;0;0;0;;; -201502;1;0;false;false;;;;;; -201503;1;0;false;false;0;0;0;;; -201504;3;0;false;false;;;;;; -201507;5;1;false;false;127;0;85;;; -201512;10;0;false;false;0;0;0;;; -201522;1;0;false;false;;;;;; -201523;2;0;false;false;0;0;0;;; -201525;1;0;false;false;;;;;; -201526;6;0;false;false;0;0;0;;; -201532;1;0;false;false;;;;;; -201533;7;0;false;false;0;0;0;;; -201540;1;0;false;false;;;;;; -201541;5;0;false;false;0;0;0;;; -201546;3;0;false;false;;;;;; -201549;2;1;false;false;127;0;85;;; -201551;1;0;false;false;;;;;; -201552;7;0;false;false;0;0;0;;; -201559;1;0;false;false;;;;;; -201560;1;0;false;false;0;0;0;;; -201561;1;0;false;false;;;;;; -201562;2;0;false;false;0;0;0;;; -201564;1;0;false;false;;;;;; -201565;1;0;false;false;0;0;0;;; -201566;4;0;false;false;;;;;; -201570;3;1;false;false;127;0;85;;; -201573;1;0;false;false;;;;;; -201574;9;0;false;false;0;0;0;;; -201583;1;0;false;false;;;;;; -201584;1;0;false;false;0;0;0;;; -201585;1;0;false;false;;;;;; -201586;23;0;false;false;0;0;0;;; -201609;4;0;false;false;;;;;; -201613;3;1;false;false;127;0;85;;; -201616;1;0;false;false;;;;;; -201617;9;0;false;false;0;0;0;;; -201626;1;0;false;false;;;;;; -201627;1;0;false;false;0;0;0;;; -201628;1;0;false;false;;;;;; -201629;14;0;false;false;0;0;0;;; -201643;1;0;false;false;;;;;; -201644;1;0;false;false;0;0;0;;; -201645;1;0;false;false;;;;;; -201646;2;0;false;false;0;0;0;;; -201648;1;0;false;false;;;;;; -201649;1;0;false;false;0;0;0;;; -201650;1;0;false;false;;;;;; -201651;11;0;false;false;0;0;0;;; -201662;4;0;false;false;;;;;; -201666;3;1;false;false;127;0;85;;; -201669;1;0;false;false;;;;;; -201670;7;0;false;false;0;0;0;;; -201677;1;0;false;false;;;;;; -201678;1;0;false;false;0;0;0;;; -201679;1;0;false;false;;;;;; -201680;9;0;false;false;0;0;0;;; -201689;1;0;false;false;;;;;; -201690;1;0;false;false;0;0;0;;; -201691;1;0;false;false;;;;;; -201692;26;0;false;false;0;0;0;;; -201718;1;0;false;false;;;;;; -201719;12;0;false;false;0;0;0;;; -201731;4;0;false;false;;;;;; -201735;3;1;false;false;127;0;85;;; -201738;1;0;false;false;;;;;; -201739;10;0;false;false;0;0;0;;; -201749;8;0;false;false;;;;;; -201757;44;0;false;false;63;127;95;;; -201801;2;0;false;false;;;;;; -201803;9;0;false;false;0;0;0;;; -201812;1;0;false;false;;;;;; -201813;1;0;false;false;0;0;0;;; -201814;1;0;false;false;;;;;; -201815;19;0;false;false;0;0;0;;; -201834;1;0;false;false;;;;;; -201835;11;0;false;false;0;0;0;;; -201846;4;0;false;false;;;;;; -201850;9;0;false;false;0;0;0;;; -201859;1;0;false;false;;;;;; -201860;1;0;false;false;0;0;0;;; -201861;1;0;false;false;;;;;; -201862;17;0;false;false;0;0;0;;; -201879;1;0;false;false;;;;;; -201880;10;0;false;false;0;0;0;;; -201890;1;0;false;false;;;;;; -201891;1;0;false;false;0;0;0;;; -201892;1;0;false;false;;;;;; -201893;10;0;false;false;0;0;0;;; -201903;4;0;false;false;;;;;; -201907;26;0;false;false;0;0;0;;; -201933;1;0;false;false;;;;;; -201934;10;0;false;false;0;0;0;;; -201944;1;0;false;false;;;;;; -201945;4;1;false;false;127;0;85;;; -201949;2;0;false;false;0;0;0;;; -201951;4;0;false;false;;;;;; -201955;37;0;false;false;63;127;95;;; -201992;2;0;false;false;;;;;; -201994;9;0;false;false;0;0;0;;; -202003;1;0;false;false;;;;;; -202004;1;0;false;false;0;0;0;;; -202005;1;0;false;false;;;;;; -202006;23;0;false;false;0;0;0;;; -202029;1;0;false;false;;;;;; -202030;1;0;false;false;0;0;0;;; -202031;1;0;false;false;;;;;; -202032;8;0;false;false;0;0;0;;; -202040;1;0;false;false;;;;;; -202041;1;0;false;false;0;0;0;;; -202042;1;0;false;false;;;;;; -202043;2;0;false;false;0;0;0;;; -202045;4;0;false;false;;;;;; -202049;29;0;false;false;0;0;0;;; -202078;1;0;false;false;;;;;; -202079;11;0;false;false;0;0;0;;; -202090;4;0;false;false;;;;;; -202094;25;0;false;false;0;0;0;;; -202119;3;0;false;false;;;;;; -202122;1;0;false;false;0;0;0;;; -202123;2;0;false;false;;;;;; -202125;1;0;false;false;0;0;0;;; -202126;2;0;false;false;;;;;; -202128;3;0;false;false;63;95;191;;; -202131;4;0;false;false;;;;;; -202135;1;0;false;false;63;95;191;;; -202136;1;0;false;false;;;;;; -202137;7;0;false;false;63;95;191;;; -202144;1;0;false;false;;;;;; -202145;1;0;false;false;63;95;191;;; -202146;1;0;false;false;;;;;; -202147;4;0;false;false;63;95;191;;; -202151;1;0;false;false;;;;;; -202152;5;0;false;false;63;95;191;;; -202157;1;0;false;false;;;;;; -202158;2;0;false;false;63;95;191;;; -202160;1;0;false;false;;;;;; -202161;3;0;false;false;63;95;191;;; -202164;1;0;false;false;;;;;; -202165;9;0;false;false;63;95;191;;; -202174;1;0;false;false;;;;;; -202175;5;0;false;false;63;95;191;;; -202180;3;0;false;false;;;;;; -202183;1;0;false;false;63;95;191;;; -202184;1;0;false;false;;;;;; -202185;3;0;false;false;127;127;159;;; -202188;3;0;false;false;;;;;; -202191;1;0;false;false;63;95;191;;; -202192;3;0;false;false;;;;;; -202195;1;0;false;false;63;95;191;;; -202196;1;0;false;false;;;;;; -202197;7;1;false;false;127;159;191;;; -202204;9;0;false;false;63;95;191;;; -202213;1;0;false;false;;;;;; -202214;5;0;false;false;63;95;191;;; -202219;1;0;false;false;;;;;; -202220;4;0;false;false;63;95;191;;; -202224;1;0;false;false;;;;;; -202225;2;0;false;false;63;95;191;;; -202227;1;0;false;false;;;;;; -202228;6;0;false;false;63;95;191;;; -202234;1;0;false;false;;;;;; -202235;2;0;false;false;63;95;191;;; -202237;1;0;false;false;;;;;; -202238;3;0;false;false;63;95;191;;; -202241;1;0;false;false;;;;;; -202242;9;0;false;false;63;95;191;;; -202251;1;0;false;false;;;;;; -202252;6;0;false;false;63;95;191;;; -202258;3;0;false;false;;;;;; -202261;1;0;false;false;63;95;191;;; -202262;1;0;false;false;;;;;; -202263;7;1;false;false;127;159;191;;; -202270;17;0;false;false;63;95;191;;; -202287;1;0;false;false;;;;;; -202288;6;0;false;false;63;95;191;;; -202294;1;0;false;false;;;;;; -202295;2;0;false;false;63;95;191;;; -202297;1;0;false;false;;;;;; -202298;9;0;false;false;63;95;191;;; -202307;1;0;false;false;;;;;; -202308;2;0;false;false;63;95;191;;; -202310;1;0;false;false;;;;;; -202311;5;0;false;false;63;95;191;;; -202316;1;0;false;false;;;;;; -202317;9;0;false;false;63;95;191;;; -202326;3;0;false;false;;;;;; -202329;1;0;false;false;63;95;191;;; -202330;1;0;false;false;;;;;; -202331;7;1;false;false;127;159;191;;; -202338;8;0;false;false;63;95;191;;; -202346;1;0;false;false;;;;;; -202347;4;0;false;false;63;95;191;;; -202351;1;0;false;false;;;;;; -202352;4;0;false;false;63;95;191;;; -202356;1;0;false;false;;;;;; -202357;2;0;false;false;63;95;191;;; -202359;1;0;false;false;;;;;; -202360;6;0;false;false;63;95;191;;; -202366;3;0;false;false;;;;;; -202369;1;0;false;false;63;95;191;;; -202370;1;0;false;false;;;;;; -202371;7;1;false;false;127;159;191;;; -202378;9;0;false;false;63;95;191;;; -202387;1;0;false;false;;;;;; -202388;6;0;false;false;63;95;191;;; -202394;1;0;false;false;;;;;; -202395;2;0;false;false;63;95;191;;; -202397;1;0;false;false;;;;;; -202398;3;0;false;false;63;95;191;;; -202401;1;0;false;false;;;;;; -202402;4;0;false;false;63;95;191;;; -202406;1;0;false;false;;;;;; -202407;5;0;false;false;63;95;191;;; -202412;1;0;false;false;;;;;; -202413;9;0;false;false;63;95;191;;; -202422;1;0;false;false;;;;;; -202423;6;0;false;false;63;95;191;;; -202429;1;0;false;false;;;;;; -202430;4;0;false;false;63;95;191;;; -202434;3;0;false;false;;;;;; -202437;1;0;false;false;63;95;191;;; -202438;1;0;false;false;;;;;; -202439;7;1;false;false;127;159;191;;; -202446;15;0;false;false;63;95;191;;; -202461;1;0;false;false;;;;;; -202462;10;0;false;false;63;95;191;;; -202472;1;0;false;false;;;;;; -202473;3;0;false;false;63;95;191;;; -202476;1;0;false;false;;;;;; -202477;10;0;false;false;63;95;191;;; -202487;1;0;false;false;;;;;; -202488;2;0;false;false;63;95;191;;; -202490;1;0;false;false;;;;;; -202491;12;0;false;false;63;95;191;;; -202503;3;0;false;false;;;;;; -202506;1;0;false;false;63;95;191;;; -202507;2;0;false;false;;;;;; -202509;3;0;false;false;63;95;191;;; -202512;1;0;false;false;;;;;; -202513;9;0;false;false;63;95;191;;; -202522;1;0;false;false;;;;;; -202523;6;0;false;false;63;95;191;;; -202529;1;0;false;false;;;;;; -202530;6;0;false;false;63;95;191;;; -202536;1;0;false;false;;;;;; -202537;2;0;false;false;63;95;191;;; -202539;1;0;false;false;;;;;; -202540;3;0;false;false;63;95;191;;; -202543;1;0;false;false;;;;;; -202544;6;0;false;false;63;95;191;;; -202550;1;0;false;false;;;;;; -202551;5;0;false;false;63;95;191;;; -202556;1;0;false;false;;;;;; -202557;8;0;false;false;63;95;191;;; -202565;1;0;false;false;;;;;; -202566;3;0;false;false;63;95;191;;; -202569;4;0;false;false;;;;;; -202573;1;0;false;false;63;95;191;;; -202574;2;0;false;false;;;;;; -202576;4;0;false;false;63;95;191;;; -202580;1;0;false;false;;;;;; -202581;9;0;false;false;63;95;191;;; -202590;1;0;false;false;;;;;; -202591;2;0;false;false;63;95;191;;; -202593;1;0;false;false;;;;;; -202594;1;0;false;false;63;95;191;;; -202595;1;0;false;false;;;;;; -202596;4;0;false;false;63;95;191;;; -202600;1;0;false;false;;;;;; -202601;6;0;false;false;63;95;191;;; -202607;1;0;false;false;;;;;; -202608;3;0;false;false;63;95;191;;; -202611;1;0;false;false;;;;;; -202612;6;0;false;false;63;95;191;;; -202618;1;0;false;false;;;;;; -202619;4;0;false;false;63;95;191;;; -202623;1;0;false;false;;;;;; -202624;2;0;false;false;63;95;191;;; -202626;1;0;false;false;;;;;; -202627;8;0;false;false;63;95;191;;; -202635;1;0;false;false;;;;;; -202636;3;0;false;false;63;95;191;;; -202639;4;0;false;false;;;;;; -202643;1;0;false;false;63;95;191;;; -202644;2;0;false;false;;;;;; -202646;4;0;false;false;63;95;191;;; -202650;1;0;false;false;;;;;; -202651;2;0;false;false;63;95;191;;; -202653;1;0;false;false;;;;;; -202654;7;0;false;false;63;95;191;;; -202661;1;0;false;false;;;;;; -202662;3;0;false;false;63;95;191;;; -202665;1;0;false;false;;;;;; -202666;3;0;false;false;63;95;191;;; -202669;1;0;false;false;;;;;; -202670;3;0;false;false;63;95;191;;; -202673;1;0;false;false;;;;;; -202674;2;0;false;false;63;95;191;;; -202676;1;0;false;false;;;;;; -202677;3;0;false;false;63;95;191;;; -202680;1;0;false;false;;;;;; -202681;5;0;false;false;63;95;191;;; -202686;1;0;false;false;;;;;; -202687;6;0;false;false;63;95;191;;; -202693;1;0;false;false;;;;;; -202694;2;0;false;false;63;95;191;;; -202696;1;0;false;false;;;;;; -202697;3;0;false;false;63;95;191;;; -202700;1;0;false;false;;;;;; -202701;7;0;false;false;63;95;191;;; -202708;3;0;false;false;;;;;; -202711;1;0;false;false;63;95;191;;; -202712;2;0;false;false;;;;;; -202714;10;0;false;false;63;95;191;;; -202724;1;0;false;false;;;;;; -202725;3;0;false;false;63;95;191;;; -202728;1;0;false;false;;;;;; -202729;10;0;false;false;63;95;191;;; -202739;1;0;false;false;;;;;; -202740;8;0;false;false;63;95;191;;; -202748;1;0;false;false;;;;;; -202749;7;0;false;false;63;95;191;;; -202756;1;0;false;false;;;;;; -202757;12;0;false;false;63;95;191;;; -202769;1;0;false;false;;;;;; -202770;3;0;false;false;63;95;191;;; -202773;4;0;false;false;;;;;; -202777;1;0;false;false;63;95;191;;; -202778;2;0;false;false;;;;;; -202780;6;0;false;false;63;95;191;;; -202786;1;0;false;false;;;;;; -202787;6;0;false;false;63;95;191;;; -202793;3;0;false;false;;;;;; -202796;2;0;false;false;63;95;191;;; -202798;2;0;false;false;;;;;; -202800;4;1;false;false;127;0;85;;; -202804;1;0;false;false;;;;;; -202805;12;0;false;false;0;0;0;;; -202817;3;1;false;false;127;0;85;;; -202820;1;0;false;false;;;;;; -202821;10;0;false;false;0;0;0;;; -202831;1;0;false;false;;;;;; -202832;3;1;false;false;127;0;85;;; -202835;1;0;false;false;;;;;; -202836;18;0;false;false;0;0;0;;; -202854;1;0;false;false;;;;;; -202855;3;1;false;false;127;0;85;;; -202858;1;0;false;false;;;;;; -202859;9;0;false;false;0;0;0;;; -202868;1;0;false;false;;;;;; -202869;3;1;false;false;127;0;85;;; -202872;1;0;false;false;;;;;; -202873;10;0;false;false;0;0;0;;; -202883;1;0;false;false;;;;;; -202884;7;1;false;false;127;0;85;;; -202891;1;0;false;false;;;;;; -202892;16;0;false;false;0;0;0;;; -202908;1;0;false;false;;;;;; -202909;1;0;false;false;0;0;0;;; -202910;3;0;false;false;;;;;; -202913;6;0;false;false;0;0;0;;; -202919;1;0;false;false;;;;;; -202920;4;0;false;false;0;0;0;;; -202924;1;0;false;false;;;;;; -202925;1;0;false;false;0;0;0;;; -202926;1;0;false;false;;;;;; -202927;27;0;false;false;0;0;0;;; -202954;3;0;false;false;;;;;; -202957;3;1;false;false;127;0;85;;; -202960;1;0;false;false;;;;;; -202961;9;0;false;false;0;0;0;;; -202970;1;0;false;false;;;;;; -202971;1;0;false;false;0;0;0;;; -202972;1;0;false;false;;;;;; -202973;8;0;false;false;0;0;0;;; -202981;1;0;false;false;;;;;; -202982;1;0;false;false;0;0;0;;; -202983;1;0;false;false;;;;;; -202984;9;0;false;false;0;0;0;;; -202993;1;0;false;false;;;;;; -202994;1;0;false;false;0;0;0;;; -202995;1;0;false;false;;;;;; -202996;2;0;false;false;0;0;0;;; -202998;3;0;false;false;;;;;; -203001;3;1;false;false;127;0;85;;; -203004;1;0;false;false;;;;;; -203005;8;0;false;false;0;0;0;;; -203013;1;0;false;false;;;;;; -203014;12;0;false;false;0;0;0;;; -203026;3;0;false;false;;;;;; -203029;3;1;false;false;127;0;85;;; -203032;1;0;false;false;;;;;; -203033;10;0;false;false;0;0;0;;; -203043;1;0;false;false;;;;;; -203044;1;0;false;false;0;0;0;;; -203045;1;0;false;false;;;;;; -203046;35;0;false;false;0;0;0;;; -203081;3;0;false;false;;;;;; -203084;7;1;false;false;127;0;85;;; -203091;1;0;false;false;;;;;; -203092;15;0;false;false;0;0;0;;; -203107;3;0;false;false;;;;;; -203110;9;0;false;false;0;0;0;;; -203119;1;0;false;false;;;;;; -203120;10;0;false;false;0;0;0;;; -203130;1;0;false;false;;;;;; -203131;1;0;false;false;0;0;0;;; -203132;1;0;false;false;;;;;; -203133;16;0;false;false;0;0;0;;; -203149;6;0;false;false;;;;;; -203155;14;0;false;false;0;0;0;;; -203169;1;0;false;false;;;;;; -203170;1;0;false;false;0;0;0;;; -203171;1;0;false;false;;;;;; -203172;12;0;false;false;0;0;0;;; -203184;1;0;false;false;;;;;; -203185;1;0;false;false;0;0;0;;; -203186;1;0;false;false;;;;;; -203187;19;0;false;false;0;0;0;;; -203206;1;0;false;false;;;;;; -203207;2;0;false;false;0;0;0;;; -203209;1;0;false;false;;;;;; -203210;1;0;false;false;0;0;0;;; -203211;1;0;false;false;;;;;; -203212;2;0;false;false;0;0;0;;; -203214;1;0;false;false;;;;;; -203215;8;0;false;false;0;0;0;;; -203223;1;0;false;false;;;;;; -203224;1;0;false;false;0;0;0;;; -203225;1;0;false;false;;;;;; -203226;11;0;false;false;0;0;0;;; -203237;3;0;false;false;;;;;; -203240;64;0;false;false;63;127;95;;; -203304;1;0;false;false;;;;;; -203305;62;0;false;false;63;127;95;;; -203367;1;0;false;false;;;;;; -203368;2;1;false;false;127;0;85;;; -203370;1;0;false;false;;;;;; -203371;16;0;false;false;0;0;0;;; -203387;1;0;false;false;;;;;; -203388;2;0;false;false;0;0;0;;; -203390;1;0;false;false;;;;;; -203391;9;0;false;false;0;0;0;;; -203400;1;0;false;false;;;;;; -203401;1;0;false;false;0;0;0;;; -203402;1;0;false;false;;;;;; -203403;10;0;false;false;0;0;0;;; -203413;1;0;false;false;;;;;; -203414;2;0;false;false;0;0;0;;; -203416;1;0;false;false;;;;;; -203417;14;0;false;false;0;0;0;;; -203431;1;0;false;false;;;;;; -203432;1;0;false;false;0;0;0;;; -203433;4;0;false;false;;;;;; -203437;14;0;false;false;0;0;0;;; -203451;1;0;false;false;;;;;; -203452;1;0;false;false;0;0;0;;; -203453;1;0;false;false;;;;;; -203454;4;1;false;false;127;0;85;;; -203458;1;0;false;false;0;0;0;;; -203459;3;0;false;false;;;;;; -203462;1;0;false;false;0;0;0;;; -203463;4;0;false;false;;;;;; -203467;10;0;false;false;0;0;0;;; -203477;1;0;false;false;;;;;; -203478;6;0;false;false;0;0;0;;; -203484;1;0;false;false;;;;;; -203485;1;0;false;false;0;0;0;;; -203486;1;0;false;false;;;;;; -203487;28;0;false;false;0;0;0;;; -203515;1;0;false;false;;;;;; -203516;12;0;false;false;0;0;0;;; -203528;3;0;false;false;;;;;; -203531;9;0;false;false;0;0;0;;; -203540;1;0;false;false;;;;;; -203541;4;0;false;false;0;0;0;;; -203545;1;0;false;false;;;;;; -203546;1;0;false;false;0;0;0;;; -203547;1;0;false;false;;;;;; -203548;35;0;false;false;0;0;0;;; -203583;1;0;false;false;;;;;; -203584;19;0;false;false;0;0;0;;; -203603;1;0;false;false;;;;;; -203604;14;0;false;false;0;0;0;;; -203618;1;0;false;false;;;;;; -203619;1;0;false;false;0;0;0;;; -203620;1;0;false;false;;;;;; -203621;3;0;false;false;0;0;0;;; -203624;3;0;false;false;;;;;; -203627;35;0;false;false;0;0;0;;; -203662;3;0;false;false;;;;;; -203665;6;0;false;false;0;0;0;;; -203671;1;0;false;false;;;;;; -203672;2;0;false;false;0;0;0;;; -203674;1;0;false;false;;;;;; -203675;23;0;false;false;0;0;0;;; -203698;3;0;false;false;;;;;; -203701;27;0;false;false;0;0;0;;; -203728;3;0;false;false;;;;;; -203731;7;0;false;false;0;0;0;;; -203738;1;0;false;false;;;;;; -203739;1;0;false;false;0;0;0;;; -203740;1;0;false;false;;;;;; -203741;9;0;false;false;0;0;0;;; -203750;1;0;false;false;;;;;; -203751;1;0;false;false;0;0;0;;; -203752;1;0;false;false;;;;;; -203753;10;0;false;false;0;0;0;;; -203763;1;0;false;false;;;;;; -203764;1;0;false;false;0;0;0;;; -203765;1;0;false;false;;;;;; -203766;21;0;false;false;0;0;0;;; -203787;3;0;false;false;;;;;; -203790;11;0;false;false;0;0;0;;; -203801;1;0;false;false;;;;;; -203802;1;0;false;false;0;0;0;;; -203803;1;0;false;false;;;;;; -203804;14;0;false;false;0;0;0;;; -203818;1;0;false;false;;;;;; -203819;1;0;false;false;0;0;0;;; -203820;1;0;false;false;;;;;; -203821;16;0;false;false;0;0;0;;; -203837;1;0;false;false;;;;;; -203838;1;0;false;false;0;0;0;;; -203839;1;0;false;false;;;;;; -203840;10;0;false;false;0;0;0;;; -203850;1;0;false;false;;;;;; -203851;1;0;false;false;0;0;0;;; -203852;1;0;false;false;;;;;; -203853;11;0;false;false;0;0;0;;; -203864;1;0;false;false;;;;;; -203865;1;0;false;false;0;0;0;;; -203866;1;0;false;false;;;;;; -203867;11;0;false;false;0;0;0;;; -203878;3;0;false;false;;;;;; -203881;12;0;false;false;0;0;0;;; -203893;1;0;false;false;;;;;; -203894;8;0;false;false;0;0;0;;; -203902;1;0;false;false;;;;;; -203903;12;0;false;false;0;0;0;;; -203915;1;0;false;false;;;;;; -203916;11;0;false;false;0;0;0;;; -203927;1;0;false;false;;;;;; -203928;17;0;false;false;0;0;0;;; -203945;6;0;false;false;;;;;; -203951;60;0;false;false;63;127;95;;; -204011;1;0;false;false;;;;;; -204012;2;1;false;false;127;0;85;;; -204014;1;0;false;false;;;;;; -204015;10;0;false;false;0;0;0;;; -204025;1;0;false;false;;;;;; -204026;1;0;false;false;0;0;0;;; -204027;1;0;false;false;;;;;; -204028;2;0;false;false;0;0;0;;; -204030;1;0;false;false;;;;;; -204031;1;0;false;false;0;0;0;;; -204032;4;0;false;false;;;;;; -204036;10;0;false;false;0;0;0;;; -204046;1;0;false;false;;;;;; -204047;1;0;false;false;0;0;0;;; -204048;1;0;false;false;;;;;; -204049;34;0;false;false;0;0;0;;; -204083;4;0;false;false;;;;;; -204087;3;1;false;false;127;0;85;;; -204090;1;0;false;false;;;;;; -204091;16;0;false;false;0;0;0;;; -204107;1;0;false;false;;;;;; -204108;1;0;false;false;0;0;0;;; -204109;1;0;false;false;;;;;; -204110;9;0;false;false;0;0;0;;; -204119;1;0;false;false;;;;;; -204120;1;0;false;false;0;0;0;;; -204121;1;0;false;false;;;;;; -204122;11;0;false;false;0;0;0;;; -204133;5;0;false;false;;;;;; -204138;46;0;false;false;63;127;95;;; -204184;2;0;false;false;;;;;; -204186;2;1;false;false;127;0;85;;; -204188;1;0;false;false;;;;;; -204189;17;0;false;false;0;0;0;;; -204206;1;0;false;false;;;;;; -204207;1;0;false;false;0;0;0;;; -204208;1;0;false;false;;;;;; -204209;2;0;false;false;0;0;0;;; -204211;1;0;false;false;;;;;; -204212;1;0;false;false;0;0;0;;; -204213;5;0;false;false;;;;;; -204218;4;0;false;false;0;0;0;;; -204222;1;0;false;false;;;;;; -204223;1;0;false;false;0;0;0;;; -204224;1;0;false;false;;;;;; -204225;26;0;false;false;0;0;0;;; -204251;5;0;false;false;;;;;; -204256;63;0;false;false;63;127;95;;; -204319;3;0;false;false;;;;;; -204322;62;0;false;false;63;127;95;;; -204384;3;0;false;false;;;;;; -204387;2;1;false;false;127;0;85;;; -204389;1;0;false;false;;;;;; -204390;16;0;false;false;0;0;0;;; -204406;1;0;false;false;;;;;; -204407;2;0;false;false;0;0;0;;; -204409;1;0;false;false;;;;;; -204410;16;0;false;false;0;0;0;;; -204426;1;0;false;false;;;;;; -204427;2;0;false;false;0;0;0;;; -204429;1;0;false;false;;;;;; -204430;14;0;false;false;0;0;0;;; -204444;1;0;false;false;;;;;; -204445;1;0;false;false;0;0;0;;; -204446;6;0;false;false;;;;;; -204452;14;0;false;false;0;0;0;;; -204466;1;0;false;false;;;;;; -204467;1;0;false;false;0;0;0;;; -204468;1;0;false;false;;;;;; -204469;4;1;false;false;127;0;85;;; -204473;1;0;false;false;0;0;0;;; -204474;5;0;false;false;;;;;; -204479;1;0;false;false;0;0;0;;; -204480;5;0;false;false;;;;;; -204485;4;0;false;false;0;0;0;;; -204489;1;0;false;false;;;;;; -204490;1;0;false;false;0;0;0;;; -204491;1;0;false;false;;;;;; -204492;26;0;false;false;0;0;0;;; -204518;5;0;false;false;;;;;; -204523;6;0;false;false;0;0;0;;; -204529;1;0;false;false;;;;;; -204530;1;0;false;false;0;0;0;;; -204531;1;0;false;false;;;;;; -204532;28;0;false;false;0;0;0;;; -204560;1;0;false;false;;;;;; -204561;12;0;false;false;0;0;0;;; -204573;5;0;false;false;;;;;; -204578;4;0;false;false;0;0;0;;; -204582;1;0;false;false;;;;;; -204583;1;0;false;false;0;0;0;;; -204584;1;0;false;false;;;;;; -204585;19;0;false;false;0;0;0;;; -204604;1;0;false;false;;;;;; -204605;16;0;false;false;0;0;0;;; -204621;1;0;false;false;;;;;; -204622;1;0;false;false;0;0;0;;; -204623;1;0;false;false;;;;;; -204624;3;0;false;false;0;0;0;;; -204627;5;0;false;false;;;;;; -204632;35;0;false;false;0;0;0;;; -204667;5;0;false;false;;;;;; -204672;6;0;false;false;0;0;0;;; -204678;1;0;false;false;;;;;; -204679;2;0;false;false;0;0;0;;; -204681;1;0;false;false;;;;;; -204682;23;0;false;false;0;0;0;;; -204705;5;0;false;false;;;;;; -204710;27;0;false;false;0;0;0;;; -204737;5;0;false;false;;;;;; -204742;7;0;false;false;0;0;0;;; -204749;1;0;false;false;;;;;; -204750;1;0;false;false;0;0;0;;; -204751;1;0;false;false;;;;;; -204752;8;0;false;false;0;0;0;;; -204760;1;0;false;false;;;;;; -204761;1;0;false;false;0;0;0;;; -204762;1;0;false;false;;;;;; -204763;10;0;false;false;0;0;0;;; -204773;1;0;false;false;;;;;; -204774;1;0;false;false;0;0;0;;; -204775;1;0;false;false;;;;;; -204776;21;0;false;false;0;0;0;;; -204797;5;0;false;false;;;;;; -204802;11;0;false;false;0;0;0;;; -204813;1;0;false;false;;;;;; -204814;1;0;false;false;0;0;0;;; -204815;1;0;false;false;;;;;; -204816;14;0;false;false;0;0;0;;; -204830;1;0;false;false;;;;;; -204831;1;0;false;false;0;0;0;;; -204832;1;0;false;false;;;;;; -204833;16;0;false;false;0;0;0;;; -204849;1;0;false;false;;;;;; -204850;1;0;false;false;0;0;0;;; -204851;1;0;false;false;;;;;; -204852;10;0;false;false;0;0;0;;; -204862;1;0;false;false;;;;;; -204863;1;0;false;false;0;0;0;;; -204864;1;0;false;false;;;;;; -204865;11;0;false;false;0;0;0;;; -204876;1;0;false;false;;;;;; -204877;1;0;false;false;0;0;0;;; -204878;1;0;false;false;;;;;; -204879;11;0;false;false;0;0;0;;; -204890;5;0;false;false;;;;;; -204895;12;0;false;false;0;0;0;;; -204907;1;0;false;false;;;;;; -204908;8;0;false;false;0;0;0;;; -204916;1;0;false;false;;;;;; -204917;12;0;false;false;0;0;0;;; -204929;1;0;false;false;;;;;; -204930;11;0;false;false;0;0;0;;; -204941;1;0;false;false;;;;;; -204942;17;0;false;false;0;0;0;;; -204959;4;0;false;false;;;;;; -204963;1;0;false;false;0;0;0;;; -204964;3;0;false;false;;;;;; -204967;1;0;false;false;0;0;0;;; -204968;2;0;false;false;;;;;; -204970;1;0;false;false;0;0;0;;; -204971;2;0;false;false;;;;;; -204973;3;0;false;false;63;95;191;;; -204976;3;0;false;false;;;;;; -204979;1;0;false;false;63;95;191;;; -204980;1;0;false;false;;;;;; -204981;5;0;false;false;63;95;191;;; -204986;1;0;false;false;;;;;; -204987;3;0;false;false;63;95;191;;; -204990;1;0;false;false;;;;;; -204991;6;0;false;false;63;95;191;;; -204997;1;0;false;false;;;;;; -204998;2;0;false;false;63;95;191;;; -205000;1;0;false;false;;;;;; -205001;7;0;false;false;63;95;191;;; -205008;1;0;false;false;;;;;; -205009;1;0;false;false;63;95;191;;; -205010;1;0;false;false;;;;;; -205011;4;0;false;false;63;95;191;;; -205015;1;0;false;false;;;;;; -205016;7;0;false;false;63;95;191;;; -205023;3;0;false;false;;;;;; -205026;1;0;false;false;63;95;191;;; -205027;1;0;false;false;;;;;; -205028;3;0;false;false;63;95;191;;; -205031;1;0;false;false;;;;;; -205032;8;0;false;false;63;95;191;;; -205040;1;0;false;false;;;;;; -205041;3;0;false;false;63;95;191;;; -205044;1;0;false;false;;;;;; -205045;9;0;false;false;63;95;191;;; -205054;1;0;false;false;;;;;; -205055;2;0;false;false;63;95;191;;; -205057;1;0;false;false;;;;;; -205058;4;0;false;false;63;95;191;;; -205062;1;0;false;false;;;;;; -205063;2;0;false;false;63;95;191;;; -205065;1;0;false;false;;;;;; -205066;10;0;false;false;63;95;191;;; -205076;3;0;false;false;;;;;; -205079;1;0;false;false;63;95;191;;; -205080;1;0;false;false;;;;;; -205081;3;0;false;false;127;127;159;;; -205084;3;0;false;false;;;;;; -205087;1;0;false;false;63;95;191;;; -205088;3;0;false;false;;;;;; -205091;1;0;false;false;63;95;191;;; -205092;1;0;false;false;;;;;; -205093;7;1;false;false;127;159;191;;; -205100;1;0;false;false;63;95;191;;; -205101;1;0;false;false;;;;;; -205102;1;0;false;false;63;95;191;;; -205103;1;0;false;false;;;;;; -205104;8;0;false;false;63;95;191;;; -205112;1;0;false;false;;;;;; -205113;2;0;false;false;63;95;191;;; -205115;1;0;false;false;;;;;; -205116;3;0;false;false;63;95;191;;; -205119;1;0;false;false;;;;;; -205120;4;0;false;false;63;95;191;;; -205124;1;0;false;false;;;;;; -205125;6;0;false;false;63;95;191;;; -205131;3;0;false;false;;;;;; -205134;1;0;false;false;63;95;191;;; -205135;1;0;false;false;;;;;; -205136;7;1;false;false;127;159;191;;; -205143;12;0;false;false;63;95;191;;; -205155;1;0;false;false;;;;;; -205156;6;0;false;false;63;95;191;;; -205162;1;0;false;false;;;;;; -205163;2;0;false;false;63;95;191;;; -205165;1;0;false;false;;;;;; -205166;3;0;false;false;63;95;191;;; -205169;1;0;false;false;;;;;; -205170;6;0;false;false;63;95;191;;; -205176;3;0;false;false;;;;;; -205179;1;0;false;false;63;95;191;;; -205180;1;0;false;false;;;;;; -205181;7;1;false;false;127;159;191;;; -205188;17;0;false;false;63;95;191;;; -205205;1;0;false;false;;;;;; -205206;6;0;false;false;63;95;191;;; -205212;1;0;false;false;;;;;; -205213;2;0;false;false;63;95;191;;; -205215;1;0;false;false;;;;;; -205216;8;0;false;false;63;95;191;;; -205224;1;0;false;false;;;;;; -205225;6;0;false;false;63;95;191;;; -205231;3;0;false;false;;;;;; -205234;2;0;false;false;63;95;191;;; -205236;2;0;false;false;;;;;; -205238;4;1;false;false;127;0;85;;; -205242;1;0;false;false;;;;;; -205243;22;0;false;false;0;0;0;;; -205265;3;1;false;false;127;0;85;;; -205268;1;0;false;false;;;;;; -205269;2;0;false;false;0;0;0;;; -205271;1;0;false;false;;;;;; -205272;3;1;false;false;127;0;85;;; -205275;1;0;false;false;;;;;; -205276;13;0;false;false;0;0;0;;; -205289;1;0;false;false;;;;;; -205290;3;1;false;false;127;0;85;;; -205293;1;0;false;false;;;;;; -205294;18;0;false;false;0;0;0;;; -205312;1;0;false;false;;;;;; -205313;1;0;false;false;0;0;0;;; -205314;3;0;false;false;;;;;; -205317;9;0;false;false;0;0;0;;; -205326;1;0;false;false;;;;;; -205327;10;0;false;false;0;0;0;;; -205337;1;0;false;false;;;;;; -205338;1;0;false;false;0;0;0;;; -205339;1;0;false;false;;;;;; -205340;16;0;false;false;0;0;0;;; -205356;3;0;false;false;;;;;; -205359;3;1;false;false;127;0;85;;; -205362;1;0;false;false;;;;;; -205363;9;0;false;false;0;0;0;;; -205372;1;0;false;false;;;;;; -205373;1;0;false;false;0;0;0;;; -205374;1;0;false;false;;;;;; -205375;12;0;false;false;0;0;0;;; -205387;1;0;false;false;;;;;; -205388;1;0;false;false;0;0;0;;; -205389;1;0;false;false;;;;;; -205390;18;0;false;false;0;0;0;;; -205408;3;0;false;false;;;;;; -205411;3;1;false;false;127;0;85;;; -205414;1;0;false;false;;;;;; -205415;8;0;false;false;0;0;0;;; -205423;3;0;false;false;;;;;; -205426;3;1;false;false;127;0;85;;; -205429;1;0;false;false;;;;;; -205430;13;0;false;false;0;0;0;;; -205443;7;0;false;false;;;;;; -205450;2;1;false;false;127;0;85;;; -205452;1;0;false;false;;;;;; -205453;10;0;false;false;0;0;0;;; -205463;1;0;false;false;;;;;; -205464;1;0;false;false;0;0;0;;; -205465;1;0;false;false;;;;;; -205466;2;0;false;false;0;0;0;;; -205468;1;0;false;false;;;;;; -205469;1;0;false;false;0;0;0;;; -205470;4;0;false;false;;;;;; -205474;7;0;false;false;0;0;0;;; -205481;1;0;false;false;;;;;; -205482;1;0;false;false;0;0;0;;; -205483;1;0;false;false;;;;;; -205484;11;0;false;false;0;0;0;;; -205495;1;0;false;false;;;;;; -205496;1;0;false;false;0;0;0;;; -205497;1;0;false;false;;;;;; -205498;1;0;false;false;0;0;0;;; -205499;1;0;false;false;;;;;; -205500;12;0;false;false;0;0;0;;; -205512;4;0;false;false;;;;;; -205516;12;0;false;false;0;0;0;;; -205528;1;0;false;false;;;;;; -205529;1;0;false;false;0;0;0;;; -205530;1;0;false;false;;;;;; -205531;7;0;false;false;0;0;0;;; -205538;1;0;false;false;;;;;; -205539;1;0;false;false;0;0;0;;; -205540;1;0;false;false;;;;;; -205541;9;0;false;false;0;0;0;;; -205550;1;0;false;false;;;;;; -205551;1;0;false;false;0;0;0;;; -205552;1;0;false;false;;;;;; -205553;11;0;false;false;0;0;0;;; -205564;3;0;false;false;;;;;; -205567;1;0;false;false;0;0;0;;; -205568;4;0;false;false;;;;;; -205572;4;1;false;false;127;0;85;;; -205576;1;0;false;false;;;;;; -205577;1;0;false;false;0;0;0;;; -205578;4;0;false;false;;;;;; -205582;12;0;false;false;0;0;0;;; -205594;1;0;false;false;;;;;; -205595;1;0;false;false;0;0;0;;; -205596;1;0;false;false;;;;;; -205597;11;0;false;false;0;0;0;;; -205608;1;0;false;false;;;;;; -205609;1;0;false;false;0;0;0;;; -205610;1;0;false;false;;;;;; -205611;1;0;false;false;0;0;0;;; -205612;1;0;false;false;;;;;; -205613;12;0;false;false;0;0;0;;; -205625;4;0;false;false;;;;;; -205629;7;0;false;false;0;0;0;;; -205636;1;0;false;false;;;;;; -205637;1;0;false;false;0;0;0;;; -205638;1;0;false;false;;;;;; -205639;12;0;false;false;0;0;0;;; -205651;1;0;false;false;;;;;; -205652;1;0;false;false;0;0;0;;; -205653;1;0;false;false;;;;;; -205654;9;0;false;false;0;0;0;;; -205663;1;0;false;false;;;;;; -205664;1;0;false;false;0;0;0;;; -205665;1;0;false;false;;;;;; -205666;11;0;false;false;0;0;0;;; -205677;3;0;false;false;;;;;; -205680;1;0;false;false;0;0;0;;; -205681;4;0;false;false;;;;;; -205685;7;0;false;false;0;0;0;;; -205692;4;0;false;false;;;;;; -205696;2;0;false;false;0;0;0;;; -205698;1;0;false;false;;;;;; -205699;13;0;false;false;0;0;0;;; -205712;3;0;false;false;;;;;; -205715;21;0;false;false;63;127;95;;; -205736;2;0;false;false;;;;;; -205738;2;0;false;false;0;0;0;;; -205740;1;0;false;false;;;;;; -205741;8;0;false;false;0;0;0;;; -205749;5;0;false;false;;;;;; -205754;16;0;false;false;63;127;95;;; -205770;2;0;false;false;;;;;; -205772;17;0;false;false;0;0;0;;; -205789;1;0;false;false;;;;;; -205790;18;0;false;false;0;0;0;;; -205808;1;0;false;false;;;;;; -205809;4;1;false;false;127;0;85;;; -205813;2;0;false;false;0;0;0;;; -205815;3;0;false;false;;;;;; -205818;68;0;false;false;63;127;95;;; -205886;1;0;false;false;;;;;; -205887;69;0;false;false;63;127;95;;; -205956;1;0;false;false;;;;;; -205957;50;0;false;false;63;127;95;;; -206007;1;0;false;false;;;;;; -206008;68;0;false;false;63;127;95;;; -206076;1;0;false;false;;;;;; -206077;70;0;false;false;63;127;95;;; -206147;1;0;false;false;;;;;; -206148;55;0;false;false;63;127;95;;; -206203;1;0;false;false;;;;;; -206204;66;0;false;false;63;127;95;;; -206270;1;0;false;false;;;;;; -206271;67;0;false;false;63;127;95;;; -206338;1;0;false;false;;;;;; -206339;66;0;false;false;63;127;95;;; -206405;1;0;false;false;;;;;; -206406;54;0;false;false;63;127;95;;; -206460;1;0;false;false;;;;;; -206461;66;0;false;false;63;127;95;;; -206527;1;0;false;false;;;;;; -206528;53;0;false;false;63;127;95;;; -206581;1;0;false;false;;;;;; -206582;2;1;false;false;127;0;85;;; -206584;1;0;false;false;;;;;; -206585;2;0;false;false;0;0;0;;; -206587;1;0;false;false;;;;;; -206588;1;0;false;false;0;0;0;;; -206589;1;0;false;false;;;;;; -206590;10;0;false;false;0;0;0;;; -206600;1;0;false;false;;;;;; -206601;1;0;false;false;0;0;0;;; -206602;1;0;false;false;;;;;; -206603;1;0;false;false;0;0;0;;; -206604;1;0;false;false;;;;;; -206605;2;0;false;false;0;0;0;;; -206607;1;0;false;false;;;;;; -206608;1;0;false;false;0;0;0;;; -206609;1;0;false;false;;;;;; -206610;2;0;false;false;0;0;0;;; -206612;1;0;false;false;;;;;; -206613;18;0;false;false;0;0;0;;; -206631;1;0;false;false;;;;;; -206632;1;0;false;false;0;0;0;;; -206633;4;0;false;false;;;;;; -206637;62;0;false;false;63;127;95;;; -206699;2;0;false;false;;;;;; -206701;5;1;false;false;127;0;85;;; -206706;10;0;false;false;0;0;0;;; -206716;1;0;false;false;;;;;; -206717;2;0;false;false;0;0;0;;; -206719;1;0;false;false;;;;;; -206720;17;0;false;false;0;0;0;;; -206737;1;0;false;false;;;;;; -206738;11;0;false;false;0;0;0;;; -206749;1;0;false;false;;;;;; -206750;4;1;false;false;127;0;85;;; -206754;2;0;false;false;0;0;0;;; -206756;3;0;false;false;;;;;; -206759;1;0;false;false;0;0;0;;; -206760;3;0;false;false;;;;;; -206763;2;1;false;false;127;0;85;;; -206765;1;0;false;false;;;;;; -206766;13;0;false;false;0;0;0;;; -206779;1;0;false;false;;;;;; -206780;1;0;false;false;0;0;0;;; -206781;1;0;false;false;;;;;; -206782;2;0;false;false;0;0;0;;; -206784;1;0;false;false;;;;;; -206785;1;0;false;false;0;0;0;;; -206786;4;0;false;false;;;;;; -206790;3;1;false;false;127;0;85;;; -206793;1;0;false;false;;;;;; -206794;12;0;false;false;0;0;0;;; -206806;1;0;false;false;;;;;; -206807;1;0;false;false;0;0;0;;; -206808;1;0;false;false;;;;;; -206809;1;0;false;false;0;0;0;;; -206810;1;0;false;false;;;;;; -206811;1;0;false;false;0;0;0;;; -206812;1;0;false;false;;;;;; -206813;11;0;false;false;0;0;0;;; -206824;4;0;false;false;;;;;; -206828;3;1;false;false;127;0;85;;; -206831;1;0;false;false;;;;;; -206832;12;0;false;false;0;0;0;;; -206844;1;0;false;false;;;;;; -206845;1;0;false;false;0;0;0;;; -206846;1;0;false;false;;;;;; -206847;12;0;false;false;0;0;0;;; -206859;1;0;false;false;;;;;; -206860;1;0;false;false;0;0;0;;; -206861;1;0;false;false;;;;;; -206862;11;0;false;false;0;0;0;;; -206873;8;0;false;false;;;;;; -206881;2;1;false;false;127;0;85;;; -206883;1;0;false;false;;;;;; -206884;13;0;false;false;0;0;0;;; -206897;1;0;false;false;;;;;; -206898;1;0;false;false;0;0;0;;; -206899;1;0;false;false;;;;;; -206900;12;0;false;false;0;0;0;;; -206912;1;0;false;false;;;;;; -206913;1;0;false;false;0;0;0;;; -206914;1;0;false;false;;;;;; -206915;1;0;false;false;0;0;0;;; -206916;1;0;false;false;;;;;; -206917;2;0;false;false;0;0;0;;; -206919;1;0;false;false;;;;;; -206920;12;0;false;false;0;0;0;;; -206932;1;0;false;false;;;;;; -206933;2;0;false;false;0;0;0;;; -206935;1;0;false;false;;;;;; -206936;18;0;false;false;0;0;0;;; -206954;1;0;false;false;;;;;; -206955;1;0;false;false;0;0;0;;; -206956;5;0;false;false;;;;;; -206961;21;0;false;false;63;127;95;;; -206982;3;0;false;false;;;;;; -206985;5;1;false;false;127;0;85;;; -206990;10;0;false;false;0;0;0;;; -207000;1;0;false;false;;;;;; -207001;13;0;false;false;0;0;0;;; -207014;1;0;false;false;;;;;; -207015;17;0;false;false;0;0;0;;; -207032;1;0;false;false;;;;;; -207033;13;0;false;false;0;0;0;;; -207046;1;0;false;false;;;;;; -207047;4;1;false;false;127;0;85;;; -207051;2;0;false;false;0;0;0;;; -207053;4;0;false;false;;;;;; -207057;1;0;false;false;0;0;0;;; -207058;3;0;false;false;;;;;; -207061;1;0;false;false;0;0;0;;; -207062;2;0;false;false;;;;;; -207064;1;0;false;false;0;0;0;;; -207065;2;0;false;false;;;;;; -207067;3;0;false;false;63;95;191;;; -207070;4;0;false;false;;;;;; -207074;1;0;false;false;63;95;191;;; -207075;1;0;false;false;;;;;; -207076;7;0;false;false;63;95;191;;; -207083;1;0;false;false;;;;;; -207084;3;0;false;false;63;95;191;;; -207087;1;0;false;false;;;;;; -207088;9;0;false;false;63;95;191;;; -207097;1;0;false;false;;;;;; -207098;4;0;false;false;63;95;191;;; -207102;1;0;false;false;;;;;; -207103;6;0;false;false;63;95;191;;; -207109;3;0;false;false;;;;;; -207112;1;0;false;false;63;95;191;;; -207113;1;0;false;false;;;;;; -207114;3;0;false;false;127;127;159;;; -207117;3;0;false;false;;;;;; -207120;1;0;false;false;63;95;191;;; -207121;3;0;false;false;;;;;; -207124;1;0;false;false;63;95;191;;; -207125;1;0;false;false;;;;;; -207126;7;1;false;false;127;159;191;;; -207133;5;0;false;false;63;95;191;;; -207138;1;0;false;false;;;;;; -207139;6;0;false;false;63;95;191;;; -207145;1;0;false;false;;;;;; -207146;2;0;false;false;63;95;191;;; -207148;1;0;false;false;;;;;; -207149;3;0;false;false;63;95;191;;; -207152;1;0;false;false;;;;;; -207153;5;0;false;false;63;95;191;;; -207158;1;0;false;false;;;;;; -207159;9;0;false;false;63;95;191;;; -207168;1;0;false;false;;;;;; -207169;2;0;false;false;63;95;191;;; -207171;1;0;false;false;;;;;; -207172;6;0;false;false;63;95;191;;; -207178;3;0;false;false;;;;;; -207181;1;0;false;false;63;95;191;;; -207182;1;0;false;false;;;;;; -207183;7;1;false;false;127;159;191;;; -207190;6;0;false;false;63;95;191;;; -207196;1;0;false;false;;;;;; -207197;6;0;false;false;63;95;191;;; -207203;1;0;false;false;;;;;; -207204;2;0;false;false;63;95;191;;; -207206;1;0;false;false;;;;;; -207207;10;0;false;false;63;95;191;;; -207217;1;0;false;false;;;;;; -207218;2;0;false;false;63;95;191;;; -207220;1;0;false;false;;;;;; -207221;6;0;false;false;63;95;191;;; -207227;3;0;false;false;;;;;; -207230;1;0;false;false;63;95;191;;; -207231;1;0;false;false;;;;;; -207232;7;1;false;false;127;159;191;;; -207239;15;0;false;false;63;95;191;;; -207254;1;0;false;false;;;;;; -207255;4;0;false;false;63;95;191;;; -207259;1;0;false;false;;;;;; -207260;2;0;false;false;63;95;191;;; -207262;1;0;false;false;;;;;; -207263;3;0;false;false;63;95;191;;; -207266;1;0;false;false;;;;;; -207267;10;0;false;false;63;95;191;;; -207277;1;0;false;false;;;;;; -207278;6;0;false;false;63;95;191;;; -207284;1;0;false;false;;;;;; -207285;2;0;false;false;63;95;191;;; -207287;1;0;false;false;;;;;; -207288;7;0;false;false;63;95;191;;; -207295;1;0;false;false;;;;;; -207296;2;0;false;false;63;95;191;;; -207298;3;0;false;false;;;;;; -207301;1;0;false;false;63;95;191;;; -207302;2;0;false;false;;;;;; -207304;4;0;false;false;63;95;191;;; -207308;1;0;false;false;;;;;; -207309;2;0;false;false;63;95;191;;; -207311;1;0;false;false;;;;;; -207312;3;0;false;false;63;95;191;;; -207315;1;0;false;false;;;;;; -207316;6;0;false;false;63;95;191;;; -207322;1;0;false;false;;;;;; -207323;10;0;false;false;63;95;191;;; -207333;2;0;false;false;;;;;; -207335;2;0;false;false;63;95;191;;; -207337;1;0;false;false;;;;;; -207338;5;0;false;false;63;95;191;;; -207343;1;0;false;false;;;;;; -207344;3;0;false;false;63;95;191;;; -207347;1;0;false;false;;;;;; -207348;6;0;false;false;63;95;191;;; -207354;1;0;false;false;;;;;; -207355;6;0;false;false;63;95;191;;; -207361;1;0;false;false;;;;;; -207362;5;0;false;false;63;95;191;;; -207367;1;0;false;false;;;;;; -207368;4;0;false;false;63;95;191;;; -207372;3;0;false;false;;;;;; -207375;1;0;false;false;63;95;191;;; -207376;2;0;false;false;;;;;; -207378;2;0;false;false;63;95;191;;; -207380;1;0;false;false;;;;;; -207381;7;0;false;false;63;95;191;;; -207388;1;0;false;false;;;;;; -207389;6;0;false;false;63;95;191;;; -207395;1;0;false;false;;;;;; -207396;8;0;false;false;63;95;191;;; -207404;1;0;false;false;;;;;; -207405;2;0;false;false;63;95;191;;; -207407;1;0;false;false;;;;;; -207408;8;0;false;false;63;95;191;;; -207416;2;0;false;false;;;;;; -207418;2;0;false;false;63;95;191;;; -207420;1;0;false;false;;;;;; -207421;3;0;false;false;63;95;191;;; -207424;1;0;false;false;;;;;; -207425;6;0;false;false;63;95;191;;; -207431;1;0;false;false;;;;;; -207432;5;0;false;false;63;95;191;;; -207437;1;0;false;false;;;;;; -207438;8;0;false;false;63;95;191;;; -207446;3;0;false;false;;;;;; -207449;1;0;false;false;63;95;191;;; -207450;1;0;false;false;;;;;; -207451;3;0;false;false;63;95;191;;; -207454;1;0;false;false;;;;;; -207455;4;0;false;false;63;95;191;;; -207459;1;0;false;false;;;;;; -207460;9;0;false;false;63;95;191;;; -207469;1;0;false;false;;;;;; -207470;2;0;false;false;63;95;191;;; -207472;1;0;false;false;;;;;; -207473;1;0;false;false;63;95;191;;; -207474;1;0;false;false;;;;;; -207475;4;0;false;false;63;95;191;;; -207479;1;0;false;false;;;;;; -207480;6;0;false;false;63;95;191;;; -207486;1;0;false;false;;;;;; -207487;3;0;false;false;63;95;191;;; -207490;1;0;false;false;;;;;; -207491;6;0;false;false;63;95;191;;; -207497;1;0;false;false;;;;;; -207498;4;0;false;false;63;95;191;;; -207502;1;0;false;false;;;;;; -207503;2;0;false;false;63;95;191;;; -207505;1;0;false;false;;;;;; -207506;8;0;false;false;63;95;191;;; -207514;1;0;false;false;;;;;; -207515;3;0;false;false;63;95;191;;; -207518;4;0;false;false;;;;;; -207522;1;0;false;false;63;95;191;;; -207523;2;0;false;false;;;;;; -207525;4;0;false;false;63;95;191;;; -207529;1;0;false;false;;;;;; -207530;2;0;false;false;63;95;191;;; -207532;1;0;false;false;;;;;; -207533;7;0;false;false;63;95;191;;; -207540;1;0;false;false;;;;;; -207541;3;0;false;false;63;95;191;;; -207544;1;0;false;false;;;;;; -207545;3;0;false;false;63;95;191;;; -207548;1;0;false;false;;;;;; -207549;3;0;false;false;63;95;191;;; -207552;1;0;false;false;;;;;; -207553;2;0;false;false;63;95;191;;; -207555;1;0;false;false;;;;;; -207556;3;0;false;false;63;95;191;;; -207559;1;0;false;false;;;;;; -207560;5;0;false;false;63;95;191;;; -207565;1;0;false;false;;;;;; -207566;6;0;false;false;63;95;191;;; -207572;1;0;false;false;;;;;; -207573;2;0;false;false;63;95;191;;; -207575;1;0;false;false;;;;;; -207576;3;0;false;false;63;95;191;;; -207579;1;0;false;false;;;;;; -207580;7;0;false;false;63;95;191;;; -207587;3;0;false;false;;;;;; -207590;1;0;false;false;63;95;191;;; -207591;2;0;false;false;;;;;; -207593;3;0;false;false;63;95;191;;; -207596;1;0;false;false;;;;;; -207597;6;0;false;false;63;95;191;;; -207603;1;0;false;false;;;;;; -207604;9;0;false;false;63;95;191;;; -207613;1;0;false;false;;;;;; -207614;4;0;false;false;63;95;191;;; -207618;1;0;false;false;;;;;; -207619;2;0;false;false;63;95;191;;; -207621;1;0;false;false;;;;;; -207622;6;0;false;false;63;95;191;;; -207628;1;0;false;false;;;;;; -207629;3;0;false;false;63;95;191;;; -207632;1;0;false;false;;;;;; -207633;8;0;false;false;63;95;191;;; -207641;1;0;false;false;;;;;; -207642;2;0;false;false;63;95;191;;; -207644;1;0;false;false;;;;;; -207645;15;0;false;false;63;95;191;;; -207660;4;0;false;false;;;;;; -207664;1;0;false;false;63;95;191;;; -207665;2;0;false;false;;;;;; -207667;2;0;false;false;63;95;191;;; -207669;1;0;false;false;;;;;; -207670;3;0;false;false;63;95;191;;; -207673;1;0;false;false;;;;;; -207674;2;0;false;false;63;95;191;;; -207676;1;0;false;false;;;;;; -207677;6;0;false;false;63;95;191;;; -207683;2;0;false;false;;;;;; -207685;7;0;false;false;63;95;191;;; -207692;1;0;false;false;;;;;; -207693;2;0;false;false;63;95;191;;; -207695;1;0;false;false;;;;;; -207696;3;0;false;false;63;95;191;;; -207699;1;0;false;false;;;;;; -207700;3;0;false;false;63;95;191;;; -207703;1;0;false;false;;;;;; -207704;4;0;false;false;63;95;191;;; -207708;1;0;false;false;;;;;; -207709;3;0;false;false;63;95;191;;; -207712;1;0;false;false;;;;;; -207713;2;0;false;false;63;95;191;;; -207715;1;0;false;false;;;;;; -207716;3;0;false;false;63;95;191;;; -207719;1;0;false;false;;;;;; -207720;2;0;false;false;63;95;191;;; -207722;1;0;false;false;;;;;; -207723;5;0;false;false;63;95;191;;; -207728;1;0;false;false;;;;;; -207729;7;0;false;false;63;95;191;;; -207736;4;0;false;false;;;;;; -207740;1;0;false;false;63;95;191;;; -207741;2;0;false;false;;;;;; -207743;2;0;false;false;63;95;191;;; -207745;1;0;false;false;;;;;; -207746;3;0;false;false;63;95;191;;; -207749;1;0;false;false;;;;;; -207750;4;0;false;false;63;95;191;;; -207754;1;0;false;false;;;;;; -207755;2;0;false;false;63;95;191;;; -207757;1;0;false;false;;;;;; -207758;6;0;false;false;63;95;191;;; -207764;1;0;false;false;;;;;; -207765;4;0;false;false;63;95;191;;; -207769;1;0;false;false;;;;;; -207770;3;0;false;false;63;95;191;;; -207773;1;0;false;false;;;;;; -207774;5;0;false;false;63;95;191;;; -207779;1;0;false;false;;;;;; -207780;6;0;false;false;63;95;191;;; -207786;2;0;false;false;;;;;; -207788;2;0;false;false;63;95;191;;; -207790;1;0;false;false;;;;;; -207791;4;0;false;false;63;95;191;;; -207795;1;0;false;false;;;;;; -207796;6;0;false;false;63;95;191;;; -207802;1;0;false;false;;;;;; -207803;2;0;false;false;63;95;191;;; -207805;4;0;false;false;;;;;; -207809;1;0;false;false;63;95;191;;; -207810;2;0;false;false;;;;;; -207812;10;0;false;false;63;95;191;;; -207822;1;0;false;false;;;;;; -207823;6;0;false;false;63;95;191;;; -207829;1;0;false;false;;;;;; -207830;3;0;false;false;63;95;191;;; -207833;1;0;false;false;;;;;; -207834;3;0;false;false;63;95;191;;; -207837;1;0;false;false;;;;;; -207838;6;0;false;false;63;95;191;;; -207844;1;0;false;false;;;;;; -207845;5;0;false;false;63;95;191;;; -207850;1;0;false;false;;;;;; -207851;4;0;false;false;63;95;191;;; -207855;1;0;false;false;;;;;; -207856;8;0;false;false;63;95;191;;; -207864;1;0;false;false;;;;;; -207865;15;0;false;false;63;95;191;;; -207880;4;0;false;false;;;;;; -207884;1;0;false;false;63;95;191;;; -207885;2;0;false;false;;;;;; -207887;6;0;false;false;63;95;191;;; -207893;1;0;false;false;;;;;; -207894;2;0;false;false;63;95;191;;; -207896;1;0;false;false;;;;;; -207897;3;0;false;false;63;95;191;;; -207900;1;0;false;false;;;;;; -207901;2;0;false;false;63;95;191;;; -207903;1;0;false;false;;;;;; -207904;5;0;false;false;63;95;191;;; -207909;2;0;false;false;;;;;; -207911;2;0;false;false;63;95;191;;; -207913;1;0;false;false;;;;;; -207914;4;0;false;false;63;95;191;;; -207918;1;0;false;false;;;;;; -207919;10;0;false;false;63;95;191;;; -207929;1;0;false;false;;;;;; -207930;6;0;false;false;63;95;191;;; -207936;1;0;false;false;;;;;; -207937;4;0;false;false;63;95;191;;; -207941;1;0;false;false;;;;;; -207942;7;0;false;false;63;95;191;;; -207949;1;0;false;false;;;;;; -207950;3;0;false;false;63;95;191;;; -207953;4;0;false;false;;;;;; -207957;1;0;false;false;63;95;191;;; -207958;2;0;false;false;;;;;; -207960;3;0;false;false;63;95;191;;; -207963;1;0;false;false;;;;;; -207964;6;0;false;false;63;95;191;;; -207970;1;0;false;false;;;;;; -207971;6;0;false;false;63;95;191;;; -207977;1;0;false;false;;;;;; -207978;15;0;false;false;63;95;191;;; -207993;1;0;false;false;;;;;; -207994;3;0;false;false;63;95;191;;; -207997;1;0;false;false;;;;;; -207998;2;0;false;false;63;95;191;;; -208000;1;0;false;false;;;;;; -208001;3;0;false;false;63;95;191;;; -208004;1;0;false;false;;;;;; -208005;2;0;false;false;63;95;191;;; -208007;1;0;false;false;;;;;; -208008;6;0;false;false;63;95;191;;; -208014;4;0;false;false;;;;;; -208018;1;0;false;false;63;95;191;;; -208019;1;0;false;false;;;;;; -208020;11;1;false;false;127;159;191;;; -208031;12;0;false;false;63;95;191;;; -208043;1;0;false;false;;;;;; -208044;4;0;false;false;127;127;159;;; -208048;3;0;false;false;;;;;; -208051;1;0;false;false;63;95;191;;; -208052;4;0;false;false;;;;;; -208056;4;0;false;false;127;127;159;;; -208060;21;0;false;false;63;95;191;;; -208081;1;0;false;false;;;;;; -208082;1;0;false;false;127;127;159;;; -208083;1;0;false;false;;;;;; -208084;2;0;false;false;63;95;191;;; -208086;1;0;false;false;;;;;; -208087;3;0;false;false;63;95;191;;; -208090;1;0;false;false;;;;;; -208091;8;0;false;false;63;95;191;;; -208099;1;0;false;false;;;;;; -208100;3;0;false;false;63;95;191;;; -208103;1;0;false;false;;;;;; -208104;4;0;false;false;63;95;191;;; -208108;1;0;false;false;;;;;; -208109;8;0;false;false;63;95;191;;; -208117;5;0;false;false;127;127;159;;; -208122;3;0;false;false;;;;;; -208125;1;0;false;false;63;95;191;;; -208126;4;0;false;false;;;;;; -208130;4;0;false;false;127;127;159;;; -208134;27;0;false;false;63;95;191;;; -208161;1;0;false;false;;;;;; -208162;1;0;false;false;127;127;159;;; -208163;1;0;false;false;;;;;; -208164;2;0;false;false;63;95;191;;; -208166;1;0;false;false;;;;;; -208167;3;0;false;false;63;95;191;;; -208170;1;0;false;false;;;;;; -208171;6;0;false;false;63;95;191;;; -208177;1;0;false;false;;;;;; -208178;4;0;false;false;63;95;191;;; -208182;1;0;false;false;;;;;; -208183;3;0;false;false;63;95;191;;; -208186;1;0;false;false;;;;;; -208187;6;0;false;false;63;95;191;;; -208193;1;0;false;false;;;;;; -208194;4;0;false;false;63;95;191;;; -208198;1;0;false;false;;;;;; -208199;7;0;false;false;63;95;191;;; -208206;1;0;false;false;;;;;; -208207;3;0;false;false;63;95;191;;; -208210;1;0;false;false;;;;;; -208211;8;0;false;false;63;95;191;;; -208219;5;0;false;false;127;127;159;;; -208224;3;0;false;false;;;;;; -208227;1;0;false;false;63;95;191;;; -208228;1;0;false;false;;;;;; -208229;5;0;false;false;127;127;159;;; -208234;3;0;false;false;;;;;; -208237;1;0;false;false;63;95;191;;; -208238;1;0;false;false;;;;;; -208239;11;1;false;false;127;159;191;;; -208250;24;0;false;false;63;95;191;;; -208274;1;0;false;false;;;;;; -208275;4;0;false;false;127;127;159;;; -208279;3;0;false;false;;;;;; -208282;1;0;false;false;63;95;191;;; -208283;3;0;false;false;;;;;; -208286;4;0;false;false;127;127;159;;; -208290;19;0;false;false;63;95;191;;; -208309;1;0;false;false;;;;;; -208310;4;0;false;false;63;95;191;;; -208314;1;0;false;false;;;;;; -208315;5;0;false;false;63;95;191;;; -208320;1;0;false;false;;;;;; -208321;6;0;false;false;63;95;191;;; -208327;1;0;false;false;;;;;; -208328;3;0;false;false;63;95;191;;; -208331;1;0;false;false;;;;;; -208332;3;0;false;false;63;95;191;;; -208335;1;0;false;false;;;;;; -208336;7;0;false;false;63;95;191;;; -208343;1;0;false;false;;;;;; -208344;3;0;false;false;63;95;191;;; -208347;1;0;false;false;;;;;; -208348;6;0;false;false;63;95;191;;; -208354;1;0;false;false;;;;;; -208355;7;0;false;false;63;95;191;;; -208362;5;0;false;false;127;127;159;;; -208367;4;0;false;false;;;;;; -208371;1;0;false;false;63;95;191;;; -208372;1;0;false;false;;;;;; -208373;5;0;false;false;127;127;159;;; -208378;3;0;false;false;;;;;; -208381;2;0;false;false;63;95;191;;; -208383;2;0;false;false;;;;;; -208385;6;1;false;false;127;0;85;;; -208391;1;0;false;false;;;;;; -208392;4;1;false;false;127;0;85;;; -208396;1;0;false;false;;;;;; -208397;12;0;false;false;0;0;0;;; -208409;3;1;false;false;127;0;85;;; -208412;1;0;false;false;;;;;; -208413;6;0;false;false;0;0;0;;; -208419;1;0;false;false;;;;;; -208420;3;1;false;false;127;0;85;;; -208423;1;0;false;false;;;;;; -208424;7;0;false;false;0;0;0;;; -208431;1;0;false;false;;;;;; -208432;7;1;false;false;127;0;85;;; -208439;1;0;false;false;;;;;; -208440;16;0;false;false;0;0;0;;; -208456;1;0;false;false;;;;;; -208457;1;0;false;false;0;0;0;;; -208458;3;0;false;false;;;;;; -208461;14;0;false;false;0;0;0;;; -208475;3;0;false;false;;;;;; -208478;3;1;false;false;127;0;85;;; -208481;1;0;false;false;;;;;; -208482;3;0;false;false;0;0;0;;; -208485;1;0;false;false;;;;;; -208486;1;0;false;false;0;0;0;;; -208487;1;0;false;false;;;;;; -208488;5;0;false;false;0;0;0;;; -208493;1;0;false;false;;;;;; -208494;1;0;false;false;0;0;0;;; -208495;1;0;false;false;;;;;; -208496;7;0;false;false;0;0;0;;; -208503;3;0;false;false;;;;;; -208506;3;1;false;false;127;0;85;;; -208509;1;0;false;false;;;;;; -208510;13;0;false;false;0;0;0;;; -208523;1;0;false;false;;;;;; -208524;1;0;false;false;0;0;0;;; -208525;1;0;false;false;;;;;; -208526;23;0;false;false;0;0;0;;; -208549;3;0;false;false;;;;;; -208552;3;1;false;false;127;0;85;;; -208555;1;0;false;false;;;;;; -208556;10;0;false;false;0;0;0;;; -208566;3;0;false;false;;;;;; -208569;3;1;false;false;127;0;85;;; -208572;1;0;false;false;;;;;; -208573;9;0;false;false;0;0;0;;; -208582;6;0;false;false;;;;;; -208588;2;1;false;false;127;0;85;;; -208590;1;0;false;false;;;;;; -208591;6;0;false;false;0;0;0;;; -208597;1;0;false;false;;;;;; -208598;1;0;false;false;0;0;0;;; -208599;1;0;false;false;;;;;; -208600;3;0;false;false;0;0;0;;; -208603;1;0;false;false;;;;;; -208604;2;0;false;false;0;0;0;;; -208606;1;0;false;false;;;;;; -208607;5;0;false;false;0;0;0;;; -208612;1;0;false;false;;;;;; -208613;1;0;false;false;0;0;0;;; -208614;1;0;false;false;;;;;; -208615;1;0;false;false;0;0;0;;; -208616;1;0;false;false;;;;;; -208617;2;0;false;false;0;0;0;;; -208619;1;0;false;false;;;;;; -208620;3;0;false;false;0;0;0;;; -208623;1;0;false;false;;;;;; -208624;1;0;false;false;0;0;0;;; -208625;1;0;false;false;;;;;; -208626;14;0;false;false;0;0;0;;; -208640;1;0;false;false;;;;;; -208641;1;0;false;false;0;0;0;;; -208642;4;0;false;false;;;;;; -208646;35;0;false;false;0;0;0;;; -208681;3;0;false;false;;;;;; -208684;1;0;false;false;0;0;0;;; -208685;4;0;false;false;;;;;; -208689;9;0;false;false;0;0;0;;; -208698;1;0;false;false;;;;;; -208699;1;0;false;false;0;0;0;;; -208700;1;0;false;false;;;;;; -208701;31;0;false;false;0;0;0;;; -208732;3;0;false;false;;;;;; -208735;8;0;false;false;0;0;0;;; -208743;1;0;false;false;;;;;; -208744;1;0;false;false;0;0;0;;; -208745;1;0;false;false;;;;;; -208746;29;0;false;false;0;0;0;;; -208775;3;0;false;false;;;;;; -208778;66;0;false;false;63;127;95;;; -208844;1;0;false;false;;;;;; -208845;28;0;false;false;63;127;95;;; -208873;1;0;false;false;;;;;; -208874;26;0;false;false;0;0;0;;; -208900;1;0;false;false;;;;;; -208901;8;0;false;false;0;0;0;;; -208909;1;0;false;false;;;;;; -208910;1;0;false;false;0;0;0;;; -208911;1;0;false;false;;;;;; -208912;9;0;false;false;0;0;0;;; -208921;1;0;false;false;;;;;; -208922;1;0;false;false;0;0;0;;; -208923;1;0;false;false;;;;;; -208924;2;0;false;false;0;0;0;;; -208926;1;0;false;false;;;;;; -208927;4;1;false;false;127;0;85;;; -208931;2;0;false;false;0;0;0;;; -208933;3;0;false;false;;;;;; -208936;26;0;false;false;0;0;0;;; -208962;1;0;false;false;;;;;; -208963;7;0;false;false;0;0;0;;; -208970;1;0;false;false;;;;;; -208971;17;0;false;false;0;0;0;;; -208988;2;0;false;false;;;;;; -208990;1;0;false;false;0;0;0;;; -208991;2;0;false;false;;;;;; -208993;3;0;false;false;63;95;191;;; -208996;3;0;false;false;;;;;; -208999;1;0;false;false;63;95;191;;; -209000;1;0;false;false;;;;;; -209001;7;0;false;false;63;95;191;;; -209008;1;0;false;false;;;;;; -209009;3;0;false;false;63;95;191;;; -209012;1;0;false;false;;;;;; -209013;9;0;false;false;63;95;191;;; -209022;1;0;false;false;;;;;; -209023;13;0;false;false;63;95;191;;; -209036;1;0;false;false;;;;;; -209037;7;0;false;false;63;95;191;;; -209044;1;0;false;false;;;;;; -209045;9;0;false;false;63;95;191;;; -209054;3;0;false;false;;;;;; -209057;1;0;false;false;63;95;191;;; -209058;1;0;false;false;;;;;; -209059;3;0;false;false;127;127;159;;; -209062;3;0;false;false;;;;;; -209065;1;0;false;false;63;95;191;;; -209066;3;0;false;false;;;;;; -209069;1;0;false;false;63;95;191;;; -209070;1;0;false;false;;;;;; -209071;7;1;false;false;127;159;191;;; -209078;8;0;false;false;63;95;191;;; -209086;1;0;false;false;;;;;; -209087;3;0;false;false;63;95;191;;; -209090;1;0;false;false;;;;;; -209091;8;0;false;false;63;95;191;;; -209099;3;0;false;false;;;;;; -209102;1;0;false;false;63;95;191;;; -209103;1;0;false;false;;;;;; -209104;11;1;false;false;127;159;191;;; -209115;12;0;false;false;63;95;191;;; -209127;1;0;false;false;;;;;; -209128;4;0;false;false;127;127;159;;; -209132;3;0;false;false;;;;;; -209135;1;0;false;false;63;95;191;;; -209136;4;0;false;false;;;;;; -209140;4;0;false;false;127;127;159;;; -209144;21;0;false;false;63;95;191;;; -209165;1;0;false;false;;;;;; -209166;1;0;false;false;127;127;159;;; -209167;1;0;false;false;;;;;; -209168;2;0;false;false;63;95;191;;; -209170;1;0;false;false;;;;;; -209171;3;0;false;false;63;95;191;;; -209174;1;0;false;false;;;;;; -209175;8;0;false;false;63;95;191;;; -209183;1;0;false;false;;;;;; -209184;3;0;false;false;63;95;191;;; -209187;1;0;false;false;;;;;; -209188;4;0;false;false;63;95;191;;; -209192;1;0;false;false;;;;;; -209193;8;0;false;false;63;95;191;;; -209201;5;0;false;false;127;127;159;;; -209206;3;0;false;false;;;;;; -209209;1;0;false;false;63;95;191;;; -209210;4;0;false;false;;;;;; -209214;4;0;false;false;127;127;159;;; -209218;27;0;false;false;63;95;191;;; -209245;1;0;false;false;;;;;; -209246;1;0;false;false;127;127;159;;; -209247;1;0;false;false;;;;;; -209248;2;0;false;false;63;95;191;;; -209250;1;0;false;false;;;;;; -209251;3;0;false;false;63;95;191;;; -209254;1;0;false;false;;;;;; -209255;6;0;false;false;63;95;191;;; -209261;1;0;false;false;;;;;; -209262;4;0;false;false;63;95;191;;; -209266;1;0;false;false;;;;;; -209267;3;0;false;false;63;95;191;;; -209270;1;0;false;false;;;;;; -209271;6;0;false;false;63;95;191;;; -209277;1;0;false;false;;;;;; -209278;4;0;false;false;63;95;191;;; -209282;1;0;false;false;;;;;; -209283;7;0;false;false;63;95;191;;; -209290;1;0;false;false;;;;;; -209291;3;0;false;false;63;95;191;;; -209294;1;0;false;false;;;;;; -209295;8;0;false;false;63;95;191;;; -209303;5;0;false;false;127;127;159;;; -209308;3;0;false;false;;;;;; -209311;1;0;false;false;63;95;191;;; -209312;1;0;false;false;;;;;; -209313;5;0;false;false;127;127;159;;; -209318;3;0;false;false;;;;;; -209321;1;0;false;false;63;95;191;;; -209322;1;0;false;false;;;;;; -209323;11;1;false;false;127;159;191;;; -209334;24;0;false;false;63;95;191;;; -209358;1;0;false;false;;;;;; -209359;4;0;false;false;127;127;159;;; -209363;3;0;false;false;;;;;; -209366;1;0;false;false;63;95;191;;; -209367;4;0;false;false;;;;;; -209371;4;0;false;false;127;127;159;;; -209375;19;0;false;false;63;95;191;;; -209394;1;0;false;false;;;;;; -209395;4;0;false;false;63;95;191;;; -209399;1;0;false;false;;;;;; -209400;8;0;false;false;63;95;191;;; -209408;1;0;false;false;;;;;; -209409;2;0;false;false;63;95;191;;; -209411;1;0;false;false;;;;;; -209412;4;0;false;false;63;95;191;;; -209416;5;0;false;false;127;127;159;;; -209421;3;0;false;false;;;;;; -209424;1;0;false;false;63;95;191;;; -209425;1;0;false;false;;;;;; -209426;5;0;false;false;127;127;159;;; -209431;3;0;false;false;;;;;; -209434;1;0;false;false;63;95;191;;; -209435;1;0;false;false;;;;;; -209436;7;1;false;false;127;159;191;;; -209443;3;0;false;false;63;95;191;;; -209446;3;0;false;false;;;;;; -209449;2;0;false;false;63;95;191;;; -209451;2;0;false;false;;;;;; -209453;6;1;false;false;127;0;85;;; -209459;1;0;false;false;;;;;; -209460;4;1;false;false;127;0;85;;; -209464;1;0;false;false;;;;;; -209465;45;0;false;false;0;0;0;;; -209510;1;0;false;false;;;;;; -209511;9;0;false;false;0;0;0;;; -209520;1;0;false;false;;;;;; -209521;1;0;false;false;0;0;0;;; -209522;3;0;false;false;;;;;; -209525;14;0;false;false;0;0;0;;; -209539;3;0;false;false;;;;;; -209542;2;1;false;false;127;0;85;;; -209544;1;0;false;false;;;;;; -209545;9;0;false;false;0;0;0;;; -209554;1;0;false;false;;;;;; -209555;2;0;false;false;0;0;0;;; -209557;1;0;false;false;;;;;; -209558;4;1;false;false;127;0;85;;; -209562;1;0;false;false;0;0;0;;; -209563;1;0;false;false;;;;;; -209564;35;0;false;false;0;0;0;;; -209599;3;0;false;false;;;;;; -209602;31;0;false;false;0;0;0;;; -209633;1;0;false;false;;;;;; -209634;10;0;false;false;0;0;0;;; -209644;3;0;false;false;;;;;; -209647;1;0;false;false;0;0;0;;; -209648;2;0;false;false;;;;;; -209650;3;0;false;false;63;95;191;;; -209653;3;0;false;false;;;;;; -209656;1;0;false;false;63;95;191;;; -209657;1;0;false;false;;;;;; -209658;7;0;false;false;63;95;191;;; -209665;1;0;false;false;;;;;; -209666;3;0;false;false;63;95;191;;; -209669;1;0;false;false;;;;;; -209670;9;0;false;false;63;95;191;;; -209679;1;0;false;false;;;;;; -209680;8;0;false;false;63;95;191;;; -209688;1;0;false;false;;;;;; -209689;6;0;false;false;63;95;191;;; -209695;1;0;false;false;;;;;; -209696;9;0;false;false;63;95;191;;; -209705;3;0;false;false;;;;;; -209708;1;0;false;false;63;95;191;;; -209709;1;0;false;false;;;;;; -209710;3;0;false;false;127;127;159;;; -209713;3;0;false;false;;;;;; -209716;1;0;false;false;63;95;191;;; -209717;3;0;false;false;;;;;; -209720;1;0;false;false;63;95;191;;; -209721;1;0;false;false;;;;;; -209722;7;1;false;false;127;159;191;;; -209729;22;0;false;false;63;95;191;;; -209751;1;0;false;false;;;;;; -209752;3;0;false;false;63;95;191;;; -209755;1;0;false;false;;;;;; -209756;8;0;false;false;63;95;191;;; -209764;3;0;false;false;;;;;; -209767;1;0;false;false;63;95;191;;; -209768;1;0;false;false;;;;;; -209769;11;1;false;false;127;159;191;;; -209780;12;0;false;false;63;95;191;;; -209792;1;0;false;false;;;;;; -209793;4;0;false;false;127;127;159;;; -209797;3;0;false;false;;;;;; -209800;1;0;false;false;63;95;191;;; -209801;4;0;false;false;;;;;; -209805;4;0;false;false;127;127;159;;; -209809;21;0;false;false;63;95;191;;; -209830;1;0;false;false;;;;;; -209831;1;0;false;false;127;127;159;;; -209832;1;0;false;false;;;;;; -209833;2;0;false;false;63;95;191;;; -209835;1;0;false;false;;;;;; -209836;3;0;false;false;63;95;191;;; -209839;1;0;false;false;;;;;; -209840;8;0;false;false;63;95;191;;; -209848;1;0;false;false;;;;;; -209849;3;0;false;false;63;95;191;;; -209852;1;0;false;false;;;;;; -209853;4;0;false;false;63;95;191;;; -209857;1;0;false;false;;;;;; -209858;8;0;false;false;63;95;191;;; -209866;5;0;false;false;127;127;159;;; -209871;3;0;false;false;;;;;; -209874;1;0;false;false;63;95;191;;; -209875;4;0;false;false;;;;;; -209879;4;0;false;false;127;127;159;;; -209883;27;0;false;false;63;95;191;;; -209910;1;0;false;false;;;;;; -209911;1;0;false;false;127;127;159;;; -209912;1;0;false;false;;;;;; -209913;2;0;false;false;63;95;191;;; -209915;1;0;false;false;;;;;; -209916;3;0;false;false;63;95;191;;; -209919;1;0;false;false;;;;;; -209920;6;0;false;false;63;95;191;;; -209926;1;0;false;false;;;;;; -209927;4;0;false;false;63;95;191;;; -209931;1;0;false;false;;;;;; -209932;3;0;false;false;63;95;191;;; -209935;1;0;false;false;;;;;; -209936;6;0;false;false;63;95;191;;; -209942;1;0;false;false;;;;;; -209943;4;0;false;false;63;95;191;;; -209947;1;0;false;false;;;;;; -209948;7;0;false;false;63;95;191;;; -209955;1;0;false;false;;;;;; -209956;3;0;false;false;63;95;191;;; -209959;1;0;false;false;;;;;; -209960;8;0;false;false;63;95;191;;; -209968;5;0;false;false;127;127;159;;; -209973;3;0;false;false;;;;;; -209976;1;0;false;false;63;95;191;;; -209977;1;0;false;false;;;;;; -209978;5;0;false;false;127;127;159;;; -209983;3;0;false;false;;;;;; -209986;1;0;false;false;63;95;191;;; -209987;1;0;false;false;;;;;; -209988;11;1;false;false;127;159;191;;; -209999;24;0;false;false;63;95;191;;; -210023;1;0;false;false;;;;;; -210024;4;0;false;false;127;127;159;;; -210028;3;0;false;false;;;;;; -210031;1;0;false;false;63;95;191;;; -210032;4;0;false;false;;;;;; -210036;4;0;false;false;127;127;159;;; -210040;19;0;false;false;63;95;191;;; -210059;1;0;false;false;;;;;; -210060;4;0;false;false;63;95;191;;; -210064;1;0;false;false;;;;;; -210065;8;0;false;false;63;95;191;;; -210073;1;0;false;false;;;;;; -210074;2;0;false;false;63;95;191;;; -210076;1;0;false;false;;;;;; -210077;4;0;false;false;63;95;191;;; -210081;5;0;false;false;127;127;159;;; -210086;3;0;false;false;;;;;; -210089;1;0;false;false;63;95;191;;; -210090;1;0;false;false;;;;;; -210091;5;0;false;false;127;127;159;;; -210096;3;0;false;false;;;;;; -210099;2;0;false;false;63;95;191;;; -210101;2;0;false;false;;;;;; -210103;6;1;false;false;127;0;85;;; -210109;1;0;false;false;;;;;; -210110;4;1;false;false;127;0;85;;; -210114;1;0;false;false;;;;;; -210115;51;0;false;false;0;0;0;;; -210166;1;0;false;false;;;;;; -210167;23;0;false;false;0;0;0;;; -210190;1;0;false;false;;;;;; -210191;1;0;false;false;0;0;0;;; -210192;3;0;false;false;;;;;; -210195;14;0;false;false;0;0;0;;; -210209;3;0;false;false;;;;;; -210212;2;1;false;false;127;0;85;;; -210214;1;0;false;false;;;;;; -210215;23;0;false;false;0;0;0;;; -210238;1;0;false;false;;;;;; -210239;2;0;false;false;0;0;0;;; -210241;1;0;false;false;;;;;; -210242;4;1;false;false;127;0;85;;; -210246;1;0;false;false;0;0;0;;; -210247;1;0;false;false;;;;;; -210248;35;0;false;false;0;0;0;;; -210283;3;0;false;false;;;;;; -210286;30;0;false;false;0;0;0;;; -210316;1;0;false;false;;;;;; -210317;24;0;false;false;0;0;0;;; -210341;3;0;false;false;;;;;; -210344;1;0;false;false;0;0;0;;; -210345;2;0;false;false;;;;;; -210347;3;0;false;false;63;95;191;;; -210350;3;0;false;false;;;;;; -210353;1;0;false;false;63;95;191;;; -210354;1;0;false;false;;;;;; -210355;7;0;false;false;63;95;191;;; -210362;1;0;false;false;;;;;; -210363;3;0;false;false;63;95;191;;; -210366;1;0;false;false;;;;;; -210367;9;0;false;false;63;95;191;;; -210376;1;0;false;false;;;;;; -210377;4;0;false;false;63;95;191;;; -210381;1;0;false;false;;;;;; -210382;10;0;false;false;63;95;191;;; -210392;1;0;false;false;;;;;; -210393;9;0;false;false;63;95;191;;; -210402;3;0;false;false;;;;;; -210405;1;0;false;false;63;95;191;;; -210406;1;0;false;false;;;;;; -210407;3;0;false;false;127;127;159;;; -210410;3;0;false;false;;;;;; -210413;1;0;false;false;63;95;191;;; -210414;3;0;false;false;;;;;; -210417;1;0;false;false;63;95;191;;; -210418;1;0;false;false;;;;;; -210419;7;1;false;false;127;159;191;;; -210426;8;0;false;false;63;95;191;;; -210434;1;0;false;false;;;;;; -210435;3;0;false;false;63;95;191;;; -210438;1;0;false;false;;;;;; -210439;8;0;false;false;63;95;191;;; -210447;3;0;false;false;;;;;; -210450;1;0;false;false;63;95;191;;; -210451;1;0;false;false;;;;;; -210452;11;1;false;false;127;159;191;;; -210463;12;0;false;false;63;95;191;;; -210475;1;0;false;false;;;;;; -210476;4;0;false;false;127;127;159;;; -210480;3;0;false;false;;;;;; -210483;1;0;false;false;63;95;191;;; -210484;4;0;false;false;;;;;; -210488;4;0;false;false;127;127;159;;; -210492;21;0;false;false;63;95;191;;; -210513;1;0;false;false;;;;;; -210514;1;0;false;false;127;127;159;;; -210515;1;0;false;false;;;;;; -210516;2;0;false;false;63;95;191;;; -210518;1;0;false;false;;;;;; -210519;3;0;false;false;63;95;191;;; -210522;1;0;false;false;;;;;; -210523;8;0;false;false;63;95;191;;; -210531;1;0;false;false;;;;;; -210532;3;0;false;false;63;95;191;;; -210535;1;0;false;false;;;;;; -210536;4;0;false;false;63;95;191;;; -210540;1;0;false;false;;;;;; -210541;8;0;false;false;63;95;191;;; -210549;5;0;false;false;127;127;159;;; -210554;3;0;false;false;;;;;; -210557;1;0;false;false;63;95;191;;; -210558;4;0;false;false;;;;;; -210562;4;0;false;false;127;127;159;;; -210566;27;0;false;false;63;95;191;;; -210593;1;0;false;false;;;;;; -210594;1;0;false;false;127;127;159;;; -210595;1;0;false;false;;;;;; -210596;2;0;false;false;63;95;191;;; -210598;1;0;false;false;;;;;; -210599;3;0;false;false;63;95;191;;; -210602;1;0;false;false;;;;;; -210603;6;0;false;false;63;95;191;;; -210609;1;0;false;false;;;;;; -210610;4;0;false;false;63;95;191;;; -210614;1;0;false;false;;;;;; -210615;3;0;false;false;63;95;191;;; -210618;1;0;false;false;;;;;; -210619;6;0;false;false;63;95;191;;; -210625;1;0;false;false;;;;;; -210626;4;0;false;false;63;95;191;;; -210630;1;0;false;false;;;;;; -210631;7;0;false;false;63;95;191;;; -210638;1;0;false;false;;;;;; -210639;3;0;false;false;63;95;191;;; -210642;1;0;false;false;;;;;; -210643;8;0;false;false;63;95;191;;; -210651;5;0;false;false;127;127;159;;; -210656;3;0;false;false;;;;;; -210659;1;0;false;false;63;95;191;;; -210660;1;0;false;false;;;;;; -210661;5;0;false;false;127;127;159;;; -210666;3;0;false;false;;;;;; -210669;1;0;false;false;63;95;191;;; -210670;1;0;false;false;;;;;; -210671;11;1;false;false;127;159;191;;; -210682;24;0;false;false;63;95;191;;; -210706;1;0;false;false;;;;;; -210707;4;0;false;false;127;127;159;;; -210711;3;0;false;false;;;;;; -210714;1;0;false;false;63;95;191;;; -210715;4;0;false;false;;;;;; -210719;4;0;false;false;127;127;159;;; -210723;19;0;false;false;63;95;191;;; -210742;1;0;false;false;;;;;; -210743;4;0;false;false;63;95;191;;; -210747;1;0;false;false;;;;;; -210748;8;0;false;false;63;95;191;;; -210756;1;0;false;false;;;;;; -210757;2;0;false;false;63;95;191;;; -210759;1;0;false;false;;;;;; -210760;4;0;false;false;63;95;191;;; -210764;5;0;false;false;127;127;159;;; -210769;3;0;false;false;;;;;; -210772;1;0;false;false;63;95;191;;; -210773;1;0;false;false;;;;;; -210774;5;0;false;false;127;127;159;;; -210779;3;0;false;false;;;;;; -210782;2;0;false;false;63;95;191;;; -210784;2;0;false;false;;;;;; -210786;6;1;false;false;127;0;85;;; -210792;1;0;false;false;;;;;; -210793;4;1;false;false;127;0;85;;; -210797;1;0;false;false;;;;;; -210798;51;0;false;false;0;0;0;;; -210849;1;0;false;false;;;;;; -210850;9;0;false;false;0;0;0;;; -210859;1;0;false;false;;;;;; -210860;1;0;false;false;0;0;0;;; -210861;3;0;false;false;;;;;; -210864;14;0;false;false;0;0;0;;; -210878;3;0;false;false;;;;;; -210881;2;1;false;false;127;0;85;;; -210883;1;0;false;false;;;;;; -210884;9;0;false;false;0;0;0;;; -210893;1;0;false;false;;;;;; -210894;2;0;false;false;0;0;0;;; -210896;1;0;false;false;;;;;; -210897;4;1;false;false;127;0;85;;; -210901;1;0;false;false;0;0;0;;; -210902;1;0;false;false;;;;;; -210903;35;0;false;false;0;0;0;;; -210938;3;0;false;false;;;;;; -210941;33;0;false;false;0;0;0;;; -210974;1;0;false;false;;;;;; -210975;10;0;false;false;0;0;0;;; -210985;4;0;false;false;;;;;; -210989;66;0;false;false;63;127;95;;; -211055;1;0;false;false;;;;;; -211056;2;1;false;false;127;0;85;;; -211058;1;0;false;false;;;;;; -211059;32;0;false;false;0;0;0;;; -211091;1;0;false;false;;;;;; -211092;2;0;false;false;0;0;0;;; -211094;1;0;false;false;;;;;; -211095;19;0;false;false;0;0;0;;; -211114;1;0;false;false;;;;;; -211115;1;0;false;false;0;0;0;;; -211116;4;0;false;false;;;;;; -211120;18;0;false;false;0;0;0;;; -211138;1;0;false;false;;;;;; -211139;13;0;false;false;0;0;0;;; -211152;1;0;false;false;;;;;; -211153;1;0;false;false;0;0;0;;; -211154;1;0;false;false;;;;;; -211155;3;1;false;false;127;0;85;;; -211158;1;0;false;false;;;;;; -211159;38;0;false;false;0;0;0;;; -211197;4;0;false;false;;;;;; -211201;30;0;false;false;0;0;0;;; -211231;1;0;false;false;;;;;; -211232;15;0;false;false;0;0;0;;; -211247;5;0;false;false;;;;;; -211252;18;0;false;false;0;0;0;;; -211270;1;0;false;false;;;;;; -211271;1;0;false;false;0;0;0;;; -211272;1;0;false;false;;;;;; -211273;5;1;false;false;127;0;85;;; -211278;1;0;false;false;0;0;0;;; -211279;3;0;false;false;;;;;; -211282;1;0;false;false;0;0;0;;; -211283;2;0;false;false;;;;;; -211285;1;0;false;false;0;0;0;;; -211286;2;0;false;false;;;;;; -211288;3;0;false;false;63;95;191;;; -211291;3;0;false;false;;;;;; -211294;1;0;false;false;63;95;191;;; -211295;1;0;false;false;;;;;; -211296;7;0;false;false;63;95;191;;; -211303;1;0;false;false;;;;;; -211304;3;0;false;false;63;95;191;;; -211307;1;0;false;false;;;;;; -211308;9;0;false;false;63;95;191;;; -211317;1;0;false;false;;;;;; -211318;4;0;false;false;63;95;191;;; -211322;1;0;false;false;;;;;; -211323;5;0;false;false;63;95;191;;; -211328;1;0;false;false;;;;;; -211329;9;0;false;false;63;95;191;;; -211338;3;0;false;false;;;;;; -211341;1;0;false;false;63;95;191;;; -211342;1;0;false;false;;;;;; -211343;3;0;false;false;127;127;159;;; -211346;3;0;false;false;;;;;; -211349;1;0;false;false;63;95;191;;; -211350;3;0;false;false;;;;;; -211353;1;0;false;false;63;95;191;;; -211354;1;0;false;false;;;;;; -211355;7;1;false;false;127;159;191;;; -211362;8;0;false;false;63;95;191;;; -211370;1;0;false;false;;;;;; -211371;3;0;false;false;63;95;191;;; -211374;1;0;false;false;;;;;; -211375;8;0;false;false;63;95;191;;; -211383;3;0;false;false;;;;;; -211386;1;0;false;false;63;95;191;;; -211387;1;0;false;false;;;;;; -211388;11;1;false;false;127;159;191;;; -211399;12;0;false;false;63;95;191;;; -211411;1;0;false;false;;;;;; -211412;4;0;false;false;127;127;159;;; -211416;3;0;false;false;;;;;; -211419;1;0;false;false;63;95;191;;; -211420;4;0;false;false;;;;;; -211424;4;0;false;false;127;127;159;;; -211428;21;0;false;false;63;95;191;;; -211449;1;0;false;false;;;;;; -211450;1;0;false;false;127;127;159;;; -211451;1;0;false;false;;;;;; -211452;2;0;false;false;63;95;191;;; -211454;1;0;false;false;;;;;; -211455;3;0;false;false;63;95;191;;; -211458;1;0;false;false;;;;;; -211459;8;0;false;false;63;95;191;;; -211467;1;0;false;false;;;;;; -211468;3;0;false;false;63;95;191;;; -211471;1;0;false;false;;;;;; -211472;4;0;false;false;63;95;191;;; -211476;1;0;false;false;;;;;; -211477;8;0;false;false;63;95;191;;; -211485;5;0;false;false;127;127;159;;; -211490;3;0;false;false;;;;;; -211493;1;0;false;false;63;95;191;;; -211494;4;0;false;false;;;;;; -211498;4;0;false;false;127;127;159;;; -211502;27;0;false;false;63;95;191;;; -211529;1;0;false;false;;;;;; -211530;1;0;false;false;127;127;159;;; -211531;1;0;false;false;;;;;; -211532;2;0;false;false;63;95;191;;; -211534;1;0;false;false;;;;;; -211535;3;0;false;false;63;95;191;;; -211538;1;0;false;false;;;;;; -211539;6;0;false;false;63;95;191;;; -211545;1;0;false;false;;;;;; -211546;4;0;false;false;63;95;191;;; -211550;1;0;false;false;;;;;; -211551;3;0;false;false;63;95;191;;; -211554;1;0;false;false;;;;;; -211555;6;0;false;false;63;95;191;;; -211561;1;0;false;false;;;;;; -211562;4;0;false;false;63;95;191;;; -211566;1;0;false;false;;;;;; -211567;7;0;false;false;63;95;191;;; -211574;1;0;false;false;;;;;; -211575;3;0;false;false;63;95;191;;; -211578;1;0;false;false;;;;;; -211579;8;0;false;false;63;95;191;;; -211587;5;0;false;false;127;127;159;;; -211592;3;0;false;false;;;;;; -211595;1;0;false;false;63;95;191;;; -211596;1;0;false;false;;;;;; -211597;5;0;false;false;127;127;159;;; -211602;3;0;false;false;;;;;; -211605;1;0;false;false;63;95;191;;; -211606;1;0;false;false;;;;;; -211607;11;1;false;false;127;159;191;;; -211618;24;0;false;false;63;95;191;;; -211642;1;0;false;false;;;;;; -211643;4;0;false;false;127;127;159;;; -211647;3;0;false;false;;;;;; -211650;1;0;false;false;63;95;191;;; -211651;4;0;false;false;;;;;; -211655;4;0;false;false;127;127;159;;; -211659;19;0;false;false;63;95;191;;; -211678;1;0;false;false;;;;;; -211679;4;0;false;false;63;95;191;;; -211683;1;0;false;false;;;;;; -211684;8;0;false;false;63;95;191;;; -211692;1;0;false;false;;;;;; -211693;2;0;false;false;63;95;191;;; -211695;1;0;false;false;;;;;; -211696;4;0;false;false;63;95;191;;; -211700;5;0;false;false;127;127;159;;; -211705;3;0;false;false;;;;;; -211708;1;0;false;false;63;95;191;;; -211709;1;0;false;false;;;;;; -211710;5;0;false;false;127;127;159;;; -211715;3;0;false;false;;;;;; -211718;2;0;false;false;63;95;191;;; -211720;2;0;false;false;;;;;; -211722;6;1;false;false;127;0;85;;; -211728;1;0;false;false;;;;;; -211729;4;1;false;false;127;0;85;;; -211733;1;0;false;false;;;;;; -211734;41;0;false;false;0;0;0;;; -211775;1;0;false;false;;;;;; -211776;9;0;false;false;0;0;0;;; -211785;1;0;false;false;;;;;; -211786;1;0;false;false;0;0;0;;; -211787;3;0;false;false;;;;;; -211790;14;0;false;false;0;0;0;;; -211804;3;0;false;false;;;;;; -211807;2;1;false;false;127;0;85;;; -211809;1;0;false;false;;;;;; -211810;9;0;false;false;0;0;0;;; -211819;1;0;false;false;;;;;; -211820;2;0;false;false;0;0;0;;; -211822;1;0;false;false;;;;;; -211823;4;1;false;false;127;0;85;;; -211827;1;0;false;false;0;0;0;;; -211828;1;0;false;false;;;;;; -211829;1;0;false;false;0;0;0;;; -211830;4;0;false;false;;;;;; -211834;35;0;false;false;0;0;0;;; -211869;3;0;false;false;;;;;; -211872;1;0;false;false;0;0;0;;; -211873;3;0;false;false;;;;;; -211876;28;0;false;false;0;0;0;;; -211904;1;0;false;false;;;;;; -211905;10;0;false;false;0;0;0;;; -211915;4;0;false;false;;;;;; -211919;80;0;false;false;63;127;95;;; -211999;1;0;false;false;;;;;; -212000;2;1;false;false;127;0;85;;; -212002;1;0;false;false;;;;;; -212003;27;0;false;false;0;0;0;;; -212030;1;0;false;false;;;;;; -212031;2;0;false;false;0;0;0;;; -212033;1;0;false;false;;;;;; -212034;14;0;false;false;0;0;0;;; -212048;1;0;false;false;;;;;; -212049;1;0;false;false;0;0;0;;; -212050;4;0;false;false;;;;;; -212054;18;0;false;false;0;0;0;;; -212072;1;0;false;false;;;;;; -212073;13;0;false;false;0;0;0;;; -212086;1;0;false;false;;;;;; -212087;1;0;false;false;0;0;0;;; -212088;1;0;false;false;;;;;; -212089;3;1;false;false;127;0;85;;; -212092;1;0;false;false;;;;;; -212093;38;0;false;false;0;0;0;;; -212131;4;0;false;false;;;;;; -212135;25;0;false;false;0;0;0;;; -212160;1;0;false;false;;;;;; -212161;15;0;false;false;0;0;0;;; -212176;5;0;false;false;;;;;; -212181;13;0;false;false;0;0;0;;; -212194;1;0;false;false;;;;;; -212195;1;0;false;false;0;0;0;;; -212196;1;0;false;false;;;;;; -212197;5;1;false;false;127;0;85;;; -212202;1;0;false;false;0;0;0;;; -212203;3;0;false;false;;;;;; -212206;1;0;false;false;0;0;0;;; -212207;2;0;false;false;;;;;; -212209;1;0;false;false;0;0;0;;; -212210;2;0;false;false;;;;;; -212212;3;0;false;false;63;95;191;;; -212215;3;0;false;false;;;;;; -212218;1;0;false;false;63;95;191;;; -212219;1;0;false;false;;;;;; -212220;7;0;false;false;63;95;191;;; -212227;1;0;false;false;;;;;; -212228;3;0;false;false;63;95;191;;; -212231;1;0;false;false;;;;;; -212232;9;0;false;false;63;95;191;;; -212241;1;0;false;false;;;;;; -212242;6;0;false;false;63;95;191;;; -212248;1;0;false;false;;;;;; -212249;9;0;false;false;63;95;191;;; -212258;3;0;false;false;;;;;; -212261;1;0;false;false;63;95;191;;; -212262;1;0;false;false;;;;;; -212263;3;0;false;false;127;127;159;;; -212266;3;0;false;false;;;;;; -212269;1;0;false;false;63;95;191;;; -212270;3;0;false;false;;;;;; -212273;1;0;false;false;63;95;191;;; -212274;1;0;false;false;;;;;; -212275;7;1;false;false;127;159;191;;; -212282;14;0;false;false;63;95;191;;; -212296;1;0;false;false;;;;;; -212297;3;0;false;false;63;95;191;;; -212300;1;0;false;false;;;;;; -212301;8;0;false;false;63;95;191;;; -212309;3;0;false;false;;;;;; -212312;1;0;false;false;63;95;191;;; -212313;1;0;false;false;;;;;; -212314;11;1;false;false;127;159;191;;; -212325;12;0;false;false;63;95;191;;; -212337;1;0;false;false;;;;;; -212338;4;0;false;false;127;127;159;;; -212342;3;0;false;false;;;;;; -212345;1;0;false;false;63;95;191;;; -212346;4;0;false;false;;;;;; -212350;4;0;false;false;127;127;159;;; -212354;21;0;false;false;63;95;191;;; -212375;1;0;false;false;;;;;; -212376;1;0;false;false;127;127;159;;; -212377;1;0;false;false;;;;;; -212378;2;0;false;false;63;95;191;;; -212380;1;0;false;false;;;;;; -212381;3;0;false;false;63;95;191;;; -212384;1;0;false;false;;;;;; -212385;8;0;false;false;63;95;191;;; -212393;1;0;false;false;;;;;; -212394;3;0;false;false;63;95;191;;; -212397;1;0;false;false;;;;;; -212398;4;0;false;false;63;95;191;;; -212402;1;0;false;false;;;;;; -212403;8;0;false;false;63;95;191;;; -212411;5;0;false;false;127;127;159;;; -212416;3;0;false;false;;;;;; -212419;1;0;false;false;63;95;191;;; -212420;4;0;false;false;;;;;; -212424;4;0;false;false;127;127;159;;; -212428;27;0;false;false;63;95;191;;; -212455;1;0;false;false;;;;;; -212456;1;0;false;false;127;127;159;;; -212457;1;0;false;false;;;;;; -212458;2;0;false;false;63;95;191;;; -212460;1;0;false;false;;;;;; -212461;3;0;false;false;63;95;191;;; -212464;1;0;false;false;;;;;; -212465;6;0;false;false;63;95;191;;; -212471;1;0;false;false;;;;;; -212472;4;0;false;false;63;95;191;;; -212476;1;0;false;false;;;;;; -212477;3;0;false;false;63;95;191;;; -212480;1;0;false;false;;;;;; -212481;6;0;false;false;63;95;191;;; -212487;1;0;false;false;;;;;; -212488;4;0;false;false;63;95;191;;; -212492;1;0;false;false;;;;;; -212493;7;0;false;false;63;95;191;;; -212500;1;0;false;false;;;;;; -212501;3;0;false;false;63;95;191;;; -212504;1;0;false;false;;;;;; -212505;8;0;false;false;63;95;191;;; -212513;5;0;false;false;127;127;159;;; -212518;3;0;false;false;;;;;; -212521;1;0;false;false;63;95;191;;; -212522;1;0;false;false;;;;;; -212523;5;0;false;false;127;127;159;;; -212528;3;0;false;false;;;;;; -212531;1;0;false;false;63;95;191;;; -212532;1;0;false;false;;;;;; -212533;11;1;false;false;127;159;191;;; -212544;24;0;false;false;63;95;191;;; -212568;1;0;false;false;;;;;; -212569;4;0;false;false;127;127;159;;; -212573;3;0;false;false;;;;;; -212576;1;0;false;false;63;95;191;;; -212577;4;0;false;false;;;;;; -212581;4;0;false;false;127;127;159;;; -212585;19;0;false;false;63;95;191;;; -212604;1;0;false;false;;;;;; -212605;4;0;false;false;63;95;191;;; -212609;1;0;false;false;;;;;; -212610;8;0;false;false;63;95;191;;; -212618;1;0;false;false;;;;;; -212619;2;0;false;false;63;95;191;;; -212621;1;0;false;false;;;;;; -212622;4;0;false;false;63;95;191;;; -212626;5;0;false;false;127;127;159;;; -212631;3;0;false;false;;;;;; -212634;1;0;false;false;63;95;191;;; -212635;1;0;false;false;;;;;; -212636;5;0;false;false;127;127;159;;; -212641;3;0;false;false;;;;;; -212644;2;0;false;false;63;95;191;;; -212646;2;0;false;false;;;;;; -212648;6;1;false;false;127;0;85;;; -212654;1;0;false;false;;;;;; -212655;4;1;false;false;127;0;85;;; -212659;1;0;false;false;;;;;; -212660;35;0;false;false;0;0;0;;; -212695;1;0;false;false;;;;;; -212696;15;0;false;false;0;0;0;;; -212711;1;0;false;false;;;;;; -212712;1;0;false;false;0;0;0;;; -212713;3;0;false;false;;;;;; -212716;14;0;false;false;0;0;0;;; -212730;3;0;false;false;;;;;; -212733;2;1;false;false;127;0;85;;; -212735;1;0;false;false;;;;;; -212736;15;0;false;false;0;0;0;;; -212751;1;0;false;false;;;;;; -212752;2;0;false;false;0;0;0;;; -212754;1;0;false;false;;;;;; -212755;4;1;false;false;127;0;85;;; -212759;1;0;false;false;0;0;0;;; -212760;1;0;false;false;;;;;; -212761;1;0;false;false;0;0;0;;; -212762;4;0;false;false;;;;;; -212766;35;0;false;false;0;0;0;;; -212801;3;0;false;false;;;;;; -212804;1;0;false;false;0;0;0;;; -212805;3;0;false;false;;;;;; -212808;26;0;false;false;0;0;0;;; -212834;1;0;false;false;;;;;; -212835;16;0;false;false;0;0;0;;; -212851;3;0;false;false;;;;;; -212854;1;0;false;false;0;0;0;;; -212855;2;0;false;false;;;;;; -212857;3;0;false;false;63;95;191;;; -212860;3;0;false;false;;;;;; -212863;1;0;false;false;63;95;191;;; -212864;1;0;false;false;;;;;; -212865;7;0;false;false;63;95;191;;; -212872;1;0;false;false;;;;;; -212873;3;0;false;false;63;95;191;;; -212876;1;0;false;false;;;;;; -212877;9;0;false;false;63;95;191;;; -212886;1;0;false;false;;;;;; -212887;9;0;false;false;63;95;191;;; -212896;1;0;false;false;;;;;; -212897;9;0;false;false;63;95;191;;; -212906;3;0;false;false;;;;;; -212909;1;0;false;false;63;95;191;;; -212910;1;0;false;false;;;;;; -212911;3;0;false;false;127;127;159;;; -212914;3;0;false;false;;;;;; -212917;1;0;false;false;63;95;191;;; -212918;3;0;false;false;;;;;; -212921;1;0;false;false;63;95;191;;; -212922;1;0;false;false;;;;;; -212923;7;1;false;false;127;159;191;;; -212930;8;0;false;false;63;95;191;;; -212938;1;0;false;false;;;;;; -212939;3;0;false;false;63;95;191;;; -212942;1;0;false;false;;;;;; -212943;8;0;false;false;63;95;191;;; -212951;3;0;false;false;;;;;; -212954;1;0;false;false;63;95;191;;; -212955;1;0;false;false;;;;;; -212956;11;1;false;false;127;159;191;;; -212967;12;0;false;false;63;95;191;;; -212979;1;0;false;false;;;;;; -212980;4;0;false;false;127;127;159;;; -212984;3;0;false;false;;;;;; -212987;1;0;false;false;63;95;191;;; -212988;4;0;false;false;;;;;; -212992;4;0;false;false;127;127;159;;; -212996;21;0;false;false;63;95;191;;; -213017;1;0;false;false;;;;;; -213018;1;0;false;false;127;127;159;;; -213019;1;0;false;false;;;;;; -213020;2;0;false;false;63;95;191;;; -213022;1;0;false;false;;;;;; -213023;3;0;false;false;63;95;191;;; -213026;1;0;false;false;;;;;; -213027;8;0;false;false;63;95;191;;; -213035;1;0;false;false;;;;;; -213036;3;0;false;false;63;95;191;;; -213039;1;0;false;false;;;;;; -213040;4;0;false;false;63;95;191;;; -213044;1;0;false;false;;;;;; -213045;8;0;false;false;63;95;191;;; -213053;5;0;false;false;127;127;159;;; -213058;3;0;false;false;;;;;; -213061;1;0;false;false;63;95;191;;; -213062;4;0;false;false;;;;;; -213066;4;0;false;false;127;127;159;;; -213070;27;0;false;false;63;95;191;;; -213097;1;0;false;false;;;;;; -213098;1;0;false;false;127;127;159;;; -213099;1;0;false;false;;;;;; -213100;2;0;false;false;63;95;191;;; -213102;1;0;false;false;;;;;; -213103;3;0;false;false;63;95;191;;; -213106;1;0;false;false;;;;;; -213107;6;0;false;false;63;95;191;;; -213113;1;0;false;false;;;;;; -213114;4;0;false;false;63;95;191;;; -213118;1;0;false;false;;;;;; -213119;3;0;false;false;63;95;191;;; -213122;1;0;false;false;;;;;; -213123;6;0;false;false;63;95;191;;; -213129;1;0;false;false;;;;;; -213130;4;0;false;false;63;95;191;;; -213134;1;0;false;false;;;;;; -213135;7;0;false;false;63;95;191;;; -213142;1;0;false;false;;;;;; -213143;3;0;false;false;63;95;191;;; -213146;1;0;false;false;;;;;; -213147;8;0;false;false;63;95;191;;; -213155;5;0;false;false;127;127;159;;; -213160;3;0;false;false;;;;;; -213163;1;0;false;false;63;95;191;;; -213164;1;0;false;false;;;;;; -213165;5;0;false;false;127;127;159;;; -213170;3;0;false;false;;;;;; -213173;1;0;false;false;63;95;191;;; -213174;1;0;false;false;;;;;; -213175;11;1;false;false;127;159;191;;; -213186;24;0;false;false;63;95;191;;; -213210;1;0;false;false;;;;;; -213211;4;0;false;false;127;127;159;;; -213215;3;0;false;false;;;;;; -213218;1;0;false;false;63;95;191;;; -213219;4;0;false;false;;;;;; -213223;4;0;false;false;127;127;159;;; -213227;19;0;false;false;63;95;191;;; -213246;1;0;false;false;;;;;; -213247;4;0;false;false;63;95;191;;; -213251;1;0;false;false;;;;;; -213252;8;0;false;false;63;95;191;;; -213260;1;0;false;false;;;;;; -213261;2;0;false;false;63;95;191;;; -213263;1;0;false;false;;;;;; -213264;4;0;false;false;63;95;191;;; -213268;5;0;false;false;127;127;159;;; -213273;3;0;false;false;;;;;; -213276;1;0;false;false;63;95;191;;; -213277;1;0;false;false;;;;;; -213278;5;0;false;false;127;127;159;;; -213283;3;0;false;false;;;;;; -213286;2;0;false;false;63;95;191;;; -213288;2;0;false;false;;;;;; -213290;6;1;false;false;127;0;85;;; -213296;1;0;false;false;;;;;; -213297;4;1;false;false;127;0;85;;; -213301;1;0;false;false;;;;;; -213302;41;0;false;false;0;0;0;;; -213343;1;0;false;false;;;;;; -213344;9;0;false;false;0;0;0;;; -213353;1;0;false;false;;;;;; -213354;1;0;false;false;0;0;0;;; -213355;3;0;false;false;;;;;; -213358;14;0;false;false;0;0;0;;; -213372;3;0;false;false;;;;;; -213375;2;1;false;false;127;0;85;;; -213377;1;0;false;false;;;;;; -213378;9;0;false;false;0;0;0;;; -213387;1;0;false;false;;;;;; -213388;2;0;false;false;0;0;0;;; -213390;1;0;false;false;;;;;; -213391;4;1;false;false;127;0;85;;; -213395;1;0;false;false;0;0;0;;; -213396;1;0;false;false;;;;;; -213397;1;0;false;false;0;0;0;;; -213398;4;0;false;false;;;;;; -213402;35;0;false;false;0;0;0;;; -213437;3;0;false;false;;;;;; -213440;1;0;false;false;0;0;0;;; -213441;3;0;false;false;;;;;; -213444;29;0;false;false;0;0;0;;; -213473;1;0;false;false;;;;;; -213474;10;0;false;false;0;0;0;;; -213484;3;0;false;false;;;;;; -213487;1;0;false;false;0;0;0;;; -213488;2;0;false;false;;;;;; -213490;3;0;false;false;63;95;191;;; -213493;3;0;false;false;;;;;; -213496;1;0;false;false;63;95;191;;; -213497;1;0;false;false;;;;;; -213498;7;0;false;false;63;95;191;;; -213505;1;0;false;false;;;;;; -213506;3;0;false;false;63;95;191;;; -213509;1;0;false;false;;;;;; -213510;9;0;false;false;63;95;191;;; -213519;1;0;false;false;;;;;; -213520;6;0;false;false;63;95;191;;; -213526;1;0;false;false;;;;;; -213527;9;0;false;false;63;95;191;;; -213536;3;0;false;false;;;;;; -213539;1;0;false;false;63;95;191;;; -213540;1;0;false;false;;;;;; -213541;3;0;false;false;127;127;159;;; -213544;3;0;false;false;;;;;; -213547;1;0;false;false;63;95;191;;; -213548;3;0;false;false;;;;;; -213551;1;0;false;false;63;95;191;;; -213552;1;0;false;false;;;;;; -213553;7;1;false;false;127;159;191;;; -213560;14;0;false;false;63;95;191;;; -213574;1;0;false;false;;;;;; -213575;3;0;false;false;63;95;191;;; -213578;1;0;false;false;;;;;; -213579;8;0;false;false;63;95;191;;; -213587;3;0;false;false;;;;;; -213590;1;0;false;false;63;95;191;;; -213591;1;0;false;false;;;;;; -213592;11;1;false;false;127;159;191;;; -213603;12;0;false;false;63;95;191;;; -213615;1;0;false;false;;;;;; -213616;4;0;false;false;127;127;159;;; -213620;3;0;false;false;;;;;; -213623;1;0;false;false;63;95;191;;; -213624;4;0;false;false;;;;;; -213628;4;0;false;false;127;127;159;;; -213632;21;0;false;false;63;95;191;;; -213653;1;0;false;false;;;;;; -213654;1;0;false;false;127;127;159;;; -213655;1;0;false;false;;;;;; -213656;2;0;false;false;63;95;191;;; -213658;1;0;false;false;;;;;; -213659;3;0;false;false;63;95;191;;; -213662;1;0;false;false;;;;;; -213663;8;0;false;false;63;95;191;;; -213671;1;0;false;false;;;;;; -213672;3;0;false;false;63;95;191;;; -213675;1;0;false;false;;;;;; -213676;4;0;false;false;63;95;191;;; -213680;1;0;false;false;;;;;; -213681;8;0;false;false;63;95;191;;; -213689;5;0;false;false;127;127;159;;; -213694;3;0;false;false;;;;;; -213697;1;0;false;false;63;95;191;;; -213698;4;0;false;false;;;;;; -213702;4;0;false;false;127;127;159;;; -213706;27;0;false;false;63;95;191;;; -213733;1;0;false;false;;;;;; -213734;1;0;false;false;127;127;159;;; -213735;1;0;false;false;;;;;; -213736;2;0;false;false;63;95;191;;; -213738;1;0;false;false;;;;;; -213739;3;0;false;false;63;95;191;;; -213742;1;0;false;false;;;;;; -213743;6;0;false;false;63;95;191;;; -213749;1;0;false;false;;;;;; -213750;4;0;false;false;63;95;191;;; -213754;1;0;false;false;;;;;; -213755;3;0;false;false;63;95;191;;; -213758;1;0;false;false;;;;;; -213759;6;0;false;false;63;95;191;;; -213765;1;0;false;false;;;;;; -213766;4;0;false;false;63;95;191;;; -213770;1;0;false;false;;;;;; -213771;7;0;false;false;63;95;191;;; -213778;1;0;false;false;;;;;; -213779;3;0;false;false;63;95;191;;; -213782;1;0;false;false;;;;;; -213783;8;0;false;false;63;95;191;;; -213791;5;0;false;false;127;127;159;;; -213796;3;0;false;false;;;;;; -213799;1;0;false;false;63;95;191;;; -213800;1;0;false;false;;;;;; -213801;5;0;false;false;127;127;159;;; -213806;3;0;false;false;;;;;; -213809;1;0;false;false;63;95;191;;; -213810;1;0;false;false;;;;;; -213811;11;1;false;false;127;159;191;;; -213822;24;0;false;false;63;95;191;;; -213846;1;0;false;false;;;;;; -213847;4;0;false;false;127;127;159;;; -213851;3;0;false;false;;;;;; -213854;1;0;false;false;63;95;191;;; -213855;4;0;false;false;;;;;; -213859;4;0;false;false;127;127;159;;; -213863;19;0;false;false;63;95;191;;; -213882;1;0;false;false;;;;;; -213883;4;0;false;false;63;95;191;;; -213887;1;0;false;false;;;;;; -213888;8;0;false;false;63;95;191;;; -213896;1;0;false;false;;;;;; -213897;2;0;false;false;63;95;191;;; -213899;1;0;false;false;;;;;; -213900;4;0;false;false;63;95;191;;; -213904;5;0;false;false;127;127;159;;; -213909;3;0;false;false;;;;;; -213912;1;0;false;false;63;95;191;;; -213913;1;0;false;false;;;;;; -213914;5;0;false;false;127;127;159;;; -213919;3;0;false;false;;;;;; -213922;2;0;false;false;63;95;191;;; -213924;2;0;false;false;;;;;; -213926;6;1;false;false;127;0;85;;; -213932;1;0;false;false;;;;;; -213933;4;1;false;false;127;0;85;;; -213937;1;0;false;false;;;;;; -213938;35;0;false;false;0;0;0;;; -213973;1;0;false;false;;;;;; -213974;15;0;false;false;0;0;0;;; -213989;1;0;false;false;;;;;; -213990;1;0;false;false;0;0;0;;; -213991;3;0;false;false;;;;;; -213994;14;0;false;false;0;0;0;;; -214008;3;0;false;false;;;;;; -214011;2;1;false;false;127;0;85;;; -214013;1;0;false;false;;;;;; -214014;15;0;false;false;0;0;0;;; -214029;1;0;false;false;;;;;; -214030;2;0;false;false;0;0;0;;; -214032;1;0;false;false;;;;;; -214033;4;1;false;false;127;0;85;;; -214037;1;0;false;false;0;0;0;;; -214038;1;0;false;false;;;;;; -214039;1;0;false;false;0;0;0;;; -214040;4;0;false;false;;;;;; -214044;35;0;false;false;0;0;0;;; -214079;3;0;false;false;;;;;; -214082;1;0;false;false;0;0;0;;; -214083;3;0;false;false;;;;;; -214086;26;0;false;false;0;0;0;;; -214112;1;0;false;false;;;;;; -214113;16;0;false;false;0;0;0;;; -214129;3;0;false;false;;;;;; -214132;1;0;false;false;0;0;0;;; -214133;2;0;false;false;;;;;; -214135;3;0;false;false;63;95;191;;; -214138;3;0;false;false;;;;;; -214141;1;0;false;false;63;95;191;;; -214142;1;0;false;false;;;;;; -214143;7;0;false;false;63;95;191;;; -214150;1;0;false;false;;;;;; -214151;3;0;false;false;63;95;191;;; -214154;1;0;false;false;;;;;; -214155;9;0;false;false;63;95;191;;; -214164;1;0;false;false;;;;;; -214165;3;0;false;false;63;95;191;;; -214168;1;0;false;false;;;;;; -214169;6;0;false;false;63;95;191;;; -214175;1;0;false;false;;;;;; -214176;9;0;false;false;63;95;191;;; -214185;3;0;false;false;;;;;; -214188;1;0;false;false;63;95;191;;; -214189;1;0;false;false;;;;;; -214190;3;0;false;false;127;127;159;;; -214193;3;0;false;false;;;;;; -214196;1;0;false;false;63;95;191;;; -214197;3;0;false;false;;;;;; -214200;1;0;false;false;63;95;191;;; -214201;1;0;false;false;;;;;; -214202;7;1;false;false;127;159;191;;; -214209;8;0;false;false;63;95;191;;; -214217;1;0;false;false;;;;;; -214218;3;0;false;false;63;95;191;;; -214221;1;0;false;false;;;;;; -214222;8;0;false;false;63;95;191;;; -214230;3;0;false;false;;;;;; -214233;1;0;false;false;63;95;191;;; -214234;1;0;false;false;;;;;; -214235;11;1;false;false;127;159;191;;; -214246;12;0;false;false;63;95;191;;; -214258;1;0;false;false;;;;;; -214259;4;0;false;false;127;127;159;;; -214263;3;0;false;false;;;;;; -214266;1;0;false;false;63;95;191;;; -214267;4;0;false;false;;;;;; -214271;4;0;false;false;127;127;159;;; -214275;21;0;false;false;63;95;191;;; -214296;1;0;false;false;;;;;; -214297;1;0;false;false;127;127;159;;; -214298;1;0;false;false;;;;;; -214299;2;0;false;false;63;95;191;;; -214301;1;0;false;false;;;;;; -214302;3;0;false;false;63;95;191;;; -214305;1;0;false;false;;;;;; -214306;8;0;false;false;63;95;191;;; -214314;1;0;false;false;;;;;; -214315;3;0;false;false;63;95;191;;; -214318;1;0;false;false;;;;;; -214319;4;0;false;false;63;95;191;;; -214323;1;0;false;false;;;;;; -214324;8;0;false;false;63;95;191;;; -214332;5;0;false;false;127;127;159;;; -214337;3;0;false;false;;;;;; -214340;1;0;false;false;63;95;191;;; -214341;4;0;false;false;;;;;; -214345;4;0;false;false;127;127;159;;; -214349;27;0;false;false;63;95;191;;; -214376;1;0;false;false;;;;;; -214377;1;0;false;false;127;127;159;;; -214378;1;0;false;false;;;;;; -214379;2;0;false;false;63;95;191;;; -214381;1;0;false;false;;;;;; -214382;3;0;false;false;63;95;191;;; -214385;1;0;false;false;;;;;; -214386;6;0;false;false;63;95;191;;; -214392;1;0;false;false;;;;;; -214393;4;0;false;false;63;95;191;;; -214397;1;0;false;false;;;;;; -214398;3;0;false;false;63;95;191;;; -214401;1;0;false;false;;;;;; -214402;6;0;false;false;63;95;191;;; -214408;1;0;false;false;;;;;; -214409;4;0;false;false;63;95;191;;; -214413;1;0;false;false;;;;;; -214414;7;0;false;false;63;95;191;;; -214421;1;0;false;false;;;;;; -214422;3;0;false;false;63;95;191;;; -214425;1;0;false;false;;;;;; -214426;8;0;false;false;63;95;191;;; -214434;5;0;false;false;127;127;159;;; -214439;3;0;false;false;;;;;; -214442;1;0;false;false;63;95;191;;; -214443;1;0;false;false;;;;;; -214444;5;0;false;false;127;127;159;;; -214449;3;0;false;false;;;;;; -214452;1;0;false;false;63;95;191;;; -214453;1;0;false;false;;;;;; -214454;11;1;false;false;127;159;191;;; -214465;24;0;false;false;63;95;191;;; -214489;1;0;false;false;;;;;; -214490;4;0;false;false;127;127;159;;; -214494;3;0;false;false;;;;;; -214497;1;0;false;false;63;95;191;;; -214498;4;0;false;false;;;;;; -214502;4;0;false;false;127;127;159;;; -214506;19;0;false;false;63;95;191;;; -214525;1;0;false;false;;;;;; -214526;4;0;false;false;63;95;191;;; -214530;1;0;false;false;;;;;; -214531;8;0;false;false;63;95;191;;; -214539;1;0;false;false;;;;;; -214540;2;0;false;false;63;95;191;;; -214542;1;0;false;false;;;;;; -214543;4;0;false;false;63;95;191;;; -214547;5;0;false;false;127;127;159;;; -214552;3;0;false;false;;;;;; -214555;1;0;false;false;63;95;191;;; -214556;1;0;false;false;;;;;; -214557;5;0;false;false;127;127;159;;; -214562;3;0;false;false;;;;;; -214565;2;0;false;false;63;95;191;;; -214567;2;0;false;false;;;;;; -214569;6;1;false;false;127;0;85;;; -214575;1;0;false;false;;;;;; -214576;4;1;false;false;127;0;85;;; -214580;1;0;false;false;;;;;; -214581;41;0;false;false;0;0;0;;; -214622;1;0;false;false;;;;;; -214623;9;0;false;false;0;0;0;;; -214632;1;0;false;false;;;;;; -214633;1;0;false;false;0;0;0;;; -214634;3;0;false;false;;;;;; -214637;2;1;false;false;127;0;85;;; -214639;1;0;false;false;;;;;; -214640;9;0;false;false;0;0;0;;; -214649;1;0;false;false;;;;;; -214650;2;0;false;false;0;0;0;;; -214652;1;0;false;false;;;;;; -214653;4;1;false;false;127;0;85;;; -214657;1;0;false;false;0;0;0;;; -214658;1;0;false;false;;;;;; -214659;35;0;false;false;0;0;0;;; -214694;3;0;false;false;;;;;; -214697;25;0;false;false;0;0;0;;; -214722;1;0;false;false;;;;;; -214723;10;0;false;false;0;0;0;;; -214733;3;0;false;false;;;;;; -214736;1;0;false;false;0;0;0;;; -214737;2;0;false;false;;;;;; -214739;3;0;false;false;63;95;191;;; -214742;4;0;false;false;;;;;; -214746;1;0;false;false;63;95;191;;; -214747;1;0;false;false;;;;;; -214748;8;0;false;false;63;95;191;;; -214756;1;0;false;false;;;;;; -214757;3;0;false;false;63;95;191;;; -214760;1;0;false;false;;;;;; -214761;6;0;false;false;63;95;191;;; -214767;1;0;false;false;;;;;; -214768;2;0;false;false;63;95;191;;; -214770;1;0;false;false;;;;;; -214771;3;0;false;false;63;95;191;;; -214774;1;0;false;false;;;;;; -214775;5;0;false;false;63;95;191;;; -214780;1;0;false;false;;;;;; -214781;5;0;false;false;63;95;191;;; -214786;1;0;false;false;;;;;; -214787;4;0;false;false;63;95;191;;; -214791;1;0;false;false;;;;;; -214792;3;0;false;false;63;95;191;;; -214795;1;0;false;false;;;;;; -214796;7;0;false;false;63;95;191;;; -214803;2;0;false;false;;;;;; -214805;4;0;false;false;63;95;191;;; -214809;1;0;false;false;;;;;; -214810;6;0;false;false;63;95;191;;; -214816;3;0;false;false;;;;;; -214819;1;0;false;false;63;95;191;;; -214820;1;0;false;false;;;;;; -214821;11;0;false;false;63;95;191;;; -214832;1;0;false;false;;;;;; -214833;7;0;false;false;63;95;191;;; -214840;1;0;false;false;;;;;; -214841;3;0;false;false;63;95;191;;; -214844;1;0;false;false;;;;;; -214845;6;0;false;false;63;95;191;;; -214851;1;0;false;false;;;;;; -214852;2;0;false;false;63;95;191;;; -214854;1;0;false;false;;;;;; -214855;3;0;false;false;63;95;191;;; -214858;1;0;false;false;;;;;; -214859;5;0;false;false;63;95;191;;; -214864;1;0;false;false;;;;;; -214865;5;0;false;false;63;95;191;;; -214870;1;0;false;false;;;;;; -214871;3;0;false;false;63;95;191;;; -214874;1;0;false;false;;;;;; -214875;4;0;false;false;63;95;191;;; -214879;1;0;false;false;;;;;; -214880;4;0;false;false;63;95;191;;; -214884;1;0;false;false;;;;;; -214885;3;0;false;false;63;95;191;;; -214888;3;0;false;false;;;;;; -214891;1;0;false;false;63;95;191;;; -214892;1;0;false;false;;;;;; -214893;3;0;false;false;63;95;191;;; -214896;1;0;false;false;;;;;; -214897;3;0;false;false;63;95;191;;; -214900;1;0;false;false;;;;;; -214901;7;0;false;false;63;95;191;;; -214908;4;0;false;false;;;;;; -214912;1;0;false;false;63;95;191;;; -214913;1;0;false;false;;;;;; -214914;3;0;false;false;127;127;159;;; -214917;3;0;false;false;;;;;; -214920;1;0;false;false;63;95;191;;; -214921;1;0;false;false;;;;;; -214922;6;0;false;false;63;95;191;;; -214928;1;0;false;false;;;;;; -214929;3;0;false;false;63;95;191;;; -214932;1;0;false;false;;;;;; -214933;2;0;false;false;63;95;191;;; -214935;1;0;false;false;;;;;; -214936;6;0;false;false;63;95;191;;; -214942;1;0;false;false;;;;;; -214943;2;0;false;false;63;95;191;;; -214945;1;0;false;false;;;;;; -214946;1;0;false;false;63;95;191;;; -214947;1;0;false;false;;;;;; -214948;17;0;false;false;63;95;191;;; -214965;1;0;false;false;;;;;; -214966;3;0;false;false;63;95;191;;; -214969;1;0;false;false;;;;;; -214970;4;0;false;false;63;95;191;;; -214974;1;0;false;false;;;;;; -214975;3;0;false;false;63;95;191;;; -214978;1;0;false;false;;;;;; -214979;5;0;false;false;63;95;191;;; -214984;1;0;false;false;;;;;; -214985;3;0;false;false;63;95;191;;; -214988;4;0;false;false;;;;;; -214992;1;0;false;false;63;95;191;;; -214993;1;0;false;false;;;;;; -214994;8;0;false;false;63;95;191;;; -215002;1;0;false;false;;;;;; -215003;9;0;false;false;63;95;191;;; -215012;1;0;false;false;;;;;; -215013;3;0;false;false;63;95;191;;; -215016;1;0;false;false;;;;;; -215017;7;0;false;false;63;95;191;;; -215024;3;0;false;false;;;;;; -215027;1;0;false;false;63;95;191;;; -215028;1;0;false;false;;;;;; -215029;4;0;false;false;127;127;159;;; -215033;3;0;false;false;;;;;; -215036;1;0;false;false;63;95;191;;; -215037;3;0;false;false;;;;;; -215040;1;0;false;false;63;95;191;;; -215041;1;0;false;false;;;;;; -215042;7;1;false;false;127;159;191;;; -215049;5;0;false;false;63;95;191;;; -215054;1;0;false;false;;;;;; -215055;6;0;false;false;63;95;191;;; -215061;1;0;false;false;;;;;; -215062;2;0;false;false;63;95;191;;; -215064;1;0;false;false;;;;;; -215065;5;0;false;false;63;95;191;;; -215070;1;0;false;false;;;;;; -215071;9;0;false;false;63;95;191;;; -215080;1;0;false;false;;;;;; -215081;5;0;false;false;63;95;191;;; -215086;1;0;false;false;;;;;; -215087;6;0;false;false;63;95;191;;; -215093;1;0;false;false;;;;;; -215094;4;0;false;false;63;95;191;;; -215098;1;0;false;false;;;;;; -215099;2;0;false;false;63;95;191;;; -215101;1;0;false;false;;;;;; -215102;7;0;false;false;63;95;191;;; -215109;3;0;false;false;;;;;; -215112;1;0;false;false;63;95;191;;; -215113;1;0;false;false;;;;;; -215114;7;1;false;false;127;159;191;;; -215121;6;0;false;false;63;95;191;;; -215127;1;0;false;false;;;;;; -215128;6;0;false;false;63;95;191;;; -215134;1;0;false;false;;;;;; -215135;2;0;false;false;63;95;191;;; -215137;1;0;false;false;;;;;; -215138;3;0;false;false;63;95;191;;; -215141;1;0;false;false;;;;;; -215142;5;0;false;false;63;95;191;;; -215147;1;0;false;false;;;;;; -215148;2;0;false;false;63;95;191;;; -215150;1;0;false;false;;;;;; -215151;6;0;false;false;63;95;191;;; -215157;1;0;false;false;;;;;; -215158;6;0;false;false;63;95;191;;; -215164;1;0;false;false;;;;;; -215165;2;0;false;false;63;95;191;;; -215167;3;0;false;false;;;;;; -215170;1;0;false;false;63;95;191;;; -215171;1;0;false;false;;;;;; -215172;7;1;false;false;127;159;191;;; -215179;6;0;false;false;63;95;191;;; -215185;1;0;false;false;;;;;; -215186;10;0;false;false;63;95;191;;; -215196;1;0;false;false;;;;;; -215197;7;0;false;false;63;95;191;;; -215204;1;0;false;false;;;;;; -215205;10;0;false;false;63;95;191;;; -215215;1;0;false;false;;;;;; -215216;3;0;false;false;63;95;191;;; -215219;1;0;false;false;;;;;; -215220;3;0;false;false;63;95;191;;; -215223;1;0;false;false;;;;;; -215224;5;0;false;false;63;95;191;;; -215229;1;0;false;false;;;;;; -215230;12;0;false;false;63;95;191;;; -215242;3;0;false;false;;;;;; -215245;1;0;false;false;63;95;191;;; -215246;1;0;false;false;;;;;; -215247;3;0;false;false;63;95;191;;; -215250;1;0;false;false;;;;;; -215251;6;0;false;false;63;95;191;;; -215257;1;0;false;false;;;;;; -215258;6;0;false;false;63;95;191;;; -215264;1;0;false;false;;;;;; -215265;3;0;false;false;63;95;191;;; -215268;1;0;false;false;;;;;; -215269;7;0;false;false;63;95;191;;; -215276;1;0;false;false;;;;;; -215277;3;0;false;false;63;95;191;;; -215280;1;0;false;false;;;;;; -215281;6;0;false;false;63;95;191;;; -215287;1;0;false;false;;;;;; -215288;2;0;false;false;63;95;191;;; -215290;1;0;false;false;;;;;; -215291;6;0;false;false;63;95;191;;; -215297;1;0;false;false;;;;;; -215298;3;0;false;false;63;95;191;;; -215301;1;0;false;false;;;;;; -215302;9;0;false;false;63;95;191;;; -215311;1;0;false;false;;;;;; -215312;5;0;false;false;63;95;191;;; -215317;4;0;false;false;;;;;; -215321;1;0;false;false;63;95;191;;; -215322;1;0;false;false;;;;;; -215323;3;0;false;false;63;95;191;;; -215326;1;0;false;false;;;;;; -215327;7;0;false;false;63;95;191;;; -215334;1;0;false;false;;;;;; -215335;3;0;false;false;63;95;191;;; -215338;1;0;false;false;;;;;; -215339;5;0;false;false;63;95;191;;; -215344;1;0;false;false;;;;;; -215345;9;0;false;false;63;95;191;;; -215354;1;0;false;false;;;;;; -215355;2;0;false;false;63;95;191;;; -215357;1;0;false;false;;;;;; -215358;9;0;false;false;63;95;191;;; -215367;1;0;false;false;;;;;; -215368;2;0;false;false;63;95;191;;; -215370;1;0;false;false;;;;;; -215371;3;0;false;false;63;95;191;;; -215374;1;0;false;false;;;;;; -215375;6;0;false;false;63;95;191;;; -215381;1;0;false;false;;;;;; -215382;2;0;false;false;63;95;191;;; -215384;1;0;false;false;;;;;; -215385;7;0;false;false;63;95;191;;; -215392;3;0;false;false;;;;;; -215395;1;0;false;false;63;95;191;;; -215396;1;0;false;false;;;;;; -215397;2;0;false;false;63;95;191;;; -215399;1;0;false;false;;;;;; -215400;3;0;false;false;63;95;191;;; -215403;1;0;false;false;;;;;; -215404;3;0;false;false;63;95;191;;; -215407;1;0;false;false;127;127;159;;; -215408;8;0;false;false;63;95;191;;; -215416;1;0;false;false;;;;;; -215417;4;0;false;false;63;95;191;;; -215421;1;0;false;false;;;;;; -215422;3;0;false;false;63;95;191;;; -215425;1;0;false;false;;;;;; -215426;2;0;false;false;63;95;191;;; -215428;1;0;false;false;;;;;; -215429;5;0;false;false;63;95;191;;; -215434;3;0;false;false;;;;;; -215437;1;0;false;false;63;95;191;;; -215438;1;0;false;false;;;;;; -215439;11;1;false;false;127;159;191;;; -215450;12;0;false;false;63;95;191;;; -215462;1;0;false;false;;;;;; -215463;4;0;false;false;127;127;159;;; -215467;3;0;false;false;;;;;; -215470;1;0;false;false;63;95;191;;; -215471;4;0;false;false;;;;;; -215475;4;0;false;false;127;127;159;;; -215479;21;0;false;false;63;95;191;;; -215500;1;0;false;false;;;;;; -215501;1;0;false;false;127;127;159;;; -215502;1;0;false;false;;;;;; -215503;2;0;false;false;63;95;191;;; -215505;1;0;false;false;;;;;; -215506;3;0;false;false;63;95;191;;; -215509;1;0;false;false;;;;;; -215510;8;0;false;false;63;95;191;;; -215518;1;0;false;false;;;;;; -215519;3;0;false;false;63;95;191;;; -215522;1;0;false;false;;;;;; -215523;4;0;false;false;63;95;191;;; -215527;1;0;false;false;;;;;; -215528;8;0;false;false;63;95;191;;; -215536;5;0;false;false;127;127;159;;; -215541;3;0;false;false;;;;;; -215544;1;0;false;false;63;95;191;;; -215545;4;0;false;false;;;;;; -215549;4;0;false;false;127;127;159;;; -215553;27;0;false;false;63;95;191;;; -215580;1;0;false;false;;;;;; -215581;1;0;false;false;127;127;159;;; -215582;1;0;false;false;;;;;; -215583;2;0;false;false;63;95;191;;; -215585;1;0;false;false;;;;;; -215586;3;0;false;false;63;95;191;;; -215589;1;0;false;false;;;;;; -215590;6;0;false;false;63;95;191;;; -215596;1;0;false;false;;;;;; -215597;4;0;false;false;63;95;191;;; -215601;1;0;false;false;;;;;; -215602;3;0;false;false;63;95;191;;; -215605;1;0;false;false;;;;;; -215606;6;0;false;false;63;95;191;;; -215612;1;0;false;false;;;;;; -215613;4;0;false;false;63;95;191;;; -215617;1;0;false;false;;;;;; -215618;7;0;false;false;63;95;191;;; -215625;1;0;false;false;;;;;; -215626;3;0;false;false;63;95;191;;; -215629;1;0;false;false;;;;;; -215630;8;0;false;false;63;95;191;;; -215638;5;0;false;false;127;127;159;;; -215643;3;0;false;false;;;;;; -215646;1;0;false;false;63;95;191;;; -215647;1;0;false;false;;;;;; -215648;5;0;false;false;127;127;159;;; -215653;3;0;false;false;;;;;; -215656;1;0;false;false;63;95;191;;; -215657;1;0;false;false;;;;;; -215658;11;1;false;false;127;159;191;;; -215669;24;0;false;false;63;95;191;;; -215693;1;0;false;false;;;;;; -215694;4;0;false;false;127;127;159;;; -215698;3;0;false;false;;;;;; -215701;1;0;false;false;63;95;191;;; -215702;3;0;false;false;;;;;; -215705;4;0;false;false;127;127;159;;; -215709;19;0;false;false;63;95;191;;; -215728;1;0;false;false;;;;;; -215729;4;0;false;false;63;95;191;;; -215733;1;0;false;false;;;;;; -215734;6;0;false;false;63;95;191;;; -215740;1;0;false;false;;;;;; -215741;5;0;false;false;63;95;191;;; -215746;1;0;false;false;;;;;; -215747;2;0;false;false;63;95;191;;; -215749;1;0;false;false;;;;;; -215750;3;0;false;false;63;95;191;;; -215753;1;0;false;false;;;;;; -215754;2;0;false;false;63;95;191;;; -215756;1;0;false;false;;;;;; -215757;7;0;false;false;63;95;191;;; -215764;1;0;false;false;;;;;; -215765;3;0;false;false;63;95;191;;; -215768;1;0;false;false;;;;;; -215769;5;0;false;false;63;95;191;;; -215774;1;0;false;false;;;;;; -215775;5;0;false;false;63;95;191;;; -215780;1;0;false;false;;;;;; -215781;2;0;false;false;63;95;191;;; -215783;1;0;false;false;;;;;; -215784;33;0;false;false;63;95;191;;; -215817;4;0;false;false;;;;;; -215821;1;0;false;false;63;95;191;;; -215822;3;0;false;false;;;;;; -215825;4;0;false;false;127;127;159;;; -215829;19;0;false;false;63;95;191;;; -215848;1;0;false;false;;;;;; -215849;4;0;false;false;63;95;191;;; -215853;1;0;false;false;;;;;; -215854;6;0;false;false;63;95;191;;; -215860;1;0;false;false;;;;;; -215861;2;0;false;false;63;95;191;;; -215863;1;0;false;false;;;;;; -215864;4;0;false;false;63;95;191;;; -215868;5;0;false;false;127;127;159;;; -215873;3;0;false;false;;;;;; -215876;1;0;false;false;63;95;191;;; -215877;1;0;false;false;;;;;; -215878;5;0;false;false;127;127;159;;; -215883;3;0;false;false;;;;;; -215886;1;0;false;false;63;95;191;;; -215887;1;0;false;false;;;;;; -215888;7;1;false;false;127;159;191;;; -215895;3;0;false;false;63;95;191;;; -215898;3;0;false;false;;;;;; -215901;2;0;false;false;63;95;191;;; -215903;2;0;false;false;;;;;; -215905;6;1;false;false;127;0;85;;; -215911;1;0;false;false;;;;;; -215912;4;1;false;false;127;0;85;;; -215916;1;0;false;false;;;;;; -215917;19;0;false;false;0;0;0;;; -215936;3;1;false;false;127;0;85;;; -215939;1;0;false;false;;;;;; -215940;6;0;false;false;0;0;0;;; -215946;1;0;false;false;;;;;; -215947;3;1;false;false;127;0;85;;; -215950;1;0;false;false;;;;;; -215951;7;0;false;false;0;0;0;;; -215958;1;0;false;false;;;;;; -215959;12;0;false;false;0;0;0;;; -215971;1;0;false;false;;;;;; -215972;7;0;false;false;0;0;0;;; -215979;1;0;false;false;;;;;; -215980;1;0;false;false;0;0;0;;; -215981;3;0;false;false;;;;;; -215984;14;0;false;false;0;0;0;;; -215998;3;0;false;false;;;;;; -216001;2;1;false;false;127;0;85;;; -216003;1;0;false;false;;;;;; -216004;15;0;false;false;0;0;0;;; -216019;1;0;false;false;;;;;; -216020;1;0;false;false;0;0;0;;; -216021;4;0;false;false;;;;;; -216025;6;1;false;false;127;0;85;;; -216031;1;0;false;false;0;0;0;;; -216032;3;0;false;false;;;;;; -216035;1;0;false;false;0;0;0;;; -216036;4;0;false;false;;;;;; -216040;2;1;false;false;127;0;85;;; -216042;1;0;false;false;;;;;; -216043;7;0;false;false;0;0;0;;; -216050;1;0;false;false;;;;;; -216051;2;0;false;false;0;0;0;;; -216053;1;0;false;false;;;;;; -216054;4;1;false;false;127;0;85;;; -216058;1;0;false;false;0;0;0;;; -216059;1;0;false;false;;;;;; -216060;1;0;false;false;0;0;0;;; -216061;5;0;false;false;;;;;; -216066;35;0;false;false;0;0;0;;; -216101;4;0;false;false;;;;;; -216105;1;0;false;false;0;0;0;;; -216106;4;0;false;false;;;;;; -216110;2;1;false;false;127;0;85;;; -216112;1;0;false;false;;;;;; -216113;14;0;false;false;0;0;0;;; -216127;1;0;false;false;;;;;; -216128;2;0;false;false;0;0;0;;; -216130;1;0;false;false;;;;;; -216131;2;0;false;false;0;0;0;;; -216133;1;0;false;false;;;;;; -216134;1;0;false;false;0;0;0;;; -216135;5;0;false;false;;;;;; -216140;14;0;false;false;0;0;0;;; -216154;3;1;false;false;127;0;85;;; -216157;1;0;false;false;;;;;; -216158;17;0;false;false;0;0;0;;; -216175;1;0;false;false;;;;;; -216176;7;0;false;false;0;0;0;;; -216183;1;0;false;false;;;;;; -216184;4;1;false;false;127;0;85;;; -216188;1;0;false;false;0;0;0;;; -216189;1;0;false;false;;;;;; -216190;4;1;false;false;127;0;85;;; -216194;3;0;false;false;0;0;0;;; -216197;5;0;false;false;;;;;; -216202;6;1;false;false;127;0;85;;; -216208;1;0;false;false;0;0;0;;; -216209;4;0;false;false;;;;;; -216213;1;0;false;false;0;0;0;;; -216214;3;0;false;false;;;;;; -216217;3;1;false;false;127;0;85;;; -216220;1;0;false;false;;;;;; -216221;3;0;false;false;0;0;0;;; -216224;1;0;false;false;;;;;; -216225;1;0;false;false;0;0;0;;; -216226;1;0;false;false;;;;;; -216227;5;0;false;false;0;0;0;;; -216232;1;0;false;false;;;;;; -216233;1;0;false;false;0;0;0;;; -216234;1;0;false;false;;;;;; -216235;7;0;false;false;0;0;0;;; -216242;3;0;false;false;;;;;; -216245;2;1;false;false;127;0;85;;; -216247;1;0;false;false;;;;;; -216248;6;0;false;false;0;0;0;;; -216254;1;0;false;false;;;;;; -216255;1;0;false;false;0;0;0;;; -216256;1;0;false;false;;;;;; -216257;3;0;false;false;0;0;0;;; -216260;1;0;false;false;;;;;; -216261;2;0;false;false;0;0;0;;; -216263;1;0;false;false;;;;;; -216264;5;0;false;false;0;0;0;;; -216269;1;0;false;false;;;;;; -216270;1;0;false;false;0;0;0;;; -216271;1;0;false;false;;;;;; -216272;1;0;false;false;0;0;0;;; -216273;1;0;false;false;;;;;; -216274;2;0;false;false;0;0;0;;; -216276;1;0;false;false;;;;;; -216277;3;0;false;false;0;0;0;;; -216280;1;0;false;false;;;;;; -216281;1;0;false;false;0;0;0;;; -216282;1;0;false;false;;;;;; -216283;15;0;false;false;0;0;0;;; -216298;1;0;false;false;;;;;; -216299;1;0;false;false;0;0;0;;; -216300;4;0;false;false;;;;;; -216304;35;0;false;false;0;0;0;;; -216339;3;0;false;false;;;;;; -216342;1;0;false;false;0;0;0;;; -216343;4;0;false;false;;;;;; -216347;3;1;false;false;127;0;85;;; -216350;1;0;false;false;;;;;; -216351;9;0;false;false;0;0;0;;; -216360;1;0;false;false;;;;;; -216361;1;0;false;false;0;0;0;;; -216362;1;0;false;false;;;;;; -216363;31;0;false;false;0;0;0;;; -216394;3;0;false;false;;;;;; -216397;3;1;false;false;127;0;85;;; -216400;1;0;false;false;;;;;; -216401;8;0;false;false;0;0;0;;; -216409;1;0;false;false;;;;;; -216410;1;0;false;false;0;0;0;;; -216411;1;0;false;false;;;;;; -216412;29;0;false;false;0;0;0;;; -216441;5;0;false;false;;;;;; -216446;43;0;false;false;0;0;0;;; -216489;1;0;false;false;;;;;; -216490;7;0;false;false;0;0;0;;; -216497;1;0;false;false;;;;;; -216498;8;0;false;false;0;0;0;;; -216506;3;0;false;false;;;;;; -216509;26;0;false;false;0;0;0;;; -216535;1;0;false;false;;;;;; -216536;8;0;false;false;0;0;0;;; -216544;1;0;false;false;;;;;; -216545;1;0;false;false;0;0;0;;; -216546;1;0;false;false;;;;;; -216547;9;0;false;false;0;0;0;;; -216556;1;0;false;false;;;;;; -216557;1;0;false;false;0;0;0;;; -216558;1;0;false;false;;;;;; -216559;2;0;false;false;0;0;0;;; -216561;1;0;false;false;;;;;; -216562;4;1;false;false;127;0;85;;; -216566;2;0;false;false;0;0;0;;; -216568;5;0;false;false;;;;;; -216573;59;0;false;false;63;127;95;;; -216632;1;0;false;false;;;;;; -216633;2;1;false;false;127;0;85;;; -216635;1;0;false;false;;;;;; -216636;25;0;false;false;0;0;0;;; -216661;1;0;false;false;;;;;; -216662;10;0;false;false;0;0;0;;; -216672;1;0;false;false;;;;;; -216673;1;0;false;false;0;0;0;;; -216674;4;0;false;false;;;;;; -216678;3;1;false;false;127;0;85;;; -216681;1;0;false;false;;;;;; -216682;7;0;false;false;0;0;0;;; -216689;1;0;false;false;;;;;; -216690;1;0;false;false;0;0;0;;; -216691;1;0;false;false;;;;;; -216692;9;0;false;false;0;0;0;;; -216701;1;0;false;false;;;;;; -216702;1;0;false;false;0;0;0;;; -216703;1;0;false;false;;;;;; -216704;10;0;false;false;0;0;0;;; -216714;1;0;false;false;;;;;; -216715;1;0;false;false;0;0;0;;; -216716;1;0;false;false;;;;;; -216717;21;0;false;false;0;0;0;;; -216738;4;0;false;false;;;;;; -216742;3;1;false;false;127;0;85;;; -216745;1;0;false;false;;;;;; -216746;11;0;false;false;0;0;0;;; -216757;1;0;false;false;;;;;; -216758;1;0;false;false;0;0;0;;; -216759;1;0;false;false;;;;;; -216760;9;0;false;false;0;0;0;;; -216769;1;0;false;false;;;;;; -216770;1;0;false;false;0;0;0;;; -216771;1;0;false;false;;;;;; -216772;2;0;false;false;0;0;0;;; -216774;1;0;false;false;;;;;; -216775;1;0;false;false;0;0;0;;; -216776;1;0;false;false;;;;;; -216777;10;0;false;false;0;0;0;;; -216787;1;0;false;false;;;;;; -216788;1;0;false;false;0;0;0;;; -216789;1;0;false;false;;;;;; -216790;21;0;false;false;0;0;0;;; -216811;6;0;false;false;;;;;; -216817;7;0;false;false;0;0;0;;; -216824;1;0;false;false;;;;;; -216825;8;0;false;false;0;0;0;;; -216833;1;0;false;false;;;;;; -216834;22;0;false;false;0;0;0;;; -216856;1;0;false;false;;;;;; -216857;11;0;false;false;0;0;0;;; -216868;1;0;false;false;;;;;; -216869;1;0;false;false;0;0;0;;; -216870;1;0;false;false;;;;;; -216871;8;0;false;false;0;0;0;;; -216879;1;0;false;false;;;;;; -216880;4;1;false;false;127;0;85;;; -216884;2;0;false;false;0;0;0;;; -216886;3;0;false;false;;;;;; -216889;1;0;false;false;0;0;0;;; -216890;5;0;false;false;;;;;; -216895;54;0;false;false;63;127;95;;; -216949;1;0;false;false;;;;;; -216950;53;0;false;false;63;127;95;;; -217003;1;0;false;false;;;;;; -217004;18;0;false;false;63;127;95;;; -217022;1;0;false;false;;;;;; -217023;19;0;false;false;0;0;0;;; -217042;2;0;false;false;;;;;; -217044;1;0;false;false;0;0;0;;; -217045;2;0;false;false;;;;;; -217047;3;0;false;false;63;95;191;;; -217050;3;0;false;false;;;;;; -217053;1;0;false;false;63;95;191;;; -217054;1;0;false;false;;;;;; -217055;8;0;false;false;63;95;191;;; -217063;1;0;false;false;;;;;; -217064;3;0;false;false;63;95;191;;; -217067;1;0;false;false;;;;;; -217068;5;0;false;false;63;95;191;;; -217073;1;0;false;false;;;;;; -217074;4;0;false;false;63;95;191;;; -217078;1;0;false;false;;;;;; -217079;5;0;false;false;63;95;191;;; -217084;1;0;false;false;;;;;; -217085;4;0;false;false;63;95;191;;; -217089;1;0;false;false;;;;;; -217090;3;0;false;false;63;95;191;;; -217093;1;0;false;false;;;;;; -217094;5;0;false;false;63;95;191;;; -217099;3;0;false;false;;;;;; -217102;1;0;false;false;63;95;191;;; -217103;1;0;false;false;;;;;; -217104;2;0;false;false;63;95;191;;; -217106;1;0;false;false;;;;;; -217107;3;0;false;false;63;95;191;;; -217110;1;0;false;false;;;;;; -217111;6;0;false;false;63;95;191;;; -217117;1;0;false;false;;;;;; -217118;3;0;false;false;63;95;191;;; -217121;1;0;false;false;;;;;; -217122;3;0;false;false;63;95;191;;; -217125;1;0;false;false;;;;;; -217126;10;0;false;false;63;95;191;;; -217136;1;0;false;false;;;;;; -217137;5;0;false;false;63;95;191;;; -217142;1;0;false;false;;;;;; -217143;3;0;false;false;63;95;191;;; -217146;1;0;false;false;;;;;; -217147;6;0;false;false;63;95;191;;; -217153;1;0;false;false;;;;;; -217154;8;0;false;false;63;95;191;;; -217162;1;0;false;false;;;;;; -217163;4;0;false;false;63;95;191;;; -217167;1;0;false;false;;;;;; -217168;4;0;false;false;63;95;191;;; -217172;4;0;false;false;;;;;; -217176;1;0;false;false;63;95;191;;; -217177;1;0;false;false;;;;;; -217178;3;0;false;false;63;95;191;;; -217181;1;0;false;false;;;;;; -217182;5;0;false;false;63;95;191;;; -217187;1;0;false;false;;;;;; -217188;4;0;false;false;63;95;191;;; -217192;1;0;false;false;;;;;; -217193;3;0;false;false;63;95;191;;; -217196;1;0;false;false;;;;;; -217197;5;0;false;false;63;95;191;;; -217202;1;0;false;false;;;;;; -217203;4;0;false;false;63;95;191;;; -217207;1;0;false;false;;;;;; -217208;2;0;false;false;63;95;191;;; -217210;1;0;false;false;;;;;; -217211;8;0;false;false;63;95;191;;; -217219;1;0;false;false;;;;;; -217220;3;0;false;false;63;95;191;;; -217223;1;0;false;false;;;;;; -217224;3;0;false;false;63;95;191;;; -217227;1;0;false;false;;;;;; -217228;4;0;false;false;63;95;191;;; -217232;1;0;false;false;;;;;; -217233;2;0;false;false;63;95;191;;; -217235;1;0;false;false;;;;;; -217236;6;0;false;false;63;95;191;;; -217242;4;0;false;false;;;;;; -217246;1;0;false;false;63;95;191;;; -217247;1;0;false;false;;;;;; -217248;10;0;false;false;63;95;191;;; -217258;1;0;false;false;;;;;; -217259;1;0;false;false;63;95;191;;; -217260;1;0;false;false;;;;;; -217261;10;0;false;false;63;95;191;;; -217271;1;0;false;false;;;;;; -217272;4;0;false;false;63;95;191;;; -217276;1;0;false;false;;;;;; -217277;2;0;false;false;63;95;191;;; -217279;1;0;false;false;;;;;; -217280;7;0;false;false;63;95;191;;; -217287;1;0;false;false;;;;;; -217288;4;0;false;false;63;95;191;;; -217292;1;0;false;false;;;;;; -217293;6;0;false;false;63;95;191;;; -217299;1;0;false;false;;;;;; -217300;3;0;false;false;63;95;191;;; -217303;1;0;false;false;;;;;; -217304;4;0;false;false;63;95;191;;; -217308;1;0;false;false;;;;;; -217309;4;0;false;false;63;95;191;;; -217313;4;0;false;false;;;;;; -217317;1;0;false;false;63;95;191;;; -217318;1;0;false;false;;;;;; -217319;4;0;false;false;63;95;191;;; -217323;1;0;false;false;;;;;; -217324;3;0;false;false;63;95;191;;; -217327;1;0;false;false;;;;;; -217328;4;0;false;false;63;95;191;;; -217332;1;0;false;false;;;;;; -217333;4;0;false;false;63;95;191;;; -217337;1;0;false;false;;;;;; -217338;4;0;false;false;63;95;191;;; -217342;1;0;false;false;;;;;; -217343;4;0;false;false;63;95;191;;; -217347;1;0;false;false;;;;;; -217348;1;0;false;false;63;95;191;;; -217349;1;0;false;false;;;;;; -217350;6;0;false;false;63;95;191;;; -217356;1;0;false;false;;;;;; -217357;4;0;false;false;63;95;191;;; -217361;1;0;false;false;;;;;; -217362;2;0;false;false;63;95;191;;; -217364;1;0;false;false;;;;;; -217365;4;0;false;false;63;95;191;;; -217369;1;0;false;false;;;;;; -217370;6;0;false;false;63;95;191;;; -217376;1;0;false;false;;;;;; -217377;2;0;false;false;63;95;191;;; -217379;1;0;false;false;;;;;; -217380;3;0;false;false;63;95;191;;; -217383;1;0;false;false;;;;;; -217384;4;0;false;false;63;95;191;;; -217388;4;0;false;false;;;;;; -217392;1;0;false;false;63;95;191;;; -217393;1;0;false;false;;;;;; -217394;3;0;false;false;63;95;191;;; -217397;1;0;false;false;;;;;; -217398;10;0;false;false;63;95;191;;; -217408;1;0;false;false;;;;;; -217409;5;0;false;false;63;95;191;;; -217414;1;0;false;false;;;;;; -217415;2;0;false;false;63;95;191;;; -217417;1;0;false;false;;;;;; -217418;5;0;false;false;63;95;191;;; -217423;3;0;false;false;;;;;; -217426;1;0;false;false;63;95;191;;; -217427;1;0;false;false;;;;;; -217428;3;0;false;false;127;127;159;;; -217431;3;0;false;false;;;;;; -217434;1;0;false;false;63;95;191;;; -217435;1;0;false;false;;;;;; -217436;3;0;false;false;127;127;159;;; -217439;5;0;false;false;63;95;191;;; -217444;4;0;false;false;127;127;159;;; -217448;1;0;false;false;;;;;; -217449;6;0;false;false;63;95;191;;; -217455;1;0;false;false;;;;;; -217456;3;0;false;false;63;95;191;;; -217459;1;0;false;false;;;;;; -217460;7;0;false;false;63;95;191;;; -217467;1;0;false;false;;;;;; -217468;9;0;false;false;63;95;191;;; -217477;1;0;false;false;;;;;; -217478;3;0;false;false;63;95;191;;; -217481;1;0;false;false;;;;;; -217482;7;0;false;false;63;95;191;;; -217489;1;0;false;false;;;;;; -217490;9;0;false;false;63;95;191;;; -217499;1;0;false;false;;;;;; -217500;2;0;false;false;63;95;191;;; -217502;3;0;false;false;;;;;; -217505;1;0;false;false;63;95;191;;; -217506;1;0;false;false;;;;;; -217507;7;0;false;false;63;95;191;;; -217514;1;0;false;false;;;;;; -217515;2;0;false;false;63;95;191;;; -217517;1;0;false;false;;;;;; -217518;8;0;false;false;63;95;191;;; -217526;3;0;false;false;;;;;; -217529;1;0;false;false;63;95;191;;; -217530;1;0;false;false;;;;;; -217531;4;0;false;false;127;127;159;;; -217535;4;0;false;false;;;;;; -217539;1;0;false;false;63;95;191;;; -217540;1;0;false;false;;;;;; -217541;4;0;false;false;127;127;159;;; -217545;9;0;false;false;63;95;191;;; -217554;1;0;false;false;;;;;; -217555;6;0;false;false;63;95;191;;; -217561;1;0;false;false;;;;;; -217562;8;0;false;false;63;95;191;;; -217570;1;0;false;false;;;;;; -217571;5;0;false;false;63;95;191;;; -217576;1;0;false;false;;;;;; -217577;9;0;false;false;63;95;191;;; -217586;1;0;false;false;;;;;; -217587;9;0;false;false;63;95;191;;; -217596;3;0;false;false;;;;;; -217599;1;0;false;false;63;95;191;;; -217600;1;0;false;false;;;;;; -217601;4;0;false;false;127;127;159;;; -217605;9;0;false;false;63;95;191;;; -217614;1;0;false;false;;;;;; -217615;5;0;false;false;63;95;191;;; -217620;1;0;false;false;;;;;; -217621;8;0;false;false;63;95;191;;; -217629;1;0;false;false;;;;;; -217630;5;0;false;false;63;95;191;;; -217635;1;0;false;false;;;;;; -217636;6;0;false;false;63;95;191;;; -217642;1;0;false;false;;;;;; -217643;3;0;false;false;63;95;191;;; -217646;1;0;false;false;;;;;; -217647;9;0;false;false;63;95;191;;; -217656;1;0;false;false;;;;;; -217657;2;0;false;false;63;95;191;;; -217659;1;0;false;false;;;;;; -217660;4;0;false;false;63;95;191;;; -217664;1;0;false;false;;;;;; -217665;4;0;false;false;63;95;191;;; -217669;1;0;false;false;;;;;; -217670;4;0;false;false;63;95;191;;; -217674;4;0;false;false;;;;;; -217678;1;0;false;false;63;95;191;;; -217679;1;0;false;false;;;;;; -217680;7;0;false;false;63;95;191;;; -217687;1;0;false;false;;;;;; -217688;8;0;false;false;63;95;191;;; -217696;3;0;false;false;;;;;; -217699;1;0;false;false;63;95;191;;; -217700;1;0;false;false;;;;;; -217701;4;0;false;false;127;127;159;;; -217705;9;0;false;false;63;95;191;;; -217714;1;0;false;false;;;;;; -217715;10;0;false;false;63;95;191;;; -217725;1;0;false;false;;;;;; -217726;8;0;false;false;63;95;191;;; -217734;1;0;false;false;;;;;; -217735;5;0;false;false;63;95;191;;; -217740;1;0;false;false;;;;;; -217741;9;0;false;false;63;95;191;;; -217750;1;0;false;false;;;;;; -217751;2;0;false;false;63;95;191;;; -217753;1;0;false;false;;;;;; -217754;7;0;false;false;63;95;191;;; -217761;1;0;false;false;;;;;; -217762;3;0;false;false;63;95;191;;; -217765;1;0;false;false;;;;;; -217766;5;0;false;false;63;95;191;;; -217771;3;0;false;false;;;;;; -217774;1;0;false;false;63;95;191;;; -217775;1;0;false;false;;;;;; -217776;2;0;false;false;63;95;191;;; -217778;1;0;false;false;;;;;; -217779;6;0;false;false;63;95;191;;; -217785;1;0;false;false;;;;;; -217786;5;0;false;false;63;95;191;;; -217791;1;0;false;false;;;;;; -217792;8;0;false;false;63;95;191;;; -217800;1;0;false;false;;;;;; -217801;4;0;false;false;63;95;191;;; -217805;3;0;false;false;;;;;; -217808;1;0;false;false;63;95;191;;; -217809;1;0;false;false;;;;;; -217810;5;0;false;false;127;127;159;;; -217815;3;0;false;false;;;;;; -217818;1;0;false;false;63;95;191;;; -217819;1;0;false;false;;;;;; -217820;4;0;false;false;127;127;159;;; -217824;3;0;false;false;;;;;; -217827;1;0;false;false;63;95;191;;; -217828;3;0;false;false;;;;;; -217831;1;0;false;false;63;95;191;;; -217832;1;0;false;false;;;;;; -217833;7;1;false;false;127;159;191;;; -217840;5;0;false;false;63;95;191;;; -217845;1;0;false;false;;;;;; -217846;6;0;false;false;63;95;191;;; -217852;1;0;false;false;;;;;; -217853;2;0;false;false;63;95;191;;; -217855;1;0;false;false;;;;;; -217856;5;0;false;false;63;95;191;;; -217861;1;0;false;false;;;;;; -217862;9;0;false;false;63;95;191;;; -217871;1;0;false;false;;;;;; -217872;2;0;false;false;63;95;191;;; -217874;1;0;false;false;;;;;; -217875;7;0;false;false;63;95;191;;; -217882;3;0;false;false;;;;;; -217885;1;0;false;false;63;95;191;;; -217886;1;0;false;false;;;;;; -217887;7;1;false;false;127;159;191;;; -217894;6;0;false;false;63;95;191;;; -217900;1;0;false;false;;;;;; -217901;6;0;false;false;63;95;191;;; -217907;1;0;false;false;;;;;; -217908;2;0;false;false;63;95;191;;; -217910;1;0;false;false;;;;;; -217911;10;0;false;false;63;95;191;;; -217921;1;0;false;false;;;;;; -217922;2;0;false;false;63;95;191;;; -217924;1;0;false;false;;;;;; -217925;8;0;false;false;63;95;191;;; -217933;1;0;false;false;;;;;; -217934;3;0;false;false;63;95;191;;; -217937;1;0;false;false;;;;;; -217938;1;0;false;false;63;95;191;;; -217939;1;0;false;false;;;;;; -217940;2;0;false;false;63;95;191;;; -217942;1;0;false;false;;;;;; -217943;6;0;false;false;63;95;191;;; -217949;1;0;false;false;;;;;; -217950;4;0;false;false;63;95;191;;; -217954;3;0;false;false;;;;;; -217957;1;0;false;false;63;95;191;;; -217958;1;0;false;false;;;;;; -217959;7;1;false;false;127;159;191;;; -217966;4;0;false;false;63;95;191;;; -217970;1;0;false;false;;;;;; -217971;3;0;false;false;63;95;191;;; -217974;1;0;false;false;;;;;; -217975;5;0;false;false;63;95;191;;; -217980;1;0;false;false;;;;;; -217981;3;0;false;false;63;95;191;;; -217984;1;0;false;false;;;;;; -217985;2;0;false;false;63;95;191;;; -217987;1;0;false;false;;;;;; -217988;5;0;false;false;63;95;191;;; -217993;1;0;false;false;;;;;; -217994;2;0;false;false;63;95;191;;; -217996;1;0;false;false;;;;;; -217997;6;0;false;false;63;95;191;;; -218003;1;0;false;false;;;;;; -218004;5;0;false;false;63;95;191;;; -218009;3;0;false;false;;;;;; -218012;1;0;false;false;63;95;191;;; -218013;1;0;false;false;;;;;; -218014;11;1;false;false;127;159;191;;; -218025;12;0;false;false;63;95;191;;; -218037;1;0;false;false;;;;;; -218038;4;0;false;false;127;127;159;;; -218042;3;0;false;false;;;;;; -218045;1;0;false;false;63;95;191;;; -218046;4;0;false;false;;;;;; -218050;4;0;false;false;127;127;159;;; -218054;21;0;false;false;63;95;191;;; -218075;1;0;false;false;;;;;; -218076;1;0;false;false;127;127;159;;; -218077;1;0;false;false;;;;;; -218078;2;0;false;false;63;95;191;;; -218080;1;0;false;false;;;;;; -218081;3;0;false;false;63;95;191;;; -218084;1;0;false;false;;;;;; -218085;8;0;false;false;63;95;191;;; -218093;1;0;false;false;;;;;; -218094;3;0;false;false;63;95;191;;; -218097;1;0;false;false;;;;;; -218098;4;0;false;false;63;95;191;;; -218102;1;0;false;false;;;;;; -218103;8;0;false;false;63;95;191;;; -218111;5;0;false;false;127;127;159;;; -218116;3;0;false;false;;;;;; -218119;1;0;false;false;63;95;191;;; -218120;4;0;false;false;;;;;; -218124;4;0;false;false;127;127;159;;; -218128;27;0;false;false;63;95;191;;; -218155;1;0;false;false;;;;;; -218156;1;0;false;false;127;127;159;;; -218157;1;0;false;false;;;;;; -218158;2;0;false;false;63;95;191;;; -218160;1;0;false;false;;;;;; -218161;3;0;false;false;63;95;191;;; -218164;1;0;false;false;;;;;; -218165;6;0;false;false;63;95;191;;; -218171;1;0;false;false;;;;;; -218172;4;0;false;false;63;95;191;;; -218176;1;0;false;false;;;;;; -218177;3;0;false;false;63;95;191;;; -218180;1;0;false;false;;;;;; -218181;6;0;false;false;63;95;191;;; -218187;1;0;false;false;;;;;; -218188;4;0;false;false;63;95;191;;; -218192;1;0;false;false;;;;;; -218193;7;0;false;false;63;95;191;;; -218200;1;0;false;false;;;;;; -218201;3;0;false;false;63;95;191;;; -218204;1;0;false;false;;;;;; -218205;8;0;false;false;63;95;191;;; -218213;5;0;false;false;127;127;159;;; -218218;3;0;false;false;;;;;; -218221;1;0;false;false;63;95;191;;; -218222;1;0;false;false;;;;;; -218223;5;0;false;false;127;127;159;;; -218228;3;0;false;false;;;;;; -218231;1;0;false;false;63;95;191;;; -218232;1;0;false;false;;;;;; -218233;11;1;false;false;127;159;191;;; -218244;24;0;false;false;63;95;191;;; -218268;1;0;false;false;;;;;; -218269;4;0;false;false;127;127;159;;; -218273;3;0;false;false;;;;;; -218276;1;0;false;false;63;95;191;;; -218277;3;0;false;false;;;;;; -218280;4;0;false;false;127;127;159;;; -218284;19;0;false;false;63;95;191;;; -218303;1;0;false;false;;;;;; -218304;4;0;false;false;63;95;191;;; -218308;1;0;false;false;;;;;; -218309;6;0;false;false;63;95;191;;; -218315;1;0;false;false;;;;;; -218316;5;0;false;false;63;95;191;;; -218321;1;0;false;false;;;;;; -218322;2;0;false;false;63;95;191;;; -218324;1;0;false;false;;;;;; -218325;3;0;false;false;63;95;191;;; -218328;1;0;false;false;;;;;; -218329;2;0;false;false;63;95;191;;; -218331;1;0;false;false;;;;;; -218332;7;0;false;false;63;95;191;;; -218339;1;0;false;false;;;;;; -218340;3;0;false;false;63;95;191;;; -218343;1;0;false;false;;;;;; -218344;5;0;false;false;63;95;191;;; -218349;1;0;false;false;;;;;; -218350;5;0;false;false;63;95;191;;; -218355;1;0;false;false;;;;;; -218356;2;0;false;false;63;95;191;;; -218358;1;0;false;false;;;;;; -218359;33;0;false;false;63;95;191;;; -218392;4;0;false;false;;;;;; -218396;1;0;false;false;63;95;191;;; -218397;3;0;false;false;;;;;; -218400;4;0;false;false;127;127;159;;; -218404;22;0;false;false;63;95;191;;; -218426;1;0;false;false;;;;;; -218427;4;0;false;false;63;95;191;;; -218431;1;0;false;false;;;;;; -218432;6;0;false;false;63;95;191;;; -218438;1;0;false;false;;;;;; -218439;5;0;false;false;63;95;191;;; -218444;1;0;false;false;;;;;; -218445;2;0;false;false;63;95;191;;; -218447;1;0;false;false;;;;;; -218448;3;0;false;false;63;95;191;;; -218451;1;0;false;false;;;;;; -218452;2;0;false;false;63;95;191;;; -218454;1;0;false;false;;;;;; -218455;6;0;false;false;63;95;191;;; -218461;1;0;false;false;;;;;; -218462;1;0;false;false;63;95;191;;; -218463;1;0;false;false;;;;;; -218464;5;0;false;false;63;95;191;;; -218469;1;0;false;false;;;;;; -218470;4;0;false;false;63;95;191;;; -218474;1;0;false;false;;;;;; -218475;4;0;false;false;63;95;191;;; -218479;1;0;false;false;;;;;; -218480;10;0;false;false;63;95;191;;; -218490;4;0;false;false;;;;;; -218494;1;0;false;false;63;95;191;;; -218495;3;0;false;false;;;;;; -218498;9;0;false;false;63;95;191;;; -218507;1;0;false;false;;;;;; -218508;1;0;false;false;63;95;191;;; -218509;1;0;false;false;;;;;; -218510;4;0;false;false;63;95;191;;; -218514;1;0;false;false;;;;;; -218515;9;0;false;false;63;95;191;;; -218524;1;0;false;false;;;;;; -218525;3;0;false;false;63;95;191;;; -218528;1;0;false;false;;;;;; -218529;7;0;false;false;63;95;191;;; -218536;1;0;false;false;;;;;; -218537;2;0;false;false;63;95;191;;; -218539;1;0;false;false;;;;;; -218540;9;0;false;false;63;95;191;;; -218549;1;0;false;false;;;;;; -218550;4;0;false;false;63;95;191;;; -218554;1;0;false;false;;;;;; -218555;2;0;false;false;63;95;191;;; -218557;1;0;false;false;;;;;; -218558;7;0;false;false;63;95;191;;; -218565;1;0;false;false;;;;;; -218566;3;0;false;false;63;95;191;;; -218569;1;0;false;false;;;;;; -218570;2;0;false;false;63;95;191;;; -218572;1;0;false;false;;;;;; -218573;3;0;false;false;63;95;191;;; -218576;1;0;false;false;;;;;; -218577;2;0;false;false;63;95;191;;; -218579;1;0;false;false;;;;;; -218580;3;0;false;false;63;95;191;;; -218583;1;0;false;false;;;;;; -218584;8;0;false;false;63;95;191;;; -218592;1;0;false;false;;;;;; -218593;4;0;false;false;63;95;191;;; -218597;1;0;false;false;;;;;; -218598;2;0;false;false;63;95;191;;; -218600;1;0;false;false;;;;;; -218601;1;0;false;false;63;95;191;;; -218602;1;0;false;false;;;;;; -218603;4;0;false;false;63;95;191;;; -218607;1;0;false;false;;;;;; -218608;9;0;false;false;63;95;191;;; -218617;1;0;false;false;;;;;; -218618;2;0;false;false;63;95;191;;; -218620;1;0;false;false;;;;;; -218621;3;0;false;false;63;95;191;;; -218624;1;0;false;false;;;;;; -218625;9;0;false;false;63;95;191;;; -218634;5;0;false;false;127;127;159;;; -218639;5;0;false;false;;;;;; -218644;1;0;false;false;63;95;191;;; -218645;3;0;false;false;;;;;; -218648;4;0;false;false;127;127;159;;; -218652;19;0;false;false;63;95;191;;; -218671;1;0;false;false;;;;;; -218672;4;0;false;false;63;95;191;;; -218676;1;0;false;false;;;;;; -218677;6;0;false;false;63;95;191;;; -218683;1;0;false;false;;;;;; -218684;2;0;false;false;63;95;191;;; -218686;1;0;false;false;;;;;; -218687;4;0;false;false;63;95;191;;; -218691;5;0;false;false;127;127;159;;; -218696;3;0;false;false;;;;;; -218699;1;0;false;false;63;95;191;;; -218700;1;0;false;false;;;;;; -218701;5;0;false;false;127;127;159;;; -218706;3;0;false;false;;;;;; -218709;2;0;false;false;63;95;191;;; -218711;2;0;false;false;;;;;; -218713;6;1;false;false;127;0;85;;; -218719;1;0;false;false;;;;;; -218720;4;1;false;false;127;0;85;;; -218724;1;0;false;false;;;;;; -218725;17;0;false;false;0;0;0;;; -218742;3;1;false;false;127;0;85;;; -218745;1;0;false;false;;;;;; -218746;6;0;false;false;0;0;0;;; -218752;1;0;false;false;;;;;; -218753;3;1;false;false;127;0;85;;; -218756;1;0;false;false;;;;;; -218757;7;0;false;false;0;0;0;;; -218764;1;0;false;false;;;;;; -218765;6;0;false;false;0;0;0;;; -218771;1;0;false;false;;;;;; -218772;5;0;false;false;0;0;0;;; -218777;1;0;false;false;;;;;; -218778;1;0;false;false;0;0;0;;; -218779;3;0;false;false;;;;;; -218782;14;0;false;false;0;0;0;;; -218796;3;0;false;false;;;;;; -218799;3;1;false;false;127;0;85;;; -218802;1;0;false;false;;;;;; -218803;13;0;false;false;0;0;0;;; -218816;1;0;false;false;;;;;; -218817;1;0;false;false;0;0;0;;; -218818;1;0;false;false;;;;;; -218819;15;0;false;false;0;0;0;;; -218834;3;0;false;false;;;;;; -218837;3;1;false;false;127;0;85;;; -218840;1;0;false;false;;;;;; -218841;3;0;false;false;0;0;0;;; -218844;1;0;false;false;;;;;; -218845;1;0;false;false;0;0;0;;; -218846;1;0;false;false;;;;;; -218847;5;0;false;false;0;0;0;;; -218852;1;0;false;false;;;;;; -218853;1;0;false;false;0;0;0;;; -218854;1;0;false;false;;;;;; -218855;7;0;false;false;0;0;0;;; -218862;3;0;false;false;;;;;; -218865;5;0;false;false;0;0;0;;; -218870;1;0;false;false;;;;;; -218871;5;0;false;false;0;0;0;;; -218876;1;0;false;false;;;;;; -218877;1;0;false;false;0;0;0;;; -218878;1;0;false;false;;;;;; -218879;3;1;false;false;127;0;85;;; -218882;1;0;false;false;;;;;; -218883;8;0;false;false;0;0;0;;; -218891;6;0;false;false;;;;;; -218897;2;1;false;false;127;0;85;;; -218899;1;0;false;false;;;;;; -218900;6;0;false;false;0;0;0;;; -218906;1;0;false;false;;;;;; -218907;1;0;false;false;0;0;0;;; -218908;1;0;false;false;;;;;; -218909;3;0;false;false;0;0;0;;; -218912;1;0;false;false;;;;;; -218913;2;0;false;false;0;0;0;;; -218915;1;0;false;false;;;;;; -218916;5;0;false;false;0;0;0;;; -218921;1;0;false;false;;;;;; -218922;1;0;false;false;0;0;0;;; -218923;1;0;false;false;;;;;; -218924;1;0;false;false;0;0;0;;; -218925;1;0;false;false;;;;;; -218926;2;0;false;false;0;0;0;;; -218928;1;0;false;false;;;;;; -218929;3;0;false;false;0;0;0;;; -218932;1;0;false;false;;;;;; -218933;1;0;false;false;0;0;0;;; -218934;1;0;false;false;;;;;; -218935;14;0;false;false;0;0;0;;; -218949;1;0;false;false;;;;;; -218950;1;0;false;false;0;0;0;;; -218951;4;0;false;false;;;;;; -218955;35;0;false;false;0;0;0;;; -218990;3;0;false;false;;;;;; -218993;1;0;false;false;0;0;0;;; -218994;4;0;false;false;;;;;; -218998;2;1;false;false;127;0;85;;; -219000;1;0;false;false;;;;;; -219001;5;0;false;false;0;0;0;;; -219006;1;0;false;false;;;;;; -219007;2;0;false;false;0;0;0;;; -219009;1;0;false;false;;;;;; -219010;4;1;false;false;127;0;85;;; -219014;1;0;false;false;0;0;0;;; -219015;1;0;false;false;;;;;; -219016;1;0;false;false;0;0;0;;; -219017;4;0;false;false;;;;;; -219021;35;0;false;false;0;0;0;;; -219056;3;0;false;false;;;;;; -219059;1;0;false;false;0;0;0;;; -219060;3;0;false;false;;;;;; -219063;11;0;false;false;0;0;0;;; -219074;1;0;false;false;;;;;; -219075;1;0;false;false;0;0;0;;; -219076;1;0;false;false;;;;;; -219077;6;0;false;false;0;0;0;;; -219083;3;0;false;false;;;;;; -219086;9;0;false;false;0;0;0;;; -219095;1;0;false;false;;;;;; -219096;1;0;false;false;0;0;0;;; -219097;1;0;false;false;;;;;; -219098;4;0;false;false;0;0;0;;; -219102;3;0;false;false;;;;;; -219105;10;0;false;false;0;0;0;;; -219115;1;0;false;false;;;;;; -219116;1;0;false;false;0;0;0;;; -219117;1;0;false;false;;;;;; -219118;5;0;false;false;0;0;0;;; -219123;3;0;false;false;;;;;; -219126;20;0;false;false;0;0;0;;; -219146;1;0;false;false;;;;;; -219147;5;1;false;false;127;0;85;;; -219152;2;0;false;false;0;0;0;;; -219154;2;0;false;false;;;;;; -219156;1;0;false;false;0;0;0;;; -219157;2;0;false;false;;;;;; -219159;3;0;false;false;63;95;191;;; -219162;3;0;false;false;;;;;; -219165;1;0;false;false;63;95;191;;; -219166;1;0;false;false;;;;;; -219167;6;0;false;false;63;95;191;;; -219173;1;0;false;false;;;;;; -219174;3;0;false;false;63;95;191;;; -219177;1;0;false;false;;;;;; -219178;5;0;false;false;63;95;191;;; -219183;1;0;false;false;;;;;; -219184;9;0;false;false;63;95;191;;; -219193;1;0;false;false;;;;;; -219194;9;0;false;false;63;95;191;;; -219203;1;0;false;false;;;;;; -219204;3;0;false;false;63;95;191;;; -219207;1;0;false;false;;;;;; -219208;6;0;false;false;63;95;191;;; -219214;1;0;false;false;;;;;; -219215;8;0;false;false;63;95;191;;; -219223;1;0;false;false;;;;;; -219224;11;0;false;false;63;95;191;;; -219235;3;0;false;false;;;;;; -219238;1;0;false;false;63;95;191;;; -219239;1;0;false;false;;;;;; -219240;3;0;false;false;63;95;191;;; -219243;1;0;false;false;;;;;; -219244;7;0;false;false;63;95;191;;; -219251;1;0;false;false;;;;;; -219252;5;0;false;false;63;95;191;;; -219257;1;0;false;false;;;;;; -219258;3;0;false;false;63;95;191;;; -219261;1;0;false;false;;;;;; -219262;6;0;false;false;63;95;191;;; -219268;1;0;false;false;;;;;; -219269;5;0;false;false;63;95;191;;; -219274;1;0;false;false;;;;;; -219275;6;0;false;false;63;95;191;;; -219281;1;0;false;false;;;;;; -219282;3;0;false;false;63;95;191;;; -219285;1;0;false;false;;;;;; -219286;7;0;false;false;63;95;191;;; -219293;3;0;false;false;;;;;; -219296;2;0;false;false;63;95;191;;; -219298;2;0;false;false;;;;;; -219300;4;1;false;false;127;0;85;;; -219304;1;0;false;false;;;;;; -219305;7;0;false;false;0;0;0;;; -219312;1;0;false;false;;;;;; -219313;1;0;false;false;0;0;0;;; -219314;3;0;false;false;;;;;; -219317;9;0;false;false;0;0;0;;; -219326;1;0;false;false;;;;;; -219327;11;0;false;false;0;0;0;;; -219338;1;0;false;false;;;;;; -219339;1;0;false;false;0;0;0;;; -219340;1;0;false;false;;;;;; -219341;17;0;false;false;0;0;0;;; -219358;3;0;false;false;;;;;; -219361;9;0;false;false;0;0;0;;; -219370;1;0;false;false;;;;;; -219371;13;0;false;false;0;0;0;;; -219384;1;0;false;false;;;;;; -219385;1;0;false;false;0;0;0;;; -219386;1;0;false;false;;;;;; -219387;19;0;false;false;0;0;0;;; -219406;3;0;false;false;;;;;; -219409;11;0;false;false;0;0;0;;; -219420;1;0;false;false;;;;;; -219421;1;0;false;false;0;0;0;;; -219422;1;0;false;false;;;;;; -219423;2;0;false;false;0;0;0;;; -219425;3;0;false;false;;;;;; -219428;8;0;false;false;0;0;0;;; -219436;1;0;false;false;;;;;; -219437;1;0;false;false;0;0;0;;; -219438;1;0;false;false;;;;;; -219439;2;0;false;false;0;0;0;;; -219441;3;0;false;false;;;;;; -219444;9;0;false;false;0;0;0;;; -219453;1;0;false;false;;;;;; -219454;1;0;false;false;0;0;0;;; -219455;1;0;false;false;;;;;; -219456;2;0;false;false;0;0;0;;; -219458;3;0;false;false;;;;;; -219461;20;0;false;false;0;0;0;;; -219481;1;0;false;false;;;;;; -219482;1;0;false;false;0;0;0;;; -219483;1;0;false;false;;;;;; -219484;2;0;false;false;0;0;0;;; -219486;3;0;false;false;;;;;; -219489;22;0;false;false;0;0;0;;; -219511;1;0;false;false;;;;;; -219512;1;0;false;false;0;0;0;;; -219513;1;0;false;false;;;;;; -219514;2;0;false;false;0;0;0;;; -219516;4;0;false;false;;;;;; -219520;17;0;false;false;0;0;0;;; -219537;3;0;false;false;;;;;; -219540;61;0;false;false;63;127;95;;; -219601;1;0;false;false;;;;;; -219602;28;0;false;false;63;127;95;;; -219630;1;0;false;false;;;;;; -219631;2;1;false;false;127;0;85;;; -219633;1;0;false;false;;;;;; -219634;18;0;false;false;0;0;0;;; -219652;1;0;false;false;;;;;; -219653;2;0;false;false;0;0;0;;; -219655;1;0;false;false;;;;;; -219656;4;1;false;false;127;0;85;;; -219660;1;0;false;false;0;0;0;;; -219661;1;0;false;false;;;;;; -219662;1;0;false;false;0;0;0;;; -219663;4;0;false;false;;;;;; -219667;48;0;false;false;0;0;0;;; -219715;4;0;false;false;;;;;; -219719;43;0;false;false;0;0;0;;; -219762;4;0;false;false;;;;;; -219766;27;0;false;false;0;0;0;;; -219793;3;0;false;false;;;;;; -219796;1;0;false;false;0;0;0;;; -219797;4;0;false;false;;;;;; -219801;24;0;false;false;0;0;0;;; -219825;3;0;false;false;;;;;; -219828;2;1;false;false;127;0;85;;; -219830;1;0;false;false;;;;;; -219831;12;0;false;false;0;0;0;;; -219843;1;0;false;false;;;;;; -219844;2;0;false;false;0;0;0;;; -219846;1;0;false;false;;;;;; -219847;4;1;false;false;127;0;85;;; -219851;1;0;false;false;0;0;0;;; -219852;1;0;false;false;;;;;; -219853;1;0;false;false;0;0;0;;; -219854;4;0;false;false;;;;;; -219858;28;0;false;false;0;0;0;;; -219886;3;0;false;false;;;;;; -219889;1;0;false;false;0;0;0;;; -219890;3;0;false;false;;;;;; -219893;2;1;false;false;127;0;85;;; -219895;1;0;false;false;;;;;; -219896;14;0;false;false;0;0;0;;; -219910;1;0;false;false;;;;;; -219911;2;0;false;false;0;0;0;;; -219913;1;0;false;false;;;;;; -219914;4;1;false;false;127;0;85;;; -219918;1;0;false;false;0;0;0;;; -219919;1;0;false;false;;;;;; -219920;1;0;false;false;0;0;0;;; -219921;4;0;false;false;;;;;; -219925;30;0;false;false;0;0;0;;; -219955;4;0;false;false;;;;;; -219959;1;0;false;false;0;0;0;;; -219960;3;0;false;false;;;;;; -219963;16;0;false;false;0;0;0;;; -219979;3;0;false;false;;;;;; -219982;19;0;false;false;0;0;0;;; -220001;3;0;false;false;;;;;; -220004;5;1;false;false;127;0;85;;; -220009;10;0;false;false;0;0;0;;; -220019;2;0;false;false;;;;;; -220021;1;0;false;false;0;0;0;;; -220022;2;0;false;false;;;;;; -220024;3;0;false;false;63;95;191;;; -220027;3;0;false;false;;;;;; -220030;1;0;false;false;63;95;191;;; -220031;1;0;false;false;;;;;; -220032;6;0;false;false;63;95;191;;; -220038;1;0;false;false;;;;;; -220039;3;0;false;false;63;95;191;;; -220042;1;0;false;false;;;;;; -220043;10;0;false;false;63;95;191;;; -220053;3;0;false;false;;;;;; -220056;2;0;false;false;63;95;191;;; -220058;2;0;false;false;;;;;; -220060;4;1;false;false;127;0;85;;; -220064;1;0;false;false;;;;;; -220065;16;0;false;false;0;0;0;;; -220081;1;0;false;false;;;;;; -220082;1;0;false;false;0;0;0;;; -220083;3;0;false;false;;;;;; -220086;11;0;false;false;0;0;0;;; -220097;1;0;false;false;;;;;; -220098;1;0;false;false;0;0;0;;; -220099;1;0;false;false;;;;;; -220100;11;0;false;false;0;0;0;;; -220111;1;0;false;false;;;;;; -220112;1;0;false;false;0;0;0;;; -220113;1;0;false;false;;;;;; -220114;12;0;false;false;0;0;0;;; -220126;3;0;false;false;;;;;; -220129;15;0;false;false;0;0;0;;; -220144;1;0;false;false;;;;;; -220145;1;0;false;false;0;0;0;;; -220146;1;0;false;false;;;;;; -220147;3;0;false;false;0;0;0;;; -220150;2;0;false;false;;;;;; -220152;1;0;false;false;0;0;0;;; -220153;2;0;false;false;;;;;; -220155;3;0;false;false;63;95;191;;; -220158;3;0;false;false;;;;;; -220161;1;0;false;false;63;95;191;;; -220162;1;0;false;false;;;;;; -220163;7;0;false;false;63;95;191;;; -220170;1;0;false;false;;;;;; -220171;3;0;false;false;63;95;191;;; -220174;1;0;false;false;;;;;; -220175;6;0;false;false;63;95;191;;; -220181;1;0;false;false;;;;;; -220182;13;0;false;false;63;95;191;;; -220195;3;0;false;false;;;;;; -220198;1;0;false;false;63;95;191;;; -220199;1;0;false;false;;;;;; -220200;3;0;false;false;127;127;159;;; -220203;3;0;false;false;;;;;; -220206;1;0;false;false;63;95;191;;; -220207;3;0;false;false;;;;;; -220210;1;0;false;false;63;95;191;;; -220211;1;0;false;false;;;;;; -220212;7;1;false;false;127;159;191;;; -220219;6;0;false;false;63;95;191;;; -220225;1;0;false;false;;;;;; -220226;6;0;false;false;63;95;191;;; -220232;1;0;false;false;;;;;; -220233;2;0;false;false;63;95;191;;; -220235;1;0;false;false;;;;;; -220236;6;0;false;false;63;95;191;;; -220242;1;0;false;false;;;;;; -220243;2;0;false;false;63;95;191;;; -220245;1;0;false;false;;;;;; -220246;7;0;false;false;63;95;191;;; -220253;1;0;false;false;;;;;; -220254;1;0;false;false;63;95;191;;; -220255;1;0;false;false;;;;;; -220256;1;0;false;false;63;95;191;;; -220257;1;0;false;false;;;;;; -220258;1;0;false;false;63;95;191;;; -220259;1;0;false;false;;;;;; -220260;6;0;false;false;63;95;191;;; -220266;1;0;false;false;;;;;; -220267;5;0;false;false;63;95;191;;; -220272;3;0;false;false;;;;;; -220275;1;0;false;false;63;95;191;;; -220276;2;0;false;false;;;;;; -220278;18;0;false;false;63;95;191;;; -220296;1;0;false;false;;;;;; -220297;2;0;false;false;63;95;191;;; -220299;2;0;false;false;;;;;; -220301;4;1;false;false;127;0;85;;; -220305;1;0;false;false;;;;;; -220306;17;0;false;false;0;0;0;;; -220323;3;1;false;false;127;0;85;;; -220326;1;0;false;false;;;;;; -220327;7;0;false;false;0;0;0;;; -220334;1;0;false;false;;;;;; -220335;1;0;false;false;0;0;0;;; -220336;3;0;false;false;;;;;; -220339;9;0;false;false;0;0;0;;; -220348;1;0;false;false;;;;;; -220349;11;0;false;false;0;0;0;;; -220360;6;0;false;false;;;;;; -220366;2;1;false;false;127;0;85;;; -220368;1;0;false;false;;;;;; -220369;7;0;false;false;0;0;0;;; -220376;1;0;false;false;;;;;; -220377;2;0;false;false;0;0;0;;; -220379;1;0;false;false;;;;;; -220380;2;0;false;false;0;0;0;;; -220382;1;0;false;false;;;;;; -220383;1;0;false;false;0;0;0;;; -220384;4;0;false;false;;;;;; -220388;6;1;false;false;127;0;85;;; -220394;1;0;false;false;0;0;0;;; -220395;3;0;false;false;;;;;; -220398;1;0;false;false;0;0;0;;; -220399;3;0;false;false;;;;;; -220402;10;0;false;false;0;0;0;;; -220412;1;0;false;false;;;;;; -220413;1;0;false;false;0;0;0;;; -220414;1;0;false;false;;;;;; -220415;16;0;false;false;0;0;0;;; -220431;3;0;false;false;;;;;; -220434;2;1;false;false;127;0;85;;; -220436;1;0;false;false;;;;;; -220437;7;0;false;false;0;0;0;;; -220444;1;0;false;false;;;;;; -220445;1;0;false;false;0;0;0;;; -220446;1;0;false;false;;;;;; -220447;2;0;false;false;0;0;0;;; -220449;1;0;false;false;;;;;; -220450;1;0;false;false;0;0;0;;; -220451;4;0;false;false;;;;;; -220455;3;1;false;false;127;0;85;;; -220458;1;0;false;false;;;;;; -220459;7;0;false;false;0;0;0;;; -220466;1;0;false;false;;;;;; -220467;1;0;false;false;0;0;0;;; -220468;1;0;false;false;;;;;; -220469;10;0;false;false;0;0;0;;; -220479;1;0;false;false;;;;;; -220480;1;0;false;false;0;0;0;;; -220481;1;0;false;false;;;;;; -220482;7;0;false;false;0;0;0;;; -220489;4;0;false;false;;;;;; -220493;3;1;false;false;127;0;85;;; -220496;1;0;false;false;;;;;; -220497;11;0;false;false;0;0;0;;; -220508;1;0;false;false;;;;;; -220509;1;0;false;false;0;0;0;;; -220510;1;0;false;false;;;;;; -220511;16;0;false;false;0;0;0;;; -220527;1;0;false;false;;;;;; -220528;1;0;false;false;0;0;0;;; -220529;1;0;false;false;;;;;; -220530;7;0;false;false;0;0;0;;; -220537;1;0;false;false;;;;;; -220538;1;0;false;false;0;0;0;;; -220539;1;0;false;false;;;;;; -220540;12;0;false;false;0;0;0;;; -220552;4;0;false;false;;;;;; -220556;3;1;false;false;127;0;85;;; -220559;1;0;false;false;;;;;; -220560;12;0;false;false;0;0;0;;; -220572;1;0;false;false;;;;;; -220573;1;0;false;false;0;0;0;;; -220574;1;0;false;false;;;;;; -220575;17;0;false;false;0;0;0;;; -220592;1;0;false;false;;;;;; -220593;1;0;false;false;0;0;0;;; -220594;1;0;false;false;;;;;; -220595;9;0;false;false;0;0;0;;; -220604;1;0;false;false;;;;;; -220605;1;0;false;false;0;0;0;;; -220606;1;0;false;false;;;;;; -220607;13;0;false;false;0;0;0;;; -220620;4;0;false;false;;;;;; -220624;7;0;false;false;0;0;0;;; -220631;5;0;false;false;;;;;; -220636;11;0;false;false;0;0;0;;; -220647;1;0;false;false;;;;;; -220648;10;0;false;false;0;0;0;;; -220658;7;0;false;false;;;;;; -220665;21;0;false;false;63;127;95;;; -220686;3;0;false;false;;;;;; -220689;8;0;false;false;0;0;0;;; -220697;1;0;false;false;;;;;; -220698;10;0;false;false;0;0;0;;; -220708;7;0;false;false;;;;;; -220715;16;0;false;false;63;127;95;;; -220731;3;0;false;false;;;;;; -220734;12;0;false;false;0;0;0;;; -220746;1;0;false;false;;;;;; -220747;13;0;false;false;0;0;0;;; -220760;1;0;false;false;;;;;; -220761;4;1;false;false;127;0;85;;; -220765;2;0;false;false;0;0;0;;; -220767;4;0;false;false;;;;;; -220771;2;1;false;false;127;0;85;;; -220773;1;0;false;false;;;;;; -220774;8;0;false;false;0;0;0;;; -220782;1;0;false;false;;;;;; -220783;1;0;false;false;0;0;0;;; -220784;1;0;false;false;;;;;; -220785;12;0;false;false;0;0;0;;; -220797;1;0;false;false;;;;;; -220798;1;0;false;false;0;0;0;;; -220799;5;0;false;false;;;;;; -220804;61;0;false;false;63;127;95;;; -220865;3;0;false;false;;;;;; -220868;21;0;false;false;63;127;95;;; -220889;3;0;false;false;;;;;; -220892;5;1;false;false;127;0;85;;; -220897;8;0;false;false;0;0;0;;; -220905;6;0;false;false;;;;;; -220911;10;0;false;false;0;0;0;;; -220921;1;0;false;false;;;;;; -220922;1;0;false;false;0;0;0;;; -220923;1;0;false;false;;;;;; -220924;12;0;false;false;0;0;0;;; -220936;1;0;false;false;;;;;; -220937;10;0;false;false;0;0;0;;; -220947;7;0;false;false;;;;;; -220954;6;0;false;false;0;0;0;;; -220960;1;0;false;false;;;;;; -220961;1;0;false;false;0;0;0;;; -220962;1;0;false;false;;;;;; -220963;12;0;false;false;0;0;0;;; -220975;1;0;false;false;;;;;; -220976;13;0;false;false;0;0;0;;; -220989;1;0;false;false;;;;;; -220990;4;1;false;false;127;0;85;;; -220994;2;0;false;false;0;0;0;;; -220996;4;0;false;false;;;;;; -221000;1;0;false;false;0;0;0;;; -221001;3;0;false;false;;;;;; -221004;1;0;false;false;0;0;0;;; -221005;3;0;false;false;;;;;; -221008;4;1;false;false;127;0;85;;; -221012;1;0;false;false;;;;;; -221013;1;0;false;false;0;0;0;;; -221014;4;0;false;false;;;;;; -221018;3;1;false;false;127;0;85;;; -221021;1;0;false;false;;;;;; -221022;12;0;false;false;0;0;0;;; -221034;1;0;false;false;;;;;; -221035;1;0;false;false;0;0;0;;; -221036;1;0;false;false;;;;;; -221037;10;0;false;false;0;0;0;;; -221047;1;0;false;false;;;;;; -221048;1;0;false;false;0;0;0;;; -221049;1;0;false;false;;;;;; -221050;7;0;false;false;0;0;0;;; -221057;4;0;false;false;;;;;; -221061;3;1;false;false;127;0;85;;; -221064;1;0;false;false;;;;;; -221065;11;0;false;false;0;0;0;;; -221076;1;0;false;false;;;;;; -221077;1;0;false;false;0;0;0;;; -221078;1;0;false;false;;;;;; -221079;16;0;false;false;0;0;0;;; -221095;1;0;false;false;;;;;; -221096;1;0;false;false;0;0;0;;; -221097;1;0;false;false;;;;;; -221098;12;0;false;false;0;0;0;;; -221110;1;0;false;false;;;;;; -221111;1;0;false;false;0;0;0;;; -221112;1;0;false;false;;;;;; -221113;12;0;false;false;0;0;0;;; -221125;4;0;false;false;;;;;; -221129;3;1;false;false;127;0;85;;; -221132;1;0;false;false;;;;;; -221133;12;0;false;false;0;0;0;;; -221145;1;0;false;false;;;;;; -221146;1;0;false;false;0;0;0;;; -221147;1;0;false;false;;;;;; -221148;17;0;false;false;0;0;0;;; -221165;1;0;false;false;;;;;; -221166;1;0;false;false;0;0;0;;; -221167;1;0;false;false;;;;;; -221168;9;0;false;false;0;0;0;;; -221177;1;0;false;false;;;;;; -221178;1;0;false;false;0;0;0;;; -221179;1;0;false;false;;;;;; -221180;13;0;false;false;0;0;0;;; -221193;4;0;false;false;;;;;; -221197;7;0;false;false;0;0;0;;; -221204;5;0;false;false;;;;;; -221209;13;0;false;false;0;0;0;;; -221222;1;0;false;false;;;;;; -221223;10;0;false;false;0;0;0;;; -221233;5;0;false;false;;;;;; -221238;21;0;false;false;63;127;95;;; -221259;3;0;false;false;;;;;; -221262;11;0;false;false;0;0;0;;; -221273;1;0;false;false;;;;;; -221274;10;0;false;false;0;0;0;;; -221284;6;0;false;false;;;;;; -221290;16;0;false;false;63;127;95;;; -221306;3;0;false;false;;;;;; -221309;12;0;false;false;0;0;0;;; -221321;1;0;false;false;;;;;; -221322;13;0;false;false;0;0;0;;; -221335;1;0;false;false;;;;;; -221336;4;1;false;false;127;0;85;;; -221340;2;0;false;false;0;0;0;;; -221342;4;0;false;false;;;;;; -221346;2;1;false;false;127;0;85;;; -221348;1;0;false;false;;;;;; -221349;13;0;false;false;0;0;0;;; -221362;1;0;false;false;;;;;; -221363;1;0;false;false;0;0;0;;; -221364;1;0;false;false;;;;;; -221365;12;0;false;false;0;0;0;;; -221377;1;0;false;false;;;;;; -221378;1;0;false;false;0;0;0;;; -221379;5;0;false;false;;;;;; -221384;58;0;false;false;63;127;95;;; -221442;3;0;false;false;;;;;; -221445;16;0;false;false;63;127;95;;; -221461;3;0;false;false;;;;;; -221464;5;1;false;false;127;0;85;;; -221469;8;0;false;false;0;0;0;;; -221477;6;0;false;false;;;;;; -221483;10;0;false;false;0;0;0;;; -221493;1;0;false;false;;;;;; -221494;1;0;false;false;0;0;0;;; -221495;1;0;false;false;;;;;; -221496;12;0;false;false;0;0;0;;; -221508;1;0;false;false;;;;;; -221509;10;0;false;false;0;0;0;;; -221519;7;0;false;false;;;;;; -221526;7;0;false;false;0;0;0;;; -221533;1;0;false;false;;;;;; -221534;1;0;false;false;0;0;0;;; -221535;1;0;false;false;;;;;; -221536;12;0;false;false;0;0;0;;; -221548;1;0;false;false;;;;;; -221549;13;0;false;false;0;0;0;;; -221562;1;0;false;false;;;;;; -221563;4;1;false;false;127;0;85;;; -221567;2;0;false;false;0;0;0;;; -221569;5;0;false;false;;;;;; -221574;1;0;false;false;0;0;0;;; -221575;3;0;false;false;;;;;; -221578;1;0;false;false;0;0;0;;; -221579;3;0;false;false;;;;;; -221582;22;0;false;false;0;0;0;;; -221604;1;0;false;false;;;;;; -221605;2;0;false;false;0;0;0;;; -221607;1;0;false;false;;;;;; -221608;7;0;false;false;0;0;0;;; -221615;3;0;false;false;;;;;; -221618;3;1;false;false;127;0;85;;; -221621;1;0;false;false;;;;;; -221622;10;0;false;false;0;0;0;;; -221632;1;0;false;false;;;;;; -221633;1;0;false;false;0;0;0;;; -221634;1;0;false;false;;;;;; -221635;7;0;false;false;0;0;0;;; -221642;1;0;false;false;;;;;; -221643;1;0;false;false;0;0;0;;; -221644;1;0;false;false;;;;;; -221645;7;0;false;false;0;0;0;;; -221652;3;0;false;false;;;;;; -221655;19;0;false;false;0;0;0;;; -221674;3;0;false;false;;;;;; -221677;48;0;false;false;63;127;95;;; -221725;1;0;false;false;;;;;; -221726;7;0;false;false;0;0;0;;; -221733;1;0;false;false;;;;;; -221734;1;0;false;false;0;0;0;;; -221735;1;0;false;false;;;;;; -221736;11;0;false;false;0;0;0;;; -221747;2;0;false;false;;;;;; -221749;1;0;false;false;0;0;0;;; -221750;2;0;false;false;;;;;; -221752;3;0;false;false;63;95;191;;; -221755;3;0;false;false;;;;;; -221758;1;0;false;false;63;95;191;;; -221759;1;0;false;false;;;;;; -221760;7;0;false;false;63;95;191;;; -221767;1;0;false;false;;;;;; -221768;3;0;false;false;63;95;191;;; -221771;1;0;false;false;;;;;; -221772;6;0;false;false;63;95;191;;; -221778;1;0;false;false;;;;;; -221779;12;0;false;false;63;95;191;;; -221791;1;0;false;false;;;;;; -221792;3;0;false;false;63;95;191;;; -221795;1;0;false;false;;;;;; -221796;6;0;false;false;63;95;191;;; -221802;1;0;false;false;;;;;; -221803;3;0;false;false;63;95;191;;; -221806;1;0;false;false;;;;;; -221807;10;0;false;false;63;95;191;;; -221817;1;0;false;false;;;;;; -221818;6;0;false;false;63;95;191;;; -221824;3;0;false;false;;;;;; -221827;1;0;false;false;63;95;191;;; -221828;1;0;false;false;;;;;; -221829;3;0;false;false;63;95;191;;; -221832;1;0;false;false;;;;;; -221833;2;0;false;false;63;95;191;;; -221835;1;0;false;false;;;;;; -221836;7;0;false;false;63;95;191;;; -221843;1;0;false;false;;;;;; -221844;3;0;false;false;63;95;191;;; -221847;1;0;false;false;;;;;; -221848;3;0;false;false;63;95;191;;; -221851;1;0;false;false;;;;;; -221852;10;0;false;false;63;95;191;;; -221862;1;0;false;false;;;;;; -221863;8;0;false;false;63;95;191;;; -221871;3;0;false;false;;;;;; -221874;1;0;false;false;63;95;191;;; -221875;1;0;false;false;;;;;; -221876;3;0;false;false;127;127;159;;; -221879;3;0;false;false;;;;;; -221882;1;0;false;false;63;95;191;;; -221883;3;0;false;false;;;;;; -221886;1;0;false;false;63;95;191;;; -221887;1;0;false;false;;;;;; -221888;7;1;false;false;127;159;191;;; -221895;6;0;false;false;63;95;191;;; -221901;1;0;false;false;;;;;; -221902;6;0;false;false;63;95;191;;; -221908;1;0;false;false;;;;;; -221909;2;0;false;false;63;95;191;;; -221911;1;0;false;false;;;;;; -221912;6;0;false;false;63;95;191;;; -221918;1;0;false;false;;;;;; -221919;2;0;false;false;63;95;191;;; -221921;1;0;false;false;;;;;; -221922;7;0;false;false;63;95;191;;; -221929;1;0;false;false;;;;;; -221930;1;0;false;false;63;95;191;;; -221931;1;0;false;false;;;;;; -221932;1;0;false;false;63;95;191;;; -221933;1;0;false;false;;;;;; -221934;1;0;false;false;63;95;191;;; -221935;1;0;false;false;;;;;; -221936;6;0;false;false;63;95;191;;; -221942;1;0;false;false;;;;;; -221943;5;0;false;false;63;95;191;;; -221948;3;0;false;false;;;;;; -221951;1;0;false;false;63;95;191;;; -221952;2;0;false;false;;;;;; -221954;18;0;false;false;63;95;191;;; -221972;1;0;false;false;;;;;; -221973;1;0;false;false;63;95;191;;; -221974;1;0;false;false;;;;;; -221975;8;1;false;false;127;159;191;;; -221983;2;0;false;false;;;;;; -221985;1;0;false;false;63;95;191;;; -221986;1;0;false;false;;;;;; -221987;8;0;false;false;63;95;191;;; -221995;1;0;false;false;;;;;; -221996;6;0;false;false;63;95;191;;; -222002;1;0;false;false;;;;;; -222003;3;0;false;false;63;95;191;;; -222006;1;0;false;false;;;;;; -222007;8;0;false;false;63;95;191;;; -222015;4;0;false;false;;;;;; -222019;1;0;false;false;63;95;191;;; -222020;1;0;false;false;;;;;; -222021;9;0;false;false;63;95;191;;; -222030;1;0;false;false;;;;;; -222031;6;0;false;false;63;95;191;;; -222037;1;0;false;false;;;;;; -222038;3;0;false;false;63;95;191;;; -222041;1;0;false;false;;;;;; -222042;3;0;false;false;63;95;191;;; -222045;1;0;false;false;;;;;; -222046;9;0;false;false;63;95;191;;; -222055;1;0;false;false;;;;;; -222056;3;0;false;false;63;95;191;;; -222059;1;0;false;false;;;;;; -222060;5;0;false;false;63;95;191;;; -222065;1;0;false;false;;;;;; -222066;6;0;false;false;63;95;191;;; -222072;1;0;false;false;;;;;; -222073;2;0;false;false;63;95;191;;; -222075;1;0;false;false;;;;;; -222076;3;0;false;false;63;95;191;;; -222079;1;0;false;false;;;;;; -222080;6;0;false;false;63;95;191;;; -222086;3;0;false;false;;;;;; -222089;2;0;false;false;63;95;191;;; -222091;2;0;false;false;;;;;; -222093;7;1;false;false;127;0;85;;; -222100;1;0;false;false;;;;;; -222101;20;0;false;false;0;0;0;;; -222121;3;1;false;false;127;0;85;;; -222124;1;0;false;false;;;;;; -222125;7;0;false;false;0;0;0;;; -222132;1;0;false;false;;;;;; -222133;1;0;false;false;0;0;0;;; -222134;3;0;false;false;;;;;; -222137;2;1;false;false;127;0;85;;; -222139;1;0;false;false;;;;;; -222140;7;0;false;false;0;0;0;;; -222147;1;0;false;false;;;;;; -222148;2;0;false;false;0;0;0;;; -222150;1;0;false;false;;;;;; -222151;2;0;false;false;0;0;0;;; -222153;1;0;false;false;;;;;; -222154;1;0;false;false;0;0;0;;; -222155;4;0;false;false;;;;;; -222159;6;1;false;false;127;0;85;;; -222165;1;0;false;false;;;;;; -222166;5;1;false;false;127;0;85;;; -222171;1;0;false;false;0;0;0;;; -222172;3;0;false;false;;;;;; -222175;1;0;false;false;0;0;0;;; -222176;3;0;false;false;;;;;; -222179;9;0;false;false;0;0;0;;; -222188;1;0;false;false;;;;;; -222189;13;0;false;false;0;0;0;;; -222202;1;0;false;false;;;;;; -222203;1;0;false;false;0;0;0;;; -222204;1;0;false;false;;;;;; -222205;19;0;false;false;0;0;0;;; -222224;3;0;false;false;;;;;; -222227;2;1;false;false;127;0;85;;; -222229;1;0;false;false;;;;;; -222230;14;0;false;false;0;0;0;;; -222244;1;0;false;false;;;;;; -222245;2;0;false;false;0;0;0;;; -222247;1;0;false;false;;;;;; -222248;4;1;false;false;127;0;85;;; -222252;1;0;false;false;0;0;0;;; -222253;1;0;false;false;;;;;; -222254;1;0;false;false;0;0;0;;; -222255;4;0;false;false;;;;;; -222259;49;0;false;false;0;0;0;;; -222308;1;0;false;false;;;;;; -222309;1;0;false;false;0;0;0;;; -222310;1;0;false;false;;;;;; -222311;8;0;false;false;0;0;0;;; -222319;3;0;false;false;;;;;; -222322;1;0;false;false;0;0;0;;; -222323;3;0;false;false;;;;;; -222326;25;0;false;false;0;0;0;;; -222351;3;0;false;false;;;;;; -222354;6;1;false;false;127;0;85;;; -222360;1;0;false;false;;;;;; -222361;4;1;false;false;127;0;85;;; -222365;1;0;false;false;0;0;0;;; -222366;2;0;false;false;;;;;; -222368;1;0;false;false;0;0;0;;; -222369;2;0;false;false;;;;;; -222371;3;0;false;false;63;95;191;;; -222374;4;0;false;false;;;;;; -222378;1;0;false;false;63;95;191;;; -222379;1;0;false;false;;;;;; -222380;7;0;false;false;63;95;191;;; -222387;1;0;false;false;;;;;; -222388;3;0;false;false;63;95;191;;; -222391;1;0;false;false;;;;;; -222392;3;0;false;false;63;95;191;;; -222395;1;0;false;false;;;;;; -222396;5;0;false;false;63;95;191;;; -222401;3;0;false;false;;;;;; -222404;1;0;false;false;63;95;191;;; -222405;1;0;false;false;;;;;; -222406;3;0;false;false;127;127;159;;; -222409;3;0;false;false;;;;;; -222412;1;0;false;false;63;95;191;;; -222413;3;0;false;false;;;;;; -222416;1;0;false;false;63;95;191;;; -222417;1;0;false;false;;;;;; -222418;11;1;false;false;127;159;191;;; -222429;12;0;false;false;63;95;191;;; -222441;1;0;false;false;;;;;; -222442;4;0;false;false;127;127;159;;; -222446;3;0;false;false;;;;;; -222449;1;0;false;false;63;95;191;;; -222450;4;0;false;false;;;;;; -222454;4;0;false;false;127;127;159;;; -222458;21;0;false;false;63;95;191;;; -222479;1;0;false;false;;;;;; -222480;1;0;false;false;127;127;159;;; -222481;1;0;false;false;;;;;; -222482;2;0;false;false;63;95;191;;; -222484;1;0;false;false;;;;;; -222485;3;0;false;false;63;95;191;;; -222488;1;0;false;false;;;;;; -222489;8;0;false;false;63;95;191;;; -222497;1;0;false;false;;;;;; -222498;3;0;false;false;63;95;191;;; -222501;1;0;false;false;;;;;; -222502;4;0;false;false;63;95;191;;; -222506;1;0;false;false;;;;;; -222507;8;0;false;false;63;95;191;;; -222515;5;0;false;false;127;127;159;;; -222520;3;0;false;false;;;;;; -222523;1;0;false;false;63;95;191;;; -222524;4;0;false;false;;;;;; -222528;4;0;false;false;127;127;159;;; -222532;27;0;false;false;63;95;191;;; -222559;1;0;false;false;;;;;; -222560;1;0;false;false;127;127;159;;; -222561;1;0;false;false;;;;;; -222562;2;0;false;false;63;95;191;;; -222564;1;0;false;false;;;;;; -222565;3;0;false;false;63;95;191;;; -222568;1;0;false;false;;;;;; -222569;6;0;false;false;63;95;191;;; -222575;1;0;false;false;;;;;; -222576;4;0;false;false;63;95;191;;; -222580;1;0;false;false;;;;;; -222581;3;0;false;false;63;95;191;;; -222584;1;0;false;false;;;;;; -222585;6;0;false;false;63;95;191;;; -222591;1;0;false;false;;;;;; -222592;4;0;false;false;63;95;191;;; -222596;1;0;false;false;;;;;; -222597;7;0;false;false;63;95;191;;; -222604;1;0;false;false;;;;;; -222605;3;0;false;false;63;95;191;;; -222608;1;0;false;false;;;;;; -222609;8;0;false;false;63;95;191;;; -222617;5;0;false;false;127;127;159;;; -222622;3;0;false;false;;;;;; -222625;1;0;false;false;63;95;191;;; -222626;1;0;false;false;;;;;; -222627;5;0;false;false;127;127;159;;; -222632;3;0;false;false;;;;;; -222635;2;0;false;false;63;95;191;;; -222637;2;0;false;false;;;;;; -222639;6;1;false;false;127;0;85;;; -222645;1;0;false;false;;;;;; -222646;4;1;false;false;127;0;85;;; -222650;1;0;false;false;;;;;; -222651;11;0;false;false;0;0;0;;; -222662;1;0;false;false;;;;;; -222663;1;0;false;false;0;0;0;;; -222664;3;0;false;false;;;;;; -222667;14;0;false;false;0;0;0;;; -222681;3;0;false;false;;;;;; -222684;15;0;false;false;0;0;0;;; -222699;1;0;false;false;;;;;; -222700;28;0;false;false;0;0;0;;; -222728;2;0;false;false;;;;;; -222730;1;0;false;false;0;0;0;;; -222731;2;0;false;false;;;;;; -222733;3;0;false;false;63;95;191;;; -222736;3;0;false;false;;;;;; -222739;1;0;false;false;63;95;191;;; -222740;1;0;false;false;;;;;; -222741;16;0;false;false;63;95;191;;; -222757;1;0;false;false;;;;;; -222758;4;0;false;false;63;95;191;;; -222762;1;0;false;false;;;;;; -222763;2;0;false;false;63;95;191;;; -222765;1;0;false;false;;;;;; -222766;7;0;false;false;63;95;191;;; -222773;1;0;false;false;;;;;; -222774;2;0;false;false;63;95;191;;; -222776;1;0;false;false;;;;;; -222777;3;0;false;false;63;95;191;;; -222780;1;0;false;false;;;;;; -222781;6;0;false;false;63;95;191;;; -222787;3;0;false;false;;;;;; -222790;1;0;false;false;63;95;191;;; -222791;1;0;false;false;;;;;; -222792;3;0;false;false;127;127;159;;; -222795;3;0;false;false;;;;;; -222798;1;0;false;false;63;95;191;;; -222799;3;0;false;false;;;;;; -222802;1;0;false;false;63;95;191;;; -222803;1;0;false;false;;;;;; -222804;7;1;false;false;127;159;191;;; -222811;5;0;false;false;63;95;191;;; -222816;1;0;false;false;;;;;; -222817;3;0;false;false;63;95;191;;; -222820;1;0;false;false;;;;;; -222821;4;0;false;false;63;95;191;;; -222825;1;0;false;false;;;;;; -222826;6;0;false;false;63;95;191;;; -222832;1;0;false;false;;;;;; -222833;6;0;false;false;63;95;191;;; -222839;4;0;false;false;;;;;; -222843;1;0;false;false;63;95;191;;; -222844;1;0;false;false;;;;;; -222845;4;0;false;false;127;127;159;;; -222849;3;0;false;false;;;;;; -222852;1;0;false;false;63;95;191;;; -222853;1;0;false;false;;;;;; -222854;4;0;false;false;127;127;159;;; -222858;11;0;false;false;63;95;191;;; -222869;1;0;false;false;;;;;; -222870;1;0;false;false;127;127;159;;; -222871;1;0;false;false;;;;;; -222872;3;0;false;false;63;95;191;;; -222875;1;0;false;false;;;;;; -222876;7;0;false;false;63;95;191;;; -222883;1;0;false;false;;;;;; -222884;5;0;false;false;63;95;191;;; -222889;1;0;false;false;;;;;; -222890;6;0;false;false;63;95;191;;; -222896;5;0;false;false;127;127;159;;; -222901;3;0;false;false;;;;;; -222904;1;0;false;false;63;95;191;;; -222905;2;0;false;false;;;;;; -222907;4;0;false;false;127;127;159;;; -222911;9;0;false;false;63;95;191;;; -222920;1;0;false;false;;;;;; -222921;1;0;false;false;127;127;159;;; -222922;1;0;false;false;;;;;; -222923;3;0;false;false;63;95;191;;; -222926;1;0;false;false;;;;;; -222927;7;0;false;false;63;95;191;;; -222934;1;0;false;false;;;;;; -222935;3;0;false;false;63;95;191;;; -222938;1;0;false;false;;;;;; -222939;6;0;false;false;63;95;191;;; -222945;5;0;false;false;127;127;159;;; -222950;3;0;false;false;;;;;; -222953;1;0;false;false;63;95;191;;; -222954;2;0;false;false;;;;;; -222956;4;0;false;false;127;127;159;;; -222960;10;0;false;false;63;95;191;;; -222970;1;0;false;false;;;;;; -222971;1;0;false;false;127;127;159;;; -222972;1;0;false;false;;;;;; -222973;3;0;false;false;63;95;191;;; -222976;1;0;false;false;;;;;; -222977;3;0;false;false;63;95;191;;; -222980;1;0;false;false;;;;;; -222981;4;0;false;false;63;95;191;;; -222985;5;0;false;false;127;127;159;;; -222990;3;0;false;false;;;;;; -222993;1;0;false;false;63;95;191;;; -222994;1;0;false;false;;;;;; -222995;5;0;false;false;127;127;159;;; -223000;3;0;false;false;;;;;; -223003;2;0;false;false;63;95;191;;; -223005;2;0;false;false;;;;;; -223007;4;1;false;false;127;0;85;;; -223011;1;0;false;false;;;;;; -223012;18;0;false;false;0;0;0;;; -223030;1;0;false;false;;;;;; -223031;6;0;false;false;0;0;0;;; -223037;1;0;false;false;;;;;; -223038;1;0;false;false;0;0;0;;; -223039;3;0;false;false;;;;;; -223042;2;1;false;false;127;0;85;;; -223044;1;0;false;false;;;;;; -223045;10;0;false;false;0;0;0;;; -223055;1;0;false;false;;;;;; -223056;1;0;false;false;0;0;0;;; -223057;4;0;false;false;;;;;; -223061;20;0;false;false;0;0;0;;; -223081;1;0;false;false;;;;;; -223082;4;1;false;false;127;0;85;;; -223086;2;0;false;false;0;0;0;;; -223088;3;0;false;false;;;;;; -223091;1;0;false;false;0;0;0;;; -223092;2;0;false;false;;;;;; -223094;1;0;false;false;0;0;0;;; -223095;2;0;false;false;;;;;; -223097;4;1;false;false;127;0;85;;; -223101;1;0;false;false;;;;;; -223102;21;0;false;false;0;0;0;;; -223123;1;0;false;false;;;;;; -223124;6;0;false;false;0;0;0;;; -223130;1;0;false;false;;;;;; -223131;1;0;false;false;0;0;0;;; -223132;3;0;false;false;;;;;; -223135;10;0;false;false;0;0;0;;; -223145;1;0;false;false;;;;;; -223146;10;0;false;false;0;0;0;;; -223156;1;0;false;false;;;;;; -223157;1;0;false;false;0;0;0;;; -223158;1;0;false;false;;;;;; -223159;16;0;false;false;0;0;0;;; -223175;3;0;false;false;;;;;; -223178;2;1;false;false;127;0;85;;; -223180;1;0;false;false;;;;;; -223181;20;0;false;false;0;0;0;;; -223201;1;0;false;false;;;;;; -223202;2;0;false;false;0;0;0;;; -223204;1;0;false;false;;;;;; -223205;2;0;false;false;0;0;0;;; -223207;1;0;false;false;;;;;; -223208;1;0;false;false;0;0;0;;; -223209;4;0;false;false;;;;;; -223213;39;0;false;false;0;0;0;;; -223252;1;0;false;false;;;;;; -223253;12;0;false;false;0;0;0;;; -223265;1;0;false;false;;;;;; -223266;9;0;false;false;0;0;0;;; -223275;1;0;false;false;;;;;; -223276;1;0;false;false;0;0;0;;; -223277;1;0;false;false;;;;;; -223278;13;0;false;false;0;0;0;;; -223291;3;0;false;false;;;;;; -223294;1;0;false;false;0;0;0;;; -223295;1;0;false;false;;;;;; -223296;4;1;false;false;127;0;85;;; -223300;1;0;false;false;;;;;; -223301;1;0;false;false;0;0;0;;; -223302;4;0;false;false;;;;;; -223306;2;1;false;false;127;0;85;;; -223308;1;0;false;false;;;;;; -223309;12;0;false;false;0;0;0;;; -223321;1;0;false;false;;;;;; -223322;2;0;false;false;0;0;0;;; -223324;1;0;false;false;;;;;; -223325;10;0;false;false;0;0;0;;; -223335;1;0;false;false;;;;;; -223336;1;0;false;false;0;0;0;;; -223337;5;0;false;false;;;;;; -223342;39;0;false;false;0;0;0;;; -223381;1;0;false;false;;;;;; -223382;12;0;false;false;0;0;0;;; -223394;1;0;false;false;;;;;; -223395;21;0;false;false;0;0;0;;; -223416;4;0;false;false;;;;;; -223420;1;0;false;false;0;0;0;;; -223421;1;0;false;false;;;;;; -223422;4;1;false;false;127;0;85;;; -223426;1;0;false;false;;;;;; -223427;1;0;false;false;0;0;0;;; -223428;5;0;false;false;;;;;; -223433;39;0;false;false;0;0;0;;; -223472;1;0;false;false;;;;;; -223473;12;0;false;false;0;0;0;;; -223485;1;0;false;false;;;;;; -223486;9;0;false;false;0;0;0;;; -223495;1;0;false;false;;;;;; -223496;1;0;false;false;0;0;0;;; -223497;1;0;false;false;;;;;; -223498;13;0;false;false;0;0;0;;; -223511;5;0;false;false;;;;;; -223516;39;0;false;false;0;0;0;;; -223555;1;0;false;false;;;;;; -223556;12;0;false;false;0;0;0;;; -223568;1;0;false;false;;;;;; -223569;21;0;false;false;0;0;0;;; -223590;5;0;false;false;;;;;; -223595;1;0;false;false;0;0;0;;; -223596;3;0;false;false;;;;;; -223599;1;0;false;false;0;0;0;;; -223600;3;0;false;false;;;;;; -223603;27;0;false;false;0;0;0;;; -223630;1;0;false;false;;;;;; -223631;7;0;false;false;0;0;0;;; -223638;2;0;false;false;;;;;; -223640;1;0;false;false;0;0;0;;; -223641;2;0;false;false;;;;;; -223643;3;0;false;false;63;95;191;;; -223646;3;0;false;false;;;;;; -223649;1;0;false;false;63;95;191;;; -223650;1;0;false;false;;;;;; -223651;5;0;false;false;63;95;191;;; -223656;1;0;false;false;;;;;; -223657;3;0;false;false;63;95;191;;; -223660;1;0;false;false;;;;;; -223661;9;0;false;false;63;95;191;;; -223670;1;0;false;false;;;;;; -223671;9;0;false;false;63;95;191;;; -223680;1;0;false;false;;;;;; -223681;6;0;false;false;63;95;191;;; -223687;3;0;false;false;;;;;; -223690;2;0;false;false;63;95;191;;; -223692;2;0;false;false;;;;;; -223694;4;1;false;false;127;0;85;;; -223698;1;0;false;false;;;;;; -223699;20;0;false;false;0;0;0;;; -223719;1;0;false;false;;;;;; -223720;1;0;false;false;0;0;0;;; -223721;3;0;false;false;;;;;; -223724;39;0;false;false;0;0;0;;; -223763;3;0;false;false;;;;;; -223766;5;0;false;false;0;0;0;;; -223771;1;0;false;false;;;;;; -223772;5;0;false;false;0;0;0;;; -223777;1;0;false;false;;;;;; -223778;1;0;false;false;0;0;0;;; -223779;1;0;false;false;;;;;; -223780;3;1;false;false;127;0;85;;; -223783;1;0;false;false;;;;;; -223784;8;0;false;false;0;0;0;;; -223792;3;0;false;false;;;;;; -223795;7;0;false;false;0;0;0;;; -223802;1;0;false;false;;;;;; -223803;1;0;false;false;0;0;0;;; -223804;1;0;false;false;;;;;; -223805;12;0;false;false;0;0;0;;; -223817;3;0;false;false;;;;;; -223820;7;0;false;false;0;0;0;;; -223827;1;0;false;false;;;;;; -223828;1;0;false;false;0;0;0;;; -223829;1;0;false;false;;;;;; -223830;12;0;false;false;0;0;0;;; -223842;3;0;false;false;;;;;; -223845;30;0;false;false;0;0;0;;; -223875;1;0;false;false;;;;;; -223876;7;0;false;false;0;0;0;;; -223883;2;0;false;false;;;;;; -223885;1;0;false;false;0;0;0;;; -223886;2;0;false;false;;;;;; -223888;3;0;false;false;63;95;191;;; -223891;3;0;false;false;;;;;; -223894;1;0;false;false;63;95;191;;; -223895;1;0;false;false;;;;;; -223896;4;0;false;false;63;95;191;;; -223900;1;0;false;false;;;;;; -223901;7;0;false;false;63;95;191;;; -223908;1;0;false;false;;;;;; -223909;3;0;false;false;63;95;191;;; -223912;1;0;false;false;;;;;; -223913;6;0;false;false;63;95;191;;; -223919;1;0;false;false;;;;;; -223920;5;0;false;false;63;95;191;;; -223925;1;0;false;false;;;;;; -223926;6;0;false;false;63;95;191;;; -223932;3;0;false;false;;;;;; -223935;1;0;false;false;63;95;191;;; -223936;1;0;false;false;;;;;; -223937;4;0;false;false;63;95;191;;; -223941;1;0;false;false;;;;;; -223942;9;0;false;false;63;95;191;;; -223951;1;0;false;false;;;;;; -223952;3;0;false;false;63;95;191;;; -223955;1;0;false;false;;;;;; -223956;8;0;false;false;63;95;191;;; -223964;1;0;false;false;;;;;; -223965;5;0;false;false;63;95;191;;; -223970;1;0;false;false;;;;;; -223971;3;0;false;false;63;95;191;;; -223974;1;0;false;false;;;;;; -223975;9;0;false;false;63;95;191;;; -223984;3;0;false;false;;;;;; -223987;1;0;false;false;63;95;191;;; -223988;1;0;false;false;;;;;; -223989;3;0;false;false;127;127;159;;; -223992;3;0;false;false;;;;;; -223995;1;0;false;false;63;95;191;;; -223996;3;0;false;false;;;;;; -223999;1;0;false;false;63;95;191;;; -224000;1;0;false;false;;;;;; -224001;7;1;false;false;127;159;191;;; -224008;4;0;false;false;63;95;191;;; -224012;1;0;false;false;;;;;; -224013;11;0;false;false;63;95;191;;; -224024;1;0;false;false;;;;;; -224025;5;0;false;false;63;95;191;;; -224030;1;0;false;false;;;;;; -224031;6;0;false;false;63;95;191;;; -224037;1;0;false;false;;;;;; -224038;12;0;false;false;63;95;191;;; -224050;1;0;false;false;;;;;; -224051;4;0;false;false;63;95;191;;; -224055;1;0;false;false;;;;;; -224056;3;0;false;false;63;95;191;;; -224059;1;0;false;false;;;;;; -224060;4;0;false;false;63;95;191;;; -224064;1;0;false;false;;;;;; -224065;5;0;false;false;63;95;191;;; -224070;3;0;false;false;;;;;; -224073;1;0;false;false;63;95;191;;; -224074;1;0;false;false;;;;;; -224075;7;1;false;false;127;159;191;;; -224082;3;0;false;false;63;95;191;;; -224085;3;0;false;false;;;;;; -224088;2;0;false;false;63;95;191;;; -224090;2;0;false;false;;;;;; -224092;6;1;false;false;127;0;85;;; -224098;1;0;false;false;;;;;; -224099;4;1;false;false;127;0;85;;; -224103;1;0;false;false;;;;;; -224104;12;0;false;false;0;0;0;;; -224116;7;1;false;false;127;0;85;;; -224123;1;0;false;false;;;;;; -224124;5;0;false;false;0;0;0;;; -224129;1;0;false;false;;;;;; -224130;1;0;false;false;0;0;0;;; -224131;3;0;false;false;;;;;; -224134;14;0;false;false;0;0;0;;; -224148;3;0;false;false;;;;;; -224151;2;1;false;false;127;0;85;;; -224153;1;0;false;false;;;;;; -224154;12;0;false;false;0;0;0;;; -224166;1;0;false;false;;;;;; -224167;1;0;false;false;0;0;0;;; -224168;1;0;false;false;;;;;; -224169;11;0;false;false;0;0;0;;; -224180;1;0;false;false;;;;;; -224181;2;0;false;false;0;0;0;;; -224183;1;0;false;false;;;;;; -224184;2;0;false;false;0;0;0;;; -224186;1;0;false;false;;;;;; -224187;6;1;false;false;127;0;85;;; -224193;1;0;false;false;0;0;0;;; -224194;6;0;false;false;;;;;; -224200;2;1;false;false;127;0;85;;; -224202;1;0;false;false;;;;;; -224203;5;0;false;false;0;0;0;;; -224208;1;0;false;false;;;;;; -224209;2;0;false;false;0;0;0;;; -224211;1;0;false;false;;;;;; -224212;9;0;false;false;0;0;0;;; -224221;1;0;false;false;;;;;; -224222;1;0;false;false;0;0;0;;; -224223;4;0;false;false;;;;;; -224227;9;0;false;false;0;0;0;;; -224236;1;0;false;false;;;;;; -224237;13;0;false;false;0;0;0;;; -224250;1;0;false;false;;;;;; -224251;1;0;false;false;0;0;0;;; -224252;1;0;false;false;;;;;; -224253;19;0;false;false;0;0;0;;; -224272;8;0;false;false;;;;;; -224280;8;0;false;false;0;0;0;;; -224288;1;0;false;false;;;;;; -224289;1;0;false;false;0;0;0;;; -224290;1;0;false;false;;;;;; -224291;5;0;false;false;0;0;0;;; -224296;4;0;false;false;;;;;; -224300;2;1;false;false;127;0;85;;; -224302;1;0;false;false;;;;;; -224303;10;0;false;false;0;0;0;;; -224313;1;0;false;false;;;;;; -224314;1;0;false;false;0;0;0;;; -224315;5;0;false;false;;;;;; -224320;14;0;false;false;0;0;0;;; -224334;1;0;false;false;;;;;; -224335;1;0;false;false;0;0;0;;; -224336;1;0;false;false;;;;;; -224337;8;0;false;false;0;0;0;;; -224345;5;0;false;false;;;;;; -224350;7;0;false;false;0;0;0;;; -224357;1;0;false;false;;;;;; -224358;1;0;false;false;0;0;0;;; -224359;1;0;false;false;;;;;; -224360;3;1;false;false;127;0;85;;; -224363;1;0;false;false;;;;;; -224364;24;0;false;false;0;0;0;;; -224388;1;0;false;false;;;;;; -224389;16;0;false;false;0;0;0;;; -224405;4;0;false;false;;;;;; -224409;1;0;false;false;0;0;0;;; -224410;4;0;false;false;;;;;; -224414;4;1;false;false;127;0;85;;; -224418;1;0;false;false;;;;;; -224419;1;0;false;false;0;0;0;;; -224420;5;0;false;false;;;;;; -224425;7;0;false;false;0;0;0;;; -224432;1;0;false;false;;;;;; -224433;1;0;false;false;0;0;0;;; -224434;1;0;false;false;;;;;; -224435;15;0;false;false;0;0;0;;; -224450;4;0;false;false;;;;;; -224454;1;0;false;false;0;0;0;;; -224455;4;0;false;false;;;;;; -224459;24;0;false;false;0;0;0;;; -224483;4;0;false;false;;;;;; -224487;22;0;false;false;0;0;0;;; -224509;1;0;false;false;;;;;; -224510;1;0;false;false;0;0;0;;; -224511;1;0;false;false;;;;;; -224512;2;0;false;false;0;0;0;;; -224514;4;0;false;false;;;;;; -224518;2;1;false;false;127;0;85;;; -224520;1;0;false;false;;;;;; -224521;14;0;false;false;0;0;0;;; -224535;1;0;false;false;;;;;; -224536;2;0;false;false;0;0;0;;; -224538;1;0;false;false;;;;;; -224539;4;1;false;false;127;0;85;;; -224543;1;0;false;false;0;0;0;;; -224544;1;0;false;false;;;;;; -224545;1;0;false;false;0;0;0;;; -224546;5;0;false;false;;;;;; -224551;36;0;false;false;0;0;0;;; -224587;4;0;false;false;;;;;; -224591;1;0;false;false;0;0;0;;; -224592;4;0;false;false;;;;;; -224596;16;0;false;false;0;0;0;;; -224612;4;0;false;false;;;;;; -224616;19;0;false;false;0;0;0;;; -224635;4;0;false;false;;;;;; -224639;5;1;false;false;127;0;85;;; -224644;10;0;false;false;0;0;0;;; -224654;5;0;false;false;;;;;; -224659;1;0;false;false;0;0;0;;; -224660;2;0;false;false;;;;;; -224662;1;0;false;false;0;0;0;;; -224663;2;0;false;false;;;;;; -224665;3;0;false;false;63;95;191;;; -224668;3;0;false;false;;;;;; -224671;1;0;false;false;63;95;191;;; -224672;1;0;false;false;;;;;; -224673;4;0;false;false;63;95;191;;; -224677;1;0;false;false;;;;;; -224678;3;0;false;false;63;95;191;;; -224681;1;0;false;false;;;;;; -224682;10;0;false;false;63;95;191;;; -224692;1;0;false;false;;;;;; -224693;6;0;false;false;63;95;191;;; -224699;2;0;false;false;;;;;; -224701;3;0;false;false;63;95;191;;; -224704;1;0;false;false;;;;;; -224705;3;0;false;false;63;95;191;;; -224708;1;0;false;false;;;;;; -224709;7;0;false;false;63;95;191;;; -224716;1;0;false;false;;;;;; -224717;6;0;false;false;63;95;191;;; -224723;1;0;false;false;;;;;; -224724;3;0;false;false;63;95;191;;; -224727;1;0;false;false;;;;;; -224728;9;0;false;false;63;95;191;;; -224737;3;0;false;false;;;;;; -224740;1;0;false;false;63;95;191;;; -224741;4;0;false;false;;;;;; -224745;1;0;false;false;63;95;191;;; -224746;1;0;false;false;;;;;; -224747;4;0;false;false;127;127;159;;; -224751;3;0;false;false;;;;;; -224754;1;0;false;false;63;95;191;;; -224755;1;0;false;false;;;;;; -224756;7;1;false;false;127;159;191;;; -224763;5;0;false;false;63;95;191;;; -224768;1;0;false;false;;;;;; -224769;3;0;false;false;63;95;191;;; -224772;1;0;false;false;;;;;; -224773;3;0;false;false;63;95;191;;; -224776;1;0;false;false;;;;;; -224777;5;0;false;false;63;95;191;;; -224782;1;0;false;false;;;;;; -224783;3;0;false;false;63;95;191;;; -224786;1;0;false;false;;;;;; -224787;3;0;false;false;63;95;191;;; -224790;1;0;false;false;;;;;; -224791;8;0;false;false;63;95;191;;; -224799;3;0;false;false;;;;;; -224802;1;0;false;false;63;95;191;;; -224803;3;0;false;false;;;;;; -224806;1;0;false;false;63;95;191;;; -224807;1;0;false;false;;;;;; -224808;11;1;false;false;127;159;191;;; -224819;12;0;false;false;63;95;191;;; -224831;1;0;false;false;;;;;; -224832;4;0;false;false;127;127;159;;; -224836;3;0;false;false;;;;;; -224839;1;0;false;false;63;95;191;;; -224840;4;0;false;false;;;;;; -224844;4;0;false;false;127;127;159;;; -224848;21;0;false;false;63;95;191;;; -224869;1;0;false;false;;;;;; -224870;1;0;false;false;127;127;159;;; -224871;1;0;false;false;;;;;; -224872;2;0;false;false;63;95;191;;; -224874;1;0;false;false;;;;;; -224875;3;0;false;false;63;95;191;;; -224878;1;0;false;false;;;;;; -224879;8;0;false;false;63;95;191;;; -224887;1;0;false;false;;;;;; -224888;3;0;false;false;63;95;191;;; -224891;1;0;false;false;;;;;; -224892;4;0;false;false;63;95;191;;; -224896;1;0;false;false;;;;;; -224897;8;0;false;false;63;95;191;;; -224905;5;0;false;false;127;127;159;;; -224910;3;0;false;false;;;;;; -224913;1;0;false;false;63;95;191;;; -224914;4;0;false;false;;;;;; -224918;4;0;false;false;127;127;159;;; -224922;27;0;false;false;63;95;191;;; -224949;1;0;false;false;;;;;; -224950;1;0;false;false;127;127;159;;; -224951;1;0;false;false;;;;;; -224952;2;0;false;false;63;95;191;;; -224954;1;0;false;false;;;;;; -224955;3;0;false;false;63;95;191;;; -224958;1;0;false;false;;;;;; -224959;6;0;false;false;63;95;191;;; -224965;1;0;false;false;;;;;; -224966;4;0;false;false;63;95;191;;; -224970;1;0;false;false;;;;;; -224971;3;0;false;false;63;95;191;;; -224974;1;0;false;false;;;;;; -224975;6;0;false;false;63;95;191;;; -224981;1;0;false;false;;;;;; -224982;4;0;false;false;63;95;191;;; -224986;1;0;false;false;;;;;; -224987;7;0;false;false;63;95;191;;; -224994;1;0;false;false;;;;;; -224995;3;0;false;false;63;95;191;;; -224998;1;0;false;false;;;;;; -224999;8;0;false;false;63;95;191;;; -225007;5;0;false;false;127;127;159;;; -225012;3;0;false;false;;;;;; -225015;1;0;false;false;63;95;191;;; -225016;1;0;false;false;;;;;; -225017;5;0;false;false;127;127;159;;; -225022;3;0;false;false;;;;;; -225025;2;0;false;false;63;95;191;;; -225027;2;0;false;false;;;;;; -225029;6;1;false;false;127;0;85;;; -225035;1;0;false;false;;;;;; -225036;4;1;false;false;127;0;85;;; -225040;1;0;false;false;;;;;; -225041;14;0;false;false;0;0;0;;; -225055;1;0;false;false;;;;;; -225056;6;0;false;false;0;0;0;;; -225062;1;0;false;false;;;;;; -225063;1;0;false;false;0;0;0;;; -225064;3;0;false;false;;;;;; -225067;11;0;false;false;0;0;0;;; -225078;1;0;false;false;;;;;; -225079;3;0;false;false;0;0;0;;; -225082;3;0;false;false;;;;;; -225085;5;1;false;false;127;0;85;;; -225090;17;0;false;false;0;0;0;;; -225107;3;0;false;false;;;;;; -225110;14;0;false;false;0;0;0;;; -225124;1;0;false;false;;;;;; -225125;1;0;false;false;0;0;0;;; -225126;1;0;false;false;;;;;; -225127;9;0;false;false;0;0;0;;; -225136;4;0;false;false;;;;;; -225140;2;1;false;false;127;0;85;;; -225142;1;0;false;false;;;;;; -225143;6;0;false;false;0;0;0;;; -225149;1;0;false;false;;;;;; -225150;2;0;false;false;0;0;0;;; -225152;1;0;false;false;;;;;; -225153;4;1;false;false;127;0;85;;; -225157;1;0;false;false;0;0;0;;; -225158;1;0;false;false;;;;;; -225159;1;0;false;false;0;0;0;;; -225160;4;0;false;false;;;;;; -225164;19;0;false;false;0;0;0;;; -225183;3;0;false;false;;;;;; -225186;1;0;false;false;0;0;0;;; -225187;2;0;false;false;;;;;; -225189;1;0;false;false;0;0;0;;; -225190;2;0;false;false;;;;;; -225192;3;0;false;false;63;95;191;;; -225195;3;0;false;false;;;;;; -225198;1;0;false;false;63;95;191;;; -225199;1;0;false;false;;;;;; -225200;5;1;false;false;127;159;191;;; -225205;45;0;false;false;63;95;191;;; -225250;3;0;false;false;;;;;; -225253;2;0;false;false;63;95;191;;; -225255;2;0;false;false;;;;;; -225257;6;1;false;false;127;0;85;;; -225263;1;0;false;false;;;;;; -225264;4;1;false;false;127;0;85;;; -225268;1;0;false;false;;;;;; -225269;19;0;false;false;0;0;0;;; -225288;1;0;false;false;;;;;; -225289;6;0;false;false;0;0;0;;; -225295;1;0;false;false;;;;;; -225296;1;0;false;false;0;0;0;;; -225297;3;0;false;false;;;;;; -225300;14;0;false;false;0;0;0;;; -225314;3;0;false;false;;;;;; -225317;10;0;false;false;0;0;0;;; -225327;1;0;false;false;;;;;; -225328;1;0;false;false;0;0;0;;; -225329;1;0;false;false;;;;;; -225330;6;0;false;false;0;0;0;;; -225336;3;0;false;false;;;;;; -225339;5;1;false;false;127;0;85;;; -225344;32;0;false;false;0;0;0;;; -225376;3;0;false;false;;;;;; -225379;9;0;false;false;0;0;0;;; -225388;2;0;false;false;;;;;; -225390;1;0;false;false;0;0;0;;; -225391;2;0;false;false;;;;;; -225393;3;0;false;false;63;95;191;;; -225396;3;0;false;false;;;;;; -225399;1;0;false;false;63;95;191;;; -225400;1;0;false;false;;;;;; -225401;4;0;false;false;63;95;191;;; -225405;1;0;false;false;;;;;; -225406;3;0;false;false;63;95;191;;; -225409;1;0;false;false;;;;;; -225410;4;0;false;false;63;95;191;;; -225414;1;0;false;false;;;;;; -225415;8;0;false;false;63;95;191;;; -225423;1;0;false;false;;;;;; -225424;5;0;false;false;63;95;191;;; -225429;2;0;false;false;;;;;; -225431;4;0;false;false;63;95;191;;; -225435;1;0;false;false;;;;;; -225436;4;0;false;false;63;95;191;;; -225440;1;0;false;false;;;;;; -225441;3;0;false;false;63;95;191;;; -225444;1;0;false;false;;;;;; -225445;4;0;false;false;63;95;191;;; -225449;1;0;false;false;;;;;; -225450;4;0;false;false;63;95;191;;; -225454;1;0;false;false;;;;;; -225455;7;0;false;false;63;95;191;;; -225462;3;0;false;false;;;;;; -225465;1;0;false;false;63;95;191;;; -225466;1;0;false;false;;;;;; -225467;9;0;false;false;63;95;191;;; -225476;1;0;false;false;;;;;; -225477;2;0;false;false;63;95;191;;; -225479;1;0;false;false;;;;;; -225480;7;0;false;false;63;95;191;;; -225487;1;0;false;false;;;;;; -225488;2;0;false;false;63;95;191;;; -225490;1;0;false;false;;;;;; -225491;8;0;false;false;63;95;191;;; -225499;1;0;false;false;;;;;; -225500;2;0;false;false;63;95;191;;; -225502;1;0;false;false;;;;;; -225503;4;0;false;false;63;95;191;;; -225507;1;0;false;false;;;;;; -225508;4;0;false;false;63;95;191;;; -225512;1;0;false;false;;;;;; -225513;3;0;false;false;63;95;191;;; -225516;1;0;false;false;;;;;; -225517;3;0;false;false;63;95;191;;; -225520;1;0;false;false;;;;;; -225521;4;0;false;false;63;95;191;;; -225525;3;0;false;false;;;;;; -225528;1;0;false;false;63;95;191;;; -225529;1;0;false;false;;;;;; -225530;6;0;false;false;63;95;191;;; -225536;3;0;false;false;;;;;; -225539;1;0;false;false;63;95;191;;; -225540;3;0;false;false;;;;;; -225543;1;0;false;false;63;95;191;;; -225544;1;0;false;false;;;;;; -225545;7;1;false;false;127;159;191;;; -225552;4;0;false;false;63;95;191;;; -225556;1;0;false;false;;;;;; -225557;3;0;false;false;63;95;191;;; -225560;1;0;false;false;;;;;; -225561;3;0;false;false;63;95;191;;; -225564;1;0;false;false;;;;;; -225565;8;0;false;false;63;95;191;;; -225573;1;0;false;false;;;;;; -225574;4;0;false;false;63;95;191;;; -225578;3;0;false;false;;;;;; -225581;1;0;false;false;63;95;191;;; -225582;1;0;false;false;;;;;; -225583;11;1;false;false;127;159;191;;; -225594;12;0;false;false;63;95;191;;; -225606;1;0;false;false;;;;;; -225607;4;0;false;false;127;127;159;;; -225611;3;0;false;false;;;;;; -225614;1;0;false;false;63;95;191;;; -225615;4;0;false;false;;;;;; -225619;4;0;false;false;127;127;159;;; -225623;21;0;false;false;63;95;191;;; -225644;1;0;false;false;;;;;; -225645;1;0;false;false;127;127;159;;; -225646;1;0;false;false;;;;;; -225647;2;0;false;false;63;95;191;;; -225649;1;0;false;false;;;;;; -225650;3;0;false;false;63;95;191;;; -225653;1;0;false;false;;;;;; -225654;8;0;false;false;63;95;191;;; -225662;1;0;false;false;;;;;; -225663;3;0;false;false;63;95;191;;; -225666;1;0;false;false;;;;;; -225667;4;0;false;false;63;95;191;;; -225671;1;0;false;false;;;;;; -225672;8;0;false;false;63;95;191;;; -225680;5;0;false;false;127;127;159;;; -225685;3;0;false;false;;;;;; -225688;1;0;false;false;63;95;191;;; -225689;4;0;false;false;;;;;; -225693;4;0;false;false;127;127;159;;; -225697;27;0;false;false;63;95;191;;; -225724;1;0;false;false;;;;;; -225725;1;0;false;false;127;127;159;;; -225726;1;0;false;false;;;;;; -225727;2;0;false;false;63;95;191;;; -225729;1;0;false;false;;;;;; -225730;3;0;false;false;63;95;191;;; -225733;1;0;false;false;;;;;; -225734;6;0;false;false;63;95;191;;; -225740;1;0;false;false;;;;;; -225741;4;0;false;false;63;95;191;;; -225745;1;0;false;false;;;;;; -225746;3;0;false;false;63;95;191;;; -225749;1;0;false;false;;;;;; -225750;6;0;false;false;63;95;191;;; -225756;1;0;false;false;;;;;; -225757;4;0;false;false;63;95;191;;; -225761;1;0;false;false;;;;;; -225762;7;0;false;false;63;95;191;;; -225769;1;0;false;false;;;;;; -225770;3;0;false;false;63;95;191;;; -225773;1;0;false;false;;;;;; -225774;8;0;false;false;63;95;191;;; -225782;5;0;false;false;127;127;159;;; -225787;3;0;false;false;;;;;; -225790;1;0;false;false;63;95;191;;; -225791;1;0;false;false;;;;;; -225792;5;0;false;false;127;127;159;;; -225797;3;0;false;false;;;;;; -225800;1;0;false;false;63;95;191;;; -225801;1;0;false;false;;;;;; -225802;3;0;false;false;127;127;159;;; -225805;3;0;false;false;;;;;; -225808;1;0;false;false;63;95;191;;; -225809;1;0;false;false;;;;;; -225810;12;1;false;false;127;159;191;;; -225822;3;0;false;false;63;95;191;;; -225825;1;0;false;false;;;;;; -225826;19;0;false;false;63;95;191;;; -225845;1;0;false;false;;;;;; -225846;8;0;false;false;63;95;191;;; -225854;3;0;false;false;;;;;; -225857;1;0;false;false;63;95;191;;; -225858;1;0;false;false;;;;;; -225859;4;0;false;false;127;127;159;;; -225863;3;0;false;false;;;;;; -225866;2;0;false;false;63;95;191;;; -225868;2;0;false;false;;;;;; -225870;6;1;false;false;127;0;85;;; -225876;1;0;false;false;;;;;; -225877;4;1;false;false;127;0;85;;; -225881;1;0;false;false;;;;;; -225882;16;0;false;false;0;0;0;;; -225898;7;1;false;false;127;0;85;;; -225905;1;0;false;false;;;;;; -225906;5;0;false;false;0;0;0;;; -225911;1;0;false;false;;;;;; -225912;1;0;false;false;0;0;0;;; -225913;3;0;false;false;;;;;; -225916;14;0;false;false;0;0;0;;; -225930;3;0;false;false;;;;;; -225933;12;0;false;false;0;0;0;;; -225945;1;0;false;false;;;;;; -225946;1;0;false;false;0;0;0;;; -225947;1;0;false;false;;;;;; -225948;5;0;false;false;0;0;0;;; -225953;2;0;false;false;;;;;; -225955;1;0;false;false;0;0;0;;; -225956;2;0;false;false;;;;;; -225958;4;1;false;false;127;0;85;;; -225962;1;0;false;false;;;;;; -225963;17;0;false;false;0;0;0;;; -225980;3;1;false;false;127;0;85;;; -225983;1;0;false;false;;;;;; -225984;10;0;false;false;0;0;0;;; -225994;1;0;false;false;;;;;; -225995;3;1;false;false;127;0;85;;; -225998;1;0;false;false;;;;;; -225999;5;0;false;false;0;0;0;;; -226004;1;0;false;false;;;;;; -226005;3;1;false;false;127;0;85;;; -226008;1;0;false;false;;;;;; -226009;10;0;false;false;0;0;0;;; -226019;1;0;false;false;;;;;; -226020;1;0;false;false;0;0;0;;; -226021;3;0;false;false;;;;;; -226024;5;0;false;false;0;0;0;;; -226029;1;0;false;false;;;;;; -226030;5;0;false;false;0;0;0;;; -226035;1;0;false;false;;;;;; -226036;1;0;false;false;0;0;0;;; -226037;1;0;false;false;;;;;; -226038;11;0;false;false;0;0;0;;; -226049;3;0;false;false;;;;;; -226052;2;1;false;false;127;0;85;;; -226054;1;0;false;false;;;;;; -226055;6;0;false;false;0;0;0;;; -226061;1;0;false;false;;;;;; -226062;2;0;false;false;0;0;0;;; -226064;1;0;false;false;;;;;; -226065;4;1;false;false;127;0;85;;; -226069;1;0;false;false;0;0;0;;; -226070;1;0;false;false;;;;;; -226071;1;0;false;false;0;0;0;;; -226072;4;0;false;false;;;;;; -226076;7;1;false;false;127;0;85;;; -226083;1;0;false;false;;;;;; -226084;11;0;false;false;0;0;0;;; -226095;1;0;false;false;;;;;; -226096;1;0;false;false;0;0;0;;; -226097;1;0;false;false;;;;;; -226098;5;0;false;false;0;0;0;;; -226103;1;0;false;false;;;;;; -226104;2;0;false;false;0;0;0;;; -226106;1;0;false;false;;;;;; -226107;13;0;false;false;0;0;0;;; -226120;4;0;false;false;;;;;; -226124;3;1;false;false;127;0;85;;; -226127;1;0;false;false;;;;;; -226128;14;0;false;false;0;0;0;;; -226142;1;0;false;false;;;;;; -226143;1;0;false;false;0;0;0;;; -226144;1;0;false;false;;;;;; -226145;10;0;false;false;0;0;0;;; -226155;4;0;false;false;;;;;; -226159;2;1;false;false;127;0;85;;; -226161;1;0;false;false;;;;;; -226162;14;0;false;false;0;0;0;;; -226176;1;0;false;false;;;;;; -226177;1;0;false;false;0;0;0;;; -226178;5;0;false;false;;;;;; -226183;2;1;false;false;127;0;85;;; -226185;1;0;false;false;;;;;; -226186;15;0;false;false;0;0;0;;; -226201;1;0;false;false;;;;;; -226202;2;0;false;false;0;0;0;;; -226204;1;0;false;false;;;;;; -226205;9;0;false;false;0;0;0;;; -226214;1;0;false;false;;;;;; -226215;1;0;false;false;0;0;0;;; -226216;6;0;false;false;;;;;; -226222;14;0;false;false;0;0;0;;; -226236;1;0;false;false;;;;;; -226237;1;0;false;false;0;0;0;;; -226238;1;0;false;false;;;;;; -226239;10;0;false;false;0;0;0;;; -226249;5;0;false;false;;;;;; -226254;1;0;false;false;0;0;0;;; -226255;1;0;false;false;;;;;; -226256;4;1;false;false;127;0;85;;; -226260;1;0;false;false;;;;;; -226261;2;1;false;false;127;0;85;;; -226263;1;0;false;false;;;;;; -226264;15;0;false;false;0;0;0;;; -226279;1;0;false;false;;;;;; -226280;2;0;false;false;0;0;0;;; -226282;1;0;false;false;;;;;; -226283;10;0;false;false;0;0;0;;; -226293;1;0;false;false;;;;;; -226294;1;0;false;false;0;0;0;;; -226295;6;0;false;false;;;;;; -226301;14;0;false;false;0;0;0;;; -226315;1;0;false;false;;;;;; -226316;1;0;false;false;0;0;0;;; -226317;1;0;false;false;;;;;; -226318;9;0;false;false;0;0;0;;; -226327;5;0;false;false;;;;;; -226332;1;0;false;false;0;0;0;;; -226333;4;0;false;false;;;;;; -226337;1;0;false;false;0;0;0;;; -226338;4;0;false;false;;;;;; -226342;2;1;false;false;127;0;85;;; -226344;1;0;false;false;;;;;; -226345;12;0;false;false;0;0;0;;; -226357;1;0;false;false;;;;;; -226358;2;0;false;false;0;0;0;;; -226360;1;0;false;false;;;;;; -226361;14;0;false;false;0;0;0;;; -226375;1;0;false;false;;;;;; -226376;2;0;false;false;0;0;0;;; -226378;1;0;false;false;;;;;; -226379;10;0;false;false;0;0;0;;; -226389;1;0;false;false;;;;;; -226390;1;0;false;false;0;0;0;;; -226391;5;0;false;false;;;;;; -226396;9;0;false;false;0;0;0;;; -226405;1;0;false;false;;;;;; -226406;2;0;false;false;0;0;0;;; -226408;1;0;false;false;;;;;; -226409;18;0;false;false;0;0;0;;; -226427;1;0;false;false;;;;;; -226428;1;0;false;false;0;0;0;;; -226429;1;0;false;false;;;;;; -226430;3;0;false;false;0;0;0;;; -226433;4;0;false;false;;;;;; -226437;1;0;false;false;0;0;0;;; -226438;4;0;false;false;;;;;; -226442;3;1;false;false;127;0;85;;; -226445;1;0;false;false;;;;;; -226446;9;0;false;false;0;0;0;;; -226455;1;0;false;false;;;;;; -226456;1;0;false;false;0;0;0;;; -226457;1;0;false;false;;;;;; -226458;4;0;false;false;0;0;0;;; -226462;1;0;false;false;;;;;; -226463;1;0;false;false;0;0;0;;; -226464;1;0;false;false;;;;;; -226465;10;0;false;false;0;0;0;;; -226475;1;0;false;false;;;;;; -226476;1;0;false;false;0;0;0;;; -226477;1;0;false;false;;;;;; -226478;20;0;false;false;0;0;0;;; -226498;1;0;false;false;;;;;; -226499;1;0;false;false;0;0;0;;; -226500;1;0;false;false;;;;;; -226501;10;0;false;false;0;0;0;;; -226511;4;0;false;false;;;;;; -226515;28;0;false;false;0;0;0;;; -226543;1;0;false;false;;;;;; -226544;11;0;false;false;0;0;0;;; -226555;4;0;false;false;;;;;; -226559;49;0;false;false;0;0;0;;; -226608;4;0;false;false;;;;;; -226612;2;1;false;false;127;0;85;;; -226614;1;0;false;false;;;;;; -226615;10;0;false;false;0;0;0;;; -226625;1;0;false;false;;;;;; -226626;2;0;false;false;0;0;0;;; -226628;1;0;false;false;;;;;; -226629;15;0;false;false;0;0;0;;; -226644;1;0;false;false;;;;;; -226645;1;0;false;false;0;0;0;;; -226646;5;0;false;false;;;;;; -226651;14;0;false;false;0;0;0;;; -226665;1;0;false;false;;;;;; -226666;1;0;false;false;0;0;0;;; -226667;1;0;false;false;;;;;; -226668;10;0;false;false;0;0;0;;; -226678;5;0;false;false;;;;;; -226683;2;1;false;false;127;0;85;;; -226685;1;0;false;false;;;;;; -226686;13;0;false;false;0;0;0;;; -226699;1;0;false;false;;;;;; -226700;1;0;false;false;0;0;0;;; -226701;6;0;false;false;;;;;; -226707;2;1;false;false;127;0;85;;; -226709;1;0;false;false;;;;;; -226710;15;0;false;false;0;0;0;;; -226725;1;0;false;false;;;;;; -226726;2;0;false;false;0;0;0;;; -226728;1;0;false;false;;;;;; -226729;12;0;false;false;0;0;0;;; -226741;1;0;false;false;;;;;; -226742;1;0;false;false;0;0;0;;; -226743;7;0;false;false;;;;;; -226750;22;0;false;false;0;0;0;;; -226772;4;1;false;false;127;0;85;;; -226776;2;0;false;false;0;0;0;;; -226778;6;0;false;false;;;;;; -226784;1;0;false;false;0;0;0;;; -226785;1;0;false;false;;;;;; -226786;4;1;false;false;127;0;85;;; -226790;1;0;false;false;;;;;; -226791;2;1;false;false;127;0;85;;; -226793;1;0;false;false;;;;;; -226794;15;0;false;false;0;0;0;;; -226809;1;0;false;false;;;;;; -226810;2;0;false;false;0;0;0;;; -226812;1;0;false;false;;;;;; -226813;9;0;false;false;0;0;0;;; -226822;1;0;false;false;;;;;; -226823;1;0;false;false;0;0;0;;; -226824;7;0;false;false;;;;;; -226831;39;0;false;false;0;0;0;;; -226870;6;0;false;false;;;;;; -226876;1;0;false;false;0;0;0;;; -226877;1;0;false;false;;;;;; -226878;4;1;false;false;127;0;85;;; -226882;1;0;false;false;;;;;; -226883;2;1;false;false;127;0;85;;; -226885;1;0;false;false;;;;;; -226886;15;0;false;false;0;0;0;;; -226901;1;0;false;false;;;;;; -226902;2;0;false;false;0;0;0;;; -226904;1;0;false;false;;;;;; -226905;10;0;false;false;0;0;0;;; -226915;1;0;false;false;;;;;; -226916;1;0;false;false;0;0;0;;; -226917;7;0;false;false;;;;;; -226924;40;0;false;false;0;0;0;;; -226964;6;0;false;false;;;;;; -226970;1;0;false;false;0;0;0;;; -226971;5;0;false;false;;;;;; -226976;1;0;false;false;0;0;0;;; -226977;5;0;false;false;;;;;; -226982;32;0;false;false;0;0;0;;; -227014;1;0;false;false;;;;;; -227015;12;0;false;false;0;0;0;;; -227027;5;0;false;false;;;;;; -227032;2;1;false;false;127;0;85;;; -227034;1;0;false;false;;;;;; -227035;15;0;false;false;0;0;0;;; -227050;1;0;false;false;;;;;; -227051;2;0;false;false;0;0;0;;; -227053;1;0;false;false;;;;;; -227054;9;0;false;false;0;0;0;;; -227063;1;0;false;false;;;;;; -227064;1;0;false;false;0;0;0;;; -227065;6;0;false;false;;;;;; -227071;57;0;false;false;0;0;0;;; -227128;5;0;false;false;;;;;; -227133;1;0;false;false;0;0;0;;; -227134;1;0;false;false;;;;;; -227135;4;1;false;false;127;0;85;;; -227139;1;0;false;false;;;;;; -227140;2;1;false;false;127;0;85;;; -227142;1;0;false;false;;;;;; -227143;15;0;false;false;0;0;0;;; -227158;1;0;false;false;;;;;; -227159;2;0;false;false;0;0;0;;; -227161;1;0;false;false;;;;;; -227162;10;0;false;false;0;0;0;;; -227172;1;0;false;false;;;;;; -227173;1;0;false;false;0;0;0;;; -227174;6;0;false;false;;;;;; -227180;53;0;false;false;0;0;0;;; -227233;5;0;false;false;;;;;; -227238;1;0;false;false;0;0;0;;; -227239;4;0;false;false;;;;;; -227243;1;0;false;false;0;0;0;;; -227244;3;0;false;false;;;;;; -227247;1;0;false;false;0;0;0;;; -227248;3;0;false;false;;;;;; -227251;7;0;false;false;0;0;0;;; -227258;1;0;false;false;;;;;; -227259;1;0;false;false;0;0;0;;; -227260;1;0;false;false;;;;;; -227261;10;0;false;false;0;0;0;;; -227271;2;0;false;false;;;;;; -227273;1;0;false;false;0;0;0;;; -227274;2;0;false;false;;;;;; -227276;3;0;false;false;63;95;191;;; -227279;3;0;false;false;;;;;; -227282;1;0;false;false;63;95;191;;; -227283;1;0;false;false;;;;;; -227284;5;0;false;false;63;95;191;;; -227289;1;0;false;false;;;;;; -227290;3;0;false;false;63;95;191;;; -227293;1;0;false;false;;;;;; -227294;5;0;false;false;63;95;191;;; -227299;1;0;false;false;;;;;; -227300;2;0;false;false;63;95;191;;; -227302;1;0;false;false;;;;;; -227303;3;0;false;false;63;95;191;;; -227306;1;0;false;false;;;;;; -227307;7;0;false;false;63;95;191;;; -227314;1;0;false;false;;;;;; -227315;5;0;false;false;63;95;191;;; -227320;1;0;false;false;;;;;; -227321;7;0;false;false;63;95;191;;; -227328;3;0;false;false;;;;;; -227331;2;0;false;false;63;95;191;;; -227333;2;0;false;false;;;;;; -227335;4;1;false;false;127;0;85;;; -227339;1;0;false;false;;;;;; -227340;18;0;false;false;0;0;0;;; -227358;1;0;false;false;;;;;; -227359;1;0;false;false;0;0;0;;; -227360;3;0;false;false;;;;;; -227363;3;1;false;false;127;0;85;;; -227366;1;0;false;false;;;;;; -227367;9;0;false;false;0;0;0;;; -227376;1;0;false;false;;;;;; -227377;1;0;false;false;0;0;0;;; -227378;1;0;false;false;;;;;; -227379;15;0;false;false;0;0;0;;; -227394;3;0;false;false;;;;;; -227397;6;0;false;false;0;0;0;;; -227403;1;0;false;false;;;;;; -227404;4;0;false;false;0;0;0;;; -227408;1;0;false;false;;;;;; -227409;1;0;false;false;0;0;0;;; -227410;1;0;false;false;;;;;; -227411;27;0;false;false;0;0;0;;; -227438;3;0;false;false;;;;;; -227441;3;1;false;false;127;0;85;;; -227444;1;0;false;false;;;;;; -227445;10;0;false;false;0;0;0;;; -227455;1;0;false;false;;;;;; -227456;1;0;false;false;0;0;0;;; -227457;1;0;false;false;;;;;; -227458;35;0;false;false;0;0;0;;; -227493;3;0;false;false;;;;;; -227496;3;1;false;false;127;0;85;;; -227499;1;0;false;false;;;;;; -227500;12;0;false;false;0;0;0;;; -227512;1;0;false;false;;;;;; -227513;1;0;false;false;0;0;0;;; -227514;1;0;false;false;;;;;; -227515;11;0;false;false;0;0;0;;; -227526;1;0;false;false;;;;;; -227527;1;0;false;false;0;0;0;;; -227528;1;0;false;false;;;;;; -227529;11;0;false;false;0;0;0;;; -227540;3;0;false;false;;;;;; -227543;3;1;false;false;127;0;85;;; -227546;1;0;false;false;;;;;; -227547;9;0;false;false;0;0;0;;; -227556;1;0;false;false;;;;;; -227557;1;0;false;false;0;0;0;;; -227558;1;0;false;false;;;;;; -227559;18;0;false;false;0;0;0;;; -227577;1;0;false;false;;;;;; -227578;10;0;false;false;0;0;0;;; -227588;1;0;false;false;;;;;; -227589;14;0;false;false;0;0;0;;; -227603;3;0;false;false;;;;;; -227606;27;0;false;false;0;0;0;;; -227633;1;0;false;false;;;;;; -227634;10;0;false;false;0;0;0;;; -227644;1;0;false;false;;;;;; -227645;21;0;false;false;0;0;0;;; -227666;2;0;false;false;;;;;; -227668;1;0;false;false;0;0;0;;; -227669;2;0;false;false;;;;;; -227671;3;0;false;false;63;95;191;;; -227674;3;0;false;false;;;;;; -227677;1;0;false;false;63;95;191;;; -227678;1;0;false;false;;;;;; -227679;4;0;false;false;63;95;191;;; -227683;1;0;false;false;;;;;; -227684;3;0;false;false;63;95;191;;; -227687;1;0;false;false;;;;;; -227688;5;0;false;false;63;95;191;;; -227693;1;0;false;false;;;;;; -227694;7;0;false;false;63;95;191;;; -227701;3;0;false;false;;;;;; -227704;1;0;false;false;63;95;191;;; -227705;3;0;false;false;;;;;; -227708;1;0;false;false;63;95;191;;; -227709;1;0;false;false;;;;;; -227710;7;1;false;false;127;159;191;;; -227717;6;0;false;false;63;95;191;;; -227723;1;0;false;false;;;;;; -227724;5;0;false;false;63;95;191;;; -227729;1;0;false;false;;;;;; -227730;7;0;false;false;63;95;191;;; -227737;1;0;false;false;;;;;; -227738;8;0;false;false;63;95;191;;; -227746;1;0;false;false;;;;;; -227747;2;0;false;false;63;95;191;;; -227749;1;0;false;false;;;;;; -227750;3;0;false;false;63;95;191;;; -227753;1;0;false;false;;;;;; -227754;5;0;false;false;63;95;191;;; -227759;1;0;false;false;;;;;; -227760;9;0;false;false;63;95;191;;; -227769;1;0;false;false;;;;;; -227770;2;0;false;false;63;95;191;;; -227772;1;0;false;false;;;;;; -227773;3;0;false;false;63;95;191;;; -227776;1;0;false;false;;;;;; -227777;5;0;false;false;63;95;191;;; -227782;3;0;false;false;;;;;; -227785;1;0;false;false;63;95;191;;; -227786;1;0;false;false;;;;;; -227787;11;1;false;false;127;159;191;;; -227798;12;0;false;false;63;95;191;;; -227810;1;0;false;false;;;;;; -227811;4;0;false;false;127;127;159;;; -227815;3;0;false;false;;;;;; -227818;1;0;false;false;63;95;191;;; -227819;4;0;false;false;;;;;; -227823;4;0;false;false;127;127;159;;; -227827;21;0;false;false;63;95;191;;; -227848;1;0;false;false;;;;;; -227849;1;0;false;false;127;127;159;;; -227850;1;0;false;false;;;;;; -227851;2;0;false;false;63;95;191;;; -227853;1;0;false;false;;;;;; -227854;3;0;false;false;63;95;191;;; -227857;1;0;false;false;;;;;; -227858;8;0;false;false;63;95;191;;; -227866;1;0;false;false;;;;;; -227867;3;0;false;false;63;95;191;;; -227870;1;0;false;false;;;;;; -227871;4;0;false;false;63;95;191;;; -227875;1;0;false;false;;;;;; -227876;8;0;false;false;63;95;191;;; -227884;5;0;false;false;127;127;159;;; -227889;3;0;false;false;;;;;; -227892;1;0;false;false;63;95;191;;; -227893;4;0;false;false;;;;;; -227897;4;0;false;false;127;127;159;;; -227901;27;0;false;false;63;95;191;;; -227928;1;0;false;false;;;;;; -227929;1;0;false;false;127;127;159;;; -227930;1;0;false;false;;;;;; -227931;2;0;false;false;63;95;191;;; -227933;1;0;false;false;;;;;; -227934;3;0;false;false;63;95;191;;; -227937;1;0;false;false;;;;;; -227938;6;0;false;false;63;95;191;;; -227944;1;0;false;false;;;;;; -227945;4;0;false;false;63;95;191;;; -227949;1;0;false;false;;;;;; -227950;3;0;false;false;63;95;191;;; -227953;1;0;false;false;;;;;; -227954;6;0;false;false;63;95;191;;; -227960;1;0;false;false;;;;;; -227961;4;0;false;false;63;95;191;;; -227965;1;0;false;false;;;;;; -227966;7;0;false;false;63;95;191;;; -227973;1;0;false;false;;;;;; -227974;3;0;false;false;63;95;191;;; -227977;1;0;false;false;;;;;; -227978;8;0;false;false;63;95;191;;; -227986;5;0;false;false;127;127;159;;; -227991;3;0;false;false;;;;;; -227994;1;0;false;false;63;95;191;;; -227995;1;0;false;false;;;;;; -227996;5;0;false;false;127;127;159;;; -228001;3;0;false;false;;;;;; -228004;1;0;false;false;63;95;191;;; -228005;1;0;false;false;;;;;; -228006;11;1;false;false;127;159;191;;; -228017;24;0;false;false;63;95;191;;; -228041;1;0;false;false;;;;;; -228042;4;0;false;false;127;127;159;;; -228046;3;0;false;false;;;;;; -228049;1;0;false;false;63;95;191;;; -228050;3;0;false;false;;;;;; -228053;4;0;false;false;127;127;159;;; -228057;22;0;false;false;63;95;191;;; -228079;1;0;false;false;;;;;; -228080;4;0;false;false;63;95;191;;; -228084;1;0;false;false;;;;;; -228085;6;0;false;false;63;95;191;;; -228091;1;0;false;false;;;;;; -228092;3;0;false;false;63;95;191;;; -228095;1;0;false;false;;;;;; -228096;5;0;false;false;63;95;191;;; -228101;1;0;false;false;;;;;; -228102;2;0;false;false;63;95;191;;; -228104;1;0;false;false;;;;;; -228105;3;0;false;false;63;95;191;;; -228108;1;0;false;false;;;;;; -228109;3;0;false;false;63;95;191;;; -228112;1;0;false;false;;;;;; -228113;2;0;false;false;63;95;191;;; -228115;1;0;false;false;;;;;; -228116;3;0;false;false;63;95;191;;; -228119;1;0;false;false;;;;;; -228120;9;0;false;false;63;95;191;;; -228129;1;0;false;false;;;;;; -228130;5;0;false;false;63;95;191;;; -228135;1;0;false;false;;;;;; -228136;2;0;false;false;63;95;191;;; -228138;1;0;false;false;;;;;; -228139;6;0;false;false;63;95;191;;; -228145;1;0;false;false;;;;;; -228146;1;0;false;false;63;95;191;;; -228147;4;0;false;false;;;;;; -228151;1;0;false;false;63;95;191;;; -228152;1;0;false;false;;;;;; -228153;5;0;false;false;63;95;191;;; -228158;1;0;false;false;;;;;; -228159;4;0;false;false;63;95;191;;; -228163;1;0;false;false;;;;;; -228164;4;0;false;false;63;95;191;;; -228168;1;0;false;false;;;;;; -228169;9;0;false;false;63;95;191;;; -228178;1;0;false;false;;;;;; -228179;4;0;false;false;63;95;191;;; -228183;1;0;false;false;;;;;; -228184;4;0;false;false;63;95;191;;; -228188;1;0;false;false;;;;;; -228189;7;0;false;false;63;95;191;;; -228196;1;0;false;false;;;;;; -228197;7;0;false;false;63;95;191;;; -228204;1;0;false;false;;;;;; -228205;2;0;false;false;63;95;191;;; -228207;1;0;false;false;;;;;; -228208;5;0;false;false;63;95;191;;; -228213;1;0;false;false;;;;;; -228214;2;0;false;false;63;95;191;;; -228216;1;0;false;false;;;;;; -228217;2;0;false;false;63;95;191;;; -228219;1;0;false;false;;;;;; -228220;5;0;false;false;63;95;191;;; -228225;1;0;false;false;;;;;; -228226;3;0;false;false;63;95;191;;; -228229;1;0;false;false;;;;;; -228230;4;0;false;false;63;95;191;;; -228234;1;0;false;false;;;;;; -228235;10;0;false;false;63;95;191;;; -228245;3;0;false;false;;;;;; -228248;1;0;false;false;63;95;191;;; -228249;1;0;false;false;;;;;; -228250;5;0;false;false;127;127;159;;; -228255;3;0;false;false;;;;;; -228258;2;0;false;false;63;95;191;;; -228260;2;0;false;false;;;;;; -228262;6;1;false;false;127;0;85;;; -228268;1;0;false;false;;;;;; -228269;4;1;false;false;127;0;85;;; -228273;1;0;false;false;;;;;; -228274;15;0;false;false;0;0;0;;; -228289;3;1;false;false;127;0;85;;; -228292;1;0;false;false;;;;;; -228293;7;0;false;false;0;0;0;;; -228300;1;0;false;false;;;;;; -228301;1;0;false;false;0;0;0;;; -228302;3;0;false;false;;;;;; -228305;14;0;false;false;0;0;0;;; -228319;3;0;false;false;;;;;; -228322;3;1;false;false;127;0;85;;; -228325;1;0;false;false;;;;;; -228326;6;0;false;false;0;0;0;;; -228332;1;0;false;false;;;;;; -228333;1;0;false;false;0;0;0;;; -228334;1;0;false;false;;;;;; -228335;15;0;false;false;0;0;0;;; -228350;9;0;false;false;;;;;; -228359;2;1;false;false;127;0;85;;; -228361;1;0;false;false;;;;;; -228362;7;0;false;false;0;0;0;;; -228369;1;0;false;false;;;;;; -228370;1;0;false;false;0;0;0;;; -228371;1;0;false;false;;;;;; -228372;1;0;false;false;0;0;0;;; -228373;1;0;false;false;;;;;; -228374;2;0;false;false;0;0;0;;; -228376;1;0;false;false;;;;;; -228377;6;0;false;false;0;0;0;;; -228383;1;0;false;false;;;;;; -228384;2;0;false;false;0;0;0;;; -228386;1;0;false;false;;;;;; -228387;12;0;false;false;0;0;0;;; -228399;1;0;false;false;;;;;; -228400;1;0;false;false;0;0;0;;; -228401;4;0;false;false;;;;;; -228405;2;1;false;false;127;0;85;;; -228407;1;0;false;false;;;;;; -228408;7;0;false;false;0;0;0;;; -228415;1;0;false;false;;;;;; -228416;1;0;false;false;0;0;0;;; -228417;1;0;false;false;;;;;; -228418;2;0;false;false;0;0;0;;; -228420;1;0;false;false;;;;;; -228421;1;0;false;false;0;0;0;;; -228422;5;0;false;false;;;;;; -228427;11;0;false;false;0;0;0;;; -228438;1;0;false;false;;;;;; -228439;1;0;false;false;0;0;0;;; -228440;1;0;false;false;;;;;; -228441;2;0;false;false;0;0;0;;; -228443;4;0;false;false;;;;;; -228447;1;0;false;false;0;0;0;;; -228448;4;0;false;false;;;;;; -228452;4;1;false;false;127;0;85;;; -228456;4;0;false;false;;;;;; -228460;2;1;false;false;127;0;85;;; -228462;1;0;false;false;;;;;; -228463;7;0;false;false;0;0;0;;; -228470;1;0;false;false;;;;;; -228471;1;0;false;false;0;0;0;;; -228472;1;0;false;false;;;;;; -228473;7;0;false;false;0;0;0;;; -228480;1;0;false;false;;;;;; -228481;1;0;false;false;0;0;0;;; -228482;5;0;false;false;;;;;; -228487;11;0;false;false;0;0;0;;; -228498;1;0;false;false;;;;;; -228499;1;0;false;false;0;0;0;;; -228500;1;0;false;false;;;;;; -228501;7;0;false;false;0;0;0;;; -228508;4;0;false;false;;;;;; -228512;1;0;false;false;0;0;0;;; -228513;4;0;false;false;;;;;; -228517;4;1;false;false;127;0;85;;; -228521;1;0;false;false;;;;;; -228522;1;0;false;false;0;0;0;;; -228523;5;0;false;false;;;;;; -228528;2;1;false;false;127;0;85;;; -228530;1;0;false;false;;;;;; -228531;25;0;false;false;0;0;0;;; -228556;1;0;false;false;;;;;; -228557;1;0;false;false;0;0;0;;; -228558;6;0;false;false;;;;;; -228564;62;0;false;false;63;127;95;;; -228626;4;0;false;false;;;;;; -228630;64;0;false;false;63;127;95;;; -228694;4;0;false;false;;;;;; -228698;38;0;false;false;0;0;0;;; -228736;5;0;false;false;;;;;; -228741;1;0;false;false;0;0;0;;; -228742;5;0;false;false;;;;;; -228747;11;0;false;false;0;0;0;;; -228758;1;0;false;false;;;;;; -228759;1;0;false;false;0;0;0;;; -228760;1;0;false;false;;;;;; -228761;7;0;false;false;0;0;0;;; -228768;4;0;false;false;;;;;; -228772;1;0;false;false;0;0;0;;; -228773;4;0;false;false;;;;;; -228777;47;0;false;false;63;127;95;;; -228824;2;0;false;false;;;;;; -228826;55;0;false;false;63;127;95;;; -228881;2;0;false;false;;;;;; -228883;15;0;false;false;0;0;0;;; -228898;5;1;false;false;127;0;85;;; -228903;2;0;false;false;0;0;0;;; -228905;3;0;false;false;;;;;; -228908;1;0;false;false;0;0;0;;; -228909;3;0;false;false;;;;;; -228912;52;0;false;false;63;127;95;;; -228964;1;0;false;false;;;;;; -228965;19;0;false;false;0;0;0;;; -228984;2;0;false;false;;;;;; -228986;1;0;false;false;0;0;0;;; -228987;3;0;false;false;;;;;; -228990;3;0;false;false;63;95;191;;; -228993;3;0;false;false;;;;;; -228996;1;0;false;false;63;95;191;;; -228997;1;0;false;false;;;;;; -228998;6;0;false;false;63;95;191;;; -229004;1;0;false;false;;;;;; -229005;3;0;false;false;63;95;191;;; -229008;1;0;false;false;;;;;; -229009;9;0;false;false;63;95;191;;; -229018;1;0;false;false;;;;;; -229019;4;0;false;false;63;95;191;;; -229023;1;0;false;false;;;;;; -229024;5;0;false;false;63;95;191;;; -229029;1;0;false;false;;;;;; -229030;2;0;false;false;63;95;191;;; -229032;1;0;false;false;;;;;; -229033;3;0;false;false;63;95;191;;; -229036;1;0;false;false;;;;;; -229037;10;0;false;false;63;95;191;;; -229047;2;0;false;false;;;;;; -229049;3;0;false;false;63;95;191;;; -229052;1;0;false;false;;;;;; -229053;4;0;false;false;63;95;191;;; -229057;1;0;false;false;;;;;; -229058;4;0;false;false;63;95;191;;; -229062;1;0;false;false;;;;;; -229063;2;0;false;false;63;95;191;;; -229065;1;0;false;false;;;;;; -229066;6;0;false;false;63;95;191;;; -229072;3;0;false;false;;;;;; -229075;1;0;false;false;63;95;191;;; -229076;1;0;false;false;;;;;; -229077;2;0;false;false;63;95;191;;; -229079;1;0;false;false;;;;;; -229080;3;0;false;false;63;95;191;;; -229083;1;0;false;false;;;;;; -229084;9;0;false;false;63;95;191;;; -229093;1;0;false;false;;;;;; -229094;2;0;false;false;63;95;191;;; -229096;1;0;false;false;;;;;; -229097;5;0;false;false;63;95;191;;; -229102;1;0;false;false;;;;;; -229103;4;0;false;false;63;95;191;;; -229107;1;0;false;false;;;;;; -229108;6;0;false;false;63;95;191;;; -229114;1;0;false;false;;;;;; -229115;3;0;false;false;63;95;191;;; -229118;1;0;false;false;;;;;; -229119;3;0;false;false;63;95;191;;; -229122;1;0;false;false;;;;;; -229123;7;0;false;false;63;95;191;;; -229130;3;0;false;false;;;;;; -229133;1;0;false;false;63;95;191;;; -229134;1;0;false;false;;;;;; -229135;3;0;false;false;127;127;159;;; -229138;3;0;false;false;;;;;; -229141;1;0;false;false;63;95;191;;; -229142;3;0;false;false;;;;;; -229145;1;0;false;false;63;95;191;;; -229146;1;0;false;false;;;;;; -229147;7;1;false;false;127;159;191;;; -229154;5;0;false;false;63;95;191;;; -229159;1;0;false;false;;;;;; -229160;5;0;false;false;63;95;191;;; -229165;1;0;false;false;;;;;; -229166;5;0;false;false;63;95;191;;; -229171;1;0;false;false;;;;;; -229172;2;0;false;false;63;95;191;;; -229174;1;0;false;false;;;;;; -229175;3;0;false;false;63;95;191;;; -229178;1;0;false;false;;;;;; -229179;4;0;false;false;63;95;191;;; -229183;3;0;false;false;;;;;; -229186;1;0;false;false;63;95;191;;; -229187;1;0;false;false;;;;;; -229188;7;1;false;false;127;159;191;;; -229195;6;0;false;false;63;95;191;;; -229201;1;0;false;false;;;;;; -229202;6;0;false;false;63;95;191;;; -229208;1;0;false;false;;;;;; -229209;2;0;false;false;63;95;191;;; -229211;1;0;false;false;;;;;; -229212;4;0;false;false;63;95;191;;; -229216;1;0;false;false;;;;;; -229217;2;0;false;false;63;95;191;;; -229219;1;0;false;false;;;;;; -229220;5;0;false;false;63;95;191;;; -229225;1;0;false;false;;;;;; -229226;2;0;false;false;63;95;191;;; -229228;1;0;false;false;;;;;; -229229;9;0;false;false;63;95;191;;; -229238;3;0;false;false;;;;;; -229241;1;0;false;false;63;95;191;;; -229242;4;0;false;false;;;;;; -229246;1;0;false;false;63;95;191;;; -229247;1;0;false;false;;;;;; -229248;11;1;false;false;127;159;191;;; -229259;9;0;false;false;63;95;191;;; -229268;1;0;false;false;;;;;; -229269;3;0;false;false;63;95;191;;; -229272;1;0;false;false;;;;;; -229273;21;0;false;false;63;95;191;;; -229294;3;0;false;false;;;;;; -229297;1;0;false;false;63;95;191;;; -229298;1;0;false;false;;;;;; -229299;5;1;false;false;127;159;191;;; -229304;41;0;false;false;63;95;191;;; -229345;3;0;false;false;;;;;; -229348;2;0;false;false;63;95;191;;; -229350;2;0;false;false;;;;;; -229352;4;1;false;false;127;0;85;;; -229356;1;0;false;false;;;;;; -229357;20;0;false;false;0;0;0;;; -229377;3;1;false;false;127;0;85;;; -229380;1;0;false;false;;;;;; -229381;6;0;false;false;0;0;0;;; -229387;1;0;false;false;;;;;; -229388;3;1;false;false;127;0;85;;; -229391;1;0;false;false;;;;;; -229392;7;0;false;false;0;0;0;;; -229399;1;0;false;false;;;;;; -229400;3;1;false;false;127;0;85;;; -229403;1;0;false;false;;;;;; -229404;14;0;false;false;0;0;0;;; -229418;1;0;false;false;;;;;; -229419;6;1;false;false;127;0;85;;; -229425;1;0;false;false;;;;;; -229426;8;0;false;false;0;0;0;;; -229434;1;0;false;false;;;;;; -229435;1;0;false;false;0;0;0;;; -229436;3;0;false;false;;;;;; -229439;2;1;false;false;127;0;85;;; -229441;1;0;false;false;;;;;; -229442;14;0;false;false;0;0;0;;; -229456;1;0;false;false;;;;;; -229457;2;0;false;false;0;0;0;;; -229459;1;0;false;false;;;;;; -229460;23;0;false;false;0;0;0;;; -229483;1;0;false;false;;;;;; -229484;2;0;false;false;0;0;0;;; -229486;1;0;false;false;;;;;; -229487;10;0;false;false;0;0;0;;; -229497;1;0;false;false;;;;;; -229498;2;0;false;false;0;0;0;;; -229500;1;0;false;false;;;;;; -229501;8;0;false;false;0;0;0;;; -229509;1;0;false;false;;;;;; -229510;6;1;false;false;127;0;85;;; -229516;1;0;false;false;0;0;0;;; -229517;3;0;false;false;;;;;; -229520;12;0;false;false;0;0;0;;; -229532;1;0;false;false;;;;;; -229533;17;0;false;false;0;0;0;;; -229550;1;0;false;false;;;;;; -229551;1;0;false;false;0;0;0;;; -229552;1;0;false;false;;;;;; -229553;27;0;false;false;0;0;0;;; -229580;3;0;false;false;;;;;; -229583;10;0;false;false;0;0;0;;; -229593;1;0;false;false;;;;;; -229594;15;0;false;false;0;0;0;;; -229609;1;0;false;false;;;;;; -229610;1;0;false;false;0;0;0;;; -229611;1;0;false;false;;;;;; -229612;3;1;false;false;127;0;85;;; -229615;1;0;false;false;;;;;; -229616;17;0;false;false;0;0;0;;; -229633;1;0;false;false;;;;;; -229634;8;0;false;false;0;0;0;;; -229642;3;0;false;false;;;;;; -229645;6;0;false;false;0;0;0;;; -229651;1;0;false;false;;;;;; -229652;9;0;false;false;0;0;0;;; -229661;1;0;false;false;;;;;; -229662;1;0;false;false;0;0;0;;; -229663;1;0;false;false;;;;;; -229664;42;0;false;false;0;0;0;;; -229706;3;0;false;false;;;;;; -229709;8;0;false;false;0;0;0;;; -229717;1;0;false;false;;;;;; -229718;5;0;false;false;0;0;0;;; -229723;3;0;false;false;;;;;; -229726;10;0;false;false;0;0;0;;; -229736;1;0;false;false;;;;;; -229737;6;0;false;false;0;0;0;;; -229743;3;0;false;false;;;;;; -229746;2;1;false;false;127;0;85;;; -229748;1;0;false;false;;;;;; -229749;14;0;false;false;0;0;0;;; -229763;1;0;false;false;;;;;; -229764;2;0;false;false;0;0;0;;; -229766;1;0;false;false;;;;;; -229767;24;0;false;false;0;0;0;;; -229791;1;0;false;false;;;;;; -229792;1;0;false;false;0;0;0;;; -229793;4;0;false;false;;;;;; -229797;4;0;false;false;0;0;0;;; -229801;1;0;false;false;;;;;; -229802;1;0;false;false;0;0;0;;; -229803;1;0;false;false;;;;;; -229804;3;1;false;false;127;0;85;;; -229807;1;0;false;false;;;;;; -229808;20;0;false;false;0;0;0;;; -229828;4;0;false;false;;;;;; -229832;5;0;false;false;0;0;0;;; -229837;1;0;false;false;;;;;; -229838;1;0;false;false;0;0;0;;; -229839;1;0;false;false;;;;;; -229840;3;1;false;false;127;0;85;;; -229843;1;0;false;false;;;;;; -229844;30;0;false;false;0;0;0;;; -229874;3;0;false;false;;;;;; -229877;1;0;false;false;0;0;0;;; -229878;1;0;false;false;;;;;; -229879;4;1;false;false;127;0;85;;; -229883;1;0;false;false;;;;;; -229884;1;0;false;false;0;0;0;;; -229885;4;0;false;false;;;;;; -229889;11;0;false;false;0;0;0;;; -229900;1;0;false;false;;;;;; -229901;11;0;false;false;0;0;0;;; -229912;1;0;false;false;;;;;; -229913;1;0;false;false;0;0;0;;; -229914;1;0;false;false;;;;;; -229915;26;0;false;false;0;0;0;;; -229941;4;0;false;false;;;;;; -229945;9;0;false;false;0;0;0;;; -229954;1;0;false;false;;;;;; -229955;9;0;false;false;0;0;0;;; -229964;1;0;false;false;;;;;; -229965;1;0;false;false;0;0;0;;; -229966;1;0;false;false;;;;;; -229967;3;1;false;false;127;0;85;;; -229970;1;0;false;false;;;;;; -229971;16;0;false;false;0;0;0;;; -229987;1;0;false;false;;;;;; -229988;8;0;false;false;0;0;0;;; -229996;4;0;false;false;;;;;; -230000;6;0;false;false;0;0;0;;; -230006;1;0;false;false;;;;;; -230007;7;0;false;false;0;0;0;;; -230014;1;0;false;false;;;;;; -230015;1;0;false;false;0;0;0;;; -230016;1;0;false;false;;;;;; -230017;36;0;false;false;0;0;0;;; -230053;4;0;false;false;;;;;; -230057;4;0;false;false;0;0;0;;; -230061;1;0;false;false;;;;;; -230062;1;0;false;false;0;0;0;;; -230063;1;0;false;false;;;;;; -230064;3;1;false;false;127;0;85;;; -230067;1;0;false;false;;;;;; -230068;17;0;false;false;0;0;0;;; -230085;1;0;false;false;;;;;; -230086;11;0;false;false;0;0;0;;; -230097;4;0;false;false;;;;;; -230101;5;0;false;false;0;0;0;;; -230106;1;0;false;false;;;;;; -230107;1;0;false;false;0;0;0;;; -230108;1;0;false;false;;;;;; -230109;3;1;false;false;127;0;85;;; -230112;1;0;false;false;;;;;; -230113;23;0;false;false;0;0;0;;; -230136;1;0;false;false;;;;;; -230137;19;0;false;false;0;0;0;;; -230156;3;0;false;false;;;;;; -230159;1;0;false;false;0;0;0;;; -230160;3;0;false;false;;;;;; -230163;27;0;false;false;0;0;0;;; -230190;1;0;false;false;;;;;; -230191;6;0;false;false;0;0;0;;; -230197;1;0;false;false;;;;;; -230198;15;0;false;false;0;0;0;;; -230213;2;0;false;false;;;;;; -230215;1;0;false;false;0;0;0;;; -230216;2;0;false;false;;;;;; -230218;3;0;false;false;63;95;191;;; -230221;3;0;false;false;;;;;; -230224;1;0;false;false;63;95;191;;; -230225;1;0;false;false;;;;;; -230226;4;0;false;false;63;95;191;;; -230230;1;0;false;false;;;;;; -230231;3;0;false;false;63;95;191;;; -230234;1;0;false;false;;;;;; -230235;7;0;false;false;63;95;191;;; -230242;1;0;false;false;;;;;; -230243;14;0;false;false;63;95;191;;; -230257;1;0;false;false;;;;;; -230258;2;0;false;false;63;95;191;;; -230260;1;0;false;false;;;;;; -230261;3;0;false;false;63;95;191;;; -230264;1;0;false;false;;;;;; -230265;3;0;false;false;63;95;191;;; -230268;1;0;false;false;;;;;; -230269;4;0;false;false;63;95;191;;; -230273;1;0;false;false;;;;;; -230274;8;0;false;false;63;95;191;;; -230282;3;0;false;false;;;;;; -230285;1;0;false;false;63;95;191;;; -230286;1;0;false;false;;;;;; -230287;3;0;false;false;127;127;159;;; -230290;3;0;false;false;;;;;; -230293;1;0;false;false;63;95;191;;; -230294;3;0;false;false;;;;;; -230297;1;0;false;false;63;95;191;;; -230298;1;0;false;false;;;;;; -230299;7;1;false;false;127;159;191;;; -230306;10;0;false;false;63;95;191;;; -230316;1;0;false;false;;;;;; -230317;17;0;false;false;63;95;191;;; -230334;1;0;false;false;;;;;; -230335;14;0;false;false;63;95;191;;; -230349;1;0;false;false;;;;;; -230350;2;0;false;false;63;95;191;;; -230352;1;0;false;false;;;;;; -230353;3;0;false;false;63;95;191;;; -230356;1;0;false;false;;;;;; -230357;3;0;false;false;63;95;191;;; -230360;1;0;false;false;;;;;; -230361;4;0;false;false;63;95;191;;; -230365;1;0;false;false;;;;;; -230366;8;0;false;false;63;95;191;;; -230374;3;0;false;false;;;;;; -230377;1;0;false;false;63;95;191;;; -230378;1;0;false;false;;;;;; -230379;11;1;false;false;127;159;191;;; -230390;12;0;false;false;63;95;191;;; -230402;1;0;false;false;;;;;; -230403;4;0;false;false;127;127;159;;; -230407;3;0;false;false;;;;;; -230410;1;0;false;false;63;95;191;;; -230411;4;0;false;false;;;;;; -230415;4;0;false;false;127;127;159;;; -230419;21;0;false;false;63;95;191;;; -230440;1;0;false;false;;;;;; -230441;1;0;false;false;127;127;159;;; -230442;1;0;false;false;;;;;; -230443;2;0;false;false;63;95;191;;; -230445;1;0;false;false;;;;;; -230446;3;0;false;false;63;95;191;;; -230449;1;0;false;false;;;;;; -230450;8;0;false;false;63;95;191;;; -230458;1;0;false;false;;;;;; -230459;3;0;false;false;63;95;191;;; -230462;1;0;false;false;;;;;; -230463;4;0;false;false;63;95;191;;; -230467;1;0;false;false;;;;;; -230468;8;0;false;false;63;95;191;;; -230476;5;0;false;false;127;127;159;;; -230481;3;0;false;false;;;;;; -230484;1;0;false;false;63;95;191;;; -230485;4;0;false;false;;;;;; -230489;4;0;false;false;127;127;159;;; -230493;27;0;false;false;63;95;191;;; -230520;1;0;false;false;;;;;; -230521;1;0;false;false;127;127;159;;; -230522;1;0;false;false;;;;;; -230523;2;0;false;false;63;95;191;;; -230525;1;0;false;false;;;;;; -230526;3;0;false;false;63;95;191;;; -230529;1;0;false;false;;;;;; -230530;6;0;false;false;63;95;191;;; -230536;1;0;false;false;;;;;; -230537;4;0;false;false;63;95;191;;; -230541;1;0;false;false;;;;;; -230542;3;0;false;false;63;95;191;;; -230545;1;0;false;false;;;;;; -230546;6;0;false;false;63;95;191;;; -230552;1;0;false;false;;;;;; -230553;4;0;false;false;63;95;191;;; -230557;1;0;false;false;;;;;; -230558;7;0;false;false;63;95;191;;; -230565;1;0;false;false;;;;;; -230566;3;0;false;false;63;95;191;;; -230569;1;0;false;false;;;;;; -230570;8;0;false;false;63;95;191;;; -230578;5;0;false;false;127;127;159;;; -230583;3;0;false;false;;;;;; -230586;1;0;false;false;63;95;191;;; -230587;1;0;false;false;;;;;; -230588;5;0;false;false;127;127;159;;; -230593;3;0;false;false;;;;;; -230596;1;0;false;false;63;95;191;;; -230597;1;0;false;false;;;;;; -230598;11;1;false;false;127;159;191;;; -230609;24;0;false;false;63;95;191;;; -230633;1;0;false;false;;;;;; -230634;4;0;false;false;127;127;159;;; -230638;3;0;false;false;;;;;; -230641;1;0;false;false;63;95;191;;; -230642;4;0;false;false;;;;;; -230646;4;0;false;false;127;127;159;;; -230650;19;0;false;false;63;95;191;;; -230669;1;0;false;false;;;;;; -230670;4;0;false;false;63;95;191;;; -230674;1;0;false;false;;;;;; -230675;8;0;false;false;63;95;191;;; -230683;1;0;false;false;;;;;; -230684;2;0;false;false;63;95;191;;; -230686;1;0;false;false;;;;;; -230687;4;0;false;false;63;95;191;;; -230691;5;0;false;false;127;127;159;;; -230696;3;0;false;false;;;;;; -230699;1;0;false;false;63;95;191;;; -230700;1;0;false;false;;;;;; -230701;5;0;false;false;127;127;159;;; -230706;3;0;false;false;;;;;; -230709;2;0;false;false;63;95;191;;; -230711;2;0;false;false;;;;;; -230713;6;1;false;false;127;0;85;;; -230719;1;0;false;false;;;;;; -230720;4;1;false;false;127;0;85;;; -230724;1;0;false;false;;;;;; -230725;28;0;false;false;0;0;0;;; -230753;1;0;false;false;;;;;; -230754;11;0;false;false;0;0;0;;; -230765;1;0;false;false;;;;;; -230766;1;0;false;false;0;0;0;;; -230767;3;0;false;false;;;;;; -230770;14;0;false;false;0;0;0;;; -230784;4;0;false;false;;;;;; -230788;2;1;false;false;127;0;85;;; -230790;1;0;false;false;;;;;; -230791;11;0;false;false;0;0;0;;; -230802;1;0;false;false;;;;;; -230803;2;0;false;false;0;0;0;;; -230805;1;0;false;false;;;;;; -230806;4;1;false;false;127;0;85;;; -230810;1;0;false;false;0;0;0;;; -230811;1;0;false;false;;;;;; -230812;1;0;false;false;0;0;0;;; -230813;4;0;false;false;;;;;; -230817;35;0;false;false;0;0;0;;; -230852;3;0;false;false;;;;;; -230855;1;0;false;false;0;0;0;;; -230856;3;0;false;false;;;;;; -230859;2;1;false;false;127;0;85;;; -230861;1;0;false;false;;;;;; -230862;8;0;false;false;0;0;0;;; -230870;1;0;false;false;;;;;; -230871;2;0;false;false;0;0;0;;; -230873;1;0;false;false;;;;;; -230874;4;1;false;false;127;0;85;;; -230878;1;0;false;false;0;0;0;;; -230879;1;0;false;false;;;;;; -230880;1;0;false;false;0;0;0;;; -230881;4;0;false;false;;;;;; -230885;53;0;false;false;0;0;0;;; -230938;3;0;false;false;;;;;; -230941;1;0;false;false;0;0;0;;; -230942;4;0;false;false;;;;;; -230946;14;0;false;false;0;0;0;;; -230960;1;0;false;false;;;;;; -230961;1;0;false;false;0;0;0;;; -230962;1;0;false;false;;;;;; -230963;11;0;false;false;0;0;0;;; -230974;3;0;false;false;;;;;; -230977;2;1;false;false;127;0;85;;; -230979;1;0;false;false;;;;;; -230980;10;0;false;false;0;0;0;;; -230990;1;0;false;false;;;;;; -230991;1;0;false;false;0;0;0;;; -230992;4;0;false;false;;;;;; -230996;7;0;false;false;0;0;0;;; -231003;1;0;false;false;;;;;; -231004;1;0;false;false;0;0;0;;; -231005;1;0;false;false;;;;;; -231006;3;1;false;false;127;0;85;;; -231009;1;0;false;false;;;;;; -231010;24;0;false;false;0;0;0;;; -231034;1;0;false;false;;;;;; -231035;16;0;false;false;0;0;0;;; -231051;3;0;false;false;;;;;; -231054;1;0;false;false;0;0;0;;; -231055;3;0;false;false;;;;;; -231058;4;1;false;false;127;0;85;;; -231062;1;0;false;false;;;;;; -231063;1;0;false;false;0;0;0;;; -231064;4;0;false;false;;;;;; -231068;7;0;false;false;0;0;0;;; -231075;1;0;false;false;;;;;; -231076;1;0;false;false;0;0;0;;; -231077;1;0;false;false;;;;;; -231078;15;0;false;false;0;0;0;;; -231093;3;0;false;false;;;;;; -231096;1;0;false;false;0;0;0;;; -231097;3;0;false;false;;;;;; -231100;50;0;false;false;0;0;0;;; -231150;3;0;false;false;;;;;; -231153;8;0;false;false;0;0;0;;; -231161;2;0;false;false;;;;;; -231163;1;0;false;false;0;0;0;;; -231164;2;0;false;false;;;;;; -231166;3;0;false;false;63;95;191;;; -231169;3;0;false;false;;;;;; -231172;1;0;false;false;63;95;191;;; -231173;1;0;false;false;;;;;; -231174;4;0;false;false;63;95;191;;; -231178;1;0;false;false;;;;;; -231179;3;0;false;false;63;95;191;;; -231182;1;0;false;false;;;;;; -231183;10;0;false;false;63;95;191;;; -231193;1;0;false;false;;;;;; -231194;6;0;false;false;63;95;191;;; -231200;1;0;false;false;;;;;; -231201;2;0;false;false;63;95;191;;; -231203;1;0;false;false;;;;;; -231204;3;0;false;false;63;95;191;;; -231207;1;0;false;false;;;;;; -231208;6;0;false;false;63;95;191;;; -231214;1;0;false;false;;;;;; -231215;9;0;false;false;63;95;191;;; -231224;1;0;false;false;;;;;; -231225;2;0;false;false;63;95;191;;; -231227;1;0;false;false;;;;;; -231228;3;0;false;false;63;95;191;;; -231231;3;0;false;false;;;;;; -231234;1;0;false;false;63;95;191;;; -231235;1;0;false;false;;;;;; -231236;9;0;false;false;63;95;191;;; -231245;2;0;false;false;;;;;; -231247;10;0;false;false;63;95;191;;; -231257;1;0;false;false;;;;;; -231258;2;0;false;false;63;95;191;;; -231260;1;0;false;false;;;;;; -231261;6;0;false;false;63;95;191;;; -231267;1;0;false;false;;;;;; -231268;3;0;false;false;63;95;191;;; -231271;1;0;false;false;;;;;; -231272;4;0;false;false;63;95;191;;; -231276;1;0;false;false;;;;;; -231277;4;0;false;false;63;95;191;;; -231281;1;0;false;false;;;;;; -231282;5;0;false;false;63;95;191;;; -231287;1;0;false;false;;;;;; -231288;3;0;false;false;63;95;191;;; -231291;4;0;false;false;;;;;; -231295;1;0;false;false;63;95;191;;; -231296;1;0;false;false;;;;;; -231297;10;0;false;false;63;95;191;;; -231307;1;0;false;false;;;;;; -231308;6;0;false;false;63;95;191;;; -231314;1;0;false;false;;;;;; -231315;4;0;false;false;63;95;191;;; -231319;1;0;false;false;;;;;; -231320;2;0;false;false;63;95;191;;; -231322;1;0;false;false;;;;;; -231323;5;0;false;false;63;95;191;;; -231328;1;0;false;false;;;;;; -231329;2;0;false;false;63;95;191;;; -231331;1;0;false;false;;;;;; -231332;3;0;false;false;63;95;191;;; -231335;1;0;false;false;;;;;; -231336;7;0;false;false;63;95;191;;; -231343;1;0;false;false;;;;;; -231344;7;0;false;false;63;95;191;;; -231351;3;0;false;false;;;;;; -231354;1;0;false;false;63;95;191;;; -231355;3;0;false;false;;;;;; -231358;1;0;false;false;63;95;191;;; -231359;1;0;false;false;;;;;; -231360;5;1;false;false;127;159;191;;; -231365;41;0;false;false;63;95;191;;; -231406;3;0;false;false;;;;;; -231409;2;0;false;false;63;95;191;;; -231411;2;0;false;false;;;;;; -231413;6;1;false;false;127;0;85;;; -231419;1;0;false;false;;;;;; -231420;4;1;false;false;127;0;85;;; -231424;1;0;false;false;;;;;; -231425;9;0;false;false;0;0;0;;; -231434;1;0;false;false;;;;;; -231435;7;0;false;false;0;0;0;;; -231442;1;0;false;false;;;;;; -231443;7;0;false;false;0;0;0;;; -231450;1;0;false;false;;;;;; -231451;1;0;false;false;0;0;0;;; -231452;3;0;false;false;;;;;; -231455;2;1;false;false;127;0;85;;; -231457;1;0;false;false;;;;;; -231458;7;0;false;false;0;0;0;;; -231465;1;0;false;false;;;;;; -231466;2;0;false;false;0;0;0;;; -231468;1;0;false;false;;;;;; -231469;4;1;false;false;127;0;85;;; -231473;1;0;false;false;0;0;0;;; -231474;1;0;false;false;;;;;; -231475;1;0;false;false;0;0;0;;; -231476;4;0;false;false;;;;;; -231480;5;1;false;false;127;0;85;;; -231485;24;0;false;false;0;0;0;;; -231509;3;0;false;false;;;;;; -231512;1;0;false;false;0;0;0;;; -231513;1;0;false;false;;;;;; -231514;4;1;false;false;127;0;85;;; -231518;1;0;false;false;;;;;; -231519;1;0;false;false;0;0;0;;; -231520;4;0;false;false;;;;;; -231524;5;1;false;false;127;0;85;;; -231529;19;0;false;false;0;0;0;;; -231548;3;0;false;false;;;;;; -231551;1;0;false;false;0;0;0;;; -231552;2;0;false;false;;;;;; -231554;1;0;false;false;0;0;0;;; -231555;2;0;false;false;;;;;; -231557;3;0;false;false;63;95;191;;; -231560;4;0;false;false;;;;;; -231564;1;0;false;false;63;95;191;;; -231565;1;0;false;false;;;;;; -231566;4;0;false;false;63;95;191;;; -231570;1;0;false;false;;;;;; -231571;7;0;false;false;63;95;191;;; -231578;1;0;false;false;;;;;; -231579;3;0;false;false;63;95;191;;; -231582;1;0;false;false;;;;;; -231583;6;0;false;false;63;95;191;;; -231589;1;0;false;false;;;;;; -231590;10;0;false;false;63;95;191;;; -231600;1;0;false;false;;;;;; -231601;6;0;false;false;63;95;191;;; -231607;1;0;false;false;;;;;; -231608;5;0;false;false;63;95;191;;; -231613;1;0;false;false;;;;;; -231614;5;0;false;false;63;95;191;;; -231619;1;0;false;false;;;;;; -231620;9;0;false;false;63;95;191;;; -231629;3;0;false;false;;;;;; -231632;1;0;false;false;63;95;191;;; -231633;1;0;false;false;;;;;; -231634;4;0;false;false;127;127;159;;; -231638;3;0;false;false;;;;;; -231641;1;0;false;false;63;95;191;;; -231642;3;0;false;false;;;;;; -231645;1;0;false;false;63;95;191;;; -231646;1;0;false;false;;;;;; -231647;7;1;false;false;127;159;191;;; -231654;6;0;false;false;63;95;191;;; -231660;1;0;false;false;;;;;; -231661;2;0;false;false;63;95;191;;; -231663;1;0;false;false;;;;;; -231664;4;0;false;false;63;95;191;;; -231668;1;0;false;false;;;;;; -231669;6;0;false;false;63;95;191;;; -231675;1;0;false;false;;;;;; -231676;8;0;false;false;63;95;191;;; -231684;1;0;false;false;;;;;; -231685;1;0;false;false;63;95;191;;; -231686;1;0;false;false;;;;;; -231687;4;0;false;false;63;95;191;;; -231691;1;0;false;false;;;;;; -231692;7;0;false;false;63;95;191;;; -231699;1;0;false;false;;;;;; -231700;3;0;false;false;63;95;191;;; -231703;1;0;false;false;;;;;; -231704;5;0;false;false;63;95;191;;; -231709;1;0;false;false;;;;;; -231710;2;0;false;false;63;95;191;;; -231712;1;0;false;false;;;;;; -231713;5;0;false;false;63;95;191;;; -231718;3;0;false;false;;;;;; -231721;1;0;false;false;63;95;191;;; -231722;2;0;false;false;;;;;; -231724;6;0;false;false;63;95;191;;; -231730;1;0;false;false;;;;;; -231731;6;0;false;false;63;95;191;;; -231737;1;0;false;false;;;;;; -231738;4;0;false;false;63;95;191;;; -231742;1;0;false;false;;;;;; -231743;3;0;false;false;63;95;191;;; -231746;1;0;false;false;;;;;; -231747;4;0;false;false;63;95;191;;; -231751;1;0;false;false;;;;;; -231752;6;0;false;false;63;95;191;;; -231758;1;0;false;false;;;;;; -231759;2;0;false;false;63;95;191;;; -231761;1;0;false;false;;;;;; -231762;7;0;false;false;63;95;191;;; -231769;1;0;false;false;;;;;; -231770;5;0;false;false;63;95;191;;; -231775;1;0;false;false;;;;;; -231776;7;0;false;false;63;95;191;;; -231783;3;0;false;false;;;;;; -231786;1;0;false;false;63;95;191;;; -231787;1;0;false;false;;;;;; -231788;11;1;false;false;127;159;191;;; -231799;12;0;false;false;63;95;191;;; -231811;1;0;false;false;;;;;; -231812;4;0;false;false;127;127;159;;; -231816;3;0;false;false;;;;;; -231819;1;0;false;false;63;95;191;;; -231820;4;0;false;false;;;;;; -231824;4;0;false;false;127;127;159;;; -231828;21;0;false;false;63;95;191;;; -231849;1;0;false;false;;;;;; -231850;1;0;false;false;127;127;159;;; -231851;1;0;false;false;;;;;; -231852;2;0;false;false;63;95;191;;; -231854;1;0;false;false;;;;;; -231855;3;0;false;false;63;95;191;;; -231858;1;0;false;false;;;;;; -231859;8;0;false;false;63;95;191;;; -231867;1;0;false;false;;;;;; -231868;3;0;false;false;63;95;191;;; -231871;1;0;false;false;;;;;; -231872;4;0;false;false;63;95;191;;; -231876;1;0;false;false;;;;;; -231877;8;0;false;false;63;95;191;;; -231885;5;0;false;false;127;127;159;;; -231890;3;0;false;false;;;;;; -231893;1;0;false;false;63;95;191;;; -231894;4;0;false;false;;;;;; -231898;4;0;false;false;127;127;159;;; -231902;27;0;false;false;63;95;191;;; -231929;1;0;false;false;;;;;; -231930;1;0;false;false;127;127;159;;; -231931;1;0;false;false;;;;;; -231932;2;0;false;false;63;95;191;;; -231934;1;0;false;false;;;;;; -231935;3;0;false;false;63;95;191;;; -231938;1;0;false;false;;;;;; -231939;6;0;false;false;63;95;191;;; -231945;1;0;false;false;;;;;; -231946;4;0;false;false;63;95;191;;; -231950;1;0;false;false;;;;;; -231951;3;0;false;false;63;95;191;;; -231954;1;0;false;false;;;;;; -231955;6;0;false;false;63;95;191;;; -231961;1;0;false;false;;;;;; -231962;4;0;false;false;63;95;191;;; -231966;1;0;false;false;;;;;; -231967;7;0;false;false;63;95;191;;; -231974;1;0;false;false;;;;;; -231975;3;0;false;false;63;95;191;;; -231978;1;0;false;false;;;;;; -231979;8;0;false;false;63;95;191;;; -231987;5;0;false;false;127;127;159;;; -231992;3;0;false;false;;;;;; -231995;1;0;false;false;63;95;191;;; -231996;1;0;false;false;;;;;; -231997;5;0;false;false;127;127;159;;; -232002;3;0;false;false;;;;;; -232005;2;0;false;false;63;95;191;;; -232007;2;0;false;false;;;;;; -232009;6;1;false;false;127;0;85;;; -232015;1;0;false;false;;;;;; -232016;4;1;false;false;127;0;85;;; -232020;1;0;false;false;;;;;; -232021;22;0;false;false;0;0;0;;; -232043;7;1;false;false;127;0;85;;; -232050;1;0;false;false;;;;;; -232051;7;0;false;false;0;0;0;;; -232058;1;0;false;false;;;;;; -232059;1;0;false;false;0;0;0;;; -232060;3;0;false;false;;;;;; -232063;14;0;false;false;0;0;0;;; -232077;3;0;false;false;;;;;; -232080;18;0;false;false;0;0;0;;; -232098;1;0;false;false;;;;;; -232099;1;0;false;false;0;0;0;;; -232100;1;0;false;false;;;;;; -232101;7;0;false;false;0;0;0;;; -232108;2;0;false;false;;;;;; -232110;1;0;false;false;0;0;0;;; -232111;2;0;false;false;;;;;; -232113;3;0;false;false;63;95;191;;; -232116;3;0;false;false;;;;;; -232119;1;0;false;false;63;95;191;;; -232120;1;0;false;false;;;;;; -232121;4;0;false;false;63;95;191;;; -232125;1;0;false;false;;;;;; -232126;7;0;false;false;63;95;191;;; -232133;1;0;false;false;;;;;; -232134;3;0;false;false;63;95;191;;; -232137;1;0;false;false;;;;;; -232138;6;0;false;false;63;95;191;;; -232144;1;0;false;false;;;;;; -232145;7;0;false;false;63;95;191;;; -232152;1;0;false;false;;;;;; -232153;3;0;false;false;63;95;191;;; -232156;1;0;false;false;;;;;; -232157;2;0;false;false;63;95;191;;; -232159;1;0;false;false;;;;;; -232160;7;0;false;false;63;95;191;;; -232167;3;0;false;false;;;;;; -232170;1;0;false;false;63;95;191;;; -232171;1;0;false;false;;;;;; -232172;4;0;false;false;127;127;159;;; -232176;3;0;false;false;;;;;; -232179;1;0;false;false;63;95;191;;; -232180;3;0;false;false;;;;;; -232183;1;0;false;false;63;95;191;;; -232184;1;0;false;false;;;;;; -232185;7;1;false;false;127;159;191;;; -232192;8;0;false;false;63;95;191;;; -232200;1;0;false;false;;;;;; -232201;2;0;false;false;63;95;191;;; -232203;1;0;false;false;;;;;; -232204;4;0;false;false;63;95;191;;; -232208;1;0;false;false;;;;;; -232209;7;0;false;false;63;95;191;;; -232216;1;0;false;false;;;;;; -232217;3;0;false;false;63;95;191;;; -232220;1;0;false;false;;;;;; -232221;2;0;false;false;63;95;191;;; -232223;1;0;false;false;;;;;; -232224;7;0;false;false;63;95;191;;; -232231;1;0;false;false;;;;;; -232232;2;0;false;false;63;95;191;;; -232234;1;0;false;false;;;;;; -232235;5;0;false;false;63;95;191;;; -232240;1;0;false;false;;;;;; -232241;7;0;false;false;63;95;191;;; -232248;1;0;false;false;;;;;; -232249;3;0;false;false;63;95;191;;; -232252;1;0;false;false;;;;;; -232253;3;0;false;false;63;95;191;;; -232256;1;0;false;false;;;;;; -232257;2;0;false;false;63;95;191;;; -232259;4;0;false;false;;;;;; -232263;1;0;false;false;63;95;191;;; -232264;2;0;false;false;;;;;; -232266;6;0;false;false;63;95;191;;; -232272;3;0;false;false;;;;;; -232275;1;0;false;false;63;95;191;;; -232276;1;0;false;false;;;;;; -232277;11;1;false;false;127;159;191;;; -232288;12;0;false;false;63;95;191;;; -232300;1;0;false;false;;;;;; -232301;4;0;false;false;127;127;159;;; -232305;3;0;false;false;;;;;; -232308;1;0;false;false;63;95;191;;; -232309;4;0;false;false;;;;;; -232313;4;0;false;false;127;127;159;;; -232317;21;0;false;false;63;95;191;;; -232338;1;0;false;false;;;;;; -232339;1;0;false;false;127;127;159;;; -232340;1;0;false;false;;;;;; -232341;2;0;false;false;63;95;191;;; -232343;1;0;false;false;;;;;; -232344;3;0;false;false;63;95;191;;; -232347;1;0;false;false;;;;;; -232348;8;0;false;false;63;95;191;;; -232356;1;0;false;false;;;;;; -232357;3;0;false;false;63;95;191;;; -232360;1;0;false;false;;;;;; -232361;4;0;false;false;63;95;191;;; -232365;1;0;false;false;;;;;; -232366;8;0;false;false;63;95;191;;; -232374;5;0;false;false;127;127;159;;; -232379;3;0;false;false;;;;;; -232382;1;0;false;false;63;95;191;;; -232383;4;0;false;false;;;;;; -232387;4;0;false;false;127;127;159;;; -232391;27;0;false;false;63;95;191;;; -232418;1;0;false;false;;;;;; -232419;1;0;false;false;127;127;159;;; -232420;1;0;false;false;;;;;; -232421;2;0;false;false;63;95;191;;; -232423;1;0;false;false;;;;;; -232424;3;0;false;false;63;95;191;;; -232427;1;0;false;false;;;;;; -232428;6;0;false;false;63;95;191;;; -232434;1;0;false;false;;;;;; -232435;4;0;false;false;63;95;191;;; -232439;1;0;false;false;;;;;; -232440;3;0;false;false;63;95;191;;; -232443;1;0;false;false;;;;;; -232444;6;0;false;false;63;95;191;;; -232450;1;0;false;false;;;;;; -232451;4;0;false;false;63;95;191;;; -232455;1;0;false;false;;;;;; -232456;7;0;false;false;63;95;191;;; -232463;1;0;false;false;;;;;; -232464;3;0;false;false;63;95;191;;; -232467;1;0;false;false;;;;;; -232468;8;0;false;false;63;95;191;;; -232476;5;0;false;false;127;127;159;;; -232481;3;0;false;false;;;;;; -232484;1;0;false;false;63;95;191;;; -232485;1;0;false;false;;;;;; -232486;5;0;false;false;127;127;159;;; -232491;3;0;false;false;;;;;; -232494;2;0;false;false;63;95;191;;; -232496;2;0;false;false;;;;;; -232498;6;1;false;false;127;0;85;;; -232504;1;0;false;false;;;;;; -232505;4;1;false;false;127;0;85;;; -232509;1;0;false;false;;;;;; -232510;12;0;false;false;0;0;0;;; -232522;7;1;false;false;127;0;85;;; -232529;1;0;false;false;;;;;; -232530;9;0;false;false;0;0;0;;; -232539;1;0;false;false;;;;;; -232540;1;0;false;false;0;0;0;;; -232541;3;0;false;false;;;;;; -232544;14;0;false;false;0;0;0;;; -232558;3;0;false;false;;;;;; -232561;4;1;false;false;127;0;85;;; -232565;9;0;false;false;0;0;0;;; -232574;1;0;false;false;;;;;; -232575;1;0;false;false;0;0;0;;; -232576;1;0;false;false;;;;;; -232577;9;0;false;false;0;0;0;;; -232586;2;0;false;false;;;;;; -232588;1;0;false;false;0;0;0;;; -232589;2;0;false;false;;;;;; -232591;3;0;false;false;63;95;191;;; -232594;3;0;false;false;;;;;; -232597;1;0;false;false;63;95;191;;; -232598;1;0;false;false;;;;;; -232599;4;0;false;false;63;95;191;;; -232603;1;0;false;false;;;;;; -232604;1;0;false;false;63;95;191;;; -232605;1;0;false;false;;;;;; -232606;3;0;false;false;63;95;191;;; -232609;1;0;false;false;;;;;; -232610;4;0;false;false;63;95;191;;; -232614;1;0;false;false;;;;;; -232615;2;0;false;false;63;95;191;;; -232617;1;0;false;false;;;;;; -232618;6;0;false;false;63;95;191;;; -232624;1;0;false;false;;;;;; -232625;4;0;false;false;63;95;191;;; -232629;1;0;false;false;;;;;; -232630;5;0;false;false;63;95;191;;; -232635;3;0;false;false;;;;;; -232638;1;0;false;false;63;95;191;;; -232639;1;0;false;false;;;;;; -232640;3;0;false;false;127;127;159;;; -232643;3;0;false;false;;;;;; -232646;1;0;false;false;63;95;191;;; -232647;1;0;false;false;;;;;; -232648;3;0;false;false;127;127;159;;; -232651;5;0;false;false;63;95;191;;; -232656;4;0;false;false;127;127;159;;; -232660;1;0;false;false;;;;;; -232661;6;0;false;false;63;95;191;;; -232667;1;0;false;false;;;;;; -232668;5;0;false;false;63;95;191;;; -232673;1;0;false;false;;;;;; -232674;3;0;false;false;63;95;191;;; -232677;1;0;false;false;;;;;; -232678;3;0;false;false;63;95;191;;; -232681;1;0;false;false;;;;;; -232682;9;0;false;false;63;95;191;;; -232691;1;0;false;false;;;;;; -232692;6;0;false;false;63;95;191;;; -232698;1;0;false;false;;;;;; -232699;4;0;false;false;63;95;191;;; -232703;1;0;false;false;;;;;; -232704;4;0;false;false;63;95;191;;; -232708;1;0;false;false;;;;;; -232709;2;0;false;false;63;95;191;;; -232711;1;0;false;false;;;;;; -232712;8;0;false;false;63;95;191;;; -232720;3;0;false;false;;;;;; -232723;1;0;false;false;63;95;191;;; -232724;1;0;false;false;;;;;; -232725;3;0;false;false;63;95;191;;; -232728;1;0;false;false;;;;;; -232729;3;0;false;false;63;95;191;;; -232732;1;0;false;false;;;;;; -232733;4;0;false;false;63;95;191;;; -232737;1;0;false;false;;;;;; -232738;8;0;false;false;63;95;191;;; -232746;1;0;false;false;;;;;; -232747;2;0;false;false;63;95;191;;; -232749;1;0;false;false;;;;;; -232750;7;0;false;false;63;95;191;;; -232757;1;0;false;false;;;;;; -232758;6;0;false;false;63;95;191;;; -232764;3;0;false;false;;;;;; -232767;1;0;false;false;63;95;191;;; -232768;1;0;false;false;;;;;; -232769;4;0;false;false;127;127;159;;; -232773;3;0;false;false;;;;;; -232776;1;0;false;false;63;95;191;;; -232777;3;0;false;false;;;;;; -232780;1;0;false;false;63;95;191;;; -232781;1;0;false;false;;;;;; -232782;7;1;false;false;127;159;191;;; -232789;4;0;false;false;63;95;191;;; -232793;1;0;false;false;;;;;; -232794;3;0;false;false;63;95;191;;; -232797;1;0;false;false;;;;;; -232798;4;0;false;false;63;95;191;;; -232802;3;0;false;false;;;;;; -232805;1;0;false;false;63;95;191;;; -232806;1;0;false;false;;;;;; -232807;11;1;false;false;127;159;191;;; -232818;12;0;false;false;63;95;191;;; -232830;1;0;false;false;;;;;; -232831;4;0;false;false;127;127;159;;; -232835;3;0;false;false;;;;;; -232838;1;0;false;false;63;95;191;;; -232839;4;0;false;false;;;;;; -232843;4;0;false;false;127;127;159;;; -232847;21;0;false;false;63;95;191;;; -232868;1;0;false;false;;;;;; -232869;1;0;false;false;127;127;159;;; -232870;1;0;false;false;;;;;; -232871;2;0;false;false;63;95;191;;; -232873;1;0;false;false;;;;;; -232874;3;0;false;false;63;95;191;;; -232877;1;0;false;false;;;;;; -232878;8;0;false;false;63;95;191;;; -232886;1;0;false;false;;;;;; -232887;3;0;false;false;63;95;191;;; -232890;1;0;false;false;;;;;; -232891;4;0;false;false;63;95;191;;; -232895;1;0;false;false;;;;;; -232896;8;0;false;false;63;95;191;;; -232904;5;0;false;false;127;127;159;;; -232909;3;0;false;false;;;;;; -232912;1;0;false;false;63;95;191;;; -232913;4;0;false;false;;;;;; -232917;4;0;false;false;127;127;159;;; -232921;27;0;false;false;63;95;191;;; -232948;1;0;false;false;;;;;; -232949;1;0;false;false;127;127;159;;; -232950;1;0;false;false;;;;;; -232951;2;0;false;false;63;95;191;;; -232953;1;0;false;false;;;;;; -232954;3;0;false;false;63;95;191;;; -232957;1;0;false;false;;;;;; -232958;6;0;false;false;63;95;191;;; -232964;1;0;false;false;;;;;; -232965;4;0;false;false;63;95;191;;; -232969;1;0;false;false;;;;;; -232970;3;0;false;false;63;95;191;;; -232973;1;0;false;false;;;;;; -232974;6;0;false;false;63;95;191;;; -232980;1;0;false;false;;;;;; -232981;4;0;false;false;63;95;191;;; -232985;1;0;false;false;;;;;; -232986;7;0;false;false;63;95;191;;; -232993;1;0;false;false;;;;;; -232994;3;0;false;false;63;95;191;;; -232997;1;0;false;false;;;;;; -232998;8;0;false;false;63;95;191;;; -233006;5;0;false;false;127;127;159;;; -233011;3;0;false;false;;;;;; -233014;1;0;false;false;63;95;191;;; -233015;1;0;false;false;;;;;; -233016;5;0;false;false;127;127;159;;; -233021;3;0;false;false;;;;;; -233024;2;0;false;false;63;95;191;;; -233026;2;0;false;false;;;;;; -233028;6;1;false;false;127;0;85;;; -233034;1;0;false;false;;;;;; -233035;4;1;false;false;127;0;85;;; -233039;1;0;false;false;;;;;; -233040;12;0;false;false;0;0;0;;; -233052;1;0;false;false;;;;;; -233053;5;0;false;false;0;0;0;;; -233058;1;0;false;false;;;;;; -233059;1;0;false;false;0;0;0;;; -233060;3;0;false;false;;;;;; -233063;14;0;false;false;0;0;0;;; -233077;3;0;false;false;;;;;; -233080;3;1;false;false;127;0;85;;; -233083;1;0;false;false;;;;;; -233084;13;0;false;false;0;0;0;;; -233097;1;0;false;false;;;;;; -233098;1;0;false;false;0;0;0;;; -233099;1;0;false;false;;;;;; -233100;11;0;false;false;0;0;0;;; -233111;6;0;false;false;;;;;; -233117;5;1;false;false;127;0;85;;; -233122;15;0;false;false;0;0;0;;; -233137;4;0;false;false;;;;;; -233141;21;0;false;false;0;0;0;;; -233162;3;0;false;false;;;;;; -233165;47;0;false;false;63;127;95;;; -233212;1;0;false;false;;;;;; -233213;2;1;false;false;127;0;85;;; -233215;1;0;false;false;;;;;; -233216;11;0;false;false;0;0;0;;; -233227;1;0;false;false;;;;;; -233228;2;0;false;false;0;0;0;;; -233230;1;0;false;false;;;;;; -233231;14;0;false;false;0;0;0;;; -233245;1;0;false;false;;;;;; -233246;1;0;false;false;0;0;0;;; -233247;4;0;false;false;;;;;; -233251;44;0;false;false;0;0;0;;; -233295;1;0;false;false;;;;;; -233296;1;0;false;false;0;0;0;;; -233297;1;0;false;false;;;;;; -233298;10;0;false;false;0;0;0;;; -233308;1;0;false;false;;;;;; -233309;1;0;false;false;0;0;0;;; -233310;1;0;false;false;;;;;; -233311;14;0;false;false;0;0;0;;; -233325;1;0;false;false;;;;;; -233326;4;1;false;false;127;0;85;;; -233330;2;0;false;false;0;0;0;;; -233332;4;0;false;false;;;;;; -233336;23;0;false;false;0;0;0;;; -233359;3;0;false;false;;;;;; -233362;1;0;false;false;0;0;0;;; -233363;3;0;false;false;;;;;; -233366;24;0;false;false;0;0;0;;; -233390;3;0;false;false;;;;;; -233393;22;0;false;false;0;0;0;;; -233415;3;0;false;false;;;;;; -233418;2;1;false;false;127;0;85;;; -233420;1;0;false;false;;;;;; -233421;15;0;false;false;0;0;0;;; -233436;1;0;false;false;;;;;; -233437;21;0;false;false;0;0;0;;; -233458;3;0;false;false;;;;;; -233461;14;0;false;false;0;0;0;;; -233475;1;0;false;false;;;;;; -233476;1;0;false;false;0;0;0;;; -233477;1;0;false;false;;;;;; -233478;9;0;false;false;0;0;0;;; -233487;3;0;false;false;;;;;; -233490;46;0;false;false;63;127;95;;; -233536;1;0;false;false;;;;;; -233537;19;0;false;false;0;0;0;;; -233556;3;0;false;false;;;;;; -233559;5;1;false;false;127;0;85;;; -233564;10;0;false;false;0;0;0;;; -233574;2;0;false;false;;;;;; -233576;1;0;false;false;0;0;0;;; -233577;2;0;false;false;;;;;; -233579;3;0;false;false;63;95;191;;; -233582;3;0;false;false;;;;;; -233585;1;0;false;false;63;95;191;;; -233586;1;0;false;false;;;;;; -233587;5;1;false;false;127;159;191;;; -233592;45;0;false;false;63;95;191;;; -233637;3;0;false;false;;;;;; -233640;2;0;false;false;63;95;191;;; -233642;2;0;false;false;;;;;; -233644;6;1;false;false;127;0;85;;; -233650;1;0;false;false;;;;;; -233651;4;1;false;false;127;0;85;;; -233655;1;0;false;false;;;;;; -233656;19;0;false;false;0;0;0;;; -233675;1;0;false;false;;;;;; -233676;6;0;false;false;0;0;0;;; -233682;1;0;false;false;;;;;; -233683;1;0;false;false;0;0;0;;; -233684;3;0;false;false;;;;;; -233687;14;0;false;false;0;0;0;;; -233701;3;0;false;false;;;;;; -233704;10;0;false;false;0;0;0;;; -233714;1;0;false;false;;;;;; -233715;1;0;false;false;0;0;0;;; -233716;1;0;false;false;;;;;; -233717;6;0;false;false;0;0;0;;; -233723;3;0;false;false;;;;;; -233726;5;1;false;false;127;0;85;;; -233731;32;0;false;false;0;0;0;;; -233763;3;0;false;false;;;;;; -233766;9;0;false;false;0;0;0;;; -233775;2;0;false;false;;;;;; -233777;1;0;false;false;0;0;0;;; -233778;2;0;false;false;;;;;; -233780;3;0;false;false;63;95;191;;; -233783;4;0;false;false;;;;;; -233787;1;0;false;false;63;95;191;;; -233788;1;0;false;false;;;;;; -233789;4;0;false;false;63;95;191;;; -233793;1;0;false;false;;;;;; -233794;3;0;false;false;63;95;191;;; -233797;1;0;false;false;;;;;; -233798;10;0;false;false;63;95;191;;; -233808;1;0;false;false;;;;;; -233809;6;0;false;false;63;95;191;;; -233815;1;0;false;false;;;;;; -233816;6;0;false;false;63;95;191;;; -233822;1;0;false;false;;;;;; -233823;8;0;false;false;63;95;191;;; -233831;1;0;false;false;;;;;; -233832;2;0;false;false;63;95;191;;; -233834;1;0;false;false;;;;;; -233835;3;0;false;false;63;95;191;;; -233838;1;0;false;false;;;;;; -233839;5;0;false;false;63;95;191;;; -233844;1;0;false;false;;;;;; -233845;2;0;false;false;63;95;191;;; -233847;1;0;false;false;;;;;; -233848;3;0;false;false;63;95;191;;; -233851;1;0;false;false;;;;;; -233852;5;0;false;false;63;95;191;;; -233857;3;0;false;false;;;;;; -233860;1;0;false;false;63;95;191;;; -233861;1;0;false;false;;;;;; -233862;2;0;false;false;63;95;191;;; -233864;1;0;false;false;;;;;; -233865;7;0;false;false;63;95;191;;; -233872;1;0;false;false;;;;;; -233873;2;0;false;false;63;95;191;;; -233875;1;0;false;false;;;;;; -233876;5;0;false;false;63;95;191;;; -233881;1;0;false;false;;;;;; -233882;2;0;false;false;63;95;191;;; -233884;1;0;false;false;;;;;; -233885;2;0;false;false;63;95;191;;; -233887;1;0;false;false;;;;;; -233888;4;0;false;false;63;95;191;;; -233892;1;0;false;false;;;;;; -233893;4;0;false;false;63;95;191;;; -233897;3;0;false;false;;;;;; -233900;1;0;false;false;63;95;191;;; -233901;1;0;false;false;;;;;; -233902;3;0;false;false;127;127;159;;; -233905;3;0;false;false;;;;;; -233908;1;0;false;false;63;95;191;;; -233909;1;0;false;false;;;;;; -233910;3;0;false;false;127;127;159;;; -233913;5;0;false;false;63;95;191;;; -233918;4;0;false;false;127;127;159;;; -233922;1;0;false;false;;;;;; -233923;3;0;false;false;63;95;191;;; -233926;1;0;false;false;;;;;; -233927;10;0;false;false;63;95;191;;; -233937;1;0;false;false;;;;;; -233938;5;0;false;false;63;95;191;;; -233943;1;0;false;false;;;;;; -233944;2;0;false;false;63;95;191;;; -233946;1;0;false;false;;;;;; -233947;5;0;false;false;63;95;191;;; -233952;1;0;false;false;;;;;; -233953;2;0;false;false;63;95;191;;; -233955;1;0;false;false;;;;;; -233956;1;0;false;false;63;95;191;;; -233957;1;0;false;false;;;;;; -233958;4;0;false;false;63;95;191;;; -233962;1;0;false;false;;;;;; -233963;3;0;false;false;63;95;191;;; -233966;1;0;false;false;;;;;; -233967;4;0;false;false;63;95;191;;; -233971;1;0;false;false;;;;;; -233972;2;0;false;false;63;95;191;;; -233974;1;0;false;false;;;;;; -233975;3;0;false;false;63;95;191;;; -233978;1;0;false;false;;;;;; -233979;2;0;false;false;63;95;191;;; -233981;1;0;false;false;;;;;; -233982;3;0;false;false;63;95;191;;; -233985;4;0;false;false;;;;;; -233989;1;0;false;false;63;95;191;;; -233990;1;0;false;false;;;;;; -233991;7;0;false;false;63;95;191;;; -233998;3;0;false;false;;;;;; -234001;1;0;false;false;63;95;191;;; -234002;1;0;false;false;;;;;; -234003;4;0;false;false;127;127;159;;; -234007;3;0;false;false;;;;;; -234010;1;0;false;false;63;95;191;;; -234011;3;0;false;false;;;;;; -234014;1;0;false;false;63;95;191;;; -234015;1;0;false;false;;;;;; -234016;7;1;false;false;127;159;191;;; -234023;6;0;false;false;63;95;191;;; -234029;1;0;false;false;;;;;; -234030;10;0;false;false;63;95;191;;; -234040;1;0;false;false;;;;;; -234041;6;0;false;false;63;95;191;;; -234047;1;0;false;false;;;;;; -234048;6;0;false;false;63;95;191;;; -234054;1;0;false;false;;;;;; -234055;8;0;false;false;63;95;191;;; -234063;1;0;false;false;;;;;; -234064;2;0;false;false;63;95;191;;; -234066;1;0;false;false;;;;;; -234067;3;0;false;false;63;95;191;;; -234070;1;0;false;false;;;;;; -234071;5;0;false;false;63;95;191;;; -234076;4;0;false;false;;;;;; -234080;1;0;false;false;63;95;191;;; -234081;2;0;false;false;;;;;; -234083;2;0;false;false;63;95;191;;; -234085;1;0;false;false;;;;;; -234086;3;0;false;false;63;95;191;;; -234089;1;0;false;false;;;;;; -234090;5;0;false;false;63;95;191;;; -234095;1;0;false;false;;;;;; -234096;8;0;false;false;63;95;191;;; -234104;1;0;false;false;;;;;; -234105;2;0;false;false;63;95;191;;; -234107;1;0;false;false;;;;;; -234108;9;0;false;false;63;95;191;;; -234117;1;0;false;false;;;;;; -234118;10;0;false;false;63;95;191;;; -234128;1;0;false;false;;;;;; -234129;8;0;false;false;63;95;191;;; -234137;1;0;false;false;;;;;; -234138;2;0;false;false;63;95;191;;; -234140;1;0;false;false;;;;;; -234141;2;0;false;false;63;95;191;;; -234143;1;0;false;false;;;;;; -234144;2;0;false;false;63;95;191;;; -234146;4;0;false;false;;;;;; -234150;1;0;false;false;63;95;191;;; -234151;2;0;false;false;;;;;; -234153;5;0;false;false;63;95;191;;; -234158;1;0;false;false;;;;;; -234159;2;0;false;false;63;95;191;;; -234161;1;0;false;false;;;;;; -234162;1;0;false;false;63;95;191;;; -234163;1;0;false;false;;;;;; -234164;3;0;false;false;63;95;191;;; -234167;1;0;false;false;;;;;; -234168;7;0;false;false;63;95;191;;; -234175;1;0;false;false;;;;;; -234176;2;0;false;false;63;95;191;;; -234178;1;0;false;false;;;;;; -234179;3;0;false;false;63;95;191;;; -234182;1;0;false;false;;;;;; -234183;9;0;false;false;63;95;191;;; -234192;1;0;false;false;;;;;; -234193;2;0;false;false;63;95;191;;; -234195;1;0;false;false;;;;;; -234196;1;0;false;false;63;95;191;;; -234197;1;0;false;false;;;;;; -234198;1;0;false;false;63;95;191;;; -234199;1;0;false;false;;;;;; -234200;1;0;false;false;63;95;191;;; -234201;1;0;false;false;;;;;; -234202;3;0;false;false;63;95;191;;; -234205;1;0;false;false;;;;;; -234206;7;0;false;false;63;95;191;;; -234213;1;0;false;false;;;;;; -234214;2;0;false;false;63;95;191;;; -234216;1;0;false;false;;;;;; -234217;9;0;false;false;63;95;191;;; -234226;3;0;false;false;;;;;; -234229;1;0;false;false;63;95;191;;; -234230;1;0;false;false;;;;;; -234231;11;1;false;false;127;159;191;;; -234242;12;0;false;false;63;95;191;;; -234254;1;0;false;false;;;;;; -234255;4;0;false;false;127;127;159;;; -234259;3;0;false;false;;;;;; -234262;1;0;false;false;63;95;191;;; -234263;4;0;false;false;;;;;; -234267;4;0;false;false;127;127;159;;; -234271;21;0;false;false;63;95;191;;; -234292;1;0;false;false;;;;;; -234293;1;0;false;false;127;127;159;;; -234294;1;0;false;false;;;;;; -234295;2;0;false;false;63;95;191;;; -234297;1;0;false;false;;;;;; -234298;3;0;false;false;63;95;191;;; -234301;1;0;false;false;;;;;; -234302;8;0;false;false;63;95;191;;; -234310;1;0;false;false;;;;;; -234311;3;0;false;false;63;95;191;;; -234314;1;0;false;false;;;;;; -234315;4;0;false;false;63;95;191;;; -234319;1;0;false;false;;;;;; -234320;8;0;false;false;63;95;191;;; -234328;5;0;false;false;127;127;159;;; -234333;3;0;false;false;;;;;; -234336;1;0;false;false;63;95;191;;; -234337;4;0;false;false;;;;;; -234341;4;0;false;false;127;127;159;;; -234345;27;0;false;false;63;95;191;;; -234372;1;0;false;false;;;;;; -234373;1;0;false;false;127;127;159;;; -234374;1;0;false;false;;;;;; -234375;2;0;false;false;63;95;191;;; -234377;1;0;false;false;;;;;; -234378;3;0;false;false;63;95;191;;; -234381;1;0;false;false;;;;;; -234382;6;0;false;false;63;95;191;;; -234388;1;0;false;false;;;;;; -234389;4;0;false;false;63;95;191;;; -234393;1;0;false;false;;;;;; -234394;3;0;false;false;63;95;191;;; -234397;1;0;false;false;;;;;; -234398;6;0;false;false;63;95;191;;; -234404;1;0;false;false;;;;;; -234405;4;0;false;false;63;95;191;;; -234409;1;0;false;false;;;;;; -234410;7;0;false;false;63;95;191;;; -234417;1;0;false;false;;;;;; -234418;3;0;false;false;63;95;191;;; -234421;1;0;false;false;;;;;; -234422;8;0;false;false;63;95;191;;; -234430;5;0;false;false;127;127;159;;; -234435;3;0;false;false;;;;;; -234438;1;0;false;false;63;95;191;;; -234439;1;0;false;false;;;;;; -234440;5;0;false;false;127;127;159;;; -234445;3;0;false;false;;;;;; -234448;2;0;false;false;63;95;191;;; -234450;2;0;false;false;;;;;; -234452;6;1;false;false;127;0;85;;; -234458;1;0;false;false;;;;;; -234459;4;1;false;false;127;0;85;;; -234463;1;0;false;false;;;;;; -234464;19;0;false;false;0;0;0;;; -234483;3;1;false;false;127;0;85;;; -234486;1;0;false;false;;;;;; -234487;7;0;false;false;0;0;0;;; -234494;1;0;false;false;;;;;; -234495;1;0;false;false;0;0;0;;; -234496;3;0;false;false;;;;;; -234499;14;0;false;false;0;0;0;;; -234513;3;0;false;false;;;;;; -234516;3;1;false;false;127;0;85;;; -234519;1;0;false;false;;;;;; -234520;15;0;false;false;0;0;0;;; -234535;1;0;false;false;;;;;; -234536;1;0;false;false;0;0;0;;; -234537;1;0;false;false;;;;;; -234538;22;0;false;false;0;0;0;;; -234560;3;0;false;false;;;;;; -234563;2;1;false;false;127;0;85;;; -234565;1;0;false;false;;;;;; -234566;15;0;false;false;0;0;0;;; -234581;1;0;false;false;;;;;; -234582;2;0;false;false;0;0;0;;; -234584;1;0;false;false;;;;;; -234585;2;0;false;false;0;0;0;;; -234587;1;0;false;false;;;;;; -234588;1;0;false;false;0;0;0;;; -234589;4;0;false;false;;;;;; -234593;6;1;false;false;127;0;85;;; -234599;1;0;false;false;0;0;0;;; -234600;3;0;false;false;;;;;; -234603;1;0;false;false;0;0;0;;; -234604;4;0;false;false;;;;;; -234608;2;1;false;false;127;0;85;;; -234610;1;0;false;false;;;;;; -234611;7;0;false;false;0;0;0;;; -234618;1;0;false;false;;;;;; -234619;1;0;false;false;0;0;0;;; -234620;1;0;false;false;;;;;; -234621;2;0;false;false;0;0;0;;; -234623;1;0;false;false;;;;;; -234624;1;0;false;false;0;0;0;;; -234625;4;0;false;false;;;;;; -234629;6;0;false;false;0;0;0;;; -234635;1;0;false;false;;;;;; -234636;1;0;false;false;0;0;0;;; -234637;1;0;false;false;;;;;; -234638;2;0;false;false;0;0;0;;; -234640;3;0;false;false;;;;;; -234643;1;0;false;false;0;0;0;;; -234644;3;0;false;false;;;;;; -234647;6;0;false;false;0;0;0;;; -234653;1;0;false;false;;;;;; -234654;2;0;false;false;0;0;0;;; -234656;1;0;false;false;;;;;; -234657;25;0;false;false;0;0;0;;; -234682;3;0;false;false;;;;;; -234685;59;0;false;false;63;127;95;;; -234744;1;0;false;false;;;;;; -234745;46;0;false;false;63;127;95;;; -234791;1;0;false;false;;;;;; -234792;61;0;false;false;63;127;95;;; -234853;1;0;false;false;;;;;; -234854;29;0;false;false;63;127;95;;; -234883;1;0;false;false;;;;;; -234884;2;1;false;false;127;0;85;;; -234886;1;0;false;false;;;;;; -234887;16;0;false;false;0;0;0;;; -234903;1;0;false;false;;;;;; -234904;1;0;false;false;0;0;0;;; -234905;1;0;false;false;;;;;; -234906;2;0;false;false;0;0;0;;; -234908;1;0;false;false;;;;;; -234909;1;0;false;false;0;0;0;;; -234910;4;0;false;false;;;;;; -234914;3;1;false;false;127;0;85;;; -234917;1;0;false;false;;;;;; -234918;5;0;false;false;0;0;0;;; -234923;1;0;false;false;;;;;; -234924;1;0;false;false;0;0;0;;; -234925;1;0;false;false;;;;;; -234926;21;0;false;false;0;0;0;;; -234947;4;0;false;false;;;;;; -234951;62;0;false;false;63;127;95;;; -235013;2;0;false;false;;;;;; -235015;63;0;false;false;63;127;95;;; -235078;2;0;false;false;;;;;; -235080;31;0;false;false;63;127;95;;; -235111;2;0;false;false;;;;;; -235113;2;1;false;false;127;0;85;;; -235115;1;0;false;false;;;;;; -235116;7;0;false;false;0;0;0;;; -235123;1;0;false;false;;;;;; -235124;1;0;false;false;0;0;0;;; -235125;1;0;false;false;;;;;; -235126;5;0;false;false;0;0;0;;; -235131;1;0;false;false;;;;;; -235132;1;0;false;false;0;0;0;;; -235133;1;0;false;false;;;;;; -235134;16;0;false;false;0;0;0;;; -235150;1;0;false;false;;;;;; -235151;1;0;false;false;0;0;0;;; -235152;5;0;false;false;;;;;; -235157;6;0;false;false;0;0;0;;; -235163;1;0;false;false;;;;;; -235164;1;0;false;false;0;0;0;;; -235165;1;0;false;false;;;;;; -235166;11;0;false;false;0;0;0;;; -235177;1;0;false;false;;;;;; -235178;5;0;false;false;0;0;0;;; -235183;1;0;false;false;;;;;; -235184;1;0;false;false;0;0;0;;; -235185;1;0;false;false;;;;;; -235186;17;0;false;false;0;0;0;;; -235203;4;0;false;false;;;;;; -235207;1;0;false;false;0;0;0;;; -235208;3;0;false;false;;;;;; -235211;1;0;false;false;0;0;0;;; -235212;3;0;false;false;;;;;; -235215;26;0;false;false;0;0;0;;; -235241;1;0;false;false;;;;;; -235242;1;0;false;false;0;0;0;;; -235243;1;0;false;false;;;;;; -235244;24;0;false;false;0;0;0;;; -235268;2;0;false;false;;;;;; -235270;1;0;false;false;0;0;0;;; -235271;2;0;false;false;;;;;; -235273;3;0;false;false;63;95;191;;; -235276;4;0;false;false;;;;;; -235280;1;0;false;false;63;95;191;;; -235281;1;0;false;false;;;;;; -235282;4;0;false;false;63;95;191;;; -235286;1;0;false;false;;;;;; -235287;3;0;false;false;63;95;191;;; -235290;1;0;false;false;;;;;; -235291;10;0;false;false;63;95;191;;; -235301;1;0;false;false;;;;;; -235302;5;0;false;false;63;95;191;;; -235307;1;0;false;false;;;;;; -235308;6;0;false;false;63;95;191;;; -235314;1;0;false;false;;;;;; -235315;8;0;false;false;63;95;191;;; -235323;1;0;false;false;;;;;; -235324;2;0;false;false;63;95;191;;; -235326;1;0;false;false;;;;;; -235327;3;0;false;false;63;95;191;;; -235330;1;0;false;false;;;;;; -235331;5;0;false;false;63;95;191;;; -235336;1;0;false;false;;;;;; -235337;2;0;false;false;63;95;191;;; -235339;1;0;false;false;;;;;; -235340;3;0;false;false;63;95;191;;; -235343;1;0;false;false;;;;;; -235344;5;0;false;false;63;95;191;;; -235349;3;0;false;false;;;;;; -235352;1;0;false;false;63;95;191;;; -235353;1;0;false;false;;;;;; -235354;2;0;false;false;63;95;191;;; -235356;1;0;false;false;;;;;; -235357;7;0;false;false;63;95;191;;; -235364;1;0;false;false;;;;;; -235365;2;0;false;false;63;95;191;;; -235367;1;0;false;false;;;;;; -235368;5;0;false;false;63;95;191;;; -235373;1;0;false;false;;;;;; -235374;2;0;false;false;63;95;191;;; -235376;1;0;false;false;;;;;; -235377;2;0;false;false;63;95;191;;; -235379;1;0;false;false;;;;;; -235380;4;0;false;false;63;95;191;;; -235384;1;0;false;false;;;;;; -235385;4;0;false;false;63;95;191;;; -235389;3;0;false;false;;;;;; -235392;1;0;false;false;63;95;191;;; -235393;1;0;false;false;;;;;; -235394;3;0;false;false;127;127;159;;; -235397;3;0;false;false;;;;;; -235400;1;0;false;false;63;95;191;;; -235401;1;0;false;false;;;;;; -235402;3;0;false;false;127;127;159;;; -235405;5;0;false;false;63;95;191;;; -235410;4;0;false;false;127;127;159;;; -235414;1;0;false;false;;;;;; -235415;3;0;false;false;63;95;191;;; -235418;1;0;false;false;;;;;; -235419;10;0;false;false;63;95;191;;; -235429;1;0;false;false;;;;;; -235430;5;0;false;false;63;95;191;;; -235435;1;0;false;false;;;;;; -235436;6;0;false;false;63;95;191;;; -235442;1;0;false;false;;;;;; -235443;2;0;false;false;63;95;191;;; -235445;1;0;false;false;;;;;; -235446;5;0;false;false;63;95;191;;; -235451;1;0;false;false;;;;;; -235452;2;0;false;false;63;95;191;;; -235454;1;0;false;false;;;;;; -235455;1;0;false;false;63;95;191;;; -235456;1;0;false;false;;;;;; -235457;4;0;false;false;63;95;191;;; -235461;1;0;false;false;;;;;; -235462;3;0;false;false;63;95;191;;; -235465;1;0;false;false;;;;;; -235466;4;0;false;false;63;95;191;;; -235470;4;0;false;false;;;;;; -235474;1;0;false;false;63;95;191;;; -235475;1;0;false;false;;;;;; -235476;2;0;false;false;63;95;191;;; -235478;1;0;false;false;;;;;; -235479;3;0;false;false;63;95;191;;; -235482;1;0;false;false;;;;;; -235483;2;0;false;false;63;95;191;;; -235485;1;0;false;false;;;;;; -235486;3;0;false;false;63;95;191;;; -235489;1;0;false;false;;;;;; -235490;7;0;false;false;63;95;191;;; -235497;3;0;false;false;;;;;; -235500;1;0;false;false;63;95;191;;; -235501;1;0;false;false;;;;;; -235502;4;0;false;false;127;127;159;;; -235506;3;0;false;false;;;;;; -235509;1;0;false;false;63;95;191;;; -235510;3;0;false;false;;;;;; -235513;1;0;false;false;63;95;191;;; -235514;1;0;false;false;;;;;; -235515;7;1;false;false;127;159;191;;; -235522;5;0;false;false;63;95;191;;; -235527;1;0;false;false;;;;;; -235528;10;0;false;false;63;95;191;;; -235538;1;0;false;false;;;;;; -235539;5;0;false;false;63;95;191;;; -235544;1;0;false;false;;;;;; -235545;6;0;false;false;63;95;191;;; -235551;1;0;false;false;;;;;; -235552;8;0;false;false;63;95;191;;; -235560;1;0;false;false;;;;;; -235561;2;0;false;false;63;95;191;;; -235563;1;0;false;false;;;;;; -235564;3;0;false;false;63;95;191;;; -235567;1;0;false;false;;;;;; -235568;5;0;false;false;63;95;191;;; -235573;4;0;false;false;;;;;; -235577;1;0;false;false;63;95;191;;; -235578;2;0;false;false;;;;;; -235580;2;0;false;false;63;95;191;;; -235582;1;0;false;false;;;;;; -235583;3;0;false;false;63;95;191;;; -235586;1;0;false;false;;;;;; -235587;5;0;false;false;63;95;191;;; -235592;3;0;false;false;;;;;; -235595;1;0;false;false;63;95;191;;; -235596;1;0;false;false;;;;;; -235597;11;1;false;false;127;159;191;;; -235608;12;0;false;false;63;95;191;;; -235620;1;0;false;false;;;;;; -235621;4;0;false;false;127;127;159;;; -235625;3;0;false;false;;;;;; -235628;1;0;false;false;63;95;191;;; -235629;4;0;false;false;;;;;; -235633;4;0;false;false;127;127;159;;; -235637;21;0;false;false;63;95;191;;; -235658;1;0;false;false;;;;;; -235659;1;0;false;false;127;127;159;;; -235660;1;0;false;false;;;;;; -235661;2;0;false;false;63;95;191;;; -235663;1;0;false;false;;;;;; -235664;3;0;false;false;63;95;191;;; -235667;1;0;false;false;;;;;; -235668;8;0;false;false;63;95;191;;; -235676;1;0;false;false;;;;;; -235677;3;0;false;false;63;95;191;;; -235680;1;0;false;false;;;;;; -235681;4;0;false;false;63;95;191;;; -235685;1;0;false;false;;;;;; -235686;8;0;false;false;63;95;191;;; -235694;5;0;false;false;127;127;159;;; -235699;3;0;false;false;;;;;; -235702;1;0;false;false;63;95;191;;; -235703;4;0;false;false;;;;;; -235707;4;0;false;false;127;127;159;;; -235711;27;0;false;false;63;95;191;;; -235738;1;0;false;false;;;;;; -235739;1;0;false;false;127;127;159;;; -235740;1;0;false;false;;;;;; -235741;2;0;false;false;63;95;191;;; -235743;1;0;false;false;;;;;; -235744;3;0;false;false;63;95;191;;; -235747;1;0;false;false;;;;;; -235748;6;0;false;false;63;95;191;;; -235754;1;0;false;false;;;;;; -235755;4;0;false;false;63;95;191;;; -235759;1;0;false;false;;;;;; -235760;3;0;false;false;63;95;191;;; -235763;1;0;false;false;;;;;; -235764;6;0;false;false;63;95;191;;; -235770;1;0;false;false;;;;;; -235771;4;0;false;false;63;95;191;;; -235775;1;0;false;false;;;;;; -235776;7;0;false;false;63;95;191;;; -235783;1;0;false;false;;;;;; -235784;3;0;false;false;63;95;191;;; -235787;1;0;false;false;;;;;; -235788;8;0;false;false;63;95;191;;; -235796;5;0;false;false;127;127;159;;; -235801;3;0;false;false;;;;;; -235804;1;0;false;false;63;95;191;;; -235805;1;0;false;false;;;;;; -235806;5;0;false;false;127;127;159;;; -235811;3;0;false;false;;;;;; -235814;1;0;false;false;63;95;191;;; -235815;1;0;false;false;;;;;; -235816;7;1;false;false;127;159;191;;; -235823;3;0;false;false;63;95;191;;; -235826;3;0;false;false;;;;;; -235829;2;0;false;false;63;95;191;;; -235831;2;0;false;false;;;;;; -235833;6;1;false;false;127;0;85;;; -235839;1;0;false;false;;;;;; -235840;4;1;false;false;127;0;85;;; -235844;1;0;false;false;;;;;; -235845;19;0;false;false;0;0;0;;; -235864;3;1;false;false;127;0;85;;; -235867;1;0;false;false;;;;;; -235868;6;0;false;false;0;0;0;;; -235874;1;0;false;false;;;;;; -235875;1;0;false;false;0;0;0;;; -235876;3;0;false;false;;;;;; -235879;14;0;false;false;0;0;0;;; -235893;3;0;false;false;;;;;; -235896;3;1;false;false;127;0;85;;; -235899;1;0;false;false;;;;;; -235900;15;0;false;false;0;0;0;;; -235915;1;0;false;false;;;;;; -235916;1;0;false;false;0;0;0;;; -235917;1;0;false;false;;;;;; -235918;22;0;false;false;0;0;0;;; -235940;3;0;false;false;;;;;; -235943;2;1;false;false;127;0;85;;; -235945;1;0;false;false;;;;;; -235946;15;0;false;false;0;0;0;;; -235961;1;0;false;false;;;;;; -235962;2;0;false;false;0;0;0;;; -235964;1;0;false;false;;;;;; -235965;2;0;false;false;0;0;0;;; -235967;1;0;false;false;;;;;; -235968;1;0;false;false;0;0;0;;; -235969;4;0;false;false;;;;;; -235973;6;1;false;false;127;0;85;;; -235979;1;0;false;false;0;0;0;;; -235980;3;0;false;false;;;;;; -235983;1;0;false;false;0;0;0;;; -235984;4;0;false;false;;;;;; -235988;2;1;false;false;127;0;85;;; -235990;1;0;false;false;;;;;; -235991;6;0;false;false;0;0;0;;; -235997;1;0;false;false;;;;;; -235998;1;0;false;false;0;0;0;;; -235999;1;0;false;false;;;;;; -236000;2;0;false;false;0;0;0;;; -236002;1;0;false;false;;;;;; -236003;1;0;false;false;0;0;0;;; -236004;4;0;false;false;;;;;; -236008;5;0;false;false;0;0;0;;; -236013;1;0;false;false;;;;;; -236014;1;0;false;false;0;0;0;;; -236015;1;0;false;false;;;;;; -236016;2;0;false;false;0;0;0;;; -236018;3;0;false;false;;;;;; -236021;1;0;false;false;0;0;0;;; -236022;3;0;false;false;;;;;; -236025;59;0;false;false;63;127;95;;; -236084;1;0;false;false;;;;;; -236085;46;0;false;false;63;127;95;;; -236131;1;0;false;false;;;;;; -236132;61;0;false;false;63;127;95;;; -236193;1;0;false;false;;;;;; -236194;29;0;false;false;63;127;95;;; -236223;1;0;false;false;;;;;; -236224;2;1;false;false;127;0;85;;; -236226;1;0;false;false;;;;;; -236227;16;0;false;false;0;0;0;;; -236243;1;0;false;false;;;;;; -236244;1;0;false;false;0;0;0;;; -236245;1;0;false;false;;;;;; -236246;2;0;false;false;0;0;0;;; -236248;1;0;false;false;;;;;; -236249;1;0;false;false;0;0;0;;; -236250;4;0;false;false;;;;;; -236254;3;1;false;false;127;0;85;;; -236257;1;0;false;false;;;;;; -236258;5;0;false;false;0;0;0;;; -236263;1;0;false;false;;;;;; -236264;1;0;false;false;0;0;0;;; -236265;1;0;false;false;;;;;; -236266;21;0;false;false;0;0;0;;; -236287;4;0;false;false;;;;;; -236291;62;0;false;false;63;127;95;;; -236353;2;0;false;false;;;;;; -236355;63;0;false;false;63;127;95;;; -236418;2;0;false;false;;;;;; -236420;31;0;false;false;63;127;95;;; -236451;2;0;false;false;;;;;; -236453;2;1;false;false;127;0;85;;; -236455;1;0;false;false;;;;;; -236456;6;0;false;false;0;0;0;;; -236462;1;0;false;false;;;;;; -236463;1;0;false;false;0;0;0;;; -236464;1;0;false;false;;;;;; -236465;5;0;false;false;0;0;0;;; -236470;1;0;false;false;;;;;; -236471;1;0;false;false;0;0;0;;; -236472;1;0;false;false;;;;;; -236473;16;0;false;false;0;0;0;;; -236489;1;0;false;false;;;;;; -236490;1;0;false;false;0;0;0;;; -236491;5;0;false;false;;;;;; -236496;5;0;false;false;0;0;0;;; -236501;1;0;false;false;;;;;; -236502;1;0;false;false;0;0;0;;; -236503;1;0;false;false;;;;;; -236504;11;0;false;false;0;0;0;;; -236515;1;0;false;false;;;;;; -236516;5;0;false;false;0;0;0;;; -236521;1;0;false;false;;;;;; -236522;1;0;false;false;0;0;0;;; -236523;1;0;false;false;;;;;; -236524;17;0;false;false;0;0;0;;; -236541;4;0;false;false;;;;;; -236545;1;0;false;false;0;0;0;;; -236546;3;0;false;false;;;;;; -236549;1;0;false;false;0;0;0;;; -236550;3;0;false;false;;;;;; -236553;25;0;false;false;0;0;0;;; -236578;1;0;false;false;;;;;; -236579;1;0;false;false;0;0;0;;; -236580;1;0;false;false;;;;;; -236581;24;0;false;false;0;0;0;;; -236605;2;0;false;false;;;;;; -236607;1;0;false;false;0;0;0;;; -236608;2;0;false;false;;;;;; -236610;3;0;false;false;63;95;191;;; -236613;3;0;false;false;;;;;; -236616;1;0;false;false;63;95;191;;; -236617;1;0;false;false;;;;;; -236618;7;0;false;false;63;95;191;;; -236625;1;0;false;false;;;;;; -236626;3;0;false;false;63;95;191;;; -236629;1;0;false;false;;;;;; -236630;7;0;false;false;63;95;191;;; -236637;1;0;false;false;;;;;; -236638;3;0;false;false;63;95;191;;; -236641;1;0;false;false;;;;;; -236642;3;0;false;false;63;95;191;;; -236645;1;0;false;false;;;;;; -236646;4;0;false;false;63;95;191;;; -236650;1;0;false;false;;;;;; -236651;4;0;false;false;63;95;191;;; -236655;1;0;false;false;;;;;; -236656;2;0;false;false;63;95;191;;; -236658;1;0;false;false;;;;;; -236659;3;0;false;false;63;95;191;;; -236662;1;0;false;false;;;;;; -236663;10;0;false;false;63;95;191;;; -236673;1;0;false;false;;;;;; -236674;6;0;false;false;63;95;191;;; -236680;1;0;false;false;;;;;; -236681;3;0;false;false;63;95;191;;; -236684;4;0;false;false;;;;;; -236688;1;0;false;false;63;95;191;;; -236689;1;0;false;false;;;;;; -236690;2;0;false;false;63;95;191;;; -236692;1;0;false;false;;;;;; -236693;7;0;false;false;63;95;191;;; -236700;1;0;false;false;;;;;; -236701;7;0;false;false;63;95;191;;; -236708;1;0;false;false;;;;;; -236709;5;0;false;false;63;95;191;;; -236714;1;0;false;false;;;;;; -236715;8;0;false;false;63;95;191;;; -236723;3;0;false;false;;;;;; -236726;2;0;false;false;63;95;191;;; -236728;2;0;false;false;;;;;; -236730;4;1;false;false;127;0;85;;; -236734;1;0;false;false;;;;;; -236735;24;0;false;false;0;0;0;;; -236759;1;0;false;false;;;;;; -236760;1;0;false;false;0;0;0;;; -236761;3;0;false;false;;;;;; -236764;9;0;false;false;0;0;0;;; -236773;1;0;false;false;;;;;; -236774;13;0;false;false;0;0;0;;; -236787;1;0;false;false;;;;;; -236788;1;0;false;false;0;0;0;;; -236789;1;0;false;false;;;;;; -236790;19;0;false;false;0;0;0;;; -236809;6;0;false;false;;;;;; -236815;2;1;false;false;127;0;85;;; -236817;1;0;false;false;;;;;; -236818;14;0;false;false;0;0;0;;; -236832;1;0;false;false;;;;;; -236833;2;0;false;false;0;0;0;;; -236835;1;0;false;false;;;;;; -236836;4;1;false;false;127;0;85;;; -236840;1;0;false;false;;;;;; -236841;2;0;false;false;0;0;0;;; -236843;1;0;false;false;;;;;; -236844;27;0;false;false;0;0;0;;; -236871;1;0;false;false;;;;;; -236872;1;0;false;false;0;0;0;;; -236873;4;0;false;false;;;;;; -236877;5;1;false;false;127;0;85;;; -236882;1;0;false;false;;;;;; -236883;3;1;false;false;127;0;85;;; -236886;1;0;false;false;;;;;; -236887;8;0;false;false;0;0;0;;; -236895;1;0;false;false;;;;;; -236896;1;0;false;false;0;0;0;;; -236897;1;0;false;false;;;;;; -236898;2;0;false;false;0;0;0;;; -236900;4;0;false;false;;;;;; -236904;9;0;false;false;0;0;0;;; -236913;1;0;false;false;;;;;; -236914;10;0;false;false;0;0;0;;; -236924;1;0;false;false;;;;;; -236925;1;0;false;false;0;0;0;;; -236926;1;0;false;false;;;;;; -236927;16;0;false;false;0;0;0;;; -236943;4;0;false;false;;;;;; -236947;60;0;false;false;63;127;95;;; -237007;2;0;false;false;;;;;; -237009;65;0;false;false;63;127;95;;; -237074;2;0;false;false;;;;;; -237076;56;0;false;false;63;127;95;;; -237132;2;0;false;false;;;;;; -237134;2;1;false;false;127;0;85;;; -237136;1;0;false;false;;;;;; -237137;17;0;false;false;0;0;0;;; -237154;1;0;false;false;;;;;; -237155;1;0;false;false;0;0;0;;; -237156;1;0;false;false;;;;;; -237157;21;0;false;false;0;0;0;;; -237178;1;0;false;false;;;;;; -237179;1;0;false;false;0;0;0;;; -237180;5;0;false;false;;;;;; -237185;24;0;false;false;0;0;0;;; -237209;6;0;false;false;;;;;; -237215;29;0;false;false;0;0;0;;; -237244;6;0;false;false;;;;;; -237250;27;0;false;false;0;0;0;;; -237277;6;0;false;false;;;;;; -237283;21;0;false;false;0;0;0;;; -237304;7;0;false;false;;;;;; -237311;12;0;false;false;63;127;95;;; -237323;4;0;false;false;;;;;; -237327;16;0;false;false;0;0;0;;; -237343;1;0;false;false;;;;;; -237344;1;0;false;false;0;0;0;;; -237345;1;0;false;false;;;;;; -237346;10;0;false;false;0;0;0;;; -237356;1;0;false;false;;;;;; -237357;1;0;false;false;0;0;0;;; -237358;1;0;false;false;;;;;; -237359;12;0;false;false;0;0;0;;; -237371;1;0;false;false;;;;;; -237372;15;0;false;false;63;127;95;;; -237387;4;0;false;false;;;;;; -237391;29;0;false;false;0;0;0;;; -237420;6;0;false;false;;;;;; -237426;16;0;false;false;0;0;0;;; -237442;1;0;false;false;;;;;; -237443;1;0;false;false;0;0;0;;; -237444;1;0;false;false;;;;;; -237445;10;0;false;false;0;0;0;;; -237455;1;0;false;false;;;;;; -237456;1;0;false;false;0;0;0;;; -237457;1;0;false;false;;;;;; -237458;13;0;false;false;0;0;0;;; -237471;1;0;false;false;;;;;; -237472;14;0;false;false;63;127;95;;; -237486;2;0;false;false;;;;;; -237488;1;0;false;false;0;0;0;;; -237489;4;0;false;false;;;;;; -237493;4;1;false;false;127;0;85;;; -237497;5;0;false;false;;;;;; -237502;2;1;false;false;127;0;85;;; -237504;1;0;false;false;;;;;; -237505;25;0;false;false;0;0;0;;; -237530;1;0;false;false;;;;;; -237531;2;0;false;false;0;0;0;;; -237533;1;0;false;false;;;;;; -237534;8;0;false;false;0;0;0;;; -237542;1;0;false;false;;;;;; -237543;2;0;false;false;0;0;0;;; -237545;1;0;false;false;;;;;; -237546;26;0;false;false;0;0;0;;; -237572;1;0;false;false;;;;;; -237573;2;0;false;false;0;0;0;;; -237575;1;0;false;false;;;;;; -237576;9;0;false;false;0;0;0;;; -237585;1;0;false;false;;;;;; -237586;1;0;false;false;0;0;0;;; -237587;5;0;false;false;;;;;; -237592;24;0;false;false;0;0;0;;; -237616;6;0;false;false;;;;;; -237622;29;0;false;false;0;0;0;;; -237651;6;0;false;false;;;;;; -237657;27;0;false;false;0;0;0;;; -237684;6;0;false;false;;;;;; -237690;9;0;false;false;0;0;0;;; -237699;6;0;false;false;;;;;; -237705;9;0;false;false;0;0;0;;; -237714;6;0;false;false;;;;;; -237720;29;0;false;false;0;0;0;;; -237749;6;0;false;false;;;;;; -237755;10;0;false;false;0;0;0;;; -237765;4;0;false;false;;;;;; -237769;1;0;false;false;0;0;0;;; -237770;3;0;false;false;;;;;; -237773;1;0;false;false;0;0;0;;; -237774;2;0;false;false;;;;;; -237776;1;0;false;false;0;0;0;;; -237777;2;0;false;false;;;;;; -237779;3;0;false;false;63;95;191;;; -237782;4;0;false;false;;;;;; -237786;1;0;false;false;63;95;191;;; -237787;1;0;false;false;;;;;; -237788;4;0;false;false;63;95;191;;; -237792;1;0;false;false;;;;;; -237793;3;0;false;false;63;95;191;;; -237796;1;0;false;false;;;;;; -237797;10;0;false;false;63;95;191;;; -237807;1;0;false;false;;;;;; -237808;5;0;false;false;63;95;191;;; -237813;1;0;false;false;;;;;; -237814;2;0;false;false;63;95;191;;; -237816;1;0;false;false;;;;;; -237817;3;0;false;false;63;95;191;;; -237820;1;0;false;false;;;;;; -237821;9;0;false;false;63;95;191;;; -237830;1;0;false;false;;;;;; -237831;6;0;false;false;63;95;191;;; -237837;3;0;false;false;;;;;; -237840;1;0;false;false;63;95;191;;; -237841;1;0;false;false;;;;;; -237842;3;0;false;false;63;95;191;;; -237845;1;0;false;false;;;;;; -237846;10;0;false;false;63;95;191;;; -237856;1;0;false;false;;;;;; -237857;5;0;false;false;63;95;191;;; -237862;1;0;false;false;;;;;; -237863;2;0;false;false;63;95;191;;; -237865;1;0;false;false;;;;;; -237866;5;0;false;false;63;95;191;;; -237871;1;0;false;false;;;;;; -237872;3;0;false;false;63;95;191;;; -237875;1;0;false;false;;;;;; -237876;3;0;false;false;63;95;191;;; -237879;1;0;false;false;;;;;; -237880;5;0;false;false;63;95;191;;; -237885;1;0;false;false;;;;;; -237886;2;0;false;false;63;95;191;;; -237888;1;0;false;false;;;;;; -237889;3;0;false;false;63;95;191;;; -237892;1;0;false;false;;;;;; -237893;7;0;false;false;63;95;191;;; -237900;1;0;false;false;;;;;; -237901;3;0;false;false;63;95;191;;; -237904;3;0;false;false;;;;;; -237907;1;0;false;false;63;95;191;;; -237908;1;0;false;false;;;;;; -237909;4;0;false;false;63;95;191;;; -237913;1;0;false;false;;;;;; -237914;10;0;false;false;63;95;191;;; -237924;1;0;false;false;;;;;; -237925;6;0;false;false;63;95;191;;; -237931;1;0;false;false;;;;;; -237932;3;0;false;false;63;95;191;;; -237935;1;0;false;false;;;;;; -237936;9;0;false;false;63;95;191;;; -237945;1;0;false;false;;;;;; -237946;4;0;false;false;63;95;191;;; -237950;1;0;false;false;;;;;; -237951;7;0;false;false;63;95;191;;; -237958;1;0;false;false;;;;;; -237959;2;0;false;false;63;95;191;;; -237961;1;0;false;false;;;;;; -237962;7;0;false;false;63;95;191;;; -237969;3;0;false;false;;;;;; -237972;1;0;false;false;63;95;191;;; -237973;1;0;false;false;;;;;; -237974;3;0;false;false;63;95;191;;; -237977;1;0;false;false;;;;;; -237978;4;0;false;false;63;95;191;;; -237982;1;0;false;false;;;;;; -237983;10;0;false;false;63;95;191;;; -237993;1;0;false;false;;;;;; -237994;5;0;false;false;63;95;191;;; -237999;1;0;false;false;;;;;; -238000;2;0;false;false;63;95;191;;; -238002;1;0;false;false;;;;;; -238003;7;0;false;false;63;95;191;;; -238010;1;0;false;false;;;;;; -238011;2;0;false;false;63;95;191;;; -238013;1;0;false;false;;;;;; -238014;1;0;false;false;63;95;191;;; -238015;1;0;false;false;;;;;; -238016;10;0;false;false;63;95;191;;; -238026;1;0;false;false;;;;;; -238027;8;0;false;false;63;95;191;;; -238035;1;0;false;false;;;;;; -238036;3;0;false;false;63;95;191;;; -238039;4;0;false;false;;;;;; -238043;1;0;false;false;63;95;191;;; -238044;1;0;false;false;;;;;; -238045;4;0;false;false;63;95;191;;; -238049;1;0;false;false;;;;;; -238050;10;0;false;false;63;95;191;;; -238060;1;0;false;false;;;;;; -238061;6;0;false;false;63;95;191;;; -238067;1;0;false;false;;;;;; -238068;6;0;false;false;63;95;191;;; -238074;1;0;false;false;;;;;; -238075;3;0;false;false;63;95;191;;; -238078;1;0;false;false;;;;;; -238079;2;0;false;false;63;95;191;;; -238081;1;0;false;false;;;;;; -238082;6;0;false;false;63;95;191;;; -238088;1;0;false;false;;;;;; -238089;2;0;false;false;63;95;191;;; -238091;1;0;false;false;;;;;; -238092;1;0;false;false;63;95;191;;; -238093;1;0;false;false;;;;;; -238094;22;0;false;false;63;95;191;;; -238116;4;0;false;false;;;;;; -238120;1;0;false;false;63;95;191;;; -238121;1;0;false;false;;;;;; -238122;3;0;false;false;63;95;191;;; -238125;1;0;false;false;;;;;; -238126;4;0;false;false;63;95;191;;; -238130;1;0;false;false;;;;;; -238131;3;0;false;false;63;95;191;;; -238134;1;0;false;false;;;;;; -238135;5;0;false;false;63;95;191;;; -238140;1;0;false;false;;;;;; -238141;3;0;false;false;63;95;191;;; -238144;1;0;false;false;;;;;; -238145;8;0;false;false;63;95;191;;; -238153;1;0;false;false;;;;;; -238154;9;0;false;false;63;95;191;;; -238163;1;0;false;false;;;;;; -238164;3;0;false;false;63;95;191;;; -238167;1;0;false;false;;;;;; -238168;4;0;false;false;63;95;191;;; -238172;1;0;false;false;;;;;; -238173;12;0;false;false;63;95;191;;; -238185;3;0;false;false;;;;;; -238188;1;0;false;false;63;95;191;;; -238189;1;0;false;false;;;;;; -238190;3;0;false;false;127;127;159;;; -238193;3;0;false;false;;;;;; -238196;1;0;false;false;63;95;191;;; -238197;1;0;false;false;;;;;; -238198;4;0;false;false;63;95;191;;; -238202;1;0;false;false;;;;;; -238203;10;0;false;false;63;95;191;;; -238213;1;0;false;false;;;;;; -238214;6;0;false;false;63;95;191;;; -238220;1;0;false;false;;;;;; -238221;3;0;false;false;63;95;191;;; -238224;1;0;false;false;;;;;; -238225;10;0;false;false;63;95;191;;; -238235;1;0;false;false;;;;;; -238236;8;0;false;false;63;95;191;;; -238244;1;0;false;false;;;;;; -238245;2;0;false;false;63;95;191;;; -238247;1;0;false;false;;;;;; -238248;3;0;false;false;63;95;191;;; -238251;1;0;false;false;;;;;; -238252;4;0;false;false;63;95;191;;; -238256;1;0;false;false;;;;;; -238257;5;0;false;false;63;95;191;;; -238262;1;0;false;false;;;;;; -238263;3;0;false;false;63;95;191;;; -238266;1;0;false;false;;;;;; -238267;3;0;false;false;63;95;191;;; -238270;4;0;false;false;;;;;; -238274;1;0;false;false;63;95;191;;; -238275;1;0;false;false;;;;;; -238276;4;0;false;false;63;95;191;;; -238280;1;0;false;false;;;;;; -238281;5;0;false;false;63;95;191;;; -238286;1;0;false;false;;;;;; -238287;4;0;false;false;63;95;191;;; -238291;1;0;false;false;;;;;; -238292;2;0;false;false;63;95;191;;; -238294;1;0;false;false;;;;;; -238295;9;0;false;false;63;95;191;;; -238304;1;0;false;false;;;;;; -238305;2;0;false;false;63;95;191;;; -238307;1;0;false;false;;;;;; -238308;4;0;false;false;63;95;191;;; -238312;1;0;false;false;;;;;; -238313;6;0;false;false;63;95;191;;; -238319;1;0;false;false;;;;;; -238320;5;0;false;false;63;95;191;;; -238325;3;0;false;false;;;;;; -238328;1;0;false;false;63;95;191;;; -238329;1;0;false;false;;;;;; -238330;6;0;false;false;63;95;191;;; -238336;1;0;false;false;;;;;; -238337;4;0;false;false;63;95;191;;; -238341;1;0;false;false;;;;;; -238342;8;0;false;false;63;95;191;;; -238350;1;0;false;false;;;;;; -238351;4;0;false;false;63;95;191;;; -238355;1;0;false;false;;;;;; -238356;6;0;false;false;63;95;191;;; -238362;1;0;false;false;;;;;; -238363;5;0;false;false;63;95;191;;; -238368;1;0;false;false;;;;;; -238369;3;0;false;false;63;95;191;;; -238372;1;0;false;false;;;;;; -238373;8;0;false;false;63;95;191;;; -238381;1;0;false;false;;;;;; -238382;2;0;false;false;63;95;191;;; -238384;1;0;false;false;;;;;; -238385;8;0;false;false;63;95;191;;; -238393;1;0;false;false;;;;;; -238394;3;0;false;false;63;95;191;;; -238397;1;0;false;false;;;;;; -238398;4;0;false;false;63;95;191;;; -238402;4;0;false;false;;;;;; -238406;1;0;false;false;63;95;191;;; -238407;1;0;false;false;;;;;; -238408;10;0;false;false;63;95;191;;; -238418;1;0;false;false;;;;;; -238419;6;0;false;false;63;95;191;;; -238425;1;0;false;false;;;;;; -238426;4;0;false;false;63;95;191;;; -238430;1;0;false;false;;;;;; -238431;3;0;false;false;63;95;191;;; -238434;1;0;false;false;;;;;; -238435;10;0;false;false;63;95;191;;; -238445;1;0;false;false;;;;;; -238446;4;0;false;false;63;95;191;;; -238450;1;0;false;false;;;;;; -238451;3;0;false;false;63;95;191;;; -238454;1;0;false;false;;;;;; -238455;5;0;false;false;63;95;191;;; -238460;1;0;false;false;;;;;; -238461;5;0;false;false;63;95;191;;; -238466;1;0;false;false;;;;;; -238467;3;0;false;false;63;95;191;;; -238470;1;0;false;false;;;;;; -238471;6;0;false;false;63;95;191;;; -238477;4;0;false;false;;;;;; -238481;1;0;false;false;63;95;191;;; -238482;1;0;false;false;;;;;; -238483;4;0;false;false;63;95;191;;; -238487;1;0;false;false;;;;;; -238488;6;0;false;false;63;95;191;;; -238494;1;0;false;false;;;;;; -238495;4;0;false;false;63;95;191;;; -238499;1;0;false;false;;;;;; -238500;5;0;false;false;63;95;191;;; -238505;1;0;false;false;;;;;; -238506;10;0;false;false;63;95;191;;; -238516;1;0;false;false;;;;;; -238517;5;0;false;false;63;95;191;;; -238522;1;0;false;false;;;;;; -238523;2;0;false;false;63;95;191;;; -238525;1;0;false;false;;;;;; -238526;6;0;false;false;63;95;191;;; -238532;1;0;false;false;;;;;; -238533;4;0;false;false;63;95;191;;; -238537;1;0;false;false;;;;;; -238538;2;0;false;false;63;95;191;;; -238540;1;0;false;false;;;;;; -238541;7;0;false;false;63;95;191;;; -238548;1;0;false;false;;;;;; -238549;2;0;false;false;63;95;191;;; -238551;4;0;false;false;;;;;; -238555;1;0;false;false;63;95;191;;; -238556;1;0;false;false;;;;;; -238557;9;0;false;false;63;95;191;;; -238566;1;0;false;false;;;;;; -238567;4;0;false;false;63;95;191;;; -238571;1;0;false;false;;;;;; -238572;3;0;false;false;63;95;191;;; -238575;1;0;false;false;;;;;; -238576;5;0;false;false;63;95;191;;; -238581;1;0;false;false;;;;;; -238582;9;0;false;false;63;95;191;;; -238591;1;0;false;false;;;;;; -238592;2;0;false;false;63;95;191;;; -238594;1;0;false;false;;;;;; -238595;1;0;false;false;63;95;191;;; -238596;1;0;false;false;;;;;; -238597;4;0;false;false;63;95;191;;; -238601;1;0;false;false;;;;;; -238602;2;0;false;false;63;95;191;;; -238604;1;0;false;false;;;;;; -238605;3;0;false;false;63;95;191;;; -238608;1;0;false;false;;;;;; -238609;4;0;false;false;63;95;191;;; -238613;1;0;false;false;;;;;; -238614;3;0;false;false;63;95;191;;; -238617;1;0;false;false;;;;;; -238618;9;0;false;false;63;95;191;;; -238627;1;0;false;false;;;;;; -238628;3;0;false;false;63;95;191;;; -238631;4;0;false;false;;;;;; -238635;1;0;false;false;63;95;191;;; -238636;1;0;false;false;;;;;; -238637;4;0;false;false;63;95;191;;; -238641;1;0;false;false;;;;;; -238642;10;0;false;false;63;95;191;;; -238652;4;0;false;false;;;;;; -238656;1;0;false;false;63;95;191;;; -238657;1;0;false;false;;;;;; -238658;4;0;false;false;127;127;159;;; -238662;3;0;false;false;;;;;; -238665;1;0;false;false;63;95;191;;; -238666;1;0;false;false;;;;;; -238667;3;0;false;false;127;127;159;;; -238670;3;0;false;false;;;;;; -238673;1;0;false;false;63;95;191;;; -238674;1;0;false;false;;;;;; -238675;4;0;false;false;63;95;191;;; -238679;1;0;false;false;;;;;; -238680;3;0;false;false;63;95;191;;; -238683;1;0;false;false;;;;;; -238684;5;0;false;false;63;95;191;;; -238689;1;0;false;false;;;;;; -238690;3;0;false;false;63;95;191;;; -238693;1;0;false;false;;;;;; -238694;6;0;false;false;63;95;191;;; -238700;1;0;false;false;;;;;; -238701;2;0;false;false;63;95;191;;; -238703;1;0;false;false;;;;;; -238704;8;0;false;false;63;95;191;;; -238712;1;0;false;false;;;;;; -238713;1;0;false;false;63;95;191;;; -238714;1;0;false;false;;;;;; -238715;4;0;false;false;63;95;191;;; -238719;1;0;false;false;;;;;; -238720;10;0;false;false;63;95;191;;; -238730;1;0;false;false;;;;;; -238731;3;0;false;false;63;95;191;;; -238734;1;0;false;false;;;;;; -238735;3;0;false;false;63;95;191;;; -238738;1;0;false;false;;;;;; -238739;4;0;false;false;63;95;191;;; -238743;4;0;false;false;;;;;; -238747;1;0;false;false;63;95;191;;; -238748;1;0;false;false;;;;;; -238749;10;0;false;false;63;95;191;;; -238759;1;0;false;false;;;;;; -238760;5;0;false;false;63;95;191;;; -238765;1;0;false;false;;;;;; -238766;10;0;false;false;63;95;191;;; -238776;1;0;false;false;;;;;; -238777;3;0;false;false;63;95;191;;; -238780;1;0;false;false;;;;;; -238781;3;0;false;false;63;95;191;;; -238784;1;0;false;false;;;;;; -238785;5;0;false;false;63;95;191;;; -238790;1;0;false;false;;;;;; -238791;2;0;false;false;63;95;191;;; -238793;1;0;false;false;;;;;; -238794;3;0;false;false;63;95;191;;; -238797;1;0;false;false;;;;;; -238798;6;0;false;false;63;95;191;;; -238804;1;0;false;false;;;;;; -238805;4;0;false;false;63;95;191;;; -238809;1;0;false;false;;;;;; -238810;2;0;false;false;63;95;191;;; -238812;1;0;false;false;;;;;; -238813;8;0;false;false;63;95;191;;; -238821;4;0;false;false;;;;;; -238825;1;0;false;false;63;95;191;;; -238826;1;0;false;false;;;;;; -238827;3;0;false;false;63;95;191;;; -238830;1;0;false;false;;;;;; -238831;3;0;false;false;63;95;191;;; -238834;1;0;false;false;;;;;; -238835;5;0;false;false;63;95;191;;; -238840;1;0;false;false;;;;;; -238841;4;0;false;false;63;95;191;;; -238845;1;0;false;false;;;;;; -238846;7;0;false;false;63;95;191;;; -238853;1;0;false;false;;;;;; -238854;4;0;false;false;63;95;191;;; -238858;1;0;false;false;;;;;; -238859;10;0;false;false;63;95;191;;; -238869;1;0;false;false;;;;;; -238870;6;0;false;false;63;95;191;;; -238876;1;0;false;false;;;;;; -238877;4;0;false;false;63;95;191;;; -238881;1;0;false;false;;;;;; -238882;6;0;false;false;63;95;191;;; -238888;1;0;false;false;;;;;; -238889;10;0;false;false;63;95;191;;; -238899;4;0;false;false;;;;;; -238903;1;0;false;false;63;95;191;;; -238904;1;0;false;false;;;;;; -238905;4;0;false;false;127;127;159;;; -238909;3;0;false;false;;;;;; -238912;1;0;false;false;63;95;191;;; -238913;4;0;false;false;;;;;; -238917;1;0;false;false;63;95;191;;; -238918;1;0;false;false;;;;;; -238919;7;1;false;false;127;159;191;;; -238926;9;0;false;false;63;95;191;;; -238935;1;0;false;false;;;;;; -238936;5;0;false;false;63;95;191;;; -238941;1;0;false;false;;;;;; -238942;4;0;false;false;63;95;191;;; -238946;1;0;false;false;;;;;; -238947;3;0;false;false;63;95;191;;; -238950;1;0;false;false;;;;;; -238951;5;0;false;false;63;95;191;;; -238956;1;0;false;false;;;;;; -238957;2;0;false;false;63;95;191;;; -238959;1;0;false;false;;;;;; -238960;7;0;false;false;63;95;191;;; -238967;1;0;false;false;;;;;; -238968;3;0;false;false;63;95;191;;; -238971;1;0;false;false;;;;;; -238972;1;0;false;false;63;95;191;;; -238973;1;0;false;false;;;;;; -238974;5;0;false;false;63;95;191;;; -238979;3;0;false;false;;;;;; -238982;1;0;false;false;63;95;191;;; -238983;1;0;false;false;;;;;; -238984;7;1;false;false;127;159;191;;; -238991;9;0;false;false;63;95;191;;; -239000;1;0;false;false;;;;;; -239001;6;0;false;false;63;95;191;;; -239007;1;0;false;false;;;;;; -239008;2;0;false;false;63;95;191;;; -239010;1;0;false;false;;;;;; -239011;5;0;false;false;63;95;191;;; -239016;1;0;false;false;;;;;; -239017;3;0;false;false;63;95;191;;; -239020;1;0;false;false;;;;;; -239021;5;0;false;false;63;95;191;;; -239026;1;0;false;false;;;;;; -239027;7;0;false;false;63;95;191;;; -239034;1;0;false;false;;;;;; -239035;3;0;false;false;63;95;191;;; -239038;3;0;false;false;;;;;; -239041;1;0;false;false;63;95;191;;; -239042;1;0;false;false;;;;;; -239043;7;1;false;false;127;159;191;;; -239050;10;0;false;false;63;95;191;;; -239060;1;0;false;false;;;;;; -239061;4;0;false;false;63;95;191;;; -239065;1;0;false;false;;;;;; -239066;10;0;false;false;63;95;191;;; -239076;1;0;false;false;;;;;; -239077;5;0;false;false;63;95;191;;; -239082;3;0;false;false;;;;;; -239085;1;0;false;false;63;95;191;;; -239086;1;0;false;false;;;;;; -239087;11;1;false;false;127;159;191;;; -239098;12;0;false;false;63;95;191;;; -239110;1;0;false;false;;;;;; -239111;4;0;false;false;127;127;159;;; -239115;3;0;false;false;;;;;; -239118;1;0;false;false;63;95;191;;; -239119;4;0;false;false;;;;;; -239123;4;0;false;false;127;127;159;;; -239127;21;0;false;false;63;95;191;;; -239148;1;0;false;false;;;;;; -239149;1;0;false;false;127;127;159;;; -239150;1;0;false;false;;;;;; -239151;2;0;false;false;63;95;191;;; -239153;1;0;false;false;;;;;; -239154;3;0;false;false;63;95;191;;; -239157;1;0;false;false;;;;;; -239158;8;0;false;false;63;95;191;;; -239166;1;0;false;false;;;;;; -239167;3;0;false;false;63;95;191;;; -239170;1;0;false;false;;;;;; -239171;4;0;false;false;63;95;191;;; -239175;1;0;false;false;;;;;; -239176;8;0;false;false;63;95;191;;; -239184;5;0;false;false;127;127;159;;; -239189;3;0;false;false;;;;;; -239192;1;0;false;false;63;95;191;;; -239193;4;0;false;false;;;;;; -239197;4;0;false;false;127;127;159;;; -239201;27;0;false;false;63;95;191;;; -239228;1;0;false;false;;;;;; -239229;1;0;false;false;127;127;159;;; -239230;1;0;false;false;;;;;; -239231;2;0;false;false;63;95;191;;; -239233;1;0;false;false;;;;;; -239234;3;0;false;false;63;95;191;;; -239237;1;0;false;false;;;;;; -239238;6;0;false;false;63;95;191;;; -239244;1;0;false;false;;;;;; -239245;4;0;false;false;63;95;191;;; -239249;1;0;false;false;;;;;; -239250;3;0;false;false;63;95;191;;; -239253;1;0;false;false;;;;;; -239254;6;0;false;false;63;95;191;;; -239260;1;0;false;false;;;;;; -239261;4;0;false;false;63;95;191;;; -239265;1;0;false;false;;;;;; -239266;7;0;false;false;63;95;191;;; -239273;1;0;false;false;;;;;; -239274;3;0;false;false;63;95;191;;; -239277;1;0;false;false;;;;;; -239278;8;0;false;false;63;95;191;;; -239286;5;0;false;false;127;127;159;;; -239291;3;0;false;false;;;;;; -239294;1;0;false;false;63;95;191;;; -239295;1;0;false;false;;;;;; -239296;5;0;false;false;127;127;159;;; -239301;3;0;false;false;;;;;; -239304;1;0;false;false;63;95;191;;; -239305;1;0;false;false;;;;;; -239306;11;1;false;false;127;159;191;;; -239317;24;0;false;false;63;95;191;;; -239341;1;0;false;false;;;;;; -239342;4;0;false;false;127;127;159;;; -239346;3;0;false;false;;;;;; -239349;1;0;false;false;63;95;191;;; -239350;3;0;false;false;;;;;; -239353;4;0;false;false;127;127;159;;; -239357;22;0;false;false;63;95;191;;; -239379;1;0;false;false;;;;;; -239380;4;0;false;false;63;95;191;;; -239384;1;0;false;false;;;;;; -239385;3;0;false;false;63;95;191;;; -239388;1;0;false;false;;;;;; -239389;9;0;false;false;63;95;191;;; -239398;1;0;false;false;;;;;; -239399;4;0;false;false;63;95;191;;; -239403;1;0;false;false;;;;;; -239404;5;0;false;false;63;95;191;;; -239409;1;0;false;false;;;;;; -239410;2;0;false;false;63;95;191;;; -239412;1;0;false;false;;;;;; -239413;7;0;false;false;63;95;191;;; -239420;5;0;false;false;127;127;159;;; -239425;3;0;false;false;;;;;; -239428;1;0;false;false;63;95;191;;; -239429;1;0;false;false;;;;;; -239430;5;0;false;false;127;127;159;;; -239435;3;0;false;false;;;;;; -239438;2;0;false;false;63;95;191;;; -239440;2;0;false;false;;;;;; -239442;6;1;false;false;127;0;85;;; -239448;1;0;false;false;;;;;; -239449;4;1;false;false;127;0;85;;; -239453;1;0;false;false;;;;;; -239454;18;0;false;false;0;0;0;;; -239472;3;1;false;false;127;0;85;;; -239475;1;0;false;false;;;;;; -239476;10;0;false;false;0;0;0;;; -239486;1;0;false;false;;;;;; -239487;3;1;false;false;127;0;85;;; -239490;1;0;false;false;;;;;; -239491;10;0;false;false;0;0;0;;; -239501;1;0;false;false;;;;;; -239502;5;0;false;false;0;0;0;;; -239507;1;0;false;false;;;;;; -239508;11;0;false;false;0;0;0;;; -239519;1;0;false;false;;;;;; -239520;1;0;false;false;0;0;0;;; -239521;3;0;false;false;;;;;; -239524;14;0;false;false;0;0;0;;; -239538;3;0;false;false;;;;;; -239541;3;1;false;false;127;0;85;;; -239544;1;0;false;false;;;;;; -239545;18;0;false;false;0;0;0;;; -239563;1;0;false;false;;;;;; -239564;1;0;false;false;0;0;0;;; -239565;1;0;false;false;;;;;; -239566;24;0;false;false;0;0;0;;; -239590;6;0;false;false;;;;;; -239596;76;0;false;false;63;127;95;;; -239672;1;0;false;false;;;;;; -239673;2;1;false;false;127;0;85;;; -239675;1;0;false;false;;;;;; -239676;20;0;false;false;0;0;0;;; -239696;1;0;false;false;;;;;; -239697;1;0;false;false;0;0;0;;; -239698;4;0;false;false;;;;;; -239702;6;1;false;false;127;0;85;;; -239708;1;0;false;false;0;0;0;;; -239709;3;0;false;false;;;;;; -239712;1;0;false;false;0;0;0;;; -239713;3;0;false;false;;;;;; -239716;2;1;false;false;127;0;85;;; -239718;1;0;false;false;;;;;; -239719;10;0;false;false;0;0;0;;; -239729;1;0;false;false;;;;;; -239730;1;0;false;false;0;0;0;;; -239731;1;0;false;false;;;;;; -239732;1;0;false;false;0;0;0;;; -239733;1;0;false;false;;;;;; -239734;2;0;false;false;0;0;0;;; -239736;1;0;false;false;;;;;; -239737;9;0;false;false;0;0;0;;; -239746;1;0;false;false;;;;;; -239747;1;0;false;false;0;0;0;;; -239748;1;0;false;false;;;;;; -239749;9;0;false;false;0;0;0;;; -239758;1;0;false;false;;;;;; -239759;1;0;false;false;0;0;0;;; -239760;1;0;false;false;;;;;; -239761;30;0;false;false;0;0;0;;; -239791;1;0;false;false;;;;;; -239792;1;0;false;false;0;0;0;;; -239793;4;0;false;false;;;;;; -239797;38;0;false;false;0;0;0;;; -239835;3;0;false;false;;;;;; -239838;1;0;false;false;0;0;0;;; -239839;4;0;false;false;;;;;; -239843;46;0;false;false;0;0;0;;; -239889;1;0;false;false;;;;;; -239890;10;0;false;false;0;0;0;;; -239900;1;0;false;false;;;;;; -239901;12;0;false;false;0;0;0;;; -239913;3;0;false;false;;;;;; -239916;56;0;false;false;63;127;95;;; -239972;1;0;false;false;;;;;; -239973;2;1;false;false;127;0;85;;; -239975;1;0;false;false;;;;;; -239976;10;0;false;false;0;0;0;;; -239986;1;0;false;false;;;;;; -239987;1;0;false;false;0;0;0;;; -239988;1;0;false;false;;;;;; -239989;18;0;false;false;0;0;0;;; -240007;1;0;false;false;;;;;; -240008;2;0;false;false;0;0;0;;; -240010;1;0;false;false;;;;;; -240011;9;0;false;false;0;0;0;;; -240020;1;0;false;false;;;;;; -240021;1;0;false;false;0;0;0;;; -240022;1;0;false;false;;;;;; -240023;9;0;false;false;0;0;0;;; -240032;1;0;false;false;;;;;; -240033;1;0;false;false;0;0;0;;; -240034;1;0;false;false;;;;;; -240035;1;0;false;false;0;0;0;;; -240036;1;0;false;false;;;;;; -240037;1;0;false;false;0;0;0;;; -240038;1;0;false;false;;;;;; -240039;9;0;false;false;0;0;0;;; -240048;1;0;false;false;;;;;; -240049;1;0;false;false;0;0;0;;; -240050;4;0;false;false;;;;;; -240054;6;1;false;false;127;0;85;;; -240060;1;0;false;false;0;0;0;;; -240061;3;0;false;false;;;;;; -240064;1;0;false;false;0;0;0;;; -240065;3;0;false;false;;;;;; -240068;30;0;false;false;63;127;95;;; -240098;1;0;false;false;;;;;; -240099;2;1;false;false;127;0;85;;; -240101;1;0;false;false;;;;;; -240102;10;0;false;false;0;0;0;;; -240112;1;0;false;false;;;;;; -240113;1;0;false;false;0;0;0;;; -240114;1;0;false;false;;;;;; -240115;9;0;false;false;0;0;0;;; -240124;1;0;false;false;;;;;; -240125;1;0;false;false;0;0;0;;; -240126;4;0;false;false;;;;;; -240130;9;0;false;false;0;0;0;;; -240139;1;0;false;false;;;;;; -240140;2;0;false;false;0;0;0;;; -240142;1;0;false;false;;;;;; -240143;8;0;false;false;0;0;0;;; -240151;1;0;false;false;;;;;; -240152;1;0;false;false;0;0;0;;; -240153;1;0;false;false;;;;;; -240154;10;0;false;false;0;0;0;;; -240164;4;0;false;false;;;;;; -240168;9;0;false;false;0;0;0;;; -240177;1;0;false;false;;;;;; -240178;1;0;false;false;0;0;0;;; -240179;1;0;false;false;;;;;; -240180;9;0;false;false;0;0;0;;; -240189;3;0;false;false;;;;;; -240192;1;0;false;false;0;0;0;;; -240193;3;0;false;false;;;;;; -240196;2;1;false;false;127;0;85;;; -240198;1;0;false;false;;;;;; -240199;10;0;false;false;0;0;0;;; -240209;1;0;false;false;;;;;; -240210;1;0;false;false;0;0;0;;; -240211;1;0;false;false;;;;;; -240212;9;0;false;false;0;0;0;;; -240221;1;0;false;false;;;;;; -240222;1;0;false;false;0;0;0;;; -240223;1;0;false;false;;;;;; -240224;1;0;false;false;0;0;0;;; -240225;1;0;false;false;;;;;; -240226;1;0;false;false;0;0;0;;; -240227;1;0;false;false;;;;;; -240228;19;0;false;false;0;0;0;;; -240247;1;0;false;false;;;;;; -240248;1;0;false;false;0;0;0;;; -240249;4;0;false;false;;;;;; -240253;9;0;false;false;0;0;0;;; -240262;1;0;false;false;;;;;; -240263;1;0;false;false;0;0;0;;; -240264;1;0;false;false;;;;;; -240265;18;0;false;false;0;0;0;;; -240283;1;0;false;false;;;;;; -240284;1;0;false;false;0;0;0;;; -240285;1;0;false;false;;;;;; -240286;9;0;false;false;0;0;0;;; -240295;1;0;false;false;;;;;; -240296;1;0;false;false;0;0;0;;; -240297;1;0;false;false;;;;;; -240298;2;0;false;false;0;0;0;;; -240300;3;0;false;false;;;;;; -240303;1;0;false;false;0;0;0;;; -240304;3;0;false;false;;;;;; -240307;9;0;false;false;0;0;0;;; -240316;1;0;false;false;;;;;; -240317;2;0;false;false;0;0;0;;; -240319;1;0;false;false;;;;;; -240320;9;0;false;false;0;0;0;;; -240329;3;0;false;false;;;;;; -240332;5;1;false;false;127;0;85;;; -240337;8;0;false;false;0;0;0;;; -240345;4;0;false;false;;;;;; -240349;11;0;false;false;0;0;0;;; -240360;1;0;false;false;;;;;; -240361;9;0;false;false;0;0;0;;; -240370;1;0;false;false;;;;;; -240371;1;0;false;false;0;0;0;;; -240372;1;0;false;false;;;;;; -240373;10;0;false;false;0;0;0;;; -240383;1;0;false;false;;;;;; -240384;1;0;false;false;0;0;0;;; -240385;1;0;false;false;;;;;; -240386;10;0;false;false;0;0;0;;; -240396;5;0;false;false;;;;;; -240401;21;0;false;false;0;0;0;;; -240422;1;0;false;false;;;;;; -240423;1;0;false;false;0;0;0;;; -240424;1;0;false;false;;;;;; -240425;10;0;false;false;0;0;0;;; -240435;1;0;false;false;;;;;; -240436;1;0;false;false;0;0;0;;; -240437;1;0;false;false;;;;;; -240438;12;0;false;false;0;0;0;;; -240450;1;0;false;false;;;;;; -240451;9;0;false;false;0;0;0;;; -240460;1;0;false;false;;;;;; -240461;1;0;false;false;0;0;0;;; -240462;1;0;false;false;;;;;; -240463;11;0;false;false;0;0;0;;; -240474;1;0;false;false;;;;;; -240475;4;1;false;false;127;0;85;;; -240479;2;0;false;false;0;0;0;;; -240481;2;0;false;false;;;;;; -240483;1;0;false;false;0;0;0;;; -240484;2;0;false;false;;;;;; -240486;3;0;false;false;63;95;191;;; -240489;3;0;false;false;;;;;; -240492;1;0;false;false;63;95;191;;; -240493;1;0;false;false;;;;;; -240494;5;0;false;false;63;95;191;;; -240499;1;0;false;false;;;;;; -240500;9;0;false;false;63;95;191;;; -240509;1;0;false;false;;;;;; -240510;6;0;false;false;63;95;191;;; -240516;1;0;false;false;;;;;; -240517;5;0;false;false;63;95;191;;; -240522;1;0;false;false;;;;;; -240523;2;0;false;false;63;95;191;;; -240525;1;0;false;false;;;;;; -240526;4;0;false;false;63;95;191;;; -240530;1;0;false;false;;;;;; -240531;9;0;false;false;63;95;191;;; -240540;1;0;false;false;;;;;; -240541;10;0;false;false;63;95;191;;; -240551;3;0;false;false;;;;;; -240554;2;0;false;false;63;95;191;;; -240556;2;0;false;false;;;;;; -240558;4;1;false;false;127;0;85;;; -240562;1;0;false;false;;;;;; -240563;29;0;false;false;0;0;0;;; -240592;1;0;false;false;;;;;; -240593;1;0;false;false;0;0;0;;; -240594;3;0;false;false;;;;;; -240597;2;1;false;false;127;0;85;;; -240599;1;0;false;false;;;;;; -240600;18;0;false;false;0;0;0;;; -240618;1;0;false;false;;;;;; -240619;1;0;false;false;0;0;0;;; -240620;4;0;false;false;;;;;; -240624;2;1;false;false;127;0;85;;; -240626;1;0;false;false;;;;;; -240627;12;0;false;false;0;0;0;;; -240639;1;0;false;false;;;;;; -240640;1;0;false;false;0;0;0;;; -240641;1;0;false;false;;;;;; -240642;23;0;false;false;0;0;0;;; -240665;1;0;false;false;;;;;; -240666;1;0;false;false;0;0;0;;; -240667;5;0;false;false;;;;;; -240672;15;0;false;false;0;0;0;;; -240687;1;0;false;false;;;;;; -240688;1;0;false;false;0;0;0;;; -240689;1;0;false;false;;;;;; -240690;23;0;false;false;0;0;0;;; -240713;4;0;false;false;;;;;; -240717;1;0;false;false;0;0;0;;; -240718;4;0;false;false;;;;;; -240722;4;1;false;false;127;0;85;;; -240726;1;0;false;false;;;;;; -240727;2;1;false;false;127;0;85;;; -240729;1;0;false;false;;;;;; -240730;12;0;false;false;0;0;0;;; -240742;1;0;false;false;;;;;; -240743;1;0;false;false;0;0;0;;; -240744;1;0;false;false;;;;;; -240745;23;0;false;false;0;0;0;;; -240768;1;0;false;false;;;;;; -240769;1;0;false;false;0;0;0;;; -240770;5;0;false;false;;;;;; -240775;15;0;false;false;0;0;0;;; -240790;1;0;false;false;;;;;; -240791;1;0;false;false;0;0;0;;; -240792;1;0;false;false;;;;;; -240793;23;0;false;false;0;0;0;;; -240816;4;0;false;false;;;;;; -240820;1;0;false;false;0;0;0;;; -240821;3;0;false;false;;;;;; -240824;1;0;false;false;0;0;0;;; -240825;2;0;false;false;;;;;; -240827;1;0;false;false;0;0;0;;; -240828;2;0;false;false;;;;;; -240830;3;0;false;false;63;95;191;;; -240833;3;0;false;false;;;;;; -240836;1;0;false;false;63;95;191;;; -240837;1;0;false;false;;;;;; -240838;4;0;false;false;63;95;191;;; -240842;1;0;false;false;;;;;; -240843;3;0;false;false;63;95;191;;; -240846;1;0;false;false;;;;;; -240847;11;0;false;false;63;95;191;;; -240858;1;0;false;false;;;;;; -240859;2;0;false;false;63;95;191;;; -240861;1;0;false;false;;;;;; -240862;3;0;false;false;63;95;191;;; -240865;1;0;false;false;;;;;; -240866;9;0;false;false;63;95;191;;; -240875;1;0;false;false;;;;;; -240876;5;0;false;false;63;95;191;;; -240881;1;0;false;false;;;;;; -240882;4;0;false;false;63;95;191;;; -240886;1;0;false;false;;;;;; -240887;2;0;false;false;63;95;191;;; -240889;1;0;false;false;;;;;; -240890;3;0;false;false;63;95;191;;; -240893;3;0;false;false;;;;;; -240896;1;0;false;false;63;95;191;;; -240897;1;0;false;false;;;;;; -240898;2;0;false;false;63;95;191;;; -240900;1;0;false;false;;;;;; -240901;3;0;false;false;63;95;191;;; -240904;1;0;false;false;;;;;; -240905;9;0;false;false;63;95;191;;; -240914;1;0;false;false;;;;;; -240915;6;0;false;false;127;127;159;;; -240921;17;0;false;false;63;95;191;;; -240938;7;0;false;false;127;127;159;;; -240945;1;0;false;false;;;;;; -240946;2;0;false;false;63;95;191;;; -240948;1;0;false;false;;;;;; -240949;6;0;false;false;127;127;159;;; -240955;17;0;false;false;63;95;191;;; -240972;7;0;false;false;127;127;159;;; -240979;1;0;false;false;63;95;191;;; -240980;3;0;false;false;;;;;; -240983;1;0;false;false;63;95;191;;; -240984;1;0;false;false;;;;;; -240985;3;0;false;false;127;127;159;;; -240988;3;0;false;false;;;;;; -240991;1;0;false;false;63;95;191;;; -240992;3;0;false;false;;;;;; -240995;1;0;false;false;63;95;191;;; -240996;1;0;false;false;;;;;; -240997;7;1;false;false;127;159;191;;; -241004;11;0;false;false;63;95;191;;; -241015;1;0;false;false;;;;;; -241016;3;0;false;false;63;95;191;;; -241019;1;0;false;false;;;;;; -241020;11;0;false;false;63;95;191;;; -241031;1;0;false;false;;;;;; -241032;5;0;false;false;63;95;191;;; -241037;3;0;false;false;;;;;; -241040;1;0;false;false;63;95;191;;; -241041;4;0;false;false;;;;;; -241045;1;0;false;false;63;95;191;;; -241046;1;0;false;false;;;;;; -241047;11;1;false;false;127;159;191;;; -241058;12;0;false;false;63;95;191;;; -241070;1;0;false;false;;;;;; -241071;4;0;false;false;127;127;159;;; -241075;3;0;false;false;;;;;; -241078;1;0;false;false;63;95;191;;; -241079;4;0;false;false;;;;;; -241083;4;0;false;false;127;127;159;;; -241087;21;0;false;false;63;95;191;;; -241108;1;0;false;false;;;;;; -241109;1;0;false;false;127;127;159;;; -241110;1;0;false;false;;;;;; -241111;2;0;false;false;63;95;191;;; -241113;1;0;false;false;;;;;; -241114;3;0;false;false;63;95;191;;; -241117;1;0;false;false;;;;;; -241118;8;0;false;false;63;95;191;;; -241126;1;0;false;false;;;;;; -241127;3;0;false;false;63;95;191;;; -241130;1;0;false;false;;;;;; -241131;4;0;false;false;63;95;191;;; -241135;1;0;false;false;;;;;; -241136;8;0;false;false;63;95;191;;; -241144;5;0;false;false;127;127;159;;; -241149;3;0;false;false;;;;;; -241152;1;0;false;false;63;95;191;;; -241153;4;0;false;false;;;;;; -241157;4;0;false;false;127;127;159;;; -241161;27;0;false;false;63;95;191;;; -241188;1;0;false;false;;;;;; -241189;1;0;false;false;127;127;159;;; -241190;1;0;false;false;;;;;; -241191;2;0;false;false;63;95;191;;; -241193;1;0;false;false;;;;;; -241194;3;0;false;false;63;95;191;;; -241197;1;0;false;false;;;;;; -241198;6;0;false;false;63;95;191;;; -241204;1;0;false;false;;;;;; -241205;4;0;false;false;63;95;191;;; -241209;1;0;false;false;;;;;; -241210;3;0;false;false;63;95;191;;; -241213;1;0;false;false;;;;;; -241214;6;0;false;false;63;95;191;;; -241220;1;0;false;false;;;;;; -241221;4;0;false;false;63;95;191;;; -241225;1;0;false;false;;;;;; -241226;7;0;false;false;63;95;191;;; -241233;1;0;false;false;;;;;; -241234;3;0;false;false;63;95;191;;; -241237;1;0;false;false;;;;;; -241238;8;0;false;false;63;95;191;;; -241246;5;0;false;false;127;127;159;;; -241251;3;0;false;false;;;;;; -241254;1;0;false;false;63;95;191;;; -241255;1;0;false;false;;;;;; -241256;5;0;false;false;127;127;159;;; -241261;3;0;false;false;;;;;; -241264;1;0;false;false;63;95;191;;; -241265;4;0;false;false;;;;;; -241269;1;0;false;false;63;95;191;;; -241270;1;0;false;false;;;;;; -241271;7;1;false;false;127;159;191;;; -241278;5;0;false;false;63;95;191;;; -241283;3;0;false;false;;;;;; -241286;2;0;false;false;63;95;191;;; -241288;2;0;false;false;;;;;; -241290;6;1;false;false;127;0;85;;; -241296;1;0;false;false;;;;;; -241297;4;1;false;false;127;0;85;;; -241301;1;0;false;false;;;;;; -241302;15;0;false;false;0;0;0;;; -241317;3;1;false;false;127;0;85;;; -241320;1;0;false;false;;;;;; -241321;12;0;false;false;0;0;0;;; -241333;1;0;false;false;;;;;; -241334;1;0;false;false;0;0;0;;; -241335;3;0;false;false;;;;;; -241338;2;1;false;false;127;0;85;;; -241340;1;0;false;false;;;;;; -241341;13;0;false;false;0;0;0;;; -241354;1;0;false;false;;;;;; -241355;1;0;false;false;0;0;0;;; -241356;1;0;false;false;;;;;; -241357;18;0;false;false;0;0;0;;; -241375;1;0;false;false;;;;;; -241376;1;0;false;false;0;0;0;;; -241377;1;0;false;false;;;;;; -241378;19;0;false;false;0;0;0;;; -241397;1;0;false;false;;;;;; -241398;2;0;false;false;0;0;0;;; -241400;1;0;false;false;;;;;; -241401;2;0;false;false;0;0;0;;; -241403;1;0;false;false;;;;;; -241404;1;0;false;false;0;0;0;;; -241405;5;0;false;false;;;;;; -241410;6;1;false;false;127;0;85;;; -241416;1;0;false;false;0;0;0;;; -241417;3;0;false;false;;;;;; -241420;1;0;false;false;0;0;0;;; -241421;3;0;false;false;;;;;; -241424;2;1;false;false;127;0;85;;; -241426;1;0;false;false;;;;;; -241427;13;0;false;false;0;0;0;;; -241440;1;0;false;false;;;;;; -241441;1;0;false;false;0;0;0;;; -241442;1;0;false;false;;;;;; -241443;18;0;false;false;0;0;0;;; -241461;1;0;false;false;;;;;; -241462;2;0;false;false;0;0;0;;; -241464;1;0;false;false;;;;;; -241465;1;0;false;false;0;0;0;;; -241466;1;0;false;false;;;;;; -241467;2;0;false;false;0;0;0;;; -241469;1;0;false;false;;;;;; -241470;12;0;false;false;0;0;0;;; -241482;1;0;false;false;;;;;; -241483;1;0;false;false;0;0;0;;; -241484;1;0;false;false;;;;;; -241485;18;0;false;false;0;0;0;;; -241503;1;0;false;false;;;;;; -241504;2;0;false;false;0;0;0;;; -241506;1;0;false;false;;;;;; -241507;2;0;false;false;0;0;0;;; -241509;1;0;false;false;;;;;; -241510;1;0;false;false;0;0;0;;; -241511;4;0;false;false;;;;;; -241515;6;1;false;false;127;0;85;;; -241521;1;0;false;false;0;0;0;;; -241522;4;0;false;false;;;;;; -241526;1;0;false;false;0;0;0;;; -241527;3;0;false;false;;;;;; -241530;2;1;false;false;127;0;85;;; -241532;1;0;false;false;;;;;; -241533;13;0;false;false;0;0;0;;; -241546;1;0;false;false;;;;;; -241547;1;0;false;false;0;0;0;;; -241548;1;0;false;false;;;;;; -241549;18;0;false;false;0;0;0;;; -241567;1;0;false;false;;;;;; -241568;2;0;false;false;0;0;0;;; -241570;1;0;false;false;;;;;; -241571;1;0;false;false;0;0;0;;; -241572;1;0;false;false;;;;;; -241573;2;0;false;false;0;0;0;;; -241575;1;0;false;false;;;;;; -241576;13;0;false;false;0;0;0;;; -241589;1;0;false;false;;;;;; -241590;1;0;false;false;0;0;0;;; -241591;4;0;false;false;;;;;; -241595;6;1;false;false;127;0;85;;; -241601;1;0;false;false;0;0;0;;; -241602;4;0;false;false;;;;;; -241606;1;0;false;false;0;0;0;;; -241607;4;0;false;false;;;;;; -241611;2;1;false;false;127;0;85;;; -241613;1;0;false;false;;;;;; -241614;13;0;false;false;0;0;0;;; -241627;1;0;false;false;;;;;; -241628;1;0;false;false;0;0;0;;; -241629;1;0;false;false;;;;;; -241630;18;0;false;false;0;0;0;;; -241648;1;0;false;false;;;;;; -241649;2;0;false;false;0;0;0;;; -241651;1;0;false;false;;;;;; -241652;1;0;false;false;0;0;0;;; -241653;1;0;false;false;;;;;; -241654;2;0;false;false;0;0;0;;; -241656;1;0;false;false;;;;;; -241657;14;0;false;false;0;0;0;;; -241671;1;0;false;false;;;;;; -241672;1;0;false;false;0;0;0;;; -241673;4;0;false;false;;;;;; -241677;6;1;false;false;127;0;85;;; -241683;1;0;false;false;0;0;0;;; -241684;3;0;false;false;;;;;; -241687;1;0;false;false;0;0;0;;; -241688;3;0;false;false;;;;;; -241691;2;1;false;false;127;0;85;;; -241693;1;0;false;false;;;;;; -241694;33;0;false;false;0;0;0;;; -241727;1;0;false;false;;;;;; -241728;13;0;false;false;0;0;0;;; -241741;1;0;false;false;;;;;; -241742;1;0;false;false;0;0;0;;; -241743;4;0;false;false;;;;;; -241747;6;1;false;false;127;0;85;;; -241753;1;0;false;false;0;0;0;;; -241754;3;0;false;false;;;;;; -241757;1;0;false;false;0;0;0;;; -241758;3;0;false;false;;;;;; -241761;10;0;false;false;0;0;0;;; -241771;1;0;false;false;;;;;; -241772;1;0;false;false;0;0;0;;; -241773;1;0;false;false;;;;;; -241774;12;0;false;false;0;0;0;;; -241786;1;0;false;false;;;;;; -241787;1;0;false;false;0;0;0;;; -241788;1;0;false;false;;;;;; -241789;18;0;false;false;0;0;0;;; -241807;1;0;false;false;;;;;; -241808;2;0;false;false;0;0;0;;; -241810;1;0;false;false;;;;;; -241811;2;0;false;false;0;0;0;;; -241813;3;0;false;false;;;;;; -241816;21;0;false;false;0;0;0;;; -241837;3;0;false;false;;;;;; -241840;14;0;false;false;0;0;0;;; -241854;1;0;false;false;;;;;; -241855;1;0;false;false;0;0;0;;; -241856;1;0;false;false;;;;;; -241857;9;0;false;false;0;0;0;;; -241866;3;0;false;false;;;;;; -241869;19;0;false;false;0;0;0;;; -241888;3;0;false;false;;;;;; -241891;21;0;false;false;0;0;0;;; -241912;3;0;false;false;;;;;; -241915;20;0;false;false;0;0;0;;; -241935;3;0;false;false;;;;;; -241938;5;1;false;false;127;0;85;;; -241943;10;0;false;false;0;0;0;;; -241953;2;0;false;false;;;;;; -241955;1;0;false;false;0;0;0;;; -241956;2;0;false;false;;;;;; -241958;3;0;false;false;63;95;191;;; -241961;3;0;false;false;;;;;; -241964;1;0;false;false;63;95;191;;; -241965;1;0;false;false;;;;;; -241966;7;0;false;false;63;95;191;;; -241973;1;0;false;false;;;;;; -241974;3;0;false;false;63;95;191;;; -241977;1;0;false;false;;;;;; -241978;7;0;false;false;63;95;191;;; -241985;1;0;false;false;;;;;; -241986;3;0;false;false;63;95;191;;; -241989;1;0;false;false;;;;;; -241990;3;0;false;false;63;95;191;;; -241993;1;0;false;false;;;;;; -241994;4;0;false;false;63;95;191;;; -241998;1;0;false;false;;;;;; -241999;4;0;false;false;63;95;191;;; -242003;1;0;false;false;;;;;; -242004;2;0;false;false;63;95;191;;; -242006;1;0;false;false;;;;;; -242007;3;0;false;false;63;95;191;;; -242010;1;0;false;false;;;;;; -242011;6;0;false;false;63;95;191;;; -242017;1;0;false;false;;;;;; -242018;4;0;false;false;63;95;191;;; -242022;1;0;false;false;;;;;; -242023;2;0;false;false;63;95;191;;; -242025;4;0;false;false;;;;;; -242029;1;0;false;false;63;95;191;;; -242030;1;0;false;false;;;;;; -242031;7;0;false;false;63;95;191;;; -242038;1;0;false;false;;;;;; -242039;7;0;false;false;63;95;191;;; -242046;1;0;false;false;;;;;; -242047;12;0;false;false;63;95;191;;; -242059;1;0;false;false;;;;;; -242060;8;0;false;false;63;95;191;;; -242068;3;0;false;false;;;;;; -242071;2;0;false;false;63;95;191;;; -242073;2;0;false;false;;;;;; -242075;4;1;false;false;127;0;85;;; -242079;1;0;false;false;;;;;; -242080;15;0;false;false;0;0;0;;; -242095;1;0;false;false;;;;;; -242096;1;0;false;false;0;0;0;;; -242097;3;0;false;false;;;;;; -242100;9;0;false;false;0;0;0;;; -242109;1;0;false;false;;;;;; -242110;11;0;false;false;0;0;0;;; -242121;1;0;false;false;;;;;; -242122;1;0;false;false;0;0;0;;; -242123;1;0;false;false;;;;;; -242124;17;0;false;false;0;0;0;;; -242141;6;0;false;false;;;;;; -242147;2;1;false;false;127;0;85;;; -242149;1;0;false;false;;;;;; -242150;12;0;false;false;0;0;0;;; -242162;1;0;false;false;;;;;; -242163;2;0;false;false;0;0;0;;; -242165;1;0;false;false;;;;;; -242166;4;1;false;false;127;0;85;;; -242170;1;0;false;false;0;0;0;;; -242171;1;0;false;false;;;;;; -242172;1;0;false;false;0;0;0;;; -242173;4;0;false;false;;;;;; -242177;9;0;false;false;0;0;0;;; -242186;1;0;false;false;;;;;; -242187;10;0;false;false;0;0;0;;; -242197;1;0;false;false;;;;;; -242198;1;0;false;false;0;0;0;;; -242199;1;0;false;false;;;;;; -242200;16;0;false;false;0;0;0;;; -242216;4;0;false;false;;;;;; -242220;5;1;false;false;127;0;85;;; -242225;1;0;false;false;;;;;; -242226;3;1;false;false;127;0;85;;; -242229;1;0;false;false;;;;;; -242230;8;0;false;false;0;0;0;;; -242238;1;0;false;false;;;;;; -242239;1;0;false;false;0;0;0;;; -242240;1;0;false;false;;;;;; -242241;2;0;false;false;0;0;0;;; -242243;4;0;false;false;;;;;; -242247;3;1;false;false;127;0;85;;; -242250;1;0;false;false;;;;;; -242251;7;0;false;false;0;0;0;;; -242258;1;0;false;false;;;;;; -242259;1;0;false;false;0;0;0;;; -242260;1;0;false;false;;;;;; -242261;22;0;false;false;0;0;0;;; -242283;1;0;false;false;;;;;; -242284;1;0;false;false;0;0;0;;; -242285;1;0;false;false;;;;;; -242286;23;0;false;false;0;0;0;;; -242309;8;0;false;false;;;;;; -242317;60;0;false;false;63;127;95;;; -242377;2;0;false;false;;;;;; -242379;65;0;false;false;63;127;95;;; -242444;2;0;false;false;;;;;; -242446;56;0;false;false;63;127;95;;; -242502;2;0;false;false;;;;;; -242504;2;1;false;false;127;0;85;;; -242506;1;0;false;false;;;;;; -242507;18;0;false;false;0;0;0;;; -242525;1;0;false;false;;;;;; -242526;1;0;false;false;0;0;0;;; -242527;1;0;false;false;;;;;; -242528;8;0;false;false;0;0;0;;; -242536;1;0;false;false;;;;;; -242537;1;0;false;false;0;0;0;;; -242538;5;0;false;false;;;;;; -242543;22;0;false;false;0;0;0;;; -242565;6;0;false;false;;;;;; -242571;27;0;false;false;0;0;0;;; -242598;6;0;false;false;;;;;; -242604;25;0;false;false;0;0;0;;; -242629;6;0;false;false;;;;;; -242635;8;0;false;false;0;0;0;;; -242643;6;0;false;false;;;;;; -242649;18;0;false;false;0;0;0;;; -242667;4;0;false;false;;;;;; -242671;15;0;false;false;63;127;95;;; -242686;4;0;false;false;;;;;; -242690;27;0;false;false;0;0;0;;; -242717;6;0;false;false;;;;;; -242723;19;0;false;false;0;0;0;;; -242742;4;0;false;false;;;;;; -242746;14;0;false;false;63;127;95;;; -242760;2;0;false;false;;;;;; -242762;1;0;false;false;0;0;0;;; -242763;4;0;false;false;;;;;; -242767;4;1;false;false;127;0;85;;; -242771;4;0;false;false;;;;;; -242775;2;1;false;false;127;0;85;;; -242777;1;0;false;false;;;;;; -242778;23;0;false;false;0;0;0;;; -242801;1;0;false;false;;;;;; -242802;2;0;false;false;0;0;0;;; -242804;1;0;false;false;;;;;; -242805;8;0;false;false;0;0;0;;; -242813;1;0;false;false;;;;;; -242814;2;0;false;false;0;0;0;;; -242816;1;0;false;false;;;;;; -242817;24;0;false;false;0;0;0;;; -242841;1;0;false;false;;;;;; -242842;2;0;false;false;0;0;0;;; -242844;1;0;false;false;;;;;; -242845;9;0;false;false;0;0;0;;; -242854;1;0;false;false;;;;;; -242855;1;0;false;false;0;0;0;;; -242856;5;0;false;false;;;;;; -242861;22;0;false;false;0;0;0;;; -242883;6;0;false;false;;;;;; -242889;27;0;false;false;0;0;0;;; -242916;6;0;false;false;;;;;; -242922;25;0;false;false;0;0;0;;; -242947;6;0;false;false;;;;;; -242953;9;0;false;false;0;0;0;;; -242962;6;0;false;false;;;;;; -242968;9;0;false;false;0;0;0;;; -242977;6;0;false;false;;;;;; -242983;27;0;false;false;0;0;0;;; -243010;6;0;false;false;;;;;; -243016;10;0;false;false;0;0;0;;; -243026;4;0;false;false;;;;;; -243030;1;0;false;false;0;0;0;;; -243031;5;0;false;false;;;;;; -243036;1;0;false;false;0;0;0;;; -243037;3;0;false;false;;;;;; -243040;25;0;false;false;0;0;0;;; -243065;2;0;false;false;;;;;; -243067;1;0;false;false;0;0;0;;; -243068;2;0;false;false;;;;;; -243070;3;0;false;false;63;95;191;;; -243073;4;0;false;false;;;;;; -243077;1;0;false;false;63;95;191;;; -243078;1;0;false;false;;;;;; -243079;4;0;false;false;63;95;191;;; -243083;1;0;false;false;;;;;; -243084;3;0;false;false;63;95;191;;; -243087;1;0;false;false;;;;;; -243088;9;0;false;false;63;95;191;;; -243097;1;0;false;false;;;;;; -243098;2;0;false;false;63;95;191;;; -243100;1;0;false;false;;;;;; -243101;3;0;false;false;63;95;191;;; -243104;1;0;false;false;;;;;; -243105;5;0;false;false;63;95;191;;; -243110;1;0;false;false;;;;;; -243111;8;0;false;false;63;95;191;;; -243119;1;0;false;false;;;;;; -243120;3;0;false;false;63;95;191;;; -243123;1;0;false;false;;;;;; -243124;7;0;false;false;63;95;191;;; -243131;1;0;false;false;;;;;; -243132;2;0;false;false;63;95;191;;; -243134;1;0;false;false;;;;;; -243135;4;0;false;false;63;95;191;;; -243139;1;0;false;false;;;;;; -243140;5;0;false;false;63;95;191;;; -243145;2;0;false;false;;;;;; -243147;10;0;false;false;63;95;191;;; -243157;1;0;false;false;;;;;; -243158;2;0;false;false;63;95;191;;; -243160;1;0;false;false;;;;;; -243161;26;0;false;false;63;95;191;;; -243187;3;0;false;false;;;;;; -243190;1;0;false;false;63;95;191;;; -243191;1;0;false;false;;;;;; -243192;3;0;false;false;127;127;159;;; -243195;3;0;false;false;;;;;; -243198;1;0;false;false;63;95;191;;; -243199;3;0;false;false;;;;;; -243202;1;0;false;false;63;95;191;;; -243203;1;0;false;false;;;;;; -243204;7;1;false;false;127;159;191;;; -243211;5;0;false;false;63;95;191;;; -243216;1;0;false;false;;;;;; -243217;3;0;false;false;63;95;191;;; -243220;1;0;false;false;;;;;; -243221;5;0;false;false;63;95;191;;; -243226;1;0;false;false;;;;;; -243227;8;0;false;false;63;95;191;;; -243235;3;0;false;false;;;;;; -243238;1;0;false;false;63;95;191;;; -243239;1;0;false;false;;;;;; -243240;5;1;false;false;127;159;191;;; -243245;22;0;false;false;63;95;191;;; -243267;3;0;false;false;;;;;; -243270;1;0;false;false;63;95;191;;; -243271;1;0;false;false;;;;;; -243272;11;1;false;false;127;159;191;;; -243283;12;0;false;false;63;95;191;;; -243295;1;0;false;false;;;;;; -243296;4;0;false;false;127;127;159;;; -243300;3;0;false;false;;;;;; -243303;1;0;false;false;63;95;191;;; -243304;4;0;false;false;;;;;; -243308;4;0;false;false;127;127;159;;; -243312;21;0;false;false;63;95;191;;; -243333;1;0;false;false;;;;;; -243334;1;0;false;false;127;127;159;;; -243335;1;0;false;false;;;;;; -243336;2;0;false;false;63;95;191;;; -243338;1;0;false;false;;;;;; -243339;3;0;false;false;63;95;191;;; -243342;1;0;false;false;;;;;; -243343;8;0;false;false;63;95;191;;; -243351;1;0;false;false;;;;;; -243352;3;0;false;false;63;95;191;;; -243355;1;0;false;false;;;;;; -243356;4;0;false;false;63;95;191;;; -243360;1;0;false;false;;;;;; -243361;8;0;false;false;63;95;191;;; -243369;5;0;false;false;127;127;159;;; -243374;3;0;false;false;;;;;; -243377;1;0;false;false;63;95;191;;; -243378;4;0;false;false;;;;;; -243382;4;0;false;false;127;127;159;;; -243386;27;0;false;false;63;95;191;;; -243413;1;0;false;false;;;;;; -243414;1;0;false;false;127;127;159;;; -243415;1;0;false;false;;;;;; -243416;2;0;false;false;63;95;191;;; -243418;1;0;false;false;;;;;; -243419;3;0;false;false;63;95;191;;; -243422;1;0;false;false;;;;;; -243423;6;0;false;false;63;95;191;;; -243429;1;0;false;false;;;;;; -243430;4;0;false;false;63;95;191;;; -243434;1;0;false;false;;;;;; -243435;3;0;false;false;63;95;191;;; -243438;1;0;false;false;;;;;; -243439;6;0;false;false;63;95;191;;; -243445;1;0;false;false;;;;;; -243446;4;0;false;false;63;95;191;;; -243450;1;0;false;false;;;;;; -243451;7;0;false;false;63;95;191;;; -243458;1;0;false;false;;;;;; -243459;3;0;false;false;63;95;191;;; -243462;1;0;false;false;;;;;; -243463;8;0;false;false;63;95;191;;; -243471;5;0;false;false;127;127;159;;; -243476;3;0;false;false;;;;;; -243479;1;0;false;false;63;95;191;;; -243480;1;0;false;false;;;;;; -243481;5;0;false;false;127;127;159;;; -243486;3;0;false;false;;;;;; -243489;1;0;false;false;63;95;191;;; -243490;1;0;false;false;;;;;; -243491;11;1;false;false;127;159;191;;; -243502;24;0;false;false;63;95;191;;; -243526;1;0;false;false;;;;;; -243527;4;0;false;false;127;127;159;;; -243531;3;0;false;false;;;;;; -243534;1;0;false;false;63;95;191;;; -243535;3;0;false;false;;;;;; -243538;4;0;false;false;127;127;159;;; -243542;22;0;false;false;63;95;191;;; -243564;1;0;false;false;;;;;; -243565;4;0;false;false;63;95;191;;; -243569;1;0;false;false;;;;;; -243570;6;0;false;false;63;95;191;;; -243576;1;0;false;false;;;;;; -243577;3;0;false;false;63;95;191;;; -243580;1;0;false;false;;;;;; -243581;5;0;false;false;63;95;191;;; -243586;1;0;false;false;;;;;; -243587;2;0;false;false;63;95;191;;; -243589;1;0;false;false;;;;;; -243590;3;0;false;false;63;95;191;;; -243593;1;0;false;false;;;;;; -243594;3;0;false;false;63;95;191;;; -243597;1;0;false;false;;;;;; -243598;2;0;false;false;63;95;191;;; -243600;1;0;false;false;;;;;; -243601;3;0;false;false;63;95;191;;; -243604;1;0;false;false;;;;;; -243605;9;0;false;false;63;95;191;;; -243614;1;0;false;false;;;;;; -243615;5;0;false;false;63;95;191;;; -243620;1;0;false;false;;;;;; -243621;2;0;false;false;63;95;191;;; -243623;1;0;false;false;;;;;; -243624;6;0;false;false;63;95;191;;; -243630;1;0;false;false;;;;;; -243631;1;0;false;false;63;95;191;;; -243632;4;0;false;false;;;;;; -243636;1;0;false;false;63;95;191;;; -243637;1;0;false;false;;;;;; -243638;5;0;false;false;63;95;191;;; -243643;1;0;false;false;;;;;; -243644;4;0;false;false;63;95;191;;; -243648;1;0;false;false;;;;;; -243649;4;0;false;false;63;95;191;;; -243653;1;0;false;false;;;;;; -243654;9;0;false;false;63;95;191;;; -243663;1;0;false;false;;;;;; -243664;4;0;false;false;63;95;191;;; -243668;1;0;false;false;;;;;; -243669;4;0;false;false;63;95;191;;; -243673;1;0;false;false;;;;;; -243674;7;0;false;false;63;95;191;;; -243681;1;0;false;false;;;;;; -243682;7;0;false;false;63;95;191;;; -243689;1;0;false;false;;;;;; -243690;2;0;false;false;63;95;191;;; -243692;1;0;false;false;;;;;; -243693;5;0;false;false;63;95;191;;; -243698;1;0;false;false;;;;;; -243699;2;0;false;false;63;95;191;;; -243701;1;0;false;false;;;;;; -243702;2;0;false;false;63;95;191;;; -243704;1;0;false;false;;;;;; -243705;5;0;false;false;63;95;191;;; -243710;1;0;false;false;;;;;; -243711;3;0;false;false;63;95;191;;; -243714;1;0;false;false;;;;;; -243715;4;0;false;false;63;95;191;;; -243719;1;0;false;false;;;;;; -243720;10;0;false;false;63;95;191;;; -243730;3;0;false;false;;;;;; -243733;1;0;false;false;63;95;191;;; -243734;1;0;false;false;;;;;; -243735;5;0;false;false;127;127;159;;; -243740;4;0;false;false;;;;;; -243744;2;0;false;false;63;95;191;;; -243746;2;0;false;false;;;;;; -243748;6;1;false;false;127;0;85;;; -243754;1;0;false;false;;;;;; -243755;4;1;false;false;127;0;85;;; -243759;1;0;false;false;;;;;; -243760;13;0;false;false;0;0;0;;; -243773;3;1;false;false;127;0;85;;; -243776;1;0;false;false;;;;;; -243777;6;0;false;false;0;0;0;;; -243783;1;0;false;false;;;;;; -243784;1;0;false;false;0;0;0;;; -243785;3;0;false;false;;;;;; -243788;48;0;false;false;63;127;95;;; -243836;1;0;false;false;;;;;; -243837;19;0;false;false;0;0;0;;; -243856;1;0;false;false;;;;;; -243857;7;0;false;false;0;0;0;;; -243864;2;0;false;false;;;;;; -243866;1;0;false;false;0;0;0;;; -243867;2;0;false;false;;;;;; -243869;3;0;false;false;63;95;191;;; -243872;4;0;false;false;;;;;; -243876;1;0;false;false;63;95;191;;; -243877;1;0;false;false;;;;;; -243878;4;0;false;false;63;95;191;;; -243882;1;0;false;false;;;;;; -243883;3;0;false;false;63;95;191;;; -243886;1;0;false;false;;;;;; -243887;9;0;false;false;63;95;191;;; -243896;1;0;false;false;;;;;; -243897;3;0;false;false;63;95;191;;; -243900;1;0;false;false;;;;;; -243901;7;0;false;false;63;95;191;;; -243908;1;0;false;false;;;;;; -243909;2;0;false;false;63;95;191;;; -243911;1;0;false;false;;;;;; -243912;4;0;false;false;63;95;191;;; -243916;1;0;false;false;;;;;; -243917;5;0;false;false;63;95;191;;; -243922;3;0;false;false;;;;;; -243925;1;0;false;false;63;95;191;;; -243926;1;0;false;false;;;;;; -243927;3;0;false;false;127;127;159;;; -243930;3;0;false;false;;;;;; -243933;1;0;false;false;63;95;191;;; -243934;1;0;false;false;;;;;; -243935;8;0;false;false;63;95;191;;; -243943;1;0;false;false;;;;;; -243944;2;0;false;false;63;95;191;;; -243946;1;0;false;false;;;;;; -243947;4;0;false;false;63;95;191;;; -243951;1;0;false;false;;;;;; -243952;6;0;false;false;63;95;191;;; -243958;2;0;false;false;;;;;; -243960;4;0;false;false;63;95;191;;; -243964;1;0;false;false;;;;;; -243965;10;0;false;false;63;95;191;;; -243975;1;0;false;false;;;;;; -243976;3;0;false;false;63;95;191;;; -243979;1;0;false;false;;;;;; -243980;9;0;false;false;63;95;191;;; -243989;1;0;false;false;;;;;; -243990;2;0;false;false;63;95;191;;; -243992;1;0;false;false;;;;;; -243993;5;0;false;false;63;95;191;;; -243998;1;0;false;false;;;;;; -243999;2;0;false;false;63;95;191;;; -244001;3;0;false;false;;;;;; -244004;1;0;false;false;63;95;191;;; -244005;1;0;false;false;;;;;; -244006;5;0;false;false;63;95;191;;; -244011;1;0;false;false;;;;;; -244012;10;0;false;false;63;95;191;;; -244022;2;0;false;false;;;;;; -244024;2;0;false;false;63;95;191;;; -244026;1;0;false;false;;;;;; -244027;1;0;false;false;63;95;191;;; -244028;1;0;false;false;;;;;; -244029;4;0;false;false;63;95;191;;; -244033;1;0;false;false;;;;;; -244034;6;0;false;false;63;95;191;;; -244040;1;0;false;false;;;;;; -244041;4;0;false;false;63;95;191;;; -244045;1;0;false;false;;;;;; -244046;8;0;false;false;63;95;191;;; -244054;1;0;false;false;;;;;; -244055;1;0;false;false;63;95;191;;; -244056;1;0;false;false;;;;;; -244057;11;0;false;false;63;95;191;;; -244068;1;0;false;false;;;;;; -244069;5;0;false;false;63;95;191;;; -244074;1;0;false;false;;;;;; -244075;3;0;false;false;63;95;191;;; -244078;4;0;false;false;;;;;; -244082;1;0;false;false;63;95;191;;; -244083;1;0;false;false;;;;;; -244084;3;0;false;false;63;95;191;;; -244087;1;0;false;false;;;;;; -244088;5;0;false;false;63;95;191;;; -244093;1;0;false;false;;;;;; -244094;10;0;false;false;63;95;191;;; -244104;1;0;false;false;;;;;; -244105;7;0;false;false;63;95;191;;; -244112;1;0;false;false;;;;;; -244113;4;0;false;false;63;95;191;;; -244117;1;0;false;false;;;;;; -244118;4;0;false;false;63;95;191;;; -244122;3;0;false;false;;;;;; -244125;1;0;false;false;63;95;191;;; -244126;1;0;false;false;;;;;; -244127;4;0;false;false;127;127;159;;; -244131;3;0;false;false;;;;;; -244134;1;0;false;false;63;95;191;;; -244135;3;0;false;false;;;;;; -244138;1;0;false;false;63;95;191;;; -244139;1;0;false;false;;;;;; -244140;7;1;false;false;127;159;191;;; -244147;5;0;false;false;63;95;191;;; -244152;1;0;false;false;;;;;; -244153;11;0;false;false;63;95;191;;; -244164;1;0;false;false;;;;;; -244165;5;0;false;false;63;95;191;;; -244170;1;0;false;false;;;;;; -244171;7;0;false;false;63;95;191;;; -244178;1;0;false;false;;;;;; -244179;11;0;false;false;63;95;191;;; -244190;1;0;false;false;;;;;; -244191;3;0;false;false;63;95;191;;; -244194;1;0;false;false;;;;;; -244195;6;0;false;false;63;95;191;;; -244201;3;0;false;false;;;;;; -244204;1;0;false;false;63;95;191;;; -244205;2;0;false;false;;;;;; -244207;3;0;false;false;63;95;191;;; -244210;1;0;false;false;;;;;; -244211;5;0;false;false;63;95;191;;; -244216;1;0;false;false;;;;;; -244217;4;0;false;false;63;95;191;;; -244221;1;0;false;false;;;;;; -244222;2;0;false;false;63;95;191;;; -244224;1;0;false;false;;;;;; -244225;6;0;false;false;63;95;191;;; -244231;1;0;false;false;;;;;; -244232;2;0;false;false;63;95;191;;; -244234;1;0;false;false;;;;;; -244235;3;0;false;false;63;95;191;;; -244238;1;0;false;false;;;;;; -244239;9;0;false;false;63;95;191;;; -244248;1;0;false;false;;;;;; -244249;5;0;false;false;63;95;191;;; -244254;1;0;false;false;;;;;; -244255;4;0;false;false;63;95;191;;; -244259;1;0;false;false;;;;;; -244260;1;0;false;false;63;95;191;;; -244261;1;0;false;false;;;;;; -244262;1;0;false;false;63;95;191;;; -244263;1;0;false;false;;;;;; -244264;2;0;false;false;63;95;191;;; -244266;3;0;false;false;;;;;; -244269;1;0;false;false;63;95;191;;; -244270;1;0;false;false;;;;;; -244271;5;1;false;false;127;159;191;;; -244276;22;0;false;false;63;95;191;;; -244298;3;0;false;false;;;;;; -244301;1;0;false;false;63;95;191;;; -244302;1;0;false;false;;;;;; -244303;11;1;false;false;127;159;191;;; -244314;12;0;false;false;63;95;191;;; -244326;1;0;false;false;;;;;; -244327;4;0;false;false;127;127;159;;; -244331;3;0;false;false;;;;;; -244334;1;0;false;false;63;95;191;;; -244335;4;0;false;false;;;;;; -244339;4;0;false;false;127;127;159;;; -244343;21;0;false;false;63;95;191;;; -244364;1;0;false;false;;;;;; -244365;1;0;false;false;127;127;159;;; -244366;1;0;false;false;;;;;; -244367;2;0;false;false;63;95;191;;; -244369;1;0;false;false;;;;;; -244370;3;0;false;false;63;95;191;;; -244373;1;0;false;false;;;;;; -244374;8;0;false;false;63;95;191;;; -244382;1;0;false;false;;;;;; -244383;3;0;false;false;63;95;191;;; -244386;1;0;false;false;;;;;; -244387;4;0;false;false;63;95;191;;; -244391;1;0;false;false;;;;;; -244392;8;0;false;false;63;95;191;;; -244400;5;0;false;false;127;127;159;;; -244405;3;0;false;false;;;;;; -244408;1;0;false;false;63;95;191;;; -244409;4;0;false;false;;;;;; -244413;4;0;false;false;127;127;159;;; -244417;27;0;false;false;63;95;191;;; -244444;1;0;false;false;;;;;; -244445;1;0;false;false;127;127;159;;; -244446;1;0;false;false;;;;;; -244447;2;0;false;false;63;95;191;;; -244449;1;0;false;false;;;;;; -244450;3;0;false;false;63;95;191;;; -244453;1;0;false;false;;;;;; -244454;6;0;false;false;63;95;191;;; -244460;1;0;false;false;;;;;; -244461;4;0;false;false;63;95;191;;; -244465;1;0;false;false;;;;;; -244466;3;0;false;false;63;95;191;;; -244469;1;0;false;false;;;;;; -244470;6;0;false;false;63;95;191;;; -244476;1;0;false;false;;;;;; -244477;4;0;false;false;63;95;191;;; -244481;1;0;false;false;;;;;; -244482;7;0;false;false;63;95;191;;; -244489;1;0;false;false;;;;;; -244490;3;0;false;false;63;95;191;;; -244493;1;0;false;false;;;;;; -244494;8;0;false;false;63;95;191;;; -244502;5;0;false;false;127;127;159;;; -244507;3;0;false;false;;;;;; -244510;1;0;false;false;63;95;191;;; -244511;1;0;false;false;;;;;; -244512;5;0;false;false;127;127;159;;; -244517;3;0;false;false;;;;;; -244520;1;0;false;false;63;95;191;;; -244521;1;0;false;false;;;;;; -244522;11;1;false;false;127;159;191;;; -244533;24;0;false;false;63;95;191;;; -244557;1;0;false;false;;;;;; -244558;4;0;false;false;127;127;159;;; -244562;3;0;false;false;;;;;; -244565;1;0;false;false;63;95;191;;; -244566;3;0;false;false;;;;;; -244569;4;0;false;false;127;127;159;;; -244573;19;0;false;false;63;95;191;;; -244592;1;0;false;false;;;;;; -244593;4;0;false;false;63;95;191;;; -244597;1;0;false;false;;;;;; -244598;5;0;false;false;63;95;191;;; -244603;1;0;false;false;;;;;; -244604;2;0;false;false;63;95;191;;; -244606;1;0;false;false;;;;;; -244607;4;0;false;false;63;95;191;;; -244611;5;0;false;false;127;127;159;;; -244616;3;0;false;false;;;;;; -244619;1;0;false;false;63;95;191;;; -244620;3;0;false;false;;;;;; -244623;4;0;false;false;127;127;159;;; -244627;22;0;false;false;63;95;191;;; -244649;1;0;false;false;;;;;; -244650;4;0;false;false;63;95;191;;; -244654;1;0;false;false;;;;;; -244655;6;0;false;false;63;95;191;;; -244661;1;0;false;false;;;;;; -244662;3;0;false;false;63;95;191;;; -244665;1;0;false;false;;;;;; -244666;5;0;false;false;63;95;191;;; -244671;1;0;false;false;;;;;; -244672;2;0;false;false;63;95;191;;; -244674;1;0;false;false;;;;;; -244675;3;0;false;false;63;95;191;;; -244678;1;0;false;false;;;;;; -244679;3;0;false;false;63;95;191;;; -244682;1;0;false;false;;;;;; -244683;2;0;false;false;63;95;191;;; -244685;1;0;false;false;;;;;; -244686;3;0;false;false;63;95;191;;; -244689;1;0;false;false;;;;;; -244690;9;0;false;false;63;95;191;;; -244699;1;0;false;false;;;;;; -244700;5;0;false;false;63;95;191;;; -244705;1;0;false;false;;;;;; -244706;2;0;false;false;63;95;191;;; -244708;1;0;false;false;;;;;; -244709;6;0;false;false;63;95;191;;; -244715;1;0;false;false;;;;;; -244716;1;0;false;false;63;95;191;;; -244717;4;0;false;false;;;;;; -244721;1;0;false;false;63;95;191;;; -244722;1;0;false;false;;;;;; -244723;5;0;false;false;63;95;191;;; -244728;1;0;false;false;;;;;; -244729;4;0;false;false;63;95;191;;; -244733;1;0;false;false;;;;;; -244734;4;0;false;false;63;95;191;;; -244738;1;0;false;false;;;;;; -244739;9;0;false;false;63;95;191;;; -244748;1;0;false;false;;;;;; -244749;4;0;false;false;63;95;191;;; -244753;1;0;false;false;;;;;; -244754;4;0;false;false;63;95;191;;; -244758;1;0;false;false;;;;;; -244759;7;0;false;false;63;95;191;;; -244766;1;0;false;false;;;;;; -244767;7;0;false;false;63;95;191;;; -244774;1;0;false;false;;;;;; -244775;2;0;false;false;63;95;191;;; -244777;1;0;false;false;;;;;; -244778;5;0;false;false;63;95;191;;; -244783;1;0;false;false;;;;;; -244784;2;0;false;false;63;95;191;;; -244786;1;0;false;false;;;;;; -244787;2;0;false;false;63;95;191;;; -244789;1;0;false;false;;;;;; -244790;5;0;false;false;63;95;191;;; -244795;1;0;false;false;;;;;; -244796;3;0;false;false;63;95;191;;; -244799;1;0;false;false;;;;;; -244800;4;0;false;false;63;95;191;;; -244804;1;0;false;false;;;;;; -244805;10;0;false;false;63;95;191;;; -244815;3;0;false;false;;;;;; -244818;1;0;false;false;63;95;191;;; -244819;1;0;false;false;;;;;; -244820;5;0;false;false;127;127;159;;; -244825;4;0;false;false;;;;;; -244829;2;0;false;false;63;95;191;;; -244831;2;0;false;false;;;;;; -244833;6;1;false;false;127;0;85;;; -244839;1;0;false;false;;;;;; -244840;4;1;false;false;127;0;85;;; -244844;1;0;false;false;;;;;; -244845;18;0;false;false;0;0;0;;; -244863;1;0;false;false;;;;;; -244864;6;0;false;false;0;0;0;;; -244870;1;0;false;false;;;;;; -244871;1;0;false;false;0;0;0;;; -244872;3;0;false;false;;;;;; -244875;14;0;false;false;0;0;0;;; -244889;3;0;false;false;;;;;; -244892;2;1;false;false;127;0;85;;; -244894;1;0;false;false;;;;;; -244895;6;0;false;false;0;0;0;;; -244901;1;0;false;false;;;;;; -244902;2;0;false;false;0;0;0;;; -244904;1;0;false;false;;;;;; -244905;4;1;false;false;127;0;85;;; -244909;1;0;false;false;0;0;0;;; -244910;1;0;false;false;;;;;; -244911;9;0;false;false;0;0;0;;; -244920;1;0;false;false;;;;;; -244921;26;0;false;false;0;0;0;;; -244947;4;0;false;false;;;;;; -244951;21;0;false;false;0;0;0;;; -244972;1;0;false;false;;;;;; -244973;9;0;false;false;0;0;0;;; -244982;2;0;false;false;;;;;; -244984;1;0;false;false;0;0;0;;; -244985;2;0;false;false;;;;;; -244987;3;0;false;false;63;95;191;;; -244990;3;0;false;false;;;;;; -244993;1;0;false;false;63;95;191;;; -244994;1;0;false;false;;;;;; -244995;4;0;false;false;63;95;191;;; -244999;1;0;false;false;;;;;; -245000;3;0;false;false;63;95;191;;; -245003;1;0;false;false;;;;;; -245004;10;0;false;false;63;95;191;;; -245014;1;0;false;false;;;;;; -245015;9;0;false;false;63;95;191;;; -245024;1;0;false;false;;;;;; -245025;10;0;false;false;63;95;191;;; -245035;1;0;false;false;;;;;; -245036;5;0;false;false;63;95;191;;; -245041;1;0;false;false;;;;;; -245042;2;0;false;false;63;95;191;;; -245044;1;0;false;false;;;;;; -245045;3;0;false;false;63;95;191;;; -245048;1;0;false;false;;;;;; -245049;5;0;false;false;63;95;191;;; -245054;1;0;false;false;;;;;; -245055;9;0;false;false;63;95;191;;; -245064;3;0;false;false;;;;;; -245067;1;0;false;false;63;95;191;;; -245068;1;0;false;false;;;;;; -245069;2;0;false;false;63;95;191;;; -245071;1;0;false;false;;;;;; -245072;3;0;false;false;63;95;191;;; -245075;1;0;false;false;;;;;; -245076;9;0;false;false;63;95;191;;; -245085;1;0;false;false;;;;;; -245086;2;0;false;false;63;95;191;;; -245088;1;0;false;false;;;;;; -245089;2;0;false;false;63;95;191;;; -245091;1;0;false;false;;;;;; -245092;3;0;false;false;63;95;191;;; -245095;1;0;false;false;;;;;; -245096;7;0;false;false;63;95;191;;; -245103;1;0;false;false;;;;;; -245104;6;0;false;false;63;95;191;;; -245110;1;0;false;false;;;;;; -245111;5;0;false;false;63;95;191;;; -245116;1;0;false;false;;;;;; -245117;3;0;false;false;63;95;191;;; -245120;1;0;false;false;;;;;; -245121;3;0;false;false;63;95;191;;; -245124;1;0;false;false;;;;;; -245125;7;0;false;false;63;95;191;;; -245132;3;0;false;false;;;;;; -245135;1;0;false;false;63;95;191;;; -245136;1;0;false;false;;;;;; -245137;2;0;false;false;63;95;191;;; -245139;1;0;false;false;;;;;; -245140;3;0;false;false;63;95;191;;; -245143;1;0;false;false;;;;;; -245144;8;0;false;false;63;95;191;;; -245152;1;0;false;false;;;;;; -245153;2;0;false;false;63;95;191;;; -245155;1;0;false;false;;;;;; -245156;5;0;false;false;63;95;191;;; -245161;3;0;false;false;;;;;; -245164;1;0;false;false;63;95;191;;; -245165;3;0;false;false;;;;;; -245168;1;0;false;false;63;95;191;;; -245169;1;0;false;false;;;;;; -245170;7;1;false;false;127;159;191;;; -245177;5;0;false;false;63;95;191;;; -245182;1;0;false;false;;;;;; -245183;3;0;false;false;63;95;191;;; -245186;1;0;false;false;;;;;; -245187;3;0;false;false;63;95;191;;; -245190;1;0;false;false;;;;;; -245191;5;0;false;false;63;95;191;;; -245196;1;0;false;false;;;;;; -245197;3;0;false;false;63;95;191;;; -245200;1;0;false;false;;;;;; -245201;5;0;false;false;63;95;191;;; -245206;3;0;false;false;;;;;; -245209;1;0;false;false;63;95;191;;; -245210;3;0;false;false;;;;;; -245213;1;0;false;false;63;95;191;;; -245214;1;0;false;false;;;;;; -245215;11;1;false;false;127;159;191;;; -245226;24;0;false;false;63;95;191;;; -245250;1;0;false;false;;;;;; -245251;4;0;false;false;127;127;159;;; -245255;3;0;false;false;;;;;; -245258;1;0;false;false;63;95;191;;; -245259;4;0;false;false;;;;;; -245263;4;0;false;false;127;127;159;;; -245267;22;0;false;false;63;95;191;;; -245289;1;0;false;false;;;;;; -245290;1;0;false;false;127;127;159;;; -245291;1;0;false;false;;;;;; -245292;2;0;false;false;63;95;191;;; -245294;1;0;false;false;;;;;; -245295;3;0;false;false;63;95;191;;; -245298;1;0;false;false;;;;;; -245299;8;0;false;false;63;95;191;;; -245307;1;0;false;false;;;;;; -245308;3;0;false;false;63;95;191;;; -245311;1;0;false;false;;;;;; -245312;4;0;false;false;63;95;191;;; -245316;1;0;false;false;;;;;; -245317;8;0;false;false;63;95;191;;; -245325;5;0;false;false;127;127;159;;; -245330;4;0;false;false;;;;;; -245334;1;0;false;false;63;95;191;;; -245335;1;0;false;false;;;;;; -245336;5;0;false;false;127;127;159;;; -245341;3;0;false;false;;;;;; -245344;1;0;false;false;63;95;191;;; -245345;1;0;false;false;;;;;; -245346;11;1;false;false;127;159;191;;; -245357;12;0;false;false;63;95;191;;; -245369;1;0;false;false;;;;;; -245370;4;0;false;false;127;127;159;;; -245374;3;0;false;false;;;;;; -245377;1;0;false;false;63;95;191;;; -245378;4;0;false;false;;;;;; -245382;4;0;false;false;127;127;159;;; -245386;21;0;false;false;63;95;191;;; -245407;1;0;false;false;;;;;; -245408;1;0;false;false;127;127;159;;; -245409;1;0;false;false;;;;;; -245410;2;0;false;false;63;95;191;;; -245412;1;0;false;false;;;;;; -245413;3;0;false;false;63;95;191;;; -245416;1;0;false;false;;;;;; -245417;8;0;false;false;63;95;191;;; -245425;1;0;false;false;;;;;; -245426;3;0;false;false;63;95;191;;; -245429;1;0;false;false;;;;;; -245430;4;0;false;false;63;95;191;;; -245434;1;0;false;false;;;;;; -245435;8;0;false;false;63;95;191;;; -245443;5;0;false;false;127;127;159;;; -245448;3;0;false;false;;;;;; -245451;1;0;false;false;63;95;191;;; -245452;4;0;false;false;;;;;; -245456;4;0;false;false;127;127;159;;; -245460;27;0;false;false;63;95;191;;; -245487;1;0;false;false;;;;;; -245488;1;0;false;false;127;127;159;;; -245489;1;0;false;false;;;;;; -245490;2;0;false;false;63;95;191;;; -245492;1;0;false;false;;;;;; -245493;3;0;false;false;63;95;191;;; -245496;1;0;false;false;;;;;; -245497;6;0;false;false;63;95;191;;; -245503;1;0;false;false;;;;;; -245504;4;0;false;false;63;95;191;;; -245508;1;0;false;false;;;;;; -245509;3;0;false;false;63;95;191;;; -245512;1;0;false;false;;;;;; -245513;6;0;false;false;63;95;191;;; -245519;1;0;false;false;;;;;; -245520;4;0;false;false;63;95;191;;; -245524;1;0;false;false;;;;;; -245525;7;0;false;false;63;95;191;;; -245532;1;0;false;false;;;;;; -245533;3;0;false;false;63;95;191;;; -245536;1;0;false;false;;;;;; -245537;8;0;false;false;63;95;191;;; -245545;5;0;false;false;127;127;159;;; -245550;3;0;false;false;;;;;; -245553;1;0;false;false;63;95;191;;; -245554;1;0;false;false;;;;;; -245555;5;0;false;false;127;127;159;;; -245560;3;0;false;false;;;;;; -245563;1;0;false;false;63;95;191;;; -245564;1;0;false;false;;;;;; -245565;7;1;false;false;127;159;191;;; -245572;3;0;false;false;63;95;191;;; -245575;3;0;false;false;;;;;; -245578;2;0;false;false;63;95;191;;; -245580;2;0;false;false;;;;;; -245582;6;1;false;false;127;0;85;;; -245588;1;0;false;false;;;;;; -245589;4;1;false;false;127;0;85;;; -245593;1;0;false;false;;;;;; -245594;22;0;false;false;0;0;0;;; -245616;1;0;false;false;;;;;; -245617;6;0;false;false;0;0;0;;; -245623;1;0;false;false;;;;;; -245624;6;0;false;false;0;0;0;;; -245630;1;0;false;false;;;;;; -245631;1;0;false;false;0;0;0;;; -245632;3;0;false;false;;;;;; -245635;11;0;false;false;0;0;0;;; -245646;1;0;false;false;;;;;; -245647;3;0;false;false;0;0;0;;; -245650;3;0;false;false;;;;;; -245653;2;1;false;false;127;0;85;;; -245655;1;0;false;false;;;;;; -245656;6;0;false;false;0;0;0;;; -245662;1;0;false;false;;;;;; -245663;2;0;false;false;0;0;0;;; -245665;1;0;false;false;;;;;; -245666;4;1;false;false;127;0;85;;; -245670;1;0;false;false;0;0;0;;; -245671;1;0;false;false;;;;;; -245672;1;0;false;false;0;0;0;;; -245673;4;0;false;false;;;;;; -245677;2;1;false;false;127;0;85;;; -245679;1;0;false;false;;;;;; -245680;20;0;false;false;0;0;0;;; -245700;1;0;false;false;;;;;; -245701;38;0;false;false;0;0;0;;; -245739;3;0;false;false;;;;;; -245742;1;0;false;false;0;0;0;;; -245743;3;0;false;false;;;;;; -245746;19;0;false;false;0;0;0;;; -245765;1;0;false;false;;;;;; -245766;1;0;false;false;0;0;0;;; -245767;1;0;false;false;;;;;; -245768;6;0;false;false;0;0;0;;; -245774;3;0;false;false;;;;;; -245777;9;0;false;false;0;0;0;;; -245786;2;0;false;false;;;;;; -245788;1;0;false;false;0;0;0;;; -245789;3;0;false;false;;;;;; -245792;3;0;false;false;63;95;191;;; -245795;3;0;false;false;;;;;; -245798;1;0;false;false;63;95;191;;; -245799;1;0;false;false;;;;;; -245800;4;0;false;false;63;95;191;;; -245804;1;0;false;false;;;;;; -245805;3;0;false;false;63;95;191;;; -245808;1;0;false;false;;;;;; -245809;10;0;false;false;63;95;191;;; -245819;1;0;false;false;;;;;; -245820;9;0;false;false;63;95;191;;; -245829;1;0;false;false;;;;;; -245830;10;0;false;false;63;95;191;;; -245840;1;0;false;false;;;;;; -245841;5;0;false;false;63;95;191;;; -245846;1;0;false;false;;;;;; -245847;2;0;false;false;63;95;191;;; -245849;1;0;false;false;;;;;; -245850;3;0;false;false;63;95;191;;; -245853;1;0;false;false;;;;;; -245854;5;0;false;false;63;95;191;;; -245859;1;0;false;false;;;;;; -245860;9;0;false;false;63;95;191;;; -245869;3;0;false;false;;;;;; -245872;1;0;false;false;63;95;191;;; -245873;1;0;false;false;;;;;; -245874;2;0;false;false;63;95;191;;; -245876;1;0;false;false;;;;;; -245877;3;0;false;false;63;95;191;;; -245880;1;0;false;false;;;;;; -245881;9;0;false;false;63;95;191;;; -245890;1;0;false;false;;;;;; -245891;2;0;false;false;63;95;191;;; -245893;1;0;false;false;;;;;; -245894;2;0;false;false;63;95;191;;; -245896;1;0;false;false;;;;;; -245897;3;0;false;false;63;95;191;;; -245900;1;0;false;false;;;;;; -245901;7;0;false;false;63;95;191;;; -245908;1;0;false;false;;;;;; -245909;6;0;false;false;63;95;191;;; -245915;1;0;false;false;;;;;; -245916;5;0;false;false;63;95;191;;; -245921;1;0;false;false;;;;;; -245922;3;0;false;false;63;95;191;;; -245925;1;0;false;false;;;;;; -245926;3;0;false;false;63;95;191;;; -245929;1;0;false;false;;;;;; -245930;7;0;false;false;63;95;191;;; -245937;3;0;false;false;;;;;; -245940;1;0;false;false;63;95;191;;; -245941;1;0;false;false;;;;;; -245942;2;0;false;false;63;95;191;;; -245944;1;0;false;false;;;;;; -245945;3;0;false;false;63;95;191;;; -245948;1;0;false;false;;;;;; -245949;8;0;false;false;63;95;191;;; -245957;1;0;false;false;;;;;; -245958;2;0;false;false;63;95;191;;; -245960;1;0;false;false;;;;;; -245961;5;0;false;false;63;95;191;;; -245966;3;0;false;false;;;;;; -245969;1;0;false;false;63;95;191;;; -245970;3;0;false;false;;;;;; -245973;1;0;false;false;63;95;191;;; -245974;1;0;false;false;;;;;; -245975;7;1;false;false;127;159;191;;; -245982;5;0;false;false;63;95;191;;; -245987;1;0;false;false;;;;;; -245988;3;0;false;false;63;95;191;;; -245991;1;0;false;false;;;;;; -245992;3;0;false;false;63;95;191;;; -245995;1;0;false;false;;;;;; -245996;5;0;false;false;63;95;191;;; -246001;1;0;false;false;;;;;; -246002;3;0;false;false;63;95;191;;; -246005;1;0;false;false;;;;;; -246006;5;0;false;false;63;95;191;;; -246011;3;0;false;false;;;;;; -246014;1;0;false;false;63;95;191;;; -246015;3;0;false;false;;;;;; -246018;1;0;false;false;63;95;191;;; -246019;1;0;false;false;;;;;; -246020;11;1;false;false;127;159;191;;; -246031;24;0;false;false;63;95;191;;; -246055;1;0;false;false;;;;;; -246056;4;0;false;false;127;127;159;;; -246060;3;0;false;false;;;;;; -246063;1;0;false;false;63;95;191;;; -246064;4;0;false;false;;;;;; -246068;4;0;false;false;127;127;159;;; -246072;22;0;false;false;63;95;191;;; -246094;1;0;false;false;;;;;; -246095;1;0;false;false;127;127;159;;; -246096;1;0;false;false;;;;;; -246097;2;0;false;false;63;95;191;;; -246099;1;0;false;false;;;;;; -246100;3;0;false;false;63;95;191;;; -246103;1;0;false;false;;;;;; -246104;8;0;false;false;63;95;191;;; -246112;1;0;false;false;;;;;; -246113;3;0;false;false;63;95;191;;; -246116;1;0;false;false;;;;;; -246117;4;0;false;false;63;95;191;;; -246121;1;0;false;false;;;;;; -246122;8;0;false;false;63;95;191;;; -246130;5;0;false;false;127;127;159;;; -246135;4;0;false;false;;;;;; -246139;1;0;false;false;63;95;191;;; -246140;1;0;false;false;;;;;; -246141;5;0;false;false;127;127;159;;; -246146;3;0;false;false;;;;;; -246149;1;0;false;false;63;95;191;;; -246150;1;0;false;false;;;;;; -246151;11;1;false;false;127;159;191;;; -246162;12;0;false;false;63;95;191;;; -246174;1;0;false;false;;;;;; -246175;4;0;false;false;127;127;159;;; -246179;3;0;false;false;;;;;; -246182;1;0;false;false;63;95;191;;; -246183;4;0;false;false;;;;;; -246187;4;0;false;false;127;127;159;;; -246191;21;0;false;false;63;95;191;;; -246212;1;0;false;false;;;;;; -246213;1;0;false;false;127;127;159;;; -246214;1;0;false;false;;;;;; -246215;2;0;false;false;63;95;191;;; -246217;1;0;false;false;;;;;; -246218;3;0;false;false;63;95;191;;; -246221;1;0;false;false;;;;;; -246222;8;0;false;false;63;95;191;;; -246230;1;0;false;false;;;;;; -246231;3;0;false;false;63;95;191;;; -246234;1;0;false;false;;;;;; -246235;4;0;false;false;63;95;191;;; -246239;1;0;false;false;;;;;; -246240;8;0;false;false;63;95;191;;; -246248;5;0;false;false;127;127;159;;; -246253;3;0;false;false;;;;;; -246256;1;0;false;false;63;95;191;;; -246257;4;0;false;false;;;;;; -246261;4;0;false;false;127;127;159;;; -246265;27;0;false;false;63;95;191;;; -246292;1;0;false;false;;;;;; -246293;1;0;false;false;127;127;159;;; -246294;1;0;false;false;;;;;; -246295;2;0;false;false;63;95;191;;; -246297;1;0;false;false;;;;;; -246298;3;0;false;false;63;95;191;;; -246301;1;0;false;false;;;;;; -246302;6;0;false;false;63;95;191;;; -246308;1;0;false;false;;;;;; -246309;4;0;false;false;63;95;191;;; -246313;1;0;false;false;;;;;; -246314;3;0;false;false;63;95;191;;; -246317;1;0;false;false;;;;;; -246318;6;0;false;false;63;95;191;;; -246324;1;0;false;false;;;;;; -246325;4;0;false;false;63;95;191;;; -246329;1;0;false;false;;;;;; -246330;7;0;false;false;63;95;191;;; -246337;1;0;false;false;;;;;; -246338;3;0;false;false;63;95;191;;; -246341;1;0;false;false;;;;;; -246342;8;0;false;false;63;95;191;;; -246350;5;0;false;false;127;127;159;;; -246355;3;0;false;false;;;;;; -246358;1;0;false;false;63;95;191;;; -246359;1;0;false;false;;;;;; -246360;5;0;false;false;127;127;159;;; -246365;3;0;false;false;;;;;; -246368;1;0;false;false;63;95;191;;; -246369;1;0;false;false;;;;;; -246370;7;1;false;false;127;159;191;;; -246377;3;0;false;false;63;95;191;;; -246380;3;0;false;false;;;;;; -246383;2;0;false;false;63;95;191;;; -246385;2;0;false;false;;;;;; -246387;6;1;false;false;127;0;85;;; -246393;1;0;false;false;;;;;; -246394;4;1;false;false;127;0;85;;; -246398;1;0;false;false;;;;;; -246399;22;0;false;false;0;0;0;;; -246421;1;0;false;false;;;;;; -246422;6;0;false;false;0;0;0;;; -246428;1;0;false;false;;;;;; -246429;6;0;false;false;0;0;0;;; -246435;1;0;false;false;;;;;; -246436;1;0;false;false;0;0;0;;; -246437;3;0;false;false;;;;;; -246440;11;0;false;false;0;0;0;;; -246451;1;0;false;false;;;;;; -246452;3;0;false;false;0;0;0;;; -246455;3;0;false;false;;;;;; -246458;2;1;false;false;127;0;85;;; -246460;1;0;false;false;;;;;; -246461;6;0;false;false;0;0;0;;; -246467;1;0;false;false;;;;;; -246468;2;0;false;false;0;0;0;;; -246470;1;0;false;false;;;;;; -246471;4;1;false;false;127;0;85;;; -246475;1;0;false;false;0;0;0;;; -246476;1;0;false;false;;;;;; -246477;1;0;false;false;0;0;0;;; -246478;4;0;false;false;;;;;; -246482;2;1;false;false;127;0;85;;; -246484;1;0;false;false;;;;;; -246485;20;0;false;false;0;0;0;;; -246505;1;0;false;false;;;;;; -246506;38;0;false;false;0;0;0;;; -246544;3;0;false;false;;;;;; -246547;1;0;false;false;0;0;0;;; -246548;3;0;false;false;;;;;; -246551;19;0;false;false;0;0;0;;; -246570;1;0;false;false;;;;;; -246571;1;0;false;false;0;0;0;;; -246572;1;0;false;false;;;;;; -246573;6;0;false;false;0;0;0;;; -246579;3;0;false;false;;;;;; -246582;9;0;false;false;0;0;0;;; -246591;2;0;false;false;;;;;; -246593;1;0;false;false;0;0;0;;; -246594;3;0;false;false;;;;;; -246597;3;0;false;false;63;95;191;;; -246600;4;0;false;false;;;;;; -246604;1;0;false;false;63;95;191;;; -246605;1;0;false;false;;;;;; -246606;4;0;false;false;63;95;191;;; -246610;1;0;false;false;;;;;; -246611;3;0;false;false;63;95;191;;; -246614;1;0;false;false;;;;;; -246615;9;0;false;false;63;95;191;;; -246624;1;0;false;false;;;;;; -246625;3;0;false;false;63;95;191;;; -246628;1;0;false;false;;;;;; -246629;7;0;false;false;63;95;191;;; -246636;1;0;false;false;;;;;; -246637;2;0;false;false;63;95;191;;; -246639;1;0;false;false;;;;;; -246640;4;0;false;false;63;95;191;;; -246644;1;0;false;false;;;;;; -246645;5;0;false;false;63;95;191;;; -246650;3;0;false;false;;;;;; -246653;1;0;false;false;63;95;191;;; -246654;1;0;false;false;;;;;; -246655;3;0;false;false;127;127;159;;; -246658;3;0;false;false;;;;;; -246661;1;0;false;false;63;95;191;;; -246662;1;0;false;false;;;;;; -246663;8;0;false;false;63;95;191;;; -246671;1;0;false;false;;;;;; -246672;2;0;false;false;63;95;191;;; -246674;1;0;false;false;;;;;; -246675;4;0;false;false;63;95;191;;; -246679;1;0;false;false;;;;;; -246680;6;0;false;false;63;95;191;;; -246686;2;0;false;false;;;;;; -246688;4;0;false;false;63;95;191;;; -246692;1;0;false;false;;;;;; -246693;10;0;false;false;63;95;191;;; -246703;1;0;false;false;;;;;; -246704;3;0;false;false;63;95;191;;; -246707;1;0;false;false;;;;;; -246708;9;0;false;false;63;95;191;;; -246717;1;0;false;false;;;;;; -246718;2;0;false;false;63;95;191;;; -246720;1;0;false;false;;;;;; -246721;5;0;false;false;63;95;191;;; -246726;1;0;false;false;;;;;; -246727;2;0;false;false;63;95;191;;; -246729;3;0;false;false;;;;;; -246732;1;0;false;false;63;95;191;;; -246733;1;0;false;false;;;;;; -246734;5;0;false;false;63;95;191;;; -246739;1;0;false;false;;;;;; -246740;10;0;false;false;63;95;191;;; -246750;2;0;false;false;;;;;; -246752;2;0;false;false;63;95;191;;; -246754;1;0;false;false;;;;;; -246755;1;0;false;false;63;95;191;;; -246756;1;0;false;false;;;;;; -246757;4;0;false;false;63;95;191;;; -246761;1;0;false;false;;;;;; -246762;6;0;false;false;63;95;191;;; -246768;1;0;false;false;;;;;; -246769;4;0;false;false;63;95;191;;; -246773;1;0;false;false;;;;;; -246774;8;0;false;false;63;95;191;;; -246782;1;0;false;false;;;;;; -246783;1;0;false;false;63;95;191;;; -246784;1;0;false;false;;;;;; -246785;11;0;false;false;63;95;191;;; -246796;1;0;false;false;;;;;; -246797;5;0;false;false;63;95;191;;; -246802;1;0;false;false;;;;;; -246803;3;0;false;false;63;95;191;;; -246806;4;0;false;false;;;;;; -246810;1;0;false;false;63;95;191;;; -246811;1;0;false;false;;;;;; -246812;3;0;false;false;63;95;191;;; -246815;1;0;false;false;;;;;; -246816;5;0;false;false;63;95;191;;; -246821;1;0;false;false;;;;;; -246822;10;0;false;false;63;95;191;;; -246832;1;0;false;false;;;;;; -246833;7;0;false;false;63;95;191;;; -246840;1;0;false;false;;;;;; -246841;4;0;false;false;63;95;191;;; -246845;1;0;false;false;;;;;; -246846;4;0;false;false;63;95;191;;; -246850;3;0;false;false;;;;;; -246853;1;0;false;false;63;95;191;;; -246854;1;0;false;false;;;;;; -246855;4;0;false;false;127;127;159;;; -246859;3;0;false;false;;;;;; -246862;1;0;false;false;63;95;191;;; -246863;3;0;false;false;;;;;; -246866;1;0;false;false;63;95;191;;; -246867;1;0;false;false;;;;;; -246868;7;1;false;false;127;159;191;;; -246875;5;0;false;false;63;95;191;;; -246880;1;0;false;false;;;;;; -246881;9;0;false;false;63;95;191;;; -246890;1;0;false;false;;;;;; -246891;5;0;false;false;63;95;191;;; -246896;1;0;false;false;;;;;; -246897;7;0;false;false;63;95;191;;; -246904;1;0;false;false;;;;;; -246905;3;0;false;false;63;95;191;;; -246908;1;0;false;false;;;;;; -246909;5;0;false;false;63;95;191;;; -246914;1;0;false;false;;;;;; -246915;4;0;false;false;63;95;191;;; -246919;1;0;false;false;;;;;; -246920;2;0;false;false;63;95;191;;; -246922;1;0;false;false;;;;;; -246923;6;0;false;false;63;95;191;;; -246929;1;0;false;false;;;;;; -246930;2;0;false;false;63;95;191;;; -246932;1;0;false;false;;;;;; -246933;3;0;false;false;63;95;191;;; -246936;4;0;false;false;;;;;; -246940;1;0;false;false;63;95;191;;; -246941;2;0;false;false;;;;;; -246943;9;0;false;false;63;95;191;;; -246952;1;0;false;false;;;;;; -246953;5;0;false;false;63;95;191;;; -246958;1;0;false;false;;;;;; -246959;4;0;false;false;63;95;191;;; -246963;1;0;false;false;;;;;; -246964;5;0;false;false;63;95;191;;; -246969;1;0;false;false;;;;;; -246970;1;0;false;false;63;95;191;;; -246971;1;0;false;false;;;;;; -246972;4;0;false;false;63;95;191;;; -246976;3;0;false;false;;;;;; -246979;1;0;false;false;63;95;191;;; -246980;1;0;false;false;;;;;; -246981;7;1;false;false;127;159;191;;; -246988;3;0;false;false;63;95;191;;; -246991;1;0;false;false;;;;;; -246992;9;0;false;false;63;95;191;;; -247001;1;0;false;false;;;;;; -247002;3;0;false;false;63;95;191;;; -247005;1;0;false;false;;;;;; -247006;6;0;false;false;63;95;191;;; -247012;3;0;false;false;;;;;; -247015;1;0;false;false;63;95;191;;; -247016;1;0;false;false;;;;;; -247017;5;1;false;false;127;159;191;;; -247022;27;0;false;false;63;95;191;;; -247049;3;0;false;false;;;;;; -247052;1;0;false;false;63;95;191;;; -247053;1;0;false;false;;;;;; -247054;11;1;false;false;127;159;191;;; -247065;12;0;false;false;63;95;191;;; -247077;1;0;false;false;;;;;; -247078;4;0;false;false;127;127;159;;; -247082;3;0;false;false;;;;;; -247085;1;0;false;false;63;95;191;;; -247086;4;0;false;false;;;;;; -247090;4;0;false;false;127;127;159;;; -247094;21;0;false;false;63;95;191;;; -247115;1;0;false;false;;;;;; -247116;1;0;false;false;127;127;159;;; -247117;1;0;false;false;;;;;; -247118;2;0;false;false;63;95;191;;; -247120;1;0;false;false;;;;;; -247121;3;0;false;false;63;95;191;;; -247124;1;0;false;false;;;;;; -247125;8;0;false;false;63;95;191;;; -247133;1;0;false;false;;;;;; -247134;3;0;false;false;63;95;191;;; -247137;1;0;false;false;;;;;; -247138;4;0;false;false;63;95;191;;; -247142;1;0;false;false;;;;;; -247143;8;0;false;false;63;95;191;;; -247151;5;0;false;false;127;127;159;;; -247156;3;0;false;false;;;;;; -247159;1;0;false;false;63;95;191;;; -247160;4;0;false;false;;;;;; -247164;4;0;false;false;127;127;159;;; -247168;27;0;false;false;63;95;191;;; -247195;1;0;false;false;;;;;; -247196;1;0;false;false;127;127;159;;; -247197;1;0;false;false;;;;;; -247198;2;0;false;false;63;95;191;;; -247200;1;0;false;false;;;;;; -247201;3;0;false;false;63;95;191;;; -247204;1;0;false;false;;;;;; -247205;6;0;false;false;63;95;191;;; -247211;1;0;false;false;;;;;; -247212;4;0;false;false;63;95;191;;; -247216;1;0;false;false;;;;;; -247217;3;0;false;false;63;95;191;;; -247220;1;0;false;false;;;;;; -247221;6;0;false;false;63;95;191;;; -247227;1;0;false;false;;;;;; -247228;4;0;false;false;63;95;191;;; -247232;1;0;false;false;;;;;; -247233;7;0;false;false;63;95;191;;; -247240;1;0;false;false;;;;;; -247241;3;0;false;false;63;95;191;;; -247244;1;0;false;false;;;;;; -247245;8;0;false;false;63;95;191;;; -247253;5;0;false;false;127;127;159;;; -247258;3;0;false;false;;;;;; -247261;1;0;false;false;63;95;191;;; -247262;1;0;false;false;;;;;; -247263;5;0;false;false;127;127;159;;; -247268;3;0;false;false;;;;;; -247271;1;0;false;false;63;95;191;;; -247272;1;0;false;false;;;;;; -247273;11;1;false;false;127;159;191;;; -247284;24;0;false;false;63;95;191;;; -247308;1;0;false;false;;;;;; -247309;4;0;false;false;127;127;159;;; -247313;3;0;false;false;;;;;; -247316;1;0;false;false;63;95;191;;; -247317;3;0;false;false;;;;;; -247320;4;0;false;false;127;127;159;;; -247324;22;0;false;false;63;95;191;;; -247346;1;0;false;false;;;;;; -247347;4;0;false;false;63;95;191;;; -247351;1;0;false;false;;;;;; -247352;6;0;false;false;63;95;191;;; -247358;1;0;false;false;;;;;; -247359;3;0;false;false;63;95;191;;; -247362;1;0;false;false;;;;;; -247363;5;0;false;false;63;95;191;;; -247368;1;0;false;false;;;;;; -247369;2;0;false;false;63;95;191;;; -247371;1;0;false;false;;;;;; -247372;3;0;false;false;63;95;191;;; -247375;1;0;false;false;;;;;; -247376;3;0;false;false;63;95;191;;; -247379;1;0;false;false;;;;;; -247380;2;0;false;false;63;95;191;;; -247382;1;0;false;false;;;;;; -247383;3;0;false;false;63;95;191;;; -247386;1;0;false;false;;;;;; -247387;9;0;false;false;63;95;191;;; -247396;1;0;false;false;;;;;; -247397;5;0;false;false;63;95;191;;; -247402;1;0;false;false;;;;;; -247403;2;0;false;false;63;95;191;;; -247405;1;0;false;false;;;;;; -247406;6;0;false;false;63;95;191;;; -247412;1;0;false;false;;;;;; -247413;1;0;false;false;63;95;191;;; -247414;4;0;false;false;;;;;; -247418;1;0;false;false;63;95;191;;; -247419;1;0;false;false;;;;;; -247420;5;0;false;false;63;95;191;;; -247425;1;0;false;false;;;;;; -247426;4;0;false;false;63;95;191;;; -247430;1;0;false;false;;;;;; -247431;4;0;false;false;63;95;191;;; -247435;1;0;false;false;;;;;; -247436;9;0;false;false;63;95;191;;; -247445;1;0;false;false;;;;;; -247446;4;0;false;false;63;95;191;;; -247450;1;0;false;false;;;;;; -247451;4;0;false;false;63;95;191;;; -247455;1;0;false;false;;;;;; -247456;7;0;false;false;63;95;191;;; -247463;1;0;false;false;;;;;; -247464;7;0;false;false;63;95;191;;; -247471;1;0;false;false;;;;;; -247472;2;0;false;false;63;95;191;;; -247474;1;0;false;false;;;;;; -247475;5;0;false;false;63;95;191;;; -247480;1;0;false;false;;;;;; -247481;2;0;false;false;63;95;191;;; -247483;1;0;false;false;;;;;; -247484;2;0;false;false;63;95;191;;; -247486;1;0;false;false;;;;;; -247487;5;0;false;false;63;95;191;;; -247492;1;0;false;false;;;;;; -247493;3;0;false;false;63;95;191;;; -247496;1;0;false;false;;;;;; -247497;4;0;false;false;63;95;191;;; -247501;1;0;false;false;;;;;; -247502;10;0;false;false;63;95;191;;; -247512;3;0;false;false;;;;;; -247515;1;0;false;false;63;95;191;;; -247516;1;0;false;false;;;;;; -247517;5;0;false;false;127;127;159;;; -247522;3;0;false;false;;;;;; -247525;2;0;false;false;63;95;191;;; -247527;2;0;false;false;;;;;; -247529;6;1;false;false;127;0;85;;; -247535;1;0;false;false;;;;;; -247536;4;1;false;false;127;0;85;;; -247540;1;0;false;false;;;;;; -247541;13;0;false;false;0;0;0;;; -247554;3;1;false;false;127;0;85;;; -247557;1;0;false;false;;;;;; -247558;6;0;false;false;0;0;0;;; -247564;1;0;false;false;;;;;; -247565;3;1;false;false;127;0;85;;; -247568;1;0;false;false;;;;;; -247569;4;0;false;false;0;0;0;;; -247573;1;0;false;false;;;;;; -247574;1;0;false;false;0;0;0;;; -247575;3;0;false;false;;;;;; -247578;47;0;false;false;63;127;95;;; -247625;1;0;false;false;;;;;; -247626;24;0;false;false;0;0;0;;; -247650;1;0;false;false;;;;;; -247651;3;0;false;false;0;0;0;;; -247654;1;0;false;false;;;;;; -247655;1;0;false;false;0;0;0;;; -247656;1;0;false;false;;;;;; -247657;7;0;false;false;0;0;0;;; -247664;3;0;false;false;;;;;; -247667;16;0;false;false;0;0;0;;; -247683;2;0;false;false;;;;;; -247685;1;0;false;false;0;0;0;;; -247686;2;0;false;false;;;;;; -247688;3;0;false;false;63;95;191;;; -247691;4;0;false;false;;;;;; -247695;1;0;false;false;63;95;191;;; -247696;1;0;false;false;;;;;; -247697;4;0;false;false;63;95;191;;; -247701;1;0;false;false;;;;;; -247702;3;0;false;false;63;95;191;;; -247705;1;0;false;false;;;;;; -247706;10;0;false;false;63;95;191;;; -247716;1;0;false;false;;;;;; -247717;3;0;false;false;63;95;191;;; -247720;1;0;false;false;;;;;; -247721;3;0;false;false;63;95;191;;; -247724;1;0;false;false;;;;;; -247725;9;0;false;false;63;95;191;;; -247734;1;0;false;false;;;;;; -247735;3;0;false;false;63;95;191;;; -247738;1;0;false;false;;;;;; -247739;3;0;false;false;63;95;191;;; -247742;1;0;false;false;;;;;; -247743;2;0;false;false;63;95;191;;; -247745;1;0;false;false;;;;;; -247746;8;0;false;false;63;95;191;;; -247754;1;0;false;false;;;;;; -247755;4;0;false;false;63;95;191;;; -247759;1;0;false;false;;;;;; -247760;13;0;false;false;63;95;191;;; -247773;1;0;false;false;;;;;; -247774;2;0;false;false;63;95;191;;; -247776;1;0;false;false;;;;;; -247777;6;0;false;false;63;95;191;;; -247783;4;0;false;false;;;;;; -247787;1;0;false;false;63;95;191;;; -247788;1;0;false;false;;;;;; -247789;3;0;false;false;63;95;191;;; -247792;1;0;false;false;;;;;; -247793;9;0;false;false;63;95;191;;; -247802;1;0;false;false;;;;;; -247803;4;0;false;false;63;95;191;;; -247807;1;0;false;false;;;;;; -247808;5;0;false;false;63;95;191;;; -247813;1;0;false;false;;;;;; -247814;1;0;false;false;63;95;191;;; -247815;1;0;false;false;;;;;; -247816;8;0;false;false;63;95;191;;; -247824;1;0;false;false;;;;;; -247825;6;0;false;false;63;95;191;;; -247831;1;0;false;false;;;;;; -247832;6;0;false;false;63;95;191;;; -247838;1;0;false;false;;;;;; -247839;3;0;false;false;63;95;191;;; -247842;1;0;false;false;;;;;; -247843;5;0;false;false;63;95;191;;; -247848;1;0;false;false;;;;;; -247849;2;0;false;false;63;95;191;;; -247851;1;0;false;false;;;;;; -247852;3;0;false;false;63;95;191;;; -247855;1;0;false;false;;;;;; -247856;6;0;false;false;63;95;191;;; -247862;1;0;false;false;;;;;; -247863;5;0;false;false;63;95;191;;; -247868;1;0;false;false;;;;;; -247869;2;0;false;false;63;95;191;;; -247871;1;0;false;false;;;;;; -247872;3;0;false;false;63;95;191;;; -247875;4;0;false;false;;;;;; -247879;1;0;false;false;63;95;191;;; -247880;1;0;false;false;;;;;; -247881;10;0;false;false;63;95;191;;; -247891;1;0;false;false;;;;;; -247892;3;0;false;false;127;127;159;;; -247895;3;0;false;false;;;;;; -247898;1;0;false;false;63;95;191;;; -247899;3;0;false;false;;;;;; -247902;1;0;false;false;63;95;191;;; -247903;1;0;false;false;;;;;; -247904;7;1;false;false;127;159;191;;; -247911;5;0;false;false;63;95;191;;; -247916;1;0;false;false;;;;;; -247917;6;0;false;false;63;95;191;;; -247923;1;0;false;false;;;;;; -247924;2;0;false;false;63;95;191;;; -247926;1;0;false;false;;;;;; -247927;3;0;false;false;63;95;191;;; -247930;1;0;false;false;;;;;; -247931;5;0;false;false;63;95;191;;; -247936;1;0;false;false;;;;;; -247937;8;0;false;false;63;95;191;;; -247945;1;0;false;false;;;;;; -247946;9;0;false;false;63;95;191;;; -247955;3;0;false;false;;;;;; -247958;1;0;false;false;63;95;191;;; -247959;1;0;false;false;;;;;; -247960;7;1;false;false;127;159;191;;; -247967;6;0;false;false;63;95;191;;; -247973;1;0;false;false;;;;;; -247974;6;0;false;false;63;95;191;;; -247980;1;0;false;false;;;;;; -247981;2;0;false;false;63;95;191;;; -247983;1;0;false;false;;;;;; -247984;10;0;false;false;63;95;191;;; -247994;1;0;false;false;;;;;; -247995;2;0;false;false;63;95;191;;; -247997;1;0;false;false;;;;;; -247998;6;0;false;false;63;95;191;;; -248004;3;0;false;false;;;;;; -248007;1;0;false;false;63;95;191;;; -248008;4;0;false;false;;;;;; -248012;1;0;false;false;63;95;191;;; -248013;1;0;false;false;;;;;; -248014;11;1;false;false;127;159;191;;; -248025;12;0;false;false;63;95;191;;; -248037;1;0;false;false;;;;;; -248038;4;0;false;false;127;127;159;;; -248042;3;0;false;false;;;;;; -248045;1;0;false;false;63;95;191;;; -248046;4;0;false;false;;;;;; -248050;4;0;false;false;127;127;159;;; -248054;21;0;false;false;63;95;191;;; -248075;1;0;false;false;;;;;; -248076;1;0;false;false;127;127;159;;; -248077;1;0;false;false;;;;;; -248078;2;0;false;false;63;95;191;;; -248080;1;0;false;false;;;;;; -248081;3;0;false;false;63;95;191;;; -248084;1;0;false;false;;;;;; -248085;8;0;false;false;63;95;191;;; -248093;1;0;false;false;;;;;; -248094;3;0;false;false;63;95;191;;; -248097;1;0;false;false;;;;;; -248098;4;0;false;false;63;95;191;;; -248102;1;0;false;false;;;;;; -248103;8;0;false;false;63;95;191;;; -248111;5;0;false;false;127;127;159;;; -248116;3;0;false;false;;;;;; -248119;1;0;false;false;63;95;191;;; -248120;4;0;false;false;;;;;; -248124;4;0;false;false;127;127;159;;; -248128;27;0;false;false;63;95;191;;; -248155;1;0;false;false;;;;;; -248156;1;0;false;false;127;127;159;;; -248157;1;0;false;false;;;;;; -248158;2;0;false;false;63;95;191;;; -248160;1;0;false;false;;;;;; -248161;3;0;false;false;63;95;191;;; -248164;1;0;false;false;;;;;; -248165;6;0;false;false;63;95;191;;; -248171;1;0;false;false;;;;;; -248172;4;0;false;false;63;95;191;;; -248176;1;0;false;false;;;;;; -248177;3;0;false;false;63;95;191;;; -248180;1;0;false;false;;;;;; -248181;6;0;false;false;63;95;191;;; -248187;1;0;false;false;;;;;; -248188;4;0;false;false;63;95;191;;; -248192;1;0;false;false;;;;;; -248193;7;0;false;false;63;95;191;;; -248200;1;0;false;false;;;;;; -248201;3;0;false;false;63;95;191;;; -248204;1;0;false;false;;;;;; -248205;8;0;false;false;63;95;191;;; -248213;5;0;false;false;127;127;159;;; -248218;3;0;false;false;;;;;; -248221;1;0;false;false;63;95;191;;; -248222;1;0;false;false;;;;;; -248223;5;0;false;false;127;127;159;;; -248228;3;0;false;false;;;;;; -248231;1;0;false;false;63;95;191;;; -248232;1;0;false;false;;;;;; -248233;11;1;false;false;127;159;191;;; -248244;24;0;false;false;63;95;191;;; -248268;1;0;false;false;;;;;; -248269;4;0;false;false;127;127;159;;; -248273;3;0;false;false;;;;;; -248276;1;0;false;false;63;95;191;;; -248277;3;0;false;false;;;;;; -248280;4;0;false;false;127;127;159;;; -248284;22;0;false;false;63;95;191;;; -248306;1;0;false;false;;;;;; -248307;4;0;false;false;63;95;191;;; -248311;1;0;false;false;;;;;; -248312;6;0;false;false;63;95;191;;; -248318;1;0;false;false;;;;;; -248319;3;0;false;false;63;95;191;;; -248322;1;0;false;false;;;;;; -248323;5;0;false;false;63;95;191;;; -248328;1;0;false;false;;;;;; -248329;2;0;false;false;63;95;191;;; -248331;1;0;false;false;;;;;; -248332;3;0;false;false;63;95;191;;; -248335;1;0;false;false;;;;;; -248336;3;0;false;false;63;95;191;;; -248339;1;0;false;false;;;;;; -248340;2;0;false;false;63;95;191;;; -248342;1;0;false;false;;;;;; -248343;3;0;false;false;63;95;191;;; -248346;1;0;false;false;;;;;; -248347;9;0;false;false;63;95;191;;; -248356;1;0;false;false;;;;;; -248357;5;0;false;false;63;95;191;;; -248362;1;0;false;false;;;;;; -248363;2;0;false;false;63;95;191;;; -248365;1;0;false;false;;;;;; -248366;6;0;false;false;63;95;191;;; -248372;1;0;false;false;;;;;; -248373;1;0;false;false;63;95;191;;; -248374;4;0;false;false;;;;;; -248378;1;0;false;false;63;95;191;;; -248379;1;0;false;false;;;;;; -248380;5;0;false;false;63;95;191;;; -248385;1;0;false;false;;;;;; -248386;4;0;false;false;63;95;191;;; -248390;1;0;false;false;;;;;; -248391;4;0;false;false;63;95;191;;; -248395;1;0;false;false;;;;;; -248396;9;0;false;false;63;95;191;;; -248405;1;0;false;false;;;;;; -248406;4;0;false;false;63;95;191;;; -248410;1;0;false;false;;;;;; -248411;4;0;false;false;63;95;191;;; -248415;1;0;false;false;;;;;; -248416;7;0;false;false;63;95;191;;; -248423;1;0;false;false;;;;;; -248424;7;0;false;false;63;95;191;;; -248431;1;0;false;false;;;;;; -248432;2;0;false;false;63;95;191;;; -248434;1;0;false;false;;;;;; -248435;5;0;false;false;63;95;191;;; -248440;1;0;false;false;;;;;; -248441;2;0;false;false;63;95;191;;; -248443;1;0;false;false;;;;;; -248444;2;0;false;false;63;95;191;;; -248446;1;0;false;false;;;;;; -248447;5;0;false;false;63;95;191;;; -248452;1;0;false;false;;;;;; -248453;3;0;false;false;63;95;191;;; -248456;1;0;false;false;;;;;; -248457;4;0;false;false;63;95;191;;; -248461;1;0;false;false;;;;;; -248462;10;0;false;false;63;95;191;;; -248472;3;0;false;false;;;;;; -248475;1;0;false;false;63;95;191;;; -248476;1;0;false;false;;;;;; -248477;5;0;false;false;127;127;159;;; -248482;3;0;false;false;;;;;; -248485;2;0;false;false;63;95;191;;; -248487;2;0;false;false;;;;;; -248489;6;1;false;false;127;0;85;;; -248495;1;0;false;false;;;;;; -248496;4;1;false;false;127;0;85;;; -248500;1;0;false;false;;;;;; -248501;18;0;false;false;0;0;0;;; -248519;3;1;false;false;127;0;85;;; -248522;1;0;false;false;;;;;; -248523;6;0;false;false;0;0;0;;; -248529;1;0;false;false;;;;;; -248530;3;1;false;false;127;0;85;;; -248533;1;0;false;false;;;;;; -248534;7;0;false;false;0;0;0;;; -248541;1;0;false;false;;;;;; -248542;1;0;false;false;0;0;0;;; -248543;3;0;false;false;;;;;; -248546;14;0;false;false;0;0;0;;; -248560;3;0;false;false;;;;;; -248563;3;1;false;false;127;0;85;;; -248566;1;0;false;false;;;;;; -248567;13;0;false;false;0;0;0;;; -248580;1;0;false;false;;;;;; -248581;1;0;false;false;0;0;0;;; -248582;1;0;false;false;;;;;; -248583;15;0;false;false;0;0;0;;; -248598;3;0;false;false;;;;;; -248601;5;0;false;false;0;0;0;;; -248606;1;0;false;false;;;;;; -248607;1;0;false;false;0;0;0;;; -248608;1;0;false;false;;;;;; -248609;11;0;false;false;0;0;0;;; -248620;1;0;false;false;;;;;; -248621;8;0;false;false;0;0;0;;; -248629;1;0;false;false;;;;;; -248630;7;0;false;false;0;0;0;;; -248637;1;0;false;false;;;;;; -248638;16;0;false;false;0;0;0;;; -248654;3;0;false;false;;;;;; -248657;3;1;false;false;127;0;85;;; -248660;1;0;false;false;;;;;; -248661;3;0;false;false;0;0;0;;; -248664;1;0;false;false;;;;;; -248665;1;0;false;false;0;0;0;;; -248666;1;0;false;false;;;;;; -248667;5;0;false;false;0;0;0;;; -248672;1;0;false;false;;;;;; -248673;1;0;false;false;0;0;0;;; -248674;1;0;false;false;;;;;; -248675;7;0;false;false;0;0;0;;; -248682;3;0;false;false;;;;;; -248685;2;1;false;false;127;0;85;;; -248687;1;0;false;false;;;;;; -248688;4;0;false;false;0;0;0;;; -248692;1;0;false;false;;;;;; -248693;1;0;false;false;0;0;0;;; -248694;1;0;false;false;;;;;; -248695;2;0;false;false;0;0;0;;; -248697;1;0;false;false;;;;;; -248698;1;0;false;false;0;0;0;;; -248699;4;0;false;false;;;;;; -248703;6;0;false;false;0;0;0;;; -248709;1;0;false;false;;;;;; -248710;1;0;false;false;0;0;0;;; -248711;1;0;false;false;;;;;; -248712;7;0;false;false;0;0;0;;; -248719;3;0;false;false;;;;;; -248722;1;0;false;false;0;0;0;;; -248723;1;0;false;false;;;;;; -248724;4;1;false;false;127;0;85;;; -248728;1;0;false;false;;;;;; -248729;1;0;false;false;0;0;0;;; -248730;4;0;false;false;;;;;; -248734;2;1;false;false;127;0;85;;; -248736;1;0;false;false;;;;;; -248737;4;0;false;false;0;0;0;;; -248741;1;0;false;false;;;;;; -248742;1;0;false;false;0;0;0;;; -248743;1;0;false;false;;;;;; -248744;14;0;false;false;0;0;0;;; -248758;1;0;false;false;;;;;; -248759;6;0;false;false;0;0;0;;; -248765;1;0;false;false;;;;;; -248766;1;0;false;false;0;0;0;;; -248767;1;0;false;false;;;;;; -248768;13;0;false;false;0;0;0;;; -248781;1;0;false;false;;;;;; -248782;1;0;false;false;0;0;0;;; -248783;1;0;false;false;;;;;; -248784;6;0;false;false;0;0;0;;; -248790;3;0;false;false;;;;;; -248793;1;0;false;false;0;0;0;;; -248794;3;0;false;false;;;;;; -248797;2;1;false;false;127;0;85;;; -248799;1;0;false;false;;;;;; -248800;23;0;false;false;0;0;0;;; -248823;1;0;false;false;;;;;; -248824;2;0;false;false;0;0;0;;; -248826;1;0;false;false;;;;;; -248827;21;0;false;false;0;0;0;;; -248848;1;0;false;false;;;;;; -248849;1;0;false;false;0;0;0;;; -248850;1;0;false;false;;;;;; -248851;8;0;false;false;0;0;0;;; -248859;1;0;false;false;;;;;; -248860;1;0;false;false;0;0;0;;; -248861;4;0;false;false;;;;;; -248865;71;0;false;false;63;127;95;;; -248936;2;0;false;false;;;;;; -248938;78;0;false;false;63;127;95;;; -249016;2;0;false;false;;;;;; -249018;29;0;false;false;63;127;95;;; -249047;2;0;false;false;;;;;; -249049;38;0;false;false;0;0;0;;; -249087;3;0;false;false;;;;;; -249090;1;0;false;false;0;0;0;;; -249091;8;0;false;false;;;;;; -249099;27;0;false;false;0;0;0;;; -249126;1;0;false;false;;;;;; -249127;7;0;false;false;0;0;0;;; -249134;1;0;false;false;;;;;; -249135;5;1;false;false;127;0;85;;; -249140;2;0;false;false;0;0;0;;; -249142;3;0;false;false;;;;;; -249145;52;0;false;false;63;127;95;;; -249197;1;0;false;false;;;;;; -249198;19;0;false;false;0;0;0;;; -249217;2;0;false;false;;;;;; -249219;1;0;false;false;0;0;0;;; -249220;2;0;false;false;;;;;; -249222;3;0;false;false;63;95;191;;; -249225;4;0;false;false;;;;;; -249229;1;0;false;false;63;95;191;;; -249230;1;0;false;false;;;;;; -249231;4;0;false;false;63;95;191;;; -249235;1;0;false;false;;;;;; -249236;3;0;false;false;63;95;191;;; -249239;1;0;false;false;;;;;; -249240;10;0;false;false;63;95;191;;; -249250;4;0;false;false;;;;;; -249254;1;0;false;false;63;95;191;;; -249255;1;0;false;false;;;;;; -249256;3;0;false;false;63;95;191;;; -249259;1;0;false;false;;;;;; -249260;3;0;false;false;63;95;191;;; -249263;1;0;false;false;;;;;; -249264;9;0;false;false;63;95;191;;; -249273;1;0;false;false;;;;;; -249274;3;0;false;false;63;95;191;;; -249277;1;0;false;false;;;;;; -249278;3;0;false;false;63;95;191;;; -249281;1;0;false;false;;;;;; -249282;2;0;false;false;63;95;191;;; -249284;1;0;false;false;;;;;; -249285;8;0;false;false;63;95;191;;; -249293;1;0;false;false;;;;;; -249294;4;0;false;false;63;95;191;;; -249298;1;0;false;false;;;;;; -249299;13;0;false;false;63;95;191;;; -249312;1;0;false;false;;;;;; -249313;2;0;false;false;63;95;191;;; -249315;1;0;false;false;;;;;; -249316;6;0;false;false;63;95;191;;; -249322;4;0;false;false;;;;;; -249326;1;0;false;false;63;95;191;;; -249327;1;0;false;false;;;;;; -249328;3;0;false;false;63;95;191;;; -249331;1;0;false;false;;;;;; -249332;9;0;false;false;63;95;191;;; -249341;1;0;false;false;;;;;; -249342;4;0;false;false;63;95;191;;; -249346;1;0;false;false;;;;;; -249347;5;0;false;false;63;95;191;;; -249352;3;0;false;false;;;;;; -249355;1;0;false;false;63;95;191;;; -249356;1;0;false;false;;;;;; -249357;3;0;false;false;127;127;159;;; -249360;3;0;false;false;;;;;; -249363;1;0;false;false;63;95;191;;; -249364;3;0;false;false;;;;;; -249367;1;0;false;false;63;95;191;;; -249368;1;0;false;false;;;;;; -249369;7;1;false;false;127;159;191;;; -249376;5;0;false;false;63;95;191;;; -249381;1;0;false;false;;;;;; -249382;6;0;false;false;63;95;191;;; -249388;1;0;false;false;;;;;; -249389;2;0;false;false;63;95;191;;; -249391;1;0;false;false;;;;;; -249392;3;0;false;false;63;95;191;;; -249395;1;0;false;false;;;;;; -249396;5;0;false;false;63;95;191;;; -249401;1;0;false;false;;;;;; -249402;8;0;false;false;63;95;191;;; -249410;1;0;false;false;;;;;; -249411;10;0;false;false;63;95;191;;; -249421;1;0;false;false;;;;;; -249422;5;0;false;false;63;95;191;;; -249427;1;0;false;false;;;;;; -249428;2;0;false;false;63;95;191;;; -249430;1;0;false;false;;;;;; -249431;1;0;false;false;63;95;191;;; -249432;1;0;false;false;;;;;; -249433;4;0;false;false;63;95;191;;; -249437;1;0;false;false;;;;;; -249438;2;0;false;false;63;95;191;;; -249440;1;0;false;false;;;;;; -249441;5;0;false;false;63;95;191;;; -249446;3;0;false;false;;;;;; -249449;1;0;false;false;63;95;191;;; -249450;1;0;false;false;;;;;; -249451;7;1;false;false;127;159;191;;; -249458;6;0;false;false;63;95;191;;; -249464;1;0;false;false;;;;;; -249465;6;0;false;false;63;95;191;;; -249471;1;0;false;false;;;;;; -249472;2;0;false;false;63;95;191;;; -249474;1;0;false;false;;;;;; -249475;10;0;false;false;63;95;191;;; -249485;1;0;false;false;;;;;; -249486;2;0;false;false;63;95;191;;; -249488;1;0;false;false;;;;;; -249489;7;0;false;false;63;95;191;;; -249496;1;0;false;false;;;;;; -249497;1;0;false;false;63;95;191;;; -249498;1;0;false;false;;;;;; -249499;20;0;false;false;63;95;191;;; -249519;1;0;false;false;;;;;; -249520;1;0;false;false;63;95;191;;; -249521;2;0;false;false;;;;;; -249523;34;0;false;false;63;95;191;;; -249557;1;0;false;false;;;;;; -249558;1;0;false;false;63;95;191;;; -249559;2;0;false;false;;;;;; -249561;1;0;false;false;63;95;191;;; -249562;1;0;false;false;;;;;; -249563;8;0;false;false;63;95;191;;; -249571;1;0;false;false;;;;;; -249572;6;0;false;false;63;95;191;;; -249578;1;0;false;false;;;;;; -249579;6;0;false;false;63;95;191;;; -249585;1;0;false;false;;;;;; -249586;3;0;false;false;63;95;191;;; -249589;1;0;false;false;;;;;; -249590;5;0;false;false;63;95;191;;; -249595;1;0;false;false;;;;;; -249596;2;0;false;false;63;95;191;;; -249598;1;0;false;false;;;;;; -249599;3;0;false;false;63;95;191;;; -249602;1;0;false;false;;;;;; -249603;9;0;false;false;63;95;191;;; -249612;1;0;false;false;;;;;; -249613;6;0;false;false;63;95;191;;; -249619;3;0;false;false;;;;;; -249622;1;0;false;false;63;95;191;;; -249623;1;0;false;false;;;;;; -249624;7;1;false;false;127;159;191;;; -249631;9;0;false;false;63;95;191;;; -249640;1;0;false;false;;;;;; -249641;1;0;false;false;63;95;191;;; -249642;1;0;false;false;;;;;; -249643;9;0;false;false;63;95;191;;; -249652;1;0;false;false;;;;;; -249653;5;0;false;false;63;95;191;;; -249658;1;0;false;false;;;;;; -249659;2;0;false;false;63;95;191;;; -249661;1;0;false;false;;;;;; -249662;4;0;false;false;63;95;191;;; -249666;1;0;false;false;;;;;; -249667;4;0;false;false;63;95;191;;; -249671;1;0;false;false;;;;;; -249672;3;0;false;false;63;95;191;;; -249675;1;0;false;false;;;;;; -249676;2;0;false;false;63;95;191;;; -249678;1;0;false;false;;;;;; -249679;4;0;false;false;63;95;191;;; -249683;1;0;false;false;;;;;; -249684;3;0;false;false;63;95;191;;; -249687;1;0;false;false;;;;;; -249688;4;0;false;false;63;95;191;;; -249692;4;0;false;false;;;;;; -249696;1;0;false;false;63;95;191;;; -249697;2;0;false;false;;;;;; -249699;3;0;false;false;63;95;191;;; -249702;1;0;false;false;;;;;; -249703;9;0;false;false;63;95;191;;; -249712;1;0;false;false;;;;;; -249713;2;0;false;false;63;95;191;;; -249715;1;0;false;false;;;;;; -249716;6;0;false;false;63;95;191;;; -249722;3;0;false;false;;;;;; -249725;2;0;false;false;63;95;191;;; -249727;2;0;false;false;;;;;; -249729;4;1;false;false;127;0;85;;; -249733;1;0;false;false;;;;;; -249734;21;0;false;false;0;0;0;;; -249755;3;1;false;false;127;0;85;;; -249758;1;0;false;false;;;;;; -249759;6;0;false;false;0;0;0;;; -249765;1;0;false;false;;;;;; -249766;3;1;false;false;127;0;85;;; -249769;1;0;false;false;;;;;; -249770;7;0;false;false;0;0;0;;; -249777;1;0;false;false;;;;;; -249778;7;1;false;false;127;0;85;;; -249785;1;0;false;false;;;;;; -249786;10;0;false;false;0;0;0;;; -249796;1;0;false;false;;;;;; -249797;1;0;false;false;0;0;0;;; -249798;3;0;false;false;;;;;; -249801;3;1;false;false;127;0;85;;; -249804;1;0;false;false;;;;;; -249805;3;0;false;false;0;0;0;;; -249808;1;0;false;false;;;;;; -249809;1;0;false;false;0;0;0;;; -249810;1;0;false;false;;;;;; -249811;5;0;false;false;0;0;0;;; -249816;1;0;false;false;;;;;; -249817;1;0;false;false;0;0;0;;; -249818;1;0;false;false;;;;;; -249819;7;0;false;false;0;0;0;;; -249826;6;0;false;false;;;;;; -249832;2;1;false;false;127;0;85;;; -249834;1;0;false;false;;;;;; -249835;6;0;false;false;0;0;0;;; -249841;1;0;false;false;;;;;; -249842;1;0;false;false;0;0;0;;; -249843;1;0;false;false;;;;;; -249844;4;0;false;false;0;0;0;;; -249848;1;0;false;false;;;;;; -249849;1;0;false;false;0;0;0;;; -249850;4;0;false;false;;;;;; -249854;3;1;false;false;127;0;85;;; -249857;1;0;false;false;;;;;; -249858;4;0;false;false;0;0;0;;; -249862;1;0;false;false;;;;;; -249863;1;0;false;false;0;0;0;;; -249864;1;0;false;false;;;;;; -249865;4;0;false;false;0;0;0;;; -249869;4;0;false;false;;;;;; -249873;3;0;false;false;0;0;0;;; -249876;1;0;false;false;;;;;; -249877;1;0;false;false;0;0;0;;; -249878;1;0;false;false;;;;;; -249879;6;0;false;false;0;0;0;;; -249885;4;0;false;false;;;;;; -249889;5;0;false;false;0;0;0;;; -249894;1;0;false;false;;;;;; -249895;1;0;false;false;0;0;0;;; -249896;1;0;false;false;;;;;; -249897;5;0;false;false;0;0;0;;; -249902;3;0;false;false;;;;;; -249905;1;0;false;false;0;0;0;;; -249906;3;0;false;false;;;;;; -249909;68;0;false;false;63;127;95;;; -249977;1;0;false;false;;;;;; -249978;15;0;false;false;63;127;95;;; -249993;1;0;false;false;;;;;; -249994;2;1;false;false;127;0;85;;; -249996;1;0;false;false;;;;;; -249997;12;0;false;false;0;0;0;;; -250009;1;0;false;false;;;;;; -250010;2;0;false;false;0;0;0;;; -250012;1;0;false;false;;;;;; -250013;5;0;false;false;0;0;0;;; -250018;1;0;false;false;;;;;; -250019;2;0;false;false;0;0;0;;; -250021;1;0;false;false;;;;;; -250022;11;0;false;false;0;0;0;;; -250033;1;0;false;false;;;;;; -250034;2;0;false;false;0;0;0;;; -250036;1;0;false;false;;;;;; -250037;3;0;false;false;0;0;0;;; -250040;1;0;false;false;;;;;; -250041;2;0;false;false;0;0;0;;; -250043;5;0;false;false;;;;;; -250048;7;0;false;false;0;0;0;;; -250055;1;0;false;false;;;;;; -250056;1;0;false;false;0;0;0;;; -250057;1;0;false;false;;;;;; -250058;1;0;false;false;0;0;0;;; -250059;1;0;false;false;;;;;; -250060;2;0;false;false;0;0;0;;; -250062;1;0;false;false;;;;;; -250063;15;0;false;false;0;0;0;;; -250078;1;0;false;false;;;;;; -250079;2;0;false;false;0;0;0;;; -250081;1;0;false;false;;;;;; -250082;12;0;false;false;0;0;0;;; -250094;1;0;false;false;;;;;; -250095;2;0;false;false;0;0;0;;; -250097;5;0;false;false;;;;;; -250102;7;0;false;false;0;0;0;;; -250109;1;0;false;false;;;;;; -250110;1;0;false;false;0;0;0;;; -250111;1;0;false;false;;;;;; -250112;1;0;false;false;0;0;0;;; -250113;1;0;false;false;;;;;; -250114;2;0;false;false;0;0;0;;; -250116;1;0;false;false;;;;;; -250117;15;0;false;false;0;0;0;;; -250132;1;0;false;false;;;;;; -250133;2;0;false;false;0;0;0;;; -250135;1;0;false;false;;;;;; -250136;13;0;false;false;0;0;0;;; -250149;1;0;false;false;;;;;; -250150;1;0;false;false;0;0;0;;; -250151;4;0;false;false;;;;;; -250155;26;0;false;false;0;0;0;;; -250181;4;0;false;false;;;;;; -250185;2;1;false;false;127;0;85;;; -250187;1;0;false;false;;;;;; -250188;7;0;false;false;0;0;0;;; -250195;1;0;false;false;;;;;; -250196;1;0;false;false;0;0;0;;; -250197;1;0;false;false;;;;;; -250198;2;0;false;false;0;0;0;;; -250200;1;0;false;false;;;;;; -250201;1;0;false;false;0;0;0;;; -250202;5;0;false;false;;;;;; -250207;15;0;false;false;0;0;0;;; -250222;1;0;false;false;;;;;; -250223;1;0;false;false;0;0;0;;; -250224;1;0;false;false;;;;;; -250225;11;0;false;false;0;0;0;;; -250236;1;0;false;false;;;;;; -250237;1;0;false;false;0;0;0;;; -250238;1;0;false;false;;;;;; -250239;4;0;false;false;0;0;0;;; -250243;5;0;false;false;;;;;; -250248;11;0;false;false;0;0;0;;; -250259;1;0;false;false;;;;;; -250260;1;0;false;false;0;0;0;;; -250261;1;0;false;false;;;;;; -250262;11;0;false;false;0;0;0;;; -250273;1;0;false;false;;;;;; -250274;1;0;false;false;0;0;0;;; -250275;1;0;false;false;;;;;; -250276;6;0;false;false;0;0;0;;; -250282;4;0;false;false;;;;;; -250286;1;0;false;false;0;0;0;;; -250287;4;0;false;false;;;;;; -250291;4;1;false;false;127;0;85;;; -250295;1;0;false;false;;;;;; -250296;1;0;false;false;0;0;0;;; -250297;5;0;false;false;;;;;; -250302;15;0;false;false;0;0;0;;; -250317;1;0;false;false;;;;;; -250318;1;0;false;false;0;0;0;;; -250319;1;0;false;false;;;;;; -250320;11;0;false;false;0;0;0;;; -250331;1;0;false;false;;;;;; -250332;1;0;false;false;0;0;0;;; -250333;1;0;false;false;;;;;; -250334;6;0;false;false;0;0;0;;; -250340;5;0;false;false;;;;;; -250345;11;0;false;false;0;0;0;;; -250356;1;0;false;false;;;;;; -250357;1;0;false;false;0;0;0;;; -250358;1;0;false;false;;;;;; -250359;11;0;false;false;0;0;0;;; -250370;1;0;false;false;;;;;; -250371;1;0;false;false;0;0;0;;; -250372;1;0;false;false;;;;;; -250373;4;0;false;false;0;0;0;;; -250377;4;0;false;false;;;;;; -250381;1;0;false;false;0;0;0;;; -250382;4;0;false;false;;;;;; -250386;32;0;false;false;0;0;0;;; -250418;1;0;false;false;;;;;; -250419;11;0;false;false;0;0;0;;; -250430;1;0;false;false;;;;;; -250431;1;0;false;false;0;0;0;;; -250432;1;0;false;false;;;;;; -250433;12;0;false;false;0;0;0;;; -250445;1;0;false;false;;;;;; -250446;4;1;false;false;127;0;85;;; -250450;2;0;false;false;0;0;0;;; -250452;3;0;false;false;;;;;; -250455;1;0;false;false;0;0;0;;; -250456;2;0;false;false;;;;;; -250458;1;0;false;false;0;0;0;;; -250459;2;0;false;false;;;;;; -250461;3;0;false;false;63;95;191;;; -250464;4;0;false;false;;;;;; -250468;1;0;false;false;63;95;191;;; -250469;1;0;false;false;;;;;; -250470;4;0;false;false;63;95;191;;; -250474;1;0;false;false;;;;;; -250475;3;0;false;false;63;95;191;;; -250478;1;0;false;false;;;;;; -250479;9;0;false;false;63;95;191;;; -250488;1;0;false;false;;;;;; -250489;6;0;false;false;63;95;191;;; -250495;1;0;false;false;;;;;; -250496;3;0;false;false;63;95;191;;; -250499;1;0;false;false;;;;;; -250500;3;0;false;false;63;95;191;;; -250503;1;0;false;false;;;;;; -250504;5;0;false;false;63;95;191;;; -250509;1;0;false;false;;;;;; -250510;10;0;false;false;63;95;191;;; -250520;1;0;false;false;;;;;; -250521;8;0;false;false;63;95;191;;; -250529;1;0;false;false;;;;;; -250530;6;0;false;false;63;95;191;;; -250536;1;0;false;false;;;;;; -250537;3;0;false;false;63;95;191;;; -250540;1;0;false;false;;;;;; -250541;3;0;false;false;63;95;191;;; -250544;3;0;false;false;;;;;; -250547;1;0;false;false;63;95;191;;; -250548;1;0;false;false;;;;;; -250549;9;0;false;false;63;95;191;;; -250558;1;0;false;false;;;;;; -250559;6;0;false;false;63;95;191;;; -250565;2;0;false;false;;;;;; -250567;8;0;false;false;63;95;191;;; -250575;1;0;false;false;;;;;; -250576;5;0;false;false;63;95;191;;; -250581;1;0;false;false;;;;;; -250582;6;0;false;false;63;95;191;;; -250588;1;0;false;false;;;;;; -250589;3;0;false;false;63;95;191;;; -250592;1;0;false;false;;;;;; -250593;8;0;false;false;63;95;191;;; -250601;1;0;false;false;;;;;; -250602;2;0;false;false;63;95;191;;; -250604;1;0;false;false;;;;;; -250605;4;0;false;false;63;95;191;;; -250609;1;0;false;false;;;;;; -250610;9;0;false;false;63;95;191;;; -250619;4;0;false;false;;;;;; -250623;1;0;false;false;63;95;191;;; -250624;1;0;false;false;;;;;; -250625;7;0;false;false;63;95;191;;; -250632;1;0;false;false;;;;;; -250633;4;0;false;false;63;95;191;;; -250637;1;0;false;false;;;;;; -250638;3;0;false;false;63;95;191;;; -250641;1;0;false;false;;;;;; -250642;3;0;false;false;63;95;191;;; -250645;1;0;false;false;;;;;; -250646;6;0;false;false;63;95;191;;; -250652;1;0;false;false;;;;;; -250653;2;0;false;false;63;95;191;;; -250655;1;0;false;false;;;;;; -250656;5;0;false;false;63;95;191;;; -250661;1;0;false;false;;;;;; -250662;2;0;false;false;63;95;191;;; -250664;1;0;false;false;;;;;; -250665;10;0;false;false;63;95;191;;; -250675;1;0;false;false;;;;;; -250676;6;0;false;false;63;95;191;;; -250682;1;0;false;false;;;;;; -250683;4;0;false;false;63;95;191;;; -250687;1;0;false;false;;;;;; -250688;13;0;false;false;63;95;191;;; -250701;4;0;false;false;;;;;; -250705;1;0;false;false;63;95;191;;; -250706;1;0;false;false;;;;;; -250707;4;0;false;false;63;95;191;;; -250711;1;0;false;false;;;;;; -250712;1;0;false;false;63;95;191;;; -250713;1;0;false;false;;;;;; -250714;10;0;false;false;63;95;191;;; -250724;1;0;false;false;;;;;; -250725;4;0;false;false;63;95;191;;; -250729;1;0;false;false;;;;;; -250730;3;0;false;false;63;95;191;;; -250733;1;0;false;false;;;;;; -250734;4;0;false;false;63;95;191;;; -250738;1;0;false;false;;;;;; -250739;11;0;false;false;63;95;191;;; -250750;4;0;false;false;;;;;; -250754;1;0;false;false;63;95;191;;; -250755;1;0;false;false;;;;;; -250756;3;0;false;false;127;127;159;;; -250759;3;0;false;false;;;;;; -250762;1;0;false;false;63;95;191;;; -250763;1;0;false;false;;;;;; -250764;6;0;false;false;63;95;191;;; -250770;1;0;false;false;;;;;; -250771;3;0;false;false;63;95;191;;; -250774;1;0;false;false;;;;;; -250775;2;0;false;false;63;95;191;;; -250777;1;0;false;false;;;;;; -250778;6;0;false;false;63;95;191;;; -250784;1;0;false;false;;;;;; -250785;2;0;false;false;63;95;191;;; -250787;1;0;false;false;;;;;; -250788;1;0;false;false;63;95;191;;; -250789;1;0;false;false;;;;;; -250790;17;0;false;false;63;95;191;;; -250807;1;0;false;false;;;;;; -250808;3;0;false;false;63;95;191;;; -250811;1;0;false;false;;;;;; -250812;4;0;false;false;63;95;191;;; -250816;1;0;false;false;;;;;; -250817;3;0;false;false;63;95;191;;; -250820;1;0;false;false;;;;;; -250821;5;0;false;false;63;95;191;;; -250826;1;0;false;false;;;;;; -250827;3;0;false;false;63;95;191;;; -250830;4;0;false;false;;;;;; -250834;1;0;false;false;63;95;191;;; -250835;1;0;false;false;;;;;; -250836;8;0;false;false;63;95;191;;; -250844;1;0;false;false;;;;;; -250845;9;0;false;false;63;95;191;;; -250854;1;0;false;false;;;;;; -250855;3;0;false;false;63;95;191;;; -250858;1;0;false;false;;;;;; -250859;7;0;false;false;63;95;191;;; -250866;3;0;false;false;;;;;; -250869;1;0;false;false;63;95;191;;; -250870;1;0;false;false;;;;;; -250871;4;0;false;false;127;127;159;;; -250875;3;0;false;false;;;;;; -250878;1;0;false;false;63;95;191;;; -250879;3;0;false;false;;;;;; -250882;1;0;false;false;63;95;191;;; -250883;1;0;false;false;;;;;; -250884;7;1;false;false;127;159;191;;; -250891;5;0;false;false;63;95;191;;; -250896;1;0;false;false;;;;;; -250897;10;0;false;false;63;95;191;;; -250907;1;0;false;false;;;;;; -250908;6;0;false;false;63;95;191;;; -250914;1;0;false;false;;;;;; -250915;10;0;false;false;63;95;191;;; -250925;1;0;false;false;;;;;; -250926;3;0;false;false;63;95;191;;; -250929;1;0;false;false;;;;;; -250930;5;0;false;false;63;95;191;;; -250935;1;0;false;false;;;;;; -250936;12;0;false;false;63;95;191;;; -250948;3;0;false;false;;;;;; -250951;1;0;false;false;63;95;191;;; -250952;1;0;false;false;;;;;; -250953;10;0;false;false;63;95;191;;; -250963;1;0;false;false;;;;;; -250964;3;0;false;false;63;95;191;;; -250967;1;0;false;false;;;;;; -250968;3;0;false;false;63;95;191;;; -250971;1;0;false;false;;;;;; -250972;5;0;false;false;63;95;191;;; -250977;1;0;false;false;;;;;; -250978;2;0;false;false;63;95;191;;; -250980;1;0;false;false;;;;;; -250981;3;0;false;false;63;95;191;;; -250984;1;0;false;false;;;;;; -250985;5;0;false;false;63;95;191;;; -250990;1;0;false;false;;;;;; -250991;6;0;false;false;63;95;191;;; -250997;1;0;false;false;;;;;; -250998;3;0;false;false;63;95;191;;; -251001;1;0;false;false;;;;;; -251002;2;0;false;false;63;95;191;;; -251004;1;0;false;false;;;;;; -251005;4;0;false;false;63;95;191;;; -251009;1;0;false;false;;;;;; -251010;2;0;false;false;63;95;191;;; -251012;1;0;false;false;;;;;; -251013;6;0;false;false;63;95;191;;; -251019;3;0;false;false;;;;;; -251022;1;0;false;false;63;95;191;;; -251023;1;0;false;false;;;;;; -251024;3;0;false;false;63;95;191;;; -251027;1;0;false;false;;;;;; -251028;7;0;false;false;63;95;191;;; -251035;3;0;false;false;;;;;; -251038;1;0;false;false;63;95;191;;; -251039;1;0;false;false;;;;;; -251040;11;1;false;false;127;159;191;;; -251051;12;0;false;false;63;95;191;;; -251063;1;0;false;false;;;;;; -251064;4;0;false;false;127;127;159;;; -251068;3;0;false;false;;;;;; -251071;1;0;false;false;63;95;191;;; -251072;4;0;false;false;;;;;; -251076;4;0;false;false;127;127;159;;; -251080;21;0;false;false;63;95;191;;; -251101;1;0;false;false;;;;;; -251102;1;0;false;false;127;127;159;;; -251103;1;0;false;false;;;;;; -251104;2;0;false;false;63;95;191;;; -251106;1;0;false;false;;;;;; -251107;3;0;false;false;63;95;191;;; -251110;1;0;false;false;;;;;; -251111;8;0;false;false;63;95;191;;; -251119;1;0;false;false;;;;;; -251120;3;0;false;false;63;95;191;;; -251123;1;0;false;false;;;;;; -251124;4;0;false;false;63;95;191;;; -251128;1;0;false;false;;;;;; -251129;8;0;false;false;63;95;191;;; -251137;5;0;false;false;127;127;159;;; -251142;3;0;false;false;;;;;; -251145;1;0;false;false;63;95;191;;; -251146;4;0;false;false;;;;;; -251150;4;0;false;false;127;127;159;;; -251154;27;0;false;false;63;95;191;;; -251181;1;0;false;false;;;;;; -251182;1;0;false;false;127;127;159;;; -251183;1;0;false;false;;;;;; -251184;2;0;false;false;63;95;191;;; -251186;1;0;false;false;;;;;; -251187;3;0;false;false;63;95;191;;; -251190;1;0;false;false;;;;;; -251191;6;0;false;false;63;95;191;;; -251197;1;0;false;false;;;;;; -251198;4;0;false;false;63;95;191;;; -251202;1;0;false;false;;;;;; -251203;3;0;false;false;63;95;191;;; -251206;1;0;false;false;;;;;; -251207;6;0;false;false;63;95;191;;; -251213;1;0;false;false;;;;;; -251214;4;0;false;false;63;95;191;;; -251218;1;0;false;false;;;;;; -251219;7;0;false;false;63;95;191;;; -251226;1;0;false;false;;;;;; -251227;3;0;false;false;63;95;191;;; -251230;1;0;false;false;;;;;; -251231;8;0;false;false;63;95;191;;; -251239;5;0;false;false;127;127;159;;; -251244;3;0;false;false;;;;;; -251247;1;0;false;false;63;95;191;;; -251248;1;0;false;false;;;;;; -251249;5;0;false;false;127;127;159;;; -251254;3;0;false;false;;;;;; -251257;1;0;false;false;63;95;191;;; -251258;1;0;false;false;;;;;; -251259;11;1;false;false;127;159;191;;; -251270;24;0;false;false;63;95;191;;; -251294;1;0;false;false;;;;;; -251295;4;0;false;false;127;127;159;;; -251299;3;0;false;false;;;;;; -251302;1;0;false;false;63;95;191;;; -251303;3;0;false;false;;;;;; -251306;4;0;false;false;127;127;159;;; -251310;19;0;false;false;63;95;191;;; -251329;1;0;false;false;;;;;; -251330;4;0;false;false;63;95;191;;; -251334;1;0;false;false;;;;;; -251335;3;0;false;false;63;95;191;;; -251338;1;0;false;false;;;;;; -251339;5;0;false;false;63;95;191;;; -251344;1;0;false;false;;;;;; -251345;5;0;false;false;63;95;191;;; -251350;1;0;false;false;;;;;; -251351;2;0;false;false;63;95;191;;; -251353;1;0;false;false;;;;;; -251354;7;0;false;false;63;95;191;;; -251361;1;0;false;false;;;;;; -251362;3;0;false;false;63;95;191;;; -251365;1;0;false;false;;;;;; -251366;5;0;false;false;63;95;191;;; -251371;1;0;false;false;;;;;; -251372;5;0;false;false;63;95;191;;; -251377;1;0;false;false;;;;;; -251378;2;0;false;false;63;95;191;;; -251380;1;0;false;false;;;;;; -251381;15;0;false;false;63;95;191;;; -251396;5;0;false;false;127;127;159;;; -251401;4;0;false;false;;;;;; -251405;1;0;false;false;63;95;191;;; -251406;1;0;false;false;;;;;; -251407;5;0;false;false;127;127;159;;; -251412;3;0;false;false;;;;;; -251415;2;0;false;false;63;95;191;;; -251417;2;0;false;false;;;;;; -251419;6;1;false;false;127;0;85;;; -251425;1;0;false;false;;;;;; -251426;4;1;false;false;127;0;85;;; -251430;1;0;false;false;;;;;; -251431;24;0;false;false;0;0;0;;; -251455;1;0;false;false;;;;;; -251456;6;0;false;false;0;0;0;;; -251462;1;0;false;false;;;;;; -251463;1;0;false;false;0;0;0;;; -251464;3;0;false;false;;;;;; -251467;14;0;false;false;0;0;0;;; -251481;6;0;false;false;;;;;; -251487;72;0;false;false;63;127;95;;; -251559;1;0;false;false;;;;;; -251560;2;1;false;false;127;0;85;;; -251562;1;0;false;false;;;;;; -251563;15;0;false;false;0;0;0;;; -251578;1;0;false;false;;;;;; -251579;1;0;false;false;0;0;0;;; -251580;4;0;false;false;;;;;; -251584;6;1;false;false;127;0;85;;; -251590;1;0;false;false;0;0;0;;; -251591;3;0;false;false;;;;;; -251594;1;0;false;false;0;0;0;;; -251595;4;0;false;false;;;;;; -251599;70;0;false;false;63;127;95;;; -251669;1;0;false;false;;;;;; -251670;2;1;false;false;127;0;85;;; -251672;1;0;false;false;;;;;; -251673;6;0;false;false;0;0;0;;; -251679;1;0;false;false;;;;;; -251680;2;0;false;false;0;0;0;;; -251682;1;0;false;false;;;;;; -251683;4;1;false;false;127;0;85;;; -251687;1;0;false;false;;;;;; -251688;2;0;false;false;0;0;0;;; -251690;1;0;false;false;;;;;; -251691;11;0;false;false;0;0;0;;; -251702;1;0;false;false;;;;;; -251703;1;0;false;false;0;0;0;;; -251704;1;0;false;false;;;;;; -251705;12;0;false;false;0;0;0;;; -251717;1;0;false;false;;;;;; -251718;1;0;false;false;0;0;0;;; -251719;1;0;false;false;;;;;; -251720;23;0;false;false;0;0;0;;; -251743;1;0;false;false;;;;;; -251744;1;0;false;false;0;0;0;;; -251745;4;0;false;false;;;;;; -251749;35;0;false;false;0;0;0;;; -251784;3;0;false;false;;;;;; -251787;1;0;false;false;0;0;0;;; -251788;5;0;false;false;;;;;; -251793;39;0;false;false;0;0;0;;; -251832;3;0;false;false;;;;;; -251835;2;1;false;false;127;0;85;;; -251837;1;0;false;false;;;;;; -251838;6;0;false;false;0;0;0;;; -251844;1;0;false;false;;;;;; -251845;2;0;false;false;0;0;0;;; -251847;1;0;false;false;;;;;; -251848;4;1;false;false;127;0;85;;; -251852;1;0;false;false;0;0;0;;; -251853;1;0;false;false;;;;;; -251854;1;0;false;false;0;0;0;;; -251855;4;0;false;false;;;;;; -251859;3;1;false;false;127;0;85;;; -251862;1;0;false;false;;;;;; -251863;9;0;false;false;0;0;0;;; -251872;1;0;false;false;;;;;; -251873;1;0;false;false;0;0;0;;; -251874;1;0;false;false;;;;;; -251875;37;0;false;false;0;0;0;;; -251912;4;0;false;false;;;;;; -251916;3;1;false;false;127;0;85;;; -251919;1;0;false;false;;;;;; -251920;8;0;false;false;0;0;0;;; -251928;1;0;false;false;;;;;; -251929;1;0;false;false;0;0;0;;; -251930;1;0;false;false;;;;;; -251931;35;0;false;false;0;0;0;;; -251966;1;0;false;false;;;;;; -251967;1;0;false;false;0;0;0;;; -251968;1;0;false;false;;;;;; -251969;14;0;false;false;0;0;0;;; -251983;4;0;false;false;;;;;; -251987;26;0;false;false;0;0;0;;; -252013;1;0;false;false;;;;;; -252014;8;0;false;false;0;0;0;;; -252022;1;0;false;false;;;;;; -252023;1;0;false;false;0;0;0;;; -252024;1;0;false;false;;;;;; -252025;9;0;false;false;0;0;0;;; -252034;1;0;false;false;;;;;; -252035;1;0;false;false;0;0;0;;; -252036;1;0;false;false;;;;;; -252037;2;0;false;false;0;0;0;;; -252039;1;0;false;false;;;;;; -252040;4;1;false;false;127;0;85;;; -252044;2;0;false;false;0;0;0;;; -252046;6;0;false;false;;;;;; -252052;60;0;false;false;63;127;95;;; -252112;2;0;false;false;;;;;; -252114;2;1;false;false;127;0;85;;; -252116;1;0;false;false;;;;;; -252117;25;0;false;false;0;0;0;;; -252142;1;0;false;false;;;;;; -252143;10;0;false;false;0;0;0;;; -252153;1;0;false;false;;;;;; -252154;1;0;false;false;0;0;0;;; -252155;5;0;false;false;;;;;; -252160;3;1;false;false;127;0;85;;; -252163;1;0;false;false;;;;;; -252164;7;0;false;false;0;0;0;;; -252171;1;0;false;false;;;;;; -252172;1;0;false;false;0;0;0;;; -252173;1;0;false;false;;;;;; -252174;9;0;false;false;0;0;0;;; -252183;1;0;false;false;;;;;; -252184;1;0;false;false;0;0;0;;; -252185;1;0;false;false;;;;;; -252186;10;0;false;false;0;0;0;;; -252196;1;0;false;false;;;;;; -252197;1;0;false;false;0;0;0;;; -252198;1;0;false;false;;;;;; -252199;21;0;false;false;0;0;0;;; -252220;5;0;false;false;;;;;; -252225;3;1;false;false;127;0;85;;; -252228;1;0;false;false;;;;;; -252229;11;0;false;false;0;0;0;;; -252240;1;0;false;false;;;;;; -252241;1;0;false;false;0;0;0;;; -252242;1;0;false;false;;;;;; -252243;9;0;false;false;0;0;0;;; -252252;1;0;false;false;;;;;; -252253;1;0;false;false;0;0;0;;; -252254;1;0;false;false;;;;;; -252255;2;0;false;false;0;0;0;;; -252257;1;0;false;false;;;;;; -252258;1;0;false;false;0;0;0;;; -252259;1;0;false;false;;;;;; -252260;10;0;false;false;0;0;0;;; -252270;1;0;false;false;;;;;; -252271;1;0;false;false;0;0;0;;; -252272;1;0;false;false;;;;;; -252273;21;0;false;false;0;0;0;;; -252294;7;0;false;false;;;;;; -252301;7;0;false;false;0;0;0;;; -252308;1;0;false;false;;;;;; -252309;8;0;false;false;0;0;0;;; -252317;1;0;false;false;;;;;; -252318;22;0;false;false;0;0;0;;; -252340;1;0;false;false;;;;;; -252341;11;0;false;false;0;0;0;;; -252352;1;0;false;false;;;;;; -252353;1;0;false;false;0;0;0;;; -252354;1;0;false;false;;;;;; -252355;8;0;false;false;0;0;0;;; -252363;1;0;false;false;;;;;; -252364;4;1;false;false;127;0;85;;; -252368;2;0;false;false;0;0;0;;; -252370;4;0;false;false;;;;;; -252374;1;0;false;false;0;0;0;;; -252375;3;0;false;false;;;;;; -252378;1;0;false;false;0;0;0;;; -252379;1;0;false;false;;;;;; -252380;4;1;false;false;127;0;85;;; -252384;1;0;false;false;;;;;; -252385;1;0;false;false;0;0;0;;; -252386;4;0;false;false;;;;;; -252390;24;0;false;false;63;127;95;;; -252414;2;0;false;false;;;;;; -252416;18;0;false;false;0;0;0;;; -252434;1;0;false;false;;;;;; -252435;23;0;false;false;0;0;0;;; -252458;1;0;false;false;;;;;; -252459;5;1;false;false;127;0;85;;; -252464;2;0;false;false;0;0;0;;; -252466;4;0;false;false;;;;;; -252470;9;0;false;false;0;0;0;;; -252479;3;0;false;false;;;;;; -252482;1;0;false;false;0;0;0;;; -252483;6;0;false;false;;;;;; -252489;54;0;false;false;63;127;95;;; -252543;1;0;false;false;;;;;; -252544;53;0;false;false;63;127;95;;; -252597;1;0;false;false;;;;;; -252598;18;0;false;false;63;127;95;;; -252616;1;0;false;false;;;;;; -252617;19;0;false;false;0;0;0;;; -252636;2;0;false;false;;;;;; -252638;1;0;false;false;0;0;0;;; -252639;2;0;false;false;;;;;; -252641;3;0;false;false;63;95;191;;; -252644;4;0;false;false;;;;;; -252648;1;0;false;false;63;95;191;;; -252649;1;0;false;false;;;;;; -252650;4;0;false;false;63;95;191;;; -252654;1;0;false;false;;;;;; -252655;6;0;false;false;63;95;191;;; -252661;1;0;false;false;;;;;; -252662;2;0;false;false;63;95;191;;; -252664;1;0;false;false;;;;;; -252665;2;0;false;false;63;95;191;;; -252667;1;0;false;false;;;;;; -252668;4;0;false;false;63;95;191;;; -252672;1;0;false;false;;;;;; -252673;3;0;false;false;63;95;191;;; -252676;1;0;false;false;;;;;; -252677;9;0;false;false;63;95;191;;; -252686;1;0;false;false;;;;;; -252687;3;0;false;false;63;95;191;;; -252690;1;0;false;false;;;;;; -252691;6;0;false;false;63;95;191;;; -252697;1;0;false;false;;;;;; -252698;8;0;false;false;63;95;191;;; -252706;1;0;false;false;;;;;; -252707;3;0;false;false;63;95;191;;; -252710;1;0;false;false;;;;;; -252711;6;0;false;false;63;95;191;;; -252717;4;0;false;false;;;;;; -252721;1;0;false;false;63;95;191;;; -252722;1;0;false;false;;;;;; -252723;2;0;false;false;63;95;191;;; -252725;1;0;false;false;;;;;; -252726;3;0;false;false;63;95;191;;; -252729;1;0;false;false;;;;;; -252730;6;0;false;false;63;95;191;;; -252736;1;0;false;false;;;;;; -252737;4;0;false;false;63;95;191;;; -252741;1;0;false;false;;;;;; -252742;2;0;false;false;63;95;191;;; -252744;1;0;false;false;;;;;; -252745;8;0;false;false;63;95;191;;; -252753;1;0;false;false;;;;;; -252754;4;0;false;false;63;95;191;;; -252758;1;0;false;false;;;;;; -252759;3;0;false;false;63;95;191;;; -252762;1;0;false;false;;;;;; -252763;5;0;false;false;63;95;191;;; -252768;1;0;false;false;;;;;; -252769;3;0;false;false;63;95;191;;; -252772;1;0;false;false;;;;;; -252773;2;0;false;false;63;95;191;;; -252775;1;0;false;false;;;;;; -252776;7;0;false;false;63;95;191;;; -252783;3;0;false;false;;;;;; -252786;1;0;false;false;63;95;191;;; -252787;1;0;false;false;;;;;; -252788;3;0;false;false;127;127;159;;; -252791;3;0;false;false;;;;;; -252794;1;0;false;false;63;95;191;;; -252795;1;0;false;false;;;;;; -252796;6;0;false;false;63;95;191;;; -252802;1;0;false;false;;;;;; -252803;3;0;false;false;63;95;191;;; -252806;1;0;false;false;;;;;; -252807;2;0;false;false;63;95;191;;; -252809;1;0;false;false;;;;;; -252810;6;0;false;false;63;95;191;;; -252816;1;0;false;false;;;;;; -252817;2;0;false;false;63;95;191;;; -252819;1;0;false;false;;;;;; -252820;1;0;false;false;63;95;191;;; -252821;1;0;false;false;;;;;; -252822;17;0;false;false;63;95;191;;; -252839;1;0;false;false;;;;;; -252840;3;0;false;false;63;95;191;;; -252843;1;0;false;false;;;;;; -252844;4;0;false;false;63;95;191;;; -252848;1;0;false;false;;;;;; -252849;3;0;false;false;63;95;191;;; -252852;1;0;false;false;;;;;; -252853;5;0;false;false;63;95;191;;; -252858;1;0;false;false;;;;;; -252859;3;0;false;false;63;95;191;;; -252862;4;0;false;false;;;;;; -252866;1;0;false;false;63;95;191;;; -252867;1;0;false;false;;;;;; -252868;8;0;false;false;63;95;191;;; -252876;1;0;false;false;;;;;; -252877;9;0;false;false;63;95;191;;; -252886;1;0;false;false;;;;;; -252887;3;0;false;false;63;95;191;;; -252890;1;0;false;false;;;;;; -252891;7;0;false;false;63;95;191;;; -252898;3;0;false;false;;;;;; -252901;1;0;false;false;63;95;191;;; -252902;1;0;false;false;;;;;; -252903;4;0;false;false;127;127;159;;; -252907;3;0;false;false;;;;;; -252910;1;0;false;false;63;95;191;;; -252911;3;0;false;false;;;;;; -252914;1;0;false;false;63;95;191;;; -252915;1;0;false;false;;;;;; -252916;7;1;false;false;127;159;191;;; -252923;6;0;false;false;63;95;191;;; -252929;1;0;false;false;;;;;; -252930;10;0;false;false;63;95;191;;; -252940;1;0;false;false;;;;;; -252941;7;0;false;false;63;95;191;;; -252948;1;0;false;false;;;;;; -252949;10;0;false;false;63;95;191;;; -252959;1;0;false;false;;;;;; -252960;3;0;false;false;63;95;191;;; -252963;1;0;false;false;;;;;; -252964;5;0;false;false;63;95;191;;; -252969;1;0;false;false;;;;;; -252970;12;0;false;false;63;95;191;;; -252982;3;0;false;false;;;;;; -252985;1;0;false;false;63;95;191;;; -252986;1;0;false;false;;;;;; -252987;3;0;false;false;63;95;191;;; -252990;1;0;false;false;;;;;; -252991;6;0;false;false;63;95;191;;; -252997;1;0;false;false;;;;;; -252998;6;0;false;false;63;95;191;;; -253004;1;0;false;false;;;;;; -253005;3;0;false;false;63;95;191;;; -253008;1;0;false;false;;;;;; -253009;8;0;false;false;63;95;191;;; -253017;1;0;false;false;;;;;; -253018;3;0;false;false;63;95;191;;; -253021;1;0;false;false;;;;;; -253022;5;0;false;false;63;95;191;;; -253027;1;0;false;false;;;;;; -253028;9;0;false;false;63;95;191;;; -253037;1;0;false;false;;;;;; -253038;2;0;false;false;63;95;191;;; -253040;1;0;false;false;;;;;; -253041;9;0;false;false;63;95;191;;; -253050;1;0;false;false;;;;;; -253051;2;0;false;false;63;95;191;;; -253053;4;0;false;false;;;;;; -253057;1;0;false;false;63;95;191;;; -253058;1;0;false;false;;;;;; -253059;3;0;false;false;63;95;191;;; -253062;1;0;false;false;;;;;; -253063;6;0;false;false;63;95;191;;; -253069;1;0;false;false;;;;;; -253070;2;0;false;false;63;95;191;;; -253072;1;0;false;false;;;;;; -253073;8;0;false;false;63;95;191;;; -253081;1;0;false;false;;;;;; -253082;4;0;false;false;63;95;191;;; -253086;1;0;false;false;;;;;; -253087;3;0;false;false;63;95;191;;; -253090;1;0;false;false;;;;;; -253091;2;0;false;false;63;95;191;;; -253093;1;0;false;false;;;;;; -253094;5;0;false;false;63;95;191;;; -253099;1;0;false;false;;;;;; -253100;3;0;false;false;63;95;191;;; -253103;1;0;false;false;;;;;; -253104;6;0;false;false;63;95;191;;; -253110;1;0;false;false;;;;;; -253111;4;0;false;false;63;95;191;;; -253115;1;0;false;false;;;;;; -253116;2;0;false;false;63;95;191;;; -253118;1;0;false;false;;;;;; -253119;2;0;false;false;63;95;191;;; -253121;1;0;false;false;;;;;; -253122;2;0;false;false;63;95;191;;; -253124;1;0;false;false;;;;;; -253125;6;0;false;false;63;95;191;;; -253131;3;0;false;false;;;;;; -253134;1;0;false;false;63;95;191;;; -253135;1;0;false;false;;;;;; -253136;11;1;false;false;127;159;191;;; -253147;12;0;false;false;63;95;191;;; -253159;1;0;false;false;;;;;; -253160;4;0;false;false;127;127;159;;; -253164;3;0;false;false;;;;;; -253167;1;0;false;false;63;95;191;;; -253168;4;0;false;false;;;;;; -253172;4;0;false;false;127;127;159;;; -253176;21;0;false;false;63;95;191;;; -253197;1;0;false;false;;;;;; -253198;1;0;false;false;127;127;159;;; -253199;1;0;false;false;;;;;; -253200;2;0;false;false;63;95;191;;; -253202;1;0;false;false;;;;;; -253203;3;0;false;false;63;95;191;;; -253206;1;0;false;false;;;;;; -253207;8;0;false;false;63;95;191;;; -253215;1;0;false;false;;;;;; -253216;3;0;false;false;63;95;191;;; -253219;1;0;false;false;;;;;; -253220;4;0;false;false;63;95;191;;; -253224;1;0;false;false;;;;;; -253225;8;0;false;false;63;95;191;;; -253233;5;0;false;false;127;127;159;;; -253238;3;0;false;false;;;;;; -253241;1;0;false;false;63;95;191;;; -253242;4;0;false;false;;;;;; -253246;4;0;false;false;127;127;159;;; -253250;27;0;false;false;63;95;191;;; -253277;1;0;false;false;;;;;; -253278;1;0;false;false;127;127;159;;; -253279;1;0;false;false;;;;;; -253280;2;0;false;false;63;95;191;;; -253282;1;0;false;false;;;;;; -253283;3;0;false;false;63;95;191;;; -253286;1;0;false;false;;;;;; -253287;6;0;false;false;63;95;191;;; -253293;1;0;false;false;;;;;; -253294;4;0;false;false;63;95;191;;; -253298;1;0;false;false;;;;;; -253299;3;0;false;false;63;95;191;;; -253302;1;0;false;false;;;;;; -253303;6;0;false;false;63;95;191;;; -253309;1;0;false;false;;;;;; -253310;4;0;false;false;63;95;191;;; -253314;1;0;false;false;;;;;; -253315;7;0;false;false;63;95;191;;; -253322;1;0;false;false;;;;;; -253323;3;0;false;false;63;95;191;;; -253326;1;0;false;false;;;;;; -253327;8;0;false;false;63;95;191;;; -253335;5;0;false;false;127;127;159;;; -253340;3;0;false;false;;;;;; -253343;1;0;false;false;63;95;191;;; -253344;1;0;false;false;;;;;; -253345;5;0;false;false;127;127;159;;; -253350;3;0;false;false;;;;;; -253353;1;0;false;false;63;95;191;;; -253354;1;0;false;false;;;;;; -253355;11;1;false;false;127;159;191;;; -253366;24;0;false;false;63;95;191;;; -253390;1;0;false;false;;;;;; -253391;4;0;false;false;127;127;159;;; -253395;3;0;false;false;;;;;; -253398;1;0;false;false;63;95;191;;; -253399;4;0;false;false;;;;;; -253403;4;0;false;false;127;127;159;;; -253407;19;0;false;false;63;95;191;;; -253426;1;0;false;false;;;;;; -253427;4;0;false;false;63;95;191;;; -253431;1;0;false;false;;;;;; -253432;8;0;false;false;63;95;191;;; -253440;1;0;false;false;;;;;; -253441;2;0;false;false;63;95;191;;; -253443;1;0;false;false;;;;;; -253444;4;0;false;false;63;95;191;;; -253448;5;0;false;false;127;127;159;;; -253453;3;0;false;false;;;;;; -253456;1;0;false;false;63;95;191;;; -253457;4;0;false;false;;;;;; -253461;4;0;false;false;127;127;159;;; -253465;19;0;false;false;63;95;191;;; -253484;1;0;false;false;;;;;; -253485;4;0;false;false;63;95;191;;; -253489;1;0;false;false;;;;;; -253490;3;0;false;false;63;95;191;;; -253493;1;0;false;false;;;;;; -253494;4;0;false;false;63;95;191;;; -253498;1;0;false;false;;;;;; -253499;2;0;false;false;63;95;191;;; -253501;1;0;false;false;;;;;; -253502;3;0;false;false;63;95;191;;; -253505;1;0;false;false;;;;;; -253506;5;0;false;false;63;95;191;;; -253511;1;0;false;false;;;;;; -253512;6;0;false;false;63;95;191;;; -253518;1;0;false;false;;;;;; -253519;2;0;false;false;63;95;191;;; -253521;1;0;false;false;;;;;; -253522;7;0;false;false;63;95;191;;; -253529;1;0;false;false;;;;;; -253530;3;0;false;false;63;95;191;;; -253533;1;0;false;false;;;;;; -253534;5;0;false;false;63;95;191;;; -253539;1;0;false;false;;;;;; -253540;5;0;false;false;63;95;191;;; -253545;1;0;false;false;;;;;; -253546;2;0;false;false;63;95;191;;; -253548;1;0;false;false;;;;;; -253549;15;0;false;false;63;95;191;;; -253564;5;0;false;false;127;127;159;;; -253569;4;0;false;false;;;;;; -253573;1;0;false;false;63;95;191;;; -253574;1;0;false;false;;;;;; -253575;5;0;false;false;127;127;159;;; -253580;3;0;false;false;;;;;; -253583;2;0;false;false;63;95;191;;; -253585;2;0;false;false;;;;;; -253587;6;1;false;false;127;0;85;;; -253593;1;0;false;false;;;;;; -253594;4;1;false;false;127;0;85;;; -253598;1;0;false;false;;;;;; -253599;27;0;false;false;0;0;0;;; -253626;1;0;false;false;;;;;; -253627;7;0;false;false;0;0;0;;; -253634;1;0;false;false;;;;;; -253635;1;0;false;false;0;0;0;;; -253636;3;0;false;false;;;;;; -253639;14;0;false;false;0;0;0;;; -253653;3;0;false;false;;;;;; -253656;72;0;false;false;63;127;95;;; -253728;1;0;false;false;;;;;; -253729;2;1;false;false;127;0;85;;; -253731;1;0;false;false;;;;;; -253732;15;0;false;false;0;0;0;;; -253747;1;0;false;false;;;;;; -253748;1;0;false;false;0;0;0;;; -253749;4;0;false;false;;;;;; -253753;6;1;false;false;127;0;85;;; -253759;1;0;false;false;0;0;0;;; -253760;3;0;false;false;;;;;; -253763;1;0;false;false;0;0;0;;; -253764;4;0;false;false;;;;;; -253768;2;1;false;false;127;0;85;;; -253770;1;0;false;false;;;;;; -253771;7;0;false;false;0;0;0;;; -253778;1;0;false;false;;;;;; -253779;2;0;false;false;0;0;0;;; -253781;1;0;false;false;;;;;; -253782;4;1;false;false;127;0;85;;; -253786;1;0;false;false;0;0;0;;; -253787;1;0;false;false;;;;;; -253788;1;0;false;false;0;0;0;;; -253789;5;0;false;false;;;;;; -253794;35;0;false;false;0;0;0;;; -253829;4;0;false;false;;;;;; -253833;1;0;false;false;0;0;0;;; -253834;4;0;false;false;;;;;; -253838;69;0;false;false;63;127;95;;; -253907;2;0;false;false;;;;;; -253909;18;0;false;false;63;127;95;;; -253927;2;0;false;false;;;;;; -253929;2;1;false;false;127;0;85;;; -253931;1;0;false;false;;;;;; -253932;14;0;false;false;0;0;0;;; -253946;1;0;false;false;;;;;; -253947;2;0;false;false;0;0;0;;; -253949;1;0;false;false;;;;;; -253950;2;0;false;false;0;0;0;;; -253952;1;0;false;false;;;;;; -253953;1;0;false;false;0;0;0;;; -253954;5;0;false;false;;;;;; -253959;10;0;false;false;0;0;0;;; -253969;1;0;false;false;;;;;; -253970;4;0;false;false;0;0;0;;; -253974;1;0;false;false;;;;;; -253975;1;0;false;false;0;0;0;;; -253976;1;0;false;false;;;;;; -253977;24;0;false;false;0;0;0;;; -254001;5;0;false;false;;;;;; -254006;3;1;false;false;127;0;85;;; -254009;1;0;false;false;;;;;; -254010;7;0;false;false;0;0;0;;; -254017;1;0;false;false;;;;;; -254018;1;0;false;false;0;0;0;;; -254019;1;0;false;false;;;;;; -254020;10;0;false;false;0;0;0;;; -254030;1;0;false;false;;;;;; -254031;1;0;false;false;0;0;0;;; -254032;1;0;false;false;;;;;; -254033;12;0;false;false;0;0;0;;; -254045;4;0;false;false;;;;;; -254049;3;1;false;false;127;0;85;;; -254052;1;0;false;false;;;;;; -254053;9;0;false;false;0;0;0;;; -254062;1;0;false;false;;;;;; -254063;1;0;false;false;0;0;0;;; -254064;1;0;false;false;;;;;; -254065;41;0;false;false;0;0;0;;; -254106;4;0;false;false;;;;;; -254110;3;1;false;false;127;0;85;;; -254113;1;0;false;false;;;;;; -254114;9;0;false;false;0;0;0;;; -254123;4;0;false;false;;;;;; -254127;2;1;false;false;127;0;85;;; -254129;1;0;false;false;;;;;; -254130;8;0;false;false;0;0;0;;; -254138;1;0;false;false;;;;;; -254139;1;0;false;false;0;0;0;;; -254140;1;0;false;false;;;;;; -254141;23;0;false;false;0;0;0;;; -254164;1;0;false;false;;;;;; -254165;1;0;false;false;0;0;0;;; -254166;5;0;false;false;;;;;; -254171;35;0;false;false;0;0;0;;; -254206;4;0;false;false;;;;;; -254210;1;0;false;false;0;0;0;;; -254211;6;0;false;false;;;;;; -254217;8;0;false;false;0;0;0;;; -254225;1;0;false;false;;;;;; -254226;1;0;false;false;0;0;0;;; -254227;1;0;false;false;;;;;; -254228;33;0;false;false;0;0;0;;; -254261;4;0;false;false;;;;;; -254265;49;0;false;false;63;127;95;;; -254314;2;0;false;false;;;;;; -254316;26;0;false;false;0;0;0;;; -254342;1;0;false;false;;;;;; -254343;8;0;false;false;0;0;0;;; -254351;1;0;false;false;;;;;; -254352;1;0;false;false;0;0;0;;; -254353;1;0;false;false;;;;;; -254354;9;0;false;false;0;0;0;;; -254363;1;0;false;false;;;;;; -254364;1;0;false;false;0;0;0;;; -254365;1;0;false;false;;;;;; -254366;2;0;false;false;0;0;0;;; -254368;1;0;false;false;;;;;; -254369;4;1;false;false;127;0;85;;; -254373;2;0;false;false;0;0;0;;; -254375;4;0;false;false;;;;;; -254379;1;0;false;false;0;0;0;;; -254380;4;0;false;false;;;;;; -254384;4;1;false;false;127;0;85;;; -254388;1;0;false;false;;;;;; -254389;1;0;false;false;0;0;0;;; -254390;4;0;false;false;;;;;; -254394;20;0;false;false;63;127;95;;; -254414;2;0;false;false;;;;;; -254416;18;0;false;false;0;0;0;;; -254434;1;0;false;false;;;;;; -254435;23;0;false;false;0;0;0;;; -254458;1;0;false;false;;;;;; -254459;5;1;false;false;127;0;85;;; -254464;2;0;false;false;0;0;0;;; -254466;4;0;false;false;;;;;; -254470;1;0;false;false;0;0;0;;; -254471;3;0;false;false;;;;;; -254474;41;0;false;false;0;0;0;;; -254515;3;0;false;false;;;;;; -254518;9;0;false;false;0;0;0;;; -254527;1;0;false;false;;;;;; -254528;55;0;false;false;63;127;95;;; -254583;1;0;false;false;;;;;; -254584;54;0;false;false;63;127;95;;; -254638;1;0;false;false;;;;;; -254639;53;0;false;false;63;127;95;;; -254692;1;0;false;false;;;;;; -254693;18;0;false;false;63;127;95;;; -254711;1;0;false;false;;;;;; -254712;19;0;false;false;0;0;0;;; -254731;2;0;false;false;;;;;; -254733;1;0;false;false;0;0;0;;; -254734;2;0;false;false;;;;;; -254736;3;0;false;false;63;95;191;;; -254739;4;0;false;false;;;;;; -254743;1;0;false;false;63;95;191;;; -254744;1;0;false;false;;;;;; -254745;4;0;false;false;63;95;191;;; -254749;1;0;false;false;;;;;; -254750;3;0;false;false;63;95;191;;; -254753;1;0;false;false;;;;;; -254754;3;0;false;false;63;95;191;;; -254757;1;0;false;false;;;;;; -254758;6;0;false;false;63;95;191;;; -254764;4;0;false;false;;;;;; -254768;1;0;false;false;63;95;191;;; -254769;1;0;false;false;;;;;; -254770;3;0;false;false;127;127;159;;; -254773;3;0;false;false;;;;;; -254776;1;0;false;false;63;95;191;;; -254777;3;0;false;false;;;;;; -254780;1;0;false;false;63;95;191;;; -254781;1;0;false;false;;;;;; -254782;7;1;false;false;127;159;191;;; -254789;4;0;false;false;63;95;191;;; -254793;1;0;false;false;;;;;; -254794;3;0;false;false;63;95;191;;; -254797;1;0;false;false;;;;;; -254798;5;0;false;false;63;95;191;;; -254803;1;0;false;false;;;;;; -254804;8;0;false;false;63;95;191;;; -254812;1;0;false;false;;;;;; -254813;2;0;false;false;63;95;191;;; -254815;1;0;false;false;;;;;; -254816;11;0;false;false;63;95;191;;; -254827;3;0;false;false;;;;;; -254830;1;0;false;false;63;95;191;;; -254831;1;0;false;false;;;;;; -254832;11;1;false;false;127;159;191;;; -254843;12;0;false;false;63;95;191;;; -254855;1;0;false;false;;;;;; -254856;4;0;false;false;127;127;159;;; -254860;3;0;false;false;;;;;; -254863;1;0;false;false;63;95;191;;; -254864;4;0;false;false;;;;;; -254868;4;0;false;false;127;127;159;;; -254872;21;0;false;false;63;95;191;;; -254893;1;0;false;false;;;;;; -254894;1;0;false;false;127;127;159;;; -254895;1;0;false;false;;;;;; -254896;2;0;false;false;63;95;191;;; -254898;1;0;false;false;;;;;; -254899;3;0;false;false;63;95;191;;; -254902;1;0;false;false;;;;;; -254903;8;0;false;false;63;95;191;;; -254911;1;0;false;false;;;;;; -254912;3;0;false;false;63;95;191;;; -254915;1;0;false;false;;;;;; -254916;4;0;false;false;63;95;191;;; -254920;1;0;false;false;;;;;; -254921;8;0;false;false;63;95;191;;; -254929;5;0;false;false;127;127;159;;; -254934;3;0;false;false;;;;;; -254937;1;0;false;false;63;95;191;;; -254938;4;0;false;false;;;;;; -254942;4;0;false;false;127;127;159;;; -254946;27;0;false;false;63;95;191;;; -254973;1;0;false;false;;;;;; -254974;1;0;false;false;127;127;159;;; -254975;1;0;false;false;;;;;; -254976;2;0;false;false;63;95;191;;; -254978;1;0;false;false;;;;;; -254979;3;0;false;false;63;95;191;;; -254982;1;0;false;false;;;;;; -254983;6;0;false;false;63;95;191;;; -254989;1;0;false;false;;;;;; -254990;4;0;false;false;63;95;191;;; -254994;1;0;false;false;;;;;; -254995;3;0;false;false;63;95;191;;; -254998;1;0;false;false;;;;;; -254999;6;0;false;false;63;95;191;;; -255005;1;0;false;false;;;;;; -255006;4;0;false;false;63;95;191;;; -255010;1;0;false;false;;;;;; -255011;7;0;false;false;63;95;191;;; -255018;1;0;false;false;;;;;; -255019;3;0;false;false;63;95;191;;; -255022;1;0;false;false;;;;;; -255023;8;0;false;false;63;95;191;;; -255031;5;0;false;false;127;127;159;;; -255036;3;0;false;false;;;;;; -255039;1;0;false;false;63;95;191;;; -255040;1;0;false;false;;;;;; -255041;5;0;false;false;127;127;159;;; -255046;3;0;false;false;;;;;; -255049;2;0;false;false;63;95;191;;; -255051;2;0;false;false;;;;;; -255053;6;1;false;false;127;0;85;;; -255059;1;0;false;false;;;;;; -255060;4;1;false;false;127;0;85;;; -255064;1;0;false;false;;;;;; -255065;8;0;false;false;0;0;0;;; -255073;3;1;false;false;127;0;85;;; -255076;1;0;false;false;;;;;; -255077;5;0;false;false;0;0;0;;; -255082;1;0;false;false;;;;;; -255083;1;0;false;false;0;0;0;;; -255084;3;0;false;false;;;;;; -255087;14;0;false;false;0;0;0;;; -255101;4;0;false;false;;;;;; -255105;9;0;false;false;0;0;0;;; -255114;1;0;false;false;;;;;; -255115;1;0;false;false;0;0;0;;; -255116;1;0;false;false;;;;;; -255117;5;0;false;false;0;0;0;;; -255122;3;0;false;false;;;;;; -255125;33;0;false;false;0;0;0;;; -255158;3;0;false;false;;;;;; -255161;2;1;false;false;127;0;85;;; -255163;1;0;false;false;;;;;; -255164;12;0;false;false;0;0;0;;; -255176;1;0;false;false;;;;;; -255177;1;0;false;false;0;0;0;;; -255178;1;0;false;false;;;;;; -255179;2;0;false;false;0;0;0;;; -255181;1;0;false;false;;;;;; -255182;1;0;false;false;0;0;0;;; -255183;4;0;false;false;;;;;; -255187;11;0;false;false;0;0;0;;; -255198;1;0;false;false;;;;;; -255199;1;0;false;false;0;0;0;;; -255200;1;0;false;false;;;;;; -255201;2;0;false;false;0;0;0;;; -255203;4;0;false;false;;;;;; -255207;12;0;false;false;0;0;0;;; -255219;4;0;false;false;;;;;; -255223;15;0;false;false;0;0;0;;; -255238;5;1;false;false;127;0;85;;; -255243;2;0;false;false;0;0;0;;; -255245;3;0;false;false;;;;;; -255248;1;0;false;false;0;0;0;;; -255249;3;0;false;false;;;;;; -255252;53;0;false;false;63;127;95;;; -255305;1;0;false;false;;;;;; -255306;18;0;false;false;0;0;0;;; -255324;1;0;false;false;;;;;; -255325;23;0;false;false;0;0;0;;; -255348;1;0;false;false;;;;;; -255349;5;1;false;false;127;0;85;;; -255354;2;0;false;false;0;0;0;;; -255356;3;0;false;false;;;;;; -255359;9;0;false;false;0;0;0;;; -255368;2;0;false;false;;;;;; -255370;1;0;false;false;0;0;0;;; -255371;2;0;false;false;;;;;; -255373;3;0;false;false;63;95;191;;; -255376;4;0;false;false;;;;;; -255380;1;0;false;false;63;95;191;;; -255381;1;0;false;false;;;;;; -255382;4;0;false;false;63;95;191;;; -255386;1;0;false;false;;;;;; -255387;3;0;false;false;63;95;191;;; -255390;1;0;false;false;;;;;; -255391;6;0;false;false;63;95;191;;; -255397;1;0;false;false;;;;;; -255398;8;0;false;false;63;95;191;;; -255406;4;0;false;false;;;;;; -255410;1;0;false;false;63;95;191;;; -255411;1;0;false;false;;;;;; -255412;2;0;false;false;63;95;191;;; -255414;1;0;false;false;;;;;; -255415;3;0;false;false;63;95;191;;; -255418;1;0;false;false;;;;;; -255419;6;0;false;false;63;95;191;;; -255425;1;0;false;false;;;;;; -255426;3;0;false;false;63;95;191;;; -255429;1;0;false;false;;;;;; -255430;3;0;false;false;63;95;191;;; -255433;1;0;false;false;;;;;; -255434;10;0;false;false;63;95;191;;; -255444;1;0;false;false;;;;;; -255445;5;0;false;false;63;95;191;;; -255450;1;0;false;false;;;;;; -255451;3;0;false;false;63;95;191;;; -255454;1;0;false;false;;;;;; -255455;6;0;false;false;63;95;191;;; -255461;1;0;false;false;;;;;; -255462;8;0;false;false;63;95;191;;; -255470;1;0;false;false;;;;;; -255471;4;0;false;false;63;95;191;;; -255475;1;0;false;false;;;;;; -255476;4;0;false;false;63;95;191;;; -255480;4;0;false;false;;;;;; -255484;1;0;false;false;63;95;191;;; -255485;1;0;false;false;;;;;; -255486;3;0;false;false;63;95;191;;; -255489;1;0;false;false;;;;;; -255490;5;0;false;false;63;95;191;;; -255495;1;0;false;false;;;;;; -255496;4;0;false;false;63;95;191;;; -255500;1;0;false;false;;;;;; -255501;3;0;false;false;63;95;191;;; -255504;1;0;false;false;;;;;; -255505;5;0;false;false;63;95;191;;; -255510;1;0;false;false;;;;;; -255511;4;0;false;false;63;95;191;;; -255515;1;0;false;false;;;;;; -255516;2;0;false;false;63;95;191;;; -255518;1;0;false;false;;;;;; -255519;8;0;false;false;63;95;191;;; -255527;1;0;false;false;;;;;; -255528;3;0;false;false;63;95;191;;; -255531;1;0;false;false;;;;;; -255532;3;0;false;false;63;95;191;;; -255535;1;0;false;false;;;;;; -255536;4;0;false;false;63;95;191;;; -255540;1;0;false;false;;;;;; -255541;2;0;false;false;63;95;191;;; -255543;1;0;false;false;;;;;; -255544;6;0;false;false;63;95;191;;; -255550;4;0;false;false;;;;;; -255554;1;0;false;false;63;95;191;;; -255555;1;0;false;false;;;;;; -255556;10;0;false;false;63;95;191;;; -255566;1;0;false;false;;;;;; -255567;1;0;false;false;63;95;191;;; -255568;1;0;false;false;;;;;; -255569;10;0;false;false;63;95;191;;; -255579;1;0;false;false;;;;;; -255580;4;0;false;false;63;95;191;;; -255584;1;0;false;false;;;;;; -255585;2;0;false;false;63;95;191;;; -255587;1;0;false;false;;;;;; -255588;7;0;false;false;63;95;191;;; -255595;1;0;false;false;;;;;; -255596;4;0;false;false;63;95;191;;; -255600;1;0;false;false;;;;;; -255601;6;0;false;false;63;95;191;;; -255607;1;0;false;false;;;;;; -255608;3;0;false;false;63;95;191;;; -255611;1;0;false;false;;;;;; -255612;4;0;false;false;63;95;191;;; -255616;1;0;false;false;;;;;; -255617;4;0;false;false;63;95;191;;; -255621;4;0;false;false;;;;;; -255625;1;0;false;false;63;95;191;;; -255626;1;0;false;false;;;;;; -255627;4;0;false;false;63;95;191;;; -255631;1;0;false;false;;;;;; -255632;3;0;false;false;63;95;191;;; -255635;1;0;false;false;;;;;; -255636;4;0;false;false;63;95;191;;; -255640;3;0;false;false;;;;;; -255643;1;0;false;false;63;95;191;;; -255644;1;0;false;false;;;;;; -255645;3;0;false;false;127;127;159;;; -255648;3;0;false;false;;;;;; -255651;1;0;false;false;63;95;191;;; -255652;1;0;false;false;;;;;; -255653;3;0;false;false;127;127;159;;; -255656;5;0;false;false;63;95;191;;; -255661;4;0;false;false;127;127;159;;; -255665;1;0;false;false;;;;;; -255666;4;0;false;false;63;95;191;;; -255670;1;0;false;false;;;;;; -255671;1;0;false;false;63;95;191;;; -255672;1;0;false;false;;;;;; -255673;6;0;false;false;63;95;191;;; -255679;1;0;false;false;;;;;; -255680;4;0;false;false;63;95;191;;; -255684;1;0;false;false;;;;;; -255685;2;0;false;false;63;95;191;;; -255687;1;0;false;false;;;;;; -255688;4;0;false;false;63;95;191;;; -255692;1;0;false;false;;;;;; -255693;6;0;false;false;63;95;191;;; -255699;1;0;false;false;;;;;; -255700;2;0;false;false;63;95;191;;; -255702;1;0;false;false;;;;;; -255703;3;0;false;false;63;95;191;;; -255706;1;0;false;false;;;;;; -255707;4;0;false;false;63;95;191;;; -255711;1;0;false;false;;;;;; -255712;3;0;false;false;63;95;191;;; -255715;1;0;false;false;;;;;; -255716;10;0;false;false;63;95;191;;; -255726;4;0;false;false;;;;;; -255730;1;0;false;false;63;95;191;;; -255731;1;0;false;false;;;;;; -255732;5;0;false;false;63;95;191;;; -255737;1;0;false;false;;;;;; -255738;2;0;false;false;63;95;191;;; -255740;1;0;false;false;;;;;; -255741;5;0;false;false;63;95;191;;; -255746;3;0;false;false;;;;;; -255749;1;0;false;false;63;95;191;;; -255750;1;0;false;false;;;;;; -255751;4;0;false;false;127;127;159;;; -255755;3;0;false;false;;;;;; -255758;1;0;false;false;63;95;191;;; -255759;3;0;false;false;;;;;; -255762;1;0;false;false;63;95;191;;; -255763;1;0;false;false;;;;;; -255764;7;1;false;false;127;159;191;;; -255771;4;0;false;false;63;95;191;;; -255775;1;0;false;false;;;;;; -255776;3;0;false;false;63;95;191;;; -255779;1;0;false;false;;;;;; -255780;6;0;false;false;63;95;191;;; -255786;1;0;false;false;;;;;; -255787;8;0;false;false;63;95;191;;; -255795;1;0;false;false;;;;;; -255796;8;0;false;false;63;95;191;;; -255804;1;0;false;false;;;;;; -255805;8;0;false;false;63;95;191;;; -255813;1;0;false;false;;;;;; -255814;8;0;false;false;63;95;191;;; -255822;1;0;false;false;;;;;; -255823;4;0;false;false;63;95;191;;; -255827;1;0;false;false;;;;;; -255828;6;0;false;false;63;95;191;;; -255834;4;0;false;false;;;;;; -255838;1;0;false;false;63;95;191;;; -255839;2;0;false;false;;;;;; -255841;4;0;false;false;63;95;191;;; -255845;1;0;false;false;;;;;; -255846;4;0;false;false;63;95;191;;; -255850;1;0;false;false;;;;;; -255851;3;0;false;false;63;95;191;;; -255854;1;0;false;false;;;;;; -255855;5;0;false;false;63;95;191;;; -255860;1;0;false;false;;;;;; -255861;10;0;false;false;63;95;191;;; -255871;1;0;false;false;;;;;; -255872;3;0;false;false;63;95;191;;; -255875;1;0;false;false;;;;;; -255876;3;0;false;false;63;95;191;;; -255879;1;0;false;false;;;;;; -255880;10;0;false;false;63;95;191;;; -255890;2;0;false;false;;;;;; -255892;3;0;false;false;63;95;191;;; -255895;3;0;false;false;;;;;; -255898;1;0;false;false;63;95;191;;; -255899;2;0;false;false;;;;;; -255901;7;0;false;false;63;95;191;;; -255908;1;0;false;false;;;;;; -255909;9;0;false;false;63;95;191;;; -255918;1;0;false;false;;;;;; -255919;2;0;false;false;63;95;191;;; -255921;1;0;false;false;;;;;; -255922;4;0;false;false;63;95;191;;; -255926;1;0;false;false;;;;;; -255927;10;0;false;false;63;95;191;;; -255937;3;0;false;false;;;;;; -255940;1;0;false;false;63;95;191;;; -255941;1;0;false;false;;;;;; -255942;11;1;false;false;127;159;191;;; -255953;12;0;false;false;63;95;191;;; -255965;1;0;false;false;;;;;; -255966;4;0;false;false;127;127;159;;; -255970;3;0;false;false;;;;;; -255973;1;0;false;false;63;95;191;;; -255974;4;0;false;false;;;;;; -255978;4;0;false;false;127;127;159;;; -255982;21;0;false;false;63;95;191;;; -256003;1;0;false;false;;;;;; -256004;1;0;false;false;127;127;159;;; -256005;1;0;false;false;;;;;; -256006;2;0;false;false;63;95;191;;; -256008;1;0;false;false;;;;;; -256009;3;0;false;false;63;95;191;;; -256012;1;0;false;false;;;;;; -256013;8;0;false;false;63;95;191;;; -256021;1;0;false;false;;;;;; -256022;3;0;false;false;63;95;191;;; -256025;1;0;false;false;;;;;; -256026;4;0;false;false;63;95;191;;; -256030;1;0;false;false;;;;;; -256031;8;0;false;false;63;95;191;;; -256039;5;0;false;false;127;127;159;;; -256044;3;0;false;false;;;;;; -256047;1;0;false;false;63;95;191;;; -256048;4;0;false;false;;;;;; -256052;4;0;false;false;127;127;159;;; -256056;27;0;false;false;63;95;191;;; -256083;1;0;false;false;;;;;; -256084;1;0;false;false;127;127;159;;; -256085;1;0;false;false;;;;;; -256086;2;0;false;false;63;95;191;;; -256088;1;0;false;false;;;;;; -256089;3;0;false;false;63;95;191;;; -256092;1;0;false;false;;;;;; -256093;6;0;false;false;63;95;191;;; -256099;1;0;false;false;;;;;; -256100;4;0;false;false;63;95;191;;; -256104;1;0;false;false;;;;;; -256105;3;0;false;false;63;95;191;;; -256108;1;0;false;false;;;;;; -256109;6;0;false;false;63;95;191;;; -256115;1;0;false;false;;;;;; -256116;4;0;false;false;63;95;191;;; -256120;1;0;false;false;;;;;; -256121;7;0;false;false;63;95;191;;; -256128;1;0;false;false;;;;;; -256129;3;0;false;false;63;95;191;;; -256132;1;0;false;false;;;;;; -256133;8;0;false;false;63;95;191;;; -256141;5;0;false;false;127;127;159;;; -256146;3;0;false;false;;;;;; -256149;1;0;false;false;63;95;191;;; -256150;1;0;false;false;;;;;; -256151;5;0;false;false;127;127;159;;; -256156;3;0;false;false;;;;;; -256159;1;0;false;false;63;95;191;;; -256160;1;0;false;false;;;;;; -256161;11;1;false;false;127;159;191;;; -256172;24;0;false;false;63;95;191;;; -256196;1;0;false;false;;;;;; -256197;4;0;false;false;127;127;159;;; -256201;3;0;false;false;;;;;; -256204;1;0;false;false;63;95;191;;; -256205;4;0;false;false;;;;;; -256209;4;0;false;false;127;127;159;;; -256213;19;0;false;false;63;95;191;;; -256232;1;0;false;false;;;;;; -256233;4;0;false;false;63;95;191;;; -256237;1;0;false;false;;;;;; -256238;6;0;false;false;63;95;191;;; -256244;1;0;false;false;;;;;; -256245;2;0;false;false;63;95;191;;; -256247;1;0;false;false;;;;;; -256248;4;0;false;false;63;95;191;;; -256252;5;0;false;false;127;127;159;;; -256257;3;0;false;false;;;;;; -256260;1;0;false;false;63;95;191;;; -256261;1;0;false;false;;;;;; -256262;5;0;false;false;127;127;159;;; -256267;3;0;false;false;;;;;; -256270;2;0;false;false;63;95;191;;; -256272;2;0;false;false;;;;;; -256274;6;1;false;false;127;0;85;;; -256280;1;0;false;false;;;;;; -256281;4;1;false;false;127;0;85;;; -256285;1;0;false;false;;;;;; -256286;14;0;false;false;0;0;0;;; -256300;1;0;false;false;;;;;; -256301;5;0;false;false;0;0;0;;; -256306;1;0;false;false;;;;;; -256307;1;0;false;false;0;0;0;;; -256308;3;0;false;false;;;;;; -256311;14;0;false;false;0;0;0;;; -256325;3;0;false;false;;;;;; -256328;5;0;false;false;0;0;0;;; -256333;1;0;false;false;;;;;; -256334;5;0;false;false;0;0;0;;; -256339;1;0;false;false;;;;;; -256340;1;0;false;false;0;0;0;;; -256341;1;0;false;false;;;;;; -256342;3;1;false;false;127;0;85;;; -256345;1;0;false;false;;;;;; -256346;8;0;false;false;0;0;0;;; -256354;6;0;false;false;;;;;; -256360;2;1;false;false;127;0;85;;; -256362;1;0;false;false;;;;;; -256363;5;0;false;false;0;0;0;;; -256368;1;0;false;false;;;;;; -256369;2;0;false;false;0;0;0;;; -256371;1;0;false;false;;;;;; -256372;4;1;false;false;127;0;85;;; -256376;1;0;false;false;0;0;0;;; -256377;1;0;false;false;;;;;; -256378;1;0;false;false;0;0;0;;; -256379;4;0;false;false;;;;;; -256383;35;0;false;false;0;0;0;;; -256418;3;0;false;false;;;;;; -256421;1;0;false;false;0;0;0;;; -256422;3;0;false;false;;;;;; -256425;11;0;false;false;0;0;0;;; -256436;1;0;false;false;;;;;; -256437;1;0;false;false;0;0;0;;; -256438;1;0;false;false;;;;;; -256439;2;0;false;false;0;0;0;;; -256441;3;0;false;false;;;;;; -256444;9;0;false;false;0;0;0;;; -256453;1;0;false;false;;;;;; -256454;1;0;false;false;0;0;0;;; -256455;1;0;false;false;;;;;; -256456;15;0;false;false;0;0;0;;; -256471;3;0;false;false;;;;;; -256474;10;0;false;false;0;0;0;;; -256484;1;0;false;false;;;;;; -256485;1;0;false;false;0;0;0;;; -256486;1;0;false;false;;;;;; -256487;5;0;false;false;0;0;0;;; -256492;3;0;false;false;;;;;; -256495;10;0;false;false;0;0;0;;; -256505;1;0;false;false;;;;;; -256506;1;0;false;false;0;0;0;;; -256507;1;0;false;false;;;;;; -256508;4;1;false;false;127;0;85;;; -256512;1;0;false;false;0;0;0;;; -256513;4;0;false;false;;;;;; -256517;27;0;false;false;0;0;0;;; -256544;1;0;false;false;;;;;; -256545;7;0;false;false;0;0;0;;; -256552;3;0;false;false;;;;;; -256555;2;1;false;false;127;0;85;;; -256557;1;0;false;false;;;;;; -256558;12;0;false;false;0;0;0;;; -256570;1;0;false;false;;;;;; -256571;1;0;false;false;0;0;0;;; -256572;4;0;false;false;;;;;; -256576;15;0;false;false;0;0;0;;; -256591;1;0;false;false;;;;;; -256592;15;0;false;false;0;0;0;;; -256607;1;0;false;false;;;;;; -256608;1;0;false;false;0;0;0;;; -256609;1;0;false;false;;;;;; -256610;4;1;false;false;127;0;85;;; -256614;1;0;false;false;0;0;0;;; -256615;8;0;false;false;;;;;; -256623;2;1;false;false;127;0;85;;; -256625;1;0;false;false;;;;;; -256626;29;0;false;false;0;0;0;;; -256655;1;0;false;false;;;;;; -256656;1;0;false;false;0;0;0;;; -256657;7;0;false;false;;;;;; -256664;15;0;false;false;0;0;0;;; -256679;1;0;false;false;;;;;; -256680;1;0;false;false;0;0;0;;; -256681;1;0;false;false;;;;;; -256682;3;1;false;false;127;0;85;;; -256685;1;0;false;false;;;;;; -256686;32;0;false;false;0;0;0;;; -256718;5;0;false;false;;;;;; -256723;21;0;false;false;0;0;0;;; -256744;1;0;false;false;;;;;; -256745;1;0;false;false;0;0;0;;; -256746;1;0;false;false;;;;;; -256747;12;0;false;false;0;0;0;;; -256759;5;0;false;false;;;;;; -256764;19;0;false;false;0;0;0;;; -256783;1;0;false;false;;;;;; -256784;1;0;false;false;0;0;0;;; -256785;1;0;false;false;;;;;; -256786;11;0;false;false;0;0;0;;; -256797;1;0;false;false;;;;;; -256798;1;0;false;false;0;0;0;;; -256799;1;0;false;false;;;;;; -256800;20;0;false;false;0;0;0;;; -256820;5;0;false;false;;;;;; -256825;20;0;false;false;0;0;0;;; -256845;1;0;false;false;;;;;; -256846;1;0;false;false;0;0;0;;; -256847;1;0;false;false;;;;;; -256848;33;0;false;false;0;0;0;;; -256881;1;0;false;false;;;;;; -256882;9;0;false;false;0;0;0;;; -256891;1;0;false;false;;;;;; -256892;1;0;false;false;0;0;0;;; -256893;1;0;false;false;;;;;; -256894;13;0;false;false;0;0;0;;; -256907;4;0;false;false;;;;;; -256911;1;0;false;false;0;0;0;;; -256912;4;0;false;false;;;;;; -256916;28;0;false;false;0;0;0;;; -256944;4;0;false;false;;;;;; -256948;23;0;false;false;0;0;0;;; -256971;5;0;false;false;;;;;; -256976;2;1;false;false;127;0;85;;; -256978;1;0;false;false;;;;;; -256979;16;0;false;false;0;0;0;;; -256995;1;0;false;false;;;;;; -256996;2;0;false;false;0;0;0;;; -256998;1;0;false;false;;;;;; -256999;4;1;false;false;127;0;85;;; -257003;1;0;false;false;0;0;0;;; -257004;1;0;false;false;;;;;; -257005;1;0;false;false;0;0;0;;; -257006;5;0;false;false;;;;;; -257011;31;0;false;false;0;0;0;;; -257042;1;0;false;false;;;;;; -257043;17;0;false;false;0;0;0;;; -257060;4;0;false;false;;;;;; -257064;1;0;false;false;0;0;0;;; -257065;3;0;false;false;;;;;; -257068;1;0;false;false;0;0;0;;; -257069;2;0;false;false;;;;;; -257071;1;0;false;false;0;0;0;;; -257072;2;0;false;false;;;;;; -257074;3;0;false;false;63;95;191;;; -257077;3;0;false;false;;;;;; -257080;1;0;false;false;63;95;191;;; -257081;1;0;false;false;;;;;; -257082;4;0;false;false;63;95;191;;; -257086;1;0;false;false;;;;;; -257087;3;0;false;false;63;95;191;;; -257090;1;0;false;false;;;;;; -257091;4;0;false;false;63;95;191;;; -257095;1;0;false;false;;;;;; -257096;5;0;false;false;63;95;191;;; -257101;1;0;false;false;;;;;; -257102;2;0;false;false;63;95;191;;; -257104;1;0;false;false;;;;;; -257105;3;0;false;false;63;95;191;;; -257108;1;0;false;false;;;;;; -257109;9;0;false;false;63;95;191;;; -257118;1;0;false;false;;;;;; -257119;6;0;false;false;63;95;191;;; -257125;1;0;false;false;;;;;; -257126;2;0;false;false;63;95;191;;; -257128;1;0;false;false;;;;;; -257129;11;0;false;false;63;95;191;;; -257140;3;0;false;false;;;;;; -257143;1;0;false;false;63;95;191;;; -257144;1;0;false;false;;;;;; -257145;3;0;false;false;127;127;159;;; -257148;3;0;false;false;;;;;; -257151;1;0;false;false;63;95;191;;; -257152;1;0;false;false;;;;;; -257153;3;0;false;false;63;95;191;;; -257156;1;0;false;false;;;;;; -257157;4;0;false;false;63;95;191;;; -257161;1;0;false;false;;;;;; -257162;5;0;false;false;63;95;191;;; -257167;1;0;false;false;;;;;; -257168;9;0;false;false;63;95;191;;; -257177;1;0;false;false;;;;;; -257178;3;0;false;false;63;95;191;;; -257181;1;0;false;false;;;;;; -257182;6;0;false;false;63;95;191;;; -257188;1;0;false;false;;;;;; -257189;2;0;false;false;63;95;191;;; -257191;1;0;false;false;;;;;; -257192;4;0;false;false;63;95;191;;; -257196;1;0;false;false;;;;;; -257197;4;0;false;false;63;95;191;;; -257201;3;0;false;false;;;;;; -257204;1;0;false;false;63;95;191;;; -257205;1;0;false;false;;;;;; -257206;3;0;false;false;63;95;191;;; -257209;1;0;false;false;;;;;; -257210;4;0;false;false;63;95;191;;; -257214;1;0;false;false;;;;;; -257215;3;0;false;false;63;95;191;;; -257218;1;0;false;false;;;;;; -257219;4;0;false;false;63;95;191;;; -257223;1;0;false;false;;;;;; -257224;4;0;false;false;63;95;191;;; -257228;1;0;false;false;;;;;; -257229;3;0;false;false;63;95;191;;; -257232;1;0;false;false;;;;;; -257233;7;0;false;false;63;95;191;;; -257240;3;0;false;false;;;;;; -257243;1;0;false;false;63;95;191;;; -257244;1;0;false;false;;;;;; -257245;4;0;false;false;127;127;159;;; -257249;3;0;false;false;;;;;; -257252;1;0;false;false;63;95;191;;; -257253;3;0;false;false;;;;;; -257256;1;0;false;false;63;95;191;;; -257257;1;0;false;false;;;;;; -257258;7;1;false;false;127;159;191;;; -257265;5;0;false;false;63;95;191;;; -257270;1;0;false;false;;;;;; -257271;3;0;false;false;63;95;191;;; -257274;1;0;false;false;;;;;; -257275;3;0;false;false;63;95;191;;; -257278;1;0;false;false;;;;;; -257279;4;0;false;false;63;95;191;;; -257283;1;0;false;false;;;;;; -257284;6;0;false;false;63;95;191;;; -257290;3;0;false;false;;;;;; -257293;1;0;false;false;63;95;191;;; -257294;1;0;false;false;;;;;; -257295;11;1;false;false;127;159;191;;; -257306;12;0;false;false;63;95;191;;; -257318;1;0;false;false;;;;;; -257319;4;0;false;false;127;127;159;;; -257323;3;0;false;false;;;;;; -257326;1;0;false;false;63;95;191;;; -257327;4;0;false;false;;;;;; -257331;4;0;false;false;127;127;159;;; -257335;21;0;false;false;63;95;191;;; -257356;1;0;false;false;;;;;; -257357;1;0;false;false;127;127;159;;; -257358;1;0;false;false;;;;;; -257359;2;0;false;false;63;95;191;;; -257361;1;0;false;false;;;;;; -257362;3;0;false;false;63;95;191;;; -257365;1;0;false;false;;;;;; -257366;8;0;false;false;63;95;191;;; -257374;1;0;false;false;;;;;; -257375;3;0;false;false;63;95;191;;; -257378;1;0;false;false;;;;;; -257379;4;0;false;false;63;95;191;;; -257383;1;0;false;false;;;;;; -257384;8;0;false;false;63;95;191;;; -257392;5;0;false;false;127;127;159;;; -257397;3;0;false;false;;;;;; -257400;1;0;false;false;63;95;191;;; -257401;4;0;false;false;;;;;; -257405;4;0;false;false;127;127;159;;; -257409;27;0;false;false;63;95;191;;; -257436;1;0;false;false;;;;;; -257437;1;0;false;false;127;127;159;;; -257438;1;0;false;false;;;;;; -257439;2;0;false;false;63;95;191;;; -257441;1;0;false;false;;;;;; -257442;3;0;false;false;63;95;191;;; -257445;1;0;false;false;;;;;; -257446;6;0;false;false;63;95;191;;; -257452;1;0;false;false;;;;;; -257453;4;0;false;false;63;95;191;;; -257457;1;0;false;false;;;;;; -257458;3;0;false;false;63;95;191;;; -257461;1;0;false;false;;;;;; -257462;6;0;false;false;63;95;191;;; -257468;1;0;false;false;;;;;; -257469;4;0;false;false;63;95;191;;; -257473;1;0;false;false;;;;;; -257474;7;0;false;false;63;95;191;;; -257481;1;0;false;false;;;;;; -257482;3;0;false;false;63;95;191;;; -257485;1;0;false;false;;;;;; -257486;8;0;false;false;63;95;191;;; -257494;5;0;false;false;127;127;159;;; -257499;3;0;false;false;;;;;; -257502;1;0;false;false;63;95;191;;; -257503;1;0;false;false;;;;;; -257504;5;0;false;false;127;127;159;;; -257509;3;0;false;false;;;;;; -257512;1;0;false;false;63;95;191;;; -257513;1;0;false;false;;;;;; -257514;11;1;false;false;127;159;191;;; -257525;24;0;false;false;63;95;191;;; -257549;1;0;false;false;;;;;; -257550;4;0;false;false;127;127;159;;; -257554;3;0;false;false;;;;;; -257557;1;0;false;false;63;95;191;;; -257558;3;0;false;false;;;;;; -257561;4;0;false;false;127;127;159;;; -257565;20;0;false;false;63;95;191;;; -257585;1;0;false;false;;;;;; -257586;4;0;false;false;63;95;191;;; -257590;1;0;false;false;;;;;; -257591;5;0;false;false;63;95;191;;; -257596;1;0;false;false;;;;;; -257597;2;0;false;false;63;95;191;;; -257599;1;0;false;false;;;;;; -257600;1;0;false;false;63;95;191;;; -257601;5;0;false;false;127;127;159;;; -257606;3;0;false;false;;;;;; -257609;1;0;false;false;63;95;191;;; -257610;1;0;false;false;;;;;; -257611;5;0;false;false;127;127;159;;; -257616;3;0;false;false;;;;;; -257619;2;0;false;false;63;95;191;;; -257621;2;0;false;false;;;;;; -257623;6;1;false;false;127;0;85;;; -257629;1;0;false;false;;;;;; -257630;4;1;false;false;127;0;85;;; -257634;1;0;false;false;;;;;; -257635;13;0;false;false;0;0;0;;; -257648;3;1;false;false;127;0;85;;; -257651;1;0;false;false;;;;;; -257652;6;0;false;false;0;0;0;;; -257658;1;0;false;false;;;;;; -257659;1;0;false;false;0;0;0;;; -257660;3;0;false;false;;;;;; -257663;14;0;false;false;0;0;0;;; -257677;3;0;false;false;;;;;; -257680;2;1;false;false;127;0;85;;; -257682;1;0;false;false;;;;;; -257683;6;0;false;false;0;0;0;;; -257689;1;0;false;false;;;;;; -257690;2;0;false;false;0;0;0;;; -257692;1;0;false;false;;;;;; -257693;2;0;false;false;0;0;0;;; -257695;1;0;false;false;;;;;; -257696;1;0;false;false;0;0;0;;; -257697;4;0;false;false;;;;;; -257701;36;0;false;false;0;0;0;;; -257737;3;0;false;false;;;;;; -257740;1;0;false;false;0;0;0;;; -257741;3;0;false;false;;;;;; -257744;9;0;false;false;0;0;0;;; -257753;1;0;false;false;;;;;; -257754;1;0;false;false;0;0;0;;; -257755;1;0;false;false;;;;;; -257756;6;0;false;false;0;0;0;;; -257762;2;0;false;false;;;;;; -257764;1;0;false;false;0;0;0;;; -257765;2;0;false;false;;;;;; -257767;3;0;false;false;63;95;191;;; -257770;3;0;false;false;;;;;; -257773;1;0;false;false;63;95;191;;; -257774;1;0;false;false;;;;;; -257775;4;0;false;false;63;95;191;;; -257779;1;0;false;false;;;;;; -257780;3;0;false;false;63;95;191;;; -257783;1;0;false;false;;;;;; -257784;3;0;false;false;63;95;191;;; -257787;1;0;false;false;;;;;; -257788;6;0;false;false;63;95;191;;; -257794;1;0;false;false;;;;;; -257795;2;0;false;false;63;95;191;;; -257797;1;0;false;false;;;;;; -257798;7;0;false;false;63;95;191;;; -257805;1;0;false;false;;;;;; -257806;2;0;false;false;63;95;191;;; -257808;1;0;false;false;;;;;; -257809;5;0;false;false;63;95;191;;; -257814;1;0;false;false;;;;;; -257815;2;0;false;false;63;95;191;;; -257817;1;0;false;false;;;;;; -257818;2;0;false;false;63;95;191;;; -257820;1;0;false;false;;;;;; -257821;4;0;false;false;63;95;191;;; -257825;1;0;false;false;;;;;; -257826;4;0;false;false;63;95;191;;; -257830;3;0;false;false;;;;;; -257833;1;0;false;false;63;95;191;;; -257834;1;0;false;false;;;;;; -257835;3;0;false;false;127;127;159;;; -257838;3;0;false;false;;;;;; -257841;1;0;false;false;63;95;191;;; -257842;1;0;false;false;;;;;; -257843;3;0;false;false;63;95;191;;; -257846;1;0;false;false;;;;;; -257847;3;0;false;false;63;95;191;;; -257850;1;0;false;false;;;;;; -257851;5;0;false;false;63;95;191;;; -257856;1;0;false;false;;;;;; -257857;2;0;false;false;63;95;191;;; -257859;1;0;false;false;;;;;; -257860;3;0;false;false;63;95;191;;; -257863;1;0;false;false;;;;;; -257864;5;0;false;false;63;95;191;;; -257869;1;0;false;false;;;;;; -257870;2;0;false;false;63;95;191;;; -257872;1;0;false;false;;;;;; -257873;3;0;false;false;63;95;191;;; -257876;1;0;false;false;;;;;; -257877;4;0;false;false;63;95;191;;; -257881;1;0;false;false;;;;;; -257882;4;0;false;false;63;95;191;;; -257886;1;0;false;false;;;;;; -257887;2;0;false;false;63;95;191;;; -257889;1;0;false;false;;;;;; -257890;9;0;false;false;63;95;191;;; -257899;1;0;false;false;;;;;; -257900;2;0;false;false;63;95;191;;; -257902;1;0;false;false;;;;;; -257903;3;0;false;false;63;95;191;;; -257906;1;0;false;false;;;;;; -257907;3;0;false;false;63;95;191;;; -257910;4;0;false;false;;;;;; -257914;1;0;false;false;63;95;191;;; -257915;1;0;false;false;;;;;; -257916;2;0;false;false;63;95;191;;; -257918;1;0;false;false;;;;;; -257919;3;0;false;false;63;95;191;;; -257922;1;0;false;false;;;;;; -257923;7;0;false;false;63;95;191;;; -257930;1;0;false;false;;;;;; -257931;3;0;false;false;63;95;191;;; -257934;1;0;false;false;;;;;; -257935;3;0;false;false;63;95;191;;; -257938;1;0;false;false;;;;;; -257939;5;0;false;false;63;95;191;;; -257944;1;0;false;false;;;;;; -257945;7;0;false;false;63;95;191;;; -257952;1;0;false;false;;;;;; -257953;4;0;false;false;63;95;191;;; -257957;1;0;false;false;;;;;; -257958;3;0;false;false;63;95;191;;; -257961;1;0;false;false;;;;;; -257962;6;0;false;false;63;95;191;;; -257968;1;0;false;false;;;;;; -257969;2;0;false;false;63;95;191;;; -257971;1;0;false;false;;;;;; -257972;9;0;false;false;63;95;191;;; -257981;3;0;false;false;;;;;; -257984;1;0;false;false;63;95;191;;; -257985;1;0;false;false;;;;;; -257986;8;0;false;false;63;95;191;;; -257994;1;0;false;false;;;;;; -257995;6;0;false;false;63;95;191;;; -258001;1;0;false;false;;;;;; -258002;4;0;false;false;63;95;191;;; -258006;1;0;false;false;;;;;; -258007;5;0;false;false;63;95;191;;; -258012;3;0;false;false;;;;;; -258015;1;0;false;false;63;95;191;;; -258016;1;0;false;false;;;;;; -258017;5;0;false;false;63;95;191;;; -258022;1;0;false;false;;;;;; -258023;3;0;false;false;63;95;191;;; -258026;1;0;false;false;;;;;; -258027;3;0;false;false;63;95;191;;; -258030;1;0;false;false;;;;;; -258031;5;0;false;false;63;95;191;;; -258036;1;0;false;false;;;;;; -258037;2;0;false;false;63;95;191;;; -258039;1;0;false;false;;;;;; -258040;5;0;false;false;63;95;191;;; -258045;1;0;false;false;;;;;; -258046;2;0;false;false;63;95;191;;; -258048;1;0;false;false;;;;;; -258049;1;0;false;false;63;95;191;;; -258050;1;0;false;false;;;;;; -258051;4;0;false;false;63;95;191;;; -258055;1;0;false;false;;;;;; -258056;3;0;false;false;63;95;191;;; -258059;1;0;false;false;;;;;; -258060;4;0;false;false;63;95;191;;; -258064;1;0;false;false;;;;;; -258065;2;0;false;false;63;95;191;;; -258067;1;0;false;false;;;;;; -258068;3;0;false;false;63;95;191;;; -258071;1;0;false;false;;;;;; -258072;2;0;false;false;63;95;191;;; -258074;1;0;false;false;;;;;; -258075;3;0;false;false;63;95;191;;; -258078;1;0;false;false;;;;;; -258079;7;0;false;false;63;95;191;;; -258086;3;0;false;false;;;;;; -258089;1;0;false;false;63;95;191;;; -258090;1;0;false;false;;;;;; -258091;4;0;false;false;127;127;159;;; -258095;3;0;false;false;;;;;; -258098;1;0;false;false;63;95;191;;; -258099;3;0;false;false;;;;;; -258102;1;0;false;false;63;95;191;;; -258103;1;0;false;false;;;;;; -258104;7;1;false;false;127;159;191;;; -258111;8;0;false;false;63;95;191;;; -258119;1;0;false;false;;;;;; -258120;3;0;false;false;63;95;191;;; -258123;1;0;false;false;;;;;; -258124;3;0;false;false;63;95;191;;; -258127;1;0;false;false;;;;;; -258128;6;0;false;false;63;95;191;;; -258134;1;0;false;false;;;;;; -258135;4;0;false;false;63;95;191;;; -258139;1;0;false;false;;;;;; -258140;2;0;false;false;63;95;191;;; -258142;1;0;false;false;;;;;; -258143;7;0;false;false;63;95;191;;; -258150;1;0;false;false;;;;;; -258151;1;0;false;false;63;95;191;;; -258152;1;0;false;false;;;;;; -258153;3;0;false;false;63;95;191;;; -258156;4;0;false;false;;;;;; -258160;1;0;false;false;63;95;191;;; -258161;2;0;false;false;;;;;; -258163;14;0;false;false;63;95;191;;; -258177;1;0;false;false;;;;;; -258178;1;0;false;false;127;127;159;;; -258179;1;0;false;false;;;;;; -258180;5;0;false;false;63;95;191;;; -258185;1;0;false;false;;;;;; -258186;7;0;false;false;63;95;191;;; -258193;1;0;false;false;;;;;; -258194;5;0;false;false;63;95;191;;; -258199;1;0;false;false;;;;;; -258200;3;0;false;false;63;95;191;;; -258203;1;0;false;false;;;;;; -258204;5;0;false;false;63;95;191;;; -258209;1;0;false;false;;;;;; -258210;2;0;false;false;63;95;191;;; -258212;1;0;false;false;;;;;; -258213;2;0;false;false;63;95;191;;; -258215;1;0;false;false;;;;;; -258216;5;0;false;false;63;95;191;;; -258221;1;0;false;false;;;;;; -258222;3;0;false;false;63;95;191;;; -258225;1;0;false;false;;;;;; -258226;5;0;false;false;63;95;191;;; -258231;4;0;false;false;;;;;; -258235;1;0;false;false;63;95;191;;; -258236;2;0;false;false;;;;;; -258238;7;0;false;false;63;95;191;;; -258245;1;0;false;false;;;;;; -258246;3;0;false;false;63;95;191;;; -258249;1;0;false;false;;;;;; -258250;7;0;false;false;63;95;191;;; -258257;1;0;false;false;;;;;; -258258;5;0;false;false;63;95;191;;; -258263;1;0;false;false;;;;;; -258264;2;0;false;false;63;95;191;;; -258266;1;0;false;false;;;;;; -258267;14;0;false;false;63;95;191;;; -258281;1;0;false;false;;;;;; -258282;1;0;false;false;127;127;159;;; -258283;1;0;false;false;;;;;; -258284;2;0;false;false;63;95;191;;; -258286;1;0;false;false;;;;;; -258287;2;0;false;false;63;95;191;;; -258289;1;0;false;false;;;;;; -258290;3;0;false;false;63;95;191;;; -258293;1;0;false;false;;;;;; -258294;2;0;false;false;63;95;191;;; -258296;1;0;false;false;;;;;; -258297;5;0;false;false;63;95;191;;; -258302;4;0;false;false;;;;;; -258306;1;0;false;false;63;95;191;;; -258307;2;0;false;false;;;;;; -258309;5;0;false;false;63;95;191;;; -258314;1;0;false;false;;;;;; -258315;4;0;false;false;63;95;191;;; -258319;1;0;false;false;;;;;; -258320;2;0;false;false;63;95;191;;; -258322;1;0;false;false;;;;;; -258323;8;0;false;false;63;95;191;;; -258331;1;0;false;false;;;;;; -258332;12;0;false;false;63;95;191;;; -258344;3;0;false;false;;;;;; -258347;1;0;false;false;63;95;191;;; -258348;1;0;false;false;;;;;; -258349;11;1;false;false;127;159;191;;; -258360;12;0;false;false;63;95;191;;; -258372;1;0;false;false;;;;;; -258373;4;0;false;false;127;127;159;;; -258377;3;0;false;false;;;;;; -258380;1;0;false;false;63;95;191;;; -258381;4;0;false;false;;;;;; -258385;4;0;false;false;127;127;159;;; -258389;21;0;false;false;63;95;191;;; -258410;1;0;false;false;;;;;; -258411;1;0;false;false;127;127;159;;; -258412;1;0;false;false;;;;;; -258413;2;0;false;false;63;95;191;;; -258415;1;0;false;false;;;;;; -258416;3;0;false;false;63;95;191;;; -258419;1;0;false;false;;;;;; -258420;8;0;false;false;63;95;191;;; -258428;1;0;false;false;;;;;; -258429;3;0;false;false;63;95;191;;; -258432;1;0;false;false;;;;;; -258433;4;0;false;false;63;95;191;;; -258437;1;0;false;false;;;;;; -258438;8;0;false;false;63;95;191;;; -258446;5;0;false;false;127;127;159;;; -258451;3;0;false;false;;;;;; -258454;1;0;false;false;63;95;191;;; -258455;4;0;false;false;;;;;; -258459;4;0;false;false;127;127;159;;; -258463;27;0;false;false;63;95;191;;; -258490;1;0;false;false;;;;;; -258491;1;0;false;false;127;127;159;;; -258492;1;0;false;false;;;;;; -258493;2;0;false;false;63;95;191;;; -258495;1;0;false;false;;;;;; -258496;3;0;false;false;63;95;191;;; -258499;1;0;false;false;;;;;; -258500;6;0;false;false;63;95;191;;; -258506;1;0;false;false;;;;;; -258507;4;0;false;false;63;95;191;;; -258511;1;0;false;false;;;;;; -258512;3;0;false;false;63;95;191;;; -258515;1;0;false;false;;;;;; -258516;6;0;false;false;63;95;191;;; -258522;1;0;false;false;;;;;; -258523;4;0;false;false;63;95;191;;; -258527;1;0;false;false;;;;;; -258528;7;0;false;false;63;95;191;;; -258535;1;0;false;false;;;;;; -258536;3;0;false;false;63;95;191;;; -258539;1;0;false;false;;;;;; -258540;8;0;false;false;63;95;191;;; -258548;5;0;false;false;127;127;159;;; -258553;3;0;false;false;;;;;; -258556;1;0;false;false;63;95;191;;; -258557;1;0;false;false;;;;;; -258558;5;0;false;false;127;127;159;;; -258563;3;0;false;false;;;;;; -258566;2;0;false;false;63;95;191;;; -258568;2;0;false;false;;;;;; -258570;6;1;false;false;127;0;85;;; -258576;1;0;false;false;;;;;; -258577;4;1;false;false;127;0;85;;; -258581;1;0;false;false;;;;;; -258582;12;0;false;false;0;0;0;;; -258594;3;1;false;false;127;0;85;;; -258597;1;0;false;false;;;;;; -258598;9;0;false;false;0;0;0;;; -258607;1;0;false;false;;;;;; -258608;1;0;false;false;0;0;0;;; -258609;3;0;false;false;;;;;; -258612;14;0;false;false;0;0;0;;; -258626;3;0;false;false;;;;;; -258629;3;1;false;false;127;0;85;;; -258632;1;0;false;false;;;;;; -258633;9;0;false;false;0;0;0;;; -258642;1;0;false;false;;;;;; -258643;1;0;false;false;0;0;0;;; -258644;1;0;false;false;;;;;; -258645;30;0;false;false;0;0;0;;; -258675;3;0;false;false;;;;;; -258678;3;1;false;false;127;0;85;;; -258681;1;0;false;false;;;;;; -258682;8;0;false;false;0;0;0;;; -258690;1;0;false;false;;;;;; -258691;1;0;false;false;0;0;0;;; -258692;1;0;false;false;;;;;; -258693;11;0;false;false;0;0;0;;; -258704;1;0;false;false;;;;;; -258705;19;0;false;false;0;0;0;;; -258724;1;0;false;false;;;;;; -258725;22;0;false;false;0;0;0;;; -258747;6;0;false;false;;;;;; -258753;2;1;false;false;127;0;85;;; -258755;1;0;false;false;;;;;; -258756;15;0;false;false;0;0;0;;; -258771;1;0;false;false;;;;;; -258772;2;0;false;false;0;0;0;;; -258774;1;0;false;false;;;;;; -258775;2;0;false;false;0;0;0;;; -258777;1;0;false;false;;;;;; -258778;1;0;false;false;0;0;0;;; -258779;4;0;false;false;;;;;; -258783;6;1;false;false;127;0;85;;; -258789;1;0;false;false;0;0;0;;; -258790;3;0;false;false;;;;;; -258793;1;0;false;false;0;0;0;;; -258794;4;0;false;false;;;;;; -258798;2;1;false;false;127;0;85;;; -258800;1;0;false;false;;;;;; -258801;9;0;false;false;0;0;0;;; -258810;1;0;false;false;;;;;; -258811;1;0;false;false;0;0;0;;; -258812;1;0;false;false;;;;;; -258813;2;0;false;false;0;0;0;;; -258815;1;0;false;false;;;;;; -258816;1;0;false;false;0;0;0;;; -258817;4;0;false;false;;;;;; -258821;8;0;false;false;0;0;0;;; -258829;1;0;false;false;;;;;; -258830;1;0;false;false;0;0;0;;; -258831;1;0;false;false;;;;;; -258832;2;0;false;false;0;0;0;;; -258834;3;0;false;false;;;;;; -258837;1;0;false;false;0;0;0;;; -258838;3;0;false;false;;;;;; -258841;4;1;false;false;127;0;85;;; -258845;4;0;false;false;;;;;; -258849;2;1;false;false;127;0;85;;; -258851;1;0;false;false;;;;;; -258852;9;0;false;false;0;0;0;;; -258861;1;0;false;false;;;;;; -258862;1;0;false;false;0;0;0;;; -258863;1;0;false;false;;;;;; -258864;9;0;false;false;0;0;0;;; -258873;1;0;false;false;;;;;; -258874;1;0;false;false;0;0;0;;; -258875;1;0;false;false;;;;;; -258876;9;0;false;false;0;0;0;;; -258885;1;0;false;false;;;;;; -258886;1;0;false;false;0;0;0;;; -258887;4;0;false;false;;;;;; -258891;8;0;false;false;0;0;0;;; -258899;1;0;false;false;;;;;; -258900;1;0;false;false;0;0;0;;; -258901;1;0;false;false;;;;;; -258902;9;0;false;false;0;0;0;;; -258911;1;0;false;false;;;;;; -258912;1;0;false;false;0;0;0;;; -258913;1;0;false;false;;;;;; -258914;9;0;false;false;0;0;0;;; -258923;3;0;false;false;;;;;; -258926;1;0;false;false;0;0;0;;; -258927;3;0;false;false;;;;;; -258930;2;1;false;false;127;0;85;;; -258932;1;0;false;false;;;;;; -258933;10;0;false;false;0;0;0;;; -258943;1;0;false;false;;;;;; -258944;1;0;false;false;0;0;0;;; -258945;4;0;false;false;;;;;; -258949;3;1;false;false;127;0;85;;; -258952;1;0;false;false;;;;;; -258953;17;0;false;false;0;0;0;;; -258970;1;0;false;false;;;;;; -258971;1;0;false;false;0;0;0;;; -258972;1;0;false;false;;;;;; -258973;41;0;false;false;0;0;0;;; -259014;4;0;false;false;;;;;; -259018;8;0;false;false;0;0;0;;; -259026;1;0;false;false;;;;;; -259027;1;0;false;false;0;0;0;;; -259028;1;0;false;false;;;;;; -259029;43;0;false;false;0;0;0;;; -259072;3;0;false;false;;;;;; -259075;1;0;false;false;0;0;0;;; -259076;3;0;false;false;;;;;; -259079;32;0;false;false;0;0;0;;; -259111;1;0;false;false;;;;;; -259112;1;0;false;false;0;0;0;;; -259113;1;0;false;false;;;;;; -259114;23;0;false;false;0;0;0;;; -259137;1;0;false;false;;;;;; -259138;4;1;false;false;127;0;85;;; -259142;2;0;false;false;0;0;0;;; -259144;2;0;false;false;;;;;; -259146;1;0;false;false;0;0;0;;; -259147;2;0;false;false;;;;;; -259149;3;0;false;false;63;95;191;;; -259152;3;0;false;false;;;;;; -259155;1;0;false;false;63;95;191;;; -259156;1;0;false;false;;;;;; -259157;4;0;false;false;63;95;191;;; -259161;1;0;false;false;;;;;; -259162;3;0;false;false;63;95;191;;; -259165;1;0;false;false;;;;;; -259166;3;0;false;false;63;95;191;;; -259169;1;0;false;false;;;;;; -259170;5;0;false;false;63;95;191;;; -259175;1;0;false;false;;;;;; -259176;7;0;false;false;63;95;191;;; -259183;1;0;false;false;;;;;; -259184;2;0;false;false;63;95;191;;; -259186;1;0;false;false;;;;;; -259187;7;0;false;false;63;95;191;;; -259194;1;0;false;false;;;;;; -259195;2;0;false;false;63;95;191;;; -259197;1;0;false;false;;;;;; -259198;5;0;false;false;63;95;191;;; -259203;1;0;false;false;;;;;; -259204;2;0;false;false;63;95;191;;; -259206;1;0;false;false;;;;;; -259207;2;0;false;false;63;95;191;;; -259209;1;0;false;false;;;;;; -259210;4;0;false;false;63;95;191;;; -259214;1;0;false;false;;;;;; -259215;4;0;false;false;63;95;191;;; -259219;3;0;false;false;;;;;; -259222;1;0;false;false;63;95;191;;; -259223;1;0;false;false;;;;;; -259224;3;0;false;false;127;127;159;;; -259227;3;0;false;false;;;;;; -259230;1;0;false;false;63;95;191;;; -259231;1;0;false;false;;;;;; -259232;3;0;false;false;63;95;191;;; -259235;1;0;false;false;;;;;; -259236;3;0;false;false;63;95;191;;; -259239;1;0;false;false;;;;;; -259240;5;0;false;false;63;95;191;;; -259245;1;0;false;false;;;;;; -259246;6;0;false;false;63;95;191;;; -259252;1;0;false;false;;;;;; -259253;2;0;false;false;63;95;191;;; -259255;1;0;false;false;;;;;; -259256;3;0;false;false;63;95;191;;; -259259;1;0;false;false;;;;;; -259260;8;0;false;false;63;95;191;;; -259268;1;0;false;false;;;;;; -259269;5;0;false;false;63;95;191;;; -259274;1;0;false;false;;;;;; -259275;6;0;false;false;63;95;191;;; -259281;1;0;false;false;;;;;; -259282;2;0;false;false;63;95;191;;; -259284;1;0;false;false;;;;;; -259285;3;0;false;false;63;95;191;;; -259288;1;0;false;false;;;;;; -259289;7;0;false;false;63;95;191;;; -259296;1;0;false;false;;;;;; -259297;3;0;false;false;63;95;191;;; -259300;3;0;false;false;;;;;; -259303;1;0;false;false;63;95;191;;; -259304;1;0;false;false;;;;;; -259305;6;0;false;false;63;95;191;;; -259311;1;0;false;false;;;;;; -259312;2;0;false;false;63;95;191;;; -259314;1;0;false;false;;;;;; -259315;8;0;false;false;63;95;191;;; -259323;1;0;false;false;;;;;; -259324;2;0;false;false;63;95;191;;; -259326;1;0;false;false;;;;;; -259327;4;0;false;false;63;95;191;;; -259331;1;0;false;false;;;;;; -259332;3;0;false;false;63;95;191;;; -259335;1;0;false;false;;;;;; -259336;5;0;false;false;63;95;191;;; -259341;1;0;false;false;;;;;; -259342;5;0;false;false;63;95;191;;; -259347;1;0;false;false;;;;;; -259348;8;0;false;false;63;95;191;;; -259356;1;0;false;false;;;;;; -259357;2;0;false;false;63;95;191;;; -259359;1;0;false;false;;;;;; -259360;2;0;false;false;63;95;191;;; -259362;1;0;false;false;;;;;; -259363;3;0;false;false;63;95;191;;; -259366;1;0;false;false;;;;;; -259367;4;0;false;false;63;95;191;;; -259371;3;0;false;false;;;;;; -259374;1;0;false;false;63;95;191;;; -259375;1;0;false;false;;;;;; -259376;3;0;false;false;63;95;191;;; -259379;1;0;false;false;;;;;; -259380;3;0;false;false;63;95;191;;; -259383;1;0;false;false;;;;;; -259384;5;0;false;false;63;95;191;;; -259389;1;0;false;false;;;;;; -259390;2;0;false;false;63;95;191;;; -259392;1;0;false;false;;;;;; -259393;8;0;false;false;63;95;191;;; -259401;1;0;false;false;;;;;; -259402;2;0;false;false;63;95;191;;; -259404;1;0;false;false;;;;;; -259405;3;0;false;false;63;95;191;;; -259408;1;0;false;false;;;;;; -259409;13;0;false;false;63;95;191;;; -259422;1;0;false;false;;;;;; -259423;3;0;false;false;63;95;191;;; -259426;1;0;false;false;;;;;; -259427;5;0;false;false;63;95;191;;; -259432;3;0;false;false;;;;;; -259435;1;0;false;false;63;95;191;;; -259436;1;0;false;false;;;;;; -259437;5;0;false;false;63;95;191;;; -259442;1;0;false;false;;;;;; -259443;3;0;false;false;63;95;191;;; -259446;1;0;false;false;;;;;; -259447;3;0;false;false;63;95;191;;; -259450;1;0;false;false;;;;;; -259451;5;0;false;false;63;95;191;;; -259456;1;0;false;false;;;;;; -259457;2;0;false;false;63;95;191;;; -259459;1;0;false;false;;;;;; -259460;5;0;false;false;63;95;191;;; -259465;1;0;false;false;;;;;; -259466;2;0;false;false;63;95;191;;; -259468;1;0;false;false;;;;;; -259469;1;0;false;false;63;95;191;;; -259470;1;0;false;false;;;;;; -259471;4;0;false;false;63;95;191;;; -259475;1;0;false;false;;;;;; -259476;3;0;false;false;63;95;191;;; -259479;1;0;false;false;;;;;; -259480;4;0;false;false;63;95;191;;; -259484;1;0;false;false;;;;;; -259485;2;0;false;false;63;95;191;;; -259487;1;0;false;false;;;;;; -259488;3;0;false;false;63;95;191;;; -259491;1;0;false;false;;;;;; -259492;2;0;false;false;63;95;191;;; -259494;1;0;false;false;;;;;; -259495;3;0;false;false;63;95;191;;; -259498;1;0;false;false;;;;;; -259499;7;0;false;false;63;95;191;;; -259506;3;0;false;false;;;;;; -259509;1;0;false;false;63;95;191;;; -259510;1;0;false;false;;;;;; -259511;4;0;false;false;127;127;159;;; -259515;3;0;false;false;;;;;; -259518;1;0;false;false;63;95;191;;; -259519;3;0;false;false;;;;;; -259522;1;0;false;false;63;95;191;;; -259523;1;0;false;false;;;;;; -259524;7;1;false;false;127;159;191;;; -259531;5;0;false;false;63;95;191;;; -259536;1;0;false;false;;;;;; -259537;3;0;false;false;63;95;191;;; -259540;1;0;false;false;;;;;; -259541;3;0;false;false;63;95;191;;; -259544;1;0;false;false;;;;;; -259545;5;0;false;false;63;95;191;;; -259550;1;0;false;false;;;;;; -259551;7;0;false;false;63;95;191;;; -259558;1;0;false;false;;;;;; -259559;4;0;false;false;63;95;191;;; -259563;1;0;false;false;;;;;; -259564;2;0;false;false;63;95;191;;; -259566;1;0;false;false;;;;;; -259567;7;0;false;false;63;95;191;;; -259574;1;0;false;false;;;;;; -259575;1;0;false;false;63;95;191;;; -259576;1;0;false;false;;;;;; -259577;3;0;false;false;63;95;191;;; -259580;4;0;false;false;;;;;; -259584;1;0;false;false;63;95;191;;; -259585;2;0;false;false;;;;;; -259587;15;0;false;false;63;95;191;;; -259602;1;0;false;false;;;;;; -259603;1;0;false;false;127;127;159;;; -259604;1;0;false;false;;;;;; -259605;7;0;false;false;63;95;191;;; -259612;1;0;false;false;;;;;; -259613;5;0;false;false;63;95;191;;; -259618;1;0;false;false;;;;;; -259619;3;0;false;false;63;95;191;;; -259622;1;0;false;false;;;;;; -259623;5;0;false;false;63;95;191;;; -259628;1;0;false;false;;;;;; -259629;1;0;false;false;63;95;191;;; -259630;1;0;false;false;;;;;; -259631;17;0;false;false;63;95;191;;; -259648;1;0;false;false;;;;;; -259649;2;0;false;false;63;95;191;;; -259651;1;0;false;false;;;;;; -259652;3;0;false;false;63;95;191;;; -259655;3;0;false;false;;;;;; -259658;1;0;false;false;63;95;191;;; -259659;2;0;false;false;;;;;; -259661;2;0;false;false;63;95;191;;; -259663;1;0;false;false;;;;;; -259664;5;0;false;false;63;95;191;;; -259669;1;0;false;false;;;;;; -259670;6;0;false;false;63;95;191;;; -259676;1;0;false;false;;;;;; -259677;4;0;false;false;63;95;191;;; -259681;1;0;false;false;;;;;; -259682;2;0;false;false;63;95;191;;; -259684;1;0;false;false;;;;;; -259685;8;0;false;false;63;95;191;;; -259693;1;0;false;false;;;;;; -259694;12;0;false;false;63;95;191;;; -259706;3;0;false;false;;;;;; -259709;1;0;false;false;63;95;191;;; -259710;1;0;false;false;;;;;; -259711;11;1;false;false;127;159;191;;; -259722;12;0;false;false;63;95;191;;; -259734;1;0;false;false;;;;;; -259735;4;0;false;false;127;127;159;;; -259739;3;0;false;false;;;;;; -259742;1;0;false;false;63;95;191;;; -259743;4;0;false;false;;;;;; -259747;4;0;false;false;127;127;159;;; -259751;21;0;false;false;63;95;191;;; -259772;1;0;false;false;;;;;; -259773;1;0;false;false;127;127;159;;; -259774;1;0;false;false;;;;;; -259775;2;0;false;false;63;95;191;;; -259777;1;0;false;false;;;;;; -259778;3;0;false;false;63;95;191;;; -259781;1;0;false;false;;;;;; -259782;8;0;false;false;63;95;191;;; -259790;1;0;false;false;;;;;; -259791;3;0;false;false;63;95;191;;; -259794;1;0;false;false;;;;;; -259795;4;0;false;false;63;95;191;;; -259799;1;0;false;false;;;;;; -259800;8;0;false;false;63;95;191;;; -259808;5;0;false;false;127;127;159;;; -259813;3;0;false;false;;;;;; -259816;1;0;false;false;63;95;191;;; -259817;4;0;false;false;;;;;; -259821;4;0;false;false;127;127;159;;; -259825;27;0;false;false;63;95;191;;; -259852;1;0;false;false;;;;;; -259853;1;0;false;false;127;127;159;;; -259854;1;0;false;false;;;;;; -259855;2;0;false;false;63;95;191;;; -259857;1;0;false;false;;;;;; -259858;3;0;false;false;63;95;191;;; -259861;1;0;false;false;;;;;; -259862;6;0;false;false;63;95;191;;; -259868;1;0;false;false;;;;;; -259869;4;0;false;false;63;95;191;;; -259873;1;0;false;false;;;;;; -259874;3;0;false;false;63;95;191;;; -259877;1;0;false;false;;;;;; -259878;6;0;false;false;63;95;191;;; -259884;1;0;false;false;;;;;; -259885;4;0;false;false;63;95;191;;; -259889;1;0;false;false;;;;;; -259890;7;0;false;false;63;95;191;;; -259897;1;0;false;false;;;;;; -259898;3;0;false;false;63;95;191;;; -259901;1;0;false;false;;;;;; -259902;8;0;false;false;63;95;191;;; -259910;5;0;false;false;127;127;159;;; -259915;3;0;false;false;;;;;; -259918;1;0;false;false;63;95;191;;; -259919;1;0;false;false;;;;;; -259920;5;0;false;false;127;127;159;;; -259925;3;0;false;false;;;;;; -259928;1;0;false;false;63;95;191;;; -259929;1;0;false;false;;;;;; -259930;7;1;false;false;127;159;191;;; -259937;3;0;false;false;63;95;191;;; -259940;3;0;false;false;;;;;; -259943;2;0;false;false;63;95;191;;; -259945;2;0;false;false;;;;;; -259947;6;1;false;false;127;0;85;;; -259953;1;0;false;false;;;;;; -259954;4;1;false;false;127;0;85;;; -259958;1;0;false;false;;;;;; -259959;12;0;false;false;0;0;0;;; -259971;3;1;false;false;127;0;85;;; -259974;1;0;false;false;;;;;; -259975;6;0;false;false;0;0;0;;; -259981;1;0;false;false;;;;;; -259982;1;0;false;false;0;0;0;;; -259983;3;0;false;false;;;;;; -259986;14;0;false;false;0;0;0;;; -260000;3;0;false;false;;;;;; -260003;3;1;false;false;127;0;85;;; -260006;1;0;false;false;;;;;; -260007;9;0;false;false;0;0;0;;; -260016;1;0;false;false;;;;;; -260017;24;0;false;false;0;0;0;;; -260041;3;0;false;false;;;;;; -260044;3;1;false;false;127;0;85;;; -260047;1;0;false;false;;;;;; -260048;6;0;false;false;0;0;0;;; -260054;1;0;false;false;;;;;; -260055;1;0;false;false;0;0;0;;; -260056;1;0;false;false;;;;;; -260057;23;0;false;false;0;0;0;;; -260080;3;0;false;false;;;;;; -260083;3;1;false;false;127;0;85;;; -260086;1;0;false;false;;;;;; -260087;11;0;false;false;0;0;0;;; -260098;1;0;false;false;;;;;; -260099;1;0;false;false;0;0;0;;; -260100;1;0;false;false;;;;;; -260101;11;0;false;false;0;0;0;;; -260112;1;0;false;false;;;;;; -260113;9;0;false;false;0;0;0;;; -260122;1;0;false;false;;;;;; -260123;1;0;false;false;0;0;0;;; -260124;1;0;false;false;;;;;; -260125;22;0;false;false;0;0;0;;; -260147;1;0;false;false;;;;;; -260148;1;0;false;false;0;0;0;;; -260149;1;0;false;false;;;;;; -260150;8;0;false;false;0;0;0;;; -260158;6;0;false;false;;;;;; -260164;2;1;false;false;127;0;85;;; -260166;1;0;false;false;;;;;; -260167;15;0;false;false;0;0;0;;; -260182;1;0;false;false;;;;;; -260183;2;0;false;false;0;0;0;;; -260185;1;0;false;false;;;;;; -260186;2;0;false;false;0;0;0;;; -260188;1;0;false;false;;;;;; -260189;1;0;false;false;0;0;0;;; -260190;4;0;false;false;;;;;; -260194;6;1;false;false;127;0;85;;; -260200;1;0;false;false;0;0;0;;; -260201;3;0;false;false;;;;;; -260204;1;0;false;false;0;0;0;;; -260205;4;0;false;false;;;;;; -260209;2;1;false;false;127;0;85;;; -260211;1;0;false;false;;;;;; -260212;6;0;false;false;0;0;0;;; -260218;1;0;false;false;;;;;; -260219;1;0;false;false;0;0;0;;; -260220;1;0;false;false;;;;;; -260221;2;0;false;false;0;0;0;;; -260223;1;0;false;false;;;;;; -260224;1;0;false;false;0;0;0;;; -260225;4;0;false;false;;;;;; -260229;5;0;false;false;0;0;0;;; -260234;1;0;false;false;;;;;; -260235;1;0;false;false;0;0;0;;; -260236;1;0;false;false;;;;;; -260237;2;0;false;false;0;0;0;;; -260239;3;0;false;false;;;;;; -260242;1;0;false;false;0;0;0;;; -260243;3;0;false;false;;;;;; -260246;4;1;false;false;127;0;85;;; -260250;4;0;false;false;;;;;; -260254;2;1;false;false;127;0;85;;; -260256;1;0;false;false;;;;;; -260257;6;0;false;false;0;0;0;;; -260263;1;0;false;false;;;;;; -260264;1;0;false;false;0;0;0;;; -260265;1;0;false;false;;;;;; -260266;12;0;false;false;0;0;0;;; -260278;1;0;false;false;;;;;; -260279;1;0;false;false;0;0;0;;; -260280;4;0;false;false;;;;;; -260284;5;0;false;false;0;0;0;;; -260289;1;0;false;false;;;;;; -260290;1;0;false;false;0;0;0;;; -260291;1;0;false;false;;;;;; -260292;12;0;false;false;0;0;0;;; -260304;3;0;false;false;;;;;; -260307;1;0;false;false;0;0;0;;; -260308;3;0;false;false;;;;;; -260311;30;0;false;false;0;0;0;;; -260341;1;0;false;false;;;;;; -260342;4;1;false;false;127;0;85;;; -260346;2;0;false;false;0;0;0;;; -260348;2;0;false;false;;;;;; -260350;1;0;false;false;0;0;0;;; -260351;2;0;false;false;;;;;; -260353;3;0;false;false;63;95;191;;; -260356;3;0;false;false;;;;;; -260359;1;0;false;false;63;95;191;;; -260360;1;0;false;false;;;;;; -260361;7;0;false;false;63;95;191;;; -260368;1;0;false;false;;;;;; -260369;3;0;false;false;63;95;191;;; -260372;1;0;false;false;;;;;; -260373;6;0;false;false;63;95;191;;; -260379;1;0;false;false;;;;;; -260380;11;0;false;false;63;95;191;;; -260391;3;0;false;false;;;;;; -260394;1;0;false;false;63;95;191;;; -260395;1;0;false;false;;;;;; -260396;3;0;false;false;127;127;159;;; -260399;3;0;false;false;;;;;; -260402;1;0;false;false;63;95;191;;; -260403;3;0;false;false;;;;;; -260406;1;0;false;false;63;95;191;;; -260407;1;0;false;false;;;;;; -260408;7;1;false;false;127;159;191;;; -260415;11;0;false;false;63;95;191;;; -260426;1;0;false;false;;;;;; -260427;3;0;false;false;63;95;191;;; -260430;1;0;false;false;;;;;; -260431;3;0;false;false;63;95;191;;; -260434;1;0;false;false;;;;;; -260435;8;0;false;false;63;95;191;;; -260443;1;0;false;false;;;;;; -260444;6;0;false;false;63;95;191;;; -260450;1;0;false;false;;;;;; -260451;6;0;false;false;63;95;191;;; -260457;3;0;false;false;;;;;; -260460;1;0;false;false;63;95;191;;; -260461;1;0;false;false;;;;;; -260462;7;1;false;false;127;159;191;;; -260469;15;0;false;false;63;95;191;;; -260484;4;0;false;false;;;;;; -260488;1;0;false;false;63;95;191;;; -260489;2;0;false;false;;;;;; -260491;5;0;false;false;63;95;191;;; -260496;1;0;false;false;;;;;; -260497;3;0;false;false;63;95;191;;; -260500;1;0;false;false;;;;;; -260501;6;0;false;false;63;95;191;;; -260507;1;0;false;false;;;;;; -260508;5;0;false;false;63;95;191;;; -260513;1;0;false;false;;;;;; -260514;4;0;false;false;63;95;191;;; -260518;1;0;false;false;;;;;; -260519;2;0;false;false;63;95;191;;; -260521;1;0;false;false;;;;;; -260522;5;0;false;false;63;95;191;;; -260527;1;0;false;false;;;;;; -260528;2;0;false;false;63;95;191;;; -260530;1;0;false;false;;;;;; -260531;7;0;false;false;63;95;191;;; -260538;1;0;false;false;;;;;; -260539;3;0;false;false;63;95;191;;; -260542;1;0;false;false;;;;;; -260543;3;0;false;false;63;95;191;;; -260546;1;0;false;false;;;;;; -260547;6;0;false;false;63;95;191;;; -260553;1;0;false;false;;;;;; -260554;7;0;false;false;63;95;191;;; -260561;3;0;false;false;;;;;; -260564;1;0;false;false;63;95;191;;; -260565;2;0;false;false;;;;;; -260567;5;0;false;false;63;95;191;;; -260572;1;0;false;false;;;;;; -260573;1;0;false;false;63;95;191;;; -260574;1;0;false;false;;;;;; -260575;3;0;false;false;63;95;191;;; -260578;1;0;false;false;;;;;; -260579;6;0;false;false;63;95;191;;; -260585;1;0;false;false;;;;;; -260586;5;0;false;false;63;95;191;;; -260591;1;0;false;false;;;;;; -260592;4;0;false;false;63;95;191;;; -260596;1;0;false;false;;;;;; -260597;3;0;false;false;63;95;191;;; -260600;1;0;false;false;;;;;; -260601;2;0;false;false;63;95;191;;; -260603;1;0;false;false;;;;;; -260604;5;0;false;false;63;95;191;;; -260609;3;0;false;false;;;;;; -260612;1;0;false;false;63;95;191;;; -260613;1;0;false;false;;;;;; -260614;8;1;false;false;127;159;191;;; -260622;3;0;false;false;;;;;; -260625;1;0;false;false;63;95;191;;; -260626;1;0;false;false;;;;;; -260627;8;0;false;false;63;95;191;;; -260635;1;0;false;false;;;;;; -260636;6;0;false;false;63;95;191;;; -260642;1;0;false;false;;;;;; -260643;3;0;false;false;63;95;191;;; -260646;1;0;false;false;;;;;; -260647;8;0;false;false;63;95;191;;; -260655;4;0;false;false;;;;;; -260659;1;0;false;false;63;95;191;;; -260660;1;0;false;false;;;;;; -260661;9;0;false;false;63;95;191;;; -260670;1;0;false;false;;;;;; -260671;6;0;false;false;63;95;191;;; -260677;1;0;false;false;;;;;; -260678;3;0;false;false;63;95;191;;; -260681;1;0;false;false;;;;;; -260682;3;0;false;false;63;95;191;;; -260685;1;0;false;false;;;;;; -260686;9;0;false;false;63;95;191;;; -260695;1;0;false;false;;;;;; -260696;3;0;false;false;63;95;191;;; -260699;1;0;false;false;;;;;; -260700;5;0;false;false;63;95;191;;; -260705;1;0;false;false;;;;;; -260706;6;0;false;false;63;95;191;;; -260712;1;0;false;false;;;;;; -260713;2;0;false;false;63;95;191;;; -260715;1;0;false;false;;;;;; -260716;3;0;false;false;63;95;191;;; -260719;1;0;false;false;;;;;; -260720;6;0;false;false;63;95;191;;; -260726;3;0;false;false;;;;;; -260729;2;0;false;false;63;95;191;;; -260731;2;0;false;false;;;;;; -260733;7;1;false;false;127;0;85;;; -260740;1;0;false;false;;;;;; -260741;24;0;false;false;0;0;0;;; -260765;3;1;false;false;127;0;85;;; -260768;1;0;false;false;;;;;; -260769;12;0;false;false;0;0;0;;; -260781;1;0;false;false;;;;;; -260782;7;1;false;false;127;0;85;;; -260789;1;0;false;false;;;;;; -260790;16;0;false;false;0;0;0;;; -260806;1;0;false;false;;;;;; -260807;1;0;false;false;0;0;0;;; -260808;3;0;false;false;;;;;; -260811;9;0;false;false;0;0;0;;; -260820;1;0;false;false;;;;;; -260821;11;0;false;false;0;0;0;;; -260832;3;0;false;false;;;;;; -260835;9;0;false;false;0;0;0;;; -260844;1;0;false;false;;;;;; -260845;11;0;false;false;0;0;0;;; -260856;1;0;false;false;;;;;; -260857;1;0;false;false;0;0;0;;; -260858;1;0;false;false;;;;;; -260859;17;0;false;false;0;0;0;;; -260876;6;0;false;false;;;;;; -260882;2;1;false;false;127;0;85;;; -260884;1;0;false;false;;;;;; -260885;12;0;false;false;0;0;0;;; -260897;1;0;false;false;;;;;; -260898;2;0;false;false;0;0;0;;; -260900;1;0;false;false;;;;;; -260901;21;0;false;false;0;0;0;;; -260922;1;0;false;false;;;;;; -260923;1;0;false;false;0;0;0;;; -260924;4;0;false;false;;;;;; -260928;6;1;false;false;127;0;85;;; -260934;1;0;false;false;;;;;; -260935;5;1;false;false;127;0;85;;; -260940;1;0;false;false;0;0;0;;; -260941;3;0;false;false;;;;;; -260944;1;0;false;false;0;0;0;;; -260945;3;0;false;false;;;;;; -260948;2;1;false;false;127;0;85;;; -260950;1;0;false;false;;;;;; -260951;12;0;false;false;0;0;0;;; -260963;1;0;false;false;;;;;; -260964;2;0;false;false;0;0;0;;; -260966;1;0;false;false;;;;;; -260967;4;1;false;false;127;0;85;;; -260971;1;0;false;false;;;;;; -260972;2;0;false;false;0;0;0;;; -260974;1;0;false;false;;;;;; -260975;16;0;false;false;0;0;0;;; -260991;1;0;false;false;;;;;; -260992;1;0;false;false;0;0;0;;; -260993;4;0;false;false;;;;;; -260997;38;0;false;false;0;0;0;;; -261035;3;0;false;false;;;;;; -261038;1;0;false;false;0;0;0;;; -261039;3;0;false;false;;;;;; -261042;10;0;false;false;0;0;0;;; -261052;1;0;false;false;;;;;; -261053;1;0;false;false;0;0;0;;; -261054;1;0;false;false;;;;;; -261055;16;0;false;false;0;0;0;;; -261071;3;0;false;false;;;;;; -261074;7;0;false;false;0;0;0;;; -261081;4;0;false;false;;;;;; -261085;2;0;false;false;0;0;0;;; -261087;1;0;false;false;;;;;; -261088;2;0;false;false;0;0;0;;; -261090;10;0;false;false;;;;;; -261100;21;0;false;false;63;127;95;;; -261121;2;0;false;false;;;;;; -261123;2;0;false;false;0;0;0;;; -261125;1;0;false;false;;;;;; -261126;11;0;false;false;0;0;0;;; -261137;1;0;false;false;;;;;; -261138;1;0;false;false;0;0;0;;; -261139;1;0;false;false;;;;;; -261140;21;0;false;false;0;0;0;;; -261161;1;0;false;false;;;;;; -261162;16;0;false;false;63;127;95;;; -261178;2;0;false;false;;;;;; -261180;17;0;false;false;0;0;0;;; -261197;1;0;false;false;;;;;; -261198;18;0;false;false;0;0;0;;; -261216;1;0;false;false;;;;;; -261217;4;1;false;false;127;0;85;;; -261221;2;0;false;false;0;0;0;;; -261223;5;0;false;false;;;;;; -261228;20;0;false;false;0;0;0;;; -261248;1;0;false;false;;;;;; -261249;1;0;false;false;0;0;0;;; -261250;1;0;false;false;;;;;; -261251;12;0;false;false;0;0;0;;; -261263;3;0;false;false;;;;;; -261266;20;0;false;false;0;0;0;;; -261286;3;0;false;false;;;;;; -261289;3;1;false;false;127;0;85;;; -261292;1;0;false;false;;;;;; -261293;10;0;false;false;0;0;0;;; -261303;1;0;false;false;;;;;; -261304;1;0;false;false;0;0;0;;; -261305;1;0;false;false;;;;;; -261306;8;0;false;false;0;0;0;;; -261314;3;0;false;false;;;;;; -261317;19;0;false;false;0;0;0;;; -261336;3;0;false;false;;;;;; -261339;48;0;false;false;63;127;95;;; -261387;1;0;false;false;;;;;; -261388;7;0;false;false;0;0;0;;; -261395;1;0;false;false;;;;;; -261396;1;0;false;false;0;0;0;;; -261397;1;0;false;false;;;;;; -261398;11;0;false;false;0;0;0;;; -261409;3;0;false;false;;;;;; -261412;6;1;false;false;127;0;85;;; -261418;1;0;false;false;;;;;; -261419;4;1;false;false;127;0;85;;; -261423;1;0;false;false;0;0;0;;; -261424;2;0;false;false;;;;;; -261426;1;0;false;false;0;0;0;;; -261427;2;0;false;false;;;;;; -261429;3;0;false;false;63;95;191;;; -261432;3;0;false;false;;;;;; -261435;1;0;false;false;63;95;191;;; -261436;1;0;false;false;;;;;; -261437;7;0;false;false;63;95;191;;; -261444;1;0;false;false;;;;;; -261445;3;0;false;false;63;95;191;;; -261448;1;0;false;false;;;;;; -261449;9;0;false;false;63;95;191;;; -261458;1;0;false;false;;;;;; -261459;8;0;false;false;63;95;191;;; -261467;1;0;false;false;;;;;; -261468;4;0;false;false;63;95;191;;; -261472;1;0;false;false;;;;;; -261473;5;0;false;false;63;95;191;;; -261478;3;0;false;false;;;;;; -261481;1;0;false;false;63;95;191;;; -261482;1;0;false;false;;;;;; -261483;3;0;false;false;127;127;159;;; -261486;3;0;false;false;;;;;; -261489;1;0;false;false;63;95;191;;; -261490;4;0;false;false;;;;;; -261494;1;0;false;false;63;95;191;;; -261495;1;0;false;false;;;;;; -261496;7;1;false;false;127;159;191;;; -261503;1;0;false;false;63;95;191;;; -261504;1;0;false;false;;;;;; -261505;3;0;false;false;63;95;191;;; -261508;1;0;false;false;;;;;; -261509;1;0;false;false;63;95;191;;; -261510;1;0;false;false;;;;;; -261511;10;0;false;false;63;95;191;;; -261521;1;0;false;false;;;;;; -261522;4;0;false;false;63;95;191;;; -261526;1;0;false;false;;;;;; -261527;6;0;false;false;63;95;191;;; -261533;1;0;false;false;;;;;; -261534;2;0;false;false;63;95;191;;; -261536;1;0;false;false;;;;;; -261537;4;0;false;false;63;95;191;;; -261541;1;0;false;false;;;;;; -261542;8;0;false;false;63;95;191;;; -261550;3;0;false;false;;;;;; -261553;1;0;false;false;63;95;191;;; -261554;1;0;false;false;;;;;; -261555;7;1;false;false;127;159;191;;; -261562;4;0;false;false;63;95;191;;; -261566;1;0;false;false;;;;;; -261567;3;0;false;false;63;95;191;;; -261570;1;0;false;false;;;;;; -261571;4;0;false;false;63;95;191;;; -261575;1;0;false;false;;;;;; -261576;4;0;false;false;63;95;191;;; -261580;1;0;false;false;;;;;; -261581;6;0;false;false;63;95;191;;; -261587;1;0;false;false;;;;;; -261588;2;0;false;false;63;95;191;;; -261590;1;0;false;false;;;;;; -261591;4;0;false;false;63;95;191;;; -261595;1;0;false;false;;;;;; -261596;8;0;false;false;63;95;191;;; -261604;1;0;false;false;;;;;; -261605;8;0;false;false;63;95;191;;; -261613;1;0;false;false;;;;;; -261614;2;0;false;false;63;95;191;;; -261616;1;0;false;false;;;;;; -261617;3;0;false;false;63;95;191;;; -261620;3;0;false;false;;;;;; -261623;1;0;false;false;63;95;191;;; -261624;1;0;false;false;;;;;; -261625;5;0;false;false;63;95;191;;; -261630;1;0;false;false;;;;;; -261631;4;0;false;false;63;95;191;;; -261635;1;0;false;false;;;;;; -261636;2;0;false;false;63;95;191;;; -261638;1;0;false;false;;;;;; -261639;3;0;false;false;63;95;191;;; -261642;1;0;false;false;;;;;; -261643;9;0;false;false;63;95;191;;; -261652;3;0;false;false;;;;;; -261655;1;0;false;false;63;95;191;;; -261656;1;0;false;false;;;;;; -261657;8;1;false;false;127;159;191;;; -261665;3;0;false;false;;;;;; -261668;1;0;false;false;63;95;191;;; -261669;1;0;false;false;;;;;; -261670;8;0;false;false;63;95;191;;; -261678;1;0;false;false;;;;;; -261679;6;0;false;false;63;95;191;;; -261685;1;0;false;false;;;;;; -261686;3;0;false;false;63;95;191;;; -261689;1;0;false;false;;;;;; -261690;8;0;false;false;63;95;191;;; -261698;1;0;false;false;;;;;; -261699;2;0;false;false;63;95;191;;; -261701;1;0;false;false;;;;;; -261702;4;0;false;false;63;95;191;;; -261706;1;0;false;false;;;;;; -261707;3;0;false;false;63;95;191;;; -261710;1;0;false;false;;;;;; -261711;9;0;false;false;63;95;191;;; -261720;1;0;false;false;;;;;; -261721;8;0;false;false;63;95;191;;; -261729;1;0;false;false;;;;;; -261730;8;0;false;false;63;95;191;;; -261738;4;0;false;false;;;;;; -261742;1;0;false;false;63;95;191;;; -261743;1;0;false;false;;;;;; -261744;9;0;false;false;63;95;191;;; -261753;1;0;false;false;;;;;; -261754;9;0;false;false;63;95;191;;; -261763;1;0;false;false;;;;;; -261764;8;0;false;false;63;95;191;;; -261772;1;0;false;false;;;;;; -261773;2;0;false;false;63;95;191;;; -261775;1;0;false;false;;;;;; -261776;7;0;false;false;63;95;191;;; -261783;1;0;false;false;;;;;; -261784;8;0;false;false;63;95;191;;; -261792;1;0;false;false;;;;;; -261793;3;0;false;false;63;95;191;;; -261796;1;0;false;false;;;;;; -261797;6;0;false;false;63;95;191;;; -261803;1;0;false;false;;;;;; -261804;3;0;false;false;63;95;191;;; -261807;4;0;false;false;;;;;; -261811;1;0;false;false;63;95;191;;; -261812;1;0;false;false;;;;;; -261813;3;0;false;false;63;95;191;;; -261816;1;0;false;false;;;;;; -261817;9;0;false;false;63;95;191;;; -261826;5;0;false;false;;;;;; -261831;2;0;false;false;63;95;191;;; -261833;2;0;false;false;;;;;; -261835;7;1;false;false;127;0;85;;; -261842;1;0;false;false;;;;;; -261843;13;0;false;false;0;0;0;;; -261856;3;1;false;false;127;0;85;;; -261859;1;0;false;false;;;;;; -261860;2;0;false;false;0;0;0;;; -261862;1;0;false;false;;;;;; -261863;3;1;false;false;127;0;85;;; -261866;1;0;false;false;;;;;; -261867;5;0;false;false;0;0;0;;; -261872;1;0;false;false;;;;;; -261873;1;0;false;false;0;0;0;;; -261874;3;0;false;false;;;;;; -261877;3;1;false;false;127;0;85;;; -261880;1;0;false;false;;;;;; -261881;15;0;false;false;0;0;0;;; -261896;1;0;false;false;;;;;; -261897;1;0;false;false;0;0;0;;; -261898;1;0;false;false;;;;;; -261899;21;0;false;false;0;0;0;;; -261920;1;0;false;false;;;;;; -261921;1;0;false;false;0;0;0;;; -261922;1;0;false;false;;;;;; -261923;11;0;false;false;0;0;0;;; -261934;3;0;false;false;;;;;; -261937;3;1;false;false;127;0;85;;; -261940;1;0;false;false;;;;;; -261941;17;0;false;false;0;0;0;;; -261958;1;0;false;false;;;;;; -261959;1;0;false;false;0;0;0;;; -261960;1;0;false;false;;;;;; -261961;23;0;false;false;0;0;0;;; -261984;3;0;false;false;;;;;; -261987;3;1;false;false;127;0;85;;; -261990;1;0;false;false;;;;;; -261991;19;0;false;false;0;0;0;;; -262010;1;0;false;false;;;;;; -262011;1;0;false;false;0;0;0;;; -262012;1;0;false;false;;;;;; -262013;15;0;false;false;0;0;0;;; -262028;1;0;false;false;;;;;; -262029;1;0;false;false;0;0;0;;; -262030;1;0;false;false;;;;;; -262031;2;0;false;false;0;0;0;;; -262033;3;0;false;false;;;;;; -262036;7;1;false;false;127;0;85;;; -262043;1;0;false;false;;;;;; -262044;8;0;false;false;0;0;0;;; -262052;1;0;false;false;;;;;; -262053;1;0;false;false;0;0;0;;; -262054;1;0;false;false;;;;;; -262055;5;1;false;false;127;0;85;;; -262060;1;0;false;false;0;0;0;;; -262061;8;0;false;false;;;;;; -262069;2;1;false;false;127;0;85;;; -262071;1;0;false;false;;;;;; -262072;2;0;false;false;0;0;0;;; -262074;1;0;false;false;;;;;; -262075;1;0;false;false;0;0;0;;; -262076;1;0;false;false;;;;;; -262077;11;0;false;false;0;0;0;;; -262088;1;0;false;false;;;;;; -262089;1;0;false;false;0;0;0;;; -262090;4;0;false;false;;;;;; -262094;38;0;false;false;63;127;95;;; -262132;2;0;false;false;;;;;; -262134;1;0;false;false;0;0;0;;; -262135;1;0;false;false;;;;;; -262136;1;0;false;false;0;0;0;;; -262137;1;0;false;false;;;;;; -262138;31;0;false;false;0;0;0;;; -262169;1;0;false;false;;;;;; -262170;1;0;false;false;0;0;0;;; -262171;1;0;false;false;;;;;; -262172;3;0;false;false;0;0;0;;; -262175;1;0;false;false;;;;;; -262176;1;0;false;false;0;0;0;;; -262177;1;0;false;false;;;;;; -262178;1;0;false;false;0;0;0;;; -262179;1;0;false;false;;;;;; -262180;21;0;false;false;0;0;0;;; -262201;5;0;false;false;;;;;; -262206;8;0;false;false;0;0;0;;; -262214;1;0;false;false;;;;;; -262215;1;0;false;false;0;0;0;;; -262216;1;0;false;false;;;;;; -262217;23;0;false;false;0;0;0;;; -262240;3;0;false;false;;;;;; -262243;1;0;false;false;0;0;0;;; -262244;3;0;false;false;;;;;; -262247;4;1;false;false;127;0;85;;; -262251;4;0;false;false;;;;;; -262255;2;1;false;false;127;0;85;;; -262257;1;0;false;false;;;;;; -262258;2;0;false;false;0;0;0;;; -262260;1;0;false;false;;;;;; -262261;2;0;false;false;0;0;0;;; -262263;1;0;false;false;;;;;; -262264;16;0;false;false;0;0;0;;; -262280;1;0;false;false;;;;;; -262281;1;0;false;false;0;0;0;;; -262282;4;0;false;false;;;;;; -262286;38;0;false;false;63;127;95;;; -262324;2;0;false;false;;;;;; -262326;1;0;false;false;0;0;0;;; -262327;1;0;false;false;;;;;; -262328;1;0;false;false;0;0;0;;; -262329;1;0;false;false;;;;;; -262330;29;0;false;false;0;0;0;;; -262359;1;0;false;false;;;;;; -262360;1;0;false;false;0;0;0;;; -262361;1;0;false;false;;;;;; -262362;23;0;false;false;0;0;0;;; -262385;1;0;false;false;;;;;; -262386;1;0;false;false;0;0;0;;; -262387;1;0;false;false;;;;;; -262388;1;0;false;false;0;0;0;;; -262389;1;0;false;false;;;;;; -262390;21;0;false;false;0;0;0;;; -262411;4;0;false;false;;;;;; -262415;8;0;false;false;0;0;0;;; -262423;1;0;false;false;;;;;; -262424;1;0;false;false;0;0;0;;; -262425;1;0;false;false;;;;;; -262426;21;0;false;false;0;0;0;;; -262447;1;0;false;false;;;;;; -262448;1;0;false;false;0;0;0;;; -262449;1;0;false;false;;;;;; -262450;17;0;false;false;0;0;0;;; -262467;3;0;false;false;;;;;; -262470;1;0;false;false;0;0;0;;; -262471;3;0;false;false;;;;;; -262474;2;1;false;false;127;0;85;;; -262476;1;0;false;false;;;;;; -262477;5;0;false;false;0;0;0;;; -262482;1;0;false;false;;;;;; -262483;1;0;false;false;0;0;0;;; -262484;1;0;false;false;;;;;; -262485;9;0;false;false;0;0;0;;; -262494;1;0;false;false;;;;;; -262495;1;0;false;false;0;0;0;;; -262496;4;0;false;false;;;;;; -262500;8;0;false;false;0;0;0;;; -262508;1;0;false;false;;;;;; -262509;1;0;false;false;0;0;0;;; -262510;1;0;false;false;;;;;; -262511;28;0;false;false;0;0;0;;; -262539;1;0;false;false;;;;;; -262540;1;0;false;false;0;0;0;;; -262541;1;0;false;false;;;;;; -262542;18;0;false;false;0;0;0;;; -262560;1;0;false;false;;;;;; -262561;4;1;false;false;127;0;85;;; -262565;2;0;false;false;0;0;0;;; -262567;3;0;false;false;;;;;; -262570;1;0;false;false;0;0;0;;; -262571;3;0;false;false;;;;;; -262574;4;1;false;false;127;0;85;;; -262578;3;0;false;false;;;;;; -262581;2;1;false;false;127;0;85;;; -262583;1;0;false;false;;;;;; -262584;5;0;false;false;0;0;0;;; -262589;1;0;false;false;;;;;; -262590;1;0;false;false;0;0;0;;; -262591;1;0;false;false;;;;;; -262592;17;0;false;false;0;0;0;;; -262609;1;0;false;false;;;;;; -262610;1;0;false;false;0;0;0;;; -262611;4;0;false;false;;;;;; -262615;8;0;false;false;0;0;0;;; -262623;1;0;false;false;;;;;; -262624;1;0;false;false;0;0;0;;; -262625;1;0;false;false;;;;;; -262626;29;0;false;false;0;0;0;;; -262655;1;0;false;false;;;;;; -262656;1;0;false;false;0;0;0;;; -262657;1;0;false;false;;;;;; -262658;2;0;false;false;0;0;0;;; -262660;1;0;false;false;;;;;; -262661;1;0;false;false;0;0;0;;; -262662;1;0;false;false;;;;;; -262663;17;0;false;false;0;0;0;;; -262680;1;0;false;false;;;;;; -262681;1;0;false;false;0;0;0;;; -262682;1;0;false;false;;;;;; -262683;23;0;false;false;0;0;0;;; -262706;1;0;false;false;;;;;; -262707;4;1;false;false;127;0;85;;; -262711;2;0;false;false;0;0;0;;; -262713;3;0;false;false;;;;;; -262716;1;0;false;false;0;0;0;;; -262717;3;0;false;false;;;;;; -262720;6;1;false;false;127;0;85;;; -262726;1;0;false;false;;;;;; -262727;9;0;false;false;0;0;0;;; -262736;2;0;false;false;;;;;; -262738;1;0;false;false;0;0;0;;; -262739;2;0;false;false;;;;;; -262741;3;0;false;false;63;95;191;;; -262744;3;0;false;false;;;;;; -262747;1;0;false;false;63;95;191;;; -262748;1;0;false;false;;;;;; -262749;4;0;false;false;63;95;191;;; -262753;1;0;false;false;;;;;; -262754;3;0;false;false;63;95;191;;; -262757;1;0;false;false;;;;;; -262758;5;0;false;false;63;95;191;;; -262763;1;0;false;false;;;;;; -262764;8;0;false;false;63;95;191;;; -262772;1;0;false;false;;;;;; -262773;3;0;false;false;63;95;191;;; -262776;1;0;false;false;;;;;; -262777;7;0;false;false;63;95;191;;; -262784;1;0;false;false;;;;;; -262785;3;0;false;false;63;95;191;;; -262788;1;0;false;false;;;;;; -262789;5;0;false;false;63;95;191;;; -262794;1;0;false;false;;;;;; -262795;6;0;false;false;63;95;191;;; -262801;1;0;false;false;;;;;; -262802;4;0;false;false;63;95;191;;; -262806;1;0;false;false;;;;;; -262807;5;0;false;false;63;95;191;;; -262812;3;0;false;false;;;;;; -262815;2;0;false;false;63;95;191;;; -262817;2;0;false;false;;;;;; -262819;4;1;false;false;127;0;85;;; -262823;1;0;false;false;;;;;; -262824;11;0;false;false;0;0;0;;; -262835;1;0;false;false;;;;;; -262836;1;0;false;false;0;0;0;;; -262837;3;0;false;false;;;;;; -262840;3;1;false;false;127;0;85;;; -262843;1;0;false;false;;;;;; -262844;9;0;false;false;0;0;0;;; -262853;1;0;false;false;;;;;; -262854;1;0;false;false;0;0;0;;; -262855;1;0;false;false;;;;;; -262856;37;0;false;false;0;0;0;;; -262893;6;0;false;false;;;;;; -262899;21;0;false;false;0;0;0;;; -262920;2;0;false;false;;;;;; -262922;1;0;false;false;0;0;0;;; -262923;2;0;false;false;;;;;; -262925;3;0;false;false;63;95;191;;; -262928;3;0;false;false;;;;;; -262931;1;0;false;false;63;95;191;;; -262932;1;0;false;false;;;;;; -262933;4;0;false;false;63;95;191;;; -262937;1;0;false;false;;;;;; -262938;3;0;false;false;63;95;191;;; -262941;1;0;false;false;;;;;; -262942;5;0;false;false;63;95;191;;; -262947;1;0;false;false;;;;;; -262948;8;0;false;false;63;95;191;;; -262956;1;0;false;false;;;;;; -262957;3;0;false;false;63;95;191;;; -262960;1;0;false;false;;;;;; -262961;7;0;false;false;63;95;191;;; -262968;1;0;false;false;;;;;; -262969;3;0;false;false;63;95;191;;; -262972;1;0;false;false;;;;;; -262973;5;0;false;false;63;95;191;;; -262978;1;0;false;false;;;;;; -262979;6;0;false;false;63;95;191;;; -262985;1;0;false;false;;;;;; -262986;4;0;false;false;63;95;191;;; -262990;1;0;false;false;;;;;; -262991;5;0;false;false;63;95;191;;; -262996;3;0;false;false;;;;;; -262999;2;0;false;false;63;95;191;;; -263001;2;0;false;false;;;;;; -263003;4;1;false;false;127;0;85;;; -263007;1;0;false;false;;;;;; -263008;10;0;false;false;0;0;0;;; -263018;3;1;false;false;127;0;85;;; -263021;1;0;false;false;;;;;; -263022;10;0;false;false;0;0;0;;; -263032;1;0;false;false;;;;;; -263033;1;0;false;false;0;0;0;;; -263034;3;0;false;false;;;;;; -263037;3;1;false;false;127;0;85;;; -263040;1;0;false;false;;;;;; -263041;10;0;false;false;0;0;0;;; -263051;1;0;false;false;;;;;; -263052;1;0;false;false;0;0;0;;; -263053;1;0;false;false;;;;;; -263054;35;0;false;false;0;0;0;;; -263089;3;0;false;false;;;;;; -263092;6;0;false;false;0;0;0;;; -263098;1;0;false;false;;;;;; -263099;4;0;false;false;0;0;0;;; -263103;1;0;false;false;;;;;; -263104;1;0;false;false;0;0;0;;; -263105;1;0;false;false;;;;;; -263106;27;0;false;false;0;0;0;;; -263133;3;0;false;false;;;;;; -263136;3;1;false;false;127;0;85;;; -263139;1;0;false;false;;;;;; -263140;12;0;false;false;0;0;0;;; -263152;1;0;false;false;;;;;; -263153;1;0;false;false;0;0;0;;; -263154;1;0;false;false;;;;;; -263155;11;0;false;false;0;0;0;;; -263166;1;0;false;false;;;;;; -263167;1;0;false;false;0;0;0;;; -263168;1;0;false;false;;;;;; -263169;11;0;false;false;0;0;0;;; -263180;3;0;false;false;;;;;; -263183;3;1;false;false;127;0;85;;; -263186;1;0;false;false;;;;;; -263187;9;0;false;false;0;0;0;;; -263196;1;0;false;false;;;;;; -263197;1;0;false;false;0;0;0;;; -263198;1;0;false;false;;;;;; -263199;18;0;false;false;0;0;0;;; -263217;1;0;false;false;;;;;; -263218;10;0;false;false;0;0;0;;; -263228;1;0;false;false;;;;;; -263229;14;0;false;false;0;0;0;;; -263243;4;0;false;false;;;;;; -263247;7;1;false;false;127;0;85;;; -263254;1;0;false;false;;;;;; -263255;8;0;false;false;0;0;0;;; -263263;1;0;false;false;;;;;; -263264;1;0;false;false;0;0;0;;; -263265;1;0;false;false;;;;;; -263266;23;0;false;false;0;0;0;;; -263289;1;0;false;false;;;;;; -263290;11;0;false;false;0;0;0;;; -263301;3;0;false;false;;;;;; -263304;7;1;false;false;127;0;85;;; -263311;1;0;false;false;;;;;; -263312;20;0;false;false;0;0;0;;; -263332;1;0;false;false;;;;;; -263333;1;0;false;false;0;0;0;;; -263334;1;0;false;false;;;;;; -263335;5;1;false;false;127;0;85;;; -263340;1;0;false;false;0;0;0;;; -263341;3;0;false;false;;;;;; -263344;5;0;false;false;0;0;0;;; -263349;1;0;false;false;;;;;; -263350;5;0;false;false;0;0;0;;; -263355;1;0;false;false;;;;;; -263356;1;0;false;false;0;0;0;;; -263357;1;0;false;false;;;;;; -263358;11;0;false;false;0;0;0;;; -263369;5;0;false;false;;;;;; -263374;2;1;false;false;127;0;85;;; -263376;1;0;false;false;;;;;; -263377;9;0;false;false;0;0;0;;; -263386;1;0;false;false;;;;;; -263387;2;0;false;false;0;0;0;;; -263389;1;0;false;false;;;;;; -263390;5;0;false;false;0;0;0;;; -263395;1;0;false;false;;;;;; -263396;2;0;false;false;0;0;0;;; -263398;1;0;false;false;;;;;; -263399;4;1;false;false;127;0;85;;; -263403;1;0;false;false;0;0;0;;; -263404;1;0;false;false;;;;;; -263405;1;0;false;false;0;0;0;;; -263406;4;0;false;false;;;;;; -263410;3;1;false;false;127;0;85;;; -263413;1;0;false;false;;;;;; -263414;6;0;false;false;0;0;0;;; -263420;1;0;false;false;;;;;; -263421;1;0;false;false;0;0;0;;; -263422;1;0;false;false;;;;;; -263423;22;0;false;false;0;0;0;;; -263445;4;0;false;false;;;;;; -263449;2;1;false;false;127;0;85;;; -263451;1;0;false;false;;;;;; -263452;8;0;false;false;0;0;0;;; -263460;1;0;false;false;;;;;; -263461;1;0;false;false;0;0;0;;; -263462;1;0;false;false;;;;;; -263463;21;0;false;false;0;0;0;;; -263484;1;0;false;false;;;;;; -263485;1;0;false;false;0;0;0;;; -263486;1;0;false;false;;;;;; -263487;22;0;false;false;0;0;0;;; -263509;1;0;false;false;;;;;; -263510;1;0;false;false;0;0;0;;; -263511;1;0;false;false;;;;;; -263512;1;0;false;false;0;0;0;;; -263513;1;0;false;false;;;;;; -263514;2;0;false;false;0;0;0;;; -263516;1;0;false;false;;;;;; -263517;10;0;false;false;0;0;0;;; -263527;1;0;false;false;;;;;; -263528;1;0;false;false;0;0;0;;; -263529;5;0;false;false;;;;;; -263534;20;0;false;false;0;0;0;;; -263554;1;0;false;false;;;;;; -263555;1;0;false;false;0;0;0;;; -263556;1;0;false;false;;;;;; -263557;4;1;false;false;127;0;85;;; -263561;1;0;false;false;0;0;0;;; -263562;4;0;false;false;;;;;; -263566;1;0;false;false;0;0;0;;; -263567;3;0;false;false;;;;;; -263570;1;0;false;false;0;0;0;;; -263571;3;0;false;false;;;;;; -263574;2;1;false;false;127;0;85;;; -263576;1;0;false;false;;;;;; -263577;10;0;false;false;0;0;0;;; -263587;1;0;false;false;;;;;; -263588;2;0;false;false;0;0;0;;; -263590;1;0;false;false;;;;;; -263591;21;0;false;false;0;0;0;;; -263612;1;0;false;false;;;;;; -263613;1;0;false;false;0;0;0;;; -263614;4;0;false;false;;;;;; -263618;71;0;false;false;63;127;95;;; -263689;2;0;false;false;;;;;; -263691;70;0;false;false;63;127;95;;; -263761;2;0;false;false;;;;;; -263763;72;0;false;false;63;127;95;;; -263835;2;0;false;false;;;;;; -263837;75;0;false;false;63;127;95;;; -263912;2;0;false;false;;;;;; -263914;27;0;false;false;0;0;0;;; -263941;1;0;false;false;;;;;; -263942;10;0;false;false;0;0;0;;; -263952;1;0;false;false;;;;;; -263953;21;0;false;false;0;0;0;;; -263974;3;0;false;false;;;;;; -263977;1;0;false;false;0;0;0;;; -263978;2;0;false;false;;;;;; -263980;1;0;false;false;0;0;0;;; -263981;2;0;false;false;;;;;; -263983;3;0;false;false;63;95;191;;; -263986;3;0;false;false;;;;;; -263989;1;0;false;false;63;95;191;;; -263990;1;0;false;false;;;;;; -263991;7;0;false;false;63;95;191;;; -263998;1;0;false;false;;;;;; -263999;3;0;false;false;63;95;191;;; -264002;1;0;false;false;;;;;; -264003;9;0;false;false;63;95;191;;; -264012;1;0;false;false;;;;;; -264013;6;0;false;false;63;95;191;;; -264019;1;0;false;false;;;;;; -264020;4;0;false;false;63;95;191;;; -264024;1;0;false;false;;;;;; -264025;5;0;false;false;63;95;191;;; -264030;3;0;false;false;;;;;; -264033;1;0;false;false;63;95;191;;; -264034;1;0;false;false;;;;;; -264035;3;0;false;false;127;127;159;;; -264038;3;0;false;false;;;;;; -264041;1;0;false;false;63;95;191;;; -264042;3;0;false;false;;;;;; -264045;1;0;false;false;63;95;191;;; -264046;1;0;false;false;;;;;; -264047;7;1;false;false;127;159;191;;; -264054;6;0;false;false;63;95;191;;; -264060;1;0;false;false;;;;;; -264061;6;0;false;false;63;95;191;;; -264067;1;0;false;false;;;;;; -264068;4;0;false;false;63;95;191;;; -264072;1;0;false;false;;;;;; -264073;6;0;false;false;63;95;191;;; -264079;1;0;false;false;;;;;; -264080;2;0;false;false;63;95;191;;; -264082;1;0;false;false;;;;;; -264083;7;0;false;false;63;95;191;;; -264090;1;0;false;false;;;;;; -264091;4;0;false;false;63;95;191;;; -264095;1;0;false;false;;;;;; -264096;4;0;false;false;63;95;191;;; -264100;3;0;false;false;;;;;; -264103;2;0;false;false;63;95;191;;; -264105;2;0;false;false;;;;;; -264107;4;1;false;false;127;0;85;;; -264111;1;0;false;false;;;;;; -264112;11;0;false;false;0;0;0;;; -264123;3;1;false;false;127;0;85;;; -264126;1;0;false;false;;;;;; -264127;7;0;false;false;0;0;0;;; -264134;1;0;false;false;;;;;; -264135;1;0;false;false;0;0;0;;; -264136;3;0;false;false;;;;;; -264139;3;1;false;false;127;0;85;;; -264142;1;0;false;false;;;;;; -264143;4;0;false;false;0;0;0;;; -264147;1;0;false;false;;;;;; -264148;1;0;false;false;0;0;0;;; -264149;1;0;false;false;;;;;; -264150;32;0;false;false;0;0;0;;; -264182;3;0;false;false;;;;;; -264185;3;1;false;false;127;0;85;;; -264188;1;0;false;false;;;;;; -264189;10;0;false;false;0;0;0;;; -264199;1;0;false;false;;;;;; -264200;1;0;false;false;0;0;0;;; -264201;1;0;false;false;;;;;; -264202;30;0;false;false;0;0;0;;; -264232;3;0;false;false;;;;;; -264235;3;1;false;false;127;0;85;;; -264238;1;0;false;false;;;;;; -264239;12;0;false;false;0;0;0;;; -264251;1;0;false;false;;;;;; -264252;1;0;false;false;0;0;0;;; -264253;1;0;false;false;;;;;; -264254;6;0;false;false;0;0;0;;; -264260;1;0;false;false;;;;;; -264261;1;0;false;false;0;0;0;;; -264262;1;0;false;false;;;;;; -264263;11;0;false;false;0;0;0;;; -264274;3;0;false;false;;;;;; -264277;6;0;false;false;0;0;0;;; -264283;1;0;false;false;;;;;; -264284;8;0;false;false;0;0;0;;; -264292;1;0;false;false;;;;;; -264293;1;0;false;false;0;0;0;;; -264294;1;0;false;false;;;;;; -264295;22;0;false;false;0;0;0;;; -264317;3;0;false;false;;;;;; -264320;3;1;false;false;127;0;85;;; -264323;1;0;false;false;;;;;; -264324;9;0;false;false;0;0;0;;; -264333;1;0;false;false;;;;;; -264334;1;0;false;false;0;0;0;;; -264335;1;0;false;false;;;;;; -264336;22;0;false;false;0;0;0;;; -264358;1;0;false;false;;;;;; -264359;5;0;false;false;0;0;0;;; -264364;1;0;false;false;;;;;; -264365;14;0;false;false;0;0;0;;; -264379;6;0;false;false;;;;;; -264385;23;0;false;false;0;0;0;;; -264408;1;0;false;false;;;;;; -264409;6;0;false;false;0;0;0;;; -264415;3;0;false;false;;;;;; -264418;1;0;false;false;0;0;0;;; -264419;2;0;false;false;;;;;; -264421;3;0;false;false;63;95;191;;; -264424;2;0;false;false;;;;;; -264426;3;0;false;false;63;95;191;;; -264429;3;0;false;false;;;;;; -264432;1;0;false;false;63;95;191;;; -264433;1;0;false;false;;;;;; -264434;7;0;false;false;63;95;191;;; -264441;1;0;false;false;;;;;; -264442;3;0;false;false;63;95;191;;; -264445;1;0;false;false;;;;;; -264446;9;0;false;false;63;95;191;;; -264455;1;0;false;false;;;;;; -264456;4;0;false;false;63;95;191;;; -264460;1;0;false;false;;;;;; -264461;5;0;false;false;63;95;191;;; -264466;2;0;false;false;;;;;; -264468;3;0;false;false;63;95;191;;; -264471;1;0;false;false;;;;;; -264472;3;0;false;false;63;95;191;;; -264475;1;0;false;false;;;;;; -264476;2;0;false;false;63;95;191;;; -264478;1;0;false;false;;;;;; -264479;3;0;false;false;63;95;191;;; -264482;1;0;false;false;;;;;; -264483;9;0;false;false;63;95;191;;; -264492;1;0;false;false;;;;;; -264493;4;0;false;false;63;95;191;;; -264497;1;0;false;false;;;;;; -264498;2;0;false;false;63;95;191;;; -264500;1;0;false;false;;;;;; -264501;8;0;false;false;63;95;191;;; -264509;1;0;false;false;;;;;; -264510;4;0;false;false;63;95;191;;; -264514;3;0;false;false;;;;;; -264517;1;0;false;false;63;95;191;;; -264518;1;0;false;false;;;;;; -264519;5;0;false;false;63;95;191;;; -264524;2;0;false;false;;;;;; -264526;4;0;false;false;63;95;191;;; -264530;1;0;false;false;;;;;; -264531;4;0;false;false;63;95;191;;; -264535;1;0;false;false;;;;;; -264536;2;0;false;false;63;95;191;;; -264538;1;0;false;false;;;;;; -264539;1;0;false;false;63;95;191;;; -264540;1;0;false;false;;;;;; -264541;5;0;false;false;63;95;191;;; -264546;1;0;false;false;127;127;159;;; -264547;2;0;false;false;63;95;191;;; -264549;1;0;false;false;127;127;159;;; -264550;4;0;false;false;63;95;191;;; -264554;1;0;false;false;;;;;; -264555;9;0;false;false;63;95;191;;; -264564;1;0;false;false;;;;;; -264565;7;0;false;false;63;95;191;;; -264572;1;0;false;false;;;;;; -264573;3;0;false;false;63;95;191;;; -264576;1;0;false;false;;;;;; -264577;3;0;false;false;63;95;191;;; -264580;1;0;false;false;;;;;; -264581;2;0;false;false;63;95;191;;; -264583;1;0;false;false;;;;;; -264584;3;0;false;false;63;95;191;;; -264587;1;0;false;false;;;;;; -264588;9;0;false;false;63;95;191;;; -264597;1;0;false;false;;;;;; -264598;2;0;false;false;63;95;191;;; -264600;1;0;false;false;;;;;; -264601;3;0;false;false;63;95;191;;; -264604;3;0;false;false;;;;;; -264607;1;0;false;false;63;95;191;;; -264608;1;0;false;false;;;;;; -264609;6;0;false;false;63;95;191;;; -264615;1;0;false;false;;;;;; -264616;9;0;false;false;63;95;191;;; -264625;1;0;false;false;;;;;; -264626;2;0;false;false;63;95;191;;; -264628;1;0;false;false;;;;;; -264629;3;0;false;false;63;95;191;;; -264632;1;0;false;false;;;;;; -264633;9;0;false;false;63;95;191;;; -264642;1;0;false;false;;;;;; -264643;6;0;false;false;63;95;191;;; -264649;1;0;false;false;;;;;; -264650;5;0;false;false;63;95;191;;; -264655;1;0;false;false;;;;;; -264656;3;0;false;false;63;95;191;;; -264659;1;0;false;false;;;;;; -264660;5;0;false;false;63;95;191;;; -264665;1;0;false;false;;;;;; -264666;2;0;false;false;63;95;191;;; -264668;1;0;false;false;;;;;; -264669;9;0;false;false;63;95;191;;; -264678;3;0;false;false;;;;;; -264681;1;0;false;false;63;95;191;;; -264682;1;0;false;false;;;;;; -264683;3;0;false;false;127;127;159;;; -264686;3;0;false;false;;;;;; -264689;1;0;false;false;63;95;191;;; -264690;3;0;false;false;;;;;; -264693;1;0;false;false;63;95;191;;; -264694;1;0;false;false;;;;;; -264695;11;1;false;false;127;159;191;;; -264706;12;0;false;false;63;95;191;;; -264718;1;0;false;false;;;;;; -264719;4;0;false;false;127;127;159;;; -264723;3;0;false;false;;;;;; -264726;1;0;false;false;63;95;191;;; -264727;4;0;false;false;;;;;; -264731;4;0;false;false;127;127;159;;; -264735;21;0;false;false;63;95;191;;; -264756;1;0;false;false;;;;;; -264757;1;0;false;false;127;127;159;;; -264758;1;0;false;false;;;;;; -264759;2;0;false;false;63;95;191;;; -264761;1;0;false;false;;;;;; -264762;3;0;false;false;63;95;191;;; -264765;1;0;false;false;;;;;; -264766;8;0;false;false;63;95;191;;; -264774;1;0;false;false;;;;;; -264775;3;0;false;false;63;95;191;;; -264778;1;0;false;false;;;;;; -264779;4;0;false;false;63;95;191;;; -264783;1;0;false;false;;;;;; -264784;8;0;false;false;63;95;191;;; -264792;5;0;false;false;127;127;159;;; -264797;3;0;false;false;;;;;; -264800;1;0;false;false;63;95;191;;; -264801;4;0;false;false;;;;;; -264805;4;0;false;false;127;127;159;;; -264809;27;0;false;false;63;95;191;;; -264836;1;0;false;false;;;;;; -264837;1;0;false;false;127;127;159;;; -264838;1;0;false;false;;;;;; -264839;2;0;false;false;63;95;191;;; -264841;1;0;false;false;;;;;; -264842;3;0;false;false;63;95;191;;; -264845;1;0;false;false;;;;;; -264846;6;0;false;false;63;95;191;;; -264852;1;0;false;false;;;;;; -264853;4;0;false;false;63;95;191;;; -264857;1;0;false;false;;;;;; -264858;3;0;false;false;63;95;191;;; -264861;1;0;false;false;;;;;; -264862;6;0;false;false;63;95;191;;; -264868;1;0;false;false;;;;;; -264869;4;0;false;false;63;95;191;;; -264873;1;0;false;false;;;;;; -264874;7;0;false;false;63;95;191;;; -264881;1;0;false;false;;;;;; -264882;3;0;false;false;63;95;191;;; -264885;1;0;false;false;;;;;; -264886;8;0;false;false;63;95;191;;; -264894;5;0;false;false;127;127;159;;; -264899;3;0;false;false;;;;;; -264902;1;0;false;false;63;95;191;;; -264903;1;0;false;false;;;;;; -264904;5;0;false;false;127;127;159;;; -264909;3;0;false;false;;;;;; -264912;2;0;false;false;63;95;191;;; -264914;2;0;false;false;;;;;; -264916;6;1;false;false;127;0;85;;; -264922;1;0;false;false;;;;;; -264923;4;1;false;false;127;0;85;;; -264927;1;0;false;false;;;;;; -264928;15;0;false;false;0;0;0;;; -264943;1;0;false;false;;;;;; -264944;1;0;false;false;0;0;0;;; -264945;3;0;false;false;;;;;; -264948;14;0;false;false;0;0;0;;; -264962;3;0;false;false;;;;;; -264965;7;1;false;false;127;0;85;;; -264972;1;0;false;false;;;;;; -264973;14;0;false;false;0;0;0;;; -264987;3;0;false;false;;;;;; -264990;3;1;false;false;127;0;85;;; -264993;1;0;false;false;;;;;; -264994;12;0;false;false;0;0;0;;; -265006;1;0;false;false;;;;;; -265007;10;0;false;false;0;0;0;;; -265017;1;0;false;false;;;;;; -265018;7;0;false;false;0;0;0;;; -265025;1;0;false;false;;;;;; -265026;10;0;false;false;0;0;0;;; -265036;1;0;false;false;;;;;; -265037;8;0;false;false;0;0;0;;; -265045;1;0;false;false;;;;;; -265046;5;0;false;false;0;0;0;;; -265051;1;0;false;false;;;;;; -265052;13;0;false;false;0;0;0;;; -265065;5;0;false;false;;;;;; -265070;37;0;false;false;63;127;95;;; -265107;1;0;false;false;;;;;; -265108;7;1;false;false;127;0;85;;; -265115;1;0;false;false;;;;;; -265116;11;0;false;false;0;0;0;;; -265127;1;0;false;false;;;;;; -265128;1;0;false;false;0;0;0;;; -265129;1;0;false;false;;;;;; -265130;11;0;false;false;0;0;0;;; -265141;1;0;false;false;;;;;; -265142;2;0;false;false;0;0;0;;; -265144;1;0;false;false;;;;;; -265145;12;0;false;false;0;0;0;;; -265157;5;0;false;false;;;;;; -265162;2;1;false;false;127;0;85;;; -265164;1;0;false;false;;;;;; -265165;13;0;false;false;0;0;0;;; -265178;1;0;false;false;;;;;; -265179;1;0;false;false;0;0;0;;; -265180;4;0;false;false;;;;;; -265184;11;0;false;false;0;0;0;;; -265195;1;0;false;false;;;;;; -265196;1;0;false;false;0;0;0;;; -265197;1;0;false;false;;;;;; -265198;12;0;false;false;0;0;0;;; -265210;4;0;false;false;;;;;; -265214;9;0;false;false;0;0;0;;; -265223;1;0;false;false;;;;;; -265224;1;0;false;false;0;0;0;;; -265225;1;0;false;false;;;;;; -265226;12;0;false;false;0;0;0;;; -265238;3;0;false;false;;;;;; -265241;1;0;false;false;0;0;0;;; -265242;1;0;false;false;;;;;; -265243;4;1;false;false;127;0;85;;; -265247;1;0;false;false;;;;;; -265248;1;0;false;false;0;0;0;;; -265249;4;0;false;false;;;;;; -265253;11;0;false;false;0;0;0;;; -265264;1;0;false;false;;;;;; -265265;1;0;false;false;0;0;0;;; -265266;1;0;false;false;;;;;; -265267;12;0;false;false;0;0;0;;; -265279;4;0;false;false;;;;;; -265283;9;0;false;false;0;0;0;;; -265292;1;0;false;false;;;;;; -265293;1;0;false;false;0;0;0;;; -265294;1;0;false;false;;;;;; -265295;12;0;false;false;0;0;0;;; -265307;3;0;false;false;;;;;; -265310;1;0;false;false;0;0;0;;; -265311;6;0;false;false;;;;;; -265317;65;0;false;false;63;127;95;;; -265382;1;0;false;false;;;;;; -265383;9;0;false;false;0;0;0;;; -265392;1;0;false;false;;;;;; -265393;1;0;false;false;0;0;0;;; -265394;1;0;false;false;;;;;; -265395;37;0;false;false;0;0;0;;; -265432;3;0;false;false;;;;;; -265435;12;0;false;false;0;0;0;;; -265447;1;0;false;false;;;;;; -265448;1;0;false;false;0;0;0;;; -265449;1;0;false;false;;;;;; -265450;11;0;false;false;0;0;0;;; -265461;1;0;false;false;;;;;; -265462;1;0;false;false;0;0;0;;; -265463;1;0;false;false;;;;;; -265464;35;0;false;false;0;0;0;;; -265499;3;0;false;false;;;;;; -265502;6;0;false;false;0;0;0;;; -265508;1;0;false;false;;;;;; -265509;1;0;false;false;0;0;0;;; -265510;1;0;false;false;;;;;; -265511;40;0;false;false;0;0;0;;; -265551;1;0;false;false;;;;;; -265552;10;0;false;false;0;0;0;;; -265562;1;0;false;false;;;;;; -265563;14;0;false;false;0;0;0;;; -265577;4;0;false;false;;;;;; -265581;7;0;false;false;0;0;0;;; -265588;2;0;false;false;;;;;; -265590;1;0;false;false;0;0;0;;; -265591;1;0;false;false;;;;;; -265592;35;0;false;false;0;0;0;;; -265627;3;0;false;false;;;;;; -265630;12;0;false;false;0;0;0;;; -265642;1;0;false;false;;;;;; -265643;1;0;false;false;0;0;0;;; -265644;1;0;false;false;;;;;; -265645;9;0;false;false;0;0;0;;; -265654;1;0;false;false;;;;;; -265655;1;0;false;false;0;0;0;;; -265656;1;0;false;false;;;;;; -265657;33;0;false;false;0;0;0;;; -265690;3;0;false;false;;;;;; -265693;4;0;false;false;0;0;0;;; -265697;1;0;false;false;;;;;; -265698;1;0;false;false;0;0;0;;; -265699;1;0;false;false;;;;;; -265700;38;0;false;false;0;0;0;;; -265738;1;0;false;false;;;;;; -265739;8;0;false;false;0;0;0;;; -265747;1;0;false;false;;;;;; -265748;14;0;false;false;0;0;0;;; -265762;6;0;false;false;;;;;; -265768;76;0;false;false;63;127;95;;; -265844;1;0;false;false;;;;;; -265845;3;1;false;false;127;0;85;;; -265848;1;0;false;false;;;;;; -265849;1;0;false;false;0;0;0;;; -265850;1;0;false;false;;;;;; -265851;1;0;false;false;0;0;0;;; -265852;1;0;false;false;;;;;; -265853;22;0;false;false;0;0;0;;; -265875;3;0;false;false;;;;;; -265878;2;1;false;false;127;0;85;;; -265880;1;0;false;false;;;;;; -265881;13;0;false;false;0;0;0;;; -265894;1;0;false;false;;;;;; -265895;1;0;false;false;0;0;0;;; -265896;4;0;false;false;;;;;; -265900;13;0;false;false;0;0;0;;; -265913;1;0;false;false;;;;;; -265914;1;0;false;false;0;0;0;;; -265915;1;0;false;false;;;;;; -265916;6;0;false;false;0;0;0;;; -265922;1;0;false;false;;;;;; -265923;1;0;false;false;0;0;0;;; -265924;1;0;false;false;;;;;; -265925;4;0;false;false;0;0;0;;; -265929;1;0;false;false;;;;;; -265930;2;0;false;false;0;0;0;;; -265932;1;0;false;false;;;;;; -265933;2;0;false;false;0;0;0;;; -265935;3;0;false;false;;;;;; -265938;1;0;false;false;0;0;0;;; -265939;1;0;false;false;;;;;; -265940;4;1;false;false;127;0;85;;; -265944;1;0;false;false;;;;;; -265945;1;0;false;false;0;0;0;;; -265946;4;0;false;false;;;;;; -265950;13;0;false;false;0;0;0;;; -265963;1;0;false;false;;;;;; -265964;1;0;false;false;0;0;0;;; -265965;1;0;false;false;;;;;; -265966;4;0;false;false;0;0;0;;; -265970;1;0;false;false;;;;;; -265971;1;0;false;false;0;0;0;;; -265972;1;0;false;false;;;;;; -265973;6;0;false;false;0;0;0;;; -265979;1;0;false;false;;;;;; -265980;2;0;false;false;0;0;0;;; -265982;1;0;false;false;;;;;; -265983;2;0;false;false;0;0;0;;; -265985;3;0;false;false;;;;;; -265988;1;0;false;false;0;0;0;;; -265989;6;0;false;false;;;;;; -265995;2;1;false;false;127;0;85;;; -265997;1;0;false;false;;;;;; -265998;15;0;false;false;0;0;0;;; -266013;1;0;false;false;;;;;; -266014;1;0;false;false;0;0;0;;; -266015;4;0;false;false;;;;;; -266019;63;0;false;false;63;127;95;;; -266082;2;0;false;false;;;;;; -266084;31;0;false;false;63;127;95;;; -266115;2;0;false;false;;;;;; -266117;20;0;false;false;0;0;0;;; -266137;1;0;false;false;;;;;; -266138;11;0;false;false;0;0;0;;; -266149;4;0;false;false;;;;;; -266153;71;0;false;false;63;127;95;;; -266224;2;0;false;false;;;;;; -266226;4;0;false;false;0;0;0;;; -266230;1;0;false;false;;;;;; -266231;1;0;false;false;0;0;0;;; -266232;1;0;false;false;;;;;; -266233;38;0;false;false;0;0;0;;; -266271;1;0;false;false;;;;;; -266272;8;0;false;false;0;0;0;;; -266280;1;0;false;false;;;;;; -266281;14;0;false;false;0;0;0;;; -266295;5;0;false;false;;;;;; -266300;18;0;false;false;0;0;0;;; -266318;1;0;false;false;;;;;; -266319;9;0;false;false;0;0;0;;; -266328;3;0;false;false;;;;;; -266331;1;0;false;false;0;0;0;;; -266332;1;0;false;false;;;;;; -266333;4;1;false;false;127;0;85;;; -266337;1;0;false;false;;;;;; -266338;1;0;false;false;0;0;0;;; -266339;4;0;false;false;;;;;; -266343;66;0;false;false;63;127;95;;; -266409;2;0;false;false;;;;;; -266411;24;0;false;false;63;127;95;;; -266435;2;0;false;false;;;;;; -266437;18;0;false;false;0;0;0;;; -266455;1;0;false;false;;;;;; -266456;9;0;false;false;0;0;0;;; -266465;3;0;false;false;;;;;; -266468;1;0;false;false;0;0;0;;; -266469;4;0;false;false;;;;;; -266473;1;0;false;false;0;0;0;;; -266474;2;0;false;false;;;;;; -266476;7;1;false;false;127;0;85;;; -266483;1;0;false;false;;;;;; -266484;13;0;false;false;0;0;0;;; -266497;1;0;false;false;;;;;; -266498;1;0;false;false;0;0;0;;; -266499;3;0;false;false;;;;;; -266502;6;1;false;false;127;0;85;;; -266508;1;0;false;false;;;;;; -266509;26;0;false;false;0;0;0;;; -266535;2;0;false;false;;;;;; -266537;1;0;false;false;0;0;0;;; -266538;2;0;false;false;;;;;; -266540;3;0;false;false;63;95;191;;; -266543;3;0;false;false;;;;;; -266546;1;0;false;false;63;95;191;;; -266547;1;0;false;false;;;;;; -266548;7;0;false;false;63;95;191;;; -266555;1;0;false;false;;;;;; -266556;3;0;false;false;63;95;191;;; -266559;1;0;false;false;;;;;; -266560;9;0;false;false;63;95;191;;; -266569;1;0;false;false;;;;;; -266570;3;0;false;false;63;95;191;;; -266573;1;0;false;false;;;;;; -266574;5;0;false;false;63;95;191;;; -266579;1;0;false;false;;;;;; -266580;8;0;false;false;63;95;191;;; -266588;1;0;false;false;;;;;; -266589;9;0;false;false;63;95;191;;; -266598;1;0;false;false;;;;;; -266599;2;0;false;false;63;95;191;;; -266601;1;0;false;false;;;;;; -266602;3;0;false;false;63;95;191;;; -266605;1;0;false;false;;;;;; -266606;4;0;false;false;63;95;191;;; -266610;1;0;false;false;;;;;; -266611;7;0;false;false;63;95;191;;; -266618;3;0;false;false;;;;;; -266621;1;0;false;false;63;95;191;;; -266622;1;0;false;false;;;;;; -266623;2;0;false;false;63;95;191;;; -266625;1;0;false;false;;;;;; -266626;3;0;false;false;63;95;191;;; -266629;1;0;false;false;;;;;; -266630;9;0;false;false;63;95;191;;; -266639;1;0;false;false;;;;;; -266640;10;0;false;false;63;95;191;;; -266650;1;0;false;false;;;;;; -266651;4;0;false;false;63;95;191;;; -266655;1;0;false;false;;;;;; -266656;3;0;false;false;63;95;191;;; -266659;1;0;false;false;;;;;; -266660;8;0;false;false;63;95;191;;; -266668;1;0;false;false;;;;;; -266669;5;0;false;false;63;95;191;;; -266674;1;0;false;false;;;;;; -266675;3;0;false;false;63;95;191;;; -266678;1;0;false;false;;;;;; -266679;9;0;false;false;63;95;191;;; -266688;1;0;false;false;;;;;; -266689;2;0;false;false;63;95;191;;; -266691;4;0;false;false;;;;;; -266695;1;0;false;false;63;95;191;;; -266696;1;0;false;false;;;;;; -266697;5;0;false;false;63;95;191;;; -266702;1;0;false;false;;;;;; -266703;3;0;false;false;63;95;191;;; -266706;1;0;false;false;;;;;; -266707;3;0;false;false;63;95;191;;; -266710;1;0;false;false;;;;;; -266711;5;0;false;false;63;95;191;;; -266716;1;0;false;false;;;;;; -266717;5;0;false;false;63;95;191;;; -266722;1;0;false;false;;;;;; -266723;2;0;false;false;63;95;191;;; -266725;1;0;false;false;;;;;; -266726;3;0;false;false;63;95;191;;; -266729;1;0;false;false;;;;;; -266730;3;0;false;false;63;95;191;;; -266733;1;0;false;false;;;;;; -266734;2;0;false;false;63;95;191;;; -266736;1;0;false;false;;;;;; -266737;3;0;false;false;63;95;191;;; -266740;1;0;false;false;;;;;; -266741;3;0;false;false;63;95;191;;; -266744;1;0;false;false;;;;;; -266745;5;0;false;false;63;95;191;;; -266750;3;0;false;false;;;;;; -266753;1;0;false;false;63;95;191;;; -266754;1;0;false;false;;;;;; -266755;2;0;false;false;63;95;191;;; -266757;1;0;false;false;;;;;; -266758;3;0;false;false;63;95;191;;; -266761;1;0;false;false;;;;;; -266762;9;0;false;false;63;95;191;;; -266771;1;0;false;false;;;;;; -266772;2;0;false;false;63;95;191;;; -266774;1;0;false;false;;;;;; -266775;6;0;false;false;63;95;191;;; -266781;1;0;false;false;;;;;; -266782;3;0;false;false;63;95;191;;; -266785;1;0;false;false;;;;;; -266786;8;0;false;false;63;95;191;;; -266794;1;0;false;false;;;;;; -266795;4;0;false;false;63;95;191;;; -266799;1;0;false;false;;;;;; -266800;2;0;false;false;63;95;191;;; -266802;1;0;false;false;;;;;; -266803;2;0;false;false;63;95;191;;; -266805;1;0;false;false;;;;;; -266806;5;0;false;false;63;95;191;;; -266811;1;0;false;false;;;;;; -266812;2;0;false;false;63;95;191;;; -266814;1;0;false;false;;;;;; -266815;4;0;false;false;63;95;191;;; -266819;1;0;false;false;;;;;; -266820;3;0;false;false;63;95;191;;; -266823;3;0;false;false;;;;;; -266826;1;0;false;false;63;95;191;;; -266827;1;0;false;false;;;;;; -266828;4;0;false;false;63;95;191;;; -266832;1;0;false;false;;;;;; -266833;4;0;false;false;63;95;191;;; -266837;1;0;false;false;;;;;; -266838;7;0;false;false;63;95;191;;; -266845;1;0;false;false;;;;;; -266846;9;0;false;false;63;95;191;;; -266855;2;0;false;false;;;;;; -266857;2;0;false;false;63;95;191;;; -266859;1;0;false;false;;;;;; -266860;3;0;false;false;63;95;191;;; -266863;1;0;false;false;;;;;; -266864;9;0;false;false;63;95;191;;; -266873;1;0;false;false;;;;;; -266874;2;0;false;false;63;95;191;;; -266876;1;0;false;false;;;;;; -266877;6;0;false;false;63;95;191;;; -266883;1;0;false;false;;;;;; -266884;3;0;false;false;63;95;191;;; -266887;1;0;false;false;;;;;; -266888;8;0;false;false;63;95;191;;; -266896;1;0;false;false;;;;;; -266897;4;0;false;false;63;95;191;;; -266901;4;0;false;false;;;;;; -266905;1;0;false;false;63;95;191;;; -266906;1;0;false;false;;;;;; -266907;2;0;false;false;63;95;191;;; -266909;1;0;false;false;;;;;; -266910;2;0;false;false;63;95;191;;; -266912;1;0;false;false;;;;;; -266913;4;0;false;false;63;95;191;;; -266917;1;0;false;false;;;;;; -266918;10;0;false;false;63;95;191;;; -266928;3;0;false;false;;;;;; -266931;1;0;false;false;63;95;191;;; -266932;1;0;false;false;;;;;; -266933;3;0;false;false;127;127;159;;; -266936;3;0;false;false;;;;;; -266939;1;0;false;false;63;95;191;;; -266940;3;0;false;false;;;;;; -266943;1;0;false;false;63;95;191;;; -266944;1;0;false;false;;;;;; -266945;7;1;false;false;127;159;191;;; -266952;11;0;false;false;63;95;191;;; -266963;1;0;false;false;;;;;; -266964;6;0;false;false;63;95;191;;; -266970;1;0;false;false;;;;;; -266971;2;0;false;false;63;95;191;;; -266973;1;0;false;false;;;;;; -266974;3;0;false;false;63;95;191;;; -266977;1;0;false;false;;;;;; -266978;4;0;false;false;63;95;191;;; -266982;1;0;false;false;;;;;; -266983;6;0;false;false;63;95;191;;; -266989;3;0;false;false;;;;;; -266992;1;0;false;false;63;95;191;;; -266993;1;0;false;false;;;;;; -266994;7;1;false;false;127;159;191;;; -267001;14;0;false;false;63;95;191;;; -267015;1;0;false;false;;;;;; -267016;6;0;false;false;63;95;191;;; -267022;1;0;false;false;;;;;; -267023;2;0;false;false;63;95;191;;; -267025;1;0;false;false;;;;;; -267026;4;0;false;false;63;95;191;;; -267030;1;0;false;false;;;;;; -267031;5;0;false;false;63;95;191;;; -267036;1;0;false;false;;;;;; -267037;8;0;false;false;63;95;191;;; -267045;3;0;false;false;;;;;; -267048;1;0;false;false;63;95;191;;; -267049;1;0;false;false;;;;;; -267050;7;1;false;false;127;159;191;;; -267057;9;0;false;false;63;95;191;;; -267066;1;0;false;false;;;;;; -267067;6;0;false;false;63;95;191;;; -267073;1;0;false;false;;;;;; -267074;2;0;false;false;63;95;191;;; -267076;1;0;false;false;;;;;; -267077;3;0;false;false;63;95;191;;; -267080;1;0;false;false;;;;;; -267081;4;0;false;false;63;95;191;;; -267085;3;0;false;false;;;;;; -267088;2;0;false;false;63;95;191;;; -267090;2;0;false;false;;;;;; -267092;4;1;false;false;127;0;85;;; -267096;1;0;false;false;;;;;; -267097;16;0;false;false;0;0;0;;; -267113;3;1;false;false;127;0;85;;; -267116;1;0;false;false;;;;;; -267117;12;0;false;false;0;0;0;;; -267129;1;0;false;false;;;;;; -267130;3;1;false;false;127;0;85;;; -267133;1;0;false;false;;;;;; -267134;15;0;false;false;0;0;0;;; -267149;1;0;false;false;;;;;; -267150;3;1;false;false;127;0;85;;; -267153;1;0;false;false;;;;;; -267154;10;0;false;false;0;0;0;;; -267164;1;0;false;false;;;;;; -267165;1;0;false;false;0;0;0;;; -267166;3;0;false;false;;;;;; -267169;2;1;false;false;127;0;85;;; -267171;1;0;false;false;;;;;; -267172;12;0;false;false;0;0;0;;; -267184;1;0;false;false;;;;;; -267185;2;0;false;false;0;0;0;;; -267187;1;0;false;false;;;;;; -267188;12;0;false;false;0;0;0;;; -267200;1;0;false;false;;;;;; -267201;1;0;false;false;0;0;0;;; -267202;4;0;false;false;;;;;; -267206;38;0;false;false;63;127;95;;; -267244;2;0;false;false;;;;;; -267246;6;1;false;false;127;0;85;;; -267252;1;0;false;false;0;0;0;;; -267253;3;0;false;false;;;;;; -267256;1;0;false;false;0;0;0;;; -267257;3;0;false;false;;;;;; -267260;2;1;false;false;127;0;85;;; -267262;1;0;false;false;;;;;; -267263;12;0;false;false;0;0;0;;; -267275;1;0;false;false;;;;;; -267276;1;0;false;false;0;0;0;;; -267277;1;0;false;false;;;;;; -267278;12;0;false;false;0;0;0;;; -267290;1;0;false;false;;;;;; -267291;1;0;false;false;0;0;0;;; -267292;4;0;false;false;;;;;; -267296;48;0;false;false;63;127;95;;; -267344;2;0;false;false;;;;;; -267346;32;0;false;false;0;0;0;;; -267378;1;0;false;false;;;;;; -267379;11;0;false;false;0;0;0;;; -267390;1;0;false;false;;;;;; -267391;1;0;false;false;0;0;0;;; -267392;1;0;false;false;;;;;; -267393;12;0;false;false;0;0;0;;; -267405;1;0;false;false;;;;;; -267406;4;1;false;false;127;0;85;;; -267410;2;0;false;false;0;0;0;;; -267412;3;0;false;false;;;;;; -267415;1;0;false;false;0;0;0;;; -267416;3;0;false;false;;;;;; -267419;2;1;false;false;127;0;85;;; -267421;1;0;false;false;;;;;; -267422;12;0;false;false;0;0;0;;; -267434;1;0;false;false;;;;;; -267435;1;0;false;false;0;0;0;;; -267436;1;0;false;false;;;;;; -267437;11;0;false;false;0;0;0;;; -267448;1;0;false;false;;;;;; -267449;1;0;false;false;0;0;0;;; -267450;1;0;false;false;;;;;; -267451;14;0;false;false;0;0;0;;; -267465;1;0;false;false;;;;;; -267466;2;0;false;false;0;0;0;;; -267468;1;0;false;false;;;;;; -267469;11;0;false;false;0;0;0;;; -267480;1;0;false;false;;;;;; -267481;1;0;false;false;0;0;0;;; -267482;1;0;false;false;;;;;; -267483;11;0;false;false;0;0;0;;; -267494;1;0;false;false;;;;;; -267495;1;0;false;false;0;0;0;;; -267496;1;0;false;false;;;;;; -267497;15;0;false;false;0;0;0;;; -267512;1;0;false;false;;;;;; -267513;1;0;false;false;0;0;0;;; -267514;4;0;false;false;;;;;; -267518;48;0;false;false;63;127;95;;; -267566;2;0;false;false;;;;;; -267568;65;0;false;false;63;127;95;;; -267633;2;0;false;false;;;;;; -267635;78;0;false;false;63;127;95;;; -267713;2;0;false;false;;;;;; -267715;3;1;false;false;127;0;85;;; -267718;1;0;false;false;;;;;; -267719;12;0;false;false;0;0;0;;; -267731;1;0;false;false;;;;;; -267732;1;0;false;false;0;0;0;;; -267733;1;0;false;false;;;;;; -267734;9;0;false;false;0;0;0;;; -267743;1;0;false;false;;;;;; -267744;1;0;false;false;0;0;0;;; -267745;1;0;false;false;;;;;; -267746;15;0;false;false;0;0;0;;; -267761;4;0;false;false;;;;;; -267765;3;1;false;false;127;0;85;;; -267768;1;0;false;false;;;;;; -267769;11;0;false;false;0;0;0;;; -267780;1;0;false;false;;;;;; -267781;1;0;false;false;0;0;0;;; -267782;1;0;false;false;;;;;; -267783;11;0;false;false;0;0;0;;; -267794;1;0;false;false;;;;;; -267795;1;0;false;false;0;0;0;;; -267796;1;0;false;false;;;;;; -267797;10;0;false;false;0;0;0;;; -267807;4;0;false;false;;;;;; -267811;32;0;false;false;0;0;0;;; -267843;1;0;false;false;;;;;; -267844;11;0;false;false;0;0;0;;; -267855;1;0;false;false;;;;;; -267856;1;0;false;false;0;0;0;;; -267857;1;0;false;false;;;;;; -267858;12;0;false;false;0;0;0;;; -267870;1;0;false;false;;;;;; -267871;1;0;false;false;0;0;0;;; -267872;1;0;false;false;;;;;; -267873;12;0;false;false;0;0;0;;; -267885;1;0;false;false;;;;;; -267886;4;1;false;false;127;0;85;;; -267890;2;0;false;false;0;0;0;;; -267892;3;0;false;false;;;;;; -267895;1;0;false;false;0;0;0;;; -267896;3;0;false;false;;;;;; -267899;2;1;false;false;127;0;85;;; -267901;1;0;false;false;;;;;; -267902;12;0;false;false;0;0;0;;; -267914;1;0;false;false;;;;;; -267915;1;0;false;false;0;0;0;;; -267916;1;0;false;false;;;;;; -267917;11;0;false;false;0;0;0;;; -267928;1;0;false;false;;;;;; -267929;2;0;false;false;0;0;0;;; -267931;1;0;false;false;;;;;; -267932;11;0;false;false;0;0;0;;; -267943;1;0;false;false;;;;;; -267944;1;0;false;false;0;0;0;;; -267945;1;0;false;false;;;;;; -267946;11;0;false;false;0;0;0;;; -267957;1;0;false;false;;;;;; -267958;1;0;false;false;0;0;0;;; -267959;1;0;false;false;;;;;; -267960;15;0;false;false;0;0;0;;; -267975;1;0;false;false;;;;;; -267976;1;0;false;false;0;0;0;;; -267977;4;0;false;false;;;;;; -267981;69;0;false;false;63;127;95;;; -268050;2;0;false;false;;;;;; -268052;32;0;false;false;0;0;0;;; -268084;1;0;false;false;;;;;; -268085;1;0;false;false;0;0;0;;; -268086;1;0;false;false;;;;;; -268087;10;0;false;false;0;0;0;;; -268097;1;0;false;false;;;;;; -268098;2;0;false;false;0;0;0;;; -268100;1;0;false;false;;;;;; -268101;4;1;false;false;127;0;85;;; -268105;2;0;false;false;0;0;0;;; -268107;4;0;false;false;;;;;; -268111;52;0;false;false;63;127;95;;; -268163;2;0;false;false;;;;;; -268165;19;0;false;false;0;0;0;;; -268184;3;0;false;false;;;;;; -268187;1;0;false;false;0;0;0;;; -268188;3;0;false;false;;;;;; -268191;4;1;false;false;127;0;85;;; -268195;1;0;false;false;;;;;; -268196;1;0;false;false;0;0;0;;; -268197;4;0;false;false;;;;;; -268201;46;0;false;false;63;127;95;;; -268247;2;0;false;false;;;;;; -268249;32;0;false;false;0;0;0;;; -268281;1;0;false;false;;;;;; -268282;1;0;false;false;0;0;0;;; -268283;1;0;false;false;;;;;; -268284;9;0;false;false;0;0;0;;; -268293;1;0;false;false;;;;;; -268294;1;0;false;false;0;0;0;;; -268295;1;0;false;false;;;;;; -268296;15;0;false;false;0;0;0;;; -268311;1;0;false;false;;;;;; -268312;11;0;false;false;0;0;0;;; -268323;1;0;false;false;;;;;; -268324;1;0;false;false;0;0;0;;; -268325;1;0;false;false;;;;;; -268326;12;0;false;false;0;0;0;;; -268338;1;0;false;false;;;;;; -268339;4;1;false;false;127;0;85;;; -268343;2;0;false;false;0;0;0;;; -268345;4;0;false;false;;;;;; -268349;52;0;false;false;63;127;95;;; -268401;2;0;false;false;;;;;; -268403;19;0;false;false;0;0;0;;; -268422;3;0;false;false;;;;;; -268425;1;0;false;false;0;0;0;;; -268426;3;0;false;false;;;;;; -268429;1;0;false;false;0;0;0;;; -268430;2;0;false;false;;;;;; -268432;3;0;false;false;63;95;191;;; -268435;3;0;false;false;;;;;; -268438;1;0;false;false;63;95;191;;; -268439;1;0;false;false;;;;;; -268440;7;0;false;false;63;95;191;;; -268447;1;0;false;false;;;;;; -268448;3;0;false;false;63;95;191;;; -268451;1;0;false;false;;;;;; -268452;5;0;false;false;63;95;191;;; -268457;3;0;false;false;;;;;; -268460;1;0;false;false;63;95;191;;; -268461;1;0;false;false;;;;;; -268462;3;0;false;false;127;127;159;;; -268465;3;0;false;false;;;;;; -268468;1;0;false;false;63;95;191;;; -268469;4;0;false;false;;;;;; -268473;1;0;false;false;63;95;191;;; -268474;1;0;false;false;;;;;; -268475;7;1;false;false;127;159;191;;; -268482;18;0;false;false;63;95;191;;; -268500;1;0;false;false;;;;;; -268501;6;0;false;false;63;95;191;;; -268507;1;0;false;false;;;;;; -268508;4;0;false;false;63;95;191;;; -268512;1;0;false;false;;;;;; -268513;5;0;false;false;63;95;191;;; -268518;1;0;false;false;;;;;; -268519;6;0;false;false;63;95;191;;; -268525;1;0;false;false;;;;;; -268526;6;0;false;false;63;95;191;;; -268532;4;0;false;false;;;;;; -268536;1;0;false;false;63;95;191;;; -268537;2;0;false;false;;;;;; -268539;8;0;false;false;63;95;191;;; -268547;3;0;false;false;;;;;; -268550;2;0;false;false;63;95;191;;; -268552;2;0;false;false;;;;;; -268554;4;1;false;false;127;0;85;;; -268558;1;0;false;false;;;;;; -268559;15;0;false;false;0;0;0;;; -268574;3;1;false;false;127;0;85;;; -268577;1;0;false;false;;;;;; -268578;19;0;false;false;0;0;0;;; -268597;1;0;false;false;;;;;; -268598;1;0;false;false;0;0;0;;; -268599;3;0;false;false;;;;;; -268602;14;0;false;false;0;0;0;;; -268616;1;0;false;false;;;;;; -268617;14;0;false;false;0;0;0;;; -268631;1;0;false;false;;;;;; -268632;1;0;false;false;0;0;0;;; -268633;1;0;false;false;;;;;; -268634;16;0;false;false;0;0;0;;; -268650;1;0;false;false;;;;;; -268651;8;0;false;false;0;0;0;;; -268659;3;0;false;false;;;;;; -268662;3;1;false;false;127;0;85;;; -268665;1;0;false;false;;;;;; -268666;12;0;false;false;0;0;0;;; -268678;5;0;false;false;;;;;; -268683;72;0;false;false;63;127;95;;; -268755;1;0;false;false;;;;;; -268756;70;0;false;false;63;127;95;;; -268826;1;0;false;false;;;;;; -268827;37;0;false;false;63;127;95;;; -268864;1;0;false;false;;;;;; -268865;2;1;false;false;127;0;85;;; -268867;1;0;false;false;;;;;; -268868;19;0;false;false;0;0;0;;; -268887;1;0;false;false;;;;;; -268888;2;0;false;false;0;0;0;;; -268890;1;0;false;false;;;;;; -268891;1;0;false;false;0;0;0;;; -268892;1;0;false;false;;;;;; -268893;2;0;false;false;0;0;0;;; -268895;1;0;false;false;;;;;; -268896;15;0;false;false;0;0;0;;; -268911;1;0;false;false;;;;;; -268912;1;0;false;false;0;0;0;;; -268913;1;0;false;false;;;;;; -268914;18;0;false;false;0;0;0;;; -268932;1;0;false;false;;;;;; -268933;2;0;false;false;0;0;0;;; -268935;4;0;false;false;;;;;; -268939;29;0;false;false;0;0;0;;; -268968;1;0;false;false;;;;;; -268969;2;0;false;false;0;0;0;;; -268971;1;0;false;false;;;;;; -268972;30;0;false;false;0;0;0;;; -269002;1;0;false;false;;;;;; -269003;1;0;false;false;0;0;0;;; -269004;4;0;false;false;;;;;; -269008;6;1;false;false;127;0;85;;; -269014;1;0;false;false;0;0;0;;; -269015;3;0;false;false;;;;;; -269018;1;0;false;false;0;0;0;;; -269019;3;0;false;false;;;;;; -269022;27;0;false;false;0;0;0;;; -269049;9;0;false;false;;;;;; -269058;59;0;false;false;63;127;95;;; -269117;1;0;false;false;;;;;; -269118;11;0;false;false;0;0;0;;; -269129;1;0;false;false;;;;;; -269130;1;0;false;false;0;0;0;;; -269131;1;0;false;false;;;;;; -269132;35;0;false;false;0;0;0;;; -269167;3;0;false;false;;;;;; -269170;62;0;false;false;63;127;95;;; -269232;1;0;false;false;;;;;; -269233;65;0;false;false;63;127;95;;; -269298;1;0;false;false;;;;;; -269299;38;0;false;false;63;127;95;;; -269337;1;0;false;false;;;;;; -269338;2;1;false;false;127;0;85;;; -269340;1;0;false;false;;;;;; -269341;12;0;false;false;0;0;0;;; -269353;1;0;false;false;;;;;; -269354;1;0;false;false;0;0;0;;; -269355;1;0;false;false;;;;;; -269356;22;0;false;false;0;0;0;;; -269378;1;0;false;false;;;;;; -269379;1;0;false;false;0;0;0;;; -269380;1;0;false;false;;;;;; -269381;1;0;false;false;0;0;0;;; -269382;1;0;false;false;;;;;; -269383;2;0;false;false;0;0;0;;; -269385;4;0;false;false;;;;;; -269389;9;0;false;false;0;0;0;;; -269398;1;0;false;false;;;;;; -269399;2;0;false;false;0;0;0;;; -269401;1;0;false;false;;;;;; -269402;35;0;false;false;0;0;0;;; -269437;1;0;false;false;;;;;; -269438;1;0;false;false;0;0;0;;; -269439;1;0;false;false;;;;;; -269440;3;0;false;false;0;0;0;;; -269443;1;0;false;false;;;;;; -269444;1;0;false;false;0;0;0;;; -269445;4;0;false;false;;;;;; -269449;14;0;false;false;0;0;0;;; -269463;3;0;false;false;;;;;; -269466;1;0;false;false;0;0;0;;; -269467;3;0;false;false;;;;;; -269470;2;1;false;false;127;0;85;;; -269472;1;0;false;false;;;;;; -269473;12;0;false;false;0;0;0;;; -269485;1;0;false;false;;;;;; -269486;2;0;false;false;0;0;0;;; -269488;1;0;false;false;;;;;; -269489;9;0;false;false;0;0;0;;; -269498;1;0;false;false;;;;;; -269499;1;0;false;false;0;0;0;;; -269500;4;0;false;false;;;;;; -269504;9;0;false;false;0;0;0;;; -269513;1;0;false;false;;;;;; -269514;11;0;false;false;0;0;0;;; -269525;1;0;false;false;;;;;; -269526;1;0;false;false;0;0;0;;; -269527;1;0;false;false;;;;;; -269528;17;0;false;false;0;0;0;;; -269545;4;0;false;false;;;;;; -269549;62;0;false;false;63;127;95;;; -269611;2;0;false;false;;;;;; -269613;70;0;false;false;63;127;95;;; -269683;2;0;false;false;;;;;; -269685;44;0;false;false;63;127;95;;; -269729;2;0;false;false;;;;;; -269731;20;0;false;false;0;0;0;;; -269751;1;0;false;false;;;;;; -269752;2;0;false;false;0;0;0;;; -269754;1;0;false;false;;;;;; -269755;12;0;false;false;0;0;0;;; -269767;1;0;false;false;;;;;; -269768;1;0;false;false;0;0;0;;; -269769;1;0;false;false;;;;;; -269770;9;0;false;false;0;0;0;;; -269779;1;0;false;false;;;;;; -269780;1;0;false;false;0;0;0;;; -269781;1;0;false;false;;;;;; -269782;23;0;false;false;0;0;0;;; -269805;4;0;false;false;;;;;; -269809;64;0;false;false;63;127;95;;; -269873;2;0;false;false;;;;;; -269875;71;0;false;false;63;127;95;;; -269946;2;0;false;false;;;;;; -269948;27;0;false;false;63;127;95;;; -269975;2;0;false;false;;;;;; -269977;2;1;false;false;127;0;85;;; -269979;1;0;false;false;;;;;; -269980;21;0;false;false;0;0;0;;; -270001;1;0;false;false;;;;;; -270002;1;0;false;false;0;0;0;;; -270003;1;0;false;false;;;;;; -270004;2;0;false;false;0;0;0;;; -270006;1;0;false;false;;;;;; -270007;1;0;false;false;0;0;0;;; -270008;5;0;false;false;;;;;; -270013;20;0;false;false;0;0;0;;; -270033;1;0;false;false;;;;;; -270034;1;0;false;false;0;0;0;;; -270035;1;0;false;false;;;;;; -270036;2;0;false;false;0;0;0;;; -270038;4;0;false;false;;;;;; -270042;1;0;false;false;0;0;0;;; -270043;4;0;false;false;;;;;; -270047;8;0;false;false;0;0;0;;; -270055;1;0;false;false;;;;;; -270056;1;0;false;false;0;0;0;;; -270057;1;0;false;false;;;;;; -270058;12;0;false;false;0;0;0;;; -270070;4;0;false;false;;;;;; -270074;9;0;false;false;0;0;0;;; -270083;1;0;false;false;;;;;; -270084;1;0;false;false;0;0;0;;; -270085;1;0;false;false;;;;;; -270086;34;0;false;false;0;0;0;;; -270120;4;0;false;false;;;;;; -270124;2;1;false;false;127;0;85;;; -270126;1;0;false;false;;;;;; -270127;12;0;false;false;0;0;0;;; -270139;1;0;false;false;;;;;; -270140;2;0;false;false;0;0;0;;; -270142;1;0;false;false;;;;;; -270143;4;1;false;false;127;0;85;;; -270147;1;0;false;false;0;0;0;;; -270148;1;0;false;false;;;;;; -270149;1;0;false;false;0;0;0;;; -270150;5;0;false;false;;;;;; -270155;47;0;false;false;0;0;0;;; -270202;4;0;false;false;;;;;; -270206;1;0;false;false;0;0;0;;; -270207;3;0;false;false;;;;;; -270210;1;0;false;false;0;0;0;;; -270211;3;0;false;false;;;;;; -270214;53;0;false;false;63;127;95;;; -270267;1;0;false;false;;;;;; -270268;63;0;false;false;63;127;95;;; -270331;1;0;false;false;;;;;; -270332;19;0;false;false;0;0;0;;; -270351;7;0;false;false;;;;;; -270358;59;0;false;false;63;127;95;;; -270417;1;0;false;false;;;;;; -270418;5;1;false;false;127;0;85;;; -270423;10;0;false;false;0;0;0;;; -270433;2;0;false;false;;;;;; -270435;1;0;false;false;0;0;0;;; -270436;2;0;false;false;;;;;; -270438;1;0;false;false;0;0;0;;; diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/tab.png b/branches/firebug1.5/sandbox/sandbox/orion/samples/tab.png deleted file mode 100644 index cca224fa..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion/samples/tab.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/text.txt b/branches/firebug1.5/sandbox/sandbox/orion/samples/text.txt deleted file mode 100644 index 61429ef6..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/text.txt +++ /dev/null @@ -1,7951 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.custom; - - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.accessibility.*; -import org.eclipse.swt.dnd.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.*; -import org.eclipse.swt.printing.*; -import org.eclipse.swt.widgets.*; - -/** - * A StyledText is an editable user interface object that displays lines - * of text. The following style attributes can be defined for the text: - *
                                  - *
                                • foreground color - *
                                • background color - *
                                • font style (bold, italic, bold-italic, regular) - *
                                • underline - *
                                • strikeout - *
                                - *

                                - * In addition to text style attributes, the background color of a line may - * be specified. - *

                                - *

                                - * There are two ways to use this widget when specifying text style information. - * You may use the API that is defined for StyledText or you may define your own - * LineStyleListener. If you define your own listener, you will be responsible - * for maintaining the text style information for the widget. IMPORTANT: You may - * not define your own listener and use the StyledText API. The following - * StyledText API is not supported if you have defined a LineStyleListener: - *

                                  - *
                                • getStyleRangeAtOffset(int) - *
                                • getStyleRanges() - *
                                • replaceStyleRanges(int,int,StyleRange[]) - *
                                • setStyleRange(StyleRange) - *
                                • setStyleRanges(StyleRange[]) - *
                                - *

                                - *

                                - * There are two ways to use this widget when specifying line background colors. - * You may use the API that is defined for StyledText or you may define your own - * LineBackgroundListener. If you define your own listener, you will be responsible - * for maintaining the line background color information for the widget. - * IMPORTANT: You may not define your own listener and use the StyledText API. - * The following StyledText API is not supported if you have defined a - * LineBackgroundListener: - *

                                  - *
                                • getLineBackground(int) - *
                                • setLineBackground(int,int,Color) - *
                                - *

                                - *

                                - * The content implementation for this widget may also be user-defined. To do so, - * you must implement the StyledTextContent interface and use the StyledText API - * setContent(StyledTextContent) to initialize the widget. - *

                                - *

                                - * IMPORTANT: This class is not intended to be subclassed. - *

                                - *
                                - *
                                Styles:
                                FULL_SELECTION, MULTI, READ_ONLY, SINGLE, WRAP - *
                                Events:
                                ExtendedModify, LineGetBackground, LineGetSegments, LineGetStyle, Modify, Selection, Verify, VerifyKey - *
                                - */ -public class StyledText extends Canvas { - static final char TAB = '\t'; - static final String PlatformLineDelimiter = System.getProperty("line.separator"); - static final int BIDI_CARET_WIDTH = 3; - static final int DEFAULT_WIDTH = 64; - static final int DEFAULT_HEIGHT = 64; - static final int V_SCROLL_RATE = 50; - static final int H_SCROLL_RATE = 10; - - static final int ExtendedModify = 3000; - static final int LineGetBackground = 3001; - static final int LineGetStyle = 3002; - static final int TextChanging = 3003; - static final int TextSet = 3004; - static final int VerifyKey = 3005; - static final int TextChanged = 3006; - static final int LineGetSegments = 3007; - - Color selectionBackground; // selection background color - Color selectionForeground; // selection foreground color - StyledTextContent logicalContent; // native content (default or user specified) - StyledTextContent content; // line wrapping content, same as logicalContent if word wrap is off - DisplayRenderer renderer; - Listener listener; - TextChangeListener textChangeListener; // listener for TextChanging, TextChanged and TextSet events from StyledTextContent - DefaultLineStyler defaultLineStyler;// used for setStyles API when no LineStyleListener is registered - LineCache lineCache; - boolean userLineStyle = false; // true=widget is using a user defined line style listener for line styles. false=widget is using the default line styler to store line styles - boolean userLineBackground = false; // true=widget is using a user defined line background listener for line backgrounds. false=widget is using the default line styler to store line backgrounds - int verticalScrollOffset = 0; // pixel based - int horizontalScrollOffset = 0; // pixel based - int topIndex = 0; // top visible line - int lastPaintTopIndex = -1; - int topOffset = 0; // offset of first character in top line - int clientAreaHeight = 0; // the client area height. Needed to calculate content width for new - // visible lines during Resize callback - int clientAreaWidth = 0; // the client area width. Needed during Resize callback to determine - // if line wrap needs to be recalculated - int lineHeight; // line height=font height - int tabLength = 4; // number of characters in a tab - int leftMargin; - int topMargin; - int rightMargin; - int bottomMargin; - Cursor ibeamCursor; - int columnX; // keep track of the horizontal caret position - // when changing lines/pages. Fixes bug 5935 - int caretOffset = 0; - Point selection = new Point(0, 0); // x and y are start and end caret offsets of selection - Point clipboardSelection; // x and y are start and end caret offsets of previous selection - int selectionAnchor; // position of selection anchor. 0 based offset from beginning of text - Point doubleClickSelection; // selection after last mouse double click - boolean editable = true; - boolean wordWrap = false; - boolean doubleClickEnabled = true; // see getDoubleClickEnabled - boolean overwrite = false; // insert/overwrite edit mode - int textLimit = -1; // limits the number of characters the user can type in the widget. Unlimited by default. - Hashtable keyActionMap = new Hashtable(); - Color background = null; // workaround for bug 4791 - Color foreground = null; // - Clipboard clipboard; - boolean mouseDown = false; - boolean mouseDoubleClick = false; // true=a double click ocurred. Don't do mouse swipe selection. - int autoScrollDirection = SWT.NULL; // the direction of autoscrolling (up, down, right, left) - int autoScrollDistance = 0; - int lastTextChangeStart; // cache data of the - int lastTextChangeNewLineCount; // last text changing - int lastTextChangeNewCharCount; // event for use in the - int lastTextChangeReplaceLineCount; // text changed handler - int lastTextChangeReplaceCharCount; - boolean isMirrored; - boolean bidiColoring = false; // apply the BIDI algorithm on text segments of the same color - Image leftCaretBitmap = null; - Image rightCaretBitmap = null; - int caretDirection = SWT.NULL; - boolean advancing = true; - Caret defaultCaret = null; - boolean updateCaretDirection = true; - - final static boolean IS_CARBON, IS_GTK, IS_MOTIF; - final static boolean DOUBLE_BUFFER; - static { - String platform = SWT.getPlatform(); - IS_CARBON = "carbon".equals(platform); - IS_GTK = "gtk".equals(platform); - IS_MOTIF = "motif".equals(platform); - DOUBLE_BUFFER = !IS_CARBON; - } - - /** - * The Printing class implements printing of a range of text. - * An instance of Printing is returned in the - * StyledText#print(Printer) API. The run() method may be - * invoked from any thread. - */ - static class Printing implements Runnable { - final static int LEFT = 0; // left aligned header/footer segment - final static int CENTER = 1; // centered header/footer segment - final static int RIGHT = 2; // right aligned header/footer segment - - StyledText parent; - Printer printer; - PrintRenderer renderer; - StyledTextPrintOptions printOptions; - StyledTextContent printerContent; // copy of the widget content - Rectangle clientArea; // client area to print on - Font printerFont; - FontData displayFontData; - Hashtable printerColors; // printer color cache for line backgrounds and style - Hashtable lineBackgrounds = new Hashtable(); // cached line backgrounds - Hashtable lineStyles = new Hashtable(); // cached line styles - Hashtable bidiSegments = new Hashtable(); // cached bidi segments when running on a bidi platform - GC gc; // printer GC - int pageWidth; // width of a printer page in pixels - int startPage; // first page to print - int endPage; // last page to print - int pageSize; // number of lines on a page - int startLine; // first (wrapped) line to print - int endLine; // last (wrapped) line to print - boolean singleLine; // widget single line mode - Point selection = null; // selected text - boolean mirrored; //indicates the printing gc should be mirrored - - /** - * Creates an instance of Printing. - * Copies the widget content and rendering data that needs - * to be requested from listeners. - *

                                - * @param parent StyledText widget to print. - * @param printer printer device to print on. - * @param printOptions print options - */ - Printing(StyledText parent, Printer printer, StyledTextPrintOptions printOptions) { - PrinterData data = printer.getPrinterData(); - - this.parent = parent; - this.printer = printer; - this.printOptions = printOptions; - this.mirrored = (parent.getStyle() & SWT.MIRRORED) != 0; - singleLine = parent.isSingleLine(); - startPage = 1; - endPage = Integer.MAX_VALUE; - if (data.scope == PrinterData.PAGE_RANGE) { - startPage = data.startPage; - endPage = data.endPage; - if (endPage < startPage) { - int temp = endPage; - endPage = startPage; - startPage = temp; - } - } - else - if (data.scope == PrinterData.SELECTION) { - selection = parent.getSelectionRange(); - } - - displayFontData = parent.getFont().getFontData()[0]; - copyContent(parent.getContent()); - cacheLineData(printerContent); - } - /** - * Caches the bidi segments of the given line. - *

                                - * @param lineOffset offset of the line to cache bidi segments for. - * Relative to the start of the document. - * @param line line to cache bidi segments for. - */ - void cacheBidiSegments(int lineOffset, String line) { - int[] segments = parent.getBidiSegments(lineOffset, line); - - if (segments != null) { - bidiSegments.put(new Integer(lineOffset), segments); - } - } - /** - * Caches the line background color of the given line. - *

                                - * @param lineOffset offset of the line to cache the background - * color for. Relative to the start of the document. - * @param line line to cache the background color for - */ - void cacheLineBackground(int lineOffset, String line) { - StyledTextEvent event = parent.getLineBackgroundData(lineOffset, line); - - if (event != null) { - lineBackgrounds.put(new Integer(lineOffset), event); - } - } - /** - * Caches all line data that needs to be requested from a listener. - *

                                - * @param printerContent StyledTextContent to request - * line data for. - */ - void cacheLineData(StyledTextContent printerContent) { - for (int i = 0; i < printerContent.getLineCount(); i++) { - int lineOffset = printerContent.getOffsetAtLine(i); - String line = printerContent.getLine(i); - - if (printOptions.printLineBackground) { - cacheLineBackground(lineOffset, line); - } - if (printOptions.printTextBackground || - printOptions.printTextForeground || - printOptions.printTextFontStyle) { - cacheLineStyle(lineOffset, line); - } - if (parent.isBidi()) { - cacheBidiSegments(lineOffset, line); - } - } - } - /** - * Caches all line styles of the given line. - *

                                - * @param lineOffset offset of the line to cache the styles for. - * Relative to the start of the document. - * @param line line to cache the styles for. - */ - void cacheLineStyle(int lineOffset, String line) { - StyledTextEvent event = parent.getLineStyleData(lineOffset, line); - - if (event != null) { - StyleRange[] styles = event.styles; - for (int i = 0; i < styles.length; i++) { - StyleRange styleCopy = null; - if (!printOptions.printTextBackground && styles[i].background != null) { - styleCopy = (StyleRange) styles[i].clone(); - styleCopy.background = null; - } - if (!printOptions.printTextForeground && styles[i].foreground != null) { - if (styleCopy == null) { - styleCopy = (StyleRange) styles[i].clone(); - } - styleCopy.foreground = null; - } - if (!printOptions.printTextFontStyle && styles[i].fontStyle != SWT.NORMAL) { - if (styleCopy == null) { - styleCopy = (StyleRange) styles[i].clone(); - } - styleCopy.fontStyle = SWT.NORMAL; - } - if (styleCopy != null) { - styles[i] = styleCopy; - } - } - lineStyles.put(new Integer(lineOffset), event); - } - } - /** - * Copies the text of the specified StyledTextContent. - *

                                - * @param original the StyledTextContent to copy. - */ - void copyContent(StyledTextContent original) { - int insertOffset = 0; - - printerContent = new DefaultContent(); - for (int i = 0; i < original.getLineCount(); i++) { - int insertEndOffset; - if (i < original.getLineCount() - 1) { - insertEndOffset = original.getOffsetAtLine(i + 1); - } - else { - insertEndOffset = original.getCharCount(); - } - printerContent.replaceTextRange(insertOffset, 0, original.getTextRange(insertOffset, insertEndOffset - insertOffset)); - insertOffset = insertEndOffset; - } - } - /** - * Replaces all display colors in the cached line backgrounds and - * line styles with printer colors. - */ - void createPrinterColors() { - Enumeration values = lineBackgrounds.elements(); - printerColors = new Hashtable(); - while (values.hasMoreElements()) { - StyledTextEvent event = (StyledTextEvent) values.nextElement(); - event.lineBackground = getPrinterColor(event.lineBackground); - } - - values = lineStyles.elements(); - while (values.hasMoreElements()) { - StyledTextEvent event = (StyledTextEvent) values.nextElement(); - for (int i = 0; i < event.styles.length; i++) { - StyleRange style = event.styles[i]; - Color printerBackground = getPrinterColor(style.background); - Color printerForeground = getPrinterColor(style.foreground); - - if (printerBackground != style.background || - printerForeground != style.foreground) { - style = (StyleRange) style.clone(); - style.background = printerBackground; - style.foreground = printerForeground; - event.styles[i] = style; - } - } - } - } - /** - * Disposes of the resources and the PrintRenderer. - */ - void dispose() { - if (printerColors != null) { - Enumeration colors = printerColors.elements(); - - while (colors.hasMoreElements()) { - Color color = (Color) colors.nextElement(); - color.dispose(); - } - printerColors = null; - } - if (gc != null) { - gc.dispose(); - gc = null; - } - if (printerFont != null) { - printerFont.dispose(); - printerFont = null; - } - if (renderer != null) { - renderer.dispose(); - renderer = null; - } - } - /** - * Finish printing the indicated page. - * - * @param page page that was printed - */ - void endPage(int page) { - printDecoration(page, false); - printer.endPage(); - } - /** - * Creates a PrintRenderer and calculate the line range - * to print. - */ - void initializeRenderer() { - Rectangle trim = printer.computeTrim(0, 0, 0, 0); - Point dpi = printer.getDPI(); - - printerFont = new Font(printer, displayFontData.getName(), displayFontData.getHeight(), SWT.NORMAL); - clientArea = printer.getClientArea(); - pageWidth = clientArea.width; - // one inch margin around text - clientArea.x = dpi.x + trim.x; - clientArea.y = dpi.y + trim.y; - clientArea.width -= (clientArea.x + trim.width); - clientArea.height -= (clientArea.y + trim.height); - - // make the orientation of the printer gc match the control - int style = mirrored ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; - gc = new GC(printer, style); - gc.setFont(printerFont); - renderer = new PrintRenderer( - printer, printerFont, gc, printerContent, - lineBackgrounds, lineStyles, bidiSegments, - parent.tabLength, clientArea); - if (printOptions.header != null) { - int lineHeight = renderer.getLineHeight(); - clientArea.y += lineHeight * 2; - clientArea.height -= lineHeight * 2; - } - if (printOptions.footer != null) { - clientArea.height -= renderer.getLineHeight() * 2; - } - pageSize = clientArea.height / renderer.getLineHeight(); - StyledTextContent content = renderer.getContent(); - startLine = 0; - if (singleLine) { - endLine = 0; - } - else { - endLine = content.getLineCount() - 1; - } - PrinterData data = printer.getPrinterData(); - if (data.scope == PrinterData.PAGE_RANGE) { - startLine = (startPage - 1) * pageSize; - } - else - if (data.scope == PrinterData.SELECTION) { - startLine = content.getLineAtOffset(selection.x); - if (selection.y > 0) { - endLine = content.getLineAtOffset(selection.x + selection.y - 1); - } - else { - endLine = startLine - 1; - } - } - } - /** - * Returns the printer color for the given display color. - *

                                - * @param color display color - * @return color create on the printer with the same RGB values - * as the display color. - */ - Color getPrinterColor(Color color) { - Color printerColor = null; - - if (color != null) { - printerColor = (Color) printerColors.get(color); - if (printerColor == null) { - printerColor = new Color(printer, color.getRGB()); - printerColors.put(color, printerColor); - } - } - return printerColor; - } - /** - * Prints the lines in the specified page range. - */ - void print() { - StyledTextContent content = renderer.getContent(); - Color background = gc.getBackground(); - Color foreground = gc.getForeground(); - int lineHeight = renderer.getLineHeight(); - int paintY = clientArea.y; - int page = startPage; - - for (int i = startLine; i <= endLine && page <= endPage; i++, paintY += lineHeight) { - String line = content.getLine(i); - - if (paintY == clientArea.y) { - startPage(page); - } - renderer.drawLine( - line, i, paintY, gc, background, foreground, true); - if (paintY + lineHeight * 2 > clientArea.y + clientArea.height) { - // close full page - endPage(page); - paintY = clientArea.y - lineHeight; - page++; - } - } - if (paintY > clientArea.y) { - // close partial page - endPage(page); - } - } - /** - * Print header or footer decorations. - * - * @param page page number to print, if specified in the StyledTextPrintOptions header or footer. - * @param header true = print the header, false = print the footer - */ - void printDecoration(int page, boolean header) { - int lastSegmentIndex = 0; - final int SegmentCount = 3; - String text; - - if (header) { - text = printOptions.header; - } - else { - text = printOptions.footer; - } - if (text == null) { - return; - } - for (int i = 0; i < SegmentCount; i++) { - int segmentIndex = text.indexOf(StyledTextPrintOptions.SEPARATOR, lastSegmentIndex); - String segment; - - if (segmentIndex == -1) { - segment = text.substring(lastSegmentIndex); - printDecorationSegment(segment, i, page, header); - break; - } - else { - segment = text.substring(lastSegmentIndex, segmentIndex); - printDecorationSegment(segment, i, page, header); - lastSegmentIndex = segmentIndex + StyledTextPrintOptions.SEPARATOR.length(); - } - } - } - /** - * Print one segment of a header or footer decoration. - * Headers and footers have three different segments. - * One each for left aligned, centered, and right aligned text. - * - * @param segment decoration segment to print - * @param alignment alignment of the segment. 0=left, 1=center, 2=right - * @param page page number to print, if specified in the decoration segment. - * @param header true = print the header, false = print the footer - */ - void printDecorationSegment(String segment, int alignment, int page, boolean header) { - int pageIndex = segment.indexOf(StyledTextPrintOptions.PAGE_TAG); - - if (pageIndex != -1) { - final int PageTagLength = StyledTextPrintOptions.PAGE_TAG.length(); - StringBuffer buffer = new StringBuffer(segment.substring (0, pageIndex)); - buffer.append (page); - buffer.append (segment.substring(pageIndex + PageTagLength)); - segment = buffer.toString(); - } - if (segment.length() > 0) { - int segmentWidth; - int drawX = 0; - int drawY = 0; - TextLayout layout = new TextLayout(printer); - layout.setText(segment); - layout.setFont(printerFont); - segmentWidth = layout.getLineBounds(0).width; - if (header) { - drawY = clientArea.y - renderer.getLineHeight() * 2; - } - else { - drawY = clientArea.y + clientArea.height + renderer.getLineHeight(); - } - if (alignment == LEFT) { - drawX = clientArea.x; - } - else - if (alignment == CENTER) { - drawX = (pageWidth - segmentWidth) / 2; - } - else - if (alignment == RIGHT) { - drawX = clientArea.x + clientArea.width - segmentWidth; - } - layout.draw(gc, drawX, drawY); - layout.dispose(); - } - } - /** - * Starts a print job and prints the pages specified in the constructor. - */ - public void run() { - String jobName = printOptions.jobName; - - if (jobName == null) { - jobName = "Printing"; - } - if (printer.startJob(jobName)) { - createPrinterColors(); - initializeRenderer(); - print(); - dispose(); - printer.endJob(); - } - } - /** - * Start printing a new page. - * - * @param page page number to be started - */ - void startPage(int page) { - printer.startPage(); - printDecoration(page, true); - } - } - /** - * The RTFWriter class is used to write widget content as - * rich text. The implementation complies with the RTF specification - * version 1.5. - *

                                - * toString() is guaranteed to return a valid RTF string only after - * close() has been called. - *

                                - *

                                - * Whole and partial lines and line breaks can be written. Lines will be - * formatted using the styles queried from the LineStyleListener, if - * set, or those set directly in the widget. All styles are applied to - * the RTF stream like they are rendered by the widget. In addition, the - * widget font name and size is used for the whole text. - *

                                - */ - class RTFWriter extends TextWriter { - static final int DEFAULT_FOREGROUND = 0; - static final int DEFAULT_BACKGROUND = 1; - Vector colorTable = new Vector(); - boolean WriteUnicode; - - /** - * Creates a RTF writer that writes content starting at offset "start" - * in the document. start and lengthcan be set to specify partial - * lines. - *

                                - * - * @param start start offset of content to write, 0 based from - * beginning of document - * @param length length of content to write - */ - public RTFWriter(int start, int length) { - super(start, length); - colorTable.addElement(getForeground()); - colorTable.addElement(getBackground()); - setUnicode(); - } - /** - * Closes the RTF writer. Once closed no more content can be written. - * NOTE: toString() does not return a valid RTF string until - * close() has been called. - */ - public void close() { - if (!isClosed()) { - writeHeader(); - write("\n}}\0"); - super.close(); - } - } - /** - * Returns the index of the specified color in the RTF color table. - *

                                - * - * @param color the color - * @param defaultIndex return value if color is null - * @return the index of the specified color in the RTF color table - * or "defaultIndex" if "color" is null. - */ - int getColorIndex(Color color, int defaultIndex) { - int index; - - if (color == null) { - index = defaultIndex; - } - else { - index = colorTable.indexOf(color); - if (index == -1) { - index = colorTable.size(); - colorTable.addElement(color); - } - } - return index; - } - /** - * Determines if Unicode RTF should be written. - * Don't write Unicode RTF on Windows 95/98/ME or NT. - */ - void setUnicode() { - final String Win95 = "windows 95"; - final String Win98 = "windows 98"; - final String WinME = "windows me"; - final String WinNT = "windows nt"; - String osName = System.getProperty("os.name").toLowerCase(); - String osVersion = System.getProperty("os.version"); - int majorVersion = 0; - - if (osName.startsWith(WinNT) && osVersion != null) { - int majorIndex = osVersion.indexOf('.'); - if (majorIndex != -1) { - osVersion = osVersion.substring(0, majorIndex); - try { - majorVersion = Integer.parseInt(osVersion); - } - catch (NumberFormatException exception) { - // ignore exception. version number remains unknown. - // will write without Unicode - } - } - } - if (!osName.startsWith(Win95) && - !osName.startsWith(Win98) && - !osName.startsWith(WinME) && - (!osName.startsWith(WinNT) || majorVersion > 4)) { - WriteUnicode = true; - } - else { - WriteUnicode = false; - } - } - /** - * Appends the specified segment of "string" to the RTF data. - * Copy from start up to, but excluding, end. - *

                                - * - * @param string string to copy a segment from. Must not contain - * line breaks. Line breaks should be written using writeLineDelimiter() - * @param start start offset of segment. 0 based. - * @param end end offset of segment - */ - void write(String string, int start, int end) { - for (int index = start; index < end; index++) { - char ch = string.charAt(index); - if (ch > 0xFF && WriteUnicode) { - // write the sub string from the last escaped character - // to the current one. Fixes bug 21698. - if (index > start) { - write(string.substring(start, index)); - } - write("\\u"); - write(Integer.toString((short) ch)); - write(' '); // control word delimiter - start = index + 1; - } - else - if (ch == '}' || ch == '{' || ch == '\\') { - // write the sub string from the last escaped character - // to the current one. Fixes bug 21698. - if (index > start) { - write(string.substring(start, index)); - } - write('\\'); - write(ch); - start = index + 1; - } - } - // write from the last escaped character to the end. - // Fixes bug 21698. - if (start < end) { - write(string.substring(start, end)); - } - } - /** - * Writes the RTF header including font table and color table. - */ - void writeHeader() { - StringBuffer header = new StringBuffer(); - FontData fontData = getFont().getFontData()[0]; - header.append("{\\rtf1\\ansi"); - // specify code page, necessary for copy to work in bidi - // systems that don't support Unicode RTF. - String cpg = System.getProperty("file.encoding").toLowerCase(); - if (cpg.startsWith("cp") || cpg.startsWith("ms")) { - cpg = cpg.substring(2, cpg.length()); - header.append("\\ansicpg"); - header.append(cpg); - } - header.append("\\uc0\\deff0{\\fonttbl{\\f0\\fnil "); - header.append(fontData.getName()); - header.append(";}}\n{\\colortbl"); - for (int i = 0; i < colorTable.size(); i++) { - Color color = (Color) colorTable.elementAt(i); - header.append("\\red"); - header.append(color.getRed()); - header.append("\\green"); - header.append(color.getGreen()); - header.append("\\blue"); - header.append(color.getBlue()); - header.append(";"); - } - // some RTF readers ignore the deff0 font tag. Explicitly - // set the font for the whole document to work around this. - header.append("}\n{\\f0\\fs"); - // font size is specified in half points - header.append(fontData.getHeight() * 2); - header.append(" "); - write(header.toString(), 0); - } - /** - * Appends the specified line text to the RTF data. Lines will be formatted - * using the styles queried from the LineStyleListener, if set, or those set - * directly in the widget. - *

                                - * - * @param line line text to write as RTF. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLine(String line, int lineOffset) { - StyleRange[] styles = new StyleRange[0]; - Color lineBackground = null; - StyledTextEvent event; - - if (isClosed()) { - SWT.error(SWT.ERROR_IO); - } - event = renderer.getLineStyleData(lineOffset, line); - if (event != null) { - styles = event.styles; - } - event = renderer.getLineBackgroundData(lineOffset, line); - if (event != null) { - lineBackground = event.lineBackground; - } - if (lineBackground == null) { - lineBackground = getBackground(); - } - writeStyledLine(line, lineOffset, styles, lineBackground); - } - /** - * Appends the specified line delmimiter to the RTF data. - *

                                - * - * @param lineDelimiter line delimiter to write as RTF. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLineDelimiter(String lineDelimiter) { - if (isClosed()) { - SWT.error(SWT.ERROR_IO); - } - write(lineDelimiter, 0, lineDelimiter.length()); - write("\\par "); - } - /** - * Appends the specified line text to the RTF data. - * Use the colors and font styles specified in "styles" and "lineBackground". - * Formatting is written to reflect the text rendering by the text widget. - * Style background colors take precedence over the line background color. - * Background colors are written using the \highlight tag (vs. the \cb tag). - *

                                - * - * @param line line text to write as RTF. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @param styles styles to use for formatting. Must not be null. - * @param lineBackground line background color to use for formatting. - * May be null. - */ - void writeStyledLine(String line, int lineOffset, StyleRange[] styles, Color lineBackground) { - int lineLength = line.length(); - int lineIndex; - int copyEnd; - int startOffset = getStart(); - int endOffset = startOffset + super.getCharCount(); - int lineEndOffset = Math.min(lineLength, endOffset - lineOffset); - int writeOffset = startOffset - lineOffset; - - if (writeOffset >= line.length()) { - return; // whole line is outside write range - } - else - if (writeOffset > 0) { - lineIndex = writeOffset; // line starts before RTF write start - } - else { - lineIndex = 0; - } - if (lineBackground != null) { - write("{\\highlight"); - write(getColorIndex(lineBackground, DEFAULT_BACKGROUND)); - write(" "); - } - for (int i = 0; i < styles.length; i++) { - StyleRange style = styles[i]; - int start = style.start - lineOffset; - int end = start + style.length; - int colorIndex; - // skip over partial first line - if (end < writeOffset) { - continue; - } - // style starts beyond line end or RTF write end - if (start >= lineEndOffset) { - break; - } - // write any unstyled text - if (lineIndex < start) { - // copy to start of style - // style starting betond end of write range or end of line - // is guarded against above. - write(line, lineIndex, start); - lineIndex = start; - } - // write styled text - colorIndex = getColorIndex(style.background, DEFAULT_BACKGROUND); - write("{\\cf"); - write(getColorIndex(style.foreground, DEFAULT_FOREGROUND)); - if (colorIndex != DEFAULT_BACKGROUND) { - write("\\highlight"); - write(colorIndex); - } - if ((style.fontStyle & SWT.BOLD) != 0) { - write("\\b"); - } - if ((style.fontStyle & SWT.ITALIC) != 0) { - write("\\i"); - } - if (style.underline) { - write("\\ul"); - } - if (style.strikeout) { - write("\\strike"); - } - write(" "); - // copy to end of style or end of write range or end of line - copyEnd = Math.min(end, lineEndOffset); - // guard against invalid styles and let style processing continue - copyEnd = Math.max(copyEnd, lineIndex); - write(line, lineIndex, copyEnd); - if ((style.fontStyle & SWT.BOLD) != 0) { - write("\\b0"); - } - if ((style.fontStyle & SWT.ITALIC) != 0) { - write("\\i0"); - } - if (style.underline) { - write("\\ul0"); - } - if (style.strikeout) { - write("\\strike0"); - } - write("}"); - lineIndex = copyEnd; - } - // write unstyled text at the end of the line - if (lineIndex < lineEndOffset) { - write(line, lineIndex, lineEndOffset); - } - if (lineBackground != null) { - write("}"); - } - } - } - /** - * The TextWriter class is used to write widget content to - * a string. Whole and partial lines and line breaks can be written. To write - * partial lines, specify the start and length of the desired segment - * during object creation. - *

                                - * NOTE: toString() is guaranteed to return a valid string only after close() - * has been called. - */ - class TextWriter { - private StringBuffer buffer; - private int startOffset; // offset of first character that will be written - private int endOffset; // offset of last character that will be written. - // 0 based from the beginning of the widget text. - private boolean isClosed = false; - - /** - * Creates a writer that writes content starting at offset "start" - * in the document. start and length can be set to specify partial lines. - *

                                - * - * @param start start offset of content to write, 0 based from beginning of document - * @param length length of content to write - */ - public TextWriter(int start, int length) { - buffer = new StringBuffer(length); - startOffset = start; - endOffset = start + length; - } - /** - * Closes the writer. Once closed no more content can be written. - * NOTE: toString() is not guaranteed to return a valid string unless - * the writer is closed. - */ - public void close() { - if (!isClosed) { - isClosed = true; - } - } - /** - * Returns the number of characters to write. - * @return the integer number of characters to write - */ - public int getCharCount() { - return endOffset - startOffset; - } - /** - * Returns the offset where writing starts. 0 based from the start of - * the widget text. Used to write partial lines. - * @return the integer offset where writing starts - */ - public int getStart() { - return startOffset; - } - /** - * Returns whether the writer is closed. - * @return a boolean specifying whether or not the writer is closed - */ - public boolean isClosed() { - return isClosed; - } - /** - * Returns the string. close() must be called before toString() - * is guaranteed to return a valid string. - * - * @return the string - */ - public String toString() { - return buffer.toString(); - } - /** - * Appends the given string to the data. - */ - void write(String string) { - buffer.append(string); - } - /** - * Inserts the given string to the data at the specified offset. - * Do nothing if "offset" is < 0 or > getCharCount() - *

                                - * - * @param string text to insert - * @param offset offset in the existing data to insert "string" at. - */ - void write(String string, int offset) { - if (offset < 0 || offset > buffer.length()) { - return; - } - buffer.insert(offset, string); - } - /** - * Appends the given int to the data. - */ - void write(int i) { - buffer.append(i); - } - /** - * Appends the given character to the data. - */ - void write(char i) { - buffer.append(i); - } - /** - * Appends the specified line text to the data. - *

                                - * - * @param line line text to write. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLine(String line, int lineOffset) { - int lineLength = line.length(); - int lineIndex; - int copyEnd; - int writeOffset = startOffset - lineOffset; - - if (isClosed) { - SWT.error(SWT.ERROR_IO); - } - if (writeOffset >= lineLength) { - return; // whole line is outside write range - } - else - if (writeOffset > 0) { - lineIndex = writeOffset; // line starts before write start - } - else { - lineIndex = 0; - } - copyEnd = Math.min(lineLength, endOffset - lineOffset); - if (lineIndex < copyEnd) { - write(line.substring(lineIndex, copyEnd)); - } - } - /** - * Appends the specified line delmimiter to the data. - *

                                - * - * @param lineDelimiter line delimiter to write - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLineDelimiter(String lineDelimiter) { - if (isClosed) { - SWT.error(SWT.ERROR_IO); - } - write(lineDelimiter); - } - } - /** - * LineCache provides an interface to calculate and invalidate - * line based data. - * Implementors need to return a line width in getWidth. - */ - interface LineCache { - /** - * Calculates the lines in the specified range. - *

                                - * - * @param startLine first line to calculate - * @param lineCount number of lines to calculate - */ - public void calculate(int startLine, int lineCount); - /** - * Returns a width that will be used by the StyledText - * widget to size a horizontal scroll bar. - *

                                - * - * @return the line width - */ - public int getWidth(); - /** - * Resets the lines in the specified range. - * This method is called in StyledText.redraw() - * and allows implementors to call redraw themselves during reset. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth); - /** - * Resets the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth); - /** - * Called when a text change occurred. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount); - } - /** - * Keeps track of line widths and the longest line in the - * StyledText document. - * Line widths are calculated when requested by a call to - * calculate and cached until reset by a call - * to redrawReset or reset. - */ - class ContentWidthCache implements LineCache { - StyledText parent; // parent widget, used to create a GC for line measuring - int[] lineWidth; // width in pixel of each line in the document, -1 for unknown width - StyledTextContent content; // content to use for line width calculation - int lineCount; // number of lines in lineWidth array - int maxWidth; // maximum line width of all measured lines - int maxWidthLineIndex; // index of the widest line - - /** - * Creates a new ContentWidthCache and allocates space - * for the given number of lines. - *

                                - * - * @param parent the StyledText widget used to create a GC for - * line measuring - * @param content a StyledTextContent containing the initial number - * of lines to allocate space for - */ - public ContentWidthCache(StyledText parent, StyledTextContent content) { - this.parent = parent; - this.content = content; - this.lineCount = content.getLineCount(); - lineWidth = new int[lineCount]; - reset(0, lineCount, false); - } - /** - * Calculates the width of each line in the given range if it has - * not been calculated yet. - * If any line in the given range is wider than the currently widest - * line, the maximum line width is updated, - *

                                - * - * @param startLine first line to calculate the line width of - * @param lineCount number of lines to calculate the line width for - */ - public void calculate(int startLine, int lineCount) { - int caretWidth = 0; - int endLine = startLine + lineCount; - - if (startLine < 0 || endLine > lineWidth.length) { - return; - } - caretWidth = getCaretWidth(); - for (int i = startLine; i < endLine; i++) { - if (lineWidth[i] == -1) { - String line = content.getLine(i); - int lineOffset = content.getOffsetAtLine(i); - lineWidth[i] = contentWidth(line, lineOffset) + caretWidth; - } - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - /** - * Calculates the width of the visible lines in the specified - * range. - *

                                - * - * @param startLine the first changed line - * @param newLineCount the number of inserted lines - */ - void calculateVisible(int startLine, int newLineCount) { - int topIndex = parent.getTopIndex(); - int bottomLine = Math.min(getPartialBottomIndex(), startLine + newLineCount); - - startLine = Math.max(startLine, topIndex); - calculate(startLine, bottomLine - startLine + 1); - } - /** - * Measures the width of the given line. - *

                                - * - * @param line the line to measure - * @param lineOffset start offset of the line to measure, relative - * to the start of the document - * @return the width of the given line - */ - int contentWidth(String line, int lineOffset) { - TextLayout layout = renderer.getTextLayout(line, lineOffset); - Rectangle rect = layout.getLineBounds(0); - renderer.disposeTextLayout(layout); - return rect.x + rect.width + leftMargin + rightMargin; - } - /** - * Grows the lineWidth array to accomodate new line width - * information. - *

                                - * - * @param numLines the number of elements to increase the array by - */ - void expandLines(int numLines) { - int size = lineWidth.length; - if (size - lineCount >= numLines) { - return; - } - int[] newLines = new int[Math.max(size * 2, size + numLines)]; - System.arraycopy(lineWidth, 0, newLines, 0, size); - lineWidth = newLines; - reset(size, lineWidth.length - size, false); - } - /** - * Returns the width of the longest measured line. - *

                                - * - * @return the width of the longest measured line. - */ - public int getWidth() { - return maxWidth; - } - /** - * Updates the line width array to reflect inserted or deleted lines. - *

                                - * - * @param startLine the starting line of the change that took place - * @param delta the number of lines in the change, > 0 indicates lines inserted, - * < 0 indicates lines deleted - */ - void linesChanged(int startLine, int delta) { - boolean inserting = delta > 0; - - if (delta == 0) { - return; - } - if (inserting) { - // shift the lines down to make room for new lines - expandLines(delta); - for (int i = lineCount - 1; i >= startLine; i--) { - lineWidth[i + delta] = lineWidth[i]; - } - // reset the new lines - for (int i = startLine + 1; i <= startLine + delta && i < lineWidth.length; i++) { - lineWidth[i] = -1; - } - // have new lines been inserted above the longest line? - if (maxWidthLineIndex >= startLine) { - maxWidthLineIndex += delta; - } - } - else { - // shift up the lines - for (int i = startLine - delta; i < lineCount; i++) { - lineWidth[i+delta] = lineWidth[i]; - } - // has the longest line been removed? - if (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine - delta) { - maxWidth = 0; - maxWidthLineIndex = -1; - } - else - if (maxWidthLineIndex >= startLine - delta) { - maxWidthLineIndex += delta; - } - } - lineCount += delta; - } - /** - * Resets the line width of the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=if the widest line is being - * reset the maximum width of all remaining cached lines is - * calculated. false=the maximum width is set to 0 if the - * widest line is being reset. - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) { - reset(startLine, lineCount, calculateMaxWidth); - } - /** - * Resets the line width of the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=if the widest line is being - * reset the maximum width of all remaining cached lines is - * calculated. false=the maximum width is set to 0 if the - * widest line is being reset. - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth) { - int endLine = startLine + lineCount; - - if (startLine < 0 || endLine > lineWidth.length) { - return; - } - for (int i = startLine; i < endLine; i++) { - lineWidth[i] = -1; - } - // if the longest line is one of the reset lines, the maximum line - // width is no longer valid - if (maxWidthLineIndex >= startLine && maxWidthLineIndex < endLine) { - maxWidth = 0; - maxWidthLineIndex = -1; - if (calculateMaxWidth) { - for (int i = 0; i < lineCount; i++) { - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - } - } - /** - * Updates the line width array to reflect a text change. - * Lines affected by the text change will be reset. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) { - int startLine = parent.getLineAtOffset(startOffset); - boolean removedMaxLine = (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine + replaceLineCount); - // entire text deleted? - if (startLine == 0 && replaceLineCount == lineCount) { - lineCount = newLineCount; - lineWidth = new int[lineCount]; - reset(0, lineCount, false); - maxWidth = 0; - } - else { - linesChanged(startLine, -replaceLineCount); - linesChanged(startLine, newLineCount); - lineWidth[startLine] = -1; - } - // only calculate the visible lines. otherwise measurements of changed lines - // outside the visible area may subsequently change again without the - // lines ever being visible. - calculateVisible(startLine, newLineCount); - // maxWidthLineIndex will be -1 (i.e., unknown line width) if the widget has - // not been visible yet and the changed lines have therefore not been - // calculated above. - if (removedMaxLine || - (maxWidthLineIndex != -1 && lineWidth[maxWidthLineIndex] < maxWidth)) { - // longest line has been removed or changed and is now shorter. - // need to recalculate maximum content width for all lines - maxWidth = 0; - for (int i = 0; i < lineCount; i++) { - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - } - } - /** - * Updates the line wrapping of the content. - * The line wrapping must always be in a consistent state. - * Therefore, when reset or redrawReset - * is called, the line wrapping is recalculated immediately - * instead of in calculate. - */ - class WordWrapCache implements LineCache { - StyledText parent; - WrappedContent visualContent; - - /** - * Creates a new WordWrapCache and calculates an initial - * line wrapping. - *

                                - * - * @param parent the StyledText widget to wrap content in. - * @param content the content provider that does the actual line wrapping. - */ - public WordWrapCache(StyledText parent, WrappedContent content) { - this.parent = parent; - visualContent = content; - visualContent.wrapLines(); - } - /** - * Do nothing. Lines are wrapped immediately after reset. - *

                                - * - * @param startLine first line to calculate - * @param lineCount number of lines to calculate - */ - public void calculate(int startLine, int lineCount) { - } - /** - * Returns the client area width. Lines are wrapped so there - * is no horizontal scroll bar. - *

                                - * - * @return the line width - */ - public int getWidth() { - return parent.getClientArea().width; - } - /** - * Wraps the lines in the specified range. - * This method is called in StyledText.redraw(). - * A redraw is therefore not necessary. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) { - if (lineCount == visualContent.getLineCount()) { - // do a full rewrap if all lines are reset - visualContent.wrapLines(); - } - else { - visualContent.reset(startLine, lineCount); - } - } - /** - * Rewraps the lines in the specified range and redraws - * the widget if the line wrapping has changed. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth) { - int itemCount = getPartialBottomIndex() - topIndex + 1; - int[] oldLineOffsets = new int[itemCount]; - - for (int i = 0; i < itemCount; i++) { - oldLineOffsets[i] = visualContent.getOffsetAtLine(i + topIndex); - } - redrawReset(startLine, lineCount, calculateMaxWidth); - // check for cases which will require a full redraw - if (getPartialBottomIndex() - topIndex + 1 != itemCount) { - // number of visible lines has changed - parent.internalRedraw(); - } - else { - for (int i = 0; i < itemCount; i++) { - if (visualContent.getOffsetAtLine(i + topIndex) != oldLineOffsets[i]) { - // wrapping of one of the visible lines has changed - parent.internalRedraw(); - break; - } - } - } - } - /** - * Passes the text change notification to the line wrap content. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) { - int startLine = visualContent.getLineAtOffset(startOffset); - visualContent.textChanged(startOffset, newLineCount, replaceLineCount, newCharCount, replaceCharCount); - - // if we are wrapping then it is possible for a deletion on the last - // line of text to shorten the total text length by a line. If this - // occurs then the startIndex must be adjusted such that a redraw will - // be performed if a visible region is affected. fixes bug 42947. - if (wordWrap) { - int lineCount = content.getLineCount(); - if (startLine >= lineCount) startLine = lineCount - 1; - } - if (startLine <= getPartialBottomIndex()) { - // only redraw if the text change affects text inside or above - // the visible lines. if it is below the visible lines it will - // not affect the word wrapping. fixes bug 14047. - parent.internalRedraw(); - } - } - } - -/** - * Constructs a new instance of this class given its parent - * and a style value describing its behavior and appearance. - *

                                - * The style value is either one of the style constants defined in - * class SWT which is applicable to instances of this - * class, or must be built by bitwise OR'ing together - * (that is, using the int "|" operator) two or more - * of those SWT style constants. The class description - * lists the style constants that are applicable to the class. - * Style bits are also inherited from superclasses. - *

                                - * - * @param parent a widget which will be the parent of the new instance (cannot be null) - * @param style the style of widget to construct - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT - if the parent is null
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
                                • - *
                                - * - * @see SWT#FULL_SELECTION - * @see SWT#MULTI - * @see SWT#READ_ONLY - * @see SWT#SINGLE - * @see SWT#WRAP - * @see #getStyle - */ -public StyledText(Composite parent, int style) { - super(parent, checkStyle(style | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND)); - // set the bg/fg in the OS to ensure that these are the same as StyledText, necessary - // for ensuring that the bg/fg the IME box uses is the same as what StyledText uses - super.setForeground(getForeground()); - super.setBackground(getBackground()); - Display display = getDisplay(); - isMirrored = (super.getStyle() & SWT.MIRRORED) != 0; - if ((style & SWT.READ_ONLY) != 0) { - setEditable(false); - } - leftMargin = rightMargin = isBidiCaret() ? BIDI_CARET_WIDTH - 1: 0; - if ((style & SWT.SINGLE) != 0 && (style & SWT.BORDER) != 0) { - leftMargin = topMargin = rightMargin = bottomMargin = 2; - } - clipboard = new Clipboard(display); - installDefaultContent(); - initializeRenderer(); - if ((style & SWT.WRAP) != 0) { - setWordWrap(true); - } - else { - lineCache = new ContentWidthCache(this, content); - } - defaultCaret = new Caret(this, SWT.NULL); - if (isBidiCaret()) { - createCaretBitmaps(); - Runnable runnable = new Runnable() { - public void run() { - int direction = BidiUtil.getKeyboardLanguage() == BidiUtil.KEYBOARD_BIDI ? SWT.RIGHT : SWT.LEFT; - if (direction == caretDirection) return; - if (getCaret() != defaultCaret) return; - int lineIndex = getCaretLine(); - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, lineIndex, offsetInLine); - setCaretLocation(newCaretX, getCaretLine(), direction); - } - }; - BidiUtil.addLanguageListener(handle, runnable); - } - setCaret(defaultCaret); - calculateScrollBars(); - createKeyBindings(); - ibeamCursor = new Cursor(display, SWT.CURSOR_IBEAM); - setCursor(ibeamCursor); - installListeners(); - installDefaultLineStyler(); - initializeAccessible(); -} -/** - * Adds an extended modify listener. An ExtendedModify event is sent by the - * widget when the widget text has changed. - *

                                - * - * @param extendedModifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { - checkWidget(); - if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - StyledTextListener typedListener = new StyledTextListener(extendedModifyListener); - addListener(ExtendedModify, typedListener); -} -/** - * Maps a key to an action. - * One action can be associated with N keys. However, each key can only - * have one action (key:action is N:1 relation). - *

                                - * - * @param key a key code defined in SWT.java or a character. - * Optionally ORd with a state mask. Preferred state masks are one or more of - * SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform - * differences. However, there may be cases where using the specific state masks - * (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense. - * @param action one of the predefined actions defined in ST.java. - * Use SWT.NULL to remove a key binding. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setKeyBinding(int key, int action) { - checkWidget(); - - int keyValue = key & SWT.KEY_MASK; - int modifierValue = key & SWT.MODIFIER_MASK; - char keyChar = (char)keyValue; - - if (Compatibility.isLetter(keyChar)) { - // make the keybinding case insensitive by adding it - // in its upper and lower case form - char ch = Character.toUpperCase(keyChar); - int newKey = ch | modifierValue; - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(newKey)); - } - else { - keyActionMap.put(new Integer(newKey), new Integer(action)); - } - ch = Character.toLowerCase(keyChar); - newKey = ch | modifierValue; - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(newKey)); - } - else { - keyActionMap.put(new Integer(newKey), new Integer(action)); - } - } else { - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(key)); - } - else { - keyActionMap.put(new Integer(key), new Integer(action)); - } - } - -} -/** - * Adds a bidirectional segment listener. A BidiSegmentEvent is sent - * whenever a line of text is measured or rendered. The user can - * specify text ranges in the line that should be treated as if they - * had a different direction than the surrounding text. - * This may be used when adjacent segments of right-to-left text should - * not be reordered relative to each other. - * E.g., Multiple Java string literals in a right-to-left language - * should generally remain in logical order to each other, that is, the - * way they are stored. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - * @see BidiSegmentEvent - * @since 2.0 - */ -public void addBidiSegmentListener(BidiSegmentListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetSegments, typedListener); -} -/** - * Adds a line background listener. A LineGetBackground event is sent by the - * widget to determine the background color for a line. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addLineBackgroundListener(LineBackgroundListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (!userLineBackground) { - removeLineBackgroundListener(defaultLineStyler); - defaultLineStyler.setLineBackground(0, logicalContent.getLineCount(), null); - userLineBackground = true; - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetBackground, typedListener); -} -/** - * Adds a line style listener. A LineGetStyle event is sent by the widget to - * determine the styles for a line. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addLineStyleListener(LineStyleListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (!userLineStyle) { - removeLineStyleListener(defaultLineStyler); - defaultLineStyler.setStyleRange(null); - userLineStyle = true; - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetStyle, typedListener); -} -/** - * Adds a modify listener. A Modify event is sent by the widget when the widget text - * has changed. - *

                                - * - * @param modifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addModifyListener(ModifyListener modifyListener) { - checkWidget(); - if (modifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(modifyListener); - addListener(SWT.Modify, typedListener); -} -/** - * Adds a selection listener. A Selection event is sent by the widget when the - * selection has changed. - *

                                - * When widgetSelected is called, the event x amd y fields contain - * the start and end caret indices of the selection. - * widgetDefaultSelected is not called for StyledTexts. - *

                                - * - * @param listener the listener - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addSelectionListener(SelectionListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(listener); - addListener(SWT.Selection, typedListener); -} -/** - * Adds a verify key listener. A VerifyKey event is sent by the widget when a key - * is pressed. The widget ignores the key press if the listener sets the doit field - * of the event to false. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addVerifyKeyListener(VerifyKeyListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(VerifyKey, typedListener); -} -/** - * Adds a verify listener. A Verify event is sent by the widget when the widget text - * is about to change. The listener can set the event text and the doit field to - * change the text that is set in the widget or to force the widget to ignore the - * text change. - *

                                - * - * @param verifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addVerifyListener(VerifyListener verifyListener) { - checkWidget(); - if (verifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(verifyListener); - addListener(SWT.Verify, typedListener); -} -/** - * Appends a string to the text at the end of the widget. - *

                                - * - * @param string the string to be appended - * @see #replaceTextRange(int,int,String) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void append(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - int lastChar = Math.max(getCharCount(), 0); - replaceTextRange(lastChar, 0, string); -} -/** - * Calculates the width of the widest visible line. - */ -void calculateContentWidth() { - lineCache = getLineCache(content); - lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1); -} -/** - * Calculates the scroll bars - */ -void calculateScrollBars() { - ScrollBar horizontalBar = getHorizontalBar(); - ScrollBar verticalBar = getVerticalBar(); - - setScrollBars(); - if (verticalBar != null) { - verticalBar.setIncrement(getVerticalIncrement()); - } - if (horizontalBar != null) { - horizontalBar.setIncrement(getHorizontalIncrement()); - } -} -/** - * Calculates the top index based on the current vertical scroll offset. - * The top index is the index of the topmost fully visible line or the - * topmost partially visible line if no line is fully visible. - * The top index starts at 0. - */ -void calculateTopIndex() { - int oldTopIndex = topIndex; - int verticalIncrement = getVerticalIncrement(); - int clientAreaHeight = getClientArea().height; - - if (verticalIncrement == 0) { - return; - } - topIndex = Compatibility.ceil(verticalScrollOffset, verticalIncrement); - // Set top index to partially visible top line if no line is fully - // visible but at least some of the widget client area is visible. - // Fixes bug 15088. - if (topIndex > 0) { - if (clientAreaHeight > 0) { - int bottomPixel = verticalScrollOffset + clientAreaHeight; - int fullLineTopPixel = topIndex * verticalIncrement; - int fullLineVisibleHeight = bottomPixel - fullLineTopPixel; - // set top index to partially visible line if no line fully fits in - // client area or if space is available but not used (the latter should - // never happen because we use claimBottomFreeSpace) - if (fullLineVisibleHeight < verticalIncrement) { - topIndex--; - } - } - else - if (topIndex >= content.getLineCount()) { - topIndex = content.getLineCount() - 1; - } - } - if (topIndex != oldTopIndex) { - topOffset = content.getOffsetAtLine(topIndex); - lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1); - setHorizontalScrollBar(); - } -} -/** - * Hides the scroll bars if widget is created in single line mode. - */ -static int checkStyle(int style) { - if ((style & SWT.SINGLE) != 0) { - style &= ~(SWT.H_SCROLL | SWT.V_SCROLL | SWT.WRAP | SWT.MULTI); - } else { - style |= SWT.MULTI; - if ((style & SWT.WRAP) != 0) { - style &= ~SWT.H_SCROLL; - } - } - return style; -} -/** - * Scrolls down the text to use new space made available by a resize or by - * deleted lines. - */ -void claimBottomFreeSpace() { - int newVerticalOffset = Math.max(0, content.getLineCount() * lineHeight - getClientArea().height); - - if (newVerticalOffset < verticalScrollOffset) { - // Scroll up so that empty lines below last text line are used. - // Fixes 1GEYJM0 - setVerticalScrollOffset(newVerticalOffset, true); - } -} -/** - * Scrolls text to the right to use new space made available by a resize. - */ -void claimRightFreeSpace() { - int newHorizontalOffset = Math.max(0, lineCache.getWidth() - (getClientArea().width - leftMargin - rightMargin)); - - if (newHorizontalOffset < horizontalScrollOffset) { - // item is no longer drawn past the right border of the client area - // align the right end of the item with the right border of the - // client area (window is scrolled right). - scrollHorizontalBar(newHorizontalOffset - horizontalScrollOffset); - } -} -/** - * Clears the widget margin. - * - * @param gc GC to render on - * @param background background color to use for clearing the margin - * @param clientArea widget client area dimensions - */ -void clearMargin(GC gc, Color background, Rectangle clientArea, int y) { - // clear the margin background - gc.setBackground(background); - if (topMargin > 0) { - gc.fillRectangle(0, -y, clientArea.width, topMargin); - } - if (bottomMargin > 0) { - gc.fillRectangle(0, clientArea.height - bottomMargin - y, clientArea.width, bottomMargin); - } - if (leftMargin > 0) { - gc.fillRectangle(0, -y, leftMargin, clientArea.height); - } - if (rightMargin > 0) { - gc.fillRectangle(clientArea.width - rightMargin, -y, rightMargin, clientArea.height); - } -} -/** - * Removes the widget selection. - *

                                - * - * @param sendEvent a Selection event is sent when set to true and when the selection is actually reset. - */ -void clearSelection(boolean sendEvent) { - int selectionStart = selection.x; - int selectionEnd = selection.y; - int length = content.getCharCount(); - - resetSelection(); - // redraw old selection, if any - if (selectionEnd - selectionStart > 0) { - // called internally to remove selection after text is removed - // therefore make sure redraw range is valid. - int redrawStart = Math.min(selectionStart, length); - int redrawEnd = Math.min(selectionEnd, length); - if (redrawEnd - redrawStart > 0) { - internalRedrawRange(redrawStart, redrawEnd - redrawStart, true); - } - if (sendEvent) { - sendSelectionEvent(); - } - } -} -public Point computeSize (int wHint, int hHint, boolean changed) { - checkWidget(); - int count, width, height; - boolean singleLine = (getStyle() & SWT.SINGLE) != 0; - - if (singleLine) { - count = 1; - } else { - count = content.getLineCount(); - } - if (wHint != SWT.DEFAULT) { - width = wHint; - } - else { - width = DEFAULT_WIDTH; - } - if (wHint == SWT.DEFAULT) { - LineCache computeLineCache = lineCache; - if (wordWrap) { - // set non-wrapping content width calculator. Ensures ideal line width - // that does not required wrapping. Fixes bug 31195. - computeLineCache = new ContentWidthCache(this, logicalContent); - if (!singleLine) { - count = logicalContent.getLineCount(); - } - } - // Only calculate what can actually be displayed. - // Do this because measuring each text line is a - // time-consuming process. - int visibleCount = Math.min (count, getDisplay().getBounds().height / lineHeight); - computeLineCache.calculate(0, visibleCount); - width = computeLineCache.getWidth() + leftMargin + rightMargin; - } - else - if (wordWrap && !singleLine) { - // calculate to wrap to width hint. Fixes bug 20377. - // don't wrap live content. Fixes bug 38344. - WrappedContent wrappedContent = new WrappedContent(renderer, logicalContent); - wrappedContent.wrapLines(width); - count = wrappedContent.getLineCount(); - } - if (hHint != SWT.DEFAULT) { - height = hHint; - } - else { - height = count * lineHeight + topMargin + bottomMargin; - } - // Use default values if no text is defined. - if (width == 0) { - width = DEFAULT_WIDTH; - } - if (height == 0) { - if (singleLine) { - height = lineHeight; - } - else { - height = DEFAULT_HEIGHT; - } - } - Rectangle rect = computeTrim(0, 0, width, height); - return new Point (rect.width, rect.height); -} -/** - * Copies the selected text to the DND.CLIPBOARD clipboard. - * The text will be put on the clipboard in plain text format and RTF format. - * The DND.CLIPBOARD clipboard is used for data that is - * transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) or - * by menu action. - * - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void copy() { - checkWidget(); - copy(DND.CLIPBOARD); -} - -/** - * Copies the selected text to the specified clipboard. The text will be put in the - * clipboard in plain text format and RTF format. - * - *

                                The clipboardType is one of the clipboard constants defined in class - * DND. The DND.CLIPBOARD clipboard is - * used for data that is transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) - * or by menu action. The DND.SELECTION_CLIPBOARD - * clipboard is used for data that is transferred by selecting text and pasting - * with the middle mouse button.

                                - * - * @param clipboardType indicates the type of clipboard - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 3.1 - */ -public void copy(int clipboardType) { - checkWidget(); - if (clipboardType != DND.CLIPBOARD && - clipboardType != DND.SELECTION_CLIPBOARD) return; - int length = selection.y - selection.x; - if (length > 0) { - try { - setClipboardContent(selection.x, length, clipboardType); - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } -} -/** - * Returns a string that uses only the line delimiter specified by the - * StyledTextContent implementation. - * Returns only the first line if the widget has the SWT.SINGLE style. - *

                                - * - * @param text the text that may have line delimiters that don't - * match the model line delimiter. Possible line delimiters - * are CR ('\r'), LF ('\n'), CR/LF ("\r\n") - * @return the converted text that only uses the line delimiter - * specified by the model. Returns only the first line if the widget - * has the SWT.SINGLE style. - */ -String getModelDelimitedText(String text) { - StringBuffer convertedText; - String delimiter = getLineDelimiter(); - int length = text.length(); - int crIndex = 0; - int lfIndex = 0; - int i = 0; - - if (length == 0) { - return text; - } - convertedText = new StringBuffer(length); - while (i < length) { - if (crIndex != -1) { - crIndex = text.indexOf(SWT.CR, i); - } - if (lfIndex != -1) { - lfIndex = text.indexOf(SWT.LF, i); - } - if (lfIndex == -1 && crIndex == -1) { // no more line breaks? - break; - } - else // CR occurs before LF or no LF present? - if ((crIndex < lfIndex && crIndex != -1) || lfIndex == -1) { - convertedText.append(text.substring(i, crIndex)); - if (lfIndex == crIndex + 1) { // CR/LF combination? - i = lfIndex + 1; - } - else { - i = crIndex + 1; - } - } - else { // LF occurs before CR! - convertedText.append(text.substring(i, lfIndex)); - i = lfIndex + 1; - } - if (isSingleLine()) { - break; - } - convertedText.append(delimiter); - } - // copy remaining text if any and if not in single line mode or no - // text copied thus far (because there only is one line) - if (i < length && (!isSingleLine() || convertedText.length() == 0)) { - convertedText.append(text.substring(i)); - } - return convertedText.toString(); -} -/** - * Creates default key bindings. - */ -void createKeyBindings() { - int nextKey = isMirrored() ? SWT.ARROW_LEFT : SWT.ARROW_RIGHT; - int previousKey = isMirrored() ? SWT.ARROW_RIGHT : SWT.ARROW_LEFT; - - // Navigation - setKeyBinding(SWT.ARROW_UP, ST.LINE_UP); - setKeyBinding(SWT.ARROW_DOWN, ST.LINE_DOWN); - setKeyBinding(SWT.HOME, ST.LINE_START); - setKeyBinding(SWT.END, ST.LINE_END); - setKeyBinding(SWT.PAGE_UP, ST.PAGE_UP); - setKeyBinding(SWT.PAGE_DOWN, ST.PAGE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD1, ST.TEXT_START); - setKeyBinding(SWT.END | SWT.MOD1, ST.TEXT_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD1, ST.WINDOW_START); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1, ST.WINDOW_END); - setKeyBinding(nextKey, ST.COLUMN_NEXT); - setKeyBinding(previousKey, ST.COLUMN_PREVIOUS); - setKeyBinding(nextKey | SWT.MOD1, ST.WORD_NEXT); - setKeyBinding(previousKey | SWT.MOD1, ST.WORD_PREVIOUS); - - // Selection - setKeyBinding(SWT.ARROW_UP | SWT.MOD2, ST.SELECT_LINE_UP); - setKeyBinding(SWT.ARROW_DOWN | SWT.MOD2, ST.SELECT_LINE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD2, ST.SELECT_LINE_START); - setKeyBinding(SWT.END | SWT.MOD2, ST.SELECT_LINE_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD2, ST.SELECT_PAGE_UP); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD2, ST.SELECT_PAGE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_START); - setKeyBinding(SWT.END | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_START); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_END); - setKeyBinding(nextKey | SWT.MOD2, ST.SELECT_COLUMN_NEXT); - setKeyBinding(previousKey | SWT.MOD2, ST.SELECT_COLUMN_PREVIOUS); - setKeyBinding(nextKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_NEXT); - setKeyBinding(previousKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_PREVIOUS); - - // Modification - // Cut, Copy, Paste - setKeyBinding('X' | SWT.MOD1, ST.CUT); - setKeyBinding('C' | SWT.MOD1, ST.COPY); - setKeyBinding('V' | SWT.MOD1, ST.PASTE); - // Cut, Copy, Paste Wordstar style - setKeyBinding(SWT.DEL | SWT.MOD2, ST.CUT); - setKeyBinding(SWT.INSERT | SWT.MOD1, ST.COPY); - setKeyBinding(SWT.INSERT | SWT.MOD2, ST.PASTE); - setKeyBinding(SWT.BS | SWT.MOD2, ST.DELETE_PREVIOUS); - - setKeyBinding(SWT.BS, ST.DELETE_PREVIOUS); - setKeyBinding(SWT.DEL, ST.DELETE_NEXT); - setKeyBinding(SWT.BS | SWT.MOD1, ST.DELETE_WORD_PREVIOUS); - setKeyBinding(SWT.DEL | SWT.MOD1, ST.DELETE_WORD_NEXT); - - // Miscellaneous - setKeyBinding(SWT.INSERT, ST.TOGGLE_OVERWRITE); -} -/** - * Create the bitmaps to use for the caret in bidi mode. This - * method only needs to be called upon widget creation and when the - * font changes (the caret bitmap height needs to match font height). - */ -void createCaretBitmaps() { - int caretWidth = BIDI_CARET_WIDTH; - Display display = getDisplay(); - if (leftCaretBitmap != null) { - if (defaultCaret != null && leftCaretBitmap.equals(defaultCaret.getImage())) { - defaultCaret.setImage(null); - } - leftCaretBitmap.dispose(); - } - leftCaretBitmap = new Image(display, caretWidth, lineHeight); - GC gc = new GC (leftCaretBitmap); - gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.fillRectangle(0, 0, caretWidth, lineHeight); - gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - gc.drawLine(0,0,0,lineHeight); - gc.drawLine(0,0,caretWidth-1,0); - gc.drawLine(0,1,1,1); - gc.dispose(); - - if (rightCaretBitmap != null) { - if (defaultCaret != null && rightCaretBitmap.equals(defaultCaret.getImage())) { - defaultCaret.setImage(null); - } - rightCaretBitmap.dispose(); - } - rightCaretBitmap = new Image(display, caretWidth, lineHeight); - gc = new GC (rightCaretBitmap); - gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.fillRectangle(0, 0, caretWidth, lineHeight); - gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - gc.drawLine(caretWidth-1,0,caretWidth-1,lineHeight); - gc.drawLine(0,0,caretWidth-1,0); - gc.drawLine(caretWidth-1,1,1,1); - gc.dispose(); -} -/** - * Moves the selected text to the clipboard. The text will be put in the - * clipboard in plain text format and RTF format. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void cut(){ - checkWidget(); - int length = selection.y - selection.x; - - if (length > 0) { - try { - setClipboardContent(selection.x, length, DND.CLIPBOARD); - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - // Abort cut operation if copy to clipboard fails. - // Fixes bug 21030. - return; - } - doDelete(); - } -} -/** - * A mouse move event has occurred. See if we should start autoscrolling. If - * the move position is outside of the client area, initiate autoscrolling. - * Otherwise, we've moved back into the widget so end autoscrolling. - */ -void doAutoScroll(Event event) { - Rectangle area = getClientArea(); - - if (event.y > area.height) { - doAutoScroll(SWT.DOWN, event.y - area.height); - } - else - if (event.y < 0) { - doAutoScroll(SWT.UP, -event.y); - } - else - if (event.x < leftMargin && !wordWrap) { - doAutoScroll(ST.COLUMN_PREVIOUS, leftMargin - event.x); - } - else - if (event.x > area.width - leftMargin - rightMargin && !wordWrap) { - doAutoScroll(ST.COLUMN_NEXT, event.x - (area.width - leftMargin - rightMargin)); - } - else { - endAutoScroll(); - } -} -/** - * Initiates autoscrolling. - *

                                - * - * @param direction SWT.UP, SWT.DOWN, SWT.COLUMN_NEXT, SWT.COLUMN_PREVIOUS - */ -void doAutoScroll(int direction, int distance) { - Runnable timer = null; - - autoScrollDistance = distance; - - // If we're already autoscrolling in the given direction do nothing - if (autoScrollDirection == direction) { - return; - } - - final Display display = getDisplay(); - // Set a timer that will simulate the user pressing and holding - // down a cursor key (i.e., arrowUp, arrowDown). - if (direction == SWT.UP) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == SWT.UP) { - int lines = (autoScrollDistance / getLineHeight()) + 1; - doSelectionPageUp(lines); - display.timerExec(V_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(V_SCROLL_RATE, timer); - } else if (direction == SWT.DOWN) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == SWT.DOWN) { - int lines = (autoScrollDistance / getLineHeight()) + 1; - doSelectionPageDown(lines); - display.timerExec(V_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(V_SCROLL_RATE, timer); - } else if (direction == ST.COLUMN_NEXT) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == ST.COLUMN_NEXT) { - doVisualNext(); - setMouseWordSelectionAnchor(); - doMouseSelection(); - display.timerExec(H_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(H_SCROLL_RATE, timer); - } else if (direction == ST.COLUMN_PREVIOUS) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == ST.COLUMN_PREVIOUS) { - doVisualPrevious(); - setMouseWordSelectionAnchor(); - doMouseSelection(); - display.timerExec(H_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(H_SCROLL_RATE, timer); - } -} -/** - * Deletes the previous character. Delete the selected text if any. - * Move the caret in front of the deleted text. - */ -void doBackspace() { - Event event = new Event(); - event.text = ""; - if (selection.x != selection.y) { - event.start = selection.x; - event.end = selection.y; - sendKeyEvent(event); - } - else - if (caretOffset > 0) { - int line = content.getLineAtOffset(caretOffset); - int lineOffset = content.getOffsetAtLine(line); - - if (caretOffset == lineOffset) { - lineOffset = content.getOffsetAtLine(line - 1); - event.start = lineOffset + content.getLine(line - 1).length(); - event.end = caretOffset; - } - else { - String lineText = content.getLine(line); - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - int start = layout.getPreviousOffset(caretOffset - lineOffset, SWT.MOVEMENT_CHAR); - renderer.disposeTextLayout(layout); - event.start = start + lineOffset; - event.end = caretOffset; - } - sendKeyEvent(event); - } -} -/** - * Replaces the selection with the character or insert the character at the - * current caret position if no selection exists. - * If a carriage return was typed replace it with the line break character - * used by the widget on this platform. - *

                                - * - * @param key the character typed by the user - */ -void doContent(char key) { - Event event; - - if (textLimit > 0 && - content.getCharCount() - (selection.y - selection.x) >= textLimit) { - return; - } - event = new Event(); - event.start = selection.x; - event.end = selection.y; - // replace a CR line break with the widget line break - // CR does not make sense on Windows since most (all?) applications - // don't recognize CR as a line break. - if (key == SWT.CR || key == SWT.LF) { - if (!isSingleLine()) { - event.text = getLineDelimiter(); - } - } - // no selection and overwrite mode is on and the typed key is not a - // tab character (tabs are always inserted without overwriting)? - else - if (selection.x == selection.y && overwrite && key != TAB) { - int lineIndex = content.getLineAtOffset(event.end); - int lineOffset = content.getOffsetAtLine(lineIndex); - String line = content.getLine(lineIndex); - // replace character at caret offset if the caret is not at the - // end of the line - if (event.end < lineOffset + line.length()) { - event.end++; - } - event.text = new String(new char[] {key}); - } - else { - event.text = new String(new char[] {key}); - } - if (event.text != null) { - sendKeyEvent(event); - } -} -/** - * Moves the caret after the last character of the widget content. - */ -void doContentEnd() { - // place caret at end of first line if receiver is in single - // line mode. fixes 4820. - if (isSingleLine()) { - doLineEnd(); - } - else { - int length = content.getCharCount(); - if (caretOffset < length) { - caretOffset = length; - showCaret(); - } - } -} -/** - * Moves the caret in front of the first character of the widget content. - */ -void doContentStart() { - if (caretOffset > 0) { - caretOffset = 0; - showCaret(); - } -} -/** - * Moves the caret to the start of the selection if a selection exists. - * Otherwise, if no selection exists move the cursor according to the - * cursor selection rules. - *

                                - * - * @see #doSelectionCursorPrevious - */ -void doCursorPrevious() { - advancing = false; - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.x; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionCursorPrevious(); - } -} -/** - * Moves the caret to the end of the selection if a selection exists. - * Otherwise, if no selection exists move the cursor according to the - * cursor selection rules. - *

                                - * - * @see #doSelectionCursorNext - */ -void doCursorNext() { - advancing = true; - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.y; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionCursorNext(); - } -} -/** - * Deletes the next character. Delete the selected text if any. - */ -void doDelete() { - Event event = new Event(); - event.text = ""; - if (selection.x != selection.y) { - event.start = selection.x; - event.end = selection.y; - sendKeyEvent(event); - } - else - if (caretOffset < content.getCharCount()) { - int line = content.getLineAtOffset(caretOffset); - int lineOffset = content.getOffsetAtLine(line); - int lineLength = content.getLine(line).length(); - - if (caretOffset == lineOffset + lineLength) { - event.start = caretOffset; - event.end = content.getOffsetAtLine(line + 1); - } - else { - event.start = caretOffset; - event.end = getClusterNext(caretOffset, line); - } - sendKeyEvent(event); - } -} -/** - * Deletes the next word. - */ -void doDeleteWordNext() { - if (selection.x != selection.y) { - // if a selection exists, treat the as if - // only the delete key was pressed - doDelete(); - } else { - Event event = new Event(); - event.text = ""; - event.start = caretOffset; - event.end = getWordEnd(caretOffset); - sendKeyEvent(event); - } -} -/** - * Deletes the previous word. - */ -void doDeleteWordPrevious() { - if (selection.x != selection.y) { - // if a selection exists, treat as if - // only the backspace key was pressed - doBackspace(); - } else { - Event event = new Event(); - event.text = ""; - event.start = getWordStart(caretOffset); - event.end = caretOffset; - sendKeyEvent(event); - } -} -/** - * Moves the caret one line down and to the same character offset relative - * to the beginning of the line. Move the caret to the end of the new line - * if the new line is shorter than the character offset. - * - * @return index of the new line relative to the first line in the document - */ -int doLineDown() { - if (isSingleLine()) { - return 0; - } - // allow line down action only if receiver is not in single line mode. - // fixes 4820. - int caretLine = getCaretLine(); - if (caretLine < content.getLineCount() - 1) { - caretLine++; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - } - return caretLine; -} -/** - * Moves the caret to the end of the line. - */ -void doLineEnd() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int lineLength = content.getLine(caretLine).length(); - int lineEndOffset = lineOffset + lineLength; - - if (caretOffset < lineEndOffset) { - caretOffset = lineEndOffset; - showCaret(); - } -} -/** - * Moves the caret to the beginning of the line. - */ -void doLineStart() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - if (caretOffset > lineOffset) { - caretOffset = lineOffset; - showCaret(caretLine); - } -} -/** - * Moves the caret one line up and to the same character offset relative - * to the beginning of the line. Move the caret to the end of the new line - * if the new line is shorter than the character offset. - * - * @return index of the new line relative to the first line in the document - */ -int doLineUp() { - int caretLine = getCaretLine(); - if (caretLine > 0) { - caretLine--; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - } - return caretLine; -} -/** - * Moves the caret to the specified location. - *

                                - * - * @param x x location of the new caret position - * @param y y location of the new caret position - * @param select the location change is a selection operation. - * include the line delimiter in the selection - */ -void doMouseLocationChange(int x, int y, boolean select) { - int line = (y + verticalScrollOffset) / lineHeight; - int lineCount = content.getLineCount(); - int newCaretOffset; - int newCaretLine; - boolean oldAdvancing = advancing; - - updateCaretDirection = true; - if (line > lineCount - 1) { - line = lineCount - 1; - } - // allow caret to be placed below first line only if receiver is - // not in single line mode. fixes 4820. - if (line < 0 || (isSingleLine() && line > 0)) { - return; - } - newCaretOffset = getOffsetAtMouseLocation(x, line); - - if (mouseDoubleClick) { - // double click word select the previous/next word. fixes bug 15610 - newCaretOffset = doMouseWordSelect(x, newCaretOffset, line); - } - newCaretLine = content.getLineAtOffset(newCaretOffset); - // Is the mouse within the left client area border or on - // a different line? If not the autoscroll selection - // could be incorrectly reset. Fixes 1GKM3XS - if (y >= 0 && y < getClientArea().height && - (x >= 0 && x < getClientArea().width || wordWrap || - newCaretLine != content.getLineAtOffset(caretOffset))) { - if (newCaretOffset != caretOffset || advancing != oldAdvancing) { - caretOffset = newCaretOffset; - if (select) { - doMouseSelection(); - } - showCaret(); - } - } - if (!select) { - caretOffset = newCaretOffset; - clearSelection(true); - } -} -/** - * Updates the selection based on the caret position - */ -void doMouseSelection() { - if (caretOffset <= selection.x || - (caretOffset > selection.x && - caretOffset < selection.y && selectionAnchor == selection.x)) { - doSelection(ST.COLUMN_PREVIOUS); - } - else { - doSelection(ST.COLUMN_NEXT); - } -} -/** - * Returns the offset of the word at the specified offset. - * If the current selection extends from high index to low index - * (i.e., right to left, or caret is at left border of selecton on - * non-bidi platforms) the start offset of the word preceeding the - * selection is returned. If the current selection extends from - * low index to high index the end offset of the word following - * the selection is returned. - * - * @param x mouse x location - * @param newCaretOffset caret offset of the mouse cursor location - * @param line line index of the mouse cursor location - */ -int doMouseWordSelect(int x, int newCaretOffset, int line) { - int wordOffset; - - // flip selection anchor based on word selection direction from - // base double click. Always do this here (and don't rely on doAutoScroll) - // because auto scroll only does not cover all possible mouse selections - // (e.g., mouse x < 0 && mouse y > caret line y) - if (newCaretOffset < selectionAnchor && selectionAnchor == selection.x) { - selectionAnchor = doubleClickSelection.y; - } - else - if (newCaretOffset > selectionAnchor && selectionAnchor == selection.y) { - selectionAnchor = doubleClickSelection.x; - } - if (x >= 0 && x < getClientArea().width) { - // find the previous/next word - if (caretOffset == selection.x) { - wordOffset = getWordStart(newCaretOffset); - } - else { - wordOffset = getWordEndNoSpaces(newCaretOffset); - } - // mouse word select only on same line mouse cursor is on - if (content.getLineAtOffset(wordOffset) == line) { - newCaretOffset = wordOffset; - } - } - return newCaretOffset; -} -/** - * Scrolls one page down so that the last line (truncated or whole) - * of the current page becomes the fully visible top line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the end - * of the text where a full page scroll is not possible. In this case - * the caret is moved after the last character. - *

                                - * - * @param select whether or not to select the page - */ -void doPageDown(boolean select, int lines) { - int lineCount = content.getLineCount(); - int oldColumnX = columnX; - int oldHScrollOffset = horizontalScrollOffset; - int caretLine; - - // do nothing if in single line mode. fixes 5673 - if (isSingleLine()) { - return; - } - caretLine = getCaretLine(); - if (caretLine < lineCount - 1) { - int verticalMaximum = lineCount * getVerticalIncrement(); - int pageSize = getClientArea().height; - int scrollLines = Math.min(lineCount - caretLine - 1, lines); - int scrollOffset; - - // ensure that scrollLines never gets negative and at leat one - // line is scrolled. fixes bug 5602. - scrollLines = Math.max(1, scrollLines); - caretLine += scrollLines; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - if (select) { - doSelection(ST.COLUMN_NEXT); - } - // scroll one page down or to the bottom - scrollOffset = verticalScrollOffset + scrollLines * getVerticalIncrement(); - if (scrollOffset + pageSize > verticalMaximum) { - scrollOffset = verticalMaximum - pageSize; - } - if (scrollOffset > verticalScrollOffset) { - setVerticalScrollOffset(scrollOffset, true); - } - } - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - int hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; -} -/** - * Moves the cursor to the end of the last fully visible line. - */ -void doPageEnd() { - // go to end of line if in single line mode. fixes 5673 - if (isSingleLine()) { - doLineEnd(); - } - else { - int line = getBottomIndex(); - int bottomCaretOffset = content.getOffsetAtLine(line) + content.getLine(line).length(); - - if (caretOffset < bottomCaretOffset) { - caretOffset = bottomCaretOffset; - showCaret(); - } - } -} -/** - * Moves the cursor to the beginning of the first fully visible line. - */ -void doPageStart() { - int topCaretOffset = content.getOffsetAtLine(topIndex); - - if (caretOffset > topCaretOffset) { - caretOffset = topCaretOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(topIndex); - } -} -/** - * Scrolls one page up so that the first line (truncated or whole) - * of the current page becomes the fully visible last line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the beginning - * of the text where a full page scroll is not possible. In this case the - * caret is moved in front of the first character. - */ -void doPageUp(boolean select, int lines) { - int oldColumnX = columnX; - int oldHScrollOffset = horizontalScrollOffset; - int caretLine = getCaretLine(); - - if (caretLine > 0) { - int scrollLines = Math.max(1, Math.min(caretLine, lines)); - int scrollOffset; - - caretLine -= scrollLines; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - if (select) { - doSelection(ST.COLUMN_PREVIOUS); - } - // scroll one page up or to the top - scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * getVerticalIncrement()); - if (scrollOffset < verticalScrollOffset) { - setVerticalScrollOffset(scrollOffset, true); - } - } - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - int hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; -} -/** - * Updates the selection to extend to the current caret position. - */ -void doSelection(int direction) { - int redrawStart = -1; - int redrawEnd = -1; - - if (selectionAnchor == -1) { - selectionAnchor = selection.x; - } - if (direction == ST.COLUMN_PREVIOUS) { - if (caretOffset < selection.x) { - // grow selection - redrawEnd = selection.x; - redrawStart = selection.x = caretOffset; - // check if selection has reversed direction - if (selection.y != selectionAnchor) { - redrawEnd = selection.y; - selection.y = selectionAnchor; - } - } - else // test whether selection actually changed. Fixes 1G71EO1 - if (selectionAnchor == selection.x && caretOffset < selection.y) { - // caret moved towards selection anchor (left side of selection). - // shrink selection - redrawEnd = selection.y; - redrawStart = selection.y = caretOffset; - } - } - else { - if (caretOffset > selection.y) { - // grow selection - redrawStart = selection.y; - redrawEnd = selection.y = caretOffset; - // check if selection has reversed direction - if (selection.x != selectionAnchor) { - redrawStart = selection.x; - selection.x = selectionAnchor; - } - } - else // test whether selection actually changed. Fixes 1G71EO1 - if (selectionAnchor == selection.y && caretOffset > selection.x) { - // caret moved towards selection anchor (right side of selection). - // shrink selection - redrawStart = selection.x; - redrawEnd = selection.x = caretOffset; - } - } - if (redrawStart != -1 && redrawEnd != -1) { - internalRedrawRange(redrawStart, redrawEnd - redrawStart, true); - sendSelectionEvent(); - } -} -/** - * Moves the caret to the next character or to the beginning of the - * next line if the cursor is at the end of a line. - */ -void doSelectionCursorNext() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - advancing = true; - if (offsetInLine < content.getLine(caretLine).length()) { - caretOffset = getClusterNext(caretOffset, caretLine); - showCaret(); - } - else - if (caretLine < content.getLineCount() - 1 && !isSingleLine()) { - // only go to next line if not in single line mode. fixes 5673 - caretLine++; - caretOffset = content.getOffsetAtLine(caretLine); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - } -} -/** - * Moves the caret to the previous character or to the end of the previous - * line if the cursor is at the beginning of a line. - */ -void doSelectionCursorPrevious() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - advancing = false; - if (offsetInLine > 0) { - caretOffset = getClusterPrevious(caretOffset, caretLine); - showCaret(caretLine); - } - else - if (caretLine > 0) { - caretLine--; - lineOffset = content.getOffsetAtLine(caretLine); - caretOffset = lineOffset + content.getLine(caretLine).length(); - showCaret(); - } -} -/** - * Moves the caret one line down and to the same character offset relative - * to the beginning of the line. Moves the caret to the end of the new line - * if the new line is shorter than the character offset. - * Moves the caret to the end of the text if the caret already is on the - * last line. - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - */ -void doSelectionLineDown() { - int oldColumnX; - int caretLine; - int lineStartOffset; - - if (isSingleLine()) { - return; - } - caretLine = getCaretLine(); - lineStartOffset = content.getOffsetAtLine(caretLine); - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - if (caretLine == content.getLineCount() - 1) { - caretOffset = content.getCharCount(); - } - else { - caretLine = doLineDown(); - } - setMouseWordSelectionAnchor(); - // select first and then scroll to reduce flash when key - // repeat scrolls lots of lines - doSelection(ST.COLUMN_NEXT); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // save the original horizontal caret position - columnX = oldColumnX; -} -/** - * Moves the caret one line up and to the same character offset relative - * to the beginning of the line. Moves the caret to the end of the new line - * if the new line is shorter than the character offset. - * Moves the caret to the beginning of the document if it is already on the - * first line. - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - */ -void doSelectionLineUp() { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - if (caretLine == 0) { - caretOffset = 0; - } - else { - caretLine = doLineUp(); - } - setMouseWordSelectionAnchor(); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - doSelection(ST.COLUMN_PREVIOUS); - // save the original horizontal caret position - columnX = oldColumnX; -} -/** - * Scrolls one page down so that the last line (truncated or whole) - * of the current page becomes the fully visible top line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the end - * of the text where a full page scroll is not possible. In this case - * the caret is moved after the last character. - *

                                - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - *

                                - */ -void doSelectionPageDown(int lines) { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - doPageDown(true, lines); - columnX = oldColumnX; -} -/** - * Scrolls one page up so that the first line (truncated or whole) - * of the current page becomes the fully visible last line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the beginning - * of the text where a full page scroll is not possible. In this case the - * caret is moved in front of the first character. - *

                                - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - *

                                - */ -void doSelectionPageUp(int lines) { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - doPageUp(true, lines); - columnX = oldColumnX; -} -/** - * Moves the caret to the end of the next word . - */ -void doSelectionWordNext() { - int newCaretOffset = getWordEnd(caretOffset); - // Force symmetrical movement for word next and previous. Fixes 14536 - advancing = false; - // don't change caret position if in single line mode and the cursor - // would be on a different line. fixes 5673 - if (!isSingleLine() || - content.getLineAtOffset(caretOffset) == content.getLineAtOffset(newCaretOffset)) { - caretOffset = newCaretOffset; - showCaret(); - } -} -/** - * Moves the caret to the start of the previous word. - */ -void doSelectionWordPrevious() { - int caretLine; - advancing = false; - caretOffset = getWordStart(caretOffset); - caretLine = content.getLineAtOffset(caretOffset); - // word previous always comes from bottom line. when - // wrapping lines, stay on bottom line when on line boundary - if (wordWrap && caretLine < content.getLineCount() - 1 && - caretOffset == content.getOffsetAtLine(caretLine + 1)) { - caretLine++; - } - showCaret(caretLine); -} -/** - * Moves the caret one character to the left. Do not go to the previous line. - * When in a bidi locale and at a R2L character the caret is moved to the - * beginning of the R2L segment (visually right) and then one character to the - * left (visually left because it's now in a L2R segment). - */ -void doVisualPrevious() { - caretOffset = getClusterPrevious(caretOffset, getCaretLine()); - showCaret(); -} -/** - * Moves the caret one character to the right. Do not go to the next line. - * When in a bidi locale and at a R2L character the caret is moved to the - * end of the R2L segment (visually left) and then one character to the - * right (visually right because it's now in a L2R segment). - */ -void doVisualNext() { - caretOffset = getClusterNext(caretOffset, getCaretLine()); - showCaret(); -} -/** - * Moves the caret to the end of the next word. - * If a selection exists, move the caret to the end of the selection - * and remove the selection. - */ -void doWordNext() { - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.y; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionWordNext(); - } -} -/** - * Moves the caret to the start of the previous word. - * If a selection exists, move the caret to the start of the selection - * and remove the selection. - */ -void doWordPrevious() { - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.x; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionWordPrevious(); - } -} -/** - * Draws the specified rectangle. - * Draw directly without invalidating the affected area when clearBackground is - * false. - *

                                - * - * @param x the x position - * @param y the y position - * @param width the width - * @param height the height - * @param clearBackground true=clear the background by invalidating the requested - * redraw area, false=draw the foreground directly without invalidating the - * redraw area. - */ -void draw(int x, int y, int width, int height, boolean clearBackground) { - if (clearBackground) { - redraw(x + leftMargin, y + topMargin, width, height, true); - } - else { - int startLine = (y + verticalScrollOffset) / lineHeight; - int endY = y + height; - int paintYFromTopLine = (startLine - topIndex) * lineHeight; - int topLineOffset = (topIndex * lineHeight - verticalScrollOffset); - int paintY = paintYFromTopLine + topLineOffset + topMargin; // adjust y position for pixel based scrolling - int lineCount = content.getLineCount(); - Color background = getBackground(); - Color foreground = getForeground(); - GC gc = getGC(); - - if (isSingleLine()) { - lineCount = 1; - } - for (int i = startLine; paintY < endY && i < lineCount; i++, paintY += lineHeight) { - String line = content.getLine(i); - renderer.drawLine(line, i, paintY, gc, background, foreground, clearBackground); - } - gc.dispose(); - } -} -/** - * Ends the autoscroll process. - */ -void endAutoScroll() { - autoScrollDirection = SWT.NULL; -} -public Color getBackground() { - checkWidget(); - if (background == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND); - } - return background; -} -/** - * Returns the baseline, in pixels. - * - * @return baseline the baseline - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 3.0 - */ -public int getBaseline() { - checkWidget(); - return renderer.getBaseline(); -} -/** - * Gets the BIDI coloring mode. When true the BIDI text display - * algorithm is applied to segments of text that are the same - * color. - * - * @return the current coloring mode - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - *

                                - * @deprecated use BidiSegmentListener instead. - *

                                - */ -public boolean getBidiColoring() { - checkWidget(); - return bidiColoring; -} -/** - * Returns the index of the last fully visible line. - *

                                - * - * @return index of the last fully visible line. - */ -int getBottomIndex() { - int lineCount = 1; - - if (lineHeight != 0) { - // calculate the number of lines that are fully visible - int partialTopLineHeight = topIndex * lineHeight - verticalScrollOffset; - lineCount = (getClientArea().height - partialTopLineHeight) / lineHeight; - } - return Math.min(content.getLineCount() - 1, topIndex + Math.max(0, lineCount - 1)); -} -/** - * Returns the caret position relative to the start of the text. - *

                                - * - * @return the caret position relative to the start of the text. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getCaretOffset() { - checkWidget(); - - return caretOffset; -} -/** - * Returns the caret offset at the given x location in the line. - * The caret offset is the offset of the character where the caret will be - * placed when a mouse click occurs. The caret offset will be the offset of - * the character after the clicked one if the mouse click occurs at the second - * half of a character. - * Doesn't properly handle ligatures and other context dependent characters - * unless the current locale is a bidi locale. - * Ligatures are handled properly as long as they don't occur at lineXOffset. - *

                                - * - * @param line text of the line to calculate the offset in - * @param lineOffset offset of the first character in the line. - * 0 based from the beginning of the document. - * @param lineXOffset x location in the line - * @return caret offset at the x location relative to the start of the line. - */ -int getOffsetAtX(String line, int lineOffset, int lineXOffset) { - int x = lineXOffset - leftMargin + horizontalScrollOffset; - TextLayout layout = renderer.getTextLayout(line, lineOffset); - int[] trailing = new int[1]; - int offsetInLine = layout.getOffset(x, 0, trailing); - advancing = false; - if (trailing[0] != 0) { - int lineLength = line.length(); - if (offsetInLine + trailing[0] >= lineLength) { - offsetInLine = lineLength; - advancing = true; - } else { - int level; - int offset = offsetInLine; - while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--; - if (offset == 0 && Character.isDigit(line.charAt(offset))) { - level = isMirrored() ? 1 : 0; - } else { - level = layout.getLevel(offset) & 0x1; - } - offsetInLine += trailing[0]; - int trailingLevel = layout.getLevel(offsetInLine) & 0x1; - advancing = (level ^ trailingLevel) != 0; - } - } - renderer.disposeTextLayout(layout); - return offsetInLine; -} -/** - * Returns the caret width. - *

                                - * - * @return the caret width, 0 if caret is null. - */ -int getCaretWidth() { - Caret caret = getCaret(); - if (caret == null) return 0; - return caret.getSize().x; -} -Object getClipboardContent(int clipboardType) { - TextTransfer plainTextTransfer = TextTransfer.getInstance(); - return clipboard.getContents(plainTextTransfer, clipboardType); -} -int getClusterNext(int offset, int lineIndex) { - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - offset -= lineOffset; - offset = layout.getNextOffset(offset, SWT.MOVEMENT_CLUSTER); - offset += lineOffset; - renderer.disposeTextLayout(layout); - return offset; -} -int getClusterPrevious(int offset, int lineIndex) { - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - offset -= lineOffset; - offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_CLUSTER); - offset += lineOffset; - renderer.disposeTextLayout(layout); - return offset; -} -/** - * Returns the content implementation that is used for text storage - * or null if no user defined content implementation has been set. - *

                                - * - * @return content implementation that is used for text storage or null - * if no user defined content implementation has been set. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public StyledTextContent getContent() { - checkWidget(); - - return logicalContent; -} -/** - * Returns whether the widget implements double click mouse behavior. - *

                                - * - * @return true if double clicking a word selects the word, false if double clicks - * have the same effect as regular mouse clicks - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public boolean getDoubleClickEnabled() { - checkWidget(); - return doubleClickEnabled; -} -/** - * Returns whether the widget content can be edited. - *

                                - * - * @return true if content can be edited, false otherwise - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public boolean getEditable() { - checkWidget(); - return editable; -} -public Color getForeground() { - checkWidget(); - if (foreground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND); - } - return foreground; -} -/** - * Return a GC to use for rendering and update the cached font style to - * represent the current style. - *

                                - * - * @return GC. - */ -GC getGC() { - return new GC(this); -} -/** - * Returns the horizontal scroll increment. - *

                                - * - * @return horizontal scroll increment. - */ -int getHorizontalIncrement() { - GC gc = getGC(); - int increment = gc.getFontMetrics().getAverageCharWidth(); - - gc.dispose(); - return increment; -} -/** - * Returns the horizontal scroll offset relative to the start of the line. - *

                                - * - * @return horizontal scroll offset relative to the start of the line, - * measured in character increments starting at 0, if > 0 the content is scrolled - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getHorizontalIndex() { - checkWidget(); - return horizontalScrollOffset / getHorizontalIncrement(); -} -/** - * Returns the horizontal scroll offset relative to the start of the line. - *

                                - * - * @return the horizontal scroll offset relative to the start of the line, - * measured in pixel starting at 0, if > 0 the content is scrolled. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getHorizontalPixel() { - checkWidget(); - return horizontalScrollOffset; -} -/** - * Returns the action assigned to the key. - * Returns SWT.NULL if there is no action associated with the key. - *

                                - * - * @param key a key code defined in SWT.java or a character. - * Optionally ORd with a state mask. Preferred state masks are one or more of - * SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform - * differences. However, there may be cases where using the specific state masks - * (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense. - * @return one of the predefined actions defined in ST.java or SWT.NULL - * if there is no action associated with the key. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getKeyBinding(int key) { - checkWidget(); - Integer action = (Integer) keyActionMap.get(new Integer(key)); - int intAction; - - if (action == null) { - intAction = SWT.NULL; - } - else { - intAction = action.intValue(); - } - return intAction; -} -/** - * Gets the number of characters. - *

                                - * - * @return number of characters in the widget - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getCharCount() { - checkWidget(); - return content.getCharCount(); -} -/** - * Returns the background color of the line at the given index. - * Returns null if a LineBackgroundListener has been set or if no background - * color has been specified for the line. Should not be called if a - * LineBackgroundListener has been set since the listener maintains the - * line background colors. - * - * @param index the index of the line - * @return the background color of the line at the given index. - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the index is invalid
                                • - *
                                - */ -public Color getLineBackground(int index) { - checkWidget(); - Color lineBackground = null; - - if (index < 0 || index > logicalContent.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - if (!userLineBackground) { - lineBackground = defaultLineStyler.getLineBackground(index); - } - return lineBackground; -} -/** - * Returns the line background data for the given line or null if - * there is none. - *

                                - * @param lineOffset offset of the line start relative to the start - * of the content. - * @param line line to get line background data for - * @return line background data for the given line. - */ -StyledTextEvent getLineBackgroundData(int lineOffset, String line) { - return sendLineEvent(LineGetBackground, lineOffset, line); -} -/** - * Gets the number of text lines. - *

                                - * - * @return the number of lines in the widget - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getLineCount() { - checkWidget(); - return getLineAtOffset(getCharCount()) + 1; -} -/** - * Returns the number of lines that can be completely displayed in the - * widget client area. - *

                                - * - * @return number of lines that can be completely displayed in the widget - * client area. - */ -int getLineCountWhole() { - int lineCount; - - if (lineHeight != 0) { - lineCount = getClientArea().height / lineHeight; - } - else { - lineCount = 1; - } - return lineCount; -} -/** - * Returns the line at the specified offset in the text - * where 0 <= offset <= getCharCount() so that getLineAtOffset(getCharCount()) - * returns the line of the insert location. - * - * @param offset offset relative to the start of the content. - * 0 <= offset <= getCharCount() - * @return line at the specified offset in the text - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - */ -public int getLineAtOffset(int offset) { - checkWidget(); - - if (offset < 0 || offset > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return logicalContent.getLineAtOffset(offset); -} -/** - * Returns the line delimiter used for entering new lines by key down - * or paste operation. - *

                                - * - * @return line delimiter used for entering new lines by key down - * or paste operation. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getLineDelimiter() { - checkWidget(); - return content.getLineDelimiter(); -} -/** - * Returns a StyledTextEvent that can be used to request data such - * as styles and background color for a line. - * The specified line may be a visual (wrapped) line if in word - * wrap mode. The returned object will always be for a logical - * (unwrapped) line. - *

                                - * - * @param lineOffset offset of the line. This may be the offset of - * a visual line if the widget is in word wrap mode. - * @param line line text. This may be the text of a visualline if - * the widget is in word wrap mode. - * @return StyledTextEvent that can be used to request line data - * for the given line. - */ -StyledTextEvent sendLineEvent(int eventType, int lineOffset, String line) { - StyledTextEvent event = null; - - if (isListening(eventType)) { - event = new StyledTextEvent(logicalContent); - if (wordWrap) { - // if word wrap is on, the line offset and text may be visual (wrapped) - int lineIndex = logicalContent.getLineAtOffset(lineOffset); - - event.detail = logicalContent.getOffsetAtLine(lineIndex); - event.text = logicalContent.getLine(lineIndex); - } - else { - event.detail = lineOffset; - event.text = line; - } - notifyListeners(eventType, event); - } - return event; -} -/** - * Returns the line height. - *

                                - * - * @return line height in pixel. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getLineHeight() { - checkWidget(); - return lineHeight; -} -/** - * Returns a LineCache implementation. Depending on whether or not - * word wrap is on this may be a line wrapping or line width - * calculating implementaiton. - *

                                - * - * @param content StyledTextContent to create the LineCache on. - * @return a LineCache implementation - */ -LineCache getLineCache(StyledTextContent content) { - LineCache lineCache; - - if (wordWrap) { - lineCache = new WordWrapCache(this, (WrappedContent) content); - } - else { - lineCache = new ContentWidthCache(this, content); - } - return lineCache; -} -/** - * Returns the line style data for the given line or null if there is - * none. If there is a LineStyleListener but it does not set any styles, - * the StyledTextEvent.styles field will be initialized to an empty - * array. - *

                                - * - * @param lineOffset offset of the line start relative to the start of - * the content. - * @param line line to get line styles for - * @return line style data for the given line. Styles may start before - * line start and end after line end - */ -StyledTextEvent getLineStyleData(int lineOffset, String line) { - return sendLineEvent(LineGetStyle, lineOffset, line); -} -/** - * Returns the x, y location of the upper left corner of the character - * bounding box at the specified offset in the text. The point is - * relative to the upper left corner of the widget client area. - *

                                - * - * @param offset offset relative to the start of the content. - * 0 <= offset <= getCharCount() - * @return x, y location of the upper left corner of the character - * bounding box at the specified offset in the text. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - */ -public Point getLocationAtOffset(int offset) { - checkWidget(); - if (offset < 0 || offset > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - String lineContent = content.getLine(line); - int x = getXAtOffset(lineContent, line, offset - lineOffset); - int y = line * lineHeight - verticalScrollOffset; - - return new Point(x, y); -} -/** - * Returns the character offset of the first character of the given line. - *

                                - * - * @param lineIndex index of the line, 0 based relative to the first - * line in the content. 0 <= lineIndex < getLineCount(), except - * lineIndex may always be 0 - * @return offset offset of the first character of the line, relative to - * the beginning of the document. The first character of the document is - * at offset 0. - * When there are not any lines, getOffsetAtLine(0) is a valid call that - * answers 0. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - * @since 2.0 - */ -public int getOffsetAtLine(int lineIndex) { - checkWidget(); - - if (lineIndex < 0 || - (lineIndex > 0 && lineIndex >= logicalContent.getLineCount())) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return logicalContent.getOffsetAtLine(lineIndex); -} -/** - * Returns the offset of the character at the given location relative - * to the first character in the document. - * The return value reflects the character offset that the caret will - * be placed at if a mouse click occurred at the specified location. - * If the x coordinate of the location is beyond the center of a character - * the returned offset will be behind the character. - *

                                - * - * @param point the origin of character bounding box relative to - * the origin of the widget client area. - * @return offset of the character at the given location relative - * to the first character in the document. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when point is null
                                • - *
                                • ERROR_INVALID_ARGUMENT when there is no character at the specified location
                                • - *
                                - */ -public int getOffsetAtLocation(Point point) { - checkWidget(); - TextLayout layout; - int line; - int lineOffset; - int offsetInLine; - String lineText; - - if (point == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - // is y above first line or is x before first column? - if (point.y + verticalScrollOffset < 0 || point.x + horizontalScrollOffset < 0) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - line = (getTopPixel() + point.y) / lineHeight; - // does the referenced line exist? - if (line >= content.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - lineText = content.getLine(line); - lineOffset = content.getOffsetAtLine(line); - - int x = point.x - leftMargin + horizontalScrollOffset; - layout = renderer.getTextLayout(lineText, lineOffset); - Rectangle rect = layout.getLineBounds(0); - if (x > rect.x + rect.width) { - renderer.disposeTextLayout(layout); - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - int[] trailing = new int[1]; - offsetInLine = layout.getOffset(x, 0, trailing); - if (offsetInLine != lineText.length() - 1) { - offsetInLine = Math.min(lineText.length(), offsetInLine + trailing[0]); - } - renderer.disposeTextLayout(layout); - return lineOffset + offsetInLine; -} -/** - * Returns the offset at the specified x location in the specified line. - *

                                - * - * @param x x location of the mouse location - * @param line line the mouse location is in - * @return the offset at the specified x location in the specified line, - * relative to the beginning of the document - */ -int getOffsetAtMouseLocation(int x, int line) { - String lineText = content.getLine(line); - int lineOffset = content.getOffsetAtLine(line); - return getOffsetAtX(lineText, lineOffset, x) + lineOffset; -} -/** - * Return the orientation of the receiver. - * - * @return the orientation style - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 2.1.2 - */ -public int getOrientation () { - checkWidget(); - return isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; -} -/** - * Returns the index of the last partially visible line. - * - * @return index of the last partially visible line. - */ -int getPartialBottomIndex() { - int partialLineCount = Compatibility.ceil(getClientArea().height, lineHeight); - return Math.min(content.getLineCount(), topIndex + partialLineCount) - 1; -} -/** - * Returns the content in the specified range using the platform line - * delimiter to separate lines. - *

                                - * - * @param writer the TextWriter to write line text into - * @return the content in the specified range using the platform line - * delimiter to separate lines as written by the specified TextWriter. - */ -String getPlatformDelimitedText(TextWriter writer) { - int end = writer.getStart() + writer.getCharCount(); - int startLine = logicalContent.getLineAtOffset(writer.getStart()); - int endLine = logicalContent.getLineAtOffset(end); - String endLineText = logicalContent.getLine(endLine); - int endLineOffset = logicalContent.getOffsetAtLine(endLine); - - for (int i = startLine; i <= endLine; i++) { - writer.writeLine(logicalContent.getLine(i), logicalContent.getOffsetAtLine(i)); - if (i < endLine) { - writer.writeLineDelimiter(PlatformLineDelimiter); - } - } - if (end > endLineOffset + endLineText.length()) { - writer.writeLineDelimiter(PlatformLineDelimiter); - } - writer.close(); - return writer.toString(); -} -/** - * Returns the selection. - *

                                - * Text selections are specified in terms of caret positions. In a text - * widget that contains N characters, there are N+1 caret positions, - * ranging from 0..N - *

                                - * - * @return start and end of the selection, x is the offset of the first - * selected character, y is the offset after the last selected character. - * The selection values returned are visual (i.e., x will always always be - * <= y). To determine if a selection is right-to-left (RtoL) vs. left-to-right - * (LtoR), compare the caretOffset to the start and end of the selection - * (e.g., caretOffset == start of selection implies that the selection is RtoL). - * @see #getSelectionRange - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public Point getSelection() { - checkWidget(); - return new Point(selection.x, selection.y); -} -/** - * Returns the selection. - *

                                - * - * @return start and length of the selection, x is the offset of the - * first selected character, relative to the first character of the - * widget content. y is the length of the selection. - * The selection values returned are visual (i.e., length will always always be - * positive). To determine if a selection is right-to-left (RtoL) vs. left-to-right - * (LtoR), compare the caretOffset to the start and end of the selection - * (e.g., caretOffset == start of selection implies that the selection is RtoL). - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public Point getSelectionRange() { - checkWidget(); - return new Point(selection.x, selection.y - selection.x); -} -/** - * Returns the receiver's selection background color. - * - * @return the selection background color - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public Color getSelectionBackground() { - checkWidget(); - if (selectionBackground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION); - } - return selectionBackground; -} -/** - * Gets the number of selected characters. - *

                                - * - * @return the number of selected characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getSelectionCount() { - checkWidget(); - return getSelectionRange().y; -} -/** - * Returns the receiver's selection foreground color. - * - * @return the selection foreground color - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public Color getSelectionForeground() { - checkWidget(); - if (selectionForeground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT); - } - return selectionForeground; -} -/** - * Returns the selected text. - *

                                - * - * @return selected text, or an empty String if there is no selection. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getSelectionText() { - checkWidget(); - return content.getTextRange(selection.x, selection.y - selection.x); -} - -public int getStyle() { - int style = super.getStyle(); - style &= ~(SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT | SWT.MIRRORED); - if (isMirrored()) { - style |= SWT.RIGHT_TO_LEFT | SWT.MIRRORED; - } else { - style |= SWT.LEFT_TO_RIGHT; - } - return style; -} - -/** - * Returns the text segments that should be treated as if they - * had a different direction than the surrounding text. - *

                                - * - * @param lineOffset offset of the first character in the line. - * 0 based from the beginning of the document. - * @param line text of the line to specify bidi segments for - * @return text segments that should be treated as if they had a - * different direction than the surrounding text. Only the start - * index of a segment is specified, relative to the start of the - * line. Always starts with 0 and ends with the line length. - * @exception IllegalArgumentException

                                  - *
                                • ERROR_INVALID_ARGUMENT - if the segment indices returned - * by the listener do not start with 0, are not in ascending order, - * exceed the line length or have duplicates
                                • - *
                                - */ -int [] getBidiSegments(int lineOffset, String line) { - if (!isListening(LineGetSegments)) { - return getBidiSegmentsCompatibility(line, lineOffset); - } - StyledTextEvent event = sendLineEvent(LineGetSegments, lineOffset, line); - int lineLength = line.length(); - int[] segments; - if (event == null || event.segments == null || event.segments.length == 0) { - segments = new int[] {0, lineLength}; - } - else { - int segmentCount = event.segments.length; - - // test segment index consistency - if (event.segments[0] != 0) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - for (int i = 1; i < segmentCount; i++) { - if (event.segments[i] <= event.segments[i - 1] || event.segments[i] > lineLength) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - } - // ensure that last segment index is line end offset - if (event.segments[segmentCount - 1] != lineLength) { - segments = new int[segmentCount + 1]; - System.arraycopy(event.segments, 0, segments, 0, segmentCount); - segments[segmentCount] = lineLength; - } - else { - segments = event.segments; - } - } - return segments; -} -/** - * @see #getBidiSegments - * Supports deprecated setBidiColoring API. Remove when API is removed. - */ -int [] getBidiSegmentsCompatibility(String line, int lineOffset) { - StyledTextEvent event; - StyleRange [] styles = new StyleRange [0]; - int lineLength = line.length(); - if (!bidiColoring) { - return new int[] {0, lineLength}; - } - event = renderer.getLineStyleData(lineOffset, line); - if (event != null) { - styles = event.styles; - } - if (styles.length == 0) { - return new int[] {0, lineLength}; - } - int k=0, count = 1; - while (k < styles.length && styles[k].start == 0 && styles[k].length == lineLength) { - k++; - } - int[] offsets = new int[(styles.length - k) * 2 + 2]; - for (int i = k; i < styles.length; i++) { - StyleRange style = styles[i]; - int styleLineStart = Math.max(style.start - lineOffset, 0); - int styleLineEnd = Math.max(style.start + style.length - lineOffset, styleLineStart); - styleLineEnd = Math.min (styleLineEnd, line.length ()); - if (i > 0 && count > 1 && - ((styleLineStart >= offsets[count-2] && styleLineStart <= offsets[count-1]) || - (styleLineEnd >= offsets[count-2] && styleLineEnd <= offsets[count-1])) && - style.similarTo(styles[i-1])) { - offsets[count-2] = Math.min(offsets[count-2], styleLineStart); - offsets[count-1] = Math.max(offsets[count-1], styleLineEnd); - } else { - if (styleLineStart > offsets[count - 1]) { - offsets[count] = styleLineStart; - count++; - } - offsets[count] = styleLineEnd; - count++; - } - } - // add offset for last non-colored segment in line, if any - if (lineLength > offsets[count-1]) { - offsets [count] = lineLength; - count++; - } - if (count == offsets.length) { - return offsets; - } - int [] result = new int [count]; - System.arraycopy (offsets, 0, result, 0, count); - return result; -} -/** - * Returns the style range at the given offset. - * Returns null if a LineStyleListener has been set or if a style is not set - * for the offset. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param offset the offset to return the style for. - * 0 <= offset < getCharCount() must be true. - * @return a StyleRange with start == offset and length == 1, indicating - * the style at the given offset. null if a LineStyleListener has been set - * or if a style is not set for the given offset. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the offset is invalid
                                • - *
                                - */ -public StyleRange getStyleRangeAtOffset(int offset) { - checkWidget(); - if (offset < 0 || offset >= getCharCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - if (!userLineStyle) { - return defaultLineStyler.getStyleRangeAtOffset(offset); - } - return null; -} -/** - * Returns the styles. - * Returns an empty array if a LineStyleListener has been set. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @return the styles or an empty array if a LineStyleListener has been set. - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public StyleRange [] getStyleRanges() { - checkWidget(); - StyleRange styles[]; - - if (!userLineStyle) { - styles = defaultLineStyler.getStyleRanges(); - } - else { - styles = new StyleRange[0]; - } - return styles; -} -/** - * Returns the styles for the given text range. - * Returns an empty array if a LineStyleListener has been set. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - * - * @param start the start offset of the style ranges to return - * @param length the number of style ranges to return - * - * @return the styles or an empty array if a LineStyleListener has - * been set. The returned styles will reflect the given range. The first - * returned StyleRange will have a starting offset >= start - * and the last returned StyleRange will have an ending - * offset <= start + length - 1 - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - * - * @since 3.0 - */ -public StyleRange [] getStyleRanges(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - StyleRange styles[]; - - if (!userLineStyle) { - styles = defaultLineStyler.getStyleRangesFor(start, length); - if (styles == null) return new StyleRange[0]; - // adjust the first and last style to reflect the specified - // range, clone these styles since the returned styles are the - // styles cached by the widget - if (styles.length == 1) { - StyleRange style = styles[0]; - if (style.start < start) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = newStyle.length - (start - newStyle.start); - newStyle.start = start; - styles[0] = newStyle; - } - if (style.start + style.length > (start + length)) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = start + length - newStyle.start; - styles[0] = newStyle; - } - } else if (styles.length > 1) { - StyleRange style = styles[0]; - if (style.start < start) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = newStyle.length - (start - newStyle.start); - newStyle.start = start; - styles[0] = newStyle; - } - style = styles[styles.length - 1]; - if (style.start + style.length > (start + length)) { - StyleRange newStyle = (StyleRange)styles[styles.length - 1].clone(); - newStyle.length = start + length - newStyle.start; - styles[styles.length - 1] = newStyle; - } - } - } - else { - styles = new StyleRange[0]; - } - return styles; -} -/** - * Returns the tab width measured in characters. - * - * @return tab width measured in characters - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTabs() { - checkWidget(); - return tabLength; -} -/** - * Returns a copy of the widget content. - *

                                - * - * @return copy of the widget content - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getText() { - checkWidget(); - return content.getTextRange(0, getCharCount()); -} -/** - * Returns the widget content between the two offsets. - *

                                - * - * @param start offset of the first character in the returned String - * @param end offset of the last character in the returned String - * @return widget content starting at start and ending at end - * @see #getTextRange(int,int) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - */ -public String getText(int start, int end) { - checkWidget(); - int contentLength = getCharCount(); - - if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return content.getTextRange(start, end - start + 1); -} -/** - * Returns the smallest bounding rectangle that includes the characters between two offsets. - *

                                - * - * @param start offset of the first character included in the bounding box - * @param end offset of the last character included in the bounding box - * @return bounding box of the text between start and end - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - * @since 3.1 - */ -public Rectangle getTextBounds(int start, int end) { - checkWidget(); - int contentLength = getCharCount(); - if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int lineStart = content.getLineAtOffset(start); - int lineEnd = content.getLineAtOffset(end); - Rectangle rect; - int y = lineStart * lineHeight; - int height = (lineEnd + 1) * lineHeight - y; - int left = 0x7fffffff, right = 0; - for (int i = lineStart; i <= lineEnd; i++) { - int lineOffset = content.getOffsetAtLine(i); - String line = content.getLine(i); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - if (i == lineStart && i == lineEnd) { - rect = layout.getBounds(start - lineOffset, end - lineOffset); - } else if (i == lineStart) { - rect = layout.getBounds(start - lineOffset, line.length()); - } else if (i == lineEnd) { - rect = layout.getBounds(0, end - lineOffset); - } else { - rect = layout.getLineBounds(0); - } - left = Math.min (left, rect.x); - right = Math.max (right, rect.x + rect.width); - renderer.disposeTextLayout(layout); - } - rect = new Rectangle (left, y, right-left, height); - rect.x += leftMargin - horizontalScrollOffset; - rect.y -= verticalScrollOffset; - return rect; -} -/** - * Returns the widget content starting at start for length characters. - *

                                - * - * @param start offset of the first character in the returned String - * @param length number of characters to return - * @return widget content starting at start and extending length characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or length are outside the widget content
                                • - *
                                - */ -public String getTextRange(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return content.getTextRange(start, length); -} -/** - * Returns the maximum number of characters that the receiver is capable of holding. - * - * @return the text limit - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTextLimit() { - checkWidget(); - - return textLimit; -} -/** - * Gets the top index. The top index is the index of the fully visible line that - * is currently at the top of the widget or the topmost partially visible line if - * no line is fully visible. - * The top index changes when the widget is scrolled. Indexing is zero based. - *

                                - * - * @return the index of the top line - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTopIndex() { - checkWidget(); - int logicalTopIndex = topIndex; - - if (wordWrap) { - int visualLineOffset = content.getOffsetAtLine(topIndex); - logicalTopIndex = logicalContent.getLineAtOffset(visualLineOffset); - } - return logicalTopIndex; -} -/** - * Gets the top pixel. The top pixel is the pixel position of the line that is - * currently at the top of the widget.The text widget can be scrolled by pixels - * by dragging the scroll thumb so that a partial line may be displayed at the top - * the widget. The top pixel changes when the widget is scrolled. The top pixel - * does not include the widget trimming. - *

                                - * - * @return pixel position of the top line - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTopPixel() { - checkWidget(); - return verticalScrollOffset; -} -/** - * Returns the vertical scroll increment. - *

                                - * - * @return vertical scroll increment. - */ -int getVerticalIncrement() { - return lineHeight; -} -int getCaretDirection() { - if (!isBidiCaret()) return SWT.DEFAULT; - if (!updateCaretDirection && caretDirection != SWT.NULL) return caretDirection; - updateCaretDirection = false; - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - String line = content.getLine(caretLine); - int offset = caretOffset - lineOffset; - int lineLength = line.length(); - if (lineLength == 0) return isMirrored() ? SWT.RIGHT : SWT.LEFT; - if (advancing && offset > 0) offset--; - if (offset == lineLength && offset > 0) offset--; - while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--; - if (offset == 0 && Character.isDigit(line.charAt(offset))) { - return isMirrored() ? SWT.RIGHT : SWT.LEFT; - } - TextLayout layout = renderer.getTextLayout(line, lineOffset); - int level = layout.getLevel(offset); - renderer.disposeTextLayout(layout); - return ((level & 1) != 0) ? SWT.RIGHT : SWT.LEFT; -} -/** - * Returns the index of the line the caret is on. - * When in word wrap mode and at the end of one wrapped line/ - * beginning of the continuing wrapped line the caret offset - * is not sufficient to determine the caret line. - * - * @return the index of the line the caret is on. - */ -int getCaretLine() { - int caretLine = content.getLineAtOffset(caretOffset); - int leftColumnX = leftMargin; - if (wordWrap && columnX <= leftColumnX && - caretLine < content.getLineCount() - 1 && - caretOffset == content.getOffsetAtLine(caretLine + 1)) { - caretLine++; - } - return caretLine; -} -/** - * Returns the offset of the character after the word at the specified - * offset. - *

                                - * There are two classes of words formed by a sequence of characters: - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Space characters ' ' (ASCII 20) are special as they are treated as - * part of the word leading up to the space character. Line breaks are - * treated as one word. - *

                                - */ -int getWordEnd(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - int lineLength = lineText.length(); - - if (offset >= getCharCount()) { - return offset; - } - if (offset == lineOffset + lineLength) { - line++; - offset = logicalContent.getOffsetAtLine(line); - } - else { - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - offset -= lineOffset; - offset = layout.getNextOffset(offset, SWT.MOVEMENT_WORD); - offset += lineOffset; - renderer.disposeTextLayout(layout); - } - return offset; -} -/** - * Returns the offset of the character after the word at the specified - * offset. - *

                                - * There are two classes of words formed by a sequence of characters: - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Spaces are ignored and do not represent a word. Line breaks are treated - * as one word. - *

                                - */ -int getWordEndNoSpaces(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - int lineLength = lineText.length(); - - if (offset >= getCharCount()) { - return offset; - } - if (offset == lineOffset + lineLength) { - line++; - offset = logicalContent.getOffsetAtLine(line); - } - else { - offset -= lineOffset; - char ch = lineText.charAt(offset); - boolean letterOrDigit = Compatibility.isLetterOrDigit(ch); - - while (offset < lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) { - offset++; - ch = lineText.charAt(offset); - } - if (offset == lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) { - offset++; - } - offset += lineOffset; - } - return offset; -} -/** - * Returns the start offset of the word at the specified offset. - * There are two classes of words formed by a sequence of characters: - *

                                - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Space characters ' ' (ASCII 20) are special as they are treated as - * part of the word leading up to the space character. Line breaks are treated - * as one word. - *

                                - */ -int getWordStart(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - - if (offset <= 0) { - return offset; - } - if (offset == lineOffset) { - line--; - lineText = logicalContent.getLine(line); - offset = logicalContent.getOffsetAtLine(line) + lineText.length(); - } - else { - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - offset -= lineOffset; - offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_WORD); - offset += lineOffset; - renderer.disposeTextLayout(layout); - } - return offset; -} -/** - * Returns whether the widget wraps lines. - *

                                - * - * @return true if widget wraps lines, false otherwise - * @since 2.0 - */ -public boolean getWordWrap() { - checkWidget(); - return wordWrap; -} -/** - * Returns the x location of the character at the give offset in the line. - * NOTE: Does not return correct values for true italic fonts (vs. slanted fonts). - *

                                - * - * @return x location of the character at the given offset in the line. - */ -int getXAtOffset(String line, int lineIndex, int offsetInLine) { - int x = 0; - int lineLength = line.length(); - if (lineIndex < content.getLineCount() - 1) { - int endLineOffset = content.getOffsetAtLine(lineIndex + 1) - 1; - if (lineLength < offsetInLine && offsetInLine <= endLineOffset) { - offsetInLine = lineLength; - } - } - if (lineLength != 0 && offsetInLine <= lineLength) { - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - if (!advancing || offsetInLine == 0) { - x = layout.getLocation(offsetInLine, false).x; - } else { - x = layout.getLocation(offsetInLine - 1, true).x; - } - renderer.disposeTextLayout(layout); - } - return x + leftMargin - horizontalScrollOffset; -} -/** - * Inserts a string. The old selection is replaced with the new text. - *

                                - * - * @param string the string - * @see #replaceTextRange(int,int,String) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void insert(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - Point sel = getSelectionRange(); - replaceTextRange(sel.x, sel.y, string); -} -/** - * Creates content change listeners and set the default content model. - */ -void installDefaultContent() { - textChangeListener = new TextChangeListener() { - public void textChanging(TextChangingEvent event) { - handleTextChanging(event); - } - public void textChanged(TextChangedEvent event) { - handleTextChanged(event); - } - public void textSet(TextChangedEvent event) { - handleTextSet(event); - } - }; - logicalContent = content = new DefaultContent(); - content.addTextChangeListener(textChangeListener); -} -/** - * Creates a default line style listener. - * Used to store line background colors and styles. - * Removed when the user sets a LineStyleListener. - *

                                - * - * @see #addLineStyleListener - */ -void installDefaultLineStyler() { - defaultLineStyler = new DefaultLineStyler(logicalContent); - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - if (!userLineStyle) { - addListener(LineGetStyle, typedListener); - } - if (!userLineBackground) { - addListener(LineGetBackground, typedListener); - } -} -/** - * Adds event listeners - */ -void installListeners() { - ScrollBar verticalBar = getVerticalBar(); - ScrollBar horizontalBar = getHorizontalBar(); - - listener = new Listener() { - public void handleEvent(Event event) { - switch (event.type) { - case SWT.Dispose: handleDispose(event); break; - case SWT.KeyDown: handleKeyDown(event); break; - case SWT.KeyUp: handleKeyUp(event); break; - case SWT.MouseDown: handleMouseDown(event); break; - case SWT.MouseUp: handleMouseUp(event); break; - case SWT.MouseDoubleClick: handleMouseDoubleClick(event); break; - case SWT.MouseMove: handleMouseMove(event); break; - case SWT.Paint: handlePaint(event); break; - case SWT.Resize: handleResize(event); break; - case SWT.Traverse: handleTraverse(event); break; - } - } - }; - addListener(SWT.Dispose, listener); - addListener(SWT.KeyDown, listener); - addListener(SWT.KeyUp, listener); - addListener(SWT.MouseDown, listener); - addListener(SWT.MouseUp, listener); - addListener(SWT.MouseDoubleClick, listener); - addListener(SWT.MouseMove, listener); - addListener(SWT.Paint, listener); - addListener(SWT.Resize, listener); - addListener(SWT.Traverse, listener); - if (verticalBar != null) { - verticalBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - handleVerticalScroll(event); - } - }); - } - if (horizontalBar != null) { - horizontalBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - handleHorizontalScroll(event); - } - }); - } -} -StyledTextContent internalGetContent() { - return content; -} -int internalGetHorizontalPixel() { - return horizontalScrollOffset; -} -Point internalGetSelection() { - return selection; -} -boolean internalGetWordWrap() { - return wordWrap; -} -/** - * Used by WordWrapCache to bypass StyledText.redraw which does - * an unwanted cache reset. - */ -void internalRedraw() { - super.redraw(); -} -/** - * Redraws the specified text range. - *

                                - * - * @param start offset of the first character to redraw - * @param length number of characters to redraw - * @param clearBackground true if the background should be cleared as - * part of the redraw operation. If true, the entire redraw range will - * be cleared before anything is redrawn. If the redraw range includes - * the last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * The redraw operation will be faster and smoother if clearBackground is - * set to false. Whether or not the flag can be set to false depends on - * the type of change that has taken place. If font styles or background - * colors for the redraw range have changed, clearBackground should be - * set to true. If only foreground colors have changed for the redraw - * range, clearBackground can be set to false. - */ -void internalRedrawRange(int start, int length, boolean clearBackground) { - int end = start + length; - int firstLine = content.getLineAtOffset(start); - int lastLine = content.getLineAtOffset(end); - int offsetInFirstLine; - int partialBottomIndex = getPartialBottomIndex(); - int partialTopIndex = verticalScrollOffset / lineHeight; - // do nothing if redraw range is completely invisible - if (firstLine > partialBottomIndex || lastLine < partialTopIndex) { - return; - } - // only redraw visible lines - if (partialTopIndex > firstLine) { - firstLine = partialTopIndex; - offsetInFirstLine = 0; - } - else { - offsetInFirstLine = start - content.getOffsetAtLine(firstLine); - } - if (partialBottomIndex + 1 < lastLine) { - lastLine = partialBottomIndex + 1; // + 1 to redraw whole bottom line, including line break - end = content.getOffsetAtLine(lastLine); - } - redrawLines(firstLine, offsetInFirstLine, lastLine, end, clearBackground); - - // redraw entire center lines if redraw range includes more than two lines - if (lastLine - firstLine > 1) { - Rectangle clientArea = getClientArea(); - int redrawStopY = lastLine * lineHeight - verticalScrollOffset; - int redrawY = (firstLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, clientArea.width, redrawStopY - redrawY, clearBackground); - } -} -/** - * Returns the widget text with style information encoded using RTF format - * specification version 1.5. - * - * @return the widget text with style information encoded using RTF format - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -String getRtf(){ - checkWidget(); - RTFWriter rtfWriter = new RTFWriter(0, getCharCount()); - return getPlatformDelimitedText(rtfWriter); -} -/** - * Frees resources. - */ -void handleDispose(Event event) { - removeListener(SWT.Dispose, listener); - notifyListeners(SWT.Dispose, event); - event.type = SWT.None; - - clipboard.dispose(); - ibeamCursor.dispose(); - if (renderer != null) { - renderer.dispose(); - renderer = null; - } - if (content != null) { - content.removeTextChangeListener(textChangeListener); - content = null; - } - if (defaultCaret != null) { - defaultCaret.dispose(); - defaultCaret = null; - } - if (leftCaretBitmap != null) { - leftCaretBitmap.dispose(); - leftCaretBitmap = null; - } - if (rightCaretBitmap != null) { - rightCaretBitmap.dispose(); - rightCaretBitmap = null; - } - if (defaultLineStyler != null) { - defaultLineStyler.release(); - defaultLineStyler = null; - } - if (isBidiCaret()) { - BidiUtil.removeLanguageListener(handle); - } - selectionBackground = null; - selectionForeground = null; - logicalContent = null; - textChangeListener = null; - lineCache = null; - ibeamCursor = null; - selection = null; - doubleClickSelection = null; - keyActionMap = null; - background = null; - foreground = null; - clipboard = null; -} -/** - * Scrolls the widget horizontally. - */ -void handleHorizontalScroll(Event event) { - int scrollPixel = getHorizontalBar().getSelection() - horizontalScrollOffset; - scrollHorizontal(scrollPixel); -} -/** - * If an action has been registered for the key stroke execute the action. - * Otherwise, if a character has been entered treat it as new content. - *

                                - * - * @param event keyboard event - */ -void handleKey(Event event) { - int action; - advancing = true; - if (event.keyCode != 0) { - // special key pressed (e.g., F1) - action = getKeyBinding(event.keyCode | event.stateMask); - } - else { - // character key pressed - action = getKeyBinding(event.character | event.stateMask); - if (action == SWT.NULL) { - // see if we have a control character - if ((event.stateMask & SWT.CTRL) != 0 && (event.character >= 0) && event.character <= 31) { - // get the character from the CTRL+char sequence, the control - // key subtracts 64 from the value of the key that it modifies - int c = event.character + 64; - action = getKeyBinding(c | event.stateMask); - } - } - } - if (action == SWT.NULL) { - boolean ignore = false; - - if (IS_CARBON) { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Do not - // ignore COMMAND+ALT combinations since that key sequence - // produces characters on the mac. - ignore = (event.stateMask ^ SWT.COMMAND) == 0 || - (event.stateMask ^ (SWT.COMMAND | SWT.SHIFT)) == 0; - } else if (IS_MOTIF) { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Do not - // ignore ALT combinations since this key sequence - // produces characters on motif. - ignore = (event.stateMask ^ SWT.CTRL) == 0 || - (event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; - } else { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Don't - // ignore CTRL+ALT combinations since that is the Alt Gr - // key on some keyboards. See bug 20953. - ignore = (event.stateMask ^ SWT.ALT) == 0 || - (event.stateMask ^ SWT.CTRL) == 0 || - (event.stateMask ^ (SWT.ALT | SWT.SHIFT)) == 0 || - (event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; - } - // -ignore anything below SPACE except for line delimiter keys and tab. - // -ignore DEL - if (!ignore && event.character > 31 && event.character != SWT.DEL || - event.character == SWT.CR || event.character == SWT.LF || - event.character == TAB) { - doContent(event.character); - } - } - else { - invokeAction(action); - } -} -/** - * If a VerifyKey listener exists, verify that the key that was entered - * should be processed. - *

                                - * - * @param event keyboard event - */ -void handleKeyDown(Event event) { - if (clipboardSelection == null) { - clipboardSelection = new Point(selection.x, selection.y); - } - - Event verifyEvent = new Event(); - verifyEvent.character = event.character; - verifyEvent.keyCode = event.keyCode; - verifyEvent.stateMask = event.stateMask; - verifyEvent.doit = true; - notifyListeners(VerifyKey, verifyEvent); - if (verifyEvent.doit) { - handleKey(event); - } -} -/** - * Update the Selection Clipboard. - *

                                - * - * @param event keyboard event - */ -void handleKeyUp(Event event) { - if (clipboardSelection != null) { - if (clipboardSelection.x != selection.x || clipboardSelection.y != selection.y) { - try { - if (selection.y - selection.x > 0) { - setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); - } - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } - } - clipboardSelection = null; -} -/** - * Updates the caret location and selection if mouse button 1 has been - * pressed. - */ -void handleMouseDoubleClick(Event event) { - if (event.button != 1 || !doubleClickEnabled) { - return; - } - event.y -= topMargin; - mouseDoubleClick = true; - caretOffset = getWordStart(caretOffset); - resetSelection(); - caretOffset = getWordEndNoSpaces(caretOffset); - showCaret(); - doMouseSelection(); - doubleClickSelection = new Point(selection.x, selection.y); -} -/** - * Updates the caret location and selection if mouse button 1 has been - * pressed. - */ -void handleMouseDown(Event event) { - mouseDown = true; - mouseDoubleClick = false; - if (event.button == 2) { - String text = (String)getClipboardContent(DND.SELECTION_CLIPBOARD); - if (text != null && text.length() > 0) { - // position cursor - int x = event.x; - int y = event.y - topMargin; - doMouseLocationChange(x, y, false); - // insert text - Event e = new Event(); - e.start = selection.x; - e.end = selection.y; - e.text = getModelDelimitedText(text); - sendKeyEvent(e); - } - } - if ((event.button != 1) || (IS_CARBON && (event.stateMask & SWT.MOD4) != 0)) { - return; - } - boolean select = (event.stateMask & SWT.MOD2) != 0; - event.y -= topMargin; - doMouseLocationChange(event.x, event.y, select); -} -/** - * Updates the caret location and selection if mouse button 1 is pressed - * during the mouse move. - */ -void handleMouseMove(Event event) { - if (!mouseDown) return; - if ((event.stateMask & SWT.BUTTON1) == 0) { - return; - } - event.y -= topMargin; - doMouseLocationChange(event.x, event.y, true); - update(); - doAutoScroll(event); -} -/** - * Autoscrolling ends when the mouse button is released. - */ -void handleMouseUp(Event event) { - mouseDown = false; - mouseDoubleClick = false; - event.y -= topMargin; - endAutoScroll(); - if (event.button == 1) { - try { - if (selection.y - selection.x > 0) { - setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); - } - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } -} -/** - * Renders the invalidated area specified in the paint event. - *

                                - * - * @param event paint event - */ -void handlePaint(Event event) { - // Check if there is work to do - if (event.height == 0) return; - int startLine = Math.max(0, (event.y - topMargin + verticalScrollOffset) / lineHeight); - int paintYFromTopLine = (startLine - topIndex) * lineHeight; - int topLineOffset = topIndex * lineHeight - verticalScrollOffset; - int startY = paintYFromTopLine + topLineOffset + topMargin; // adjust y position for pixel based scrolling and top margin - int renderHeight = event.y + event.height - startY; - performPaint(event.gc, startLine, startY, renderHeight); -} -/** - * Recalculates the scroll bars. Rewraps all lines when in word - * wrap mode. - *

                                - * - * @param event resize event - */ -void handleResize(Event event) { - int oldHeight = clientAreaHeight; - int oldWidth = clientAreaWidth; - - Rectangle clientArea = getClientArea(); - clientAreaHeight = clientArea.height; - clientAreaWidth = clientArea.width; - /* Redraw the old or new right/bottom margin if needed */ - if (oldWidth != clientAreaWidth) { - if (rightMargin > 0) { - int x = (oldWidth < clientAreaWidth ? oldWidth : clientAreaWidth)- rightMargin; - redraw(x, 0, rightMargin, oldHeight, false); - } - } - if (oldHeight != clientAreaHeight) { - if (bottomMargin > 0) { - int y = (oldHeight < clientAreaHeight ? oldHeight : clientAreaHeight)- bottomMargin; - redraw(0, y, oldWidth, bottomMargin, false); - } - } - if (wordWrap) { - if (oldWidth != clientAreaWidth) { - wordWrapResize(oldWidth); - } - } - else - if (clientAreaHeight > oldHeight) { - int lineCount = content.getLineCount(); - int oldBottomIndex = topIndex + oldHeight / lineHeight; - int newItemCount = Compatibility.ceil(clientAreaHeight - oldHeight, lineHeight); - - oldBottomIndex = Math.min(oldBottomIndex, lineCount); - newItemCount = Math.min(newItemCount, lineCount - oldBottomIndex); - lineCache.calculate(oldBottomIndex, newItemCount); - } - setScrollBars(); - claimBottomFreeSpace(); - claimRightFreeSpace(); - if (oldHeight != clientAreaHeight) { - calculateTopIndex(); - } -} -/** - * Updates the caret position and selection and the scroll bars to reflect - * the content change. - *

                                - */ -void handleTextChanged(TextChangedEvent event) { - lineCache.textChanged(lastTextChangeStart, - lastTextChangeNewLineCount, - lastTextChangeReplaceLineCount, - lastTextChangeNewCharCount, - lastTextChangeReplaceCharCount); - setScrollBars(); - // update selection/caret location after styles have been changed. - // otherwise any text measuring could be incorrect - // - // also, this needs to be done after all scrolling. Otherwise, - // selection redraw would be flushed during scroll which is wrong. - // in some cases new text would be drawn in scroll source area even - // though the intent is to scroll it. - // fixes 1GB93QT - updateSelection( - lastTextChangeStart, - lastTextChangeReplaceCharCount, - lastTextChangeNewCharCount); - - if (lastTextChangeReplaceLineCount > 0) { - // Only check for unused space when lines are deleted. - // Fixes 1GFL4LY - // Scroll up so that empty lines below last text line are used. - // Fixes 1GEYJM0 - claimBottomFreeSpace(); - } - if (lastTextChangeReplaceCharCount > 0) { - // fixes bug 8273 - claimRightFreeSpace(); - } - // do direct drawing if the text change is confined to a single line. - // optimization and fixes bug 13999. see also handleTextChanging. - if (lastTextChangeNewLineCount == 0 && lastTextChangeReplaceLineCount == 0) { - int startLine = content.getLineAtOffset(lastTextChangeStart); - int startY = startLine * lineHeight - verticalScrollOffset + topMargin; - - if (DOUBLE_BUFFER) { - GC gc = getGC(); - Caret caret = getCaret(); - boolean caretVisible = false; - - if (caret != null) { - caretVisible = caret.getVisible(); - caret.setVisible(false); - } - performPaint(gc, startLine, startY, lineHeight); - if (caret != null) { - caret.setVisible(caretVisible); - } - gc.dispose(); - } else { - redraw(0, startY, getClientArea().width, lineHeight, false); - update(); - } - } -} -/** - * Updates the screen to reflect a pending content change. - *

                                - * - * @param event.start the start offset of the change - * @param event.newText text that is going to be inserted or empty String - * if no text will be inserted - * @param event.replaceCharCount length of text that is going to be replaced - * @param event.newCharCount length of text that is going to be inserted - * @param event.replaceLineCount number of lines that are going to be replaced - * @param event.newLineCount number of new lines that are going to be inserted - */ -void handleTextChanging(TextChangingEvent event) { - int firstLine; - int textChangeY; - boolean isMultiLineChange = event.replaceLineCount > 0 || event.newLineCount > 0; - - if (event.replaceCharCount < 0) { - event.start += event.replaceCharCount; - event.replaceCharCount *= -1; - } - lastTextChangeStart = event.start; - lastTextChangeNewLineCount = event.newLineCount; - lastTextChangeNewCharCount = event.newCharCount; - lastTextChangeReplaceLineCount = event.replaceLineCount; - lastTextChangeReplaceCharCount = event.replaceCharCount; - firstLine = content.getLineAtOffset(event.start); - textChangeY = firstLine * lineHeight - verticalScrollOffset + topMargin; - if (isMultiLineChange) { - redrawMultiLineChange(textChangeY, event.newLineCount, event.replaceLineCount); - } - // notify default line styler about text change - if (defaultLineStyler != null) { - defaultLineStyler.textChanging(event); - } - - // Update the caret offset if it is greater than the length of the content. - // This is necessary since style range API may be called between the - // handleTextChanging and handleTextChanged events and this API sets the - // caretOffset. - int newEndOfText = content.getCharCount() - event.replaceCharCount + event.newCharCount; - if (caretOffset > newEndOfText) caretOffset = newEndOfText; -} -/** - * Called when the widget content is set programatically, overwriting - * the old content. Resets the caret position, selection and scroll offsets. - * Recalculates the content width and scroll bars. Redraws the widget. - *

                                - * - * @param event text change event. - */ -void handleTextSet(TextChangedEvent event) { - reset(); -} -/** - * Called when a traversal key is pressed. - * Allow tab next traversal to occur when the widget is in single - * line mode or in multi line and non-editable mode . - * When in editable multi line mode we want to prevent the tab - * traversal and receive the tab key event instead. - *

                                - * - * @param event the event - */ -void handleTraverse(Event event) { - switch (event.detail) { - case SWT.TRAVERSE_ESCAPE: - case SWT.TRAVERSE_PAGE_NEXT: - case SWT.TRAVERSE_PAGE_PREVIOUS: - event.doit = true; - break; - case SWT.TRAVERSE_RETURN: - case SWT.TRAVERSE_TAB_NEXT: - case SWT.TRAVERSE_TAB_PREVIOUS: - if ((getStyle() & SWT.SINGLE) != 0) { - event.doit = true; - } else { - if (!editable || (event.stateMask & SWT.MODIFIER_MASK) != 0) { - event.doit = true; - } - } - break; - } -} -/** - * Scrolls the widget vertically. - */ -void handleVerticalScroll(Event event) { - setVerticalScrollOffset(getVerticalBar().getSelection(), false); -} -/** - * Add accessibility support for the widget. - */ -void initializeAccessible() { - final Accessible accessible = getAccessible(); - accessible.addAccessibleListener(new AccessibleAdapter() { - public void getHelp(AccessibleEvent e) { - e.result = getToolTipText(); - } - }); - accessible.addAccessibleTextListener(new AccessibleTextAdapter() { - public void getCaretOffset(AccessibleTextEvent e) { - e.offset = StyledText.this.getCaretOffset(); - } - public void getSelectionRange(AccessibleTextEvent e) { - Point selection = StyledText.this.getSelectionRange(); - e.offset = selection.x; - e.length = selection.y; - } - }); - accessible.addAccessibleControlListener(new AccessibleControlAdapter() { - public void getRole(AccessibleControlEvent e) { - e.detail = ACC.ROLE_TEXT; - } - public void getState(AccessibleControlEvent e) { - int state = 0; - if (isEnabled()) state |= ACC.STATE_FOCUSABLE; - if (isFocusControl()) state |= ACC.STATE_FOCUSED; - if (!isVisible()) state |= ACC.STATE_INVISIBLE; - if (!getEditable()) state |= ACC.STATE_READONLY; - e.detail = state; - } - public void getValue(AccessibleControlEvent e) { - e.result = StyledText.this.getText(); - } - }); - addListener(SWT.FocusIn, new Listener() { - public void handleEvent(Event event) { - accessible.setFocus(ACC.CHILDID_SELF); - } - }); -} -/** - * Initializes the fonts used to render font styles. - * Presently only regular and bold fonts are supported. - */ -void initializeRenderer() { - if (renderer != null) { - renderer.dispose(); - } - renderer = new DisplayRenderer(getDisplay(), getFont(), this, tabLength); - lineHeight = renderer.getLineHeight(); - if (wordWrap) { - content = new WrappedContent(renderer, logicalContent); - } -} -/** - * Executes the action. - *

                                - * - * @param action one of the actions defined in ST.java - */ -public void invokeAction(int action) { - int oldColumnX, oldHScrollOffset, hScrollChange; - int caretLine; - - checkWidget(); - updateCaretDirection = true; - switch (action) { - // Navigation - case ST.LINE_UP: - caretLine = doLineUp(); - oldColumnX = columnX; - oldHScrollOffset = horizontalScrollOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; - clearSelection(true); - break; - case ST.LINE_DOWN: - caretLine = doLineDown(); - oldColumnX = columnX; - oldHScrollOffset = horizontalScrollOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; - clearSelection(true); - break; - case ST.LINE_START: - doLineStart(); - clearSelection(true); - break; - case ST.LINE_END: - doLineEnd(); - clearSelection(true); - break; - case ST.COLUMN_PREVIOUS: - doCursorPrevious(); - clearSelection(true); - break; - case ST.COLUMN_NEXT: - doCursorNext(); - clearSelection(true); - break; - case ST.PAGE_UP: - doPageUp(false, getLineCountWhole()); - clearSelection(true); - break; - case ST.PAGE_DOWN: - doPageDown(false, getLineCountWhole()); - clearSelection(true); - break; - case ST.WORD_PREVIOUS: - doWordPrevious(); - clearSelection(true); - break; - case ST.WORD_NEXT: - doWordNext(); - clearSelection(true); - break; - case ST.TEXT_START: - doContentStart(); - clearSelection(true); - break; - case ST.TEXT_END: - doContentEnd(); - clearSelection(true); - break; - case ST.WINDOW_START: - doPageStart(); - clearSelection(true); - break; - case ST.WINDOW_END: - doPageEnd(); - clearSelection(true); - break; - // Selection - case ST.SELECT_LINE_UP: - doSelectionLineUp(); - break; - case ST.SELECT_ALL: - selectAll(); - break; - case ST.SELECT_LINE_DOWN: - doSelectionLineDown(); - break; - case ST.SELECT_LINE_START: - doLineStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_LINE_END: - doLineEnd(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_COLUMN_PREVIOUS: - doSelectionCursorPrevious(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_COLUMN_NEXT: - doSelectionCursorNext(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_PAGE_UP: - doSelectionPageUp(getLineCountWhole()); - break; - case ST.SELECT_PAGE_DOWN: - doSelectionPageDown(getLineCountWhole()); - break; - case ST.SELECT_WORD_PREVIOUS: - doSelectionWordPrevious(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_WORD_NEXT: - doSelectionWordNext(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_TEXT_START: - doContentStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_TEXT_END: - doContentEnd(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_WINDOW_START: - doPageStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_WINDOW_END: - doPageEnd(); - doSelection(ST.COLUMN_NEXT); - break; - // Modification - case ST.CUT: - cut(); - break; - case ST.COPY: - copy(); - break; - case ST.PASTE: - paste(); - break; - case ST.DELETE_PREVIOUS: - doBackspace(); - break; - case ST.DELETE_NEXT: - doDelete(); - break; - case ST.DELETE_WORD_PREVIOUS: - doDeleteWordPrevious(); - break; - case ST.DELETE_WORD_NEXT: - doDeleteWordNext(); - break; - // Miscellaneous - case ST.TOGGLE_OVERWRITE: - overwrite = !overwrite; // toggle insert/overwrite mode - break; - } -} -/** - * Temporary until SWT provides this - */ -boolean isBidi() { - return IS_GTK || BidiUtil.isBidiPlatform() || isMirrored; -} -/** - * Returns whether the given offset is inside a multi byte line delimiter. - * Example: - * "Line1\r\n" isLineDelimiter(5) == false but isLineDelimiter(6) == true - * - * @return true if the given offset is inside a multi byte line delimiter. - * false if the given offset is before or after a line delimiter. - */ -boolean isLineDelimiter(int offset) { - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - int offsetInLine = offset - lineOffset; - // offsetInLine will be greater than line length if the line - // delimiter is longer than one character and the offset is set - // in between parts of the line delimiter. - return offsetInLine > content.getLine(line).length(); -} -/** - * Returns whether the widget is mirrored (right oriented/right to left - * writing order). - * - * @return isMirrored true=the widget is right oriented, false=the widget - * is left oriented - */ -boolean isMirrored() { - return isMirrored; -} -/** - * Returns whether or not the given lines are visible. - *

                                - * - * @return true if any of the lines is visible - * false if none of the lines is visible - */ -boolean isAreaVisible(int firstLine, int lastLine) { - int partialBottomIndex = getPartialBottomIndex(); - int partialTopIndex = verticalScrollOffset / lineHeight; - boolean notVisible = firstLine > partialBottomIndex || lastLine < partialTopIndex; - return !notVisible; -} -/** - * Returns whether the widget can have only one line. - *

                                - * - * @return true if widget can have only one line, false if widget can have - * multiple lines - */ -boolean isSingleLine() { - return (getStyle() & SWT.SINGLE) != 0; -} -/** - * Sends the specified verify event, replace/insert text as defined by - * the event and send a modify event. - *

                                - * - * @param event the text change event. - *

                                  - *
                                • event.start - the replace start offset
                                • - *
                                • event.end - the replace end offset
                                • - *
                                • event.text - the new text
                                • - *
                                - * @param updateCaret whether or not he caret should be set behind - * the new text - */ -void modifyContent(Event event, boolean updateCaret) { - event.doit = true; - notifyListeners(SWT.Verify, event); - if (event.doit) { - StyledTextEvent styledTextEvent = null; - int replacedLength = event.end - event.start; - if (isListening(ExtendedModify)) { - styledTextEvent = new StyledTextEvent(logicalContent); - styledTextEvent.start = event.start; - styledTextEvent.end = event.start + event.text.length(); - styledTextEvent.text = content.getTextRange(event.start, replacedLength); - } - if (updateCaret) { - //Fix advancing flag for delete/backspace key on direction boundary - if (event.text.length() == 0) { - int lineIndex = content.getLineAtOffset(event.start); - int lineOffset = content.getOffsetAtLine(lineIndex); - String lineText = content.getLine(lineIndex); - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - int levelStart = layout.getLevel(event.start - lineOffset); - int lineIndexEnd = content.getLineAtOffset(event.end); - if (lineIndex != lineIndexEnd) { - renderer.disposeTextLayout(layout); - lineOffset = content.getOffsetAtLine(lineIndexEnd); - lineText = content.getLine(lineIndexEnd); - layout = renderer.getTextLayout(lineText, lineOffset); - } - int levelEnd = layout.getLevel(event.end - lineOffset); - renderer.disposeTextLayout(layout); - advancing = levelStart != levelEnd; - } - } - content.replaceTextRange(event.start, replacedLength, event.text); - // set the caret position prior to sending the modify event. - // fixes 1GBB8NJ - if (updateCaret) { - // always update the caret location. fixes 1G8FODP - internalSetSelection(event.start + event.text.length(), 0, true); - showCaret(); - } - sendModifyEvent(event); - if (isListening(ExtendedModify)) { - notifyListeners(ExtendedModify, styledTextEvent); - } - } -} -/** - * Replaces the selection with the text on the DND.CLIPBOARD - * clipboard or, if there is no selection, inserts the text at the current - * caret offset. If the widget has the SWT.SINGLE style and the - * clipboard text contains more than one line, only the first line without - * line delimiters is inserted in the widget. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void paste(){ - checkWidget(); - String text; - text = (String) getClipboardContent(DND.CLIPBOARD); - if (text != null && text.length() > 0) { - Event event = new Event(); - event.start = selection.x; - event.end = selection.y; - event.text = getModelDelimitedText(text); - sendKeyEvent(event); - } -} -/** - * Render the specified area. Broken out as its own method to support - * direct drawing. - *

                                - * - * @param gc GC to render on - * @param startLine first line to render - * @param startY y pixel location to start rendering at - * @param renderHeight renderHeight widget area that needs to be filled with lines - */ -void performPaint(GC gc,int startLine,int startY, int renderHeight) { - Rectangle clientArea = getClientArea(); - Color background = getBackground(); - - // Check if there is work to do. We never want to try and create - // an Image with 0 width or 0 height. - if (clientArea.width == 0) { - return; - } - if (renderHeight > 0) { - // renderHeight will be negative when only top margin needs redrawing - Color foreground = getForeground(); - int lineCount = content.getLineCount(); - int gcStyle = isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; - if (isSingleLine()) { - lineCount = 1; - } - int paintY, paintHeight; - Image lineBuffer; - GC lineGC; - boolean doubleBuffer = DOUBLE_BUFFER && lastPaintTopIndex == topIndex; - lastPaintTopIndex = topIndex; - if (doubleBuffer) { - paintY = 0; - paintHeight = renderHeight; - lineBuffer = new Image(getDisplay(), clientArea.width, renderHeight); - lineGC = new GC(lineBuffer, gcStyle); - lineGC.setFont(getFont()); - lineGC.setForeground(foreground); - lineGC.setBackground(background); - } else { - paintY = startY; - paintHeight = startY + renderHeight; - lineBuffer = null; - lineGC = gc; - } - for (int i = startLine; paintY < paintHeight && i < lineCount; i++, paintY += lineHeight) { - String line = content.getLine(i); - renderer.drawLine(line, i, paintY, lineGC, background, foreground, true); - } - if (paintY < paintHeight) { - lineGC.setBackground(background); - lineGC.fillRectangle(0, paintY, clientArea.width, paintHeight - paintY); - } - if (doubleBuffer) { - clearMargin(lineGC, background, clientArea, startY); - gc.drawImage(lineBuffer, 0, startY); - lineGC.dispose(); - lineBuffer.dispose(); - } - } - clearMargin(gc, background, clientArea, 0); -} -/** - * Prints the widget's text to the default printer. - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void print() { - checkWidget(); - Printer printer = new Printer(); - StyledTextPrintOptions options = new StyledTextPrintOptions(); - - options.printTextForeground = true; - options.printTextBackground = true; - options.printTextFontStyle = true; - options.printLineBackground = true; - new Printing(this, printer, options).run(); - printer.dispose(); -} -/** - * Returns a runnable that will print the widget's text - * to the specified printer. - *

                                - * The runnable may be run in a non-UI thread. - *

                                - * - * @param printer the printer to print to - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when printer is null
                                • - *
                                - */ -public Runnable print(Printer printer) { - checkWidget(); - StyledTextPrintOptions options = new StyledTextPrintOptions(); - options.printTextForeground = true; - options.printTextBackground = true; - options.printTextFontStyle = true; - options.printLineBackground = true; - if (printer == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - return print(printer, options); -} -/** - * Returns a runnable that will print the widget's text - * to the specified printer. - *

                                - * The runnable may be run in a non-UI thread. - *

                                - * - * @param printer the printer to print to - * @param options print options to use during printing - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when printer or options is null
                                • - *
                                - * @since 2.1 - */ -public Runnable print(Printer printer, StyledTextPrintOptions options) { - checkWidget(); - if (printer == null || options == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - return new Printing(this, printer, options); -} -/** - * Causes the entire bounds of the receiver to be marked - * as needing to be redrawn. The next time a paint request - * is processed, the control will be completely painted. - *

                                - * Recalculates the content width for all lines in the bounds. - * When a LineStyleListener is used a redraw call - * is the only notification to the widget that styles have changed - * and that the content width may have changed. - *

                                - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @see Control#update - */ -public void redraw() { - int itemCount; - - super.redraw(); - itemCount = getPartialBottomIndex() - topIndex + 1; - lineCache.redrawReset(topIndex, itemCount, true); - lineCache.calculate(topIndex, itemCount); - setHorizontalScrollBar(); -} -/** - * Causes the rectangular area of the receiver specified by - * the arguments to be marked as needing to be redrawn. - * The next time a paint request is processed, that area of - * the receiver will be painted. If the all flag - * is true, any children of the receiver which - * intersect with the specified area will also paint their - * intersecting areas. If the all flag is - * false, the children will not be painted. - *

                                - * Marks the content width of all lines in the specified rectangle - * as unknown. Recalculates the content width of all visible lines. - * When a LineStyleListener is used a redraw call - * is the only notification to the widget that styles have changed - * and that the content width may have changed. - *

                                - * - * @param x the x coordinate of the area to draw - * @param y the y coordinate of the area to draw - * @param width the width of the area to draw - * @param height the height of the area to draw - * @param all true if children should redraw, and false otherwise - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @see Control#update - */ -public void redraw(int x, int y, int width, int height, boolean all) { - super.redraw(x, y, width, height, all); - if (height > 0) { - int lineCount = content.getLineCount(); - int startLine = (getTopPixel() + y) / lineHeight; - int endLine = startLine + Compatibility.ceil(height, lineHeight); - int itemCount; - - // reset all lines in the redraw rectangle - startLine = Math.min(startLine, lineCount); - itemCount = Math.min(endLine, lineCount) - startLine; - lineCache.reset(startLine, itemCount, true); - // only calculate the visible lines - itemCount = getPartialBottomIndex() - topIndex + 1; - lineCache.calculate(topIndex, itemCount); - setHorizontalScrollBar(); - } -} -/** - * Redraws a text range in the specified lines - *

                                - * - * @param firstLine first line to redraw at the specified offset - * @param offsetInFirstLine offset in firstLine to start redrawing - * @param lastLine last line to redraw - * @param endOffset offset in the last where redrawing should stop - * @param clearBackground true=clear the background by invalidating - * the requested redraw range. If the redraw range includes the - * last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * false=draw the foreground directly without invalidating the - * redraw range. - */ -void redrawLines(int firstLine, int offsetInFirstLine, int lastLine, int endOffset, boolean clearBackground) { - String line = content.getLine(firstLine); - int lineCount = lastLine - firstLine + 1; - int redrawY, redrawWidth; - int lineOffset = content.getOffsetAtLine(firstLine); - boolean fullLineRedraw; - Rectangle clientArea = getClientArea(); - - fullLineRedraw = ((getStyle() & SWT.FULL_SELECTION) != 0 && lastLine > firstLine); - // if redraw range includes last character on the first line, - // clear background to right widget border. fixes bug 19595. - if (clearBackground && endOffset - lineOffset >= line.length()) { - fullLineRedraw = true; - } - TextLayout layout = renderer.getTextLayout(line, lineOffset); - Rectangle rect = layout.getBounds(offsetInFirstLine, Math.min(endOffset, line.length()) - 1); - renderer.disposeTextLayout(layout); - rect.x -= horizontalScrollOffset; - rect.intersect(clientArea); - redrawY = firstLine * lineHeight - verticalScrollOffset; - redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width; - draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground); - - // redraw last line if more than one line needs redrawing - if (lineCount > 1) { - lineOffset = content.getOffsetAtLine(lastLine); - int offsetInLastLine = endOffset - lineOffset; - // no redraw necessary if redraw offset is 0 - if (offsetInLastLine > 0) { - line = content.getLine(lastLine); - // if redraw range includes last character on the last line, - // clear background to right widget border. fixes bug 19595. - if (clearBackground && offsetInLastLine >= line.length()) { - fullLineRedraw = true; - } - line = content.getLine(lastLine); - layout = renderer.getTextLayout(line, lineOffset); - rect = layout.getBounds(0, offsetInLastLine - 1); - renderer.disposeTextLayout(layout); - rect.x -= horizontalScrollOffset; - rect.intersect(clientArea); - redrawY = lastLine * lineHeight - verticalScrollOffset; - redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width; - draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground); - } - } -} -/** - * Fixes the widget to display a text change. - * Bit blitting and redrawing is done as necessary. - *

                                - * - * @param y y location of the text change - * @param newLineCount number of new lines. - * @param replacedLineCount number of replaced lines. - */ -void redrawMultiLineChange(int y, int newLineCount, int replacedLineCount) { - Rectangle clientArea = getClientArea(); - int lineCount = newLineCount - replacedLineCount; - int sourceY; - int destinationY; - - if (lineCount > 0) { - sourceY = Math.max(0, y + lineHeight); - destinationY = sourceY + lineCount * lineHeight; - } - else { - destinationY = Math.max(0, y + lineHeight); - sourceY = destinationY - lineCount * lineHeight; - } - scroll( - 0, destinationY, // destination x, y - 0, sourceY, // source x, y - clientArea.width, clientArea.height, true); - // Always redrawing causes the bottom line to flash when a line is - // deleted. This is because SWT merges the paint area of the scroll - // with the paint area of the redraw call below. - // To prevent this we could call update after the scroll. However, - // adding update can cause even more flash if the client does other - // redraw/update calls (ie. for syntax highlighting). - // We could also redraw only when a line has been added or when - // contents has been added to a line. This would require getting - // line index info from the content and is not worth the trouble - // (the flash is only on the bottom line and minor). - // Specifying the NO_MERGE_PAINTS style bit prevents the merged - // redraw but could cause flash/slowness elsewhere. - if (y + lineHeight > 0 && y <= clientArea.height) { - // redraw first changed line in case a line was split/joined - super.redraw(0, y, clientArea.width, lineHeight, true); - } - if (newLineCount > 0) { - int redrawStartY = y + lineHeight; - int redrawHeight = newLineCount * lineHeight; - - if (redrawStartY + redrawHeight > 0 && redrawStartY <= clientArea.height) { - // display new text - super.redraw(0, redrawStartY, clientArea.width, redrawHeight, true); - } - } -} -/** - * Redraws the specified text range. - *

                                - * - * @param start offset of the first character to redraw - * @param length number of characters to redraw - * @param clearBackground true if the background should be cleared as - * part of the redraw operation. If true, the entire redraw range will - * be cleared before anything is redrawn. If the redraw range includes - * the last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * The redraw operation will be faster and smoother if clearBackground - * is set to false. Whether or not the flag can be set to false depends - * on the type of change that has taken place. If font styles or - * background colors for the redraw range have changed, clearBackground - * should be set to true. If only foreground colors have changed for - * the redraw range, clearBackground can be set to false. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - */ -public void redrawRange(int start, int length, boolean clearBackground) { - checkWidget(); - int end = start + length; - int contentLength = content.getCharCount(); - int firstLine; - int lastLine; - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - firstLine = content.getLineAtOffset(start); - lastLine = content.getLineAtOffset(end); - // reset all affected lines but let the redraw recalculate only - // those that are visible. - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - internalRedrawRange(start, length, clearBackground); -} -/** - * Removes the specified bidirectional segment listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - * @since 2.0 - */ -public void removeBidiSegmentListener(BidiSegmentListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(LineGetSegments, listener); -} -/** - * Removes the specified extended modify listener. - *

                                - * - * @param extendedModifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { - checkWidget(); - if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(ExtendedModify, extendedModifyListener); -} -/** - * Removes the specified line background listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeLineBackgroundListener(LineBackgroundListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(LineGetBackground, listener); - // use default line styler if last user line styler was removed. - if (!isListening(LineGetBackground) && userLineBackground) { - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - addListener(LineGetBackground, typedListener); - userLineBackground = false; - } -} -/** - * Removes the specified line style listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeLineStyleListener(LineStyleListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(LineGetStyle, listener); - // use default line styler if last user line styler was removed. Fixes 1G7B1X2 - if (!isListening(LineGetStyle) && userLineStyle) { - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - addListener(LineGetStyle, typedListener); - userLineStyle = false; - } -} -/** - * Removes the specified modify listener. - *

                                - * - * @param modifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeModifyListener(ModifyListener modifyListener) { - checkWidget(); - if (modifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Modify, modifyListener); -} -/** - * Removes the specified selection listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeSelectionListener(SelectionListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Selection, listener); -} -/** - * Removes the specified verify listener. - *

                                - * - * @param verifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeVerifyListener(VerifyListener verifyListener) { - checkWidget(); - if (verifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Verify, verifyListener); -} -/** - * Removes the specified key verify listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeVerifyKeyListener(VerifyKeyListener listener) { - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(VerifyKey, listener); -} -/** - * Replaces the styles in the given range with new styles. This method - * effectively deletes the styles in the given range and then adds the - * the new styles. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param start offset of first character where styles will be deleted - * @param length length of the range to delete styles in - * @param ranges StyleRange objects containing the new style information. - * The ranges should not overlap and should be within the specified start - * and length. The style rendering is undefined if the ranges do overlap - * or are ill-defined. Must not be null. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())
                                • - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - * @since 2.0 - */ -public void replaceStyleRanges(int start, int length, StyleRange[] ranges) { - checkWidget(); - if (userLineStyle) { - return; - } - if (ranges == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (ranges.length == 0) { - setStyleRange(new StyleRange(start, length, null, null)); - return; - } - int end = start + length; - if (start > end || start < 0 || end > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int firstLine = content.getLineAtOffset(start); - int lastLine = content.getLineAtOffset(end); - - defaultLineStyler.replaceStyleRanges(start, length, ranges); - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - - // if the area is not visible, there is no need to redraw - if (isAreaVisible(firstLine, lastLine)) { - int redrawY = firstLine * lineHeight - verticalScrollOffset; - int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true); - } - - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Replaces the given text range with new text. - * If the widget has the SWT.SINGLE style and "text" contains more than - * one line, only the first line is rendered but the text is stored - * unchanged. A subsequent call to getText will return the same text - * that was set. Note that only a single line of text should be set when - * the SWT.SINGLE style is used. - *

                                - * NOTE: During the replace operation the current selection is - * changed as follows: - *

                                  - *
                                • selection before replaced text: selection unchanged - *
                                • selection after replaced text: adjust the selection so that same text - * remains selected - *
                                • selection intersects replaced text: selection is cleared and caret - * is placed after inserted text - *
                                - *

                                - * - * @param start offset of first character to replace - * @param length number of characters to replace. Use 0 to insert text - * @param text new text. May be empty to delete text. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())
                                • - *
                                • ERROR_INVALID_ARGUMENT when either start or end is inside a multi byte line delimiter. - * Splitting a line delimiter for example by inserting text in between the CR and LF and deleting part of a line delimiter is not supported
                                • - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void replaceTextRange(int start, int length, String text) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - Event event = new Event(); - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - if (text == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - event.start = start; - event.end = end; - event.text = text; - modifyContent(event, false); -} -/** - * Resets the caret position, selection and scroll offsets. Recalculate - * the content width and scroll bars. Redraw the widget. - */ -void reset() { - ScrollBar verticalBar = getVerticalBar(); - ScrollBar horizontalBar = getHorizontalBar(); - caretOffset = 0; - topIndex = 0; - topOffset = 0; - verticalScrollOffset = 0; - horizontalScrollOffset = 0; - resetSelection(); - // discard any styles that may have been set by creating a - // new default line styler - if (defaultLineStyler != null) { - removeLineBackgroundListener(defaultLineStyler); - removeLineStyleListener(defaultLineStyler); - installDefaultLineStyler(); - } - calculateContentWidth(); - if (verticalBar != null) { - verticalBar.setSelection(0); - } - if (horizontalBar != null) { - horizontalBar.setSelection(0); - } - setScrollBars(); - setCaretLocation(); - super.redraw(); -} -/** - * Resets the selection. - */ -void resetSelection() { - selection.x = selection.y = caretOffset; - selectionAnchor = -1; -} -/** - * Scrolls the widget horizontally. - *

                                - * - * @param pixels number of pixels to scroll, > 0 = scroll left, - * < 0 scroll right - */ -void scrollHorizontal(int pixels) { - Rectangle clientArea; - - if (pixels == 0) { - return; - } - clientArea = getClientArea(); - if (pixels > 0) { - int sourceX = leftMargin + pixels; - int scrollWidth = clientArea.width - sourceX - rightMargin; - int scrollHeight = clientArea.height - topMargin - bottomMargin; - scroll( - leftMargin, topMargin, // destination x, y - sourceX, topMargin, // source x, y - scrollWidth, scrollHeight, true); - if (sourceX > scrollWidth) { - // redraw from end of scrolled area to beginning of scroll - // invalidated area - super.redraw( - leftMargin + scrollWidth, topMargin, - pixels - scrollWidth, scrollHeight, true); - } - } - else { - int destinationX = leftMargin - pixels; - int scrollWidth = clientArea.width - destinationX - rightMargin; - int scrollHeight = clientArea.height - topMargin - bottomMargin; - scroll( - destinationX, topMargin, // destination x, y - leftMargin, topMargin, // source x, y - scrollWidth, scrollHeight, true); - if (destinationX > scrollWidth) { - // redraw from end of scroll invalidated area to scroll - // destination - super.redraw( - leftMargin + scrollWidth, topMargin, - -pixels - scrollWidth, scrollHeight, true); - } - } - horizontalScrollOffset += pixels; - int oldColumnX = columnX - pixels; - setCaretLocation(); - // restore the original horizontal caret index - columnX = oldColumnX; -} -/** - * Scrolls the widget horizontally and adjust the horizontal scroll - * bar to reflect the new horizontal offset.. - *

                                - * - * @param pixels number of pixels to scroll, > 0 = scroll left, - * < 0 scroll right - * @return - * true=the widget was scrolled - * false=the widget was not scrolled, the given offset is not valid. - */ -boolean scrollHorizontalBar(int pixels) { - if (pixels == 0) { - return false; - } - ScrollBar horizontalBar = getHorizontalBar(); - if (horizontalBar != null) { - horizontalBar.setSelection(horizontalScrollOffset + pixels); - } - scrollHorizontal(pixels); - return true; -} -/** - * Selects all the text. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void selectAll() { - checkWidget(); - setSelection(0, Math.max(getCharCount(),0)); -} -/** - * Replaces/inserts text as defined by the event. - *

                                - * - * @param event the text change event. - *

                                  - *
                                • event.start - the replace start offset
                                • - *
                                • event.end - the replace end offset
                                • - *
                                • event.text - the new text
                                • - *
                                - */ -void sendKeyEvent(Event event) { - if (editable) { - modifyContent(event, true); - } -} -void sendModifyEvent(Event event) { - Accessible accessible = getAccessible(); - if (event.text.length() == 0) { - accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); - } else { - if (event.start == event.end) { - accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length()); - } else { - accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); - accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length()); - } - } - notifyListeners(SWT.Modify, event); -} -/** - * Sends the specified selection event. - */ -void sendSelectionEvent() { - getAccessible().textSelectionChanged(); - Event event = new Event(); - event.x = selection.x; - event.y = selection.y; - notifyListeners(SWT.Selection, event); -} -/** - * Sets whether the widget wraps lines. - * This overrides the creation style bit SWT.WRAP. - *

                                - * - * @param wrap true=widget wraps lines, false=widget does not wrap lines - * @since 2.0 - */ -public void setWordWrap(boolean wrap) { - checkWidget(); - if ((getStyle() & SWT.SINGLE) != 0) return; - - if (wrap != wordWrap) { - ScrollBar horizontalBar = getHorizontalBar(); - - wordWrap = wrap; - if (wordWrap) { - logicalContent = content; - content = new WrappedContent(renderer, logicalContent); - } - else { - content = logicalContent; - } - calculateContentWidth(); - horizontalScrollOffset = 0; - if (horizontalBar != null) { - horizontalBar.setVisible(!wordWrap); - } - setScrollBars(); - setCaretLocation(); - super.redraw(); - } -} -/** - * Sets the receiver's caret. Set the caret's height and location. - * - *

                                - * @param caret the new caret for the receiver - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setCaret(Caret caret) { - checkWidget (); - super.setCaret(caret); - caretDirection = SWT.NULL; - if (caret != null) { - setCaretLocation(); - } -} -/** - * @see org.eclipse.swt.widgets.Control#setBackground - */ -public void setBackground(Color color) { - checkWidget(); - background = color; - super.setBackground(getBackground()); - redraw(); -} -/** - * Sets the BIDI coloring mode. When true the BIDI text display - * algorithm is applied to segments of text that are the same - * color. - * - * @param mode the new coloring mode - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - *

                                - * @deprecated use BidiSegmentListener instead. - *

                                - */ -public void setBidiColoring(boolean mode) { - checkWidget(); - bidiColoring = mode; -} -void setCaretLocation(int newCaretX, int line, int direction) { - Caret caret = getCaret(); - if (caret != null) { - boolean updateImage = caret == defaultCaret; - int imageDirection = direction; - if (isMirrored()) { - if (imageDirection == SWT.LEFT) { - imageDirection = SWT.RIGHT; - } else if (imageDirection == SWT.RIGHT) { - imageDirection = SWT.LEFT; - } - } - if (updateImage && imageDirection == SWT.RIGHT) { - newCaretX -= (caret.getSize().x - 1); - } - int newCaretY = line * lineHeight - verticalScrollOffset + topMargin; - caret.setLocation(newCaretX, newCaretY); - getAccessible().textCaretMoved(getCaretOffset()); - if (direction != caretDirection) { - caretDirection = direction; - if (updateImage) { - if (imageDirection == SWT.DEFAULT) { - defaultCaret.setImage(null); - } else if (imageDirection == SWT.LEFT) { - defaultCaret.setImage(leftCaretBitmap); - } else if (imageDirection == SWT.RIGHT) { - defaultCaret.setImage(rightCaretBitmap); - } - } - caret.setSize(caret.getSize().x, lineHeight); - if (caretDirection == SWT.LEFT) { - BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_NON_BIDI); - } else if (caretDirection == SWT.RIGHT) { - BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_BIDI); - } - } - } - columnX = newCaretX; -} -/** - * Moves the Caret to the current caret offset. - */ -void setCaretLocation() { - int lineIndex = getCaretLine(); - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, lineIndex, offsetInLine); - setCaretLocation(newCaretX, lineIndex, getCaretDirection()); -} -/** - * Sets the caret offset. - * - * @param offset caret offset, relative to the first character in the text. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setCaretOffset(int offset) { - checkWidget(); - int length = getCharCount(); - - if (length > 0 && offset != caretOffset) { - if (offset < 0) { - caretOffset = 0; - } - else - if (offset > length) { - caretOffset = length; - } - else { - if (isLineDelimiter(offset)) { - // offset is inside a multi byte line delimiter. This is an - // illegal operation and an exception is thrown. Fixes 1GDKK3R - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - caretOffset = offset; - } - // clear the selection if the caret is moved. - // don't notify listeners about the selection change. - clearSelection(false); - } - // always update the caret location. fixes 1G8FODP - setCaretLocation(); -} -/** - * Copies the specified text range to the clipboard. The text will be placed - * in the clipboard in plain text format and RTF format. - *

                                - * - * @param start start index of the text - * @param length length of text to place in clipboard - * - * @exception SWTError, see Clipboard.setContents - * @see org.eclipse.swt.dnd.Clipboard#setContents - */ -void setClipboardContent(int start, int length, int clipboardType) throws SWTError { - if (clipboardType == DND.SELECTION_CLIPBOARD && !(IS_MOTIF || IS_GTK)) return; - TextTransfer plainTextTransfer = TextTransfer.getInstance(); - TextWriter plainTextWriter = new TextWriter(start, length); - String plainText = getPlatformDelimitedText(plainTextWriter); - Object[] data; - Transfer[] types; - if (clipboardType == DND.SELECTION_CLIPBOARD) { - data = new Object[]{plainText}; - types = new Transfer[]{plainTextTransfer}; - } else { - RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - RTFWriter rtfWriter = new RTFWriter(start, length); - String rtfText = getPlatformDelimitedText(rtfWriter); - data = new Object[]{rtfText, plainText}; - types = new Transfer[]{rtfTransfer, plainTextTransfer}; - } - clipboard.setContents(data, types, clipboardType); -} -/** - * Sets the content implementation to use for text storage. - *

                                - * - * @param newContent StyledTextContent implementation to use for text storage. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void setContent(StyledTextContent newContent) { - checkWidget(); - if (newContent == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (content != null) { - content.removeTextChangeListener(textChangeListener); - } - logicalContent = newContent; - if (wordWrap) { - content = new WrappedContent(renderer, logicalContent); - } - else { - content = logicalContent; - } - content.addTextChangeListener(textChangeListener); - reset(); -} -/** - * Sets the receiver's cursor to the cursor specified by the - * argument. Overridden to handle the null case since the - * StyledText widget uses an ibeam as its default cursor. - * - * @see org.eclipse.swt.widgets.Control#setCursor - */ -public void setCursor (Cursor cursor) { - if (cursor == null) { - super.setCursor(ibeamCursor); - } else { - super.setCursor(cursor); - } -} -/** - * Sets whether the widget implements double click mouse behavior. - *

                                - * - * @param enable if true double clicking a word selects the word, if false - * double clicks have the same effect as regular mouse clicks. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setDoubleClickEnabled(boolean enable) { - checkWidget(); - doubleClickEnabled = enable; -} -/** - * Sets whether the widget content can be edited. - *

                                - * - * @param editable if true content can be edited, if false content can not be - * edited - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setEditable(boolean editable) { - checkWidget(); - this.editable = editable; -} -/** - * Sets a new font to render text with. - *

                                - * NOTE: Italic fonts are not supported unless they have no overhang - * and the same baseline as regular fonts. - *

                                - * - * @param font new font - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setFont(Font font) { - checkWidget(); - int oldLineHeight = lineHeight; - - super.setFont(font); - initializeRenderer(); - // keep the same top line visible. fixes 5815 - if (lineHeight != oldLineHeight) { - setVerticalScrollOffset(verticalScrollOffset * lineHeight / oldLineHeight, true); - claimBottomFreeSpace(); - } - calculateContentWidth(); - calculateScrollBars(); - if (isBidiCaret()) createCaretBitmaps(); - caretDirection = SWT.NULL; - // always set the caret location. Fixes 6685 - setCaretLocation(); - super.redraw(); -} -/** - * @see org.eclipse.swt.widgets.Control#setForeground - */ -public void setForeground(Color color) { - checkWidget(); - foreground = color; - super.setForeground(getForeground()); - redraw(); -} -/** - * Sets the horizontal scroll offset relative to the start of the line. - * Do nothing if there is no text set. - *

                                - * NOTE: The horizontal index is reset to 0 when new text is set in the - * widget. - *

                                - * - * @param offset horizontal scroll offset relative to the start - * of the line, measured in character increments starting at 0, if - * equal to 0 the content is not scrolled, if > 0 = the content is scrolled. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setHorizontalIndex(int offset) { - checkWidget(); - int clientAreaWidth = getClientArea().width; - if (getCharCount() == 0) { - return; - } - if (offset < 0) { - offset = 0; - } - offset *= getHorizontalIncrement(); - // allow any value if client area width is unknown or 0. - // offset will be checked in resize handler. - // don't use isVisible since width is known even if widget - // is temporarily invisible - if (clientAreaWidth > 0) { - int width = lineCache.getWidth(); - // prevent scrolling if the content fits in the client area. - // align end of longest line with right border of client area - // if offset is out of range. - if (offset > width - clientAreaWidth) { - offset = Math.max(0, width - clientAreaWidth); - } - } - scrollHorizontalBar(offset - horizontalScrollOffset); -} -/** - * Sets the horizontal pixel offset relative to the start of the line. - * Do nothing if there is no text set. - *

                                - * NOTE: The horizontal pixel offset is reset to 0 when new text - * is set in the widget. - *

                                - * - * @param pixel horizontal pixel offset relative to the start - * of the line. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.0 - */ -public void setHorizontalPixel(int pixel) { - checkWidget(); - int clientAreaWidth = getClientArea().width; - if (getCharCount() == 0) { - return; - } - if (pixel < 0) { - pixel = 0; - } - // allow any value if client area width is unknown or 0. - // offset will be checked in resize handler. - // don't use isVisible since width is known even if widget - // is temporarily invisible - if (clientAreaWidth > 0) { - int width = lineCache.getWidth(); - // prevent scrolling if the content fits in the client area. - // align end of longest line with right border of client area - // if offset is out of range. - if (pixel > width - clientAreaWidth) { - pixel = Math.max(0, width - clientAreaWidth); - } - } - scrollHorizontalBar(pixel - horizontalScrollOffset); -} -/** - * Adjusts the maximum and the page size of the horizontal scroll bar - * to reflect content width changes. - */ -void setHorizontalScrollBar() { - ScrollBar horizontalBar = getHorizontalBar(); - - if (horizontalBar != null && horizontalBar.getVisible()) { - final int INACTIVE = 1; - Rectangle clientArea = getClientArea(); - // only set the real values if the scroll bar can be used - // (ie. because the thumb size is less than the scroll maximum) - // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 - if (clientArea.width < lineCache.getWidth()) { - horizontalBar.setValues( - horizontalBar.getSelection(), - horizontalBar.getMinimum(), - lineCache.getWidth(), // maximum - clientArea.width - leftMargin - rightMargin, // thumb size - horizontalBar.getIncrement(), - clientArea.width - leftMargin - rightMargin); // page size - } - else - if (horizontalBar.getThumb() != INACTIVE || horizontalBar.getMaximum() != INACTIVE) { - horizontalBar.setValues( - horizontalBar.getSelection(), - horizontalBar.getMinimum(), - INACTIVE, - INACTIVE, - horizontalBar.getIncrement(), - INACTIVE); - } - } -} -/** - * Sets the background color of the specified lines. - * The background color is drawn for the width of the widget. All - * line background colors are discarded when setText is called. - * The text background color if defined in a StyleRange overlays the - * line background color. Should not be called if a LineBackgroundListener - * has been set since the listener maintains the line backgrounds. - *

                                - * Line background colors are maintained relative to the line text, not the - * line index that is specified in this method call. - * During text changes, when entire lines are inserted or removed, the line - * background colors that are associated with the lines after the change - * will "move" with their respective text. An entire line is defined as - * extending from the first character on a line to the last and including the - * line delimiter. - *

                                - *

                                - * When two lines are joined by deleting a line delimiter, the top line - * background takes precedence and the color of the bottom line is deleted. - * For all other text changes line background colors will remain unchanged. - *

                                - * - * @param startLine first line the color is applied to, 0 based - * @param lineCount number of lines the color applies to. - * @param background line background color - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the specified line range is invalid
                                • - *
                                - */ -public void setLineBackground(int startLine, int lineCount, Color background) { - checkWidget(); - int partialBottomIndex = getPartialBottomIndex(); - - // this API can not be used if the client is providing the line background - if (userLineBackground) { - return; - } - if (startLine < 0 || startLine + lineCount > logicalContent.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - defaultLineStyler.setLineBackground(startLine, lineCount, background); - // do nothing if redraw range is completely invisible - if (startLine > partialBottomIndex || startLine + lineCount - 1 < topIndex) { - return; - } - // only redraw visible lines - if (startLine < topIndex) { - lineCount -= topIndex - startLine; - startLine = topIndex; - } - if (startLine + lineCount - 1 > partialBottomIndex) { - lineCount = partialBottomIndex - startLine + 1; - } - startLine -= topIndex; - super.redraw( - leftMargin, startLine * lineHeight + topMargin, - getClientArea().width - leftMargin - rightMargin, lineCount * lineHeight, true); -} -/** - * Flips selection anchor based on word selection direction. - */ -void setMouseWordSelectionAnchor() { - if (mouseDoubleClick) { - if (caretOffset < doubleClickSelection.x) { - selectionAnchor = doubleClickSelection.y; - } - else if (caretOffset > doubleClickSelection.y) { - selectionAnchor = doubleClickSelection.x; - } - } -} -/** - * Sets the orientation of the receiver, which must be one - * of the constants SWT.LEFT_TO_RIGHT or SWT.RIGHT_TO_LEFT. - *

                                - * - * @param orientation new orientation style - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 2.1.2 - */ -public void setOrientation(int orientation) { - if ((orientation & (SWT.RIGHT_TO_LEFT | SWT.LEFT_TO_RIGHT)) == 0) { - return; - } - if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && (orientation & SWT.LEFT_TO_RIGHT) != 0) { - return; - } - if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && isMirrored()) { - return; - } - if ((orientation & SWT.LEFT_TO_RIGHT) != 0 && !isMirrored()) { - return; - } - if (!BidiUtil.setOrientation(handle, orientation)) { - return; - } - isMirrored = (orientation & SWT.RIGHT_TO_LEFT) != 0; - initializeRenderer(); - caretDirection = SWT.NULL; - setCaretLocation(); - keyActionMap.clear(); - createKeyBindings(); - super.redraw(); -} -/** - * Adjusts the maximum and the page size of the scroll bars to - * reflect content width/length changes. - */ -void setScrollBars() { - ScrollBar verticalBar = getVerticalBar(); - - if (verticalBar != null) { - Rectangle clientArea = getClientArea(); - final int INACTIVE = 1; - int maximum = content.getLineCount() * getVerticalIncrement(); - - // only set the real values if the scroll bar can be used - // (ie. because the thumb size is less than the scroll maximum) - // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 - if (clientArea.height < maximum) { - verticalBar.setValues( - verticalBar.getSelection(), - verticalBar.getMinimum(), - maximum, - clientArea.height, // thumb size - verticalBar.getIncrement(), - clientArea.height); // page size - } - else - if (verticalBar.getThumb() != INACTIVE || verticalBar.getMaximum() != INACTIVE) { - verticalBar.setValues( - verticalBar.getSelection(), - verticalBar.getMinimum(), - INACTIVE, - INACTIVE, - verticalBar.getIncrement(), - INACTIVE); - } - } - setHorizontalScrollBar(); -} -/** - * Sets the selection to the given position and scrolls it into view. Equivalent to setSelection(start,start). - *

                                - * - * @param start new caret position - * @see #setSelection(int,int) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(int start) { - // checkWidget test done in setSelectionRange - setSelection(start, start); -} -/** - * Sets the selection and scrolls it into view. - *

                                - * Indexing is zero based. Text selections are specified in terms of - * caret positions. In a text widget that contains N characters, there are - * N+1 caret positions, ranging from 0..N - *

                                - * - * @param point x=selection start offset, y=selection end offset - * The caret will be placed at the selection start when x > y. - * @see #setSelection(int,int) - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when point is null
                                • - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(Point point) { - checkWidget(); - if (point == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); - setSelection(point.x, point.y); -} -/** - * Sets the receiver's selection background color to the color specified - * by the argument, or to the default system color for the control - * if the argument is null. - * - * @param color the new color (or null) - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT - if the argument has been disposed
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public void setSelectionBackground (Color color) { - checkWidget (); - if (color != null) { - if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - selectionBackground = color; - redraw(); -} -/** - * Sets the receiver's selection foreground color to the color specified - * by the argument, or to the default system color for the control - * if the argument is null. - * - * @param color the new color (or null) - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT - if the argument has been disposed
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public void setSelectionForeground (Color color) { - checkWidget (); - if (color != null) { - if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - selectionForeground = color; - redraw(); -} -/** - * Sets the selection and scrolls it into view. - *

                                - * Indexing is zero based. Text selections are specified in terms of - * caret positions. In a text widget that contains N characters, there are - * N+1 caret positions, ranging from 0..N - *

                                - * - * @param start selection start offset. The caret will be placed at the - * selection start when start > end. - * @param end selection end offset - * @see #setSelectionRange(int,int) - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(int start, int end) { - // checkWidget test done in setSelectionRange - setSelectionRange(start, end - start); - showSelection(); -} -/** - * Sets the selection. The new selection may not be visible. Call showSelection to scroll - * the selection into view. A negative length places the caret at the visual start of the - * selection.

                                - * - * @param start offset of the first selected character - * @param length number of characters to select - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelectionRange(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - start = Math.max(0, Math.min (start, contentLength)); - int end = start + length; - if (end < 0) { - length = -start; - } else { - if (end > contentLength) length = contentLength - start; - } - if (isLineDelimiter(start) || isLineDelimiter(start + length)) { - // the start offset or end offset of the selection range is inside a - // multi byte line delimiter. This is an illegal operation and an exception - // is thrown. Fixes 1GDKK3R - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - internalSetSelection(start, length, false); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets the selection. - * The new selection may not be visible. Call showSelection to scroll - * the selection into view. - *

                                - * - * @param start offset of the first selected character, start >= 0 must be true. - * @param length number of characters to select, 0 <= start + length - * <= getCharCount() must be true. - * A negative length places the caret at the selection start. - * @param sendEvent a Selection event is sent when set to true and when - * the selection is reset. - */ -void internalSetSelection(int start, int length, boolean sendEvent) { - int end = start + length; - - if (start > end) { - int temp = end; - end = start; - start = temp; - } - // is the selection range different or is the selection direction - // different? - if (selection.x != start || selection.y != end || - (length > 0 && selectionAnchor != selection.x) || - (length < 0 && selectionAnchor != selection.y)) { - clearSelection(sendEvent); - if (length < 0) { - selectionAnchor = selection.y = end; - caretOffset = selection.x = start; - } - else { - selectionAnchor = selection.x = start; - caretOffset = selection.y = end; - } - internalRedrawRange(selection.x, selection.y - selection.x, true); - } -} -/** - * Adds the specified style. The new style overwrites existing styles for the - * specified range. Existing style ranges are adjusted if they partially - * overlap with the new style, To clear an individual style, call setStyleRange - * with a StyleRange that has null attributes. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param range StyleRange object containing the style information. - * Overwrites the old style in the given range. May be null to delete - * all styles. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the style range is outside the valid range (> getCharCount())
                                • - *
                                - */ -public void setStyleRange(StyleRange range) { - checkWidget(); - - // this API can not be used if the client is providing the line styles - if (userLineStyle) { - return; - } - // check the range, make sure it falls within the range of the text - if (range != null && range.start + range.length > content.getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - defaultLineStyler.setStyleRange(range); - if (range != null) { - int firstLine = content.getLineAtOffset(range.start); - int lastLine = content.getLineAtOffset(range.start + range.length); - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - - // if the style is not visible, there is no need to redraw - if (isAreaVisible(firstLine, lastLine)) { - int redrawY = firstLine * lineHeight - verticalScrollOffset; - int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true); - } - } else { - // clearing all styles - lineCache.reset(0, content.getLineCount(), false); - redraw(); - } - - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets styles to be used for rendering the widget content. All styles - * in the widget will be replaced with the given set of styles. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param ranges StyleRange objects containing the style information. - * The ranges should not overlap. The style rendering is undefined if - * the ranges do overlap. Must not be null. The styles need to be in order. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                • ERROR_INVALID_RANGE when the last of the style ranges is outside the valid range (> getCharCount())
                                • - *
                                - */ -public void setStyleRanges(StyleRange[] ranges) { - checkWidget(); - // this API can not be used if the client is providing the line styles - if (userLineStyle) { - return; - } - if (ranges == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - // check the last range, make sure it falls within the range of the - // current text - if (ranges.length != 0) { - StyleRange last = ranges[ranges.length-1]; - int lastEnd = last.start + last.length; - int firstLine = content.getLineAtOffset(ranges[0].start); - int lastLine; - if (lastEnd > content.getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - lastLine = content.getLineAtOffset(lastEnd); - // reset all lines affected by the style change - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - } - else { - // reset all lines - lineCache.reset(0, content.getLineCount(), false); - } - defaultLineStyler.setStyleRanges(ranges); - redraw(); // should only redraw affected area to avoid flashing - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets the tab width. - *

                                - * - * @param tabs tab width measured in characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setTabs(int tabs) { - checkWidget(); - tabLength = tabs; - renderer.setTabLength(tabLength); - if (caretOffset > 0) { - caretOffset = 0; - showCaret(); - clearSelection(false); - } - // reset all line widths when the tab width changes - lineCache.reset(0, content.getLineCount(), false); - redraw(); -} -/** - * Sets the widget content. - * If the widget has the SWT.SINGLE style and "text" contains more than - * one line, only the first line is rendered but the text is stored - * unchanged. A subsequent call to getText will return the same text - * that was set. - *

                                - * Note: Only a single line of text should be set when the SWT.SINGLE - * style is used. - *

                                - * - * @param text new widget content. Replaces existing content. Line styles - * that were set using StyledText API are discarded. The - * current selection is also discarded. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void setText(String text) { - checkWidget(); - Event event = new Event(); - - if (text == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - event.start = 0; - event.end = getCharCount(); - event.text = text; - event.doit = true; - notifyListeners(SWT.Verify, event); - if (event.doit) { - StyledTextEvent styledTextEvent = null; - - if (isListening(ExtendedModify)) { - styledTextEvent = new StyledTextEvent(logicalContent); - styledTextEvent.start = event.start; - styledTextEvent.end = event.start + event.text.length(); - styledTextEvent.text = content.getTextRange(event.start, event.end - event.start); - } - content.setText(event.text); - sendModifyEvent(event); - if (styledTextEvent != null) { - notifyListeners(ExtendedModify, styledTextEvent); - } - } -} -/** - * Sets the text limit to the specified number of characters. - *

                                - * The text limit specifies the amount of text that - * the user can type into the widget. - *

                                - * - * @param limit the new text limit. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_CANNOT_BE_ZERO when limit is 0
                                • - *
                                - */ -public void setTextLimit(int limit) { - checkWidget(); - if (limit == 0) { - SWT.error(SWT.ERROR_CANNOT_BE_ZERO); - } - textLimit = limit; -} -/** - * Sets the top index. Do nothing if there is no text set. - *

                                - * The top index is the index of the line that is currently at the top - * of the widget. The top index changes when the widget is scrolled. - * Indexing starts from zero. - * Note: The top index is reset to 0 when new text is set in the widget. - *

                                - * - * @param topIndex new top index. Must be between 0 and - * getLineCount() - fully visible lines per page. If no lines are fully - * visible the maximum value is getLineCount() - 1. An out of range - * index will be adjusted accordingly. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setTopIndex(int topIndex) { - checkWidget(); - int lineCount = logicalContent.getLineCount(); - int pageSize = Math.max(1, Math.min(lineCount, getLineCountWhole())); - - if (getCharCount() == 0) { - return; - } - if (topIndex < 0) { - topIndex = 0; - } - else - if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - if (wordWrap) { - int logicalLineOffset = logicalContent.getOffsetAtLine(topIndex); - topIndex = content.getLineAtOffset(logicalLineOffset); - } - setVerticalScrollOffset(topIndex * getVerticalIncrement(), true); -} -/** - * Sets the top pixel offset. Do nothing if there is no text set. - *

                                - * The top pixel offset is the vertical pixel offset of the widget. The - * widget is scrolled so that the given pixel position is at the top. - * The top index is adjusted to the corresponding top line. - * Note: The top pixel is reset to 0 when new text is set in the widget. - *

                                - * - * @param pixel new top pixel offset. Must be between 0 and - * (getLineCount() - visible lines per page) / getLineHeight()). An out - * of range offset will be adjusted accordingly. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.0 - */ -public void setTopPixel(int pixel) { - checkWidget(); - int lineCount =content.getLineCount(); - int height = getClientArea().height; - int maxTopPixel = Math.max(0, lineCount * getVerticalIncrement() - height); - - if (getCharCount() == 0) { - return; - } - if (pixel < 0) { - pixel = 0; - } - else - if (pixel > maxTopPixel) { - pixel = maxTopPixel; - } - setVerticalScrollOffset(pixel, true); -} -/** - * Scrolls the widget vertically. - *

                                - * - * @param pixelOffset the new vertical scroll offset - * @param adjustScrollBar - * true= the scroll thumb will be moved to reflect the new scroll offset. - * false = the scroll thumb will not be moved - * @return - * true=the widget was scrolled - * false=the widget was not scrolled, the given offset is not valid. - */ -boolean setVerticalScrollOffset(int pixelOffset, boolean adjustScrollBar) { - Rectangle clientArea; - ScrollBar verticalBar = getVerticalBar(); - - if (pixelOffset == verticalScrollOffset) { - return false; - } - if (verticalBar != null && adjustScrollBar) { - verticalBar.setSelection(pixelOffset); - } - clientArea = getClientArea(); - scroll( - 0, 0, // destination x, y - 0, pixelOffset - verticalScrollOffset, // source x, y - clientArea.width, clientArea.height, true); - - verticalScrollOffset = pixelOffset; - calculateTopIndex(); - int oldColumnX = columnX; - setCaretLocation(); - // restore the original horizontal caret index - columnX = oldColumnX; - return true; -} -/** - * Scrolls the specified location into view. - *

                                - * - * @param x the x coordinate that should be made visible. - * @param line the line that should be made visible. Relative to the - * first line in the document. - * @return - * true=the widget was scrolled to make the specified location visible. - * false=the specified location is already visible, the widget was - * not scrolled. - */ -boolean showLocation(int x, int line) { - int clientAreaWidth = getClientArea().width - leftMargin; - int verticalIncrement = getVerticalIncrement(); - int horizontalIncrement = clientAreaWidth / 4; - boolean scrolled = false; - - if (x < leftMargin) { - // always make 1/4 of a page visible - x = Math.max(horizontalScrollOffset * -1, x - horizontalIncrement); - scrolled = scrollHorizontalBar(x); - } - else - if (x >= clientAreaWidth) { - // always make 1/4 of a page visible - x = Math.min(lineCache.getWidth() - horizontalScrollOffset, x + horizontalIncrement); - scrolled = scrollHorizontalBar(x - clientAreaWidth); - } - if (line < topIndex) { - scrolled = setVerticalScrollOffset(line * verticalIncrement, true); - } - else - if (line > getBottomIndex()) { - scrolled = setVerticalScrollOffset((line + 1) * verticalIncrement - getClientArea().height, true); - } - return scrolled; -} -/** - * Sets the caret location and scrolls the caret offset into view. - */ -void showCaret() { - int caretLine = content.getLineAtOffset(caretOffset); - - showCaret(caretLine); -} -/** - * Sets the caret location and scrolls the caret offset into view. - */ -void showCaret(int caretLine) { - int lineOffset = content.getOffsetAtLine(caretLine); - String line = content.getLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, caretLine, offsetInLine); - boolean scrolled = showLocation(newCaretX, caretLine); - boolean setWrapCaretLocation = false; - Caret caret = getCaret(); - - if (wordWrap && caret != null) { - int caretY = caret.getLocation().y; - if ((caretY + verticalScrollOffset) / getVerticalIncrement() - 1 != caretLine) { - setWrapCaretLocation = true; - } - } - if (!scrolled || setWrapCaretLocation) { - // set the caret location if a scroll operation did not set it (as a - // sideeffect of scrolling) or when in word wrap mode and the caret - // line was explicitly specified (i.e., because getWrapCaretLine does - // not return the desired line causing scrolling to not set it correctly) - setCaretLocation(newCaretX, caretLine, getCaretDirection()); - } -} -/** - * Scrolls the specified offset into view. - *

                                - * - * @param offset offset that should be scolled into view - */ -void showOffset(int offset) { - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - int offsetInLine = offset - lineOffset; - String lineText = content.getLine(line); - int xAtOffset = getXAtOffset(lineText, line, offsetInLine); - - showLocation(xAtOffset, line); -} -/** -/** - * Scrolls the selection into view. The end of the selection will be scrolled into - * view. Note that if a right-to-left selection exists, the end of the selection is the - * visual beginning of the selection (i.e., where the caret is located). - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void showSelection() { - checkWidget(); - boolean selectionFits; - int startOffset, startLine, startX, endOffset, endLine, endX, offsetInLine; - - // is selection from right-to-left? - boolean rightToLeft = caretOffset == selection.x; - - if (rightToLeft) { - startOffset = selection.y; - endOffset = selection.x; - } else { - startOffset = selection.x; - endOffset = selection.y; - } - - // calculate the logical start and end values for the selection - startLine = content.getLineAtOffset(startOffset); - offsetInLine = startOffset - content.getOffsetAtLine(startLine); - startX = getXAtOffset(content.getLine(startLine), startLine, offsetInLine); - endLine = content.getLineAtOffset(endOffset); - offsetInLine = endOffset - content.getOffsetAtLine(endLine); - endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine); - - // can the selection be fully displayed within the widget's visible width? - int w = getClientArea().width; - if (rightToLeft) { - selectionFits = startX - endX <= w; - } else { - selectionFits = endX - startX <= w; - } - - if (selectionFits) { - // show as much of the selection as possible by first showing - // the start of the selection - showLocation(startX, startLine); - // endX value could change if showing startX caused a scroll to occur - endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine); - showLocation(endX, endLine); - } else { - // just show the end of the selection since the selection start - // will not be visible - showLocation(endX, endLine); - } -} -boolean isBidiCaret() { - return BidiUtil.isBidiPlatform(); -} -/** - * Updates the selection and caret position depending on the text change. - * If the selection intersects with the replaced text, the selection is - * reset and the caret moved to the end of the new text. - * If the selection is behind the replaced text it is moved so that the - * same text remains selected. If the selection is before the replaced text - * it is left unchanged. - *

                                - * - * @param startOffset offset of the text change - * @param replacedLength length of text being replaced - * @param newLength length of new text - */ -void updateSelection(int startOffset, int replacedLength, int newLength) { - if (selection.y <= startOffset) { - // selection ends before text change - return; - } - if (selection.x < startOffset) { - // clear selection fragment before text change - internalRedrawRange(selection.x, startOffset - selection.x, true); - } - if (selection.y > startOffset + replacedLength && selection.x < startOffset + replacedLength) { - // clear selection fragment after text change. - // do this only when the selection is actually affected by the - // change. Selection is only affected if it intersects the change (1GDY217). - int netNewLength = newLength - replacedLength; - int redrawStart = startOffset + newLength; - internalRedrawRange(redrawStart, selection.y + netNewLength - redrawStart, true); - } - if (selection.y > startOffset && selection.x < startOffset + replacedLength) { - // selection intersects replaced text. set caret behind text change - internalSetSelection(startOffset + newLength, 0, true); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); - } - else { - // move selection to keep same text selected - internalSetSelection(selection.x + newLength - replacedLength, selection.y - selection.x, true); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); - } -} -/** - * Rewraps all lines - *

                                - * - * @param oldClientAreaWidth client area width before resize - * occurred - */ -void wordWrapResize(int oldClientAreaWidth) { - WrappedContent wrappedContent = (WrappedContent) content; - int newTopIndex; - - // all lines are wrapped and no rewrap required if widget has already - // been visible, client area is now wider and visual (wrapped) line - // count equals logical line count. - if (oldClientAreaWidth != 0 && clientAreaWidth > oldClientAreaWidth && - wrappedContent.getLineCount() == logicalContent.getLineCount()) { - return; - } - wrappedContent.wrapLines(); - - // adjust the top index so that top line remains the same - newTopIndex = content.getLineAtOffset(topOffset); - // topOffset is the beginning of the top line. therefore it - // needs to be adjusted because in a wrapped line this is also - // the end of the preceeding line. - if (newTopIndex < content.getLineCount() - 1 && - topOffset == content.getOffsetAtLine(newTopIndex + 1)) { - newTopIndex++; - } - if (newTopIndex != topIndex) { - ScrollBar verticalBar = getVerticalBar(); - // adjust index and pixel offset manually instead of calling - // setVerticalScrollOffset because the widget does not actually need - // to be scrolled. causes flash otherwise. - verticalScrollOffset += (newTopIndex - topIndex) * getVerticalIncrement(); - // verticalScrollOffset may become negative if first line was - // partially visible and second line was top line. prevent this from - // happening to fix 8503. - if (verticalScrollOffset < 0) { - verticalScrollOffset = 0; - } - topIndex = newTopIndex; - topOffset = content.getOffsetAtLine(topIndex); - if (verticalBar != null) { - verticalBar.setSelection(verticalScrollOffset); - } - } - // caret may be on a different line after a rewrap. - // call setCaretLocation after fixing vertical scroll offset. - setCaretLocation(); - // word wrap may have changed on one of the visible lines - super.redraw(); -} -} diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/todo.gif b/branches/firebug1.5/sandbox/sandbox/orion/samples/todo.gif deleted file mode 100644 index 0bbc98a7..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion/samples/todo.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion/samples/undoStack.js b/branches/firebug1.5/sandbox/sandbox/orion/samples/undoStack.js deleted file mode 100644 index eab28efa..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion/samples/undoStack.js +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -var eclipse = eclipse || {}; - -eclipse.UndoStack = (function() { - var Change = (function() { - function Change(offset, text, previousText) { - this.offset = offset; - this.text = text; - this.previousText = previousText; - } - Change.prototype = { - undo: function (editor, select) { - this._doUndoRedo(this.offset, this.previousText, this.text, editor, select); - }, - redo: function (editor, select) { - this._doUndoRedo(this.offset, this.text, this.previousText, editor, select); - }, - _doUndoRedo: function(offset, text, previousText, editor, select) { - editor.setText(text, offset, offset + previousText.length); - if (select) { - editor.setSelection(offset, offset + text.length); - } - } - }; - return Change; - }()); - - var CompoundChange = (function() { - function CompoundChange (selection, caret) { - this.selection = selection; - this.caret = caret; - this.changes = []; - } - CompoundChange.prototype = { - add: function (change) { - this.changes.push(change); - }, - undo: function (editor, select) { - for (var i=this.changes.length - 1; i >= 0; i--) { - this.changes[i].undo(editor, false); - } - if (select) { - var start = this.selection.start; - var end = this.selection.end; - editor.setSelection(this.caret ? start : end, this.caret ? end : start); - } - }, - redo: function (editor, select) { - for (var i = 0; i < this.changes.length; i++) { - this.changes[i].redo(editor, false); - } - if (select) { - var start = this.selection.start; - var end = this.selection.end; - editor.setSelection(this.caret ? start : end, this.caret ? end : start); - } - } - }; - return CompoundChange; - }()); - - function UndoStack (editor, size) { - this.editor = editor; - this.size = size !== undefined ? size : 100; - this.reset(); - editor.addEventListener("ModelChanging", this, this._onModelChanging); - editor.addEventListener("Destroy", this, this._onDestroy); - } - UndoStack.prototype = { - add: function (change) { - if (this.compoundChange) { - this.compoundChange.add(change); - } else { - var length = this.stack.length; - this.stack.splice(this.index, length-this.index, change); - this.index++; - if (this.stack.length > this.size) { - this.stack.shift(); - this.index--; - this.cleanIndex--; - } - } - }, - markClean: function() { - this.endCompoundChange(); - this._commitUndo(); - this.cleanIndex = this.index; - }, - isClean: function() { - return this.cleanIndex === this.getSize().undo; - }, - canUndo: function() { - return this.getSize().undo > 0; - }, - canRedo: function() { - return this.getSize().redo > 0; - }, - endCompoundChange: function() { - this.compoundChange = undefined; - }, - getSize: function() { - var index = this.index; - var length = this.stack.length; - if (this._undoStart !== undefined) { - index++; - } - return {undo: index, redo: (length - index)}; - }, - undo: function() { - this._commitUndo(); - if (this.index <= 0) { - return false; - } - var change = this.stack[--this.index]; - this._ignoreUndo = true; - change.undo(this.editor, true); - this._ignoreUndo = false; - return true; - }, - redo: function() { - this._commitUndo(); - if (this.index >= this.stack.length) { - return false; - } - var change = this.stack[this.index++]; - this._ignoreUndo = true; - change.redo(this.editor, true); - this._ignoreUndo = false; - return true; - }, - reset: function() { - this.index = this.cleanIndex = 0; - this.stack = []; - this._undoStart = undefined; - this._undoText = ""; - this._ignoreUndo = false; - this._compoundChange = undefined; - }, - startCompoundChange: function() { - var change = new CompoundChange(this.editor.getSelection(), this.editor.getCaretOffset()); - this.add(change); - this.compoundChange = change; - }, - _commitUndo: function () { - if (this._undoStart !== undefined) { - if (this._undoStart < 0) { - this.add(new Change(-this._undoStart, "", this._undoText, "")); - } else { - this.add(new Change(this._undoStart, this._undoText, "")); - } - this._undoStart = undefined; - this._undoText = ""; - } - }, - _onDestroy: function() { - this.editor.removeEventListener("ModelChanging", this, this._onModelChanging); - this.editor.removeEventListener("Destroy", this, this._onDestroy); - }, - _onModelChanging: function(e) { - var newText = e.text; - var start = e.start; - var removedCharCount = e.removedCharCount; - var addedCharCount = e.addedCharCount; - if (this._ignoreUndo) { - return; - } - if (this._undoStart !== undefined && - !((addedCharCount === 1 && removedCharCount === 0 && start === this._undoStart + this._undoText.length) || - (addedCharCount === 0 && removedCharCount === 1 && (((start + 1) === -this._undoStart) || (start === -this._undoStart))))) - { - this._commitUndo(); - } - if (!this.compoundChange) { - if (addedCharCount === 1 && removedCharCount === 0) { - if (this._undoStart === undefined) { - this._undoStart = start; - } - this._undoText = this._undoText + newText; - return; - } else if (addedCharCount === 0 && removedCharCount === 1) { - var deleting = this._undoText.length > 0 && -this._undoStart === start; - this._undoStart = -start; - if (deleting) { - this._undoText = this._undoText + this.editor.getText(start, start + removedCharCount); - } else { - this._undoText = this.editor.getText(start, start + removedCharCount) + this._undoText; - } - return; - } - } - this.add(new Change(start, newText, this.editor.getText(start, start + removedCharCount))); - } - }; - return UndoStack; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/editor.css b/branches/firebug1.5/sandbox/sandbox/orion_nightly/editor.css deleted file mode 100644 index 1a3a6f5a..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/editor.css +++ /dev/null @@ -1,93 +0,0 @@ -.editor { - background-color: white; -} - -.editorContainer { - font-family: monospace; - font-size: 10pt; -} - -.editorContent { -} - -.token_comment { - color: green; -} - -.token_javadoc { - color: #00008F; -} - -.token_string { - color: blue; -} - -.token_keyword { - color: darkred; - font-weight: bold; -} - -.token_bracket_outline { - outline: 1px solid red; -} - -.token_bracket { - color: white; - background-color: grey; -} - -.token_space { - background-image: url('/editor/samples/space.png'); - background-repeat: no-repeat; - background-position: center center; -} - -.token_tab { - background-image: url('/editor/samples/tab.png'); - background-repeat: no-repeat; - background-position: left center; -} - -.line_caret { - background-color: #EAF2FE; -} - -.ruler_annotation { - background-color: #e1ebfb; - width: 16px; -} - -.ruler_annotation_todo { -} - -.ruler_annotation_todo_overview { - background-color: lightgreen; - border: 1px solid green; -} - -.ruler_annotation_breakpoint { -} - -.ruler_annotation_breakpoint_overview { - background-color: lightblue; - border: 1px solid blue; -} - -.ruler_lines { - background-color: #e1ebfb; - border-right: 1px solid #b1badf; - text-align: right; -} - -.ruler_overview { - background-color: #e1ebfb; -} - -.ruler_lines_even { - background-color: #e1ebfb; -} - -.ruler_lines_odd { - background-color: white; -} - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-model.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-model.js deleted file mode 100644 index 7eaf8be5..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-model.js +++ /dev/null @@ -1,200 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global assertEquals eclipse */ - -TextModelTestCase = TestCase("TextModelTestCase"); - -TextModelTestCase.prototype = { - test_Empty: function () { - var content = new eclipse.TextModel(); - assertEquals(":1a:", content.getLineCount(), 1); - assertEquals(":1b:", content.getLine(0), ""); - - content.setText("test"); - content.setText("", 0, 4); - assertEquals(":2a:", content.getLineCount(), 1); - assertEquals(":2b:", content.getLine(0), ""); - }, - test_Insert: function () { - var content = new eclipse.TextModel(); - var newText; - - content.setText("This\nis a test\r"); - content.setText("test\n ", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":1a:", ("test\n This\nis a test\r"), newText); - assertEquals(":1b:", 4, content.getLineCount()); - assertEquals(":1c:", ("test"), content.getLine(0)); - assertEquals(":1d:", (" This"), content.getLine(1)); - assertEquals(":1e:", ("is a test"), content.getLine(2)); - assertEquals(":1f:", (""), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("*** ", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":2a:", ("This\n*** is a test\r"), newText); - assertEquals(":2b:", 3, content.getLineCount()); - assertEquals(":2c:", ("This"), content.getLine(0)); - assertEquals(":2d:", ("*** is a test"), content.getLine(1)); - assertEquals(":2e:", (""), content.getLine(2)); - - content.setText("Line 1\r\nLine 2"); - content.setText("\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":3a:", ("\rLine 1\r\nLine 2"), newText); - assertEquals(":3b:", 3, content.getLineCount()); - assertEquals(":3c:", (""), content.getLine(0)); - assertEquals(":3d:", ("Line 1"), content.getLine(1)); - assertEquals(":3e:", ("Line 2"), content.getLine(2)); - content.setText("\r", 9, 9); - newText = content.getText(0, content.getCharCount()); - assertEquals(":3f:", ("\rLine 1\r\n\rLine 2"), newText); - assertEquals(":3g:", 4, content.getLineCount()); - assertEquals(":3h:", (""), content.getLine(0)); - assertEquals(":3i:", ("Line 1"), content.getLine(1)); - assertEquals(":3j:", (""), content.getLine(2)); - assertEquals(":3k:", ("Line 2"), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":4a:", ("\nThis\nis a test\r"), newText); - assertEquals(":4b:", 4, content.getLineCount()); - assertEquals(":4c:", (""), content.getLine(0)); - assertEquals(":4d:", ("This"), content.getLine(1)); - assertEquals(":4e:", ("is a test"), content.getLine(2)); - assertEquals(":4f:", (""), content.getLine(3)); - - content.setText("This\nis a test\r"); - content.setText("\r\nnewLine", 7, 7); - newText = content.getText(0, content.getCharCount()); - assertEquals(":5a:", ("This\nis\r\nnewLine a test\r"), newText); - assertEquals(":5b:", 4, content.getLineCount()); - assertEquals(":5c:", ("This"), content.getLine(0)); - assertEquals(":5d:", ("is"), content.getLine(1)); - assertEquals(":5e:", ("newLine a test"), content.getLine(2)); - assertEquals(":5f:", (""), content.getLine(3)); - - content.setText(""); - content.setText("This\nis\r\nnewLine a test\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":6a:", ("This\nis\r\nnewLine a test\r"), newText); - assertEquals(":6b:", 4, content.getLineCount()); - assertEquals(":6c:", ("This"), content.getLine(0)); - assertEquals(":6d:", ("is"), content.getLine(1)); - assertEquals(":6e:", ("newLine a test"), content.getLine(2)); - assertEquals(":6f:", (""), content.getLine(3)); - - // insert at end - content.setText("This"); - content.setText("\n ", 4, 4); - newText = content.getText(0, content.getCharCount()); - assertEquals(":7a:", ("This\n "), newText); - assertEquals(":7b:", 2, content.getLineCount()); - assertEquals(":7c:", ("This"), content.getLine(0)); - assertEquals(":7d:", (" "), content.getLine(1)); - content.setText("This\n"); - content.setText("\n", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":7e:", ("This\n\n"), newText); - assertEquals(":7f:", 3, content.getLineCount()); - assertEquals(":7g:", ("This"), content.getLine(0)); - assertEquals(":7h:", (""), content.getLine(1)); - assertEquals(":7i:", (""), content.getLine(2)); - - // insert at beginning - content.setText("This"); - content.setText("\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":8a:", ("\nThis"), newText); - assertEquals(":8b:", 2, content.getLineCount()); - assertEquals(":8c:", (""), content.getLine(0)); - assertEquals(":8d:", ("This"), content.getLine(1)); - - //insert at end - content.setText("This"); - content.setText("\n", 4, 4);//passing 5, 5 runs into problem (text model doesn't not check range and fails) - newText = content.getText(0, content.getCharCount()); - assertEquals(":8e:", "This\n", newText); - //Note: This is different than StyledText, web editor always break line on \r \n \r\n, it uses lineDelimiter for enter key - assertEquals(":8f:", 2, content.getLineCount()); - - // insert text - content.setText("This\nis a test\r"); - content.setText("*** ", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":9a:", newText, ("This\n*** is a test\r")); - assertEquals(":9b:", 3, content.getLineCount()); - assertEquals(":9c:", ("This"), content.getLine(0)); - assertEquals(":9d:", ("*** is a test"), content.getLine(1)); - assertEquals(":9e:", (""), content.getLine(2)); - - content.setText("This\n"); - content.setText("line", 5, 5); - newText = content.getText(0, content.getCharCount()); - assertEquals(":10a:", "This\nline", newText); - assertEquals(":10b:", 2, content.getLineCount()); - assertEquals(":10c:", "This", content.getLine(0)); - assertEquals(":10d:", "line", content.getLine(1)); - assertEquals(":10e:", 1, content.getLineAtOffset(8)); - assertEquals(":10f:", 1, content.getLineAtOffset(9)); - - // insert at beginning - content.setText("This\n"); - content.setText("line\n", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":11a:", ("line\nThis\n"), newText); - assertEquals(":11b:", 3, content.getLineCount()); - assertEquals(":11c:", ("line"), content.getLine(0)); - assertEquals(":11d:", ("This"), content.getLine(1)); - assertEquals(":11e:", 1, content.getLineAtOffset(5)); - - content.setText("Line 1\r\nLine 2\r\nLine 3"); - content.setText("\r", 0, 0); - newText = content.getText(0, content.getCharCount()); - assertEquals(":12a:", ("\rLine 1\r\nLine 2\r\nLine 3"), newText); - assertEquals(":12b:", 4, content.getLineCount()); - assertEquals(":12c:", (""), content.getLine(0)); - assertEquals(":12d:", ("Line 1"), content.getLine(1)); - assertEquals(":12e:", ("Line 2"), content.getLine(2)); - assertEquals(":12f:", ("Line 3"), content.getLine(3)); - - content.setText("Line 1\nLine 2\nLine 3"); - content.setText("Line1a\nLine1b\n", 7, 7); - newText = content.getText(0, content.getCharCount()); - assertEquals(":13a:", ("Line 1\nLine1a\nLine1b\nLine 2\nLine 3"), newText); - assertEquals(":13b:", 5, content.getLineCount()); - assertEquals(":13c:", ("Line 1"), content.getLine(0)); - assertEquals(":13d:", ("Line1a"), content.getLine(1)); - assertEquals(":13e:", ("Line1b"), content.getLine(2)); - assertEquals(":13f:", ("Line 2"), content.getLine(3)); - assertEquals(":13g:", ("Line 3"), content.getLine(4)); - - content.setText("Line 1\nLine 2\nLine 3"); - content.setText("l1a", 11, 11); - newText = content.getText(0, content.getCharCount()); - assertEquals(":14a:", ("Line 1\nLinel1a 2\nLine 3"), newText); - assertEquals(":14b:", 3, content.getLineCount()); - assertEquals(":14c:", ("Line 1"), content.getLine(0)); - assertEquals(":14d:", ("Linel1a 2"), content.getLine(1)); - assertEquals(":14e:", ("Line 3"), content.getLine(2)); - - content.setText("Line 1\nLine 2 is a very long line that spans many words\nLine 3"); - content.setText("very, very, ", 19, 19); - newText = content.getText(0, content.getCharCount()); - assertEquals(":15a:", ("Line 1\nLine 2 is a very, very, very long line that spans many words\nLine 3"), newText); - assertEquals(":15b:", 3, content.getLineCount()); - assertEquals(":15c:", ("Line 1"), content.getLine(0)); - assertEquals(":15d:", ("Line 2 is a very, very, very long line that spans many words"), content.getLine(1)); - assertEquals(":15e:", ("Line 3"), content.getLine(2)); - } - -}; - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-performance.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-performance.js deleted file mode 100644 index b8c166f8..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js-tests/test-performance.js +++ /dev/null @@ -1,189 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2011 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global assertEquals eclipse */ - -if (window.AsyncTestCase) { - PerformanceTest = AsyncTestCase("Performance"); -} else { - function PerformanceTest (editor) { - this.editor = editor; - this.FakeQueue = function() { - }; - this.FakeQueue.prototype = { - call: function (name, func) { - var callback = { - add: function(f) {return f;} - }; - func(callback); - } - }; - } -} - -PerformanceTest.prototype = { - setUp: function () { - /*:DOC +=

                                */ - assertNotNull(document.getElementById('divParent')); - var options = { - parent: "divParent", - model: new eclipse.TextModel(), - stylesheet: "/editor/samples/editor.css", - tabSize: 4 - }; - window.top.moveTo(0,0); - window.top.resizeTo(screen.width,screen.height); - this.editor = new eclipse.Editor(options); - }, - tearDown: function () { - this.editor.destroy(); - }, - doPage: function (queue, action, max) { - var editor = this.editor; - /* - var objXml = new XMLHttpRequest(); - objXml.open("GET","/editor/samples/text.txt",false); - objXml.send(null); - this.styler = new eclipse.TextStyler(editor, "java"); - editor.setText(objXml.responseText); - */ - var model = editor.getModel(); - queue.call(action, function(callbacks) { - function t() { - var caretLine = model.getLineAtOffset(editor.getCaretOffset()); - editor.invokeAction(action); - if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine && (max === undefined || --max > 0)) { - setTimeout(callbacks.add(t), 0); - } else { - if (log) log ("time(",action,")=", (new Date().getTime() - start)); - } - } - if (action.toLowerCase().indexOf("down") !== -1) { - editor.setSelection(0, 0); - } else { - var charCount = model.getCharCount(); - editor.setSelection(charCount, charCount); - } - editor.focus(); - var start = new Date().getTime(); - t(); - }); - - }, - test_pageDown: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - this.doPage(queue, "pageDown"); - }, - test_pageUp: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - this.doPage(queue, "pageUp"); - }, - test_lineDown: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - this.doPage(queue, "lineDown", 300); - }, - test_lineUp: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - this.doPage(queue, "lineUp", 300); - }, - test_getLocationAtOffset: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - var editor = this.editor; - var count = 10; - var buffer = ""; - for (var i = 0; i < 10;i++) { - buffer += "var nada for nada function " + i + " "; - } - - //test hit test without any styles - editor.setText(buffer); - editor.focus(); - var length = buffer.length; - queue.call('getLocationAtOffset', function(callbacks) { - var start = new Date().getTime(); - for (i = 0; i < count;i++) { - for (var j = 0; j < length;j++) { - editor.getLocationAtOffset(j); - } - } - if (log) log("time(getLocationAtOffset)=" + (new Date().getTime() - start)); - }); - }, - test_getLocationAtOffsetStyled: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - var editor = this.editor; - var count = 10; - var buffer = ""; - for (var i = 0; i < 10;i++) { - buffer += "var nada for nada function " + i + " "; - } - - //test hit test with styles - editor.setText(buffer); - styler = new eclipse.TextStyler(editor, "js"); - editor.focus(); - var length = buffer.length; - queue.call('getLocationAtOffsetStyled', function(callbacks) { - start = new Date().getTime(); - for (i = 0; i < count;i++) { - for (j = 0; j < length;j++) { - editor.getLocationAtOffset(j); - } - } - if (log) log("time(getLocationAtOffset)[styled]=" + (new Date().getTime() - start)); - }); - }, - test_getOffsetAtLocation: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - var editor = this.editor; - var count = 100; - var buffer = ""; - for (var i = 0; i < 6;i++) { - buffer += "var nada for nada function " + i + " "; - } - - //test hit test without any styles - editor.setText(buffer); - editor.focus(); - var location = editor.getLocationAtOffset(length); - queue.call('getLocationAtOffset', function(callbacks) { - var start = new Date().getTime(); - for (i = 0; i < count;i++) { - for (var j = 0; j < location.x; j++) { - editor.getOffsetAtLocation(j, location.y); - } - } - if (log) log("time(getOffseAtLocation)=" + (new Date().getTime() - start)); - }); - }, - test_getOffsetAtLocationStyled: function (queue) { - if (!queue) var queue = new this.FakeQueue(); - var editor = this.editor; - var count = 100; - var buffer = ""; - for (var i = 0; i < 6;i++) { - buffer += "var nada for nada function " + i + " "; - } - - //test hit test with styles - editor.setText(buffer); - styler = new eclipse.TextStyler(editor, "js"); - editor.focus(); - var location = editor.getLocationAtOffset(length); - queue.call('getLocationAtOffset[styled]', function(callbacks) { - start = new Date().getTime(); - for (i = 0; i < count;i++) { - for (var j = 0; j < location.x; j++) { - editor.getOffsetAtLocation(j, location.y); - } - } - if (log) log("time(getOffseAtLocation)[styled]=" + (new Date().getTime() - start)); - }); - } -}; \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/editor.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/editor.js deleted file mode 100644 index 537a7c95..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/editor.js +++ /dev/null @@ -1,4649 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */ - -/** - * @namespace The global container for Eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new key binding with the given key code and modifiers. - * - * @param {String|Number} keyCode the key code. - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms). - * @param {Boolean} mod2 the secondary modifier (usually Shift). - * @param {Boolean} mod3 the third modifier (usually Alt). - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac). - * - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard. - * @name eclipse.KeyBinding - * - * @property {String|Number} keyCode The key code. - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms). - * @property {Boolean} mod2 The secondary modifier (usually Shift). - * @property {Boolean} mod3 The third modifier (usually Alt). - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac). - * - * @see eclipse.Editor#setKeyBinding - */ -eclipse.KeyBinding = (function() { - var isMac = navigator.platform.indexOf("Mac") !== -1; - /** @private */ - function KeyBinding (keyCode, mod1, mod2, mod3, mod4) { - if (typeof(keyCode) === "string") { - this.keyCode = keyCode.toUpperCase().charCodeAt(0); - } else { - this.keyCode = keyCode; - } - this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false; - this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false; - this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false; - this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false; - } - KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ { - /** - * Returns whether this key binding matches the given key event. - * - * @param e the key event. - * @returns {Boolean} true whether the key binding matches the key event. - */ - match: function (e) { - if (this.keyCode === e.keyCode) { - var mod1 = isMac ? e.metaKey : e.ctrlKey; - if (this.mod1 !== mod1) { return false; } - if (this.mod2 !== e.shiftKey) { return false; } - if (this.mod3 !== e.altKey) { return false; } - if (isMac && this.mod4 !== e.ctrlKey) { return false; } - return true; - } - return false; - }, - /** - * Returns whether this key binding is the same as the given parameter. - * - * @param {eclipse.KeyBinding} kb the key binding to compare with. - * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding. - */ - equals: function(kb) { - if (!kb) { return false; } - if (this.keyCode !== kb.keyCode) { return false; } - if (this.mod1 !== kb.mod1) { return false; } - if (this.mod2 !== kb.mod2) { return false; } - if (this.mod3 !== kb.mod3) { return false; } - if (this.mod4 !== kb.mod4) { return false; } - return true; - } - }; - return KeyBinding; -}()); - -/** - * Constructs a new editor. - * - * @param options the editor options. - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element. - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}. - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only. - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor. - * @param {Number} [options.tabSize] The number of spaces in a tab. - * - * @class A Editor is a user interface for editing text. - * @name eclipse.Editor - */ -eclipse.Editor = (function() { - - /** @private */ - function addHandler(node, type, handler, capture) { - if (typeof node.addEventListener === "function") { - node.addEventListener(type, handler, capture === true); - } else { - node.attachEvent("on" + type, handler); - } - } - /** @private */ - function removeHandler(node, type, handler, capture) { - if (typeof node.removeEventListener === "function") { - node.removeEventListener(type, handler, capture === true); - } else { - node.detachEvent("on" + type, handler); - } - } - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined; - var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || undefined; - var isOpera = navigator.userAgent.indexOf("Opera") !== -1; - var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; - var isSafari = navigator.userAgent.indexOf("Safari") !== -1; - var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1; - var isPad = navigator.userAgent.indexOf("iPad") !== -1; - var isMac = navigator.platform.indexOf("Mac") !== -1; - var isWindows = navigator.platform.indexOf("Win") !== -1; - var isW3CEvents = typeof window.document.documentElement.addEventListener === "function"; - var isRangeRects = (!isIE || isIE >= 9) && typeof window.document.createRange().getBoundingClientRect === "function"; - - /** - * Constructs a new Selection object. - * - * @class A Selection represents a range of selected text in the editor. - * @name eclipse.Selection - */ - var Selection = (function() { - /** @private */ - function Selection (start, end, caret) { - /** - * The selection start offset. - * - * @name eclipse.Selection#start - */ - this.start = start; - /** - * The selection end offset. - * - * @name eclipse.Selection#end - */ - this.end = end; - /** @private */ - this.caret = caret; //true if the start, false if the caret is at end - } - Selection.prototype = /** @lends eclipse.Selection.prototype */ { - /** @private */ - clone: function() { - return new Selection(this.start, this.end, this.caret); - }, - /** @private */ - collapse: function() { - if (this.caret) { - this.end = this.start; - } else { - this.start = this.end; - } - }, - /** @private */ - extend: function (offset) { - if (this.caret) { - this.start = offset; - } else { - this.end = offset; - } - if (this.start > this.end) { - var tmp = this.start; - this.start = this.end; - this.end = tmp; - this.caret = !this.caret; - } - }, - /** @private */ - setCaret: function(offset) { - this.start = offset; - this.end = offset; - this.caret = false; - }, - /** @private */ - getCaret: function() { - return this.caret ? this.start : this.end; - }, - /** @private */ - toString: function() { - return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end"); - }, - /** @private */ - isEmpty: function() { - return this.start === this.end; - }, - /** @private */ - equals: function(object) { - return this.caret === object.caret && this.start === object.start && this.end === object.end; - } - }; - return Selection; - }()); - - /** - * Constructs a new EventTable object. - * - * @class - * @name eclipse.EventTable - * @private - */ - var EventTable = (function() { - /** @private */ - function EventTable(){ - this._listeners = {}; - } - EventTable.prototype = /** @lends EventTable.prototype */ { - /** @private */ - addEventListener: function(type, context, func, data) { - if (!this._listeners[type]) { - this._listeners[type] = []; - } - var listener = { - context: context, - func: func, - data: data - }; - this._listeners[type].push(listener); - }, - /** @private */ - sendEvent: function(type, event) { - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l && l.context && l.func) { - l.func.call(l.context, event, l.data); - } - } - } - }, - /** @private */ - removeEventListener: function(type, context, func, data){ - var listeners = this._listeners[type]; - if (listeners) { - for (var i=0, len=listeners.length; i < len; i++){ - var l = listeners[i]; - if (l.context === context && l.func === func && l.data === data) { - listeners.splice(i, 1); - break; - } - } - } - } - }; - return EventTable; - }()); - - /** @private */ - function Editor (options) { - this._init(options); - } - - Editor.prototype = /** @lends eclipse.Editor.prototype */ { - /** - * Adds an event listener to the editor. - * - * @param {String} type the event type. The supported events are: - *
                                  - *
                                • "Modify" See {@link #onModify}
                                • - *
                                • "Selection" See {@link #onSelection}
                                • - *
                                • "Scroll" See {@link #onScroll}
                                • - *
                                • "Verify" See {@link #onVerify}
                                • - *
                                • "Destroy" See {@link #onDestroy}
                                • - *
                                • "LineStyle" See {@link #onLineStyle}
                                • - *
                                • "ModelChanging" See {@link #onModelChanging}
                                • - *
                                • "ModelChanged" See {@link #onModelChanged}
                                • - *
                                - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * The function should take an event as the first parameter and optional data as the second parameter. - * @param {Object} [data] optional data passed to the function. - * - * @see #removeEventListener - */ - addEventListener: function(type, context, func, data) { - this._eventTable.addEventListener(type, context, func, data); - }, - /** - * @class This interface represents a ruler for the editor. - *

                                - * A Ruler is a graphical element that is placed either on the left or on the right side of - * the editor. It can be used to provide the editor with per line decoration such as line numbering, - * bookmarks, breakpoints, folding disclosures, etc. - *

                                - * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are - * visible, while a document ruler always shows the whole content. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#addRuler} - *

                                - * @name eclipse.Ruler - * - */ - /** - * Returns the ruler overview type. - * - * @name getOverview - * @methodOf eclipse.Ruler# - * @returns {String} the overview type, which is either "page" or "document". - * - * @see #getLocation - */ - /** - * Returns the ruler location. - * - * @name getLocation - * @methodOf eclipse.Ruler# - * @returns {String} the ruler location, which is either "left" or "right". - */ - /** - * Returns the HTML content for the decoration of a given line. - *

                                - * If the line index is -1, the HTML content for the decoration - * that determines the width of the ruler should be returned. - *

                                - * - * @name getHTML - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {String} the HTML content for a given line, or generic line. - * - * @see #getStyle - */ - /** - * Returns the CSS styling information for the decoration of a given line. - *

                                - * If the line index is -1, the CSS styling information for the decoration - * that determines the width of the ruler should be returned. If the line is - * undefined, the ruler styling information should be returned. - *

                                - * - * @name getStyle - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex - * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line. - * - * @see #getHTML - */ - /** - * Returns the indices of the lines that have decoration. - *

                                - * This function is only called for rulers with "document" overview type. - *

                                - * @name getAnnotations - * @methodOf eclipse.Ruler# - * @returns {Number[]} an array of line indices. - */ - /** - * This event is sent when the user clicks a line decoration. - * - * @name onClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the clicked decoration - * @param {DOMEvent} e the click event - */ - /** - * This event is sent when the user double clicks a line decoration. - * - * @name onDblClick - * @event - * @methodOf eclipse.Ruler# - * @param {Number} lineIndex the line index of the double clicked decoration - * @param {DOMEvent} e the double click event - */ - /** - * Adds a ruler to the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - addRuler: function (ruler) { - var document = this._frameDocument; - var body = document.body; - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - if (!rulerParent) { - rulerParent = document.createElement("DIV"); - rulerParent.style.overflow = "hidden"; - rulerParent.style.MozUserSelect = "none"; - rulerParent.style.WebkitUserSelect = "none"; - if (isIE) { - rulerParent.attachEvent("onselectstart", function() {return false;}); - } - rulerParent.style.position = "absolute"; - rulerParent.style.top = "0px"; - rulerParent.style.cursor = "default"; - body.appendChild(rulerParent); - if (side === "left") { - this._leftDiv = rulerParent; - rulerParent.className = "editorLeftRuler"; - } else { - this._rightDiv = rulerParent; - rulerParent.className = "editorRightRuler"; - } - var table = document.createElement("TABLE"); - rulerParent.appendChild(table); - table.cellPadding = "0px"; - table.cellSpacing = "0px"; - table.border = "0px"; - table.insertRow(0); - var self = this; - addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); }); - addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); }); - } - var div = document.createElement("DIV"); - div._ruler = ruler; - div.rulerChanged = true; - div.style.position = "relative"; - var row = rulerParent.firstChild.rows[0]; - var index = row.cells.length; - var cell = row.insertCell(index); - cell.vAlign = "top"; - cell.appendChild(div); - ruler.setEditor(this); - this._updatePage(); - }, - /** - * Converts the given rectangle from one coordinate spaces to another. - *

                                The supported coordinate spaces are: - *

                                  - *
                                • "document" - relative to document, the origin is the top-left corner of first line
                                • - *
                                • "page" - relative to html page that contains the editor
                                • - *
                                • "editor" - relative to editor, the origin is the top-left corner of the editor container
                                • - *
                                - *

                                - *

                                All methods in the editor that take or return a position are in the document coordinate space.

                                - * - * @param rect the rectangle to convert. - * @param rect.x the x of the rectangle. - * @param rect.y the y of the rectangle. - * @param rect.width the width of the rectangle. - * @param rect.height the height of the rectangle. - * @param {String} from the source coordinate space. - * @param {String} to the destination coordinate space. - * - * @see #getLocationAtOffset - * @see #getOffsetAtLocation - * @see #getTopPixel - * @see #setTopPixel - */ - convert: function(rect, from, to) { - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var frame = this._frame.getBoundingClientRect(); - var editorRect = this._editorDiv.getBoundingClientRect(); - switch(from) { - case "document": - if (rect.x !== undefined) { - rect.x += - scroll.x + editorRect.left + editorPad.left; - } - if (rect.y !== undefined) { - rect.y += - scroll.y + editorRect.top + editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += - frame.left; - } - if (rect.y !== undefined) { - rect.y += - frame.top; - } - break; - } - //At this point rect is in the widget coordinate space - switch (to) { - case "document": - if (rect.x !== undefined) { - rect.x += scroll.x - editorRect.left - editorPad.left; - } - if (rect.y !== undefined) { - rect.y += scroll.y - editorRect.top - editorPad.top; - } - break; - case "page": - if (rect.x !== undefined) { - rect.x += frame.left; - } - if (rect.y !== undefined) { - rect.y += frame.top; - } - break; - } - }, - /** - * Destroys the editor. - *

                                - * Removes the editor from the page and frees all resources created by the editor. - * Calling this function causes the "Destroy" event to be fire so that all components - * attached to editor can release their references. - *

                                - * - * @see #onDestroy - */ - destroy: function() { - this._setGrab(null); - this._unhookEvents(); - - /* Destroy rulers*/ - var destroyRulers = function(rulerDiv) { - if (!rulerDiv) { - return; - } - var cells = rulerDiv.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - div._ruler.setEditor(null); - } - }; - destroyRulers (this._leftDiv); - destroyRulers (this._rightDiv); - - /* Destroy timers */ - if (this._autoScrollTimerID) { - clearTimeout(this._autoScrollTimerID); - this._autoScrollTimerID = null; - } - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - - /* Destroy DOM */ - var parent = this._parent; - var frame = this._frame; - parent.removeChild(frame); - - if (isPad) { - parent.removeChild(this._touchDiv); - this._touchDiv = null; - this._selDiv1 = null; - this._selDiv2 = null; - this._selDiv3 = null; - this._textArea = null; - } - - var e = {}; - this.onDestroy(e); - - this._parent = null; - this._parentDocument = null; - this._model = null; - this._selection = null; - this._doubleClickSelection = null; - this._eventTable = null; - this._frame = null; - this._frameDocument = null; - this._frameWindow = null; - this._scrollDiv = null; - this._editorDiv = null; - this._clientDiv = null; - this._overlayDiv = null; - this._keyBindings = null; - this._actions = null; - }, - /** - * Gives focus to the editor. - */ - focus: function() { - /* - * Feature in Chrome. When focus is called in the clientDiv without - * setting selection the browser will set the selection to the first dom - * element, which can be above the client area. When this happen the - * browser also scrolls the window to show that element. - * The fix is to call _updateDOMSelection() before calling focus(). - */ - this._updateDOMSelection(); - if (isPad) { - this._textArea.focus(); - } else { - if (isOpera) { this._clientDiv.blur(); } - this._clientDiv.focus(); - } - /* - * Feature in Safari. When focus is called the browser selects the clientDiv - * itself. The fix is to call _updateDOMSelection() after calling focus(). - */ - this._updateDOMSelection(); - }, - /** - * Returns all action names defined in the editor. - *

                                - * There are two types of actions, the predefined actions of the editor - * and the actions added by application code. - *

                                - *

                                - * The predefined actions are: - *

                                  - *
                                • Navigation actions. These actions move the caret collapsing the selection.
                                • - *
                                    - *
                                  • "lineUp" - moves the caret up by one line
                                  • - *
                                  • "lineDown" - moves the caret down by one line
                                  • - *
                                  • "lineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "lineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "charPrevious" - moves the caret to the previous character
                                  • - *
                                  • "charNext" - moves the caret to the next character
                                  • - *
                                  • "pageUp" - moves the caret up by one page
                                  • - *
                                  • "pageDown" - moves the caret down by one page
                                  • - *
                                  • "wordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "wordNext" - moves the caret to the next word
                                  • - *
                                  • "textStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "textEnd" - moves the caret to the end of the document
                                  • - *
                                  - *
                                • Selection actions. These actions move the caret extending the selection.
                                • - *
                                    - *
                                  • "selectLineUp" - moves the caret up by one line
                                  • - *
                                  • "selectLineDown" - moves the caret down by one line
                                  • - *
                                  • "selectLineStart" - moves the caret to beginning of the current line
                                  • - *
                                  • "selectLineEnd" - moves the caret to end of the current line
                                  • - *
                                  • "selectCharPrevious" - moves the caret to the previous character
                                  • - *
                                  • "selectCharNext" - moves the caret to the next character
                                  • - *
                                  • "selectPageUp" - moves the caret up by one page
                                  • - *
                                  • "selectPageDown" - moves the caret down by one page
                                  • - *
                                  • "selectWordPrevious" - moves the caret to the previous word
                                  • - *
                                  • "selectWordNext" - moves the caret to the next word
                                  • - *
                                  • "selectTextStart" - moves the caret to the beginning of the document
                                  • - *
                                  • "selectTextEnd" - moves the caret to the end of the document
                                  • - *
                                  • "selectAll" - selects the entire document
                                  • - *
                                  - *
                                • Edit actions. These actions modify the editor text
                                • - *
                                    - *
                                  • "deletePrevious" - deletes the character preceding the caret
                                  • - *
                                  • "deleteNext" - deletes the charecter following the caret
                                  • - *
                                  • "deleteWordPrevious" - deletes the word preceding the caret
                                  • - *
                                  • "deleteWordNext" - deletes the word following the caret
                                  • - *
                                  • "tab" - inserts a tab character at the caret
                                  • - *
                                  • "enter" - inserts a line delimiter at the caret
                                  • - *
                                  - *
                                • Clipboard actions.
                                • - *
                                    - *
                                  • "copy" - copies the selected text to the clipboard
                                  • - *
                                  • "cut" - copies the selected text to the clipboard and deletes the selection
                                  • - *
                                  • "paste" - replaces the selected text with the clipboard contents
                                  • - *
                                  - *
                                - *

                                - * - * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included. - * @returns {String[]} an array of action names defined in the editor. - * - * @see #invokeAction - * @see #setAction - * @see #setKeyBinding - * @see #getKeyBindings - */ - getActions: function (defaultAction) { - var result = []; - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - if (!defaultAction && actions[i].defaultHandler) { continue; } - result.push(actions[i].name); - } - return result; - }, - /** - * Returns the bottom index. - *

                                - * The bottom index is the line that is currently at the bottom of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the last fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the bottom line. - * - * @see #getTopIndex - * @see #setTopIndex - */ - getBottomIndex: function(fullyVisible) { - return this._getBottomIndex(fullyVisible); - }, - /** - * Returns the bottom pixel. - *

                                - * The bottom pixel is the pixel position that is currently at - * the bottom edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the bottom pixel. - * - * @see #getTopPixel - * @see #setTopPixel - * @see #convert - */ - getBottomPixel: function() { - return this._getScroll().y + this._getClientHeight(); - }, - /** - * Returns the caret offset relative to the start of the document. - * - * @returns the caret offset relative to the start of the document. - * - * @see #setCaretOffset - * @see #setSelection - * @see #getSelection - */ - getCaretOffset: function () { - var s = this._getSelection(); - return s.getCaret(); - }, - /** - * Returns the client area. - *

                                - * The client area is the portion in pixels of the document that is visible. The - * client area position is relative to the beginning of the document. - *

                                - * - * @returns the client area rectangle {x, y, width, height}. - * - * @see #getTopPixel - * @see #getBottomPixel - * @see #getHorizontalPixel - * @see #convert - */ - getClientArea: function() { - var scroll = this._getScroll(); - return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()}; - }, - /** - * Returns the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the horizontal pixel. - * - * @see #setHorizontalPixel - * @see #convert - */ - getHorizontalPixel: function() { - return this._getScroll().x; - }, - /** - * Returns all the key bindings associated to the given action name. - * - * @param {String} name the action name. - * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name. - * - * @see #setKeyBinding - * @see #setAction - */ - getKeyBindings: function (name) { - var result = []; - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - if (keyBindings[i].name === name) { - result.push(keyBindings[i].keyBinding); - } - } - return result; - }, - /** - * Returns the line height for a given line index. Returns the default line - * height if the line index is not specified. - * - * @param {Number} [lineIndex] the line index. - * @returns {Number} the height of the line in pixels. - * - * @see #getLinePixel - */ - getLineHeight: function(lineIndex) { - return this._getLineHeight(); - }, - /** - * Returns the top pixel position of a given line index relative to the beginning - * of the document. - *

                                - * Clamps out of range indices. - *

                                - * - * @param {Number} lineIndex the line index. - * @returns {Number} the pixel position of the line. - * - * @see #setTopPixel - * @see #convert - */ - getLinePixel: function(lineIndex) { - lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount()); - var lineHeight = this._getLineHeight(); - return lineHeight * lineIndex; - }, - /** - * Returns the {x, y} pixel location of the top-left corner of the character - * bounding box at the specified offset in the document. The pixel location - * is relative to the document. - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} offset the character offset - * @returns the {x, y} pixel location of the given offset. - * - * @see #getOffsetAtLocation - * @see #convert - */ - getLocationAtOffset: function(offset) { - var model = this._model; - offset = Math.min(Math.max(0, offset), model.getCharCount()); - var lineIndex = model.getLineAtOffset(offset); - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left; - var y = this.getLinePixel(lineIndex); - return {x: x, y: y}; - }, - /** - * Returns the text model of the editor. - * - * @returns {eclipse.TextModel} the text model of the editor. - */ - getModel: function() { - return this._model; - }, - /** - * Returns the character offset nearest to the given pixel location. The - * pixel location is relative to the document. - * - * @param x the x of the location - * @param y the y of the location - * @returns the character offset at the given location. - * - * @see #getLocationAtOffset - */ - getOffsetAtLocation: function(x, y) { - var model = this._model; - var scroll = this._getScroll(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var lineIndex = this._getYToLine(y - scroll.y); - x += -scroll.x + editorRect.left + editorPad.left; - var offset = this._getXToOffset(lineIndex, x); - return offset; - }, - /** - * Returns the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - * - * @returns {eclipse.Selection} the editor selection - * - * @see #setSelection - */ - getSelection: function () { - var s = this._getSelection(); - return {start: s.start, end: s.end}; - }, - /** - * Returns the text for the given range. - *

                                - * The text does not include the character at the end offset. - *

                                - * - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - var model = this._model; - return model.getText(start, end); - }, - /** - * Returns the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. The parameter - * fullyVisible determines whether to return only fully visible lines. - *

                                - * - * @param {Boolean} [fullyVisible=false] if true, returns the index of the first fully visible line. This - * parameter is ignored if the editor is not big enough to show one line. - * @returns {Number} the index of the top line. - * - * @see #getBottomIndex - * @see #setTopIndex - */ - getTopIndex: function(fullyVisible) { - return this._getTopIndex(fullyVisible); - }, - /** - * Returns the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @returns {Number} the top pixel. - * - * @see #getBottomPixel - * @see #setTopPixel - * @see #convert - */ - getTopPixel: function() { - return this._getScroll().y; - }, - /** - * Executes the action handler associated with the given name. - *

                                - * The application defined action takes precedence over predefined actions unless - * the defaultAction paramater is true. - *

                                - *

                                - * If the application defined action returns false, the editor predefined - * action is executed if present. - *

                                - * - * @param {String} name the action name. - * @param {Boolean} [defaultAction] whether to always execute the predefined action. - * @returns {Boolean} true if the action was executed. - * - * @see #setAction - * @see #getActions - */ - invokeAction: function (name, defaultAction) { - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name && a.name === name) { - if (!defaultAction && a.userHandler) { - if (a.userHandler()) { return; } - } - if (a.defaultHandler) { return a.defaultHandler(); } - return false; - } - } - return false; - }, - /** - * @class This is the event sent when the editor is destroyed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onDestroy} - *

                                - * @name eclipse.DestroyEvent - */ - /** - * This event is sent when the editor has been destroyed. - * - * @event - * @param {eclipse.DestroyEvent} destroyEvent the event - * - * @see #destroy - */ - onDestroy: function(destroyEvent) { - this._eventTable.sendEvent("Destroy", destroyEvent); - }, - /** - * @class This object is used to define style information for the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.Style - * - * @property {String} styleClass A CSS class name. - * @property {Object} style An object with CSS properties. - */ - /** - * @class This object is used to style range. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.StyleRange - * - * @property {Number} start The start character offset, relative to the document, where the style should be applied. - * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied. - * @property {eclipse.Style} style The style for the range. - */ - /** - * @class This is the event sent when the editor needs the style information for a line. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onLineStyle} - *

                                - * @name eclipse.LineStyleEvent - * - * @property {Number} lineIndex The line index. - * @property {String} lineText The line text. - * @property {Number} lineStart The character offset, relative to document, of the first character in the line. - * @property {eclipse.Style} style The style for the entire line (output argument). - * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument). - */ - /** - * This event is sent when the editor needs the style information for a line. - * - * @event - * @param {eclipse.LineStyleEvent} lineStyleEvent the event - */ - onLineStyle: function(lineStyleEvent) { - this._eventTable.sendEvent("LineStyle", lineStyleEvent); - }, - /** - * @class This is the event sent when the text in the model has changed. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanged}
                                - * {@link eclipse.TextModel#onChanged} - *

                                - * @name eclipse.ModelChangedEvent - * - * @property {Number} start The character offset in the model where the change has occurred. - * @property {Number} removedCharCount The number of characters removed from the model. - * @property {Number} addedCharCount The number of characters added to the model. - * @property {Number} removedLineCount The number of lines removed from the model. - * @property {Number} addedLineCount The number of lines added to the model. - */ - /** - * This event is sent when the text in the model has changed. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanged: function(modelChangedEvent) { - this._eventTable.sendEvent("ModelChanged", modelChangedEvent); - }, - /** - * @class This is the event sent when the text in the model is about to change. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModelChanging}
                                - * {@link eclipse.TextModel#onChanging} - *

                                - * @name eclipse.ModelChangingEvent - * - * @property {String} text The text that is about to be inserted in the model. - * @property {Number} start The character offset in the model where the change will occur. - * @property {Number} removedCharCount The number of characters being removed from the model. - * @property {Number} addedCharCount The number of characters being added to the model. - * @property {Number} removedLineCount The number of lines being removed from the model. - * @property {Number} addedLineCount The number of lines being added to the model. - */ - /** - * This event is sent when the text in the model is about to change. - * - * @event - * @param {eclipse.ModelChangingEvent} modelChangingEvent the event - */ - onModelChanging: function(modelChangingEvent) { - this._eventTable.sendEvent("ModelChanging", modelChangingEvent); - }, - /** - * @class This is the event sent when the text is modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onModify} - *

                                - * @name eclipse.ModifyEvent - */ - /** - * This event is sent when the editor has changed text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - * - * @event - * @param {eclipse.ModifyEvent} modifyEvent the event - */ - onModify: function(modifyEvent) { - this._eventTable.sendEvent("Modify", modifyEvent); - }, - /** - * @class This is the event sent when the selection changes in the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onSelection} - *

                                - * @name eclipse.SelectionEvent - * - * @property {eclipse.Selection} oldValue The old selection. - * @property {eclipse.Selection} newValue The new selection. - */ - /** - * This event is sent when the editor selection has changed. - * - * @event - * @param {eclipse.SelectionEvent} selectionEvent the event - */ - onSelection: function(selectionEvent) { - this._eventTable.sendEvent("Selection", selectionEvent); - }, - /** - * @class This is the event sent when the editor scrolls. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onScroll} - *

                                - * @name eclipse.ScrollEvent - * - * @property oldValue The old scroll {x,y}. - * @property newValue The new scroll {x,y}. - */ - /** - * This event is sent when the editor scrolls vertically or horizontally. - * - * @event - * @param {eclipse.ScrollEvent} scrollEvent the event - */ - onScroll: function(scrollEvent) { - this._eventTable.sendEvent("Scroll", scrollEvent); - }, - /** - * @class This is the event sent when the text is about to be modified by the editor. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#event:onVerify} - *

                                - * @name eclipse.VerifyEvent - * - * @property {String} text The text being inserted. - * @property {Number} start The start offset of the text range to be replaced. - * @property {Number} end The end offset (exclusive) of the text range to be replaced. - */ - /** - * This event is sent when the editor is about to change text in the model. - *

                                - * If the text is changed directly through the model API, this event - * is not sent. - *

                                - *

                                - * Listeners are allowed to change these parameters. Setting text to null - * or undefined stops the change. - *

                                - * - * @event - * @param {eclipse.VerifyEvent} verifyEvent the event - */ - onVerify: function(verifyEvent) { - this._eventTable.sendEvent("Verify", verifyEvent); - }, - /** - * Redraws the text in the given line range. - *

                                - * The line at the end index is not redrawn. - *

                                - * - * @param {Number} [startLine=0] the start line - * @param {Number} [endLine=line count] the end line - */ - redrawLines: function(startLine, endLine, ruler) { - if (startLine === undefined) { startLine = 0; } - if (endLine === undefined) { endLine = this._model.getLineCount(); } - if (startLine === endLine) { return; } - var div = this._clientDiv; - if (ruler) { - var location = ruler.getLocation();//"left" or "right" - var divRuler = location === "left" ? this._leftDiv : this._rightDiv; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - if (cells[i].firstChild._ruler === ruler) { - div = cells[i].firstChild; - break; - } - } - } - if (ruler) { - div.rulerChanged = true; - } - if (!ruler || ruler.getOverview() === "page") { - var child = div.firstChild; - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex < endLine) { - child.lineChanged = true; - } - child = child.nextSibling; - } - } - if (!ruler) { - if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - } - this._queueUpdatePage(); - }, - /** - * Redraws the text in the given range. - *

                                - * The character at the end offset is not redrawn. - *

                                - * - * @param {Number} [start=0] the start offset of text range - * @param {Number} [end=char count] the end offset of text range - */ - redrawRange: function(start, end) { - var model = this._model; - if (start === undefined) { start = 0; } - if (end === undefined) { end = model.getCharCount(); } - if (start === end) { return; } - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1; - this.redrawLines(startLine, endLine); - }, - /** - * Removes an event listener from the editor. - *

                                - * All the parameters must be the same ones used to add the listener. - *

                                - * - * @param {String} type the event type. - * @param {Object} context the context of the function. - * @param {Function} func the function that will be executed when the event happens. - * @param {Object} [data] optional data passed to the function. - * - * @see #addEventListener - */ - removeEventListener: function(type, context, func, data) { - this._eventTable.removeEventListener(type, context, func, data); - }, - /** - * Removes a ruler from the editor. - * - * @param {eclipse.Ruler} ruler the ruler. - */ - removeRuler: function (ruler) { - ruler.setEditor(null); - var side = ruler.getLocation(); - var rulerParent = side === "left" ? this._leftDiv : this._rightDiv; - var row = rulerParent.firstChild.rows[0]; - var cells = row.cells; - for (var index = 0; index < cells.length; index++) { - var cell = cells[index]; - if (cell.firstChild._ruler === ruler) { break; } - } - if (index === cells.length) { return; } - row.cells[index]._ruler = undefined; - row.deleteCell(index); - this._updatePage(); - }, - /** - * Associates an application defined handler to an action name. - *

                                - * If the action name is a predefined action, the given handler executes before - * the default action handler. If the given handler returns true, the - * default action handler is not called. - *

                                - * - * @param {String} name the action name. - * @param {Function} handler the action handler. - * - * @see #getActions - * @see #invokeAction - */ - setAction: function(name, handler) { - if (!name) { return; } - var actions = this._actions; - for (var i = 0; i < actions.length; i++) { - var a = actions[i]; - if (a.name === name) { - a.userHandler = handler; - return; - } - } - actions.push({name: name, userHandler: handler}); - }, - /** - * Associates a key binding with the given action name. Any previous - * association with the specified key binding is overwriten. If the - * action name is null, the association is removed. - * - * @param {eclipse.KeyBinding} keyBinding the key binding - * @param {String} name the action - */ - setKeyBinding: function(keyBinding, name) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.equals(keyBinding)) { - if (name) { - kb.name = name; - } else { - if (kb.predefined) { - kb.name = null; - } else { - var oldName = kb.name; - keyBindings.splice(i, 1); - var index = 0; - while (index < keyBindings.length && oldName !== keyBindings[index].name) { - index++; - } - if (index === keyBindings.length) { - /*

                                - * Removing all the key bindings associated to an user action will cause - * the user action to be removed. Editor predefined actions are never - * removed (so they can be reinstalled in the future). - *

                                - */ - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - if (actions[j].name === oldName) { - if (!actions[j].defaultHandler) { - actions.splice(j, 1); - } - } - } - } - } - } - return; - } - } - if (name) { - keyBindings.push({keyBinding: keyBinding, name: name}); - } - }, - /** - * Sets the caret offset relative to the start of the document. - * - * @param {Number} caret the caret offset relative to the start of the document. - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getCaretOffset - * @see #setSelection - * @see #getSelection - */ - setCaretOffset: function(offset, show) { - var charCount = this._model.getCharCount(); - offset = Math.max(0, Math.min (offset, charCount)); - var selection = new Selection(offset, offset, false); - this._setSelection (selection, show === undefined || show); - }, - /** - * Sets the horizontal pixel. - *

                                - * The horizontal pixel is the pixel position that is currently at - * the left edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the horizontal pixel. - * - * @see #getHorizontalPixel - * @see #convert - */ - setHorizontalPixel: function(pixel) { - pixel = Math.max(0, pixel); - this._scrollView(pixel - this._getScroll().x, 0); - }, - /** - * Sets the text model of the editor. - * - * @param {eclipse.TextModel} model the text model of the editor. - */ - setModel: function(model) { - if (!model) { return; } - this._model.removeListener(this._modelListener); - var oldLineCount = this._model.getLineCount(); - var oldCharCount = this._model.getCharCount(); - var newLineCount = model.getLineCount(); - var newCharCount = model.getCharCount(); - var newText = model.getText(); - var e = { - text: newText, - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanging(e); - this.redrawRange(); - this._model = model; - e = { - start: 0, - removedCharCount: oldCharCount, - addedCharCount: newCharCount, - removedLineCount: oldLineCount, - addedLineCount: newLineCount - }; - this.onModelChanged(e); - this._model.addListener(this._modelListener); - this.redrawRange(); - }, - /** - * Sets the editor selection. - *

                                - * The selection is defined by a start and end character offset relative to the - * document. The character at end offset is not included in the selection. - *

                                - *

                                - * The caret is always placed at the end offset. The start offset can be - * greater than the end offset to place the caret at the beginning of the - * selection. - *

                                - *

                                - * Clamps out of range offsets. - *

                                - * - * @param {Number} start the start offset of the selection - * @param {Number} end the end offset of the selection - * @param {Boolean} [show=true] if true, the editor will scroll if needed to show the caret location. - * - * @see #getSelection - */ - setSelection: function (start, end, show) { - var caret = start > end; - if (caret) { - var tmp = start; - start = end; - end = tmp; - } - var charCount = this._model.getCharCount(); - start = Math.max(0, Math.min (start, charCount)); - end = Math.max(0, Math.min (end, charCount)); - var selection = new Selection(start, end, caret); - this._setSelection(selection, show === undefined || show); - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The character at the end offset is not replaced. - *

                                - *

                                - * When both start and end parameters - * are not specified, the editor places the caret at the beginning - * of the document and scrolls to make it visible. - *

                                - * - * @param {String} text the new text. - * @param {Number} [start=0] the start offset of text range. - * @param {Number} [end=char count] the end offset of text range. - * - * @see #getText - */ - setText: function (text, start, end) { - var reset = start === undefined && end === undefined; - if (start === undefined) { start = 0; } - if (end === undefined) { end = this._model.getCharCount(); } - this._modifyContent({text: text, start: start, end: end, _code: true}, !reset); - if (reset) { - this._columnX = -1; - this._setSelection(new Selection (0, 0, false), true); - this._showCaret(); - - /* - * Bug in Firefox 4. For some reason, the caret does not show after the - * editor is refreshed. The fix is to toggle the contentEditable state and - * force the clientDiv to loose and receive focus. - */ - if (isFirefox >= 4) { - var clientDiv = this._clientDiv; - clientDiv.contentEditable = false; - clientDiv.contentEditable = true; - clientDiv.blur(); - clientDiv.focus(); - } - } - }, - /** - * Sets the top index. - *

                                - * The top index is the line that is currently at the top of the editor. This - * line may be partially visible depending on the vertical scroll of the editor. - *

                                - * - * @param {Number} topIndex the index of the top line. - * - * @see #getBottomIndex - * @see #getTopIndex - */ - setTopIndex: function(topIndex) { - var model = this._model; - if (model.getCharCount() === 0) { - return; - } - var lineCount = model.getLineCount(); - var lineHeight = this._getLineHeight(); - var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight))); - if (topIndex < 0) { - topIndex = 0; - } else if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - var pixel = topIndex * lineHeight - this._getScroll().y; - this._scrollView(0, pixel); - }, - /** - * Sets the top pixel. - *

                                - * The top pixel is the pixel position that is currently at - * the top edge of the editor. This position is relative to the - * beginning of the document. - *

                                - * - * @param {Number} pixel the top pixel. - * - * @see #getBottomPixel - * @see #getTopPixel - * @see #convert - */ - setTopPixel: function(pixel) { - var lineHeight = this._getLineHeight(); - var clientHeight = this._getClientHeight(); - var lineCount = this._model.getLineCount(); - pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight); - this._scrollView(0, pixel - this._getScroll().y); - }, - /** - * Scrolls the selection into view if needed. - * - * @see #getSelection - * @see #setSelection - */ - showSelection: function() { - return this._showCaret(); - }, - - /**************************************** Event handlers *********************************/ - _handleBodyMouseDown: function (e) { - if (!e) { e = window.event; } - /* - * Prevent clicks outside of the editor from taking focus - * away the editor. Note that in Firefox and Opera clicking on the - * scrollbar also take focus from the editor. Other browsers - * do not have this problem and stopping the click over the - * scrollbar for them causes mouse capture problems. - */ - var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv; - - var temp = e.target ? e.target : e.srcElement; - while (temp) { - if (topNode === temp) { - return; - } - temp = temp.parentNode; - } - if (e.preventDefault) { e.preventDefault(); } - if (e.stopPropagation){ e.stopPropagation(); } - if (!isW3CEvents) { - /* In IE 8 is not possible to prevent the default handler from running - * during mouse down event using usual API. The workaround is to use - * setCapture/releaseCapture. - */ - topNode.setCapture(); - setTimeout(function() { topNode.releaseCapture(); }, 0); - } - }, - _handleBlur: function (e) { - if (!e) { e = window.event; } - this._hasFocus = false; - /* - * Bug in IE 8 and earlier. For some reason when text is deselected - * the overflow selection at the end of some lines does not get redrawn. - * The fix is to create a DOM element in the body to force a redraw. - */ - if (isIE < 9) { - if (!this._getSelection().isEmpty()) { - var document = this._frameDocument; - var child = document.createElement("DIV"); - var body = document.body; - body.appendChild(child); - body.removeChild(child); - } - } - }, - _handleContextMenu: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleCopy: function (e) { - if (this._ignoreCopy) { return; } - if (!e) { e = window.event; } - if (this._doCopy(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleCut: function (e) { - if (!e) { e = window.event; } - if (this._doCut(e)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleDataModified: function(e) { - this._startIME(); - }, - _handleDblclick: function (e) { - if (!e) { e = window.event; } - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - this._lastMouseTime = time; - if (this._clickCount !== 2) { - this._clickCount = 2; - this._handleMouse(e); - } - }, - _handleDragStart: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDragOver: function (e) { - if (!e) { e = window.event; } - e.dataTransfer.dropEffect = "none"; - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDrop: function (e) { - if (!e) { e = window.event; } - if (e.preventDefault) { e.preventDefault(); } - return false; - }, - _handleDocFocus: function (e) { - if (!e) { e = window.event; } - this._clientDiv.focus(); - }, - _handleFocus: function (e) { - if (!e) { e = window.event; } - this._hasFocus = true; - /* - * Feature in IE. The selection is not restored when the - * editor gets focus and the caret is always placed at the - * beginning of the document. The fix is to update the DOM - * selection during the focus event. - */ - if (isIE) { - this._updateDOMSelection(); - } - }, - _handleKeyDown: function (e) { - if (!e) { e = window.event; } - if (isPad) { - if (e.keyCode === 8) { - this._doBackspace({}); - e.preventDefault(); - } - return; - } - if (e.keyCode === 229) { - if (this.readonly) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - this._startIME(); - } else { - this._commitIME(); - } - /* - * Feature in Firefox. When a key is held down the browser sends - * right number of keypress events but only one keydown. This is - * unexpected and causes the editor to only execute an action - * just one time. The fix is to ignore the keydown event and - * execute the actions from the keypress handler. - * Note: This only happens on the Mac (Firefox). - * - * Feature in Opera. Opera sends keypress events even for non-printable - * keys. The fix is to handle actions in keypress instead of keydown. - */ - if ((isMac && isFirefox) || isOpera) { - this._keyDownEvent = e; - return true; - } - - if (this._doAction(e)) { - if (e.preventDefault) { - e.preventDefault(); - } else { - e.cancelBubble = true; - e.returnValue = false; - e.keyCode = 0; - } - return false; - } - }, - _handleKeyPress: function (e) { - if (!e) { e = window.event; } - if ((isMac && isFirefox) || isOpera) { - if (this._doAction(this._keyDownEvent)) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - var ctrlKey = isMac ? e.metaKey : e.ctrlKey; - if (e.charCode !== undefined) { - if (ctrlKey) { - switch (e.charCode) { - /* - * In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled - * the clipboard events are not sent. The fix to allow - * the browser to handles these key events. - */ - case 99://c - case 118://v - case 120://x - return true; - } - } - } - var ignore = false; - if (isMac) { - if (e.ctrlKey || e.metaKey) { ignore = true; } - } else { - if (isFirefox) { - //Firefox clears the state mask when ALT GR generates input - if (e.ctrlKey || e.altKey) { ignore = true; } - } else { - //IE and Chrome only send ALT GR when input is generated - if (e.ctrlKey ^ e.altKey) { ignore = true; } - } - } - if (!ignore) { - var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode); - if (key !== 0) { - this._doContent(String.fromCharCode (key)); - if (e.preventDefault) { e.preventDefault(); } - return false; - } - } - }, - _handleKeyUp: function (e) { - if (!e) { e = window.event; } - - // don't commit for space (it happens during JP composition) - if (e.keyCode === 13) { - this._commitIME(); - } - }, - _handleMouse: function (e) { - var target = this._frameWindow; - if (isIE) { target = this._clientDiv; } - if (this._overlayDiv) { - var self = this; - setTimeout(function () { - self.focus(); - }, 0); - } - if (this._clickCount === 1) { - this._setGrab(target); - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - } else { - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(target); } - - this._doubleClickSelection = null; - this._setSelectionTo(e.clientX, e.clientY, e.shiftKey); - this._doubleClickSelection = this._getSelection(); - } - }, - _handleMouseDown: function (e) { - if (!e) { e = window.event; } - var left = e.which ? e.button === 0 : e.button === 1; - this._commitIME(); - if (left) { - this._isMouseDown = true; - var deltaX = Math.abs(this._lastMouseX - e.clientX); - var deltaY = Math.abs(this._lastMouseY - e.clientY); - var time = e.timeStamp ? e.timeStamp : new Date().getTime(); - if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) { - this._clickCount++; - } else { - this._clickCount = 1; - } - this._lastMouseX = e.clientX; - this._lastMouseY = e.clientY; - this._lastMouseTime = time; - this._handleMouse(e); - if (isOpera) { - if (!this._hasFocus) { - this.focus(); - } - e.preventDefault(); - } - } - }, - _handleMouseMove: function (e) { - if (!e) { e = window.event; } - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - * - * In order to detect double-click and drag gestures, it is necessary to send - * a mouse down event from mouse move when the button is still down and isMouseDown - * flag is not set. - */ - if (!isW3CEvents) { - if (e.button === 0) { - this._setGrab(null); - return true; - } - if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) { - this._clickCount = 2; - return this._handleMouse(e, this._clickCount); - } - } - - var x = e.clientX; - var y = e.clientY; - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var width = this._getClientWidth (), height = this._getClientHeight(); - var leftEdge = editorRect.left + editorPad.left; - var topEdge = editorRect.top + editorPad.top; - var rightEdge = editorRect.left + editorPad.left + width; - var bottomEdge = editorRect.top + editorPad.top + height; - var model = this._model; - var caretLine = model.getLineAtOffset(this._getSelection().getCaret()); - if (y < topEdge && caretLine !== 0) { - this._doAutoScroll("up", x, y - topEdge); - } else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) { - this._doAutoScroll("down", x, y - bottomEdge); - } else if (x < leftEdge) { - this._doAutoScroll("left", x - leftEdge, y); - } else if (x > rightEdge) { - this._doAutoScroll("right", x - rightEdge, y); - } else { - this._endAutoScroll(); - this._setSelectionTo(x, y, true); - /* - * Feature in IE. IE does redraw the selection background right - * away after the selection changes because of mouse move events. - * The fix is to call getBoundingClientRect() on the - * body element to force the selection to be redraw. Some how - * calling this method forces a redraw. - */ - if (isIE) { - var body = this._frameDocument.body; - body.getBoundingClientRect(); - } - } - }, - _handleMouseUp: function (e) { - if (!e) { e = window.event; } - this._endAutoScroll(); - var left = e.which ? e.button === 0 : e.button === 1; - if (left) { - this._isMouseDown=false; - - /* - * Feature in IE8 and older, the sequence of events in the IE8 event model - * for a doule-click is: - * - * down - * up - * up - * dblclick - * - * Given that the mouse down/up events are not balanced, it is not possible to - * grab on mouse down and ungrab on mouse up. The fix is to grab on the first - * mouse down and ungrab on mouse move when the button 1 is not set. - */ - if (isW3CEvents) { this._setGrab(null); } - } - }, - _handleMouseWheel: function (e) { - if (!e) { e = window.event; } - var lineHeight = this._getLineHeight(); - var pixelX = 0, pixelY = 0; - // Note: On the Mac the correct behaviour is to scroll by pixel. - if (isFirefox) { - var pixel; - if (isMac) { - pixel = e.detail * 3; - } else { - var limit = 256; - pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight; - } - if (e.axis === e.HORIZONTAL_AXIS) { - pixelX = pixel; - } else { - pixelY = pixel; - } - } else { - //Webkit - if (isMac) { - /* - * In Safari, the wheel delta is a multiple of 120. In order to - * convert delta to pixel values, it is necessary to divide delta - * by 40. - * - * In Chrome, the wheel delta depends on the type of the mouse. In - * general, it is the pixel value for Mac mice and track pads, but - * it is a multiple of 120 for other mice. There is no presise - * way to determine if it is pixel value or a multiple of 120. - * - * Note that the current approach does not calculate the correct - * pixel value for Mac mice when the delta is a multiple of 120. - */ - var denominatorX = 40, denominatorY = 40; - if (isChrome) { - if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; } - if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; } - } - pixelX = -e.wheelDeltaX / denominatorX; - if (-1 < pixelX && pixelX < 0) { pixelX = -1; } - if (0 < pixelX && pixelX < 1) { pixelX = 1; } - pixelY = -e.wheelDeltaY / denominatorY; - if (-1 < pixelY && pixelY < 0) { pixelY = -1; } - if (0 < pixelY && pixelY < 1) { pixelY = 1; } - } else { - pixelX = -e.wheelDeltaX; - var linesToScroll = 8; - pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight; - } - } - /* - * Feature in Safari. If the event target is removed from the DOM - * safari stops smooth scrolling. The fix is keep the element target - * in the DOM and remove it on a later time. - * - * Note: Using a timer is not a solution, because the timeout needs to - * be at least as long as the gesture (which is too long). - */ - if (isSafari) { - var lineDiv = e.target; - while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; } - this._mouseWheelLine = lineDiv; - } - var oldScroll = this._getScroll(); - this._scrollView(pixelX, pixelY); - var newScroll = this._getScroll(); - if (isSafari) { this._mouseWheelLine = null; } - if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) { - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handlePaste: function (e) { - if (this._ignorePaste) { return; } - if (!e) { e = window.event; } - if (this._doPaste(e)) { - if (isIE) { - /* - * Bug in IE, - */ - var self = this; - setTimeout(function() {self._updateDOMSelection();}, 0); - } - if (e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleResize: function (e) { - if (!e) { e = window.event; } - var document = this._frameDocument; - var element = isIE < 9 ? document.documentElement : document.body; - var newWidth = element.clientWidth; - var newHeight = element.clientHeight; - if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) { - this._editorWidth = newWidth; - this._editorHeight = newHeight; -// this._queueUpdatePage(); - this._updatePage(); - } - }, - _handleRulerEvent: function (e) { - if (!e) { e = window.event; } - var target = e.target ? e.target : e.srcElement; - var lineIndex = target.lineIndex; - var element = target; - while (element && !element._ruler) { - if (lineIndex === undefined && element.lineIndex !== undefined) { - lineIndex = element.lineIndex; - } - element = element.parentNode; - } - var ruler = element ? element._ruler : null; - if (isPad && lineIndex === undefined && ruler && ruler.getOverview() === "document") { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var lineHeight = this._getLineHeight (); - var editorPad = this._getEditorPadding(); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var pixels = this._model.getLineCount () * lineHeight; - this.setTopPixel(Math.floor((e.clientY - buttonHeight - lineHeight) * pixels / trackHeight)); - } - if (ruler) { - switch (e.type) { - case "click": - if (ruler.onClick) { ruler.onClick(lineIndex, e); } - break; - case "dblclick": - if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); } - break; - } - } - }, - _handleScroll: function () { - this._doScroll(this._getScroll()); - }, - _handleSelectStart: function (e) { - if (!e) { e = window.event; } - if (this._ignoreSelect) { - if (e && e.preventDefault) { e.preventDefault(); } - return false; - } - }, - _handleInput: function (e) { - var textArea = this._textArea; - this._doContent(textArea.value); - textArea.selectionStart = textArea.selectionEnd = 0; - textArea.value = ""; - e.preventDefault(); - }, - _handleTextInput: function (e) { - this._doContent(e.data); - e.preventDefault(); - }, - _touchConvert: function (touch) { - var rect = this._frame.getBoundingClientRect(); - var body = this._parentDocument.body; - return {left: touch.clientX - rect.left - body.scrollLeft, top: touch.clientY - rect.top - body.scrollTop}; - }, - _handleTouchStart: function (e) { - var touches = e.touches, touch, pt, sel; - this._touchMoved = false; - this._touchStartScroll = undefined; - if (touches.length === 1) { - touch = touches[0]; - var pageX = touch.pageX; - var pageY = touch.pageY; - this._touchStartX = pageX; - this._touchStartY = pageY; - this._touchStartTime = e.timeStamp; - this._touchStartScroll = this._getScroll(); - sel = this._getSelection(); - pt = this._touchConvert(touches[0]); - this._touchGesture = "none"; - if (!sel.isEmpty()) { - if (this._hitOffset(sel.end, pt.left, pt.top)) { - this._touchGesture = "extendEnd"; - } else if (this._hitOffset(sel.start, pt.left, pt.top)) { - this._touchGesture = "extendStart"; - } - } - if (this._touchGesture === "none") { - var textArea = this._textArea; - textArea.value = ""; - textArea.style.left = "-1000px"; - textArea.style.top = "-1000px"; - textArea.style.width = "3000px"; - textArea.style.height = "3000px"; - var self = this; - var f = function() { - self._touchTimeout = null; - self._clickCount = 1; - self._setSelectionTo(pt.left, pt.top, false); - }; - this._touchTimeout = setTimeout(f, 200); - } - } else if (touches.length === 2) { - this._touchGesture = "select"; - if (this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - } - pt = this._touchConvert(touches[0]); - var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - pt = this._touchConvert(touches[1]); - var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - sel = this._getSelection(); - sel.setCaret(offset1); - sel.extend(offset2); - this._setSelection(sel, true, true); - } - //Cannot prevent to show maginifier -// e.preventDefault(); - }, - _handleTouchMove: function (e) { - this._touchMoved = true; - var touches = e.touches, pt, sel; - if (touches.length === 1) { - var touch = touches[0]; - var pageX = touch.pageX; - var pageY = touch.pageY; - var deltaX = this._touchStartX - pageX; - var deltaY = this._touchStartY - pageY; - pt = this._touchConvert(touch); - sel = this._getSelection(); - if (this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - } - if (this._touchGesture === "none") { - if ((e.timeStamp - this._touchStartTime) < 200 && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) { - this._touchGesture = "scroll"; - } else { - this._touchGesture = "caret"; - } - } - if (this._touchGesture === "select") { - if (this._hitOffset(sel.end, pt.left, pt.top)) { - this._touchGesture = "extendEnd"; - } else if (this._hitOffset(sel.start, pt.left, pt.top)) { - this._touchGesture = "extendStart"; - } else { - this._touchGesture = "caret"; - } - } - switch (this._touchGesture) { - case "scroll": - this._touchStartX = pageX; - this._touchStartY = pageY; - this._scrollView(deltaX, deltaY); - break; - case "extendStart": - case "extendEnd": - this._clickCount = 1; - var lineIndex = this._getYToLine(pt.top); - var offset = this._getXToOffset(lineIndex, pt.left); - sel.setCaret(this._touchGesture === "extendStart" ? sel.end : sel.start); - sel.extend(offset); - if (offset >= sel.end && this._touchGesture === "extendStart") { - this._touchGesture = "extendEnd"; - } - if (offset <= sel.start && this._touchGesture === "extendEnd") { - this._touchGesture = "extendStart"; - } - this._setSelection(sel, true, true); - break; - case "caret": - this._setSelectionTo(pt.left, pt.top, false); - break; - } - } else if (touches.length === 2) { - pt = this._touchConvert(touches[0]); - var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - pt = this._touchConvert(touches[1]); - var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left); - sel = this._getSelection(); - sel.setCaret(offset1); - sel.extend(offset2); - this._setSelection(sel, true, true); - } - e.preventDefault(); - }, - _handleTouchEnd: function (e) { - if (!this._touchMoved) { - if (e.touches.length === 0 && e.changedTouches.length === 1 && this._touchTimeout) { - clearTimeout(this._touchTimeout); - this._touchTimeout = null; - var touch = e.changedTouches[0]; - this._clickCount = 1; - var pt = this._touchConvert(touch); - this._setSelectionTo(pt.left, pt.top, false); - } - } - if (e.touches.length === 0) { - var self = this; - setTimeout(function() { - var selection = self._getSelection(); - var text = self._model.getText(selection.start, selection.end); - var textArea = self._textArea; - textArea.value = text; - textArea.selectionStart = 0; - textArea.selectionEnd = text.length; - if (!selection.isEmpty()) { - var touchRect = self._touchDiv.getBoundingClientRect(); - var bounds = self._getOffsetBounds(selection.start); - textArea.style.left = (touchRect.width / 2) + "px"; - textArea.style.top = ((bounds.top > 40 ? bounds.top - 30 : bounds.top + 30)) + "px"; - } - }, 0); - } - e.preventDefault(); - }, - - /************************************ Actions ******************************************/ - _doAction: function (e) { - var keyBindings = this._keyBindings; - for (var i = 0; i < keyBindings.length; i++) { - var kb = keyBindings[i]; - if (kb.keyBinding.match(e)) { - if (kb.name) { - var actions = this._actions; - for (var j = 0; j < actions.length; j++) { - var a = actions[j]; - if (a.name === kb.name) { - if (a.userHandler) { - if (!a.userHandler()) { - if (a.defaultHandler) { - a.defaultHandler(); - } - } - } else if (a.defaultHandler) { - a.defaultHandler(); - } - break; - } - } - } - return true; - } - } - return false; - }, - _doBackspace: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doContent: function (text) { - var selection = this._getSelection(); - this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true); - }, - _doCopy: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - return this._setClipboardText(text, e); - } - return true; - }, - _doCursorNext: function (args) { - if (!args.select) { - if (this._clearSelection("next")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd(lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCursorPrevious: function (args) { - if (!args.select) { - if (this._clearSelection("previous")) { return true; } - } - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineStart(lineIndex)) { - if (lineIndex > 0) { - selection.extend(model.getLineEnd(lineIndex - 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, -1)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doCut: function (e) { - var selection = this._getSelection(); - if (!selection.isEmpty()) { - var text = this._model.getText(selection.start, selection.end); - this._doContent(""); - return this._setClipboardText(text, e); - } - return true; - }, - _doDelete: function (args) { - var selection = this._getSelection(); - if (selection.isEmpty()) { - var model = this._model; - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (caret === model.getLineEnd (lineIndex)) { - if (lineIndex + 1 < model.getLineCount()) { - selection.extend(model.getLineStart(lineIndex + 1)); - } - } else { - selection.extend(this._getOffset(caret, args.word, 1)); - } - } - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - return true; - }, - _doEnd: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(model.getCharCount()); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineEnd(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doEnter: function (args) { - var model = this._model; - this._doContent(model.getLineDelimiter()); - return true; - }, - _doHome: function (args) { - var selection = this._getSelection(); - var model = this._model; - if (args.ctrl) { - selection.extend(0); - } else { - var lineIndex = model.getLineAtOffset(selection.getCaret()); - selection.extend(model.getLineStart(lineIndex)); - } - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true); - return true; - }, - _doLineDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex + 1 < model.getLineCount()) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex + 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doLineUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var lineIndex = model.getLineAtOffset(caret); - if (lineIndex > 0) { - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(lineIndex - 1, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, true, true); - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageDown: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - var lineCount = model.getLineCount(); - if (caretLine < lineCount - 1) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.min(lineCount - caretLine - 1, lines); - scrollLines = Math.max(1, scrollLines); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine + scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalMaximum = lineCount * lineHeight; - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = verticalScrollOffset + scrollLines * lineHeight; - if (scrollOffset + clientHeight > verticalMaximum) { - scrollOffset = verticalMaximum - clientHeight; - } - if (scrollOffset > verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPageUp: function (args) { - var model = this._model; - var selection = this._getSelection(); - var caret = selection.getCaret(); - var caretLine = model.getLineAtOffset(caret); - if (caretLine > 0) { - var clientHeight = this._getClientHeight(); - var lineHeight = this._getLineHeight(); - var lines = Math.floor(clientHeight / lineHeight); - var scrollLines = Math.max(1, Math.min(caretLine, lines)); - var x = this._columnX; - if (x === -1 || args.select) { - x = this._getOffsetToX(caret); - } - selection.extend(this._getXToOffset(caretLine - scrollLines, x)); - if (!args.select) { selection.collapse(); } - this._setSelection(selection, false, false); - - var verticalScrollOffset = this._getScroll().y; - var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight); - if (scrollOffset < verticalScrollOffset) { - this._scrollView(0, scrollOffset - verticalScrollOffset); - } else { - this._updateDOMSelection(); - } - this._columnX = x;//fix x by scrolling - } - return true; - }, - _doPaste: function(e) { - var text = this._getClipboardText(e); - if (text) { - this._doContent(text); - } - return text !== null; - }, - _doScroll: function (scroll) { - var oldX = this._hScroll; - var oldY = this._vScroll; - if (oldX !== scroll.x || (oldY !== scroll.y)) { - this._hScroll = scroll.x; - this._vScroll = scroll.y; - this._commitIME(); - this._updatePage(); - var e = { - oldValue: {x: oldX, y: oldY}, - newValue: scroll - }; - this.onScroll(e); - } - }, - _doSelectAll: function (args) { - var model = this._model; - var selection = this._getSelection(); - selection.setCaret(0); - selection.extend(model.getCharCount()); - this._setSelection(selection, false); - return true; - }, - _doTab: function (args) { - this._doContent("\t"); - return true; - }, - - /************************************ Internals ******************************************/ - _applyStyle: function(style, node) { - if (!style) { - return; - } - if (style.styleClass) { - node.className = style.styleClass; - } - var properties = style.style; - if (properties) { - for (var s in properties) { - if (properties.hasOwnProperty(s)) { - node.style[s] = properties[s]; - } - } - } - }, - _autoScroll: function () { - var selection = this._getSelection(); - var line; - var x = this._autoScrollX; - if (this._autoScrollDir === "up" || this._autoScrollDir === "down") { - var scroll = this._autoScrollY / this._getLineHeight(); - scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll); - line = this._model.getLineAtOffset(selection.getCaret()); - line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll)); - } else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") { - line = this._getYToLine(this._autoScrollY); - x += this._getOffsetToX(selection.getCaret()); - } - selection.extend(this._getXToOffset(line, x)); - this._setSelection(selection, true); - }, - _autoScrollTimer: function () { - this._autoScroll(); - var self = this; - this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE); - }, - _calculateLineHeight: function() { - var document = this._frameDocument; - var parent = this._clientDiv; - var span1 = document.createElement("SPAN"); - span1.appendChild(document.createTextNode("W")); - parent.appendChild(span1); - var br = document.createElement("BR"); - parent.appendChild(br); - var span2 = document.createElement("SPAN"); - span2.appendChild(document.createTextNode("W")); - parent.appendChild(span2); - var rect1 = span1.getBoundingClientRect(); - var rect2 = span2.getBoundingClientRect(); - var lineHeight = rect2.top - rect1.top; - parent.removeChild(span1); - parent.removeChild(br); - parent.removeChild(span2); - return lineHeight; - }, - _clearSelection: function (direction) { - var selection = this._getSelection(); - if (selection.isEmpty()) { return false; } - if (direction === "next") { - selection.start = selection.end; - } else { - selection.end = selection.start; - } - this._setSelection(selection, true); - return true; - }, - _commitIME: function () { - if (this._imeOffset === -1) { return; } - // make the state of the IME match the state the editor expects it be in - // when the editor commits the text and IME also need to be committed - // this can be accomplished by changing the focus around - this._scrollDiv.focus(); - this._clientDiv.focus(); - - var model = this._model; - var lineIndex = model.getLineAtOffset(this._imeOffset); - var lineStart = model.getLineStart(lineIndex); - var newText = this._getDOMText(lineIndex); - var oldText = model.getLine(lineIndex); - var start = this._imeOffset - lineStart; - var end = start + newText.length - oldText.length; - if (start !== end) { - var insertText = newText.substring(start, end); - this._doContent(insertText); - } - this._imeOffset = -1; - }, - _createActions: function () { - var KeyBinding = eclipse.KeyBinding; - //no duplicate keybindings - var bindings = this._keyBindings = []; - - // Cursor Navigation - bindings.push({name: "lineUp", keyBinding: new KeyBinding(38), predefined: true}); - bindings.push({name: "lineDown", keyBinding: new KeyBinding(40), predefined: true}); - bindings.push({name: "charPrevious", keyBinding: new KeyBinding(37), predefined: true}); - bindings.push({name: "charNext", keyBinding: new KeyBinding(39), predefined: true}); - bindings.push({name: "pageUp", keyBinding: new KeyBinding(33), predefined: true}); - bindings.push({name: "pageDown", keyBinding: new KeyBinding(34), predefined: true}); - if (isMac) { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, null, null, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, null, null, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(38, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(40, true), predefined: true}); - } else { - bindings.push({name: "lineStart", keyBinding: new KeyBinding(36), predefined: true}); - bindings.push({name: "lineEnd", keyBinding: new KeyBinding(35), predefined: true}); - bindings.push({name: "wordPrevious", keyBinding: new KeyBinding(37, true), predefined: true}); - bindings.push({name: "wordNext", keyBinding: new KeyBinding(39, true), predefined: true}); - bindings.push({name: "textStart", keyBinding: new KeyBinding(36, true), predefined: true}); - bindings.push({name: "textEnd", keyBinding: new KeyBinding(35, true), predefined: true}); - } - - // Select Cursor Navigation - bindings.push({name: "selectLineUp", keyBinding: new KeyBinding(38, null, true), predefined: true}); - bindings.push({name: "selectLineDown", keyBinding: new KeyBinding(40, null, true), predefined: true}); - bindings.push({name: "selectCharPrevious", keyBinding: new KeyBinding(37, null, true), predefined: true}); - bindings.push({name: "selectCharNext", keyBinding: new KeyBinding(39, null, true), predefined: true}); - bindings.push({name: "selectPageUp", keyBinding: new KeyBinding(33, null, true), predefined: true}); - bindings.push({name: "selectPageDown", keyBinding: new KeyBinding(34, null, true), predefined: true}); - if (isMac) { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, null, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, null, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(38, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(40, true, true), predefined: true}); - } else { - bindings.push({name: "selectLineStart", keyBinding: new KeyBinding(36, null, true), predefined: true}); - bindings.push({name: "selectLineEnd", keyBinding: new KeyBinding(35, null, true), predefined: true}); - bindings.push({name: "selectWordPrevious", keyBinding: new KeyBinding(37, true, true), predefined: true}); - bindings.push({name: "selectWordNext", keyBinding: new KeyBinding(39, true, true), predefined: true}); - bindings.push({name: "selectTextStart", keyBinding: new KeyBinding(36, true, true), predefined: true}); - bindings.push({name: "selectTextEnd", keyBinding: new KeyBinding(35, true, true), predefined: true}); - } - - //Misc - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8), predefined: true}); - bindings.push({name: "deletePrevious", keyBinding: new KeyBinding(8, null, true), predefined: true}); - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, true, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, true), predefined: true}); - bindings.push({name: "tab", keyBinding: new KeyBinding(9), predefined: true}); - bindings.push({name: "enter", keyBinding: new KeyBinding(13), predefined: true}); - bindings.push({name: "selectAll", keyBinding: new KeyBinding('a', true), predefined: true}); - if (isMac) { - bindings.push({name: "deleteNext", keyBinding: new KeyBinding(46, null, true), predefined: true}); - bindings.push({name: "deleteWordPrevious", keyBinding: new KeyBinding(8, null, null, true), predefined: true}); - bindings.push({name: "deleteWordNext", keyBinding: new KeyBinding(46, null, null, true), predefined: true}); - } - - /* - * Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text. - * - * Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd. - */ - var isMacChrome = isMac && isChrome; - bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true}); - bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true}); - - if (isFirefox) { - bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true}); - bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true}); - bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true}); - } - - //1 to 1, no duplicates - var self = this; - this._actions = [ - {name: "lineUp", defaultHandler: function() {return self._doLineUp({select: false});}}, - {name: "lineDown", defaultHandler: function() {return self._doLineDown({select: false});}}, - {name: "lineStart", defaultHandler: function() {return self._doHome({select: false, ctrl:false});}}, - {name: "lineEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}}, - {name: "charPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}}, - {name: "charNext", defaultHandler: function() {return self._doCursorNext({select: false, word:false});}}, - {name: "pageUp", defaultHandler: function() {return self._doPageUp({select: false});}}, - {name: "pageDown", defaultHandler: function() {return self._doPageDown({select: false});}}, - {name: "wordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}}, - {name: "wordNext", defaultHandler: function() {return self._doCursorNext({select: false, word:true});}}, - {name: "textStart", defaultHandler: function() {return self._doHome({select: false, ctrl:true});}}, - {name: "textEnd", defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}}, - - {name: "selectLineUp", defaultHandler: function() {return self._doLineUp({select: true});}}, - {name: "selectLineDown", defaultHandler: function() {return self._doLineDown({select: true});}}, - {name: "selectLineStart", defaultHandler: function() {return self._doHome({select: true, ctrl:false});}}, - {name: "selectLineEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}}, - {name: "selectCharPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}}, - {name: "selectCharNext", defaultHandler: function() {return self._doCursorNext({select: true, word:false});}}, - {name: "selectPageUp", defaultHandler: function() {return self._doPageUp({select: true});}}, - {name: "selectPageDown", defaultHandler: function() {return self._doPageDown({select: true});}}, - {name: "selectWordPrevious", defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}}, - {name: "selectWordNext", defaultHandler: function() {return self._doCursorNext({select: true, word:true});}}, - {name: "selectTextStart", defaultHandler: function() {return self._doHome({select: true, ctrl:true});}}, - {name: "selectTextEnd", defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}}, - - {name: "deletePrevious", defaultHandler: function() {return self._doBackspace({word:false});}}, - {name: "deleteNext", defaultHandler: function() {return self._doDelete({word:false});}}, - {name: "deleteWordPrevious", defaultHandler: function() {return self._doBackspace({word:true});}}, - {name: "deleteWordNext", defaultHandler: function() {return self._doDelete({word:true});}}, - {name: "tab", defaultHandler: function() {return self._doTab();}}, - {name: "enter", defaultHandler: function() {return self._doEnter();}}, - {name: "selectAll", defaultHandler: function() {return self._doSelectAll();}}, - {name: "copy", defaultHandler: function() {return self._doCopy();}}, - {name: "cut", defaultHandler: function() {return self._doCut();}}, - {name: "paste", defaultHandler: function() {return self._doPaste();}} - ]; - }, - _createLine: function(parent, sibling, document, lineIndex, model) { - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart}; - this.onLineStyle(e); - var child = document.createElement("DIV"); - child.lineIndex = lineIndex; - this._applyStyle(e.style, child); - - /* - * Firefox does not extend the selection at the end of the line when the - * line is fully selected. The fix is to add an extra space at the end of - * the line. - */ - var extendSelection = isFirefox || isOpera || isIE >= 9; - if (lineText.length === 0) { - /* - * When the span is empty the height of the line div becomes zero. - * The fix is use a zero-width non-break space to preserve the default - * height in the line div. Note that in Chrome this character shows - * a glyph, for this reason the zero-width non-joiner character is - * used instead. - */ - if (!extendSelection) { - var span = document.createElement("SPAN"); - span.ignoreChars = 1; - span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF")); - child.appendChild(span); - } - } else { - var start = 0; - var tabSize = this._tabSize; - if (tabSize && tabSize !== 8) { - var tabIndex = lineText.indexOf("\t"), ignoreChars = 0; - while (tabIndex !== -1) { - this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart); - var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize); - var spaces = "\u00A0"; - for (var i = 1; i < spacesCount; i++) { - spaces += " "; - } - var tabSpan = document.createElement("SPAN"); - tabSpan.appendChild(document.createTextNode(spaces)); - tabSpan.ignoreChars = spacesCount - 1; - ignoreChars += tabSpan.ignoreChars; - if (e.ranges) { - for (var j = 0; j < e.ranges.length; j++) { - var range = e.ranges[j]; - var styleStart = range.start - lineStart; - var styleEnd = range.end - lineStart; - if (styleStart > tabIndex) { break; } - if (styleStart <= tabIndex && tabIndex < styleEnd) { - this._applyStyle(range.style, tabSpan); - break; - } - } - } - child.appendChild(tabSpan); - start = tabIndex + 1; - tabIndex = lineText.indexOf("\t", start); - } - } - this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart); - } - if (extendSelection) { - var ext = document.createElement("SPAN"); - ext.ignoreChars = 1; - ext.appendChild(document.createTextNode(" ")); - child.appendChild(ext); - } - parent.insertBefore(child, sibling); - return child; - }, - _createRange: function(parent, document, ranges, start, end, text, lineStart) { - if (start >= end) { return; } - var span; - if (ranges) { - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - if (range.end <= lineStart + start) { continue; } - var styleStart = Math.max(lineStart + start, range.start) - lineStart; - if (styleStart >= end) { break; } - var styleEnd = Math.min(lineStart + end, range.end) - lineStart; - if (styleStart < styleEnd) { - styleStart = Math.max(start, styleStart); - styleEnd = Math.min(end, styleEnd); - if (start < styleStart) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, styleStart))); - parent.appendChild(span); - } - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd))); - this._applyStyle(range.style, span); - parent.appendChild(span); - start = styleEnd; - } - } - } - if (start < end) { - span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(start, end))); - parent.appendChild(span); - } - }, - _doAutoScroll: function (direction, x, y) { - this._autoScrollDir = direction; - this._autoScrollX = x; - this._autoScrollY = y; - if (!this._autoScrollTimerID) { - this._autoScrollTimer(); - } - }, - _endAutoScroll: function () { - if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); } - this._autoScrollDir = undefined; - this._autoScrollTimerID = undefined; - }, - _getBoundsAtOffset: function (offset) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var lineIndex = model.getLineAtOffset(offset); - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = null; - if (offset < model.getLineEnd(lineIndex)) { - var lineOffset = model.getLineStart(lineIndex); - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - var index = offset - lineOffset; - var range; - if (isRangeRects) { - range = document.createRange(); - range.setStart(textNode, index); - range.setEnd(textNode, index + 1); - result = range.getBoundingClientRect(); - } else if (isIE) { - range = document.body.createTextRange(); - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", index + 1); - range.moveStart("character", index); - result = range.getBoundingClientRect(); - } else { - var text = textNode.data; - lineChild.removeChild(textNode); - lineChild.appendChild(document.createTextNode(text.substring(0, index))); - var span = document.createElement("SPAN"); - span.appendChild(document.createTextNode(text.substring(index, index + 1))); - lineChild.appendChild(span); - lineChild.appendChild(document.createTextNode(text.substring(index + 1))); - result = span.getBoundingClientRect(); - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - if (!dummy) { - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) || (lineOffset <= s.end && s.end < lineOffset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - if (isIE) { - var logicalXDPI = window.screen.logicalXDPI; - var deviceXDPI = window.screen.deviceXDPI; - result.left = result.left * logicalXDPI / deviceXDPI; - result.right = result.right * logicalXDPI / deviceXDPI; - } - break; - } - lineOffset += nodeLength; - lineChild = lineChild.nextSibling; - } - } - if (!result) { - var rect = this._getLineBoundingClientRect(child); - result = {left: rect.right, right: rect.right}; - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getBottomIndex: function (fullyVisible) { - var child = this._bottomChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var clientRect = this._clientDiv.getBoundingClientRect(); - if (rect.bottom > clientRect.bottom) { - child = this._getLinePrevious(child) || child; - } - } - return child.lineIndex; - }, - _getFrameHeight: function() { - return this._frameDocument.documentElement.clientHeight; - }, - _getFrameWidth: function() { - return this._frameDocument.documentElement.clientWidth; - }, - _getClientHeight: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom); - }, - _getClientWidth: function() { - var editorPad = this._getEditorPadding(); - return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right); - }, - _getClipboardText: function (event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.getData("Text"); - } - if (isFirefox) { - var window = this._frameWindow; - var document = this._frameDocument; - var child = document.createElement("PRE"); - child.style.position = "fixed"; - child.style.left = "-1000px"; - child.appendChild(document.createTextNode(" ")); - this._clientDiv.appendChild(child); - var range = document.createRange(); - range.selectNodeContents(child); - var sel = window.getSelection(); - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - var self = this; - var cleanup = function() { - self._updateDOMSelection(); - self._clientDiv.removeChild(child); - }; - var delimiter = this._model.getLineDelimiter(); - var _getText = function() { - /* - * Use the selection anchor to determine the end of the pasted text as it is possible that - * some browsers (like Firefox) add extra elements (
                                ) after the pasted text. - */ - var endNode = null; - if (sel.anchorNode.nodeType !== child.TEXT_NODE) { - endNode = sel.anchorNode.childNodes[sel.anchorOffset]; - } - var text = []; - var getNodeText = function(node) { - var nodeChild = node.firstChild; - while (nodeChild !== endNode) { - if (nodeChild.nodeType === child.TEXT_NODE) { - text.push(nodeChild !== sel.anchorNode ? nodeChild.data : nodeChild.data.substring(0, sel.anchorOffset)); - } else if (nodeChild.tagName === "BR") { - text.push(delimiter); - } else { - getNodeText(nodeChild); - } - nodeChild = nodeChild.nextSibling; - } - }; - getNodeText(child); - cleanup(); - return text.join(""); - }; - - /* Try execCommand first. Works on firefox with clipboard permission. */ - var result = false; - this._ignorePaste = true; - try { - result = document.execCommand("paste", false, null); - } catch (ex) {} - this._ignorePaste = false; - if (!result) { - /* - * Try native paste in DOM, works for firefox during the paste event. - */ - if (event) { - setTimeout(function() { - var text = _getText(); - if (text) { self._doContent(text); } - }, 0); - return null; - } else { - /* no event and no clipboard permission, paste can't be performed */ - cleanup(); - return ""; - } - } - return _getText(); - } - //webkit - if (event && event.clipboardData) { - /* - * Webkit (Chrome/Safari) allows getData during the paste event - * Note: setData is not allowed, not even during copy/cut event - */ - return event.clipboardData.getData("text/plain"); - } else { - //TODO try paste using extension (Chrome only) - } - return ""; - }, - _getDOMText: function(lineIndex) { - var child = this._getLineNode(lineIndex); - var lineChild = child.firstChild; - var text = ""; - while (lineChild) { - var textNode = lineChild.firstChild; - while (textNode) { - if (lineChild.ignoreChars) { - for (var i = 0; i < textNode.length; i++) { - var ch = textNode.data.substring(i, i + 1); - if (ch !== " ") { - text += ch; - } - } - } else { - text += textNode.data; - } - textNode = textNode.nextSibling; - } - lineChild = lineChild.nextSibling; - } - return text; - }, - _getEditorPadding: function() { - if (!this._editorPadding) { - this._editorPadding = this._getPadding(this._editorDiv); - } - return this._editorPadding; - }, - _getLineBoundingClientRect: function (child) { - var rect = child.getBoundingClientRect(); - var lastChild = child.lastChild; - //Remove any artificial trailing whitespace in the line - if (lastChild && lastChild.ignoreChars === lastChild.firstChild.length) { - lastChild = lastChild.previousSibling; - } - if (!lastChild) { - return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom}; - } - var lastRect = lastChild.getBoundingClientRect(); - return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom}; - }, - _getLineHeight: function() { - var document = this._frameDocument; - var body = document.body; - return parseInt(body.style.lineHeight, 10); - }, - _getLineNode: function (lineIndex) { - var clientDiv = this._clientDiv; - var child = clientDiv.firstChild; - while (child) { - if (lineIndex === child.lineIndex) { - return child; - } - child = child.nextSibling; - } - return undefined; - }, - _getLineNext: function (lineNode) { - var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild; - while (node && node.lineIndex === -1) { - node = node.nextSibling; - } - return node; - }, - _getLinePrevious: function (lineNode) { - var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild; - while (node && node.lineIndex === -1) { - node = node.previousSibling; - } - return node; - }, - _getOffset: function (offset, word, direction) { - return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_W3C(offset, word, direction); - }, - _getOffset_W3C: function (offset, word, direction) { - function _isPunctuation(c) { - return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126); - } - function _isWhitespace(c) { - return c === 32 || c === 9; - } - if (word) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - var lineLength = lineText.length; - var offsetInLine = offset - lineStart; - - - var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit; - if (direction > 0) { - if (offsetInLine === lineLength) { return lineEnd; } - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - offsetInLine++; - while (offsetInLine < lineLength) { - c = lineText.charCodeAt(offsetInLine); - punctuation = _isPunctuation(c); - if (punctuation && !previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (letterOrDigit && !previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine++; - } - } else { - if (offsetInLine === 0) { return lineStart; } - offsetInLine--; - c = lineText.charCodeAt(offsetInLine); - previousPunctuation = _isPunctuation(c); - previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c); - while (0 < offsetInLine) { - c = lineText.charCodeAt(offsetInLine - 1); - punctuation = _isPunctuation(c); - if (!punctuation && previousPunctuation) { break; } - letterOrDigit = !punctuation && !_isWhitespace(c); - if (!letterOrDigit && previousLetterOrDigit) { break; } - previousLetterOrDigit = letterOrDigit; - previousPunctuation = punctuation; - offsetInLine--; - } - } - return lineStart + offsetInLine; - } - return offset + direction; - }, - _getOffset_IE: function (offset, word, direction) { - var document = this._frameDocument; - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var result = 0, range, length; - var lineOffset = model.getLineStart(lineIndex); - if (offset === model.getLineEnd(lineIndex)) { - range = document.body.createTextRange(); - range.moveToElementText(child.lastChild); - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - } else if (offset === lineOffset && direction < 0) { - result = lineOffset; - } else { - var lineChild = child.firstChild; - while (lineChild) { - var textNode = lineChild.firstChild; - var nodeLength = textNode.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (lineOffset + nodeLength > offset) { - range = document.body.createTextRange(); - if (offset === lineOffset && direction < 0) { - range.moveToElementText(lineChild.previousSibling); - } else { - range.moveToElementText(lineChild); - range.collapse(); - range.moveEnd("character", offset - lineOffset); - } - length = range.text.length; - range.moveEnd(word ? "word" : "character", direction); - result = offset + range.text.length - length; - break; - } - lineOffset = nodeLength + lineOffset; - lineChild = lineChild.nextSibling; - } - } - if (dummy) { clientDiv.removeChild(dummy); } - return result; - }, - _getOffsetToX: function (offset) { - return this._getBoundsAtOffset(offset).left; - }, - _getPadding: function (node) { - var left,top,right,bottom; - if (node.currentStyle) { - left = node.currentStyle.paddingLeft; - top = node.currentStyle.paddingTop; - right = node.currentStyle.paddingRight; - bottom = node.currentStyle.paddingBottom; - } else if (this._frameWindow.getComputedStyle) { - var style = this._frameWindow.getComputedStyle(node, null); - left = style.getPropertyValue("padding-left"); - top = style.getPropertyValue("padding-top"); - right = style.getPropertyValue("padding-right"); - bottom = style.getPropertyValue("padding-bottom"); - } - return { - left: parseInt(left, 10), - top: parseInt(top, 10), - right: parseInt(right, 10), - bottom: parseInt(bottom, 10) - }; - }, - _getScroll: function() { - var editorDiv = this._editorDiv; - return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop}; - }, - _getSelection: function () { - return this._selection.clone(); - }, - _getTopIndex: function (fullyVisible) { - var child = this._topChild; - if (fullyVisible && this._getClientHeight() > this._getLineHeight()) { - var rect = child.getBoundingClientRect(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - if (rect.top < editorRect.top + editorPad.top) { - child = this._getLineNext(child) || child; - } - } - return child.lineIndex; - }, - _getXToOffset: function (lineIndex, x) { - var model = this._model; - var document = this._frameDocument; - var clientDiv = this._clientDiv; - var dummy; - var child = this._getLineNode(lineIndex); - if (!child) { - child = dummy = this._createLine(clientDiv, null, document, lineIndex, model); - } - var lineRect = this._getLineBoundingClientRect(child); - if (x < lineRect.left) { x = lineRect.left; } - if (x > lineRect.right) { x = lineRect.right; } - /* - * Bug in IE 8 and earlier. The coordinates of getClientRects() are relative to - * the browser window. The fix is to convert to the frame window before using it. - */ - var deltaX = 0, rects; - if (isIE < 9) { - rects = child.getClientRects(); - var minLeft = rects[0].left; - for (var i=1; i 1) { - var mid = Math.floor((high + low) / 2); - start = low + 1; - end = mid === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : mid + 1; - if (isRangeRects) { - range.setStart(textNode, start); - range.setEnd(textNode, end); - } else { - range.moveToElementText(lineChild); - range.move("character", start); - range.moveEnd("character", end - start); - } - rects = range.getClientRects(); - var found = false; - for (var k = 0; k < rects.length; k++) { - rect = rects[k]; - var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX; - var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX; - if (rangeLeft <= x && x < rangeRight) { - found = true; - break; - } - } - if (found) { - high = mid; - } else { - low = mid; - } - } - offset += high; - start = high; - end = high === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : high + 1; - if (isRangeRects) { - range.setStart(textNode, start); - range.setEnd(textNode, end); - } else { - range.moveToElementText(lineChild); - range.move("character", start); - range.moveEnd("character", end - start); - } - rect = range.getClientRects()[0]; - //TODO test for character trailing (wrong for bidi) - if (x > ((rect.left * logicalXDPI / deviceXDPI - deltaX) + ((rect.right - rect.left) * logicalXDPI / deviceXDPI / 2))) { - offset++; - } - } else { - var newText = []; - for (var q = 0; q < nodeLength; q++) { - newText.push(""); - if (q === nodeLength - 1) { - newText.push(textNode.data.substring(q)); - } else { - newText.push(textNode.data.substring(q, q + 1)); - } - newText.push(""); - } - lineChild.innerHTML = newText.join(""); - var rangeChild = lineChild.firstChild; - while (rangeChild) { - rect = rangeChild.getBoundingClientRect(); - if (rect.left <= x && x < rect.right) { - //TODO test for character trailing (wrong for bidi) - if (x > rect.left + (rect.right - rect.left) / 2) { - offset++; - } - break; - } - offset++; - rangeChild = rangeChild.nextSibling; - } - if (!dummy) { - lineChild.innerHTML = ""; - lineChild.appendChild(textNode); - /* - * Removing the element node that holds the selection start or end - * causes the selection to be lost. The fix is to detect this case - * and restore the selection. - */ - var s = this._getSelection(); - if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) { - this._updateDOMSelection(); - } - } - } - break done; - } - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - if (dummy) { clientDiv.removeChild(dummy); } - return offset; - }, - _getYToLine: function (y) { - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - y -= editorRect.top + editorPad.top; - var lineHeight = this._getLineHeight(); - var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight); - var lineCount = this._model.getLineCount(); - return Math.max(0, Math.min(lineCount - 1, lineIndex)); - }, - _getOffsetBounds: function(offset) { - var model = this._model; - var lineIndex = model.getLineAtOffset(offset); - var lineHeight = this._getLineHeight(); - var scroll = this._getScroll(); - var editorPad = this._getEditorPadding(); - var editorRect = this._editorDiv.getBoundingClientRect(); - var bounds = this._getBoundsAtOffset(offset); - var left = bounds.left; - var right = bounds.right; - var top = (lineIndex * lineHeight) - scroll.y + editorRect.top + editorPad.top; - var bottom = top + lineHeight; - return {left: left, top: top, right: right, bottom: bottom}; - }, - _hitOffset: function (offset, x, y) { - var bounds = this._getOffsetBounds(offset); - var left = bounds.left; - var right = bounds.right; - var top = bounds.top; - var bottom = bounds.bottom; - var area = 20; - left -= area; - top -= area; - right += area; - bottom += area; - return (left <= x && x <= right && top <= y && y <= bottom); - }, - _hookEvents: function() { - var self = this; - this._modelListener = { - /** @private */ - onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - }, - /** @private */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - }; - this._model.addListener(this._modelListener); - - this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);}; - this._mouseUpClosure = function(e) { return self._handleMouseUp(e);}; - - var clientDiv = this._clientDiv; - var editorDiv = this._editorDiv; - var body = this._frameDocument.body; - var handlers = this._handlers = []; - var resizeNode = isIE < 9 ? this._frame : this._frameWindow; - var focusNode = isPad ? this._textArea : (isIE ? this._clientDiv: this._frameWindow); - handlers.push({target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}); - handlers.push({target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}}); - handlers.push({target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}}); - if (isPad) { - var touchDiv = this._touchDiv; - var textArea = this._textArea; - handlers.push({target: textArea, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}); - handlers.push({target: textArea, type: "input", handler: function(e) { return self._handleInput(e); }}); - handlers.push({target: textArea, type: "textInput", handler: function(e) { return self._handleTextInput(e); }}); - handlers.push({target: touchDiv, type: "touchstart", handler: function(e) { return self._handleTouchStart(e); }}); - handlers.push({target: touchDiv, type: "touchmove", handler: function(e) { return self._handleTouchMove(e); }}); - handlers.push({target: touchDiv, type: "touchend", handler: function(e) { return self._handleTouchEnd(e); }}); - } else { - var topNode = this._overlayDiv || this._clientDiv; - handlers.push({target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}}); - handlers.push({target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}}); - handlers.push({target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}}); - handlers.push({target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}}); - handlers.push({target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}}); - handlers.push({target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}}); - handlers.push({target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}}); - handlers.push({target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}}); - handlers.push({target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}}); - handlers.push({target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}}); - handlers.push({target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}}); - handlers.push({target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}}); - handlers.push({target: topNode, type: "dragover", handler: function(e) { return self._handleDragOver(e);}}); - handlers.push({target: topNode, type: "drop", handler: function(e) { return self._handleDrop(e);}}); - if (isIE) { - handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (isFirefox) { - handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }}); - } - if (!isIE && !isOpera) { - var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel"; - handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }}); - } - if (isFirefox && !isWindows) { - handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }}); - } - if (this._overlayDiv) { - handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }}); - } - if (!isW3CEvents) { - handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }}); - } - } - for (var i=0; i"); - html.push(""); - html.push(""); - if (isIE < 9) { - html.push(""); - } - html.push(""); - if (options.stylesheet) { - var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet; - for (var i = 0; i < stylesheet.length; i++) { - try { - //Force CSS to be loaded synchronously so lineHeight can be calculated - var objXml = new XMLHttpRequest(); - objXml.open("GET", stylesheet[i], false); - objXml.send(null); - html.push(""); - } catch (e) { - html.push(""); - } - } - } - html.push(""); - html.push(""); - html.push(""); - - var frameWindow = frame.contentWindow; - this._frameWindow = frameWindow; - var document = frameWindow.document; - this._frameDocument = document; - document.open(); - document.write(html.join("")); - document.close(); - - var body = document.body; - body.className = "editorContainer"; - body.style.margin = "0px"; - body.style.borderWidth = "0px"; - body.style.padding = "0px"; - - if (isPad) { - var touchDiv = parentDocument.createElement("DIV"); - this._touchDiv = touchDiv; - touchDiv.style.position = "absolute"; - touchDiv.style.border = "0px"; - touchDiv.style.padding = "0px"; - touchDiv.style.margin = "0px"; - touchDiv.style.zIndex = "2"; - touchDiv.style.overflow = "hidden"; - touchDiv.style.background="transparent"; -// touchDiv.style.background="green"; -// touchDiv.style.opacity="0.5"; - touchDiv.style.WebkitUserSelect = "none"; - parent.appendChild(touchDiv); - - var textArea = parentDocument.createElement("TEXTAREA"); - this._textArea = textArea; - textArea.style.position = "absolute"; - textArea.style.whiteSpace = "pre"; - textArea.style.left = "-1000px"; - textArea.tabIndex = 1; - textArea.autocapitalize = false; - textArea.autocorrect = false; - textArea.className = "editorContainer"; - textArea.style.background = "transparent"; - textArea.style.color = "transparent"; - textArea.style.border = "0px"; - textArea.style.padding = "0px"; - textArea.style.margin = "0px"; - textArea.style.borderRadius = "0px"; - textArea.style.WebkitAppearance = "none"; - textArea.style.WebkitTapHighlightColor = "transparent"; - touchDiv.appendChild(textArea); - } - - var editorDiv = document.createElement("DIV"); - editorDiv.className = "editor"; - this._editorDiv = editorDiv; - editorDiv.id = "editorDiv"; - editorDiv.tabIndex = -1; - editorDiv.style.overflow = "auto"; - editorDiv.style.position = "absolute"; - editorDiv.style.top = "0px"; - editorDiv.style.borderWidth = "0px"; - editorDiv.style.margin = "0px"; - editorDiv.style.MozOutline = "none"; - editorDiv.style.outline = "none"; - body.appendChild(editorDiv); - - var scrollDiv = document.createElement("DIV"); - this._scrollDiv = scrollDiv; - scrollDiv.id = "scrollDiv"; - scrollDiv.style.margin = "0px"; - scrollDiv.style.borderWidth = "0px"; - scrollDiv.style.padding = "0px"; - editorDiv.appendChild(scrollDiv); - - if (isPad) { - var selDiv1 = document.createElement("DIV"); - this._selDiv1 = selDiv1; - selDiv1.id = "selDiv1"; - selDiv1.style.position = "fixed"; - selDiv1.style.borderWidth = "0px"; - selDiv1.style.margin = "0px"; - selDiv1.style.padding = "0px"; - selDiv1.style.MozOutline = "none"; - selDiv1.style.outline = "none"; - selDiv1.style.background = "lightblue"; - selDiv1.style.width="0px"; - selDiv1.style.height="0px"; - scrollDiv.appendChild(selDiv1); - var selDiv2 = document.createElement("DIV"); - this._selDiv2 = selDiv2; - selDiv2.id = "selDiv2"; - selDiv2.style.position = "fixed"; - selDiv2.style.borderWidth = "0px"; - selDiv2.style.margin = "0px"; - selDiv2.style.padding = "0px"; - selDiv2.style.MozOutline = "none"; - selDiv2.style.outline = "none"; - selDiv2.style.background = "lightblue"; - selDiv2.style.width="0px"; - selDiv2.style.height="0px"; - scrollDiv.appendChild(selDiv2); - var selDiv3 = document.createElement("DIV"); - this._selDiv3 = selDiv3; - selDiv3.id = "selDiv3"; - selDiv3.style.position = "fixed"; - selDiv3.style.borderWidth = "0px"; - selDiv3.style.margin = "0px"; - selDiv3.style.padding = "0px"; - selDiv3.style.MozOutline = "none"; - selDiv3.style.outline = "none"; - selDiv3.style.background = "lightblue"; - selDiv3.style.width="0px"; - selDiv3.style.height="0px"; - scrollDiv.appendChild(selDiv3); - } - - var clientDiv = document.createElement("DIV"); - clientDiv.className = "editorContent"; - this._clientDiv = clientDiv; - clientDiv.id = "clientDiv"; - clientDiv.style.whiteSpace = "pre"; - clientDiv.style.position = "fixed"; - clientDiv.style.borderWidth = "0px"; - clientDiv.style.margin = "0px"; - clientDiv.style.padding = "0px"; - clientDiv.style.MozOutline = "none"; - clientDiv.style.outline = "none"; - if (isPad) { - clientDiv.style.WebkitTapHighlightColor = "transparent"; - } - scrollDiv.appendChild(clientDiv); - - if (isFirefox) { - var overlayDiv = document.createElement("DIV"); - this._overlayDiv = overlayDiv; - overlayDiv.id = "overlayDiv"; - overlayDiv.style.position = clientDiv.style.position; - overlayDiv.style.borderWidth = clientDiv.style.borderWidth; - overlayDiv.style.margin = clientDiv.style.margin; - overlayDiv.style.padding = clientDiv.style.padding; - overlayDiv.style.cursor = "text"; - overlayDiv.style.zIndex = "1"; - scrollDiv.appendChild(overlayDiv); - } - if (!isPad) { - clientDiv.contentEditable = "true"; - } - body.style.lineHeight = this._calculateLineHeight() + "px"; - if (options.tabSize) { - if (isOpera) { - clientDiv.style.OTabSize = options.tabSize+""; - } else if (isFirefox >= 4) { - clientDiv.style.MozTabSize = options.tabSize+""; - } else if (options.tabSize !== 8) { - this._tabSize = options.tabSize; - } - } - this._createActions(); - this._hookEvents(); - }, - _isDOMSelectionComplete: function() { - var selection = this._getSelection(); - var topIndex = this._getTopIndex(); - var bottomIndex = this._getBottomIndex(); - var model = this._model; - var firstLine = model.getLineAtOffset(selection.start); - var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end); - if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) { - var child = this._getLineNode(firstLine); - while (child && child.lineIndex <= lastLine) { - var lineChild = child.firstChild; - while (lineChild) { - if (lineChild.ignoreChars) { return false; } - lineChild = lineChild.nextSibling; - } - child = this._getLineNext(child); - } - return true; - } - return false; - }, - _modifyContent: function(e, updateCaret) { - if (this.readonly && !e._code) { - return; - } - - this.onVerify(e); - - if (e.text === null || e.text === undefined) { return; } - - var model = this._model; - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; } - model.setText (e.text, e.start, e.end); - if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; } - - if (updateCaret) { - var selection = this._getSelection (); - selection.setCaret(e.start + e.text.length); - this._setSelection(selection, true); - this._showCaret(); - } - this.onModify({}); - }, - _onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanged(e); - - var selection = this._getSelection(); - if (selection.end > start) { - if (selection.end > start && selection.start < start + removedCharCount) { - // selection intersects replaced text. set caret behind text change - selection.setCaret(start + addedCharCount); - } else { - // move selection to keep same text selected - selection.start += addedCharCount - removedCharCount; - selection.end += addedCharCount - removedCharCount; - } - this._setSelection(selection, false, false); - } - - var model = this._model; - var startLine = model.getLineAtOffset(start); - var child = this._getLineNext(); - while (child) { - var lineIndex = child.lineIndex; - if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) { - child.lineChanged = true; - } - if (lineIndex > startLine + removedLineCount) { - child.lineIndex = lineIndex + addedLineCount - removedLineCount; - } - child = this._getLineNext(child); - } - if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) { - this._maxLineIndex = -1; - this._maxLineWidth = 0; - } - this._updatePage(); - }, - _onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - var e = { - text: newText, - start: start, - removedCharCount: removedCharCount, - addedCharCount: addedCharCount, - removedLineCount: removedLineCount, - addedLineCount: addedLineCount - }; - this.onModelChanging(e); - }, - _queueUpdatePage: function() { - if (this._updateTimer) { return; } - var self = this; - this._updateTimer = setTimeout(function() { - self._updateTimer = null; - self._updatePage(); - }, 0); - }, - _resizeTouchDiv: function() { - var editorRect = this._editorDiv.getBoundingClientRect(); - var parentRect = this._frame.getBoundingClientRect(); - var temp = this._frame; - while (temp) { - if (temp.style && temp.style.top) { break; } - temp = temp.parentNode; - } - var parentTop = parentRect.top; - if (temp) { - parentTop -= temp.getBoundingClientRect().top; - } else { - parentTop += this._parentDocument.body.scrollTop; - } - temp = this._frame; - while (temp) { - if (temp.style && temp.style.left) { break; } - temp = temp.parentNode; - } - var parentLeft = parentRect.left; - if (temp) { - parentLeft -= temp.getBoundingClientRect().left; - } else { - parentLeft += this._parentDocument.body.scrollLeft; - } - var touchDiv = this._touchDiv; - touchDiv.style.left = (parentLeft + editorRect.left) + "px"; - touchDiv.style.top = (parentTop + editorRect.top) + "px"; - touchDiv.style.width = editorRect.width + "px"; - touchDiv.style.height = editorRect.height + "px"; - }, - _scrollView: function (pixelX, pixelY) { - /* - * IE redraws the page when scrollTop is changed. This redraw is not necessary - * while scrolling since updatePage() will be called in _handleScroll(). In order - * to improve performance, the page is hidden during scroll causing only on redraw - * to happen. Note that this approach causes flashing on Firefox. - * - * This code is intentionally commented. It causes editor to loose focus. - */ -// if (isIE) { -// this._frameDocument.body.style.visibility = "hidden"; -// } - var editorDiv = this._editorDiv; - var newX = editorDiv.scrollLeft + pixelX; - if (pixelX) { editorDiv.scrollLeft = newX; } - var newY = editorDiv.scrollTop + pixelY; - if (pixelY) { editorDiv.scrollTop = newY; } - this._doScroll({x: newX, y: newY}); -// if (isIE) { -// this._frameDocument.body.style.visibility = "visible"; -// this.focus(); -// } - }, - _setClipboardText: function (text, event) { - if (this._frameWindow.clipboardData) { - //IE - return this._frameWindow.clipboardData.setData("Text", text); - } - /* Feature in Chrome, clipboardData.setData is no-op on Chrome even though it returns true */ - if (isChrome || isFirefox || !event) { - var window = this._frameWindow; - var document = this._frameDocument; - var child = document.createElement("PRE"); - child.style.position = "fixed"; - child.style.left = "-1000px"; - var cr = 0, lf = 0, index = 0, length = text.length; - while (index < length) { - if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); } - if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); } - var start = index, end; - if (lf === -1 && cr === -1) { - child.appendChild(document.createTextNode(text.substring(index))); - break; - } - if (cr !== -1 && lf !== -1) { - if (cr + 1 === lf) { - end = cr; - index = lf + 1; - } else { - end = cr < lf ? cr : lf; - index = (cr < lf ? cr : lf) + 1; - } - } else if (cr !== -1) { - end = cr; - index = cr + 1; - } else { - end = lf; - index = lf + 1; - } - child.appendChild(document.createTextNode(text.substring(start, end))); - child.appendChild(document.createElement("BR")); - } - child.appendChild(document.createTextNode(" ")); - this._clientDiv.appendChild(child); - var range = document.createRange(); - range.setStart(child.firstChild, 0); - range.setEndBefore(child.lastChild); - var sel = window.getSelection(); - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - var self = this; - var cleanup = function() { - self._clientDiv.removeChild(child); - self._updateDOMSelection(); - }; - var result = false; - /* - * Try execCommand first, it works on firefox with clipboard permission, - * chrome 5, safari 4. - */ - this._ignoreCopy = true; - try { - result = document.execCommand("copy", false, null); - } catch (e) {} - this._ignoreCopy = false; - if (!result) { - if (event) { - setTimeout(cleanup, 0); - return false; - } - } - /* no event and no permission, copy can not be done */ - cleanup(); - return true; - } - if (event && event.clipboardData) { - //webkit - return event.clipboardData.setData("text/plain", text); - } - }, - _setDOMSelection: function (startNode, startOffset, endNode, endOffset) { - var window = this._frameWindow; - var document = this._frameDocument; - var startLineNode, startLineOffset, endLineNode, endLineOffset; - var offset = 0; - var lineChild = startNode.firstChild; - var node, nodeLength, model = this._model; - var startLineEnd = model.getLine(startNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (offset + nodeLength > startOffset || offset + nodeLength >= startLineEnd) { - startLineNode = node; - startLineOffset = startOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) { - startLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - offset = 0; - lineChild = endNode.firstChild; - var endLineEnd = this._model.getLine(endNode.lineIndex).length; - while (lineChild) { - node = lineChild.firstChild; - nodeLength = node.length; - if (lineChild.ignoreChars) { - nodeLength -= lineChild.ignoreChars; - } - if (nodeLength + offset > endOffset || offset + nodeLength >= endLineEnd) { - endLineNode = node; - endLineOffset = endOffset - offset; - if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) { - endLineOffset += lineChild.ignoreChars; - } - break; - } - offset += nodeLength; - lineChild = lineChild.nextSibling; - } - var range; - - if (isPad) { - var startLineBounds, l; - range = document.createRange(); - startLineBounds = this._getLineBoundingClientRect(startNode); - if (startOffset === startLineEnd) { - l = startLineBounds.right; - } else { - range.setStart(startLineNode, startLineOffset); - range.setEnd(startLineNode, startLineOffset + 1); - l = range.getBoundingClientRect().left; - } - var textArea = this._textArea; - textArea.selectionStart = textArea.selectionEnd = 0; - var rect = this._frame.getBoundingClientRect(); - var touchRect = this._touchDiv.getBoundingClientRect(); - var editorBounds = this._editorDiv.getBoundingClientRect(); - if (!(editorBounds.left <= l && l <= editorBounds.left + editorBounds.width && - editorBounds.top <= startLineBounds.top && startLineBounds.top <= editorBounds.top + editorBounds.height) || - !(startNode === endNode && startOffset === endOffset)) - { - textArea.style.left = "-1000px"; - } else { - textArea.style.left = (l - 4 + rect.left - touchRect.left) + "px"; - } - textArea.style.top = (startLineBounds.top + rect.top - touchRect.top) + "px"; - textArea.style.width = "6px"; - textArea.style.height = (startLineBounds.bottom - startLineBounds.top) + "px"; - - var selDiv = this._selDiv1; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - selDiv = this._selDiv2; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - selDiv = this._selDiv3; - selDiv.style.width = "0px"; - selDiv.style.height = "0px"; - if (!(startNode === endNode && startOffset === endOffset)) { - var handleWidth = 2; - var handleBorder = handleWidth + "px blue solid"; - var clientBounds = this._clientDiv.getBoundingClientRect(); - var left = clientBounds.left; - var right = clientBounds.right; - selDiv = this._selDiv1; - selDiv.style.left = l + "px"; - selDiv.style.top = startLineBounds.top + "px"; - selDiv.style.width = (right - l) + "px"; - selDiv.style.height = (startLineBounds.bottom - startLineBounds.top + 1) + "px"; - selDiv.style.borderLeft = handleBorder; - selDiv.style.borderRight = "0px"; - var r; - var endLineBounds = this._getLineBoundingClientRect(endNode); - if (endOffset === 0) { - r = endLineBounds.left; - } else { - if (endLineOffset === 0) { - endLineNode = endLineNode.parentNode.previousSibling.firstChild; - endLineOffset = endLineNode.length; - } - range.setStart(endLineNode, endLineOffset - 1); - range.setEnd(endLineNode, endLineOffset); - r = range.getBoundingClientRect().right; - } - if (startNode === endNode) { - selDiv.style.width = (r - l - handleWidth * 2) + "px"; - selDiv.style.borderRight = handleBorder; - } else { - selDiv = this._selDiv3; - selDiv.style.left = left + "px"; - selDiv.style.top = endLineBounds.top + "px"; - selDiv.style.width = (r - left - handleWidth) + "px"; - selDiv.style.height = (endLineBounds.bottom - endLineBounds.top) + "px"; - selDiv.style.borderRight = handleBorder; - if (endNode.lineIndex - startNode.lineIndex > 1) { - selDiv = this._selDiv2; - selDiv.style.left = startLineBounds.left + "px"; - selDiv.style.top = startLineBounds.bottom + "px"; - selDiv.style.width = (right - left) + "px"; - selDiv.style.height = (endLineBounds.top - startLineBounds.bottom + 1) + "px"; - } - } - } - return; - } - if (window.getSelection) { - //W3C - range = document.createRange(); - range.setStart(startLineNode, startLineOffset); - range.setEnd(endLineNode, endLineOffset); - var sel = window.getSelection(); - this._ignoreSelect = false; - if (sel.rangeCount > 0) { sel.removeAllRanges(); } - sel.addRange(range); - this._ignoreSelect = true; - } else if (document.selection) { - //IE < 9 - var body = document.body; - - /* - * Bug in IE. For some reason when text is deselected the overflow - * selection at the end of some lines does not get redrawn. The - * fix is to create a DOM element in the body to force a redraw. - */ - var child = document.createElement("DIV"); - body.appendChild(child); - body.removeChild(child); - - range = body.createTextRange(); - range.moveToElementText(startLineNode.parentNode); - range.moveStart("character", startLineOffset); - var endRange = body.createTextRange(); - endRange.moveToElementText(endLineNode.parentNode); - endRange.moveStart("character", endLineOffset); - range.setEndPoint("EndToStart", endRange); - this._ignoreSelect = false; - range.select(); - this._ignoreSelect = true; - } - }, - _setGrab: function (target) { - if (target === this._grabControl) { return; } - if (target) { - addHandler(target, "mousemove", this._mouseMoveClosure); - addHandler(target, "mouseup", this._mouseUpClosure); - if (target.setCapture) { target.setCapture(); } - this._grabControl = target; - } else { - removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure); - removeHandler(this._grabControl, "mouseup", this._mouseUpClosure); - if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); } - this._grabControl = null; - } - }, - _setSelection: function (selection, scroll, update) { - if (selection) { - this._columnX = -1; - if (update === undefined) { update = true; } - var oldSelection = this._selection; - if (!oldSelection.equals(selection)) { - this._selection = selection; - var e = { - oldValue: {start:oldSelection.start, end:oldSelection.end}, - newValue: {start:selection.start, end:selection.end} - }; - this.onSelection(e); - if (scroll) { update = !this._showCaret(); } - } - - /* Sometimes the browser changes the selection - * as result of method calls or "leaked" events. - * The fix is to set the visual selection even - * when the logical selection is not changed. - */ - if (update) { this._updateDOMSelection(); } - } - }, - _setSelectionTo: function (x,y,extent) { - var model = this._model, offset; - var selection = this._getSelection(); - var lineIndex = this._getYToLine(y); - if (this._clickCount === 1) { - offset = this._getXToOffset(lineIndex, x); - selection.extend(offset); - if (!extent) { selection.collapse(); } - } else { - var word = (this._clickCount & 1) === 0; - var start, end; - if (word) { - offset = this._getXToOffset(lineIndex, x); - if (this._doubleClickSelection) { - if (offset >= this._doubleClickSelection.start) { - start = this._doubleClickSelection.start; - end = this._getOffset(offset, true, +1); - } else { - start = this._getOffset(offset, true, -1); - end = this._doubleClickSelection.end; - } - } else { - start = this._getOffset(offset, true, -1); - end = this._getOffset(start, true, +1); - } - } else { - if (this._doubleClickSelection) { - var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start); - if (lineIndex >= doubleClickLine) { - start = model.getLineStart(doubleClickLine); - end = model.getLineEnd(lineIndex); - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(doubleClickLine); - } - } else { - start = model.getLineStart(lineIndex); - end = model.getLineEnd(lineIndex); - } - } - selection.setCaret(start); - selection.extend(end); - } - this._setSelection(selection, true, true); - }, - _showCaret: function () { - var model = this._model; - var selection = this._getSelection(); - var scroll = this._getScroll(); - var caret = selection.getCaret(); - var start = selection.start; - var end = selection.end; - var startLine = model.getLineAtOffset(start); - var endLine = model.getLineAtOffset(end); - var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1); - var editorPad = this._getEditorPadding(); - - var clientWidth = this._getClientWidth(); - var leftEdge = editorPad.left; - var rightEdge = editorPad.left + clientWidth; - var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive); - var left = bounds.left; - var right = bounds.right; - var minScroll = clientWidth / 4; - if (!selection.isEmpty() && startLine === endLine) { - bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive); - var selectionWidth = caret === start ? bounds.right - left : right - bounds.left; - if ((clientWidth - minScroll) > selectionWidth) { - if (left > bounds.left) { left = bounds.left; } - if (right < bounds.right) { right = bounds.right; } - } - } - var editorRect = this._editorDiv.getBoundingClientRect(); - left -= editorRect.left; - right -= editorRect.left; - var pixelX = 0; - if (left < leftEdge) { - pixelX = Math.min(left - leftEdge, -minScroll); - } - if (right > rightEdge) { - var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth; - pixelX = Math.min(maxScroll, Math.max(right - rightEdge, minScroll)); - } - - var pixelY = 0; - var topIndex = this._getTopIndex(true); - var bottomIndex = this._getBottomIndex(true); - var caretLine = model.getLineAtOffset(caret); - var clientHeight = this._getClientHeight(); - if (!(topIndex <= caretLine && caretLine <= bottomIndex)) { - var lineHeight = this._getLineHeight(); - var selectionHeight = (endLine - startLine) * lineHeight; - pixelY = caretLine * lineHeight; - pixelY -= scroll.y; - if (pixelY + lineHeight > clientHeight) { - pixelY -= clientHeight - lineHeight; - if (caret === start && start !== end) { - pixelY += Math.min(clientHeight - lineHeight, selectionHeight); - } - } else { - if (caret === end) { - pixelY -= Math.min (clientHeight - lineHeight, selectionHeight); - } - } - } - - if (pixelX !== 0 || pixelY !== 0) { - this._scrollView (pixelX, pixelY); - if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) { - this._showCaret(); - } - return true; - } - return false; - }, - _startIME: function () { - if (this._imeOffset !== -1) { return; } - var selection = this._getSelection(); - if (!selection.isEmpty()) { - this._modifyContent({text: "", start: selection.start, end: selection.end}, true); - } - this._imeOffset = selection.start; - }, - _unhookEvents: function() { - this._model.removeListener(this._modelListener); - this._modelListener = null; - - this._mouseMoveClosure = null; - this._mouseUpClosure = null; - - for (var i=0; i lastNode.lineIndex) { - topNode = lastNode; - topOffset = 0; - } else { - topNode = this._getLineNode(startLine); - topOffset = selection.start - model.getLineStart(startLine); - } - - if (endLine < firstNode.lineIndex) { - bottomNode = firstNode; - bottomOffset = 0; - } else if (endLine > lastNode.lineIndex) { - bottomNode = lastNode; - bottomOffset = 0; - } else { - bottomNode = this._getLineNode(endLine); - bottomOffset = selection.end - model.getLineStart(endLine); - } - this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset); - }, - _updatePage: function() { - if (this._updateTimer) { - clearTimeout(this._updateTimer); - this._updateTimer = null; - } - var document = this._frameDocument; - var frameWidth = this._getFrameWidth(); - var frameHeight = this._getFrameHeight(); - document.body.style.width = frameWidth + "px"; - document.body.style.height = frameHeight + "px"; - - var editorDiv = this._editorDiv; - var clientDiv = this._clientDiv; - var editorPad = this._getEditorPadding(); - - /* Update editor height in order to have client height computed */ - editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px"; - - var model = this._model; - var lineHeight = this._getLineHeight(); - var scrollY = this._getScroll().y; - var firstLine = Math.max(0, scrollY) / lineHeight; - var topIndex = Math.floor(firstLine); - var lineStart = Math.max(0, topIndex - 1); - var top = Math.round((firstLine - lineStart) * lineHeight); - var lineCount = model.getLineCount(); - var clientHeight = this._getClientHeight(); - var partialY = Math.round((firstLine - topIndex) * lineHeight); - var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight); - var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1); - var lineEnd = Math.min(bottomIndex + 1, lineCount - 1); - this._partialY = partialY; - - var lineIndex, lineWidth; - var child = clientDiv.firstChild; - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) { - if (this._mouseWheelLine === child) { - child.style.display = "none"; - child.lineIndex = -1; - } else { - clientDiv.removeChild(child); - } - } - child = nextChild; - } - // Webkit still wraps even if pre is used - clientDiv.style.width = (0x7FFFF).toString() + "px"; - - child = this._getLineNext(); - var frag = document.createDocumentFragment(); - for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - this._createLine(frag, null, document, lineIndex, model); - } else { - if (frag.firstChild) { - clientDiv.insertBefore(frag, child); - frag = document.createDocumentFragment(); - } - child = this._getLineNext(child); - } - } - if (frag.firstChild) { clientDiv.insertBefore(frag, child); } - - child = this._getLineNext(); - while (child) { - lineWidth = child.lineWidth; - if (lineWidth === undefined) { - var rect = this._getLineBoundingClientRect(child); - lineWidth = child.lineWidth = rect.right - rect.left; - } - if (lineWidth >= this._maxLineWidth) { - this._maxLineWidth = lineWidth; - this._maxLineIndex = child.lineIndex; - } - if (child.lineIndex === topIndex) { this._topChild = child; } - if (child.lineIndex === bottomIndex) { this._bottomChild = child; } - child = this._getLineNext(child); - } - - // Update rulers - this._updateRuler(this._leftDiv, topIndex, bottomIndex); - this._updateRuler(this._rightDiv, topIndex, bottomIndex); - - var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0; - var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0; - editorDiv.style.left = leftWidth + "px"; - editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px"; - if (this._rightDiv) { - this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; - } - - var scrollDiv = this._scrollDiv; - /* Need to set the height first in order for the width to consider the vertical scrollbar */ - var scrollHeight = lineCount * lineHeight; - scrollDiv.style.height = scrollHeight + "px"; - var clientWidth = this._getClientWidth(); - var width = Math.max(this._maxLineWidth, clientWidth); - /* - * Except by IE 8 and earlier, all other browsers are not allocating enough space for the right padding - * in the scrollbar. It is possible this a bug since all other paddings are considered. - */ - var scrollWidth = width; - if (!isIE || isIE >= 9) { width += editorPad.right; } - scrollDiv.style.width = width + "px"; - - /* - * Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices. - * - * Note that updateDOMSelection() has to be called on IE before getting the new client height because it - * forces the client area to be recomputed. - */ - if (!isPad) { - this._updateDOMSelection(); - } - if (clientHeight !== this._getClientHeight()) { - this._updatePage(); - return; - } - // Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset. - var scroll = this._getScroll(); - var left = scroll.x; - var clipLeft = left; - var clipTop = top; - var clipRight = left + clientWidth; - var clipBottom = top + clientHeight; - if (clipLeft === 0) { clipLeft -= editorPad.left; } - if (clipTop === 0) { clipTop -= editorPad.top; } - if (clipRight === scrollWidth) { clipRight += editorPad.right; } - if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; } - clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)"; - clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px"; - clientDiv.style.top = (-top + editorPad.top) + "px"; - clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px"; - clientDiv.style.height = (clientHeight + top) + "px"; - var overlayDiv = this._overlayDiv; - if (overlayDiv) { - overlayDiv.style.clip = clientDiv.style.clip; - overlayDiv.style.left = clientDiv.style.left; - overlayDiv.style.top = clientDiv.style.top; - overlayDiv.style.width = clientDiv.style.width; - overlayDiv.style.height = clientDiv.style.height; - } - function _updateRulerSize(divRuler) { - if (!divRuler) { return; } - var rulerHeight = clientHeight + editorPad.top + editorPad.bottom; - var cells = divRuler.firstChild.rows[0].cells; - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var offset = lineHeight; - if (div._ruler.getOverview() === "page") { offset += partialY; } - div.style.top = -offset + "px"; - div.style.height = (rulerHeight + offset) + "px"; - div = div.nextSibling; - } - divRuler.style.height = rulerHeight + "px"; - } - _updateRulerSize(this._leftDiv); - _updateRulerSize(this._rightDiv); - if (isPad) { - this._updateDOMSelection(); - var self = this; - setTimeout(function() {self._resizeTouchDiv();}, 0); - } - }, - _updateRuler: function (divRuler, topIndex, bottomIndex) { - if (!divRuler) { return; } - var cells = divRuler.firstChild.rows[0].cells; - var lineHeight = this._getLineHeight(); - var parentDocument = this._frameDocument; - var editorPad = this._getEditorPadding(); - for (var i = 0; i < cells.length; i++) { - var div = cells[i].firstChild; - var ruler = div._ruler, style; - if (div.rulerChanged) { - this._applyStyle(ruler.getStyle(), div); - } - - var widthDiv; - var child = div.firstChild; - if (child) { - widthDiv = child; - child = child.nextSibling; - } else { - widthDiv = parentDocument.createElement("DIV"); - widthDiv.style.visibility = "hidden"; - div.appendChild(widthDiv); - } - var lineIndex; - if (div.rulerChanged) { - if (widthDiv) { - lineIndex = -1; - this._applyStyle(ruler.getStyle(lineIndex), widthDiv); - widthDiv.innerHTML = ruler.getHTML(lineIndex); - widthDiv.lineIndex = lineIndex; - widthDiv.style.height = (lineHeight + editorPad.top) + "px"; - } - } - - var overview = ruler.getOverview(), lineDiv, frag; - if (overview === "page") { - while (child) { - lineIndex = child.lineIndex; - var nextChild = child.nextSibling; - if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) { - div.removeChild(child); - } - child = nextChild; - } - child = div.firstChild.nextSibling; - frag = document.createDocumentFragment(); - for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) { - if (!child || child.lineIndex > lineIndex) { - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - lineDiv.style.height = lineHeight + "px"; - frag.appendChild(lineDiv); - } else { - if (frag.firstChild) { - div.insertBefore(frag, child); - frag = document.createDocumentFragment(); - } - if (child) { - child = child.nextSibling; - } - } - } - if (frag.firstChild) { div.insertBefore(frag, child); } - } else { - var buttonHeight = 17; - var clientHeight = this._getClientHeight (); - var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight; - var lineCount = this._model.getLineCount (); - var divHeight = trackHeight / lineCount; - if (div.rulerChanged) { - var count = div.childNodes.length; - while (count > 1) { - div.removeChild(div.lastChild); - count--; - } - var lines = ruler.getAnnotations (); - frag = document.createDocumentFragment(); - for (var j = 0; j < lines.length; j++) { - lineIndex = lines[j]; - lineDiv = parentDocument.createElement("DIV"); - this._applyStyle(ruler.getStyle(lineIndex), lineDiv); - lineDiv.style.position = "absolute"; - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px"; - lineDiv.innerHTML = ruler.getHTML(lineIndex); - lineDiv.lineIndex = lineIndex; - frag.appendChild(lineDiv); - } - div.appendChild(frag); - } else if (div._oldTrackHeight !== trackHeight) { - lineDiv = div.firstChild ? div.firstChild.nextSibling : null; - while (lineDiv) { - lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px"; - lineDiv = lineDiv.nextSibling; - } - } - div._oldTrackHeight = trackHeight; - } - div.rulerChanged = false; - div = div.nextSibling; - } - } - };//end prototype - - return Editor; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/model.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/model.js deleted file mode 100644 index 62ed5997..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/js/model.js +++ /dev/null @@ -1,450 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Felipe Heidrich (IBM Corporation) - initial API and implementation - * Silenio Quarti (IBM Corporation) - initial API and implementation - ******************************************************************************/ - -/*global navigator */ - -/** - * @namespace The global container for eclipse APIs. - */ -var eclipse = eclipse || {}; - -/** - * Constructs a new TextModel with the given text and default line delimiter. - * - * @param {String} [text=""] the text that the model will store - * @param {String} [lineDelimiter=platform delimiter] the line delimiter used when inserting new lines to the model. - * - * @name eclipse.TextModel - * @class The TextModel is an interface that provides text for the editor. Applications may - * implement the TextModel interface to provide a custom store for the editor content. The - * editor interacts with its text model in order to access and update the text that is being - * displayed and edited in the editor. This is the default implementation. - *

                                - * See:
                                - * {@link eclipse.Editor}
                                - * {@link eclipse.Editor#setModel} - *

                                - */ -eclipse.TextModel = (function() { - var isWindows = navigator.platform.indexOf("Win") !== -1; - - /** @private */ - function TextModel(text, lineDelimiter) { - this._listeners = []; - this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); - this._lastLineIndex = -1; - this._text = [""]; - this._lineOffsets = [0]; - this.setText(text); - } - - TextModel.prototype = /** @lends eclipse.TextModel.prototype */ { - /** - * Adds a listener to the model. - * - * @param {Object} listener the listener to add. - * @param {Function} [listener.onChanged] see {@link #onChanged}. - * @param {Function} [listener.onChanging] see {@link #onChanging}. - * - * @see removeListener - */ - addListener: function(listener) { - this._listeners.push(listener); - }, - /** - * Removes a listener from the model. - * - * @param {Object} listener the listener to remove - * - * @see #addListener - */ - removeListener: function(listener) { - for (var i = 0; i < this._listeners.length; i++) { - if (this._listeners[i] === listener) { - this._listeners.splice(i, 1); - return; - } - } - }, - /** - * Returns the number of characters in the model. - * - * @returns {Number} the number of characters in the model. - */ - getCharCount: function() { - var count = 0; - for (var i = 0; i - * The valid indices are 0 to line count exclusive. Returns null - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @returns {String} the line text or null if out of range. - * - * @see #getLineAtOffset - */ - getLine: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return null; - } - var start = this._lineOffsets[lineIndex]; - if (lineIndex + 1 < lineCount) { - var text = this.getText(start, this._lineOffsets[lineIndex + 1]); - if (includeDelimiter) { - return text; - } - var end = text.length, c; - while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) { - end--; - } - return text.substring(0, end); - } else { - return this.getText(start); - } - }, - /** - * Returns the line index at the given character offset. - *

                                - * The valid offsets are 0 to char count inclusive. The line index for - * char count is line count - 1. Returns -1 if - * the offset is out of range. - *

                                - * - * @param {Number} offset a character offset. - * @returns {Number} the zero based line index or -1 if out of range. - */ - getLineAtOffset: function(offset) { - if (!(0 <= offset && offset <= this.getCharCount())) { - return -1; - } - var lineCount = this.getLineCount(); - var charCount = this.getCharCount(); - if (offset === charCount) { - return lineCount - 1; - } - var lineStart, lineEnd; - var index = this._lastLineIndex; - if (0 <= index && index < lineCount) { - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (lineStart <= offset && offset < lineEnd) { - return index; - } - } - var high = lineCount; - var low = -1; - while (high - low > 1) { - index = Math.floor((high + low) / 2); - lineStart = this._lineOffsets[index]; - lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount; - if (offset <= lineStart) { - high = index; - } else if (offset < lineEnd) { - high = index; - break; - } else { - low = index; - } - } - this._lastLineIndex = high; - return high; - }, - /** - * Returns the number of lines in the model. - *

                                - * The model always has at least one line. - *

                                - * - * @returns {Number} the number of lines. - */ - getLineCount: function() { - return this._lineOffsets.length; - }, - /** - * Returns the line delimiter that is used by the editor - * when inserting new lines. New lines entered using key strokes - * and paste operations use this line delimiter. - * - * @return {String} the line delimiter that is used by the editor when inserting new lines. - */ - getLineDelimiter: function() { - return this._lineDelimiter; - }, - /** - * Returns the end character offset for the given line. - *

                                - * The end offset is not inclusive. This means that when the line delimiter is included, the - * offset is either the start offset of the next line or char count. When the line delimiter is - * not included, the offset is the offset of the line delimiter. - *

                                - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. - * @return {Number} the line end offset or -1 if out of range. - * - * @see #getLineStart - */ - getLineEnd: function(lineIndex, includeDelimiter) { - var lineCount = this.getLineCount(); - if (!(0 <= lineIndex && lineIndex < lineCount)) { - return -1; - } - if (lineIndex + 1 < lineCount) { - var end = this._lineOffsets[lineIndex + 1]; - if (includeDelimiter) { - return end; - } - var text = this.getText(Math.max(0, end - 2), end); - var i = text.length, c; - while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) { - i--; - } - return end - (text.length - i); - } else { - return this.getCharCount(); - } - }, - /** - * Returns the start character offset for the given line. - *

                                - * The valid indices are 0 to line count exclusive. Returns -1 - * if the index is out of range. - *

                                - * - * @param {Number} lineIndex the zero based index of the line. - * @return {Number} the line start offset or -1 if out of range. - * - * @see #getLineEnd - */ - getLineStart: function(lineIndex) { - if (!(0 <= lineIndex && lineIndex < this.getLineCount())) { - return -1; - } - return this._lineOffsets[lineIndex]; - }, - /** - * Returns the text for the given range. - *

                                - * The end offset is not inclusive. This means that character at the end offset - * is not included in the returned text. - *

                                - * - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #setText - */ - getText: function(start, end) { - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var offset = 0, chunk = 0, length; - while (chunk - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanging}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {String} text the text that is about to be inserted in the model. - * @param {Number} start the character offset in the model where the change will occur. - * @param {Number} removedCharCount the number of characters being removed from the model. - * @param {Number} addedCharCount the number of characters being added to the model. - * @param {Number} removedLineCount the number of lines being removed from the model. - * @param {Number} addedLineCount the number of lines being added to the model. - */ - onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanging) { - l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Notifies all listeners that the text has changed. - *

                                - * This notification is intended to be used only by the editor. Application clients should - * use {@link eclipse.Editor#event:onModelChanged}. - *

                                - *

                                - * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel - * as part of the implementation of {@link #setText}. This method is included in the public API for documentation - * purposes and to allow integration with other toolkit frameworks. - *

                                - * - * @param {Number} start the character offset in the model where the change occurred. - * @param {Number} removedCharCount the number of characters removed from the model. - * @param {Number} addedCharCount the number of characters added to the model. - * @param {Number} removedLineCount the number of lines removed from the model. - * @param {Number} addedLineCount the number of lines added to the model. - */ - onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) { - for (var i = 0; i < this._listeners.length; i++) { - var l = this._listeners[i]; - if (l && l.onChanged) { - l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - } - } - }, - /** - * Replaces the text in the given range with the given text. - *

                                - * The end offset is not inclusive. This means that the character at the - * end offset is not replaced. - *

                                - *

                                - * The text model must notify the listeners before and after the - * the text is changed by calling {@link #onChanging} and {@link #onChanged} - * respectively. - *

                                - * - * @param {String} [text=""] the new text. - * @param {Number} [start=0] the zero based start offset of text range. - * @param {Number} [end=char count] the zero based end offset of text range. - * - * @see #getText - */ - setText: function(text, start, end) { - if (text === undefined) { text = ""; } - if (start === undefined) { start = 0; } - if (end === undefined) { end = this.getCharCount(); } - var startLine = this.getLineAtOffset(start); - var endLine = this.getLineAtOffset(end); - var eventStart = start; - var removedCharCount = end - start; - var removedLineCount = endLine - startLine; - var addedCharCount = text.length; - var addedLineCount = 0; - var lineCount = this.getLineCount(); - - var cr = 0, lf = 0, index = 0; - var newLineOffsets = []; - while (true) { - if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); } - if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); } - if (lf === -1 && cr === -1) { break; } - if (cr !== -1 && lf !== -1) { - if (cr + 1 === lf) { - index = lf + 1; - } else { - index = (cr < lf ? cr : lf) + 1; - } - } else if (cr !== -1) { - index = cr + 1; - } else { - index = lf + 1; - } - newLineOffsets.push(start + index); - addedLineCount++; - } - - this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount); - - //TODO this should be done the loops below to avoid getText() - if (newLineOffsets.length === 0) { - var startLineOffset = this.getLineStart(startLine), endLineOffset; - if (endLine + 1 < lineCount) { - endLineOffset = this.getLineStart(endLine + 1); - } else { - endLineOffset = this.getCharCount(); - } - if (start !== startLineOffset) { - text = this.getText(startLineOffset, start) + text; - start = startLineOffset; - } - if (end !== endLineOffset) { - text = text + this.getText(end, endLineOffset); - end = endLineOffset; - } - } - - var changeCount = addedCharCount - removedCharCount; - for (var j = startLine + removedLineCount + 1; j < lineCount; j++) { - this._lineOffsets[j] += changeCount; - } - var args = [startLine + 1, removedLineCount].concat(newLineOffsets); - Array.prototype.splice.apply(this._lineOffsets, args); - - var offset = 0, chunk = 0, length; - while (chunk - - - - - - - - - - - - - - -
                                -
                                -
                                -
                                -
                                - -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif deleted file mode 100644 index a831fe72..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/browserEditor.html b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/browserEditor.html deleted file mode 100644 index 1f18d4b1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/browserEditor.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -Performance Test - - - - -

                                Performance of content editable iframe with large amount of text and styles

                                - -

                                -
                                -create editor -create editor (without styles) -create editor with lines (no styles) -clear editor -
                                - - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/console.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/console.js deleted file mode 100644 index 9f398e69..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/console.js +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global window setTimeout */ - -function log (text) { - var console = window.document.getElementById('console'); - if (!console) { return; } - for (var n = 1; n < arguments.length; n++) { - text += " "; - text += arguments[n]; - } - - var document = console.contentWindow.document; - var t = document.createTextNode(text); - document.body.appendChild(t); - var br = document.createElement("br"); - document.body.appendChild(br); - if (!console.scroll) { - console.scroll = true; - setTimeout(function() { - document.body.lastChild.scrollIntoView(false); - console.scroll = false; - }, 0); - } - - //IE (causes all kinds of weird behaviour) -// console.log(text); -} - -function clearLog () { - var console = window.document.getElementById('console'); - if (!console) { return; } - var document = console.contentWindow.document; - var body = document.body; - while (body.hasChildNodes()) { body.removeChild(body.lastChild); } -} diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/cr.png b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/cr.png deleted file mode 100644 index e38fdc17..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/cr.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/demo.html b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/demo.html deleted file mode 100644 index 14197715..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/demo.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - -Orion Editor Demo - - - - - - - - - - - - - - -

                                Orion Editor Demo

                                - - - - - - - - - - -
                                EditorConsole
                                -
                                -Create the editor by clicking one of the buttons at the bottom. -
                                -
                                -
                                - -
                                -
                                -Java file -JavaScript file -Plain Text -Bidi Text -ClearConsole -Test -Performance tests: - -Run - - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/editor.css b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/editor.css deleted file mode 100644 index 1a3a6f5a..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/editor.css +++ /dev/null @@ -1,93 +0,0 @@ -.editor { - background-color: white; -} - -.editorContainer { - font-family: monospace; - font-size: 10pt; -} - -.editorContent { -} - -.token_comment { - color: green; -} - -.token_javadoc { - color: #00008F; -} - -.token_string { - color: blue; -} - -.token_keyword { - color: darkred; - font-weight: bold; -} - -.token_bracket_outline { - outline: 1px solid red; -} - -.token_bracket { - color: white; - background-color: grey; -} - -.token_space { - background-image: url('/editor/samples/space.png'); - background-repeat: no-repeat; - background-position: center center; -} - -.token_tab { - background-image: url('/editor/samples/tab.png'); - background-repeat: no-repeat; - background-position: left center; -} - -.line_caret { - background-color: #EAF2FE; -} - -.ruler_annotation { - background-color: #e1ebfb; - width: 16px; -} - -.ruler_annotation_todo { -} - -.ruler_annotation_todo_overview { - background-color: lightgreen; - border: 1px solid green; -} - -.ruler_annotation_breakpoint { -} - -.ruler_annotation_breakpoint_overview { - background-color: lightblue; - border: 1px solid blue; -} - -.ruler_lines { - background-color: #e1ebfb; - border-right: 1px solid #b1badf; - text-align: right; -} - -.ruler_overview { - background-color: #e1ebfb; -} - -.ruler_lines_even { - background-color: #e1ebfb; -} - -.ruler_lines_odd { - background-color: white; -} - diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/rulers.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/rulers.js deleted file mode 100644 index f929e1c4..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/rulers.js +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -var eclipse = eclipse || {}; - -eclipse.Ruler = (function() { - function Ruler (rulerLocation, rulerOverview, rulerStyle) { - this._location = rulerLocation || "left"; - this._overview = rulerOverview || "page"; - this._rulerStyle = rulerStyle; - this._editor = null; - } - Ruler.prototype = { - setEditor: function (editor) { - if (this._onModelChanged && this._editor) { - this._editor.removeEventListener("ModelChanged", this, this._onModelChanged); - } - this._editor = editor; - if (this._onModelChanged && this._editor) { - this._editor.addEventListener("ModelChanged", this, this._onModelChanged); - } - }, - getLocation: function() { - return this._location; - }, - getOverview: function(editor) { - return this._overview; - } - }; - return Ruler; -}()); - -eclipse.LineNumberRuler = (function() { - function LineNumberRuler (rulerLocation, rulerStyle, oddStyle, evenStyle) { - eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle); - this._oddStyle = oddStyle || {style: {backgroundColor: "white"}}; - this._evenStyle = evenStyle || {style: {backgroundColor: "white"}}; - this._numOfDigits = 0; - } - LineNumberRuler.prototype = new eclipse.Ruler(); - LineNumberRuler.prototype.getStyle = function(lineIndex) { - if (lineIndex === undefined) { - return this._rulerStyle; - } else { - return lineIndex & 1 ? this._oddStyle : this._evenStyle; - } - }; - LineNumberRuler.prototype.getHTML = function(lineIndex) { - if (lineIndex === -1) { - var model = this._editor.getModel(); - return model.getLineCount(); - } else { - return lineIndex + 1; - } - }; - LineNumberRuler.prototype._onModelChanged = function(e) { - var start = e.start; - var model = this._editor.getModel(); - var lineCount = model.getLineCount(); - var numOfDigits = (lineCount+"").length; - if (this._numOfDigits !== numOfDigits) { - this._numOfDigits = numOfDigits; - var startLine = model.getLineAtOffset(start); - this._editor.redrawLines(startLine, lineCount, this); - } - }; - return LineNumberRuler; -}()); - -eclipse.AnnotationRuler = (function() { - function AnnotationRuler (rulerLocation, rulerStyle, defaultAnnotation) { - eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle); - this._defaultAnnotation = defaultAnnotation; - this._annotations = []; - } - AnnotationRuler.prototype = new eclipse.Ruler(); - AnnotationRuler.prototype.clearAnnotations = function() { - this._annotations = []; - var lineCount = this._editor.getModel().getLineCount(); - this._editor.redrawLines(0, lineCount, this); - if (this._overviewRuler) { - this._editor.redrawLines(0, lineCount, this._overviewRuler); - } - }; - AnnotationRuler.prototype.getAnnotation = function(lineIndex) { - return this._annotations[lineIndex]; - }; - AnnotationRuler.prototype.getAnnotations = function() { - return this._annotations; - }; - AnnotationRuler.prototype.getStyle = function(lineIndex) { - switch (lineIndex) { - case undefined: - return this._rulerStyle; - case -1: - return this._defaultAnnotation ? this._defaultAnnotation.style : null; - default: - return this._annotations[lineIndex] && this._annotations[lineIndex].style ? this._annotations[lineIndex].style : null; - } - }; - AnnotationRuler.prototype.getHTML = function(lineIndex) { - if (lineIndex === -1) { - return this._defaultAnnotation ? this._defaultAnnotation.html : ""; - } else { - return this._annotations[lineIndex] && this._annotations[lineIndex].html ? this._annotations[lineIndex].html : ""; - } - }; - AnnotationRuler.prototype.setAnnotation = function(lineIndex, annotation) { - if (lineIndex === undefined) { return; } - this._annotations[lineIndex] = annotation; - this._editor.redrawLines(lineIndex, lineIndex + 1, this); - if (this._overviewRuler) { - this._editor.redrawLines(lineIndex, lineIndex + 1, this._overviewRuler); - } - }; - AnnotationRuler.prototype._onModelChanged = function(e) { - var start = e.start; - var removedLineCount = e.removedLineCount; - var addedLineCount = e.addedLineCount; - var linesChanged = addedLineCount - removedLineCount; - if (linesChanged) { - var model = this._editor.getModel(); - var startLine = model.getLineAtOffset(start); - var newLines = [], lines = this._annotations; - var changed = false; - for (var prop in lines) { - var i = prop >>> 0; - if (!(startLine < i && i < startLine + removedLineCount)) { - var newIndex = i; - if (i > startLine) { - newIndex += linesChanged; - changed = true; - } - newLines[newIndex] = lines[i]; - } else { - changed = true; - } - } - this._annotations = newLines; - if (changed) { - var lineCount = model.getLineCount(); - this._editor.redrawLines(startLine, lineCount, this); - //TODO redraw overview (batch it for performance) - if (this._overviewRuler) { - this._editor.redrawLines(0, lineCount, this._overviewRuler); - } - } - } - }; - return AnnotationRuler; -}()); - -eclipse.OverviewRuler = (function() { - function OverviewRuler (rulerLocation, rulerStyle, annotationRuler) { - eclipse.Ruler.call(this, rulerLocation, "document", rulerStyle); - this._annotationRuler = annotationRuler; - if (annotationRuler) { - annotationRuler._overviewRuler = this; - } - } - OverviewRuler.prototype = new eclipse.Ruler(); - OverviewRuler.prototype.getAnnotations = function() { - var annotations = this._annotationRuler.getAnnotations(); - var lines = []; - for (var prop in annotations) { - var i = prop >>> 0; - if (annotations[i] !== undefined) { - lines.push(i); - } - } - return lines; - }; - OverviewRuler.prototype.getStyle = function(lineIndex) { - var result, style; - if (lineIndex === undefined) { - result = this._rulerStyle || {}; - style = result.style || (result.style = {}); - style.lineHeight = "1px"; - style.fontSize = "1px"; - style.width = "14px"; - } else { - if (lineIndex !== -1) { - var annotation = this._annotationRuler.getAnnotation(lineIndex); - result = annotation.overviewStyle || {}; - } else { - result = {}; - } - style = result.style || (result.style = {}); - style.cursor = "pointer"; - style.width = "8px"; - style.height = "3px"; - style.left = "2px"; - } - return result; - }; - OverviewRuler.prototype.getHTML = function(lineIndex) { - return " "; - }; - OverviewRuler.prototype.onClick = function(lineIndex, e) { - if (lineIndex === undefined) { return; } - this._editor.setTopIndex(lineIndex); - }; - return OverviewRuler; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/space.png b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/space.png deleted file mode 100644 index 9cb0a47d..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/space.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styler.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styler.js deleted file mode 100644 index efe61be3..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styler.js +++ /dev/null @@ -1,705 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -/*global document window navigator */ - -var eclipse = eclipse || {}; - -eclipse.TextStyler = (function() { - - var JS_KEYWORDS = - ["break", "continue", "do", "for", /*"import",*/ "new", "this", /*"void",*/ - "case", "default", "else", "function", "in", "return", "typeof", "while", - "comment", "delete", "export", "if", /*"label",*/ "switch", "var", "with", - "abstract", "implements", "protected", /*"boolean",*/ /*"instanceOf",*/ "public", - /*"byte", "int", "short", "char",*/ "interface", "static", - /*"double", "long",*/ "synchronized", "false", /*"native",*/ "throws", - "final", "null", "transient", /*"float",*/ "package", "true", - "goto", "private", "catch", "enum", "throw", "class", "extends", "try", - "const", "finally", "debugger", "super", "undefined"]; - - var JAVA_KEYWORDS = - ["abstract", - "boolean", "break", "byte", - "case", "catch", "char", "class", "continue", - "default", "do", "double", - "else", "extends", - "false", "final", "finally", "float", "for", - "if", "implements", "import", "instanceof", "int", "interface", - "long", - "native", "new", "null", - "package", "private", "protected", "public", - "return", - "short", "static", "super", "switch", "synchronized", - "this", "throw", "throws", "transient", "true", "try", - "void", "volatile", - "while"]; - - var CSS_KEYWORDS = - ["color", "text-align", "text-indent", "text-decoration", - "font", "font-style", "font-family", "font-weight", "font-size", "font-variant", "line-height", - "background", "background-color", "background-image", "background-position", "background-repeat", "background-attachment", - "list-style", "list-style-image", "list-style-position", "list-style-type", - "outline", "outline-color", "outline-style", "outline-width", - "border", "border-left", "border-top", "border-bottom", "border-right", "border-color", "border-width", "border-style", - "border-bottom-color", "border-bottom-style", "border-bottom-width", - "border-left-color", "border-left-style", "border-left-width", - "border-top-color", "border-top-style", "border-top-width", - "border-right-color", "border-right-style", "border-right-width", - "padding", "padding-left", "padding-top", "padding-bottom", "padding-right", - "margin", "margin-left", "margin-top", "margin-bottom", "margin-right", - "width", "height", "left", "top", "right", "bottom", - "min-width", "max-width", "min-height", "max-height", - "display", "visibility", - "clip", "cursor", "overflow", "overflow-x", "overflow-y", "position", "z-index", - "vertical-align", "horizontal-align", - "float", "clear" - ]; - - // Scanner constants - var UNKOWN = 1; - var KEYWORD = 2; - var STRING = 3; - var COMMENT = 4; - var WHITE = 5; - var WHITE_TAB = 6; - var WHITE_SPACE = 7; - - // Styles - var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined; - var commentStyle = {styleClass: "token_comment"}; - var javadocStyle = {styleClass: "token_javadoc"}; - var stringStyle = {styleClass: "token_string"}; - var keywordStyle = {styleClass: "token_keyword"}; - var spaceStyle = {styleClass: "token_space"}; - var tabStyle = {styleClass: "token_tab"}; - var bracketStyle = {styleClass: isIE < 9 ? "token_bracket" : "token_bracket_outline"}; - var caretLineStyle = {styleClass: "line_caret"}; - - var Scanner = (function() { - function Scanner (keywords, whitespacesVisible) { - this.keywords = keywords; - this.whitespacesVisible = whitespacesVisible; - this.setText(""); - } - - Scanner.prototype = { - getOffset: function() { - return this.offset; - }, - getStartOffset: function() { - return this.startOffset; - }, - getData: function() { - return this.text.substring(this.startOffset, this.offset); - }, - getDataLength: function() { - return this.offset - this.startOffset; - }, - _read: function() { - if (this.offset < this.text.length) { - return this.text.charCodeAt(this.offset++); - } - return -1; - }, - _unread: function(c) { - if (c !== -1) { this.offset--; } - }, - nextToken: function() { - this.startOffset = this.offset; - while (true) { - var c = this._read(); - switch (c) { - case -1: return null; - case 47: // SLASH -> comment - c = this._read(); - if (c === 47) { - while (true) { - c = this._read(); - if ((c === -1) || (c === 10)) { - this._unread(c); - return COMMENT; - } - } - } - this._unread(c); - return UNKOWN; - case 39: // SINGLE QUOTE -> char const - while(true) { - c = this._read(); - switch (c) { - case 39: - return STRING; - case -1: - this._unread(c); - return STRING; - case 92: // BACKSLASH - c = this._read(); - break; - } - } - break; - case 34: // DOUBLE QUOTE -> string - while(true) { - c = this._read(); - switch (c) { - case 34: // DOUBLE QUOTE - return STRING; - case -1: - this._unread(c); - return STRING; - case 92: // BACKSLASH - c = this._read(); - break; - } - } - break; - case 32: // SPACE - case 9: // TAB - if (this.whitespacesVisible) { - return c === 32 ? WHITE_SPACE : WHITE_TAB; - } - do { - c = this._read(); - } while(c === 32 || c === 9); - this._unread(c); - return WHITE; - default: - var isCSS = this.isCSS; - if ((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)) { //LETTER OR UNDERSCORE OR NUMBER - var off = this.offset - 1; - do { - c = this._read(); - } while((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)); //LETTER OR UNDERSCORE OR NUMBER - this._unread(c); - var word = this.text.substring(off, this.offset); - //TODO slow - for (var i=0; i 2) { - var index = (((high + low) >> 1) >> 1) << 1; - var end = offsets[index + 1]; - if (end > offset) { - high = index; - } else { - low = index; - } - } - return high; - }, - _computeComments: function(end) { - // compute comments between commentOffset and end - if (end <= this.commentOffset) { return; } - var model = this.editor.getModel(); - var charCount = model.getCharCount(); - var e = end; - // Uncomment to compute all comments -// e = charCount; - var t = /*start == this.commentOffset && e == end ? text : */model.getText(this.commentOffset, e); - if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === charCount) { - this.commentOffsets.length--; - } - var offset = 0; - while (offset < t.length) { - var begin = (this.commentOffsets.length & 1) === 0; - var search = begin ? this.commentStart : this.commentEnd; - var index = t.indexOf(search, offset); - if (index !== -1) { - this.commentOffsets.push(this.commentOffset + (begin ? index : index + search.length)); - } else { - break; - } - offset = index + search.length; - } - if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); } - this.commentOffset = e; - }, - _getCommentRanges: function(start, end) { - this._computeComments (end); - var commentCount = this.commentOffsets.length; - var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount); - if (commentStart >= commentCount) { return []; } - if (this.commentOffsets[commentStart] > end) { return []; } - var commentEnd = Math.min(commentCount - 2, this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount)); - if (this.commentOffsets[commentEnd] > end) { commentEnd = Math.max(commentStart, commentEnd - 2); } - return this.commentOffsets.slice(commentStart, commentEnd + 2); - }, - _getLineStyle: function(lineIndex) { - if (this.highlightCaretLine) { - var editor = this.editor; - var model = this.editor.getModel(); - var selection = editor.getSelection(); - if (selection.start === selection.end && model.getLineAtOffset(selection.start) === lineIndex) { - return caretLineStyle; - } - } - return null; - }, - _getStyles: function(text, start) { - var end = start + text.length; - var model = this.editor.getModel(); - - // get comment ranges that intersect with range - var commentRanges = this._getCommentRanges (start, end); - var styles = []; - - // for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc) - var offset = start; - for (var i = 0; i < commentRanges.length; i+= 2) { - var commentStart = commentRanges[i]; - if (offset < commentStart) { - this._parse(text.substring(offset - start, commentStart - start), offset, styles); - } - var style = commentStyle; - if ((commentRanges[i+1] - commentStart) > (this.commentStart.length + this.commentEnd.length)) { - var o = commentStart + this.commentStart.length; - if (model.getText(o, o + 1) === "*") { style = javadocStyle; } - } - if (this.whitespacesVisible) { - var s = Math.max(offset, commentStart); - var e = Math.min(end, commentRanges[i+1]); - this._parseWhitespace(text.substring(s - start, e - start), s, styles, style); - } else { - styles.push({start: commentRanges[i], end: commentRanges[i+1], style: style}); - } - offset = commentRanges[i+1]; - } - if (offset < end) { - this._parse(text.substring(offset - start, end - start), offset, styles); - } - return styles; - }, - _parse: function(text, offset, styles) { - var scanner = this._scanner; - scanner.setText(text); - var token; - while ((token = scanner.nextToken())) { - var tokenStart = scanner.getStartOffset() + offset; - var style = null; - if (tokenStart === this._matchingBracket) { - style = bracketStyle; - } else { - switch (token) { - case KEYWORD: style = keywordStyle; break; - case STRING: - if (this.whitespacesVisible) { - this._parseWhitespace(scanner.getData(), tokenStart, styles, stringStyle); - continue; - } else { - style = stringStyle; - } - break; - case COMMENT: - if (this.whitespacesVisible) { - this._parseWhitespace(scanner.getData(), tokenStart, styles, commentStyle); - continue; - } else { - style = commentStyle; - } - break; - case WHITE_TAB: - if (this.whitespacesVisible) { - style = tabStyle; - } - break; - case WHITE_SPACE: - if (this.whitespacesVisible) { - style = spaceStyle; - } - break; - } - } - styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style}); - } - }, - _parseWhitespace: function(text, offset, styles, s) { - var scanner = this._whitespaceScanner; - scanner.setText(text); - var token; - while ((token = scanner.nextToken())) { - var tokenStart = scanner.getStartOffset() + offset; - var style = s; - switch (token) { - case WHITE_TAB: - style = tabStyle; - break; - case WHITE_SPACE: - style = spaceStyle; - break; - } - styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style}); - } - }, - _findBrackets: function(bracket, closingBracket, text, textOffset, start, end) { - var result = []; - - // get comment ranges that intersect with range - var commentRanges = this._getCommentRanges (start, end); - - // for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc) - var offset = start, scanner = this._scanner, token, tokenData; - for (var i = 0; i < commentRanges.length; i+= 2) { - var commentStart = commentRanges[i]; - if (offset < commentStart) { - scanner.setText(text.substring(offset - start, commentStart - start)); - while ((token = scanner.nextToken())) { - if (scanner.getDataLength() !== 1) { continue; } - tokenData = scanner.getData(); - if (tokenData === bracket) { - result.push(scanner.getStartOffset() + offset - start + textOffset); - } - if (tokenData === closingBracket) { - result.push(-(scanner.getStartOffset() + offset - start + textOffset)); - } - } - } - offset = commentRanges[i+1]; - } - if (offset < end) { - scanner.setText(text.substring(offset - start, end - start)); - while ((token = scanner.nextToken())) { - if (scanner.getDataLength() !== 1) { continue; } - tokenData = scanner.getData(); - if (tokenData === bracket) { - result.push(scanner.getStartOffset() + offset - start + textOffset); - } - if (tokenData === closingBracket) { - result.push(-(scanner.getStartOffset() + offset - start + textOffset)); - } - } - } - return result; - }, - _onDestroy: function(e) { - this.destroy(); - }, - _onLineStyle: function (e) { - e.style = this._getLineStyle(e.lineIndex); - e.ranges = this._getStyles(e.lineText, e.lineStart); - }, - _onSelection: function(e) { - var oldSelection = e.oldValue; - var newSelection = e.newValue; - var editor = this.editor; - var model = editor.getModel(); - var lineIndex; - if (this._matchingBracket !== undefined) { - lineIndex = model.getLineAtOffset(this._matchingBracket); - editor.redrawLines(lineIndex, lineIndex + 1); - this._matchingBracket = this._currentBracket = undefined; - } - if (this.highlightCaretLine) { - var oldLineIndex = model.getLineAtOffset(oldSelection.start); - lineIndex = model.getLineAtOffset(newSelection.start); - var newEmpty = newSelection.start === newSelection.end; - var oldEmpty = oldSelection.start === oldSelection.end; - if (!(oldLineIndex === lineIndex && oldEmpty && newEmpty)) { - if (oldEmpty) { - editor.redrawLines(oldLineIndex, oldLineIndex + 1); - } - if ((oldLineIndex !== lineIndex || !oldEmpty) && newEmpty) { - editor.redrawLines(lineIndex, lineIndex + 1); - } - } - } - if (newSelection.start !== newSelection.end || newSelection.start === 0) { - return; - } - var caret = editor.getCaretOffset(); - if (caret === 0) { return; } - var brackets = "{}()[]<>"; - var bracket = model.getText(caret - 1, caret); - var bracketIndex = brackets.indexOf(bracket, 0); - if (bracketIndex === -1) { return; } - var closingBracket; - if (bracketIndex & 1) { - closingBracket = brackets.substring(bracketIndex - 1, bracketIndex); - } else { - closingBracket = brackets.substring(bracketIndex + 1, bracketIndex + 2); - } - lineIndex = model.getLineAtOffset(caret); - var lineText = model.getLine(lineIndex); - var lineStart = model.getLineStart(lineIndex); - var lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var i=0; i= 0 ? 1 : -1; - if (brackets[i] * sign === caret - 1) { - var level = 1; - this._currentBracket = brackets[i] * sign; - if (bracketIndex & 1) { - i--; - for (; i>=0; i--) { - sign = brackets[i] >= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[i] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex -= 1; - while (lineIndex >= 0) { - lineText = model.getLine(lineIndex); - lineStart = model.getLineStart(lineIndex); - lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var j=brackets.length - 1; j>=0; j--) { - sign = brackets[j] >= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[j] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex--; - } - } else { - i++; - for (; i= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[i] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex += 1; - var lineCount = model.getLineCount (); - while (lineIndex < lineCount) { - lineText = model.getLine(lineIndex); - lineStart = model.getLineStart(lineIndex); - lineEnd = model.getLineEnd(lineIndex); - brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd); - for (var k=0; k= 0 ? 1 : -1; - level += sign; - if (level === 0) { - this._matchingBracket = brackets[k] * sign; - editor.redrawLines(lineIndex, lineIndex + 1); - return; - } - } - lineIndex++; - } - } - break; - } - } - }, - _onModelChanged: function(e) { - var start = e.start; - var removedCharCount = e.removedCharCount; - var addedCharCount = e.addedCharCount; - if (this._matchingBracket && start < this._matchingBracket) { this._matchingBracket += addedCharCount + removedCharCount; } - if (this._currentBracket && start < this._currentBracket) { this._currentBracket += addedCharCount + removedCharCount; } - if (start >= this.commentOffset) { return; } - var model = this.editor.getModel(); - -// window.console.log("start=" + start + " added=" + addedCharCount + " removed=" + removedCharCount) -// for (var i=0; i< this.commentOffsets.length; i++) { -// window.console.log(i +"="+ this.commentOffsets[i]); -// } - - var commentCount = this.commentOffsets.length; - var extra = Math.max(this.commentStart.length - 1, this.commentEnd.length - 1); - if (commentCount === 0) { - this.commentOffset = Math.max(0, start - extra); - return; - } - var charCount = model.getCharCount(); - var oldCharCount = charCount - addedCharCount + removedCharCount; - var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount); - var end = start + removedCharCount; - var commentEnd = this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount); -// window.console.log("s=" + commentStart + " e=" + commentEnd); - var ts; - if (commentStart > 0) { - ts = this.commentOffsets[--commentStart]; - } else { - ts = Math.max(0, Math.min(this.commentOffsets[commentStart], start) - extra); - --commentStart; - } - var te; - var redrawEnd = charCount; - if (commentEnd + 1 < this.commentOffsets.length) { - te = this.commentOffsets[++commentEnd]; - if (end > (te - this.commentEnd.length)) { - if (commentEnd + 2 < this.commentOffsets.length) { - commentEnd += 2; - te = this.commentOffsets[commentEnd]; - redrawEnd = te + 1; - if (redrawEnd > start) { redrawEnd += addedCharCount - removedCharCount; } - } else { - te = Math.min(oldCharCount, end + extra); - this.commentOffset = te; - } - } - } else { - te = Math.min(oldCharCount, end + extra); - this.commentOffset = te; - if (commentEnd > 0 && commentEnd === this.commentOffsets.length) { - commentEnd = this.commentOffsets.length - 1; - } - } - if (ts > start) { ts += addedCharCount - removedCharCount; } - if (te > start) { te += addedCharCount - removedCharCount; } - -// window.console.log("commentStart="+ commentStart + " commentEnd=" + commentEnd + " ts=" + ts + " te=" + te) - - if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === oldCharCount) { - this.commentOffsets.length--; - } - - var offset = 0; - var newComments = []; - var t = model.getText(ts, te); - if (this.commentOffset < te) { this.commentOffset = te; } - while (offset < t.length) { - var begin = ((commentStart + 1 + newComments.length) & 1) === 0; - var search = begin ? this.commentStart : this.commentEnd; - var index = t.indexOf(search, offset); - if (index !== -1) { - newComments.push(ts + (begin ? index : index + search.length)); - } else { - break; - } - offset = index + search.length; - } -// window.console.log("lengths=" + newComments.length + " " + (commentEnd - commentStart) + " t=<" + t + ">") -// for (var i=0; i< newComments.length; i++) { -// window.console.log(i +"=>"+ newComments[i]); -// } - var redraw = (commentEnd - commentStart) !== newComments.length; - if (!redraw) { - for (var i=0; i start) { offset += addedCharCount - removedCharCount; } - if (offset !== newComments[i]) { - redraw = true; - break; - } - } - } - - var args = [commentStart + 1, (commentEnd - commentStart)].concat(newComments); - Array.prototype.splice.apply(this.commentOffsets, args); - for (var k=commentStart + 1 + newComments.length; k< this.commentOffsets.length; k++) { - this.commentOffsets[k] += addedCharCount - removedCharCount; - } - - if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); } - - if (redraw) { -// window.console.log ("redraw " + (start + addedCharCount) + " " + redrawEnd); - this.editor.redrawRange(start + addedCharCount, redrawEnd); - } - -// for (var i=0; i< this.commentOffsets.length; i++) { -// window.console.log(i +"="+ this.commentOffsets[i]); -// } - - } - }; - return TextStyler; -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styles.txt b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styles.txt deleted file mode 100644 index 98677e34..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/styles.txt +++ /dev/null @@ -1,64602 +0,0 @@ -0;80;0;false;false;63;95;191;;; -80;3;0;false;false;;;;;; -83;1;0;false;false;63;95;191;;; -84;1;0;false;false;;;;;; -85;9;0;false;false;63;95;191;;; -94;1;0;false;false;;;;;; -95;3;0;false;false;63;95;191;;; -98;1;0;false;false;;;;;; -99;5;0;false;false;63;95;191;;; -104;1;0;false;false;;;;;; -105;4;0;false;false;63;95;191;;; -109;1;0;false;false;;;;;; -110;3;0;false;false;63;95;191;;; -113;1;0;false;false;;;;;; -114;11;0;false;false;63;95;191;;; -125;1;0;false;false;;;;;; -126;3;0;false;false;63;95;191;;; -129;1;0;false;false;;;;;; -130;7;0;false;false;63;95;191;;; -137;3;0;false;false;;;;;; -140;1;0;false;false;63;95;191;;; -141;1;0;false;false;;;;;; -142;3;0;false;false;63;95;191;;; -145;1;0;false;false;;;;;; -146;6;0;false;false;63;95;191;;; -152;1;0;false;false;;;;;; -153;9;0;false;false;63;95;191;;; -162;1;0;false;false;;;;;; -163;4;0;false;false;63;95;191;;; -167;1;0;false;false;;;;;; -168;7;0;false;false;63;95;191;;; -175;1;0;false;false;;;;;; -176;3;0;false;false;63;95;191;;; -179;1;0;false;false;;;;;; -180;3;0;false;false;63;95;191;;; -183;1;0;false;false;;;;;; -184;12;0;false;false;63;95;191;;; -196;1;0;false;false;;;;;; -197;9;0;false;false;63;95;191;;; -206;3;0;false;false;;;;;; -209;1;0;false;false;63;95;191;;; -210;1;0;false;false;;;;;; -211;3;0;false;false;63;95;191;;; -214;1;0;false;false;;;;;; -215;4;0;false;false;63;95;191;;; -219;1;0;false;false;;;;;; -220;9;0;false;false;63;95;191;;; -229;1;0;false;false;;;;;; -230;5;0;false;false;63;95;191;;; -235;1;0;false;false;;;;;; -236;3;0;false;false;63;95;191;;; -239;1;0;false;false;;;;;; -240;5;0;false;false;63;95;191;;; -245;1;0;false;false;;;;;; -246;2;0;false;false;63;95;191;;; -248;1;0;false;false;;;;;; -249;3;0;false;false;63;95;191;;; -252;1;0;false;false;;;;;; -253;7;0;false;false;63;95;191;;; -260;1;0;false;false;;;;;; -261;6;0;false;false;63;95;191;;; -267;1;0;false;false;;;;;; -268;7;0;false;false;63;95;191;;; -275;1;0;false;false;;;;;; -276;4;0;false;false;63;95;191;;; -280;3;0;false;false;;;;;; -283;1;0;false;false;63;95;191;;; -284;1;0;false;false;;;;;; -285;5;0;false;false;63;95;191;;; -290;1;0;false;false;;;;;; -291;11;0;false;false;63;95;191;;; -302;1;0;false;false;;;;;; -303;4;0;false;false;63;95;191;;; -307;1;0;false;false;;;;;; -308;13;0;false;false;63;95;191;;; -321;1;0;false;false;;;;;; -322;3;0;false;false;63;95;191;;; -325;1;0;false;false;;;;;; -326;2;0;false;false;63;95;191;;; -328;1;0;false;false;;;;;; -329;9;0;false;false;63;95;191;;; -338;1;0;false;false;;;;;; -339;2;0;false;false;63;95;191;;; -341;3;0;false;false;;;;;; -344;1;0;false;false;63;95;191;;; -345;1;0;false;false;;;;;; -346;32;0;false;false;63;95;191;;; -378;1;0;false;false;127;127;159;;; -379;8;0;false;false;63;95;191;;; -387;3;0;false;false;;;;;; -390;1;0;false;false;63;95;191;;; -391;3;0;false;false;;;;;; -394;1;0;false;false;63;95;191;;; -395;1;0;false;false;;;;;; -396;13;0;false;false;63;95;191;;; -409;3;0;false;false;;;;;; -412;1;0;false;false;63;95;191;;; -413;5;0;false;false;;;;;; -418;3;0;false;false;63;95;191;;; -421;1;0;false;false;;;;;; -422;11;0;false;false;63;95;191;;; -433;1;0;false;false;;;;;; -434;1;0;false;false;127;127;159;;; -435;1;0;false;false;;;;;; -436;7;0;false;false;63;95;191;;; -443;1;0;false;false;;;;;; -444;3;0;false;false;63;95;191;;; -447;1;0;false;false;;;;;; -448;3;0;false;false;63;95;191;;; -451;1;0;false;false;;;;;; -452;14;0;false;false;63;95;191;;; -466;3;0;false;false;;;;;; -469;80;0;false;false;63;95;191;;; -549;2;0;false;false;;;;;; -551;7;1;false;false;127;0;85;;; -558;1;0;false;false;;;;;; -559;23;0;false;false;0;0;0;;; -582;6;0;false;false;;;;;; -588;6;1;false;false;127;0;85;;; -594;1;0;false;false;;;;;; -595;12;0;false;false;0;0;0;;; -607;4;0;false;false;;;;;; -611;6;1;false;false;127;0;85;;; -617;1;0;false;false;;;;;; -618;18;0;false;false;0;0;0;;; -636;2;0;false;false;;;;;; -638;6;1;false;false;127;0;85;;; -644;1;0;false;false;;;;;; -645;32;0;false;false;0;0;0;;; -677;2;0;false;false;;;;;; -679;6;1;false;false;127;0;85;;; -685;1;0;false;false;;;;;; -686;22;0;false;false;0;0;0;;; -708;2;0;false;false;;;;;; -710;6;1;false;false;127;0;85;;; -716;1;0;false;false;;;;;; -717;25;0;false;false;0;0;0;;; -742;2;0;false;false;;;;;; -744;6;1;false;false;127;0;85;;; -750;1;0;false;false;;;;;; -751;27;0;false;false;0;0;0;;; -778;2;0;false;false;;;;;; -780;6;1;false;false;127;0;85;;; -786;1;0;false;false;;;;;; -787;27;0;false;false;0;0;0;;; -814;2;0;false;false;;;;;; -816;6;1;false;false;127;0;85;;; -822;1;0;false;false;;;;;; -823;27;0;false;false;0;0;0;;; -850;2;0;false;false;;;;;; -852;6;1;false;false;127;0;85;;; -858;1;0;false;false;;;;;; -859;26;0;false;false;0;0;0;;; -885;4;0;false;false;;;;;; -889;3;0;false;false;63;95;191;;; -892;3;0;false;false;;;;;; -895;1;0;false;false;63;95;191;;; -896;1;0;false;false;;;;;; -897;1;0;false;false;63;95;191;;; -898;1;0;false;false;;;;;; -899;10;0;false;false;63;95;191;;; -909;1;0;false;false;;;;;; -910;2;0;false;false;63;95;191;;; -912;1;0;false;false;;;;;; -913;2;0;false;false;63;95;191;;; -915;1;0;false;false;;;;;; -916;8;0;false;false;63;95;191;;; -924;1;0;false;false;;;;;; -925;4;0;false;false;63;95;191;;; -929;1;0;false;false;;;;;; -930;9;0;false;false;63;95;191;;; -939;1;0;false;false;;;;;; -940;6;0;false;false;63;95;191;;; -946;1;0;false;false;;;;;; -947;4;0;false;false;63;95;191;;; -951;1;0;false;false;;;;;; -952;8;0;false;false;63;95;191;;; -960;1;0;false;false;;;;;; -961;5;0;false;false;63;95;191;;; -966;4;0;false;false;;;;;; -970;1;0;false;false;63;95;191;;; -971;1;0;false;false;;;;;; -972;2;0;false;false;63;95;191;;; -974;1;0;false;false;;;;;; -975;5;0;false;false;63;95;191;;; -980;2;0;false;false;;;;;; -982;3;0;false;false;63;95;191;;; -985;1;0;false;false;;;;;; -986;9;0;false;false;63;95;191;;; -995;1;0;false;false;;;;;; -996;5;0;false;false;63;95;191;;; -1001;1;0;false;false;;;;;; -1002;10;0;false;false;63;95;191;;; -1012;1;0;false;false;;;;;; -1013;3;0;false;false;63;95;191;;; -1016;1;0;false;false;;;;;; -1017;2;0;false;false;63;95;191;;; -1019;1;0;false;false;;;;;; -1020;7;0;false;false;63;95;191;;; -1027;1;0;false;false;;;;;; -1028;3;0;false;false;63;95;191;;; -1031;1;0;false;false;;;;;; -1032;3;0;false;false;63;95;191;;; -1035;1;0;false;false;;;;;; -1036;5;0;false;false;63;95;191;;; -1041;4;0;false;false;;;;;; -1045;1;0;false;false;63;95;191;;; -1046;1;0;false;false;;;;;; -1047;4;0;false;false;127;127;159;;; -1051;3;0;false;false;;;;;; -1054;1;0;false;false;63;95;191;;; -1055;1;0;false;false;;;;;; -1056;4;0;false;false;127;127;159;;; -1060;10;0;false;false;63;95;191;;; -1070;1;0;false;false;;;;;; -1071;5;0;false;false;63;95;191;;; -1076;4;0;false;false;;;;;; -1080;1;0;false;false;63;95;191;;; -1081;1;0;false;false;;;;;; -1082;4;0;false;false;127;127;159;;; -1086;10;0;false;false;63;95;191;;; -1096;1;0;false;false;;;;;; -1097;5;0;false;false;63;95;191;;; -1102;3;0;false;false;;;;;; -1105;1;0;false;false;63;95;191;;; -1106;1;0;false;false;;;;;; -1107;4;0;false;false;127;127;159;;; -1111;4;0;false;false;63;95;191;;; -1115;1;0;false;false;;;;;; -1116;5;0;false;false;63;95;191;;; -1121;1;0;false;false;;;;;; -1122;6;0;false;false;63;95;191;;; -1128;1;0;false;false;;;;;; -1129;7;0;false;false;63;95;191;;; -1136;1;0;false;false;;;;;; -1137;4;0;false;false;63;95;191;;; -1141;1;0;false;false;127;127;159;;; -1142;7;0;false;false;63;95;191;;; -1149;1;0;false;false;;;;;; -1150;8;0;false;false;63;95;191;;; -1158;3;0;false;false;;;;;; -1161;1;0;false;false;63;95;191;;; -1162;1;0;false;false;;;;;; -1163;4;0;false;false;127;127;159;;; -1167;9;0;false;false;63;95;191;;; -1176;3;0;false;false;;;;;; -1179;1;0;false;false;63;95;191;;; -1180;1;0;false;false;;;;;; -1181;4;0;false;false;127;127;159;;; -1185;9;0;false;false;63;95;191;;; -1194;3;0;false;false;;;;;; -1197;1;0;false;false;63;95;191;;; -1198;1;0;false;false;;;;;; -1199;5;0;false;false;127;127;159;;; -1204;3;0;false;false;;;;;; -1207;1;0;false;false;63;95;191;;; -1208;1;0;false;false;;;;;; -1209;3;0;false;false;127;127;159;;; -1212;3;0;false;false;;;;;; -1215;1;0;false;false;63;95;191;;; -1216;1;0;false;false;;;;;; -1217;2;0;false;false;63;95;191;;; -1219;1;0;false;false;;;;;; -1220;8;0;false;false;63;95;191;;; -1228;1;0;false;false;;;;;; -1229;2;0;false;false;63;95;191;;; -1231;1;0;false;false;;;;;; -1232;4;0;false;false;63;95;191;;; -1236;1;0;false;false;;;;;; -1237;5;0;false;false;63;95;191;;; -1242;1;0;false;false;;;;;; -1243;11;0;false;false;63;95;191;;; -1254;1;0;false;false;;;;;; -1255;3;0;false;false;63;95;191;;; -1258;1;0;false;false;;;;;; -1259;10;0;false;false;63;95;191;;; -1269;1;0;false;false;;;;;; -1270;5;0;false;false;63;95;191;;; -1275;1;0;false;false;;;;;; -1276;2;0;false;false;63;95;191;;; -1278;1;0;false;false;;;;;; -1279;1;0;false;false;63;95;191;;; -1280;1;0;false;false;;;;;; -1281;4;0;false;false;63;95;191;;; -1285;1;0;false;false;;;;;; -1286;3;0;false;false;63;95;191;;; -1289;4;0;false;false;;;;;; -1293;1;0;false;false;63;95;191;;; -1294;1;0;false;false;;;;;; -1295;2;0;false;false;63;95;191;;; -1297;1;0;false;false;;;;;; -1298;10;0;false;false;63;95;191;;; -1308;3;0;false;false;;;;;; -1311;1;0;false;false;63;95;191;;; -1312;1;0;false;false;;;;;; -1313;4;0;false;false;127;127;159;;; -1317;3;0;false;false;;;;;; -1320;1;0;false;false;63;95;191;;; -1321;1;0;false;false;;;;;; -1322;3;0;false;false;127;127;159;;; -1325;3;0;false;false;;;;;; -1328;1;0;false;false;63;95;191;;; -1329;1;0;false;false;;;;;; -1330;5;0;false;false;63;95;191;;; -1335;1;0;false;false;;;;;; -1336;3;0;false;false;63;95;191;;; -1339;1;0;false;false;;;;;; -1340;3;0;false;false;63;95;191;;; -1343;1;0;false;false;;;;;; -1344;4;0;false;false;63;95;191;;; -1348;1;0;false;false;;;;;; -1349;2;0;false;false;63;95;191;;; -1351;1;0;false;false;;;;;; -1352;3;0;false;false;63;95;191;;; -1355;1;0;false;false;;;;;; -1356;4;0;false;false;63;95;191;;; -1360;1;0;false;false;;;;;; -1361;6;0;false;false;63;95;191;;; -1367;1;0;false;false;;;;;; -1368;4;0;false;false;63;95;191;;; -1372;1;0;false;false;;;;;; -1373;10;0;false;false;63;95;191;;; -1383;1;0;false;false;;;;;; -1384;4;0;false;false;63;95;191;;; -1388;1;0;false;false;;;;;; -1389;5;0;false;false;63;95;191;;; -1394;1;0;false;false;;;;;; -1395;12;0;false;false;63;95;191;;; -1407;5;0;false;false;;;;;; -1412;1;0;false;false;63;95;191;;; -1413;1;0;false;false;;;;;; -1414;3;0;false;false;63;95;191;;; -1417;1;0;false;false;;;;;; -1418;3;0;false;false;63;95;191;;; -1421;1;0;false;false;;;;;; -1422;3;0;false;false;63;95;191;;; -1425;1;0;false;false;;;;;; -1426;3;0;false;false;63;95;191;;; -1429;1;0;false;false;;;;;; -1430;3;0;false;false;63;95;191;;; -1433;1;0;false;false;;;;;; -1434;4;0;false;false;63;95;191;;; -1438;1;0;false;false;;;;;; -1439;2;0;false;false;63;95;191;;; -1441;1;0;false;false;;;;;; -1442;7;0;false;false;63;95;191;;; -1449;1;0;false;false;;;;;; -1450;3;0;false;false;63;95;191;;; -1453;1;0;false;false;;;;;; -1454;10;0;false;false;63;95;191;;; -1464;1;0;false;false;;;;;; -1465;2;0;false;false;63;95;191;;; -1467;1;0;false;false;;;;;; -1468;3;0;false;false;63;95;191;;; -1471;1;0;false;false;;;;;; -1472;3;0;false;false;63;95;191;;; -1475;1;0;false;false;;;;;; -1476;6;0;false;false;63;95;191;;; -1482;1;0;false;false;;;;;; -1483;4;0;false;false;63;95;191;;; -1487;1;0;false;false;;;;;; -1488;3;0;false;false;63;95;191;;; -1491;4;0;false;false;;;;;; -1495;1;0;false;false;63;95;191;;; -1496;1;0;false;false;;;;;; -1497;18;0;false;false;63;95;191;;; -1515;2;0;false;false;;;;;; -1517;2;0;false;false;63;95;191;;; -1519;1;0;false;false;;;;;; -1520;3;0;false;false;63;95;191;;; -1523;1;0;false;false;;;;;; -1524;6;0;false;false;63;95;191;;; -1530;1;0;false;false;;;;;; -1531;4;0;false;false;63;95;191;;; -1535;1;0;false;false;;;;;; -1536;3;0;false;false;63;95;191;;; -1539;1;0;false;false;;;;;; -1540;9;0;false;false;63;95;191;;; -1549;1;0;false;false;;;;;; -1550;3;0;false;false;63;95;191;;; -1553;1;0;false;false;;;;;; -1554;4;0;false;false;63;95;191;;; -1558;1;0;false;false;;;;;; -1559;2;0;false;false;63;95;191;;; -1561;1;0;false;false;;;;;; -1562;11;0;false;false;63;95;191;;; -1573;4;0;false;false;;;;;; -1577;1;0;false;false;63;95;191;;; -1578;1;0;false;false;;;;;; -1579;3;0;false;false;63;95;191;;; -1582;1;0;false;false;;;;;; -1583;11;0;false;false;63;95;191;;; -1594;1;0;false;false;;;;;; -1595;3;0;false;false;63;95;191;;; -1598;1;0;false;false;;;;;; -1599;4;0;false;false;63;95;191;;; -1603;1;0;false;false;;;;;; -1604;5;0;false;false;63;95;191;;; -1609;1;0;false;false;;;;;; -1610;11;0;false;false;63;95;191;;; -1621;1;0;false;false;;;;;; -1622;3;0;false;false;63;95;191;;; -1625;1;0;false;false;;;;;; -1626;3;0;false;false;63;95;191;;; -1629;1;0;false;false;;;;;; -1630;7;0;false;false;63;95;191;;; -1637;2;0;false;false;;;;;; -1639;10;0;false;false;63;95;191;;; -1649;1;0;false;false;;;;;; -1650;3;0;false;false;63;95;191;;; -1653;1;0;false;false;;;;;; -1654;3;0;false;false;63;95;191;;; -1657;4;0;false;false;;;;;; -1661;1;0;false;false;63;95;191;;; -1662;1;0;false;false;;;;;; -1663;3;0;false;false;63;95;191;;; -1666;1;0;false;false;;;;;; -1667;6;0;false;false;63;95;191;;; -1673;1;0;false;false;;;;;; -1674;4;0;false;false;63;95;191;;; -1678;1;0;false;false;;;;;; -1679;3;0;false;false;63;95;191;;; -1682;1;0;false;false;;;;;; -1683;8;0;false;false;63;95;191;;; -1691;1;0;false;false;;;;;; -1692;3;0;false;false;63;95;191;;; -1695;1;0;false;false;;;;;; -1696;3;0;false;false;63;95;191;;; -1699;1;0;false;false;;;;;; -1700;3;0;false;false;63;95;191;;; -1703;1;0;false;false;;;;;; -1704;10;0;false;false;63;95;191;;; -1714;1;0;false;false;;;;;; -1715;4;0;false;false;63;95;191;;; -1719;2;0;false;false;;;;;; -1721;3;0;false;false;63;95;191;;; -1724;1;0;false;false;;;;;; -1725;9;0;false;false;63;95;191;;; -1734;3;0;false;false;;;;;; -1737;1;0;false;false;63;95;191;;; -1738;1;0;false;false;;;;;; -1739;10;0;false;false;63;95;191;;; -1749;1;0;false;false;;;;;; -1750;3;0;false;false;63;95;191;;; -1753;1;0;false;false;;;;;; -1754;2;0;false;false;63;95;191;;; -1756;1;0;false;false;;;;;; -1757;3;0;false;false;63;95;191;;; -1760;1;0;false;false;;;;;; -1761;9;0;false;false;63;95;191;;; -1770;1;0;false;false;;;;;; -1771;2;0;false;false;63;95;191;;; -1773;1;0;false;false;;;;;; -1774;3;0;false;false;63;95;191;;; -1777;1;0;false;false;;;;;; -1778;4;0;false;false;63;95;191;;; -1782;1;0;false;false;;;;;; -1783;7;0;false;false;63;95;191;;; -1790;1;0;false;false;;;;;; -1791;1;0;false;false;63;95;191;;; -1792;1;0;false;false;;;;;; -1793;18;0;false;false;63;95;191;;; -1811;3;0;false;false;;;;;; -1814;1;0;false;false;63;95;191;;; -1815;1;0;false;false;;;;;; -1816;4;0;false;false;127;127;159;;; -1820;3;0;false;false;;;;;; -1823;1;0;false;false;63;95;191;;; -1824;1;0;false;false;;;;;; -1825;4;0;false;false;127;127;159;;; -1829;26;0;false;false;63;95;191;;; -1855;3;0;false;false;;;;;; -1858;1;0;false;false;63;95;191;;; -1859;1;0;false;false;;;;;; -1860;4;0;false;false;127;127;159;;; -1864;16;0;false;false;63;95;191;;; -1880;3;0;false;false;;;;;; -1883;1;0;false;false;63;95;191;;; -1884;1;0;false;false;;;;;; -1885;4;0;false;false;127;127;159;;; -1889;40;0;false;false;63;95;191;;; -1929;3;0;false;false;;;;;; -1932;1;0;false;false;63;95;191;;; -1933;1;0;false;false;;;;;; -1934;4;0;false;false;127;127;159;;; -1938;25;0;false;false;63;95;191;;; -1963;3;0;false;false;;;;;; -1966;1;0;false;false;63;95;191;;; -1967;1;0;false;false;;;;;; -1968;4;0;false;false;127;127;159;;; -1972;28;0;false;false;63;95;191;;; -2000;3;0;false;false;;;;;; -2003;1;0;false;false;63;95;191;;; -2004;1;0;false;false;;;;;; -2005;5;0;false;false;127;127;159;;; -2010;3;0;false;false;;;;;; -2013;1;0;false;false;63;95;191;;; -2014;1;0;false;false;;;;;; -2015;4;0;false;false;127;127;159;;; -2019;3;0;false;false;;;;;; -2022;1;0;false;false;63;95;191;;; -2023;1;0;false;false;;;;;; -2024;3;0;false;false;127;127;159;;; -2027;3;0;false;false;;;;;; -2030;1;0;false;false;63;95;191;;; -2031;1;0;false;false;;;;;; -2032;5;0;false;false;63;95;191;;; -2037;1;0;false;false;;;;;; -2038;3;0;false;false;63;95;191;;; -2041;1;0;false;false;;;;;; -2042;3;0;false;false;63;95;191;;; -2045;1;0;false;false;;;;;; -2046;4;0;false;false;63;95;191;;; -2050;1;0;false;false;;;;;; -2051;2;0;false;false;63;95;191;;; -2053;1;0;false;false;;;;;; -2054;3;0;false;false;63;95;191;;; -2057;1;0;false;false;;;;;; -2058;4;0;false;false;63;95;191;;; -2062;1;0;false;false;;;;;; -2063;6;0;false;false;63;95;191;;; -2069;1;0;false;false;;;;;; -2070;4;0;false;false;63;95;191;;; -2074;1;0;false;false;;;;;; -2075;10;0;false;false;63;95;191;;; -2085;1;0;false;false;;;;;; -2086;4;0;false;false;63;95;191;;; -2090;1;0;false;false;;;;;; -2091;10;0;false;false;63;95;191;;; -2101;1;0;false;false;;;;;; -2102;7;0;false;false;63;95;191;;; -2109;3;0;false;false;;;;;; -2112;1;0;false;false;63;95;191;;; -2113;1;0;false;false;;;;;; -2114;3;0;false;false;63;95;191;;; -2117;1;0;false;false;;;;;; -2118;3;0;false;false;63;95;191;;; -2121;1;0;false;false;;;;;; -2122;3;0;false;false;63;95;191;;; -2125;1;0;false;false;;;;;; -2126;3;0;false;false;63;95;191;;; -2129;1;0;false;false;;;;;; -2130;3;0;false;false;63;95;191;;; -2133;1;0;false;false;;;;;; -2134;4;0;false;false;63;95;191;;; -2138;1;0;false;false;;;;;; -2139;2;0;false;false;63;95;191;;; -2141;1;0;false;false;;;;;; -2142;7;0;false;false;63;95;191;;; -2149;1;0;false;false;;;;;; -2150;3;0;false;false;63;95;191;;; -2153;1;0;false;false;;;;;; -2154;10;0;false;false;63;95;191;;; -2164;1;0;false;false;;;;;; -2165;2;0;false;false;63;95;191;;; -2167;1;0;false;false;;;;;; -2168;3;0;false;false;63;95;191;;; -2171;1;0;false;false;;;;;; -2172;3;0;false;false;63;95;191;;; -2175;1;0;false;false;;;;;; -2176;6;0;false;false;63;95;191;;; -2182;1;0;false;false;;;;;; -2183;4;0;false;false;63;95;191;;; -2187;1;0;false;false;;;;;; -2188;3;0;false;false;63;95;191;;; -2191;4;0;false;false;;;;;; -2195;1;0;false;false;63;95;191;;; -2196;1;0;false;false;;;;;; -2197;23;0;false;false;63;95;191;;; -2220;2;0;false;false;;;;;; -2222;2;0;false;false;63;95;191;;; -2224;1;0;false;false;;;;;; -2225;3;0;false;false;63;95;191;;; -2228;1;0;false;false;;;;;; -2229;6;0;false;false;63;95;191;;; -2235;1;0;false;false;;;;;; -2236;4;0;false;false;63;95;191;;; -2240;1;0;false;false;;;;;; -2241;3;0;false;false;63;95;191;;; -2244;1;0;false;false;;;;;; -2245;9;0;false;false;63;95;191;;; -2254;1;0;false;false;;;;;; -2255;3;0;false;false;63;95;191;;; -2258;1;0;false;false;;;;;; -2259;4;0;false;false;63;95;191;;; -2263;1;0;false;false;;;;;; -2264;2;0;false;false;63;95;191;;; -2266;1;0;false;false;;;;;; -2267;11;0;false;false;63;95;191;;; -2278;4;0;false;false;;;;;; -2282;1;0;false;false;63;95;191;;; -2283;1;0;false;false;;;;;; -2284;3;0;false;false;63;95;191;;; -2287;1;0;false;false;;;;;; -2288;11;0;false;false;63;95;191;;; -2299;1;0;false;false;;;;;; -2300;3;0;false;false;63;95;191;;; -2303;1;0;false;false;;;;;; -2304;4;0;false;false;63;95;191;;; -2308;1;0;false;false;;;;;; -2309;10;0;false;false;63;95;191;;; -2319;1;0;false;false;;;;;; -2320;5;0;false;false;63;95;191;;; -2325;1;0;false;false;;;;;; -2326;11;0;false;false;63;95;191;;; -2337;1;0;false;false;;;;;; -2338;3;0;false;false;63;95;191;;; -2341;1;0;false;false;;;;;; -2342;3;0;false;false;63;95;191;;; -2345;1;0;false;false;;;;;; -2346;7;0;false;false;63;95;191;;; -2353;5;0;false;false;;;;;; -2358;1;0;false;false;63;95;191;;; -2359;1;0;false;false;;;;;; -2360;10;0;false;false;63;95;191;;; -2370;1;0;false;false;;;;;; -2371;3;0;false;false;63;95;191;;; -2374;1;0;false;false;;;;;; -2375;3;0;false;false;63;95;191;;; -2378;1;0;false;false;;;;;; -2379;3;0;false;false;63;95;191;;; -2382;1;0;false;false;;;;;; -2383;6;0;false;false;63;95;191;;; -2389;1;0;false;false;;;;;; -2390;4;0;false;false;63;95;191;;; -2394;1;0;false;false;;;;;; -2395;3;0;false;false;63;95;191;;; -2398;1;0;false;false;;;;;; -2399;8;0;false;false;63;95;191;;; -2407;1;0;false;false;;;;;; -2408;3;0;false;false;63;95;191;;; -2411;1;0;false;false;;;;;; -2412;3;0;false;false;63;95;191;;; -2415;1;0;false;false;;;;;; -2416;3;0;false;false;63;95;191;;; -2419;1;0;false;false;;;;;; -2420;10;0;false;false;63;95;191;;; -2430;1;0;false;false;;;;;; -2431;4;0;false;false;63;95;191;;; -2435;5;0;false;false;;;;;; -2440;1;0;false;false;63;95;191;;; -2441;1;0;false;false;;;;;; -2442;3;0;false;false;63;95;191;;; -2445;1;0;false;false;;;;;; -2446;9;0;false;false;63;95;191;;; -2455;1;0;false;false;;;;;; -2456;10;0;false;false;63;95;191;;; -2466;1;0;false;false;;;;;; -2467;3;0;false;false;63;95;191;;; -2470;1;0;false;false;;;;;; -2471;2;0;false;false;63;95;191;;; -2473;1;0;false;false;;;;;; -2474;3;0;false;false;63;95;191;;; -2477;1;0;false;false;;;;;; -2478;9;0;false;false;63;95;191;;; -2487;1;0;false;false;;;;;; -2488;2;0;false;false;63;95;191;;; -2490;1;0;false;false;;;;;; -2491;3;0;false;false;63;95;191;;; -2494;1;0;false;false;;;;;; -2495;4;0;false;false;63;95;191;;; -2499;1;0;false;false;;;;;; -2500;7;0;false;false;63;95;191;;; -2507;1;0;false;false;;;;;; -2508;1;0;false;false;63;95;191;;; -2509;4;0;false;false;;;;;; -2513;1;0;false;false;63;95;191;;; -2514;1;0;false;false;;;;;; -2515;23;0;false;false;63;95;191;;; -2538;3;0;false;false;;;;;; -2541;1;0;false;false;63;95;191;;; -2542;1;0;false;false;;;;;; -2543;4;0;false;false;127;127;159;;; -2547;3;0;false;false;;;;;; -2550;1;0;false;false;63;95;191;;; -2551;1;0;false;false;;;;;; -2552;4;0;false;false;127;127;159;;; -2556;22;0;false;false;63;95;191;;; -2578;3;0;false;false;;;;;; -2581;1;0;false;false;63;95;191;;; -2582;1;0;false;false;;;;;; -2583;4;0;false;false;127;127;159;;; -2587;32;0;false;false;63;95;191;;; -2619;3;0;false;false;;;;;; -2622;1;0;false;false;63;95;191;;; -2623;1;0;false;false;;;;;; -2624;5;0;false;false;127;127;159;;; -2629;3;0;false;false;;;;;; -2632;1;0;false;false;63;95;191;;; -2633;1;0;false;false;;;;;; -2634;4;0;false;false;127;127;159;;; -2638;3;0;false;false;;;;;; -2641;1;0;false;false;63;95;191;;; -2642;1;0;false;false;;;;;; -2643;3;0;false;false;127;127;159;;; -2646;3;0;false;false;;;;;; -2649;1;0;false;false;63;95;191;;; -2650;1;0;false;false;;;;;; -2651;3;0;false;false;63;95;191;;; -2654;1;0;false;false;;;;;; -2655;7;0;false;false;63;95;191;;; -2662;1;0;false;false;;;;;; -2663;14;0;false;false;63;95;191;;; -2677;1;0;false;false;;;;;; -2678;3;0;false;false;63;95;191;;; -2681;1;0;false;false;;;;;; -2682;4;0;false;false;63;95;191;;; -2686;1;0;false;false;;;;;; -2687;6;0;false;false;63;95;191;;; -2693;1;0;false;false;;;;;; -2694;3;0;false;false;63;95;191;;; -2697;1;0;false;false;;;;;; -2698;4;0;false;false;63;95;191;;; -2702;1;0;false;false;;;;;; -2703;2;0;false;false;63;95;191;;; -2705;1;0;false;false;;;;;; -2706;4;0;false;false;63;95;191;;; -2710;1;0;false;false;127;127;159;;; -2711;8;0;false;false;63;95;191;;; -2719;2;0;false;false;;;;;; -2721;2;0;false;false;63;95;191;;; -2723;1;0;false;false;;;;;; -2724;2;0;false;false;63;95;191;;; -2726;1;0;false;false;;;;;; -2727;3;0;false;false;63;95;191;;; -2730;3;0;false;false;;;;;; -2733;1;0;false;false;63;95;191;;; -2734;1;0;false;false;;;;;; -2735;3;0;false;false;63;95;191;;; -2738;1;0;false;false;;;;;; -2739;4;0;false;false;63;95;191;;; -2743;1;0;false;false;;;;;; -2744;9;0;false;false;63;95;191;;; -2753;1;0;false;false;;;;;; -2754;3;0;false;false;63;95;191;;; -2757;1;0;false;false;;;;;; -2758;17;0;false;false;63;95;191;;; -2775;1;0;false;false;;;;;; -2776;9;0;false;false;63;95;191;;; -2785;1;0;false;false;;;;;; -2786;3;0;false;false;63;95;191;;; -2789;1;0;false;false;;;;;; -2790;3;0;false;false;63;95;191;;; -2793;1;0;false;false;;;;;; -2794;3;0;false;false;63;95;191;;; -2797;1;0;false;false;;;;;; -2798;10;0;false;false;63;95;191;;; -2808;1;0;false;false;;;;;; -2809;3;0;false;false;63;95;191;;; -2812;3;0;false;false;;;;;; -2815;1;0;false;false;63;95;191;;; -2816;1;0;false;false;;;;;; -2817;29;0;false;false;63;95;191;;; -2846;1;0;false;false;;;;;; -2847;2;0;false;false;63;95;191;;; -2849;1;0;false;false;;;;;; -2850;10;0;false;false;63;95;191;;; -2860;1;0;false;false;;;;;; -2861;3;0;false;false;63;95;191;;; -2864;1;0;false;false;;;;;; -2865;7;0;false;false;63;95;191;;; -2872;4;0;false;false;;;;;; -2876;1;0;false;false;63;95;191;;; -2877;1;0;false;false;;;;;; -2878;4;0;false;false;127;127;159;;; -2882;3;0;false;false;;;;;; -2885;1;0;false;false;63;95;191;;; -2886;1;0;false;false;;;;;; -2887;3;0;false;false;127;127;159;;; -2890;3;0;false;false;;;;;; -2893;1;0;false;false;63;95;191;;; -2894;1;0;false;false;;;;;; -2895;10;0;false;false;63;95;191;;; -2905;1;0;false;false;;;;;; -2906;4;0;false;false;63;95;191;;; -2910;1;0;false;false;;;;;; -2911;5;0;false;false;63;95;191;;; -2916;1;0;false;false;;;;;; -2917;2;0;false;false;63;95;191;;; -2919;1;0;false;false;;;;;; -2920;4;0;false;false;127;127;159;;; -2924;3;0;false;false;63;95;191;;; -2927;5;0;false;false;127;127;159;;; -2932;1;0;false;false;;;;;; -2933;8;0;false;false;63;95;191;;; -2941;1;0;false;false;;;;;; -2942;2;0;false;false;63;95;191;;; -2944;1;0;false;false;;;;;; -2945;2;0;false;false;63;95;191;;; -2947;1;0;false;false;;;;;; -2948;11;0;false;false;63;95;191;;; -2959;3;0;false;false;;;;;; -2962;1;0;false;false;63;95;191;;; -2963;1;0;false;false;;;;;; -2964;4;0;false;false;127;127;159;;; -2968;3;0;false;false;;;;;; -2971;1;0;false;false;63;95;191;;; -2972;1;0;false;false;;;;;; -2973;4;0;false;false;127;127;159;;; -2977;3;0;false;false;;;;;; -2980;1;0;false;false;63;95;191;;; -2981;1;0;false;false;;;;;; -2982;7;0;false;false;127;127;159;;; -2989;7;0;false;false;63;95;191;;; -2996;8;0;false;false;127;127;159;;; -3004;15;0;false;false;63;95;191;;; -3019;1;0;false;false;;;;;; -3020;6;0;false;false;63;95;191;;; -3026;1;0;false;false;;;;;; -3027;10;0;false;false;63;95;191;;; -3037;1;0;false;false;;;;;; -3038;7;0;false;false;63;95;191;;; -3045;1;0;false;false;;;;;; -3046;4;0;false;false;63;95;191;;; -3050;3;0;false;false;;;;;; -3053;1;0;false;false;63;95;191;;; -3054;1;0;false;false;;;;;; -3055;7;0;false;false;127;127;159;;; -3062;7;0;false;false;63;95;191;;; -3069;8;0;false;false;127;127;159;;; -3077;15;0;false;false;63;95;191;;; -3092;1;0;false;false;;;;;; -3093;18;0;false;false;63;95;191;;; -3111;1;0;false;false;;;;;; -3112;16;0;false;false;63;95;191;;; -3128;1;0;false;false;;;;;; -3129;13;0;false;false;63;95;191;;; -3142;1;0;false;false;;;;;; -3143;7;0;false;false;63;95;191;;; -3150;1;0;false;false;;;;;; -3151;10;0;false;false;63;95;191;;; -3161;1;0;false;false;;;;;; -3162;7;0;false;false;63;95;191;;; -3169;1;0;false;false;;;;;; -3170;9;0;false;false;63;95;191;;; -3179;3;0;false;false;;;;;; -3182;1;0;false;false;63;95;191;;; -3183;1;0;false;false;;;;;; -3184;5;0;false;false;127;127;159;;; -3189;3;0;false;false;;;;;; -3192;2;0;false;false;63;95;191;;; -3194;2;0;false;false;;;;;; -3196;6;1;false;false;127;0;85;;; -3202;1;0;false;false;;;;;; -3203;5;1;false;false;127;0;85;;; -3208;1;0;false;false;;;;;; -3209;10;0;false;false;0;0;0;;; -3219;1;0;false;false;;;;;; -3220;7;1;false;false;127;0;85;;; -3227;1;0;false;false;;;;;; -3228;6;0;false;false;0;0;0;;; -3234;1;0;false;false;;;;;; -3235;1;0;false;false;0;0;0;;; -3236;3;0;false;false;;;;;; -3239;6;1;false;false;127;0;85;;; -3245;1;0;false;false;;;;;; -3246;5;1;false;false;127;0;85;;; -3251;1;0;false;false;;;;;; -3252;4;1;false;false;127;0;85;;; -3256;1;0;false;false;;;;;; -3257;3;0;false;false;0;0;0;;; -3260;1;0;false;false;;;;;; -3261;1;0;false;false;0;0;0;;; -3262;1;0;false;false;;;;;; -3263;4;0;false;false;42;0;255;;; -3267;1;0;false;false;0;0;0;;; -3268;3;0;false;false;;;;;; -3271;6;1;false;false;127;0;85;;; -3277;1;0;false;false;;;;;; -3278;5;1;false;false;127;0;85;;; -3283;1;0;false;false;;;;;; -3284;6;0;false;false;0;0;0;;; -3290;1;0;false;false;;;;;; -3291;21;0;false;false;0;0;0;;; -3312;1;0;false;false;;;;;; -3313;1;0;false;false;0;0;0;;; -3314;1;0;false;false;;;;;; -3315;19;0;false;false;0;0;0;;; -3334;16;0;false;false;42;0;255;;; -3350;2;0;false;false;0;0;0;;; -3352;3;0;false;false;;;;;; -3355;6;1;false;false;127;0;85;;; -3361;1;0;false;false;;;;;; -3362;5;1;false;false;127;0;85;;; -3367;1;0;false;false;;;;;; -3368;3;1;false;false;127;0;85;;; -3371;1;0;false;false;;;;;; -3372;16;0;false;false;0;0;0;;; -3388;1;0;false;false;;;;;; -3389;1;0;false;false;0;0;0;;; -3390;1;0;false;false;;;;;; -3391;2;0;false;false;0;0;0;;; -3393;3;0;false;false;;;;;; -3396;6;1;false;false;127;0;85;;; -3402;1;0;false;false;;;;;; -3403;5;1;false;false;127;0;85;;; -3408;1;0;false;false;;;;;; -3409;3;1;false;false;127;0;85;;; -3412;1;0;false;false;;;;;; -3413;13;0;false;false;0;0;0;;; -3426;1;0;false;false;;;;;; -3427;1;0;false;false;0;0;0;;; -3428;1;0;false;false;;;;;; -3429;3;0;false;false;0;0;0;;; -3432;3;0;false;false;;;;;; -3435;6;1;false;false;127;0;85;;; -3441;1;0;false;false;;;;;; -3442;5;1;false;false;127;0;85;;; -3447;1;0;false;false;;;;;; -3448;3;1;false;false;127;0;85;;; -3451;1;0;false;false;;;;;; -3452;14;0;false;false;0;0;0;;; -3466;1;0;false;false;;;;;; -3467;1;0;false;false;0;0;0;;; -3468;1;0;false;false;;;;;; -3469;3;0;false;false;0;0;0;;; -3472;3;0;false;false;;;;;; -3475;6;1;false;false;127;0;85;;; -3481;1;0;false;false;;;;;; -3482;5;1;false;false;127;0;85;;; -3487;1;0;false;false;;;;;; -3488;3;1;false;false;127;0;85;;; -3491;1;0;false;false;;;;;; -3492;13;0;false;false;0;0;0;;; -3505;1;0;false;false;;;;;; -3506;1;0;false;false;0;0;0;;; -3507;1;0;false;false;;;;;; -3508;3;0;false;false;0;0;0;;; -3511;3;0;false;false;;;;;; -3514;6;1;false;false;127;0;85;;; -3520;1;0;false;false;;;;;; -3521;5;1;false;false;127;0;85;;; -3526;1;0;false;false;;;;;; -3527;3;1;false;false;127;0;85;;; -3530;1;0;false;false;;;;;; -3531;13;0;false;false;0;0;0;;; -3544;1;0;false;false;;;;;; -3545;1;0;false;false;0;0;0;;; -3546;1;0;false;false;;;;;; -3547;3;0;false;false;0;0;0;;; -3550;6;0;false;false;;;;;; -3556;6;1;false;false;127;0;85;;; -3562;1;0;false;false;;;;;; -3563;5;1;false;false;127;0;85;;; -3568;1;0;false;false;;;;;; -3569;3;1;false;false;127;0;85;;; -3572;1;0;false;false;;;;;; -3573;14;0;false;false;0;0;0;;; -3587;1;0;false;false;;;;;; -3588;1;0;false;false;0;0;0;;; -3589;1;0;false;false;;;;;; -3590;5;0;false;false;0;0;0;;; -3595;3;0;false;false;;;;;; -3598;6;1;false;false;127;0;85;;; -3604;1;0;false;false;;;;;; -3605;5;1;false;false;127;0;85;;; -3610;1;0;false;false;;;;;; -3611;3;1;false;false;127;0;85;;; -3614;1;0;false;false;;;;;; -3615;17;0;false;false;0;0;0;;; -3632;1;0;false;false;;;;;; -3633;1;0;false;false;0;0;0;;; -3634;1;0;false;false;;;;;; -3635;5;0;false;false;0;0;0;;; -3640;3;0;false;false;;;;;; -3643;6;1;false;false;127;0;85;;; -3649;1;0;false;false;;;;;; -3650;5;1;false;false;127;0;85;;; -3655;1;0;false;false;;;;;; -3656;3;1;false;false;127;0;85;;; -3659;1;0;false;false;;;;;; -3660;12;0;false;false;0;0;0;;; -3672;1;0;false;false;;;;;; -3673;1;0;false;false;0;0;0;;; -3674;1;0;false;false;;;;;; -3675;5;0;false;false;0;0;0;;; -3680;3;0;false;false;;;;;; -3683;6;1;false;false;127;0;85;;; -3689;1;0;false;false;;;;;; -3690;5;1;false;false;127;0;85;;; -3695;1;0;false;false;;;;;; -3696;3;1;false;false;127;0;85;;; -3699;1;0;false;false;;;;;; -3700;12;0;false;false;0;0;0;;; -3712;1;0;false;false;;;;;; -3713;1;0;false;false;0;0;0;;; -3714;1;0;false;false;;;;;; -3715;5;0;false;false;0;0;0;;; -3720;3;0;false;false;;;;;; -3723;6;1;false;false;127;0;85;;; -3729;1;0;false;false;;;;;; -3730;5;1;false;false;127;0;85;;; -3735;1;0;false;false;;;;;; -3736;3;1;false;false;127;0;85;;; -3739;1;0;false;false;;;;;; -3740;7;0;false;false;0;0;0;;; -3747;1;0;false;false;;;;;; -3748;1;0;false;false;0;0;0;;; -3749;1;0;false;false;;;;;; -3750;5;0;false;false;0;0;0;;; -3755;3;0;false;false;;;;;; -3758;6;1;false;false;127;0;85;;; -3764;1;0;false;false;;;;;; -3765;5;1;false;false;127;0;85;;; -3770;1;0;false;false;;;;;; -3771;3;1;false;false;127;0;85;;; -3774;1;0;false;false;;;;;; -3775;9;0;false;false;0;0;0;;; -3784;1;0;false;false;;;;;; -3785;1;0;false;false;0;0;0;;; -3786;1;0;false;false;;;;;; -3787;5;0;false;false;0;0;0;;; -3792;3;0;false;false;;;;;; -3795;6;1;false;false;127;0;85;;; -3801;1;0;false;false;;;;;; -3802;5;1;false;false;127;0;85;;; -3807;1;0;false;false;;;;;; -3808;3;1;false;false;127;0;85;;; -3811;1;0;false;false;;;;;; -3812;11;0;false;false;0;0;0;;; -3823;1;0;false;false;;;;;; -3824;1;0;false;false;0;0;0;;; -3825;1;0;false;false;;;;;; -3826;5;0;false;false;0;0;0;;; -3831;3;0;false;false;;;;;; -3834;6;1;false;false;127;0;85;;; -3840;1;0;false;false;;;;;; -3841;5;1;false;false;127;0;85;;; -3846;1;0;false;false;;;;;; -3847;3;1;false;false;127;0;85;;; -3850;1;0;false;false;;;;;; -3851;15;0;false;false;0;0;0;;; -3866;1;0;false;false;;;;;; -3867;1;0;false;false;0;0;0;;; -3868;1;0;false;false;;;;;; -3869;5;0;false;false;0;0;0;;; -3874;6;0;false;false;;;;;; -3880;5;0;false;false;0;0;0;;; -3885;1;0;false;false;;;;;; -3886;20;0;false;false;0;0;0;;; -3906;1;0;false;false;;;;;; -3907;31;0;false;false;63;127;95;;; -3938;1;0;false;false;;;;;; -3939;5;0;false;false;0;0;0;;; -3944;1;0;false;false;;;;;; -3945;20;0;false;false;0;0;0;;; -3965;1;0;false;false;;;;;; -3966;31;0;false;false;63;127;95;;; -3997;1;0;false;false;;;;;; -3998;17;0;false;false;0;0;0;;; -4015;1;0;false;false;;;;;; -4016;15;0;false;false;0;0;0;;; -4031;1;0;false;false;;;;;; -4032;47;0;false;false;63;127;95;;; -4079;1;0;false;false;;;;;; -4080;17;0;false;false;0;0;0;;; -4097;1;0;false;false;;;;;; -4098;8;0;false;false;0;0;0;;; -4106;3;0;false;false;;;;;; -4109;70;0;false;false;63;127;95;;; -4179;1;0;false;false;;;;;; -4180;15;0;false;false;0;0;0;;; -4195;1;0;false;false;;;;;; -4196;9;0;false;false;0;0;0;;; -4205;3;0;false;false;;;;;; -4208;8;0;false;false;0;0;0;;; -4216;1;0;false;false;;;;;; -4217;9;0;false;false;0;0;0;;; -4226;3;0;false;false;;;;;; -4229;18;0;false;false;0;0;0;;; -4247;1;0;false;false;;;;;; -4248;19;0;false;false;0;0;0;;; -4267;1;0;false;false;;;;;; -4268;85;0;false;false;63;127;95;;; -4353;1;0;false;false;;;;;; -4354;17;0;false;false;0;0;0;;; -4371;1;0;false;false;;;;;; -4372;18;0;false;false;0;0;0;;; -4390;67;0;false;false;63;127;95;;; -4457;1;0;false;false;;;;;; -4458;9;0;false;false;0;0;0;;; -4467;1;0;false;false;;;;;; -4468;10;0;false;false;0;0;0;;; -4478;3;0;false;false;;;;;; -4481;7;1;false;false;127;0;85;;; -4488;1;0;false;false;;;;;; -4489;13;0;false;false;0;0;0;;; -4502;1;0;false;false;;;;;; -4503;1;0;false;false;0;0;0;;; -4504;1;0;false;false;;;;;; -4505;5;1;false;false;127;0;85;;; -4510;1;0;false;false;0;0;0;;; -4511;2;0;false;false;;;;;; -4513;144;0;false;false;63;127;95;;; -4657;1;0;false;false;;;;;; -4658;7;1;false;false;127;0;85;;; -4665;1;0;false;false;;;;;; -4666;18;0;false;false;0;0;0;;; -4684;1;0;false;false;;;;;; -4685;1;0;false;false;0;0;0;;; -4686;1;0;false;false;;;;;; -4687;5;1;false;false;127;0;85;;; -4692;1;0;false;false;0;0;0;;; -4693;1;0;false;false;;;;;; -4694;159;0;false;false;63;127;95;;; -4853;1;0;false;false;;;;;; -4854;3;1;false;false;127;0;85;;; -4857;1;0;false;false;;;;;; -4858;20;0;false;false;0;0;0;;; -4878;1;0;false;false;;;;;; -4879;1;0;false;false;0;0;0;;; -4880;1;0;false;false;;;;;; -4881;2;0;false;false;0;0;0;;; -4883;2;0;false;false;;;;;; -4885;16;0;false;false;63;127;95;;; -4901;1;0;false;false;;;;;; -4902;3;1;false;false;127;0;85;;; -4905;1;0;false;false;;;;;; -4906;22;0;false;false;0;0;0;;; -4928;1;0;false;false;;;;;; -4929;1;0;false;false;0;0;0;;; -4930;1;0;false;false;;;;;; -4931;2;0;false;false;0;0;0;;; -4933;2;0;false;false;;;;;; -4935;16;0;false;false;63;127;95;;; -4951;1;0;false;false;;;;;; -4952;3;1;false;false;127;0;85;;; -4955;1;0;false;false;;;;;; -4956;8;0;false;false;0;0;0;;; -4964;1;0;false;false;;;;;; -4965;1;0;false;false;0;0;0;;; -4966;1;0;false;false;;;;;; -4967;2;0;false;false;0;0;0;;; -4969;5;0;false;false;;;;;; -4974;21;0;false;false;63;127;95;;; -4995;1;0;false;false;;;;;; -4996;3;1;false;false;127;0;85;;; -4999;1;0;false;false;;;;;; -5000;17;0;false;false;0;0;0;;; -5017;1;0;false;false;;;;;; -5018;1;0;false;false;0;0;0;;; -5019;1;0;false;false;;;;;; -5020;3;0;false;false;0;0;0;;; -5023;3;0;false;false;;;;;; -5026;3;1;false;false;127;0;85;;; -5029;1;0;false;false;;;;;; -5030;9;0;false;false;0;0;0;;; -5039;1;0;false;false;;;;;; -5040;1;0;false;false;0;0;0;;; -5041;1;0;false;false;;;;;; -5042;2;0;false;false;0;0;0;;; -5044;5;0;false;false;;;;;; -5049;42;0;false;false;63;127;95;;; -5091;1;0;false;false;;;;;; -5092;3;1;false;false;127;0;85;;; -5095;1;0;false;false;;;;;; -5096;16;0;false;false;0;0;0;;; -5112;1;0;false;false;;;;;; -5113;1;0;false;false;0;0;0;;; -5114;1;0;false;false;;;;;; -5115;2;0;false;false;0;0;0;;; -5117;3;0;false;false;;;;;; -5120;71;0;false;false;63;127;95;;; -5191;10;0;false;false;;;;;; -5201;41;0;false;false;63;127;95;;; -5242;1;0;false;false;;;;;; -5243;3;1;false;false;127;0;85;;; -5246;1;0;false;false;;;;;; -5247;15;0;false;false;0;0;0;;; -5262;1;0;false;false;;;;;; -5263;1;0;false;false;0;0;0;;; -5264;1;0;false;false;;;;;; -5265;2;0;false;false;0;0;0;;; -5267;3;0;false;false;;;;;; -5270;71;0;false;false;63;127;95;;; -5341;10;0;false;false;;;;;; -5351;42;0;false;false;63;127;95;;; -5393;1;0;false;false;;;;;; -5394;3;1;false;false;127;0;85;;; -5397;1;0;false;false;;;;;; -5398;11;0;false;false;0;0;0;;; -5409;6;0;false;false;;;;;; -5415;28;0;false;false;63;127;95;;; -5443;1;0;false;false;;;;;; -5444;3;1;false;false;127;0;85;;; -5447;1;0;false;false;;;;;; -5448;9;0;false;false;0;0;0;;; -5457;1;0;false;false;;;;;; -5458;1;0;false;false;0;0;0;;; -5459;1;0;false;false;;;;;; -5460;2;0;false;false;0;0;0;;; -5462;5;0;false;false;;;;;; -5467;34;0;false;false;63;127;95;;; -5501;1;0;false;false;;;;;; -5502;3;1;false;false;127;0;85;;; -5505;1;0;false;false;;;;;; -5506;11;0;false;false;0;0;0;;; -5517;3;0;false;false;;;;;; -5520;3;1;false;false;127;0;85;;; -5523;1;0;false;false;;;;;; -5524;10;0;false;false;0;0;0;;; -5534;3;0;false;false;;;;;; -5537;3;1;false;false;127;0;85;;; -5540;1;0;false;false;;;;;; -5541;12;0;false;false;0;0;0;;; -5553;3;0;false;false;;;;;; -5556;3;1;false;false;127;0;85;;; -5559;1;0;false;false;;;;;; -5560;13;0;false;false;0;0;0;;; -5573;3;0;false;false;;;;;; -5576;6;0;false;false;0;0;0;;; -5582;1;0;false;false;;;;;; -5583;12;0;false;false;0;0;0;;; -5595;5;0;false;false;;;;;; -5600;3;1;false;false;127;0;85;;; -5603;1;0;false;false;;;;;; -5604;8;0;false;false;0;0;0;;; -5612;7;0;false;false;;;;;; -5619;48;0;false;false;63;127;95;;; -5667;10;0;false;false;;;;;; -5677;46;0;false;false;63;127;95;;; -5723;1;0;false;false;;;;;; -5724;3;1;false;false;127;0;85;;; -5727;1;0;false;false;;;;;; -5728;11;0;false;false;0;0;0;;; -5739;1;0;false;false;;;;;; -5740;1;0;false;false;0;0;0;;; -5741;1;0;false;false;;;;;; -5742;2;0;false;false;0;0;0;;; -5744;3;0;false;false;;;;;; -5747;5;0;false;false;0;0;0;;; -5752;1;0;false;false;;;;;; -5753;9;0;false;false;0;0;0;;; -5762;1;0;false;false;;;;;; -5763;1;0;false;false;0;0;0;;; -5764;1;0;false;false;;;;;; -5765;3;1;false;false;127;0;85;;; -5768;1;0;false;false;;;;;; -5769;8;0;false;false;0;0;0;;; -5777;1;0;false;false;;;;;; -5778;3;0;false;false;0;0;0;;; -5781;1;0;false;false;;;;;; -5782;57;0;false;false;63;127;95;;; -5839;1;0;false;false;;;;;; -5840;5;0;false;false;0;0;0;;; -5845;1;0;false;false;;;;;; -5846;19;0;false;false;0;0;0;;; -5865;11;0;false;false;;;;;; -5876;66;0;false;false;63;127;95;;; -5942;1;0;false;false;;;;;; -5943;3;1;false;false;127;0;85;;; -5946;1;0;false;false;;;;;; -5947;16;0;false;false;0;0;0;;; -5963;4;0;false;false;;;;;; -5967;72;0;false;false;63;127;95;;; -6039;1;0;false;false;;;;;; -6040;5;0;false;false;0;0;0;;; -6045;1;0;false;false;;;;;; -6046;21;0;false;false;0;0;0;;; -6067;3;0;false;false;;;;;; -6070;44;0;false;false;63;127;95;;; -6114;1;0;false;false;;;;;; -6115;7;1;false;false;127;0;85;;; -6122;1;0;false;false;;;;;; -6123;8;0;false;false;0;0;0;;; -6131;1;0;false;false;;;;;; -6132;1;0;false;false;0;0;0;;; -6133;1;0;false;false;;;;;; -6134;4;1;false;false;127;0;85;;; -6138;1;0;false;false;0;0;0;;; -6139;3;0;false;false;;;;;; -6142;7;1;false;false;127;0;85;;; -6149;1;0;false;false;;;;;; -6150;8;0;false;false;0;0;0;;; -6158;1;0;false;false;;;;;; -6159;1;0;false;false;0;0;0;;; -6160;1;0;false;false;;;;;; -6161;5;1;false;false;127;0;85;;; -6166;1;0;false;false;0;0;0;;; -6167;3;0;false;false;;;;;; -6170;7;1;false;false;127;0;85;;; -6177;1;0;false;false;;;;;; -6178;18;0;false;false;0;0;0;;; -6196;1;0;false;false;;;;;; -6197;1;0;false;false;0;0;0;;; -6198;1;0;false;false;;;;;; -6199;4;1;false;false;127;0;85;;; -6203;1;0;false;false;0;0;0;;; -6204;1;0;false;false;;;;;; -6205;31;0;false;false;63;127;95;;; -6236;1;0;false;false;;;;;; -6237;7;1;false;false;127;0;85;;; -6244;1;0;false;false;;;;;; -6245;9;0;false;false;0;0;0;;; -6254;1;0;false;false;;;;;; -6255;1;0;false;false;0;0;0;;; -6256;1;0;false;false;;;;;; -6257;5;1;false;false;127;0;85;;; -6262;1;0;false;false;0;0;0;;; -6263;3;0;false;false;;;;;; -6266;31;0;false;false;63;127;95;;; -6297;1;0;false;false;;;;;; -6298;3;1;false;false;127;0;85;;; -6301;1;0;false;false;;;;;; -6302;9;0;false;false;0;0;0;;; -6311;1;0;false;false;;;;;; -6312;1;0;false;false;0;0;0;;; -6313;1;0;false;false;;;;;; -6314;3;0;false;false;0;0;0;;; -6317;5;0;false;false;;;;;; -6322;91;0;false;false;63;127;95;;; -6413;1;0;false;false;;;;;; -6414;9;0;false;false;0;0;0;;; -6423;1;0;false;false;;;;;; -6424;12;0;false;false;0;0;0;;; -6436;1;0;false;false;;;;;; -6437;1;0;false;false;0;0;0;;; -6438;1;0;false;false;;;;;; -6439;3;1;false;false;127;0;85;;; -6442;1;0;false;false;;;;;; -6443;12;0;false;false;0;0;0;;; -6455;3;0;false;false;;;;;; -6458;5;0;false;false;0;0;0;;; -6463;1;0;false;false;;;;;; -6464;10;0;false;false;0;0;0;;; -6474;1;0;false;false;;;;;; -6475;1;0;false;false;0;0;0;;; -6476;1;0;false;false;;;;;; -6477;4;1;false;false;127;0;85;;; -6481;1;0;false;false;0;0;0;;; -6482;3;0;false;false;;;;;; -6485;28;0;false;false;63;127;95;;; -6513;1;0;false;false;;;;;; -6514;5;0;false;false;0;0;0;;; -6519;1;0;false;false;;;;;; -6520;10;0;false;false;0;0;0;;; -6530;1;0;false;false;;;;;; -6531;1;0;false;false;0;0;0;;; -6532;1;0;false;false;;;;;; -6533;4;1;false;false;127;0;85;;; -6537;1;0;false;false;0;0;0;;; -6538;3;0;false;false;;;;;; -6541;4;0;false;false;63;127;95;;; -6545;1;0;false;false;;;;;; -6546;9;0;false;false;0;0;0;;; -6555;1;0;false;false;;;;;; -6556;10;0;false;false;0;0;0;;; -6566;3;0;false;false;;;;;; -6569;7;1;false;false;127;0;85;;; -6576;1;0;false;false;;;;;; -6577;9;0;false;false;0;0;0;;; -6586;1;0;false;false;;;;;; -6587;1;0;false;false;0;0;0;;; -6588;1;0;false;false;;;;;; -6589;5;1;false;false;127;0;85;;; -6594;1;0;false;false;0;0;0;;; -6595;3;0;false;false;;;;;; -6598;7;1;false;false;127;0;85;;; -6605;1;0;false;false;;;;;; -6606;16;0;false;false;0;0;0;;; -6622;1;0;false;false;;;;;; -6623;1;0;false;false;0;0;0;;; -6624;1;0;false;false;;;;;; -6625;5;1;false;false;127;0;85;;; -6630;1;0;false;false;0;0;0;;; -6631;1;0;false;false;;;;;; -6632;65;0;false;false;63;127;95;;; -6697;1;0;false;false;;;;;; -6698;3;1;false;false;127;0;85;;; -6701;1;0;false;false;;;;;; -6702;19;0;false;false;0;0;0;;; -6721;1;0;false;false;;;;;; -6722;1;0;false;false;0;0;0;;; -6723;1;0;false;false;;;;;; -6724;9;0;false;false;0;0;0;;; -6733;1;0;false;false;;;;;; -6734;59;0;false;false;63;127;95;;; -6793;1;0;false;false;;;;;; -6794;3;1;false;false;127;0;85;;; -6797;1;0;false;false;;;;;; -6798;18;0;false;false;0;0;0;;; -6816;1;0;false;false;;;;;; -6817;1;0;false;false;0;0;0;;; -6818;1;0;false;false;;;;;; -6819;2;0;false;false;0;0;0;;; -6821;3;0;false;false;;;;;; -6824;3;1;false;false;127;0;85;;; -6827;1;0;false;false;;;;;; -6828;20;0;false;false;0;0;0;;; -6848;3;0;false;false;;;;;; -6851;23;0;false;false;63;127;95;;; -6874;1;0;false;false;;;;;; -6875;3;1;false;false;127;0;85;;; -6878;1;0;false;false;;;;;; -6879;27;0;false;false;0;0;0;;; -6906;2;0;false;false;;;;;; -6908;24;0;false;false;63;127;95;;; -6932;1;0;false;false;;;;;; -6933;3;1;false;false;127;0;85;;; -6936;1;0;false;false;;;;;; -6937;27;0;false;false;0;0;0;;; -6964;2;0;false;false;;;;;; -6966;26;0;false;false;63;127;95;;; -6992;1;0;false;false;;;;;; -6993;3;1;false;false;127;0;85;;; -6996;1;0;false;false;;;;;; -6997;31;0;false;false;0;0;0;;; -7028;1;0;false;false;;;;;; -7029;25;0;false;false;63;127;95;;; -7054;1;0;false;false;;;;;; -7055;3;1;false;false;127;0;85;;; -7058;1;0;false;false;;;;;; -7059;31;0;false;false;0;0;0;;; -7090;4;0;false;false;;;;;; -7094;7;1;false;false;127;0;85;;; -7101;1;0;false;false;;;;;; -7102;11;0;false;false;0;0;0;;; -7113;3;0;false;false;;;;;; -7116;7;1;false;false;127;0;85;;; -7123;1;0;false;false;;;;;; -7124;12;0;false;false;0;0;0;;; -7136;1;0;false;false;;;;;; -7137;1;0;false;false;0;0;0;;; -7138;1;0;false;false;;;;;; -7139;5;1;false;false;127;0;85;;; -7144;1;0;false;false;0;0;0;;; -7145;2;0;false;false;;;;;; -7147;64;0;false;false;63;127;95;;; -7211;1;0;false;false;;;;;; -7212;5;0;false;false;0;0;0;;; -7217;1;0;false;false;;;;;; -7218;15;0;false;false;0;0;0;;; -7233;1;0;false;false;;;;;; -7234;1;0;false;false;0;0;0;;; -7235;1;0;false;false;;;;;; -7236;4;1;false;false;127;0;85;;; -7240;1;0;false;false;0;0;0;;; -7241;3;0;false;false;;;;;; -7244;5;0;false;false;0;0;0;;; -7249;1;0;false;false;;;;;; -7250;16;0;false;false;0;0;0;;; -7266;1;0;false;false;;;;;; -7267;1;0;false;false;0;0;0;;; -7268;1;0;false;false;;;;;; -7269;4;1;false;false;127;0;85;;; -7273;1;0;false;false;0;0;0;;; -7274;3;0;false;false;;;;;; -7277;3;1;false;false;127;0;85;;; -7280;1;0;false;false;;;;;; -7281;14;0;false;false;0;0;0;;; -7295;1;0;false;false;;;;;; -7296;1;0;false;false;0;0;0;;; -7297;1;0;false;false;;;;;; -7298;9;0;false;false;0;0;0;;; -7307;3;0;false;false;;;;;; -7310;7;1;false;false;127;0;85;;; -7317;1;0;false;false;;;;;; -7318;9;0;false;false;0;0;0;;; -7327;1;0;false;false;;;;;; -7328;1;0;false;false;0;0;0;;; -7329;1;0;false;false;;;;;; -7330;4;1;false;false;127;0;85;;; -7334;1;0;false;false;0;0;0;;; -7335;3;0;false;false;;;;;; -7338;5;0;false;false;0;0;0;;; -7343;1;0;false;false;;;;;; -7344;12;0;false;false;0;0;0;;; -7356;1;0;false;false;;;;;; -7357;1;0;false;false;0;0;0;;; -7358;1;0;false;false;;;;;; -7359;4;1;false;false;127;0;85;;; -7363;1;0;false;false;0;0;0;;; -7364;3;0;false;false;;;;;; -7367;7;1;false;false;127;0;85;;; -7374;1;0;false;false;;;;;; -7375;20;0;false;false;0;0;0;;; -7395;1;0;false;false;;;;;; -7396;1;0;false;false;0;0;0;;; -7397;1;0;false;false;;;;;; -7398;4;1;false;false;127;0;85;;; -7402;1;0;false;false;0;0;0;;; -7403;5;0;false;false;;;;;; -7408;5;1;false;false;127;0;85;;; -7413;1;0;false;false;;;;;; -7414;6;1;false;false;127;0;85;;; -7420;1;0;false;false;;;;;; -7421;7;1;false;false;127;0;85;;; -7428;1;0;false;false;;;;;; -7429;10;0;false;false;0;0;0;;; -7439;1;0;false;false;;;;;; -7440;7;0;false;false;0;0;0;;; -7447;1;0;false;false;;;;;; -7448;9;0;false;false;0;0;0;;; -7457;3;0;false;false;;;;;; -7460;5;1;false;false;127;0;85;;; -7465;1;0;false;false;;;;;; -7466;6;1;false;false;127;0;85;;; -7472;1;0;false;false;;;;;; -7473;7;1;false;false;127;0;85;;; -7480;1;0;false;false;;;;;; -7481;14;0;false;false;0;0;0;;; -7495;3;0;false;false;;;;;; -7498;6;1;false;false;127;0;85;;; -7504;1;0;false;false;;;;;; -7505;1;0;false;false;0;0;0;;; -7506;4;0;false;false;;;;;; -7510;6;0;false;false;0;0;0;;; -7516;1;0;false;false;;;;;; -7517;8;0;false;false;0;0;0;;; -7525;1;0;false;false;;;;;; -7526;1;0;false;false;0;0;0;;; -7527;1;0;false;false;;;;;; -7528;18;0;false;false;0;0;0;;; -7546;4;0;false;false;;;;;; -7550;9;0;false;false;0;0;0;;; -7559;1;0;false;false;;;;;; -7560;1;0;false;false;0;0;0;;; -7561;1;0;false;false;;;;;; -7562;8;0;false;false;42;0;255;;; -7570;18;0;false;false;0;0;0;;; -7588;4;0;false;false;;;;;; -7592;6;0;false;false;0;0;0;;; -7598;1;0;false;false;;;;;; -7599;1;0;false;false;0;0;0;;; -7600;1;0;false;false;;;;;; -7601;5;0;false;false;42;0;255;;; -7606;18;0;false;false;0;0;0;;; -7624;4;0;false;false;;;;;; -7628;8;0;false;false;0;0;0;;; -7636;1;0;false;false;;;;;; -7637;1;0;false;false;0;0;0;;; -7638;1;0;false;false;;;;;; -7639;7;0;false;false;42;0;255;;; -7646;18;0;false;false;0;0;0;;; -7664;4;0;false;false;;;;;; -7668;13;0;false;false;0;0;0;;; -7681;1;0;false;false;;;;;; -7682;1;0;false;false;0;0;0;;; -7683;1;0;false;false;;;;;; -7684;11;0;false;false;0;0;0;;; -7695;3;0;false;false;;;;;; -7698;1;0;false;false;0;0;0;;; -7699;5;0;false;false;;;;;; -7704;3;0;false;false;63;95;191;;; -7707;4;0;false;false;;;;;; -7711;1;0;false;false;63;95;191;;; -7712;1;0;false;false;;;;;; -7713;3;0;false;false;63;95;191;;; -7716;1;0;false;false;;;;;; -7717;8;0;false;false;63;95;191;;; -7725;1;0;false;false;;;;;; -7726;5;0;false;false;63;95;191;;; -7731;1;0;false;false;;;;;; -7732;10;0;false;false;63;95;191;;; -7742;1;0;false;false;;;;;; -7743;8;0;false;false;63;95;191;;; -7751;1;0;false;false;;;;;; -7752;2;0;false;false;63;95;191;;; -7754;1;0;false;false;;;;;; -7755;1;0;false;false;63;95;191;;; -7756;1;0;false;false;;;;;; -7757;5;0;false;false;63;95;191;;; -7762;1;0;false;false;;;;;; -7763;2;0;false;false;63;95;191;;; -7765;1;0;false;false;;;;;; -7766;5;0;false;false;63;95;191;;; -7771;4;0;false;false;;;;;; -7775;1;0;false;false;63;95;191;;; -7776;1;0;false;false;;;;;; -7777;2;0;false;false;63;95;191;;; -7779;1;0;false;false;;;;;; -7780;8;0;false;false;63;95;191;;; -7788;1;0;false;false;;;;;; -7789;2;0;false;false;63;95;191;;; -7791;1;0;false;false;;;;;; -7792;7;0;false;false;127;127;159;;; -7799;8;0;false;false;63;95;191;;; -7807;1;0;false;false;;;;;; -7808;8;0;false;false;127;127;159;;; -7816;1;0;false;false;;;;;; -7817;2;0;false;false;63;95;191;;; -7819;1;0;false;false;;;;;; -7820;8;0;false;false;63;95;191;;; -7828;1;0;false;false;;;;;; -7829;2;0;false;false;63;95;191;;; -7831;1;0;false;false;;;;;; -7832;3;0;false;false;63;95;191;;; -7835;5;0;false;false;;;;;; -7840;1;0;false;false;63;95;191;;; -7841;1;0;false;false;;;;;; -7842;25;0;false;false;63;95;191;;; -7867;1;0;false;false;;;;;; -7868;4;0;false;false;63;95;191;;; -7872;1;0;false;false;;;;;; -7873;3;0;false;false;63;95;191;;; -7876;1;0;false;false;;;;;; -7877;5;0;false;false;63;95;191;;; -7882;1;0;false;false;;;;;; -7883;6;0;false;false;63;95;191;;; -7889;1;0;false;false;;;;;; -7890;3;0;false;false;63;95;191;;; -7893;1;0;false;false;;;;;; -7894;2;0;false;false;63;95;191;;; -7896;5;0;false;false;;;;;; -7901;1;0;false;false;63;95;191;;; -7902;1;0;false;false;;;;;; -7903;7;0;false;false;63;95;191;;; -7910;1;0;false;false;;;;;; -7911;4;0;false;false;63;95;191;;; -7915;1;0;false;false;;;;;; -7916;3;0;false;false;63;95;191;;; -7919;1;0;false;false;;;;;; -7920;7;0;false;false;63;95;191;;; -7927;4;0;false;false;;;;;; -7931;2;0;false;false;63;95;191;;; -7933;3;0;false;false;;;;;; -7936;6;1;false;false;127;0;85;;; -7942;1;0;false;false;;;;;; -7943;5;1;false;false;127;0;85;;; -7948;1;0;false;false;;;;;; -7949;8;0;false;false;0;0;0;;; -7957;1;0;false;false;;;;;; -7958;10;1;false;false;127;0;85;;; -7968;1;0;false;false;;;;;; -7969;8;0;false;false;0;0;0;;; -7977;1;0;false;false;;;;;; -7978;1;0;false;false;0;0;0;;; -7979;4;0;false;false;;;;;; -7983;5;1;false;false;127;0;85;;; -7988;1;0;false;false;;;;;; -7989;6;1;false;false;127;0;85;;; -7995;1;0;false;false;;;;;; -7996;3;1;false;false;127;0;85;;; -7999;1;0;false;false;;;;;; -8000;4;0;false;false;0;0;0;;; -8004;1;0;false;false;;;;;; -8005;1;0;false;false;0;0;0;;; -8006;1;0;false;false;;;;;; -8007;2;0;false;false;0;0;0;;; -8009;6;0;false;false;;;;;; -8015;39;0;false;false;63;127;95;;; -8054;2;0;false;false;;;;;; -8056;5;1;false;false;127;0;85;;; -8061;1;0;false;false;;;;;; -8062;6;1;false;false;127;0;85;;; -8068;1;0;false;false;;;;;; -8069;3;1;false;false;127;0;85;;; -8072;1;0;false;false;;;;;; -8073;6;0;false;false;0;0;0;;; -8079;1;0;false;false;;;;;; -8080;1;0;false;false;0;0;0;;; -8081;1;0;false;false;;;;;; -8082;2;0;false;false;0;0;0;;; -8084;5;0;false;false;;;;;; -8089;35;0;false;false;63;127;95;;; -8124;2;0;false;false;;;;;; -8126;5;1;false;false;127;0;85;;; -8131;1;0;false;false;;;;;; -8132;6;1;false;false;127;0;85;;; -8138;1;0;false;false;;;;;; -8139;3;1;false;false;127;0;85;;; -8142;1;0;false;false;;;;;; -8143;5;0;false;false;0;0;0;;; -8148;1;0;false;false;;;;;; -8149;1;0;false;false;0;0;0;;; -8150;1;0;false;false;;;;;; -8151;2;0;false;false;0;0;0;;; -8153;6;0;false;false;;;;;; -8159;40;0;false;false;63;127;95;;; -8199;4;0;false;false;;;;;; -8203;10;0;false;false;0;0;0;;; -8213;1;0;false;false;;;;;; -8214;7;0;false;false;0;0;0;;; -8221;4;0;false;false;;;;;; -8225;7;0;false;false;0;0;0;;; -8232;1;0;false;false;;;;;; -8233;8;0;false;false;0;0;0;;; -8241;4;0;false;false;;;;;; -8245;13;0;false;false;0;0;0;;; -8258;1;0;false;false;;;;;; -8259;9;0;false;false;0;0;0;;; -8268;4;0;false;false;;;;;; -8272;22;0;false;false;0;0;0;;; -8294;1;0;false;false;;;;;; -8295;13;0;false;false;0;0;0;;; -8308;4;0;false;false;;;;;; -8312;17;0;false;false;0;0;0;;; -8329;1;0;false;false;;;;;; -8330;15;0;false;false;0;0;0;;; -8345;4;0;false;false;;;;;; -8349;31;0;false;false;63;127;95;;; -8380;2;0;false;false;;;;;; -8382;9;0;false;false;0;0;0;;; -8391;1;0;false;false;;;;;; -8392;11;0;false;false;0;0;0;;; -8403;7;0;false;false;;;;;; -8410;28;0;false;false;63;127;95;;; -8438;2;0;false;false;;;;;; -8440;4;0;false;false;0;0;0;;; -8444;1;0;false;false;;;;;; -8445;12;0;false;false;0;0;0;;; -8457;4;0;false;false;;;;;; -8461;8;0;false;false;0;0;0;;; -8469;1;0;false;false;;;;;; -8470;16;0;false;false;0;0;0;;; -8486;4;0;false;false;;;;;; -8490;9;0;false;false;0;0;0;;; -8499;1;0;false;false;;;;;; -8500;14;0;false;false;0;0;0;;; -8514;6;0;false;false;;;;;; -8520;55;0;false;false;63;127;95;;; -8575;2;0;false;false;;;;;; -8577;9;0;false;false;0;0;0;;; -8586;1;0;false;false;;;;;; -8587;15;0;false;false;0;0;0;;; -8602;1;0;false;false;;;;;; -8603;1;0;false;false;0;0;0;;; -8604;1;0;false;false;;;;;; -8605;3;1;false;false;127;0;85;;; -8608;1;0;false;false;;;;;; -8609;12;0;false;false;0;0;0;;; -8621;1;0;false;false;;;;;; -8622;28;0;false;false;63;127;95;;; -8650;2;0;false;false;;;;;; -8652;9;0;false;false;0;0;0;;; -8661;1;0;false;false;;;;;; -8662;10;0;false;false;0;0;0;;; -8672;1;0;false;false;;;;;; -8673;1;0;false;false;0;0;0;;; -8674;1;0;false;false;;;;;; -8675;3;1;false;false;127;0;85;;; -8678;1;0;false;false;;;;;; -8679;12;0;false;false;0;0;0;;; -8691;3;0;false;false;;;;;; -8694;23;0;false;false;63;127;95;;; -8717;2;0;false;false;;;;;; -8719;9;0;false;false;0;0;0;;; -8728;1;0;false;false;;;;;; -8729;12;0;false;false;0;0;0;;; -8741;1;0;false;false;;;;;; -8742;1;0;false;false;0;0;0;;; -8743;1;0;false;false;;;;;; -8744;3;1;false;false;127;0;85;;; -8747;1;0;false;false;;;;;; -8748;12;0;false;false;0;0;0;;; -8760;2;0;false;false;;;;;; -8762;57;0;false;false;63;127;95;;; -8819;2;0;false;false;;;;;; -8821;2;0;false;false;0;0;0;;; -8823;1;0;false;false;;;;;; -8824;3;0;false;false;0;0;0;;; -8827;11;0;false;false;;;;;; -8838;15;0;false;false;63;127;95;;; -8853;2;0;false;false;;;;;; -8855;3;1;false;false;127;0;85;;; -8858;1;0;false;false;;;;;; -8859;10;0;false;false;0;0;0;;; -8869;9;0;false;false;;;;;; -8878;38;0;false;false;63;127;95;;; -8916;2;0;false;false;;;;;; -8918;3;1;false;false;127;0;85;;; -8921;1;0;false;false;;;;;; -8922;10;0;false;false;0;0;0;;; -8932;9;0;false;false;;;;;; -8941;24;0;false;false;63;127;95;;; -8965;2;0;false;false;;;;;; -8967;3;1;false;false;127;0;85;;; -8970;1;0;false;false;;;;;; -8971;8;0;false;false;0;0;0;;; -8979;9;0;false;false;;;;;; -8988;23;0;false;false;63;127;95;;; -9011;2;0;false;false;;;;;; -9013;3;1;false;false;127;0;85;;; -9016;1;0;false;false;;;;;; -9017;9;0;false;false;0;0;0;;; -9026;9;0;false;false;;;;;; -9035;30;0;false;false;63;127;95;;; -9065;2;0;false;false;;;;;; -9067;3;1;false;false;127;0;85;;; -9070;1;0;false;false;;;;;; -9071;10;0;false;false;0;0;0;;; -9081;9;0;false;false;;;;;; -9090;34;0;false;false;63;127;95;;; -9124;2;0;false;false;;;;;; -9126;3;1;false;false;127;0;85;;; -9129;1;0;false;false;;;;;; -9130;8;0;false;false;0;0;0;;; -9138;9;0;false;false;;;;;; -9147;33;0;false;false;63;127;95;;; -9180;2;0;false;false;;;;;; -9182;7;1;false;false;127;0;85;;; -9189;1;0;false;false;;;;;; -9190;11;0;false;false;0;0;0;;; -9201;8;0;false;false;;;;;; -9209;28;0;false;false;63;127;95;;; -9237;2;0;false;false;;;;;; -9239;5;0;false;false;0;0;0;;; -9244;1;0;false;false;;;;;; -9245;9;0;false;false;0;0;0;;; -9254;1;0;false;false;;;;;; -9255;1;0;false;false;0;0;0;;; -9256;1;0;false;false;;;;;; -9257;4;1;false;false;127;0;85;;; -9261;1;0;false;false;0;0;0;;; -9262;5;0;false;false;;;;;; -9267;18;0;false;false;63;127;95;;; -9285;2;0;false;false;;;;;; -9287;7;1;false;false;127;0;85;;; -9294;1;0;false;false;;;;;; -9295;9;0;false;false;0;0;0;;; -9304;6;0;false;false;;;;;; -9310;48;0;false;false;63;127;95;;; -9358;3;0;false;false;;;;;; -9361;3;0;false;false;63;95;191;;; -9364;4;0;false;false;;;;;; -9368;1;0;false;false;63;95;191;;; -9369;1;0;false;false;;;;;; -9370;7;0;false;false;63;95;191;;; -9377;1;0;false;false;;;;;; -9378;2;0;false;false;63;95;191;;; -9380;1;0;false;false;;;;;; -9381;8;0;false;false;63;95;191;;; -9389;1;0;false;false;;;;;; -9390;2;0;false;false;63;95;191;;; -9392;1;0;false;false;;;;;; -9393;7;0;false;false;127;127;159;;; -9400;8;0;false;false;63;95;191;;; -9408;8;0;false;false;127;127;159;;; -9416;1;0;false;false;63;95;191;;; -9417;4;0;false;false;;;;;; -9421;1;0;false;false;63;95;191;;; -9422;1;0;false;false;;;;;; -9423;6;0;false;false;63;95;191;;; -9429;1;0;false;false;;;;;; -9430;3;0;false;false;63;95;191;;; -9433;1;0;false;false;;;;;; -9434;6;0;false;false;63;95;191;;; -9440;1;0;false;false;;;;;; -9441;7;0;false;false;63;95;191;;; -9448;1;0;false;false;;;;;; -9449;3;0;false;false;63;95;191;;; -9452;1;0;false;false;;;;;; -9453;9;0;false;false;63;95;191;;; -9462;1;0;false;false;;;;;; -9463;4;0;false;false;63;95;191;;; -9467;1;0;false;false;;;;;; -9468;4;0;false;false;63;95;191;;; -9472;1;0;false;false;;;;;; -9473;5;0;false;false;63;95;191;;; -9478;5;0;false;false;;;;;; -9483;1;0;false;false;63;95;191;;; -9484;1;0;false;false;;;;;; -9485;2;0;false;false;63;95;191;;; -9487;1;0;false;false;;;;;; -9488;2;0;false;false;63;95;191;;; -9490;1;0;false;false;;;;;; -9491;9;0;false;false;63;95;191;;; -9500;1;0;false;false;;;;;; -9501;4;0;false;false;63;95;191;;; -9505;1;0;false;false;;;;;; -9506;10;0;false;false;63;95;191;;; -9516;4;0;false;false;;;;;; -9520;1;0;false;false;63;95;191;;; -9521;1;0;false;false;;;;;; -9522;4;0;false;false;127;127;159;;; -9526;4;0;false;false;;;;;; -9530;1;0;false;false;63;95;191;;; -9531;1;0;false;false;;;;;; -9532;7;1;false;false;127;159;191;;; -9539;6;0;false;false;63;95;191;;; -9545;1;0;false;false;;;;;; -9546;10;0;false;false;63;95;191;;; -9556;1;0;false;false;;;;;; -9557;6;0;false;false;63;95;191;;; -9563;1;0;false;false;;;;;; -9564;2;0;false;false;63;95;191;;; -9566;1;0;false;false;;;;;; -9567;6;0;false;false;63;95;191;;; -9573;4;0;false;false;;;;;; -9577;1;0;false;false;63;95;191;;; -9578;1;0;false;false;;;;;; -9579;7;1;false;false;127;159;191;;; -9586;7;0;false;false;63;95;191;;; -9593;1;0;false;false;;;;;; -9594;7;0;false;false;63;95;191;;; -9601;1;0;false;false;;;;;; -9602;6;0;false;false;63;95;191;;; -9608;1;0;false;false;;;;;; -9609;2;0;false;false;63;95;191;;; -9611;1;0;false;false;;;;;; -9612;5;0;false;false;63;95;191;;; -9617;1;0;false;false;;;;;; -9618;3;0;false;false;63;95;191;;; -9621;4;0;false;false;;;;;; -9625;1;0;false;false;63;95;191;;; -9626;1;0;false;false;;;;;; -9627;7;1;false;false;127;159;191;;; -9634;12;0;false;false;63;95;191;;; -9646;1;0;false;false;;;;;; -9647;5;0;false;false;63;95;191;;; -9652;1;0;false;false;;;;;; -9653;7;0;false;false;63;95;191;;; -9660;4;0;false;false;;;;;; -9664;2;0;false;false;63;95;191;;; -9666;5;0;false;false;;;;;; -9671;19;0;false;false;0;0;0;;; -9690;1;0;false;false;;;;;; -9691;7;0;false;false;0;0;0;;; -9698;1;0;false;false;;;;;; -9699;7;0;false;false;0;0;0;;; -9706;1;0;false;false;;;;;; -9707;8;0;false;false;0;0;0;;; -9715;1;0;false;false;;;;;; -9716;22;0;false;false;0;0;0;;; -9738;1;0;false;false;;;;;; -9739;13;0;false;false;0;0;0;;; -9752;1;0;false;false;;;;;; -9753;1;0;false;false;0;0;0;;; -9754;4;0;false;false;;;;;; -9758;11;0;false;false;0;0;0;;; -9769;1;0;false;false;;;;;; -9770;4;0;false;false;0;0;0;;; -9774;1;0;false;false;;;;;; -9775;1;0;false;false;0;0;0;;; -9776;1;0;false;false;;;;;; -9777;25;0;false;false;0;0;0;;; -9802;6;0;false;false;;;;;; -9808;4;1;false;false;127;0;85;;; -9812;7;0;false;false;0;0;0;;; -9819;1;0;false;false;;;;;; -9820;1;0;false;false;0;0;0;;; -9821;1;0;false;false;;;;;; -9822;7;0;false;false;0;0;0;;; -9829;4;0;false;false;;;;;; -9833;4;1;false;false;127;0;85;;; -9837;8;0;false;false;0;0;0;;; -9845;1;0;false;false;;;;;; -9846;1;0;false;false;0;0;0;;; -9847;1;0;false;false;;;;;; -9848;8;0;false;false;0;0;0;;; -9856;4;0;false;false;;;;;; -9860;4;1;false;false;127;0;85;;; -9864;13;0;false;false;0;0;0;;; -9877;1;0;false;false;;;;;; -9878;1;0;false;false;0;0;0;;; -9879;1;0;false;false;;;;;; -9880;13;0;false;false;0;0;0;;; -9893;4;0;false;false;;;;;; -9897;4;1;false;false;127;0;85;;; -9901;9;0;false;false;0;0;0;;; -9910;1;0;false;false;;;;;; -9911;1;0;false;false;0;0;0;;; -9912;1;0;false;false;;;;;; -9913;18;0;false;false;0;0;0;;; -9931;1;0;false;false;;;;;; -9932;1;0;false;false;0;0;0;;; -9933;1;0;false;false;;;;;; -9934;13;0;false;false;0;0;0;;; -9947;1;0;false;false;;;;;; -9948;2;0;false;false;0;0;0;;; -9950;1;0;false;false;;;;;; -9951;2;0;false;false;0;0;0;;; -9953;4;0;false;false;;;;;; -9957;10;0;false;false;0;0;0;;; -9967;1;0;false;false;;;;;; -9968;1;0;false;false;0;0;0;;; -9969;1;0;false;false;;;;;; -9970;22;0;false;false;0;0;0;;; -9992;4;0;false;false;;;;;; -9996;9;0;false;false;0;0;0;;; -10005;1;0;false;false;;;;;; -10006;1;0;false;false;0;0;0;;; -10007;1;0;false;false;;;;;; -10008;2;0;false;false;0;0;0;;; -10010;4;0;false;false;;;;;; -10014;7;0;false;false;0;0;0;;; -10021;1;0;false;false;;;;;; -10022;1;0;false;false;0;0;0;;; -10023;1;0;false;false;;;;;; -10024;18;0;false;false;0;0;0;;; -10042;4;0;false;false;;;;;; -10046;2;1;false;false;127;0;85;;; -10048;1;0;false;false;;;;;; -10049;11;0;false;false;0;0;0;;; -10060;1;0;false;false;;;;;; -10061;2;0;false;false;0;0;0;;; -10063;1;0;false;false;;;;;; -10064;23;0;false;false;0;0;0;;; -10087;1;0;false;false;;;;;; -10088;1;0;false;false;0;0;0;;; -10089;5;0;false;false;;;;;; -10094;9;0;false;false;0;0;0;;; -10103;1;0;false;false;;;;;; -10104;1;0;false;false;0;0;0;;; -10105;1;0;false;false;;;;;; -10106;15;0;false;false;0;0;0;;; -10121;5;0;false;false;;;;;; -10126;7;0;false;false;0;0;0;;; -10133;1;0;false;false;;;;;; -10134;1;0;false;false;0;0;0;;; -10135;1;0;false;false;;;;;; -10136;13;0;false;false;0;0;0;;; -10149;5;0;false;false;;;;;; -10154;2;1;false;false;127;0;85;;; -10156;1;0;false;false;;;;;; -10157;8;0;false;false;0;0;0;;; -10165;1;0;false;false;;;;;; -10166;1;0;false;false;0;0;0;;; -10167;1;0;false;false;;;;;; -10168;10;0;false;false;0;0;0;;; -10178;1;0;false;false;;;;;; -10179;1;0;false;false;0;0;0;;; -10180;6;0;false;false;;;;;; -10186;3;1;false;false;127;0;85;;; -10189;1;0;false;false;;;;;; -10190;4;0;false;false;0;0;0;;; -10194;1;0;false;false;;;;;; -10195;1;0;false;false;0;0;0;;; -10196;1;0;false;false;;;;;; -10197;8;0;false;false;0;0;0;;; -10205;6;0;false;false;;;;;; -10211;7;0;false;false;0;0;0;;; -10218;1;0;false;false;;;;;; -10219;1;0;false;false;0;0;0;;; -10220;1;0;false;false;;;;;; -10221;10;0;false;false;0;0;0;;; -10231;6;0;false;false;;;;;; -10237;9;0;false;false;0;0;0;;; -10246;1;0;false;false;;;;;; -10247;1;0;false;false;0;0;0;;; -10248;1;0;false;false;;;;;; -10249;5;0;false;false;0;0;0;;; -10254;5;0;false;false;;;;;; -10259;1;0;false;false;0;0;0;;; -10260;7;0;false;false;;;;;; -10267;1;0;false;false;0;0;0;;; -10268;5;0;false;false;;;;;; -10273;4;1;false;false;127;0;85;;; -10277;5;0;false;false;;;;;; -10282;2;1;false;false;127;0;85;;; -10284;1;0;false;false;;;;;; -10285;11;0;false;false;0;0;0;;; -10296;1;0;false;false;;;;;; -10297;2;0;false;false;0;0;0;;; -10299;1;0;false;false;;;;;; -10300;22;0;false;false;0;0;0;;; -10322;1;0;false;false;;;;;; -10323;1;0;false;false;0;0;0;;; -10324;5;0;false;false;;;;;; -10329;9;0;false;false;0;0;0;;; -10338;1;0;false;false;;;;;; -10339;1;0;false;false;0;0;0;;; -10340;1;0;false;false;;;;;; -10341;27;0;false;false;0;0;0;;; -10368;4;0;false;false;;;;;; -10372;1;0;false;false;0;0;0;;; -10373;6;0;false;false;;;;;; -10379;15;0;false;false;0;0;0;;; -10394;1;0;false;false;;;;;; -10395;1;0;false;false;0;0;0;;; -10396;1;0;false;false;;;;;; -10397;34;0;false;false;0;0;0;;; -10431;4;0;false;false;;;;;; -10435;33;0;false;false;0;0;0;;; -10468;4;0;false;false;;;;;; -10472;30;0;false;false;0;0;0;;; -10502;3;0;false;false;;;;;; -10505;1;0;false;false;0;0;0;;; -10506;3;0;false;false;;;;;; -10509;3;0;false;false;63;95;191;;; -10512;4;0;false;false;;;;;; -10516;1;0;false;false;63;95;191;;; -10517;1;0;false;false;;;;;; -10518;6;0;false;false;63;95;191;;; -10524;1;0;false;false;;;;;; -10525;3;0;false;false;63;95;191;;; -10528;1;0;false;false;;;;;; -10529;4;0;false;false;63;95;191;;; -10533;1;0;false;false;;;;;; -10534;8;0;false;false;63;95;191;;; -10542;1;0;false;false;;;;;; -10543;2;0;false;false;63;95;191;;; -10545;1;0;false;false;;;;;; -10546;3;0;false;false;63;95;191;;; -10549;1;0;false;false;;;;;; -10550;5;0;false;false;63;95;191;;; -10555;1;0;false;false;;;;;; -10556;5;0;false;false;63;95;191;;; -10561;4;0;false;false;;;;;; -10565;1;0;false;false;63;95;191;;; -10566;1;0;false;false;;;;;; -10567;4;0;false;false;127;127;159;;; -10571;4;0;false;false;;;;;; -10575;1;0;false;false;63;95;191;;; -10576;1;0;false;false;;;;;; -10577;7;1;false;false;127;159;191;;; -10584;10;0;false;false;63;95;191;;; -10594;1;0;false;false;;;;;; -10595;6;0;false;false;63;95;191;;; -10601;1;0;false;false;;;;;; -10602;2;0;false;false;63;95;191;;; -10604;1;0;false;false;;;;;; -10605;3;0;false;false;63;95;191;;; -10608;1;0;false;false;;;;;; -10609;4;0;false;false;63;95;191;;; -10613;1;0;false;false;;;;;; -10614;2;0;false;false;63;95;191;;; -10616;1;0;false;false;;;;;; -10617;5;0;false;false;63;95;191;;; -10622;1;0;false;false;;;;;; -10623;4;0;false;false;63;95;191;;; -10627;1;0;false;false;;;;;; -10628;8;0;false;false;63;95;191;;; -10636;1;0;false;false;;;;;; -10637;4;0;false;false;63;95;191;;; -10641;5;0;false;false;;;;;; -10646;1;0;false;false;63;95;191;;; -10647;2;0;false;false;;;;;; -10649;8;0;false;false;63;95;191;;; -10657;1;0;false;false;;;;;; -10658;2;0;false;false;63;95;191;;; -10660;1;0;false;false;;;;;; -10661;3;0;false;false;63;95;191;;; -10664;1;0;false;false;;;;;; -10665;5;0;false;false;63;95;191;;; -10670;1;0;false;false;;;;;; -10671;2;0;false;false;63;95;191;;; -10673;1;0;false;false;;;;;; -10674;3;0;false;false;63;95;191;;; -10677;1;0;false;false;;;;;; -10678;9;0;false;false;63;95;191;;; -10687;4;0;false;false;;;;;; -10691;1;0;false;false;63;95;191;;; -10692;1;0;false;false;;;;;; -10693;7;1;false;false;127;159;191;;; -10700;4;0;false;false;63;95;191;;; -10704;1;0;false;false;;;;;; -10705;4;0;false;false;63;95;191;;; -10709;1;0;false;false;;;;;; -10710;2;0;false;false;63;95;191;;; -10712;1;0;false;false;;;;;; -10713;5;0;false;false;63;95;191;;; -10718;1;0;false;false;;;;;; -10719;4;0;false;false;63;95;191;;; -10723;1;0;false;false;;;;;; -10724;8;0;false;false;63;95;191;;; -10732;1;0;false;false;;;;;; -10733;4;0;false;false;63;95;191;;; -10737;5;0;false;false;;;;;; -10742;2;0;false;false;63;95;191;;; -10744;3;0;false;false;;;;;; -10747;4;1;false;false;127;0;85;;; -10751;1;0;false;false;;;;;; -10752;18;0;false;false;0;0;0;;; -10770;3;1;false;false;127;0;85;;; -10773;1;0;false;false;;;;;; -10774;11;0;false;false;0;0;0;;; -10785;1;0;false;false;;;;;; -10786;6;0;false;false;0;0;0;;; -10792;1;0;false;false;;;;;; -10793;5;0;false;false;0;0;0;;; -10798;1;0;false;false;;;;;; -10799;1;0;false;false;0;0;0;;; -10800;4;0;false;false;;;;;; -10804;3;1;false;false;127;0;85;;; -10807;2;0;false;false;0;0;0;;; -10809;1;0;false;false;;;;;; -10810;8;0;false;false;0;0;0;;; -10818;1;0;false;false;;;;;; -10819;1;0;false;false;0;0;0;;; -10820;1;0;false;false;;;;;; -10821;34;0;false;false;0;0;0;;; -10855;1;0;false;false;;;;;; -10856;6;0;false;false;0;0;0;;; -10862;8;0;false;false;;;;;; -10870;2;1;false;false;127;0;85;;; -10872;1;0;false;false;;;;;; -10873;9;0;false;false;0;0;0;;; -10882;1;0;false;false;;;;;; -10883;2;0;false;false;0;0;0;;; -10885;1;0;false;false;;;;;; -10886;4;1;false;false;127;0;85;;; -10890;1;0;false;false;0;0;0;;; -10891;1;0;false;false;;;;;; -10892;1;0;false;false;0;0;0;;; -10893;5;0;false;false;;;;;; -10898;17;0;false;false;0;0;0;;; -10915;3;1;false;false;127;0;85;;; -10918;1;0;false;false;;;;;; -10919;20;0;false;false;0;0;0;;; -10939;1;0;false;false;;;;;; -10940;10;0;false;false;0;0;0;;; -10950;4;0;false;false;;;;;; -10954;1;0;false;false;0;0;0;;; -10955;3;0;false;false;;;;;; -10958;1;0;false;false;0;0;0;;; -10959;3;0;false;false;;;;;; -10962;3;0;false;false;63;95;191;;; -10965;4;0;false;false;;;;;; -10969;1;0;false;false;63;95;191;;; -10970;1;0;false;false;;;;;; -10971;6;0;false;false;63;95;191;;; -10977;1;0;false;false;;;;;; -10978;3;0;false;false;63;95;191;;; -10981;1;0;false;false;;;;;; -10982;4;0;false;false;63;95;191;;; -10986;1;0;false;false;;;;;; -10987;10;0;false;false;63;95;191;;; -10997;1;0;false;false;;;;;; -10998;5;0;false;false;63;95;191;;; -11003;1;0;false;false;;;;;; -11004;2;0;false;false;63;95;191;;; -11006;1;0;false;false;;;;;; -11007;3;0;false;false;63;95;191;;; -11010;1;0;false;false;;;;;; -11011;5;0;false;false;63;95;191;;; -11016;1;0;false;false;;;;;; -11017;5;0;false;false;63;95;191;;; -11022;4;0;false;false;;;;;; -11026;1;0;false;false;63;95;191;;; -11027;1;0;false;false;;;;;; -11028;4;0;false;false;127;127;159;;; -11032;4;0;false;false;;;;;; -11036;1;0;false;false;63;95;191;;; -11037;1;0;false;false;;;;;; -11038;7;1;false;false;127;159;191;;; -11045;10;0;false;false;63;95;191;;; -11055;1;0;false;false;;;;;; -11056;6;0;false;false;63;95;191;;; -11062;1;0;false;false;;;;;; -11063;2;0;false;false;63;95;191;;; -11065;1;0;false;false;;;;;; -11066;3;0;false;false;63;95;191;;; -11069;1;0;false;false;;;;;; -11070;4;0;false;false;63;95;191;;; -11074;1;0;false;false;;;;;; -11075;2;0;false;false;63;95;191;;; -11077;1;0;false;false;;;;;; -11078;5;0;false;false;63;95;191;;; -11083;1;0;false;false;;;;;; -11084;3;0;false;false;63;95;191;;; -11087;1;0;false;false;;;;;; -11088;10;0;false;false;63;95;191;;; -11098;5;0;false;false;;;;;; -11103;1;0;false;false;63;95;191;;; -11104;2;0;false;false;;;;;; -11106;5;0;false;false;63;95;191;;; -11111;1;0;false;false;;;;;; -11112;4;0;false;false;63;95;191;;; -11116;1;0;false;false;;;;;; -11117;8;0;false;false;63;95;191;;; -11125;1;0;false;false;;;;;; -11126;2;0;false;false;63;95;191;;; -11128;1;0;false;false;;;;;; -11129;3;0;false;false;63;95;191;;; -11132;1;0;false;false;;;;;; -11133;5;0;false;false;63;95;191;;; -11138;1;0;false;false;;;;;; -11139;2;0;false;false;63;95;191;;; -11141;1;0;false;false;;;;;; -11142;3;0;false;false;63;95;191;;; -11145;1;0;false;false;;;;;; -11146;9;0;false;false;63;95;191;;; -11155;4;0;false;false;;;;;; -11159;1;0;false;false;63;95;191;;; -11160;1;0;false;false;;;;;; -11161;7;1;false;false;127;159;191;;; -11168;4;0;false;false;63;95;191;;; -11172;1;0;false;false;;;;;; -11173;4;0;false;false;63;95;191;;; -11177;1;0;false;false;;;;;; -11178;2;0;false;false;63;95;191;;; -11180;1;0;false;false;;;;;; -11181;5;0;false;false;63;95;191;;; -11186;1;0;false;false;;;;;; -11187;3;0;false;false;63;95;191;;; -11190;1;0;false;false;;;;;; -11191;10;0;false;false;63;95;191;;; -11201;1;0;false;false;;;;;; -11202;5;0;false;false;63;95;191;;; -11207;1;0;false;false;;;;;; -11208;3;0;false;false;63;95;191;;; -11211;4;0;false;false;;;;;; -11215;2;0;false;false;63;95;191;;; -11217;3;0;false;false;;;;;; -11220;4;1;false;false;127;0;85;;; -11224;1;0;false;false;;;;;; -11225;20;0;false;false;0;0;0;;; -11245;3;1;false;false;127;0;85;;; -11248;1;0;false;false;;;;;; -11249;11;0;false;false;0;0;0;;; -11260;1;0;false;false;;;;;; -11261;6;0;false;false;0;0;0;;; -11267;1;0;false;false;;;;;; -11268;5;0;false;false;0;0;0;;; -11273;1;0;false;false;;;;;; -11274;1;0;false;false;0;0;0;;; -11275;4;0;false;false;;;;;; -11279;15;0;false;false;0;0;0;;; -11294;1;0;false;false;;;;;; -11295;5;0;false;false;0;0;0;;; -11300;1;0;false;false;;;;;; -11301;1;0;false;false;0;0;0;;; -11302;1;0;false;false;;;;;; -11303;40;0;false;false;0;0;0;;; -11343;1;0;false;false;;;;;; -11344;6;0;false;false;0;0;0;;; -11350;8;0;false;false;;;;;; -11358;2;1;false;false;127;0;85;;; -11360;1;0;false;false;;;;;; -11361;6;0;false;false;0;0;0;;; -11367;1;0;false;false;;;;;; -11368;2;0;false;false;0;0;0;;; -11370;1;0;false;false;;;;;; -11371;4;1;false;false;127;0;85;;; -11375;1;0;false;false;0;0;0;;; -11376;1;0;false;false;;;;;; -11377;1;0;false;false;0;0;0;;; -11378;5;0;false;false;;;;;; -11383;20;0;false;false;0;0;0;;; -11403;3;1;false;false;127;0;85;;; -11406;1;0;false;false;;;;;; -11407;20;0;false;false;0;0;0;;; -11427;1;0;false;false;;;;;; -11428;7;0;false;false;0;0;0;;; -11435;4;0;false;false;;;;;; -11439;1;0;false;false;0;0;0;;; -11440;3;0;false;false;;;;;; -11443;1;0;false;false;0;0;0;;; -11444;3;0;false;false;;;;;; -11447;3;0;false;false;63;95;191;;; -11450;4;0;false;false;;;;;; -11454;1;0;false;false;63;95;191;;; -11455;1;0;false;false;;;;;; -11456;6;0;false;false;63;95;191;;; -11462;1;0;false;false;;;;;; -11463;3;0;false;false;63;95;191;;; -11466;1;0;false;false;;;;;; -11467;4;0;false;false;63;95;191;;; -11471;1;0;false;false;;;;;; -11472;4;0;false;false;63;95;191;;; -11476;1;0;false;false;;;;;; -11477;4;0;false;false;63;95;191;;; -11481;1;0;false;false;;;;;; -11482;5;0;false;false;63;95;191;;; -11487;1;0;false;false;;;;;; -11488;2;0;false;false;63;95;191;;; -11490;1;0;false;false;;;;;; -11491;2;0;false;false;63;95;191;;; -11493;1;0;false;false;;;;;; -11494;9;0;false;false;63;95;191;;; -11503;1;0;false;false;;;;;; -11504;4;0;false;false;63;95;191;;; -11508;1;0;false;false;;;;;; -11509;1;0;false;false;63;95;191;;; -11510;1;0;false;false;;;;;; -11511;9;0;false;false;63;95;191;;; -11520;4;0;false;false;;;;;; -11524;1;0;false;false;63;95;191;;; -11525;1;0;false;false;;;;;; -11526;4;0;false;false;127;127;159;;; -11530;4;0;false;false;;;;;; -11534;1;0;false;false;63;95;191;;; -11535;1;0;false;false;;;;;; -11536;7;1;false;false;127;159;191;;; -11543;14;0;false;false;63;95;191;;; -11557;1;0;false;false;;;;;; -11558;7;0;false;false;127;127;159;;; -11565;17;0;false;false;63;95;191;;; -11582;8;0;false;false;127;127;159;;; -11590;1;0;false;false;;;;;; -11591;2;0;false;false;63;95;191;;; -11593;1;0;false;false;;;;;; -11594;7;0;false;false;63;95;191;;; -11601;5;0;false;false;;;;;; -11606;1;0;false;false;63;95;191;;; -11607;2;0;false;false;;;;;; -11609;4;0;false;false;63;95;191;;; -11613;1;0;false;false;;;;;; -11614;4;0;false;false;63;95;191;;; -11618;1;0;false;false;;;;;; -11619;4;0;false;false;63;95;191;;; -11623;4;0;false;false;;;;;; -11627;2;0;false;false;63;95;191;;; -11629;3;0;false;false;;;;;; -11632;4;1;false;false;127;0;85;;; -11636;1;0;false;false;;;;;; -11637;31;0;false;false;0;0;0;;; -11668;1;0;false;false;;;;;; -11669;15;0;false;false;0;0;0;;; -11684;1;0;false;false;;;;;; -11685;1;0;false;false;0;0;0;;; -11686;5;0;false;false;;;;;; -11691;3;1;false;false;127;0;85;;; -11694;1;0;false;false;;;;;; -11695;1;0;false;false;0;0;0;;; -11696;3;1;false;false;127;0;85;;; -11699;1;0;false;false;;;;;; -11700;1;0;false;false;0;0;0;;; -11701;1;0;false;false;;;;;; -11702;1;0;false;false;0;0;0;;; -11703;1;0;false;false;;;;;; -11704;2;0;false;false;0;0;0;;; -11706;1;0;false;false;;;;;; -11707;1;0;false;false;0;0;0;;; -11708;1;0;false;false;;;;;; -11709;1;0;false;false;0;0;0;;; -11710;1;0;false;false;;;;;; -11711;30;0;false;false;0;0;0;;; -11741;1;0;false;false;;;;;; -11742;4;0;false;false;0;0;0;;; -11746;1;0;false;false;;;;;; -11747;1;0;false;false;0;0;0;;; -11748;5;0;false;false;;;;;; -11753;3;1;false;false;127;0;85;;; -11756;1;0;false;false;;;;;; -11757;10;0;false;false;0;0;0;;; -11767;1;0;false;false;;;;;; -11768;1;0;false;false;0;0;0;;; -11769;1;0;false;false;;;;;; -11770;34;0;false;false;0;0;0;;; -11804;5;0;false;false;;;;;; -11809;6;0;false;false;0;0;0;;; -11815;1;0;false;false;;;;;; -11816;4;0;false;false;0;0;0;;; -11820;1;0;false;false;;;;;; -11821;1;0;false;false;0;0;0;;; -11822;1;0;false;false;;;;;; -11823;26;0;false;false;0;0;0;;; -11849;8;0;false;false;;;;;; -11857;2;1;false;false;127;0;85;;; -11859;1;0;false;false;;;;;; -11860;34;0;false;false;0;0;0;;; -11894;1;0;false;false;;;;;; -11895;1;0;false;false;0;0;0;;; -11896;6;0;false;false;;;;;; -11902;31;0;false;false;0;0;0;;; -11933;1;0;false;false;;;;;; -11934;6;0;false;false;0;0;0;;; -11940;5;0;false;false;;;;;; -11945;1;0;false;false;0;0;0;;; -11946;5;0;false;false;;;;;; -11951;2;1;false;false;127;0;85;;; -11953;1;0;false;false;;;;;; -11954;33;0;false;false;0;0;0;;; -11987;1;0;false;false;;;;;; -11988;2;0;false;false;0;0;0;;; -11990;6;0;false;false;;;;;; -11996;32;0;false;false;0;0;0;;; -12028;1;0;false;false;;;;;; -12029;2;0;false;false;0;0;0;;; -12031;6;0;false;false;;;;;; -12037;32;0;false;false;0;0;0;;; -12069;1;0;false;false;;;;;; -12070;1;0;false;false;0;0;0;;; -12071;6;0;false;false;;;;;; -12077;26;0;false;false;0;0;0;;; -12103;1;0;false;false;;;;;; -12104;6;0;false;false;0;0;0;;; -12110;5;0;false;false;;;;;; -12115;1;0;false;false;0;0;0;;; -12116;5;0;false;false;;;;;; -12121;2;1;false;false;127;0;85;;; -12123;1;0;false;false;;;;;; -12124;17;0;false;false;0;0;0;;; -12141;1;0;false;false;;;;;; -12142;1;0;false;false;0;0;0;;; -12143;6;0;false;false;;;;;; -12149;29;0;false;false;0;0;0;;; -12178;1;0;false;false;;;;;; -12179;6;0;false;false;0;0;0;;; -12185;5;0;false;false;;;;;; -12190;1;0;false;false;0;0;0;;; -12191;4;0;false;false;;;;;; -12195;1;0;false;false;0;0;0;;; -12196;3;0;false;false;;;;;; -12199;1;0;false;false;0;0;0;;; -12200;3;0;false;false;;;;;; -12203;3;0;false;false;63;95;191;;; -12206;4;0;false;false;;;;;; -12210;1;0;false;false;63;95;191;;; -12211;1;0;false;false;;;;;; -12212;6;0;false;false;63;95;191;;; -12218;1;0;false;false;;;;;; -12219;3;0;false;false;63;95;191;;; -12222;1;0;false;false;;;;;; -12223;4;0;false;false;63;95;191;;; -12227;1;0;false;false;;;;;; -12228;6;0;false;false;63;95;191;;; -12234;1;0;false;false;;;;;; -12235;2;0;false;false;63;95;191;;; -12237;1;0;false;false;;;;;; -12238;3;0;false;false;63;95;191;;; -12241;1;0;false;false;;;;;; -12242;5;0;false;false;63;95;191;;; -12247;1;0;false;false;;;;;; -12248;5;0;false;false;63;95;191;;; -12253;4;0;false;false;;;;;; -12257;1;0;false;false;63;95;191;;; -12258;1;0;false;false;;;;;; -12259;4;0;false;false;127;127;159;;; -12263;4;0;false;false;;;;;; -12267;1;0;false;false;63;95;191;;; -12268;1;0;false;false;;;;;; -12269;7;1;false;false;127;159;191;;; -12276;10;0;false;false;63;95;191;;; -12286;1;0;false;false;;;;;; -12287;6;0;false;false;63;95;191;;; -12293;1;0;false;false;;;;;; -12294;2;0;false;false;63;95;191;;; -12296;1;0;false;false;;;;;; -12297;3;0;false;false;63;95;191;;; -12300;1;0;false;false;;;;;; -12301;4;0;false;false;63;95;191;;; -12305;1;0;false;false;;;;;; -12306;2;0;false;false;63;95;191;;; -12308;1;0;false;false;;;;;; -12309;5;0;false;false;63;95;191;;; -12314;1;0;false;false;;;;;; -12315;3;0;false;false;63;95;191;;; -12318;1;0;false;false;;;;;; -12319;6;0;false;false;63;95;191;;; -12325;1;0;false;false;;;;;; -12326;4;0;false;false;63;95;191;;; -12330;4;0;false;false;;;;;; -12334;1;0;false;false;63;95;191;;; -12335;2;0;false;false;;;;;; -12337;8;0;false;false;63;95;191;;; -12345;1;0;false;false;;;;;; -12346;2;0;false;false;63;95;191;;; -12348;1;0;false;false;;;;;; -12349;3;0;false;false;63;95;191;;; -12352;1;0;false;false;;;;;; -12353;5;0;false;false;63;95;191;;; -12358;1;0;false;false;;;;;; -12359;2;0;false;false;63;95;191;;; -12361;1;0;false;false;;;;;; -12362;3;0;false;false;63;95;191;;; -12365;1;0;false;false;;;;;; -12366;9;0;false;false;63;95;191;;; -12375;4;0;false;false;;;;;; -12379;1;0;false;false;63;95;191;;; -12380;1;0;false;false;;;;;; -12381;7;1;false;false;127;159;191;;; -12388;4;0;false;false;63;95;191;;; -12392;1;0;false;false;;;;;; -12393;4;0;false;false;63;95;191;;; -12397;1;0;false;false;;;;;; -12398;2;0;false;false;63;95;191;;; -12400;1;0;false;false;;;;;; -12401;5;0;false;false;63;95;191;;; -12406;1;0;false;false;;;;;; -12407;3;0;false;false;63;95;191;;; -12410;1;0;false;false;;;;;; -12411;6;0;false;false;63;95;191;;; -12417;1;0;false;false;;;;;; -12418;4;0;false;false;63;95;191;;; -12422;4;0;false;false;;;;;; -12426;2;0;false;false;63;95;191;;; -12428;3;0;false;false;;;;;; -12431;4;1;false;false;127;0;85;;; -12435;1;0;false;false;;;;;; -12436;15;0;false;false;0;0;0;;; -12451;3;1;false;false;127;0;85;;; -12454;1;0;false;false;;;;;; -12455;11;0;false;false;0;0;0;;; -12466;1;0;false;false;;;;;; -12467;6;0;false;false;0;0;0;;; -12473;1;0;false;false;;;;;; -12474;5;0;false;false;0;0;0;;; -12479;1;0;false;false;;;;;; -12480;1;0;false;false;0;0;0;;; -12481;4;0;false;false;;;;;; -12485;15;0;false;false;0;0;0;;; -12500;1;0;false;false;;;;;; -12501;5;0;false;false;0;0;0;;; -12506;1;0;false;false;;;;;; -12507;1;0;false;false;0;0;0;;; -12508;1;0;false;false;;;;;; -12509;35;0;false;false;0;0;0;;; -12544;1;0;false;false;;;;;; -12545;6;0;false;false;0;0;0;;; -12551;8;0;false;false;;;;;; -12559;2;1;false;false;127;0;85;;; -12561;1;0;false;false;;;;;; -12562;6;0;false;false;0;0;0;;; -12568;1;0;false;false;;;;;; -12569;2;0;false;false;0;0;0;;; -12571;1;0;false;false;;;;;; -12572;4;1;false;false;127;0;85;;; -12576;1;0;false;false;0;0;0;;; -12577;1;0;false;false;;;;;; -12578;1;0;false;false;0;0;0;;; -12579;5;0;false;false;;;;;; -12584;12;0;false;false;0;0;0;;; -12596;1;0;false;false;;;;;; -12597;6;0;false;false;0;0;0;;; -12603;1;0;false;false;;;;;; -12604;1;0;false;false;0;0;0;;; -12605;1;0;false;false;;;;;; -12606;13;0;false;false;0;0;0;;; -12619;5;0;false;false;;;;;; -12624;3;1;false;false;127;0;85;;; -12627;1;0;false;false;;;;;; -12628;1;0;false;false;0;0;0;;; -12629;3;1;false;false;127;0;85;;; -12632;1;0;false;false;;;;;; -12633;1;0;false;false;0;0;0;;; -12634;1;0;false;false;;;;;; -12635;1;0;false;false;0;0;0;;; -12636;1;0;false;false;;;;;; -12637;2;0;false;false;0;0;0;;; -12639;1;0;false;false;;;;;; -12640;1;0;false;false;0;0;0;;; -12641;1;0;false;false;;;;;; -12642;1;0;false;false;0;0;0;;; -12643;1;0;false;false;;;;;; -12644;14;0;false;false;0;0;0;;; -12658;1;0;false;false;;;;;; -12659;4;0;false;false;0;0;0;;; -12663;1;0;false;false;;;;;; -12664;1;0;false;false;0;0;0;;; -12665;6;0;false;false;;;;;; -12671;10;0;false;false;0;0;0;;; -12681;1;0;false;false;;;;;; -12682;9;0;false;false;0;0;0;;; -12691;1;0;false;false;;;;;; -12692;1;0;false;false;0;0;0;;; -12693;1;0;false;false;;;;;; -12694;4;1;false;false;127;0;85;;; -12698;1;0;false;false;0;0;0;;; -12699;6;0;false;false;;;;;; -12705;2;1;false;false;127;0;85;;; -12707;1;0;false;false;;;;;; -12708;34;0;false;false;0;0;0;;; -12742;1;0;false;false;;;;;; -12743;2;0;false;false;0;0;0;;; -12745;1;0;false;false;;;;;; -12746;20;0;false;false;0;0;0;;; -12766;1;0;false;false;;;;;; -12767;2;0;false;false;0;0;0;;; -12769;1;0;false;false;;;;;; -12770;4;1;false;false;127;0;85;;; -12774;1;0;false;false;0;0;0;;; -12775;1;0;false;false;;;;;; -12776;1;0;false;false;0;0;0;;; -12777;7;0;false;false;;;;;; -12784;9;0;false;false;0;0;0;;; -12793;1;0;false;false;;;;;; -12794;1;0;false;false;0;0;0;;; -12795;1;0;false;false;;;;;; -12796;12;0;false;false;0;0;0;;; -12808;1;0;false;false;;;;;; -12809;18;0;false;false;0;0;0;;; -12827;7;0;false;false;;;;;; -12834;20;0;false;false;0;0;0;;; -12854;1;0;false;false;;;;;; -12855;1;0;false;false;0;0;0;;; -12856;1;0;false;false;;;;;; -12857;4;1;false;false;127;0;85;;; -12861;1;0;false;false;0;0;0;;; -12862;6;0;false;false;;;;;; -12868;1;0;false;false;0;0;0;;; -12869;6;0;false;false;;;;;; -12875;2;1;false;false;127;0;85;;; -12877;1;0;false;false;;;;;; -12878;34;0;false;false;0;0;0;;; -12912;1;0;false;false;;;;;; -12913;2;0;false;false;0;0;0;;; -12915;1;0;false;false;;;;;; -12916;20;0;false;false;0;0;0;;; -12936;1;0;false;false;;;;;; -12937;2;0;false;false;0;0;0;;; -12939;1;0;false;false;;;;;; -12940;4;1;false;false;127;0;85;;; -12944;1;0;false;false;0;0;0;;; -12945;1;0;false;false;;;;;; -12946;1;0;false;false;0;0;0;;; -12947;7;0;false;false;;;;;; -12954;2;1;false;false;127;0;85;;; -12956;1;0;false;false;;;;;; -12957;10;0;false;false;0;0;0;;; -12967;1;0;false;false;;;;;; -12968;2;0;false;false;0;0;0;;; -12970;1;0;false;false;;;;;; -12971;4;1;false;false;127;0;85;;; -12975;1;0;false;false;0;0;0;;; -12976;1;0;false;false;;;;;; -12977;1;0;false;false;0;0;0;;; -12978;8;0;false;false;;;;;; -12986;9;0;false;false;0;0;0;;; -12995;1;0;false;false;;;;;; -12996;1;0;false;false;0;0;0;;; -12997;1;0;false;false;;;;;; -12998;12;0;false;false;0;0;0;;; -13010;1;0;false;false;;;;;; -13011;18;0;false;false;0;0;0;;; -13029;7;0;false;false;;;;;; -13036;1;0;false;false;0;0;0;;; -13037;7;0;false;false;;;;;; -13044;20;0;false;false;0;0;0;;; -13064;1;0;false;false;;;;;; -13065;1;0;false;false;0;0;0;;; -13066;1;0;false;false;;;;;; -13067;4;1;false;false;127;0;85;;; -13071;1;0;false;false;0;0;0;;; -13072;6;0;false;false;;;;;; -13078;1;0;false;false;0;0;0;;; -13079;6;0;false;false;;;;;; -13085;2;1;false;false;127;0;85;;; -13087;1;0;false;false;;;;;; -13088;33;0;false;false;0;0;0;;; -13121;1;0;false;false;;;;;; -13122;2;0;false;false;0;0;0;;; -13124;1;0;false;false;;;;;; -13125;19;0;false;false;0;0;0;;; -13144;1;0;false;false;;;;;; -13145;2;0;false;false;0;0;0;;; -13147;1;0;false;false;;;;;; -13148;11;0;false;false;0;0;0;;; -13159;1;0;false;false;;;;;; -13160;1;0;false;false;0;0;0;;; -13161;7;0;false;false;;;;;; -13168;2;1;false;false;127;0;85;;; -13170;1;0;false;false;;;;;; -13171;10;0;false;false;0;0;0;;; -13181;1;0;false;false;;;;;; -13182;2;0;false;false;0;0;0;;; -13184;1;0;false;false;;;;;; -13185;4;1;false;false;127;0;85;;; -13189;1;0;false;false;0;0;0;;; -13190;1;0;false;false;;;;;; -13191;1;0;false;false;0;0;0;;; -13192;8;0;false;false;;;;;; -13200;9;0;false;false;0;0;0;;; -13209;1;0;false;false;;;;;; -13210;1;0;false;false;0;0;0;;; -13211;1;0;false;false;;;;;; -13212;12;0;false;false;0;0;0;;; -13224;1;0;false;false;;;;;; -13225;18;0;false;false;0;0;0;;; -13243;7;0;false;false;;;;;; -13250;1;0;false;false;0;0;0;;; -13251;7;0;false;false;;;;;; -13258;19;0;false;false;0;0;0;;; -13277;1;0;false;false;;;;;; -13278;1;0;false;false;0;0;0;;; -13279;1;0;false;false;;;;;; -13280;11;0;false;false;0;0;0;;; -13291;6;0;false;false;;;;;; -13297;1;0;false;false;0;0;0;;; -13298;6;0;false;false;;;;;; -13304;2;1;false;false;127;0;85;;; -13306;1;0;false;false;;;;;; -13307;10;0;false;false;0;0;0;;; -13317;1;0;false;false;;;;;; -13318;2;0;false;false;0;0;0;;; -13320;1;0;false;false;;;;;; -13321;4;1;false;false;127;0;85;;; -13325;1;0;false;false;0;0;0;;; -13326;1;0;false;false;;;;;; -13327;1;0;false;false;0;0;0;;; -13328;7;0;false;false;;;;;; -13335;9;0;false;false;0;0;0;;; -13344;1;0;false;false;;;;;; -13345;1;0;false;false;0;0;0;;; -13346;1;0;false;false;;;;;; -13347;10;0;false;false;0;0;0;;; -13357;6;0;false;false;;;;;; -13363;1;0;false;false;0;0;0;;; -13364;5;0;false;false;;;;;; -13369;1;0;false;false;0;0;0;;; -13370;6;0;false;false;;;;;; -13376;15;0;false;false;0;0;0;;; -13391;3;1;false;false;127;0;85;;; -13394;1;0;false;false;;;;;; -13395;20;0;false;false;0;0;0;;; -13415;1;0;false;false;;;;;; -13416;7;0;false;false;0;0;0;;; -13423;4;0;false;false;;;;;; -13427;1;0;false;false;0;0;0;;; -13428;3;0;false;false;;;;;; -13431;1;0;false;false;0;0;0;;; -13432;3;0;false;false;;;;;; -13435;3;0;false;false;63;95;191;;; -13438;4;0;false;false;;;;;; -13442;1;0;false;false;63;95;191;;; -13443;1;0;false;false;;;;;; -13444;6;0;false;false;63;95;191;;; -13450;1;0;false;false;;;;;; -13451;3;0;false;false;63;95;191;;; -13454;1;0;false;false;;;;;; -13455;4;0;false;false;63;95;191;;; -13459;1;0;false;false;;;;;; -13460;2;0;false;false;63;95;191;;; -13462;1;0;false;false;;;;;; -13463;3;0;false;false;63;95;191;;; -13466;1;0;false;false;;;;;; -13467;9;0;false;false;63;95;191;;; -13476;1;0;false;false;;;;;; -13477;7;0;false;false;127;127;159;;; -13484;17;0;false;false;63;95;191;;; -13501;8;0;false;false;127;127;159;;; -13509;1;0;false;false;63;95;191;;; -13510;4;0;false;false;;;;;; -13514;1;0;false;false;63;95;191;;; -13515;1;0;false;false;;;;;; -13516;4;0;false;false;127;127;159;;; -13520;4;0;false;false;;;;;; -13524;1;0;false;false;63;95;191;;; -13525;1;0;false;false;;;;;; -13526;7;1;false;false;127;159;191;;; -13533;8;0;false;false;63;95;191;;; -13541;1;0;false;false;;;;;; -13542;3;0;false;false;63;95;191;;; -13545;1;0;false;false;;;;;; -13546;7;0;false;false;127;127;159;;; -13553;17;0;false;false;63;95;191;;; -13570;8;0;false;false;127;127;159;;; -13578;1;0;false;false;;;;;; -13579;2;0;false;false;63;95;191;;; -13581;1;0;false;false;;;;;; -13582;5;0;false;false;63;95;191;;; -13587;4;0;false;false;;;;;; -13591;2;0;false;false;63;95;191;;; -13593;3;0;false;false;;;;;; -13596;4;1;false;false;127;0;85;;; -13600;1;0;false;false;;;;;; -13601;29;0;false;false;0;0;0;;; -13630;1;0;false;false;;;;;; -13631;9;0;false;false;0;0;0;;; -13640;1;0;false;false;;;;;; -13641;1;0;false;false;0;0;0;;; -13642;4;0;false;false;;;;;; -13646;3;1;false;false;127;0;85;;; -13649;1;0;false;false;;;;;; -13650;12;0;false;false;0;0;0;;; -13662;1;0;false;false;;;;;; -13663;1;0;false;false;0;0;0;;; -13664;1;0;false;false;;;;;; -13665;2;0;false;false;0;0;0;;; -13667;8;0;false;false;;;;;; -13675;14;0;false;false;0;0;0;;; -13689;1;0;false;false;;;;;; -13690;1;0;false;false;0;0;0;;; -13691;1;0;false;false;;;;;; -13692;3;1;false;false;127;0;85;;; -13695;1;0;false;false;;;;;; -13696;17;0;false;false;0;0;0;;; -13713;4;0;false;false;;;;;; -13717;3;1;false;false;127;0;85;;; -13720;1;0;false;false;;;;;; -13721;1;0;false;false;0;0;0;;; -13722;3;1;false;false;127;0;85;;; -13725;1;0;false;false;;;;;; -13726;1;0;false;false;0;0;0;;; -13727;1;0;false;false;;;;;; -13728;1;0;false;false;0;0;0;;; -13729;1;0;false;false;;;;;; -13730;2;0;false;false;0;0;0;;; -13732;1;0;false;false;;;;;; -13733;1;0;false;false;0;0;0;;; -13734;1;0;false;false;;;;;; -13735;1;0;false;false;0;0;0;;; -13736;1;0;false;false;;;;;; -13737;24;0;false;false;0;0;0;;; -13761;1;0;false;false;;;;;; -13762;4;0;false;false;0;0;0;;; -13766;1;0;false;false;;;;;; -13767;1;0;false;false;0;0;0;;; -13768;5;0;false;false;;;;;; -13773;3;1;false;false;127;0;85;;; -13776;1;0;false;false;;;;;; -13777;16;0;false;false;0;0;0;;; -13793;5;0;false;false;;;;;; -13798;2;1;false;false;127;0;85;;; -13800;1;0;false;false;;;;;; -13801;2;0;false;false;0;0;0;;; -13803;1;0;false;false;;;;;; -13804;1;0;false;false;0;0;0;;; -13805;1;0;false;false;;;;;; -13806;23;0;false;false;0;0;0;;; -13829;1;0;false;false;;;;;; -13830;1;0;false;false;0;0;0;;; -13831;1;0;false;false;;;;;; -13832;2;0;false;false;0;0;0;;; -13834;1;0;false;false;;;;;; -13835;1;0;false;false;0;0;0;;; -13836;6;0;false;false;;;;;; -13842;15;0;false;false;0;0;0;;; -13857;1;0;false;false;;;;;; -13858;1;0;false;false;0;0;0;;; -13859;1;0;false;false;;;;;; -13860;26;0;false;false;0;0;0;;; -13886;1;0;false;false;;;;;; -13887;1;0;false;false;0;0;0;;; -13888;1;0;false;false;;;;;; -13889;3;0;false;false;0;0;0;;; -13892;5;0;false;false;;;;;; -13897;1;0;false;false;0;0;0;;; -13898;5;0;false;false;;;;;; -13903;4;1;false;false;127;0;85;;; -13907;1;0;false;false;;;;;; -13908;1;0;false;false;0;0;0;;; -13909;6;0;false;false;;;;;; -13915;15;0;false;false;0;0;0;;; -13930;1;0;false;false;;;;;; -13931;1;0;false;false;0;0;0;;; -13932;1;0;false;false;;;;;; -13933;24;0;false;false;0;0;0;;; -13957;5;0;false;false;;;;;; -13962;1;0;false;false;0;0;0;;; -13963;5;0;false;false;;;;;; -13968;45;0;false;false;0;0;0;;; -14013;1;0;false;false;;;;;; -14014;2;0;false;false;0;0;0;;; -14016;1;0;false;false;;;;;; -14017;35;0;false;false;0;0;0;;; -14052;1;0;false;false;;;;;; -14053;15;0;false;false;0;0;0;;; -14068;1;0;false;false;;;;;; -14069;1;0;false;false;0;0;0;;; -14070;1;0;false;false;;;;;; -14071;15;0;false;false;0;0;0;;; -14086;5;0;false;false;;;;;; -14091;12;0;false;false;0;0;0;;; -14103;1;0;false;false;;;;;; -14104;1;0;false;false;0;0;0;;; -14105;1;0;false;false;;;;;; -14106;16;0;false;false;0;0;0;;; -14122;4;0;false;false;;;;;; -14126;1;0;false;false;0;0;0;;; -14127;3;0;false;false;;;;;; -14130;1;0;false;false;0;0;0;;; -14131;3;0;false;false;;;;;; -14134;3;0;false;false;63;95;191;;; -14137;4;0;false;false;;;;;; -14141;1;0;false;false;63;95;191;;; -14142;1;0;false;false;;;;;; -14143;8;0;false;false;63;95;191;;; -14151;1;0;false;false;;;;;; -14152;3;0;false;false;63;95;191;;; -14155;1;0;false;false;;;;;; -14156;7;0;false;false;63;95;191;;; -14163;1;0;false;false;;;;;; -14164;6;0;false;false;63;95;191;;; -14170;1;0;false;false;;;;;; -14171;2;0;false;false;63;95;191;;; -14173;1;0;false;false;;;;;; -14174;3;0;false;false;63;95;191;;; -14177;1;0;false;false;;;;;; -14178;6;0;false;false;63;95;191;;; -14184;1;0;false;false;;;;;; -14185;4;0;false;false;63;95;191;;; -14189;1;0;false;false;;;;;; -14190;11;0;false;false;63;95;191;;; -14201;1;0;false;false;;;;;; -14202;3;0;false;false;63;95;191;;; -14205;5;0;false;false;;;;;; -14210;1;0;false;false;63;95;191;;; -14211;1;0;false;false;;;;;; -14212;4;0;false;false;63;95;191;;; -14216;1;0;false;false;;;;;; -14217;6;0;false;false;63;95;191;;; -14223;1;0;false;false;;;;;; -14224;4;0;false;false;63;95;191;;; -14228;1;0;false;false;;;;;; -14229;7;0;false;false;63;95;191;;; -14236;1;0;false;false;;;;;; -14237;7;0;false;false;63;95;191;;; -14244;4;0;false;false;;;;;; -14248;2;0;false;false;63;95;191;;; -14250;3;0;false;false;;;;;; -14253;4;1;false;false;127;0;85;;; -14257;1;0;false;false;;;;;; -14258;21;0;false;false;0;0;0;;; -14279;1;0;false;false;;;;;; -14280;1;0;false;false;0;0;0;;; -14281;4;0;false;false;;;;;; -14285;11;0;false;false;0;0;0;;; -14296;1;0;false;false;;;;;; -14297;6;0;false;false;0;0;0;;; -14303;1;0;false;false;;;;;; -14304;1;0;false;false;0;0;0;;; -14305;1;0;false;false;;;;;; -14306;27;0;false;false;0;0;0;;; -14333;4;0;false;false;;;;;; -14337;13;0;false;false;0;0;0;;; -14350;1;0;false;false;;;;;; -14351;1;0;false;false;0;0;0;;; -14352;1;0;false;false;;;;;; -14353;3;1;false;false;127;0;85;;; -14356;1;0;false;false;;;;;; -14357;12;0;false;false;0;0;0;;; -14369;4;0;false;false;;;;;; -14373;5;1;false;false;127;0;85;;; -14378;1;0;false;false;;;;;; -14379;26;0;false;false;0;0;0;;; -14405;1;0;false;false;;;;;; -14406;1;0;false;false;0;0;0;;; -14407;5;0;false;false;;;;;; -14412;15;0;false;false;0;0;0;;; -14427;1;0;false;false;;;;;; -14428;5;0;false;false;0;0;0;;; -14433;1;0;false;false;;;;;; -14434;1;0;false;false;0;0;0;;; -14435;1;0;false;false;;;;;; -14436;17;0;false;false;0;0;0;;; -14453;1;0;false;false;;;;;; -14454;21;0;false;false;0;0;0;;; -14475;5;0;false;false;;;;;; -14480;20;0;false;false;0;0;0;;; -14500;1;0;false;false;;;;;; -14501;1;0;false;false;0;0;0;;; -14502;1;0;false;false;;;;;; -14503;38;0;false;false;0;0;0;;; -14541;4;0;false;false;;;;;; -14545;1;0;false;false;0;0;0;;; -14546;8;0;false;false;;;;;; -14554;6;0;false;false;0;0;0;;; -14560;1;0;false;false;;;;;; -14561;1;0;false;false;0;0;0;;; -14562;1;0;false;false;;;;;; -14563;22;0;false;false;0;0;0;;; -14585;4;0;false;false;;;;;; -14589;5;1;false;false;127;0;85;;; -14594;1;0;false;false;;;;;; -14595;26;0;false;false;0;0;0;;; -14621;1;0;false;false;;;;;; -14622;1;0;false;false;0;0;0;;; -14623;5;0;false;false;;;;;; -14628;15;0;false;false;0;0;0;;; -14643;1;0;false;false;;;;;; -14644;5;0;false;false;0;0;0;;; -14649;1;0;false;false;;;;;; -14650;1;0;false;false;0;0;0;;; -14651;1;0;false;false;;;;;; -14652;17;0;false;false;0;0;0;;; -14669;1;0;false;false;;;;;; -14670;21;0;false;false;0;0;0;;; -14691;5;0;false;false;;;;;; -14696;3;1;false;false;127;0;85;;; -14699;1;0;false;false;;;;;; -14700;1;0;false;false;0;0;0;;; -14701;3;1;false;false;127;0;85;;; -14704;1;0;false;false;;;;;; -14705;1;0;false;false;0;0;0;;; -14706;1;0;false;false;;;;;; -14707;1;0;false;false;0;0;0;;; -14708;1;0;false;false;;;;;; -14709;2;0;false;false;0;0;0;;; -14711;1;0;false;false;;;;;; -14712;1;0;false;false;0;0;0;;; -14713;1;0;false;false;;;;;; -14714;1;0;false;false;0;0;0;;; -14715;1;0;false;false;;;;;; -14716;20;0;false;false;0;0;0;;; -14736;1;0;false;false;;;;;; -14737;4;0;false;false;0;0;0;;; -14741;1;0;false;false;;;;;; -14742;1;0;false;false;0;0;0;;; -14743;6;0;false;false;;;;;; -14749;10;0;false;false;0;0;0;;; -14759;1;0;false;false;;;;;; -14760;5;0;false;false;0;0;0;;; -14765;1;0;false;false;;;;;; -14766;1;0;false;false;0;0;0;;; -14767;1;0;false;false;;;;;; -14768;16;0;false;false;0;0;0;;; -14784;6;0;false;false;;;;;; -14790;5;0;false;false;0;0;0;;; -14795;1;0;false;false;;;;;; -14796;17;0;false;false;0;0;0;;; -14813;1;0;false;false;;;;;; -14814;1;0;false;false;0;0;0;;; -14815;1;0;false;false;;;;;; -14816;34;0;false;false;0;0;0;;; -14850;6;0;false;false;;;;;; -14856;5;0;false;false;0;0;0;;; -14861;1;0;false;false;;;;;; -14862;17;0;false;false;0;0;0;;; -14879;1;0;false;false;;;;;; -14880;1;0;false;false;0;0;0;;; -14881;1;0;false;false;;;;;; -14882;34;0;false;false;0;0;0;;; -14916;12;0;false;false;;;;;; -14928;2;1;false;false;127;0;85;;; -14930;1;0;false;false;;;;;; -14931;18;0;false;false;0;0;0;;; -14949;1;0;false;false;;;;;; -14950;2;0;false;false;0;0;0;;; -14952;1;0;false;false;;;;;; -14953;16;0;false;false;0;0;0;;; -14969;1;0;false;false;;;;;; -14970;2;0;false;false;0;0;0;;; -14972;8;0;false;false;;;;;; -14980;17;0;false;false;0;0;0;;; -14997;1;0;false;false;;;;;; -14998;2;0;false;false;0;0;0;;; -15000;1;0;false;false;;;;;; -15001;17;0;false;false;0;0;0;;; -15018;1;0;false;false;;;;;; -15019;1;0;false;false;0;0;0;;; -15020;7;0;false;false;;;;;; -15027;5;0;false;false;0;0;0;;; -15032;1;0;false;false;;;;;; -15033;1;0;false;false;0;0;0;;; -15034;1;0;false;false;;;;;; -15035;12;0;false;false;0;0;0;;; -15047;1;0;false;false;;;;;; -15048;14;0;false;false;0;0;0;;; -15062;7;0;false;false;;;;;; -15069;16;0;false;false;0;0;0;;; -15085;1;0;false;false;;;;;; -15086;1;0;false;false;0;0;0;;; -15087;1;0;false;false;;;;;; -15088;18;0;false;false;0;0;0;;; -15106;7;0;false;false;;;;;; -15113;16;0;false;false;0;0;0;;; -15129;1;0;false;false;;;;;; -15130;1;0;false;false;0;0;0;;; -15131;1;0;false;false;;;;;; -15132;18;0;false;false;0;0;0;;; -15150;7;0;false;false;;;;;; -15157;15;0;false;false;0;0;0;;; -15172;1;0;false;false;;;;;; -15173;1;0;false;false;0;0;0;;; -15174;1;0;false;false;;;;;; -15175;6;0;false;false;0;0;0;;; -15181;6;0;false;false;;;;;; -15187;1;0;false;false;0;0;0;;; -15188;5;0;false;false;;;;;; -15193;1;0;false;false;0;0;0;;; -15194;4;0;false;false;;;;;; -15198;1;0;false;false;0;0;0;;; -15199;5;0;false;false;;;;;; -15204;1;0;false;false;0;0;0;;; -15205;3;0;false;false;;;;;; -15208;3;0;false;false;63;95;191;;; -15211;4;0;false;false;;;;;; -15215;1;0;false;false;63;95;191;;; -15216;1;0;false;false;;;;;; -15217;8;0;false;false;63;95;191;;; -15225;1;0;false;false;;;;;; -15226;2;0;false;false;63;95;191;;; -15228;1;0;false;false;;;;;; -15229;3;0;false;false;63;95;191;;; -15232;1;0;false;false;;;;;; -15233;9;0;false;false;63;95;191;;; -15242;1;0;false;false;;;;;; -15243;3;0;false;false;63;95;191;;; -15246;1;0;false;false;;;;;; -15247;3;0;false;false;63;95;191;;; -15250;1;0;false;false;;;;;; -15251;7;0;false;false;127;127;159;;; -15258;13;0;false;false;63;95;191;;; -15271;8;0;false;false;127;127;159;;; -15279;1;0;false;false;63;95;191;;; -15280;4;0;false;false;;;;;; -15284;2;0;false;false;63;95;191;;; -15286;3;0;false;false;;;;;; -15289;4;1;false;false;127;0;85;;; -15293;1;0;false;false;;;;;; -15294;9;0;false;false;0;0;0;;; -15303;1;0;false;false;;;;;; -15304;1;0;false;false;0;0;0;;; -15305;4;0;false;false;;;;;; -15309;2;1;false;false;127;0;85;;; -15311;1;0;false;false;;;;;; -15312;14;0;false;false;0;0;0;;; -15326;1;0;false;false;;;;;; -15327;2;0;false;false;0;0;0;;; -15329;1;0;false;false;;;;;; -15330;4;1;false;false;127;0;85;;; -15334;1;0;false;false;0;0;0;;; -15335;1;0;false;false;;;;;; -15336;1;0;false;false;0;0;0;;; -15337;5;0;false;false;;;;;; -15342;11;0;false;false;0;0;0;;; -15353;1;0;false;false;;;;;; -15354;6;0;false;false;0;0;0;;; -15360;1;0;false;false;;;;;; -15361;1;0;false;false;0;0;0;;; -15362;1;0;false;false;;;;;; -15363;25;0;false;false;0;0;0;;; -15388;10;0;false;false;;;;;; -15398;5;1;false;false;127;0;85;;; -15403;1;0;false;false;;;;;; -15404;26;0;false;false;0;0;0;;; -15430;1;0;false;false;;;;;; -15431;1;0;false;false;0;0;0;;; -15432;6;0;false;false;;;;;; -15438;5;0;false;false;0;0;0;;; -15443;1;0;false;false;;;;;; -15444;5;0;false;false;0;0;0;;; -15449;1;0;false;false;;;;;; -15450;1;0;false;false;0;0;0;;; -15451;1;0;false;false;;;;;; -15452;7;0;false;false;0;0;0;;; -15459;1;0;false;false;;;;;; -15460;21;0;false;false;0;0;0;;; -15481;6;0;false;false;;;;;; -15487;16;0;false;false;0;0;0;;; -15503;5;0;false;false;;;;;; -15508;1;0;false;false;0;0;0;;; -15509;5;0;false;false;;;;;; -15514;13;0;false;false;0;0;0;;; -15527;1;0;false;false;;;;;; -15528;1;0;false;false;0;0;0;;; -15529;1;0;false;false;;;;;; -15530;4;1;false;false;127;0;85;;; -15534;1;0;false;false;0;0;0;;; -15535;4;0;false;false;;;;;; -15539;1;0;false;false;0;0;0;;; -15540;4;0;false;false;;;;;; -15544;2;1;false;false;127;0;85;;; -15546;1;0;false;false;;;;;; -15547;3;0;false;false;0;0;0;;; -15550;1;0;false;false;;;;;; -15551;2;0;false;false;0;0;0;;; -15553;1;0;false;false;;;;;; -15554;4;1;false;false;127;0;85;;; -15558;1;0;false;false;0;0;0;;; -15559;1;0;false;false;;;;;; -15560;1;0;false;false;0;0;0;;; -15561;5;0;false;false;;;;;; -15566;13;0;false;false;0;0;0;;; -15579;5;0;false;false;;;;;; -15584;2;0;false;false;0;0;0;;; -15586;1;0;false;false;;;;;; -15587;1;0;false;false;0;0;0;;; -15588;1;0;false;false;;;;;; -15589;4;1;false;false;127;0;85;;; -15593;1;0;false;false;0;0;0;;; -15594;4;0;false;false;;;;;; -15598;1;0;false;false;0;0;0;;; -15599;4;0;false;false;;;;;; -15603;2;1;false;false;127;0;85;;; -15605;1;0;false;false;;;;;; -15606;12;0;false;false;0;0;0;;; -15618;1;0;false;false;;;;;; -15619;2;0;false;false;0;0;0;;; -15621;1;0;false;false;;;;;; -15622;4;1;false;false;127;0;85;;; -15626;1;0;false;false;0;0;0;;; -15627;1;0;false;false;;;;;; -15628;1;0;false;false;0;0;0;;; -15629;5;0;false;false;;;;;; -15634;22;0;false;false;0;0;0;;; -15656;5;0;false;false;;;;;; -15661;11;0;false;false;0;0;0;;; -15672;1;0;false;false;;;;;; -15673;1;0;false;false;0;0;0;;; -15674;1;0;false;false;;;;;; -15675;4;1;false;false;127;0;85;;; -15679;1;0;false;false;0;0;0;;; -15680;4;0;false;false;;;;;; -15684;1;0;false;false;0;0;0;;; -15685;4;0;false;false;;;;;; -15689;2;1;false;false;127;0;85;;; -15691;1;0;false;false;;;;;; -15692;9;0;false;false;0;0;0;;; -15701;1;0;false;false;;;;;; -15702;2;0;false;false;0;0;0;;; -15704;1;0;false;false;;;;;; -15705;4;1;false;false;127;0;85;;; -15709;1;0;false;false;0;0;0;;; -15710;1;0;false;false;;;;;; -15711;1;0;false;false;0;0;0;;; -15712;5;0;false;false;;;;;; -15717;19;0;false;false;0;0;0;;; -15736;5;0;false;false;;;;;; -15741;8;0;false;false;0;0;0;;; -15749;1;0;false;false;;;;;; -15750;1;0;false;false;0;0;0;;; -15751;1;0;false;false;;;;;; -15752;4;1;false;false;127;0;85;;; -15756;1;0;false;false;0;0;0;;; -15757;4;0;false;false;;;;;; -15761;1;0;false;false;0;0;0;;; -15762;3;0;false;false;;;;;; -15765;1;0;false;false;0;0;0;;; -15766;3;0;false;false;;;;;; -15769;3;0;false;false;63;95;191;;; -15772;4;0;false;false;;;;;; -15776;1;0;false;false;63;95;191;;; -15777;1;0;false;false;;;;;; -15778;6;0;false;false;63;95;191;;; -15784;1;0;false;false;;;;;; -15785;8;0;false;false;63;95;191;;; -15793;1;0;false;false;;;;;; -15794;3;0;false;false;63;95;191;;; -15797;1;0;false;false;;;;;; -15798;9;0;false;false;63;95;191;;; -15807;1;0;false;false;;;;;; -15808;5;0;false;false;63;95;191;;; -15813;4;0;false;false;;;;;; -15817;1;0;false;false;63;95;191;;; -15818;5;0;false;false;;;;;; -15823;1;0;false;false;63;95;191;;; -15824;1;0;false;false;;;;;; -15825;7;1;false;false;127;159;191;;; -15832;4;0;false;false;63;95;191;;; -15836;1;0;false;false;;;;;; -15837;4;0;false;false;63;95;191;;; -15841;1;0;false;false;;;;;; -15842;4;0;false;false;63;95;191;;; -15846;1;0;false;false;;;;;; -15847;3;0;false;false;63;95;191;;; -15850;1;0;false;false;;;;;; -15851;7;0;false;false;63;95;191;;; -15858;4;0;false;false;;;;;; -15862;2;0;false;false;63;95;191;;; -15864;3;0;false;false;;;;;; -15867;4;1;false;false;127;0;85;;; -15871;1;0;false;false;;;;;; -15872;8;0;false;false;0;0;0;;; -15880;3;1;false;false;127;0;85;;; -15883;1;0;false;false;;;;;; -15884;5;0;false;false;0;0;0;;; -15889;1;0;false;false;;;;;; -15890;1;0;false;false;0;0;0;;; -15891;4;0;false;false;;;;;; -15895;21;0;false;false;0;0;0;;; -15916;1;0;false;false;;;;;; -15917;5;1;false;false;127;0;85;;; -15922;2;0;false;false;0;0;0;;; -15924;4;0;false;false;;;;;; -15928;18;0;false;false;0;0;0;;; -15946;3;0;false;false;;;;;; -15949;1;0;false;false;0;0;0;;; -15950;3;0;false;false;;;;;; -15953;3;0;false;false;63;95;191;;; -15956;4;0;false;false;;;;;; -15960;1;0;false;false;63;95;191;;; -15961;1;0;false;false;;;;;; -15962;7;0;false;false;63;95;191;;; -15969;1;0;false;false;;;;;; -15970;1;0;false;false;63;95;191;;; -15971;1;0;false;false;;;;;; -15972;7;0;false;false;127;127;159;;; -15979;13;0;false;false;63;95;191;;; -15992;8;0;false;false;127;127;159;;; -16000;1;0;false;false;;;;;; -16001;3;0;false;false;63;95;191;;; -16004;1;0;false;false;;;;;; -16005;9;0;false;false;63;95;191;;; -16014;1;0;false;false;;;;;; -16015;3;0;false;false;63;95;191;;; -16018;1;0;false;false;;;;;; -16019;4;0;false;false;63;95;191;;; -16023;1;0;false;false;;;;;; -16024;5;0;false;false;63;95;191;;; -16029;4;0;false;false;;;;;; -16033;1;0;false;false;63;95;191;;; -16034;1;0;false;false;;;;;; -16035;2;0;false;false;63;95;191;;; -16037;1;0;false;false;;;;;; -16038;6;0;false;false;63;95;191;;; -16044;4;0;false;false;;;;;; -16048;2;0;false;false;63;95;191;;; -16050;3;0;false;false;;;;;; -16053;4;1;false;false;127;0;85;;; -16057;1;0;false;false;;;;;; -16058;20;0;false;false;0;0;0;;; -16078;1;0;false;false;;;;;; -16079;1;0;false;false;0;0;0;;; -16080;4;0;false;false;;;;;; -16084;9;0;false;false;0;0;0;;; -16093;1;0;false;false;;;;;; -16094;4;0;false;false;0;0;0;;; -16098;1;0;false;false;;;;;; -16099;1;0;false;false;0;0;0;;; -16100;1;0;false;false;;;;;; -16101;22;0;false;false;0;0;0;;; -16123;1;0;false;false;;;;;; -16124;2;0;false;false;0;0;0;;; -16126;1;0;false;false;;;;;; -16127;2;0;false;false;0;0;0;;; -16129;1;0;false;false;;;;;; -16130;3;0;false;false;0;0;0;;; -16133;4;0;false;false;;;;;; -16137;5;0;false;false;0;0;0;;; -16142;1;0;false;false;;;;;; -16143;3;0;false;false;0;0;0;;; -16146;1;0;false;false;;;;;; -16147;1;0;false;false;0;0;0;;; -16148;1;0;false;false;;;;;; -16149;17;0;false;false;0;0;0;;; -16166;8;0;false;false;;;;;; -16174;11;0;false;false;0;0;0;;; -16185;1;0;false;false;;;;;; -16186;1;0;false;false;0;0;0;;; -16187;1;0;false;false;;;;;; -16188;3;1;false;false;127;0;85;;; -16191;1;0;false;false;;;;;; -16192;13;0;false;false;0;0;0;;; -16205;1;0;false;false;;;;;; -16206;26;0;false;false;0;0;0;;; -16232;1;0;false;false;;;;;; -16233;28;0;false;false;0;0;0;;; -16261;1;0;false;false;;;;;; -16262;12;0;false;false;0;0;0;;; -16274;4;0;false;false;;;;;; -16278;10;0;false;false;0;0;0;;; -16288;1;0;false;false;;;;;; -16289;1;0;false;false;0;0;0;;; -16290;1;0;false;false;;;;;; -16291;24;0;false;false;0;0;0;;; -16315;4;0;false;false;;;;;; -16319;9;0;false;false;0;0;0;;; -16328;1;0;false;false;;;;;; -16329;1;0;false;false;0;0;0;;; -16330;1;0;false;false;;;;;; -16331;17;0;false;false;0;0;0;;; -16348;4;0;false;false;;;;;; -16352;32;0;false;false;63;127;95;;; -16384;2;0;false;false;;;;;; -16386;12;0;false;false;0;0;0;;; -16398;1;0;false;false;;;;;; -16399;1;0;false;false;0;0;0;;; -16400;1;0;false;false;;;;;; -16401;5;0;false;false;0;0;0;;; -16406;1;0;false;false;;;;;; -16407;1;0;false;false;0;0;0;;; -16408;1;0;false;false;;;;;; -16409;7;0;false;false;0;0;0;;; -16416;9;0;false;false;;;;;; -16425;12;0;false;false;0;0;0;;; -16437;1;0;false;false;;;;;; -16438;1;0;false;false;0;0;0;;; -16439;1;0;false;false;;;;;; -16440;5;0;false;false;0;0;0;;; -16445;1;0;false;false;;;;;; -16446;1;0;false;false;0;0;0;;; -16447;1;0;false;false;;;;;; -16448;7;0;false;false;0;0;0;;; -16455;4;0;false;false;;;;;; -16459;16;0;false;false;0;0;0;;; -16475;1;0;false;false;;;;;; -16476;2;0;false;false;0;0;0;;; -16478;1;0;false;false;;;;;; -16479;13;0;false;false;0;0;0;;; -16492;1;0;false;false;;;;;; -16493;1;0;false;false;0;0;0;;; -16494;1;0;false;false;;;;;; -16495;12;0;false;false;0;0;0;;; -16507;4;0;false;false;;;;;; -16511;17;0;false;false;0;0;0;;; -16528;1;0;false;false;;;;;; -16529;2;0;false;false;0;0;0;;; -16531;1;0;false;false;;;;;; -16532;13;0;false;false;0;0;0;;; -16545;1;0;false;false;;;;;; -16546;1;0;false;false;0;0;0;;; -16547;1;0;false;false;;;;;; -16548;13;0;false;false;0;0;0;;; -16561;9;0;false;false;;;;;; -16570;61;0;false;false;63;127;95;;; -16631;2;0;false;false;;;;;; -16633;3;1;false;false;127;0;85;;; -16636;1;0;false;false;;;;;; -16637;5;0;false;false;0;0;0;;; -16642;1;0;false;false;;;;;; -16643;1;0;false;false;0;0;0;;; -16644;1;0;false;false;;;;;; -16645;8;0;false;false;0;0;0;;; -16653;1;0;false;false;;;;;; -16654;1;0;false;false;0;0;0;;; -16655;1;0;false;false;;;;;; -16656;17;0;false;false;0;0;0;;; -16673;1;0;false;false;;;;;; -16674;1;0;false;false;0;0;0;;; -16675;1;0;false;false;;;;;; -16676;18;0;false;false;0;0;0;;; -16694;4;0;false;false;;;;;; -16698;2;0;false;false;0;0;0;;; -16700;1;0;false;false;;;;;; -16701;1;0;false;false;0;0;0;;; -16702;1;0;false;false;;;;;; -16703;3;1;false;false;127;0;85;;; -16706;1;0;false;false;;;;;; -16707;11;0;false;false;0;0;0;;; -16718;1;0;false;false;;;;;; -16719;7;0;false;false;0;0;0;;; -16726;4;0;false;false;;;;;; -16730;24;0;false;false;0;0;0;;; -16754;4;0;false;false;;;;;; -16758;8;0;false;false;0;0;0;;; -16766;1;0;false;false;;;;;; -16767;1;0;false;false;0;0;0;;; -16768;1;0;false;false;;;;;; -16769;3;1;false;false;127;0;85;;; -16772;1;0;false;false;;;;;; -16773;14;0;false;false;0;0;0;;; -16787;5;0;false;false;;;;;; -16792;8;0;false;false;0;0;0;;; -16800;1;0;false;false;;;;;; -16801;12;0;false;false;0;0;0;;; -16813;1;0;false;false;;;;;; -16814;3;0;false;false;0;0;0;;; -16817;1;0;false;false;;;;;; -16818;15;0;false;false;0;0;0;;; -16833;5;0;false;false;;;;;; -16838;16;0;false;false;0;0;0;;; -16854;1;0;false;false;;;;;; -16855;11;0;false;false;0;0;0;;; -16866;1;0;false;false;;;;;; -16867;13;0;false;false;0;0;0;;; -16880;6;0;false;false;;;;;; -16886;17;0;false;false;0;0;0;;; -16903;1;0;false;false;;;;;; -16904;12;0;false;false;0;0;0;;; -16916;4;0;false;false;;;;;; -16920;2;1;false;false;127;0;85;;; -16922;1;0;false;false;;;;;; -16923;20;0;false;false;0;0;0;;; -16943;1;0;false;false;;;;;; -16944;2;0;false;false;0;0;0;;; -16946;1;0;false;false;;;;;; -16947;4;1;false;false;127;0;85;;; -16951;1;0;false;false;0;0;0;;; -16952;1;0;false;false;;;;;; -16953;1;0;false;false;0;0;0;;; -16954;5;0;false;false;;;;;; -16959;3;1;false;false;127;0;85;;; -16962;1;0;false;false;;;;;; -16963;10;0;false;false;0;0;0;;; -16973;1;0;false;false;;;;;; -16974;1;0;false;false;0;0;0;;; -16975;1;0;false;false;;;;;; -16976;25;0;false;false;0;0;0;;; -17001;5;0;false;false;;;;;; -17006;12;0;false;false;0;0;0;;; -17018;1;0;false;false;;;;;; -17019;2;0;false;false;0;0;0;;; -17021;1;0;false;false;;;;;; -17022;10;0;false;false;0;0;0;;; -17032;1;0;false;false;;;;;; -17033;1;0;false;false;0;0;0;;; -17034;1;0;false;false;;;;;; -17035;2;0;false;false;0;0;0;;; -17037;5;0;false;false;;;;;; -17042;17;0;false;false;0;0;0;;; -17059;1;0;false;false;;;;;; -17060;2;0;false;false;0;0;0;;; -17062;1;0;false;false;;;;;; -17063;10;0;false;false;0;0;0;;; -17073;1;0;false;false;;;;;; -17074;1;0;false;false;0;0;0;;; -17075;1;0;false;false;;;;;; -17076;2;0;false;false;0;0;0;;; -17078;4;0;false;false;;;;;; -17082;1;0;false;false;0;0;0;;; -17083;4;0;false;false;;;;;; -17087;2;1;false;false;127;0;85;;; -17089;1;0;false;false;;;;;; -17090;20;0;false;false;0;0;0;;; -17110;1;0;false;false;;;;;; -17111;2;0;false;false;0;0;0;;; -17113;1;0;false;false;;;;;; -17114;4;1;false;false;127;0;85;;; -17118;1;0;false;false;0;0;0;;; -17119;1;0;false;false;;;;;; -17120;1;0;false;false;0;0;0;;; -17121;5;0;false;false;;;;;; -17126;17;0;false;false;0;0;0;;; -17143;1;0;false;false;;;;;; -17144;2;0;false;false;0;0;0;;; -17146;1;0;false;false;;;;;; -17147;24;0;false;false;0;0;0;;; -17171;1;0;false;false;;;;;; -17172;1;0;false;false;0;0;0;;; -17173;1;0;false;false;;;;;; -17174;2;0;false;false;0;0;0;;; -17176;4;0;false;false;;;;;; -17180;1;0;false;false;0;0;0;;; -17181;4;0;false;false;;;;;; -17185;8;0;false;false;0;0;0;;; -17193;1;0;false;false;;;;;; -17194;1;0;false;false;0;0;0;;; -17195;1;0;false;false;;;;;; -17196;17;0;false;false;0;0;0;;; -17213;1;0;false;false;;;;;; -17214;1;0;false;false;0;0;0;;; -17215;1;0;false;false;;;;;; -17216;25;0;false;false;0;0;0;;; -17241;4;0;false;false;;;;;; -17245;17;0;false;false;0;0;0;;; -17262;1;0;false;false;;;;;; -17263;7;0;false;false;0;0;0;;; -17270;1;0;false;false;;;;;; -17271;1;0;false;false;0;0;0;;; -17272;1;0;false;false;;;;;; -17273;22;0;false;false;0;0;0;;; -17295;4;0;false;false;;;;;; -17299;9;0;false;false;0;0;0;;; -17308;1;0;false;false;;;;;; -17309;1;0;false;false;0;0;0;;; -17310;1;0;false;false;;;;;; -17311;2;0;false;false;0;0;0;;; -17313;4;0;false;false;;;;;; -17317;2;1;false;false;127;0;85;;; -17319;1;0;false;false;;;;;; -17320;12;0;false;false;0;0;0;;; -17332;1;0;false;false;;;;;; -17333;1;0;false;false;0;0;0;;; -17334;5;0;false;false;;;;;; -17339;7;0;false;false;0;0;0;;; -17346;1;0;false;false;;;;;; -17347;1;0;false;false;0;0;0;;; -17348;1;0;false;false;;;;;; -17349;2;0;false;false;0;0;0;;; -17351;4;0;false;false;;;;;; -17355;1;0;false;false;0;0;0;;; -17356;4;0;false;false;;;;;; -17360;4;1;false;false;127;0;85;;; -17364;1;0;false;false;;;;;; -17365;1;0;false;false;0;0;0;;; -17366;5;0;false;false;;;;;; -17371;7;0;false;false;0;0;0;;; -17378;1;0;false;false;;;;;; -17379;1;0;false;false;0;0;0;;; -17380;1;0;false;false;;;;;; -17381;22;0;false;false;0;0;0;;; -17403;1;0;false;false;;;;;; -17404;1;0;false;false;0;0;0;;; -17405;1;0;false;false;;;;;; -17406;2;0;false;false;0;0;0;;; -17408;4;0;false;false;;;;;; -17412;1;0;false;false;0;0;0;;; -17413;4;0;false;false;;;;;; -17417;11;0;false;false;0;0;0;;; -17428;1;0;false;false;;;;;; -17429;4;0;false;false;0;0;0;;; -17433;1;0;false;false;;;;;; -17434;1;0;false;false;0;0;0;;; -17435;1;0;false;false;;;;;; -17436;25;0;false;false;0;0;0;;; -17461;4;0;false;false;;;;;; -17465;2;1;false;false;127;0;85;;; -17467;1;0;false;false;;;;;; -17468;11;0;false;false;0;0;0;;; -17479;1;0;false;false;;;;;; -17480;2;0;false;false;0;0;0;;; -17482;1;0;false;false;;;;;; -17483;23;0;false;false;0;0;0;;; -17506;1;0;false;false;;;;;; -17507;1;0;false;false;0;0;0;;; -17508;5;0;false;false;;;;;; -17513;9;0;false;false;0;0;0;;; -17522;1;0;false;false;;;;;; -17523;1;0;false;false;0;0;0;;; -17524;1;0;false;false;;;;;; -17525;10;0;false;false;0;0;0;;; -17535;1;0;false;false;;;;;; -17536;1;0;false;false;0;0;0;;; -17537;1;0;false;false;;;;;; -17538;2;0;false;false;0;0;0;;; -17540;1;0;false;false;;;;;; -17541;1;0;false;false;0;0;0;;; -17542;1;0;false;false;;;;;; -17543;9;0;false;false;0;0;0;;; -17552;4;0;false;false;;;;;; -17556;1;0;false;false;0;0;0;;; -17557;5;0;false;false;;;;;; -17562;4;1;false;false;127;0;85;;; -17566;4;0;false;false;;;;;; -17570;2;1;false;false;127;0;85;;; -17572;1;0;false;false;;;;;; -17573;11;0;false;false;0;0;0;;; -17584;1;0;false;false;;;;;; -17585;2;0;false;false;0;0;0;;; -17587;1;0;false;false;;;;;; -17588;22;0;false;false;0;0;0;;; -17610;1;0;false;false;;;;;; -17611;1;0;false;false;0;0;0;;; -17612;5;0;false;false;;;;;; -17617;9;0;false;false;0;0;0;;; -17626;1;0;false;false;;;;;; -17627;1;0;false;false;0;0;0;;; -17628;1;0;false;false;;;;;; -17629;37;0;false;false;0;0;0;;; -17666;5;0;false;false;;;;;; -17671;2;1;false;false;127;0;85;;; -17673;1;0;false;false;;;;;; -17674;12;0;false;false;0;0;0;;; -17686;1;0;false;false;;;;;; -17687;1;0;false;false;0;0;0;;; -17688;1;0;false;false;;;;;; -17689;2;0;false;false;0;0;0;;; -17691;1;0;false;false;;;;;; -17692;1;0;false;false;0;0;0;;; -17693;6;0;false;false;;;;;; -17699;7;0;false;false;0;0;0;;; -17706;1;0;false;false;;;;;; -17707;1;0;false;false;0;0;0;;; -17708;1;0;false;false;;;;;; -17709;35;0;false;false;0;0;0;;; -17744;1;0;false;false;;;;;; -17745;1;0;false;false;0;0;0;;; -17746;1;0;false;false;;;;;; -17747;11;0;false;false;0;0;0;;; -17758;1;0;false;false;;;;;; -17759;1;0;false;false;0;0;0;;; -17760;1;0;false;false;;;;;; -17761;3;0;false;false;0;0;0;;; -17764;5;0;false;false;;;;;; -17769;1;0;false;false;0;0;0;;; -17770;6;0;false;false;;;;;; -17776;4;1;false;false;127;0;85;;; -17780;1;0;false;false;;;;;; -17781;1;0;false;false;0;0;0;;; -17782;6;0;false;false;;;;;; -17788;7;0;false;false;0;0;0;;; -17795;1;0;false;false;;;;;; -17796;1;0;false;false;0;0;0;;; -17797;1;0;false;false;;;;;; -17798;9;0;false;false;0;0;0;;; -17807;1;0;false;false;;;;;; -17808;1;0;false;false;0;0;0;;; -17809;1;0;false;false;;;;;; -17810;2;0;false;false;0;0;0;;; -17812;5;0;false;false;;;;;; -17817;1;0;false;false;0;0;0;;; -17818;4;0;false;false;;;;;; -17822;1;0;false;false;0;0;0;;; -17823;3;0;false;false;;;;;; -17826;1;0;false;false;0;0;0;;; -17827;3;0;false;false;;;;;; -17830;3;0;false;false;63;95;191;;; -17833;4;0;false;false;;;;;; -17837;1;0;false;false;63;95;191;;; -17838;1;0;false;false;;;;;; -17839;7;0;false;false;63;95;191;;; -17846;1;0;false;false;;;;;; -17847;3;0;false;false;63;95;191;;; -17850;1;0;false;false;;;;;; -17851;7;0;false;false;63;95;191;;; -17858;1;0;false;false;;;;;; -17859;5;0;false;false;63;95;191;;; -17864;1;0;false;false;;;;;; -17865;3;0;false;false;63;95;191;;; -17868;1;0;false;false;;;;;; -17869;3;0;false;false;63;95;191;;; -17872;1;0;false;false;;;;;; -17873;5;0;false;false;63;95;191;;; -17878;1;0;false;false;;;;;; -17879;7;0;false;false;63;95;191;;; -17886;1;0;false;false;;;;;; -17887;6;0;false;false;63;95;191;;; -17893;4;0;false;false;;;;;; -17897;1;0;false;false;63;95;191;;; -17898;1;0;false;false;;;;;; -17899;4;0;false;false;127;127;159;;; -17903;4;0;false;false;;;;;; -17907;1;0;false;false;63;95;191;;; -17908;1;0;false;false;;;;;; -17909;7;1;false;false;127;159;191;;; -17916;5;0;false;false;63;95;191;;; -17921;1;0;false;false;;;;;; -17922;7;0;false;false;63;95;191;;; -17929;1;0;false;false;;;;;; -17930;5;0;false;false;63;95;191;;; -17935;4;0;false;false;;;;;; -17939;1;0;false;false;63;95;191;;; -17940;1;0;false;false;;;;;; -17941;8;1;false;false;127;159;191;;; -17949;5;0;false;false;63;95;191;;; -17954;1;0;false;false;;;;;; -17955;6;0;false;false;63;95;191;;; -17961;1;0;false;false;;;;;; -17962;2;0;false;false;63;95;191;;; -17964;1;0;false;false;;;;;; -17965;3;0;false;false;63;95;191;;; -17968;1;0;false;false;;;;;; -17969;7;0;false;false;63;95;191;;; -17976;1;0;false;false;;;;;; -17977;4;0;false;false;63;95;191;;; -17981;1;0;false;false;;;;;; -17982;3;0;false;false;63;95;191;;; -17985;1;0;false;false;;;;;; -17986;4;0;false;false;63;95;191;;; -17990;1;0;false;false;;;;;; -17991;3;0;false;false;63;95;191;;; -17994;1;0;false;false;;;;;; -17995;6;0;false;false;63;95;191;;; -18001;5;0;false;false;;;;;; -18006;1;0;false;false;63;95;191;;; -18007;2;0;false;false;;;;;; -18009;2;0;false;false;63;95;191;;; -18011;1;0;false;false;;;;;; -18012;3;0;false;false;63;95;191;;; -18015;1;0;false;false;;;;;; -18016;7;0;false;false;63;95;191;;; -18023;1;0;false;false;;;;;; -18024;6;0;false;false;63;95;191;;; -18030;5;0;false;false;;;;;; -18035;2;0;false;false;63;95;191;;; -18037;3;0;false;false;;;;;; -18040;5;0;false;false;0;0;0;;; -18045;1;0;false;false;;;;;; -18046;21;0;false;false;0;0;0;;; -18067;1;0;false;false;;;;;; -18068;6;0;false;false;0;0;0;;; -18074;1;0;false;false;;;;;; -18075;1;0;false;false;0;0;0;;; -18076;4;0;false;false;;;;;; -18080;5;0;false;false;0;0;0;;; -18085;1;0;false;false;;;;;; -18086;12;0;false;false;0;0;0;;; -18098;1;0;false;false;;;;;; -18099;1;0;false;false;0;0;0;;; -18100;1;0;false;false;;;;;; -18101;4;1;false;false;127;0;85;;; -18105;1;0;false;false;0;0;0;;; -18106;8;0;false;false;;;;;; -18114;2;1;false;false;127;0;85;;; -18116;1;0;false;false;;;;;; -18117;6;0;false;false;0;0;0;;; -18123;1;0;false;false;;;;;; -18124;2;0;false;false;0;0;0;;; -18126;1;0;false;false;;;;;; -18127;4;1;false;false;127;0;85;;; -18131;1;0;false;false;0;0;0;;; -18132;1;0;false;false;;;;;; -18133;1;0;false;false;0;0;0;;; -18134;5;0;false;false;;;;;; -18139;12;0;false;false;0;0;0;;; -18151;1;0;false;false;;;;;; -18152;1;0;false;false;0;0;0;;; -18153;1;0;false;false;;;;;; -18154;7;0;false;false;0;0;0;;; -18161;1;0;false;false;;;;;; -18162;25;0;false;false;0;0;0;;; -18187;7;0;false;false;;;;;; -18194;2;1;false;false;127;0;85;;; -18196;1;0;false;false;;;;;; -18197;13;0;false;false;0;0;0;;; -18210;1;0;false;false;;;;;; -18211;2;0;false;false;0;0;0;;; -18213;1;0;false;false;;;;;; -18214;4;1;false;false;127;0;85;;; -18218;1;0;false;false;0;0;0;;; -18219;1;0;false;false;;;;;; -18220;1;0;false;false;0;0;0;;; -18221;6;0;false;false;;;;;; -18227;12;0;false;false;0;0;0;;; -18239;1;0;false;false;;;;;; -18240;1;0;false;false;0;0;0;;; -18241;1;0;false;false;;;;;; -18242;3;1;false;false;127;0;85;;; -18245;1;0;false;false;;;;;; -18246;14;0;false;false;0;0;0;;; -18260;1;0;false;false;;;;;; -18261;16;0;false;false;0;0;0;;; -18277;6;0;false;false;;;;;; -18283;24;0;false;false;0;0;0;;; -18307;1;0;false;false;;;;;; -18308;14;0;false;false;0;0;0;;; -18322;5;0;false;false;;;;;; -18327;1;0;false;false;0;0;0;;; -18328;4;0;false;false;;;;;; -18332;1;0;false;false;0;0;0;;; -18333;4;0;false;false;;;;;; -18337;6;1;false;false;127;0;85;;; -18343;1;0;false;false;;;;;; -18344;13;0;false;false;0;0;0;;; -18357;3;0;false;false;;;;;; -18360;1;0;false;false;0;0;0;;; -18361;3;0;false;false;;;;;; -18364;3;0;false;false;63;95;191;;; -18367;4;0;false;false;;;;;; -18371;1;0;false;false;63;95;191;;; -18372;1;0;false;false;;;;;; -18373;6;0;false;false;63;95;191;;; -18379;1;0;false;false;;;;;; -18380;3;0;false;false;63;95;191;;; -18383;1;0;false;false;;;;;; -18384;5;0;false;false;63;95;191;;; -18389;1;0;false;false;;;;;; -18390;2;0;false;false;63;95;191;;; -18392;1;0;false;false;;;;;; -18393;3;0;false;false;63;95;191;;; -18396;1;0;false;false;;;;;; -18397;9;0;false;false;63;95;191;;; -18406;1;0;false;false;;;;;; -18407;4;0;false;false;63;95;191;;; -18411;1;0;false;false;;;;;; -18412;6;0;false;false;63;95;191;;; -18418;4;0;false;false;;;;;; -18422;2;0;false;false;63;95;191;;; -18424;3;0;false;false;;;;;; -18427;4;1;false;false;127;0;85;;; -18431;1;0;false;false;;;;;; -18432;7;0;false;false;0;0;0;;; -18439;1;0;false;false;;;;;; -18440;1;0;false;false;0;0;0;;; -18441;4;0;false;false;;;;;; -18445;17;0;false;false;0;0;0;;; -18462;1;0;false;false;;;;;; -18463;7;0;false;false;0;0;0;;; -18470;1;0;false;false;;;;;; -18471;1;0;false;false;0;0;0;;; -18472;1;0;false;false;;;;;; -18473;22;0;false;false;0;0;0;;; -18495;4;0;false;false;;;;;; -18499;5;0;false;false;0;0;0;;; -18504;1;0;false;false;;;;;; -18505;10;0;false;false;0;0;0;;; -18515;1;0;false;false;;;;;; -18516;1;0;false;false;0;0;0;;; -18517;1;0;false;false;;;;;; -18518;19;0;false;false;0;0;0;;; -18537;4;0;false;false;;;;;; -18541;5;0;false;false;0;0;0;;; -18546;1;0;false;false;;;;;; -18547;10;0;false;false;0;0;0;;; -18557;1;0;false;false;;;;;; -18558;1;0;false;false;0;0;0;;; -18559;1;0;false;false;;;;;; -18560;19;0;false;false;0;0;0;;; -18579;4;0;false;false;;;;;; -18583;3;1;false;false;127;0;85;;; -18586;1;0;false;false;;;;;; -18587;10;0;false;false;0;0;0;;; -18597;1;0;false;false;;;;;; -18598;1;0;false;false;0;0;0;;; -18599;1;0;false;false;;;;;; -18600;25;0;false;false;0;0;0;;; -18625;4;0;false;false;;;;;; -18629;3;1;false;false;127;0;85;;; -18632;1;0;false;false;;;;;; -18633;6;0;false;false;0;0;0;;; -18639;1;0;false;false;;;;;; -18640;1;0;false;false;0;0;0;;; -18641;1;0;false;false;;;;;; -18642;13;0;false;false;0;0;0;;; -18655;4;0;false;false;;;;;; -18659;3;1;false;false;127;0;85;;; -18662;1;0;false;false;;;;;; -18663;4;0;false;false;0;0;0;;; -18667;1;0;false;false;;;;;; -18668;1;0;false;false;0;0;0;;; -18669;1;0;false;false;;;;;; -18670;10;0;false;false;0;0;0;;; -18680;8;0;false;false;;;;;; -18688;3;1;false;false;127;0;85;;; -18691;1;0;false;false;;;;;; -18692;1;0;false;false;0;0;0;;; -18693;3;1;false;false;127;0;85;;; -18696;1;0;false;false;;;;;; -18697;1;0;false;false;0;0;0;;; -18698;1;0;false;false;;;;;; -18699;1;0;false;false;0;0;0;;; -18700;1;0;false;false;;;;;; -18701;10;0;false;false;0;0;0;;; -18711;1;0;false;false;;;;;; -18712;1;0;false;false;0;0;0;;; -18713;1;0;false;false;;;;;; -18714;2;0;false;false;0;0;0;;; -18716;1;0;false;false;;;;;; -18717;7;0;false;false;0;0;0;;; -18724;1;0;false;false;;;;;; -18725;2;0;false;false;0;0;0;;; -18727;1;0;false;false;;;;;; -18728;4;0;false;false;0;0;0;;; -18732;1;0;false;false;;;;;; -18733;2;0;false;false;0;0;0;;; -18735;1;0;false;false;;;;;; -18736;8;0;false;false;0;0;0;;; -18744;1;0;false;false;;;;;; -18745;4;0;false;false;0;0;0;;; -18749;1;0;false;false;;;;;; -18750;6;0;false;false;0;0;0;;; -18756;1;0;false;false;;;;;; -18757;2;0;false;false;0;0;0;;; -18759;1;0;false;false;;;;;; -18760;11;0;false;false;0;0;0;;; -18771;1;0;false;false;;;;;; -18772;1;0;false;false;0;0;0;;; -18773;5;0;false;false;;;;;; -18778;6;0;false;false;0;0;0;;; -18784;1;0;false;false;;;;;; -18785;4;0;false;false;0;0;0;;; -18789;1;0;false;false;;;;;; -18790;1;0;false;false;0;0;0;;; -18791;1;0;false;false;;;;;; -18792;19;0;false;false;0;0;0;;; -18811;10;0;false;false;;;;;; -18821;2;1;false;false;127;0;85;;; -18823;1;0;false;false;;;;;; -18824;7;0;false;false;0;0;0;;; -18831;1;0;false;false;;;;;; -18832;2;0;false;false;0;0;0;;; -18834;1;0;false;false;;;;;; -18835;13;0;false;false;0;0;0;;; -18848;1;0;false;false;;;;;; -18849;1;0;false;false;0;0;0;;; -18850;6;0;false;false;;;;;; -18856;16;0;false;false;0;0;0;;; -18872;5;0;false;false;;;;;; -18877;1;0;false;false;0;0;0;;; -18878;5;0;false;false;;;;;; -18883;18;0;false;false;0;0;0;;; -18901;6;0;false;false;;;;;; -18907;5;0;false;false;0;0;0;;; -18912;1;0;false;false;;;;;; -18913;2;0;false;false;0;0;0;;; -18915;1;0;false;false;;;;;; -18916;7;0;false;false;0;0;0;;; -18923;1;0;false;false;;;;;; -18924;3;0;false;false;0;0;0;;; -18927;1;0;false;false;;;;;; -18928;11;0;false;false;0;0;0;;; -18939;1;0;false;false;;;;;; -18940;11;0;false;false;0;0;0;;; -18951;1;0;false;false;;;;;; -18952;4;1;false;false;127;0;85;;; -18956;2;0;false;false;0;0;0;;; -18958;5;0;false;false;;;;;; -18963;2;1;false;false;127;0;85;;; -18965;1;0;false;false;;;;;; -18966;7;0;false;false;0;0;0;;; -18973;1;0;false;false;;;;;; -18974;1;0;false;false;0;0;0;;; -18975;1;0;false;false;;;;;; -18976;10;0;false;false;0;0;0;;; -18986;1;0;false;false;;;;;; -18987;1;0;false;false;0;0;0;;; -18988;1;0;false;false;;;;;; -18989;1;0;false;false;0;0;0;;; -18990;1;0;false;false;;;;;; -18991;1;0;false;false;0;0;0;;; -18992;1;0;false;false;;;;;; -18993;12;0;false;false;0;0;0;;; -19005;1;0;false;false;;;;;; -19006;1;0;false;false;0;0;0;;; -19007;1;0;false;false;;;;;; -19008;18;0;false;false;0;0;0;;; -19026;1;0;false;false;;;;;; -19027;1;0;false;false;0;0;0;;; -19028;6;0;false;false;;;;;; -19034;20;0;false;false;63;127;95;;; -19054;4;0;false;false;;;;;; -19058;14;0;false;false;0;0;0;;; -19072;6;0;false;false;;;;;; -19078;6;0;false;false;0;0;0;;; -19084;1;0;false;false;;;;;; -19085;1;0;false;false;0;0;0;;; -19086;1;0;false;false;;;;;; -19087;12;0;false;false;0;0;0;;; -19099;1;0;false;false;;;;;; -19100;1;0;false;false;0;0;0;;; -19101;1;0;false;false;;;;;; -19102;11;0;false;false;0;0;0;;; -19113;6;0;false;false;;;;;; -19119;7;0;false;false;0;0;0;;; -19126;5;0;false;false;;;;;; -19131;1;0;false;false;0;0;0;;; -19132;4;0;false;false;;;;;; -19136;1;0;false;false;0;0;0;;; -19137;4;0;false;false;;;;;; -19141;2;1;false;false;127;0;85;;; -19143;1;0;false;false;;;;;; -19144;7;0;false;false;0;0;0;;; -19151;1;0;false;false;;;;;; -19152;1;0;false;false;0;0;0;;; -19153;1;0;false;false;;;;;; -19154;13;0;false;false;0;0;0;;; -19167;1;0;false;false;;;;;; -19168;1;0;false;false;0;0;0;;; -19169;5;0;false;false;;;;;; -19174;23;0;false;false;63;127;95;;; -19197;3;0;false;false;;;;;; -19200;14;0;false;false;0;0;0;;; -19214;4;0;false;false;;;;;; -19218;1;0;false;false;0;0;0;;; -19219;3;0;false;false;;;;;; -19222;1;0;false;false;0;0;0;;; -19223;3;0;false;false;;;;;; -19226;3;0;false;false;63;95;191;;; -19229;4;0;false;false;;;;;; -19233;1;0;false;false;63;95;191;;; -19234;1;0;false;false;;;;;; -19235;5;0;false;false;63;95;191;;; -19240;1;0;false;false;;;;;; -19241;6;0;false;false;63;95;191;;; -19247;1;0;false;false;;;;;; -19248;2;0;false;false;63;95;191;;; -19250;1;0;false;false;;;;;; -19251;6;0;false;false;63;95;191;;; -19257;1;0;false;false;;;;;; -19258;12;0;false;false;63;95;191;;; -19270;4;0;false;false;;;;;; -19274;1;0;false;false;63;95;191;;; -19275;5;0;false;false;;;;;; -19280;1;0;false;false;63;95;191;;; -19281;1;0;false;false;;;;;; -19282;7;1;false;false;127;159;191;;; -19289;4;0;false;false;63;95;191;;; -19293;1;0;false;false;;;;;; -19294;4;0;false;false;63;95;191;;; -19298;1;0;false;false;;;;;; -19299;6;0;false;false;63;95;191;;; -19305;1;0;false;false;;;;;; -19306;2;0;false;false;63;95;191;;; -19308;1;0;false;false;;;;;; -19309;6;0;false;false;63;95;191;;; -19315;1;0;false;false;;;;;; -19316;2;0;false;false;63;95;191;;; -19318;1;0;false;false;;;;;; -19319;9;0;false;false;63;95;191;;; -19328;1;0;false;false;;;;;; -19329;2;0;false;false;63;95;191;;; -19331;1;0;false;false;;;;;; -19332;3;0;false;false;63;95;191;;; -19335;1;0;false;false;;;;;; -19336;22;0;false;false;63;95;191;;; -19358;1;0;false;false;;;;;; -19359;6;0;false;false;63;95;191;;; -19365;1;0;false;false;;;;;; -19366;2;0;false;false;63;95;191;;; -19368;1;0;false;false;;;;;; -19369;7;0;false;false;63;95;191;;; -19376;4;0;false;false;;;;;; -19380;1;0;false;false;63;95;191;;; -19381;1;0;false;false;;;;;; -19382;7;1;false;false;127;159;191;;; -19389;6;0;false;false;63;95;191;;; -19395;1;0;false;false;;;;;; -19396;4;0;false;false;63;95;191;;; -19400;1;0;false;false;;;;;; -19401;1;0;false;false;63;95;191;;; -19402;1;0;false;false;;;;;; -19403;5;0;false;false;63;95;191;;; -19408;1;0;false;false;;;;;; -19409;3;0;false;false;63;95;191;;; -19412;1;0;false;false;;;;;; -19413;7;0;false;false;63;95;191;;; -19420;1;0;false;false;;;;;; -19421;5;0;false;false;63;95;191;;; -19426;1;0;false;false;;;;;; -19427;1;0;false;false;63;95;191;;; -19428;1;0;false;false;;;;;; -19429;5;0;false;false;63;95;191;;; -19434;1;0;false;false;;;;;; -19435;3;0;false;false;63;95;191;;; -19438;1;0;false;false;;;;;; -19439;6;0;false;false;63;95;191;;; -19445;4;0;false;false;;;;;; -19449;2;0;false;false;63;95;191;;; -19451;3;0;false;false;;;;;; -19454;4;1;false;false;127;0;85;;; -19458;1;0;false;false;;;;;; -19459;16;0;false;false;0;0;0;;; -19475;3;1;false;false;127;0;85;;; -19478;1;0;false;false;;;;;; -19479;5;0;false;false;0;0;0;;; -19484;1;0;false;false;;;;;; -19485;7;1;false;false;127;0;85;;; -19492;1;0;false;false;;;;;; -19493;7;0;false;false;0;0;0;;; -19500;1;0;false;false;;;;;; -19501;1;0;false;false;0;0;0;;; -19502;4;0;false;false;;;;;; -19506;3;1;false;false;127;0;85;;; -19509;1;0;false;false;;;;;; -19510;16;0;false;false;0;0;0;;; -19526;1;0;false;false;;;;;; -19527;1;0;false;false;0;0;0;;; -19528;1;0;false;false;;;;;; -19529;2;0;false;false;0;0;0;;; -19531;4;0;false;false;;;;;; -19535;5;1;false;false;127;0;85;;; -19540;1;0;false;false;;;;;; -19541;3;1;false;false;127;0;85;;; -19544;1;0;false;false;;;;;; -19545;12;0;false;false;0;0;0;;; -19557;1;0;false;false;;;;;; -19558;1;0;false;false;0;0;0;;; -19559;1;0;false;false;;;;;; -19560;2;0;false;false;0;0;0;;; -19562;4;0;false;false;;;;;; -19566;6;0;false;false;0;0;0;;; -19572;1;0;false;false;;;;;; -19573;5;0;false;false;0;0;0;;; -19578;8;0;false;false;;;;;; -19586;2;1;false;false;127;0;85;;; -19588;1;0;false;false;;;;;; -19589;8;0;false;false;0;0;0;;; -19597;1;0;false;false;;;;;; -19598;1;0;false;false;0;0;0;;; -19599;5;0;false;false;;;;;; -19604;4;0;false;false;0;0;0;;; -19608;1;0;false;false;;;;;; -19609;1;0;false;false;0;0;0;;; -19610;1;0;false;false;;;;;; -19611;20;0;false;false;0;0;0;;; -19631;4;0;false;false;;;;;; -19635;1;0;false;false;0;0;0;;; -19636;4;0;false;false;;;;;; -19640;4;1;false;false;127;0;85;;; -19644;1;0;false;false;;;;;; -19645;1;0;false;false;0;0;0;;; -19646;5;0;false;false;;;;;; -19651;4;0;false;false;0;0;0;;; -19655;1;0;false;false;;;;;; -19656;1;0;false;false;0;0;0;;; -19657;1;0;false;false;;;;;; -19658;20;0;false;false;0;0;0;;; -19678;4;0;false;false;;;;;; -19682;1;0;false;false;0;0;0;;; -19683;4;0;false;false;;;;;; -19687;2;1;false;false;127;0;85;;; -19689;1;0;false;false;;;;;; -19690;5;0;false;false;0;0;0;;; -19695;1;0;false;false;;;;;; -19696;2;0;false;false;0;0;0;;; -19698;1;0;false;false;;;;;; -19699;4;1;false;false;127;0;85;;; -19703;1;0;false;false;0;0;0;;; -19704;1;0;false;false;;;;;; -19705;1;0;false;false;0;0;0;;; -19706;5;0;false;false;;;;;; -19711;6;1;false;false;127;0;85;;; -19717;1;0;false;false;0;0;0;;; -19718;4;0;false;false;;;;;; -19722;1;0;false;false;0;0;0;;; -19723;4;0;false;false;;;;;; -19727;3;1;false;false;127;0;85;;; -19730;1;0;false;false;;;;;; -19731;1;0;false;false;0;0;0;;; -19732;3;1;false;false;127;0;85;;; -19735;1;0;false;false;;;;;; -19736;1;0;false;false;0;0;0;;; -19737;1;0;false;false;;;;;; -19738;1;0;false;false;0;0;0;;; -19739;1;0;false;false;;;;;; -19740;2;0;false;false;0;0;0;;; -19742;1;0;false;false;;;;;; -19743;1;0;false;false;0;0;0;;; -19744;1;0;false;false;;;;;; -19745;1;0;false;false;0;0;0;;; -19746;1;0;false;false;;;;;; -19747;13;0;false;false;0;0;0;;; -19760;1;0;false;false;;;;;; -19761;4;0;false;false;0;0;0;;; -19765;1;0;false;false;;;;;; -19766;1;0;false;false;0;0;0;;; -19767;5;0;false;false;;;;;; -19772;3;1;false;false;127;0;85;;; -19775;1;0;false;false;;;;;; -19776;12;0;false;false;0;0;0;;; -19788;1;0;false;false;;;;;; -19789;1;0;false;false;0;0;0;;; -19790;1;0;false;false;;;;;; -19791;46;0;false;false;0;0;0;;; -19837;1;0;false;false;;;;;; -19838;18;0;false;false;0;0;0;;; -19856;5;0;false;false;;;;;; -19861;6;0;false;false;0;0;0;;; -19867;1;0;false;false;;;;;; -19868;8;0;false;false;0;0;0;;; -19876;10;0;false;false;;;;;; -19886;2;1;false;false;127;0;85;;; -19888;1;0;false;false;;;;;; -19889;13;0;false;false;0;0;0;;; -19902;1;0;false;false;;;;;; -19903;2;0;false;false;0;0;0;;; -19905;1;0;false;false;;;;;; -19906;3;0;false;false;0;0;0;;; -19909;1;0;false;false;;;;;; -19910;1;0;false;false;0;0;0;;; -19911;6;0;false;false;;;;;; -19917;7;0;false;false;0;0;0;;; -19924;1;0;false;false;;;;;; -19925;1;0;false;false;0;0;0;;; -19926;1;0;false;false;;;;;; -19927;33;0;false;false;0;0;0;;; -19960;6;0;false;false;;;;;; -19966;31;0;false;false;0;0;0;;; -19997;1;0;false;false;;;;;; -19998;2;0;false;false;0;0;0;;; -20000;1;0;false;false;;;;;; -20001;5;0;false;false;0;0;0;;; -20006;1;0;false;false;;;;;; -20007;8;0;false;false;0;0;0;;; -20015;6;0;false;false;;;;;; -20021;5;1;false;false;127;0;85;;; -20026;1;0;false;false;0;0;0;;; -20027;5;0;false;false;;;;;; -20032;1;0;false;false;0;0;0;;; -20033;5;0;false;false;;;;;; -20038;4;1;false;false;127;0;85;;; -20042;1;0;false;false;;;;;; -20043;1;0;false;false;0;0;0;;; -20044;6;0;false;false;;;;;; -20050;7;0;false;false;0;0;0;;; -20057;1;0;false;false;;;;;; -20058;1;0;false;false;0;0;0;;; -20059;1;0;false;false;;;;;; -20060;32;0;false;false;0;0;0;;; -20092;1;0;false;false;;;;;; -20093;14;0;false;false;0;0;0;;; -20107;6;0;false;false;;;;;; -20113;31;0;false;false;0;0;0;;; -20144;1;0;false;false;;;;;; -20145;2;0;false;false;0;0;0;;; -20147;1;0;false;false;;;;;; -20148;5;0;false;false;0;0;0;;; -20153;1;0;false;false;;;;;; -20154;8;0;false;false;0;0;0;;; -20162;6;0;false;false;;;;;; -20168;16;0;false;false;0;0;0;;; -20184;1;0;false;false;;;;;; -20185;1;0;false;false;0;0;0;;; -20186;1;0;false;false;;;;;; -20187;12;0;false;false;0;0;0;;; -20199;1;0;false;false;;;;;; -20200;1;0;false;false;0;0;0;;; -20201;1;0;false;false;;;;;; -20202;42;0;false;false;0;0;0;;; -20244;5;0;false;false;;;;;; -20249;1;0;false;false;0;0;0;;; -20250;4;0;false;false;;;;;; -20254;1;0;false;false;0;0;0;;; -20255;3;0;false;false;;;;;; -20258;1;0;false;false;0;0;0;;; -20259;3;0;false;false;;;;;; -20262;3;0;false;false;63;95;191;;; -20265;4;0;false;false;;;;;; -20269;1;0;false;false;63;95;191;;; -20270;1;0;false;false;;;;;; -20271;5;0;false;false;63;95;191;;; -20276;1;0;false;false;;;;;; -20277;3;0;false;false;63;95;191;;; -20280;1;0;false;false;;;;;; -20281;7;0;false;false;63;95;191;;; -20288;1;0;false;false;;;;;; -20289;2;0;false;false;63;95;191;;; -20291;1;0;false;false;;;;;; -20292;1;0;false;false;63;95;191;;; -20293;1;0;false;false;;;;;; -20294;6;0;false;false;63;95;191;;; -20300;1;0;false;false;;;;;; -20301;2;0;false;false;63;95;191;;; -20303;1;0;false;false;;;;;; -20304;6;0;false;false;63;95;191;;; -20310;1;0;false;false;;;;;; -20311;11;0;false;false;63;95;191;;; -20322;4;0;false;false;;;;;; -20326;1;0;false;false;63;95;191;;; -20327;1;0;false;false;;;;;; -20328;7;0;false;false;63;95;191;;; -20335;1;0;false;false;;;;;; -20336;3;0;false;false;63;95;191;;; -20339;1;0;false;false;;;;;; -20340;7;0;false;false;63;95;191;;; -20347;1;0;false;false;;;;;; -20348;4;0;false;false;63;95;191;;; -20352;1;0;false;false;;;;;; -20353;5;0;false;false;63;95;191;;; -20358;1;0;false;false;;;;;; -20359;9;0;false;false;63;95;191;;; -20368;1;0;false;false;;;;;; -20369;9;0;false;false;63;95;191;;; -20378;4;0;false;false;;;;;; -20382;1;0;false;false;63;95;191;;; -20383;1;0;false;false;;;;;; -20384;3;0;false;false;63;95;191;;; -20387;1;0;false;false;;;;;; -20388;4;0;false;false;63;95;191;;; -20392;1;0;false;false;;;;;; -20393;3;0;false;false;63;95;191;;; -20396;1;0;false;false;;;;;; -20397;4;0;false;false;63;95;191;;; -20401;1;0;false;false;;;;;; -20402;8;0;false;false;63;95;191;;; -20410;1;0;false;false;;;;;; -20411;9;0;false;false;63;95;191;;; -20420;1;0;false;false;;;;;; -20421;3;0;false;false;63;95;191;;; -20424;1;0;false;false;;;;;; -20425;5;0;false;false;63;95;191;;; -20430;1;0;false;false;;;;;; -20431;7;0;false;false;63;95;191;;; -20438;1;0;false;false;;;;;; -20439;5;0;false;false;63;95;191;;; -20444;4;0;false;false;;;;;; -20448;1;0;false;false;63;95;191;;; -20449;5;0;false;false;;;;;; -20454;1;0;false;false;63;95;191;;; -20455;1;0;false;false;;;;;; -20456;7;1;false;false;127;159;191;;; -20463;7;0;false;false;63;95;191;;; -20470;1;0;false;false;;;;;; -20471;10;0;false;false;63;95;191;;; -20481;1;0;false;false;;;;;; -20482;7;0;false;false;63;95;191;;; -20489;1;0;false;false;;;;;; -20490;2;0;false;false;63;95;191;;; -20492;1;0;false;false;;;;;; -20493;5;0;false;false;63;95;191;;; -20498;4;0;false;false;;;;;; -20502;1;0;false;false;63;95;191;;; -20503;1;0;false;false;;;;;; -20504;7;1;false;false;127;159;191;;; -20511;9;0;false;false;63;95;191;;; -20520;1;0;false;false;;;;;; -20521;9;0;false;false;63;95;191;;; -20530;1;0;false;false;;;;;; -20531;2;0;false;false;63;95;191;;; -20533;1;0;false;false;;;;;; -20534;3;0;false;false;63;95;191;;; -20537;1;0;false;false;;;;;; -20538;8;0;false;false;63;95;191;;; -20546;1;0;false;false;;;;;; -20547;7;0;false;false;63;95;191;;; -20554;1;0;false;false;;;;;; -20555;9;0;false;false;63;95;191;;; -20564;1;0;false;false;;;;;; -20565;7;0;false;false;63;95;191;;; -20572;5;0;false;false;;;;;; -20577;1;0;false;false;63;95;191;;; -20578;1;0;false;false;;;;;; -20579;7;1;false;false;127;159;191;;; -20586;4;0;false;false;63;95;191;;; -20590;1;0;false;false;;;;;; -20591;4;0;false;false;63;95;191;;; -20595;1;0;false;false;;;;;; -20596;6;0;false;false;63;95;191;;; -20602;1;0;false;false;;;;;; -20603;2;0;false;false;63;95;191;;; -20605;1;0;false;false;;;;;; -20606;6;0;false;false;63;95;191;;; -20612;1;0;false;false;;;;;; -20613;2;0;false;false;63;95;191;;; -20615;1;0;false;false;;;;;; -20616;9;0;false;false;63;95;191;;; -20625;1;0;false;false;;;;;; -20626;2;0;false;false;63;95;191;;; -20628;1;0;false;false;;;;;; -20629;3;0;false;false;63;95;191;;; -20632;1;0;false;false;;;;;; -20633;10;0;false;false;63;95;191;;; -20643;1;0;false;false;;;;;; -20644;8;0;false;false;63;95;191;;; -20652;4;0;false;false;;;;;; -20656;1;0;false;false;63;95;191;;; -20657;1;0;false;false;;;;;; -20658;7;1;false;false;127;159;191;;; -20665;6;0;false;false;63;95;191;;; -20671;1;0;false;false;;;;;; -20672;4;0;false;false;63;95;191;;; -20676;1;0;false;false;;;;;; -20677;1;0;false;false;63;95;191;;; -20678;1;0;false;false;;;;;; -20679;5;0;false;false;63;95;191;;; -20684;1;0;false;false;;;;;; -20685;3;0;false;false;63;95;191;;; -20688;1;0;false;false;;;;;; -20689;7;0;false;false;63;95;191;;; -20696;1;0;false;false;;;;;; -20697;5;0;false;false;63;95;191;;; -20702;1;0;false;false;;;;;; -20703;1;0;false;false;63;95;191;;; -20704;1;0;false;false;;;;;; -20705;5;0;false;false;63;95;191;;; -20710;1;0;false;false;;;;;; -20711;3;0;false;false;63;95;191;;; -20714;1;0;false;false;;;;;; -20715;6;0;false;false;63;95;191;;; -20721;4;0;false;false;;;;;; -20725;2;0;false;false;63;95;191;;; -20727;3;0;false;false;;;;;; -20730;4;1;false;false;127;0;85;;; -20734;1;0;false;false;;;;;; -20735;29;0;false;false;0;0;0;;; -20764;1;0;false;false;;;;;; -20765;8;0;false;false;0;0;0;;; -20773;1;0;false;false;;;;;; -20774;3;1;false;false;127;0;85;;; -20777;1;0;false;false;;;;;; -20778;10;0;false;false;0;0;0;;; -20788;1;0;false;false;;;;;; -20789;3;1;false;false;127;0;85;;; -20792;1;0;false;false;;;;;; -20793;5;0;false;false;0;0;0;;; -20798;1;0;false;false;;;;;; -20799;7;1;false;false;127;0;85;;; -20806;1;0;false;false;;;;;; -20807;7;0;false;false;0;0;0;;; -20814;1;0;false;false;;;;;; -20815;1;0;false;false;0;0;0;;; -20816;6;0;false;false;;;;;; -20822;3;1;false;false;127;0;85;;; -20825;1;0;false;false;;;;;; -20826;9;0;false;false;0;0;0;;; -20835;1;0;false;false;;;;;; -20836;1;0;false;false;0;0;0;;; -20837;1;0;false;false;;;;;; -20838;49;0;false;false;0;0;0;;; -20887;8;0;false;false;;;;;; -20895;2;1;false;false;127;0;85;;; -20897;1;0;false;false;;;;;; -20898;10;0;false;false;0;0;0;;; -20908;1;0;false;false;;;;;; -20909;2;0;false;false;0;0;0;;; -20911;1;0;false;false;;;;;; -20912;3;0;false;false;0;0;0;;; -20915;1;0;false;false;;;;;; -20916;1;0;false;false;0;0;0;;; -20917;5;0;false;false;;;;;; -20922;5;1;false;false;127;0;85;;; -20927;1;0;false;false;;;;;; -20928;3;1;false;false;127;0;85;;; -20931;1;0;false;false;;;;;; -20932;13;0;false;false;0;0;0;;; -20945;1;0;false;false;;;;;; -20946;1;0;false;false;0;0;0;;; -20947;1;0;false;false;;;;;; -20948;41;0;false;false;0;0;0;;; -20989;5;0;false;false;;;;;; -20994;12;0;false;false;0;0;0;;; -21006;1;0;false;false;;;;;; -21007;6;0;false;false;0;0;0;;; -21013;1;0;false;false;;;;;; -21014;1;0;false;false;0;0;0;;; -21015;1;0;false;false;;;;;; -21016;3;1;false;false;127;0;85;;; -21019;1;0;false;false;;;;;; -21020;30;0;false;false;0;0;0;;; -21050;1;0;false;false;;;;;; -21051;3;0;false;false;0;0;0;;; -21054;1;0;false;false;;;;;; -21055;12;0;false;false;0;0;0;;; -21067;5;0;false;false;;;;;; -21072;13;0;false;false;0;0;0;;; -21085;1;0;false;false;;;;;; -21086;7;0;false;false;0;0;0;;; -21093;5;0;false;false;;;;;; -21098;13;0;false;false;0;0;0;;; -21111;1;0;false;false;;;;;; -21112;28;0;false;false;0;0;0;;; -21140;1;0;false;false;;;;;; -21141;1;0;false;false;0;0;0;;; -21142;1;0;false;false;;;;;; -21143;16;0;false;false;0;0;0;;; -21159;5;0;false;false;;;;;; -21164;7;0;false;false;0;0;0;;; -21171;1;0;false;false;;;;;; -21172;1;0;false;false;0;0;0;;; -21173;1;0;false;false;;;;;; -21174;18;0;false;false;0;0;0;;; -21192;4;0;false;false;;;;;; -21196;1;0;false;false;0;0;0;;; -21197;4;0;false;false;;;;;; -21201;2;1;false;false;127;0;85;;; -21203;1;0;false;false;;;;;; -21204;17;0;false;false;0;0;0;;; -21221;1;0;false;false;;;;;; -21222;1;0;false;false;0;0;0;;; -21223;1;0;false;false;;;;;; -21224;2;0;false;false;0;0;0;;; -21226;1;0;false;false;;;;;; -21227;1;0;false;false;0;0;0;;; -21228;5;0;false;false;;;;;; -21233;3;1;false;false;127;0;85;;; -21236;1;0;false;false;;;;;; -21237;13;0;false;false;0;0;0;;; -21250;5;0;false;false;;;;;; -21255;3;1;false;false;127;0;85;;; -21258;1;0;false;false;;;;;; -21259;5;0;false;false;0;0;0;;; -21264;1;0;false;false;;;;;; -21265;1;0;false;false;0;0;0;;; -21266;1;0;false;false;;;;;; -21267;2;0;false;false;0;0;0;;; -21269;5;0;false;false;;;;;; -21274;3;1;false;false;127;0;85;;; -21277;1;0;false;false;;;;;; -21278;5;0;false;false;0;0;0;;; -21283;1;0;false;false;;;;;; -21284;1;0;false;false;0;0;0;;; -21285;1;0;false;false;;;;;; -21286;2;0;false;false;0;0;0;;; -21288;5;0;false;false;;;;;; -21293;10;0;false;false;0;0;0;;; -21303;1;0;false;false;;;;;; -21304;6;0;false;false;0;0;0;;; -21310;1;0;false;false;;;;;; -21311;1;0;false;false;0;0;0;;; -21312;1;0;false;false;;;;;; -21313;3;1;false;false;127;0;85;;; -21316;1;0;false;false;;;;;; -21317;20;0;false;false;0;0;0;;; -21337;5;0;false;false;;;;;; -21342;24;0;false;false;0;0;0;;; -21366;5;0;false;false;;;;;; -21371;28;0;false;false;0;0;0;;; -21399;5;0;false;false;;;;;; -21404;12;0;false;false;0;0;0;;; -21416;1;0;false;false;;;;;; -21417;1;0;false;false;0;0;0;;; -21418;1;0;false;false;;;;;; -21419;30;0;false;false;0;0;0;;; -21449;5;0;false;false;;;;;; -21454;2;1;false;false;127;0;85;;; -21456;1;0;false;false;;;;;; -21457;8;0;false;false;0;0;0;;; -21465;1;0;false;false;;;;;; -21466;1;0;false;false;0;0;0;;; -21467;6;0;false;false;;;;;; -21473;5;0;false;false;0;0;0;;; -21478;1;0;false;false;;;;;; -21479;1;0;false;false;0;0;0;;; -21480;1;0;false;false;;;;;; -21481;12;0;false;false;0;0;0;;; -21493;1;0;false;false;;;;;; -21494;1;0;false;false;0;0;0;;; -21495;1;0;false;false;;;;;; -21496;24;0;false;false;0;0;0;;; -21520;1;0;false;false;;;;;; -21521;1;0;false;false;0;0;0;;; -21522;1;0;false;false;;;;;; -21523;2;0;false;false;0;0;0;;; -21525;5;0;false;false;;;;;; -21530;1;0;false;false;0;0;0;;; -21531;5;0;false;false;;;;;; -21536;4;1;false;false;127;0;85;;; -21540;1;0;false;false;;;;;; -21541;1;0;false;false;0;0;0;;; -21542;6;0;false;false;;;;;; -21548;5;0;false;false;0;0;0;;; -21553;1;0;false;false;;;;;; -21554;1;0;false;false;0;0;0;;; -21555;1;0;false;false;;;;;; -21556;12;0;false;false;0;0;0;;; -21568;1;0;false;false;;;;;; -21569;1;0;false;false;0;0;0;;; -21570;1;0;false;false;;;;;; -21571;17;0;false;false;0;0;0;;; -21588;1;0;false;false;;;;;; -21589;1;0;false;false;0;0;0;;; -21590;1;0;false;false;;;;;; -21591;25;0;false;false;0;0;0;;; -21616;5;0;false;false;;;;;; -21621;1;0;false;false;0;0;0;;; -21622;5;0;false;false;;;;;; -21627;2;1;false;false;127;0;85;;; -21629;1;0;false;false;;;;;; -21630;10;0;false;false;0;0;0;;; -21640;1;0;false;false;;;;;; -21641;2;0;false;false;0;0;0;;; -21643;1;0;false;false;;;;;; -21644;5;0;false;false;0;0;0;;; -21649;1;0;false;false;;;;;; -21650;1;0;false;false;0;0;0;;; -21651;6;0;false;false;;;;;; -21657;5;0;false;false;0;0;0;;; -21662;1;0;false;false;;;;;; -21663;1;0;false;false;0;0;0;;; -21664;1;0;false;false;;;;;; -21665;13;0;false;false;0;0;0;;; -21678;5;0;false;false;;;;;; -21683;1;0;false;false;0;0;0;;; -21684;5;0;false;false;;;;;; -21689;4;1;false;false;127;0;85;;; -21693;9;0;false;false;;;;;; -21702;2;1;false;false;127;0;85;;; -21704;1;0;false;false;;;;;; -21705;10;0;false;false;0;0;0;;; -21715;1;0;false;false;;;;;; -21716;2;0;false;false;0;0;0;;; -21718;1;0;false;false;;;;;; -21719;7;0;false;false;0;0;0;;; -21726;1;0;false;false;;;;;; -21727;1;0;false;false;0;0;0;;; -21728;6;0;false;false;;;;;; -21734;5;0;false;false;0;0;0;;; -21739;1;0;false;false;;;;;; -21740;1;0;false;false;0;0;0;;; -21741;1;0;false;false;;;;;; -21742;10;0;false;false;0;0;0;;; -21752;1;0;false;false;;;;;; -21753;1;0;false;false;0;0;0;;; -21754;1;0;false;false;;;;;; -21755;13;0;false;false;0;0;0;;; -21768;1;0;false;false;;;;;; -21769;1;0;false;false;0;0;0;;; -21770;1;0;false;false;;;;;; -21771;2;0;false;false;0;0;0;;; -21773;5;0;false;false;;;;;; -21778;1;0;false;false;0;0;0;;; -21779;5;0;false;false;;;;;; -21784;4;1;false;false;127;0;85;;; -21788;6;0;false;false;;;;;; -21794;2;1;false;false;127;0;85;;; -21796;1;0;false;false;;;;;; -21797;10;0;false;false;0;0;0;;; -21807;1;0;false;false;;;;;; -21808;2;0;false;false;0;0;0;;; -21810;1;0;false;false;;;;;; -21811;6;0;false;false;0;0;0;;; -21817;1;0;false;false;;;;;; -21818;1;0;false;false;0;0;0;;; -21819;6;0;false;false;;;;;; -21825;5;0;false;false;0;0;0;;; -21830;1;0;false;false;;;;;; -21831;1;0;false;false;0;0;0;;; -21832;1;0;false;false;;;;;; -21833;12;0;false;false;0;0;0;;; -21845;1;0;false;false;;;;;; -21846;1;0;false;false;0;0;0;;; -21847;1;0;false;false;;;;;; -21848;16;0;false;false;0;0;0;;; -21864;1;0;false;false;;;;;; -21865;1;0;false;false;0;0;0;;; -21866;1;0;false;false;;;;;; -21867;13;0;false;false;0;0;0;;; -21880;5;0;false;false;;;;;; -21885;1;0;false;false;0;0;0;;; -21886;5;0;false;false;;;;;; -21891;15;0;false;false;0;0;0;;; -21906;1;0;false;false;;;;;; -21907;6;0;false;false;0;0;0;;; -21913;1;0;false;false;;;;;; -21914;7;0;false;false;0;0;0;;; -21921;5;0;false;false;;;;;; -21926;17;0;false;false;0;0;0;;; -21943;4;0;false;false;;;;;; -21947;1;0;false;false;0;0;0;;; -21948;3;0;false;false;;;;;; -21951;1;0;false;false;0;0;0;;; -21952;3;0;false;false;;;;;; -21955;3;0;false;false;63;95;191;;; -21958;4;0;false;false;;;;;; -21962;1;0;false;false;63;95;191;;; -21963;1;0;false;false;;;;;; -21964;6;0;false;false;63;95;191;;; -21970;1;0;false;false;;;;;; -21971;1;0;false;false;63;95;191;;; -21972;1;0;false;false;;;;;; -21973;5;0;false;false;63;95;191;;; -21978;1;0;false;false;;;;;; -21979;3;0;false;false;63;95;191;;; -21982;1;0;false;false;;;;;; -21983;3;0;false;false;63;95;191;;; -21986;1;0;false;false;;;;;; -21987;6;0;false;false;63;95;191;;; -21993;1;0;false;false;;;;;; -21994;3;0;false;false;63;95;191;;; -21997;1;0;false;false;;;;;; -21998;5;0;false;false;63;95;191;;; -22003;1;0;false;false;;;;;; -22004;9;0;false;false;63;95;191;;; -22013;1;0;false;false;;;;;; -22014;2;0;false;false;63;95;191;;; -22016;1;0;false;false;;;;;; -22017;3;0;false;false;63;95;191;;; -22020;1;0;false;false;;;;;; -22021;12;0;false;false;63;95;191;;; -22033;4;0;false;false;;;;;; -22037;2;0;false;false;63;95;191;;; -22039;3;0;false;false;;;;;; -22042;6;1;false;false;127;0;85;;; -22048;1;0;false;false;;;;;; -22049;4;1;false;false;127;0;85;;; -22053;1;0;false;false;;;;;; -22054;5;0;false;false;0;0;0;;; -22059;1;0;false;false;;;;;; -22060;1;0;false;false;0;0;0;;; -22061;4;0;false;false;;;;;; -22065;6;0;false;false;0;0;0;;; -22071;1;0;false;false;;;;;; -22072;7;0;false;false;0;0;0;;; -22079;1;0;false;false;;;;;; -22080;1;0;false;false;0;0;0;;; -22081;1;0;false;false;;;;;; -22082;21;0;false;false;0;0;0;;; -22103;8;0;false;false;;;;;; -22111;2;1;false;false;127;0;85;;; -22113;1;0;false;false;;;;;; -22114;8;0;false;false;0;0;0;;; -22122;1;0;false;false;;;;;; -22123;2;0;false;false;0;0;0;;; -22125;1;0;false;false;;;;;; -22126;4;1;false;false;127;0;85;;; -22130;1;0;false;false;0;0;0;;; -22131;1;0;false;false;;;;;; -22132;1;0;false;false;0;0;0;;; -22133;5;0;false;false;;;;;; -22138;7;0;false;false;0;0;0;;; -22145;1;0;false;false;;;;;; -22146;1;0;false;false;0;0;0;;; -22147;1;0;false;false;;;;;; -22148;10;0;false;false;42;0;255;;; -22158;1;0;false;false;0;0;0;;; -22159;4;0;false;false;;;;;; -22163;1;0;false;false;0;0;0;;; -22164;6;0;false;false;;;;;; -22170;2;1;false;false;127;0;85;;; -22172;1;0;false;false;;;;;; -22173;27;0;false;false;0;0;0;;; -22200;1;0;false;false;;;;;; -22201;1;0;false;false;0;0;0;;; -22202;5;0;false;false;;;;;; -22207;22;0;false;false;0;0;0;;; -22229;5;0;false;false;;;;;; -22234;21;0;false;false;0;0;0;;; -22255;5;0;false;false;;;;;; -22260;8;0;false;false;0;0;0;;; -22268;5;0;false;false;;;;;; -22273;10;0;false;false;0;0;0;;; -22283;5;0;false;false;;;;;; -22288;17;0;false;false;0;0;0;;; -22305;7;0;false;false;;;;;; -22312;1;0;false;false;0;0;0;;; -22313;3;0;false;false;;;;;; -22316;1;0;false;false;0;0;0;;; -22317;3;0;false;false;;;;;; -22320;3;0;false;false;63;95;191;;; -22323;4;0;false;false;;;;;; -22327;1;0;false;false;63;95;191;;; -22328;1;0;false;false;;;;;; -22329;5;0;false;false;63;95;191;;; -22334;1;0;false;false;;;;;; -22335;8;0;false;false;63;95;191;;; -22343;1;0;false;false;;;;;; -22344;1;0;false;false;63;95;191;;; -22345;1;0;false;false;;;;;; -22346;3;0;false;false;63;95;191;;; -22349;1;0;false;false;;;;;; -22350;5;0;false;false;63;95;191;;; -22355;4;0;false;false;;;;;; -22359;1;0;false;false;63;95;191;;; -22360;5;0;false;false;;;;;; -22365;1;0;false;false;63;95;191;;; -22366;1;0;false;false;;;;;; -22367;7;1;false;false;127;159;191;;; -22374;4;0;false;false;63;95;191;;; -22378;1;0;false;false;;;;;; -22379;4;0;false;false;63;95;191;;; -22383;1;0;false;false;;;;;; -22384;6;0;false;false;63;95;191;;; -22390;1;0;false;false;;;;;; -22391;2;0;false;false;63;95;191;;; -22393;1;0;false;false;;;;;; -22394;2;0;false;false;63;95;191;;; -22396;1;0;false;false;;;;;; -22397;7;0;false;false;63;95;191;;; -22404;4;0;false;false;;;;;; -22408;2;0;false;false;63;95;191;;; -22410;3;0;false;false;;;;;; -22413;4;1;false;false;127;0;85;;; -22417;1;0;false;false;;;;;; -22418;10;0;false;false;0;0;0;;; -22428;3;1;false;false;127;0;85;;; -22431;1;0;false;false;;;;;; -22432;5;0;false;false;0;0;0;;; -22437;1;0;false;false;;;;;; -22438;1;0;false;false;0;0;0;;; -22439;4;0;false;false;;;;;; -22443;20;0;false;false;0;0;0;;; -22463;4;0;false;false;;;;;; -22467;21;0;false;false;0;0;0;;; -22488;1;0;false;false;;;;;; -22489;4;1;false;false;127;0;85;;; -22493;2;0;false;false;0;0;0;;; -22495;3;0;false;false;;;;;; -22498;1;0;false;false;0;0;0;;; -22499;4;0;false;false;;;;;; -22503;1;0;false;false;0;0;0;;; -22504;3;0;false;false;;;;;; -22507;3;0;false;false;63;95;191;;; -22510;4;0;false;false;;;;;; -22514;1;0;false;false;63;95;191;;; -22515;1;0;false;false;;;;;; -22516;3;0;false;false;63;95;191;;; -22519;1;0;false;false;;;;;; -22520;6;0;false;false;127;127;159;;; -22526;9;0;false;false;63;95;191;;; -22535;7;0;false;false;127;127;159;;; -22542;1;0;false;false;;;;;; -22543;5;0;false;false;63;95;191;;; -22548;1;0;false;false;;;;;; -22549;2;0;false;false;63;95;191;;; -22551;1;0;false;false;;;;;; -22552;4;0;false;false;63;95;191;;; -22556;1;0;false;false;;;;;; -22557;2;0;false;false;63;95;191;;; -22559;1;0;false;false;;;;;; -22560;5;0;false;false;63;95;191;;; -22565;1;0;false;false;;;;;; -22566;6;0;false;false;63;95;191;;; -22572;1;0;false;false;;;;;; -22573;7;0;false;false;63;95;191;;; -22580;1;0;false;false;;;;;; -22581;2;0;false;false;63;95;191;;; -22583;4;0;false;false;;;;;; -22587;1;0;false;false;63;95;191;;; -22588;1;0;false;false;;;;;; -22589;4;0;false;false;63;95;191;;; -22593;1;0;false;false;;;;;; -22594;5;0;false;false;63;95;191;;; -22599;1;0;false;false;;;;;; -22600;3;0;false;false;63;95;191;;; -22603;1;0;false;false;;;;;; -22604;14;0;false;false;63;95;191;;; -22618;1;0;false;false;;;;;; -22619;8;0;false;false;63;95;191;;; -22627;1;0;false;false;;;;;; -22628;4;0;false;false;63;95;191;;; -22632;1;0;false;false;;;;;; -22633;3;0;false;false;63;95;191;;; -22636;1;0;false;false;;;;;; -22637;3;0;false;false;63;95;191;;; -22640;1;0;false;false;;;;;; -22641;13;0;false;false;63;95;191;;; -22654;5;0;false;false;;;;;; -22659;1;0;false;false;63;95;191;;; -22660;1;0;false;false;;;;;; -22661;7;0;false;false;63;95;191;;; -22668;1;0;false;false;;;;;; -22669;4;0;false;false;63;95;191;;; -22673;4;0;false;false;;;;;; -22677;1;0;false;false;63;95;191;;; -22678;1;0;false;false;;;;;; -22679;3;0;false;false;127;127;159;;; -22682;4;0;false;false;;;;;; -22686;1;0;false;false;63;95;191;;; -22687;1;0;false;false;;;;;; -22688;10;0;false;false;63;95;191;;; -22698;1;0;false;false;;;;;; -22699;2;0;false;false;63;95;191;;; -22701;1;0;false;false;;;;;; -22702;10;0;false;false;63;95;191;;; -22712;1;0;false;false;;;;;; -22713;2;0;false;false;63;95;191;;; -22715;1;0;false;false;;;;;; -22716;6;0;false;false;63;95;191;;; -22722;1;0;false;false;;;;;; -22723;1;0;false;false;63;95;191;;; -22724;1;0;false;false;;;;;; -22725;5;0;false;false;63;95;191;;; -22730;1;0;false;false;;;;;; -22731;3;0;false;false;63;95;191;;; -22734;1;0;false;false;;;;;; -22735;6;0;false;false;63;95;191;;; -22741;1;0;false;false;;;;;; -22742;4;0;false;false;63;95;191;;; -22746;1;0;false;false;;;;;; -22747;5;0;false;false;63;95;191;;; -22752;5;0;false;false;;;;;; -22757;1;0;false;false;63;95;191;;; -22758;1;0;false;false;;;;;; -22759;7;0;false;false;63;95;191;;; -22766;1;0;false;false;;;;;; -22767;3;0;false;false;63;95;191;;; -22770;1;0;false;false;;;;;; -22771;4;0;false;false;63;95;191;;; -22775;1;0;false;false;;;;;; -22776;7;0;false;false;63;95;191;;; -22783;5;0;false;false;;;;;; -22788;1;0;false;false;63;95;191;;; -22789;1;0;false;false;;;;;; -22790;4;0;false;false;127;127;159;;; -22794;4;0;false;false;;;;;; -22798;1;0;false;false;63;95;191;;; -22799;1;0;false;false;;;;;; -22800;3;0;false;false;127;127;159;;; -22803;4;0;false;false;;;;;; -22807;1;0;false;false;63;95;191;;; -22808;1;0;false;false;;;;;; -22809;5;0;false;false;63;95;191;;; -22814;1;0;false;false;;;;;; -22815;3;0;false;false;63;95;191;;; -22818;1;0;false;false;;;;;; -22819;7;0;false;false;63;95;191;;; -22826;1;0;false;false;;;;;; -22827;5;0;false;false;63;95;191;;; -22832;1;0;false;false;;;;;; -22833;3;0;false;false;63;95;191;;; -22836;1;0;false;false;;;;;; -22837;4;0;false;false;63;95;191;;; -22841;1;0;false;false;;;;;; -22842;6;0;false;false;63;95;191;;; -22848;1;0;false;false;;;;;; -22849;3;0;false;false;63;95;191;;; -22852;1;0;false;false;;;;;; -22853;2;0;false;false;63;95;191;;; -22855;1;0;false;false;;;;;; -22856;8;0;false;false;63;95;191;;; -22864;1;0;false;false;;;;;; -22865;5;0;false;false;63;95;191;;; -22870;1;0;false;false;;;;;; -22871;4;0;false;false;63;95;191;;; -22875;1;0;false;false;;;;;; -22876;2;0;false;false;63;95;191;;; -22878;4;0;false;false;;;;;; -22882;1;0;false;false;63;95;191;;; -22883;1;0;false;false;;;;;; -22884;9;0;false;false;63;95;191;;; -22893;1;0;false;false;;;;;; -22894;5;0;false;false;63;95;191;;; -22899;1;0;false;false;;;;;; -22900;3;0;false;false;63;95;191;;; -22903;1;0;false;false;;;;;; -22904;6;0;false;false;63;95;191;;; -22910;1;0;false;false;;;;;; -22911;7;0;false;false;63;95;191;;; -22918;1;0;false;false;;;;;; -22919;4;0;false;false;63;95;191;;; -22923;1;0;false;false;;;;;; -22924;3;0;false;false;63;95;191;;; -22927;1;0;false;false;;;;;; -22928;18;0;false;false;63;95;191;;; -22946;1;0;false;false;;;;;; -22947;2;0;false;false;63;95;191;;; -22949;5;0;false;false;;;;;; -22954;1;0;false;false;63;95;191;;; -22955;1;0;false;false;;;;;; -22956;4;0;false;false;63;95;191;;; -22960;1;0;false;false;;;;;; -22961;2;0;false;false;63;95;191;;; -22963;1;0;false;false;;;;;; -22964;5;0;false;false;63;95;191;;; -22969;1;0;false;false;;;;;; -22970;3;0;false;false;63;95;191;;; -22973;1;0;false;false;;;;;; -22974;8;0;false;false;63;95;191;;; -22982;1;0;false;false;;;;;; -22983;2;0;false;false;63;95;191;;; -22985;1;0;false;false;;;;;; -22986;3;0;false;false;63;95;191;;; -22989;1;0;false;false;;;;;; -22990;7;0;false;false;63;95;191;;; -22997;1;0;false;false;;;;;; -22998;3;0;false;false;63;95;191;;; -23001;1;0;false;false;;;;;; -23002;6;0;false;false;63;95;191;;; -23008;1;0;false;false;;;;;; -23009;3;0;false;false;63;95;191;;; -23012;1;0;false;false;;;;;; -23013;7;0;false;false;63;95;191;;; -23020;1;0;false;false;;;;;; -23021;2;0;false;false;63;95;191;;; -23023;4;0;false;false;;;;;; -23027;1;0;false;false;63;95;191;;; -23028;1;0;false;false;;;;;; -23029;3;0;false;false;63;95;191;;; -23032;1;0;false;false;;;;;; -23033;3;0;false;false;63;95;191;;; -23036;1;0;false;false;;;;;; -23037;6;0;false;false;63;95;191;;; -23043;1;0;false;false;;;;;; -23044;4;0;false;false;63;95;191;;; -23048;1;0;false;false;;;;;; -23049;4;0;false;false;63;95;191;;; -23053;1;0;false;false;;;;;; -23054;3;0;false;false;63;95;191;;; -23057;1;0;false;false;;;;;; -23058;8;0;false;false;63;95;191;;; -23066;1;0;false;false;;;;;; -23067;2;0;false;false;63;95;191;;; -23069;1;0;false;false;;;;;; -23070;3;0;false;false;63;95;191;;; -23073;1;0;false;false;;;;;; -23074;7;0;false;false;63;95;191;;; -23081;1;0;false;false;;;;;; -23082;2;0;false;false;63;95;191;;; -23084;1;0;false;false;;;;;; -23085;9;0;false;false;63;95;191;;; -23094;1;0;false;false;;;;;; -23095;3;0;false;false;63;95;191;;; -23098;5;0;false;false;;;;;; -23103;1;0;false;false;63;95;191;;; -23104;1;0;false;false;;;;;; -23105;6;0;false;false;63;95;191;;; -23111;1;0;false;false;;;;;; -23112;4;0;false;false;63;95;191;;; -23116;1;0;false;false;;;;;; -23117;4;0;false;false;63;95;191;;; -23121;1;0;false;false;;;;;; -23122;3;0;false;false;63;95;191;;; -23125;1;0;false;false;;;;;; -23126;4;0;false;false;63;95;191;;; -23130;1;0;false;false;;;;;; -23131;2;0;false;false;63;95;191;;; -23133;1;0;false;false;;;;;; -23134;4;0;false;false;63;95;191;;; -23138;1;0;false;false;;;;;; -23139;3;0;false;false;63;95;191;;; -23142;1;0;false;false;;;;;; -23143;3;0;false;false;63;95;191;;; -23146;1;0;false;false;;;;;; -23147;5;0;false;false;63;95;191;;; -23152;1;0;false;false;;;;;; -23153;5;0;false;false;63;95;191;;; -23158;4;0;false;false;;;;;; -23162;1;0;false;false;63;95;191;;; -23163;1;0;false;false;;;;;; -23164;4;0;false;false;127;127;159;;; -23168;4;0;false;false;;;;;; -23172;2;0;false;false;63;95;191;;; -23174;3;0;false;false;;;;;; -23177;5;1;false;false;127;0;85;;; -23182;1;0;false;false;;;;;; -23183;9;0;false;false;0;0;0;;; -23192;1;0;false;false;;;;;; -23193;7;1;false;false;127;0;85;;; -23200;1;0;false;false;;;;;; -23201;10;0;false;false;0;0;0;;; -23211;1;0;false;false;;;;;; -23212;1;0;false;false;0;0;0;;; -23213;4;0;false;false;;;;;; -23217;6;1;false;false;127;0;85;;; -23223;1;0;false;false;;;;;; -23224;5;1;false;false;127;0;85;;; -23229;1;0;false;false;;;;;; -23230;3;1;false;false;127;0;85;;; -23233;1;0;false;false;;;;;; -23234;18;0;false;false;0;0;0;;; -23252;1;0;false;false;;;;;; -23253;1;0;false;false;0;0;0;;; -23254;1;0;false;false;;;;;; -23255;2;0;false;false;0;0;0;;; -23257;4;0;false;false;;;;;; -23261;6;1;false;false;127;0;85;;; -23267;1;0;false;false;;;;;; -23268;5;1;false;false;127;0;85;;; -23273;1;0;false;false;;;;;; -23274;3;1;false;false;127;0;85;;; -23277;1;0;false;false;;;;;; -23278;18;0;false;false;0;0;0;;; -23296;1;0;false;false;;;;;; -23297;1;0;false;false;0;0;0;;; -23298;1;0;false;false;;;;;; -23299;2;0;false;false;0;0;0;;; -23301;4;0;false;false;;;;;; -23305;6;0;false;false;0;0;0;;; -23311;1;0;false;false;;;;;; -23312;10;0;false;false;0;0;0;;; -23322;1;0;false;false;;;;;; -23323;1;0;false;false;0;0;0;;; -23324;1;0;false;false;;;;;; -23325;3;1;false;false;127;0;85;;; -23328;1;0;false;false;;;;;; -23329;9;0;false;false;0;0;0;;; -23338;4;0;false;false;;;;;; -23342;7;1;false;false;127;0;85;;; -23349;1;0;false;false;;;;;; -23350;13;0;false;false;0;0;0;;; -23363;7;0;false;false;;;;;; -23370;3;0;false;false;63;95;191;;; -23373;4;0;false;false;;;;;; -23377;1;0;false;false;63;95;191;;; -23378;1;0;false;false;;;;;; -23379;7;0;false;false;63;95;191;;; -23386;1;0;false;false;;;;;; -23387;1;0;false;false;63;95;191;;; -23388;1;0;false;false;;;;;; -23389;3;0;false;false;63;95;191;;; -23392;1;0;false;false;;;;;; -23393;6;0;false;false;63;95;191;;; -23399;1;0;false;false;;;;;; -23400;4;0;false;false;63;95;191;;; -23404;1;0;false;false;;;;;; -23405;6;0;false;false;63;95;191;;; -23411;1;0;false;false;;;;;; -23412;7;0;false;false;63;95;191;;; -23419;1;0;false;false;;;;;; -23420;8;0;false;false;63;95;191;;; -23428;1;0;false;false;;;;;; -23429;2;0;false;false;63;95;191;;; -23431;1;0;false;false;;;;;; -23432;6;0;false;false;63;95;191;;; -23438;1;0;false;false;;;;;; -23439;7;0;false;false;63;95;191;;; -23446;4;0;false;false;;;;;; -23450;1;0;false;false;63;95;191;;; -23451;1;0;false;false;;;;;; -23452;2;0;false;false;63;95;191;;; -23454;1;0;false;false;;;;;; -23455;3;0;false;false;63;95;191;;; -23458;1;0;false;false;;;;;; -23459;9;0;false;false;63;95;191;;; -23468;2;0;false;false;;;;;; -23470;6;0;false;false;127;127;159;;; -23476;5;0;false;false;63;95;191;;; -23481;7;0;false;false;127;127;159;;; -23488;1;0;false;false;;;;;; -23489;3;0;false;false;63;95;191;;; -23492;1;0;false;false;;;;;; -23493;6;0;false;false;127;127;159;;; -23499;6;0;false;false;63;95;191;;; -23505;7;0;false;false;127;127;159;;; -23512;3;0;false;false;63;95;191;;; -23515;1;0;false;false;;;;;; -23516;2;0;false;false;63;95;191;;; -23518;1;0;false;false;;;;;; -23519;3;0;false;false;63;95;191;;; -23522;1;0;false;false;;;;;; -23523;2;0;false;false;63;95;191;;; -23525;1;0;false;false;;;;;; -23526;7;0;false;false;63;95;191;;; -23533;1;0;false;false;;;;;; -23534;7;0;false;false;63;95;191;;; -23541;5;0;false;false;;;;;; -23546;1;0;false;false;63;95;191;;; -23547;1;0;false;false;;;;;; -23548;6;0;false;false;63;95;191;;; -23554;4;0;false;false;;;;;; -23558;1;0;false;false;63;95;191;;; -23559;1;0;false;false;;;;;; -23560;3;0;false;false;127;127;159;;; -23563;4;0;false;false;;;;;; -23567;1;0;false;false;63;95;191;;; -23568;4;0;false;false;;;;;; -23572;1;0;false;false;63;95;191;;; -23573;1;0;false;false;;;;;; -23574;7;1;false;false;127;159;191;;; -23581;5;0;false;false;63;95;191;;; -23586;1;0;false;false;;;;;; -23587;5;0;false;false;63;95;191;;; -23592;1;0;false;false;;;;;; -23593;6;0;false;false;63;95;191;;; -23599;1;0;false;false;;;;;; -23600;2;0;false;false;63;95;191;;; -23602;1;0;false;false;;;;;; -23603;7;0;false;false;63;95;191;;; -23610;1;0;false;false;;;;;; -23611;2;0;false;false;63;95;191;;; -23613;1;0;false;false;;;;;; -23614;6;0;false;false;63;95;191;;; -23620;1;0;false;false;;;;;; -23621;1;0;false;false;63;95;191;;; -23622;1;0;false;false;;;;;; -23623;5;0;false;false;63;95;191;;; -23628;1;0;false;false;;;;;; -23629;4;0;false;false;63;95;191;;; -23633;5;0;false;false;;;;;; -23638;1;0;false;false;63;95;191;;; -23639;2;0;false;false;;;;;; -23641;9;0;false;false;63;95;191;;; -23650;1;0;false;false;;;;;; -23651;2;0;false;false;63;95;191;;; -23653;1;0;false;false;;;;;; -23654;8;0;false;false;63;95;191;;; -23662;4;0;false;false;;;;;; -23666;1;0;false;false;63;95;191;;; -23667;1;0;false;false;;;;;; -23668;7;1;false;false;127;159;191;;; -23675;6;0;false;false;63;95;191;;; -23681;1;0;false;false;;;;;; -23682;6;0;false;false;63;95;191;;; -23688;1;0;false;false;;;;;; -23689;2;0;false;false;63;95;191;;; -23691;1;0;false;false;;;;;; -23692;7;0;false;false;63;95;191;;; -23699;1;0;false;false;;;;;; -23700;2;0;false;false;63;95;191;;; -23702;1;0;false;false;;;;;; -23703;5;0;false;false;63;95;191;;; -23708;4;0;false;false;;;;;; -23712;2;0;false;false;63;95;191;;; -23714;3;0;false;false;;;;;; -23717;6;1;false;false;127;0;85;;; -23723;1;0;false;false;;;;;; -23724;10;0;false;false;0;0;0;;; -23734;3;1;false;false;127;0;85;;; -23737;1;0;false;false;;;;;; -23738;6;0;false;false;0;0;0;;; -23744;1;0;false;false;;;;;; -23745;3;1;false;false;127;0;85;;; -23748;1;0;false;false;;;;;; -23749;7;0;false;false;0;0;0;;; -23756;1;0;false;false;;;;;; -23757;1;0;false;false;0;0;0;;; -23758;4;0;false;false;;;;;; -23762;5;1;false;false;127;0;85;;; -23767;7;0;false;false;0;0;0;;; -23774;1;0;false;false;;;;;; -23775;8;0;false;false;0;0;0;;; -23783;4;0;false;false;;;;;; -23787;39;0;false;false;0;0;0;;; -23826;4;0;false;false;;;;;; -23830;39;0;false;false;0;0;0;;; -23869;6;0;false;false;;;;;; -23875;13;0;false;false;0;0;0;;; -23888;3;0;false;false;;;;;; -23891;1;0;false;false;0;0;0;;; -23892;3;0;false;false;;;;;; -23895;3;0;false;false;63;95;191;;; -23898;4;0;false;false;;;;;; -23902;1;0;false;false;63;95;191;;; -23903;1;0;false;false;;;;;; -23904;6;0;false;false;63;95;191;;; -23910;1;0;false;false;;;;;; -23911;3;0;false;false;63;95;191;;; -23914;1;0;false;false;;;;;; -23915;3;0;false;false;63;95;191;;; -23918;1;0;false;false;;;;;; -23919;7;0;false;false;63;95;191;;; -23926;1;0;false;false;;;;;; -23927;4;0;false;false;63;95;191;;; -23931;1;0;false;false;;;;;; -23932;6;0;false;false;63;95;191;;; -23938;1;0;false;false;;;;;; -23939;2;0;false;false;63;95;191;;; -23941;1;0;false;false;;;;;; -23942;4;0;false;false;63;95;191;;; -23946;1;0;false;false;;;;;; -23947;7;0;false;false;63;95;191;;; -23954;1;0;false;false;;;;;; -23955;3;0;false;false;63;95;191;;; -23958;1;0;false;false;;;;;; -23959;2;0;false;false;63;95;191;;; -23961;1;0;false;false;;;;;; -23962;8;0;false;false;63;95;191;;; -23970;4;0;false;false;;;;;; -23974;1;0;false;false;63;95;191;;; -23975;1;0;false;false;;;;;; -23976;3;0;false;false;127;127;159;;; -23979;5;0;false;false;63;95;191;;; -23984;4;0;false;false;127;127;159;;; -23988;2;0;false;false;;;;;; -23990;6;0;false;false;127;127;159;;; -23996;10;0;false;false;63;95;191;;; -24006;7;0;false;false;127;127;159;;; -24013;1;0;false;false;;;;;; -24014;4;0;false;false;63;95;191;;; -24018;1;0;false;false;;;;;; -24019;3;0;false;false;63;95;191;;; -24022;1;0;false;false;;;;;; -24023;6;0;false;false;63;95;191;;; -24029;1;0;false;false;;;;;; -24030;1;0;false;false;63;95;191;;; -24031;1;0;false;false;;;;;; -24032;5;0;false;false;63;95;191;;; -24037;1;0;false;false;;;;;; -24038;3;0;false;false;63;95;191;;; -24041;1;0;false;false;;;;;; -24042;6;0;false;false;63;95;191;;; -24048;1;0;false;false;;;;;; -24049;5;0;false;false;63;95;191;;; -24054;5;0;false;false;;;;;; -24059;1;0;false;false;63;95;191;;; -24060;1;0;false;false;;;;;; -24061;6;0;false;false;127;127;159;;; -24067;7;0;false;false;63;95;191;;; -24074;7;0;false;false;127;127;159;;; -24081;1;0;false;false;;;;;; -24082;3;0;false;false;63;95;191;;; -24085;1;0;false;false;;;;;; -24086;4;0;false;false;63;95;191;;; -24090;1;0;false;false;;;;;; -24091;7;0;false;false;63;95;191;;; -24098;4;0;false;false;;;;;; -24102;2;0;false;false;63;95;191;;; -24104;3;0;false;false;;;;;; -24107;6;1;false;false;127;0;85;;; -24113;1;0;false;false;;;;;; -24114;4;1;false;false;127;0;85;;; -24118;1;0;false;false;;;;;; -24119;7;0;false;false;0;0;0;;; -24126;1;0;false;false;;;;;; -24127;1;0;false;false;0;0;0;;; -24128;4;0;false;false;;;;;; -24132;2;1;false;false;127;0;85;;; -24134;1;0;false;false;;;;;; -24135;13;0;false;false;0;0;0;;; -24148;1;0;false;false;;;;;; -24149;1;0;false;false;0;0;0;;; -24150;5;0;false;false;;;;;; -24155;14;0;false;false;0;0;0;;; -24169;5;0;false;false;;;;;; -24174;6;0;false;false;0;0;0;;; -24180;8;0;false;false;42;0;255;;; -24188;2;0;false;false;0;0;0;;; -24190;5;0;false;false;;;;;; -24195;5;1;false;false;127;0;85;;; -24200;9;0;false;false;0;0;0;;; -24209;4;0;false;false;;;;;; -24213;1;0;false;false;0;0;0;;; -24214;3;0;false;false;;;;;; -24217;1;0;false;false;0;0;0;;; -24218;4;0;false;false;;;;;; -24222;3;0;false;false;63;95;191;;; -24225;4;0;false;false;;;;;; -24229;1;0;false;false;63;95;191;;; -24230;1;0;false;false;;;;;; -24231;7;0;false;false;63;95;191;;; -24238;1;0;false;false;;;;;; -24239;3;0;false;false;63;95;191;;; -24242;1;0;false;false;;;;;; -24243;5;0;false;false;63;95;191;;; -24248;1;0;false;false;;;;;; -24249;2;0;false;false;63;95;191;;; -24251;1;0;false;false;;;;;; -24252;3;0;false;false;63;95;191;;; -24255;1;0;false;false;;;;;; -24256;9;0;false;false;63;95;191;;; -24265;1;0;false;false;;;;;; -24266;5;0;false;false;63;95;191;;; -24271;1;0;false;false;;;;;; -24272;2;0;false;false;63;95;191;;; -24274;1;0;false;false;;;;;; -24275;3;0;false;false;63;95;191;;; -24278;1;0;false;false;;;;;; -24279;3;0;false;false;63;95;191;;; -24282;1;0;false;false;;;;;; -24283;5;0;false;false;63;95;191;;; -24288;1;0;false;false;;;;;; -24289;6;0;false;false;63;95;191;;; -24295;4;0;false;false;;;;;; -24299;1;0;false;false;63;95;191;;; -24300;1;0;false;false;;;;;; -24301;3;0;false;false;127;127;159;;; -24304;4;0;false;false;;;;;; -24308;1;0;false;false;63;95;191;;; -24309;4;0;false;false;;;;;; -24313;1;0;false;false;63;95;191;;; -24314;1;0;false;false;;;;;; -24315;7;1;false;false;127;159;191;;; -24322;5;0;false;false;63;95;191;;; -24327;1;0;false;false;;;;;; -24328;3;0;false;false;63;95;191;;; -24331;1;0;false;false;;;;;; -24332;5;0;false;false;63;95;191;;; -24337;4;0;false;false;;;;;; -24341;1;0;false;false;63;95;191;;; -24342;1;0;false;false;;;;;; -24343;7;1;false;false;127;159;191;;; -24350;12;0;false;false;63;95;191;;; -24362;1;0;false;false;;;;;; -24363;6;0;false;false;63;95;191;;; -24369;1;0;false;false;;;;;; -24370;5;0;false;false;63;95;191;;; -24375;1;0;false;false;;;;;; -24376;2;0;false;false;63;95;191;;; -24378;1;0;false;false;;;;;; -24379;5;0;false;false;63;95;191;;; -24384;1;0;false;false;;;;;; -24385;2;0;false;false;63;95;191;;; -24387;1;0;false;false;;;;;; -24388;4;0;false;false;63;95;191;;; -24392;4;0;false;false;;;;;; -24396;1;0;false;false;63;95;191;;; -24397;1;0;false;false;;;;;; -24398;8;1;false;false;127;159;191;;; -24406;3;0;false;false;63;95;191;;; -24409;1;0;false;false;;;;;; -24410;5;0;false;false;63;95;191;;; -24415;1;0;false;false;;;;;; -24416;2;0;false;false;63;95;191;;; -24418;1;0;false;false;;;;;; -24419;3;0;false;false;63;95;191;;; -24422;1;0;false;false;;;;;; -24423;9;0;false;false;63;95;191;;; -24432;1;0;false;false;;;;;; -24433;5;0;false;false;63;95;191;;; -24438;1;0;false;false;;;;;; -24439;2;0;false;false;63;95;191;;; -24441;1;0;false;false;;;;;; -24442;3;0;false;false;63;95;191;;; -24445;1;0;false;false;;;;;; -24446;3;0;false;false;63;95;191;;; -24449;1;0;false;false;;;;;; -24450;5;0;false;false;63;95;191;;; -24455;1;0;false;false;;;;;; -24456;5;0;false;false;63;95;191;;; -24461;4;0;false;false;;;;;; -24465;1;0;false;false;63;95;191;;; -24466;2;0;false;false;;;;;; -24468;2;0;false;false;63;95;191;;; -24470;1;0;false;false;;;;;; -24471;14;0;false;false;63;95;191;;; -24485;1;0;false;false;;;;;; -24486;2;0;false;false;63;95;191;;; -24488;1;0;false;false;;;;;; -24489;7;0;false;false;63;95;191;;; -24496;1;0;false;false;;;;;; -24497;2;0;false;false;63;95;191;;; -24499;1;0;false;false;;;;;; -24500;5;0;false;false;63;95;191;;; -24505;4;0;false;false;;;;;; -24509;2;0;false;false;63;95;191;;; -24511;3;0;false;false;;;;;; -24514;3;1;false;false;127;0;85;;; -24517;1;0;false;false;;;;;; -24518;19;0;false;false;0;0;0;;; -24537;1;0;false;false;;;;;; -24538;6;0;false;false;0;0;0;;; -24544;1;0;false;false;;;;;; -24545;3;1;false;false;127;0;85;;; -24548;1;0;false;false;;;;;; -24549;13;0;false;false;0;0;0;;; -24562;1;0;false;false;;;;;; -24563;1;0;false;false;0;0;0;;; -24564;4;0;false;false;;;;;; -24568;3;1;false;false;127;0;85;;; -24571;1;0;false;false;;;;;; -24572;6;0;false;false;0;0;0;;; -24578;8;0;false;false;;;;;; -24586;2;1;false;false;127;0;85;;; -24588;1;0;false;false;;;;;; -24589;6;0;false;false;0;0;0;;; -24595;1;0;false;false;;;;;; -24596;2;0;false;false;0;0;0;;; -24598;1;0;false;false;;;;;; -24599;4;1;false;false;127;0;85;;; -24603;1;0;false;false;0;0;0;;; -24604;1;0;false;false;;;;;; -24605;1;0;false;false;0;0;0;;; -24606;5;0;false;false;;;;;; -24611;5;0;false;false;0;0;0;;; -24616;1;0;false;false;;;;;; -24617;1;0;false;false;0;0;0;;; -24618;1;0;false;false;;;;;; -24619;13;0;false;false;0;0;0;;; -24632;4;0;false;false;;;;;; -24636;1;0;false;false;0;0;0;;; -24637;4;0;false;false;;;;;; -24641;4;1;false;false;127;0;85;;; -24645;1;0;false;false;;;;;; -24646;1;0;false;false;0;0;0;;; -24647;7;0;false;false;;;;;; -24654;5;0;false;false;0;0;0;;; -24659;1;0;false;false;;;;;; -24660;1;0;false;false;0;0;0;;; -24661;1;0;false;false;;;;;; -24662;26;0;false;false;0;0;0;;; -24688;5;0;false;false;;;;;; -24693;2;1;false;false;127;0;85;;; -24695;1;0;false;false;;;;;; -24696;6;0;false;false;0;0;0;;; -24702;1;0;false;false;;;;;; -24703;2;0;false;false;0;0;0;;; -24705;1;0;false;false;;;;;; -24706;3;0;false;false;0;0;0;;; -24709;1;0;false;false;;;;;; -24710;1;0;false;false;0;0;0;;; -24711;6;0;false;false;;;;;; -24717;5;0;false;false;0;0;0;;; -24722;1;0;false;false;;;;;; -24723;1;0;false;false;0;0;0;;; -24724;1;0;false;false;;;;;; -24725;18;0;false;false;0;0;0;;; -24743;6;0;false;false;;;;;; -24749;29;0;false;false;0;0;0;;; -24778;5;0;false;false;;;;;; -24783;1;0;false;false;0;0;0;;; -24784;4;0;false;false;;;;;; -24788;1;0;false;false;0;0;0;;; -24789;4;0;false;false;;;;;; -24793;6;1;false;false;127;0;85;;; -24799;1;0;false;false;;;;;; -24800;6;0;false;false;0;0;0;;; -24806;3;0;false;false;;;;;; -24809;1;0;false;false;0;0;0;;; -24810;3;0;false;false;;;;;; -24813;3;0;false;false;63;95;191;;; -24816;4;0;false;false;;;;;; -24820;1;0;false;false;63;95;191;;; -24821;1;0;false;false;;;;;; -24822;10;0;false;false;63;95;191;;; -24832;1;0;false;false;;;;;; -24833;2;0;false;false;63;95;191;;; -24835;1;0;false;false;;;;;; -24836;7;0;false;false;63;95;191;;; -24843;1;0;false;false;;;;;; -24844;3;0;false;false;63;95;191;;; -24847;1;0;false;false;;;;;; -24848;6;0;false;false;63;95;191;;; -24854;1;0;false;false;;;;;; -24855;2;0;false;false;63;95;191;;; -24857;1;0;false;false;;;;;; -24858;8;0;false;false;63;95;191;;; -24866;4;0;false;false;;;;;; -24870;1;0;false;false;63;95;191;;; -24871;1;0;false;false;;;;;; -24872;5;0;false;false;63;95;191;;; -24877;1;0;false;false;;;;;; -24878;5;0;false;false;63;95;191;;; -24883;1;0;false;false;;;;;; -24884;7;0;false;false;63;95;191;;; -24891;1;0;false;false;;;;;; -24892;3;0;false;false;63;95;191;;; -24895;1;0;false;false;;;;;; -24896;2;0;false;false;63;95;191;;; -24898;1;0;false;false;;;;;; -24899;7;0;false;false;63;95;191;;; -24906;1;0;false;false;;;;;; -24907;8;0;false;false;63;95;191;;; -24915;1;0;false;false;;;;;; -24916;2;0;false;false;63;95;191;;; -24918;1;0;false;false;;;;;; -24919;3;0;false;false;63;95;191;;; -24922;4;0;false;false;;;;;; -24926;2;0;false;false;63;95;191;;; -24928;3;0;false;false;;;;;; -24931;4;1;false;false;127;0;85;;; -24935;1;0;false;false;;;;;; -24936;12;0;false;false;0;0;0;;; -24948;1;0;false;false;;;;;; -24949;1;0;false;false;0;0;0;;; -24950;4;0;false;false;;;;;; -24954;5;1;false;false;127;0;85;;; -24959;1;0;false;false;;;;;; -24960;6;0;false;false;0;0;0;;; -24966;1;0;false;false;;;;;; -24967;5;0;false;false;0;0;0;;; -24972;1;0;false;false;;;;;; -24973;1;0;false;false;0;0;0;;; -24974;1;0;false;false;;;;;; -24975;12;0;false;false;42;0;255;;; -24987;1;0;false;false;0;0;0;;; -24988;4;0;false;false;;;;;; -24992;5;1;false;false;127;0;85;;; -24997;1;0;false;false;;;;;; -24998;6;0;false;false;0;0;0;;; -25004;1;0;false;false;;;;;; -25005;5;0;false;false;0;0;0;;; -25010;1;0;false;false;;;;;; -25011;1;0;false;false;0;0;0;;; -25012;1;0;false;false;;;;;; -25013;12;0;false;false;42;0;255;;; -25025;1;0;false;false;0;0;0;;; -25026;4;0;false;false;;;;;; -25030;5;1;false;false;127;0;85;;; -25035;1;0;false;false;;;;;; -25036;6;0;false;false;0;0;0;;; -25042;1;0;false;false;;;;;; -25043;5;0;false;false;0;0;0;;; -25048;1;0;false;false;;;;;; -25049;1;0;false;false;0;0;0;;; -25050;1;0;false;false;;;;;; -25051;12;0;false;false;42;0;255;;; -25063;1;0;false;false;0;0;0;;; -25064;6;0;false;false;;;;;; -25070;5;1;false;false;127;0;85;;; -25075;1;0;false;false;;;;;; -25076;6;0;false;false;0;0;0;;; -25082;1;0;false;false;;;;;; -25083;5;0;false;false;0;0;0;;; -25088;1;0;false;false;;;;;; -25089;1;0;false;false;0;0;0;;; -25090;1;0;false;false;;;;;; -25091;12;0;false;false;42;0;255;;; -25103;1;0;false;false;0;0;0;;; -25104;4;0;false;false;;;;;; -25108;6;0;false;false;0;0;0;;; -25114;1;0;false;false;;;;;; -25115;6;0;false;false;0;0;0;;; -25121;1;0;false;false;;;;;; -25122;1;0;false;false;0;0;0;;; -25123;1;0;false;false;;;;;; -25124;19;0;false;false;0;0;0;;; -25143;9;0;false;false;42;0;255;;; -25152;16;0;false;false;0;0;0;;; -25168;4;0;false;false;;;;;; -25172;6;0;false;false;0;0;0;;; -25178;1;0;false;false;;;;;; -25179;9;0;false;false;0;0;0;;; -25188;1;0;false;false;;;;;; -25189;1;0;false;false;0;0;0;;; -25190;1;0;false;false;;;;;; -25191;19;0;false;false;0;0;0;;; -25210;12;0;false;false;42;0;255;;; -25222;2;0;false;false;0;0;0;;; -25224;4;0;false;false;;;;;; -25228;3;1;false;false;127;0;85;;; -25231;1;0;false;false;;;;;; -25232;12;0;false;false;0;0;0;;; -25244;1;0;false;false;;;;;; -25245;1;0;false;false;0;0;0;;; -25246;1;0;false;false;;;;;; -25247;2;0;false;false;0;0;0;;; -25249;8;0;false;false;;;;;; -25257;2;1;false;false;127;0;85;;; -25259;1;0;false;false;;;;;; -25260;25;0;false;false;0;0;0;;; -25285;1;0;false;false;;;;;; -25286;2;0;false;false;0;0;0;;; -25288;1;0;false;false;;;;;; -25289;9;0;false;false;0;0;0;;; -25298;1;0;false;false;;;;;; -25299;2;0;false;false;0;0;0;;; -25301;1;0;false;false;;;;;; -25302;4;1;false;false;127;0;85;;; -25306;1;0;false;false;0;0;0;;; -25307;1;0;false;false;;;;;; -25308;1;0;false;false;0;0;0;;; -25309;5;0;false;false;;;;;; -25314;3;1;false;false;127;0;85;;; -25317;1;0;false;false;;;;;; -25318;10;0;false;false;0;0;0;;; -25328;1;0;false;false;;;;;; -25329;1;0;false;false;0;0;0;;; -25330;1;0;false;false;;;;;; -25331;18;0;false;false;0;0;0;;; -25349;3;0;false;false;42;0;255;;; -25352;2;0;false;false;0;0;0;;; -25354;5;0;false;false;;;;;; -25359;2;1;false;false;127;0;85;;; -25361;1;0;false;false;;;;;; -25362;11;0;false;false;0;0;0;;; -25373;1;0;false;false;;;;;; -25374;2;0;false;false;0;0;0;;; -25376;1;0;false;false;;;;;; -25377;3;0;false;false;0;0;0;;; -25380;1;0;false;false;;;;;; -25381;1;0;false;false;0;0;0;;; -25382;6;0;false;false;;;;;; -25388;9;0;false;false;0;0;0;;; -25397;1;0;false;false;;;;;; -25398;1;0;false;false;0;0;0;;; -25399;1;0;false;false;;;;;; -25400;22;0;false;false;0;0;0;;; -25422;1;0;false;false;;;;;; -25423;12;0;false;false;0;0;0;;; -25435;6;0;false;false;;;;;; -25441;3;1;false;false;127;0;85;;; -25444;1;0;false;false;;;;;; -25445;1;0;false;false;0;0;0;;; -25446;7;0;false;false;;;;;; -25453;12;0;false;false;0;0;0;;; -25465;1;0;false;false;;;;;; -25466;1;0;false;false;0;0;0;;; -25467;1;0;false;false;;;;;; -25468;28;0;false;false;0;0;0;;; -25496;6;0;false;false;;;;;; -25502;1;0;false;false;0;0;0;;; -25503;6;0;false;false;;;;;; -25509;5;1;false;false;127;0;85;;; -25514;1;0;false;false;;;;;; -25515;22;0;false;false;0;0;0;;; -25537;1;0;false;false;;;;;; -25538;10;0;false;false;0;0;0;;; -25548;1;0;false;false;;;;;; -25549;1;0;false;false;0;0;0;;; -25550;7;0;false;false;;;;;; -25557;54;0;false;false;63;127;95;;; -25611;5;0;false;false;;;;;; -25616;31;0;false;false;63;127;95;;; -25647;4;0;false;false;;;;;; -25651;1;0;false;false;0;0;0;;; -25652;5;0;false;false;;;;;; -25657;1;0;false;false;0;0;0;;; -25658;4;0;false;false;;;;;; -25662;1;0;false;false;0;0;0;;; -25663;4;0;false;false;;;;;; -25667;2;1;false;false;127;0;85;;; -25669;1;0;false;false;;;;;; -25670;26;0;false;false;0;0;0;;; -25696;1;0;false;false;;;;;; -25697;2;0;false;false;0;0;0;;; -25699;5;0;false;false;;;;;; -25704;25;0;false;false;0;0;0;;; -25729;1;0;false;false;;;;;; -25730;2;0;false;false;0;0;0;;; -25732;5;0;false;false;;;;;; -25737;25;0;false;false;0;0;0;;; -25762;1;0;false;false;;;;;; -25763;2;0;false;false;0;0;0;;; -25765;5;0;false;false;;;;;; -25770;26;0;false;false;0;0;0;;; -25796;1;0;false;false;;;;;; -25797;2;0;false;false;0;0;0;;; -25799;1;0;false;false;;;;;; -25800;12;0;false;false;0;0;0;;; -25812;1;0;false;false;;;;;; -25813;1;0;false;false;0;0;0;;; -25814;1;0;false;false;;;;;; -25815;3;0;false;false;0;0;0;;; -25818;1;0;false;false;;;;;; -25819;1;0;false;false;0;0;0;;; -25820;5;0;false;false;;;;;; -25825;12;0;false;false;0;0;0;;; -25837;1;0;false;false;;;;;; -25838;1;0;false;false;0;0;0;;; -25839;1;0;false;false;;;;;; -25840;4;1;false;false;127;0;85;;; -25844;1;0;false;false;0;0;0;;; -25845;4;0;false;false;;;;;; -25849;1;0;false;false;0;0;0;;; -25850;4;0;false;false;;;;;; -25854;4;1;false;false;127;0;85;;; -25858;1;0;false;false;;;;;; -25859;1;0;false;false;0;0;0;;; -25860;5;0;false;false;;;;;; -25865;12;0;false;false;0;0;0;;; -25877;1;0;false;false;;;;;; -25878;1;0;false;false;0;0;0;;; -25879;1;0;false;false;;;;;; -25880;5;1;false;false;127;0;85;;; -25885;1;0;false;false;0;0;0;;; -25886;4;0;false;false;;;;;; -25890;1;0;false;false;0;0;0;;; -25891;3;0;false;false;;;;;; -25894;1;0;false;false;0;0;0;;; -25895;3;0;false;false;;;;;; -25898;3;0;false;false;63;95;191;;; -25901;4;0;false;false;;;;;; -25905;1;0;false;false;63;95;191;;; -25906;1;0;false;false;;;;;; -25907;7;0;false;false;63;95;191;;; -25914;1;0;false;false;;;;;; -25915;3;0;false;false;63;95;191;;; -25918;1;0;false;false;;;;;; -25919;9;0;false;false;63;95;191;;; -25928;1;0;false;false;;;;;; -25929;7;0;false;false;63;95;191;;; -25936;1;0;false;false;;;;;; -25937;2;0;false;false;63;95;191;;; -25939;1;0;false;false;;;;;; -25940;8;0;false;false;63;95;191;;; -25948;1;0;false;false;;;;;; -25949;2;0;false;false;63;95;191;;; -25951;1;0;false;false;;;;;; -25952;3;0;false;false;63;95;191;;; -25955;1;0;false;false;;;;;; -25956;3;0;false;false;63;95;191;;; -25959;1;0;false;false;;;;;; -25960;5;0;false;false;63;95;191;;; -25965;4;0;false;false;;;;;; -25969;1;0;false;false;63;95;191;;; -25970;1;0;false;false;;;;;; -25971;4;0;false;false;63;95;191;;; -25975;1;0;false;false;;;;;; -25976;4;0;false;false;63;95;191;;; -25980;1;0;false;false;;;;;; -25981;6;0;false;false;127;127;159;;; -25987;5;0;false;false;63;95;191;;; -25992;7;0;false;false;127;127;159;;; -25999;1;0;false;false;;;;;; -26000;2;0;false;false;63;95;191;;; -26002;1;0;false;false;;;;;; -26003;3;0;false;false;63;95;191;;; -26006;1;0;false;false;;;;;; -26007;3;0;false;false;63;95;191;;; -26010;1;0;false;false;;;;;; -26011;10;0;false;false;63;95;191;;; -26021;1;0;false;false;;;;;; -26022;6;0;false;false;127;127;159;;; -26028;3;0;false;false;63;95;191;;; -26031;7;0;false;false;127;127;159;;; -26038;1;0;false;false;63;95;191;;; -26039;4;0;false;false;;;;;; -26043;1;0;false;false;63;95;191;;; -26044;1;0;false;false;;;;;; -26045;3;0;false;false;127;127;159;;; -26048;4;0;false;false;;;;;; -26052;1;0;false;false;63;95;191;;; -26053;4;0;false;false;;;;;; -26057;1;0;false;false;63;95;191;;; -26058;1;0;false;false;;;;;; -26059;7;1;false;false;127;159;191;;; -26066;6;0;false;false;63;95;191;;; -26072;1;0;false;false;;;;;; -26073;6;0;false;false;63;95;191;;; -26079;1;0;false;false;;;;;; -26080;2;0;false;false;63;95;191;;; -26082;1;0;false;false;;;;;; -26083;4;0;false;false;63;95;191;;; -26087;1;0;false;false;;;;;; -26088;1;0;false;false;63;95;191;;; -26089;1;0;false;false;;;;;; -26090;7;0;false;false;63;95;191;;; -26097;1;0;false;false;;;;;; -26098;5;0;false;false;63;95;191;;; -26103;1;0;false;false;;;;;; -26104;4;0;false;false;63;95;191;;; -26108;1;0;false;false;;;;;; -26109;3;0;false;false;63;95;191;;; -26112;1;0;false;false;;;;;; -26113;7;0;false;false;63;95;191;;; -26120;4;0;false;false;;;;;; -26124;1;0;false;false;63;95;191;;; -26125;2;0;false;false;;;;;; -26127;4;0;false;false;63;95;191;;; -26131;1;0;false;false;;;;;; -26132;7;0;false;false;63;95;191;;; -26139;1;0;false;false;;;;;; -26140;4;0;false;false;63;95;191;;; -26144;1;0;false;false;;;;;; -26145;6;0;false;false;63;95;191;;; -26151;1;0;false;false;;;;;; -26152;6;0;false;false;63;95;191;;; -26158;1;0;false;false;;;;;; -26159;2;0;false;false;63;95;191;;; -26161;1;0;false;false;;;;;; -26162;7;0;false;false;63;95;191;;; -26169;1;0;false;false;;;;;; -26170;5;0;false;false;63;95;191;;; -26175;1;0;false;false;;;;;; -26176;20;0;false;false;63;95;191;;; -26196;4;0;false;false;;;;;; -26200;1;0;false;false;63;95;191;;; -26201;1;0;false;false;;;;;; -26202;7;1;false;false;127;159;191;;; -26209;5;0;false;false;63;95;191;;; -26214;1;0;false;false;;;;;; -26215;5;0;false;false;63;95;191;;; -26220;1;0;false;false;;;;;; -26221;6;0;false;false;63;95;191;;; -26227;1;0;false;false;;;;;; -26228;2;0;false;false;63;95;191;;; -26230;1;0;false;false;;;;;; -26231;8;0;false;false;63;95;191;;; -26239;1;0;false;false;;;;;; -26240;1;0;false;false;63;95;191;;; -26241;1;0;false;false;;;;;; -26242;6;0;false;false;63;95;191;;; -26248;4;0;false;false;;;;;; -26252;1;0;false;false;63;95;191;;; -26253;1;0;false;false;;;;;; -26254;7;1;false;false;127;159;191;;; -26261;3;0;false;false;63;95;191;;; -26264;1;0;false;false;;;;;; -26265;3;0;false;false;63;95;191;;; -26268;1;0;false;false;;;;;; -26269;6;0;false;false;63;95;191;;; -26275;1;0;false;false;;;;;; -26276;2;0;false;false;63;95;191;;; -26278;1;0;false;false;;;;;; -26279;7;0;false;false;63;95;191;;; -26286;4;0;false;false;;;;;; -26290;2;0;false;false;63;95;191;;; -26292;3;0;false;false;;;;;; -26295;4;1;false;false;127;0;85;;; -26299;1;0;false;false;;;;;; -26300;12;0;false;false;0;0;0;;; -26312;1;0;false;false;;;;;; -26313;7;0;false;false;0;0;0;;; -26320;1;0;false;false;;;;;; -26321;3;1;false;false;127;0;85;;; -26324;1;0;false;false;;;;;; -26325;6;0;false;false;0;0;0;;; -26331;1;0;false;false;;;;;; -26332;3;1;false;false;127;0;85;;; -26335;1;0;false;false;;;;;; -26336;4;0;false;false;0;0;0;;; -26340;1;0;false;false;;;;;; -26341;1;0;false;false;0;0;0;;; -26342;4;0;false;false;;;;;; -26346;3;1;false;false;127;0;85;;; -26349;1;0;false;false;;;;;; -26350;1;0;false;false;0;0;0;;; -26351;3;1;false;false;127;0;85;;; -26354;1;0;false;false;;;;;; -26355;5;0;false;false;0;0;0;;; -26360;1;0;false;false;;;;;; -26361;1;0;false;false;0;0;0;;; -26362;1;0;false;false;;;;;; -26363;6;0;false;false;0;0;0;;; -26369;1;0;false;false;;;;;; -26370;5;0;false;false;0;0;0;;; -26375;1;0;false;false;;;;;; -26376;1;0;false;false;0;0;0;;; -26377;1;0;false;false;;;;;; -26378;4;0;false;false;0;0;0;;; -26382;1;0;false;false;;;;;; -26383;8;0;false;false;0;0;0;;; -26391;1;0;false;false;;;;;; -26392;1;0;false;false;0;0;0;;; -26393;5;0;false;false;;;;;; -26398;4;1;false;false;127;0;85;;; -26402;1;0;false;false;;;;;; -26403;2;0;false;false;0;0;0;;; -26405;1;0;false;false;;;;;; -26406;1;0;false;false;0;0;0;;; -26407;1;0;false;false;;;;;; -26408;21;0;false;false;0;0;0;;; -26429;5;0;false;false;;;;;; -26434;2;1;false;false;127;0;85;;; -26436;1;0;false;false;;;;;; -26437;3;0;false;false;0;0;0;;; -26440;1;0;false;false;;;;;; -26441;1;0;false;false;0;0;0;;; -26442;1;0;false;false;;;;;; -26443;4;0;false;false;0;0;0;;; -26447;1;0;false;false;;;;;; -26448;2;0;false;false;0;0;0;;; -26450;1;0;false;false;;;;;; -26451;13;0;false;false;0;0;0;;; -26464;1;0;false;false;;;;;; -26465;1;0;false;false;0;0;0;;; -26466;6;0;false;false;;;;;; -26472;58;0;false;false;63;127;95;;; -26530;4;0;false;false;;;;;; -26534;41;0;false;false;63;127;95;;; -26575;4;0;false;false;;;;;; -26579;2;1;false;false;127;0;85;;; -26581;1;0;false;false;;;;;; -26582;6;0;false;false;0;0;0;;; -26588;1;0;false;false;;;;;; -26589;1;0;false;false;0;0;0;;; -26590;1;0;false;false;;;;;; -26591;6;0;false;false;0;0;0;;; -26597;1;0;false;false;;;;;; -26598;1;0;false;false;0;0;0;;; -26599;7;0;false;false;;;;;; -26606;29;0;false;false;0;0;0;;; -26635;1;0;false;false;;;;;; -26636;8;0;false;false;0;0;0;;; -26644;6;0;false;false;;;;;; -26650;1;0;false;false;0;0;0;;; -26651;6;0;false;false;;;;;; -26657;6;0;false;false;0;0;0;;; -26663;5;0;false;false;42;0;255;;; -26668;2;0;false;false;0;0;0;;; -26670;6;0;false;false;;;;;; -26676;24;0;false;false;0;0;0;;; -26700;5;1;false;false;127;0;85;;; -26705;1;0;false;false;0;0;0;;; -26706;1;0;false;false;;;;;; -26707;5;0;false;false;0;0;0;;; -26712;6;0;false;false;;;;;; -26718;6;0;false;false;0;0;0;;; -26724;3;0;false;false;42;0;255;;; -26727;2;0;false;false;0;0;0;;; -26729;6;0;false;false;;;;;; -26735;27;0;false;false;63;127;95;;; -26762;4;0;false;false;;;;;; -26766;5;0;false;false;0;0;0;;; -26771;1;0;false;false;;;;;; -26772;1;0;false;false;0;0;0;;; -26773;1;0;false;false;;;;;; -26774;5;0;false;false;0;0;0;;; -26779;1;0;false;false;;;;;; -26780;1;0;false;false;0;0;0;;; -26781;1;0;false;false;;;;;; -26782;2;0;false;false;0;0;0;;; -26784;5;0;false;false;;;;;; -26789;1;0;false;false;0;0;0;;; -26790;5;0;false;false;;;;;; -26795;4;1;false;false;127;0;85;;; -26799;5;0;false;false;;;;;; -26804;2;1;false;false;127;0;85;;; -26806;1;0;false;false;;;;;; -26807;3;0;false;false;0;0;0;;; -26810;1;0;false;false;;;;;; -26811;2;0;false;false;0;0;0;;; -26813;1;0;false;false;;;;;; -26814;3;0;false;false;42;0;255;;; -26817;1;0;false;false;;;;;; -26818;2;0;false;false;0;0;0;;; -26820;1;0;false;false;;;;;; -26821;2;0;false;false;0;0;0;;; -26823;1;0;false;false;;;;;; -26824;2;0;false;false;0;0;0;;; -26826;1;0;false;false;;;;;; -26827;3;0;false;false;42;0;255;;; -26830;1;0;false;false;;;;;; -26831;2;0;false;false;0;0;0;;; -26833;1;0;false;false;;;;;; -26834;2;0;false;false;0;0;0;;; -26836;1;0;false;false;;;;;; -26837;2;0;false;false;0;0;0;;; -26839;1;0;false;false;;;;;; -26840;4;0;false;false;42;0;255;;; -26844;1;0;false;false;0;0;0;;; -26845;1;0;false;false;;;;;; -26846;1;0;false;false;0;0;0;;; -26847;6;0;false;false;;;;;; -26853;58;0;false;false;63;127;95;;; -26911;4;0;false;false;;;;;; -26915;41;0;false;false;63;127;95;;; -26956;4;0;false;false;;;;;; -26960;2;1;false;false;127;0;85;;; -26962;1;0;false;false;;;;;; -26963;6;0;false;false;0;0;0;;; -26969;1;0;false;false;;;;;; -26970;1;0;false;false;0;0;0;;; -26971;1;0;false;false;;;;;; -26972;6;0;false;false;0;0;0;;; -26978;1;0;false;false;;;;;; -26979;1;0;false;false;0;0;0;;; -26980;7;0;false;false;;;;;; -26987;29;0;false;false;0;0;0;;; -27016;1;0;false;false;;;;;; -27017;8;0;false;false;0;0;0;;; -27025;6;0;false;false;;;;;; -27031;1;0;false;false;0;0;0;;; -27032;6;0;false;false;;;;;; -27038;6;0;false;false;0;0;0;;; -27044;4;0;false;false;42;0;255;;; -27048;2;0;false;false;0;0;0;;; -27050;6;0;false;false;;;;;; -27056;10;0;false;false;0;0;0;;; -27066;6;0;false;false;;;;;; -27072;5;0;false;false;0;0;0;;; -27077;1;0;false;false;;;;;; -27078;1;0;false;false;0;0;0;;; -27079;1;0;false;false;;;;;; -27080;5;0;false;false;0;0;0;;; -27085;1;0;false;false;;;;;; -27086;1;0;false;false;0;0;0;;; -27087;1;0;false;false;;;;;; -27088;2;0;false;false;0;0;0;;; -27090;5;0;false;false;;;;;; -27095;1;0;false;false;0;0;0;;; -27096;4;0;false;false;;;;;; -27100;1;0;false;false;0;0;0;;; -27101;4;0;false;false;;;;;; -27105;54;0;false;false;63;127;95;;; -27159;2;0;false;false;;;;;; -27161;21;0;false;false;63;127;95;;; -27182;2;0;false;false;;;;;; -27184;2;1;false;false;127;0;85;;; -27186;1;0;false;false;;;;;; -27187;6;0;false;false;0;0;0;;; -27193;1;0;false;false;;;;;; -27194;1;0;false;false;0;0;0;;; -27195;1;0;false;false;;;;;; -27196;4;0;false;false;0;0;0;;; -27200;1;0;false;false;;;;;; -27201;1;0;false;false;0;0;0;;; -27202;5;0;false;false;;;;;; -27207;29;0;false;false;0;0;0;;; -27236;1;0;false;false;;;;;; -27237;6;0;false;false;0;0;0;;; -27243;4;0;false;false;;;;;; -27247;1;0;false;false;0;0;0;;; -27248;3;0;false;false;;;;;; -27251;1;0;false;false;0;0;0;;; -27252;4;0;false;false;;;;;; -27256;3;0;false;false;63;95;191;;; -27259;4;0;false;false;;;;;; -27263;1;0;false;false;63;95;191;;; -27264;1;0;false;false;;;;;; -27265;6;0;false;false;63;95;191;;; -27271;1;0;false;false;;;;;; -27272;3;0;false;false;63;95;191;;; -27275;1;0;false;false;;;;;; -27276;3;0;false;false;63;95;191;;; -27279;1;0;false;false;;;;;; -27280;6;0;false;false;63;95;191;;; -27286;1;0;false;false;;;;;; -27287;9;0;false;false;63;95;191;;; -27296;1;0;false;false;;;;;; -27297;4;0;false;false;63;95;191;;; -27301;1;0;false;false;;;;;; -27302;5;0;false;false;63;95;191;;; -27307;1;0;false;false;;;;;; -27308;3;0;false;false;63;95;191;;; -27311;1;0;false;false;;;;;; -27312;5;0;false;false;63;95;191;;; -27317;1;0;false;false;;;;;; -27318;6;0;false;false;63;95;191;;; -27324;4;0;false;false;;;;;; -27328;2;0;false;false;63;95;191;;; -27330;3;0;false;false;;;;;; -27333;4;1;false;false;127;0;85;;; -27337;1;0;false;false;;;;;; -27338;13;0;false;false;0;0;0;;; -27351;1;0;false;false;;;;;; -27352;1;0;false;false;0;0;0;;; -27353;4;0;false;false;;;;;; -27357;12;0;false;false;0;0;0;;; -27369;1;0;false;false;;;;;; -27370;6;0;false;false;0;0;0;;; -27376;1;0;false;false;;;;;; -27377;1;0;false;false;0;0;0;;; -27378;1;0;false;false;;;;;; -27379;3;1;false;false;127;0;85;;; -27382;1;0;false;false;;;;;; -27383;15;0;false;false;0;0;0;;; -27398;4;0;false;false;;;;;; -27402;8;0;false;false;0;0;0;;; -27410;1;0;false;false;;;;;; -27411;8;0;false;false;0;0;0;;; -27419;1;0;false;false;;;;;; -27420;1;0;false;false;0;0;0;;; -27421;1;0;false;false;;;;;; -27422;27;0;false;false;0;0;0;;; -27449;4;0;false;false;;;;;; -27453;14;0;false;false;0;0;0;;; -27467;15;0;false;false;42;0;255;;; -27482;2;0;false;false;0;0;0;;; -27484;4;0;false;false;;;;;; -27488;59;0;false;false;63;127;95;;; -27547;2;0;false;false;;;;;; -27549;44;0;false;false;63;127;95;;; -27593;2;0;false;false;;;;;; -27595;6;0;false;false;0;0;0;;; -27601;1;0;false;false;;;;;; -27602;3;0;false;false;0;0;0;;; -27605;1;0;false;false;;;;;; -27606;1;0;false;false;0;0;0;;; -27607;1;0;false;false;;;;;; -27608;19;0;false;false;0;0;0;;; -27627;15;0;false;false;42;0;255;;; -27642;16;0;false;false;0;0;0;;; -27658;4;0;false;false;;;;;; -27662;2;1;false;false;127;0;85;;; -27664;1;0;false;false;;;;;; -27665;16;0;false;false;0;0;0;;; -27681;4;0;false;false;42;0;255;;; -27685;1;0;false;false;0;0;0;;; -27686;1;0;false;false;;;;;; -27687;2;0;false;false;0;0;0;;; -27689;1;0;false;false;;;;;; -27690;15;0;false;false;0;0;0;;; -27705;4;0;false;false;42;0;255;;; -27709;2;0;false;false;0;0;0;;; -27711;1;0;false;false;;;;;; -27712;1;0;false;false;0;0;0;;; -27713;5;0;false;false;;;;;; -27718;3;0;false;false;0;0;0;;; -27721;1;0;false;false;;;;;; -27722;1;0;false;false;0;0;0;;; -27723;1;0;false;false;;;;;; -27724;16;0;false;false;0;0;0;;; -27740;1;0;false;false;;;;;; -27741;14;0;false;false;0;0;0;;; -27755;5;0;false;false;;;;;; -27760;14;0;false;false;0;0;0;;; -27774;11;0;false;false;42;0;255;;; -27785;2;0;false;false;0;0;0;;; -27787;5;0;false;false;;;;;; -27792;19;0;false;false;0;0;0;;; -27811;4;0;false;false;;;;;; -27815;1;0;false;false;0;0;0;;; -27816;4;0;false;false;;;;;; -27820;14;0;false;false;0;0;0;;; -27834;36;0;false;false;42;0;255;;; -27870;2;0;false;false;0;0;0;;; -27872;4;0;false;false;;;;;; -27876;34;0;false;false;0;0;0;;; -27910;4;0;false;false;;;;;; -27914;14;0;false;false;0;0;0;;; -27928;18;0;false;false;42;0;255;;; -27946;2;0;false;false;0;0;0;;; -27948;4;0;false;false;;;;;; -27952;3;1;false;false;127;0;85;;; -27955;1;0;false;false;;;;;; -27956;1;0;false;false;0;0;0;;; -27957;3;1;false;false;127;0;85;;; -27960;1;0;false;false;;;;;; -27961;1;0;false;false;0;0;0;;; -27962;1;0;false;false;;;;;; -27963;1;0;false;false;0;0;0;;; -27964;1;0;false;false;;;;;; -27965;2;0;false;false;0;0;0;;; -27967;1;0;false;false;;;;;; -27968;1;0;false;false;0;0;0;;; -27969;1;0;false;false;;;;;; -27970;1;0;false;false;0;0;0;;; -27971;1;0;false;false;;;;;; -27972;18;0;false;false;0;0;0;;; -27990;1;0;false;false;;;;;; -27991;4;0;false;false;0;0;0;;; -27995;1;0;false;false;;;;;; -27996;1;0;false;false;0;0;0;;; -27997;5;0;false;false;;;;;; -28002;5;0;false;false;0;0;0;;; -28007;1;0;false;false;;;;;; -28008;5;0;false;false;0;0;0;;; -28013;1;0;false;false;;;;;; -28014;1;0;false;false;0;0;0;;; -28015;1;0;false;false;;;;;; -28016;7;0;false;false;0;0;0;;; -28023;1;0;false;false;;;;;; -28024;24;0;false;false;0;0;0;;; -28048;5;0;false;false;;;;;; -28053;14;0;false;false;0;0;0;;; -28067;7;0;false;false;42;0;255;;; -28074;2;0;false;false;0;0;0;;; -28076;5;0;false;false;;;;;; -28081;30;0;false;false;0;0;0;;; -28111;5;0;false;false;;;;;; -28116;14;0;false;false;0;0;0;;; -28130;9;0;false;false;42;0;255;;; -28139;2;0;false;false;0;0;0;;; -28141;5;0;false;false;;;;;; -28146;32;0;false;false;0;0;0;;; -28178;5;0;false;false;;;;;; -28183;14;0;false;false;0;0;0;;; -28197;8;0;false;false;42;0;255;;; -28205;2;0;false;false;0;0;0;;; -28207;5;0;false;false;;;;;; -28212;31;0;false;false;0;0;0;;; -28243;5;0;false;false;;;;;; -28248;14;0;false;false;0;0;0;;; -28262;3;0;false;false;42;0;255;;; -28265;2;0;false;false;0;0;0;;; -28267;4;0;false;false;;;;;; -28271;1;0;false;false;0;0;0;;; -28272;5;0;false;false;;;;;; -28277;60;0;false;false;63;127;95;;; -28337;2;0;false;false;;;;;; -28339;61;0;false;false;63;127;95;;; -28400;2;0;false;false;;;;;; -28402;14;0;false;false;0;0;0;;; -28416;14;0;false;false;42;0;255;;; -28430;2;0;false;false;0;0;0;;; -28432;4;0;false;false;;;;;; -28436;42;0;false;false;63;127;95;;; -28478;2;0;false;false;;;;;; -28480;34;0;false;false;0;0;0;;; -28514;1;0;false;false;;;;;; -28515;1;0;false;false;0;0;0;;; -28516;1;0;false;false;;;;;; -28517;3;0;false;false;0;0;0;;; -28520;4;0;false;false;;;;;; -28524;14;0;false;false;0;0;0;;; -28538;3;0;false;false;42;0;255;;; -28541;2;0;false;false;0;0;0;;; -28543;4;0;false;false;;;;;; -28547;24;0;false;false;0;0;0;;; -28571;1;0;false;false;;;;;; -28572;3;0;false;false;0;0;0;;; -28575;3;0;false;false;;;;;; -28578;1;0;false;false;0;0;0;;; -28579;3;0;false;false;;;;;; -28582;3;0;false;false;63;95;191;;; -28585;4;0;false;false;;;;;; -28589;1;0;false;false;63;95;191;;; -28590;1;0;false;false;;;;;; -28591;7;0;false;false;63;95;191;;; -28598;1;0;false;false;;;;;; -28599;3;0;false;false;63;95;191;;; -28602;1;0;false;false;;;;;; -28603;9;0;false;false;63;95;191;;; -28612;1;0;false;false;;;;;; -28613;4;0;false;false;63;95;191;;; -28617;1;0;false;false;;;;;; -28618;4;0;false;false;63;95;191;;; -28622;1;0;false;false;;;;;; -28623;2;0;false;false;63;95;191;;; -28625;1;0;false;false;;;;;; -28626;3;0;false;false;63;95;191;;; -28629;1;0;false;false;;;;;; -28630;3;0;false;false;63;95;191;;; -28633;1;0;false;false;;;;;; -28634;5;0;false;false;63;95;191;;; -28639;2;0;false;false;;;;;; -28641;5;0;false;false;63;95;191;;; -28646;1;0;false;false;;;;;; -28647;4;0;false;false;63;95;191;;; -28651;1;0;false;false;;;;;; -28652;2;0;false;false;63;95;191;;; -28654;1;0;false;false;;;;;; -28655;9;0;false;false;63;95;191;;; -28664;5;0;false;false;;;;;; -28669;1;0;false;false;63;95;191;;; -28670;1;0;false;false;;;;;; -28671;5;0;false;false;63;95;191;;; -28676;1;0;false;false;;;;;; -28677;3;0;false;false;63;95;191;;; -28680;1;0;false;false;;;;;; -28681;6;0;false;false;63;95;191;;; -28687;1;0;false;false;;;;;; -28688;7;0;false;false;63;95;191;;; -28695;1;0;false;false;;;;;; -28696;4;0;false;false;63;95;191;;; -28700;1;0;false;false;;;;;; -28701;3;0;false;false;63;95;191;;; -28704;1;0;false;false;;;;;; -28705;18;0;false;false;63;95;191;;; -28723;1;0;false;false;;;;;; -28724;2;0;false;false;63;95;191;;; -28726;1;0;false;false;;;;;; -28727;4;0;false;false;63;95;191;;; -28731;1;0;false;false;;;;;; -28732;2;0;false;false;63;95;191;;; -28734;1;0;false;false;;;;;; -28735;5;0;false;false;63;95;191;;; -28740;1;0;false;false;;;;;; -28741;3;0;false;false;63;95;191;;; -28744;5;0;false;false;;;;;; -28749;1;0;false;false;63;95;191;;; -28750;1;0;false;false;;;;;; -28751;8;0;false;false;63;95;191;;; -28759;1;0;false;false;;;;;; -28760;2;0;false;false;63;95;191;;; -28762;1;0;false;false;;;;;; -28763;3;0;false;false;63;95;191;;; -28766;1;0;false;false;;;;;; -28767;7;0;false;false;63;95;191;;; -28774;4;0;false;false;;;;;; -28778;1;0;false;false;63;95;191;;; -28779;1;0;false;false;;;;;; -28780;3;0;false;false;127;127;159;;; -28783;4;0;false;false;;;;;; -28787;1;0;false;false;63;95;191;;; -28788;4;0;false;false;;;;;; -28792;1;0;false;false;63;95;191;;; -28793;1;0;false;false;;;;;; -28794;7;1;false;false;127;159;191;;; -28801;4;0;false;false;63;95;191;;; -28805;1;0;false;false;;;;;; -28806;4;0;false;false;63;95;191;;; -28810;1;0;false;false;;;;;; -28811;4;0;false;false;63;95;191;;; -28815;1;0;false;false;;;;;; -28816;2;0;false;false;63;95;191;;; -28818;1;0;false;false;;;;;; -28819;5;0;false;false;63;95;191;;; -28824;1;0;false;false;;;;;; -28825;2;0;false;false;63;95;191;;; -28827;1;0;false;false;;;;;; -28828;4;0;false;false;63;95;191;;; -28832;1;0;false;false;;;;;; -28833;4;0;false;false;63;95;191;;; -28837;1;0;false;false;;;;;; -28838;3;0;false;false;63;95;191;;; -28841;1;0;false;false;;;;;; -28842;7;0;false;false;63;95;191;;; -28849;1;0;false;false;;;;;; -28850;4;0;false;false;63;95;191;;; -28854;1;0;false;false;;;;;; -28855;6;0;false;false;63;95;191;;; -28861;4;0;false;false;;;;;; -28865;1;0;false;false;63;95;191;;; -28866;2;0;false;false;;;;;; -28868;4;0;false;false;63;95;191;;; -28872;1;0;false;false;;;;;; -28873;6;0;false;false;63;95;191;;; -28879;1;0;false;false;;;;;; -28880;6;0;false;false;63;95;191;;; -28886;1;0;false;false;;;;;; -28887;2;0;false;false;63;95;191;;; -28889;1;0;false;false;;;;;; -28890;7;0;false;false;63;95;191;;; -28897;1;0;false;false;;;;;; -28898;5;0;false;false;63;95;191;;; -28903;1;0;false;false;;;;;; -28904;20;0;false;false;63;95;191;;; -28924;4;0;false;false;;;;;; -28928;1;0;false;false;63;95;191;;; -28929;1;0;false;false;;;;;; -28930;7;1;false;false;127;159;191;;; -28937;10;0;false;false;63;95;191;;; -28947;1;0;false;false;;;;;; -28948;6;0;false;false;63;95;191;;; -28954;1;0;false;false;;;;;; -28955;2;0;false;false;63;95;191;;; -28957;1;0;false;false;;;;;; -28958;3;0;false;false;63;95;191;;; -28961;1;0;false;false;;;;;; -28962;5;0;false;false;63;95;191;;; -28967;1;0;false;false;;;;;; -28968;1;0;false;false;63;95;191;;; -28969;1;0;false;false;;;;;; -28970;5;0;false;false;63;95;191;;; -28975;1;0;false;false;;;;;; -28976;4;0;false;false;63;95;191;;; -28980;1;0;false;false;;;;;; -28981;3;0;false;false;63;95;191;;; -28984;1;0;false;false;;;;;; -28985;5;0;false;false;63;95;191;;; -28990;1;0;false;false;;;;;; -28991;2;0;false;false;63;95;191;;; -28993;1;0;false;false;;;;;; -28994;3;0;false;false;63;95;191;;; -28997;5;0;false;false;;;;;; -29002;1;0;false;false;63;95;191;;; -29003;2;0;false;false;;;;;; -29005;6;0;false;false;63;95;191;;; -29011;1;0;false;false;;;;;; -29012;9;0;false;false;63;95;191;;; -29021;1;0;false;false;;;;;; -29022;3;0;false;false;63;95;191;;; -29025;1;0;false;false;;;;;; -29026;4;0;false;false;63;95;191;;; -29030;1;0;false;false;;;;;; -29031;9;0;false;false;63;95;191;;; -29040;1;0;false;false;;;;;; -29041;6;0;false;false;63;95;191;;; -29047;1;0;false;false;;;;;; -29048;3;0;false;false;63;95;191;;; -29051;1;0;false;false;;;;;; -29052;5;0;false;false;63;95;191;;; -29057;1;0;false;false;;;;;; -29058;6;0;false;false;63;95;191;;; -29064;1;0;false;false;;;;;; -29065;2;0;false;false;63;95;191;;; -29067;1;0;false;false;;;;;; -29068;5;0;false;false;63;95;191;;; -29073;1;0;false;false;;;;;; -29074;3;0;false;false;63;95;191;;; -29077;5;0;false;false;;;;;; -29082;1;0;false;false;63;95;191;;; -29083;2;0;false;false;;;;;; -29085;3;0;false;false;63;95;191;;; -29088;1;0;false;false;;;;;; -29089;6;0;false;false;63;95;191;;; -29095;1;0;false;false;;;;;; -29096;9;0;false;false;63;95;191;;; -29105;1;0;false;false;;;;;; -29106;6;0;false;false;63;95;191;;; -29112;1;0;false;false;;;;;; -29113;6;0;false;false;63;95;191;;; -29119;1;0;false;false;;;;;; -29120;8;0;false;false;63;95;191;;; -29128;1;0;false;false;;;;;; -29129;2;0;false;false;63;95;191;;; -29131;1;0;false;false;;;;;; -29132;8;0;false;false;63;95;191;;; -29140;4;0;false;false;;;;;; -29144;1;0;false;false;63;95;191;;; -29145;1;0;false;false;;;;;; -29146;11;1;false;false;127;159;191;;; -29157;12;0;false;false;63;95;191;;; -29169;1;0;false;false;;;;;; -29170;4;0;false;false;127;127;159;;; -29174;4;0;false;false;;;;;; -29178;1;0;false;false;63;95;191;;; -29179;3;0;false;false;;;;;; -29182;4;0;false;false;127;127;159;;; -29186;8;0;false;false;63;95;191;;; -29194;1;0;false;false;;;;;; -29195;4;0;false;false;63;95;191;;; -29199;1;0;false;false;;;;;; -29200;3;0;false;false;63;95;191;;; -29203;1;0;false;false;;;;;; -29204;6;0;false;false;63;95;191;;; -29210;1;0;false;false;;;;;; -29211;2;0;false;false;63;95;191;;; -29213;1;0;false;false;;;;;; -29214;7;0;false;false;63;95;191;;; -29221;5;0;false;false;127;127;159;;; -29226;4;0;false;false;;;;;; -29230;1;0;false;false;63;95;191;;; -29231;1;0;false;false;;;;;; -29232;5;0;false;false;127;127;159;;; -29237;4;0;false;false;;;;;; -29241;2;0;false;false;63;95;191;;; -29243;3;0;false;false;;;;;; -29246;6;1;false;false;127;0;85;;; -29252;1;0;false;false;;;;;; -29253;4;1;false;false;127;0;85;;; -29257;1;0;false;false;;;;;; -29258;16;0;false;false;0;0;0;;; -29274;1;0;false;false;;;;;; -29275;5;0;false;false;0;0;0;;; -29280;1;0;false;false;;;;;; -29281;3;1;false;false;127;0;85;;; -29284;1;0;false;false;;;;;; -29285;11;0;false;false;0;0;0;;; -29296;1;0;false;false;;;;;; -29297;1;0;false;false;0;0;0;;; -29298;4;0;false;false;;;;;; -29302;12;0;false;false;0;0;0;;; -29314;1;0;false;false;;;;;; -29315;6;0;false;false;0;0;0;;; -29321;1;0;false;false;;;;;; -29322;1;0;false;false;0;0;0;;; -29323;1;0;false;false;;;;;; -29324;3;1;false;false;127;0;85;;; -29327;1;0;false;false;;;;;; -29328;14;0;false;false;0;0;0;;; -29342;4;0;false;false;;;;;; -29346;5;0;false;false;0;0;0;;; -29351;1;0;false;false;;;;;; -29352;14;0;false;false;0;0;0;;; -29366;1;0;false;false;;;;;; -29367;1;0;false;false;0;0;0;;; -29368;1;0;false;false;;;;;; -29369;4;1;false;false;127;0;85;;; -29373;1;0;false;false;0;0;0;;; -29374;4;0;false;false;;;;;; -29378;15;0;false;false;0;0;0;;; -29393;1;0;false;false;;;;;; -29394;6;0;false;false;0;0;0;;; -29400;8;0;false;false;;;;;; -29408;2;1;false;false;127;0;85;;; -29410;1;0;false;false;;;;;; -29411;12;0;false;false;0;0;0;;; -29423;1;0;false;false;;;;;; -29424;1;0;false;false;0;0;0;;; -29425;5;0;false;false;;;;;; -29430;24;0;false;false;0;0;0;;; -29454;4;0;false;false;;;;;; -29458;1;0;false;false;0;0;0;;; -29459;4;0;false;false;;;;;; -29463;5;0;false;false;0;0;0;;; -29468;1;0;false;false;;;;;; -29469;1;0;false;false;0;0;0;;; -29470;1;0;false;false;;;;;; -29471;37;0;false;false;0;0;0;;; -29508;1;0;false;false;;;;;; -29509;6;0;false;false;0;0;0;;; -29515;4;0;false;false;;;;;; -29519;2;1;false;false;127;0;85;;; -29521;1;0;false;false;;;;;; -29522;6;0;false;false;0;0;0;;; -29528;1;0;false;false;;;;;; -29529;2;0;false;false;0;0;0;;; -29531;1;0;false;false;;;;;; -29532;4;1;false;false;127;0;85;;; -29536;1;0;false;false;0;0;0;;; -29537;1;0;false;false;;;;;; -29538;1;0;false;false;0;0;0;;; -29539;5;0;false;false;;;;;; -29544;6;0;false;false;0;0;0;;; -29550;1;0;false;false;;;;;; -29551;1;0;false;false;0;0;0;;; -29552;1;0;false;false;;;;;; -29553;13;0;false;false;0;0;0;;; -29566;4;0;false;false;;;;;; -29570;1;0;false;false;0;0;0;;; -29571;4;0;false;false;;;;;; -29575;5;0;false;false;0;0;0;;; -29580;1;0;false;false;;;;;; -29581;1;0;false;false;0;0;0;;; -29582;1;0;false;false;;;;;; -29583;42;0;false;false;0;0;0;;; -29625;1;0;false;false;;;;;; -29626;6;0;false;false;0;0;0;;; -29632;4;0;false;false;;;;;; -29636;2;1;false;false;127;0;85;;; -29638;1;0;false;false;;;;;; -29639;6;0;false;false;0;0;0;;; -29645;1;0;false;false;;;;;; -29646;2;0;false;false;0;0;0;;; -29648;1;0;false;false;;;;;; -29649;4;1;false;false;127;0;85;;; -29653;1;0;false;false;0;0;0;;; -29654;1;0;false;false;;;;;; -29655;1;0;false;false;0;0;0;;; -29656;5;0;false;false;;;;;; -29661;14;0;false;false;0;0;0;;; -29675;1;0;false;false;;;;;; -29676;1;0;false;false;0;0;0;;; -29677;1;0;false;false;;;;;; -29678;21;0;false;false;0;0;0;;; -29699;4;0;false;false;;;;;; -29703;1;0;false;false;0;0;0;;; -29704;4;0;false;false;;;;;; -29708;2;1;false;false;127;0;85;;; -29710;1;0;false;false;;;;;; -29711;15;0;false;false;0;0;0;;; -29726;1;0;false;false;;;;;; -29727;2;0;false;false;0;0;0;;; -29729;1;0;false;false;;;;;; -29730;4;1;false;false;127;0;85;;; -29734;1;0;false;false;0;0;0;;; -29735;1;0;false;false;;;;;; -29736;1;0;false;false;0;0;0;;; -29737;5;0;false;false;;;;;; -29742;14;0;false;false;0;0;0;;; -29756;1;0;false;false;;;;;; -29757;1;0;false;false;0;0;0;;; -29758;1;0;false;false;;;;;; -29759;16;0;false;false;0;0;0;;; -29775;4;0;false;false;;;;;; -29779;1;0;false;false;0;0;0;;; -29780;4;0;false;false;;;;;; -29784;21;0;false;false;0;0;0;;; -29805;1;0;false;false;;;;;; -29806;11;0;false;false;0;0;0;;; -29817;1;0;false;false;;;;;; -29818;7;0;false;false;0;0;0;;; -29825;1;0;false;false;;;;;; -29826;16;0;false;false;0;0;0;;; -29842;3;0;false;false;;;;;; -29845;1;0;false;false;0;0;0;;; -29846;3;0;false;false;;;;;; -29849;3;0;false;false;63;95;191;;; -29852;4;0;false;false;;;;;; -29856;1;0;false;false;63;95;191;;; -29857;1;0;false;false;;;;;; -29858;7;0;false;false;63;95;191;;; -29865;1;0;false;false;;;;;; -29866;3;0;false;false;63;95;191;;; -29869;1;0;false;false;;;;;; -29870;9;0;false;false;63;95;191;;; -29879;1;0;false;false;;;;;; -29880;4;0;false;false;63;95;191;;; -29884;1;0;false;false;;;;;; -29885;10;0;false;false;63;95;191;;; -29895;1;0;false;false;;;;;; -29896;2;0;false;false;63;95;191;;; -29898;1;0;false;false;;;;;; -29899;3;0;false;false;63;95;191;;; -29902;1;0;false;false;;;;;; -29903;3;0;false;false;63;95;191;;; -29906;1;0;false;false;;;;;; -29907;5;0;false;false;63;95;191;;; -29912;4;0;false;false;;;;;; -29916;1;0;false;false;63;95;191;;; -29917;1;0;false;false;;;;;; -29918;3;0;false;false;127;127;159;;; -29921;4;0;false;false;;;;;; -29925;1;0;false;false;63;95;191;;; -29926;4;0;false;false;;;;;; -29930;1;0;false;false;63;95;191;;; -29931;1;0;false;false;;;;;; -29932;7;1;false;false;127;159;191;;; -29939;13;0;false;false;63;95;191;;; -29952;1;0;false;false;;;;;; -29953;4;0;false;false;63;95;191;;; -29957;1;0;false;false;;;;;; -29958;9;0;false;false;63;95;191;;; -29967;1;0;false;false;;;;;; -29968;2;0;false;false;63;95;191;;; -29970;1;0;false;false;;;;;; -29971;5;0;false;false;63;95;191;;; -29976;1;0;false;false;;;;;; -29977;2;0;false;false;63;95;191;;; -29979;1;0;false;false;;;;;; -29980;4;0;false;false;63;95;191;;; -29984;4;0;false;false;;;;;; -29988;1;0;false;false;63;95;191;;; -29989;1;0;false;false;;;;;; -29990;11;1;false;false;127;159;191;;; -30001;12;0;false;false;63;95;191;;; -30013;1;0;false;false;;;;;; -30014;4;0;false;false;127;127;159;;; -30018;4;0;false;false;;;;;; -30022;1;0;false;false;63;95;191;;; -30023;3;0;false;false;;;;;; -30026;4;0;false;false;127;127;159;;; -30030;8;0;false;false;63;95;191;;; -30038;1;0;false;false;;;;;; -30039;4;0;false;false;63;95;191;;; -30043;1;0;false;false;;;;;; -30044;3;0;false;false;63;95;191;;; -30047;1;0;false;false;;;;;; -30048;6;0;false;false;63;95;191;;; -30054;1;0;false;false;;;;;; -30055;2;0;false;false;63;95;191;;; -30057;1;0;false;false;;;;;; -30058;7;0;false;false;63;95;191;;; -30065;5;0;false;false;127;127;159;;; -30070;4;0;false;false;;;;;; -30074;1;0;false;false;63;95;191;;; -30075;1;0;false;false;;;;;; -30076;5;0;false;false;127;127;159;;; -30081;4;0;false;false;;;;;; -30085;2;0;false;false;63;95;191;;; -30087;3;0;false;false;;;;;; -30090;6;1;false;false;127;0;85;;; -30096;1;0;false;false;;;;;; -30097;4;1;false;false;127;0;85;;; -30101;1;0;false;false;;;;;; -30102;25;0;false;false;0;0;0;;; -30127;1;0;false;false;;;;;; -30128;14;0;false;false;0;0;0;;; -30142;1;0;false;false;;;;;; -30143;1;0;false;false;0;0;0;;; -30144;4;0;false;false;;;;;; -30148;2;1;false;false;127;0;85;;; -30150;1;0;false;false;;;;;; -30151;12;0;false;false;0;0;0;;; -30163;1;0;false;false;;;;;; -30164;1;0;false;false;0;0;0;;; -30165;5;0;false;false;;;;;; -30170;24;0;false;false;0;0;0;;; -30194;4;0;false;false;;;;;; -30198;1;0;false;false;0;0;0;;; -30199;4;0;false;false;;;;;; -30203;20;0;false;false;0;0;0;;; -30223;1;0;false;false;;;;;; -30224;2;0;false;false;0;0;0;;; -30226;1;0;false;false;;;;;; -30227;24;0;false;false;0;0;0;;; -30251;4;0;false;false;;;;;; -30255;6;0;false;false;0;0;0;;; -30261;8;0;false;false;42;0;255;;; -30269;2;0;false;false;0;0;0;;; -30271;3;0;false;false;;;;;; -30274;1;0;false;false;0;0;0;;; -30275;3;0;false;false;;;;;; -30278;3;0;false;false;63;95;191;;; -30281;4;0;false;false;;;;;; -30285;1;0;false;false;63;95;191;;; -30286;1;0;false;false;;;;;; -30287;7;0;false;false;63;95;191;;; -30294;1;0;false;false;;;;;; -30295;3;0;false;false;63;95;191;;; -30298;1;0;false;false;;;;;; -30299;9;0;false;false;63;95;191;;; -30308;1;0;false;false;;;;;; -30309;4;0;false;false;63;95;191;;; -30313;1;0;false;false;;;;;; -30314;4;0;false;false;63;95;191;;; -30318;1;0;false;false;;;;;; -30319;2;0;false;false;63;95;191;;; -30321;1;0;false;false;;;;;; -30322;3;0;false;false;63;95;191;;; -30325;1;0;false;false;;;;;; -30326;3;0;false;false;63;95;191;;; -30329;1;0;false;false;;;;;; -30330;5;0;false;false;63;95;191;;; -30335;4;0;false;false;;;;;; -30339;1;0;false;false;63;95;191;;; -30340;1;0;false;false;;;;;; -30341;3;0;false;false;63;95;191;;; -30344;1;0;false;false;;;;;; -30345;3;0;false;false;63;95;191;;; -30348;1;0;false;false;;;;;; -30349;6;0;false;false;63;95;191;;; -30355;1;0;false;false;;;;;; -30356;3;0;false;false;63;95;191;;; -30359;1;0;false;false;;;;;; -30360;4;0;false;false;63;95;191;;; -30364;1;0;false;false;;;;;; -30365;6;0;false;false;63;95;191;;; -30371;1;0;false;false;;;;;; -30372;9;0;false;false;63;95;191;;; -30381;1;0;false;false;;;;;; -30382;2;0;false;false;63;95;191;;; -30384;1;0;false;false;;;;;; -30385;8;0;false;false;63;95;191;;; -30393;1;0;false;false;;;;;; -30394;3;0;false;false;63;95;191;;; -30397;1;0;false;false;;;;;; -30398;17;0;false;false;63;95;191;;; -30415;4;0;false;false;;;;;; -30419;1;0;false;false;63;95;191;;; -30420;1;0;false;false;;;;;; -30421;10;0;false;false;63;95;191;;; -30431;1;0;false;false;;;;;; -30432;2;0;false;false;63;95;191;;; -30434;1;0;false;false;;;;;; -30435;7;0;false;false;63;95;191;;; -30442;1;0;false;false;;;;;; -30443;2;0;false;false;63;95;191;;; -30445;1;0;false;false;;;;;; -30446;7;0;false;false;63;95;191;;; -30453;1;0;false;false;;;;;; -30454;3;0;false;false;63;95;191;;; -30457;1;0;false;false;;;;;; -30458;4;0;false;false;63;95;191;;; -30462;1;0;false;false;;;;;; -30463;9;0;false;false;63;95;191;;; -30472;1;0;false;false;;;;;; -30473;2;0;false;false;63;95;191;;; -30475;1;0;false;false;;;;;; -30476;3;0;false;false;63;95;191;;; -30479;1;0;false;false;;;;;; -30480;4;0;false;false;63;95;191;;; -30484;1;0;false;false;;;;;; -30485;7;0;false;false;63;95;191;;; -30492;4;0;false;false;;;;;; -30496;1;0;false;false;63;95;191;;; -30497;1;0;false;false;;;;;; -30498;5;0;false;false;63;95;191;;; -30503;1;0;false;false;;;;;; -30504;10;0;false;false;63;95;191;;; -30514;1;0;false;false;;;;;; -30515;6;0;false;false;63;95;191;;; -30521;1;0;false;false;;;;;; -30522;4;0;false;false;63;95;191;;; -30526;1;0;false;false;;;;;; -30527;10;0;false;false;63;95;191;;; -30537;1;0;false;false;;;;;; -30538;4;0;false;false;63;95;191;;; -30542;1;0;false;false;;;;;; -30543;3;0;false;false;63;95;191;;; -30546;1;0;false;false;;;;;; -30547;4;0;false;false;63;95;191;;; -30551;1;0;false;false;;;;;; -30552;10;0;false;false;63;95;191;;; -30562;1;0;false;false;;;;;; -30563;6;0;false;false;63;95;191;;; -30569;4;0;false;false;;;;;; -30573;1;0;false;false;63;95;191;;; -30574;1;0;false;false;;;;;; -30575;10;0;false;false;63;95;191;;; -30585;1;0;false;false;;;;;; -30586;6;0;false;false;63;95;191;;; -30592;1;0;false;false;;;;;; -30593;3;0;false;false;63;95;191;;; -30596;1;0;false;false;;;;;; -30597;7;0;false;false;63;95;191;;; -30604;1;0;false;false;;;;;; -30605;5;0;false;false;63;95;191;;; -30610;1;0;false;false;;;;;; -30611;3;0;false;false;63;95;191;;; -30614;1;0;false;false;;;;;; -30615;10;0;false;false;63;95;191;;; -30625;1;0;false;false;;;;;; -30626;3;0;false;false;63;95;191;;; -30629;1;0;false;false;;;;;; -30630;4;0;false;false;63;95;191;;; -30634;1;0;false;false;;;;;; -30635;3;0;false;false;63;95;191;;; -30638;1;0;false;false;;;;;; -30639;3;0;false;false;63;95;191;;; -30642;1;0;false;false;;;;;; -30643;5;0;false;false;63;95;191;;; -30648;4;0;false;false;;;;;; -30652;1;0;false;false;63;95;191;;; -30653;1;0;false;false;;;;;; -30654;3;0;false;false;127;127;159;;; -30657;4;0;false;false;;;;;; -30661;1;0;false;false;63;95;191;;; -30662;4;0;false;false;;;;;; -30666;1;0;false;false;63;95;191;;; -30667;1;0;false;false;;;;;; -30668;7;1;false;false;127;159;191;;; -30675;4;0;false;false;63;95;191;;; -30679;1;0;false;false;;;;;; -30680;4;0;false;false;63;95;191;;; -30684;1;0;false;false;;;;;; -30685;4;0;false;false;63;95;191;;; -30689;1;0;false;false;;;;;; -30690;2;0;false;false;63;95;191;;; -30692;1;0;false;false;;;;;; -30693;5;0;false;false;63;95;191;;; -30698;1;0;false;false;;;;;; -30699;2;0;false;false;63;95;191;;; -30701;1;0;false;false;;;;;; -30702;4;0;false;false;63;95;191;;; -30706;1;0;false;false;;;;;; -30707;4;0;false;false;63;95;191;;; -30711;1;0;false;false;;;;;; -30712;3;0;false;false;63;95;191;;; -30715;1;0;false;false;;;;;; -30716;7;0;false;false;63;95;191;;; -30723;1;0;false;false;;;;;; -30724;4;0;false;false;63;95;191;;; -30728;1;0;false;false;;;;;; -30729;6;0;false;false;63;95;191;;; -30735;4;0;false;false;;;;;; -30739;1;0;false;false;63;95;191;;; -30740;2;0;false;false;;;;;; -30742;4;0;false;false;63;95;191;;; -30746;1;0;false;false;;;;;; -30747;6;0;false;false;63;95;191;;; -30753;1;0;false;false;;;;;; -30754;6;0;false;false;63;95;191;;; -30760;1;0;false;false;;;;;; -30761;2;0;false;false;63;95;191;;; -30763;1;0;false;false;;;;;; -30764;7;0;false;false;63;95;191;;; -30771;1;0;false;false;;;;;; -30772;5;0;false;false;63;95;191;;; -30777;1;0;false;false;;;;;; -30778;20;0;false;false;63;95;191;;; -30798;4;0;false;false;;;;;; -30802;1;0;false;false;63;95;191;;; -30803;1;0;false;false;;;;;; -30804;7;1;false;false;127;159;191;;; -30811;10;0;false;false;63;95;191;;; -30821;1;0;false;false;;;;;; -30822;6;0;false;false;63;95;191;;; -30828;1;0;false;false;;;;;; -30829;2;0;false;false;63;95;191;;; -30831;1;0;false;false;;;;;; -30832;3;0;false;false;63;95;191;;; -30835;1;0;false;false;;;;;; -30836;5;0;false;false;63;95;191;;; -30841;1;0;false;false;;;;;; -30842;1;0;false;false;63;95;191;;; -30843;1;0;false;false;;;;;; -30844;5;0;false;false;63;95;191;;; -30849;1;0;false;false;;;;;; -30850;4;0;false;false;63;95;191;;; -30854;1;0;false;false;;;;;; -30855;3;0;false;false;63;95;191;;; -30858;1;0;false;false;;;;;; -30859;5;0;false;false;63;95;191;;; -30864;1;0;false;false;;;;;; -30865;2;0;false;false;63;95;191;;; -30867;1;0;false;false;;;;;; -30868;3;0;false;false;63;95;191;;; -30871;5;0;false;false;;;;;; -30876;1;0;false;false;63;95;191;;; -30877;2;0;false;false;;;;;; -30879;6;0;false;false;63;95;191;;; -30885;1;0;false;false;;;;;; -30886;9;0;false;false;63;95;191;;; -30895;1;0;false;false;;;;;; -30896;3;0;false;false;63;95;191;;; -30899;1;0;false;false;;;;;; -30900;4;0;false;false;63;95;191;;; -30904;1;0;false;false;;;;;; -30905;9;0;false;false;63;95;191;;; -30914;1;0;false;false;;;;;; -30915;6;0;false;false;63;95;191;;; -30921;1;0;false;false;;;;;; -30922;3;0;false;false;63;95;191;;; -30925;1;0;false;false;;;;;; -30926;5;0;false;false;63;95;191;;; -30931;1;0;false;false;;;;;; -30932;6;0;false;false;63;95;191;;; -30938;1;0;false;false;;;;;; -30939;2;0;false;false;63;95;191;;; -30941;1;0;false;false;;;;;; -30942;5;0;false;false;63;95;191;;; -30947;1;0;false;false;;;;;; -30948;3;0;false;false;63;95;191;;; -30951;5;0;false;false;;;;;; -30956;1;0;false;false;63;95;191;;; -30957;2;0;false;false;;;;;; -30959;3;0;false;false;63;95;191;;; -30962;1;0;false;false;;;;;; -30963;6;0;false;false;63;95;191;;; -30969;1;0;false;false;;;;;; -30970;9;0;false;false;63;95;191;;; -30979;1;0;false;false;;;;;; -30980;6;0;false;false;63;95;191;;; -30986;1;0;false;false;;;;;; -30987;6;0;false;false;63;95;191;;; -30993;1;0;false;false;;;;;; -30994;8;0;false;false;63;95;191;;; -31002;1;0;false;false;;;;;; -31003;2;0;false;false;63;95;191;;; -31005;1;0;false;false;;;;;; -31006;8;0;false;false;63;95;191;;; -31014;4;0;false;false;;;;;; -31018;1;0;false;false;63;95;191;;; -31019;1;0;false;false;;;;;; -31020;7;1;false;false;127;159;191;;; -31027;6;0;false;false;63;95;191;;; -31033;1;0;false;false;;;;;; -31034;6;0;false;false;63;95;191;;; -31040;1;0;false;false;;;;;; -31041;2;0;false;false;63;95;191;;; -31043;1;0;false;false;;;;;; -31044;3;0;false;false;63;95;191;;; -31047;1;0;false;false;;;;;; -31048;3;0;false;false;63;95;191;;; -31051;1;0;false;false;;;;;; -31052;11;0;false;false;63;95;191;;; -31063;1;0;false;false;;;;;; -31064;4;0;false;false;63;95;191;;; -31068;1;0;false;false;;;;;; -31069;3;0;false;false;63;95;191;;; -31072;1;0;false;false;;;;;; -31073;2;0;false;false;63;95;191;;; -31075;1;0;false;false;;;;;; -31076;5;0;false;false;63;95;191;;; -31081;4;0;false;false;;;;;; -31085;1;0;false;false;63;95;191;;; -31086;1;0;false;false;;;;;; -31087;7;1;false;false;127;159;191;;; -31094;14;0;false;false;63;95;191;;; -31108;1;0;false;false;;;;;; -31109;4;0;false;false;63;95;191;;; -31113;1;0;false;false;;;;;; -31114;10;0;false;false;63;95;191;;; -31124;1;0;false;false;;;;;; -31125;5;0;false;false;63;95;191;;; -31130;1;0;false;false;;;;;; -31131;2;0;false;false;63;95;191;;; -31133;1;0;false;false;;;;;; -31134;3;0;false;false;63;95;191;;; -31137;1;0;false;false;;;;;; -31138;3;0;false;false;63;95;191;;; -31141;1;0;false;false;;;;;; -31142;11;0;false;false;63;95;191;;; -31153;5;0;false;false;;;;;; -31158;1;0;false;false;63;95;191;;; -31159;2;0;false;false;;;;;; -31161;3;0;false;false;63;95;191;;; -31164;1;0;false;false;;;;;; -31165;2;0;false;false;63;95;191;;; -31167;1;0;false;false;;;;;; -31168;5;0;false;false;63;95;191;;; -31173;4;0;false;false;;;;;; -31177;2;0;false;false;63;95;191;;; -31179;3;0;false;false;;;;;; -31182;4;1;false;false;127;0;85;;; -31186;1;0;false;false;;;;;; -31187;22;0;false;false;0;0;0;;; -31209;1;0;false;false;;;;;; -31210;5;0;false;false;0;0;0;;; -31215;1;0;false;false;;;;;; -31216;3;1;false;false;127;0;85;;; -31219;1;0;false;false;;;;;; -31220;11;0;false;false;0;0;0;;; -31231;1;0;false;false;;;;;; -31232;12;0;false;false;0;0;0;;; -31244;1;0;false;false;;;;;; -31245;7;0;false;false;0;0;0;;; -31252;1;0;false;false;;;;;; -31253;5;0;false;false;0;0;0;;; -31258;1;0;false;false;;;;;; -31259;15;0;false;false;0;0;0;;; -31274;1;0;false;false;;;;;; -31275;1;0;false;false;0;0;0;;; -31276;4;0;false;false;;;;;; -31280;3;1;false;false;127;0;85;;; -31283;1;0;false;false;;;;;; -31284;10;0;false;false;0;0;0;;; -31294;1;0;false;false;;;;;; -31295;1;0;false;false;0;0;0;;; -31296;1;0;false;false;;;;;; -31297;14;0;false;false;0;0;0;;; -31311;4;0;false;false;;;;;; -31315;3;1;false;false;127;0;85;;; -31318;1;0;false;false;;;;;; -31319;10;0;false;false;0;0;0;;; -31329;4;0;false;false;;;;;; -31333;3;1;false;false;127;0;85;;; -31336;1;0;false;false;;;;;; -31337;8;0;false;false;0;0;0;;; -31345;4;0;false;false;;;;;; -31349;3;1;false;false;127;0;85;;; -31352;1;0;false;false;;;;;; -31353;11;0;false;false;0;0;0;;; -31364;1;0;false;false;;;;;; -31365;1;0;false;false;0;0;0;;; -31366;1;0;false;false;;;;;; -31367;11;0;false;false;0;0;0;;; -31378;6;0;false;false;;;;;; -31384;3;1;false;false;127;0;85;;; -31387;1;0;false;false;;;;;; -31388;9;0;false;false;0;0;0;;; -31397;1;0;false;false;;;;;; -31398;1;0;false;false;0;0;0;;; -31399;1;0;false;false;;;;;; -31400;11;0;false;false;0;0;0;;; -31411;1;0;false;false;;;;;; -31412;1;0;false;false;0;0;0;;; -31413;1;0;false;false;;;;;; -31414;5;1;false;false;127;0;85;;; -31419;16;0;false;false;0;0;0;;; -31435;4;0;false;false;;;;;; -31439;3;1;false;false;127;0;85;;; -31442;1;0;false;false;;;;;; -31443;13;0;false;false;0;0;0;;; -31456;1;0;false;false;;;;;; -31457;1;0;false;false;0;0;0;;; -31458;1;0;false;false;;;;;; -31459;20;0;false;false;0;0;0;;; -31479;1;0;false;false;;;;;; -31480;9;0;false;false;0;0;0;;; -31489;1;0;false;false;;;;;; -31490;1;0;false;false;0;0;0;;; -31491;1;0;false;false;;;;;; -31492;12;0;false;false;0;0;0;;; -31504;4;0;false;false;;;;;; -31508;3;1;false;false;127;0;85;;; -31511;1;0;false;false;;;;;; -31512;11;0;false;false;0;0;0;;; -31523;1;0;false;false;;;;;; -31524;1;0;false;false;0;0;0;;; -31525;1;0;false;false;;;;;; -31526;11;0;false;false;0;0;0;;; -31537;1;0;false;false;;;;;; -31538;1;0;false;false;0;0;0;;; -31539;1;0;false;false;;;;;; -31540;11;0;false;false;0;0;0;;; -31551;8;0;false;false;;;;;; -31559;2;1;false;false;127;0;85;;; -31561;1;0;false;false;;;;;; -31562;12;0;false;false;0;0;0;;; -31574;1;0;false;false;;;;;; -31575;2;0;false;false;0;0;0;;; -31577;1;0;false;false;;;;;; -31578;14;0;false;false;0;0;0;;; -31592;1;0;false;false;;;;;; -31593;1;0;false;false;0;0;0;;; -31594;5;0;false;false;;;;;; -31599;6;1;false;false;127;0;85;;; -31605;1;0;false;false;0;0;0;;; -31606;5;0;false;false;;;;;; -31611;38;0;false;false;63;127;95;;; -31649;2;0;false;false;;;;;; -31651;1;0;false;false;0;0;0;;; -31652;4;0;false;false;;;;;; -31656;4;1;false;false;127;0;85;;; -31660;4;0;false;false;;;;;; -31664;2;1;false;false;127;0;85;;; -31666;1;0;false;false;;;;;; -31667;12;0;false;false;0;0;0;;; -31679;1;0;false;false;;;;;; -31680;1;0;false;false;0;0;0;;; -31681;1;0;false;false;;;;;; -31682;2;0;false;false;0;0;0;;; -31684;1;0;false;false;;;;;; -31685;1;0;false;false;0;0;0;;; -31686;5;0;false;false;;;;;; -31691;9;0;false;false;0;0;0;;; -31700;1;0;false;false;;;;;; -31701;1;0;false;false;0;0;0;;; -31702;1;0;false;false;;;;;; -31703;12;0;false;false;0;0;0;;; -31715;2;0;false;false;;;;;; -31717;39;0;false;false;63;127;95;;; -31756;2;0;false;false;;;;;; -31758;1;0;false;false;0;0;0;;; -31759;4;0;false;false;;;;;; -31763;4;1;false;false;127;0;85;;; -31767;1;0;false;false;;;;;; -31768;1;0;false;false;0;0;0;;; -31769;5;0;false;false;;;;;; -31774;9;0;false;false;0;0;0;;; -31783;1;0;false;false;;;;;; -31784;1;0;false;false;0;0;0;;; -31785;1;0;false;false;;;;;; -31786;2;0;false;false;0;0;0;;; -31788;4;0;false;false;;;;;; -31792;1;0;false;false;0;0;0;;; -31793;4;0;false;false;;;;;; -31797;2;1;false;false;127;0;85;;; -31799;1;0;false;false;;;;;; -31800;15;0;false;false;0;0;0;;; -31815;1;0;false;false;;;;;; -31816;2;0;false;false;0;0;0;;; -31818;1;0;false;false;;;;;; -31819;4;1;false;false;127;0;85;;; -31823;1;0;false;false;0;0;0;;; -31824;1;0;false;false;;;;;; -31825;1;0;false;false;0;0;0;;; -31826;5;0;false;false;;;;;; -31831;6;0;false;false;0;0;0;;; -31837;14;0;false;false;42;0;255;;; -31851;2;0;false;false;0;0;0;;; -31853;5;0;false;false;;;;;; -31858;35;0;false;false;0;0;0;;; -31893;1;0;false;false;;;;;; -31894;21;0;false;false;0;0;0;;; -31915;5;0;false;false;;;;;; -31920;6;0;false;false;0;0;0;;; -31926;3;0;false;false;42;0;255;;; -31929;2;0;false;false;0;0;0;;; -31931;5;0;false;false;;;;;; -31936;1;0;false;false;0;0;0;;; -31937;4;0;false;false;;;;;; -31941;3;1;false;false;127;0;85;;; -31944;1;0;false;false;;;;;; -31945;1;0;false;false;0;0;0;;; -31946;3;1;false;false;127;0;85;;; -31949;1;0;false;false;;;;;; -31950;1;0;false;false;0;0;0;;; -31951;1;0;false;false;;;;;; -31952;1;0;false;false;0;0;0;;; -31953;1;0;false;false;;;;;; -31954;2;0;false;false;0;0;0;;; -31956;1;0;false;false;;;;;; -31957;1;0;false;false;0;0;0;;; -31958;1;0;false;false;;;;;; -31959;1;0;false;false;0;0;0;;; -31960;1;0;false;false;;;;;; -31961;14;0;false;false;0;0;0;;; -31975;1;0;false;false;;;;;; -31976;4;0;false;false;0;0;0;;; -31980;1;0;false;false;;;;;; -31981;1;0;false;false;0;0;0;;; -31982;7;0;false;false;;;;;; -31989;10;0;false;false;0;0;0;;; -31999;1;0;false;false;;;;;; -32000;5;0;false;false;0;0;0;;; -32005;1;0;false;false;;;;;; -32006;1;0;false;false;0;0;0;;; -32007;1;0;false;false;;;;;; -32008;10;0;false;false;0;0;0;;; -32018;5;0;false;false;;;;;; -32023;3;1;false;false;127;0;85;;; -32026;1;0;false;false;;;;;; -32027;5;0;false;false;0;0;0;;; -32032;1;0;false;false;;;;;; -32033;1;0;false;false;0;0;0;;; -32034;1;0;false;false;;;;;; -32035;11;0;false;false;0;0;0;;; -32046;1;0;false;false;;;;;; -32047;1;0;false;false;0;0;0;;; -32048;1;0;false;false;;;;;; -32049;11;0;false;false;0;0;0;;; -32060;5;0;false;false;;;;;; -32065;3;1;false;false;127;0;85;;; -32068;1;0;false;false;;;;;; -32069;3;0;false;false;0;0;0;;; -32072;1;0;false;false;;;;;; -32073;1;0;false;false;0;0;0;;; -32074;1;0;false;false;;;;;; -32075;5;0;false;false;0;0;0;;; -32080;1;0;false;false;;;;;; -32081;1;0;false;false;0;0;0;;; -32082;1;0;false;false;;;;;; -32083;13;0;false;false;0;0;0;;; -32096;5;0;false;false;;;;;; -32101;3;1;false;false;127;0;85;;; -32104;1;0;false;false;;;;;; -32105;11;0;false;false;0;0;0;;; -32116;5;0;false;false;;;;;; -32121;33;0;false;false;63;127;95;;; -32154;3;0;false;false;;;;;; -32157;2;1;false;false;127;0;85;;; -32159;1;0;false;false;;;;;; -32160;4;0;false;false;0;0;0;;; -32164;1;0;false;false;;;;;; -32165;1;0;false;false;0;0;0;;; -32166;1;0;false;false;;;;;; -32167;12;0;false;false;0;0;0;;; -32179;1;0;false;false;;;;;; -32180;1;0;false;false;0;0;0;;; -32181;6;0;false;false;;;;;; -32187;8;1;false;false;127;0;85;;; -32195;1;0;false;false;0;0;0;;; -32196;5;0;false;false;;;;;; -32201;1;0;false;false;0;0;0;;; -32202;5;0;false;false;;;;;; -32207;50;0;false;false;63;127;95;;; -32257;3;0;false;false;;;;;; -32260;2;1;false;false;127;0;85;;; -32262;1;0;false;false;;;;;; -32263;6;0;false;false;0;0;0;;; -32269;1;0;false;false;;;;;; -32270;2;0;false;false;0;0;0;;; -32272;1;0;false;false;;;;;; -32273;14;0;false;false;0;0;0;;; -32287;1;0;false;false;;;;;; -32288;1;0;false;false;0;0;0;;; -32289;6;0;false;false;;;;;; -32295;5;1;false;false;127;0;85;;; -32300;1;0;false;false;0;0;0;;; -32301;5;0;false;false;;;;;; -32306;1;0;false;false;0;0;0;;; -32307;5;0;false;false;;;;;; -32312;28;0;false;false;63;127;95;;; -32340;3;0;false;false;;;;;; -32343;2;1;false;false;127;0;85;;; -32345;1;0;false;false;;;;;; -32346;10;0;false;false;0;0;0;;; -32356;1;0;false;false;;;;;; -32357;1;0;false;false;0;0;0;;; -32358;1;0;false;false;;;;;; -32359;6;0;false;false;0;0;0;;; -32365;1;0;false;false;;;;;; -32366;1;0;false;false;0;0;0;;; -32367;7;0;false;false;;;;;; -32374;27;0;false;false;63;127;95;;; -32401;4;0;false;false;;;;;; -32405;61;0;false;false;63;127;95;;; -32466;4;0;false;false;;;;;; -32470;30;0;false;false;63;127;95;;; -32500;4;0;false;false;;;;;; -32504;11;0;false;false;0;0;0;;; -32515;1;0;false;false;;;;;; -32516;10;0;false;false;0;0;0;;; -32526;1;0;false;false;;;;;; -32527;7;0;false;false;0;0;0;;; -32534;6;0;false;false;;;;;; -32540;9;0;false;false;0;0;0;;; -32549;1;0;false;false;;;;;; -32550;1;0;false;false;0;0;0;;; -32551;1;0;false;false;;;;;; -32552;6;0;false;false;0;0;0;;; -32558;5;0;false;false;;;;;; -32563;1;0;false;false;0;0;0;;; -32564;5;0;false;false;;;;;; -32569;22;0;false;false;63;127;95;;; -32591;3;0;false;false;;;;;; -32594;10;0;false;false;0;0;0;;; -32604;1;0;false;false;;;;;; -32605;1;0;false;false;0;0;0;;; -32606;1;0;false;false;;;;;; -32607;31;0;false;false;0;0;0;;; -32638;1;0;false;false;;;;;; -32639;20;0;false;false;0;0;0;;; -32659;5;0;false;false;;;;;; -32664;6;0;false;false;0;0;0;;; -32670;7;0;false;false;42;0;255;;; -32677;2;0;false;false;0;0;0;;; -32679;5;0;false;false;;;;;; -32684;37;0;false;false;0;0;0;;; -32721;1;0;false;false;;;;;; -32722;21;0;false;false;0;0;0;;; -32743;5;0;false;false;;;;;; -32748;2;1;false;false;127;0;85;;; -32750;1;0;false;false;;;;;; -32751;11;0;false;false;0;0;0;;; -32762;1;0;false;false;;;;;; -32763;2;0;false;false;0;0;0;;; -32765;1;0;false;false;;;;;; -32766;19;0;false;false;0;0;0;;; -32785;1;0;false;false;;;;;; -32786;1;0;false;false;0;0;0;;; -32787;6;0;false;false;;;;;; -32793;6;0;false;false;0;0;0;;; -32799;13;0;false;false;42;0;255;;; -32812;2;0;false;false;0;0;0;;; -32814;6;0;false;false;;;;;; -32820;18;0;false;false;0;0;0;;; -32838;5;0;false;false;;;;;; -32843;1;0;false;false;0;0;0;;; -32844;5;0;false;false;;;;;; -32849;2;1;false;false;127;0;85;;; -32851;1;0;false;false;;;;;; -32852;17;0;false;false;0;0;0;;; -32869;1;0;false;false;;;;;; -32870;1;0;false;false;0;0;0;;; -32871;1;0;false;false;;;;;; -32872;9;0;false;false;0;0;0;;; -32881;1;0;false;false;;;;;; -32882;2;0;false;false;0;0;0;;; -32884;1;0;false;false;;;;;; -32885;2;0;false;false;0;0;0;;; -32887;1;0;false;false;;;;;; -32888;1;0;false;false;0;0;0;;; -32889;6;0;false;false;;;;;; -32895;6;0;false;false;0;0;0;;; -32901;5;0;false;false;42;0;255;;; -32906;2;0;false;false;0;0;0;;; -32908;6;0;false;false;;;;;; -32914;1;0;false;false;0;0;0;;; -32915;5;0;false;false;;;;;; -32920;2;1;false;false;127;0;85;;; -32922;1;0;false;false;;;;;; -32923;17;0;false;false;0;0;0;;; -32940;1;0;false;false;;;;;; -32941;1;0;false;false;0;0;0;;; -32942;1;0;false;false;;;;;; -32943;11;0;false;false;0;0;0;;; -32954;1;0;false;false;;;;;; -32955;2;0;false;false;0;0;0;;; -32957;1;0;false;false;;;;;; -32958;2;0;false;false;0;0;0;;; -32960;1;0;false;false;;;;;; -32961;1;0;false;false;0;0;0;;; -32962;6;0;false;false;;;;;; -32968;6;0;false;false;0;0;0;;; -32974;5;0;false;false;42;0;255;;; -32979;2;0;false;false;0;0;0;;; -32981;6;0;false;false;;;;;; -32987;1;0;false;false;0;0;0;;; -32988;5;0;false;false;;;;;; -32993;2;1;false;false;127;0;85;;; -32995;1;0;false;false;;;;;; -32996;17;0;false;false;0;0;0;;; -33013;1;0;false;false;;;;;; -33014;1;0;false;false;0;0;0;;; -33015;6;0;false;false;;;;;; -33021;6;0;false;false;0;0;0;;; -33027;6;0;false;false;42;0;255;;; -33033;2;0;false;false;0;0;0;;; -33035;5;0;false;false;;;;;; -33040;1;0;false;false;0;0;0;;; -33041;5;0;false;false;;;;;; -33046;2;1;false;false;127;0;85;;; -33048;1;0;false;false;;;;;; -33049;17;0;false;false;0;0;0;;; -33066;1;0;false;false;;;;;; -33067;1;0;false;false;0;0;0;;; -33068;6;0;false;false;;;;;; -33074;6;0;false;false;0;0;0;;; -33080;10;0;false;false;42;0;255;;; -33090;2;0;false;false;0;0;0;;; -33092;5;0;false;false;;;;;; -33097;1;0;false;false;0;0;0;;; -33098;5;0;false;false;;;;;; -33103;6;0;false;false;0;0;0;;; -33109;3;0;false;false;42;0;255;;; -33112;2;0;false;false;0;0;0;;; -33114;6;0;false;false;;;;;; -33120;62;0;false;false;63;127;95;;; -33182;3;0;false;false;;;;;; -33185;7;0;false;false;0;0;0;;; -33192;1;0;false;false;;;;;; -33193;1;0;false;false;0;0;0;;; -33194;1;0;false;false;;;;;; -33195;13;0;false;false;0;0;0;;; -33208;1;0;false;false;;;;;; -33209;15;0;false;false;0;0;0;;; -33224;5;0;false;false;;;;;; -33229;67;0;false;false;63;127;95;;; -33296;3;0;false;false;;;;;; -33299;7;0;false;false;0;0;0;;; -33306;1;0;false;false;;;;;; -33307;1;0;false;false;0;0;0;;; -33308;1;0;false;false;;;;;; -33309;17;0;false;false;0;0;0;;; -33326;1;0;false;false;;;;;; -33327;11;0;false;false;0;0;0;;; -33338;5;0;false;false;;;;;; -33343;11;0;false;false;0;0;0;;; -33354;1;0;false;false;;;;;; -33355;10;0;false;false;0;0;0;;; -33365;1;0;false;false;;;;;; -33366;9;0;false;false;0;0;0;;; -33375;5;0;false;false;;;;;; -33380;2;1;false;false;127;0;85;;; -33382;1;0;false;false;;;;;; -33383;17;0;false;false;0;0;0;;; -33400;1;0;false;false;;;;;; -33401;1;0;false;false;0;0;0;;; -33402;1;0;false;false;;;;;; -33403;9;0;false;false;0;0;0;;; -33412;1;0;false;false;;;;;; -33413;2;0;false;false;0;0;0;;; -33415;1;0;false;false;;;;;; -33416;2;0;false;false;0;0;0;;; -33418;1;0;false;false;;;;;; -33419;1;0;false;false;0;0;0;;; -33420;6;0;false;false;;;;;; -33426;6;0;false;false;0;0;0;;; -33432;6;0;false;false;42;0;255;;; -33438;2;0;false;false;0;0;0;;; -33440;6;0;false;false;;;;;; -33446;1;0;false;false;0;0;0;;; -33447;5;0;false;false;;;;;; -33452;2;1;false;false;127;0;85;;; -33454;1;0;false;false;;;;;; -33455;17;0;false;false;0;0;0;;; -33472;1;0;false;false;;;;;; -33473;1;0;false;false;0;0;0;;; -33474;1;0;false;false;;;;;; -33475;11;0;false;false;0;0;0;;; -33486;1;0;false;false;;;;;; -33487;2;0;false;false;0;0;0;;; -33489;1;0;false;false;;;;;; -33490;2;0;false;false;0;0;0;;; -33492;1;0;false;false;;;;;; -33493;1;0;false;false;0;0;0;;; -33494;6;0;false;false;;;;;; -33500;6;0;false;false;0;0;0;;; -33506;6;0;false;false;42;0;255;;; -33512;2;0;false;false;0;0;0;;; -33514;6;0;false;false;;;;;; -33520;1;0;false;false;0;0;0;;; -33521;5;0;false;false;;;;;; -33526;2;1;false;false;127;0;85;;; -33528;1;0;false;false;;;;;; -33529;17;0;false;false;0;0;0;;; -33546;1;0;false;false;;;;;; -33547;1;0;false;false;0;0;0;;; -33548;6;0;false;false;;;;;; -33554;6;0;false;false;0;0;0;;; -33560;7;0;false;false;42;0;255;;; -33567;2;0;false;false;0;0;0;;; -33569;5;0;false;false;;;;;; -33574;1;0;false;false;0;0;0;;; -33575;8;0;false;false;;;;;; -33583;2;1;false;false;127;0;85;;; -33585;1;0;false;false;;;;;; -33586;17;0;false;false;0;0;0;;; -33603;1;0;false;false;;;;;; -33604;1;0;false;false;0;0;0;;; -33605;6;0;false;false;;;;;; -33611;6;0;false;false;0;0;0;;; -33617;11;0;false;false;42;0;255;;; -33628;2;0;false;false;0;0;0;;; -33630;5;0;false;false;;;;;; -33635;1;0;false;false;0;0;0;;; -33636;5;0;false;false;;;;;; -33641;6;0;false;false;0;0;0;;; -33647;3;0;false;false;42;0;255;;; -33650;2;0;false;false;0;0;0;;; -33652;5;0;false;false;;;;;; -33657;9;0;false;false;0;0;0;;; -33666;1;0;false;false;;;;;; -33667;1;0;false;false;0;0;0;;; -33668;1;0;false;false;;;;;; -33669;8;0;false;false;0;0;0;;; -33677;4;0;false;false;;;;;; -33681;1;0;false;false;0;0;0;;; -33682;4;0;false;false;;;;;; -33686;47;0;false;false;63;127;95;;; -33733;2;0;false;false;;;;;; -33735;2;1;false;false;127;0;85;;; -33737;1;0;false;false;;;;;; -33738;10;0;false;false;0;0;0;;; -33748;1;0;false;false;;;;;; -33749;1;0;false;false;0;0;0;;; -33750;1;0;false;false;;;;;; -33751;14;0;false;false;0;0;0;;; -33765;1;0;false;false;;;;;; -33766;1;0;false;false;0;0;0;;; -33767;5;0;false;false;;;;;; -33772;11;0;false;false;0;0;0;;; -33783;1;0;false;false;;;;;; -33784;10;0;false;false;0;0;0;;; -33794;1;0;false;false;;;;;; -33795;15;0;false;false;0;0;0;;; -33810;4;0;false;false;;;;;; -33814;1;0;false;false;0;0;0;;; -33815;4;0;false;false;;;;;; -33819;2;1;false;false;127;0;85;;; -33821;1;0;false;false;;;;;; -33822;15;0;false;false;0;0;0;;; -33837;1;0;false;false;;;;;; -33838;2;0;false;false;0;0;0;;; -33840;1;0;false;false;;;;;; -33841;4;1;false;false;127;0;85;;; -33845;1;0;false;false;0;0;0;;; -33846;1;0;false;false;;;;;; -33847;1;0;false;false;0;0;0;;; -33848;5;0;false;false;;;;;; -33853;6;0;false;false;0;0;0;;; -33859;3;0;false;false;42;0;255;;; -33862;2;0;false;false;0;0;0;;; -33864;4;0;false;false;;;;;; -33868;1;0;false;false;0;0;0;;; -33869;3;0;false;false;;;;;; -33872;1;0;false;false;0;0;0;;; -33873;3;0;false;false;;;;;; -33876;1;0;false;false;0;0;0;;; -33877;3;0;false;false;;;;;; -33880;3;0;false;false;63;95;191;;; -33883;4;0;false;false;;;;;; -33887;1;0;false;false;63;95;191;;; -33888;1;0;false;false;;;;;; -33889;3;0;false;false;63;95;191;;; -33892;1;0;false;false;;;;;; -33893;6;0;false;false;127;127;159;;; -33899;10;0;false;false;63;95;191;;; -33909;7;0;false;false;127;127;159;;; -33916;1;0;false;false;;;;;; -33917;5;0;false;false;63;95;191;;; -33922;1;0;false;false;;;;;; -33923;2;0;false;false;63;95;191;;; -33925;1;0;false;false;;;;;; -33926;4;0;false;false;63;95;191;;; -33930;1;0;false;false;;;;;; -33931;2;0;false;false;63;95;191;;; -33933;1;0;false;false;;;;;; -33934;5;0;false;false;63;95;191;;; -33939;1;0;false;false;;;;;; -33940;6;0;false;false;63;95;191;;; -33946;1;0;false;false;;;;;; -33947;7;0;false;false;63;95;191;;; -33954;1;0;false;false;;;;;; -33955;2;0;false;false;63;95;191;;; -33957;4;0;false;false;;;;;; -33961;1;0;false;false;63;95;191;;; -33962;1;0;false;false;;;;;; -33963;1;0;false;false;63;95;191;;; -33964;1;0;false;false;;;;;; -33965;7;0;false;false;63;95;191;;; -33972;2;0;false;false;;;;;; -33974;5;0;false;false;63;95;191;;; -33979;1;0;false;false;;;;;; -33980;3;0;false;false;63;95;191;;; -33983;1;0;false;false;;;;;; -33984;7;0;false;false;63;95;191;;; -33991;1;0;false;false;;;;;; -33992;5;0;false;false;63;95;191;;; -33997;1;0;false;false;;;;;; -33998;3;0;false;false;63;95;191;;; -34001;1;0;false;false;;;;;; -34002;4;0;false;false;63;95;191;;; -34006;1;0;false;false;;;;;; -34007;6;0;false;false;63;95;191;;; -34013;1;0;false;false;;;;;; -34014;3;0;false;false;63;95;191;;; -34017;1;0;false;false;;;;;; -34018;2;0;false;false;63;95;191;;; -34020;1;0;false;false;;;;;; -34021;8;0;false;false;63;95;191;;; -34029;1;0;false;false;;;;;; -34030;2;0;false;false;63;95;191;;; -34032;1;0;false;false;;;;;; -34033;5;0;false;false;63;95;191;;; -34038;5;0;false;false;;;;;; -34043;1;0;false;false;63;95;191;;; -34044;1;0;false;false;;;;;; -34045;7;0;false;false;63;95;191;;; -34052;1;0;false;false;;;;;; -34053;6;0;false;false;63;95;191;;; -34059;1;0;false;false;;;;;; -34060;7;0;false;false;63;95;191;;; -34067;1;0;false;false;;;;;; -34068;3;0;false;false;63;95;191;;; -34071;1;0;false;false;;;;;; -34072;5;0;false;false;63;95;191;;; -34077;1;0;false;false;;;;;; -34078;3;0;false;false;63;95;191;;; -34081;1;0;false;false;;;;;; -34082;6;0;false;false;63;95;191;;; -34088;1;0;false;false;;;;;; -34089;2;0;false;false;63;95;191;;; -34091;1;0;false;false;;;;;; -34092;3;0;false;false;63;95;191;;; -34095;1;0;false;false;;;;;; -34096;7;0;false;false;63;95;191;;; -34103;1;0;false;false;;;;;; -34104;7;0;false;false;63;95;191;;; -34111;5;0;false;false;;;;;; -34116;1;0;false;false;63;95;191;;; -34117;1;0;false;false;;;;;; -34118;6;0;false;false;63;95;191;;; -34124;1;0;false;false;;;;;; -34125;6;0;false;false;63;95;191;;; -34131;1;0;false;false;;;;;; -34132;9;0;false;false;63;95;191;;; -34141;4;0;false;false;;;;;; -34145;1;0;false;false;63;95;191;;; -34146;1;0;false;false;;;;;; -34147;3;0;false;false;127;127;159;;; -34150;4;0;false;false;;;;;; -34154;1;0;false;false;63;95;191;;; -34155;1;0;false;false;;;;;; -34156;4;0;false;false;127;127;159;;; -34160;5;0;false;false;63;95;191;;; -34165;4;0;false;false;127;127;159;;; -34169;1;0;false;false;;;;;; -34170;6;0;false;false;127;127;159;;; -34176;10;0;false;false;63;95;191;;; -34186;7;0;false;false;127;127;159;;; -34193;1;0;false;false;;;;;; -34194;2;0;false;false;63;95;191;;; -34196;1;0;false;false;;;;;; -34197;10;0;false;false;63;95;191;;; -34207;1;0;false;false;;;;;; -34208;2;0;false;false;63;95;191;;; -34210;1;0;false;false;;;;;; -34211;6;0;false;false;63;95;191;;; -34217;1;0;false;false;;;;;; -34218;1;0;false;false;63;95;191;;; -34219;1;0;false;false;;;;;; -34220;5;0;false;false;63;95;191;;; -34225;1;0;false;false;;;;;; -34226;6;0;false;false;63;95;191;;; -34232;1;0;false;false;;;;;; -34233;4;0;false;false;63;95;191;;; -34237;1;0;false;false;;;;;; -34238;5;0;false;false;63;95;191;;; -34243;1;0;false;false;;;;;; -34244;7;0;false;false;63;95;191;;; -34251;5;0;false;false;;;;;; -34256;1;0;false;false;63;95;191;;; -34257;1;0;false;false;;;;;; -34258;3;0;false;false;63;95;191;;; -34261;1;0;false;false;;;;;; -34262;4;0;false;false;63;95;191;;; -34266;1;0;false;false;;;;;; -34267;7;0;false;false;63;95;191;;; -34274;5;0;false;false;;;;;; -34279;2;0;false;false;63;95;191;;; -34281;3;0;false;false;;;;;; -34284;5;1;false;false;127;0;85;;; -34289;1;0;false;false;;;;;; -34290;10;0;false;false;0;0;0;;; -34300;1;0;false;false;;;;;; -34301;1;0;false;false;0;0;0;;; -34302;4;0;false;false;;;;;; -34306;7;1;false;false;127;0;85;;; -34313;1;0;false;false;;;;;; -34314;12;0;false;false;0;0;0;;; -34326;1;0;false;false;;;;;; -34327;7;0;false;false;0;0;0;;; -34334;4;0;false;false;;;;;; -34338;7;1;false;false;127;0;85;;; -34345;1;0;false;false;;;;;; -34346;3;1;false;false;127;0;85;;; -34349;1;0;false;false;;;;;; -34350;12;0;false;false;0;0;0;;; -34362;1;0;false;false;;;;;; -34363;51;0;false;false;63;127;95;;; -34414;2;0;false;false;;;;;; -34416;7;1;false;false;127;0;85;;; -34423;1;0;false;false;;;;;; -34424;3;1;false;false;127;0;85;;; -34427;1;0;false;false;;;;;; -34428;10;0;false;false;0;0;0;;; -34438;2;0;false;false;;;;;; -34440;52;0;false;false;63;127;95;;; -34492;9;0;false;false;;;;;; -34501;52;0;false;false;63;127;95;;; -34553;2;0;false;false;;;;;; -34555;7;1;false;false;127;0;85;;; -34562;1;0;false;false;;;;;; -34563;7;1;false;false;127;0;85;;; -34570;1;0;false;false;;;;;; -34571;8;0;false;false;0;0;0;;; -34579;1;0;false;false;;;;;; -34580;1;0;false;false;0;0;0;;; -34581;1;0;false;false;;;;;; -34582;5;1;false;false;127;0;85;;; -34587;1;0;false;false;0;0;0;;; -34588;6;0;false;false;;;;;; -34594;3;0;false;false;63;95;191;;; -34597;4;0;false;false;;;;;; -34601;1;0;false;false;63;95;191;;; -34602;1;0;false;false;;;;;; -34603;7;0;false;false;63;95;191;;; -34610;1;0;false;false;;;;;; -34611;1;0;false;false;63;95;191;;; -34612;1;0;false;false;;;;;; -34613;6;0;false;false;63;95;191;;; -34619;1;0;false;false;;;;;; -34620;4;0;false;false;63;95;191;;; -34624;1;0;false;false;;;;;; -34625;6;0;false;false;63;95;191;;; -34631;1;0;false;false;;;;;; -34632;7;0;false;false;63;95;191;;; -34639;1;0;false;false;;;;;; -34640;8;0;false;false;63;95;191;;; -34648;1;0;false;false;;;;;; -34649;2;0;false;false;63;95;191;;; -34651;1;0;false;false;;;;;; -34652;6;0;false;false;63;95;191;;; -34658;1;0;false;false;;;;;; -34659;7;0;false;false;63;95;191;;; -34666;4;0;false;false;;;;;; -34670;1;0;false;false;63;95;191;;; -34671;1;0;false;false;;;;;; -34672;2;0;false;false;63;95;191;;; -34674;1;0;false;false;;;;;; -34675;3;0;false;false;63;95;191;;; -34678;1;0;false;false;;;;;; -34679;9;0;false;false;63;95;191;;; -34688;2;0;false;false;;;;;; -34690;6;0;false;false;127;127;159;;; -34696;5;0;false;false;63;95;191;;; -34701;7;0;false;false;127;127;159;;; -34708;1;0;false;false;;;;;; -34709;3;0;false;false;63;95;191;;; -34712;1;0;false;false;;;;;; -34713;6;0;false;false;127;127;159;;; -34719;6;0;false;false;63;95;191;;; -34725;7;0;false;false;127;127;159;;; -34732;1;0;false;false;;;;;; -34733;3;0;false;false;63;95;191;;; -34736;1;0;false;false;;;;;; -34737;2;0;false;false;63;95;191;;; -34739;1;0;false;false;;;;;; -34740;3;0;false;false;63;95;191;;; -34743;1;0;false;false;;;;;; -34744;2;0;false;false;63;95;191;;; -34746;1;0;false;false;;;;;; -34747;7;0;false;false;63;95;191;;; -34754;1;0;false;false;;;;;; -34755;7;0;false;false;63;95;191;;; -34762;1;0;false;false;;;;;; -34763;6;0;false;false;63;95;191;;; -34769;4;0;false;false;;;;;; -34773;1;0;false;false;63;95;191;;; -34774;1;0;false;false;;;;;; -34775;3;0;false;false;127;127;159;;; -34778;4;0;false;false;;;;;; -34782;1;0;false;false;63;95;191;;; -34783;4;0;false;false;;;;;; -34787;1;0;false;false;63;95;191;;; -34788;1;0;false;false;;;;;; -34789;7;1;false;false;127;159;191;;; -34796;5;0;false;false;63;95;191;;; -34801;1;0;false;false;;;;;; -34802;5;0;false;false;63;95;191;;; -34807;1;0;false;false;;;;;; -34808;6;0;false;false;63;95;191;;; -34814;1;0;false;false;;;;;; -34815;2;0;false;false;63;95;191;;; -34817;1;0;false;false;;;;;; -34818;7;0;false;false;63;95;191;;; -34825;1;0;false;false;;;;;; -34826;2;0;false;false;63;95;191;;; -34828;1;0;false;false;;;;;; -34829;6;0;false;false;63;95;191;;; -34835;1;0;false;false;;;;;; -34836;1;0;false;false;63;95;191;;; -34837;1;0;false;false;;;;;; -34838;5;0;false;false;63;95;191;;; -34843;1;0;false;false;;;;;; -34844;4;0;false;false;63;95;191;;; -34848;1;0;false;false;;;;;; -34849;9;0;false;false;63;95;191;;; -34858;1;0;false;false;;;;;; -34859;2;0;false;false;63;95;191;;; -34861;1;0;false;false;;;;;; -34862;8;0;false;false;63;95;191;;; -34870;4;0;false;false;;;;;; -34874;1;0;false;false;63;95;191;;; -34875;1;0;false;false;;;;;; -34876;7;1;false;false;127;159;191;;; -34883;6;0;false;false;63;95;191;;; -34889;1;0;false;false;;;;;; -34890;6;0;false;false;63;95;191;;; -34896;1;0;false;false;;;;;; -34897;2;0;false;false;63;95;191;;; -34899;1;0;false;false;;;;;; -34900;7;0;false;false;63;95;191;;; -34907;1;0;false;false;;;;;; -34908;2;0;false;false;63;95;191;;; -34910;1;0;false;false;;;;;; -34911;5;0;false;false;63;95;191;;; -34916;4;0;false;false;;;;;; -34920;2;0;false;false;63;95;191;;; -34922;3;0;false;false;;;;;; -34925;6;1;false;false;127;0;85;;; -34931;1;0;false;false;;;;;; -34932;11;0;false;false;0;0;0;;; -34943;3;1;false;false;127;0;85;;; -34946;1;0;false;false;;;;;; -34947;6;0;false;false;0;0;0;;; -34953;1;0;false;false;;;;;; -34954;3;1;false;false;127;0;85;;; -34957;1;0;false;false;;;;;; -34958;7;0;false;false;0;0;0;;; -34965;1;0;false;false;;;;;; -34966;1;0;false;false;0;0;0;;; -34967;4;0;false;false;;;;;; -34971;6;0;false;false;0;0;0;;; -34977;1;0;false;false;;;;;; -34978;1;0;false;false;0;0;0;;; -34979;1;0;false;false;;;;;; -34980;3;1;false;false;127;0;85;;; -34983;1;0;false;false;;;;;; -34984;21;0;false;false;0;0;0;;; -35005;4;0;false;false;;;;;; -35009;11;0;false;false;0;0;0;;; -35020;1;0;false;false;;;;;; -35021;1;0;false;false;0;0;0;;; -35022;1;0;false;false;;;;;; -35023;6;0;false;false;0;0;0;;; -35029;4;0;false;false;;;;;; -35033;9;0;false;false;0;0;0;;; -35042;1;0;false;false;;;;;; -35043;1;0;false;false;0;0;0;;; -35044;1;0;false;false;;;;;; -35045;5;0;false;false;0;0;0;;; -35050;1;0;false;false;;;;;; -35051;1;0;false;false;0;0;0;;; -35052;1;0;false;false;;;;;; -35053;7;0;false;false;0;0;0;;; -35060;3;0;false;false;;;;;; -35063;1;0;false;false;0;0;0;;; -35064;3;0;false;false;;;;;; -35067;3;0;false;false;63;95;191;;; -35070;4;0;false;false;;;;;; -35074;1;0;false;false;63;95;191;;; -35075;1;0;false;false;;;;;; -35076;6;0;false;false;63;95;191;;; -35082;1;0;false;false;;;;;; -35083;3;0;false;false;63;95;191;;; -35086;1;0;false;false;;;;;; -35087;7;0;false;false;63;95;191;;; -35094;1;0;false;false;;;;;; -35095;4;0;false;false;63;95;191;;; -35099;1;0;false;false;;;;;; -35100;6;0;false;false;63;95;191;;; -35106;1;0;false;false;;;;;; -35107;2;0;false;false;63;95;191;;; -35109;1;0;false;false;;;;;; -35110;4;0;false;false;63;95;191;;; -35114;1;0;false;false;;;;;; -35115;7;0;false;false;63;95;191;;; -35122;1;0;false;false;;;;;; -35123;3;0;false;false;63;95;191;;; -35126;1;0;false;false;;;;;; -35127;2;0;false;false;63;95;191;;; -35129;1;0;false;false;;;;;; -35130;8;0;false;false;63;95;191;;; -35138;4;0;false;false;;;;;; -35142;1;0;false;false;63;95;191;;; -35143;1;0;false;false;;;;;; -35144;3;0;false;false;127;127;159;;; -35147;5;0;false;false;63;95;191;;; -35152;4;0;false;false;127;127;159;;; -35156;2;0;false;false;;;;;; -35158;6;0;false;false;127;127;159;;; -35164;10;0;false;false;63;95;191;;; -35174;7;0;false;false;127;127;159;;; -35181;1;0;false;false;;;;;; -35182;2;0;false;false;63;95;191;;; -35184;1;0;false;false;;;;;; -35185;3;0;false;false;63;95;191;;; -35188;1;0;false;false;;;;;; -35189;10;0;false;false;63;95;191;;; -35199;1;0;false;false;;;;;; -35200;2;0;false;false;63;95;191;;; -35202;1;0;false;false;;;;;; -35203;6;0;false;false;63;95;191;;; -35209;1;0;false;false;;;;;; -35210;1;0;false;false;63;95;191;;; -35211;1;0;false;false;;;;;; -35212;5;0;false;false;63;95;191;;; -35217;1;0;false;false;;;;;; -35218;6;0;false;false;63;95;191;;; -35224;1;0;false;false;;;;;; -35225;6;0;false;false;63;95;191;;; -35231;4;0;false;false;;;;;; -35235;1;0;false;false;63;95;191;;; -35236;1;0;false;false;;;;;; -35237;3;0;false;false;63;95;191;;; -35240;1;0;false;false;;;;;; -35241;6;0;false;false;63;95;191;;; -35247;1;0;false;false;;;;;; -35248;2;0;false;false;63;95;191;;; -35250;1;0;false;false;;;;;; -35251;7;0;false;false;63;95;191;;; -35258;4;0;false;false;;;;;; -35262;2;0;false;false;63;95;191;;; -35264;3;0;false;false;;;;;; -35267;6;1;false;false;127;0;85;;; -35273;1;0;false;false;;;;;; -35274;4;1;false;false;127;0;85;;; -35278;1;0;false;false;;;;;; -35279;7;0;false;false;0;0;0;;; -35286;1;0;false;false;;;;;; -35287;1;0;false;false;0;0;0;;; -35288;4;0;false;false;;;;;; -35292;2;1;false;false;127;0;85;;; -35294;1;0;false;false;;;;;; -35295;11;0;false;false;0;0;0;;; -35306;1;0;false;false;;;;;; -35307;1;0;false;false;0;0;0;;; -35308;5;0;false;false;;;;;; -35313;8;0;false;false;0;0;0;;; -35321;1;0;false;false;;;;;; -35322;1;0;false;false;0;0;0;;; -35323;1;0;false;false;;;;;; -35324;4;1;false;false;127;0;85;;; -35328;1;0;false;false;0;0;0;;; -35329;4;0;false;false;;;;;; -35333;1;0;false;false;0;0;0;;; -35334;3;0;false;false;;;;;; -35337;1;0;false;false;0;0;0;;; -35338;3;0;false;false;;;;;; -35341;3;0;false;false;63;95;191;;; -35344;5;0;false;false;;;;;; -35349;1;0;false;false;63;95;191;;; -35350;1;0;false;false;;;;;; -35351;7;0;false;false;63;95;191;;; -35358;1;0;false;false;;;;;; -35359;3;0;false;false;63;95;191;;; -35362;1;0;false;false;;;;;; -35363;6;0;false;false;63;95;191;;; -35369;1;0;false;false;;;;;; -35370;2;0;false;false;63;95;191;;; -35372;1;0;false;false;;;;;; -35373;10;0;false;false;63;95;191;;; -35383;1;0;false;false;;;;;; -35384;2;0;false;false;63;95;191;;; -35386;1;0;false;false;;;;;; -35387;6;0;false;false;63;95;191;;; -35393;4;0;false;false;;;;;; -35397;1;0;false;false;63;95;191;;; -35398;1;0;false;false;;;;;; -35399;8;1;false;false;127;159;191;;; -35407;3;0;false;false;63;95;191;;; -35410;1;0;false;false;;;;;; -35411;7;0;false;false;63;95;191;;; -35418;1;0;false;false;;;;;; -35419;6;0;false;false;63;95;191;;; -35425;1;0;false;false;;;;;; -35426;2;0;false;false;63;95;191;;; -35428;1;0;false;false;;;;;; -35429;10;0;false;false;63;95;191;;; -35439;1;0;false;false;;;;;; -35440;2;0;false;false;63;95;191;;; -35442;1;0;false;false;;;;;; -35443;5;0;false;false;63;95;191;;; -35448;4;0;false;false;;;;;; -35452;2;0;false;false;63;95;191;;; -35454;3;0;false;false;;;;;; -35457;6;1;false;false;127;0;85;;; -35463;1;0;false;false;;;;;; -35464;3;1;false;false;127;0;85;;; -35467;1;0;false;false;;;;;; -35468;14;0;false;false;0;0;0;;; -35482;1;0;false;false;;;;;; -35483;1;0;false;false;0;0;0;;; -35484;4;0;false;false;;;;;; -35488;6;1;false;false;127;0;85;;; -35494;1;0;false;false;;;;;; -35495;9;0;false;false;0;0;0;;; -35504;1;0;false;false;;;;;; -35505;1;0;false;false;0;0;0;;; -35506;1;0;false;false;;;;;; -35507;12;0;false;false;0;0;0;;; -35519;3;0;false;false;;;;;; -35522;1;0;false;false;0;0;0;;; -35523;4;0;false;false;;;;;; -35527;3;0;false;false;63;95;191;;; -35530;5;0;false;false;;;;;; -35535;1;0;false;false;63;95;191;;; -35536;1;0;false;false;;;;;; -35537;7;0;false;false;63;95;191;;; -35544;1;0;false;false;;;;;; -35545;3;0;false;false;63;95;191;;; -35548;1;0;false;false;;;;;; -35549;6;0;false;false;63;95;191;;; -35555;1;0;false;false;;;;;; -35556;5;0;false;false;63;95;191;;; -35561;1;0;false;false;;;;;; -35562;7;0;false;false;63;95;191;;; -35569;1;0;false;false;;;;;; -35570;7;0;false;false;63;95;191;;; -35577;1;0;false;false;;;;;; -35578;1;0;false;false;63;95;191;;; -35579;1;0;false;false;;;;;; -35580;5;0;false;false;63;95;191;;; -35585;1;0;false;false;;;;;; -35586;4;0;false;false;63;95;191;;; -35590;1;0;false;false;;;;;; -35591;3;0;false;false;63;95;191;;; -35594;1;0;false;false;;;;;; -35595;5;0;false;false;63;95;191;;; -35600;1;0;false;false;;;;;; -35601;2;0;false;false;63;95;191;;; -35603;5;0;false;false;;;;;; -35608;1;0;false;false;63;95;191;;; -35609;1;0;false;false;;;;;; -35610;3;0;false;false;63;95;191;;; -35613;1;0;false;false;;;;;; -35614;6;0;false;false;63;95;191;;; -35620;1;0;false;false;;;;;; -35621;5;0;false;false;63;95;191;;; -35626;1;0;false;false;;;;;; -35627;4;0;false;false;63;95;191;;; -35631;1;0;false;false;;;;;; -35632;2;0;false;false;63;95;191;;; -35634;1;0;false;false;;;;;; -35635;5;0;false;false;63;95;191;;; -35640;1;0;false;false;;;;;; -35641;7;0;false;false;63;95;191;;; -35648;1;0;false;false;;;;;; -35649;6;0;false;false;63;95;191;;; -35655;4;0;false;false;;;;;; -35659;1;0;false;false;63;95;191;;; -35660;1;0;false;false;;;;;; -35661;8;1;false;false;127;159;191;;; -35669;3;0;false;false;63;95;191;;; -35672;1;0;false;false;;;;;; -35673;7;0;false;false;63;95;191;;; -35680;1;0;false;false;;;;;; -35681;6;0;false;false;63;95;191;;; -35687;1;0;false;false;;;;;; -35688;5;0;false;false;63;95;191;;; -35693;1;0;false;false;;;;;; -35694;7;0;false;false;63;95;191;;; -35701;1;0;false;false;;;;;; -35702;6;0;false;false;63;95;191;;; -35708;4;0;false;false;;;;;; -35712;2;0;false;false;63;95;191;;; -35714;3;0;false;false;;;;;; -35717;6;1;false;false;127;0;85;;; -35723;1;0;false;false;;;;;; -35724;3;1;false;false;127;0;85;;; -35727;1;0;false;false;;;;;; -35728;10;0;false;false;0;0;0;;; -35738;1;0;false;false;;;;;; -35739;1;0;false;false;0;0;0;;; -35740;4;0;false;false;;;;;; -35744;6;1;false;false;127;0;85;;; -35750;1;0;false;false;;;;;; -35751;12;0;false;false;0;0;0;;; -35763;3;0;false;false;;;;;; -35766;1;0;false;false;0;0;0;;; -35767;3;0;false;false;;;;;; -35770;3;0;false;false;63;95;191;;; -35773;4;0;false;false;;;;;; -35777;1;0;false;false;63;95;191;;; -35778;1;0;false;false;;;;;; -35779;7;0;false;false;63;95;191;;; -35786;1;0;false;false;;;;;; -35787;7;0;false;false;63;95;191;;; -35794;1;0;false;false;;;;;; -35795;3;0;false;false;63;95;191;;; -35798;1;0;false;false;;;;;; -35799;6;0;false;false;63;95;191;;; -35805;1;0;false;false;;;;;; -35806;2;0;false;false;63;95;191;;; -35808;1;0;false;false;;;;;; -35809;7;0;false;false;63;95;191;;; -35816;4;0;false;false;;;;;; -35820;1;0;false;false;63;95;191;;; -35821;1;0;false;false;;;;;; -35822;8;1;false;false;127;159;191;;; -35830;1;0;false;false;63;95;191;;; -35831;1;0;false;false;;;;;; -35832;7;0;false;false;63;95;191;;; -35839;1;0;false;false;;;;;; -35840;10;0;false;false;63;95;191;;; -35850;1;0;false;false;;;;;; -35851;7;0;false;false;63;95;191;;; -35858;1;0;false;false;;;;;; -35859;2;0;false;false;63;95;191;;; -35861;1;0;false;false;;;;;; -35862;3;0;false;false;63;95;191;;; -35865;1;0;false;false;;;;;; -35866;3;0;false;false;63;95;191;;; -35869;1;0;false;false;;;;;; -35870;6;0;false;false;63;95;191;;; -35876;1;0;false;false;;;;;; -35877;2;0;false;false;63;95;191;;; -35879;1;0;false;false;;;;;; -35880;6;0;false;false;63;95;191;;; -35886;4;0;false;false;;;;;; -35890;2;0;false;false;63;95;191;;; -35892;3;0;false;false;;;;;; -35895;6;1;false;false;127;0;85;;; -35901;1;0;false;false;;;;;; -35902;7;1;false;false;127;0;85;;; -35909;1;0;false;false;;;;;; -35910;10;0;false;false;0;0;0;;; -35920;1;0;false;false;;;;;; -35921;1;0;false;false;0;0;0;;; -35922;4;0;false;false;;;;;; -35926;6;1;false;false;127;0;85;;; -35932;1;0;false;false;;;;;; -35933;9;0;false;false;0;0;0;;; -35942;3;0;false;false;;;;;; -35945;1;0;false;false;0;0;0;;; -35946;3;0;false;false;;;;;; -35949;3;0;false;false;63;95;191;;; -35952;4;0;false;false;;;;;; -35956;1;0;false;false;63;95;191;;; -35957;1;0;false;false;;;;;; -35958;7;0;false;false;63;95;191;;; -35965;1;0;false;false;;;;;; -35966;3;0;false;false;63;95;191;;; -35969;1;0;false;false;;;;;; -35970;7;0;false;false;63;95;191;;; -35977;2;0;false;false;;;;;; -35979;6;0;false;false;127;127;159;;; -35985;7;0;false;false;63;95;191;;; -35992;7;0;false;false;127;127;159;;; -35999;1;0;false;false;;;;;; -36000;4;0;false;false;63;95;191;;; -36004;1;0;false;false;;;;;; -36005;2;0;false;false;63;95;191;;; -36007;1;0;false;false;;;;;; -36008;6;0;false;false;63;95;191;;; -36014;1;0;false;false;;;;;; -36015;6;0;false;false;63;95;191;;; -36021;1;0;false;false;;;;;; -36022;6;0;false;false;127;127;159;;; -36028;10;0;false;false;63;95;191;;; -36038;7;0;false;false;127;127;159;;; -36045;5;0;false;false;;;;;; -36050;1;0;false;false;63;95;191;;; -36051;1;0;false;false;;;;;; -36052;2;0;false;false;63;95;191;;; -36054;1;0;false;false;;;;;; -36055;10;0;false;false;63;95;191;;; -36065;1;0;false;false;;;;;; -36066;2;0;false;false;63;95;191;;; -36068;1;0;false;false;;;;;; -36069;6;0;false;false;63;95;191;;; -36075;1;0;false;false;;;;;; -36076;1;0;false;false;63;95;191;;; -36077;1;0;false;false;;;;;; -36078;5;0;false;false;63;95;191;;; -36083;1;0;false;false;;;;;; -36084;7;0;false;false;63;95;191;;; -36091;4;0;false;false;;;;;; -36095;1;0;false;false;63;95;191;;; -36096;4;0;false;false;;;;;; -36100;1;0;false;false;63;95;191;;; -36101;1;0;false;false;;;;;; -36102;8;1;false;false;127;159;191;;; -36110;3;0;false;false;63;95;191;;; -36113;1;0;false;false;;;;;; -36114;6;0;false;false;63;95;191;;; -36120;4;0;false;false;;;;;; -36124;2;0;false;false;63;95;191;;; -36126;3;0;false;false;;;;;; -36129;6;1;false;false;127;0;85;;; -36135;1;0;false;false;;;;;; -36136;6;0;false;false;0;0;0;;; -36142;1;0;false;false;;;;;; -36143;10;0;false;false;0;0;0;;; -36153;1;0;false;false;;;;;; -36154;1;0;false;false;0;0;0;;; -36155;4;0;false;false;;;;;; -36159;6;1;false;false;127;0;85;;; -36165;1;0;false;false;;;;;; -36166;18;0;false;false;0;0;0;;; -36184;3;0;false;false;;;;;; -36187;1;0;false;false;0;0;0;;; -36188;3;0;false;false;;;;;; -36191;3;0;false;false;63;95;191;;; -36194;4;0;false;false;;;;;; -36198;1;0;false;false;63;95;191;;; -36199;1;0;false;false;;;;;; -36200;7;0;false;false;63;95;191;;; -36207;1;0;false;false;;;;;; -36208;3;0;false;false;63;95;191;;; -36211;1;0;false;false;;;;;; -36212;5;0;false;false;63;95;191;;; -36217;1;0;false;false;;;;;; -36218;6;0;false;false;63;95;191;;; -36224;1;0;false;false;;;;;; -36225;2;0;false;false;63;95;191;;; -36227;1;0;false;false;;;;;; -36228;3;0;false;false;63;95;191;;; -36231;1;0;false;false;;;;;; -36232;5;0;false;false;63;95;191;;; -36237;4;0;false;false;;;;;; -36241;2;0;false;false;63;95;191;;; -36243;3;0;false;false;;;;;; -36246;4;1;false;false;127;0;85;;; -36250;1;0;false;false;;;;;; -36251;12;0;false;false;0;0;0;;; -36263;1;0;false;false;;;;;; -36264;7;0;false;false;0;0;0;;; -36271;1;0;false;false;;;;;; -36272;1;0;false;false;0;0;0;;; -36273;4;0;false;false;;;;;; -36277;22;0;false;false;0;0;0;;; -36299;3;0;false;false;;;;;; -36302;1;0;false;false;0;0;0;;; -36303;4;0;false;false;;;;;; -36307;3;0;false;false;63;95;191;;; -36310;4;0;false;false;;;;;; -36314;1;0;false;false;63;95;191;;; -36315;1;0;false;false;;;;;; -36316;7;0;false;false;63;95;191;;; -36323;1;0;false;false;;;;;; -36324;3;0;false;false;63;95;191;;; -36327;1;0;false;false;;;;;; -36328;5;0;false;false;63;95;191;;; -36333;1;0;false;false;;;;;; -36334;6;0;false;false;63;95;191;;; -36340;1;0;false;false;;;;;; -36341;2;0;false;false;63;95;191;;; -36343;1;0;false;false;;;;;; -36344;3;0;false;false;63;95;191;;; -36347;1;0;false;false;;;;;; -36348;4;0;false;false;63;95;191;;; -36352;1;0;false;false;;;;;; -36353;2;0;false;false;63;95;191;;; -36355;1;0;false;false;;;;;; -36356;3;0;false;false;63;95;191;;; -36359;1;0;false;false;;;;;; -36360;9;0;false;false;63;95;191;;; -36369;1;0;false;false;;;;;; -36370;7;0;false;false;63;95;191;;; -36377;4;0;false;false;;;;;; -36381;1;0;false;false;63;95;191;;; -36382;1;0;false;false;;;;;; -36383;2;0;false;false;63;95;191;;; -36385;1;0;false;false;;;;;; -36386;7;0;false;false;63;95;191;;; -36393;1;0;false;false;;;;;; -36394;2;0;false;false;63;95;191;;; -36396;1;0;false;false;;;;;; -36397;8;0;false;false;63;95;191;;; -36405;1;0;false;false;;;;;; -36406;2;0;false;false;63;95;191;;; -36408;1;0;false;false;;;;;; -36409;8;0;false;false;63;95;191;;; -36417;1;0;false;false;;;;;; -36418;14;0;false;false;63;95;191;;; -36432;4;0;false;false;;;;;; -36436;1;0;false;false;63;95;191;;; -36437;1;0;false;false;;;;;; -36438;3;0;false;false;127;127;159;;; -36441;4;0;false;false;;;;;; -36445;1;0;false;false;63;95;191;;; -36446;4;0;false;false;;;;;; -36450;1;0;false;false;63;95;191;;; -36451;1;0;false;false;;;;;; -36452;7;1;false;false;127;159;191;;; -36459;6;0;false;false;63;95;191;;; -36465;1;0;false;false;;;;;; -36466;4;0;false;false;63;95;191;;; -36470;1;0;false;false;;;;;; -36471;2;0;false;false;63;95;191;;; -36473;1;0;false;false;;;;;; -36474;6;0;false;false;63;95;191;;; -36480;4;0;false;false;;;;;; -36484;1;0;false;false;63;95;191;;; -36485;1;0;false;false;;;;;; -36486;7;1;false;false;127;159;191;;; -36493;6;0;false;false;63;95;191;;; -36499;1;0;false;false;;;;;; -36500;6;0;false;false;63;95;191;;; -36506;1;0;false;false;;;;;; -36507;2;0;false;false;63;95;191;;; -36509;1;0;false;false;;;;;; -36510;3;0;false;false;63;95;191;;; -36513;1;0;false;false;;;;;; -36514;8;0;false;false;63;95;191;;; -36522;1;0;false;false;;;;;; -36523;4;0;false;false;63;95;191;;; -36527;1;0;false;false;;;;;; -36528;2;0;false;false;63;95;191;;; -36530;1;0;false;false;;;;;; -36531;6;0;false;false;63;95;191;;; -36537;1;0;false;false;;;;;; -36538;8;0;false;false;63;95;191;;; -36546;1;0;false;false;;;;;; -36547;3;0;false;false;63;95;191;;; -36550;4;0;false;false;;;;;; -36554;2;0;false;false;63;95;191;;; -36556;3;0;false;false;;;;;; -36559;4;1;false;false;127;0;85;;; -36563;1;0;false;false;;;;;; -36564;12;0;false;false;0;0;0;;; -36576;1;0;false;false;;;;;; -36577;7;0;false;false;0;0;0;;; -36584;1;0;false;false;;;;;; -36585;3;1;false;false;127;0;85;;; -36588;1;0;false;false;;;;;; -36589;7;0;false;false;0;0;0;;; -36596;1;0;false;false;;;;;; -36597;1;0;false;false;0;0;0;;; -36598;4;0;false;false;;;;;; -36602;2;1;false;false;127;0;85;;; -36604;1;0;false;false;;;;;; -36605;7;0;false;false;0;0;0;;; -36612;1;0;false;false;;;;;; -36613;1;0;false;false;0;0;0;;; -36614;1;0;false;false;;;;;; -36615;1;0;false;false;0;0;0;;; -36616;1;0;false;false;;;;;; -36617;2;0;false;false;0;0;0;;; -36619;1;0;false;false;;;;;; -36620;6;0;false;false;0;0;0;;; -36626;1;0;false;false;;;;;; -36627;1;0;false;false;0;0;0;;; -36628;1;0;false;false;;;;;; -36629;16;0;false;false;0;0;0;;; -36645;1;0;false;false;;;;;; -36646;1;0;false;false;0;0;0;;; -36647;5;0;false;false;;;;;; -36652;6;1;false;false;127;0;85;;; -36658;1;0;false;false;0;0;0;;; -36659;4;0;false;false;;;;;; -36663;1;0;false;false;0;0;0;;; -36664;4;0;false;false;;;;;; -36668;21;0;false;false;0;0;0;;; -36689;1;0;false;false;;;;;; -36690;8;0;false;false;0;0;0;;; -36698;3;0;false;false;;;;;; -36701;1;0;false;false;0;0;0;;; -36702;4;0;false;false;;;;;; -36706;3;0;false;false;63;95;191;;; -36709;4;0;false;false;;;;;; -36713;1;0;false;false;63;95;191;;; -36714;1;0;false;false;;;;;; -36715;7;0;false;false;63;95;191;;; -36722;1;0;false;false;;;;;; -36723;3;0;false;false;63;95;191;;; -36726;1;0;false;false;;;;;; -36727;5;0;false;false;63;95;191;;; -36732;1;0;false;false;;;;;; -36733;3;0;false;false;63;95;191;;; -36736;1;0;false;false;;;;;; -36737;2;0;false;false;63;95;191;;; -36739;1;0;false;false;;;;;; -36740;3;0;false;false;63;95;191;;; -36743;1;0;false;false;;;;;; -36744;5;0;false;false;63;95;191;;; -36749;4;0;false;false;;;;;; -36753;2;0;false;false;63;95;191;;; -36755;3;0;false;false;;;;;; -36758;4;1;false;false;127;0;85;;; -36762;1;0;false;false;;;;;; -36763;6;0;false;false;0;0;0;;; -36769;3;1;false;false;127;0;85;;; -36772;1;0;false;false;;;;;; -36773;2;0;false;false;0;0;0;;; -36775;1;0;false;false;;;;;; -36776;1;0;false;false;0;0;0;;; -36777;4;0;false;false;;;;;; -36781;17;0;false;false;0;0;0;;; -36798;3;0;false;false;;;;;; -36801;1;0;false;false;0;0;0;;; -36802;3;0;false;false;;;;;; -36805;3;0;false;false;63;95;191;;; -36808;4;0;false;false;;;;;; -36812;1;0;false;false;63;95;191;;; -36813;1;0;false;false;;;;;; -36814;7;0;false;false;63;95;191;;; -36821;1;0;false;false;;;;;; -36822;3;0;false;false;63;95;191;;; -36825;1;0;false;false;;;;;; -36826;5;0;false;false;63;95;191;;; -36831;1;0;false;false;;;;;; -36832;9;0;false;false;63;95;191;;; -36841;1;0;false;false;;;;;; -36842;2;0;false;false;63;95;191;;; -36844;1;0;false;false;;;;;; -36845;3;0;false;false;63;95;191;;; -36848;1;0;false;false;;;;;; -36849;5;0;false;false;63;95;191;;; -36854;4;0;false;false;;;;;; -36858;2;0;false;false;63;95;191;;; -36860;3;0;false;false;;;;;; -36863;4;1;false;false;127;0;85;;; -36867;1;0;false;false;;;;;; -36868;6;0;false;false;0;0;0;;; -36874;4;1;false;false;127;0;85;;; -36878;1;0;false;false;;;;;; -36879;2;0;false;false;0;0;0;;; -36881;1;0;false;false;;;;;; -36882;1;0;false;false;0;0;0;;; -36883;4;0;false;false;;;;;; -36887;17;0;false;false;0;0;0;;; -36904;3;0;false;false;;;;;; -36907;1;0;false;false;0;0;0;;; -36908;6;0;false;false;;;;;; -36914;3;0;false;false;63;95;191;;; -36917;4;0;false;false;;;;;; -36921;1;0;false;false;63;95;191;;; -36922;1;0;false;false;;;;;; -36923;7;0;false;false;63;95;191;;; -36930;1;0;false;false;;;;;; -36931;3;0;false;false;63;95;191;;; -36934;1;0;false;false;;;;;; -36935;9;0;false;false;63;95;191;;; -36944;1;0;false;false;;;;;; -36945;4;0;false;false;63;95;191;;; -36949;1;0;false;false;;;;;; -36950;4;0;false;false;63;95;191;;; -36954;1;0;false;false;;;;;; -36955;2;0;false;false;63;95;191;;; -36957;1;0;false;false;;;;;; -36958;3;0;false;false;63;95;191;;; -36961;1;0;false;false;;;;;; -36962;5;0;false;false;63;95;191;;; -36967;4;0;false;false;;;;;; -36971;1;0;false;false;63;95;191;;; -36972;1;0;false;false;;;;;; -36973;3;0;false;false;127;127;159;;; -36976;4;0;false;false;;;;;; -36980;1;0;false;false;63;95;191;;; -36981;4;0;false;false;;;;;; -36985;1;0;false;false;63;95;191;;; -36986;1;0;false;false;;;;;; -36987;7;1;false;false;127;159;191;;; -36994;4;0;false;false;63;95;191;;; -36998;1;0;false;false;;;;;; -36999;4;0;false;false;63;95;191;;; -37003;1;0;false;false;;;;;; -37004;4;0;false;false;63;95;191;;; -37008;1;0;false;false;;;;;; -37009;2;0;false;false;63;95;191;;; -37011;1;0;false;false;;;;;; -37012;6;0;false;false;63;95;191;;; -37018;1;0;false;false;;;;;; -37019;4;0;false;false;63;95;191;;; -37023;1;0;false;false;;;;;; -37024;3;0;false;false;63;95;191;;; -37027;1;0;false;false;;;;;; -37028;7;0;false;false;63;95;191;;; -37035;1;0;false;false;;;;;; -37036;4;0;false;false;63;95;191;;; -37040;1;0;false;false;;;;;; -37041;6;0;false;false;63;95;191;;; -37047;4;0;false;false;;;;;; -37051;1;0;false;false;63;95;191;;; -37052;2;0;false;false;;;;;; -37054;4;0;false;false;63;95;191;;; -37058;1;0;false;false;;;;;; -37059;6;0;false;false;63;95;191;;; -37065;1;0;false;false;;;;;; -37066;6;0;false;false;63;95;191;;; -37072;1;0;false;false;;;;;; -37073;2;0;false;false;63;95;191;;; -37075;1;0;false;false;;;;;; -37076;7;0;false;false;63;95;191;;; -37083;1;0;false;false;;;;;; -37084;5;0;false;false;63;95;191;;; -37089;1;0;false;false;;;;;; -37090;20;0;false;false;63;95;191;;; -37110;4;0;false;false;;;;;; -37114;1;0;false;false;63;95;191;;; -37115;1;0;false;false;;;;;; -37116;7;1;false;false;127;159;191;;; -37123;10;0;false;false;63;95;191;;; -37133;1;0;false;false;;;;;; -37134;6;0;false;false;63;95;191;;; -37140;1;0;false;false;;;;;; -37141;2;0;false;false;63;95;191;;; -37143;1;0;false;false;;;;;; -37144;3;0;false;false;63;95;191;;; -37147;1;0;false;false;;;;;; -37148;5;0;false;false;63;95;191;;; -37153;1;0;false;false;;;;;; -37154;1;0;false;false;63;95;191;;; -37155;1;0;false;false;;;;;; -37156;5;0;false;false;63;95;191;;; -37161;1;0;false;false;;;;;; -37162;4;0;false;false;63;95;191;;; -37166;1;0;false;false;;;;;; -37167;3;0;false;false;63;95;191;;; -37170;1;0;false;false;;;;;; -37171;5;0;false;false;63;95;191;;; -37176;1;0;false;false;;;;;; -37177;2;0;false;false;63;95;191;;; -37179;1;0;false;false;;;;;; -37180;3;0;false;false;63;95;191;;; -37183;5;0;false;false;;;;;; -37188;1;0;false;false;63;95;191;;; -37189;2;0;false;false;;;;;; -37191;6;0;false;false;63;95;191;;; -37197;1;0;false;false;;;;;; -37198;9;0;false;false;63;95;191;;; -37207;1;0;false;false;;;;;; -37208;3;0;false;false;63;95;191;;; -37211;1;0;false;false;;;;;; -37212;4;0;false;false;63;95;191;;; -37216;1;0;false;false;;;;;; -37217;9;0;false;false;63;95;191;;; -37226;1;0;false;false;;;;;; -37227;6;0;false;false;63;95;191;;; -37233;1;0;false;false;;;;;; -37234;3;0;false;false;63;95;191;;; -37237;1;0;false;false;;;;;; -37238;5;0;false;false;63;95;191;;; -37243;1;0;false;false;;;;;; -37244;6;0;false;false;63;95;191;;; -37250;1;0;false;false;;;;;; -37251;2;0;false;false;63;95;191;;; -37253;1;0;false;false;;;;;; -37254;5;0;false;false;63;95;191;;; -37259;1;0;false;false;;;;;; -37260;3;0;false;false;63;95;191;;; -37263;5;0;false;false;;;;;; -37268;1;0;false;false;63;95;191;;; -37269;1;0;false;false;;;;;; -37270;3;0;false;false;63;95;191;;; -37273;1;0;false;false;;;;;; -37274;6;0;false;false;63;95;191;;; -37280;1;0;false;false;;;;;; -37281;9;0;false;false;63;95;191;;; -37290;1;0;false;false;;;;;; -37291;6;0;false;false;63;95;191;;; -37297;1;0;false;false;;;;;; -37298;6;0;false;false;63;95;191;;; -37304;1;0;false;false;;;;;; -37305;8;0;false;false;63;95;191;;; -37313;1;0;false;false;;;;;; -37314;2;0;false;false;63;95;191;;; -37316;1;0;false;false;;;;;; -37317;8;0;false;false;63;95;191;;; -37325;4;0;false;false;;;;;; -37329;1;0;false;false;63;95;191;;; -37330;1;0;false;false;;;;;; -37331;11;1;false;false;127;159;191;;; -37342;12;0;false;false;63;95;191;;; -37354;1;0;false;false;;;;;; -37355;4;0;false;false;127;127;159;;; -37359;4;0;false;false;;;;;; -37363;1;0;false;false;63;95;191;;; -37364;3;0;false;false;;;;;; -37367;4;0;false;false;127;127;159;;; -37371;8;0;false;false;63;95;191;;; -37379;1;0;false;false;;;;;; -37380;4;0;false;false;63;95;191;;; -37384;1;0;false;false;;;;;; -37385;3;0;false;false;63;95;191;;; -37388;1;0;false;false;;;;;; -37389;6;0;false;false;63;95;191;;; -37395;1;0;false;false;;;;;; -37396;2;0;false;false;63;95;191;;; -37398;1;0;false;false;;;;;; -37399;7;0;false;false;63;95;191;;; -37406;5;0;false;false;127;127;159;;; -37411;4;0;false;false;;;;;; -37415;1;0;false;false;63;95;191;;; -37416;1;0;false;false;;;;;; -37417;5;0;false;false;127;127;159;;; -37422;4;0;false;false;;;;;; -37426;2;0;false;false;63;95;191;;; -37428;3;0;false;false;;;;;; -37431;6;1;false;false;127;0;85;;; -37437;1;0;false;false;;;;;; -37438;4;1;false;false;127;0;85;;; -37442;1;0;false;false;;;;;; -37443;16;0;false;false;0;0;0;;; -37459;1;0;false;false;;;;;; -37460;5;0;false;false;0;0;0;;; -37465;1;0;false;false;;;;;; -37466;3;1;false;false;127;0;85;;; -37469;1;0;false;false;;;;;; -37470;11;0;false;false;0;0;0;;; -37481;1;0;false;false;;;;;; -37482;1;0;false;false;0;0;0;;; -37483;4;0;false;false;;;;;; -37487;3;1;false;false;127;0;85;;; -37490;1;0;false;false;;;;;; -37491;10;0;false;false;0;0;0;;; -37501;1;0;false;false;;;;;; -37502;1;0;false;false;0;0;0;;; -37503;1;0;false;false;;;;;; -37504;14;0;false;false;0;0;0;;; -37518;4;0;false;false;;;;;; -37522;3;1;false;false;127;0;85;;; -37525;1;0;false;false;;;;;; -37526;10;0;false;false;0;0;0;;; -37536;4;0;false;false;;;;;; -37540;3;1;false;false;127;0;85;;; -37543;1;0;false;false;;;;;; -37544;8;0;false;false;0;0;0;;; -37552;4;0;false;false;;;;;; -37556;3;1;false;false;127;0;85;;; -37559;1;0;false;false;;;;;; -37560;11;0;false;false;0;0;0;;; -37571;1;0;false;false;;;;;; -37572;1;0;false;false;0;0;0;;; -37573;1;0;false;false;;;;;; -37574;11;0;false;false;0;0;0;;; -37585;1;0;false;false;;;;;; -37586;1;0;false;false;0;0;0;;; -37587;1;0;false;false;;;;;; -37588;11;0;false;false;0;0;0;;; -37599;8;0;false;false;;;;;; -37607;2;1;false;false;127;0;85;;; -37609;1;0;false;false;;;;;; -37610;10;0;false;false;0;0;0;;; -37620;1;0;false;false;;;;;; -37621;1;0;false;false;0;0;0;;; -37622;5;0;false;false;;;;;; -37627;24;0;false;false;0;0;0;;; -37651;4;0;false;false;;;;;; -37655;1;0;false;false;0;0;0;;; -37656;6;0;false;false;;;;;; -37662;2;1;false;false;127;0;85;;; -37664;1;0;false;false;;;;;; -37665;12;0;false;false;0;0;0;;; -37677;1;0;false;false;;;;;; -37678;2;0;false;false;0;0;0;;; -37680;1;0;false;false;;;;;; -37681;11;0;false;false;0;0;0;;; -37692;1;0;false;false;;;;;; -37693;1;0;false;false;0;0;0;;; -37694;5;0;false;false;;;;;; -37699;6;1;false;false;127;0;85;;; -37705;1;0;false;false;0;0;0;;; -37706;7;0;false;false;;;;;; -37713;38;0;false;false;63;127;95;;; -37751;2;0;false;false;;;;;; -37753;1;0;false;false;0;0;0;;; -37754;4;0;false;false;;;;;; -37758;4;1;false;false;127;0;85;;; -37762;4;0;false;false;;;;;; -37766;2;1;false;false;127;0;85;;; -37768;1;0;false;false;;;;;; -37769;12;0;false;false;0;0;0;;; -37781;1;0;false;false;;;;;; -37782;1;0;false;false;0;0;0;;; -37783;1;0;false;false;;;;;; -37784;2;0;false;false;0;0;0;;; -37786;1;0;false;false;;;;;; -37787;1;0;false;false;0;0;0;;; -37788;5;0;false;false;;;;;; -37793;9;0;false;false;0;0;0;;; -37802;1;0;false;false;;;;;; -37803;1;0;false;false;0;0;0;;; -37804;1;0;false;false;;;;;; -37805;12;0;false;false;0;0;0;;; -37817;2;0;false;false;;;;;; -37819;35;0;false;false;63;127;95;;; -37854;2;0;false;false;;;;;; -37856;1;0;false;false;0;0;0;;; -37857;4;0;false;false;;;;;; -37861;4;1;false;false;127;0;85;;; -37865;1;0;false;false;;;;;; -37866;1;0;false;false;0;0;0;;; -37867;5;0;false;false;;;;;; -37872;9;0;false;false;0;0;0;;; -37881;1;0;false;false;;;;;; -37882;1;0;false;false;0;0;0;;; -37883;1;0;false;false;;;;;; -37884;2;0;false;false;0;0;0;;; -37886;4;0;false;false;;;;;; -37890;1;0;false;false;0;0;0;;; -37891;4;0;false;false;;;;;; -37895;7;0;false;false;0;0;0;;; -37902;1;0;false;false;;;;;; -37903;1;0;false;false;0;0;0;;; -37904;1;0;false;false;;;;;; -37905;20;0;false;false;0;0;0;;; -37925;1;0;false;false;;;;;; -37926;9;0;false;false;0;0;0;;; -37935;1;0;false;false;;;;;; -37936;1;0;false;false;0;0;0;;; -37937;1;0;false;false;;;;;; -37938;12;0;false;false;0;0;0;;; -37950;4;0;false;false;;;;;; -37954;2;1;false;false;127;0;85;;; -37956;1;0;false;false;;;;;; -37957;10;0;false;false;0;0;0;;; -37967;1;0;false;false;;;;;; -37968;1;0;false;false;0;0;0;;; -37969;1;0;false;false;;;;;; -37970;8;0;false;false;0;0;0;;; -37978;1;0;false;false;;;;;; -37979;1;0;false;false;0;0;0;;; -37980;5;0;false;false;;;;;; -37985;31;0;false;false;0;0;0;;; -38016;1;0;false;false;;;;;; -38017;10;0;false;false;0;0;0;;; -38027;4;0;false;false;;;;;; -38031;1;0;false;false;0;0;0;;; -38032;5;0;false;false;;;;;; -38037;1;0;false;false;0;0;0;;; -38038;3;0;false;false;;;;;; -38041;3;0;false;false;63;95;191;;; -38044;4;0;false;false;;;;;; -38048;1;0;false;false;63;95;191;;; -38049;1;0;false;false;;;;;; -38050;7;0;false;false;63;95;191;;; -38057;1;0;false;false;;;;;; -38058;3;0;false;false;63;95;191;;; -38061;1;0;false;false;;;;;; -38062;9;0;false;false;63;95;191;;; -38071;1;0;false;false;;;;;; -38072;4;0;false;false;63;95;191;;; -38076;1;0;false;false;;;;;; -38077;10;0;false;false;63;95;191;;; -38087;1;0;false;false;;;;;; -38088;2;0;false;false;63;95;191;;; -38090;1;0;false;false;;;;;; -38091;3;0;false;false;63;95;191;;; -38094;1;0;false;false;;;;;; -38095;5;0;false;false;63;95;191;;; -38100;4;0;false;false;;;;;; -38104;1;0;false;false;63;95;191;;; -38105;1;0;false;false;;;;;; -38106;3;0;false;false;127;127;159;;; -38109;4;0;false;false;;;;;; -38113;1;0;false;false;63;95;191;;; -38114;4;0;false;false;;;;;; -38118;1;0;false;false;63;95;191;;; -38119;1;0;false;false;;;;;; -38120;7;1;false;false;127;159;191;;; -38127;13;0;false;false;63;95;191;;; -38140;1;0;false;false;;;;;; -38141;4;0;false;false;63;95;191;;; -38145;1;0;false;false;;;;;; -38146;9;0;false;false;63;95;191;;; -38155;1;0;false;false;;;;;; -38156;2;0;false;false;63;95;191;;; -38158;1;0;false;false;;;;;; -38159;5;0;false;false;63;95;191;;; -38164;4;0;false;false;;;;;; -38168;1;0;false;false;63;95;191;;; -38169;1;0;false;false;;;;;; -38170;11;1;false;false;127;159;191;;; -38181;12;0;false;false;63;95;191;;; -38193;1;0;false;false;;;;;; -38194;4;0;false;false;127;127;159;;; -38198;4;0;false;false;;;;;; -38202;1;0;false;false;63;95;191;;; -38203;3;0;false;false;;;;;; -38206;4;0;false;false;127;127;159;;; -38210;8;0;false;false;63;95;191;;; -38218;1;0;false;false;;;;;; -38219;4;0;false;false;63;95;191;;; -38223;1;0;false;false;;;;;; -38224;3;0;false;false;63;95;191;;; -38227;1;0;false;false;;;;;; -38228;6;0;false;false;63;95;191;;; -38234;1;0;false;false;;;;;; -38235;2;0;false;false;63;95;191;;; -38237;1;0;false;false;;;;;; -38238;7;0;false;false;63;95;191;;; -38245;5;0;false;false;127;127;159;;; -38250;4;0;false;false;;;;;; -38254;1;0;false;false;63;95;191;;; -38255;1;0;false;false;;;;;; -38256;5;0;false;false;127;127;159;;; -38261;4;0;false;false;;;;;; -38265;2;0;false;false;63;95;191;;; -38267;3;0;false;false;;;;;; -38270;6;1;false;false;127;0;85;;; -38276;1;0;false;false;;;;;; -38277;4;1;false;false;127;0;85;;; -38281;1;0;false;false;;;;;; -38282;25;0;false;false;0;0;0;;; -38307;1;0;false;false;;;;;; -38308;14;0;false;false;0;0;0;;; -38322;1;0;false;false;;;;;; -38323;1;0;false;false;0;0;0;;; -38324;4;0;false;false;;;;;; -38328;2;1;false;false;127;0;85;;; -38330;1;0;false;false;;;;;; -38331;10;0;false;false;0;0;0;;; -38341;1;0;false;false;;;;;; -38342;1;0;false;false;0;0;0;;; -38343;5;0;false;false;;;;;; -38348;24;0;false;false;0;0;0;;; -38372;4;0;false;false;;;;;; -38376;1;0;false;false;0;0;0;;; -38377;4;0;false;false;;;;;; -38381;21;0;false;false;0;0;0;;; -38402;3;0;false;false;;;;;; -38405;1;0;false;false;0;0;0;;; -38406;3;0;false;false;;;;;; -38409;1;0;false;false;0;0;0;;; -38410;3;0;false;false;;;;;; -38413;3;0;false;false;63;95;191;;; -38416;4;0;false;false;;;;;; -38420;1;0;false;false;63;95;191;;; -38421;1;0;false;false;;;;;; -38422;9;0;false;false;63;95;191;;; -38431;1;0;false;false;;;;;; -38432;8;0;false;false;63;95;191;;; -38440;1;0;false;false;;;;;; -38441;2;0;false;false;63;95;191;;; -38443;1;0;false;false;;;;;; -38444;9;0;false;false;63;95;191;;; -38453;1;0;false;false;;;;;; -38454;2;0;false;false;63;95;191;;; -38456;1;0;false;false;;;;;; -38457;9;0;false;false;63;95;191;;; -38466;1;0;false;false;;;;;; -38467;3;0;false;false;63;95;191;;; -38470;1;0;false;false;;;;;; -38471;10;0;false;false;63;95;191;;; -38481;5;0;false;false;;;;;; -38486;1;0;false;false;63;95;191;;; -38487;1;0;false;false;;;;;; -38488;4;0;false;false;63;95;191;;; -38492;1;0;false;false;;;;;; -38493;5;0;false;false;63;95;191;;; -38498;1;0;false;false;;;;;; -38499;5;0;false;false;63;95;191;;; -38504;4;0;false;false;;;;;; -38508;1;0;false;false;63;95;191;;; -38509;1;0;false;false;;;;;; -38510;12;0;false;false;63;95;191;;; -38522;1;0;false;false;;;;;; -38523;4;0;false;false;63;95;191;;; -38527;1;0;false;false;;;;;; -38528;2;0;false;false;63;95;191;;; -38530;1;0;false;false;;;;;; -38531;6;0;false;false;63;95;191;;; -38537;1;0;false;false;;;;;; -38538;1;0;false;false;63;95;191;;; -38539;1;0;false;false;;;;;; -38540;4;0;false;false;63;95;191;;; -38544;1;0;false;false;;;;;; -38545;5;0;false;false;63;95;191;;; -38550;1;0;false;false;;;;;; -38551;2;0;false;false;63;95;191;;; -38553;1;0;false;false;;;;;; -38554;6;0;false;false;127;127;159;;; -38560;8;0;false;false;63;95;191;;; -38568;7;0;false;false;127;127;159;;; -38575;1;0;false;false;63;95;191;;; -38576;4;0;false;false;;;;;; -38580;2;0;false;false;63;95;191;;; -38582;3;0;false;false;;;;;; -38585;9;1;false;false;127;0;85;;; -38594;1;0;false;false;;;;;; -38595;9;0;false;false;0;0;0;;; -38604;1;0;false;false;;;;;; -38605;1;0;false;false;0;0;0;;; -38606;3;0;false;false;;;;;; -38609;3;0;false;false;63;95;191;;; -38612;4;0;false;false;;;;;; -38616;1;0;false;false;63;95;191;;; -38617;1;0;false;false;;;;;; -38618;10;0;false;false;63;95;191;;; -38628;1;0;false;false;;;;;; -38629;3;0;false;false;63;95;191;;; -38632;1;0;false;false;;;;;; -38633;5;0;false;false;63;95;191;;; -38638;1;0;false;false;;;;;; -38639;2;0;false;false;63;95;191;;; -38641;1;0;false;false;;;;;; -38642;3;0;false;false;63;95;191;;; -38645;1;0;false;false;;;;;; -38646;9;0;false;false;63;95;191;;; -38655;1;0;false;false;;;;;; -38656;6;0;false;false;63;95;191;;; -38662;4;0;false;false;;;;;; -38666;1;0;false;false;63;95;191;;; -38667;1;0;false;false;;;;;; -38668;3;0;false;false;127;127;159;;; -38671;4;0;false;false;;;;;; -38675;1;0;false;false;63;95;191;;; -38676;5;0;false;false;;;;;; -38681;1;0;false;false;63;95;191;;; -38682;1;0;false;false;;;;;; -38683;7;1;false;false;127;159;191;;; -38690;9;0;false;false;63;95;191;;; -38699;1;0;false;false;;;;;; -38700;5;0;false;false;63;95;191;;; -38705;1;0;false;false;;;;;; -38706;4;0;false;false;63;95;191;;; -38710;1;0;false;false;;;;;; -38711;2;0;false;false;63;95;191;;; -38713;1;0;false;false;;;;;; -38714;9;0;false;false;63;95;191;;; -38723;4;0;false;false;;;;;; -38727;1;0;false;false;63;95;191;;; -38728;1;0;false;false;;;;;; -38729;7;1;false;false;127;159;191;;; -38736;9;0;false;false;63;95;191;;; -38745;1;0;false;false;;;;;; -38746;6;0;false;false;63;95;191;;; -38752;1;0;false;false;;;;;; -38753;2;0;false;false;63;95;191;;; -38755;1;0;false;false;;;;;; -38756;5;0;false;false;63;95;191;;; -38761;1;0;false;false;;;;;; -38762;2;0;false;false;63;95;191;;; -38764;1;0;false;false;;;;;; -38765;9;0;false;false;63;95;191;;; -38774;4;0;false;false;;;;;; -38778;2;0;false;false;63;95;191;;; -38780;3;0;false;false;;;;;; -38783;6;1;false;false;127;0;85;;; -38789;1;0;false;false;;;;;; -38790;4;1;false;false;127;0;85;;; -38794;1;0;false;false;;;;;; -38795;10;0;false;false;0;0;0;;; -38805;3;1;false;false;127;0;85;;; -38808;1;0;false;false;;;;;; -38809;10;0;false;false;0;0;0;;; -38819;1;0;false;false;;;;;; -38820;3;1;false;false;127;0;85;;; -38823;1;0;false;false;;;;;; -38824;11;0;false;false;0;0;0;;; -38835;3;0;false;false;;;;;; -38838;3;0;false;false;63;95;191;;; -38841;4;0;false;false;;;;;; -38845;1;0;false;false;63;95;191;;; -38846;1;0;false;false;;;;;; -38847;7;0;false;false;63;95;191;;; -38854;1;0;false;false;;;;;; -38855;1;0;false;false;63;95;191;;; -38856;1;0;false;false;;;;;; -38857;5;0;false;false;63;95;191;;; -38862;1;0;false;false;;;;;; -38863;4;0;false;false;63;95;191;;; -38867;1;0;false;false;;;;;; -38868;4;0;false;false;63;95;191;;; -38872;1;0;false;false;;;;;; -38873;2;0;false;false;63;95;191;;; -38875;1;0;false;false;;;;;; -38876;4;0;false;false;63;95;191;;; -38880;1;0;false;false;;;;;; -38881;2;0;false;false;63;95;191;;; -38883;1;0;false;false;;;;;; -38884;3;0;false;false;63;95;191;;; -38887;1;0;false;false;;;;;; -38888;6;0;false;false;127;127;159;;; -38894;10;0;false;false;63;95;191;;; -38904;7;0;false;false;127;127;159;;; -38911;5;0;false;false;;;;;; -38916;1;0;false;false;63;95;191;;; -38917;1;0;false;false;;;;;; -38918;6;0;false;false;63;95;191;;; -38924;1;0;false;false;;;;;; -38925;2;0;false;false;63;95;191;;; -38927;1;0;false;false;;;;;; -38928;4;0;false;false;63;95;191;;; -38932;1;0;false;false;;;;;; -38933;1;0;false;false;63;95;191;;; -38934;1;0;false;false;;;;;; -38935;10;0;false;false;63;95;191;;; -38945;1;0;false;false;;;;;; -38946;6;0;false;false;63;95;191;;; -38952;1;0;false;false;;;;;; -38953;4;0;false;false;63;95;191;;; -38957;4;0;false;false;;;;;; -38961;1;0;false;false;63;95;191;;; -38962;1;0;false;false;;;;;; -38963;3;0;false;false;127;127;159;;; -38966;4;0;false;false;;;;;; -38970;1;0;false;false;63;95;191;;; -38971;4;0;false;false;;;;;; -38975;1;0;false;false;63;95;191;;; -38976;1;0;false;false;;;;;; -38977;8;1;false;false;127;159;191;;; -38985;3;0;false;false;63;95;191;;; -38988;1;0;false;false;;;;;; -38989;4;0;false;false;63;95;191;;; -38993;1;0;false;false;;;;;; -38994;5;0;false;false;63;95;191;;; -38999;4;0;false;false;;;;;; -39003;2;0;false;false;63;95;191;;; -39005;3;0;false;false;;;;;; -39008;6;1;false;false;127;0;85;;; -39014;1;0;false;false;;;;;; -39015;3;1;false;false;127;0;85;;; -39018;1;0;false;false;;;;;; -39019;11;0;false;false;0;0;0;;; -39030;3;0;false;false;;;;;; -39033;3;0;false;false;63;95;191;;; -39036;4;0;false;false;;;;;; -39040;1;0;false;false;63;95;191;;; -39041;1;0;false;false;;;;;; -39042;6;0;false;false;63;95;191;;; -39048;1;0;false;false;;;;;; -39049;3;0;false;false;63;95;191;;; -39052;1;0;false;false;;;;;; -39053;5;0;false;false;63;95;191;;; -39058;1;0;false;false;;;;;; -39059;2;0;false;false;63;95;191;;; -39061;1;0;false;false;;;;;; -39062;3;0;false;false;63;95;191;;; -39065;1;0;false;false;;;;;; -39066;9;0;false;false;63;95;191;;; -39075;1;0;false;false;;;;;; -39076;6;0;false;false;63;95;191;;; -39082;4;0;false;false;;;;;; -39086;1;0;false;false;63;95;191;;; -39087;1;0;false;false;;;;;; -39088;4;0;false;false;63;95;191;;; -39092;1;0;false;false;;;;;; -39093;6;0;false;false;63;95;191;;; -39099;1;0;false;false;;;;;; -39100;2;0;false;false;63;95;191;;; -39102;1;0;false;false;;;;;; -39103;6;0;false;false;63;95;191;;; -39109;1;0;false;false;;;;;; -39110;2;0;false;false;63;95;191;;; -39112;1;0;false;false;;;;;; -39113;6;0;false;false;127;127;159;;; -39119;19;0;false;false;63;95;191;;; -39138;7;0;false;false;127;127;159;;; -39145;4;0;false;false;;;;;; -39149;1;0;false;false;63;95;191;;; -39150;1;0;false;false;;;;;; -39151;3;0;false;false;63;95;191;;; -39154;1;0;false;false;;;;;; -39155;6;0;false;false;63;95;191;;; -39161;1;0;false;false;;;;;; -39162;12;0;false;false;63;95;191;;; -39174;1;0;false;false;;;;;; -39175;2;0;false;false;63;95;191;;; -39177;1;0;false;false;;;;;; -39178;4;0;false;false;63;95;191;;; -39182;1;0;false;false;;;;;; -39183;6;0;false;false;63;95;191;;; -39189;1;0;false;false;;;;;; -39190;10;0;false;false;63;95;191;;; -39200;1;0;false;false;;;;;; -39201;6;0;false;false;63;95;191;;; -39207;1;0;false;false;;;;;; -39208;6;0;false;false;63;95;191;;; -39214;4;0;false;false;;;;;; -39218;1;0;false;false;63;95;191;;; -39219;1;0;false;false;;;;;; -39220;3;0;false;false;127;127;159;;; -39223;4;0;false;false;;;;;; -39227;1;0;false;false;63;95;191;;; -39228;4;0;false;false;;;;;; -39232;1;0;false;false;63;95;191;;; -39233;1;0;false;false;;;;;; -39234;7;1;false;false;127;159;191;;; -39241;9;0;false;false;63;95;191;;; -39250;1;0;false;false;;;;;; -39251;3;0;false;false;63;95;191;;; -39254;1;0;false;false;;;;;; -39255;5;0;false;false;63;95;191;;; -39260;1;0;false;false;;;;;; -39261;4;0;false;false;63;95;191;;; -39265;1;0;false;false;;;;;; -39266;2;0;false;false;63;95;191;;; -39268;1;0;false;false;;;;;; -39269;5;0;false;false;63;95;191;;; -39274;4;0;false;false;;;;;; -39278;1;0;false;false;63;95;191;;; -39279;1;0;false;false;;;;;; -39280;7;1;false;false;127;159;191;;; -39287;9;0;false;false;63;95;191;;; -39296;1;0;false;false;;;;;; -39297;3;0;false;false;63;95;191;;; -39300;1;0;false;false;;;;;; -39301;6;0;false;false;63;95;191;;; -39307;1;0;false;false;;;;;; -39308;2;0;false;false;63;95;191;;; -39310;1;0;false;false;;;;;; -39311;5;0;false;false;63;95;191;;; -39316;1;0;false;false;;;;;; -39317;2;0;false;false;63;95;191;;; -39319;1;0;false;false;;;;;; -39320;5;0;false;false;63;95;191;;; -39325;4;0;false;false;;;;;; -39329;1;0;false;false;63;95;191;;; -39330;1;0;false;false;;;;;; -39331;7;1;false;false;127;159;191;;; -39338;17;0;false;false;63;95;191;;; -39355;1;0;false;false;;;;;; -39356;17;0;false;false;63;95;191;;; -39373;1;0;false;false;;;;;; -39374;6;0;false;false;63;95;191;;; -39380;1;0;false;false;;;;;; -39381;6;0;false;false;63;95;191;;; -39387;1;0;false;false;;;;;; -39388;1;0;false;false;63;95;191;;; -39389;5;0;false;false;;;;;; -39394;1;0;false;false;63;95;191;;; -39395;2;0;false;false;;;;;; -39397;5;0;false;false;63;95;191;;; -39402;1;0;false;false;;;;;; -39403;5;0;false;false;63;95;191;;; -39408;1;0;false;false;;;;;; -39409;4;0;false;false;63;95;191;;; -39413;1;0;false;false;;;;;; -39414;2;0;false;false;63;95;191;;; -39416;1;0;false;false;;;;;; -39417;2;0;false;false;63;95;191;;; -39419;1;0;false;false;;;;;; -39420;2;0;false;false;63;95;191;;; -39422;1;0;false;false;;;;;; -39423;8;0;false;false;63;95;191;;; -39431;1;0;false;false;;;;;; -39432;2;0;false;false;63;95;191;;; -39434;1;0;false;false;;;;;; -39435;3;0;false;false;63;95;191;;; -39438;1;0;false;false;;;;;; -39439;5;0;false;false;63;95;191;;; -39444;1;0;false;false;;;;;; -39445;10;0;false;false;63;95;191;;; -39455;4;0;false;false;;;;;; -39459;1;0;false;false;63;95;191;;; -39460;2;0;false;false;;;;;; -39462;9;0;false;false;63;95;191;;; -39471;1;0;false;false;;;;;; -39472;5;0;false;false;63;95;191;;; -39477;1;0;false;false;;;;;; -39478;3;0;false;false;63;95;191;;; -39481;1;0;false;false;;;;;; -39482;2;0;false;false;63;95;191;;; -39484;1;0;false;false;;;;;; -39485;3;0;false;false;63;95;191;;; -39488;1;0;false;false;;;;;; -39489;2;0;false;false;63;95;191;;; -39491;1;0;false;false;;;;;; -39492;1;0;false;false;63;95;191;;; -39493;4;0;false;false;;;;;; -39497;2;0;false;false;63;95;191;;; -39499;3;0;false;false;;;;;; -39502;6;1;false;false;127;0;85;;; -39508;1;0;false;false;;;;;; -39509;4;1;false;false;127;0;85;;; -39513;1;0;false;false;;;;;; -39514;12;0;false;false;0;0;0;;; -39526;3;1;false;false;127;0;85;;; -39529;1;0;false;false;;;;;; -39530;10;0;false;false;0;0;0;;; -39540;1;0;false;false;;;;;; -39541;3;1;false;false;127;0;85;;; -39544;1;0;false;false;;;;;; -39545;10;0;false;false;0;0;0;;; -39555;1;0;false;false;;;;;; -39556;7;1;false;false;127;0;85;;; -39563;1;0;false;false;;;;;; -39564;19;0;false;false;0;0;0;;; -39583;3;0;false;false;;;;;; -39586;3;0;false;false;63;95;191;;; -39589;4;0;false;false;;;;;; -39593;1;0;false;false;63;95;191;;; -39594;1;0;false;false;;;;;; -39595;6;0;false;false;63;95;191;;; -39601;1;0;false;false;;;;;; -39602;3;0;false;false;63;95;191;;; -39605;1;0;false;false;;;;;; -39606;5;0;false;false;63;95;191;;; -39611;1;0;false;false;;;;;; -39612;2;0;false;false;63;95;191;;; -39614;1;0;false;false;;;;;; -39615;3;0;false;false;63;95;191;;; -39618;1;0;false;false;;;;;; -39619;9;0;false;false;63;95;191;;; -39628;1;0;false;false;;;;;; -39629;6;0;false;false;63;95;191;;; -39635;4;0;false;false;;;;;; -39639;1;0;false;false;63;95;191;;; -39640;1;0;false;false;;;;;; -39641;3;0;false;false;127;127;159;;; -39644;4;0;false;false;;;;;; -39648;1;0;false;false;63;95;191;;; -39649;4;0;false;false;;;;;; -39653;1;0;false;false;63;95;191;;; -39654;1;0;false;false;;;;;; -39655;7;1;false;false;127;159;191;;; -39662;9;0;false;false;63;95;191;;; -39671;1;0;false;false;;;;;; -39672;3;0;false;false;63;95;191;;; -39675;1;0;false;false;;;;;; -39676;5;0;false;false;63;95;191;;; -39681;1;0;false;false;;;;;; -39682;4;0;false;false;63;95;191;;; -39686;1;0;false;false;;;;;; -39687;2;0;false;false;63;95;191;;; -39689;1;0;false;false;;;;;; -39690;5;0;false;false;63;95;191;;; -39695;4;0;false;false;;;;;; -39699;1;0;false;false;63;95;191;;; -39700;1;0;false;false;;;;;; -39701;7;1;false;false;127;159;191;;; -39708;9;0;false;false;63;95;191;;; -39717;1;0;false;false;;;;;; -39718;3;0;false;false;63;95;191;;; -39721;1;0;false;false;;;;;; -39722;6;0;false;false;63;95;191;;; -39728;1;0;false;false;;;;;; -39729;2;0;false;false;63;95;191;;; -39731;1;0;false;false;;;;;; -39732;5;0;false;false;63;95;191;;; -39737;1;0;false;false;;;;;; -39738;2;0;false;false;63;95;191;;; -39740;1;0;false;false;;;;;; -39741;5;0;false;false;63;95;191;;; -39746;4;0;false;false;;;;;; -39750;1;0;false;false;63;95;191;;; -39751;1;0;false;false;;;;;; -39752;7;1;false;false;127;159;191;;; -39759;17;0;false;false;63;95;191;;; -39776;1;0;false;false;;;;;; -39777;17;0;false;false;63;95;191;;; -39794;1;0;false;false;;;;;; -39795;6;0;false;false;63;95;191;;; -39801;1;0;false;false;;;;;; -39802;6;0;false;false;63;95;191;;; -39808;1;0;false;false;;;;;; -39809;1;0;false;false;63;95;191;;; -39810;5;0;false;false;;;;;; -39815;1;0;false;false;63;95;191;;; -39816;2;0;false;false;;;;;; -39818;5;0;false;false;63;95;191;;; -39823;1;0;false;false;;;;;; -39824;5;0;false;false;63;95;191;;; -39829;1;0;false;false;;;;;; -39830;4;0;false;false;63;95;191;;; -39834;1;0;false;false;;;;;; -39835;2;0;false;false;63;95;191;;; -39837;1;0;false;false;;;;;; -39838;2;0;false;false;63;95;191;;; -39840;1;0;false;false;;;;;; -39841;2;0;false;false;63;95;191;;; -39843;1;0;false;false;;;;;; -39844;8;0;false;false;63;95;191;;; -39852;1;0;false;false;;;;;; -39853;2;0;false;false;63;95;191;;; -39855;1;0;false;false;;;;;; -39856;3;0;false;false;63;95;191;;; -39859;1;0;false;false;;;;;; -39860;5;0;false;false;63;95;191;;; -39865;1;0;false;false;;;;;; -39866;10;0;false;false;63;95;191;;; -39876;4;0;false;false;;;;;; -39880;1;0;false;false;63;95;191;;; -39881;2;0;false;false;;;;;; -39883;9;0;false;false;63;95;191;;; -39892;1;0;false;false;;;;;; -39893;5;0;false;false;63;95;191;;; -39898;1;0;false;false;;;;;; -39899;3;0;false;false;63;95;191;;; -39902;1;0;false;false;;;;;; -39903;2;0;false;false;63;95;191;;; -39905;1;0;false;false;;;;;; -39906;3;0;false;false;63;95;191;;; -39909;1;0;false;false;;;;;; -39910;2;0;false;false;63;95;191;;; -39912;1;0;false;false;;;;;; -39913;1;0;false;false;63;95;191;;; -39914;4;0;false;false;;;;;; -39918;2;0;false;false;63;95;191;;; -39920;3;0;false;false;;;;;; -39923;6;1;false;false;127;0;85;;; -39929;1;0;false;false;;;;;; -39930;4;1;false;false;127;0;85;;; -39934;1;0;false;false;;;;;; -39935;6;0;false;false;0;0;0;;; -39941;3;1;false;false;127;0;85;;; -39944;1;0;false;false;;;;;; -39945;10;0;false;false;0;0;0;;; -39955;1;0;false;false;;;;;; -39956;3;1;false;false;127;0;85;;; -39959;1;0;false;false;;;;;; -39960;10;0;false;false;0;0;0;;; -39970;1;0;false;false;;;;;; -39971;7;1;false;false;127;0;85;;; -39978;1;0;false;false;;;;;; -39979;19;0;false;false;0;0;0;;; -39998;3;0;false;false;;;;;; -40001;3;0;false;false;63;95;191;;; -40004;5;0;false;false;;;;;; -40009;1;0;false;false;63;95;191;;; -40010;1;0;false;false;;;;;; -40011;6;0;false;false;63;95;191;;; -40017;1;0;false;false;;;;;; -40018;4;0;false;false;63;95;191;;; -40022;1;0;false;false;;;;;; -40023;1;0;false;false;63;95;191;;; -40024;1;0;false;false;;;;;; -40025;4;0;false;false;63;95;191;;; -40029;1;0;false;false;;;;;; -40030;6;0;false;false;63;95;191;;; -40036;1;0;false;false;;;;;; -40037;9;0;false;false;63;95;191;;; -40046;4;0;false;false;;;;;; -40050;1;0;false;false;63;95;191;;; -40051;1;0;false;false;;;;;; -40052;3;0;false;false;127;127;159;;; -40055;4;0;false;false;;;;;; -40059;1;0;false;false;63;95;191;;; -40060;4;0;false;false;;;;;; -40064;1;0;false;false;63;95;191;;; -40065;1;0;false;false;;;;;; -40066;7;1;false;false;127;159;191;;; -40073;11;0;false;false;63;95;191;;; -40084;1;0;false;false;;;;;; -40085;3;0;false;false;63;95;191;;; -40088;1;0;false;false;;;;;; -40089;5;0;false;false;63;95;191;;; -40094;1;0;false;false;;;;;; -40095;6;0;false;false;63;95;191;;; -40101;1;0;false;false;;;;;; -40102;2;0;false;false;63;95;191;;; -40104;1;0;false;false;;;;;; -40105;3;0;false;false;63;95;191;;; -40108;1;0;false;false;;;;;; -40109;4;0;false;false;63;95;191;;; -40113;1;0;false;false;;;;;; -40114;6;0;false;false;63;95;191;;; -40120;4;0;false;false;;;;;; -40124;1;0;false;false;63;95;191;;; -40125;1;0;false;false;;;;;; -40126;7;1;false;false;127;159;191;;; -40133;12;0;false;false;63;95;191;;; -40145;1;0;false;false;;;;;; -40146;3;0;false;false;63;95;191;;; -40149;1;0;false;false;;;;;; -40150;6;0;false;false;63;95;191;;; -40156;1;0;false;false;;;;;; -40157;2;0;false;false;63;95;191;;; -40159;1;0;false;false;;;;;; -40160;8;0;false;false;63;95;191;;; -40168;1;0;false;false;;;;;; -40169;5;0;false;false;63;95;191;;; -40174;4;0;false;false;;;;;; -40178;1;0;false;false;63;95;191;;; -40179;1;0;false;false;;;;;; -40180;7;1;false;false;127;159;191;;; -40187;16;0;false;false;63;95;191;;; -40203;1;0;false;false;;;;;; -40204;3;0;false;false;63;95;191;;; -40207;1;0;false;false;;;;;; -40208;6;0;false;false;63;95;191;;; -40214;1;0;false;false;;;;;; -40215;2;0;false;false;63;95;191;;; -40217;1;0;false;false;;;;;; -40218;7;0;false;false;63;95;191;;; -40225;1;0;false;false;;;;;; -40226;5;0;false;false;63;95;191;;; -40231;4;0;false;false;;;;;; -40235;1;0;false;false;63;95;191;;; -40236;1;0;false;false;;;;;; -40237;7;1;false;false;127;159;191;;; -40244;12;0;false;false;63;95;191;;; -40256;1;0;false;false;;;;;; -40257;3;0;false;false;63;95;191;;; -40260;1;0;false;false;;;;;; -40261;6;0;false;false;63;95;191;;; -40267;1;0;false;false;;;;;; -40268;2;0;false;false;63;95;191;;; -40270;1;0;false;false;;;;;; -40271;3;0;false;false;63;95;191;;; -40274;1;0;false;false;;;;;; -40275;10;0;false;false;63;95;191;;; -40285;4;0;false;false;;;;;; -40289;1;0;false;false;63;95;191;;; -40290;1;0;false;false;;;;;; -40291;7;1;false;false;127;159;191;;; -40298;16;0;false;false;63;95;191;;; -40314;1;0;false;false;;;;;; -40315;3;0;false;false;63;95;191;;; -40318;1;0;false;false;;;;;; -40319;6;0;false;false;63;95;191;;; -40325;1;0;false;false;;;;;; -40326;2;0;false;false;63;95;191;;; -40328;1;0;false;false;;;;;; -40329;7;0;false;false;63;95;191;;; -40336;1;0;false;false;;;;;; -40337;10;0;false;false;63;95;191;;; -40347;4;0;false;false;;;;;; -40351;2;0;false;false;63;95;191;;; -40353;5;0;false;false;;;;;; -40358;6;1;false;false;127;0;85;;; -40364;1;0;false;false;;;;;; -40365;4;1;false;false;127;0;85;;; -40369;1;0;false;false;;;;;; -40370;12;0;false;false;0;0;0;;; -40382;3;1;false;false;127;0;85;;; -40385;1;0;false;false;;;;;; -40386;12;0;false;false;0;0;0;;; -40398;1;0;false;false;;;;;; -40399;3;1;false;false;127;0;85;;; -40402;1;0;false;false;;;;;; -40403;13;0;false;false;0;0;0;;; -40416;1;0;false;false;;;;;; -40417;3;1;false;false;127;0;85;;; -40420;1;0;false;false;;;;;; -40421;17;0;false;false;0;0;0;;; -40438;1;0;false;false;;;;;; -40439;3;1;false;false;127;0;85;;; -40442;1;0;false;false;;;;;; -40443;13;0;false;false;0;0;0;;; -40456;1;0;false;false;;;;;; -40457;3;1;false;false;127;0;85;;; -40460;1;0;false;false;;;;;; -40461;18;0;false;false;0;0;0;;; -40479;3;0;false;false;;;;;; -40482;1;0;false;false;0;0;0;;; -40483;3;0;false;false;;;;;; -40486;3;0;false;false;63;95;191;;; -40489;4;0;false;false;;;;;; -40493;1;0;false;false;63;95;191;;; -40494;1;0;false;false;;;;;; -40495;5;0;false;false;63;95;191;;; -40500;1;0;false;false;;;;;; -40501;5;0;false;false;63;95;191;;; -40506;1;0;false;false;;;;;; -40507;2;0;false;false;63;95;191;;; -40509;1;0;false;false;;;;;; -40510;4;0;false;false;63;95;191;;; -40514;1;0;false;false;;;;;; -40515;6;0;false;false;63;95;191;;; -40521;1;0;false;false;;;;;; -40522;3;0;false;false;63;95;191;;; -40525;1;0;false;false;;;;;; -40526;3;0;false;false;63;95;191;;; -40529;1;0;false;false;;;;;; -40530;7;0;false;false;63;95;191;;; -40537;1;0;false;false;;;;;; -40538;4;0;false;false;63;95;191;;; -40542;1;0;false;false;;;;;; -40543;2;0;false;false;63;95;191;;; -40545;1;0;false;false;;;;;; -40546;3;0;false;false;63;95;191;;; -40549;5;0;false;false;;;;;; -40554;1;0;false;false;63;95;191;;; -40555;1;0;false;false;;;;;; -40556;10;0;false;false;63;95;191;;; -40566;1;0;false;false;;;;;; -40567;9;0;false;false;63;95;191;;; -40576;4;0;false;false;;;;;; -40580;1;0;false;false;63;95;191;;; -40581;1;0;false;false;;;;;; -40582;4;0;false;false;63;95;191;;; -40586;1;0;false;false;;;;;; -40587;6;0;false;false;63;95;191;;; -40593;1;0;false;false;;;;;; -40594;3;0;false;false;63;95;191;;; -40597;1;0;false;false;;;;;; -40598;10;0;false;false;63;95;191;;; -40608;1;0;false;false;;;;;; -40609;4;0;false;false;63;95;191;;; -40613;1;0;false;false;;;;;; -40614;9;0;false;false;63;95;191;;; -40623;1;0;false;false;;;;;; -40624;2;0;false;false;63;95;191;;; -40626;1;0;false;false;;;;;; -40627;1;0;false;false;63;95;191;;; -40628;1;0;false;false;;;;;; -40629;4;0;false;false;63;95;191;;; -40633;1;0;false;false;;;;;; -40634;2;0;false;false;63;95;191;;; -40636;5;0;false;false;;;;;; -40641;1;0;false;false;63;95;191;;; -40642;1;0;false;false;;;;;; -40643;6;0;false;false;127;127;159;;; -40649;9;0;false;false;63;95;191;;; -40658;7;0;false;false;127;127;159;;; -40665;1;0;false;false;;;;;; -40666;3;0;false;false;63;95;191;;; -40669;1;0;false;false;;;;;; -40670;6;0;false;false;63;95;191;;; -40676;1;0;false;false;;;;;; -40677;5;0;false;false;63;95;191;;; -40682;1;0;false;false;;;;;; -40683;5;0;false;false;63;95;191;;; -40688;1;0;false;false;;;;;; -40689;2;0;false;false;63;95;191;;; -40691;1;0;false;false;;;;;; -40692;1;0;false;false;63;95;191;;; -40693;1;0;false;false;;;;;; -40694;4;0;false;false;63;95;191;;; -40698;5;0;false;false;;;;;; -40703;1;0;false;false;63;95;191;;; -40704;1;0;false;false;;;;;; -40705;2;0;false;false;63;95;191;;; -40707;1;0;false;false;;;;;; -40708;6;0;false;false;127;127;159;;; -40714;11;0;false;false;63;95;191;;; -40725;7;0;false;false;127;127;159;;; -40732;1;0;false;false;;;;;; -40733;2;0;false;false;63;95;191;;; -40735;1;0;false;false;;;;;; -40736;6;0;false;false;127;127;159;;; -40742;5;0;false;false;63;95;191;;; -40747;7;0;false;false;127;127;159;;; -40754;1;0;false;false;63;95;191;;; -40755;4;0;false;false;;;;;; -40759;2;0;false;false;63;95;191;;; -40761;3;0;false;false;;;;;; -40764;5;1;false;false;127;0;85;;; -40769;1;0;false;false;;;;;; -40770;17;0;false;false;0;0;0;;; -40787;1;0;false;false;;;;;; -40788;10;1;false;false;127;0;85;;; -40798;1;0;false;false;;;;;; -40799;9;0;false;false;0;0;0;;; -40808;1;0;false;false;;;;;; -40809;1;0;false;false;0;0;0;;; -40810;4;0;false;false;;;;;; -40814;10;0;false;false;0;0;0;;; -40824;1;0;false;false;;;;;; -40825;7;0;false;false;0;0;0;;; -40832;4;0;false;false;;;;;; -40836;58;0;false;false;63;127;95;;; -40894;2;0;false;false;;;;;; -40896;3;1;false;false;127;0;85;;; -40899;2;0;false;false;0;0;0;;; -40901;1;0;false;false;;;;;; -40902;10;0;false;false;0;0;0;;; -40912;4;0;false;false;;;;;; -40916;70;0;false;false;63;127;95;;; -40986;2;0;false;false;;;;;; -40988;17;0;false;false;0;0;0;;; -41005;1;0;false;false;;;;;; -41006;8;0;false;false;0;0;0;;; -41014;2;0;false;false;;;;;; -41016;46;0;false;false;63;127;95;;; -41062;2;0;false;false;;;;;; -41064;3;1;false;false;127;0;85;;; -41067;1;0;false;false;;;;;; -41068;10;0;false;false;0;0;0;;; -41078;5;0;false;false;;;;;; -41083;39;0;false;false;63;127;95;;; -41122;2;0;false;false;;;;;; -41124;3;1;false;false;127;0;85;;; -41127;1;0;false;false;;;;;; -41128;9;0;false;false;0;0;0;;; -41137;5;0;false;false;;;;;; -41142;45;0;false;false;63;127;95;;; -41187;2;0;false;false;;;;;; -41189;3;1;false;false;127;0;85;;; -41192;1;0;false;false;;;;;; -41193;18;0;false;false;0;0;0;;; -41211;3;0;false;false;;;;;; -41214;29;0;false;false;63;127;95;;; -41243;7;0;false;false;;;;;; -41250;3;0;false;false;63;95;191;;; -41253;5;0;false;false;;;;;; -41258;1;0;false;false;63;95;191;;; -41259;1;0;false;false;;;;;; -41260;7;0;false;false;63;95;191;;; -41267;1;0;false;false;;;;;; -41268;1;0;false;false;63;95;191;;; -41269;1;0;false;false;;;;;; -41270;3;0;false;false;63;95;191;;; -41273;1;0;false;false;;;;;; -41274;6;0;false;false;127;127;159;;; -41280;17;0;false;false;63;95;191;;; -41297;7;0;false;false;127;127;159;;; -41304;1;0;false;false;;;;;; -41305;3;0;false;false;63;95;191;;; -41308;1;0;false;false;;;;;; -41309;9;0;false;false;63;95;191;;; -41318;1;0;false;false;;;;;; -41319;5;0;false;false;63;95;191;;; -41324;5;0;false;false;;;;;; -41329;1;0;false;false;63;95;191;;; -41330;1;0;false;false;;;;;; -41331;3;0;false;false;63;95;191;;; -41334;1;0;false;false;;;;;; -41335;3;0;false;false;63;95;191;;; -41338;1;0;false;false;;;;;; -41339;5;0;false;false;63;95;191;;; -41344;1;0;false;false;;;;;; -41345;6;0;false;false;63;95;191;;; -41351;1;0;false;false;;;;;; -41352;2;0;false;false;63;95;191;;; -41354;1;0;false;false;;;;;; -41355;6;0;false;false;63;95;191;;; -41361;4;0;false;false;;;;;; -41365;1;0;false;false;63;95;191;;; -41366;1;0;false;false;;;;;; -41367;3;0;false;false;127;127;159;;; -41370;4;0;false;false;;;;;; -41374;1;0;false;false;63;95;191;;; -41375;4;0;false;false;;;;;; -41379;1;0;false;false;63;95;191;;; -41380;1;0;false;false;;;;;; -41381;7;1;false;false;127;159;191;;; -41388;6;0;false;false;63;95;191;;; -41394;1;0;false;false;;;;;; -41395;3;0;false;false;63;95;191;;; -41398;1;0;false;false;;;;;; -41399;10;0;false;false;63;95;191;;; -41409;1;0;false;false;;;;;; -41410;6;0;false;false;63;95;191;;; -41416;1;0;false;false;;;;;; -41417;4;0;false;false;63;95;191;;; -41421;1;0;false;false;;;;;; -41422;2;0;false;false;63;95;191;;; -41424;1;0;false;false;;;;;; -41425;6;0;false;false;63;95;191;;; -41431;1;0;false;false;;;;;; -41432;1;0;false;false;63;95;191;;; -41433;1;0;false;false;;;;;; -41434;2;0;false;false;63;95;191;;; -41436;1;0;false;false;;;;;; -41437;3;0;false;false;63;95;191;;; -41440;5;0;false;false;;;;;; -41445;1;0;false;false;63;95;191;;; -41446;2;0;false;false;;;;;; -41448;4;0;false;false;63;95;191;;; -41452;1;0;false;false;;;;;; -41453;9;0;false;false;63;95;191;;; -41462;4;0;false;false;;;;;; -41466;1;0;false;false;63;95;191;;; -41467;1;0;false;false;;;;;; -41468;7;1;false;false;127;159;191;;; -41475;7;0;false;false;63;95;191;;; -41482;1;0;false;false;;;;;; -41483;1;0;false;false;63;95;191;;; -41484;1;0;false;false;;;;;; -41485;17;0;false;false;63;95;191;;; -41502;1;0;false;false;;;;;; -41503;10;0;false;false;63;95;191;;; -41513;1;0;false;false;;;;;; -41514;3;0;false;false;63;95;191;;; -41517;1;0;false;false;;;;;; -41518;7;0;false;false;63;95;191;;; -41525;1;0;false;false;;;;;; -41526;6;0;false;false;63;95;191;;; -41532;4;0;false;false;;;;;; -41536;1;0;false;false;63;95;191;;; -41537;2;0;false;false;;;;;; -41539;2;0;false;false;63;95;191;;; -41541;1;0;false;false;;;;;; -41542;5;0;false;false;63;95;191;;; -41547;1;0;false;false;;;;;; -41548;2;0;false;false;63;95;191;;; -41550;1;0;false;false;;;;;; -41551;8;0;false;false;63;95;191;;; -41559;1;0;false;false;;;;;; -41560;5;0;false;false;63;95;191;;; -41565;1;0;false;false;;;;;; -41566;3;0;false;false;63;95;191;;; -41569;4;0;false;false;;;;;; -41573;2;0;false;false;63;95;191;;; -41575;3;0;false;false;;;;;; -41578;6;1;false;false;127;0;85;;; -41584;1;0;false;false;;;;;; -41585;28;0;false;false;0;0;0;;; -41613;1;0;false;false;;;;;; -41614;7;0;false;false;0;0;0;;; -41621;1;0;false;false;;;;;; -41622;17;0;false;false;0;0;0;;; -41639;1;0;false;false;;;;;; -41640;8;0;false;false;0;0;0;;; -41648;1;0;false;false;;;;;; -41649;1;0;false;false;0;0;0;;; -41650;4;0;false;false;;;;;; -41654;4;1;false;false;127;0;85;;; -41658;7;0;false;false;0;0;0;;; -41665;1;0;false;false;;;;;; -41666;1;0;false;false;0;0;0;;; -41667;1;0;false;false;;;;;; -41668;7;0;false;false;0;0;0;;; -41675;4;0;false;false;;;;;; -41679;4;1;false;false;127;0;85;;; -41683;8;0;false;false;0;0;0;;; -41691;1;0;false;false;;;;;; -41692;1;0;false;false;0;0;0;;; -41693;1;0;false;false;;;;;; -41694;8;0;false;false;0;0;0;;; -41702;4;0;false;false;;;;;; -41706;4;1;false;false;127;0;85;;; -41710;10;0;false;false;0;0;0;;; -41720;1;0;false;false;;;;;; -41721;1;0;false;false;0;0;0;;; -41722;1;0;false;false;;;;;; -41723;23;0;false;false;0;0;0;;; -41746;4;0;false;false;;;;;; -41750;9;0;false;false;0;0;0;;; -41759;1;0;false;false;;;;;; -41760;1;0;false;false;0;0;0;;; -41761;1;0;false;false;;;;;; -41762;3;1;false;false;127;0;85;;; -41765;1;0;false;false;;;;;; -41766;3;1;false;false;127;0;85;;; -41769;12;0;false;false;0;0;0;;; -41781;4;0;false;false;;;;;; -41785;8;0;false;false;0;0;0;;; -41793;1;0;false;false;;;;;; -41794;10;0;false;false;0;0;0;;; -41804;1;0;false;false;;;;;; -41805;5;1;false;false;127;0;85;;; -41810;2;0;false;false;0;0;0;;; -41812;3;0;false;false;;;;;; -41815;1;0;false;false;0;0;0;;; -41816;3;0;false;false;;;;;; -41819;3;0;false;false;63;95;191;;; -41822;4;0;false;false;;;;;; -41826;1;0;false;false;63;95;191;;; -41827;1;0;false;false;;;;;; -41828;10;0;false;false;63;95;191;;; -41838;1;0;false;false;;;;;; -41839;3;0;false;false;63;95;191;;; -41842;1;0;false;false;;;;;; -41843;5;0;false;false;63;95;191;;; -41848;1;0;false;false;;;;;; -41849;2;0;false;false;63;95;191;;; -41851;1;0;false;false;;;;;; -41852;4;0;false;false;63;95;191;;; -41856;1;0;false;false;;;;;; -41857;4;0;false;false;63;95;191;;; -41861;1;0;false;false;;;;;; -41862;2;0;false;false;63;95;191;;; -41864;1;0;false;false;;;;;; -41865;3;0;false;false;63;95;191;;; -41868;1;0;false;false;;;;;; -41869;5;0;false;false;63;95;191;;; -41874;1;0;false;false;;;;;; -41875;5;0;false;false;63;95;191;;; -41880;1;0;false;false;;;;;; -41881;2;0;false;false;63;95;191;;; -41883;1;0;false;false;;;;;; -41884;2;0;false;false;63;95;191;;; -41886;1;0;false;false;;;;;; -41887;3;0;false;false;63;95;191;;; -41890;4;0;false;false;;;;;; -41894;1;0;false;false;63;95;191;;; -41895;1;0;false;false;;;;;; -41896;3;0;false;false;63;95;191;;; -41899;1;0;false;false;;;;;; -41900;4;0;false;false;63;95;191;;; -41904;1;0;false;false;;;;;; -41905;10;0;false;false;63;95;191;;; -41915;1;0;false;false;;;;;; -41916;4;0;false;false;63;95;191;;; -41920;4;0;false;false;;;;;; -41924;1;0;false;false;63;95;191;;; -41925;1;0;false;false;;;;;; -41926;2;0;false;false;63;95;191;;; -41928;1;0;false;false;;;;;; -41929;3;0;false;false;63;95;191;;; -41932;1;0;false;false;;;;;; -41933;4;0;false;false;63;95;191;;; -41937;1;0;false;false;;;;;; -41938;2;0;false;false;63;95;191;;; -41940;1;0;false;false;;;;;; -41941;3;0;false;false;63;95;191;;; -41944;1;0;false;false;;;;;; -41945;5;0;false;false;63;95;191;;; -41950;1;0;false;false;;;;;; -41951;5;0;false;false;63;95;191;;; -41956;1;0;false;false;;;;;; -41957;2;0;false;false;63;95;191;;; -41959;1;0;false;false;;;;;; -41960;5;0;false;false;63;95;191;;; -41965;1;0;false;false;;;;;; -41966;4;0;false;false;63;95;191;;; -41970;1;0;false;false;;;;;; -41971;3;0;false;false;63;95;191;;; -41974;1;0;false;false;;;;;; -41975;9;0;false;false;63;95;191;;; -41984;1;0;false;false;;;;;; -41985;6;0;false;false;63;95;191;;; -41991;4;0;false;false;;;;;; -41995;1;0;false;false;63;95;191;;; -41996;1;0;false;false;;;;;; -41997;5;0;false;false;63;95;191;;; -42002;1;0;false;false;;;;;; -42003;3;0;false;false;63;95;191;;; -42006;1;0;false;false;;;;;; -42007;7;0;false;false;63;95;191;;; -42014;1;0;false;false;;;;;; -42015;4;0;false;false;63;95;191;;; -42019;1;0;false;false;;;;;; -42020;5;0;false;false;63;95;191;;; -42025;1;0;false;false;;;;;; -42026;2;0;false;false;63;95;191;;; -42028;1;0;false;false;;;;;; -42029;8;0;false;false;63;95;191;;; -42037;4;0;false;false;;;;;; -42041;1;0;false;false;63;95;191;;; -42042;1;0;false;false;;;;;; -42043;3;0;false;false;127;127;159;;; -42046;4;0;false;false;;;;;; -42050;1;0;false;false;63;95;191;;; -42051;5;0;false;false;;;;;; -42056;1;0;false;false;63;95;191;;; -42057;1;0;false;false;;;;;; -42058;7;1;false;false;127;159;191;;; -42065;9;0;false;false;63;95;191;;; -42074;1;0;false;false;;;;;; -42075;5;0;false;false;63;95;191;;; -42080;1;0;false;false;;;;;; -42081;4;0;false;false;63;95;191;;; -42085;1;0;false;false;;;;;; -42086;2;0;false;false;63;95;191;;; -42088;1;0;false;false;;;;;; -42089;9;0;false;false;63;95;191;;; -42098;1;0;false;false;;;;;; -42099;3;0;false;false;63;95;191;;; -42102;1;0;false;false;;;;;; -42103;4;0;false;false;63;95;191;;; -42107;1;0;false;false;;;;;; -42108;5;0;false;false;63;95;191;;; -42113;1;0;false;false;;;;;; -42114;2;0;false;false;63;95;191;;; -42116;4;0;false;false;;;;;; -42120;1;0;false;false;63;95;191;;; -42121;1;0;false;false;;;;;; -42122;7;1;false;false;127;159;191;;; -42129;9;0;false;false;63;95;191;;; -42138;1;0;false;false;;;;;; -42139;6;0;false;false;63;95;191;;; -42145;1;0;false;false;;;;;; -42146;2;0;false;false;63;95;191;;; -42148;1;0;false;false;;;;;; -42149;5;0;false;false;63;95;191;;; -42154;1;0;false;false;;;;;; -42155;2;0;false;false;63;95;191;;; -42157;1;0;false;false;;;;;; -42158;9;0;false;false;63;95;191;;; -42167;1;0;false;false;;;;;; -42168;3;0;false;false;63;95;191;;; -42171;1;0;false;false;;;;;; -42172;4;0;false;false;63;95;191;;; -42176;1;0;false;false;;;;;; -42177;5;0;false;false;63;95;191;;; -42182;1;0;false;false;;;;;; -42183;3;0;false;false;63;95;191;;; -42186;4;0;false;false;;;;;; -42190;2;0;false;false;63;95;191;;; -42192;3;0;false;false;;;;;; -42195;6;1;false;false;127;0;85;;; -42201;1;0;false;false;;;;;; -42202;4;1;false;false;127;0;85;;; -42206;1;0;false;false;;;;;; -42207;10;0;false;false;0;0;0;;; -42217;3;1;false;false;127;0;85;;; -42220;1;0;false;false;;;;;; -42221;10;0;false;false;0;0;0;;; -42231;1;0;false;false;;;;;; -42232;3;1;false;false;127;0;85;;; -42235;1;0;false;false;;;;;; -42236;10;0;false;false;0;0;0;;; -42246;1;0;false;false;;;;;; -42247;1;0;false;false;0;0;0;;; -42248;4;0;false;false;;;;;; -42252;3;1;false;false;127;0;85;;; -42255;1;0;false;false;;;;;; -42256;10;0;false;false;0;0;0;;; -42266;1;0;false;false;;;;;; -42267;1;0;false;false;0;0;0;;; -42268;1;0;false;false;;;;;; -42269;2;0;false;false;0;0;0;;; -42271;4;0;false;false;;;;;; -42275;3;1;false;false;127;0;85;;; -42278;1;0;false;false;;;;;; -42279;7;0;false;false;0;0;0;;; -42286;1;0;false;false;;;;;; -42287;1;0;false;false;0;0;0;;; -42288;1;0;false;false;;;;;; -42289;9;0;false;false;0;0;0;;; -42298;1;0;false;false;;;;;; -42299;1;0;false;false;0;0;0;;; -42300;1;0;false;false;;;;;; -42301;10;0;false;false;0;0;0;;; -42311;9;0;false;false;;;;;; -42320;2;1;false;false;127;0;85;;; -42322;1;0;false;false;;;;;; -42323;10;0;false;false;0;0;0;;; -42333;1;0;false;false;;;;;; -42334;1;0;false;false;0;0;0;;; -42335;1;0;false;false;;;;;; -42336;1;0;false;false;0;0;0;;; -42337;1;0;false;false;;;;;; -42338;2;0;false;false;0;0;0;;; -42340;1;0;false;false;;;;;; -42341;7;0;false;false;0;0;0;;; -42348;1;0;false;false;;;;;; -42349;1;0;false;false;0;0;0;;; -42350;1;0;false;false;;;;;; -42351;17;0;false;false;0;0;0;;; -42368;1;0;false;false;;;;;; -42369;1;0;false;false;0;0;0;;; -42370;5;0;false;false;;;;;; -42375;6;1;false;false;127;0;85;;; -42381;1;0;false;false;0;0;0;;; -42382;4;0;false;false;;;;;; -42386;1;0;false;false;0;0;0;;; -42387;4;0;false;false;;;;;; -42391;10;0;false;false;0;0;0;;; -42401;1;0;false;false;;;;;; -42402;1;0;false;false;0;0;0;;; -42403;1;0;false;false;;;;;; -42404;16;0;false;false;0;0;0;;; -42420;4;0;false;false;;;;;; -42424;3;1;false;false;127;0;85;;; -42427;1;0;false;false;;;;;; -42428;1;0;false;false;0;0;0;;; -42429;3;1;false;false;127;0;85;;; -42432;1;0;false;false;;;;;; -42433;1;0;false;false;0;0;0;;; -42434;1;0;false;false;;;;;; -42435;1;0;false;false;0;0;0;;; -42436;1;0;false;false;;;;;; -42437;10;0;false;false;0;0;0;;; -42447;1;0;false;false;;;;;; -42448;1;0;false;false;0;0;0;;; -42449;1;0;false;false;;;;;; -42450;1;0;false;false;0;0;0;;; -42451;1;0;false;false;;;;;; -42452;8;0;false;false;0;0;0;;; -42460;1;0;false;false;;;;;; -42461;4;0;false;false;0;0;0;;; -42465;1;0;false;false;;;;;; -42466;1;0;false;false;0;0;0;;; -42467;5;0;false;false;;;;;; -42472;2;1;false;false;127;0;85;;; -42474;1;0;false;false;;;;;; -42475;13;0;false;false;0;0;0;;; -42488;1;0;false;false;;;;;; -42489;2;0;false;false;0;0;0;;; -42491;1;0;false;false;;;;;; -42492;3;0;false;false;0;0;0;;; -42495;1;0;false;false;;;;;; -42496;1;0;false;false;0;0;0;;; -42497;6;0;false;false;;;;;; -42503;6;0;false;false;0;0;0;;; -42509;1;0;false;false;;;;;; -42510;4;0;false;false;0;0;0;;; -42514;1;0;false;false;;;;;; -42515;1;0;false;false;0;0;0;;; -42516;1;0;false;false;;;;;; -42517;19;0;false;false;0;0;0;;; -42536;6;0;false;false;;;;;; -42542;3;1;false;false;127;0;85;;; -42545;1;0;false;false;;;;;; -42546;10;0;false;false;0;0;0;;; -42556;1;0;false;false;;;;;; -42557;1;0;false;false;0;0;0;;; -42558;1;0;false;false;;;;;; -42559;27;0;false;false;0;0;0;;; -42586;6;0;false;false;;;;;; -42592;12;0;false;false;0;0;0;;; -42604;1;0;false;false;;;;;; -42605;1;0;false;false;0;0;0;;; -42606;1;0;false;false;;;;;; -42607;18;0;false;false;0;0;0;;; -42625;1;0;false;false;;;;;; -42626;11;0;false;false;0;0;0;;; -42637;1;0;false;false;;;;;; -42638;1;0;false;false;0;0;0;;; -42639;1;0;false;false;;;;;; -42640;11;0;false;false;0;0;0;;; -42651;5;0;false;false;;;;;; -42656;1;0;false;false;0;0;0;;; -42657;5;0;false;false;;;;;; -42662;2;1;false;false;127;0;85;;; -42664;1;0;false;false;;;;;; -42665;13;0;false;false;0;0;0;;; -42678;1;0;false;false;;;;;; -42679;1;0;false;false;0;0;0;;; -42680;1;0;false;false;;;;;; -42681;9;0;false;false;0;0;0;;; -42690;1;0;false;false;;;;;; -42691;1;0;false;false;0;0;0;;; -42692;6;0;false;false;;;;;; -42698;8;0;false;false;0;0;0;;; -42706;1;0;false;false;;;;;; -42707;1;0;false;false;0;0;0;;; -42708;1;0;false;false;;;;;; -42709;13;0;false;false;0;0;0;;; -42722;6;0;false;false;;;;;; -42728;17;0;false;false;0;0;0;;; -42745;1;0;false;false;;;;;; -42746;1;0;false;false;0;0;0;;; -42747;1;0;false;false;;;;;; -42748;2;0;false;false;0;0;0;;; -42750;5;0;false;false;;;;;; -42755;1;0;false;false;0;0;0;;; -42756;4;0;false;false;;;;;; -42760;1;0;false;false;0;0;0;;; -42761;3;0;false;false;;;;;; -42764;1;0;false;false;0;0;0;;; -42765;3;0;false;false;;;;;; -42768;3;0;false;false;63;95;191;;; -42771;5;0;false;false;;;;;; -42776;1;0;false;false;63;95;191;;; -42777;1;0;false;false;;;;;; -42778;10;0;false;false;63;95;191;;; -42788;1;0;false;false;;;;;; -42789;3;0;false;false;63;95;191;;; -42792;1;0;false;false;;;;;; -42793;5;0;false;false;63;95;191;;; -42798;1;0;false;false;;;;;; -42799;2;0;false;false;63;95;191;;; -42801;1;0;false;false;;;;;; -42802;3;0;false;false;63;95;191;;; -42805;1;0;false;false;;;;;; -42806;7;0;false;false;63;95;191;;; -42813;1;0;false;false;;;;;; -42814;5;0;false;false;63;95;191;;; -42819;1;0;false;false;;;;;; -42820;2;0;false;false;63;95;191;;; -42822;1;0;false;false;;;;;; -42823;3;0;false;false;63;95;191;;; -42826;1;0;false;false;;;;;; -42827;9;0;false;false;63;95;191;;; -42836;5;0;false;false;;;;;; -42841;1;0;false;false;63;95;191;;; -42842;1;0;false;false;;;;;; -42843;6;0;false;false;63;95;191;;; -42849;4;0;false;false;;;;;; -42853;1;0;false;false;63;95;191;;; -42854;1;0;false;false;;;;;; -42855;3;0;false;false;127;127;159;;; -42858;4;0;false;false;;;;;; -42862;1;0;false;false;63;95;191;;; -42863;4;0;false;false;;;;;; -42867;1;0;false;false;63;95;191;;; -42868;1;0;false;false;;;;;; -42869;7;1;false;false;127;159;191;;; -42876;9;0;false;false;63;95;191;;; -42885;1;0;false;false;;;;;; -42886;3;0;false;false;63;95;191;;; -42889;1;0;false;false;;;;;; -42890;5;0;false;false;63;95;191;;; -42895;1;0;false;false;;;;;; -42896;7;0;false;false;63;95;191;;; -42903;1;0;false;false;;;;;; -42904;4;0;false;false;63;95;191;;; -42908;4;0;false;false;;;;;; -42912;1;0;false;false;63;95;191;;; -42913;1;0;false;false;;;;;; -42914;7;1;false;false;127;159;191;;; -42921;12;0;false;false;63;95;191;;; -42933;1;0;false;false;;;;;; -42934;3;0;false;false;63;95;191;;; -42937;1;0;false;false;;;;;; -42938;6;0;false;false;63;95;191;;; -42944;1;0;false;false;;;;;; -42945;2;0;false;false;63;95;191;;; -42947;1;0;false;false;;;;;; -42948;8;0;false;false;63;95;191;;; -42956;1;0;false;false;;;;;; -42957;5;0;false;false;63;95;191;;; -42962;4;0;false;false;;;;;; -42966;2;0;false;false;63;95;191;;; -42968;5;0;false;false;;;;;; -42973;4;1;false;false;127;0;85;;; -42977;1;0;false;false;;;;;; -42978;17;0;false;false;0;0;0;;; -42995;3;1;false;false;127;0;85;;; -42998;1;0;false;false;;;;;; -42999;10;0;false;false;0;0;0;;; -43009;1;0;false;false;;;;;; -43010;3;1;false;false;127;0;85;;; -43013;1;0;false;false;;;;;; -43014;13;0;false;false;0;0;0;;; -43027;1;0;false;false;;;;;; -43028;1;0;false;false;0;0;0;;; -43029;4;0;false;false;;;;;; -43033;3;1;false;false;127;0;85;;; -43036;1;0;false;false;;;;;; -43037;8;0;false;false;0;0;0;;; -43045;1;0;false;false;;;;;; -43046;1;0;false;false;0;0;0;;; -43047;1;0;false;false;;;;;; -43048;21;0;false;false;0;0;0;;; -43069;4;0;false;false;;;;;; -43073;3;1;false;false;127;0;85;;; -43076;1;0;false;false;;;;;; -43077;10;0;false;false;0;0;0;;; -43087;1;0;false;false;;;;;; -43088;1;0;false;false;0;0;0;;; -43089;1;0;false;false;;;;;; -43090;33;0;false;false;0;0;0;;; -43123;1;0;false;false;;;;;; -43124;9;0;false;false;0;0;0;;; -43133;1;0;false;false;;;;;; -43134;1;0;false;false;0;0;0;;; -43135;1;0;false;false;;;;;; -43136;14;0;false;false;0;0;0;;; -43150;8;0;false;false;;;;;; -43158;9;0;false;false;0;0;0;;; -43167;1;0;false;false;;;;;; -43168;1;0;false;false;0;0;0;;; -43169;1;0;false;false;;;;;; -43170;19;0;false;false;0;0;0;;; -43189;1;0;false;false;;;;;; -43190;10;0;false;false;0;0;0;;; -43200;4;0;false;false;;;;;; -43204;20;0;false;false;0;0;0;;; -43224;1;0;false;false;;;;;; -43225;10;0;false;false;0;0;0;;; -43235;1;0;false;false;;;;;; -43236;1;0;false;false;0;0;0;;; -43237;1;0;false;false;;;;;; -43238;9;0;false;false;0;0;0;;; -43247;1;0;false;false;;;;;; -43248;1;0;false;false;0;0;0;;; -43249;1;0;false;false;;;;;; -43250;3;0;false;false;0;0;0;;; -43253;3;0;false;false;;;;;; -43256;1;0;false;false;0;0;0;;; -43257;3;0;false;false;;;;;; -43260;3;0;false;false;63;95;191;;; -43263;4;0;false;false;;;;;; -43267;1;0;false;false;63;95;191;;; -43268;1;0;false;false;;;;;; -43269;8;0;false;false;63;95;191;;; -43277;1;0;false;false;;;;;; -43278;3;0;false;false;63;95;191;;; -43281;1;0;false;false;;;;;; -43282;5;0;false;false;63;95;191;;; -43287;1;0;false;false;;;;;; -43288;2;0;false;false;63;95;191;;; -43290;1;0;false;false;;;;;; -43291;3;0;false;false;63;95;191;;; -43294;1;0;false;false;;;;;; -43295;5;0;false;false;63;95;191;;; -43300;1;0;false;false;;;;;; -43301;5;0;false;false;63;95;191;;; -43306;4;0;false;false;;;;;; -43310;1;0;false;false;63;95;191;;; -43311;1;0;false;false;;;;;; -43312;3;0;false;false;127;127;159;;; -43315;4;0;false;false;;;;;; -43319;1;0;false;false;63;95;191;;; -43320;5;0;false;false;;;;;; -43325;1;0;false;false;63;95;191;;; -43326;1;0;false;false;;;;;; -43327;7;1;false;false;127;159;191;;; -43334;4;0;false;false;63;95;191;;; -43338;1;0;false;false;;;;;; -43339;3;0;false;false;63;95;191;;; -43342;1;0;false;false;;;;;; -43343;4;0;false;false;63;95;191;;; -43347;1;0;false;false;;;;;; -43348;2;0;false;false;63;95;191;;; -43350;1;0;false;false;;;;;; -43351;7;0;false;false;63;95;191;;; -43358;4;0;false;false;;;;;; -43362;1;0;false;false;63;95;191;;; -43363;1;0;false;false;;;;;; -43364;7;1;false;false;127;159;191;;; -43371;10;0;false;false;63;95;191;;; -43381;1;0;false;false;;;;;; -43382;5;0;false;false;63;95;191;;; -43387;1;0;false;false;;;;;; -43388;6;0;false;false;63;95;191;;; -43394;1;0;false;false;;;;;; -43395;2;0;false;false;63;95;191;;; -43397;1;0;false;false;;;;;; -43398;3;0;false;false;63;95;191;;; -43401;1;0;false;false;;;;;; -43402;4;0;false;false;63;95;191;;; -43406;1;0;false;false;;;;;; -43407;2;0;false;false;63;95;191;;; -43409;1;0;false;false;;;;;; -43410;8;0;false;false;63;95;191;;; -43418;1;0;false;false;;;;;; -43419;8;0;false;false;63;95;191;;; -43427;5;0;false;false;;;;;; -43432;1;0;false;false;63;95;191;;; -43433;2;0;false;false;;;;;; -43435;2;0;false;false;63;95;191;;; -43437;1;0;false;false;;;;;; -43438;3;0;false;false;63;95;191;;; -43441;1;0;false;false;;;;;; -43442;5;0;false;false;63;95;191;;; -43447;1;0;false;false;;;;;; -43448;2;0;false;false;63;95;191;;; -43450;1;0;false;false;;;;;; -43451;3;0;false;false;63;95;191;;; -43454;1;0;false;false;;;;;; -43455;8;0;false;false;63;95;191;;; -43463;4;0;false;false;;;;;; -43467;1;0;false;false;63;95;191;;; -43468;1;0;false;false;;;;;; -43469;8;1;false;false;127;159;191;;; -43477;3;0;false;false;63;95;191;;; -43480;1;0;false;false;;;;;; -43481;5;0;false;false;63;95;191;;; -43486;1;0;false;false;;;;;; -43487;2;0;false;false;63;95;191;;; -43489;1;0;false;false;;;;;; -43490;3;0;false;false;63;95;191;;; -43493;1;0;false;false;;;;;; -43494;5;0;false;false;63;95;191;;; -43499;1;0;false;false;;;;;; -43500;4;0;false;false;63;95;191;;; -43504;4;0;false;false;;;;;; -43508;2;0;false;false;63;95;191;;; -43510;3;0;false;false;;;;;; -43513;3;1;false;false;127;0;85;;; -43516;1;0;false;false;;;;;; -43517;19;0;false;false;0;0;0;;; -43536;1;0;false;false;;;;;; -43537;5;0;false;false;0;0;0;;; -43542;1;0;false;false;;;;;; -43543;3;1;false;false;127;0;85;;; -43546;1;0;false;false;;;;;; -43547;11;0;false;false;0;0;0;;; -43558;1;0;false;false;;;;;; -43559;1;0;false;false;0;0;0;;; -43560;4;0;false;false;;;;;; -43564;10;0;false;false;0;0;0;;; -43574;1;0;false;false;;;;;; -43575;6;0;false;false;0;0;0;;; -43581;1;0;false;false;;;;;; -43582;1;0;false;false;0;0;0;;; -43583;1;0;false;false;;;;;; -43584;28;0;false;false;0;0;0;;; -43612;1;0;false;false;;;;;; -43613;12;0;false;false;0;0;0;;; -43625;4;0;false;false;;;;;; -43629;9;0;false;false;0;0;0;;; -43638;1;0;false;false;;;;;; -43639;4;0;false;false;0;0;0;;; -43643;1;0;false;false;;;;;; -43644;1;0;false;false;0;0;0;;; -43645;1;0;false;false;;;;;; -43646;24;0;false;false;0;0;0;;; -43670;4;0;false;false;;;;;; -43674;35;0;false;false;0;0;0;;; -43709;4;0;false;false;;;;;; -43713;6;1;false;false;127;0;85;;; -43719;1;0;false;false;;;;;; -43720;6;0;false;false;0;0;0;;; -43726;1;0;false;false;;;;;; -43727;1;0;false;false;0;0;0;;; -43728;1;0;false;false;;;;;; -43729;10;0;false;false;0;0;0;;; -43739;1;0;false;false;;;;;; -43740;1;0;false;false;0;0;0;;; -43741;1;0;false;false;;;;;; -43742;10;0;false;false;0;0;0;;; -43752;1;0;false;false;;;;;; -43753;1;0;false;false;0;0;0;;; -43754;1;0;false;false;;;;;; -43755;12;0;false;false;0;0;0;;; -43767;3;0;false;false;;;;;; -43770;1;0;false;false;0;0;0;;; -43771;3;0;false;false;;;;;; -43774;3;0;false;false;63;95;191;;; -43777;4;0;false;false;;;;;; -43781;1;0;false;false;63;95;191;;; -43782;1;0;false;false;;;;;; -43783;5;0;false;false;63;95;191;;; -43788;1;0;false;false;;;;;; -43789;3;0;false;false;63;95;191;;; -43792;1;0;false;false;;;;;; -43793;6;0;false;false;127;127;159;;; -43799;9;0;false;false;63;95;191;;; -43808;7;0;false;false;127;127;159;;; -43815;1;0;false;false;;;;;; -43816;5;0;false;false;63;95;191;;; -43821;1;0;false;false;;;;;; -43822;2;0;false;false;63;95;191;;; -43824;1;0;false;false;;;;;; -43825;10;0;false;false;63;95;191;;; -43835;1;0;false;false;;;;;; -43836;3;0;false;false;63;95;191;;; -43839;1;0;false;false;;;;;; -43840;4;0;false;false;63;95;191;;; -43844;1;0;false;false;;;;;; -43845;5;0;false;false;63;95;191;;; -43850;4;0;false;false;;;;;; -43854;1;0;false;false;63;95;191;;; -43855;1;0;false;false;;;;;; -43856;12;0;false;false;63;95;191;;; -43868;4;0;false;false;;;;;; -43872;1;0;false;false;63;95;191;;; -43873;1;0;false;false;;;;;; -43874;3;0;false;false;127;127;159;;; -43877;4;0;false;false;;;;;; -43881;1;0;false;false;63;95;191;;; -43882;4;0;false;false;;;;;; -43886;1;0;false;false;63;95;191;;; -43887;1;0;false;false;;;;;; -43888;7;1;false;false;127;159;191;;; -43895;8;0;false;false;63;95;191;;; -43903;1;0;false;false;;;;;; -43904;3;0;false;false;63;95;191;;; -43907;1;0;false;false;;;;;; -43908;6;0;false;false;63;95;191;;; -43914;1;0;false;false;;;;;; -43915;2;0;false;false;63;95;191;;; -43917;1;0;false;false;;;;;; -43918;8;0;false;false;63;95;191;;; -43926;1;0;false;false;;;;;; -43927;2;0;false;false;63;95;191;;; -43929;1;0;false;false;;;;;; -43930;8;0;false;false;63;95;191;;; -43938;1;0;false;false;;;;;; -43939;3;0;false;false;63;95;191;;; -43942;1;0;false;false;;;;;; -43943;5;0;false;false;63;95;191;;; -43948;1;0;false;false;;;;;; -43949;2;0;false;false;63;95;191;;; -43951;4;0;false;false;;;;;; -43955;2;0;false;false;63;95;191;;; -43957;3;0;false;false;;;;;; -43960;4;1;false;false;127;0;85;;; -43964;1;0;false;false;;;;;; -43965;12;0;false;false;0;0;0;;; -43977;3;1;false;false;127;0;85;;; -43980;1;0;false;false;;;;;; -43981;9;0;false;false;0;0;0;;; -43990;1;0;false;false;;;;;; -43991;1;0;false;false;0;0;0;;; -43992;4;0;false;false;;;;;; -43996;3;1;false;false;127;0;85;;; -43999;1;0;false;false;;;;;; -44000;4;0;false;false;0;0;0;;; -44004;1;0;false;false;;;;;; -44005;1;0;false;false;0;0;0;;; -44006;1;0;false;false;;;;;; -44007;17;0;false;false;0;0;0;;; -44024;4;0;false;false;;;;;; -44028;2;1;false;false;127;0;85;;; -44030;1;0;false;false;;;;;; -44031;5;0;false;false;0;0;0;;; -44036;1;0;false;false;;;;;; -44037;1;0;false;false;0;0;0;;; -44038;1;0;false;false;;;;;; -44039;9;0;false;false;0;0;0;;; -44048;1;0;false;false;;;;;; -44049;2;0;false;false;0;0;0;;; -44051;1;0;false;false;;;;;; -44052;9;0;false;false;0;0;0;;; -44061;1;0;false;false;;;;;; -44062;1;0;false;false;0;0;0;;; -44063;5;0;false;false;;;;;; -44068;6;1;false;false;127;0;85;;; -44074;1;0;false;false;0;0;0;;; -44075;4;0;false;false;;;;;; -44079;1;0;false;false;0;0;0;;; -44080;4;0;false;false;;;;;; -44084;3;1;false;false;127;0;85;;; -44087;2;0;false;false;0;0;0;;; -44089;1;0;false;false;;;;;; -44090;8;0;false;false;0;0;0;;; -44098;1;0;false;false;;;;;; -44099;1;0;false;false;0;0;0;;; -44100;1;0;false;false;;;;;; -44101;3;1;false;false;127;0;85;;; -44104;1;0;false;false;;;;;; -44105;3;1;false;false;127;0;85;;; -44108;14;0;false;false;0;0;0;;; -44122;1;0;false;false;;;;;; -44123;1;0;false;false;0;0;0;;; -44124;1;0;false;false;;;;;; -44125;2;0;false;false;0;0;0;;; -44127;1;0;false;false;;;;;; -44128;4;0;false;false;0;0;0;;; -44132;1;0;false;false;;;;;; -44133;1;0;false;false;0;0;0;;; -44134;1;0;false;false;;;;;; -44135;11;0;false;false;0;0;0;;; -44146;4;0;false;false;;;;;; -44150;27;0;false;false;0;0;0;;; -44177;1;0;false;false;;;;;; -44178;2;0;false;false;0;0;0;;; -44180;1;0;false;false;;;;;; -44181;9;0;false;false;0;0;0;;; -44190;1;0;false;false;;;;;; -44191;2;0;false;false;0;0;0;;; -44193;1;0;false;false;;;;;; -44194;6;0;false;false;0;0;0;;; -44200;4;0;false;false;;;;;; -44204;9;0;false;false;0;0;0;;; -44213;1;0;false;false;;;;;; -44214;1;0;false;false;0;0;0;;; -44215;1;0;false;false;;;;;; -44216;9;0;false;false;0;0;0;;; -44225;4;0;false;false;;;;;; -44229;11;0;false;false;0;0;0;;; -44240;1;0;false;false;;;;;; -44241;16;0;false;false;0;0;0;;; -44257;1;0;false;false;;;;;; -44258;1;0;false;false;0;0;0;;; -44259;1;0;false;false;;;;;; -44260;5;0;false;false;0;0;0;;; -44265;1;0;false;false;;;;;; -44266;5;1;false;false;127;0;85;;; -44271;2;0;false;false;0;0;0;;; -44273;3;0;false;false;;;;;; -44276;1;0;false;false;0;0;0;;; -44277;3;0;false;false;;;;;; -44280;3;0;false;false;63;95;191;;; -44283;4;0;false;false;;;;;; -44287;1;0;false;false;63;95;191;;; -44288;1;0;false;false;;;;;; -44289;7;0;false;false;63;95;191;;; -44296;1;0;false;false;;;;;; -44297;3;0;false;false;63;95;191;;; -44300;1;0;false;false;;;;;; -44301;5;0;false;false;63;95;191;;; -44306;1;0;false;false;;;;;; -44307;2;0;false;false;63;95;191;;; -44309;1;0;false;false;;;;;; -44310;3;0;false;false;63;95;191;;; -44313;1;0;false;false;;;;;; -44314;7;0;false;false;63;95;191;;; -44321;1;0;false;false;;;;;; -44322;8;0;false;false;63;95;191;;; -44330;1;0;false;false;;;;;; -44331;5;0;false;false;63;95;191;;; -44336;4;0;false;false;;;;;; -44340;1;0;false;false;63;95;191;;; -44341;1;0;false;false;;;;;; -44342;3;0;false;false;127;127;159;;; -44345;4;0;false;false;;;;;; -44349;1;0;false;false;63;95;191;;; -44350;4;0;false;false;;;;;; -44354;1;0;false;false;63;95;191;;; -44355;1;0;false;false;;;;;; -44356;8;1;false;false;127;159;191;;; -44364;3;0;false;false;63;95;191;;; -44367;1;0;false;false;;;;;; -44368;5;0;false;false;63;95;191;;; -44373;1;0;false;false;;;;;; -44374;2;0;false;false;63;95;191;;; -44376;1;0;false;false;;;;;; -44377;3;0;false;false;63;95;191;;; -44380;1;0;false;false;;;;;; -44381;7;0;false;false;63;95;191;;; -44388;1;0;false;false;;;;;; -44389;8;0;false;false;63;95;191;;; -44397;1;0;false;false;;;;;; -44398;5;0;false;false;63;95;191;;; -44403;4;0;false;false;;;;;; -44407;2;0;false;false;63;95;191;;; -44409;3;0;false;false;;;;;; -44412;6;1;false;false;127;0;85;;; -44418;1;0;false;false;;;;;; -44419;3;1;false;false;127;0;85;;; -44422;1;0;false;false;;;;;; -44423;10;0;false;false;0;0;0;;; -44433;1;0;false;false;;;;;; -44434;1;0;false;false;0;0;0;;; -44435;4;0;false;false;;;;;; -44439;6;1;false;false;127;0;85;;; -44445;1;0;false;false;;;;;; -44446;9;0;false;false;0;0;0;;; -44455;3;0;false;false;;;;;; -44458;1;0;false;false;0;0;0;;; -44459;3;0;false;false;;;;;; -44462;3;0;false;false;63;95;191;;; -44465;4;0;false;false;;;;;; -44469;1;0;false;false;63;95;191;;; -44470;1;0;false;false;;;;;; -44471;7;0;false;false;63;95;191;;; -44478;1;0;false;false;;;;;; -44479;3;0;false;false;63;95;191;;; -44482;1;0;false;false;;;;;; -44483;4;0;false;false;63;95;191;;; -44487;1;0;false;false;;;;;; -44488;5;0;false;false;63;95;191;;; -44493;1;0;false;false;;;;;; -44494;5;0;false;false;63;95;191;;; -44499;1;0;false;false;;;;;; -44500;2;0;false;false;63;95;191;;; -44502;1;0;false;false;;;;;; -44503;7;0;false;false;63;95;191;;; -44510;1;0;false;false;;;;;; -44511;8;0;false;false;63;95;191;;; -44519;1;0;false;false;;;;;; -44520;2;0;false;false;63;95;191;;; -44522;1;0;false;false;;;;;; -44523;7;0;false;false;63;95;191;;; -44530;1;0;false;false;;;;;; -44531;6;0;false;false;63;95;191;;; -44537;4;0;false;false;;;;;; -44541;1;0;false;false;63;95;191;;; -44542;1;0;false;false;;;;;; -44543;3;0;false;false;127;127;159;;; -44546;4;0;false;false;;;;;; -44550;1;0;false;false;63;95;191;;; -44551;4;0;false;false;;;;;; -44555;1;0;false;false;63;95;191;;; -44556;1;0;false;false;;;;;; -44557;7;1;false;false;127;159;191;;; -44564;9;0;false;false;63;95;191;;; -44573;1;0;false;false;;;;;; -44574;3;0;false;false;63;95;191;;; -44577;1;0;false;false;;;;;; -44578;8;0;false;false;63;95;191;;; -44586;1;0;false;false;;;;;; -44587;4;0;false;false;63;95;191;;; -44591;1;0;false;false;;;;;; -44592;2;0;false;false;63;95;191;;; -44594;1;0;false;false;;;;;; -44595;3;0;false;false;63;95;191;;; -44598;1;0;false;false;;;;;; -44599;6;0;false;false;63;95;191;;; -44605;1;0;false;false;;;;;; -44606;4;0;false;false;63;95;191;;; -44610;1;0;false;false;;;;;; -44611;4;0;false;false;63;95;191;;; -44615;1;0;false;false;;;;;; -44616;5;0;false;false;63;95;191;;; -44621;4;0;false;false;;;;;; -44625;1;0;false;false;63;95;191;;; -44626;1;0;false;false;;;;;; -44627;7;1;false;false;127;159;191;;; -44634;5;0;false;false;63;95;191;;; -44639;1;0;false;false;;;;;; -44640;3;0;false;false;63;95;191;;; -44643;1;0;false;false;;;;;; -44644;6;0;false;false;63;95;191;;; -44650;1;0;false;false;;;;;; -44651;2;0;false;false;63;95;191;;; -44653;1;0;false;false;;;;;; -44654;5;0;false;false;63;95;191;;; -44659;1;0;false;false;;;;;; -44660;2;0;false;false;63;95;191;;; -44662;1;0;false;false;;;;;; -44663;3;0;false;false;63;95;191;;; -44666;1;0;false;false;;;;;; -44667;7;0;false;false;63;95;191;;; -44674;1;0;false;false;;;;;; -44675;1;0;false;false;63;95;191;;; -44676;1;0;false;false;;;;;; -44677;1;0;false;false;63;95;191;;; -44678;1;0;false;false;;;;;; -44679;9;0;false;false;63;95;191;;; -44688;1;0;false;false;;;;;; -44689;5;0;false;false;63;95;191;;; -44694;1;0;false;false;;;;;; -44695;9;0;false;false;63;95;191;;; -44704;4;0;false;false;;;;;; -44708;1;0;false;false;63;95;191;;; -44709;2;0;false;false;;;;;; -44711;29;0;false;false;63;95;191;;; -44740;2;0;false;false;;;;;; -44742;2;0;false;false;63;95;191;;; -44744;3;0;false;false;;;;;; -44747;4;1;false;false;127;0;85;;; -44751;1;0;false;false;;;;;; -44752;13;0;false;false;0;0;0;;; -44765;3;1;false;false;127;0;85;;; -44768;1;0;false;false;;;;;; -44769;10;0;false;false;0;0;0;;; -44779;1;0;false;false;;;;;; -44780;3;1;false;false;127;0;85;;; -44783;1;0;false;false;;;;;; -44784;6;0;false;false;0;0;0;;; -44790;1;0;false;false;;;;;; -44791;1;0;false;false;0;0;0;;; -44792;4;0;false;false;;;;;; -44796;7;1;false;false;127;0;85;;; -44803;1;0;false;false;;;;;; -44804;9;0;false;false;0;0;0;;; -44813;1;0;false;false;;;;;; -44814;1;0;false;false;0;0;0;;; -44815;1;0;false;false;;;;;; -44816;5;0;false;false;0;0;0;;; -44821;1;0;false;false;;;;;; -44822;1;0;false;false;0;0;0;;; -44823;1;0;false;false;;;;;; -44824;2;0;false;false;0;0;0;;; -44826;8;0;false;false;;;;;; -44834;2;1;false;false;127;0;85;;; -44836;1;0;false;false;;;;;; -44837;6;0;false;false;0;0;0;;; -44843;1;0;false;false;;;;;; -44844;2;0;false;false;0;0;0;;; -44846;1;0;false;false;;;;;; -44847;2;0;false;false;0;0;0;;; -44849;1;0;false;false;;;;;; -44850;1;0;false;false;0;0;0;;; -44851;5;0;false;false;;;;;; -44856;6;1;false;false;127;0;85;;; -44862;1;0;false;false;0;0;0;;; -44863;4;0;false;false;;;;;; -44867;1;0;false;false;0;0;0;;; -44868;4;0;false;false;;;;;; -44872;2;1;false;false;127;0;85;;; -44874;1;0;false;false;;;;;; -44875;11;0;false;false;0;0;0;;; -44886;1;0;false;false;;;;;; -44887;1;0;false;false;0;0;0;;; -44888;5;0;false;false;;;;;; -44893;52;0;false;false;63;127;95;;; -44945;3;0;false;false;;;;;; -44948;19;0;false;false;0;0;0;;; -44967;5;0;false;false;;;;;; -44972;3;1;false;false;127;0;85;;; -44975;1;0;false;false;;;;;; -44976;1;0;false;false;0;0;0;;; -44977;3;1;false;false;127;0;85;;; -44980;1;0;false;false;;;;;; -44981;1;0;false;false;0;0;0;;; -44982;1;0;false;false;;;;;; -44983;1;0;false;false;0;0;0;;; -44984;1;0;false;false;;;;;; -44985;9;0;false;false;0;0;0;;; -44994;1;0;false;false;;;;;; -44995;1;0;false;false;0;0;0;;; -44996;1;0;false;false;;;;;; -44997;2;0;false;false;0;0;0;;; -44999;1;0;false;false;;;;;; -45000;1;0;false;false;0;0;0;;; -45001;1;0;false;false;;;;;; -45002;2;0;false;false;0;0;0;;; -45004;1;0;false;false;;;;;; -45005;10;0;false;false;0;0;0;;; -45015;1;0;false;false;;;;;; -45016;4;0;false;false;0;0;0;;; -45020;1;0;false;false;;;;;; -45021;1;0;false;false;0;0;0;;; -45022;6;0;false;false;;;;;; -45028;11;0;false;false;0;0;0;;; -45039;1;0;false;false;;;;;; -45040;1;0;false;false;0;0;0;;; -45041;1;0;false;false;;;;;; -45042;6;0;false;false;0;0;0;;; -45048;1;0;false;false;;;;;; -45049;1;0;false;false;0;0;0;;; -45050;1;0;false;false;;;;;; -45051;13;0;false;false;0;0;0;;; -45064;5;0;false;false;;;;;; -45069;1;0;false;false;0;0;0;;; -45070;5;0;false;false;;;;;; -45075;24;0;false;false;63;127;95;;; -45099;3;0;false;false;;;;;; -45102;3;1;false;false;127;0;85;;; -45105;1;0;false;false;;;;;; -45106;1;0;false;false;0;0;0;;; -45107;3;1;false;false;127;0;85;;; -45110;1;0;false;false;;;;;; -45111;1;0;false;false;0;0;0;;; -45112;1;0;false;false;;;;;; -45113;1;0;false;false;0;0;0;;; -45114;1;0;false;false;;;;;; -45115;9;0;false;false;0;0;0;;; -45124;1;0;false;false;;;;;; -45125;1;0;false;false;0;0;0;;; -45126;1;0;false;false;;;;;; -45127;2;0;false;false;0;0;0;;; -45129;1;0;false;false;;;;;; -45130;1;0;false;false;0;0;0;;; -45131;1;0;false;false;;;;;; -45132;2;0;false;false;0;0;0;;; -45134;1;0;false;false;;;;;; -45135;9;0;false;false;0;0;0;;; -45144;1;0;false;false;;;;;; -45145;1;0;false;false;0;0;0;;; -45146;1;0;false;false;;;;;; -45147;5;0;false;false;0;0;0;;; -45152;1;0;false;false;;;;;; -45153;2;0;false;false;0;0;0;;; -45155;1;0;false;false;;;;;; -45156;1;0;false;false;0;0;0;;; -45157;1;0;false;false;;;;;; -45158;1;0;false;false;0;0;0;;; -45159;1;0;false;false;;;;;; -45160;17;0;false;false;0;0;0;;; -45177;1;0;false;false;;;;;; -45178;4;0;false;false;0;0;0;;; -45182;1;0;false;false;;;;;; -45183;1;0;false;false;0;0;0;;; -45184;6;0;false;false;;;;;; -45190;12;0;false;false;0;0;0;;; -45202;1;0;false;false;;;;;; -45203;1;0;false;false;0;0;0;;; -45204;1;0;false;false;;;;;; -45205;3;0;false;false;0;0;0;;; -45208;5;0;false;false;;;;;; -45213;1;0;false;false;0;0;0;;; -45214;5;0;false;false;;;;;; -45219;57;0;false;false;63;127;95;;; -45276;3;0;false;false;;;;;; -45279;2;1;false;false;127;0;85;;; -45281;1;0;false;false;;;;;; -45282;18;0;false;false;0;0;0;;; -45300;1;0;false;false;;;;;; -45301;2;0;false;false;0;0;0;;; -45303;1;0;false;false;;;;;; -45304;10;0;false;false;0;0;0;;; -45314;1;0;false;false;;;;;; -45315;1;0;false;false;0;0;0;;; -45316;6;0;false;false;;;;;; -45322;17;0;false;false;0;0;0;;; -45339;1;0;false;false;;;;;; -45340;2;0;false;false;0;0;0;;; -45342;1;0;false;false;;;;;; -45343;6;0;false;false;0;0;0;;; -45349;5;0;false;false;;;;;; -45354;1;0;false;false;0;0;0;;; -45355;4;0;false;false;;;;;; -45359;1;0;false;false;0;0;0;;; -45360;5;0;false;false;;;;;; -45365;4;1;false;false;127;0;85;;; -45369;1;0;false;false;;;;;; -45370;1;0;false;false;0;0;0;;; -45371;5;0;false;false;;;;;; -45376;23;0;false;false;63;127;95;;; -45399;3;0;false;false;;;;;; -45402;3;1;false;false;127;0;85;;; -45405;1;0;false;false;;;;;; -45406;1;0;false;false;0;0;0;;; -45407;3;1;false;false;127;0;85;;; -45410;1;0;false;false;;;;;; -45411;1;0;false;false;0;0;0;;; -45412;1;0;false;false;;;;;; -45413;1;0;false;false;0;0;0;;; -45414;1;0;false;false;;;;;; -45415;9;0;false;false;0;0;0;;; -45424;1;0;false;false;;;;;; -45425;1;0;false;false;0;0;0;;; -45426;1;0;false;false;;;;;; -45427;6;0;false;false;0;0;0;;; -45433;1;0;false;false;;;;;; -45434;1;0;false;false;0;0;0;;; -45435;1;0;false;false;;;;;; -45436;1;0;false;false;0;0;0;;; -45437;1;0;false;false;;;;;; -45438;10;0;false;false;0;0;0;;; -45448;1;0;false;false;;;;;; -45449;4;0;false;false;0;0;0;;; -45453;1;0;false;false;;;;;; -45454;1;0;false;false;0;0;0;;; -45455;6;0;false;false;;;;;; -45461;18;0;false;false;0;0;0;;; -45479;1;0;false;false;;;;;; -45480;1;0;false;false;0;0;0;;; -45481;1;0;false;false;;;;;; -45482;13;0;false;false;0;0;0;;; -45495;5;0;false;false;;;;;; -45500;1;0;false;false;0;0;0;;; -45501;5;0;false;false;;;;;; -45506;39;0;false;false;63;127;95;;; -45545;3;0;false;false;;;;;; -45548;2;1;false;false;127;0;85;;; -45550;1;0;false;false;;;;;; -45551;18;0;false;false;0;0;0;;; -45569;1;0;false;false;;;;;; -45570;1;0;false;false;0;0;0;;; -45571;1;0;false;false;;;;;; -45572;9;0;false;false;0;0;0;;; -45581;1;0;false;false;;;;;; -45582;2;0;false;false;0;0;0;;; -45584;1;0;false;false;;;;;; -45585;17;0;false;false;0;0;0;;; -45602;1;0;false;false;;;;;; -45603;2;0;false;false;0;0;0;;; -45605;1;0;false;false;;;;;; -45606;9;0;false;false;0;0;0;;; -45615;1;0;false;false;;;;;; -45616;1;0;false;false;0;0;0;;; -45617;1;0;false;false;;;;;; -45618;6;0;false;false;0;0;0;;; -45624;1;0;false;false;;;;;; -45625;1;0;false;false;0;0;0;;; -45626;6;0;false;false;;;;;; -45632;8;0;false;false;0;0;0;;; -45640;1;0;false;false;;;;;; -45641;1;0;false;false;0;0;0;;; -45642;1;0;false;false;;;;;; -45643;2;0;false;false;0;0;0;;; -45645;6;0;false;false;;;;;; -45651;17;0;false;false;0;0;0;;; -45668;1;0;false;false;;;;;; -45669;1;0;false;false;0;0;0;;; -45670;1;0;false;false;;;;;; -45671;3;0;false;false;0;0;0;;; -45674;5;0;false;false;;;;;; -45679;1;0;false;false;0;0;0;;; -45680;5;0;false;false;;;;;; -45685;4;1;false;false;127;0;85;;; -45689;5;0;false;false;;;;;; -45694;2;1;false;false;127;0;85;;; -45696;1;0;false;false;;;;;; -45697;18;0;false;false;0;0;0;;; -45715;1;0;false;false;;;;;; -45716;2;0;false;false;0;0;0;;; -45718;1;0;false;false;;;;;; -45719;9;0;false;false;0;0;0;;; -45728;1;0;false;false;;;;;; -45729;1;0;false;false;0;0;0;;; -45730;1;0;false;false;;;;;; -45731;6;0;false;false;0;0;0;;; -45737;1;0;false;false;;;;;; -45738;1;0;false;false;0;0;0;;; -45739;6;0;false;false;;;;;; -45745;17;0;false;false;0;0;0;;; -45762;1;0;false;false;;;;;; -45763;2;0;false;false;0;0;0;;; -45765;1;0;false;false;;;;;; -45766;6;0;false;false;0;0;0;;; -45772;5;0;false;false;;;;;; -45777;1;0;false;false;0;0;0;;; -45778;4;0;false;false;;;;;; -45782;1;0;false;false;0;0;0;;; -45783;4;0;false;false;;;;;; -45787;9;0;false;false;0;0;0;;; -45796;1;0;false;false;;;;;; -45797;2;0;false;false;0;0;0;;; -45799;1;0;false;false;;;;;; -45800;6;0;false;false;0;0;0;;; -45806;3;0;false;false;;;;;; -45809;1;0;false;false;0;0;0;;; -45810;3;0;false;false;;;;;; -45813;3;0;false;false;63;95;191;;; -45816;4;0;false;false;;;;;; -45820;1;0;false;false;63;95;191;;; -45821;1;0;false;false;;;;;; -45822;6;0;false;false;63;95;191;;; -45828;1;0;false;false;;;;;; -45829;3;0;false;false;63;95;191;;; -45832;1;0;false;false;;;;;; -45833;4;0;false;false;63;95;191;;; -45837;1;0;false;false;;;;;; -45838;5;0;false;false;63;95;191;;; -45843;1;0;false;false;;;;;; -45844;2;0;false;false;63;95;191;;; -45846;1;0;false;false;;;;;; -45847;3;0;false;false;63;95;191;;; -45850;1;0;false;false;;;;;; -45851;5;0;false;false;63;95;191;;; -45856;1;0;false;false;;;;;; -45857;2;0;false;false;63;95;191;;; -45859;1;0;false;false;;;;;; -45860;3;0;false;false;63;95;191;;; -45863;1;0;false;false;;;;;; -45864;9;0;false;false;63;95;191;;; -45873;1;0;false;false;;;;;; -45874;6;0;false;false;63;95;191;;; -45880;4;0;false;false;;;;;; -45884;1;0;false;false;63;95;191;;; -45885;1;0;false;false;;;;;; -45886;3;0;false;false;127;127;159;;; -45889;4;0;false;false;;;;;; -45893;1;0;false;false;63;95;191;;; -45894;4;0;false;false;;;;;; -45898;1;0;false;false;63;95;191;;; -45899;1;0;false;false;;;;;; -45900;7;1;false;false;127;159;191;;; -45907;9;0;false;false;63;95;191;;; -45916;1;0;false;false;;;;;; -45917;3;0;false;false;63;95;191;;; -45920;1;0;false;false;;;;;; -45921;5;0;false;false;63;95;191;;; -45926;1;0;false;false;;;;;; -45927;4;0;false;false;63;95;191;;; -45931;1;0;false;false;;;;;; -45932;2;0;false;false;63;95;191;;; -45934;1;0;false;false;;;;;; -45935;5;0;false;false;63;95;191;;; -45940;4;0;false;false;;;;;; -45944;1;0;false;false;63;95;191;;; -45945;1;0;false;false;;;;;; -45946;7;1;false;false;127;159;191;;; -45953;9;0;false;false;63;95;191;;; -45962;1;0;false;false;;;;;; -45963;3;0;false;false;63;95;191;;; -45966;1;0;false;false;;;;;; -45967;6;0;false;false;63;95;191;;; -45973;1;0;false;false;;;;;; -45974;2;0;false;false;63;95;191;;; -45976;1;0;false;false;;;;;; -45977;5;0;false;false;63;95;191;;; -45982;1;0;false;false;;;;;; -45983;2;0;false;false;63;95;191;;; -45985;1;0;false;false;;;;;; -45986;5;0;false;false;63;95;191;;; -45991;4;0;false;false;;;;;; -45995;1;0;false;false;63;95;191;;; -45996;1;0;false;false;;;;;; -45997;7;1;false;false;127;159;191;;; -46004;17;0;false;false;63;95;191;;; -46021;1;0;false;false;;;;;; -46022;7;0;false;false;63;95;191;;; -46029;1;0;false;false;;;;;; -46030;3;0;false;false;63;95;191;;; -46033;1;0;false;false;;;;;; -46034;6;0;false;false;63;95;191;;; -46040;1;0;false;false;;;;;; -46041;4;0;false;false;63;95;191;;; -46045;1;0;false;false;;;;;; -46046;2;0;false;false;63;95;191;;; -46048;1;0;false;false;;;;;; -46049;5;0;false;false;63;95;191;;; -46054;5;0;false;false;;;;;; -46059;1;0;false;false;63;95;191;;; -46060;2;0;false;false;;;;;; -46062;5;0;false;false;63;95;191;;; -46067;1;0;false;false;;;;;; -46068;3;0;false;false;63;95;191;;; -46071;1;0;false;false;;;;;; -46072;7;0;false;false;63;95;191;;; -46079;1;0;false;false;;;;;; -46080;5;0;false;false;63;95;191;;; -46085;1;0;false;false;;;;;; -46086;2;0;false;false;63;95;191;;; -46088;1;0;false;false;;;;;; -46089;3;0;false;false;63;95;191;;; -46092;1;0;false;false;;;;;; -46093;9;0;false;false;63;95;191;;; -46102;1;0;false;false;;;;;; -46103;6;0;false;false;63;95;191;;; -46109;1;0;false;false;;;;;; -46110;5;0;false;false;63;95;191;;; -46115;1;0;false;false;;;;;; -46116;2;0;false;false;63;95;191;;; -46118;5;0;false;false;;;;;; -46123;1;0;false;false;63;95;191;;; -46124;2;0;false;false;;;;;; -46126;11;0;false;false;63;95;191;;; -46137;1;0;false;false;;;;;; -46138;9;0;false;false;63;95;191;;; -46147;1;0;false;false;;;;;; -46148;7;0;false;false;63;95;191;;; -46155;1;0;false;false;;;;;; -46156;5;0;false;false;63;95;191;;; -46161;1;0;false;false;;;;;; -46162;2;0;false;false;63;95;191;;; -46164;1;0;false;false;;;;;; -46165;3;0;false;false;63;95;191;;; -46168;1;0;false;false;;;;;; -46169;2;0;false;false;63;95;191;;; -46171;1;0;false;false;;;;;; -46172;1;0;false;false;63;95;191;;; -46173;1;0;false;false;;;;;; -46174;2;0;false;false;63;95;191;;; -46176;1;0;false;false;;;;;; -46177;3;0;false;false;63;95;191;;; -46180;5;0;false;false;;;;;; -46185;1;0;false;false;63;95;191;;; -46186;2;0;false;false;;;;;; -46188;6;0;false;false;63;95;191;;; -46194;1;0;false;false;;;;;; -46195;4;0;false;false;63;95;191;;; -46199;1;0;false;false;;;;;; -46200;2;0;false;false;63;95;191;;; -46202;1;0;false;false;;;;;; -46203;5;0;false;false;63;95;191;;; -46208;1;0;false;false;;;;;; -46209;6;0;false;false;63;95;191;;; -46215;4;0;false;false;;;;;; -46219;2;0;false;false;63;95;191;;; -46221;3;0;false;false;;;;;; -46224;6;1;false;false;127;0;85;;; -46230;1;0;false;false;;;;;; -46231;4;1;false;false;127;0;85;;; -46235;1;0;false;false;;;;;; -46236;12;0;false;false;0;0;0;;; -46248;3;1;false;false;127;0;85;;; -46251;1;0;false;false;;;;;; -46252;10;0;false;false;0;0;0;;; -46262;1;0;false;false;;;;;; -46263;3;1;false;false;127;0;85;;; -46266;1;0;false;false;;;;;; -46267;10;0;false;false;0;0;0;;; -46277;1;0;false;false;;;;;; -46278;7;1;false;false;127;0;85;;; -46285;1;0;false;false;;;;;; -46286;18;0;false;false;0;0;0;;; -46304;1;0;false;false;;;;;; -46305;1;0;false;false;0;0;0;;; -46306;4;0;false;false;;;;;; -46310;16;0;false;false;0;0;0;;; -46326;1;0;false;false;;;;;; -46327;10;0;false;false;0;0;0;;; -46337;1;0;false;false;;;;;; -46338;19;0;false;false;0;0;0;;; -46357;3;0;false;false;;;;;; -46360;1;0;false;false;0;0;0;;; -46361;3;0;false;false;;;;;; -46364;3;0;false;false;63;95;191;;; -46367;4;0;false;false;;;;;; -46371;1;0;false;false;63;95;191;;; -46372;1;0;false;false;;;;;; -46373;6;0;false;false;63;95;191;;; -46379;1;0;false;false;;;;;; -46380;3;0;false;false;63;95;191;;; -46383;1;0;false;false;;;;;; -46384;4;0;false;false;63;95;191;;; -46388;1;0;false;false;;;;;; -46389;5;0;false;false;63;95;191;;; -46394;1;0;false;false;;;;;; -46395;2;0;false;false;63;95;191;;; -46397;1;0;false;false;;;;;; -46398;3;0;false;false;63;95;191;;; -46401;1;0;false;false;;;;;; -46402;5;0;false;false;63;95;191;;; -46407;1;0;false;false;;;;;; -46408;2;0;false;false;63;95;191;;; -46410;1;0;false;false;;;;;; -46411;3;0;false;false;63;95;191;;; -46414;1;0;false;false;;;;;; -46415;9;0;false;false;63;95;191;;; -46424;1;0;false;false;;;;;; -46425;6;0;false;false;63;95;191;;; -46431;4;0;false;false;;;;;; -46435;1;0;false;false;63;95;191;;; -46436;1;0;false;false;;;;;; -46437;3;0;false;false;127;127;159;;; -46440;4;0;false;false;;;;;; -46444;1;0;false;false;63;95;191;;; -46445;4;0;false;false;;;;;; -46449;1;0;false;false;63;95;191;;; -46450;1;0;false;false;;;;;; -46451;7;1;false;false;127;159;191;;; -46458;9;0;false;false;63;95;191;;; -46467;1;0;false;false;;;;;; -46468;3;0;false;false;63;95;191;;; -46471;1;0;false;false;;;;;; -46472;5;0;false;false;63;95;191;;; -46477;1;0;false;false;;;;;; -46478;4;0;false;false;63;95;191;;; -46482;1;0;false;false;;;;;; -46483;2;0;false;false;63;95;191;;; -46485;1;0;false;false;;;;;; -46486;5;0;false;false;63;95;191;;; -46491;4;0;false;false;;;;;; -46495;1;0;false;false;63;95;191;;; -46496;1;0;false;false;;;;;; -46497;7;1;false;false;127;159;191;;; -46504;9;0;false;false;63;95;191;;; -46513;1;0;false;false;;;;;; -46514;3;0;false;false;63;95;191;;; -46517;1;0;false;false;;;;;; -46518;6;0;false;false;63;95;191;;; -46524;1;0;false;false;;;;;; -46525;2;0;false;false;63;95;191;;; -46527;1;0;false;false;;;;;; -46528;5;0;false;false;63;95;191;;; -46533;1;0;false;false;;;;;; -46534;2;0;false;false;63;95;191;;; -46536;1;0;false;false;;;;;; -46537;5;0;false;false;63;95;191;;; -46542;4;0;false;false;;;;;; -46546;1;0;false;false;63;95;191;;; -46547;1;0;false;false;;;;;; -46548;7;1;false;false;127;159;191;;; -46555;17;0;false;false;63;95;191;;; -46572;1;0;false;false;;;;;; -46573;7;0;false;false;63;95;191;;; -46580;1;0;false;false;;;;;; -46581;3;0;false;false;63;95;191;;; -46584;1;0;false;false;;;;;; -46585;6;0;false;false;63;95;191;;; -46591;1;0;false;false;;;;;; -46592;4;0;false;false;63;95;191;;; -46596;1;0;false;false;;;;;; -46597;2;0;false;false;63;95;191;;; -46599;1;0;false;false;;;;;; -46600;5;0;false;false;63;95;191;;; -46605;5;0;false;false;;;;;; -46610;1;0;false;false;63;95;191;;; -46611;2;0;false;false;;;;;; -46613;5;0;false;false;63;95;191;;; -46618;1;0;false;false;;;;;; -46619;3;0;false;false;63;95;191;;; -46622;1;0;false;false;;;;;; -46623;7;0;false;false;63;95;191;;; -46630;1;0;false;false;;;;;; -46631;5;0;false;false;63;95;191;;; -46636;1;0;false;false;;;;;; -46637;2;0;false;false;63;95;191;;; -46639;1;0;false;false;;;;;; -46640;3;0;false;false;63;95;191;;; -46643;1;0;false;false;;;;;; -46644;9;0;false;false;63;95;191;;; -46653;1;0;false;false;;;;;; -46654;6;0;false;false;63;95;191;;; -46660;1;0;false;false;;;;;; -46661;5;0;false;false;63;95;191;;; -46666;1;0;false;false;;;;;; -46667;2;0;false;false;63;95;191;;; -46669;5;0;false;false;;;;;; -46674;1;0;false;false;63;95;191;;; -46675;2;0;false;false;;;;;; -46677;11;0;false;false;63;95;191;;; -46688;1;0;false;false;;;;;; -46689;9;0;false;false;63;95;191;;; -46698;1;0;false;false;;;;;; -46699;7;0;false;false;63;95;191;;; -46706;1;0;false;false;;;;;; -46707;5;0;false;false;63;95;191;;; -46712;1;0;false;false;;;;;; -46713;2;0;false;false;63;95;191;;; -46715;1;0;false;false;;;;;; -46716;3;0;false;false;63;95;191;;; -46719;1;0;false;false;;;;;; -46720;2;0;false;false;63;95;191;;; -46722;1;0;false;false;;;;;; -46723;1;0;false;false;63;95;191;;; -46724;1;0;false;false;;;;;; -46725;2;0;false;false;63;95;191;;; -46727;1;0;false;false;;;;;; -46728;3;0;false;false;63;95;191;;; -46731;5;0;false;false;;;;;; -46736;1;0;false;false;63;95;191;;; -46737;2;0;false;false;;;;;; -46739;6;0;false;false;63;95;191;;; -46745;1;0;false;false;;;;;; -46746;4;0;false;false;63;95;191;;; -46750;1;0;false;false;;;;;; -46751;2;0;false;false;63;95;191;;; -46753;1;0;false;false;;;;;; -46754;5;0;false;false;63;95;191;;; -46759;1;0;false;false;;;;;; -46760;6;0;false;false;63;95;191;;; -46766;4;0;false;false;;;;;; -46770;2;0;false;false;63;95;191;;; -46772;3;0;false;false;;;;;; -46775;6;1;false;false;127;0;85;;; -46781;1;0;false;false;;;;;; -46782;4;1;false;false;127;0;85;;; -46786;1;0;false;false;;;;;; -46787;6;0;false;false;0;0;0;;; -46793;3;1;false;false;127;0;85;;; -46796;1;0;false;false;;;;;; -46797;10;0;false;false;0;0;0;;; -46807;1;0;false;false;;;;;; -46808;3;1;false;false;127;0;85;;; -46811;1;0;false;false;;;;;; -46812;10;0;false;false;0;0;0;;; -46822;1;0;false;false;;;;;; -46823;7;1;false;false;127;0;85;;; -46830;1;0;false;false;;;;;; -46831;18;0;false;false;0;0;0;;; -46849;1;0;false;false;;;;;; -46850;1;0;false;false;0;0;0;;; -46851;4;0;false;false;;;;;; -46855;3;1;false;false;127;0;85;;; -46858;1;0;false;false;;;;;; -46859;7;0;false;false;0;0;0;;; -46866;1;0;false;false;;;;;; -46867;1;0;false;false;0;0;0;;; -46868;1;0;false;false;;;;;; -46869;9;0;false;false;0;0;0;;; -46878;1;0;false;false;;;;;; -46879;1;0;false;false;0;0;0;;; -46880;1;0;false;false;;;;;; -46881;10;0;false;false;0;0;0;;; -46891;8;0;false;false;;;;;; -46899;2;1;false;false;127;0;85;;; -46901;1;0;false;false;;;;;; -46902;10;0;false;false;0;0;0;;; -46912;1;0;false;false;;;;;; -46913;1;0;false;false;0;0;0;;; -46914;1;0;false;false;;;;;; -46915;1;0;false;false;0;0;0;;; -46916;1;0;false;false;;;;;; -46917;2;0;false;false;0;0;0;;; -46919;1;0;false;false;;;;;; -46920;7;0;false;false;0;0;0;;; -46927;1;0;false;false;;;;;; -46928;1;0;false;false;0;0;0;;; -46929;1;0;false;false;;;;;; -46930;17;0;false;false;0;0;0;;; -46947;1;0;false;false;;;;;; -46948;1;0;false;false;0;0;0;;; -46949;5;0;false;false;;;;;; -46954;6;1;false;false;127;0;85;;; -46960;1;0;false;false;0;0;0;;; -46961;4;0;false;false;;;;;; -46965;1;0;false;false;0;0;0;;; -46966;4;0;false;false;;;;;; -46970;3;1;false;false;127;0;85;;; -46973;1;0;false;false;;;;;; -46974;1;0;false;false;0;0;0;;; -46975;3;1;false;false;127;0;85;;; -46978;1;0;false;false;;;;;; -46979;1;0;false;false;0;0;0;;; -46980;1;0;false;false;;;;;; -46981;1;0;false;false;0;0;0;;; -46982;1;0;false;false;;;;;; -46983;10;0;false;false;0;0;0;;; -46993;1;0;false;false;;;;;; -46994;1;0;false;false;0;0;0;;; -46995;1;0;false;false;;;;;; -46996;1;0;false;false;0;0;0;;; -46997;1;0;false;false;;;;;; -46998;8;0;false;false;0;0;0;;; -47006;1;0;false;false;;;;;; -47007;4;0;false;false;0;0;0;;; -47011;1;0;false;false;;;;;; -47012;1;0;false;false;0;0;0;;; -47013;5;0;false;false;;;;;; -47018;12;0;false;false;0;0;0;;; -47030;1;0;false;false;;;;;; -47031;1;0;false;false;0;0;0;;; -47032;1;0;false;false;;;;;; -47033;3;0;false;false;0;0;0;;; -47036;4;0;false;false;;;;;; -47040;1;0;false;false;0;0;0;;; -47041;6;0;false;false;;;;;; -47047;69;0;false;false;63;127;95;;; -47116;2;0;false;false;;;;;; -47118;29;0;false;false;63;127;95;;; -47147;2;0;false;false;;;;;; -47149;2;1;false;false;127;0;85;;; -47151;1;0;false;false;;;;;; -47152;18;0;false;false;0;0;0;;; -47170;1;0;false;false;;;;;; -47171;2;0;false;false;0;0;0;;; -47173;1;0;false;false;;;;;; -47174;9;0;false;false;0;0;0;;; -47183;1;0;false;false;;;;;; -47184;2;0;false;false;0;0;0;;; -47186;1;0;false;false;;;;;; -47187;17;0;false;false;0;0;0;;; -47204;1;0;false;false;;;;;; -47205;1;0;false;false;0;0;0;;; -47206;1;0;false;false;;;;;; -47207;8;0;false;false;0;0;0;;; -47215;1;0;false;false;;;;;; -47216;1;0;false;false;0;0;0;;; -47217;5;0;false;false;;;;;; -47222;8;0;false;false;0;0;0;;; -47230;1;0;false;false;;;;;; -47231;1;0;false;false;0;0;0;;; -47232;1;0;false;false;;;;;; -47233;2;0;false;false;0;0;0;;; -47235;5;0;false;false;;;;;; -47240;17;0;false;false;0;0;0;;; -47257;1;0;false;false;;;;;; -47258;1;0;false;false;0;0;0;;; -47259;1;0;false;false;;;;;; -47260;3;0;false;false;0;0;0;;; -47263;5;0;false;false;;;;;; -47268;2;1;false;false;127;0;85;;; -47270;1;0;false;false;;;;;; -47271;19;0;false;false;0;0;0;;; -47290;1;0;false;false;;;;;; -47291;1;0;false;false;0;0;0;;; -47292;6;0;false;false;;;;;; -47298;3;1;false;false;127;0;85;;; -47301;1;0;false;false;;;;;; -47302;1;0;false;false;0;0;0;;; -47303;3;1;false;false;127;0;85;;; -47306;1;0;false;false;;;;;; -47307;1;0;false;false;0;0;0;;; -47308;1;0;false;false;;;;;; -47309;1;0;false;false;0;0;0;;; -47310;1;0;false;false;;;;;; -47311;2;0;false;false;0;0;0;;; -47313;1;0;false;false;;;;;; -47314;1;0;false;false;0;0;0;;; -47315;1;0;false;false;;;;;; -47316;1;0;false;false;0;0;0;;; -47317;1;0;false;false;;;;;; -47318;10;0;false;false;0;0;0;;; -47328;1;0;false;false;;;;;; -47329;4;0;false;false;0;0;0;;; -47333;1;0;false;false;;;;;; -47334;1;0;false;false;0;0;0;;; -47335;7;0;false;false;;;;;; -47342;2;1;false;false;127;0;85;;; -47344;1;0;false;false;;;;;; -47345;13;0;false;false;0;0;0;;; -47358;1;0;false;false;;;;;; -47359;1;0;false;false;0;0;0;;; -47360;1;0;false;false;;;;;; -47361;9;0;false;false;0;0;0;;; -47370;1;0;false;false;;;;;; -47371;1;0;false;false;0;0;0;;; -47372;8;0;false;false;;;;;; -47380;8;0;false;false;0;0;0;;; -47388;1;0;false;false;;;;;; -47389;1;0;false;false;0;0;0;;; -47390;1;0;false;false;;;;;; -47391;13;0;false;false;0;0;0;;; -47404;8;0;false;false;;;;;; -47412;17;0;false;false;0;0;0;;; -47429;1;0;false;false;;;;;; -47430;1;0;false;false;0;0;0;;; -47431;1;0;false;false;;;;;; -47432;2;0;false;false;0;0;0;;; -47434;7;0;false;false;;;;;; -47441;1;0;false;false;0;0;0;;; -47442;6;0;false;false;;;;;; -47448;1;0;false;false;0;0;0;;; -47449;8;0;false;false;;;;;; -47457;1;0;false;false;0;0;0;;; -47458;4;0;false;false;;;;;; -47462;1;0;false;false;0;0;0;;; -47463;3;0;false;false;;;;;; -47466;1;0;false;false;0;0;0;;; -47467;3;0;false;false;;;;;; -47470;3;0;false;false;63;95;191;;; -47473;5;0;false;false;;;;;; -47478;1;0;false;false;63;95;191;;; -47479;1;0;false;false;;;;;; -47480;7;0;false;false;63;95;191;;; -47487;1;0;false;false;;;;;; -47488;3;0;false;false;63;95;191;;; -47491;1;0;false;false;;;;;; -47492;4;0;false;false;63;95;191;;; -47496;1;0;false;false;;;;;; -47497;5;0;false;false;63;95;191;;; -47502;1;0;false;false;;;;;; -47503;5;0;false;false;63;95;191;;; -47508;1;0;false;false;;;;;; -47509;2;0;false;false;63;95;191;;; -47511;1;0;false;false;;;;;; -47512;7;0;false;false;63;95;191;;; -47519;1;0;false;false;;;;;; -47520;1;0;false;false;63;95;191;;; -47521;1;0;false;false;;;;;; -47522;4;0;false;false;63;95;191;;; -47526;1;0;false;false;;;;;; -47527;7;0;false;false;63;95;191;;; -47534;4;0;false;false;;;;;; -47538;1;0;false;false;63;95;191;;; -47539;1;0;false;false;;;;;; -47540;5;0;false;false;63;95;191;;; -47545;1;0;false;false;;;;;; -47546;8;0;false;false;63;95;191;;; -47554;1;0;false;false;;;;;; -47555;2;0;false;false;63;95;191;;; -47557;1;0;false;false;;;;;; -47558;3;0;false;false;63;95;191;;; -47561;1;0;false;false;;;;;; -47562;4;0;false;false;63;95;191;;; -47566;1;0;false;false;;;;;; -47567;6;0;false;false;63;95;191;;; -47573;1;0;false;false;;;;;; -47574;4;0;false;false;63;95;191;;; -47578;1;0;false;false;;;;;; -47579;2;0;false;false;63;95;191;;; -47581;1;0;false;false;;;;;; -47582;6;0;false;false;63;95;191;;; -47588;4;0;false;false;;;;;; -47592;1;0;false;false;63;95;191;;; -47593;1;0;false;false;;;;;; -47594;3;0;false;false;127;127;159;;; -47597;4;0;false;false;;;;;; -47601;1;0;false;false;63;95;191;;; -47602;4;0;false;false;;;;;; -47606;1;0;false;false;63;95;191;;; -47607;1;0;false;false;;;;;; -47608;7;1;false;false;127;159;191;;; -47615;11;0;false;false;63;95;191;;; -47626;1;0;false;false;;;;;; -47627;3;0;false;false;63;95;191;;; -47630;1;0;false;false;;;;;; -47631;5;0;false;false;63;95;191;;; -47636;1;0;false;false;;;;;; -47637;6;0;false;false;63;95;191;;; -47643;1;0;false;false;;;;;; -47644;2;0;false;false;63;95;191;;; -47646;1;0;false;false;;;;;; -47647;3;0;false;false;63;95;191;;; -47650;1;0;false;false;;;;;; -47651;4;0;false;false;63;95;191;;; -47655;1;0;false;false;;;;;; -47656;6;0;false;false;63;95;191;;; -47662;4;0;false;false;;;;;; -47666;1;0;false;false;63;95;191;;; -47667;1;0;false;false;;;;;; -47668;7;1;false;false;127;159;191;;; -47675;12;0;false;false;63;95;191;;; -47687;1;0;false;false;;;;;; -47688;3;0;false;false;63;95;191;;; -47691;1;0;false;false;;;;;; -47692;6;0;false;false;63;95;191;;; -47698;1;0;false;false;;;;;; -47699;2;0;false;false;63;95;191;;; -47701;1;0;false;false;;;;;; -47702;8;0;false;false;63;95;191;;; -47710;1;0;false;false;;;;;; -47711;5;0;false;false;63;95;191;;; -47716;4;0;false;false;;;;;; -47720;1;0;false;false;63;95;191;;; -47721;1;0;false;false;;;;;; -47722;7;1;false;false;127;159;191;;; -47729;16;0;false;false;63;95;191;;; -47745;1;0;false;false;;;;;; -47746;3;0;false;false;63;95;191;;; -47749;1;0;false;false;;;;;; -47750;6;0;false;false;63;95;191;;; -47756;1;0;false;false;;;;;; -47757;2;0;false;false;63;95;191;;; -47759;1;0;false;false;;;;;; -47760;7;0;false;false;63;95;191;;; -47767;1;0;false;false;;;;;; -47768;5;0;false;false;63;95;191;;; -47773;4;0;false;false;;;;;; -47777;1;0;false;false;63;95;191;;; -47778;1;0;false;false;;;;;; -47779;7;1;false;false;127;159;191;;; -47786;12;0;false;false;63;95;191;;; -47798;1;0;false;false;;;;;; -47799;3;0;false;false;63;95;191;;; -47802;1;0;false;false;;;;;; -47803;6;0;false;false;63;95;191;;; -47809;1;0;false;false;;;;;; -47810;2;0;false;false;63;95;191;;; -47812;1;0;false;false;;;;;; -47813;3;0;false;false;63;95;191;;; -47816;1;0;false;false;;;;;; -47817;10;0;false;false;63;95;191;;; -47827;4;0;false;false;;;;;; -47831;1;0;false;false;63;95;191;;; -47832;1;0;false;false;;;;;; -47833;7;1;false;false;127;159;191;;; -47840;16;0;false;false;63;95;191;;; -47856;1;0;false;false;;;;;; -47857;3;0;false;false;63;95;191;;; -47860;1;0;false;false;;;;;; -47861;6;0;false;false;63;95;191;;; -47867;1;0;false;false;;;;;; -47868;2;0;false;false;63;95;191;;; -47870;1;0;false;false;;;;;; -47871;7;0;false;false;63;95;191;;; -47878;1;0;false;false;;;;;; -47879;10;0;false;false;63;95;191;;; -47889;4;0;false;false;;;;;; -47893;2;0;false;false;63;95;191;;; -47895;5;0;false;false;;;;;; -47900;6;1;false;false;127;0;85;;; -47906;1;0;false;false;;;;;; -47907;4;1;false;false;127;0;85;;; -47911;1;0;false;false;;;;;; -47912;12;0;false;false;0;0;0;;; -47924;3;1;false;false;127;0;85;;; -47927;1;0;false;false;;;;;; -47928;12;0;false;false;0;0;0;;; -47940;1;0;false;false;;;;;; -47941;3;1;false;false;127;0;85;;; -47944;1;0;false;false;;;;;; -47945;13;0;false;false;0;0;0;;; -47958;1;0;false;false;;;;;; -47959;3;1;false;false;127;0;85;;; -47962;1;0;false;false;;;;;; -47963;17;0;false;false;0;0;0;;; -47980;1;0;false;false;;;;;; -47981;3;1;false;false;127;0;85;;; -47984;1;0;false;false;;;;;; -47985;13;0;false;false;0;0;0;;; -47998;1;0;false;false;;;;;; -47999;3;1;false;false;127;0;85;;; -48002;1;0;false;false;;;;;; -48003;17;0;false;false;0;0;0;;; -48020;1;0;false;false;;;;;; -48021;1;0;false;false;0;0;0;;; -48022;4;0;false;false;;;;;; -48026;3;1;false;false;127;0;85;;; -48029;1;0;false;false;;;;;; -48030;9;0;false;false;0;0;0;;; -48039;1;0;false;false;;;;;; -48040;1;0;false;false;0;0;0;;; -48041;1;0;false;false;;;;;; -48042;36;0;false;false;0;0;0;;; -48078;4;0;false;false;;;;;; -48082;7;1;false;false;127;0;85;;; -48089;1;0;false;false;;;;;; -48090;14;0;false;false;0;0;0;;; -48104;1;0;false;false;;;;;; -48105;1;0;false;false;0;0;0;;; -48106;1;0;false;false;;;;;; -48107;18;0;false;false;0;0;0;;; -48125;1;0;false;false;;;;;; -48126;1;0;false;false;0;0;0;;; -48127;1;0;false;false;;;;;; -48128;9;0;false;false;0;0;0;;; -48137;1;0;false;false;;;;;; -48138;2;0;false;false;0;0;0;;; -48140;1;0;false;false;;;;;; -48141;17;0;false;false;0;0;0;;; -48158;1;0;false;false;;;;;; -48159;2;0;false;false;0;0;0;;; -48161;1;0;false;false;;;;;; -48162;9;0;false;false;0;0;0;;; -48171;1;0;false;false;;;;;; -48172;1;0;false;false;0;0;0;;; -48173;1;0;false;false;;;;;; -48174;18;0;false;false;0;0;0;;; -48192;4;0;false;false;;;;;; -48196;25;0;false;false;63;127;95;;; -48221;2;0;false;false;;;;;; -48223;2;1;false;false;127;0;85;;; -48225;1;0;false;false;;;;;; -48226;10;0;false;false;0;0;0;;; -48236;1;0;false;false;;;;;; -48237;2;0;false;false;0;0;0;;; -48239;1;0;false;false;;;;;; -48240;1;0;false;false;0;0;0;;; -48241;1;0;false;false;;;;;; -48242;2;0;false;false;0;0;0;;; -48244;1;0;false;false;;;;;; -48245;16;0;false;false;0;0;0;;; -48261;1;0;false;false;;;;;; -48262;2;0;false;false;0;0;0;;; -48264;1;0;false;false;;;;;; -48265;10;0;false;false;0;0;0;;; -48275;1;0;false;false;;;;;; -48276;1;0;false;false;0;0;0;;; -48277;5;0;false;false;;;;;; -48282;9;0;false;false;0;0;0;;; -48291;1;0;false;false;;;;;; -48292;1;0;false;false;0;0;0;;; -48293;1;0;false;false;;;;;; -48294;13;0;false;false;0;0;0;;; -48307;5;0;false;false;;;;;; -48312;9;0;false;false;0;0;0;;; -48321;1;0;false;false;;;;;; -48322;1;0;false;false;0;0;0;;; -48323;1;0;false;false;;;;;; -48324;3;1;false;false;127;0;85;;; -48327;1;0;false;false;;;;;; -48328;3;1;false;false;127;0;85;;; -48331;12;0;false;false;0;0;0;;; -48343;5;0;false;false;;;;;; -48348;8;0;false;false;0;0;0;;; -48356;1;0;false;false;;;;;; -48357;10;0;false;false;0;0;0;;; -48367;1;0;false;false;;;;;; -48368;5;1;false;false;127;0;85;;; -48373;2;0;false;false;0;0;0;;; -48375;5;0;false;false;;;;;; -48380;8;0;false;false;0;0;0;;; -48388;1;0;false;false;;;;;; -48389;1;0;false;false;0;0;0;;; -48390;1;0;false;false;;;;;; -48391;2;0;false;false;0;0;0;;; -48393;4;0;false;false;;;;;; -48397;1;0;false;false;0;0;0;;; -48398;4;0;false;false;;;;;; -48402;4;1;false;false;127;0;85;;; -48406;1;0;false;false;;;;;; -48407;1;0;false;false;0;0;0;;; -48408;5;0;false;false;;;;;; -48413;23;0;false;false;0;0;0;;; -48436;1;0;false;false;;;;;; -48437;19;0;false;false;0;0;0;;; -48456;5;0;false;false;;;;;; -48461;23;0;false;false;0;0;0;;; -48484;1;0;false;false;;;;;; -48485;14;0;false;false;0;0;0;;; -48499;5;0;false;false;;;;;; -48504;20;0;false;false;0;0;0;;; -48524;1;0;false;false;;;;;; -48525;1;0;false;false;0;0;0;;; -48526;1;0;false;false;;;;;; -48527;3;0;false;false;0;0;0;;; -48530;4;0;false;false;;;;;; -48534;1;0;false;false;0;0;0;;; -48535;4;0;false;false;;;;;; -48539;79;0;false;false;63;127;95;;; -48618;2;0;false;false;;;;;; -48620;72;0;false;false;63;127;95;;; -48692;2;0;false;false;;;;;; -48694;30;0;false;false;63;127;95;;; -48724;2;0;false;false;;;;;; -48726;27;0;false;false;0;0;0;;; -48753;1;0;false;false;;;;;; -48754;14;0;false;false;0;0;0;;; -48768;4;0;false;false;;;;;; -48772;79;0;false;false;63;127;95;;; -48851;2;0;false;false;;;;;; -48853;71;0;false;false;63;127;95;;; -48924;2;0;false;false;;;;;; -48926;22;0;false;false;63;127;95;;; -48948;2;0;false;false;;;;;; -48950;2;1;false;false;127;0;85;;; -48952;1;0;false;false;;;;;; -48953;15;0;false;false;0;0;0;;; -48968;1;0;false;false;;;;;; -48969;2;0;false;false;0;0;0;;; -48971;6;0;false;false;;;;;; -48977;18;0;false;false;0;0;0;;; -48995;1;0;false;false;;;;;; -48996;2;0;false;false;0;0;0;;; -48998;1;0;false;false;;;;;; -48999;2;0;false;false;0;0;0;;; -49001;1;0;false;false;;;;;; -49002;2;0;false;false;0;0;0;;; -49004;1;0;false;false;;;;;; -49005;28;0;false;false;0;0;0;;; -49033;1;0;false;false;;;;;; -49034;1;0;false;false;0;0;0;;; -49035;1;0;false;false;;;;;; -49036;10;0;false;false;0;0;0;;; -49046;1;0;false;false;;;;;; -49047;1;0;false;false;0;0;0;;; -49048;5;0;false;false;;;;;; -49053;65;0;false;false;63;127;95;;; -49118;3;0;false;false;;;;;; -49121;60;0;false;false;63;127;95;;; -49181;3;0;false;false;;;;;; -49184;8;0;false;false;0;0;0;;; -49192;1;0;false;false;;;;;; -49193;1;0;false;false;0;0;0;;; -49194;1;0;false;false;;;;;; -49195;2;0;false;false;0;0;0;;; -49197;5;0;false;false;;;;;; -49202;3;1;false;false;127;0;85;;; -49205;1;0;false;false;;;;;; -49206;1;0;false;false;0;0;0;;; -49207;3;1;false;false;127;0;85;;; -49210;1;0;false;false;;;;;; -49211;1;0;false;false;0;0;0;;; -49212;1;0;false;false;;;;;; -49213;1;0;false;false;0;0;0;;; -49214;1;0;false;false;;;;;; -49215;2;0;false;false;0;0;0;;; -49217;1;0;false;false;;;;;; -49218;1;0;false;false;0;0;0;;; -49219;1;0;false;false;;;;;; -49220;1;0;false;false;0;0;0;;; -49221;1;0;false;false;;;;;; -49222;10;0;false;false;0;0;0;;; -49232;1;0;false;false;;;;;; -49233;4;0;false;false;0;0;0;;; -49237;1;0;false;false;;;;;; -49238;1;0;false;false;0;0;0;;; -49239;6;0;false;false;;;;;; -49245;2;1;false;false;127;0;85;;; -49247;1;0;false;false;;;;;; -49248;13;0;false;false;0;0;0;;; -49261;1;0;false;false;;;;;; -49262;1;0;false;false;0;0;0;;; -49263;1;0;false;false;;;;;; -49264;9;0;false;false;0;0;0;;; -49273;1;0;false;false;;;;;; -49274;1;0;false;false;0;0;0;;; -49275;7;0;false;false;;;;;; -49282;8;0;false;false;0;0;0;;; -49290;1;0;false;false;;;;;; -49291;1;0;false;false;0;0;0;;; -49292;1;0;false;false;;;;;; -49293;13;0;false;false;0;0;0;;; -49306;7;0;false;false;;;;;; -49313;17;0;false;false;0;0;0;;; -49330;1;0;false;false;;;;;; -49331;1;0;false;false;0;0;0;;; -49332;1;0;false;false;;;;;; -49333;2;0;false;false;0;0;0;;; -49335;6;0;false;false;;;;;; -49341;1;0;false;false;0;0;0;;; -49342;5;0;false;false;;;;;; -49347;1;0;false;false;0;0;0;;; -49348;7;0;false;false;;;;;; -49355;1;0;false;false;0;0;0;;; -49356;3;0;false;false;;;;;; -49359;1;0;false;false;0;0;0;;; -49360;3;0;false;false;;;;;; -49363;1;0;false;false;0;0;0;;; -49364;3;0;false;false;;;;;; -49367;3;0;false;false;63;95;191;;; -49370;4;0;false;false;;;;;; -49374;1;0;false;false;63;95;191;;; -49375;1;0;false;false;;;;;; -49376;7;0;false;false;63;95;191;;; -49383;1;0;false;false;;;;;; -49384;3;0;false;false;63;95;191;;; -49387;1;0;false;false;;;;;; -49388;4;0;false;false;63;95;191;;; -49392;1;0;false;false;;;;;; -49393;8;0;false;false;63;95;191;;; -49401;1;0;false;false;;;;;; -49402;2;0;false;false;63;95;191;;; -49404;1;0;false;false;;;;;; -49405;3;0;false;false;63;95;191;;; -49408;1;0;false;false;;;;;; -49409;8;0;false;false;63;95;191;;; -49417;4;0;false;false;;;;;; -49421;1;0;false;false;63;95;191;;; -49422;1;0;false;false;;;;;; -49423;3;0;false;false;63;95;191;;; -49426;1;0;false;false;;;;;; -49427;4;0;false;false;63;95;191;;; -49431;1;0;false;false;;;;;; -49432;8;0;false;false;63;95;191;;; -49440;1;0;false;false;;;;;; -49441;4;0;false;false;63;95;191;;; -49445;1;0;false;false;;;;;; -49446;6;0;false;false;63;95;191;;; -49452;1;0;false;false;;;;;; -49453;2;0;false;false;63;95;191;;; -49455;1;0;false;false;;;;;; -49456;2;0;false;false;63;95;191;;; -49458;1;0;false;false;;;;;; -49459;1;0;false;false;63;95;191;;; -49460;1;0;false;false;;;;;; -49461;10;0;false;false;63;95;191;;; -49471;1;0;false;false;;;;;; -49472;6;0;false;false;63;95;191;;; -49478;5;0;false;false;;;;;; -49483;1;0;false;false;63;95;191;;; -49484;1;0;false;false;;;;;; -49485;10;0;false;false;63;95;191;;; -49495;1;0;false;false;;;;;; -49496;4;0;false;false;63;95;191;;; -49500;1;0;false;false;;;;;; -49501;6;0;false;false;127;127;159;;; -49507;5;0;false;false;63;95;191;;; -49512;7;0;false;false;127;127;159;;; -49519;1;0;false;false;;;;;; -49520;2;0;false;false;63;95;191;;; -49522;1;0;false;false;;;;;; -49523;6;0;false;false;127;127;159;;; -49529;11;0;false;false;63;95;191;;; -49540;7;0;false;false;127;127;159;;; -49547;4;0;false;false;;;;;; -49551;1;0;false;false;63;95;191;;; -49552;1;0;false;false;;;;;; -49553;2;0;false;false;63;95;191;;; -49555;1;0;false;false;;;;;; -49556;7;0;false;false;63;95;191;;; -49563;1;0;false;false;;;;;; -49564;3;0;false;false;63;95;191;;; -49567;1;0;false;false;;;;;; -49568;4;0;false;false;63;95;191;;; -49572;1;0;false;false;;;;;; -49573;8;0;false;false;63;95;191;;; -49581;1;0;false;false;;;;;; -49582;2;0;false;false;63;95;191;;; -49584;1;0;false;false;;;;;; -49585;12;0;false;false;63;95;191;;; -49597;1;0;false;false;;;;;; -49598;11;0;false;false;63;95;191;;; -49609;5;0;false;false;;;;;; -49614;1;0;false;false;63;95;191;;; -49615;1;0;false;false;;;;;; -49616;7;0;false;false;63;95;191;;; -49623;1;0;false;false;;;;;; -49624;2;0;false;false;63;95;191;;; -49626;1;0;false;false;;;;;; -49627;2;0;false;false;63;95;191;;; -49629;1;0;false;false;;;;;; -49630;6;0;false;false;127;127;159;;; -49636;9;0;false;false;63;95;191;;; -49645;7;0;false;false;127;127;159;;; -49652;1;0;false;false;63;95;191;;; -49653;4;0;false;false;;;;;; -49657;2;0;false;false;63;95;191;;; -49659;3;0;false;false;;;;;; -49662;5;1;false;false;127;0;85;;; -49667;1;0;false;false;;;;;; -49668;13;0;false;false;0;0;0;;; -49681;1;0;false;false;;;;;; -49682;10;1;false;false;127;0;85;;; -49692;1;0;false;false;;;;;; -49693;9;0;false;false;0;0;0;;; -49702;1;0;false;false;;;;;; -49703;1;0;false;false;0;0;0;;; -49704;4;0;false;false;;;;;; -49708;10;0;false;false;0;0;0;;; -49718;1;0;false;false;;;;;; -49719;7;0;false;false;0;0;0;;; -49726;4;0;false;false;;;;;; -49730;14;0;false;false;0;0;0;;; -49744;1;0;false;false;;;;;; -49745;14;0;false;false;0;0;0;;; -49759;9;0;false;false;;;;;; -49768;3;0;false;false;63;95;191;;; -49771;5;0;false;false;;;;;; -49776;1;0;false;false;63;95;191;;; -49777;1;0;false;false;;;;;; -49778;7;0;false;false;63;95;191;;; -49785;1;0;false;false;;;;;; -49786;1;0;false;false;63;95;191;;; -49787;1;0;false;false;;;;;; -49788;3;0;false;false;63;95;191;;; -49791;1;0;false;false;;;;;; -49792;6;0;false;false;127;127;159;;; -49798;13;0;false;false;63;95;191;;; -49811;7;0;false;false;127;127;159;;; -49818;1;0;false;false;;;;;; -49819;3;0;false;false;63;95;191;;; -49822;1;0;false;false;;;;;; -49823;10;0;false;false;63;95;191;;; -49833;1;0;false;false;;;;;; -49834;2;0;false;false;63;95;191;;; -49836;1;0;false;false;;;;;; -49837;7;0;false;false;63;95;191;;; -49844;4;0;false;false;;;;;; -49848;1;0;false;false;63;95;191;;; -49849;1;0;false;false;;;;;; -49850;4;0;false;false;63;95;191;;; -49854;1;0;false;false;;;;;; -49855;9;0;false;false;63;95;191;;; -49864;4;0;false;false;;;;;; -49868;1;0;false;false;63;95;191;;; -49869;1;0;false;false;;;;;; -49870;3;0;false;false;127;127;159;;; -49873;4;0;false;false;;;;;; -49877;1;0;false;false;63;95;191;;; -49878;4;0;false;false;;;;;; -49882;1;0;false;false;63;95;191;;; -49883;1;0;false;false;;;;;; -49884;7;1;false;false;127;159;191;;; -49891;6;0;false;false;63;95;191;;; -49897;1;0;false;false;;;;;; -49898;3;0;false;false;63;95;191;;; -49901;1;0;false;false;;;;;; -49902;10;0;false;false;63;95;191;;; -49912;1;0;false;false;;;;;; -49913;6;0;false;false;63;95;191;;; -49919;1;0;false;false;;;;;; -49920;2;0;false;false;63;95;191;;; -49922;1;0;false;false;;;;;; -49923;4;0;false;false;63;95;191;;; -49927;1;0;false;false;;;;;; -49928;7;0;false;false;63;95;191;;; -49935;1;0;false;false;;;;;; -49936;3;0;false;false;63;95;191;;; -49939;4;0;false;false;;;;;; -49943;1;0;false;false;63;95;191;;; -49944;1;0;false;false;;;;;; -49945;7;1;false;false;127;159;191;;; -49952;7;0;false;false;63;95;191;;; -49959;1;0;false;false;;;;;; -49960;3;0;false;false;63;95;191;;; -49963;1;0;false;false;;;;;; -49964;7;0;false;false;63;95;191;;; -49971;1;0;false;false;;;;;; -49972;8;0;false;false;63;95;191;;; -49980;1;0;false;false;;;;;; -49981;4;0;false;false;63;95;191;;; -49985;1;0;false;false;;;;;; -49986;4;0;false;false;63;95;191;;; -49990;1;0;false;false;;;;;; -49991;3;0;false;false;63;95;191;;; -49994;1;0;false;false;;;;;; -49995;6;0;false;false;63;95;191;;; -50001;1;0;false;false;;;;;; -50002;4;0;false;false;63;95;191;;; -50006;1;0;false;false;;;;;; -50007;9;0;false;false;63;95;191;;; -50016;4;0;false;false;;;;;; -50020;2;0;false;false;63;95;191;;; -50022;3;0;false;false;;;;;; -50025;6;1;false;false;127;0;85;;; -50031;1;0;false;false;;;;;; -50032;24;0;false;false;0;0;0;;; -50056;1;0;false;false;;;;;; -50057;7;0;false;false;0;0;0;;; -50064;1;0;false;false;;;;;; -50065;14;0;false;false;0;0;0;;; -50079;1;0;false;false;;;;;; -50080;8;0;false;false;0;0;0;;; -50088;1;0;false;false;;;;;; -50089;1;0;false;false;0;0;0;;; -50090;4;0;false;false;;;;;; -50094;4;1;false;false;127;0;85;;; -50098;7;0;false;false;0;0;0;;; -50105;1;0;false;false;;;;;; -50106;1;0;false;false;0;0;0;;; -50107;1;0;false;false;;;;;; -50108;7;0;false;false;0;0;0;;; -50115;4;0;false;false;;;;;; -50119;13;0;false;false;0;0;0;;; -50132;1;0;false;false;;;;;; -50133;1;0;false;false;0;0;0;;; -50134;1;0;false;false;;;;;; -50135;8;0;false;false;0;0;0;;; -50143;4;0;false;false;;;;;; -50147;26;0;false;false;0;0;0;;; -50173;3;0;false;false;;;;;; -50176;1;0;false;false;0;0;0;;; -50177;3;0;false;false;;;;;; -50180;3;0;false;false;63;95;191;;; -50183;4;0;false;false;;;;;; -50187;1;0;false;false;63;95;191;;; -50188;1;0;false;false;;;;;; -50189;2;0;false;false;63;95;191;;; -50191;1;0;false;false;;;;;; -50192;8;0;false;false;63;95;191;;; -50200;1;0;false;false;;;;;; -50201;5;0;false;false;63;95;191;;; -50206;1;0;false;false;;;;;; -50207;3;0;false;false;63;95;191;;; -50210;1;0;false;false;;;;;; -50211;7;0;false;false;63;95;191;;; -50218;1;0;false;false;;;;;; -50219;11;0;false;false;63;95;191;;; -50230;1;0;false;false;;;;;; -50231;5;0;false;false;63;95;191;;; -50236;1;0;false;false;;;;;; -50237;6;0;false;false;63;95;191;;; -50243;4;0;false;false;;;;;; -50247;1;0;false;false;63;95;191;;; -50248;1;0;false;false;;;;;; -50249;3;0;false;false;127;127;159;;; -50252;4;0;false;false;;;;;; -50256;1;0;false;false;63;95;191;;; -50257;5;0;false;false;;;;;; -50262;1;0;false;false;63;95;191;;; -50263;1;0;false;false;;;;;; -50264;7;1;false;false;127;159;191;;; -50271;9;0;false;false;63;95;191;;; -50280;1;0;false;false;;;;;; -50281;5;0;false;false;63;95;191;;; -50286;1;0;false;false;;;;;; -50287;4;0;false;false;63;95;191;;; -50291;1;0;false;false;;;;;; -50292;2;0;false;false;63;95;191;;; -50294;1;0;false;false;;;;;; -50295;9;0;false;false;63;95;191;;; -50304;4;0;false;false;;;;;; -50308;1;0;false;false;63;95;191;;; -50309;1;0;false;false;;;;;; -50310;7;1;false;false;127;159;191;;; -50317;9;0;false;false;63;95;191;;; -50326;1;0;false;false;;;;;; -50327;6;0;false;false;63;95;191;;; -50333;1;0;false;false;;;;;; -50334;2;0;false;false;63;95;191;;; -50336;1;0;false;false;;;;;; -50337;5;0;false;false;63;95;191;;; -50342;1;0;false;false;;;;;; -50343;2;0;false;false;63;95;191;;; -50345;1;0;false;false;;;;;; -50346;9;0;false;false;63;95;191;;; -50355;4;0;false;false;;;;;; -50359;2;0;false;false;63;95;191;;; -50361;3;0;false;false;;;;;; -50364;6;1;false;false;127;0;85;;; -50370;1;0;false;false;;;;;; -50371;4;1;false;false;127;0;85;;; -50375;1;0;false;false;;;;;; -50376;10;0;false;false;0;0;0;;; -50386;3;1;false;false;127;0;85;;; -50389;1;0;false;false;;;;;; -50390;10;0;false;false;0;0;0;;; -50400;1;0;false;false;;;;;; -50401;3;1;false;false;127;0;85;;; -50404;1;0;false;false;;;;;; -50405;10;0;false;false;0;0;0;;; -50415;1;0;false;false;;;;;; -50416;1;0;false;false;0;0;0;;; -50417;3;0;false;false;;;;;; -50420;1;0;false;false;0;0;0;;; -50421;3;0;false;false;;;;;; -50424;3;0;false;false;63;95;191;;; -50427;4;0;false;false;;;;;; -50431;1;0;false;false;63;95;191;;; -50432;1;0;false;false;;;;;; -50433;7;0;false;false;63;95;191;;; -50440;1;0;false;false;;;;;; -50441;3;0;false;false;63;95;191;;; -50444;1;0;false;false;;;;;; -50445;6;0;false;false;63;95;191;;; -50451;1;0;false;false;;;;;; -50452;4;0;false;false;63;95;191;;; -50456;1;0;false;false;;;;;; -50457;6;0;false;false;63;95;191;;; -50463;1;0;false;false;;;;;; -50464;5;0;false;false;63;95;191;;; -50469;1;0;false;false;;;;;; -50470;3;0;false;false;63;95;191;;; -50473;1;0;false;false;;;;;; -50474;7;0;false;false;63;95;191;;; -50481;1;0;false;false;;;;;; -50482;2;0;false;false;63;95;191;;; -50484;1;0;false;false;;;;;; -50485;5;0;false;false;63;95;191;;; -50490;4;0;false;false;;;;;; -50494;1;0;false;false;63;95;191;;; -50495;1;0;false;false;;;;;; -50496;2;0;false;false;63;95;191;;; -50498;1;0;false;false;;;;;; -50499;2;0;false;false;63;95;191;;; -50501;1;0;false;false;;;;;; -50502;10;0;false;false;63;95;191;;; -50512;1;0;false;false;;;;;; -50513;6;0;false;false;63;95;191;;; -50519;1;0;false;false;;;;;; -50520;4;0;false;false;63;95;191;;; -50524;4;0;false;false;;;;;; -50528;1;0;false;false;63;95;191;;; -50529;1;0;false;false;;;;;; -50530;3;0;false;false;127;127;159;;; -50533;4;0;false;false;;;;;; -50537;1;0;false;false;63;95;191;;; -50538;4;0;false;false;;;;;; -50542;1;0;false;false;63;95;191;;; -50543;1;0;false;false;;;;;; -50544;8;1;false;false;127;159;191;;; -50552;3;0;false;false;63;95;191;;; -50555;1;0;false;false;;;;;; -50556;4;0;false;false;63;95;191;;; -50560;1;0;false;false;;;;;; -50561;5;0;false;false;63;95;191;;; -50566;4;0;false;false;;;;;; -50570;2;0;false;false;63;95;191;;; -50572;3;0;false;false;;;;;; -50575;6;1;false;false;127;0;85;;; -50581;1;0;false;false;;;;;; -50582;3;1;false;false;127;0;85;;; -50585;1;0;false;false;;;;;; -50586;10;0;false;false;0;0;0;;; -50596;1;0;false;false;;;;;; -50597;1;0;false;false;0;0;0;;; -50598;4;0;false;false;;;;;; -50602;6;1;false;false;127;0;85;;; -50608;1;0;false;false;;;;;; -50609;29;0;false;false;0;0;0;;; -50638;3;0;false;false;;;;;; -50641;1;0;false;false;0;0;0;;; -50642;3;0;false;false;;;;;; -50645;3;0;false;false;63;95;191;;; -50648;4;0;false;false;;;;;; -50652;1;0;false;false;63;95;191;;; -50653;1;0;false;false;;;;;; -50654;5;0;false;false;63;95;191;;; -50659;1;0;false;false;;;;;; -50660;3;0;false;false;63;95;191;;; -50663;1;0;false;false;;;;;; -50664;5;0;false;false;63;95;191;;; -50669;1;0;false;false;;;;;; -50670;2;0;false;false;63;95;191;;; -50672;1;0;false;false;;;;;; -50673;3;0;false;false;63;95;191;;; -50676;1;0;false;false;;;;;; -50677;9;0;false;false;63;95;191;;; -50686;1;0;false;false;;;;;; -50687;6;0;false;false;63;95;191;;; -50693;4;0;false;false;;;;;; -50697;1;0;false;false;63;95;191;;; -50698;1;0;false;false;;;;;; -50699;4;0;false;false;63;95;191;;; -50703;1;0;false;false;;;;;; -50704;6;0;false;false;63;95;191;;; -50710;1;0;false;false;;;;;; -50711;2;0;false;false;63;95;191;;; -50713;1;0;false;false;;;;;; -50714;6;0;false;false;63;95;191;;; -50720;1;0;false;false;;;;;; -50721;2;0;false;false;63;95;191;;; -50723;1;0;false;false;;;;;; -50724;6;0;false;false;127;127;159;;; -50730;19;0;false;false;63;95;191;;; -50749;7;0;false;false;127;127;159;;; -50756;1;0;false;false;63;95;191;;; -50757;4;0;false;false;;;;;; -50761;1;0;false;false;63;95;191;;; -50762;1;0;false;false;;;;;; -50763;1;0;false;false;63;95;191;;; -50764;1;0;false;false;;;;;; -50765;6;0;false;false;63;95;191;;; -50771;1;0;false;false;;;;;; -50772;2;0;false;false;63;95;191;;; -50774;1;0;false;false;;;;;; -50775;9;0;false;false;63;95;191;;; -50784;1;0;false;false;;;;;; -50785;3;0;false;false;63;95;191;;; -50788;1;0;false;false;;;;;; -50789;10;0;false;false;63;95;191;;; -50799;4;0;false;false;;;;;; -50803;1;0;false;false;63;95;191;;; -50804;1;0;false;false;;;;;; -50805;3;0;false;false;127;127;159;;; -50808;4;0;false;false;;;;;; -50812;1;0;false;false;63;95;191;;; -50813;4;0;false;false;;;;;; -50817;1;0;false;false;63;95;191;;; -50818;1;0;false;false;;;;;; -50819;7;1;false;false;127;159;191;;; -50826;9;0;false;false;63;95;191;;; -50835;1;0;false;false;;;;;; -50836;3;0;false;false;63;95;191;;; -50839;1;0;false;false;;;;;; -50840;5;0;false;false;63;95;191;;; -50845;1;0;false;false;;;;;; -50846;4;0;false;false;63;95;191;;; -50850;1;0;false;false;;;;;; -50851;2;0;false;false;63;95;191;;; -50853;1;0;false;false;;;;;; -50854;5;0;false;false;63;95;191;;; -50859;4;0;false;false;;;;;; -50863;1;0;false;false;63;95;191;;; -50864;1;0;false;false;;;;;; -50865;7;1;false;false;127;159;191;;; -50872;9;0;false;false;63;95;191;;; -50881;1;0;false;false;;;;;; -50882;3;0;false;false;63;95;191;;; -50885;1;0;false;false;;;;;; -50886;6;0;false;false;63;95;191;;; -50892;1;0;false;false;;;;;; -50893;2;0;false;false;63;95;191;;; -50895;1;0;false;false;;;;;; -50896;5;0;false;false;63;95;191;;; -50901;1;0;false;false;;;;;; -50902;2;0;false;false;63;95;191;;; -50904;1;0;false;false;;;;;; -50905;5;0;false;false;63;95;191;;; -50910;4;0;false;false;;;;;; -50914;1;0;false;false;63;95;191;;; -50915;1;0;false;false;;;;;; -50916;7;1;false;false;127;159;191;;; -50923;17;0;false;false;63;95;191;;; -50940;1;0;false;false;;;;;; -50941;17;0;false;false;63;95;191;;; -50958;1;0;false;false;;;;;; -50959;6;0;false;false;63;95;191;;; -50965;1;0;false;false;;;;;; -50966;6;0;false;false;63;95;191;;; -50972;1;0;false;false;;;;;; -50973;1;0;false;false;63;95;191;;; -50974;5;0;false;false;;;;;; -50979;1;0;false;false;63;95;191;;; -50980;2;0;false;false;;;;;; -50982;5;0;false;false;63;95;191;;; -50987;1;0;false;false;;;;;; -50988;5;0;false;false;63;95;191;;; -50993;1;0;false;false;;;;;; -50994;4;0;false;false;63;95;191;;; -50998;1;0;false;false;;;;;; -50999;2;0;false;false;63;95;191;;; -51001;1;0;false;false;;;;;; -51002;2;0;false;false;63;95;191;;; -51004;1;0;false;false;;;;;; -51005;2;0;false;false;63;95;191;;; -51007;1;0;false;false;;;;;; -51008;8;0;false;false;63;95;191;;; -51016;1;0;false;false;;;;;; -51017;2;0;false;false;63;95;191;;; -51019;1;0;false;false;;;;;; -51020;3;0;false;false;63;95;191;;; -51023;1;0;false;false;;;;;; -51024;5;0;false;false;63;95;191;;; -51029;1;0;false;false;;;;;; -51030;10;0;false;false;63;95;191;;; -51040;4;0;false;false;;;;;; -51044;1;0;false;false;63;95;191;;; -51045;2;0;false;false;;;;;; -51047;9;0;false;false;63;95;191;;; -51056;1;0;false;false;;;;;; -51057;5;0;false;false;63;95;191;;; -51062;1;0;false;false;;;;;; -51063;3;0;false;false;63;95;191;;; -51066;1;0;false;false;;;;;; -51067;2;0;false;false;63;95;191;;; -51069;1;0;false;false;;;;;; -51070;3;0;false;false;63;95;191;;; -51073;1;0;false;false;;;;;; -51074;2;0;false;false;63;95;191;;; -51076;1;0;false;false;;;;;; -51077;1;0;false;false;63;95;191;;; -51078;4;0;false;false;;;;;; -51082;2;0;false;false;63;95;191;;; -51084;3;0;false;false;;;;;; -51087;6;1;false;false;127;0;85;;; -51093;1;0;false;false;;;;;; -51094;4;1;false;false;127;0;85;;; -51098;1;0;false;false;;;;;; -51099;12;0;false;false;0;0;0;;; -51111;3;1;false;false;127;0;85;;; -51114;1;0;false;false;;;;;; -51115;10;0;false;false;0;0;0;;; -51125;1;0;false;false;;;;;; -51126;3;1;false;false;127;0;85;;; -51129;1;0;false;false;;;;;; -51130;10;0;false;false;0;0;0;;; -51140;1;0;false;false;;;;;; -51141;7;1;false;false;127;0;85;;; -51148;1;0;false;false;;;;;; -51149;18;0;false;false;0;0;0;;; -51167;1;0;false;false;;;;;; -51168;1;0;false;false;0;0;0;;; -51169;7;0;false;false;;;;;; -51176;2;1;false;false;127;0;85;;; -51178;1;0;false;false;;;;;; -51179;10;0;false;false;0;0;0;;; -51189;1;0;false;false;;;;;; -51190;2;0;false;false;0;0;0;;; -51192;1;0;false;false;;;;;; -51193;29;0;false;false;0;0;0;;; -51222;1;0;false;false;;;;;; -51223;1;0;false;false;0;0;0;;; -51224;5;0;false;false;;;;;; -51229;44;0;false;false;63;127;95;;; -51273;3;0;false;false;;;;;; -51276;26;0;false;false;0;0;0;;; -51302;7;0;false;false;;;;;; -51309;1;0;false;false;0;0;0;;; -51310;7;0;false;false;;;;;; -51317;4;1;false;false;127;0;85;;; -51321;1;0;false;false;;;;;; -51322;1;0;false;false;0;0;0;;; -51323;8;0;false;false;;;;;; -51331;30;0;false;false;0;0;0;;; -51361;1;0;false;false;;;;;; -51362;11;0;false;false;0;0;0;;; -51373;7;0;false;false;;;;;; -51380;1;0;false;false;0;0;0;;; -51381;3;0;false;false;;;;;; -51384;1;0;false;false;0;0;0;;; -51385;3;0;false;false;;;;;; -51388;3;0;false;false;63;95;191;;; -51391;4;0;false;false;;;;;; -51395;1;0;false;false;63;95;191;;; -51396;1;0;false;false;;;;;; -51397;7;0;false;false;63;95;191;;; -51404;1;0;false;false;;;;;; -51405;3;0;false;false;63;95;191;;; -51408;1;0;false;false;;;;;; -51409;5;0;false;false;63;95;191;;; -51414;1;0;false;false;;;;;; -51415;2;0;false;false;63;95;191;;; -51417;1;0;false;false;;;;;; -51418;3;0;false;false;63;95;191;;; -51421;1;0;false;false;;;;;; -51422;9;0;false;false;63;95;191;;; -51431;1;0;false;false;;;;;; -51432;5;0;false;false;63;95;191;;; -51437;1;0;false;false;;;;;; -51438;3;0;false;false;63;95;191;;; -51441;1;0;false;false;;;;;; -51442;7;0;false;false;63;95;191;;; -51449;4;0;false;false;;;;;; -51453;1;0;false;false;63;95;191;;; -51454;1;0;false;false;;;;;; -51455;3;0;false;false;63;95;191;;; -51458;1;0;false;false;;;;;; -51459;6;0;false;false;63;95;191;;; -51465;1;0;false;false;;;;;; -51466;2;0;false;false;63;95;191;;; -51468;1;0;false;false;;;;;; -51469;3;0;false;false;63;95;191;;; -51472;1;0;false;false;;;;;; -51473;4;0;false;false;63;95;191;;; -51477;1;0;false;false;;;;;; -51478;8;0;false;false;63;95;191;;; -51486;1;0;false;false;;;;;; -51487;3;0;false;false;63;95;191;;; -51490;1;0;false;false;;;;;; -51491;8;0;false;false;63;95;191;;; -51499;4;0;false;false;;;;;; -51503;1;0;false;false;63;95;191;;; -51504;1;0;false;false;;;;;; -51505;3;0;false;false;127;127;159;;; -51508;4;0;false;false;;;;;; -51512;1;0;false;false;63;95;191;;; -51513;4;0;false;false;;;;;; -51517;1;0;false;false;63;95;191;;; -51518;1;0;false;false;;;;;; -51519;7;1;false;false;127;159;191;;; -51526;9;0;false;false;63;95;191;;; -51535;1;0;false;false;;;;;; -51536;3;0;false;false;63;95;191;;; -51539;1;0;false;false;;;;;; -51540;5;0;false;false;63;95;191;;; -51545;1;0;false;false;;;;;; -51546;4;0;false;false;63;95;191;;; -51550;1;0;false;false;;;;;; -51551;2;0;false;false;63;95;191;;; -51553;1;0;false;false;;;;;; -51554;5;0;false;false;63;95;191;;; -51559;4;0;false;false;;;;;; -51563;1;0;false;false;63;95;191;;; -51564;1;0;false;false;;;;;; -51565;7;1;false;false;127;159;191;;; -51572;9;0;false;false;63;95;191;;; -51581;1;0;false;false;;;;;; -51582;3;0;false;false;63;95;191;;; -51585;1;0;false;false;;;;;; -51586;6;0;false;false;63;95;191;;; -51592;1;0;false;false;;;;;; -51593;2;0;false;false;63;95;191;;; -51595;1;0;false;false;;;;;; -51596;5;0;false;false;63;95;191;;; -51601;1;0;false;false;;;;;; -51602;2;0;false;false;63;95;191;;; -51604;1;0;false;false;;;;;; -51605;5;0;false;false;63;95;191;;; -51610;4;0;false;false;;;;;; -51614;1;0;false;false;63;95;191;;; -51615;1;0;false;false;;;;;; -51616;7;1;false;false;127;159;191;;; -51623;17;0;false;false;63;95;191;;; -51640;1;0;false;false;;;;;; -51641;17;0;false;false;63;95;191;;; -51658;1;0;false;false;;;;;; -51659;6;0;false;false;63;95;191;;; -51665;1;0;false;false;;;;;; -51666;6;0;false;false;63;95;191;;; -51672;1;0;false;false;;;;;; -51673;1;0;false;false;63;95;191;;; -51674;5;0;false;false;;;;;; -51679;1;0;false;false;63;95;191;;; -51680;2;0;false;false;;;;;; -51682;5;0;false;false;63;95;191;;; -51687;1;0;false;false;;;;;; -51688;5;0;false;false;63;95;191;;; -51693;1;0;false;false;;;;;; -51694;4;0;false;false;63;95;191;;; -51698;1;0;false;false;;;;;; -51699;2;0;false;false;63;95;191;;; -51701;1;0;false;false;;;;;; -51702;2;0;false;false;63;95;191;;; -51704;1;0;false;false;;;;;; -51705;2;0;false;false;63;95;191;;; -51707;1;0;false;false;;;;;; -51708;8;0;false;false;63;95;191;;; -51716;1;0;false;false;;;;;; -51717;2;0;false;false;63;95;191;;; -51719;1;0;false;false;;;;;; -51720;3;0;false;false;63;95;191;;; -51723;1;0;false;false;;;;;; -51724;5;0;false;false;63;95;191;;; -51729;1;0;false;false;;;;;; -51730;10;0;false;false;63;95;191;;; -51740;4;0;false;false;;;;;; -51744;1;0;false;false;63;95;191;;; -51745;2;0;false;false;;;;;; -51747;9;0;false;false;63;95;191;;; -51756;1;0;false;false;;;;;; -51757;5;0;false;false;63;95;191;;; -51762;1;0;false;false;;;;;; -51763;3;0;false;false;63;95;191;;; -51766;1;0;false;false;;;;;; -51767;2;0;false;false;63;95;191;;; -51769;1;0;false;false;;;;;; -51770;3;0;false;false;63;95;191;;; -51773;1;0;false;false;;;;;; -51774;2;0;false;false;63;95;191;;; -51776;1;0;false;false;;;;;; -51777;1;0;false;false;63;95;191;;; -51778;4;0;false;false;;;;;; -51782;2;0;false;false;63;95;191;;; -51784;3;0;false;false;;;;;; -51787;6;1;false;false;127;0;85;;; -51793;1;0;false;false;;;;;; -51794;4;1;false;false;127;0;85;;; -51798;1;0;false;false;;;;;; -51799;6;0;false;false;0;0;0;;; -51805;3;1;false;false;127;0;85;;; -51808;1;0;false;false;;;;;; -51809;10;0;false;false;0;0;0;;; -51819;1;0;false;false;;;;;; -51820;3;1;false;false;127;0;85;;; -51823;1;0;false;false;;;;;; -51824;10;0;false;false;0;0;0;;; -51834;1;0;false;false;;;;;; -51835;7;1;false;false;127;0;85;;; -51842;1;0;false;false;;;;;; -51843;18;0;false;false;0;0;0;;; -51861;1;0;false;false;;;;;; -51862;1;0;false;false;0;0;0;;; -51863;4;0;false;false;;;;;; -51867;3;1;false;false;127;0;85;;; -51870;1;0;false;false;;;;;; -51871;9;0;false;false;0;0;0;;; -51880;1;0;false;false;;;;;; -51881;1;0;false;false;0;0;0;;; -51882;1;0;false;false;;;;;; -51883;23;0;false;false;0;0;0;;; -51906;1;0;false;false;;;;;; -51907;1;0;false;false;0;0;0;;; -51908;1;0;false;false;;;;;; -51909;8;0;false;false;0;0;0;;; -51917;1;0;false;false;;;;;; -51918;1;0;false;false;0;0;0;;; -51919;1;0;false;false;;;;;; -51920;2;0;false;false;0;0;0;;; -51922;7;0;false;false;;;;;; -51929;3;1;false;false;127;0;85;;; -51932;2;0;false;false;0;0;0;;; -51934;1;0;false;false;;;;;; -51935;14;0;false;false;0;0;0;;; -51949;1;0;false;false;;;;;; -51950;1;0;false;false;0;0;0;;; -51951;1;0;false;false;;;;;; -51952;3;1;false;false;127;0;85;;; -51955;1;0;false;false;;;;;; -51956;3;1;false;false;127;0;85;;; -51959;12;0;false;false;0;0;0;;; -51971;14;0;false;false;;;;;; -51985;3;1;false;false;127;0;85;;; -51988;1;0;false;false;;;;;; -51989;1;0;false;false;0;0;0;;; -51990;3;1;false;false;127;0;85;;; -51993;1;0;false;false;;;;;; -51994;1;0;false;false;0;0;0;;; -51995;1;0;false;false;;;;;; -51996;1;0;false;false;0;0;0;;; -51997;1;0;false;false;;;;;; -51998;2;0;false;false;0;0;0;;; -52000;1;0;false;false;;;;;; -52001;1;0;false;false;0;0;0;;; -52002;1;0;false;false;;;;;; -52003;1;0;false;false;0;0;0;;; -52004;1;0;false;false;;;;;; -52005;10;0;false;false;0;0;0;;; -52015;1;0;false;false;;;;;; -52016;4;0;false;false;0;0;0;;; -52020;1;0;false;false;;;;;; -52021;1;0;false;false;0;0;0;;; -52022;8;0;false;false;;;;;; -52030;17;0;false;false;0;0;0;;; -52047;1;0;false;false;;;;;; -52048;1;0;false;false;0;0;0;;; -52049;1;0;false;false;;;;;; -52050;31;0;false;false;0;0;0;;; -52081;1;0;false;false;;;;;; -52082;1;0;false;false;0;0;0;;; -52083;1;0;false;false;;;;;; -52084;10;0;false;false;0;0;0;;; -52094;7;0;false;false;;;;;; -52101;1;0;false;false;0;0;0;;; -52102;7;0;false;false;;;;;; -52109;22;0;false;false;0;0;0;;; -52131;1;0;false;false;;;;;; -52132;10;0;false;false;0;0;0;;; -52142;1;0;false;false;;;;;; -52143;19;0;false;false;0;0;0;;; -52162;4;0;false;false;;;;;; -52166;53;0;false;false;63;127;95;;; -52219;5;0;false;false;;;;;; -52224;2;1;false;false;127;0;85;;; -52226;1;0;false;false;;;;;; -52227;24;0;false;false;0;0;0;;; -52251;1;0;false;false;;;;;; -52252;1;0;false;false;0;0;0;;; -52253;1;0;false;false;;;;;; -52254;8;0;false;false;0;0;0;;; -52262;1;0;false;false;;;;;; -52263;1;0;false;false;0;0;0;;; -52264;1;0;false;false;;;;;; -52265;1;0;false;false;0;0;0;;; -52266;1;0;false;false;;;;;; -52267;2;0;false;false;0;0;0;;; -52269;1;0;false;false;;;;;; -52270;10;0;false;false;0;0;0;;; -52280;1;0;false;false;;;;;; -52281;1;0;false;false;0;0;0;;; -52282;8;0;false;false;;;;;; -52290;40;0;false;false;63;127;95;;; -52330;6;0;false;false;;;;;; -52336;24;0;false;false;0;0;0;;; -52360;7;0;false;false;;;;;; -52367;1;0;false;false;0;0;0;;; -52368;7;0;false;false;;;;;; -52375;4;1;false;false;127;0;85;;; -52379;1;0;false;false;;;;;; -52380;1;0;false;false;0;0;0;;; -52381;8;0;false;false;;;;;; -52389;3;1;false;false;127;0;85;;; -52392;1;0;false;false;;;;;; -52393;1;0;false;false;0;0;0;;; -52394;3;1;false;false;127;0;85;;; -52397;1;0;false;false;;;;;; -52398;1;0;false;false;0;0;0;;; -52399;1;0;false;false;;;;;; -52400;1;0;false;false;0;0;0;;; -52401;1;0;false;false;;;;;; -52402;2;0;false;false;0;0;0;;; -52404;1;0;false;false;;;;;; -52405;1;0;false;false;0;0;0;;; -52406;1;0;false;false;;;;;; -52407;1;0;false;false;0;0;0;;; -52408;1;0;false;false;;;;;; -52409;10;0;false;false;0;0;0;;; -52419;1;0;false;false;;;;;; -52420;4;0;false;false;0;0;0;;; -52424;1;0;false;false;;;;;; -52425;1;0;false;false;0;0;0;;; -52426;9;0;false;false;;;;;; -52435;2;1;false;false;127;0;85;;; -52437;1;0;false;false;;;;;; -52438;32;0;false;false;0;0;0;;; -52470;1;0;false;false;;;;;; -52471;1;0;false;false;0;0;0;;; -52472;1;0;false;false;;;;;; -52473;9;0;false;false;0;0;0;;; -52482;1;0;false;false;;;;;; -52483;2;0;false;false;0;0;0;;; -52485;1;0;false;false;;;;;; -52486;18;0;false;false;0;0;0;;; -52504;1;0;false;false;;;;;; -52505;1;0;false;false;0;0;0;;; -52506;10;0;false;false;;;;;; -52516;53;0;false;false;63;127;95;;; -52569;8;0;false;false;;;;;; -52577;24;0;false;false;0;0;0;;; -52601;10;0;false;false;;;;;; -52611;5;1;false;false;127;0;85;;; -52616;1;0;false;false;0;0;0;;; -52617;9;0;false;false;;;;;; -52626;1;0;false;false;0;0;0;;; -52627;8;0;false;false;;;;;; -52635;1;0;false;false;0;0;0;;; -52636;13;0;false;false;;;;;; -52649;1;0;false;false;0;0;0;;; -52650;3;0;false;false;;;;;; -52653;1;0;false;false;0;0;0;;; -52654;3;0;false;false;;;;;; -52657;3;0;false;false;63;95;191;;; -52660;5;0;false;false;;;;;; -52665;1;0;false;false;63;95;191;;; -52666;1;0;false;false;;;;;; -52667;6;0;false;false;63;95;191;;; -52673;1;0;false;false;;;;;; -52674;3;0;false;false;63;95;191;;; -52677;1;0;false;false;;;;;; -52678;4;0;false;false;63;95;191;;; -52682;1;0;false;false;;;;;; -52683;6;0;false;false;63;95;191;;; -52689;1;0;false;false;;;;;; -52690;12;0;false;false;63;95;191;;; -52702;1;0;false;false;;;;;; -52703;2;0;false;false;63;95;191;;; -52705;1;0;false;false;;;;;; -52706;3;0;false;false;63;95;191;;; -52709;1;0;false;false;;;;;; -52710;4;0;false;false;63;95;191;;; -52714;1;0;false;false;;;;;; -52715;4;0;false;false;63;95;191;;; -52719;1;0;false;false;;;;;; -52720;8;0;false;false;63;95;191;;; -52728;4;0;false;false;;;;;; -52732;1;0;false;false;63;95;191;;; -52733;1;0;false;false;;;;;; -52734;3;0;false;false;127;127;159;;; -52737;4;0;false;false;;;;;; -52741;1;0;false;false;63;95;191;;; -52742;4;0;false;false;;;;;; -52746;1;0;false;false;63;95;191;;; -52747;1;0;false;false;;;;;; -52748;7;1;false;false;127;159;191;;; -52755;11;0;false;false;63;95;191;;; -52766;1;0;false;false;;;;;; -52767;3;0;false;false;63;95;191;;; -52770;1;0;false;false;;;;;; -52771;5;0;false;false;63;95;191;;; -52776;1;0;false;false;;;;;; -52777;6;0;false;false;63;95;191;;; -52783;1;0;false;false;;;;;; -52784;2;0;false;false;63;95;191;;; -52786;1;0;false;false;;;;;; -52787;3;0;false;false;63;95;191;;; -52790;1;0;false;false;;;;;; -52791;4;0;false;false;63;95;191;;; -52795;1;0;false;false;;;;;; -52796;6;0;false;false;63;95;191;;; -52802;4;0;false;false;;;;;; -52806;1;0;false;false;63;95;191;;; -52807;1;0;false;false;;;;;; -52808;7;1;false;false;127;159;191;;; -52815;12;0;false;false;63;95;191;;; -52827;1;0;false;false;;;;;; -52828;3;0;false;false;63;95;191;;; -52831;1;0;false;false;;;;;; -52832;6;0;false;false;63;95;191;;; -52838;1;0;false;false;;;;;; -52839;2;0;false;false;63;95;191;;; -52841;1;0;false;false;;;;;; -52842;8;0;false;false;63;95;191;;; -52850;1;0;false;false;;;;;; -52851;5;0;false;false;63;95;191;;; -52856;4;0;false;false;;;;;; -52860;1;0;false;false;63;95;191;;; -52861;1;0;false;false;;;;;; -52862;7;1;false;false;127;159;191;;; -52869;16;0;false;false;63;95;191;;; -52885;1;0;false;false;;;;;; -52886;3;0;false;false;63;95;191;;; -52889;1;0;false;false;;;;;; -52890;6;0;false;false;63;95;191;;; -52896;1;0;false;false;;;;;; -52897;2;0;false;false;63;95;191;;; -52899;1;0;false;false;;;;;; -52900;7;0;false;false;63;95;191;;; -52907;1;0;false;false;;;;;; -52908;5;0;false;false;63;95;191;;; -52913;4;0;false;false;;;;;; -52917;1;0;false;false;63;95;191;;; -52918;1;0;false;false;;;;;; -52919;7;1;false;false;127;159;191;;; -52926;12;0;false;false;63;95;191;;; -52938;1;0;false;false;;;;;; -52939;3;0;false;false;63;95;191;;; -52942;1;0;false;false;;;;;; -52943;6;0;false;false;63;95;191;;; -52949;1;0;false;false;;;;;; -52950;2;0;false;false;63;95;191;;; -52952;1;0;false;false;;;;;; -52953;3;0;false;false;63;95;191;;; -52956;1;0;false;false;;;;;; -52957;10;0;false;false;63;95;191;;; -52967;4;0;false;false;;;;;; -52971;1;0;false;false;63;95;191;;; -52972;1;0;false;false;;;;;; -52973;7;1;false;false;127;159;191;;; -52980;16;0;false;false;63;95;191;;; -52996;1;0;false;false;;;;;; -52997;3;0;false;false;63;95;191;;; -53000;1;0;false;false;;;;;; -53001;6;0;false;false;63;95;191;;; -53007;1;0;false;false;;;;;; -53008;2;0;false;false;63;95;191;;; -53010;1;0;false;false;;;;;; -53011;7;0;false;false;63;95;191;;; -53018;1;0;false;false;;;;;; -53019;10;0;false;false;63;95;191;;; -53029;4;0;false;false;;;;;; -53033;2;0;false;false;63;95;191;;; -53035;5;0;false;false;;;;;; -53040;6;1;false;false;127;0;85;;; -53046;1;0;false;false;;;;;; -53047;4;1;false;false;127;0;85;;; -53051;1;0;false;false;;;;;; -53052;12;0;false;false;0;0;0;;; -53064;3;1;false;false;127;0;85;;; -53067;1;0;false;false;;;;;; -53068;12;0;false;false;0;0;0;;; -53080;1;0;false;false;;;;;; -53081;3;1;false;false;127;0;85;;; -53084;1;0;false;false;;;;;; -53085;13;0;false;false;0;0;0;;; -53098;1;0;false;false;;;;;; -53099;3;1;false;false;127;0;85;;; -53102;1;0;false;false;;;;;; -53103;17;0;false;false;0;0;0;;; -53120;1;0;false;false;;;;;; -53121;3;1;false;false;127;0;85;;; -53124;1;0;false;false;;;;;; -53125;13;0;false;false;0;0;0;;; -53138;1;0;false;false;;;;;; -53139;3;1;false;false;127;0;85;;; -53142;1;0;false;false;;;;;; -53143;17;0;false;false;0;0;0;;; -53160;1;0;false;false;;;;;; -53161;1;0;false;false;0;0;0;;; -53162;4;0;false;false;;;;;; -53166;3;1;false;false;127;0;85;;; -53169;1;0;false;false;;;;;; -53170;9;0;false;false;0;0;0;;; -53179;1;0;false;false;;;;;; -53180;1;0;false;false;0;0;0;;; -53181;1;0;false;false;;;;;; -53182;43;0;false;false;0;0;0;;; -53225;4;0;false;false;;;;;; -53229;38;0;false;false;0;0;0;;; -53267;1;0;false;false;;;;;; -53268;13;0;false;false;0;0;0;;; -53281;1;0;false;false;;;;;; -53282;17;0;false;false;0;0;0;;; -53299;1;0;false;false;;;;;; -53300;13;0;false;false;0;0;0;;; -53313;1;0;false;false;;;;;; -53314;18;0;false;false;0;0;0;;; -53332;6;0;false;false;;;;;; -53338;70;0;false;false;63;127;95;;; -53408;2;0;false;false;;;;;; -53410;70;0;false;false;63;127;95;;; -53480;2;0;false;false;;;;;; -53482;72;0;false;false;63;127;95;;; -53554;2;0;false;false;;;;;; -53556;68;0;false;false;63;127;95;;; -53624;2;0;false;false;;;;;; -53626;2;1;false;false;127;0;85;;; -53628;1;0;false;false;;;;;; -53629;10;0;false;false;0;0;0;;; -53639;1;0;false;false;;;;;; -53640;1;0;false;false;0;0;0;;; -53641;5;0;false;false;;;;;; -53646;3;1;false;false;127;0;85;;; -53649;1;0;false;false;;;;;; -53650;9;0;false;false;0;0;0;;; -53659;1;0;false;false;;;;;; -53660;1;0;false;false;0;0;0;;; -53661;1;0;false;false;;;;;; -53662;23;0;false;false;0;0;0;;; -53685;5;0;false;false;;;;;; -53690;2;1;false;false;127;0;85;;; -53692;1;0;false;false;;;;;; -53693;10;0;false;false;0;0;0;;; -53703;1;0;false;false;;;;;; -53704;2;0;false;false;0;0;0;;; -53706;1;0;false;false;;;;;; -53707;10;0;false;false;0;0;0;;; -53717;1;0;false;false;;;;;; -53718;9;0;false;false;0;0;0;;; -53727;1;0;false;false;;;;;; -53728;1;0;false;false;0;0;0;;; -53729;1;0;false;false;;;;;; -53730;9;0;false;false;0;0;0;;; -53739;1;0;false;false;;;;;; -53740;1;0;false;false;0;0;0;;; -53741;1;0;false;false;;;;;; -53742;2;0;false;false;0;0;0;;; -53744;6;0;false;false;;;;;; -53750;1;0;false;false;0;0;0;;; -53751;4;0;false;false;;;;;; -53755;2;1;false;false;127;0;85;;; -53757;1;0;false;false;;;;;; -53758;10;0;false;false;0;0;0;;; -53768;1;0;false;false;;;;;; -53769;2;0;false;false;0;0;0;;; -53771;1;0;false;false;;;;;; -53772;24;0;false;false;0;0;0;;; -53796;1;0;false;false;;;;;; -53797;1;0;false;false;0;0;0;;; -53798;5;0;false;false;;;;;; -53803;65;0;false;false;63;127;95;;; -53868;3;0;false;false;;;;;; -53871;64;0;false;false;63;127;95;;; -53935;3;0;false;false;;;;;; -53938;51;0;false;false;63;127;95;;; -53989;3;0;false;false;;;;;; -53992;24;0;false;false;0;0;0;;; -54016;4;0;false;false;;;;;; -54020;1;0;false;false;0;0;0;;; -54021;3;0;false;false;;;;;; -54024;1;0;false;false;0;0;0;;; -54025;3;0;false;false;;;;;; -54028;1;0;false;false;0;0;0;;; -54029;4;0;false;false;;;;;; -54033;3;0;false;false;63;95;191;;; -54036;3;0;false;false;;;;;; -54039;1;0;false;false;63;95;191;;; -54040;1;0;false;false;;;;;; -54041;10;0;false;false;63;95;191;;; -54051;1;0;false;false;;;;;; -54052;1;0;false;false;63;95;191;;; -54053;1;0;false;false;;;;;; -54054;3;0;false;false;63;95;191;;; -54057;1;0;false;false;;;;;; -54058;8;0;false;false;63;95;191;;; -54066;1;0;false;false;;;;;; -54067;2;0;false;false;63;95;191;;; -54069;1;0;false;false;;;;;; -54070;4;0;false;false;63;95;191;;; -54074;1;0;false;false;;;;;; -54075;5;0;false;false;63;95;191;;; -54080;1;0;false;false;;;;;; -54081;5;0;false;false;63;95;191;;; -54086;1;0;false;false;;;;;; -54087;3;0;false;false;63;95;191;;; -54090;1;0;false;false;;;;;; -54091;6;0;false;false;63;95;191;;; -54097;3;0;false;false;;;;;; -54100;1;0;false;false;63;95;191;;; -54101;1;0;false;false;;;;;; -54102;3;0;false;false;63;95;191;;; -54105;1;0;false;false;;;;;; -54106;1;0;false;false;63;95;191;;; -54107;1;0;false;false;;;;;; -54108;5;0;false;false;63;95;191;;; -54113;1;0;false;false;;;;;; -54114;5;0;false;false;63;95;191;;; -54119;1;0;false;false;;;;;; -54120;10;0;false;false;63;95;191;;; -54130;1;0;false;false;;;;;; -54131;3;0;false;false;63;95;191;;; -54134;1;0;false;false;;;;;; -54135;8;0;false;false;63;95;191;;; -54143;1;0;false;false;;;;;; -54144;3;0;false;false;63;95;191;;; -54147;1;0;false;false;;;;;; -54148;11;0;false;false;63;95;191;;; -54159;3;0;false;false;;;;;; -54162;1;0;false;false;63;95;191;;; -54163;1;0;false;false;;;;;; -54164;3;0;false;false;127;127;159;;; -54167;3;0;false;false;;;;;; -54170;1;0;false;false;63;95;191;;; -54171;1;0;false;false;;;;;; -54172;3;0;false;false;63;95;191;;; -54175;1;0;false;false;;;;;; -54176;5;0;false;false;63;95;191;;; -54181;1;0;false;false;;;;;; -54182;5;0;false;false;63;95;191;;; -54187;1;0;false;false;;;;;; -54188;2;0;false;false;63;95;191;;; -54190;1;0;false;false;;;;;; -54191;6;0;false;false;63;95;191;;; -54197;1;0;false;false;;;;;; -54198;3;0;false;false;63;95;191;;; -54201;1;0;false;false;;;;;; -54202;2;0;false;false;63;95;191;;; -54204;1;0;false;false;;;;;; -54205;3;0;false;false;63;95;191;;; -54208;1;0;false;false;;;;;; -54209;5;0;false;false;63;95;191;;; -54214;1;0;false;false;;;;;; -54215;9;0;false;false;63;95;191;;; -54224;1;0;false;false;;;;;; -54225;7;0;false;false;63;95;191;;; -54232;1;0;false;false;;;;;; -54233;2;0;false;false;63;95;191;;; -54235;3;0;false;false;;;;;; -54238;1;0;false;false;63;95;191;;; -54239;1;0;false;false;;;;;; -54240;5;0;false;false;63;95;191;;; -54245;1;0;false;false;;;;;; -54246;6;0;false;false;127;127;159;;; -54252;3;0;false;false;63;95;191;;; -54255;7;0;false;false;127;127;159;;; -54262;1;0;false;false;;;;;; -54263;5;0;false;false;63;95;191;;; -54268;1;0;false;false;;;;;; -54269;2;0;false;false;63;95;191;;; -54271;1;0;false;false;;;;;; -54272;10;0;false;false;63;95;191;;; -54282;1;0;false;false;;;;;; -54283;2;0;false;false;63;95;191;;; -54285;1;0;false;false;;;;;; -54286;9;0;false;false;63;95;191;;; -54295;1;0;false;false;;;;;; -54296;2;0;false;false;63;95;191;;; -54298;1;0;false;false;;;;;; -54299;4;0;false;false;63;95;191;;; -54303;3;0;false;false;;;;;; -54306;1;0;false;false;63;95;191;;; -54307;1;0;false;false;;;;;; -54308;6;0;false;false;63;95;191;;; -54314;1;0;false;false;;;;;; -54315;2;0;false;false;63;95;191;;; -54317;1;0;false;false;;;;;; -54318;4;0;false;false;63;95;191;;; -54322;1;0;false;false;;;;;; -54323;2;0;false;false;63;95;191;;; -54325;1;0;false;false;;;;;; -54326;5;0;false;false;63;95;191;;; -54331;1;0;false;false;;;;;; -54332;2;0;false;false;63;95;191;;; -54334;1;0;false;false;;;;;; -54335;4;0;false;false;127;127;159;;; -54339;7;0;false;false;63;95;191;;; -54346;1;0;false;false;;;;;; -54347;2;0;false;false;63;95;191;;; -54349;5;0;false;false;127;127;159;;; -54354;4;0;false;false;63;95;191;;; -54358;1;0;false;false;;;;;; -54359;8;0;false;false;63;95;191;;; -54367;4;0;false;false;;;;;; -54371;1;0;false;false;63;95;191;;; -54372;1;0;false;false;;;;;; -54373;5;0;false;false;63;95;191;;; -54378;1;0;false;false;;;;;; -54379;3;0;false;false;63;95;191;;; -54382;1;0;false;false;;;;;; -54383;5;0;false;false;63;95;191;;; -54388;1;0;false;false;;;;;; -54389;3;0;false;false;63;95;191;;; -54392;1;0;false;false;;;;;; -54393;6;0;false;false;127;127;159;;; -54399;3;0;false;false;63;95;191;;; -54402;7;0;false;false;127;127;159;;; -54409;1;0;false;false;;;;;; -54410;3;0;false;false;63;95;191;;; -54413;1;0;false;false;;;;;; -54414;9;0;false;false;63;95;191;;; -54423;1;0;false;false;;;;;; -54424;3;0;false;false;63;95;191;;; -54427;1;0;false;false;;;;;; -54428;2;0;false;false;63;95;191;;; -54430;1;0;false;false;;;;;; -54431;4;0;false;false;63;95;191;;; -54435;3;0;false;false;;;;;; -54438;1;0;false;false;63;95;191;;; -54439;1;0;false;false;;;;;; -54440;2;0;false;false;63;95;191;;; -54442;1;0;false;false;;;;;; -54443;5;0;false;false;63;95;191;;; -54448;1;0;false;false;;;;;; -54449;6;0;false;false;127;127;159;;; -54455;3;0;false;false;63;95;191;;; -54458;7;0;false;false;127;127;159;;; -54465;1;0;false;false;;;;;; -54466;5;0;false;false;63;95;191;;; -54471;1;0;false;false;;;;;; -54472;10;0;false;false;63;95;191;;; -54482;1;0;false;false;;;;;; -54483;3;0;false;false;63;95;191;;; -54486;1;0;false;false;;;;;; -54487;5;0;false;false;63;95;191;;; -54492;1;0;false;false;;;;;; -54493;11;0;false;false;63;95;191;;; -54504;3;0;false;false;;;;;; -54507;1;0;false;false;63;95;191;;; -54508;1;0;false;false;;;;;; -54509;5;0;false;false;63;95;191;;; -54514;1;0;false;false;;;;;; -54515;3;0;false;false;63;95;191;;; -54518;1;0;false;false;;;;;; -54519;5;0;false;false;63;95;191;;; -54524;1;0;false;false;;;;;; -54525;9;0;false;false;63;95;191;;; -54534;1;0;false;false;;;;;; -54535;4;0;false;false;63;95;191;;; -54539;1;0;false;false;;;;;; -54540;3;0;false;false;63;95;191;;; -54543;1;0;false;false;;;;;; -54544;10;0;false;false;63;95;191;;; -54554;1;0;false;false;;;;;; -54555;2;0;false;false;63;95;191;;; -54557;1;0;false;false;;;;;; -54558;3;0;false;false;63;95;191;;; -54561;1;0;false;false;;;;;; -54562;6;0;false;false;63;95;191;;; -54568;3;0;false;false;;;;;; -54571;1;0;false;false;63;95;191;;; -54572;1;0;false;false;;;;;; -54573;5;0;false;false;63;95;191;;; -54578;1;0;false;false;;;;;; -54579;4;0;false;false;63;95;191;;; -54583;1;0;false;false;;;;;; -54584;3;0;false;false;63;95;191;;; -54587;1;0;false;false;;;;;; -54588;4;0;false;false;63;95;191;;; -54592;1;0;false;false;;;;;; -54593;9;0;false;false;63;95;191;;; -54602;1;0;false;false;;;;;; -54603;4;0;false;false;63;95;191;;; -54607;1;0;false;false;;;;;; -54608;13;0;false;false;63;95;191;;; -54621;3;0;false;false;;;;;; -54624;1;0;false;false;63;95;191;;; -54625;1;0;false;false;;;;;; -54626;4;0;false;false;127;127;159;;; -54630;3;0;false;false;;;;;; -54633;1;0;false;false;63;95;191;;; -54634;3;0;false;false;;;;;; -54637;1;0;false;false;63;95;191;;; -54638;1;0;false;false;;;;;; -54639;7;1;false;false;127;159;191;;; -54646;6;0;false;false;63;95;191;;; -54652;1;0;false;false;;;;;; -54653;1;0;false;false;63;95;191;;; -54654;1;0;false;false;;;;;; -54655;6;0;false;false;63;95;191;;; -54661;1;0;false;false;;;;;; -54662;5;0;false;false;63;95;191;;; -54667;1;0;false;false;;;;;; -54668;4;0;false;false;63;95;191;;; -54672;1;0;false;false;;;;;; -54673;2;0;false;false;63;95;191;;; -54675;1;0;false;false;;;;;; -54676;3;0;false;false;63;95;191;;; -54679;1;0;false;false;;;;;; -54680;6;0;false;false;63;95;191;;; -54686;1;0;false;false;;;;;; -54687;2;0;false;false;63;95;191;;; -54689;1;0;false;false;;;;;; -54690;3;0;false;false;63;95;191;;; -54693;1;0;false;false;;;;;; -54694;3;0;false;false;63;95;191;;; -54697;1;0;false;false;;;;;; -54698;8;0;false;false;63;95;191;;; -54706;1;0;false;false;;;;;; -54707;7;0;false;false;63;95;191;;; -54714;1;0;false;false;;;;;; -54715;2;0;false;false;63;95;191;;; -54717;1;0;false;false;;;;;; -54718;5;0;false;false;63;95;191;;; -54723;3;0;false;false;;;;;; -54726;1;0;false;false;63;95;191;;; -54727;1;0;false;false;;;;;; -54728;7;1;false;false;127;159;191;;; -54735;5;0;false;false;63;95;191;;; -54740;1;0;false;false;;;;;; -54741;3;0;false;false;63;95;191;;; -54744;1;0;false;false;;;;;; -54745;5;0;false;false;63;95;191;;; -54750;1;0;false;false;;;;;; -54751;2;0;false;false;63;95;191;;; -54753;1;0;false;false;;;;;; -54754;6;0;false;false;63;95;191;;; -54760;1;0;false;false;;;;;; -54761;2;0;false;false;63;95;191;;; -54763;1;0;false;false;;;;;; -54764;9;0;false;false;63;95;191;;; -54773;3;0;false;false;;;;;; -54776;1;0;false;false;63;95;191;;; -54777;3;0;false;false;;;;;; -54780;1;0;false;false;63;95;191;;; -54781;1;0;false;false;;;;;; -54782;11;1;false;false;127;159;191;;; -54793;24;0;false;false;63;95;191;;; -54817;1;0;false;false;;;;;; -54818;4;0;false;false;127;127;159;;; -54822;3;0;false;false;;;;;; -54825;1;0;false;false;63;95;191;;; -54826;4;0;false;false;;;;;; -54830;4;0;false;false;127;127;159;;; -54834;19;0;false;false;63;95;191;;; -54853;1;0;false;false;;;;;; -54854;1;0;false;false;127;127;159;;; -54855;1;0;false;false;;;;;; -54856;2;0;false;false;63;95;191;;; -54858;1;0;false;false;;;;;; -54859;3;0;false;false;63;95;191;;; -54862;1;0;false;false;;;;;; -54863;6;0;false;false;63;95;191;;; -54869;1;0;false;false;;;;;; -54870;2;0;false;false;63;95;191;;; -54872;1;0;false;false;;;;;; -54873;4;0;false;false;63;95;191;;; -54877;5;0;false;false;127;127;159;;; -54882;3;0;false;false;;;;;; -54885;1;0;false;false;63;95;191;;; -54886;1;0;false;false;;;;;; -54887;5;0;false;false;127;127;159;;; -54892;3;0;false;false;;;;;; -54895;1;0;false;false;63;95;191;;; -54896;1;0;false;false;;;;;; -54897;11;1;false;false;127;159;191;;; -54908;12;0;false;false;63;95;191;;; -54920;1;0;false;false;;;;;; -54921;4;0;false;false;127;127;159;;; -54925;3;0;false;false;;;;;; -54928;1;0;false;false;63;95;191;;; -54929;4;0;false;false;;;;;; -54933;4;0;false;false;127;127;159;;; -54937;27;0;false;false;63;95;191;;; -54964;1;0;false;false;;;;;; -54965;1;0;false;false;127;127;159;;; -54966;1;0;false;false;;;;;; -54967;2;0;false;false;63;95;191;;; -54969;1;0;false;false;;;;;; -54970;3;0;false;false;63;95;191;;; -54973;1;0;false;false;;;;;; -54974;6;0;false;false;63;95;191;;; -54980;1;0;false;false;;;;;; -54981;4;0;false;false;63;95;191;;; -54985;1;0;false;false;;;;;; -54986;3;0;false;false;63;95;191;;; -54989;1;0;false;false;;;;;; -54990;6;0;false;false;63;95;191;;; -54996;1;0;false;false;;;;;; -54997;4;0;false;false;63;95;191;;; -55001;1;0;false;false;;;;;; -55002;7;0;false;false;63;95;191;;; -55009;1;0;false;false;;;;;; -55010;3;0;false;false;63;95;191;;; -55013;1;0;false;false;;;;;; -55014;6;0;false;false;63;95;191;;; -55020;5;0;false;false;127;127;159;;; -55025;3;0;false;false;;;;;; -55028;1;0;false;false;63;95;191;;; -55029;1;0;false;false;;;;;; -55030;5;0;false;false;127;127;159;;; -55035;3;0;false;false;;;;;; -55038;1;0;false;false;63;95;191;;; -55039;3;0;false;false;;;;;; -55042;1;0;false;false;63;95;191;;; -55043;1;0;false;false;;;;;; -55044;5;1;false;false;127;159;191;;; -55049;18;0;false;false;63;95;191;;; -55067;3;0;false;false;;;;;; -55070;1;0;false;false;63;95;191;;; -55071;1;0;false;false;;;;;; -55072;5;1;false;false;127;159;191;;; -55077;9;0;false;false;63;95;191;;; -55086;3;0;false;false;;;;;; -55089;1;0;false;false;63;95;191;;; -55090;1;0;false;false;;;;;; -55091;5;1;false;false;127;159;191;;; -55096;13;0;false;false;63;95;191;;; -55109;3;0;false;false;;;;;; -55112;1;0;false;false;63;95;191;;; -55113;1;0;false;false;;;;;; -55114;5;1;false;false;127;159;191;;; -55119;10;0;false;false;63;95;191;;; -55129;3;0;false;false;;;;;; -55132;1;0;false;false;63;95;191;;; -55133;1;0;false;false;;;;;; -55134;5;1;false;false;127;159;191;;; -55139;8;0;false;false;63;95;191;;; -55147;3;0;false;false;;;;;; -55150;1;0;false;false;63;95;191;;; -55151;1;0;false;false;;;;;; -55152;5;1;false;false;127;159;191;;; -55157;9;0;false;false;63;95;191;;; -55166;3;0;false;false;;;;;; -55169;2;0;false;false;63;95;191;;; -55171;2;0;false;false;;;;;; -55173;6;1;false;false;127;0;85;;; -55179;1;0;false;false;;;;;; -55180;20;0;false;false;0;0;0;;; -55200;1;0;false;false;;;;;; -55201;7;0;false;false;0;0;0;;; -55208;1;0;false;false;;;;;; -55209;3;1;false;false;127;0;85;;; -55212;1;0;false;false;;;;;; -55213;6;0;false;false;0;0;0;;; -55219;1;0;false;false;;;;;; -55220;1;0;false;false;0;0;0;;; -55221;3;0;false;false;;;;;; -55224;5;1;false;false;127;0;85;;; -55229;8;0;false;false;0;0;0;;; -55237;1;0;false;false;;;;;; -55238;16;0;false;false;0;0;0;;; -55254;1;0;false;false;;;;;; -55255;1;0;false;false;0;0;0;;; -55256;1;0;false;false;;;;;; -55257;20;0;false;false;0;0;0;;; -55277;1;0;false;false;;;;;; -55278;1;0;false;false;0;0;0;;; -55279;1;0;false;false;;;;;; -55280;20;0;false;false;0;0;0;;; -55300;3;0;false;false;;;;;; -55303;87;0;false;false;63;127;95;;; -55390;1;0;false;false;;;;;; -55391;85;0;false;false;63;127;95;;; -55476;1;0;false;false;;;;;; -55477;5;1;false;false;127;0;85;;; -55482;32;0;false;false;0;0;0;;; -55514;3;0;false;false;;;;;; -55517;5;1;false;false;127;0;85;;; -55522;32;0;false;false;0;0;0;;; -55554;3;0;false;false;;;;;; -55557;7;0;false;false;0;0;0;;; -55564;1;0;false;false;;;;;; -55565;7;0;false;false;0;0;0;;; -55572;1;0;false;false;;;;;; -55573;1;0;false;false;0;0;0;;; -55574;1;0;false;false;;;;;; -55575;13;0;false;false;0;0;0;;; -55588;3;0;false;false;;;;;; -55591;10;0;false;false;0;0;0;;; -55601;1;0;false;false;;;;;; -55602;1;0;false;false;0;0;0;;; -55603;1;0;false;false;;;;;; -55604;1;0;false;false;0;0;0;;; -55605;5;1;false;false;127;0;85;;; -55610;11;0;false;false;0;0;0;;; -55621;1;0;false;false;;;;;; -55622;1;0;false;false;0;0;0;;; -55623;1;0;false;false;;;;;; -55624;13;0;false;false;0;0;0;;; -55637;1;0;false;false;;;;;; -55638;2;0;false;false;0;0;0;;; -55640;1;0;false;false;;;;;; -55641;2;0;false;false;0;0;0;;; -55643;3;0;false;false;;;;;; -55646;2;1;false;false;127;0;85;;; -55648;1;0;false;false;;;;;; -55649;7;0;false;false;0;0;0;;; -55656;1;0;false;false;;;;;; -55657;1;0;false;false;0;0;0;;; -55658;1;0;false;false;;;;;; -55659;14;0;false;false;0;0;0;;; -55673;1;0;false;false;;;;;; -55674;2;0;false;false;0;0;0;;; -55676;1;0;false;false;;;;;; -55677;2;0;false;false;0;0;0;;; -55679;1;0;false;false;;;;;; -55680;1;0;false;false;0;0;0;;; -55681;4;0;false;false;;;;;; -55685;12;0;false;false;0;0;0;;; -55697;5;1;false;false;127;0;85;;; -55702;2;0;false;false;0;0;0;;; -55704;3;0;false;false;;;;;; -55707;1;0;false;false;0;0;0;;; -55708;3;0;false;false;;;;;; -55711;10;0;false;false;0;0;0;;; -55721;1;0;false;false;;;;;; -55722;1;0;false;false;0;0;0;;; -55723;1;0;false;false;;;;;; -55724;11;0;false;false;0;0;0;;; -55735;1;0;false;false;;;;;; -55736;1;0;false;false;0;0;0;;; -55737;1;0;false;false;;;;;; -55738;13;0;false;false;0;0;0;;; -55751;1;0;false;false;;;;;; -55752;1;0;false;false;0;0;0;;; -55753;1;0;false;false;;;;;; -55754;16;0;false;false;0;0;0;;; -55770;1;0;false;false;;;;;; -55771;1;0;false;false;0;0;0;;; -55772;1;0;false;false;;;;;; -55773;2;0;false;false;0;0;0;;; -55775;1;0;false;false;;;;;; -55776;2;0;false;false;0;0;0;;; -55778;3;0;false;false;;;;;; -55781;2;1;false;false;127;0;85;;; -55783;1;0;false;false;;;;;; -55784;7;0;false;false;0;0;0;;; -55791;1;0;false;false;;;;;; -55792;1;0;false;false;0;0;0;;; -55793;1;0;false;false;;;;;; -55794;11;0;false;false;0;0;0;;; -55805;1;0;false;false;;;;;; -55806;2;0;false;false;0;0;0;;; -55808;1;0;false;false;;;;;; -55809;1;0;false;false;0;0;0;;; -55810;1;0;false;false;;;;;; -55811;2;0;false;false;0;0;0;;; -55813;1;0;false;false;;;;;; -55814;6;0;false;false;0;0;0;;; -55820;1;0;false;false;;;;;; -55821;1;0;false;false;0;0;0;;; -55822;1;0;false;false;;;;;; -55823;11;0;false;false;0;0;0;;; -55834;1;0;false;false;;;;;; -55835;2;0;false;false;0;0;0;;; -55837;1;0;false;false;;;;;; -55838;2;0;false;false;0;0;0;;; -55840;1;0;false;false;;;;;; -55841;1;0;false;false;0;0;0;;; -55842;4;0;false;false;;;;;; -55846;10;0;false;false;0;0;0;;; -55856;1;0;false;false;;;;;; -55857;1;0;false;false;0;0;0;;; -55858;1;0;false;false;;;;;; -55859;9;0;false;false;0;0;0;;; -55868;1;0;false;false;;;;;; -55869;1;0;false;false;0;0;0;;; -55870;1;0;false;false;;;;;; -55871;11;0;false;false;0;0;0;;; -55882;1;0;false;false;;;;;; -55883;1;0;false;false;0;0;0;;; -55884;1;0;false;false;;;;;; -55885;12;0;false;false;0;0;0;;; -55897;1;0;false;false;;;;;; -55898;1;0;false;false;0;0;0;;; -55899;1;0;false;false;;;;;; -55900;2;0;false;false;0;0;0;;; -55902;3;0;false;false;;;;;; -55905;1;0;false;false;0;0;0;;; -55906;3;0;false;false;;;;;; -55909;9;0;false;false;0;0;0;;; -55918;1;0;false;false;;;;;; -55919;1;0;false;false;0;0;0;;; -55920;1;0;false;false;;;;;; -55921;3;1;false;false;127;0;85;;; -55924;1;0;false;false;;;;;; -55925;19;0;false;false;0;0;0;;; -55944;3;0;false;false;;;;;; -55947;24;0;false;false;0;0;0;;; -55971;3;0;false;false;;;;;; -55974;21;0;false;false;0;0;0;;; -55995;3;0;false;false;;;;;; -55998;2;1;false;false;127;0;85;;; -56000;1;0;false;false;;;;;; -56001;7;0;false;false;0;0;0;;; -56008;1;0;false;false;;;;;; -56009;1;0;false;false;0;0;0;;; -56010;1;0;false;false;;;;;; -56011;9;0;false;false;0;0;0;;; -56020;1;0;false;false;;;;;; -56021;2;0;false;false;0;0;0;;; -56023;1;0;false;false;;;;;; -56024;2;0;false;false;0;0;0;;; -56026;1;0;false;false;;;;;; -56027;1;0;false;false;0;0;0;;; -56028;4;0;false;false;;;;;; -56032;12;0;false;false;0;0;0;;; -56044;4;1;false;false;127;0;85;;; -56048;2;0;false;false;0;0;0;;; -56050;3;0;false;false;;;;;; -56053;1;0;false;false;0;0;0;;; -56054;3;0;false;false;;;;;; -56057;4;1;false;false;127;0;85;;; -56061;1;0;false;false;;;;;; -56062;1;0;false;false;0;0;0;;; -56063;4;0;false;false;;;;;; -56067;9;0;false;false;0;0;0;;; -56076;1;0;false;false;;;;;; -56077;1;0;false;false;0;0;0;;; -56078;1;0;false;false;;;;;; -56079;3;1;false;false;127;0;85;;; -56082;1;0;false;false;;;;;; -56083;18;0;false;false;0;0;0;;; -56101;4;1;false;false;127;0;85;;; -56105;1;0;false;false;0;0;0;;; -56106;1;0;false;false;;;;;; -56107;9;0;false;false;0;0;0;;; -56116;3;0;false;false;;;;;; -56119;1;0;false;false;0;0;0;;; -56120;4;0;false;false;;;;;; -56124;12;0;false;false;0;0;0;;; -56136;1;0;false;false;;;;;; -56137;1;0;false;false;0;0;0;;; -56138;1;0;false;false;;;;;; -56139;3;1;false;false;127;0;85;;; -56142;1;0;false;false;;;;;; -56143;6;0;false;false;0;0;0;;; -56149;4;1;false;false;127;0;85;;; -56153;1;0;false;false;0;0;0;;; -56154;1;0;false;false;;;;;; -56155;10;0;false;false;0;0;0;;; -56165;3;0;false;false;;;;;; -56168;2;1;false;false;127;0;85;;; -56170;1;0;false;false;;;;;; -56171;15;0;false;false;0;0;0;;; -56186;1;0;false;false;;;;;; -56187;1;0;false;false;0;0;0;;; -56188;4;0;false;false;;;;;; -56192;21;0;false;false;0;0;0;;; -56213;4;0;false;false;;;;;; -56217;8;0;false;false;0;0;0;;; -56225;1;0;false;false;;;;;; -56226;8;0;false;false;0;0;0;;; -56234;1;0;false;false;;;;;; -56235;1;0;false;false;0;0;0;;; -56236;1;0;false;false;;;;;; -56237;3;1;false;false;127;0;85;;; -56240;1;0;false;false;;;;;; -56241;10;0;false;false;0;0;0;;; -56251;1;0;false;false;;;;;; -56252;1;0;false;false;0;0;0;;; -56253;5;0;false;false;;;;;; -56258;6;1;false;false;127;0;85;;; -56264;1;0;false;false;;;;;; -56265;4;1;false;false;127;0;85;;; -56269;1;0;false;false;;;;;; -56270;5;0;false;false;0;0;0;;; -56275;1;0;false;false;;;;;; -56276;1;0;false;false;0;0;0;;; -56277;6;0;false;false;;;;;; -56283;3;1;false;false;127;0;85;;; -56286;1;0;false;false;;;;;; -56287;9;0;false;false;0;0;0;;; -56296;1;0;false;false;;;;;; -56297;1;0;false;false;0;0;0;;; -56298;1;0;false;false;;;;;; -56299;30;0;false;false;0;0;0;;; -56329;1;0;false;false;;;;;; -56330;2;0;false;false;0;0;0;;; -56332;1;0;false;false;;;;;; -56333;22;0;false;false;0;0;0;;; -56355;1;0;false;false;;;;;; -56356;1;0;false;false;0;0;0;;; -56357;1;0;false;false;;;;;; -56358;9;0;false;false;0;0;0;;; -56367;1;0;false;false;;;;;; -56368;1;0;false;false;0;0;0;;; -56369;1;0;false;false;;;;;; -56370;9;0;false;false;0;0;0;;; -56379;6;0;false;false;;;;;; -56385;2;1;false;false;127;0;85;;; -56387;1;0;false;false;;;;;; -56388;10;0;false;false;0;0;0;;; -56398;1;0;false;false;;;;;; -56399;2;0;false;false;0;0;0;;; -56401;1;0;false;false;;;;;; -56402;15;0;false;false;0;0;0;;; -56417;1;0;false;false;;;;;; -56418;6;1;false;false;127;0;85;;; -56424;1;0;false;false;0;0;0;;; -56425;6;0;false;false;;;;;; -56431;2;1;false;false;127;0;85;;; -56433;1;0;false;false;;;;;; -56434;11;0;false;false;0;0;0;;; -56445;1;0;false;false;;;;;; -56446;2;0;false;false;0;0;0;;; -56448;1;0;false;false;;;;;; -56449;13;0;false;false;0;0;0;;; -56462;1;0;false;false;;;;;; -56463;6;1;false;false;127;0;85;;; -56469;1;0;false;false;0;0;0;;; -56470;6;0;false;false;;;;;; -56476;3;1;false;false;127;0;85;;; -56479;1;0;false;false;;;;;; -56480;9;0;false;false;0;0;0;;; -56489;1;0;false;false;;;;;; -56490;1;0;false;false;0;0;0;;; -56491;1;0;false;false;;;;;; -56492;15;0;false;false;0;0;0;;; -56507;6;0;false;false;;;;;; -56513;6;0;false;false;0;0;0;;; -56519;1;0;false;false;;;;;; -56520;4;0;false;false;0;0;0;;; -56524;1;0;false;false;;;;;; -56525;1;0;false;false;0;0;0;;; -56526;1;0;false;false;;;;;; -56527;27;0;false;false;0;0;0;;; -56554;6;0;false;false;;;;;; -56560;3;1;false;false;127;0;85;;; -56563;1;0;false;false;;;;;; -56564;10;0;false;false;0;0;0;;; -56574;1;0;false;false;;;;;; -56575;1;0;false;false;0;0;0;;; -56576;1;0;false;false;;;;;; -56577;35;0;false;false;0;0;0;;; -56612;6;0;false;false;;;;;; -56618;3;1;false;false;127;0;85;;; -56621;1;0;false;false;;;;;; -56622;12;0;false;false;0;0;0;;; -56634;1;0;false;false;;;;;; -56635;1;0;false;false;0;0;0;;; -56636;1;0;false;false;;;;;; -56637;11;0;false;false;0;0;0;;; -56648;1;0;false;false;;;;;; -56649;1;0;false;false;0;0;0;;; -56650;1;0;false;false;;;;;; -56651;11;0;false;false;0;0;0;;; -56662;6;0;false;false;;;;;; -56668;3;1;false;false;127;0;85;;; -56671;1;0;false;false;;;;;; -56672;9;0;false;false;0;0;0;;; -56681;1;0;false;false;;;;;; -56682;1;0;false;false;0;0;0;;; -56683;1;0;false;false;;;;;; -56684;18;0;false;false;0;0;0;;; -56702;1;0;false;false;;;;;; -56703;10;0;false;false;0;0;0;;; -56713;1;0;false;false;;;;;; -56714;14;0;false;false;0;0;0;;; -56728;6;0;false;false;;;;;; -56734;27;0;false;false;0;0;0;;; -56761;1;0;false;false;;;;;; -56762;15;0;false;false;0;0;0;;; -56777;1;0;false;false;;;;;; -56778;11;0;false;false;0;0;0;;; -56789;5;0;false;false;;;;;; -56794;1;0;false;false;0;0;0;;; -56795;4;0;false;false;;;;;; -56799;2;0;false;false;0;0;0;;; -56801;4;0;false;false;;;;;; -56805;36;0;false;false;0;0;0;;; -56841;1;0;false;false;;;;;; -56842;10;0;false;false;0;0;0;;; -56852;3;0;false;false;;;;;; -56855;1;0;false;false;0;0;0;;; -56856;3;0;false;false;;;;;; -56859;23;0;false;false;0;0;0;;; -56882;4;0;false;false;;;;;; -56886;22;0;false;false;0;0;0;;; -56908;3;0;false;false;;;;;; -56911;20;0;false;false;0;0;0;;; -56931;3;0;false;false;;;;;; -56934;11;0;false;false;0;0;0;;; -56945;1;0;false;false;;;;;; -56946;1;0;false;false;0;0;0;;; -56947;1;0;false;false;;;;;; -56948;3;1;false;false;127;0;85;;; -56951;1;0;false;false;;;;;; -56952;15;0;false;false;0;0;0;;; -56967;1;0;false;false;;;;;; -56968;18;0;false;false;0;0;0;;; -56986;3;0;false;false;;;;;; -56989;23;0;false;false;0;0;0;;; -57012;3;0;false;false;;;;;; -57015;19;0;false;false;0;0;0;;; -57034;3;0;false;false;;;;;; -57037;27;0;false;false;0;0;0;;; -57064;3;0;false;false;;;;;; -57067;23;0;false;false;0;0;0;;; -57090;2;0;false;false;;;;;; -57092;1;0;false;false;0;0;0;;; -57093;2;0;false;false;;;;;; -57095;3;0;false;false;63;95;191;;; -57098;5;0;false;false;;;;;; -57103;1;0;false;false;63;95;191;;; -57104;1;0;false;false;;;;;; -57105;4;0;false;false;63;95;191;;; -57109;1;0;false;false;;;;;; -57110;2;0;false;false;63;95;191;;; -57112;1;0;false;false;;;;;; -57113;8;0;false;false;63;95;191;;; -57121;1;0;false;false;;;;;; -57122;6;0;false;false;63;95;191;;; -57128;1;0;false;false;;;;;; -57129;9;0;false;false;63;95;191;;; -57138;1;0;false;false;;;;;; -57139;2;0;false;false;63;95;191;;; -57141;1;0;false;false;;;;;; -57142;14;0;false;false;63;95;191;;; -57156;1;0;false;false;;;;;; -57157;5;0;false;false;63;95;191;;; -57162;1;0;false;false;;;;;; -57163;2;0;false;false;63;95;191;;; -57165;1;0;false;false;;;;;; -57166;4;0;false;false;63;95;191;;; -57170;1;0;false;false;;;;;; -57171;2;0;false;false;63;95;191;;; -57173;1;0;false;false;;;;;; -57174;3;0;false;false;63;95;191;;; -57177;4;0;false;false;;;;;; -57181;1;0;false;false;63;95;191;;; -57182;1;0;false;false;;;;;; -57183;6;0;false;false;63;95;191;;; -57189;1;0;false;false;;;;;; -57190;4;0;false;false;63;95;191;;; -57194;1;0;false;false;;;;;; -57195;3;0;false;false;63;95;191;;; -57198;1;0;false;false;;;;;; -57199;6;0;false;false;63;95;191;;; -57205;1;0;false;false;;;;;; -57206;4;0;false;false;63;95;191;;; -57210;1;0;false;false;;;;;; -57211;3;0;false;false;63;95;191;;; -57214;1;0;false;false;;;;;; -57215;8;0;false;false;63;95;191;;; -57223;3;0;false;false;;;;;; -57226;1;0;false;false;63;95;191;;; -57227;1;0;false;false;;;;;; -57228;3;0;false;false;127;127;159;;; -57231;3;0;false;false;;;;;; -57234;1;0;false;false;63;95;191;;; -57235;3;0;false;false;;;;;; -57238;1;0;false;false;63;95;191;;; -57239;1;0;false;false;;;;;; -57240;7;1;false;false;127;159;191;;; -57247;22;0;false;false;63;95;191;;; -57269;1;0;false;false;;;;;; -57270;3;0;false;false;63;95;191;;; -57273;1;0;false;false;;;;;; -57274;8;0;false;false;63;95;191;;; -57282;3;0;false;false;;;;;; -57285;1;0;false;false;63;95;191;;; -57286;1;0;false;false;;;;;; -57287;11;1;false;false;127;159;191;;; -57298;12;0;false;false;63;95;191;;; -57310;1;0;false;false;;;;;; -57311;4;0;false;false;127;127;159;;; -57315;3;0;false;false;;;;;; -57318;1;0;false;false;63;95;191;;; -57319;4;0;false;false;;;;;; -57323;4;0;false;false;127;127;159;;; -57327;21;0;false;false;63;95;191;;; -57348;1;0;false;false;;;;;; -57349;1;0;false;false;127;127;159;;; -57350;1;0;false;false;;;;;; -57351;2;0;false;false;63;95;191;;; -57353;1;0;false;false;;;;;; -57354;3;0;false;false;63;95;191;;; -57357;1;0;false;false;;;;;; -57358;8;0;false;false;63;95;191;;; -57366;1;0;false;false;;;;;; -57367;3;0;false;false;63;95;191;;; -57370;1;0;false;false;;;;;; -57371;4;0;false;false;63;95;191;;; -57375;1;0;false;false;;;;;; -57376;8;0;false;false;63;95;191;;; -57384;5;0;false;false;127;127;159;;; -57389;3;0;false;false;;;;;; -57392;1;0;false;false;63;95;191;;; -57393;4;0;false;false;;;;;; -57397;4;0;false;false;127;127;159;;; -57401;27;0;false;false;63;95;191;;; -57428;1;0;false;false;;;;;; -57429;1;0;false;false;127;127;159;;; -57430;1;0;false;false;;;;;; -57431;2;0;false;false;63;95;191;;; -57433;1;0;false;false;;;;;; -57434;3;0;false;false;63;95;191;;; -57437;1;0;false;false;;;;;; -57438;6;0;false;false;63;95;191;;; -57444;1;0;false;false;;;;;; -57445;4;0;false;false;63;95;191;;; -57449;1;0;false;false;;;;;; -57450;3;0;false;false;63;95;191;;; -57453;1;0;false;false;;;;;; -57454;6;0;false;false;63;95;191;;; -57460;1;0;false;false;;;;;; -57461;4;0;false;false;63;95;191;;; -57465;1;0;false;false;;;;;; -57466;7;0;false;false;63;95;191;;; -57473;1;0;false;false;;;;;; -57474;3;0;false;false;63;95;191;;; -57477;1;0;false;false;;;;;; -57478;8;0;false;false;63;95;191;;; -57486;5;0;false;false;127;127;159;;; -57491;3;0;false;false;;;;;; -57494;1;0;false;false;63;95;191;;; -57495;1;0;false;false;;;;;; -57496;5;0;false;false;127;127;159;;; -57501;3;0;false;false;;;;;; -57504;1;0;false;false;63;95;191;;; -57505;1;0;false;false;;;;;; -57506;11;1;false;false;127;159;191;;; -57517;24;0;false;false;63;95;191;;; -57541;1;0;false;false;;;;;; -57542;4;0;false;false;127;127;159;;; -57546;3;0;false;false;;;;;; -57549;1;0;false;false;63;95;191;;; -57550;4;0;false;false;;;;;; -57554;4;0;false;false;127;127;159;;; -57558;19;0;false;false;63;95;191;;; -57577;1;0;false;false;;;;;; -57578;4;0;false;false;63;95;191;;; -57582;1;0;false;false;;;;;; -57583;8;0;false;false;63;95;191;;; -57591;1;0;false;false;;;;;; -57592;2;0;false;false;63;95;191;;; -57594;1;0;false;false;;;;;; -57595;4;0;false;false;63;95;191;;; -57599;5;0;false;false;127;127;159;;; -57604;3;0;false;false;;;;;; -57607;1;0;false;false;63;95;191;;; -57608;1;0;false;false;;;;;; -57609;5;0;false;false;127;127;159;;; -57614;3;0;false;false;;;;;; -57617;2;0;false;false;63;95;191;;; -57619;2;0;false;false;;;;;; -57621;6;1;false;false;127;0;85;;; -57627;1;0;false;false;;;;;; -57628;4;1;false;false;127;0;85;;; -57632;1;0;false;false;;;;;; -57633;48;0;false;false;0;0;0;;; -57681;1;0;false;false;;;;;; -57682;23;0;false;false;0;0;0;;; -57705;1;0;false;false;;;;;; -57706;1;0;false;false;0;0;0;;; -57707;3;0;false;false;;;;;; -57710;14;0;false;false;0;0;0;;; -57724;3;0;false;false;;;;;; -57727;2;1;false;false;127;0;85;;; -57729;1;0;false;false;;;;;; -57730;23;0;false;false;0;0;0;;; -57753;1;0;false;false;;;;;; -57754;2;0;false;false;0;0;0;;; -57756;1;0;false;false;;;;;; -57757;4;1;false;false;127;0;85;;; -57761;1;0;false;false;0;0;0;;; -57762;1;0;false;false;;;;;; -57763;35;0;false;false;0;0;0;;; -57798;3;0;false;false;;;;;; -57801;18;0;false;false;0;0;0;;; -57819;1;0;false;false;;;;;; -57820;13;0;false;false;0;0;0;;; -57833;1;0;false;false;;;;;; -57834;1;0;false;false;0;0;0;;; -57835;1;0;false;false;;;;;; -57836;3;1;false;false;127;0;85;;; -57839;1;0;false;false;;;;;; -57840;43;0;false;false;0;0;0;;; -57883;3;0;false;false;;;;;; -57886;27;0;false;false;0;0;0;;; -57913;1;0;false;false;;;;;; -57914;15;0;false;false;0;0;0;;; -57929;2;0;false;false;;;;;; -57931;1;0;false;false;0;0;0;;; -57932;2;0;false;false;;;;;; -57934;3;0;false;false;63;95;191;;; -57937;4;0;false;false;;;;;; -57941;1;0;false;false;63;95;191;;; -57942;1;0;false;false;;;;;; -57943;4;0;false;false;63;95;191;;; -57947;1;0;false;false;;;;;; -57948;1;0;false;false;63;95;191;;; -57949;1;0;false;false;;;;;; -57950;3;0;false;false;63;95;191;;; -57953;1;0;false;false;;;;;; -57954;2;0;false;false;63;95;191;;; -57956;1;0;false;false;;;;;; -57957;2;0;false;false;63;95;191;;; -57959;1;0;false;false;;;;;; -57960;7;0;false;false;63;95;191;;; -57967;3;0;false;false;;;;;; -57970;1;0;false;false;63;95;191;;; -57971;1;0;false;false;;;;;; -57972;3;0;false;false;63;95;191;;; -57975;1;0;false;false;;;;;; -57976;6;0;false;false;63;95;191;;; -57982;1;0;false;false;;;;;; -57983;3;0;false;false;63;95;191;;; -57986;1;0;false;false;;;;;; -57987;2;0;false;false;63;95;191;;; -57989;1;0;false;false;;;;;; -57990;10;0;false;false;63;95;191;;; -58000;1;0;false;false;;;;;; -58001;4;0;false;false;63;95;191;;; -58005;1;0;false;false;;;;;; -58006;1;0;false;false;63;95;191;;; -58007;1;0;false;false;;;;;; -58008;5;0;false;false;63;95;191;;; -58013;1;0;false;false;;;;;; -58014;8;0;false;false;63;95;191;;; -58022;1;0;false;false;;;;;; -58023;4;0;false;false;63;95;191;;; -58027;1;0;false;false;;;;;; -58028;3;0;false;false;63;95;191;;; -58031;1;0;false;false;;;;;; -58032;3;0;false;false;63;95;191;;; -58035;1;0;false;false;;;;;; -58036;4;0;false;false;63;95;191;;; -58040;4;0;false;false;;;;;; -58044;1;0;false;false;63;95;191;;; -58045;1;0;false;false;;;;;; -58046;4;0;false;false;63;95;191;;; -58050;1;0;false;false;;;;;; -58051;3;0;false;false;63;95;191;;; -58054;1;0;false;false;;;;;; -58055;6;0;false;false;63;95;191;;; -58061;1;0;false;false;;;;;; -58062;11;0;false;false;63;95;191;;; -58073;1;0;false;false;;;;;; -58074;2;0;false;false;63;95;191;;; -58076;1;0;false;false;;;;;; -58077;3;0;false;false;63;95;191;;; -58080;1;0;false;false;;;;;; -58081;10;0;false;false;63;95;191;;; -58091;3;0;false;false;;;;;; -58094;1;0;false;false;63;95;191;;; -58095;1;0;false;false;;;;;; -58096;3;0;false;false;127;127;159;;; -58099;3;0;false;false;;;;;; -58102;1;0;false;false;63;95;191;;; -58103;3;0;false;false;;;;;; -58106;1;0;false;false;63;95;191;;; -58107;1;0;false;false;;;;;; -58108;7;1;false;false;127;159;191;;; -58115;3;0;false;false;63;95;191;;; -58118;1;0;false;false;;;;;; -58119;1;0;false;false;63;95;191;;; -58120;1;0;false;false;;;;;; -58121;3;0;false;false;63;95;191;;; -58124;1;0;false;false;;;;;; -58125;4;0;false;false;63;95;191;;; -58129;1;0;false;false;;;;;; -58130;7;0;false;false;63;95;191;;; -58137;1;0;false;false;;;;;; -58138;2;0;false;false;63;95;191;;; -58140;1;0;false;false;;;;;; -58141;8;0;false;false;63;95;191;;; -58149;1;0;false;false;;;;;; -58150;2;0;false;false;63;95;191;;; -58152;1;0;false;false;;;;;; -58153;1;0;false;false;63;95;191;;; -58154;1;0;false;false;;;;;; -58155;10;0;false;false;63;95;191;;; -58165;4;0;false;false;;;;;; -58169;1;0;false;false;63;95;191;;; -58170;2;0;false;false;;;;;; -58172;10;0;false;false;63;95;191;;; -58182;1;0;false;false;;;;;; -58183;3;0;false;false;63;95;191;;; -58186;1;0;false;false;;;;;; -58187;4;0;false;false;63;95;191;;; -58191;1;0;false;false;;;;;; -58192;1;0;false;false;63;95;191;;; -58193;1;0;false;false;;;;;; -58194;5;0;false;false;63;95;191;;; -58199;1;0;false;false;;;;;; -58200;5;0;false;false;63;95;191;;; -58205;2;0;false;false;;;;;; -58207;9;0;false;false;63;95;191;;; -58216;1;0;false;false;;;;;; -58217;5;0;false;false;63;95;191;;; -58222;1;0;false;false;;;;;; -58223;5;0;false;false;63;95;191;;; -58228;1;0;false;false;;;;;; -58229;3;0;false;false;63;95;191;;; -58232;1;0;false;false;;;;;; -58233;3;0;false;false;63;95;191;;; -58236;1;0;false;false;;;;;; -58237;2;0;false;false;63;95;191;;; -58239;1;0;false;false;;;;;; -58240;4;0;false;false;63;95;191;;; -58244;1;0;false;false;;;;;; -58245;2;0;false;false;63;95;191;;; -58247;3;0;false;false;;;;;; -58250;1;0;false;false;63;95;191;;; -58251;2;0;false;false;;;;;; -58253;9;0;false;false;63;95;191;;; -58262;1;0;false;false;;;;;; -58263;9;0;false;false;63;95;191;;; -58272;1;0;false;false;;;;;; -58273;9;0;false;false;63;95;191;;; -58282;1;0;false;false;;;;;; -58283;5;0;false;false;63;95;191;;; -58288;1;0;false;false;;;;;; -58289;5;0;false;false;63;95;191;;; -58294;1;0;false;false;;;;;; -58295;5;0;false;false;63;95;191;;; -58300;1;0;false;false;;;;;; -58301;7;0;false;false;63;95;191;;; -58308;1;0;false;false;;;;;; -58309;3;0;false;false;63;95;191;;; -58312;1;0;false;false;;;;;; -58313;8;0;false;false;63;95;191;;; -58321;1;0;false;false;;;;;; -58322;8;0;false;false;63;95;191;;; -58330;4;0;false;false;;;;;; -58334;1;0;false;false;63;95;191;;; -58335;2;0;false;false;;;;;; -58337;12;0;false;false;63;95;191;;; -58349;2;0;false;false;;;;;; -58351;8;0;false;false;63;95;191;;; -58359;1;0;false;false;;;;;; -58360;5;0;false;false;63;95;191;;; -58365;1;0;false;false;;;;;; -58366;3;0;false;false;63;95;191;;; -58369;1;0;false;false;;;;;; -58370;2;0;false;false;63;95;191;;; -58372;1;0;false;false;;;;;; -58373;5;0;false;false;63;95;191;;; -58378;1;0;false;false;;;;;; -58379;5;0;false;false;63;95;191;;; -58384;1;0;false;false;;;;;; -58385;5;0;false;false;63;95;191;;; -58390;1;0;false;false;;;;;; -58391;3;0;false;false;63;95;191;;; -58394;1;0;false;false;;;;;; -58395;8;0;false;false;63;95;191;;; -58403;1;0;false;false;;;;;; -58404;5;0;false;false;63;95;191;;; -58409;1;0;false;false;;;;;; -58410;5;0;false;false;63;95;191;;; -58415;3;0;false;false;;;;;; -58418;1;0;false;false;63;95;191;;; -58419;2;0;false;false;;;;;; -58421;6;0;false;false;63;95;191;;; -58427;1;0;false;false;;;;;; -58428;9;0;false;false;63;95;191;;; -58437;1;0;false;false;;;;;; -58438;10;0;false;false;63;95;191;;; -58448;1;0;false;false;;;;;; -58449;8;0;false;false;63;95;191;;; -58457;1;0;false;false;;;;;; -58458;12;0;false;false;63;95;191;;; -58470;1;0;false;false;;;;;; -58471;5;0;false;false;63;95;191;;; -58476;1;0;false;false;;;;;; -58477;6;0;false;false;63;95;191;;; -58483;3;0;false;false;;;;;; -58486;1;0;false;false;63;95;191;;; -58487;1;0;false;false;;;;;; -58488;7;1;false;false;127;159;191;;; -58495;6;0;false;false;63;95;191;;; -58501;1;0;false;false;;;;;; -58502;3;0;false;false;63;95;191;;; -58505;1;0;false;false;;;;;; -58506;2;0;false;false;63;95;191;;; -58508;1;0;false;false;;;;;; -58509;3;0;false;false;63;95;191;;; -58512;1;0;false;false;;;;;; -58513;10;0;false;false;63;95;191;;; -58523;1;0;false;false;;;;;; -58524;7;0;false;false;63;95;191;;; -58531;1;0;false;false;;;;;; -58532;7;0;false;false;63;95;191;;; -58539;1;0;false;false;;;;;; -58540;2;0;false;false;63;95;191;;; -58542;1;0;false;false;;;;;; -58543;8;0;false;false;63;95;191;;; -58551;4;0;false;false;;;;;; -58555;1;0;false;false;63;95;191;;; -58556;2;0;false;false;;;;;; -58558;3;0;false;false;63;95;191;;; -58561;1;0;false;false;;;;;; -58562;8;0;false;false;63;95;191;;; -58570;1;0;false;false;;;;;; -58571;2;0;false;false;63;95;191;;; -58573;1;0;false;false;;;;;; -58574;6;0;false;false;63;95;191;;; -58580;1;0;false;false;;;;;; -58581;1;0;false;false;63;95;191;;; -58582;1;0;false;false;;;;;; -58583;3;0;false;false;63;95;191;;; -58586;1;0;false;false;;;;;; -58587;8;0;false;false;63;95;191;;; -58595;3;0;false;false;;;;;; -58598;1;0;false;false;63;95;191;;; -58599;1;0;false;false;;;;;; -58600;11;1;false;false;127;159;191;;; -58611;12;0;false;false;63;95;191;;; -58623;1;0;false;false;;;;;; -58624;4;0;false;false;127;127;159;;; -58628;3;0;false;false;;;;;; -58631;1;0;false;false;63;95;191;;; -58632;4;0;false;false;;;;;; -58636;4;0;false;false;127;127;159;;; -58640;21;0;false;false;63;95;191;;; -58661;1;0;false;false;;;;;; -58662;1;0;false;false;127;127;159;;; -58663;1;0;false;false;;;;;; -58664;2;0;false;false;63;95;191;;; -58666;1;0;false;false;;;;;; -58667;3;0;false;false;63;95;191;;; -58670;1;0;false;false;;;;;; -58671;8;0;false;false;63;95;191;;; -58679;1;0;false;false;;;;;; -58680;3;0;false;false;63;95;191;;; -58683;1;0;false;false;;;;;; -58684;4;0;false;false;63;95;191;;; -58688;1;0;false;false;;;;;; -58689;8;0;false;false;63;95;191;;; -58697;5;0;false;false;127;127;159;;; -58702;3;0;false;false;;;;;; -58705;1;0;false;false;63;95;191;;; -58706;4;0;false;false;;;;;; -58710;4;0;false;false;127;127;159;;; -58714;27;0;false;false;63;95;191;;; -58741;1;0;false;false;;;;;; -58742;1;0;false;false;127;127;159;;; -58743;1;0;false;false;;;;;; -58744;2;0;false;false;63;95;191;;; -58746;1;0;false;false;;;;;; -58747;3;0;false;false;63;95;191;;; -58750;1;0;false;false;;;;;; -58751;6;0;false;false;63;95;191;;; -58757;1;0;false;false;;;;;; -58758;4;0;false;false;63;95;191;;; -58762;1;0;false;false;;;;;; -58763;3;0;false;false;63;95;191;;; -58766;1;0;false;false;;;;;; -58767;6;0;false;false;63;95;191;;; -58773;1;0;false;false;;;;;; -58774;4;0;false;false;63;95;191;;; -58778;1;0;false;false;;;;;; -58779;7;0;false;false;63;95;191;;; -58786;1;0;false;false;;;;;; -58787;3;0;false;false;63;95;191;;; -58790;1;0;false;false;;;;;; -58791;8;0;false;false;63;95;191;;; -58799;5;0;false;false;127;127;159;;; -58804;3;0;false;false;;;;;; -58807;1;0;false;false;63;95;191;;; -58808;1;0;false;false;;;;;; -58809;5;0;false;false;127;127;159;;; -58814;3;0;false;false;;;;;; -58817;2;0;false;false;63;95;191;;; -58819;2;0;false;false;;;;;; -58821;6;1;false;false;127;0;85;;; -58827;1;0;false;false;;;;;; -58828;4;1;false;false;127;0;85;;; -58832;1;0;false;false;;;;;; -58833;14;0;false;false;0;0;0;;; -58847;3;1;false;false;127;0;85;;; -58850;1;0;false;false;;;;;; -58851;4;0;false;false;0;0;0;;; -58855;1;0;false;false;;;;;; -58856;3;1;false;false;127;0;85;;; -58859;1;0;false;false;;;;;; -58860;7;0;false;false;0;0;0;;; -58867;1;0;false;false;;;;;; -58868;1;0;false;false;0;0;0;;; -58869;3;0;false;false;;;;;; -58872;14;0;false;false;0;0;0;;; -58886;7;0;false;false;;;;;; -58893;3;1;false;false;127;0;85;;; -58896;1;0;false;false;;;;;; -58897;8;0;false;false;0;0;0;;; -58905;1;0;false;false;;;;;; -58906;1;0;false;false;0;0;0;;; -58907;1;0;false;false;;;;;; -58908;3;0;false;false;0;0;0;;; -58911;1;0;false;false;;;;;; -58912;1;0;false;false;0;0;0;;; -58913;1;0;false;false;;;;;; -58914;13;0;false;false;0;0;0;;; -58927;3;0;false;false;;;;;; -58930;3;1;false;false;127;0;85;;; -58933;1;0;false;false;;;;;; -58934;13;0;false;false;0;0;0;;; -58947;1;0;false;false;;;;;; -58948;1;0;false;false;0;0;0;;; -58949;1;0;false;false;;;;;; -58950;3;0;false;false;0;0;0;;; -58953;1;0;false;false;;;;;; -58954;1;0;false;false;0;0;0;;; -58955;1;0;false;false;;;;;; -58956;18;0;false;false;0;0;0;;; -58974;3;0;false;false;;;;;; -58977;4;1;false;false;127;0;85;;; -58981;1;0;false;false;;;;;; -58982;7;0;false;false;0;0;0;;; -58989;1;0;false;false;;;;;; -58990;1;0;false;false;0;0;0;;; -58991;1;0;false;false;;;;;; -58992;1;0;false;false;0;0;0;;; -58993;4;1;false;false;127;0;85;;; -58997;10;0;false;false;0;0;0;;; -59007;5;0;false;false;;;;;; -59012;2;1;false;false;127;0;85;;; -59014;1;0;false;false;;;;;; -59015;33;0;false;false;0;0;0;;; -59048;1;0;false;false;;;;;; -59049;1;0;false;false;0;0;0;;; -59050;4;0;false;false;;;;;; -59054;54;0;false;false;63;127;95;;; -59108;2;0;false;false;;;;;; -59110;37;0;false;false;63;127;95;;; -59147;2;0;false;false;;;;;; -59149;4;1;false;false;127;0;85;;; -59153;1;0;false;false;;;;;; -59154;2;0;false;false;0;0;0;;; -59156;1;0;false;false;;;;;; -59157;1;0;false;false;0;0;0;;; -59158;1;0;false;false;;;;;; -59159;31;0;false;false;0;0;0;;; -59190;4;0;false;false;;;;;; -59194;3;1;false;false;127;0;85;;; -59197;1;0;false;false;;;;;; -59198;6;0;false;false;0;0;0;;; -59204;1;0;false;false;;;;;; -59205;1;0;false;false;0;0;0;;; -59206;1;0;false;false;;;;;; -59207;2;0;false;false;0;0;0;;; -59209;1;0;false;false;;;;;; -59210;1;0;false;false;0;0;0;;; -59211;1;0;false;false;;;;;; -59212;14;0;false;false;0;0;0;;; -59226;4;0;false;false;;;;;; -59230;2;1;false;false;127;0;85;;; -59232;1;0;false;false;;;;;; -59233;7;0;false;false;0;0;0;;; -59240;1;0;false;false;;;;;; -59241;2;0;false;false;0;0;0;;; -59243;1;0;false;false;;;;;; -59244;9;0;false;false;0;0;0;;; -59253;1;0;false;false;;;;;; -59254;1;0;false;false;0;0;0;;; -59255;5;0;false;false;;;;;; -59260;20;0;false;false;0;0;0;;; -59280;3;1;false;false;127;0;85;;; -59283;1;0;false;false;;;;;; -59284;17;0;false;false;0;0;0;;; -59301;4;0;false;false;;;;;; -59305;1;0;false;false;0;0;0;;; -59306;4;0;false;false;;;;;; -59310;4;1;false;false;127;0;85;;; -59314;1;0;false;false;;;;;; -59315;1;0;false;false;0;0;0;;; -59316;6;0;false;false;;;;;; -59322;17;0;false;false;0;0;0;;; -59339;3;1;false;false;127;0;85;;; -59342;1;0;false;false;;;;;; -59343;16;0;false;false;0;0;0;;; -59359;1;0;false;false;;;;;; -59360;3;1;false;false;127;0;85;;; -59363;1;0;false;false;;;;;; -59364;17;0;false;false;0;0;0;;; -59381;4;0;false;false;;;;;; -59385;1;0;false;false;0;0;0;;; -59386;4;0;false;false;;;;;; -59390;2;0;false;false;0;0;0;;; -59392;1;0;false;false;;;;;; -59393;1;0;false;false;0;0;0;;; -59394;1;0;false;false;;;;;; -59395;31;0;false;false;0;0;0;;; -59426;4;0;false;false;;;;;; -59430;6;0;false;false;0;0;0;;; -59436;1;0;false;false;;;;;; -59437;1;0;false;false;0;0;0;;; -59438;1;0;false;false;;;;;; -59439;2;0;false;false;0;0;0;;; -59441;1;0;false;false;;;;;; -59442;1;0;false;false;0;0;0;;; -59443;1;0;false;false;;;;;; -59444;14;0;false;false;0;0;0;;; -59458;4;0;false;false;;;;;; -59462;2;1;false;false;127;0;85;;; -59464;1;0;false;false;;;;;; -59465;7;0;false;false;0;0;0;;; -59472;1;0;false;false;;;;;; -59473;2;0;false;false;0;0;0;;; -59475;1;0;false;false;;;;;; -59476;9;0;false;false;0;0;0;;; -59485;1;0;false;false;;;;;; -59486;1;0;false;false;0;0;0;;; -59487;5;0;false;false;;;;;; -59492;20;0;false;false;0;0;0;;; -59512;3;1;false;false;127;0;85;;; -59515;1;0;false;false;;;;;; -59516;17;0;false;false;0;0;0;;; -59533;4;0;false;false;;;;;; -59537;1;0;false;false;0;0;0;;; -59538;4;0;false;false;;;;;; -59542;4;1;false;false;127;0;85;;; -59546;1;0;false;false;;;;;; -59547;1;0;false;false;0;0;0;;; -59548;6;0;false;false;;;;;; -59554;17;0;false;false;0;0;0;;; -59571;3;1;false;false;127;0;85;;; -59574;1;0;false;false;;;;;; -59575;16;0;false;false;0;0;0;;; -59591;1;0;false;false;;;;;; -59592;3;1;false;false;127;0;85;;; -59595;1;0;false;false;;;;;; -59596;17;0;false;false;0;0;0;;; -59613;4;0;false;false;;;;;; -59617;1;0;false;false;0;0;0;;; -59618;3;0;false;false;;;;;; -59621;1;0;false;false;0;0;0;;; -59622;1;0;false;false;;;;;; -59623;4;1;false;false;127;0;85;;; -59627;1;0;false;false;;;;;; -59628;1;0;false;false;0;0;0;;; -59629;4;0;false;false;;;;;; -59633;2;1;false;false;127;0;85;;; -59635;1;0;false;false;;;;;; -59636;7;0;false;false;0;0;0;;; -59643;1;0;false;false;;;;;; -59644;2;0;false;false;0;0;0;;; -59646;1;0;false;false;;;;;; -59647;9;0;false;false;0;0;0;;; -59656;1;0;false;false;;;;;; -59657;1;0;false;false;0;0;0;;; -59658;5;0;false;false;;;;;; -59663;20;0;false;false;0;0;0;;; -59683;3;1;false;false;127;0;85;;; -59686;1;0;false;false;;;;;; -59687;14;0;false;false;0;0;0;;; -59701;4;0;false;false;;;;;; -59705;1;0;false;false;0;0;0;;; -59706;4;0;false;false;;;;;; -59710;4;1;false;false;127;0;85;;; -59714;1;0;false;false;;;;;; -59715;1;0;false;false;0;0;0;;; -59716;6;0;false;false;;;;;; -59722;17;0;false;false;0;0;0;;; -59739;3;1;false;false;127;0;85;;; -59742;1;0;false;false;;;;;; -59743;13;0;false;false;0;0;0;;; -59756;1;0;false;false;;;;;; -59757;3;1;false;false;127;0;85;;; -59760;1;0;false;false;;;;;; -59761;17;0;false;false;0;0;0;;; -59778;4;0;false;false;;;;;; -59782;1;0;false;false;0;0;0;;; -59783;3;0;false;false;;;;;; -59786;1;0;false;false;0;0;0;;; -59787;6;0;false;false;;;;;; -59793;1;0;false;false;0;0;0;;; -59794;2;0;false;false;;;;;; -59796;3;0;false;false;63;95;191;;; -59799;3;0;false;false;;;;;; -59802;1;0;false;false;63;95;191;;; -59803;1;0;false;false;;;;;; -59804;4;0;false;false;63;95;191;;; -59808;1;0;false;false;;;;;; -59809;1;0;false;false;63;95;191;;; -59810;1;0;false;false;;;;;; -59811;13;0;false;false;63;95;191;;; -59824;1;0;false;false;;;;;; -59825;7;0;false;false;63;95;191;;; -59832;1;0;false;false;;;;;; -59833;9;0;false;false;63;95;191;;; -59842;1;0;false;false;;;;;; -59843;1;0;false;false;63;95;191;;; -59844;1;0;false;false;;;;;; -59845;16;0;false;false;63;95;191;;; -59861;1;0;false;false;;;;;; -59862;2;0;false;false;63;95;191;;; -59864;1;0;false;false;;;;;; -59865;4;0;false;false;63;95;191;;; -59869;4;0;false;false;;;;;; -59873;1;0;false;false;63;95;191;;; -59874;1;0;false;false;;;;;; -59875;8;0;false;false;63;95;191;;; -59883;1;0;false;false;;;;;; -59884;1;0;false;false;63;95;191;;; -59885;1;0;false;false;;;;;; -59886;4;0;false;false;63;95;191;;; -59890;1;0;false;false;;;;;; -59891;2;0;false;false;63;95;191;;; -59893;1;0;false;false;;;;;; -59894;4;0;false;false;63;95;191;;; -59898;1;0;false;false;;;;;; -59899;2;0;false;false;63;95;191;;; -59901;1;0;false;false;;;;;; -59902;8;0;false;false;63;95;191;;; -59910;1;0;false;false;;;;;; -59911;2;0;false;false;63;95;191;;; -59913;1;0;false;false;;;;;; -59914;9;0;false;false;63;95;191;;; -59923;1;0;false;false;;;;;; -59924;3;0;false;false;63;95;191;;; -59927;1;0;false;false;;;;;; -59928;4;0;false;false;63;95;191;;; -59932;1;0;false;false;;;;;; -59933;3;0;false;false;63;95;191;;; -59936;4;0;false;false;;;;;; -59940;1;0;false;false;63;95;191;;; -59941;1;0;false;false;;;;;; -59942;7;0;false;false;63;95;191;;; -59949;1;0;false;false;;;;;; -59950;4;0;false;false;63;95;191;;; -59954;1;0;false;false;;;;;; -59955;6;0;false;false;63;95;191;;; -59961;1;0;false;false;;;;;; -59962;2;0;false;false;63;95;191;;; -59964;1;0;false;false;;;;;; -59965;3;0;false;false;63;95;191;;; -59968;1;0;false;false;;;;;; -59969;4;0;false;false;63;95;191;;; -59973;1;0;false;false;;;;;; -59974;4;0;false;false;63;95;191;;; -59978;1;0;false;false;;;;;; -59979;6;0;false;false;63;95;191;;; -59985;1;0;false;false;;;;;; -59986;2;0;false;false;63;95;191;;; -59988;1;0;false;false;;;;;; -59989;7;0;false;false;63;95;191;;; -59996;1;0;false;false;;;;;; -59997;2;0;false;false;63;95;191;;; -59999;1;0;false;false;;;;;; -60000;2;0;false;false;63;95;191;;; -60002;1;0;false;false;;;;;; -60003;4;0;false;false;63;95;191;;; -60007;4;0;false;false;;;;;; -60011;1;0;false;false;63;95;191;;; -60012;1;0;false;false;;;;;; -60013;3;0;false;false;63;95;191;;; -60016;1;0;false;false;;;;;; -60017;1;0;false;false;63;95;191;;; -60018;1;0;false;false;;;;;; -60019;9;0;false;false;63;95;191;;; -60028;1;0;false;false;;;;;; -60029;9;0;false;false;63;95;191;;; -60038;1;0;false;false;;;;;; -60039;4;0;false;false;63;95;191;;; -60043;1;0;false;false;;;;;; -60044;3;0;false;false;63;95;191;;; -60047;1;0;false;false;;;;;; -60048;11;0;false;false;63;95;191;;; -60059;1;0;false;false;;;;;; -60060;5;0;false;false;63;95;191;;; -60065;3;0;false;false;;;;;; -60068;1;0;false;false;63;95;191;;; -60069;1;0;false;false;;;;;; -60070;4;0;false;false;63;95;191;;; -60074;1;0;false;false;;;;;; -60075;3;0;false;false;63;95;191;;; -60078;1;0;false;false;;;;;; -60079;2;0;false;false;63;95;191;;; -60081;1;0;false;false;;;;;; -60082;4;0;false;false;63;95;191;;; -60086;1;0;false;false;;;;;; -60087;4;0;false;false;63;95;191;;; -60091;1;0;false;false;;;;;; -60092;8;0;false;false;63;95;191;;; -60100;1;0;false;false;;;;;; -60101;8;0;false;false;63;95;191;;; -60109;1;0;false;false;;;;;; -60110;2;0;false;false;63;95;191;;; -60112;1;0;false;false;;;;;; -60113;5;0;false;false;63;95;191;;; -60118;1;0;false;false;127;127;159;;; -60119;2;0;false;false;63;95;191;;; -60121;1;0;false;false;127;127;159;;; -60122;4;0;false;false;63;95;191;;; -60126;1;0;false;false;;;;;; -60127;4;0;false;false;63;95;191;;; -60131;1;0;false;false;;;;;; -60132;6;0;false;false;63;95;191;;; -60138;3;0;false;false;;;;;; -60141;1;0;false;false;63;95;191;;; -60142;1;0;false;false;;;;;; -60143;3;0;false;false;63;95;191;;; -60146;1;0;false;false;;;;;; -60147;2;0;false;false;63;95;191;;; -60149;1;0;false;false;;;;;; -60150;9;0;false;false;63;95;191;;; -60159;1;0;false;false;;;;;; -60160;8;0;false;false;63;95;191;;; -60168;1;0;false;false;;;;;; -60169;2;0;false;false;63;95;191;;; -60171;1;0;false;false;;;;;; -60172;4;0;false;false;63;95;191;;; -60176;1;0;false;false;;;;;; -60177;6;0;false;false;63;95;191;;; -60183;4;0;false;false;;;;;; -60187;1;0;false;false;63;95;191;;; -60188;1;0;false;false;;;;;; -60189;5;0;false;false;63;95;191;;; -60194;1;0;false;false;;;;;; -60195;8;0;false;false;63;95;191;;; -60203;1;0;false;false;;;;;; -60204;4;0;false;false;63;95;191;;; -60208;1;0;false;false;;;;;; -60209;6;0;false;false;63;95;191;;; -60215;1;0;false;false;;;;;; -60216;8;0;false;false;63;95;191;;; -60224;1;0;false;false;;;;;; -60225;2;0;false;false;63;95;191;;; -60227;1;0;false;false;;;;;; -60228;1;0;false;false;63;95;191;;; -60229;1;0;false;false;;;;;; -60230;5;0;false;false;63;95;191;;; -60235;1;0;false;false;127;127;159;;; -60236;2;0;false;false;63;95;191;;; -60238;1;0;false;false;127;127;159;;; -60239;4;0;false;false;63;95;191;;; -60243;1;0;false;false;;;;;; -60244;8;0;false;false;63;95;191;;; -60252;3;0;false;false;;;;;; -60255;1;0;false;false;63;95;191;;; -60256;1;0;false;false;;;;;; -60257;6;0;false;false;63;95;191;;; -60263;1;0;false;false;;;;;; -60264;9;0;false;false;63;95;191;;; -60273;1;0;false;false;;;;;; -60274;6;0;false;false;63;95;191;;; -60280;1;0;false;false;;;;;; -60281;2;0;false;false;63;95;191;;; -60283;1;0;false;false;;;;;; -60284;7;0;false;false;63;95;191;;; -60291;1;0;false;false;;;;;; -60292;5;0;false;false;63;95;191;;; -60297;1;0;false;false;;;;;; -60298;2;0;false;false;63;95;191;;; -60300;1;0;false;false;;;;;; -60301;4;0;false;false;63;95;191;;; -60305;1;0;false;false;;;;;; -60306;6;0;false;false;63;95;191;;; -60312;1;0;false;false;;;;;; -60313;4;0;false;false;63;95;191;;; -60317;1;0;false;false;;;;;; -60318;3;0;false;false;63;95;191;;; -60321;1;0;false;false;;;;;; -60322;3;0;false;false;63;95;191;;; -60325;3;0;false;false;;;;;; -60328;1;0;false;false;63;95;191;;; -60329;1;0;false;false;;;;;; -60330;3;0;false;false;63;95;191;;; -60333;1;0;false;false;;;;;; -60334;4;0;false;false;63;95;191;;; -60338;1;0;false;false;;;;;; -60339;3;0;false;false;63;95;191;;; -60342;1;0;false;false;;;;;; -60343;7;0;false;false;63;95;191;;; -60350;4;0;false;false;;;;;; -60354;1;0;false;false;63;95;191;;; -60355;1;0;false;false;;;;;; -60356;3;0;false;false;127;127;159;;; -60359;3;0;false;false;;;;;; -60362;1;0;false;false;63;95;191;;; -60363;3;0;false;false;;;;;; -60366;1;0;false;false;63;95;191;;; -60367;1;0;false;false;;;;;; -60368;7;1;false;false;127;159;191;;; -60375;8;0;false;false;63;95;191;;; -60383;1;0;false;false;;;;;; -60384;3;0;false;false;63;95;191;;; -60387;1;0;false;false;;;;;; -60388;8;0;false;false;63;95;191;;; -60396;3;0;false;false;;;;;; -60399;1;0;false;false;63;95;191;;; -60400;1;0;false;false;;;;;; -60401;11;1;false;false;127;159;191;;; -60412;12;0;false;false;63;95;191;;; -60424;1;0;false;false;;;;;; -60425;4;0;false;false;127;127;159;;; -60429;3;0;false;false;;;;;; -60432;1;0;false;false;63;95;191;;; -60433;4;0;false;false;;;;;; -60437;4;0;false;false;127;127;159;;; -60441;21;0;false;false;63;95;191;;; -60462;1;0;false;false;;;;;; -60463;1;0;false;false;127;127;159;;; -60464;1;0;false;false;;;;;; -60465;2;0;false;false;63;95;191;;; -60467;1;0;false;false;;;;;; -60468;3;0;false;false;63;95;191;;; -60471;1;0;false;false;;;;;; -60472;8;0;false;false;63;95;191;;; -60480;1;0;false;false;;;;;; -60481;3;0;false;false;63;95;191;;; -60484;1;0;false;false;;;;;; -60485;4;0;false;false;63;95;191;;; -60489;1;0;false;false;;;;;; -60490;8;0;false;false;63;95;191;;; -60498;5;0;false;false;127;127;159;;; -60503;3;0;false;false;;;;;; -60506;1;0;false;false;63;95;191;;; -60507;4;0;false;false;;;;;; -60511;4;0;false;false;127;127;159;;; -60515;27;0;false;false;63;95;191;;; -60542;1;0;false;false;;;;;; -60543;1;0;false;false;127;127;159;;; -60544;1;0;false;false;;;;;; -60545;2;0;false;false;63;95;191;;; -60547;1;0;false;false;;;;;; -60548;3;0;false;false;63;95;191;;; -60551;1;0;false;false;;;;;; -60552;6;0;false;false;63;95;191;;; -60558;1;0;false;false;;;;;; -60559;4;0;false;false;63;95;191;;; -60563;1;0;false;false;;;;;; -60564;3;0;false;false;63;95;191;;; -60567;1;0;false;false;;;;;; -60568;6;0;false;false;63;95;191;;; -60574;1;0;false;false;;;;;; -60575;4;0;false;false;63;95;191;;; -60579;1;0;false;false;;;;;; -60580;7;0;false;false;63;95;191;;; -60587;1;0;false;false;;;;;; -60588;3;0;false;false;63;95;191;;; -60591;1;0;false;false;;;;;; -60592;8;0;false;false;63;95;191;;; -60600;5;0;false;false;127;127;159;;; -60605;3;0;false;false;;;;;; -60608;1;0;false;false;63;95;191;;; -60609;1;0;false;false;;;;;; -60610;5;0;false;false;127;127;159;;; -60615;3;0;false;false;;;;;; -60618;1;0;false;false;63;95;191;;; -60619;1;0;false;false;;;;;; -60620;11;1;false;false;127;159;191;;; -60631;24;0;false;false;63;95;191;;; -60655;1;0;false;false;;;;;; -60656;4;0;false;false;127;127;159;;; -60660;3;0;false;false;;;;;; -60663;1;0;false;false;63;95;191;;; -60664;4;0;false;false;;;;;; -60668;4;0;false;false;127;127;159;;; -60672;19;0;false;false;63;95;191;;; -60691;1;0;false;false;;;;;; -60692;4;0;false;false;63;95;191;;; -60696;1;0;false;false;;;;;; -60697;8;0;false;false;63;95;191;;; -60705;1;0;false;false;;;;;; -60706;2;0;false;false;63;95;191;;; -60708;1;0;false;false;;;;;; -60709;4;0;false;false;63;95;191;;; -60713;5;0;false;false;127;127;159;;; -60718;3;0;false;false;;;;;; -60721;1;0;false;false;63;95;191;;; -60722;1;0;false;false;;;;;; -60723;5;0;false;false;127;127;159;;; -60728;3;0;false;false;;;;;; -60731;1;0;false;false;63;95;191;;; -60732;1;0;false;false;;;;;; -60733;5;1;false;false;127;159;191;;; -60738;16;0;false;false;63;95;191;;; -60754;3;0;false;false;;;;;; -60757;1;0;false;false;63;95;191;;; -60758;1;0;false;false;;;;;; -60759;7;1;false;false;127;159;191;;; -60766;3;0;false;false;63;95;191;;; -60769;3;0;false;false;;;;;; -60772;2;0;false;false;63;95;191;;; -60774;2;0;false;false;;;;;; -60776;6;1;false;false;127;0;85;;; -60782;1;0;false;false;;;;;; -60783;4;1;false;false;127;0;85;;; -60787;1;0;false;false;;;;;; -60788;42;0;false;false;0;0;0;;; -60830;1;0;false;false;;;;;; -60831;9;0;false;false;0;0;0;;; -60840;1;0;false;false;;;;;; -60841;1;0;false;false;0;0;0;;; -60842;3;0;false;false;;;;;; -60845;14;0;false;false;0;0;0;;; -60859;3;0;false;false;;;;;; -60862;2;1;false;false;127;0;85;;; -60864;1;0;false;false;;;;;; -60865;9;0;false;false;0;0;0;;; -60874;1;0;false;false;;;;;; -60875;2;0;false;false;0;0;0;;; -60877;1;0;false;false;;;;;; -60878;4;1;false;false;127;0;85;;; -60882;1;0;false;false;0;0;0;;; -60883;1;0;false;false;;;;;; -60884;1;0;false;false;0;0;0;;; -60885;4;0;false;false;;;;;; -60889;35;0;false;false;0;0;0;;; -60924;3;0;false;false;;;;;; -60927;1;0;false;false;0;0;0;;; -60928;3;0;false;false;;;;;; -60931;18;0;false;false;0;0;0;;; -60949;1;0;false;false;;;;;; -60950;13;0;false;false;0;0;0;;; -60963;1;0;false;false;;;;;; -60964;1;0;false;false;0;0;0;;; -60965;1;0;false;false;;;;;; -60966;3;1;false;false;127;0;85;;; -60969;1;0;false;false;;;;;; -60970;29;0;false;false;0;0;0;;; -60999;3;0;false;false;;;;;; -61002;28;0;false;false;0;0;0;;; -61030;1;0;false;false;;;;;; -61031;15;0;false;false;0;0;0;;; -61046;3;0;false;false;;;;;; -61049;1;0;false;false;0;0;0;;; -61050;2;0;false;false;;;;;; -61052;3;0;false;false;63;95;191;;; -61055;3;0;false;false;;;;;; -61058;1;0;false;false;63;95;191;;; -61059;1;0;false;false;;;;;; -61060;4;0;false;false;63;95;191;;; -61064;1;0;false;false;;;;;; -61065;1;0;false;false;63;95;191;;; -61066;1;0;false;false;;;;;; -61067;4;0;false;false;63;95;191;;; -61071;1;0;false;false;;;;;; -61072;10;0;false;false;63;95;191;;; -61082;1;0;false;false;;;;;; -61083;9;0;false;false;63;95;191;;; -61092;1;0;false;false;;;;;; -61093;1;0;false;false;63;95;191;;; -61094;1;0;false;false;;;;;; -61095;17;0;false;false;63;95;191;;; -61112;1;0;false;false;;;;;; -61113;5;0;false;false;63;95;191;;; -61118;1;0;false;false;;;;;; -61119;2;0;false;false;63;95;191;;; -61121;1;0;false;false;;;;;; -61122;4;0;false;false;63;95;191;;; -61126;1;0;false;false;;;;;; -61127;2;0;false;false;63;95;191;;; -61129;1;0;false;false;;;;;; -61130;3;0;false;false;63;95;191;;; -61133;4;0;false;false;;;;;; -61137;1;0;false;false;63;95;191;;; -61138;1;0;false;false;;;;;; -61139;6;0;false;false;63;95;191;;; -61145;1;0;false;false;;;;;; -61146;2;0;false;false;63;95;191;;; -61148;1;0;false;false;;;;;; -61149;9;0;false;false;63;95;191;;; -61158;1;0;false;false;;;;;; -61159;3;0;false;false;63;95;191;;; -61162;1;0;false;false;;;;;; -61163;10;0;false;false;63;95;191;;; -61173;1;0;false;false;;;;;; -61174;5;0;false;false;63;95;191;;; -61179;1;0;false;false;;;;;; -61180;3;0;false;false;63;95;191;;; -61183;1;0;false;false;;;;;; -61184;1;0;false;false;63;95;191;;; -61185;1;0;false;false;;;;;; -61186;5;0;false;false;63;95;191;;; -61191;3;0;false;false;;;;;; -61194;1;0;false;false;63;95;191;;; -61195;1;0;false;false;;;;;; -61196;3;0;false;false;127;127;159;;; -61199;3;0;false;false;;;;;; -61202;1;0;false;false;63;95;191;;; -61203;3;0;false;false;;;;;; -61206;1;0;false;false;63;95;191;;; -61207;1;0;false;false;;;;;; -61208;7;1;false;false;127;159;191;;; -61215;8;0;false;false;63;95;191;;; -61223;1;0;false;false;;;;;; -61224;3;0;false;false;63;95;191;;; -61227;1;0;false;false;;;;;; -61228;8;0;false;false;63;95;191;;; -61236;3;0;false;false;;;;;; -61239;1;0;false;false;63;95;191;;; -61240;1;0;false;false;;;;;; -61241;11;1;false;false;127;159;191;;; -61252;12;0;false;false;63;95;191;;; -61264;1;0;false;false;;;;;; -61265;4;0;false;false;127;127;159;;; -61269;3;0;false;false;;;;;; -61272;1;0;false;false;63;95;191;;; -61273;4;0;false;false;;;;;; -61277;4;0;false;false;127;127;159;;; -61281;21;0;false;false;63;95;191;;; -61302;1;0;false;false;;;;;; -61303;1;0;false;false;127;127;159;;; -61304;1;0;false;false;;;;;; -61305;2;0;false;false;63;95;191;;; -61307;1;0;false;false;;;;;; -61308;3;0;false;false;63;95;191;;; -61311;1;0;false;false;;;;;; -61312;8;0;false;false;63;95;191;;; -61320;1;0;false;false;;;;;; -61321;3;0;false;false;63;95;191;;; -61324;1;0;false;false;;;;;; -61325;4;0;false;false;63;95;191;;; -61329;1;0;false;false;;;;;; -61330;8;0;false;false;63;95;191;;; -61338;5;0;false;false;127;127;159;;; -61343;3;0;false;false;;;;;; -61346;1;0;false;false;63;95;191;;; -61347;4;0;false;false;;;;;; -61351;4;0;false;false;127;127;159;;; -61355;27;0;false;false;63;95;191;;; -61382;1;0;false;false;;;;;; -61383;1;0;false;false;127;127;159;;; -61384;1;0;false;false;;;;;; -61385;2;0;false;false;63;95;191;;; -61387;1;0;false;false;;;;;; -61388;3;0;false;false;63;95;191;;; -61391;1;0;false;false;;;;;; -61392;6;0;false;false;63;95;191;;; -61398;1;0;false;false;;;;;; -61399;4;0;false;false;63;95;191;;; -61403;1;0;false;false;;;;;; -61404;3;0;false;false;63;95;191;;; -61407;1;0;false;false;;;;;; -61408;6;0;false;false;63;95;191;;; -61414;1;0;false;false;;;;;; -61415;4;0;false;false;63;95;191;;; -61419;1;0;false;false;;;;;; -61420;7;0;false;false;63;95;191;;; -61427;1;0;false;false;;;;;; -61428;3;0;false;false;63;95;191;;; -61431;1;0;false;false;;;;;; -61432;8;0;false;false;63;95;191;;; -61440;5;0;false;false;127;127;159;;; -61445;3;0;false;false;;;;;; -61448;1;0;false;false;63;95;191;;; -61449;1;0;false;false;;;;;; -61450;5;0;false;false;127;127;159;;; -61455;3;0;false;false;;;;;; -61458;1;0;false;false;63;95;191;;; -61459;1;0;false;false;;;;;; -61460;11;1;false;false;127;159;191;;; -61471;24;0;false;false;63;95;191;;; -61495;1;0;false;false;;;;;; -61496;4;0;false;false;127;127;159;;; -61500;3;0;false;false;;;;;; -61503;1;0;false;false;63;95;191;;; -61504;4;0;false;false;;;;;; -61508;4;0;false;false;127;127;159;;; -61512;19;0;false;false;63;95;191;;; -61531;1;0;false;false;;;;;; -61532;4;0;false;false;63;95;191;;; -61536;1;0;false;false;;;;;; -61537;8;0;false;false;63;95;191;;; -61545;1;0;false;false;;;;;; -61546;2;0;false;false;63;95;191;;; -61548;1;0;false;false;;;;;; -61549;4;0;false;false;63;95;191;;; -61553;5;0;false;false;127;127;159;;; -61558;3;0;false;false;;;;;; -61561;1;0;false;false;63;95;191;;; -61562;1;0;false;false;;;;;; -61563;5;0;false;false;127;127;159;;; -61568;3;0;false;false;;;;;; -61571;2;0;false;false;63;95;191;;; -61573;2;0;false;false;;;;;; -61575;6;1;false;false;127;0;85;;; -61581;1;0;false;false;;;;;; -61582;4;1;false;false;127;0;85;;; -61586;1;0;false;false;;;;;; -61587;48;0;false;false;0;0;0;;; -61635;1;0;false;false;;;;;; -61636;9;0;false;false;0;0;0;;; -61645;1;0;false;false;;;;;; -61646;1;0;false;false;0;0;0;;; -61647;3;0;false;false;;;;;; -61650;14;0;false;false;0;0;0;;; -61664;3;0;false;false;;;;;; -61667;2;1;false;false;127;0;85;;; -61669;1;0;false;false;;;;;; -61670;9;0;false;false;0;0;0;;; -61679;1;0;false;false;;;;;; -61680;2;0;false;false;0;0;0;;; -61682;1;0;false;false;;;;;; -61683;4;1;false;false;127;0;85;;; -61687;1;0;false;false;0;0;0;;; -61688;1;0;false;false;;;;;; -61689;35;0;false;false;0;0;0;;; -61724;3;0;false;false;;;;;; -61727;2;1;false;false;127;0;85;;; -61729;1;0;false;false;;;;;; -61730;21;0;false;false;0;0;0;;; -61751;1;0;false;false;;;;;; -61752;1;0;false;false;0;0;0;;; -61753;4;0;false;false;;;;;; -61757;48;0;false;false;0;0;0;;; -61805;4;0;false;false;;;;;; -61809;38;0;false;false;0;0;0;;; -61847;1;0;false;false;;;;;; -61848;30;0;false;false;0;0;0;;; -61878;1;0;false;false;;;;;; -61879;4;1;false;false;127;0;85;;; -61883;2;0;false;false;0;0;0;;; -61885;4;0;false;false;;;;;; -61889;18;0;false;false;0;0;0;;; -61907;1;0;false;false;;;;;; -61908;1;0;false;false;0;0;0;;; -61909;1;0;false;false;;;;;; -61910;4;1;false;false;127;0;85;;; -61914;1;0;false;false;0;0;0;;; -61915;3;0;false;false;;;;;; -61918;1;0;false;false;0;0;0;;; -61919;4;0;false;false;;;;;; -61923;18;0;false;false;0;0;0;;; -61941;1;0;false;false;;;;;; -61942;13;0;false;false;0;0;0;;; -61955;1;0;false;false;;;;;; -61956;1;0;false;false;0;0;0;;; -61957;1;0;false;false;;;;;; -61958;3;1;false;false;127;0;85;;; -61961;1;0;false;false;;;;;; -61962;29;0;false;false;0;0;0;;; -61991;3;0;false;false;;;;;; -61994;30;0;false;false;0;0;0;;; -62024;1;0;false;false;;;;;; -62025;15;0;false;false;0;0;0;;; -62040;3;0;false;false;;;;;; -62043;1;0;false;false;0;0;0;;; -62044;2;0;false;false;;;;;; -62046;3;0;false;false;63;95;191;;; -62049;3;0;false;false;;;;;; -62052;1;0;false;false;63;95;191;;; -62053;1;0;false;false;;;;;; -62054;4;0;false;false;63;95;191;;; -62058;1;0;false;false;;;;;; -62059;1;0;false;false;63;95;191;;; -62060;1;0;false;false;;;;;; -62061;4;0;false;false;63;95;191;;; -62065;1;0;false;false;;;;;; -62066;5;0;false;false;63;95;191;;; -62071;1;0;false;false;;;;;; -62072;9;0;false;false;63;95;191;;; -62081;1;0;false;false;;;;;; -62082;1;0;false;false;63;95;191;;; -62083;1;0;false;false;;;;;; -62084;12;0;false;false;63;95;191;;; -62096;1;0;false;false;;;;;; -62097;5;0;false;false;63;95;191;;; -62102;1;0;false;false;;;;;; -62103;2;0;false;false;63;95;191;;; -62105;1;0;false;false;;;;;; -62106;4;0;false;false;63;95;191;;; -62110;1;0;false;false;;;;;; -62111;2;0;false;false;63;95;191;;; -62113;1;0;false;false;;;;;; -62114;3;0;false;false;63;95;191;;; -62117;1;0;false;false;;;;;; -62118;6;0;false;false;63;95;191;;; -62124;1;0;false;false;;;;;; -62125;2;0;false;false;63;95;191;;; -62127;4;0;false;false;;;;;; -62131;1;0;false;false;63;95;191;;; -62132;1;0;false;false;;;;;; -62133;9;0;false;false;63;95;191;;; -62142;1;0;false;false;;;;;; -62143;3;0;false;false;63;95;191;;; -62146;1;0;false;false;;;;;; -62147;6;0;false;false;63;95;191;;; -62153;1;0;false;false;;;;;; -62154;3;0;false;false;63;95;191;;; -62157;1;0;false;false;;;;;; -62158;1;0;false;false;63;95;191;;; -62159;1;0;false;false;;;;;; -62160;5;0;false;false;63;95;191;;; -62165;3;0;false;false;;;;;; -62168;1;0;false;false;63;95;191;;; -62169;1;0;false;false;;;;;; -62170;3;0;false;false;127;127;159;;; -62173;3;0;false;false;;;;;; -62176;1;0;false;false;63;95;191;;; -62177;3;0;false;false;;;;;; -62180;1;0;false;false;63;95;191;;; -62181;1;0;false;false;;;;;; -62182;7;1;false;false;127;159;191;;; -62189;8;0;false;false;63;95;191;;; -62197;1;0;false;false;;;;;; -62198;3;0;false;false;63;95;191;;; -62201;1;0;false;false;;;;;; -62202;8;0;false;false;63;95;191;;; -62210;3;0;false;false;;;;;; -62213;1;0;false;false;63;95;191;;; -62214;1;0;false;false;;;;;; -62215;11;1;false;false;127;159;191;;; -62226;12;0;false;false;63;95;191;;; -62238;1;0;false;false;;;;;; -62239;4;0;false;false;127;127;159;;; -62243;3;0;false;false;;;;;; -62246;1;0;false;false;63;95;191;;; -62247;4;0;false;false;;;;;; -62251;4;0;false;false;127;127;159;;; -62255;21;0;false;false;63;95;191;;; -62276;1;0;false;false;;;;;; -62277;1;0;false;false;127;127;159;;; -62278;1;0;false;false;;;;;; -62279;2;0;false;false;63;95;191;;; -62281;1;0;false;false;;;;;; -62282;3;0;false;false;63;95;191;;; -62285;1;0;false;false;;;;;; -62286;8;0;false;false;63;95;191;;; -62294;1;0;false;false;;;;;; -62295;3;0;false;false;63;95;191;;; -62298;1;0;false;false;;;;;; -62299;4;0;false;false;63;95;191;;; -62303;1;0;false;false;;;;;; -62304;8;0;false;false;63;95;191;;; -62312;5;0;false;false;127;127;159;;; -62317;3;0;false;false;;;;;; -62320;1;0;false;false;63;95;191;;; -62321;4;0;false;false;;;;;; -62325;4;0;false;false;127;127;159;;; -62329;27;0;false;false;63;95;191;;; -62356;1;0;false;false;;;;;; -62357;1;0;false;false;127;127;159;;; -62358;1;0;false;false;;;;;; -62359;2;0;false;false;63;95;191;;; -62361;1;0;false;false;;;;;; -62362;3;0;false;false;63;95;191;;; -62365;1;0;false;false;;;;;; -62366;6;0;false;false;63;95;191;;; -62372;1;0;false;false;;;;;; -62373;4;0;false;false;63;95;191;;; -62377;1;0;false;false;;;;;; -62378;3;0;false;false;63;95;191;;; -62381;1;0;false;false;;;;;; -62382;6;0;false;false;63;95;191;;; -62388;1;0;false;false;;;;;; -62389;4;0;false;false;63;95;191;;; -62393;1;0;false;false;;;;;; -62394;7;0;false;false;63;95;191;;; -62401;1;0;false;false;;;;;; -62402;3;0;false;false;63;95;191;;; -62405;1;0;false;false;;;;;; -62406;8;0;false;false;63;95;191;;; -62414;5;0;false;false;127;127;159;;; -62419;3;0;false;false;;;;;; -62422;1;0;false;false;63;95;191;;; -62423;1;0;false;false;;;;;; -62424;5;0;false;false;127;127;159;;; -62429;3;0;false;false;;;;;; -62432;1;0;false;false;63;95;191;;; -62433;1;0;false;false;;;;;; -62434;11;1;false;false;127;159;191;;; -62445;24;0;false;false;63;95;191;;; -62469;1;0;false;false;;;;;; -62470;4;0;false;false;127;127;159;;; -62474;3;0;false;false;;;;;; -62477;1;0;false;false;63;95;191;;; -62478;4;0;false;false;;;;;; -62482;4;0;false;false;127;127;159;;; -62486;19;0;false;false;63;95;191;;; -62505;1;0;false;false;;;;;; -62506;4;0;false;false;63;95;191;;; -62510;1;0;false;false;;;;;; -62511;8;0;false;false;63;95;191;;; -62519;1;0;false;false;;;;;; -62520;2;0;false;false;63;95;191;;; -62522;1;0;false;false;;;;;; -62523;4;0;false;false;63;95;191;;; -62527;5;0;false;false;127;127;159;;; -62532;3;0;false;false;;;;;; -62535;1;0;false;false;63;95;191;;; -62536;1;0;false;false;;;;;; -62537;5;0;false;false;127;127;159;;; -62542;3;0;false;false;;;;;; -62545;2;0;false;false;63;95;191;;; -62547;2;0;false;false;;;;;; -62549;6;1;false;false;127;0;85;;; -62555;1;0;false;false;;;;;; -62556;4;1;false;false;127;0;85;;; -62560;1;0;false;false;;;;;; -62561;38;0;false;false;0;0;0;;; -62599;1;0;false;false;;;;;; -62600;9;0;false;false;0;0;0;;; -62609;1;0;false;false;;;;;; -62610;1;0;false;false;0;0;0;;; -62611;3;0;false;false;;;;;; -62614;14;0;false;false;0;0;0;;; -62628;3;0;false;false;;;;;; -62631;2;1;false;false;127;0;85;;; -62633;1;0;false;false;;;;;; -62634;9;0;false;false;0;0;0;;; -62643;1;0;false;false;;;;;; -62644;2;0;false;false;0;0;0;;; -62646;1;0;false;false;;;;;; -62647;4;1;false;false;127;0;85;;; -62651;1;0;false;false;0;0;0;;; -62652;1;0;false;false;;;;;; -62653;1;0;false;false;0;0;0;;; -62654;4;0;false;false;;;;;; -62658;35;0;false;false;0;0;0;;; -62693;3;0;false;false;;;;;; -62696;1;0;false;false;0;0;0;;; -62697;3;0;false;false;;;;;; -62700;2;1;false;false;127;0;85;;; -62702;1;0;false;false;;;;;; -62703;16;0;false;false;0;0;0;;; -62719;1;0;false;false;;;;;; -62720;1;0;false;false;0;0;0;;; -62721;4;0;false;false;;;;;; -62725;43;0;false;false;0;0;0;;; -62768;4;0;false;false;;;;;; -62772;32;0;false;false;0;0;0;;; -62804;4;1;false;false;127;0;85;;; -62808;2;0;false;false;0;0;0;;; -62810;4;0;false;false;;;;;; -62814;13;0;false;false;0;0;0;;; -62827;1;0;false;false;;;;;; -62828;1;0;false;false;0;0;0;;; -62829;1;0;false;false;;;;;; -62830;4;1;false;false;127;0;85;;; -62834;1;0;false;false;0;0;0;;; -62835;3;0;false;false;;;;;; -62838;1;0;false;false;0;0;0;;; -62839;3;0;false;false;;;;;; -62842;18;0;false;false;0;0;0;;; -62860;1;0;false;false;;;;;; -62861;13;0;false;false;0;0;0;;; -62874;1;0;false;false;;;;;; -62875;1;0;false;false;0;0;0;;; -62876;1;0;false;false;;;;;; -62877;3;1;false;false;127;0;85;;; -62880;1;0;false;false;;;;;; -62881;29;0;false;false;0;0;0;;; -62910;3;0;false;false;;;;;; -62913;25;0;false;false;0;0;0;;; -62938;1;0;false;false;;;;;; -62939;15;0;false;false;0;0;0;;; -62954;3;0;false;false;;;;;; -62957;1;0;false;false;0;0;0;;; -62958;2;0;false;false;;;;;; -62960;3;0;false;false;63;95;191;;; -62963;5;0;false;false;;;;;; -62968;1;0;false;false;63;95;191;;; -62969;1;0;false;false;;;;;; -62970;4;0;false;false;63;95;191;;; -62974;1;0;false;false;;;;;; -62975;1;0;false;false;63;95;191;;; -62976;1;0;false;false;;;;;; -62977;6;0;false;false;63;95;191;;; -62983;1;0;false;false;;;;;; -62984;9;0;false;false;63;95;191;;; -62993;1;0;false;false;;;;;; -62994;1;0;false;false;63;95;191;;; -62995;1;0;false;false;;;;;; -62996;6;0;false;false;63;95;191;;; -63002;1;0;false;false;;;;;; -63003;5;0;false;false;63;95;191;;; -63008;1;0;false;false;;;;;; -63009;2;0;false;false;63;95;191;;; -63011;1;0;false;false;;;;;; -63012;4;0;false;false;63;95;191;;; -63016;1;0;false;false;;;;;; -63017;2;0;false;false;63;95;191;;; -63019;1;0;false;false;;;;;; -63020;3;0;false;false;63;95;191;;; -63023;1;0;false;false;;;;;; -63024;6;0;false;false;63;95;191;;; -63030;1;0;false;false;;;;;; -63031;4;0;false;false;63;95;191;;; -63035;1;0;false;false;;;;;; -63036;3;0;false;false;63;95;191;;; -63039;1;0;false;false;;;;;; -63040;6;0;false;false;63;95;191;;; -63046;1;0;false;false;;;;;; -63047;4;0;false;false;63;95;191;;; -63051;4;0;false;false;;;;;; -63055;1;0;false;false;63;95;191;;; -63056;1;0;false;false;;;;;; -63057;3;0;false;false;63;95;191;;; -63060;1;0;false;false;;;;;; -63061;8;0;false;false;63;95;191;;; -63069;3;0;false;false;;;;;; -63072;1;0;false;false;63;95;191;;; -63073;1;0;false;false;;;;;; -63074;3;0;false;false;127;127;159;;; -63077;3;0;false;false;;;;;; -63080;1;0;false;false;63;95;191;;; -63081;3;0;false;false;;;;;; -63084;1;0;false;false;63;95;191;;; -63085;1;0;false;false;;;;;; -63086;7;1;false;false;127;159;191;;; -63093;14;0;false;false;63;95;191;;; -63107;1;0;false;false;;;;;; -63108;3;0;false;false;63;95;191;;; -63111;1;0;false;false;;;;;; -63112;8;0;false;false;63;95;191;;; -63120;3;0;false;false;;;;;; -63123;1;0;false;false;63;95;191;;; -63124;1;0;false;false;;;;;; -63125;11;1;false;false;127;159;191;;; -63136;12;0;false;false;63;95;191;;; -63148;1;0;false;false;;;;;; -63149;4;0;false;false;127;127;159;;; -63153;3;0;false;false;;;;;; -63156;1;0;false;false;63;95;191;;; -63157;4;0;false;false;;;;;; -63161;4;0;false;false;127;127;159;;; -63165;21;0;false;false;63;95;191;;; -63186;1;0;false;false;;;;;; -63187;1;0;false;false;127;127;159;;; -63188;1;0;false;false;;;;;; -63189;2;0;false;false;63;95;191;;; -63191;1;0;false;false;;;;;; -63192;3;0;false;false;63;95;191;;; -63195;1;0;false;false;;;;;; -63196;8;0;false;false;63;95;191;;; -63204;1;0;false;false;;;;;; -63205;3;0;false;false;63;95;191;;; -63208;1;0;false;false;;;;;; -63209;4;0;false;false;63;95;191;;; -63213;1;0;false;false;;;;;; -63214;8;0;false;false;63;95;191;;; -63222;5;0;false;false;127;127;159;;; -63227;3;0;false;false;;;;;; -63230;1;0;false;false;63;95;191;;; -63231;4;0;false;false;;;;;; -63235;4;0;false;false;127;127;159;;; -63239;27;0;false;false;63;95;191;;; -63266;1;0;false;false;;;;;; -63267;1;0;false;false;127;127;159;;; -63268;1;0;false;false;;;;;; -63269;2;0;false;false;63;95;191;;; -63271;1;0;false;false;;;;;; -63272;3;0;false;false;63;95;191;;; -63275;1;0;false;false;;;;;; -63276;6;0;false;false;63;95;191;;; -63282;1;0;false;false;;;;;; -63283;4;0;false;false;63;95;191;;; -63287;1;0;false;false;;;;;; -63288;3;0;false;false;63;95;191;;; -63291;1;0;false;false;;;;;; -63292;6;0;false;false;63;95;191;;; -63298;1;0;false;false;;;;;; -63299;4;0;false;false;63;95;191;;; -63303;1;0;false;false;;;;;; -63304;7;0;false;false;63;95;191;;; -63311;1;0;false;false;;;;;; -63312;3;0;false;false;63;95;191;;; -63315;1;0;false;false;;;;;; -63316;8;0;false;false;63;95;191;;; -63324;5;0;false;false;127;127;159;;; -63329;3;0;false;false;;;;;; -63332;1;0;false;false;63;95;191;;; -63333;1;0;false;false;;;;;; -63334;5;0;false;false;127;127;159;;; -63339;3;0;false;false;;;;;; -63342;1;0;false;false;63;95;191;;; -63343;1;0;false;false;;;;;; -63344;11;1;false;false;127;159;191;;; -63355;24;0;false;false;63;95;191;;; -63379;1;0;false;false;;;;;; -63380;4;0;false;false;127;127;159;;; -63384;3;0;false;false;;;;;; -63387;1;0;false;false;63;95;191;;; -63388;4;0;false;false;;;;;; -63392;4;0;false;false;127;127;159;;; -63396;19;0;false;false;63;95;191;;; -63415;1;0;false;false;;;;;; -63416;4;0;false;false;63;95;191;;; -63420;1;0;false;false;;;;;; -63421;8;0;false;false;63;95;191;;; -63429;1;0;false;false;;;;;; -63430;2;0;false;false;63;95;191;;; -63432;1;0;false;false;;;;;; -63433;4;0;false;false;63;95;191;;; -63437;5;0;false;false;127;127;159;;; -63442;3;0;false;false;;;;;; -63445;1;0;false;false;63;95;191;;; -63446;1;0;false;false;;;;;; -63447;5;0;false;false;127;127;159;;; -63452;3;0;false;false;;;;;; -63455;2;0;false;false;63;95;191;;; -63457;2;0;false;false;;;;;; -63459;6;1;false;false;127;0;85;;; -63465;1;0;false;false;;;;;; -63466;4;1;false;false;127;0;85;;; -63470;1;0;false;false;;;;;; -63471;32;0;false;false;0;0;0;;; -63503;1;0;false;false;;;;;; -63504;15;0;false;false;0;0;0;;; -63519;1;0;false;false;;;;;; -63520;1;0;false;false;0;0;0;;; -63521;3;0;false;false;;;;;; -63524;14;0;false;false;0;0;0;;; -63538;3;0;false;false;;;;;; -63541;2;1;false;false;127;0;85;;; -63543;1;0;false;false;;;;;; -63544;15;0;false;false;0;0;0;;; -63559;1;0;false;false;;;;;; -63560;2;0;false;false;0;0;0;;; -63562;1;0;false;false;;;;;; -63563;4;1;false;false;127;0;85;;; -63567;1;0;false;false;0;0;0;;; -63568;1;0;false;false;;;;;; -63569;1;0;false;false;0;0;0;;; -63570;4;0;false;false;;;;;; -63574;35;0;false;false;0;0;0;;; -63609;3;0;false;false;;;;;; -63612;1;0;false;false;0;0;0;;; -63613;3;0;false;false;;;;;; -63616;13;0;false;false;0;0;0;;; -63629;1;0;false;false;;;;;; -63630;13;0;false;false;0;0;0;;; -63643;1;0;false;false;;;;;; -63644;1;0;false;false;0;0;0;;; -63645;1;0;false;false;;;;;; -63646;3;1;false;false;127;0;85;;; -63649;1;0;false;false;;;;;; -63650;30;0;false;false;0;0;0;;; -63680;3;0;false;false;;;;;; -63683;23;0;false;false;0;0;0;;; -63706;1;0;false;false;;;;;; -63707;15;0;false;false;0;0;0;;; -63722;2;0;false;false;;;;;; -63724;1;0;false;false;0;0;0;;; -63725;2;0;false;false;;;;;; -63727;3;0;false;false;63;95;191;;; -63730;5;0;false;false;;;;;; -63735;1;0;false;false;63;95;191;;; -63736;1;0;false;false;;;;;; -63737;4;0;false;false;63;95;191;;; -63741;1;0;false;false;;;;;; -63742;1;0;false;false;63;95;191;;; -63743;1;0;false;false;;;;;; -63744;9;0;false;false;63;95;191;;; -63753;1;0;false;false;;;;;; -63754;9;0;false;false;63;95;191;;; -63763;1;0;false;false;;;;;; -63764;1;0;false;false;63;95;191;;; -63765;1;0;false;false;;;;;; -63766;9;0;false;false;63;95;191;;; -63775;1;0;false;false;;;;;; -63776;5;0;false;false;63;95;191;;; -63781;1;0;false;false;;;;;; -63782;2;0;false;false;63;95;191;;; -63784;1;0;false;false;;;;;; -63785;4;0;false;false;63;95;191;;; -63789;1;0;false;false;;;;;; -63790;2;0;false;false;63;95;191;;; -63792;1;0;false;false;;;;;; -63793;3;0;false;false;63;95;191;;; -63796;1;0;false;false;;;;;; -63797;6;0;false;false;63;95;191;;; -63803;1;0;false;false;;;;;; -63804;4;0;false;false;63;95;191;;; -63808;1;0;false;false;;;;;; -63809;3;0;false;false;63;95;191;;; -63812;4;0;false;false;;;;;; -63816;1;0;false;false;63;95;191;;; -63817;1;0;false;false;;;;;; -63818;9;0;false;false;63;95;191;;; -63827;1;0;false;false;;;;;; -63828;3;0;false;false;63;95;191;;; -63831;1;0;false;false;;;;;; -63832;8;0;false;false;63;95;191;;; -63840;3;0;false;false;;;;;; -63843;1;0;false;false;63;95;191;;; -63844;1;0;false;false;;;;;; -63845;3;0;false;false;127;127;159;;; -63848;3;0;false;false;;;;;; -63851;1;0;false;false;63;95;191;;; -63852;1;0;false;false;;;;;; -63853;4;0;false;false;63;95;191;;; -63857;1;0;false;false;;;;;; -63858;6;0;false;false;127;127;159;;; -63864;14;0;false;false;63;95;191;;; -63878;7;0;false;false;127;127;159;;; -63885;1;0;false;false;;;;;; -63886;2;0;false;false;63;95;191;;; -63888;1;0;false;false;;;;;; -63889;7;0;false;false;63;95;191;;; -63896;1;0;false;false;;;;;; -63897;3;0;false;false;63;95;191;;; -63900;1;0;false;false;;;;;; -63901;5;0;false;false;63;95;191;;; -63906;1;0;false;false;;;;;; -63907;1;0;false;false;63;95;191;;; -63908;1;0;false;false;;;;;; -63909;3;0;false;false;63;95;191;;; -63912;1;0;false;false;;;;;; -63913;1;0;false;false;63;95;191;;; -63914;1;0;false;false;;;;;; -63915;6;0;false;false;63;95;191;;; -63921;1;0;false;false;;;;;; -63922;7;0;false;false;63;95;191;;; -63929;3;0;false;false;;;;;; -63932;1;0;false;false;63;95;191;;; -63933;1;0;false;false;;;;;; -63934;3;0;false;false;63;95;191;;; -63937;1;0;false;false;;;;;; -63938;5;0;false;false;63;95;191;;; -63943;1;0;false;false;;;;;; -63944;3;0;false;false;63;95;191;;; -63947;1;0;false;false;;;;;; -63948;3;0;false;false;63;95;191;;; -63951;1;0;false;false;;;;;; -63952;5;0;false;false;63;95;191;;; -63957;1;0;false;false;;;;;; -63958;7;0;false;false;63;95;191;;; -63965;1;0;false;false;;;;;; -63966;2;0;false;false;63;95;191;;; -63968;1;0;false;false;;;;;; -63969;3;0;false;false;63;95;191;;; -63972;1;0;false;false;;;;;; -63973;10;0;false;false;63;95;191;;; -63983;3;0;false;false;;;;;; -63986;1;0;false;false;63;95;191;;; -63987;1;0;false;false;;;;;; -63988;6;0;false;false;127;127;159;;; -63994;21;0;false;false;63;95;191;;; -64015;7;0;false;false;127;127;159;;; -64022;1;0;false;false;;;;;; -64023;2;0;false;false;63;95;191;;; -64025;1;0;false;false;;;;;; -64026;3;0;false;false;63;95;191;;; -64029;1;0;false;false;;;;;; -64030;6;0;false;false;63;95;191;;; -64036;1;0;false;false;;;;;; -64037;3;0;false;false;63;95;191;;; -64040;1;0;false;false;;;;;; -64041;12;0;false;false;63;95;191;;; -64053;3;0;false;false;;;;;; -64056;1;0;false;false;63;95;191;;; -64057;1;0;false;false;;;;;; -64058;4;0;false;false;127;127;159;;; -64062;3;0;false;false;;;;;; -64065;1;0;false;false;63;95;191;;; -64066;4;0;false;false;;;;;; -64070;1;0;false;false;63;95;191;;; -64071;1;0;false;false;;;;;; -64072;7;1;false;false;127;159;191;;; -64079;8;0;false;false;63;95;191;;; -64087;1;0;false;false;;;;;; -64088;3;0;false;false;63;95;191;;; -64091;1;0;false;false;;;;;; -64092;8;0;false;false;63;95;191;;; -64100;3;0;false;false;;;;;; -64103;1;0;false;false;63;95;191;;; -64104;1;0;false;false;;;;;; -64105;11;1;false;false;127;159;191;;; -64116;12;0;false;false;63;95;191;;; -64128;1;0;false;false;;;;;; -64129;4;0;false;false;127;127;159;;; -64133;3;0;false;false;;;;;; -64136;1;0;false;false;63;95;191;;; -64137;4;0;false;false;;;;;; -64141;4;0;false;false;127;127;159;;; -64145;21;0;false;false;63;95;191;;; -64166;1;0;false;false;;;;;; -64167;1;0;false;false;127;127;159;;; -64168;1;0;false;false;;;;;; -64169;2;0;false;false;63;95;191;;; -64171;1;0;false;false;;;;;; -64172;3;0;false;false;63;95;191;;; -64175;1;0;false;false;;;;;; -64176;8;0;false;false;63;95;191;;; -64184;1;0;false;false;;;;;; -64185;3;0;false;false;63;95;191;;; -64188;1;0;false;false;;;;;; -64189;4;0;false;false;63;95;191;;; -64193;1;0;false;false;;;;;; -64194;8;0;false;false;63;95;191;;; -64202;5;0;false;false;127;127;159;;; -64207;3;0;false;false;;;;;; -64210;1;0;false;false;63;95;191;;; -64211;4;0;false;false;;;;;; -64215;4;0;false;false;127;127;159;;; -64219;27;0;false;false;63;95;191;;; -64246;1;0;false;false;;;;;; -64247;1;0;false;false;127;127;159;;; -64248;1;0;false;false;;;;;; -64249;2;0;false;false;63;95;191;;; -64251;1;0;false;false;;;;;; -64252;3;0;false;false;63;95;191;;; -64255;1;0;false;false;;;;;; -64256;6;0;false;false;63;95;191;;; -64262;1;0;false;false;;;;;; -64263;4;0;false;false;63;95;191;;; -64267;1;0;false;false;;;;;; -64268;3;0;false;false;63;95;191;;; -64271;1;0;false;false;;;;;; -64272;6;0;false;false;63;95;191;;; -64278;1;0;false;false;;;;;; -64279;4;0;false;false;63;95;191;;; -64283;1;0;false;false;;;;;; -64284;7;0;false;false;63;95;191;;; -64291;1;0;false;false;;;;;; -64292;3;0;false;false;63;95;191;;; -64295;1;0;false;false;;;;;; -64296;8;0;false;false;63;95;191;;; -64304;5;0;false;false;127;127;159;;; -64309;3;0;false;false;;;;;; -64312;1;0;false;false;63;95;191;;; -64313;1;0;false;false;;;;;; -64314;5;0;false;false;127;127;159;;; -64319;3;0;false;false;;;;;; -64322;1;0;false;false;63;95;191;;; -64323;1;0;false;false;;;;;; -64324;11;1;false;false;127;159;191;;; -64335;24;0;false;false;63;95;191;;; -64359;1;0;false;false;;;;;; -64360;4;0;false;false;127;127;159;;; -64364;3;0;false;false;;;;;; -64367;1;0;false;false;63;95;191;;; -64368;4;0;false;false;;;;;; -64372;4;0;false;false;127;127;159;;; -64376;19;0;false;false;63;95;191;;; -64395;1;0;false;false;;;;;; -64396;4;0;false;false;63;95;191;;; -64400;1;0;false;false;;;;;; -64401;8;0;false;false;63;95;191;;; -64409;1;0;false;false;;;;;; -64410;2;0;false;false;63;95;191;;; -64412;1;0;false;false;;;;;; -64413;4;0;false;false;63;95;191;;; -64417;5;0;false;false;127;127;159;;; -64422;3;0;false;false;;;;;; -64425;1;0;false;false;63;95;191;;; -64426;1;0;false;false;;;;;; -64427;5;0;false;false;127;127;159;;; -64432;3;0;false;false;;;;;; -64435;2;0;false;false;63;95;191;;; -64437;2;0;false;false;;;;;; -64439;6;1;false;false;127;0;85;;; -64445;1;0;false;false;;;;;; -64446;4;1;false;false;127;0;85;;; -64450;1;0;false;false;;;;;; -64451;38;0;false;false;0;0;0;;; -64489;1;0;false;false;;;;;; -64490;9;0;false;false;0;0;0;;; -64499;1;0;false;false;;;;;; -64500;1;0;false;false;0;0;0;;; -64501;3;0;false;false;;;;;; -64504;14;0;false;false;0;0;0;;; -64518;3;0;false;false;;;;;; -64521;2;1;false;false;127;0;85;;; -64523;1;0;false;false;;;;;; -64524;9;0;false;false;0;0;0;;; -64533;1;0;false;false;;;;;; -64534;2;0;false;false;0;0;0;;; -64536;1;0;false;false;;;;;; -64537;4;1;false;false;127;0;85;;; -64541;1;0;false;false;0;0;0;;; -64542;1;0;false;false;;;;;; -64543;1;0;false;false;0;0;0;;; -64544;4;0;false;false;;;;;; -64548;35;0;false;false;0;0;0;;; -64583;3;0;false;false;;;;;; -64586;1;0;false;false;0;0;0;;; -64587;3;0;false;false;;;;;; -64590;13;0;false;false;0;0;0;;; -64603;1;0;false;false;;;;;; -64604;13;0;false;false;0;0;0;;; -64617;1;0;false;false;;;;;; -64618;1;0;false;false;0;0;0;;; -64619;1;0;false;false;;;;;; -64620;3;1;false;false;127;0;85;;; -64623;1;0;false;false;;;;;; -64624;24;0;false;false;0;0;0;;; -64648;3;0;false;false;;;;;; -64651;26;0;false;false;0;0;0;;; -64677;1;0;false;false;;;;;; -64678;15;0;false;false;0;0;0;;; -64693;3;0;false;false;;;;;; -64696;1;0;false;false;0;0;0;;; -64697;2;0;false;false;;;;;; -64699;3;0;false;false;63;95;191;;; -64702;5;0;false;false;;;;;; -64707;1;0;false;false;63;95;191;;; -64708;1;0;false;false;;;;;; -64709;4;0;false;false;63;95;191;;; -64713;1;0;false;false;;;;;; -64714;1;0;false;false;63;95;191;;; -64715;1;0;false;false;;;;;; -64716;6;0;false;false;63;95;191;;; -64722;1;0;false;false;;;;;; -64723;3;0;false;false;63;95;191;;; -64726;1;0;false;false;;;;;; -64727;9;0;false;false;63;95;191;;; -64736;1;0;false;false;;;;;; -64737;1;0;false;false;63;95;191;;; -64738;1;0;false;false;;;;;; -64739;9;0;false;false;63;95;191;;; -64748;1;0;false;false;;;;;; -64749;5;0;false;false;63;95;191;;; -64754;1;0;false;false;;;;;; -64755;2;0;false;false;63;95;191;;; -64757;1;0;false;false;;;;;; -64758;4;0;false;false;63;95;191;;; -64762;1;0;false;false;;;;;; -64763;2;0;false;false;63;95;191;;; -64765;1;0;false;false;;;;;; -64766;3;0;false;false;63;95;191;;; -64769;1;0;false;false;;;;;; -64770;6;0;false;false;63;95;191;;; -64776;1;0;false;false;;;;;; -64777;4;0;false;false;63;95;191;;; -64781;1;0;false;false;;;;;; -64782;1;0;false;false;63;95;191;;; -64783;1;0;false;false;;;;;; -64784;3;0;false;false;63;95;191;;; -64787;4;0;false;false;;;;;; -64791;1;0;false;false;63;95;191;;; -64792;1;0;false;false;;;;;; -64793;2;0;false;false;63;95;191;;; -64795;1;0;false;false;;;;;; -64796;8;0;false;false;63;95;191;;; -64804;1;0;false;false;;;;;; -64805;3;0;false;false;63;95;191;;; -64808;1;0;false;false;;;;;; -64809;6;0;false;false;63;95;191;;; -64815;1;0;false;false;;;;;; -64816;7;0;false;false;63;95;191;;; -64823;1;0;false;false;;;;;; -64824;3;0;false;false;63;95;191;;; -64827;1;0;false;false;;;;;; -64828;3;0;false;false;63;95;191;;; -64831;1;0;false;false;;;;;; -64832;5;0;false;false;63;95;191;;; -64837;1;0;false;false;;;;;; -64838;2;0;false;false;63;95;191;;; -64840;1;0;false;false;;;;;; -64841;3;0;false;false;63;95;191;;; -64844;1;0;false;false;;;;;; -64845;8;0;false;false;63;95;191;;; -64853;1;0;false;false;;;;;; -64854;4;0;false;false;63;95;191;;; -64858;1;0;false;false;;;;;; -64859;3;0;false;false;63;95;191;;; -64862;1;0;false;false;;;;;; -64863;4;0;false;false;63;95;191;;; -64867;1;0;false;false;;;;;; -64868;5;0;false;false;63;95;191;;; -64873;4;0;false;false;;;;;; -64877;1;0;false;false;63;95;191;;; -64878;1;0;false;false;;;;;; -64879;2;0;false;false;63;95;191;;; -64881;1;0;false;false;;;;;; -64882;3;0;false;false;63;95;191;;; -64885;1;0;false;false;;;;;; -64886;5;0;false;false;63;95;191;;; -64891;1;0;false;false;;;;;; -64892;2;0;false;false;63;95;191;;; -64894;1;0;false;false;;;;;; -64895;6;0;false;false;63;95;191;;; -64901;4;0;false;false;;;;;; -64905;1;0;false;false;63;95;191;;; -64906;1;0;false;false;;;;;; -64907;3;0;false;false;127;127;159;;; -64910;3;0;false;false;;;;;; -64913;1;0;false;false;63;95;191;;; -64914;3;0;false;false;;;;;; -64917;1;0;false;false;63;95;191;;; -64918;1;0;false;false;;;;;; -64919;7;1;false;false;127;159;191;;; -64926;8;0;false;false;63;95;191;;; -64934;1;0;false;false;;;;;; -64935;3;0;false;false;63;95;191;;; -64938;1;0;false;false;;;;;; -64939;8;0;false;false;63;95;191;;; -64947;3;0;false;false;;;;;; -64950;1;0;false;false;63;95;191;;; -64951;1;0;false;false;;;;;; -64952;11;1;false;false;127;159;191;;; -64963;12;0;false;false;63;95;191;;; -64975;1;0;false;false;;;;;; -64976;4;0;false;false;127;127;159;;; -64980;3;0;false;false;;;;;; -64983;1;0;false;false;63;95;191;;; -64984;4;0;false;false;;;;;; -64988;4;0;false;false;127;127;159;;; -64992;21;0;false;false;63;95;191;;; -65013;1;0;false;false;;;;;; -65014;1;0;false;false;127;127;159;;; -65015;1;0;false;false;;;;;; -65016;2;0;false;false;63;95;191;;; -65018;1;0;false;false;;;;;; -65019;3;0;false;false;63;95;191;;; -65022;1;0;false;false;;;;;; -65023;8;0;false;false;63;95;191;;; -65031;1;0;false;false;;;;;; -65032;3;0;false;false;63;95;191;;; -65035;1;0;false;false;;;;;; -65036;4;0;false;false;63;95;191;;; -65040;1;0;false;false;;;;;; -65041;8;0;false;false;63;95;191;;; -65049;5;0;false;false;127;127;159;;; -65054;3;0;false;false;;;;;; -65057;1;0;false;false;63;95;191;;; -65058;4;0;false;false;;;;;; -65062;4;0;false;false;127;127;159;;; -65066;27;0;false;false;63;95;191;;; -65093;1;0;false;false;;;;;; -65094;1;0;false;false;127;127;159;;; -65095;1;0;false;false;;;;;; -65096;2;0;false;false;63;95;191;;; -65098;1;0;false;false;;;;;; -65099;3;0;false;false;63;95;191;;; -65102;1;0;false;false;;;;;; -65103;6;0;false;false;63;95;191;;; -65109;1;0;false;false;;;;;; -65110;4;0;false;false;63;95;191;;; -65114;1;0;false;false;;;;;; -65115;3;0;false;false;63;95;191;;; -65118;1;0;false;false;;;;;; -65119;6;0;false;false;63;95;191;;; -65125;1;0;false;false;;;;;; -65126;4;0;false;false;63;95;191;;; -65130;1;0;false;false;;;;;; -65131;7;0;false;false;63;95;191;;; -65138;1;0;false;false;;;;;; -65139;3;0;false;false;63;95;191;;; -65142;1;0;false;false;;;;;; -65143;8;0;false;false;63;95;191;;; -65151;5;0;false;false;127;127;159;;; -65156;3;0;false;false;;;;;; -65159;1;0;false;false;63;95;191;;; -65160;1;0;false;false;;;;;; -65161;5;0;false;false;127;127;159;;; -65166;3;0;false;false;;;;;; -65169;1;0;false;false;63;95;191;;; -65170;1;0;false;false;;;;;; -65171;11;1;false;false;127;159;191;;; -65182;24;0;false;false;63;95;191;;; -65206;1;0;false;false;;;;;; -65207;4;0;false;false;127;127;159;;; -65211;3;0;false;false;;;;;; -65214;1;0;false;false;63;95;191;;; -65215;4;0;false;false;;;;;; -65219;4;0;false;false;127;127;159;;; -65223;19;0;false;false;63;95;191;;; -65242;1;0;false;false;;;;;; -65243;4;0;false;false;63;95;191;;; -65247;1;0;false;false;;;;;; -65248;8;0;false;false;63;95;191;;; -65256;1;0;false;false;;;;;; -65257;2;0;false;false;63;95;191;;; -65259;1;0;false;false;;;;;; -65260;4;0;false;false;63;95;191;;; -65264;5;0;false;false;127;127;159;;; -65269;3;0;false;false;;;;;; -65272;1;0;false;false;63;95;191;;; -65273;1;0;false;false;;;;;; -65274;5;0;false;false;127;127;159;;; -65279;3;0;false;false;;;;;; -65282;2;0;false;false;63;95;191;;; -65284;2;0;false;false;;;;;; -65286;6;1;false;false;127;0;85;;; -65292;1;0;false;false;;;;;; -65293;4;1;false;false;127;0;85;;; -65297;1;0;false;false;;;;;; -65298;38;0;false;false;0;0;0;;; -65336;1;0;false;false;;;;;; -65337;9;0;false;false;0;0;0;;; -65346;1;0;false;false;;;;;; -65347;1;0;false;false;0;0;0;;; -65348;3;0;false;false;;;;;; -65351;14;0;false;false;0;0;0;;; -65365;3;0;false;false;;;;;; -65368;2;1;false;false;127;0;85;;; -65370;1;0;false;false;;;;;; -65371;9;0;false;false;0;0;0;;; -65380;1;0;false;false;;;;;; -65381;2;0;false;false;0;0;0;;; -65383;1;0;false;false;;;;;; -65384;4;1;false;false;127;0;85;;; -65388;1;0;false;false;0;0;0;;; -65389;1;0;false;false;;;;;; -65390;1;0;false;false;0;0;0;;; -65391;4;0;false;false;;;;;; -65395;35;0;false;false;0;0;0;;; -65430;3;0;false;false;;;;;; -65433;1;0;false;false;0;0;0;;; -65434;3;0;false;false;;;;;; -65437;18;0;false;false;0;0;0;;; -65455;1;0;false;false;;;;;; -65456;13;0;false;false;0;0;0;;; -65469;1;0;false;false;;;;;; -65470;1;0;false;false;0;0;0;;; -65471;1;0;false;false;;;;;; -65472;3;1;false;false;127;0;85;;; -65475;1;0;false;false;;;;;; -65476;29;0;false;false;0;0;0;;; -65505;3;0;false;false;;;;;; -65508;22;0;false;false;0;0;0;;; -65530;1;0;false;false;;;;;; -65531;15;0;false;false;0;0;0;;; -65546;3;0;false;false;;;;;; -65549;1;0;false;false;0;0;0;;; -65550;2;0;false;false;;;;;; -65552;3;0;false;false;63;95;191;;; -65555;5;0;false;false;;;;;; -65560;1;0;false;false;63;95;191;;; -65561;1;0;false;false;;;;;; -65562;4;0;false;false;63;95;191;;; -65566;1;0;false;false;;;;;; -65567;1;0;false;false;63;95;191;;; -65568;1;0;false;false;;;;;; -65569;6;0;false;false;63;95;191;;; -65575;1;0;false;false;;;;;; -65576;9;0;false;false;63;95;191;;; -65585;1;0;false;false;;;;;; -65586;1;0;false;false;63;95;191;;; -65587;1;0;false;false;;;;;; -65588;6;0;false;false;63;95;191;;; -65594;1;0;false;false;;;;;; -65595;5;0;false;false;63;95;191;;; -65600;1;0;false;false;;;;;; -65601;2;0;false;false;63;95;191;;; -65603;1;0;false;false;;;;;; -65604;4;0;false;false;63;95;191;;; -65608;1;0;false;false;;;;;; -65609;2;0;false;false;63;95;191;;; -65611;1;0;false;false;;;;;; -65612;3;0;false;false;63;95;191;;; -65615;1;0;false;false;;;;;; -65616;6;0;false;false;63;95;191;;; -65622;1;0;false;false;;;;;; -65623;4;0;false;false;63;95;191;;; -65627;1;0;false;false;;;;;; -65628;3;0;false;false;63;95;191;;; -65631;1;0;false;false;;;;;; -65632;6;0;false;false;63;95;191;;; -65638;1;0;false;false;;;;;; -65639;4;0;false;false;63;95;191;;; -65643;4;0;false;false;;;;;; -65647;1;0;false;false;63;95;191;;; -65648;1;0;false;false;;;;;; -65649;2;0;false;false;63;95;191;;; -65651;1;0;false;false;;;;;; -65652;5;0;false;false;63;95;191;;; -65657;1;0;false;false;;;;;; -65658;2;0;false;false;63;95;191;;; -65660;1;0;false;false;;;;;; -65661;7;0;false;false;63;95;191;;; -65668;1;0;false;false;;;;;; -65669;3;0;false;false;63;95;191;;; -65672;1;0;false;false;;;;;; -65673;8;0;false;false;63;95;191;;; -65681;1;0;false;false;;;;;; -65682;3;0;false;false;63;95;191;;; -65685;1;0;false;false;;;;;; -65686;3;0;false;false;63;95;191;;; -65689;1;0;false;false;;;;;; -65690;3;0;false;false;63;95;191;;; -65693;1;0;false;false;;;;;; -65694;5;0;false;false;63;95;191;;; -65699;1;0;false;false;;;;;; -65700;4;0;false;false;63;95;191;;; -65704;1;0;false;false;;;;;; -65705;3;0;false;false;63;95;191;;; -65708;1;0;false;false;;;;;; -65709;3;0;false;false;63;95;191;;; -65712;1;0;false;false;;;;;; -65713;4;0;false;false;63;95;191;;; -65717;1;0;false;false;;;;;; -65718;5;0;false;false;63;95;191;;; -65723;1;0;false;false;;;;;; -65724;2;0;false;false;63;95;191;;; -65726;4;0;false;false;;;;;; -65730;1;0;false;false;63;95;191;;; -65731;1;0;false;false;;;;;; -65732;6;0;false;false;63;95;191;;; -65738;1;0;false;false;;;;;; -65739;3;0;false;false;63;95;191;;; -65742;1;0;false;false;;;;;; -65743;4;0;false;false;63;95;191;;; -65747;1;0;false;false;;;;;; -65748;4;0;false;false;63;95;191;;; -65752;1;0;false;false;;;;;; -65753;2;0;false;false;63;95;191;;; -65755;1;0;false;false;;;;;; -65756;3;0;false;false;63;95;191;;; -65759;1;0;false;false;;;;;; -65760;2;0;false;false;63;95;191;;; -65762;1;0;false;false;;;;;; -65763;3;0;false;false;63;95;191;;; -65766;1;0;false;false;;;;;; -65767;6;0;false;false;63;95;191;;; -65773;1;0;false;false;;;;;; -65774;2;0;false;false;63;95;191;;; -65776;1;0;false;false;;;;;; -65777;2;0;false;false;63;95;191;;; -65779;1;0;false;false;;;;;; -65780;5;0;false;false;63;95;191;;; -65785;1;0;false;false;;;;;; -65786;3;0;false;false;63;95;191;;; -65789;1;0;false;false;;;;;; -65790;6;0;false;false;63;95;191;;; -65796;1;0;false;false;;;;;; -65797;2;0;false;false;63;95;191;;; -65799;1;0;false;false;;;;;; -65800;6;0;false;false;63;95;191;;; -65806;1;0;false;false;;;;;; -65807;3;0;false;false;63;95;191;;; -65810;4;0;false;false;;;;;; -65814;1;0;false;false;63;95;191;;; -65815;1;0;false;false;;;;;; -65816;4;0;false;false;63;95;191;;; -65820;1;0;false;false;;;;;; -65821;7;0;false;false;63;95;191;;; -65828;3;0;false;false;;;;;; -65831;1;0;false;false;63;95;191;;; -65832;1;0;false;false;;;;;; -65833;3;0;false;false;127;127;159;;; -65836;3;0;false;false;;;;;; -65839;1;0;false;false;63;95;191;;; -65840;3;0;false;false;;;;;; -65843;1;0;false;false;63;95;191;;; -65844;1;0;false;false;;;;;; -65845;7;1;false;false;127;159;191;;; -65852;14;0;false;false;63;95;191;;; -65866;1;0;false;false;;;;;; -65867;3;0;false;false;63;95;191;;; -65870;1;0;false;false;;;;;; -65871;8;0;false;false;63;95;191;;; -65879;3;0;false;false;;;;;; -65882;1;0;false;false;63;95;191;;; -65883;1;0;false;false;;;;;; -65884;11;1;false;false;127;159;191;;; -65895;12;0;false;false;63;95;191;;; -65907;1;0;false;false;;;;;; -65908;4;0;false;false;127;127;159;;; -65912;3;0;false;false;;;;;; -65915;1;0;false;false;63;95;191;;; -65916;4;0;false;false;;;;;; -65920;4;0;false;false;127;127;159;;; -65924;21;0;false;false;63;95;191;;; -65945;1;0;false;false;;;;;; -65946;1;0;false;false;127;127;159;;; -65947;1;0;false;false;;;;;; -65948;2;0;false;false;63;95;191;;; -65950;1;0;false;false;;;;;; -65951;3;0;false;false;63;95;191;;; -65954;1;0;false;false;;;;;; -65955;8;0;false;false;63;95;191;;; -65963;1;0;false;false;;;;;; -65964;3;0;false;false;63;95;191;;; -65967;1;0;false;false;;;;;; -65968;4;0;false;false;63;95;191;;; -65972;1;0;false;false;;;;;; -65973;8;0;false;false;63;95;191;;; -65981;5;0;false;false;127;127;159;;; -65986;3;0;false;false;;;;;; -65989;1;0;false;false;63;95;191;;; -65990;4;0;false;false;;;;;; -65994;4;0;false;false;127;127;159;;; -65998;27;0;false;false;63;95;191;;; -66025;1;0;false;false;;;;;; -66026;1;0;false;false;127;127;159;;; -66027;1;0;false;false;;;;;; -66028;2;0;false;false;63;95;191;;; -66030;1;0;false;false;;;;;; -66031;3;0;false;false;63;95;191;;; -66034;1;0;false;false;;;;;; -66035;6;0;false;false;63;95;191;;; -66041;1;0;false;false;;;;;; -66042;4;0;false;false;63;95;191;;; -66046;1;0;false;false;;;;;; -66047;3;0;false;false;63;95;191;;; -66050;1;0;false;false;;;;;; -66051;6;0;false;false;63;95;191;;; -66057;1;0;false;false;;;;;; -66058;4;0;false;false;63;95;191;;; -66062;1;0;false;false;;;;;; -66063;7;0;false;false;63;95;191;;; -66070;1;0;false;false;;;;;; -66071;3;0;false;false;63;95;191;;; -66074;1;0;false;false;;;;;; -66075;8;0;false;false;63;95;191;;; -66083;5;0;false;false;127;127;159;;; -66088;3;0;false;false;;;;;; -66091;1;0;false;false;63;95;191;;; -66092;1;0;false;false;;;;;; -66093;5;0;false;false;127;127;159;;; -66098;3;0;false;false;;;;;; -66101;1;0;false;false;63;95;191;;; -66102;1;0;false;false;;;;;; -66103;11;1;false;false;127;159;191;;; -66114;24;0;false;false;63;95;191;;; -66138;1;0;false;false;;;;;; -66139;4;0;false;false;127;127;159;;; -66143;3;0;false;false;;;;;; -66146;1;0;false;false;63;95;191;;; -66147;4;0;false;false;;;;;; -66151;4;0;false;false;127;127;159;;; -66155;19;0;false;false;63;95;191;;; -66174;1;0;false;false;;;;;; -66175;4;0;false;false;63;95;191;;; -66179;1;0;false;false;;;;;; -66180;8;0;false;false;63;95;191;;; -66188;1;0;false;false;;;;;; -66189;2;0;false;false;63;95;191;;; -66191;1;0;false;false;;;;;; -66192;4;0;false;false;63;95;191;;; -66196;5;0;false;false;127;127;159;;; -66201;3;0;false;false;;;;;; -66204;1;0;false;false;63;95;191;;; -66205;1;0;false;false;;;;;; -66206;5;0;false;false;127;127;159;;; -66211;3;0;false;false;;;;;; -66214;2;0;false;false;63;95;191;;; -66216;2;0;false;false;;;;;; -66218;6;1;false;false;127;0;85;;; -66224;1;0;false;false;;;;;; -66225;4;1;false;false;127;0;85;;; -66229;1;0;false;false;;;;;; -66230;32;0;false;false;0;0;0;;; -66262;1;0;false;false;;;;;; -66263;15;0;false;false;0;0;0;;; -66278;1;0;false;false;;;;;; -66279;1;0;false;false;0;0;0;;; -66280;3;0;false;false;;;;;; -66283;14;0;false;false;0;0;0;;; -66297;3;0;false;false;;;;;; -66300;2;1;false;false;127;0;85;;; -66302;1;0;false;false;;;;;; -66303;15;0;false;false;0;0;0;;; -66318;1;0;false;false;;;;;; -66319;2;0;false;false;0;0;0;;; -66321;1;0;false;false;;;;;; -66322;4;1;false;false;127;0;85;;; -66326;1;0;false;false;0;0;0;;; -66327;1;0;false;false;;;;;; -66328;1;0;false;false;0;0;0;;; -66329;4;0;false;false;;;;;; -66333;35;0;false;false;0;0;0;;; -66368;3;0;false;false;;;;;; -66371;1;0;false;false;0;0;0;;; -66372;3;0;false;false;;;;;; -66375;13;0;false;false;0;0;0;;; -66388;1;0;false;false;;;;;; -66389;13;0;false;false;0;0;0;;; -66402;1;0;false;false;;;;;; -66403;1;0;false;false;0;0;0;;; -66404;1;0;false;false;;;;;; -66405;3;1;false;false;127;0;85;;; -66408;1;0;false;false;;;;;; -66409;30;0;false;false;0;0;0;;; -66439;3;0;false;false;;;;;; -66442;23;0;false;false;0;0;0;;; -66465;1;0;false;false;;;;;; -66466;15;0;false;false;0;0;0;;; -66481;2;0;false;false;;;;;; -66483;1;0;false;false;0;0;0;;; -66484;2;0;false;false;;;;;; -66486;3;0;false;false;63;95;191;;; -66489;4;0;false;false;;;;;; -66493;1;0;false;false;63;95;191;;; -66494;1;0;false;false;;;;;; -66495;7;0;false;false;63;95;191;;; -66502;1;0;false;false;;;;;; -66503;1;0;false;false;63;95;191;;; -66504;1;0;false;false;;;;;; -66505;6;0;false;false;63;95;191;;; -66511;1;0;false;false;;;;;; -66512;2;0;false;false;63;95;191;;; -66514;1;0;false;false;;;;;; -66515;3;0;false;false;63;95;191;;; -66518;1;0;false;false;;;;;; -66519;4;0;false;false;63;95;191;;; -66523;1;0;false;false;;;;;; -66524;2;0;false;false;63;95;191;;; -66526;1;0;false;false;;;;;; -66527;3;0;false;false;63;95;191;;; -66530;1;0;false;false;;;;;; -66531;3;0;false;false;63;95;191;;; -66534;1;0;false;false;;;;;; -66535;2;0;false;false;63;95;191;;; -66537;1;0;false;false;;;;;; -66538;3;0;false;false;63;95;191;;; -66541;1;0;false;false;;;;;; -66542;7;0;false;false;63;95;191;;; -66549;3;0;false;false;;;;;; -66552;1;0;false;false;63;95;191;;; -66553;1;0;false;false;;;;;; -66554;3;0;false;false;127;127;159;;; -66557;3;0;false;false;;;;;; -66560;1;0;false;false;63;95;191;;; -66561;3;0;false;false;;;;;; -66564;1;0;false;false;63;95;191;;; -66565;1;0;false;false;;;;;; -66566;7;1;false;false;127;159;191;;; -66573;6;0;false;false;63;95;191;;; -66579;1;0;false;false;;;;;; -66580;3;0;false;false;63;95;191;;; -66583;1;0;false;false;;;;;; -66584;6;0;false;false;63;95;191;;; -66590;1;0;false;false;;;;;; -66591;2;0;false;false;63;95;191;;; -66593;1;0;false;false;;;;;; -66594;2;0;false;false;63;95;191;;; -66596;1;0;false;false;;;;;; -66597;8;0;false;false;63;95;191;;; -66605;3;0;false;false;;;;;; -66608;1;0;false;false;63;95;191;;; -66609;1;0;false;false;;;;;; -66610;5;1;false;false;127;159;191;;; -66615;33;0;false;false;63;95;191;;; -66648;3;0;false;false;;;;;; -66651;1;0;false;false;63;95;191;;; -66652;1;0;false;false;;;;;; -66653;11;1;false;false;127;159;191;;; -66664;12;0;false;false;63;95;191;;; -66676;1;0;false;false;;;;;; -66677;4;0;false;false;127;127;159;;; -66681;3;0;false;false;;;;;; -66684;1;0;false;false;63;95;191;;; -66685;4;0;false;false;;;;;; -66689;4;0;false;false;127;127;159;;; -66693;21;0;false;false;63;95;191;;; -66714;1;0;false;false;;;;;; -66715;1;0;false;false;127;127;159;;; -66716;1;0;false;false;;;;;; -66717;2;0;false;false;63;95;191;;; -66719;1;0;false;false;;;;;; -66720;3;0;false;false;63;95;191;;; -66723;1;0;false;false;;;;;; -66724;8;0;false;false;63;95;191;;; -66732;1;0;false;false;;;;;; -66733;3;0;false;false;63;95;191;;; -66736;1;0;false;false;;;;;; -66737;4;0;false;false;63;95;191;;; -66741;1;0;false;false;;;;;; -66742;8;0;false;false;63;95;191;;; -66750;5;0;false;false;127;127;159;;; -66755;3;0;false;false;;;;;; -66758;1;0;false;false;63;95;191;;; -66759;4;0;false;false;;;;;; -66763;4;0;false;false;127;127;159;;; -66767;27;0;false;false;63;95;191;;; -66794;1;0;false;false;;;;;; -66795;1;0;false;false;127;127;159;;; -66796;1;0;false;false;;;;;; -66797;2;0;false;false;63;95;191;;; -66799;1;0;false;false;;;;;; -66800;3;0;false;false;63;95;191;;; -66803;1;0;false;false;;;;;; -66804;6;0;false;false;63;95;191;;; -66810;1;0;false;false;;;;;; -66811;4;0;false;false;63;95;191;;; -66815;1;0;false;false;;;;;; -66816;3;0;false;false;63;95;191;;; -66819;1;0;false;false;;;;;; -66820;6;0;false;false;63;95;191;;; -66826;1;0;false;false;;;;;; -66827;4;0;false;false;63;95;191;;; -66831;1;0;false;false;;;;;; -66832;7;0;false;false;63;95;191;;; -66839;1;0;false;false;;;;;; -66840;3;0;false;false;63;95;191;;; -66843;1;0;false;false;;;;;; -66844;8;0;false;false;63;95;191;;; -66852;5;0;false;false;127;127;159;;; -66857;3;0;false;false;;;;;; -66860;1;0;false;false;63;95;191;;; -66861;1;0;false;false;;;;;; -66862;5;0;false;false;127;127;159;;; -66867;3;0;false;false;;;;;; -66870;1;0;false;false;63;95;191;;; -66871;1;0;false;false;;;;;; -66872;11;1;false;false;127;159;191;;; -66883;24;0;false;false;63;95;191;;; -66907;1;0;false;false;;;;;; -66908;4;0;false;false;127;127;159;;; -66912;3;0;false;false;;;;;; -66915;1;0;false;false;63;95;191;;; -66916;4;0;false;false;;;;;; -66920;4;0;false;false;127;127;159;;; -66924;19;0;false;false;63;95;191;;; -66943;1;0;false;false;;;;;; -66944;4;0;false;false;63;95;191;;; -66948;1;0;false;false;;;;;; -66949;8;0;false;false;63;95;191;;; -66957;1;0;false;false;;;;;; -66958;2;0;false;false;63;95;191;;; -66960;1;0;false;false;;;;;; -66961;4;0;false;false;63;95;191;;; -66965;5;0;false;false;127;127;159;;; -66970;3;0;false;false;;;;;; -66973;1;0;false;false;63;95;191;;; -66974;1;0;false;false;;;;;; -66975;5;0;false;false;127;127;159;;; -66980;3;0;false;false;;;;;; -66983;2;0;false;false;63;95;191;;; -66985;2;0;false;false;;;;;; -66987;6;1;false;false;127;0;85;;; -66993;1;0;false;false;;;;;; -66994;4;1;false;false;127;0;85;;; -66998;1;0;false;false;;;;;; -66999;13;0;false;false;0;0;0;;; -67012;1;0;false;false;;;;;; -67013;7;0;false;false;0;0;0;;; -67020;1;0;false;false;;;;;; -67021;1;0;false;false;0;0;0;;; -67022;3;0;false;false;;;;;; -67025;14;0;false;false;0;0;0;;; -67039;3;0;false;false;;;;;; -67042;2;1;false;false;127;0;85;;; -67044;1;0;false;false;;;;;; -67045;7;0;false;false;0;0;0;;; -67052;1;0;false;false;;;;;; -67053;2;0;false;false;0;0;0;;; -67055;1;0;false;false;;;;;; -67056;4;1;false;false;127;0;85;;; -67060;1;0;false;false;0;0;0;;; -67061;1;0;false;false;;;;;; -67062;1;0;false;false;0;0;0;;; -67063;4;0;false;false;;;;;; -67067;35;0;false;false;0;0;0;;; -67102;3;0;false;false;;;;;; -67105;1;0;false;false;0;0;0;;; -67106;3;0;false;false;;;;;; -67109;3;1;false;false;127;0;85;;; -67112;1;0;false;false;;;;;; -67113;8;0;false;false;0;0;0;;; -67121;1;0;false;false;;;;;; -67122;1;0;false;false;0;0;0;;; -67123;1;0;false;false;;;;;; -67124;24;0;false;false;0;0;0;;; -67148;1;0;false;false;;;;;; -67149;3;0;false;false;0;0;0;;; -67152;3;0;false;false;;;;;; -67155;26;0;false;false;0;0;0;;; -67181;1;0;false;false;;;;;; -67182;2;0;false;false;0;0;0;;; -67184;1;0;false;false;;;;;; -67185;8;0;false;false;0;0;0;;; -67193;2;0;false;false;;;;;; -67195;1;0;false;false;0;0;0;;; -67196;2;0;false;false;;;;;; -67198;3;0;false;false;63;95;191;;; -67201;3;0;false;false;;;;;; -67204;1;0;false;false;63;95;191;;; -67205;1;0;false;false;;;;;; -67206;10;0;false;false;63;95;191;;; -67216;1;0;false;false;;;;;; -67217;3;0;false;false;63;95;191;;; -67220;1;0;false;false;;;;;; -67221;5;0;false;false;63;95;191;;; -67226;1;0;false;false;;;;;; -67227;2;0;false;false;63;95;191;;; -67229;1;0;false;false;;;;;; -67230;3;0;false;false;63;95;191;;; -67233;1;0;false;false;;;;;; -67234;6;0;false;false;63;95;191;;; -67240;1;0;false;false;;;;;; -67241;7;0;false;false;63;95;191;;; -67248;1;0;false;false;;;;;; -67249;5;0;false;false;63;95;191;;; -67254;3;0;false;false;;;;;; -67257;2;0;false;false;63;95;191;;; -67259;2;0;false;false;;;;;; -67261;4;1;false;false;127;0;85;;; -67265;1;0;false;false;;;;;; -67266;23;0;false;false;0;0;0;;; -67289;1;0;false;false;;;;;; -67290;1;0;false;false;0;0;0;;; -67291;3;0;false;false;;;;;; -67294;9;0;false;false;0;0;0;;; -67303;1;0;false;false;;;;;; -67304;1;0;false;false;0;0;0;;; -67305;1;0;false;false;;;;;; -67306;22;0;false;false;0;0;0;;; -67328;3;0;false;false;;;;;; -67331;29;0;false;false;0;0;0;;; -67360;1;0;false;false;;;;;; -67361;23;0;false;false;0;0;0;;; -67384;1;0;false;false;;;;;; -67385;1;0;false;false;0;0;0;;; -67386;1;0;false;false;;;;;; -67387;8;0;false;false;0;0;0;;; -67395;1;0;false;false;;;;;; -67396;1;0;false;false;0;0;0;;; -67397;1;0;false;false;;;;;; -67398;3;0;false;false;0;0;0;;; -67401;2;0;false;false;;;;;; -67403;1;0;false;false;0;0;0;;; -67404;2;0;false;false;;;;;; -67406;3;0;false;false;63;95;191;;; -67409;3;0;false;false;;;;;; -67412;1;0;false;false;63;95;191;;; -67413;1;0;false;false;;;;;; -67414;10;0;false;false;63;95;191;;; -67424;1;0;false;false;;;;;; -67425;3;0;false;false;63;95;191;;; -67428;1;0;false;false;;;;;; -67429;6;0;false;false;63;95;191;;; -67435;1;0;false;false;;;;;; -67436;4;0;false;false;63;95;191;;; -67440;3;0;false;false;;;;;; -67443;2;0;false;false;63;95;191;;; -67445;2;0;false;false;;;;;; -67447;4;1;false;false;127;0;85;;; -67451;1;0;false;false;;;;;; -67452;21;0;false;false;0;0;0;;; -67473;1;0;false;false;;;;;; -67474;1;0;false;false;0;0;0;;; -67475;3;0;false;false;;;;;; -67478;9;0;false;false;0;0;0;;; -67487;1;0;false;false;;;;;; -67488;13;0;false;false;0;0;0;;; -67501;1;0;false;false;;;;;; -67502;1;0;false;false;0;0;0;;; -67503;1;0;false;false;;;;;; -67504;19;0;false;false;0;0;0;;; -67523;3;0;false;false;;;;;; -67526;9;0;false;false;0;0;0;;; -67535;1;0;false;false;;;;;; -67536;11;0;false;false;0;0;0;;; -67547;1;0;false;false;;;;;; -67548;1;0;false;false;0;0;0;;; -67549;1;0;false;false;;;;;; -67550;17;0;false;false;0;0;0;;; -67567;6;0;false;false;;;;;; -67573;16;0;false;false;0;0;0;;; -67589;3;0;false;false;;;;;; -67592;2;1;false;false;127;0;85;;; -67594;1;0;false;false;;;;;; -67595;12;0;false;false;0;0;0;;; -67607;1;0;false;false;;;;;; -67608;2;0;false;false;0;0;0;;; -67610;1;0;false;false;;;;;; -67611;4;1;false;false;127;0;85;;; -67615;1;0;false;false;0;0;0;;; -67616;1;0;false;false;;;;;; -67617;1;0;false;false;0;0;0;;; -67618;4;0;false;false;;;;;; -67622;49;0;false;false;0;0;0;;; -67671;3;0;false;false;;;;;; -67674;1;0;false;false;0;0;0;;; -67675;4;0;false;false;;;;;; -67679;2;1;false;false;127;0;85;;; -67681;1;0;false;false;;;;;; -67682;14;0;false;false;0;0;0;;; -67696;1;0;false;false;;;;;; -67697;2;0;false;false;0;0;0;;; -67699;1;0;false;false;;;;;; -67700;4;1;false;false;127;0;85;;; -67704;1;0;false;false;0;0;0;;; -67705;1;0;false;false;;;;;; -67706;1;0;false;false;0;0;0;;; -67707;4;0;false;false;;;;;; -67711;53;0;false;false;0;0;0;;; -67764;3;0;false;false;;;;;; -67767;1;0;false;false;0;0;0;;; -67768;2;0;false;false;;;;;; -67770;1;0;false;false;0;0;0;;; -67771;2;0;false;false;;;;;; -67773;3;0;false;false;63;95;191;;; -67776;3;0;false;false;;;;;; -67779;1;0;false;false;63;95;191;;; -67780;1;0;false;false;;;;;; -67781;10;0;false;false;63;95;191;;; -67791;1;0;false;false;;;;;; -67792;3;0;false;false;63;95;191;;; -67795;1;0;false;false;;;;;; -67796;3;0;false;false;63;95;191;;; -67799;1;0;false;false;;;;;; -67800;5;0;false;false;63;95;191;;; -67805;1;0;false;false;;;;;; -67806;5;0;false;false;63;95;191;;; -67811;1;0;false;false;;;;;; -67812;2;0;false;false;63;95;191;;; -67814;1;0;false;false;;;;;; -67815;3;0;false;false;63;95;191;;; -67818;1;0;false;false;;;;;; -67819;7;0;false;false;63;95;191;;; -67826;1;0;false;false;;;;;; -67827;8;0;false;false;63;95;191;;; -67835;1;0;false;false;;;;;; -67836;6;0;false;false;63;95;191;;; -67842;1;0;false;false;;;;;; -67843;7;0;false;false;63;95;191;;; -67850;3;0;false;false;;;;;; -67853;1;0;false;false;63;95;191;;; -67854;1;0;false;false;;;;;; -67855;3;0;false;false;63;95;191;;; -67858;1;0;false;false;;;;;; -67859;3;0;false;false;63;95;191;;; -67862;1;0;false;false;;;;;; -67863;5;0;false;false;63;95;191;;; -67868;1;0;false;false;;;;;; -67869;2;0;false;false;63;95;191;;; -67871;1;0;false;false;;;;;; -67872;3;0;false;false;63;95;191;;; -67875;1;0;false;false;;;;;; -67876;5;0;false;false;63;95;191;;; -67881;1;0;false;false;;;;;; -67882;2;0;false;false;63;95;191;;; -67884;1;0;false;false;;;;;; -67885;3;0;false;false;63;95;191;;; -67888;1;0;false;false;;;;;; -67889;7;0;false;false;63;95;191;;; -67896;1;0;false;false;;;;;; -67897;5;0;false;false;63;95;191;;; -67902;1;0;false;false;;;;;; -67903;7;0;false;false;63;95;191;;; -67910;1;0;false;false;;;;;; -67911;4;0;false;false;63;95;191;;; -67915;1;0;false;false;;;;;; -67916;2;0;false;false;63;95;191;;; -67918;1;0;false;false;;;;;; -67919;3;0;false;false;63;95;191;;; -67922;3;0;false;false;;;;;; -67925;1;0;false;false;63;95;191;;; -67926;1;0;false;false;;;;;; -67927;7;0;false;false;63;95;191;;; -67934;1;0;false;false;;;;;; -67935;9;0;false;false;63;95;191;;; -67944;1;0;false;false;;;;;; -67945;7;0;false;false;63;95;191;;; -67952;1;0;false;false;;;;;; -67953;4;0;false;false;63;95;191;;; -67957;1;0;false;false;;;;;; -67958;2;0;false;false;63;95;191;;; -67960;1;0;false;false;;;;;; -67961;2;0;false;false;63;95;191;;; -67963;1;0;false;false;;;;;; -67964;4;0;false;false;63;95;191;;; -67968;1;0;false;false;;;;;; -67969;2;0;false;false;63;95;191;;; -67971;1;0;false;false;;;;;; -67972;5;0;false;false;63;95;191;;; -67977;1;0;false;false;;;;;; -67978;8;0;false;false;63;95;191;;; -67986;3;0;false;false;;;;;; -67989;1;0;false;false;63;95;191;;; -67990;1;0;false;false;;;;;; -67991;3;0;false;false;63;95;191;;; -67994;1;0;false;false;;;;;; -67995;3;0;false;false;63;95;191;;; -67998;1;0;false;false;;;;;; -67999;5;0;false;false;63;95;191;;; -68004;1;0;false;false;;;;;; -68005;6;0;false;false;63;95;191;;; -68011;1;0;false;false;;;;;; -68012;2;0;false;false;63;95;191;;; -68014;1;0;false;false;;;;;; -68015;2;0;false;false;63;95;191;;; -68017;3;0;false;false;;;;;; -68020;2;0;false;false;63;95;191;;; -68022;2;0;false;false;;;;;; -68024;4;1;false;false;127;0;85;;; -68028;1;0;false;false;;;;;; -68029;19;0;false;false;0;0;0;;; -68048;1;0;false;false;;;;;; -68049;1;0;false;false;0;0;0;;; -68050;3;0;false;false;;;;;; -68053;3;1;false;false;127;0;85;;; -68056;1;0;false;false;;;;;; -68057;11;0;false;false;0;0;0;;; -68068;1;0;false;false;;;;;; -68069;1;0;false;false;0;0;0;;; -68070;1;0;false;false;;;;;; -68071;9;0;false;false;0;0;0;;; -68080;3;0;false;false;;;;;; -68083;3;1;false;false;127;0;85;;; -68086;1;0;false;false;;;;;; -68087;17;0;false;false;0;0;0;;; -68104;1;0;false;false;;;;;; -68105;1;0;false;false;0;0;0;;; -68106;1;0;false;false;;;;;; -68107;23;0;false;false;0;0;0;;; -68130;3;0;false;false;;;;;; -68133;3;1;false;false;127;0;85;;; -68136;1;0;false;false;;;;;; -68137;16;0;false;false;0;0;0;;; -68153;1;0;false;false;;;;;; -68154;1;0;false;false;0;0;0;;; -68155;1;0;false;false;;;;;; -68156;23;0;false;false;0;0;0;;; -68179;6;0;false;false;;;;;; -68185;2;1;false;false;127;0;85;;; -68187;1;0;false;false;;;;;; -68188;18;0;false;false;0;0;0;;; -68206;1;0;false;false;;;;;; -68207;2;0;false;false;0;0;0;;; -68209;1;0;false;false;;;;;; -68210;2;0;false;false;0;0;0;;; -68212;1;0;false;false;;;;;; -68213;1;0;false;false;0;0;0;;; -68214;4;0;false;false;;;;;; -68218;6;1;false;false;127;0;85;;; -68224;1;0;false;false;0;0;0;;; -68225;3;0;false;false;;;;;; -68228;1;0;false;false;0;0;0;;; -68229;3;0;false;false;;;;;; -68232;8;0;false;false;0;0;0;;; -68240;1;0;false;false;;;;;; -68241;1;0;false;false;0;0;0;;; -68242;1;0;false;false;;;;;; -68243;40;0;false;false;0;0;0;;; -68283;1;0;false;false;;;;;; -68284;19;0;false;false;0;0;0;;; -68303;3;0;false;false;;;;;; -68306;69;0;false;false;63;127;95;;; -68375;1;0;false;false;;;;;; -68376;68;0;false;false;63;127;95;;; -68444;1;0;false;false;;;;;; -68445;21;0;false;false;63;127;95;;; -68466;1;0;false;false;;;;;; -68467;2;1;false;false;127;0;85;;; -68469;1;0;false;false;;;;;; -68470;9;0;false;false;0;0;0;;; -68479;1;0;false;false;;;;;; -68480;1;0;false;false;0;0;0;;; -68481;1;0;false;false;;;;;; -68482;2;0;false;false;0;0;0;;; -68484;1;0;false;false;;;;;; -68485;1;0;false;false;0;0;0;;; -68486;4;0;false;false;;;;;; -68490;2;1;false;false;127;0;85;;; -68492;1;0;false;false;;;;;; -68493;17;0;false;false;0;0;0;;; -68510;1;0;false;false;;;;;; -68511;1;0;false;false;0;0;0;;; -68512;1;0;false;false;;;;;; -68513;2;0;false;false;0;0;0;;; -68515;1;0;false;false;;;;;; -68516;1;0;false;false;0;0;0;;; -68517;5;0;false;false;;;;;; -68522;3;1;false;false;127;0;85;;; -68525;1;0;false;false;;;;;; -68526;11;0;false;false;0;0;0;;; -68537;1;0;false;false;;;;;; -68538;1;0;false;false;0;0;0;;; -68539;1;0;false;false;;;;;; -68540;20;0;false;false;0;0;0;;; -68560;1;0;false;false;;;;;; -68561;1;0;false;false;0;0;0;;; -68562;1;0;false;false;;;;;; -68563;17;0;false;false;0;0;0;;; -68580;5;0;false;false;;;;;; -68585;3;1;false;false;127;0;85;;; -68588;1;0;false;false;;;;;; -68589;16;0;false;false;0;0;0;;; -68605;1;0;false;false;;;;;; -68606;1;0;false;false;0;0;0;;; -68607;1;0;false;false;;;;;; -68608;8;0;false;false;0;0;0;;; -68616;1;0;false;false;;;;;; -68617;1;0;false;false;0;0;0;;; -68618;1;0;false;false;;;;;; -68619;18;0;false;false;0;0;0;;; -68637;5;0;false;false;;;;;; -68642;3;1;false;false;127;0;85;;; -68645;1;0;false;false;;;;;; -68646;21;0;false;false;0;0;0;;; -68667;1;0;false;false;;;;;; -68668;1;0;false;false;0;0;0;;; -68669;1;0;false;false;;;;;; -68670;11;0;false;false;0;0;0;;; -68681;1;0;false;false;;;;;; -68682;1;0;false;false;0;0;0;;; -68683;1;0;false;false;;;;;; -68684;17;0;false;false;0;0;0;;; -68701;5;0;false;false;;;;;; -68706;70;0;false;false;63;127;95;;; -68776;3;0;false;false;;;;;; -68779;73;0;false;false;63;127;95;;; -68852;3;0;false;false;;;;;; -68855;54;0;false;false;63;127;95;;; -68909;3;0;false;false;;;;;; -68912;2;1;false;false;127;0;85;;; -68914;1;0;false;false;;;;;; -68915;22;0;false;false;0;0;0;;; -68937;1;0;false;false;;;;;; -68938;1;0;false;false;0;0;0;;; -68939;1;0;false;false;;;;;; -68940;18;0;false;false;0;0;0;;; -68958;1;0;false;false;;;;;; -68959;1;0;false;false;0;0;0;;; -68960;6;0;false;false;;;;;; -68966;11;0;false;false;0;0;0;;; -68977;5;0;false;false;;;;;; -68982;1;0;false;false;0;0;0;;; -68983;4;0;false;false;;;;;; -68987;1;0;false;false;0;0;0;;; -68988;4;0;false;false;;;;;; -68992;4;1;false;false;127;0;85;;; -68996;5;0;false;false;;;;;; -69001;2;1;false;false;127;0;85;;; -69003;1;0;false;false;;;;;; -69004;9;0;false;false;0;0;0;;; -69013;1;0;false;false;;;;;; -69014;2;0;false;false;0;0;0;;; -69016;1;0;false;false;;;;;; -69017;23;0;false;false;0;0;0;;; -69040;1;0;false;false;;;;;; -69041;1;0;false;false;0;0;0;;; -69042;5;0;false;false;;;;;; -69047;8;0;false;false;0;0;0;;; -69055;1;0;false;false;;;;;; -69056;1;0;false;false;0;0;0;;; -69057;1;0;false;false;;;;;; -69058;22;0;false;false;0;0;0;;; -69080;1;0;false;false;;;;;; -69081;1;0;false;false;0;0;0;;; -69082;1;0;false;false;;;;;; -69083;2;0;false;false;0;0;0;;; -69085;4;0;false;false;;;;;; -69089;1;0;false;false;0;0;0;;; -69090;3;0;false;false;;;;;; -69093;1;0;false;false;0;0;0;;; -69094;3;0;false;false;;;;;; -69097;2;1;false;false;127;0;85;;; -69099;1;0;false;false;;;;;; -69100;9;0;false;false;0;0;0;;; -69109;1;0;false;false;;;;;; -69110;2;0;false;false;0;0;0;;; -69112;1;0;false;false;;;;;; -69113;12;0;false;false;0;0;0;;; -69125;1;0;false;false;;;;;; -69126;1;0;false;false;0;0;0;;; -69127;4;0;false;false;;;;;; -69131;9;0;false;false;0;0;0;;; -69140;1;0;false;false;;;;;; -69141;1;0;false;false;0;0;0;;; -69142;1;0;false;false;;;;;; -69143;34;0;false;false;0;0;0;;; -69177;4;0;false;false;;;;;; -69181;29;0;false;false;0;0;0;;; -69210;1;0;false;false;;;;;; -69211;23;0;false;false;0;0;0;;; -69234;1;0;false;false;;;;;; -69235;1;0;false;false;0;0;0;;; -69236;1;0;false;false;;;;;; -69237;8;0;false;false;0;0;0;;; -69245;1;0;false;false;;;;;; -69246;1;0;false;false;0;0;0;;; -69247;1;0;false;false;;;;;; -69248;3;0;false;false;0;0;0;;; -69251;4;0;false;false;;;;;; -69255;25;0;false;false;0;0;0;;; -69280;3;0;false;false;;;;;; -69283;1;0;false;false;0;0;0;;; -69284;2;0;false;false;;;;;; -69286;1;0;false;false;0;0;0;;; -69287;2;0;false;false;;;;;; -69289;3;0;false;false;63;95;191;;; -69292;3;0;false;false;;;;;; -69295;1;0;false;false;63;95;191;;; -69296;1;0;false;false;;;;;; -69297;5;0;false;false;63;95;191;;; -69302;1;0;false;false;;;;;; -69303;3;0;false;false;63;95;191;;; -69306;1;0;false;false;;;;;; -69307;6;0;false;false;63;95;191;;; -69313;1;0;false;false;;;;;; -69314;4;0;false;false;63;95;191;;; -69318;1;0;false;false;;;;;; -69319;2;0;false;false;63;95;191;;; -69321;1;0;false;false;;;;;; -69322;6;0;false;false;63;95;191;;; -69328;1;0;false;false;;;;;; -69329;2;0;false;false;63;95;191;;; -69331;1;0;false;false;;;;;; -69332;7;0;false;false;63;95;191;;; -69339;1;0;false;false;;;;;; -69340;2;0;false;false;63;95;191;;; -69342;1;0;false;false;;;;;; -69343;6;0;false;false;63;95;191;;; -69349;1;0;false;false;;;;;; -69350;4;0;false;false;63;95;191;;; -69354;1;0;false;false;;;;;; -69355;5;0;false;false;63;95;191;;; -69360;3;0;false;false;;;;;; -69363;2;0;false;false;63;95;191;;; -69365;2;0;false;false;;;;;; -69367;6;1;false;false;127;0;85;;; -69373;1;0;false;false;;;;;; -69374;3;1;false;false;127;0;85;;; -69377;1;0;false;false;;;;;; -69378;11;0;false;false;0;0;0;;; -69389;3;1;false;false;127;0;85;;; -69392;1;0;false;false;;;;;; -69393;6;0;false;false;0;0;0;;; -69399;1;0;false;false;;;;;; -69400;1;0;false;false;0;0;0;;; -69401;3;0;false;false;;;;;; -69404;2;1;false;false;127;0;85;;; -69406;1;0;false;false;;;;;; -69407;7;0;false;false;0;0;0;;; -69414;1;0;false;false;;;;;; -69415;1;0;false;false;0;0;0;;; -69416;1;0;false;false;;;;;; -69417;11;0;false;false;0;0;0;;; -69428;1;0;false;false;;;;;; -69429;2;0;false;false;0;0;0;;; -69431;1;0;false;false;;;;;; -69432;2;0;false;false;0;0;0;;; -69434;1;0;false;false;;;;;; -69435;1;0;false;false;0;0;0;;; -69436;4;0;false;false;;;;;; -69440;5;0;false;false;0;0;0;;; -69445;1;0;false;false;;;;;; -69446;2;0;false;false;0;0;0;;; -69448;1;0;false;false;;;;;; -69449;14;0;false;false;0;0;0;;; -69463;1;0;false;false;;;;;; -69464;1;0;false;false;0;0;0;;; -69465;1;0;false;false;;;;;; -69466;12;0;false;false;0;0;0;;; -69478;1;0;false;false;;;;;; -69479;1;0;false;false;0;0;0;;; -69480;1;0;false;false;;;;;; -69481;8;0;false;false;0;0;0;;; -69489;1;0;false;false;;;;;; -69490;1;0;false;false;0;0;0;;; -69491;1;0;false;false;;;;;; -69492;11;0;false;false;0;0;0;;; -69503;3;0;false;false;;;;;; -69506;1;0;false;false;0;0;0;;; -69507;1;0;false;false;;;;;; -69508;4;1;false;false;127;0;85;;; -69512;1;0;false;false;;;;;; -69513;1;0;false;false;0;0;0;;; -69514;4;0;false;false;;;;;; -69518;5;0;false;false;0;0;0;;; -69523;1;0;false;false;;;;;; -69524;2;0;false;false;0;0;0;;; -69526;1;0;false;false;;;;;; -69527;10;0;false;false;0;0;0;;; -69537;4;0;false;false;;;;;; -69541;2;1;false;false;127;0;85;;; -69543;1;0;false;false;;;;;; -69544;7;0;false;false;0;0;0;;; -69551;1;0;false;false;;;;;; -69552;1;0;false;false;0;0;0;;; -69553;1;0;false;false;;;;;; -69554;9;0;false;false;0;0;0;;; -69563;1;0;false;false;;;;;; -69564;2;0;false;false;0;0;0;;; -69566;1;0;false;false;;;;;; -69567;2;0;false;false;0;0;0;;; -69569;1;0;false;false;;;;;; -69570;1;0;false;false;0;0;0;;; -69571;5;0;false;false;;;;;; -69576;5;0;false;false;0;0;0;;; -69581;1;0;false;false;;;;;; -69582;2;0;false;false;0;0;0;;; -69584;1;0;false;false;;;;;; -69585;14;0;false;false;0;0;0;;; -69599;4;0;false;false;;;;;; -69603;1;0;false;false;0;0;0;;; -69604;3;0;false;false;;;;;; -69607;1;0;false;false;0;0;0;;; -69608;3;0;false;false;;;;;; -69611;6;1;false;false;127;0;85;;; -69617;1;0;false;false;;;;;; -69618;6;0;false;false;0;0;0;;; -69624;2;0;false;false;;;;;; -69626;1;0;false;false;0;0;0;;; -69627;2;0;false;false;;;;;; -69629;3;0;false;false;63;95;191;;; -69632;3;0;false;false;;;;;; -69635;1;0;false;false;63;95;191;;; -69636;1;0;false;false;;;;;; -69637;7;0;false;false;63;95;191;;; -69644;1;0;false;false;;;;;; -69645;4;0;false;false;63;95;191;;; -69649;1;0;false;false;;;;;; -69650;3;0;false;false;63;95;191;;; -69653;1;0;false;false;;;;;; -69654;4;0;false;false;63;95;191;;; -69658;1;0;false;false;;;;;; -69659;2;0;false;false;63;95;191;;; -69661;1;0;false;false;;;;;; -69662;3;0;false;false;63;95;191;;; -69665;1;0;false;false;;;;;; -69666;3;0;false;false;63;95;191;;; -69669;1;0;false;false;;;;;; -69670;5;0;false;false;63;95;191;;; -69675;1;0;false;false;;;;;; -69676;4;0;false;false;63;95;191;;; -69680;1;0;false;false;;;;;; -69681;9;0;false;false;63;95;191;;; -69690;1;0;false;false;;;;;; -69691;2;0;false;false;63;95;191;;; -69693;1;0;false;false;;;;;; -69694;1;0;false;false;63;95;191;;; -69695;1;0;false;false;;;;;; -69696;6;0;false;false;63;95;191;;; -69702;1;0;false;false;;;;;; -69703;2;0;false;false;63;95;191;;; -69705;1;0;false;false;;;;;; -69706;2;0;false;false;63;95;191;;; -69708;4;0;false;false;;;;;; -69712;1;0;false;false;63;95;191;;; -69713;1;0;false;false;;;;;; -69714;7;0;false;false;63;95;191;;; -69721;1;0;false;false;;;;;; -69722;6;0;false;false;63;95;191;;; -69728;3;0;false;false;;;;;; -69731;2;0;false;false;63;95;191;;; -69733;2;0;false;false;;;;;; -69735;4;1;false;false;127;0;85;;; -69739;1;0;false;false;;;;;; -69740;22;0;false;false;0;0;0;;; -69762;1;0;false;false;;;;;; -69763;1;0;false;false;0;0;0;;; -69764;3;0;false;false;;;;;; -69767;3;1;false;false;127;0;85;;; -69770;1;0;false;false;;;;;; -69771;17;0;false;false;0;0;0;;; -69788;1;0;false;false;;;;;; -69789;1;0;false;false;0;0;0;;; -69790;1;0;false;false;;;;;; -69791;11;0;false;false;0;0;0;;; -69802;1;0;false;false;;;;;; -69803;22;0;false;false;0;0;0;;; -69825;1;0;false;false;;;;;; -69826;1;0;false;false;0;0;0;;; -69827;1;0;false;false;;;;;; -69828;10;0;false;false;0;0;0;;; -69838;1;0;false;false;;;;;; -69839;1;0;false;false;0;0;0;;; -69840;1;0;false;false;;;;;; -69841;24;0;false;false;0;0;0;;; -69865;6;0;false;false;;;;;; -69871;2;1;false;false;127;0;85;;; -69873;1;0;false;false;;;;;; -69874;18;0;false;false;0;0;0;;; -69892;1;0;false;false;;;;;; -69893;1;0;false;false;0;0;0;;; -69894;1;0;false;false;;;;;; -69895;21;0;false;false;0;0;0;;; -69916;1;0;false;false;;;;;; -69917;1;0;false;false;0;0;0;;; -69918;4;0;false;false;;;;;; -69922;65;0;false;false;63;127;95;;; -69987;2;0;false;false;;;;;; -69989;18;0;false;false;63;127;95;;; -70007;2;0;false;false;;;;;; -70009;42;0;false;false;0;0;0;;; -70051;1;0;false;false;;;;;; -70052;4;1;false;false;127;0;85;;; -70056;2;0;false;false;0;0;0;;; -70058;3;0;false;false;;;;;; -70061;1;0;false;false;0;0;0;;; -70062;2;0;false;false;;;;;; -70064;1;0;false;false;0;0;0;;; -70065;2;0;false;false;;;;;; -70067;3;0;false;false;63;95;191;;; -70070;3;0;false;false;;;;;; -70073;1;0;false;false;63;95;191;;; -70074;1;0;false;false;;;;;; -70075;7;0;false;false;63;95;191;;; -70082;1;0;false;false;;;;;; -70083;4;0;false;false;63;95;191;;; -70087;1;0;false;false;;;;;; -70088;2;0;false;false;63;95;191;;; -70090;1;0;false;false;;;;;; -70091;3;0;false;false;63;95;191;;; -70094;1;0;false;false;;;;;; -70095;5;0;false;false;63;95;191;;; -70100;1;0;false;false;;;;;; -70101;2;0;false;false;63;95;191;;; -70103;1;0;false;false;;;;;; -70104;3;0;false;false;63;95;191;;; -70107;1;0;false;false;;;;;; -70108;3;0;false;false;63;95;191;;; -70111;1;0;false;false;;;;;; -70112;5;0;false;false;63;95;191;;; -70117;1;0;false;false;;;;;; -70118;4;0;false;false;63;95;191;;; -70122;1;0;false;false;;;;;; -70123;9;0;false;false;63;95;191;;; -70132;1;0;false;false;;;;;; -70133;2;0;false;false;63;95;191;;; -70135;1;0;false;false;;;;;; -70136;1;0;false;false;63;95;191;;; -70137;1;0;false;false;;;;;; -70138;7;0;false;false;63;95;191;;; -70145;3;0;false;false;;;;;; -70148;2;0;false;false;63;95;191;;; -70150;2;0;false;false;;;;;; -70152;4;1;false;false;127;0;85;;; -70156;1;0;false;false;;;;;; -70157;21;0;false;false;0;0;0;;; -70178;1;0;false;false;;;;;; -70179;1;0;false;false;0;0;0;;; -70180;3;0;false;false;;;;;; -70183;3;1;false;false;127;0;85;;; -70186;1;0;false;false;;;;;; -70187;19;0;false;false;0;0;0;;; -70206;1;0;false;false;;;;;; -70207;1;0;false;false;0;0;0;;; -70208;1;0;false;false;;;;;; -70209;11;0;false;false;0;0;0;;; -70220;1;0;false;false;;;;;; -70221;20;0;false;false;0;0;0;;; -70241;1;0;false;false;;;;;; -70242;1;0;false;false;0;0;0;;; -70243;1;0;false;false;;;;;; -70244;22;0;false;false;0;0;0;;; -70266;1;0;false;false;;;;;; -70267;1;0;false;false;0;0;0;;; -70268;1;0;false;false;;;;;; -70269;10;0;false;false;0;0;0;;; -70279;1;0;false;false;;;;;; -70280;1;0;false;false;0;0;0;;; -70281;1;0;false;false;;;;;; -70282;14;0;false;false;0;0;0;;; -70296;6;0;false;false;;;;;; -70302;2;1;false;false;127;0;85;;; -70304;1;0;false;false;;;;;; -70305;20;0;false;false;0;0;0;;; -70325;1;0;false;false;;;;;; -70326;1;0;false;false;0;0;0;;; -70327;1;0;false;false;;;;;; -70328;23;0;false;false;0;0;0;;; -70351;1;0;false;false;;;;;; -70352;1;0;false;false;0;0;0;;; -70353;7;0;false;false;;;;;; -70360;69;0;false;false;63;127;95;;; -70429;2;0;false;false;;;;;; -70431;66;0;false;false;63;127;95;;; -70497;2;0;false;false;;;;;; -70499;44;0;false;false;63;127;95;;; -70543;2;0;false;false;;;;;; -70545;39;0;false;false;0;0;0;;; -70584;1;0;false;false;;;;;; -70585;1;0;false;false;0;0;0;;; -70586;1;0;false;false;;;;;; -70587;24;0;false;false;0;0;0;;; -70611;8;0;false;false;;;;;; -70619;1;0;false;false;0;0;0;;; -70620;2;0;false;false;;;;;; -70622;1;0;false;false;0;0;0;;; -70623;2;0;false;false;;;;;; -70625;3;0;false;false;63;95;191;;; -70628;3;0;false;false;;;;;; -70631;1;0;false;false;63;95;191;;; -70632;1;0;false;false;;;;;; -70633;6;0;false;false;63;95;191;;; -70639;1;0;false;false;;;;;; -70640;3;0;false;false;63;95;191;;; -70643;1;0;false;false;;;;;; -70644;6;0;false;false;63;95;191;;; -70650;1;0;false;false;;;;;; -70651;7;0;false;false;63;95;191;;; -70658;3;0;false;false;;;;;; -70661;1;0;false;false;63;95;191;;; -70662;4;0;false;false;;;;;; -70666;1;0;false;false;63;95;191;;; -70667;1;0;false;false;;;;;; -70668;7;1;false;false;127;159;191;;; -70675;2;0;false;false;63;95;191;;; -70677;1;0;false;false;;;;;; -70678;2;0;false;false;63;95;191;;; -70680;1;0;false;false;;;;;; -70681;2;0;false;false;63;95;191;;; -70683;1;0;false;false;;;;;; -70684;6;0;false;false;63;95;191;;; -70690;1;0;false;false;;;;;; -70691;2;0;false;false;63;95;191;;; -70693;3;0;false;false;;;;;; -70696;1;0;false;false;63;95;191;;; -70697;1;0;false;false;;;;;; -70698;7;1;false;false;127;159;191;;; -70705;10;0;false;false;63;95;191;;; -70715;1;0;false;false;;;;;; -70716;10;0;false;false;63;95;191;;; -70726;1;0;false;false;;;;;; -70727;5;0;false;false;63;95;191;;; -70732;1;0;false;false;;;;;; -70733;2;0;false;false;63;95;191;;; -70735;1;0;false;false;;;;;; -70736;3;0;false;false;63;95;191;;; -70739;1;0;false;false;;;;;; -70740;3;0;false;false;63;95;191;;; -70743;1;0;false;false;;;;;; -70744;8;0;false;false;63;95;191;;; -70752;1;0;false;false;;;;;; -70753;3;0;false;false;63;95;191;;; -70756;1;0;false;false;;;;;; -70757;6;0;false;false;63;95;191;;; -70763;3;0;false;false;;;;;; -70766;1;0;false;false;63;95;191;;; -70767;1;0;false;false;;;;;; -70768;7;1;false;false;127;159;191;;; -70775;10;0;false;false;63;95;191;;; -70785;1;0;false;false;;;;;; -70786;6;0;false;false;63;95;191;;; -70792;1;0;false;false;;;;;; -70793;6;0;false;false;63;95;191;;; -70799;1;0;false;false;;;;;; -70800;4;0;false;false;63;95;191;;; -70804;1;0;false;false;;;;;; -70805;10;0;false;false;63;95;191;;; -70815;3;0;false;false;;;;;; -70818;2;0;false;false;63;95;191;;; -70820;2;0;false;false;;;;;; -70822;4;1;false;false;127;0;85;;; -70826;1;0;false;false;;;;;; -70827;14;0;false;false;0;0;0;;; -70841;1;0;false;false;;;;;; -70842;3;0;false;false;0;0;0;;; -70845;1;0;false;false;;;;;; -70846;5;0;false;false;0;0;0;;; -70851;1;0;false;false;;;;;; -70852;11;0;false;false;0;0;0;;; -70863;1;0;false;false;;;;;; -70864;9;0;false;false;0;0;0;;; -70873;1;0;false;false;;;;;; -70874;11;0;false;false;0;0;0;;; -70885;1;0;false;false;;;;;; -70886;3;1;false;false;127;0;85;;; -70889;1;0;false;false;;;;;; -70890;2;0;false;false;0;0;0;;; -70892;1;0;false;false;;;;;; -70893;1;0;false;false;0;0;0;;; -70894;3;0;false;false;;;;;; -70897;32;0;false;false;63;127;95;;; -70929;1;0;false;false;;;;;; -70930;29;0;false;false;0;0;0;;; -70959;3;0;false;false;;;;;; -70962;2;1;false;false;127;0;85;;; -70964;1;0;false;false;;;;;; -70965;10;0;false;false;0;0;0;;; -70975;1;0;false;false;;;;;; -70976;1;0;false;false;0;0;0;;; -70977;1;0;false;false;;;;;; -70978;2;0;false;false;0;0;0;;; -70980;1;0;false;false;;;;;; -70981;1;0;false;false;0;0;0;;; -70982;4;0;false;false;;;;;; -70986;19;0;false;false;0;0;0;;; -71005;1;0;false;false;;;;;; -71006;3;0;false;false;0;0;0;;; -71009;1;0;false;false;;;;;; -71010;17;0;false;false;0;0;0;;; -71027;1;0;false;false;;;;;; -71028;11;0;false;false;0;0;0;;; -71039;3;0;false;false;;;;;; -71042;1;0;false;false;0;0;0;;; -71043;3;0;false;false;;;;;; -71046;2;1;false;false;127;0;85;;; -71048;1;0;false;false;;;;;; -71049;13;0;false;false;0;0;0;;; -71062;1;0;false;false;;;;;; -71063;1;0;false;false;0;0;0;;; -71064;1;0;false;false;;;;;; -71065;2;0;false;false;0;0;0;;; -71067;1;0;false;false;;;;;; -71068;1;0;false;false;0;0;0;;; -71069;4;0;false;false;;;;;; -71073;19;0;false;false;0;0;0;;; -71092;1;0;false;false;;;;;; -71093;17;0;false;false;0;0;0;;; -71110;1;0;false;false;;;;;; -71111;1;0;false;false;0;0;0;;; -71112;1;0;false;false;;;;;; -71113;12;0;false;false;0;0;0;;; -71125;1;0;false;false;;;;;; -71126;1;0;false;false;0;0;0;;; -71127;1;0;false;false;;;;;; -71128;2;0;false;false;0;0;0;;; -71130;1;0;false;false;;;;;; -71131;17;0;false;false;0;0;0;;; -71148;1;0;false;false;;;;;; -71149;14;0;false;false;0;0;0;;; -71163;3;0;false;false;;;;;; -71166;1;0;false;false;0;0;0;;; -71167;3;0;false;false;;;;;; -71170;2;1;false;false;127;0;85;;; -71172;1;0;false;false;;;;;; -71173;11;0;false;false;0;0;0;;; -71184;1;0;false;false;;;;;; -71185;1;0;false;false;0;0;0;;; -71186;1;0;false;false;;;;;; -71187;2;0;false;false;0;0;0;;; -71189;1;0;false;false;;;;;; -71190;1;0;false;false;0;0;0;;; -71191;4;0;false;false;;;;;; -71195;19;0;false;false;0;0;0;;; -71214;1;0;false;false;;;;;; -71215;3;0;false;false;0;0;0;;; -71218;1;0;false;false;;;;;; -71219;11;0;false;false;0;0;0;;; -71230;1;0;false;false;;;;;; -71231;19;0;false;false;0;0;0;;; -71250;3;0;false;false;;;;;; -71253;1;0;false;false;0;0;0;;; -71254;3;0;false;false;;;;;; -71257;2;1;false;false;127;0;85;;; -71259;1;0;false;false;;;;;; -71260;12;0;false;false;0;0;0;;; -71272;1;0;false;false;;;;;; -71273;1;0;false;false;0;0;0;;; -71274;1;0;false;false;;;;;; -71275;2;0;false;false;0;0;0;;; -71277;1;0;false;false;;;;;; -71278;1;0;false;false;0;0;0;;; -71279;4;0;false;false;;;;;; -71283;33;0;false;false;0;0;0;;; -71316;1;0;false;false;;;;;; -71317;1;0;false;false;0;0;0;;; -71318;1;0;false;false;;;;;; -71319;12;0;false;false;0;0;0;;; -71331;1;0;false;false;;;;;; -71332;3;0;false;false;0;0;0;;; -71335;1;0;false;false;;;;;; -71336;12;0;false;false;0;0;0;;; -71348;1;0;false;false;;;;;; -71349;19;0;false;false;0;0;0;;; -71368;3;0;false;false;;;;;; -71371;1;0;false;false;0;0;0;;; -71372;2;0;false;false;;;;;; -71374;1;0;false;false;0;0;0;;; -71375;2;0;false;false;;;;;; -71377;3;0;false;false;63;95;191;;; -71380;3;0;false;false;;;;;; -71383;1;0;false;false;63;95;191;;; -71384;1;0;false;false;;;;;; -71385;7;0;false;false;63;95;191;;; -71392;1;0;false;false;;;;;; -71393;3;0;false;false;63;95;191;;; -71396;1;0;false;false;;;;;; -71397;6;0;false;false;63;95;191;;; -71403;1;0;false;false;;;;;; -71404;10;0;false;false;63;95;191;;; -71414;3;0;false;false;;;;;; -71417;1;0;false;false;63;95;191;;; -71418;1;0;false;false;;;;;; -71419;3;0;false;false;127;127;159;;; -71422;3;0;false;false;;;;;; -71425;1;0;false;false;63;95;191;;; -71426;3;0;false;false;;;;;; -71429;1;0;false;false;63;95;191;;; -71430;1;0;false;false;;;;;; -71431;7;1;false;false;127;159;191;;; -71438;9;0;false;false;63;95;191;;; -71447;1;0;false;false;;;;;; -71448;1;0;false;false;63;95;191;;; -71449;1;0;false;false;;;;;; -71450;9;0;false;false;63;95;191;;; -71459;1;0;false;false;;;;;; -71460;5;0;false;false;63;95;191;;; -71465;1;0;false;false;;;;;; -71466;2;0;false;false;63;95;191;;; -71468;1;0;false;false;;;;;; -71469;4;0;false;false;63;95;191;;; -71473;1;0;false;false;;;;;; -71474;4;0;false;false;63;95;191;;; -71478;1;0;false;false;;;;;; -71479;3;0;false;false;63;95;191;;; -71482;1;0;false;false;;;;;; -71483;2;0;false;false;63;95;191;;; -71485;1;0;false;false;;;;;; -71486;4;0;false;false;63;95;191;;; -71490;1;0;false;false;;;;;; -71491;3;0;false;false;63;95;191;;; -71494;1;0;false;false;;;;;; -71495;4;0;false;false;63;95;191;;; -71499;1;0;false;false;;;;;; -71500;3;0;false;false;63;95;191;;; -71503;1;0;false;false;;;;;; -71504;9;0;false;false;63;95;191;;; -71513;1;0;false;false;;;;;; -71514;2;0;false;false;63;95;191;;; -71516;1;0;false;false;;;;;; -71517;8;0;false;false;63;95;191;;; -71525;1;0;false;false;;;;;; -71526;6;0;false;false;63;95;191;;; -71532;3;0;false;false;;;;;; -71535;2;0;false;false;63;95;191;;; -71537;2;0;false;false;;;;;; -71539;4;1;false;false;127;0;85;;; -71543;1;0;false;false;;;;;; -71544;15;0;false;false;0;0;0;;; -71559;7;1;false;false;127;0;85;;; -71566;1;0;false;false;;;;;; -71567;10;0;false;false;0;0;0;;; -71577;1;0;false;false;;;;;; -71578;1;0;false;false;0;0;0;;; -71579;3;0;false;false;;;;;; -71582;3;1;false;false;127;0;85;;; -71585;1;0;false;false;;;;;; -71586;14;0;false;false;0;0;0;;; -71600;1;0;false;false;;;;;; -71601;1;0;false;false;0;0;0;;; -71602;1;0;false;false;;;;;; -71603;12;0;false;false;0;0;0;;; -71615;3;0;false;false;;;;;; -71618;3;1;false;false;127;0;85;;; -71621;1;0;false;false;;;;;; -71622;12;0;false;false;0;0;0;;; -71634;1;0;false;false;;;;;; -71635;1;0;false;false;0;0;0;;; -71636;1;0;false;false;;;;;; -71637;12;0;false;false;0;0;0;;; -71649;3;0;false;false;;;;;; -71652;3;1;false;false;127;0;85;;; -71655;1;0;false;false;;;;;; -71656;6;0;false;false;0;0;0;;; -71662;1;0;false;false;;;;;; -71663;1;0;false;false;0;0;0;;; -71664;1;0;false;false;;;;;; -71665;23;0;false;false;0;0;0;;; -71688;6;0;false;false;;;;;; -71694;17;0;false;false;0;0;0;;; -71711;3;0;false;false;;;;;; -71714;33;0;false;false;63;127;95;;; -71747;1;0;false;false;;;;;; -71748;2;1;false;false;127;0;85;;; -71750;1;0;false;false;;;;;; -71751;13;0;false;false;0;0;0;;; -71764;1;0;false;false;;;;;; -71765;1;0;false;false;0;0;0;;; -71766;1;0;false;false;;;;;; -71767;14;0;false;false;0;0;0;;; -71781;1;0;false;false;;;;;; -71782;1;0;false;false;0;0;0;;; -71783;1;0;false;false;;;;;; -71784;2;0;false;false;0;0;0;;; -71786;1;0;false;false;;;;;; -71787;1;0;false;false;0;0;0;;; -71788;4;0;false;false;;;;;; -71792;64;0;false;false;63;127;95;;; -71856;2;0;false;false;;;;;; -71858;47;0;false;false;63;127;95;;; -71905;2;0;false;false;;;;;; -71907;3;1;false;false;127;0;85;;; -71910;1;0;false;false;;;;;; -71911;11;0;false;false;0;0;0;;; -71922;1;0;false;false;;;;;; -71923;1;0;false;false;0;0;0;;; -71924;1;0;false;false;;;;;; -71925;24;0;false;false;0;0;0;;; -71949;1;0;false;false;;;;;; -71950;8;0;false;false;0;0;0;;; -71958;4;0;false;false;;;;;; -71962;3;1;false;false;127;0;85;;; -71965;1;0;false;false;;;;;; -71966;9;0;false;false;0;0;0;;; -71975;1;0;false;false;;;;;; -71976;1;0;false;false;0;0;0;;; -71977;1;0;false;false;;;;;; -71978;22;0;false;false;0;0;0;;; -72000;1;0;false;false;;;;;; -72001;8;0;false;false;0;0;0;;; -72009;4;0;false;false;;;;;; -72013;2;1;false;false;127;0;85;;; -72015;1;0;false;false;;;;;; -72016;10;0;false;false;0;0;0;;; -72026;1;0;false;false;;;;;; -72027;1;0;false;false;0;0;0;;; -72028;1;0;false;false;;;;;; -72029;11;0;false;false;0;0;0;;; -72040;1;0;false;false;;;;;; -72041;1;0;false;false;0;0;0;;; -72042;1;0;false;false;;;;;; -72043;2;0;false;false;0;0;0;;; -72045;1;0;false;false;;;;;; -72046;1;0;false;false;0;0;0;;; -72047;5;0;false;false;;;;;; -72052;32;0;false;false;0;0;0;;; -72084;1;0;false;false;;;;;; -72085;9;0;false;false;0;0;0;;; -72094;1;0;false;false;;;;;; -72095;1;0;false;false;0;0;0;;; -72096;1;0;false;false;;;;;; -72097;12;0;false;false;0;0;0;;; -72109;1;0;false;false;;;;;; -72110;4;1;false;false;127;0;85;;; -72114;2;0;false;false;0;0;0;;; -72116;4;0;false;false;;;;;; -72120;1;0;false;false;0;0;0;;; -72121;4;0;false;false;;;;;; -72125;2;1;false;false;127;0;85;;; -72127;1;0;false;false;;;;;; -72128;11;0;false;false;0;0;0;;; -72139;1;0;false;false;;;;;; -72140;1;0;false;false;0;0;0;;; -72141;5;0;false;false;;;;;; -72146;21;0;false;false;0;0;0;;; -72167;4;0;false;false;;;;;; -72171;1;0;false;false;0;0;0;;; -72172;3;0;false;false;;;;;; -72175;1;0;false;false;0;0;0;;; -72176;2;0;false;false;;;;;; -72178;1;0;false;false;0;0;0;;; -72179;2;0;false;false;;;;;; -72181;6;1;false;false;127;0;85;;; -72187;1;0;false;false;;;;;; -72188;5;0;false;false;0;0;0;;; -72193;1;0;false;false;;;;;; -72194;11;0;false;false;0;0;0;;; -72205;1;0;false;false;;;;;; -72206;1;0;false;false;0;0;0;;; -72207;3;1;false;false;127;0;85;;; -72210;1;0;false;false;;;;;; -72211;6;0;false;false;0;0;0;;; -72217;1;0;false;false;;;;;; -72218;3;1;false;false;127;0;85;;; -72221;1;0;false;false;;;;;; -72222;6;0;false;false;0;0;0;;; -72228;1;0;false;false;;;;;; -72229;7;1;false;false;127;0;85;;; -72236;1;0;false;false;;;;;; -72237;8;0;false;false;0;0;0;;; -72245;1;0;false;false;;;;;; -72246;1;0;false;false;0;0;0;;; -72247;3;0;false;false;;;;;; -72250;14;0;false;false;0;0;0;;; -72264;3;0;false;false;;;;;; -72267;3;1;false;false;127;0;85;;; -72270;1;0;false;false;;;;;; -72271;6;0;false;false;0;0;0;;; -72277;1;0;false;false;;;;;; -72278;6;0;false;false;0;0;0;;; -72284;1;0;false;false;;;;;; -72285;7;0;false;false;0;0;0;;; -72292;3;0;false;false;;;;;; -72295;7;1;false;false;127;0;85;;; -72302;1;0;false;false;;;;;; -72303;10;0;false;false;0;0;0;;; -72313;1;0;false;false;;;;;; -72314;1;0;false;false;0;0;0;;; -72315;1;0;false;false;;;;;; -72316;11;0;false;false;0;0;0;;; -72327;1;0;false;false;;;;;; -72328;1;0;false;false;0;0;0;;; -72329;1;0;false;false;;;;;; -72330;11;0;false;false;0;0;0;;; -72341;1;0;false;false;;;;;; -72342;2;0;false;false;0;0;0;;; -72344;1;0;false;false;;;;;; -72345;2;0;false;false;0;0;0;;; -72347;6;0;false;false;;;;;; -72353;2;1;false;false;127;0;85;;; -72355;1;0;false;false;;;;;; -72356;12;0;false;false;0;0;0;;; -72368;1;0;false;false;;;;;; -72369;1;0;false;false;0;0;0;;; -72370;4;0;false;false;;;;;; -72374;5;0;false;false;0;0;0;;; -72379;1;0;false;false;;;;;; -72380;1;0;false;false;0;0;0;;; -72381;1;0;false;false;;;;;; -72382;2;0;false;false;0;0;0;;; -72384;3;0;false;false;;;;;; -72387;1;0;false;false;0;0;0;;; -72388;1;0;false;false;;;;;; -72389;4;1;false;false;127;0;85;;; -72393;1;0;false;false;;;;;; -72394;1;0;false;false;0;0;0;;; -72395;4;0;false;false;;;;;; -72399;5;0;false;false;0;0;0;;; -72404;1;0;false;false;;;;;; -72405;1;0;false;false;0;0;0;;; -72406;1;0;false;false;;;;;; -72407;23;0;false;false;0;0;0;;; -72430;3;0;false;false;;;;;; -72433;1;0;false;false;0;0;0;;; -72434;3;0;false;false;;;;;; -72437;2;1;false;false;127;0;85;;; -72439;1;0;false;false;;;;;; -72440;6;0;false;false;0;0;0;;; -72446;1;0;false;false;;;;;; -72447;2;0;false;false;0;0;0;;; -72449;1;0;false;false;;;;;; -72450;12;0;false;false;0;0;0;;; -72462;1;0;false;false;;;;;; -72463;1;0;false;false;0;0;0;;; -72464;4;0;false;false;;;;;; -72468;5;0;false;false;0;0;0;;; -72473;1;0;false;false;;;;;; -72474;1;0;false;false;0;0;0;;; -72475;1;0;false;false;;;;;; -72476;6;0;false;false;0;0;0;;; -72482;3;0;false;false;;;;;; -72485;1;0;false;false;0;0;0;;; -72486;4;0;false;false;;;;;; -72490;4;1;false;false;127;0;85;;; -72494;1;0;false;false;;;;;; -72495;1;0;false;false;0;0;0;;; -72496;4;0;false;false;;;;;; -72500;5;0;false;false;0;0;0;;; -72505;1;0;false;false;;;;;; -72506;1;0;false;false;0;0;0;;; -72507;1;0;false;false;;;;;; -72508;14;0;false;false;0;0;0;;; -72522;3;0;false;false;;;;;; -72525;1;0;false;false;0;0;0;;; -72526;3;0;false;false;;;;;; -72529;2;1;false;false;127;0;85;;; -72531;1;0;false;false;;;;;; -72532;6;0;false;false;0;0;0;;; -72538;1;0;false;false;;;;;; -72539;2;0;false;false;0;0;0;;; -72541;1;0;false;false;;;;;; -72542;12;0;false;false;0;0;0;;; -72554;1;0;false;false;;;;;; -72555;1;0;false;false;0;0;0;;; -72556;4;0;false;false;;;;;; -72560;9;0;false;false;0;0;0;;; -72569;1;0;false;false;;;;;; -72570;16;0;false;false;0;0;0;;; -72586;1;0;false;false;;;;;; -72587;1;0;false;false;0;0;0;;; -72588;1;0;false;false;;;;;; -72589;10;0;false;false;0;0;0;;; -72599;4;0;false;false;;;;;; -72603;2;1;false;false;127;0;85;;; -72605;1;0;false;false;;;;;; -72606;10;0;false;false;0;0;0;;; -72616;1;0;false;false;;;;;; -72617;1;0;false;false;0;0;0;;; -72618;5;0;false;false;;;;;; -72623;73;0;false;false;63;127;95;;; -72696;3;0;false;false;;;;;; -72699;54;0;false;false;63;127;95;;; -72753;3;0;false;false;;;;;; -72756;16;0;false;false;0;0;0;;; -72772;1;0;false;false;;;;;; -72773;1;0;false;false;0;0;0;;; -72774;1;0;false;false;;;;;; -72775;3;1;false;false;127;0;85;;; -72778;1;0;false;false;;;;;; -72779;18;0;false;false;0;0;0;;; -72797;4;1;false;false;127;0;85;;; -72801;1;0;false;false;0;0;0;;; -72802;1;0;false;false;;;;;; -72803;16;0;false;false;0;0;0;;; -72819;5;0;false;false;;;;;; -72824;2;1;false;false;127;0;85;;; -72826;1;0;false;false;;;;;; -72827;13;0;false;false;0;0;0;;; -72840;1;0;false;false;;;;;; -72841;1;0;false;false;0;0;0;;; -72842;6;0;false;false;;;;;; -72848;5;0;false;false;0;0;0;;; -72853;1;0;false;false;;;;;; -72854;1;0;false;false;0;0;0;;; -72855;1;0;false;false;;;;;; -72856;30;0;false;false;0;0;0;;; -72886;5;0;false;false;;;;;; -72891;1;0;false;false;0;0;0;;; -72892;4;0;false;false;;;;;; -72896;1;0;false;false;0;0;0;;; -72897;4;0;false;false;;;;;; -72901;51;0;false;false;63;127;95;;; -72952;2;0;false;false;;;;;; -72954;51;0;false;false;63;127;95;;; -73005;2;0;false;false;;;;;; -73007;28;0;false;false;63;127;95;;; -73035;2;0;false;false;;;;;; -73037;3;1;false;false;127;0;85;;; -73040;1;0;false;false;;;;;; -73041;12;0;false;false;0;0;0;;; -73053;1;0;false;false;;;;;; -73054;1;0;false;false;0;0;0;;; -73055;1;0;false;false;;;;;; -73056;8;0;false;false;0;0;0;;; -73064;1;0;false;false;;;;;; -73065;7;0;false;false;0;0;0;;; -73072;1;0;false;false;;;;;; -73073;31;0;false;false;0;0;0;;; -73104;1;0;false;false;;;;;; -73105;1;0;false;false;0;0;0;;; -73106;1;0;false;false;;;;;; -73107;12;0;false;false;0;0;0;;; -73119;4;0;false;false;;;;;; -73123;29;0;false;false;0;0;0;;; -73152;1;0;false;false;;;;;; -73153;14;0;false;false;0;0;0;;; -73167;4;0;false;false;;;;;; -73171;5;0;false;false;0;0;0;;; -73176;1;0;false;false;;;;;; -73177;1;0;false;false;0;0;0;;; -73178;1;0;false;false;;;;;; -73179;27;0;false;false;0;0;0;;; -73206;1;0;false;false;;;;;; -73207;1;0;false;false;0;0;0;;; -73208;1;0;false;false;;;;;; -73209;10;0;false;false;0;0;0;;; -73219;1;0;false;false;;;;;; -73220;1;0;false;false;0;0;0;;; -73221;1;0;false;false;;;;;; -73222;12;0;false;false;0;0;0;;; -73234;3;0;false;false;;;;;; -73237;1;0;false;false;0;0;0;;; -73238;3;0;false;false;;;;;; -73241;4;1;false;false;127;0;85;;; -73245;3;0;false;false;;;;;; -73248;2;1;false;false;127;0;85;;; -73250;1;0;false;false;;;;;; -73251;9;0;false;false;0;0;0;;; -73260;1;0;false;false;;;;;; -73261;2;0;false;false;0;0;0;;; -73263;1;0;false;false;;;;;; -73264;12;0;false;false;0;0;0;;; -73276;1;0;false;false;;;;;; -73277;1;0;false;false;0;0;0;;; -73278;4;0;false;false;;;;;; -73282;55;0;false;false;63;127;95;;; -73337;2;0;false;false;;;;;; -73339;46;0;false;false;63;127;95;;; -73385;2;0;false;false;;;;;; -73387;14;0;false;false;0;0;0;;; -73401;1;0;false;false;;;;;; -73402;14;0;false;false;0;0;0;;; -73416;1;0;false;false;;;;;; -73417;1;0;false;false;0;0;0;;; -73418;1;0;false;false;;;;;; -73419;3;1;false;false;127;0;85;;; -73422;1;0;false;false;;;;;; -73423;24;0;false;false;0;0;0;;; -73447;1;0;false;false;;;;;; -73448;16;0;false;false;0;0;0;;; -73464;4;0;false;false;;;;;; -73468;32;0;false;false;0;0;0;;; -73500;4;0;false;false;;;;;; -73504;5;0;false;false;0;0;0;;; -73509;1;0;false;false;;;;;; -73510;1;0;false;false;0;0;0;;; -73511;1;0;false;false;;;;;; -73512;30;0;false;false;0;0;0;;; -73542;3;0;false;false;;;;;; -73545;1;0;false;false;0;0;0;;; -73546;3;0;false;false;;;;;; -73549;2;1;false;false;127;0;85;;; -73551;1;0;false;false;;;;;; -73552;6;0;false;false;0;0;0;;; -73558;1;0;false;false;;;;;; -73559;2;0;false;false;0;0;0;;; -73561;1;0;false;false;;;;;; -73562;12;0;false;false;0;0;0;;; -73574;1;0;false;false;;;;;; -73575;1;0;false;false;0;0;0;;; -73576;4;0;false;false;;;;;; -73580;6;0;false;false;0;0;0;;; -73586;1;0;false;false;;;;;; -73587;1;0;false;false;0;0;0;;; -73588;1;0;false;false;;;;;; -73589;6;0;false;false;0;0;0;;; -73595;3;0;false;false;;;;;; -73598;1;0;false;false;0;0;0;;; -73599;4;0;false;false;;;;;; -73603;4;1;false;false;127;0;85;;; -73607;1;0;false;false;;;;;; -73608;1;0;false;false;0;0;0;;; -73609;4;0;false;false;;;;;; -73613;6;0;false;false;0;0;0;;; -73619;1;0;false;false;;;;;; -73620;1;0;false;false;0;0;0;;; -73621;1;0;false;false;;;;;; -73622;5;0;false;false;0;0;0;;; -73627;1;0;false;false;;;;;; -73628;1;0;false;false;0;0;0;;; -73629;1;0;false;false;;;;;; -73630;10;0;false;false;0;0;0;;; -73640;1;0;false;false;;;;;; -73641;1;0;false;false;0;0;0;;; -73642;1;0;false;false;;;;;; -73643;9;0;false;false;0;0;0;;; -73652;1;0;false;false;;;;;; -73653;1;0;false;false;0;0;0;;; -73654;1;0;false;false;;;;;; -73655;13;0;false;false;0;0;0;;; -73668;3;0;false;false;;;;;; -73671;1;0;false;false;0;0;0;;; -73672;3;0;false;false;;;;;; -73675;46;0;false;false;63;127;95;;; -73721;1;0;false;false;;;;;; -73722;2;1;false;false;127;0;85;;; -73724;1;0;false;false;;;;;; -73725;6;0;false;false;0;0;0;;; -73731;1;0;false;false;;;;;; -73732;2;0;false;false;0;0;0;;; -73734;1;0;false;false;;;;;; -73735;2;0;false;false;0;0;0;;; -73737;1;0;false;false;;;;;; -73738;1;0;false;false;0;0;0;;; -73739;4;0;false;false;;;;;; -73743;5;0;false;false;0;0;0;;; -73748;1;0;false;false;;;;;; -73749;1;0;false;false;0;0;0;;; -73750;1;0;false;false;;;;;; -73751;14;0;false;false;0;0;0;;; -73765;3;0;false;false;;;;;; -73768;1;0;false;false;0;0;0;;; -73769;3;0;false;false;;;;;; -73772;2;1;false;false;127;0;85;;; -73774;1;0;false;false;;;;;; -73775;7;0;false;false;0;0;0;;; -73782;1;0;false;false;;;;;; -73783;2;0;false;false;0;0;0;;; -73785;1;0;false;false;;;;;; -73786;2;0;false;false;0;0;0;;; -73788;1;0;false;false;;;;;; -73789;1;0;false;false;0;0;0;;; -73790;4;0;false;false;;;;;; -73794;2;1;false;false;127;0;85;;; -73796;1;0;false;false;;;;;; -73797;12;0;false;false;0;0;0;;; -73809;1;0;false;false;;;;;; -73810;1;0;false;false;0;0;0;;; -73811;5;0;false;false;;;;;; -73816;6;0;false;false;0;0;0;;; -73822;1;0;false;false;;;;;; -73823;1;0;false;false;0;0;0;;; -73824;1;0;false;false;;;;;; -73825;11;0;false;false;0;0;0;;; -73836;4;0;false;false;;;;;; -73840;1;0;false;false;0;0;0;;; -73841;4;0;false;false;;;;;; -73845;4;1;false;false;127;0;85;;; -73849;1;0;false;false;;;;;; -73850;1;0;false;false;0;0;0;;; -73851;5;0;false;false;;;;;; -73856;6;0;false;false;0;0;0;;; -73862;1;0;false;false;;;;;; -73863;1;0;false;false;0;0;0;;; -73864;1;0;false;false;;;;;; -73865;15;0;false;false;0;0;0;;; -73880;4;0;false;false;;;;;; -73884;1;0;false;false;0;0;0;;; -73885;3;0;false;false;;;;;; -73888;1;0;false;false;0;0;0;;; -73889;3;0;false;false;;;;;; -73892;9;0;false;false;0;0;0;;; -73901;1;0;false;false;;;;;; -73902;4;0;false;false;0;0;0;;; -73906;1;0;false;false;;;;;; -73907;1;0;false;false;0;0;0;;; -73908;1;0;false;false;;;;;; -73909;14;0;false;false;0;0;0;;; -73923;1;0;false;false;;;;;; -73924;2;0;false;false;0;0;0;;; -73926;1;0;false;false;;;;;; -73927;6;0;false;false;0;0;0;;; -73933;1;0;false;false;;;;;; -73934;8;0;false;false;0;0;0;;; -73942;3;0;false;false;;;;;; -73945;6;1;false;false;127;0;85;;; -73951;1;0;false;false;;;;;; -73952;3;1;false;false;127;0;85;;; -73955;1;0;false;false;;;;;; -73956;5;0;false;false;0;0;0;;; -73961;1;0;false;false;;;;;; -73962;12;0;false;false;0;0;0;;; -73974;1;0;false;false;;;;;; -73975;13;0;false;false;0;0;0;;; -73988;2;0;false;false;;;;;; -73990;1;0;false;false;0;0;0;;; -73991;2;0;false;false;;;;;; -73993;3;0;false;false;63;95;191;;; -73996;3;0;false;false;;;;;; -73999;1;0;false;false;63;95;191;;; -74000;1;0;false;false;;;;;; -74001;6;0;false;false;63;95;191;;; -74007;1;0;false;false;;;;;; -74008;3;0;false;false;63;95;191;;; -74011;1;0;false;false;;;;;; -74012;8;0;false;false;63;95;191;;; -74020;1;0;false;false;;;;;; -74021;4;0;false;false;63;95;191;;; -74025;1;0;false;false;;;;;; -74026;2;0;false;false;63;95;191;;; -74028;1;0;false;false;;;;;; -74029;3;0;false;false;63;95;191;;; -74032;1;0;false;false;;;;;; -74033;6;0;false;false;127;127;159;;; -74039;13;0;false;false;63;95;191;;; -74052;7;0;false;false;127;127;159;;; -74059;1;0;false;false;;;;;; -74060;10;0;false;false;63;95;191;;; -74070;3;0;false;false;;;;;; -74073;1;0;false;false;63;95;191;;; -74074;1;0;false;false;;;;;; -74075;3;0;false;false;63;95;191;;; -74078;1;0;false;false;;;;;; -74079;4;0;false;false;63;95;191;;; -74083;1;0;false;false;;;;;; -74084;4;0;false;false;63;95;191;;; -74088;1;0;false;false;;;;;; -74089;2;0;false;false;63;95;191;;; -74091;1;0;false;false;;;;;; -74092;3;0;false;false;63;95;191;;; -74095;1;0;false;false;;;;;; -74096;2;0;false;false;63;95;191;;; -74098;1;0;false;false;;;;;; -74099;3;0;false;false;63;95;191;;; -74102;1;0;false;false;;;;;; -74103;9;0;false;false;63;95;191;;; -74112;1;0;false;false;;;;;; -74113;2;0;false;false;63;95;191;;; -74115;1;0;false;false;;;;;; -74116;5;0;false;false;63;95;191;;; -74121;1;0;false;false;;;;;; -74122;4;0;false;false;63;95;191;;; -74126;1;0;false;false;;;;;; -74127;6;0;false;false;63;95;191;;; -74133;1;0;false;false;;;;;; -74134;3;0;false;false;63;95;191;;; -74137;1;0;false;false;;;;;; -74138;3;0;false;false;63;95;191;;; -74141;1;0;false;false;;;;;; -74142;7;0;false;false;63;95;191;;; -74149;3;0;false;false;;;;;; -74152;1;0;false;false;63;95;191;;; -74153;1;0;false;false;;;;;; -74154;3;0;false;false;63;95;191;;; -74157;1;0;false;false;;;;;; -74158;6;0;false;false;127;127;159;;; -74164;13;0;false;false;63;95;191;;; -74177;7;0;false;false;127;127;159;;; -74184;1;0;false;false;;;;;; -74185;9;0;false;false;63;95;191;;; -74194;1;0;false;false;;;;;; -74195;2;0;false;false;63;95;191;;; -74197;1;0;false;false;;;;;; -74198;4;0;false;false;63;95;191;;; -74202;1;0;false;false;;;;;; -74203;3;0;false;false;63;95;191;;; -74206;1;0;false;false;;;;;; -74207;4;0;false;false;63;95;191;;; -74211;1;0;false;false;;;;;; -74212;4;0;false;false;63;95;191;;; -74216;1;0;false;false;;;;;; -74217;2;0;false;false;63;95;191;;; -74219;3;0;false;false;;;;;; -74222;1;0;false;false;63;95;191;;; -74223;2;0;false;false;;;;;; -74225;11;0;false;false;63;95;191;;; -74236;1;0;false;false;;;;;; -74237;2;0;false;false;63;95;191;;; -74239;1;0;false;false;;;;;; -74240;8;0;false;false;63;95;191;;; -74248;1;0;false;false;;;;;; -74249;11;0;false;false;63;95;191;;; -74260;1;0;false;false;;;;;; -74261;5;0;false;false;63;95;191;;; -74266;1;0;false;false;;;;;; -74267;2;0;false;false;63;95;191;;; -74269;1;0;false;false;;;;;; -74270;14;0;false;false;63;95;191;;; -74284;1;0;false;false;;;;;; -74285;2;0;false;false;63;95;191;;; -74287;4;0;false;false;;;;;; -74291;1;0;false;false;63;95;191;;; -74292;2;0;false;false;;;;;; -74294;2;0;false;false;63;95;191;;; -74296;1;0;false;false;;;;;; -74297;4;0;false;false;63;95;191;;; -74301;1;0;false;false;;;;;; -74302;7;0;false;false;63;95;191;;; -74309;3;0;false;false;;;;;; -74312;1;0;false;false;63;95;191;;; -74313;4;0;false;false;;;;;; -74317;1;0;false;false;63;95;191;;; -74318;1;0;false;false;;;;;; -74319;3;0;false;false;127;127;159;;; -74322;3;0;false;false;;;;;; -74325;1;0;false;false;63;95;191;;; -74326;3;0;false;false;;;;;; -74329;1;0;false;false;63;95;191;;; -74330;1;0;false;false;;;;;; -74331;11;1;false;false;127;159;191;;; -74342;12;0;false;false;63;95;191;;; -74354;1;0;false;false;;;;;; -74355;4;0;false;false;127;127;159;;; -74359;3;0;false;false;;;;;; -74362;1;0;false;false;63;95;191;;; -74363;4;0;false;false;;;;;; -74367;4;0;false;false;127;127;159;;; -74371;21;0;false;false;63;95;191;;; -74392;1;0;false;false;;;;;; -74393;1;0;false;false;127;127;159;;; -74394;1;0;false;false;;;;;; -74395;2;0;false;false;63;95;191;;; -74397;1;0;false;false;;;;;; -74398;3;0;false;false;63;95;191;;; -74401;1;0;false;false;;;;;; -74402;8;0;false;false;63;95;191;;; -74410;1;0;false;false;;;;;; -74411;3;0;false;false;63;95;191;;; -74414;1;0;false;false;;;;;; -74415;4;0;false;false;63;95;191;;; -74419;1;0;false;false;;;;;; -74420;8;0;false;false;63;95;191;;; -74428;5;0;false;false;127;127;159;;; -74433;3;0;false;false;;;;;; -74436;1;0;false;false;63;95;191;;; -74437;4;0;false;false;;;;;; -74441;4;0;false;false;127;127;159;;; -74445;27;0;false;false;63;95;191;;; -74472;1;0;false;false;;;;;; -74473;1;0;false;false;127;127;159;;; -74474;1;0;false;false;;;;;; -74475;2;0;false;false;63;95;191;;; -74477;1;0;false;false;;;;;; -74478;3;0;false;false;63;95;191;;; -74481;1;0;false;false;;;;;; -74482;6;0;false;false;63;95;191;;; -74488;1;0;false;false;;;;;; -74489;4;0;false;false;63;95;191;;; -74493;1;0;false;false;;;;;; -74494;3;0;false;false;63;95;191;;; -74497;1;0;false;false;;;;;; -74498;6;0;false;false;63;95;191;;; -74504;1;0;false;false;;;;;; -74505;4;0;false;false;63;95;191;;; -74509;1;0;false;false;;;;;; -74510;7;0;false;false;63;95;191;;; -74517;1;0;false;false;;;;;; -74518;3;0;false;false;63;95;191;;; -74521;1;0;false;false;;;;;; -74522;8;0;false;false;63;95;191;;; -74530;5;0;false;false;127;127;159;;; -74535;3;0;false;false;;;;;; -74538;1;0;false;false;63;95;191;;; -74539;1;0;false;false;;;;;; -74540;5;0;false;false;127;127;159;;; -74545;3;0;false;false;;;;;; -74548;2;0;false;false;63;95;191;;; -74550;2;0;false;false;;;;;; -74552;6;1;false;false;127;0;85;;; -74558;1;0;false;false;;;;;; -74559;4;1;false;false;127;0;85;;; -74563;1;0;false;false;;;;;; -74564;6;0;false;false;0;0;0;;; -74570;1;0;false;false;;;;;; -74571;1;0;false;false;0;0;0;;; -74572;3;0;false;false;;;;;; -74575;14;0;false;false;0;0;0;;; -74589;3;0;false;false;;;;;; -74592;20;0;false;false;0;0;0;;; -74612;2;0;false;false;;;;;; -74614;1;0;false;false;0;0;0;;; -74615;4;0;false;false;;;;;; -74619;3;0;false;false;63;95;191;;; -74622;3;0;false;false;;;;;; -74625;1;0;false;false;63;95;191;;; -74626;1;0;false;false;;;;;; -74627;6;0;false;false;63;95;191;;; -74633;1;0;false;false;;;;;; -74634;3;0;false;false;63;95;191;;; -74637;1;0;false;false;;;;;; -74638;8;0;false;false;63;95;191;;; -74646;1;0;false;false;;;;;; -74647;4;0;false;false;63;95;191;;; -74651;1;0;false;false;;;;;; -74652;2;0;false;false;63;95;191;;; -74654;1;0;false;false;;;;;; -74655;3;0;false;false;63;95;191;;; -74658;1;0;false;false;;;;;; -74659;9;0;false;false;63;95;191;;; -74668;1;0;false;false;;;;;; -74669;10;0;false;false;63;95;191;;; -74679;2;0;false;false;;;;;; -74681;3;0;false;false;63;95;191;;; -74684;1;0;false;false;;;;;; -74685;4;0;false;false;63;95;191;;; -74689;1;0;false;false;;;;;; -74690;4;0;false;false;63;95;191;;; -74694;1;0;false;false;;;;;; -74695;2;0;false;false;63;95;191;;; -74697;1;0;false;false;;;;;; -74698;3;0;false;false;63;95;191;;; -74701;1;0;false;false;;;;;; -74702;2;0;false;false;63;95;191;;; -74704;1;0;false;false;;;;;; -74705;3;0;false;false;63;95;191;;; -74708;4;0;false;false;;;;;; -74712;1;0;false;false;63;95;191;;; -74713;1;0;false;false;;;;;; -74714;9;0;false;false;63;95;191;;; -74723;1;0;false;false;;;;;; -74724;2;0;false;false;63;95;191;;; -74726;1;0;false;false;;;;;; -74727;5;0;false;false;63;95;191;;; -74732;1;0;false;false;;;;;; -74733;4;0;false;false;63;95;191;;; -74737;1;0;false;false;;;;;; -74738;6;0;false;false;63;95;191;;; -74744;1;0;false;false;;;;;; -74745;3;0;false;false;63;95;191;;; -74748;1;0;false;false;;;;;; -74749;3;0;false;false;63;95;191;;; -74752;1;0;false;false;;;;;; -74753;7;0;false;false;63;95;191;;; -74760;3;0;false;false;;;;;; -74763;1;0;false;false;63;95;191;;; -74764;4;0;false;false;;;;;; -74768;1;0;false;false;63;95;191;;; -74769;1;0;false;false;;;;;; -74770;3;0;false;false;127;127;159;;; -74773;3;0;false;false;63;95;191;;; -74776;1;0;false;false;;;;;; -74777;13;0;false;false;63;95;191;;; -74790;1;0;false;false;;;;;; -74791;2;0;false;false;63;95;191;;; -74793;2;0;false;false;;;;;; -74795;3;0;false;false;63;95;191;;; -74798;1;0;false;false;;;;;; -74799;2;0;false;false;63;95;191;;; -74801;1;0;false;false;;;;;; -74802;3;0;false;false;63;95;191;;; -74805;1;0;false;false;;;;;; -74806;9;0;false;false;63;95;191;;; -74815;1;0;false;false;;;;;; -74816;9;0;false;false;63;95;191;;; -74825;1;0;false;false;;;;;; -74826;7;0;false;false;63;95;191;;; -74833;1;0;false;false;;;;;; -74834;2;0;false;false;63;95;191;;; -74836;1;0;false;false;;;;;; -74837;5;0;false;false;63;95;191;;; -74842;4;0;false;false;;;;;; -74846;1;0;false;false;63;95;191;;; -74847;1;0;false;false;;;;;; -74848;6;0;false;false;127;127;159;;; -74854;3;0;false;false;63;95;191;;; -74857;7;0;false;false;127;127;159;;; -74864;1;0;false;false;63;95;191;;; -74865;2;0;false;false;;;;;; -74867;3;0;false;false;63;95;191;;; -74870;1;0;false;false;;;;;; -74871;6;0;false;false;127;127;159;;; -74877;13;0;false;false;63;95;191;;; -74890;7;0;false;false;127;127;159;;; -74897;2;0;false;false;;;;;; -74899;9;0;false;false;63;95;191;;; -74908;1;0;false;false;;;;;; -74909;2;0;false;false;63;95;191;;; -74911;4;0;false;false;;;;;; -74915;1;0;false;false;63;95;191;;; -74916;1;0;false;false;;;;;; -74917;4;0;false;false;63;95;191;;; -74921;1;0;false;false;;;;;; -74922;3;0;false;false;63;95;191;;; -74925;1;0;false;false;;;;;; -74926;4;0;false;false;63;95;191;;; -74930;1;0;false;false;;;;;; -74931;4;0;false;false;63;95;191;;; -74935;1;0;false;false;;;;;; -74936;2;0;false;false;63;95;191;;; -74938;1;0;false;false;;;;;; -74939;11;0;false;false;63;95;191;;; -74950;1;0;false;false;;;;;; -74951;2;0;false;false;63;95;191;;; -74953;1;0;false;false;;;;;; -74954;8;0;false;false;63;95;191;;; -74962;1;0;false;false;;;;;; -74963;11;0;false;false;63;95;191;;; -74974;1;0;false;false;;;;;; -74975;5;0;false;false;63;95;191;;; -74980;1;0;false;false;;;;;; -74981;2;0;false;false;63;95;191;;; -74983;1;0;false;false;;;;;; -74984;14;0;false;false;63;95;191;;; -74998;4;0;false;false;;;;;; -75002;1;0;false;false;63;95;191;;; -75003;1;0;false;false;;;;;; -75004;2;0;false;false;63;95;191;;; -75006;1;0;false;false;;;;;; -75007;2;0;false;false;63;95;191;;; -75009;1;0;false;false;;;;;; -75010;4;0;false;false;63;95;191;;; -75014;1;0;false;false;;;;;; -75015;7;0;false;false;63;95;191;;; -75022;2;0;false;false;;;;;; -75024;3;0;false;false;63;95;191;;; -75027;1;0;false;false;;;;;; -75028;6;0;false;false;127;127;159;;; -75034;23;0;false;false;63;95;191;;; -75057;7;0;false;false;127;127;159;;; -75064;4;0;false;false;;;;;; -75068;1;0;false;false;63;95;191;;; -75069;1;0;false;false;;;;;; -75070;9;0;false;false;63;95;191;;; -75079;1;0;false;false;;;;;; -75080;2;0;false;false;63;95;191;;; -75082;1;0;false;false;;;;;; -75083;4;0;false;false;63;95;191;;; -75087;1;0;false;false;;;;;; -75088;3;0;false;false;63;95;191;;; -75091;1;0;false;false;;;;;; -75092;4;0;false;false;63;95;191;;; -75096;1;0;false;false;;;;;; -75097;4;0;false;false;63;95;191;;; -75101;1;0;false;false;;;;;; -75102;2;0;false;false;63;95;191;;; -75104;1;0;false;false;;;;;; -75105;11;0;false;false;63;95;191;;; -75116;1;0;false;false;;;;;; -75117;2;0;false;false;63;95;191;;; -75119;1;0;false;false;;;;;; -75120;9;0;false;false;63;95;191;;; -75129;1;0;false;false;;;;;; -75130;4;0;false;false;63;95;191;;; -75134;1;0;false;false;;;;;; -75135;3;0;false;false;63;95;191;;; -75138;1;0;false;false;;;;;; -75139;7;0;false;false;63;95;191;;; -75146;4;0;false;false;;;;;; -75150;1;0;false;false;63;95;191;;; -75151;1;0;false;false;;;;;; -75152;4;0;false;false;63;95;191;;; -75156;1;0;false;false;;;;;; -75157;3;0;false;false;63;95;191;;; -75160;1;0;false;false;;;;;; -75161;6;0;false;false;63;95;191;;; -75167;1;0;false;false;;;;;; -75168;5;0;false;false;63;95;191;;; -75173;1;0;false;false;;;;;; -75174;7;0;false;false;63;95;191;;; -75181;4;0;false;false;127;127;159;;; -75185;3;0;false;false;;;;;; -75188;1;0;false;false;63;95;191;;; -75189;4;0;false;false;;;;;; -75193;1;0;false;false;63;95;191;;; -75194;1;0;false;false;;;;;; -75195;7;1;false;false;127;159;191;;; -75202;13;0;false;false;63;95;191;;; -75215;1;0;false;false;;;;;; -75216;9;0;false;false;63;95;191;;; -75225;1;0;false;false;;;;;; -75226;3;0;false;false;63;95;191;;; -75229;1;0;false;false;;;;;; -75230;4;0;false;false;63;95;191;;; -75234;1;0;false;false;;;;;; -75235;2;0;false;false;63;95;191;;; -75237;1;0;false;false;;;;;; -75238;9;0;false;false;63;95;191;;; -75247;3;0;false;false;;;;;; -75250;1;0;false;false;63;95;191;;; -75251;3;0;false;false;;;;;; -75254;1;0;false;false;63;95;191;;; -75255;1;0;false;false;;;;;; -75256;11;1;false;false;127;159;191;;; -75267;12;0;false;false;63;95;191;;; -75279;1;0;false;false;;;;;; -75280;4;0;false;false;127;127;159;;; -75284;3;0;false;false;;;;;; -75287;1;0;false;false;63;95;191;;; -75288;4;0;false;false;;;;;; -75292;4;0;false;false;127;127;159;;; -75296;21;0;false;false;63;95;191;;; -75317;1;0;false;false;;;;;; -75318;1;0;false;false;127;127;159;;; -75319;1;0;false;false;;;;;; -75320;2;0;false;false;63;95;191;;; -75322;1;0;false;false;;;;;; -75323;3;0;false;false;63;95;191;;; -75326;1;0;false;false;;;;;; -75327;8;0;false;false;63;95;191;;; -75335;1;0;false;false;;;;;; -75336;3;0;false;false;63;95;191;;; -75339;1;0;false;false;;;;;; -75340;4;0;false;false;63;95;191;;; -75344;1;0;false;false;;;;;; -75345;8;0;false;false;63;95;191;;; -75353;5;0;false;false;127;127;159;;; -75358;3;0;false;false;;;;;; -75361;1;0;false;false;63;95;191;;; -75362;4;0;false;false;;;;;; -75366;4;0;false;false;127;127;159;;; -75370;27;0;false;false;63;95;191;;; -75397;1;0;false;false;;;;;; -75398;1;0;false;false;127;127;159;;; -75399;1;0;false;false;;;;;; -75400;2;0;false;false;63;95;191;;; -75402;1;0;false;false;;;;;; -75403;3;0;false;false;63;95;191;;; -75406;1;0;false;false;;;;;; -75407;6;0;false;false;63;95;191;;; -75413;1;0;false;false;;;;;; -75414;4;0;false;false;63;95;191;;; -75418;1;0;false;false;;;;;; -75419;3;0;false;false;63;95;191;;; -75422;1;0;false;false;;;;;; -75423;6;0;false;false;63;95;191;;; -75429;1;0;false;false;;;;;; -75430;4;0;false;false;63;95;191;;; -75434;1;0;false;false;;;;;; -75435;7;0;false;false;63;95;191;;; -75442;1;0;false;false;;;;;; -75443;3;0;false;false;63;95;191;;; -75446;1;0;false;false;;;;;; -75447;8;0;false;false;63;95;191;;; -75455;5;0;false;false;127;127;159;;; -75460;3;0;false;false;;;;;; -75463;1;0;false;false;63;95;191;;; -75464;1;0;false;false;;;;;; -75465;5;0;false;false;127;127;159;;; -75470;3;0;false;false;;;;;; -75473;1;0;false;false;63;95;191;;; -75474;4;0;false;false;;;;;; -75478;1;0;false;false;63;95;191;;; -75479;1;0;false;false;;;;;; -75480;7;1;false;false;127;159;191;;; -75487;3;0;false;false;63;95;191;;; -75490;3;0;false;false;;;;;; -75493;2;0;false;false;63;95;191;;; -75495;2;0;false;false;;;;;; -75497;6;1;false;false;127;0;85;;; -75503;1;0;false;false;;;;;; -75504;4;1;false;false;127;0;85;;; -75508;1;0;false;false;;;;;; -75509;5;0;false;false;0;0;0;;; -75514;3;1;false;false;127;0;85;;; -75517;1;0;false;false;;;;;; -75518;14;0;false;false;0;0;0;;; -75532;1;0;false;false;;;;;; -75533;1;0;false;false;0;0;0;;; -75534;3;0;false;false;;;;;; -75537;14;0;false;false;0;0;0;;; -75551;3;0;false;false;;;;;; -75554;2;1;false;false;127;0;85;;; -75556;1;0;false;false;;;;;; -75557;14;0;false;false;0;0;0;;; -75571;1;0;false;false;;;;;; -75572;2;0;false;false;0;0;0;;; -75574;1;0;false;false;;;;;; -75575;13;0;false;false;0;0;0;;; -75588;1;0;false;false;;;;;; -75589;2;0;false;false;0;0;0;;; -75591;6;0;false;false;;;;;; -75597;13;0;false;false;0;0;0;;; -75610;1;0;false;false;;;;;; -75611;2;0;false;false;0;0;0;;; -75613;1;0;false;false;;;;;; -75614;24;0;false;false;0;0;0;;; -75638;1;0;false;false;;;;;; -75639;6;1;false;false;127;0;85;;; -75645;1;0;false;false;0;0;0;;; -75646;3;0;false;false;;;;;; -75649;3;1;false;false;127;0;85;;; -75652;1;0;false;false;;;;;; -75653;6;0;false;false;0;0;0;;; -75659;1;0;false;false;;;;;; -75660;1;0;false;false;0;0;0;;; -75661;1;0;false;false;;;;;; -75662;11;0;false;false;0;0;0;;; -75673;1;0;false;false;;;;;; -75674;1;0;false;false;0;0;0;;; -75675;1;0;false;false;;;;;; -75676;12;0;false;false;0;0;0;;; -75688;3;0;false;false;;;;;; -75691;2;1;false;false;127;0;85;;; -75693;1;0;false;false;;;;;; -75694;7;0;false;false;0;0;0;;; -75701;1;0;false;false;;;;;; -75702;1;0;false;false;0;0;0;;; -75703;1;0;false;false;;;;;; -75704;2;0;false;false;0;0;0;;; -75706;1;0;false;false;;;;;; -75707;1;0;false;false;0;0;0;;; -75708;4;0;false;false;;;;;; -75712;3;1;false;false;127;0;85;;; -75715;1;0;false;false;;;;;; -75716;1;0;false;false;0;0;0;;; -75717;5;0;false;false;;;;;; -75722;32;0;false;false;0;0;0;;; -75754;1;0;false;false;;;;;; -75755;7;0;false;false;0;0;0;;; -75762;1;0;false;false;;;;;; -75763;15;0;false;false;0;0;0;;; -75778;4;0;false;false;;;;;; -75782;1;0;false;false;0;0;0;;; -75783;4;0;false;false;;;;;; -75787;5;1;false;false;127;0;85;;; -75792;1;0;false;false;;;;;; -75793;9;0;false;false;0;0;0;;; -75802;1;0;false;false;;;;;; -75803;6;0;false;false;0;0;0;;; -75809;1;0;false;false;;;;;; -75810;1;0;false;false;0;0;0;;; -75811;5;0;false;false;;;;;; -75816;69;0;false;false;63;127;95;;; -75885;3;0;false;false;;;;;; -75888;64;0;false;false;63;127;95;;; -75952;3;0;false;false;;;;;; -75955;18;0;false;false;63;127;95;;; -75973;3;0;false;false;;;;;; -75976;47;0;false;false;63;127;95;;; -76023;3;0;false;false;;;;;; -76026;2;1;false;false;127;0;85;;; -76028;1;0;false;false;;;;;; -76029;11;0;false;false;0;0;0;;; -76040;1;0;false;false;;;;;; -76041;2;0;false;false;0;0;0;;; -76043;1;0;false;false;;;;;; -76044;31;0;false;false;0;0;0;;; -76075;1;0;false;false;;;;;; -76076;1;0;false;false;0;0;0;;; -76077;6;0;false;false;;;;;; -76083;5;1;false;false;127;0;85;;; -76088;1;0;false;false;;;;;; -76089;6;0;false;false;0;0;0;;; -76095;5;0;false;false;;;;;; -76100;1;0;false;false;0;0;0;;; -76101;4;0;false;false;;;;;; -76105;1;0;false;false;0;0;0;;; -76106;3;0;false;false;;;;;; -76109;1;0;false;false;0;0;0;;; -76110;2;0;false;false;;;;;; -76112;1;0;false;false;0;0;0;;; -76113;2;0;false;false;;;;;; -76115;3;0;false;false;63;95;191;;; -76118;3;0;false;false;;;;;; -76121;1;0;false;false;63;95;191;;; -76122;1;0;false;false;;;;;; -76123;7;0;false;false;63;95;191;;; -76130;1;0;false;false;;;;;; -76131;1;0;false;false;63;95;191;;; -76132;1;0;false;false;;;;;; -76133;6;0;false;false;63;95;191;;; -76139;1;0;false;false;;;;;; -76140;4;0;false;false;63;95;191;;; -76144;1;0;false;false;;;;;; -76145;4;0;false;false;63;95;191;;; -76149;1;0;false;false;;;;;; -76150;4;0;false;false;63;95;191;;; -76154;1;0;false;false;;;;;; -76155;3;0;false;false;63;95;191;;; -76158;1;0;false;false;;;;;; -76159;4;0;false;false;63;95;191;;; -76163;1;0;false;false;;;;;; -76164;9;0;false;false;63;95;191;;; -76173;1;0;false;false;;;;;; -76174;9;0;false;false;63;95;191;;; -76183;1;0;false;false;;;;;; -76184;2;0;false;false;63;95;191;;; -76186;1;0;false;false;;;;;; -76187;3;0;false;false;63;95;191;;; -76190;4;0;false;false;;;;;; -76194;1;0;false;false;63;95;191;;; -76195;1;0;false;false;;;;;; -76196;17;0;false;false;63;95;191;;; -76213;1;0;false;false;;;;;; -76214;15;0;false;false;63;95;191;;; -76229;3;0;false;false;;;;;; -76232;1;0;false;false;63;95;191;;; -76233;1;0;false;false;;;;;; -76234;7;0;false;false;63;95;191;;; -76241;1;0;false;false;;;;;; -76242;4;0;false;false;63;95;191;;; -76246;1;0;false;false;;;;;; -76247;3;0;false;false;63;95;191;;; -76250;1;0;false;false;;;;;; -76251;5;0;false;false;63;95;191;;; -76256;1;0;false;false;;;;;; -76257;4;0;false;false;63;95;191;;; -76261;1;0;false;false;;;;;; -76262;2;0;false;false;63;95;191;;; -76264;1;0;false;false;;;;;; -76265;3;0;false;false;63;95;191;;; -76268;1;0;false;false;;;;;; -76269;6;0;false;false;63;95;191;;; -76275;1;0;false;false;;;;;; -76276;3;0;false;false;63;95;191;;; -76279;1;0;false;false;;;;;; -76280;3;0;false;false;63;95;191;;; -76283;1;0;false;false;;;;;; -76284;10;0;false;false;63;95;191;;; -76294;1;0;false;false;;;;;; -76295;6;0;false;false;63;95;191;;; -76301;3;0;false;false;;;;;; -76304;1;0;false;false;63;95;191;;; -76305;1;0;false;false;;;;;; -76306;3;0;false;false;127;127;159;;; -76309;3;0;false;false;;;;;; -76312;1;0;false;false;63;95;191;;; -76313;3;0;false;false;;;;;; -76316;1;0;false;false;63;95;191;;; -76317;1;0;false;false;;;;;; -76318;7;1;false;false;127;159;191;;; -76325;4;0;false;false;63;95;191;;; -76329;1;0;false;false;;;;;; -76330;3;0;false;false;63;95;191;;; -76333;1;0;false;false;;;;;; -76334;4;0;false;false;63;95;191;;; -76338;1;0;false;false;;;;;; -76339;4;0;false;false;63;95;191;;; -76343;1;0;false;false;;;;;; -76344;3;0;false;false;63;95;191;;; -76347;1;0;false;false;;;;;; -76348;4;0;false;false;63;95;191;;; -76352;1;0;false;false;;;;;; -76353;4;0;false;false;63;95;191;;; -76357;1;0;false;false;;;;;; -76358;10;0;false;false;63;95;191;;; -76368;1;0;false;false;;;;;; -76369;4;0;false;false;63;95;191;;; -76373;1;0;false;false;;;;;; -76374;5;0;false;false;63;95;191;;; -76379;4;0;false;false;;;;;; -76383;1;0;false;false;63;95;191;;; -76384;2;0;false;false;;;;;; -76386;5;0;false;false;63;95;191;;; -76391;1;0;false;false;;;;;; -76392;3;0;false;false;63;95;191;;; -76395;1;0;false;false;;;;;; -76396;5;0;false;false;63;95;191;;; -76401;1;0;false;false;;;;;; -76402;4;0;false;false;63;95;191;;; -76406;1;0;false;false;;;;;; -76407;10;0;false;false;63;95;191;;; -76417;1;0;false;false;;;;;; -76418;8;0;false;false;63;95;191;;; -76426;1;0;false;false;;;;;; -76427;4;0;false;false;63;95;191;;; -76431;1;0;false;false;;;;;; -76432;10;0;false;false;63;95;191;;; -76442;4;0;false;false;;;;;; -76446;1;0;false;false;63;95;191;;; -76447;2;0;false;false;;;;;; -76449;3;0;false;false;63;95;191;;; -76452;1;0;false;false;;;;;; -76453;2;0;false;false;63;95;191;;; -76455;1;0;false;false;;;;;; -76456;7;0;false;false;63;95;191;;; -76463;1;0;false;false;;;;;; -76464;2;0;false;false;63;95;191;;; -76466;1;0;false;false;;;;;; -76467;7;0;false;false;63;95;191;;; -76474;1;0;false;false;;;;;; -76475;5;0;false;false;63;95;191;;; -76480;1;0;false;false;;;;;; -76481;8;0;false;false;63;95;191;;; -76489;3;0;false;false;;;;;; -76492;1;0;false;false;63;95;191;;; -76493;1;0;false;false;;;;;; -76494;8;1;false;false;127;159;191;;; -76502;3;0;false;false;63;95;191;;; -76505;1;0;false;false;;;;;; -76506;9;0;false;false;63;95;191;;; -76515;1;0;false;false;;;;;; -76516;4;0;false;false;63;95;191;;; -76520;1;0;false;false;;;;;; -76521;4;0;false;false;63;95;191;;; -76525;1;0;false;false;;;;;; -76526;4;0;false;false;63;95;191;;; -76530;1;0;false;false;;;;;; -76531;4;0;false;false;63;95;191;;; -76535;1;0;false;false;;;;;; -76536;3;0;false;false;63;95;191;;; -76539;1;0;false;false;;;;;; -76540;4;0;false;false;63;95;191;;; -76544;1;0;false;false;;;;;; -76545;9;0;false;false;63;95;191;;; -76554;4;0;false;false;;;;;; -76558;1;0;false;false;63;95;191;;; -76559;2;0;false;false;;;;;; -76561;9;0;false;false;63;95;191;;; -76570;1;0;false;false;;;;;; -76571;2;0;false;false;63;95;191;;; -76573;1;0;false;false;;;;;; -76574;3;0;false;false;63;95;191;;; -76577;1;0;false;false;;;;;; -76578;6;0;false;false;63;95;191;;; -76584;1;0;false;false;;;;;; -76585;7;0;false;false;63;95;191;;; -76592;1;0;false;false;;;;;; -76593;4;0;false;false;63;95;191;;; -76597;1;0;false;false;;;;;; -76598;3;0;false;false;63;95;191;;; -76601;1;0;false;false;;;;;; -76602;5;0;false;false;63;95;191;;; -76607;1;0;false;false;;;;;; -76608;4;0;false;false;63;95;191;;; -76612;1;0;false;false;;;;;; -76613;2;0;false;false;63;95;191;;; -76615;1;0;false;false;;;;;; -76616;3;0;false;false;63;95;191;;; -76619;1;0;false;false;;;;;; -76620;6;0;false;false;63;95;191;;; -76626;4;0;false;false;;;;;; -76630;1;0;false;false;63;95;191;;; -76631;2;0;false;false;;;;;; -76633;3;0;false;false;63;95;191;;; -76636;1;0;false;false;;;;;; -76637;3;0;false;false;63;95;191;;; -76640;1;0;false;false;;;;;; -76641;10;0;false;false;63;95;191;;; -76651;1;0;false;false;;;;;; -76652;6;0;false;false;63;95;191;;; -76658;3;0;false;false;;;;;; -76661;2;0;false;false;63;95;191;;; -76663;2;0;false;false;;;;;; -76665;6;0;false;false;0;0;0;;; -76671;1;0;false;false;;;;;; -76672;28;0;false;false;0;0;0;;; -76700;1;0;false;false;;;;;; -76701;5;0;false;false;0;0;0;;; -76706;1;0;false;false;;;;;; -76707;1;0;false;false;0;0;0;;; -76708;3;0;false;false;;;;;; -76711;12;0;false;false;0;0;0;;; -76723;1;0;false;false;;;;;; -76724;14;0;false;false;0;0;0;;; -76738;3;0;false;false;;;;;; -76741;6;0;false;false;0;0;0;;; -76747;1;0;false;false;;;;;; -76748;9;0;false;false;0;0;0;;; -76757;1;0;false;false;;;;;; -76758;1;0;false;false;0;0;0;;; -76759;1;0;false;false;;;;;; -76760;19;0;false;false;0;0;0;;; -76779;3;0;false;false;;;;;; -76782;3;1;false;false;127;0;85;;; -76785;1;0;false;false;;;;;; -76786;6;0;false;false;0;0;0;;; -76792;1;0;false;false;;;;;; -76793;1;0;false;false;0;0;0;;; -76794;1;0;false;false;;;;;; -76795;14;0;false;false;0;0;0;;; -76809;4;0;false;false;;;;;; -76813;3;1;false;false;127;0;85;;; -76816;1;0;false;false;;;;;; -76817;7;0;false;false;0;0;0;;; -76824;1;0;false;false;;;;;; -76825;1;0;false;false;0;0;0;;; -76826;1;0;false;false;;;;;; -76827;2;0;false;false;0;0;0;;; -76829;3;0;false;false;;;;;; -76832;3;1;false;false;127;0;85;;; -76835;1;0;false;false;;;;;; -76836;7;0;false;false;0;0;0;;; -76843;1;0;false;false;;;;;; -76844;1;0;false;false;0;0;0;;; -76845;1;0;false;false;;;;;; -76846;2;0;false;false;0;0;0;;; -76848;3;0;false;false;;;;;; -76851;3;1;false;false;127;0;85;;; -76854;1;0;false;false;;;;;; -76855;1;0;false;false;0;0;0;;; -76856;1;0;false;false;;;;;; -76857;1;0;false;false;0;0;0;;; -76858;1;0;false;false;;;;;; -76859;2;0;false;false;0;0;0;;; -76861;6;0;false;false;;;;;; -76867;2;1;false;false;127;0;85;;; -76869;1;0;false;false;;;;;; -76870;7;0;false;false;0;0;0;;; -76877;1;0;false;false;;;;;; -76878;2;0;false;false;0;0;0;;; -76880;1;0;false;false;;;;;; -76881;2;0;false;false;0;0;0;;; -76883;1;0;false;false;;;;;; -76884;1;0;false;false;0;0;0;;; -76885;4;0;false;false;;;;;; -76889;6;1;false;false;127;0;85;;; -76895;1;0;false;false;;;;;; -76896;5;0;false;false;0;0;0;;; -76901;3;0;false;false;;;;;; -76904;1;0;false;false;0;0;0;;; -76905;3;0;false;false;;;;;; -76908;13;0;false;false;0;0;0;;; -76921;1;0;false;false;;;;;; -76922;1;0;false;false;0;0;0;;; -76923;1;0;false;false;;;;;; -76924;3;1;false;false;127;0;85;;; -76927;1;0;false;false;;;;;; -76928;21;0;false;false;0;0;0;;; -76949;3;0;false;false;;;;;; -76952;5;1;false;false;127;0;85;;; -76957;1;0;false;false;;;;;; -76958;2;0;false;false;0;0;0;;; -76960;1;0;false;false;;;;;; -76961;1;0;false;false;0;0;0;;; -76962;1;0;false;false;;;;;; -76963;7;0;false;false;0;0;0;;; -76970;1;0;false;false;;;;;; -76971;1;0;false;false;0;0;0;;; -76972;4;0;false;false;;;;;; -76976;2;1;false;false;127;0;85;;; -76978;1;0;false;false;;;;;; -76979;8;0;false;false;0;0;0;;; -76987;1;0;false;false;;;;;; -76988;2;0;false;false;0;0;0;;; -76990;1;0;false;false;;;;;; -76991;3;0;false;false;0;0;0;;; -76994;1;0;false;false;;;;;; -76995;1;0;false;false;0;0;0;;; -76996;5;0;false;false;;;;;; -77001;7;0;false;false;0;0;0;;; -77008;1;0;false;false;;;;;; -77009;1;0;false;false;0;0;0;;; -77010;1;0;false;false;;;;;; -77011;20;0;false;false;0;0;0;;; -77031;1;0;false;false;;;;;; -77032;3;0;false;false;0;0;0;;; -77035;4;0;false;false;;;;;; -77039;1;0;false;false;0;0;0;;; -77040;4;0;false;false;;;;;; -77044;2;1;false;false;127;0;85;;; -77046;1;0;false;false;;;;;; -77047;8;0;false;false;0;0;0;;; -77055;1;0;false;false;;;;;; -77056;2;0;false;false;0;0;0;;; -77058;1;0;false;false;;;;;; -77059;3;0;false;false;0;0;0;;; -77062;1;0;false;false;;;;;; -77063;1;0;false;false;0;0;0;;; -77064;5;0;false;false;;;;;; -77069;7;0;false;false;0;0;0;;; -77076;1;0;false;false;;;;;; -77077;1;0;false;false;0;0;0;;; -77078;1;0;false;false;;;;;; -77079;20;0;false;false;0;0;0;;; -77099;1;0;false;false;;;;;; -77100;3;0;false;false;0;0;0;;; -77103;4;0;false;false;;;;;; -77107;1;0;false;false;0;0;0;;; -77108;4;0;false;false;;;;;; -77112;2;1;false;false;127;0;85;;; -77114;1;0;false;false;;;;;; -77115;8;0;false;false;0;0;0;;; -77123;1;0;false;false;;;;;; -77124;2;0;false;false;0;0;0;;; -77126;1;0;false;false;;;;;; -77127;2;0;false;false;0;0;0;;; -77129;1;0;false;false;;;;;; -77130;2;0;false;false;0;0;0;;; -77132;1;0;false;false;;;;;; -77133;7;0;false;false;0;0;0;;; -77140;1;0;false;false;;;;;; -77141;2;0;false;false;0;0;0;;; -77143;1;0;false;false;;;;;; -77144;3;0;false;false;0;0;0;;; -77147;1;0;false;false;;;;;; -77148;1;0;false;false;0;0;0;;; -77149;1;0;false;false;;;;;; -77150;25;0;false;false;63;127;95;;; -77175;3;0;false;false;;;;;; -77178;5;1;false;false;127;0;85;;; -77183;1;0;false;false;0;0;0;;; -77184;4;0;false;false;;;;;; -77188;1;0;false;false;0;0;0;;; -77189;4;0;false;false;;;;;; -77193;4;1;false;false;127;0;85;;; -77197;9;0;false;false;;;;;; -77206;42;0;false;false;63;127;95;;; -77248;2;0;false;false;;;;;; -77250;2;1;false;false;127;0;85;;; -77252;1;0;false;false;;;;;; -77253;9;0;false;false;0;0;0;;; -77262;1;0;false;false;;;;;; -77263;1;0;false;false;0;0;0;;; -77264;1;0;false;false;;;;;; -77265;7;0;false;false;0;0;0;;; -77272;1;0;false;false;;;;;; -77273;2;0;false;false;0;0;0;;; -77275;1;0;false;false;;;;;; -77276;7;0;false;false;0;0;0;;; -77283;1;0;false;false;;;;;; -77284;2;0;false;false;0;0;0;;; -77286;1;0;false;false;;;;;; -77287;3;0;false;false;0;0;0;;; -77290;1;0;false;false;;;;;; -77291;2;0;false;false;0;0;0;;; -77293;1;0;false;false;;;;;; -77294;7;0;false;false;0;0;0;;; -77301;1;0;false;false;;;;;; -77302;2;0;false;false;0;0;0;;; -77304;1;0;false;false;;;;;; -77305;3;0;false;false;0;0;0;;; -77308;1;0;false;false;;;;;; -77309;1;0;false;false;0;0;0;;; -77310;6;0;false;false;;;;;; -77316;38;0;false;false;0;0;0;;; -77354;1;0;false;false;;;;;; -77355;10;0;false;false;0;0;0;;; -77365;5;0;false;false;;;;;; -77370;2;1;false;false;127;0;85;;; -77372;1;0;false;false;;;;;; -77373;8;0;false;false;0;0;0;;; -77381;1;0;false;false;;;;;; -77382;2;0;false;false;0;0;0;;; -77384;1;0;false;false;;;;;; -77385;7;0;false;false;0;0;0;;; -77392;1;0;false;false;;;;;; -77393;1;0;false;false;0;0;0;;; -77394;1;0;false;false;;;;;; -77395;2;0;false;false;0;0;0;;; -77397;1;0;false;false;;;;;; -77398;1;0;false;false;0;0;0;;; -77399;2;0;false;false;;;;;; -77401;23;0;false;false;63;127;95;;; -77424;4;0;false;false;;;;;; -77428;1;0;false;false;0;0;0;;; -77429;1;0;false;false;;;;;; -77430;1;0;false;false;0;0;0;;; -77431;1;0;false;false;;;;;; -77432;7;0;false;false;0;0;0;;; -77439;1;0;false;false;;;;;; -77440;1;0;false;false;0;0;0;;; -77441;1;0;false;false;;;;;; -77442;2;0;false;false;0;0;0;;; -77444;5;0;false;false;;;;;; -77449;1;0;false;false;0;0;0;;; -77450;5;0;false;false;;;;;; -77455;4;1;false;false;127;0;85;;; -77459;1;0;false;false;;;;;; -77460;1;0;false;false;0;0;0;;; -77461;6;0;false;false;;;;;; -77467;1;0;false;false;0;0;0;;; -77468;1;0;false;false;;;;;; -77469;1;0;false;false;0;0;0;;; -77470;1;0;false;false;;;;;; -77471;7;0;false;false;0;0;0;;; -77478;1;0;false;false;;;;;; -77479;1;0;false;false;0;0;0;;; -77480;1;0;false;false;;;;;; -77481;2;0;false;false;0;0;0;;; -77483;5;0;false;false;;;;;; -77488;1;0;false;false;0;0;0;;; -77489;4;0;false;false;;;;;; -77493;1;0;false;false;0;0;0;;; -77494;4;0;false;false;;;;;; -77498;4;1;false;false;127;0;85;;; -77502;1;0;false;false;;;;;; -77503;1;0;false;false;0;0;0;;; -77504;9;0;false;false;;;;;; -77513;25;0;false;false;63;127;95;;; -77538;3;0;false;false;;;;;; -77541;38;0;false;false;0;0;0;;; -77579;1;0;false;false;;;;;; -77580;10;0;false;false;0;0;0;;; -77590;5;0;false;false;;;;;; -77595;1;0;false;false;0;0;0;;; -77596;1;0;false;false;;;;;; -77597;1;0;false;false;0;0;0;;; -77598;1;0;false;false;;;;;; -77599;7;0;false;false;0;0;0;;; -77606;1;0;false;false;;;;;; -77607;1;0;false;false;0;0;0;;; -77608;1;0;false;false;;;;;; -77609;2;0;false;false;0;0;0;;; -77611;4;0;false;false;;;;;; -77615;1;0;false;false;0;0;0;;; -77616;4;0;false;false;;;;;; -77620;2;1;false;false;127;0;85;;; -77622;1;0;false;false;;;;;; -77623;16;0;false;false;0;0;0;;; -77639;1;0;false;false;;;;;; -77640;1;0;false;false;0;0;0;;; -77641;5;0;false;false;;;;;; -77646;5;1;false;false;127;0;85;;; -77651;1;0;false;false;0;0;0;;; -77652;4;0;false;false;;;;;; -77656;1;0;false;false;0;0;0;;; -77657;4;0;false;false;;;;;; -77661;32;0;false;false;0;0;0;;; -77693;3;0;false;false;;;;;; -77696;1;0;false;false;0;0;0;;; -77697;3;0;false;false;;;;;; -77700;69;0;false;false;63;127;95;;; -77769;1;0;false;false;;;;;; -77770;58;0;false;false;63;127;95;;; -77828;1;0;false;false;;;;;; -77829;2;1;false;false;127;0;85;;; -77831;1;0;false;false;;;;;; -77832;2;0;false;false;0;0;0;;; -77834;1;0;false;false;;;;;; -77835;1;0;false;false;0;0;0;;; -77836;1;0;false;false;;;;;; -77837;6;0;false;false;0;0;0;;; -77843;1;0;false;false;;;;;; -77844;2;0;false;false;0;0;0;;; -77846;1;0;false;false;;;;;; -77847;16;0;false;false;0;0;0;;; -77863;1;0;false;false;;;;;; -77864;2;0;false;false;0;0;0;;; -77866;1;0;false;false;;;;;; -77867;22;0;false;false;0;0;0;;; -77889;1;0;false;false;;;;;; -77890;2;0;false;false;0;0;0;;; -77892;1;0;false;false;;;;;; -77893;3;0;false;false;0;0;0;;; -77896;1;0;false;false;;;;;; -77897;1;0;false;false;0;0;0;;; -77898;4;0;false;false;;;;;; -77902;40;0;false;false;0;0;0;;; -77942;3;0;false;false;;;;;; -77945;1;0;false;false;0;0;0;;; -77946;3;0;false;false;;;;;; -77949;6;1;false;false;127;0;85;;; -77955;1;0;false;false;;;;;; -77956;25;0;false;false;0;0;0;;; -77981;2;0;false;false;;;;;; -77983;1;0;false;false;0;0;0;;; -77984;2;0;false;false;;;;;; -77986;3;0;false;false;63;95;191;;; -77989;3;0;false;false;;;;;; -77992;1;0;false;false;63;95;191;;; -77993;1;0;false;false;;;;;; -77994;7;0;false;false;63;95;191;;; -78001;1;0;false;false;;;;;; -78002;7;0;false;false;63;95;191;;; -78009;1;0;false;false;;;;;; -78010;3;0;false;false;63;95;191;;; -78013;1;0;false;false;;;;;; -78014;9;0;false;false;63;95;191;;; -78023;3;0;false;false;;;;;; -78026;2;0;false;false;63;95;191;;; -78028;2;0;false;false;;;;;; -78030;4;1;false;false;127;0;85;;; -78034;1;0;false;false;;;;;; -78035;19;0;false;false;0;0;0;;; -78054;1;0;false;false;;;;;; -78055;1;0;false;false;0;0;0;;; -78056;3;0;false;false;;;;;; -78059;3;1;false;false;127;0;85;;; -78062;1;0;false;false;;;;;; -78063;7;0;false;false;0;0;0;;; -78070;1;0;false;false;;;;;; -78071;1;0;false;false;0;0;0;;; -78072;1;0;false;false;;;;;; -78073;12;0;false;false;0;0;0;;; -78085;1;0;false;false;;;;;; -78086;1;0;false;false;0;0;0;;; -78087;1;0;false;false;;;;;; -78088;14;0;false;false;0;0;0;;; -78102;1;0;false;false;;;;;; -78103;1;0;false;false;0;0;0;;; -78104;1;0;false;false;;;;;; -78105;16;0;false;false;0;0;0;;; -78121;3;0;false;false;;;;;; -78124;3;1;false;false;127;0;85;;; -78127;1;0;false;false;;;;;; -78128;11;0;false;false;0;0;0;;; -78139;1;0;false;false;;;;;; -78140;1;0;false;false;0;0;0;;; -78141;1;0;false;false;;;;;; -78142;12;0;false;false;0;0;0;;; -78154;1;0;false;false;;;;;; -78155;1;0;false;false;0;0;0;;; -78156;1;0;false;false;;;;;; -78157;15;0;false;false;0;0;0;;; -78172;1;0;false;false;;;;;; -78173;1;0;false;false;0;0;0;;; -78174;1;0;false;false;;;;;; -78175;15;0;false;false;0;0;0;;; -78190;6;0;false;false;;;;;; -78196;15;0;false;false;63;127;95;;; -78211;1;0;false;false;;;;;; -78212;27;0;false;false;0;0;0;;; -78239;1;0;false;false;;;;;; -78240;12;0;false;false;0;0;0;;; -78252;4;0;false;false;;;;;; -78256;29;0;false;false;0;0;0;;; -78285;1;0;false;false;;;;;; -78286;14;0;false;false;0;0;0;;; -78300;3;0;false;false;;;;;; -78303;23;0;false;false;0;0;0;;; -78326;1;0;false;false;;;;;; -78327;15;0;false;false;0;0;0;;; -78342;3;0;false;false;;;;;; -78345;22;0;false;false;0;0;0;;; -78367;1;0;false;false;;;;;; -78368;13;0;false;false;0;0;0;;; -78381;3;0;false;false;;;;;; -78384;26;0;false;false;0;0;0;;; -78410;1;0;false;false;;;;;; -78411;12;0;false;false;0;0;0;;; -78423;3;0;false;false;;;;;; -78426;28;0;false;false;0;0;0;;; -78454;1;0;false;false;;;;;; -78455;14;0;false;false;0;0;0;;; -78469;3;0;false;false;;;;;; -78472;22;0;false;false;0;0;0;;; -78494;1;0;false;false;;;;;; -78495;1;0;false;false;0;0;0;;; -78496;1;0;false;false;;;;;; -78497;9;0;false;false;0;0;0;;; -78506;1;0;false;false;;;;;; -78507;15;0;false;false;0;0;0;;; -78522;3;0;false;false;;;;;; -78525;21;0;false;false;0;0;0;;; -78546;1;0;false;false;;;;;; -78547;1;0;false;false;0;0;0;;; -78548;1;0;false;false;;;;;; -78549;9;0;false;false;0;0;0;;; -78558;1;0;false;false;;;;;; -78559;13;0;false;false;0;0;0;;; -78572;3;0;false;false;;;;;; -78575;25;0;false;false;0;0;0;;; -78600;1;0;false;false;;;;;; -78601;1;0;false;false;0;0;0;;; -78602;1;0;false;false;;;;;; -78603;9;0;false;false;0;0;0;;; -78612;1;0;false;false;;;;;; -78613;17;0;false;false;0;0;0;;; -78630;3;0;false;false;;;;;; -78633;27;0;false;false;0;0;0;;; -78660;1;0;false;false;;;;;; -78661;1;0;false;false;0;0;0;;; -78662;1;0;false;false;;;;;; -78663;9;0;false;false;0;0;0;;; -78672;1;0;false;false;;;;;; -78673;15;0;false;false;0;0;0;;; -78688;3;0;false;false;;;;;; -78691;22;0;false;false;0;0;0;;; -78713;1;0;false;false;;;;;; -78714;16;0;false;false;0;0;0;;; -78730;3;0;false;false;;;;;; -78733;26;0;false;false;0;0;0;;; -78759;1;0;false;false;;;;;; -78760;20;0;false;false;0;0;0;;; -78780;3;0;false;false;;;;;; -78783;21;0;false;false;0;0;0;;; -78804;1;0;false;false;;;;;; -78805;1;0;false;false;0;0;0;;; -78806;1;0;false;false;;;;;; -78807;9;0;false;false;0;0;0;;; -78816;1;0;false;false;;;;;; -78817;14;0;false;false;0;0;0;;; -78831;3;0;false;false;;;;;; -78834;25;0;false;false;0;0;0;;; -78859;1;0;false;false;;;;;; -78860;1;0;false;false;0;0;0;;; -78861;1;0;false;false;;;;;; -78862;9;0;false;false;0;0;0;;; -78871;1;0;false;false;;;;;; -78872;18;0;false;false;0;0;0;;; -78890;6;0;false;false;;;;;; -78896;14;0;false;false;63;127;95;;; -78910;1;0;false;false;;;;;; -78911;26;0;false;false;0;0;0;;; -78937;1;0;false;false;;;;;; -78938;1;0;false;false;0;0;0;;; -78939;1;0;false;false;;;;;; -78940;9;0;false;false;0;0;0;;; -78949;1;0;false;false;;;;;; -78950;19;0;false;false;0;0;0;;; -78969;4;0;false;false;;;;;; -78973;28;0;false;false;0;0;0;;; -79001;1;0;false;false;;;;;; -79002;1;0;false;false;0;0;0;;; -79003;1;0;false;false;;;;;; -79004;9;0;false;false;0;0;0;;; -79013;1;0;false;false;;;;;; -79014;21;0;false;false;0;0;0;;; -79035;3;0;false;false;;;;;; -79038;22;0;false;false;0;0;0;;; -79060;1;0;false;false;;;;;; -79061;1;0;false;false;0;0;0;;; -79062;1;0;false;false;;;;;; -79063;9;0;false;false;0;0;0;;; -79072;1;0;false;false;;;;;; -79073;22;0;false;false;0;0;0;;; -79095;3;0;false;false;;;;;; -79098;21;0;false;false;0;0;0;;; -79119;1;0;false;false;;;;;; -79120;1;0;false;false;0;0;0;;; -79121;1;0;false;false;;;;;; -79122;9;0;false;false;0;0;0;;; -79131;1;0;false;false;;;;;; -79132;20;0;false;false;0;0;0;;; -79152;3;0;false;false;;;;;; -79155;25;0;false;false;0;0;0;;; -79180;1;0;false;false;;;;;; -79181;1;0;false;false;0;0;0;;; -79182;1;0;false;false;;;;;; -79183;9;0;false;false;0;0;0;;; -79192;1;0;false;false;;;;;; -79193;19;0;false;false;0;0;0;;; -79212;3;0;false;false;;;;;; -79215;27;0;false;false;0;0;0;;; -79242;1;0;false;false;;;;;; -79243;1;0;false;false;0;0;0;;; -79244;1;0;false;false;;;;;; -79245;9;0;false;false;0;0;0;;; -79254;1;0;false;false;;;;;; -79255;21;0;false;false;0;0;0;;; -79276;3;0;false;false;;;;;; -79279;22;0;false;false;0;0;0;;; -79301;1;0;false;false;;;;;; -79302;1;0;false;false;0;0;0;;; -79303;1;0;false;false;;;;;; -79304;8;0;false;false;0;0;0;;; -79312;1;0;false;false;;;;;; -79313;1;0;false;false;0;0;0;;; -79314;1;0;false;false;;;;;; -79315;9;0;false;false;0;0;0;;; -79324;1;0;false;false;;;;;; -79325;22;0;false;false;0;0;0;;; -79347;4;0;false;false;;;;;; -79351;21;0;false;false;0;0;0;;; -79372;1;0;false;false;;;;;; -79373;1;0;false;false;0;0;0;;; -79374;1;0;false;false;;;;;; -79375;8;0;false;false;0;0;0;;; -79383;1;0;false;false;;;;;; -79384;1;0;false;false;0;0;0;;; -79385;1;0;false;false;;;;;; -79386;9;0;false;false;0;0;0;;; -79395;1;0;false;false;;;;;; -79396;20;0;false;false;0;0;0;;; -79416;3;0;false;false;;;;;; -79419;25;0;false;false;0;0;0;;; -79444;1;0;false;false;;;;;; -79445;1;0;false;false;0;0;0;;; -79446;1;0;false;false;;;;;; -79447;8;0;false;false;0;0;0;;; -79455;1;0;false;false;;;;;; -79456;1;0;false;false;0;0;0;;; -79457;1;0;false;false;;;;;; -79458;9;0;false;false;0;0;0;;; -79467;1;0;false;false;;;;;; -79468;24;0;false;false;0;0;0;;; -79492;3;0;false;false;;;;;; -79495;27;0;false;false;0;0;0;;; -79522;1;0;false;false;;;;;; -79523;1;0;false;false;0;0;0;;; -79524;1;0;false;false;;;;;; -79525;8;0;false;false;0;0;0;;; -79533;1;0;false;false;;;;;; -79534;1;0;false;false;0;0;0;;; -79535;1;0;false;false;;;;;; -79536;9;0;false;false;0;0;0;;; -79545;1;0;false;false;;;;;; -79546;22;0;false;false;0;0;0;;; -79568;3;0;false;false;;;;;; -79571;21;0;false;false;0;0;0;;; -79592;1;0;false;false;;;;;; -79593;1;0;false;false;0;0;0;;; -79594;1;0;false;false;;;;;; -79595;9;0;false;false;0;0;0;;; -79604;1;0;false;false;;;;;; -79605;23;0;false;false;0;0;0;;; -79628;3;0;false;false;;;;;; -79631;25;0;false;false;0;0;0;;; -79656;1;0;false;false;;;;;; -79657;1;0;false;false;0;0;0;;; -79658;1;0;false;false;;;;;; -79659;9;0;false;false;0;0;0;;; -79668;1;0;false;false;;;;;; -79669;27;0;false;false;0;0;0;;; -79696;4;0;false;false;;;;;; -79700;21;0;false;false;0;0;0;;; -79721;1;0;false;false;;;;;; -79722;1;0;false;false;0;0;0;;; -79723;1;0;false;false;;;;;; -79724;8;0;false;false;0;0;0;;; -79732;1;0;false;false;;;;;; -79733;1;0;false;false;0;0;0;;; -79734;1;0;false;false;;;;;; -79735;9;0;false;false;0;0;0;;; -79744;1;0;false;false;;;;;; -79745;21;0;false;false;0;0;0;;; -79766;3;0;false;false;;;;;; -79769;25;0;false;false;0;0;0;;; -79794;1;0;false;false;;;;;; -79795;1;0;false;false;0;0;0;;; -79796;1;0;false;false;;;;;; -79797;8;0;false;false;0;0;0;;; -79805;1;0;false;false;;;;;; -79806;1;0;false;false;0;0;0;;; -79807;1;0;false;false;;;;;; -79808;9;0;false;false;0;0;0;;; -79817;1;0;false;false;;;;;; -79818;25;0;false;false;0;0;0;;; -79843;20;0;false;false;;;;;; -79863;17;0;false;false;63;127;95;;; -79880;1;0;false;false;;;;;; -79881;21;0;false;false;63;127;95;;; -79902;1;0;false;false;;;;;; -79903;14;0;false;false;0;0;0;;; -79917;3;0;false;false;42;0;255;;; -79920;1;0;false;false;;;;;; -79921;1;0;false;false;0;0;0;;; -79922;1;0;false;false;;;;;; -79923;9;0;false;false;0;0;0;;; -79932;1;0;false;false;;;;;; -79933;8;0;false;false;0;0;0;;; -79941;3;0;false;false;;;;;; -79944;14;0;false;false;0;0;0;;; -79958;3;0;false;false;42;0;255;;; -79961;1;0;false;false;;;;;; -79962;1;0;false;false;0;0;0;;; -79963;1;0;false;false;;;;;; -79964;9;0;false;false;0;0;0;;; -79973;1;0;false;false;;;;;; -79974;9;0;false;false;0;0;0;;; -79983;3;0;false;false;;;;;; -79986;14;0;false;false;0;0;0;;; -80000;3;0;false;false;42;0;255;;; -80003;1;0;false;false;;;;;; -80004;1;0;false;false;0;0;0;;; -80005;1;0;false;false;;;;;; -80006;9;0;false;false;0;0;0;;; -80015;1;0;false;false;;;;;; -80016;10;0;false;false;0;0;0;;; -80026;3;0;false;false;;;;;; -80029;36;0;false;false;63;127;95;;; -80065;1;0;false;false;;;;;; -80066;21;0;false;false;0;0;0;;; -80087;1;0;false;false;;;;;; -80088;1;0;false;false;0;0;0;;; -80089;1;0;false;false;;;;;; -80090;9;0;false;false;0;0;0;;; -80099;1;0;false;false;;;;;; -80100;8;0;false;false;0;0;0;;; -80108;3;0;false;false;;;;;; -80111;24;0;false;false;0;0;0;;; -80135;1;0;false;false;;;;;; -80136;1;0;false;false;0;0;0;;; -80137;1;0;false;false;;;;;; -80138;9;0;false;false;0;0;0;;; -80147;1;0;false;false;;;;;; -80148;9;0;false;false;0;0;0;;; -80157;3;0;false;false;;;;;; -80160;24;0;false;false;0;0;0;;; -80184;1;0;false;false;;;;;; -80185;1;0;false;false;0;0;0;;; -80186;1;0;false;false;;;;;; -80187;9;0;false;false;0;0;0;;; -80196;1;0;false;false;;;;;; -80197;10;0;false;false;0;0;0;;; -80207;3;0;false;false;;;;;; -80210;20;0;false;false;0;0;0;;; -80230;1;0;false;false;;;;;; -80231;1;0;false;false;0;0;0;;; -80232;1;0;false;false;;;;;; -80233;9;0;false;false;0;0;0;;; -80242;1;0;false;false;;;;;; -80243;20;0;false;false;0;0;0;;; -80263;6;0;false;false;;;;;; -80269;21;0;false;false;0;0;0;;; -80290;1;0;false;false;;;;;; -80291;20;0;false;false;0;0;0;;; -80311;3;0;false;false;;;;;; -80314;22;0;false;false;0;0;0;;; -80336;1;0;false;false;;;;;; -80337;16;0;false;false;0;0;0;;; -80353;3;0;false;false;;;;;; -80356;20;0;false;false;0;0;0;;; -80376;1;0;false;false;;;;;; -80377;1;0;false;false;0;0;0;;; -80378;1;0;false;false;;;;;; -80379;9;0;false;false;0;0;0;;; -80388;1;0;false;false;;;;;; -80389;25;0;false;false;0;0;0;;; -80414;3;0;false;false;;;;;; -80417;21;0;false;false;0;0;0;;; -80438;1;0;false;false;;;;;; -80439;1;0;false;false;0;0;0;;; -80440;1;0;false;false;;;;;; -80441;9;0;false;false;0;0;0;;; -80450;1;0;false;false;;;;;; -80451;21;0;false;false;0;0;0;;; -80472;6;0;false;false;;;;;; -80478;18;0;false;false;63;127;95;;; -80496;1;0;false;false;;;;;; -80497;25;0;false;false;0;0;0;;; -80522;1;0;false;false;;;;;; -80523;21;0;false;false;0;0;0;;; -80544;2;0;false;false;;;;;; -80546;1;0;false;false;0;0;0;;; -80547;2;0;false;false;;;;;; -80549;3;0;false;false;63;95;191;;; -80552;3;0;false;false;;;;;; -80555;1;0;false;false;63;95;191;;; -80556;1;0;false;false;;;;;; -80557;6;0;false;false;63;95;191;;; -80563;1;0;false;false;;;;;; -80564;3;0;false;false;63;95;191;;; -80567;1;0;false;false;;;;;; -80568;7;0;false;false;63;95;191;;; -80575;1;0;false;false;;;;;; -80576;2;0;false;false;63;95;191;;; -80578;1;0;false;false;;;;;; -80579;3;0;false;false;63;95;191;;; -80582;1;0;false;false;;;;;; -80583;3;0;false;false;63;95;191;;; -80586;1;0;false;false;;;;;; -80587;3;0;false;false;63;95;191;;; -80590;1;0;false;false;;;;;; -80591;5;0;false;false;63;95;191;;; -80596;1;0;false;false;;;;;; -80597;2;0;false;false;63;95;191;;; -80599;1;0;false;false;;;;;; -80600;4;0;false;false;63;95;191;;; -80604;1;0;false;false;;;;;; -80605;5;0;false;false;63;95;191;;; -80610;2;0;false;false;;;;;; -80612;4;0;false;false;63;95;191;;; -80616;3;0;false;false;;;;;; -80619;1;0;false;false;63;95;191;;; -80620;1;0;false;false;;;;;; -80621;6;0;false;false;63;95;191;;; -80627;1;0;false;false;;;;;; -80628;4;0;false;false;63;95;191;;; -80632;1;0;false;false;;;;;; -80633;5;0;false;false;63;95;191;;; -80638;1;0;false;false;;;;;; -80639;2;0;false;false;63;95;191;;; -80641;1;0;false;false;;;;;; -80642;2;0;false;false;63;95;191;;; -80644;1;0;false;false;;;;;; -80645;6;0;false;false;63;95;191;;; -80651;1;0;false;false;;;;;; -80652;4;0;false;false;63;95;191;;; -80656;1;0;false;false;;;;;; -80657;6;0;false;false;63;95;191;;; -80663;1;0;false;false;;;;;; -80664;8;0;false;false;63;95;191;;; -80672;1;0;false;false;;;;;; -80673;3;0;false;false;63;95;191;;; -80676;1;0;false;false;;;;;; -80677;4;0;false;false;63;95;191;;; -80681;1;0;false;false;;;;;; -80682;3;0;false;false;63;95;191;;; -80685;3;0;false;false;;;;;; -80688;1;0;false;false;63;95;191;;; -80689;1;0;false;false;;;;;; -80690;4;0;false;false;63;95;191;;; -80694;1;0;false;false;;;;;; -80695;7;0;false;false;63;95;191;;; -80702;1;0;false;false;;;;;; -80703;4;0;false;false;63;95;191;;; -80707;1;0;false;false;;;;;; -80708;5;0;false;false;63;95;191;;; -80713;1;0;false;false;;;;;; -80714;6;0;false;false;63;95;191;;; -80720;1;0;false;false;;;;;; -80721;6;0;false;false;63;95;191;;; -80727;1;0;false;false;;;;;; -80728;5;0;false;false;63;95;191;;; -80733;1;0;false;false;;;;;; -80734;2;0;false;false;63;95;191;;; -80736;1;0;false;false;;;;;; -80737;5;0;false;false;63;95;191;;; -80742;1;0;false;false;;;;;; -80743;4;0;false;false;63;95;191;;; -80747;1;0;false;false;;;;;; -80748;8;0;false;false;63;95;191;;; -80756;3;0;false;false;;;;;; -80759;2;0;false;false;63;95;191;;; -80761;2;0;false;false;;;;;; -80763;4;1;false;false;127;0;85;;; -80767;1;0;false;false;;;;;; -80768;20;0;false;false;0;0;0;;; -80788;1;0;false;false;;;;;; -80789;1;0;false;false;0;0;0;;; -80790;3;0;false;false;;;;;; -80793;3;1;false;false;127;0;85;;; -80796;1;0;false;false;;;;;; -80797;10;0;false;false;0;0;0;;; -80807;1;0;false;false;;;;;; -80808;1;0;false;false;0;0;0;;; -80809;1;0;false;false;;;;;; -80810;17;0;false;false;0;0;0;;; -80827;3;0;false;false;;;;;; -80830;7;0;false;false;0;0;0;;; -80837;1;0;false;false;;;;;; -80838;7;0;false;false;0;0;0;;; -80845;1;0;false;false;;;;;; -80846;1;0;false;false;0;0;0;;; -80847;1;0;false;false;;;;;; -80848;13;0;false;false;0;0;0;;; -80861;3;0;false;false;;;;;; -80864;2;1;false;false;127;0;85;;; -80866;1;0;false;false;;;;;; -80867;16;0;false;false;0;0;0;;; -80883;1;0;false;false;;;;;; -80884;2;0;false;false;0;0;0;;; -80886;1;0;false;false;;;;;; -80887;4;1;false;false;127;0;85;;; -80891;1;0;false;false;0;0;0;;; -80892;1;0;false;false;;;;;; -80893;1;0;false;false;0;0;0;;; -80894;4;0;false;false;;;;;; -80898;2;1;false;false;127;0;85;;; -80900;1;0;false;false;;;;;; -80901;13;0;false;false;0;0;0;;; -80914;1;0;false;false;;;;;; -80915;2;0;false;false;0;0;0;;; -80917;1;0;false;false;;;;;; -80918;4;1;false;false;127;0;85;;; -80922;1;0;false;false;;;;;; -80923;2;0;false;false;0;0;0;;; -80925;1;0;false;false;;;;;; -80926;48;0;false;false;0;0;0;;; -80974;1;0;false;false;;;;;; -80975;1;0;false;false;0;0;0;;; -80976;5;0;false;false;;;;;; -80981;22;0;false;false;0;0;0;;; -81003;4;1;false;false;127;0;85;;; -81007;2;0;false;false;0;0;0;;; -81009;4;0;false;false;;;;;; -81013;1;0;false;false;0;0;0;;; -81014;4;0;false;false;;;;;; -81018;26;0;false;false;0;0;0;;; -81044;3;0;false;false;;;;;; -81047;1;0;false;false;0;0;0;;; -81048;3;0;false;false;;;;;; -81051;15;0;false;false;0;0;0;;; -81066;1;0;false;false;;;;;; -81067;1;0;false;false;0;0;0;;; -81068;1;0;false;false;;;;;; -81069;3;1;false;false;127;0;85;;; -81072;1;0;false;false;;;;;; -81073;14;0;false;false;0;0;0;;; -81087;1;0;false;false;;;;;; -81088;11;0;false;false;0;0;0;;; -81099;1;0;false;false;;;;;; -81100;12;0;false;false;0;0;0;;; -81112;3;0;false;false;;;;;; -81115;2;0;false;false;0;0;0;;; -81117;1;0;false;false;;;;;; -81118;2;0;false;false;0;0;0;;; -81120;1;0;false;false;;;;;; -81121;1;0;false;false;0;0;0;;; -81122;1;0;false;false;;;;;; -81123;3;1;false;false;127;0;85;;; -81126;1;0;false;false;;;;;; -81127;2;0;false;false;0;0;0;;; -81129;1;0;false;false;;;;;; -81130;18;0;false;false;0;0;0;;; -81148;4;0;false;false;;;;;; -81152;58;0;false;false;0;0;0;;; -81210;3;0;false;false;;;;;; -81213;19;0;false;false;0;0;0;;; -81232;1;0;false;false;;;;;; -81233;2;0;false;false;0;0;0;;; -81235;1;0;false;false;;;;;; -81236;11;0;false;false;0;0;0;;; -81247;1;0;false;false;;;;;; -81248;12;0;false;false;0;0;0;;; -81260;3;0;false;false;;;;;; -81263;58;0;false;false;0;0;0;;; -81321;3;0;false;false;;;;;; -81324;30;0;false;false;0;0;0;;; -81354;3;0;false;false;;;;;; -81357;32;0;false;false;0;0;0;;; -81389;3;0;false;false;;;;;; -81392;21;0;false;false;0;0;0;;; -81413;3;0;false;false;;;;;; -81416;13;0;false;false;0;0;0;;; -81429;7;0;false;false;;;;;; -81436;2;1;false;false;127;0;85;;; -81438;1;0;false;false;;;;;; -81439;17;0;false;false;0;0;0;;; -81456;1;0;false;false;;;;;; -81457;2;0;false;false;0;0;0;;; -81459;1;0;false;false;;;;;; -81460;4;1;false;false;127;0;85;;; -81464;1;0;false;false;0;0;0;;; -81465;1;0;false;false;;;;;; -81466;1;0;false;false;0;0;0;;; -81467;4;0;false;false;;;;;; -81471;2;1;false;false;127;0;85;;; -81473;1;0;false;false;;;;;; -81474;13;0;false;false;0;0;0;;; -81487;1;0;false;false;;;;;; -81488;2;0;false;false;0;0;0;;; -81490;1;0;false;false;;;;;; -81491;4;1;false;false;127;0;85;;; -81495;1;0;false;false;;;;;; -81496;2;0;false;false;0;0;0;;; -81498;1;0;false;false;;;;;; -81499;49;0;false;false;0;0;0;;; -81548;1;0;false;false;;;;;; -81549;1;0;false;false;0;0;0;;; -81550;5;0;false;false;;;;;; -81555;22;0;false;false;0;0;0;;; -81577;4;1;false;false;127;0;85;;; -81581;2;0;false;false;0;0;0;;; -81583;4;0;false;false;;;;;; -81587;1;0;false;false;0;0;0;;; -81588;4;0;false;false;;;;;; -81592;27;0;false;false;0;0;0;;; -81619;3;0;false;false;;;;;; -81622;1;0;false;false;0;0;0;;; -81623;3;0;false;false;;;;;; -81626;16;0;false;false;0;0;0;;; -81642;1;0;false;false;;;;;; -81643;1;0;false;false;0;0;0;;; -81644;1;0;false;false;;;;;; -81645;3;1;false;false;127;0;85;;; -81648;1;0;false;false;;;;;; -81649;14;0;false;false;0;0;0;;; -81663;1;0;false;false;;;;;; -81664;11;0;false;false;0;0;0;;; -81675;1;0;false;false;;;;;; -81676;12;0;false;false;0;0;0;;; -81688;3;0;false;false;;;;;; -81691;2;0;false;false;0;0;0;;; -81693;1;0;false;false;;;;;; -81694;1;0;false;false;0;0;0;;; -81695;1;0;false;false;;;;;; -81696;3;1;false;false;127;0;85;;; -81699;1;0;false;false;;;;;; -81700;2;0;false;false;0;0;0;;; -81702;1;0;false;false;;;;;; -81703;19;0;false;false;0;0;0;;; -81722;4;0;false;false;;;;;; -81726;58;0;false;false;0;0;0;;; -81784;3;0;false;false;;;;;; -81787;19;0;false;false;0;0;0;;; -81806;1;0;false;false;;;;;; -81807;2;0;false;false;0;0;0;;; -81809;1;0;false;false;;;;;; -81810;11;0;false;false;0;0;0;;; -81821;1;0;false;false;;;;;; -81822;12;0;false;false;0;0;0;;; -81834;3;0;false;false;;;;;; -81837;58;0;false;false;0;0;0;;; -81895;3;0;false;false;;;;;; -81898;52;0;false;false;0;0;0;;; -81950;3;0;false;false;;;;;; -81953;32;0;false;false;0;0;0;;; -81985;3;0;false;false;;;;;; -81988;32;0;false;false;0;0;0;;; -82020;3;0;false;false;;;;;; -82023;13;0;false;false;0;0;0;;; -82036;2;0;false;false;;;;;; -82038;1;0;false;false;0;0;0;;; -82039;2;0;false;false;;;;;; -82041;3;0;false;false;63;95;191;;; -82044;3;0;false;false;;;;;; -82047;1;0;false;false;63;95;191;;; -82048;1;0;false;false;;;;;; -82049;5;0;false;false;63;95;191;;; -82054;1;0;false;false;;;;;; -82055;3;0;false;false;63;95;191;;; -82058;1;0;false;false;;;;;; -82059;8;0;false;false;63;95;191;;; -82067;1;0;false;false;;;;;; -82068;4;0;false;false;63;95;191;;; -82072;1;0;false;false;;;;;; -82073;2;0;false;false;63;95;191;;; -82075;1;0;false;false;;;;;; -82076;3;0;false;false;63;95;191;;; -82079;1;0;false;false;;;;;; -82080;10;0;false;false;63;95;191;;; -82090;2;0;false;false;;;;;; -82092;3;0;false;false;63;95;191;;; -82095;1;0;false;false;;;;;; -82096;4;0;false;false;63;95;191;;; -82100;1;0;false;false;;;;;; -82101;4;0;false;false;63;95;191;;; -82105;1;0;false;false;;;;;; -82106;2;0;false;false;63;95;191;;; -82108;1;0;false;false;;;;;; -82109;3;0;false;false;63;95;191;;; -82112;1;0;false;false;;;;;; -82113;2;0;false;false;63;95;191;;; -82115;1;0;false;false;;;;;; -82116;3;0;false;false;63;95;191;;; -82119;4;0;false;false;;;;;; -82123;1;0;false;false;63;95;191;;; -82124;1;0;false;false;;;;;; -82125;9;0;false;false;63;95;191;;; -82134;1;0;false;false;;;;;; -82135;2;0;false;false;63;95;191;;; -82137;1;0;false;false;;;;;; -82138;5;0;false;false;63;95;191;;; -82143;1;0;false;false;;;;;; -82144;4;0;false;false;63;95;191;;; -82148;1;0;false;false;;;;;; -82149;6;0;false;false;63;95;191;;; -82155;1;0;false;false;;;;;; -82156;3;0;false;false;63;95;191;;; -82159;1;0;false;false;;;;;; -82160;3;0;false;false;63;95;191;;; -82163;1;0;false;false;;;;;; -82164;7;0;false;false;63;95;191;;; -82171;3;0;false;false;;;;;; -82174;1;0;false;false;63;95;191;;; -82175;1;0;false;false;;;;;; -82176;3;0;false;false;127;127;159;;; -82179;3;0;false;false;;;;;; -82182;1;0;false;false;63;95;191;;; -82183;3;0;false;false;;;;;; -82186;1;0;false;false;63;95;191;;; -82187;1;0;false;false;;;;;; -82188;11;1;false;false;127;159;191;;; -82199;12;0;false;false;63;95;191;;; -82211;1;0;false;false;;;;;; -82212;4;0;false;false;127;127;159;;; -82216;3;0;false;false;;;;;; -82219;1;0;false;false;63;95;191;;; -82220;4;0;false;false;;;;;; -82224;4;0;false;false;127;127;159;;; -82228;21;0;false;false;63;95;191;;; -82249;1;0;false;false;;;;;; -82250;1;0;false;false;127;127;159;;; -82251;1;0;false;false;;;;;; -82252;2;0;false;false;63;95;191;;; -82254;1;0;false;false;;;;;; -82255;3;0;false;false;63;95;191;;; -82258;1;0;false;false;;;;;; -82259;8;0;false;false;63;95;191;;; -82267;1;0;false;false;;;;;; -82268;3;0;false;false;63;95;191;;; -82271;1;0;false;false;;;;;; -82272;4;0;false;false;63;95;191;;; -82276;1;0;false;false;;;;;; -82277;8;0;false;false;63;95;191;;; -82285;5;0;false;false;127;127;159;;; -82290;3;0;false;false;;;;;; -82293;1;0;false;false;63;95;191;;; -82294;4;0;false;false;;;;;; -82298;4;0;false;false;127;127;159;;; -82302;27;0;false;false;63;95;191;;; -82329;1;0;false;false;;;;;; -82330;1;0;false;false;127;127;159;;; -82331;1;0;false;false;;;;;; -82332;2;0;false;false;63;95;191;;; -82334;1;0;false;false;;;;;; -82335;3;0;false;false;63;95;191;;; -82338;1;0;false;false;;;;;; -82339;6;0;false;false;63;95;191;;; -82345;1;0;false;false;;;;;; -82346;4;0;false;false;63;95;191;;; -82350;1;0;false;false;;;;;; -82351;3;0;false;false;63;95;191;;; -82354;1;0;false;false;;;;;; -82355;6;0;false;false;63;95;191;;; -82361;1;0;false;false;;;;;; -82362;4;0;false;false;63;95;191;;; -82366;1;0;false;false;;;;;; -82367;7;0;false;false;63;95;191;;; -82374;1;0;false;false;;;;;; -82375;3;0;false;false;63;95;191;;; -82378;1;0;false;false;;;;;; -82379;8;0;false;false;63;95;191;;; -82387;5;0;false;false;127;127;159;;; -82392;3;0;false;false;;;;;; -82395;1;0;false;false;63;95;191;;; -82396;1;0;false;false;;;;;; -82397;5;0;false;false;127;127;159;;; -82402;3;0;false;false;;;;;; -82405;2;0;false;false;63;95;191;;; -82407;2;0;false;false;;;;;; -82409;6;1;false;false;127;0;85;;; -82415;1;0;false;false;;;;;; -82416;4;1;false;false;127;0;85;;; -82420;1;0;false;false;;;;;; -82421;6;0;false;false;0;0;0;;; -82427;3;0;false;false;;;;;; -82430;14;0;false;false;0;0;0;;; -82444;3;0;false;false;;;;;; -82447;3;1;false;false;127;0;85;;; -82450;1;0;false;false;;;;;; -82451;6;0;false;false;0;0;0;;; -82457;1;0;false;false;;;;;; -82458;1;0;false;false;0;0;0;;; -82459;1;0;false;false;;;;;; -82460;11;0;false;false;0;0;0;;; -82471;1;0;false;false;;;;;; -82472;1;0;false;false;0;0;0;;; -82473;1;0;false;false;;;;;; -82474;12;0;false;false;0;0;0;;; -82486;6;0;false;false;;;;;; -82492;2;1;false;false;127;0;85;;; -82494;1;0;false;false;;;;;; -82495;7;0;false;false;0;0;0;;; -82502;1;0;false;false;;;;;; -82503;1;0;false;false;0;0;0;;; -82504;1;0;false;false;;;;;; -82505;2;0;false;false;0;0;0;;; -82507;1;0;false;false;;;;;; -82508;1;0;false;false;0;0;0;;; -82509;4;0;false;false;;;;;; -82513;3;1;false;false;127;0;85;;; -82516;1;0;false;false;;;;;; -82517;1;0;false;false;0;0;0;;; -82518;5;0;false;false;;;;;; -82523;32;0;false;false;0;0;0;;; -82555;1;0;false;false;;;;;; -82556;7;0;false;false;0;0;0;;; -82563;1;0;false;false;;;;;; -82564;15;0;false;false;0;0;0;;; -82579;4;0;false;false;;;;;; -82583;1;0;false;false;0;0;0;;; -82584;4;0;false;false;;;;;; -82588;5;1;false;false;127;0;85;;; -82593;1;0;false;false;;;;;; -82594;9;0;false;false;0;0;0;;; -82603;1;0;false;false;;;;;; -82604;6;0;false;false;0;0;0;;; -82610;1;0;false;false;;;;;; -82611;1;0;false;false;0;0;0;;; -82612;5;0;false;false;;;;;; -82617;69;0;false;false;63;127;95;;; -82686;3;0;false;false;;;;;; -82689;64;0;false;false;63;127;95;;; -82753;3;0;false;false;;;;;; -82756;18;0;false;false;63;127;95;;; -82774;3;0;false;false;;;;;; -82777;47;0;false;false;63;127;95;;; -82824;3;0;false;false;;;;;; -82827;2;1;false;false;127;0;85;;; -82829;1;0;false;false;;;;;; -82830;11;0;false;false;0;0;0;;; -82841;1;0;false;false;;;;;; -82842;2;0;false;false;0;0;0;;; -82844;1;0;false;false;;;;;; -82845;31;0;false;false;0;0;0;;; -82876;1;0;false;false;;;;;; -82877;1;0;false;false;0;0;0;;; -82878;6;0;false;false;;;;;; -82884;5;1;false;false;127;0;85;;; -82889;1;0;false;false;;;;;; -82890;6;0;false;false;0;0;0;;; -82896;5;0;false;false;;;;;; -82901;1;0;false;false;0;0;0;;; -82902;5;0;false;false;;;;;; -82907;52;0;false;false;63;127;95;;; -82959;3;0;false;false;;;;;; -82962;21;0;false;false;63;127;95;;; -82983;3;0;false;false;;;;;; -82986;6;1;false;false;127;0;85;;; -82992;1;0;false;false;0;0;0;;; -82993;4;0;false;false;;;;;; -82997;1;0;false;false;0;0;0;;; -82998;4;0;false;false;;;;;; -83002;11;0;false;false;0;0;0;;; -83013;3;0;false;false;;;;;; -83016;1;0;false;false;0;0;0;;; -83017;2;0;false;false;;;;;; -83019;1;0;false;false;0;0;0;;; -83020;2;0;false;false;;;;;; -83022;3;0;false;false;63;95;191;;; -83025;4;0;false;false;;;;;; -83029;1;0;false;false;63;95;191;;; -83030;1;0;false;false;;;;;; -83031;1;0;false;false;63;95;191;;; -83032;1;0;false;false;;;;;; -83033;5;0;false;false;63;95;191;;; -83038;1;0;false;false;;;;;; -83039;4;0;false;false;63;95;191;;; -83043;1;0;false;false;;;;;; -83044;5;0;false;false;63;95;191;;; -83049;1;0;false;false;;;;;; -83050;3;0;false;false;63;95;191;;; -83053;1;0;false;false;;;;;; -83054;9;0;false;false;63;95;191;;; -83063;2;0;false;false;;;;;; -83065;3;0;false;false;63;95;191;;; -83068;1;0;false;false;;;;;; -83069;2;0;false;false;63;95;191;;; -83071;1;0;false;false;;;;;; -83072;2;0;false;false;63;95;191;;; -83074;1;0;false;false;;;;;; -83075;6;0;false;false;63;95;191;;; -83081;1;0;false;false;;;;;; -83082;5;0;false;false;63;95;191;;; -83087;1;0;false;false;;;;;; -83088;14;0;false;false;63;95;191;;; -83102;2;0;false;false;;;;;; -83104;2;0;false;false;63;95;191;;; -83106;3;0;false;false;;;;;; -83109;1;0;false;false;63;95;191;;; -83110;1;0;false;false;;;;;; -83111;3;0;false;false;63;95;191;;; -83114;1;0;false;false;;;;;; -83115;4;0;false;false;63;95;191;;; -83119;1;0;false;false;;;;;; -83120;8;0;false;false;63;95;191;;; -83128;1;0;false;false;;;;;; -83129;2;0;false;false;63;95;191;;; -83131;1;0;false;false;;;;;; -83132;7;0;false;false;63;95;191;;; -83139;1;0;false;false;;;;;; -83140;2;0;false;false;63;95;191;;; -83142;1;0;false;false;;;;;; -83143;3;0;false;false;63;95;191;;; -83146;1;0;false;false;;;;;; -83147;6;0;false;false;63;95;191;;; -83153;1;0;false;false;;;;;; -83154;5;0;false;false;63;95;191;;; -83159;1;0;false;false;;;;;; -83160;8;0;false;false;63;95;191;;; -83168;1;0;false;false;;;;;; -83169;14;0;false;false;63;95;191;;; -83183;5;0;false;false;;;;;; -83188;1;0;false;false;63;95;191;;; -83189;1;0;false;false;;;;;; -83190;10;0;false;false;63;95;191;;; -83200;1;0;false;false;;;;;; -83201;5;0;false;false;63;95;191;;; -83206;1;0;false;false;;;;;; -83207;5;0;false;false;63;95;191;;; -83212;1;0;false;false;;;;;; -83213;4;0;false;false;63;95;191;;; -83217;1;0;false;false;;;;;; -83218;4;0;false;false;63;95;191;;; -83222;1;0;false;false;;;;;; -83223;3;0;false;false;63;95;191;;; -83226;1;0;false;false;;;;;; -83227;6;0;false;false;63;95;191;;; -83233;1;0;false;false;;;;;; -83234;2;0;false;false;63;95;191;;; -83236;1;0;false;false;;;;;; -83237;3;0;false;false;63;95;191;;; -83240;1;0;false;false;;;;;; -83241;14;0;false;false;63;95;191;;; -83255;3;0;false;false;;;;;; -83258;2;0;false;false;63;95;191;;; -83260;2;0;false;false;;;;;; -83262;4;1;false;false;127;0;85;;; -83266;1;0;false;false;;;;;; -83267;18;0;false;false;0;0;0;;; -83285;1;0;false;false;;;;;; -83286;6;0;false;false;0;0;0;;; -83292;1;0;false;false;;;;;; -83293;1;0;false;false;0;0;0;;; -83294;3;0;false;false;;;;;; -83297;9;0;false;false;0;0;0;;; -83306;1;0;false;false;;;;;; -83307;4;0;false;false;0;0;0;;; -83311;1;0;false;false;;;;;; -83312;1;0;false;false;0;0;0;;; -83313;1;0;false;false;;;;;; -83314;16;0;false;false;0;0;0;;; -83330;8;0;false;false;;;;;; -83338;2;1;false;false;127;0;85;;; -83340;1;0;false;false;;;;;; -83341;8;0;false;false;0;0;0;;; -83349;1;0;false;false;;;;;; -83350;1;0;false;false;0;0;0;;; -83351;1;0;false;false;;;;;; -83352;12;0;false;false;0;0;0;;; -83364;1;0;false;false;;;;;; -83365;1;0;false;false;0;0;0;;; -83366;4;0;false;false;;;;;; -83370;22;0;false;false;0;0;0;;; -83392;1;0;false;false;;;;;; -83393;7;0;false;false;0;0;0;;; -83400;1;0;false;false;;;;;; -83401;1;0;false;false;0;0;0;;; -83402;1;0;false;false;;;;;; -83403;13;0;false;false;0;0;0;;; -83416;3;0;false;false;;;;;; -83419;1;0;false;false;0;0;0;;; -83420;3;0;false;false;;;;;; -83423;4;1;false;false;127;0;85;;; -83427;4;0;false;false;;;;;; -83431;2;1;false;false;127;0;85;;; -83433;1;0;false;false;;;;;; -83434;8;0;false;false;0;0;0;;; -83442;1;0;false;false;;;;;; -83443;1;0;false;false;0;0;0;;; -83444;1;0;false;false;;;;;; -83445;2;0;false;false;0;0;0;;; -83447;1;0;false;false;;;;;; -83448;1;0;false;false;0;0;0;;; -83449;4;0;false;false;;;;;; -83453;20;0;false;false;0;0;0;;; -83473;1;0;false;false;;;;;; -83474;10;0;false;false;0;0;0;;; -83484;3;0;false;false;;;;;; -83487;1;0;false;false;0;0;0;;; -83488;3;0;false;false;;;;;; -83491;4;1;false;false;127;0;85;;; -83495;4;0;false;false;;;;;; -83499;2;1;false;false;127;0;85;;; -83501;1;0;false;false;;;;;; -83502;8;0;false;false;0;0;0;;; -83510;1;0;false;false;;;;;; -83511;1;0;false;false;0;0;0;;; -83512;1;0;false;false;;;;;; -83513;10;0;false;false;0;0;0;;; -83523;1;0;false;false;;;;;; -83524;2;0;false;false;0;0;0;;; -83526;1;0;false;false;;;;;; -83527;10;0;false;false;0;0;0;;; -83537;1;0;false;false;;;;;; -83538;1;0;false;false;0;0;0;;; -83539;4;0;false;false;;;;;; -83543;32;0;false;false;0;0;0;;; -83575;1;0;false;false;;;;;; -83576;10;0;false;false;0;0;0;;; -83586;1;0;false;false;;;;;; -83587;1;0;false;false;0;0;0;;; -83588;1;0;false;false;;;;;; -83589;9;0;false;false;0;0;0;;; -83598;3;0;false;false;;;;;; -83601;1;0;false;false;0;0;0;;; -83602;3;0;false;false;;;;;; -83605;4;1;false;false;127;0;85;;; -83609;4;0;false;false;;;;;; -83613;2;1;false;false;127;0;85;;; -83615;1;0;false;false;;;;;; -83616;8;0;false;false;0;0;0;;; -83624;1;0;false;false;;;;;; -83625;1;0;false;false;0;0;0;;; -83626;1;0;false;false;;;;;; -83627;10;0;false;false;0;0;0;;; -83637;1;0;false;false;;;;;; -83638;1;0;false;false;0;0;0;;; -83639;1;0;false;false;;;;;; -83640;10;0;false;false;0;0;0;;; -83650;1;0;false;false;;;;;; -83651;1;0;false;false;0;0;0;;; -83652;1;0;false;false;;;;;; -83653;11;0;false;false;0;0;0;;; -83664;1;0;false;false;;;;;; -83665;2;0;false;false;0;0;0;;; -83667;1;0;false;false;;;;;; -83668;10;0;false;false;0;0;0;;; -83678;1;0;false;false;;;;;; -83679;1;0;false;false;0;0;0;;; -83680;4;0;false;false;;;;;; -83684;28;0;false;false;0;0;0;;; -83712;1;0;false;false;;;;;; -83713;7;0;false;false;0;0;0;;; -83720;1;0;false;false;;;;;; -83721;1;0;false;false;0;0;0;;; -83722;1;0;false;false;;;;;; -83723;11;0;false;false;0;0;0;;; -83734;1;0;false;false;;;;;; -83735;1;0;false;false;0;0;0;;; -83736;1;0;false;false;;;;;; -83737;10;0;false;false;0;0;0;;; -83747;1;0;false;false;;;;;; -83748;1;0;false;false;0;0;0;;; -83749;1;0;false;false;;;;;; -83750;14;0;false;false;0;0;0;;; -83764;3;0;false;false;;;;;; -83767;1;0;false;false;0;0;0;;; -83768;3;0;false;false;;;;;; -83771;4;1;false;false;127;0;85;;; -83775;1;0;false;false;;;;;; -83776;1;0;false;false;0;0;0;;; -83777;4;0;false;false;;;;;; -83781;16;0;false;false;0;0;0;;; -83797;3;0;false;false;;;;;; -83800;1;0;false;false;0;0;0;;; -83801;2;0;false;false;;;;;; -83803;1;0;false;false;0;0;0;;; -83804;2;0;false;false;;;;;; -83806;3;0;false;false;63;95;191;;; -83809;4;0;false;false;;;;;; -83813;1;0;false;false;63;95;191;;; -83814;1;0;false;false;;;;;; -83815;9;0;false;false;63;95;191;;; -83824;1;0;false;false;;;;;; -83825;14;0;false;false;63;95;191;;; -83839;3;0;false;false;;;;;; -83842;1;0;false;false;63;95;191;;; -83843;1;0;false;false;;;;;; -83844;3;0;false;false;127;127;159;;; -83847;3;0;false;false;;;;;; -83850;1;0;false;false;63;95;191;;; -83851;3;0;false;false;;;;;; -83854;1;0;false;false;63;95;191;;; -83855;1;0;false;false;;;;;; -83856;7;1;false;false;127;159;191;;; -83863;9;0;false;false;63;95;191;;; -83872;1;0;false;false;;;;;; -83873;7;0;false;false;63;95;191;;; -83880;1;0;false;false;;;;;; -83881;9;0;false;false;63;95;191;;; -83890;1;0;false;false;;;;;; -83891;16;0;false;false;63;95;191;;; -83907;1;0;false;false;;;;;; -83908;19;0;false;false;63;95;191;;; -83927;3;0;false;false;;;;;; -83930;2;0;false;false;63;95;191;;; -83932;2;0;false;false;;;;;; -83934;4;1;false;false;127;0;85;;; -83938;1;0;false;false;;;;;; -83939;13;0;false;false;0;0;0;;; -83952;3;1;false;false;127;0;85;;; -83955;1;0;false;false;;;;;; -83956;10;0;false;false;0;0;0;;; -83966;1;0;false;false;;;;;; -83967;3;1;false;false;127;0;85;;; -83970;1;0;false;false;;;;;; -83971;9;0;false;false;0;0;0;;; -83980;1;0;false;false;;;;;; -83981;1;0;false;false;0;0;0;;; -83982;3;0;false;false;;;;;; -83985;8;0;false;false;0;0;0;;; -83993;1;0;false;false;;;;;; -83994;5;0;false;false;0;0;0;;; -83999;1;0;false;false;;;;;; -84000;1;0;false;false;0;0;0;;; -84001;1;0;false;false;;;;;; -84002;4;1;false;false;127;0;85;;; -84006;1;0;false;false;0;0;0;;; -84007;6;0;false;false;;;;;; -84013;18;0;false;false;0;0;0;;; -84031;1;0;false;false;;;;;; -84032;1;0;false;false;0;0;0;;; -84033;1;0;false;false;;;;;; -84034;9;0;false;false;0;0;0;;; -84043;5;0;false;false;;;;;; -84048;69;0;false;false;63;127;95;;; -84117;1;0;false;false;;;;;; -84118;2;1;false;false;127;0;85;;; -84120;1;0;false;false;;;;;; -84121;20;0;false;false;0;0;0;;; -84141;1;0;false;false;;;;;; -84142;2;0;false;false;0;0;0;;; -84144;1;0;false;false;;;;;; -84145;10;0;false;false;0;0;0;;; -84155;1;0;false;false;;;;;; -84156;1;0;false;false;0;0;0;;; -84157;4;0;false;false;;;;;; -84161;6;1;false;false;127;0;85;;; -84167;1;0;false;false;0;0;0;;; -84168;3;0;false;false;;;;;; -84171;1;0;false;false;0;0;0;;; -84172;6;0;false;false;;;;;; -84178;5;1;false;false;127;0;85;;; -84183;1;0;false;false;;;;;; -84184;7;0;false;false;0;0;0;;; -84191;1;0;false;false;;;;;; -84192;7;0;false;false;0;0;0;;; -84199;1;0;false;false;;;;;; -84200;1;0;false;false;0;0;0;;; -84201;1;0;false;false;;;;;; -84202;13;0;false;false;0;0;0;;; -84215;3;0;false;false;;;;;; -84218;65;0;false;false;63;127;95;;; -84283;1;0;false;false;;;;;; -84284;50;0;false;false;63;127;95;;; -84334;1;0;false;false;;;;;; -84335;2;1;false;false;127;0;85;;; -84337;1;0;false;false;;;;;; -84338;10;0;false;false;0;0;0;;; -84348;1;0;false;false;;;;;; -84349;2;0;false;false;0;0;0;;; -84351;1;0;false;false;;;;;; -84352;7;0;false;false;0;0;0;;; -84359;1;0;false;false;;;;;; -84360;1;0;false;false;0;0;0;;; -84361;4;0;false;false;;;;;; -84365;5;0;false;false;0;0;0;;; -84370;1;0;false;false;;;;;; -84371;1;0;false;false;0;0;0;;; -84372;1;0;false;false;;;;;; -84373;3;1;false;false;127;0;85;;; -84376;1;0;false;false;;;;;; -84377;10;0;false;false;0;0;0;;; -84387;1;0;false;false;;;;;; -84388;1;0;false;false;0;0;0;;; -84389;5;0;false;false;;;;;; -84394;6;1;false;false;127;0;85;;; -84400;1;0;false;false;;;;;; -84401;4;1;false;false;127;0;85;;; -84405;1;0;false;false;;;;;; -84406;5;0;false;false;0;0;0;;; -84411;1;0;false;false;;;;;; -84412;1;0;false;false;0;0;0;;; -84413;6;0;false;false;;;;;; -84419;2;1;false;false;127;0;85;;; -84421;1;0;false;false;;;;;; -84422;20;0;false;false;0;0;0;;; -84442;1;0;false;false;;;;;; -84443;2;0;false;false;0;0;0;;; -84445;1;0;false;false;;;;;; -84446;7;0;false;false;0;0;0;;; -84453;1;0;false;false;;;;;; -84454;1;0;false;false;0;0;0;;; -84455;7;0;false;false;;;;;; -84462;3;1;false;false;127;0;85;;; -84465;1;0;false;false;;;;;; -84466;5;0;false;false;0;0;0;;; -84471;1;0;false;false;;;;;; -84472;1;0;false;false;0;0;0;;; -84473;1;0;false;false;;;;;; -84474;19;0;false;false;0;0;0;;; -84493;1;0;false;false;;;;;; -84494;1;0;false;false;0;0;0;;; -84495;1;0;false;false;;;;;; -84496;16;0;false;false;0;0;0;;; -84512;1;0;false;false;;;;;; -84513;1;0;false;false;0;0;0;;; -84514;1;0;false;false;;;;;; -84515;2;0;false;false;0;0;0;;; -84517;7;0;false;false;;;;;; -84524;25;0;false;false;0;0;0;;; -84549;7;0;false;false;;;;;; -84556;32;0;false;false;0;0;0;;; -84588;1;0;false;false;;;;;; -84589;4;1;false;false;127;0;85;;; -84593;2;0;false;false;0;0;0;;; -84595;6;0;false;false;;;;;; -84601;1;0;false;false;0;0;0;;; -84602;5;0;false;false;;;;;; -84607;1;0;false;false;0;0;0;;; -84608;4;0;false;false;;;;;; -84612;2;0;false;false;0;0;0;;; -84614;4;0;false;false;;;;;; -84618;19;0;false;false;0;0;0;;; -84637;1;0;false;false;;;;;; -84638;1;0;false;false;0;0;0;;; -84639;1;0;false;false;;;;;; -84640;10;0;false;false;0;0;0;;; -84650;4;0;false;false;;;;;; -84654;32;0;false;false;0;0;0;;; -84686;1;0;false;false;;;;;; -84687;7;0;false;false;0;0;0;;; -84694;3;0;false;false;;;;;; -84697;1;0;false;false;0;0;0;;; -84698;1;0;false;false;;;;;; -84699;4;1;false;false;127;0;85;;; -84703;1;0;false;false;;;;;; -84704;2;1;false;false;127;0;85;;; -84706;1;0;false;false;;;;;; -84707;10;0;false;false;0;0;0;;; -84717;1;0;false;false;;;;;; -84718;2;0;false;false;0;0;0;;; -84720;1;0;false;false;;;;;; -84721;9;0;false;false;0;0;0;;; -84730;1;0;false;false;;;;;; -84731;1;0;false;false;0;0;0;;; -84732;4;0;false;false;;;;;; -84736;5;0;false;false;0;0;0;;; -84741;1;0;false;false;;;;;; -84742;1;0;false;false;0;0;0;;; -84743;1;0;false;false;;;;;; -84744;3;1;false;false;127;0;85;;; -84747;1;0;false;false;;;;;; -84748;10;0;false;false;0;0;0;;; -84758;1;0;false;false;;;;;; -84759;1;0;false;false;0;0;0;;; -84760;5;0;false;false;;;;;; -84765;6;1;false;false;127;0;85;;; -84771;1;0;false;false;;;;;; -84772;4;1;false;false;127;0;85;;; -84776;1;0;false;false;;;;;; -84777;5;0;false;false;0;0;0;;; -84782;1;0;false;false;;;;;; -84783;1;0;false;false;0;0;0;;; -84784;6;0;false;false;;;;;; -84790;2;1;false;false;127;0;85;;; -84792;1;0;false;false;;;;;; -84793;20;0;false;false;0;0;0;;; -84813;1;0;false;false;;;;;; -84814;2;0;false;false;0;0;0;;; -84816;1;0;false;false;;;;;; -84817;9;0;false;false;0;0;0;;; -84826;1;0;false;false;;;;;; -84827;1;0;false;false;0;0;0;;; -84828;7;0;false;false;;;;;; -84835;3;1;false;false;127;0;85;;; -84838;1;0;false;false;;;;;; -84839;5;0;false;false;0;0;0;;; -84844;1;0;false;false;;;;;; -84845;1;0;false;false;0;0;0;;; -84846;1;0;false;false;;;;;; -84847;19;0;false;false;0;0;0;;; -84866;1;0;false;false;;;;;; -84867;1;0;false;false;0;0;0;;; -84868;1;0;false;false;;;;;; -84869;16;0;false;false;0;0;0;;; -84885;1;0;false;false;;;;;; -84886;1;0;false;false;0;0;0;;; -84887;1;0;false;false;;;;;; -84888;2;0;false;false;0;0;0;;; -84890;7;0;false;false;;;;;; -84897;27;0;false;false;0;0;0;;; -84924;7;0;false;false;;;;;; -84931;32;0;false;false;0;0;0;;; -84963;1;0;false;false;;;;;; -84964;4;1;false;false;127;0;85;;; -84968;2;0;false;false;0;0;0;;; -84970;6;0;false;false;;;;;; -84976;1;0;false;false;0;0;0;;; -84977;5;0;false;false;;;;;; -84982;1;0;false;false;0;0;0;;; -84983;4;0;false;false;;;;;; -84987;2;0;false;false;0;0;0;;; -84989;4;0;false;false;;;;;; -84993;19;0;false;false;0;0;0;;; -85012;1;0;false;false;;;;;; -85013;1;0;false;false;0;0;0;;; -85014;1;0;false;false;;;;;; -85015;10;0;false;false;0;0;0;;; -85025;4;0;false;false;;;;;; -85029;32;0;false;false;0;0;0;;; -85061;1;0;false;false;;;;;; -85062;7;0;false;false;0;0;0;;; -85069;3;0;false;false;;;;;; -85072;1;0;false;false;0;0;0;;; -85073;1;0;false;false;;;;;; -85074;4;1;false;false;127;0;85;;; -85078;1;0;false;false;;;;;; -85079;2;1;false;false;127;0;85;;; -85081;1;0;false;false;;;;;; -85082;10;0;false;false;0;0;0;;; -85092;1;0;false;false;;;;;; -85093;2;0;false;false;0;0;0;;; -85095;1;0;false;false;;;;;; -85096;15;0;false;false;0;0;0;;; -85111;1;0;false;false;;;;;; -85112;1;0;false;false;0;0;0;;; -85113;4;0;false;false;;;;;; -85117;5;0;false;false;0;0;0;;; -85122;1;0;false;false;;;;;; -85123;1;0;false;false;0;0;0;;; -85124;1;0;false;false;;;;;; -85125;3;1;false;false;127;0;85;;; -85128;1;0;false;false;;;;;; -85129;10;0;false;false;0;0;0;;; -85139;1;0;false;false;;;;;; -85140;1;0;false;false;0;0;0;;; -85141;5;0;false;false;;;;;; -85146;6;1;false;false;127;0;85;;; -85152;1;0;false;false;;;;;; -85153;4;1;false;false;127;0;85;;; -85157;1;0;false;false;;;;;; -85158;5;0;false;false;0;0;0;;; -85163;1;0;false;false;;;;;; -85164;1;0;false;false;0;0;0;;; -85165;6;0;false;false;;;;;; -85171;2;1;false;false;127;0;85;;; -85173;1;0;false;false;;;;;; -85174;20;0;false;false;0;0;0;;; -85194;1;0;false;false;;;;;; -85195;2;0;false;false;0;0;0;;; -85197;1;0;false;false;;;;;; -85198;15;0;false;false;0;0;0;;; -85213;1;0;false;false;;;;;; -85214;1;0;false;false;0;0;0;;; -85215;7;0;false;false;;;;;; -85222;15;0;false;false;0;0;0;;; -85237;7;0;false;false;;;;;; -85244;30;0;false;false;0;0;0;;; -85274;7;0;false;false;;;;;; -85281;19;0;false;false;0;0;0;;; -85300;7;0;false;false;;;;;; -85307;32;0;false;false;0;0;0;;; -85339;1;0;false;false;;;;;; -85340;4;1;false;false;127;0;85;;; -85344;2;0;false;false;0;0;0;;; -85346;6;0;false;false;;;;;; -85352;1;0;false;false;0;0;0;;; -85353;5;0;false;false;;;;;; -85358;1;0;false;false;0;0;0;;; -85359;4;0;false;false;;;;;; -85363;2;0;false;false;0;0;0;;; -85365;4;0;false;false;;;;;; -85369;19;0;false;false;0;0;0;;; -85388;1;0;false;false;;;;;; -85389;1;0;false;false;0;0;0;;; -85390;1;0;false;false;;;;;; -85391;10;0;false;false;0;0;0;;; -85401;4;0;false;false;;;;;; -85405;32;0;false;false;0;0;0;;; -85437;1;0;false;false;;;;;; -85438;7;0;false;false;0;0;0;;; -85445;3;0;false;false;;;;;; -85448;1;0;false;false;0;0;0;;; -85449;1;0;false;false;;;;;; -85450;4;1;false;false;127;0;85;;; -85454;1;0;false;false;;;;;; -85455;2;1;false;false;127;0;85;;; -85457;1;0;false;false;;;;;; -85458;10;0;false;false;0;0;0;;; -85468;1;0;false;false;;;;;; -85469;2;0;false;false;0;0;0;;; -85471;1;0;false;false;;;;;; -85472;19;0;false;false;0;0;0;;; -85491;1;0;false;false;;;;;; -85492;1;0;false;false;0;0;0;;; -85493;4;0;false;false;;;;;; -85497;5;0;false;false;0;0;0;;; -85502;1;0;false;false;;;;;; -85503;1;0;false;false;0;0;0;;; -85504;1;0;false;false;;;;;; -85505;3;1;false;false;127;0;85;;; -85508;1;0;false;false;;;;;; -85509;10;0;false;false;0;0;0;;; -85519;1;0;false;false;;;;;; -85520;1;0;false;false;0;0;0;;; -85521;5;0;false;false;;;;;; -85526;6;1;false;false;127;0;85;;; -85532;1;0;false;false;;;;;; -85533;4;1;false;false;127;0;85;;; -85537;1;0;false;false;;;;;; -85538;5;0;false;false;0;0;0;;; -85543;1;0;false;false;;;;;; -85544;1;0;false;false;0;0;0;;; -85545;6;0;false;false;;;;;; -85551;2;1;false;false;127;0;85;;; -85553;1;0;false;false;;;;;; -85554;20;0;false;false;0;0;0;;; -85574;1;0;false;false;;;;;; -85575;2;0;false;false;0;0;0;;; -85577;1;0;false;false;;;;;; -85578;19;0;false;false;0;0;0;;; -85597;1;0;false;false;;;;;; -85598;1;0;false;false;0;0;0;;; -85599;7;0;false;false;;;;;; -85606;19;0;false;false;0;0;0;;; -85625;7;0;false;false;;;;;; -85632;30;0;false;false;0;0;0;;; -85662;7;0;false;false;;;;;; -85669;19;0;false;false;0;0;0;;; -85688;7;0;false;false;;;;;; -85695;32;0;false;false;0;0;0;;; -85727;1;0;false;false;;;;;; -85728;4;1;false;false;127;0;85;;; -85732;2;0;false;false;0;0;0;;; -85734;6;0;false;false;;;;;; -85740;1;0;false;false;0;0;0;;; -85741;5;0;false;false;;;;;; -85746;1;0;false;false;0;0;0;;; -85747;4;0;false;false;;;;;; -85751;2;0;false;false;0;0;0;;; -85753;4;0;false;false;;;;;; -85757;19;0;false;false;0;0;0;;; -85776;1;0;false;false;;;;;; -85777;1;0;false;false;0;0;0;;; -85778;1;0;false;false;;;;;; -85779;10;0;false;false;0;0;0;;; -85789;4;0;false;false;;;;;; -85793;32;0;false;false;0;0;0;;; -85825;1;0;false;false;;;;;; -85826;7;0;false;false;0;0;0;;; -85833;3;0;false;false;;;;;; -85836;1;0;false;false;0;0;0;;; -85837;2;0;false;false;;;;;; -85839;1;0;false;false;0;0;0;;; -85840;2;0;false;false;;;;;; -85842;3;0;false;false;63;95;191;;; -85845;3;0;false;false;;;;;; -85848;1;0;false;false;63;95;191;;; -85849;1;0;false;false;;;;;; -85850;7;0;false;false;63;95;191;;; -85857;1;0;false;false;;;;;; -85858;3;0;false;false;63;95;191;;; -85861;1;0;false;false;;;;;; -85862;8;0;false;false;63;95;191;;; -85870;1;0;false;false;;;;;; -85871;10;0;false;false;63;95;191;;; -85881;1;0;false;false;;;;;; -85882;6;0;false;false;63;95;191;;; -85888;1;0;false;false;;;;;; -85889;3;0;false;false;63;95;191;;; -85892;1;0;false;false;;;;;; -85893;8;0;false;false;63;95;191;;; -85901;1;0;false;false;;;;;; -85902;4;0;false;false;63;95;191;;; -85906;1;0;false;false;;;;;; -85907;2;0;false;false;63;95;191;;; -85909;1;0;false;false;;;;;; -85910;4;0;false;false;63;95;191;;; -85914;3;0;false;false;;;;;; -85917;1;0;false;false;63;95;191;;; -85918;1;0;false;false;;;;;; -85919;4;0;false;false;63;95;191;;; -85923;1;0;false;false;;;;;; -85924;3;0;false;false;63;95;191;;; -85927;1;0;false;false;;;;;; -85928;5;0;false;false;63;95;191;;; -85933;1;0;false;false;;;;;; -85934;2;0;false;false;63;95;191;;; -85936;1;0;false;false;;;;;; -85937;5;0;false;false;63;95;191;;; -85942;1;0;false;false;;;;;; -85943;2;0;false;false;63;95;191;;; -85945;1;0;false;false;;;;;; -85946;3;0;false;false;63;95;191;;; -85949;1;0;false;false;;;;;; -85950;7;0;false;false;63;95;191;;; -85957;1;0;false;false;;;;;; -85958;5;0;false;false;63;95;191;;; -85963;3;0;false;false;;;;;; -85966;2;0;false;false;63;95;191;;; -85968;2;0;false;false;;;;;; -85970;4;1;false;false;127;0;85;;; -85974;1;0;false;false;;;;;; -85975;13;0;false;false;0;0;0;;; -85988;1;0;false;false;;;;;; -85989;1;0;false;false;0;0;0;;; -85990;3;0;false;false;;;;;; -85993;5;0;false;false;0;0;0;;; -85998;1;0;false;false;;;;;; -85999;5;0;false;false;0;0;0;;; -86004;1;0;false;false;;;;;; -86005;1;0;false;false;0;0;0;;; -86006;1;0;false;false;;;;;; -86007;3;1;false;false;127;0;85;;; -86010;1;0;false;false;;;;;; -86011;8;0;false;false;0;0;0;;; -86019;3;0;false;false;;;;;; -86022;10;0;false;false;0;0;0;;; -86032;1;0;false;false;;;;;; -86033;1;0;false;false;0;0;0;;; -86034;1;0;false;false;;;;;; -86035;2;0;false;false;42;0;255;;; -86037;1;0;false;false;0;0;0;;; -86038;3;0;false;false;;;;;; -86041;2;1;false;false;127;0;85;;; -86043;1;0;false;false;;;;;; -86044;12;0;false;false;0;0;0;;; -86056;1;0;false;false;;;;;; -86057;2;0;false;false;0;0;0;;; -86059;1;0;false;false;;;;;; -86060;12;0;false;false;0;0;0;;; -86072;1;0;false;false;;;;;; -86073;1;0;false;false;0;0;0;;; -86074;4;0;false;false;;;;;; -86078;11;0;false;false;0;0;0;;; -86089;1;0;false;false;;;;;; -86090;1;0;false;false;0;0;0;;; -86091;1;0;false;false;;;;;; -86092;12;0;false;false;0;0;0;;; -86104;4;0;false;false;;;;;; -86108;9;0;false;false;0;0;0;;; -86117;1;0;false;false;;;;;; -86118;1;0;false;false;0;0;0;;; -86119;1;0;false;false;;;;;; -86120;12;0;false;false;0;0;0;;; -86132;4;0;false;false;;;;;; -86136;20;0;false;false;0;0;0;;; -86156;3;0;false;false;;;;;; -86159;1;0;false;false;0;0;0;;; -86160;3;0;false;false;;;;;; -86163;4;1;false;false;127;0;85;;; -86167;3;0;false;false;;;;;; -86170;2;1;false;false;127;0;85;;; -86172;1;0;false;false;;;;;; -86173;12;0;false;false;0;0;0;;; -86185;1;0;false;false;;;;;; -86186;1;0;false;false;0;0;0;;; -86187;1;0;false;false;;;;;; -86188;2;0;false;false;0;0;0;;; -86190;1;0;false;false;;;;;; -86191;1;0;false;false;0;0;0;;; -86192;4;0;false;false;;;;;; -86196;3;1;false;false;127;0;85;;; -86199;1;0;false;false;;;;;; -86200;4;0;false;false;0;0;0;;; -86204;1;0;false;false;;;;;; -86205;1;0;false;false;0;0;0;;; -86206;1;0;false;false;;;;;; -86207;37;0;false;false;0;0;0;;; -86244;4;0;false;false;;;;;; -86248;3;1;false;false;127;0;85;;; -86251;1;0;false;false;;;;;; -86252;10;0;false;false;0;0;0;;; -86262;1;0;false;false;;;;;; -86263;1;0;false;false;0;0;0;;; -86264;1;0;false;false;;;;;; -86265;30;0;false;false;0;0;0;;; -86295;10;0;false;false;;;;;; -86305;2;1;false;false;127;0;85;;; -86307;1;0;false;false;;;;;; -86308;12;0;false;false;0;0;0;;; -86320;1;0;false;false;;;;;; -86321;2;0;false;false;0;0;0;;; -86323;1;0;false;false;;;;;; -86324;11;0;false;false;0;0;0;;; -86335;1;0;false;false;;;;;; -86336;1;0;false;false;0;0;0;;; -86337;5;0;false;false;;;;;; -86342;10;0;false;false;0;0;0;;; -86352;1;0;false;false;;;;;; -86353;1;0;false;false;0;0;0;;; -86354;1;0;false;false;;;;;; -86355;28;0;false;false;0;0;0;;; -86383;1;0;false;false;;;;;; -86384;1;0;false;false;0;0;0;;; -86385;1;0;false;false;;;;;; -86386;3;0;false;false;0;0;0;;; -86389;5;0;false;false;;;;;; -86394;11;0;false;false;0;0;0;;; -86405;1;0;false;false;;;;;; -86406;1;0;false;false;0;0;0;;; -86407;1;0;false;false;;;;;; -86408;10;0;false;false;0;0;0;;; -86418;1;0;false;false;;;;;; -86419;1;0;false;false;0;0;0;;; -86420;1;0;false;false;;;;;; -86421;20;0;false;false;0;0;0;;; -86441;1;0;false;false;;;;;; -86442;1;0;false;false;0;0;0;;; -86443;1;0;false;false;;;;;; -86444;12;0;false;false;0;0;0;;; -86456;5;0;false;false;;;;;; -86461;9;0;false;false;0;0;0;;; -86470;1;0;false;false;;;;;; -86471;1;0;false;false;0;0;0;;; -86472;1;0;false;false;;;;;; -86473;12;0;false;false;0;0;0;;; -86485;4;0;false;false;;;;;; -86489;1;0;false;false;0;0;0;;; -86490;4;0;false;false;;;;;; -86494;4;1;false;false;127;0;85;;; -86498;1;0;false;false;;;;;; -86499;1;0;false;false;0;0;0;;; -86500;5;0;false;false;;;;;; -86505;6;0;false;false;0;0;0;;; -86511;1;0;false;false;;;;;; -86512;8;0;false;false;0;0;0;;; -86520;1;0;false;false;;;;;; -86521;1;0;false;false;0;0;0;;; -86522;1;0;false;false;;;;;; -86523;22;0;false;false;0;0;0;;; -86545;5;0;false;false;;;;;; -86550;10;0;false;false;0;0;0;;; -86560;1;0;false;false;;;;;; -86561;6;0;false;false;0;0;0;;; -86567;1;0;false;false;;;;;; -86568;1;0;false;false;0;0;0;;; -86569;1;0;false;false;;;;;; -86570;32;0;false;false;0;0;0;;; -86602;1;0;false;false;;;;;; -86603;12;0;false;false;0;0;0;;; -86615;5;0;false;false;;;;;; -86620;3;1;false;false;127;0;85;;; -86623;1;0;false;false;;;;;; -86624;5;0;false;false;0;0;0;;; -86629;1;0;false;false;;;;;; -86630;1;0;false;false;0;0;0;;; -86631;1;0;false;false;;;;;; -86632;36;0;false;false;0;0;0;;; -86668;1;0;false;false;;;;;; -86669;1;0;false;false;0;0;0;;; -86670;1;0;false;false;;;;;; -86671;11;0;false;false;0;0;0;;; -86682;1;0;false;false;;;;;; -86683;19;0;false;false;0;0;0;;; -86702;5;0;false;false;;;;;; -86707;35;0;false;false;0;0;0;;; -86742;6;0;false;false;;;;;; -86748;11;0;false;false;0;0;0;;; -86759;1;0;false;false;;;;;; -86760;1;0;false;false;0;0;0;;; -86761;1;0;false;false;;;;;; -86762;5;0;false;false;0;0;0;;; -86767;1;0;false;false;;;;;; -86768;1;0;false;false;0;0;0;;; -86769;1;0;false;false;;;;;; -86770;11;0;false;false;0;0;0;;; -86781;5;0;false;false;;;;;; -86786;9;0;false;false;0;0;0;;; -86795;1;0;false;false;;;;;; -86796;1;0;false;false;0;0;0;;; -86797;1;0;false;false;;;;;; -86798;12;0;false;false;0;0;0;;; -86810;4;0;false;false;;;;;; -86814;1;0;false;false;0;0;0;;; -86815;4;0;false;false;;;;;; -86819;20;0;false;false;0;0;0;;; -86839;3;0;false;false;;;;;; -86842;1;0;false;false;0;0;0;;; -86843;2;0;false;false;;;;;; -86845;1;0;false;false;0;0;0;;; -86846;2;0;false;false;;;;;; -86848;3;0;false;false;63;95;191;;; -86851;3;0;false;false;;;;;; -86854;1;0;false;false;63;95;191;;; -86855;1;0;false;false;;;;;; -86856;8;0;false;false;63;95;191;;; -86864;1;0;false;false;;;;;; -86865;3;0;false;false;63;95;191;;; -86868;1;0;false;false;;;;;; -86869;9;0;false;false;63;95;191;;; -86878;1;0;false;false;;;;;; -86879;4;0;false;false;63;95;191;;; -86883;1;0;false;false;;;;;; -86884;3;0;false;false;63;95;191;;; -86887;1;0;false;false;;;;;; -86888;9;0;false;false;63;95;191;;; -86897;1;0;false;false;;;;;; -86898;2;0;false;false;63;95;191;;; -86900;1;0;false;false;;;;;; -86901;6;0;false;false;63;95;191;;; -86907;1;0;false;false;;;;;; -86908;3;0;false;false;63;95;191;;; -86911;1;0;false;false;;;;;; -86912;9;0;false;false;63;95;191;;; -86921;1;0;false;false;;;;;; -86922;2;0;false;false;63;95;191;;; -86924;1;0;false;false;;;;;; -86925;3;0;false;false;63;95;191;;; -86928;4;0;false;false;;;;;; -86932;1;0;false;false;63;95;191;;; -86933;1;0;false;false;;;;;; -86934;7;0;false;false;63;95;191;;; -86941;1;0;false;false;;;;;; -86942;5;0;false;false;63;95;191;;; -86947;1;0;false;false;;;;;; -86948;8;0;false;false;63;95;191;;; -86956;1;0;false;false;;;;;; -86957;2;0;false;false;63;95;191;;; -86959;1;0;false;false;;;;;; -86960;2;0;false;false;63;95;191;;; -86962;1;0;false;false;;;;;; -86963;9;0;false;false;63;95;191;;; -86972;1;0;false;false;;;;;; -86973;7;0;false;false;63;95;191;;; -86980;3;0;false;false;;;;;; -86983;1;0;false;false;63;95;191;;; -86984;1;0;false;false;;;;;; -86985;2;0;false;false;63;95;191;;; -86987;1;0;false;false;;;;;; -86988;1;0;false;false;63;95;191;;; -86989;1;0;false;false;;;;;; -86990;8;0;false;false;63;95;191;;; -86998;1;0;false;false;;;;;; -86999;6;0;false;false;63;95;191;;; -87005;1;0;false;false;;;;;; -87006;3;0;false;false;63;95;191;;; -87009;1;0;false;false;;;;;; -87010;5;0;false;false;63;95;191;;; -87015;1;0;false;false;;;;;; -87016;7;0;false;false;63;95;191;;; -87023;1;0;false;false;;;;;; -87024;2;0;false;false;63;95;191;;; -87026;1;0;false;false;;;;;; -87027;4;0;false;false;63;95;191;;; -87031;1;0;false;false;;;;;; -87032;3;0;false;false;63;95;191;;; -87035;1;0;false;false;;;;;; -87036;4;0;false;false;63;95;191;;; -87040;1;0;false;false;;;;;; -87041;5;0;false;false;63;95;191;;; -87046;1;0;false;false;;;;;; -87047;9;0;false;false;63;95;191;;; -87056;4;0;false;false;;;;;; -87060;1;0;false;false;63;95;191;;; -87061;1;0;false;false;;;;;; -87062;4;0;false;false;63;95;191;;; -87066;1;0;false;false;;;;;; -87067;2;0;false;false;63;95;191;;; -87069;1;0;false;false;;;;;; -87070;3;0;false;false;63;95;191;;; -87073;1;0;false;false;;;;;; -87074;6;0;false;false;63;95;191;;; -87080;1;0;false;false;;;;;; -87081;2;0;false;false;63;95;191;;; -87083;1;0;false;false;;;;;; -87084;4;0;false;false;63;95;191;;; -87088;1;0;false;false;;;;;; -87089;9;0;false;false;63;95;191;;; -87098;3;0;false;false;;;;;; -87101;1;0;false;false;63;95;191;;; -87102;1;0;false;false;;;;;; -87103;3;0;false;false;127;127;159;;; -87106;3;0;false;false;;;;;; -87109;1;0;false;false;63;95;191;;; -87110;3;0;false;false;;;;;; -87113;1;0;false;false;63;95;191;;; -87114;1;0;false;false;;;;;; -87115;7;1;false;false;127;159;191;;; -87122;3;0;false;false;63;95;191;;; -87125;1;0;false;false;;;;;; -87126;3;0;false;false;63;95;191;;; -87129;1;0;false;false;;;;;; -87130;9;0;false;false;63;95;191;;; -87139;1;0;false;false;;;;;; -87140;5;0;false;false;63;95;191;;; -87145;1;0;false;false;;;;;; -87146;2;0;false;false;63;95;191;;; -87148;1;0;false;false;;;;;; -87149;3;0;false;false;63;95;191;;; -87152;1;0;false;false;;;;;; -87153;4;0;false;false;63;95;191;;; -87157;3;0;false;false;;;;;; -87160;2;0;false;false;63;95;191;;; -87162;2;0;false;false;;;;;; -87164;4;1;false;false;127;0;85;;; -87168;1;0;false;false;;;;;; -87169;10;0;false;false;0;0;0;;; -87179;4;1;false;false;127;0;85;;; -87183;1;0;false;false;;;;;; -87184;4;0;false;false;0;0;0;;; -87188;1;0;false;false;;;;;; -87189;1;0;false;false;0;0;0;;; -87190;3;0;false;false;;;;;; -87193;5;0;false;false;0;0;0;;; -87198;1;0;false;false;;;;;; -87199;6;0;false;false;0;0;0;;; -87205;6;0;false;false;;;;;; -87211;2;1;false;false;127;0;85;;; -87213;1;0;false;false;;;;;; -87214;10;0;false;false;0;0;0;;; -87224;1;0;false;false;;;;;; -87225;1;0;false;false;0;0;0;;; -87226;1;0;false;false;;;;;; -87227;1;0;false;false;0;0;0;;; -87228;1;0;false;false;;;;;; -87229;2;0;false;false;0;0;0;;; -87231;5;0;false;false;;;;;; -87236;22;0;false;false;0;0;0;;; -87258;1;0;false;false;;;;;; -87259;1;0;false;false;0;0;0;;; -87260;1;0;false;false;;;;;; -87261;12;0;false;false;0;0;0;;; -87273;1;0;false;false;;;;;; -87274;1;0;false;false;0;0;0;;; -87275;1;0;false;false;;;;;; -87276;12;0;false;false;0;0;0;;; -87288;1;0;false;false;;;;;; -87289;2;0;false;false;0;0;0;;; -87291;1;0;false;false;;;;;; -87292;10;0;false;false;0;0;0;;; -87302;1;0;false;false;;;;;; -87303;1;0;false;false;0;0;0;;; -87304;4;0;false;false;;;;;; -87308;6;1;false;false;127;0;85;;; -87314;1;0;false;false;0;0;0;;; -87315;3;0;false;false;;;;;; -87318;1;0;false;false;0;0;0;;; -87319;4;0;false;false;;;;;; -87323;5;0;false;false;0;0;0;;; -87328;1;0;false;false;;;;;; -87329;1;0;false;false;0;0;0;;; -87330;1;0;false;false;;;;;; -87331;3;1;false;false;127;0;85;;; -87334;1;0;false;false;;;;;; -87335;8;0;false;false;0;0;0;;; -87343;3;0;false;false;;;;;; -87346;11;0;false;false;0;0;0;;; -87357;1;0;false;false;;;;;; -87358;1;0;false;false;0;0;0;;; -87359;1;0;false;false;;;;;; -87360;12;0;false;false;0;0;0;;; -87372;3;0;false;false;;;;;; -87375;9;0;false;false;0;0;0;;; -87384;1;0;false;false;;;;;; -87385;1;0;false;false;0;0;0;;; -87386;1;0;false;false;;;;;; -87387;12;0;false;false;0;0;0;;; -87399;3;0;false;false;;;;;; -87402;55;0;false;false;63;127;95;;; -87457;1;0;false;false;;;;;; -87458;69;0;false;false;63;127;95;;; -87527;1;0;false;false;;;;;; -87528;40;0;false;false;63;127;95;;; -87568;1;0;false;false;;;;;; -87569;2;1;false;false;127;0;85;;; -87571;1;0;false;false;;;;;; -87572;4;0;false;false;0;0;0;;; -87576;1;0;false;false;;;;;; -87577;2;0;false;false;0;0;0;;; -87579;1;0;false;false;;;;;; -87580;6;0;false;false;0;0;0;;; -87586;1;0;false;false;;;;;; -87587;2;0;false;false;0;0;0;;; -87589;1;0;false;false;;;;;; -87590;3;0;false;false;0;0;0;;; -87593;1;0;false;false;;;;;; -87594;2;0;false;false;0;0;0;;; -87596;1;0;false;false;;;;;; -87597;7;0;false;false;0;0;0;;; -87604;1;0;false;false;;;;;; -87605;1;0;false;false;0;0;0;;; -87606;4;0;false;false;;;;;; -87610;2;1;false;false;127;0;85;;; -87612;1;0;false;false;;;;;; -87613;17;0;false;false;0;0;0;;; -87630;1;0;false;false;;;;;; -87631;1;0;false;false;0;0;0;;; -87632;5;0;false;false;;;;;; -87637;10;0;false;false;0;0;0;;; -87647;1;0;false;false;;;;;; -87648;1;0;false;false;0;0;0;;; -87649;1;0;false;false;;;;;; -87650;19;0;false;false;0;0;0;;; -87669;4;0;false;false;;;;;; -87673;1;0;false;false;0;0;0;;; -87674;3;0;false;false;;;;;; -87677;1;0;false;false;0;0;0;;; -87678;3;0;false;false;;;;;; -87681;69;0;false;false;63;127;95;;; -87750;1;0;false;false;;;;;; -87751;66;0;false;false;63;127;95;;; -87817;1;0;false;false;;;;;; -87818;4;1;false;false;127;0;85;;; -87822;3;0;false;false;;;;;; -87825;2;1;false;false;127;0;85;;; -87827;1;0;false;false;;;;;; -87828;12;0;false;false;0;0;0;;; -87840;1;0;false;false;;;;;; -87841;2;0;false;false;0;0;0;;; -87843;1;0;false;false;;;;;; -87844;11;0;false;false;0;0;0;;; -87855;1;0;false;false;;;;;; -87856;2;0;false;false;0;0;0;;; -87858;1;0;false;false;;;;;; -87859;9;0;false;false;0;0;0;;; -87868;1;0;false;false;;;;;; -87869;2;0;false;false;0;0;0;;; -87871;1;0;false;false;;;;;; -87872;3;0;false;false;0;0;0;;; -87875;1;0;false;false;;;;;; -87876;2;0;false;false;0;0;0;;; -87878;1;0;false;false;;;;;; -87879;4;0;false;false;0;0;0;;; -87883;1;0;false;false;;;;;; -87884;1;0;false;false;0;0;0;;; -87885;4;0;false;false;;;;;; -87889;3;1;false;false;127;0;85;;; -87892;1;0;false;false;;;;;; -87893;9;0;false;false;0;0;0;;; -87902;1;0;false;false;;;;;; -87903;1;0;false;false;0;0;0;;; -87904;1;0;false;false;;;;;; -87905;35;0;false;false;0;0;0;;; -87940;4;0;false;false;;;;;; -87944;3;1;false;false;127;0;85;;; -87947;1;0;false;false;;;;;; -87948;10;0;false;false;0;0;0;;; -87958;1;0;false;false;;;;;; -87959;1;0;false;false;0;0;0;;; -87960;1;0;false;false;;;;;; -87961;35;0;false;false;0;0;0;;; -87996;4;0;false;false;;;;;; -88000;6;0;false;false;0;0;0;;; -88006;1;0;false;false;;;;;; -88007;4;0;false;false;0;0;0;;; -88011;1;0;false;false;;;;;; -88012;1;0;false;false;0;0;0;;; -88013;1;0;false;false;;;;;; -88014;27;0;false;false;0;0;0;;; -88041;4;0;false;false;;;;;; -88045;66;0;false;false;63;127;95;;; -88111;2;0;false;false;;;;;; -88113;20;0;false;false;63;127;95;;; -88133;2;0;false;false;;;;;; -88135;2;1;false;false;127;0;85;;; -88137;1;0;false;false;;;;;; -88138;10;0;false;false;0;0;0;;; -88148;1;0;false;false;;;;;; -88149;1;0;false;false;0;0;0;;; -88150;1;0;false;false;;;;;; -88151;10;0;false;false;0;0;0;;; -88161;1;0;false;false;;;;;; -88162;1;0;false;false;0;0;0;;; -88163;1;0;false;false;;;;;; -88164;14;0;false;false;0;0;0;;; -88178;1;0;false;false;;;;;; -88179;1;0;false;false;0;0;0;;; -88180;5;0;false;false;;;;;; -88185;12;0;false;false;0;0;0;;; -88197;4;0;false;false;;;;;; -88201;1;0;false;false;0;0;0;;; -88202;4;0;false;false;;;;;; -88206;10;0;false;false;0;0;0;;; -88216;1;0;false;false;;;;;; -88217;1;0;false;false;0;0;0;;; -88218;1;0;false;false;;;;;; -88219;3;1;false;false;127;0;85;;; -88222;1;0;false;false;;;;;; -88223;7;0;false;false;0;0;0;;; -88230;3;1;false;false;127;0;85;;; -88233;1;0;false;false;;;;;; -88234;4;1;false;false;127;0;85;;; -88238;2;0;false;false;0;0;0;;; -88240;1;0;false;false;;;;;; -88241;7;0;false;false;0;0;0;;; -88248;3;0;false;false;;;;;; -88251;1;0;false;false;0;0;0;;; -88252;3;0;false;false;;;;;; -88255;4;1;false;false;127;0;85;;; -88259;1;0;false;false;;;;;; -88260;1;0;false;false;0;0;0;;; -88261;4;0;false;false;;;;;; -88265;10;0;false;false;0;0;0;;; -88275;1;0;false;false;;;;;; -88276;1;0;false;false;0;0;0;;; -88277;1;0;false;false;;;;;; -88278;3;1;false;false;127;0;85;;; -88281;1;0;false;false;;;;;; -88282;7;0;false;false;0;0;0;;; -88289;3;1;false;false;127;0;85;;; -88292;1;0;false;false;;;;;; -88293;4;1;false;false;127;0;85;;; -88297;2;0;false;false;0;0;0;;; -88299;1;0;false;false;;;;;; -88300;7;0;false;false;0;0;0;;; -88307;3;0;false;false;;;;;; -88310;1;0;false;false;0;0;0;;; -88311;3;0;false;false;;;;;; -88314;2;1;false;false;127;0;85;;; -88316;1;0;false;false;;;;;; -88317;11;0;false;false;0;0;0;;; -88328;1;0;false;false;;;;;; -88329;2;0;false;false;0;0;0;;; -88331;1;0;false;false;;;;;; -88332;4;1;false;false;127;0;85;;; -88336;1;0;false;false;0;0;0;;; -88337;1;0;false;false;;;;;; -88338;1;0;false;false;0;0;0;;; -88339;4;0;false;false;;;;;; -88343;20;0;false;false;0;0;0;;; -88363;3;0;false;false;;;;;; -88366;1;0;false;false;0;0;0;;; -88367;2;0;false;false;;;;;; -88369;1;0;false;false;0;0;0;;; -88370;2;0;false;false;;;;;; -88372;3;0;false;false;63;95;191;;; -88375;3;0;false;false;;;;;; -88378;1;0;false;false;63;95;191;;; -88379;1;0;false;false;;;;;; -88380;5;0;false;false;63;95;191;;; -88385;1;0;false;false;;;;;; -88386;3;0;false;false;63;95;191;;; -88389;1;0;false;false;;;;;; -88390;5;0;false;false;63;95;191;;; -88395;1;0;false;false;;;;;; -88396;5;0;false;false;63;95;191;;; -88401;1;0;false;false;;;;;; -88402;3;0;false;false;63;95;191;;; -88405;1;0;false;false;;;;;; -88406;4;0;false;false;63;95;191;;; -88410;1;0;false;false;;;;;; -88411;9;0;false;false;63;95;191;;; -88420;1;0;false;false;;;;;; -88421;2;0;false;false;63;95;191;;; -88423;1;0;false;false;;;;;; -88424;3;0;false;false;63;95;191;;; -88427;1;0;false;false;;;;;; -88428;6;0;false;false;63;95;191;;; -88434;1;0;false;false;;;;;; -88435;8;0;false;false;63;95;191;;; -88443;3;0;false;false;;;;;; -88446;2;0;false;false;63;95;191;;; -88448;2;0;false;false;;;;;; -88450;4;1;false;false;127;0;85;;; -88454;1;0;false;false;;;;;; -88455;14;0;false;false;0;0;0;;; -88469;1;0;false;false;;;;;; -88470;1;0;false;false;0;0;0;;; -88471;3;0;false;false;;;;;; -88474;63;0;false;false;63;127;95;;; -88537;1;0;false;false;;;;;; -88538;27;0;false;false;63;127;95;;; -88565;1;0;false;false;;;;;; -88566;2;1;false;false;127;0;85;;; -88568;1;0;false;false;;;;;; -88569;16;0;false;false;0;0;0;;; -88585;1;0;false;false;;;;;; -88586;1;0;false;false;0;0;0;;; -88587;4;0;false;false;;;;;; -88591;12;0;false;false;0;0;0;;; -88603;3;0;false;false;;;;;; -88606;1;0;false;false;0;0;0;;; -88607;3;0;false;false;;;;;; -88610;4;1;false;false;127;0;85;;; -88614;1;0;false;false;;;;;; -88615;1;0;false;false;0;0;0;;; -88616;4;0;false;false;;;;;; -88620;3;1;false;false;127;0;85;;; -88623;1;0;false;false;;;;;; -88624;6;0;false;false;0;0;0;;; -88630;1;0;false;false;;;;;; -88631;1;0;false;false;0;0;0;;; -88632;1;0;false;false;;;;;; -88633;23;0;false;false;0;0;0;;; -88656;6;0;false;false;;;;;; -88662;2;1;false;false;127;0;85;;; -88664;1;0;false;false;;;;;; -88665;12;0;false;false;0;0;0;;; -88677;1;0;false;false;;;;;; -88678;1;0;false;false;0;0;0;;; -88679;1;0;false;false;;;;;; -88680;7;0;false;false;0;0;0;;; -88687;1;0;false;false;;;;;; -88688;1;0;false;false;0;0;0;;; -88689;5;0;false;false;;;;;; -88694;11;0;false;false;0;0;0;;; -88705;1;0;false;false;;;;;; -88706;1;0;false;false;0;0;0;;; -88707;1;0;false;false;;;;;; -88708;7;0;false;false;0;0;0;;; -88715;5;0;false;false;;;;;; -88720;12;0;false;false;0;0;0;;; -88732;4;0;false;false;;;;;; -88736;1;0;false;false;0;0;0;;; -88737;3;0;false;false;;;;;; -88740;1;0;false;false;0;0;0;;; -88741;2;0;false;false;;;;;; -88743;1;0;false;false;0;0;0;;; -88744;2;0;false;false;;;;;; -88746;3;0;false;false;63;95;191;;; -88749;3;0;false;false;;;;;; -88752;1;0;false;false;63;95;191;;; -88753;1;0;false;false;;;;;; -88754;5;0;false;false;63;95;191;;; -88759;1;0;false;false;;;;;; -88760;3;0;false;false;63;95;191;;; -88763;1;0;false;false;;;;;; -88764;5;0;false;false;63;95;191;;; -88769;1;0;false;false;;;;;; -88770;2;0;false;false;63;95;191;;; -88772;1;0;false;false;;;;;; -88773;5;0;false;false;63;95;191;;; -88778;1;0;false;false;;;;;; -88779;2;0;false;false;63;95;191;;; -88781;1;0;false;false;;;;;; -88782;3;0;false;false;63;95;191;;; -88785;1;0;false;false;;;;;; -88786;5;0;false;false;63;95;191;;; -88791;1;0;false;false;;;;;; -88792;9;0;false;false;63;95;191;;; -88801;1;0;false;false;;;;;; -88802;2;0;false;false;63;95;191;;; -88804;1;0;false;false;;;;;; -88805;3;0;false;false;63;95;191;;; -88808;1;0;false;false;;;;;; -88809;6;0;false;false;63;95;191;;; -88815;1;0;false;false;;;;;; -88816;8;0;false;false;63;95;191;;; -88824;3;0;false;false;;;;;; -88827;2;0;false;false;63;95;191;;; -88829;2;0;false;false;;;;;; -88831;4;1;false;false;127;0;85;;; -88835;1;0;false;false;;;;;; -88836;16;0;false;false;0;0;0;;; -88852;1;0;false;false;;;;;; -88853;1;0;false;false;0;0;0;;; -88854;3;0;false;false;;;;;; -88857;2;1;false;false;127;0;85;;; -88859;1;0;false;false;;;;;; -88860;12;0;false;false;0;0;0;;; -88872;1;0;false;false;;;;;; -88873;1;0;false;false;0;0;0;;; -88874;1;0;false;false;;;;;; -88875;2;0;false;false;0;0;0;;; -88877;1;0;false;false;;;;;; -88878;1;0;false;false;0;0;0;;; -88879;4;0;false;false;;;;;; -88883;11;0;false;false;0;0;0;;; -88894;1;0;false;false;;;;;; -88895;1;0;false;false;0;0;0;;; -88896;1;0;false;false;;;;;; -88897;2;0;false;false;0;0;0;;; -88899;4;0;false;false;;;;;; -88903;12;0;false;false;0;0;0;;; -88915;3;0;false;false;;;;;; -88918;1;0;false;false;0;0;0;;; -88919;2;0;false;false;;;;;; -88921;1;0;false;false;0;0;0;;; -88922;2;0;false;false;;;;;; -88924;3;0;false;false;63;95;191;;; -88927;3;0;false;false;;;;;; -88930;1;0;false;false;63;95;191;;; -88931;1;0;false;false;;;;;; -88932;5;0;false;false;63;95;191;;; -88937;1;0;false;false;;;;;; -88938;3;0;false;false;63;95;191;;; -88941;1;0;false;false;;;;;; -88942;5;0;false;false;63;95;191;;; -88947;1;0;false;false;;;;;; -88948;2;0;false;false;63;95;191;;; -88950;1;0;false;false;;;;;; -88951;3;0;false;false;63;95;191;;; -88954;1;0;false;false;;;;;; -88955;5;0;false;false;63;95;191;;; -88960;1;0;false;false;;;;;; -88961;2;0;false;false;63;95;191;;; -88963;1;0;false;false;;;;;; -88964;3;0;false;false;63;95;191;;; -88967;1;0;false;false;;;;;; -88968;9;0;false;false;63;95;191;;; -88977;1;0;false;false;;;;;; -88978;2;0;false;false;63;95;191;;; -88980;1;0;false;false;;;;;; -88981;1;0;false;false;63;95;191;;; -88982;1;0;false;false;;;;;; -88983;9;0;false;false;63;95;191;;; -88992;1;0;false;false;;;;;; -88993;7;0;false;false;63;95;191;;; -89000;3;0;false;false;;;;;; -89003;1;0;false;false;63;95;191;;; -89004;1;0;false;false;;;;;; -89005;10;0;false;false;63;95;191;;; -89015;1;0;false;false;;;;;; -89016;2;0;false;false;63;95;191;;; -89018;1;0;false;false;;;;;; -89019;2;0;false;false;63;95;191;;; -89021;1;0;false;false;;;;;; -89022;9;0;false;false;63;95;191;;; -89031;1;0;false;false;;;;;; -89032;6;0;false;false;63;95;191;;; -89038;1;0;false;false;;;;;; -89039;4;0;false;false;63;95;191;;; -89043;1;0;false;false;;;;;; -89044;3;0;false;false;63;95;191;;; -89047;1;0;false;false;;;;;; -89048;6;0;false;false;63;95;191;;; -89054;1;0;false;false;;;;;; -89055;9;0;false;false;63;95;191;;; -89064;1;0;false;false;;;;;; -89065;2;0;false;false;63;95;191;;; -89067;1;0;false;false;;;;;; -89068;3;0;false;false;63;95;191;;; -89071;4;0;false;false;;;;;; -89075;1;0;false;false;63;95;191;;; -89076;1;0;false;false;;;;;; -89077;6;0;false;false;63;95;191;;; -89083;1;0;false;false;;;;;; -89084;9;0;false;false;63;95;191;;; -89093;1;0;false;false;;;;;; -89094;6;0;false;false;63;95;191;;; -89100;3;0;false;false;;;;;; -89103;1;0;false;false;63;95;191;;; -89104;1;0;false;false;;;;;; -89105;3;0;false;false;127;127;159;;; -89108;3;0;false;false;;;;;; -89111;1;0;false;false;63;95;191;;; -89112;3;0;false;false;;;;;; -89115;1;0;false;false;63;95;191;;; -89116;1;0;false;false;;;;;; -89117;5;1;false;false;127;159;191;;; -89122;26;0;false;false;63;95;191;;; -89148;3;0;false;false;;;;;; -89151;2;0;false;false;63;95;191;;; -89153;2;0;false;false;;;;;; -89155;4;1;false;false;127;0;85;;; -89159;1;0;false;false;;;;;; -89160;18;0;false;false;0;0;0;;; -89178;1;0;false;false;;;;;; -89179;1;0;false;false;0;0;0;;; -89180;3;0;false;false;;;;;; -89183;9;0;false;false;0;0;0;;; -89192;1;0;false;false;;;;;; -89193;1;0;false;false;0;0;0;;; -89194;1;0;false;false;;;;;; -89195;5;1;false;false;127;0;85;;; -89200;1;0;false;false;0;0;0;;; -89201;3;0;false;false;;;;;; -89204;2;1;false;false;127;0;85;;; -89206;1;0;false;false;;;;;; -89207;12;0;false;false;0;0;0;;; -89219;1;0;false;false;;;;;; -89220;1;0;false;false;0;0;0;;; -89221;1;0;false;false;;;;;; -89222;11;0;false;false;0;0;0;;; -89233;1;0;false;false;;;;;; -89234;1;0;false;false;0;0;0;;; -89235;1;0;false;false;;;;;; -89236;2;0;false;false;0;0;0;;; -89238;1;0;false;false;;;;;; -89239;1;0;false;false;0;0;0;;; -89240;4;0;false;false;;;;;; -89244;3;1;false;false;127;0;85;;; -89247;1;0;false;false;;;;;; -89248;10;0;false;false;0;0;0;;; -89258;8;0;false;false;;;;;; -89266;11;0;false;false;0;0;0;;; -89277;1;0;false;false;;;;;; -89278;1;0;false;false;0;0;0;;; -89279;1;0;false;false;;;;;; -89280;12;0;false;false;0;0;0;;; -89292;4;0;false;false;;;;;; -89296;9;0;false;false;0;0;0;;; -89305;1;0;false;false;;;;;; -89306;1;0;false;false;0;0;0;;; -89307;1;0;false;false;;;;;; -89308;15;0;false;false;0;0;0;;; -89323;4;0;false;false;;;;;; -89327;21;0;false;false;0;0;0;;; -89348;3;0;false;false;;;;;; -89351;1;0;false;false;0;0;0;;; -89352;3;0;false;false;;;;;; -89355;4;1;false;false;127;0;85;;; -89359;1;0;false;false;;;;;; -89360;1;0;false;false;0;0;0;;; -89361;4;0;false;false;;;;;; -89365;28;0;false;false;0;0;0;;; -89393;3;0;false;false;;;;;; -89396;1;0;false;false;0;0;0;;; -89397;2;0;false;false;;;;;; -89399;1;0;false;false;0;0;0;;; -89400;2;0;false;false;;;;;; -89402;3;0;false;false;63;95;191;;; -89405;3;0;false;false;;;;;; -89408;1;0;false;false;63;95;191;;; -89409;1;0;false;false;;;;;; -89410;5;0;false;false;63;95;191;;; -89415;1;0;false;false;;;;;; -89416;3;0;false;false;63;95;191;;; -89419;1;0;false;false;;;;;; -89420;5;0;false;false;63;95;191;;; -89425;1;0;false;false;;;;;; -89426;2;0;false;false;63;95;191;;; -89428;1;0;false;false;;;;;; -89429;3;0;false;false;63;95;191;;; -89432;1;0;false;false;;;;;; -89433;3;0;false;false;63;95;191;;; -89436;1;0;false;false;;;;;; -89437;2;0;false;false;63;95;191;;; -89439;1;0;false;false;;;;;; -89440;3;0;false;false;63;95;191;;; -89443;1;0;false;false;;;;;; -89444;9;0;false;false;63;95;191;;; -89453;1;0;false;false;;;;;; -89454;2;0;false;false;63;95;191;;; -89456;1;0;false;false;;;;;; -89457;1;0;false;false;63;95;191;;; -89458;1;0;false;false;;;;;; -89459;9;0;false;false;63;95;191;;; -89468;1;0;false;false;;;;;; -89469;7;0;false;false;63;95;191;;; -89476;3;0;false;false;;;;;; -89479;1;0;false;false;63;95;191;;; -89480;1;0;false;false;;;;;; -89481;10;0;false;false;63;95;191;;; -89491;1;0;false;false;;;;;; -89492;2;0;false;false;63;95;191;;; -89494;1;0;false;false;;;;;; -89495;2;0;false;false;63;95;191;;; -89497;1;0;false;false;;;;;; -89498;9;0;false;false;63;95;191;;; -89507;1;0;false;false;;;;;; -89508;6;0;false;false;63;95;191;;; -89514;1;0;false;false;;;;;; -89515;4;0;false;false;63;95;191;;; -89519;1;0;false;false;;;;;; -89520;3;0;false;false;63;95;191;;; -89523;1;0;false;false;;;;;; -89524;6;0;false;false;63;95;191;;; -89530;1;0;false;false;;;;;; -89531;9;0;false;false;63;95;191;;; -89540;1;0;false;false;;;;;; -89541;2;0;false;false;63;95;191;;; -89543;1;0;false;false;;;;;; -89544;3;0;false;false;63;95;191;;; -89547;4;0;false;false;;;;;; -89551;1;0;false;false;63;95;191;;; -89552;1;0;false;false;;;;;; -89553;6;0;false;false;63;95;191;;; -89559;1;0;false;false;;;;;; -89560;9;0;false;false;63;95;191;;; -89569;1;0;false;false;;;;;; -89570;6;0;false;false;63;95;191;;; -89576;3;0;false;false;;;;;; -89579;1;0;false;false;63;95;191;;; -89580;1;0;false;false;;;;;; -89581;3;0;false;false;127;127;159;;; -89584;3;0;false;false;;;;;; -89587;1;0;false;false;63;95;191;;; -89588;3;0;false;false;;;;;; -89591;1;0;false;false;63;95;191;;; -89592;1;0;false;false;;;;;; -89593;5;1;false;false;127;159;191;;; -89598;22;0;false;false;63;95;191;;; -89620;3;0;false;false;;;;;; -89623;2;0;false;false;63;95;191;;; -89625;2;0;false;false;;;;;; -89627;4;1;false;false;127;0;85;;; -89631;1;0;false;false;;;;;; -89632;14;0;false;false;0;0;0;;; -89646;1;0;false;false;;;;;; -89647;1;0;false;false;0;0;0;;; -89648;3;0;false;false;;;;;; -89651;9;0;false;false;0;0;0;;; -89660;1;0;false;false;;;;;; -89661;1;0;false;false;0;0;0;;; -89662;1;0;false;false;;;;;; -89663;4;1;false;false;127;0;85;;; -89667;1;0;false;false;0;0;0;;; -89668;3;0;false;false;;;;;; -89671;2;1;false;false;127;0;85;;; -89673;1;0;false;false;;;;;; -89674;12;0;false;false;0;0;0;;; -89686;1;0;false;false;;;;;; -89687;1;0;false;false;0;0;0;;; -89688;1;0;false;false;;;;;; -89689;11;0;false;false;0;0;0;;; -89700;1;0;false;false;;;;;; -89701;1;0;false;false;0;0;0;;; -89702;1;0;false;false;;;;;; -89703;2;0;false;false;0;0;0;;; -89705;1;0;false;false;;;;;; -89706;1;0;false;false;0;0;0;;; -89707;4;0;false;false;;;;;; -89711;3;1;false;false;127;0;85;;; -89714;1;0;false;false;;;;;; -89715;10;0;false;false;0;0;0;;; -89725;6;0;false;false;;;;;; -89731;11;0;false;false;0;0;0;;; -89742;1;0;false;false;;;;;; -89743;1;0;false;false;0;0;0;;; -89744;1;0;false;false;;;;;; -89745;12;0;false;false;0;0;0;;; -89757;4;0;false;false;;;;;; -89761;9;0;false;false;0;0;0;;; -89770;1;0;false;false;;;;;; -89771;1;0;false;false;0;0;0;;; -89772;1;0;false;false;;;;;; -89773;15;0;false;false;0;0;0;;; -89788;4;0;false;false;;;;;; -89792;21;0;false;false;0;0;0;;; -89813;3;0;false;false;;;;;; -89816;1;0;false;false;0;0;0;;; -89817;3;0;false;false;;;;;; -89820;4;1;false;false;127;0;85;;; -89824;1;0;false;false;;;;;; -89825;1;0;false;false;0;0;0;;; -89826;4;0;false;false;;;;;; -89830;24;0;false;false;0;0;0;;; -89854;3;0;false;false;;;;;; -89857;1;0;false;false;0;0;0;;; -89858;2;0;false;false;;;;;; -89860;1;0;false;false;0;0;0;;; -89861;2;0;false;false;;;;;; -89863;3;0;false;false;63;95;191;;; -89866;3;0;false;false;;;;;; -89869;1;0;false;false;63;95;191;;; -89870;1;0;false;false;;;;;; -89871;7;0;false;false;63;95;191;;; -89878;1;0;false;false;;;;;; -89879;3;0;false;false;63;95;191;;; -89882;1;0;false;false;;;;;; -89883;4;0;false;false;63;95;191;;; -89887;1;0;false;false;;;;;; -89888;10;0;false;false;63;95;191;;; -89898;1;0;false;false;;;;;; -89899;6;0;false;false;63;95;191;;; -89905;1;0;false;false;;;;;; -89906;3;0;false;false;63;95;191;;; -89909;1;0;false;false;;;;;; -89910;8;0;false;false;63;95;191;;; -89918;1;0;false;false;;;;;; -89919;4;0;false;false;63;95;191;;; -89923;1;0;false;false;;;;;; -89924;2;0;false;false;63;95;191;;; -89926;1;0;false;false;;;;;; -89927;4;0;false;false;63;95;191;;; -89931;3;0;false;false;;;;;; -89934;2;0;false;false;63;95;191;;; -89936;2;0;false;false;;;;;; -89938;4;1;false;false;127;0;85;;; -89942;1;0;false;false;;;;;; -89943;10;0;false;false;0;0;0;;; -89953;1;0;false;false;;;;;; -89954;1;0;false;false;0;0;0;;; -89955;3;0;false;false;;;;;; -89958;5;0;false;false;0;0;0;;; -89963;1;0;false;false;;;;;; -89964;5;0;false;false;0;0;0;;; -89969;1;0;false;false;;;;;; -89970;1;0;false;false;0;0;0;;; -89971;1;0;false;false;;;;;; -89972;3;1;false;false;127;0;85;;; -89975;1;0;false;false;;;;;; -89976;8;0;false;false;0;0;0;;; -89984;3;0;false;false;;;;;; -89987;10;0;false;false;0;0;0;;; -89997;1;0;false;false;;;;;; -89998;1;0;false;false;0;0;0;;; -89999;1;0;false;false;;;;;; -90000;2;0;false;false;42;0;255;;; -90002;1;0;false;false;0;0;0;;; -90003;3;0;false;false;;;;;; -90006;2;1;false;false;127;0;85;;; -90008;1;0;false;false;;;;;; -90009;12;0;false;false;0;0;0;;; -90021;1;0;false;false;;;;;; -90022;2;0;false;false;0;0;0;;; -90024;1;0;false;false;;;;;; -90025;12;0;false;false;0;0;0;;; -90037;1;0;false;false;;;;;; -90038;1;0;false;false;0;0;0;;; -90039;4;0;false;false;;;;;; -90043;11;0;false;false;0;0;0;;; -90054;1;0;false;false;;;;;; -90055;1;0;false;false;0;0;0;;; -90056;1;0;false;false;;;;;; -90057;12;0;false;false;0;0;0;;; -90069;4;0;false;false;;;;;; -90073;9;0;false;false;0;0;0;;; -90082;1;0;false;false;;;;;; -90083;1;0;false;false;0;0;0;;; -90084;1;0;false;false;;;;;; -90085;12;0;false;false;0;0;0;;; -90097;4;0;false;false;;;;;; -90101;20;0;false;false;0;0;0;;; -90121;3;0;false;false;;;;;; -90124;1;0;false;false;0;0;0;;; -90125;3;0;false;false;;;;;; -90128;4;1;false;false;127;0;85;;; -90132;3;0;false;false;;;;;; -90135;2;1;false;false;127;0;85;;; -90137;1;0;false;false;;;;;; -90138;12;0;false;false;0;0;0;;; -90150;1;0;false;false;;;;;; -90151;1;0;false;false;0;0;0;;; -90152;1;0;false;false;;;;;; -90153;23;0;false;false;0;0;0;;; -90176;1;0;false;false;;;;;; -90177;1;0;false;false;0;0;0;;; -90178;4;0;false;false;;;;;; -90182;3;1;false;false;127;0;85;;; -90185;1;0;false;false;;;;;; -90186;4;0;false;false;0;0;0;;; -90190;1;0;false;false;;;;;; -90191;1;0;false;false;0;0;0;;; -90192;1;0;false;false;;;;;; -90193;37;0;false;false;0;0;0;;; -90230;4;0;false;false;;;;;; -90234;3;1;false;false;127;0;85;;; -90237;1;0;false;false;;;;;; -90238;10;0;false;false;0;0;0;;; -90248;1;0;false;false;;;;;; -90249;1;0;false;false;0;0;0;;; -90250;1;0;false;false;;;;;; -90251;30;0;false;false;0;0;0;;; -90281;4;0;false;false;;;;;; -90285;3;1;false;false;127;0;85;;; -90288;1;0;false;false;;;;;; -90289;10;0;false;false;0;0;0;;; -90299;1;0;false;false;;;;;; -90300;1;0;false;false;0;0;0;;; -90301;1;0;false;false;;;;;; -90302;31;0;false;false;0;0;0;;; -90333;10;0;false;false;;;;;; -90343;2;1;false;false;127;0;85;;; -90345;1;0;false;false;;;;;; -90346;12;0;false;false;0;0;0;;; -90358;1;0;false;false;;;;;; -90359;2;0;false;false;0;0;0;;; -90361;1;0;false;false;;;;;; -90362;10;0;false;false;0;0;0;;; -90372;1;0;false;false;;;;;; -90373;1;0;false;false;0;0;0;;; -90374;1;0;false;false;;;;;; -90375;11;0;false;false;0;0;0;;; -90386;1;0;false;false;;;;;; -90387;1;0;false;false;0;0;0;;; -90388;5;0;false;false;;;;;; -90393;11;0;false;false;0;0;0;;; -90404;1;0;false;false;;;;;; -90405;1;0;false;false;0;0;0;;; -90406;1;0;false;false;;;;;; -90407;12;0;false;false;0;0;0;;; -90419;5;0;false;false;;;;;; -90424;9;0;false;false;0;0;0;;; -90433;1;0;false;false;;;;;; -90434;1;0;false;false;0;0;0;;; -90435;1;0;false;false;;;;;; -90436;28;0;false;false;0;0;0;;; -90464;1;0;false;false;;;;;; -90465;1;0;false;false;0;0;0;;; -90466;1;0;false;false;;;;;; -90467;3;0;false;false;0;0;0;;; -90470;4;0;false;false;;;;;; -90474;1;0;false;false;0;0;0;;; -90475;4;0;false;false;;;;;; -90479;4;1;false;false;127;0;85;;; -90483;1;0;false;false;;;;;; -90484;1;0;false;false;0;0;0;;; -90485;5;0;false;false;;;;;; -90490;11;0;false;false;0;0;0;;; -90501;1;0;false;false;;;;;; -90502;1;0;false;false;0;0;0;;; -90503;1;0;false;false;;;;;; -90504;12;0;false;false;0;0;0;;; -90516;5;0;false;false;;;;;; -90521;9;0;false;false;0;0;0;;; -90530;1;0;false;false;;;;;; -90531;1;0;false;false;0;0;0;;; -90532;1;0;false;false;;;;;; -90533;27;0;false;false;0;0;0;;; -90560;1;0;false;false;;;;;; -90561;6;0;false;false;0;0;0;;; -90567;4;0;false;false;;;;;; -90571;1;0;false;false;0;0;0;;; -90572;4;0;false;false;;;;;; -90576;20;0;false;false;0;0;0;;; -90596;3;0;false;false;;;;;; -90599;1;0;false;false;0;0;0;;; -90600;2;0;false;false;;;;;; -90602;1;0;false;false;0;0;0;;; -90603;2;0;false;false;;;;;; -90605;3;0;false;false;63;95;191;;; -90608;3;0;false;false;;;;;; -90611;1;0;false;false;63;95;191;;; -90612;1;0;false;false;;;;;; -90613;7;0;false;false;63;95;191;;; -90620;1;0;false;false;;;;;; -90621;3;0;false;false;63;95;191;;; -90624;1;0;false;false;;;;;; -90625;4;0;false;false;63;95;191;;; -90629;1;0;false;false;;;;;; -90630;5;0;false;false;63;95;191;;; -90635;3;0;false;false;;;;;; -90638;2;0;false;false;63;95;191;;; -90640;2;0;false;false;;;;;; -90642;4;1;false;false;127;0;85;;; -90646;1;0;false;false;;;;;; -90647;18;0;false;false;0;0;0;;; -90665;1;0;false;false;;;;;; -90666;1;0;false;false;0;0;0;;; -90667;3;0;false;false;;;;;; -90670;2;1;false;false;127;0;85;;; -90672;1;0;false;false;;;;;; -90673;12;0;false;false;0;0;0;;; -90685;1;0;false;false;;;;;; -90686;2;0;false;false;0;0;0;;; -90688;1;0;false;false;;;;;; -90689;12;0;false;false;0;0;0;;; -90701;1;0;false;false;;;;;; -90702;1;0;false;false;0;0;0;;; -90703;4;0;false;false;;;;;; -90707;44;0;false;false;63;127;95;;; -90751;2;0;false;false;;;;;; -90753;36;0;false;false;63;127;95;;; -90789;2;0;false;false;;;;;; -90791;11;0;false;false;0;0;0;;; -90802;3;0;false;false;;;;;; -90805;1;0;false;false;0;0;0;;; -90806;1;0;false;false;;;;;; -90807;4;1;false;false;127;0;85;;; -90811;1;0;false;false;;;;;; -90812;1;0;false;false;0;0;0;;; -90813;4;0;false;false;;;;;; -90817;5;0;false;false;0;0;0;;; -90822;1;0;false;false;;;;;; -90823;5;0;false;false;0;0;0;;; -90828;1;0;false;false;;;;;; -90829;1;0;false;false;0;0;0;;; -90830;1;0;false;false;;;;;; -90831;3;1;false;false;127;0;85;;; -90834;1;0;false;false;;;;;; -90835;8;0;false;false;0;0;0;;; -90843;4;0;false;false;;;;;; -90847;10;0;false;false;0;0;0;;; -90857;1;0;false;false;;;;;; -90858;1;0;false;false;0;0;0;;; -90859;1;0;false;false;;;;;; -90860;2;0;false;false;42;0;255;;; -90862;1;0;false;false;0;0;0;;; -90863;4;0;false;false;;;;;; -90867;11;0;false;false;0;0;0;;; -90878;1;0;false;false;;;;;; -90879;1;0;false;false;0;0;0;;; -90880;1;0;false;false;;;;;; -90881;12;0;false;false;0;0;0;;; -90893;4;0;false;false;;;;;; -90897;9;0;false;false;0;0;0;;; -90906;1;0;false;false;;;;;; -90907;1;0;false;false;0;0;0;;; -90908;1;0;false;false;;;;;; -90909;24;0;false;false;0;0;0;;; -90933;4;0;false;false;;;;;; -90937;20;0;false;false;0;0;0;;; -90957;3;0;false;false;;;;;; -90960;1;0;false;false;0;0;0;;; -90961;2;0;false;false;;;;;; -90963;1;0;false;false;0;0;0;;; -90964;2;0;false;false;;;;;; -90966;3;0;false;false;63;95;191;;; -90969;3;0;false;false;;;;;; -90972;1;0;false;false;63;95;191;;; -90973;1;0;false;false;;;;;; -90974;7;0;false;false;63;95;191;;; -90981;1;0;false;false;;;;;; -90982;3;0;false;false;63;95;191;;; -90985;1;0;false;false;;;;;; -90986;8;0;false;false;63;95;191;;; -90994;1;0;false;false;;;;;; -90995;5;0;false;false;63;95;191;;; -91000;3;0;false;false;;;;;; -91003;2;0;false;false;63;95;191;;; -91005;2;0;false;false;;;;;; -91007;4;1;false;false;127;0;85;;; -91011;1;0;false;false;;;;;; -91012;22;0;false;false;0;0;0;;; -91034;1;0;false;false;;;;;; -91035;1;0;false;false;0;0;0;;; -91036;3;0;false;false;;;;;; -91039;2;1;false;false;127;0;85;;; -91041;1;0;false;false;;;;;; -91042;12;0;false;false;0;0;0;;; -91054;1;0;false;false;;;;;; -91055;2;0;false;false;0;0;0;;; -91057;1;0;false;false;;;;;; -91058;12;0;false;false;0;0;0;;; -91070;1;0;false;false;;;;;; -91071;1;0;false;false;0;0;0;;; -91072;4;0;false;false;;;;;; -91076;40;0;false;false;63;127;95;;; -91116;2;0;false;false;;;;;; -91118;39;0;false;false;63;127;95;;; -91157;2;0;false;false;;;;;; -91159;14;0;false;false;0;0;0;;; -91173;3;0;false;false;;;;;; -91176;1;0;false;false;0;0;0;;; -91177;1;0;false;false;;;;;; -91178;4;1;false;false;127;0;85;;; -91182;1;0;false;false;;;;;; -91183;1;0;false;false;0;0;0;;; -91184;4;0;false;false;;;;;; -91188;5;0;false;false;0;0;0;;; -91193;1;0;false;false;;;;;; -91194;5;0;false;false;0;0;0;;; -91199;1;0;false;false;;;;;; -91200;1;0;false;false;0;0;0;;; -91201;1;0;false;false;;;;;; -91202;3;1;false;false;127;0;85;;; -91205;1;0;false;false;;;;;; -91206;8;0;false;false;0;0;0;;; -91214;4;0;false;false;;;;;; -91218;10;0;false;false;0;0;0;;; -91228;1;0;false;false;;;;;; -91229;1;0;false;false;0;0;0;;; -91230;1;0;false;false;;;;;; -91231;2;0;false;false;42;0;255;;; -91233;1;0;false;false;0;0;0;;; -91234;4;0;false;false;;;;;; -91238;11;0;false;false;0;0;0;;; -91249;1;0;false;false;;;;;; -91250;1;0;false;false;0;0;0;;; -91251;1;0;false;false;;;;;; -91252;26;0;false;false;0;0;0;;; -91278;4;0;false;false;;;;;; -91282;9;0;false;false;0;0;0;;; -91291;1;0;false;false;;;;;; -91292;1;0;false;false;0;0;0;;; -91293;1;0;false;false;;;;;; -91294;12;0;false;false;0;0;0;;; -91306;4;0;false;false;;;;;; -91310;20;0;false;false;0;0;0;;; -91330;3;0;false;false;;;;;; -91333;1;0;false;false;0;0;0;;; -91334;2;0;false;false;;;;;; -91336;1;0;false;false;0;0;0;;; -91337;2;0;false;false;;;;;; -91339;3;0;false;false;63;95;191;;; -91342;3;0;false;false;;;;;; -91345;1;0;false;false;63;95;191;;; -91346;1;0;false;false;;;;;; -91347;5;0;false;false;63;95;191;;; -91352;1;0;false;false;;;;;; -91353;3;0;false;false;63;95;191;;; -91356;1;0;false;false;;;;;; -91357;5;0;false;false;63;95;191;;; -91362;1;0;false;false;;;;;; -91363;3;0;false;false;63;95;191;;; -91366;1;0;false;false;;;;;; -91367;4;0;false;false;63;95;191;;; -91371;1;0;false;false;;;;;; -91372;4;0;false;false;63;95;191;;; -91376;1;0;false;false;;;;;; -91377;3;0;false;false;63;95;191;;; -91380;1;0;false;false;;;;;; -91381;2;0;false;false;63;95;191;;; -91383;1;0;false;false;;;;;; -91384;3;0;false;false;63;95;191;;; -91387;1;0;false;false;;;;;; -91388;4;0;false;false;63;95;191;;; -91392;1;0;false;false;;;;;; -91393;9;0;false;false;63;95;191;;; -91402;1;0;false;false;;;;;; -91403;6;0;false;false;63;95;191;;; -91409;1;0;false;false;;;;;; -91410;8;0;false;false;63;95;191;;; -91418;4;0;false;false;;;;;; -91422;1;0;false;false;63;95;191;;; -91423;1;0;false;false;;;;;; -91424;2;0;false;false;63;95;191;;; -91426;1;0;false;false;;;;;; -91427;3;0;false;false;63;95;191;;; -91430;1;0;false;false;;;;;; -91431;9;0;false;false;63;95;191;;; -91440;1;0;false;false;;;;;; -91441;2;0;false;false;63;95;191;;; -91443;1;0;false;false;;;;;; -91444;3;0;false;false;63;95;191;;; -91447;1;0;false;false;;;;;; -91448;5;0;false;false;63;95;191;;; -91453;1;0;false;false;;;;;; -91454;4;0;false;false;63;95;191;;; -91458;1;0;false;false;;;;;; -91459;3;0;false;false;63;95;191;;; -91462;1;0;false;false;;;;;; -91463;5;0;false;false;63;95;191;;; -91468;1;0;false;false;;;;;; -91469;2;0;false;false;63;95;191;;; -91471;1;0;false;false;;;;;; -91472;3;0;false;false;63;95;191;;; -91475;1;0;false;false;;;;;; -91476;3;0;false;false;63;95;191;;; -91479;1;0;false;false;;;;;; -91480;2;0;false;false;63;95;191;;; -91482;1;0;false;false;;;;;; -91483;3;0;false;false;63;95;191;;; -91486;1;0;false;false;;;;;; -91487;3;0;false;false;63;95;191;;; -91490;1;0;false;false;;;;;; -91491;4;0;false;false;63;95;191;;; -91495;4;0;false;false;;;;;; -91499;1;0;false;false;63;95;191;;; -91500;1;0;false;false;;;;;; -91501;2;0;false;false;63;95;191;;; -91503;1;0;false;false;;;;;; -91504;3;0;false;false;63;95;191;;; -91507;1;0;false;false;;;;;; -91508;3;0;false;false;63;95;191;;; -91511;1;0;false;false;;;;;; -91512;4;0;false;false;63;95;191;;; -91516;1;0;false;false;;;;;; -91517;2;0;false;false;63;95;191;;; -91519;1;0;false;false;;;;;; -91520;7;0;false;false;63;95;191;;; -91527;1;0;false;false;;;;;; -91528;4;0;false;false;63;95;191;;; -91532;1;0;false;false;;;;;; -91533;3;0;false;false;63;95;191;;; -91536;1;0;false;false;;;;;; -91537;9;0;false;false;63;95;191;;; -91546;1;0;false;false;;;;;; -91547;7;0;false;false;63;95;191;;; -91554;3;0;false;false;;;;;; -91557;1;0;false;false;63;95;191;;; -91558;4;0;false;false;;;;;; -91562;1;0;false;false;63;95;191;;; -91563;1;0;false;false;;;;;; -91564;8;1;false;false;127;159;191;;; -91572;5;0;false;false;63;95;191;;; -91577;1;0;false;false;;;;;; -91578;2;0;false;false;63;95;191;;; -91580;1;0;false;false;;;;;; -91581;3;0;false;false;63;95;191;;; -91584;1;0;false;false;;;;;; -91585;3;0;false;false;63;95;191;;; -91588;1;0;false;false;;;;;; -91589;4;0;false;false;63;95;191;;; -91593;1;0;false;false;;;;;; -91594;8;0;false;false;63;95;191;;; -91602;1;0;false;false;;;;;; -91603;2;0;false;false;63;95;191;;; -91605;1;0;false;false;;;;;; -91606;3;0;false;false;63;95;191;;; -91609;1;0;false;false;;;;;; -91610;5;0;false;false;63;95;191;;; -91615;1;0;false;false;;;;;; -91616;4;0;false;false;63;95;191;;; -91620;1;0;false;false;;;;;; -91621;2;0;false;false;63;95;191;;; -91623;1;0;false;false;;;;;; -91624;3;0;false;false;63;95;191;;; -91627;1;0;false;false;;;;;; -91628;8;0;false;false;63;95;191;;; -91636;3;0;false;false;;;;;; -91639;2;0;false;false;63;95;191;;; -91641;2;0;false;false;;;;;; -91643;3;1;false;false;127;0;85;;; -91646;1;0;false;false;;;;;; -91647;12;0;false;false;0;0;0;;; -91659;1;0;false;false;;;;;; -91660;1;0;false;false;0;0;0;;; -91661;3;0;false;false;;;;;; -91664;2;1;false;false;127;0;85;;; -91666;1;0;false;false;;;;;; -91667;16;0;false;false;0;0;0;;; -91683;1;0;false;false;;;;;; -91684;1;0;false;false;0;0;0;;; -91685;4;0;false;false;;;;;; -91689;6;1;false;false;127;0;85;;; -91695;1;0;false;false;;;;;; -91696;2;0;false;false;0;0;0;;; -91698;3;0;false;false;;;;;; -91701;1;0;false;false;0;0;0;;; -91702;3;0;false;false;;;;;; -91705;72;0;false;false;63;127;95;;; -91777;1;0;false;false;;;;;; -91778;16;0;false;false;63;127;95;;; -91794;1;0;false;false;;;;;; -91795;3;1;false;false;127;0;85;;; -91798;1;0;false;false;;;;;; -91799;9;0;false;false;0;0;0;;; -91808;1;0;false;false;;;;;; -91809;1;0;false;false;0;0;0;;; -91810;1;0;false;false;;;;;; -91811;15;0;false;false;0;0;0;;; -91826;4;0;false;false;;;;;; -91830;2;1;false;false;127;0;85;;; -91832;1;0;false;false;;;;;; -91833;10;0;false;false;0;0;0;;; -91843;1;0;false;false;;;;;; -91844;1;0;false;false;0;0;0;;; -91845;1;0;false;false;;;;;; -91846;22;0;false;false;0;0;0;;; -91868;1;0;false;false;;;;;; -91869;1;0;false;false;0;0;0;;; -91870;1;0;false;false;;;;;; -91871;2;0;false;false;0;0;0;;; -91873;1;0;false;false;;;;;; -91874;1;0;false;false;0;0;0;;; -91875;4;0;false;false;;;;;; -91879;12;0;false;false;0;0;0;;; -91891;4;0;false;false;;;;;; -91895;11;0;false;false;0;0;0;;; -91906;1;0;false;false;;;;;; -91907;1;0;false;false;0;0;0;;; -91908;1;0;false;false;;;;;; -91909;33;0;false;false;0;0;0;;; -91942;1;0;false;false;;;;;; -91943;11;0;false;false;0;0;0;;; -91954;3;0;false;false;;;;;; -91957;1;0;false;false;0;0;0;;; -91958;3;0;false;false;;;;;; -91961;6;1;false;false;127;0;85;;; -91967;1;0;false;false;;;;;; -91968;10;0;false;false;0;0;0;;; -91978;2;0;false;false;;;;;; -91980;1;0;false;false;0;0;0;;; -91981;2;0;false;false;;;;;; -91983;3;0;false;false;63;95;191;;; -91986;3;0;false;false;;;;;; -91989;1;0;false;false;63;95;191;;; -91990;1;0;false;false;;;;;; -91991;5;0;false;false;63;95;191;;; -91996;1;0;false;false;;;;;; -91997;3;0;false;false;63;95;191;;; -92000;1;0;false;false;;;;;; -92001;5;0;false;false;63;95;191;;; -92006;1;0;false;false;;;;;; -92007;2;0;false;false;63;95;191;;; -92009;1;0;false;false;;;;;; -92010;3;0;false;false;63;95;191;;; -92013;1;0;false;false;;;;;; -92014;3;0;false;false;63;95;191;;; -92017;1;0;false;false;;;;;; -92018;2;0;false;false;63;95;191;;; -92020;1;0;false;false;;;;;; -92021;3;0;false;false;63;95;191;;; -92024;1;0;false;false;;;;;; -92025;5;0;false;false;63;95;191;;; -92030;3;0;false;false;;;;;; -92033;2;0;false;false;63;95;191;;; -92035;2;0;false;false;;;;;; -92037;4;1;false;false;127;0;85;;; -92041;1;0;false;false;;;;;; -92042;11;0;false;false;0;0;0;;; -92053;1;0;false;false;;;;;; -92054;1;0;false;false;0;0;0;;; -92055;3;0;false;false;;;;;; -92058;3;1;false;false;127;0;85;;; -92061;1;0;false;false;;;;;; -92062;9;0;false;false;0;0;0;;; -92071;1;0;false;false;;;;;; -92072;1;0;false;false;0;0;0;;; -92073;1;0;false;false;;;;;; -92074;15;0;false;false;0;0;0;;; -92089;3;0;false;false;;;;;; -92092;3;1;false;false;127;0;85;;; -92095;1;0;false;false;;;;;; -92096;10;0;false;false;0;0;0;;; -92106;1;0;false;false;;;;;; -92107;1;0;false;false;0;0;0;;; -92108;1;0;false;false;;;;;; -92109;35;0;false;false;0;0;0;;; -92144;4;0;false;false;;;;;; -92148;3;1;false;false;127;0;85;;; -92151;1;0;false;false;;;;;; -92152;10;0;false;false;0;0;0;;; -92162;1;0;false;false;;;;;; -92163;1;0;false;false;0;0;0;;; -92164;1;0;false;false;;;;;; -92165;36;0;false;false;0;0;0;;; -92201;3;0;false;false;;;;;; -92204;3;1;false;false;127;0;85;;; -92207;1;0;false;false;;;;;; -92208;13;0;false;false;0;0;0;;; -92221;1;0;false;false;;;;;; -92222;1;0;false;false;0;0;0;;; -92223;1;0;false;false;;;;;; -92224;10;0;false;false;0;0;0;;; -92234;1;0;false;false;;;;;; -92235;1;0;false;false;0;0;0;;; -92236;1;0;false;false;;;;;; -92237;11;0;false;false;0;0;0;;; -92248;6;0;false;false;;;;;; -92254;2;1;false;false;127;0;85;;; -92256;1;0;false;false;;;;;; -92257;12;0;false;false;0;0;0;;; -92269;1;0;false;false;;;;;; -92270;1;0;false;false;0;0;0;;; -92271;1;0;false;false;;;;;; -92272;14;0;false;false;0;0;0;;; -92286;1;0;false;false;;;;;; -92287;1;0;false;false;0;0;0;;; -92288;4;0;false;false;;;;;; -92292;11;0;false;false;0;0;0;;; -92303;1;0;false;false;;;;;; -92304;1;0;false;false;0;0;0;;; -92305;1;0;false;false;;;;;; -92306;14;0;false;false;0;0;0;;; -92320;4;0;false;false;;;;;; -92324;12;0;false;false;0;0;0;;; -92336;3;0;false;false;;;;;; -92339;1;0;false;false;0;0;0;;; -92340;2;0;false;false;;;;;; -92342;1;0;false;false;0;0;0;;; -92343;2;0;false;false;;;;;; -92345;3;0;false;false;63;95;191;;; -92348;3;0;false;false;;;;;; -92351;1;0;false;false;63;95;191;;; -92352;1;0;false;false;;;;;; -92353;5;0;false;false;63;95;191;;; -92358;1;0;false;false;;;;;; -92359;3;0;false;false;63;95;191;;; -92362;1;0;false;false;;;;;; -92363;5;0;false;false;63;95;191;;; -92368;1;0;false;false;;;;;; -92369;2;0;false;false;63;95;191;;; -92371;1;0;false;false;;;;;; -92372;3;0;false;false;63;95;191;;; -92375;1;0;false;false;;;;;; -92376;9;0;false;false;63;95;191;;; -92385;1;0;false;false;;;;;; -92386;2;0;false;false;63;95;191;;; -92388;1;0;false;false;;;;;; -92389;3;0;false;false;63;95;191;;; -92392;1;0;false;false;;;;;; -92393;5;0;false;false;63;95;191;;; -92398;3;0;false;false;;;;;; -92401;2;0;false;false;63;95;191;;; -92403;2;0;false;false;;;;;; -92405;4;1;false;false;127;0;85;;; -92409;1;0;false;false;;;;;; -92410;13;0;false;false;0;0;0;;; -92423;1;0;false;false;;;;;; -92424;1;0;false;false;0;0;0;;; -92425;3;0;false;false;;;;;; -92428;3;1;false;false;127;0;85;;; -92431;1;0;false;false;;;;;; -92432;9;0;false;false;0;0;0;;; -92441;1;0;false;false;;;;;; -92442;1;0;false;false;0;0;0;;; -92443;1;0;false;false;;;;;; -92444;15;0;false;false;0;0;0;;; -92459;3;0;false;false;;;;;; -92462;3;1;false;false;127;0;85;;; -92465;1;0;false;false;;;;;; -92466;10;0;false;false;0;0;0;;; -92476;1;0;false;false;;;;;; -92477;1;0;false;false;0;0;0;;; -92478;1;0;false;false;;;;;; -92479;35;0;false;false;0;0;0;;; -92514;3;0;false;false;;;;;; -92517;2;1;false;false;127;0;85;;; -92519;1;0;false;false;;;;;; -92520;12;0;false;false;0;0;0;;; -92532;1;0;false;false;;;;;; -92533;1;0;false;false;0;0;0;;; -92534;1;0;false;false;;;;;; -92535;11;0;false;false;0;0;0;;; -92546;1;0;false;false;;;;;; -92547;1;0;false;false;0;0;0;;; -92548;4;0;false;false;;;;;; -92552;11;0;false;false;0;0;0;;; -92563;1;0;false;false;;;;;; -92564;1;0;false;false;0;0;0;;; -92565;1;0;false;false;;;;;; -92566;11;0;false;false;0;0;0;;; -92577;4;0;false;false;;;;;; -92581;21;0;false;false;0;0;0;;; -92602;3;0;false;false;;;;;; -92605;1;0;false;false;0;0;0;;; -92606;2;0;false;false;;;;;; -92608;1;0;false;false;0;0;0;;; -92609;2;0;false;false;;;;;; -92611;3;0;false;false;63;95;191;;; -92614;3;0;false;false;;;;;; -92617;1;0;false;false;63;95;191;;; -92618;1;0;false;false;;;;;; -92619;5;0;false;false;63;95;191;;; -92624;1;0;false;false;;;;;; -92625;3;0;false;false;63;95;191;;; -92628;1;0;false;false;;;;;; -92629;5;0;false;false;63;95;191;;; -92634;1;0;false;false;;;;;; -92635;3;0;false;false;63;95;191;;; -92638;1;0;false;false;;;;;; -92639;4;0;false;false;63;95;191;;; -92643;1;0;false;false;;;;;; -92644;2;0;false;false;63;95;191;;; -92646;1;0;false;false;;;;;; -92647;3;0;false;false;63;95;191;;; -92650;1;0;false;false;;;;;; -92651;2;0;false;false;63;95;191;;; -92653;1;0;false;false;;;;;; -92654;3;0;false;false;63;95;191;;; -92657;1;0;false;false;;;;;; -92658;4;0;false;false;63;95;191;;; -92662;1;0;false;false;;;;;; -92663;9;0;false;false;63;95;191;;; -92672;1;0;false;false;;;;;; -92673;6;0;false;false;63;95;191;;; -92679;1;0;false;false;;;;;; -92680;8;0;false;false;63;95;191;;; -92688;4;0;false;false;;;;;; -92692;1;0;false;false;63;95;191;;; -92693;1;0;false;false;;;;;; -92694;2;0;false;false;63;95;191;;; -92696;1;0;false;false;;;;;; -92697;3;0;false;false;63;95;191;;; -92700;1;0;false;false;;;;;; -92701;9;0;false;false;63;95;191;;; -92710;1;0;false;false;;;;;; -92711;2;0;false;false;63;95;191;;; -92713;1;0;false;false;;;;;; -92714;3;0;false;false;63;95;191;;; -92717;1;0;false;false;;;;;; -92718;5;0;false;false;63;95;191;;; -92723;1;0;false;false;;;;;; -92724;4;0;false;false;63;95;191;;; -92728;1;0;false;false;;;;;; -92729;3;0;false;false;63;95;191;;; -92732;1;0;false;false;;;;;; -92733;5;0;false;false;63;95;191;;; -92738;1;0;false;false;;;;;; -92739;2;0;false;false;63;95;191;;; -92741;1;0;false;false;;;;;; -92742;3;0;false;false;63;95;191;;; -92745;1;0;false;false;;;;;; -92746;3;0;false;false;63;95;191;;; -92749;1;0;false;false;;;;;; -92750;2;0;false;false;63;95;191;;; -92752;1;0;false;false;;;;;; -92753;3;0;false;false;63;95;191;;; -92756;1;0;false;false;;;;;; -92757;3;0;false;false;63;95;191;;; -92760;1;0;false;false;;;;;; -92761;4;0;false;false;63;95;191;;; -92765;4;0;false;false;;;;;; -92769;1;0;false;false;63;95;191;;; -92770;1;0;false;false;;;;;; -92771;2;0;false;false;63;95;191;;; -92773;1;0;false;false;;;;;; -92774;3;0;false;false;63;95;191;;; -92777;1;0;false;false;;;;;; -92778;3;0;false;false;63;95;191;;; -92781;1;0;false;false;;;;;; -92782;4;0;false;false;63;95;191;;; -92786;1;0;false;false;;;;;; -92787;2;0;false;false;63;95;191;;; -92789;1;0;false;false;;;;;; -92790;7;0;false;false;63;95;191;;; -92797;1;0;false;false;;;;;; -92798;4;0;false;false;63;95;191;;; -92802;1;0;false;false;;;;;; -92803;3;0;false;false;63;95;191;;; -92806;1;0;false;false;;;;;; -92807;9;0;false;false;63;95;191;;; -92816;1;0;false;false;;;;;; -92817;7;0;false;false;63;95;191;;; -92824;3;0;false;false;;;;;; -92827;1;0;false;false;63;95;191;;; -92828;4;0;false;false;;;;;; -92832;1;0;false;false;63;95;191;;; -92833;1;0;false;false;;;;;; -92834;8;1;false;false;127;159;191;;; -92842;5;0;false;false;63;95;191;;; -92847;1;0;false;false;;;;;; -92848;2;0;false;false;63;95;191;;; -92850;1;0;false;false;;;;;; -92851;3;0;false;false;63;95;191;;; -92854;1;0;false;false;;;;;; -92855;3;0;false;false;63;95;191;;; -92858;1;0;false;false;;;;;; -92859;4;0;false;false;63;95;191;;; -92863;1;0;false;false;;;;;; -92864;8;0;false;false;63;95;191;;; -92872;1;0;false;false;;;;;; -92873;2;0;false;false;63;95;191;;; -92875;1;0;false;false;;;;;; -92876;3;0;false;false;63;95;191;;; -92879;1;0;false;false;;;;;; -92880;5;0;false;false;63;95;191;;; -92885;1;0;false;false;;;;;; -92886;4;0;false;false;63;95;191;;; -92890;1;0;false;false;;;;;; -92891;2;0;false;false;63;95;191;;; -92893;1;0;false;false;;;;;; -92894;3;0;false;false;63;95;191;;; -92897;1;0;false;false;;;;;; -92898;8;0;false;false;63;95;191;;; -92906;3;0;false;false;;;;;; -92909;2;0;false;false;63;95;191;;; -92911;2;0;false;false;;;;;; -92913;3;1;false;false;127;0;85;;; -92916;1;0;false;false;;;;;; -92917;10;0;false;false;0;0;0;;; -92927;1;0;false;false;;;;;; -92928;1;0;false;false;0;0;0;;; -92929;3;0;false;false;;;;;; -92932;3;1;false;false;127;0;85;;; -92935;1;0;false;false;;;;;; -92936;9;0;false;false;0;0;0;;; -92945;1;0;false;false;;;;;; -92946;1;0;false;false;0;0;0;;; -92947;1;0;false;false;;;;;; -92948;15;0;false;false;0;0;0;;; -92963;3;0;false;false;;;;;; -92966;2;1;false;false;127;0;85;;; -92968;1;0;false;false;;;;;; -92969;10;0;false;false;0;0;0;;; -92979;1;0;false;false;;;;;; -92980;1;0;false;false;0;0;0;;; -92981;1;0;false;false;;;;;; -92982;2;0;false;false;0;0;0;;; -92984;1;0;false;false;;;;;; -92985;1;0;false;false;0;0;0;;; -92986;4;0;false;false;;;;;; -92990;12;0;false;false;0;0;0;;; -93002;4;0;false;false;;;;;; -93006;11;0;false;false;0;0;0;;; -93017;1;0;false;false;;;;;; -93018;1;0;false;false;0;0;0;;; -93019;1;0;false;false;;;;;; -93020;33;0;false;false;0;0;0;;; -93053;1;0;false;false;;;;;; -93054;11;0;false;false;0;0;0;;; -93065;3;0;false;false;;;;;; -93068;1;0;false;false;0;0;0;;; -93069;3;0;false;false;;;;;; -93072;6;1;false;false;127;0;85;;; -93078;1;0;false;false;;;;;; -93079;10;0;false;false;0;0;0;;; -93089;2;0;false;false;;;;;; -93091;1;0;false;false;0;0;0;;; -93092;2;0;false;false;;;;;; -93094;3;0;false;false;63;95;191;;; -93097;3;0;false;false;;;;;; -93100;1;0;false;false;63;95;191;;; -93101;1;0;false;false;;;;;; -93102;5;0;false;false;63;95;191;;; -93107;1;0;false;false;;;;;; -93108;3;0;false;false;63;95;191;;; -93111;1;0;false;false;;;;;; -93112;5;0;false;false;63;95;191;;; -93117;1;0;false;false;;;;;; -93118;2;0;false;false;63;95;191;;; -93120;1;0;false;false;;;;;; -93121;3;0;false;false;63;95;191;;; -93124;1;0;false;false;;;;;; -93125;9;0;false;false;63;95;191;;; -93134;1;0;false;false;;;;;; -93135;9;0;false;false;63;95;191;;; -93144;3;0;false;false;;;;;; -93147;1;0;false;false;63;95;191;;; -93148;1;0;false;false;;;;;; -93149;3;0;false;false;127;127;159;;; -93152;3;0;false;false;;;;;; -93155;1;0;false;false;63;95;191;;; -93156;3;0;false;false;;;;;; -93159;1;0;false;false;63;95;191;;; -93160;1;0;false;false;;;;;; -93161;7;1;false;false;127;159;191;;; -93168;1;0;false;false;63;95;191;;; -93169;1;0;false;false;;;;;; -93170;1;0;false;false;63;95;191;;; -93171;1;0;false;false;;;;;; -93172;8;0;false;false;63;95;191;;; -93180;1;0;false;false;;;;;; -93181;2;0;false;false;63;95;191;;; -93183;1;0;false;false;;;;;; -93184;3;0;false;false;63;95;191;;; -93187;1;0;false;false;;;;;; -93188;3;0;false;false;63;95;191;;; -93191;1;0;false;false;;;;;; -93192;5;0;false;false;63;95;191;;; -93197;1;0;false;false;;;;;; -93198;8;0;false;false;63;95;191;;; -93206;3;0;false;false;;;;;; -93209;1;0;false;false;63;95;191;;; -93210;1;0;false;false;;;;;; -93211;7;1;false;false;127;159;191;;; -93218;1;0;false;false;63;95;191;;; -93219;1;0;false;false;;;;;; -93220;1;0;false;false;63;95;191;;; -93221;1;0;false;false;;;;;; -93222;8;0;false;false;63;95;191;;; -93230;1;0;false;false;;;;;; -93231;2;0;false;false;63;95;191;;; -93233;1;0;false;false;;;;;; -93234;3;0;false;false;63;95;191;;; -93237;1;0;false;false;;;;;; -93238;3;0;false;false;63;95;191;;; -93241;1;0;false;false;;;;;; -93242;5;0;false;false;63;95;191;;; -93247;1;0;false;false;;;;;; -93248;8;0;false;false;63;95;191;;; -93256;3;0;false;false;;;;;; -93259;1;0;false;false;63;95;191;;; -93260;1;0;false;false;;;;;; -93261;7;1;false;false;127;159;191;;; -93268;6;0;false;false;63;95;191;;; -93274;1;0;false;false;;;;;; -93275;3;0;false;false;63;95;191;;; -93278;1;0;false;false;;;;;; -93279;8;0;false;false;63;95;191;;; -93287;1;0;false;false;;;;;; -93288;6;0;false;false;63;95;191;;; -93294;1;0;false;false;;;;;; -93295;2;0;false;false;63;95;191;;; -93297;1;0;false;false;;;;;; -93298;1;0;false;false;63;95;191;;; -93299;1;0;false;false;;;;;; -93300;9;0;false;false;63;95;191;;; -93309;1;0;false;false;;;;;; -93310;10;0;false;false;63;95;191;;; -93320;3;0;false;false;;;;;; -93323;1;0;false;false;63;95;191;;; -93324;2;0;false;false;;;;;; -93326;7;0;false;false;63;95;191;;; -93333;1;0;false;false;;;;;; -93334;3;0;false;false;63;95;191;;; -93337;1;0;false;false;;;;;; -93338;4;0;false;false;63;95;191;;; -93342;1;0;false;false;;;;;; -93343;9;0;false;false;63;95;191;;; -93352;1;0;false;false;;;;;; -93353;2;0;false;false;63;95;191;;; -93355;1;0;false;false;;;;;; -93356;3;0;false;false;63;95;191;;; -93359;1;0;false;false;;;;;; -93360;9;0;false;false;63;95;191;;; -93369;3;0;false;false;;;;;; -93372;2;0;false;false;63;95;191;;; -93374;2;0;false;false;;;;;; -93376;4;1;false;false;127;0;85;;; -93380;1;0;false;false;;;;;; -93381;22;0;false;false;0;0;0;;; -93403;3;1;false;false;127;0;85;;; -93406;1;0;false;false;;;;;; -93407;2;0;false;false;0;0;0;;; -93409;1;0;false;false;;;;;; -93410;3;1;false;false;127;0;85;;; -93413;1;0;false;false;;;;;; -93414;2;0;false;false;0;0;0;;; -93416;1;0;false;false;;;;;; -93417;7;1;false;false;127;0;85;;; -93424;1;0;false;false;;;;;; -93425;7;0;false;false;0;0;0;;; -93432;1;0;false;false;;;;;; -93433;1;0;false;false;0;0;0;;; -93434;3;0;false;false;;;;;; -93437;3;1;false;false;127;0;85;;; -93440;1;0;false;false;;;;;; -93441;4;0;false;false;0;0;0;;; -93445;1;0;false;false;;;;;; -93446;1;0;false;false;0;0;0;;; -93447;1;0;false;false;;;;;; -93448;2;0;false;false;0;0;0;;; -93450;1;0;false;false;;;;;; -93451;1;0;false;false;0;0;0;;; -93452;1;0;false;false;;;;;; -93453;21;0;false;false;0;0;0;;; -93474;1;0;false;false;;;;;; -93475;1;0;false;false;0;0;0;;; -93476;1;0;false;false;;;;;; -93477;11;0;false;false;0;0;0;;; -93488;3;0;false;false;;;;;; -93491;3;1;false;false;127;0;85;;; -93494;1;0;false;false;;;;;; -93495;9;0;false;false;0;0;0;;; -93504;1;0;false;false;;;;;; -93505;1;0;false;false;0;0;0;;; -93506;1;0;false;false;;;;;; -93507;23;0;false;false;0;0;0;;; -93530;3;0;false;false;;;;;; -93533;3;1;false;false;127;0;85;;; -93536;1;0;false;false;;;;;; -93537;15;0;false;false;0;0;0;;; -93552;3;0;false;false;;;;;; -93555;3;1;false;false;127;0;85;;; -93558;1;0;false;false;;;;;; -93559;13;0;false;false;0;0;0;;; -93572;3;0;false;false;;;;;; -93575;7;1;false;false;127;0;85;;; -93582;1;0;false;false;;;;;; -93583;12;0;false;false;0;0;0;;; -93595;1;0;false;false;;;;;; -93596;1;0;false;false;0;0;0;;; -93597;1;0;false;false;;;;;; -93598;10;0;false;false;0;0;0;;; -93608;5;0;false;false;;;;;; -93613;20;0;false;false;0;0;0;;; -93633;1;0;false;false;;;;;; -93634;1;0;false;false;0;0;0;;; -93635;1;0;false;false;;;;;; -93636;4;1;false;false;127;0;85;;; -93640;1;0;false;false;0;0;0;;; -93641;3;0;false;false;;;;;; -93644;2;1;false;false;127;0;85;;; -93646;1;0;false;false;;;;;; -93647;5;0;false;false;0;0;0;;; -93652;1;0;false;false;;;;;; -93653;1;0;false;false;0;0;0;;; -93654;1;0;false;false;;;;;; -93655;9;0;false;false;0;0;0;;; -93664;1;0;false;false;;;;;; -93665;1;0;false;false;0;0;0;;; -93666;1;0;false;false;;;;;; -93667;2;0;false;false;0;0;0;;; -93669;1;0;false;false;;;;;; -93670;1;0;false;false;0;0;0;;; -93671;4;0;false;false;;;;;; -93675;4;0;false;false;0;0;0;;; -93679;1;0;false;false;;;;;; -93680;1;0;false;false;0;0;0;;; -93681;1;0;false;false;;;;;; -93682;9;0;false;false;0;0;0;;; -93691;1;0;false;false;;;;;; -93692;1;0;false;false;0;0;0;;; -93693;1;0;false;false;;;;;; -93694;2;0;false;false;0;0;0;;; -93696;3;0;false;false;;;;;; -93699;1;0;false;false;0;0;0;;; -93700;4;0;false;false;;;;;; -93704;67;0;false;false;63;127;95;;; -93771;1;0;false;false;;;;;; -93772;41;0;false;false;63;127;95;;; -93813;1;0;false;false;;;;;; -93814;2;1;false;false;127;0;85;;; -93816;1;0;false;false;;;;;; -93817;5;0;false;false;0;0;0;;; -93822;1;0;false;false;;;;;; -93823;1;0;false;false;0;0;0;;; -93824;1;0;false;false;;;;;; -93825;1;0;false;false;0;0;0;;; -93826;1;0;false;false;;;;;; -93827;2;0;false;false;0;0;0;;; -93829;1;0;false;false;;;;;; -93830;15;0;false;false;0;0;0;;; -93845;1;0;false;false;;;;;; -93846;2;0;false;false;0;0;0;;; -93848;1;0;false;false;;;;;; -93849;4;0;false;false;0;0;0;;; -93853;1;0;false;false;;;;;; -93854;1;0;false;false;0;0;0;;; -93855;1;0;false;false;;;;;; -93856;3;0;false;false;0;0;0;;; -93859;1;0;false;false;;;;;; -93860;1;0;false;false;0;0;0;;; -93861;4;0;false;false;;;;;; -93865;6;1;false;false;127;0;85;;; -93871;1;0;false;false;0;0;0;;; -93872;3;0;false;false;;;;;; -93875;1;0;false;false;0;0;0;;; -93876;3;0;false;false;;;;;; -93879;14;0;false;false;0;0;0;;; -93893;1;0;false;false;;;;;; -93894;1;0;false;false;0;0;0;;; -93895;1;0;false;false;;;;;; -93896;27;0;false;false;0;0;0;;; -93923;1;0;false;false;;;;;; -93924;6;0;false;false;0;0;0;;; -93930;6;0;false;false;;;;;; -93936;2;1;false;false;127;0;85;;; -93938;1;0;false;false;;;;;; -93939;18;0;false;false;0;0;0;;; -93957;1;0;false;false;;;;;; -93958;1;0;false;false;0;0;0;;; -93959;4;0;false;false;;;;;; -93963;69;0;false;false;63;127;95;;; -94032;2;0;false;false;;;;;; -94034;14;0;false;false;0;0;0;;; -94048;1;0;false;false;;;;;; -94049;1;0;false;false;0;0;0;;; -94050;1;0;false;false;;;;;; -94051;20;0;false;false;0;0;0;;; -94071;1;0;false;false;;;;;; -94072;15;0;false;false;0;0;0;;; -94087;1;0;false;false;;;;;; -94088;6;0;false;false;0;0;0;;; -94094;3;0;false;false;;;;;; -94097;1;0;false;false;0;0;0;;; -94098;3;0;false;false;;;;;; -94101;12;0;false;false;0;0;0;;; -94113;1;0;false;false;;;;;; -94114;1;0;false;false;0;0;0;;; -94115;1;0;false;false;;;;;; -94116;40;0;false;false;0;0;0;;; -94156;3;0;false;false;;;;;; -94159;59;0;false;false;63;127;95;;; -94218;1;0;false;false;;;;;; -94219;55;0;false;false;63;127;95;;; -94274;1;0;false;false;;;;;; -94275;46;0;false;false;63;127;95;;; -94321;1;0;false;false;;;;;; -94322;2;1;false;false;127;0;85;;; -94324;1;0;false;false;;;;;; -94325;2;0;false;false;0;0;0;;; -94327;1;0;false;false;;;;;; -94328;2;0;false;false;0;0;0;;; -94330;1;0;false;false;;;;;; -94331;1;0;false;false;0;0;0;;; -94332;1;0;false;false;;;;;; -94333;2;0;false;false;0;0;0;;; -94335;1;0;false;false;;;;;; -94336;1;0;false;false;0;0;0;;; -94337;1;0;false;false;;;;;; -94338;1;0;false;false;0;0;0;;; -94339;1;0;false;false;;;;;; -94340;22;0;false;false;0;0;0;;; -94362;1;0;false;false;;;;;; -94363;2;0;false;false;0;0;0;;; -94365;5;0;false;false;;;;;; -94370;2;0;false;false;0;0;0;;; -94372;1;0;false;false;;;;;; -94373;2;0;false;false;0;0;0;;; -94375;1;0;false;false;;;;;; -94376;1;0;false;false;0;0;0;;; -94377;1;0;false;false;;;;;; -94378;2;0;false;false;0;0;0;;; -94380;1;0;false;false;;;;;; -94381;1;0;false;false;0;0;0;;; -94382;1;0;false;false;;;;;; -94383;1;0;false;false;0;0;0;;; -94384;1;0;false;false;;;;;; -94385;21;0;false;false;0;0;0;;; -94406;1;0;false;false;;;;;; -94407;2;0;false;false;0;0;0;;; -94409;1;0;false;false;;;;;; -94410;8;0;false;false;0;0;0;;; -94418;1;0;false;false;;;;;; -94419;2;0;false;false;0;0;0;;; -94421;5;0;false;false;;;;;; -94426;12;0;false;false;0;0;0;;; -94438;1;0;false;false;;;;;; -94439;2;0;false;false;0;0;0;;; -94441;1;0;false;false;;;;;; -94442;38;0;false;false;0;0;0;;; -94480;1;0;false;false;;;;;; -94481;1;0;false;false;0;0;0;;; -94482;4;0;false;false;;;;;; -94486;2;1;false;false;127;0;85;;; -94488;1;0;false;false;;;;;; -94489;15;0;false;false;0;0;0;;; -94504;1;0;false;false;;;;;; -94505;2;0;false;false;0;0;0;;; -94507;1;0;false;false;;;;;; -94508;11;0;false;false;0;0;0;;; -94519;1;0;false;false;;;;;; -94520;2;0;false;false;0;0;0;;; -94522;1;0;false;false;;;;;; -94523;9;0;false;false;0;0;0;;; -94532;1;0;false;false;;;;;; -94533;2;0;false;false;0;0;0;;; -94535;1;0;false;false;;;;;; -94536;13;0;false;false;0;0;0;;; -94549;1;0;false;false;;;;;; -94550;1;0;false;false;0;0;0;;; -94551;5;0;false;false;;;;;; -94556;11;0;false;false;0;0;0;;; -94567;1;0;false;false;;;;;; -94568;1;0;false;false;0;0;0;;; -94569;1;0;false;false;;;;;; -94570;15;0;false;false;0;0;0;;; -94585;5;0;false;false;;;;;; -94590;2;1;false;false;127;0;85;;; -94592;1;0;false;false;;;;;; -94593;8;0;false;false;0;0;0;;; -94601;1;0;false;false;;;;;; -94602;1;0;false;false;0;0;0;;; -94603;6;0;false;false;;;;;; -94609;19;0;false;false;0;0;0;;; -94628;5;0;false;false;;;;;; -94633;1;0;false;false;0;0;0;;; -94634;5;0;false;false;;;;;; -94639;12;0;false;false;0;0;0;;; -94651;4;0;false;false;;;;;; -94655;1;0;false;false;0;0;0;;; -94656;3;0;false;false;;;;;; -94659;1;0;false;false;0;0;0;;; -94660;3;0;false;false;;;;;; -94663;2;1;false;false;127;0;85;;; -94665;1;0;false;false;;;;;; -94666;9;0;false;false;0;0;0;;; -94675;1;0;false;false;;;;;; -94676;1;0;false;false;0;0;0;;; -94677;4;0;false;false;;;;;; -94681;11;0;false;false;0;0;0;;; -94692;1;0;false;false;;;;;; -94693;1;0;false;false;0;0;0;;; -94694;1;0;false;false;;;;;; -94695;15;0;false;false;0;0;0;;; -94710;4;0;false;false;;;;;; -94714;15;0;false;false;0;0;0;;; -94729;4;1;false;false;127;0;85;;; -94733;2;0;false;false;0;0;0;;; -94735;3;0;false;false;;;;;; -94738;1;0;false;false;0;0;0;;; -94739;2;0;false;false;;;;;; -94741;1;0;false;false;0;0;0;;; -94742;2;0;false;false;;;;;; -94744;3;0;false;false;63;95;191;;; -94747;3;0;false;false;;;;;; -94750;1;0;false;false;63;95;191;;; -94751;1;0;false;false;;;;;; -94752;7;0;false;false;63;95;191;;; -94759;1;0;false;false;;;;;; -94760;3;0;false;false;63;95;191;;; -94763;1;0;false;false;;;;;; -94764;9;0;false;false;63;95;191;;; -94773;1;0;false;false;;;;;; -94774;5;0;false;false;63;95;191;;; -94779;1;0;false;false;;;;;; -94780;2;0;false;false;63;95;191;;; -94782;1;0;false;false;;;;;; -94783;3;0;false;false;63;95;191;;; -94786;1;0;false;false;;;;;; -94787;5;0;false;false;63;95;191;;; -94792;1;0;false;false;;;;;; -94793;8;0;false;false;63;95;191;;; -94801;3;0;false;false;;;;;; -94804;2;0;false;false;63;95;191;;; -94806;2;0;false;false;;;;;; -94808;4;1;false;false;127;0;85;;; -94812;1;0;false;false;;;;;; -94813;18;0;false;false;0;0;0;;; -94831;1;0;false;false;;;;;; -94832;1;0;false;false;0;0;0;;; -94833;3;0;false;false;;;;;; -94836;2;1;false;false;127;0;85;;; -94838;1;0;false;false;;;;;; -94839;12;0;false;false;0;0;0;;; -94851;1;0;false;false;;;;;; -94852;2;0;false;false;0;0;0;;; -94854;1;0;false;false;;;;;; -94855;11;0;false;false;0;0;0;;; -94866;1;0;false;false;;;;;; -94867;2;0;false;false;0;0;0;;; -94869;5;0;false;false;;;;;; -94874;12;0;false;false;0;0;0;;; -94886;1;0;false;false;;;;;; -94887;1;0;false;false;0;0;0;;; -94888;1;0;false;false;;;;;; -94889;11;0;false;false;0;0;0;;; -94900;1;0;false;false;;;;;; -94901;2;0;false;false;0;0;0;;; -94903;6;0;false;false;;;;;; -94909;11;0;false;false;0;0;0;;; -94920;1;0;false;false;;;;;; -94921;1;0;false;false;0;0;0;;; -94922;1;0;false;false;;;;;; -94923;11;0;false;false;0;0;0;;; -94934;1;0;false;false;;;;;; -94935;2;0;false;false;0;0;0;;; -94937;1;0;false;false;;;;;; -94938;15;0;false;false;0;0;0;;; -94953;1;0;false;false;;;;;; -94954;2;0;false;false;0;0;0;;; -94956;1;0;false;false;;;;;; -94957;13;0;false;false;0;0;0;;; -94970;1;0;false;false;;;;;; -94971;1;0;false;false;0;0;0;;; -94972;4;0;false;false;;;;;; -94976;32;0;false;false;0;0;0;;; -95008;3;0;false;false;;;;;; -95011;1;0;false;false;0;0;0;;; -95012;3;0;false;false;;;;;; -95015;4;1;false;false;127;0;85;;; -95019;1;0;false;false;;;;;; -95020;1;0;false;false;0;0;0;;; -95021;4;0;false;false;;;;;; -95025;28;0;false;false;0;0;0;;; -95053;3;0;false;false;;;;;; -95056;1;0;false;false;0;0;0;;; -95057;2;0;false;false;;;;;; -95059;1;0;false;false;0;0;0;;; -95060;2;0;false;false;;;;;; -95062;3;0;false;false;63;95;191;;; -95065;3;0;false;false;;;;;; -95068;1;0;false;false;63;95;191;;; -95069;1;0;false;false;;;;;; -95070;7;0;false;false;63;95;191;;; -95077;1;0;false;false;;;;;; -95078;3;0;false;false;63;95;191;;; -95081;1;0;false;false;;;;;; -95082;6;0;false;false;63;95;191;;; -95088;1;0;false;false;;;;;; -95089;2;0;false;false;63;95;191;;; -95091;1;0;false;false;;;;;; -95092;3;0;false;false;63;95;191;;; -95095;1;0;false;false;;;;;; -95096;4;0;false;false;63;95;191;;; -95100;1;0;false;false;;;;;; -95101;2;0;false;false;63;95;191;;; -95103;1;0;false;false;;;;;; -95104;3;0;false;false;63;95;191;;; -95107;1;0;false;false;;;;;; -95108;9;0;false;false;63;95;191;;; -95117;1;0;false;false;;;;;; -95118;7;0;false;false;63;95;191;;; -95125;4;0;false;false;;;;;; -95129;1;0;false;false;63;95;191;;; -95130;1;0;false;false;;;;;; -95131;2;0;false;false;63;95;191;;; -95133;1;0;false;false;;;;;; -95134;3;0;false;false;63;95;191;;; -95137;1;0;false;false;;;;;; -95138;7;0;false;false;63;95;191;;; -95145;1;0;false;false;;;;;; -95146;9;0;false;false;63;95;191;;; -95155;1;0;false;false;;;;;; -95156;7;0;false;false;63;95;191;;; -95163;1;0;false;false;;;;;; -95164;4;0;false;false;63;95;191;;; -95168;1;0;false;false;;;;;; -95169;4;0;false;false;63;95;191;;; -95173;1;0;false;false;;;;;; -95174;5;0;false;false;63;95;191;;; -95179;1;0;false;false;;;;;; -95180;2;0;false;false;63;95;191;;; -95182;1;0;false;false;;;;;; -95183;3;0;false;false;63;95;191;;; -95186;1;0;false;false;;;;;; -95187;5;0;false;false;63;95;191;;; -95192;4;0;false;false;;;;;; -95196;1;0;false;false;63;95;191;;; -95197;1;0;false;false;;;;;; -95198;6;0;false;false;63;95;191;;; -95204;1;0;false;false;;;;;; -95205;5;0;false;false;63;95;191;;; -95210;1;0;false;false;;;;;; -95211;2;0;false;false;63;95;191;;; -95213;1;0;false;false;;;;;; -95214;5;0;false;false;63;95;191;;; -95219;1;0;false;false;;;;;; -95220;2;0;false;false;63;95;191;;; -95222;1;0;false;false;;;;;; -95223;5;0;false;false;63;95;191;;; -95228;1;0;false;false;;;;;; -95229;2;0;false;false;63;95;191;;; -95231;1;0;false;false;;;;;; -95232;2;0;false;false;63;95;191;;; -95234;1;0;false;false;;;;;; -95235;4;0;false;false;63;95;191;;; -95239;1;0;false;false;;;;;; -95240;6;0;false;false;63;95;191;;; -95246;1;0;false;false;;;;;; -95247;2;0;false;false;63;95;191;;; -95249;1;0;false;false;;;;;; -95250;8;0;false;false;63;95;191;;; -95258;1;0;false;false;;;;;; -95259;2;0;false;false;63;95;191;;; -95261;4;0;false;false;;;;;; -95265;1;0;false;false;63;95;191;;; -95266;1;0;false;false;;;;;; -95267;3;0;false;false;63;95;191;;; -95270;1;0;false;false;127;127;159;;; -95271;4;0;false;false;63;95;191;;; -95275;1;0;false;false;;;;;; -95276;10;0;false;false;63;95;191;;; -95286;1;0;false;false;;;;;; -95287;3;0;false;false;63;95;191;;; -95290;1;0;false;false;;;;;; -95291;5;0;false;false;63;95;191;;; -95296;1;0;false;false;;;;;; -95297;6;0;false;false;63;95;191;;; -95303;1;0;false;false;;;;;; -95304;2;0;false;false;63;95;191;;; -95306;1;0;false;false;;;;;; -95307;3;0;false;false;63;95;191;;; -95310;1;0;false;false;;;;;; -95311;4;0;false;false;63;95;191;;; -95315;1;0;false;false;;;;;; -95316;10;0;false;false;63;95;191;;; -95326;1;0;false;false;;;;;; -95327;3;0;false;false;63;95;191;;; -95330;3;0;false;false;;;;;; -95333;1;0;false;false;63;95;191;;; -95334;1;0;false;false;;;;;; -95335;9;0;false;false;63;95;191;;; -95344;1;0;false;false;;;;;; -95345;2;0;false;false;63;95;191;;; -95347;1;0;false;false;;;;;; -95348;9;0;false;false;63;95;191;;; -95357;1;0;false;false;;;;;; -95358;2;0;false;false;63;95;191;;; -95360;1;0;false;false;;;;;; -95361;3;0;false;false;63;95;191;;; -95364;1;0;false;false;;;;;; -95365;7;0;false;false;63;95;191;;; -95372;1;0;false;false;;;;;; -95373;9;0;false;false;63;95;191;;; -95382;1;0;false;false;;;;;; -95383;7;0;false;false;63;95;191;;; -95390;1;0;false;false;;;;;; -95391;4;0;false;false;63;95;191;;; -95395;4;0;false;false;;;;;; -95399;1;0;false;false;63;95;191;;; -95400;1;0;false;false;;;;;; -95401;3;0;false;false;63;95;191;;; -95404;1;0;false;false;;;;;; -95405;5;0;false;false;63;95;191;;; -95410;1;0;false;false;;;;;; -95411;2;0;false;false;63;95;191;;; -95413;1;0;false;false;;;;;; -95414;4;0;false;false;63;95;191;;; -95418;1;0;false;false;;;;;; -95419;5;0;false;false;63;95;191;;; -95424;1;0;false;false;;;;;; -95425;3;0;false;false;63;95;191;;; -95428;1;0;false;false;;;;;; -95429;3;0;false;false;63;95;191;;; -95432;1;0;false;false;;;;;; -95433;6;0;false;false;63;95;191;;; -95439;1;0;false;false;;;;;; -95440;2;0;false;false;63;95;191;;; -95442;1;0;false;false;;;;;; -95443;3;0;false;false;63;95;191;;; -95446;1;0;false;false;;;;;; -95447;4;0;false;false;63;95;191;;; -95451;1;0;false;false;;;;;; -95452;9;0;false;false;63;95;191;;; -95461;4;0;false;false;;;;;; -95465;1;0;false;false;63;95;191;;; -95466;1;0;false;false;;;;;; -95467;3;0;false;false;63;95;191;;; -95470;1;0;false;false;;;;;; -95471;9;0;false;false;63;95;191;;; -95480;1;0;false;false;;;;;; -95481;2;0;false;false;63;95;191;;; -95483;1;0;false;false;;;;;; -95484;9;0;false;false;63;95;191;;; -95493;3;0;false;false;;;;;; -95496;1;0;false;false;63;95;191;;; -95497;4;0;false;false;;;;;; -95501;1;0;false;false;63;95;191;;; -95502;1;0;false;false;;;;;; -95503;7;1;false;false;127;159;191;;; -95510;1;0;false;false;63;95;191;;; -95511;1;0;false;false;;;;;; -95512;5;0;false;false;63;95;191;;; -95517;1;0;false;false;;;;;; -95518;1;0;false;false;63;95;191;;; -95519;1;0;false;false;;;;;; -95520;8;0;false;false;63;95;191;;; -95528;3;0;false;false;;;;;; -95531;1;0;false;false;63;95;191;;; -95532;1;0;false;false;;;;;; -95533;7;1;false;false;127;159;191;;; -95540;14;0;false;false;63;95;191;;; -95554;1;0;false;false;;;;;; -95555;5;0;false;false;63;95;191;;; -95560;1;0;false;false;;;;;; -95561;6;0;false;false;63;95;191;;; -95567;1;0;false;false;;;;;; -95568;2;0;false;false;63;95;191;;; -95570;1;0;false;false;;;;;; -95571;3;0;false;false;63;95;191;;; -95574;1;0;false;false;;;;;; -95575;5;0;false;false;63;95;191;;; -95580;1;0;false;false;;;;;; -95581;6;0;false;false;63;95;191;;; -95587;1;0;false;false;;;;;; -95588;8;0;false;false;63;95;191;;; -95596;3;0;false;false;;;;;; -95599;1;0;false;false;63;95;191;;; -95600;1;0;false;false;;;;;; -95601;7;1;false;false;127;159;191;;; -95608;4;0;false;false;63;95;191;;; -95612;1;0;false;false;;;;;; -95613;4;0;false;false;63;95;191;;; -95617;1;0;false;false;;;;;; -95618;5;0;false;false;63;95;191;;; -95623;1;0;false;false;;;;;; -95624;2;0;false;false;63;95;191;;; -95626;1;0;false;false;;;;;; -95627;3;0;false;false;63;95;191;;; -95630;1;0;false;false;;;;;; -95631;5;0;false;false;63;95;191;;; -95636;1;0;false;false;;;;;; -95637;6;0;false;false;63;95;191;;; -95643;1;0;false;false;;;;;; -95644;8;0;false;false;63;95;191;;; -95652;3;0;false;false;;;;;; -95655;2;0;false;false;63;95;191;;; -95657;2;0;false;false;;;;;; -95659;3;1;false;false;127;0;85;;; -95662;1;0;false;false;;;;;; -95663;18;0;false;false;0;0;0;;; -95681;3;1;false;false;127;0;85;;; -95684;1;0;false;false;;;;;; -95685;2;0;false;false;0;0;0;;; -95687;1;0;false;false;;;;;; -95688;3;1;false;false;127;0;85;;; -95691;1;0;false;false;;;;;; -95692;15;0;false;false;0;0;0;;; -95707;1;0;false;false;;;;;; -95708;3;1;false;false;127;0;85;;; -95711;1;0;false;false;;;;;; -95712;5;0;false;false;0;0;0;;; -95717;1;0;false;false;;;;;; -95718;1;0;false;false;0;0;0;;; -95719;3;0;false;false;;;;;; -95722;3;1;false;false;127;0;85;;; -95725;1;0;false;false;;;;;; -95726;11;0;false;false;0;0;0;;; -95737;5;0;false;false;;;;;; -95742;66;0;false;false;63;127;95;;; -95808;1;0;false;false;;;;;; -95809;76;0;false;false;63;127;95;;; -95885;1;0;false;false;;;;;; -95886;74;0;false;false;63;127;95;;; -95960;1;0;false;false;;;;;; -95961;50;0;false;false;63;127;95;;; -96011;2;0;false;false;;;;;; -96013;2;1;false;false;127;0;85;;; -96015;1;0;false;false;;;;;; -96016;15;0;false;false;0;0;0;;; -96031;1;0;false;false;;;;;; -96032;1;0;false;false;0;0;0;;; -96033;1;0;false;false;;;;;; -96034;15;0;false;false;0;0;0;;; -96049;1;0;false;false;;;;;; -96050;2;0;false;false;0;0;0;;; -96052;1;0;false;false;;;;;; -96053;15;0;false;false;0;0;0;;; -96068;1;0;false;false;;;;;; -96069;2;0;false;false;0;0;0;;; -96071;1;0;false;false;;;;;; -96072;12;0;false;false;0;0;0;;; -96084;1;0;false;false;;;;;; -96085;1;0;false;false;0;0;0;;; -96086;4;0;false;false;;;;;; -96090;15;0;false;false;0;0;0;;; -96105;1;0;false;false;;;;;; -96106;1;0;false;false;0;0;0;;; -96107;1;0;false;false;;;;;; -96108;23;0;false;false;0;0;0;;; -96131;3;0;false;false;;;;;; -96134;1;0;false;false;0;0;0;;; -96135;3;0;false;false;;;;;; -96138;4;1;false;false;127;0;85;;; -96142;3;0;false;false;;;;;; -96145;2;1;false;false;127;0;85;;; -96147;1;0;false;false;;;;;; -96148;15;0;false;false;0;0;0;;; -96163;1;0;false;false;;;;;; -96164;1;0;false;false;0;0;0;;; -96165;1;0;false;false;;;;;; -96166;15;0;false;false;0;0;0;;; -96181;1;0;false;false;;;;;; -96182;2;0;false;false;0;0;0;;; -96184;1;0;false;false;;;;;; -96185;15;0;false;false;0;0;0;;; -96200;1;0;false;false;;;;;; -96201;2;0;false;false;0;0;0;;; -96203;1;0;false;false;;;;;; -96204;12;0;false;false;0;0;0;;; -96216;1;0;false;false;;;;;; -96217;1;0;false;false;0;0;0;;; -96218;4;0;false;false;;;;;; -96222;15;0;false;false;0;0;0;;; -96237;1;0;false;false;;;;;; -96238;1;0;false;false;0;0;0;;; -96239;1;0;false;false;;;;;; -96240;23;0;false;false;0;0;0;;; -96263;3;0;false;false;;;;;; -96266;1;0;false;false;0;0;0;;; -96267;3;0;false;false;;;;;; -96270;2;1;false;false;127;0;85;;; -96272;1;0;false;false;;;;;; -96273;2;0;false;false;0;0;0;;; -96275;1;0;false;false;;;;;; -96276;2;0;false;false;0;0;0;;; -96278;1;0;false;false;;;;;; -96279;1;0;false;false;0;0;0;;; -96280;1;0;false;false;;;;;; -96281;2;0;false;false;0;0;0;;; -96283;1;0;false;false;;;;;; -96284;1;0;false;false;0;0;0;;; -96285;1;0;false;false;;;;;; -96286;1;0;false;false;0;0;0;;; -96287;1;0;false;false;;;;;; -96288;22;0;false;false;0;0;0;;; -96310;1;0;false;false;;;;;; -96311;1;0;false;false;0;0;0;;; -96312;4;0;false;false;;;;;; -96316;32;0;false;false;63;127;95;;; -96348;2;0;false;false;;;;;; -96350;2;1;false;false;127;0;85;;; -96352;1;0;false;false;;;;;; -96353;12;0;false;false;0;0;0;;; -96365;1;0;false;false;;;;;; -96366;2;0;false;false;0;0;0;;; -96368;1;0;false;false;;;;;; -96369;12;0;false;false;0;0;0;;; -96381;1;0;false;false;;;;;; -96382;1;0;false;false;0;0;0;;; -96383;5;0;false;false;;;;;; -96388;10;0;false;false;0;0;0;;; -96398;1;0;false;false;;;;;; -96399;1;0;false;false;0;0;0;;; -96400;1;0;false;false;;;;;; -96401;29;0;false;false;0;0;0;;; -96430;4;0;false;false;;;;;; -96434;1;0;false;false;0;0;0;;; -96435;4;0;false;false;;;;;; -96439;4;1;false;false;127;0;85;;; -96443;1;0;false;false;;;;;; -96444;1;0;false;false;0;0;0;;; -96445;5;0;false;false;;;;;; -96450;10;0;false;false;0;0;0;;; -96460;1;0;false;false;;;;;; -96461;1;0;false;false;0;0;0;;; -96462;1;0;false;false;;;;;; -96463;35;0;false;false;0;0;0;;; -96498;4;0;false;false;;;;;; -96502;1;0;false;false;0;0;0;;; -96503;4;0;false;false;;;;;; -96507;59;0;false;false;63;127;95;;; -96566;2;0;false;false;;;;;; -96568;2;1;false;false;127;0;85;;; -96570;1;0;false;false;;;;;; -96571;36;0;false;false;0;0;0;;; -96607;1;0;false;false;;;;;; -96608;2;0;false;false;0;0;0;;; -96610;1;0;false;false;;;;;; -96611;5;0;false;false;0;0;0;;; -96616;1;0;false;false;;;;;; -96617;1;0;false;false;0;0;0;;; -96618;5;0;false;false;;;;;; -96623;14;0;false;false;0;0;0;;; -96637;1;0;false;false;;;;;; -96638;1;0;false;false;0;0;0;;; -96639;1;0;false;false;;;;;; -96640;11;0;false;false;0;0;0;;; -96651;4;0;false;false;;;;;; -96655;1;0;false;false;0;0;0;;; -96656;3;0;false;false;;;;;; -96659;1;0;false;false;0;0;0;;; -96660;3;0;false;false;;;;;; -96663;6;1;false;false;127;0;85;;; -96669;1;0;false;false;;;;;; -96670;15;0;false;false;0;0;0;;; -96685;2;0;false;false;;;;;; -96687;1;0;false;false;0;0;0;;; -96688;2;0;false;false;;;;;; -96690;3;0;false;false;63;95;191;;; -96693;3;0;false;false;;;;;; -96696;1;0;false;false;63;95;191;;; -96697;1;0;false;false;;;;;; -96698;7;0;false;false;63;95;191;;; -96705;1;0;false;false;;;;;; -96706;3;0;false;false;63;95;191;;; -96709;1;0;false;false;;;;;; -96710;4;0;false;false;63;95;191;;; -96714;1;0;false;false;;;;;; -96715;4;0;false;false;63;95;191;;; -96719;1;0;false;false;;;;;; -96720;2;0;false;false;63;95;191;;; -96722;1;0;false;false;;;;;; -96723;4;0;false;false;63;95;191;;; -96727;1;0;false;false;;;;;; -96728;3;0;false;false;63;95;191;;; -96731;1;0;false;false;;;;;; -96732;4;0;false;false;63;95;191;;; -96736;1;0;false;false;;;;;; -96737;4;0;false;false;63;95;191;;; -96741;1;0;false;false;;;;;; -96742;10;0;false;false;63;95;191;;; -96752;1;0;false;false;;;;;; -96753;2;0;false;false;63;95;191;;; -96755;1;0;false;false;;;;;; -96756;6;0;false;false;63;95;191;;; -96762;3;0;false;false;;;;;; -96765;1;0;false;false;63;95;191;;; -96766;1;0;false;false;;;;;; -96767;2;0;false;false;63;95;191;;; -96769;1;0;false;false;;;;;; -96770;3;0;false;false;63;95;191;;; -96773;1;0;false;false;;;;;; -96774;7;0;false;false;63;95;191;;; -96781;1;0;false;false;;;;;; -96782;4;0;false;false;63;95;191;;; -96786;1;0;false;false;;;;;; -96787;7;0;false;false;63;95;191;;; -96794;1;0;false;false;;;;;; -96795;3;0;false;false;63;95;191;;; -96798;1;0;false;false;;;;;; -96799;5;0;false;false;63;95;191;;; -96804;1;0;false;false;;;;;; -96805;7;0;false;false;63;95;191;;; -96812;1;0;false;false;;;;;; -96813;3;0;false;false;63;95;191;;; -96816;1;0;false;false;;;;;; -96817;5;0;false;false;63;95;191;;; -96822;3;0;false;false;;;;;; -96825;1;0;false;false;63;95;191;;; -96826;1;0;false;false;;;;;; -96827;3;0;false;false;63;95;191;;; -96830;1;0;false;false;;;;;; -96831;5;0;false;false;63;95;191;;; -96836;1;0;false;false;;;;;; -96837;2;0;false;false;63;95;191;;; -96839;1;0;false;false;;;;;; -96840;8;0;false;false;63;95;191;;; -96848;1;0;false;false;;;;;; -96849;3;0;false;false;63;95;191;;; -96852;1;0;false;false;;;;;; -96853;4;0;false;false;63;95;191;;; -96857;1;0;false;false;;;;;; -96858;6;0;false;false;63;95;191;;; -96864;1;0;false;false;;;;;; -96865;2;0;false;false;63;95;191;;; -96867;1;0;false;false;;;;;; -96868;5;0;false;false;63;95;191;;; -96873;1;0;false;false;;;;;; -96874;2;0;false;false;63;95;191;;; -96876;1;0;false;false;;;;;; -96877;4;0;false;false;63;95;191;;; -96881;1;0;false;false;;;;;; -96882;3;0;false;false;63;95;191;;; -96885;1;0;false;false;;;;;; -96886;8;0;false;false;63;95;191;;; -96894;4;0;false;false;;;;;; -96898;1;0;false;false;63;95;191;;; -96899;1;0;false;false;;;;;; -96900;8;0;false;false;63;95;191;;; -96908;1;0;false;false;;;;;; -96909;2;0;false;false;63;95;191;;; -96911;1;0;false;false;;;;;; -96912;3;0;false;false;63;95;191;;; -96915;1;0;false;false;;;;;; -96916;3;0;false;false;63;95;191;;; -96919;1;0;false;false;;;;;; -96920;4;0;false;false;63;95;191;;; -96924;1;0;false;false;;;;;; -96925;7;0;false;false;63;95;191;;; -96932;1;0;false;false;;;;;; -96933;3;0;false;false;63;95;191;;; -96936;1;0;false;false;;;;;; -96937;5;0;false;false;63;95;191;;; -96942;1;0;false;false;;;;;; -96943;3;0;false;false;63;95;191;;; -96946;1;0;false;false;;;;;; -96947;9;0;false;false;63;95;191;;; -96956;1;0;false;false;;;;;; -96957;2;0;false;false;63;95;191;;; -96959;1;0;false;false;;;;;; -96960;3;0;false;false;63;95;191;;; -96963;1;0;false;false;;;;;; -96964;3;0;false;false;63;95;191;;; -96967;4;0;false;false;;;;;; -96971;1;0;false;false;63;95;191;;; -96972;1;0;false;false;;;;;; -96973;2;0;false;false;63;95;191;;; -96975;1;0;false;false;;;;;; -96976;3;0;false;false;63;95;191;;; -96979;1;0;false;false;;;;;; -96980;4;0;false;false;63;95;191;;; -96984;1;0;false;false;;;;;; -96985;5;0;false;false;63;95;191;;; -96990;1;0;false;false;;;;;; -96991;1;0;false;false;63;95;191;;; -96992;1;0;false;false;;;;;; -96993;4;0;false;false;63;95;191;;; -96997;1;0;false;false;;;;;; -96998;4;0;false;false;63;95;191;;; -97002;1;0;false;false;;;;;; -97003;6;0;false;false;63;95;191;;; -97009;1;0;false;false;;;;;; -97010;2;0;false;false;63;95;191;;; -97012;1;0;false;false;;;;;; -97013;3;0;false;false;63;95;191;;; -97016;1;0;false;false;;;;;; -97017;9;0;false;false;63;95;191;;; -97026;1;0;false;false;;;;;; -97027;2;0;false;false;63;95;191;;; -97029;1;0;false;false;;;;;; -97030;4;0;false;false;63;95;191;;; -97034;1;0;false;false;;;;;; -97035;4;0;false;false;63;95;191;;; -97039;4;0;false;false;;;;;; -97043;1;0;false;false;63;95;191;;; -97044;1;0;false;false;;;;;; -97045;3;0;false;false;63;95;191;;; -97048;1;0;false;false;;;;;; -97049;5;0;false;false;63;95;191;;; -97054;1;0;false;false;;;;;; -97055;2;0;false;false;63;95;191;;; -97057;1;0;false;false;;;;;; -97058;5;0;false;false;63;95;191;;; -97063;1;0;false;false;;;;;; -97064;5;0;false;false;63;95;191;;; -97069;1;0;false;false;;;;;; -97070;3;0;false;false;63;95;191;;; -97073;1;0;false;false;;;;;; -97074;4;0;false;false;63;95;191;;; -97078;1;0;false;false;;;;;; -97079;10;0;false;false;63;95;191;;; -97089;3;0;false;false;;;;;; -97092;1;0;false;false;63;95;191;;; -97093;1;0;false;false;;;;;; -97094;3;0;false;false;127;127;159;;; -97097;3;0;false;false;;;;;; -97100;1;0;false;false;63;95;191;;; -97101;3;0;false;false;;;;;; -97104;1;0;false;false;63;95;191;;; -97105;1;0;false;false;;;;;; -97106;7;1;false;false;127;159;191;;; -97113;6;0;false;false;63;95;191;;; -97119;1;0;false;false;;;;;; -97120;7;0;false;false;63;95;191;;; -97127;1;0;false;false;;;;;; -97128;2;0;false;false;63;95;191;;; -97130;1;0;false;false;;;;;; -97131;3;0;false;false;63;95;191;;; -97134;1;0;false;false;;;;;; -97135;2;0;false;false;63;95;191;;; -97137;1;0;false;false;;;;;; -97138;6;0;false;false;63;95;191;;; -97144;1;0;false;false;;;;;; -97145;3;0;false;false;63;95;191;;; -97148;1;0;false;false;;;;;; -97149;4;0;false;false;63;95;191;;; -97153;3;0;false;false;;;;;; -97156;2;0;false;false;63;95;191;;; -97158;2;0;false;false;;;;;; -97160;4;1;false;false;127;0;85;;; -97164;1;0;false;false;;;;;; -97165;11;0;false;false;0;0;0;;; -97176;7;1;false;false;127;0;85;;; -97183;1;0;false;false;;;;;; -97184;7;0;false;false;0;0;0;;; -97191;1;0;false;false;;;;;; -97192;3;1;false;false;127;0;85;;; -97195;1;0;false;false;;;;;; -97196;6;0;false;false;0;0;0;;; -97202;1;0;false;false;;;;;; -97203;1;0;false;false;0;0;0;;; -97204;3;0;false;false;;;;;; -97207;3;1;false;false;127;0;85;;; -97210;1;0;false;false;;;;;; -97211;9;0;false;false;0;0;0;;; -97220;1;0;false;false;;;;;; -97221;1;0;false;false;0;0;0;;; -97222;1;0;false;false;;;;;; -97223;23;0;false;false;0;0;0;;; -97246;3;0;false;false;;;;;; -97249;3;1;false;false;127;0;85;;; -97252;1;0;false;false;;;;;; -97253;10;0;false;false;0;0;0;;; -97263;1;0;false;false;;;;;; -97264;1;0;false;false;0;0;0;;; -97265;1;0;false;false;;;;;; -97266;8;0;false;false;0;0;0;;; -97274;3;0;false;false;;;;;; -97277;3;1;false;false;127;0;85;;; -97280;1;0;false;false;;;;;; -97281;16;0;false;false;0;0;0;;; -97297;1;0;false;false;;;;;; -97298;1;0;false;false;0;0;0;;; -97299;1;0;false;false;;;;;; -97300;23;0;false;false;0;0;0;;; -97323;3;0;false;false;;;;;; -97326;3;1;false;false;127;0;85;;; -97329;1;0;false;false;;;;;; -97330;10;0;false;false;0;0;0;;; -97340;6;0;false;false;;;;;; -97346;50;0;false;false;63;127;95;;; -97396;1;0;false;false;;;;;; -97397;2;1;false;false;127;0;85;;; -97399;1;0;false;false;;;;;; -97400;16;0;false;false;0;0;0;;; -97416;1;0;false;false;;;;;; -97417;1;0;false;false;0;0;0;;; -97418;4;0;false;false;;;;;; -97422;6;1;false;false;127;0;85;;; -97428;1;0;false;false;0;0;0;;; -97429;3;0;false;false;;;;;; -97432;1;0;false;false;0;0;0;;; -97433;3;0;false;false;;;;;; -97436;9;0;false;false;0;0;0;;; -97445;1;0;false;false;;;;;; -97446;1;0;false;false;0;0;0;;; -97447;1;0;false;false;;;;;; -97448;15;0;false;false;0;0;0;;; -97463;3;0;false;false;;;;;; -97466;2;1;false;false;127;0;85;;; -97468;1;0;false;false;;;;;; -97469;10;0;false;false;0;0;0;;; -97479;1;0;false;false;;;;;; -97480;1;0;false;false;0;0;0;;; -97481;1;0;false;false;;;;;; -97482;9;0;false;false;0;0;0;;; -97491;1;0;false;false;;;;;; -97492;1;0;false;false;0;0;0;;; -97493;1;0;false;false;;;;;; -97494;2;0;false;false;0;0;0;;; -97496;1;0;false;false;;;;;; -97497;1;0;false;false;0;0;0;;; -97498;4;0;false;false;;;;;; -97502;3;1;false;false;127;0;85;;; -97505;1;0;false;false;;;;;; -97506;15;0;false;false;0;0;0;;; -97521;1;0;false;false;;;;;; -97522;1;0;false;false;0;0;0;;; -97523;1;0;false;false;;;;;; -97524;9;0;false;false;0;0;0;;; -97533;1;0;false;false;;;;;; -97534;1;0;false;false;0;0;0;;; -97535;1;0;false;false;;;;;; -97536;23;0;false;false;0;0;0;;; -97559;4;0;false;false;;;;;; -97563;3;1;false;false;127;0;85;;; -97566;1;0;false;false;;;;;; -97567;8;0;false;false;0;0;0;;; -97575;1;0;false;false;;;;;; -97576;1;0;false;false;0;0;0;;; -97577;1;0;false;false;;;;;; -97578;23;0;false;false;0;0;0;;; -97601;4;0;false;false;;;;;; -97605;3;1;false;false;127;0;85;;; -97608;1;0;false;false;;;;;; -97609;11;0;false;false;0;0;0;;; -97620;1;0;false;false;;;;;; -97621;1;0;false;false;0;0;0;;; -97622;1;0;false;false;;;;;; -97623;18;0;false;false;0;0;0;;; -97641;1;0;false;false;;;;;; -97642;1;0;false;false;0;0;0;;; -97643;1;0;false;false;;;;;; -97644;9;0;false;false;0;0;0;;; -97653;1;0;false;false;;;;;; -97654;1;0;false;false;0;0;0;;; -97655;1;0;false;false;;;;;; -97656;2;0;false;false;0;0;0;;; -97658;1;0;false;false;;;;;; -97659;7;0;false;false;0;0;0;;; -97666;4;0;false;false;;;;;; -97670;3;1;false;false;127;0;85;;; -97673;1;0;false;false;;;;;; -97674;13;0;false;false;0;0;0;;; -97687;8;0;false;false;;;;;; -97695;65;0;false;false;63;127;95;;; -97760;2;0;false;false;;;;;; -97762;38;0;false;false;63;127;95;;; -97800;2;0;false;false;;;;;; -97802;11;0;false;false;0;0;0;;; -97813;1;0;false;false;;;;;; -97814;1;0;false;false;0;0;0;;; -97815;1;0;false;false;;;;;; -97816;11;0;false;false;0;0;0;;; -97827;1;0;false;false;;;;;; -97828;13;0;false;false;0;0;0;;; -97841;4;0;false;false;;;;;; -97845;9;0;false;false;0;0;0;;; -97854;1;0;false;false;;;;;; -97855;2;0;false;false;0;0;0;;; -97857;1;0;false;false;;;;;; -97858;12;0;false;false;0;0;0;;; -97870;4;0;false;false;;;;;; -97874;11;0;false;false;0;0;0;;; -97885;1;0;false;false;;;;;; -97886;1;0;false;false;0;0;0;;; -97887;1;0;false;false;;;;;; -97888;33;0;false;false;0;0;0;;; -97921;1;0;false;false;;;;;; -97922;11;0;false;false;0;0;0;;; -97933;5;0;false;false;;;;;; -97938;2;1;false;false;127;0;85;;; -97940;1;0;false;false;;;;;; -97941;8;0;false;false;0;0;0;;; -97949;1;0;false;false;;;;;; -97950;1;0;false;false;0;0;0;;; -97951;5;0;false;false;;;;;; -97956;28;0;false;false;0;0;0;;; -97984;4;0;false;false;;;;;; -97988;1;0;false;false;0;0;0;;; -97989;4;0;false;false;;;;;; -97993;42;0;false;false;63;127;95;;; -98035;2;0;false;false;;;;;; -98037;12;0;false;false;0;0;0;;; -98049;1;0;false;false;;;;;; -98050;1;0;false;false;0;0;0;;; -98051;1;0;false;false;;;;;; -98052;20;0;false;false;0;0;0;;; -98072;1;0;false;false;;;;;; -98073;1;0;false;false;0;0;0;;; -98074;1;0;false;false;;;;;; -98075;11;0;false;false;0;0;0;;; -98086;1;0;false;false;;;;;; -98087;1;0;false;false;0;0;0;;; -98088;1;0;false;false;;;;;; -98089;23;0;false;false;0;0;0;;; -98112;4;0;false;false;;;;;; -98116;2;1;false;false;127;0;85;;; -98118;1;0;false;false;;;;;; -98119;13;0;false;false;0;0;0;;; -98132;1;0;false;false;;;;;; -98133;1;0;false;false;0;0;0;;; -98134;1;0;false;false;;;;;; -98135;8;0;false;false;0;0;0;;; -98143;1;0;false;false;;;;;; -98144;1;0;false;false;0;0;0;;; -98145;1;0;false;false;;;;;; -98146;16;0;false;false;0;0;0;;; -98162;1;0;false;false;;;;;; -98163;1;0;false;false;0;0;0;;; -98164;5;0;false;false;;;;;; -98169;12;0;false;false;0;0;0;;; -98181;1;0;false;false;;;;;; -98182;1;0;false;false;0;0;0;;; -98183;1;0;false;false;;;;;; -98184;15;0;false;false;0;0;0;;; -98199;1;0;false;false;;;;;; -98200;1;0;false;false;0;0;0;;; -98201;1;0;false;false;;;;;; -98202;9;0;false;false;0;0;0;;; -98211;4;0;false;false;;;;;; -98215;1;0;false;false;0;0;0;;; -98216;4;0;false;false;;;;;; -98220;2;1;false;false;127;0;85;;; -98222;1;0;false;false;;;;;; -98223;13;0;false;false;0;0;0;;; -98236;1;0;false;false;;;;;; -98237;1;0;false;false;0;0;0;;; -98238;1;0;false;false;;;;;; -98239;21;0;false;false;0;0;0;;; -98260;1;0;false;false;;;;;; -98261;1;0;false;false;0;0;0;;; -98262;7;0;false;false;;;;;; -98269;37;0;false;false;0;0;0;;; -98306;1;0;false;false;;;;;; -98307;4;1;false;false;127;0;85;;; -98311;2;0;false;false;0;0;0;;; -98313;4;0;false;false;;;;;; -98317;1;0;false;false;0;0;0;;; -98318;3;0;false;false;;;;;; -98321;1;0;false;false;0;0;0;;; -98322;3;0;false;false;;;;;; -98325;66;0;false;false;63;127;95;;; -98391;1;0;false;false;;;;;; -98392;69;0;false;false;63;127;95;;; -98461;1;0;false;false;;;;;; -98462;21;0;false;false;0;0;0;;; -98483;3;0;false;false;;;;;; -98486;51;0;false;false;63;127;95;;; -98537;1;0;false;false;;;;;; -98538;3;1;false;false;127;0;85;;; -98541;1;0;false;false;;;;;; -98542;13;0;false;false;0;0;0;;; -98555;1;0;false;false;;;;;; -98556;1;0;false;false;0;0;0;;; -98557;1;0;false;false;;;;;; -98558;16;0;false;false;0;0;0;;; -98574;1;0;false;false;;;;;; -98575;1;0;false;false;0;0;0;;; -98576;1;0;false;false;;;;;; -98577;23;0;false;false;0;0;0;;; -98600;3;0;false;false;;;;;; -98603;7;0;false;false;0;0;0;;; -98610;1;0;false;false;;;;;; -98611;1;0;false;false;0;0;0;;; -98612;1;0;false;false;;;;;; -98613;10;0;false;false;0;0;0;;; -98623;1;0;false;false;;;;;; -98624;1;0;false;false;0;0;0;;; -98625;1;0;false;false;;;;;; -98626;14;0;false;false;0;0;0;;; -98640;2;0;false;false;;;;;; -98642;1;0;false;false;0;0;0;;; -98643;2;0;false;false;;;;;; -98645;3;0;false;false;63;95;191;;; -98648;3;0;false;false;;;;;; -98651;1;0;false;false;63;95;191;;; -98652;1;0;false;false;;;;;; -98653;5;0;false;false;63;95;191;;; -98658;1;0;false;false;;;;;; -98659;3;0;false;false;63;95;191;;; -98662;1;0;false;false;;;;;; -98663;6;0;false;false;63;95;191;;; -98669;1;0;false;false;;;;;; -98670;2;0;false;false;63;95;191;;; -98672;1;0;false;false;;;;;; -98673;3;0;false;false;63;95;191;;; -98676;1;0;false;false;;;;;; -98677;3;0;false;false;63;95;191;;; -98680;1;0;false;false;;;;;; -98681;2;0;false;false;63;95;191;;; -98683;1;0;false;false;;;;;; -98684;3;0;false;false;63;95;191;;; -98687;1;0;false;false;;;;;; -98688;4;0;false;false;63;95;191;;; -98692;1;0;false;false;;;;;; -98693;5;0;false;false;63;95;191;;; -98698;1;0;false;false;;;;;; -98699;7;0;false;false;63;95;191;;; -98706;1;0;false;false;;;;;; -98707;5;0;false;false;63;95;191;;; -98712;3;0;false;false;;;;;; -98715;2;0;false;false;63;95;191;;; -98717;2;0;false;false;;;;;; -98719;4;1;false;false;127;0;85;;; -98723;1;0;false;false;;;;;; -98724;11;0;false;false;0;0;0;;; -98735;1;0;false;false;;;;;; -98736;1;0;false;false;0;0;0;;; -98737;3;0;false;false;;;;;; -98740;57;0;false;false;63;127;95;;; -98797;1;0;false;false;;;;;; -98798;2;1;false;false;127;0;85;;; -98800;1;0;false;false;;;;;; -98801;16;0;false;false;0;0;0;;; -98817;1;0;false;false;;;;;; -98818;1;0;false;false;0;0;0;;; -98819;4;0;false;false;;;;;; -98823;12;0;false;false;0;0;0;;; -98835;3;0;false;false;;;;;; -98838;1;0;false;false;0;0;0;;; -98839;3;0;false;false;;;;;; -98842;4;1;false;false;127;0;85;;; -98846;1;0;false;false;;;;;; -98847;1;0;false;false;0;0;0;;; -98848;4;0;false;false;;;;;; -98852;3;1;false;false;127;0;85;;; -98855;1;0;false;false;;;;;; -98856;4;0;false;false;0;0;0;;; -98860;1;0;false;false;;;;;; -98861;1;0;false;false;0;0;0;;; -98862;1;0;false;false;;;;;; -98863;17;0;false;false;0;0;0;;; -98880;4;0;false;false;;;;;; -98884;3;1;false;false;127;0;85;;; -98887;1;0;false;false;;;;;; -98888;17;0;false;false;0;0;0;;; -98905;1;0;false;false;;;;;; -98906;1;0;false;false;0;0;0;;; -98907;1;0;false;false;;;;;; -98908;29;0;false;false;0;0;0;;; -98937;1;0;false;false;;;;;; -98938;1;0;false;false;0;0;0;;; -98939;1;0;false;false;;;;;; -98940;31;0;false;false;0;0;0;;; -98971;7;0;false;false;;;;;; -98978;2;1;false;false;127;0;85;;; -98980;1;0;false;false;;;;;; -98981;12;0;false;false;0;0;0;;; -98993;1;0;false;false;;;;;; -98994;1;0;false;false;0;0;0;;; -98995;1;0;false;false;;;;;; -98996;18;0;false;false;0;0;0;;; -99014;1;0;false;false;;;;;; -99015;1;0;false;false;0;0;0;;; -99016;5;0;false;false;;;;;; -99021;11;0;false;false;0;0;0;;; -99032;1;0;false;false;;;;;; -99033;1;0;false;false;0;0;0;;; -99034;1;0;false;false;;;;;; -99035;18;0;false;false;0;0;0;;; -99053;5;0;false;false;;;;;; -99058;12;0;false;false;0;0;0;;; -99070;4;0;false;false;;;;;; -99074;1;0;false;false;0;0;0;;; -99075;3;0;false;false;;;;;; -99078;1;0;false;false;0;0;0;;; -99079;2;0;false;false;;;;;; -99081;1;0;false;false;0;0;0;;; -99082;2;0;false;false;;;;;; -99084;3;0;false;false;63;95;191;;; -99087;3;0;false;false;;;;;; -99090;1;0;false;false;63;95;191;;; -99091;1;0;false;false;;;;;; -99092;5;0;false;false;63;95;191;;; -99097;1;0;false;false;;;;;; -99098;3;0;false;false;63;95;191;;; -99101;1;0;false;false;;;;;; -99102;6;0;false;false;63;95;191;;; -99108;1;0;false;false;;;;;; -99109;2;0;false;false;63;95;191;;; -99111;1;0;false;false;;;;;; -99112;3;0;false;false;63;95;191;;; -99115;1;0;false;false;;;;;; -99116;9;0;false;false;63;95;191;;; -99125;1;0;false;false;;;;;; -99126;2;0;false;false;63;95;191;;; -99128;1;0;false;false;;;;;; -99129;3;0;false;false;63;95;191;;; -99132;1;0;false;false;;;;;; -99133;5;0;false;false;63;95;191;;; -99138;1;0;false;false;;;;;; -99139;5;0;false;false;63;95;191;;; -99144;1;0;false;false;;;;;; -99145;7;0;false;false;63;95;191;;; -99152;1;0;false;false;;;;;; -99153;5;0;false;false;63;95;191;;; -99158;3;0;false;false;;;;;; -99161;2;0;false;false;63;95;191;;; -99163;2;0;false;false;;;;;; -99165;4;1;false;false;127;0;85;;; -99169;1;0;false;false;;;;;; -99170;13;0;false;false;0;0;0;;; -99183;1;0;false;false;;;;;; -99184;1;0;false;false;0;0;0;;; -99185;3;0;false;false;;;;;; -99188;3;1;false;false;127;0;85;;; -99191;1;0;false;false;;;;;; -99192;14;0;false;false;0;0;0;;; -99206;1;0;false;false;;;;;; -99207;1;0;false;false;0;0;0;;; -99208;1;0;false;false;;;;;; -99209;34;0;false;false;0;0;0;;; -99243;6;0;false;false;;;;;; -99249;2;1;false;false;127;0;85;;; -99251;1;0;false;false;;;;;; -99252;12;0;false;false;0;0;0;;; -99264;1;0;false;false;;;;;; -99265;1;0;false;false;0;0;0;;; -99266;1;0;false;false;;;;;; -99267;15;0;false;false;0;0;0;;; -99282;1;0;false;false;;;;;; -99283;1;0;false;false;0;0;0;;; -99284;4;0;false;false;;;;;; -99288;11;0;false;false;0;0;0;;; -99299;1;0;false;false;;;;;; -99300;1;0;false;false;0;0;0;;; -99301;1;0;false;false;;;;;; -99302;15;0;false;false;0;0;0;;; -99317;4;0;false;false;;;;;; -99321;66;0;false;false;63;127;95;;; -99387;2;0;false;false;;;;;; -99389;69;0;false;false;63;127;95;;; -99458;2;0;false;false;;;;;; -99460;20;0;false;false;0;0;0;;; -99480;3;0;false;false;;;;;; -99483;1;0;false;false;0;0;0;;; -99484;2;0;false;false;;;;;; -99486;1;0;false;false;0;0;0;;; -99487;2;0;false;false;;;;;; -99489;3;0;false;false;63;95;191;;; -99492;3;0;false;false;;;;;; -99495;1;0;false;false;63;95;191;;; -99496;1;0;false;false;;;;;; -99497;7;0;false;false;63;95;191;;; -99504;1;0;false;false;;;;;; -99505;3;0;false;false;63;95;191;;; -99508;1;0;false;false;;;;;; -99509;4;0;false;false;63;95;191;;; -99513;1;0;false;false;;;;;; -99514;2;0;false;false;63;95;191;;; -99516;1;0;false;false;;;;;; -99517;2;0;false;false;63;95;191;;; -99519;1;0;false;false;;;;;; -99520;4;0;false;false;63;95;191;;; -99524;1;0;false;false;;;;;; -99525;3;0;false;false;63;95;191;;; -99528;1;0;false;false;;;;;; -99529;5;0;false;false;63;95;191;;; -99534;1;0;false;false;;;;;; -99535;4;0;false;false;63;95;191;;; -99539;1;0;false;false;;;;;; -99540;10;0;false;false;63;95;191;;; -99550;1;0;false;false;;;;;; -99551;2;0;false;false;63;95;191;;; -99553;1;0;false;false;;;;;; -99554;6;0;false;false;63;95;191;;; -99560;3;0;false;false;;;;;; -99563;1;0;false;false;63;95;191;;; -99564;1;0;false;false;;;;;; -99565;2;0;false;false;63;95;191;;; -99567;1;0;false;false;;;;;; -99568;3;0;false;false;63;95;191;;; -99571;1;0;false;false;;;;;; -99572;7;0;false;false;63;95;191;;; -99579;1;0;false;false;;;;;; -99580;4;0;false;false;63;95;191;;; -99584;1;0;false;false;;;;;; -99585;7;0;false;false;63;95;191;;; -99592;1;0;false;false;;;;;; -99593;3;0;false;false;63;95;191;;; -99596;1;0;false;false;;;;;; -99597;5;0;false;false;63;95;191;;; -99602;1;0;false;false;;;;;; -99603;7;0;false;false;63;95;191;;; -99610;1;0;false;false;;;;;; -99611;4;0;false;false;63;95;191;;; -99615;1;0;false;false;;;;;; -99616;5;0;false;false;63;95;191;;; -99621;3;0;false;false;;;;;; -99624;1;0;false;false;63;95;191;;; -99625;1;0;false;false;;;;;; -99626;3;0;false;false;63;95;191;;; -99629;1;0;false;false;;;;;; -99630;5;0;false;false;63;95;191;;; -99635;1;0;false;false;;;;;; -99636;2;0;false;false;63;95;191;;; -99638;1;0;false;false;;;;;; -99639;8;0;false;false;63;95;191;;; -99647;1;0;false;false;;;;;; -99648;3;0;false;false;63;95;191;;; -99651;1;0;false;false;;;;;; -99652;4;0;false;false;63;95;191;;; -99656;1;0;false;false;;;;;; -99657;6;0;false;false;63;95;191;;; -99663;1;0;false;false;;;;;; -99664;2;0;false;false;63;95;191;;; -99666;1;0;false;false;;;;;; -99667;5;0;false;false;63;95;191;;; -99672;1;0;false;false;;;;;; -99673;2;0;false;false;63;95;191;;; -99675;1;0;false;false;;;;;; -99676;4;0;false;false;63;95;191;;; -99680;1;0;false;false;;;;;; -99681;3;0;false;false;63;95;191;;; -99684;1;0;false;false;;;;;; -99685;8;0;false;false;63;95;191;;; -99693;4;0;false;false;;;;;; -99697;1;0;false;false;63;95;191;;; -99698;1;0;false;false;;;;;; -99699;8;0;false;false;63;95;191;;; -99707;1;0;false;false;;;;;; -99708;2;0;false;false;63;95;191;;; -99710;1;0;false;false;;;;;; -99711;3;0;false;false;63;95;191;;; -99714;1;0;false;false;;;;;; -99715;3;0;false;false;63;95;191;;; -99718;1;0;false;false;;;;;; -99719;4;0;false;false;63;95;191;;; -99723;1;0;false;false;;;;;; -99724;7;0;false;false;63;95;191;;; -99731;1;0;false;false;;;;;; -99732;3;0;false;false;63;95;191;;; -99735;1;0;false;false;;;;;; -99736;5;0;false;false;63;95;191;;; -99741;1;0;false;false;;;;;; -99742;3;0;false;false;63;95;191;;; -99745;1;0;false;false;;;;;; -99746;9;0;false;false;63;95;191;;; -99755;1;0;false;false;;;;;; -99756;2;0;false;false;63;95;191;;; -99758;1;0;false;false;;;;;; -99759;3;0;false;false;63;95;191;;; -99762;1;0;false;false;;;;;; -99763;9;0;false;false;63;95;191;;; -99772;4;0;false;false;;;;;; -99776;1;0;false;false;63;95;191;;; -99777;1;0;false;false;;;;;; -99778;2;0;false;false;63;95;191;;; -99780;1;0;false;false;;;;;; -99781;3;0;false;false;63;95;191;;; -99784;1;0;false;false;;;;;; -99785;4;0;false;false;63;95;191;;; -99789;1;0;false;false;;;;;; -99790;5;0;false;false;63;95;191;;; -99795;1;0;false;false;;;;;; -99796;1;0;false;false;63;95;191;;; -99797;1;0;false;false;;;;;; -99798;4;0;false;false;63;95;191;;; -99802;1;0;false;false;;;;;; -99803;4;0;false;false;63;95;191;;; -99807;1;0;false;false;;;;;; -99808;6;0;false;false;63;95;191;;; -99814;1;0;false;false;;;;;; -99815;2;0;false;false;63;95;191;;; -99817;1;0;false;false;;;;;; -99818;3;0;false;false;63;95;191;;; -99821;1;0;false;false;;;;;; -99822;9;0;false;false;63;95;191;;; -99831;1;0;false;false;;;;;; -99832;2;0;false;false;63;95;191;;; -99834;1;0;false;false;;;;;; -99835;4;0;false;false;63;95;191;;; -99839;1;0;false;false;;;;;; -99840;4;0;false;false;63;95;191;;; -99844;1;0;false;false;;;;;; -99845;3;0;false;false;63;95;191;;; -99848;3;0;false;false;;;;;; -99851;1;0;false;false;63;95;191;;; -99852;1;0;false;false;;;;;; -99853;5;0;false;false;63;95;191;;; -99858;1;0;false;false;;;;;; -99859;2;0;false;false;63;95;191;;; -99861;1;0;false;false;;;;;; -99862;5;0;false;false;63;95;191;;; -99867;1;0;false;false;;;;;; -99868;2;0;false;false;63;95;191;;; -99870;1;0;false;false;;;;;; -99871;5;0;false;false;63;95;191;;; -99876;1;0;false;false;;;;;; -99877;2;0;false;false;63;95;191;;; -99879;1;0;false;false;;;;;; -99880;3;0;false;false;63;95;191;;; -99883;1;0;false;false;;;;;; -99884;5;0;false;false;63;95;191;;; -99889;1;0;false;false;;;;;; -99890;10;0;false;false;63;95;191;;; -99900;3;0;false;false;;;;;; -99903;2;0;false;false;63;95;191;;; -99905;2;0;false;false;;;;;; -99907;4;1;false;false;127;0;85;;; -99911;1;0;false;false;;;;;; -99912;9;0;false;false;0;0;0;;; -99921;7;1;false;false;127;0;85;;; -99928;1;0;false;false;;;;;; -99929;7;0;false;false;0;0;0;;; -99936;1;0;false;false;;;;;; -99937;3;1;false;false;127;0;85;;; -99940;1;0;false;false;;;;;; -99941;6;0;false;false;0;0;0;;; -99947;1;0;false;false;;;;;; -99948;1;0;false;false;0;0;0;;; -99949;3;0;false;false;;;;;; -99952;3;1;false;false;127;0;85;;; -99955;1;0;false;false;;;;;; -99956;10;0;false;false;0;0;0;;; -99966;1;0;false;false;;;;;; -99967;1;0;false;false;0;0;0;;; -99968;1;0;false;false;;;;;; -99969;8;0;false;false;0;0;0;;; -99977;3;0;false;false;;;;;; -99980;3;1;false;false;127;0;85;;; -99983;1;0;false;false;;;;;; -99984;16;0;false;false;0;0;0;;; -100000;1;0;false;false;;;;;; -100001;1;0;false;false;0;0;0;;; -100002;1;0;false;false;;;;;; -100003;23;0;false;false;0;0;0;;; -100026;3;0;false;false;;;;;; -100029;3;1;false;false;127;0;85;;; -100032;1;0;false;false;;;;;; -100033;9;0;false;false;0;0;0;;; -100042;1;0;false;false;;;;;; -100043;1;0;false;false;0;0;0;;; -100044;1;0;false;false;;;;;; -100045;15;0;false;false;0;0;0;;; -100060;6;0;false;false;;;;;; -100066;2;1;false;false;127;0;85;;; -100068;1;0;false;false;;;;;; -100069;10;0;false;false;0;0;0;;; -100079;1;0;false;false;;;;;; -100080;1;0;false;false;0;0;0;;; -100081;1;0;false;false;;;;;; -100082;2;0;false;false;0;0;0;;; -100084;1;0;false;false;;;;;; -100085;1;0;false;false;0;0;0;;; -100086;5;0;false;false;;;;;; -100091;3;1;false;false;127;0;85;;; -100094;1;0;false;false;;;;;; -100095;11;0;false;false;0;0;0;;; -100106;1;0;false;false;;;;;; -100107;1;0;false;false;0;0;0;;; -100108;1;0;false;false;;;;;; -100109;11;0;false;false;0;0;0;;; -100120;1;0;false;false;;;;;; -100121;19;0;false;false;0;0;0;;; -100140;1;0;false;false;;;;;; -100141;8;0;false;false;0;0;0;;; -100149;4;0;false;false;;;;;; -100153;3;1;false;false;127;0;85;;; -100156;1;0;false;false;;;;;; -100157;13;0;false;false;0;0;0;;; -100170;8;0;false;false;;;;;; -100178;9;0;false;false;0;0;0;;; -100187;1;0;false;false;;;;;; -100188;2;0;false;false;0;0;0;;; -100190;1;0;false;false;;;;;; -100191;12;0;false;false;0;0;0;;; -100203;4;0;false;false;;;;;; -100207;11;0;false;false;0;0;0;;; -100218;1;0;false;false;;;;;; -100219;1;0;false;false;0;0;0;;; -100220;1;0;false;false;;;;;; -100221;33;0;false;false;0;0;0;;; -100254;1;0;false;false;;;;;; -100255;11;0;false;false;0;0;0;;; -100266;4;0;false;false;;;;;; -100270;2;1;false;false;127;0;85;;; -100272;1;0;false;false;;;;;; -100273;8;0;false;false;0;0;0;;; -100281;1;0;false;false;;;;;; -100282;1;0;false;false;0;0;0;;; -100283;5;0;false;false;;;;;; -100288;32;0;false;false;0;0;0;;; -100320;4;0;false;false;;;;;; -100324;1;0;false;false;0;0;0;;; -100325;4;0;false;false;;;;;; -100329;37;0;false;false;63;127;95;;; -100366;2;0;false;false;;;;;; -100368;12;0;false;false;0;0;0;;; -100380;1;0;false;false;;;;;; -100381;1;0;false;false;0;0;0;;; -100382;1;0;false;false;;;;;; -100383;11;0;false;false;0;0;0;;; -100394;1;0;false;false;;;;;; -100395;20;0;false;false;0;0;0;;; -100415;1;0;false;false;;;;;; -100416;1;0;false;false;0;0;0;;; -100417;1;0;false;false;;;;;; -100418;11;0;false;false;0;0;0;;; -100429;1;0;false;false;;;;;; -100430;1;0;false;false;0;0;0;;; -100431;1;0;false;false;;;;;; -100432;24;0;false;false;0;0;0;;; -100456;4;0;false;false;;;;;; -100460;2;1;false;false;127;0;85;;; -100462;1;0;false;false;;;;;; -100463;13;0;false;false;0;0;0;;; -100476;1;0;false;false;;;;;; -100477;1;0;false;false;0;0;0;;; -100478;1;0;false;false;;;;;; -100479;21;0;false;false;0;0;0;;; -100500;1;0;false;false;;;;;; -100501;1;0;false;false;0;0;0;;; -100502;5;0;false;false;;;;;; -100507;37;0;false;false;0;0;0;;; -100544;1;0;false;false;;;;;; -100545;4;1;false;false;127;0;85;;; -100549;2;0;false;false;0;0;0;;; -100551;4;0;false;false;;;;;; -100555;1;0;false;false;0;0;0;;; -100556;3;0;false;false;;;;;; -100559;1;0;false;false;0;0;0;;; -100560;3;0;false;false;;;;;; -100563;66;0;false;false;63;127;95;;; -100629;1;0;false;false;;;;;; -100630;69;0;false;false;63;127;95;;; -100699;1;0;false;false;;;;;; -100700;21;0;false;false;0;0;0;;; -100721;3;0;false;false;;;;;; -100724;51;0;false;false;63;127;95;;; -100775;1;0;false;false;;;;;; -100776;3;1;false;false;127;0;85;;; -100779;1;0;false;false;;;;;; -100780;13;0;false;false;0;0;0;;; -100793;1;0;false;false;;;;;; -100794;1;0;false;false;0;0;0;;; -100795;1;0;false;false;;;;;; -100796;16;0;false;false;0;0;0;;; -100812;1;0;false;false;;;;;; -100813;1;0;false;false;0;0;0;;; -100814;1;0;false;false;;;;;; -100815;23;0;false;false;0;0;0;;; -100838;3;0;false;false;;;;;; -100841;7;0;false;false;0;0;0;;; -100848;1;0;false;false;;;;;; -100849;1;0;false;false;0;0;0;;; -100850;1;0;false;false;;;;;; -100851;10;0;false;false;0;0;0;;; -100861;1;0;false;false;;;;;; -100862;1;0;false;false;0;0;0;;; -100863;1;0;false;false;;;;;; -100864;14;0;false;false;0;0;0;;; -100878;2;0;false;false;;;;;; -100880;1;0;false;false;0;0;0;;; -100881;2;0;false;false;;;;;; -100883;3;0;false;false;63;95;191;;; -100886;3;0;false;false;;;;;; -100889;1;0;false;false;63;95;191;;; -100890;1;0;false;false;;;;;; -100891;7;0;false;false;63;95;191;;; -100898;1;0;false;false;;;;;; -100899;3;0;false;false;63;95;191;;; -100902;1;0;false;false;;;;;; -100903;9;0;false;false;63;95;191;;; -100912;1;0;false;false;;;;;; -100913;2;0;false;false;63;95;191;;; -100915;1;0;false;false;;;;;; -100916;6;0;false;false;63;95;191;;; -100922;1;0;false;false;;;;;; -100923;2;0;false;false;63;95;191;;; -100925;1;0;false;false;;;;;; -100926;3;0;false;false;63;95;191;;; -100929;1;0;false;false;;;;;; -100930;7;0;false;false;63;95;191;;; -100937;1;0;false;false;;;;;; -100938;5;0;false;false;63;95;191;;; -100943;1;0;false;false;;;;;; -100944;9;0;false;false;63;95;191;;; -100953;3;0;false;false;;;;;; -100956;2;0;false;false;63;95;191;;; -100958;2;0;false;false;;;;;; -100960;4;1;false;false;127;0;85;;; -100964;1;0;false;false;;;;;; -100965;12;0;false;false;0;0;0;;; -100977;3;1;false;false;127;0;85;;; -100980;1;0;false;false;;;;;; -100981;10;0;false;false;0;0;0;;; -100991;1;0;false;false;;;;;; -100992;1;0;false;false;0;0;0;;; -100993;3;0;false;false;;;;;; -100996;3;1;false;false;127;0;85;;; -100999;1;0;false;false;;;;;; -101000;11;0;false;false;0;0;0;;; -101011;1;0;false;false;;;;;; -101012;1;0;false;false;0;0;0;;; -101013;1;0;false;false;;;;;; -101014;3;0;false;false;0;0;0;;; -101017;3;0;false;false;;;;;; -101020;3;1;false;false;127;0;85;;; -101023;1;0;false;false;;;;;; -101024;9;0;false;false;0;0;0;;; -101033;1;0;false;false;;;;;; -101034;1;0;false;false;0;0;0;;; -101035;1;0;false;false;;;;;; -101036;3;0;false;false;0;0;0;;; -101039;6;0;false;false;;;;;; -101045;2;1;false;false;127;0;85;;; -101047;1;0;false;false;;;;;; -101048;16;0;false;false;0;0;0;;; -101064;1;0;false;false;;;;;; -101065;2;0;false;false;0;0;0;;; -101067;1;0;false;false;;;;;; -101068;3;0;false;false;0;0;0;;; -101071;1;0;false;false;;;;;; -101072;1;0;false;false;0;0;0;;; -101073;4;0;false;false;;;;;; -101077;15;0;false;false;0;0;0;;; -101092;1;0;false;false;;;;;; -101093;1;0;false;false;0;0;0;;; -101094;1;0;false;false;;;;;; -101095;12;0;false;false;0;0;0;;; -101107;3;0;false;false;;;;;; -101110;1;0;false;false;0;0;0;;; -101111;4;0;false;false;;;;;; -101115;2;1;false;false;127;0;85;;; -101117;1;0;false;false;;;;;; -101118;10;0;false;false;0;0;0;;; -101128;1;0;false;false;;;;;; -101129;2;0;false;false;0;0;0;;; -101131;1;0;false;false;;;;;; -101132;19;0;false;false;0;0;0;;; -101151;1;0;false;false;;;;;; -101152;1;0;false;false;0;0;0;;; -101153;4;0;false;false;;;;;; -101157;2;1;false;false;127;0;85;;; -101159;1;0;false;false;;;;;; -101160;12;0;false;false;0;0;0;;; -101172;1;0;false;false;;;;;; -101173;1;0;false;false;0;0;0;;; -101174;1;0;false;false;;;;;; -101175;12;0;false;false;0;0;0;;; -101187;1;0;false;false;;;;;; -101188;1;0;false;false;0;0;0;;; -101189;5;0;false;false;;;;;; -101194;19;0;false;false;63;127;95;;; -101213;3;0;false;false;;;;;; -101216;9;0;false;false;0;0;0;;; -101225;1;0;false;false;;;;;; -101226;1;0;false;false;0;0;0;;; -101227;1;0;false;false;;;;;; -101228;12;0;false;false;0;0;0;;; -101240;6;0;false;false;;;;;; -101246;11;0;false;false;0;0;0;;; -101257;1;0;false;false;;;;;; -101258;1;0;false;false;0;0;0;;; -101259;1;0;false;false;;;;;; -101260;11;0;false;false;0;0;0;;; -101271;1;0;false;false;;;;;; -101272;1;0;false;false;0;0;0;;; -101273;1;0;false;false;;;;;; -101274;12;0;false;false;0;0;0;;; -101286;7;0;false;false;;;;;; -101293;46;0;false;false;63;127;95;;; -101339;3;0;false;false;;;;;; -101342;2;1;false;false;127;0;85;;; -101344;1;0;false;false;;;;;; -101345;12;0;false;false;0;0;0;;; -101357;1;0;false;false;;;;;; -101358;2;0;false;false;0;0;0;;; -101360;1;0;false;false;;;;;; -101361;16;0;false;false;0;0;0;;; -101377;1;0;false;false;;;;;; -101378;1;0;false;false;0;0;0;;; -101379;6;0;false;false;;;;;; -101385;9;0;false;false;0;0;0;;; -101394;1;0;false;false;;;;;; -101395;1;0;false;false;0;0;0;;; -101396;1;0;false;false;;;;;; -101397;12;0;false;false;0;0;0;;; -101409;6;0;false;false;;;;;; -101415;11;0;false;false;0;0;0;;; -101426;1;0;false;false;;;;;; -101427;1;0;false;false;0;0;0;;; -101428;1;0;false;false;;;;;; -101429;16;0;false;false;0;0;0;;; -101445;5;0;false;false;;;;;; -101450;1;0;false;false;0;0;0;;; -101451;4;0;false;false;;;;;; -101455;1;0;false;false;0;0;0;;; -101456;4;0;false;false;;;;;; -101460;4;1;false;false;127;0;85;;; -101464;1;0;false;false;;;;;; -101465;59;0;false;false;63;127;95;;; -101524;2;0;false;false;;;;;; -101526;2;1;false;false;127;0;85;;; -101528;1;0;false;false;;;;;; -101529;16;0;false;false;0;0;0;;; -101545;1;0;false;false;;;;;; -101546;2;0;false;false;0;0;0;;; -101548;1;0;false;false;;;;;; -101549;11;0;false;false;0;0;0;;; -101560;1;0;false;false;;;;;; -101561;2;0;false;false;0;0;0;;; -101563;1;0;false;false;;;;;; -101564;11;0;false;false;0;0;0;;; -101575;1;0;false;false;;;;;; -101576;1;0;false;false;0;0;0;;; -101577;1;0;false;false;;;;;; -101578;12;0;false;false;0;0;0;;; -101590;1;0;false;false;;;;;; -101591;1;0;false;false;0;0;0;;; -101592;5;0;false;false;;;;;; -101597;68;0;false;false;63;127;95;;; -101665;3;0;false;false;;;;;; -101668;24;0;false;false;63;127;95;;; -101692;3;0;false;false;;;;;; -101695;9;0;false;false;0;0;0;;; -101704;1;0;false;false;;;;;; -101705;1;0;false;false;0;0;0;;; -101706;1;0;false;false;;;;;; -101707;12;0;false;false;0;0;0;;; -101719;5;0;false;false;;;;;; -101724;11;0;false;false;0;0;0;;; -101735;1;0;false;false;;;;;; -101736;1;0;false;false;0;0;0;;; -101737;1;0;false;false;;;;;; -101738;11;0;false;false;0;0;0;;; -101749;1;0;false;false;;;;;; -101750;1;0;false;false;0;0;0;;; -101751;1;0;false;false;;;;;; -101752;12;0;false;false;0;0;0;;; -101764;6;0;false;false;;;;;; -101770;1;0;false;false;0;0;0;;; -101771;3;0;false;false;;;;;; -101774;1;0;false;false;0;0;0;;; -101775;3;0;false;false;;;;;; -101778;4;1;false;false;127;0;85;;; -101782;1;0;false;false;;;;;; -101783;1;0;false;false;0;0;0;;; -101784;4;0;false;false;;;;;; -101788;2;1;false;false;127;0;85;;; -101790;1;0;false;false;;;;;; -101791;12;0;false;false;0;0;0;;; -101803;1;0;false;false;;;;;; -101804;1;0;false;false;0;0;0;;; -101805;1;0;false;false;;;;;; -101806;12;0;false;false;0;0;0;;; -101818;1;0;false;false;;;;;; -101819;1;0;false;false;0;0;0;;; -101820;5;0;false;false;;;;;; -101825;19;0;false;false;63;127;95;;; -101844;3;0;false;false;;;;;; -101847;11;0;false;false;0;0;0;;; -101858;1;0;false;false;;;;;; -101859;1;0;false;false;0;0;0;;; -101860;1;0;false;false;;;;;; -101861;12;0;false;false;0;0;0;;; -101873;5;0;false;false;;;;;; -101878;9;0;false;false;0;0;0;;; -101887;1;0;false;false;;;;;; -101888;1;0;false;false;0;0;0;;; -101889;1;0;false;false;;;;;; -101890;11;0;false;false;0;0;0;;; -101901;1;0;false;false;;;;;; -101902;1;0;false;false;0;0;0;;; -101903;1;0;false;false;;;;;; -101904;12;0;false;false;0;0;0;;; -101916;5;0;false;false;;;;;; -101921;46;0;false;false;63;127;95;;; -101967;3;0;false;false;;;;;; -101970;2;1;false;false;127;0;85;;; -101972;1;0;false;false;;;;;; -101973;12;0;false;false;0;0;0;;; -101985;1;0;false;false;;;;;; -101986;2;0;false;false;0;0;0;;; -101988;1;0;false;false;;;;;; -101989;16;0;false;false;0;0;0;;; -102005;1;0;false;false;;;;;; -102006;1;0;false;false;0;0;0;;; -102007;6;0;false;false;;;;;; -102013;11;0;false;false;0;0;0;;; -102024;1;0;false;false;;;;;; -102025;1;0;false;false;0;0;0;;; -102026;1;0;false;false;;;;;; -102027;12;0;false;false;0;0;0;;; -102039;10;0;false;false;;;;;; -102049;11;0;false;false;0;0;0;;; -102060;1;0;false;false;;;;;; -102061;1;0;false;false;0;0;0;;; -102062;1;0;false;false;;;;;; -102063;16;0;false;false;0;0;0;;; -102079;5;0;false;false;;;;;; -102084;1;0;false;false;0;0;0;;; -102085;4;0;false;false;;;;;; -102089;1;0;false;false;0;0;0;;; -102090;4;0;false;false;;;;;; -102094;4;1;false;false;127;0;85;;; -102098;1;0;false;false;;;;;; -102099;59;0;false;false;63;127;95;;; -102158;2;0;false;false;;;;;; -102160;2;1;false;false;127;0;85;;; -102162;1;0;false;false;;;;;; -102163;16;0;false;false;0;0;0;;; -102179;1;0;false;false;;;;;; -102180;2;0;false;false;0;0;0;;; -102182;1;0;false;false;;;;;; -102183;11;0;false;false;0;0;0;;; -102194;1;0;false;false;;;;;; -102195;2;0;false;false;0;0;0;;; -102197;1;0;false;false;;;;;; -102198;11;0;false;false;0;0;0;;; -102209;1;0;false;false;;;;;; -102210;1;0;false;false;0;0;0;;; -102211;1;0;false;false;;;;;; -102212;12;0;false;false;0;0;0;;; -102224;1;0;false;false;;;;;; -102225;1;0;false;false;0;0;0;;; -102226;5;0;false;false;;;;;; -102231;69;0;false;false;63;127;95;;; -102300;3;0;false;false;;;;;; -102303;24;0;false;false;63;127;95;;; -102327;3;0;false;false;;;;;; -102330;11;0;false;false;0;0;0;;; -102341;1;0;false;false;;;;;; -102342;1;0;false;false;0;0;0;;; -102343;1;0;false;false;;;;;; -102344;12;0;false;false;0;0;0;;; -102356;5;0;false;false;;;;;; -102361;9;0;false;false;0;0;0;;; -102370;1;0;false;false;;;;;; -102371;1;0;false;false;0;0;0;;; -102372;1;0;false;false;;;;;; -102373;11;0;false;false;0;0;0;;; -102384;1;0;false;false;;;;;; -102385;1;0;false;false;0;0;0;;; -102386;1;0;false;false;;;;;; -102387;12;0;false;false;0;0;0;;; -102399;6;0;false;false;;;;;; -102405;1;0;false;false;0;0;0;;; -102406;3;0;false;false;;;;;; -102409;1;0;false;false;0;0;0;;; -102410;3;0;false;false;;;;;; -102413;2;1;false;false;127;0;85;;; -102415;1;0;false;false;;;;;; -102416;12;0;false;false;0;0;0;;; -102428;1;0;false;false;;;;;; -102429;2;0;false;false;0;0;0;;; -102431;1;0;false;false;;;;;; -102432;2;0;false;false;0;0;0;;; -102434;1;0;false;false;;;;;; -102435;2;0;false;false;0;0;0;;; -102437;1;0;false;false;;;;;; -102438;9;0;false;false;0;0;0;;; -102447;1;0;false;false;;;;;; -102448;2;0;false;false;0;0;0;;; -102450;1;0;false;false;;;;;; -102451;3;0;false;false;0;0;0;;; -102454;1;0;false;false;;;;;; -102455;1;0;false;false;0;0;0;;; -102456;4;0;false;false;;;;;; -102460;32;0;false;false;0;0;0;;; -102492;1;0;false;false;;;;;; -102493;9;0;false;false;0;0;0;;; -102502;1;0;false;false;;;;;; -102503;1;0;false;false;0;0;0;;; -102504;1;0;false;false;;;;;; -102505;12;0;false;false;0;0;0;;; -102517;1;0;false;false;;;;;; -102518;4;1;false;false;127;0;85;;; -102522;2;0;false;false;0;0;0;;; -102524;4;0;false;false;;;;;; -102528;21;0;false;false;0;0;0;;; -102549;3;0;false;false;;;;;; -102552;1;0;false;false;0;0;0;;; -102553;2;0;false;false;;;;;; -102555;1;0;false;false;0;0;0;;; -102556;2;0;false;false;;;;;; -102558;3;0;false;false;63;95;191;;; -102561;3;0;false;false;;;;;; -102564;1;0;false;false;63;95;191;;; -102565;1;0;false;false;;;;;; -102566;5;0;false;false;63;95;191;;; -102571;1;0;false;false;;;;;; -102572;3;0;false;false;63;95;191;;; -102575;1;0;false;false;;;;;; -102576;5;0;false;false;63;95;191;;; -102581;1;0;false;false;;;;;; -102582;2;0;false;false;63;95;191;;; -102584;1;0;false;false;;;;;; -102585;3;0;false;false;63;95;191;;; -102588;1;0;false;false;;;;;; -102589;4;0;false;false;63;95;191;;; -102593;1;0;false;false;;;;;; -102594;9;0;false;false;63;95;191;;; -102603;1;0;false;false;;;;;; -102604;2;0;false;false;63;95;191;;; -102606;1;0;false;false;;;;;; -102607;2;0;false;false;63;95;191;;; -102609;1;0;false;false;;;;;; -102610;3;0;false;false;63;95;191;;; -102613;1;0;false;false;;;;;; -102614;9;0;false;false;63;95;191;;; -102623;1;0;false;false;;;;;; -102624;2;0;false;false;63;95;191;;; -102626;1;0;false;false;;;;;; -102627;3;0;false;false;63;95;191;;; -102630;4;0;false;false;;;;;; -102634;1;0;false;false;63;95;191;;; -102635;1;0;false;false;;;;;; -102636;4;0;false;false;63;95;191;;; -102640;1;0;false;false;;;;;; -102641;4;0;false;false;63;95;191;;; -102645;1;0;false;false;;;;;; -102646;2;0;false;false;63;95;191;;; -102648;1;0;false;false;;;;;; -102649;3;0;false;false;63;95;191;;; -102652;1;0;false;false;;;;;; -102653;6;0;false;false;63;95;191;;; -102659;1;0;false;false;;;;;; -102660;2;0;false;false;63;95;191;;; -102662;1;0;false;false;;;;;; -102663;2;0;false;false;63;95;191;;; -102665;1;0;false;false;;;;;; -102666;3;0;false;false;63;95;191;;; -102669;1;0;false;false;;;;;; -102670;3;0;false;false;63;95;191;;; -102673;1;0;false;false;;;;;; -102674;2;0;false;false;63;95;191;;; -102676;1;0;false;false;;;;;; -102677;1;0;false;false;63;95;191;;; -102678;1;0;false;false;;;;;; -102679;5;0;false;false;63;95;191;;; -102684;3;0;false;false;;;;;; -102687;2;0;false;false;63;95;191;;; -102689;2;0;false;false;;;;;; -102691;4;1;false;false;127;0;85;;; -102695;1;0;false;false;;;;;; -102696;23;0;false;false;0;0;0;;; -102719;1;0;false;false;;;;;; -102720;1;0;false;false;0;0;0;;; -102721;3;0;false;false;;;;;; -102724;3;1;false;false;127;0;85;;; -102727;1;0;false;false;;;;;; -102728;9;0;false;false;0;0;0;;; -102737;1;0;false;false;;;;;; -102738;1;0;false;false;0;0;0;;; -102739;1;0;false;false;;;;;; -102740;15;0;false;false;0;0;0;;; -102755;3;0;false;false;;;;;; -102758;3;1;false;false;127;0;85;;; -102761;1;0;false;false;;;;;; -102762;10;0;false;false;0;0;0;;; -102772;1;0;false;false;;;;;; -102773;1;0;false;false;0;0;0;;; -102774;1;0;false;false;;;;;; -102775;35;0;false;false;0;0;0;;; -102810;3;0;false;false;;;;;; -102813;3;1;false;false;127;0;85;;; -102816;1;0;false;false;;;;;; -102817;12;0;false;false;0;0;0;;; -102829;1;0;false;false;;;;;; -102830;1;0;false;false;0;0;0;;; -102831;1;0;false;false;;;;;; -102832;11;0;false;false;0;0;0;;; -102843;1;0;false;false;;;;;; -102844;1;0;false;false;0;0;0;;; -102845;1;0;false;false;;;;;; -102846;11;0;false;false;0;0;0;;; -102857;3;0;false;false;;;;;; -102860;9;0;false;false;0;0;0;;; -102869;1;0;false;false;;;;;; -102870;1;0;false;false;0;0;0;;; -102871;1;0;false;false;;;;;; -102872;4;1;false;false;127;0;85;;; -102876;1;0;false;false;0;0;0;;; -102877;3;0;false;false;;;;;; -102880;2;1;false;false;127;0;85;;; -102882;1;0;false;false;;;;;; -102883;13;0;false;false;0;0;0;;; -102896;1;0;false;false;;;;;; -102897;1;0;false;false;0;0;0;;; -102898;1;0;false;false;;;;;; -102899;36;0;false;false;0;0;0;;; -102935;1;0;false;false;;;;;; -102936;1;0;false;false;0;0;0;;; -102937;4;0;false;false;;;;;; -102941;11;0;false;false;0;0;0;;; -102952;1;0;false;false;;;;;; -102953;1;0;false;false;0;0;0;;; -102954;1;0;false;false;;;;;; -102955;27;0;false;false;0;0;0;;; -102982;1;0;false;false;;;;;; -102983;11;0;false;false;0;0;0;;; -102994;4;0;false;false;;;;;; -102998;12;0;false;false;0;0;0;;; -103010;3;0;false;false;;;;;; -103013;1;0;false;false;0;0;0;;; -103014;3;0;false;false;;;;;; -103017;4;1;false;false;127;0;85;;; -103021;3;0;false;false;;;;;; -103024;2;1;false;false;127;0;85;;; -103026;1;0;false;false;;;;;; -103027;10;0;false;false;0;0;0;;; -103037;1;0;false;false;;;;;; -103038;1;0;false;false;0;0;0;;; -103039;1;0;false;false;;;;;; -103040;22;0;false;false;0;0;0;;; -103062;1;0;false;false;;;;;; -103063;1;0;false;false;0;0;0;;; -103064;1;0;false;false;;;;;; -103065;1;0;false;false;0;0;0;;; -103066;1;0;false;false;;;;;; -103067;2;0;false;false;0;0;0;;; -103069;1;0;false;false;;;;;; -103070;16;0;false;false;0;0;0;;; -103086;1;0;false;false;;;;;; -103087;1;0;false;false;0;0;0;;; -103088;4;0;false;false;;;;;; -103092;64;0;false;false;63;127;95;;; -103156;2;0;false;false;;;;;; -103158;12;0;false;false;0;0;0;;; -103170;6;0;false;false;;;;;; -103176;11;0;false;false;0;0;0;;; -103187;1;0;false;false;;;;;; -103188;1;0;false;false;0;0;0;;; -103189;1;0;false;false;;;;;; -103190;35;0;false;false;0;0;0;;; -103225;4;0;false;false;;;;;; -103229;66;0;false;false;63;127;95;;; -103295;2;0;false;false;;;;;; -103297;69;0;false;false;63;127;95;;; -103366;2;0;false;false;;;;;; -103368;21;0;false;false;0;0;0;;; -103389;3;0;false;false;;;;;; -103392;1;0;false;false;0;0;0;;; -103393;2;0;false;false;;;;;; -103395;1;0;false;false;0;0;0;;; -103396;2;0;false;false;;;;;; -103398;3;0;false;false;63;95;191;;; -103401;3;0;false;false;;;;;; -103404;1;0;false;false;63;95;191;;; -103405;1;0;false;false;;;;;; -103406;5;0;false;false;63;95;191;;; -103411;1;0;false;false;;;;;; -103412;3;0;false;false;63;95;191;;; -103415;1;0;false;false;;;;;; -103416;5;0;false;false;63;95;191;;; -103421;1;0;false;false;;;;;; -103422;2;0;false;false;63;95;191;;; -103424;1;0;false;false;;;;;; -103425;3;0;false;false;63;95;191;;; -103428;1;0;false;false;;;;;; -103429;8;0;false;false;63;95;191;;; -103437;1;0;false;false;;;;;; -103438;9;0;false;false;63;95;191;;; -103447;1;0;false;false;;;;;; -103448;2;0;false;false;63;95;191;;; -103450;1;0;false;false;;;;;; -103451;2;0;false;false;63;95;191;;; -103453;1;0;false;false;;;;;; -103454;3;0;false;false;63;95;191;;; -103457;1;0;false;false;;;;;; -103458;3;0;false;false;63;95;191;;; -103461;1;0;false;false;;;;;; -103462;2;0;false;false;63;95;191;;; -103464;1;0;false;false;;;;;; -103465;3;0;false;false;63;95;191;;; -103468;1;0;false;false;;;;;; -103469;8;0;false;false;63;95;191;;; -103477;4;0;false;false;;;;;; -103481;1;0;false;false;63;95;191;;; -103482;1;0;false;false;;;;;; -103483;4;0;false;false;63;95;191;;; -103487;1;0;false;false;;;;;; -103488;2;0;false;false;63;95;191;;; -103490;1;0;false;false;;;;;; -103491;3;0;false;false;63;95;191;;; -103494;1;0;false;false;;;;;; -103495;6;0;false;false;63;95;191;;; -103501;1;0;false;false;;;;;; -103502;2;0;false;false;63;95;191;;; -103504;1;0;false;false;;;;;; -103505;2;0;false;false;63;95;191;;; -103507;1;0;false;false;;;;;; -103508;3;0;false;false;63;95;191;;; -103511;1;0;false;false;;;;;; -103512;9;0;false;false;63;95;191;;; -103521;1;0;false;false;;;;;; -103522;2;0;false;false;63;95;191;;; -103524;1;0;false;false;;;;;; -103525;1;0;false;false;63;95;191;;; -103526;1;0;false;false;;;;;; -103527;5;0;false;false;63;95;191;;; -103532;3;0;false;false;;;;;; -103535;2;0;false;false;63;95;191;;; -103537;2;0;false;false;;;;;; -103539;4;1;false;false;127;0;85;;; -103543;1;0;false;false;;;;;; -103544;27;0;false;false;0;0;0;;; -103571;1;0;false;false;;;;;; -103572;1;0;false;false;0;0;0;;; -103573;3;0;false;false;;;;;; -103576;3;1;false;false;127;0;85;;; -103579;1;0;false;false;;;;;; -103580;9;0;false;false;0;0;0;;; -103589;1;0;false;false;;;;;; -103590;1;0;false;false;0;0;0;;; -103591;1;0;false;false;;;;;; -103592;15;0;false;false;0;0;0;;; -103607;3;0;false;false;;;;;; -103610;3;1;false;false;127;0;85;;; -103613;1;0;false;false;;;;;; -103614;10;0;false;false;0;0;0;;; -103624;1;0;false;false;;;;;; -103625;1;0;false;false;0;0;0;;; -103626;1;0;false;false;;;;;; -103627;35;0;false;false;0;0;0;;; -103662;3;0;false;false;;;;;; -103665;3;1;false;false;127;0;85;;; -103668;1;0;false;false;;;;;; -103669;12;0;false;false;0;0;0;;; -103681;1;0;false;false;;;;;; -103682;1;0;false;false;0;0;0;;; -103683;1;0;false;false;;;;;; -103684;11;0;false;false;0;0;0;;; -103695;1;0;false;false;;;;;; -103696;1;0;false;false;0;0;0;;; -103697;1;0;false;false;;;;;; -103698;11;0;false;false;0;0;0;;; -103709;3;0;false;false;;;;;; -103712;9;0;false;false;0;0;0;;; -103721;1;0;false;false;;;;;; -103722;1;0;false;false;0;0;0;;; -103723;1;0;false;false;;;;;; -103724;5;1;false;false;127;0;85;;; -103729;1;0;false;false;0;0;0;;; -103730;3;0;false;false;;;;;; -103733;2;1;false;false;127;0;85;;; -103735;1;0;false;false;;;;;; -103736;13;0;false;false;0;0;0;;; -103749;1;0;false;false;;;;;; -103750;1;0;false;false;0;0;0;;; -103751;1;0;false;false;;;;;; -103752;2;0;false;false;0;0;0;;; -103754;1;0;false;false;;;;;; -103755;1;0;false;false;0;0;0;;; -103756;4;0;false;false;;;;;; -103760;11;0;false;false;0;0;0;;; -103771;1;0;false;false;;;;;; -103772;1;0;false;false;0;0;0;;; -103773;1;0;false;false;;;;;; -103774;31;0;false;false;0;0;0;;; -103805;1;0;false;false;;;;;; -103806;11;0;false;false;0;0;0;;; -103817;4;0;false;false;;;;;; -103821;21;0;false;false;0;0;0;;; -103842;3;0;false;false;;;;;; -103845;1;0;false;false;0;0;0;;; -103846;3;0;false;false;;;;;; -103849;4;1;false;false;127;0;85;;; -103853;3;0;false;false;;;;;; -103856;2;1;false;false;127;0;85;;; -103858;1;0;false;false;;;;;; -103859;10;0;false;false;0;0;0;;; -103869;1;0;false;false;;;;;; -103870;1;0;false;false;0;0;0;;; -103871;1;0;false;false;;;;;; -103872;2;0;false;false;0;0;0;;; -103874;1;0;false;false;;;;;; -103875;1;0;false;false;0;0;0;;; -103876;4;0;false;false;;;;;; -103880;12;0;false;false;0;0;0;;; -103892;4;0;false;false;;;;;; -103896;10;0;false;false;0;0;0;;; -103906;1;0;false;false;;;;;; -103907;1;0;false;false;0;0;0;;; -103908;1;0;false;false;;;;;; -103909;35;0;false;false;0;0;0;;; -103944;4;0;false;false;;;;;; -103948;11;0;false;false;0;0;0;;; -103959;1;0;false;false;;;;;; -103960;1;0;false;false;0;0;0;;; -103961;1;0;false;false;;;;;; -103962;10;0;false;false;0;0;0;;; -103972;1;0;false;false;;;;;; -103973;1;0;false;false;0;0;0;;; -103974;1;0;false;false;;;;;; -103975;36;0;false;false;0;0;0;;; -104011;4;0;false;false;;;;;; -104015;12;0;false;false;0;0;0;;; -104027;3;0;false;false;;;;;; -104030;1;0;false;false;0;0;0;;; -104031;2;0;false;false;;;;;; -104033;1;0;false;false;0;0;0;;; -104034;2;0;false;false;;;;;; -104036;3;0;false;false;63;95;191;;; -104039;3;0;false;false;;;;;; -104042;1;0;false;false;63;95;191;;; -104043;1;0;false;false;;;;;; -104044;5;0;false;false;63;95;191;;; -104049;1;0;false;false;;;;;; -104050;3;0;false;false;63;95;191;;; -104053;1;0;false;false;;;;;; -104054;5;0;false;false;63;95;191;;; -104059;1;0;false;false;;;;;; -104060;3;0;false;false;63;95;191;;; -104063;1;0;false;false;;;;;; -104064;4;0;false;false;63;95;191;;; -104068;1;0;false;false;;;;;; -104069;4;0;false;false;63;95;191;;; -104073;1;0;false;false;;;;;; -104074;3;0;false;false;63;95;191;;; -104077;1;0;false;false;;;;;; -104078;2;0;false;false;63;95;191;;; -104080;1;0;false;false;;;;;; -104081;3;0;false;false;63;95;191;;; -104084;1;0;false;false;;;;;; -104085;4;0;false;false;63;95;191;;; -104089;1;0;false;false;;;;;; -104090;9;0;false;false;63;95;191;;; -104099;1;0;false;false;;;;;; -104100;6;0;false;false;63;95;191;;; -104106;1;0;false;false;;;;;; -104107;8;0;false;false;63;95;191;;; -104115;4;0;false;false;;;;;; -104119;1;0;false;false;63;95;191;;; -104120;1;0;false;false;;;;;; -104121;2;0;false;false;63;95;191;;; -104123;1;0;false;false;;;;;; -104124;3;0;false;false;63;95;191;;; -104127;1;0;false;false;;;;;; -104128;9;0;false;false;63;95;191;;; -104137;1;0;false;false;;;;;; -104138;2;0;false;false;63;95;191;;; -104140;1;0;false;false;;;;;; -104141;3;0;false;false;63;95;191;;; -104144;1;0;false;false;;;;;; -104145;5;0;false;false;63;95;191;;; -104150;1;0;false;false;;;;;; -104151;5;0;false;false;63;95;191;;; -104156;1;0;false;false;;;;;; -104157;3;0;false;false;63;95;191;;; -104160;1;0;false;false;;;;;; -104161;5;0;false;false;63;95;191;;; -104166;1;0;false;false;;;;;; -104167;2;0;false;false;63;95;191;;; -104169;1;0;false;false;;;;;; -104170;3;0;false;false;63;95;191;;; -104173;1;0;false;false;;;;;; -104174;3;0;false;false;63;95;191;;; -104177;1;0;false;false;;;;;; -104178;2;0;false;false;63;95;191;;; -104180;1;0;false;false;;;;;; -104181;3;0;false;false;63;95;191;;; -104184;1;0;false;false;;;;;; -104185;3;0;false;false;63;95;191;;; -104188;1;0;false;false;;;;;; -104189;4;0;false;false;63;95;191;;; -104193;4;0;false;false;;;;;; -104197;1;0;false;false;63;95;191;;; -104198;1;0;false;false;;;;;; -104199;2;0;false;false;63;95;191;;; -104201;1;0;false;false;;;;;; -104202;3;0;false;false;63;95;191;;; -104205;1;0;false;false;;;;;; -104206;3;0;false;false;63;95;191;;; -104209;1;0;false;false;;;;;; -104210;4;0;false;false;63;95;191;;; -104214;1;0;false;false;;;;;; -104215;2;0;false;false;63;95;191;;; -104217;1;0;false;false;;;;;; -104218;7;0;false;false;63;95;191;;; -104225;1;0;false;false;;;;;; -104226;4;0;false;false;63;95;191;;; -104230;1;0;false;false;;;;;; -104231;3;0;false;false;63;95;191;;; -104234;1;0;false;false;;;;;; -104235;9;0;false;false;63;95;191;;; -104244;1;0;false;false;;;;;; -104245;7;0;false;false;63;95;191;;; -104252;3;0;false;false;;;;;; -104255;1;0;false;false;63;95;191;;; -104256;1;0;false;false;;;;;; -104257;5;0;false;false;63;95;191;;; -104262;1;0;false;false;;;;;; -104263;3;0;false;false;63;95;191;;; -104266;1;0;false;false;;;;;; -104267;5;0;false;false;63;95;191;;; -104272;1;0;false;false;;;;;; -104273;2;0;false;false;63;95;191;;; -104275;1;0;false;false;;;;;; -104276;3;0;false;false;63;95;191;;; -104279;1;0;false;false;;;;;; -104280;3;0;false;false;63;95;191;;; -104283;1;0;false;false;;;;;; -104284;2;0;false;false;63;95;191;;; -104286;1;0;false;false;;;;;; -104287;3;0;false;false;63;95;191;;; -104290;1;0;false;false;;;;;; -104291;4;0;false;false;63;95;191;;; -104295;1;0;false;false;;;;;; -104296;2;0;false;false;63;95;191;;; -104298;1;0;false;false;;;;;; -104299;3;0;false;false;63;95;191;;; -104302;1;0;false;false;;;;;; -104303;5;0;false;false;63;95;191;;; -104308;1;0;false;false;;;;;; -104309;7;0;false;false;63;95;191;;; -104316;1;0;false;false;;;;;; -104317;2;0;false;false;63;95;191;;; -104319;1;0;false;false;;;;;; -104320;2;0;false;false;63;95;191;;; -104322;1;0;false;false;;;;;; -104323;3;0;false;false;63;95;191;;; -104326;4;0;false;false;;;;;; -104330;1;0;false;false;63;95;191;;; -104331;1;0;false;false;;;;;; -104332;4;0;false;false;63;95;191;;; -104336;1;0;false;false;;;;;; -104337;5;0;false;false;63;95;191;;; -104342;3;0;false;false;;;;;; -104345;1;0;false;false;63;95;191;;; -104346;1;0;false;false;;;;;; -104347;7;0;false;false;63;95;191;;; -104354;1;0;false;false;;;;;; -104355;3;0;false;false;63;95;191;;; -104358;1;0;false;false;;;;;; -104359;9;0;false;false;63;95;191;;; -104368;1;0;false;false;;;;;; -104369;9;0;false;false;63;95;191;;; -104378;1;0;false;false;;;;;; -104379;2;0;false;false;63;95;191;;; -104381;1;0;false;false;;;;;; -104382;3;0;false;false;63;95;191;;; -104385;1;0;false;false;;;;;; -104386;5;0;false;false;63;95;191;;; -104391;1;0;false;false;;;;;; -104392;7;0;false;false;63;95;191;;; -104399;1;0;false;false;;;;;; -104400;4;0;false;false;63;95;191;;; -104404;1;0;false;false;;;;;; -104405;3;0;false;false;63;95;191;;; -104408;1;0;false;false;;;;;; -104409;6;0;false;false;63;95;191;;; -104415;1;0;false;false;;;;;; -104416;3;0;false;false;63;95;191;;; -104419;3;0;false;false;;;;;; -104422;1;0;false;false;63;95;191;;; -104423;1;0;false;false;;;;;; -104424;2;0;false;false;63;95;191;;; -104426;1;0;false;false;;;;;; -104427;2;0;false;false;63;95;191;;; -104429;1;0;false;false;;;;;; -104430;8;0;false;false;63;95;191;;; -104438;1;0;false;false;;;;;; -104439;4;0;false;false;63;95;191;;; -104443;1;0;false;false;;;;;; -104444;3;0;false;false;63;95;191;;; -104447;1;0;false;false;;;;;; -104448;3;0;false;false;63;95;191;;; -104451;1;0;false;false;;;;;; -104452;10;0;false;false;63;95;191;;; -104462;1;0;false;false;;;;;; -104463;9;0;false;false;63;95;191;;; -104472;1;0;false;false;;;;;; -104473;2;0;false;false;63;95;191;;; -104475;1;0;false;false;;;;;; -104476;3;0;false;false;63;95;191;;; -104479;1;0;false;false;;;;;; -104480;8;0;false;false;63;95;191;;; -104488;1;0;false;false;;;;;; -104489;9;0;false;false;63;95;191;;; -104498;3;0;false;false;;;;;; -104501;1;0;false;false;63;95;191;;; -104502;1;0;false;false;;;;;; -104503;10;0;false;false;63;95;191;;; -104513;3;0;false;false;;;;;; -104516;2;0;false;false;63;95;191;;; -104518;2;0;false;false;;;;;; -104520;4;1;false;false;127;0;85;;; -104524;1;0;false;false;;;;;; -104525;21;0;false;false;0;0;0;;; -104546;1;0;false;false;;;;;; -104547;1;0;false;false;0;0;0;;; -104548;3;0;false;false;;;;;; -104551;3;1;false;false;127;0;85;;; -104554;1;0;false;false;;;;;; -104555;11;0;false;false;0;0;0;;; -104566;3;0;false;false;;;;;; -104569;3;1;false;false;127;0;85;;; -104572;1;0;false;false;;;;;; -104573;10;0;false;false;0;0;0;;; -104583;3;0;false;false;;;;;; -104586;3;1;false;false;127;0;85;;; -104589;1;0;false;false;;;;;; -104590;16;0;false;false;0;0;0;;; -104606;6;0;false;false;;;;;; -104612;2;1;false;false;127;0;85;;; -104614;1;0;false;false;;;;;; -104615;16;0;false;false;0;0;0;;; -104631;1;0;false;false;;;;;; -104632;1;0;false;false;0;0;0;;; -104633;4;0;false;false;;;;;; -104637;6;1;false;false;127;0;85;;; -104643;1;0;false;false;0;0;0;;; -104644;3;0;false;false;;;;;; -104647;1;0;false;false;0;0;0;;; -104648;3;0;false;false;;;;;; -104651;9;0;false;false;0;0;0;;; -104660;1;0;false;false;;;;;; -104661;1;0;false;false;0;0;0;;; -104662;1;0;false;false;;;;;; -104663;15;0;false;false;0;0;0;;; -104678;4;0;false;false;;;;;; -104682;15;0;false;false;0;0;0;;; -104697;1;0;false;false;;;;;; -104698;1;0;false;false;0;0;0;;; -104699;1;0;false;false;;;;;; -104700;35;0;false;false;0;0;0;;; -104735;3;0;false;false;;;;;; -104738;31;0;false;false;63;127;95;;; -104769;1;0;false;false;;;;;; -104770;10;0;false;false;0;0;0;;; -104780;1;0;false;false;;;;;; -104781;1;0;false;false;0;0;0;;; -104782;1;0;false;false;;;;;; -104783;7;0;false;false;0;0;0;;; -104790;1;0;false;false;;;;;; -104791;1;0;false;false;0;0;0;;; -104792;1;0;false;false;;;;;; -104793;13;0;false;false;0;0;0;;; -104806;4;0;false;false;;;;;; -104810;27;0;false;false;0;0;0;;; -104837;1;0;false;false;;;;;; -104838;10;0;false;false;0;0;0;;; -104848;1;0;false;false;;;;;; -104849;11;0;false;false;0;0;0;;; -104860;1;0;false;false;;;;;; -104861;1;0;false;false;0;0;0;;; -104862;1;0;false;false;;;;;; -104863;17;0;false;false;0;0;0;;; -104880;3;0;false;false;;;;;; -104883;2;1;false;false;127;0;85;;; -104885;1;0;false;false;;;;;; -104886;10;0;false;false;0;0;0;;; -104896;1;0;false;false;;;;;; -104897;2;0;false;false;0;0;0;;; -104899;1;0;false;false;;;;;; -104900;22;0;false;false;0;0;0;;; -104922;1;0;false;false;;;;;; -104923;1;0;false;false;0;0;0;;; -104924;1;0;false;false;;;;;; -104925;2;0;false;false;0;0;0;;; -104927;1;0;false;false;;;;;; -104928;1;0;false;false;0;0;0;;; -104929;4;0;false;false;;;;;; -104933;11;0;false;false;0;0;0;;; -104944;1;0;false;false;;;;;; -104945;1;0;false;false;0;0;0;;; -104946;1;0;false;false;;;;;; -104947;23;0;false;false;0;0;0;;; -104970;3;0;false;false;;;;;; -104973;1;0;false;false;0;0;0;;; -104974;3;0;false;false;;;;;; -104977;4;1;false;false;127;0;85;;; -104981;1;0;false;false;;;;;; -104982;1;0;false;false;0;0;0;;; -104983;4;0;false;false;;;;;; -104987;9;0;false;false;0;0;0;;; -104996;1;0;false;false;;;;;; -104997;1;0;false;false;0;0;0;;; -104998;1;0;false;false;;;;;; -104999;13;0;false;false;0;0;0;;; -105012;3;0;false;false;;;;;; -105015;1;0;false;false;0;0;0;;; -105016;3;0;false;false;;;;;; -105019;30;0;false;false;0;0;0;;; -105049;4;0;false;false;;;;;; -105053;59;0;false;false;63;127;95;;; -105112;1;0;false;false;;;;;; -105113;33;0;false;false;63;127;95;;; -105146;1;0;false;false;;;;;; -105147;28;0;false;false;0;0;0;;; -105175;3;0;false;false;;;;;; -105178;66;0;false;false;63;127;95;;; -105244;1;0;false;false;;;;;; -105245;69;0;false;false;63;127;95;;; -105314;1;0;false;false;;;;;; -105315;21;0;false;false;0;0;0;;; -105336;3;0;false;false;;;;;; -105339;48;0;false;false;63;127;95;;; -105387;1;0;false;false;;;;;; -105388;7;0;false;false;0;0;0;;; -105395;1;0;false;false;;;;;; -105396;1;0;false;false;0;0;0;;; -105397;1;0;false;false;;;;;; -105398;11;0;false;false;0;0;0;;; -105409;2;0;false;false;;;;;; -105411;1;0;false;false;0;0;0;;; -105412;2;0;false;false;;;;;; -105414;3;0;false;false;63;95;191;;; -105417;3;0;false;false;;;;;; -105420;1;0;false;false;63;95;191;;; -105421;1;0;false;false;;;;;; -105422;5;0;false;false;63;95;191;;; -105427;1;0;false;false;;;;;; -105428;3;0;false;false;63;95;191;;; -105431;1;0;false;false;;;;;; -105432;5;0;false;false;63;95;191;;; -105437;1;0;false;false;;;;;; -105438;3;0;false;false;63;95;191;;; -105441;1;0;false;false;;;;;; -105442;4;0;false;false;63;95;191;;; -105446;1;0;false;false;;;;;; -105447;2;0;false;false;63;95;191;;; -105449;1;0;false;false;;;;;; -105450;3;0;false;false;63;95;191;;; -105453;1;0;false;false;;;;;; -105454;2;0;false;false;63;95;191;;; -105456;1;0;false;false;;;;;; -105457;3;0;false;false;63;95;191;;; -105460;1;0;false;false;;;;;; -105461;4;0;false;false;63;95;191;;; -105465;1;0;false;false;;;;;; -105466;9;0;false;false;63;95;191;;; -105475;1;0;false;false;;;;;; -105476;6;0;false;false;63;95;191;;; -105482;1;0;false;false;;;;;; -105483;8;0;false;false;63;95;191;;; -105491;4;0;false;false;;;;;; -105495;1;0;false;false;63;95;191;;; -105496;1;0;false;false;;;;;; -105497;2;0;false;false;63;95;191;;; -105499;1;0;false;false;;;;;; -105500;3;0;false;false;63;95;191;;; -105503;1;0;false;false;;;;;; -105504;9;0;false;false;63;95;191;;; -105513;1;0;false;false;;;;;; -105514;2;0;false;false;63;95;191;;; -105516;1;0;false;false;;;;;; -105517;3;0;false;false;63;95;191;;; -105520;1;0;false;false;;;;;; -105521;5;0;false;false;63;95;191;;; -105526;1;0;false;false;;;;;; -105527;5;0;false;false;63;95;191;;; -105532;1;0;false;false;;;;;; -105533;3;0;false;false;63;95;191;;; -105536;1;0;false;false;;;;;; -105537;5;0;false;false;63;95;191;;; -105542;1;0;false;false;;;;;; -105543;2;0;false;false;63;95;191;;; -105545;1;0;false;false;;;;;; -105546;3;0;false;false;63;95;191;;; -105549;1;0;false;false;;;;;; -105550;3;0;false;false;63;95;191;;; -105553;1;0;false;false;;;;;; -105554;2;0;false;false;63;95;191;;; -105556;1;0;false;false;;;;;; -105557;3;0;false;false;63;95;191;;; -105560;1;0;false;false;;;;;; -105561;3;0;false;false;63;95;191;;; -105564;1;0;false;false;;;;;; -105565;4;0;false;false;63;95;191;;; -105569;4;0;false;false;;;;;; -105573;1;0;false;false;63;95;191;;; -105574;1;0;false;false;;;;;; -105575;2;0;false;false;63;95;191;;; -105577;1;0;false;false;;;;;; -105578;3;0;false;false;63;95;191;;; -105581;1;0;false;false;;;;;; -105582;3;0;false;false;63;95;191;;; -105585;1;0;false;false;;;;;; -105586;4;0;false;false;63;95;191;;; -105590;1;0;false;false;;;;;; -105591;2;0;false;false;63;95;191;;; -105593;1;0;false;false;;;;;; -105594;7;0;false;false;63;95;191;;; -105601;1;0;false;false;;;;;; -105602;4;0;false;false;63;95;191;;; -105606;1;0;false;false;;;;;; -105607;3;0;false;false;63;95;191;;; -105610;1;0;false;false;;;;;; -105611;9;0;false;false;63;95;191;;; -105620;1;0;false;false;;;;;; -105621;7;0;false;false;63;95;191;;; -105628;3;0;false;false;;;;;; -105631;1;0;false;false;63;95;191;;; -105632;1;0;false;false;;;;;; -105633;5;0;false;false;63;95;191;;; -105638;1;0;false;false;;;;;; -105639;3;0;false;false;63;95;191;;; -105642;1;0;false;false;;;;;; -105643;5;0;false;false;63;95;191;;; -105648;1;0;false;false;;;;;; -105649;2;0;false;false;63;95;191;;; -105651;1;0;false;false;;;;;; -105652;3;0;false;false;63;95;191;;; -105655;1;0;false;false;;;;;; -105656;9;0;false;false;63;95;191;;; -105665;1;0;false;false;;;;;; -105666;2;0;false;false;63;95;191;;; -105668;1;0;false;false;;;;;; -105669;3;0;false;false;63;95;191;;; -105672;1;0;false;false;;;;;; -105673;8;0;false;false;63;95;191;;; -105681;1;0;false;false;;;;;; -105682;2;0;false;false;63;95;191;;; -105684;1;0;false;false;;;;;; -105685;2;0;false;false;63;95;191;;; -105687;1;0;false;false;;;;;; -105688;2;0;false;false;63;95;191;;; -105690;1;0;false;false;;;;;; -105691;7;0;false;false;63;95;191;;; -105698;1;0;false;false;;;;;; -105699;2;0;false;false;63;95;191;;; -105701;1;0;false;false;;;;;; -105702;3;0;false;false;63;95;191;;; -105705;3;0;false;false;;;;;; -105708;1;0;false;false;63;95;191;;; -105709;1;0;false;false;;;;;; -105710;5;0;false;false;63;95;191;;; -105715;1;0;false;false;;;;;; -105716;5;0;false;false;63;95;191;;; -105721;3;0;false;false;;;;;; -105724;1;0;false;false;63;95;191;;; -105725;1;0;false;false;;;;;; -105726;7;0;false;false;63;95;191;;; -105733;1;0;false;false;;;;;; -105734;3;0;false;false;63;95;191;;; -105737;1;0;false;false;;;;;; -105738;9;0;false;false;63;95;191;;; -105747;1;0;false;false;;;;;; -105748;9;0;false;false;63;95;191;;; -105757;1;0;false;false;;;;;; -105758;2;0;false;false;63;95;191;;; -105760;1;0;false;false;;;;;; -105761;3;0;false;false;63;95;191;;; -105764;1;0;false;false;;;;;; -105765;5;0;false;false;63;95;191;;; -105770;1;0;false;false;;;;;; -105771;7;0;false;false;63;95;191;;; -105778;1;0;false;false;;;;;; -105779;4;0;false;false;63;95;191;;; -105783;1;0;false;false;;;;;; -105784;3;0;false;false;63;95;191;;; -105787;1;0;false;false;;;;;; -105788;6;0;false;false;63;95;191;;; -105794;1;0;false;false;;;;;; -105795;3;0;false;false;63;95;191;;; -105798;3;0;false;false;;;;;; -105801;1;0;false;false;63;95;191;;; -105802;1;0;false;false;;;;;; -105803;2;0;false;false;63;95;191;;; -105805;1;0;false;false;;;;;; -105806;2;0;false;false;63;95;191;;; -105808;1;0;false;false;;;;;; -105809;8;0;false;false;63;95;191;;; -105817;1;0;false;false;;;;;; -105818;4;0;false;false;63;95;191;;; -105822;1;0;false;false;;;;;; -105823;3;0;false;false;63;95;191;;; -105826;1;0;false;false;;;;;; -105827;3;0;false;false;63;95;191;;; -105830;1;0;false;false;;;;;; -105831;10;0;false;false;63;95;191;;; -105841;1;0;false;false;;;;;; -105842;9;0;false;false;63;95;191;;; -105851;1;0;false;false;;;;;; -105852;2;0;false;false;63;95;191;;; -105854;1;0;false;false;;;;;; -105855;3;0;false;false;63;95;191;;; -105858;1;0;false;false;;;;;; -105859;8;0;false;false;63;95;191;;; -105867;1;0;false;false;;;;;; -105868;9;0;false;false;63;95;191;;; -105877;3;0;false;false;;;;;; -105880;1;0;false;false;63;95;191;;; -105881;1;0;false;false;;;;;; -105882;10;0;false;false;63;95;191;;; -105892;3;0;false;false;;;;;; -105895;2;0;false;false;63;95;191;;; -105897;2;0;false;false;;;;;; -105899;4;1;false;false;127;0;85;;; -105903;1;0;false;false;;;;;; -105904;19;0;false;false;0;0;0;;; -105923;1;0;false;false;;;;;; -105924;1;0;false;false;0;0;0;;; -105925;3;0;false;false;;;;;; -105928;3;1;false;false;127;0;85;;; -105931;1;0;false;false;;;;;; -105932;11;0;false;false;0;0;0;;; -105943;3;0;false;false;;;;;; -105946;3;1;false;false;127;0;85;;; -105949;1;0;false;false;;;;;; -105950;9;0;false;false;0;0;0;;; -105959;1;0;false;false;;;;;; -105960;1;0;false;false;0;0;0;;; -105961;1;0;false;false;;;;;; -105962;15;0;false;false;0;0;0;;; -105977;4;0;false;false;;;;;; -105981;3;1;false;false;127;0;85;;; -105984;1;0;false;false;;;;;; -105985;15;0;false;false;0;0;0;;; -106000;1;0;false;false;;;;;; -106001;1;0;false;false;0;0;0;;; -106002;1;0;false;false;;;;;; -106003;35;0;false;false;0;0;0;;; -106038;6;0;false;false;;;;;; -106044;31;0;false;false;63;127;95;;; -106075;1;0;false;false;;;;;; -106076;10;0;false;false;0;0;0;;; -106086;1;0;false;false;;;;;; -106087;1;0;false;false;0;0;0;;; -106088;1;0;false;false;;;;;; -106089;7;0;false;false;0;0;0;;; -106096;1;0;false;false;;;;;; -106097;1;0;false;false;0;0;0;;; -106098;1;0;false;false;;;;;; -106099;13;0;false;false;0;0;0;;; -106112;4;0;false;false;;;;;; -106116;27;0;false;false;0;0;0;;; -106143;1;0;false;false;;;;;; -106144;10;0;false;false;0;0;0;;; -106154;1;0;false;false;;;;;; -106155;11;0;false;false;0;0;0;;; -106166;1;0;false;false;;;;;; -106167;1;0;false;false;0;0;0;;; -106168;1;0;false;false;;;;;; -106169;17;0;false;false;0;0;0;;; -106186;4;0;false;false;;;;;; -106190;2;1;false;false;127;0;85;;; -106192;1;0;false;false;;;;;; -106193;10;0;false;false;0;0;0;;; -106203;1;0;false;false;;;;;; -106204;2;0;false;false;0;0;0;;; -106206;1;0;false;false;;;;;; -106207;2;0;false;false;0;0;0;;; -106209;1;0;false;false;;;;;; -106210;1;0;false;false;0;0;0;;; -106211;4;0;false;false;;;;;; -106215;11;0;false;false;0;0;0;;; -106226;1;0;false;false;;;;;; -106227;1;0;false;false;0;0;0;;; -106228;1;0;false;false;;;;;; -106229;2;0;false;false;0;0;0;;; -106231;3;0;false;false;;;;;; -106234;1;0;false;false;0;0;0;;; -106235;3;0;false;false;;;;;; -106238;4;1;false;false;127;0;85;;; -106242;1;0;false;false;;;;;; -106243;1;0;false;false;0;0;0;;; -106244;4;0;false;false;;;;;; -106248;9;0;false;false;0;0;0;;; -106257;1;0;false;false;;;;;; -106258;1;0;false;false;0;0;0;;; -106259;1;0;false;false;;;;;; -106260;11;0;false;false;0;0;0;;; -106271;3;0;false;false;;;;;; -106274;1;0;false;false;0;0;0;;; -106275;3;0;false;false;;;;;; -106278;30;0;false;false;0;0;0;;; -106308;3;0;false;false;;;;;; -106311;66;0;false;false;63;127;95;;; -106377;1;0;false;false;;;;;; -106378;69;0;false;false;63;127;95;;; -106447;1;0;false;false;;;;;; -106448;21;0;false;false;0;0;0;;; -106469;3;0;false;false;;;;;; -106472;32;0;false;false;0;0;0;;; -106504;3;0;false;false;;;;;; -106507;49;0;false;false;63;127;95;;; -106556;1;0;false;false;;;;;; -106557;7;0;false;false;0;0;0;;; -106564;1;0;false;false;;;;;; -106565;1;0;false;false;0;0;0;;; -106566;1;0;false;false;;;;;; -106567;11;0;false;false;0;0;0;;; -106578;2;0;false;false;;;;;; -106580;1;0;false;false;0;0;0;;; -106581;2;0;false;false;;;;;; -106583;3;0;false;false;63;95;191;;; -106586;3;0;false;false;;;;;; -106589;1;0;false;false;63;95;191;;; -106590;1;0;false;false;;;;;; -106591;7;0;false;false;63;95;191;;; -106598;1;0;false;false;;;;;; -106599;3;0;false;false;63;95;191;;; -106602;1;0;false;false;;;;;; -106603;4;0;false;false;63;95;191;;; -106607;1;0;false;false;;;;;; -106608;4;0;false;false;63;95;191;;; -106612;1;0;false;false;;;;;; -106613;2;0;false;false;63;95;191;;; -106615;1;0;false;false;;;;;; -106616;4;0;false;false;63;95;191;;; -106620;1;0;false;false;;;;;; -106621;3;0;false;false;63;95;191;;; -106624;1;0;false;false;;;;;; -106625;4;0;false;false;63;95;191;;; -106629;1;0;false;false;;;;;; -106630;4;0;false;false;63;95;191;;; -106634;1;0;false;false;;;;;; -106635;10;0;false;false;63;95;191;;; -106645;1;0;false;false;;;;;; -106646;2;0;false;false;63;95;191;;; -106648;1;0;false;false;;;;;; -106649;6;0;false;false;63;95;191;;; -106655;3;0;false;false;;;;;; -106658;1;0;false;false;63;95;191;;; -106659;1;0;false;false;;;;;; -106660;2;0;false;false;63;95;191;;; -106662;1;0;false;false;;;;;; -106663;3;0;false;false;63;95;191;;; -106666;1;0;false;false;;;;;; -106667;7;0;false;false;63;95;191;;; -106674;1;0;false;false;;;;;; -106675;4;0;false;false;63;95;191;;; -106679;1;0;false;false;;;;;; -106680;7;0;false;false;63;95;191;;; -106687;1;0;false;false;;;;;; -106688;3;0;false;false;63;95;191;;; -106691;1;0;false;false;;;;;; -106692;5;0;false;false;63;95;191;;; -106697;1;0;false;false;;;;;; -106698;7;0;false;false;63;95;191;;; -106705;1;0;false;false;;;;;; -106706;3;0;false;false;63;95;191;;; -106709;1;0;false;false;;;;;; -106710;5;0;false;false;63;95;191;;; -106715;3;0;false;false;;;;;; -106718;1;0;false;false;63;95;191;;; -106719;1;0;false;false;;;;;; -106720;3;0;false;false;63;95;191;;; -106723;1;0;false;false;;;;;; -106724;5;0;false;false;63;95;191;;; -106729;1;0;false;false;;;;;; -106730;2;0;false;false;63;95;191;;; -106732;1;0;false;false;;;;;; -106733;8;0;false;false;63;95;191;;; -106741;1;0;false;false;;;;;; -106742;3;0;false;false;63;95;191;;; -106745;1;0;false;false;;;;;; -106746;4;0;false;false;63;95;191;;; -106750;1;0;false;false;;;;;; -106751;6;0;false;false;63;95;191;;; -106757;1;0;false;false;;;;;; -106758;2;0;false;false;63;95;191;;; -106760;1;0;false;false;;;;;; -106761;5;0;false;false;63;95;191;;; -106766;1;0;false;false;;;;;; -106767;2;0;false;false;63;95;191;;; -106769;1;0;false;false;;;;;; -106770;4;0;false;false;63;95;191;;; -106774;1;0;false;false;;;;;; -106775;3;0;false;false;63;95;191;;; -106778;1;0;false;false;;;;;; -106779;8;0;false;false;63;95;191;;; -106787;4;0;false;false;;;;;; -106791;1;0;false;false;63;95;191;;; -106792;1;0;false;false;;;;;; -106793;8;0;false;false;63;95;191;;; -106801;1;0;false;false;;;;;; -106802;2;0;false;false;63;95;191;;; -106804;1;0;false;false;;;;;; -106805;3;0;false;false;63;95;191;;; -106808;1;0;false;false;;;;;; -106809;3;0;false;false;63;95;191;;; -106812;1;0;false;false;;;;;; -106813;4;0;false;false;63;95;191;;; -106817;1;0;false;false;;;;;; -106818;7;0;false;false;63;95;191;;; -106825;1;0;false;false;;;;;; -106826;3;0;false;false;63;95;191;;; -106829;1;0;false;false;;;;;; -106830;5;0;false;false;63;95;191;;; -106835;1;0;false;false;;;;;; -106836;3;0;false;false;63;95;191;;; -106839;1;0;false;false;;;;;; -106840;9;0;false;false;63;95;191;;; -106849;1;0;false;false;;;;;; -106850;2;0;false;false;63;95;191;;; -106852;1;0;false;false;;;;;; -106853;3;0;false;false;63;95;191;;; -106856;1;0;false;false;;;;;; -106857;3;0;false;false;63;95;191;;; -106860;4;0;false;false;;;;;; -106864;1;0;false;false;63;95;191;;; -106865;1;0;false;false;;;;;; -106866;2;0;false;false;63;95;191;;; -106868;1;0;false;false;;;;;; -106869;3;0;false;false;63;95;191;;; -106872;1;0;false;false;;;;;; -106873;4;0;false;false;63;95;191;;; -106877;1;0;false;false;;;;;; -106878;5;0;false;false;63;95;191;;; -106883;1;0;false;false;;;;;; -106884;1;0;false;false;63;95;191;;; -106885;1;0;false;false;;;;;; -106886;4;0;false;false;63;95;191;;; -106890;1;0;false;false;;;;;; -106891;4;0;false;false;63;95;191;;; -106895;1;0;false;false;;;;;; -106896;6;0;false;false;63;95;191;;; -106902;1;0;false;false;;;;;; -106903;2;0;false;false;63;95;191;;; -106905;1;0;false;false;;;;;; -106906;3;0;false;false;63;95;191;;; -106909;1;0;false;false;;;;;; -106910;9;0;false;false;63;95;191;;; -106919;1;0;false;false;;;;;; -106920;2;0;false;false;63;95;191;;; -106922;1;0;false;false;;;;;; -106923;4;0;false;false;63;95;191;;; -106927;1;0;false;false;;;;;; -106928;4;0;false;false;63;95;191;;; -106932;4;0;false;false;;;;;; -106936;1;0;false;false;63;95;191;;; -106937;1;0;false;false;;;;;; -106938;3;0;false;false;63;95;191;;; -106941;1;0;false;false;;;;;; -106942;5;0;false;false;63;95;191;;; -106947;1;0;false;false;;;;;; -106948;2;0;false;false;63;95;191;;; -106950;1;0;false;false;;;;;; -106951;5;0;false;false;63;95;191;;; -106956;1;0;false;false;;;;;; -106957;5;0;false;false;63;95;191;;; -106962;1;0;false;false;;;;;; -106963;3;0;false;false;63;95;191;;; -106966;1;0;false;false;;;;;; -106967;4;0;false;false;63;95;191;;; -106971;1;0;false;false;;;;;; -106972;10;0;false;false;63;95;191;;; -106982;3;0;false;false;;;;;; -106985;1;0;false;false;63;95;191;;; -106986;1;0;false;false;;;;;; -106987;3;0;false;false;127;127;159;;; -106990;3;0;false;false;;;;;; -106993;1;0;false;false;63;95;191;;; -106994;1;0;false;false;;;;;; -106995;7;0;false;false;63;95;191;;; -107002;1;0;false;false;;;;;; -107003;3;0;false;false;63;95;191;;; -107006;1;0;false;false;;;;;; -107007;9;0;false;false;63;95;191;;; -107016;1;0;false;false;;;;;; -107017;9;0;false;false;63;95;191;;; -107026;1;0;false;false;;;;;; -107027;2;0;false;false;63;95;191;;; -107029;1;0;false;false;;;;;; -107030;3;0;false;false;63;95;191;;; -107033;1;0;false;false;;;;;; -107034;5;0;false;false;63;95;191;;; -107039;1;0;false;false;;;;;; -107040;7;0;false;false;63;95;191;;; -107047;1;0;false;false;;;;;; -107048;4;0;false;false;63;95;191;;; -107052;1;0;false;false;;;;;; -107053;3;0;false;false;63;95;191;;; -107056;1;0;false;false;;;;;; -107057;6;0;false;false;63;95;191;;; -107063;1;0;false;false;;;;;; -107064;3;0;false;false;63;95;191;;; -107067;3;0;false;false;;;;;; -107070;1;0;false;false;63;95;191;;; -107071;1;0;false;false;;;;;; -107072;2;0;false;false;63;95;191;;; -107074;1;0;false;false;;;;;; -107075;2;0;false;false;63;95;191;;; -107077;1;0;false;false;;;;;; -107078;8;0;false;false;63;95;191;;; -107086;1;0;false;false;;;;;; -107087;4;0;false;false;63;95;191;;; -107091;1;0;false;false;;;;;; -107092;3;0;false;false;63;95;191;;; -107095;1;0;false;false;;;;;; -107096;3;0;false;false;63;95;191;;; -107099;1;0;false;false;;;;;; -107100;10;0;false;false;63;95;191;;; -107110;1;0;false;false;;;;;; -107111;9;0;false;false;63;95;191;;; -107120;1;0;false;false;;;;;; -107121;2;0;false;false;63;95;191;;; -107123;1;0;false;false;;;;;; -107124;3;0;false;false;63;95;191;;; -107127;1;0;false;false;;;;;; -107128;8;0;false;false;63;95;191;;; -107136;1;0;false;false;;;;;; -107137;9;0;false;false;63;95;191;;; -107146;3;0;false;false;;;;;; -107149;1;0;false;false;63;95;191;;; -107150;1;0;false;false;;;;;; -107151;10;0;false;false;63;95;191;;; -107161;3;0;false;false;;;;;; -107164;1;0;false;false;63;95;191;;; -107165;1;0;false;false;;;;;; -107166;4;0;false;false;127;127;159;;; -107170;3;0;false;false;;;;;; -107173;2;0;false;false;63;95;191;;; -107175;2;0;false;false;;;;;; -107177;4;1;false;false;127;0;85;;; -107181;1;0;false;false;;;;;; -107182;20;0;false;false;0;0;0;;; -107202;3;1;false;false;127;0;85;;; -107205;1;0;false;false;;;;;; -107206;6;0;false;false;0;0;0;;; -107212;1;0;false;false;;;;;; -107213;1;0;false;false;0;0;0;;; -107214;3;0;false;false;;;;;; -107217;3;1;false;false;127;0;85;;; -107220;1;0;false;false;;;;;; -107221;11;0;false;false;0;0;0;;; -107232;3;0;false;false;;;;;; -107235;3;1;false;false;127;0;85;;; -107238;1;0;false;false;;;;;; -107239;9;0;false;false;0;0;0;;; -107248;1;0;false;false;;;;;; -107249;1;0;false;false;0;0;0;;; -107250;1;0;false;false;;;;;; -107251;15;0;false;false;0;0;0;;; -107266;3;0;false;false;;;;;; -107269;3;1;false;false;127;0;85;;; -107272;1;0;false;false;;;;;; -107273;15;0;false;false;0;0;0;;; -107288;1;0;false;false;;;;;; -107289;1;0;false;false;0;0;0;;; -107290;1;0;false;false;;;;;; -107291;35;0;false;false;0;0;0;;; -107326;6;0;false;false;;;;;; -107332;31;0;false;false;63;127;95;;; -107363;1;0;false;false;;;;;; -107364;10;0;false;false;0;0;0;;; -107374;1;0;false;false;;;;;; -107375;1;0;false;false;0;0;0;;; -107376;1;0;false;false;;;;;; -107377;7;0;false;false;0;0;0;;; -107384;1;0;false;false;;;;;; -107385;1;0;false;false;0;0;0;;; -107386;1;0;false;false;;;;;; -107387;13;0;false;false;0;0;0;;; -107400;4;0;false;false;;;;;; -107404;27;0;false;false;0;0;0;;; -107431;1;0;false;false;;;;;; -107432;10;0;false;false;0;0;0;;; -107442;1;0;false;false;;;;;; -107443;11;0;false;false;0;0;0;;; -107454;1;0;false;false;;;;;; -107455;1;0;false;false;0;0;0;;; -107456;1;0;false;false;;;;;; -107457;17;0;false;false;0;0;0;;; -107474;3;0;false;false;;;;;; -107477;11;0;false;false;0;0;0;;; -107488;4;1;false;false;127;0;85;;; -107492;1;0;false;false;0;0;0;;; -107493;1;0;false;false;;;;;; -107494;7;0;false;false;0;0;0;;; -107501;3;0;false;false;;;;;; -107504;7;0;false;false;0;0;0;;; -107511;1;0;false;false;;;;;; -107512;1;0;false;false;0;0;0;;; -107513;1;0;false;false;;;;;; -107514;11;0;false;false;0;0;0;;; -107525;2;0;false;false;;;;;; -107527;1;0;false;false;0;0;0;;; -107528;2;0;false;false;;;;;; -107530;3;0;false;false;63;95;191;;; -107533;3;0;false;false;;;;;; -107536;1;0;false;false;63;95;191;;; -107537;1;0;false;false;;;;;; -107538;7;0;false;false;63;95;191;;; -107545;1;0;false;false;;;;;; -107546;3;0;false;false;63;95;191;;; -107549;1;0;false;false;;;;;; -107550;4;0;false;false;63;95;191;;; -107554;1;0;false;false;;;;;; -107555;2;0;false;false;63;95;191;;; -107557;1;0;false;false;;;;;; -107558;2;0;false;false;63;95;191;;; -107560;1;0;false;false;;;;;; -107561;4;0;false;false;63;95;191;;; -107565;1;0;false;false;;;;;; -107566;3;0;false;false;63;95;191;;; -107569;1;0;false;false;;;;;; -107570;5;0;false;false;63;95;191;;; -107575;1;0;false;false;;;;;; -107576;4;0;false;false;63;95;191;;; -107580;1;0;false;false;;;;;; -107581;10;0;false;false;63;95;191;;; -107591;1;0;false;false;;;;;; -107592;2;0;false;false;63;95;191;;; -107594;1;0;false;false;;;;;; -107595;6;0;false;false;63;95;191;;; -107601;3;0;false;false;;;;;; -107604;1;0;false;false;63;95;191;;; -107605;1;0;false;false;;;;;; -107606;2;0;false;false;63;95;191;;; -107608;1;0;false;false;;;;;; -107609;3;0;false;false;63;95;191;;; -107612;1;0;false;false;;;;;; -107613;7;0;false;false;63;95;191;;; -107620;1;0;false;false;;;;;; -107621;4;0;false;false;63;95;191;;; -107625;1;0;false;false;;;;;; -107626;7;0;false;false;63;95;191;;; -107633;1;0;false;false;;;;;; -107634;3;0;false;false;63;95;191;;; -107637;1;0;false;false;;;;;; -107638;5;0;false;false;63;95;191;;; -107643;1;0;false;false;;;;;; -107644;7;0;false;false;63;95;191;;; -107651;1;0;false;false;;;;;; -107652;4;0;false;false;63;95;191;;; -107656;1;0;false;false;;;;;; -107657;5;0;false;false;63;95;191;;; -107662;3;0;false;false;;;;;; -107665;1;0;false;false;63;95;191;;; -107666;1;0;false;false;;;;;; -107667;3;0;false;false;63;95;191;;; -107670;1;0;false;false;;;;;; -107671;5;0;false;false;63;95;191;;; -107676;1;0;false;false;;;;;; -107677;2;0;false;false;63;95;191;;; -107679;1;0;false;false;;;;;; -107680;8;0;false;false;63;95;191;;; -107688;1;0;false;false;;;;;; -107689;3;0;false;false;63;95;191;;; -107692;1;0;false;false;;;;;; -107693;4;0;false;false;63;95;191;;; -107697;1;0;false;false;;;;;; -107698;6;0;false;false;63;95;191;;; -107704;1;0;false;false;;;;;; -107705;2;0;false;false;63;95;191;;; -107707;1;0;false;false;;;;;; -107708;5;0;false;false;63;95;191;;; -107713;1;0;false;false;;;;;; -107714;2;0;false;false;63;95;191;;; -107716;1;0;false;false;;;;;; -107717;4;0;false;false;63;95;191;;; -107721;1;0;false;false;;;;;; -107722;3;0;false;false;63;95;191;;; -107725;1;0;false;false;;;;;; -107726;8;0;false;false;63;95;191;;; -107734;4;0;false;false;;;;;; -107738;1;0;false;false;63;95;191;;; -107739;1;0;false;false;;;;;; -107740;8;0;false;false;63;95;191;;; -107748;1;0;false;false;;;;;; -107749;2;0;false;false;63;95;191;;; -107751;1;0;false;false;;;;;; -107752;3;0;false;false;63;95;191;;; -107755;1;0;false;false;;;;;; -107756;3;0;false;false;63;95;191;;; -107759;1;0;false;false;;;;;; -107760;4;0;false;false;63;95;191;;; -107764;1;0;false;false;;;;;; -107765;7;0;false;false;63;95;191;;; -107772;1;0;false;false;;;;;; -107773;3;0;false;false;63;95;191;;; -107776;1;0;false;false;;;;;; -107777;5;0;false;false;63;95;191;;; -107782;1;0;false;false;;;;;; -107783;3;0;false;false;63;95;191;;; -107786;1;0;false;false;;;;;; -107787;9;0;false;false;63;95;191;;; -107796;1;0;false;false;;;;;; -107797;2;0;false;false;63;95;191;;; -107799;1;0;false;false;;;;;; -107800;3;0;false;false;63;95;191;;; -107803;1;0;false;false;;;;;; -107804;9;0;false;false;63;95;191;;; -107813;4;0;false;false;;;;;; -107817;1;0;false;false;63;95;191;;; -107818;1;0;false;false;;;;;; -107819;2;0;false;false;63;95;191;;; -107821;1;0;false;false;;;;;; -107822;3;0;false;false;63;95;191;;; -107825;1;0;false;false;;;;;; -107826;4;0;false;false;63;95;191;;; -107830;1;0;false;false;;;;;; -107831;5;0;false;false;63;95;191;;; -107836;1;0;false;false;;;;;; -107837;1;0;false;false;63;95;191;;; -107838;1;0;false;false;;;;;; -107839;4;0;false;false;63;95;191;;; -107843;1;0;false;false;;;;;; -107844;4;0;false;false;63;95;191;;; -107848;1;0;false;false;;;;;; -107849;6;0;false;false;63;95;191;;; -107855;1;0;false;false;;;;;; -107856;2;0;false;false;63;95;191;;; -107858;1;0;false;false;;;;;; -107859;3;0;false;false;63;95;191;;; -107862;1;0;false;false;;;;;; -107863;9;0;false;false;63;95;191;;; -107872;1;0;false;false;;;;;; -107873;2;0;false;false;63;95;191;;; -107875;1;0;false;false;;;;;; -107876;4;0;false;false;63;95;191;;; -107880;1;0;false;false;;;;;; -107881;4;0;false;false;63;95;191;;; -107885;1;0;false;false;;;;;; -107886;3;0;false;false;63;95;191;;; -107889;3;0;false;false;;;;;; -107892;1;0;false;false;63;95;191;;; -107893;1;0;false;false;;;;;; -107894;5;0;false;false;63;95;191;;; -107899;1;0;false;false;;;;;; -107900;2;0;false;false;63;95;191;;; -107902;1;0;false;false;;;;;; -107903;5;0;false;false;63;95;191;;; -107908;1;0;false;false;;;;;; -107909;2;0;false;false;63;95;191;;; -107911;1;0;false;false;;;;;; -107912;5;0;false;false;63;95;191;;; -107917;1;0;false;false;;;;;; -107918;2;0;false;false;63;95;191;;; -107920;1;0;false;false;;;;;; -107921;3;0;false;false;63;95;191;;; -107924;1;0;false;false;;;;;; -107925;5;0;false;false;63;95;191;;; -107930;1;0;false;false;;;;;; -107931;10;0;false;false;63;95;191;;; -107941;3;0;false;false;;;;;; -107944;1;0;false;false;63;95;191;;; -107945;1;0;false;false;;;;;; -107946;3;0;false;false;127;127;159;;; -107949;3;0;false;false;;;;;; -107952;1;0;false;false;63;95;191;;; -107953;1;0;false;false;;;;;; -107954;7;0;false;false;63;95;191;;; -107961;1;0;false;false;;;;;; -107962;3;0;false;false;63;95;191;;; -107965;1;0;false;false;;;;;; -107966;9;0;false;false;63;95;191;;; -107975;1;0;false;false;;;;;; -107976;9;0;false;false;63;95;191;;; -107985;1;0;false;false;;;;;; -107986;2;0;false;false;63;95;191;;; -107988;1;0;false;false;;;;;; -107989;3;0;false;false;63;95;191;;; -107992;1;0;false;false;;;;;; -107993;5;0;false;false;63;95;191;;; -107998;1;0;false;false;;;;;; -107999;7;0;false;false;63;95;191;;; -108006;1;0;false;false;;;;;; -108007;4;0;false;false;63;95;191;;; -108011;1;0;false;false;;;;;; -108012;3;0;false;false;63;95;191;;; -108015;1;0;false;false;;;;;; -108016;6;0;false;false;63;95;191;;; -108022;1;0;false;false;;;;;; -108023;3;0;false;false;63;95;191;;; -108026;3;0;false;false;;;;;; -108029;1;0;false;false;63;95;191;;; -108030;1;0;false;false;;;;;; -108031;2;0;false;false;63;95;191;;; -108033;1;0;false;false;;;;;; -108034;2;0;false;false;63;95;191;;; -108036;1;0;false;false;;;;;; -108037;8;0;false;false;63;95;191;;; -108045;1;0;false;false;;;;;; -108046;4;0;false;false;63;95;191;;; -108050;1;0;false;false;;;;;; -108051;3;0;false;false;63;95;191;;; -108054;1;0;false;false;;;;;; -108055;3;0;false;false;63;95;191;;; -108058;1;0;false;false;;;;;; -108059;10;0;false;false;63;95;191;;; -108069;1;0;false;false;;;;;; -108070;9;0;false;false;63;95;191;;; -108079;1;0;false;false;;;;;; -108080;2;0;false;false;63;95;191;;; -108082;1;0;false;false;;;;;; -108083;3;0;false;false;63;95;191;;; -108086;1;0;false;false;;;;;; -108087;8;0;false;false;63;95;191;;; -108095;1;0;false;false;;;;;; -108096;9;0;false;false;63;95;191;;; -108105;3;0;false;false;;;;;; -108108;1;0;false;false;63;95;191;;; -108109;1;0;false;false;;;;;; -108110;10;0;false;false;63;95;191;;; -108120;3;0;false;false;;;;;; -108123;1;0;false;false;63;95;191;;; -108124;1;0;false;false;;;;;; -108125;4;0;false;false;127;127;159;;; -108129;3;0;false;false;;;;;; -108132;2;0;false;false;63;95;191;;; -108134;2;0;false;false;;;;;; -108136;4;1;false;false;127;0;85;;; -108140;1;0;false;false;;;;;; -108141;18;0;false;false;0;0;0;;; -108159;3;1;false;false;127;0;85;;; -108162;1;0;false;false;;;;;; -108163;6;0;false;false;0;0;0;;; -108169;1;0;false;false;;;;;; -108170;1;0;false;false;0;0;0;;; -108171;3;0;false;false;;;;;; -108174;3;1;false;false;127;0;85;;; -108177;1;0;false;false;;;;;; -108178;11;0;false;false;0;0;0;;; -108189;3;0;false;false;;;;;; -108192;3;1;false;false;127;0;85;;; -108195;1;0;false;false;;;;;; -108196;9;0;false;false;0;0;0;;; -108205;1;0;false;false;;;;;; -108206;1;0;false;false;0;0;0;;; -108207;1;0;false;false;;;;;; -108208;15;0;false;false;0;0;0;;; -108223;3;0;false;false;;;;;; -108226;3;1;false;false;127;0;85;;; -108229;1;0;false;false;;;;;; -108230;15;0;false;false;0;0;0;;; -108245;1;0;false;false;;;;;; -108246;1;0;false;false;0;0;0;;; -108247;1;0;false;false;;;;;; -108248;35;0;false;false;0;0;0;;; -108283;6;0;false;false;;;;;; -108289;31;0;false;false;63;127;95;;; -108320;1;0;false;false;;;;;; -108321;10;0;false;false;0;0;0;;; -108331;1;0;false;false;;;;;; -108332;1;0;false;false;0;0;0;;; -108333;1;0;false;false;;;;;; -108334;7;0;false;false;0;0;0;;; -108341;1;0;false;false;;;;;; -108342;1;0;false;false;0;0;0;;; -108343;1;0;false;false;;;;;; -108344;13;0;false;false;0;0;0;;; -108357;4;0;false;false;;;;;; -108361;27;0;false;false;0;0;0;;; -108388;1;0;false;false;;;;;; -108389;10;0;false;false;0;0;0;;; -108399;1;0;false;false;;;;;; -108400;11;0;false;false;0;0;0;;; -108411;1;0;false;false;;;;;; -108412;1;0;false;false;0;0;0;;; -108413;1;0;false;false;;;;;; -108414;17;0;false;false;0;0;0;;; -108431;3;0;false;false;;;;;; -108434;9;0;false;false;0;0;0;;; -108443;4;1;false;false;127;0;85;;; -108447;1;0;false;false;0;0;0;;; -108448;1;0;false;false;;;;;; -108449;7;0;false;false;0;0;0;;; -108456;3;0;false;false;;;;;; -108459;7;0;false;false;0;0;0;;; -108466;1;0;false;false;;;;;; -108467;1;0;false;false;0;0;0;;; -108468;1;0;false;false;;;;;; -108469;11;0;false;false;0;0;0;;; -108480;2;0;false;false;;;;;; -108482;1;0;false;false;0;0;0;;; -108483;2;0;false;false;;;;;; -108485;3;0;false;false;63;95;191;;; -108488;3;0;false;false;;;;;; -108491;1;0;false;false;63;95;191;;; -108492;1;0;false;false;;;;;; -108493;5;0;false;false;63;95;191;;; -108498;1;0;false;false;;;;;; -108499;3;0;false;false;63;95;191;;; -108502;1;0;false;false;;;;;; -108503;5;0;false;false;63;95;191;;; -108508;1;0;false;false;;;;;; -108509;2;0;false;false;63;95;191;;; -108511;1;0;false;false;;;;;; -108512;3;0;false;false;63;95;191;;; -108515;1;0;false;false;;;;;; -108516;3;0;false;false;63;95;191;;; -108519;1;0;false;false;;;;;; -108520;2;0;false;false;63;95;191;;; -108522;1;0;false;false;;;;;; -108523;3;0;false;false;63;95;191;;; -108526;1;0;false;false;;;;;; -108527;4;0;false;false;63;95;191;;; -108531;1;0;false;false;;;;;; -108532;4;0;false;false;63;95;191;;; -108536;1;0;false;false;;;;;; -108537;1;0;false;false;63;95;191;;; -108538;3;0;false;false;;;;;; -108541;2;0;false;false;63;95;191;;; -108543;2;0;false;false;;;;;; -108545;4;1;false;false;127;0;85;;; -108549;1;0;false;false;;;;;; -108550;21;0;false;false;0;0;0;;; -108571;1;0;false;false;;;;;; -108572;1;0;false;false;0;0;0;;; -108573;3;0;false;false;;;;;; -108576;3;1;false;false;127;0;85;;; -108579;1;0;false;false;;;;;; -108580;14;0;false;false;0;0;0;;; -108594;1;0;false;false;;;;;; -108595;1;0;false;false;0;0;0;;; -108596;1;0;false;false;;;;;; -108597;24;0;false;false;0;0;0;;; -108621;3;0;false;false;;;;;; -108624;71;0;false;false;63;127;95;;; -108695;1;0;false;false;;;;;; -108696;9;0;false;false;0;0;0;;; -108705;1;0;false;false;;;;;; -108706;1;0;false;false;0;0;0;;; -108707;1;0;false;false;;;;;; -108708;5;1;false;false;127;0;85;;; -108713;1;0;false;false;0;0;0;;; -108714;3;0;false;false;;;;;; -108717;71;0;false;false;63;127;95;;; -108788;1;0;false;false;;;;;; -108789;45;0;false;false;63;127;95;;; -108834;1;0;false;false;;;;;; -108835;2;1;false;false;127;0;85;;; -108837;1;0;false;false;;;;;; -108838;16;0;false;false;0;0;0;;; -108854;1;0;false;false;;;;;; -108855;2;0;false;false;0;0;0;;; -108857;5;0;false;false;;;;;; -108862;36;0;false;false;0;0;0;;; -108898;1;0;false;false;;;;;; -108899;2;0;false;false;0;0;0;;; -108901;1;0;false;false;;;;;; -108902;40;0;false;false;0;0;0;;; -108942;1;0;false;false;;;;;; -108943;1;0;false;false;0;0;0;;; -108944;4;0;false;false;;;;;; -108948;11;0;false;false;0;0;0;;; -108959;1;0;false;false;;;;;; -108960;1;0;false;false;0;0;0;;; -108961;1;0;false;false;;;;;; -108962;15;0;false;false;0;0;0;;; -108977;4;0;false;false;;;;;; -108981;12;0;false;false;0;0;0;;; -108993;3;0;false;false;;;;;; -108996;1;0;false;false;0;0;0;;; -108997;2;0;false;false;;;;;; -108999;1;0;false;false;0;0;0;;; -109000;2;0;false;false;;;;;; -109002;3;0;false;false;63;95;191;;; -109005;3;0;false;false;;;;;; -109008;1;0;false;false;63;95;191;;; -109009;1;0;false;false;;;;;; -109010;5;0;false;false;63;95;191;;; -109015;1;0;false;false;;;;;; -109016;3;0;false;false;63;95;191;;; -109019;1;0;false;false;;;;;; -109020;5;0;false;false;63;95;191;;; -109025;1;0;false;false;;;;;; -109026;2;0;false;false;63;95;191;;; -109028;1;0;false;false;;;;;; -109029;3;0;false;false;63;95;191;;; -109032;1;0;false;false;;;;;; -109033;5;0;false;false;63;95;191;;; -109038;1;0;false;false;;;;;; -109039;2;0;false;false;63;95;191;;; -109041;1;0;false;false;;;;;; -109042;3;0;false;false;63;95;191;;; -109045;1;0;false;false;;;;;; -109046;8;0;false;false;63;95;191;;; -109054;1;0;false;false;;;;;; -109055;5;0;false;false;63;95;191;;; -109060;3;0;false;false;;;;;; -109063;2;0;false;false;63;95;191;;; -109065;2;0;false;false;;;;;; -109067;4;1;false;false;127;0;85;;; -109071;1;0;false;false;;;;;; -109072;25;0;false;false;0;0;0;;; -109097;1;0;false;false;;;;;; -109098;1;0;false;false;0;0;0;;; -109099;3;0;false;false;;;;;; -109102;3;1;false;false;127;0;85;;; -109105;1;0;false;false;;;;;; -109106;10;0;false;false;0;0;0;;; -109116;4;0;false;false;;;;;; -109120;9;0;false;false;0;0;0;;; -109129;1;0;false;false;;;;;; -109130;1;0;false;false;0;0;0;;; -109131;1;0;false;false;;;;;; -109132;5;1;false;false;127;0;85;;; -109137;1;0;false;false;0;0;0;;; -109138;3;0;false;false;;;;;; -109141;11;0;false;false;0;0;0;;; -109152;1;0;false;false;;;;;; -109153;1;0;false;false;0;0;0;;; -109154;1;0;false;false;;;;;; -109155;26;0;false;false;0;0;0;;; -109181;3;0;false;false;;;;;; -109184;9;0;false;false;0;0;0;;; -109193;1;0;false;false;;;;;; -109194;1;0;false;false;0;0;0;;; -109195;1;0;false;false;;;;;; -109196;37;0;false;false;0;0;0;;; -109233;3;0;false;false;;;;;; -109236;54;0;false;false;63;127;95;;; -109290;1;0;false;false;;;;;; -109291;62;0;false;false;63;127;95;;; -109353;1;0;false;false;;;;;; -109354;2;1;false;false;127;0;85;;; -109356;1;0;false;false;;;;;; -109357;9;0;false;false;0;0;0;;; -109366;1;0;false;false;;;;;; -109367;2;0;false;false;0;0;0;;; -109369;1;0;false;false;;;;;; -109370;9;0;false;false;0;0;0;;; -109379;1;0;false;false;;;;;; -109380;1;0;false;false;0;0;0;;; -109381;1;0;false;false;;;;;; -109382;22;0;false;false;0;0;0;;; -109404;1;0;false;false;;;;;; -109405;1;0;false;false;0;0;0;;; -109406;1;0;false;false;;;;;; -109407;1;0;false;false;0;0;0;;; -109408;1;0;false;false;;;;;; -109409;2;0;false;false;0;0;0;;; -109411;4;0;false;false;;;;;; -109415;11;0;false;false;0;0;0;;; -109426;1;0;false;false;;;;;; -109427;2;0;false;false;0;0;0;;; -109429;1;0;false;false;;;;;; -109430;33;0;false;false;0;0;0;;; -109463;1;0;false;false;;;;;; -109464;1;0;false;false;0;0;0;;; -109465;1;0;false;false;;;;;; -109466;3;0;false;false;0;0;0;;; -109469;1;0;false;false;;;;;; -109470;1;0;false;false;0;0;0;;; -109471;4;0;false;false;;;;;; -109475;12;0;false;false;0;0;0;;; -109487;3;0;false;false;;;;;; -109490;1;0;false;false;0;0;0;;; -109491;3;0;false;false;;;;;; -109494;21;0;false;false;0;0;0;;; -109515;2;0;false;false;;;;;; -109517;1;0;false;false;0;0;0;;; -109518;2;0;false;false;;;;;; -109520;3;0;false;false;63;95;191;;; -109523;3;0;false;false;;;;;; -109526;1;0;false;false;63;95;191;;; -109527;1;0;false;false;;;;;; -109528;5;0;false;false;63;95;191;;; -109533;1;0;false;false;;;;;; -109534;3;0;false;false;63;95;191;;; -109537;1;0;false;false;;;;;; -109538;5;0;false;false;63;95;191;;; -109543;1;0;false;false;;;;;; -109544;3;0;false;false;63;95;191;;; -109547;1;0;false;false;;;;;; -109548;9;0;false;false;63;95;191;;; -109557;1;0;false;false;;;;;; -109558;2;0;false;false;63;95;191;;; -109560;1;0;false;false;;;;;; -109561;3;0;false;false;63;95;191;;; -109564;1;0;false;false;;;;;; -109565;5;0;false;false;63;95;191;;; -109570;2;0;false;false;;;;;; -109572;2;0;false;false;63;95;191;;; -109574;1;0;false;false;;;;;; -109575;3;0;false;false;63;95;191;;; -109578;1;0;false;false;;;;;; -109579;2;0;false;false;63;95;191;;; -109581;1;0;false;false;;;;;; -109582;2;0;false;false;63;95;191;;; -109584;1;0;false;false;;;;;; -109585;3;0;false;false;63;95;191;;; -109588;1;0;false;false;;;;;; -109589;8;0;false;false;63;95;191;;; -109597;1;0;false;false;;;;;; -109598;5;0;false;false;63;95;191;;; -109603;3;0;false;false;;;;;; -109606;1;0;false;false;63;95;191;;; -109607;1;0;false;false;;;;;; -109608;4;0;false;false;63;95;191;;; -109612;1;0;false;false;;;;;; -109613;2;0;false;false;63;95;191;;; -109615;1;0;false;false;;;;;; -109616;1;0;false;false;63;95;191;;; -109617;1;0;false;false;;;;;; -109618;4;0;false;false;63;95;191;;; -109622;1;0;false;false;;;;;; -109623;6;0;false;false;63;95;191;;; -109629;1;0;false;false;;;;;; -109630;3;0;false;false;63;95;191;;; -109633;1;0;false;false;;;;;; -109634;2;0;false;false;63;95;191;;; -109636;1;0;false;false;;;;;; -109637;1;0;false;false;63;95;191;;; -109638;1;0;false;false;;;;;; -109639;3;0;false;false;63;95;191;;; -109642;1;0;false;false;;;;;; -109643;9;0;false;false;63;95;191;;; -109652;1;0;false;false;;;;;; -109653;3;0;false;false;63;95;191;;; -109656;1;0;false;false;;;;;; -109657;5;0;false;false;63;95;191;;; -109662;1;0;false;false;;;;;; -109663;2;0;false;false;63;95;191;;; -109665;1;0;false;false;;;;;; -109666;5;0;false;false;63;95;191;;; -109671;1;0;false;false;;;;;; -109672;2;0;false;false;63;95;191;;; -109674;1;0;false;false;;;;;; -109675;3;0;false;false;63;95;191;;; -109678;4;0;false;false;;;;;; -109682;1;0;false;false;63;95;191;;; -109683;1;0;false;false;;;;;; -109684;9;0;false;false;63;95;191;;; -109693;1;0;false;false;;;;;; -109694;2;0;false;false;63;95;191;;; -109696;1;0;false;false;;;;;; -109697;3;0;false;false;63;95;191;;; -109700;1;0;false;false;;;;;; -109701;3;0;false;false;63;95;191;;; -109704;1;0;false;false;;;;;; -109705;7;0;false;false;63;95;191;;; -109712;1;0;false;false;;;;;; -109713;9;0;false;false;63;95;191;;; -109722;1;0;false;false;;;;;; -109723;6;0;false;false;63;95;191;;; -109729;1;0;false;false;;;;;; -109730;3;0;false;false;63;95;191;;; -109733;1;0;false;false;;;;;; -109734;4;0;false;false;63;95;191;;; -109738;1;0;false;false;;;;;; -109739;3;0;false;false;63;95;191;;; -109742;1;0;false;false;;;;;; -109743;9;0;false;false;63;95;191;;; -109752;1;0;false;false;;;;;; -109753;2;0;false;false;63;95;191;;; -109755;1;0;false;false;;;;;; -109756;3;0;false;false;63;95;191;;; -109759;4;0;false;false;;;;;; -109763;1;0;false;false;63;95;191;;; -109764;1;0;false;false;;;;;; -109765;4;0;false;false;63;95;191;;; -109769;1;0;false;false;;;;;; -109770;9;0;false;false;63;95;191;;; -109779;1;0;false;false;;;;;; -109780;4;0;false;false;63;95;191;;; -109784;1;0;false;false;;;;;; -109785;7;0;false;false;63;95;191;;; -109792;1;0;false;false;;;;;; -109793;4;0;false;false;63;95;191;;; -109797;1;0;false;false;;;;;; -109798;3;0;false;false;63;95;191;;; -109801;1;0;false;false;;;;;; -109802;2;0;false;false;63;95;191;;; -109804;1;0;false;false;;;;;; -109805;1;0;false;false;63;95;191;;; -109806;1;0;false;false;;;;;; -109807;3;0;false;false;63;95;191;;; -109810;1;0;false;false;;;;;; -109811;9;0;false;false;63;95;191;;; -109820;3;0;false;false;;;;;; -109823;2;0;false;false;63;95;191;;; -109825;2;0;false;false;;;;;; -109827;4;1;false;false;127;0;85;;; -109831;1;0;false;false;;;;;; -109832;18;0;false;false;0;0;0;;; -109850;1;0;false;false;;;;;; -109851;1;0;false;false;0;0;0;;; -109852;3;0;false;false;;;;;; -109855;11;0;false;false;0;0;0;;; -109866;1;0;false;false;;;;;; -109867;1;0;false;false;0;0;0;;; -109868;1;0;false;false;;;;;; -109869;31;0;false;false;0;0;0;;; -109900;1;0;false;false;;;;;; -109901;16;0;false;false;0;0;0;;; -109917;3;0;false;false;;;;;; -109920;12;0;false;false;0;0;0;;; -109932;2;0;false;false;;;;;; -109934;1;0;false;false;0;0;0;;; -109935;2;0;false;false;;;;;; -109937;3;0;false;false;63;95;191;;; -109940;3;0;false;false;;;;;; -109943;1;0;false;false;63;95;191;;; -109944;1;0;false;false;;;;;; -109945;5;0;false;false;63;95;191;;; -109950;1;0;false;false;;;;;; -109951;3;0;false;false;63;95;191;;; -109954;1;0;false;false;;;;;; -109955;5;0;false;false;63;95;191;;; -109960;1;0;false;false;;;;;; -109961;3;0;false;false;63;95;191;;; -109964;1;0;false;false;;;;;; -109965;9;0;false;false;63;95;191;;; -109974;1;0;false;false;;;;;; -109975;2;0;false;false;63;95;191;;; -109977;1;0;false;false;;;;;; -109978;3;0;false;false;63;95;191;;; -109981;1;0;false;false;;;;;; -109982;6;0;false;false;63;95;191;;; -109988;2;0;false;false;;;;;; -109990;2;0;false;false;63;95;191;;; -109992;1;0;false;false;;;;;; -109993;3;0;false;false;63;95;191;;; -109996;1;0;false;false;;;;;; -109997;2;0;false;false;63;95;191;;; -109999;1;0;false;false;;;;;; -110000;2;0;false;false;63;95;191;;; -110002;1;0;false;false;;;;;; -110003;3;0;false;false;63;95;191;;; -110006;1;0;false;false;;;;;; -110007;4;0;false;false;63;95;191;;; -110011;1;0;false;false;;;;;; -110012;5;0;false;false;63;95;191;;; -110017;3;0;false;false;;;;;; -110020;1;0;false;false;63;95;191;;; -110021;1;0;false;false;;;;;; -110022;4;0;false;false;63;95;191;;; -110026;1;0;false;false;;;;;; -110027;2;0;false;false;63;95;191;;; -110029;1;0;false;false;;;;;; -110030;1;0;false;false;63;95;191;;; -110031;1;0;false;false;;;;;; -110032;4;0;false;false;63;95;191;;; -110036;1;0;false;false;;;;;; -110037;6;0;false;false;63;95;191;;; -110043;1;0;false;false;;;;;; -110044;3;0;false;false;63;95;191;;; -110047;1;0;false;false;;;;;; -110048;2;0;false;false;63;95;191;;; -110050;1;0;false;false;;;;;; -110051;1;0;false;false;63;95;191;;; -110052;1;0;false;false;;;;;; -110053;3;0;false;false;63;95;191;;; -110056;1;0;false;false;;;;;; -110057;9;0;false;false;63;95;191;;; -110066;1;0;false;false;;;;;; -110067;3;0;false;false;63;95;191;;; -110070;1;0;false;false;;;;;; -110071;5;0;false;false;63;95;191;;; -110076;1;0;false;false;;;;;; -110077;2;0;false;false;63;95;191;;; -110079;1;0;false;false;;;;;; -110080;5;0;false;false;63;95;191;;; -110085;1;0;false;false;;;;;; -110086;2;0;false;false;63;95;191;;; -110088;1;0;false;false;;;;;; -110089;3;0;false;false;63;95;191;;; -110092;4;0;false;false;;;;;; -110096;1;0;false;false;63;95;191;;; -110097;1;0;false;false;;;;;; -110098;3;0;false;false;63;95;191;;; -110101;1;0;false;false;;;;;; -110102;2;0;false;false;63;95;191;;; -110104;1;0;false;false;;;;;; -110105;3;0;false;false;63;95;191;;; -110108;1;0;false;false;;;;;; -110109;3;0;false;false;63;95;191;;; -110112;1;0;false;false;;;;;; -110113;7;0;false;false;63;95;191;;; -110120;1;0;false;false;;;;;; -110121;9;0;false;false;63;95;191;;; -110130;1;0;false;false;;;;;; -110131;5;0;false;false;63;95;191;;; -110136;1;0;false;false;;;;;; -110137;3;0;false;false;63;95;191;;; -110140;1;0;false;false;;;;;; -110141;4;0;false;false;63;95;191;;; -110145;1;0;false;false;;;;;; -110146;3;0;false;false;63;95;191;;; -110149;1;0;false;false;;;;;; -110150;9;0;false;false;63;95;191;;; -110159;1;0;false;false;;;;;; -110160;2;0;false;false;63;95;191;;; -110162;1;0;false;false;;;;;; -110163;3;0;false;false;63;95;191;;; -110166;4;0;false;false;;;;;; -110170;1;0;false;false;63;95;191;;; -110171;1;0;false;false;;;;;; -110172;5;0;false;false;63;95;191;;; -110177;1;0;false;false;;;;;; -110178;9;0;false;false;63;95;191;;; -110187;1;0;false;false;;;;;; -110188;5;0;false;false;63;95;191;;; -110193;1;0;false;false;;;;;; -110194;7;0;false;false;63;95;191;;; -110201;1;0;false;false;;;;;; -110202;4;0;false;false;63;95;191;;; -110206;1;0;false;false;;;;;; -110207;3;0;false;false;63;95;191;;; -110210;1;0;false;false;;;;;; -110211;2;0;false;false;63;95;191;;; -110213;1;0;false;false;;;;;; -110214;1;0;false;false;63;95;191;;; -110215;1;0;false;false;;;;;; -110216;3;0;false;false;63;95;191;;; -110219;1;0;false;false;;;;;; -110220;9;0;false;false;63;95;191;;; -110229;3;0;false;false;;;;;; -110232;2;0;false;false;63;95;191;;; -110234;2;0;false;false;;;;;; -110236;4;1;false;false;127;0;85;;; -110240;1;0;false;false;;;;;; -110241;14;0;false;false;0;0;0;;; -110255;1;0;false;false;;;;;; -110256;1;0;false;false;0;0;0;;; -110257;3;0;false;false;;;;;; -110260;11;0;false;false;0;0;0;;; -110271;1;0;false;false;;;;;; -110272;1;0;false;false;0;0;0;;; -110273;1;0;false;false;;;;;; -110274;27;0;false;false;0;0;0;;; -110301;1;0;false;false;;;;;; -110302;16;0;false;false;0;0;0;;; -110318;3;0;false;false;;;;;; -110321;12;0;false;false;0;0;0;;; -110333;2;0;false;false;;;;;; -110335;1;0;false;false;0;0;0;;; -110336;2;0;false;false;;;;;; -110338;3;0;false;false;63;95;191;;; -110341;3;0;false;false;;;;;; -110344;1;0;false;false;63;95;191;;; -110345;1;0;false;false;;;;;; -110346;5;0;false;false;63;95;191;;; -110351;1;0;false;false;;;;;; -110352;3;0;false;false;63;95;191;;; -110355;1;0;false;false;;;;;; -110356;5;0;false;false;63;95;191;;; -110361;1;0;false;false;;;;;; -110362;2;0;false;false;63;95;191;;; -110364;1;0;false;false;;;;;; -110365;3;0;false;false;63;95;191;;; -110368;1;0;false;false;;;;;; -110369;3;0;false;false;63;95;191;;; -110372;1;0;false;false;;;;;; -110373;2;0;false;false;63;95;191;;; -110375;1;0;false;false;;;;;; -110376;3;0;false;false;63;95;191;;; -110379;1;0;false;false;;;;;; -110380;4;0;false;false;63;95;191;;; -110384;1;0;false;false;;;;;; -110385;5;0;false;false;63;95;191;;; -110390;3;0;false;false;;;;;; -110393;1;0;false;false;63;95;191;;; -110394;1;0;false;false;;;;;; -110395;2;0;false;false;63;95;191;;; -110397;1;0;false;false;;;;;; -110398;1;0;false;false;63;95;191;;; -110399;1;0;false;false;;;;;; -110400;9;0;false;false;63;95;191;;; -110409;1;0;false;false;;;;;; -110410;7;0;false;false;63;95;191;;; -110417;1;0;false;false;;;;;; -110418;4;0;false;false;63;95;191;;; -110422;1;0;false;false;;;;;; -110423;3;0;false;false;63;95;191;;; -110426;1;0;false;false;;;;;; -110427;5;0;false;false;63;95;191;;; -110432;1;0;false;false;;;;;; -110433;2;0;false;false;63;95;191;;; -110435;1;0;false;false;;;;;; -110436;3;0;false;false;63;95;191;;; -110439;1;0;false;false;;;;;; -110440;3;0;false;false;63;95;191;;; -110443;1;0;false;false;;;;;; -110444;2;0;false;false;63;95;191;;; -110446;1;0;false;false;;;;;; -110447;3;0;false;false;63;95;191;;; -110450;1;0;false;false;;;;;; -110451;9;0;false;false;63;95;191;;; -110460;3;0;false;false;;;;;; -110463;1;0;false;false;63;95;191;;; -110464;1;0;false;false;;;;;; -110465;3;0;false;false;63;95;191;;; -110468;1;0;false;false;;;;;; -110469;6;0;false;false;63;95;191;;; -110475;1;0;false;false;;;;;; -110476;3;0;false;false;63;95;191;;; -110479;1;0;false;false;;;;;; -110480;10;0;false;false;63;95;191;;; -110490;3;0;false;false;;;;;; -110493;2;0;false;false;63;95;191;;; -110495;2;0;false;false;;;;;; -110497;4;1;false;false;127;0;85;;; -110501;1;0;false;false;;;;;; -110502;12;0;false;false;0;0;0;;; -110514;1;0;false;false;;;;;; -110515;1;0;false;false;0;0;0;;; -110516;3;0;false;false;;;;;; -110519;2;1;false;false;127;0;85;;; -110521;1;0;false;false;;;;;; -110522;12;0;false;false;0;0;0;;; -110534;1;0;false;false;;;;;; -110535;1;0;false;false;0;0;0;;; -110536;1;0;false;false;;;;;; -110537;11;0;false;false;0;0;0;;; -110548;1;0;false;false;;;;;; -110549;1;0;false;false;0;0;0;;; -110550;1;0;false;false;;;;;; -110551;2;0;false;false;0;0;0;;; -110553;1;0;false;false;;;;;; -110554;1;0;false;false;0;0;0;;; -110555;4;0;false;false;;;;;; -110559;3;1;false;false;127;0;85;;; -110562;1;0;false;false;;;;;; -110563;10;0;false;false;0;0;0;;; -110573;8;0;false;false;;;;;; -110581;11;0;false;false;0;0;0;;; -110592;1;0;false;false;;;;;; -110593;1;0;false;false;0;0;0;;; -110594;1;0;false;false;;;;;; -110595;12;0;false;false;0;0;0;;; -110607;4;0;false;false;;;;;; -110611;9;0;false;false;0;0;0;;; -110620;1;0;false;false;;;;;; -110621;1;0;false;false;0;0;0;;; -110622;1;0;false;false;;;;;; -110623;15;0;false;false;0;0;0;;; -110638;4;0;false;false;;;;;; -110642;21;0;false;false;0;0;0;;; -110663;3;0;false;false;;;;;; -110666;1;0;false;false;0;0;0;;; -110667;3;0;false;false;;;;;; -110670;4;1;false;false;127;0;85;;; -110674;1;0;false;false;;;;;; -110675;1;0;false;false;0;0;0;;; -110676;4;0;false;false;;;;;; -110680;22;0;false;false;0;0;0;;; -110702;3;0;false;false;;;;;; -110705;1;0;false;false;0;0;0;;; -110706;2;0;false;false;;;;;; -110708;1;0;false;false;0;0;0;;; -110709;2;0;false;false;;;;;; -110711;3;0;false;false;63;95;191;;; -110714;3;0;false;false;;;;;; -110717;1;0;false;false;63;95;191;;; -110718;1;0;false;false;;;;;; -110719;5;0;false;false;63;95;191;;; -110724;1;0;false;false;;;;;; -110725;3;0;false;false;63;95;191;;; -110728;1;0;false;false;;;;;; -110729;5;0;false;false;63;95;191;;; -110734;1;0;false;false;;;;;; -110735;2;0;false;false;63;95;191;;; -110737;1;0;false;false;;;;;; -110738;3;0;false;false;63;95;191;;; -110741;1;0;false;false;;;;;; -110742;5;0;false;false;63;95;191;;; -110747;1;0;false;false;;;;;; -110748;2;0;false;false;63;95;191;;; -110750;1;0;false;false;;;;;; -110751;3;0;false;false;63;95;191;;; -110754;1;0;false;false;;;;;; -110755;8;0;false;false;63;95;191;;; -110763;1;0;false;false;;;;;; -110764;5;0;false;false;63;95;191;;; -110769;3;0;false;false;;;;;; -110772;1;0;false;false;63;95;191;;; -110773;1;0;false;false;;;;;; -110774;2;0;false;false;63;95;191;;; -110776;1;0;false;false;;;;;; -110777;1;0;false;false;63;95;191;;; -110778;1;0;false;false;;;;;; -110779;9;0;false;false;63;95;191;;; -110788;1;0;false;false;;;;;; -110789;7;0;false;false;63;95;191;;; -110796;1;0;false;false;;;;;; -110797;4;0;false;false;63;95;191;;; -110801;1;0;false;false;;;;;; -110802;3;0;false;false;63;95;191;;; -110805;1;0;false;false;;;;;; -110806;5;0;false;false;63;95;191;;; -110811;1;0;false;false;;;;;; -110812;2;0;false;false;63;95;191;;; -110814;1;0;false;false;;;;;; -110815;3;0;false;false;63;95;191;;; -110818;1;0;false;false;;;;;; -110819;5;0;false;false;63;95;191;;; -110824;1;0;false;false;;;;;; -110825;2;0;false;false;63;95;191;;; -110827;1;0;false;false;;;;;; -110828;3;0;false;false;63;95;191;;; -110831;1;0;false;false;;;;;; -110832;9;0;false;false;63;95;191;;; -110841;3;0;false;false;;;;;; -110844;1;0;false;false;63;95;191;;; -110845;1;0;false;false;;;;;; -110846;3;0;false;false;63;95;191;;; -110849;1;0;false;false;;;;;; -110850;6;0;false;false;63;95;191;;; -110856;1;0;false;false;;;;;; -110857;3;0;false;false;63;95;191;;; -110860;1;0;false;false;;;;;; -110861;10;0;false;false;63;95;191;;; -110871;3;0;false;false;;;;;; -110874;2;0;false;false;63;95;191;;; -110876;2;0;false;false;;;;;; -110878;4;1;false;false;127;0;85;;; -110882;1;0;false;false;;;;;; -110883;16;0;false;false;0;0;0;;; -110899;1;0;false;false;;;;;; -110900;1;0;false;false;0;0;0;;; -110901;3;0;false;false;;;;;; -110904;2;1;false;false;127;0;85;;; -110906;1;0;false;false;;;;;; -110907;12;0;false;false;0;0;0;;; -110919;1;0;false;false;;;;;; -110920;1;0;false;false;0;0;0;;; -110921;1;0;false;false;;;;;; -110922;11;0;false;false;0;0;0;;; -110933;1;0;false;false;;;;;; -110934;1;0;false;false;0;0;0;;; -110935;1;0;false;false;;;;;; -110936;2;0;false;false;0;0;0;;; -110938;1;0;false;false;;;;;; -110939;1;0;false;false;0;0;0;;; -110940;4;0;false;false;;;;;; -110944;3;1;false;false;127;0;85;;; -110947;1;0;false;false;;;;;; -110948;10;0;false;false;0;0;0;;; -110958;8;0;false;false;;;;;; -110966;11;0;false;false;0;0;0;;; -110977;1;0;false;false;;;;;; -110978;1;0;false;false;0;0;0;;; -110979;1;0;false;false;;;;;; -110980;12;0;false;false;0;0;0;;; -110992;4;0;false;false;;;;;; -110996;9;0;false;false;0;0;0;;; -111005;1;0;false;false;;;;;; -111006;1;0;false;false;0;0;0;;; -111007;1;0;false;false;;;;;; -111008;15;0;false;false;0;0;0;;; -111023;4;0;false;false;;;;;; -111027;21;0;false;false;0;0;0;;; -111048;3;0;false;false;;;;;; -111051;1;0;false;false;0;0;0;;; -111052;3;0;false;false;;;;;; -111055;4;1;false;false;127;0;85;;; -111059;1;0;false;false;;;;;; -111060;1;0;false;false;0;0;0;;; -111061;4;0;false;false;;;;;; -111065;26;0;false;false;0;0;0;;; -111091;3;0;false;false;;;;;; -111094;1;0;false;false;0;0;0;;; -111095;2;0;false;false;;;;;; -111097;1;0;false;false;0;0;0;;; -111098;2;0;false;false;;;;;; -111100;3;0;false;false;63;95;191;;; -111103;3;0;false;false;;;;;; -111106;1;0;false;false;63;95;191;;; -111107;1;0;false;false;;;;;; -111108;5;0;false;false;63;95;191;;; -111113;1;0;false;false;;;;;; -111114;3;0;false;false;63;95;191;;; -111117;1;0;false;false;;;;;; -111118;9;0;false;false;63;95;191;;; -111127;1;0;false;false;;;;;; -111128;10;0;false;false;63;95;191;;; -111138;3;0;false;false;;;;;; -111141;1;0;false;false;63;95;191;;; -111142;1;0;false;false;;;;;; -111143;4;0;false;false;63;95;191;;; -111147;1;0;false;false;;;;;; -111148;8;0;false;false;63;95;191;;; -111156;1;0;false;false;;;;;; -111157;7;0;false;false;63;95;191;;; -111164;1;0;false;false;;;;;; -111165;12;0;false;false;63;95;191;;; -111177;1;0;false;false;;;;;; -111178;3;0;false;false;63;95;191;;; -111181;1;0;false;false;;;;;; -111182;8;0;false;false;63;95;191;;; -111190;1;0;false;false;;;;;; -111191;4;0;false;false;63;95;191;;; -111195;1;0;false;false;;;;;; -111196;4;0;false;false;63;95;191;;; -111200;1;0;false;false;;;;;; -111201;15;0;false;false;63;95;191;;; -111216;1;0;false;false;;;;;; -111217;2;0;false;false;63;95;191;;; -111219;4;0;false;false;;;;;; -111223;1;0;false;false;63;95;191;;; -111224;1;0;false;false;;;;;; -111225;6;0;false;false;63;95;191;;; -111231;3;0;false;false;;;;;; -111234;1;0;false;false;63;95;191;;; -111235;1;0;false;false;;;;;; -111236;3;0;false;false;127;127;159;;; -111239;3;0;false;false;;;;;; -111242;1;0;false;false;63;95;191;;; -111243;3;0;false;false;;;;;; -111246;1;0;false;false;63;95;191;;; -111247;1;0;false;false;;;;;; -111248;7;1;false;false;127;159;191;;; -111255;1;0;false;false;63;95;191;;; -111256;1;0;false;false;;;;;; -111257;3;0;false;false;63;95;191;;; -111260;1;0;false;false;;;;;; -111261;1;0;false;false;63;95;191;;; -111262;1;0;false;false;;;;;; -111263;8;0;false;false;63;95;191;;; -111271;3;0;false;false;;;;;; -111274;1;0;false;false;63;95;191;;; -111275;1;0;false;false;;;;;; -111276;7;1;false;false;127;159;191;;; -111283;1;0;false;false;63;95;191;;; -111284;1;0;false;false;;;;;; -111285;3;0;false;false;63;95;191;;; -111288;1;0;false;false;;;;;; -111289;1;0;false;false;63;95;191;;; -111290;1;0;false;false;;;;;; -111291;8;0;false;false;63;95;191;;; -111299;3;0;false;false;;;;;; -111302;1;0;false;false;63;95;191;;; -111303;1;0;false;false;;;;;; -111304;7;1;false;false;127;159;191;;; -111311;5;0;false;false;63;95;191;;; -111316;1;0;false;false;;;;;; -111317;3;0;false;false;63;95;191;;; -111320;1;0;false;false;;;;;; -111321;5;0;false;false;63;95;191;;; -111326;3;0;false;false;;;;;; -111329;1;0;false;false;63;95;191;;; -111330;1;0;false;false;;;;;; -111331;7;1;false;false;127;159;191;;; -111338;6;0;false;false;63;95;191;;; -111344;1;0;false;false;;;;;; -111345;3;0;false;false;63;95;191;;; -111348;1;0;false;false;;;;;; -111349;6;0;false;false;63;95;191;;; -111355;3;0;false;false;;;;;; -111358;1;0;false;false;63;95;191;;; -111359;1;0;false;false;;;;;; -111360;7;1;false;false;127;159;191;;; -111367;15;0;false;false;63;95;191;;; -111382;1;0;false;false;;;;;; -111383;10;0;false;false;63;95;191;;; -111393;1;0;false;false;;;;;; -111394;3;0;false;false;63;95;191;;; -111397;1;0;false;false;;;;;; -111398;10;0;false;false;63;95;191;;; -111408;1;0;false;false;;;;;; -111409;2;0;false;false;63;95;191;;; -111411;1;0;false;false;;;;;; -111412;12;0;false;false;63;95;191;;; -111424;1;0;false;false;;;;;; -111425;3;0;false;false;63;95;191;;; -111428;1;0;false;false;;;;;; -111429;9;0;false;false;63;95;191;;; -111438;4;0;false;false;;;;;; -111442;1;0;false;false;63;95;191;;; -111443;2;0;false;false;;;;;; -111445;6;0;false;false;63;95;191;;; -111451;1;0;false;false;;;;;; -111452;5;0;false;false;63;95;191;;; -111457;1;0;false;false;;;;;; -111458;10;0;false;false;63;95;191;;; -111468;1;0;false;false;;;;;; -111469;3;0;false;false;63;95;191;;; -111472;1;0;false;false;;;;;; -111473;10;0;false;false;63;95;191;;; -111483;1;0;false;false;;;;;; -111484;8;0;false;false;63;95;191;;; -111492;1;0;false;false;;;;;; -111493;7;0;false;false;63;95;191;;; -111500;1;0;false;false;;;;;; -111501;12;0;false;false;63;95;191;;; -111513;1;0;false;false;;;;;; -111514;3;0;false;false;63;95;191;;; -111517;4;0;false;false;;;;;; -111521;1;0;false;false;63;95;191;;; -111522;2;0;false;false;;;;;; -111524;6;0;false;false;63;95;191;;; -111530;1;0;false;false;;;;;; -111531;5;0;false;false;63;95;191;;; -111536;3;0;false;false;;;;;; -111539;2;0;false;false;63;95;191;;; -111541;2;0;false;false;;;;;; -111543;4;1;false;false;127;0;85;;; -111547;1;0;false;false;;;;;; -111548;5;0;false;false;0;0;0;;; -111553;3;1;false;false;127;0;85;;; -111556;1;0;false;false;;;;;; -111557;2;0;false;false;0;0;0;;; -111559;1;0;false;false;;;;;; -111560;3;1;false;false;127;0;85;;; -111563;1;0;false;false;;;;;; -111564;2;0;false;false;0;0;0;;; -111566;1;0;false;false;;;;;; -111567;3;1;false;false;127;0;85;;; -111570;1;0;false;false;;;;;; -111571;6;0;false;false;0;0;0;;; -111577;1;0;false;false;;;;;; -111578;3;1;false;false;127;0;85;;; -111581;1;0;false;false;;;;;; -111582;7;0;false;false;0;0;0;;; -111589;1;0;false;false;;;;;; -111590;7;1;false;false;127;0;85;;; -111597;1;0;false;false;;;;;; -111598;16;0;false;false;0;0;0;;; -111614;1;0;false;false;;;;;; -111615;1;0;false;false;0;0;0;;; -111616;3;0;false;false;;;;;; -111619;2;1;false;false;127;0;85;;; -111621;1;0;false;false;;;;;; -111622;17;0;false;false;0;0;0;;; -111639;1;0;false;false;;;;;; -111640;1;0;false;false;0;0;0;;; -111641;4;0;false;false;;;;;; -111645;8;0;false;false;0;0;0;;; -111653;1;0;false;false;;;;;; -111654;1;0;false;false;0;0;0;;; -111655;1;0;false;false;;;;;; -111656;11;0;false;false;0;0;0;;; -111667;1;0;false;false;;;;;; -111668;1;0;false;false;0;0;0;;; -111669;1;0;false;false;;;;;; -111670;1;0;false;false;0;0;0;;; -111671;1;0;false;false;;;;;; -111672;10;0;false;false;0;0;0;;; -111682;1;0;false;false;;;;;; -111683;6;0;false;false;0;0;0;;; -111689;1;0;false;false;;;;;; -111690;7;0;false;false;0;0;0;;; -111697;1;0;false;false;;;;;; -111698;4;1;false;false;127;0;85;;; -111702;2;0;false;false;0;0;0;;; -111704;3;0;false;false;;;;;; -111707;1;0;false;false;0;0;0;;; -111708;3;0;false;false;;;;;; -111711;4;1;false;false;127;0;85;;; -111715;1;0;false;false;;;;;; -111716;1;0;false;false;0;0;0;;; -111717;4;0;false;false;;;;;; -111721;3;1;false;false;127;0;85;;; -111724;1;0;false;false;;;;;; -111725;9;0;false;false;0;0;0;;; -111734;1;0;false;false;;;;;; -111735;1;0;false;false;0;0;0;;; -111736;1;0;false;false;;;;;; -111737;2;0;false;false;0;0;0;;; -111739;1;0;false;false;;;;;; -111740;1;0;false;false;0;0;0;;; -111741;1;0;false;false;;;;;; -111742;21;0;false;false;0;0;0;;; -111763;1;0;false;false;;;;;; -111764;1;0;false;false;0;0;0;;; -111765;1;0;false;false;;;;;; -111766;11;0;false;false;0;0;0;;; -111777;4;0;false;false;;;;;; -111781;3;1;false;false;127;0;85;;; -111784;1;0;false;false;;;;;; -111785;4;0;false;false;0;0;0;;; -111789;1;0;false;false;;;;;; -111790;1;0;false;false;0;0;0;;; -111791;1;0;false;false;;;;;; -111792;1;0;false;false;0;0;0;;; -111793;1;0;false;false;;;;;; -111794;1;0;false;false;0;0;0;;; -111795;1;0;false;false;;;;;; -111796;7;0;false;false;0;0;0;;; -111803;4;0;false;false;;;;;; -111807;3;1;false;false;127;0;85;;; -111810;1;0;false;false;;;;;; -111811;17;0;false;false;0;0;0;;; -111828;1;0;false;false;;;;;; -111829;1;0;false;false;0;0;0;;; -111830;1;0;false;false;;;;;; -111831;10;0;false;false;0;0;0;;; -111841;1;0;false;false;;;;;; -111842;1;0;false;false;0;0;0;;; -111843;1;0;false;false;;;;;; -111844;9;0;false;false;0;0;0;;; -111853;1;0;false;false;;;;;; -111854;1;0;false;false;0;0;0;;; -111855;1;0;false;false;;;;;; -111856;11;0;false;false;0;0;0;;; -111867;4;0;false;false;;;;;; -111871;3;1;false;false;127;0;85;;; -111874;1;0;false;false;;;;;; -111875;13;0;false;false;0;0;0;;; -111888;1;0;false;false;;;;;; -111889;1;0;false;false;0;0;0;;; -111890;1;0;false;false;;;;;; -111891;9;0;false;false;0;0;0;;; -111900;1;0;false;false;;;;;; -111901;1;0;false;false;0;0;0;;; -111902;1;0;false;false;;;;;; -111903;10;0;false;false;0;0;0;;; -111913;1;0;false;false;;;;;; -111914;1;0;false;false;0;0;0;;; -111915;1;0;false;false;;;;;; -111916;22;0;false;false;0;0;0;;; -111938;4;0;false;false;;;;;; -111942;3;1;false;false;127;0;85;;; -111945;1;0;false;false;;;;;; -111946;6;0;false;false;0;0;0;;; -111952;1;0;false;false;;;;;; -111953;1;0;false;false;0;0;0;;; -111954;1;0;false;false;;;;;; -111955;17;0;false;false;0;0;0;;; -111972;1;0;false;false;;;;;; -111973;1;0;false;false;0;0;0;;; -111974;1;0;false;false;;;;;; -111975;13;0;false;false;0;0;0;;; -111988;1;0;false;false;;;;;; -111989;1;0;false;false;0;0;0;;; -111990;1;0;false;false;;;;;; -111991;10;0;false;false;0;0;0;;; -112001;1;0;false;false;;;;;; -112002;48;0;false;false;63;127;95;;; -112050;2;0;false;false;;;;;; -112052;3;1;false;false;127;0;85;;; -112055;1;0;false;false;;;;;; -112056;9;0;false;false;0;0;0;;; -112065;1;0;false;false;;;;;; -112066;1;0;false;false;0;0;0;;; -112067;1;0;false;false;;;;;; -112068;23;0;false;false;0;0;0;;; -112091;4;0;false;false;;;;;; -112095;5;0;false;false;0;0;0;;; -112100;1;0;false;false;;;;;; -112101;10;0;false;false;0;0;0;;; -112111;1;0;false;false;;;;;; -112112;1;0;false;false;0;0;0;;; -112113;1;0;false;false;;;;;; -112114;16;0;false;false;0;0;0;;; -112130;4;0;false;false;;;;;; -112134;5;0;false;false;0;0;0;;; -112139;1;0;false;false;;;;;; -112140;10;0;false;false;0;0;0;;; -112150;1;0;false;false;;;;;; -112151;1;0;false;false;0;0;0;;; -112152;1;0;false;false;;;;;; -112153;16;0;false;false;0;0;0;;; -112169;4;0;false;false;;;;;; -112173;2;0;false;false;0;0;0;;; -112175;1;0;false;false;;;;;; -112176;2;0;false;false;0;0;0;;; -112178;1;0;false;false;;;;;; -112179;1;0;false;false;0;0;0;;; -112180;1;0;false;false;;;;;; -112181;8;0;false;false;0;0;0;;; -112189;7;0;false;false;;;;;; -112196;2;1;false;false;127;0;85;;; -112198;1;0;false;false;;;;;; -112199;16;0;false;false;0;0;0;;; -112215;1;0;false;false;;;;;; -112216;1;0;false;false;0;0;0;;; -112217;5;0;false;false;;;;;; -112222;9;0;false;false;0;0;0;;; -112231;1;0;false;false;;;;;; -112232;1;0;false;false;0;0;0;;; -112233;1;0;false;false;;;;;; -112234;2;0;false;false;0;0;0;;; -112236;4;0;false;false;;;;;; -112240;1;0;false;false;0;0;0;;; -112241;4;0;false;false;;;;;; -112245;3;1;false;false;127;0;85;;; -112248;1;0;false;false;;;;;; -112249;1;0;false;false;0;0;0;;; -112250;3;1;false;false;127;0;85;;; -112253;1;0;false;false;;;;;; -112254;1;0;false;false;0;0;0;;; -112255;1;0;false;false;;;;;; -112256;1;0;false;false;0;0;0;;; -112257;1;0;false;false;;;;;; -112258;10;0;false;false;0;0;0;;; -112268;1;0;false;false;;;;;; -112269;6;0;false;false;0;0;0;;; -112275;1;0;false;false;;;;;; -112276;1;0;false;false;0;0;0;;; -112277;1;0;false;false;;;;;; -112278;4;0;false;false;0;0;0;;; -112282;1;0;false;false;;;;;; -112283;2;0;false;false;0;0;0;;; -112285;1;0;false;false;;;;;; -112286;1;0;false;false;0;0;0;;; -112287;1;0;false;false;;;;;; -112288;1;0;false;false;0;0;0;;; -112289;1;0;false;false;;;;;; -112290;10;0;false;false;0;0;0;;; -112300;1;0;false;false;;;;;; -112301;4;0;false;false;0;0;0;;; -112305;1;0;false;false;;;;;; -112306;6;0;false;false;0;0;0;;; -112312;1;0;false;false;;;;;; -112313;2;0;false;false;0;0;0;;; -112315;1;0;false;false;;;;;; -112316;11;0;false;false;0;0;0;;; -112327;1;0;false;false;;;;;; -112328;1;0;false;false;0;0;0;;; -112329;5;0;false;false;;;;;; -112334;6;0;false;false;0;0;0;;; -112340;1;0;false;false;;;;;; -112341;4;0;false;false;0;0;0;;; -112345;1;0;false;false;;;;;; -112346;1;0;false;false;0;0;0;;; -112347;1;0;false;false;;;;;; -112348;19;0;false;false;0;0;0;;; -112367;5;0;false;false;;;;;; -112372;23;0;false;false;0;0;0;;; -112395;1;0;false;false;;;;;; -112396;2;0;false;false;0;0;0;;; -112398;1;0;false;false;;;;;; -112399;7;0;false;false;0;0;0;;; -112406;1;0;false;false;;;;;; -112407;3;0;false;false;0;0;0;;; -112410;1;0;false;false;;;;;; -112411;11;0;false;false;0;0;0;;; -112422;1;0;false;false;;;;;; -112423;11;0;false;false;0;0;0;;; -112434;1;0;false;false;;;;;; -112435;17;0;false;false;0;0;0;;; -112452;4;0;false;false;;;;;; -112456;1;0;false;false;0;0;0;;; -112457;4;0;false;false;;;;;; -112461;13;0;false;false;0;0;0;;; -112474;4;0;false;false;;;;;; -112478;1;0;false;false;0;0;0;;; -112479;2;0;false;false;;;;;; -112481;1;0;false;false;0;0;0;;; -112482;2;0;false;false;;;;;; -112484;3;0;false;false;63;95;191;;; -112487;4;0;false;false;;;;;; -112491;1;0;false;false;63;95;191;;; -112492;1;0;false;false;;;;;; -112493;4;0;false;false;63;95;191;;; -112497;1;0;false;false;;;;;; -112498;3;0;false;false;63;95;191;;; -112501;1;0;false;false;;;;;; -112502;10;0;false;false;63;95;191;;; -112512;1;0;false;false;;;;;; -112513;8;0;false;false;63;95;191;;; -112521;3;0;false;false;;;;;; -112524;2;0;false;false;63;95;191;;; -112526;2;0;false;false;;;;;; -112528;4;1;false;false;127;0;85;;; -112532;1;0;false;false;;;;;; -112533;15;0;false;false;0;0;0;;; -112548;1;0;false;false;;;;;; -112549;1;0;false;false;0;0;0;;; -112550;3;0;false;false;;;;;; -112553;19;0;false;false;0;0;0;;; -112572;1;0;false;false;;;;;; -112573;1;0;false;false;0;0;0;;; -112574;1;0;false;false;;;;;; -112575;9;0;false;false;0;0;0;;; -112584;2;0;false;false;;;;;; -112586;1;0;false;false;0;0;0;;; -112587;2;0;false;false;;;;;; -112589;6;1;false;false;127;0;85;;; -112595;1;0;false;false;;;;;; -112596;5;0;false;false;0;0;0;;; -112601;1;0;false;false;;;;;; -112602;15;0;false;false;0;0;0;;; -112617;1;0;false;false;;;;;; -112618;1;0;false;false;0;0;0;;; -112619;3;0;false;false;;;;;; -112622;14;0;false;false;0;0;0;;; -112636;3;0;false;false;;;;;; -112639;2;1;false;false;127;0;85;;; -112641;1;0;false;false;;;;;; -112642;11;0;false;false;0;0;0;;; -112653;1;0;false;false;;;;;; -112654;2;0;false;false;0;0;0;;; -112656;1;0;false;false;;;;;; -112657;4;1;false;false;127;0;85;;; -112661;1;0;false;false;0;0;0;;; -112662;1;0;false;false;;;;;; -112663;1;0;false;false;0;0;0;;; -112664;4;0;false;false;;;;;; -112668;6;1;false;false;127;0;85;;; -112674;1;0;false;false;;;;;; -112675;55;0;false;false;0;0;0;;; -112730;3;0;false;false;;;;;; -112733;1;0;false;false;0;0;0;;; -112734;3;0;false;false;;;;;; -112737;6;1;false;false;127;0;85;;; -112743;1;0;false;false;;;;;; -112744;11;0;false;false;0;0;0;;; -112755;2;0;false;false;;;;;; -112757;1;0;false;false;0;0;0;;; -112758;2;0;false;false;;;;;; -112760;3;0;false;false;63;95;191;;; -112763;3;0;false;false;;;;;; -112766;1;0;false;false;63;95;191;;; -112767;1;0;false;false;;;;;; -112768;7;0;false;false;63;95;191;;; -112775;1;0;false;false;;;;;; -112776;3;0;false;false;63;95;191;;; -112779;1;0;false;false;;;;;; -112780;9;0;false;false;63;95;191;;; -112789;1;0;false;false;;;;;; -112790;2;0;false;false;63;95;191;;; -112792;1;0;false;false;;;;;; -112793;7;0;false;false;63;95;191;;; -112800;4;0;false;false;;;;;; -112804;1;0;false;false;63;95;191;;; -112805;4;0;false;false;;;;;; -112809;1;0;false;false;63;95;191;;; -112810;1;0;false;false;;;;;; -112811;8;1;false;false;127;159;191;;; -112819;8;0;false;false;63;95;191;;; -112827;1;0;false;false;;;;;; -112828;3;0;false;false;63;95;191;;; -112831;1;0;false;false;;;;;; -112832;8;0;false;false;63;95;191;;; -112840;3;0;false;false;;;;;; -112843;1;0;false;false;63;95;191;;; -112844;1;0;false;false;;;;;; -112845;11;1;false;false;127;159;191;;; -112856;12;0;false;false;63;95;191;;; -112868;1;0;false;false;;;;;; -112869;4;0;false;false;127;127;159;;; -112873;3;0;false;false;;;;;; -112876;1;0;false;false;63;95;191;;; -112877;4;0;false;false;;;;;; -112881;4;0;false;false;127;127;159;;; -112885;21;0;false;false;63;95;191;;; -112906;1;0;false;false;;;;;; -112907;1;0;false;false;127;127;159;;; -112908;1;0;false;false;;;;;; -112909;2;0;false;false;63;95;191;;; -112911;1;0;false;false;;;;;; -112912;3;0;false;false;63;95;191;;; -112915;1;0;false;false;;;;;; -112916;8;0;false;false;63;95;191;;; -112924;1;0;false;false;;;;;; -112925;3;0;false;false;63;95;191;;; -112928;1;0;false;false;;;;;; -112929;4;0;false;false;63;95;191;;; -112933;1;0;false;false;;;;;; -112934;8;0;false;false;63;95;191;;; -112942;5;0;false;false;127;127;159;;; -112947;3;0;false;false;;;;;; -112950;1;0;false;false;63;95;191;;; -112951;4;0;false;false;;;;;; -112955;4;0;false;false;127;127;159;;; -112959;27;0;false;false;63;95;191;;; -112986;1;0;false;false;;;;;; -112987;1;0;false;false;127;127;159;;; -112988;1;0;false;false;;;;;; -112989;2;0;false;false;63;95;191;;; -112991;1;0;false;false;;;;;; -112992;3;0;false;false;63;95;191;;; -112995;1;0;false;false;;;;;; -112996;6;0;false;false;63;95;191;;; -113002;1;0;false;false;;;;;; -113003;4;0;false;false;63;95;191;;; -113007;1;0;false;false;;;;;; -113008;3;0;false;false;63;95;191;;; -113011;1;0;false;false;;;;;; -113012;6;0;false;false;63;95;191;;; -113018;1;0;false;false;;;;;; -113019;4;0;false;false;63;95;191;;; -113023;1;0;false;false;;;;;; -113024;7;0;false;false;63;95;191;;; -113031;1;0;false;false;;;;;; -113032;3;0;false;false;63;95;191;;; -113035;1;0;false;false;;;;;; -113036;8;0;false;false;63;95;191;;; -113044;5;0;false;false;127;127;159;;; -113049;3;0;false;false;;;;;; -113052;1;0;false;false;63;95;191;;; -113053;1;0;false;false;;;;;; -113054;5;0;false;false;127;127;159;;; -113059;3;0;false;false;;;;;; -113062;1;0;false;false;63;95;191;;; -113063;1;0;false;false;;;;;; -113064;7;1;false;false;127;159;191;;; -113071;3;0;false;false;63;95;191;;; -113074;3;0;false;false;;;;;; -113077;2;0;false;false;63;95;191;;; -113079;2;0;false;false;;;;;; -113081;6;1;false;false;127;0;85;;; -113087;1;0;false;false;;;;;; -113088;3;1;false;false;127;0;85;;; -113091;1;0;false;false;;;;;; -113092;13;0;false;false;0;0;0;;; -113105;1;0;false;false;;;;;; -113106;1;0;false;false;0;0;0;;; -113107;3;0;false;false;;;;;; -113110;14;0;false;false;0;0;0;;; -113124;3;0;false;false;;;;;; -113127;6;1;false;false;127;0;85;;; -113133;1;0;false;false;;;;;; -113134;23;0;false;false;0;0;0;;; -113157;2;0;false;false;;;;;; -113159;1;0;false;false;0;0;0;;; -113160;2;0;false;false;;;;;; -113162;3;0;false;false;63;95;191;;; -113165;3;0;false;false;;;;;; -113168;1;0;false;false;63;95;191;;; -113169;1;0;false;false;;;;;; -113170;4;0;false;false;63;95;191;;; -113174;1;0;false;false;;;;;; -113175;3;0;false;false;63;95;191;;; -113178;1;0;false;false;;;;;; -113179;4;0;false;false;63;95;191;;; -113183;1;0;false;false;;;;;; -113184;8;0;false;false;63;95;191;;; -113192;1;0;false;false;;;;;; -113193;5;0;false;false;63;95;191;;; -113198;2;0;false;false;;;;;; -113200;4;0;false;false;63;95;191;;; -113204;1;0;false;false;;;;;; -113205;4;0;false;false;63;95;191;;; -113209;1;0;false;false;;;;;; -113210;3;0;false;false;63;95;191;;; -113213;1;0;false;false;;;;;; -113214;4;0;false;false;63;95;191;;; -113218;1;0;false;false;;;;;; -113219;4;0;false;false;63;95;191;;; -113223;1;0;false;false;;;;;; -113224;7;0;false;false;63;95;191;;; -113231;3;0;false;false;;;;;; -113234;1;0;false;false;63;95;191;;; -113235;1;0;false;false;;;;;; -113236;9;0;false;false;63;95;191;;; -113245;1;0;false;false;;;;;; -113246;2;0;false;false;63;95;191;;; -113248;1;0;false;false;;;;;; -113249;7;0;false;false;63;95;191;;; -113256;1;0;false;false;;;;;; -113257;2;0;false;false;63;95;191;;; -113259;1;0;false;false;;;;;; -113260;8;0;false;false;63;95;191;;; -113268;1;0;false;false;;;;;; -113269;2;0;false;false;63;95;191;;; -113271;1;0;false;false;;;;;; -113272;4;0;false;false;63;95;191;;; -113276;1;0;false;false;;;;;; -113277;4;0;false;false;63;95;191;;; -113281;1;0;false;false;;;;;; -113282;3;0;false;false;63;95;191;;; -113285;1;0;false;false;;;;;; -113286;3;0;false;false;63;95;191;;; -113289;1;0;false;false;;;;;; -113290;4;0;false;false;63;95;191;;; -113294;3;0;false;false;;;;;; -113297;1;0;false;false;63;95;191;;; -113298;1;0;false;false;;;;;; -113299;6;0;false;false;63;95;191;;; -113305;3;0;false;false;;;;;; -113308;1;0;false;false;63;95;191;;; -113309;3;0;false;false;;;;;; -113312;1;0;false;false;63;95;191;;; -113313;1;0;false;false;;;;;; -113314;8;1;false;false;127;159;191;;; -113322;3;0;false;false;63;95;191;;; -113325;1;0;false;false;;;;;; -113326;7;0;false;false;63;95;191;;; -113333;1;0;false;false;;;;;; -113334;8;0;false;false;63;95;191;;; -113342;1;0;false;false;;;;;; -113343;4;0;false;false;63;95;191;;; -113347;3;0;false;false;;;;;; -113350;1;0;false;false;63;95;191;;; -113351;1;0;false;false;;;;;; -113352;11;1;false;false;127;159;191;;; -113363;12;0;false;false;63;95;191;;; -113375;1;0;false;false;;;;;; -113376;4;0;false;false;127;127;159;;; -113380;3;0;false;false;;;;;; -113383;1;0;false;false;63;95;191;;; -113384;4;0;false;false;;;;;; -113388;4;0;false;false;127;127;159;;; -113392;21;0;false;false;63;95;191;;; -113413;1;0;false;false;;;;;; -113414;1;0;false;false;127;127;159;;; -113415;1;0;false;false;;;;;; -113416;2;0;false;false;63;95;191;;; -113418;1;0;false;false;;;;;; -113419;3;0;false;false;63;95;191;;; -113422;1;0;false;false;;;;;; -113423;8;0;false;false;63;95;191;;; -113431;1;0;false;false;;;;;; -113432;3;0;false;false;63;95;191;;; -113435;1;0;false;false;;;;;; -113436;4;0;false;false;63;95;191;;; -113440;1;0;false;false;;;;;; -113441;8;0;false;false;63;95;191;;; -113449;5;0;false;false;127;127;159;;; -113454;3;0;false;false;;;;;; -113457;1;0;false;false;63;95;191;;; -113458;4;0;false;false;;;;;; -113462;4;0;false;false;127;127;159;;; -113466;27;0;false;false;63;95;191;;; -113493;1;0;false;false;;;;;; -113494;1;0;false;false;127;127;159;;; -113495;1;0;false;false;;;;;; -113496;2;0;false;false;63;95;191;;; -113498;1;0;false;false;;;;;; -113499;3;0;false;false;63;95;191;;; -113502;1;0;false;false;;;;;; -113503;6;0;false;false;63;95;191;;; -113509;1;0;false;false;;;;;; -113510;4;0;false;false;63;95;191;;; -113514;1;0;false;false;;;;;; -113515;3;0;false;false;63;95;191;;; -113518;1;0;false;false;;;;;; -113519;6;0;false;false;63;95;191;;; -113525;1;0;false;false;;;;;; -113526;4;0;false;false;63;95;191;;; -113530;1;0;false;false;;;;;; -113531;7;0;false;false;63;95;191;;; -113538;1;0;false;false;;;;;; -113539;3;0;false;false;63;95;191;;; -113542;1;0;false;false;;;;;; -113543;8;0;false;false;63;95;191;;; -113551;5;0;false;false;127;127;159;;; -113556;3;0;false;false;;;;;; -113559;1;0;false;false;63;95;191;;; -113560;1;0;false;false;;;;;; -113561;5;0;false;false;127;127;159;;; -113566;3;0;false;false;;;;;; -113569;1;0;false;false;63;95;191;;; -113570;1;0;false;false;;;;;; -113571;3;0;false;false;127;127;159;;; -113574;3;0;false;false;;;;;; -113577;1;0;false;false;63;95;191;;; -113578;1;0;false;false;;;;;; -113579;12;1;false;false;127;159;191;;; -113591;3;0;false;false;63;95;191;;; -113594;1;0;false;false;;;;;; -113595;19;0;false;false;63;95;191;;; -113614;1;0;false;false;;;;;; -113615;8;0;false;false;63;95;191;;; -113623;3;0;false;false;;;;;; -113626;1;0;false;false;63;95;191;;; -113627;1;0;false;false;;;;;; -113628;4;0;false;false;127;127;159;;; -113632;3;0;false;false;;;;;; -113635;2;0;false;false;63;95;191;;; -113637;2;0;false;false;;;;;; -113639;6;1;false;false;127;0;85;;; -113645;1;0;false;false;;;;;; -113646;7;1;false;false;127;0;85;;; -113653;1;0;false;false;;;;;; -113654;17;0;false;false;0;0;0;;; -113671;1;0;false;false;;;;;; -113672;1;0;false;false;0;0;0;;; -113673;3;0;false;false;;;;;; -113676;14;0;false;false;0;0;0;;; -113690;3;0;false;false;;;;;; -113693;6;1;false;false;127;0;85;;; -113699;1;0;false;false;;;;;; -113700;13;0;false;false;0;0;0;;; -113713;2;0;false;false;;;;;; -113715;1;0;false;false;0;0;0;;; -113716;2;0;false;false;;;;;; -113718;3;0;false;false;63;95;191;;; -113721;4;0;false;false;;;;;; -113725;1;0;false;false;63;95;191;;; -113726;1;0;false;false;;;;;; -113727;7;0;false;false;63;95;191;;; -113734;1;0;false;false;;;;;; -113735;3;0;false;false;63;95;191;;; -113738;1;0;false;false;;;;;; -113739;5;0;false;false;63;95;191;;; -113744;1;0;false;false;;;;;; -113745;2;0;false;false;63;95;191;;; -113747;1;0;false;false;;;;;; -113748;3;0;false;false;63;95;191;;; -113751;1;0;false;false;;;;;; -113752;4;0;false;false;63;95;191;;; -113756;1;0;false;false;;;;;; -113757;5;0;false;false;63;95;191;;; -113762;1;0;false;false;;;;;; -113763;7;0;false;false;63;95;191;;; -113770;1;0;false;false;;;;;; -113771;5;0;false;false;63;95;191;;; -113776;3;0;false;false;;;;;; -113779;1;0;false;false;63;95;191;;; -113780;1;0;false;false;;;;;; -113781;3;0;false;false;127;127;159;;; -113784;3;0;false;false;;;;;; -113787;1;0;false;false;63;95;191;;; -113788;3;0;false;false;;;;;; -113791;1;0;false;false;63;95;191;;; -113792;1;0;false;false;;;;;; -113793;8;1;false;false;127;159;191;;; -113801;5;0;false;false;63;95;191;;; -113806;1;0;false;false;;;;;; -113807;2;0;false;false;63;95;191;;; -113809;1;0;false;false;;;;;; -113810;3;0;false;false;63;95;191;;; -113813;1;0;false;false;;;;;; -113814;4;0;false;false;63;95;191;;; -113818;1;0;false;false;;;;;; -113819;5;0;false;false;63;95;191;;; -113824;1;0;false;false;;;;;; -113825;7;0;false;false;63;95;191;;; -113832;1;0;false;false;;;;;; -113833;5;0;false;false;63;95;191;;; -113838;3;0;false;false;;;;;; -113841;2;0;false;false;63;95;191;;; -113843;2;0;false;false;;;;;; -113845;3;1;false;false;127;0;85;;; -113848;1;0;false;false;;;;;; -113849;16;0;false;false;0;0;0;;; -113865;1;0;false;false;;;;;; -113866;1;0;false;false;0;0;0;;; -113867;3;0;false;false;;;;;; -113870;3;1;false;false;127;0;85;;; -113873;1;0;false;false;;;;;; -113874;9;0;false;false;0;0;0;;; -113883;1;0;false;false;;;;;; -113884;1;0;false;false;0;0;0;;; -113885;1;0;false;false;;;;;; -113886;2;0;false;false;0;0;0;;; -113888;6;0;false;false;;;;;; -113894;2;1;false;false;127;0;85;;; -113896;1;0;false;false;;;;;; -113897;11;0;false;false;0;0;0;;; -113908;1;0;false;false;;;;;; -113909;2;0;false;false;0;0;0;;; -113911;1;0;false;false;;;;;; -113912;2;0;false;false;0;0;0;;; -113914;1;0;false;false;;;;;; -113915;1;0;false;false;0;0;0;;; -113916;4;0;false;false;;;;;; -113920;57;0;false;false;63;127;95;;; -113977;2;0;false;false;;;;;; -113979;3;1;false;false;127;0;85;;; -113982;1;0;false;false;;;;;; -113983;20;0;false;false;0;0;0;;; -114003;1;0;false;false;;;;;; -114004;1;0;false;false;0;0;0;;; -114005;1;0;false;false;;;;;; -114006;8;0;false;false;0;0;0;;; -114014;1;0;false;false;;;;;; -114015;1;0;false;false;0;0;0;;; -114016;1;0;false;false;;;;;; -114017;10;0;false;false;0;0;0;;; -114027;1;0;false;false;;;;;; -114028;1;0;false;false;0;0;0;;; -114029;1;0;false;false;;;;;; -114030;21;0;false;false;0;0;0;;; -114051;4;0;false;false;;;;;; -114055;9;0;false;false;0;0;0;;; -114064;1;0;false;false;;;;;; -114065;1;0;false;false;0;0;0;;; -114066;1;0;false;false;;;;;; -114067;23;0;false;false;0;0;0;;; -114090;1;0;false;false;;;;;; -114091;1;0;false;false;0;0;0;;; -114092;1;0;false;false;;;;;; -114093;21;0;false;false;0;0;0;;; -114114;1;0;false;false;;;;;; -114115;1;0;false;false;0;0;0;;; -114116;1;0;false;false;;;;;; -114117;11;0;false;false;0;0;0;;; -114128;3;0;false;false;;;;;; -114131;1;0;false;false;0;0;0;;; -114132;3;0;false;false;;;;;; -114135;6;1;false;false;127;0;85;;; -114141;1;0;false;false;;;;;; -114142;31;0;false;false;0;0;0;;; -114173;1;0;false;false;;;;;; -114174;1;0;false;false;0;0;0;;; -114175;1;0;false;false;;;;;; -114176;2;0;false;false;0;0;0;;; -114178;1;0;false;false;;;;;; -114179;8;0;false;false;0;0;0;;; -114187;1;0;false;false;;;;;; -114188;1;0;false;false;0;0;0;;; -114189;1;0;false;false;;;;;; -114190;11;0;false;false;0;0;0;;; -114201;1;0;false;false;;;;;; -114202;9;0;false;false;0;0;0;;; -114211;1;0;false;false;;;;;; -114212;1;0;false;false;0;0;0;;; -114213;1;0;false;false;;;;;; -114214;4;0;false;false;0;0;0;;; -114218;2;0;false;false;;;;;; -114220;1;0;false;false;0;0;0;;; -114221;2;0;false;false;;;;;; -114223;3;0;false;false;63;95;191;;; -114226;3;0;false;false;;;;;; -114229;1;0;false;false;63;95;191;;; -114230;1;0;false;false;;;;;; -114231;7;0;false;false;63;95;191;;; -114238;1;0;false;false;;;;;; -114239;3;0;false;false;63;95;191;;; -114242;1;0;false;false;;;;;; -114243;5;0;false;false;63;95;191;;; -114248;1;0;false;false;;;;;; -114249;8;0;false;false;63;95;191;;; -114257;1;0;false;false;;;;;; -114258;8;0;false;false;63;95;191;;; -114266;1;0;false;false;;;;;; -114267;2;0;false;false;63;95;191;;; -114269;1;0;false;false;;;;;; -114270;3;0;false;false;63;95;191;;; -114273;1;0;false;false;;;;;; -114274;5;0;false;false;63;95;191;;; -114279;1;0;false;false;;;;;; -114280;2;0;false;false;63;95;191;;; -114282;1;0;false;false;;;;;; -114283;3;0;false;false;63;95;191;;; -114286;1;0;false;false;;;;;; -114287;5;0;false;false;63;95;191;;; -114292;3;0;false;false;;;;;; -114295;1;0;false;false;63;95;191;;; -114296;1;0;false;false;;;;;; -114297;3;0;false;false;127;127;159;;; -114300;3;0;false;false;;;;;; -114303;1;0;false;false;63;95;191;;; -114304;3;0;false;false;;;;;; -114307;1;0;false;false;63;95;191;;; -114308;1;0;false;false;;;;;; -114309;8;1;false;false;127;159;191;;; -114317;3;0;false;false;63;95;191;;; -114320;1;0;false;false;;;;;; -114321;5;0;false;false;63;95;191;;; -114326;1;0;false;false;;;;;; -114327;8;0;false;false;63;95;191;;; -114335;1;0;false;false;;;;;; -114336;8;0;false;false;63;95;191;;; -114344;1;0;false;false;;;;;; -114345;2;0;false;false;63;95;191;;; -114347;1;0;false;false;;;;;; -114348;3;0;false;false;63;95;191;;; -114351;1;0;false;false;;;;;; -114352;5;0;false;false;63;95;191;;; -114357;1;0;false;false;;;;;; -114358;2;0;false;false;63;95;191;;; -114360;1;0;false;false;;;;;; -114361;3;0;false;false;63;95;191;;; -114364;1;0;false;false;;;;;; -114365;5;0;false;false;63;95;191;;; -114370;3;0;false;false;;;;;; -114373;1;0;false;false;63;95;191;;; -114374;1;0;false;false;;;;;; -114375;11;1;false;false;127;159;191;;; -114386;12;0;false;false;63;95;191;;; -114398;1;0;false;false;;;;;; -114399;4;0;false;false;127;127;159;;; -114403;3;0;false;false;;;;;; -114406;1;0;false;false;63;95;191;;; -114407;4;0;false;false;;;;;; -114411;4;0;false;false;127;127;159;;; -114415;21;0;false;false;63;95;191;;; -114436;1;0;false;false;;;;;; -114437;1;0;false;false;127;127;159;;; -114438;1;0;false;false;;;;;; -114439;2;0;false;false;63;95;191;;; -114441;1;0;false;false;;;;;; -114442;3;0;false;false;63;95;191;;; -114445;1;0;false;false;;;;;; -114446;8;0;false;false;63;95;191;;; -114454;1;0;false;false;;;;;; -114455;3;0;false;false;63;95;191;;; -114458;1;0;false;false;;;;;; -114459;4;0;false;false;63;95;191;;; -114463;1;0;false;false;;;;;; -114464;8;0;false;false;63;95;191;;; -114472;5;0;false;false;127;127;159;;; -114477;3;0;false;false;;;;;; -114480;1;0;false;false;63;95;191;;; -114481;4;0;false;false;;;;;; -114485;4;0;false;false;127;127;159;;; -114489;27;0;false;false;63;95;191;;; -114516;1;0;false;false;;;;;; -114517;1;0;false;false;127;127;159;;; -114518;1;0;false;false;;;;;; -114519;2;0;false;false;63;95;191;;; -114521;1;0;false;false;;;;;; -114522;3;0;false;false;63;95;191;;; -114525;1;0;false;false;;;;;; -114526;6;0;false;false;63;95;191;;; -114532;1;0;false;false;;;;;; -114533;4;0;false;false;63;95;191;;; -114537;1;0;false;false;;;;;; -114538;3;0;false;false;63;95;191;;; -114541;1;0;false;false;;;;;; -114542;6;0;false;false;63;95;191;;; -114548;1;0;false;false;;;;;; -114549;4;0;false;false;63;95;191;;; -114553;1;0;false;false;;;;;; -114554;7;0;false;false;63;95;191;;; -114561;1;0;false;false;;;;;; -114562;3;0;false;false;63;95;191;;; -114565;1;0;false;false;;;;;; -114566;8;0;false;false;63;95;191;;; -114574;5;0;false;false;127;127;159;;; -114579;3;0;false;false;;;;;; -114582;1;0;false;false;63;95;191;;; -114583;1;0;false;false;;;;;; -114584;5;0;false;false;127;127;159;;; -114589;3;0;false;false;;;;;; -114592;2;0;false;false;63;95;191;;; -114594;2;0;false;false;;;;;; -114596;6;1;false;false;127;0;85;;; -114602;1;0;false;false;;;;;; -114603;3;1;false;false;127;0;85;;; -114606;1;0;false;false;;;;;; -114607;16;0;false;false;0;0;0;;; -114623;1;0;false;false;;;;;; -114624;1;0;false;false;0;0;0;;; -114625;3;0;false;false;;;;;; -114628;14;0;false;false;0;0;0;;; -114642;6;0;false;false;;;;;; -114648;6;1;false;false;127;0;85;;; -114654;1;0;false;false;;;;;; -114655;12;0;false;false;0;0;0;;; -114667;2;0;false;false;;;;;; -114669;1;0;false;false;0;0;0;;; -114670;2;0;false;false;;;;;; -114672;3;0;false;false;63;95;191;;; -114675;3;0;false;false;;;;;; -114678;1;0;false;false;63;95;191;;; -114679;1;0;false;false;;;;;; -114680;7;0;false;false;63;95;191;;; -114687;1;0;false;false;;;;;; -114688;3;0;false;false;63;95;191;;; -114691;1;0;false;false;;;;;; -114692;5;0;false;false;63;95;191;;; -114697;1;0;false;false;;;;;; -114698;6;0;false;false;63;95;191;;; -114704;1;0;false;false;;;;;; -114705;2;0;false;false;63;95;191;;; -114707;1;0;false;false;;;;;; -114708;3;0;false;false;63;95;191;;; -114711;1;0;false;false;;;;;; -114712;5;0;false;false;63;95;191;;; -114717;1;0;false;false;;;;;; -114718;1;0;false;false;63;95;191;;; -114719;1;0;false;false;;;;;; -114720;8;0;false;false;63;95;191;;; -114728;1;0;false;false;;;;;; -114729;2;0;false;false;63;95;191;;; -114731;1;0;false;false;;;;;; -114732;3;0;false;false;63;95;191;;; -114735;1;0;false;false;;;;;; -114736;5;0;false;false;63;95;191;;; -114741;3;0;false;false;;;;;; -114744;1;0;false;false;63;95;191;;; -114745;1;0;false;false;;;;;; -114746;3;0;false;false;63;95;191;;; -114749;1;0;false;false;;;;;; -114750;5;0;false;false;63;95;191;;; -114755;1;0;false;false;;;;;; -114756;6;0;false;false;63;95;191;;; -114762;1;0;false;false;;;;;; -114763;2;0;false;false;63;95;191;;; -114765;1;0;false;false;;;;;; -114766;3;0;false;false;63;95;191;;; -114769;1;0;false;false;;;;;; -114770;6;0;false;false;63;95;191;;; -114776;1;0;false;false;;;;;; -114777;2;0;false;false;63;95;191;;; -114779;1;0;false;false;;;;;; -114780;3;0;false;false;63;95;191;;; -114783;1;0;false;false;;;;;; -114784;9;0;false;false;63;95;191;;; -114793;1;0;false;false;;;;;; -114794;5;0;false;false;63;95;191;;; -114799;1;0;false;false;;;;;; -114800;3;0;false;false;63;95;191;;; -114803;1;0;false;false;;;;;; -114804;5;0;false;false;63;95;191;;; -114809;1;0;false;false;;;;;; -114810;4;0;false;false;63;95;191;;; -114814;1;0;false;false;;;;;; -114815;2;0;false;false;63;95;191;;; -114817;3;0;false;false;;;;;; -114820;1;0;false;false;63;95;191;;; -114821;1;0;false;false;;;;;; -114822;6;0;false;false;63;95;191;;; -114828;1;0;false;false;;;;;; -114829;4;0;false;false;63;95;191;;; -114833;1;0;false;false;;;;;; -114834;1;0;false;false;63;95;191;;; -114835;1;0;false;false;;;;;; -114836;5;0;false;false;63;95;191;;; -114841;1;0;false;false;;;;;; -114842;5;0;false;false;63;95;191;;; -114847;1;0;false;false;;;;;; -114848;7;0;false;false;63;95;191;;; -114855;1;0;false;false;;;;;; -114856;3;0;false;false;63;95;191;;; -114859;1;0;false;false;;;;;; -114860;5;0;false;false;63;95;191;;; -114865;1;0;false;false;;;;;; -114866;6;0;false;false;63;95;191;;; -114872;1;0;false;false;;;;;; -114873;4;0;false;false;63;95;191;;; -114877;1;0;false;false;;;;;; -114878;2;0;false;false;63;95;191;;; -114880;1;0;false;false;;;;;; -114881;3;0;false;false;63;95;191;;; -114884;1;0;false;false;;;;;; -114885;6;0;false;false;63;95;191;;; -114891;1;0;false;false;;;;;; -114892;2;0;false;false;63;95;191;;; -114894;4;0;false;false;;;;;; -114898;1;0;false;false;63;95;191;;; -114899;1;0;false;false;;;;;; -114900;3;0;false;false;63;95;191;;; -114903;1;0;false;false;;;;;; -114904;9;0;false;false;63;95;191;;; -114913;1;0;false;false;;;;;; -114914;5;0;false;false;63;95;191;;; -114919;1;0;false;false;;;;;; -114920;3;0;false;false;63;95;191;;; -114923;1;0;false;false;;;;;; -114924;7;0;false;false;63;95;191;;; -114931;1;0;false;false;;;;;; -114932;3;0;false;false;63;95;191;;; -114935;1;0;false;false;;;;;; -114936;2;0;false;false;63;95;191;;; -114938;1;0;false;false;;;;;; -114939;3;0;false;false;63;95;191;;; -114942;1;0;false;false;;;;;; -114943;5;0;false;false;63;95;191;;; -114948;1;0;false;false;;;;;; -114949;5;0;false;false;63;95;191;;; -114954;1;0;false;false;;;;;; -114955;6;0;false;false;63;95;191;;; -114961;1;0;false;false;;;;;; -114962;2;0;false;false;63;95;191;;; -114964;1;0;false;false;;;;;; -114965;3;0;false;false;63;95;191;;; -114968;1;0;false;false;;;;;; -114969;6;0;false;false;63;95;191;;; -114975;4;0;false;false;;;;;; -114979;1;0;false;false;63;95;191;;; -114980;1;0;false;false;;;;;; -114981;4;0;false;false;63;95;191;;; -114985;1;0;false;false;;;;;; -114986;2;0;false;false;63;95;191;;; -114988;1;0;false;false;;;;;; -114989;1;0;false;false;63;95;191;;; -114990;1;0;false;false;;;;;; -114991;10;0;false;false;63;95;191;;; -115001;3;0;false;false;;;;;; -115004;1;0;false;false;63;95;191;;; -115005;1;0;false;false;;;;;; -115006;7;0;false;false;63;95;191;;; -115013;1;0;false;false;;;;;; -115014;8;0;false;false;63;95;191;;; -115022;1;0;false;false;;;;;; -115023;6;0;false;false;63;95;191;;; -115029;1;0;false;false;;;;;; -115030;9;0;false;false;63;95;191;;; -115039;1;0;false;false;;;;;; -115040;3;0;false;false;63;95;191;;; -115043;1;0;false;false;;;;;; -115044;5;0;false;false;63;95;191;;; -115049;1;0;false;false;;;;;; -115050;7;0;false;false;63;95;191;;; -115057;1;0;false;false;;;;;; -115058;9;0;false;false;63;95;191;;; -115067;1;0;false;false;;;;;; -115068;10;0;false;false;63;95;191;;; -115078;4;0;false;false;;;;;; -115082;1;0;false;false;63;95;191;;; -115083;1;0;false;false;;;;;; -115084;6;0;false;false;63;95;191;;; -115090;1;0;false;false;;;;;; -115091;3;0;false;false;63;95;191;;; -115094;1;0;false;false;;;;;; -115095;7;0;false;false;63;95;191;;; -115102;1;0;false;false;;;;;; -115103;6;0;false;false;63;95;191;;; -115109;1;0;false;false;;;;;; -115110;2;0;false;false;63;95;191;;; -115112;1;0;false;false;;;;;; -115113;1;0;false;false;63;95;191;;; -115114;1;0;false;false;;;;;; -115115;4;0;false;false;63;95;191;;; -115119;1;0;false;false;;;;;; -115120;7;0;false;false;63;95;191;;; -115127;4;0;false;false;;;;;; -115131;1;0;false;false;63;95;191;;; -115132;1;0;false;false;;;;;; -115133;9;0;false;false;63;95;191;;; -115142;1;0;false;false;;;;;; -115143;3;0;false;false;63;95;191;;; -115146;1;0;false;false;;;;;; -115147;7;0;false;false;63;95;191;;; -115154;1;0;false;false;;;;;; -115155;8;0;false;false;63;95;191;;; -115163;1;0;false;false;;;;;; -115164;2;0;false;false;63;95;191;;; -115166;1;0;false;false;;;;;; -115167;4;0;false;false;63;95;191;;; -115171;1;0;false;false;;;;;; -115172;2;0;false;false;63;95;191;;; -115174;1;0;false;false;;;;;; -115175;4;0;false;false;63;95;191;;; -115179;1;0;false;false;;;;;; -115180;5;0;false;false;63;95;191;;; -115185;1;0;false;false;;;;;; -115186;5;0;false;false;63;95;191;;; -115191;1;0;false;false;;;;;; -115192;2;0;false;false;63;95;191;;; -115194;1;0;false;false;;;;;; -115195;12;0;false;false;63;95;191;;; -115207;3;0;false;false;;;;;; -115210;1;0;false;false;63;95;191;;; -115211;1;0;false;false;;;;;; -115212;3;0;false;false;127;127;159;;; -115215;3;0;false;false;;;;;; -115218;1;0;false;false;63;95;191;;; -115219;3;0;false;false;;;;;; -115222;1;0;false;false;63;95;191;;; -115223;1;0;false;false;;;;;; -115224;7;1;false;false;127;159;191;;; -115231;4;0;false;false;63;95;191;;; -115235;1;0;false;false;;;;;; -115236;4;0;false;false;63;95;191;;; -115240;1;0;false;false;;;;;; -115241;2;0;false;false;63;95;191;;; -115243;1;0;false;false;;;;;; -115244;3;0;false;false;63;95;191;;; -115247;1;0;false;false;;;;;; -115248;4;0;false;false;63;95;191;;; -115252;1;0;false;false;;;;;; -115253;2;0;false;false;63;95;191;;; -115255;1;0;false;false;;;;;; -115256;9;0;false;false;63;95;191;;; -115265;1;0;false;false;;;;;; -115266;3;0;false;false;63;95;191;;; -115269;1;0;false;false;;;;;; -115270;6;0;false;false;63;95;191;;; -115276;1;0;false;false;;;;;; -115277;2;0;false;false;63;95;191;;; -115279;3;0;false;false;;;;;; -115282;1;0;false;false;63;95;191;;; -115283;1;0;false;false;;;;;; -115284;7;1;false;false;127;159;191;;; -115291;10;0;false;false;63;95;191;;; -115301;1;0;false;false;;;;;; -115302;6;0;false;false;63;95;191;;; -115308;1;0;false;false;;;;;; -115309;2;0;false;false;63;95;191;;; -115311;1;0;false;false;;;;;; -115312;3;0;false;false;63;95;191;;; -115315;1;0;false;false;;;;;; -115316;5;0;false;false;63;95;191;;; -115321;1;0;false;false;;;;;; -115322;9;0;false;false;63;95;191;;; -115331;1;0;false;false;;;;;; -115332;2;0;false;false;63;95;191;;; -115334;1;0;false;false;;;;;; -115335;3;0;false;false;63;95;191;;; -115338;1;0;false;false;;;;;; -115339;5;0;false;false;63;95;191;;; -115344;4;0;false;false;;;;;; -115348;1;0;false;false;63;95;191;;; -115349;2;0;false;false;;;;;; -115351;1;0;false;false;63;95;191;;; -115352;1;0;false;false;;;;;; -115353;5;0;false;false;63;95;191;;; -115358;1;0;false;false;;;;;; -115359;4;0;false;false;63;95;191;;; -115363;1;0;false;false;;;;;; -115364;3;0;false;false;63;95;191;;; -115367;1;0;false;false;;;;;; -115368;9;0;false;false;63;95;191;;; -115377;1;0;false;false;;;;;; -115378;2;0;false;false;63;95;191;;; -115380;1;0;false;false;;;;;; -115381;3;0;false;false;63;95;191;;; -115384;1;0;false;false;;;;;; -115385;9;0;false;false;63;95;191;;; -115394;3;0;false;false;;;;;; -115397;1;0;false;false;63;95;191;;; -115398;1;0;false;false;;;;;; -115399;7;1;false;false;127;159;191;;; -115406;11;0;false;false;63;95;191;;; -115417;1;0;false;false;;;;;; -115418;1;0;false;false;63;95;191;;; -115419;1;0;false;false;;;;;; -115420;8;0;false;false;63;95;191;;; -115428;1;0;false;false;;;;;; -115429;2;0;false;false;63;95;191;;; -115431;1;0;false;false;;;;;; -115432;3;0;false;false;63;95;191;;; -115435;1;0;false;false;;;;;; -115436;4;0;false;false;63;95;191;;; -115440;3;0;false;false;;;;;; -115443;1;0;false;false;63;95;191;;; -115444;1;0;false;false;;;;;; -115445;8;1;false;false;127;159;191;;; -115453;5;0;false;false;63;95;191;;; -115458;1;0;false;false;;;;;; -115459;6;0;false;false;63;95;191;;; -115465;1;0;false;false;;;;;; -115466;2;0;false;false;63;95;191;;; -115468;1;0;false;false;;;;;; -115469;3;0;false;false;63;95;191;;; -115472;1;0;false;false;;;;;; -115473;1;0;false;false;63;95;191;;; -115474;1;0;false;false;;;;;; -115475;8;0;false;false;63;95;191;;; -115483;1;0;false;false;;;;;; -115484;8;0;false;false;63;95;191;;; -115492;1;0;false;false;;;;;; -115493;2;0;false;false;63;95;191;;; -115495;1;0;false;false;;;;;; -115496;3;0;false;false;63;95;191;;; -115499;1;0;false;false;;;;;; -115500;5;0;false;false;63;95;191;;; -115505;1;0;false;false;;;;;; -115506;2;0;false;false;63;95;191;;; -115508;1;0;false;false;;;;;; -115509;3;0;false;false;63;95;191;;; -115512;1;0;false;false;;;;;; -115513;5;0;false;false;63;95;191;;; -115518;3;0;false;false;;;;;; -115521;2;0;false;false;63;95;191;;; -115523;2;0;false;false;;;;;; -115525;3;1;false;false;127;0;85;;; -115528;1;0;false;false;;;;;; -115529;19;0;false;false;0;0;0;;; -115548;1;0;false;false;;;;;; -115549;5;0;false;false;0;0;0;;; -115554;1;0;false;false;;;;;; -115555;3;1;false;false;127;0;85;;; -115558;1;0;false;false;;;;;; -115559;11;0;false;false;0;0;0;;; -115570;1;0;false;false;;;;;; -115571;3;1;false;false;127;0;85;;; -115574;1;0;false;false;;;;;; -115575;12;0;false;false;0;0;0;;; -115587;1;0;false;false;;;;;; -115588;1;0;false;false;0;0;0;;; -115589;3;0;false;false;;;;;; -115592;3;1;false;false;127;0;85;;; -115595;1;0;false;false;;;;;; -115596;1;0;false;false;0;0;0;;; -115597;1;0;false;false;;;;;; -115598;1;0;false;false;0;0;0;;; -115599;1;0;false;false;;;;;; -115600;11;0;false;false;0;0;0;;; -115611;1;0;false;false;;;;;; -115612;1;0;false;false;0;0;0;;; -115613;1;0;false;false;;;;;; -115614;10;0;false;false;0;0;0;;; -115624;1;0;false;false;;;;;; -115625;1;0;false;false;0;0;0;;; -115626;1;0;false;false;;;;;; -115627;23;0;false;false;0;0;0;;; -115650;3;0;false;false;;;;;; -115653;10;0;false;false;0;0;0;;; -115663;1;0;false;false;;;;;; -115664;6;0;false;false;0;0;0;;; -115670;1;0;false;false;;;;;; -115671;1;0;false;false;0;0;0;;; -115672;1;0;false;false;;;;;; -115673;28;0;false;false;0;0;0;;; -115701;1;0;false;false;;;;;; -115702;12;0;false;false;0;0;0;;; -115714;3;0;false;false;;;;;; -115717;3;1;false;false;127;0;85;;; -115720;2;0;false;false;0;0;0;;; -115722;1;0;false;false;;;;;; -115723;8;0;false;false;0;0;0;;; -115731;1;0;false;false;;;;;; -115732;1;0;false;false;0;0;0;;; -115733;1;0;false;false;;;;;; -115734;3;1;false;false;127;0;85;;; -115737;1;0;false;false;;;;;; -115738;3;1;false;false;127;0;85;;; -115741;4;0;false;false;0;0;0;;; -115745;3;0;false;false;;;;;; -115748;3;1;false;false;127;0;85;;; -115751;1;0;false;false;;;;;; -115752;12;0;false;false;0;0;0;;; -115764;1;0;false;false;;;;;; -115765;1;0;false;false;0;0;0;;; -115766;1;0;false;false;;;;;; -115767;19;0;false;false;0;0;0;;; -115786;1;0;false;false;;;;;; -115787;2;0;false;false;0;0;0;;; -115789;1;0;false;false;;;;;; -115790;10;0;false;false;0;0;0;;; -115800;3;0;false;false;;;;;; -115803;9;0;false;false;0;0;0;;; -115812;1;0;false;false;;;;;; -115813;1;0;false;false;0;0;0;;; -115814;1;0;false;false;;;;;; -115815;5;1;false;false;127;0;85;;; -115820;1;0;false;false;0;0;0;;; -115821;3;0;false;false;;;;;; -115824;2;1;false;false;127;0;85;;; -115826;1;0;false;false;;;;;; -115827;12;0;false;false;0;0;0;;; -115839;1;0;false;false;;;;;; -115840;2;0;false;false;0;0;0;;; -115842;1;0;false;false;;;;;; -115843;2;0;false;false;0;0;0;;; -115845;1;0;false;false;;;;;; -115846;1;0;false;false;0;0;0;;; -115847;4;0;false;false;;;;;; -115851;3;1;false;false;127;0;85;;; -115854;1;0;false;false;;;;;; -115855;10;0;false;false;0;0;0;;; -115865;1;0;false;false;;;;;; -115866;1;0;false;false;0;0;0;;; -115867;1;0;false;false;;;;;; -115868;14;0;false;false;0;0;0;;; -115882;4;0;false;false;;;;;; -115886;2;1;false;false;127;0;85;;; -115888;1;0;false;false;;;;;; -115889;13;0;false;false;0;0;0;;; -115902;1;0;false;false;;;;;; -115903;1;0;false;false;0;0;0;;; -115904;1;0;false;false;;;;;; -115905;11;0;false;false;0;0;0;;; -115916;1;0;false;false;;;;;; -115917;2;0;false;false;0;0;0;;; -115919;1;0;false;false;;;;;; -115920;11;0;false;false;0;0;0;;; -115931;1;0;false;false;;;;;; -115932;1;0;false;false;0;0;0;;; -115933;5;0;false;false;;;;;; -115938;12;0;false;false;0;0;0;;; -115950;1;0;false;false;;;;;; -115951;1;0;false;false;0;0;0;;; -115952;1;0;false;false;;;;;; -115953;11;0;false;false;0;0;0;;; -115964;5;0;false;false;;;;;; -115969;9;0;false;false;0;0;0;;; -115978;1;0;false;false;;;;;; -115979;1;0;false;false;0;0;0;;; -115980;1;0;false;false;;;;;; -115981;4;1;false;false;127;0;85;;; -115985;1;0;false;false;0;0;0;;; -115986;4;0;false;false;;;;;; -115990;1;0;false;false;0;0;0;;; -115991;1;0;false;false;;;;;; -115992;4;1;false;false;127;0;85;;; -115996;1;0;false;false;;;;;; -115997;1;0;false;false;0;0;0;;; -115998;5;0;false;false;;;;;; -116003;3;1;false;false;127;0;85;;; -116006;1;0;false;false;;;;;; -116007;6;0;false;false;0;0;0;;; -116013;5;0;false;false;;;;;; -116018;3;1;false;false;127;0;85;;; -116021;1;0;false;false;;;;;; -116022;6;0;false;false;0;0;0;;; -116028;1;0;false;false;;;;;; -116029;1;0;false;false;0;0;0;;; -116030;1;0;false;false;;;;;; -116031;13;0;false;false;0;0;0;;; -116044;5;0;false;false;;;;;; -116049;5;1;false;false;127;0;85;;; -116054;1;0;false;false;;;;;; -116055;7;0;false;false;0;0;0;;; -116062;1;0;false;false;;;;;; -116063;1;0;false;false;0;0;0;;; -116064;1;0;false;false;;;;;; -116065;1;0;false;false;0;0;0;;; -116066;1;0;false;false;;;;;; -116067;2;0;false;false;0;0;0;;; -116069;1;0;false;false;;;;;; -116070;39;0;false;false;0;0;0;;; -116109;1;0;false;false;;;;;; -116110;9;0;false;false;0;0;0;;; -116119;5;0;false;false;;;;;; -116124;2;1;false;false;127;0;85;;; -116126;1;0;false;false;;;;;; -116127;7;0;false;false;0;0;0;;; -116134;1;0;false;false;;;;;; -116135;2;0;false;false;0;0;0;;; -116137;1;0;false;false;;;;;; -116138;1;0;false;false;0;0;0;;; -116139;1;0;false;false;;;;;; -116140;2;0;false;false;0;0;0;;; -116142;1;0;false;false;;;;;; -116143;39;0;false;false;0;0;0;;; -116182;1;0;false;false;;;;;; -116183;1;0;false;false;0;0;0;;; -116184;6;0;false;false;;;;;; -116190;5;0;false;false;0;0;0;;; -116195;1;0;false;false;;;;;; -116196;1;0;false;false;0;0;0;;; -116197;1;0;false;false;;;;;; -116198;12;0;false;false;0;0;0;;; -116210;1;0;false;false;;;;;; -116211;1;0;false;false;0;0;0;;; -116212;1;0;false;false;;;;;; -116213;1;0;false;false;0;0;0;;; -116214;1;0;false;false;;;;;; -116215;1;0;false;false;0;0;0;;; -116216;1;0;false;false;;;;;; -116217;2;0;false;false;0;0;0;;; -116219;5;0;false;false;;;;;; -116224;1;0;false;false;0;0;0;;; -116225;1;0;false;false;;;;;; -116226;4;1;false;false;127;0;85;;; -116230;1;0;false;false;;;;;; -116231;1;0;false;false;0;0;0;;; -116232;6;0;false;false;;;;;; -116238;5;0;false;false;0;0;0;;; -116243;1;0;false;false;;;;;; -116244;1;0;false;false;0;0;0;;; -116245;1;0;false;false;;;;;; -116246;23;0;false;false;0;0;0;;; -116269;1;0;false;false;;;;;; -116270;1;0;false;false;0;0;0;;; -116271;1;0;false;false;;;;;; -116272;4;0;false;false;0;0;0;;; -116276;5;0;false;false;;;;;; -116281;1;0;false;false;0;0;0;;; -116282;5;0;false;false;;;;;; -116287;12;0;false;false;0;0;0;;; -116299;1;0;false;false;;;;;; -116300;2;0;false;false;0;0;0;;; -116302;1;0;false;false;;;;;; -116303;12;0;false;false;0;0;0;;; -116315;5;0;false;false;;;;;; -116320;3;1;false;false;127;0;85;;; -116323;1;0;false;false;;;;;; -116324;13;0;false;false;0;0;0;;; -116337;1;0;false;false;;;;;; -116338;1;0;false;false;0;0;0;;; -116339;1;0;false;false;;;;;; -116340;29;0;false;false;0;0;0;;; -116369;1;0;false;false;;;;;; -116370;1;0;false;false;0;0;0;;; -116371;1;0;false;false;;;;;; -116372;4;0;false;false;0;0;0;;; -116376;5;0;false;false;;;;;; -116381;9;0;false;false;0;0;0;;; -116390;2;0;false;false;;;;;; -116392;1;0;false;false;0;0;0;;; -116393;1;0;false;false;;;;;; -116394;6;0;false;false;0;0;0;;; -116400;1;0;false;false;;;;;; -116401;1;0;false;false;0;0;0;;; -116402;1;0;false;false;;;;;; -116403;14;0;false;false;0;0;0;;; -116417;1;0;false;false;;;;;; -116418;2;0;false;false;0;0;0;;; -116420;1;0;false;false;;;;;; -116421;2;0;false;false;0;0;0;;; -116423;4;0;false;false;;;;;; -116427;1;0;false;false;0;0;0;;; -116428;3;0;false;false;;;;;; -116431;1;0;false;false;0;0;0;;; -116432;3;0;false;false;;;;;; -116435;35;0;false;false;0;0;0;;; -116470;3;0;false;false;;;;;; -116473;6;1;false;false;127;0;85;;; -116479;1;0;false;false;;;;;; -116480;13;0;false;false;0;0;0;;; -116493;2;0;false;false;;;;;; -116495;1;0;false;false;0;0;0;;; -116496;2;0;false;false;;;;;; -116498;3;0;false;false;63;95;191;;; -116501;3;0;false;false;;;;;; -116504;1;0;false;false;63;95;191;;; -116505;1;0;false;false;;;;;; -116506;7;0;false;false;63;95;191;;; -116513;1;0;false;false;;;;;; -116514;3;0;false;false;63;95;191;;; -116517;1;0;false;false;;;;;; -116518;5;0;false;false;63;95;191;;; -116523;1;0;false;false;;;;;; -116524;6;0;false;false;63;95;191;;; -116530;3;0;false;false;;;;;; -116533;1;0;false;false;63;95;191;;; -116534;1;0;false;false;;;;;; -116535;3;0;false;false;127;127;159;;; -116538;3;0;false;false;;;;;; -116541;1;0;false;false;63;95;191;;; -116542;3;0;false;false;;;;;; -116545;1;0;false;false;63;95;191;;; -116546;1;0;false;false;;;;;; -116547;8;1;false;false;127;159;191;;; -116555;3;0;false;false;63;95;191;;; -116558;1;0;false;false;;;;;; -116559;5;0;false;false;63;95;191;;; -116564;1;0;false;false;;;;;; -116565;6;0;false;false;63;95;191;;; -116571;1;0;false;false;;;;;; -116572;1;0;false;false;63;95;191;;; -116573;1;0;false;false;;;;;; -116574;2;0;false;false;63;95;191;;; -116576;1;0;false;false;;;;;; -116577;5;0;false;false;63;95;191;;; -116582;1;0;false;false;;;;;; -116583;2;0;false;false;63;95;191;;; -116585;1;0;false;false;;;;;; -116586;5;0;false;false;63;95;191;;; -116591;3;0;false;false;;;;;; -116594;2;0;false;false;63;95;191;;; -116596;2;0;false;false;;;;;; -116598;3;1;false;false;127;0;85;;; -116601;1;0;false;false;;;;;; -116602;15;0;false;false;0;0;0;;; -116617;1;0;false;false;;;;;; -116618;1;0;false;false;0;0;0;;; -116619;3;0;false;false;;;;;; -116622;5;0;false;false;0;0;0;;; -116627;1;0;false;false;;;;;; -116628;5;0;false;false;0;0;0;;; -116633;1;0;false;false;;;;;; -116634;1;0;false;false;0;0;0;;; -116635;1;0;false;false;;;;;; -116636;11;0;false;false;0;0;0;;; -116647;3;0;false;false;;;;;; -116650;2;1;false;false;127;0;85;;; -116652;1;0;false;false;;;;;; -116653;6;0;false;false;0;0;0;;; -116659;1;0;false;false;;;;;; -116660;2;0;false;false;0;0;0;;; -116662;1;0;false;false;;;;;; -116663;4;1;false;false;127;0;85;;; -116667;1;0;false;false;0;0;0;;; -116668;1;0;false;false;;;;;; -116669;6;1;false;false;127;0;85;;; -116675;1;0;false;false;;;;;; -116676;2;0;false;false;0;0;0;;; -116678;3;0;false;false;;;;;; -116681;6;1;false;false;127;0;85;;; -116687;1;0;false;false;;;;;; -116688;18;0;false;false;0;0;0;;; -116706;2;0;false;false;;;;;; -116708;1;0;false;false;0;0;0;;; -116709;2;0;false;false;;;;;; -116711;6;0;false;false;0;0;0;;; -116717;1;0;false;false;;;;;; -116718;20;0;false;false;0;0;0;;; -116738;3;1;false;false;127;0;85;;; -116741;1;0;false;false;;;;;; -116742;14;0;false;false;0;0;0;;; -116756;1;0;false;false;;;;;; -116757;1;0;false;false;0;0;0;;; -116758;3;0;false;false;;;;;; -116761;12;0;false;false;0;0;0;;; -116773;1;0;false;false;;;;;; -116774;17;0;false;false;0;0;0;;; -116791;1;0;false;false;;;;;; -116792;1;0;false;false;0;0;0;;; -116793;1;0;false;false;;;;;; -116794;27;0;false;false;0;0;0;;; -116821;3;0;false;false;;;;;; -116824;6;1;false;false;127;0;85;;; -116830;1;0;false;false;;;;;; -116831;40;0;false;false;0;0;0;;; -116871;1;0;false;false;;;;;; -116872;15;0;false;false;0;0;0;;; -116887;2;0;false;false;;;;;; -116889;1;0;false;false;0;0;0;;; -116890;2;0;false;false;;;;;; -116892;3;1;false;false;127;0;85;;; -116895;1;0;false;false;;;;;; -116896;15;0;false;false;0;0;0;;; -116911;3;1;false;false;127;0;85;;; -116914;1;0;false;false;;;;;; -116915;7;0;false;false;0;0;0;;; -116922;1;0;false;false;;;;;; -116923;3;1;false;false;127;0;85;;; -116926;1;0;false;false;;;;;; -116927;10;0;false;false;0;0;0;;; -116937;1;0;false;false;;;;;; -116938;1;0;false;false;0;0;0;;; -116939;3;0;false;false;;;;;; -116942;6;0;false;false;0;0;0;;; -116948;1;0;false;false;;;;;; -116949;4;0;false;false;0;0;0;;; -116953;1;0;false;false;;;;;; -116954;1;0;false;false;0;0;0;;; -116955;1;0;false;false;;;;;; -116956;27;0;false;false;0;0;0;;; -116983;3;0;false;false;;;;;; -116986;3;1;false;false;127;0;85;;; -116989;1;0;false;false;;;;;; -116990;10;0;false;false;0;0;0;;; -117000;1;0;false;false;;;;;; -117001;1;0;false;false;0;0;0;;; -117002;1;0;false;false;;;;;; -117003;35;0;false;false;0;0;0;;; -117038;4;0;false;false;;;;;; -117042;10;0;false;false;0;0;0;;; -117052;1;0;false;false;;;;;; -117053;6;0;false;false;0;0;0;;; -117059;1;0;false;false;;;;;; -117060;1;0;false;false;0;0;0;;; -117061;1;0;false;false;;;;;; -117062;28;0;false;false;0;0;0;;; -117090;1;0;false;false;;;;;; -117091;12;0;false;false;0;0;0;;; -117103;3;0;false;false;;;;;; -117106;6;0;false;false;0;0;0;;; -117112;1;0;false;false;;;;;; -117113;2;0;false;false;0;0;0;;; -117115;1;0;false;false;;;;;; -117116;11;0;false;false;0;0;0;;; -117127;3;0;false;false;;;;;; -117130;6;0;false;false;0;0;0;;; -117136;1;0;false;false;;;;;; -117137;1;0;false;false;0;0;0;;; -117138;1;0;false;false;;;;;; -117139;28;0;false;false;0;0;0;;; -117167;1;0;false;false;;;;;; -117168;22;0;false;false;0;0;0;;; -117190;3;0;false;false;;;;;; -117193;6;0;false;false;0;0;0;;; -117199;1;0;false;false;;;;;; -117200;2;0;false;false;0;0;0;;; -117202;1;0;false;false;;;;;; -117203;11;0;false;false;0;0;0;;; -117214;3;0;false;false;;;;;; -117217;35;0;false;false;0;0;0;;; -117252;3;0;false;false;;;;;; -117255;6;1;false;false;127;0;85;;; -117261;1;0;false;false;;;;;; -117262;7;0;false;false;0;0;0;;; -117269;2;0;false;false;;;;;; -117271;1;0;false;false;0;0;0;;; -117272;2;0;false;false;;;;;; -117274;3;1;false;false;127;0;85;;; -117277;1;0;false;false;;;;;; -117278;19;0;false;false;0;0;0;;; -117297;3;1;false;false;127;0;85;;; -117300;1;0;false;false;;;;;; -117301;7;0;false;false;0;0;0;;; -117308;1;0;false;false;;;;;; -117309;3;1;false;false;127;0;85;;; -117312;1;0;false;false;;;;;; -117313;10;0;false;false;0;0;0;;; -117323;1;0;false;false;;;;;; -117324;1;0;false;false;0;0;0;;; -117325;3;0;false;false;;;;;; -117328;6;0;false;false;0;0;0;;; -117334;1;0;false;false;;;;;; -117335;4;0;false;false;0;0;0;;; -117339;1;0;false;false;;;;;; -117340;1;0;false;false;0;0;0;;; -117341;1;0;false;false;;;;;; -117342;27;0;false;false;0;0;0;;; -117369;3;0;false;false;;;;;; -117372;3;1;false;false;127;0;85;;; -117375;1;0;false;false;;;;;; -117376;10;0;false;false;0;0;0;;; -117386;1;0;false;false;;;;;; -117387;1;0;false;false;0;0;0;;; -117388;1;0;false;false;;;;;; -117389;35;0;false;false;0;0;0;;; -117424;4;0;false;false;;;;;; -117428;10;0;false;false;0;0;0;;; -117438;1;0;false;false;;;;;; -117439;6;0;false;false;0;0;0;;; -117445;1;0;false;false;;;;;; -117446;1;0;false;false;0;0;0;;; -117447;1;0;false;false;;;;;; -117448;28;0;false;false;0;0;0;;; -117476;1;0;false;false;;;;;; -117477;12;0;false;false;0;0;0;;; -117489;3;0;false;false;;;;;; -117492;6;0;false;false;0;0;0;;; -117498;1;0;false;false;;;;;; -117499;2;0;false;false;0;0;0;;; -117501;1;0;false;false;;;;;; -117502;11;0;false;false;0;0;0;;; -117513;3;0;false;false;;;;;; -117516;6;0;false;false;0;0;0;;; -117522;1;0;false;false;;;;;; -117523;1;0;false;false;0;0;0;;; -117524;1;0;false;false;;;;;; -117525;32;0;false;false;0;0;0;;; -117557;1;0;false;false;;;;;; -117558;22;0;false;false;0;0;0;;; -117580;3;0;false;false;;;;;; -117583;6;0;false;false;0;0;0;;; -117589;1;0;false;false;;;;;; -117590;2;0;false;false;0;0;0;;; -117592;1;0;false;false;;;;;; -117593;11;0;false;false;0;0;0;;; -117604;3;0;false;false;;;;;; -117607;35;0;false;false;0;0;0;;; -117642;3;0;false;false;;;;;; -117645;6;1;false;false;127;0;85;;; -117651;1;0;false;false;;;;;; -117652;7;0;false;false;0;0;0;;; -117659;2;0;false;false;;;;;; -117661;1;0;false;false;0;0;0;;; -117662;2;0;false;false;;;;;; -117664;3;0;false;false;63;95;191;;; -117667;3;0;false;false;;;;;; -117670;1;0;false;false;63;95;191;;; -117671;1;0;false;false;;;;;; -117672;7;0;false;false;63;95;191;;; -117679;1;0;false;false;;;;;; -117680;3;0;false;false;63;95;191;;; -117683;1;0;false;false;;;;;; -117684;7;0;false;false;63;95;191;;; -117691;1;0;false;false;;;;;; -117692;14;0;false;false;63;95;191;;; -117706;1;0;false;false;;;;;; -117707;4;0;false;false;63;95;191;;; -117711;1;0;false;false;;;;;; -117712;2;0;false;false;63;95;191;;; -117714;1;0;false;false;;;;;; -117715;4;0;false;false;63;95;191;;; -117719;1;0;false;false;;;;;; -117720;3;0;false;false;63;95;191;;; -117723;1;0;false;false;;;;;; -117724;4;0;false;false;63;95;191;;; -117728;1;0;false;false;;;;;; -117729;7;0;false;false;63;95;191;;; -117736;3;0;false;false;;;;;; -117739;1;0;false;false;63;95;191;;; -117740;1;0;false;false;;;;;; -117741;2;0;false;false;63;95;191;;; -117743;1;0;false;false;;;;;; -117744;4;0;false;false;63;95;191;;; -117748;1;0;false;false;;;;;; -117749;2;0;false;false;63;95;191;;; -117751;1;0;false;false;;;;;; -117752;2;0;false;false;63;95;191;;; -117754;1;0;false;false;;;;;; -117755;4;0;false;false;63;95;191;;; -117759;1;0;false;false;;;;;; -117760;7;0;false;false;63;95;191;;; -117767;1;0;false;false;;;;;; -117768;7;0;false;false;63;95;191;;; -117775;1;0;false;false;;;;;; -117776;14;0;false;false;63;95;191;;; -117790;1;0;false;false;;;;;; -117791;3;0;false;false;63;95;191;;; -117794;1;0;false;false;;;;;; -117795;4;0;false;false;63;95;191;;; -117799;1;0;false;false;;;;;; -117800;4;0;false;false;63;95;191;;; -117804;3;0;false;false;;;;;; -117807;1;0;false;false;63;95;191;;; -117808;1;0;false;false;;;;;; -117809;3;0;false;false;127;127;159;;; -117812;3;0;false;false;;;;;; -117815;1;0;false;false;63;95;191;;; -117816;3;0;false;false;;;;;; -117819;1;0;false;false;63;95;191;;; -117820;1;0;false;false;;;;;; -117821;8;1;false;false;127;159;191;;; -117829;7;0;false;false;63;95;191;;; -117836;1;0;false;false;;;;;; -117837;14;0;false;false;63;95;191;;; -117851;1;0;false;false;;;;;; -117852;4;0;false;false;63;95;191;;; -117856;1;0;false;false;;;;;; -117857;2;0;false;false;63;95;191;;; -117859;1;0;false;false;;;;;; -117860;4;0;false;false;63;95;191;;; -117864;1;0;false;false;;;;;; -117865;3;0;false;false;63;95;191;;; -117868;1;0;false;false;;;;;; -117869;4;0;false;false;63;95;191;;; -117873;1;0;false;false;;;;;; -117874;7;0;false;false;63;95;191;;; -117881;1;0;false;false;;;;;; -117882;2;0;false;false;63;95;191;;; -117884;1;0;false;false;;;;;; -117885;4;0;false;false;63;95;191;;; -117889;4;0;false;false;;;;;; -117893;1;0;false;false;63;95;191;;; -117894;1;0;false;false;;;;;; -117895;2;0;false;false;63;95;191;;; -117897;1;0;false;false;;;;;; -117898;2;0;false;false;63;95;191;;; -117900;1;0;false;false;;;;;; -117901;4;0;false;false;63;95;191;;; -117905;1;0;false;false;;;;;; -117906;7;0;false;false;63;95;191;;; -117913;1;0;false;false;;;;;; -117914;7;0;false;false;63;95;191;;; -117921;1;0;false;false;;;;;; -117922;14;0;false;false;63;95;191;;; -117936;1;0;false;false;;;;;; -117937;3;0;false;false;63;95;191;;; -117940;1;0;false;false;;;;;; -117941;4;0;false;false;63;95;191;;; -117945;1;0;false;false;;;;;; -117946;4;0;false;false;63;95;191;;; -117950;3;0;false;false;;;;;; -117953;1;0;false;false;63;95;191;;; -117954;1;0;false;false;;;;;; -117955;11;1;false;false;127;159;191;;; -117966;12;0;false;false;63;95;191;;; -117978;1;0;false;false;;;;;; -117979;4;0;false;false;127;127;159;;; -117983;3;0;false;false;;;;;; -117986;1;0;false;false;63;95;191;;; -117987;4;0;false;false;;;;;; -117991;4;0;false;false;127;127;159;;; -117995;21;0;false;false;63;95;191;;; -118016;1;0;false;false;;;;;; -118017;1;0;false;false;127;127;159;;; -118018;1;0;false;false;;;;;; -118019;2;0;false;false;63;95;191;;; -118021;1;0;false;false;;;;;; -118022;3;0;false;false;63;95;191;;; -118025;1;0;false;false;;;;;; -118026;8;0;false;false;63;95;191;;; -118034;1;0;false;false;;;;;; -118035;3;0;false;false;63;95;191;;; -118038;1;0;false;false;;;;;; -118039;4;0;false;false;63;95;191;;; -118043;1;0;false;false;;;;;; -118044;8;0;false;false;63;95;191;;; -118052;5;0;false;false;127;127;159;;; -118057;3;0;false;false;;;;;; -118060;1;0;false;false;63;95;191;;; -118061;4;0;false;false;;;;;; -118065;4;0;false;false;127;127;159;;; -118069;27;0;false;false;63;95;191;;; -118096;1;0;false;false;;;;;; -118097;1;0;false;false;127;127;159;;; -118098;1;0;false;false;;;;;; -118099;2;0;false;false;63;95;191;;; -118101;1;0;false;false;;;;;; -118102;3;0;false;false;63;95;191;;; -118105;1;0;false;false;;;;;; -118106;6;0;false;false;63;95;191;;; -118112;1;0;false;false;;;;;; -118113;4;0;false;false;63;95;191;;; -118117;1;0;false;false;;;;;; -118118;3;0;false;false;63;95;191;;; -118121;1;0;false;false;;;;;; -118122;6;0;false;false;63;95;191;;; -118128;1;0;false;false;;;;;; -118129;4;0;false;false;63;95;191;;; -118133;1;0;false;false;;;;;; -118134;7;0;false;false;63;95;191;;; -118141;1;0;false;false;;;;;; -118142;3;0;false;false;63;95;191;;; -118145;1;0;false;false;;;;;; -118146;8;0;false;false;63;95;191;;; -118154;5;0;false;false;127;127;159;;; -118159;3;0;false;false;;;;;; -118162;1;0;false;false;63;95;191;;; -118163;1;0;false;false;;;;;; -118164;5;0;false;false;127;127;159;;; -118169;3;0;false;false;;;;;; -118172;2;0;false;false;63;95;191;;; -118174;2;0;false;false;;;;;; -118176;6;1;false;false;127;0;85;;; -118182;1;0;false;false;;;;;; -118183;17;0;false;false;0;0;0;;; -118200;1;0;false;false;;;;;; -118201;12;0;false;false;0;0;0;;; -118213;1;0;false;false;;;;;; -118214;1;0;false;false;0;0;0;;; -118215;3;0;false;false;;;;;; -118218;14;0;false;false;0;0;0;;; -118232;6;0;false;false;;;;;; -118238;6;1;false;false;127;0;85;;; -118244;1;0;false;false;;;;;; -118245;15;0;false;false;0;0;0;;; -118260;2;0;false;false;;;;;; -118262;1;0;false;false;0;0;0;;; -118263;2;0;false;false;;;;;; -118265;3;0;false;false;63;95;191;;; -118268;4;0;false;false;;;;;; -118272;1;0;false;false;63;95;191;;; -118273;1;0;false;false;;;;;; -118274;7;0;false;false;63;95;191;;; -118281;1;0;false;false;;;;;; -118282;7;0;false;false;63;95;191;;; -118289;1;0;false;false;;;;;; -118290;3;0;false;false;63;95;191;;; -118293;1;0;false;false;;;;;; -118294;6;0;false;false;63;95;191;;; -118300;1;0;false;false;;;;;; -118301;10;0;false;false;63;95;191;;; -118311;1;0;false;false;;;;;; -118312;6;0;false;false;63;95;191;;; -118318;1;0;false;false;;;;;; -118319;5;0;false;false;63;95;191;;; -118324;1;0;false;false;;;;;; -118325;5;0;false;false;63;95;191;;; -118330;1;0;false;false;;;;;; -118331;9;0;false;false;63;95;191;;; -118340;3;0;false;false;;;;;; -118343;1;0;false;false;63;95;191;;; -118344;1;0;false;false;;;;;; -118345;3;0;false;false;127;127;159;;; -118348;3;0;false;false;;;;;; -118351;1;0;false;false;63;95;191;;; -118352;3;0;false;false;;;;;; -118355;1;0;false;false;63;95;191;;; -118356;1;0;false;false;;;;;; -118357;8;1;false;false;127;159;191;;; -118365;4;0;false;false;63;95;191;;; -118369;1;0;false;false;;;;;; -118370;2;0;false;false;63;95;191;;; -118372;1;0;false;false;;;;;; -118373;6;0;false;false;63;95;191;;; -118379;1;0;false;false;;;;;; -118380;8;0;false;false;63;95;191;;; -118388;1;0;false;false;;;;;; -118389;1;0;false;false;63;95;191;;; -118390;1;0;false;false;;;;;; -118391;4;0;false;false;63;95;191;;; -118395;1;0;false;false;;;;;; -118396;7;0;false;false;63;95;191;;; -118403;1;0;false;false;;;;;; -118404;3;0;false;false;63;95;191;;; -118407;1;0;false;false;;;;;; -118408;5;0;false;false;63;95;191;;; -118413;1;0;false;false;;;;;; -118414;5;0;false;false;63;95;191;;; -118419;1;0;false;false;;;;;; -118420;2;0;false;false;63;95;191;;; -118422;1;0;false;false;;;;;; -118423;6;0;false;false;63;95;191;;; -118429;1;0;false;false;;;;;; -118430;6;0;false;false;63;95;191;;; -118436;3;0;false;false;;;;;; -118439;1;0;false;false;63;95;191;;; -118440;1;0;false;false;;;;;; -118441;4;0;false;false;63;95;191;;; -118445;1;0;false;false;;;;;; -118446;3;0;false;false;63;95;191;;; -118449;1;0;false;false;;;;;; -118450;4;0;false;false;63;95;191;;; -118454;1;0;false;false;;;;;; -118455;6;0;false;false;63;95;191;;; -118461;1;0;false;false;;;;;; -118462;2;0;false;false;63;95;191;;; -118464;1;0;false;false;;;;;; -118465;7;0;false;false;63;95;191;;; -118472;1;0;false;false;;;;;; -118473;5;0;false;false;63;95;191;;; -118478;1;0;false;false;;;;;; -118479;6;0;false;false;63;95;191;;; -118485;3;0;false;false;;;;;; -118488;1;0;false;false;63;95;191;;; -118489;1;0;false;false;;;;;; -118490;11;1;false;false;127;159;191;;; -118501;12;0;false;false;63;95;191;;; -118513;1;0;false;false;;;;;; -118514;4;0;false;false;127;127;159;;; -118518;3;0;false;false;;;;;; -118521;1;0;false;false;63;95;191;;; -118522;4;0;false;false;;;;;; -118526;4;0;false;false;127;127;159;;; -118530;21;0;false;false;63;95;191;;; -118551;1;0;false;false;;;;;; -118552;1;0;false;false;127;127;159;;; -118553;1;0;false;false;;;;;; -118554;2;0;false;false;63;95;191;;; -118556;1;0;false;false;;;;;; -118557;3;0;false;false;63;95;191;;; -118560;1;0;false;false;;;;;; -118561;8;0;false;false;63;95;191;;; -118569;1;0;false;false;;;;;; -118570;3;0;false;false;63;95;191;;; -118573;1;0;false;false;;;;;; -118574;4;0;false;false;63;95;191;;; -118578;1;0;false;false;;;;;; -118579;8;0;false;false;63;95;191;;; -118587;5;0;false;false;127;127;159;;; -118592;3;0;false;false;;;;;; -118595;1;0;false;false;63;95;191;;; -118596;4;0;false;false;;;;;; -118600;4;0;false;false;127;127;159;;; -118604;27;0;false;false;63;95;191;;; -118631;1;0;false;false;;;;;; -118632;1;0;false;false;127;127;159;;; -118633;1;0;false;false;;;;;; -118634;2;0;false;false;63;95;191;;; -118636;1;0;false;false;;;;;; -118637;3;0;false;false;63;95;191;;; -118640;1;0;false;false;;;;;; -118641;6;0;false;false;63;95;191;;; -118647;1;0;false;false;;;;;; -118648;4;0;false;false;63;95;191;;; -118652;1;0;false;false;;;;;; -118653;3;0;false;false;63;95;191;;; -118656;1;0;false;false;;;;;; -118657;6;0;false;false;63;95;191;;; -118663;1;0;false;false;;;;;; -118664;4;0;false;false;63;95;191;;; -118668;1;0;false;false;;;;;; -118669;7;0;false;false;63;95;191;;; -118676;1;0;false;false;;;;;; -118677;3;0;false;false;63;95;191;;; -118680;1;0;false;false;;;;;; -118681;8;0;false;false;63;95;191;;; -118689;5;0;false;false;127;127;159;;; -118694;3;0;false;false;;;;;; -118697;1;0;false;false;63;95;191;;; -118698;1;0;false;false;;;;;; -118699;5;0;false;false;127;127;159;;; -118704;3;0;false;false;;;;;; -118707;2;0;false;false;63;95;191;;; -118709;2;0;false;false;;;;;; -118711;6;1;false;false;127;0;85;;; -118717;1;0;false;false;;;;;; -118718;7;1;false;false;127;0;85;;; -118725;1;0;false;false;;;;;; -118726;23;0;false;false;0;0;0;;; -118749;1;0;false;false;;;;;; -118750;1;0;false;false;0;0;0;;; -118751;3;0;false;false;;;;;; -118754;14;0;false;false;0;0;0;;; -118768;3;0;false;false;;;;;; -118771;6;1;false;false;127;0;85;;; -118777;1;0;false;false;;;;;; -118778;19;0;false;false;0;0;0;;; -118797;2;0;false;false;;;;;; -118799;1;0;false;false;0;0;0;;; -118800;2;0;false;false;;;;;; -118802;3;0;false;false;63;95;191;;; -118805;3;0;false;false;;;;;; -118808;1;0;false;false;63;95;191;;; -118809;1;0;false;false;;;;;; -118810;7;0;false;false;63;95;191;;; -118817;1;0;false;false;;;;;; -118818;7;0;false;false;63;95;191;;; -118825;1;0;false;false;;;;;; -118826;3;0;false;false;63;95;191;;; -118829;1;0;false;false;;;;;; -118830;6;0;false;false;63;95;191;;; -118836;1;0;false;false;;;;;; -118837;7;0;false;false;63;95;191;;; -118844;1;0;false;false;;;;;; -118845;3;0;false;false;63;95;191;;; -118848;1;0;false;false;;;;;; -118849;2;0;false;false;63;95;191;;; -118851;1;0;false;false;;;;;; -118852;7;0;false;false;63;95;191;;; -118859;3;0;false;false;;;;;; -118862;1;0;false;false;63;95;191;;; -118863;1;0;false;false;;;;;; -118864;3;0;false;false;127;127;159;;; -118867;3;0;false;false;;;;;; -118870;1;0;false;false;63;95;191;;; -118871;3;0;false;false;;;;;; -118874;1;0;false;false;63;95;191;;; -118875;1;0;false;false;;;;;; -118876;8;1;false;false;127;159;191;;; -118884;4;0;false;false;63;95;191;;; -118888;1;0;false;false;;;;;; -118889;2;0;false;false;63;95;191;;; -118891;1;0;false;false;;;;;; -118892;7;0;false;false;63;95;191;;; -118899;1;0;false;false;;;;;; -118900;3;0;false;false;63;95;191;;; -118903;1;0;false;false;;;;;; -118904;2;0;false;false;63;95;191;;; -118906;1;0;false;false;;;;;; -118907;7;0;false;false;63;95;191;;; -118914;1;0;false;false;;;;;; -118915;5;0;false;false;63;95;191;;; -118920;1;0;false;false;;;;;; -118921;9;0;false;false;63;95;191;;; -118930;3;0;false;false;;;;;; -118933;1;0;false;false;63;95;191;;; -118934;1;0;false;false;;;;;; -118935;11;1;false;false;127;159;191;;; -118946;12;0;false;false;63;95;191;;; -118958;1;0;false;false;;;;;; -118959;4;0;false;false;127;127;159;;; -118963;3;0;false;false;;;;;; -118966;1;0;false;false;63;95;191;;; -118967;4;0;false;false;;;;;; -118971;4;0;false;false;127;127;159;;; -118975;21;0;false;false;63;95;191;;; -118996;1;0;false;false;;;;;; -118997;1;0;false;false;127;127;159;;; -118998;1;0;false;false;;;;;; -118999;2;0;false;false;63;95;191;;; -119001;1;0;false;false;;;;;; -119002;3;0;false;false;63;95;191;;; -119005;1;0;false;false;;;;;; -119006;8;0;false;false;63;95;191;;; -119014;1;0;false;false;;;;;; -119015;3;0;false;false;63;95;191;;; -119018;1;0;false;false;;;;;; -119019;4;0;false;false;63;95;191;;; -119023;1;0;false;false;;;;;; -119024;8;0;false;false;63;95;191;;; -119032;5;0;false;false;127;127;159;;; -119037;3;0;false;false;;;;;; -119040;1;0;false;false;63;95;191;;; -119041;4;0;false;false;;;;;; -119045;4;0;false;false;127;127;159;;; -119049;27;0;false;false;63;95;191;;; -119076;1;0;false;false;;;;;; -119077;1;0;false;false;127;127;159;;; -119078;1;0;false;false;;;;;; -119079;2;0;false;false;63;95;191;;; -119081;1;0;false;false;;;;;; -119082;3;0;false;false;63;95;191;;; -119085;1;0;false;false;;;;;; -119086;6;0;false;false;63;95;191;;; -119092;1;0;false;false;;;;;; -119093;4;0;false;false;63;95;191;;; -119097;1;0;false;false;;;;;; -119098;3;0;false;false;63;95;191;;; -119101;1;0;false;false;;;;;; -119102;6;0;false;false;63;95;191;;; -119108;1;0;false;false;;;;;; -119109;4;0;false;false;63;95;191;;; -119113;1;0;false;false;;;;;; -119114;7;0;false;false;63;95;191;;; -119121;1;0;false;false;;;;;; -119122;3;0;false;false;63;95;191;;; -119125;1;0;false;false;;;;;; -119126;8;0;false;false;63;95;191;;; -119134;5;0;false;false;127;127;159;;; -119139;3;0;false;false;;;;;; -119142;1;0;false;false;63;95;191;;; -119143;1;0;false;false;;;;;; -119144;5;0;false;false;127;127;159;;; -119149;3;0;false;false;;;;;; -119152;2;0;false;false;63;95;191;;; -119154;2;0;false;false;;;;;; -119156;6;1;false;false;127;0;85;;; -119162;1;0;false;false;;;;;; -119163;7;1;false;false;127;0;85;;; -119170;1;0;false;false;;;;;; -119171;13;0;false;false;0;0;0;;; -119184;1;0;false;false;;;;;; -119185;1;0;false;false;0;0;0;;; -119186;3;0;false;false;;;;;; -119189;14;0;false;false;0;0;0;;; -119203;3;0;false;false;;;;;; -119206;6;1;false;false;127;0;85;;; -119212;1;0;false;false;;;;;; -119213;9;0;false;false;0;0;0;;; -119222;2;0;false;false;;;;;; -119224;1;0;false;false;0;0;0;;; -119225;2;0;false;false;;;;;; -119227;6;1;false;false;127;0;85;;; -119233;1;0;false;false;;;;;; -119234;5;0;false;false;0;0;0;;; -119239;1;0;false;false;;;;;; -119240;15;0;false;false;0;0;0;;; -119255;1;0;false;false;;;;;; -119256;1;0;false;false;0;0;0;;; -119257;3;0;false;false;;;;;; -119260;14;0;false;false;0;0;0;;; -119274;3;0;false;false;;;;;; -119277;2;1;false;false;127;0;85;;; -119279;1;0;false;false;;;;;; -119280;11;0;false;false;0;0;0;;; -119291;1;0;false;false;;;;;; -119292;2;0;false;false;0;0;0;;; -119294;1;0;false;false;;;;;; -119295;4;1;false;false;127;0;85;;; -119299;1;0;false;false;0;0;0;;; -119300;1;0;false;false;;;;;; -119301;1;0;false;false;0;0;0;;; -119302;4;0;false;false;;;;;; -119306;6;1;false;false;127;0;85;;; -119312;1;0;false;false;;;;;; -119313;55;0;false;false;0;0;0;;; -119368;3;0;false;false;;;;;; -119371;1;0;false;false;0;0;0;;; -119372;3;0;false;false;;;;;; -119375;6;1;false;false;127;0;85;;; -119381;1;0;false;false;;;;;; -119382;11;0;false;false;0;0;0;;; -119393;2;0;false;false;;;;;; -119395;1;0;false;false;0;0;0;;; -119396;2;0;false;false;;;;;; -119398;3;0;false;false;63;95;191;;; -119401;4;0;false;false;;;;;; -119405;1;0;false;false;63;95;191;;; -119406;1;0;false;false;;;;;; -119407;6;0;false;false;63;95;191;;; -119413;1;0;false;false;;;;;; -119414;1;0;false;false;63;95;191;;; -119415;1;0;false;false;;;;;; -119416;2;0;false;false;63;95;191;;; -119418;1;0;false;false;;;;;; -119419;2;0;false;false;63;95;191;;; -119421;1;0;false;false;;;;;; -119422;3;0;false;false;63;95;191;;; -119425;1;0;false;false;;;;;; -119426;3;0;false;false;63;95;191;;; -119429;1;0;false;false;;;;;; -119430;9;0;false;false;63;95;191;;; -119439;1;0;false;false;;;;;; -119440;3;0;false;false;63;95;191;;; -119443;1;0;false;false;;;;;; -119444;6;0;false;false;63;95;191;;; -119450;1;0;false;false;;;;;; -119451;3;0;false;false;63;95;191;;; -119454;1;0;false;false;;;;;; -119455;6;0;false;false;63;95;191;;; -119461;1;0;false;false;;;;;; -119462;4;0;false;false;63;95;191;;; -119466;1;0;false;false;;;;;; -119467;5;0;false;false;63;95;191;;; -119472;1;0;false;false;;;;;; -119473;2;0;false;false;63;95;191;;; -119475;3;0;false;false;;;;;; -119478;1;0;false;false;63;95;191;;; -119479;1;0;false;false;;;;;; -119480;9;0;false;false;63;95;191;;; -119489;1;0;false;false;;;;;; -119490;3;0;false;false;63;95;191;;; -119493;1;0;false;false;;;;;; -119494;7;0;false;false;63;95;191;;; -119501;1;0;false;false;;;;;; -119502;6;0;false;false;63;95;191;;; -119508;3;0;false;false;;;;;; -119511;1;0;false;false;63;95;191;;; -119512;1;0;false;false;;;;;; -119513;3;0;false;false;127;127;159;;; -119516;3;0;false;false;;;;;; -119519;1;0;false;false;63;95;191;;; -119520;3;0;false;false;;;;;; -119523;1;0;false;false;63;95;191;;; -119524;1;0;false;false;;;;;; -119525;8;1;false;false;127;159;191;;; -119533;3;0;false;false;63;95;191;;; -119536;3;0;false;false;;;;;; -119539;2;0;false;false;63;95;191;;; -119541;2;0;false;false;;;;;; -119543;2;0;false;false;0;0;0;;; -119545;1;0;false;false;;;;;; -119546;7;0;false;false;0;0;0;;; -119553;1;0;false;false;;;;;; -119554;1;0;false;false;0;0;0;;; -119555;3;0;false;false;;;;;; -119558;6;1;false;false;127;0;85;;; -119564;1;0;false;false;;;;;; -119565;3;1;false;false;127;0;85;;; -119568;1;0;false;false;;;;;; -119569;3;0;false;false;0;0;0;;; -119572;4;1;false;false;127;0;85;;; -119576;2;0;false;false;0;0;0;;; -119578;2;0;false;false;;;;;; -119580;1;0;false;false;0;0;0;;; -119581;2;0;false;false;;;;;; -119583;3;0;false;false;63;95;191;;; -119586;4;0;false;false;;;;;; -119590;1;0;false;false;63;95;191;;; -119591;1;0;false;false;;;;;; -119592;7;0;false;false;63;95;191;;; -119599;1;0;false;false;;;;;; -119600;3;0;false;false;63;95;191;;; -119603;1;0;false;false;;;;;; -119604;10;0;false;false;63;95;191;;; -119614;1;0;false;false;;;;;; -119615;6;0;false;false;63;95;191;;; -119621;1;0;false;false;;;;;; -119622;10;0;false;false;63;95;191;;; -119632;3;0;false;false;;;;;; -119635;1;0;false;false;63;95;191;;; -119636;1;0;false;false;;;;;; -119637;3;0;false;false;127;127;159;;; -119640;3;0;false;false;;;;;; -119643;1;0;false;false;63;95;191;;; -119644;3;0;false;false;;;;;; -119647;1;0;false;false;63;95;191;;; -119648;1;0;false;false;;;;;; -119649;8;1;false;false;127;159;191;;; -119657;10;0;false;false;63;95;191;;; -119667;1;0;false;false;;;;;; -119668;6;0;false;false;63;95;191;;; -119674;1;0;false;false;;;;;; -119675;10;0;false;false;63;95;191;;; -119685;3;0;false;false;;;;;; -119688;2;0;false;false;63;95;191;;; -119690;2;0;false;false;;;;;; -119692;3;1;false;false;127;0;85;;; -119695;1;0;false;false;;;;;; -119696;24;0;false;false;0;0;0;;; -119720;1;0;false;false;;;;;; -119721;1;0;false;false;0;0;0;;; -119722;3;0;false;false;;;;;; -119725;2;0;false;false;0;0;0;;; -119727;1;0;false;false;;;;;; -119728;2;0;false;false;0;0;0;;; -119730;1;0;false;false;;;;;; -119731;1;0;false;false;0;0;0;;; -119732;1;0;false;false;;;;;; -119733;8;0;false;false;0;0;0;;; -119741;3;0;false;false;;;;;; -119744;3;1;false;false;127;0;85;;; -119747;1;0;false;false;;;;;; -119748;9;0;false;false;0;0;0;;; -119757;1;0;false;false;;;;;; -119758;1;0;false;false;0;0;0;;; -119759;1;0;false;false;;;;;; -119760;42;0;false;false;0;0;0;;; -119802;6;0;false;false;;;;;; -119808;13;0;false;false;0;0;0;;; -119821;3;0;false;false;;;;;; -119824;6;1;false;false;127;0;85;;; -119830;1;0;false;false;;;;;; -119831;10;0;false;false;0;0;0;;; -119841;2;0;false;false;;;;;; -119843;1;0;false;false;0;0;0;;; -119844;2;0;false;false;;;;;; -119846;3;0;false;false;63;95;191;;; -119849;4;0;false;false;;;;;; -119853;1;0;false;false;63;95;191;;; -119854;1;0;false;false;;;;;; -119855;7;0;false;false;63;95;191;;; -119862;1;0;false;false;;;;;; -119863;3;0;false;false;63;95;191;;; -119866;1;0;false;false;;;;;; -119867;10;0;false;false;63;95;191;;; -119877;1;0;false;false;;;;;; -119878;6;0;false;false;63;95;191;;; -119884;1;0;false;false;;;;;; -119885;6;0;false;false;63;95;191;;; -119891;1;0;false;false;;;;;; -119892;8;0;false;false;63;95;191;;; -119900;1;0;false;false;;;;;; -119901;2;0;false;false;63;95;191;;; -119903;1;0;false;false;;;;;; -119904;3;0;false;false;63;95;191;;; -119907;1;0;false;false;;;;;; -119908;5;0;false;false;63;95;191;;; -119913;1;0;false;false;;;;;; -119914;2;0;false;false;63;95;191;;; -119916;1;0;false;false;;;;;; -119917;3;0;false;false;63;95;191;;; -119920;1;0;false;false;;;;;; -119921;5;0;false;false;63;95;191;;; -119926;3;0;false;false;;;;;; -119929;1;0;false;false;63;95;191;;; -119930;1;0;false;false;;;;;; -119931;3;0;false;false;127;127;159;;; -119934;3;0;false;false;;;;;; -119937;1;0;false;false;63;95;191;;; -119938;3;0;false;false;;;;;; -119941;1;0;false;false;63;95;191;;; -119942;1;0;false;false;;;;;; -119943;8;1;false;false;127;159;191;;; -119951;10;0;false;false;63;95;191;;; -119961;1;0;false;false;;;;;; -119962;6;0;false;false;63;95;191;;; -119968;1;0;false;false;;;;;; -119969;6;0;false;false;63;95;191;;; -119975;1;0;false;false;;;;;; -119976;8;0;false;false;63;95;191;;; -119984;1;0;false;false;;;;;; -119985;2;0;false;false;63;95;191;;; -119987;1;0;false;false;;;;;; -119988;3;0;false;false;63;95;191;;; -119991;1;0;false;false;;;;;; -119992;5;0;false;false;63;95;191;;; -119997;1;0;false;false;;;;;; -119998;2;0;false;false;63;95;191;;; -120000;1;0;false;false;;;;;; -120001;3;0;false;false;63;95;191;;; -120004;1;0;false;false;;;;;; -120005;5;0;false;false;63;95;191;;; -120010;3;0;false;false;;;;;; -120013;1;0;false;false;63;95;191;;; -120014;1;0;false;false;;;;;; -120015;8;0;false;false;63;95;191;;; -120023;1;0;false;false;;;;;; -120024;2;0;false;false;63;95;191;;; -120026;1;0;false;false;;;;;; -120027;9;0;false;false;63;95;191;;; -120036;1;0;false;false;;;;;; -120037;10;0;false;false;63;95;191;;; -120047;1;0;false;false;;;;;; -120048;8;0;false;false;63;95;191;;; -120056;1;0;false;false;;;;;; -120057;2;0;false;false;63;95;191;;; -120059;1;0;false;false;;;;;; -120060;2;0;false;false;63;95;191;;; -120062;1;0;false;false;;;;;; -120063;2;0;false;false;63;95;191;;; -120065;1;0;false;false;;;;;; -120066;1;0;false;false;63;95;191;;; -120067;1;0;false;false;;;;;; -120068;1;0;false;false;63;95;191;;; -120069;1;0;false;false;;;;;; -120070;3;0;false;false;63;95;191;;; -120073;1;0;false;false;;;;;; -120074;7;0;false;false;63;95;191;;; -120081;1;0;false;false;;;;;; -120082;2;0;false;false;63;95;191;;; -120084;1;0;false;false;;;;;; -120085;8;0;false;false;63;95;191;;; -120093;3;0;false;false;;;;;; -120096;1;0;false;false;63;95;191;;; -120097;1;0;false;false;;;;;; -120098;11;1;false;false;127;159;191;;; -120109;12;0;false;false;63;95;191;;; -120121;1;0;false;false;;;;;; -120122;4;0;false;false;127;127;159;;; -120126;3;0;false;false;;;;;; -120129;1;0;false;false;63;95;191;;; -120130;4;0;false;false;;;;;; -120134;4;0;false;false;127;127;159;;; -120138;21;0;false;false;63;95;191;;; -120159;1;0;false;false;;;;;; -120160;1;0;false;false;127;127;159;;; -120161;1;0;false;false;;;;;; -120162;2;0;false;false;63;95;191;;; -120164;1;0;false;false;;;;;; -120165;3;0;false;false;63;95;191;;; -120168;1;0;false;false;;;;;; -120169;8;0;false;false;63;95;191;;; -120177;1;0;false;false;;;;;; -120178;3;0;false;false;63;95;191;;; -120181;1;0;false;false;;;;;; -120182;4;0;false;false;63;95;191;;; -120186;1;0;false;false;;;;;; -120187;8;0;false;false;63;95;191;;; -120195;5;0;false;false;127;127;159;;; -120200;3;0;false;false;;;;;; -120203;1;0;false;false;63;95;191;;; -120204;4;0;false;false;;;;;; -120208;4;0;false;false;127;127;159;;; -120212;27;0;false;false;63;95;191;;; -120239;1;0;false;false;;;;;; -120240;1;0;false;false;127;127;159;;; -120241;1;0;false;false;;;;;; -120242;2;0;false;false;63;95;191;;; -120244;1;0;false;false;;;;;; -120245;3;0;false;false;63;95;191;;; -120248;1;0;false;false;;;;;; -120249;6;0;false;false;63;95;191;;; -120255;1;0;false;false;;;;;; -120256;4;0;false;false;63;95;191;;; -120260;1;0;false;false;;;;;; -120261;3;0;false;false;63;95;191;;; -120264;1;0;false;false;;;;;; -120265;6;0;false;false;63;95;191;;; -120271;1;0;false;false;;;;;; -120272;4;0;false;false;63;95;191;;; -120276;1;0;false;false;;;;;; -120277;7;0;false;false;63;95;191;;; -120284;1;0;false;false;;;;;; -120285;3;0;false;false;63;95;191;;; -120288;1;0;false;false;;;;;; -120289;8;0;false;false;63;95;191;;; -120297;5;0;false;false;127;127;159;;; -120302;3;0;false;false;;;;;; -120305;1;0;false;false;63;95;191;;; -120306;1;0;false;false;;;;;; -120307;5;0;false;false;127;127;159;;; -120312;3;0;false;false;;;;;; -120315;2;0;false;false;63;95;191;;; -120317;2;0;false;false;;;;;; -120319;6;1;false;false;127;0;85;;; -120325;1;0;false;false;;;;;; -120326;3;1;false;false;127;0;85;;; -120329;1;0;false;false;;;;;; -120330;20;0;false;false;0;0;0;;; -120350;1;0;false;false;;;;;; -120351;1;0;false;false;0;0;0;;; -120352;4;0;false;false;;;;;; -120356;14;0;false;false;0;0;0;;; -120370;3;0;false;false;;;;;; -120373;6;1;false;false;127;0;85;;; -120379;1;0;false;false;;;;;; -120380;22;0;false;false;0;0;0;;; -120402;1;0;false;false;;;;;; -120403;1;0;false;false;0;0;0;;; -120404;1;0;false;false;;;;;; -120405;25;0;false;false;0;0;0;;; -120430;2;0;false;false;;;;;; -120432;1;0;false;false;0;0;0;;; -120433;2;0;false;false;;;;;; -120435;3;0;false;false;63;95;191;;; -120438;4;0;false;false;;;;;; -120442;1;0;false;false;63;95;191;;; -120443;1;0;false;false;;;;;; -120444;7;0;false;false;63;95;191;;; -120451;1;0;false;false;;;;;; -120452;3;0;false;false;63;95;191;;; -120455;1;0;false;false;;;;;; -120456;10;0;false;false;63;95;191;;; -120466;1;0;false;false;;;;;; -120467;6;0;false;false;63;95;191;;; -120473;1;0;false;false;;;;;; -120474;6;0;false;false;63;95;191;;; -120480;1;0;false;false;;;;;; -120481;8;0;false;false;63;95;191;;; -120489;1;0;false;false;;;;;; -120490;2;0;false;false;63;95;191;;; -120492;1;0;false;false;;;;;; -120493;3;0;false;false;63;95;191;;; -120496;1;0;false;false;;;;;; -120497;5;0;false;false;63;95;191;;; -120502;1;0;false;false;;;;;; -120503;2;0;false;false;63;95;191;;; -120505;1;0;false;false;;;;;; -120506;3;0;false;false;63;95;191;;; -120509;1;0;false;false;;;;;; -120510;5;0;false;false;63;95;191;;; -120515;3;0;false;false;;;;;; -120518;1;0;false;false;63;95;191;;; -120519;1;0;false;false;;;;;; -120520;3;0;false;false;127;127;159;;; -120523;3;0;false;false;;;;;; -120526;1;0;false;false;63;95;191;;; -120527;3;0;false;false;;;;;; -120530;1;0;false;false;63;95;191;;; -120531;1;0;false;false;;;;;; -120532;8;1;false;false;127;159;191;;; -120540;3;0;false;false;63;95;191;;; -120543;1;0;false;false;;;;;; -120544;10;0;false;false;63;95;191;;; -120554;1;0;false;false;;;;;; -120555;6;0;false;false;63;95;191;;; -120561;1;0;false;false;;;;;; -120562;6;0;false;false;63;95;191;;; -120568;1;0;false;false;;;;;; -120569;8;0;false;false;63;95;191;;; -120577;1;0;false;false;;;;;; -120578;2;0;false;false;63;95;191;;; -120580;1;0;false;false;;;;;; -120581;3;0;false;false;63;95;191;;; -120584;1;0;false;false;;;;;; -120585;5;0;false;false;63;95;191;;; -120590;1;0;false;false;;;;;; -120591;2;0;false;false;63;95;191;;; -120593;1;0;false;false;;;;;; -120594;3;0;false;false;63;95;191;;; -120597;1;0;false;false;;;;;; -120598;5;0;false;false;63;95;191;;; -120603;3;0;false;false;;;;;; -120606;1;0;false;false;63;95;191;;; -120607;1;0;false;false;;;;;; -120608;8;0;false;false;63;95;191;;; -120616;1;0;false;false;;;;;; -120617;2;0;false;false;63;95;191;;; -120619;1;0;false;false;;;;;; -120620;5;0;false;false;63;95;191;;; -120625;1;0;false;false;;;;;; -120626;8;0;false;false;63;95;191;;; -120634;1;0;false;false;;;;;; -120635;2;0;false;false;63;95;191;;; -120637;1;0;false;false;;;;;; -120638;2;0;false;false;63;95;191;;; -120640;1;0;false;false;;;;;; -120641;2;0;false;false;63;95;191;;; -120643;1;0;false;false;;;;;; -120644;1;0;false;false;63;95;191;;; -120645;1;0;false;false;;;;;; -120646;1;0;false;false;63;95;191;;; -120647;1;0;false;false;;;;;; -120648;3;0;false;false;63;95;191;;; -120651;1;0;false;false;;;;;; -120652;7;0;false;false;63;95;191;;; -120659;1;0;false;false;;;;;; -120660;2;0;false;false;63;95;191;;; -120662;1;0;false;false;;;;;; -120663;9;0;false;false;63;95;191;;; -120672;3;0;false;false;;;;;; -120675;1;0;false;false;63;95;191;;; -120676;1;0;false;false;;;;;; -120677;11;1;false;false;127;159;191;;; -120688;12;0;false;false;63;95;191;;; -120700;1;0;false;false;;;;;; -120701;4;0;false;false;127;127;159;;; -120705;3;0;false;false;;;;;; -120708;1;0;false;false;63;95;191;;; -120709;4;0;false;false;;;;;; -120713;4;0;false;false;127;127;159;;; -120717;21;0;false;false;63;95;191;;; -120738;1;0;false;false;;;;;; -120739;1;0;false;false;127;127;159;;; -120740;1;0;false;false;;;;;; -120741;2;0;false;false;63;95;191;;; -120743;1;0;false;false;;;;;; -120744;3;0;false;false;63;95;191;;; -120747;1;0;false;false;;;;;; -120748;8;0;false;false;63;95;191;;; -120756;1;0;false;false;;;;;; -120757;3;0;false;false;63;95;191;;; -120760;1;0;false;false;;;;;; -120761;4;0;false;false;63;95;191;;; -120765;1;0;false;false;;;;;; -120766;8;0;false;false;63;95;191;;; -120774;5;0;false;false;127;127;159;;; -120779;3;0;false;false;;;;;; -120782;1;0;false;false;63;95;191;;; -120783;4;0;false;false;;;;;; -120787;4;0;false;false;127;127;159;;; -120791;27;0;false;false;63;95;191;;; -120818;1;0;false;false;;;;;; -120819;1;0;false;false;127;127;159;;; -120820;1;0;false;false;;;;;; -120821;2;0;false;false;63;95;191;;; -120823;1;0;false;false;;;;;; -120824;3;0;false;false;63;95;191;;; -120827;1;0;false;false;;;;;; -120828;6;0;false;false;63;95;191;;; -120834;1;0;false;false;;;;;; -120835;4;0;false;false;63;95;191;;; -120839;1;0;false;false;;;;;; -120840;3;0;false;false;63;95;191;;; -120843;1;0;false;false;;;;;; -120844;6;0;false;false;63;95;191;;; -120850;1;0;false;false;;;;;; -120851;4;0;false;false;63;95;191;;; -120855;1;0;false;false;;;;;; -120856;7;0;false;false;63;95;191;;; -120863;1;0;false;false;;;;;; -120864;3;0;false;false;63;95;191;;; -120867;1;0;false;false;;;;;; -120868;8;0;false;false;63;95;191;;; -120876;5;0;false;false;127;127;159;;; -120881;3;0;false;false;;;;;; -120884;1;0;false;false;63;95;191;;; -120885;1;0;false;false;;;;;; -120886;5;0;false;false;127;127;159;;; -120891;3;0;false;false;;;;;; -120894;2;0;false;false;63;95;191;;; -120896;2;0;false;false;;;;;; -120898;6;1;false;false;127;0;85;;; -120904;1;0;false;false;;;;;; -120905;3;1;false;false;127;0;85;;; -120908;1;0;false;false;;;;;; -120909;20;0;false;false;0;0;0;;; -120929;1;0;false;false;;;;;; -120930;1;0;false;false;0;0;0;;; -120931;4;0;false;false;;;;;; -120935;14;0;false;false;0;0;0;;; -120949;3;0;false;false;;;;;; -120952;6;1;false;false;127;0;85;;; -120958;1;0;false;false;;;;;; -120959;23;0;false;false;0;0;0;;; -120982;2;0;false;false;;;;;; -120984;1;0;false;false;0;0;0;;; -120985;2;0;false;false;;;;;; -120987;3;0;false;false;63;95;191;;; -120990;4;0;false;false;;;;;; -120994;1;0;false;false;63;95;191;;; -120995;1;0;false;false;;;;;; -120996;7;0;false;false;63;95;191;;; -121003;1;0;false;false;;;;;; -121004;3;0;false;false;63;95;191;;; -121007;1;0;false;false;;;;;; -121008;6;0;false;false;63;95;191;;; -121014;1;0;false;false;;;;;; -121015;8;0;false;false;63;95;191;;; -121023;1;0;false;false;;;;;; -121024;2;0;false;false;63;95;191;;; -121026;1;0;false;false;;;;;; -121027;3;0;false;false;63;95;191;;; -121030;1;0;false;false;;;;;; -121031;4;0;false;false;63;95;191;;; -121035;3;0;false;false;;;;;; -121038;1;0;false;false;63;95;191;;; -121039;1;0;false;false;;;;;; -121040;7;0;false;false;63;95;191;;; -121047;1;0;false;false;;;;;; -121048;8;0;false;false;63;95;191;;; -121056;1;0;false;false;;;;;; -121057;2;0;false;false;63;95;191;;; -121059;1;0;false;false;;;;;; -121060;5;0;false;false;63;95;191;;; -121065;1;0;false;false;;;;;; -121066;2;0;false;false;63;95;191;;; -121068;1;0;false;false;;;;;; -121069;2;0;false;false;63;95;191;;; -121071;1;0;false;false;;;;;; -121072;6;0;false;false;63;95;191;;; -121078;1;0;false;false;;;;;; -121079;10;0;false;false;63;95;191;;; -121089;1;0;false;false;;;;;; -121090;4;0;false;false;63;95;191;;; -121094;1;0;false;false;;;;;; -121095;3;0;false;false;63;95;191;;; -121098;1;0;false;false;;;;;; -121099;4;0;false;false;63;95;191;;; -121103;3;0;false;false;;;;;; -121106;1;0;false;false;63;95;191;;; -121107;1;0;false;false;;;;;; -121108;3;0;false;false;127;127;159;;; -121111;3;0;false;false;;;;;; -121114;1;0;false;false;63;95;191;;; -121115;3;0;false;false;;;;;; -121118;1;0;false;false;63;95;191;;; -121119;1;0;false;false;;;;;; -121120;7;1;false;false;127;159;191;;; -121127;3;0;false;false;63;95;191;;; -121130;1;0;false;false;;;;;; -121131;1;0;false;false;63;95;191;;; -121132;1;0;false;false;;;;;; -121133;3;0;false;false;63;95;191;;; -121136;1;0;false;false;;;;;; -121137;4;0;false;false;63;95;191;;; -121141;1;0;false;false;;;;;; -121142;7;0;false;false;63;95;191;;; -121149;1;0;false;false;;;;;; -121150;2;0;false;false;63;95;191;;; -121152;1;0;false;false;;;;;; -121153;8;0;false;false;63;95;191;;; -121161;1;0;false;false;;;;;; -121162;2;0;false;false;63;95;191;;; -121164;1;0;false;false;;;;;; -121165;1;0;false;false;63;95;191;;; -121166;1;0;false;false;;;;;; -121167;10;0;false;false;63;95;191;;; -121177;4;0;false;false;;;;;; -121181;1;0;false;false;63;95;191;;; -121182;2;0;false;false;;;;;; -121184;10;0;false;false;63;95;191;;; -121194;1;0;false;false;;;;;; -121195;3;0;false;false;63;95;191;;; -121198;1;0;false;false;;;;;; -121199;4;0;false;false;63;95;191;;; -121203;1;0;false;false;;;;;; -121204;1;0;false;false;63;95;191;;; -121205;1;0;false;false;;;;;; -121206;5;0;false;false;63;95;191;;; -121211;1;0;false;false;;;;;; -121212;5;0;false;false;63;95;191;;; -121217;2;0;false;false;;;;;; -121219;9;0;false;false;63;95;191;;; -121228;1;0;false;false;;;;;; -121229;5;0;false;false;63;95;191;;; -121234;1;0;false;false;;;;;; -121235;5;0;false;false;63;95;191;;; -121240;1;0;false;false;;;;;; -121241;3;0;false;false;63;95;191;;; -121244;1;0;false;false;;;;;; -121245;3;0;false;false;63;95;191;;; -121248;1;0;false;false;;;;;; -121249;2;0;false;false;63;95;191;;; -121251;1;0;false;false;;;;;; -121252;4;0;false;false;63;95;191;;; -121256;1;0;false;false;;;;;; -121257;2;0;false;false;63;95;191;;; -121259;3;0;false;false;;;;;; -121262;1;0;false;false;63;95;191;;; -121263;2;0;false;false;;;;;; -121265;9;0;false;false;63;95;191;;; -121274;1;0;false;false;;;;;; -121275;9;0;false;false;63;95;191;;; -121284;1;0;false;false;;;;;; -121285;9;0;false;false;63;95;191;;; -121294;1;0;false;false;;;;;; -121295;5;0;false;false;63;95;191;;; -121300;1;0;false;false;;;;;; -121301;5;0;false;false;63;95;191;;; -121306;1;0;false;false;;;;;; -121307;5;0;false;false;63;95;191;;; -121312;1;0;false;false;;;;;; -121313;7;0;false;false;63;95;191;;; -121320;1;0;false;false;;;;;; -121321;3;0;false;false;63;95;191;;; -121324;1;0;false;false;;;;;; -121325;8;0;false;false;63;95;191;;; -121333;1;0;false;false;;;;;; -121334;8;0;false;false;63;95;191;;; -121342;4;0;false;false;;;;;; -121346;1;0;false;false;63;95;191;;; -121347;2;0;false;false;;;;;; -121349;12;0;false;false;63;95;191;;; -121361;2;0;false;false;;;;;; -121363;8;0;false;false;63;95;191;;; -121371;1;0;false;false;;;;;; -121372;5;0;false;false;63;95;191;;; -121377;1;0;false;false;;;;;; -121378;3;0;false;false;63;95;191;;; -121381;1;0;false;false;;;;;; -121382;2;0;false;false;63;95;191;;; -121384;1;0;false;false;;;;;; -121385;5;0;false;false;63;95;191;;; -121390;1;0;false;false;;;;;; -121391;5;0;false;false;63;95;191;;; -121396;1;0;false;false;;;;;; -121397;5;0;false;false;63;95;191;;; -121402;1;0;false;false;;;;;; -121403;3;0;false;false;63;95;191;;; -121406;1;0;false;false;;;;;; -121407;8;0;false;false;63;95;191;;; -121415;1;0;false;false;;;;;; -121416;5;0;false;false;63;95;191;;; -121421;1;0;false;false;;;;;; -121422;5;0;false;false;63;95;191;;; -121427;3;0;false;false;;;;;; -121430;1;0;false;false;63;95;191;;; -121431;2;0;false;false;;;;;; -121433;6;0;false;false;63;95;191;;; -121439;1;0;false;false;;;;;; -121440;9;0;false;false;63;95;191;;; -121449;1;0;false;false;;;;;; -121450;10;0;false;false;63;95;191;;; -121460;1;0;false;false;;;;;; -121461;8;0;false;false;63;95;191;;; -121469;1;0;false;false;;;;;; -121470;12;0;false;false;63;95;191;;; -121482;1;0;false;false;;;;;; -121483;5;0;false;false;63;95;191;;; -121488;1;0;false;false;;;;;; -121489;6;0;false;false;63;95;191;;; -121495;3;0;false;false;;;;;; -121498;1;0;false;false;63;95;191;;; -121499;1;0;false;false;;;;;; -121500;8;1;false;false;127;159;191;;; -121508;3;0;false;false;63;95;191;;; -121511;1;0;false;false;;;;;; -121512;2;0;false;false;63;95;191;;; -121514;1;0;false;false;;;;;; -121515;3;0;false;false;63;95;191;;; -121518;1;0;false;false;;;;;; -121519;10;0;false;false;63;95;191;;; -121529;1;0;false;false;;;;;; -121530;7;0;false;false;63;95;191;;; -121537;1;0;false;false;;;;;; -121538;7;0;false;false;63;95;191;;; -121545;1;0;false;false;;;;;; -121546;2;0;false;false;63;95;191;;; -121548;1;0;false;false;;;;;; -121549;7;0;false;false;63;95;191;;; -121556;1;0;false;false;;;;;; -121557;2;0;false;false;63;95;191;;; -121559;1;0;false;false;;;;;; -121560;8;0;false;false;63;95;191;;; -121568;4;0;false;false;;;;;; -121572;1;0;false;false;63;95;191;;; -121573;2;0;false;false;;;;;; -121575;2;0;false;false;63;95;191;;; -121577;1;0;false;false;;;;;; -121578;5;0;false;false;63;95;191;;; -121583;1;0;false;false;;;;;; -121584;2;0;false;false;63;95;191;;; -121586;1;0;false;false;;;;;; -121587;2;0;false;false;63;95;191;;; -121589;1;0;false;false;;;;;; -121590;6;0;false;false;63;95;191;;; -121596;1;0;false;false;;;;;; -121597;10;0;false;false;63;95;191;;; -121607;1;0;false;false;;;;;; -121608;4;0;false;false;63;95;191;;; -121612;1;0;false;false;;;;;; -121613;3;0;false;false;63;95;191;;; -121616;1;0;false;false;;;;;; -121617;4;0;false;false;63;95;191;;; -121621;3;0;false;false;;;;;; -121624;1;0;false;false;63;95;191;;; -121625;1;0;false;false;;;;;; -121626;11;1;false;false;127;159;191;;; -121637;12;0;false;false;63;95;191;;; -121649;1;0;false;false;;;;;; -121650;4;0;false;false;127;127;159;;; -121654;3;0;false;false;;;;;; -121657;1;0;false;false;63;95;191;;; -121658;4;0;false;false;;;;;; -121662;4;0;false;false;127;127;159;;; -121666;21;0;false;false;63;95;191;;; -121687;1;0;false;false;;;;;; -121688;1;0;false;false;127;127;159;;; -121689;1;0;false;false;;;;;; -121690;2;0;false;false;63;95;191;;; -121692;1;0;false;false;;;;;; -121693;3;0;false;false;63;95;191;;; -121696;1;0;false;false;;;;;; -121697;8;0;false;false;63;95;191;;; -121705;1;0;false;false;;;;;; -121706;3;0;false;false;63;95;191;;; -121709;1;0;false;false;;;;;; -121710;4;0;false;false;63;95;191;;; -121714;1;0;false;false;;;;;; -121715;8;0;false;false;63;95;191;;; -121723;5;0;false;false;127;127;159;;; -121728;3;0;false;false;;;;;; -121731;1;0;false;false;63;95;191;;; -121732;4;0;false;false;;;;;; -121736;4;0;false;false;127;127;159;;; -121740;27;0;false;false;63;95;191;;; -121767;1;0;false;false;;;;;; -121768;1;0;false;false;127;127;159;;; -121769;1;0;false;false;;;;;; -121770;2;0;false;false;63;95;191;;; -121772;1;0;false;false;;;;;; -121773;3;0;false;false;63;95;191;;; -121776;1;0;false;false;;;;;; -121777;6;0;false;false;63;95;191;;; -121783;1;0;false;false;;;;;; -121784;4;0;false;false;63;95;191;;; -121788;1;0;false;false;;;;;; -121789;3;0;false;false;63;95;191;;; -121792;1;0;false;false;;;;;; -121793;6;0;false;false;63;95;191;;; -121799;1;0;false;false;;;;;; -121800;4;0;false;false;63;95;191;;; -121804;1;0;false;false;;;;;; -121805;7;0;false;false;63;95;191;;; -121812;1;0;false;false;;;;;; -121813;3;0;false;false;63;95;191;;; -121816;1;0;false;false;;;;;; -121817;8;0;false;false;63;95;191;;; -121825;5;0;false;false;127;127;159;;; -121830;3;0;false;false;;;;;; -121833;1;0;false;false;63;95;191;;; -121834;1;0;false;false;;;;;; -121835;5;0;false;false;127;127;159;;; -121840;3;0;false;false;;;;;; -121843;2;0;false;false;63;95;191;;; -121845;2;0;false;false;;;;;; -121847;6;1;false;false;127;0;85;;; -121853;1;0;false;false;;;;;; -121854;3;1;false;false;127;0;85;;; -121857;1;0;false;false;;;;;; -121858;14;0;false;false;0;0;0;;; -121872;3;1;false;false;127;0;85;;; -121875;1;0;false;false;;;;;; -121876;4;0;false;false;0;0;0;;; -121880;1;0;false;false;;;;;; -121881;1;0;false;false;0;0;0;;; -121882;3;0;false;false;;;;;; -121885;14;0;false;false;0;0;0;;; -121899;3;0;false;false;;;;;; -121902;7;0;false;false;0;0;0;;; -121909;1;0;false;false;;;;;; -121910;6;0;false;false;0;0;0;;; -121916;1;0;false;false;;;;;; -121917;1;0;false;false;0;0;0;;; -121918;1;0;false;false;;;;;; -121919;9;0;false;false;0;0;0;;; -121928;1;0;false;false;;;;;; -121929;17;0;false;false;0;0;0;;; -121946;3;1;false;false;127;0;85;;; -121949;1;0;false;false;;;;;; -121950;14;0;false;false;0;0;0;;; -121964;3;0;false;false;;;;;; -121967;3;1;false;false;127;0;85;;; -121970;1;0;false;false;;;;;; -121971;10;0;false;false;0;0;0;;; -121981;6;0;false;false;;;;;; -121987;2;1;false;false;127;0;85;;; -121989;1;0;false;false;;;;;; -121990;7;0;false;false;0;0;0;;; -121997;1;0;false;false;;;;;; -121998;2;0;false;false;0;0;0;;; -122000;1;0;false;false;;;;;; -122001;4;1;false;false;127;0;85;;; -122005;1;0;false;false;0;0;0;;; -122006;1;0;false;false;;;;;; -122007;1;0;false;false;0;0;0;;; -122008;4;0;false;false;;;;;; -122012;9;0;false;false;0;0;0;;; -122021;1;0;false;false;;;;;; -122022;1;0;false;false;0;0;0;;; -122023;1;0;false;false;;;;;; -122024;9;0;false;false;0;0;0;;; -122033;3;0;false;false;;;;;; -122036;1;0;false;false;0;0;0;;; -122037;3;0;false;false;;;;;; -122040;4;1;false;false;127;0;85;;; -122044;1;0;false;false;;;;;; -122045;1;0;false;false;0;0;0;;; -122046;4;0;false;false;;;;;; -122050;9;0;false;false;0;0;0;;; -122059;1;0;false;false;;;;;; -122060;1;0;false;false;0;0;0;;; -122061;1;0;false;false;;;;;; -122062;18;0;false;false;0;0;0;;; -122080;3;0;false;false;;;;;; -122083;1;0;false;false;0;0;0;;; -122084;3;0;false;false;;;;;; -122087;6;1;false;false;127;0;85;;; -122093;1;0;false;false;;;;;; -122094;10;0;false;false;0;0;0;;; -122104;2;0;false;false;;;;;; -122106;1;0;false;false;0;0;0;;; -122107;2;0;false;false;;;;;; -122109;3;0;false;false;63;95;191;;; -122112;3;0;false;false;;;;;; -122115;1;0;false;false;63;95;191;;; -122116;1;0;false;false;;;;;; -122117;4;0;false;false;63;95;191;;; -122121;1;0;false;false;;;;;; -122122;3;0;false;false;63;95;191;;; -122125;1;0;false;false;;;;;; -122126;6;0;false;false;63;95;191;;; -122132;1;0;false;false;;;;;; -122133;2;0;false;false;63;95;191;;; -122135;1;0;false;false;;;;;; -122136;11;0;false;false;63;95;191;;; -122147;3;0;false;false;;;;;; -122150;1;0;false;false;63;95;191;;; -122151;1;0;false;false;;;;;; -122152;3;0;false;false;127;127;159;;; -122155;3;0;false;false;;;;;; -122158;1;0;false;false;63;95;191;;; -122159;3;0;false;false;;;;;; -122162;1;0;false;false;63;95;191;;; -122163;1;0;false;false;;;;;; -122164;8;1;false;false;127;159;191;;; -122172;6;0;false;false;63;95;191;;; -122178;1;0;false;false;;;;;; -122179;2;0;false;false;63;95;191;;; -122181;1;0;false;false;;;;;; -122182;10;0;false;false;63;95;191;;; -122192;1;0;false;false;;;;;; -122193;2;0;false;false;63;95;191;;; -122195;1;0;false;false;;;;;; -122196;3;0;false;false;63;95;191;;; -122199;1;0;false;false;;;;;; -122200;6;0;false;false;63;95;191;;; -122206;3;0;false;false;;;;;; -122209;1;0;false;false;63;95;191;;; -122210;1;0;false;false;;;;;; -122211;11;1;false;false;127;159;191;;; -122222;12;0;false;false;63;95;191;;; -122234;1;0;false;false;;;;;; -122235;4;0;false;false;127;127;159;;; -122239;3;0;false;false;;;;;; -122242;1;0;false;false;63;95;191;;; -122243;4;0;false;false;;;;;; -122247;4;0;false;false;127;127;159;;; -122251;21;0;false;false;63;95;191;;; -122272;1;0;false;false;;;;;; -122273;1;0;false;false;127;127;159;;; -122274;1;0;false;false;;;;;; -122275;2;0;false;false;63;95;191;;; -122277;1;0;false;false;;;;;; -122278;3;0;false;false;63;95;191;;; -122281;1;0;false;false;;;;;; -122282;8;0;false;false;63;95;191;;; -122290;1;0;false;false;;;;;; -122291;3;0;false;false;63;95;191;;; -122294;1;0;false;false;;;;;; -122295;4;0;false;false;63;95;191;;; -122299;1;0;false;false;;;;;; -122300;8;0;false;false;63;95;191;;; -122308;5;0;false;false;127;127;159;;; -122313;3;0;false;false;;;;;; -122316;1;0;false;false;63;95;191;;; -122317;4;0;false;false;;;;;; -122321;4;0;false;false;127;127;159;;; -122325;27;0;false;false;63;95;191;;; -122352;1;0;false;false;;;;;; -122353;1;0;false;false;127;127;159;;; -122354;1;0;false;false;;;;;; -122355;2;0;false;false;63;95;191;;; -122357;1;0;false;false;;;;;; -122358;3;0;false;false;63;95;191;;; -122361;1;0;false;false;;;;;; -122362;6;0;false;false;63;95;191;;; -122368;1;0;false;false;;;;;; -122369;4;0;false;false;63;95;191;;; -122373;1;0;false;false;;;;;; -122374;3;0;false;false;63;95;191;;; -122377;1;0;false;false;;;;;; -122378;6;0;false;false;63;95;191;;; -122384;1;0;false;false;;;;;; -122385;4;0;false;false;63;95;191;;; -122389;1;0;false;false;;;;;; -122390;7;0;false;false;63;95;191;;; -122397;1;0;false;false;;;;;; -122398;3;0;false;false;63;95;191;;; -122401;1;0;false;false;;;;;; -122402;8;0;false;false;63;95;191;;; -122410;5;0;false;false;127;127;159;;; -122415;3;0;false;false;;;;;; -122418;1;0;false;false;63;95;191;;; -122419;1;0;false;false;;;;;; -122420;5;0;false;false;127;127;159;;; -122425;3;0;false;false;;;;;; -122428;2;0;false;false;63;95;191;;; -122430;2;0;false;false;;;;;; -122432;6;1;false;false;127;0;85;;; -122438;1;0;false;false;;;;;; -122439;3;1;false;false;127;0;85;;; -122442;1;0;false;false;;;;;; -122443;14;0;false;false;0;0;0;;; -122457;1;0;false;false;;;;;; -122458;1;0;false;false;0;0;0;;; -122459;3;0;false;false;;;;;; -122462;14;0;false;false;0;0;0;;; -122476;3;0;false;false;;;;;; -122479;6;1;false;false;127;0;85;;; -122485;1;0;false;false;;;;;; -122486;23;0;false;false;0;0;0;;; -122509;2;0;false;false;;;;;; -122511;1;0;false;false;0;0;0;;; -122512;2;0;false;false;;;;;; -122514;3;0;false;false;63;95;191;;; -122517;3;0;false;false;;;;;; -122520;1;0;false;false;63;95;191;;; -122521;1;0;false;false;;;;;; -122522;7;0;false;false;63;95;191;;; -122529;1;0;false;false;;;;;; -122530;3;0;false;false;63;95;191;;; -122533;1;0;false;false;;;;;; -122534;10;0;false;false;63;95;191;;; -122544;1;0;false;false;;;;;; -122545;5;0;false;false;63;95;191;;; -122550;1;0;false;false;;;;;; -122551;2;0;false;false;63;95;191;;; -122553;1;0;false;false;;;;;; -122554;3;0;false;false;63;95;191;;; -122557;1;0;false;false;;;;;; -122558;4;0;false;false;63;95;191;;; -122562;1;0;false;false;;;;;; -122563;2;0;false;false;63;95;191;;; -122565;1;0;false;false;;;;;; -122566;3;0;false;false;63;95;191;;; -122569;1;0;false;false;;;;;; -122570;5;0;false;false;63;95;191;;; -122575;1;0;false;false;;;;;; -122576;6;0;false;false;63;95;191;;; -122582;3;0;false;false;;;;;; -122585;1;0;false;false;63;95;191;;; -122586;1;0;false;false;;;;;; -122587;7;0;false;false;63;95;191;;; -122594;1;0;false;false;;;;;; -122595;4;0;false;false;63;95;191;;; -122599;1;0;false;false;;;;;; -122600;2;0;false;false;63;95;191;;; -122602;1;0;false;false;;;;;; -122603;1;0;false;false;63;95;191;;; -122604;1;0;false;false;;;;;; -122605;22;0;false;false;63;95;191;;; -122627;1;0;false;false;;;;;; -122628;3;0;false;false;63;95;191;;; -122631;1;0;false;false;;;;;; -122632;4;0;false;false;63;95;191;;; -122636;1;0;false;false;;;;;; -122637;3;0;false;false;63;95;191;;; -122640;1;0;false;false;;;;;; -122641;2;0;false;false;63;95;191;;; -122643;1;0;false;false;;;;;; -122644;2;0;false;false;63;95;191;;; -122646;1;0;false;false;;;;;; -122647;2;0;false;false;63;95;191;;; -122649;1;0;false;false;;;;;; -122650;10;0;false;false;63;95;191;;; -122660;4;0;false;false;;;;;; -122664;1;0;false;false;63;95;191;;; -122665;1;0;false;false;;;;;; -122666;5;0;false;false;63;95;191;;; -122671;1;0;false;false;;;;;; -122672;3;0;false;false;63;95;191;;; -122675;1;0;false;false;;;;;; -122676;4;0;false;false;63;95;191;;; -122680;1;0;false;false;;;;;; -122681;9;0;false;false;63;95;191;;; -122690;1;0;false;false;;;;;; -122691;3;0;false;false;63;95;191;;; -122694;1;0;false;false;;;;;; -122695;3;0;false;false;63;95;191;;; -122698;1;0;false;false;;;;;; -122699;5;0;false;false;63;95;191;;; -122704;1;0;false;false;;;;;; -122705;6;0;false;false;63;95;191;;; -122711;1;0;false;false;;;;;; -122712;3;0;false;false;63;95;191;;; -122715;1;0;false;false;;;;;; -122716;2;0;false;false;63;95;191;;; -122718;1;0;false;false;;;;;; -122719;6;0;false;false;63;95;191;;; -122725;1;0;false;false;;;;;; -122726;2;0;false;false;63;95;191;;; -122728;1;0;false;false;;;;;; -122729;1;0;false;false;63;95;191;;; -122730;3;0;false;false;;;;;; -122733;1;0;false;false;63;95;191;;; -122734;1;0;false;false;;;;;; -122735;22;0;false;false;63;95;191;;; -122757;1;0;false;false;;;;;; -122758;3;0;false;false;63;95;191;;; -122761;1;0;false;false;;;;;; -122762;4;0;false;false;63;95;191;;; -122766;1;0;false;false;;;;;; -122767;3;0;false;false;63;95;191;;; -122770;1;0;false;false;;;;;; -122771;5;0;false;false;63;95;191;;; -122776;1;0;false;false;;;;;; -122777;3;0;false;false;63;95;191;;; -122780;1;0;false;false;;;;;; -122781;8;0;false;false;63;95;191;;; -122789;1;0;false;false;;;;;; -122790;9;0;false;false;63;95;191;;; -122799;1;0;false;false;;;;;; -122800;3;0;false;false;63;95;191;;; -122803;3;0;false;false;;;;;; -122806;1;0;false;false;63;95;191;;; -122807;1;0;false;false;;;;;; -122808;4;0;false;false;63;95;191;;; -122812;1;0;false;false;;;;;; -122813;10;0;false;false;63;95;191;;; -122823;1;0;false;false;;;;;; -122824;7;0;false;false;63;95;191;;; -122831;3;0;false;false;;;;;; -122834;1;0;false;false;63;95;191;;; -122835;4;0;false;false;;;;;; -122839;1;0;false;false;63;95;191;;; -122840;1;0;false;false;;;;;; -122841;7;1;false;false;127;159;191;;; -122848;5;0;false;false;63;95;191;;; -122853;1;0;false;false;;;;;; -122854;3;0;false;false;63;95;191;;; -122857;1;0;false;false;;;;;; -122858;5;0;false;false;63;95;191;;; -122863;1;0;false;false;;;;;; -122864;2;0;false;false;63;95;191;;; -122866;1;0;false;false;;;;;; -122867;3;0;false;false;63;95;191;;; -122870;1;0;false;false;;;;;; -122871;4;0;false;false;63;95;191;;; -122875;3;0;false;false;;;;;; -122878;1;0;false;false;63;95;191;;; -122879;1;0;false;false;;;;;; -122880;8;1;false;false;127;159;191;;; -122888;3;0;false;false;63;95;191;;; -122891;1;0;false;false;;;;;; -122892;10;0;false;false;63;95;191;;; -122902;1;0;false;false;;;;;; -122903;5;0;false;false;63;95;191;;; -122908;1;0;false;false;;;;;; -122909;2;0;false;false;63;95;191;;; -122911;1;0;false;false;;;;;; -122912;3;0;false;false;63;95;191;;; -122915;1;0;false;false;;;;;; -122916;4;0;false;false;63;95;191;;; -122920;1;0;false;false;;;;;; -122921;2;0;false;false;63;95;191;;; -122923;1;0;false;false;;;;;; -122924;3;0;false;false;63;95;191;;; -122927;1;0;false;false;;;;;; -122928;5;0;false;false;63;95;191;;; -122933;1;0;false;false;;;;;; -122934;6;0;false;false;63;95;191;;; -122940;3;0;false;false;;;;;; -122943;1;0;false;false;63;95;191;;; -122944;4;0;false;false;;;;;; -122948;1;0;false;false;63;95;191;;; -122949;1;0;false;false;;;;;; -122950;11;1;false;false;127;159;191;;; -122961;12;0;false;false;63;95;191;;; -122973;1;0;false;false;;;;;; -122974;4;0;false;false;127;127;159;;; -122978;3;0;false;false;;;;;; -122981;1;0;false;false;63;95;191;;; -122982;4;0;false;false;;;;;; -122986;4;0;false;false;127;127;159;;; -122990;21;0;false;false;63;95;191;;; -123011;1;0;false;false;;;;;; -123012;1;0;false;false;127;127;159;;; -123013;1;0;false;false;;;;;; -123014;2;0;false;false;63;95;191;;; -123016;1;0;false;false;;;;;; -123017;3;0;false;false;63;95;191;;; -123020;1;0;false;false;;;;;; -123021;8;0;false;false;63;95;191;;; -123029;1;0;false;false;;;;;; -123030;3;0;false;false;63;95;191;;; -123033;1;0;false;false;;;;;; -123034;4;0;false;false;63;95;191;;; -123038;1;0;false;false;;;;;; -123039;8;0;false;false;63;95;191;;; -123047;5;0;false;false;127;127;159;;; -123052;3;0;false;false;;;;;; -123055;1;0;false;false;63;95;191;;; -123056;4;0;false;false;;;;;; -123060;4;0;false;false;127;127;159;;; -123064;27;0;false;false;63;95;191;;; -123091;1;0;false;false;;;;;; -123092;1;0;false;false;127;127;159;;; -123093;1;0;false;false;;;;;; -123094;2;0;false;false;63;95;191;;; -123096;1;0;false;false;;;;;; -123097;3;0;false;false;63;95;191;;; -123100;1;0;false;false;;;;;; -123101;6;0;false;false;63;95;191;;; -123107;1;0;false;false;;;;;; -123108;4;0;false;false;63;95;191;;; -123112;1;0;false;false;;;;;; -123113;3;0;false;false;63;95;191;;; -123116;1;0;false;false;;;;;; -123117;6;0;false;false;63;95;191;;; -123123;1;0;false;false;;;;;; -123124;4;0;false;false;63;95;191;;; -123128;1;0;false;false;;;;;; -123129;7;0;false;false;63;95;191;;; -123136;1;0;false;false;;;;;; -123137;3;0;false;false;63;95;191;;; -123140;1;0;false;false;;;;;; -123141;8;0;false;false;63;95;191;;; -123149;5;0;false;false;127;127;159;;; -123154;3;0;false;false;;;;;; -123157;1;0;false;false;63;95;191;;; -123158;1;0;false;false;;;;;; -123159;5;0;false;false;127;127;159;;; -123164;3;0;false;false;;;;;; -123167;1;0;false;false;63;95;191;;; -123168;1;0;false;false;;;;;; -123169;11;1;false;false;127;159;191;;; -123180;24;0;false;false;63;95;191;;; -123204;1;0;false;false;;;;;; -123205;4;0;false;false;127;127;159;;; -123209;3;0;false;false;;;;;; -123212;1;0;false;false;63;95;191;;; -123213;4;0;false;false;;;;;; -123217;4;0;false;false;127;127;159;;; -123221;22;0;false;false;63;95;191;;; -123243;1;0;false;false;;;;;; -123244;4;0;false;false;63;95;191;;; -123248;1;0;false;false;;;;;; -123249;3;0;false;false;63;95;191;;; -123252;1;0;false;false;;;;;; -123253;5;0;false;false;63;95;191;;; -123258;1;0;false;false;;;;;; -123259;2;0;false;false;63;95;191;;; -123261;1;0;false;false;;;;;; -123262;7;0;false;false;63;95;191;;; -123269;5;0;false;false;127;127;159;;; -123274;3;0;false;false;;;;;; -123277;1;0;false;false;63;95;191;;; -123278;1;0;false;false;;;;;; -123279;5;0;false;false;127;127;159;;; -123284;3;0;false;false;;;;;; -123287;2;0;false;false;63;95;191;;; -123289;2;0;false;false;;;;;; -123291;6;1;false;false;127;0;85;;; -123297;1;0;false;false;;;;;; -123298;5;0;false;false;0;0;0;;; -123303;1;0;false;false;;;;;; -123304;18;0;false;false;0;0;0;;; -123322;3;1;false;false;127;0;85;;; -123325;1;0;false;false;;;;;; -123326;6;0;false;false;0;0;0;;; -123332;1;0;false;false;;;;;; -123333;1;0;false;false;0;0;0;;; -123334;3;0;false;false;;;;;; -123337;14;0;false;false;0;0;0;;; -123351;3;0;false;false;;;;;; -123354;5;0;false;false;0;0;0;;; -123359;1;0;false;false;;;;;; -123360;14;0;false;false;0;0;0;;; -123374;1;0;false;false;;;;;; -123375;1;0;false;false;0;0;0;;; -123376;1;0;false;false;;;;;; -123377;4;1;false;false;127;0;85;;; -123381;1;0;false;false;0;0;0;;; -123382;6;0;false;false;;;;;; -123388;2;1;false;false;127;0;85;;; -123390;1;0;false;false;;;;;; -123391;6;0;false;false;0;0;0;;; -123397;1;0;false;false;;;;;; -123398;1;0;false;false;0;0;0;;; -123399;1;0;false;false;;;;;; -123400;1;0;false;false;0;0;0;;; -123401;1;0;false;false;;;;;; -123402;2;0;false;false;0;0;0;;; -123404;1;0;false;false;;;;;; -123405;5;0;false;false;0;0;0;;; -123410;1;0;false;false;;;;;; -123411;1;0;false;false;0;0;0;;; -123412;1;0;false;false;;;;;; -123413;30;0;false;false;0;0;0;;; -123443;1;0;false;false;;;;;; -123444;1;0;false;false;0;0;0;;; -123445;4;0;false;false;;;;;; -123449;38;0;false;false;0;0;0;;; -123487;3;0;false;false;;;;;; -123490;1;0;false;false;0;0;0;;; -123491;3;0;false;false;;;;;; -123494;2;1;false;false;127;0;85;;; -123496;1;0;false;false;;;;;; -123497;21;0;false;false;0;0;0;;; -123518;1;0;false;false;;;;;; -123519;1;0;false;false;0;0;0;;; -123520;4;0;false;false;;;;;; -123524;14;0;false;false;0;0;0;;; -123538;1;0;false;false;;;;;; -123539;1;0;false;false;0;0;0;;; -123540;1;0;false;false;;;;;; -123541;43;0;false;false;0;0;0;;; -123584;3;0;false;false;;;;;; -123587;1;0;false;false;0;0;0;;; -123588;3;0;false;false;;;;;; -123591;6;1;false;false;127;0;85;;; -123597;1;0;false;false;;;;;; -123598;15;0;false;false;0;0;0;;; -123613;2;0;false;false;;;;;; -123615;1;0;false;false;0;0;0;;; -123616;2;0;false;false;;;;;; -123618;3;0;false;false;63;95;191;;; -123621;3;0;false;false;;;;;; -123624;1;0;false;false;63;95;191;;; -123625;1;0;false;false;;;;;; -123626;7;0;false;false;63;95;191;;; -123633;1;0;false;false;;;;;; -123634;3;0;false;false;63;95;191;;; -123637;1;0;false;false;;;;;; -123638;4;0;false;false;63;95;191;;; -123642;1;0;false;false;;;;;; -123643;10;0;false;false;63;95;191;;; -123653;1;0;false;false;;;;;; -123654;4;0;false;false;63;95;191;;; -123658;1;0;false;false;;;;;; -123659;3;0;false;false;63;95;191;;; -123662;1;0;false;false;;;;;; -123663;3;0;false;false;63;95;191;;; -123666;1;0;false;false;;;;;; -123667;5;0;false;false;63;95;191;;; -123672;1;0;false;false;;;;;; -123673;4;0;false;false;63;95;191;;; -123677;1;0;false;false;;;;;; -123678;2;0;false;false;63;95;191;;; -123680;1;0;false;false;;;;;; -123681;4;0;false;false;63;95;191;;; -123685;1;0;false;false;;;;;; -123686;2;0;false;false;63;95;191;;; -123688;4;0;false;false;;;;;; -123692;1;0;false;false;63;95;191;;; -123693;1;0;false;false;;;;;; -123694;5;0;false;false;63;95;191;;; -123699;1;0;false;false;;;;;; -123700;2;0;false;false;63;95;191;;; -123702;1;0;false;false;;;;;; -123703;5;0;false;false;63;95;191;;; -123708;3;0;false;false;;;;;; -123711;1;0;false;false;63;95;191;;; -123712;1;0;false;false;;;;;; -123713;3;0;false;false;127;127;159;;; -123716;3;0;false;false;;;;;; -123719;1;0;false;false;63;95;191;;; -123720;1;0;false;false;;;;;; -123721;7;1;false;false;127;159;191;;; -123728;10;0;false;false;63;95;191;;; -123738;1;0;false;false;;;;;; -123739;6;0;false;false;63;95;191;;; -123745;1;0;false;false;;;;;; -123746;2;0;false;false;63;95;191;;; -123748;1;0;false;false;;;;;; -123749;3;0;false;false;63;95;191;;; -123752;1;0;false;false;;;;;; -123753;4;0;false;false;63;95;191;;; -123757;1;0;false;false;;;;;; -123758;5;0;false;false;63;95;191;;; -123763;1;0;false;false;;;;;; -123764;8;0;false;false;63;95;191;;; -123772;1;0;false;false;;;;;; -123773;2;0;false;false;63;95;191;;; -123775;1;0;false;false;;;;;; -123776;3;0;false;false;63;95;191;;; -123779;1;0;false;false;;;;;; -123780;5;0;false;false;63;95;191;;; -123785;3;0;false;false;;;;;; -123788;1;0;false;false;63;95;191;;; -123789;2;0;false;false;;;;;; -123791;2;0;false;false;63;95;191;;; -123793;1;0;false;false;;;;;; -123794;3;0;false;false;63;95;191;;; -123797;1;0;false;false;;;;;; -123798;8;0;false;false;63;95;191;;; -123806;3;0;false;false;;;;;; -123809;1;0;false;false;63;95;191;;; -123810;1;0;false;false;;;;;; -123811;7;1;false;false;127;159;191;;; -123818;4;0;false;false;63;95;191;;; -123822;1;0;false;false;;;;;; -123823;4;0;false;false;63;95;191;;; -123827;1;0;false;false;;;;;; -123828;2;0;false;false;63;95;191;;; -123830;1;0;false;false;;;;;; -123831;3;0;false;false;63;95;191;;; -123834;1;0;false;false;;;;;; -123835;4;0;false;false;63;95;191;;; -123839;1;0;false;false;;;;;; -123840;10;0;false;false;63;95;191;;; -123850;1;0;false;false;;;;;; -123851;4;0;false;false;63;95;191;;; -123855;1;0;false;false;;;;;; -123856;3;0;false;false;63;95;191;;; -123859;3;0;false;false;;;;;; -123862;1;0;false;false;63;95;191;;; -123863;1;0;false;false;;;;;; -123864;8;1;false;false;127;159;191;;; -123872;4;0;false;false;63;95;191;;; -123876;1;0;false;false;;;;;; -123877;10;0;false;false;63;95;191;;; -123887;1;0;false;false;;;;;; -123888;4;0;false;false;63;95;191;;; -123892;1;0;false;false;;;;;; -123893;3;0;false;false;63;95;191;;; -123896;1;0;false;false;;;;;; -123897;3;0;false;false;63;95;191;;; -123900;1;0;false;false;;;;;; -123901;5;0;false;false;63;95;191;;; -123906;1;0;false;false;;;;;; -123907;5;0;false;false;63;95;191;;; -123912;3;0;false;false;;;;;; -123915;2;0;false;false;63;95;191;;; -123917;2;0;false;false;;;;;; -123919;15;0;false;false;0;0;0;;; -123934;1;0;false;false;;;;;; -123935;22;0;false;false;0;0;0;;; -123957;3;1;false;false;127;0;85;;; -123960;1;0;false;false;;;;;; -123961;11;0;false;false;0;0;0;;; -123972;1;0;false;false;;;;;; -123973;6;0;false;false;0;0;0;;; -123979;1;0;false;false;;;;;; -123980;5;0;false;false;0;0;0;;; -123985;1;0;false;false;;;;;; -123986;1;0;false;false;0;0;0;;; -123987;3;0;false;false;;;;;; -123990;6;1;false;false;127;0;85;;; -123996;1;0;false;false;;;;;; -123997;32;0;false;false;0;0;0;;; -124029;1;0;false;false;;;;;; -124030;11;0;false;false;0;0;0;;; -124041;1;0;false;false;;;;;; -124042;6;0;false;false;0;0;0;;; -124048;2;0;false;false;;;;;; -124050;1;0;false;false;0;0;0;;; -124051;2;0;false;false;;;;;; -124053;3;0;false;false;63;95;191;;; -124056;4;0;false;false;;;;;; -124060;1;0;false;false;63;95;191;;; -124061;1;0;false;false;;;;;; -124062;4;0;false;false;63;95;191;;; -124066;1;0;false;false;;;;;; -124067;3;0;false;false;63;95;191;;; -124070;1;0;false;false;;;;;; -124071;6;0;false;false;63;95;191;;; -124077;1;0;false;false;;;;;; -124078;2;0;false;false;63;95;191;;; -124080;1;0;false;false;;;;;; -124081;4;0;false;false;63;95;191;;; -124085;1;0;false;false;;;;;; -124086;6;0;false;false;63;95;191;;; -124092;3;0;false;false;;;;;; -124095;1;0;false;false;63;95;191;;; -124096;1;0;false;false;;;;;; -124097;3;0;false;false;127;127;159;;; -124100;3;0;false;false;;;;;; -124103;1;0;false;false;63;95;191;;; -124104;3;0;false;false;;;;;; -124107;1;0;false;false;63;95;191;;; -124108;1;0;false;false;;;;;; -124109;8;1;false;false;127;159;191;;; -124117;3;0;false;false;63;95;191;;; -124120;1;0;false;false;;;;;; -124121;6;0;false;false;63;95;191;;; -124127;1;0;false;false;;;;;; -124128;2;0;false;false;63;95;191;;; -124130;1;0;false;false;;;;;; -124131;5;0;false;false;63;95;191;;; -124136;1;0;false;false;;;;;; -124137;2;0;false;false;63;95;191;;; -124139;1;0;false;false;;;;;; -124140;3;0;false;false;63;95;191;;; -124143;1;0;false;false;;;;;; -124144;6;0;false;false;63;95;191;;; -124150;3;0;false;false;;;;;; -124153;1;0;false;false;63;95;191;;; -124154;1;0;false;false;;;;;; -124155;11;1;false;false;127;159;191;;; -124166;12;0;false;false;63;95;191;;; -124178;1;0;false;false;;;;;; -124179;4;0;false;false;127;127;159;;; -124183;3;0;false;false;;;;;; -124186;1;0;false;false;63;95;191;;; -124187;4;0;false;false;;;;;; -124191;4;0;false;false;127;127;159;;; -124195;21;0;false;false;63;95;191;;; -124216;1;0;false;false;;;;;; -124217;1;0;false;false;127;127;159;;; -124218;1;0;false;false;;;;;; -124219;2;0;false;false;63;95;191;;; -124221;1;0;false;false;;;;;; -124222;3;0;false;false;63;95;191;;; -124225;1;0;false;false;;;;;; -124226;8;0;false;false;63;95;191;;; -124234;1;0;false;false;;;;;; -124235;3;0;false;false;63;95;191;;; -124238;1;0;false;false;;;;;; -124239;4;0;false;false;63;95;191;;; -124243;1;0;false;false;;;;;; -124244;8;0;false;false;63;95;191;;; -124252;5;0;false;false;127;127;159;;; -124257;3;0;false;false;;;;;; -124260;1;0;false;false;63;95;191;;; -124261;4;0;false;false;;;;;; -124265;4;0;false;false;127;127;159;;; -124269;27;0;false;false;63;95;191;;; -124296;1;0;false;false;;;;;; -124297;1;0;false;false;127;127;159;;; -124298;1;0;false;false;;;;;; -124299;2;0;false;false;63;95;191;;; -124301;1;0;false;false;;;;;; -124302;3;0;false;false;63;95;191;;; -124305;1;0;false;false;;;;;; -124306;6;0;false;false;63;95;191;;; -124312;1;0;false;false;;;;;; -124313;4;0;false;false;63;95;191;;; -124317;1;0;false;false;;;;;; -124318;3;0;false;false;63;95;191;;; -124321;1;0;false;false;;;;;; -124322;6;0;false;false;63;95;191;;; -124328;1;0;false;false;;;;;; -124329;4;0;false;false;63;95;191;;; -124333;1;0;false;false;;;;;; -124334;7;0;false;false;63;95;191;;; -124341;1;0;false;false;;;;;; -124342;3;0;false;false;63;95;191;;; -124345;1;0;false;false;;;;;; -124346;8;0;false;false;63;95;191;;; -124354;5;0;false;false;127;127;159;;; -124359;3;0;false;false;;;;;; -124362;1;0;false;false;63;95;191;;; -124363;1;0;false;false;;;;;; -124364;5;0;false;false;127;127;159;;; -124369;3;0;false;false;;;;;; -124372;2;0;false;false;63;95;191;;; -124374;2;0;false;false;;;;;; -124376;6;1;false;false;127;0;85;;; -124382;1;0;false;false;;;;;; -124383;3;1;false;false;127;0;85;;; -124386;1;0;false;false;;;;;; -124387;14;0;false;false;0;0;0;;; -124401;1;0;false;false;;;;;; -124402;1;0;false;false;0;0;0;;; -124403;3;0;false;false;;;;;; -124406;14;0;false;false;0;0;0;;; -124420;3;0;false;false;;;;;; -124423;6;1;false;false;127;0;85;;; -124429;1;0;false;false;;;;;; -124430;31;0;false;false;0;0;0;;; -124461;1;0;false;false;;;;;; -124462;1;0;false;false;0;0;0;;; -124463;1;0;false;false;;;;;; -124464;2;0;false;false;0;0;0;;; -124466;2;0;false;false;;;;;; -124468;1;0;false;false;0;0;0;;; -124469;2;0;false;false;;;;;; -124471;3;0;false;false;63;95;191;;; -124474;3;0;false;false;;;;;; -124477;1;0;false;false;63;95;191;;; -124478;1;0;false;false;;;;;; -124479;7;0;false;false;63;95;191;;; -124486;1;0;false;false;;;;;; -124487;3;0;false;false;63;95;191;;; -124490;1;0;false;false;;;;;; -124491;6;0;false;false;63;95;191;;; -124497;1;0;false;false;;;;;; -124498;2;0;false;false;63;95;191;;; -124500;1;0;false;false;;;;;; -124501;5;0;false;false;63;95;191;;; -124506;1;0;false;false;;;;;; -124507;4;0;false;false;63;95;191;;; -124511;1;0;false;false;;;;;; -124512;3;0;false;false;63;95;191;;; -124515;1;0;false;false;;;;;; -124516;2;0;false;false;63;95;191;;; -124518;1;0;false;false;;;;;; -124519;10;0;false;false;63;95;191;;; -124529;1;0;false;false;;;;;; -124530;9;0;false;false;63;95;191;;; -124539;1;0;false;false;;;;;; -124540;2;0;false;false;63;95;191;;; -124542;1;0;false;false;;;;;; -124543;3;0;false;false;63;95;191;;; -124546;4;0;false;false;;;;;; -124550;1;0;false;false;63;95;191;;; -124551;1;0;false;false;;;;;; -124552;6;0;false;false;63;95;191;;; -124558;1;0;false;false;;;;;; -124559;6;0;false;false;63;95;191;;; -124565;1;0;false;false;;;;;; -124566;5;0;false;false;63;95;191;;; -124571;3;0;false;false;;;;;; -124574;1;0;false;false;63;95;191;;; -124575;1;0;false;false;;;;;; -124576;3;0;false;false;127;127;159;;; -124579;3;0;false;false;;;;;; -124582;1;0;false;false;63;95;191;;; -124583;3;0;false;false;;;;;; -124586;1;0;false;false;63;95;191;;; -124587;1;0;false;false;;;;;; -124588;8;1;false;false;127;159;191;;; -124596;6;0;false;false;63;95;191;;; -124602;1;0;false;false;;;;;; -124603;2;0;false;false;63;95;191;;; -124605;1;0;false;false;;;;;; -124606;5;0;false;false;63;95;191;;; -124611;1;0;false;false;;;;;; -124612;4;0;false;false;63;95;191;;; -124616;1;0;false;false;;;;;; -124617;3;0;false;false;63;95;191;;; -124620;1;0;false;false;;;;;; -124621;2;0;false;false;63;95;191;;; -124623;1;0;false;false;;;;;; -124624;10;0;false;false;63;95;191;;; -124634;1;0;false;false;;;;;; -124635;9;0;false;false;63;95;191;;; -124644;1;0;false;false;;;;;; -124645;2;0;false;false;63;95;191;;; -124647;1;0;false;false;;;;;; -124648;3;0;false;false;63;95;191;;; -124651;1;0;false;false;;;;;; -124652;6;0;false;false;63;95;191;;; -124658;4;0;false;false;;;;;; -124662;1;0;false;false;63;95;191;;; -124663;2;0;false;false;;;;;; -124665;6;0;false;false;63;95;191;;; -124671;1;0;false;false;;;;;; -124672;5;0;false;false;63;95;191;;; -124677;3;0;false;false;;;;;; -124680;2;0;false;false;63;95;191;;; -124682;2;0;false;false;;;;;; -124684;3;1;false;false;127;0;85;;; -124687;1;0;false;false;;;;;; -124688;19;0;false;false;0;0;0;;; -124707;1;0;false;false;;;;;; -124708;1;0;false;false;0;0;0;;; -124709;3;0;false;false;;;;;; -124712;3;1;false;false;127;0;85;;; -124715;1;0;false;false;;;;;; -124716;10;0;false;false;0;0;0;;; -124726;6;0;false;false;;;;;; -124732;2;1;false;false;127;0;85;;; -124734;1;0;false;false;;;;;; -124735;11;0;false;false;0;0;0;;; -124746;1;0;false;false;;;;;; -124747;2;0;false;false;0;0;0;;; -124749;1;0;false;false;;;;;; -124750;2;0;false;false;0;0;0;;; -124752;1;0;false;false;;;;;; -124753;1;0;false;false;0;0;0;;; -124754;4;0;false;false;;;;;; -124758;9;0;false;false;0;0;0;;; -124767;1;0;false;false;;;;;; -124768;1;0;false;false;0;0;0;;; -124769;1;0;false;false;;;;;; -124770;22;0;false;false;0;0;0;;; -124792;1;0;false;false;;;;;; -124793;1;0;false;false;0;0;0;;; -124794;1;0;false;false;;;;;; -124795;11;0;false;false;0;0;0;;; -124806;3;0;false;false;;;;;; -124809;1;0;false;false;0;0;0;;; -124810;3;0;false;false;;;;;; -124813;4;1;false;false;127;0;85;;; -124817;1;0;false;false;;;;;; -124818;1;0;false;false;0;0;0;;; -124819;4;0;false;false;;;;;; -124823;9;0;false;false;0;0;0;;; -124832;1;0;false;false;;;;;; -124833;1;0;false;false;0;0;0;;; -124834;1;0;false;false;;;;;; -124835;2;0;false;false;0;0;0;;; -124837;3;0;false;false;;;;;; -124840;1;0;false;false;0;0;0;;; -124841;3;0;false;false;;;;;; -124844;6;1;false;false;127;0;85;;; -124850;1;0;false;false;;;;;; -124851;10;0;false;false;0;0;0;;; -124861;2;0;false;false;;;;;; -124863;1;0;false;false;0;0;0;;; -124864;2;0;false;false;;;;;; -124866;3;0;false;false;63;95;191;;; -124869;3;0;false;false;;;;;; -124872;1;0;false;false;63;95;191;;; -124873;1;0;false;false;;;;;; -124874;7;0;false;false;63;95;191;;; -124881;1;0;false;false;;;;;; -124882;3;0;false;false;63;95;191;;; -124885;1;0;false;false;;;;;; -124886;4;0;false;false;63;95;191;;; -124890;1;0;false;false;;;;;; -124891;2;0;false;false;63;95;191;;; -124893;1;0;false;false;;;;;; -124894;3;0;false;false;63;95;191;;; -124897;1;0;false;false;;;;;; -124898;9;0;false;false;63;95;191;;; -124907;1;0;false;false;;;;;; -124908;6;0;false;false;63;95;191;;; -124914;1;0;false;false;;;;;; -124915;2;0;false;false;63;95;191;;; -124917;1;0;false;false;;;;;; -124918;3;0;false;false;63;95;191;;; -124921;1;0;false;false;;;;;; -124922;4;0;false;false;63;95;191;;; -124926;3;0;false;false;;;;;; -124929;1;0;false;false;63;95;191;;; -124930;1;0;false;false;;;;;; -124931;5;0;false;false;63;95;191;;; -124936;1;0;false;false;;;;;; -124937;1;0;false;false;63;95;191;;; -124938;1;0;false;false;;;;;; -124939;4;0;false;false;63;95;191;;; -124943;1;0;false;false;;;;;; -124944;6;0;false;false;63;95;191;;; -124950;1;0;false;false;;;;;; -124951;4;0;false;false;63;95;191;;; -124955;1;0;false;false;;;;;; -124956;14;0;false;false;63;95;191;;; -124970;1;0;false;false;;;;;; -124971;2;0;false;false;63;95;191;;; -124973;1;0;false;false;;;;;; -124974;4;0;false;false;63;95;191;;; -124978;1;0;false;false;;;;;; -124979;31;0;false;false;63;95;191;;; -125010;3;0;false;false;;;;;; -125013;1;0;false;false;63;95;191;;; -125014;1;0;false;false;;;;;; -125015;7;0;false;false;63;95;191;;; -125022;1;0;false;false;;;;;; -125023;3;0;false;false;63;95;191;;; -125026;1;0;false;false;;;;;; -125027;4;0;false;false;63;95;191;;; -125031;1;0;false;false;;;;;; -125032;2;0;false;false;63;95;191;;; -125034;1;0;false;false;;;;;; -125035;3;0;false;false;63;95;191;;; -125038;1;0;false;false;;;;;; -125039;6;0;false;false;63;95;191;;; -125045;1;0;false;false;;;;;; -125046;9;0;false;false;63;95;191;;; -125055;3;0;false;false;;;;;; -125058;1;0;false;false;63;95;191;;; -125059;3;0;false;false;;;;;; -125062;1;0;false;false;63;95;191;;; -125063;1;0;false;false;;;;;; -125064;7;1;false;false;127;159;191;;; -125071;6;0;false;false;63;95;191;;; -125077;1;0;false;false;;;;;; -125078;6;0;false;false;63;95;191;;; -125084;1;0;false;false;;;;;; -125085;8;0;false;false;63;95;191;;; -125093;1;0;false;false;;;;;; -125094;2;0;false;false;63;95;191;;; -125096;1;0;false;false;;;;;; -125097;3;0;false;false;63;95;191;;; -125100;1;0;false;false;;;;;; -125101;5;0;false;false;63;95;191;;; -125106;1;0;false;false;;;;;; -125107;2;0;false;false;63;95;191;;; -125109;1;0;false;false;;;;;; -125110;3;0;false;false;63;95;191;;; -125113;1;0;false;false;;;;;; -125114;8;0;false;false;63;95;191;;; -125122;4;0;false;false;;;;;; -125126;1;0;false;false;63;95;191;;; -125127;2;0;false;false;;;;;; -125129;1;0;false;false;63;95;191;;; -125130;1;0;false;false;;;;;; -125131;29;0;false;false;63;95;191;;; -125160;1;0;false;false;;;;;; -125161;1;0;false;false;63;95;191;;; -125162;1;0;false;false;;;;;; -125163;8;1;false;false;127;159;191;;; -125171;4;0;false;false;63;95;191;;; -125175;1;0;false;false;;;;;; -125176;2;0;false;false;63;95;191;;; -125178;1;0;false;false;;;;;; -125179;3;0;false;false;63;95;191;;; -125182;1;0;false;false;;;;;; -125183;9;0;false;false;63;95;191;;; -125192;1;0;false;false;;;;;; -125193;6;0;false;false;63;95;191;;; -125199;1;0;false;false;;;;;; -125200;2;0;false;false;63;95;191;;; -125202;1;0;false;false;;;;;; -125203;3;0;false;false;63;95;191;;; -125206;1;0;false;false;;;;;; -125207;4;0;false;false;63;95;191;;; -125211;3;0;false;false;;;;;; -125214;1;0;false;false;63;95;191;;; -125215;1;0;false;false;;;;;; -125216;11;1;false;false;127;159;191;;; -125227;12;0;false;false;63;95;191;;; -125239;1;0;false;false;;;;;; -125240;4;0;false;false;127;127;159;;; -125244;3;0;false;false;;;;;; -125247;1;0;false;false;63;95;191;;; -125248;4;0;false;false;;;;;; -125252;4;0;false;false;127;127;159;;; -125256;21;0;false;false;63;95;191;;; -125277;1;0;false;false;;;;;; -125278;1;0;false;false;127;127;159;;; -125279;1;0;false;false;;;;;; -125280;2;0;false;false;63;95;191;;; -125282;1;0;false;false;;;;;; -125283;3;0;false;false;63;95;191;;; -125286;1;0;false;false;;;;;; -125287;8;0;false;false;63;95;191;;; -125295;1;0;false;false;;;;;; -125296;3;0;false;false;63;95;191;;; -125299;1;0;false;false;;;;;; -125300;4;0;false;false;63;95;191;;; -125304;1;0;false;false;;;;;; -125305;8;0;false;false;63;95;191;;; -125313;5;0;false;false;127;127;159;;; -125318;3;0;false;false;;;;;; -125321;1;0;false;false;63;95;191;;; -125322;4;0;false;false;;;;;; -125326;4;0;false;false;127;127;159;;; -125330;27;0;false;false;63;95;191;;; -125357;1;0;false;false;;;;;; -125358;1;0;false;false;127;127;159;;; -125359;1;0;false;false;;;;;; -125360;2;0;false;false;63;95;191;;; -125362;1;0;false;false;;;;;; -125363;3;0;false;false;63;95;191;;; -125366;1;0;false;false;;;;;; -125367;6;0;false;false;63;95;191;;; -125373;1;0;false;false;;;;;; -125374;4;0;false;false;63;95;191;;; -125378;1;0;false;false;;;;;; -125379;3;0;false;false;63;95;191;;; -125382;1;0;false;false;;;;;; -125383;6;0;false;false;63;95;191;;; -125389;1;0;false;false;;;;;; -125390;4;0;false;false;63;95;191;;; -125394;1;0;false;false;;;;;; -125395;7;0;false;false;63;95;191;;; -125402;1;0;false;false;;;;;; -125403;3;0;false;false;63;95;191;;; -125406;1;0;false;false;;;;;; -125407;8;0;false;false;63;95;191;;; -125415;5;0;false;false;127;127;159;;; -125420;3;0;false;false;;;;;; -125423;1;0;false;false;63;95;191;;; -125424;1;0;false;false;;;;;; -125425;5;0;false;false;127;127;159;;; -125430;3;0;false;false;;;;;; -125433;1;0;false;false;63;95;191;;; -125434;1;0;false;false;;;;;; -125435;11;1;false;false;127;159;191;;; -125446;24;0;false;false;63;95;191;;; -125470;1;0;false;false;;;;;; -125471;4;0;false;false;127;127;159;;; -125475;3;0;false;false;;;;;; -125478;1;0;false;false;63;95;191;;; -125479;3;0;false;false;;;;;; -125482;4;0;false;false;127;127;159;;; -125486;19;0;false;false;63;95;191;;; -125505;1;0;false;false;;;;;; -125506;4;0;false;false;63;95;191;;; -125510;1;0;false;false;;;;;; -125511;3;0;false;false;63;95;191;;; -125514;1;0;false;false;;;;;; -125515;6;0;false;false;63;95;191;;; -125521;1;0;false;false;;;;;; -125522;2;0;false;false;63;95;191;;; -125524;1;0;false;false;;;;;; -125525;7;0;false;false;63;95;191;;; -125532;1;0;false;false;;;;;; -125533;3;0;false;false;63;95;191;;; -125536;1;0;false;false;;;;;; -125537;5;0;false;false;63;95;191;;; -125542;1;0;false;false;;;;;; -125543;5;0;false;false;63;95;191;;; -125548;1;0;false;false;;;;;; -125549;9;0;false;false;63;95;191;;; -125558;1;0;false;false;;;;;; -125559;15;0;false;false;63;95;191;;; -125574;5;0;false;false;127;127;159;;; -125579;4;0;false;false;;;;;; -125583;1;0;false;false;63;95;191;;; -125584;1;0;false;false;;;;;; -125585;5;0;false;false;127;127;159;;; -125590;3;0;false;false;;;;;; -125593;2;0;false;false;63;95;191;;; -125595;2;0;false;false;;;;;; -125597;6;1;false;false;127;0;85;;; -125603;1;0;false;false;;;;;; -125604;3;1;false;false;127;0;85;;; -125607;1;0;false;false;;;;;; -125608;16;0;false;false;0;0;0;;; -125624;3;1;false;false;127;0;85;;; -125627;1;0;false;false;;;;;; -125628;7;0;false;false;0;0;0;;; -125635;1;0;false;false;;;;;; -125636;1;0;false;false;0;0;0;;; -125637;3;0;false;false;;;;;; -125640;14;0;false;false;0;0;0;;; -125654;6;0;false;false;;;;;; -125660;2;1;false;false;127;0;85;;; -125662;1;0;false;false;;;;;; -125663;7;0;false;false;0;0;0;;; -125670;1;0;false;false;;;;;; -125671;1;0;false;false;0;0;0;;; -125672;1;0;false;false;;;;;; -125673;1;0;false;false;0;0;0;;; -125674;1;0;false;false;;;;;; -125675;2;0;false;false;0;0;0;;; -125677;1;0;false;false;;;;;; -125678;6;0;false;false;0;0;0;;; -125684;1;0;false;false;;;;;; -125685;1;0;false;false;0;0;0;;; -125686;1;0;false;false;;;;;; -125687;15;0;false;false;0;0;0;;; -125702;1;0;false;false;;;;;; -125703;1;0;false;false;0;0;0;;; -125704;4;0;false;false;;;;;; -125708;35;0;false;false;0;0;0;;; -125743;5;0;false;false;;;;;; -125748;1;0;false;false;0;0;0;;; -125749;3;0;false;false;;;;;; -125752;6;1;false;false;127;0;85;;; -125758;1;0;false;false;;;;;; -125759;39;0;false;false;0;0;0;;; -125798;2;0;false;false;;;;;; -125800;1;0;false;false;0;0;0;;; -125801;2;0;false;false;;;;;; -125803;3;0;false;false;63;95;191;;; -125806;3;0;false;false;;;;;; -125809;1;0;false;false;63;95;191;;; -125810;1;0;false;false;;;;;; -125811;7;0;false;false;63;95;191;;; -125818;1;0;false;false;;;;;; -125819;3;0;false;false;63;95;191;;; -125822;1;0;false;false;;;;;; -125823;4;0;false;false;63;95;191;;; -125827;1;0;false;false;;;;;; -125828;9;0;false;false;63;95;191;;; -125837;1;0;false;false;;;;;; -125838;4;0;false;false;63;95;191;;; -125842;1;0;false;false;;;;;; -125843;3;0;false;false;63;95;191;;; -125846;1;0;false;false;;;;;; -125847;8;0;false;false;63;95;191;;; -125855;1;0;false;false;;;;;; -125856;3;0;false;false;63;95;191;;; -125859;1;0;false;false;;;;;; -125860;5;0;false;false;63;95;191;;; -125865;1;0;false;false;;;;;; -125866;2;0;false;false;63;95;191;;; -125868;1;0;false;false;;;;;; -125869;3;0;false;false;63;95;191;;; -125872;1;0;false;false;;;;;; -125873;4;0;false;false;63;95;191;;; -125877;3;0;false;false;;;;;; -125880;1;0;false;false;63;95;191;;; -125881;1;0;false;false;;;;;; -125882;2;0;false;false;63;95;191;;; -125884;1;0;false;false;;;;;; -125885;5;0;false;false;63;95;191;;; -125890;1;0;false;false;;;;;; -125891;10;0;false;false;63;95;191;;; -125901;3;0;false;false;;;;;; -125904;1;0;false;false;63;95;191;;; -125905;1;0;false;false;;;;;; -125906;3;0;false;false;127;127;159;;; -125909;3;0;false;false;;;;;; -125912;1;0;false;false;63;95;191;;; -125913;3;0;false;false;;;;;; -125916;1;0;false;false;63;95;191;;; -125917;1;0;false;false;;;;;; -125918;8;1;false;false;127;159;191;;; -125926;4;0;false;false;63;95;191;;; -125930;1;0;false;false;;;;;; -125931;9;0;false;false;63;95;191;;; -125940;1;0;false;false;;;;;; -125941;4;0;false;false;63;95;191;;; -125945;1;0;false;false;;;;;; -125946;3;0;false;false;63;95;191;;; -125949;1;0;false;false;;;;;; -125950;8;0;false;false;63;95;191;;; -125958;1;0;false;false;;;;;; -125959;3;0;false;false;63;95;191;;; -125962;1;0;false;false;;;;;; -125963;5;0;false;false;63;95;191;;; -125968;1;0;false;false;;;;;; -125969;2;0;false;false;63;95;191;;; -125971;1;0;false;false;;;;;; -125972;3;0;false;false;63;95;191;;; -125975;1;0;false;false;;;;;; -125976;4;0;false;false;63;95;191;;; -125980;3;0;false;false;;;;;; -125983;1;0;false;false;63;95;191;;; -125984;1;0;false;false;;;;;; -125985;2;0;false;false;63;95;191;;; -125987;1;0;false;false;;;;;; -125988;5;0;false;false;63;95;191;;; -125993;1;0;false;false;;;;;; -125994;10;0;false;false;63;95;191;;; -126004;3;0;false;false;;;;;; -126007;1;0;false;false;63;95;191;;; -126008;1;0;false;false;;;;;; -126009;11;1;false;false;127;159;191;;; -126020;12;0;false;false;63;95;191;;; -126032;1;0;false;false;;;;;; -126033;4;0;false;false;127;127;159;;; -126037;3;0;false;false;;;;;; -126040;1;0;false;false;63;95;191;;; -126041;4;0;false;false;;;;;; -126045;4;0;false;false;127;127;159;;; -126049;21;0;false;false;63;95;191;;; -126070;1;0;false;false;;;;;; -126071;1;0;false;false;127;127;159;;; -126072;1;0;false;false;;;;;; -126073;2;0;false;false;63;95;191;;; -126075;1;0;false;false;;;;;; -126076;3;0;false;false;63;95;191;;; -126079;1;0;false;false;;;;;; -126080;8;0;false;false;63;95;191;;; -126088;1;0;false;false;;;;;; -126089;3;0;false;false;63;95;191;;; -126092;1;0;false;false;;;;;; -126093;4;0;false;false;63;95;191;;; -126097;1;0;false;false;;;;;; -126098;8;0;false;false;63;95;191;;; -126106;5;0;false;false;127;127;159;;; -126111;3;0;false;false;;;;;; -126114;1;0;false;false;63;95;191;;; -126115;4;0;false;false;;;;;; -126119;4;0;false;false;127;127;159;;; -126123;27;0;false;false;63;95;191;;; -126150;1;0;false;false;;;;;; -126151;1;0;false;false;127;127;159;;; -126152;1;0;false;false;;;;;; -126153;2;0;false;false;63;95;191;;; -126155;1;0;false;false;;;;;; -126156;3;0;false;false;63;95;191;;; -126159;1;0;false;false;;;;;; -126160;6;0;false;false;63;95;191;;; -126166;1;0;false;false;;;;;; -126167;4;0;false;false;63;95;191;;; -126171;1;0;false;false;;;;;; -126172;3;0;false;false;63;95;191;;; -126175;1;0;false;false;;;;;; -126176;6;0;false;false;63;95;191;;; -126182;1;0;false;false;;;;;; -126183;4;0;false;false;63;95;191;;; -126187;1;0;false;false;;;;;; -126188;7;0;false;false;63;95;191;;; -126195;1;0;false;false;;;;;; -126196;3;0;false;false;63;95;191;;; -126199;1;0;false;false;;;;;; -126200;8;0;false;false;63;95;191;;; -126208;5;0;false;false;127;127;159;;; -126213;3;0;false;false;;;;;; -126216;1;0;false;false;63;95;191;;; -126217;1;0;false;false;;;;;; -126218;5;0;false;false;127;127;159;;; -126223;3;0;false;false;;;;;; -126226;2;0;false;false;63;95;191;;; -126228;2;0;false;false;;;;;; -126230;6;1;false;false;127;0;85;;; -126236;1;0;false;false;;;;;; -126237;6;0;false;false;0;0;0;;; -126243;1;0;false;false;;;;;; -126244;18;0;false;false;0;0;0;;; -126262;1;0;false;false;;;;;; -126263;1;0;false;false;0;0;0;;; -126264;3;0;false;false;;;;;; -126267;14;0;false;false;0;0;0;;; -126281;3;0;false;false;;;;;; -126284;6;1;false;false;127;0;85;;; -126290;1;0;false;false;;;;;; -126291;27;0;false;false;0;0;0;;; -126318;2;0;false;false;;;;;; -126320;1;0;false;false;0;0;0;;; -126321;2;0;false;false;;;;;; -126323;3;0;false;false;63;95;191;;; -126326;3;0;false;false;;;;;; -126329;1;0;false;false;63;95;191;;; -126330;1;0;false;false;;;;;; -126331;7;0;false;false;63;95;191;;; -126338;1;0;false;false;;;;;; -126339;1;0;false;false;63;95;191;;; -126340;1;0;false;false;;;;;; -126341;15;0;false;false;63;95;191;;; -126356;1;0;false;false;;;;;; -126357;4;0;false;false;63;95;191;;; -126361;1;0;false;false;;;;;; -126362;3;0;false;false;63;95;191;;; -126365;1;0;false;false;;;;;; -126366;2;0;false;false;63;95;191;;; -126368;1;0;false;false;;;;;; -126369;4;0;false;false;63;95;191;;; -126373;1;0;false;false;;;;;; -126374;2;0;false;false;63;95;191;;; -126376;1;0;false;false;;;;;; -126377;7;0;false;false;63;95;191;;; -126384;1;0;false;false;;;;;; -126385;4;0;false;false;63;95;191;;; -126389;1;0;false;false;;;;;; -126390;4;0;false;false;63;95;191;;; -126394;4;0;false;false;;;;;; -126398;1;0;false;false;63;95;191;;; -126399;1;0;false;false;;;;;; -126400;2;0;false;false;63;95;191;;; -126402;1;0;false;false;;;;;; -126403;6;0;false;false;63;95;191;;; -126409;1;0;false;false;;;;;; -126410;3;0;false;false;63;95;191;;; -126413;1;0;false;false;;;;;; -126414;10;0;false;false;63;95;191;;; -126424;1;0;false;false;;;;;; -126425;5;0;false;false;63;95;191;;; -126430;1;0;false;false;;;;;; -126431;3;0;false;false;63;95;191;;; -126434;1;0;false;false;;;;;; -126435;1;0;false;false;63;95;191;;; -126436;1;0;false;false;;;;;; -126437;5;0;false;false;63;95;191;;; -126442;3;0;false;false;;;;;; -126445;1;0;false;false;63;95;191;;; -126446;1;0;false;false;;;;;; -126447;3;0;false;false;63;95;191;;; -126450;1;0;false;false;;;;;; -126451;9;0;false;false;63;95;191;;; -126460;1;0;false;false;;;;;; -126461;4;0;false;false;63;95;191;;; -126465;1;0;false;false;;;;;; -126466;3;0;false;false;63;95;191;;; -126469;1;0;false;false;;;;;; -126470;2;0;false;false;63;95;191;;; -126472;1;0;false;false;;;;;; -126473;1;0;false;false;63;95;191;;; -126474;1;0;false;false;;;;;; -126475;6;0;false;false;63;95;191;;; -126481;1;0;false;false;;;;;; -126482;9;0;false;false;63;95;191;;; -126491;1;0;false;false;;;;;; -126492;4;0;false;false;63;95;191;;; -126496;1;0;false;false;;;;;; -126497;2;0;false;false;63;95;191;;; -126499;1;0;false;false;;;;;; -126500;2;0;false;false;63;95;191;;; -126502;1;0;false;false;;;;;; -126503;4;0;false;false;63;95;191;;; -126507;4;0;false;false;;;;;; -126511;1;0;false;false;63;95;191;;; -126512;1;0;false;false;;;;;; -126513;4;0;false;false;63;95;191;;; -126517;1;0;false;false;;;;;; -126518;5;0;false;false;63;95;191;;; -126523;1;0;false;false;;;;;; -126524;3;0;false;false;63;95;191;;; -126527;1;0;false;false;;;;;; -126528;8;0;false;false;63;95;191;;; -126536;1;0;false;false;;;;;; -126537;6;0;false;false;63;95;191;;; -126543;1;0;false;false;;;;;; -126544;4;0;false;false;63;95;191;;; -126548;1;0;false;false;;;;;; -126549;6;0;false;false;63;95;191;;; -126555;1;0;false;false;;;;;; -126556;2;0;false;false;63;95;191;;; -126558;1;0;false;false;;;;;; -126559;3;0;false;false;63;95;191;;; -126562;1;0;false;false;;;;;; -126563;1;0;false;false;63;95;191;;; -126564;1;0;false;false;;;;;; -126565;7;0;false;false;63;95;191;;; -126572;4;0;false;false;;;;;; -126576;1;0;false;false;63;95;191;;; -126577;1;0;false;false;;;;;; -126578;11;0;false;false;63;95;191;;; -126589;1;0;false;false;;;;;; -126590;5;0;false;false;63;95;191;;; -126595;3;0;false;false;;;;;; -126598;1;0;false;false;63;95;191;;; -126599;1;0;false;false;;;;;; -126600;3;0;false;false;127;127;159;;; -126603;3;0;false;false;;;;;; -126606;1;0;false;false;63;95;191;;; -126607;3;0;false;false;;;;;; -126610;1;0;false;false;63;95;191;;; -126611;1;0;false;false;;;;;; -126612;7;1;false;false;127;159;191;;; -126619;10;0;false;false;63;95;191;;; -126629;1;0;false;false;;;;;; -126630;6;0;false;false;63;95;191;;; -126636;1;0;false;false;;;;;; -126637;2;0;false;false;63;95;191;;; -126639;1;0;false;false;;;;;; -126640;3;0;false;false;63;95;191;;; -126643;1;0;false;false;;;;;; -126644;5;0;false;false;63;95;191;;; -126649;1;0;false;false;;;;;; -126650;4;0;false;false;63;95;191;;; -126654;1;0;false;false;;;;;; -126655;3;0;false;false;63;95;191;;; -126658;1;0;false;false;;;;;; -126659;2;0;false;false;63;95;191;;; -126661;1;0;false;false;;;;;; -126662;3;0;false;false;63;95;191;;; -126665;1;0;false;false;;;;;; -126666;6;0;false;false;63;95;191;;; -126672;1;0;false;false;;;;;; -126673;2;0;false;false;63;95;191;;; -126675;3;0;false;false;;;;;; -126678;1;0;false;false;63;95;191;;; -126679;2;0;false;false;;;;;; -126681;1;0;false;false;63;95;191;;; -126682;1;0;false;false;;;;;; -126683;6;0;false;false;63;95;191;;; -126689;1;0;false;false;;;;;; -126690;4;0;false;false;63;95;191;;; -126694;1;0;false;false;;;;;; -126695;2;0;false;false;63;95;191;;; -126697;1;0;false;false;;;;;; -126698;3;0;false;false;63;95;191;;; -126701;1;0;false;false;;;;;; -126702;6;0;false;false;63;95;191;;; -126708;1;0;false;false;;;;;; -126709;2;0;false;false;63;95;191;;; -126711;1;0;false;false;;;;;; -126712;2;0;false;false;63;95;191;;; -126714;1;0;false;false;;;;;; -126715;4;0;false;false;63;95;191;;; -126719;1;0;false;false;;;;;; -126720;4;0;false;false;63;95;191;;; -126724;1;0;false;false;;;;;; -126725;5;0;false;false;63;95;191;;; -126730;3;0;false;false;;;;;; -126733;1;0;false;false;63;95;191;;; -126734;1;0;false;false;;;;;; -126735;7;1;false;false;127;159;191;;; -126742;4;0;false;false;63;95;191;;; -126746;1;0;false;false;;;;;; -126747;4;0;false;false;63;95;191;;; -126751;1;0;false;false;;;;;; -126752;5;0;false;false;63;95;191;;; -126757;1;0;false;false;;;;;; -126758;4;0;false;false;63;95;191;;; -126762;1;0;false;false;;;;;; -126763;3;0;false;false;63;95;191;;; -126766;1;0;false;false;;;;;; -126767;2;0;false;false;63;95;191;;; -126769;1;0;false;false;;;;;; -126770;3;0;false;false;63;95;191;;; -126773;1;0;false;false;;;;;; -126774;4;0;false;false;63;95;191;;; -126778;1;0;false;false;;;;;; -126779;2;0;false;false;63;95;191;;; -126781;1;0;false;false;;;;;; -126782;1;0;false;false;63;95;191;;; -126783;1;0;false;false;;;;;; -126784;10;0;false;false;63;95;191;;; -126794;1;0;false;false;;;;;; -126795;2;0;false;false;63;95;191;;; -126797;4;0;false;false;;;;;; -126801;1;0;false;false;63;95;191;;; -126802;2;0;false;false;;;;;; -126804;3;0;false;false;63;95;191;;; -126807;1;0;false;false;;;;;; -126808;6;0;false;false;63;95;191;;; -126814;1;0;false;false;;;;;; -126815;2;0;false;false;63;95;191;;; -126817;1;0;false;false;;;;;; -126818;2;0;false;false;63;95;191;;; -126820;1;0;false;false;;;;;; -126821;4;0;false;false;63;95;191;;; -126825;1;0;false;false;;;;;; -126826;4;0;false;false;63;95;191;;; -126830;1;0;false;false;;;;;; -126831;5;0;false;false;63;95;191;;; -126836;3;0;false;false;;;;;; -126839;1;0;false;false;63;95;191;;; -126840;1;0;false;false;;;;;; -126841;8;1;false;false;127;159;191;;; -126849;15;0;false;false;63;95;191;;; -126864;1;0;false;false;;;;;; -126865;4;0;false;false;63;95;191;;; -126869;1;0;false;false;;;;;; -126870;3;0;false;false;63;95;191;;; -126873;1;0;false;false;;;;;; -126874;2;0;false;false;63;95;191;;; -126876;1;0;false;false;;;;;; -126877;4;0;false;false;63;95;191;;; -126881;1;0;false;false;;;;;; -126882;2;0;false;false;63;95;191;;; -126884;1;0;false;false;;;;;; -126885;7;0;false;false;63;95;191;;; -126892;1;0;false;false;;;;;; -126893;4;0;false;false;63;95;191;;; -126897;1;0;false;false;;;;;; -126898;4;0;false;false;63;95;191;;; -126902;4;0;false;false;;;;;; -126906;1;0;false;false;63;95;191;;; -126907;2;0;false;false;;;;;; -126909;3;0;false;false;63;95;191;;; -126912;1;0;false;false;;;;;; -126913;3;0;false;false;63;95;191;;; -126916;1;0;false;false;;;;;; -126917;5;0;false;false;63;95;191;;; -126922;1;0;false;false;;;;;; -126923;5;0;false;false;63;95;191;;; -126928;3;0;false;false;;;;;; -126931;2;0;false;false;63;95;191;;; -126933;2;0;false;false;;;;;; -126935;15;0;false;false;0;0;0;;; -126950;1;0;false;false;;;;;; -126951;14;0;false;false;0;0;0;;; -126965;3;1;false;false;127;0;85;;; -126968;1;0;false;false;;;;;; -126969;10;0;false;false;0;0;0;;; -126979;1;0;false;false;;;;;; -126980;3;1;false;false;127;0;85;;; -126983;1;0;false;false;;;;;; -126984;11;0;false;false;0;0;0;;; -126995;1;0;false;false;;;;;; -126996;6;0;false;false;0;0;0;;; -127002;1;0;false;false;;;;;; -127003;5;0;false;false;0;0;0;;; -127008;1;0;false;false;;;;;; -127009;1;0;false;false;0;0;0;;; -127010;3;0;false;false;;;;;; -127013;15;0;false;false;0;0;0;;; -127028;1;0;false;false;;;;;; -127029;5;0;false;false;0;0;0;;; -127034;1;0;false;false;;;;;; -127035;1;0;false;false;0;0;0;;; -127036;1;0;false;false;;;;;; -127037;4;1;false;false;127;0;85;;; -127041;1;0;false;false;0;0;0;;; -127042;6;0;false;false;;;;;; -127048;2;1;false;false;127;0;85;;; -127050;1;0;false;false;;;;;; -127051;24;0;false;false;0;0;0;;; -127075;1;0;false;false;;;;;; -127076;1;0;false;false;0;0;0;;; -127077;4;0;false;false;;;;;; -127081;5;0;false;false;0;0;0;;; -127086;1;0;false;false;;;;;; -127087;1;0;false;false;0;0;0;;; -127088;1;0;false;false;;;;;; -127089;3;1;false;false;127;0;85;;; -127092;1;0;false;false;;;;;; -127093;32;0;false;false;0;0;0;;; -127125;6;0;false;false;;;;;; -127131;2;1;false;false;127;0;85;;; -127133;1;0;false;false;;;;;; -127134;10;0;false;false;0;0;0;;; -127144;1;0;false;false;;;;;; -127145;1;0;false;false;0;0;0;;; -127146;8;0;false;false;;;;;; -127154;73;0;false;false;63;127;95;;; -127227;6;0;false;false;;;;;; -127233;3;1;false;false;127;0;85;;; -127236;1;0;false;false;;;;;; -127237;9;0;false;false;0;0;0;;; -127246;1;0;false;false;;;;;; -127247;1;0;false;false;0;0;0;;; -127248;1;0;false;false;;;;;; -127249;43;0;false;false;0;0;0;;; -127292;16;0;false;false;;;;;; -127308;12;0;false;false;0;0;0;;; -127320;1;0;false;false;;;;;; -127321;1;0;false;false;0;0;0;;; -127322;1;0;false;false;;;;;; -127323;42;0;false;false;0;0;0;;; -127365;5;0;false;false;;;;;; -127370;10;0;false;false;0;0;0;;; -127380;1;0;false;false;;;;;; -127381;1;0;false;false;0;0;0;;; -127382;1;0;false;false;;;;;; -127383;34;0;false;false;0;0;0;;; -127417;4;0;false;false;;;;;; -127421;1;0;false;false;0;0;0;;; -127422;4;0;false;false;;;;;; -127426;4;1;false;false;127;0;85;;; -127430;1;0;false;false;;;;;; -127431;1;0;false;false;0;0;0;;; -127432;5;0;false;false;;;;;; -127437;12;0;false;false;0;0;0;;; -127449;1;0;false;false;;;;;; -127450;1;0;false;false;0;0;0;;; -127451;1;0;false;false;;;;;; -127452;11;0;false;false;0;0;0;;; -127463;5;0;false;false;;;;;; -127468;10;0;false;false;0;0;0;;; -127478;1;0;false;false;;;;;; -127479;1;0;false;false;0;0;0;;; -127480;1;0;false;false;;;;;; -127481;5;0;false;false;0;0;0;;; -127486;4;0;false;false;;;;;; -127490;1;0;false;false;0;0;0;;; -127491;4;0;false;false;;;;;; -127495;26;0;false;false;0;0;0;;; -127521;1;0;false;false;;;;;; -127522;7;0;false;false;0;0;0;;; -127529;3;0;false;false;;;;;; -127532;1;0;false;false;0;0;0;;; -127533;3;0;false;false;;;;;; -127536;6;1;false;false;127;0;85;;; -127542;1;0;false;false;;;;;; -127543;6;0;false;false;0;0;0;;; -127549;3;0;false;false;;;;;; -127552;1;0;false;false;0;0;0;;; -127553;2;0;false;false;;;;;; -127555;3;0;false;false;63;95;191;;; -127558;3;0;false;false;;;;;; -127561;1;0;false;false;63;95;191;;; -127562;1;0;false;false;;;;;; -127563;7;0;false;false;63;95;191;;; -127570;1;0;false;false;;;;;; -127571;3;0;false;false;63;95;191;;; -127574;1;0;false;false;;;;;; -127575;4;0;false;false;63;95;191;;; -127579;1;0;false;false;;;;;; -127580;7;0;false;false;63;95;191;;; -127587;3;0;false;false;;;;;; -127590;1;0;false;false;63;95;191;;; -127591;1;0;false;false;;;;;; -127592;3;0;false;false;127;127;159;;; -127595;3;0;false;false;;;;;; -127598;1;0;false;false;63;95;191;;; -127599;3;0;false;false;;;;;; -127602;1;0;false;false;63;95;191;;; -127603;1;0;false;false;;;;;; -127604;8;1;false;false;127;159;191;;; -127612;4;0;false;false;63;95;191;;; -127616;1;0;false;false;;;;;; -127617;6;0;false;false;63;95;191;;; -127623;1;0;false;false;;;;;; -127624;2;0;false;false;63;95;191;;; -127626;1;0;false;false;;;;;; -127627;6;0;false;false;63;95;191;;; -127633;3;0;false;false;;;;;; -127636;1;0;false;false;63;95;191;;; -127637;1;0;false;false;;;;;; -127638;11;1;false;false;127;159;191;;; -127649;12;0;false;false;63;95;191;;; -127661;1;0;false;false;;;;;; -127662;4;0;false;false;127;127;159;;; -127666;3;0;false;false;;;;;; -127669;1;0;false;false;63;95;191;;; -127670;4;0;false;false;;;;;; -127674;4;0;false;false;127;127;159;;; -127678;21;0;false;false;63;95;191;;; -127699;1;0;false;false;;;;;; -127700;1;0;false;false;127;127;159;;; -127701;1;0;false;false;;;;;; -127702;2;0;false;false;63;95;191;;; -127704;1;0;false;false;;;;;; -127705;3;0;false;false;63;95;191;;; -127708;1;0;false;false;;;;;; -127709;8;0;false;false;63;95;191;;; -127717;1;0;false;false;;;;;; -127718;3;0;false;false;63;95;191;;; -127721;1;0;false;false;;;;;; -127722;4;0;false;false;63;95;191;;; -127726;1;0;false;false;;;;;; -127727;8;0;false;false;63;95;191;;; -127735;5;0;false;false;127;127;159;;; -127740;3;0;false;false;;;;;; -127743;1;0;false;false;63;95;191;;; -127744;4;0;false;false;;;;;; -127748;4;0;false;false;127;127;159;;; -127752;27;0;false;false;63;95;191;;; -127779;1;0;false;false;;;;;; -127780;1;0;false;false;127;127;159;;; -127781;1;0;false;false;;;;;; -127782;2;0;false;false;63;95;191;;; -127784;1;0;false;false;;;;;; -127785;3;0;false;false;63;95;191;;; -127788;1;0;false;false;;;;;; -127789;6;0;false;false;63;95;191;;; -127795;1;0;false;false;;;;;; -127796;4;0;false;false;63;95;191;;; -127800;1;0;false;false;;;;;; -127801;3;0;false;false;63;95;191;;; -127804;1;0;false;false;;;;;; -127805;6;0;false;false;63;95;191;;; -127811;1;0;false;false;;;;;; -127812;4;0;false;false;63;95;191;;; -127816;1;0;false;false;;;;;; -127817;7;0;false;false;63;95;191;;; -127824;1;0;false;false;;;;;; -127825;3;0;false;false;63;95;191;;; -127828;1;0;false;false;;;;;; -127829;8;0;false;false;63;95;191;;; -127837;5;0;false;false;127;127;159;;; -127842;3;0;false;false;;;;;; -127845;1;0;false;false;63;95;191;;; -127846;1;0;false;false;;;;;; -127847;5;0;false;false;127;127;159;;; -127852;3;0;false;false;;;;;; -127855;2;0;false;false;63;95;191;;; -127857;2;0;false;false;;;;;; -127859;6;1;false;false;127;0;85;;; -127865;1;0;false;false;;;;;; -127866;3;1;false;false;127;0;85;;; -127869;1;0;false;false;;;;;; -127870;15;0;false;false;0;0;0;;; -127885;1;0;false;false;;;;;; -127886;1;0;false;false;0;0;0;;; -127887;3;0;false;false;;;;;; -127890;14;0;false;false;0;0;0;;; -127904;3;0;false;false;;;;;; -127907;6;1;false;false;127;0;85;;; -127913;1;0;false;false;;;;;; -127914;11;0;false;false;0;0;0;;; -127925;2;0;false;false;;;;;; -127927;1;0;false;false;0;0;0;;; -127928;2;0;false;false;;;;;; -127930;3;0;false;false;63;95;191;;; -127933;3;0;false;false;;;;;; -127936;1;0;false;false;63;95;191;;; -127937;1;0;false;false;;;;;; -127938;7;0;false;false;63;95;191;;; -127945;1;0;false;false;;;;;; -127946;1;0;false;false;63;95;191;;; -127947;1;0;false;false;;;;;; -127948;9;0;false;false;63;95;191;;; -127957;1;0;false;false;;;;;; -127958;15;0;false;false;63;95;191;;; -127973;1;0;false;false;;;;;; -127974;9;0;false;false;63;95;191;;; -127983;1;0;false;false;;;;;; -127984;2;0;false;false;63;95;191;;; -127986;1;0;false;false;;;;;; -127987;7;0;false;false;63;95;191;;; -127994;1;0;false;false;;;;;; -127995;2;0;false;false;63;95;191;;; -127997;1;0;false;false;;;;;; -127998;3;0;false;false;63;95;191;;; -128001;3;0;false;false;;;;;; -128004;1;0;false;false;63;95;191;;; -128005;1;0;false;false;;;;;; -128006;4;0;false;false;63;95;191;;; -128010;1;0;false;false;;;;;; -128011;4;0;false;false;63;95;191;;; -128015;1;0;false;false;;;;;; -128016;2;0;false;false;63;95;191;;; -128018;1;0;false;false;;;;;; -128019;2;0;false;false;63;95;191;;; -128021;1;0;false;false;;;;;; -128022;4;0;false;false;63;95;191;;; -128026;1;0;false;false;;;;;; -128027;3;0;false;false;63;95;191;;; -128030;1;0;false;false;;;;;; -128031;2;0;false;false;63;95;191;;; -128033;1;0;false;false;;;;;; -128034;1;0;false;false;63;95;191;;; -128035;1;0;false;false;;;;;; -128036;4;0;false;false;63;95;191;;; -128040;1;0;false;false;;;;;; -128041;8;0;false;false;63;95;191;;; -128049;1;0;false;false;;;;;; -128050;2;0;false;false;63;95;191;;; -128052;1;0;false;false;;;;;; -128053;4;0;false;false;63;95;191;;; -128057;1;0;false;false;;;;;; -128058;5;0;false;false;63;95;191;;; -128063;4;0;false;false;;;;;; -128067;1;0;false;false;63;95;191;;; -128068;1;0;false;false;;;;;; -128069;11;0;false;false;63;95;191;;; -128080;1;0;false;false;;;;;; -128081;15;0;false;false;63;95;191;;; -128096;3;0;false;false;;;;;; -128099;1;0;false;false;63;95;191;;; -128100;1;0;false;false;;;;;; -128101;3;0;false;false;127;127;159;;; -128104;3;0;false;false;;;;;; -128107;1;0;false;false;63;95;191;;; -128108;4;0;false;false;;;;;; -128112;1;0;false;false;63;95;191;;; -128113;1;0;false;false;;;;;; -128114;7;1;false;false;127;159;191;;; -128121;7;0;false;false;63;95;191;;; -128128;1;0;false;false;;;;;; -128129;17;0;false;false;63;95;191;;; -128146;1;0;false;false;;;;;; -128147;2;0;false;false;63;95;191;;; -128149;1;0;false;false;;;;;; -128150;6;0;false;false;63;95;191;;; -128156;1;0;false;false;;;;;; -128157;3;0;false;false;63;95;191;;; -128160;1;0;false;false;;;;;; -128161;9;0;false;false;63;95;191;;; -128170;1;0;false;false;;;;;; -128171;3;0;false;false;63;95;191;;; -128174;3;0;false;false;;;;;; -128177;1;0;false;false;63;95;191;;; -128178;1;0;false;false;;;;;; -128179;8;1;false;false;127;159;191;;; -128187;1;0;false;false;63;95;191;;; -128188;1;0;false;false;;;;;; -128189;9;0;false;false;63;95;191;;; -128198;1;0;false;false;;;;;; -128199;14;0;false;false;63;95;191;;; -128213;3;0;false;false;;;;;; -128216;2;0;false;false;63;95;191;;; -128218;2;0;false;false;;;;;; -128220;9;0;false;false;0;0;0;;; -128229;1;0;false;false;;;;;; -128230;30;0;false;false;0;0;0;;; -128260;1;0;false;false;;;;;; -128261;8;0;false;false;0;0;0;;; -128269;1;0;false;false;;;;;; -128270;1;0;false;false;0;0;0;;; -128271;3;0;false;false;;;;;; -128274;9;0;false;false;0;0;0;;; -128283;1;0;false;false;;;;;; -128284;10;0;false;false;0;0;0;;; -128294;9;0;false;false;;;;;; -128303;2;1;false;false;127;0;85;;; -128305;1;0;false;false;;;;;; -128306;10;0;false;false;0;0;0;;; -128316;1;0;false;false;;;;;; -128317;1;0;false;false;0;0;0;;; -128318;4;0;false;false;;;;;; -128322;9;0;false;false;0;0;0;;; -128331;1;0;false;false;;;;;; -128332;1;0;false;false;0;0;0;;; -128333;1;0;false;false;;;;;; -128334;3;1;false;false;127;0;85;;; -128337;1;0;false;false;;;;;; -128338;14;0;false;false;0;0;0;;; -128352;4;1;false;false;127;0;85;;; -128356;1;0;false;false;0;0;0;;; -128357;1;0;false;false;;;;;; -128358;16;0;false;false;0;0;0;;; -128374;1;0;false;false;;;;;; -128375;9;0;false;false;0;0;0;;; -128384;3;0;false;false;;;;;; -128387;1;0;false;false;0;0;0;;; -128388;3;0;false;false;;;;;; -128391;4;1;false;false;127;0;85;;; -128395;1;0;false;false;;;;;; -128396;1;0;false;false;0;0;0;;; -128397;4;0;false;false;;;;;; -128401;9;0;false;false;0;0;0;;; -128410;1;0;false;false;;;;;; -128411;1;0;false;false;0;0;0;;; -128412;1;0;false;false;;;;;; -128413;3;1;false;false;127;0;85;;; -128416;1;0;false;false;;;;;; -128417;18;0;false;false;0;0;0;;; -128435;4;1;false;false;127;0;85;;; -128439;1;0;false;false;0;0;0;;; -128440;1;0;false;false;;;;;; -128441;9;0;false;false;0;0;0;;; -128450;3;0;false;false;;;;;; -128453;1;0;false;false;0;0;0;;; -128454;3;0;false;false;;;;;; -128457;6;1;false;false;127;0;85;;; -128463;1;0;false;false;;;;;; -128464;10;0;false;false;0;0;0;;; -128474;2;0;false;false;;;;;; -128476;1;0;false;false;0;0;0;;; -128477;2;0;false;false;;;;;; -128479;3;0;false;false;63;95;191;;; -128482;3;0;false;false;;;;;; -128485;1;0;false;false;63;95;191;;; -128486;1;0;false;false;;;;;; -128487;7;0;false;false;63;95;191;;; -128494;1;0;false;false;;;;;; -128495;3;0;false;false;63;95;191;;; -128498;1;0;false;false;;;;;; -128499;4;0;false;false;63;95;191;;; -128503;1;0;false;false;;;;;; -128504;5;0;false;false;63;95;191;;; -128509;1;0;false;false;;;;;; -128510;4;0;false;false;63;95;191;;; -128514;1;0;false;false;;;;;; -128515;3;0;false;false;63;95;191;;; -128518;1;0;false;false;;;;;; -128519;3;0;false;false;63;95;191;;; -128522;1;0;false;false;;;;;; -128523;5;0;false;false;63;95;191;;; -128528;1;0;false;false;;;;;; -128529;4;0;false;false;63;95;191;;; -128533;1;0;false;false;;;;;; -128534;2;0;false;false;63;95;191;;; -128536;1;0;false;false;;;;;; -128537;4;0;false;false;63;95;191;;; -128541;1;0;false;false;;;;;; -128542;2;0;false;false;63;95;191;;; -128544;1;0;false;false;;;;;; -128545;5;0;false;false;63;95;191;;; -128550;1;0;false;false;;;;;; -128551;2;0;false;false;63;95;191;;; -128553;4;0;false;false;;;;;; -128557;1;0;false;false;63;95;191;;; -128558;1;0;false;false;;;;;; -128559;5;0;false;false;63;95;191;;; -128564;1;0;false;false;;;;;; -128565;2;0;false;false;63;95;191;;; -128567;1;0;false;false;;;;;; -128568;5;0;false;false;63;95;191;;; -128573;1;0;false;false;;;;;; -128574;2;0;false;false;63;95;191;;; -128576;1;0;false;false;;;;;; -128577;1;0;false;false;63;95;191;;; -128578;1;0;false;false;;;;;; -128579;17;0;false;false;63;95;191;;; -128596;1;0;false;false;;;;;; -128597;3;0;false;false;63;95;191;;; -128600;1;0;false;false;;;;;; -128601;2;0;false;false;63;95;191;;; -128603;1;0;false;false;;;;;; -128604;4;0;false;false;63;95;191;;; -128608;1;0;false;false;;;;;; -128609;3;0;false;false;63;95;191;;; -128612;1;0;false;false;;;;;; -128613;3;0;false;false;63;95;191;;; -128616;1;0;false;false;;;;;; -128617;3;0;false;false;63;95;191;;; -128620;1;0;false;false;;;;;; -128621;7;0;false;false;63;95;191;;; -128628;4;0;false;false;;;;;; -128632;1;0;false;false;63;95;191;;; -128633;1;0;false;false;;;;;; -128634;3;0;false;false;63;95;191;;; -128637;1;0;false;false;;;;;; -128638;22;0;false;false;63;95;191;;; -128660;1;0;false;false;;;;;; -128661;5;0;false;false;63;95;191;;; -128666;1;0;false;false;;;;;; -128667;4;0;false;false;63;95;191;;; -128671;1;0;false;false;;;;;; -128672;2;0;false;false;63;95;191;;; -128674;1;0;false;false;;;;;; -128675;11;0;false;false;63;95;191;;; -128686;1;0;false;false;;;;;; -128687;2;0;false;false;63;95;191;;; -128689;1;0;false;false;;;;;; -128690;2;0;false;false;63;95;191;;; -128692;1;0;false;false;;;;;; -128693;5;0;false;false;63;95;191;;; -128698;4;0;false;false;;;;;; -128702;1;0;false;false;63;95;191;;; -128703;1;0;false;false;;;;;; -128704;6;0;false;false;63;95;191;;; -128710;3;0;false;false;;;;;; -128713;1;0;false;false;63;95;191;;; -128714;1;0;false;false;;;;;; -128715;3;0;false;false;127;127;159;;; -128718;3;0;false;false;;;;;; -128721;1;0;false;false;63;95;191;;; -128722;4;0;false;false;;;;;; -128726;1;0;false;false;63;95;191;;; -128727;1;0;false;false;;;;;; -128728;7;1;false;false;127;159;191;;; -128735;10;0;false;false;63;95;191;;; -128745;1;0;false;false;;;;;; -128746;6;0;false;false;63;95;191;;; -128752;1;0;false;false;;;;;; -128753;2;0;false;false;63;95;191;;; -128755;1;0;false;false;;;;;; -128756;3;0;false;false;63;95;191;;; -128759;1;0;false;false;;;;;; -128760;4;0;false;false;63;95;191;;; -128764;1;0;false;false;;;;;; -128765;5;0;false;false;63;95;191;;; -128770;1;0;false;false;;;;;; -128771;8;0;false;false;63;95;191;;; -128779;1;0;false;false;;;;;; -128780;2;0;false;false;63;95;191;;; -128782;1;0;false;false;;;;;; -128783;3;0;false;false;63;95;191;;; -128786;1;0;false;false;;;;;; -128787;5;0;false;false;63;95;191;;; -128792;1;0;false;false;;;;;; -128793;2;0;false;false;63;95;191;;; -128795;4;0;false;false;;;;;; -128799;1;0;false;false;63;95;191;;; -128800;2;0;false;false;;;;;; -128802;3;0;false;false;63;95;191;;; -128805;1;0;false;false;;;;;; -128806;8;0;false;false;63;95;191;;; -128814;3;0;false;false;;;;;; -128817;1;0;false;false;63;95;191;;; -128818;1;0;false;false;;;;;; -128819;7;1;false;false;127;159;191;;; -128826;4;0;false;false;63;95;191;;; -128830;1;0;false;false;;;;;; -128831;4;0;false;false;63;95;191;;; -128835;1;0;false;false;;;;;; -128836;2;0;false;false;63;95;191;;; -128838;1;0;false;false;;;;;; -128839;3;0;false;false;63;95;191;;; -128842;1;0;false;false;;;;;; -128843;4;0;false;false;63;95;191;;; -128847;1;0;false;false;;;;;; -128848;6;0;false;false;63;95;191;;; -128854;1;0;false;false;;;;;; -128855;3;0;false;false;63;95;191;;; -128858;3;0;false;false;;;;;; -128861;1;0;false;false;63;95;191;;; -128862;1;0;false;false;;;;;; -128863;8;1;false;false;127;159;191;;; -128871;4;0;false;false;63;95;191;;; -128875;1;0;false;false;;;;;; -128876;5;0;false;false;63;95;191;;; -128881;1;0;false;false;;;;;; -128882;4;0;false;false;63;95;191;;; -128886;1;0;false;false;;;;;; -128887;3;0;false;false;63;95;191;;; -128890;1;0;false;false;;;;;; -128891;3;0;false;false;63;95;191;;; -128894;1;0;false;false;;;;;; -128895;5;0;false;false;63;95;191;;; -128900;1;0;false;false;;;;;; -128901;5;0;false;false;63;95;191;;; -128906;1;0;false;false;;;;;; -128907;6;0;false;false;63;95;191;;; -128913;1;0;false;false;;;;;; -128914;3;0;false;false;63;95;191;;; -128917;1;0;false;false;;;;;; -128918;5;0;false;false;63;95;191;;; -128923;1;0;false;false;;;;;; -128924;6;0;false;false;63;95;191;;; -128930;4;0;false;false;;;;;; -128934;1;0;false;false;63;95;191;;; -128935;2;0;false;false;;;;;; -128937;4;0;false;false;63;95;191;;; -128941;1;0;false;false;;;;;; -128942;5;0;false;false;63;95;191;;; -128947;1;0;false;false;;;;;; -128948;3;0;false;false;63;95;191;;; -128951;1;0;false;false;;;;;; -128952;3;0;false;false;63;95;191;;; -128955;1;0;false;false;;;;;; -128956;5;0;false;false;63;95;191;;; -128961;1;0;false;false;;;;;; -128962;4;0;false;false;63;95;191;;; -128966;1;0;false;false;;;;;; -128967;3;0;false;false;63;95;191;;; -128970;3;0;false;false;;;;;; -128973;2;0;false;false;63;95;191;;; -128975;2;0;false;false;;;;;; -128977;15;0;false;false;0;0;0;;; -128992;1;0;false;false;;;;;; -128993;17;0;false;false;0;0;0;;; -129010;3;1;false;false;127;0;85;;; -129013;1;0;false;false;;;;;; -129014;11;0;false;false;0;0;0;;; -129025;1;0;false;false;;;;;; -129026;6;0;false;false;0;0;0;;; -129032;1;0;false;false;;;;;; -129033;5;0;false;false;0;0;0;;; -129038;1;0;false;false;;;;;; -129039;1;0;false;false;0;0;0;;; -129040;3;0;false;false;;;;;; -129043;6;1;false;false;127;0;85;;; -129049;1;0;false;false;;;;;; -129050;27;0;false;false;0;0;0;;; -129077;1;0;false;false;;;;;; -129078;11;0;false;false;0;0;0;;; -129089;1;0;false;false;;;;;; -129090;6;0;false;false;0;0;0;;; -129096;2;0;false;false;;;;;; -129098;1;0;false;false;0;0;0;;; -129099;2;0;false;false;;;;;; -129101;3;0;false;false;63;95;191;;; -129104;3;0;false;false;;;;;; -129107;1;0;false;false;63;95;191;;; -129108;1;0;false;false;;;;;; -129109;7;0;false;false;63;95;191;;; -129116;1;0;false;false;;;;;; -129117;3;0;false;false;63;95;191;;; -129120;1;0;false;false;;;;;; -129121;2;0;false;false;63;95;191;;; -129123;1;0;false;false;;;;;; -129124;1;0;false;false;63;95;191;;; -129125;1;0;false;false;;;;;; -129126;8;0;false;false;63;95;191;;; -129134;1;0;false;false;;;;;; -129135;2;0;false;false;63;95;191;;; -129137;1;0;false;false;;;;;; -129138;3;0;false;false;63;95;191;;; -129141;1;0;false;false;;;;;; -129142;5;0;false;false;63;95;191;;; -129147;1;0;false;false;;;;;; -129148;4;0;false;false;63;95;191;;; -129152;1;0;false;false;;;;;; -129153;6;0;false;false;63;95;191;;; -129159;1;0;false;false;;;;;; -129160;2;0;false;false;63;95;191;;; -129162;1;0;false;false;;;;;; -129163;3;0;false;false;63;95;191;;; -129166;1;0;false;false;;;;;; -129167;9;0;false;false;63;95;191;;; -129176;4;0;false;false;;;;;; -129180;1;0;false;false;63;95;191;;; -129181;1;0;false;false;;;;;; -129182;8;0;false;false;63;95;191;;; -129190;1;0;false;false;;;;;; -129191;3;0;false;false;63;95;191;;; -129194;1;0;false;false;;;;;; -129195;2;0;false;false;63;95;191;;; -129197;1;0;false;false;;;;;; -129198;3;0;false;false;63;95;191;;; -129201;1;0;false;false;;;;;; -129202;9;0;false;false;63;95;191;;; -129211;1;0;false;false;;;;;; -129212;6;0;false;false;63;95;191;;; -129218;1;0;false;false;;;;;; -129219;2;0;false;false;63;95;191;;; -129221;1;0;false;false;;;;;; -129222;3;0;false;false;63;95;191;;; -129225;1;0;false;false;;;;;; -129226;5;0;false;false;63;95;191;;; -129231;1;0;false;false;;;;;; -129232;3;0;false;false;63;95;191;;; -129235;1;0;false;false;;;;;; -129236;5;0;false;false;63;95;191;;; -129241;1;0;false;false;;;;;; -129242;2;0;false;false;63;95;191;;; -129244;4;0;false;false;;;;;; -129248;1;0;false;false;63;95;191;;; -129249;1;0;false;false;;;;;; -129250;8;0;false;false;63;95;191;;; -129258;1;0;false;false;;;;;; -129259;2;0;false;false;63;95;191;;; -129261;1;0;false;false;;;;;; -129262;3;0;false;false;63;95;191;;; -129265;1;0;false;false;;;;;; -129266;5;0;false;false;63;95;191;;; -129271;1;0;false;false;;;;;; -129272;4;0;false;false;63;95;191;;; -129276;1;0;false;false;;;;;; -129277;6;0;false;false;63;95;191;;; -129283;1;0;false;false;;;;;; -129284;2;0;false;false;63;95;191;;; -129286;1;0;false;false;;;;;; -129287;3;0;false;false;63;95;191;;; -129290;1;0;false;false;;;;;; -129291;6;0;false;false;63;95;191;;; -129297;1;0;false;false;;;;;; -129298;6;0;false;false;63;95;191;;; -129304;1;0;false;false;;;;;; -129305;5;0;false;false;63;95;191;;; -129310;3;0;false;false;;;;;; -129313;1;0;false;false;63;95;191;;; -129314;1;0;false;false;;;;;; -129315;3;0;false;false;127;127;159;;; -129318;3;0;false;false;;;;;; -129321;1;0;false;false;63;95;191;;; -129322;3;0;false;false;;;;;; -129325;1;0;false;false;63;95;191;;; -129326;1;0;false;false;;;;;; -129327;7;1;false;false;127;159;191;;; -129334;6;0;false;false;63;95;191;;; -129340;1;0;false;false;;;;;; -129341;6;0;false;false;63;95;191;;; -129347;1;0;false;false;;;;;; -129348;8;0;false;false;63;95;191;;; -129356;1;0;false;false;;;;;; -129357;2;0;false;false;63;95;191;;; -129359;1;0;false;false;;;;;; -129360;3;0;false;false;63;95;191;;; -129363;1;0;false;false;;;;;; -129364;5;0;false;false;63;95;191;;; -129369;1;0;false;false;;;;;; -129370;2;0;false;false;63;95;191;;; -129372;1;0;false;false;;;;;; -129373;3;0;false;false;63;95;191;;; -129376;1;0;false;false;;;;;; -129377;8;0;false;false;63;95;191;;; -129385;4;0;false;false;;;;;; -129389;1;0;false;false;63;95;191;;; -129390;2;0;false;false;;;;;; -129392;1;0;false;false;63;95;191;;; -129393;1;0;false;false;;;;;; -129394;29;0;false;false;63;95;191;;; -129423;1;0;false;false;;;;;; -129424;1;0;false;false;63;95;191;;; -129425;1;0;false;false;;;;;; -129426;8;1;false;false;127;159;191;;; -129434;2;0;false;false;63;95;191;;; -129436;1;0;false;false;;;;;; -129437;1;0;false;false;63;95;191;;; -129438;1;0;false;false;;;;;; -129439;8;0;false;false;63;95;191;;; -129447;1;0;false;false;;;;;; -129448;2;0;false;false;63;95;191;;; -129450;1;0;false;false;;;;;; -129451;3;0;false;false;63;95;191;;; -129454;1;0;false;false;;;;;; -129455;5;0;false;false;63;95;191;;; -129460;1;0;false;false;;;;;; -129461;4;0;false;false;63;95;191;;; -129465;1;0;false;false;;;;;; -129466;6;0;false;false;63;95;191;;; -129472;1;0;false;false;;;;;; -129473;2;0;false;false;63;95;191;;; -129475;1;0;false;false;;;;;; -129476;3;0;false;false;63;95;191;;; -129479;1;0;false;false;;;;;; -129480;9;0;false;false;63;95;191;;; -129489;4;0;false;false;;;;;; -129493;1;0;false;false;63;95;191;;; -129494;2;0;false;false;;;;;; -129496;8;0;false;false;63;95;191;;; -129504;1;0;false;false;;;;;; -129505;3;0;false;false;63;95;191;;; -129508;1;0;false;false;;;;;; -129509;2;0;false;false;63;95;191;;; -129511;1;0;false;false;;;;;; -129512;3;0;false;false;63;95;191;;; -129515;1;0;false;false;;;;;; -129516;9;0;false;false;63;95;191;;; -129525;1;0;false;false;;;;;; -129526;6;0;false;false;63;95;191;;; -129532;1;0;false;false;;;;;; -129533;2;0;false;false;63;95;191;;; -129535;1;0;false;false;;;;;; -129536;3;0;false;false;63;95;191;;; -129539;1;0;false;false;;;;;; -129540;5;0;false;false;63;95;191;;; -129545;3;0;false;false;;;;;; -129548;1;0;false;false;63;95;191;;; -129549;1;0;false;false;;;;;; -129550;11;1;false;false;127;159;191;;; -129561;12;0;false;false;63;95;191;;; -129573;1;0;false;false;;;;;; -129574;4;0;false;false;127;127;159;;; -129578;3;0;false;false;;;;;; -129581;1;0;false;false;63;95;191;;; -129582;4;0;false;false;;;;;; -129586;4;0;false;false;127;127;159;;; -129590;21;0;false;false;63;95;191;;; -129611;1;0;false;false;;;;;; -129612;1;0;false;false;127;127;159;;; -129613;1;0;false;false;;;;;; -129614;2;0;false;false;63;95;191;;; -129616;1;0;false;false;;;;;; -129617;3;0;false;false;63;95;191;;; -129620;1;0;false;false;;;;;; -129621;8;0;false;false;63;95;191;;; -129629;1;0;false;false;;;;;; -129630;3;0;false;false;63;95;191;;; -129633;1;0;false;false;;;;;; -129634;4;0;false;false;63;95;191;;; -129638;1;0;false;false;;;;;; -129639;8;0;false;false;63;95;191;;; -129647;5;0;false;false;127;127;159;;; -129652;3;0;false;false;;;;;; -129655;1;0;false;false;63;95;191;;; -129656;4;0;false;false;;;;;; -129660;4;0;false;false;127;127;159;;; -129664;27;0;false;false;63;95;191;;; -129691;1;0;false;false;;;;;; -129692;1;0;false;false;127;127;159;;; -129693;1;0;false;false;;;;;; -129694;2;0;false;false;63;95;191;;; -129696;1;0;false;false;;;;;; -129697;3;0;false;false;63;95;191;;; -129700;1;0;false;false;;;;;; -129701;6;0;false;false;63;95;191;;; -129707;1;0;false;false;;;;;; -129708;4;0;false;false;63;95;191;;; -129712;1;0;false;false;;;;;; -129713;3;0;false;false;63;95;191;;; -129716;1;0;false;false;;;;;; -129717;6;0;false;false;63;95;191;;; -129723;1;0;false;false;;;;;; -129724;4;0;false;false;63;95;191;;; -129728;1;0;false;false;;;;;; -129729;7;0;false;false;63;95;191;;; -129736;1;0;false;false;;;;;; -129737;3;0;false;false;63;95;191;;; -129740;1;0;false;false;;;;;; -129741;8;0;false;false;63;95;191;;; -129749;5;0;false;false;127;127;159;;; -129754;3;0;false;false;;;;;; -129757;1;0;false;false;63;95;191;;; -129758;1;0;false;false;;;;;; -129759;5;0;false;false;127;127;159;;; -129764;3;0;false;false;;;;;; -129767;1;0;false;false;63;95;191;;; -129768;1;0;false;false;;;;;; -129769;11;1;false;false;127;159;191;;; -129780;24;0;false;false;63;95;191;;; -129804;1;0;false;false;;;;;; -129805;4;0;false;false;127;127;159;;; -129809;3;0;false;false;;;;;; -129812;1;0;false;false;63;95;191;;; -129813;3;0;false;false;;;;;; -129816;4;0;false;false;127;127;159;;; -129820;19;0;false;false;63;95;191;;; -129839;1;0;false;false;;;;;; -129840;4;0;false;false;63;95;191;;; -129844;1;0;false;false;;;;;; -129845;3;0;false;false;63;95;191;;; -129848;1;0;false;false;;;;;; -129849;6;0;false;false;63;95;191;;; -129855;1;0;false;false;;;;;; -129856;2;0;false;false;63;95;191;;; -129858;1;0;false;false;;;;;; -129859;7;0;false;false;63;95;191;;; -129866;1;0;false;false;;;;;; -129867;3;0;false;false;63;95;191;;; -129870;1;0;false;false;;;;;; -129871;5;0;false;false;63;95;191;;; -129876;1;0;false;false;;;;;; -129877;5;0;false;false;63;95;191;;; -129882;1;0;false;false;;;;;; -129883;9;0;false;false;63;95;191;;; -129892;1;0;false;false;;;;;; -129893;15;0;false;false;63;95;191;;; -129908;5;0;false;false;127;127;159;;; -129913;4;0;false;false;;;;;; -129917;1;0;false;false;63;95;191;;; -129918;1;0;false;false;;;;;; -129919;5;0;false;false;127;127;159;;; -129924;3;0;false;false;;;;;; -129927;2;0;false;false;63;95;191;;; -129929;2;0;false;false;;;;;; -129931;6;1;false;false;127;0;85;;; -129937;1;0;false;false;;;;;; -129938;5;0;false;false;0;0;0;;; -129943;1;0;false;false;;;;;; -129944;20;0;false;false;0;0;0;;; -129964;3;1;false;false;127;0;85;;; -129967;1;0;false;false;;;;;; -129968;7;0;false;false;0;0;0;;; -129975;1;0;false;false;;;;;; -129976;1;0;false;false;0;0;0;;; -129977;3;0;false;false;;;;;; -129980;14;0;false;false;0;0;0;;; -129994;3;0;false;false;;;;;; -129997;2;1;false;false;127;0;85;;; -129999;1;0;false;false;;;;;; -130000;7;0;false;false;0;0;0;;; -130007;1;0;false;false;;;;;; -130008;1;0;false;false;0;0;0;;; -130009;1;0;false;false;;;;;; -130010;1;0;false;false;0;0;0;;; -130011;1;0;false;false;;;;;; -130012;2;0;false;false;0;0;0;;; -130014;1;0;false;false;;;;;; -130015;6;0;false;false;0;0;0;;; -130021;1;0;false;false;;;;;; -130022;1;0;false;false;0;0;0;;; -130023;1;0;false;false;;;;;; -130024;15;0;false;false;0;0;0;;; -130039;1;0;false;false;;;;;; -130040;1;0;false;false;0;0;0;;; -130041;4;0;false;false;;;;;; -130045;35;0;false;false;0;0;0;;; -130080;5;0;false;false;;;;;; -130085;1;0;false;false;0;0;0;;; -130086;3;0;false;false;;;;;; -130089;3;1;false;false;127;0;85;;; -130092;1;0;false;false;;;;;; -130093;4;0;false;false;0;0;0;;; -130097;1;0;false;false;;;;;; -130098;1;0;false;false;0;0;0;;; -130099;1;0;false;false;;;;;; -130100;32;0;false;false;0;0;0;;; -130132;3;0;false;false;;;;;; -130135;3;1;false;false;127;0;85;;; -130138;1;0;false;false;;;;;; -130139;10;0;false;false;0;0;0;;; -130149;1;0;false;false;;;;;; -130150;1;0;false;false;0;0;0;;; -130151;1;0;false;false;;;;;; -130152;30;0;false;false;0;0;0;;; -130182;3;0;false;false;;;;;; -130185;6;0;false;false;0;0;0;;; -130191;1;0;false;false;;;;;; -130192;11;0;false;false;0;0;0;;; -130203;1;0;false;false;;;;;; -130204;1;0;false;false;0;0;0;;; -130205;1;0;false;false;;;;;; -130206;22;0;false;false;0;0;0;;; -130228;3;0;false;false;;;;;; -130231;3;1;false;false;127;0;85;;; -130234;1;0;false;false;;;;;; -130235;1;0;false;false;0;0;0;;; -130236;1;0;false;false;;;;;; -130237;1;0;false;false;0;0;0;;; -130238;1;0;false;false;;;;;; -130239;25;0;false;false;0;0;0;;; -130264;1;0;false;false;;;;;; -130265;5;0;false;false;0;0;0;;; -130270;1;0;false;false;;;;;; -130271;6;0;false;false;0;0;0;;; -130277;1;0;false;false;;;;;; -130278;1;0;false;false;0;0;0;;; -130279;1;0;false;false;;;;;; -130280;12;0;false;false;0;0;0;;; -130292;3;0;false;false;;;;;; -130295;3;1;false;false;127;0;85;;; -130298;1;0;false;false;;;;;; -130299;1;0;false;false;0;0;0;;; -130300;1;0;false;false;;;;;; -130301;1;0;false;false;0;0;0;;; -130302;1;0;false;false;;;;;; -130303;4;0;false;false;0;0;0;;; -130307;1;0;false;false;;;;;; -130308;1;0;false;false;0;0;0;;; -130309;1;0;false;false;;;;;; -130310;10;0;false;false;0;0;0;;; -130320;1;0;false;false;;;;;; -130321;1;0;false;false;0;0;0;;; -130322;1;0;false;false;;;;;; -130323;21;0;false;false;0;0;0;;; -130344;6;0;false;false;;;;;; -130350;6;1;false;false;127;0;85;;; -130356;1;0;false;false;;;;;; -130357;3;1;false;false;127;0;85;;; -130360;1;0;false;false;;;;;; -130361;8;0;false;false;0;0;0;;; -130369;1;0;false;false;;;;;; -130370;3;0;false;false;0;0;0;;; -130373;2;0;false;false;;;;;; -130375;1;0;false;false;0;0;0;;; -130376;2;0;false;false;;;;;; -130378;3;0;false;false;63;95;191;;; -130381;3;0;false;false;;;;;; -130384;1;0;false;false;63;95;191;;; -130385;1;0;false;false;;;;;; -130386;7;0;false;false;63;95;191;;; -130393;1;0;false;false;;;;;; -130394;3;0;false;false;63;95;191;;; -130397;1;0;false;false;;;;;; -130398;9;0;false;false;63;95;191;;; -130407;1;0;false;false;;;;;; -130408;6;0;false;false;63;95;191;;; -130414;1;0;false;false;;;;;; -130415;2;0;false;false;63;95;191;;; -130417;1;0;false;false;;;;;; -130418;3;0;false;false;63;95;191;;; -130421;1;0;false;false;;;;;; -130422;5;0;false;false;63;95;191;;; -130427;1;0;false;false;;;;;; -130428;9;0;false;false;63;95;191;;; -130437;1;0;false;false;;;;;; -130438;2;0;false;false;63;95;191;;; -130440;1;0;false;false;;;;;; -130441;3;0;false;false;63;95;191;;; -130444;1;0;false;false;;;;;; -130445;5;0;false;false;63;95;191;;; -130450;1;0;false;false;;;;;; -130451;5;0;false;false;63;95;191;;; -130456;3;0;false;false;;;;;; -130459;1;0;false;false;63;95;191;;; -130460;1;0;false;false;;;;;; -130461;3;0;false;false;127;127;159;;; -130464;3;0;false;false;;;;;; -130467;1;0;false;false;63;95;191;;; -130468;3;0;false;false;;;;;; -130471;1;0;false;false;63;95;191;;; -130472;1;0;false;false;;;;;; -130473;7;1;false;false;127;159;191;;; -130480;9;0;false;false;63;95;191;;; -130489;1;0;false;false;;;;;; -130490;5;0;false;false;63;95;191;;; -130495;1;0;false;false;;;;;; -130496;2;0;false;false;63;95;191;;; -130498;1;0;false;false;;;;;; -130499;3;0;false;false;63;95;191;;; -130502;1;0;false;false;;;;;; -130503;5;0;false;false;63;95;191;;; -130508;1;0;false;false;;;;;; -130509;1;0;false;false;63;95;191;;; -130510;1;0;false;false;;;;;; -130511;5;0;false;false;63;95;191;;; -130516;1;0;false;false;;;;;; -130517;8;0;false;false;63;95;191;;; -130525;1;0;false;false;;;;;; -130526;2;0;false;false;63;95;191;;; -130528;1;0;false;false;;;;;; -130529;3;0;false;false;63;95;191;;; -130532;1;0;false;false;;;;;; -130533;5;0;false;false;63;95;191;;; -130538;4;0;false;false;;;;;; -130542;1;0;false;false;63;95;191;;; -130543;2;0;false;false;;;;;; -130545;4;0;false;false;63;95;191;;; -130549;1;0;false;false;;;;;; -130550;2;0;false;false;63;95;191;;; -130552;1;0;false;false;;;;;; -130553;3;0;false;false;63;95;191;;; -130556;1;0;false;false;;;;;; -130557;8;0;false;false;63;95;191;;; -130565;1;0;false;false;;;;;; -130566;1;0;false;false;63;95;191;;; -130567;1;0;false;false;;;;;; -130568;39;0;false;false;63;95;191;;; -130607;1;0;false;false;;;;;; -130608;1;0;false;false;63;95;191;;; -130609;2;0;false;false;;;;;; -130611;9;0;false;false;63;95;191;;; -130620;1;0;false;false;;;;;; -130621;3;0;false;false;63;95;191;;; -130624;1;0;false;false;;;;;; -130625;6;0;false;false;63;95;191;;; -130631;1;0;false;false;;;;;; -130632;2;0;false;false;63;95;191;;; -130634;1;0;false;false;;;;;; -130635;1;0;false;false;63;95;191;;; -130636;3;0;false;false;;;;;; -130639;1;0;false;false;63;95;191;;; -130640;1;0;false;false;;;;;; -130641;8;1;false;false;127;159;191;;; -130649;6;0;false;false;63;95;191;;; -130655;1;0;false;false;;;;;; -130656;6;0;false;false;63;95;191;;; -130662;1;0;false;false;;;;;; -130663;2;0;false;false;63;95;191;;; -130665;1;0;false;false;;;;;; -130666;3;0;false;false;63;95;191;;; -130669;1;0;false;false;;;;;; -130670;5;0;false;false;63;95;191;;; -130675;1;0;false;false;;;;;; -130676;9;0;false;false;63;95;191;;; -130685;1;0;false;false;;;;;; -130686;2;0;false;false;63;95;191;;; -130688;1;0;false;false;;;;;; -130689;3;0;false;false;63;95;191;;; -130692;1;0;false;false;;;;;; -130693;5;0;false;false;63;95;191;;; -130698;1;0;false;false;;;;;; -130699;8;0;false;false;63;95;191;;; -130707;1;0;false;false;;;;;; -130708;2;0;false;false;63;95;191;;; -130710;3;0;false;false;;;;;; -130713;1;0;false;false;63;95;191;;; -130714;2;0;false;false;;;;;; -130716;3;0;false;false;63;95;191;;; -130719;1;0;false;false;;;;;; -130720;9;0;false;false;63;95;191;;; -130729;1;0;false;false;;;;;; -130730;2;0;false;false;63;95;191;;; -130732;1;0;false;false;;;;;; -130733;3;0;false;false;63;95;191;;; -130736;1;0;false;false;;;;;; -130737;9;0;false;false;63;95;191;;; -130746;1;0;false;false;;;;;; -130747;3;0;false;false;63;95;191;;; -130750;1;0;false;false;;;;;; -130751;5;0;false;false;63;95;191;;; -130756;1;0;false;false;;;;;; -130757;9;0;false;false;63;95;191;;; -130766;1;0;false;false;;;;;; -130767;2;0;false;false;63;95;191;;; -130769;1;0;false;false;;;;;; -130770;3;0;false;false;63;95;191;;; -130773;1;0;false;false;;;;;; -130774;8;0;false;false;63;95;191;;; -130782;1;0;false;false;;;;;; -130783;2;0;false;false;63;95;191;;; -130785;3;0;false;false;;;;;; -130788;1;0;false;false;63;95;191;;; -130789;1;0;false;false;;;;;; -130790;2;0;false;false;63;95;191;;; -130792;1;0;false;false;;;;;; -130793;6;0;false;false;63;95;191;;; -130799;1;0;false;false;;;;;; -130800;2;0;false;false;63;95;191;;; -130802;5;0;false;false;;;;;; -130807;1;0;false;false;63;95;191;;; -130808;2;0;false;false;;;;;; -130810;4;0;false;false;63;95;191;;; -130814;1;0;false;false;;;;;; -130815;5;0;false;false;63;95;191;;; -130820;1;0;false;false;;;;;; -130821;3;0;false;false;63;95;191;;; -130824;1;0;false;false;;;;;; -130825;3;0;false;false;63;95;191;;; -130828;1;0;false;false;;;;;; -130829;3;0;false;false;63;95;191;;; -130832;1;0;false;false;;;;;; -130833;6;0;false;false;63;95;191;;; -130839;1;0;false;false;;;;;; -130840;18;0;false;false;63;95;191;;; -130858;1;0;false;false;;;;;; -130859;2;0;false;false;63;95;191;;; -130861;1;0;false;false;;;;;; -130862;1;0;false;false;63;95;191;;; -130863;1;0;false;false;;;;;; -130864;5;0;false;false;63;95;191;;; -130869;1;0;false;false;;;;;; -130870;4;0;false;false;63;95;191;;; -130874;1;0;false;false;;;;;; -130875;4;0;false;false;63;95;191;;; -130879;4;0;false;false;;;;;; -130883;1;0;false;false;63;95;191;;; -130884;2;0;false;false;;;;;; -130886;7;0;false;false;63;95;191;;; -130893;1;0;false;false;;;;;; -130894;2;0;false;false;63;95;191;;; -130896;3;0;false;false;;;;;; -130899;1;0;false;false;63;95;191;;; -130900;1;0;false;false;;;;;; -130901;11;1;false;false;127;159;191;;; -130912;12;0;false;false;63;95;191;;; -130924;1;0;false;false;;;;;; -130925;4;0;false;false;127;127;159;;; -130929;3;0;false;false;;;;;; -130932;1;0;false;false;63;95;191;;; -130933;4;0;false;false;;;;;; -130937;4;0;false;false;127;127;159;;; -130941;21;0;false;false;63;95;191;;; -130962;1;0;false;false;;;;;; -130963;1;0;false;false;127;127;159;;; -130964;1;0;false;false;;;;;; -130965;2;0;false;false;63;95;191;;; -130967;1;0;false;false;;;;;; -130968;3;0;false;false;63;95;191;;; -130971;1;0;false;false;;;;;; -130972;8;0;false;false;63;95;191;;; -130980;1;0;false;false;;;;;; -130981;3;0;false;false;63;95;191;;; -130984;1;0;false;false;;;;;; -130985;4;0;false;false;63;95;191;;; -130989;1;0;false;false;;;;;; -130990;8;0;false;false;63;95;191;;; -130998;5;0;false;false;127;127;159;;; -131003;3;0;false;false;;;;;; -131006;1;0;false;false;63;95;191;;; -131007;4;0;false;false;;;;;; -131011;4;0;false;false;127;127;159;;; -131015;27;0;false;false;63;95;191;;; -131042;1;0;false;false;;;;;; -131043;1;0;false;false;127;127;159;;; -131044;1;0;false;false;;;;;; -131045;2;0;false;false;63;95;191;;; -131047;1;0;false;false;;;;;; -131048;3;0;false;false;63;95;191;;; -131051;1;0;false;false;;;;;; -131052;6;0;false;false;63;95;191;;; -131058;1;0;false;false;;;;;; -131059;4;0;false;false;63;95;191;;; -131063;1;0;false;false;;;;;; -131064;3;0;false;false;63;95;191;;; -131067;1;0;false;false;;;;;; -131068;6;0;false;false;63;95;191;;; -131074;1;0;false;false;;;;;; -131075;4;0;false;false;63;95;191;;; -131079;1;0;false;false;;;;;; -131080;7;0;false;false;63;95;191;;; -131087;1;0;false;false;;;;;; -131088;3;0;false;false;63;95;191;;; -131091;1;0;false;false;;;;;; -131092;8;0;false;false;63;95;191;;; -131100;5;0;false;false;127;127;159;;; -131105;3;0;false;false;;;;;; -131108;1;0;false;false;63;95;191;;; -131109;1;0;false;false;;;;;; -131110;5;0;false;false;127;127;159;;; -131115;3;0;false;false;;;;;; -131118;1;0;false;false;63;95;191;;; -131119;1;0;false;false;;;;;; -131120;11;1;false;false;127;159;191;;; -131131;24;0;false;false;63;95;191;;; -131155;1;0;false;false;;;;;; -131156;4;0;false;false;127;127;159;;; -131160;3;0;false;false;;;;;; -131163;1;0;false;false;63;95;191;;; -131164;3;0;false;false;;;;;; -131167;4;0;false;false;127;127;159;;; -131171;19;0;false;false;63;95;191;;; -131190;1;0;false;false;;;;;; -131191;4;0;false;false;63;95;191;;; -131195;1;0;false;false;;;;;; -131196;3;0;false;false;63;95;191;;; -131199;1;0;false;false;;;;;; -131200;6;0;false;false;63;95;191;;; -131206;1;0;false;false;;;;;; -131207;2;0;false;false;63;95;191;;; -131209;1;0;false;false;;;;;; -131210;7;0;false;false;63;95;191;;; -131217;1;0;false;false;;;;;; -131218;3;0;false;false;63;95;191;;; -131221;1;0;false;false;;;;;; -131222;5;0;false;false;63;95;191;;; -131227;1;0;false;false;;;;;; -131228;5;0;false;false;63;95;191;;; -131233;1;0;false;false;;;;;; -131234;9;0;false;false;63;95;191;;; -131243;1;0;false;false;;;;;; -131244;15;0;false;false;63;95;191;;; -131259;5;0;false;false;127;127;159;;; -131264;4;0;false;false;;;;;; -131268;1;0;false;false;63;95;191;;; -131269;1;0;false;false;;;;;; -131270;5;0;false;false;127;127;159;;; -131275;3;0;false;false;;;;;; -131278;1;0;false;false;63;95;191;;; -131279;1;0;false;false;;;;;; -131280;7;1;false;false;127;159;191;;; -131287;3;0;false;false;63;95;191;;; -131290;3;0;false;false;;;;;; -131293;2;0;false;false;63;95;191;;; -131295;2;0;false;false;;;;;; -131297;6;1;false;false;127;0;85;;; -131303;1;0;false;false;;;;;; -131304;3;1;false;false;127;0;85;;; -131307;1;0;false;false;;;;;; -131308;16;0;false;false;0;0;0;;; -131324;3;1;false;false;127;0;85;;; -131327;1;0;false;false;;;;;; -131328;10;0;false;false;0;0;0;;; -131338;1;0;false;false;;;;;; -131339;1;0;false;false;0;0;0;;; -131340;3;0;false;false;;;;;; -131343;14;0;false;false;0;0;0;;; -131357;6;0;false;false;;;;;; -131363;2;1;false;false;127;0;85;;; -131365;1;0;false;false;;;;;; -131366;10;0;false;false;0;0;0;;; -131376;1;0;false;false;;;;;; -131377;1;0;false;false;0;0;0;;; -131378;1;0;false;false;;;;;; -131379;1;0;false;false;0;0;0;;; -131380;1;0;false;false;;;;;; -131381;2;0;false;false;0;0;0;;; -131383;5;0;false;false;;;;;; -131388;10;0;false;false;0;0;0;;; -131398;1;0;false;false;;;;;; -131399;1;0;false;false;0;0;0;;; -131400;1;0;false;false;;;;;; -131401;1;0;false;false;0;0;0;;; -131402;1;0;false;false;;;;;; -131403;2;0;false;false;0;0;0;;; -131405;1;0;false;false;;;;;; -131406;9;0;false;false;0;0;0;;; -131415;1;0;false;false;;;;;; -131416;2;0;false;false;0;0;0;;; -131418;1;0;false;false;;;;;; -131419;31;0;false;false;0;0;0;;; -131450;1;0;false;false;;;;;; -131451;1;0;false;false;0;0;0;;; -131452;4;0;false;false;;;;;; -131456;35;0;false;false;0;0;0;;; -131491;5;0;false;false;;;;;; -131496;1;0;false;false;0;0;0;;; -131497;3;0;false;false;;;;;; -131500;6;1;false;false;127;0;85;;; -131506;1;0;false;false;;;;;; -131507;42;0;false;false;0;0;0;;; -131549;2;0;false;false;;;;;; -131551;1;0;false;false;0;0;0;;; -131552;2;0;false;false;;;;;; -131554;3;0;false;false;63;95;191;;; -131557;3;0;false;false;;;;;; -131560;1;0;false;false;63;95;191;;; -131561;1;0;false;false;;;;;; -131562;7;0;false;false;63;95;191;;; -131569;1;0;false;false;;;;;; -131570;3;0;false;false;63;95;191;;; -131573;1;0;false;false;;;;;; -131574;6;0;false;false;63;95;191;;; -131580;1;0;false;false;;;;;; -131581;2;0;false;false;63;95;191;;; -131583;1;0;false;false;;;;;; -131584;3;0;false;false;63;95;191;;; -131587;1;0;false;false;;;;;; -131588;9;0;false;false;63;95;191;;; -131597;1;0;false;false;;;;;; -131598;2;0;false;false;63;95;191;;; -131600;1;0;false;false;;;;;; -131601;3;0;false;false;63;95;191;;; -131604;1;0;false;false;;;;;; -131605;5;0;false;false;63;95;191;;; -131610;1;0;false;false;;;;;; -131611;8;0;false;false;63;95;191;;; -131619;1;0;false;false;;;;;; -131620;8;0;false;false;63;95;191;;; -131628;4;0;false;false;;;;;; -131632;1;0;false;false;63;95;191;;; -131633;1;0;false;false;;;;;; -131634;2;0;false;false;63;95;191;;; -131636;1;0;false;false;;;;;; -131637;3;0;false;false;63;95;191;;; -131640;1;0;false;false;;;;;; -131641;5;0;false;false;63;95;191;;; -131646;1;0;false;false;;;;;; -131647;9;0;false;false;63;95;191;;; -131656;1;0;false;false;;;;;; -131657;2;0;false;false;63;95;191;;; -131659;1;0;false;false;;;;;; -131660;3;0;false;false;63;95;191;;; -131663;1;0;false;false;;;;;; -131664;9;0;false;false;63;95;191;;; -131673;3;0;false;false;;;;;; -131676;1;0;false;false;63;95;191;;; -131677;1;0;false;false;;;;;; -131678;3;0;false;false;63;95;191;;; -131681;1;0;false;false;;;;;; -131682;6;0;false;false;63;95;191;;; -131688;1;0;false;false;;;;;; -131689;5;0;false;false;63;95;191;;; -131694;1;0;false;false;;;;;; -131695;8;0;false;false;63;95;191;;; -131703;1;0;false;false;;;;;; -131704;3;0;false;false;63;95;191;;; -131707;1;0;false;false;;;;;; -131708;9;0;false;false;63;95;191;;; -131717;1;0;false;false;;;;;; -131718;6;0;false;false;63;95;191;;; -131724;1;0;false;false;;;;;; -131725;4;0;false;false;63;95;191;;; -131729;1;0;false;false;;;;;; -131730;3;0;false;false;63;95;191;;; -131733;1;0;false;false;;;;;; -131734;5;0;false;false;63;95;191;;; -131739;1;0;false;false;;;;;; -131740;4;0;false;false;63;95;191;;; -131744;3;0;false;false;;;;;; -131747;1;0;false;false;63;95;191;;; -131748;1;0;false;false;;;;;; -131749;2;0;false;false;63;95;191;;; -131751;1;0;false;false;;;;;; -131752;6;0;false;false;63;95;191;;; -131758;1;0;false;false;;;;;; -131759;2;0;false;false;63;95;191;;; -131761;1;0;false;false;;;;;; -131762;2;0;false;false;63;95;191;;; -131764;1;0;false;false;;;;;; -131765;1;0;false;false;63;95;191;;; -131766;1;0;false;false;;;;;; -131767;5;0;false;false;63;95;191;;; -131772;1;0;false;false;;;;;; -131773;5;0;false;false;63;95;191;;; -131778;1;0;false;false;;;;;; -131779;8;0;false;false;63;95;191;;; -131787;1;0;false;false;;;;;; -131788;2;0;false;false;63;95;191;;; -131790;1;0;false;false;;;;;; -131791;3;0;false;false;63;95;191;;; -131794;1;0;false;false;;;;;; -131795;9;0;false;false;63;95;191;;; -131804;1;0;false;false;;;;;; -131805;9;0;false;false;63;95;191;;; -131814;3;0;false;false;;;;;; -131817;1;0;false;false;63;95;191;;; -131818;1;0;false;false;;;;;; -131819;2;0;false;false;63;95;191;;; -131821;1;0;false;false;;;;;; -131822;3;0;false;false;63;95;191;;; -131825;1;0;false;false;;;;;; -131826;1;0;false;false;63;95;191;;; -131827;1;0;false;false;;;;;; -131828;10;0;false;false;63;95;191;;; -131838;1;0;false;false;;;;;; -131839;2;0;false;false;63;95;191;;; -131841;1;0;false;false;;;;;; -131842;3;0;false;false;63;95;191;;; -131845;1;0;false;false;;;;;; -131846;8;0;false;false;63;95;191;;; -131854;1;0;false;false;;;;;; -131855;2;0;false;false;63;95;191;;; -131857;1;0;false;false;;;;;; -131858;6;0;false;false;63;95;191;;; -131864;1;0;false;false;;;;;; -131865;3;0;false;false;63;95;191;;; -131868;1;0;false;false;;;;;; -131869;6;0;false;false;63;95;191;;; -131875;1;0;false;false;;;;;; -131876;2;0;false;false;63;95;191;;; -131878;1;0;false;false;;;;;; -131879;1;0;false;false;63;95;191;;; -131880;1;0;false;false;;;;;; -131881;9;0;false;false;63;95;191;;; -131890;3;0;false;false;;;;;; -131893;1;0;false;false;63;95;191;;; -131894;1;0;false;false;;;;;; -131895;3;0;false;false;63;95;191;;; -131898;1;0;false;false;;;;;; -131899;8;0;false;false;63;95;191;;; -131907;1;0;false;false;;;;;; -131908;6;0;false;false;63;95;191;;; -131914;1;0;false;false;;;;;; -131915;4;0;false;false;63;95;191;;; -131919;1;0;false;false;;;;;; -131920;2;0;false;false;63;95;191;;; -131922;1;0;false;false;;;;;; -131923;6;0;false;false;63;95;191;;; -131929;1;0;false;false;;;;;; -131930;3;0;false;false;63;95;191;;; -131933;1;0;false;false;;;;;; -131934;10;0;false;false;63;95;191;;; -131944;3;0;false;false;;;;;; -131947;1;0;false;false;63;95;191;;; -131948;1;0;false;false;;;;;; -131949;3;0;false;false;127;127;159;;; -131952;3;0;false;false;;;;;; -131955;1;0;false;false;63;95;191;;; -131956;3;0;false;false;;;;;; -131959;1;0;false;false;63;95;191;;; -131960;1;0;false;false;;;;;; -131961;7;1;false;false;127;159;191;;; -131968;5;0;false;false;63;95;191;;; -131973;1;0;false;false;;;;;; -131974;3;0;false;false;63;95;191;;; -131977;1;0;false;false;;;;;; -131978;6;0;false;false;63;95;191;;; -131984;1;0;false;false;;;;;; -131985;2;0;false;false;63;95;191;;; -131987;1;0;false;false;;;;;; -131988;9;0;false;false;63;95;191;;; -131997;1;0;false;false;;;;;; -131998;8;0;false;false;63;95;191;;; -132006;1;0;false;false;;;;;; -132007;3;0;false;false;63;95;191;;; -132010;1;0;false;false;;;;;; -132011;8;0;false;false;63;95;191;;; -132019;1;0;false;false;;;;;; -132020;2;0;false;false;63;95;191;;; -132022;4;0;false;false;;;;;; -132026;1;0;false;false;63;95;191;;; -132027;2;0;false;false;;;;;; -132029;3;0;false;false;63;95;191;;; -132032;1;0;false;false;;;;;; -132033;6;0;false;false;63;95;191;;; -132039;1;0;false;false;;;;;; -132040;2;0;false;false;63;95;191;;; -132042;1;0;false;false;;;;;; -132043;3;0;false;false;63;95;191;;; -132046;1;0;false;false;;;;;; -132047;6;0;false;false;63;95;191;;; -132053;1;0;false;false;;;;;; -132054;6;0;false;false;63;95;191;;; -132060;1;0;false;false;;;;;; -132061;5;0;false;false;63;95;191;;; -132066;3;0;false;false;;;;;; -132069;1;0;false;false;63;95;191;;; -132070;1;0;false;false;;;;;; -132071;8;1;false;false;127;159;191;;; -132079;6;0;false;false;63;95;191;;; -132085;1;0;false;false;;;;;; -132086;2;0;false;false;63;95;191;;; -132088;1;0;false;false;;;;;; -132089;3;0;false;false;63;95;191;;; -132092;1;0;false;false;;;;;; -132093;9;0;false;false;63;95;191;;; -132102;1;0;false;false;;;;;; -132103;2;0;false;false;63;95;191;;; -132105;1;0;false;false;;;;;; -132106;3;0;false;false;63;95;191;;; -132109;1;0;false;false;;;;;; -132110;5;0;false;false;63;95;191;;; -132115;1;0;false;false;;;;;; -132116;8;0;false;false;63;95;191;;; -132124;1;0;false;false;;;;;; -132125;8;0;false;false;63;95;191;;; -132133;4;0;false;false;;;;;; -132137;1;0;false;false;63;95;191;;; -132138;2;0;false;false;;;;;; -132140;2;0;false;false;63;95;191;;; -132142;1;0;false;false;;;;;; -132143;3;0;false;false;63;95;191;;; -132146;1;0;false;false;;;;;; -132147;5;0;false;false;63;95;191;;; -132152;1;0;false;false;;;;;; -132153;9;0;false;false;63;95;191;;; -132162;1;0;false;false;;;;;; -132163;2;0;false;false;63;95;191;;; -132165;1;0;false;false;;;;;; -132166;3;0;false;false;63;95;191;;; -132169;1;0;false;false;;;;;; -132170;9;0;false;false;63;95;191;;; -132179;3;0;false;false;;;;;; -132182;1;0;false;false;63;95;191;;; -132183;1;0;false;false;;;;;; -132184;11;1;false;false;127;159;191;;; -132195;12;0;false;false;63;95;191;;; -132207;1;0;false;false;;;;;; -132208;4;0;false;false;127;127;159;;; -132212;3;0;false;false;;;;;; -132215;1;0;false;false;63;95;191;;; -132216;4;0;false;false;;;;;; -132220;4;0;false;false;127;127;159;;; -132224;21;0;false;false;63;95;191;;; -132245;1;0;false;false;;;;;; -132246;1;0;false;false;127;127;159;;; -132247;1;0;false;false;;;;;; -132248;2;0;false;false;63;95;191;;; -132250;1;0;false;false;;;;;; -132251;3;0;false;false;63;95;191;;; -132254;1;0;false;false;;;;;; -132255;8;0;false;false;63;95;191;;; -132263;1;0;false;false;;;;;; -132264;3;0;false;false;63;95;191;;; -132267;1;0;false;false;;;;;; -132268;4;0;false;false;63;95;191;;; -132272;1;0;false;false;;;;;; -132273;8;0;false;false;63;95;191;;; -132281;5;0;false;false;127;127;159;;; -132286;3;0;false;false;;;;;; -132289;1;0;false;false;63;95;191;;; -132290;4;0;false;false;;;;;; -132294;4;0;false;false;127;127;159;;; -132298;27;0;false;false;63;95;191;;; -132325;1;0;false;false;;;;;; -132326;1;0;false;false;127;127;159;;; -132327;1;0;false;false;;;;;; -132328;2;0;false;false;63;95;191;;; -132330;1;0;false;false;;;;;; -132331;3;0;false;false;63;95;191;;; -132334;1;0;false;false;;;;;; -132335;6;0;false;false;63;95;191;;; -132341;1;0;false;false;;;;;; -132342;4;0;false;false;63;95;191;;; -132346;1;0;false;false;;;;;; -132347;3;0;false;false;63;95;191;;; -132350;1;0;false;false;;;;;; -132351;6;0;false;false;63;95;191;;; -132357;1;0;false;false;;;;;; -132358;4;0;false;false;63;95;191;;; -132362;1;0;false;false;;;;;; -132363;7;0;false;false;63;95;191;;; -132370;1;0;false;false;;;;;; -132371;3;0;false;false;63;95;191;;; -132374;1;0;false;false;;;;;; -132375;8;0;false;false;63;95;191;;; -132383;5;0;false;false;127;127;159;;; -132388;3;0;false;false;;;;;; -132391;1;0;false;false;63;95;191;;; -132392;1;0;false;false;;;;;; -132393;5;0;false;false;127;127;159;;; -132398;3;0;false;false;;;;;; -132401;1;0;false;false;63;95;191;;; -132402;1;0;false;false;;;;;; -132403;11;1;false;false;127;159;191;;; -132414;24;0;false;false;63;95;191;;; -132438;1;0;false;false;;;;;; -132439;4;0;false;false;127;127;159;;; -132443;3;0;false;false;;;;;; -132446;1;0;false;false;63;95;191;;; -132447;3;0;false;false;;;;;; -132450;4;0;false;false;127;127;159;;; -132454;19;0;false;false;63;95;191;;; -132473;1;0;false;false;;;;;; -132474;4;0;false;false;63;95;191;;; -132478;1;0;false;false;;;;;; -132479;5;0;false;false;63;95;191;;; -132484;1;0;false;false;;;;;; -132485;2;0;false;false;63;95;191;;; -132487;1;0;false;false;;;;;; -132488;4;0;false;false;63;95;191;;; -132492;5;0;false;false;127;127;159;;; -132497;3;0;false;false;;;;;; -132500;1;0;false;false;63;95;191;;; -132501;3;0;false;false;;;;;; -132504;4;0;false;false;127;127;159;;; -132508;22;0;false;false;63;95;191;;; -132530;1;0;false;false;;;;;; -132531;4;0;false;false;63;95;191;;; -132535;1;0;false;false;;;;;; -132536;5;0;false;false;63;95;191;;; -132541;1;0;false;false;;;;;; -132542;2;0;false;false;63;95;191;;; -132544;1;0;false;false;;;;;; -132545;2;0;false;false;63;95;191;;; -132547;1;0;false;false;;;;;; -132548;9;0;false;false;63;95;191;;; -132557;1;0;false;false;;;;;; -132558;2;0;false;false;63;95;191;;; -132560;1;0;false;false;;;;;; -132561;3;0;false;false;63;95;191;;; -132564;1;0;false;false;;;;;; -132565;9;0;false;false;63;95;191;;; -132574;1;0;false;false;;;;;; -132575;8;0;false;false;63;95;191;;; -132583;5;0;false;false;127;127;159;;; -132588;3;0;false;false;;;;;; -132591;1;0;false;false;63;95;191;;; -132592;1;0;false;false;;;;;; -132593;5;0;false;false;127;127;159;;; -132598;3;0;false;false;;;;;; -132601;2;0;false;false;63;95;191;;; -132603;2;0;false;false;;;;;; -132605;6;1;false;false;127;0;85;;; -132611;1;0;false;false;;;;;; -132612;3;1;false;false;127;0;85;;; -132615;1;0;false;false;;;;;; -132616;25;0;false;false;0;0;0;;; -132641;1;0;false;false;;;;;; -132642;6;0;false;false;0;0;0;;; -132648;1;0;false;false;;;;;; -132649;1;0;false;false;0;0;0;;; -132650;3;0;false;false;;;;;; -132653;14;0;false;false;0;0;0;;; -132667;3;0;false;false;;;;;; -132670;10;0;false;false;0;0;0;;; -132680;1;0;false;false;;;;;; -132681;7;0;false;false;0;0;0;;; -132688;3;0;false;false;;;;;; -132691;3;1;false;false;127;0;85;;; -132694;1;0;false;false;;;;;; -132695;5;0;false;false;0;0;0;;; -132700;3;0;false;false;;;;;; -132703;3;1;false;false;127;0;85;;; -132706;1;0;false;false;;;;;; -132707;11;0;false;false;0;0;0;;; -132718;3;0;false;false;;;;;; -132721;3;1;false;false;127;0;85;;; -132724;1;0;false;false;;;;;; -132725;13;0;false;false;0;0;0;;; -132738;3;0;false;false;;;;;; -132741;6;0;false;false;0;0;0;;; -132747;1;0;false;false;;;;;; -132748;9;0;false;false;0;0;0;;; -132757;6;0;false;false;;;;;; -132763;2;1;false;false;127;0;85;;; -132765;1;0;false;false;;;;;; -132766;6;0;false;false;0;0;0;;; -132772;1;0;false;false;;;;;; -132773;2;0;false;false;0;0;0;;; -132775;1;0;false;false;;;;;; -132776;4;1;false;false;127;0;85;;; -132780;1;0;false;false;0;0;0;;; -132781;1;0;false;false;;;;;; -132782;1;0;false;false;0;0;0;;; -132783;4;0;false;false;;;;;; -132787;35;0;false;false;0;0;0;;; -132822;3;0;false;false;;;;;; -132825;1;0;false;false;0;0;0;;; -132826;3;0;false;false;;;;;; -132829;55;0;false;false;63;127;95;;; -132884;1;0;false;false;;;;;; -132885;2;1;false;false;127;0;85;;; -132887;1;0;false;false;;;;;; -132888;8;0;false;false;0;0;0;;; -132896;1;0;false;false;;;;;; -132897;1;0;false;false;0;0;0;;; -132898;1;0;false;false;;;;;; -132899;20;0;false;false;0;0;0;;; -132919;1;0;false;false;;;;;; -132920;1;0;false;false;0;0;0;;; -132921;1;0;false;false;;;;;; -132922;1;0;false;false;0;0;0;;; -132923;1;0;false;false;;;;;; -132924;2;0;false;false;0;0;0;;; -132926;1;0;false;false;;;;;; -132927;7;0;false;false;0;0;0;;; -132934;1;0;false;false;;;;;; -132935;1;0;false;false;0;0;0;;; -132936;1;0;false;false;;;;;; -132937;22;0;false;false;0;0;0;;; -132959;1;0;false;false;;;;;; -132960;1;0;false;false;0;0;0;;; -132961;1;0;false;false;;;;;; -132962;2;0;false;false;0;0;0;;; -132964;1;0;false;false;;;;;; -132965;1;0;false;false;0;0;0;;; -132966;4;0;false;false;;;;;; -132970;38;0;false;false;0;0;0;;; -133008;3;0;false;false;;;;;; -133011;1;0;false;false;0;0;0;;; -133012;4;0;false;false;;;;;; -133016;4;0;false;false;0;0;0;;; -133020;1;0;false;false;;;;;; -133021;1;0;false;false;0;0;0;;; -133022;1;0;false;false;;;;;; -133023;14;0;false;false;0;0;0;;; -133037;1;0;false;false;;;;;; -133038;1;0;false;false;0;0;0;;; -133039;1;0;false;false;;;;;; -133040;8;0;false;false;0;0;0;;; -133048;1;0;false;false;;;;;; -133049;1;0;false;false;0;0;0;;; -133050;1;0;false;false;;;;;; -133051;11;0;false;false;0;0;0;;; -133062;4;0;false;false;;;;;; -133066;36;0;false;false;63;127;95;;; -133102;1;0;false;false;;;;;; -133103;2;1;false;false;127;0;85;;; -133105;1;0;false;false;;;;;; -133106;5;0;false;false;0;0;0;;; -133111;1;0;false;false;;;;;; -133112;2;0;false;false;0;0;0;;; -133114;1;0;false;false;;;;;; -133115;23;0;false;false;0;0;0;;; -133138;1;0;false;false;;;;;; -133139;1;0;false;false;0;0;0;;; -133140;4;0;false;false;;;;;; -133144;38;0;false;false;0;0;0;;; -133182;3;0;false;false;;;;;; -133185;1;0;false;false;0;0;0;;; -133186;4;0;false;false;;;;;; -133190;8;0;false;false;0;0;0;;; -133198;1;0;false;false;;;;;; -133199;1;0;false;false;0;0;0;;; -133200;1;0;false;false;;;;;; -133201;22;0;false;false;0;0;0;;; -133223;3;0;false;false;;;;;; -133226;10;0;false;false;0;0;0;;; -133236;1;0;false;false;;;;;; -133237;1;0;false;false;0;0;0;;; -133238;1;0;false;false;;;;;; -133239;30;0;false;false;0;0;0;;; -133269;7;0;false;false;;;;;; -133276;3;1;false;false;127;0;85;;; -133279;1;0;false;false;;;;;; -133280;1;0;false;false;0;0;0;;; -133281;1;0;false;false;;;;;; -133282;1;0;false;false;0;0;0;;; -133283;1;0;false;false;;;;;; -133284;7;0;false;false;0;0;0;;; -133291;1;0;false;false;;;;;; -133292;1;0;false;false;0;0;0;;; -133293;1;0;false;false;;;;;; -133294;10;0;false;false;0;0;0;;; -133304;1;0;false;false;;;;;; -133305;1;0;false;false;0;0;0;;; -133306;1;0;false;false;;;;;; -133307;23;0;false;false;0;0;0;;; -133330;3;0;false;false;;;;;; -133333;6;0;false;false;0;0;0;;; -133339;1;0;false;false;;;;;; -133340;1;0;false;false;0;0;0;;; -133341;1;0;false;false;;;;;; -133342;32;0;false;false;0;0;0;;; -133374;1;0;false;false;;;;;; -133375;12;0;false;false;0;0;0;;; -133387;3;0;false;false;;;;;; -133390;9;0;false;false;0;0;0;;; -133399;1;0;false;false;;;;;; -133400;4;0;false;false;0;0;0;;; -133404;1;0;false;false;;;;;; -133405;1;0;false;false;0;0;0;;; -133406;1;0;false;false;;;;;; -133407;24;0;false;false;0;0;0;;; -133431;3;0;false;false;;;;;; -133434;2;1;false;false;127;0;85;;; -133436;1;0;false;false;;;;;; -133437;2;0;false;false;0;0;0;;; -133439;1;0;false;false;;;;;; -133440;1;0;false;false;0;0;0;;; -133441;1;0;false;false;;;;;; -133442;6;0;false;false;0;0;0;;; -133448;1;0;false;false;;;;;; -133449;1;0;false;false;0;0;0;;; -133450;1;0;false;false;;;;;; -133451;11;0;false;false;0;0;0;;; -133462;1;0;false;false;;;;;; -133463;1;0;false;false;0;0;0;;; -133464;4;0;false;false;;;;;; -133468;35;0;false;false;0;0;0;;; -133503;4;0;false;false;;;;;; -133507;38;0;false;false;0;0;0;;; -133545;3;0;false;false;;;;;; -133548;1;0;false;false;0;0;0;;; -133549;3;0;false;false;;;;;; -133552;3;1;false;false;127;0;85;;; -133555;2;0;false;false;0;0;0;;; -133557;1;0;false;false;;;;;; -133558;8;0;false;false;0;0;0;;; -133566;1;0;false;false;;;;;; -133567;1;0;false;false;0;0;0;;; -133568;1;0;false;false;;;;;; -133569;3;1;false;false;127;0;85;;; -133572;1;0;false;false;;;;;; -133573;3;1;false;false;127;0;85;;; -133576;4;0;false;false;0;0;0;;; -133580;3;0;false;false;;;;;; -133583;12;0;false;false;0;0;0;;; -133595;1;0;false;false;;;;;; -133596;1;0;false;false;0;0;0;;; -133597;1;0;false;false;;;;;; -133598;19;0;false;false;0;0;0;;; -133617;1;0;false;false;;;;;; -133618;2;0;false;false;0;0;0;;; -133620;1;0;false;false;;;;;; -133621;10;0;false;false;0;0;0;;; -133631;3;0;false;false;;;;;; -133634;2;1;false;false;127;0;85;;; -133636;1;0;false;false;;;;;; -133637;13;0;false;false;0;0;0;;; -133650;1;0;false;false;;;;;; -133651;2;0;false;false;0;0;0;;; -133653;1;0;false;false;;;;;; -133654;17;0;false;false;0;0;0;;; -133671;1;0;false;false;;;;;; -133672;1;0;false;false;0;0;0;;; -133673;1;0;false;false;;;;;; -133674;2;0;false;false;0;0;0;;; -133676;1;0;false;false;;;;;; -133677;1;0;false;false;0;0;0;;; -133678;4;0;false;false;;;;;; -133682;12;0;false;false;0;0;0;;; -133694;1;0;false;false;;;;;; -133695;1;0;false;false;0;0;0;;; -133696;1;0;false;false;;;;;; -133697;27;0;false;false;0;0;0;;; -133724;1;0;false;false;;;;;; -133725;12;0;false;false;0;0;0;;; -133737;1;0;false;false;;;;;; -133738;1;0;false;false;0;0;0;;; -133739;1;0;false;false;;;;;; -133740;13;0;false;false;0;0;0;;; -133753;5;0;false;false;;;;;; -133758;1;0;false;false;0;0;0;;; -133759;3;0;false;false;;;;;; -133762;35;0;false;false;0;0;0;;; -133797;3;0;false;false;;;;;; -133800;6;1;false;false;127;0;85;;; -133806;1;0;false;false;;;;;; -133807;10;0;false;false;0;0;0;;; -133817;1;0;false;false;;;;;; -133818;1;0;false;false;0;0;0;;; -133819;1;0;false;false;;;;;; -133820;13;0;false;false;0;0;0;;; -133833;2;0;false;false;;;;;; -133835;1;0;false;false;0;0;0;;; -133836;2;0;false;false;;;;;; -133838;3;0;false;false;63;95;191;;; -133841;3;0;false;false;;;;;; -133844;1;0;false;false;63;95;191;;; -133845;1;0;false;false;;;;;; -133846;7;0;false;false;63;95;191;;; -133853;1;0;false;false;;;;;; -133854;3;0;false;false;63;95;191;;; -133857;1;0;false;false;;;;;; -133858;6;0;false;false;63;95;191;;; -133864;1;0;false;false;;;;;; -133865;2;0;false;false;63;95;191;;; -133867;1;0;false;false;;;;;; -133868;3;0;false;false;63;95;191;;; -133871;1;0;false;false;;;;;; -133872;9;0;false;false;63;95;191;;; -133881;1;0;false;false;;;;;; -133882;1;0;false;false;63;95;191;;; -133883;1;0;false;false;;;;;; -133884;8;0;false;false;63;95;191;;; -133892;1;0;false;false;;;;;; -133893;2;0;false;false;63;95;191;;; -133895;1;0;false;false;;;;;; -133896;3;0;false;false;63;95;191;;; -133899;1;0;false;false;;;;;; -133900;9;0;false;false;63;95;191;;; -133909;1;0;false;false;;;;;; -133910;5;0;false;false;63;95;191;;; -133915;3;0;false;false;;;;;; -133918;1;0;false;false;63;95;191;;; -133919;1;0;false;false;;;;;; -133920;3;0;false;false;127;127;159;;; -133923;3;0;false;false;;;;;; -133926;1;0;false;false;63;95;191;;; -133927;3;0;false;false;;;;;; -133930;1;0;false;false;63;95;191;;; -133931;1;0;false;false;;;;;; -133932;7;1;false;false;127;159;191;;; -133939;1;0;false;false;63;95;191;;; -133940;1;0;false;false;;;;;; -133941;1;0;false;false;63;95;191;;; -133942;1;0;false;false;;;;;; -133943;8;0;false;false;63;95;191;;; -133951;1;0;false;false;;;;;; -133952;2;0;false;false;63;95;191;;; -133954;1;0;false;false;;;;;; -133955;3;0;false;false;63;95;191;;; -133958;1;0;false;false;;;;;; -133959;5;0;false;false;63;95;191;;; -133964;1;0;false;false;;;;;; -133965;8;0;false;false;63;95;191;;; -133973;3;0;false;false;;;;;; -133976;1;0;false;false;63;95;191;;; -133977;1;0;false;false;;;;;; -133978;7;1;false;false;127;159;191;;; -133985;4;0;false;false;63;95;191;;; -133989;1;0;false;false;;;;;; -133990;4;0;false;false;63;95;191;;; -133994;1;0;false;false;;;;;; -133995;3;0;false;false;63;95;191;;; -133998;1;0;false;false;;;;;; -133999;5;0;false;false;63;95;191;;; -134004;1;0;false;false;;;;;; -134005;8;0;false;false;63;95;191;;; -134013;1;0;false;false;;;;;; -134014;2;0;false;false;63;95;191;;; -134016;1;0;false;false;;;;;; -134017;2;0;false;false;63;95;191;;; -134019;3;0;false;false;;;;;; -134022;1;0;false;false;63;95;191;;; -134023;1;0;false;false;;;;;; -134024;8;1;false;false;127;159;191;;; -134032;3;0;false;false;63;95;191;;; -134035;1;0;false;false;;;;;; -134036;6;0;false;false;63;95;191;;; -134042;1;0;false;false;;;;;; -134043;2;0;false;false;63;95;191;;; -134045;1;0;false;false;;;;;; -134046;3;0;false;false;63;95;191;;; -134049;1;0;false;false;;;;;; -134050;9;0;false;false;63;95;191;;; -134059;1;0;false;false;;;;;; -134060;1;0;false;false;63;95;191;;; -134061;1;0;false;false;;;;;; -134062;8;0;false;false;63;95;191;;; -134070;1;0;false;false;;;;;; -134071;2;0;false;false;63;95;191;;; -134073;1;0;false;false;;;;;; -134074;3;0;false;false;63;95;191;;; -134077;1;0;false;false;;;;;; -134078;9;0;false;false;63;95;191;;; -134087;1;0;false;false;;;;;; -134088;5;0;false;false;63;95;191;;; -134093;3;0;false;false;;;;;; -134096;1;0;false;false;63;95;191;;; -134097;2;0;false;false;;;;;; -134099;8;0;false;false;63;95;191;;; -134107;1;0;false;false;;;;;; -134108;2;0;false;false;63;95;191;;; -134110;1;0;false;false;;;;;; -134111;3;0;false;false;63;95;191;;; -134114;1;0;false;false;;;;;; -134115;9;0;false;false;63;95;191;;; -134124;1;0;false;false;;;;;; -134125;2;0;false;false;63;95;191;;; -134127;1;0;false;false;;;;;; -134128;3;0;false;false;63;95;191;;; -134131;1;0;false;false;;;;;; -134132;8;0;false;false;63;95;191;;; -134140;3;0;false;false;;;;;; -134143;2;0;false;false;63;95;191;;; -134145;2;0;false;false;;;;;; -134147;3;1;false;false;127;0;85;;; -134150;1;0;false;false;;;;;; -134151;25;0;false;false;0;0;0;;; -134176;3;1;false;false;127;0;85;;; -134179;1;0;false;false;;;;;; -134180;2;0;false;false;0;0;0;;; -134182;1;0;false;false;;;;;; -134183;3;1;false;false;127;0;85;;; -134186;1;0;false;false;;;;;; -134187;5;0;false;false;0;0;0;;; -134192;1;0;false;false;;;;;; -134193;1;0;false;false;0;0;0;;; -134194;3;0;false;false;;;;;; -134197;6;0;false;false;0;0;0;;; -134203;1;0;false;false;;;;;; -134204;8;0;false;false;0;0;0;;; -134212;1;0;false;false;;;;;; -134213;1;0;false;false;0;0;0;;; -134214;1;0;false;false;;;;;; -134215;22;0;false;false;0;0;0;;; -134237;3;0;false;false;;;;;; -134240;3;1;false;false;127;0;85;;; -134243;1;0;false;false;;;;;; -134244;10;0;false;false;0;0;0;;; -134254;1;0;false;false;;;;;; -134255;1;0;false;false;0;0;0;;; -134256;1;0;false;false;;;;;; -134257;30;0;false;false;0;0;0;;; -134287;3;0;false;false;;;;;; -134290;6;1;false;false;127;0;85;;; -134296;1;0;false;false;;;;;; -134297;22;0;false;false;0;0;0;;; -134319;1;0;false;false;;;;;; -134320;11;0;false;false;0;0;0;;; -134331;1;0;false;false;;;;;; -134332;2;0;false;false;0;0;0;;; -134334;1;0;false;false;;;;;; -134335;1;0;false;false;0;0;0;;; -134336;1;0;false;false;;;;;; -134337;11;0;false;false;0;0;0;;; -134348;2;0;false;false;;;;;; -134350;1;0;false;false;0;0;0;;; -134351;2;0;false;false;;;;;; -134353;3;0;false;false;63;95;191;;; -134356;3;0;false;false;;;;;; -134359;1;0;false;false;63;95;191;;; -134360;1;0;false;false;;;;;; -134361;6;0;false;false;63;95;191;;; -134367;1;0;false;false;;;;;; -134368;3;0;false;false;63;95;191;;; -134371;1;0;false;false;;;;;; -134372;11;0;false;false;63;95;191;;; -134383;1;0;false;false;;;;;; -134384;2;0;false;false;63;95;191;;; -134386;1;0;false;false;;;;;; -134387;3;0;false;false;63;95;191;;; -134390;1;0;false;false;;;;;; -134391;9;0;false;false;63;95;191;;; -134400;3;0;false;false;;;;;; -134403;1;0;false;false;63;95;191;;; -134404;3;0;false;false;;;;;; -134407;1;0;false;false;63;95;191;;; -134408;1;0;false;false;;;;;; -134409;8;1;false;false;127;159;191;;; -134417;3;0;false;false;63;95;191;;; -134420;1;0;false;false;;;;;; -134421;11;0;false;false;63;95;191;;; -134432;1;0;false;false;;;;;; -134433;5;0;false;false;63;95;191;;; -134438;3;0;false;false;;;;;; -134441;1;0;false;false;63;95;191;;; -134442;4;0;false;false;;;;;; -134446;1;0;false;false;63;95;191;;; -134447;1;0;false;false;;;;;; -134448;11;1;false;false;127;159;191;;; -134459;12;0;false;false;63;95;191;;; -134471;1;0;false;false;;;;;; -134472;4;0;false;false;127;127;159;;; -134476;3;0;false;false;;;;;; -134479;1;0;false;false;63;95;191;;; -134480;4;0;false;false;;;;;; -134484;4;0;false;false;127;127;159;;; -134488;21;0;false;false;63;95;191;;; -134509;1;0;false;false;;;;;; -134510;1;0;false;false;127;127;159;;; -134511;1;0;false;false;;;;;; -134512;2;0;false;false;63;95;191;;; -134514;1;0;false;false;;;;;; -134515;3;0;false;false;63;95;191;;; -134518;1;0;false;false;;;;;; -134519;8;0;false;false;63;95;191;;; -134527;1;0;false;false;;;;;; -134528;3;0;false;false;63;95;191;;; -134531;1;0;false;false;;;;;; -134532;4;0;false;false;63;95;191;;; -134536;1;0;false;false;;;;;; -134537;8;0;false;false;63;95;191;;; -134545;5;0;false;false;127;127;159;;; -134550;3;0;false;false;;;;;; -134553;1;0;false;false;63;95;191;;; -134554;4;0;false;false;;;;;; -134558;4;0;false;false;127;127;159;;; -134562;27;0;false;false;63;95;191;;; -134589;1;0;false;false;;;;;; -134590;1;0;false;false;127;127;159;;; -134591;1;0;false;false;;;;;; -134592;2;0;false;false;63;95;191;;; -134594;1;0;false;false;;;;;; -134595;3;0;false;false;63;95;191;;; -134598;1;0;false;false;;;;;; -134599;6;0;false;false;63;95;191;;; -134605;1;0;false;false;;;;;; -134606;4;0;false;false;63;95;191;;; -134610;1;0;false;false;;;;;; -134611;3;0;false;false;63;95;191;;; -134614;1;0;false;false;;;;;; -134615;6;0;false;false;63;95;191;;; -134621;1;0;false;false;;;;;; -134622;4;0;false;false;63;95;191;;; -134626;1;0;false;false;;;;;; -134627;7;0;false;false;63;95;191;;; -134634;1;0;false;false;;;;;; -134635;3;0;false;false;63;95;191;;; -134638;1;0;false;false;;;;;; -134639;8;0;false;false;63;95;191;;; -134647;5;0;false;false;127;127;159;;; -134652;3;0;false;false;;;;;; -134655;1;0;false;false;63;95;191;;; -134656;1;0;false;false;;;;;; -134657;5;0;false;false;127;127;159;;; -134662;3;0;false;false;;;;;; -134665;1;0;false;false;63;95;191;;; -134666;4;0;false;false;;;;;; -134670;1;0;false;false;63;95;191;;; -134671;1;0;false;false;;;;;; -134672;7;1;false;false;127;159;191;;; -134679;5;0;false;false;63;95;191;;; -134684;3;0;false;false;;;;;; -134687;2;0;false;false;63;95;191;;; -134689;2;0;false;false;;;;;; -134691;6;1;false;false;127;0;85;;; -134697;1;0;false;false;;;;;; -134698;3;1;false;false;127;0;85;;; -134701;1;0;false;false;;;;;; -134702;14;0;false;false;0;0;0;;; -134716;1;0;false;false;;;;;; -134717;2;0;false;false;0;0;0;;; -134719;1;0;false;false;;;;;; -134720;1;0;false;false;0;0;0;;; -134721;3;0;false;false;;;;;; -134724;14;0;false;false;0;0;0;;; -134738;3;0;false;false;;;;;; -134741;6;1;false;false;127;0;85;;; -134747;1;0;false;false;;;;;; -134748;12;0;false;false;0;0;0;;; -134760;1;0;false;false;;;;;; -134761;1;0;false;false;0;0;0;;; -134762;1;0;false;false;;;;;; -134763;17;0;false;false;0;0;0;;; -134780;1;0;false;false;;;;;; -134781;1;0;false;false;0;0;0;;; -134782;1;0;false;false;;;;;; -134783;18;0;false;false;0;0;0;;; -134801;2;0;false;false;;;;;; -134803;1;0;false;false;0;0;0;;; -134804;2;0;false;false;;;;;; -134806;3;0;false;false;63;95;191;;; -134809;4;0;false;false;;;;;; -134813;1;0;false;false;63;95;191;;; -134814;1;0;false;false;;;;;; -134815;7;0;false;false;63;95;191;;; -134822;1;0;false;false;;;;;; -134823;3;0;false;false;63;95;191;;; -134826;1;0;false;false;;;;;; -134827;5;0;false;false;63;95;191;;; -134832;1;0;false;false;;;;;; -134833;2;0;false;false;63;95;191;;; -134835;1;0;false;false;;;;;; -134836;3;0;false;false;63;95;191;;; -134839;1;0;false;false;;;;;; -134840;4;0;false;false;63;95;191;;; -134844;1;0;false;false;;;;;; -134845;9;0;false;false;63;95;191;;; -134854;1;0;false;false;;;;;; -134855;7;0;false;false;63;95;191;;; -134862;1;0;false;false;;;;;; -134863;5;0;false;false;63;95;191;;; -134868;3;0;false;false;;;;;; -134871;1;0;false;false;63;95;191;;; -134872;3;0;false;false;;;;;; -134875;1;0;false;false;63;95;191;;; -134876;1;0;false;false;;;;;; -134877;8;1;false;false;127;159;191;;; -134885;5;0;false;false;63;95;191;;; -134890;1;0;false;false;;;;;; -134891;2;0;false;false;63;95;191;;; -134893;1;0;false;false;;;;;; -134894;3;0;false;false;63;95;191;;; -134897;1;0;false;false;;;;;; -134898;4;0;false;false;63;95;191;;; -134902;1;0;false;false;;;;;; -134903;9;0;false;false;63;95;191;;; -134912;1;0;false;false;;;;;; -134913;7;0;false;false;63;95;191;;; -134920;1;0;false;false;;;;;; -134921;5;0;false;false;63;95;191;;; -134926;3;0;false;false;;;;;; -134929;2;0;false;false;63;95;191;;; -134931;2;0;false;false;;;;;; -134933;3;1;false;false;127;0;85;;; -134936;1;0;false;false;;;;;; -134937;23;0;false;false;0;0;0;;; -134960;1;0;false;false;;;;;; -134961;1;0;false;false;0;0;0;;; -134962;3;0;false;false;;;;;; -134965;3;1;false;false;127;0;85;;; -134968;1;0;false;false;;;;;; -134969;16;0;false;false;0;0;0;;; -134985;1;0;false;false;;;;;; -134986;1;0;false;false;0;0;0;;; -134987;1;0;false;false;;;;;; -134988;42;0;false;false;0;0;0;;; -135030;1;0;false;false;;;;;; -135031;12;0;false;false;0;0;0;;; -135043;3;0;false;false;;;;;; -135046;6;1;false;false;127;0;85;;; -135052;1;0;false;false;;;;;; -135053;32;0;false;false;0;0;0;;; -135085;1;0;false;false;;;;;; -135086;8;0;false;false;0;0;0;;; -135094;1;0;false;false;;;;;; -135095;1;0;false;false;0;0;0;;; -135096;1;0;false;false;;;;;; -135097;17;0;false;false;0;0;0;;; -135114;1;0;false;false;;;;;; -135115;1;0;false;false;0;0;0;;; -135116;1;0;false;false;;;;;; -135117;2;0;false;false;0;0;0;;; -135119;2;0;false;false;;;;;; -135121;1;0;false;false;0;0;0;;; -135122;2;0;false;false;;;;;; -135124;3;0;false;false;63;95;191;;; -135127;3;0;false;false;;;;;; -135130;1;0;false;false;63;95;191;;; -135131;1;0;false;false;;;;;; -135132;7;0;false;false;63;95;191;;; -135139;1;0;false;false;;;;;; -135140;3;0;false;false;63;95;191;;; -135143;1;0;false;false;;;;;; -135144;7;0;false;false;63;95;191;;; -135151;1;0;false;false;;;;;; -135152;2;0;false;false;63;95;191;;; -135154;1;0;false;false;;;;;; -135155;3;0;false;false;63;95;191;;; -135158;1;0;false;false;;;;;; -135159;9;0;false;false;63;95;191;;; -135168;1;0;false;false;;;;;; -135169;5;0;false;false;63;95;191;;; -135174;1;0;false;false;;;;;; -135175;5;0;false;false;63;95;191;;; -135180;1;0;false;false;;;;;; -135181;3;0;false;false;63;95;191;;; -135184;1;0;false;false;;;;;; -135185;8;0;false;false;63;95;191;;; -135193;1;0;false;false;;;;;; -135194;4;0;false;false;63;95;191;;; -135198;4;0;false;false;;;;;; -135202;1;0;false;false;63;95;191;;; -135203;1;0;false;false;;;;;; -135204;9;0;false;false;63;95;191;;; -135213;1;0;false;false;;;;;; -135214;2;0;false;false;63;95;191;;; -135216;1;0;false;false;;;;;; -135217;8;0;false;false;63;95;191;;; -135225;1;0;false;false;;;;;; -135226;6;0;false;false;63;95;191;;; -135232;3;0;false;false;;;;;; -135235;1;0;false;false;63;95;191;;; -135236;1;0;false;false;;;;;; -135237;3;0;false;false;127;127;159;;; -135240;3;0;false;false;;;;;; -135243;1;0;false;false;63;95;191;;; -135244;3;0;false;false;;;;;; -135247;1;0;false;false;63;95;191;;; -135248;1;0;false;false;;;;;; -135249;7;1;false;false;127;159;191;;; -135256;6;0;false;false;63;95;191;;; -135262;1;0;false;false;;;;;; -135263;3;0;false;false;63;95;191;;; -135266;1;0;false;false;;;;;; -135267;10;0;false;false;63;95;191;;; -135277;1;0;false;false;;;;;; -135278;2;0;false;false;63;95;191;;; -135280;1;0;false;false;;;;;; -135281;5;0;false;false;63;95;191;;; -135286;1;0;false;false;;;;;; -135287;4;0;false;false;63;95;191;;; -135291;1;0;false;false;;;;;; -135292;4;0;false;false;63;95;191;;; -135296;1;0;false;false;;;;;; -135297;4;0;false;false;63;95;191;;; -135301;3;0;false;false;;;;;; -135304;1;0;false;false;63;95;191;;; -135305;1;0;false;false;;;;;; -135306;8;1;false;false;127;159;191;;; -135314;3;0;false;false;63;95;191;;; -135317;1;0;false;false;;;;;; -135318;7;0;false;false;63;95;191;;; -135325;1;0;false;false;;;;;; -135326;2;0;false;false;63;95;191;;; -135328;1;0;false;false;;;;;; -135329;3;0;false;false;63;95;191;;; -135332;1;0;false;false;;;;;; -135333;9;0;false;false;63;95;191;;; -135342;1;0;false;false;;;;;; -135343;5;0;false;false;63;95;191;;; -135348;1;0;false;false;;;;;; -135349;5;0;false;false;63;95;191;;; -135354;1;0;false;false;;;;;; -135355;3;0;false;false;63;95;191;;; -135358;1;0;false;false;;;;;; -135359;8;0;false;false;63;95;191;;; -135367;1;0;false;false;;;;;; -135368;4;0;false;false;63;95;191;;; -135372;4;0;false;false;;;;;; -135376;1;0;false;false;63;95;191;;; -135377;2;0;false;false;;;;;; -135379;9;0;false;false;63;95;191;;; -135388;1;0;false;false;;;;;; -135389;2;0;false;false;63;95;191;;; -135391;1;0;false;false;;;;;; -135392;8;0;false;false;63;95;191;;; -135400;1;0;false;false;;;;;; -135401;5;0;false;false;63;95;191;;; -135406;1;0;false;false;;;;;; -135407;2;0;false;false;63;95;191;;; -135409;1;0;false;false;;;;;; -135410;7;0;false;false;63;95;191;;; -135417;1;0;false;false;;;;;; -135418;2;0;false;false;63;95;191;;; -135420;1;0;false;false;;;;;; -135421;3;0;false;false;63;95;191;;; -135424;1;0;false;false;;;;;; -135425;9;0;false;false;63;95;191;;; -135434;1;0;false;false;;;;;; -135435;11;0;false;false;63;95;191;;; -135446;3;0;false;false;;;;;; -135449;2;0;false;false;63;95;191;;; -135451;2;0;false;false;;;;;; -135453;6;0;false;false;0;0;0;;; -135459;1;0;false;false;;;;;; -135460;35;0;false;false;0;0;0;;; -135495;1;0;false;false;;;;;; -135496;7;0;false;false;0;0;0;;; -135503;1;0;false;false;;;;;; -135504;1;0;false;false;0;0;0;;; -135505;3;0;false;false;;;;;; -135508;3;1;false;false;127;0;85;;; -135511;1;0;false;false;;;;;; -135512;3;0;false;false;0;0;0;;; -135515;1;0;false;false;;;;;; -135516;1;0;false;false;0;0;0;;; -135517;1;0;false;false;;;;;; -135518;17;0;false;false;0;0;0;;; -135535;1;0;false;false;;;;;; -135536;1;0;false;false;0;0;0;;; -135537;1;0;false;false;;;;;; -135538;22;0;false;false;0;0;0;;; -135560;3;0;false;false;;;;;; -135563;3;1;false;false;127;0;85;;; -135566;1;0;false;false;;;;;; -135567;9;0;false;false;0;0;0;;; -135576;1;0;false;false;;;;;; -135577;1;0;false;false;0;0;0;;; -135578;1;0;false;false;;;;;; -135579;50;0;false;false;0;0;0;;; -135629;3;0;false;false;;;;;; -135632;3;1;false;false;127;0;85;;; -135635;1;0;false;false;;;;;; -135636;7;0;false;false;0;0;0;;; -135643;1;0;false;false;;;;;; -135644;1;0;false;false;0;0;0;;; -135645;1;0;false;false;;;;;; -135646;36;0;false;false;0;0;0;;; -135682;3;0;false;false;;;;;; -135685;6;0;false;false;0;0;0;;; -135691;1;0;false;false;;;;;; -135692;11;0;false;false;0;0;0;;; -135703;1;0;false;false;;;;;; -135704;1;0;false;false;0;0;0;;; -135705;1;0;false;false;;;;;; -135706;32;0;false;false;0;0;0;;; -135738;3;0;false;false;;;;;; -135741;3;1;false;false;127;0;85;;; -135744;1;0;false;false;;;;;; -135745;13;0;false;false;0;0;0;;; -135758;1;0;false;false;;;;;; -135759;1;0;false;false;0;0;0;;; -135760;1;0;false;false;;;;;; -135761;40;0;false;false;0;0;0;;; -135801;6;0;false;false;;;;;; -135807;3;1;false;false;127;0;85;;; -135810;1;0;false;false;;;;;; -135811;1;0;false;false;0;0;0;;; -135812;3;1;false;false;127;0;85;;; -135815;1;0;false;false;;;;;; -135816;1;0;false;false;0;0;0;;; -135817;1;0;false;false;;;;;; -135818;1;0;false;false;0;0;0;;; -135819;1;0;false;false;;;;;; -135820;10;0;false;false;0;0;0;;; -135830;1;0;false;false;;;;;; -135831;1;0;false;false;0;0;0;;; -135832;1;0;false;false;;;;;; -135833;2;0;false;false;0;0;0;;; -135835;1;0;false;false;;;;;; -135836;8;0;false;false;0;0;0;;; -135844;1;0;false;false;;;;;; -135845;4;0;false;false;0;0;0;;; -135849;1;0;false;false;;;;;; -135850;1;0;false;false;0;0;0;;; -135851;4;0;false;false;;;;;; -135855;43;0;false;false;0;0;0;;; -135898;1;0;false;false;;;;;; -135899;35;0;false;false;0;0;0;;; -135934;4;0;false;false;;;;;; -135938;2;1;false;false;127;0;85;;; -135940;1;0;false;false;;;;;; -135941;2;0;false;false;0;0;0;;; -135943;1;0;false;false;;;;;; -135944;1;0;false;false;0;0;0;;; -135945;1;0;false;false;;;;;; -135946;8;0;false;false;0;0;0;;; -135954;1;0;false;false;;;;;; -135955;1;0;false;false;0;0;0;;; -135956;5;0;false;false;;;;;; -135961;49;0;false;false;0;0;0;;; -136010;4;0;false;false;;;;;; -136014;1;0;false;false;0;0;0;;; -136015;3;0;false;false;;;;;; -136018;1;0;false;false;0;0;0;;; -136019;3;0;false;false;;;;;; -136022;2;1;false;false;127;0;85;;; -136024;1;0;false;false;;;;;; -136025;4;0;false;false;0;0;0;;; -136029;1;0;false;false;;;;;; -136030;1;0;false;false;0;0;0;;; -136031;1;0;false;false;;;;;; -136032;13;0;false;false;0;0;0;;; -136045;1;0;false;false;;;;;; -136046;1;0;false;false;0;0;0;;; -136047;1;0;false;false;;;;;; -136048;21;0;false;false;0;0;0;;; -136069;1;0;false;false;;;;;; -136070;1;0;false;false;0;0;0;;; -136071;4;0;false;false;;;;;; -136075;49;0;false;false;0;0;0;;; -136124;3;0;false;false;;;;;; -136127;1;0;false;false;0;0;0;;; -136128;3;0;false;false;;;;;; -136131;15;0;false;false;0;0;0;;; -136146;3;0;false;false;;;;;; -136149;6;1;false;false;127;0;85;;; -136155;1;0;false;false;;;;;; -136156;18;0;false;false;0;0;0;;; -136174;2;0;false;false;;;;;; -136176;1;0;false;false;0;0;0;;; -136177;2;0;false;false;;;;;; -136179;3;0;false;false;63;95;191;;; -136182;3;0;false;false;;;;;; -136185;1;0;false;false;63;95;191;;; -136186;1;0;false;false;;;;;; -136187;7;0;false;false;63;95;191;;; -136194;1;0;false;false;;;;;; -136195;3;0;false;false;63;95;191;;; -136198;1;0;false;false;;;;;; -136199;10;0;false;false;63;95;191;;; -136209;3;0;false;false;;;;;; -136212;1;0;false;false;63;95;191;;; -136213;1;0;false;false;;;;;; -136214;3;0;false;false;127;127;159;;; -136217;3;0;false;false;;;;;; -136220;1;0;false;false;63;95;191;;; -136221;1;0;false;false;;;;;; -136222;4;0;false;false;63;95;191;;; -136226;1;0;false;false;;;;;; -136227;10;0;false;false;63;95;191;;; -136237;1;0;false;false;;;;;; -136238;3;0;false;false;63;95;191;;; -136241;1;0;false;false;;;;;; -136242;9;0;false;false;63;95;191;;; -136251;1;0;false;false;;;;;; -136252;2;0;false;false;63;95;191;;; -136254;1;0;false;false;;;;;; -136255;5;0;false;false;63;95;191;;; -136260;1;0;false;false;;;;;; -136261;2;0;false;false;63;95;191;;; -136263;1;0;false;false;;;;;; -136264;5;0;false;false;63;95;191;;; -136269;1;0;false;false;;;;;; -136270;10;0;false;false;63;95;191;;; -136280;2;0;false;false;;;;;; -136282;2;0;false;false;63;95;191;;; -136284;1;0;false;false;;;;;; -136285;1;0;false;false;63;95;191;;; -136286;1;0;false;false;;;;;; -136287;4;0;false;false;63;95;191;;; -136291;3;0;false;false;;;;;; -136294;1;0;false;false;63;95;191;;; -136295;1;0;false;false;;;;;; -136296;6;0;false;false;63;95;191;;; -136302;1;0;false;false;;;;;; -136303;4;0;false;false;63;95;191;;; -136307;1;0;false;false;;;;;; -136308;8;0;false;false;63;95;191;;; -136316;1;0;false;false;;;;;; -136317;1;0;false;false;63;95;191;;; -136318;1;0;false;false;;;;;; -136319;11;0;false;false;63;95;191;;; -136330;1;0;false;false;;;;;; -136331;5;0;false;false;63;95;191;;; -136336;1;0;false;false;;;;;; -136337;3;0;false;false;63;95;191;;; -136340;1;0;false;false;;;;;; -136341;3;0;false;false;63;95;191;;; -136344;1;0;false;false;;;;;; -136345;5;0;false;false;63;95;191;;; -136350;1;0;false;false;;;;;; -136351;10;0;false;false;63;95;191;;; -136361;4;0;false;false;;;;;; -136365;1;0;false;false;63;95;191;;; -136366;1;0;false;false;;;;;; -136367;7;0;false;false;63;95;191;;; -136374;1;0;false;false;;;;;; -136375;4;0;false;false;63;95;191;;; -136379;1;0;false;false;;;;;; -136380;4;0;false;false;63;95;191;;; -136384;3;0;false;false;;;;;; -136387;1;0;false;false;63;95;191;;; -136388;1;0;false;false;;;;;; -136389;3;0;false;false;127;127;159;;; -136392;3;0;false;false;;;;;; -136395;1;0;false;false;63;95;191;;; -136396;3;0;false;false;;;;;; -136399;1;0;false;false;63;95;191;;; -136400;1;0;false;false;;;;;; -136401;8;1;false;false;127;159;191;;; -136409;5;0;false;false;63;95;191;;; -136414;1;0;false;false;;;;;; -136415;3;0;false;false;63;95;191;;; -136418;1;0;false;false;;;;;; -136419;3;0;false;false;63;95;191;;; -136422;1;0;false;false;;;;;; -136423;2;0;false;false;63;95;191;;; -136425;1;0;false;false;;;;;; -136426;3;0;false;false;63;95;191;;; -136429;1;0;false;false;;;;;; -136430;10;0;false;false;63;95;191;;; -136440;1;0;false;false;;;;;; -136441;1;0;false;false;63;95;191;;; -136442;1;0;false;false;;;;;; -136443;2;0;false;false;63;95;191;;; -136445;1;0;false;false;;;;;; -136446;3;0;false;false;63;95;191;;; -136449;1;0;false;false;;;;;; -136450;6;0;false;false;63;95;191;;; -136456;1;0;false;false;;;;;; -136457;2;0;false;false;63;95;191;;; -136459;1;0;false;false;;;;;; -136460;3;0;false;false;63;95;191;;; -136463;1;0;false;false;;;;;; -136464;5;0;false;false;63;95;191;;; -136469;4;0;false;false;;;;;; -136473;1;0;false;false;63;95;191;;; -136474;2;0;false;false;;;;;; -136476;8;0;false;false;63;95;191;;; -136484;1;0;false;false;;;;;; -136485;10;0;false;false;63;95;191;;; -136495;1;0;false;false;;;;;; -136496;1;0;false;false;63;95;191;;; -136497;1;0;false;false;;;;;; -136498;2;0;false;false;63;95;191;;; -136500;1;0;false;false;;;;;; -136501;3;0;false;false;63;95;191;;; -136504;1;0;false;false;;;;;; -136505;6;0;false;false;63;95;191;;; -136511;1;0;false;false;;;;;; -136512;5;0;false;false;63;95;191;;; -136517;1;0;false;false;;;;;; -136518;3;0;false;false;63;95;191;;; -136521;1;0;false;false;;;;;; -136522;4;0;false;false;63;95;191;;; -136526;1;0;false;false;;;;;; -136527;8;0;false;false;63;95;191;;; -136535;1;0;false;false;;;;;; -136536;10;0;false;false;63;95;191;;; -136546;3;0;false;false;;;;;; -136549;1;0;false;false;63;95;191;;; -136550;2;0;false;false;;;;;; -136552;3;0;false;false;63;95;191;;; -136555;1;0;false;false;;;;;; -136556;9;0;false;false;63;95;191;;; -136565;1;0;false;false;;;;;; -136566;6;0;false;false;63;95;191;;; -136572;1;0;false;false;;;;;; -136573;8;0;false;false;63;95;191;;; -136581;1;0;false;false;;;;;; -136582;3;0;false;false;63;95;191;;; -136585;1;0;false;false;;;;;; -136586;6;0;false;false;63;95;191;;; -136592;1;0;false;false;;;;;; -136593;6;0;false;false;63;95;191;;; -136599;1;0;false;false;;;;;; -136600;1;0;false;false;63;95;191;;; -136601;1;0;false;false;;;;;; -136602;4;0;false;false;63;95;191;;; -136606;1;0;false;false;;;;;; -136607;6;0;false;false;63;95;191;;; -136613;1;0;false;false;;;;;; -136614;6;0;false;false;63;95;191;;; -136620;1;0;false;false;;;;;; -136621;2;0;false;false;63;95;191;;; -136623;6;0;false;false;;;;;; -136629;1;0;false;false;63;95;191;;; -136630;2;0;false;false;;;;;; -136632;80;0;false;false;63;95;191;;; -136712;1;0;false;false;;;;;; -136713;1;0;false;false;63;95;191;;; -136714;2;0;false;false;;;;;; -136716;7;0;false;false;63;95;191;;; -136723;1;0;false;false;;;;;; -136724;7;0;false;false;63;95;191;;; -136731;1;0;false;false;;;;;; -136732;3;0;false;false;63;95;191;;; -136735;1;0;false;false;;;;;; -136736;11;0;false;false;63;95;191;;; -136747;1;0;false;false;;;;;; -136748;2;0;false;false;63;95;191;;; -136750;1;0;false;false;;;;;; -136751;3;0;false;false;63;95;191;;; -136754;1;0;false;false;;;;;; -136755;5;0;false;false;63;95;191;;; -136760;1;0;false;false;;;;;; -136761;3;0;false;false;63;95;191;;; -136764;1;0;false;false;;;;;; -136765;3;0;false;false;63;95;191;;; -136768;1;0;false;false;;;;;; -136769;2;0;false;false;63;95;191;;; -136771;1;0;false;false;;;;;; -136772;3;0;false;false;63;95;191;;; -136775;1;0;false;false;;;;;; -136776;9;0;false;false;63;95;191;;; -136785;4;0;false;false;;;;;; -136789;1;0;false;false;63;95;191;;; -136790;2;0;false;false;;;;;; -136792;6;0;false;false;63;95;191;;; -136798;1;0;false;false;;;;;; -136799;11;0;false;false;63;95;191;;; -136810;1;0;false;false;;;;;; -136811;2;0;false;false;63;95;191;;; -136813;1;0;false;false;;;;;; -136814;5;0;false;false;63;95;191;;; -136819;1;0;false;false;;;;;; -136820;2;0;false;false;63;95;191;;; -136822;1;0;false;false;;;;;; -136823;9;0;false;false;63;95;191;;; -136832;1;0;false;false;;;;;; -136833;7;0;false;false;63;95;191;;; -136840;1;0;false;false;;;;;; -136841;4;0;false;false;63;95;191;;; -136845;1;0;false;false;;;;;; -136846;3;0;false;false;63;95;191;;; -136849;1;0;false;false;;;;;; -136850;9;0;false;false;63;95;191;;; -136859;1;0;false;false;;;;;; -136860;2;0;false;false;63;95;191;;; -136862;1;0;false;false;;;;;; -136863;6;0;false;false;63;95;191;;; -136869;3;0;false;false;;;;;; -136872;1;0;false;false;63;95;191;;; -136873;1;0;false;false;;;;;; -136874;5;1;false;false;127;159;191;;; -136879;18;0;false;false;63;95;191;;; -136897;3;0;false;false;;;;;; -136900;1;0;false;false;63;95;191;;; -136901;1;0;false;false;;;;;; -136902;11;1;false;false;127;159;191;;; -136913;12;0;false;false;63;95;191;;; -136925;1;0;false;false;;;;;; -136926;4;0;false;false;127;127;159;;; -136930;3;0;false;false;;;;;; -136933;1;0;false;false;63;95;191;;; -136934;4;0;false;false;;;;;; -136938;4;0;false;false;127;127;159;;; -136942;21;0;false;false;63;95;191;;; -136963;1;0;false;false;;;;;; -136964;1;0;false;false;127;127;159;;; -136965;1;0;false;false;;;;;; -136966;2;0;false;false;63;95;191;;; -136968;1;0;false;false;;;;;; -136969;3;0;false;false;63;95;191;;; -136972;1;0;false;false;;;;;; -136973;8;0;false;false;63;95;191;;; -136981;1;0;false;false;;;;;; -136982;3;0;false;false;63;95;191;;; -136985;1;0;false;false;;;;;; -136986;4;0;false;false;63;95;191;;; -136990;1;0;false;false;;;;;; -136991;8;0;false;false;63;95;191;;; -136999;5;0;false;false;127;127;159;;; -137004;3;0;false;false;;;;;; -137007;1;0;false;false;63;95;191;;; -137008;4;0;false;false;;;;;; -137012;4;0;false;false;127;127;159;;; -137016;27;0;false;false;63;95;191;;; -137043;1;0;false;false;;;;;; -137044;1;0;false;false;127;127;159;;; -137045;1;0;false;false;;;;;; -137046;2;0;false;false;63;95;191;;; -137048;1;0;false;false;;;;;; -137049;3;0;false;false;63;95;191;;; -137052;1;0;false;false;;;;;; -137053;6;0;false;false;63;95;191;;; -137059;1;0;false;false;;;;;; -137060;4;0;false;false;63;95;191;;; -137064;1;0;false;false;;;;;; -137065;3;0;false;false;63;95;191;;; -137068;1;0;false;false;;;;;; -137069;6;0;false;false;63;95;191;;; -137075;1;0;false;false;;;;;; -137076;4;0;false;false;63;95;191;;; -137080;1;0;false;false;;;;;; -137081;7;0;false;false;63;95;191;;; -137088;1;0;false;false;;;;;; -137089;3;0;false;false;63;95;191;;; -137092;1;0;false;false;;;;;; -137093;8;0;false;false;63;95;191;;; -137101;5;0;false;false;127;127;159;;; -137106;3;0;false;false;;;;;; -137109;1;0;false;false;63;95;191;;; -137110;1;0;false;false;;;;;; -137111;5;0;false;false;127;127;159;;; -137116;3;0;false;false;;;;;; -137119;2;0;false;false;63;95;191;;; -137121;2;0;false;false;;;;;; -137123;6;1;false;false;127;0;85;;; -137129;1;0;false;false;;;;;; -137130;5;0;false;false;0;0;0;;; -137135;1;0;false;false;;;;;; -137136;14;0;false;false;0;0;0;;; -137150;1;0;false;false;;;;;; -137151;1;0;false;false;0;0;0;;; -137152;3;0;false;false;;;;;; -137155;14;0;false;false;0;0;0;;; -137169;3;0;false;false;;;;;; -137172;6;1;false;false;127;0;85;;; -137178;1;0;false;false;;;;;; -137179;3;1;false;false;127;0;85;;; -137182;1;0;false;false;;;;;; -137183;18;0;false;false;0;0;0;;; -137201;1;0;false;false;;;;;; -137202;13;0;false;false;0;0;0;;; -137215;2;0;false;false;;;;;; -137217;1;0;false;false;0;0;0;;; -137218;2;0;false;false;;;;;; -137220;3;0;false;false;63;95;191;;; -137223;3;0;false;false;;;;;; -137226;1;0;false;false;63;95;191;;; -137227;1;0;false;false;;;;;; -137228;7;0;false;false;63;95;191;;; -137235;1;0;false;false;;;;;; -137236;3;0;false;false;63;95;191;;; -137239;1;0;false;false;;;;;; -137240;10;0;false;false;63;95;191;;; -137250;3;0;false;false;;;;;; -137253;1;0;false;false;63;95;191;;; -137254;1;0;false;false;;;;;; -137255;3;0;false;false;127;127;159;;; -137258;3;0;false;false;;;;;; -137261;1;0;false;false;63;95;191;;; -137262;3;0;false;false;;;;;; -137265;1;0;false;false;63;95;191;;; -137266;1;0;false;false;;;;;; -137267;8;1;false;false;127;159;191;;; -137275;5;0;false;false;63;95;191;;; -137280;1;0;false;false;;;;;; -137281;3;0;false;false;63;95;191;;; -137284;1;0;false;false;;;;;; -137285;6;0;false;false;63;95;191;;; -137291;1;0;false;false;;;;;; -137292;2;0;false;false;63;95;191;;; -137294;1;0;false;false;;;;;; -137295;3;0;false;false;63;95;191;;; -137298;1;0;false;false;;;;;; -137299;10;0;false;false;63;95;191;;; -137309;1;0;false;false;;;;;; -137310;1;0;false;false;63;95;191;;; -137311;1;0;false;false;;;;;; -137312;2;0;false;false;63;95;191;;; -137314;1;0;false;false;;;;;; -137315;3;0;false;false;63;95;191;;; -137318;1;0;false;false;;;;;; -137319;6;0;false;false;63;95;191;;; -137325;1;0;false;false;;;;;; -137326;2;0;false;false;63;95;191;;; -137328;1;0;false;false;;;;;; -137329;3;0;false;false;63;95;191;;; -137332;4;0;false;false;;;;;; -137336;1;0;false;false;63;95;191;;; -137337;2;0;false;false;;;;;; -137339;5;0;false;false;63;95;191;;; -137344;1;0;false;false;;;;;; -137345;8;0;false;false;63;95;191;;; -137353;1;0;false;false;;;;;; -137354;10;0;false;false;63;95;191;;; -137364;1;0;false;false;;;;;; -137365;8;0;false;false;63;95;191;;; -137373;1;0;false;false;;;;;; -137374;2;0;false;false;63;95;191;;; -137376;1;0;false;false;;;;;; -137377;3;0;false;false;63;95;191;;; -137380;1;0;false;false;;;;;; -137381;5;0;false;false;63;95;191;;; -137386;1;0;false;false;;;;;; -137387;9;0;false;false;63;95;191;;; -137396;1;0;false;false;;;;;; -137397;2;0;false;false;63;95;191;;; -137399;1;0;false;false;;;;;; -137400;3;0;false;false;63;95;191;;; -137403;4;0;false;false;;;;;; -137407;1;0;false;false;63;95;191;;; -137408;2;0;false;false;;;;;; -137410;6;0;false;false;63;95;191;;; -137416;1;0;false;false;;;;;; -137417;8;0;false;false;63;95;191;;; -137425;1;0;false;false;;;;;; -137426;1;0;false;false;63;95;191;;; -137427;1;0;false;false;;;;;; -137428;2;0;false;false;63;95;191;;; -137430;1;0;false;false;;;;;; -137431;3;0;false;false;63;95;191;;; -137434;1;0;false;false;;;;;; -137435;6;0;false;false;63;95;191;;; -137441;1;0;false;false;;;;;; -137442;2;0;false;false;63;95;191;;; -137444;1;0;false;false;;;;;; -137445;3;0;false;false;63;95;191;;; -137448;1;0;false;false;;;;;; -137449;10;0;false;false;63;95;191;;; -137459;4;0;false;false;;;;;; -137463;1;0;false;false;63;95;191;;; -137464;2;0;false;false;;;;;; -137466;3;0;false;false;63;95;191;;; -137469;1;0;false;false;;;;;; -137470;9;0;false;false;63;95;191;;; -137479;1;0;false;false;;;;;; -137480;6;0;false;false;63;95;191;;; -137486;1;0;false;false;;;;;; -137487;8;0;false;false;63;95;191;;; -137495;1;0;false;false;;;;;; -137496;3;0;false;false;63;95;191;;; -137499;1;0;false;false;;;;;; -137500;6;0;false;false;63;95;191;;; -137506;1;0;false;false;;;;;; -137507;6;0;false;false;63;95;191;;; -137513;1;0;false;false;;;;;; -137514;6;0;false;false;63;95;191;;; -137520;1;0;false;false;;;;;; -137521;4;0;false;false;63;95;191;;; -137525;1;0;false;false;;;;;; -137526;6;0;false;false;63;95;191;;; -137532;1;0;false;false;;;;;; -137533;6;0;false;false;63;95;191;;; -137539;1;0;false;false;;;;;; -137540;2;0;false;false;63;95;191;;; -137542;6;0;false;false;;;;;; -137548;1;0;false;false;63;95;191;;; -137549;2;0;false;false;;;;;; -137551;10;0;false;false;63;95;191;;; -137561;2;0;false;false;;;;;; -137563;2;0;false;false;63;95;191;;; -137565;1;0;false;false;;;;;; -137566;9;0;false;false;63;95;191;;; -137575;1;0;false;false;;;;;; -137576;2;0;false;false;63;95;191;;; -137578;1;0;false;false;;;;;; -137579;1;0;false;false;63;95;191;;; -137580;1;0;false;false;;;;;; -137581;9;0;false;false;63;95;191;;; -137590;1;0;false;false;;;;;; -137591;2;0;false;false;63;95;191;;; -137593;1;0;false;false;;;;;; -137594;5;0;false;false;63;95;191;;; -137599;1;0;false;false;127;127;159;;; -137600;2;0;false;false;63;95;191;;; -137602;1;0;false;false;127;127;159;;; -137603;4;0;false;false;63;95;191;;; -137607;1;0;false;false;;;;;; -137608;6;0;false;false;63;95;191;;; -137614;1;0;false;false;;;;;; -137615;3;0;false;false;63;95;191;;; -137618;1;0;false;false;;;;;; -137619;4;0;false;false;63;95;191;;; -137623;1;0;false;false;127;127;159;;; -137624;2;0;false;false;63;95;191;;; -137626;1;0;false;false;127;127;159;;; -137627;5;0;false;false;63;95;191;;; -137632;4;0;false;false;;;;;; -137636;1;0;false;false;63;95;191;;; -137637;2;0;false;false;;;;;; -137639;7;0;false;false;63;95;191;;; -137646;1;0;false;false;;;;;; -137647;7;0;false;false;63;95;191;;; -137654;1;0;false;false;;;;;; -137655;3;0;false;false;63;95;191;;; -137658;1;0;false;false;;;;;; -137659;11;0;false;false;63;95;191;;; -137670;1;0;false;false;;;;;; -137671;2;0;false;false;63;95;191;;; -137673;1;0;false;false;;;;;; -137674;3;0;false;false;63;95;191;;; -137677;1;0;false;false;;;;;; -137678;5;0;false;false;63;95;191;;; -137683;1;0;false;false;;;;;; -137684;3;0;false;false;63;95;191;;; -137687;1;0;false;false;;;;;; -137688;3;0;false;false;63;95;191;;; -137691;1;0;false;false;;;;;; -137692;2;0;false;false;63;95;191;;; -137694;1;0;false;false;;;;;; -137695;3;0;false;false;63;95;191;;; -137698;1;0;false;false;;;;;; -137699;9;0;false;false;63;95;191;;; -137708;4;0;false;false;;;;;; -137712;1;0;false;false;63;95;191;;; -137713;2;0;false;false;;;;;; -137715;6;0;false;false;63;95;191;;; -137721;1;0;false;false;;;;;; -137722;11;0;false;false;63;95;191;;; -137733;1;0;false;false;;;;;; -137734;2;0;false;false;63;95;191;;; -137736;1;0;false;false;;;;;; -137737;5;0;false;false;63;95;191;;; -137742;1;0;false;false;;;;;; -137743;2;0;false;false;63;95;191;;; -137745;1;0;false;false;;;;;; -137746;9;0;false;false;63;95;191;;; -137755;1;0;false;false;;;;;; -137756;7;0;false;false;63;95;191;;; -137763;1;0;false;false;;;;;; -137764;4;0;false;false;63;95;191;;; -137768;1;0;false;false;;;;;; -137769;3;0;false;false;63;95;191;;; -137772;1;0;false;false;;;;;; -137773;9;0;false;false;63;95;191;;; -137782;1;0;false;false;;;;;; -137783;2;0;false;false;63;95;191;;; -137785;1;0;false;false;;;;;; -137786;6;0;false;false;63;95;191;;; -137792;3;0;false;false;;;;;; -137795;1;0;false;false;63;95;191;;; -137796;1;0;false;false;;;;;; -137797;11;1;false;false;127;159;191;;; -137808;12;0;false;false;63;95;191;;; -137820;1;0;false;false;;;;;; -137821;4;0;false;false;127;127;159;;; -137825;3;0;false;false;;;;;; -137828;1;0;false;false;63;95;191;;; -137829;4;0;false;false;;;;;; -137833;4;0;false;false;127;127;159;;; -137837;21;0;false;false;63;95;191;;; -137858;1;0;false;false;;;;;; -137859;1;0;false;false;127;127;159;;; -137860;1;0;false;false;;;;;; -137861;2;0;false;false;63;95;191;;; -137863;1;0;false;false;;;;;; -137864;3;0;false;false;63;95;191;;; -137867;1;0;false;false;;;;;; -137868;8;0;false;false;63;95;191;;; -137876;1;0;false;false;;;;;; -137877;3;0;false;false;63;95;191;;; -137880;1;0;false;false;;;;;; -137881;4;0;false;false;63;95;191;;; -137885;1;0;false;false;;;;;; -137886;8;0;false;false;63;95;191;;; -137894;5;0;false;false;127;127;159;;; -137899;3;0;false;false;;;;;; -137902;1;0;false;false;63;95;191;;; -137903;4;0;false;false;;;;;; -137907;4;0;false;false;127;127;159;;; -137911;27;0;false;false;63;95;191;;; -137938;1;0;false;false;;;;;; -137939;1;0;false;false;127;127;159;;; -137940;1;0;false;false;;;;;; -137941;2;0;false;false;63;95;191;;; -137943;1;0;false;false;;;;;; -137944;3;0;false;false;63;95;191;;; -137947;1;0;false;false;;;;;; -137948;6;0;false;false;63;95;191;;; -137954;1;0;false;false;;;;;; -137955;4;0;false;false;63;95;191;;; -137959;1;0;false;false;;;;;; -137960;3;0;false;false;63;95;191;;; -137963;1;0;false;false;;;;;; -137964;6;0;false;false;63;95;191;;; -137970;1;0;false;false;;;;;; -137971;4;0;false;false;63;95;191;;; -137975;1;0;false;false;;;;;; -137976;7;0;false;false;63;95;191;;; -137983;1;0;false;false;;;;;; -137984;3;0;false;false;63;95;191;;; -137987;1;0;false;false;;;;;; -137988;8;0;false;false;63;95;191;;; -137996;5;0;false;false;127;127;159;;; -138001;3;0;false;false;;;;;; -138004;1;0;false;false;63;95;191;;; -138005;1;0;false;false;;;;;; -138006;5;0;false;false;127;127;159;;; -138011;3;0;false;false;;;;;; -138014;2;0;false;false;63;95;191;;; -138016;2;0;false;false;;;;;; -138018;6;1;false;false;127;0;85;;; -138024;1;0;false;false;;;;;; -138025;5;0;false;false;0;0;0;;; -138030;1;0;false;false;;;;;; -138031;19;0;false;false;0;0;0;;; -138050;1;0;false;false;;;;;; -138051;1;0;false;false;0;0;0;;; -138052;3;0;false;false;;;;;; -138055;14;0;false;false;0;0;0;;; -138069;3;0;false;false;;;;;; -138072;6;1;false;false;127;0;85;;; -138078;1;0;false;false;;;;;; -138079;3;1;false;false;127;0;85;;; -138082;1;0;false;false;;;;;; -138083;18;0;false;false;0;0;0;;; -138101;1;0;false;false;;;;;; -138102;11;0;false;false;0;0;0;;; -138113;1;0;false;false;;;;;; -138114;1;0;false;false;0;0;0;;; -138115;1;0;false;false;;;;;; -138116;13;0;false;false;0;0;0;;; -138129;2;0;false;false;;;;;; -138131;1;0;false;false;0;0;0;;; -138132;2;0;false;false;;;;;; -138134;3;0;false;false;63;95;191;;; -138137;3;0;false;false;;;;;; -138140;1;0;false;false;63;95;191;;; -138141;1;0;false;false;;;;;; -138142;7;0;false;false;63;95;191;;; -138149;1;0;false;false;;;;;; -138150;3;0;false;false;63;95;191;;; -138153;1;0;false;false;;;;;; -138154;10;0;false;false;63;95;191;;; -138164;1;0;false;false;;;;;; -138165;9;0;false;false;63;95;191;;; -138174;1;0;false;false;;;;;; -138175;10;0;false;false;63;95;191;;; -138185;1;0;false;false;;;;;; -138186;6;0;false;false;63;95;191;;; -138192;3;0;false;false;;;;;; -138195;1;0;false;false;63;95;191;;; -138196;3;0;false;false;;;;;; -138199;1;0;false;false;63;95;191;;; -138200;1;0;false;false;;;;;; -138201;8;1;false;false;127;159;191;;; -138209;3;0;false;false;63;95;191;;; -138212;1;0;false;false;;;;;; -138213;9;0;false;false;63;95;191;;; -138222;1;0;false;false;;;;;; -138223;10;0;false;false;63;95;191;;; -138233;1;0;false;false;;;;;; -138234;5;0;false;false;63;95;191;;; -138239;3;0;false;false;;;;;; -138242;1;0;false;false;63;95;191;;; -138243;3;0;false;false;;;;;; -138246;1;0;false;false;63;95;191;;; -138247;1;0;false;false;;;;;; -138248;11;1;false;false;127;159;191;;; -138259;12;0;false;false;63;95;191;;; -138271;1;0;false;false;;;;;; -138272;4;0;false;false;127;127;159;;; -138276;3;0;false;false;;;;;; -138279;1;0;false;false;63;95;191;;; -138280;4;0;false;false;;;;;; -138284;4;0;false;false;127;127;159;;; -138288;21;0;false;false;63;95;191;;; -138309;1;0;false;false;;;;;; -138310;1;0;false;false;127;127;159;;; -138311;1;0;false;false;;;;;; -138312;2;0;false;false;63;95;191;;; -138314;1;0;false;false;;;;;; -138315;3;0;false;false;63;95;191;;; -138318;1;0;false;false;;;;;; -138319;8;0;false;false;63;95;191;;; -138327;1;0;false;false;;;;;; -138328;3;0;false;false;63;95;191;;; -138331;1;0;false;false;;;;;; -138332;4;0;false;false;63;95;191;;; -138336;1;0;false;false;;;;;; -138337;8;0;false;false;63;95;191;;; -138345;5;0;false;false;127;127;159;;; -138350;3;0;false;false;;;;;; -138353;1;0;false;false;63;95;191;;; -138354;4;0;false;false;;;;;; -138358;4;0;false;false;127;127;159;;; -138362;27;0;false;false;63;95;191;;; -138389;1;0;false;false;;;;;; -138390;1;0;false;false;127;127;159;;; -138391;1;0;false;false;;;;;; -138392;2;0;false;false;63;95;191;;; -138394;1;0;false;false;;;;;; -138395;3;0;false;false;63;95;191;;; -138398;1;0;false;false;;;;;; -138399;6;0;false;false;63;95;191;;; -138405;1;0;false;false;;;;;; -138406;4;0;false;false;63;95;191;;; -138410;1;0;false;false;;;;;; -138411;3;0;false;false;63;95;191;;; -138414;1;0;false;false;;;;;; -138415;6;0;false;false;63;95;191;;; -138421;1;0;false;false;;;;;; -138422;4;0;false;false;63;95;191;;; -138426;1;0;false;false;;;;;; -138427;7;0;false;false;63;95;191;;; -138434;1;0;false;false;;;;;; -138435;3;0;false;false;63;95;191;;; -138438;1;0;false;false;;;;;; -138439;8;0;false;false;63;95;191;;; -138447;5;0;false;false;127;127;159;;; -138452;3;0;false;false;;;;;; -138455;1;0;false;false;63;95;191;;; -138456;1;0;false;false;;;;;; -138457;5;0;false;false;127;127;159;;; -138462;3;0;false;false;;;;;; -138465;1;0;false;false;63;95;191;;; -138466;1;0;false;false;;;;;; -138467;7;1;false;false;127;159;191;;; -138474;3;0;false;false;63;95;191;;; -138477;3;0;false;false;;;;;; -138480;2;0;false;false;63;95;191;;; -138482;2;0;false;false;;;;;; -138484;6;1;false;false;127;0;85;;; -138490;1;0;false;false;;;;;; -138491;5;0;false;false;0;0;0;;; -138496;1;0;false;false;;;;;; -138497;24;0;false;false;0;0;0;;; -138521;1;0;false;false;;;;;; -138522;1;0;false;false;0;0;0;;; -138523;3;0;false;false;;;;;; -138526;14;0;false;false;0;0;0;;; -138540;3;0;false;false;;;;;; -138543;2;1;false;false;127;0;85;;; -138545;1;0;false;false;;;;;; -138546;20;0;false;false;0;0;0;;; -138566;1;0;false;false;;;;;; -138567;2;0;false;false;0;0;0;;; -138569;1;0;false;false;;;;;; -138570;4;1;false;false;127;0;85;;; -138574;1;0;false;false;0;0;0;;; -138575;1;0;false;false;;;;;; -138576;1;0;false;false;0;0;0;;; -138577;4;0;false;false;;;;;; -138581;6;1;false;false;127;0;85;;; -138587;1;0;false;false;;;;;; -138588;54;0;false;false;0;0;0;;; -138642;3;0;false;false;;;;;; -138645;1;0;false;false;0;0;0;;; -138646;3;0;false;false;;;;;; -138649;6;1;false;false;127;0;85;;; -138655;1;0;false;false;;;;;; -138656;20;0;false;false;0;0;0;;; -138676;2;0;false;false;;;;;; -138678;1;0;false;false;0;0;0;;; -138679;2;0;false;false;;;;;; -138681;3;0;false;false;63;95;191;;; -138684;3;0;false;false;;;;;; -138687;1;0;false;false;63;95;191;;; -138688;1;0;false;false;;;;;; -138689;4;0;false;false;63;95;191;;; -138693;1;0;false;false;;;;;; -138694;3;0;false;false;63;95;191;;; -138697;1;0;false;false;;;;;; -138698;6;0;false;false;63;95;191;;; -138704;1;0;false;false;;;;;; -138705;2;0;false;false;63;95;191;;; -138707;1;0;false;false;;;;;; -138708;8;0;false;false;63;95;191;;; -138716;1;0;false;false;;;;;; -138717;11;0;false;false;63;95;191;;; -138728;3;0;false;false;;;;;; -138731;1;0;false;false;63;95;191;;; -138732;1;0;false;false;;;;;; -138733;3;0;false;false;127;127;159;;; -138736;3;0;false;false;;;;;; -138739;1;0;false;false;63;95;191;;; -138740;3;0;false;false;;;;;; -138743;1;0;false;false;63;95;191;;; -138744;1;0;false;false;;;;;; -138745;8;1;false;false;127;159;191;;; -138753;3;0;false;false;63;95;191;;; -138756;1;0;false;false;;;;;; -138757;6;0;false;false;63;95;191;;; -138763;1;0;false;false;;;;;; -138764;2;0;false;false;63;95;191;;; -138766;1;0;false;false;;;;;; -138767;8;0;false;false;63;95;191;;; -138775;1;0;false;false;;;;;; -138776;11;0;false;false;63;95;191;;; -138787;3;0;false;false;;;;;; -138790;1;0;false;false;63;95;191;;; -138791;1;0;false;false;;;;;; -138792;11;1;false;false;127;159;191;;; -138803;12;0;false;false;63;95;191;;; -138815;1;0;false;false;;;;;; -138816;4;0;false;false;127;127;159;;; -138820;3;0;false;false;;;;;; -138823;1;0;false;false;63;95;191;;; -138824;4;0;false;false;;;;;; -138828;4;0;false;false;127;127;159;;; -138832;21;0;false;false;63;95;191;;; -138853;1;0;false;false;;;;;; -138854;1;0;false;false;127;127;159;;; -138855;1;0;false;false;;;;;; -138856;2;0;false;false;63;95;191;;; -138858;1;0;false;false;;;;;; -138859;3;0;false;false;63;95;191;;; -138862;1;0;false;false;;;;;; -138863;8;0;false;false;63;95;191;;; -138871;1;0;false;false;;;;;; -138872;3;0;false;false;63;95;191;;; -138875;1;0;false;false;;;;;; -138876;4;0;false;false;63;95;191;;; -138880;1;0;false;false;;;;;; -138881;8;0;false;false;63;95;191;;; -138889;5;0;false;false;127;127;159;;; -138894;3;0;false;false;;;;;; -138897;1;0;false;false;63;95;191;;; -138898;4;0;false;false;;;;;; -138902;4;0;false;false;127;127;159;;; -138906;27;0;false;false;63;95;191;;; -138933;1;0;false;false;;;;;; -138934;1;0;false;false;127;127;159;;; -138935;1;0;false;false;;;;;; -138936;2;0;false;false;63;95;191;;; -138938;1;0;false;false;;;;;; -138939;3;0;false;false;63;95;191;;; -138942;1;0;false;false;;;;;; -138943;6;0;false;false;63;95;191;;; -138949;1;0;false;false;;;;;; -138950;4;0;false;false;63;95;191;;; -138954;1;0;false;false;;;;;; -138955;3;0;false;false;63;95;191;;; -138958;1;0;false;false;;;;;; -138959;6;0;false;false;63;95;191;;; -138965;1;0;false;false;;;;;; -138966;4;0;false;false;63;95;191;;; -138970;1;0;false;false;;;;;; -138971;7;0;false;false;63;95;191;;; -138978;1;0;false;false;;;;;; -138979;3;0;false;false;63;95;191;;; -138982;1;0;false;false;;;;;; -138983;8;0;false;false;63;95;191;;; -138991;5;0;false;false;127;127;159;;; -138996;3;0;false;false;;;;;; -138999;1;0;false;false;63;95;191;;; -139000;1;0;false;false;;;;;; -139001;5;0;false;false;127;127;159;;; -139006;3;0;false;false;;;;;; -139009;2;0;false;false;63;95;191;;; -139011;2;0;false;false;;;;;; -139013;6;1;false;false;127;0;85;;; -139019;1;0;false;false;;;;;; -139020;3;1;false;false;127;0;85;;; -139023;1;0;false;false;;;;;; -139024;19;0;false;false;0;0;0;;; -139043;1;0;false;false;;;;;; -139044;1;0;false;false;0;0;0;;; -139045;3;0;false;false;;;;;; -139048;14;0;false;false;0;0;0;;; -139062;3;0;false;false;;;;;; -139065;6;1;false;false;127;0;85;;; -139071;1;0;false;false;;;;;; -139072;22;0;false;false;0;0;0;;; -139094;2;0;false;false;;;;;; -139096;1;0;false;false;0;0;0;;; -139097;2;0;false;false;;;;;; -139099;3;0;false;false;63;95;191;;; -139102;3;0;false;false;;;;;; -139105;1;0;false;false;63;95;191;;; -139106;1;0;false;false;;;;;; -139107;7;0;false;false;63;95;191;;; -139114;1;0;false;false;;;;;; -139115;3;0;false;false;63;95;191;;; -139118;1;0;false;false;;;;;; -139119;10;0;false;false;63;95;191;;; -139129;1;0;false;false;;;;;; -139130;9;0;false;false;63;95;191;;; -139139;1;0;false;false;;;;;; -139140;10;0;false;false;63;95;191;;; -139150;1;0;false;false;;;;;; -139151;6;0;false;false;63;95;191;;; -139157;3;0;false;false;;;;;; -139160;1;0;false;false;63;95;191;;; -139161;3;0;false;false;;;;;; -139164;1;0;false;false;63;95;191;;; -139165;1;0;false;false;;;;;; -139166;8;1;false;false;127;159;191;;; -139174;3;0;false;false;63;95;191;;; -139177;1;0;false;false;;;;;; -139178;9;0;false;false;63;95;191;;; -139187;1;0;false;false;;;;;; -139188;10;0;false;false;63;95;191;;; -139198;1;0;false;false;;;;;; -139199;5;0;false;false;63;95;191;;; -139204;3;0;false;false;;;;;; -139207;1;0;false;false;63;95;191;;; -139208;3;0;false;false;;;;;; -139211;1;0;false;false;63;95;191;;; -139212;1;0;false;false;;;;;; -139213;11;1;false;false;127;159;191;;; -139224;12;0;false;false;63;95;191;;; -139236;1;0;false;false;;;;;; -139237;4;0;false;false;127;127;159;;; -139241;3;0;false;false;;;;;; -139244;1;0;false;false;63;95;191;;; -139245;4;0;false;false;;;;;; -139249;4;0;false;false;127;127;159;;; -139253;21;0;false;false;63;95;191;;; -139274;1;0;false;false;;;;;; -139275;1;0;false;false;127;127;159;;; -139276;1;0;false;false;;;;;; -139277;2;0;false;false;63;95;191;;; -139279;1;0;false;false;;;;;; -139280;3;0;false;false;63;95;191;;; -139283;1;0;false;false;;;;;; -139284;8;0;false;false;63;95;191;;; -139292;1;0;false;false;;;;;; -139293;3;0;false;false;63;95;191;;; -139296;1;0;false;false;;;;;; -139297;4;0;false;false;63;95;191;;; -139301;1;0;false;false;;;;;; -139302;8;0;false;false;63;95;191;;; -139310;5;0;false;false;127;127;159;;; -139315;3;0;false;false;;;;;; -139318;1;0;false;false;63;95;191;;; -139319;4;0;false;false;;;;;; -139323;4;0;false;false;127;127;159;;; -139327;27;0;false;false;63;95;191;;; -139354;1;0;false;false;;;;;; -139355;1;0;false;false;127;127;159;;; -139356;1;0;false;false;;;;;; -139357;2;0;false;false;63;95;191;;; -139359;1;0;false;false;;;;;; -139360;3;0;false;false;63;95;191;;; -139363;1;0;false;false;;;;;; -139364;6;0;false;false;63;95;191;;; -139370;1;0;false;false;;;;;; -139371;4;0;false;false;63;95;191;;; -139375;1;0;false;false;;;;;; -139376;3;0;false;false;63;95;191;;; -139379;1;0;false;false;;;;;; -139380;6;0;false;false;63;95;191;;; -139386;1;0;false;false;;;;;; -139387;4;0;false;false;63;95;191;;; -139391;1;0;false;false;;;;;; -139392;7;0;false;false;63;95;191;;; -139399;1;0;false;false;;;;;; -139400;3;0;false;false;63;95;191;;; -139403;1;0;false;false;;;;;; -139404;8;0;false;false;63;95;191;;; -139412;5;0;false;false;127;127;159;;; -139417;3;0;false;false;;;;;; -139420;1;0;false;false;63;95;191;;; -139421;1;0;false;false;;;;;; -139422;5;0;false;false;127;127;159;;; -139427;3;0;false;false;;;;;; -139430;1;0;false;false;63;95;191;;; -139431;1;0;false;false;;;;;; -139432;7;1;false;false;127;159;191;;; -139439;3;0;false;false;63;95;191;;; -139442;3;0;false;false;;;;;; -139445;2;0;false;false;63;95;191;;; -139447;2;0;false;false;;;;;; -139449;6;1;false;false;127;0;85;;; -139455;1;0;false;false;;;;;; -139456;5;0;false;false;0;0;0;;; -139461;1;0;false;false;;;;;; -139462;24;0;false;false;0;0;0;;; -139486;1;0;false;false;;;;;; -139487;1;0;false;false;0;0;0;;; -139488;3;0;false;false;;;;;; -139491;14;0;false;false;0;0;0;;; -139505;3;0;false;false;;;;;; -139508;2;1;false;false;127;0;85;;; -139510;1;0;false;false;;;;;; -139511;20;0;false;false;0;0;0;;; -139531;1;0;false;false;;;;;; -139532;2;0;false;false;0;0;0;;; -139534;1;0;false;false;;;;;; -139535;4;1;false;false;127;0;85;;; -139539;1;0;false;false;0;0;0;;; -139540;1;0;false;false;;;;;; -139541;1;0;false;false;0;0;0;;; -139542;4;0;false;false;;;;;; -139546;6;1;false;false;127;0;85;;; -139552;1;0;false;false;;;;;; -139553;59;0;false;false;0;0;0;;; -139612;3;0;false;false;;;;;; -139615;1;0;false;false;0;0;0;;; -139616;3;0;false;false;;;;;; -139619;6;1;false;false;127;0;85;;; -139625;1;0;false;false;;;;;; -139626;20;0;false;false;0;0;0;;; -139646;2;0;false;false;;;;;; -139648;1;0;false;false;0;0;0;;; -139649;2;0;false;false;;;;;; -139651;3;0;false;false;63;95;191;;; -139654;3;0;false;false;;;;;; -139657;1;0;false;false;63;95;191;;; -139658;1;0;false;false;;;;;; -139659;7;0;false;false;63;95;191;;; -139666;1;0;false;false;;;;;; -139667;3;0;false;false;63;95;191;;; -139670;1;0;false;false;;;;;; -139671;8;0;false;false;63;95;191;;; -139679;1;0;false;false;;;;;; -139680;5;0;false;false;63;95;191;;; -139685;3;0;false;false;;;;;; -139688;1;0;false;false;63;95;191;;; -139689;1;0;false;false;;;;;; -139690;3;0;false;false;127;127;159;;; -139693;3;0;false;false;;;;;; -139696;1;0;false;false;63;95;191;;; -139697;3;0;false;false;;;;;; -139700;1;0;false;false;63;95;191;;; -139701;1;0;false;false;;;;;; -139702;8;1;false;false;127;159;191;;; -139710;8;0;false;false;63;95;191;;; -139718;1;0;false;false;;;;;; -139719;5;0;false;false;63;95;191;;; -139724;1;0;false;false;;;;;; -139725;2;0;false;false;63;95;191;;; -139727;1;0;false;false;;;;;; -139728;2;0;false;false;63;95;191;;; -139730;1;0;false;false;;;;;; -139731;5;0;false;false;63;95;191;;; -139736;1;0;false;false;;;;;; -139737;6;0;false;false;63;95;191;;; -139743;1;0;false;false;;;;;; -139744;2;0;false;false;63;95;191;;; -139746;1;0;false;false;;;;;; -139747;5;0;false;false;63;95;191;;; -139752;1;0;false;false;;;;;; -139753;2;0;false;false;63;95;191;;; -139755;1;0;false;false;;;;;; -139756;2;0;false;false;63;95;191;;; -139758;1;0;false;false;;;;;; -139759;10;0;false;false;63;95;191;;; -139769;3;0;false;false;;;;;; -139772;1;0;false;false;63;95;191;;; -139773;1;0;false;false;;;;;; -139774;11;1;false;false;127;159;191;;; -139785;12;0;false;false;63;95;191;;; -139797;1;0;false;false;;;;;; -139798;4;0;false;false;127;127;159;;; -139802;3;0;false;false;;;;;; -139805;1;0;false;false;63;95;191;;; -139806;4;0;false;false;;;;;; -139810;4;0;false;false;127;127;159;;; -139814;21;0;false;false;63;95;191;;; -139835;1;0;false;false;;;;;; -139836;1;0;false;false;127;127;159;;; -139837;1;0;false;false;;;;;; -139838;2;0;false;false;63;95;191;;; -139840;1;0;false;false;;;;;; -139841;3;0;false;false;63;95;191;;; -139844;1;0;false;false;;;;;; -139845;8;0;false;false;63;95;191;;; -139853;1;0;false;false;;;;;; -139854;3;0;false;false;63;95;191;;; -139857;1;0;false;false;;;;;; -139858;4;0;false;false;63;95;191;;; -139862;1;0;false;false;;;;;; -139863;8;0;false;false;63;95;191;;; -139871;5;0;false;false;127;127;159;;; -139876;3;0;false;false;;;;;; -139879;1;0;false;false;63;95;191;;; -139880;4;0;false;false;;;;;; -139884;4;0;false;false;127;127;159;;; -139888;27;0;false;false;63;95;191;;; -139915;1;0;false;false;;;;;; -139916;1;0;false;false;127;127;159;;; -139917;1;0;false;false;;;;;; -139918;2;0;false;false;63;95;191;;; -139920;1;0;false;false;;;;;; -139921;3;0;false;false;63;95;191;;; -139924;1;0;false;false;;;;;; -139925;6;0;false;false;63;95;191;;; -139931;1;0;false;false;;;;;; -139932;4;0;false;false;63;95;191;;; -139936;1;0;false;false;;;;;; -139937;3;0;false;false;63;95;191;;; -139940;1;0;false;false;;;;;; -139941;6;0;false;false;63;95;191;;; -139947;1;0;false;false;;;;;; -139948;4;0;false;false;63;95;191;;; -139952;1;0;false;false;;;;;; -139953;7;0;false;false;63;95;191;;; -139960;1;0;false;false;;;;;; -139961;3;0;false;false;63;95;191;;; -139964;1;0;false;false;;;;;; -139965;8;0;false;false;63;95;191;;; -139973;5;0;false;false;127;127;159;;; -139978;3;0;false;false;;;;;; -139981;1;0;false;false;63;95;191;;; -139982;1;0;false;false;;;;;; -139983;5;0;false;false;127;127;159;;; -139988;3;0;false;false;;;;;; -139991;2;0;false;false;63;95;191;;; -139993;2;0;false;false;;;;;; -139995;6;1;false;false;127;0;85;;; -140001;1;0;false;false;;;;;; -140002;6;0;false;false;0;0;0;;; -140008;1;0;false;false;;;;;; -140009;18;0;false;false;0;0;0;;; -140027;1;0;false;false;;;;;; -140028;1;0;false;false;0;0;0;;; -140029;3;0;false;false;;;;;; -140032;14;0;false;false;0;0;0;;; -140046;3;0;false;false;;;;;; -140049;6;1;false;false;127;0;85;;; -140055;1;0;false;false;;;;;; -140056;33;0;false;false;0;0;0;;; -140089;1;0;false;false;;;;;; -140090;11;0;false;false;0;0;0;;; -140101;1;0;false;false;;;;;; -140102;1;0;false;false;0;0;0;;; -140103;1;0;false;false;;;;;; -140104;13;0;false;false;0;0;0;;; -140117;2;0;false;false;;;;;; -140119;1;0;false;false;0;0;0;;; -140120;4;0;false;false;;;;;; -140124;6;1;false;false;127;0;85;;; -140130;1;0;false;false;;;;;; -140131;3;1;false;false;127;0;85;;; -140134;1;0;false;false;;;;;; -140135;10;0;false;false;0;0;0;;; -140145;1;0;false;false;;;;;; -140146;1;0;false;false;0;0;0;;; -140147;3;0;false;false;;;;;; -140150;3;1;false;false;127;0;85;;; -140153;1;0;false;false;;;;;; -140154;5;0;false;false;0;0;0;;; -140159;1;0;false;false;;;;;; -140160;1;0;false;false;0;0;0;;; -140161;1;0;false;false;;;;;; -140162;5;1;false;false;127;0;85;;; -140167;12;0;false;false;0;0;0;;; -140179;3;0;false;false;;;;;; -140182;5;0;false;false;0;0;0;;; -140187;1;0;false;false;;;;;; -140188;2;0;false;false;0;0;0;;; -140190;1;0;false;false;;;;;; -140191;19;0;false;false;0;0;0;;; -140210;1;0;false;false;;;;;; -140211;1;0;false;false;0;0;0;;; -140212;1;0;false;false;;;;;; -140213;17;0;false;false;0;0;0;;; -140230;1;0;false;false;;;;;; -140231;1;0;false;false;0;0;0;;; -140232;1;0;false;false;;;;;; -140233;14;0;false;false;0;0;0;;; -140247;3;0;false;false;;;;;; -140250;2;1;false;false;127;0;85;;; -140252;1;0;false;false;;;;;; -140253;14;0;false;false;0;0;0;;; -140267;1;0;false;false;;;;;; -140268;1;0;false;false;0;0;0;;; -140269;4;0;false;false;;;;;; -140273;5;0;false;false;0;0;0;;; -140278;1;0;false;false;;;;;; -140279;2;0;false;false;0;0;0;;; -140281;1;0;false;false;;;;;; -140282;17;0;false;false;0;0;0;;; -140299;1;0;false;false;;;;;; -140300;1;0;false;false;0;0;0;;; -140301;1;0;false;false;;;;;; -140302;13;0;false;false;0;0;0;;; -140315;3;0;false;false;;;;;; -140318;1;0;false;false;0;0;0;;; -140319;1;0;false;false;;;;;; -140320;4;1;false;false;127;0;85;;; -140324;1;0;false;false;;;;;; -140325;1;0;false;false;0;0;0;;; -140326;4;0;false;false;;;;;; -140330;5;0;false;false;0;0;0;;; -140335;1;0;false;false;;;;;; -140336;2;0;false;false;0;0;0;;; -140338;1;0;false;false;;;;;; -140339;18;0;false;false;0;0;0;;; -140357;3;0;false;false;;;;;; -140360;1;0;false;false;0;0;0;;; -140361;3;0;false;false;;;;;; -140364;6;1;false;false;127;0;85;;; -140370;1;0;false;false;;;;;; -140371;6;0;false;false;0;0;0;;; -140377;2;0;false;false;;;;;; -140379;1;0;false;false;0;0;0;;; -140380;4;0;false;false;;;;;; -140384;3;0;false;false;63;95;191;;; -140387;3;0;false;false;;;;;; -140390;1;0;false;false;63;95;191;;; -140391;1;0;false;false;;;;;; -140392;7;0;false;false;63;95;191;;; -140399;1;0;false;false;;;;;; -140400;3;0;false;false;63;95;191;;; -140403;1;0;false;false;;;;;; -140404;4;0;false;false;63;95;191;;; -140408;1;0;false;false;;;;;; -140409;8;0;false;false;63;95;191;;; -140417;1;0;false;false;;;;;; -140418;4;0;false;false;63;95;191;;; -140422;1;0;false;false;;;;;; -140423;6;0;false;false;63;95;191;;; -140429;1;0;false;false;;;;;; -140430;2;0;false;false;63;95;191;;; -140432;1;0;false;false;;;;;; -140433;7;0;false;false;63;95;191;;; -140440;1;0;false;false;;;;;; -140441;2;0;false;false;63;95;191;;; -140443;1;0;false;false;;;;;; -140444;2;0;false;false;63;95;191;;; -140446;1;0;false;false;;;;;; -140447;4;0;false;false;63;95;191;;; -140451;4;0;false;false;;;;;; -140455;1;0;false;false;63;95;191;;; -140456;1;0;false;false;;;;;; -140457;3;0;false;false;63;95;191;;; -140460;1;0;false;false;;;;;; -140461;1;0;false;false;63;95;191;;; -140462;1;0;false;false;;;;;; -140463;9;0;false;false;63;95;191;;; -140472;1;0;false;false;;;;;; -140473;9;0;false;false;63;95;191;;; -140482;1;0;false;false;;;;;; -140483;4;0;false;false;63;95;191;;; -140487;1;0;false;false;;;;;; -140488;3;0;false;false;63;95;191;;; -140491;1;0;false;false;;;;;; -140492;11;0;false;false;63;95;191;;; -140503;1;0;false;false;;;;;; -140504;5;0;false;false;63;95;191;;; -140509;3;0;false;false;;;;;; -140512;1;0;false;false;63;95;191;;; -140513;1;0;false;false;;;;;; -140514;3;0;false;false;127;127;159;;; -140517;3;0;false;false;;;;;; -140520;1;0;false;false;63;95;191;;; -140521;3;0;false;false;;;;;; -140524;1;0;false;false;63;95;191;;; -140525;1;0;false;false;;;;;; -140526;7;1;false;false;127;159;191;;; -140533;10;0;false;false;63;95;191;;; -140543;1;0;false;false;;;;;; -140544;6;0;false;false;63;95;191;;; -140550;1;0;false;false;;;;;; -140551;2;0;false;false;63;95;191;;; -140553;1;0;false;false;;;;;; -140554;3;0;false;false;63;95;191;;; -140557;1;0;false;false;;;;;; -140558;5;0;false;false;63;95;191;;; -140563;1;0;false;false;;;;;; -140564;9;0;false;false;63;95;191;;; -140573;1;0;false;false;;;;;; -140574;2;0;false;false;63;95;191;;; -140576;1;0;false;false;;;;;; -140577;3;0;false;false;63;95;191;;; -140580;1;0;false;false;;;;;; -140581;5;0;false;false;63;95;191;;; -140586;4;0;false;false;;;;;; -140590;1;0;false;false;63;95;191;;; -140591;2;0;false;false;;;;;; -140593;1;0;false;false;63;95;191;;; -140594;1;0;false;false;;;;;; -140595;5;0;false;false;63;95;191;;; -140600;1;0;false;false;;;;;; -140601;4;0;false;false;63;95;191;;; -140605;1;0;false;false;;;;;; -140606;3;0;false;false;63;95;191;;; -140609;1;0;false;false;;;;;; -140610;9;0;false;false;63;95;191;;; -140619;1;0;false;false;;;;;; -140620;2;0;false;false;63;95;191;;; -140622;1;0;false;false;;;;;; -140623;3;0;false;false;63;95;191;;; -140626;1;0;false;false;;;;;; -140627;9;0;false;false;63;95;191;;; -140636;3;0;false;false;;;;;; -140639;1;0;false;false;63;95;191;;; -140640;1;0;false;false;;;;;; -140641;7;1;false;false;127;159;191;;; -140648;4;0;false;false;63;95;191;;; -140652;1;0;false;false;;;;;; -140653;4;0;false;false;63;95;191;;; -140657;1;0;false;false;;;;;; -140658;2;0;false;false;63;95;191;;; -140660;1;0;false;false;;;;;; -140661;3;0;false;false;63;95;191;;; -140664;1;0;false;false;;;;;; -140665;4;0;false;false;63;95;191;;; -140669;1;0;false;false;;;;;; -140670;2;0;false;false;63;95;191;;; -140672;1;0;false;false;;;;;; -140673;7;0;false;false;63;95;191;;; -140680;1;0;false;false;;;;;; -140681;4;0;false;false;63;95;191;;; -140685;1;0;false;false;;;;;; -140686;8;0;false;false;63;95;191;;; -140694;1;0;false;false;;;;;; -140695;3;0;false;false;63;95;191;;; -140698;3;0;false;false;;;;;; -140701;1;0;false;false;63;95;191;;; -140702;1;0;false;false;;;;;; -140703;8;1;false;false;127;159;191;;; -140711;4;0;false;false;63;95;191;;; -140715;1;0;false;false;;;;;; -140716;8;0;false;false;63;95;191;;; -140724;1;0;false;false;;;;;; -140725;4;0;false;false;63;95;191;;; -140729;1;0;false;false;;;;;; -140730;6;0;false;false;63;95;191;;; -140736;1;0;false;false;;;;;; -140737;2;0;false;false;63;95;191;;; -140739;1;0;false;false;;;;;; -140740;7;0;false;false;63;95;191;;; -140747;1;0;false;false;;;;;; -140748;2;0;false;false;63;95;191;;; -140750;1;0;false;false;;;;;; -140751;2;0;false;false;63;95;191;;; -140753;1;0;false;false;;;;;; -140754;4;0;false;false;63;95;191;;; -140758;1;0;false;false;;;;;; -140759;3;0;false;false;63;95;191;;; -140762;1;0;false;false;;;;;; -140763;1;0;false;false;63;95;191;;; -140764;3;0;false;false;;;;;; -140767;1;0;false;false;63;95;191;;; -140768;2;0;false;false;;;;;; -140770;9;0;false;false;63;95;191;;; -140779;1;0;false;false;;;;;; -140780;9;0;false;false;63;95;191;;; -140789;1;0;false;false;;;;;; -140790;4;0;false;false;63;95;191;;; -140794;1;0;false;false;;;;;; -140795;3;0;false;false;63;95;191;;; -140798;1;0;false;false;;;;;; -140799;11;0;false;false;63;95;191;;; -140810;1;0;false;false;;;;;; -140811;5;0;false;false;63;95;191;;; -140816;1;0;false;false;;;;;; -140817;4;0;false;false;63;95;191;;; -140821;1;0;false;false;;;;;; -140822;3;0;false;false;63;95;191;;; -140825;1;0;false;false;;;;;; -140826;5;0;false;false;63;95;191;;; -140831;4;0;false;false;;;;;; -140835;1;0;false;false;63;95;191;;; -140836;2;0;false;false;;;;;; -140838;5;0;false;false;63;95;191;;; -140843;1;0;false;false;;;;;; -140844;2;0;false;false;63;95;191;;; -140846;1;0;false;false;;;;;; -140847;1;0;false;false;63;95;191;;; -140848;1;0;false;false;;;;;; -140849;7;0;false;false;63;95;191;;; -140856;1;0;false;false;;;;;; -140857;2;0;false;false;63;95;191;;; -140859;1;0;false;false;;;;;; -140860;10;0;false;false;63;95;191;;; -140870;1;0;false;false;;;;;; -140871;8;0;false;false;63;95;191;;; -140879;1;0;false;false;;;;;; -140880;2;0;false;false;63;95;191;;; -140882;1;0;false;false;;;;;; -140883;3;0;false;false;63;95;191;;; -140886;1;0;false;false;;;;;; -140887;5;0;false;false;63;95;191;;; -140892;1;0;false;false;;;;;; -140893;2;0;false;false;63;95;191;;; -140895;1;0;false;false;;;;;; -140896;3;0;false;false;63;95;191;;; -140899;4;0;false;false;;;;;; -140903;1;0;false;false;63;95;191;;; -140904;2;0;false;false;;;;;; -140906;5;0;false;false;63;95;191;;; -140911;1;0;false;false;;;;;; -140912;6;0;false;false;63;95;191;;; -140918;1;0;false;false;;;;;; -140919;6;0;false;false;63;95;191;;; -140925;1;0;false;false;;;;;; -140926;4;0;false;false;63;95;191;;; -140930;1;0;false;false;;;;;; -140931;1;0;false;false;63;95;191;;; -140932;1;0;false;false;;;;;; -140933;3;0;false;false;63;95;191;;; -140936;1;0;false;false;;;;;; -140937;4;0;false;false;63;95;191;;; -140941;1;0;false;false;;;;;; -140942;4;0;false;false;63;95;191;;; -140946;1;0;false;false;;;;;; -140947;3;0;false;false;63;95;191;;; -140950;1;0;false;false;;;;;; -140951;4;0;false;false;63;95;191;;; -140955;1;0;false;false;;;;;; -140956;7;0;false;false;63;95;191;;; -140963;4;0;false;false;;;;;; -140967;1;0;false;false;63;95;191;;; -140968;1;0;false;false;;;;;; -140969;11;1;false;false;127;159;191;;; -140980;24;0;false;false;63;95;191;;; -141004;1;0;false;false;;;;;; -141005;4;0;false;false;127;127;159;;; -141009;3;0;false;false;;;;;; -141012;1;0;false;false;63;95;191;;; -141013;4;0;false;false;;;;;; -141017;4;0;false;false;127;127;159;;; -141021;22;0;false;false;63;95;191;;; -141043;1;0;false;false;;;;;; -141044;1;0;false;false;127;127;159;;; -141045;1;0;false;false;;;;;; -141046;2;0;false;false;63;95;191;;; -141048;1;0;false;false;;;;;; -141049;3;0;false;false;63;95;191;;; -141052;1;0;false;false;;;;;; -141053;7;0;false;false;63;95;191;;; -141060;1;0;false;false;;;;;; -141061;7;0;false;false;63;95;191;;; -141068;1;0;false;false;;;;;; -141069;8;0;false;false;63;95;191;;; -141077;4;0;false;false;;;;;; -141081;1;0;false;false;63;95;191;;; -141082;3;0;false;false;;;;;; -141085;2;0;false;false;63;95;191;;; -141087;1;0;false;false;;;;;; -141088;3;0;false;false;63;95;191;;; -141091;1;0;false;false;;;;;; -141092;8;0;false;false;63;95;191;;; -141100;1;0;false;false;;;;;; -141101;2;0;false;false;63;95;191;;; -141103;1;0;false;false;;;;;; -141104;3;0;false;false;63;95;191;;; -141107;1;0;false;false;;;;;; -141108;5;0;false;false;63;95;191;;; -141113;1;0;false;false;;;;;; -141114;4;0;false;false;63;95;191;;; -141118;1;0;false;false;;;;;; -141119;2;0;false;false;63;95;191;;; -141121;1;0;false;false;;;;;; -141122;3;0;false;false;63;95;191;;; -141125;1;0;false;false;;;;;; -141126;3;0;false;false;63;95;191;;; -141129;1;0;false;false;;;;;; -141130;2;0;false;false;63;95;191;;; -141132;1;0;false;false;;;;;; -141133;9;0;false;false;63;95;191;;; -141142;1;0;false;false;;;;;; -141143;6;0;false;false;63;95;191;;; -141149;3;0;false;false;;;;;; -141152;1;0;false;false;63;95;191;;; -141153;3;0;false;false;;;;;; -141156;6;0;false;false;63;95;191;;; -141162;1;0;false;false;;;;;; -141163;3;0;false;false;63;95;191;;; -141166;1;0;false;false;;;;;; -141167;4;0;false;false;63;95;191;;; -141171;1;0;false;false;;;;;; -141172;6;0;false;false;63;95;191;;; -141178;1;0;false;false;;;;;; -141179;2;0;false;false;63;95;191;;; -141181;1;0;false;false;;;;;; -141182;4;0;false;false;63;95;191;;; -141186;1;0;false;false;;;;;; -141187;10;0;false;false;63;95;191;;; -141197;5;0;false;false;127;127;159;;; -141202;3;0;false;false;;;;;; -141205;1;0;false;false;63;95;191;;; -141206;1;0;false;false;;;;;; -141207;5;0;false;false;127;127;159;;; -141212;3;0;false;false;;;;;; -141215;2;0;false;false;63;95;191;;; -141217;2;0;false;false;;;;;; -141219;3;1;false;false;127;0;85;;; -141222;1;0;false;false;;;;;; -141223;2;0;false;false;0;0;0;;; -141225;1;0;false;false;;;;;; -141226;16;0;false;false;0;0;0;;; -141242;3;1;false;false;127;0;85;;; -141245;1;0;false;false;;;;;; -141246;11;0;false;false;0;0;0;;; -141257;1;0;false;false;;;;;; -141258;6;0;false;false;0;0;0;;; -141264;1;0;false;false;;;;;; -141265;5;0;false;false;0;0;0;;; -141270;1;0;false;false;;;;;; -141271;1;0;false;false;0;0;0;;; -141272;3;0;false;false;;;;;; -141275;2;1;false;false;127;0;85;;; -141277;1;0;false;false;;;;;; -141278;31;0;false;false;0;0;0;;; -141309;1;0;false;false;;;;;; -141310;1;0;false;false;0;0;0;;; -141311;4;0;false;false;;;;;; -141315;6;1;false;false;127;0;85;;; -141321;1;0;false;false;;;;;; -141322;34;0;false;false;0;0;0;;; -141356;1;0;false;false;;;;;; -141357;12;0;false;false;0;0;0;;; -141369;3;0;false;false;;;;;; -141372;1;0;false;false;0;0;0;;; -141373;3;0;false;false;;;;;; -141376;15;0;false;false;0;0;0;;; -141391;1;0;false;false;;;;;; -141392;5;0;false;false;0;0;0;;; -141397;1;0;false;false;;;;;; -141398;1;0;false;false;0;0;0;;; -141399;1;0;false;false;;;;;; -141400;30;0;false;false;0;0;0;;; -141430;1;0;false;false;;;;;; -141431;11;0;false;false;0;0;0;;; -141442;1;0;false;false;;;;;; -141443;6;0;false;false;0;0;0;;; -141449;3;0;false;false;;;;;; -141452;3;1;false;false;127;0;85;;; -141455;1;0;false;false;;;;;; -141456;10;0;false;false;0;0;0;;; -141466;1;0;false;false;;;;;; -141467;1;0;false;false;0;0;0;;; -141468;1;0;false;false;;;;;; -141469;14;0;false;false;0;0;0;;; -141483;3;0;false;false;;;;;; -141486;3;1;false;false;127;0;85;;; -141489;2;0;false;false;0;0;0;;; -141491;1;0;false;false;;;;;; -141492;9;0;false;false;0;0;0;;; -141501;3;0;false;false;;;;;; -141504;2;1;false;false;127;0;85;;; -141506;1;0;false;false;;;;;; -141507;6;0;false;false;0;0;0;;; -141513;1;0;false;false;;;;;; -141514;2;0;false;false;0;0;0;;; -141516;1;0;false;false;;;;;; -141517;4;1;false;false;127;0;85;;; -141521;1;0;false;false;;;;;; -141522;2;0;false;false;0;0;0;;; -141524;1;0;false;false;;;;;; -141525;14;0;false;false;0;0;0;;; -141539;1;0;false;false;;;;;; -141540;2;0;false;false;0;0;0;;; -141542;1;0;false;false;;;;;; -141543;4;1;false;false;127;0;85;;; -141547;1;0;false;false;;;;;; -141548;2;0;false;false;0;0;0;;; -141550;1;0;false;false;;;;;; -141551;21;0;false;false;0;0;0;;; -141572;1;0;false;false;;;;;; -141573;2;0;false;false;0;0;0;;; -141575;1;0;false;false;;;;;; -141576;2;0;false;false;0;0;0;;; -141578;1;0;false;false;;;;;; -141579;1;0;false;false;0;0;0;;; -141580;4;0;false;false;;;;;; -141584;8;0;false;false;0;0;0;;; -141592;1;0;false;false;;;;;; -141593;1;0;false;false;0;0;0;;; -141594;1;0;false;false;;;;;; -141595;3;1;false;false;127;0;85;;; -141598;1;0;false;false;;;;;; -141599;3;1;false;false;127;0;85;;; -141602;2;0;false;false;0;0;0;;; -141604;1;0;false;false;;;;;; -141605;3;0;false;false;0;0;0;;; -141608;1;0;false;false;;;;;; -141609;12;0;false;false;0;0;0;;; -141621;3;0;false;false;;;;;; -141624;1;0;false;false;0;0;0;;; -141625;3;0;false;false;;;;;; -141628;4;1;false;false;127;0;85;;; -141632;1;0;false;false;;;;;; -141633;1;0;false;false;0;0;0;;; -141634;4;0;false;false;;;;;; -141638;3;1;false;false;127;0;85;;; -141641;1;0;false;false;;;;;; -141642;12;0;false;false;0;0;0;;; -141654;1;0;false;false;;;;;; -141655;1;0;false;false;0;0;0;;; -141656;1;0;false;false;;;;;; -141657;22;0;false;false;0;0;0;;; -141679;8;0;false;false;;;;;; -141687;35;0;false;false;63;127;95;;; -141722;2;0;false;false;;;;;; -141724;2;1;false;false;127;0;85;;; -141726;1;0;false;false;;;;;; -141727;18;0;false;false;0;0;0;;; -141745;1;0;false;false;;;;;; -141746;2;0;false;false;0;0;0;;; -141748;1;0;false;false;;;;;; -141749;2;0;false;false;0;0;0;;; -141751;1;0;false;false;;;;;; -141752;1;0;false;false;0;0;0;;; -141753;5;0;false;false;;;;;; -141758;38;0;false;false;0;0;0;;; -141796;4;0;false;false;;;;;; -141800;1;0;false;false;0;0;0;;; -141801;6;0;false;false;;;;;; -141807;3;1;false;false;127;0;85;;; -141810;1;0;false;false;;;;;; -141811;1;0;false;false;0;0;0;;; -141812;3;1;false;false;127;0;85;;; -141815;1;0;false;false;;;;;; -141816;1;0;false;false;0;0;0;;; -141817;1;0;false;false;;;;;; -141818;1;0;false;false;0;0;0;;; -141819;1;0;false;false;;;;;; -141820;2;0;false;false;0;0;0;;; -141822;1;0;false;false;;;;;; -141823;1;0;false;false;0;0;0;;; -141824;1;0;false;false;;;;;; -141825;1;0;false;false;0;0;0;;; -141826;1;0;false;false;;;;;; -141827;13;0;false;false;0;0;0;;; -141840;1;0;false;false;;;;;; -141841;4;0;false;false;0;0;0;;; -141845;1;0;false;false;;;;;; -141846;1;0;false;false;0;0;0;;; -141847;5;0;false;false;;;;;; -141852;2;1;false;false;127;0;85;;; -141854;1;0;false;false;;;;;; -141855;18;0;false;false;0;0;0;;; -141873;1;0;false;false;;;;;; -141874;2;0;false;false;0;0;0;;; -141876;1;0;false;false;;;;;; -141877;16;0;false;false;0;0;0;;; -141893;1;0;false;false;;;;;; -141894;1;0;false;false;0;0;0;;; -141895;1;0;false;false;;;;;; -141896;2;0;false;false;0;0;0;;; -141898;1;0;false;false;;;;;; -141899;2;0;false;false;0;0;0;;; -141901;1;0;false;false;;;;;; -141902;17;0;false;false;0;0;0;;; -141919;1;0;false;false;;;;;; -141920;1;0;false;false;0;0;0;;; -141921;1;0;false;false;;;;;; -141922;11;0;false;false;0;0;0;;; -141933;1;0;false;false;;;;;; -141934;1;0;false;false;0;0;0;;; -141935;6;0;false;false;;;;;; -141941;38;0;false;false;0;0;0;;; -141979;5;0;false;false;;;;;; -141984;1;0;false;false;0;0;0;;; -141985;6;0;false;false;;;;;; -141991;1;0;false;false;0;0;0;;; -141992;4;0;false;false;;;;;; -141996;54;0;false;false;63;127;95;;; -142050;2;0;false;false;;;;;; -142052;2;1;false;false;127;0;85;;; -142054;1;0;false;false;;;;;; -142055;28;0;false;false;0;0;0;;; -142083;1;0;false;false;;;;;; -142084;1;0;false;false;0;0;0;;; -142085;1;0;false;false;;;;;; -142086;2;0;false;false;0;0;0;;; -142088;1;0;false;false;;;;;; -142089;2;0;false;false;0;0;0;;; -142091;1;0;false;false;;;;;; -142092;11;0;false;false;0;0;0;;; -142103;1;0;false;false;;;;;; -142104;1;0;false;false;0;0;0;;; -142105;5;0;false;false;;;;;; -142110;8;0;false;false;0;0;0;;; -142118;1;0;false;false;;;;;; -142119;1;0;false;false;0;0;0;;; -142120;1;0;false;false;;;;;; -142121;3;1;false;false;127;0;85;;; -142124;1;0;false;false;;;;;; -142125;3;1;false;false;127;0;85;;; -142128;13;0;false;false;0;0;0;;; -142141;1;0;false;false;;;;;; -142142;1;0;false;false;0;0;0;;; -142143;1;0;false;false;;;;;; -142144;3;0;false;false;0;0;0;;; -142147;5;0;false;false;;;;;; -142152;32;0;false;false;0;0;0;;; -142184;1;0;false;false;;;;;; -142185;2;0;false;false;0;0;0;;; -142187;1;0;false;false;;;;;; -142188;9;0;false;false;0;0;0;;; -142197;1;0;false;false;;;;;; -142198;2;0;false;false;0;0;0;;; -142200;1;0;false;false;;;;;; -142201;14;0;false;false;0;0;0;;; -142215;5;0;false;false;;;;;; -142220;22;0;false;false;0;0;0;;; -142242;1;0;false;false;;;;;; -142243;1;0;false;false;0;0;0;;; -142244;1;0;false;false;;;;;; -142245;11;0;false;false;0;0;0;;; -142256;4;0;false;false;;;;;; -142260;1;0;false;false;0;0;0;;; -142261;4;0;false;false;;;;;; -142265;4;1;false;false;127;0;85;;; -142269;1;0;false;false;;;;;; -142270;1;0;false;false;0;0;0;;; -142271;5;0;false;false;;;;;; -142276;8;0;false;false;0;0;0;;; -142284;1;0;false;false;;;;;; -142285;1;0;false;false;0;0;0;;; -142286;1;0;false;false;;;;;; -142287;15;0;false;false;0;0;0;;; -142302;4;0;false;false;;;;;; -142306;1;0;false;false;0;0;0;;; -142307;3;0;false;false;;;;;; -142310;1;0;false;false;0;0;0;;; -142311;3;0;false;false;;;;;; -142314;6;1;false;false;127;0;85;;; -142320;1;0;false;false;;;;;; -142321;9;0;false;false;0;0;0;;; -142330;2;0;false;false;;;;;; -142332;1;0;false;false;0;0;0;;; -142333;2;0;false;false;;;;;; -142335;3;0;false;false;63;95;191;;; -142338;3;0;false;false;;;;;; -142341;1;0;false;false;63;95;191;;; -142342;1;0;false;false;;;;;; -142343;5;1;false;false;127;159;191;;; -142348;16;0;false;false;63;95;191;;; -142364;3;0;false;false;;;;;; -142367;1;0;false;false;63;95;191;;; -142368;1;0;false;false;;;;;; -142369;8;0;false;false;63;95;191;;; -142377;1;0;false;false;;;;;; -142378;10;0;false;false;63;95;191;;; -142388;1;0;false;false;;;;;; -142389;15;0;false;false;63;95;191;;; -142404;1;0;false;false;;;;;; -142405;4;0;false;false;63;95;191;;; -142409;1;0;false;false;;;;;; -142410;6;0;false;false;63;95;191;;; -142416;1;0;false;false;;;;;; -142417;4;0;false;false;63;95;191;;; -142421;1;0;false;false;;;;;; -142422;3;0;false;false;63;95;191;;; -142425;1;0;false;false;;;;;; -142426;2;0;false;false;63;95;191;;; -142428;1;0;false;false;;;;;; -142429;8;0;false;false;63;95;191;;; -142437;3;0;false;false;;;;;; -142440;2;0;false;false;63;95;191;;; -142442;2;0;false;false;;;;;; -142444;3;1;false;false;127;0;85;;; -142447;1;0;false;false;;;;;; -142448;2;0;false;false;0;0;0;;; -142450;1;0;false;false;;;;;; -142451;35;0;false;false;0;0;0;;; -142486;1;0;false;false;;;;;; -142487;5;0;false;false;0;0;0;;; -142492;1;0;false;false;;;;;; -142493;3;1;false;false;127;0;85;;; -142496;1;0;false;false;;;;;; -142497;11;0;false;false;0;0;0;;; -142508;1;0;false;false;;;;;; -142509;1;0;false;false;0;0;0;;; -142510;3;0;false;false;;;;;; -142513;15;0;false;false;0;0;0;;; -142528;1;0;false;false;;;;;; -142529;6;0;false;false;0;0;0;;; -142535;3;0;false;false;;;;;; -142538;10;0;false;false;0;0;0;;; -142548;1;0;false;false;;;;;; -142549;2;0;false;false;0;0;0;;; -142551;1;0;false;false;;;;;; -142552;6;0;false;false;0;0;0;;; -142558;1;0;false;false;;;;;; -142559;1;0;false;false;0;0;0;;; -142560;1;0;false;false;;;;;; -142561;3;1;false;false;127;0;85;;; -142564;1;0;false;false;;;;;; -142565;10;0;false;false;0;0;0;;; -142575;1;0;false;false;;;;;; -142576;4;0;false;false;0;0;0;;; -142580;3;0;false;false;;;;;; -142583;3;1;false;false;127;0;85;;; -142586;1;0;false;false;;;;;; -142587;10;0;false;false;0;0;0;;; -142597;1;0;false;false;;;;;; -142598;1;0;false;false;0;0;0;;; -142599;1;0;false;false;;;;;; -142600;14;0;false;false;0;0;0;;; -142614;3;0;false;false;;;;;; -142617;2;1;false;false;127;0;85;;; -142619;1;0;false;false;;;;;; -142620;15;0;false;false;0;0;0;;; -142635;1;0;false;false;;;;;; -142636;1;0;false;false;0;0;0;;; -142637;4;0;false;false;;;;;; -142641;6;1;false;false;127;0;85;;; -142647;1;0;false;false;;;;;; -142648;3;1;false;false;127;0;85;;; -142651;1;0;false;false;;;;;; -142652;3;1;false;false;127;0;85;;; -142655;2;0;false;false;0;0;0;;; -142657;1;0;false;false;;;;;; -142658;3;0;false;false;0;0;0;;; -142661;1;0;false;false;;;;;; -142662;12;0;false;false;0;0;0;;; -142674;3;0;false;false;;;;;; -142677;1;0;false;false;0;0;0;;; -142678;3;0;false;false;;;;;; -142681;5;0;false;false;0;0;0;;; -142686;1;0;false;false;;;;;; -142687;1;0;false;false;0;0;0;;; -142688;1;0;false;false;;;;;; -142689;37;0;false;false;0;0;0;;; -142726;1;0;false;false;;;;;; -142727;6;0;false;false;0;0;0;;; -142733;3;0;false;false;;;;;; -142736;2;1;false;false;127;0;85;;; -142738;1;0;false;false;;;;;; -142739;6;0;false;false;0;0;0;;; -142745;1;0;false;false;;;;;; -142746;2;0;false;false;0;0;0;;; -142748;1;0;false;false;;;;;; -142749;4;1;false;false;127;0;85;;; -142753;1;0;false;false;0;0;0;;; -142754;1;0;false;false;;;;;; -142755;1;0;false;false;0;0;0;;; -142756;4;0;false;false;;;;;; -142760;6;0;false;false;0;0;0;;; -142766;1;0;false;false;;;;;; -142767;1;0;false;false;0;0;0;;; -142768;1;0;false;false;;;;;; -142769;13;0;false;false;0;0;0;;; -142782;3;0;false;false;;;;;; -142785;1;0;false;false;0;0;0;;; -142786;3;0;false;false;;;;;; -142789;2;1;false;false;127;0;85;;; -142791;1;0;false;false;;;;;; -142792;14;0;false;false;0;0;0;;; -142806;1;0;false;false;;;;;; -142807;2;0;false;false;0;0;0;;; -142809;1;0;false;false;;;;;; -142810;2;0;false;false;0;0;0;;; -142812;1;0;false;false;;;;;; -142813;1;0;false;false;0;0;0;;; -142814;4;0;false;false;;;;;; -142818;6;1;false;false;127;0;85;;; -142824;1;0;false;false;;;;;; -142825;3;1;false;false;127;0;85;;; -142828;1;0;false;false;;;;;; -142829;3;1;false;false;127;0;85;;; -142832;2;0;false;false;0;0;0;;; -142834;1;0;false;false;;;;;; -142835;3;0;false;false;0;0;0;;; -142838;1;0;false;false;;;;;; -142839;12;0;false;false;0;0;0;;; -142851;3;0;false;false;;;;;; -142854;1;0;false;false;0;0;0;;; -142855;3;0;false;false;;;;;; -142858;3;1;false;false;127;0;85;;; -142861;1;0;false;false;;;;;; -142862;4;0;false;false;0;0;0;;; -142866;1;0;false;false;;;;;; -142867;5;0;false;false;0;0;0;;; -142872;1;0;false;false;;;;;; -142873;1;0;false;false;0;0;0;;; -142874;1;0;false;false;;;;;; -142875;2;0;false;false;0;0;0;;; -142877;3;0;false;false;;;;;; -142880;5;1;false;false;127;0;85;;; -142885;1;0;false;false;;;;;; -142886;2;0;false;false;0;0;0;;; -142888;1;0;false;false;;;;;; -142889;1;0;false;false;0;0;0;;; -142890;1;0;false;false;;;;;; -142891;13;0;false;false;0;0;0;;; -142904;1;0;false;false;;;;;; -142905;2;0;false;false;0;0;0;;; -142907;1;0;false;false;;;;;; -142908;15;0;false;false;0;0;0;;; -142923;1;0;false;false;;;;;; -142924;2;0;false;false;0;0;0;;; -142926;1;0;false;false;;;;;; -142927;1;0;false;false;0;0;0;;; -142928;1;0;false;false;;;;;; -142929;2;0;false;false;0;0;0;;; -142931;1;0;false;false;;;;;; -142932;16;0;false;false;0;0;0;;; -142948;1;0;false;false;;;;;; -142949;2;0;false;false;0;0;0;;; -142951;1;0;false;false;;;;;; -142952;11;0;false;false;0;0;0;;; -142963;1;0;false;false;;;;;; -142964;1;0;false;false;0;0;0;;; -142965;4;0;false;false;;;;;; -142969;4;0;false;false;0;0;0;;; -142973;3;0;false;false;;;;;; -142976;1;0;false;false;0;0;0;;; -142977;3;0;false;false;;;;;; -142980;3;1;false;false;127;0;85;;; -142983;2;0;false;false;0;0;0;;; -142985;1;0;false;false;;;;;; -142986;7;0;false;false;0;0;0;;; -142993;1;0;false;false;;;;;; -142994;1;0;false;false;0;0;0;;; -142995;1;0;false;false;;;;;; -142996;3;1;false;false;127;0;85;;; -142999;1;0;false;false;;;;;; -143000;3;1;false;false;127;0;85;;; -143003;15;0;false;false;0;0;0;;; -143018;1;0;false;false;;;;;; -143019;1;0;false;false;0;0;0;;; -143020;1;0;false;false;;;;;; -143021;2;0;false;false;0;0;0;;; -143023;1;0;false;false;;;;;; -143024;1;0;false;false;0;0;0;;; -143025;1;0;false;false;;;;;; -143026;1;0;false;false;0;0;0;;; -143027;1;0;false;false;;;;;; -143028;1;0;false;false;0;0;0;;; -143029;1;0;false;false;;;;;; -143030;3;0;false;false;0;0;0;;; -143033;3;0;false;false;;;;;; -143036;3;1;false;false;127;0;85;;; -143039;1;0;false;false;;;;;; -143040;1;0;false;false;0;0;0;;; -143041;3;1;false;false;127;0;85;;; -143044;1;0;false;false;;;;;; -143045;1;0;false;false;0;0;0;;; -143046;1;0;false;false;;;;;; -143047;1;0;false;false;0;0;0;;; -143048;1;0;false;false;;;;;; -143049;2;0;false;false;0;0;0;;; -143051;1;0;false;false;;;;;; -143052;1;0;false;false;0;0;0;;; -143053;1;0;false;false;;;;;; -143054;1;0;false;false;0;0;0;;; -143055;1;0;false;false;;;;;; -143056;14;0;false;false;0;0;0;;; -143070;1;0;false;false;;;;;; -143071;4;0;false;false;0;0;0;;; -143075;1;0;false;false;;;;;; -143076;1;0;false;false;0;0;0;;; -143077;4;0;false;false;;;;;; -143081;10;0;false;false;0;0;0;;; -143091;1;0;false;false;;;;;; -143092;5;0;false;false;0;0;0;;; -143097;1;0;false;false;;;;;; -143098;1;0;false;false;0;0;0;;; -143099;1;0;false;false;;;;;; -143100;10;0;false;false;0;0;0;;; -143110;4;0;false;false;;;;;; -143114;3;1;false;false;127;0;85;;; -143117;1;0;false;false;;;;;; -143118;14;0;false;false;0;0;0;;; -143132;1;0;false;false;;;;;; -143133;1;0;false;false;0;0;0;;; -143134;1;0;false;false;;;;;; -143135;20;0;false;false;0;0;0;;; -143155;1;0;false;false;;;;;; -143156;1;0;false;false;0;0;0;;; -143157;1;0;false;false;;;;;; -143158;11;0;false;false;0;0;0;;; -143169;1;0;false;false;;;;;; -143170;3;0;false;false;0;0;0;;; -143173;4;0;false;false;;;;;; -143177;3;1;false;false;127;0;85;;; -143180;1;0;false;false;;;;;; -143181;12;0;false;false;0;0;0;;; -143193;1;0;false;false;;;;;; -143194;1;0;false;false;0;0;0;;; -143195;1;0;false;false;;;;;; -143196;20;0;false;false;0;0;0;;; -143216;1;0;false;false;;;;;; -143217;1;0;false;false;0;0;0;;; -143218;1;0;false;false;;;;;; -143219;12;0;false;false;0;0;0;;; -143231;1;0;false;false;;;;;; -143232;1;0;false;false;0;0;0;;; -143233;1;0;false;false;;;;;; -143234;11;0;false;false;0;0;0;;; -143245;1;0;false;false;;;;;; -143246;16;0;false;false;0;0;0;;; -143262;4;0;false;false;;;;;; -143266;12;0;false;false;0;0;0;;; -143278;1;0;false;false;;;;;; -143279;1;0;false;false;0;0;0;;; -143280;1;0;false;false;;;;;; -143281;8;0;false;false;0;0;0;;; -143289;1;0;false;false;;;;;; -143290;14;0;false;false;0;0;0;;; -143304;1;0;false;false;;;;;; -143305;11;0;false;false;0;0;0;;; -143316;1;0;false;false;;;;;; -143317;4;0;false;false;0;0;0;;; -143321;4;0;false;false;;;;;; -143325;2;1;false;false;127;0;85;;; -143327;1;0;false;false;;;;;; -143328;2;0;false;false;0;0;0;;; -143330;1;0;false;false;;;;;; -143331;1;0;false;false;0;0;0;;; -143332;1;0;false;false;;;;;; -143333;1;0;false;false;0;0;0;;; -143334;1;0;false;false;;;;;; -143335;2;0;false;false;0;0;0;;; -143337;1;0;false;false;;;;;; -143338;5;0;false;false;0;0;0;;; -143343;1;0;false;false;;;;;; -143344;1;0;false;false;0;0;0;;; -143345;1;0;false;false;;;;;; -143346;1;0;false;false;0;0;0;;; -143347;1;0;false;false;;;;;; -143348;2;0;false;false;0;0;0;;; -143350;5;0;false;false;;;;;; -143355;16;0;false;false;0;0;0;;; -143371;1;0;false;false;;;;;; -143372;2;0;false;false;0;0;0;;; -143374;1;0;false;false;;;;;; -143375;16;0;false;false;0;0;0;;; -143391;1;0;false;false;;;;;; -143392;2;0;false;false;0;0;0;;; -143394;1;0;false;false;;;;;; -143395;14;0;false;false;0;0;0;;; -143409;1;0;false;false;;;;;; -143410;2;0;false;false;0;0;0;;; -143412;1;0;false;false;;;;;; -143413;17;0;false;false;0;0;0;;; -143430;1;0;false;false;;;;;; -143431;2;0;false;false;0;0;0;;; -143433;6;0;false;false;;;;;; -143439;13;0;false;false;0;0;0;;; -143452;1;0;false;false;;;;;; -143453;2;0;false;false;0;0;0;;; -143455;1;0;false;false;;;;;; -143456;16;0;false;false;0;0;0;;; -143472;1;0;false;false;;;;;; -143473;2;0;false;false;0;0;0;;; -143475;1;0;false;false;;;;;; -143476;12;0;false;false;0;0;0;;; -143488;1;0;false;false;;;;;; -143489;2;0;false;false;0;0;0;;; -143491;1;0;false;false;;;;;; -143492;18;0;false;false;0;0;0;;; -143510;1;0;false;false;;;;;; -143511;2;0;false;false;0;0;0;;; -143513;6;0;false;false;;;;;; -143519;29;0;false;false;0;0;0;;; -143548;1;0;false;false;;;;;; -143549;1;0;false;false;0;0;0;;; -143550;5;0;false;false;;;;;; -143555;16;0;false;false;0;0;0;;; -143571;1;0;false;false;;;;;; -143572;1;0;false;false;0;0;0;;; -143573;1;0;false;false;;;;;; -143574;26;0;false;false;0;0;0;;; -143600;1;0;false;false;;;;;; -143601;16;0;false;false;0;0;0;;; -143617;5;0;false;false;;;;;; -143622;16;0;false;false;0;0;0;;; -143638;1;0;false;false;;;;;; -143639;1;0;false;false;0;0;0;;; -143640;1;0;false;false;;;;;; -143641;26;0;false;false;0;0;0;;; -143667;1;0;false;false;;;;;; -143668;14;0;false;false;0;0;0;;; -143682;4;0;false;false;;;;;; -143686;1;0;false;false;0;0;0;;; -143687;1;0;false;false;;;;;; -143688;4;1;false;false;127;0;85;;; -143692;1;0;false;false;;;;;; -143693;1;0;false;false;0;0;0;;; -143694;5;0;false;false;;;;;; -143699;2;1;false;false;127;0;85;;; -143701;1;0;false;false;;;;;; -143702;15;0;false;false;0;0;0;;; -143717;1;0;false;false;;;;;; -143718;1;0;false;false;0;0;0;;; -143719;1;0;false;false;;;;;; -143720;13;0;false;false;0;0;0;;; -143733;1;0;false;false;;;;;; -143734;1;0;false;false;0;0;0;;; -143735;1;0;false;false;;;;;; -143736;3;0;false;false;0;0;0;;; -143739;1;0;false;false;;;;;; -143740;1;0;false;false;0;0;0;;; -143741;6;0;false;false;;;;;; -143747;14;0;false;false;0;0;0;;; -143761;1;0;false;false;;;;;; -143762;1;0;false;false;0;0;0;;; -143763;1;0;false;false;;;;;; -143764;15;0;false;false;0;0;0;;; -143779;6;0;false;false;;;;;; -143785;8;0;false;false;0;0;0;;; -143793;5;0;false;false;;;;;; -143798;1;0;false;false;0;0;0;;; -143799;5;0;false;false;;;;;; -143804;14;0;false;false;0;0;0;;; -143818;1;0;false;false;;;;;; -143819;1;0;false;false;0;0;0;;; -143820;1;0;false;false;;;;;; -143821;13;0;false;false;0;0;0;;; -143834;5;0;false;false;;;;;; -143839;8;0;false;false;0;0;0;;; -143847;4;0;false;false;;;;;; -143851;1;0;false;false;0;0;0;;; -143852;3;0;false;false;;;;;; -143855;1;0;false;false;0;0;0;;; -143856;3;0;false;false;;;;;; -143859;60;0;false;false;63;127;95;;; -143919;1;0;false;false;;;;;; -143920;2;1;false;false;127;0;85;;; -143922;1;0;false;false;;;;;; -143923;11;0;false;false;0;0;0;;; -143934;1;0;false;false;;;;;; -143935;1;0;false;false;0;0;0;;; -143936;1;0;false;false;;;;;; -143937;17;0;false;false;0;0;0;;; -143954;1;0;false;false;;;;;; -143955;1;0;false;false;0;0;0;;; -143956;4;0;false;false;;;;;; -143960;7;0;false;false;0;0;0;;; -143967;1;0;false;false;;;;;; -143968;7;0;false;false;0;0;0;;; -143975;1;0;false;false;;;;;; -143976;1;0;false;false;0;0;0;;; -143977;1;0;false;false;;;;;; -143978;11;0;false;false;0;0;0;;; -143989;4;0;false;false;;;;;; -143993;8;0;false;false;0;0;0;;; -144001;3;0;false;false;;;;;; -144004;1;0;false;false;0;0;0;;; -144005;5;0;false;false;;;;;; -144010;2;1;false;false;127;0;85;;; -144012;1;0;false;false;;;;;; -144013;6;0;false;false;0;0;0;;; -144019;1;0;false;false;;;;;; -144020;2;0;false;false;0;0;0;;; -144022;1;0;false;false;;;;;; -144023;15;0;false;false;0;0;0;;; -144038;1;0;false;false;;;;;; -144039;1;0;false;false;0;0;0;;; -144040;4;0;false;false;;;;;; -144044;6;1;false;false;127;0;85;;; -144050;1;0;false;false;;;;;; -144051;8;0;false;false;0;0;0;;; -144059;3;0;false;false;;;;;; -144062;1;0;false;false;0;0;0;;; -144063;3;0;false;false;;;;;; -144066;3;1;false;false;127;0;85;;; -144069;1;0;false;false;;;;;; -144070;2;0;false;false;0;0;0;;; -144072;1;0;false;false;;;;;; -144073;6;0;false;false;0;0;0;;; -144079;1;0;false;false;;;;;; -144080;1;0;false;false;0;0;0;;; -144081;1;0;false;false;;;;;; -144082;3;1;false;false;127;0;85;;; -144085;1;0;false;false;;;;;; -144086;3;1;false;false;127;0;85;;; -144089;1;0;false;false;;;;;; -144090;8;0;false;false;0;0;0;;; -144098;3;0;false;false;;;;;; -144101;16;0;false;false;0;0;0;;; -144117;1;0;false;false;;;;;; -144118;9;0;false;false;0;0;0;;; -144127;1;0;false;false;;;;;; -144128;2;0;false;false;0;0;0;;; -144130;1;0;false;false;;;;;; -144131;7;0;false;false;0;0;0;;; -144138;1;0;false;false;;;;;; -144139;2;0;false;false;0;0;0;;; -144141;1;0;false;false;;;;;; -144142;7;0;false;false;0;0;0;;; -144149;3;0;false;false;;;;;; -144152;6;1;false;false;127;0;85;;; -144158;1;0;false;false;;;;;; -144159;7;0;false;false;0;0;0;;; -144166;2;0;false;false;;;;;; -144168;1;0;false;false;0;0;0;;; -144169;2;0;false;false;;;;;; -144171;3;0;false;false;63;95;191;;; -144174;3;0;false;false;;;;;; -144177;1;0;false;false;63;95;191;;; -144178;1;0;false;false;;;;;; -144179;7;0;false;false;63;95;191;;; -144186;1;0;false;false;;;;;; -144187;3;0;false;false;63;95;191;;; -144190;1;0;false;false;;;;;; -144191;5;0;false;false;63;95;191;;; -144196;1;0;false;false;;;;;; -144197;5;0;false;false;63;95;191;;; -144202;1;0;false;false;;;;;; -144203;2;0;false;false;63;95;191;;; -144205;1;0;false;false;;;;;; -144206;3;0;false;false;63;95;191;;; -144209;1;0;false;false;;;;;; -144210;5;0;false;false;63;95;191;;; -144215;1;0;false;false;;;;;; -144216;7;0;false;false;63;95;191;;; -144223;3;0;false;false;;;;;; -144226;1;0;false;false;63;95;191;;; -144227;1;0;false;false;;;;;; -144228;7;0;false;false;63;95;191;;; -144235;1;0;false;false;;;;;; -144236;4;0;false;false;63;95;191;;; -144240;1;0;false;false;;;;;; -144241;2;0;false;false;63;95;191;;; -144243;1;0;false;false;;;;;; -144244;1;0;false;false;63;95;191;;; -144245;1;0;false;false;;;;;; -144246;17;0;false;false;63;95;191;;; -144263;1;0;false;false;;;;;; -144264;3;0;false;false;63;95;191;;; -144267;1;0;false;false;;;;;; -144268;4;0;false;false;63;95;191;;; -144272;1;0;false;false;;;;;; -144273;3;0;false;false;63;95;191;;; -144276;1;0;false;false;;;;;; -144277;2;0;false;false;63;95;191;;; -144279;1;0;false;false;;;;;; -144280;2;0;false;false;63;95;191;;; -144282;1;0;false;false;;;;;; -144283;1;0;false;false;63;95;191;;; -144284;1;0;false;false;;;;;; -144285;5;0;false;false;63;95;191;;; -144290;1;0;false;false;;;;;; -144291;2;0;false;false;63;95;191;;; -144293;1;0;false;false;;;;;; -144294;3;0;false;false;63;95;191;;; -144297;1;0;false;false;;;;;; -144298;3;0;false;false;63;95;191;;; -144301;3;0;false;false;;;;;; -144304;1;0;false;false;63;95;191;;; -144305;1;0;false;false;;;;;; -144306;3;0;false;false;63;95;191;;; -144309;1;0;false;false;;;;;; -144310;3;0;false;false;63;95;191;;; -144313;1;0;false;false;;;;;; -144314;7;0;false;false;63;95;191;;; -144321;4;0;false;false;;;;;; -144325;1;0;false;false;63;95;191;;; -144326;1;0;false;false;;;;;; -144327;6;0;false;false;63;95;191;;; -144333;1;0;false;false;;;;;; -144334;3;0;false;false;63;95;191;;; -144337;1;0;false;false;;;;;; -144338;2;0;false;false;63;95;191;;; -144340;1;0;false;false;;;;;; -144341;6;0;false;false;63;95;191;;; -144347;1;0;false;false;;;;;; -144348;2;0;false;false;63;95;191;;; -144350;1;0;false;false;;;;;; -144351;1;0;false;false;63;95;191;;; -144352;1;0;false;false;;;;;; -144353;17;0;false;false;63;95;191;;; -144370;1;0;false;false;;;;;; -144371;3;0;false;false;63;95;191;;; -144374;1;0;false;false;;;;;; -144375;4;0;false;false;63;95;191;;; -144379;1;0;false;false;;;;;; -144380;3;0;false;false;63;95;191;;; -144383;1;0;false;false;;;;;; -144384;5;0;false;false;63;95;191;;; -144389;1;0;false;false;;;;;; -144390;3;0;false;false;63;95;191;;; -144393;4;0;false;false;;;;;; -144397;1;0;false;false;63;95;191;;; -144398;1;0;false;false;;;;;; -144399;8;0;false;false;63;95;191;;; -144407;1;0;false;false;;;;;; -144408;9;0;false;false;63;95;191;;; -144417;1;0;false;false;;;;;; -144418;3;0;false;false;63;95;191;;; -144421;1;0;false;false;;;;;; -144422;7;0;false;false;63;95;191;;; -144429;3;0;false;false;;;;;; -144432;1;0;false;false;63;95;191;;; -144433;1;0;false;false;;;;;; -144434;3;0;false;false;127;127;159;;; -144437;3;0;false;false;;;;;; -144440;1;0;false;false;63;95;191;;; -144441;3;0;false;false;;;;;; -144444;1;0;false;false;63;95;191;;; -144445;1;0;false;false;;;;;; -144446;7;1;false;false;127;159;191;;; -144453;6;0;false;false;63;95;191;;; -144459;1;0;false;false;;;;;; -144460;3;0;false;false;63;95;191;;; -144463;1;0;false;false;;;;;; -144464;6;0;false;false;63;95;191;;; -144470;1;0;false;false;;;;;; -144471;2;0;false;false;63;95;191;;; -144473;1;0;false;false;;;;;; -144474;6;0;false;false;63;95;191;;; -144480;1;0;false;false;;;;;; -144481;3;0;false;false;63;95;191;;; -144484;1;0;false;false;;;;;; -144485;5;0;false;false;63;95;191;;; -144490;1;0;false;false;;;;;; -144491;4;0;false;false;63;95;191;;; -144495;4;0;false;false;;;;;; -144499;1;0;false;false;63;95;191;;; -144500;2;0;false;false;;;;;; -144502;1;0;false;false;63;95;191;;; -144503;1;0;false;false;;;;;; -144504;42;0;false;false;63;95;191;;; -144546;1;0;false;false;;;;;; -144547;1;0;false;false;63;95;191;;; -144548;1;0;false;false;;;;;; -144549;8;1;false;false;127;159;191;;; -144557;1;0;false;false;63;95;191;;; -144558;1;0;false;false;;;;;; -144559;10;0;false;false;63;95;191;;; -144569;1;0;false;false;;;;;; -144570;4;0;false;false;63;95;191;;; -144574;1;0;false;false;;;;;; -144575;5;0;false;false;63;95;191;;; -144580;1;0;false;false;;;;;; -144581;2;0;false;false;63;95;191;;; -144583;1;0;false;false;;;;;; -144584;6;0;false;false;63;95;191;;; -144590;1;0;false;false;;;;;; -144591;3;0;false;false;63;95;191;;; -144594;1;0;false;false;;;;;; -144595;6;0;false;false;63;95;191;;; -144601;1;0;false;false;;;;;; -144602;2;0;false;false;63;95;191;;; -144604;1;0;false;false;;;;;; -144605;2;0;false;false;63;95;191;;; -144607;1;0;false;false;;;;;; -144608;10;0;false;false;63;95;191;;; -144618;3;0;false;false;;;;;; -144621;1;0;false;false;63;95;191;;; -144622;2;0;false;false;;;;;; -144624;3;0;false;false;63;95;191;;; -144627;1;0;false;false;;;;;; -144628;5;0;false;false;63;95;191;;; -144633;1;0;false;false;;;;;; -144634;2;0;false;false;63;95;191;;; -144636;1;0;false;false;;;;;; -144637;3;0;false;false;63;95;191;;; -144640;1;0;false;false;;;;;; -144641;5;0;false;false;63;95;191;;; -144646;1;0;false;false;;;;;; -144647;7;0;false;false;63;95;191;;; -144654;1;0;false;false;;;;;; -144655;4;0;false;false;63;95;191;;; -144659;1;0;false;false;;;;;; -144660;2;0;false;false;63;95;191;;; -144662;1;0;false;false;;;;;; -144663;1;0;false;false;63;95;191;;; -144664;1;0;false;false;;;;;; -144665;17;0;false;false;63;95;191;;; -144682;1;0;false;false;;;;;; -144683;3;0;false;false;63;95;191;;; -144686;1;0;false;false;;;;;; -144687;4;0;false;false;63;95;191;;; -144691;1;0;false;false;;;;;; -144692;3;0;false;false;63;95;191;;; -144695;4;0;false;false;;;;;; -144699;1;0;false;false;63;95;191;;; -144700;2;0;false;false;;;;;; -144702;2;0;false;false;63;95;191;;; -144704;1;0;false;false;;;;;; -144705;2;0;false;false;63;95;191;;; -144707;1;0;false;false;;;;;; -144708;1;0;false;false;63;95;191;;; -144709;1;0;false;false;;;;;; -144710;5;0;false;false;63;95;191;;; -144715;1;0;false;false;;;;;; -144716;2;0;false;false;63;95;191;;; -144718;1;0;false;false;;;;;; -144719;3;0;false;false;63;95;191;;; -144722;1;0;false;false;;;;;; -144723;3;0;false;false;63;95;191;;; -144726;1;0;false;false;;;;;; -144727;3;0;false;false;63;95;191;;; -144730;1;0;false;false;;;;;; -144731;3;0;false;false;63;95;191;;; -144734;1;0;false;false;;;;;; -144735;5;0;false;false;63;95;191;;; -144740;1;0;false;false;;;;;; -144741;7;0;false;false;63;95;191;;; -144748;3;0;false;false;;;;;; -144751;1;0;false;false;63;95;191;;; -144752;1;0;false;false;;;;;; -144753;11;1;false;false;127;159;191;;; -144764;12;0;false;false;63;95;191;;; -144776;1;0;false;false;;;;;; -144777;4;0;false;false;127;127;159;;; -144781;3;0;false;false;;;;;; -144784;1;0;false;false;63;95;191;;; -144785;4;0;false;false;;;;;; -144789;4;0;false;false;127;127;159;;; -144793;21;0;false;false;63;95;191;;; -144814;1;0;false;false;;;;;; -144815;1;0;false;false;127;127;159;;; -144816;1;0;false;false;;;;;; -144817;2;0;false;false;63;95;191;;; -144819;1;0;false;false;;;;;; -144820;3;0;false;false;63;95;191;;; -144823;1;0;false;false;;;;;; -144824;8;0;false;false;63;95;191;;; -144832;1;0;false;false;;;;;; -144833;3;0;false;false;63;95;191;;; -144836;1;0;false;false;;;;;; -144837;4;0;false;false;63;95;191;;; -144841;1;0;false;false;;;;;; -144842;8;0;false;false;63;95;191;;; -144850;5;0;false;false;127;127;159;;; -144855;3;0;false;false;;;;;; -144858;1;0;false;false;63;95;191;;; -144859;4;0;false;false;;;;;; -144863;4;0;false;false;127;127;159;;; -144867;27;0;false;false;63;95;191;;; -144894;1;0;false;false;;;;;; -144895;1;0;false;false;127;127;159;;; -144896;1;0;false;false;;;;;; -144897;2;0;false;false;63;95;191;;; -144899;1;0;false;false;;;;;; -144900;3;0;false;false;63;95;191;;; -144903;1;0;false;false;;;;;; -144904;6;0;false;false;63;95;191;;; -144910;1;0;false;false;;;;;; -144911;4;0;false;false;63;95;191;;; -144915;1;0;false;false;;;;;; -144916;3;0;false;false;63;95;191;;; -144919;1;0;false;false;;;;;; -144920;6;0;false;false;63;95;191;;; -144926;1;0;false;false;;;;;; -144927;4;0;false;false;63;95;191;;; -144931;1;0;false;false;;;;;; -144932;7;0;false;false;63;95;191;;; -144939;1;0;false;false;;;;;; -144940;3;0;false;false;63;95;191;;; -144943;1;0;false;false;;;;;; -144944;8;0;false;false;63;95;191;;; -144952;5;0;false;false;127;127;159;;; -144957;3;0;false;false;;;;;; -144960;1;0;false;false;63;95;191;;; -144961;1;0;false;false;;;;;; -144962;5;0;false;false;127;127;159;;; -144967;3;0;false;false;;;;;; -144970;1;0;false;false;63;95;191;;; -144971;1;0;false;false;;;;;; -144972;11;1;false;false;127;159;191;;; -144983;24;0;false;false;63;95;191;;; -145007;1;0;false;false;;;;;; -145008;4;0;false;false;127;127;159;;; -145012;3;0;false;false;;;;;; -145015;1;0;false;false;63;95;191;;; -145016;3;0;false;false;;;;;; -145019;4;0;false;false;127;127;159;;; -145023;22;0;false;false;63;95;191;;; -145045;1;0;false;false;;;;;; -145046;4;0;false;false;63;95;191;;; -145050;1;0;false;false;;;;;; -145051;3;0;false;false;63;95;191;;; -145054;1;0;false;false;;;;;; -145055;6;0;false;false;63;95;191;;; -145061;1;0;false;false;;;;;; -145062;2;0;false;false;63;95;191;;; -145064;1;0;false;false;;;;;; -145065;7;0;false;false;63;95;191;;; -145072;5;0;false;false;127;127;159;;; -145077;3;0;false;false;;;;;; -145080;1;0;false;false;63;95;191;;; -145081;1;0;false;false;;;;;; -145082;5;0;false;false;127;127;159;;; -145087;3;0;false;false;;;;;; -145090;2;0;false;false;63;95;191;;; -145092;2;0;false;false;;;;;; -145094;6;1;false;false;127;0;85;;; -145100;1;0;false;false;;;;;; -145101;10;0;false;false;0;0;0;;; -145111;1;0;false;false;;;;;; -145112;22;0;false;false;0;0;0;;; -145134;3;1;false;false;127;0;85;;; -145137;1;0;false;false;;;;;; -145138;7;0;false;false;0;0;0;;; -145145;1;0;false;false;;;;;; -145146;1;0;false;false;0;0;0;;; -145147;3;0;false;false;;;;;; -145150;14;0;false;false;0;0;0;;; -145164;3;0;false;false;;;;;; -145167;2;1;false;false;127;0;85;;; -145169;1;0;false;false;;;;;; -145170;7;0;false;false;0;0;0;;; -145177;1;0;false;false;;;;;; -145178;1;0;false;false;0;0;0;;; -145179;1;0;false;false;;;;;; -145180;1;0;false;false;0;0;0;;; -145181;1;0;false;false;;;;;; -145182;2;0;false;false;0;0;0;;; -145184;1;0;false;false;;;;;; -145185;6;0;false;false;0;0;0;;; -145191;1;0;false;false;;;;;; -145192;2;0;false;false;0;0;0;;; -145194;1;0;false;false;;;;;; -145195;15;0;false;false;0;0;0;;; -145210;1;0;false;false;;;;;; -145211;1;0;false;false;0;0;0;;; -145212;4;0;false;false;;;;;; -145216;38;0;false;false;0;0;0;;; -145254;3;0;false;false;;;;;; -145257;1;0;false;false;0;0;0;;; -145258;5;0;false;false;;;;;; -145263;2;1;false;false;127;0;85;;; -145265;1;0;false;false;;;;;; -145266;16;0;false;false;0;0;0;;; -145282;1;0;false;false;;;;;; -145283;1;0;false;false;0;0;0;;; -145284;4;0;false;false;;;;;; -145288;6;1;false;false;127;0;85;;; -145294;1;0;false;false;;;;;; -145295;48;0;false;false;0;0;0;;; -145343;3;0;false;false;;;;;; -145346;1;0;false;false;0;0;0;;; -145347;4;0;false;false;;;;;; -145351;6;1;false;false;127;0;85;;; -145357;1;0;false;false;;;;;; -145358;4;1;false;false;127;0;85;;; -145362;1;0;false;false;0;0;0;;; -145363;2;0;false;false;;;;;; -145365;1;0;false;false;0;0;0;;; -145366;2;0;false;false;;;;;; -145368;3;0;false;false;63;95;191;;; -145371;3;0;false;false;;;;;; -145374;1;0;false;false;63;95;191;;; -145375;1;0;false;false;;;;;; -145376;7;0;false;false;63;95;191;;; -145383;1;0;false;false;;;;;; -145384;3;0;false;false;63;95;191;;; -145387;1;0;false;false;;;;;; -145388;7;0;false;false;63;95;191;;; -145395;3;0;false;false;;;;;; -145398;1;0;false;false;63;95;191;;; -145399;1;0;false;false;;;;;; -145400;7;0;false;false;63;95;191;;; -145407;1;0;false;false;;;;;; -145408;2;0;false;false;63;95;191;;; -145410;1;0;false;false;;;;;; -145411;5;0;false;false;63;95;191;;; -145416;1;0;false;false;;;;;; -145417;5;0;false;false;63;95;191;;; -145422;1;0;false;false;;;;;; -145423;2;0;false;false;63;95;191;;; -145425;1;0;false;false;;;;;; -145426;1;0;false;false;63;95;191;;; -145427;1;0;false;false;;;;;; -145428;17;0;false;false;63;95;191;;; -145445;1;0;false;false;;;;;; -145446;3;0;false;false;63;95;191;;; -145449;1;0;false;false;;;;;; -145450;4;0;false;false;63;95;191;;; -145454;1;0;false;false;;;;;; -145455;4;0;false;false;63;95;191;;; -145459;4;0;false;false;;;;;; -145463;1;0;false;false;63;95;191;;; -145464;1;0;false;false;;;;;; -145465;6;0;false;false;63;95;191;;; -145471;1;0;false;false;;;;;; -145472;3;0;false;false;63;95;191;;; -145475;1;0;false;false;;;;;; -145476;2;0;false;false;63;95;191;;; -145478;1;0;false;false;;;;;; -145479;6;0;false;false;63;95;191;;; -145485;1;0;false;false;;;;;; -145486;2;0;false;false;63;95;191;;; -145488;1;0;false;false;;;;;; -145489;1;0;false;false;63;95;191;;; -145490;1;0;false;false;;;;;; -145491;17;0;false;false;63;95;191;;; -145508;1;0;false;false;;;;;; -145509;3;0;false;false;63;95;191;;; -145512;1;0;false;false;;;;;; -145513;4;0;false;false;63;95;191;;; -145517;1;0;false;false;;;;;; -145518;3;0;false;false;63;95;191;;; -145521;1;0;false;false;;;;;; -145522;5;0;false;false;63;95;191;;; -145527;1;0;false;false;;;;;; -145528;3;0;false;false;63;95;191;;; -145531;4;0;false;false;;;;;; -145535;1;0;false;false;63;95;191;;; -145536;1;0;false;false;;;;;; -145537;8;0;false;false;63;95;191;;; -145545;1;0;false;false;;;;;; -145546;9;0;false;false;63;95;191;;; -145555;1;0;false;false;;;;;; -145556;3;0;false;false;63;95;191;;; -145559;1;0;false;false;;;;;; -145560;7;0;false;false;63;95;191;;; -145567;3;0;false;false;;;;;; -145570;1;0;false;false;63;95;191;;; -145571;1;0;false;false;;;;;; -145572;3;0;false;false;127;127;159;;; -145575;3;0;false;false;;;;;; -145578;1;0;false;false;63;95;191;;; -145579;3;0;false;false;;;;;; -145582;1;0;false;false;63;95;191;;; -145583;1;0;false;false;;;;;; -145584;8;1;false;false;127;159;191;;; -145592;3;0;false;false;63;95;191;;; -145595;1;0;false;false;;;;;; -145596;6;0;false;false;63;95;191;;; -145602;1;0;false;false;;;;;; -145603;2;0;false;false;63;95;191;;; -145605;1;0;false;false;;;;;; -145606;2;0;false;false;63;95;191;;; -145608;1;0;false;false;;;;;; -145609;5;0;false;false;63;95;191;;; -145614;1;0;false;false;;;;;; -145615;5;0;false;false;63;95;191;;; -145620;1;0;false;false;;;;;; -145621;2;0;false;false;63;95;191;;; -145623;1;0;false;false;;;;;; -145624;1;0;false;false;63;95;191;;; -145625;1;0;false;false;;;;;; -145626;17;0;false;false;63;95;191;;; -145643;1;0;false;false;;;;;; -145644;3;0;false;false;63;95;191;;; -145647;1;0;false;false;;;;;; -145648;4;0;false;false;63;95;191;;; -145652;1;0;false;false;;;;;; -145653;4;0;false;false;63;95;191;;; -145657;4;0;false;false;;;;;; -145661;1;0;false;false;63;95;191;;; -145662;3;0;false;false;;;;;; -145665;1;0;false;false;63;95;191;;; -145666;1;0;false;false;;;;;; -145667;11;1;false;false;127;159;191;;; -145678;12;0;false;false;63;95;191;;; -145690;1;0;false;false;;;;;; -145691;4;0;false;false;127;127;159;;; -145695;3;0;false;false;;;;;; -145698;1;0;false;false;63;95;191;;; -145699;4;0;false;false;;;;;; -145703;4;0;false;false;127;127;159;;; -145707;21;0;false;false;63;95;191;;; -145728;1;0;false;false;;;;;; -145729;1;0;false;false;127;127;159;;; -145730;1;0;false;false;;;;;; -145731;2;0;false;false;63;95;191;;; -145733;1;0;false;false;;;;;; -145734;3;0;false;false;63;95;191;;; -145737;1;0;false;false;;;;;; -145738;8;0;false;false;63;95;191;;; -145746;1;0;false;false;;;;;; -145747;3;0;false;false;63;95;191;;; -145750;1;0;false;false;;;;;; -145751;4;0;false;false;63;95;191;;; -145755;1;0;false;false;;;;;; -145756;8;0;false;false;63;95;191;;; -145764;5;0;false;false;127;127;159;;; -145769;3;0;false;false;;;;;; -145772;1;0;false;false;63;95;191;;; -145773;4;0;false;false;;;;;; -145777;4;0;false;false;127;127;159;;; -145781;27;0;false;false;63;95;191;;; -145808;1;0;false;false;;;;;; -145809;1;0;false;false;127;127;159;;; -145810;1;0;false;false;;;;;; -145811;2;0;false;false;63;95;191;;; -145813;1;0;false;false;;;;;; -145814;3;0;false;false;63;95;191;;; -145817;1;0;false;false;;;;;; -145818;6;0;false;false;63;95;191;;; -145824;1;0;false;false;;;;;; -145825;4;0;false;false;63;95;191;;; -145829;1;0;false;false;;;;;; -145830;3;0;false;false;63;95;191;;; -145833;1;0;false;false;;;;;; -145834;6;0;false;false;63;95;191;;; -145840;1;0;false;false;;;;;; -145841;4;0;false;false;63;95;191;;; -145845;1;0;false;false;;;;;; -145846;7;0;false;false;63;95;191;;; -145853;1;0;false;false;;;;;; -145854;3;0;false;false;63;95;191;;; -145857;1;0;false;false;;;;;; -145858;8;0;false;false;63;95;191;;; -145866;5;0;false;false;127;127;159;;; -145871;3;0;false;false;;;;;; -145874;1;0;false;false;63;95;191;;; -145875;1;0;false;false;;;;;; -145876;5;0;false;false;127;127;159;;; -145881;3;0;false;false;;;;;; -145884;2;0;false;false;63;95;191;;; -145886;2;0;false;false;;;;;; -145888;6;1;false;false;127;0;85;;; -145894;1;0;false;false;;;;;; -145895;10;0;false;false;0;0;0;;; -145905;1;0;false;false;;;;;; -145906;2;0;false;false;0;0;0;;; -145908;1;0;false;false;;;;;; -145909;16;0;false;false;0;0;0;;; -145925;1;0;false;false;;;;;; -145926;1;0;false;false;0;0;0;;; -145927;3;0;false;false;;;;;; -145930;14;0;false;false;0;0;0;;; -145944;3;0;false;false;;;;;; -145947;10;0;false;false;0;0;0;;; -145957;1;0;false;false;;;;;; -145958;9;0;false;false;0;0;0;;; -145967;6;0;false;false;;;;;; -145973;2;1;false;false;127;0;85;;; -145975;1;0;false;false;;;;;; -145976;16;0;false;false;0;0;0;;; -145992;1;0;false;false;;;;;; -145993;1;0;false;false;0;0;0;;; -145994;4;0;false;false;;;;;; -145998;6;0;false;false;0;0;0;;; -146004;1;0;false;false;;;;;; -146005;1;0;false;false;0;0;0;;; -146006;1;0;false;false;;;;;; -146007;35;0;false;false;0;0;0;;; -146042;3;0;false;false;;;;;; -146045;1;0;false;false;0;0;0;;; -146046;3;0;false;false;;;;;; -146049;4;1;false;false;127;0;85;;; -146053;1;0;false;false;;;;;; -146054;1;0;false;false;0;0;0;;; -146055;4;0;false;false;;;;;; -146059;6;0;false;false;0;0;0;;; -146065;1;0;false;false;;;;;; -146066;1;0;false;false;0;0;0;;; -146067;1;0;false;false;;;;;; -146068;3;1;false;false;127;0;85;;; -146071;1;0;false;false;;;;;; -146072;14;0;false;false;0;0;0;;; -146086;3;0;false;false;;;;;; -146089;1;0;false;false;0;0;0;;; -146090;3;0;false;false;;;;;; -146093;6;1;false;false;127;0;85;;; -146099;1;0;false;false;;;;;; -146100;7;0;false;false;0;0;0;;; -146107;2;0;false;false;;;;;; -146109;1;0;false;false;0;0;0;;; -146110;2;0;false;false;;;;;; -146112;3;0;false;false;63;95;191;;; -146115;3;0;false;false;;;;;; -146118;1;0;false;false;63;95;191;;; -146119;1;0;false;false;;;;;; -146120;7;0;false;false;63;95;191;;; -146127;1;0;false;false;;;;;; -146128;3;0;false;false;63;95;191;;; -146131;1;0;false;false;;;;;; -146132;6;0;false;false;63;95;191;;; -146138;1;0;false;false;;;;;; -146139;3;0;false;false;63;95;191;;; -146142;1;0;false;false;;;;;; -146143;3;0;false;false;63;95;191;;; -146146;1;0;false;false;;;;;; -146147;5;0;false;false;63;95;191;;; -146152;1;0;false;false;;;;;; -146153;4;0;false;false;63;95;191;;; -146157;1;0;false;false;;;;;; -146158;6;0;false;false;63;95;191;;; -146164;3;0;false;false;;;;;; -146167;1;0;false;false;63;95;191;;; -146168;1;0;false;false;;;;;; -146169;7;0;false;false;63;95;191;;; -146176;1;0;false;false;;;;;; -146177;2;0;false;false;63;95;191;;; -146179;1;0;false;false;;;;;; -146180;5;0;false;false;63;95;191;;; -146185;1;0;false;false;;;;;; -146186;5;0;false;false;63;95;191;;; -146191;1;0;false;false;;;;;; -146192;2;0;false;false;63;95;191;;; -146194;1;0;false;false;;;;;; -146195;1;0;false;false;63;95;191;;; -146196;1;0;false;false;;;;;; -146197;17;0;false;false;63;95;191;;; -146214;1;0;false;false;;;;;; -146215;3;0;false;false;63;95;191;;; -146218;1;0;false;false;;;;;; -146219;4;0;false;false;63;95;191;;; -146223;1;0;false;false;;;;;; -146224;4;0;false;false;63;95;191;;; -146228;4;0;false;false;;;;;; -146232;1;0;false;false;63;95;191;;; -146233;1;0;false;false;;;;;; -146234;6;0;false;false;63;95;191;;; -146240;1;0;false;false;;;;;; -146241;3;0;false;false;63;95;191;;; -146244;1;0;false;false;;;;;; -146245;2;0;false;false;63;95;191;;; -146247;1;0;false;false;;;;;; -146248;6;0;false;false;63;95;191;;; -146254;1;0;false;false;;;;;; -146255;2;0;false;false;63;95;191;;; -146257;1;0;false;false;;;;;; -146258;1;0;false;false;63;95;191;;; -146259;1;0;false;false;;;;;; -146260;17;0;false;false;63;95;191;;; -146277;1;0;false;false;;;;;; -146278;3;0;false;false;63;95;191;;; -146281;1;0;false;false;;;;;; -146282;4;0;false;false;63;95;191;;; -146286;1;0;false;false;;;;;; -146287;3;0;false;false;63;95;191;;; -146290;1;0;false;false;;;;;; -146291;5;0;false;false;63;95;191;;; -146296;1;0;false;false;;;;;; -146297;3;0;false;false;63;95;191;;; -146300;4;0;false;false;;;;;; -146304;1;0;false;false;63;95;191;;; -146305;1;0;false;false;;;;;; -146306;8;0;false;false;63;95;191;;; -146314;1;0;false;false;;;;;; -146315;9;0;false;false;63;95;191;;; -146324;1;0;false;false;;;;;; -146325;3;0;false;false;63;95;191;;; -146328;1;0;false;false;;;;;; -146329;7;0;false;false;63;95;191;;; -146336;3;0;false;false;;;;;; -146339;1;0;false;false;63;95;191;;; -146340;4;0;false;false;;;;;; -146344;1;0;false;false;63;95;191;;; -146345;1;0;false;false;;;;;; -146346;7;1;false;false;127;159;191;;; -146353;5;0;false;false;63;95;191;;; -146358;1;0;false;false;;;;;; -146359;3;0;false;false;63;95;191;;; -146362;1;0;false;false;;;;;; -146363;5;0;false;false;63;95;191;;; -146368;1;0;false;false;;;;;; -146369;6;0;false;false;63;95;191;;; -146375;1;0;false;false;;;;;; -146376;2;0;false;false;63;95;191;;; -146378;1;0;false;false;;;;;; -146379;3;0;false;false;63;95;191;;; -146382;1;0;false;false;;;;;; -146383;5;0;false;false;63;95;191;;; -146388;1;0;false;false;;;;;; -146389;6;0;false;false;63;95;191;;; -146395;1;0;false;false;;;;;; -146396;2;0;false;false;63;95;191;;; -146398;1;0;false;false;;;;;; -146399;6;0;false;false;63;95;191;;; -146405;3;0;false;false;;;;;; -146408;1;0;false;false;63;95;191;;; -146409;1;0;false;false;;;;;; -146410;7;1;false;false;127;159;191;;; -146417;6;0;false;false;63;95;191;;; -146423;1;0;false;false;;;;;; -146424;3;0;false;false;63;95;191;;; -146427;1;0;false;false;;;;;; -146428;6;0;false;false;63;95;191;;; -146434;1;0;false;false;;;;;; -146435;2;0;false;false;63;95;191;;; -146437;1;0;false;false;;;;;; -146438;5;0;false;false;63;95;191;;; -146443;1;0;false;false;;;;;; -146444;6;0;false;false;63;95;191;;; -146450;1;0;false;false;;;;;; -146451;2;0;false;false;63;95;191;;; -146453;1;0;false;false;;;;;; -146454;6;0;false;false;63;95;191;;; -146460;3;0;false;false;;;;;; -146463;1;0;false;false;63;95;191;;; -146464;3;0;false;false;;;;;; -146467;1;0;false;false;63;95;191;;; -146468;1;0;false;false;;;;;; -146469;8;1;false;false;127;159;191;;; -146477;3;0;false;false;63;95;191;;; -146480;1;0;false;false;;;;;; -146481;6;0;false;false;63;95;191;;; -146487;1;0;false;false;;;;;; -146488;2;0;false;false;63;95;191;;; -146490;1;0;false;false;;;;;; -146491;2;0;false;false;63;95;191;;; -146493;1;0;false;false;;;;;; -146494;5;0;false;false;63;95;191;;; -146499;1;0;false;false;;;;;; -146500;5;0;false;false;63;95;191;;; -146505;1;0;false;false;;;;;; -146506;2;0;false;false;63;95;191;;; -146508;1;0;false;false;;;;;; -146509;1;0;false;false;63;95;191;;; -146510;1;0;false;false;;;;;; -146511;17;0;false;false;63;95;191;;; -146528;1;0;false;false;;;;;; -146529;3;0;false;false;63;95;191;;; -146532;4;0;false;false;;;;;; -146536;1;0;false;false;63;95;191;;; -146537;2;0;false;false;;;;;; -146539;4;0;false;false;63;95;191;;; -146543;1;0;false;false;;;;;; -146544;4;0;false;false;63;95;191;;; -146548;2;0;false;false;;;;;; -146550;3;0;false;false;63;95;191;;; -146553;1;0;false;false;;;;;; -146554;8;0;false;false;63;95;191;;; -146562;1;0;false;false;;;;;; -146563;6;0;false;false;63;95;191;;; -146569;1;0;false;false;;;;;; -146570;4;0;false;false;63;95;191;;; -146574;1;0;false;false;;;;;; -146575;7;0;false;false;63;95;191;;; -146582;1;0;false;false;;;;;; -146583;3;0;false;false;63;95;191;;; -146586;1;0;false;false;;;;;; -146587;5;0;false;false;63;95;191;;; -146592;1;0;false;false;;;;;; -146593;6;0;false;false;63;95;191;;; -146599;2;0;false;false;;;;;; -146601;3;0;false;false;63;95;191;;; -146604;1;0;false;false;;;;;; -146605;5;0;false;false;63;95;191;;; -146610;4;0;false;false;;;;;; -146614;1;0;false;false;63;95;191;;; -146615;2;0;false;false;;;;;; -146617;8;0;false;false;63;95;191;;; -146625;1;0;false;false;;;;;; -146626;6;0;false;false;127;127;159;;; -146632;10;0;false;false;63;95;191;;; -146642;7;0;false;false;127;127;159;;; -146649;1;0;false;false;;;;;; -146650;4;0;false;false;63;95;191;;; -146654;1;0;false;false;;;;;; -146655;4;0;false;false;63;95;191;;; -146659;1;0;false;false;;;;;; -146660;1;0;false;false;63;95;191;;; -146661;1;0;false;false;;;;;; -146662;8;0;false;false;63;95;191;;; -146670;1;0;false;false;;;;;; -146671;6;0;false;false;63;95;191;;; -146677;1;0;false;false;;;;;; -146678;2;0;false;false;63;95;191;;; -146680;1;0;false;false;;;;;; -146681;5;0;false;false;63;95;191;;; -146686;4;0;false;false;;;;;; -146690;1;0;false;false;63;95;191;;; -146691;2;0;false;false;;;;;; -146693;3;0;false;false;63;95;191;;; -146696;1;0;false;false;;;;;; -146697;3;0;false;false;63;95;191;;; -146700;1;0;false;false;;;;;; -146701;4;0;false;false;63;95;191;;; -146705;1;0;false;false;;;;;; -146706;8;0;false;false;63;95;191;;; -146714;1;0;false;false;;;;;; -146715;6;0;false;false;127;127;159;;; -146721;10;0;false;false;63;95;191;;; -146731;7;0;false;false;127;127;159;;; -146738;1;0;false;false;;;;;; -146739;4;0;false;false;63;95;191;;; -146743;1;0;false;false;;;;;; -146744;4;0;false;false;63;95;191;;; -146748;1;0;false;false;;;;;; -146749;2;0;false;false;63;95;191;;; -146751;1;0;false;false;;;;;; -146752;6;0;false;false;63;95;191;;; -146758;4;0;false;false;;;;;; -146762;1;0;false;false;63;95;191;;; -146763;2;0;false;false;;;;;; -146765;6;0;false;false;63;95;191;;; -146771;1;0;false;false;;;;;; -146772;23;0;false;false;63;95;191;;; -146795;1;0;false;false;;;;;; -146796;1;0;false;false;63;95;191;;; -146797;3;0;false;false;;;;;; -146800;1;0;false;false;63;95;191;;; -146801;1;0;false;false;;;;;; -146802;11;1;false;false;127;159;191;;; -146813;12;0;false;false;63;95;191;;; -146825;1;0;false;false;;;;;; -146826;4;0;false;false;127;127;159;;; -146830;3;0;false;false;;;;;; -146833;1;0;false;false;63;95;191;;; -146834;4;0;false;false;;;;;; -146838;4;0;false;false;127;127;159;;; -146842;21;0;false;false;63;95;191;;; -146863;1;0;false;false;;;;;; -146864;1;0;false;false;127;127;159;;; -146865;1;0;false;false;;;;;; -146866;2;0;false;false;63;95;191;;; -146868;1;0;false;false;;;;;; -146869;3;0;false;false;63;95;191;;; -146872;1;0;false;false;;;;;; -146873;8;0;false;false;63;95;191;;; -146881;1;0;false;false;;;;;; -146882;3;0;false;false;63;95;191;;; -146885;1;0;false;false;;;;;; -146886;4;0;false;false;63;95;191;;; -146890;1;0;false;false;;;;;; -146891;8;0;false;false;63;95;191;;; -146899;5;0;false;false;127;127;159;;; -146904;3;0;false;false;;;;;; -146907;1;0;false;false;63;95;191;;; -146908;4;0;false;false;;;;;; -146912;4;0;false;false;127;127;159;;; -146916;27;0;false;false;63;95;191;;; -146943;1;0;false;false;;;;;; -146944;1;0;false;false;127;127;159;;; -146945;1;0;false;false;;;;;; -146946;2;0;false;false;63;95;191;;; -146948;1;0;false;false;;;;;; -146949;3;0;false;false;63;95;191;;; -146952;1;0;false;false;;;;;; -146953;6;0;false;false;63;95;191;;; -146959;1;0;false;false;;;;;; -146960;4;0;false;false;63;95;191;;; -146964;1;0;false;false;;;;;; -146965;3;0;false;false;63;95;191;;; -146968;1;0;false;false;;;;;; -146969;6;0;false;false;63;95;191;;; -146975;1;0;false;false;;;;;; -146976;4;0;false;false;63;95;191;;; -146980;1;0;false;false;;;;;; -146981;7;0;false;false;63;95;191;;; -146988;1;0;false;false;;;;;; -146989;3;0;false;false;63;95;191;;; -146992;1;0;false;false;;;;;; -146993;8;0;false;false;63;95;191;;; -147001;5;0;false;false;127;127;159;;; -147006;3;0;false;false;;;;;; -147009;1;0;false;false;63;95;191;;; -147010;1;0;false;false;;;;;; -147011;5;0;false;false;127;127;159;;; -147016;3;0;false;false;;;;;; -147019;1;0;false;false;63;95;191;;; -147020;1;0;false;false;;;;;; -147021;11;1;false;false;127;159;191;;; -147032;24;0;false;false;63;95;191;;; -147056;1;0;false;false;;;;;; -147057;4;0;false;false;127;127;159;;; -147061;3;0;false;false;;;;;; -147064;1;0;false;false;63;95;191;;; -147065;3;0;false;false;;;;;; -147068;4;0;false;false;127;127;159;;; -147072;19;0;false;false;63;95;191;;; -147091;1;0;false;false;;;;;; -147092;4;0;false;false;63;95;191;;; -147096;1;0;false;false;;;;;; -147097;5;0;false;false;63;95;191;;; -147102;1;0;false;false;;;;;; -147103;6;0;false;false;63;95;191;;; -147109;1;0;false;false;;;;;; -147110;3;0;false;false;63;95;191;;; -147113;1;0;false;false;;;;;; -147114;3;0;false;false;63;95;191;;; -147117;1;0;false;false;;;;;; -147118;7;0;false;false;63;95;191;;; -147125;1;0;false;false;;;;;; -147126;3;0;false;false;63;95;191;;; -147129;1;0;false;false;;;;;; -147130;6;0;false;false;63;95;191;;; -147136;1;0;false;false;;;;;; -147137;7;0;false;false;63;95;191;;; -147144;5;0;false;false;127;127;159;;; -147149;4;0;false;false;;;;;; -147153;1;0;false;false;63;95;191;;; -147154;1;0;false;false;;;;;; -147155;5;0;false;false;127;127;159;;; -147160;3;0;false;false;;;;;; -147163;1;0;false;false;63;95;191;;; -147164;4;0;false;false;;;;;; -147168;1;0;false;false;63;95;191;;; -147169;1;0;false;false;;;;;; -147170;7;1;false;false;127;159;191;;; -147177;3;0;false;false;63;95;191;;; -147180;3;0;false;false;;;;;; -147183;2;0;false;false;63;95;191;;; -147185;2;0;false;false;;;;;; -147187;6;1;false;false;127;0;85;;; -147193;1;0;false;false;;;;;; -147194;10;0;false;false;0;0;0;;; -147204;1;0;false;false;;;;;; -147205;2;0;false;false;0;0;0;;; -147207;1;0;false;false;;;;;; -147208;15;0;false;false;0;0;0;;; -147223;3;1;false;false;127;0;85;;; -147226;1;0;false;false;;;;;; -147227;6;0;false;false;0;0;0;;; -147233;1;0;false;false;;;;;; -147234;3;1;false;false;127;0;85;;; -147237;1;0;false;false;;;;;; -147238;7;0;false;false;0;0;0;;; -147245;1;0;false;false;;;;;; -147246;1;0;false;false;0;0;0;;; -147247;3;0;false;false;;;;;; -147250;14;0;false;false;0;0;0;;; -147264;3;0;false;false;;;;;; -147267;3;1;false;false;127;0;85;;; -147270;1;0;false;false;;;;;; -147271;13;0;false;false;0;0;0;;; -147284;1;0;false;false;;;;;; -147285;1;0;false;false;0;0;0;;; -147286;1;0;false;false;;;;;; -147287;15;0;false;false;0;0;0;;; -147302;3;0;false;false;;;;;; -147305;3;1;false;false;127;0;85;;; -147308;1;0;false;false;;;;;; -147309;3;0;false;false;0;0;0;;; -147312;1;0;false;false;;;;;; -147313;1;0;false;false;0;0;0;;; -147314;1;0;false;false;;;;;; -147315;5;0;false;false;0;0;0;;; -147320;1;0;false;false;;;;;; -147321;1;0;false;false;0;0;0;;; -147322;1;0;false;false;;;;;; -147323;7;0;false;false;0;0;0;;; -147330;3;0;false;false;;;;;; -147333;2;1;false;false;127;0;85;;; -147335;1;0;false;false;;;;;; -147336;6;0;false;false;0;0;0;;; -147342;1;0;false;false;;;;;; -147343;1;0;false;false;0;0;0;;; -147344;1;0;false;false;;;;;; -147345;3;0;false;false;0;0;0;;; -147348;1;0;false;false;;;;;; -147349;2;0;false;false;0;0;0;;; -147351;1;0;false;false;;;;;; -147352;5;0;false;false;0;0;0;;; -147357;1;0;false;false;;;;;; -147358;1;0;false;false;0;0;0;;; -147359;1;0;false;false;;;;;; -147360;1;0;false;false;0;0;0;;; -147361;1;0;false;false;;;;;; -147362;2;0;false;false;0;0;0;;; -147364;1;0;false;false;;;;;; -147365;3;0;false;false;0;0;0;;; -147368;1;0;false;false;;;;;; -147369;1;0;false;false;0;0;0;;; -147370;1;0;false;false;;;;;; -147371;14;0;false;false;0;0;0;;; -147385;1;0;false;false;;;;;; -147386;1;0;false;false;0;0;0;;; -147387;4;0;false;false;;;;;; -147391;35;0;false;false;0;0;0;;; -147426;3;0;false;false;;;;;; -147429;1;0;false;false;0;0;0;;; -147430;4;0;false;false;;;;;; -147434;10;0;false;false;0;0;0;;; -147444;1;0;false;false;;;;;; -147445;9;0;false;false;0;0;0;;; -147454;6;0;false;false;;;;;; -147460;2;1;false;false;127;0;85;;; -147462;1;0;false;false;;;;;; -147463;16;0;false;false;0;0;0;;; -147479;1;0;false;false;;;;;; -147480;1;0;false;false;0;0;0;;; -147481;4;0;false;false;;;;;; -147485;6;0;false;false;0;0;0;;; -147491;1;0;false;false;;;;;; -147492;1;0;false;false;0;0;0;;; -147493;1;0;false;false;;;;;; -147494;42;0;false;false;0;0;0;;; -147536;1;0;false;false;;;;;; -147537;8;0;false;false;0;0;0;;; -147545;4;0;false;false;;;;;; -147549;2;1;false;false;127;0;85;;; -147551;1;0;false;false;;;;;; -147552;7;0;false;false;0;0;0;;; -147559;1;0;false;false;;;;;; -147560;2;0;false;false;0;0;0;;; -147562;1;0;false;false;;;;;; -147563;4;1;false;false;127;0;85;;; -147567;1;0;false;false;0;0;0;;; -147568;1;0;false;false;;;;;; -147569;6;1;false;false;127;0;85;;; -147575;1;0;false;false;;;;;; -147576;3;1;false;false;127;0;85;;; -147579;1;0;false;false;;;;;; -147580;14;0;false;false;0;0;0;;; -147594;4;0;false;false;;;;;; -147598;62;0;false;false;63;127;95;;; -147660;2;0;false;false;;;;;; -147662;64;0;false;false;63;127;95;;; -147726;2;0;false;false;;;;;; -147728;32;0;false;false;63;127;95;;; -147760;2;0;false;false;;;;;; -147762;2;1;false;false;127;0;85;;; -147764;1;0;false;false;;;;;; -147765;14;0;false;false;0;0;0;;; -147779;1;0;false;false;;;;;; -147780;2;0;false;false;0;0;0;;; -147782;1;0;false;false;;;;;; -147783;2;0;false;false;0;0;0;;; -147785;1;0;false;false;;;;;; -147786;1;0;false;false;0;0;0;;; -147787;5;0;false;false;;;;;; -147792;10;0;false;false;0;0;0;;; -147802;1;0;false;false;;;;;; -147803;5;0;false;false;0;0;0;;; -147808;1;0;false;false;;;;;; -147809;1;0;false;false;0;0;0;;; -147810;1;0;false;false;;;;;; -147811;10;0;false;false;0;0;0;;; -147821;5;0;false;false;;;;;; -147826;2;1;false;false;127;0;85;;; -147828;1;0;false;false;;;;;; -147829;12;0;false;false;0;0;0;;; -147841;1;0;false;false;;;;;; -147842;1;0;false;false;0;0;0;;; -147843;1;0;false;false;;;;;; -147844;6;0;false;false;0;0;0;;; -147850;1;0;false;false;;;;;; -147851;1;0;false;false;0;0;0;;; -147852;6;0;false;false;;;;;; -147858;10;0;false;false;0;0;0;;; -147868;1;0;false;false;;;;;; -147869;8;0;false;false;0;0;0;;; -147877;1;0;false;false;;;;;; -147878;1;0;false;false;0;0;0;;; -147879;1;0;false;false;;;;;; -147880;30;0;false;false;0;0;0;;; -147910;6;0;false;false;;;;;; -147916;15;0;false;false;0;0;0;;; -147931;1;0;false;false;;;;;; -147932;1;0;false;false;0;0;0;;; -147933;1;0;false;false;;;;;; -147934;15;0;false;false;0;0;0;;; -147949;1;0;false;false;;;;;; -147950;1;0;false;false;0;0;0;;; -147951;1;0;false;false;;;;;; -147952;6;0;false;false;0;0;0;;; -147958;1;0;false;false;;;;;; -147959;1;0;false;false;0;0;0;;; -147960;1;0;false;false;;;;;; -147961;16;0;false;false;0;0;0;;; -147977;6;0;false;false;;;;;; -147983;14;0;false;false;0;0;0;;; -147997;1;0;false;false;;;;;; -147998;1;0;false;false;0;0;0;;; -147999;1;0;false;false;;;;;; -148000;6;0;false;false;0;0;0;;; -148006;6;0;false;false;;;;;; -148012;9;0;false;false;0;0;0;;; -148021;1;0;false;false;;;;;; -148022;1;0;false;false;0;0;0;;; -148023;1;0;false;false;;;;;; -148024;9;0;false;false;0;0;0;;; -148033;5;0;false;false;;;;;; -148038;1;0;false;false;0;0;0;;; -148039;5;0;false;false;;;;;; -148044;2;1;false;false;127;0;85;;; -148046;1;0;false;false;;;;;; -148047;12;0;false;false;0;0;0;;; -148059;1;0;false;false;;;;;; -148060;1;0;false;false;0;0;0;;; -148061;1;0;false;false;;;;;; -148062;12;0;false;false;0;0;0;;; -148074;1;0;false;false;;;;;; -148075;1;0;false;false;0;0;0;;; -148076;1;0;false;false;;;;;; -148077;6;0;false;false;0;0;0;;; -148083;1;0;false;false;;;;;; -148084;1;0;false;false;0;0;0;;; -148085;1;0;false;false;;;;;; -148086;8;0;false;false;0;0;0;;; -148094;1;0;false;false;;;;;; -148095;1;0;false;false;0;0;0;;; -148096;6;0;false;false;;;;;; -148102;10;0;false;false;0;0;0;;; -148112;1;0;false;false;;;;;; -148113;8;0;false;false;0;0;0;;; -148121;1;0;false;false;;;;;; -148122;1;0;false;false;0;0;0;;; -148123;1;0;false;false;;;;;; -148124;30;0;false;false;0;0;0;;; -148154;6;0;false;false;;;;;; -148160;15;0;false;false;0;0;0;;; -148175;1;0;false;false;;;;;; -148176;1;0;false;false;0;0;0;;; -148177;1;0;false;false;;;;;; -148178;5;0;false;false;0;0;0;;; -148183;1;0;false;false;;;;;; -148184;1;0;false;false;0;0;0;;; -148185;1;0;false;false;;;;;; -148186;6;0;false;false;0;0;0;;; -148192;1;0;false;false;;;;;; -148193;1;0;false;false;0;0;0;;; -148194;1;0;false;false;;;;;; -148195;15;0;false;false;0;0;0;;; -148210;6;0;false;false;;;;;; -148216;9;0;false;false;0;0;0;;; -148225;1;0;false;false;;;;;; -148226;1;0;false;false;0;0;0;;; -148227;1;0;false;false;;;;;; -148228;9;0;false;false;0;0;0;;; -148237;5;0;false;false;;;;;; -148242;1;0;false;false;0;0;0;;; -148243;4;0;false;false;;;;;; -148247;1;0;false;false;0;0;0;;; -148248;1;0;false;false;;;;;; -148249;4;1;false;false;127;0;85;;; -148253;1;0;false;false;;;;;; -148254;2;1;false;false;127;0;85;;; -148256;1;0;false;false;;;;;; -148257;14;0;false;false;0;0;0;;; -148271;1;0;false;false;;;;;; -148272;1;0;false;false;0;0;0;;; -148273;1;0;false;false;;;;;; -148274;2;0;false;false;0;0;0;;; -148276;1;0;false;false;;;;;; -148277;1;0;false;false;0;0;0;;; -148278;5;0;false;false;;;;;; -148283;10;0;false;false;0;0;0;;; -148293;1;0;false;false;;;;;; -148294;5;0;false;false;0;0;0;;; -148299;1;0;false;false;;;;;; -148300;1;0;false;false;0;0;0;;; -148301;1;0;false;false;;;;;; -148302;10;0;false;false;0;0;0;;; -148312;5;0;false;false;;;;;; -148317;2;1;false;false;127;0;85;;; -148319;1;0;false;false;;;;;; -148320;12;0;false;false;0;0;0;;; -148332;1;0;false;false;;;;;; -148333;1;0;false;false;0;0;0;;; -148334;1;0;false;false;;;;;; -148335;6;0;false;false;0;0;0;;; -148341;1;0;false;false;;;;;; -148342;1;0;false;false;0;0;0;;; -148343;6;0;false;false;;;;;; -148349;10;0;false;false;0;0;0;;; -148359;1;0;false;false;;;;;; -148360;8;0;false;false;0;0;0;;; -148368;1;0;false;false;;;;;; -148369;1;0;false;false;0;0;0;;; -148370;1;0;false;false;;;;;; -148371;30;0;false;false;0;0;0;;; -148401;6;0;false;false;;;;;; -148407;15;0;false;false;0;0;0;;; -148422;1;0;false;false;;;;;; -148423;1;0;false;false;0;0;0;;; -148424;1;0;false;false;;;;;; -148425;15;0;false;false;0;0;0;;; -148440;1;0;false;false;;;;;; -148441;1;0;false;false;0;0;0;;; -148442;1;0;false;false;;;;;; -148443;6;0;false;false;0;0;0;;; -148449;1;0;false;false;;;;;; -148450;1;0;false;false;0;0;0;;; -148451;1;0;false;false;;;;;; -148452;16;0;false;false;0;0;0;;; -148468;6;0;false;false;;;;;; -148474;14;0;false;false;0;0;0;;; -148488;1;0;false;false;;;;;; -148489;1;0;false;false;0;0;0;;; -148490;1;0;false;false;;;;;; -148491;6;0;false;false;0;0;0;;; -148497;6;0;false;false;;;;;; -148503;9;0;false;false;0;0;0;;; -148512;1;0;false;false;;;;;; -148513;1;0;false;false;0;0;0;;; -148514;1;0;false;false;;;;;; -148515;9;0;false;false;0;0;0;;; -148524;5;0;false;false;;;;;; -148529;1;0;false;false;0;0;0;;; -148530;5;0;false;false;;;;;; -148535;5;0;false;false;0;0;0;;; -148540;1;0;false;false;;;;;; -148541;1;0;false;false;0;0;0;;; -148542;1;0;false;false;;;;;; -148543;20;0;false;false;0;0;0;;; -148563;1;0;false;false;;;;;; -148564;1;0;false;false;0;0;0;;; -148565;1;0;false;false;;;;;; -148566;3;0;false;false;0;0;0;;; -148569;5;0;false;false;;;;;; -148574;2;1;false;false;127;0;85;;; -148576;1;0;false;false;;;;;; -148577;12;0;false;false;0;0;0;;; -148589;1;0;false;false;;;;;; -148590;1;0;false;false;0;0;0;;; -148591;1;0;false;false;;;;;; -148592;12;0;false;false;0;0;0;;; -148604;1;0;false;false;;;;;; -148605;1;0;false;false;0;0;0;;; -148606;1;0;false;false;;;;;; -148607;6;0;false;false;0;0;0;;; -148613;1;0;false;false;;;;;; -148614;1;0;false;false;0;0;0;;; -148615;1;0;false;false;;;;;; -148616;8;0;false;false;0;0;0;;; -148624;1;0;false;false;;;;;; -148625;1;0;false;false;0;0;0;;; -148626;6;0;false;false;;;;;; -148632;10;0;false;false;0;0;0;;; -148642;1;0;false;false;;;;;; -148643;8;0;false;false;0;0;0;;; -148651;1;0;false;false;;;;;; -148652;1;0;false;false;0;0;0;;; -148653;1;0;false;false;;;;;; -148654;32;0;false;false;0;0;0;;; -148686;1;0;false;false;;;;;; -148687;1;0;false;false;0;0;0;;; -148688;1;0;false;false;;;;;; -148689;11;0;false;false;0;0;0;;; -148700;6;0;false;false;;;;;; -148706;15;0;false;false;0;0;0;;; -148721;1;0;false;false;;;;;; -148722;1;0;false;false;0;0;0;;; -148723;1;0;false;false;;;;;; -148724;5;0;false;false;0;0;0;;; -148729;1;0;false;false;;;;;; -148730;1;0;false;false;0;0;0;;; -148731;1;0;false;false;;;;;; -148732;6;0;false;false;0;0;0;;; -148738;1;0;false;false;;;;;; -148739;1;0;false;false;0;0;0;;; -148740;1;0;false;false;;;;;; -148741;15;0;false;false;0;0;0;;; -148756;6;0;false;false;;;;;; -148762;20;0;false;false;0;0;0;;; -148782;1;0;false;false;;;;;; -148783;1;0;false;false;0;0;0;;; -148784;1;0;false;false;;;;;; -148785;2;0;false;false;0;0;0;;; -148787;1;0;false;false;;;;;; -148788;1;0;false;false;0;0;0;;; -148789;1;0;false;false;;;;;; -148790;9;0;false;false;0;0;0;;; -148799;5;0;false;false;;;;;; -148804;1;0;false;false;0;0;0;;; -148805;4;0;false;false;;;;;; -148809;1;0;false;false;0;0;0;;; -148810;3;0;false;false;;;;;; -148813;1;0;false;false;0;0;0;;; -148814;3;0;false;false;;;;;; -148817;4;1;false;false;127;0;85;;; -148821;1;0;false;false;;;;;; -148822;1;0;false;false;0;0;0;;; -148823;4;0;false;false;;;;;; -148827;6;0;false;false;0;0;0;;; -148833;1;0;false;false;;;;;; -148834;1;0;false;false;0;0;0;;; -148835;1;0;false;false;;;;;; -148836;3;1;false;false;127;0;85;;; -148839;1;0;false;false;;;;;; -148840;14;0;false;false;0;0;0;;; -148854;3;0;false;false;;;;;; -148857;1;0;false;false;0;0;0;;; -148858;3;0;false;false;;;;;; -148861;6;1;false;false;127;0;85;;; -148867;1;0;false;false;;;;;; -148868;7;0;false;false;0;0;0;;; -148875;2;0;false;false;;;;;; -148877;1;0;false;false;0;0;0;;; -148878;2;0;false;false;;;;;; -148880;3;0;false;false;63;95;191;;; -148883;3;0;false;false;;;;;; -148886;1;0;false;false;63;95;191;;; -148887;1;0;false;false;;;;;; -148888;7;0;false;false;63;95;191;;; -148895;1;0;false;false;;;;;; -148896;3;0;false;false;63;95;191;;; -148899;1;0;false;false;;;;;; -148900;3;0;false;false;63;95;191;;; -148903;1;0;false;false;;;;;; -148904;5;0;false;false;63;95;191;;; -148909;1;0;false;false;;;;;; -148910;8;0;false;false;63;95;191;;; -148918;1;0;false;false;;;;;; -148919;2;0;false;false;63;95;191;;; -148921;1;0;false;false;;;;;; -148922;11;0;false;false;63;95;191;;; -148933;3;0;false;false;;;;;; -148936;1;0;false;false;63;95;191;;; -148937;3;0;false;false;;;;;; -148940;1;0;false;false;63;95;191;;; -148941;1;0;false;false;;;;;; -148942;8;1;false;false;127;159;191;;; -148950;3;0;false;false;63;95;191;;; -148953;1;0;false;false;;;;;; -148954;5;0;false;false;63;95;191;;; -148959;1;0;false;false;;;;;; -148960;8;0;false;false;63;95;191;;; -148968;1;0;false;false;;;;;; -148969;2;0;false;false;63;95;191;;; -148971;1;0;false;false;;;;;; -148972;10;0;false;false;63;95;191;;; -148982;3;0;false;false;;;;;; -148985;1;0;false;false;63;95;191;;; -148986;1;0;false;false;;;;;; -148987;11;1;false;false;127;159;191;;; -148998;12;0;false;false;63;95;191;;; -149010;1;0;false;false;;;;;; -149011;4;0;false;false;127;127;159;;; -149015;3;0;false;false;;;;;; -149018;1;0;false;false;63;95;191;;; -149019;4;0;false;false;;;;;; -149023;4;0;false;false;127;127;159;;; -149027;21;0;false;false;63;95;191;;; -149048;1;0;false;false;;;;;; -149049;1;0;false;false;127;127;159;;; -149050;1;0;false;false;;;;;; -149051;2;0;false;false;63;95;191;;; -149053;1;0;false;false;;;;;; -149054;3;0;false;false;63;95;191;;; -149057;1;0;false;false;;;;;; -149058;8;0;false;false;63;95;191;;; -149066;1;0;false;false;;;;;; -149067;3;0;false;false;63;95;191;;; -149070;1;0;false;false;;;;;; -149071;4;0;false;false;63;95;191;;; -149075;1;0;false;false;;;;;; -149076;8;0;false;false;63;95;191;;; -149084;5;0;false;false;127;127;159;;; -149089;3;0;false;false;;;;;; -149092;1;0;false;false;63;95;191;;; -149093;4;0;false;false;;;;;; -149097;4;0;false;false;127;127;159;;; -149101;27;0;false;false;63;95;191;;; -149128;1;0;false;false;;;;;; -149129;1;0;false;false;127;127;159;;; -149130;1;0;false;false;;;;;; -149131;2;0;false;false;63;95;191;;; -149133;1;0;false;false;;;;;; -149134;3;0;false;false;63;95;191;;; -149137;1;0;false;false;;;;;; -149138;6;0;false;false;63;95;191;;; -149144;1;0;false;false;;;;;; -149145;4;0;false;false;63;95;191;;; -149149;1;0;false;false;;;;;; -149150;3;0;false;false;63;95;191;;; -149153;1;0;false;false;;;;;; -149154;6;0;false;false;63;95;191;;; -149160;1;0;false;false;;;;;; -149161;4;0;false;false;63;95;191;;; -149165;1;0;false;false;;;;;; -149166;7;0;false;false;63;95;191;;; -149173;1;0;false;false;;;;;; -149174;3;0;false;false;63;95;191;;; -149177;1;0;false;false;;;;;; -149178;8;0;false;false;63;95;191;;; -149186;5;0;false;false;127;127;159;;; -149191;3;0;false;false;;;;;; -149194;1;0;false;false;63;95;191;;; -149195;1;0;false;false;;;;;; -149196;5;0;false;false;127;127;159;;; -149201;3;0;false;false;;;;;; -149204;2;0;false;false;63;95;191;;; -149206;2;0;false;false;;;;;; -149208;6;1;false;false;127;0;85;;; -149214;1;0;false;false;;;;;; -149215;3;1;false;false;127;0;85;;; -149218;1;0;false;false;;;;;; -149219;9;0;false;false;0;0;0;;; -149228;1;0;false;false;;;;;; -149229;1;0;false;false;0;0;0;;; -149230;3;0;false;false;;;;;; -149233;14;0;false;false;0;0;0;;; -149247;3;0;false;false;;;;;; -149250;6;1;false;false;127;0;85;;; -149256;1;0;false;false;;;;;; -149257;10;0;false;false;0;0;0;;; -149267;2;0;false;false;;;;;; -149269;1;0;false;false;0;0;0;;; -149270;2;0;false;false;;;;;; -149272;3;0;false;false;63;95;191;;; -149275;3;0;false;false;;;;;; -149278;1;0;false;false;63;95;191;;; -149279;1;0;false;false;;;;;; -149280;7;0;false;false;63;95;191;;; -149287;1;0;false;false;;;;;; -149288;1;0;false;false;63;95;191;;; -149289;1;0;false;false;;;;;; -149290;4;0;false;false;63;95;191;;; -149294;1;0;false;false;;;;;; -149295;2;0;false;false;63;95;191;;; -149297;1;0;false;false;;;;;; -149298;3;0;false;false;63;95;191;;; -149301;1;0;false;false;;;;;; -149302;6;0;false;false;63;95;191;;; -149308;1;0;false;false;;;;;; -149309;8;0;false;false;63;95;191;;; -149317;3;0;false;false;;;;;; -149320;1;0;false;false;63;95;191;;; -149321;1;0;false;false;;;;;; -149322;3;0;false;false;127;127;159;;; -149325;3;0;false;false;;;;;; -149328;1;0;false;false;63;95;191;;; -149329;3;0;false;false;;;;;; -149332;1;0;false;false;63;95;191;;; -149333;1;0;false;false;;;;;; -149334;8;1;false;false;127;159;191;;; -149342;4;0;false;false;63;95;191;;; -149346;1;0;false;false;;;;;; -149347;2;0;false;false;63;95;191;;; -149349;1;0;false;false;;;;;; -149350;3;0;false;false;63;95;191;;; -149353;1;0;false;false;;;;;; -149354;6;0;false;false;63;95;191;;; -149360;1;0;false;false;;;;;; -149361;7;0;false;false;63;95;191;;; -149368;3;0;false;false;;;;;; -149371;1;0;false;false;63;95;191;;; -149372;1;0;false;false;;;;;; -149373;11;1;false;false;127;159;191;;; -149384;12;0;false;false;63;95;191;;; -149396;1;0;false;false;;;;;; -149397;4;0;false;false;127;127;159;;; -149401;3;0;false;false;;;;;; -149404;1;0;false;false;63;95;191;;; -149405;4;0;false;false;;;;;; -149409;4;0;false;false;127;127;159;;; -149413;21;0;false;false;63;95;191;;; -149434;1;0;false;false;;;;;; -149435;1;0;false;false;127;127;159;;; -149436;1;0;false;false;;;;;; -149437;2;0;false;false;63;95;191;;; -149439;1;0;false;false;;;;;; -149440;3;0;false;false;63;95;191;;; -149443;1;0;false;false;;;;;; -149444;8;0;false;false;63;95;191;;; -149452;1;0;false;false;;;;;; -149453;3;0;false;false;63;95;191;;; -149456;1;0;false;false;;;;;; -149457;4;0;false;false;63;95;191;;; -149461;1;0;false;false;;;;;; -149462;8;0;false;false;63;95;191;;; -149470;5;0;false;false;127;127;159;;; -149475;3;0;false;false;;;;;; -149478;1;0;false;false;63;95;191;;; -149479;4;0;false;false;;;;;; -149483;4;0;false;false;127;127;159;;; -149487;27;0;false;false;63;95;191;;; -149514;1;0;false;false;;;;;; -149515;1;0;false;false;127;127;159;;; -149516;1;0;false;false;;;;;; -149517;2;0;false;false;63;95;191;;; -149519;1;0;false;false;;;;;; -149520;3;0;false;false;63;95;191;;; -149523;1;0;false;false;;;;;; -149524;6;0;false;false;63;95;191;;; -149530;1;0;false;false;;;;;; -149531;4;0;false;false;63;95;191;;; -149535;1;0;false;false;;;;;; -149536;3;0;false;false;63;95;191;;; -149539;1;0;false;false;;;;;; -149540;6;0;false;false;63;95;191;;; -149546;1;0;false;false;;;;;; -149547;4;0;false;false;63;95;191;;; -149551;1;0;false;false;;;;;; -149552;7;0;false;false;63;95;191;;; -149559;1;0;false;false;;;;;; -149560;3;0;false;false;63;95;191;;; -149563;1;0;false;false;;;;;; -149564;8;0;false;false;63;95;191;;; -149572;5;0;false;false;127;127;159;;; -149577;3;0;false;false;;;;;; -149580;1;0;false;false;63;95;191;;; -149581;1;0;false;false;;;;;; -149582;5;0;false;false;127;127;159;;; -149587;3;0;false;false;;;;;; -149590;2;0;false;false;63;95;191;;; -149592;2;0;false;false;;;;;; -149594;6;1;false;false;127;0;85;;; -149600;1;0;false;false;;;;;; -149601;6;0;false;false;0;0;0;;; -149607;1;0;false;false;;;;;; -149608;9;0;false;false;0;0;0;;; -149617;1;0;false;false;;;;;; -149618;1;0;false;false;0;0;0;;; -149619;3;0;false;false;;;;;; -149622;14;0;false;false;0;0;0;;; -149636;3;0;false;false;;;;;; -149639;6;1;false;false;127;0;85;;; -149645;1;0;false;false;;;;;; -149646;23;0;false;false;0;0;0;;; -149669;1;0;false;false;;;;;; -149670;16;0;false;false;0;0;0;;; -149686;2;0;false;false;;;;;; -149688;1;0;false;false;0;0;0;;; -149689;3;0;false;false;;;;;; -149692;3;0;false;false;63;95;191;;; -149695;3;0;false;false;;;;;; -149698;1;0;false;false;63;95;191;;; -149699;1;0;false;false;;;;;; -149700;7;0;false;false;63;95;191;;; -149707;1;0;false;false;;;;;; -149708;3;0;false;false;63;95;191;;; -149711;1;0;false;false;;;;;; -149712;6;0;false;false;63;95;191;;; -149718;1;0;false;false;;;;;; -149719;7;0;false;false;63;95;191;;; -149726;1;0;false;false;;;;;; -149727;7;0;false;false;63;95;191;;; -149734;1;0;false;false;;;;;; -149735;3;0;false;false;63;95;191;;; -149738;1;0;false;false;;;;;; -149739;3;0;false;false;63;95;191;;; -149742;1;0;false;false;;;;;; -149743;8;0;false;false;63;95;191;;; -149751;3;0;false;false;;;;;; -149754;1;0;false;false;63;95;191;;; -149755;1;0;false;false;;;;;; -149756;3;0;false;false;127;127;159;;; -149759;3;0;false;false;;;;;; -149762;1;0;false;false;63;95;191;;; -149763;3;0;false;false;;;;;; -149766;1;0;false;false;63;95;191;;; -149767;1;0;false;false;;;;;; -149768;7;1;false;false;127;159;191;;; -149775;5;0;false;false;63;95;191;;; -149780;1;0;false;false;;;;;; -149781;6;0;false;false;63;95;191;;; -149787;1;0;false;false;;;;;; -149788;2;0;false;false;63;95;191;;; -149790;1;0;false;false;;;;;; -149791;3;0;false;false;63;95;191;;; -149794;1;0;false;false;;;;;; -149795;5;0;false;false;63;95;191;;; -149800;1;0;false;false;;;;;; -149801;9;0;false;false;63;95;191;;; -149810;1;0;false;false;;;;;; -149811;2;0;false;false;63;95;191;;; -149813;1;0;false;false;;;;;; -149814;3;0;false;false;63;95;191;;; -149817;1;0;false;false;;;;;; -149818;8;0;false;false;63;95;191;;; -149826;1;0;false;false;;;;;; -149827;6;0;false;false;63;95;191;;; -149833;3;0;false;false;;;;;; -149836;1;0;false;false;63;95;191;;; -149837;1;0;false;false;;;;;; -149838;7;1;false;false;127;159;191;;; -149845;3;0;false;false;63;95;191;;; -149848;1;0;false;false;;;;;; -149849;6;0;false;false;63;95;191;;; -149855;1;0;false;false;;;;;; -149856;2;0;false;false;63;95;191;;; -149858;1;0;false;false;;;;;; -149859;3;0;false;false;63;95;191;;; -149862;1;0;false;false;;;;;; -149863;4;0;false;false;63;95;191;;; -149867;1;0;false;false;;;;;; -149868;9;0;false;false;63;95;191;;; -149877;1;0;false;false;;;;;; -149878;2;0;false;false;63;95;191;;; -149880;1;0;false;false;;;;;; -149881;3;0;false;false;63;95;191;;; -149884;1;0;false;false;;;;;; -149885;8;0;false;false;63;95;191;;; -149893;1;0;false;false;;;;;; -149894;6;0;false;false;63;95;191;;; -149900;4;0;false;false;;;;;; -149904;1;0;false;false;63;95;191;;; -149905;1;0;false;false;;;;;; -149906;8;1;false;false;127;159;191;;; -149914;6;0;false;false;63;95;191;;; -149920;1;0;false;false;;;;;; -149921;7;0;false;false;63;95;191;;; -149928;1;0;false;false;;;;;; -149929;8;0;false;false;63;95;191;;; -149937;1;0;false;false;;;;;; -149938;2;0;false;false;63;95;191;;; -149940;1;0;false;false;;;;;; -149941;5;0;false;false;63;95;191;;; -149946;1;0;false;false;;;;;; -149947;3;0;false;false;63;95;191;;; -149950;1;0;false;false;;;;;; -149951;6;0;false;false;63;95;191;;; -149957;1;0;false;false;;;;;; -149958;2;0;false;false;63;95;191;;; -149960;1;0;false;false;;;;;; -149961;3;0;false;false;63;95;191;;; -149964;3;0;false;false;;;;;; -149967;1;0;false;false;63;95;191;;; -149968;1;0;false;false;;;;;; -149969;5;1;false;false;127;159;191;;; -149974;22;0;false;false;63;95;191;;; -149996;3;0;false;false;;;;;; -149999;1;0;false;false;63;95;191;;; -150000;1;0;false;false;;;;;; -150001;11;1;false;false;127;159;191;;; -150012;12;0;false;false;63;95;191;;; -150024;1;0;false;false;;;;;; -150025;4;0;false;false;127;127;159;;; -150029;3;0;false;false;;;;;; -150032;1;0;false;false;63;95;191;;; -150033;4;0;false;false;;;;;; -150037;4;0;false;false;127;127;159;;; -150041;21;0;false;false;63;95;191;;; -150062;1;0;false;false;;;;;; -150063;1;0;false;false;127;127;159;;; -150064;1;0;false;false;;;;;; -150065;2;0;false;false;63;95;191;;; -150067;1;0;false;false;;;;;; -150068;3;0;false;false;63;95;191;;; -150071;1;0;false;false;;;;;; -150072;8;0;false;false;63;95;191;;; -150080;1;0;false;false;;;;;; -150081;3;0;false;false;63;95;191;;; -150084;1;0;false;false;;;;;; -150085;4;0;false;false;63;95;191;;; -150089;1;0;false;false;;;;;; -150090;8;0;false;false;63;95;191;;; -150098;5;0;false;false;127;127;159;;; -150103;3;0;false;false;;;;;; -150106;1;0;false;false;63;95;191;;; -150107;4;0;false;false;;;;;; -150111;4;0;false;false;127;127;159;;; -150115;27;0;false;false;63;95;191;;; -150142;1;0;false;false;;;;;; -150143;1;0;false;false;127;127;159;;; -150144;1;0;false;false;;;;;; -150145;2;0;false;false;63;95;191;;; -150147;1;0;false;false;;;;;; -150148;3;0;false;false;63;95;191;;; -150151;1;0;false;false;;;;;; -150152;6;0;false;false;63;95;191;;; -150158;1;0;false;false;;;;;; -150159;4;0;false;false;63;95;191;;; -150163;1;0;false;false;;;;;; -150164;3;0;false;false;63;95;191;;; -150167;1;0;false;false;;;;;; -150168;6;0;false;false;63;95;191;;; -150174;1;0;false;false;;;;;; -150175;4;0;false;false;63;95;191;;; -150179;1;0;false;false;;;;;; -150180;7;0;false;false;63;95;191;;; -150187;1;0;false;false;;;;;; -150188;3;0;false;false;63;95;191;;; -150191;1;0;false;false;;;;;; -150192;8;0;false;false;63;95;191;;; -150200;5;0;false;false;127;127;159;;; -150205;3;0;false;false;;;;;; -150208;1;0;false;false;63;95;191;;; -150209;1;0;false;false;;;;;; -150210;5;0;false;false;127;127;159;;; -150215;3;0;false;false;;;;;; -150218;1;0;false;false;63;95;191;;; -150219;1;0;false;false;;;;;; -150220;11;1;false;false;127;159;191;;; -150231;24;0;false;false;63;95;191;;; -150255;1;0;false;false;;;;;; -150256;4;0;false;false;127;127;159;;; -150260;3;0;false;false;;;;;; -150263;1;0;false;false;63;95;191;;; -150264;3;0;false;false;;;;;; -150267;4;0;false;false;127;127;159;;; -150271;19;0;false;false;63;95;191;;; -150290;1;0;false;false;;;;;; -150291;4;0;false;false;63;95;191;;; -150295;1;0;false;false;;;;;; -150296;5;0;false;false;63;95;191;;; -150301;1;0;false;false;;;;;; -150302;6;0;false;false;63;95;191;;; -150308;1;0;false;false;;;;;; -150309;3;0;false;false;63;95;191;;; -150312;1;0;false;false;;;;;; -150313;3;0;false;false;63;95;191;;; -150316;1;0;false;false;;;;;; -150317;7;0;false;false;63;95;191;;; -150324;1;0;false;false;;;;;; -150325;3;0;false;false;63;95;191;;; -150328;1;0;false;false;;;;;; -150329;6;0;false;false;63;95;191;;; -150335;1;0;false;false;;;;;; -150336;7;0;false;false;63;95;191;;; -150343;5;0;false;false;127;127;159;;; -150348;4;0;false;false;;;;;; -150352;1;0;false;false;63;95;191;;; -150353;1;0;false;false;;;;;; -150354;5;0;false;false;127;127;159;;; -150359;3;0;false;false;;;;;; -150362;2;0;false;false;63;95;191;;; -150364;2;0;false;false;;;;;; -150366;6;1;false;false;127;0;85;;; -150372;1;0;false;false;;;;;; -150373;6;0;false;false;0;0;0;;; -150379;1;0;false;false;;;;;; -150380;8;0;false;false;0;0;0;;; -150388;3;1;false;false;127;0;85;;; -150391;1;0;false;false;;;;;; -150392;6;0;false;false;0;0;0;;; -150398;1;0;false;false;;;;;; -150399;3;1;false;false;127;0;85;;; -150402;1;0;false;false;;;;;; -150403;4;0;false;false;0;0;0;;; -150407;1;0;false;false;;;;;; -150408;1;0;false;false;0;0;0;;; -150409;3;0;false;false;;;;;; -150412;14;0;false;false;0;0;0;;; -150426;3;0;false;false;;;;;; -150429;3;1;false;false;127;0;85;;; -150432;1;0;false;false;;;;;; -150433;13;0;false;false;0;0;0;;; -150446;1;0;false;false;;;;;; -150447;1;0;false;false;0;0;0;;; -150448;1;0;false;false;;;;;; -150449;15;0;false;false;0;0;0;;; -150464;6;0;false;false;;;;;; -150470;2;1;false;false;127;0;85;;; -150472;1;0;false;false;;;;;; -150473;6;0;false;false;0;0;0;;; -150479;1;0;false;false;;;;;; -150480;1;0;false;false;0;0;0;;; -150481;1;0;false;false;;;;;; -150482;1;0;false;false;0;0;0;;; -150483;1;0;false;false;;;;;; -150484;2;0;false;false;0;0;0;;; -150486;1;0;false;false;;;;;; -150487;5;0;false;false;0;0;0;;; -150492;1;0;false;false;;;;;; -150493;2;0;false;false;0;0;0;;; -150495;1;0;false;false;;;;;; -150496;13;0;false;false;0;0;0;;; -150509;1;0;false;false;;;;;; -150510;2;0;false;false;0;0;0;;; -150512;1;0;false;false;;;;;; -150513;3;0;false;false;0;0;0;;; -150516;1;0;false;false;;;;;; -150517;1;0;false;false;0;0;0;;; -150518;1;0;false;false;;;;;; -150519;1;0;false;false;0;0;0;;; -150520;1;0;false;false;;;;;; -150521;2;0;false;false;0;0;0;;; -150523;1;0;false;false;;;;;; -150524;3;0;false;false;0;0;0;;; -150527;1;0;false;false;;;;;; -150528;2;0;false;false;0;0;0;;; -150530;1;0;false;false;;;;;; -150531;13;0;false;false;0;0;0;;; -150544;1;0;false;false;;;;;; -150545;2;0;false;false;0;0;0;;; -150547;1;0;false;false;;;;;; -150548;5;0;false;false;0;0;0;;; -150553;1;0;false;false;;;;;; -150554;1;0;false;false;0;0;0;;; -150555;1;0;false;false;;;;;; -150556;4;0;false;false;0;0;0;;; -150560;1;0;false;false;;;;;; -150561;1;0;false;false;0;0;0;;; -150562;4;0;false;false;;;;;; -150566;35;0;false;false;0;0;0;;; -150601;3;0;false;false;;;;;; -150604;1;0;false;false;0;0;0;;; -150605;4;0;false;false;;;;;; -150609;6;1;false;false;127;0;85;;; -150615;1;0;false;false;;;;;; -150616;27;0;false;false;0;0;0;;; -150643;1;0;false;false;;;;;; -150644;3;0;false;false;0;0;0;;; -150647;1;0;false;false;;;;;; -150648;1;0;false;false;0;0;0;;; -150649;1;0;false;false;;;;;; -150650;5;0;false;false;0;0;0;;; -150655;1;0;false;false;;;;;; -150656;1;0;false;false;0;0;0;;; -150657;1;0;false;false;;;;;; -150658;3;0;false;false;0;0;0;;; -150661;2;0;false;false;;;;;; -150663;1;0;false;false;0;0;0;;; -150664;2;0;false;false;;;;;; -150666;3;0;false;false;63;95;191;;; -150669;3;0;false;false;;;;;; -150672;1;0;false;false;63;95;191;;; -150673;1;0;false;false;;;;;; -150674;7;0;false;false;63;95;191;;; -150681;1;0;false;false;;;;;; -150682;3;0;false;false;63;95;191;;; -150685;1;0;false;false;;;;;; -150686;8;0;false;false;63;95;191;;; -150694;1;0;false;false;;;;;; -150695;8;0;false;false;63;95;191;;; -150703;1;0;false;false;;;;;; -150704;9;0;false;false;63;95;191;;; -150713;1;0;false;false;;;;;; -150714;4;0;false;false;63;95;191;;; -150718;1;0;false;false;;;;;; -150719;8;0;false;false;63;95;191;;; -150727;1;0;false;false;;;;;; -150728;3;0;false;false;63;95;191;;; -150731;1;0;false;false;;;;;; -150732;10;0;false;false;63;95;191;;; -150742;1;0;false;false;;;;;; -150743;7;0;false;false;63;95;191;;; -150750;1;0;false;false;;;;;; -150751;3;0;false;false;63;95;191;;; -150754;1;0;false;false;;;;;; -150755;8;0;false;false;63;95;191;;; -150763;3;0;false;false;;;;;; -150766;1;0;false;false;63;95;191;;; -150767;1;0;false;false;;;;;; -150768;3;0;false;false;127;127;159;;; -150771;3;0;false;false;;;;;; -150774;1;0;false;false;63;95;191;;; -150775;3;0;false;false;;;;;; -150778;1;0;false;false;63;95;191;;; -150779;1;0;false;false;;;;;; -150780;7;1;false;false;127;159;191;;; -150787;5;0;false;false;63;95;191;;; -150792;1;0;false;false;;;;;; -150793;6;0;false;false;63;95;191;;; -150799;1;0;false;false;;;;;; -150800;2;0;false;false;63;95;191;;; -150802;1;0;false;false;;;;;; -150803;3;0;false;false;63;95;191;;; -150806;1;0;false;false;;;;;; -150807;5;0;false;false;63;95;191;;; -150812;1;0;false;false;;;;;; -150813;9;0;false;false;63;95;191;;; -150822;1;0;false;false;;;;;; -150823;8;0;false;false;63;95;191;;; -150831;1;0;false;false;;;;;; -150832;2;0;false;false;63;95;191;;; -150834;1;0;false;false;;;;;; -150835;3;0;false;false;63;95;191;;; -150838;1;0;false;false;;;;;; -150839;8;0;false;false;63;95;191;;; -150847;1;0;false;false;;;;;; -150848;3;0;false;false;63;95;191;;; -150851;3;0;false;false;;;;;; -150854;1;0;false;false;63;95;191;;; -150855;1;0;false;false;;;;;; -150856;7;1;false;false;127;159;191;;; -150863;3;0;false;false;63;95;191;;; -150866;1;0;false;false;;;;;; -150867;6;0;false;false;63;95;191;;; -150873;1;0;false;false;;;;;; -150874;2;0;false;false;63;95;191;;; -150876;1;0;false;false;;;;;; -150877;3;0;false;false;63;95;191;;; -150880;1;0;false;false;;;;;; -150881;4;0;false;false;63;95;191;;; -150885;1;0;false;false;;;;;; -150886;9;0;false;false;63;95;191;;; -150895;1;0;false;false;;;;;; -150896;8;0;false;false;63;95;191;;; -150904;1;0;false;false;;;;;; -150905;2;0;false;false;63;95;191;;; -150907;1;0;false;false;;;;;; -150908;3;0;false;false;63;95;191;;; -150911;1;0;false;false;;;;;; -150912;8;0;false;false;63;95;191;;; -150920;1;0;false;false;;;;;; -150921;3;0;false;false;63;95;191;;; -150924;4;0;false;false;;;;;; -150928;1;0;false;false;63;95;191;;; -150929;1;0;false;false;;;;;; -150930;8;1;false;false;127;159;191;;; -150938;8;0;false;false;63;95;191;;; -150946;1;0;false;false;;;;;; -150947;3;0;false;false;63;95;191;;; -150950;1;0;false;false;;;;;; -150951;2;0;false;false;63;95;191;;; -150953;1;0;false;false;;;;;; -150954;3;0;false;false;63;95;191;;; -150957;1;0;false;false;;;;;; -150958;4;0;false;false;63;95;191;;; -150962;1;0;false;false;;;;;; -150963;7;0;false;false;63;95;191;;; -150970;1;0;false;false;;;;;; -150971;5;0;false;false;63;95;191;;; -150976;1;0;false;false;;;;;; -150977;3;0;false;false;63;95;191;;; -150980;1;0;false;false;;;;;; -150981;3;0;false;false;63;95;191;;; -150984;3;0;false;false;;;;;; -150987;1;0;false;false;63;95;191;;; -150988;1;0;false;false;;;;;; -150989;11;1;false;false;127;159;191;;; -151000;12;0;false;false;63;95;191;;; -151012;1;0;false;false;;;;;; -151013;4;0;false;false;127;127;159;;; -151017;3;0;false;false;;;;;; -151020;1;0;false;false;63;95;191;;; -151021;4;0;false;false;;;;;; -151025;4;0;false;false;127;127;159;;; -151029;21;0;false;false;63;95;191;;; -151050;1;0;false;false;;;;;; -151051;1;0;false;false;127;127;159;;; -151052;1;0;false;false;;;;;; -151053;2;0;false;false;63;95;191;;; -151055;1;0;false;false;;;;;; -151056;3;0;false;false;63;95;191;;; -151059;1;0;false;false;;;;;; -151060;8;0;false;false;63;95;191;;; -151068;1;0;false;false;;;;;; -151069;3;0;false;false;63;95;191;;; -151072;1;0;false;false;;;;;; -151073;4;0;false;false;63;95;191;;; -151077;1;0;false;false;;;;;; -151078;8;0;false;false;63;95;191;;; -151086;5;0;false;false;127;127;159;;; -151091;3;0;false;false;;;;;; -151094;1;0;false;false;63;95;191;;; -151095;4;0;false;false;;;;;; -151099;4;0;false;false;127;127;159;;; -151103;27;0;false;false;63;95;191;;; -151130;1;0;false;false;;;;;; -151131;1;0;false;false;127;127;159;;; -151132;1;0;false;false;;;;;; -151133;2;0;false;false;63;95;191;;; -151135;1;0;false;false;;;;;; -151136;3;0;false;false;63;95;191;;; -151139;1;0;false;false;;;;;; -151140;6;0;false;false;63;95;191;;; -151146;1;0;false;false;;;;;; -151147;4;0;false;false;63;95;191;;; -151151;1;0;false;false;;;;;; -151152;3;0;false;false;63;95;191;;; -151155;1;0;false;false;;;;;; -151156;6;0;false;false;63;95;191;;; -151162;1;0;false;false;;;;;; -151163;4;0;false;false;63;95;191;;; -151167;1;0;false;false;;;;;; -151168;7;0;false;false;63;95;191;;; -151175;1;0;false;false;;;;;; -151176;3;0;false;false;63;95;191;;; -151179;1;0;false;false;;;;;; -151180;8;0;false;false;63;95;191;;; -151188;5;0;false;false;127;127;159;;; -151193;3;0;false;false;;;;;; -151196;1;0;false;false;63;95;191;;; -151197;1;0;false;false;;;;;; -151198;5;0;false;false;127;127;159;;; -151203;3;0;false;false;;;;;; -151206;1;0;false;false;63;95;191;;; -151207;1;0;false;false;;;;;; -151208;11;1;false;false;127;159;191;;; -151219;24;0;false;false;63;95;191;;; -151243;1;0;false;false;;;;;; -151244;4;0;false;false;127;127;159;;; -151248;3;0;false;false;;;;;; -151251;1;0;false;false;63;95;191;;; -151252;3;0;false;false;;;;;; -151255;4;0;false;false;127;127;159;;; -151259;19;0;false;false;63;95;191;;; -151278;1;0;false;false;;;;;; -151279;4;0;false;false;63;95;191;;; -151283;1;0;false;false;;;;;; -151284;5;0;false;false;63;95;191;;; -151289;1;0;false;false;;;;;; -151290;6;0;false;false;63;95;191;;; -151296;1;0;false;false;;;;;; -151297;3;0;false;false;63;95;191;;; -151300;1;0;false;false;;;;;; -151301;3;0;false;false;63;95;191;;; -151304;1;0;false;false;;;;;; -151305;7;0;false;false;63;95;191;;; -151312;1;0;false;false;;;;;; -151313;3;0;false;false;63;95;191;;; -151316;1;0;false;false;;;;;; -151317;6;0;false;false;63;95;191;;; -151323;1;0;false;false;;;;;; -151324;7;0;false;false;63;95;191;;; -151331;5;0;false;false;127;127;159;;; -151336;4;0;false;false;;;;;; -151340;1;0;false;false;63;95;191;;; -151341;1;0;false;false;;;;;; -151342;5;0;false;false;127;127;159;;; -151347;3;0;false;false;;;;;; -151350;1;0;false;false;63;95;191;;; -151351;1;0;false;false;;;;;; -151352;7;1;false;false;127;159;191;;; -151359;3;0;false;false;63;95;191;;; -151362;3;0;false;false;;;;;; -151365;2;0;false;false;63;95;191;;; -151367;2;0;false;false;;;;;; -151369;6;1;false;false;127;0;85;;; -151375;1;0;false;false;;;;;; -151376;9;0;false;false;0;0;0;;; -151385;1;0;false;false;;;;;; -151386;14;0;false;false;0;0;0;;; -151400;3;1;false;false;127;0;85;;; -151403;1;0;false;false;;;;;; -151404;6;0;false;false;0;0;0;;; -151410;1;0;false;false;;;;;; -151411;3;1;false;false;127;0;85;;; -151414;1;0;false;false;;;;;; -151415;4;0;false;false;0;0;0;;; -151419;1;0;false;false;;;;;; -151420;1;0;false;false;0;0;0;;; -151421;3;0;false;false;;;;;; -151424;14;0;false;false;0;0;0;;; -151438;4;0;false;false;;;;;; -151442;3;1;false;false;127;0;85;;; -151445;1;0;false;false;;;;;; -151446;13;0;false;false;0;0;0;;; -151459;1;0;false;false;;;;;; -151460;1;0;false;false;0;0;0;;; -151461;1;0;false;false;;;;;; -151462;15;0;false;false;0;0;0;;; -151477;4;0;false;false;;;;;; -151481;2;1;false;false;127;0;85;;; -151483;1;0;false;false;;;;;; -151484;6;0;false;false;0;0;0;;; -151490;1;0;false;false;;;;;; -151491;1;0;false;false;0;0;0;;; -151492;1;0;false;false;;;;;; -151493;1;0;false;false;0;0;0;;; -151494;1;0;false;false;;;;;; -151495;2;0;false;false;0;0;0;;; -151497;1;0;false;false;;;;;; -151498;5;0;false;false;0;0;0;;; -151503;1;0;false;false;;;;;; -151504;2;0;false;false;0;0;0;;; -151506;1;0;false;false;;;;;; -151507;13;0;false;false;0;0;0;;; -151520;1;0;false;false;;;;;; -151521;2;0;false;false;0;0;0;;; -151523;1;0;false;false;;;;;; -151524;3;0;false;false;0;0;0;;; -151527;1;0;false;false;;;;;; -151528;1;0;false;false;0;0;0;;; -151529;1;0;false;false;;;;;; -151530;1;0;false;false;0;0;0;;; -151531;1;0;false;false;;;;;; -151532;2;0;false;false;0;0;0;;; -151534;1;0;false;false;;;;;; -151535;3;0;false;false;0;0;0;;; -151538;1;0;false;false;;;;;; -151539;2;0;false;false;0;0;0;;; -151541;1;0;false;false;;;;;; -151542;13;0;false;false;0;0;0;;; -151555;1;0;false;false;;;;;; -151556;2;0;false;false;0;0;0;;; -151558;1;0;false;false;;;;;; -151559;5;0;false;false;0;0;0;;; -151564;1;0;false;false;;;;;; -151565;1;0;false;false;0;0;0;;; -151566;1;0;false;false;;;;;; -151567;4;0;false;false;0;0;0;;; -151571;1;0;false;false;;;;;; -151572;1;0;false;false;0;0;0;;; -151573;4;0;false;false;;;;;; -151577;35;0;false;false;0;0;0;;; -151612;3;0;false;false;;;;;; -151615;1;0;false;false;0;0;0;;; -151616;3;0;false;false;;;;;; -151619;3;1;false;false;127;0;85;;; -151622;1;0;false;false;;;;;; -151623;9;0;false;false;0;0;0;;; -151632;1;0;false;false;;;;;; -151633;1;0;false;false;0;0;0;;; -151634;1;0;false;false;;;;;; -151635;31;0;false;false;0;0;0;;; -151666;3;0;false;false;;;;;; -151669;3;1;false;false;127;0;85;;; -151672;1;0;false;false;;;;;; -151673;7;0;false;false;0;0;0;;; -151680;1;0;false;false;;;;;; -151681;1;0;false;false;0;0;0;;; -151682;1;0;false;false;;;;;; -151683;29;0;false;false;0;0;0;;; -151712;3;0;false;false;;;;;; -151715;9;0;false;false;0;0;0;;; -151724;1;0;false;false;;;;;; -151725;5;0;false;false;0;0;0;;; -151730;3;0;false;false;;;;;; -151733;3;1;false;false;127;0;85;;; -151736;1;0;false;false;;;;;; -151737;1;0;false;false;0;0;0;;; -151738;1;0;false;false;;;;;; -151739;1;0;false;false;0;0;0;;; -151740;1;0;false;false;;;;;; -151741;9;0;false;false;0;0;0;;; -151750;1;0;false;false;;;;;; -151751;1;0;false;false;0;0;0;;; -151752;1;0;false;false;;;;;; -151753;11;0;false;false;0;0;0;;; -151764;3;0;false;false;;;;;; -151767;3;1;false;false;127;0;85;;; -151770;1;0;false;false;;;;;; -151771;6;0;false;false;0;0;0;;; -151777;1;0;false;false;;;;;; -151778;1;0;false;false;0;0;0;;; -151779;1;0;false;false;;;;;; -151780;8;0;false;false;0;0;0;;; -151788;1;0;false;false;;;;;; -151789;1;0;false;false;0;0;0;;; -151790;1;0;false;false;;;;;; -151791;2;0;false;false;0;0;0;;; -151793;1;0;false;false;;;;;; -151794;1;0;false;false;0;0;0;;; -151795;1;0;false;false;;;;;; -151796;10;0;false;false;0;0;0;;; -151806;1;0;false;false;;;;;; -151807;1;0;false;false;0;0;0;;; -151808;1;0;false;false;;;;;; -151809;2;0;false;false;0;0;0;;; -151811;3;0;false;false;;;;;; -151814;3;1;false;false;127;0;85;;; -151817;1;0;false;false;;;;;; -151818;4;0;false;false;0;0;0;;; -151822;1;0;false;false;;;;;; -151823;1;0;false;false;0;0;0;;; -151824;1;0;false;false;;;;;; -151825;11;0;false;false;0;0;0;;; -151836;1;0;false;false;;;;;; -151837;5;0;false;false;0;0;0;;; -151842;1;0;false;false;;;;;; -151843;1;0;false;false;0;0;0;;; -151844;1;0;false;false;;;;;; -151845;2;0;false;false;0;0;0;;; -151847;3;0;false;false;;;;;; -151850;3;1;false;false;127;0;85;;; -151853;1;0;false;false;;;;;; -151854;1;0;false;false;0;0;0;;; -151855;3;1;false;false;127;0;85;;; -151858;1;0;false;false;;;;;; -151859;1;0;false;false;0;0;0;;; -151860;1;0;false;false;;;;;; -151861;1;0;false;false;0;0;0;;; -151862;1;0;false;false;;;;;; -151863;10;0;false;false;0;0;0;;; -151873;1;0;false;false;;;;;; -151874;1;0;false;false;0;0;0;;; -151875;1;0;false;false;;;;;; -151876;2;0;false;false;0;0;0;;; -151878;1;0;false;false;;;;;; -151879;8;0;false;false;0;0;0;;; -151887;1;0;false;false;;;;;; -151888;4;0;false;false;0;0;0;;; -151892;1;0;false;false;;;;;; -151893;1;0;false;false;0;0;0;;; -151894;4;0;false;false;;;;;; -151898;3;1;false;false;127;0;85;;; -151901;1;0;false;false;;;;;; -151902;10;0;false;false;0;0;0;;; -151912;1;0;false;false;;;;;; -151913;1;0;false;false;0;0;0;;; -151914;1;0;false;false;;;;;; -151915;27;0;false;false;0;0;0;;; -151942;4;0;false;false;;;;;; -151946;6;0;false;false;0;0;0;;; -151952;1;0;false;false;;;;;; -151953;4;0;false;false;0;0;0;;; -151957;1;0;false;false;;;;;; -151958;1;0;false;false;0;0;0;;; -151959;1;0;false;false;;;;;; -151960;19;0;false;false;0;0;0;;; -151979;4;0;false;false;;;;;; -151983;10;0;false;false;0;0;0;;; -151993;1;0;false;false;;;;;; -151994;6;0;false;false;0;0;0;;; -152000;1;0;false;false;;;;;; -152001;1;0;false;false;0;0;0;;; -152002;1;0;false;false;;;;;; -152003;28;0;false;false;0;0;0;;; -152031;1;0;false;false;;;;;; -152032;12;0;false;false;0;0;0;;; -152044;4;0;false;false;;;;;; -152048;2;1;false;false;127;0;85;;; -152050;1;0;false;false;;;;;; -152051;2;0;false;false;0;0;0;;; -152053;1;0;false;false;;;;;; -152054;2;0;false;false;0;0;0;;; -152056;1;0;false;false;;;;;; -152057;9;0;false;false;0;0;0;;; -152066;1;0;false;false;;;;;; -152067;2;0;false;false;0;0;0;;; -152069;1;0;false;false;;;;;; -152070;1;0;false;false;0;0;0;;; -152071;1;0;false;false;;;;;; -152072;2;0;false;false;0;0;0;;; -152074;1;0;false;false;;;;;; -152075;8;0;false;false;0;0;0;;; -152083;1;0;false;false;;;;;; -152084;1;0;false;false;0;0;0;;; -152085;5;0;false;false;;;;;; -152090;4;0;false;false;0;0;0;;; -152094;1;0;false;false;;;;;; -152095;1;0;false;false;0;0;0;;; -152096;1;0;false;false;;;;;; -152097;22;0;false;false;0;0;0;;; -152119;1;0;false;false;;;;;; -152120;1;0;false;false;0;0;0;;; -152121;1;0;false;false;;;;;; -152122;11;0;false;false;0;0;0;;; -152133;1;0;false;false;;;;;; -152134;3;0;false;false;0;0;0;;; -152137;1;0;false;false;;;;;; -152138;1;0;false;false;0;0;0;;; -152139;1;0;false;false;;;;;; -152140;12;0;false;false;0;0;0;;; -152152;4;0;false;false;;;;;; -152156;1;0;false;false;0;0;0;;; -152157;1;0;false;false;;;;;; -152158;4;1;false;false;127;0;85;;; -152162;1;0;false;false;;;;;; -152163;2;1;false;false;127;0;85;;; -152165;1;0;false;false;;;;;; -152166;2;0;false;false;0;0;0;;; -152168;1;0;false;false;;;;;; -152169;2;0;false;false;0;0;0;;; -152171;1;0;false;false;;;;;; -152172;10;0;false;false;0;0;0;;; -152182;1;0;false;false;;;;;; -152183;1;0;false;false;0;0;0;;; -152184;5;0;false;false;;;;;; -152189;4;0;false;false;0;0;0;;; -152193;1;0;false;false;;;;;; -152194;1;0;false;false;0;0;0;;; -152195;1;0;false;false;;;;;; -152196;22;0;false;false;0;0;0;;; -152218;1;0;false;false;;;;;; -152219;1;0;false;false;0;0;0;;; -152220;1;0;false;false;;;;;; -152221;11;0;false;false;0;0;0;;; -152232;1;0;false;false;;;;;; -152233;15;0;false;false;0;0;0;;; -152248;4;0;false;false;;;;;; -152252;1;0;false;false;0;0;0;;; -152253;1;0;false;false;;;;;; -152254;4;1;false;false;127;0;85;;; -152258;1;0;false;false;;;;;; -152259;2;1;false;false;127;0;85;;; -152261;1;0;false;false;;;;;; -152262;2;0;false;false;0;0;0;;; -152264;1;0;false;false;;;;;; -152265;2;0;false;false;0;0;0;;; -152267;1;0;false;false;;;;;; -152268;8;0;false;false;0;0;0;;; -152276;1;0;false;false;;;;;; -152277;1;0;false;false;0;0;0;;; -152278;5;0;false;false;;;;;; -152283;4;0;false;false;0;0;0;;; -152287;1;0;false;false;;;;;; -152288;1;0;false;false;0;0;0;;; -152289;1;0;false;false;;;;;; -152290;19;0;false;false;0;0;0;;; -152309;1;0;false;false;;;;;; -152310;3;0;false;false;0;0;0;;; -152313;1;0;false;false;;;;;; -152314;1;0;false;false;0;0;0;;; -152315;1;0;false;false;;;;;; -152316;12;0;false;false;0;0;0;;; -152328;4;0;false;false;;;;;; -152332;1;0;false;false;0;0;0;;; -152333;1;0;false;false;;;;;; -152334;4;1;false;false;127;0;85;;; -152338;1;0;false;false;;;;;; -152339;1;0;false;false;0;0;0;;; -152340;5;0;false;false;;;;;; -152345;4;0;false;false;0;0;0;;; -152349;1;0;false;false;;;;;; -152350;1;0;false;false;0;0;0;;; -152351;1;0;false;false;;;;;; -152352;24;0;false;false;0;0;0;;; -152376;4;0;false;false;;;;;; -152380;1;0;false;false;0;0;0;;; -152381;4;0;false;false;;;;;; -152385;4;0;false;false;0;0;0;;; -152389;1;0;false;false;;;;;; -152390;1;0;false;false;0;0;0;;; -152391;1;0;false;false;;;;;; -152392;8;0;false;false;0;0;0;;; -152400;1;0;false;false;;;;;; -152401;6;0;false;false;0;0;0;;; -152407;1;0;false;false;;;;;; -152408;8;0;false;false;0;0;0;;; -152416;4;0;false;false;;;;;; -152420;5;0;false;false;0;0;0;;; -152425;1;0;false;false;;;;;; -152426;1;0;false;false;0;0;0;;; -152427;1;0;false;false;;;;;; -152428;8;0;false;false;0;0;0;;; -152436;1;0;false;false;;;;;; -152437;7;0;false;false;0;0;0;;; -152444;1;0;false;false;;;;;; -152445;6;0;false;false;0;0;0;;; -152451;1;0;false;false;;;;;; -152452;1;0;false;false;0;0;0;;; -152453;1;0;false;false;;;;;; -152454;12;0;false;false;0;0;0;;; -152466;4;0;false;false;;;;;; -152470;35;0;false;false;0;0;0;;; -152505;3;0;false;false;;;;;; -152508;1;0;false;false;0;0;0;;; -152509;3;0;false;false;;;;;; -152512;4;0;false;false;0;0;0;;; -152516;1;0;false;false;;;;;; -152517;1;0;false;false;0;0;0;;; -152518;1;0;false;false;;;;;; -152519;3;1;false;false;127;0;85;;; -152522;1;0;false;false;;;;;; -152523;9;0;false;false;0;0;0;;; -152532;1;0;false;false;;;;;; -152533;6;0;false;false;0;0;0;;; -152539;1;0;false;false;;;;;; -152540;2;0;false;false;0;0;0;;; -152542;1;0;false;false;;;;;; -152543;11;0;false;false;0;0;0;;; -152554;1;0;false;false;;;;;; -152555;8;0;false;false;0;0;0;;; -152563;3;0;false;false;;;;;; -152566;6;0;false;false;0;0;0;;; -152572;1;0;false;false;;;;;; -152573;2;0;false;false;0;0;0;;; -152575;1;0;false;false;;;;;; -152576;10;0;false;false;0;0;0;;; -152586;1;0;false;false;;;;;; -152587;1;0;false;false;0;0;0;;; -152588;1;0;false;false;;;;;; -152589;23;0;false;false;0;0;0;;; -152612;3;0;false;false;;;;;; -152615;6;0;false;false;0;0;0;;; -152621;1;0;false;false;;;;;; -152622;2;0;false;false;0;0;0;;; -152624;1;0;false;false;;;;;; -152625;21;0;false;false;0;0;0;;; -152646;3;0;false;false;;;;;; -152649;6;1;false;false;127;0;85;;; -152655;1;0;false;false;;;;;; -152656;5;0;false;false;0;0;0;;; -152661;2;0;false;false;;;;;; -152663;1;0;false;false;0;0;0;;; -152664;2;0;false;false;;;;;; -152666;3;0;false;false;63;95;191;;; -152669;3;0;false;false;;;;;; -152672;1;0;false;false;63;95;191;;; -152673;1;0;false;false;;;;;; -152674;7;0;false;false;63;95;191;;; -152681;1;0;false;false;;;;;; -152682;3;0;false;false;63;95;191;;; -152685;1;0;false;false;;;;;; -152686;6;0;false;false;63;95;191;;; -152692;1;0;false;false;;;;;; -152693;7;0;false;false;63;95;191;;; -152700;1;0;false;false;;;;;; -152701;8;0;false;false;63;95;191;;; -152709;1;0;false;false;;;;;; -152710;2;0;false;false;63;95;191;;; -152712;1;0;false;false;;;;;; -152713;5;0;false;false;63;95;191;;; -152718;1;0;false;false;;;;;; -152719;3;0;false;false;63;95;191;;; -152722;1;0;false;false;;;;;; -152723;6;0;false;false;63;95;191;;; -152729;1;0;false;false;;;;;; -152730;11;0;false;false;63;95;191;;; -152741;3;0;false;false;;;;;; -152744;1;0;false;false;63;95;191;;; -152745;1;0;false;false;;;;;; -152746;3;0;false;false;127;127;159;;; -152749;3;0;false;false;;;;;; -152752;1;0;false;false;63;95;191;;; -152753;3;0;false;false;;;;;; -152756;1;0;false;false;63;95;191;;; -152757;1;0;false;false;;;;;; -152758;7;1;false;false;127;159;191;;; -152765;5;0;false;false;63;95;191;;; -152770;1;0;false;false;;;;;; -152771;6;0;false;false;63;95;191;;; -152777;1;0;false;false;;;;;; -152778;2;0;false;false;63;95;191;;; -152780;1;0;false;false;;;;;; -152781;3;0;false;false;63;95;191;;; -152784;1;0;false;false;;;;;; -152785;5;0;false;false;63;95;191;;; -152790;1;0;false;false;;;;;; -152791;9;0;false;false;63;95;191;;; -152800;1;0;false;false;;;;;; -152801;2;0;false;false;63;95;191;;; -152803;1;0;false;false;;;;;; -152804;3;0;false;false;63;95;191;;; -152807;1;0;false;false;;;;;; -152808;8;0;false;false;63;95;191;;; -152816;1;0;false;false;;;;;; -152817;6;0;false;false;63;95;191;;; -152823;3;0;false;false;;;;;; -152826;1;0;false;false;63;95;191;;; -152827;1;0;false;false;;;;;; -152828;7;1;false;false;127;159;191;;; -152835;6;0;false;false;63;95;191;;; -152841;1;0;false;false;;;;;; -152842;6;0;false;false;63;95;191;;; -152848;1;0;false;false;;;;;; -152849;2;0;false;false;63;95;191;;; -152851;1;0;false;false;;;;;; -152852;10;0;false;false;63;95;191;;; -152862;1;0;false;false;;;;;; -152863;2;0;false;false;63;95;191;;; -152865;1;0;false;false;;;;;; -152866;6;0;false;false;63;95;191;;; -152872;4;0;false;false;;;;;; -152876;1;0;false;false;63;95;191;;; -152877;1;0;false;false;;;;;; -152878;8;1;false;false;127;159;191;;; -152886;6;0;false;false;63;95;191;;; -152892;1;0;false;false;;;;;; -152893;7;0;false;false;63;95;191;;; -152900;1;0;false;false;;;;;; -152901;8;0;false;false;63;95;191;;; -152909;1;0;false;false;;;;;; -152910;2;0;false;false;63;95;191;;; -152912;1;0;false;false;;;;;; -152913;5;0;false;false;63;95;191;;; -152918;1;0;false;false;;;;;; -152919;3;0;false;false;63;95;191;;; -152922;1;0;false;false;;;;;; -152923;9;0;false;false;63;95;191;;; -152932;1;0;false;false;;;;;; -152933;6;0;false;false;63;95;191;;; -152939;1;0;false;false;;;;;; -152940;11;0;false;false;63;95;191;;; -152951;3;0;false;false;;;;;; -152954;1;0;false;false;63;95;191;;; -152955;1;0;false;false;;;;;; -152956;11;1;false;false;127;159;191;;; -152967;12;0;false;false;63;95;191;;; -152979;1;0;false;false;;;;;; -152980;4;0;false;false;127;127;159;;; -152984;3;0;false;false;;;;;; -152987;1;0;false;false;63;95;191;;; -152988;4;0;false;false;;;;;; -152992;4;0;false;false;127;127;159;;; -152996;21;0;false;false;63;95;191;;; -153017;1;0;false;false;;;;;; -153018;1;0;false;false;127;127;159;;; -153019;1;0;false;false;;;;;; -153020;2;0;false;false;63;95;191;;; -153022;1;0;false;false;;;;;; -153023;3;0;false;false;63;95;191;;; -153026;1;0;false;false;;;;;; -153027;8;0;false;false;63;95;191;;; -153035;1;0;false;false;;;;;; -153036;3;0;false;false;63;95;191;;; -153039;1;0;false;false;;;;;; -153040;4;0;false;false;63;95;191;;; -153044;1;0;false;false;;;;;; -153045;8;0;false;false;63;95;191;;; -153053;5;0;false;false;127;127;159;;; -153058;3;0;false;false;;;;;; -153061;1;0;false;false;63;95;191;;; -153062;4;0;false;false;;;;;; -153066;4;0;false;false;127;127;159;;; -153070;27;0;false;false;63;95;191;;; -153097;1;0;false;false;;;;;; -153098;1;0;false;false;127;127;159;;; -153099;1;0;false;false;;;;;; -153100;2;0;false;false;63;95;191;;; -153102;1;0;false;false;;;;;; -153103;3;0;false;false;63;95;191;;; -153106;1;0;false;false;;;;;; -153107;6;0;false;false;63;95;191;;; -153113;1;0;false;false;;;;;; -153114;4;0;false;false;63;95;191;;; -153118;1;0;false;false;;;;;; -153119;3;0;false;false;63;95;191;;; -153122;1;0;false;false;;;;;; -153123;6;0;false;false;63;95;191;;; -153129;1;0;false;false;;;;;; -153130;4;0;false;false;63;95;191;;; -153134;1;0;false;false;;;;;; -153135;7;0;false;false;63;95;191;;; -153142;1;0;false;false;;;;;; -153143;3;0;false;false;63;95;191;;; -153146;1;0;false;false;;;;;; -153147;8;0;false;false;63;95;191;;; -153155;5;0;false;false;127;127;159;;; -153160;3;0;false;false;;;;;; -153163;1;0;false;false;63;95;191;;; -153164;1;0;false;false;;;;;; -153165;5;0;false;false;127;127;159;;; -153170;3;0;false;false;;;;;; -153173;1;0;false;false;63;95;191;;; -153174;1;0;false;false;;;;;; -153175;11;1;false;false;127;159;191;;; -153186;24;0;false;false;63;95;191;;; -153210;1;0;false;false;;;;;; -153211;4;0;false;false;127;127;159;;; -153215;3;0;false;false;;;;;; -153218;1;0;false;false;63;95;191;;; -153219;3;0;false;false;;;;;; -153222;4;0;false;false;127;127;159;;; -153226;19;0;false;false;63;95;191;;; -153245;1;0;false;false;;;;;; -153246;4;0;false;false;63;95;191;;; -153250;1;0;false;false;;;;;; -153251;5;0;false;false;63;95;191;;; -153256;1;0;false;false;;;;;; -153257;6;0;false;false;63;95;191;;; -153263;1;0;false;false;;;;;; -153264;6;0;false;false;63;95;191;;; -153270;1;0;false;false;;;;;; -153271;3;0;false;false;63;95;191;;; -153274;1;0;false;false;;;;;; -153275;7;0;false;false;63;95;191;;; -153282;1;0;false;false;;;;;; -153283;3;0;false;false;63;95;191;;; -153286;1;0;false;false;;;;;; -153287;6;0;false;false;63;95;191;;; -153293;1;0;false;false;;;;;; -153294;7;0;false;false;63;95;191;;; -153301;5;0;false;false;127;127;159;;; -153306;4;0;false;false;;;;;; -153310;1;0;false;false;63;95;191;;; -153311;1;0;false;false;;;;;; -153312;5;0;false;false;127;127;159;;; -153317;3;0;false;false;;;;;; -153320;2;0;false;false;63;95;191;;; -153322;2;0;false;false;;;;;; -153324;6;1;false;false;127;0;85;;; -153330;1;0;false;false;;;;;; -153331;6;0;false;false;0;0;0;;; -153337;1;0;false;false;;;;;; -153338;13;0;false;false;0;0;0;;; -153351;3;1;false;false;127;0;85;;; -153354;1;0;false;false;;;;;; -153355;6;0;false;false;0;0;0;;; -153361;1;0;false;false;;;;;; -153362;3;1;false;false;127;0;85;;; -153365;1;0;false;false;;;;;; -153366;7;0;false;false;0;0;0;;; -153373;1;0;false;false;;;;;; -153374;1;0;false;false;0;0;0;;; -153375;3;0;false;false;;;;;; -153378;14;0;false;false;0;0;0;;; -153392;3;0;false;false;;;;;; -153395;3;1;false;false;127;0;85;;; -153398;1;0;false;false;;;;;; -153399;13;0;false;false;0;0;0;;; -153412;1;0;false;false;;;;;; -153413;1;0;false;false;0;0;0;;; -153414;1;0;false;false;;;;;; -153415;15;0;false;false;0;0;0;;; -153430;3;0;false;false;;;;;; -153433;3;1;false;false;127;0;85;;; -153436;1;0;false;false;;;;;; -153437;3;0;false;false;0;0;0;;; -153440;1;0;false;false;;;;;; -153441;1;0;false;false;0;0;0;;; -153442;1;0;false;false;;;;;; -153443;5;0;false;false;0;0;0;;; -153448;1;0;false;false;;;;;; -153449;1;0;false;false;0;0;0;;; -153450;1;0;false;false;;;;;; -153451;7;0;false;false;0;0;0;;; -153458;6;0;false;false;;;;;; -153464;2;1;false;false;127;0;85;;; -153466;1;0;false;false;;;;;; -153467;6;0;false;false;0;0;0;;; -153473;1;0;false;false;;;;;; -153474;1;0;false;false;0;0;0;;; -153475;1;0;false;false;;;;;; -153476;3;0;false;false;0;0;0;;; -153479;1;0;false;false;;;;;; -153480;2;0;false;false;0;0;0;;; -153482;1;0;false;false;;;;;; -153483;5;0;false;false;0;0;0;;; -153488;1;0;false;false;;;;;; -153489;1;0;false;false;0;0;0;;; -153490;1;0;false;false;;;;;; -153491;1;0;false;false;0;0;0;;; -153492;1;0;false;false;;;;;; -153493;2;0;false;false;0;0;0;;; -153495;1;0;false;false;;;;;; -153496;3;0;false;false;0;0;0;;; -153499;1;0;false;false;;;;;; -153500;1;0;false;false;0;0;0;;; -153501;1;0;false;false;;;;;; -153502;14;0;false;false;0;0;0;;; -153516;1;0;false;false;;;;;; -153517;1;0;false;false;0;0;0;;; -153518;4;0;false;false;;;;;; -153522;35;0;false;false;0;0;0;;; -153557;3;0;false;false;;;;;; -153560;1;0;false;false;0;0;0;;; -153561;4;0;false;false;;;;;; -153565;6;1;false;false;127;0;85;;; -153571;1;0;false;false;;;;;; -153572;27;0;false;false;0;0;0;;; -153599;1;0;false;false;;;;;; -153600;8;0;false;false;0;0;0;;; -153608;2;0;false;false;;;;;; -153610;1;0;false;false;0;0;0;;; -153611;2;0;false;false;;;;;; -153613;3;0;false;false;63;95;191;;; -153616;3;0;false;false;;;;;; -153619;1;0;false;false;63;95;191;;; -153620;1;0;false;false;;;;;; -153621;7;0;false;false;63;95;191;;; -153628;1;0;false;false;;;;;; -153629;3;0;false;false;63;95;191;;; -153632;1;0;false;false;;;;;; -153633;7;0;false;false;63;95;191;;; -153640;1;0;false;false;;;;;; -153641;6;0;false;false;63;95;191;;; -153647;1;0;false;false;;;;;; -153648;2;0;false;false;63;95;191;;; -153650;1;0;false;false;;;;;; -153651;10;0;false;false;63;95;191;;; -153661;1;0;false;false;;;;;; -153662;4;0;false;false;63;95;191;;; -153666;1;0;false;false;;;;;; -153667;3;0;false;false;63;95;191;;; -153670;1;0;false;false;;;;;; -153671;8;0;false;false;63;95;191;;; -153679;1;0;false;false;;;;;; -153680;2;0;false;false;63;95;191;;; -153682;1;0;false;false;;;;;; -153683;7;0;false;false;63;95;191;;; -153690;1;0;false;false;;;;;; -153691;2;0;false;false;63;95;191;;; -153693;1;0;false;false;;;;;; -153694;8;0;false;false;63;95;191;;; -153702;3;0;false;false;;;;;; -153705;1;0;false;false;63;95;191;;; -153706;4;0;false;false;;;;;; -153710;1;0;false;false;63;95;191;;; -153711;1;0;false;false;;;;;; -153712;8;1;false;false;127;159;191;;; -153720;3;0;false;false;63;95;191;;; -153723;1;0;false;false;;;;;; -153724;4;0;false;false;63;95;191;;; -153728;1;0;false;false;;;;;; -153729;5;0;false;false;63;95;191;;; -153734;3;0;false;false;;;;;; -153737;1;0;false;false;63;95;191;;; -153738;3;0;false;false;;;;;; -153741;1;0;false;false;63;95;191;;; -153742;1;0;false;false;;;;;; -153743;11;1;false;false;127;159;191;;; -153754;12;0;false;false;63;95;191;;; -153766;1;0;false;false;;;;;; -153767;4;0;false;false;127;127;159;;; -153771;3;0;false;false;;;;;; -153774;1;0;false;false;63;95;191;;; -153775;4;0;false;false;;;;;; -153779;4;0;false;false;127;127;159;;; -153783;21;0;false;false;63;95;191;;; -153804;1;0;false;false;;;;;; -153805;1;0;false;false;127;127;159;;; -153806;1;0;false;false;;;;;; -153807;2;0;false;false;63;95;191;;; -153809;1;0;false;false;;;;;; -153810;3;0;false;false;63;95;191;;; -153813;1;0;false;false;;;;;; -153814;8;0;false;false;63;95;191;;; -153822;1;0;false;false;;;;;; -153823;3;0;false;false;63;95;191;;; -153826;1;0;false;false;;;;;; -153827;4;0;false;false;63;95;191;;; -153831;1;0;false;false;;;;;; -153832;8;0;false;false;63;95;191;;; -153840;5;0;false;false;127;127;159;;; -153845;3;0;false;false;;;;;; -153848;1;0;false;false;63;95;191;;; -153849;4;0;false;false;;;;;; -153853;4;0;false;false;127;127;159;;; -153857;27;0;false;false;63;95;191;;; -153884;1;0;false;false;;;;;; -153885;1;0;false;false;127;127;159;;; -153886;1;0;false;false;;;;;; -153887;2;0;false;false;63;95;191;;; -153889;1;0;false;false;;;;;; -153890;3;0;false;false;63;95;191;;; -153893;1;0;false;false;;;;;; -153894;6;0;false;false;63;95;191;;; -153900;1;0;false;false;;;;;; -153901;4;0;false;false;63;95;191;;; -153905;1;0;false;false;;;;;; -153906;3;0;false;false;63;95;191;;; -153909;1;0;false;false;;;;;; -153910;6;0;false;false;63;95;191;;; -153916;1;0;false;false;;;;;; -153917;4;0;false;false;63;95;191;;; -153921;1;0;false;false;;;;;; -153922;7;0;false;false;63;95;191;;; -153929;1;0;false;false;;;;;; -153930;3;0;false;false;63;95;191;;; -153933;1;0;false;false;;;;;; -153934;8;0;false;false;63;95;191;;; -153942;5;0;false;false;127;127;159;;; -153947;3;0;false;false;;;;;; -153950;1;0;false;false;63;95;191;;; -153951;1;0;false;false;;;;;; -153952;5;0;false;false;127;127;159;;; -153957;3;0;false;false;;;;;; -153960;2;0;false;false;63;95;191;;; -153962;2;0;false;false;;;;;; -153964;6;1;false;false;127;0;85;;; -153970;1;0;false;false;;;;;; -153971;3;1;false;false;127;0;85;;; -153974;1;0;false;false;;;;;; -153975;14;0;false;false;0;0;0;;; -153989;1;0;false;false;;;;;; -153990;1;0;false;false;0;0;0;;; -153991;3;0;false;false;;;;;; -153994;14;0;false;false;0;0;0;;; -154008;6;0;false;false;;;;;; -154014;6;1;false;false;127;0;85;;; -154020;1;0;false;false;;;;;; -154021;10;0;false;false;0;0;0;;; -154031;2;0;false;false;;;;;; -154033;1;0;false;false;0;0;0;;; -154034;2;0;false;false;;;;;; -154036;3;0;false;false;63;95;191;;; -154039;3;0;false;false;;;;;; -154042;1;0;false;false;63;95;191;;; -154043;1;0;false;false;;;;;; -154044;4;0;false;false;63;95;191;;; -154048;1;0;false;false;;;;;; -154049;3;0;false;false;63;95;191;;; -154052;1;0;false;false;;;;;; -154053;3;0;false;false;63;95;191;;; -154056;1;0;false;false;;;;;; -154057;6;0;false;false;63;95;191;;; -154063;2;0;false;false;;;;;; -154065;3;0;false;false;63;95;191;;; -154068;1;0;false;false;;;;;; -154069;3;0;false;false;63;95;191;;; -154072;1;0;false;false;;;;;; -154073;5;0;false;false;63;95;191;;; -154078;1;0;false;false;;;;;; -154079;2;0;false;false;63;95;191;;; -154081;1;0;false;false;;;;;; -154082;3;0;false;false;63;95;191;;; -154085;1;0;false;false;;;;;; -154086;5;0;false;false;63;95;191;;; -154091;1;0;false;false;;;;;; -154092;2;0;false;false;63;95;191;;; -154094;1;0;false;false;;;;;; -154095;3;0;false;false;63;95;191;;; -154098;1;0;false;false;;;;;; -154099;5;0;false;false;63;95;191;;; -154104;1;0;false;false;;;;;; -154105;7;0;false;false;63;95;191;;; -154112;1;0;false;false;;;;;; -154113;4;0;false;false;63;95;191;;; -154117;1;0;false;false;;;;;; -154118;4;0;false;false;63;95;191;;; -154122;3;0;false;false;;;;;; -154125;1;0;false;false;63;95;191;;; -154126;1;0;false;false;;;;;; -154127;2;0;false;false;63;95;191;;; -154129;1;0;false;false;;;;;; -154130;9;0;false;false;63;95;191;;; -154139;1;0;false;false;;;;;; -154140;2;0;false;false;63;95;191;;; -154142;1;0;false;false;;;;;; -154143;3;0;false;false;63;95;191;;; -154146;1;0;false;false;;;;;; -154147;3;0;false;false;63;95;191;;; -154150;1;0;false;false;;;;;; -154151;2;0;false;false;63;95;191;;; -154153;1;0;false;false;;;;;; -154154;3;0;false;false;63;95;191;;; -154157;1;0;false;false;;;;;; -154158;6;0;false;false;63;95;191;;; -154164;1;0;false;false;;;;;; -154165;2;0;false;false;63;95;191;;; -154167;1;0;false;false;;;;;; -154168;3;0;false;false;63;95;191;;; -154171;1;0;false;false;;;;;; -154172;7;0;false;false;63;95;191;;; -154179;1;0;false;false;;;;;; -154180;9;0;false;false;63;95;191;;; -154189;1;0;false;false;;;;;; -154190;7;0;false;false;63;95;191;;; -154197;1;0;false;false;;;;;; -154198;4;0;false;false;63;95;191;;; -154202;1;0;false;false;;;;;; -154203;2;0;false;false;63;95;191;;; -154205;4;0;false;false;;;;;; -154209;1;0;false;false;63;95;191;;; -154210;1;0;false;false;;;;;; -154211;2;0;false;false;63;95;191;;; -154213;1;0;false;false;;;;;; -154214;4;0;false;false;63;95;191;;; -154218;1;0;false;false;;;;;; -154219;2;0;false;false;63;95;191;;; -154221;1;0;false;false;;;;;; -154222;5;0;false;false;63;95;191;;; -154227;1;0;false;false;;;;;; -154228;8;0;false;false;63;95;191;;; -154236;4;0;false;false;;;;;; -154240;1;0;false;false;63;95;191;;; -154241;1;0;false;false;;;;;; -154242;3;0;false;false;63;95;191;;; -154245;1;0;false;false;;;;;; -154246;3;0;false;false;63;95;191;;; -154249;1;0;false;false;;;;;; -154250;5;0;false;false;63;95;191;;; -154255;1;0;false;false;;;;;; -154256;7;0;false;false;63;95;191;;; -154263;1;0;false;false;;;;;; -154264;4;0;false;false;63;95;191;;; -154268;1;0;false;false;;;;;; -154269;3;0;false;false;63;95;191;;; -154272;1;0;false;false;;;;;; -154273;6;0;false;false;63;95;191;;; -154279;1;0;false;false;;;;;; -154280;2;0;false;false;63;95;191;;; -154282;1;0;false;false;;;;;; -154283;9;0;false;false;63;95;191;;; -154292;1;0;false;false;;;;;; -154293;8;0;false;false;63;95;191;;; -154301;1;0;false;false;;;;;; -154302;2;0;false;false;63;95;191;;; -154304;1;0;false;false;;;;;; -154305;4;0;false;false;63;95;191;;; -154309;1;0;false;false;;;;;; -154310;6;0;false;false;63;95;191;;; -154316;3;0;false;false;;;;;; -154319;1;0;false;false;63;95;191;;; -154320;1;0;false;false;;;;;; -154321;3;0;false;false;127;127;159;;; -154324;3;0;false;false;;;;;; -154327;1;0;false;false;63;95;191;;; -154328;3;0;false;false;;;;;; -154331;1;0;false;false;63;95;191;;; -154332;1;0;false;false;;;;;; -154333;8;1;false;false;127;159;191;;; -154341;3;0;false;false;63;95;191;;; -154344;1;0;false;false;;;;;; -154345;5;0;false;false;63;95;191;;; -154350;1;0;false;false;;;;;; -154351;2;0;false;false;63;95;191;;; -154353;1;0;false;false;;;;;; -154354;3;0;false;false;63;95;191;;; -154357;1;0;false;false;;;;;; -154358;3;0;false;false;63;95;191;;; -154361;1;0;false;false;;;;;; -154362;4;0;false;false;63;95;191;;; -154366;3;0;false;false;;;;;; -154369;1;0;false;false;63;95;191;;; -154370;1;0;false;false;;;;;; -154371;11;1;false;false;127;159;191;;; -154382;12;0;false;false;63;95;191;;; -154394;1;0;false;false;;;;;; -154395;4;0;false;false;127;127;159;;; -154399;3;0;false;false;;;;;; -154402;1;0;false;false;63;95;191;;; -154403;4;0;false;false;;;;;; -154407;4;0;false;false;127;127;159;;; -154411;21;0;false;false;63;95;191;;; -154432;1;0;false;false;;;;;; -154433;1;0;false;false;127;127;159;;; -154434;1;0;false;false;;;;;; -154435;2;0;false;false;63;95;191;;; -154437;1;0;false;false;;;;;; -154438;3;0;false;false;63;95;191;;; -154441;1;0;false;false;;;;;; -154442;8;0;false;false;63;95;191;;; -154450;1;0;false;false;;;;;; -154451;3;0;false;false;63;95;191;;; -154454;1;0;false;false;;;;;; -154455;4;0;false;false;63;95;191;;; -154459;1;0;false;false;;;;;; -154460;8;0;false;false;63;95;191;;; -154468;5;0;false;false;127;127;159;;; -154473;3;0;false;false;;;;;; -154476;1;0;false;false;63;95;191;;; -154477;4;0;false;false;;;;;; -154481;4;0;false;false;127;127;159;;; -154485;27;0;false;false;63;95;191;;; -154512;1;0;false;false;;;;;; -154513;1;0;false;false;127;127;159;;; -154514;1;0;false;false;;;;;; -154515;2;0;false;false;63;95;191;;; -154517;1;0;false;false;;;;;; -154518;3;0;false;false;63;95;191;;; -154521;1;0;false;false;;;;;; -154522;6;0;false;false;63;95;191;;; -154528;1;0;false;false;;;;;; -154529;4;0;false;false;63;95;191;;; -154533;1;0;false;false;;;;;; -154534;3;0;false;false;63;95;191;;; -154537;1;0;false;false;;;;;; -154538;6;0;false;false;63;95;191;;; -154544;1;0;false;false;;;;;; -154545;4;0;false;false;63;95;191;;; -154549;1;0;false;false;;;;;; -154550;7;0;false;false;63;95;191;;; -154557;1;0;false;false;;;;;; -154558;3;0;false;false;63;95;191;;; -154561;1;0;false;false;;;;;; -154562;8;0;false;false;63;95;191;;; -154570;5;0;false;false;127;127;159;;; -154575;3;0;false;false;;;;;; -154578;1;0;false;false;63;95;191;;; -154579;1;0;false;false;;;;;; -154580;5;0;false;false;127;127;159;;; -154585;3;0;false;false;;;;;; -154588;2;0;false;false;63;95;191;;; -154590;2;0;false;false;;;;;; -154592;6;1;false;false;127;0;85;;; -154598;1;0;false;false;;;;;; -154599;3;1;false;false;127;0;85;;; -154602;1;0;false;false;;;;;; -154603;13;0;false;false;0;0;0;;; -154616;1;0;false;false;;;;;; -154617;1;0;false;false;0;0;0;;; -154618;3;0;false;false;;;;;; -154621;14;0;false;false;0;0;0;;; -154635;3;0;false;false;;;;;; -154638;3;1;false;false;127;0;85;;; -154641;1;0;false;false;;;;;; -154642;15;0;false;false;0;0;0;;; -154657;1;0;false;false;;;;;; -154658;1;0;false;false;0;0;0;;; -154659;1;0;false;false;;;;;; -154660;9;0;false;false;0;0;0;;; -154669;6;0;false;false;;;;;; -154675;2;1;false;false;127;0;85;;; -154677;1;0;false;false;;;;;; -154678;10;0;false;false;0;0;0;;; -154688;1;0;false;false;;;;;; -154689;1;0;false;false;0;0;0;;; -154690;4;0;false;false;;;;;; -154694;3;1;false;false;127;0;85;;; -154697;1;0;false;false;;;;;; -154698;16;0;false;false;0;0;0;;; -154714;1;0;false;false;;;;;; -154715;1;0;false;false;0;0;0;;; -154716;1;0;false;false;;;;;; -154717;34;0;false;false;0;0;0;;; -154751;4;0;false;false;;;;;; -154755;15;0;false;false;0;0;0;;; -154770;1;0;false;false;;;;;; -154771;1;0;false;false;0;0;0;;; -154772;1;0;false;false;;;;;; -154773;49;0;false;false;0;0;0;;; -154822;3;0;false;false;;;;;; -154825;1;0;false;false;0;0;0;;; -154826;3;0;false;false;;;;;; -154829;6;1;false;false;127;0;85;;; -154835;1;0;false;false;;;;;; -154836;16;0;false;false;0;0;0;;; -154852;2;0;false;false;;;;;; -154854;1;0;false;false;0;0;0;;; -154855;2;0;false;false;;;;;; -154857;3;0;false;false;63;95;191;;; -154860;3;0;false;false;;;;;; -154863;1;0;false;false;63;95;191;;; -154864;1;0;false;false;;;;;; -154865;4;0;false;false;63;95;191;;; -154869;1;0;false;false;;;;;; -154870;3;0;false;false;63;95;191;;; -154873;1;0;false;false;;;;;; -154874;3;0;false;false;63;95;191;;; -154877;1;0;false;false;;;;;; -154878;6;0;false;false;63;95;191;;; -154884;2;0;false;false;;;;;; -154886;3;0;false;false;63;95;191;;; -154889;1;0;false;false;;;;;; -154890;3;0;false;false;63;95;191;;; -154893;1;0;false;false;;;;;; -154894;5;0;false;false;63;95;191;;; -154899;1;0;false;false;;;;;; -154900;2;0;false;false;63;95;191;;; -154902;1;0;false;false;;;;;; -154903;3;0;false;false;63;95;191;;; -154906;1;0;false;false;;;;;; -154907;5;0;false;false;63;95;191;;; -154912;1;0;false;false;;;;;; -154913;8;0;false;false;63;95;191;;; -154921;1;0;false;false;;;;;; -154922;2;0;false;false;63;95;191;;; -154924;1;0;false;false;;;;;; -154925;3;0;false;false;63;95;191;;; -154928;1;0;false;false;;;;;; -154929;4;0;false;false;63;95;191;;; -154933;1;0;false;false;;;;;; -154934;4;0;false;false;63;95;191;;; -154938;1;0;false;false;;;;;; -154939;2;0;false;false;63;95;191;;; -154941;4;0;false;false;;;;;; -154945;1;0;false;false;63;95;191;;; -154946;1;0;false;false;;;;;; -154947;9;0;false;false;63;95;191;;; -154956;1;0;false;false;;;;;; -154957;2;0;false;false;63;95;191;;; -154959;1;0;false;false;;;;;; -154960;3;0;false;false;63;95;191;;; -154963;1;0;false;false;;;;;; -154964;3;0;false;false;63;95;191;;; -154967;1;0;false;false;;;;;; -154968;2;0;false;false;63;95;191;;; -154970;1;0;false;false;;;;;; -154971;3;0;false;false;63;95;191;;; -154974;1;0;false;false;;;;;; -154975;10;0;false;false;63;95;191;;; -154985;1;0;false;false;;;;;; -154986;4;0;false;false;63;95;191;;; -154990;1;0;false;false;;;;;; -154991;6;0;false;false;63;95;191;;; -154997;1;0;false;false;;;;;; -154998;3;0;false;false;63;95;191;;; -155001;1;0;false;false;;;;;; -155002;2;0;false;false;63;95;191;;; -155004;1;0;false;false;;;;;; -155005;8;0;false;false;63;95;191;;; -155013;1;0;false;false;;;;;; -155014;2;0;false;false;63;95;191;;; -155016;1;0;false;false;;;;;; -155017;6;0;false;false;63;95;191;;; -155023;4;0;false;false;;;;;; -155027;1;0;false;false;63;95;191;;; -155028;1;0;false;false;;;;;; -155029;2;0;false;false;63;95;191;;; -155031;1;0;false;false;;;;;; -155032;8;0;false;false;63;95;191;;; -155040;1;0;false;false;;;;;; -155041;3;0;false;false;63;95;191;;; -155044;1;0;false;false;;;;;; -155045;6;0;false;false;63;95;191;;; -155051;1;0;false;false;;;;;; -155052;5;0;false;false;63;95;191;;; -155057;1;0;false;false;;;;;; -155058;2;0;false;false;63;95;191;;; -155060;1;0;false;false;;;;;; -155061;4;0;false;false;63;95;191;;; -155065;1;0;false;false;;;;;; -155066;1;0;false;false;63;95;191;;; -155067;1;0;false;false;;;;;; -155068;7;0;false;false;63;95;191;;; -155075;1;0;false;false;;;;;; -155076;4;0;false;false;63;95;191;;; -155080;1;0;false;false;;;;;; -155081;3;0;false;false;63;95;191;;; -155084;1;0;false;false;;;;;; -155085;2;0;false;false;63;95;191;;; -155087;1;0;false;false;;;;;; -155088;9;0;false;false;63;95;191;;; -155097;1;0;false;false;;;;;; -155098;2;0;false;false;63;95;191;;; -155100;1;0;false;false;;;;;; -155101;3;0;false;false;63;95;191;;; -155104;1;0;false;false;;;;;; -155105;3;0;false;false;63;95;191;;; -155108;4;0;false;false;;;;;; -155112;1;0;false;false;63;95;191;;; -155113;1;0;false;false;;;;;; -155114;3;0;false;false;63;95;191;;; -155117;1;0;false;false;;;;;; -155118;7;0;false;false;63;95;191;;; -155125;2;0;false;false;;;;;; -155127;3;0;false;false;63;95;191;;; -155130;1;0;false;false;;;;;; -155131;3;0;false;false;63;95;191;;; -155134;1;0;false;false;;;;;; -155135;5;0;false;false;63;95;191;;; -155140;1;0;false;false;;;;;; -155141;7;0;false;false;63;95;191;;; -155148;1;0;false;false;;;;;; -155149;4;0;false;false;63;95;191;;; -155153;1;0;false;false;;;;;; -155154;3;0;false;false;63;95;191;;; -155157;1;0;false;false;;;;;; -155158;6;0;false;false;63;95;191;;; -155164;1;0;false;false;;;;;; -155165;2;0;false;false;63;95;191;;; -155167;1;0;false;false;;;;;; -155168;9;0;false;false;63;95;191;;; -155177;2;0;false;false;;;;;; -155179;3;0;false;false;63;95;191;;; -155182;1;0;false;false;;;;;; -155183;3;0;false;false;63;95;191;;; -155186;1;0;false;false;;;;;; -155187;5;0;false;false;63;95;191;;; -155192;4;0;false;false;;;;;; -155196;1;0;false;false;63;95;191;;; -155197;1;0;false;false;;;;;; -155198;4;0;false;false;63;95;191;;; -155202;1;0;false;false;;;;;; -155203;3;0;false;false;63;95;191;;; -155206;1;0;false;false;;;;;; -155207;7;0;false;false;63;95;191;;; -155214;1;0;false;false;;;;;; -155215;3;0;false;false;63;95;191;;; -155218;1;0;false;false;;;;;; -155219;6;0;false;false;63;95;191;;; -155225;1;0;false;false;;;;;; -155226;9;0;false;false;63;95;191;;; -155235;3;0;false;false;;;;;; -155238;1;0;false;false;63;95;191;;; -155239;1;0;false;false;;;;;; -155240;3;0;false;false;127;127;159;;; -155243;3;0;false;false;;;;;; -155246;1;0;false;false;63;95;191;;; -155247;3;0;false;false;;;;;; -155250;1;0;false;false;63;95;191;;; -155251;1;0;false;false;;;;;; -155252;8;1;false;false;127;159;191;;; -155260;5;0;false;false;63;95;191;;; -155265;1;0;false;false;;;;;; -155266;8;0;false;false;63;95;191;;; -155274;1;0;false;false;;;;;; -155275;2;0;false;false;63;95;191;;; -155277;1;0;false;false;;;;;; -155278;3;0;false;false;63;95;191;;; -155281;1;0;false;false;;;;;; -155282;3;0;false;false;63;95;191;;; -155285;1;0;false;false;;;;;; -155286;4;0;false;false;63;95;191;;; -155290;3;0;false;false;;;;;; -155293;1;0;false;false;63;95;191;;; -155294;1;0;false;false;;;;;; -155295;11;1;false;false;127;159;191;;; -155306;12;0;false;false;63;95;191;;; -155318;1;0;false;false;;;;;; -155319;4;0;false;false;127;127;159;;; -155323;3;0;false;false;;;;;; -155326;1;0;false;false;63;95;191;;; -155327;4;0;false;false;;;;;; -155331;4;0;false;false;127;127;159;;; -155335;21;0;false;false;63;95;191;;; -155356;1;0;false;false;;;;;; -155357;1;0;false;false;127;127;159;;; -155358;1;0;false;false;;;;;; -155359;2;0;false;false;63;95;191;;; -155361;1;0;false;false;;;;;; -155362;3;0;false;false;63;95;191;;; -155365;1;0;false;false;;;;;; -155366;8;0;false;false;63;95;191;;; -155374;1;0;false;false;;;;;; -155375;3;0;false;false;63;95;191;;; -155378;1;0;false;false;;;;;; -155379;4;0;false;false;63;95;191;;; -155383;1;0;false;false;;;;;; -155384;8;0;false;false;63;95;191;;; -155392;5;0;false;false;127;127;159;;; -155397;3;0;false;false;;;;;; -155400;1;0;false;false;63;95;191;;; -155401;4;0;false;false;;;;;; -155405;4;0;false;false;127;127;159;;; -155409;27;0;false;false;63;95;191;;; -155436;1;0;false;false;;;;;; -155437;1;0;false;false;127;127;159;;; -155438;1;0;false;false;;;;;; -155439;2;0;false;false;63;95;191;;; -155441;1;0;false;false;;;;;; -155442;3;0;false;false;63;95;191;;; -155445;1;0;false;false;;;;;; -155446;6;0;false;false;63;95;191;;; -155452;1;0;false;false;;;;;; -155453;4;0;false;false;63;95;191;;; -155457;1;0;false;false;;;;;; -155458;3;0;false;false;63;95;191;;; -155461;1;0;false;false;;;;;; -155462;6;0;false;false;63;95;191;;; -155468;1;0;false;false;;;;;; -155469;4;0;false;false;63;95;191;;; -155473;1;0;false;false;;;;;; -155474;7;0;false;false;63;95;191;;; -155481;1;0;false;false;;;;;; -155482;3;0;false;false;63;95;191;;; -155485;1;0;false;false;;;;;; -155486;8;0;false;false;63;95;191;;; -155494;5;0;false;false;127;127;159;;; -155499;3;0;false;false;;;;;; -155502;1;0;false;false;63;95;191;;; -155503;1;0;false;false;;;;;; -155504;5;0;false;false;127;127;159;;; -155509;3;0;false;false;;;;;; -155512;2;0;false;false;63;95;191;;; -155514;2;0;false;false;;;;;; -155516;6;1;false;false;127;0;85;;; -155522;1;0;false;false;;;;;; -155523;3;1;false;false;127;0;85;;; -155526;1;0;false;false;;;;;; -155527;13;0;false;false;0;0;0;;; -155540;1;0;false;false;;;;;; -155541;1;0;false;false;0;0;0;;; -155542;3;0;false;false;;;;;; -155545;14;0;false;false;0;0;0;;; -155559;3;0;false;false;;;;;; -155562;6;1;false;false;127;0;85;;; -155568;1;0;false;false;;;;;; -155569;21;0;false;false;0;0;0;;; -155590;2;0;false;false;;;;;; -155592;1;0;false;false;0;0;0;;; -155593;2;0;false;false;;;;;; -155595;3;0;false;false;63;95;191;;; -155598;4;0;false;false;;;;;; -155602;1;0;false;false;63;95;191;;; -155603;1;0;false;false;;;;;; -155604;7;0;false;false;63;95;191;;; -155611;1;0;false;false;;;;;; -155612;3;0;false;false;63;95;191;;; -155615;1;0;false;false;;;;;; -155616;8;0;false;false;63;95;191;;; -155624;1;0;false;false;;;;;; -155625;6;0;false;false;63;95;191;;; -155631;1;0;false;false;;;;;; -155632;10;0;false;false;63;95;191;;; -155642;3;0;false;false;;;;;; -155645;1;0;false;false;63;95;191;;; -155646;1;0;false;false;;;;;; -155647;3;0;false;false;127;127;159;;; -155650;3;0;false;false;;;;;; -155653;1;0;false;false;63;95;191;;; -155654;3;0;false;false;;;;;; -155657;1;0;false;false;63;95;191;;; -155658;1;0;false;false;;;;;; -155659;8;1;false;false;127;159;191;;; -155667;8;0;false;false;63;95;191;;; -155675;1;0;false;false;;;;;; -155676;6;0;false;false;63;95;191;;; -155682;1;0;false;false;;;;;; -155683;10;0;false;false;63;95;191;;; -155693;3;0;false;false;;;;;; -155696;2;0;false;false;63;95;191;;; -155698;2;0;false;false;;;;;; -155700;3;1;false;false;127;0;85;;; -155703;1;0;false;false;;;;;; -155704;22;0;false;false;0;0;0;;; -155726;1;0;false;false;;;;;; -155727;1;0;false;false;0;0;0;;; -155728;3;0;false;false;;;;;; -155731;6;1;false;false;127;0;85;;; -155737;1;0;false;false;;;;;; -155738;11;0;false;false;0;0;0;;; -155749;2;0;false;false;;;;;; -155751;1;0;false;false;0;0;0;;; -155752;2;0;false;false;;;;;; -155754;3;1;false;false;127;0;85;;; -155757;1;0;false;false;;;;;; -155758;19;0;false;false;0;0;0;;; -155777;1;0;false;false;;;;;; -155778;1;0;false;false;0;0;0;;; -155779;3;0;false;false;;;;;; -155782;2;1;false;false;127;0;85;;; -155784;1;0;false;false;;;;;; -155785;16;0;false;false;0;0;0;;; -155801;1;0;false;false;;;;;; -155802;6;1;false;false;127;0;85;;; -155808;1;0;false;false;;;;;; -155809;12;0;false;false;0;0;0;;; -155821;3;0;false;false;;;;;; -155824;2;1;false;false;127;0;85;;; -155826;1;0;false;false;;;;;; -155827;22;0;false;false;0;0;0;;; -155849;1;0;false;false;;;;;; -155850;2;0;false;false;0;0;0;;; -155852;1;0;false;false;;;;;; -155853;14;0;false;false;0;0;0;;; -155867;1;0;false;false;;;;;; -155868;2;0;false;false;0;0;0;;; -155870;1;0;false;false;;;;;; -155871;9;0;false;false;0;0;0;;; -155880;1;0;false;false;;;;;; -155881;6;1;false;false;127;0;85;;; -155887;1;0;false;false;;;;;; -155888;15;0;false;false;0;0;0;;; -155903;3;0;false;false;;;;;; -155906;20;0;false;false;0;0;0;;; -155926;1;0;false;false;;;;;; -155927;1;0;false;false;0;0;0;;; -155928;1;0;false;false;;;;;; -155929;5;1;false;false;127;0;85;;; -155934;1;0;false;false;0;0;0;;; -155935;3;0;false;false;;;;;; -155938;3;1;false;false;127;0;85;;; -155941;1;0;false;false;;;;;; -155942;9;0;false;false;0;0;0;;; -155951;1;0;false;false;;;;;; -155952;1;0;false;false;0;0;0;;; -155953;1;0;false;false;;;;;; -155954;15;0;false;false;0;0;0;;; -155969;3;0;false;false;;;;;; -155972;3;1;false;false;127;0;85;;; -155975;1;0;false;false;;;;;; -155976;10;0;false;false;0;0;0;;; -155986;1;0;false;false;;;;;; -155987;1;0;false;false;0;0;0;;; -155988;1;0;false;false;;;;;; -155989;35;0;false;false;0;0;0;;; -156024;3;0;false;false;;;;;; -156027;6;0;false;false;0;0;0;;; -156033;1;0;false;false;;;;;; -156034;4;0;false;false;0;0;0;;; -156038;1;0;false;false;;;;;; -156039;1;0;false;false;0;0;0;;; -156040;1;0;false;false;;;;;; -156041;27;0;false;false;0;0;0;;; -156068;3;0;false;false;;;;;; -156071;3;1;false;false;127;0;85;;; -156074;1;0;false;false;;;;;; -156075;6;0;false;false;0;0;0;;; -156081;1;0;false;false;;;;;; -156082;1;0;false;false;0;0;0;;; -156083;1;0;false;false;;;;;; -156084;11;0;false;false;0;0;0;;; -156095;1;0;false;false;;;;;; -156096;1;0;false;false;0;0;0;;; -156097;1;0;false;false;;;;;; -156098;11;0;false;false;0;0;0;;; -156109;3;0;false;false;;;;;; -156112;3;1;false;false;127;0;85;;; -156115;1;0;false;false;;;;;; -156116;10;0;false;false;0;0;0;;; -156126;1;0;false;false;;;;;; -156127;1;0;false;false;0;0;0;;; -156128;1;0;false;false;;;;;; -156129;14;0;false;false;0;0;0;;; -156143;3;0;false;false;;;;;; -156146;2;1;false;false;127;0;85;;; -156148;1;0;false;false;;;;;; -156149;11;0;false;false;0;0;0;;; -156160;1;0;false;false;;;;;; -156161;2;0;false;false;0;0;0;;; -156163;1;0;false;false;;;;;; -156164;2;0;false;false;0;0;0;;; -156166;1;0;false;false;;;;;; -156167;6;1;false;false;127;0;85;;; -156173;1;0;false;false;;;;;; -156174;12;0;false;false;0;0;0;;; -156186;1;0;false;false;;;;;; -156187;1;0;false;false;0;0;0;;; -156188;1;0;false;false;;;;;; -156189;9;0;false;false;0;0;0;;; -156198;1;0;false;false;;;;;; -156199;1;0;false;false;0;0;0;;; -156200;1;0;false;false;;;;;; -156201;9;0;false;false;0;0;0;;; -156210;3;0;false;false;;;;;; -156213;2;1;false;false;127;0;85;;; -156215;1;0;false;false;;;;;; -156216;10;0;false;false;0;0;0;;; -156226;1;0;false;false;;;;;; -156227;2;0;false;false;0;0;0;;; -156229;1;0;false;false;;;;;; -156230;6;0;false;false;0;0;0;;; -156236;1;0;false;false;;;;;; -156237;1;0;false;false;0;0;0;;; -156238;1;0;false;false;;;;;; -156239;2;0;false;false;0;0;0;;; -156241;1;0;false;false;;;;;; -156242;9;0;false;false;0;0;0;;; -156251;3;0;false;false;;;;;; -156254;2;1;false;false;127;0;85;;; -156256;1;0;false;false;;;;;; -156257;7;0;false;false;0;0;0;;; -156264;1;0;false;false;;;;;; -156265;2;0;false;false;0;0;0;;; -156267;1;0;false;false;;;;;; -156268;10;0;false;false;0;0;0;;; -156278;1;0;false;false;;;;;; -156279;2;0;false;false;0;0;0;;; -156281;1;0;false;false;;;;;; -156282;6;0;false;false;0;0;0;;; -156288;1;0;false;false;;;;;; -156289;1;0;false;false;0;0;0;;; -156290;1;0;false;false;;;;;; -156291;2;0;false;false;0;0;0;;; -156293;1;0;false;false;;;;;; -156294;9;0;false;false;0;0;0;;; -156303;3;0;false;false;;;;;; -156306;5;1;false;false;127;0;85;;; -156311;1;0;false;false;;;;;; -156312;7;0;false;false;0;0;0;;; -156319;1;0;false;false;;;;;; -156320;1;0;false;false;0;0;0;;; -156321;1;0;false;false;;;;;; -156322;1;0;false;false;0;0;0;;; -156323;1;0;false;false;;;;;; -156324;2;0;false;false;0;0;0;;; -156326;1;0;false;false;;;;;; -156327;39;0;false;false;0;0;0;;; -156366;1;0;false;false;;;;;; -156367;9;0;false;false;0;0;0;;; -156376;3;0;false;false;;;;;; -156379;2;1;false;false;127;0;85;;; -156381;1;0;false;false;;;;;; -156382;7;0;false;false;0;0;0;;; -156389;1;0;false;false;;;;;; -156390;2;0;false;false;0;0;0;;; -156392;1;0;false;false;;;;;; -156393;1;0;false;false;0;0;0;;; -156394;1;0;false;false;;;;;; -156395;2;0;false;false;0;0;0;;; -156397;1;0;false;false;;;;;; -156398;39;0;false;false;0;0;0;;; -156437;1;0;false;false;;;;;; -156438;1;0;false;false;0;0;0;;; -156439;4;0;false;false;;;;;; -156443;6;1;false;false;127;0;85;;; -156449;1;0;false;false;;;;;; -156450;12;0;false;false;0;0;0;;; -156462;1;0;false;false;;;;;; -156463;1;0;false;false;0;0;0;;; -156464;1;0;false;false;;;;;; -156465;9;0;false;false;0;0;0;;; -156474;1;0;false;false;;;;;; -156475;1;0;false;false;0;0;0;;; -156476;1;0;false;false;;;;;; -156477;9;0;false;false;0;0;0;;; -156486;3;0;false;false;;;;;; -156489;1;0;false;false;0;0;0;;; -156490;3;0;false;false;;;;;; -156493;10;0;false;false;0;0;0;;; -156503;1;0;false;false;;;;;; -156504;6;0;false;false;0;0;0;;; -156510;1;0;false;false;;;;;; -156511;1;0;false;false;0;0;0;;; -156512;1;0;false;false;;;;;; -156513;28;0;false;false;0;0;0;;; -156541;1;0;false;false;;;;;; -156542;12;0;false;false;0;0;0;;; -156554;3;0;false;false;;;;;; -156557;3;1;false;false;127;0;85;;; -156560;1;0;false;false;;;;;; -156561;5;0;false;false;0;0;0;;; -156566;1;0;false;false;;;;;; -156567;1;0;false;false;0;0;0;;; -156568;1;0;false;false;;;;;; -156569;24;0;false;false;0;0;0;;; -156593;3;0;false;false;;;;;; -156596;35;0;false;false;0;0;0;;; -156631;3;0;false;false;;;;;; -156634;6;1;false;false;127;0;85;;; -156640;1;0;false;false;;;;;; -156641;7;0;false;false;0;0;0;;; -156648;1;0;false;false;;;;;; -156649;1;0;false;false;0;0;0;;; -156650;1;0;false;false;;;;;; -156651;2;0;false;false;0;0;0;;; -156653;1;0;false;false;;;;;; -156654;2;0;false;false;0;0;0;;; -156656;1;0;false;false;;;;;; -156657;2;0;false;false;0;0;0;;; -156659;1;0;false;false;;;;;; -156660;1;0;false;false;0;0;0;;; -156661;1;0;false;false;;;;;; -156662;9;0;false;false;0;0;0;;; -156671;1;0;false;false;;;;;; -156672;1;0;false;false;0;0;0;;; -156673;1;0;false;false;;;;;; -156674;9;0;false;false;0;0;0;;; -156683;2;0;false;false;;;;;; -156685;1;0;false;false;0;0;0;;; -156686;2;0;false;false;;;;;; -156688;3;0;false;false;63;95;191;;; -156691;3;0;false;false;;;;;; -156694;1;0;false;false;63;95;191;;; -156695;1;0;false;false;;;;;; -156696;7;0;false;false;63;95;191;;; -156703;1;0;false;false;;;;;; -156704;3;0;false;false;63;95;191;;; -156707;1;0;false;false;;;;;; -156708;5;0;false;false;63;95;191;;; -156713;1;0;false;false;;;;;; -156714;2;0;false;false;63;95;191;;; -156716;1;0;false;false;;;;;; -156717;3;0;false;false;63;95;191;;; -156720;1;0;false;false;;;;;; -156721;4;0;false;false;63;95;191;;; -156725;1;0;false;false;;;;;; -156726;3;0;false;false;63;95;191;;; -156729;1;0;false;false;;;;;; -156730;5;0;false;false;63;95;191;;; -156735;1;0;false;false;;;;;; -156736;2;0;false;false;63;95;191;;; -156738;1;0;false;false;;;;;; -156739;3;0;false;false;63;95;191;;; -156742;3;0;false;false;;;;;; -156745;1;0;false;false;63;95;191;;; -156746;1;0;false;false;;;;;; -156747;4;0;false;false;63;95;191;;; -156751;1;0;false;false;;;;;; -156752;2;0;false;false;63;95;191;;; -156754;1;0;false;false;;;;;; -156755;4;0;false;false;63;95;191;;; -156759;1;0;false;false;;;;;; -156760;4;0;false;false;63;95;191;;; -156764;1;0;false;false;;;;;; -156765;4;0;false;false;63;95;191;;; -156769;1;0;false;false;;;;;; -156770;3;0;false;false;63;95;191;;; -156773;1;0;false;false;;;;;; -156774;2;0;false;false;63;95;191;;; -156776;1;0;false;false;;;;;; -156777;3;0;false;false;63;95;191;;; -156780;1;0;false;false;;;;;; -156781;3;0;false;false;63;95;191;;; -156784;1;0;false;false;;;;;; -156785;2;0;false;false;63;95;191;;; -156787;1;0;false;false;;;;;; -156788;3;0;false;false;63;95;191;;; -156791;1;0;false;false;;;;;; -156792;7;0;false;false;63;95;191;;; -156799;1;0;false;false;;;;;; -156800;5;0;false;false;63;95;191;;; -156805;4;0;false;false;;;;;; -156809;1;0;false;false;63;95;191;;; -156810;1;0;false;false;;;;;; -156811;9;0;false;false;63;95;191;;; -156820;1;0;false;false;;;;;; -156821;2;0;false;false;63;95;191;;; -156823;1;0;false;false;;;;;; -156824;3;0;false;false;63;95;191;;; -156827;1;0;false;false;;;;;; -156828;10;0;false;false;63;95;191;;; -156838;1;0;false;false;;;;;; -156839;7;0;false;false;63;95;191;;; -156846;1;0;false;false;;;;;; -156847;4;0;false;false;63;95;191;;; -156851;1;0;false;false;;;;;; -156852;3;0;false;false;63;95;191;;; -156855;1;0;false;false;;;;;; -156856;5;0;false;false;63;95;191;;; -156861;1;0;false;false;;;;;; -156862;6;0;false;false;63;95;191;;; -156868;3;0;false;false;;;;;; -156871;1;0;false;false;63;95;191;;; -156872;1;0;false;false;;;;;; -156873;2;0;false;false;63;95;191;;; -156875;1;0;false;false;;;;;; -156876;3;0;false;false;63;95;191;;; -156879;1;0;false;false;;;;;; -156880;10;0;false;false;63;95;191;;; -156890;1;0;false;false;;;;;; -156891;2;0;false;false;63;95;191;;; -156893;1;0;false;false;;;;;; -156894;9;0;false;false;63;95;191;;; -156903;1;0;false;false;;;;;; -156904;3;0;false;false;63;95;191;;; -156907;1;0;false;false;;;;;; -156908;5;0;false;false;63;95;191;;; -156913;1;0;false;false;;;;;; -156914;5;0;false;false;63;95;191;;; -156919;3;0;false;false;;;;;; -156922;1;0;false;false;63;95;191;;; -156923;4;0;false;false;;;;;; -156927;1;0;false;false;63;95;191;;; -156928;1;0;false;false;;;;;; -156929;8;1;false;false;127;159;191;;; -156937;3;0;false;false;63;95;191;;; -156940;1;0;false;false;;;;;; -156941;5;0;false;false;63;95;191;;; -156946;1;0;false;false;;;;;; -156947;2;0;false;false;63;95;191;;; -156949;1;0;false;false;;;;;; -156950;3;0;false;false;63;95;191;;; -156953;1;0;false;false;;;;;; -156954;4;0;false;false;63;95;191;;; -156958;1;0;false;false;;;;;; -156959;3;0;false;false;63;95;191;;; -156962;1;0;false;false;;;;;; -156963;5;0;false;false;63;95;191;;; -156968;1;0;false;false;;;;;; -156969;2;0;false;false;63;95;191;;; -156971;1;0;false;false;;;;;; -156972;3;0;false;false;63;95;191;;; -156975;3;0;false;false;;;;;; -156978;2;0;false;false;63;95;191;;; -156980;2;0;false;false;;;;;; -156982;3;1;false;false;127;0;85;;; -156985;1;0;false;false;;;;;; -156986;14;0;false;false;0;0;0;;; -157000;1;0;false;false;;;;;; -157001;1;0;false;false;0;0;0;;; -157002;3;0;false;false;;;;;; -157005;3;1;false;false;127;0;85;;; -157008;1;0;false;false;;;;;; -157009;9;0;false;false;0;0;0;;; -157018;1;0;false;false;;;;;; -157019;1;0;false;false;0;0;0;;; -157020;1;0;false;false;;;;;; -157021;37;0;false;false;0;0;0;;; -157058;3;0;false;false;;;;;; -157061;3;1;false;false;127;0;85;;; -157064;1;0;false;false;;;;;; -157065;11;0;false;false;0;0;0;;; -157076;1;0;false;false;;;;;; -157077;1;0;false;false;0;0;0;;; -157078;1;0;false;false;;;;;; -157079;11;0;false;false;0;0;0;;; -157090;3;0;false;false;;;;;; -157093;2;1;false;false;127;0;85;;; -157095;1;0;false;false;;;;;; -157096;9;0;false;false;0;0;0;;; -157105;1;0;false;false;;;;;; -157106;2;0;false;false;0;0;0;;; -157108;1;0;false;false;;;;;; -157109;7;0;false;false;0;0;0;;; -157116;1;0;false;false;;;;;; -157117;2;0;false;false;0;0;0;;; -157119;1;0;false;false;;;;;; -157120;11;0;false;false;0;0;0;;; -157131;1;0;false;false;;;;;; -157132;2;0;false;false;0;0;0;;; -157134;4;0;false;false;;;;;; -157138;9;0;false;false;0;0;0;;; -157147;1;0;false;false;;;;;; -157148;1;0;false;false;0;0;0;;; -157149;1;0;false;false;;;;;; -157150;22;0;false;false;0;0;0;;; -157172;1;0;false;false;;;;;; -157173;1;0;false;false;0;0;0;;; -157174;1;0;false;false;;;;;; -157175;1;0;false;false;0;0;0;;; -157176;1;0;false;false;;;;;; -157177;2;0;false;false;0;0;0;;; -157179;4;0;false;false;;;;;; -157183;11;0;false;false;0;0;0;;; -157194;1;0;false;false;;;;;; -157195;2;0;false;false;0;0;0;;; -157197;1;0;false;false;;;;;; -157198;33;0;false;false;0;0;0;;; -157231;1;0;false;false;;;;;; -157232;1;0;false;false;0;0;0;;; -157233;1;0;false;false;;;;;; -157234;3;0;false;false;0;0;0;;; -157237;1;0;false;false;;;;;; -157238;1;0;false;false;0;0;0;;; -157239;4;0;false;false;;;;;; -157243;12;0;false;false;0;0;0;;; -157255;3;0;false;false;;;;;; -157258;1;0;false;false;0;0;0;;; -157259;3;0;false;false;;;;;; -157262;6;1;false;false;127;0;85;;; -157268;1;0;false;false;;;;;; -157269;10;0;false;false;0;0;0;;; -157279;2;0;false;false;;;;;; -157281;1;0;false;false;0;0;0;;; -157282;2;0;false;false;;;;;; -157284;3;0;false;false;63;95;191;;; -157287;3;0;false;false;;;;;; -157290;1;0;false;false;63;95;191;;; -157291;1;0;false;false;;;;;; -157292;7;0;false;false;63;95;191;;; -157299;1;0;false;false;;;;;; -157300;3;0;false;false;63;95;191;;; -157303;1;0;false;false;;;;;; -157304;6;0;false;false;63;95;191;;; -157310;1;0;false;false;;;;;; -157311;2;0;false;false;63;95;191;;; -157313;1;0;false;false;;;;;; -157314;3;0;false;false;63;95;191;;; -157317;1;0;false;false;;;;;; -157318;9;0;false;false;63;95;191;;; -157327;1;0;false;false;;;;;; -157328;5;0;false;false;63;95;191;;; -157333;1;0;false;false;;;;;; -157334;3;0;false;false;63;95;191;;; -157337;1;0;false;false;;;;;; -157338;4;0;false;false;63;95;191;;; -157342;1;0;false;false;;;;;; -157343;2;0;false;false;63;95;191;;; -157345;1;0;false;false;;;;;; -157346;3;0;false;false;63;95;191;;; -157349;1;0;false;false;;;;;; -157350;9;0;false;false;63;95;191;;; -157359;3;0;false;false;;;;;; -157362;1;0;false;false;63;95;191;;; -157363;1;0;false;false;;;;;; -157364;7;0;false;false;63;95;191;;; -157371;3;0;false;false;;;;;; -157374;1;0;false;false;63;95;191;;; -157375;1;0;false;false;;;;;; -157376;3;0;false;false;127;127;159;;; -157379;3;0;false;false;;;;;; -157382;1;0;false;false;63;95;191;;; -157383;1;0;false;false;;;;;; -157384;5;0;false;false;63;95;191;;; -157389;1;0;false;false;;;;;; -157390;3;0;false;false;63;95;191;;; -157393;1;0;false;false;;;;;; -157394;3;0;false;false;63;95;191;;; -157397;1;0;false;false;;;;;; -157398;7;0;false;false;63;95;191;;; -157405;1;0;false;false;;;;;; -157406;2;0;false;false;63;95;191;;; -157408;1;0;false;false;;;;;; -157409;5;0;false;false;63;95;191;;; -157414;1;0;false;false;;;;;; -157415;6;0;false;false;63;95;191;;; -157421;1;0;false;false;;;;;; -157422;2;0;false;false;63;95;191;;; -157424;1;0;false;false;;;;;; -157425;1;0;false;false;63;95;191;;; -157426;1;0;false;false;;;;;; -157427;8;0;false;false;63;95;191;;; -157435;1;0;false;false;;;;;; -157436;2;0;false;false;63;95;191;;; -157438;1;0;false;false;;;;;; -157439;11;0;false;false;63;95;191;;; -157450;3;0;false;false;;;;;; -157453;1;0;false;false;63;95;191;;; -157454;1;0;false;false;;;;;; -157455;4;0;false;false;127;127;159;;; -157459;3;0;false;false;;;;;; -157462;1;0;false;false;63;95;191;;; -157463;1;0;false;false;;;;;; -157464;4;0;false;false;127;127;159;;; -157468;4;0;false;false;63;95;191;;; -157472;1;0;false;false;;;;;; -157473;1;0;false;false;63;95;191;;; -157474;1;0;false;false;127;127;159;;; -157475;1;0;false;false;63;95;191;;; -157476;1;0;false;false;;;;;; -157477;3;0;false;false;63;95;191;;; -157480;1;0;false;false;;;;;; -157481;1;0;false;false;63;95;191;;; -157482;1;0;false;false;127;127;159;;; -157483;1;0;false;false;63;95;191;;; -157484;1;0;false;false;;;;;; -157485;6;0;false;false;63;95;191;;; -157491;1;0;false;false;;;;;; -157492;2;0;false;false;63;95;191;;; -157494;1;0;false;false;127;127;159;;; -157495;2;0;false;false;63;95;191;;; -157497;1;0;false;false;;;;;; -157498;3;0;false;false;63;95;191;;; -157501;1;0;false;false;;;;;; -157502;2;0;false;false;63;95;191;;; -157504;1;0;false;false;127;127;159;;; -157505;4;0;false;false;63;95;191;;; -157509;3;0;false;false;;;;;; -157512;1;0;false;false;63;95;191;;; -157513;1;0;false;false;;;;;; -157514;4;0;false;false;127;127;159;;; -157518;5;0;false;false;63;95;191;;; -157523;1;0;false;false;;;;;; -157524;5;0;false;false;63;95;191;;; -157529;1;0;false;false;;;;;; -157530;9;0;false;false;63;95;191;;; -157539;1;0;false;false;;;;;; -157540;6;0;false;false;63;95;191;;; -157546;1;0;false;false;;;;;; -157547;4;0;false;false;63;95;191;;; -157551;1;0;false;false;;;;;; -157552;6;0;false;false;63;95;191;;; -157558;3;0;false;false;;;;;; -157561;1;0;false;false;63;95;191;;; -157562;1;0;false;false;;;;;; -157563;5;0;false;false;127;127;159;;; -157568;3;0;false;false;;;;;; -157571;1;0;false;false;63;95;191;;; -157572;1;0;false;false;;;;;; -157573;4;0;false;false;127;127;159;;; -157577;3;0;false;false;;;;;; -157580;1;0;false;false;63;95;191;;; -157581;1;0;false;false;;;;;; -157582;3;0;false;false;127;127;159;;; -157585;3;0;false;false;;;;;; -157588;1;0;false;false;63;95;191;;; -157589;1;0;false;false;;;;;; -157590;5;0;false;false;63;95;191;;; -157595;1;0;false;false;;;;;; -157596;10;0;false;false;63;95;191;;; -157606;1;0;false;false;;;;;; -157607;1;0;false;false;63;95;191;;; -157608;1;0;false;false;;;;;; -157609;1;0;false;false;63;95;191;;; -157610;1;0;false;false;;;;;; -157611;6;0;false;false;63;95;191;;; -157617;1;0;false;false;;;;;; -157618;3;0;false;false;63;95;191;;; -157621;1;0;false;false;;;;;; -157622;3;0;false;false;63;95;191;;; -157625;1;0;false;false;;;;;; -157626;7;0;false;false;63;95;191;;; -157633;1;0;false;false;;;;;; -157634;2;0;false;false;63;95;191;;; -157636;1;0;false;false;;;;;; -157637;4;0;false;false;63;95;191;;; -157641;1;0;false;false;;;;;; -157642;3;0;false;false;63;95;191;;; -157645;1;0;false;false;;;;;; -157646;7;0;false;false;63;95;191;;; -157653;1;0;false;false;;;;;; -157654;2;0;false;false;63;95;191;;; -157656;3;0;false;false;;;;;; -157659;1;0;false;false;63;95;191;;; -157660;1;0;false;false;;;;;; -157661;4;0;false;false;63;95;191;;; -157665;1;0;false;false;;;;;; -157666;2;0;false;false;63;95;191;;; -157668;1;0;false;false;;;;;; -157669;3;0;false;false;63;95;191;;; -157672;1;0;false;false;;;;;; -157673;4;0;false;false;63;95;191;;; -157677;1;0;false;false;;;;;; -157678;7;0;false;false;63;95;191;;; -157685;1;0;false;false;;;;;; -157686;2;0;false;false;63;95;191;;; -157688;1;0;false;false;;;;;; -157689;2;0;false;false;63;95;191;;; -157691;1;0;false;false;;;;;; -157692;3;0;false;false;63;95;191;;; -157695;1;0;false;false;;;;;; -157696;5;0;false;false;63;95;191;;; -157701;1;0;false;false;;;;;; -157702;10;0;false;false;63;95;191;;; -157712;2;0;false;false;;;;;; -157714;4;0;false;false;63;95;191;;; -157718;1;0;false;false;;;;;; -157719;6;0;false;false;63;95;191;;; -157725;1;0;false;false;;;;;; -157726;3;0;false;false;63;95;191;;; -157729;4;0;false;false;;;;;; -157733;1;0;false;false;63;95;191;;; -157734;1;0;false;false;;;;;; -157735;7;0;false;false;63;95;191;;; -157742;1;0;false;false;;;;;; -157743;2;0;false;false;63;95;191;;; -157745;1;0;false;false;;;;;; -157746;3;0;false;false;63;95;191;;; -157749;1;0;false;false;;;;;; -157750;5;0;false;false;63;95;191;;; -157755;3;0;false;false;;;;;; -157758;1;0;false;false;63;95;191;;; -157759;1;0;false;false;;;;;; -157760;4;0;false;false;127;127;159;;; -157764;3;0;false;false;;;;;; -157767;2;0;false;false;63;95;191;;; -157769;2;0;false;false;;;;;; -157771;3;1;false;false;127;0;85;;; -157774;1;0;false;false;;;;;; -157775;11;0;false;false;0;0;0;;; -157786;3;1;false;false;127;0;85;;; -157789;1;0;false;false;;;;;; -157790;7;0;false;false;0;0;0;;; -157797;1;0;false;false;;;;;; -157798;1;0;false;false;0;0;0;;; -157799;3;0;false;false;;;;;; -157802;3;1;false;false;127;0;85;;; -157805;1;0;false;false;;;;;; -157806;4;0;false;false;0;0;0;;; -157810;1;0;false;false;;;;;; -157811;1;0;false;false;0;0;0;;; -157812;1;0;false;false;;;;;; -157813;39;0;false;false;0;0;0;;; -157852;3;0;false;false;;;;;; -157855;3;1;false;false;127;0;85;;; -157858;1;0;false;false;;;;;; -157859;10;0;false;false;0;0;0;;; -157869;1;0;false;false;;;;;; -157870;1;0;false;false;0;0;0;;; -157871;1;0;false;false;;;;;; -157872;37;0;false;false;0;0;0;;; -157909;3;0;false;false;;;;;; -157912;6;0;false;false;0;0;0;;; -157918;1;0;false;false;;;;;; -157919;8;0;false;false;0;0;0;;; -157927;1;0;false;false;;;;;; -157928;1;0;false;false;0;0;0;;; -157929;1;0;false;false;;;;;; -157930;29;0;false;false;0;0;0;;; -157959;3;0;false;false;;;;;; -157962;3;1;false;false;127;0;85;;; -157965;1;0;false;false;;;;;; -157966;10;0;false;false;0;0;0;;; -157976;1;0;false;false;;;;;; -157977;1;0;false;false;0;0;0;;; -157978;1;0;false;false;;;;;; -157979;18;0;false;false;0;0;0;;; -157997;6;0;false;false;;;;;; -158003;2;1;false;false;127;0;85;;; -158005;1;0;false;false;;;;;; -158006;7;0;false;false;0;0;0;;; -158013;1;0;false;false;;;;;; -158014;2;0;false;false;0;0;0;;; -158016;1;0;false;false;;;;;; -158017;15;0;false;false;0;0;0;;; -158032;1;0;false;false;;;;;; -158033;1;0;false;false;0;0;0;;; -158034;4;0;false;false;;;;;; -158038;6;1;false;false;127;0;85;;; -158044;1;0;false;false;;;;;; -158045;7;0;false;false;0;0;0;;; -158052;3;0;false;false;;;;;; -158055;1;0;false;false;0;0;0;;; -158056;3;0;false;false;;;;;; -158059;2;1;false;false;127;0;85;;; -158061;1;0;false;false;;;;;; -158062;7;0;false;false;0;0;0;;; -158069;1;0;false;false;;;;;; -158070;2;0;false;false;0;0;0;;; -158072;1;0;false;false;;;;;; -158073;10;0;false;false;0;0;0;;; -158083;1;0;false;false;;;;;; -158084;1;0;false;false;0;0;0;;; -158085;1;0;false;false;;;;;; -158086;11;0;false;false;0;0;0;;; -158097;1;0;false;false;;;;;; -158098;1;0;false;false;0;0;0;;; -158099;4;0;false;false;;;;;; -158103;7;0;false;false;0;0;0;;; -158110;4;0;false;false;;;;;; -158114;6;0;false;false;0;0;0;;; -158120;1;0;false;false;;;;;; -158121;1;0;false;false;0;0;0;;; -158122;1;0;false;false;;;;;; -158123;37;0;false;false;0;0;0;;; -158160;3;0;false;false;;;;;; -158163;1;0;false;false;0;0;0;;; -158164;3;0;false;false;;;;;; -158167;4;1;false;false;127;0;85;;; -158171;1;0;false;false;;;;;; -158172;1;0;false;false;0;0;0;;; -158173;4;0;false;false;;;;;; -158177;10;0;false;false;0;0;0;;; -158187;1;0;false;false;;;;;; -158188;6;0;false;false;0;0;0;;; -158194;1;0;false;false;;;;;; -158195;1;0;false;false;0;0;0;;; -158196;1;0;false;false;;;;;; -158197;32;0;false;false;0;0;0;;; -158229;1;0;false;false;;;;;; -158230;12;0;false;false;0;0;0;;; -158242;4;0;false;false;;;;;; -158246;6;0;false;false;0;0;0;;; -158252;1;0;false;false;;;;;; -158253;2;0;false;false;0;0;0;;; -158255;1;0;false;false;;;;;; -158256;11;0;false;false;0;0;0;;; -158267;4;0;false;false;;;;;; -158271;6;0;false;false;0;0;0;;; -158277;1;0;false;false;;;;;; -158278;1;0;false;false;0;0;0;;; -158279;1;0;false;false;;;;;; -158280;28;0;false;false;0;0;0;;; -158308;1;0;false;false;;;;;; -158309;19;0;false;false;0;0;0;;; -158328;4;0;false;false;;;;;; -158332;6;0;false;false;0;0;0;;; -158338;1;0;false;false;;;;;; -158339;2;0;false;false;0;0;0;;; -158341;1;0;false;false;;;;;; -158342;11;0;false;false;0;0;0;;; -158353;4;0;false;false;;;;;; -158357;35;0;false;false;0;0;0;;; -158392;3;0;false;false;;;;;; -158395;1;0;false;false;0;0;0;;; -158396;3;0;false;false;;;;;; -158399;6;1;false;false;127;0;85;;; -158405;1;0;false;false;;;;;; -158406;7;0;false;false;0;0;0;;; -158413;2;0;false;false;;;;;; -158415;1;0;false;false;0;0;0;;; -158416;2;0;false;false;;;;;; -158418;3;0;false;false;63;95;191;;; -158421;3;0;false;false;;;;;; -158424;1;0;false;false;63;95;191;;; -158425;1;0;false;false;;;;;; -158426;7;0;false;false;63;95;191;;; -158433;1;0;false;false;;;;;; -158434;3;0;false;false;63;95;191;;; -158437;1;0;false;false;;;;;; -158438;6;0;false;false;63;95;191;;; -158444;1;0;false;false;;;;;; -158445;2;0;false;false;63;95;191;;; -158447;1;0;false;false;;;;;; -158448;3;0;false;false;63;95;191;;; -158451;1;0;false;false;;;;;; -158452;9;0;false;false;63;95;191;;; -158461;1;0;false;false;;;;;; -158462;5;0;false;false;63;95;191;;; -158467;1;0;false;false;;;;;; -158468;3;0;false;false;63;95;191;;; -158471;1;0;false;false;;;;;; -158472;4;0;false;false;63;95;191;;; -158476;1;0;false;false;;;;;; -158477;2;0;false;false;63;95;191;;; -158479;1;0;false;false;;;;;; -158480;3;0;false;false;63;95;191;;; -158483;1;0;false;false;;;;;; -158484;9;0;false;false;63;95;191;;; -158493;3;0;false;false;;;;;; -158496;1;0;false;false;63;95;191;;; -158497;1;0;false;false;;;;;; -158498;7;0;false;false;63;95;191;;; -158505;3;0;false;false;;;;;; -158508;1;0;false;false;63;95;191;;; -158509;1;0;false;false;;;;;; -158510;3;0;false;false;127;127;159;;; -158513;3;0;false;false;;;;;; -158516;1;0;false;false;63;95;191;;; -158517;1;0;false;false;;;;;; -158518;5;0;false;false;63;95;191;;; -158523;1;0;false;false;;;;;; -158524;3;0;false;false;63;95;191;;; -158527;1;0;false;false;;;;;; -158528;3;0;false;false;63;95;191;;; -158531;1;0;false;false;;;;;; -158532;7;0;false;false;63;95;191;;; -158539;1;0;false;false;;;;;; -158540;2;0;false;false;63;95;191;;; -158542;1;0;false;false;;;;;; -158543;5;0;false;false;63;95;191;;; -158548;1;0;false;false;;;;;; -158549;6;0;false;false;63;95;191;;; -158555;1;0;false;false;;;;;; -158556;2;0;false;false;63;95;191;;; -158558;1;0;false;false;;;;;; -158559;1;0;false;false;63;95;191;;; -158560;1;0;false;false;;;;;; -158561;8;0;false;false;63;95;191;;; -158569;1;0;false;false;;;;;; -158570;2;0;false;false;63;95;191;;; -158572;1;0;false;false;;;;;; -158573;11;0;false;false;63;95;191;;; -158584;3;0;false;false;;;;;; -158587;1;0;false;false;63;95;191;;; -158588;1;0;false;false;;;;;; -158589;4;0;false;false;127;127;159;;; -158593;3;0;false;false;;;;;; -158596;1;0;false;false;63;95;191;;; -158597;1;0;false;false;;;;;; -158598;4;0;false;false;127;127;159;;; -158602;4;0;false;false;63;95;191;;; -158606;1;0;false;false;;;;;; -158607;1;0;false;false;63;95;191;;; -158608;1;0;false;false;127;127;159;;; -158609;1;0;false;false;63;95;191;;; -158610;1;0;false;false;;;;;; -158611;3;0;false;false;63;95;191;;; -158614;1;0;false;false;;;;;; -158615;1;0;false;false;63;95;191;;; -158616;1;0;false;false;127;127;159;;; -158617;1;0;false;false;63;95;191;;; -158618;1;0;false;false;;;;;; -158619;6;0;false;false;63;95;191;;; -158625;1;0;false;false;;;;;; -158626;2;0;false;false;63;95;191;;; -158628;1;0;false;false;127;127;159;;; -158629;2;0;false;false;63;95;191;;; -158631;1;0;false;false;;;;;; -158632;3;0;false;false;63;95;191;;; -158635;1;0;false;false;;;;;; -158636;2;0;false;false;63;95;191;;; -158638;1;0;false;false;127;127;159;;; -158639;4;0;false;false;63;95;191;;; -158643;3;0;false;false;;;;;; -158646;1;0;false;false;63;95;191;;; -158647;1;0;false;false;;;;;; -158648;4;0;false;false;127;127;159;;; -158652;5;0;false;false;63;95;191;;; -158657;1;0;false;false;;;;;; -158658;5;0;false;false;63;95;191;;; -158663;1;0;false;false;;;;;; -158664;9;0;false;false;63;95;191;;; -158673;1;0;false;false;;;;;; -158674;6;0;false;false;63;95;191;;; -158680;1;0;false;false;;;;;; -158681;4;0;false;false;63;95;191;;; -158685;1;0;false;false;;;;;; -158686;6;0;false;false;63;95;191;;; -158692;3;0;false;false;;;;;; -158695;1;0;false;false;63;95;191;;; -158696;1;0;false;false;;;;;; -158697;5;0;false;false;127;127;159;;; -158702;3;0;false;false;;;;;; -158705;1;0;false;false;63;95;191;;; -158706;1;0;false;false;;;;;; -158707;4;0;false;false;127;127;159;;; -158711;3;0;false;false;;;;;; -158714;1;0;false;false;63;95;191;;; -158715;1;0;false;false;;;;;; -158716;3;0;false;false;127;127;159;;; -158719;3;0;false;false;;;;;; -158722;1;0;false;false;63;95;191;;; -158723;1;0;false;false;;;;;; -158724;6;0;false;false;63;95;191;;; -158730;1;0;false;false;;;;;; -158731;3;0;false;false;63;95;191;;; -158734;1;0;false;false;;;;;; -158735;7;0;false;false;63;95;191;;; -158742;1;0;false;false;;;;;; -158743;3;0;false;false;63;95;191;;; -158746;1;0;false;false;;;;;; -158747;2;0;false;false;63;95;191;;; -158749;1;0;false;false;;;;;; -158750;3;0;false;false;63;95;191;;; -158753;1;0;false;false;;;;;; -158754;9;0;false;false;63;95;191;;; -158763;1;0;false;false;;;;;; -158764;1;0;false;false;63;95;191;;; -158765;1;0;false;false;;;;;; -158766;5;0;false;false;63;95;191;;; -158771;2;0;false;false;;;;;; -158773;4;0;false;false;63;95;191;;; -158777;1;0;false;false;;;;;; -158778;6;0;false;false;63;95;191;;; -158784;1;0;false;false;;;;;; -158785;3;0;false;false;63;95;191;;; -158788;1;0;false;false;;;;;; -158789;7;0;false;false;63;95;191;;; -158796;4;0;false;false;;;;;; -158800;1;0;false;false;63;95;191;;; -158801;1;0;false;false;;;;;; -158802;2;0;false;false;63;95;191;;; -158804;1;0;false;false;;;;;; -158805;3;0;false;false;63;95;191;;; -158808;1;0;false;false;;;;;; -158809;5;0;false;false;63;95;191;;; -158814;3;0;false;false;;;;;; -158817;1;0;false;false;63;95;191;;; -158818;1;0;false;false;;;;;; -158819;4;0;false;false;127;127;159;;; -158823;3;0;false;false;;;;;; -158826;2;0;false;false;63;95;191;;; -158828;2;0;false;false;;;;;; -158830;3;1;false;false;127;0;85;;; -158833;1;0;false;false;;;;;; -158834;19;0;false;false;0;0;0;;; -158853;3;1;false;false;127;0;85;;; -158856;1;0;false;false;;;;;; -158857;7;0;false;false;0;0;0;;; -158864;1;0;false;false;;;;;; -158865;1;0;false;false;0;0;0;;; -158866;3;0;false;false;;;;;; -158869;3;1;false;false;127;0;85;;; -158872;1;0;false;false;;;;;; -158873;4;0;false;false;0;0;0;;; -158877;1;0;false;false;;;;;; -158878;1;0;false;false;0;0;0;;; -158879;1;0;false;false;;;;;; -158880;39;0;false;false;0;0;0;;; -158919;3;0;false;false;;;;;; -158922;3;1;false;false;127;0;85;;; -158925;1;0;false;false;;;;;; -158926;10;0;false;false;0;0;0;;; -158936;1;0;false;false;;;;;; -158937;1;0;false;false;0;0;0;;; -158938;1;0;false;false;;;;;; -158939;37;0;false;false;0;0;0;;; -158976;3;0;false;false;;;;;; -158979;6;0;false;false;0;0;0;;; -158985;1;0;false;false;;;;;; -158986;8;0;false;false;0;0;0;;; -158994;1;0;false;false;;;;;; -158995;1;0;false;false;0;0;0;;; -158996;1;0;false;false;;;;;; -158997;29;0;false;false;0;0;0;;; -159026;3;0;false;false;;;;;; -159029;3;1;false;false;127;0;85;;; -159032;1;0;false;false;;;;;; -159033;10;0;false;false;0;0;0;;; -159043;1;0;false;false;;;;;; -159044;1;0;false;false;0;0;0;;; -159045;1;0;false;false;;;;;; -159046;18;0;false;false;0;0;0;;; -159064;6;0;false;false;;;;;; -159070;2;1;false;false;127;0;85;;; -159072;1;0;false;false;;;;;; -159073;7;0;false;false;0;0;0;;; -159080;1;0;false;false;;;;;; -159081;2;0;false;false;0;0;0;;; -159083;1;0;false;false;;;;;; -159084;15;0;false;false;0;0;0;;; -159099;1;0;false;false;;;;;; -159100;1;0;false;false;0;0;0;;; -159101;4;0;false;false;;;;;; -159105;6;1;false;false;127;0;85;;; -159111;1;0;false;false;;;;;; -159112;7;0;false;false;0;0;0;;; -159119;3;0;false;false;;;;;; -159122;1;0;false;false;0;0;0;;; -159123;3;0;false;false;;;;;; -159126;2;1;false;false;127;0;85;;; -159128;1;0;false;false;;;;;; -159129;7;0;false;false;0;0;0;;; -159136;1;0;false;false;;;;;; -159137;2;0;false;false;0;0;0;;; -159139;1;0;false;false;;;;;; -159140;10;0;false;false;0;0;0;;; -159150;1;0;false;false;;;;;; -159151;1;0;false;false;0;0;0;;; -159152;1;0;false;false;;;;;; -159153;11;0;false;false;0;0;0;;; -159164;1;0;false;false;;;;;; -159165;1;0;false;false;0;0;0;;; -159166;4;0;false;false;;;;;; -159170;7;0;false;false;0;0;0;;; -159177;4;0;false;false;;;;;; -159181;6;0;false;false;0;0;0;;; -159187;1;0;false;false;;;;;; -159188;1;0;false;false;0;0;0;;; -159189;1;0;false;false;;;;;; -159190;37;0;false;false;0;0;0;;; -159227;3;0;false;false;;;;;; -159230;1;0;false;false;0;0;0;;; -159231;3;0;false;false;;;;;; -159234;4;1;false;false;127;0;85;;; -159238;1;0;false;false;;;;;; -159239;1;0;false;false;0;0;0;;; -159240;4;0;false;false;;;;;; -159244;6;0;false;false;0;0;0;;; -159250;1;0;false;false;;;;;; -159251;2;0;false;false;0;0;0;;; -159253;1;0;false;false;;;;;; -159254;11;0;false;false;0;0;0;;; -159265;4;0;false;false;;;;;; -159269;4;1;false;false;127;0;85;;; -159273;1;0;false;false;;;;;; -159274;2;0;false;false;0;0;0;;; -159276;1;0;false;false;;;;;; -159277;1;0;false;false;0;0;0;;; -159278;1;0;false;false;;;;;; -159279;24;0;false;false;0;0;0;;; -159303;4;0;false;false;;;;;; -159307;7;1;false;false;127;0;85;;; -159314;1;0;false;false;;;;;; -159315;13;0;false;false;0;0;0;;; -159328;1;0;false;false;;;;;; -159329;1;0;false;false;0;0;0;;; -159330;1;0;false;false;;;;;; -159331;34;0;false;false;0;0;0;;; -159365;8;0;false;false;;;;;; -159373;5;1;false;false;127;0;85;;; -159378;1;0;false;false;;;;;; -159379;7;0;false;false;0;0;0;;; -159386;1;0;false;false;;;;;; -159387;1;0;false;false;0;0;0;;; -159388;1;0;false;false;;;;;; -159389;10;0;false;false;0;0;0;;; -159399;1;0;false;false;;;;;; -159400;1;0;false;false;0;0;0;;; -159401;1;0;false;false;;;;;; -159402;1;0;false;false;0;0;0;;; -159403;1;0;false;false;;;;;; -159404;2;0;false;false;0;0;0;;; -159406;1;0;false;false;;;;;; -159407;33;0;false;false;0;0;0;;; -159440;1;0;false;false;;;;;; -159441;2;0;false;false;0;0;0;;; -159443;1;0;false;false;;;;;; -159444;13;0;false;false;0;0;0;;; -159457;1;0;false;false;;;;;; -159458;2;0;false;false;0;0;0;;; -159460;1;0;false;false;;;;;; -159461;31;0;false;false;0;0;0;;; -159492;1;0;false;false;;;;;; -159493;1;0;false;false;0;0;0;;; -159494;5;0;false;false;;;;;; -159499;9;0;false;false;0;0;0;;; -159508;5;0;false;false;;;;;; -159513;2;0;false;false;0;0;0;;; -159515;1;0;false;false;;;;;; -159516;1;0;false;false;0;0;0;;; -159517;1;0;false;false;;;;;; -159518;24;0;false;false;0;0;0;;; -159542;4;0;false;false;;;;;; -159546;1;0;false;false;0;0;0;;; -159547;4;0;false;false;;;;;; -159551;2;1;false;false;127;0;85;;; -159553;1;0;false;false;;;;;; -159554;7;0;false;false;0;0;0;;; -159561;1;0;false;false;;;;;; -159562;2;0;false;false;0;0;0;;; -159564;1;0;false;false;;;;;; -159565;10;0;false;false;0;0;0;;; -159575;1;0;false;false;;;;;; -159576;1;0;false;false;0;0;0;;; -159577;1;0;false;false;;;;;; -159578;1;0;false;false;0;0;0;;; -159579;1;0;false;false;;;;;; -159580;2;0;false;false;0;0;0;;; -159582;1;0;false;false;;;;;; -159583;33;0;false;false;0;0;0;;; -159616;1;0;false;false;;;;;; -159617;2;0;false;false;0;0;0;;; -159619;1;0;false;false;;;;;; -159620;13;0;false;false;0;0;0;;; -159633;1;0;false;false;;;;;; -159634;2;0;false;false;0;0;0;;; -159636;1;0;false;false;;;;;; -159637;31;0;false;false;0;0;0;;; -159668;1;0;false;false;;;;;; -159669;1;0;false;false;0;0;0;;; -159670;5;0;false;false;;;;;; -159675;9;0;false;false;0;0;0;;; -159684;4;0;false;false;;;;;; -159688;1;0;false;false;0;0;0;;; -159689;4;0;false;false;;;;;; -159693;6;0;false;false;0;0;0;;; -159699;1;0;false;false;;;;;; -159700;2;0;false;false;0;0;0;;; -159702;1;0;false;false;;;;;; -159703;11;0;false;false;0;0;0;;; -159714;3;0;false;false;;;;;; -159717;1;0;false;false;0;0;0;;; -159718;3;0;false;false;;;;;; -159721;6;1;false;false;127;0;85;;; -159727;1;0;false;false;;;;;; -159728;7;0;false;false;0;0;0;;; -159735;2;0;false;false;;;;;; -159737;1;0;false;false;0;0;0;;; -159738;2;0;false;false;;;;;; -159740;3;0;false;false;63;95;191;;; -159743;3;0;false;false;;;;;; -159746;1;0;false;false;63;95;191;;; -159747;1;0;false;false;;;;;; -159748;7;0;false;false;63;95;191;;; -159755;1;0;false;false;;;;;; -159756;3;0;false;false;63;95;191;;; -159759;1;0;false;false;;;;;; -159760;5;0;false;false;63;95;191;;; -159765;1;0;false;false;;;;;; -159766;6;0;false;false;63;95;191;;; -159772;1;0;false;false;;;;;; -159773;2;0;false;false;63;95;191;;; -159775;1;0;false;false;;;;;; -159776;3;0;false;false;63;95;191;;; -159779;1;0;false;false;;;;;; -159780;4;0;false;false;63;95;191;;; -159784;1;0;false;false;;;;;; -159785;2;0;false;false;63;95;191;;; -159787;1;0;false;false;;;;;; -159788;3;0;false;false;63;95;191;;; -159791;1;0;false;false;;;;;; -159792;9;0;false;false;63;95;191;;; -159801;1;0;false;false;;;;;; -159802;7;0;false;false;63;95;191;;; -159809;3;0;false;false;;;;;; -159812;1;0;false;false;63;95;191;;; -159813;1;0;false;false;;;;;; -159814;5;0;false;false;63;95;191;;; -159819;1;0;false;false;;;;;; -159820;3;0;false;false;63;95;191;;; -159823;1;0;false;false;;;;;; -159824;3;0;false;false;63;95;191;;; -159827;1;0;false;false;;;;;; -159828;7;0;false;false;63;95;191;;; -159835;1;0;false;false;;;;;; -159836;2;0;false;false;63;95;191;;; -159838;1;0;false;false;;;;;; -159839;5;0;false;false;63;95;191;;; -159844;1;0;false;false;;;;;; -159845;6;0;false;false;63;95;191;;; -159851;1;0;false;false;;;;;; -159852;2;0;false;false;63;95;191;;; -159854;1;0;false;false;;;;;; -159855;1;0;false;false;63;95;191;;; -159856;1;0;false;false;;;;;; -159857;8;0;false;false;63;95;191;;; -159865;1;0;false;false;;;;;; -159866;2;0;false;false;63;95;191;;; -159868;1;0;false;false;;;;;; -159869;11;0;false;false;63;95;191;;; -159880;3;0;false;false;;;;;; -159883;1;0;false;false;63;95;191;;; -159884;1;0;false;false;;;;;; -159885;3;0;false;false;127;127;159;;; -159888;3;0;false;false;;;;;; -159891;1;0;false;false;63;95;191;;; -159892;1;0;false;false;;;;;; -159893;4;0;false;false;127;127;159;;; -159897;3;0;false;false;;;;;; -159900;1;0;false;false;63;95;191;;; -159901;1;0;false;false;;;;;; -159902;4;0;false;false;127;127;159;;; -159906;4;0;false;false;63;95;191;;; -159910;1;0;false;false;;;;;; -159911;1;0;false;false;63;95;191;;; -159912;1;0;false;false;127;127;159;;; -159913;1;0;false;false;63;95;191;;; -159914;1;0;false;false;;;;;; -159915;3;0;false;false;63;95;191;;; -159918;1;0;false;false;;;;;; -159919;1;0;false;false;63;95;191;;; -159920;1;0;false;false;127;127;159;;; -159921;1;0;false;false;63;95;191;;; -159922;1;0;false;false;;;;;; -159923;6;0;false;false;63;95;191;;; -159929;1;0;false;false;;;;;; -159930;2;0;false;false;63;95;191;;; -159932;1;0;false;false;127;127;159;;; -159933;2;0;false;false;63;95;191;;; -159935;1;0;false;false;;;;;; -159936;3;0;false;false;63;95;191;;; -159939;1;0;false;false;;;;;; -159940;2;0;false;false;63;95;191;;; -159942;1;0;false;false;127;127;159;;; -159943;4;0;false;false;63;95;191;;; -159947;3;0;false;false;;;;;; -159950;1;0;false;false;63;95;191;;; -159951;1;0;false;false;;;;;; -159952;4;0;false;false;127;127;159;;; -159956;5;0;false;false;63;95;191;;; -159961;1;0;false;false;;;;;; -159962;5;0;false;false;63;95;191;;; -159967;1;0;false;false;;;;;; -159968;9;0;false;false;63;95;191;;; -159977;1;0;false;false;;;;;; -159978;6;0;false;false;63;95;191;;; -159984;1;0;false;false;;;;;; -159985;4;0;false;false;63;95;191;;; -159989;1;0;false;false;;;;;; -159990;6;0;false;false;63;95;191;;; -159996;3;0;false;false;;;;;; -159999;1;0;false;false;63;95;191;;; -160000;1;0;false;false;;;;;; -160001;5;0;false;false;127;127;159;;; -160006;3;0;false;false;;;;;; -160009;1;0;false;false;63;95;191;;; -160010;1;0;false;false;;;;;; -160011;4;0;false;false;127;127;159;;; -160015;3;0;false;false;;;;;; -160018;1;0;false;false;63;95;191;;; -160019;1;0;false;false;;;;;; -160020;3;0;false;false;127;127;159;;; -160023;3;0;false;false;;;;;; -160026;1;0;false;false;63;95;191;;; -160027;1;0;false;false;;;;;; -160028;5;0;false;false;63;95;191;;; -160033;1;0;false;false;;;;;; -160034;10;0;false;false;63;95;191;;; -160044;1;0;false;false;;;;;; -160045;1;0;false;false;63;95;191;;; -160046;1;0;false;false;;;;;; -160047;1;0;false;false;63;95;191;;; -160048;1;0;false;false;;;;;; -160049;6;0;false;false;63;95;191;;; -160055;1;0;false;false;;;;;; -160056;3;0;false;false;63;95;191;;; -160059;1;0;false;false;;;;;; -160060;3;0;false;false;63;95;191;;; -160063;1;0;false;false;;;;;; -160064;7;0;false;false;63;95;191;;; -160071;1;0;false;false;;;;;; -160072;2;0;false;false;63;95;191;;; -160074;1;0;false;false;;;;;; -160075;4;0;false;false;63;95;191;;; -160079;1;0;false;false;;;;;; -160080;3;0;false;false;63;95;191;;; -160083;1;0;false;false;;;;;; -160084;7;0;false;false;63;95;191;;; -160091;1;0;false;false;;;;;; -160092;2;0;false;false;63;95;191;;; -160094;3;0;false;false;;;;;; -160097;1;0;false;false;63;95;191;;; -160098;1;0;false;false;;;;;; -160099;4;0;false;false;63;95;191;;; -160103;1;0;false;false;;;;;; -160104;2;0;false;false;63;95;191;;; -160106;1;0;false;false;;;;;; -160107;3;0;false;false;63;95;191;;; -160110;1;0;false;false;;;;;; -160111;4;0;false;false;63;95;191;;; -160115;1;0;false;false;;;;;; -160116;7;0;false;false;63;95;191;;; -160123;1;0;false;false;;;;;; -160124;2;0;false;false;63;95;191;;; -160126;1;0;false;false;;;;;; -160127;2;0;false;false;63;95;191;;; -160129;1;0;false;false;;;;;; -160130;3;0;false;false;63;95;191;;; -160133;1;0;false;false;;;;;; -160134;5;0;false;false;63;95;191;;; -160139;1;0;false;false;;;;;; -160140;10;0;false;false;63;95;191;;; -160150;2;0;false;false;;;;;; -160152;4;0;false;false;63;95;191;;; -160156;1;0;false;false;;;;;; -160157;6;0;false;false;63;95;191;;; -160163;1;0;false;false;;;;;; -160164;3;0;false;false;63;95;191;;; -160167;1;0;false;false;;;;;; -160168;7;0;false;false;63;95;191;;; -160175;4;0;false;false;;;;;; -160179;1;0;false;false;63;95;191;;; -160180;1;0;false;false;;;;;; -160181;2;0;false;false;63;95;191;;; -160183;1;0;false;false;;;;;; -160184;3;0;false;false;63;95;191;;; -160187;1;0;false;false;;;;;; -160188;5;0;false;false;63;95;191;;; -160193;3;0;false;false;;;;;; -160196;1;0;false;false;63;95;191;;; -160197;1;0;false;false;;;;;; -160198;4;0;false;false;127;127;159;;; -160202;3;0;false;false;;;;;; -160205;2;0;false;false;63;95;191;;; -160207;2;0;false;false;;;;;; -160209;3;1;false;false;127;0;85;;; -160212;1;0;false;false;;;;;; -160213;13;0;false;false;0;0;0;;; -160226;3;1;false;false;127;0;85;;; -160229;1;0;false;false;;;;;; -160230;7;0;false;false;0;0;0;;; -160237;1;0;false;false;;;;;; -160238;1;0;false;false;0;0;0;;; -160239;3;0;false;false;;;;;; -160242;3;1;false;false;127;0;85;;; -160245;1;0;false;false;;;;;; -160246;4;0;false;false;0;0;0;;; -160250;1;0;false;false;;;;;; -160251;1;0;false;false;0;0;0;;; -160252;1;0;false;false;;;;;; -160253;39;0;false;false;0;0;0;;; -160292;3;0;false;false;;;;;; -160295;3;1;false;false;127;0;85;;; -160298;1;0;false;false;;;;;; -160299;10;0;false;false;0;0;0;;; -160309;1;0;false;false;;;;;; -160310;1;0;false;false;0;0;0;;; -160311;1;0;false;false;;;;;; -160312;37;0;false;false;0;0;0;;; -160349;3;0;false;false;;;;;; -160352;6;0;false;false;0;0;0;;; -160358;1;0;false;false;;;;;; -160359;8;0;false;false;0;0;0;;; -160367;1;0;false;false;;;;;; -160368;1;0;false;false;0;0;0;;; -160369;1;0;false;false;;;;;; -160370;29;0;false;false;0;0;0;;; -160399;5;0;false;false;;;;;; -160404;2;1;false;false;127;0;85;;; -160406;1;0;false;false;;;;;; -160407;7;0;false;false;0;0;0;;; -160414;1;0;false;false;;;;;; -160415;2;0;false;false;0;0;0;;; -160417;1;0;false;false;;;;;; -160418;2;0;false;false;0;0;0;;; -160420;1;0;false;false;;;;;; -160421;1;0;false;false;0;0;0;;; -160422;4;0;false;false;;;;;; -160426;6;1;false;false;127;0;85;;; -160432;1;0;false;false;;;;;; -160433;7;0;false;false;0;0;0;;; -160440;3;0;false;false;;;;;; -160443;1;0;false;false;0;0;0;;; -160444;3;0;false;false;;;;;; -160447;2;1;false;false;127;0;85;;; -160449;1;0;false;false;;;;;; -160450;7;0;false;false;0;0;0;;; -160457;1;0;false;false;;;;;; -160458;2;0;false;false;0;0;0;;; -160460;1;0;false;false;;;;;; -160461;11;0;false;false;0;0;0;;; -160472;1;0;false;false;;;;;; -160473;1;0;false;false;0;0;0;;; -160474;4;0;false;false;;;;;; -160478;7;0;false;false;0;0;0;;; -160485;4;0;false;false;;;;;; -160489;8;0;false;false;0;0;0;;; -160497;1;0;false;false;;;;;; -160498;1;0;false;false;0;0;0;;; -160499;1;0;false;false;;;;;; -160500;29;0;false;false;0;0;0;;; -160529;4;0;false;false;;;;;; -160533;6;0;false;false;0;0;0;;; -160539;1;0;false;false;;;;;; -160540;1;0;false;false;0;0;0;;; -160541;1;0;false;false;;;;;; -160542;36;0;false;false;0;0;0;;; -160578;1;0;false;false;;;;;; -160579;1;0;false;false;0;0;0;;; -160580;1;0;false;false;;;;;; -160581;18;0;false;false;0;0;0;;; -160599;3;0;false;false;;;;;; -160602;1;0;false;false;0;0;0;;; -160603;3;0;false;false;;;;;; -160606;4;1;false;false;127;0;85;;; -160610;1;0;false;false;;;;;; -160611;1;0;false;false;0;0;0;;; -160612;4;0;false;false;;;;;; -160616;10;0;false;false;0;0;0;;; -160626;1;0;false;false;;;;;; -160627;6;0;false;false;0;0;0;;; -160633;1;0;false;false;;;;;; -160634;1;0;false;false;0;0;0;;; -160635;1;0;false;false;;;;;; -160636;32;0;false;false;0;0;0;;; -160668;1;0;false;false;;;;;; -160669;12;0;false;false;0;0;0;;; -160681;4;0;false;false;;;;;; -160685;6;0;false;false;0;0;0;;; -160691;1;0;false;false;;;;;; -160692;2;0;false;false;0;0;0;;; -160694;1;0;false;false;;;;;; -160695;11;0;false;false;0;0;0;;; -160706;4;0;false;false;;;;;; -160710;6;0;false;false;0;0;0;;; -160716;1;0;false;false;;;;;; -160717;1;0;false;false;0;0;0;;; -160718;1;0;false;false;;;;;; -160719;32;0;false;false;0;0;0;;; -160751;1;0;false;false;;;;;; -160752;19;0;false;false;0;0;0;;; -160771;4;0;false;false;;;;;; -160775;6;0;false;false;0;0;0;;; -160781;1;0;false;false;;;;;; -160782;2;0;false;false;0;0;0;;; -160784;1;0;false;false;;;;;; -160785;11;0;false;false;0;0;0;;; -160796;4;0;false;false;;;;;; -160800;35;0;false;false;0;0;0;;; -160835;4;0;false;false;;;;;; -160839;1;0;false;false;0;0;0;;; -160840;3;0;false;false;;;;;; -160843;6;1;false;false;127;0;85;;; -160849;1;0;false;false;;;;;; -160850;7;0;false;false;0;0;0;;; -160857;2;0;false;false;;;;;; -160859;1;0;false;false;0;0;0;;; -160860;2;0;false;false;;;;;; -160862;3;0;false;false;63;95;191;;; -160865;3;0;false;false;;;;;; -160868;1;0;false;false;63;95;191;;; -160869;1;0;false;false;;;;;; -160870;7;0;false;false;63;95;191;;; -160877;1;0;false;false;;;;;; -160878;7;0;false;false;63;95;191;;; -160885;1;0;false;false;;;;;; -160886;3;0;false;false;63;95;191;;; -160889;1;0;false;false;;;;;; -160890;6;0;false;false;63;95;191;;; -160896;1;0;false;false;;;;;; -160897;5;0;false;false;63;95;191;;; -160902;1;0;false;false;;;;;; -160903;6;0;false;false;63;95;191;;; -160909;3;0;false;false;;;;;; -160912;1;0;false;false;63;95;191;;; -160913;1;0;false;false;;;;;; -160914;3;0;false;false;127;127;159;;; -160917;3;0;false;false;;;;;; -160920;1;0;false;false;63;95;191;;; -160921;3;0;false;false;;;;;; -160924;1;0;false;false;63;95;191;;; -160925;1;0;false;false;;;;;; -160926;8;1;false;false;127;159;191;;; -160934;4;0;false;false;63;95;191;;; -160938;1;0;false;false;;;;;; -160939;2;0;false;false;63;95;191;;; -160941;1;0;false;false;;;;;; -160942;6;0;false;false;63;95;191;;; -160948;1;0;false;false;;;;;; -160949;5;0;false;false;63;95;191;;; -160954;1;0;false;false;;;;;; -160955;6;0;false;false;63;95;191;;; -160961;1;0;false;false;;;;;; -160962;5;0;false;false;63;95;191;;; -160967;1;0;false;false;;;;;; -160968;9;0;false;false;63;95;191;;; -160977;3;0;false;false;;;;;; -160980;1;0;false;false;63;95;191;;; -160981;1;0;false;false;;;;;; -160982;7;1;false;false;127;159;191;;; -160989;3;0;false;false;63;95;191;;; -160992;3;0;false;false;;;;;; -160995;2;0;false;false;63;95;191;;; -160997;2;0;false;false;;;;;; -160999;6;1;false;false;127;0;85;;; -161005;1;0;false;false;;;;;; -161006;7;1;false;false;127;0;85;;; -161013;1;0;false;false;;;;;; -161014;13;0;false;false;0;0;0;;; -161027;1;0;false;false;;;;;; -161028;1;0;false;false;0;0;0;;; -161029;3;0;false;false;;;;;; -161032;14;0;false;false;0;0;0;;; -161046;3;0;false;false;;;;;; -161049;6;1;false;false;127;0;85;;; -161055;1;0;false;false;;;;;; -161056;9;0;false;false;0;0;0;;; -161065;2;0;false;false;;;;;; -161067;1;0;false;false;0;0;0;;; -161068;2;0;false;false;;;;;; -161070;3;0;false;false;63;95;191;;; -161073;4;0;false;false;;;;;; -161077;1;0;false;false;63;95;191;;; -161078;1;0;false;false;;;;;; -161079;7;0;false;false;63;95;191;;; -161086;1;0;false;false;;;;;; -161087;3;0;false;false;63;95;191;;; -161090;1;0;false;false;;;;;; -161091;1;0;false;false;63;95;191;;; -161092;1;0;false;false;;;;;; -161093;8;0;false;false;63;95;191;;; -161101;1;0;false;false;;;;;; -161102;2;0;false;false;63;95;191;;; -161104;1;0;false;false;;;;;; -161105;3;0;false;false;63;95;191;;; -161108;1;0;false;false;;;;;; -161109;9;0;false;false;63;95;191;;; -161118;1;0;false;false;;;;;; -161119;2;0;false;false;63;95;191;;; -161121;1;0;false;false;;;;;; -161122;3;0;false;false;63;95;191;;; -161125;1;0;false;false;;;;;; -161126;4;0;false;false;63;95;191;;; -161130;1;0;false;false;;;;;; -161131;6;0;false;false;63;95;191;;; -161137;1;0;false;false;;;;;; -161138;2;0;false;false;63;95;191;;; -161140;1;0;false;false;;;;;; -161141;3;0;false;false;63;95;191;;; -161144;1;0;false;false;;;;;; -161145;5;0;false;false;63;95;191;;; -161150;3;0;false;false;;;;;; -161153;1;0;false;false;63;95;191;;; -161154;1;0;false;false;;;;;; -161155;3;0;false;false;127;127;159;;; -161158;5;0;false;false;63;95;191;;; -161163;4;0;false;false;127;127;159;;; -161167;1;0;false;false;;;;;; -161168;4;0;false;false;63;95;191;;; -161172;1;0;false;false;;;;;; -161173;3;0;false;false;63;95;191;;; -161176;1;0;false;false;;;;;; -161177;6;0;false;false;63;95;191;;; -161183;1;0;false;false;;;;;; -161184;7;0;false;false;63;95;191;;; -161191;1;0;false;false;;;;;; -161192;6;0;false;false;63;95;191;;; -161198;1;0;false;false;;;;;; -161199;3;0;false;false;63;95;191;;; -161202;1;0;false;false;;;;;; -161203;4;0;false;false;63;95;191;;; -161207;1;0;false;false;;;;;; -161208;6;0;false;false;63;95;191;;; -161214;1;0;false;false;;;;;; -161215;5;0;false;false;63;95;191;;; -161220;1;0;false;false;;;;;; -161221;4;0;false;false;63;95;191;;; -161225;1;0;false;false;;;;;; -161226;7;0;false;false;63;95;191;;; -161233;1;0;false;false;;;;;; -161234;7;0;false;false;63;95;191;;; -161241;3;0;false;false;;;;;; -161244;1;0;false;false;63;95;191;;; -161245;1;0;false;false;;;;;; -161246;3;0;false;false;127;127;159;;; -161249;3;0;false;false;;;;;; -161252;1;0;false;false;63;95;191;;; -161253;3;0;false;false;;;;;; -161256;1;0;false;false;63;95;191;;; -161257;1;0;false;false;;;;;; -161258;8;1;false;false;127;159;191;;; -161266;1;0;false;false;63;95;191;;; -161267;1;0;false;false;;;;;; -161268;8;0;false;false;63;95;191;;; -161276;1;0;false;false;;;;;; -161277;2;0;false;false;63;95;191;;; -161279;1;0;false;false;;;;;; -161280;3;0;false;false;63;95;191;;; -161283;1;0;false;false;;;;;; -161284;9;0;false;false;63;95;191;;; -161293;1;0;false;false;;;;;; -161294;2;0;false;false;63;95;191;;; -161296;1;0;false;false;;;;;; -161297;3;0;false;false;63;95;191;;; -161300;1;0;false;false;;;;;; -161301;5;0;false;false;63;95;191;;; -161306;1;0;false;false;;;;;; -161307;6;0;false;false;63;95;191;;; -161313;1;0;false;false;;;;;; -161314;2;0;false;false;63;95;191;;; -161316;1;0;false;false;;;;;; -161317;3;0;false;false;63;95;191;;; -161320;1;0;false;false;;;;;; -161321;5;0;false;false;63;95;191;;; -161326;3;0;false;false;;;;;; -161329;2;0;false;false;63;95;191;;; -161331;2;0;false;false;;;;;; -161333;3;1;false;false;127;0;85;;; -161336;1;0;false;false;;;;;; -161337;19;0;false;false;0;0;0;;; -161356;1;0;false;false;;;;;; -161357;5;0;false;false;0;0;0;;; -161362;1;0;false;false;;;;;; -161363;3;1;false;false;127;0;85;;; -161366;1;0;false;false;;;;;; -161367;10;0;false;false;0;0;0;;; -161377;1;0;false;false;;;;;; -161378;3;1;false;false;127;0;85;;; -161381;1;0;false;false;;;;;; -161382;13;0;false;false;0;0;0;;; -161395;1;0;false;false;;;;;; -161396;1;0;false;false;0;0;0;;; -161397;3;0;false;false;;;;;; -161400;3;1;false;false;127;0;85;;; -161403;1;0;false;false;;;;;; -161404;1;0;false;false;0;0;0;;; -161405;1;0;false;false;;;;;; -161406;1;0;false;false;0;0;0;;; -161407;1;0;false;false;;;;;; -161408;2;0;false;false;0;0;0;;; -161410;3;0;false;false;;;;;; -161413;3;1;false;false;127;0;85;;; -161416;1;0;false;false;;;;;; -161417;10;0;false;false;0;0;0;;; -161427;1;0;false;false;;;;;; -161428;1;0;false;false;0;0;0;;; -161429;1;0;false;false;;;;;; -161430;14;0;false;false;0;0;0;;; -161444;3;0;false;false;;;;;; -161447;2;1;false;false;127;0;85;;; -161449;1;0;false;false;;;;;; -161450;10;0;false;false;0;0;0;;; -161460;1;0;false;false;;;;;; -161461;1;0;false;false;0;0;0;;; -161462;1;0;false;false;;;;;; -161463;22;0;false;false;0;0;0;;; -161485;1;0;false;false;;;;;; -161486;1;0;false;false;0;0;0;;; -161487;1;0;false;false;;;;;; -161488;2;0;false;false;0;0;0;;; -161490;1;0;false;false;;;;;; -161491;1;0;false;false;0;0;0;;; -161492;4;0;false;false;;;;;; -161496;3;1;false;false;127;0;85;;; -161499;1;0;false;false;;;;;; -161500;13;0;false;false;0;0;0;;; -161513;1;0;false;false;;;;;; -161514;1;0;false;false;0;0;0;;; -161515;1;0;false;false;;;;;; -161516;33;0;false;false;0;0;0;;; -161549;1;0;false;false;;;;;; -161550;1;0;false;false;0;0;0;;; -161551;1;0;false;false;;;;;; -161552;2;0;false;false;0;0;0;;; -161554;1;0;false;false;;;;;; -161555;1;0;false;false;0;0;0;;; -161556;1;0;false;false;;;;;; -161557;2;0;false;false;0;0;0;;; -161559;4;0;false;false;;;;;; -161563;2;1;false;false;127;0;85;;; -161565;1;0;false;false;;;;;; -161566;11;0;false;false;0;0;0;;; -161577;1;0;false;false;;;;;; -161578;1;0;false;false;0;0;0;;; -161579;1;0;false;false;;;;;; -161580;12;0;false;false;0;0;0;;; -161592;1;0;false;false;;;;;; -161593;2;0;false;false;0;0;0;;; -161595;1;0;false;false;;;;;; -161596;12;0;false;false;0;0;0;;; -161608;1;0;false;false;;;;;; -161609;2;0;false;false;0;0;0;;; -161611;1;0;false;false;;;;;; -161612;14;0;false;false;0;0;0;;; -161626;1;0;false;false;;;;;; -161627;1;0;false;false;0;0;0;;; -161628;5;0;false;false;;;;;; -161633;12;0;false;false;0;0;0;;; -161645;1;0;false;false;;;;;; -161646;1;0;false;false;0;0;0;;; -161647;1;0;false;false;;;;;; -161648;11;0;false;false;0;0;0;;; -161659;4;0;false;false;;;;;; -161663;1;0;false;false;0;0;0;;; -161664;3;0;false;false;;;;;; -161667;1;0;false;false;0;0;0;;; -161668;3;0;false;false;;;;;; -161671;2;1;false;false;127;0;85;;; -161673;1;0;false;false;;;;;; -161674;11;0;false;false;0;0;0;;; -161685;1;0;false;false;;;;;; -161686;2;0;false;false;0;0;0;;; -161688;1;0;false;false;;;;;; -161689;1;0;false;false;0;0;0;;; -161690;2;0;false;false;;;;;; -161692;2;0;false;false;0;0;0;;; -161694;1;0;false;false;;;;;; -161695;12;0;false;false;0;0;0;;; -161707;1;0;false;false;;;;;; -161708;2;0;false;false;0;0;0;;; -161710;1;0;false;false;;;;;; -161711;11;0;false;false;0;0;0;;; -161722;1;0;false;false;;;;;; -161723;1;0;false;false;0;0;0;;; -161724;4;0;false;false;;;;;; -161728;3;1;false;false;127;0;85;;; -161731;1;0;false;false;;;;;; -161732;10;0;false;false;0;0;0;;; -161742;1;0;false;false;;;;;; -161743;1;0;false;false;0;0;0;;; -161744;1;0;false;false;;;;;; -161745;35;0;false;false;0;0;0;;; -161780;4;0;false;false;;;;;; -161784;10;0;false;false;0;0;0;;; -161794;1;0;false;false;;;;;; -161795;6;0;false;false;0;0;0;;; -161801;1;0;false;false;;;;;; -161802;1;0;false;false;0;0;0;;; -161803;1;0;false;false;;;;;; -161804;28;0;false;false;0;0;0;;; -161832;1;0;false;false;;;;;; -161833;12;0;false;false;0;0;0;;; -161845;4;0;false;false;;;;;; -161849;2;1;false;false;127;0;85;;; -161851;1;0;false;false;;;;;; -161852;11;0;false;false;0;0;0;;; -161863;1;0;false;false;;;;;; -161864;2;0;false;false;0;0;0;;; -161866;1;0;false;false;;;;;; -161867;12;0;false;false;0;0;0;;; -161879;1;0;false;false;;;;;; -161880;2;0;false;false;0;0;0;;; -161882;1;0;false;false;;;;;; -161883;2;0;false;false;0;0;0;;; -161885;1;0;false;false;;;;;; -161886;1;0;false;false;0;0;0;;; -161887;5;0;false;false;;;;;; -161892;1;0;false;false;0;0;0;;; -161893;1;0;false;false;;;;;; -161894;1;0;false;false;0;0;0;;; -161895;1;0;false;false;;;;;; -161896;32;0;false;false;0;0;0;;; -161928;1;0;false;false;;;;;; -161929;5;1;false;false;127;0;85;;; -161934;4;0;false;false;0;0;0;;; -161938;4;0;false;false;;;;;; -161942;1;0;false;false;0;0;0;;; -161943;1;0;false;false;;;;;; -161944;4;1;false;false;127;0;85;;; -161948;1;0;false;false;;;;;; -161949;1;0;false;false;0;0;0;;; -161950;5;0;false;false;;;;;; -161955;1;0;false;false;0;0;0;;; -161956;1;0;false;false;;;;;; -161957;1;0;false;false;0;0;0;;; -161958;1;0;false;false;;;;;; -161959;31;0;false;false;0;0;0;;; -161990;1;0;false;false;;;;;; -161991;1;0;false;false;0;0;0;;; -161992;1;0;false;false;;;;;; -161993;2;0;false;false;0;0;0;;; -161995;1;0;false;false;;;;;; -161996;4;1;false;false;127;0;85;;; -162000;4;0;false;false;0;0;0;;; -162004;4;0;false;false;;;;;; -162008;1;0;false;false;0;0;0;;; -162009;4;0;false;false;;;;;; -162013;35;0;false;false;0;0;0;;; -162048;3;0;false;false;;;;;; -162051;1;0;false;false;0;0;0;;; -162052;3;0;false;false;;;;;; -162055;6;1;false;false;127;0;85;;; -162061;1;0;false;false;;;;;; -162062;1;0;false;false;0;0;0;;; -162063;1;0;false;false;;;;;; -162064;1;0;false;false;0;0;0;;; -162065;1;0;false;false;;;;;; -162066;10;0;false;false;0;0;0;;; -162076;1;0;false;false;;;;;; -162077;1;0;false;false;0;0;0;;; -162078;1;0;false;false;;;;;; -162079;23;0;false;false;0;0;0;;; -162102;2;0;false;false;;;;;; -162104;1;0;false;false;0;0;0;;; -162105;2;0;false;false;;;;;; -162107;3;0;false;false;63;95;191;;; -162110;4;0;false;false;;;;;; -162114;1;0;false;false;63;95;191;;; -162115;1;0;false;false;;;;;; -162116;7;0;false;false;63;95;191;;; -162123;1;0;false;false;;;;;; -162124;1;0;false;false;63;95;191;;; -162125;1;0;false;false;;;;;; -162126;7;0;false;false;63;95;191;;; -162133;2;0;false;false;;;;;; -162135;3;0;false;false;63;95;191;;; -162138;1;0;false;false;;;;;; -162139;3;0;false;false;63;95;191;;; -162142;1;0;false;false;;;;;; -162143;9;0;false;false;63;95;191;;; -162152;1;0;false;false;;;;;; -162153;2;0;false;false;63;95;191;;; -162155;1;0;false;false;;;;;; -162156;8;0;false;false;63;95;191;;; -162164;1;0;false;false;;;;;; -162165;4;0;false;false;63;95;191;;; -162169;1;0;false;false;;;;;; -162170;3;0;false;false;63;95;191;;; -162173;1;0;false;false;;;;;; -162174;3;0;false;false;63;95;191;;; -162177;1;0;false;false;;;;;; -162178;5;0;false;false;63;95;191;;; -162183;5;0;false;false;;;;;; -162188;1;0;false;false;63;95;191;;; -162189;1;0;false;false;;;;;; -162190;3;0;false;false;127;127;159;;; -162193;3;0;false;false;;;;;; -162196;1;0;false;false;63;95;191;;; -162197;3;0;false;false;;;;;; -162200;1;0;false;false;63;95;191;;; -162201;1;0;false;false;;;;;; -162202;7;1;false;false;127;159;191;;; -162209;6;0;false;false;63;95;191;;; -162215;1;0;false;false;;;;;; -162216;3;0;false;false;63;95;191;;; -162219;1;0;false;false;;;;;; -162220;6;0;false;false;63;95;191;;; -162226;3;0;false;false;;;;;; -162229;1;0;false;false;63;95;191;;; -162230;1;0;false;false;;;;;; -162231;5;1;false;false;127;159;191;;; -162236;33;0;false;false;63;95;191;;; -162269;3;0;false;false;;;;;; -162272;1;0;false;false;63;95;191;;; -162273;1;0;false;false;;;;;; -162274;11;1;false;false;127;159;191;;; -162285;12;0;false;false;63;95;191;;; -162297;1;0;false;false;;;;;; -162298;4;0;false;false;127;127;159;;; -162302;3;0;false;false;;;;;; -162305;1;0;false;false;63;95;191;;; -162306;4;0;false;false;;;;;; -162310;4;0;false;false;127;127;159;;; -162314;21;0;false;false;63;95;191;;; -162335;1;0;false;false;;;;;; -162336;1;0;false;false;127;127;159;;; -162337;1;0;false;false;;;;;; -162338;2;0;false;false;63;95;191;;; -162340;1;0;false;false;;;;;; -162341;3;0;false;false;63;95;191;;; -162344;1;0;false;false;;;;;; -162345;8;0;false;false;63;95;191;;; -162353;1;0;false;false;;;;;; -162354;3;0;false;false;63;95;191;;; -162357;1;0;false;false;;;;;; -162358;4;0;false;false;63;95;191;;; -162362;1;0;false;false;;;;;; -162363;8;0;false;false;63;95;191;;; -162371;5;0;false;false;127;127;159;;; -162376;3;0;false;false;;;;;; -162379;1;0;false;false;63;95;191;;; -162380;4;0;false;false;;;;;; -162384;4;0;false;false;127;127;159;;; -162388;27;0;false;false;63;95;191;;; -162415;1;0;false;false;;;;;; -162416;1;0;false;false;127;127;159;;; -162417;1;0;false;false;;;;;; -162418;2;0;false;false;63;95;191;;; -162420;1;0;false;false;;;;;; -162421;3;0;false;false;63;95;191;;; -162424;1;0;false;false;;;;;; -162425;6;0;false;false;63;95;191;;; -162431;1;0;false;false;;;;;; -162432;4;0;false;false;63;95;191;;; -162436;1;0;false;false;;;;;; -162437;3;0;false;false;63;95;191;;; -162440;1;0;false;false;;;;;; -162441;6;0;false;false;63;95;191;;; -162447;1;0;false;false;;;;;; -162448;4;0;false;false;63;95;191;;; -162452;1;0;false;false;;;;;; -162453;7;0;false;false;63;95;191;;; -162460;1;0;false;false;;;;;; -162461;3;0;false;false;63;95;191;;; -162464;1;0;false;false;;;;;; -162465;8;0;false;false;63;95;191;;; -162473;5;0;false;false;127;127;159;;; -162478;3;0;false;false;;;;;; -162481;1;0;false;false;63;95;191;;; -162482;1;0;false;false;;;;;; -162483;5;0;false;false;127;127;159;;; -162488;3;0;false;false;;;;;; -162491;1;0;false;false;63;95;191;;; -162492;1;0;false;false;;;;;; -162493;11;1;false;false;127;159;191;;; -162504;24;0;false;false;63;95;191;;; -162528;1;0;false;false;;;;;; -162529;4;0;false;false;127;127;159;;; -162533;3;0;false;false;;;;;; -162536;1;0;false;false;63;95;191;;; -162537;4;0;false;false;;;;;; -162541;4;0;false;false;127;127;159;;; -162545;19;0;false;false;63;95;191;;; -162564;1;0;false;false;;;;;; -162565;4;0;false;false;63;95;191;;; -162569;1;0;false;false;;;;;; -162570;6;0;false;false;63;95;191;;; -162576;1;0;false;false;;;;;; -162577;2;0;false;false;63;95;191;;; -162579;1;0;false;false;;;;;; -162580;4;0;false;false;63;95;191;;; -162584;5;0;false;false;127;127;159;;; -162589;3;0;false;false;;;;;; -162592;1;0;false;false;63;95;191;;; -162593;1;0;false;false;;;;;; -162594;5;0;false;false;127;127;159;;; -162599;3;0;false;false;;;;;; -162602;2;0;false;false;63;95;191;;; -162604;2;0;false;false;;;;;; -162606;6;1;false;false;127;0;85;;; -162612;1;0;false;false;;;;;; -162613;4;1;false;false;127;0;85;;; -162617;1;0;false;false;;;;;; -162618;13;0;false;false;0;0;0;;; -162631;1;0;false;false;;;;;; -162632;7;0;false;false;0;0;0;;; -162639;1;0;false;false;;;;;; -162640;1;0;false;false;0;0;0;;; -162641;3;0;false;false;;;;;; -162644;14;0;false;false;0;0;0;;; -162658;3;0;false;false;;;;;; -162661;2;1;false;false;127;0;85;;; -162663;1;0;false;false;;;;;; -162664;7;0;false;false;0;0;0;;; -162671;1;0;false;false;;;;;; -162672;2;0;false;false;0;0;0;;; -162674;1;0;false;false;;;;;; -162675;4;1;false;false;127;0;85;;; -162679;1;0;false;false;0;0;0;;; -162680;1;0;false;false;;;;;; -162681;1;0;false;false;0;0;0;;; -162682;4;0;false;false;;;;;; -162686;35;0;false;false;0;0;0;;; -162721;3;0;false;false;;;;;; -162724;1;0;false;false;0;0;0;;; -162725;3;0;false;false;;;;;; -162728;5;0;false;false;0;0;0;;; -162733;1;0;false;false;;;;;; -162734;3;0;false;false;0;0;0;;; -162737;1;0;false;false;;;;;; -162738;1;0;false;false;0;0;0;;; -162739;1;0;false;false;;;;;; -162740;20;0;false;false;0;0;0;;; -162760;3;0;false;false;;;;;; -162763;23;0;false;false;0;0;0;;; -162786;1;0;false;false;;;;;; -162787;6;0;false;false;0;0;0;;; -162793;1;0;false;false;;;;;; -162794;8;0;false;false;0;0;0;;; -162802;2;0;false;false;;;;;; -162804;1;0;false;false;0;0;0;;; -162805;2;0;false;false;;;;;; -162807;3;0;false;false;63;95;191;;; -162810;3;0;false;false;;;;;; -162813;1;0;false;false;63;95;191;;; -162814;1;0;false;false;;;;;; -162815;7;0;false;false;63;95;191;;; -162822;1;0;false;false;;;;;; -162823;7;0;false;false;63;95;191;;; -162830;1;0;false;false;;;;;; -162831;6;0;false;false;63;95;191;;; -162837;1;0;false;false;;;;;; -162838;9;0;false;false;63;95;191;;; -162847;1;0;false;false;;;;;; -162848;3;0;false;false;63;95;191;;; -162851;1;0;false;false;;;;;; -162852;3;0;false;false;63;95;191;;; -162855;1;0;false;false;;;;;; -162856;3;0;false;false;63;95;191;;; -162859;1;0;false;false;;;;;; -162860;7;0;false;false;63;95;191;;; -162867;1;0;false;false;;;;;; -162868;7;0;false;false;63;95;191;;; -162875;1;0;false;false;;;;;; -162876;6;0;false;false;63;95;191;;; -162882;3;0;false;false;;;;;; -162885;2;0;false;false;63;95;191;;; -162887;2;0;false;false;;;;;; -162889;4;1;false;false;127;0;85;;; -162893;1;0;false;false;;;;;; -162894;23;0;false;false;0;0;0;;; -162917;1;0;false;false;;;;;; -162918;1;0;false;false;0;0;0;;; -162919;3;0;false;false;;;;;; -162922;18;0;false;false;0;0;0;;; -162940;1;0;false;false;;;;;; -162941;1;0;false;false;0;0;0;;; -162942;1;0;false;false;;;;;; -162943;3;1;false;false;127;0;85;;; -162946;1;0;false;false;;;;;; -162947;20;0;false;false;0;0;0;;; -162967;1;0;false;false;;;;;; -162968;1;0;false;false;0;0;0;;; -162969;4;0;false;false;;;;;; -162973;6;1;false;false;127;0;85;;; -162979;1;0;false;false;;;;;; -162980;4;1;false;false;127;0;85;;; -162984;1;0;false;false;;;;;; -162985;30;0;false;false;0;0;0;;; -163015;1;0;false;false;;;;;; -163016;6;0;false;false;0;0;0;;; -163022;1;0;false;false;;;;;; -163023;1;0;false;false;0;0;0;;; -163024;5;0;false;false;;;;;; -163029;26;0;false;false;0;0;0;;; -163055;4;0;false;false;;;;;; -163059;1;0;false;false;0;0;0;;; -163060;4;0;false;false;;;;;; -163064;6;1;false;false;127;0;85;;; -163070;1;0;false;false;;;;;; -163071;4;1;false;false;127;0;85;;; -163075;1;0;false;false;;;;;; -163076;28;0;false;false;0;0;0;;; -163104;1;0;false;false;;;;;; -163105;6;0;false;false;0;0;0;;; -163111;1;0;false;false;;;;;; -163112;1;0;false;false;0;0;0;;; -163113;5;0;false;false;;;;;; -163118;25;0;false;false;0;0;0;;; -163143;4;0;false;false;;;;;; -163147;1;0;false;false;0;0;0;;; -163148;4;0;false;false;;;;;; -163152;6;1;false;false;127;0;85;;; -163158;1;0;false;false;;;;;; -163159;4;1;false;false;127;0;85;;; -163163;1;0;false;false;;;;;; -163164;24;0;false;false;0;0;0;;; -163188;1;0;false;false;;;;;; -163189;6;0;false;false;0;0;0;;; -163195;1;0;false;false;;;;;; -163196;1;0;false;false;0;0;0;;; -163197;5;0;false;false;;;;;; -163202;21;0;false;false;0;0;0;;; -163223;4;0;false;false;;;;;; -163227;1;0;false;false;0;0;0;;; -163228;3;0;false;false;;;;;; -163231;2;0;false;false;0;0;0;;; -163233;3;0;false;false;;;;;; -163236;14;0;false;false;0;0;0;;; -163250;1;0;false;false;;;;;; -163251;1;0;false;false;0;0;0;;; -163252;1;0;false;false;;;;;; -163253;7;0;false;false;0;0;0;;; -163260;1;0;false;false;;;;;; -163261;1;0;false;false;0;0;0;;; -163262;1;0;false;false;;;;;; -163263;3;1;false;false;127;0;85;;; -163266;1;0;false;false;;;;;; -163267;17;0;false;false;0;0;0;;; -163284;3;0;false;false;;;;;; -163287;50;0;false;false;0;0;0;;; -163337;2;0;false;false;;;;;; -163339;1;0;false;false;0;0;0;;; -163340;2;0;false;false;;;;;; -163342;3;0;false;false;63;95;191;;; -163345;3;0;false;false;;;;;; -163348;1;0;false;false;63;95;191;;; -163349;1;0;false;false;;;;;; -163350;7;0;false;false;63;95;191;;; -163357;1;0;false;false;;;;;; -163358;1;0;false;false;63;95;191;;; -163359;1;0;false;false;;;;;; -163360;7;0;false;false;63;95;191;;; -163367;1;0;false;false;;;;;; -163368;4;0;false;false;63;95;191;;; -163372;1;0;false;false;;;;;; -163373;5;0;false;false;63;95;191;;; -163378;1;0;false;false;;;;;; -163379;9;0;false;false;63;95;191;;; -163388;3;0;false;false;;;;;; -163391;1;0;false;false;63;95;191;;; -163392;1;0;false;false;;;;;; -163393;4;0;false;false;63;95;191;;; -163397;1;0;false;false;;;;;; -163398;2;0;false;false;63;95;191;;; -163400;1;0;false;false;;;;;; -163401;5;0;false;false;63;95;191;;; -163406;1;0;false;false;;;;;; -163407;4;0;false;false;63;95;191;;; -163411;1;0;false;false;;;;;; -163412;10;0;false;false;63;95;191;;; -163422;1;0;false;false;;;;;; -163423;6;0;false;false;63;95;191;;; -163429;1;0;false;false;;;;;; -163430;3;0;false;false;63;95;191;;; -163433;1;0;false;false;;;;;; -163434;7;0;false;false;63;95;191;;; -163441;3;0;false;false;;;;;; -163444;1;0;false;false;63;95;191;;; -163445;1;0;false;false;;;;;; -163446;7;0;false;false;63;95;191;;; -163453;1;0;false;false;;;;;; -163454;4;0;false;false;63;95;191;;; -163458;1;0;false;false;;;;;; -163459;3;0;false;false;63;95;191;;; -163462;1;0;false;false;;;;;; -163463;4;0;false;false;63;95;191;;; -163467;1;0;false;false;;;;;; -163468;4;0;false;false;63;95;191;;; -163472;1;0;false;false;;;;;; -163473;1;0;false;false;63;95;191;;; -163474;1;0;false;false;;;;;; -163475;18;0;false;false;63;95;191;;; -163493;3;0;false;false;;;;;; -163496;1;0;false;false;63;95;191;;; -163497;1;0;false;false;;;;;; -163498;3;0;false;false;127;127;159;;; -163501;3;0;false;false;;;;;; -163504;1;0;false;false;63;95;191;;; -163505;3;0;false;false;;;;;; -163508;1;0;false;false;63;95;191;;; -163509;1;0;false;false;;;;;; -163510;5;1;false;false;127;159;191;;; -163515;21;0;false;false;63;95;191;;; -163536;3;0;false;false;;;;;; -163539;2;0;false;false;63;95;191;;; -163541;2;0;false;false;;;;;; -163543;4;1;false;false;127;0;85;;; -163547;1;0;false;false;;;;;; -163548;26;0;false;false;0;0;0;;; -163574;1;0;false;false;;;;;; -163575;1;0;false;false;0;0;0;;; -163576;3;0;false;false;;;;;; -163579;17;0;false;false;0;0;0;;; -163596;1;0;false;false;;;;;; -163597;1;0;false;false;0;0;0;;; -163598;1;0;false;false;;;;;; -163599;3;1;false;false;127;0;85;;; -163602;1;0;false;false;;;;;; -163603;34;0;false;false;0;0;0;;; -163637;3;0;false;false;;;;;; -163640;18;0;false;false;0;0;0;;; -163658;1;0;false;false;;;;;; -163659;13;0;false;false;0;0;0;;; -163672;1;0;false;false;;;;;; -163673;1;0;false;false;0;0;0;;; -163674;1;0;false;false;;;;;; -163675;3;1;false;false;127;0;85;;; -163678;1;0;false;false;;;;;; -163679;38;0;false;false;0;0;0;;; -163717;3;0;false;false;;;;;; -163720;2;1;false;false;127;0;85;;; -163722;1;0;false;false;;;;;; -163723;16;0;false;false;0;0;0;;; -163739;1;0;false;false;;;;;; -163740;1;0;false;false;0;0;0;;; -163741;4;0;false;false;;;;;; -163745;25;0;false;false;0;0;0;;; -163770;1;0;false;false;;;;;; -163771;15;0;false;false;0;0;0;;; -163786;3;0;false;false;;;;;; -163789;1;0;false;false;0;0;0;;; -163790;3;0;false;false;;;;;; -163793;2;1;false;false;127;0;85;;; -163795;1;0;false;false;;;;;; -163796;21;0;false;false;0;0;0;;; -163817;1;0;false;false;;;;;; -163818;1;0;false;false;0;0;0;;; -163819;4;0;false;false;;;;;; -163823;30;0;false;false;0;0;0;;; -163853;1;0;false;false;;;;;; -163854;15;0;false;false;0;0;0;;; -163869;3;0;false;false;;;;;; -163872;1;0;false;false;0;0;0;;; -163873;2;0;false;false;;;;;; -163875;1;0;false;false;0;0;0;;; -163876;2;0;false;false;;;;;; -163878;3;0;false;false;63;95;191;;; -163881;4;0;false;false;;;;;; -163885;1;0;false;false;63;95;191;;; -163886;1;0;false;false;;;;;; -163887;4;0;false;false;63;95;191;;; -163891;1;0;false;false;;;;;; -163892;5;0;false;false;63;95;191;;; -163897;1;0;false;false;;;;;; -163898;9;0;false;false;63;95;191;;; -163907;3;0;false;false;;;;;; -163910;2;0;false;false;63;95;191;;; -163912;2;0;false;false;;;;;; -163914;4;1;false;false;127;0;85;;; -163918;1;0;false;false;;;;;; -163919;18;0;false;false;0;0;0;;; -163937;1;0;false;false;;;;;; -163938;1;0;false;false;0;0;0;;; -163939;3;0;false;false;;;;;; -163942;9;0;false;false;0;0;0;;; -163951;1;0;false;false;;;;;; -163952;11;0;false;false;0;0;0;;; -163963;1;0;false;false;;;;;; -163964;1;0;false;false;0;0;0;;; -163965;1;0;false;false;;;;;; -163966;17;0;false;false;0;0;0;;; -163983;3;0;false;false;;;;;; -163986;9;0;false;false;0;0;0;;; -163995;1;0;false;false;;;;;; -163996;13;0;false;false;0;0;0;;; -164009;1;0;false;false;;;;;; -164010;1;0;false;false;0;0;0;;; -164011;1;0;false;false;;;;;; -164012;19;0;false;false;0;0;0;;; -164031;6;0;false;false;;;;;; -164037;8;0;false;false;0;0;0;;; -164045;1;0;false;false;;;;;; -164046;1;0;false;false;0;0;0;;; -164047;1;0;false;false;;;;;; -164048;3;1;false;false;127;0;85;;; -164051;1;0;false;false;;;;;; -164052;10;0;false;false;0;0;0;;; -164062;1;0;false;false;;;;;; -164063;1;0;false;false;0;0;0;;; -164064;4;0;false;false;;;;;; -164068;6;1;false;false;127;0;85;;; -164074;1;0;false;false;;;;;; -164075;4;1;false;false;127;0;85;;; -164079;1;0;false;false;;;;;; -164080;17;0;false;false;0;0;0;;; -164097;1;0;false;false;;;;;; -164098;6;0;false;false;0;0;0;;; -164104;1;0;false;false;;;;;; -164105;1;0;false;false;0;0;0;;; -164106;5;0;false;false;;;;;; -164111;6;1;false;false;127;0;85;;; -164117;1;0;false;false;;;;;; -164118;12;0;false;false;0;0;0;;; -164130;1;0;false;false;;;;;; -164131;1;0;false;false;0;0;0;;; -164132;6;0;false;false;;;;;; -164138;4;1;false;false;127;0;85;;; -164142;1;0;false;false;;;;;; -164143;12;0;false;false;0;0;0;;; -164155;1;0;false;false;;;;;; -164156;21;0;false;false;0;0;0;;; -164177;1;0;false;false;;;;;; -164178;5;1;false;false;127;0;85;;; -164183;1;0;false;false;0;0;0;;; -164184;6;0;false;false;;;;;; -164190;4;1;false;false;127;0;85;;; -164194;1;0;false;false;;;;;; -164195;12;0;false;false;0;0;0;;; -164207;1;0;false;false;;;;;; -164208;21;0;false;false;0;0;0;;; -164229;1;0;false;false;;;;;; -164230;5;1;false;false;127;0;85;;; -164235;1;0;false;false;0;0;0;;; -164236;6;0;false;false;;;;;; -164242;4;1;false;false;127;0;85;;; -164246;1;0;false;false;;;;;; -164247;10;0;false;false;0;0;0;;; -164257;1;0;false;false;;;;;; -164258;19;0;false;false;0;0;0;;; -164277;1;0;false;false;;;;;; -164278;5;1;false;false;127;0;85;;; -164283;1;0;false;false;0;0;0;;; -164284;6;0;false;false;;;;;; -164290;4;1;false;false;127;0;85;;; -164294;1;0;false;false;;;;;; -164295;14;0;false;false;0;0;0;;; -164309;1;0;false;false;;;;;; -164310;23;0;false;false;0;0;0;;; -164333;1;0;false;false;;;;;; -164334;5;1;false;false;127;0;85;;; -164339;1;0;false;false;0;0;0;;; -164340;6;0;false;false;;;;;; -164346;4;1;false;false;127;0;85;;; -164350;1;0;false;false;;;;;; -164351;12;0;false;false;0;0;0;;; -164363;1;0;false;false;;;;;; -164364;21;0;false;false;0;0;0;;; -164385;1;0;false;false;;;;;; -164386;5;1;false;false;127;0;85;;; -164391;1;0;false;false;0;0;0;;; -164392;6;0;false;false;;;;;; -164398;4;1;false;false;127;0;85;;; -164402;1;0;false;false;;;;;; -164403;21;0;false;false;0;0;0;;; -164424;1;0;false;false;;;;;; -164425;30;0;false;false;0;0;0;;; -164455;1;0;false;false;;;;;; -164456;5;1;false;false;127;0;85;;; -164461;1;0;false;false;0;0;0;;; -164462;6;0;false;false;;;;;; -164468;4;1;false;false;127;0;85;;; -164472;1;0;false;false;;;;;; -164473;14;0;false;false;0;0;0;;; -164487;1;0;false;false;;;;;; -164488;23;0;false;false;0;0;0;;; -164511;1;0;false;false;;;;;; -164512;5;1;false;false;127;0;85;;; -164517;1;0;false;false;0;0;0;;; -164518;6;0;false;false;;;;;; -164524;4;1;false;false;127;0;85;;; -164528;1;0;false;false;;;;;; -164529;10;0;false;false;0;0;0;;; -164539;1;0;false;false;;;;;; -164540;19;0;false;false;0;0;0;;; -164559;1;0;false;false;;;;;; -164560;5;1;false;false;127;0;85;;; -164565;1;0;false;false;0;0;0;;; -164566;6;0;false;false;;;;;; -164572;4;1;false;false;127;0;85;;; -164576;1;0;false;false;;;;;; -164577;11;0;false;false;0;0;0;;; -164588;1;0;false;false;;;;;; -164589;20;0;false;false;0;0;0;;; -164609;1;0;false;false;;;;;; -164610;5;1;false;false;127;0;85;;; -164615;1;0;false;false;0;0;0;;; -164616;6;0;false;false;;;;;; -164622;4;1;false;false;127;0;85;;; -164626;1;0;false;false;;;;;; -164627;13;0;false;false;0;0;0;;; -164640;1;0;false;false;;;;;; -164641;22;0;false;false;0;0;0;;; -164663;1;0;false;false;;;;;; -164664;5;1;false;false;127;0;85;;; -164669;1;0;false;false;0;0;0;;; -164670;5;0;false;false;;;;;; -164675;1;0;false;false;0;0;0;;; -164676;4;0;false;false;;;;;; -164680;1;0;false;false;0;0;0;;; -164681;5;0;false;false;;;;;; -164686;2;0;false;false;0;0;0;;; -164688;3;0;false;false;;;;;; -164691;24;0;false;false;0;0;0;;; -164715;1;0;false;false;;;;;; -164716;10;0;false;false;0;0;0;;; -164726;3;0;false;false;;;;;; -164729;24;0;false;false;0;0;0;;; -164753;1;0;false;false;;;;;; -164754;10;0;false;false;0;0;0;;; -164764;3;0;false;false;;;;;; -164767;22;0;false;false;0;0;0;;; -164789;1;0;false;false;;;;;; -164790;10;0;false;false;0;0;0;;; -164800;3;0;false;false;;;;;; -164803;26;0;false;false;0;0;0;;; -164829;1;0;false;false;;;;;; -164830;10;0;false;false;0;0;0;;; -164840;3;0;false;false;;;;;; -164843;24;0;false;false;0;0;0;;; -164867;1;0;false;false;;;;;; -164868;10;0;false;false;0;0;0;;; -164878;3;0;false;false;;;;;; -164881;33;0;false;false;0;0;0;;; -164914;1;0;false;false;;;;;; -164915;10;0;false;false;0;0;0;;; -164925;3;0;false;false;;;;;; -164928;26;0;false;false;0;0;0;;; -164954;1;0;false;false;;;;;; -164955;10;0;false;false;0;0;0;;; -164965;3;0;false;false;;;;;; -164968;22;0;false;false;0;0;0;;; -164990;1;0;false;false;;;;;; -164991;10;0;false;false;0;0;0;;; -165001;3;0;false;false;;;;;; -165004;23;0;false;false;0;0;0;;; -165027;1;0;false;false;;;;;; -165028;10;0;false;false;0;0;0;;; -165038;3;0;false;false;;;;;; -165041;25;0;false;false;0;0;0;;; -165066;1;0;false;false;;;;;; -165067;10;0;false;false;0;0;0;;; -165077;3;0;false;false;;;;;; -165080;2;1;false;false;127;0;85;;; -165082;1;0;false;false;;;;;; -165083;12;0;false;false;0;0;0;;; -165095;1;0;false;false;;;;;; -165096;2;0;false;false;0;0;0;;; -165098;1;0;false;false;;;;;; -165099;4;1;false;false;127;0;85;;; -165103;1;0;false;false;0;0;0;;; -165104;1;0;false;false;;;;;; -165105;1;0;false;false;0;0;0;;; -165106;4;0;false;false;;;;;; -165110;38;0;false;false;0;0;0;;; -165148;1;0;false;false;;;;;; -165149;3;1;false;false;127;0;85;;; -165152;1;0;false;false;;;;;; -165153;10;0;false;false;0;0;0;;; -165163;1;0;false;false;;;;;; -165164;1;0;false;false;0;0;0;;; -165165;5;0;false;false;;;;;; -165170;6;1;false;false;127;0;85;;; -165176;1;0;false;false;;;;;; -165177;4;1;false;false;127;0;85;;; -165181;1;0;false;false;;;;;; -165182;17;0;false;false;0;0;0;;; -165199;1;0;false;false;;;;;; -165200;6;0;false;false;0;0;0;;; -165206;1;0;false;false;;;;;; -165207;1;0;false;false;0;0;0;;; -165208;6;0;false;false;;;;;; -165214;28;0;false;false;0;0;0;;; -165242;5;0;false;false;;;;;; -165247;1;0;false;false;0;0;0;;; -165248;4;0;false;false;;;;;; -165252;3;0;false;false;0;0;0;;; -165255;3;0;false;false;;;;;; -165258;1;0;false;false;0;0;0;;; -165259;3;0;false;false;;;;;; -165262;2;1;false;false;127;0;85;;; -165264;1;0;false;false;;;;;; -165265;14;0;false;false;0;0;0;;; -165279;1;0;false;false;;;;;; -165280;2;0;false;false;0;0;0;;; -165282;1;0;false;false;;;;;; -165283;4;1;false;false;127;0;85;;; -165287;1;0;false;false;0;0;0;;; -165288;1;0;false;false;;;;;; -165289;1;0;false;false;0;0;0;;; -165290;4;0;false;false;;;;;; -165294;40;0;false;false;0;0;0;;; -165334;1;0;false;false;;;;;; -165335;3;1;false;false;127;0;85;;; -165338;1;0;false;false;;;;;; -165339;10;0;false;false;0;0;0;;; -165349;1;0;false;false;;;;;; -165350;1;0;false;false;0;0;0;;; -165351;5;0;false;false;;;;;; -165356;6;1;false;false;127;0;85;;; -165362;1;0;false;false;;;;;; -165363;4;1;false;false;127;0;85;;; -165367;1;0;false;false;;;;;; -165368;17;0;false;false;0;0;0;;; -165385;1;0;false;false;;;;;; -165386;6;0;false;false;0;0;0;;; -165392;1;0;false;false;;;;;; -165393;1;0;false;false;0;0;0;;; -165394;6;0;false;false;;;;;; -165400;30;0;false;false;0;0;0;;; -165430;5;0;false;false;;;;;; -165435;1;0;false;false;0;0;0;;; -165436;4;0;false;false;;;;;; -165440;3;0;false;false;0;0;0;;; -165443;3;0;false;false;;;;;; -165446;1;0;false;false;0;0;0;;; -165447;2;0;false;false;;;;;; -165449;1;0;false;false;0;0;0;;; -165450;2;0;false;false;;;;;; -165452;17;0;false;false;0;0;0;;; -165469;1;0;false;false;;;;;; -165470;20;0;false;false;0;0;0;;; -165490;1;0;false;false;;;;;; -165491;1;0;false;false;0;0;0;;; -165492;3;0;false;false;;;;;; -165495;6;1;false;false;127;0;85;;; -165501;1;0;false;false;;;;;; -165502;8;0;false;false;0;0;0;;; -165510;2;0;false;false;;;;;; -165512;1;0;false;false;0;0;0;;; -165513;2;0;false;false;;;;;; -165515;3;1;false;false;127;0;85;;; -165518;1;0;false;false;;;;;; -165519;28;0;false;false;0;0;0;;; -165547;1;0;false;false;;;;;; -165548;1;0;false;false;0;0;0;;; -165549;3;0;false;false;;;;;; -165552;6;1;false;false;127;0;85;;; -165558;1;0;false;false;;;;;; -165559;23;0;false;false;0;0;0;;; -165582;2;0;false;false;;;;;; -165584;1;0;false;false;0;0;0;;; -165585;2;0;false;false;;;;;; -165587;5;0;false;false;0;0;0;;; -165592;1;0;false;false;;;;;; -165593;22;0;false;false;0;0;0;;; -165615;1;0;false;false;;;;;; -165616;1;0;false;false;0;0;0;;; -165617;3;0;false;false;;;;;; -165620;6;1;false;false;127;0;85;;; -165626;1;0;false;false;;;;;; -165627;10;0;false;false;0;0;0;;; -165637;2;0;false;false;;;;;; -165639;1;0;false;false;0;0;0;;; -165640;2;0;false;false;;;;;; -165642;7;1;false;false;127;0;85;;; -165649;1;0;false;false;;;;;; -165650;21;0;false;false;0;0;0;;; -165671;1;0;false;false;;;;;; -165672;1;0;false;false;0;0;0;;; -165673;3;0;false;false;;;;;; -165676;6;1;false;false;127;0;85;;; -165682;1;0;false;false;;;;;; -165683;9;0;false;false;0;0;0;;; -165692;2;0;false;false;;;;;; -165694;1;0;false;false;0;0;0;;; -165695;2;0;false;false;;;;;; -165697;3;0;false;false;63;95;191;;; -165700;3;0;false;false;;;;;; -165703;1;0;false;false;63;95;191;;; -165704;1;0;false;false;;;;;; -165705;4;0;false;false;63;95;191;;; -165709;1;0;false;false;;;;;; -165710;2;0;false;false;63;95;191;;; -165712;1;0;false;false;;;;;; -165713;13;0;false;false;63;95;191;;; -165726;1;0;false;false;;;;;; -165727;2;0;false;false;63;95;191;;; -165729;1;0;false;false;;;;;; -165730;6;0;false;false;63;95;191;;; -165736;1;0;false;false;;;;;; -165737;17;0;false;false;63;95;191;;; -165754;1;0;false;false;;;;;; -165755;5;0;false;false;63;95;191;;; -165760;1;0;false;false;;;;;; -165761;4;0;false;false;63;95;191;;; -165765;3;0;false;false;;;;;; -165768;1;0;false;false;63;95;191;;; -165769;1;0;false;false;;;;;; -165770;2;0;false;false;63;95;191;;; -165772;1;0;false;false;;;;;; -165773;8;0;false;false;63;95;191;;; -165781;1;0;false;false;;;;;; -165782;5;0;false;false;63;95;191;;; -165787;1;0;false;false;;;;;; -165788;6;0;false;false;63;95;191;;; -165794;3;0;false;false;;;;;; -165797;2;0;false;false;63;95;191;;; -165799;2;0;false;false;;;;;; -165801;4;1;false;false;127;0;85;;; -165805;1;0;false;false;;;;;; -165806;16;0;false;false;0;0;0;;; -165822;1;0;false;false;;;;;; -165823;1;0;false;false;0;0;0;;; -165824;3;0;false;false;;;;;; -165827;5;1;false;false;127;0;85;;; -165832;10;0;false;false;0;0;0;;; -165842;2;0;false;false;;;;;; -165844;1;0;false;false;0;0;0;;; -165845;2;0;false;false;;;;;; -165847;3;0;false;false;63;95;191;;; -165850;4;0;false;false;;;;;; -165854;1;0;false;false;63;95;191;;; -165855;1;0;false;false;;;;;; -165856;7;0;false;false;63;95;191;;; -165863;1;0;false;false;;;;;; -165864;3;0;false;false;63;95;191;;; -165867;1;0;false;false;;;;;; -165868;9;0;false;false;63;95;191;;; -165877;1;0;false;false;;;;;; -165878;4;0;false;false;63;95;191;;; -165882;1;0;false;false;;;;;; -165883;6;0;false;false;63;95;191;;; -165889;3;0;false;false;;;;;; -165892;1;0;false;false;63;95;191;;; -165893;1;0;false;false;;;;;; -165894;3;0;false;false;127;127;159;;; -165897;3;0;false;false;;;;;; -165900;1;0;false;false;63;95;191;;; -165901;3;0;false;false;;;;;; -165904;1;0;false;false;63;95;191;;; -165905;1;0;false;false;;;;;; -165906;7;1;false;false;127;159;191;;; -165913;5;0;false;false;63;95;191;;; -165918;1;0;false;false;;;;;; -165919;6;0;false;false;63;95;191;;; -165925;1;0;false;false;;;;;; -165926;2;0;false;false;63;95;191;;; -165928;1;0;false;false;;;;;; -165929;3;0;false;false;63;95;191;;; -165932;1;0;false;false;;;;;; -165933;5;0;false;false;63;95;191;;; -165938;1;0;false;false;;;;;; -165939;9;0;false;false;63;95;191;;; -165948;1;0;false;false;;;;;; -165949;2;0;false;false;63;95;191;;; -165951;1;0;false;false;;;;;; -165952;6;0;false;false;63;95;191;;; -165958;3;0;false;false;;;;;; -165961;1;0;false;false;63;95;191;;; -165962;1;0;false;false;;;;;; -165963;7;1;false;false;127;159;191;;; -165970;6;0;false;false;63;95;191;;; -165976;1;0;false;false;;;;;; -165977;6;0;false;false;63;95;191;;; -165983;1;0;false;false;;;;;; -165984;2;0;false;false;63;95;191;;; -165986;1;0;false;false;;;;;; -165987;10;0;false;false;63;95;191;;; -165997;1;0;false;false;;;;;; -165998;2;0;false;false;63;95;191;;; -166000;1;0;false;false;;;;;; -166001;6;0;false;false;63;95;191;;; -166007;3;0;false;false;;;;;; -166010;1;0;false;false;63;95;191;;; -166011;1;0;false;false;;;;;; -166012;7;1;false;false;127;159;191;;; -166019;15;0;false;false;63;95;191;;; -166034;1;0;false;false;;;;;; -166035;4;0;false;false;63;95;191;;; -166039;1;0;false;false;;;;;; -166040;2;0;false;false;63;95;191;;; -166042;1;0;false;false;;;;;; -166043;3;0;false;false;63;95;191;;; -166046;1;0;false;false;;;;;; -166047;10;0;false;false;63;95;191;;; -166057;1;0;false;false;;;;;; -166058;6;0;false;false;63;95;191;;; -166064;1;0;false;false;;;;;; -166065;2;0;false;false;63;95;191;;; -166067;1;0;false;false;;;;;; -166068;7;0;false;false;63;95;191;;; -166075;1;0;false;false;;;;;; -166076;2;0;false;false;63;95;191;;; -166078;4;0;false;false;;;;;; -166082;1;0;false;false;63;95;191;;; -166083;2;0;false;false;;;;;; -166085;4;0;false;false;63;95;191;;; -166089;1;0;false;false;;;;;; -166090;2;0;false;false;63;95;191;;; -166092;1;0;false;false;;;;;; -166093;3;0;false;false;63;95;191;;; -166096;1;0;false;false;;;;;; -166097;6;0;false;false;63;95;191;;; -166103;1;0;false;false;;;;;; -166104;10;0;false;false;63;95;191;;; -166114;2;0;false;false;;;;;; -166116;2;0;false;false;63;95;191;;; -166118;1;0;false;false;;;;;; -166119;5;0;false;false;63;95;191;;; -166124;1;0;false;false;;;;;; -166125;3;0;false;false;63;95;191;;; -166128;1;0;false;false;;;;;; -166129;6;0;false;false;63;95;191;;; -166135;1;0;false;false;;;;;; -166136;6;0;false;false;63;95;191;;; -166142;1;0;false;false;;;;;; -166143;5;0;false;false;63;95;191;;; -166148;1;0;false;false;;;;;; -166149;4;0;false;false;63;95;191;;; -166153;3;0;false;false;;;;;; -166156;1;0;false;false;63;95;191;;; -166157;2;0;false;false;;;;;; -166159;2;0;false;false;63;95;191;;; -166161;1;0;false;false;;;;;; -166162;7;0;false;false;63;95;191;;; -166169;1;0;false;false;;;;;; -166170;6;0;false;false;63;95;191;;; -166176;1;0;false;false;;;;;; -166177;8;0;false;false;63;95;191;;; -166185;1;0;false;false;;;;;; -166186;2;0;false;false;63;95;191;;; -166188;1;0;false;false;;;;;; -166189;8;0;false;false;63;95;191;;; -166197;2;0;false;false;;;;;; -166199;2;0;false;false;63;95;191;;; -166201;1;0;false;false;;;;;; -166202;3;0;false;false;63;95;191;;; -166205;1;0;false;false;;;;;; -166206;6;0;false;false;63;95;191;;; -166212;1;0;false;false;;;;;; -166213;5;0;false;false;63;95;191;;; -166218;1;0;false;false;;;;;; -166219;8;0;false;false;63;95;191;;; -166227;3;0;false;false;;;;;; -166230;1;0;false;false;63;95;191;;; -166231;1;0;false;false;;;;;; -166232;3;0;false;false;63;95;191;;; -166235;1;0;false;false;;;;;; -166236;4;0;false;false;63;95;191;;; -166240;1;0;false;false;;;;;; -166241;9;0;false;false;63;95;191;;; -166250;1;0;false;false;;;;;; -166251;2;0;false;false;63;95;191;;; -166253;1;0;false;false;;;;;; -166254;1;0;false;false;63;95;191;;; -166255;1;0;false;false;;;;;; -166256;4;0;false;false;63;95;191;;; -166260;1;0;false;false;;;;;; -166261;6;0;false;false;63;95;191;;; -166267;1;0;false;false;;;;;; -166268;3;0;false;false;63;95;191;;; -166271;1;0;false;false;;;;;; -166272;6;0;false;false;63;95;191;;; -166278;1;0;false;false;;;;;; -166279;4;0;false;false;63;95;191;;; -166283;1;0;false;false;;;;;; -166284;2;0;false;false;63;95;191;;; -166286;1;0;false;false;;;;;; -166287;8;0;false;false;63;95;191;;; -166295;1;0;false;false;;;;;; -166296;3;0;false;false;63;95;191;;; -166299;4;0;false;false;;;;;; -166303;1;0;false;false;63;95;191;;; -166304;2;0;false;false;;;;;; -166306;4;0;false;false;63;95;191;;; -166310;1;0;false;false;;;;;; -166311;2;0;false;false;63;95;191;;; -166313;1;0;false;false;;;;;; -166314;7;0;false;false;63;95;191;;; -166321;1;0;false;false;;;;;; -166322;3;0;false;false;63;95;191;;; -166325;1;0;false;false;;;;;; -166326;3;0;false;false;63;95;191;;; -166329;1;0;false;false;;;;;; -166330;3;0;false;false;63;95;191;;; -166333;1;0;false;false;;;;;; -166334;2;0;false;false;63;95;191;;; -166336;1;0;false;false;;;;;; -166337;3;0;false;false;63;95;191;;; -166340;1;0;false;false;;;;;; -166341;5;0;false;false;63;95;191;;; -166346;1;0;false;false;;;;;; -166347;6;0;false;false;63;95;191;;; -166353;1;0;false;false;;;;;; -166354;2;0;false;false;63;95;191;;; -166356;1;0;false;false;;;;;; -166357;3;0;false;false;63;95;191;;; -166360;1;0;false;false;;;;;; -166361;7;0;false;false;63;95;191;;; -166368;3;0;false;false;;;;;; -166371;1;0;false;false;63;95;191;;; -166372;2;0;false;false;;;;;; -166374;3;0;false;false;63;95;191;;; -166377;1;0;false;false;;;;;; -166378;6;0;false;false;63;95;191;;; -166384;1;0;false;false;;;;;; -166385;9;0;false;false;63;95;191;;; -166394;1;0;false;false;;;;;; -166395;4;0;false;false;63;95;191;;; -166399;1;0;false;false;;;;;; -166400;2;0;false;false;63;95;191;;; -166402;1;0;false;false;;;;;; -166403;6;0;false;false;63;95;191;;; -166409;1;0;false;false;;;;;; -166410;3;0;false;false;63;95;191;;; -166413;1;0;false;false;;;;;; -166414;8;0;false;false;63;95;191;;; -166422;1;0;false;false;;;;;; -166423;2;0;false;false;63;95;191;;; -166425;1;0;false;false;;;;;; -166426;15;0;false;false;63;95;191;;; -166441;1;0;false;false;;;;;; -166442;2;0;false;false;63;95;191;;; -166444;4;0;false;false;;;;;; -166448;1;0;false;false;63;95;191;;; -166449;2;0;false;false;;;;;; -166451;3;0;false;false;63;95;191;;; -166454;1;0;false;false;;;;;; -166455;2;0;false;false;63;95;191;;; -166457;1;0;false;false;;;;;; -166458;6;0;false;false;63;95;191;;; -166464;2;0;false;false;;;;;; -166466;7;0;false;false;63;95;191;;; -166473;1;0;false;false;;;;;; -166474;2;0;false;false;63;95;191;;; -166476;1;0;false;false;;;;;; -166477;3;0;false;false;63;95;191;;; -166480;1;0;false;false;;;;;; -166481;3;0;false;false;63;95;191;;; -166484;1;0;false;false;;;;;; -166485;4;0;false;false;63;95;191;;; -166489;1;0;false;false;;;;;; -166490;3;0;false;false;63;95;191;;; -166493;1;0;false;false;;;;;; -166494;2;0;false;false;63;95;191;;; -166496;1;0;false;false;;;;;; -166497;3;0;false;false;63;95;191;;; -166500;1;0;false;false;;;;;; -166501;2;0;false;false;63;95;191;;; -166503;1;0;false;false;;;;;; -166504;5;0;false;false;63;95;191;;; -166509;1;0;false;false;;;;;; -166510;7;0;false;false;63;95;191;;; -166517;1;0;false;false;;;;;; -166518;2;0;false;false;63;95;191;;; -166520;4;0;false;false;;;;;; -166524;1;0;false;false;63;95;191;;; -166525;2;0;false;false;;;;;; -166527;3;0;false;false;63;95;191;;; -166530;1;0;false;false;;;;;; -166531;4;0;false;false;63;95;191;;; -166535;1;0;false;false;;;;;; -166536;2;0;false;false;63;95;191;;; -166538;1;0;false;false;;;;;; -166539;6;0;false;false;63;95;191;;; -166545;1;0;false;false;;;;;; -166546;4;0;false;false;63;95;191;;; -166550;1;0;false;false;;;;;; -166551;3;0;false;false;63;95;191;;; -166554;1;0;false;false;;;;;; -166555;5;0;false;false;63;95;191;;; -166560;1;0;false;false;;;;;; -166561;6;0;false;false;63;95;191;;; -166567;2;0;false;false;;;;;; -166569;2;0;false;false;63;95;191;;; -166571;1;0;false;false;;;;;; -166572;4;0;false;false;63;95;191;;; -166576;1;0;false;false;;;;;; -166577;6;0;false;false;63;95;191;;; -166583;1;0;false;false;;;;;; -166584;2;0;false;false;63;95;191;;; -166586;1;0;false;false;;;;;; -166587;10;0;false;false;63;95;191;;; -166597;4;0;false;false;;;;;; -166601;1;0;false;false;63;95;191;;; -166602;2;0;false;false;;;;;; -166604;6;0;false;false;63;95;191;;; -166610;1;0;false;false;;;;;; -166611;3;0;false;false;63;95;191;;; -166614;1;0;false;false;;;;;; -166615;3;0;false;false;63;95;191;;; -166618;1;0;false;false;;;;;; -166619;6;0;false;false;63;95;191;;; -166625;1;0;false;false;;;;;; -166626;5;0;false;false;63;95;191;;; -166631;1;0;false;false;;;;;; -166632;4;0;false;false;63;95;191;;; -166636;1;0;false;false;;;;;; -166637;8;0;false;false;63;95;191;;; -166645;1;0;false;false;;;;;; -166646;15;0;false;false;63;95;191;;; -166661;1;0;false;false;;;;;; -166662;6;0;false;false;63;95;191;;; -166668;1;0;false;false;;;;;; -166669;2;0;false;false;63;95;191;;; -166671;4;0;false;false;;;;;; -166675;1;0;false;false;63;95;191;;; -166676;2;0;false;false;;;;;; -166678;3;0;false;false;63;95;191;;; -166681;1;0;false;false;;;;;; -166682;2;0;false;false;63;95;191;;; -166684;1;0;false;false;;;;;; -166685;5;0;false;false;63;95;191;;; -166690;2;0;false;false;;;;;; -166692;2;0;false;false;63;95;191;;; -166694;1;0;false;false;;;;;; -166695;4;0;false;false;63;95;191;;; -166699;1;0;false;false;;;;;; -166700;10;0;false;false;63;95;191;;; -166710;1;0;false;false;;;;;; -166711;6;0;false;false;63;95;191;;; -166717;1;0;false;false;;;;;; -166718;4;0;false;false;63;95;191;;; -166722;1;0;false;false;;;;;; -166723;7;0;false;false;63;95;191;;; -166730;1;0;false;false;;;;;; -166731;3;0;false;false;63;95;191;;; -166734;1;0;false;false;;;;;; -166735;3;0;false;false;63;95;191;;; -166738;1;0;false;false;;;;;; -166739;6;0;false;false;63;95;191;;; -166745;4;0;false;false;;;;;; -166749;1;0;false;false;63;95;191;;; -166750;2;0;false;false;;;;;; -166752;6;0;false;false;63;95;191;;; -166758;1;0;false;false;;;;;; -166759;15;0;false;false;63;95;191;;; -166774;1;0;false;false;;;;;; -166775;3;0;false;false;63;95;191;;; -166778;1;0;false;false;;;;;; -166779;2;0;false;false;63;95;191;;; -166781;1;0;false;false;;;;;; -166782;3;0;false;false;63;95;191;;; -166785;1;0;false;false;;;;;; -166786;2;0;false;false;63;95;191;;; -166788;1;0;false;false;;;;;; -166789;6;0;false;false;63;95;191;;; -166795;4;0;false;false;;;;;; -166799;2;0;false;false;63;95;191;;; -166801;2;0;false;false;;;;;; -166803;4;1;false;false;127;0;85;;; -166807;1;0;false;false;;;;;; -166808;20;0;false;false;0;0;0;;; -166828;3;1;false;false;127;0;85;;; -166831;1;0;false;false;;;;;; -166832;6;0;false;false;0;0;0;;; -166838;1;0;false;false;;;;;; -166839;3;1;false;false;127;0;85;;; -166842;1;0;false;false;;;;;; -166843;7;0;false;false;0;0;0;;; -166850;1;0;false;false;;;;;; -166851;7;1;false;false;127;0;85;;; -166858;1;0;false;false;;;;;; -166859;16;0;false;false;0;0;0;;; -166875;1;0;false;false;;;;;; -166876;1;0;false;false;0;0;0;;; -166877;3;0;false;false;;;;;; -166880;3;1;false;false;127;0;85;;; -166883;1;0;false;false;;;;;; -166884;3;0;false;false;0;0;0;;; -166887;1;0;false;false;;;;;; -166888;1;0;false;false;0;0;0;;; -166889;1;0;false;false;;;;;; -166890;5;0;false;false;0;0;0;;; -166895;1;0;false;false;;;;;; -166896;1;0;false;false;0;0;0;;; -166897;1;0;false;false;;;;;; -166898;7;0;false;false;0;0;0;;; -166905;3;0;false;false;;;;;; -166908;3;1;false;false;127;0;85;;; -166911;1;0;false;false;;;;;; -166912;9;0;false;false;0;0;0;;; -166921;1;0;false;false;;;;;; -166922;1;0;false;false;0;0;0;;; -166923;1;0;false;false;;;;;; -166924;31;0;false;false;0;0;0;;; -166955;3;0;false;false;;;;;; -166958;3;1;false;false;127;0;85;;; -166961;1;0;false;false;;;;;; -166962;8;0;false;false;0;0;0;;; -166970;1;0;false;false;;;;;; -166971;1;0;false;false;0;0;0;;; -166972;1;0;false;false;;;;;; -166973;29;0;false;false;0;0;0;;; -167002;3;0;false;false;;;;;; -167005;3;1;false;false;127;0;85;;; -167008;1;0;false;false;;;;;; -167009;18;0;false;false;0;0;0;;; -167027;3;0;false;false;;;;;; -167030;3;1;false;false;127;0;85;;; -167033;1;0;false;false;;;;;; -167034;18;0;false;false;0;0;0;;; -167052;1;0;false;false;;;;;; -167053;1;0;false;false;0;0;0;;; -167054;1;0;false;false;;;;;; -167055;24;0;false;false;0;0;0;;; -167079;3;0;false;false;;;;;; -167082;3;1;false;false;127;0;85;;; -167085;1;0;false;false;;;;;; -167086;15;0;false;false;0;0;0;;; -167101;1;0;false;false;;;;;; -167102;1;0;false;false;0;0;0;;; -167103;1;0;false;false;;;;;; -167104;20;0;false;false;0;0;0;;; -167124;1;0;false;false;;;;;; -167125;1;0;false;false;0;0;0;;; -167126;1;0;false;false;;;;;; -167127;11;0;false;false;0;0;0;;; -167138;3;0;false;false;;;;;; -167141;56;0;false;false;63;127;95;;; -167197;1;0;false;false;;;;;; -167198;2;1;false;false;127;0;85;;; -167200;1;0;false;false;;;;;; -167201;10;0;false;false;0;0;0;;; -167211;1;0;false;false;;;;;; -167212;1;0;false;false;0;0;0;;; -167213;1;0;false;false;;;;;; -167214;18;0;false;false;0;0;0;;; -167232;1;0;false;false;;;;;; -167233;2;0;false;false;0;0;0;;; -167235;1;0;false;false;;;;;; -167236;8;0;false;false;0;0;0;;; -167244;1;0;false;false;;;;;; -167245;1;0;false;false;0;0;0;;; -167246;1;0;false;false;;;;;; -167247;16;0;false;false;0;0;0;;; -167263;1;0;false;false;;;;;; -167264;1;0;false;false;0;0;0;;; -167265;4;0;false;false;;;;;; -167269;6;1;false;false;127;0;85;;; -167275;1;0;false;false;0;0;0;;; -167276;3;0;false;false;;;;;; -167279;1;0;false;false;0;0;0;;; -167280;3;0;false;false;;;;;; -167283;30;0;false;false;63;127;95;;; -167313;1;0;false;false;;;;;; -167314;2;1;false;false;127;0;85;;; -167316;1;0;false;false;;;;;; -167317;16;0;false;false;0;0;0;;; -167333;1;0;false;false;;;;;; -167334;1;0;false;false;0;0;0;;; -167335;1;0;false;false;;;;;; -167336;10;0;false;false;0;0;0;;; -167346;1;0;false;false;;;;;; -167347;1;0;false;false;0;0;0;;; -167348;4;0;false;false;;;;;; -167352;9;0;false;false;0;0;0;;; -167361;1;0;false;false;;;;;; -167362;1;0;false;false;0;0;0;;; -167363;1;0;false;false;;;;;; -167364;16;0;false;false;0;0;0;;; -167380;4;0;false;false;;;;;; -167384;17;0;false;false;0;0;0;;; -167401;1;0;false;false;;;;;; -167402;1;0;false;false;0;0;0;;; -167403;1;0;false;false;;;;;; -167404;2;0;false;false;0;0;0;;; -167406;3;0;false;false;;;;;; -167409;1;0;false;false;0;0;0;;; -167410;3;0;false;false;;;;;; -167413;4;1;false;false;127;0;85;;; -167417;1;0;false;false;;;;;; -167418;1;0;false;false;0;0;0;;; -167419;4;0;false;false;;;;;; -167423;17;0;false;false;0;0;0;;; -167440;1;0;false;false;;;;;; -167441;1;0;false;false;0;0;0;;; -167442;1;0;false;false;;;;;; -167443;5;0;false;false;0;0;0;;; -167448;1;0;false;false;;;;;; -167449;1;0;false;false;0;0;0;;; -167450;1;0;false;false;;;;;; -167451;35;0;false;false;0;0;0;;; -167486;3;0;false;false;;;;;; -167489;1;0;false;false;0;0;0;;; -167490;3;0;false;false;;;;;; -167493;2;1;false;false;127;0;85;;; -167495;1;0;false;false;;;;;; -167496;19;0;false;false;0;0;0;;; -167515;1;0;false;false;;;;;; -167516;1;0;false;false;0;0;0;;; -167517;1;0;false;false;;;;;; -167518;1;0;false;false;0;0;0;;; -167519;1;0;false;false;;;;;; -167520;1;0;false;false;0;0;0;;; -167521;1;0;false;false;;;;;; -167522;9;0;false;false;0;0;0;;; -167531;1;0;false;false;;;;;; -167532;1;0;false;false;0;0;0;;; -167533;4;0;false;false;;;;;; -167537;8;0;false;false;0;0;0;;; -167545;1;0;false;false;;;;;; -167546;1;0;false;false;0;0;0;;; -167547;1;0;false;false;;;;;; -167548;18;0;false;false;0;0;0;;; -167566;1;0;false;false;;;;;; -167567;1;0;false;false;0;0;0;;; -167568;1;0;false;false;;;;;; -167569;2;0;false;false;0;0;0;;; -167571;1;0;false;false;;;;;; -167572;58;0;false;false;63;127;95;;; -167630;2;0;false;false;;;;;; -167632;3;0;false;false;0;0;0;;; -167635;1;0;false;false;;;;;; -167636;1;0;false;false;0;0;0;;; -167637;1;0;false;false;;;;;; -167638;34;0;false;false;0;0;0;;; -167672;3;0;false;false;;;;;; -167675;1;0;false;false;0;0;0;;; -167676;3;0;false;false;;;;;; -167679;22;0;false;false;0;0;0;;; -167701;1;0;false;false;;;;;; -167702;18;0;false;false;0;0;0;;; -167720;1;0;false;false;;;;;; -167721;9;0;false;false;0;0;0;;; -167730;1;0;false;false;;;;;; -167731;4;0;false;false;0;0;0;;; -167735;1;0;false;false;;;;;; -167736;17;0;false;false;0;0;0;;; -167753;6;0;false;false;;;;;; -167759;76;0;false;false;63;127;95;;; -167835;1;0;false;false;;;;;; -167836;2;1;false;false;127;0;85;;; -167838;1;0;false;false;;;;;; -167839;9;0;false;false;0;0;0;;; -167848;1;0;false;false;;;;;; -167849;1;0;false;false;0;0;0;;; -167850;1;0;false;false;;;;;; -167851;9;0;false;false;0;0;0;;; -167860;1;0;false;false;;;;;; -167861;1;0;false;false;0;0;0;;; -167862;1;0;false;false;;;;;; -167863;2;0;false;false;0;0;0;;; -167865;1;0;false;false;;;;;; -167866;1;0;false;false;0;0;0;;; -167867;4;0;false;false;;;;;; -167871;9;0;false;false;0;0;0;;; -167880;1;0;false;false;;;;;; -167881;10;0;false;false;0;0;0;;; -167891;1;0;false;false;;;;;; -167892;1;0;false;false;0;0;0;;; -167893;1;0;false;false;;;;;; -167894;16;0;false;false;0;0;0;;; -167910;4;0;false;false;;;;;; -167914;3;1;false;false;127;0;85;;; -167917;1;0;false;false;;;;;; -167918;11;0;false;false;0;0;0;;; -167929;1;0;false;false;;;;;; -167930;1;0;false;false;0;0;0;;; -167931;1;0;false;false;;;;;; -167932;8;0;false;false;0;0;0;;; -167940;1;0;false;false;;;;;; -167941;1;0;false;false;0;0;0;;; -167942;1;0;false;false;;;;;; -167943;10;0;false;false;0;0;0;;; -167953;1;0;false;false;;;;;; -167954;1;0;false;false;0;0;0;;; -167955;1;0;false;false;;;;;; -167956;21;0;false;false;0;0;0;;; -167977;6;0;false;false;;;;;; -167983;3;1;false;false;127;0;85;;; -167986;1;0;false;false;;;;;; -167987;7;0;false;false;0;0;0;;; -167994;1;0;false;false;;;;;; -167995;1;0;false;false;0;0;0;;; -167996;1;0;false;false;;;;;; -167997;10;0;false;false;0;0;0;;; -168007;1;0;false;false;;;;;; -168008;1;0;false;false;0;0;0;;; -168009;1;0;false;false;;;;;; -168010;2;0;false;false;0;0;0;;; -168012;1;0;false;false;;;;;; -168013;1;0;false;false;0;0;0;;; -168014;1;0;false;false;;;;;; -168015;10;0;false;false;0;0;0;;; -168025;1;0;false;false;;;;;; -168026;1;0;false;false;0;0;0;;; -168027;1;0;false;false;;;;;; -168028;21;0;false;false;0;0;0;;; -168049;6;0;false;false;;;;;; -168055;7;0;false;false;0;0;0;;; -168062;1;0;false;false;;;;;; -168063;8;0;false;false;0;0;0;;; -168071;1;0;false;false;;;;;; -168072;17;0;false;false;0;0;0;;; -168089;1;0;false;false;;;;;; -168090;11;0;false;false;0;0;0;;; -168101;1;0;false;false;;;;;; -168102;1;0;false;false;0;0;0;;; -168103;1;0;false;false;;;;;; -168104;8;0;false;false;0;0;0;;; -168112;1;0;false;false;;;;;; -168113;17;0;false;false;0;0;0;;; -168130;3;0;false;false;;;;;; -168133;1;0;false;false;0;0;0;;; -168134;2;0;false;false;;;;;; -168136;1;0;false;false;0;0;0;;; -168137;2;0;false;false;;;;;; -168139;3;0;false;false;63;95;191;;; -168142;3;0;false;false;;;;;; -168145;1;0;false;false;63;95;191;;; -168146;1;0;false;false;;;;;; -168147;7;0;false;false;63;95;191;;; -168154;1;0;false;false;;;;;; -168155;3;0;false;false;63;95;191;;; -168158;1;0;false;false;;;;;; -168159;6;0;false;false;63;95;191;;; -168165;1;0;false;false;;;;;; -168166;4;0;false;false;63;95;191;;; -168170;1;0;false;false;;;;;; -168171;4;0;false;false;63;95;191;;; -168175;1;0;false;false;;;;;; -168176;5;0;false;false;63;95;191;;; -168181;1;0;false;false;;;;;; -168182;11;0;false;false;63;95;191;;; -168193;1;0;false;false;;;;;; -168194;7;0;false;false;63;95;191;;; -168201;1;0;false;false;;;;;; -168202;5;0;false;false;63;95;191;;; -168207;1;0;false;false;;;;;; -168208;3;0;false;false;63;95;191;;; -168211;1;0;false;false;;;;;; -168212;6;0;false;false;63;95;191;;; -168218;3;0;false;false;;;;;; -168221;1;0;false;false;63;95;191;;; -168222;1;0;false;false;;;;;; -168223;13;0;false;false;63;95;191;;; -168236;1;0;false;false;;;;;; -168237;7;0;false;false;63;95;191;;; -168244;1;0;false;false;;;;;; -168245;4;0;false;false;63;95;191;;; -168249;3;0;false;false;;;;;; -168252;1;0;false;false;63;95;191;;; -168253;3;0;false;false;;;;;; -168256;1;0;false;false;63;95;191;;; -168257;1;0;false;false;;;;;; -168258;8;1;false;false;127;159;191;;; -168266;3;0;false;false;63;95;191;;; -168269;1;0;false;false;;;;;; -168270;6;0;false;false;63;95;191;;; -168276;1;0;false;false;;;;;; -168277;4;0;false;false;63;95;191;;; -168281;1;0;false;false;;;;;; -168282;4;0;false;false;63;95;191;;; -168286;1;0;false;false;;;;;; -168287;5;0;false;false;63;95;191;;; -168292;1;0;false;false;;;;;; -168293;11;0;false;false;63;95;191;;; -168304;1;0;false;false;;;;;; -168305;7;0;false;false;63;95;191;;; -168312;1;0;false;false;;;;;; -168313;5;0;false;false;63;95;191;;; -168318;1;0;false;false;;;;;; -168319;3;0;false;false;63;95;191;;; -168322;1;0;false;false;;;;;; -168323;6;0;false;false;63;95;191;;; -168329;3;0;false;false;;;;;; -168332;1;0;false;false;63;95;191;;; -168333;1;0;false;false;;;;;; -168334;11;1;false;false;127;159;191;;; -168345;12;0;false;false;63;95;191;;; -168357;1;0;false;false;;;;;; -168358;4;0;false;false;127;127;159;;; -168362;3;0;false;false;;;;;; -168365;1;0;false;false;63;95;191;;; -168366;4;0;false;false;;;;;; -168370;4;0;false;false;127;127;159;;; -168374;21;0;false;false;63;95;191;;; -168395;1;0;false;false;;;;;; -168396;1;0;false;false;127;127;159;;; -168397;1;0;false;false;;;;;; -168398;2;0;false;false;63;95;191;;; -168400;1;0;false;false;;;;;; -168401;3;0;false;false;63;95;191;;; -168404;1;0;false;false;;;;;; -168405;8;0;false;false;63;95;191;;; -168413;1;0;false;false;;;;;; -168414;3;0;false;false;63;95;191;;; -168417;1;0;false;false;;;;;; -168418;4;0;false;false;63;95;191;;; -168422;1;0;false;false;;;;;; -168423;8;0;false;false;63;95;191;;; -168431;5;0;false;false;127;127;159;;; -168436;3;0;false;false;;;;;; -168439;1;0;false;false;63;95;191;;; -168440;4;0;false;false;;;;;; -168444;4;0;false;false;127;127;159;;; -168448;27;0;false;false;63;95;191;;; -168475;1;0;false;false;;;;;; -168476;1;0;false;false;127;127;159;;; -168477;1;0;false;false;;;;;; -168478;2;0;false;false;63;95;191;;; -168480;1;0;false;false;;;;;; -168481;3;0;false;false;63;95;191;;; -168484;1;0;false;false;;;;;; -168485;6;0;false;false;63;95;191;;; -168491;1;0;false;false;;;;;; -168492;4;0;false;false;63;95;191;;; -168496;1;0;false;false;;;;;; -168497;3;0;false;false;63;95;191;;; -168500;1;0;false;false;;;;;; -168501;6;0;false;false;63;95;191;;; -168507;1;0;false;false;;;;;; -168508;4;0;false;false;63;95;191;;; -168512;1;0;false;false;;;;;; -168513;7;0;false;false;63;95;191;;; -168520;1;0;false;false;;;;;; -168521;3;0;false;false;63;95;191;;; -168524;1;0;false;false;;;;;; -168525;8;0;false;false;63;95;191;;; -168533;5;0;false;false;127;127;159;;; -168538;3;0;false;false;;;;;; -168541;1;0;false;false;63;95;191;;; -168542;1;0;false;false;;;;;; -168543;5;0;false;false;127;127;159;;; -168548;3;0;false;false;;;;;; -168551;2;0;false;false;63;95;191;;; -168553;2;0;false;false;;;;;; -168555;6;0;false;false;0;0;0;;; -168561;1;0;false;false;;;;;; -168562;9;0;false;false;0;0;0;;; -168571;3;0;false;false;;;;;; -168574;14;0;false;false;0;0;0;;; -168588;3;0;false;false;;;;;; -168591;9;0;false;false;0;0;0;;; -168600;1;0;false;false;;;;;; -168601;9;0;false;false;0;0;0;;; -168610;1;0;false;false;;;;;; -168611;1;0;false;false;0;0;0;;; -168612;1;0;false;false;;;;;; -168613;3;1;false;false;127;0;85;;; -168616;1;0;false;false;;;;;; -168617;12;0;false;false;0;0;0;;; -168629;1;0;false;false;;;;;; -168630;16;0;false;false;0;0;0;;; -168646;3;0;false;false;;;;;; -168649;6;1;false;false;127;0;85;;; -168655;1;0;false;false;;;;;; -168656;36;0;false;false;0;0;0;;; -168692;2;0;false;false;;;;;; -168694;1;0;false;false;0;0;0;;; -168695;2;0;false;false;;;;;; -168697;3;0;false;false;63;95;191;;; -168700;4;0;false;false;;;;;; -168704;1;0;false;false;63;95;191;;; -168705;1;0;false;false;;;;;; -168706;5;0;false;false;63;95;191;;; -168711;1;0;false;false;;;;;; -168712;10;0;false;false;63;95;191;;; -168722;3;0;false;false;;;;;; -168725;2;0;false;false;63;95;191;;; -168727;2;0;false;false;;;;;; -168729;4;1;false;false;127;0;85;;; -168733;1;0;false;false;;;;;; -168734;19;0;false;false;0;0;0;;; -168753;1;0;false;false;;;;;; -168754;6;0;false;false;0;0;0;;; -168760;1;0;false;false;;;;;; -168761;1;0;false;false;0;0;0;;; -168762;3;0;false;false;;;;;; -168765;27;0;false;false;0;0;0;;; -168792;1;0;false;false;;;;;; -168793;10;0;false;false;0;0;0;;; -168803;3;0;false;false;;;;;; -168806;28;0;false;false;0;0;0;;; -168834;1;0;false;false;;;;;; -168835;7;0;false;false;0;0;0;;; -168842;3;0;false;false;;;;;; -168845;10;0;false;false;0;0;0;;; -168855;1;0;false;false;;;;;; -168856;1;0;false;false;0;0;0;;; -168857;1;0;false;false;;;;;; -168858;9;0;false;false;0;0;0;;; -168867;5;0;false;false;;;;;; -168872;20;0;false;false;0;0;0;;; -168892;3;0;false;false;;;;;; -168895;22;0;false;false;0;0;0;;; -168917;3;0;false;false;;;;;; -168920;2;1;false;false;127;0;85;;; -168922;1;0;false;false;;;;;; -168923;9;0;false;false;0;0;0;;; -168932;1;0;false;false;;;;;; -168933;2;0;false;false;0;0;0;;; -168935;1;0;false;false;;;;;; -168936;4;1;false;false;127;0;85;;; -168940;1;0;false;false;0;0;0;;; -168941;1;0;false;false;;;;;; -168942;1;0;false;false;0;0;0;;; -168943;4;0;false;false;;;;;; -168947;19;0;false;false;0;0;0;;; -168966;4;0;false;false;;;;;; -168970;8;0;false;false;0;0;0;;; -168978;1;0;false;false;;;;;; -168979;1;0;false;false;0;0;0;;; -168980;1;0;false;false;;;;;; -168981;4;1;false;false;127;0;85;;; -168985;1;0;false;false;0;0;0;;; -168986;3;0;false;false;;;;;; -168989;1;0;false;false;0;0;0;;; -168990;3;0;false;false;;;;;; -168993;2;1;false;false;127;0;85;;; -168995;1;0;false;false;;;;;; -168996;8;0;false;false;0;0;0;;; -169004;1;0;false;false;;;;;; -169005;2;0;false;false;0;0;0;;; -169007;1;0;false;false;;;;;; -169008;4;1;false;false;127;0;85;;; -169012;1;0;false;false;0;0;0;;; -169013;1;0;false;false;;;;;; -169014;1;0;false;false;0;0;0;;; -169015;4;0;false;false;;;;;; -169019;53;0;false;false;0;0;0;;; -169072;4;0;false;false;;;;;; -169076;7;0;false;false;0;0;0;;; -169083;1;0;false;false;;;;;; -169084;1;0;false;false;0;0;0;;; -169085;1;0;false;false;;;;;; -169086;4;1;false;false;127;0;85;;; -169090;1;0;false;false;0;0;0;;; -169091;3;0;false;false;;;;;; -169094;1;0;false;false;0;0;0;;; -169095;3;0;false;false;;;;;; -169098;2;1;false;false;127;0;85;;; -169100;1;0;false;false;;;;;; -169101;13;0;false;false;0;0;0;;; -169114;1;0;false;false;;;;;; -169115;2;0;false;false;0;0;0;;; -169117;1;0;false;false;;;;;; -169118;4;1;false;false;127;0;85;;; -169122;1;0;false;false;0;0;0;;; -169123;1;0;false;false;;;;;; -169124;1;0;false;false;0;0;0;;; -169125;4;0;false;false;;;;;; -169129;23;0;false;false;0;0;0;;; -169152;4;0;false;false;;;;;; -169156;12;0;false;false;0;0;0;;; -169168;1;0;false;false;;;;;; -169169;1;0;false;false;0;0;0;;; -169170;1;0;false;false;;;;;; -169171;4;1;false;false;127;0;85;;; -169175;1;0;false;false;0;0;0;;; -169176;3;0;false;false;;;;;; -169179;1;0;false;false;0;0;0;;; -169180;3;0;false;false;;;;;; -169183;2;1;false;false;127;0;85;;; -169185;1;0;false;false;;;;;; -169186;16;0;false;false;0;0;0;;; -169202;1;0;false;false;;;;;; -169203;2;0;false;false;0;0;0;;; -169205;1;0;false;false;;;;;; -169206;4;1;false;false;127;0;85;;; -169210;1;0;false;false;0;0;0;;; -169211;1;0;false;false;;;;;; -169212;1;0;false;false;0;0;0;;; -169213;4;0;false;false;;;;;; -169217;26;0;false;false;0;0;0;;; -169243;4;0;false;false;;;;;; -169247;15;0;false;false;0;0;0;;; -169262;1;0;false;false;;;;;; -169263;1;0;false;false;0;0;0;;; -169264;1;0;false;false;;;;;; -169265;4;1;false;false;127;0;85;;; -169269;1;0;false;false;0;0;0;;; -169270;3;0;false;false;;;;;; -169273;1;0;false;false;0;0;0;;; -169274;3;0;false;false;;;;;; -169277;2;1;false;false;127;0;85;;; -169279;1;0;false;false;;;;;; -169280;17;0;false;false;0;0;0;;; -169297;1;0;false;false;;;;;; -169298;2;0;false;false;0;0;0;;; -169300;1;0;false;false;;;;;; -169301;4;1;false;false;127;0;85;;; -169305;1;0;false;false;0;0;0;;; -169306;1;0;false;false;;;;;; -169307;1;0;false;false;0;0;0;;; -169308;4;0;false;false;;;;;; -169312;27;0;false;false;0;0;0;;; -169339;4;0;false;false;;;;;; -169343;16;0;false;false;0;0;0;;; -169359;1;0;false;false;;;;;; -169360;1;0;false;false;0;0;0;;; -169361;1;0;false;false;;;;;; -169362;4;1;false;false;127;0;85;;; -169366;1;0;false;false;0;0;0;;; -169367;3;0;false;false;;;;;; -169370;1;0;false;false;0;0;0;;; -169371;3;0;false;false;;;;;; -169374;2;1;false;false;127;0;85;;; -169376;1;0;false;false;;;;;; -169377;18;0;false;false;0;0;0;;; -169395;1;0;false;false;;;;;; -169396;2;0;false;false;0;0;0;;; -169398;1;0;false;false;;;;;; -169399;4;1;false;false;127;0;85;;; -169403;1;0;false;false;0;0;0;;; -169404;1;0;false;false;;;;;; -169405;1;0;false;false;0;0;0;;; -169406;4;0;false;false;;;;;; -169410;28;0;false;false;0;0;0;;; -169438;4;0;false;false;;;;;; -169442;17;0;false;false;0;0;0;;; -169459;1;0;false;false;;;;;; -169460;1;0;false;false;0;0;0;;; -169461;1;0;false;false;;;;;; -169462;4;1;false;false;127;0;85;;; -169466;1;0;false;false;0;0;0;;; -169467;3;0;false;false;;;;;; -169470;1;0;false;false;0;0;0;;; -169471;3;0;false;false;;;;;; -169474;2;1;false;false;127;0;85;;; -169476;1;0;false;false;;;;;; -169477;15;0;false;false;0;0;0;;; -169492;1;0;false;false;;;;;; -169493;1;0;false;false;0;0;0;;; -169494;4;0;false;false;;;;;; -169498;40;0;false;false;0;0;0;;; -169538;3;0;false;false;;;;;; -169541;1;0;false;false;0;0;0;;; -169542;3;0;false;false;;;;;; -169545;19;0;false;false;0;0;0;;; -169564;1;0;false;false;;;;;; -169565;1;0;false;false;0;0;0;;; -169566;1;0;false;false;;;;;; -169567;4;1;false;false;127;0;85;;; -169571;1;0;false;false;0;0;0;;; -169572;3;0;false;false;;;;;; -169575;19;0;false;false;0;0;0;;; -169594;1;0;false;false;;;;;; -169595;1;0;false;false;0;0;0;;; -169596;1;0;false;false;;;;;; -169597;4;1;false;false;127;0;85;;; -169601;1;0;false;false;0;0;0;;; -169602;3;0;false;false;;;;;; -169605;14;0;false;false;0;0;0;;; -169619;1;0;false;false;;;;;; -169620;1;0;false;false;0;0;0;;; -169621;1;0;false;false;;;;;; -169622;4;1;false;false;127;0;85;;; -169626;1;0;false;false;0;0;0;;; -169627;3;0;false;false;;;;;; -169630;18;0;false;false;0;0;0;;; -169648;1;0;false;false;;;;;; -169649;1;0;false;false;0;0;0;;; -169650;1;0;false;false;;;;;; -169651;4;1;false;false;127;0;85;;; -169655;1;0;false;false;0;0;0;;; -169656;3;0;false;false;;;;;; -169659;9;0;false;false;0;0;0;;; -169668;1;0;false;false;;;;;; -169669;1;0;false;false;0;0;0;;; -169670;1;0;false;false;;;;;; -169671;4;1;false;false;127;0;85;;; -169675;1;0;false;false;0;0;0;;; -169676;3;0;false;false;;;;;; -169679;11;0;false;false;0;0;0;;; -169690;1;0;false;false;;;;;; -169691;1;0;false;false;0;0;0;;; -169692;1;0;false;false;;;;;; -169693;4;1;false;false;127;0;85;;; -169697;1;0;false;false;0;0;0;;; -169698;3;0;false;false;;;;;; -169701;9;0;false;false;0;0;0;;; -169710;1;0;false;false;;;;;; -169711;1;0;false;false;0;0;0;;; -169712;1;0;false;false;;;;;; -169713;4;1;false;false;127;0;85;;; -169717;1;0;false;false;0;0;0;;; -169718;3;0;false;false;;;;;; -169721;20;0;false;false;0;0;0;;; -169741;1;0;false;false;;;;;; -169742;1;0;false;false;0;0;0;;; -169743;1;0;false;false;;;;;; -169744;4;1;false;false;127;0;85;;; -169748;1;0;false;false;0;0;0;;; -169749;3;0;false;false;;;;;; -169752;12;0;false;false;0;0;0;;; -169764;1;0;false;false;;;;;; -169765;1;0;false;false;0;0;0;;; -169766;1;0;false;false;;;;;; -169767;4;1;false;false;127;0;85;;; -169771;1;0;false;false;0;0;0;;; -169772;3;0;false;false;;;;;; -169775;10;0;false;false;0;0;0;;; -169785;1;0;false;false;;;;;; -169786;1;0;false;false;0;0;0;;; -169787;1;0;false;false;;;;;; -169788;4;1;false;false;127;0;85;;; -169792;1;0;false;false;0;0;0;;; -169793;3;0;false;false;;;;;; -169796;10;0;false;false;0;0;0;;; -169806;1;0;false;false;;;;;; -169807;1;0;false;false;0;0;0;;; -169808;1;0;false;false;;;;;; -169809;4;1;false;false;127;0;85;;; -169813;1;0;false;false;0;0;0;;; -169814;3;0;false;false;;;;;; -169817;9;0;false;false;0;0;0;;; -169826;1;0;false;false;;;;;; -169827;1;0;false;false;0;0;0;;; -169828;1;0;false;false;;;;;; -169829;4;1;false;false;127;0;85;;; -169833;1;0;false;false;0;0;0;;; -169834;2;0;false;false;;;;;; -169836;1;0;false;false;0;0;0;;; -169837;2;0;false;false;;;;;; -169839;3;0;false;false;63;95;191;;; -169842;4;0;false;false;;;;;; -169846;1;0;false;false;63;95;191;;; -169847;1;0;false;false;;;;;; -169848;7;0;false;false;63;95;191;;; -169855;1;0;false;false;;;;;; -169856;3;0;false;false;63;95;191;;; -169859;1;0;false;false;;;;;; -169860;6;0;false;false;63;95;191;;; -169866;1;0;false;false;;;;;; -169867;13;0;false;false;63;95;191;;; -169880;3;0;false;false;;;;;; -169883;2;0;false;false;63;95;191;;; -169885;2;0;false;false;;;;;; -169887;4;1;false;false;127;0;85;;; -169891;1;0;false;false;;;;;; -169892;28;0;false;false;0;0;0;;; -169920;1;0;false;false;;;;;; -169921;6;0;false;false;0;0;0;;; -169927;1;0;false;false;;;;;; -169928;1;0;false;false;0;0;0;;; -169929;3;0;false;false;;;;;; -169932;3;1;false;false;127;0;85;;; -169935;1;0;false;false;;;;;; -169936;11;0;false;false;0;0;0;;; -169947;1;0;false;false;;;;;; -169948;1;0;false;false;0;0;0;;; -169949;1;0;false;false;;;;;; -169950;33;0;false;false;0;0;0;;; -169983;1;0;false;false;;;;;; -169984;1;0;false;false;0;0;0;;; -169985;1;0;false;false;;;;;; -169986;23;0;false;false;0;0;0;;; -170009;3;0;false;false;;;;;; -170012;30;0;false;false;0;0;0;;; -170042;2;0;false;false;;;;;; -170044;1;0;false;false;0;0;0;;; -170045;2;0;false;false;;;;;; -170047;3;0;false;false;63;95;191;;; -170050;3;0;false;false;;;;;; -170053;1;0;false;false;63;95;191;;; -170054;1;0;false;false;;;;;; -170055;2;0;false;false;63;95;191;;; -170057;1;0;false;false;;;;;; -170058;2;0;false;false;63;95;191;;; -170060;1;0;false;false;;;;;; -170061;6;0;false;false;63;95;191;;; -170067;1;0;false;false;;;;;; -170068;3;0;false;false;63;95;191;;; -170071;1;0;false;false;;;;;; -170072;4;0;false;false;63;95;191;;; -170076;1;0;false;false;;;;;; -170077;10;0;false;false;63;95;191;;; -170087;1;0;false;false;;;;;; -170088;3;0;false;false;63;95;191;;; -170091;1;0;false;false;;;;;; -170092;3;0;false;false;63;95;191;;; -170095;1;0;false;false;;;;;; -170096;3;0;false;false;63;95;191;;; -170099;1;0;false;false;;;;;; -170100;6;0;false;false;63;95;191;;; -170106;1;0;false;false;;;;;; -170107;7;0;false;false;63;95;191;;; -170114;1;0;false;false;;;;;; -170115;3;0;false;false;63;95;191;;; -170118;1;0;false;false;;;;;; -170119;7;0;false;false;63;95;191;;; -170126;3;0;false;false;;;;;; -170129;1;0;false;false;63;95;191;;; -170130;1;0;false;false;;;;;; -170131;10;0;false;false;63;95;191;;; -170141;1;0;false;false;;;;;; -170142;2;0;false;false;63;95;191;;; -170144;1;0;false;false;;;;;; -170145;1;0;false;false;63;95;191;;; -170146;1;0;false;false;;;;;; -170147;9;0;false;false;63;95;191;;; -170156;1;0;false;false;;;;;; -170157;3;0;false;false;63;95;191;;; -170160;1;0;false;false;;;;;; -170161;4;0;false;false;63;95;191;;; -170165;1;0;false;false;;;;;; -170166;7;0;false;false;63;95;191;;; -170173;1;0;false;false;;;;;; -170174;5;0;false;false;63;95;191;;; -170179;1;0;false;false;;;;;; -170180;2;0;false;false;63;95;191;;; -170182;1;0;false;false;;;;;; -170183;2;0;false;false;63;95;191;;; -170185;1;0;false;false;;;;;; -170186;3;0;false;false;63;95;191;;; -170189;1;0;false;false;;;;;; -170190;8;0;false;false;63;95;191;;; -170198;3;0;false;false;;;;;; -170201;1;0;false;false;63;95;191;;; -170202;1;0;false;false;;;;;; -170203;3;0;false;false;127;127;159;;; -170206;3;0;false;false;;;;;; -170209;1;0;false;false;63;95;191;;; -170210;3;0;false;false;;;;;; -170213;1;0;false;false;63;95;191;;; -170214;1;0;false;false;;;;;; -170215;7;1;false;false;127;159;191;;; -170222;5;0;false;false;63;95;191;;; -170227;1;0;false;false;;;;;; -170228;8;0;false;false;63;95;191;;; -170236;1;0;false;false;;;;;; -170237;5;0;false;false;63;95;191;;; -170242;3;0;false;false;;;;;; -170245;2;0;false;false;63;95;191;;; -170247;2;0;false;false;;;;;; -170249;4;1;false;false;127;0;85;;; -170253;1;0;false;false;;;;;; -170254;15;0;false;false;0;0;0;;; -170269;1;0;false;false;;;;;; -170270;6;0;false;false;0;0;0;;; -170276;1;0;false;false;;;;;; -170277;1;0;false;false;0;0;0;;; -170278;3;0;false;false;;;;;; -170281;3;1;false;false;127;0;85;;; -170284;1;0;false;false;;;;;; -170285;7;0;false;false;0;0;0;;; -170292;3;0;false;false;;;;;; -170295;9;0;false;false;0;0;0;;; -170304;1;0;false;false;;;;;; -170305;1;0;false;false;0;0;0;;; -170306;1;0;false;false;;;;;; -170307;4;1;false;false;127;0;85;;; -170311;1;0;false;false;0;0;0;;; -170312;3;0;false;false;;;;;; -170315;2;1;false;false;127;0;85;;; -170317;1;0;false;false;;;;;; -170318;14;0;false;false;0;0;0;;; -170332;1;0;false;false;;;;;; -170333;2;0;false;false;0;0;0;;; -170335;1;0;false;false;;;;;; -170336;2;0;false;false;0;0;0;;; -170338;1;0;false;false;;;;;; -170339;1;0;false;false;0;0;0;;; -170340;4;0;false;false;;;;;; -170344;35;0;false;false;63;127;95;;; -170379;2;0;false;false;;;;;; -170381;6;0;false;false;0;0;0;;; -170387;1;0;false;false;;;;;; -170388;1;0;false;false;0;0;0;;; -170389;1;0;false;false;;;;;; -170390;27;0;false;false;0;0;0;;; -170417;1;0;false;false;;;;;; -170418;1;0;false;false;0;0;0;;; -170419;1;0;false;false;;;;;; -170420;17;0;false;false;0;0;0;;; -170437;3;0;false;false;;;;;; -170440;1;0;false;false;0;0;0;;; -170441;3;0;false;false;;;;;; -170444;4;1;false;false;127;0;85;;; -170448;1;0;false;false;;;;;; -170449;1;0;false;false;0;0;0;;; -170450;4;0;false;false;;;;;; -170454;26;0;false;false;63;127;95;;; -170480;2;0;false;false;;;;;; -170482;6;0;false;false;0;0;0;;; -170488;1;0;false;false;;;;;; -170489;1;0;false;false;0;0;0;;; -170490;1;0;false;false;;;;;; -170491;29;0;false;false;0;0;0;;; -170520;1;0;false;false;;;;;; -170521;1;0;false;false;0;0;0;;; -170522;1;0;false;false;;;;;; -170523;17;0;false;false;0;0;0;;; -170540;4;0;false;false;;;;;; -170544;2;1;false;false;127;0;85;;; -170546;1;0;false;false;;;;;; -170547;7;0;false;false;0;0;0;;; -170554;1;0;false;false;;;;;; -170555;2;0;false;false;0;0;0;;; -170557;1;0;false;false;;;;;; -170558;9;0;false;false;0;0;0;;; -170567;1;0;false;false;;;;;; -170568;1;0;false;false;0;0;0;;; -170569;6;0;false;false;;;;;; -170575;39;0;false;false;63;127;95;;; -170614;3;0;false;false;;;;;; -170617;2;1;false;false;127;0;85;;; -170619;1;0;false;false;;;;;; -170620;17;0;false;false;0;0;0;;; -170637;1;0;false;false;;;;;; -170638;1;0;false;false;0;0;0;;; -170639;1;0;false;false;;;;;; -170640;9;0;false;false;0;0;0;;; -170649;1;0;false;false;;;;;; -170650;2;0;false;false;0;0;0;;; -170652;1;0;false;false;;;;;; -170653;1;0;false;false;0;0;0;;; -170654;1;0;false;false;;;;;; -170655;2;0;false;false;0;0;0;;; -170657;1;0;false;false;;;;;; -170658;16;0;false;false;0;0;0;;; -170674;1;0;false;false;;;;;; -170675;2;0;false;false;0;0;0;;; -170677;1;0;false;false;;;;;; -170678;2;0;false;false;0;0;0;;; -170680;1;0;false;false;;;;;; -170681;2;0;false;false;0;0;0;;; -170683;1;0;false;false;;;;;; -170684;15;0;false;false;0;0;0;;; -170699;1;0;false;false;;;;;; -170700;2;0;false;false;0;0;0;;; -170702;1;0;false;false;;;;;; -170703;3;0;false;false;0;0;0;;; -170706;1;0;false;false;;;;;; -170707;1;0;false;false;0;0;0;;; -170708;6;0;false;false;;;;;; -170714;63;0;false;false;63;127;95;;; -170777;4;0;false;false;;;;;; -170781;64;0;false;false;63;127;95;;; -170845;4;0;false;false;;;;;; -170849;3;1;false;false;127;0;85;;; -170852;1;0;false;false;;;;;; -170853;1;0;false;false;0;0;0;;; -170854;1;0;false;false;;;;;; -170855;1;0;false;false;0;0;0;;; -170856;1;0;false;false;;;;;; -170857;15;0;false;false;0;0;0;;; -170872;1;0;false;false;;;;;; -170873;1;0;false;false;0;0;0;;; -170874;1;0;false;false;;;;;; -170875;3;0;false;false;0;0;0;;; -170878;6;0;false;false;;;;;; -170884;6;0;false;false;0;0;0;;; -170890;1;0;false;false;;;;;; -170891;1;0;false;false;0;0;0;;; -170892;1;0;false;false;;;;;; -170893;15;0;false;false;0;0;0;;; -170908;1;0;false;false;;;;;; -170909;1;0;false;false;0;0;0;;; -170910;1;0;false;false;;;;;; -170911;17;0;false;false;0;0;0;;; -170928;5;0;false;false;;;;;; -170933;1;0;false;false;0;0;0;;; -170934;4;0;false;false;;;;;; -170938;1;0;false;false;0;0;0;;; -170939;3;0;false;false;;;;;; -170942;1;0;false;false;0;0;0;;; -170943;3;0;false;false;;;;;; -170946;2;1;false;false;127;0;85;;; -170948;1;0;false;false;;;;;; -170949;7;0;false;false;0;0;0;;; -170956;1;0;false;false;;;;;; -170957;2;0;false;false;0;0;0;;; -170959;1;0;false;false;;;;;; -170960;9;0;false;false;0;0;0;;; -170969;1;0;false;false;;;;;; -170970;1;0;false;false;0;0;0;;; -170971;4;0;false;false;;;;;; -170975;7;1;false;false;127;0;85;;; -170982;1;0;false;false;;;;;; -170983;6;0;false;false;0;0;0;;; -170989;1;0;false;false;;;;;; -170990;1;0;false;false;0;0;0;;; -170991;1;0;false;false;;;;;; -170992;5;1;false;false;127;0;85;;; -170997;1;0;false;false;0;0;0;;; -170998;8;0;false;false;;;;;; -171006;2;1;false;false;127;0;85;;; -171008;1;0;false;false;;;;;; -171009;11;0;false;false;0;0;0;;; -171020;1;0;false;false;;;;;; -171021;1;0;false;false;0;0;0;;; -171022;5;0;false;false;;;;;; -171027;60;0;false;false;63;127;95;;; -171087;3;0;false;false;;;;;; -171090;63;0;false;false;63;127;95;;; -171153;3;0;false;false;;;;;; -171156;60;0;false;false;63;127;95;;; -171216;3;0;false;false;;;;;; -171219;36;0;false;false;63;127;95;;; -171255;3;0;false;false;;;;;; -171258;6;0;false;false;0;0;0;;; -171264;1;0;false;false;;;;;; -171265;1;0;false;false;0;0;0;;; -171266;1;0;false;false;;;;;; -171267;16;0;false;false;0;0;0;;; -171283;1;0;false;false;;;;;; -171284;1;0;false;false;0;0;0;;; -171285;1;0;false;false;;;;;; -171286;12;0;false;false;0;0;0;;; -171298;1;0;false;false;;;;;; -171299;2;0;false;false;0;0;0;;; -171301;1;0;false;false;;;;;; -171302;1;0;false;false;0;0;0;;; -171303;1;0;false;false;;;;;; -171304;2;0;false;false;0;0;0;;; -171306;7;0;false;false;;;;;; -171313;16;0;false;false;0;0;0;;; -171329;1;0;false;false;;;;;; -171330;1;0;false;false;0;0;0;;; -171331;1;0;false;false;;;;;; -171332;12;0;false;false;0;0;0;;; -171344;1;0;false;false;;;;;; -171345;1;0;false;false;0;0;0;;; -171346;1;0;false;false;;;;;; -171347;11;0;false;false;0;0;0;;; -171358;1;0;false;false;;;;;; -171359;2;0;false;false;0;0;0;;; -171361;1;0;false;false;;;;;; -171362;2;0;false;false;0;0;0;;; -171364;4;0;false;false;;;;;; -171368;1;0;false;false;0;0;0;;; -171369;1;0;false;false;;;;;; -171370;4;1;false;false;127;0;85;;; -171374;1;0;false;false;;;;;; -171375;2;1;false;false;127;0;85;;; -171377;1;0;false;false;;;;;; -171378;10;0;false;false;0;0;0;;; -171388;1;0;false;false;;;;;; -171389;1;0;false;false;0;0;0;;; -171390;5;0;false;false;;;;;; -171395;60;0;false;false;63;127;95;;; -171455;3;0;false;false;;;;;; -171458;63;0;false;false;63;127;95;;; -171521;3;0;false;false;;;;;; -171524;52;0;false;false;63;127;95;;; -171576;3;0;false;false;;;;;; -171579;34;0;false;false;63;127;95;;; -171613;3;0;false;false;;;;;; -171616;6;0;false;false;0;0;0;;; -171622;1;0;false;false;;;;;; -171623;1;0;false;false;0;0;0;;; -171624;1;0;false;false;;;;;; -171625;16;0;false;false;0;0;0;;; -171641;1;0;false;false;;;;;; -171642;1;0;false;false;0;0;0;;; -171643;1;0;false;false;;;;;; -171644;9;0;false;false;0;0;0;;; -171653;1;0;false;false;;;;;; -171654;2;0;false;false;0;0;0;;; -171656;1;0;false;false;;;;;; -171657;1;0;false;false;0;0;0;;; -171658;1;0;false;false;;;;;; -171659;2;0;false;false;0;0;0;;; -171661;7;0;false;false;;;;;; -171668;16;0;false;false;0;0;0;;; -171684;1;0;false;false;;;;;; -171685;1;0;false;false;0;0;0;;; -171686;1;0;false;false;;;;;; -171687;9;0;false;false;0;0;0;;; -171696;1;0;false;false;;;;;; -171697;1;0;false;false;0;0;0;;; -171698;1;0;false;false;;;;;; -171699;11;0;false;false;0;0;0;;; -171710;1;0;false;false;;;;;; -171711;2;0;false;false;0;0;0;;; -171713;1;0;false;false;;;;;; -171714;2;0;false;false;0;0;0;;; -171716;4;0;false;false;;;;;; -171720;1;0;false;false;0;0;0;;; -171721;1;0;false;false;;;;;; -171722;4;1;false;false;127;0;85;;; -171726;1;0;false;false;;;;;; -171727;1;0;false;false;0;0;0;;; -171728;5;0;false;false;;;;;; -171733;60;0;false;false;63;127;95;;; -171793;3;0;false;false;;;;;; -171796;62;0;false;false;63;127;95;;; -171858;3;0;false;false;;;;;; -171861;59;0;false;false;63;127;95;;; -171920;3;0;false;false;;;;;; -171923;44;0;false;false;63;127;95;;; -171967;3;0;false;false;;;;;; -171970;6;0;false;false;0;0;0;;; -171976;1;0;false;false;;;;;; -171977;1;0;false;false;0;0;0;;; -171978;1;0;false;false;;;;;; -171979;16;0;false;false;0;0;0;;; -171995;1;0;false;false;;;;;; -171996;1;0;false;false;0;0;0;;; -171997;1;0;false;false;;;;;; -171998;8;0;false;false;0;0;0;;; -172006;1;0;false;false;;;;;; -172007;2;0;false;false;0;0;0;;; -172009;1;0;false;false;;;;;; -172010;1;0;false;false;0;0;0;;; -172011;1;0;false;false;;;;;; -172012;2;0;false;false;0;0;0;;; -172014;8;0;false;false;;;;;; -172022;16;0;false;false;0;0;0;;; -172038;1;0;false;false;;;;;; -172039;1;0;false;false;0;0;0;;; -172040;1;0;false;false;;;;;; -172041;9;0;false;false;0;0;0;;; -172050;1;0;false;false;;;;;; -172051;2;0;false;false;0;0;0;;; -172053;1;0;false;false;;;;;; -172054;1;0;false;false;0;0;0;;; -172055;1;0;false;false;;;;;; -172056;2;0;false;false;0;0;0;;; -172058;7;0;false;false;;;;;; -172065;16;0;false;false;0;0;0;;; -172081;1;0;false;false;;;;;; -172082;1;0;false;false;0;0;0;;; -172083;1;0;false;false;;;;;; -172084;8;0;false;false;0;0;0;;; -172092;1;0;false;false;;;;;; -172093;1;0;false;false;0;0;0;;; -172094;1;0;false;false;;;;;; -172095;11;0;false;false;0;0;0;;; -172106;1;0;false;false;;;;;; -172107;2;0;false;false;0;0;0;;; -172109;1;0;false;false;;;;;; -172110;1;0;false;false;0;0;0;;; -172111;1;0;false;false;;;;;; -172112;2;0;false;false;0;0;0;;; -172114;7;0;false;false;;;;;; -172121;16;0;false;false;0;0;0;;; -172137;1;0;false;false;;;;;; -172138;1;0;false;false;0;0;0;;; -172139;1;0;false;false;;;;;; -172140;9;0;false;false;0;0;0;;; -172149;1;0;false;false;;;;;; -172150;1;0;false;false;0;0;0;;; -172151;1;0;false;false;;;;;; -172152;11;0;false;false;0;0;0;;; -172163;1;0;false;false;;;;;; -172164;2;0;false;false;0;0;0;;; -172166;1;0;false;false;;;;;; -172167;2;0;false;false;0;0;0;;; -172169;4;0;false;false;;;;;; -172173;1;0;false;false;0;0;0;;; -172174;4;0;false;false;;;;;; -172178;73;0;false;false;63;127;95;;; -172251;2;0;false;false;;;;;; -172253;17;0;false;false;63;127;95;;; -172270;2;0;false;false;;;;;; -172272;2;1;false;false;127;0;85;;; -172274;1;0;false;false;;;;;; -172275;8;0;false;false;0;0;0;;; -172283;1;0;false;false;;;;;; -172284;2;0;false;false;0;0;0;;; -172286;1;0;false;false;;;;;; -172287;15;0;false;false;0;0;0;;; -172302;1;0;false;false;;;;;; -172303;1;0;false;false;0;0;0;;; -172304;1;0;false;false;;;;;; -172305;2;0;false;false;0;0;0;;; -172307;1;0;false;false;;;;;; -172308;2;0;false;false;0;0;0;;; -172310;1;0;false;false;;;;;; -172311;15;0;false;false;0;0;0;;; -172326;1;0;false;false;;;;;; -172327;2;0;false;false;0;0;0;;; -172329;1;0;false;false;;;;;; -172330;7;0;false;false;0;0;0;;; -172337;1;0;false;false;;;;;; -172338;2;0;false;false;0;0;0;;; -172340;9;0;false;false;;;;;; -172349;15;0;false;false;0;0;0;;; -172364;1;0;false;false;;;;;; -172365;2;0;false;false;0;0;0;;; -172367;1;0;false;false;;;;;; -172368;6;0;false;false;0;0;0;;; -172374;1;0;false;false;;;;;; -172375;2;0;false;false;0;0;0;;; -172377;1;0;false;false;;;;;; -172378;15;0;false;false;0;0;0;;; -172393;1;0;false;false;;;;;; -172394;2;0;false;false;0;0;0;;; -172396;1;0;false;false;;;;;; -172397;6;0;false;false;0;0;0;;; -172403;1;0;false;false;;;;;; -172404;2;0;false;false;0;0;0;;; -172406;9;0;false;false;;;;;; -172415;15;0;false;false;0;0;0;;; -172430;1;0;false;false;;;;;; -172431;2;0;false;false;0;0;0;;; -172433;1;0;false;false;;;;;; -172434;4;0;false;false;0;0;0;;; -172438;1;0;false;false;;;;;; -172439;1;0;false;false;0;0;0;;; -172440;5;0;false;false;;;;;; -172445;27;0;false;false;0;0;0;;; -172472;4;0;false;false;;;;;; -172476;1;0;false;false;0;0;0;;; -172477;3;0;false;false;;;;;; -172480;1;0;false;false;0;0;0;;; -172481;3;0;false;false;;;;;; -172484;4;1;false;false;127;0;85;;; -172488;1;0;false;false;;;;;; -172489;1;0;false;false;0;0;0;;; -172490;4;0;false;false;;;;;; -172494;21;0;false;false;0;0;0;;; -172515;5;0;false;false;;;;;; -172520;1;0;false;false;0;0;0;;; -172521;2;0;false;false;;;;;; -172523;1;0;false;false;0;0;0;;; -172524;2;0;false;false;;;;;; -172526;3;0;false;false;63;95;191;;; -172529;3;0;false;false;;;;;; -172532;1;0;false;false;63;95;191;;; -172533;1;0;false;false;;;;;; -172534;2;0;false;false;63;95;191;;; -172536;1;0;false;false;;;;;; -172537;1;0;false;false;63;95;191;;; -172538;1;0;false;false;;;;;; -172539;9;0;false;false;63;95;191;;; -172548;1;0;false;false;;;;;; -172549;8;0;false;false;63;95;191;;; -172557;1;0;false;false;;;;;; -172558;7;0;false;false;63;95;191;;; -172565;1;0;false;false;;;;;; -172566;6;0;false;false;63;95;191;;; -172572;1;0;false;false;;;;;; -172573;4;0;false;false;63;95;191;;; -172577;1;0;false;false;;;;;; -172578;3;0;false;false;63;95;191;;; -172581;1;0;false;false;;;;;; -172582;3;0;false;false;63;95;191;;; -172585;1;0;false;false;;;;;; -172586;4;0;false;false;63;95;191;;; -172590;1;0;false;false;;;;;; -172591;3;0;false;false;63;95;191;;; -172594;1;0;false;false;;;;;; -172595;7;0;false;false;63;95;191;;; -172602;3;0;false;false;;;;;; -172605;1;0;false;false;63;95;191;;; -172606;1;0;false;false;;;;;; -172607;6;0;false;false;63;95;191;;; -172613;1;0;false;false;;;;;; -172614;2;0;false;false;63;95;191;;; -172616;1;0;false;false;;;;;; -172617;10;0;false;false;63;95;191;;; -172627;3;0;false;false;;;;;; -172630;1;0;false;false;63;95;191;;; -172631;1;0;false;false;;;;;; -172632;3;0;false;false;127;127;159;;; -172635;3;0;false;false;;;;;; -172638;1;0;false;false;63;95;191;;; -172639;3;0;false;false;;;;;; -172642;1;0;false;false;63;95;191;;; -172643;1;0;false;false;;;;;; -172644;7;1;false;false;127;159;191;;; -172651;5;0;false;false;63;95;191;;; -172656;1;0;false;false;;;;;; -172657;8;0;false;false;63;95;191;;; -172665;1;0;false;false;;;;;; -172666;5;0;false;false;63;95;191;;; -172671;3;0;false;false;;;;;; -172674;2;0;false;false;63;95;191;;; -172676;2;0;false;false;;;;;; -172678;4;1;false;false;127;0;85;;; -172682;1;0;false;false;;;;;; -172683;19;0;false;false;0;0;0;;; -172702;1;0;false;false;;;;;; -172703;6;0;false;false;0;0;0;;; -172709;1;0;false;false;;;;;; -172710;1;0;false;false;0;0;0;;; -172711;3;0;false;false;;;;;; -172714;2;1;false;false;127;0;85;;; -172716;1;0;false;false;;;;;; -172717;19;0;false;false;0;0;0;;; -172736;1;0;false;false;;;;;; -172737;2;0;false;false;0;0;0;;; -172739;1;0;false;false;;;;;; -172740;4;1;false;false;127;0;85;;; -172744;1;0;false;false;0;0;0;;; -172745;1;0;false;false;;;;;; -172746;1;0;false;false;0;0;0;;; -172747;4;0;false;false;;;;;; -172751;18;0;false;false;0;0;0;;; -172769;1;0;false;false;;;;;; -172770;1;0;false;false;0;0;0;;; -172771;1;0;false;false;;;;;; -172772;3;1;false;false;127;0;85;;; -172775;1;0;false;false;;;;;; -172776;18;0;false;false;0;0;0;;; -172794;1;0;false;false;;;;;; -172795;13;0;false;false;0;0;0;;; -172808;3;0;false;false;;;;;; -172811;1;0;false;false;0;0;0;;; -172812;6;0;false;false;;;;;; -172818;5;0;false;false;0;0;0;;; -172823;1;0;false;false;;;;;; -172824;11;0;false;false;0;0;0;;; -172835;1;0;false;false;;;;;; -172836;1;0;false;false;0;0;0;;; -172837;1;0;false;false;;;;;; -172838;3;1;false;false;127;0;85;;; -172841;1;0;false;false;;;;;; -172842;8;0;false;false;0;0;0;;; -172850;3;0;false;false;;;;;; -172853;21;0;false;false;0;0;0;;; -172874;1;0;false;false;;;;;; -172875;1;0;false;false;0;0;0;;; -172876;1;0;false;false;;;;;; -172877;16;0;false;false;0;0;0;;; -172893;3;0;false;false;;;;;; -172896;19;0;false;false;0;0;0;;; -172915;1;0;false;false;;;;;; -172916;1;0;false;false;0;0;0;;; -172917;1;0;false;false;;;;;; -172918;14;0;false;false;0;0;0;;; -172932;3;0;false;false;;;;;; -172935;21;0;false;false;0;0;0;;; -172956;1;0;false;false;;;;;; -172957;1;0;false;false;0;0;0;;; -172958;1;0;false;false;;;;;; -172959;16;0;false;false;0;0;0;;; -172975;3;0;false;false;;;;;; -172978;16;0;false;false;0;0;0;;; -172994;1;0;false;false;;;;;; -172995;1;0;false;false;0;0;0;;; -172996;1;0;false;false;;;;;; -172997;4;1;false;false;127;0;85;;; -173001;1;0;false;false;0;0;0;;; -173002;3;0;false;false;;;;;; -173005;26;0;false;false;0;0;0;;; -173031;1;0;false;false;;;;;; -173032;13;0;false;false;0;0;0;;; -173045;3;0;false;false;;;;;; -173048;2;1;false;false;127;0;85;;; -173050;1;0;false;false;;;;;; -173051;18;0;false;false;0;0;0;;; -173069;1;0;false;false;;;;;; -173070;1;0;false;false;0;0;0;;; -173071;4;0;false;false;;;;;; -173075;17;0;false;false;0;0;0;;; -173092;3;0;false;false;;;;;; -173095;1;0;false;false;0;0;0;;; -173096;2;0;false;false;;;;;; -173098;1;0;false;false;0;0;0;;; -173099;2;0;false;false;;;;;; -173101;3;0;false;false;63;95;191;;; -173104;3;0;false;false;;;;;; -173107;1;0;false;false;63;95;191;;; -173108;1;0;false;false;;;;;; -173109;6;0;false;false;63;95;191;;; -173115;1;0;false;false;;;;;; -173116;3;0;false;false;63;95;191;;; -173119;1;0;false;false;;;;;; -173120;9;0;false;false;63;95;191;;; -173129;1;0;false;false;;;;;; -173130;10;0;false;false;63;95;191;;; -173140;3;0;false;false;;;;;; -173143;1;0;false;false;63;95;191;;; -173144;1;0;false;false;;;;;; -173145;3;0;false;false;127;127;159;;; -173148;3;0;false;false;;;;;; -173151;1;0;false;false;63;95;191;;; -173152;3;0;false;false;;;;;; -173155;1;0;false;false;63;95;191;;; -173156;1;0;false;false;;;;;; -173157;7;1;false;false;127;159;191;;; -173164;5;0;false;false;63;95;191;;; -173169;1;0;false;false;;;;;; -173170;8;0;false;false;63;95;191;;; -173178;1;0;false;false;;;;;; -173179;5;0;false;false;63;95;191;;; -173184;3;0;false;false;;;;;; -173187;2;0;false;false;63;95;191;;; -173189;2;0;false;false;;;;;; -173191;4;1;false;false;127;0;85;;; -173195;1;0;false;false;;;;;; -173196;17;0;false;false;0;0;0;;; -173213;1;0;false;false;;;;;; -173214;6;0;false;false;0;0;0;;; -173220;1;0;false;false;;;;;; -173221;1;0;false;false;0;0;0;;; -173222;3;0;false;false;;;;;; -173225;2;1;false;false;127;0;85;;; -173227;1;0;false;false;;;;;; -173228;19;0;false;false;0;0;0;;; -173247;1;0;false;false;;;;;; -173248;2;0;false;false;0;0;0;;; -173250;1;0;false;false;;;;;; -173251;4;1;false;false;127;0;85;;; -173255;1;0;false;false;0;0;0;;; -173256;1;0;false;false;;;;;; -173257;1;0;false;false;0;0;0;;; -173258;4;0;false;false;;;;;; -173262;2;1;false;false;127;0;85;;; -173264;1;0;false;false;;;;;; -173265;21;0;false;false;0;0;0;;; -173286;1;0;false;false;;;;;; -173287;2;0;false;false;0;0;0;;; -173289;1;0;false;false;;;;;; -173290;11;0;false;false;0;0;0;;; -173301;1;0;false;false;;;;;; -173302;2;0;false;false;0;0;0;;; -173304;1;0;false;false;;;;;; -173305;20;0;false;false;0;0;0;;; -173325;1;0;false;false;;;;;; -173326;2;0;false;false;0;0;0;;; -173328;1;0;false;false;;;;;; -173329;12;0;false;false;0;0;0;;; -173341;1;0;false;false;;;;;; -173342;1;0;false;false;0;0;0;;; -173343;5;0;false;false;;;;;; -173348;3;1;false;false;127;0;85;;; -173351;1;0;false;false;;;;;; -173352;1;0;false;false;0;0;0;;; -173353;6;0;false;false;;;;;; -173359;2;1;false;false;127;0;85;;; -173361;1;0;false;false;;;;;; -173362;12;0;false;false;0;0;0;;; -173374;1;0;false;false;;;;;; -173375;1;0;false;false;0;0;0;;; -173376;1;0;false;false;;;;;; -173377;11;0;false;false;0;0;0;;; -173388;1;0;false;false;;;;;; -173389;1;0;false;false;0;0;0;;; -173390;1;0;false;false;;;;;; -173391;2;0;false;false;0;0;0;;; -173393;1;0;false;false;;;;;; -173394;1;0;false;false;0;0;0;;; -173395;7;0;false;false;;;;;; -173402;32;0;false;false;0;0;0;;; -173434;1;0;false;false;;;;;; -173435;11;0;false;false;0;0;0;;; -173446;1;0;false;false;;;;;; -173447;1;0;false;false;0;0;0;;; -173448;1;0;false;false;;;;;; -173449;12;0;false;false;0;0;0;;; -173461;1;0;false;false;;;;;; -173462;25;0;false;false;0;0;0;;; -173487;6;0;false;false;;;;;; -173493;1;0;false;false;0;0;0;;; -173494;5;0;false;false;;;;;; -173499;1;0;false;false;0;0;0;;; -173500;5;0;false;false;;;;;; -173505;5;1;false;false;127;0;85;;; -173510;1;0;false;false;;;;;; -173511;9;0;false;false;0;0;0;;; -173520;1;0;false;false;;;;;; -173521;6;0;false;false;0;0;0;;; -173527;1;0;false;false;;;;;; -173528;1;0;false;false;0;0;0;;; -173529;6;0;false;false;;;;;; -173535;69;0;false;false;63;127;95;;; -173604;4;0;false;false;;;;;; -173608;64;0;false;false;63;127;95;;; -173672;4;0;false;false;;;;;; -173676;18;0;false;false;63;127;95;;; -173694;4;0;false;false;;;;;; -173698;47;0;false;false;63;127;95;;; -173745;4;0;false;false;;;;;; -173749;2;1;false;false;127;0;85;;; -173751;1;0;false;false;;;;;; -173752;11;0;false;false;0;0;0;;; -173763;1;0;false;false;;;;;; -173764;2;0;false;false;0;0;0;;; -173766;1;0;false;false;;;;;; -173767;31;0;false;false;0;0;0;;; -173798;1;0;false;false;;;;;; -173799;1;0;false;false;0;0;0;;; -173800;7;0;false;false;;;;;; -173807;5;1;false;false;127;0;85;;; -173812;1;0;false;false;;;;;; -173813;6;0;false;false;0;0;0;;; -173819;6;0;false;false;;;;;; -173825;1;0;false;false;0;0;0;;; -173826;5;0;false;false;;;;;; -173831;1;0;false;false;0;0;0;;; -173832;4;0;false;false;;;;;; -173836;1;0;false;false;0;0;0;;; -173837;3;0;false;false;;;;;; -173840;1;0;false;false;0;0;0;;; -173841;3;0;false;false;;;;;; -173844;18;0;false;false;0;0;0;;; -173862;1;0;false;false;;;;;; -173863;1;0;false;false;0;0;0;;; -173864;1;0;false;false;;;;;; -173865;4;1;false;false;127;0;85;;; -173869;1;0;false;false;0;0;0;;; -173870;2;0;false;false;;;;;; -173872;1;0;false;false;0;0;0;;; -173873;2;0;false;false;;;;;; -173875;3;0;false;false;63;95;191;;; -173878;3;0;false;false;;;;;; -173881;1;0;false;false;63;95;191;;; -173882;1;0;false;false;;;;;; -173883;7;0;false;false;63;95;191;;; -173890;1;0;false;false;;;;;; -173891;3;0;false;false;63;95;191;;; -173894;1;0;false;false;;;;;; -173895;5;0;false;false;63;95;191;;; -173900;1;0;false;false;;;;;; -173901;8;0;false;false;63;95;191;;; -173909;1;0;false;false;;;;;; -173910;3;0;false;false;63;95;191;;; -173913;1;0;false;false;;;;;; -173914;9;0;false;false;63;95;191;;; -173923;1;0;false;false;;;;;; -173924;2;0;false;false;63;95;191;;; -173926;1;0;false;false;;;;;; -173927;5;0;false;false;63;95;191;;; -173932;1;0;false;false;;;;;; -173933;6;0;false;false;63;95;191;;; -173939;1;0;false;false;;;;;; -173940;1;0;false;false;63;95;191;;; -173941;1;0;false;false;;;;;; -173942;3;0;false;false;63;95;191;;; -173945;1;0;false;false;;;;;; -173946;4;0;false;false;63;95;191;;; -173950;4;0;false;false;;;;;; -173954;1;0;false;false;63;95;191;;; -173955;1;0;false;false;;;;;; -173956;8;0;false;false;63;95;191;;; -173964;3;0;false;false;;;;;; -173967;2;0;false;false;63;95;191;;; -173969;2;0;false;false;;;;;; -173971;4;1;false;false;127;0;85;;; -173975;1;0;false;false;;;;;; -173976;28;0;false;false;0;0;0;;; -174004;1;0;false;false;;;;;; -174005;6;0;false;false;0;0;0;;; -174011;1;0;false;false;;;;;; -174012;1;0;false;false;0;0;0;;; -174013;3;0;false;false;;;;;; -174016;2;1;false;false;127;0;85;;; -174018;1;0;false;false;;;;;; -174019;13;0;false;false;0;0;0;;; -174032;1;0;false;false;;;;;; -174033;2;0;false;false;0;0;0;;; -174035;1;0;false;false;;;;;; -174036;1;0;false;false;0;0;0;;; -174037;1;0;false;false;;;;;; -174038;2;0;false;false;0;0;0;;; -174040;1;0;false;false;;;;;; -174041;20;0;false;false;0;0;0;;; -174061;1;0;false;false;;;;;; -174062;1;0;false;false;0;0;0;;; -174063;4;0;false;false;;;;;; -174067;6;1;false;false;127;0;85;;; -174073;1;0;false;false;0;0;0;;; -174074;3;0;false;false;;;;;; -174077;1;0;false;false;0;0;0;;; -174078;3;0;false;false;;;;;; -174081;7;0;false;false;0;0;0;;; -174088;1;0;false;false;;;;;; -174089;2;0;false;false;0;0;0;;; -174091;1;0;false;false;;;;;; -174092;10;0;false;false;0;0;0;;; -174102;3;0;false;false;;;;;; -174105;16;0;false;false;0;0;0;;; -174121;1;0;false;false;;;;;; -174122;1;0;false;false;0;0;0;;; -174123;1;0;false;false;;;;;; -174124;4;1;false;false;127;0;85;;; -174128;1;0;false;false;0;0;0;;; -174129;3;0;false;false;;;;;; -174132;11;0;false;false;0;0;0;;; -174143;1;0;false;false;;;;;; -174144;1;0;false;false;0;0;0;;; -174145;1;0;false;false;;;;;; -174146;26;0;false;false;0;0;0;;; -174172;3;0;false;false;;;;;; -174175;17;0;false;false;0;0;0;;; -174192;3;0;false;false;;;;;; -174195;11;0;false;false;0;0;0;;; -174206;1;0;false;false;;;;;; -174207;1;0;false;false;0;0;0;;; -174208;1;0;false;false;;;;;; -174209;32;0;false;false;0;0;0;;; -174241;3;0;false;false;;;;;; -174244;12;0;false;false;0;0;0;;; -174256;3;0;false;false;;;;;; -174259;19;0;false;false;0;0;0;;; -174278;3;0;false;false;;;;;; -174281;20;0;false;false;0;0;0;;; -174301;1;0;false;false;;;;;; -174302;1;0;false;false;0;0;0;;; -174303;1;0;false;false;;;;;; -174304;3;1;false;false;127;0;85;;; -174307;1;0;false;false;;;;;; -174308;18;0;false;false;0;0;0;;; -174326;1;0;false;false;;;;;; -174327;13;0;false;false;0;0;0;;; -174340;2;0;false;false;;;;;; -174342;1;0;false;false;0;0;0;;; -174343;2;0;false;false;;;;;; -174345;3;0;false;false;63;95;191;;; -174348;4;0;false;false;;;;;; -174352;1;0;false;false;63;95;191;;; -174353;1;0;false;false;;;;;; -174354;7;0;false;false;63;95;191;;; -174361;1;0;false;false;;;;;; -174362;3;0;false;false;63;95;191;;; -174365;1;0;false;false;;;;;; -174366;5;0;false;false;63;95;191;;; -174371;1;0;false;false;;;;;; -174372;8;0;false;false;63;95;191;;; -174380;1;0;false;false;;;;;; -174381;3;0;false;false;63;95;191;;; -174384;1;0;false;false;;;;;; -174385;9;0;false;false;63;95;191;;; -174394;1;0;false;false;;;;;; -174395;2;0;false;false;63;95;191;;; -174397;1;0;false;false;;;;;; -174398;5;0;false;false;63;95;191;;; -174403;1;0;false;false;;;;;; -174404;6;0;false;false;63;95;191;;; -174410;1;0;false;false;;;;;; -174411;1;0;false;false;63;95;191;;; -174412;1;0;false;false;;;;;; -174413;3;0;false;false;63;95;191;;; -174416;1;0;false;false;;;;;; -174417;4;0;false;false;63;95;191;;; -174421;4;0;false;false;;;;;; -174425;1;0;false;false;63;95;191;;; -174426;1;0;false;false;;;;;; -174427;8;0;false;false;63;95;191;;; -174435;3;0;false;false;;;;;; -174438;2;0;false;false;63;95;191;;; -174440;2;0;false;false;;;;;; -174442;4;1;false;false;127;0;85;;; -174446;1;0;false;false;;;;;; -174447;21;0;false;false;0;0;0;;; -174468;1;0;false;false;;;;;; -174469;6;0;false;false;0;0;0;;; -174475;1;0;false;false;;;;;; -174476;1;0;false;false;0;0;0;;; -174477;3;0;false;false;;;;;; -174480;9;0;false;false;0;0;0;;; -174489;1;0;false;false;;;;;; -174490;1;0;false;false;0;0;0;;; -174491;1;0;false;false;;;;;; -174492;4;1;false;false;127;0;85;;; -174496;1;0;false;false;0;0;0;;; -174497;3;0;false;false;;;;;; -174500;16;0;false;false;0;0;0;;; -174516;1;0;false;false;;;;;; -174517;1;0;false;false;0;0;0;;; -174518;1;0;false;false;;;;;; -174519;5;1;false;false;127;0;85;;; -174524;1;0;false;false;0;0;0;;; -174525;3;0;false;false;;;;;; -174528;2;1;false;false;127;0;85;;; -174530;1;0;false;false;;;;;; -174531;13;0;false;false;0;0;0;;; -174544;1;0;false;false;;;;;; -174545;2;0;false;false;0;0;0;;; -174547;1;0;false;false;;;;;; -174548;2;0;false;false;0;0;0;;; -174550;1;0;false;false;;;;;; -174551;1;0;false;false;0;0;0;;; -174552;4;0;false;false;;;;;; -174556;6;0;false;false;0;0;0;;; -174562;1;0;false;false;;;;;; -174563;4;0;false;false;0;0;0;;; -174567;1;0;false;false;;;;;; -174568;1;0;false;false;0;0;0;;; -174569;1;0;false;false;;;;;; -174570;53;0;false;false;0;0;0;;; -174623;4;0;false;false;;;;;; -174627;2;1;false;false;127;0;85;;; -174629;1;0;false;false;;;;;; -174630;5;0;false;false;0;0;0;;; -174635;1;0;false;false;;;;;; -174636;2;0;false;false;0;0;0;;; -174638;1;0;false;false;;;;;; -174639;4;1;false;false;127;0;85;;; -174643;1;0;false;false;;;;;; -174644;2;0;false;false;0;0;0;;; -174646;1;0;false;false;;;;;; -174647;13;0;false;false;0;0;0;;; -174660;1;0;false;false;;;;;; -174661;1;0;false;false;0;0;0;;; -174662;1;0;false;false;;;;;; -174663;2;0;false;false;0;0;0;;; -174665;1;0;false;false;;;;;; -174666;1;0;false;false;0;0;0;;; -174667;5;0;false;false;;;;;; -174672;20;0;false;false;63;127;95;;; -174692;3;0;false;false;;;;;; -174695;3;1;false;false;127;0;85;;; -174698;1;0;false;false;;;;;; -174699;1;0;false;false;0;0;0;;; -174700;1;0;false;false;;;;;; -174701;1;0;false;false;0;0;0;;; -174702;1;0;false;false;;;;;; -174703;8;0;false;false;0;0;0;;; -174711;5;0;false;false;;;;;; -174716;3;1;false;false;127;0;85;;; -174719;1;0;false;false;;;;;; -174720;1;0;false;false;0;0;0;;; -174721;1;0;false;false;;;;;; -174722;1;0;false;false;0;0;0;;; -174723;1;0;false;false;;;;;; -174724;7;0;false;false;0;0;0;;; -174731;1;0;false;false;;;;;; -174732;1;0;false;false;0;0;0;;; -174733;1;0;false;false;;;;;; -174734;10;0;false;false;0;0;0;;; -174744;5;0;false;false;;;;;; -174749;24;0;false;false;0;0;0;;; -174773;1;0;false;false;;;;;; -174774;2;0;false;false;0;0;0;;; -174776;1;0;false;false;;;;;; -174777;5;1;false;false;127;0;85;;; -174782;2;0;false;false;0;0;0;;; -174784;5;0;false;false;;;;;; -174789;16;0;false;false;63;127;95;;; -174805;3;0;false;false;;;;;; -174808;5;0;false;false;0;0;0;;; -174813;1;0;false;false;;;;;; -174814;1;0;false;false;0;0;0;;; -174815;1;0;false;false;;;;;; -174816;1;0;false;false;0;0;0;;; -174817;1;0;false;false;;;;;; -174818;3;1;false;false;127;0;85;;; -174821;1;0;false;false;;;;;; -174822;8;0;false;false;0;0;0;;; -174830;5;0;false;false;;;;;; -174835;7;0;false;false;0;0;0;;; -174842;1;0;false;false;;;;;; -174843;1;0;false;false;0;0;0;;; -174844;1;0;false;false;;;;;; -174845;12;0;false;false;0;0;0;;; -174857;5;0;false;false;;;;;; -174862;5;0;false;false;0;0;0;;; -174867;1;0;false;false;;;;;; -174868;1;0;false;false;0;0;0;;; -174869;1;0;false;false;;;;;; -174870;12;0;false;false;0;0;0;;; -174882;5;0;false;false;;;;;; -174887;6;0;false;false;0;0;0;;; -174893;1;0;false;false;;;;;; -174894;1;0;false;false;0;0;0;;; -174895;1;0;false;false;;;;;; -174896;28;0;false;false;0;0;0;;; -174924;5;0;false;false;;;;;; -174929;16;0;false;false;0;0;0;;; -174945;4;0;false;false;;;;;; -174949;1;0;false;false;0;0;0;;; -174950;3;0;false;false;;;;;; -174953;1;0;false;false;0;0;0;;; -174954;3;0;false;false;;;;;; -174957;2;1;false;false;127;0;85;;; -174959;1;0;false;false;;;;;; -174960;14;0;false;false;0;0;0;;; -174974;1;0;false;false;;;;;; -174975;2;0;false;false;0;0;0;;; -174977;1;0;false;false;;;;;; -174978;2;0;false;false;0;0;0;;; -174980;1;0;false;false;;;;;; -174981;2;0;false;false;0;0;0;;; -174983;1;0;false;false;;;;;; -174984;10;0;false;false;0;0;0;;; -174994;1;0;false;false;;;;;; -174995;2;0;false;false;0;0;0;;; -174997;1;0;false;false;;;;;; -174998;16;0;false;false;0;0;0;;; -175014;1;0;false;false;;;;;; -175015;1;0;false;false;0;0;0;;; -175016;1;0;false;false;;;;;; -175017;9;0;false;false;0;0;0;;; -175026;1;0;false;false;;;;;; -175027;2;0;false;false;0;0;0;;; -175029;1;0;false;false;;;;;; -175030;3;0;false;false;0;0;0;;; -175033;1;0;false;false;;;;;; -175034;1;0;false;false;0;0;0;;; -175035;4;0;false;false;;;;;; -175039;6;1;false;false;127;0;85;;; -175045;1;0;false;false;0;0;0;;; -175046;4;0;false;false;;;;;; -175050;1;0;false;false;0;0;0;;; -175051;3;0;false;false;;;;;; -175054;7;1;false;false;127;0;85;;; -175061;1;0;false;false;;;;;; -175062;6;0;false;false;0;0;0;;; -175068;1;0;false;false;;;;;; -175069;1;0;false;false;0;0;0;;; -175070;1;0;false;false;;;;;; -175071;16;0;false;false;0;0;0;;; -175087;1;0;false;false;;;;;; -175088;1;0;false;false;0;0;0;;; -175089;1;0;false;false;;;;;; -175090;9;0;false;false;0;0;0;;; -175099;1;0;false;false;;;;;; -175100;2;0;false;false;0;0;0;;; -175102;1;0;false;false;;;;;; -175103;2;0;false;false;0;0;0;;; -175105;4;0;false;false;;;;;; -175109;7;0;false;false;0;0;0;;; -175116;1;0;false;false;;;;;; -175117;2;0;false;false;0;0;0;;; -175119;1;0;false;false;;;;;; -175120;10;0;false;false;0;0;0;;; -175130;3;0;false;false;;;;;; -175133;30;0;false;false;0;0;0;;; -175163;1;0;false;false;;;;;; -175164;8;0;false;false;0;0;0;;; -175172;1;0;false;false;;;;;; -175173;8;0;false;false;0;0;0;;; -175181;2;0;false;false;;;;;; -175183;1;0;false;false;0;0;0;;; -175184;2;0;false;false;;;;;; -175186;3;0;false;false;63;95;191;;; -175189;4;0;false;false;;;;;; -175193;1;0;false;false;63;95;191;;; -175194;1;0;false;false;;;;;; -175195;7;0;false;false;63;95;191;;; -175202;1;0;false;false;;;;;; -175203;3;0;false;false;63;95;191;;; -175206;1;0;false;false;;;;;; -175207;5;0;false;false;63;95;191;;; -175212;1;0;false;false;;;;;; -175213;8;0;false;false;63;95;191;;; -175221;1;0;false;false;;;;;; -175222;3;0;false;false;63;95;191;;; -175225;1;0;false;false;;;;;; -175226;9;0;false;false;63;95;191;;; -175235;1;0;false;false;;;;;; -175236;2;0;false;false;63;95;191;;; -175238;1;0;false;false;;;;;; -175239;5;0;false;false;63;95;191;;; -175244;1;0;false;false;;;;;; -175245;6;0;false;false;63;95;191;;; -175251;1;0;false;false;;;;;; -175252;1;0;false;false;63;95;191;;; -175253;1;0;false;false;;;;;; -175254;2;0;false;false;63;95;191;;; -175256;1;0;false;false;;;;;; -175257;7;0;false;false;63;95;191;;; -175264;4;0;false;false;;;;;; -175268;1;0;false;false;63;95;191;;; -175269;1;0;false;false;;;;;; -175270;6;0;false;false;63;95;191;;; -175276;1;0;false;false;;;;;; -175277;3;0;false;false;63;95;191;;; -175280;1;0;false;false;;;;;; -175281;5;0;false;false;63;95;191;;; -175286;1;0;false;false;;;;;; -175287;5;0;false;false;63;95;191;;; -175292;3;0;false;false;;;;;; -175295;2;0;false;false;63;95;191;;; -175297;2;0;false;false;;;;;; -175299;4;1;false;false;127;0;85;;; -175303;1;0;false;false;;;;;; -175304;21;0;false;false;0;0;0;;; -175325;1;0;false;false;;;;;; -175326;6;0;false;false;0;0;0;;; -175332;1;0;false;false;;;;;; -175333;1;0;false;false;0;0;0;;; -175334;3;0;false;false;;;;;; -175337;2;1;false;false;127;0;85;;; -175339;1;0;false;false;;;;;; -175340;12;0;false;false;0;0;0;;; -175352;1;0;false;false;;;;;; -175353;6;1;false;false;127;0;85;;; -175359;1;0;false;false;0;0;0;;; -175360;3;0;false;false;;;;;; -175363;2;1;false;false;127;0;85;;; -175365;1;0;false;false;;;;;; -175366;17;0;false;false;0;0;0;;; -175383;1;0;false;false;;;;;; -175384;1;0;false;false;0;0;0;;; -175385;1;0;false;false;;;;;; -175386;12;0;false;false;0;0;0;;; -175398;1;0;false;false;;;;;; -175399;2;0;false;false;0;0;0;;; -175401;1;0;false;false;;;;;; -175402;2;0;false;false;0;0;0;;; -175404;1;0;false;false;;;;;; -175405;1;0;false;false;0;0;0;;; -175406;4;0;false;false;;;;;; -175410;6;1;false;false;127;0;85;;; -175416;1;0;false;false;0;0;0;;; -175417;3;0;false;false;;;;;; -175420;1;0;false;false;0;0;0;;; -175421;3;0;false;false;;;;;; -175424;7;0;false;false;0;0;0;;; -175431;1;0;false;false;;;;;; -175432;2;0;false;false;0;0;0;;; -175434;1;0;false;false;;;;;; -175435;10;0;false;false;0;0;0;;; -175445;3;0;false;false;;;;;; -175448;30;0;false;false;0;0;0;;; -175478;1;0;false;false;;;;;; -175479;8;0;false;false;0;0;0;;; -175487;1;0;false;false;;;;;; -175488;4;1;false;false;127;0;85;;; -175492;2;0;false;false;0;0;0;;; -175494;3;0;false;false;;;;;; -175497;9;0;false;false;0;0;0;;; -175506;3;0;false;false;;;;;; -175509;20;0;false;false;0;0;0;;; -175529;2;0;false;false;;;;;; -175531;1;0;false;false;0;0;0;;; -175532;2;0;false;false;;;;;; -175534;3;0;false;false;63;95;191;;; -175537;4;0;false;false;;;;;; -175541;1;0;false;false;63;95;191;;; -175542;1;0;false;false;;;;;; -175543;13;0;false;false;63;95;191;;; -175556;1;0;false;false;;;;;; -175557;4;0;false;false;63;95;191;;; -175561;1;0;false;false;;;;;; -175562;4;0;false;false;63;95;191;;; -175566;1;0;false;false;;;;;; -175567;3;0;false;false;63;95;191;;; -175570;1;0;false;false;;;;;; -175571;5;0;false;false;63;95;191;;; -175576;1;0;false;false;;;;;; -175577;6;0;false;false;63;95;191;;; -175583;1;0;false;false;;;;;; -175584;2;0;false;false;63;95;191;;; -175586;1;0;false;false;;;;;; -175587;9;0;false;false;63;95;191;;; -175596;3;0;false;false;;;;;; -175599;2;0;false;false;63;95;191;;; -175601;2;0;false;false;;;;;; -175603;4;1;false;false;127;0;85;;; -175607;1;0;false;false;;;;;; -175608;19;0;false;false;0;0;0;;; -175627;1;0;false;false;;;;;; -175628;6;0;false;false;0;0;0;;; -175634;1;0;false;false;;;;;; -175635;1;0;false;false;0;0;0;;; -175636;3;0;false;false;;;;;; -175639;9;0;false;false;0;0;0;;; -175648;1;0;false;false;;;;;; -175649;1;0;false;false;0;0;0;;; -175650;1;0;false;false;;;;;; -175651;5;1;false;false;127;0;85;;; -175656;1;0;false;false;0;0;0;;; -175657;3;0;false;false;;;;;; -175660;16;0;false;false;0;0;0;;; -175676;1;0;false;false;;;;;; -175677;1;0;false;false;0;0;0;;; -175678;1;0;false;false;;;;;; -175679;5;1;false;false;127;0;85;;; -175684;1;0;false;false;0;0;0;;; -175685;3;0;false;false;;;;;; -175688;7;0;false;false;0;0;0;;; -175695;1;0;false;false;;;;;; -175696;2;0;false;false;0;0;0;;; -175698;1;0;false;false;;;;;; -175699;10;0;false;false;0;0;0;;; -175709;3;0;false;false;;;;;; -175712;16;0;false;false;0;0;0;;; -175728;3;0;false;false;;;;;; -175731;2;1;false;false;127;0;85;;; -175733;1;0;false;false;;;;;; -175734;13;0;false;false;0;0;0;;; -175747;1;0;false;false;;;;;; -175748;2;0;false;false;0;0;0;;; -175750;1;0;false;false;;;;;; -175751;2;0;false;false;0;0;0;;; -175753;1;0;false;false;;;;;; -175754;1;0;false;false;0;0;0;;; -175755;4;0;false;false;;;;;; -175759;3;1;false;false;127;0;85;;; -175762;1;0;false;false;;;;;; -175763;1;0;false;false;0;0;0;;; -175764;5;0;false;false;;;;;; -175769;2;1;false;false;127;0;85;;; -175771;1;0;false;false;;;;;; -175772;12;0;false;false;0;0;0;;; -175784;1;0;false;false;;;;;; -175785;1;0;false;false;0;0;0;;; -175786;1;0;false;false;;;;;; -175787;11;0;false;false;0;0;0;;; -175798;1;0;false;false;;;;;; -175799;1;0;false;false;0;0;0;;; -175800;1;0;false;false;;;;;; -175801;2;0;false;false;0;0;0;;; -175803;1;0;false;false;;;;;; -175804;1;0;false;false;0;0;0;;; -175805;6;0;false;false;;;;;; -175811;32;0;false;false;0;0;0;;; -175843;1;0;false;false;;;;;; -175844;11;0;false;false;0;0;0;;; -175855;1;0;false;false;;;;;; -175856;1;0;false;false;0;0;0;;; -175857;1;0;false;false;;;;;; -175858;12;0;false;false;0;0;0;;; -175870;1;0;false;false;;;;;; -175871;25;0;false;false;0;0;0;;; -175896;5;0;false;false;;;;;; -175901;1;0;false;false;0;0;0;;; -175902;4;0;false;false;;;;;; -175906;1;0;false;false;0;0;0;;; -175907;4;0;false;false;;;;;; -175911;5;1;false;false;127;0;85;;; -175916;1;0;false;false;;;;;; -175917;9;0;false;false;0;0;0;;; -175926;1;0;false;false;;;;;; -175927;6;0;false;false;0;0;0;;; -175933;1;0;false;false;;;;;; -175934;1;0;false;false;0;0;0;;; -175935;5;0;false;false;;;;;; -175940;69;0;false;false;63;127;95;;; -176009;3;0;false;false;;;;;; -176012;64;0;false;false;63;127;95;;; -176076;3;0;false;false;;;;;; -176079;18;0;false;false;63;127;95;;; -176097;3;0;false;false;;;;;; -176100;47;0;false;false;63;127;95;;; -176147;3;0;false;false;;;;;; -176150;2;1;false;false;127;0;85;;; -176152;1;0;false;false;;;;;; -176153;11;0;false;false;0;0;0;;; -176164;1;0;false;false;;;;;; -176165;2;0;false;false;0;0;0;;; -176167;1;0;false;false;;;;;; -176168;31;0;false;false;0;0;0;;; -176199;1;0;false;false;;;;;; -176200;1;0;false;false;0;0;0;;; -176201;6;0;false;false;;;;;; -176207;5;1;false;false;127;0;85;;; -176212;1;0;false;false;;;;;; -176213;6;0;false;false;0;0;0;;; -176219;5;0;false;false;;;;;; -176224;1;0;false;false;0;0;0;;; -176225;4;0;false;false;;;;;; -176229;1;0;false;false;0;0;0;;; -176230;3;0;false;false;;;;;; -176233;1;0;false;false;0;0;0;;; -176234;2;0;false;false;;;;;; -176236;1;0;false;false;0;0;0;;; -176237;2;0;false;false;;;;;; -176239;3;0;false;false;63;95;191;;; -176242;3;0;false;false;;;;;; -176245;1;0;false;false;63;95;191;;; -176246;1;0;false;false;;;;;; -176247;7;0;false;false;63;95;191;;; -176254;1;0;false;false;;;;;; -176255;3;0;false;false;63;95;191;;; -176258;1;0;false;false;;;;;; -176259;11;0;false;false;63;95;191;;; -176270;1;0;false;false;;;;;; -176271;4;0;false;false;63;95;191;;; -176275;1;0;false;false;;;;;; -176276;9;0;false;false;63;95;191;;; -176285;1;0;false;false;;;;;; -176286;2;0;false;false;63;95;191;;; -176288;1;0;false;false;;;;;; -176289;3;0;false;false;63;95;191;;; -176292;1;0;false;false;;;;;; -176293;5;0;false;false;63;95;191;;; -176298;1;0;false;false;;;;;; -176299;6;0;false;false;63;95;191;;; -176305;3;0;false;false;;;;;; -176308;1;0;false;false;63;95;191;;; -176309;1;0;false;false;;;;;; -176310;3;0;false;false;127;127;159;;; -176313;3;0;false;false;;;;;; -176316;1;0;false;false;63;95;191;;; -176317;3;0;false;false;;;;;; -176320;1;0;false;false;63;95;191;;; -176321;1;0;false;false;;;;;; -176322;7;1;false;false;127;159;191;;; -176329;5;0;false;false;63;95;191;;; -176334;1;0;false;false;;;;;; -176335;5;0;false;false;63;95;191;;; -176340;1;0;false;false;;;;;; -176341;5;0;false;false;63;95;191;;; -176346;3;0;false;false;;;;;; -176349;2;0;false;false;63;95;191;;; -176351;2;0;false;false;;;;;; -176353;4;1;false;false;127;0;85;;; -176357;1;0;false;false;;;;;; -176358;17;0;false;false;0;0;0;;; -176375;1;0;false;false;;;;;; -176376;6;0;false;false;0;0;0;;; -176382;1;0;false;false;;;;;; -176383;1;0;false;false;0;0;0;;; -176384;3;0;false;false;;;;;; -176387;33;0;false;false;63;127;95;;; -176420;1;0;false;false;;;;;; -176421;2;1;false;false;127;0;85;;; -176423;1;0;false;false;;;;;; -176424;13;0;false;false;0;0;0;;; -176437;1;0;false;false;;;;;; -176438;2;0;false;false;0;0;0;;; -176440;1;0;false;false;;;;;; -176441;2;0;false;false;0;0;0;;; -176443;1;0;false;false;;;;;; -176444;6;1;false;false;127;0;85;;; -176450;1;0;false;false;0;0;0;;; -176451;3;0;false;false;;;;;; -176454;3;1;false;false;127;0;85;;; -176457;1;0;false;false;;;;;; -176458;9;0;false;false;0;0;0;;; -176467;1;0;false;false;;;;;; -176468;1;0;false;false;0;0;0;;; -176469;1;0;false;false;;;;;; -176470;11;0;false;false;0;0;0;;; -176481;1;0;false;false;;;;;; -176482;8;0;false;false;0;0;0;;; -176490;1;0;false;false;;;;;; -176491;1;0;false;false;0;0;0;;; -176492;1;0;false;false;;;;;; -176493;9;0;false;false;0;0;0;;; -176502;1;0;false;false;;;;;; -176503;1;0;false;false;0;0;0;;; -176504;1;0;false;false;;;;;; -176505;21;0;false;false;0;0;0;;; -176526;1;0;false;false;;;;;; -176527;1;0;false;false;0;0;0;;; -176528;1;0;false;false;;;;;; -176529;12;0;false;false;0;0;0;;; -176541;3;0;false;false;;;;;; -176544;3;1;false;false;127;0;85;;; -176547;1;0;false;false;;;;;; -176548;17;0;false;false;0;0;0;;; -176565;1;0;false;false;;;;;; -176566;1;0;false;false;0;0;0;;; -176567;1;0;false;false;;;;;; -176568;10;0;false;false;0;0;0;;; -176578;1;0;false;false;;;;;; -176579;1;0;false;false;0;0;0;;; -176580;1;0;false;false;;;;;; -176581;9;0;false;false;0;0;0;;; -176590;1;0;false;false;;;;;; -176591;1;0;false;false;0;0;0;;; -176592;1;0;false;false;;;;;; -176593;11;0;false;false;0;0;0;;; -176604;3;0;false;false;;;;;; -176607;3;1;false;false;127;0;85;;; -176610;1;0;false;false;;;;;; -176611;13;0;false;false;0;0;0;;; -176624;1;0;false;false;;;;;; -176625;1;0;false;false;0;0;0;;; -176626;1;0;false;false;;;;;; -176627;8;0;false;false;0;0;0;;; -176635;1;0;false;false;;;;;; -176636;1;0;false;false;0;0;0;;; -176637;1;0;false;false;;;;;; -176638;10;0;false;false;0;0;0;;; -176648;1;0;false;false;;;;;; -176649;1;0;false;false;0;0;0;;; -176650;1;0;false;false;;;;;; -176651;21;0;false;false;0;0;0;;; -176672;3;0;false;false;;;;;; -176675;3;1;false;false;127;0;85;;; -176678;1;0;false;false;;;;;; -176679;6;0;false;false;0;0;0;;; -176685;1;0;false;false;;;;;; -176686;1;0;false;false;0;0;0;;; -176687;1;0;false;false;;;;;; -176688;17;0;false;false;0;0;0;;; -176705;1;0;false;false;;;;;; -176706;1;0;false;false;0;0;0;;; -176707;1;0;false;false;;;;;; -176708;13;0;false;false;0;0;0;;; -176721;1;0;false;false;;;;;; -176722;1;0;false;false;0;0;0;;; -176723;1;0;false;false;;;;;; -176724;10;0;false;false;0;0;0;;; -176734;1;0;false;false;;;;;; -176735;63;0;false;false;63;127;95;;; -176798;1;0;false;false;;;;;; -176799;3;1;false;false;127;0;85;;; -176802;1;0;false;false;;;;;; -176803;12;0;false;false;0;0;0;;; -176815;1;0;false;false;;;;;; -176816;1;0;false;false;0;0;0;;; -176817;1;0;false;false;;;;;; -176818;7;0;false;false;0;0;0;;; -176825;1;0;false;false;;;;;; -176826;1;0;false;false;0;0;0;;; -176827;1;0;false;false;;;;;; -176828;12;0;false;false;0;0;0;;; -176840;1;0;false;false;;;;;; -176841;1;0;false;false;0;0;0;;; -176842;1;0;false;false;;;;;; -176843;7;0;false;false;0;0;0;;; -176850;3;0;false;false;;;;;; -176853;22;0;false;false;0;0;0;;; -176875;1;0;false;false;;;;;; -176876;10;0;false;false;0;0;0;;; -176886;1;0;false;false;;;;;; -176887;7;0;false;false;0;0;0;;; -176894;1;0;false;false;;;;;; -176895;14;0;false;false;0;0;0;;; -176909;2;0;false;false;;;;;; -176911;1;0;false;false;0;0;0;;; -176912;3;0;false;false;;;;;; -176915;3;0;false;false;63;95;191;;; -176918;3;0;false;false;;;;;; -176921;1;0;false;false;63;95;191;;; -176922;1;0;false;false;;;;;; -176923;12;0;false;false;63;95;191;;; -176935;1;0;false;false;;;;;; -176936;3;0;false;false;63;95;191;;; -176939;1;0;false;false;;;;;; -176940;6;0;false;false;63;95;191;;; -176946;1;0;false;false;;;;;; -176947;5;0;false;false;63;95;191;;; -176952;1;0;false;false;;;;;; -176953;7;0;false;false;63;95;191;;; -176960;1;0;false;false;;;;;; -176961;3;0;false;false;63;95;191;;; -176964;1;0;false;false;;;;;; -176965;5;0;false;false;63;95;191;;; -176970;1;0;false;false;;;;;; -176971;4;0;false;false;63;95;191;;; -176975;1;0;false;false;;;;;; -176976;2;0;false;false;63;95;191;;; -176978;1;0;false;false;;;;;; -176979;4;0;false;false;63;95;191;;; -176983;4;0;false;false;;;;;; -176987;1;0;false;false;63;95;191;;; -176988;1;0;false;false;;;;;; -176989;4;0;false;false;63;95;191;;; -176993;1;0;false;false;;;;;; -176994;5;0;false;false;63;95;191;;; -176999;3;0;false;false;;;;;; -177002;1;0;false;false;63;95;191;;; -177003;1;0;false;false;;;;;; -177004;3;0;false;false;127;127;159;;; -177007;3;0;false;false;;;;;; -177010;1;0;false;false;63;95;191;;; -177011;3;0;false;false;;;;;; -177014;1;0;false;false;63;95;191;;; -177015;1;0;false;false;;;;;; -177016;7;1;false;false;127;159;191;;; -177023;5;0;false;false;63;95;191;;; -177028;1;0;false;false;;;;;; -177029;6;0;false;false;63;95;191;;; -177035;1;0;false;false;;;;;; -177036;5;0;false;false;63;95;191;;; -177041;3;0;false;false;;;;;; -177044;2;0;false;false;63;95;191;;; -177046;2;0;false;false;;;;;; -177048;4;1;false;false;127;0;85;;; -177052;1;0;false;false;;;;;; -177053;18;0;false;false;0;0;0;;; -177071;1;0;false;false;;;;;; -177072;6;0;false;false;0;0;0;;; -177078;1;0;false;false;;;;;; -177079;1;0;false;false;0;0;0;;; -177080;3;0;false;false;;;;;; -177083;3;1;false;false;127;0;85;;; -177086;1;0;false;false;;;;;; -177087;9;0;false;false;0;0;0;;; -177096;1;0;false;false;;;;;; -177097;1;0;false;false;0;0;0;;; -177098;1;0;false;false;;;;;; -177099;17;0;false;false;0;0;0;;; -177116;3;0;false;false;;;;;; -177119;3;1;false;false;127;0;85;;; -177122;1;0;false;false;;;;;; -177123;8;0;false;false;0;0;0;;; -177131;1;0;false;false;;;;;; -177132;1;0;false;false;0;0;0;;; -177133;1;0;false;false;;;;;; -177134;16;0;false;false;0;0;0;;; -177150;6;0;false;false;;;;;; -177156;9;0;false;false;0;0;0;;; -177165;1;0;false;false;;;;;; -177166;10;0;false;false;0;0;0;;; -177176;1;0;false;false;;;;;; -177177;1;0;false;false;0;0;0;;; -177178;1;0;false;false;;;;;; -177179;16;0;false;false;0;0;0;;; -177195;3;0;false;false;;;;;; -177198;16;0;false;false;0;0;0;;; -177214;1;0;false;false;;;;;; -177215;1;0;false;false;0;0;0;;; -177216;1;0;false;false;;;;;; -177217;18;0;false;false;0;0;0;;; -177235;3;0;false;false;;;;;; -177238;15;0;false;false;0;0;0;;; -177253;1;0;false;false;;;;;; -177254;1;0;false;false;0;0;0;;; -177255;1;0;false;false;;;;;; -177256;17;0;false;false;0;0;0;;; -177273;3;0;false;false;;;;;; -177276;57;0;false;false;63;127;95;;; -177333;3;0;false;false;;;;;; -177336;2;1;false;false;127;0;85;;; -177338;1;0;false;false;;;;;; -177339;9;0;false;false;0;0;0;;; -177348;1;0;false;false;;;;;; -177349;2;0;false;false;0;0;0;;; -177351;1;0;false;false;;;;;; -177352;16;0;false;false;0;0;0;;; -177368;1;0;false;false;;;;;; -177369;1;0;false;false;0;0;0;;; -177370;4;0;false;false;;;;;; -177374;2;1;false;false;127;0;85;;; -177376;1;0;false;false;;;;;; -177377;12;0;false;false;0;0;0;;; -177389;1;0;false;false;;;;;; -177390;1;0;false;false;0;0;0;;; -177391;1;0;false;false;;;;;; -177392;2;0;false;false;0;0;0;;; -177394;1;0;false;false;;;;;; -177395;1;0;false;false;0;0;0;;; -177396;5;0;false;false;;;;;; -177401;3;1;false;false;127;0;85;;; -177404;1;0;false;false;;;;;; -177405;1;0;false;false;0;0;0;;; -177406;1;0;false;false;;;;;; -177407;1;0;false;false;0;0;0;;; -177408;1;0;false;false;;;;;; -177409;9;0;false;false;0;0;0;;; -177418;1;0;false;false;;;;;; -177419;1;0;false;false;0;0;0;;; -177420;1;0;false;false;;;;;; -177421;15;0;false;false;0;0;0;;; -177436;1;0;false;false;;;;;; -177437;1;0;false;false;0;0;0;;; -177438;1;0;false;false;;;;;; -177439;8;0;false;false;0;0;0;;; -177447;1;0;false;false;;;;;; -177448;1;0;false;false;0;0;0;;; -177449;1;0;false;false;;;;;; -177450;17;0;false;false;0;0;0;;; -177467;1;0;false;false;;;;;; -177468;12;0;false;false;0;0;0;;; -177480;6;0;false;false;;;;;; -177486;9;0;false;false;0;0;0;;; -177495;1;0;false;false;;;;;; -177496;2;0;false;false;0;0;0;;; -177498;1;0;false;false;;;;;; -177499;12;0;false;false;0;0;0;;; -177511;1;0;false;false;;;;;; -177512;10;0;false;false;0;0;0;;; -177522;1;0;false;false;;;;;; -177523;5;1;false;false;127;0;85;;; -177528;2;0;false;false;0;0;0;;; -177530;4;0;false;false;;;;;; -177534;1;0;false;false;0;0;0;;; -177535;3;0;false;false;;;;;; -177538;1;0;false;false;0;0;0;;; -177539;3;0;false;false;;;;;; -177542;2;1;false;false;127;0;85;;; -177544;1;0;false;false;;;;;; -177545;10;0;false;false;0;0;0;;; -177555;1;0;false;false;;;;;; -177556;2;0;false;false;0;0;0;;; -177558;1;0;false;false;;;;;; -177559;17;0;false;false;0;0;0;;; -177576;1;0;false;false;;;;;; -177577;1;0;false;false;0;0;0;;; -177578;4;0;false;false;;;;;; -177582;2;1;false;false;127;0;85;;; -177584;1;0;false;false;;;;;; -177585;13;0;false;false;0;0;0;;; -177598;1;0;false;false;;;;;; -177599;1;0;false;false;0;0;0;;; -177600;1;0;false;false;;;;;; -177601;2;0;false;false;0;0;0;;; -177603;1;0;false;false;;;;;; -177604;1;0;false;false;0;0;0;;; -177605;5;0;false;false;;;;;; -177610;3;1;false;false;127;0;85;;; -177613;1;0;false;false;;;;;; -177614;1;0;false;false;0;0;0;;; -177615;1;0;false;false;;;;;; -177616;1;0;false;false;0;0;0;;; -177617;1;0;false;false;;;;;; -177618;10;0;false;false;0;0;0;;; -177628;1;0;false;false;;;;;; -177629;1;0;false;false;0;0;0;;; -177630;1;0;false;false;;;;;; -177631;16;0;false;false;0;0;0;;; -177647;1;0;false;false;;;;;; -177648;1;0;false;false;0;0;0;;; -177649;1;0;false;false;;;;;; -177650;9;0;false;false;0;0;0;;; -177659;1;0;false;false;;;;;; -177660;1;0;false;false;0;0;0;;; -177661;1;0;false;false;;;;;; -177662;18;0;false;false;0;0;0;;; -177680;1;0;false;false;;;;;; -177681;13;0;false;false;0;0;0;;; -177694;6;0;false;false;;;;;; -177700;9;0;false;false;0;0;0;;; -177709;1;0;false;false;;;;;; -177710;2;0;false;false;0;0;0;;; -177712;1;0;false;false;;;;;; -177713;9;0;false;false;0;0;0;;; -177722;1;0;false;false;;;;;; -177723;13;0;false;false;0;0;0;;; -177736;1;0;false;false;;;;;; -177737;5;1;false;false;127;0;85;;; -177742;2;0;false;false;0;0;0;;; -177744;4;0;false;false;;;;;; -177748;1;0;false;false;0;0;0;;; -177749;3;0;false;false;;;;;; -177752;1;0;false;false;0;0;0;;; -177753;3;0;false;false;;;;;; -177756;2;1;false;false;127;0;85;;; -177758;1;0;false;false;;;;;; -177759;10;0;false;false;0;0;0;;; -177769;1;0;false;false;;;;;; -177770;1;0;false;false;0;0;0;;; -177771;4;0;false;false;;;;;; -177775;2;1;false;false;127;0;85;;; -177777;1;0;false;false;;;;;; -177778;9;0;false;false;0;0;0;;; -177787;1;0;false;false;;;;;; -177788;2;0;false;false;0;0;0;;; -177790;1;0;false;false;;;;;; -177791;16;0;false;false;0;0;0;;; -177807;1;0;false;false;;;;;; -177808;1;0;false;false;0;0;0;;; -177809;6;0;false;false;;;;;; -177815;25;0;false;false;0;0;0;;; -177840;4;0;false;false;;;;;; -177844;1;0;false;false;0;0;0;;; -177845;3;0;false;false;;;;;; -177848;1;0;false;false;0;0;0;;; -177849;3;0;false;false;;;;;; -177852;4;1;false;false;127;0;85;;; -177856;3;0;false;false;;;;;; -177859;2;1;false;false;127;0;85;;; -177861;1;0;false;false;;;;;; -177862;17;0;false;false;0;0;0;;; -177879;1;0;false;false;;;;;; -177880;1;0;false;false;0;0;0;;; -177881;1;0;false;false;;;;;; -177882;10;0;false;false;0;0;0;;; -177892;1;0;false;false;;;;;; -177893;1;0;false;false;0;0;0;;; -177894;4;0;false;false;;;;;; -177898;3;1;false;false;127;0;85;;; -177901;1;0;false;false;;;;;; -177902;9;0;false;false;0;0;0;;; -177911;1;0;false;false;;;;;; -177912;1;0;false;false;0;0;0;;; -177913;1;0;false;false;;;;;; -177914;23;0;false;false;0;0;0;;; -177937;4;0;false;false;;;;;; -177941;3;1;false;false;127;0;85;;; -177944;1;0;false;false;;;;;; -177945;14;0;false;false;0;0;0;;; -177959;1;0;false;false;;;;;; -177960;1;0;false;false;0;0;0;;; -177961;1;0;false;false;;;;;; -177962;8;0;false;false;0;0;0;;; -177970;1;0;false;false;;;;;; -177971;1;0;false;false;0;0;0;;; -177972;1;0;false;false;;;;;; -177973;9;0;false;false;0;0;0;;; -177982;1;0;false;false;;;;;; -177983;1;0;false;false;0;0;0;;; -177984;1;0;false;false;;;;;; -177985;11;0;false;false;0;0;0;;; -177996;4;0;false;false;;;;;; -178000;3;1;false;false;127;0;85;;; -178003;1;0;false;false;;;;;; -178004;12;0;false;false;0;0;0;;; -178016;1;0;false;false;;;;;; -178017;1;0;false;false;0;0;0;;; -178018;1;0;false;false;;;;;; -178019;35;0;false;false;0;0;0;;; -178054;1;0;false;false;;;;;; -178055;1;0;false;false;0;0;0;;; -178056;1;0;false;false;;;;;; -178057;10;0;false;false;0;0;0;;; -178067;1;0;false;false;;;;;; -178068;12;0;false;false;0;0;0;;; -178080;8;0;false;false;;;;;; -178088;14;0;false;false;0;0;0;;; -178102;1;0;false;false;;;;;; -178103;1;0;false;false;0;0;0;;; -178104;1;0;false;false;;;;;; -178105;24;0;false;false;0;0;0;;; -178129;1;0;false;false;;;;;; -178130;11;0;false;false;0;0;0;;; -178141;4;0;false;false;;;;;; -178145;12;0;false;false;0;0;0;;; -178157;1;0;false;false;;;;;; -178158;1;0;false;false;0;0;0;;; -178159;1;0;false;false;;;;;; -178160;22;0;false;false;0;0;0;;; -178182;1;0;false;false;;;;;; -178183;9;0;false;false;0;0;0;;; -178192;1;0;false;false;;;;;; -178193;1;0;false;false;0;0;0;;; -178194;1;0;false;false;;;;;; -178195;16;0;false;false;0;0;0;;; -178211;4;0;false;false;;;;;; -178215;35;0;false;false;0;0;0;;; -178250;1;0;false;false;;;;;; -178251;14;0;false;false;0;0;0;;; -178265;3;0;false;false;;;;;; -178268;1;0;false;false;0;0;0;;; -178269;3;0;false;false;;;;;; -178272;16;0;false;false;0;0;0;;; -178288;3;0;false;false;;;;;; -178291;23;0;false;false;0;0;0;;; -178314;3;0;false;false;;;;;; -178317;22;0;false;false;0;0;0;;; -178339;4;0;false;false;;;;;; -178343;2;1;false;false;127;0;85;;; -178345;1;0;false;false;;;;;; -178346;10;0;false;false;0;0;0;;; -178356;1;0;false;false;;;;;; -178357;2;0;false;false;0;0;0;;; -178359;1;0;false;false;;;;;; -178360;17;0;false;false;0;0;0;;; -178377;1;0;false;false;;;;;; -178378;1;0;false;false;0;0;0;;; -178379;4;0;false;false;;;;;; -178383;20;0;false;false;0;0;0;;; -178403;3;0;false;false;;;;;; -178406;1;0;false;false;0;0;0;;; -178407;2;0;false;false;;;;;; -178409;1;0;false;false;0;0;0;;; -178410;2;0;false;false;;;;;; -178412;3;0;false;false;63;95;191;;; -178415;3;0;false;false;;;;;; -178418;1;0;false;false;63;95;191;;; -178419;1;0;false;false;;;;;; -178420;7;0;false;false;63;95;191;;; -178427;1;0;false;false;;;;;; -178428;3;0;false;false;63;95;191;;; -178431;1;0;false;false;;;;;; -178432;5;0;false;false;63;95;191;;; -178437;1;0;false;false;;;;;; -178438;8;0;false;false;63;95;191;;; -178446;1;0;false;false;;;;;; -178447;3;0;false;false;63;95;191;;; -178450;1;0;false;false;;;;;; -178451;9;0;false;false;63;95;191;;; -178460;1;0;false;false;;;;;; -178461;3;0;false;false;63;95;191;;; -178464;1;0;false;false;;;;;; -178465;3;0;false;false;63;95;191;;; -178468;1;0;false;false;;;;;; -178469;6;0;false;false;63;95;191;;; -178475;1;0;false;false;;;;;; -178476;4;0;false;false;63;95;191;;; -178480;1;0;false;false;;;;;; -178481;2;0;false;false;63;95;191;;; -178483;1;0;false;false;;;;;; -178484;7;0;false;false;63;95;191;;; -178491;4;0;false;false;;;;;; -178495;1;0;false;false;63;95;191;;; -178496;1;0;false;false;;;;;; -178497;3;0;false;false;63;95;191;;; -178500;1;0;false;false;;;;;; -178501;7;0;false;false;63;95;191;;; -178508;1;0;false;false;;;;;; -178509;7;0;false;false;63;95;191;;; -178516;3;0;false;false;;;;;; -178519;1;0;false;false;63;95;191;;; -178520;1;0;false;false;;;;;; -178521;3;0;false;false;127;127;159;;; -178524;3;0;false;false;;;;;; -178527;2;0;false;false;63;95;191;;; -178529;2;0;false;false;;;;;; -178531;4;1;false;false;127;0;85;;; -178535;1;0;false;false;;;;;; -178536;34;0;false;false;0;0;0;;; -178570;1;0;false;false;;;;;; -178571;6;0;false;false;0;0;0;;; -178577;1;0;false;false;;;;;; -178578;1;0;false;false;0;0;0;;; -178579;3;0;false;false;;;;;; -178582;42;0;false;false;0;0;0;;; -178624;5;0;false;false;;;;;; -178629;27;0;false;false;0;0;0;;; -178656;5;0;false;false;;;;;; -178661;31;0;false;false;0;0;0;;; -178692;4;0;false;false;;;;;; -178696;27;0;false;false;0;0;0;;; -178723;4;0;false;false;;;;;; -178727;32;0;false;false;0;0;0;;; -178759;3;0;false;false;;;;;; -178762;16;0;false;false;0;0;0;;; -178778;3;0;false;false;;;;;; -178781;68;0;false;false;63;127;95;;; -178849;1;0;false;false;;;;;; -178850;52;0;false;false;63;127;95;;; -178902;1;0;false;false;;;;;; -178903;5;0;false;false;63;127;95;;; -178908;1;0;false;false;;;;;; -178909;65;0;false;false;63;127;95;;; -178974;1;0;false;false;;;;;; -178975;68;0;false;false;63;127;95;;; -179043;1;0;false;false;;;;;; -179044;70;0;false;false;63;127;95;;; -179114;1;0;false;false;;;;;; -179115;39;0;false;false;63;127;95;;; -179154;1;0;false;false;;;;;; -179155;18;0;false;false;63;127;95;;; -179173;1;0;false;false;;;;;; -179174;16;0;false;false;0;0;0;;; -179190;4;0;false;false;;;;;; -179194;20;0;false;false;0;0;0;;; -179214;5;0;false;false;;;;;; -179219;31;0;false;false;0;0;0;;; -179250;5;0;false;false;;;;;; -179255;28;0;false;false;0;0;0;;; -179283;7;0;false;false;;;;;; -179290;2;1;false;false;127;0;85;;; -179292;1;0;false;false;;;;;; -179293;31;0;false;false;0;0;0;;; -179324;1;0;false;false;;;;;; -179325;1;0;false;false;0;0;0;;; -179326;1;0;false;false;;;;;; -179327;2;0;false;false;0;0;0;;; -179329;1;0;false;false;;;;;; -179330;1;0;false;false;0;0;0;;; -179331;4;0;false;false;;;;;; -179335;56;0;false;false;63;127;95;;; -179391;2;0;false;false;;;;;; -179393;18;0;false;false;63;127;95;;; -179411;2;0;false;false;;;;;; -179413;65;0;false;false;63;127;95;;; -179478;2;0;false;false;;;;;; -179480;18;0;false;false;63;127;95;;; -179498;2;0;false;false;;;;;; -179500;23;0;false;false;0;0;0;;; -179523;3;0;false;false;;;;;; -179526;1;0;false;false;0;0;0;;; -179527;3;0;false;false;;;;;; -179530;2;1;false;false;127;0;85;;; -179532;1;0;false;false;;;;;; -179533;31;0;false;false;0;0;0;;; -179564;1;0;false;false;;;;;; -179565;1;0;false;false;0;0;0;;; -179566;1;0;false;false;;;;;; -179567;2;0;false;false;0;0;0;;; -179569;1;0;false;false;;;;;; -179570;1;0;false;false;0;0;0;;; -179571;4;0;false;false;;;;;; -179575;19;0;false;false;63;127;95;;; -179594;2;0;false;false;;;;;; -179596;22;0;false;false;0;0;0;;; -179618;3;0;false;false;;;;;; -179621;1;0;false;false;0;0;0;;; -179622;3;0;false;false;;;;;; -179625;71;0;false;false;63;127;95;;; -179696;1;0;false;false;;;;;; -179697;67;0;false;false;63;127;95;;; -179764;1;0;false;false;;;;;; -179765;2;1;false;false;127;0;85;;; -179767;1;0;false;false;;;;;; -179768;27;0;false;false;0;0;0;;; -179795;1;0;false;false;;;;;; -179796;2;0;false;false;0;0;0;;; -179798;1;0;false;false;;;;;; -179799;1;0;false;false;0;0;0;;; -179800;1;0;false;false;;;;;; -179801;2;0;false;false;0;0;0;;; -179803;1;0;false;false;;;;;; -179804;30;0;false;false;0;0;0;;; -179834;1;0;false;false;;;;;; -179835;2;0;false;false;0;0;0;;; -179837;1;0;false;false;;;;;; -179838;2;0;false;false;0;0;0;;; -179840;1;0;false;false;;;;;; -179841;1;0;false;false;0;0;0;;; -179842;4;0;false;false;;;;;; -179846;3;1;false;false;127;0;85;;; -179849;1;0;false;false;;;;;; -179850;9;0;false;false;0;0;0;;; -179859;1;0;false;false;;;;;; -179860;1;0;false;false;0;0;0;;; -179861;1;0;false;false;;;;;; -179862;45;0;false;false;0;0;0;;; -179907;4;0;false;false;;;;;; -179911;3;1;false;false;127;0;85;;; -179914;1;0;false;false;;;;;; -179915;6;0;false;false;0;0;0;;; -179921;1;0;false;false;;;;;; -179922;1;0;false;false;0;0;0;;; -179923;1;0;false;false;;;;;; -179924;9;0;false;false;0;0;0;;; -179933;1;0;false;false;;;;;; -179934;1;0;false;false;0;0;0;;; -179935;1;0;false;false;;;;;; -179936;10;0;false;false;0;0;0;;; -179946;1;0;false;false;;;;;; -179947;1;0;false;false;0;0;0;;; -179948;1;0;false;false;;;;;; -179949;20;0;false;false;0;0;0;;; -179969;1;0;false;false;;;;;; -179970;1;0;false;false;0;0;0;;; -179971;1;0;false;false;;;;;; -179972;10;0;false;false;0;0;0;;; -179982;6;0;false;false;;;;;; -179988;2;1;false;false;127;0;85;;; -179990;1;0;false;false;;;;;; -179991;15;0;false;false;0;0;0;;; -180006;1;0;false;false;;;;;; -180007;1;0;false;false;0;0;0;;; -180008;5;0;false;false;;;;;; -180013;2;0;false;false;0;0;0;;; -180015;1;0;false;false;;;;;; -180016;2;0;false;false;0;0;0;;; -180018;1;0;false;false;;;;;; -180019;1;0;false;false;0;0;0;;; -180020;1;0;false;false;;;;;; -180021;8;0;false;false;0;0;0;;; -180029;5;0;false;false;;;;;; -180034;5;0;false;false;0;0;0;;; -180039;1;0;false;false;;;;;; -180040;5;0;false;false;0;0;0;;; -180045;1;0;false;false;;;;;; -180046;1;0;false;false;0;0;0;;; -180047;1;0;false;false;;;;;; -180048;11;0;false;false;0;0;0;;; -180059;5;0;false;false;;;;;; -180064;7;1;false;false;127;0;85;;; -180071;1;0;false;false;;;;;; -180072;12;0;false;false;0;0;0;;; -180084;1;0;false;false;;;;;; -180085;1;0;false;false;0;0;0;;; -180086;1;0;false;false;;;;;; -180087;5;1;false;false;127;0;85;;; -180092;1;0;false;false;0;0;0;;; -180093;10;0;false;false;;;;;; -180103;2;1;false;false;127;0;85;;; -180105;1;0;false;false;;;;;; -180106;6;0;false;false;0;0;0;;; -180112;1;0;false;false;;;;;; -180113;2;0;false;false;0;0;0;;; -180115;1;0;false;false;;;;;; -180116;4;1;false;false;127;0;85;;; -180120;1;0;false;false;0;0;0;;; -180121;1;0;false;false;;;;;; -180122;1;0;false;false;0;0;0;;; -180123;6;0;false;false;;;;;; -180129;12;0;false;false;0;0;0;;; -180141;1;0;false;false;;;;;; -180142;1;0;false;false;0;0;0;;; -180143;1;0;false;false;;;;;; -180144;19;0;false;false;0;0;0;;; -180163;6;0;false;false;;;;;; -180169;17;0;false;false;0;0;0;;; -180186;5;1;false;false;127;0;85;;; -180191;2;0;false;false;0;0;0;;; -180193;5;0;false;false;;;;;; -180198;1;0;false;false;0;0;0;;; -180199;5;0;false;false;;;;;; -180204;16;0;false;false;0;0;0;;; -180220;1;0;false;false;;;;;; -180221;10;0;false;false;0;0;0;;; -180231;1;0;false;false;;;;;; -180232;7;0;false;false;0;0;0;;; -180239;1;0;false;false;;;;;; -180240;12;0;false;false;0;0;0;;; -180252;5;0;false;false;;;;;; -180257;2;1;false;false;127;0;85;;; -180259;1;0;false;false;;;;;; -180260;6;0;false;false;0;0;0;;; -180266;1;0;false;false;;;;;; -180267;2;0;false;false;0;0;0;;; -180269;1;0;false;false;;;;;; -180270;4;1;false;false;127;0;85;;; -180274;1;0;false;false;0;0;0;;; -180275;1;0;false;false;;;;;; -180276;1;0;false;false;0;0;0;;; -180277;6;0;false;false;;;;;; -180283;31;0;false;false;0;0;0;;; -180314;5;0;false;false;;;;;; -180319;1;0;false;false;0;0;0;;; -180320;5;0;false;false;;;;;; -180325;13;0;false;false;0;0;0;;; -180338;4;0;false;false;;;;;; -180342;1;0;false;false;0;0;0;;; -180343;1;0;false;false;;;;;; -180344;4;1;false;false;127;0;85;;; -180348;1;0;false;false;;;;;; -180349;1;0;false;false;0;0;0;;; -180350;5;0;false;false;;;;;; -180355;9;0;false;false;0;0;0;;; -180364;1;0;false;false;;;;;; -180365;7;0;false;false;0;0;0;;; -180372;1;0;false;false;;;;;; -180373;22;0;false;false;0;0;0;;; -180395;1;0;false;false;;;;;; -180396;11;0;false;false;0;0;0;;; -180407;1;0;false;false;;;;;; -180408;5;1;false;false;127;0;85;;; -180413;2;0;false;false;0;0;0;;; -180415;5;0;false;false;;;;;; -180420;9;0;false;false;0;0;0;;; -180429;4;0;false;false;;;;;; -180433;1;0;false;false;0;0;0;;; -180434;3;0;false;false;;;;;; -180437;1;0;false;false;0;0;0;;; -180438;2;0;false;false;;;;;; -180440;1;0;false;false;0;0;0;;; -180441;2;0;false;false;;;;;; -180443;3;0;false;false;63;95;191;;; -180446;3;0;false;false;;;;;; -180449;1;0;false;false;63;95;191;;; -180450;1;0;false;false;;;;;; -180451;7;0;false;false;63;95;191;;; -180458;1;0;false;false;;;;;; -180459;3;0;false;false;63;95;191;;; -180462;1;0;false;false;;;;;; -180463;6;0;false;false;63;95;191;;; -180469;1;0;false;false;;;;;; -180470;2;0;false;false;63;95;191;;; -180472;1;0;false;false;;;;;; -180473;7;0;false;false;63;95;191;;; -180480;1;0;false;false;;;;;; -180481;1;0;false;false;63;95;191;;; -180482;1;0;false;false;;;;;; -180483;7;0;false;false;63;95;191;;; -180490;1;0;false;false;;;;;; -180491;7;0;false;false;63;95;191;;; -180498;1;0;false;false;;;;;; -180499;7;0;false;false;63;95;191;;; -180506;3;0;false;false;;;;;; -180509;1;0;false;false;63;95;191;;; -180510;1;0;false;false;;;;;; -180511;3;0;false;false;127;127;159;;; -180514;3;0;false;false;;;;;; -180517;1;0;false;false;63;95;191;;; -180518;3;0;false;false;;;;;; -180521;1;0;false;false;63;95;191;;; -180522;1;0;false;false;;;;;; -180523;7;1;false;false;127;159;191;;; -180530;11;0;false;false;63;95;191;;; -180541;1;0;false;false;;;;;; -180542;3;0;false;false;63;95;191;;; -180545;1;0;false;false;;;;;; -180546;5;0;false;false;63;95;191;;; -180551;1;0;false;false;;;;;; -180552;6;0;false;false;63;95;191;;; -180558;1;0;false;false;;;;;; -180559;2;0;false;false;63;95;191;;; -180561;1;0;false;false;;;;;; -180562;3;0;false;false;63;95;191;;; -180565;1;0;false;false;;;;;; -180566;6;0;false;false;63;95;191;;; -180572;3;0;false;false;;;;;; -180575;1;0;false;false;63;95;191;;; -180576;1;0;false;false;;;;;; -180577;7;1;false;false;127;159;191;;; -180584;13;0;false;false;63;95;191;;; -180597;1;0;false;false;;;;;; -180598;4;0;false;false;63;95;191;;; -180602;1;0;false;false;;;;;; -180603;4;0;false;false;63;95;191;;; -180607;1;0;false;false;;;;;; -180608;2;0;false;false;63;95;191;;; -180610;1;0;false;false;;;;;; -180611;5;0;false;false;63;95;191;;; -180616;1;0;false;false;;;;;; -180617;2;0;false;false;63;95;191;;; -180619;1;0;false;false;;;;;; -180620;2;0;false;false;63;95;191;;; -180622;1;0;false;false;;;;;; -180623;8;0;false;false;63;95;191;;; -180631;1;0;false;false;;;;;; -180632;2;0;false;false;63;95;191;;; -180634;1;0;false;false;;;;;; -180635;5;0;false;false;63;95;191;;; -180640;1;0;false;false;;;;;; -180641;6;0;false;false;63;95;191;;; -180647;4;0;false;false;;;;;; -180651;1;0;false;false;63;95;191;;; -180652;1;0;false;false;;;;;; -180653;2;0;false;false;63;95;191;;; -180655;1;0;false;false;;;;;; -180656;2;0;false;false;63;95;191;;; -180658;1;0;false;false;;;;;; -180659;4;0;false;false;63;95;191;;; -180663;1;0;false;false;;;;;; -180664;4;0;false;false;63;95;191;;; -180668;1;0;false;false;;;;;; -180669;2;0;false;false;63;95;191;;; -180671;1;0;false;false;;;;;; -180672;8;0;false;false;63;95;191;;; -180680;3;0;false;false;;;;;; -180683;1;0;false;false;63;95;191;;; -180684;1;0;false;false;;;;;; -180685;7;1;false;false;127;159;191;;; -180692;22;0;false;false;63;95;191;;; -180714;1;0;false;false;;;;;; -180715;6;0;false;false;63;95;191;;; -180721;1;0;false;false;;;;;; -180722;2;0;false;false;63;95;191;;; -180724;1;0;false;false;;;;;; -180725;4;0;false;false;63;95;191;;; -180729;1;0;false;false;;;;;; -180730;4;0;false;false;63;95;191;;; -180734;1;0;false;false;;;;;; -180735;2;0;false;false;63;95;191;;; -180737;1;0;false;false;;;;;; -180738;5;0;false;false;63;95;191;;; -180743;1;0;false;false;;;;;; -180744;2;0;false;false;63;95;191;;; -180746;1;0;false;false;;;;;; -180747;2;0;false;false;63;95;191;;; -180749;1;0;false;false;;;;;; -180750;8;0;false;false;63;95;191;;; -180758;3;0;false;false;;;;;; -180761;1;0;false;false;63;95;191;;; -180762;1;0;false;false;;;;;; -180763;7;1;false;false;127;159;191;;; -180770;18;0;false;false;63;95;191;;; -180788;1;0;false;false;;;;;; -180789;6;0;false;false;63;95;191;;; -180795;1;0;false;false;;;;;; -180796;2;0;false;false;63;95;191;;; -180798;1;0;false;false;;;;;; -180799;4;0;false;false;63;95;191;;; -180803;1;0;false;false;;;;;; -180804;4;0;false;false;63;95;191;;; -180808;1;0;false;false;;;;;; -180809;2;0;false;false;63;95;191;;; -180811;1;0;false;false;;;;;; -180812;5;0;false;false;63;95;191;;; -180817;1;0;false;false;;;;;; -180818;2;0;false;false;63;95;191;;; -180820;1;0;false;false;;;;;; -180821;2;0;false;false;63;95;191;;; -180823;1;0;false;false;;;;;; -180824;8;0;false;false;63;95;191;;; -180832;3;0;false;false;;;;;; -180835;1;0;false;false;63;95;191;;; -180836;1;0;false;false;;;;;; -180837;7;1;false;false;127;159;191;;; -180844;22;0;false;false;63;95;191;;; -180866;1;0;false;false;;;;;; -180867;6;0;false;false;63;95;191;;; -180873;1;0;false;false;;;;;; -180874;2;0;false;false;63;95;191;;; -180876;1;0;false;false;;;;;; -180877;5;0;false;false;63;95;191;;; -180882;1;0;false;false;;;;;; -180883;4;0;false;false;63;95;191;;; -180887;1;0;false;false;;;;;; -180888;3;0;false;false;63;95;191;;; -180891;1;0;false;false;;;;;; -180892;5;0;false;false;63;95;191;;; -180897;1;0;false;false;;;;;; -180898;2;0;false;false;63;95;191;;; -180900;1;0;false;false;;;;;; -180901;2;0;false;false;63;95;191;;; -180903;1;0;false;false;;;;;; -180904;8;0;false;false;63;95;191;;; -180912;3;0;false;false;;;;;; -180915;1;0;false;false;63;95;191;;; -180916;1;0;false;false;;;;;; -180917;7;1;false;false;127;159;191;;; -180924;18;0;false;false;63;95;191;;; -180942;1;0;false;false;;;;;; -180943;6;0;false;false;63;95;191;;; -180949;1;0;false;false;;;;;; -180950;2;0;false;false;63;95;191;;; -180952;1;0;false;false;;;;;; -180953;3;0;false;false;63;95;191;;; -180956;1;0;false;false;;;;;; -180957;5;0;false;false;63;95;191;;; -180962;1;0;false;false;;;;;; -180963;4;0;false;false;63;95;191;;; -180967;1;0;false;false;;;;;; -180968;3;0;false;false;63;95;191;;; -180971;1;0;false;false;;;;;; -180972;5;0;false;false;63;95;191;;; -180977;1;0;false;false;;;;;; -180978;2;0;false;false;63;95;191;;; -180980;1;0;false;false;;;;;; -180981;2;0;false;false;63;95;191;;; -180983;1;0;false;false;;;;;; -180984;8;0;false;false;63;95;191;;; -180992;3;0;false;false;;;;;; -180995;2;0;false;false;63;95;191;;; -180997;2;0;false;false;;;;;; -180999;4;1;false;false;127;0;85;;; -181003;1;0;false;false;;;;;; -181004;36;0;false;false;0;0;0;;; -181040;1;0;false;false;;;;;; -181041;6;0;false;false;0;0;0;;; -181047;1;0;false;false;;;;;; -181048;1;0;false;false;0;0;0;;; -181049;3;0;false;false;;;;;; -181052;3;1;false;false;127;0;85;;; -181055;1;0;false;false;;;;;; -181056;10;0;false;false;0;0;0;;; -181066;4;0;false;false;;;;;; -181070;3;1;false;false;127;0;85;;; -181073;1;0;false;false;;;;;; -181074;12;0;false;false;0;0;0;;; -181086;3;0;false;false;;;;;; -181089;7;1;false;false;127;0;85;;; -181096;1;0;false;false;;;;;; -181097;17;0;false;false;0;0;0;;; -181114;1;0;false;false;;;;;; -181115;1;0;false;false;0;0;0;;; -181116;1;0;false;false;;;;;; -181117;22;0;false;false;0;0;0;;; -181139;1;0;false;false;;;;;; -181140;1;0;false;false;0;0;0;;; -181141;1;0;false;false;;;;;; -181142;1;0;false;false;0;0;0;;; -181143;1;0;false;false;;;;;; -181144;2;0;false;false;0;0;0;;; -181146;1;0;false;false;;;;;; -181147;18;0;false;false;0;0;0;;; -181165;1;0;false;false;;;;;; -181166;1;0;false;false;0;0;0;;; -181167;1;0;false;false;;;;;; -181168;2;0;false;false;0;0;0;;; -181170;8;0;false;false;;;;;; -181178;2;1;false;false;127;0;85;;; -181180;1;0;false;false;;;;;; -181181;23;0;false;false;0;0;0;;; -181204;1;0;false;false;;;;;; -181205;1;0;false;false;0;0;0;;; -181206;1;0;false;false;;;;;; -181207;2;0;false;false;0;0;0;;; -181209;1;0;false;false;;;;;; -181210;1;0;false;false;0;0;0;;; -181211;4;0;false;false;;;;;; -181215;11;0;false;false;0;0;0;;; -181226;1;0;false;false;;;;;; -181227;2;0;false;false;0;0;0;;; -181229;1;0;false;false;;;;;; -181230;23;0;false;false;0;0;0;;; -181253;4;0;false;false;;;;;; -181257;22;0;false;false;0;0;0;;; -181279;1;0;false;false;;;;;; -181280;2;0;false;false;0;0;0;;; -181282;1;0;false;false;;;;;; -181283;3;0;false;false;0;0;0;;; -181286;3;0;false;false;;;;;; -181289;1;0;false;false;0;0;0;;; -181290;3;0;false;false;;;;;; -181293;19;0;false;false;0;0;0;;; -181312;1;0;false;false;;;;;; -181313;1;0;false;false;0;0;0;;; -181314;1;0;false;false;;;;;; -181315;12;0;false;false;0;0;0;;; -181327;3;0;false;false;;;;;; -181330;26;0;false;false;0;0;0;;; -181356;1;0;false;false;;;;;; -181357;1;0;false;false;0;0;0;;; -181358;1;0;false;false;;;;;; -181359;19;0;false;false;0;0;0;;; -181378;3;0;false;false;;;;;; -181381;26;0;false;false;0;0;0;;; -181407;1;0;false;false;;;;;; -181408;1;0;false;false;0;0;0;;; -181409;1;0;false;false;;;;;; -181410;19;0;false;false;0;0;0;;; -181429;3;0;false;false;;;;;; -181432;30;0;false;false;0;0;0;;; -181462;1;0;false;false;;;;;; -181463;1;0;false;false;0;0;0;;; -181464;1;0;false;false;;;;;; -181465;23;0;false;false;0;0;0;;; -181488;3;0;false;false;;;;;; -181491;30;0;false;false;0;0;0;;; -181521;1;0;false;false;;;;;; -181522;1;0;false;false;0;0;0;;; -181523;1;0;false;false;;;;;; -181524;23;0;false;false;0;0;0;;; -181547;3;0;false;false;;;;;; -181550;9;0;false;false;0;0;0;;; -181559;1;0;false;false;;;;;; -181560;1;0;false;false;0;0;0;;; -181561;1;0;false;false;;;;;; -181562;37;0;false;false;0;0;0;;; -181599;3;0;false;false;;;;;; -181602;11;0;false;false;0;0;0;;; -181613;1;0;false;false;;;;;; -181614;1;0;false;false;0;0;0;;; -181615;1;0;false;false;;;;;; -181616;9;0;false;false;0;0;0;;; -181625;1;0;false;false;;;;;; -181626;1;0;false;false;0;0;0;;; -181627;1;0;false;false;;;;;; -181628;10;0;false;false;0;0;0;;; -181638;1;0;false;false;;;;;; -181639;1;0;false;false;0;0;0;;; -181640;1;0;false;false;;;;;; -181641;20;0;false;false;0;0;0;;; -181661;1;0;false;false;;;;;; -181662;1;0;false;false;0;0;0;;; -181663;1;0;false;false;;;;;; -181664;10;0;false;false;0;0;0;;; -181674;3;0;false;false;;;;;; -181677;2;1;false;false;127;0;85;;; -181679;1;0;false;false;;;;;; -181680;19;0;false;false;0;0;0;;; -181699;1;0;false;false;;;;;; -181700;1;0;false;false;0;0;0;;; -181701;4;0;false;false;;;;;; -181705;34;0;false;false;0;0;0;;; -181739;1;0;false;false;;;;;; -181740;19;0;false;false;0;0;0;;; -181759;1;0;false;false;;;;;; -181760;24;0;false;false;0;0;0;;; -181784;3;0;false;false;;;;;; -181787;1;0;false;false;0;0;0;;; -181788;3;0;false;false;;;;;; -181791;49;0;false;false;63;127;95;;; -181840;1;0;false;false;;;;;; -181841;2;1;false;false;127;0;85;;; -181843;1;0;false;false;;;;;; -181844;18;0;false;false;0;0;0;;; -181862;1;0;false;false;;;;;; -181863;2;0;false;false;0;0;0;;; -181865;1;0;false;false;;;;;; -181866;4;1;false;false;127;0;85;;; -181870;1;0;false;false;0;0;0;;; -181871;1;0;false;false;;;;;; -181872;1;0;false;false;0;0;0;;; -181873;4;0;false;false;;;;;; -181877;38;0;false;false;0;0;0;;; -181915;3;0;false;false;;;;;; -181918;1;0;false;false;0;0;0;;; -181919;6;0;false;false;;;;;; -181925;77;0;false;false;63;127;95;;; -182002;1;0;false;false;;;;;; -182003;70;0;false;false;63;127;95;;; -182073;1;0;false;false;;;;;; -182074;74;0;false;false;63;127;95;;; -182148;1;0;false;false;;;;;; -182149;17;0;false;false;63;127;95;;; -182166;1;0;false;false;;;;;; -182167;3;1;false;false;127;0;85;;; -182170;1;0;false;false;;;;;; -182171;12;0;false;false;0;0;0;;; -182183;1;0;false;false;;;;;; -182184;1;0;false;false;0;0;0;;; -182185;1;0;false;false;;;;;; -182186;22;0;false;false;0;0;0;;; -182208;1;0;false;false;;;;;; -182209;1;0;false;false;0;0;0;;; -182210;1;0;false;false;;;;;; -182211;22;0;false;false;0;0;0;;; -182233;1;0;false;false;;;;;; -182234;1;0;false;false;0;0;0;;; -182235;1;0;false;false;;;;;; -182236;19;0;false;false;0;0;0;;; -182255;3;0;false;false;;;;;; -182258;2;1;false;false;127;0;85;;; -182260;1;0;false;false;;;;;; -182261;12;0;false;false;0;0;0;;; -182273;1;0;false;false;;;;;; -182274;1;0;false;false;0;0;0;;; -182275;1;0;false;false;;;;;; -182276;13;0;false;false;0;0;0;;; -182289;1;0;false;false;;;;;; -182290;11;0;false;false;0;0;0;;; -182301;1;0;false;false;;;;;; -182302;1;0;false;false;0;0;0;;; -182303;1;0;false;false;;;;;; -182304;13;0;false;false;0;0;0;;; -182317;2;0;false;false;;;;;; -182319;1;0;false;false;0;0;0;;; -182320;2;0;false;false;;;;;; -182322;3;0;false;false;63;95;191;;; -182325;3;0;false;false;;;;;; -182328;1;0;false;false;63;95;191;;; -182329;1;0;false;false;;;;;; -182330;6;0;false;false;63;95;191;;; -182336;1;0;false;false;;;;;; -182337;4;0;false;false;63;95;191;;; -182341;1;0;false;false;;;;;; -182342;3;0;false;false;63;95;191;;; -182345;1;0;false;false;;;;;; -182346;6;0;false;false;63;95;191;;; -182352;1;0;false;false;;;;;; -182353;7;0;false;false;63;95;191;;; -182360;1;0;false;false;;;;;; -182361;2;0;false;false;63;95;191;;; -182363;1;0;false;false;;;;;; -182364;3;0;false;false;63;95;191;;; -182367;1;0;false;false;;;;;; -182368;16;0;false;false;63;95;191;;; -182384;1;0;false;false;;;;;; -182385;11;0;false;false;63;95;191;;; -182396;4;0;false;false;;;;;; -182400;1;0;false;false;63;95;191;;; -182401;1;0;false;false;;;;;; -182402;3;0;false;false;63;95;191;;; -182405;1;0;false;false;;;;;; -182406;3;0;false;false;63;95;191;;; -182409;1;0;false;false;;;;;; -182410;8;0;false;false;63;95;191;;; -182418;1;0;false;false;;;;;; -182419;6;0;false;false;63;95;191;;; -182425;1;0;false;false;;;;;; -182426;3;0;false;false;63;95;191;;; -182429;1;0;false;false;;;;;; -182430;5;0;false;false;63;95;191;;; -182435;1;0;false;false;;;;;; -182436;9;0;false;false;63;95;191;;; -182445;1;0;false;false;;;;;; -182446;9;0;false;false;63;95;191;;; -182455;1;0;false;false;;;;;; -182456;3;0;false;false;63;95;191;;; -182459;1;0;false;false;;;;;; -182460;6;0;false;false;63;95;191;;; -182466;1;0;false;false;;;;;; -182467;8;0;false;false;63;95;191;;; -182475;4;0;false;false;;;;;; -182479;1;0;false;false;63;95;191;;; -182480;1;0;false;false;;;;;; -182481;12;0;false;false;63;95;191;;; -182493;1;0;false;false;;;;;; -182494;3;0;false;false;63;95;191;;; -182497;1;0;false;false;;;;;; -182498;7;0;false;false;63;95;191;;; -182505;1;0;false;false;;;;;; -182506;5;0;false;false;63;95;191;;; -182511;1;0;false;false;;;;;; -182512;3;0;false;false;63;95;191;;; -182515;1;0;false;false;;;;;; -182516;6;0;false;false;63;95;191;;; -182522;1;0;false;false;;;;;; -182523;5;0;false;false;63;95;191;;; -182528;1;0;false;false;;;;;; -182529;7;0;false;false;63;95;191;;; -182536;1;0;false;false;;;;;; -182537;3;0;false;false;63;95;191;;; -182540;1;0;false;false;;;;;; -182541;7;0;false;false;63;95;191;;; -182548;3;0;false;false;;;;;; -182551;1;0;false;false;63;95;191;;; -182552;1;0;false;false;;;;;; -182553;3;0;false;false;127;127;159;;; -182556;3;0;false;false;;;;;; -182559;1;0;false;false;63;95;191;;; -182560;3;0;false;false;;;;;; -182563;1;0;false;false;63;95;191;;; -182564;1;0;false;false;;;;;; -182565;7;1;false;false;127;159;191;;; -182572;5;0;false;false;63;95;191;;; -182577;1;0;false;false;;;;;; -182578;4;0;false;false;63;95;191;;; -182582;1;0;false;false;;;;;; -182583;6;0;false;false;63;95;191;;; -182589;1;0;false;false;;;;;; -182590;6;0;false;false;63;95;191;;; -182596;4;0;false;false;;;;;; -182600;2;0;false;false;63;95;191;;; -182602;2;0;false;false;;;;;; -182604;4;1;false;false;127;0;85;;; -182608;1;0;false;false;;;;;; -182609;30;0;false;false;0;0;0;;; -182639;1;0;false;false;;;;;; -182640;6;0;false;false;0;0;0;;; -182646;1;0;false;false;;;;;; -182647;1;0;false;false;0;0;0;;; -182648;3;0;false;false;;;;;; -182651;8;0;false;false;0;0;0;;; -182659;2;0;false;false;;;;;; -182661;1;0;false;false;0;0;0;;; -182662;2;0;false;false;;;;;; -182664;3;0;false;false;63;95;191;;; -182667;3;0;false;false;;;;;; -182670;1;0;false;false;63;95;191;;; -182671;1;0;false;false;;;;;; -182672;6;0;false;false;63;95;191;;; -182678;1;0;false;false;;;;;; -182679;4;0;false;false;63;95;191;;; -182683;1;0;false;false;;;;;; -182684;1;0;false;false;63;95;191;;; -182685;1;0;false;false;;;;;; -182686;9;0;false;false;63;95;191;;; -182695;1;0;false;false;;;;;; -182696;3;0;false;false;63;95;191;;; -182699;1;0;false;false;;;;;; -182700;2;0;false;false;63;95;191;;; -182702;1;0;false;false;;;;;; -182703;8;0;false;false;63;95;191;;; -182711;3;0;false;false;;;;;; -182714;1;0;false;false;63;95;191;;; -182715;1;0;false;false;;;;;; -182716;5;0;false;false;63;95;191;;; -182721;1;0;false;false;;;;;; -182722;3;0;false;false;63;95;191;;; -182725;1;0;false;false;;;;;; -182726;4;0;false;false;63;95;191;;; -182730;1;0;false;false;;;;;; -182731;9;0;false;false;63;95;191;;; -182740;1;0;false;false;;;;;; -182741;2;0;false;false;63;95;191;;; -182743;1;0;false;false;;;;;; -182744;5;0;false;false;63;95;191;;; -182749;1;0;false;false;;;;;; -182750;4;0;false;false;63;95;191;;; -182754;1;0;false;false;;;;;; -182755;3;0;false;false;63;95;191;;; -182758;1;0;false;false;;;;;; -182759;6;0;false;false;63;95;191;;; -182765;1;0;false;false;;;;;; -182766;2;0;false;false;63;95;191;;; -182768;1;0;false;false;;;;;; -182769;2;0;false;false;63;95;191;;; -182771;1;0;false;false;;;;;; -182772;6;0;false;false;63;95;191;;; -182778;4;0;false;false;;;;;; -182782;1;0;false;false;63;95;191;;; -182783;1;0;false;false;;;;;; -182784;4;0;false;false;63;95;191;;; -182788;1;0;false;false;;;;;; -182789;4;0;false;false;63;95;191;;; -182793;1;0;false;false;;;;;; -182794;2;0;false;false;63;95;191;;; -182796;1;0;false;false;;;;;; -182797;2;0;false;false;63;95;191;;; -182799;1;0;false;false;;;;;; -182800;5;0;false;false;63;95;191;;; -182805;1;0;false;false;;;;;; -182806;4;0;false;false;63;95;191;;; -182810;1;0;false;false;;;;;; -182811;3;0;false;false;63;95;191;;; -182814;1;0;false;false;;;;;; -182815;3;0;false;false;63;95;191;;; -182818;1;0;false;false;127;127;159;;; -182819;8;0;false;false;63;95;191;;; -182827;1;0;false;false;;;;;; -182828;4;0;false;false;63;95;191;;; -182832;1;0;false;false;;;;;; -182833;1;0;false;false;63;95;191;;; -182834;4;0;false;false;;;;;; -182838;1;0;false;false;63;95;191;;; -182839;1;0;false;false;;;;;; -182840;4;0;false;false;63;95;191;;; -182844;1;0;false;false;;;;;; -182845;2;0;false;false;63;95;191;;; -182847;1;0;false;false;;;;;; -182848;8;0;false;false;63;95;191;;; -182856;1;0;false;false;;;;;; -182857;5;0;false;false;63;95;191;;; -182862;1;0;false;false;;;;;; -182863;4;0;false;false;63;95;191;;; -182867;1;0;false;false;;;;;; -182868;4;0;false;false;63;95;191;;; -182872;1;0;false;false;;;;;; -182873;2;0;false;false;63;95;191;;; -182875;1;0;false;false;;;;;; -182876;4;0;false;false;63;95;191;;; -182880;1;0;false;false;;;;;; -182881;2;0;false;false;63;95;191;;; -182883;1;0;false;false;;;;;; -182884;7;0;false;false;63;95;191;;; -182891;1;0;false;false;;;;;; -182892;3;0;false;false;63;95;191;;; -182895;1;0;false;false;;;;;; -182896;3;0;false;false;63;95;191;;; -182899;4;0;false;false;;;;;; -182903;1;0;false;false;63;95;191;;; -182904;1;0;false;false;;;;;; -182905;9;0;false;false;63;95;191;;; -182914;1;0;false;false;;;;;; -182915;3;0;false;false;63;95;191;;; -182918;1;0;false;false;;;;;; -182919;7;0;false;false;63;95;191;;; -182926;1;0;false;false;;;;;; -182927;3;0;false;false;63;95;191;;; -182930;1;0;false;false;;;;;; -182931;3;0;false;false;63;95;191;;; -182934;1;0;false;false;;;;;; -182935;3;0;false;false;63;95;191;;; -182938;1;0;false;false;;;;;; -182939;5;0;false;false;63;95;191;;; -182944;1;0;false;false;;;;;; -182945;8;0;false;false;63;95;191;;; -182953;3;0;false;false;;;;;; -182956;1;0;false;false;63;95;191;;; -182957;1;0;false;false;;;;;; -182958;3;0;false;false;127;127;159;;; -182961;3;0;false;false;;;;;; -182964;1;0;false;false;63;95;191;;; -182965;3;0;false;false;;;;;; -182968;1;0;false;false;63;95;191;;; -182969;1;0;false;false;;;;;; -182970;7;1;false;false;127;159;191;;; -182977;5;0;false;false;63;95;191;;; -182982;1;0;false;false;;;;;; -182983;3;0;false;false;63;95;191;;; -182986;1;0;false;false;;;;;; -182987;5;0;false;false;63;95;191;;; -182992;3;0;false;false;;;;;; -182995;2;0;false;false;63;95;191;;; -182997;2;0;false;false;;;;;; -182999;4;1;false;false;127;0;85;;; -183003;1;0;false;false;;;;;; -183004;20;0;false;false;0;0;0;;; -183024;1;0;false;false;;;;;; -183025;6;0;false;false;0;0;0;;; -183031;1;0;false;false;;;;;; -183032;1;0;false;false;0;0;0;;; -183033;3;0;false;false;;;;;; -183036;6;1;false;false;127;0;85;;; -183042;1;0;false;false;;;;;; -183043;14;0;false;false;0;0;0;;; -183057;1;0;false;false;;;;;; -183058;1;0;false;false;0;0;0;;; -183059;4;0;false;false;;;;;; -183063;4;1;false;false;127;0;85;;; -183067;1;0;false;false;;;;;; -183068;20;0;false;false;0;0;0;;; -183088;4;0;false;false;;;;;; -183092;4;1;false;false;127;0;85;;; -183096;1;0;false;false;;;;;; -183097;23;0;false;false;0;0;0;;; -183120;4;0;false;false;;;;;; -183124;4;1;false;false;127;0;85;;; -183128;1;0;false;false;;;;;; -183129;27;0;false;false;0;0;0;;; -183156;5;0;false;false;;;;;; -183161;10;0;false;false;0;0;0;;; -183171;1;0;false;false;;;;;; -183172;1;0;false;false;0;0;0;;; -183173;1;0;false;false;;;;;; -183174;4;1;false;false;127;0;85;;; -183178;1;0;false;false;0;0;0;;; -183179;5;0;false;false;;;;;; -183184;5;1;false;false;127;0;85;;; -183189;1;0;false;false;0;0;0;;; -183190;4;0;false;false;;;;;; -183194;4;1;false;false;127;0;85;;; -183198;1;0;false;false;;;;;; -183199;20;0;false;false;0;0;0;;; -183219;4;0;false;false;;;;;; -183223;4;1;false;false;127;0;85;;; -183227;1;0;false;false;;;;;; -183228;22;0;false;false;0;0;0;;; -183250;4;0;false;false;;;;;; -183254;4;1;false;false;127;0;85;;; -183258;1;0;false;false;;;;;; -183259;26;0;false;false;0;0;0;;; -183285;5;0;false;false;;;;;; -183290;2;1;false;false;127;0;85;;; -183292;1;0;false;false;;;;;; -183293;12;0;false;false;0;0;0;;; -183305;1;0;false;false;;;;;; -183306;1;0;false;false;0;0;0;;; -183307;1;0;false;false;;;;;; -183308;11;0;false;false;0;0;0;;; -183319;1;0;false;false;;;;;; -183320;2;0;false;false;0;0;0;;; -183322;1;0;false;false;;;;;; -183323;2;0;false;false;0;0;0;;; -183325;1;0;false;false;;;;;; -183326;1;0;false;false;0;0;0;;; -183327;6;0;false;false;;;;;; -183333;10;0;false;false;0;0;0;;; -183343;1;0;false;false;;;;;; -183344;1;0;false;false;0;0;0;;; -183345;1;0;false;false;;;;;; -183346;4;1;false;false;127;0;85;;; -183350;1;0;false;false;0;0;0;;; -183351;5;0;false;false;;;;;; -183356;1;0;false;false;0;0;0;;; -183357;1;0;false;false;;;;;; -183358;4;1;false;false;127;0;85;;; -183362;1;0;false;false;;;;;; -183363;1;0;false;false;0;0;0;;; -183364;6;0;false;false;;;;;; -183370;2;1;false;false;127;0;85;;; -183372;1;0;false;false;;;;;; -183373;10;0;false;false;0;0;0;;; -183383;1;0;false;false;;;;;; -183384;2;0;false;false;0;0;0;;; -183386;1;0;false;false;;;;;; -183387;16;0;false;false;0;0;0;;; -183403;1;0;false;false;;;;;; -183404;1;0;false;false;0;0;0;;; -183405;1;0;false;false;;;;;; -183406;18;0;false;false;0;0;0;;; -183424;1;0;false;false;;;;;; -183425;2;0;false;false;0;0;0;;; -183427;1;0;false;false;;;;;; -183428;2;0;false;false;0;0;0;;; -183430;1;0;false;false;;;;;; -183431;1;0;false;false;0;0;0;;; -183432;7;0;false;false;;;;;; -183439;10;0;false;false;0;0;0;;; -183449;1;0;false;false;;;;;; -183450;1;0;false;false;0;0;0;;; -183451;1;0;false;false;;;;;; -183452;4;1;false;false;127;0;85;;; -183456;1;0;false;false;0;0;0;;; -183457;6;0;false;false;;;;;; -183463;1;0;false;false;0;0;0;;; -183464;5;0;false;false;;;;;; -183469;1;0;false;false;0;0;0;;; -183470;5;0;false;false;;;;;; -183475;5;1;false;false;127;0;85;;; -183480;1;0;false;false;0;0;0;;; -183481;3;0;false;false;;;;;; -183484;1;0;false;false;0;0;0;;; -183485;2;0;false;false;;;;;; -183487;1;0;false;false;0;0;0;;; -183488;2;0;false;false;;;;;; -183490;3;0;false;false;63;95;191;;; -183493;4;0;false;false;;;;;; -183497;1;0;false;false;63;95;191;;; -183498;1;0;false;false;;;;;; -183499;7;0;false;false;63;95;191;;; -183506;1;0;false;false;;;;;; -183507;3;0;false;false;63;95;191;;; -183510;1;0;false;false;;;;;; -183511;6;0;false;false;63;95;191;;; -183517;1;0;false;false;;;;;; -183518;11;0;false;false;63;95;191;;; -183529;3;0;false;false;;;;;; -183532;2;0;false;false;63;95;191;;; -183534;2;0;false;false;;;;;; -183536;4;1;false;false;127;0;85;;; -183540;1;0;false;false;;;;;; -183541;26;0;false;false;0;0;0;;; -183567;1;0;false;false;;;;;; -183568;6;0;false;false;0;0;0;;; -183574;1;0;false;false;;;;;; -183575;1;0;false;false;0;0;0;;; -183576;3;0;false;false;;;;;; -183579;56;0;false;false;0;0;0;;; -183635;1;0;false;false;;;;;; -183636;5;1;false;false;127;0;85;;; -183641;2;0;false;false;0;0;0;;; -183643;2;0;false;false;;;;;; -183645;1;0;false;false;0;0;0;;; -183646;2;0;false;false;;;;;; -183648;3;0;false;false;63;95;191;;; -183651;3;0;false;false;;;;;; -183654;1;0;false;false;63;95;191;;; -183655;1;0;false;false;;;;;; -183656;3;0;false;false;63;95;191;;; -183659;1;0;false;false;;;;;; -183660;13;0;false;false;63;95;191;;; -183673;1;0;false;false;;;;;; -183674;7;0;false;false;63;95;191;;; -183681;1;0;false;false;;;;;; -183682;3;0;false;false;63;95;191;;; -183685;1;0;false;false;;;;;; -183686;3;0;false;false;63;95;191;;; -183689;1;0;false;false;;;;;; -183690;7;0;false;false;63;95;191;;; -183697;3;0;false;false;;;;;; -183700;2;0;false;false;63;95;191;;; -183702;2;0;false;false;;;;;; -183704;4;1;false;false;127;0;85;;; -183708;1;0;false;false;;;;;; -183709;22;0;false;false;0;0;0;;; -183731;1;0;false;false;;;;;; -183732;1;0;false;false;0;0;0;;; -183733;3;0;false;false;;;;;; -183736;5;1;false;false;127;0;85;;; -183741;1;0;false;false;;;;;; -183742;10;0;false;false;0;0;0;;; -183752;1;0;false;false;;;;;; -183753;10;0;false;false;0;0;0;;; -183763;1;0;false;false;;;;;; -183764;1;0;false;false;0;0;0;;; -183765;1;0;false;false;;;;;; -183766;16;0;false;false;0;0;0;;; -183782;3;0;false;false;;;;;; -183785;33;0;false;false;0;0;0;;; -183818;3;1;false;false;127;0;85;;; -183821;1;0;false;false;;;;;; -183822;19;0;false;false;0;0;0;;; -183841;1;0;false;false;;;;;; -183842;1;0;false;false;0;0;0;;; -183843;4;0;false;false;;;;;; -183847;6;1;false;false;127;0;85;;; -183853;1;0;false;false;;;;;; -183854;4;1;false;false;127;0;85;;; -183858;1;0;false;false;;;;;; -183859;23;0;false;false;0;0;0;;; -183882;1;0;false;false;;;;;; -183883;2;0;false;false;0;0;0;;; -183885;1;0;false;false;;;;;; -183886;1;0;false;false;0;0;0;;; -183887;5;0;false;false;;;;;; -183892;8;0;false;false;0;0;0;;; -183900;1;0;false;false;;;;;; -183901;1;0;false;false;0;0;0;;; -183902;1;0;false;false;;;;;; -183903;17;0;false;false;0;0;0;;; -183920;4;0;false;false;;;;;; -183924;1;0;false;false;0;0;0;;; -183925;3;0;false;false;;;;;; -183928;3;0;false;false;0;0;0;;; -183931;3;0;false;false;;;;;; -183934;37;0;false;false;0;0;0;;; -183971;3;1;false;false;127;0;85;;; -183974;1;0;false;false;;;;;; -183975;23;0;false;false;0;0;0;;; -183998;1;0;false;false;;;;;; -183999;1;0;false;false;0;0;0;;; -184000;4;0;false;false;;;;;; -184004;6;1;false;false;127;0;85;;; -184010;1;0;false;false;;;;;; -184011;4;1;false;false;127;0;85;;; -184015;1;0;false;false;;;;;; -184016;34;0;false;false;0;0;0;;; -184050;1;0;false;false;;;;;; -184051;2;0;false;false;0;0;0;;; -184053;1;0;false;false;;;;;; -184054;1;0;false;false;0;0;0;;; -184055;5;0;false;false;;;;;; -184060;8;0;false;false;0;0;0;;; -184068;1;0;false;false;;;;;; -184069;1;0;false;false;0;0;0;;; -184070;1;0;false;false;;;;;; -184071;11;0;false;false;0;0;0;;; -184082;4;1;false;false;127;0;85;;; -184086;18;0;false;false;0;0;0;;; -184104;4;0;false;false;;;;;; -184108;1;0;false;false;0;0;0;;; -184109;4;0;false;false;;;;;; -184113;6;1;false;false;127;0;85;;; -184119;1;0;false;false;;;;;; -184120;4;1;false;false;127;0;85;;; -184124;1;0;false;false;;;;;; -184125;37;0;false;false;0;0;0;;; -184162;1;0;false;false;;;;;; -184163;2;0;false;false;0;0;0;;; -184165;1;0;false;false;;;;;; -184166;1;0;false;false;0;0;0;;; -184167;5;0;false;false;;;;;; -184172;5;0;false;false;0;0;0;;; -184177;1;0;false;false;;;;;; -184178;9;0;false;false;0;0;0;;; -184187;1;0;false;false;;;;;; -184188;1;0;false;false;0;0;0;;; -184189;1;0;false;false;;;;;; -184190;11;0;false;false;0;0;0;;; -184201;4;1;false;false;127;0;85;;; -184205;21;0;false;false;0;0;0;;; -184226;5;0;false;false;;;;;; -184231;8;0;false;false;0;0;0;;; -184239;1;0;false;false;;;;;; -184240;1;0;false;false;0;0;0;;; -184241;1;0;false;false;;;;;; -184242;12;0;false;false;0;0;0;;; -184254;5;0;false;false;;;;;; -184259;8;0;false;false;0;0;0;;; -184267;1;0;false;false;;;;;; -184268;1;0;false;false;0;0;0;;; -184269;1;0;false;false;;;;;; -184270;12;0;false;false;0;0;0;;; -184282;4;0;false;false;;;;;; -184286;1;0;false;false;0;0;0;;; -184287;3;0;false;false;;;;;; -184290;3;0;false;false;0;0;0;;; -184293;3;0;false;false;;;;;; -184296;40;0;false;false;0;0;0;;; -184336;3;1;false;false;127;0;85;;; -184339;1;0;false;false;;;;;; -184340;26;0;false;false;0;0;0;;; -184366;1;0;false;false;;;;;; -184367;1;0;false;false;0;0;0;;; -184368;4;0;false;false;;;;;; -184372;6;1;false;false;127;0;85;;; -184378;1;0;false;false;;;;;; -184379;4;1;false;false;127;0;85;;; -184383;1;0;false;false;;;;;; -184384;30;0;false;false;0;0;0;;; -184414;1;0;false;false;;;;;; -184415;2;0;false;false;0;0;0;;; -184417;1;0;false;false;;;;;; -184418;1;0;false;false;0;0;0;;; -184419;5;0;false;false;;;;;; -184424;8;0;false;false;0;0;0;;; -184432;1;0;false;false;;;;;; -184433;1;0;false;false;0;0;0;;; -184434;1;0;false;false;;;;;; -184435;14;0;false;false;0;0;0;;; -184449;4;0;false;false;;;;;; -184453;1;0;false;false;0;0;0;;; -184454;4;0;false;false;;;;;; -184458;6;1;false;false;127;0;85;;; -184464;1;0;false;false;;;;;; -184465;4;1;false;false;127;0;85;;; -184469;1;0;false;false;;;;;; -184470;31;0;false;false;0;0;0;;; -184501;1;0;false;false;;;;;; -184502;2;0;false;false;0;0;0;;; -184504;1;0;false;false;;;;;; -184505;1;0;false;false;0;0;0;;; -184506;5;0;false;false;;;;;; -184511;3;1;false;false;127;0;85;;; -184514;1;0;false;false;;;;;; -184515;5;0;false;false;0;0;0;;; -184520;1;0;false;false;;;;;; -184521;1;0;false;false;0;0;0;;; -184522;1;0;false;false;;;;;; -184523;2;0;false;false;0;0;0;;; -184525;5;0;false;false;;;;;; -184530;2;1;false;false;127;0;85;;; -184532;1;0;false;false;;;;;; -184533;13;0;false;false;0;0;0;;; -184546;1;0;false;false;;;;;; -184547;5;0;false;false;0;0;0;;; -184552;1;0;false;false;;;;;; -184553;2;0;false;false;0;0;0;;; -184555;1;0;false;false;;;;;; -184556;20;0;false;false;0;0;0;;; -184576;5;0;false;false;;;;;; -184581;2;1;false;false;127;0;85;;; -184583;1;0;false;false;;;;;; -184584;18;0;false;false;0;0;0;;; -184602;1;0;false;false;;;;;; -184603;5;0;false;false;0;0;0;;; -184608;1;0;false;false;;;;;; -184609;2;0;false;false;0;0;0;;; -184611;1;0;false;false;;;;;; -184612;18;0;false;false;0;0;0;;; -184630;5;0;false;false;;;;;; -184635;2;1;false;false;127;0;85;;; -184637;1;0;false;false;;;;;; -184638;14;0;false;false;0;0;0;;; -184652;1;0;false;false;;;;;; -184653;5;0;false;false;0;0;0;;; -184658;1;0;false;false;;;;;; -184659;2;0;false;false;0;0;0;;; -184661;1;0;false;false;;;;;; -184662;20;0;false;false;0;0;0;;; -184682;5;0;false;false;;;;;; -184687;2;1;false;false;127;0;85;;; -184689;1;0;false;false;;;;;; -184690;16;0;false;false;0;0;0;;; -184706;1;0;false;false;;;;;; -184707;5;0;false;false;0;0;0;;; -184712;1;0;false;false;;;;;; -184713;2;0;false;false;0;0;0;;; -184715;1;0;false;false;;;;;; -184716;19;0;false;false;0;0;0;;; -184735;5;0;false;false;;;;;; -184740;8;0;false;false;0;0;0;;; -184748;1;0;false;false;;;;;; -184749;1;0;false;false;0;0;0;;; -184750;1;0;false;false;;;;;; -184751;6;0;false;false;0;0;0;;; -184757;4;0;false;false;;;;;; -184761;1;0;false;false;0;0;0;;; -184762;4;0;false;false;;;;;; -184766;6;1;false;false;127;0;85;;; -184772;1;0;false;false;;;;;; -184773;4;1;false;false;127;0;85;;; -184777;1;0;false;false;;;;;; -184778;31;0;false;false;0;0;0;;; -184809;1;0;false;false;;;;;; -184810;2;0;false;false;0;0;0;;; -184812;1;0;false;false;;;;;; -184813;1;0;false;false;0;0;0;;; -184814;5;0;false;false;;;;;; -184819;8;0;false;false;0;0;0;;; -184827;1;0;false;false;;;;;; -184828;1;0;false;false;0;0;0;;; -184829;1;0;false;false;;;;;; -184830;11;0;false;false;0;0;0;;; -184841;4;1;false;false;127;0;85;;; -184845;11;0;false;false;0;0;0;;; -184856;4;0;false;false;;;;;; -184860;1;0;false;false;0;0;0;;; -184861;3;0;false;false;;;;;; -184864;3;0;false;false;0;0;0;;; -184867;5;0;false;false;;;;;; -184872;24;0;false;false;0;0;0;;; -184896;1;0;false;false;;;;;; -184897;3;1;false;false;127;0;85;;; -184900;1;0;false;false;;;;;; -184901;10;0;false;false;0;0;0;;; -184911;1;0;false;false;;;;;; -184912;1;0;false;false;0;0;0;;; -184913;4;0;false;false;;;;;; -184917;6;1;false;false;127;0;85;;; -184923;1;0;false;false;;;;;; -184924;4;1;false;false;127;0;85;;; -184928;1;0;false;false;;;;;; -184929;17;0;false;false;0;0;0;;; -184946;1;0;false;false;;;;;; -184947;6;0;false;false;0;0;0;;; -184953;1;0;false;false;;;;;; -184954;1;0;false;false;0;0;0;;; -184955;5;0;false;false;;;;;; -184960;38;0;false;false;0;0;0;;; -184998;4;0;false;false;;;;;; -185002;1;0;false;false;0;0;0;;; -185003;3;0;false;false;;;;;; -185006;3;0;false;false;0;0;0;;; -185009;2;0;false;false;;;;;; -185011;1;0;false;false;0;0;0;;; -185012;2;0;false;false;;;;;; -185014;3;0;false;false;63;95;191;;; -185017;4;0;false;false;;;;;; -185021;1;0;false;false;63;95;191;;; -185022;1;0;false;false;;;;;; -185023;11;0;false;false;63;95;191;;; -185034;1;0;false;false;;;;;; -185035;3;0;false;false;63;95;191;;; -185038;1;0;false;false;;;;;; -185039;5;0;false;false;63;95;191;;; -185044;1;0;false;false;;;;;; -185045;4;0;false;false;63;95;191;;; -185049;1;0;false;false;;;;;; -185050;2;0;false;false;63;95;191;;; -185052;1;0;false;false;;;;;; -185053;6;0;false;false;63;95;191;;; -185059;1;0;false;false;;;;;; -185060;4;0;false;false;63;95;191;;; -185064;1;0;false;false;;;;;; -185065;7;0;false;false;63;95;191;;; -185072;3;0;false;false;;;;;; -185075;1;0;false;false;63;95;191;;; -185076;1;0;false;false;;;;;; -185077;9;0;false;false;63;95;191;;; -185086;1;0;false;false;;;;;; -185087;4;0;false;false;63;95;191;;; -185091;1;0;false;false;;;;;; -185092;7;0;false;false;63;95;191;;; -185099;1;0;false;false;;;;;; -185100;3;0;false;false;63;95;191;;; -185103;1;0;false;false;;;;;; -185104;4;0;false;false;63;95;191;;; -185108;1;0;false;false;;;;;; -185109;5;0;false;false;63;95;191;;; -185114;1;0;false;false;;;;;; -185115;3;0;false;false;63;95;191;;; -185118;1;0;false;false;;;;;; -185119;10;0;false;false;63;95;191;;; -185129;3;0;false;false;;;;;; -185132;2;0;false;false;63;95;191;;; -185134;2;0;false;false;;;;;; -185136;4;1;false;false;127;0;85;;; -185140;1;0;false;false;;;;;; -185141;20;0;false;false;0;0;0;;; -185161;1;0;false;false;;;;;; -185162;1;0;false;false;0;0;0;;; -185163;3;0;false;false;;;;;; -185166;2;1;false;false;127;0;85;;; -185168;1;0;false;false;;;;;; -185169;9;0;false;false;0;0;0;;; -185178;1;0;false;false;;;;;; -185179;2;0;false;false;0;0;0;;; -185181;1;0;false;false;;;;;; -185182;4;1;false;false;127;0;85;;; -185186;1;0;false;false;0;0;0;;; -185187;1;0;false;false;;;;;; -185188;1;0;false;false;0;0;0;;; -185189;4;0;false;false;;;;;; -185193;19;0;false;false;0;0;0;;; -185212;3;0;false;false;;;;;; -185215;1;0;false;false;0;0;0;;; -185216;3;0;false;false;;;;;; -185219;8;0;false;false;0;0;0;;; -185227;1;0;false;false;;;;;; -185228;1;0;false;false;0;0;0;;; -185229;1;0;false;false;;;;;; -185230;3;1;false;false;127;0;85;;; -185233;1;0;false;false;;;;;; -185234;29;0;false;false;0;0;0;;; -185263;1;0;false;false;;;;;; -185264;10;0;false;false;0;0;0;;; -185274;1;0;false;false;;;;;; -185275;4;1;false;false;127;0;85;;; -185279;1;0;false;false;0;0;0;;; -185280;1;0;false;false;;;;;; -185281;11;0;false;false;0;0;0;;; -185292;3;0;false;false;;;;;; -185295;10;0;false;false;0;0;0;;; -185305;1;0;false;false;;;;;; -185306;1;0;false;false;0;0;0;;; -185307;1;0;false;false;;;;;; -185308;25;0;false;false;0;0;0;;; -185333;3;0;false;false;;;;;; -185336;2;1;false;false;127;0;85;;; -185338;1;0;false;false;;;;;; -185339;10;0;false;false;0;0;0;;; -185349;1;0;false;false;;;;;; -185350;1;0;false;false;0;0;0;;; -185351;4;0;false;false;;;;;; -185355;7;0;false;false;0;0;0;;; -185362;1;0;false;false;;;;;; -185363;1;0;false;false;0;0;0;;; -185364;1;0;false;false;;;;;; -185365;3;1;false;false;127;0;85;;; -185368;1;0;false;false;;;;;; -185369;24;0;false;false;0;0;0;;; -185393;1;0;false;false;;;;;; -185394;16;0;false;false;0;0;0;;; -185410;3;0;false;false;;;;;; -185413;1;0;false;false;0;0;0;;; -185414;2;0;false;false;;;;;; -185416;1;0;false;false;0;0;0;;; -185417;2;0;false;false;;;;;; -185419;3;0;false;false;63;95;191;;; -185422;3;0;false;false;;;;;; -185425;1;0;false;false;63;95;191;;; -185426;1;0;false;false;;;;;; -185427;8;0;false;false;63;95;191;;; -185435;1;0;false;false;;;;;; -185436;3;0;false;false;63;95;191;;; -185439;1;0;false;false;;;;;; -185440;7;0;false;false;63;95;191;;; -185447;3;0;false;false;;;;;; -185450;1;0;false;false;63;95;191;;; -185451;1;0;false;false;;;;;; -185452;3;0;false;false;127;127;159;;; -185455;3;0;false;false;;;;;; -185458;1;0;false;false;63;95;191;;; -185459;3;0;false;false;;;;;; -185462;1;0;false;false;63;95;191;;; -185463;1;0;false;false;;;;;; -185464;7;1;false;false;127;159;191;;; -185471;6;0;false;false;63;95;191;;; -185477;1;0;false;false;;;;;; -185478;3;0;false;false;63;95;191;;; -185481;1;0;false;false;;;;;; -185482;2;0;false;false;63;95;191;;; -185484;1;0;false;false;;;;;; -185485;3;0;false;false;63;95;191;;; -185488;1;0;false;false;;;;;; -185489;7;0;false;false;63;95;191;;; -185496;1;0;false;false;;;;;; -185497;7;0;false;false;63;95;191;;; -185504;1;0;false;false;;;;;; -185505;2;0;false;false;63;95;191;;; -185507;1;0;false;false;;;;;; -185508;7;0;false;false;63;95;191;;; -185515;3;0;false;false;;;;;; -185518;2;0;false;false;63;95;191;;; -185520;2;0;false;false;;;;;; -185522;6;1;false;false;127;0;85;;; -185528;1;0;false;false;;;;;; -185529;4;1;false;false;127;0;85;;; -185533;1;0;false;false;;;;;; -185534;13;0;false;false;0;0;0;;; -185547;3;1;false;false;127;0;85;;; -185550;1;0;false;false;;;;;; -185551;7;0;false;false;0;0;0;;; -185558;1;0;false;false;;;;;; -185559;1;0;false;false;0;0;0;;; -185560;3;0;false;false;;;;;; -185563;3;1;false;false;127;0;85;;; -185566;1;0;false;false;;;;;; -185567;11;0;false;false;0;0;0;;; -185578;1;0;false;false;;;;;; -185579;17;0;false;false;0;0;0;;; -185596;1;0;false;false;;;;;; -185597;14;0;false;false;0;0;0;;; -185611;3;0;false;false;;;;;; -185614;3;1;false;false;127;0;85;;; -185617;1;0;false;false;;;;;; -185618;10;0;false;false;0;0;0;;; -185628;6;0;false;false;;;;;; -185634;14;0;false;false;0;0;0;;; -185648;3;0;false;false;;;;;; -185651;20;0;false;false;0;0;0;;; -185671;1;0;false;false;;;;;; -185672;1;0;false;false;0;0;0;;; -185673;1;0;false;false;;;;;; -185674;4;1;false;false;127;0;85;;; -185678;1;0;false;false;0;0;0;;; -185679;3;0;false;false;;;;;; -185682;6;1;false;false;127;0;85;;; -185688;1;0;false;false;;;;;; -185689;8;0;false;false;0;0;0;;; -185697;1;0;false;false;;;;;; -185698;1;0;false;false;0;0;0;;; -185699;4;0;false;false;;;;;; -185703;15;0;false;false;63;127;95;;; -185718;2;0;false;false;;;;;; -185720;4;1;false;false;127;0;85;;; -185724;1;0;false;false;;;;;; -185725;11;0;false;false;0;0;0;;; -185736;5;0;false;false;;;;;; -185741;9;0;false;false;0;0;0;;; -185750;1;0;false;false;;;;;; -185751;1;0;false;false;0;0;0;;; -185752;1;0;false;false;;;;;; -185753;11;0;false;false;0;0;0;;; -185764;5;0;false;false;;;;;; -185769;10;0;false;false;0;0;0;;; -185779;1;0;false;false;;;;;; -185780;1;0;false;false;0;0;0;;; -185781;1;0;false;false;;;;;; -185782;8;0;false;false;0;0;0;;; -185790;5;0;false;false;;;;;; -185795;16;0;false;false;0;0;0;;; -185811;1;0;false;false;;;;;; -185812;1;0;false;false;0;0;0;;; -185813;1;0;false;false;;;;;; -185814;23;0;false;false;0;0;0;;; -185837;5;0;false;false;;;;;; -185842;66;0;false;false;63;127;95;;; -185908;3;0;false;false;;;;;; -185911;69;0;false;false;63;127;95;;; -185980;3;0;false;false;;;;;; -185983;21;0;false;false;0;0;0;;; -186004;5;0;false;false;;;;;; -186009;51;0;false;false;63;127;95;;; -186060;3;0;false;false;;;;;; -186063;13;0;false;false;0;0;0;;; -186076;1;0;false;false;;;;;; -186077;1;0;false;false;0;0;0;;; -186078;1;0;false;false;;;;;; -186079;16;0;false;false;0;0;0;;; -186095;1;0;false;false;;;;;; -186096;1;0;false;false;0;0;0;;; -186097;1;0;false;false;;;;;; -186098;23;0;false;false;0;0;0;;; -186121;5;0;false;false;;;;;; -186126;7;0;false;false;0;0;0;;; -186133;1;0;false;false;;;;;; -186134;1;0;false;false;0;0;0;;; -186135;1;0;false;false;;;;;; -186136;10;0;false;false;0;0;0;;; -186146;1;0;false;false;;;;;; -186147;1;0;false;false;0;0;0;;; -186148;1;0;false;false;;;;;; -186149;14;0;false;false;0;0;0;;; -186163;5;0;false;false;;;;;; -186168;15;0;false;false;0;0;0;;; -186183;4;1;false;false;127;0;85;;; -186187;2;0;false;false;0;0;0;;; -186189;5;0;false;false;;;;;; -186194;5;1;false;false;127;0;85;;; -186199;1;0;false;false;0;0;0;;; -186200;4;0;false;false;;;;;; -186204;4;1;false;false;127;0;85;;; -186208;1;0;false;false;;;;;; -186209;13;0;false;false;0;0;0;;; -186222;5;0;false;false;;;;;; -186227;9;0;false;false;0;0;0;;; -186236;1;0;false;false;;;;;; -186237;1;0;false;false;0;0;0;;; -186238;1;0;false;false;;;;;; -186239;13;0;false;false;0;0;0;;; -186252;5;0;false;false;;;;;; -186257;10;0;false;false;0;0;0;;; -186267;1;0;false;false;;;;;; -186268;1;0;false;false;0;0;0;;; -186269;1;0;false;false;;;;;; -186270;8;0;false;false;0;0;0;;; -186278;5;0;false;false;;;;;; -186283;16;0;false;false;0;0;0;;; -186299;1;0;false;false;;;;;; -186300;1;0;false;false;0;0;0;;; -186301;1;0;false;false;;;;;; -186302;23;0;false;false;0;0;0;;; -186325;5;0;false;false;;;;;; -186330;66;0;false;false;63;127;95;;; -186396;3;0;false;false;;;;;; -186399;69;0;false;false;63;127;95;;; -186468;3;0;false;false;;;;;; -186471;21;0;false;false;0;0;0;;; -186492;5;0;false;false;;;;;; -186497;51;0;false;false;63;127;95;;; -186548;3;0;false;false;;;;;; -186551;13;0;false;false;0;0;0;;; -186564;1;0;false;false;;;;;; -186565;1;0;false;false;0;0;0;;; -186566;1;0;false;false;;;;;; -186567;16;0;false;false;0;0;0;;; -186583;1;0;false;false;;;;;; -186584;1;0;false;false;0;0;0;;; -186585;1;0;false;false;;;;;; -186586;23;0;false;false;0;0;0;;; -186609;5;0;false;false;;;;;; -186614;7;0;false;false;0;0;0;;; -186621;1;0;false;false;;;;;; -186622;1;0;false;false;0;0;0;;; -186623;1;0;false;false;;;;;; -186624;10;0;false;false;0;0;0;;; -186634;1;0;false;false;;;;;; -186635;1;0;false;false;0;0;0;;; -186636;1;0;false;false;;;;;; -186637;14;0;false;false;0;0;0;;; -186651;5;0;false;false;;;;;; -186656;15;0;false;false;0;0;0;;; -186671;4;1;false;false;127;0;85;;; -186675;2;0;false;false;0;0;0;;; -186677;5;0;false;false;;;;;; -186682;5;1;false;false;127;0;85;;; -186687;1;0;false;false;0;0;0;;; -186688;4;0;false;false;;;;;; -186692;4;1;false;false;127;0;85;;; -186696;1;0;false;false;;;;;; -186697;14;0;false;false;0;0;0;;; -186711;5;0;false;false;;;;;; -186716;14;0;false;false;0;0;0;;; -186730;5;0;false;false;;;;;; -186735;15;0;false;false;0;0;0;;; -186750;4;1;false;false;127;0;85;;; -186754;2;0;false;false;0;0;0;;; -186756;5;0;false;false;;;;;; -186761;5;1;false;false;127;0;85;;; -186766;1;0;false;false;0;0;0;;; -186767;4;0;false;false;;;;;; -186771;4;1;false;false;127;0;85;;; -186775;1;0;false;false;;;;;; -186776;12;0;false;false;0;0;0;;; -186788;5;0;false;false;;;;;; -186793;12;0;false;false;0;0;0;;; -186805;5;0;false;false;;;;;; -186810;15;0;false;false;0;0;0;;; -186825;4;1;false;false;127;0;85;;; -186829;2;0;false;false;0;0;0;;; -186831;5;0;false;false;;;;;; -186836;5;1;false;false;127;0;85;;; -186841;1;0;false;false;0;0;0;;; -186842;4;0;false;false;;;;;; -186846;4;1;false;false;127;0;85;;; -186850;1;0;false;false;;;;;; -186851;19;0;false;false;0;0;0;;; -186870;5;0;false;false;;;;;; -186875;19;0;false;false;0;0;0;;; -186894;5;0;false;false;;;;;; -186899;15;0;false;false;0;0;0;;; -186914;4;1;false;false;127;0;85;;; -186918;2;0;false;false;0;0;0;;; -186920;5;0;false;false;;;;;; -186925;5;1;false;false;127;0;85;;; -186930;1;0;false;false;0;0;0;;; -186931;4;0;false;false;;;;;; -186935;4;1;false;false;127;0;85;;; -186939;1;0;false;false;;;;;; -186940;15;0;false;false;0;0;0;;; -186955;5;0;false;false;;;;;; -186960;15;0;false;false;0;0;0;;; -186975;5;0;false;false;;;;;; -186980;15;0;false;false;0;0;0;;; -186995;4;1;false;false;127;0;85;;; -186999;2;0;false;false;0;0;0;;; -187001;5;0;false;false;;;;;; -187006;5;1;false;false;127;0;85;;; -187011;1;0;false;false;0;0;0;;; -187012;4;0;false;false;;;;;; -187016;4;1;false;false;127;0;85;;; -187020;1;0;false;false;;;;;; -187021;11;0;false;false;0;0;0;;; -187032;5;0;false;false;;;;;; -187037;9;0;false;false;0;0;0;;; -187046;5;1;false;false;127;0;85;;; -187051;1;0;false;false;0;0;0;;; -187052;1;0;false;false;;;;;; -187053;21;0;false;false;0;0;0;;; -187074;5;0;false;false;;;;;; -187079;15;0;false;false;0;0;0;;; -187094;4;1;false;false;127;0;85;;; -187098;2;0;false;false;0;0;0;;; -187100;5;0;false;false;;;;;; -187105;5;1;false;false;127;0;85;;; -187110;1;0;false;false;0;0;0;;; -187111;4;0;false;false;;;;;; -187115;4;1;false;false;127;0;85;;; -187119;1;0;false;false;;;;;; -187120;13;0;false;false;0;0;0;;; -187133;5;0;false;false;;;;;; -187138;11;0;false;false;0;0;0;;; -187149;5;1;false;false;127;0;85;;; -187154;1;0;false;false;0;0;0;;; -187155;1;0;false;false;;;;;; -187156;21;0;false;false;0;0;0;;; -187177;5;0;false;false;;;;;; -187182;15;0;false;false;0;0;0;;; -187197;4;1;false;false;127;0;85;;; -187201;2;0;false;false;0;0;0;;; -187203;5;0;false;false;;;;;; -187208;5;1;false;false;127;0;85;;; -187213;1;0;false;false;0;0;0;;; -187214;4;0;false;false;;;;;; -187218;4;1;false;false;127;0;85;;; -187222;1;0;false;false;;;;;; -187223;17;0;false;false;0;0;0;;; -187240;5;0;false;false;;;;;; -187245;17;0;false;false;0;0;0;;; -187262;5;0;false;false;;;;;; -187267;15;0;false;false;0;0;0;;; -187282;4;1;false;false;127;0;85;;; -187286;2;0;false;false;0;0;0;;; -187288;5;0;false;false;;;;;; -187293;5;1;false;false;127;0;85;;; -187298;1;0;false;false;0;0;0;;; -187299;4;0;false;false;;;;;; -187303;4;1;false;false;127;0;85;;; -187307;1;0;false;false;;;;;; -187308;13;0;false;false;0;0;0;;; -187321;5;0;false;false;;;;;; -187326;13;0;false;false;0;0;0;;; -187339;5;0;false;false;;;;;; -187344;15;0;false;false;0;0;0;;; -187359;4;1;false;false;127;0;85;;; -187363;2;0;false;false;0;0;0;;; -187365;5;0;false;false;;;;;; -187370;5;1;false;false;127;0;85;;; -187375;1;0;false;false;0;0;0;;; -187376;4;0;false;false;;;;;; -187380;4;1;false;false;127;0;85;;; -187384;1;0;false;false;;;;;; -187385;14;0;false;false;0;0;0;;; -187399;5;0;false;false;;;;;; -187404;17;0;false;false;0;0;0;;; -187421;5;0;false;false;;;;;; -187426;15;0;false;false;0;0;0;;; -187441;4;1;false;false;127;0;85;;; -187445;2;0;false;false;0;0;0;;; -187447;5;0;false;false;;;;;; -187452;5;1;false;false;127;0;85;;; -187457;1;0;false;false;0;0;0;;; -187458;4;0;false;false;;;;;; -187462;4;1;false;false;127;0;85;;; -187466;1;0;false;false;;;;;; -187467;12;0;false;false;0;0;0;;; -187479;5;0;false;false;;;;;; -187484;15;0;false;false;0;0;0;;; -187499;5;0;false;false;;;;;; -187504;15;0;false;false;0;0;0;;; -187519;4;1;false;false;127;0;85;;; -187523;2;0;false;false;0;0;0;;; -187525;5;0;false;false;;;;;; -187530;5;1;false;false;127;0;85;;; -187535;1;0;false;false;0;0;0;;; -187536;4;0;false;false;;;;;; -187540;4;1;false;false;127;0;85;;; -187544;1;0;false;false;;;;;; -187545;16;0;false;false;0;0;0;;; -187561;5;0;false;false;;;;;; -187566;14;0;false;false;0;0;0;;; -187580;5;0;false;false;;;;;; -187585;15;0;false;false;0;0;0;;; -187600;4;1;false;false;127;0;85;;; -187604;2;0;false;false;0;0;0;;; -187606;5;0;false;false;;;;;; -187611;5;1;false;false;127;0;85;;; -187616;1;0;false;false;0;0;0;;; -187617;4;0;false;false;;;;;; -187621;4;1;false;false;127;0;85;;; -187625;1;0;false;false;;;;;; -187626;14;0;false;false;0;0;0;;; -187640;5;0;false;false;;;;;; -187645;12;0;false;false;0;0;0;;; -187657;5;0;false;false;;;;;; -187662;15;0;false;false;0;0;0;;; -187677;4;1;false;false;127;0;85;;; -187681;2;0;false;false;0;0;0;;; -187683;5;0;false;false;;;;;; -187688;5;1;false;false;127;0;85;;; -187693;1;0;false;false;0;0;0;;; -187694;4;0;false;false;;;;;; -187698;15;0;false;false;63;127;95;;; -187713;2;0;false;false;;;;;; -187715;4;1;false;false;127;0;85;;; -187719;1;0;false;false;;;;;; -187720;18;0;false;false;0;0;0;;; -187738;5;0;false;false;;;;;; -187743;20;0;false;false;0;0;0;;; -187763;5;0;false;false;;;;;; -187768;5;1;false;false;127;0;85;;; -187773;1;0;false;false;0;0;0;;; -187774;4;0;false;false;;;;;; -187778;4;1;false;false;127;0;85;;; -187782;1;0;false;false;;;;;; -187783;14;0;false;false;0;0;0;;; -187797;5;0;false;false;;;;;; -187802;12;0;false;false;0;0;0;;; -187814;5;0;false;false;;;;;; -187819;5;1;false;false;127;0;85;;; -187824;1;0;false;false;0;0;0;;; -187825;4;0;false;false;;;;;; -187829;4;1;false;false;127;0;85;;; -187833;1;0;false;false;;;;;; -187834;20;0;false;false;0;0;0;;; -187854;5;0;false;false;;;;;; -187859;22;0;false;false;0;0;0;;; -187881;5;0;false;false;;;;;; -187886;5;1;false;false;127;0;85;;; -187891;1;0;false;false;0;0;0;;; -187892;4;0;false;false;;;;;; -187896;4;1;false;false;127;0;85;;; -187900;1;0;false;false;;;;;; -187901;21;0;false;false;0;0;0;;; -187922;5;0;false;false;;;;;; -187927;14;0;false;false;0;0;0;;; -187941;5;0;false;false;;;;;; -187946;32;0;false;false;0;0;0;;; -187978;5;0;false;false;;;;;; -187983;5;1;false;false;127;0;85;;; -187988;1;0;false;false;0;0;0;;; -187989;4;0;false;false;;;;;; -187993;4;1;false;false;127;0;85;;; -187997;1;0;false;false;;;;;; -187998;19;0;false;false;0;0;0;;; -188017;5;0;false;false;;;;;; -188022;12;0;false;false;0;0;0;;; -188034;5;0;false;false;;;;;; -188039;28;0;false;false;0;0;0;;; -188067;5;0;false;false;;;;;; -188072;5;1;false;false;127;0;85;;; -188077;1;0;false;false;0;0;0;;; -188078;4;0;false;false;;;;;; -188082;4;1;false;false;127;0;85;;; -188086;1;0;false;false;;;;;; -188087;26;0;false;false;0;0;0;;; -188113;5;0;false;false;;;;;; -188118;28;0;false;false;0;0;0;;; -188146;5;0;false;false;;;;;; -188151;32;0;false;false;0;0;0;;; -188183;5;0;false;false;;;;;; -188188;5;1;false;false;127;0;85;;; -188193;1;0;false;false;0;0;0;;; -188194;4;0;false;false;;;;;; -188198;4;1;false;false;127;0;85;;; -188202;1;0;false;false;;;;;; -188203;22;0;false;false;0;0;0;;; -188225;5;0;false;false;;;;;; -188230;24;0;false;false;0;0;0;;; -188254;5;0;false;false;;;;;; -188259;28;0;false;false;0;0;0;;; -188287;5;0;false;false;;;;;; -188292;5;1;false;false;127;0;85;;; -188297;1;0;false;false;0;0;0;;; -188298;4;0;false;false;;;;;; -188302;4;1;false;false;127;0;85;;; -188306;1;0;false;false;;;;;; -188307;18;0;false;false;0;0;0;;; -188325;5;0;false;false;;;;;; -188330;39;0;false;false;0;0;0;;; -188369;5;0;false;false;;;;;; -188374;5;1;false;false;127;0;85;;; -188379;1;0;false;false;0;0;0;;; -188380;4;0;false;false;;;;;; -188384;4;1;false;false;127;0;85;;; -188388;1;0;false;false;;;;;; -188389;20;0;false;false;0;0;0;;; -188409;5;0;false;false;;;;;; -188414;41;0;false;false;0;0;0;;; -188455;5;0;false;false;;;;;; -188460;5;1;false;false;127;0;85;;; -188465;1;0;false;false;0;0;0;;; -188466;4;0;false;false;;;;;; -188470;4;1;false;false;127;0;85;;; -188474;1;0;false;false;;;;;; -188475;24;0;false;false;0;0;0;;; -188499;5;0;false;false;;;;;; -188504;26;0;false;false;0;0;0;;; -188530;5;0;false;false;;;;;; -188535;32;0;false;false;0;0;0;;; -188567;5;0;false;false;;;;;; -188572;5;1;false;false;127;0;85;;; -188577;1;0;false;false;0;0;0;;; -188578;4;0;false;false;;;;;; -188582;4;1;false;false;127;0;85;;; -188586;1;0;false;false;;;;;; -188587;20;0;false;false;0;0;0;;; -188607;5;0;false;false;;;;;; -188612;22;0;false;false;0;0;0;;; -188634;5;0;false;false;;;;;; -188639;28;0;false;false;0;0;0;;; -188667;5;0;false;false;;;;;; -188672;5;1;false;false;127;0;85;;; -188677;1;0;false;false;0;0;0;;; -188678;4;0;false;false;;;;;; -188682;4;1;false;false;127;0;85;;; -188686;1;0;false;false;;;;;; -188687;21;0;false;false;0;0;0;;; -188708;5;0;false;false;;;;;; -188713;17;0;false;false;0;0;0;;; -188730;5;0;false;false;;;;;; -188735;32;0;false;false;0;0;0;;; -188767;5;0;false;false;;;;;; -188772;5;1;false;false;127;0;85;;; -188777;1;0;false;false;0;0;0;;; -188778;4;0;false;false;;;;;; -188782;4;1;false;false;127;0;85;;; -188786;1;0;false;false;;;;;; -188787;19;0;false;false;0;0;0;;; -188806;5;0;false;false;;;;;; -188811;15;0;false;false;0;0;0;;; -188826;5;0;false;false;;;;;; -188831;28;0;false;false;0;0;0;;; -188859;5;0;false;false;;;;;; -188864;5;1;false;false;127;0;85;;; -188869;1;0;false;false;0;0;0;;; -188870;4;0;false;false;;;;;; -188874;4;1;false;false;127;0;85;;; -188878;1;0;false;false;;;;;; -188879;23;0;false;false;0;0;0;;; -188902;5;0;false;false;;;;;; -188907;14;0;false;false;0;0;0;;; -188921;5;0;false;false;;;;;; -188926;32;0;false;false;0;0;0;;; -188958;5;0;false;false;;;;;; -188963;5;1;false;false;127;0;85;;; -188968;1;0;false;false;0;0;0;;; -188969;4;0;false;false;;;;;; -188973;4;1;false;false;127;0;85;;; -188977;1;0;false;false;;;;;; -188978;21;0;false;false;0;0;0;;; -188999;5;0;false;false;;;;;; -189004;12;0;false;false;0;0;0;;; -189016;5;0;false;false;;;;;; -189021;28;0;false;false;0;0;0;;; -189049;5;0;false;false;;;;;; -189054;5;1;false;false;127;0;85;;; -189059;1;0;false;false;0;0;0;;; -189060;4;0;false;false;;;;;; -189064;20;0;false;false;63;127;95;;; -189084;2;0;false;false;;;;;; -189086;4;1;false;false;127;0;85;;; -189090;1;0;false;false;;;;;; -189091;7;0;false;false;0;0;0;;; -189098;5;0;false;false;;;;;; -189103;6;0;false;false;0;0;0;;; -189109;5;0;false;false;;;;;; -189114;5;1;false;false;127;0;85;;; -189119;1;0;false;false;0;0;0;;; -189120;4;0;false;false;;;;;; -189124;4;1;false;false;127;0;85;;; -189128;1;0;false;false;;;;;; -189129;8;0;false;false;0;0;0;;; -189137;5;0;false;false;;;;;; -189142;7;0;false;false;0;0;0;;; -189149;5;0;false;false;;;;;; -189154;5;1;false;false;127;0;85;;; -189159;1;0;false;false;0;0;0;;; -189160;4;0;false;false;;;;;; -189164;4;1;false;false;127;0;85;;; -189168;1;0;false;false;;;;;; -189169;9;0;false;false;0;0;0;;; -189178;5;0;false;false;;;;;; -189183;8;0;false;false;0;0;0;;; -189191;5;0;false;false;;;;;; -189196;5;1;false;false;127;0;85;;; -189201;1;0;false;false;0;0;0;;; -189202;4;0;false;false;;;;;; -189206;4;1;false;false;127;0;85;;; -189210;1;0;false;false;;;;;; -189211;19;0;false;false;0;0;0;;; -189230;5;0;false;false;;;;;; -189235;14;0;false;false;0;0;0;;; -189249;5;0;false;false;;;;;; -189254;5;1;false;false;127;0;85;;; -189259;1;0;false;false;0;0;0;;; -189260;4;0;false;false;;;;;; -189264;4;1;false;false;127;0;85;;; -189268;1;0;false;false;;;;;; -189269;15;0;false;false;0;0;0;;; -189284;5;0;false;false;;;;;; -189289;11;0;false;false;0;0;0;;; -189300;5;0;false;false;;;;;; -189305;5;1;false;false;127;0;85;;; -189310;1;0;false;false;0;0;0;;; -189311;4;0;false;false;;;;;; -189315;4;1;false;false;127;0;85;;; -189319;1;0;false;false;;;;;; -189320;24;0;false;false;0;0;0;;; -189344;5;0;false;false;;;;;; -189349;23;0;false;false;0;0;0;;; -189372;5;0;false;false;;;;;; -189377;5;1;false;false;127;0;85;;; -189382;1;0;false;false;0;0;0;;; -189383;4;0;false;false;;;;;; -189387;4;1;false;false;127;0;85;;; -189391;1;0;false;false;;;;;; -189392;20;0;false;false;0;0;0;;; -189412;5;0;false;false;;;;;; -189417;19;0;false;false;0;0;0;;; -189436;5;0;false;false;;;;;; -189441;5;1;false;false;127;0;85;;; -189446;1;0;false;false;0;0;0;;; -189447;4;0;false;false;;;;;; -189451;18;0;false;false;63;127;95;;; -189469;2;0;false;false;;;;;; -189471;4;1;false;false;127;0;85;;; -189475;1;0;false;false;;;;;; -189476;20;0;false;false;0;0;0;;; -189496;5;0;false;false;;;;;; -189501;9;0;false;false;0;0;0;;; -189510;1;0;false;false;;;;;; -189511;1;0;false;false;0;0;0;;; -189512;1;0;false;false;;;;;; -189513;11;0;false;false;0;0;0;;; -189524;2;0;false;false;;;;;; -189526;33;0;false;false;63;127;95;;; -189559;3;0;false;false;;;;;; -189562;5;1;false;false;127;0;85;;; -189567;1;0;false;false;0;0;0;;; -189568;3;0;false;false;;;;;; -189571;1;0;false;false;0;0;0;;; -189572;2;0;false;false;;;;;; -189574;1;0;false;false;0;0;0;;; -189575;2;0;false;false;;;;;; -189577;3;0;false;false;63;95;191;;; -189580;3;0;false;false;;;;;; -189583;1;0;false;false;63;95;191;;; -189584;1;0;false;false;;;;;; -189585;9;0;false;false;63;95;191;;; -189594;1;0;false;false;;;;;; -189595;5;0;false;false;63;95;191;;; -189600;1;0;false;false;;;;;; -189601;3;0;false;false;63;95;191;;; -189604;1;0;false;false;;;;;; -189605;8;0;false;false;63;95;191;;; -189613;1;0;false;false;;;;;; -189614;4;0;false;false;63;95;191;;; -189618;3;0;false;false;;;;;; -189621;2;0;false;false;63;95;191;;; -189623;2;0;false;false;;;;;; -189625;7;1;false;false;127;0;85;;; -189632;1;0;false;false;;;;;; -189633;8;0;false;false;0;0;0;;; -189641;1;0;false;false;;;;;; -189642;1;0;false;false;0;0;0;;; -189643;3;0;false;false;;;;;; -189646;6;1;false;false;127;0;85;;; -189652;1;0;false;false;;;;;; -189653;6;0;false;false;0;0;0;;; -189659;1;0;false;false;;;;;; -189660;2;0;false;false;0;0;0;;; -189662;1;0;false;false;;;;;; -189663;25;0;false;false;0;0;0;;; -189688;1;0;false;false;;;;;; -189689;2;0;false;false;0;0;0;;; -189691;1;0;false;false;;;;;; -189692;11;0;false;false;0;0;0;;; -189703;2;0;false;false;;;;;; -189705;1;0;false;false;0;0;0;;; -189706;2;0;false;false;;;;;; -189708;3;0;false;false;63;95;191;;; -189711;3;0;false;false;;;;;; -189714;1;0;false;false;63;95;191;;; -189715;1;0;false;false;;;;;; -189716;7;0;false;false;63;95;191;;; -189723;1;0;false;false;;;;;; -189724;7;0;false;false;63;95;191;;; -189731;1;0;false;false;;;;;; -189732;3;0;false;false;63;95;191;;; -189735;1;0;false;false;;;;;; -189736;5;0;false;false;63;95;191;;; -189741;1;0;false;false;;;;;; -189742;6;0;false;false;63;95;191;;; -189748;1;0;false;false;;;;;; -189749;2;0;false;false;63;95;191;;; -189751;1;0;false;false;;;;;; -189752;6;0;false;false;63;95;191;;; -189758;1;0;false;false;;;;;; -189759;1;0;false;false;63;95;191;;; -189760;1;0;false;false;;;;;; -189761;5;0;false;false;63;95;191;;; -189766;1;0;false;false;;;;;; -189767;4;0;false;false;63;95;191;;; -189771;1;0;false;false;;;;;; -189772;4;0;false;false;63;95;191;;; -189776;1;0;false;false;;;;;; -189777;10;0;false;false;63;95;191;;; -189787;3;0;false;false;;;;;; -189790;1;0;false;false;63;95;191;;; -189791;1;0;false;false;;;;;; -189792;8;0;false;false;63;95;191;;; -189800;4;0;false;false;;;;;; -189804;1;0;false;false;63;95;191;;; -189805;1;0;false;false;;;;;; -189806;11;0;false;false;63;95;191;;; -189817;1;0;false;false;;;;;; -189818;18;0;false;false;63;95;191;;; -189836;1;0;false;false;;;;;; -189837;2;0;false;false;63;95;191;;; -189839;1;0;false;false;;;;;; -189840;5;0;false;false;63;95;191;;; -189845;1;0;false;false;;;;;; -189846;3;0;false;false;63;95;191;;; -189849;1;0;false;false;;;;;; -189850;18;0;false;false;63;95;191;;; -189868;1;0;false;false;;;;;; -189869;2;0;false;false;63;95;191;;; -189871;1;0;false;false;;;;;; -189872;4;0;false;false;63;95;191;;; -189876;3;0;false;false;;;;;; -189879;1;0;false;false;63;95;191;;; -189880;4;0;false;false;;;;;; -189884;1;0;false;false;63;95;191;;; -189885;1;0;false;false;;;;;; -189886;8;1;false;false;127;159;191;;; -189894;4;0;false;false;63;95;191;;; -189898;1;0;false;false;;;;;; -189899;2;0;false;false;63;95;191;;; -189901;1;0;false;false;;;;;; -189902;3;0;false;false;63;95;191;;; -189905;1;0;false;false;;;;;; -189906;5;0;false;false;63;95;191;;; -189911;1;0;false;false;;;;;; -189912;6;0;false;false;63;95;191;;; -189918;1;0;false;false;;;;;; -189919;2;0;false;false;63;95;191;;; -189921;1;0;false;false;;;;;; -189922;6;0;false;false;63;95;191;;; -189928;1;0;false;false;;;;;; -189929;1;0;false;false;63;95;191;;; -189930;1;0;false;false;;;;;; -189931;5;0;false;false;63;95;191;;; -189936;1;0;false;false;;;;;; -189937;4;0;false;false;63;95;191;;; -189941;1;0;false;false;;;;;; -189942;4;0;false;false;63;95;191;;; -189946;1;0;false;false;;;;;; -189947;10;0;false;false;63;95;191;;; -189957;3;0;false;false;;;;;; -189960;1;0;false;false;63;95;191;;; -189961;1;0;false;false;;;;;; -189962;5;0;false;false;63;95;191;;; -189967;1;0;false;false;;;;;; -189968;2;0;false;false;63;95;191;;; -189970;1;0;false;false;;;;;; -189971;3;0;false;false;63;95;191;;; -189974;1;0;false;false;;;;;; -189975;5;0;false;false;63;95;191;;; -189980;1;0;false;false;;;;;; -189981;6;0;false;false;63;95;191;;; -189987;1;0;false;false;;;;;; -189988;2;0;false;false;63;95;191;;; -189990;1;0;false;false;;;;;; -189991;6;0;false;false;63;95;191;;; -189997;1;0;false;false;;;;;; -189998;2;0;false;false;63;95;191;;; -190000;1;0;false;false;;;;;; -190001;5;0;false;false;63;95;191;;; -190006;1;0;false;false;;;;;; -190007;1;0;false;false;63;95;191;;; -190008;1;0;false;false;;;;;; -190009;4;0;false;false;63;95;191;;; -190013;1;0;false;false;;;;;; -190014;10;0;false;false;63;95;191;;; -190024;3;0;false;false;;;;;; -190027;2;0;false;false;63;95;191;;; -190029;2;0;false;false;;;;;; -190031;7;1;false;false;127;0;85;;; -190038;1;0;false;false;;;;;; -190039;16;0;false;false;0;0;0;;; -190055;3;1;false;false;127;0;85;;; -190058;1;0;false;false;;;;;; -190059;7;0;false;false;0;0;0;;; -190066;1;0;false;false;;;;;; -190067;1;0;false;false;0;0;0;;; -190068;3;0;false;false;;;;;; -190071;3;1;false;false;127;0;85;;; -190074;1;0;false;false;;;;;; -190075;4;0;false;false;0;0;0;;; -190079;1;0;false;false;;;;;; -190080;1;0;false;false;0;0;0;;; -190081;1;0;false;false;;;;;; -190082;32;0;false;false;0;0;0;;; -190114;3;0;false;false;;;;;; -190117;3;1;false;false;127;0;85;;; -190120;1;0;false;false;;;;;; -190121;10;0;false;false;0;0;0;;; -190131;1;0;false;false;;;;;; -190132;1;0;false;false;0;0;0;;; -190133;1;0;false;false;;;;;; -190134;30;0;false;false;0;0;0;;; -190164;4;0;false;false;;;;;; -190168;3;1;false;false;127;0;85;;; -190171;1;0;false;false;;;;;; -190172;12;0;false;false;0;0;0;;; -190184;1;0;false;false;;;;;; -190185;1;0;false;false;0;0;0;;; -190186;1;0;false;false;;;;;; -190187;6;0;false;false;0;0;0;;; -190193;1;0;false;false;;;;;; -190194;1;0;false;false;0;0;0;;; -190195;1;0;false;false;;;;;; -190196;11;0;false;false;0;0;0;;; -190207;3;0;false;false;;;;;; -190210;63;0;false;false;63;127;95;;; -190273;1;0;false;false;;;;;; -190274;65;0;false;false;63;127;95;;; -190339;1;0;false;false;;;;;; -190340;44;0;false;false;63;127;95;;; -190384;1;0;false;false;;;;;; -190385;6;1;false;false;127;0;85;;; -190391;1;0;false;false;;;;;; -190392;12;0;false;false;0;0;0;;; -190404;1;0;false;false;;;;;; -190405;1;0;false;false;0;0;0;;; -190406;1;0;false;false;;;;;; -190407;31;0;false;false;0;0;0;;; -190438;2;0;false;false;;;;;; -190440;1;0;false;false;0;0;0;;; -190441;2;0;false;false;;;;;; -190443;3;0;false;false;63;95;191;;; -190446;3;0;false;false;;;;;; -190449;1;0;false;false;63;95;191;;; -190450;1;0;false;false;;;;;; -190451;7;0;false;false;63;95;191;;; -190458;1;0;false;false;;;;;; -190459;7;0;false;false;63;95;191;;; -190466;1;0;false;false;;;;;; -190467;3;0;false;false;63;95;191;;; -190470;1;0;false;false;;;;;; -190471;6;0;false;false;63;95;191;;; -190477;1;0;false;false;;;;;; -190478;2;0;false;false;63;95;191;;; -190480;1;0;false;false;;;;;; -190481;8;0;false;false;63;95;191;;; -190489;1;0;false;false;;;;;; -190490;6;0;false;false;63;95;191;;; -190496;1;0;false;false;;;;;; -190497;14;0;false;false;63;95;191;;; -190511;1;0;false;false;;;;;; -190512;2;0;false;false;63;95;191;;; -190514;1;0;false;false;;;;;; -190515;4;0;false;false;63;95;191;;; -190519;4;0;false;false;;;;;; -190523;1;0;false;false;63;95;191;;; -190524;1;0;false;false;;;;;; -190525;7;0;false;false;63;95;191;;; -190532;1;0;false;false;;;;;; -190533;7;0;false;false;63;95;191;;; -190540;4;0;false;false;;;;;; -190544;1;0;false;false;63;95;191;;; -190545;4;0;false;false;;;;;; -190549;1;0;false;false;63;95;191;;; -190550;1;0;false;false;;;;;; -190551;8;1;false;false;127;159;191;;; -190559;10;0;false;false;63;95;191;;; -190569;1;0;false;false;;;;;; -190570;8;0;false;false;63;95;191;;; -190578;1;0;false;false;;;;;; -190579;6;0;false;false;63;95;191;;; -190585;1;0;false;false;;;;;; -190586;2;0;false;false;63;95;191;;; -190588;1;0;false;false;;;;;; -190589;5;0;false;false;63;95;191;;; -190594;1;0;false;false;;;;;; -190595;9;0;false;false;63;95;191;;; -190604;1;0;false;false;;;;;; -190605;9;0;false;false;63;95;191;;; -190614;1;0;false;false;;;;;; -190615;6;0;false;false;63;95;191;;; -190621;4;0;false;false;;;;;; -190625;1;0;false;false;63;95;191;;; -190626;2;0;false;false;;;;;; -190628;2;0;false;false;63;95;191;;; -190630;1;0;false;false;;;;;; -190631;4;0;false;false;63;95;191;;; -190635;1;0;false;false;;;;;; -190636;8;0;false;false;63;95;191;;; -190644;3;0;false;false;;;;;; -190647;2;0;false;false;63;95;191;;; -190649;2;0;false;false;;;;;; -190651;7;1;false;false;127;0;85;;; -190658;1;0;false;false;;;;;; -190659;12;0;false;false;0;0;0;;; -190671;1;0;false;false;;;;;; -190672;1;0;false;false;0;0;0;;; -190673;3;0;false;false;;;;;; -190676;6;1;false;false;127;0;85;;; -190682;1;0;false;false;;;;;; -190683;11;0;false;false;0;0;0;;; -190694;2;0;false;false;;;;;; -190696;1;0;false;false;0;0;0;;; -190697;2;0;false;false;;;;;; -190699;3;0;false;false;63;95;191;;; -190702;3;0;false;false;;;;;; -190705;1;0;false;false;63;95;191;;; -190706;1;0;false;false;;;;;; -190707;7;0;false;false;63;95;191;;; -190714;1;0;false;false;;;;;; -190715;7;0;false;false;63;95;191;;; -190722;1;0;false;false;;;;;; -190723;2;0;false;false;63;95;191;;; -190725;1;0;false;false;;;;;; -190726;3;0;false;false;63;95;191;;; -190729;1;0;false;false;;;;;; -190730;3;0;false;false;63;95;191;;; -190733;1;0;false;false;;;;;; -190734;5;0;false;false;63;95;191;;; -190739;1;0;false;false;;;;;; -190740;5;0;false;false;63;95;191;;; -190745;1;0;false;false;;;;;; -190746;3;0;false;false;63;95;191;;; -190749;1;0;false;false;;;;;; -190750;8;0;false;false;63;95;191;;; -190758;3;0;false;false;;;;;; -190761;1;0;false;false;63;95;191;;; -190762;1;0;false;false;;;;;; -190763;3;0;false;false;127;127;159;;; -190766;3;0;false;false;;;;;; -190769;1;0;false;false;63;95;191;;; -190770;3;0;false;false;;;;;; -190773;1;0;false;false;63;95;191;;; -190774;1;0;false;false;;;;;; -190775;8;1;false;false;127;159;191;;; -190783;4;0;false;false;63;95;191;;; -190787;1;0;false;false;;;;;; -190788;2;0;false;false;63;95;191;;; -190790;1;0;false;false;;;;;; -190791;3;0;false;false;63;95;191;;; -190794;1;0;false;false;;;;;; -190795;2;0;false;false;63;95;191;;; -190797;1;0;false;false;;;;;; -190798;3;0;false;false;63;95;191;;; -190801;1;0;false;false;;;;;; -190802;5;0;false;false;63;95;191;;; -190807;1;0;false;false;;;;;; -190808;2;0;false;false;63;95;191;;; -190810;1;0;false;false;;;;;; -190811;7;0;false;false;63;95;191;;; -190818;3;0;false;false;;;;;; -190821;1;0;false;false;63;95;191;;; -190822;1;0;false;false;;;;;; -190823;5;0;false;false;63;95;191;;; -190828;1;0;false;false;;;;;; -190829;2;0;false;false;63;95;191;;; -190831;1;0;false;false;;;;;; -190832;4;0;false;false;63;95;191;;; -190836;1;0;false;false;;;;;; -190837;2;0;false;false;63;95;191;;; -190839;1;0;false;false;;;;;; -190840;3;0;false;false;63;95;191;;; -190843;1;0;false;false;;;;;; -190844;5;0;false;false;63;95;191;;; -190849;1;0;false;false;;;;;; -190850;2;0;false;false;63;95;191;;; -190852;1;0;false;false;;;;;; -190853;7;0;false;false;63;95;191;;; -190860;3;0;false;false;;;;;; -190863;2;0;false;false;63;95;191;;; -190865;2;0;false;false;;;;;; -190867;7;1;false;false;127;0;85;;; -190874;1;0;false;false;;;;;; -190875;14;0;false;false;0;0;0;;; -190889;3;1;false;false;127;0;85;;; -190892;1;0;false;false;;;;;; -190893;10;0;false;false;0;0;0;;; -190903;1;0;false;false;;;;;; -190904;3;1;false;false;127;0;85;;; -190907;1;0;false;false;;;;;; -190908;9;0;false;false;0;0;0;;; -190917;1;0;false;false;;;;;; -190918;1;0;false;false;0;0;0;;; -190919;3;0;false;false;;;;;; -190922;3;1;false;false;127;0;85;;; -190925;1;0;false;false;;;;;; -190926;18;0;false;false;0;0;0;;; -190944;1;0;false;false;;;;;; -190945;1;0;false;false;0;0;0;;; -190946;1;0;false;false;;;;;; -190947;24;0;false;false;0;0;0;;; -190971;3;0;false;false;;;;;; -190974;3;1;false;false;127;0;85;;; -190977;1;0;false;false;;;;;; -190978;15;0;false;false;0;0;0;;; -190993;1;0;false;false;;;;;; -190994;1;0;false;false;0;0;0;;; -190995;1;0;false;false;;;;;; -190996;20;0;false;false;0;0;0;;; -191016;1;0;false;false;;;;;; -191017;1;0;false;false;0;0;0;;; -191018;1;0;false;false;;;;;; -191019;11;0;false;false;0;0;0;;; -191030;3;0;false;false;;;;;; -191033;7;1;false;false;127;0;85;;; -191040;1;0;false;false;;;;;; -191041;10;0;false;false;0;0;0;;; -191051;1;0;false;false;;;;;; -191052;1;0;false;false;0;0;0;;; -191053;1;0;false;false;;;;;; -191054;9;0;false;false;0;0;0;;; -191063;1;0;false;false;;;;;; -191064;1;0;false;false;0;0;0;;; -191065;1;0;false;false;;;;;; -191066;18;0;false;false;0;0;0;;; -191084;1;0;false;false;;;;;; -191085;2;0;false;false;0;0;0;;; -191087;1;0;false;false;;;;;; -191088;8;0;false;false;0;0;0;;; -191096;1;0;false;false;;;;;; -191097;1;0;false;false;0;0;0;;; -191098;1;0;false;false;;;;;; -191099;16;0;false;false;0;0;0;;; -191115;3;0;false;false;;;;;; -191118;6;1;false;false;127;0;85;;; -191124;1;0;false;false;;;;;; -191125;12;0;false;false;0;0;0;;; -191137;2;0;false;false;;;;;; -191139;1;0;false;false;0;0;0;;; -191140;2;0;false;false;;;;;; -191142;3;0;false;false;63;95;191;;; -191145;3;0;false;false;;;;;; -191148;1;0;false;false;63;95;191;;; -191149;1;0;false;false;;;;;; -191150;7;0;false;false;63;95;191;;; -191157;1;0;false;false;;;;;; -191158;7;0;false;false;63;95;191;;; -191165;1;0;false;false;;;;;; -191166;3;0;false;false;63;95;191;;; -191169;1;0;false;false;;;;;; -191170;6;0;false;false;63;95;191;;; -191176;1;0;false;false;;;;;; -191177;3;0;false;false;63;95;191;;; -191180;1;0;false;false;;;;;; -191181;4;0;false;false;63;95;191;;; -191185;1;0;false;false;;;;;; -191186;4;0;false;false;63;95;191;;; -191190;1;0;false;false;;;;;; -191191;3;0;false;false;63;95;191;;; -191194;1;0;false;false;;;;;; -191195;5;0;false;false;63;95;191;;; -191200;3;0;false;false;;;;;; -191203;1;0;false;false;63;95;191;;; -191204;1;0;false;false;;;;;; -191205;3;0;false;false;127;127;159;;; -191208;3;0;false;false;;;;;; -191211;1;0;false;false;63;95;191;;; -191212;3;0;false;false;;;;;; -191215;1;0;false;false;63;95;191;;; -191216;1;0;false;false;;;;;; -191217;8;1;false;false;127;159;191;;; -191225;4;0;false;false;63;95;191;;; -191229;1;0;false;false;;;;;; -191230;2;0;false;false;63;95;191;;; -191232;1;0;false;false;;;;;; -191233;6;0;false;false;63;95;191;;; -191239;1;0;false;false;;;;;; -191240;3;0;false;false;63;95;191;;; -191243;1;0;false;false;;;;;; -191244;4;0;false;false;63;95;191;;; -191248;1;0;false;false;;;;;; -191249;4;0;false;false;63;95;191;;; -191253;1;0;false;false;;;;;; -191254;3;0;false;false;63;95;191;;; -191257;1;0;false;false;;;;;; -191258;5;0;false;false;63;95;191;;; -191263;1;0;false;false;;;;;; -191264;5;0;false;false;63;95;191;;; -191269;1;0;false;false;;;;;; -191270;2;0;false;false;63;95;191;;; -191272;1;0;false;false;;;;;; -191273;6;0;false;false;63;95;191;;; -191279;1;0;false;false;;;;;; -191280;3;0;false;false;63;95;191;;; -191283;1;0;false;false;;;;;; -191284;4;0;false;false;63;95;191;;; -191288;4;0;false;false;;;;;; -191292;1;0;false;false;63;95;191;;; -191293;2;0;false;false;;;;;; -191295;8;0;false;false;63;95;191;;; -191303;1;0;false;false;;;;;; -191304;5;0;false;false;63;95;191;;; -191309;3;0;false;false;;;;;; -191312;2;0;false;false;63;95;191;;; -191314;2;0;false;false;;;;;; -191316;7;1;false;false;127;0;85;;; -191323;1;0;false;false;;;;;; -191324;14;0;false;false;0;0;0;;; -191338;1;0;false;false;;;;;; -191339;1;0;false;false;0;0;0;;; -191340;3;0;false;false;;;;;; -191343;6;1;false;false;127;0;85;;; -191349;1;0;false;false;;;;;; -191350;11;0;false;false;0;0;0;;; -191361;1;0;false;false;;;;;; -191362;1;0;false;false;0;0;0;;; -191363;1;0;false;false;;;;;; -191364;11;0;false;false;0;0;0;;; -191375;1;0;false;false;;;;;; -191376;2;0;false;false;0;0;0;;; -191378;1;0;false;false;;;;;; -191379;2;0;false;false;0;0;0;;; -191381;2;0;false;false;;;;;; -191383;1;0;false;false;0;0;0;;; -191384;2;0;false;false;;;;;; -191386;3;0;false;false;63;95;191;;; -191389;3;0;false;false;;;;;; -191392;1;0;false;false;63;95;191;;; -191393;1;0;false;false;;;;;; -191394;5;0;false;false;63;95;191;;; -191399;1;0;false;false;;;;;; -191400;3;0;false;false;63;95;191;;; -191403;1;0;false;false;;;;;; -191404;9;0;false;false;63;95;191;;; -191413;1;0;false;false;;;;;; -191414;6;0;false;false;63;95;191;;; -191420;1;0;false;false;;;;;; -191421;6;0;false;false;63;95;191;;; -191427;1;0;false;false;;;;;; -191428;14;0;false;false;63;95;191;;; -191442;1;0;false;false;;;;;; -191443;4;0;false;false;63;95;191;;; -191447;1;0;false;false;;;;;; -191448;2;0;false;false;63;95;191;;; -191450;1;0;false;false;;;;;; -191451;7;0;false;false;63;95;191;;; -191458;1;0;false;false;;;;;; -191459;2;0;false;false;63;95;191;;; -191461;4;0;false;false;;;;;; -191465;1;0;false;false;63;95;191;;; -191466;1;0;false;false;;;;;; -191467;3;0;false;false;63;95;191;;; -191470;1;0;false;false;;;;;; -191471;5;0;false;false;63;95;191;;; -191476;1;0;false;false;;;;;; -191477;3;0;false;false;63;95;191;;; -191480;1;0;false;false;;;;;; -191481;4;0;false;false;63;95;191;;; -191485;1;0;false;false;;;;;; -191486;1;0;false;false;63;95;191;;; -191487;1;0;false;false;;;;;; -191488;6;0;false;false;63;95;191;;; -191494;1;0;false;false;;;;;; -191495;6;0;false;false;63;95;191;;; -191501;3;0;false;false;;;;;; -191504;1;0;false;false;63;95;191;;; -191505;1;0;false;false;;;;;; -191506;3;0;false;false;127;127;159;;; -191509;3;0;false;false;;;;;; -191512;1;0;false;false;63;95;191;;; -191513;3;0;false;false;;;;;; -191516;1;0;false;false;63;95;191;;; -191517;1;0;false;false;;;;;; -191518;7;1;false;false;127;159;191;;; -191525;5;0;false;false;63;95;191;;; -191530;1;0;false;false;;;;;; -191531;3;0;false;false;63;95;191;;; -191534;1;0;false;false;;;;;; -191535;4;0;false;false;63;95;191;;; -191539;1;0;false;false;;;;;; -191540;6;0;false;false;63;95;191;;; -191546;1;0;false;false;;;;;; -191547;6;0;false;false;63;95;191;;; -191553;4;0;false;false;;;;;; -191557;1;0;false;false;63;95;191;;; -191558;1;0;false;false;;;;;; -191559;4;0;false;false;127;127;159;;; -191563;3;0;false;false;;;;;; -191566;1;0;false;false;63;95;191;;; -191567;1;0;false;false;;;;;; -191568;4;0;false;false;127;127;159;;; -191572;11;0;false;false;63;95;191;;; -191583;1;0;false;false;;;;;; -191584;1;0;false;false;127;127;159;;; -191585;1;0;false;false;;;;;; -191586;3;0;false;false;63;95;191;;; -191589;1;0;false;false;;;;;; -191590;7;0;false;false;63;95;191;;; -191597;1;0;false;false;;;;;; -191598;5;0;false;false;63;95;191;;; -191603;1;0;false;false;;;;;; -191604;6;0;false;false;63;95;191;;; -191610;5;0;false;false;127;127;159;;; -191615;3;0;false;false;;;;;; -191618;1;0;false;false;63;95;191;;; -191619;2;0;false;false;;;;;; -191621;4;0;false;false;127;127;159;;; -191625;9;0;false;false;63;95;191;;; -191634;1;0;false;false;;;;;; -191635;1;0;false;false;127;127;159;;; -191636;1;0;false;false;;;;;; -191637;3;0;false;false;63;95;191;;; -191640;1;0;false;false;;;;;; -191641;7;0;false;false;63;95;191;;; -191648;1;0;false;false;;;;;; -191649;3;0;false;false;63;95;191;;; -191652;1;0;false;false;;;;;; -191653;6;0;false;false;63;95;191;;; -191659;5;0;false;false;127;127;159;;; -191664;3;0;false;false;;;;;; -191667;1;0;false;false;63;95;191;;; -191668;2;0;false;false;;;;;; -191670;4;0;false;false;127;127;159;;; -191674;10;0;false;false;63;95;191;;; -191684;1;0;false;false;;;;;; -191685;1;0;false;false;127;127;159;;; -191686;1;0;false;false;;;;;; -191687;3;0;false;false;63;95;191;;; -191690;1;0;false;false;;;;;; -191691;3;0;false;false;63;95;191;;; -191694;1;0;false;false;;;;;; -191695;4;0;false;false;63;95;191;;; -191699;5;0;false;false;127;127;159;;; -191704;3;0;false;false;;;;;; -191707;1;0;false;false;63;95;191;;; -191708;1;0;false;false;;;;;; -191709;5;0;false;false;127;127;159;;; -191714;3;0;false;false;;;;;; -191717;1;0;false;false;63;95;191;;; -191718;1;0;false;false;;;;;; -191719;7;1;false;false;127;159;191;;; -191726;11;0;false;false;63;95;191;;; -191737;1;0;false;false;;;;;; -191738;7;0;false;false;63;95;191;;; -191745;1;0;false;false;;;;;; -191746;2;0;false;false;63;95;191;;; -191748;1;0;false;false;;;;;; -191749;3;0;false;false;63;95;191;;; -191752;1;0;false;false;;;;;; -191753;2;0;false;false;63;95;191;;; -191755;1;0;false;false;;;;;; -191756;5;0;false;false;63;95;191;;; -191761;1;0;false;false;;;;;; -191762;6;0;false;false;63;95;191;;; -191768;1;0;false;false;;;;;; -191769;2;0;false;false;63;95;191;;; -191771;1;0;false;false;;;;;; -191772;3;0;false;false;63;95;191;;; -191775;1;0;false;false;;;;;; -191776;6;0;false;false;63;95;191;;; -191782;3;0;false;false;;;;;; -191785;1;0;false;false;63;95;191;;; -191786;1;0;false;false;;;;;; -191787;3;0;false;false;63;95;191;;; -191790;1;0;false;false;;;;;; -191791;3;0;false;false;63;95;191;;; -191794;1;0;false;false;;;;;; -191795;4;0;false;false;63;95;191;;; -191799;3;0;false;false;;;;;; -191802;2;0;false;false;63;95;191;;; -191804;2;0;false;false;;;;;; -191806;4;1;false;false;127;0;85;;; -191810;1;0;false;false;;;;;; -191811;19;0;false;false;0;0;0;;; -191830;1;0;false;false;;;;;; -191831;6;0;false;false;0;0;0;;; -191837;1;0;false;false;;;;;; -191838;7;1;false;false;127;0;85;;; -191845;1;0;false;false;;;;;; -191846;12;0;false;false;0;0;0;;; -191858;1;0;false;false;;;;;; -191859;1;0;false;false;0;0;0;;; -191860;3;0;false;false;;;;;; -191863;10;0;false;false;0;0;0;;; -191873;1;0;false;false;;;;;; -191874;1;0;false;false;0;0;0;;; -191875;1;0;false;false;;;;;; -191876;4;1;false;false;127;0;85;;; -191880;1;0;false;false;0;0;0;;; -191881;3;0;false;false;;;;;; -191884;27;0;false;false;0;0;0;;; -191911;1;0;false;false;;;;;; -191912;7;0;false;false;0;0;0;;; -191919;3;0;false;false;;;;;; -191922;2;1;false;false;127;0;85;;; -191924;1;0;false;false;;;;;; -191925;12;0;false;false;0;0;0;;; -191937;1;0;false;false;;;;;; -191938;1;0;false;false;0;0;0;;; -191939;4;0;false;false;;;;;; -191943;15;0;false;false;0;0;0;;; -191958;1;0;false;false;;;;;; -191959;15;0;false;false;0;0;0;;; -191974;1;0;false;false;;;;;; -191975;1;0;false;false;0;0;0;;; -191976;1;0;false;false;;;;;; -191977;4;1;false;false;127;0;85;;; -191981;1;0;false;false;0;0;0;;; -191982;4;0;false;false;;;;;; -191986;3;1;false;false;127;0;85;;; -191989;1;0;false;false;;;;;; -191990;14;0;false;false;0;0;0;;; -192004;1;0;false;false;;;;;; -192005;1;0;false;false;0;0;0;;; -192006;1;0;false;false;;;;;; -192007;9;0;false;false;0;0;0;;; -192016;1;0;false;false;;;;;; -192017;1;0;false;false;0;0;0;;; -192018;1;0;false;false;;;;;; -192019;12;0;false;false;0;0;0;;; -192031;4;0;false;false;;;;;; -192035;2;1;false;false;127;0;85;;; -192037;1;0;false;false;;;;;; -192038;29;0;false;false;0;0;0;;; -192067;1;0;false;false;;;;;; -192068;1;0;false;false;0;0;0;;; -192069;5;0;false;false;;;;;; -192074;15;0;false;false;0;0;0;;; -192089;1;0;false;false;;;;;; -192090;1;0;false;false;0;0;0;;; -192091;1;0;false;false;;;;;; -192092;3;1;false;false;127;0;85;;; -192095;1;0;false;false;;;;;; -192096;32;0;false;false;0;0;0;;; -192128;5;0;false;false;;;;;; -192133;21;0;false;false;0;0;0;;; -192154;1;0;false;false;;;;;; -192155;1;0;false;false;0;0;0;;; -192156;1;0;false;false;;;;;; -192157;12;0;false;false;0;0;0;;; -192169;5;0;false;false;;;;;; -192174;19;0;false;false;0;0;0;;; -192193;1;0;false;false;;;;;; -192194;1;0;false;false;0;0;0;;; -192195;1;0;false;false;;;;;; -192196;11;0;false;false;0;0;0;;; -192207;1;0;false;false;;;;;; -192208;1;0;false;false;0;0;0;;; -192209;1;0;false;false;;;;;; -192210;20;0;false;false;0;0;0;;; -192230;5;0;false;false;;;;;; -192235;20;0;false;false;0;0;0;;; -192255;1;0;false;false;;;;;; -192256;1;0;false;false;0;0;0;;; -192257;1;0;false;false;;;;;; -192258;33;0;false;false;0;0;0;;; -192291;1;0;false;false;;;;;; -192292;16;0;false;false;0;0;0;;; -192308;4;0;false;false;;;;;; -192312;1;0;false;false;0;0;0;;; -192313;4;0;false;false;;;;;; -192317;2;1;false;false;127;0;85;;; -192319;1;0;false;false;;;;;; -192320;13;0;false;false;0;0;0;;; -192333;1;0;false;false;;;;;; -192334;1;0;false;false;0;0;0;;; -192335;5;0;false;false;;;;;; -192340;69;0;false;false;63;127;95;;; -192409;3;0;false;false;;;;;; -192412;2;1;false;false;127;0;85;;; -192414;1;0;false;false;;;;;; -192415;20;0;false;false;0;0;0;;; -192435;1;0;false;false;;;;;; -192436;2;0;false;false;0;0;0;;; -192438;1;0;false;false;;;;;; -192439;2;0;false;false;0;0;0;;; -192441;1;0;false;false;;;;;; -192442;1;0;false;false;0;0;0;;; -192443;6;0;false;false;;;;;; -192449;3;1;false;false;127;0;85;;; -192452;1;0;false;false;;;;;; -192453;9;0;false;false;0;0;0;;; -192462;1;0;false;false;;;;;; -192463;1;0;false;false;0;0;0;;; -192464;1;0;false;false;;;;;; -192465;37;0;false;false;0;0;0;;; -192502;6;0;false;false;;;;;; -192508;3;1;false;false;127;0;85;;; -192511;1;0;false;false;;;;;; -192512;10;0;false;false;0;0;0;;; -192522;1;0;false;false;;;;;; -192523;1;0;false;false;0;0;0;;; -192524;1;0;false;false;;;;;; -192525;35;0;false;false;0;0;0;;; -192560;6;0;false;false;;;;;; -192566;6;0;false;false;0;0;0;;; -192572;1;0;false;false;;;;;; -192573;8;0;false;false;0;0;0;;; -192581;1;0;false;false;;;;;; -192582;1;0;false;false;0;0;0;;; -192583;1;0;false;false;;;;;; -192584;27;0;false;false;0;0;0;;; -192611;6;0;false;false;;;;;; -192617;10;0;false;false;0;0;0;;; -192627;1;0;false;false;;;;;; -192628;6;0;false;false;0;0;0;;; -192634;1;0;false;false;;;;;; -192635;1;0;false;false;0;0;0;;; -192636;1;0;false;false;;;;;; -192637;32;0;false;false;0;0;0;;; -192669;1;0;false;false;;;;;; -192670;12;0;false;false;0;0;0;;; -192682;6;0;false;false;;;;;; -192688;3;1;false;false;127;0;85;;; -192691;1;0;false;false;;;;;; -192692;10;0;false;false;0;0;0;;; -192702;1;0;false;false;;;;;; -192703;1;0;false;false;0;0;0;;; -192704;1;0;false;false;;;;;; -192705;27;0;false;false;0;0;0;;; -192732;1;0;false;false;;;;;; -192733;1;0;false;false;0;0;0;;; -192734;1;0;false;false;;;;;; -192735;12;0;false;false;0;0;0;;; -192747;6;0;false;false;;;;;; -192753;3;1;false;false;127;0;85;;; -192756;1;0;false;false;;;;;; -192757;12;0;false;false;0;0;0;;; -192769;1;0;false;false;;;;;; -192770;1;0;false;false;0;0;0;;; -192771;1;0;false;false;;;;;; -192772;35;0;false;false;0;0;0;;; -192807;6;0;false;false;;;;;; -192813;2;1;false;false;127;0;85;;; -192815;1;0;false;false;;;;;; -192816;10;0;false;false;0;0;0;;; -192826;1;0;false;false;;;;;; -192827;2;0;false;false;0;0;0;;; -192829;1;0;false;false;;;;;; -192830;13;0;false;false;0;0;0;;; -192843;1;0;false;false;;;;;; -192844;1;0;false;false;0;0;0;;; -192845;7;0;false;false;;;;;; -192852;35;0;false;false;0;0;0;;; -192887;7;0;false;false;;;;;; -192894;10;0;false;false;0;0;0;;; -192904;1;0;false;false;;;;;; -192905;1;0;false;false;0;0;0;;; -192906;1;0;false;false;;;;;; -192907;38;0;false;false;0;0;0;;; -192945;7;0;false;false;;;;;; -192952;8;0;false;false;0;0;0;;; -192960;1;0;false;false;;;;;; -192961;1;0;false;false;0;0;0;;; -192962;1;0;false;false;;;;;; -192963;30;0;false;false;0;0;0;;; -192993;7;0;false;false;;;;;; -193000;6;0;false;false;0;0;0;;; -193006;1;0;false;false;;;;;; -193007;1;0;false;false;0;0;0;;; -193008;1;0;false;false;;;;;; -193009;32;0;false;false;0;0;0;;; -193041;1;0;false;false;;;;;; -193042;12;0;false;false;0;0;0;;; -193054;6;0;false;false;;;;;; -193060;1;0;false;false;0;0;0;;; -193061;6;0;false;false;;;;;; -193067;3;1;false;false;127;0;85;;; -193070;1;0;false;false;;;;;; -193071;8;0;false;false;0;0;0;;; -193079;1;0;false;false;;;;;; -193080;1;0;false;false;0;0;0;;; -193081;1;0;false;false;;;;;; -193082;25;0;false;false;0;0;0;;; -193107;1;0;false;false;;;;;; -193108;1;0;false;false;0;0;0;;; -193109;1;0;false;false;;;;;; -193110;12;0;false;false;0;0;0;;; -193122;6;0;false;false;;;;;; -193128;35;0;false;false;0;0;0;;; -193163;6;0;false;false;;;;;; -193169;9;0;false;false;0;0;0;;; -193178;1;0;false;false;;;;;; -193179;1;0;false;false;0;0;0;;; -193180;1;0;false;false;;;;;; -193181;10;0;false;false;0;0;0;;; -193191;1;0;false;false;;;;;; -193192;2;0;false;false;0;0;0;;; -193194;1;0;false;false;;;;;; -193195;9;0;false;false;0;0;0;;; -193204;5;0;false;false;;;;;; -193209;1;0;false;false;0;0;0;;; -193210;4;0;false;false;;;;;; -193214;1;0;false;false;0;0;0;;; -193215;4;0;false;false;;;;;; -193219;37;0;false;false;0;0;0;;; -193256;1;0;false;false;;;;;; -193257;15;0;false;false;0;0;0;;; -193272;1;0;false;false;;;;;; -193273;12;0;false;false;0;0;0;;; -193285;4;0;false;false;;;;;; -193289;62;0;false;false;63;127;95;;; -193351;2;0;false;false;;;;;; -193353;18;0;false;false;63;127;95;;; -193371;2;0;false;false;;;;;; -193373;2;1;false;false;127;0;85;;; -193375;1;0;false;false;;;;;; -193376;13;0;false;false;0;0;0;;; -193389;1;0;false;false;;;;;; -193390;1;0;false;false;0;0;0;;; -193391;5;0;false;false;;;;;; -193396;52;0;false;false;63;127;95;;; -193448;3;0;false;false;;;;;; -193451;32;0;false;false;0;0;0;;; -193483;1;0;false;false;;;;;; -193484;1;0;false;false;0;0;0;;; -193485;1;0;false;false;;;;;; -193486;20;0;false;false;0;0;0;;; -193506;1;0;false;false;;;;;; -193507;2;0;false;false;0;0;0;;; -193509;1;0;false;false;;;;;; -193510;4;1;false;false;127;0;85;;; -193514;2;0;false;false;0;0;0;;; -193516;5;0;false;false;;;;;; -193521;12;0;false;false;0;0;0;;; -193533;4;0;false;false;;;;;; -193537;1;0;false;false;0;0;0;;; -193538;4;0;false;false;;;;;; -193542;23;0;false;false;0;0;0;;; -193565;4;0;false;false;;;;;; -193569;2;1;false;false;127;0;85;;; -193571;1;0;false;false;;;;;; -193572;29;0;false;false;0;0;0;;; -193601;1;0;false;false;;;;;; -193602;1;0;false;false;0;0;0;;; -193603;5;0;false;false;;;;;; -193608;31;0;false;false;0;0;0;;; -193639;1;0;false;false;;;;;; -193640;17;0;false;false;0;0;0;;; -193657;4;0;false;false;;;;;; -193661;1;0;false;false;0;0;0;;; -193662;3;0;false;false;;;;;; -193665;1;0;false;false;0;0;0;;; -193666;2;0;false;false;;;;;; -193668;1;0;false;false;0;0;0;;; -193669;2;0;false;false;;;;;; -193671;3;0;false;false;63;95;191;;; -193674;4;0;false;false;;;;;; -193678;1;0;false;false;63;95;191;;; -193679;1;0;false;false;;;;;; -193680;8;0;false;false;63;95;191;;; -193688;1;0;false;false;;;;;; -193689;3;0;false;false;63;95;191;;; -193692;1;0;false;false;;;;;; -193693;9;0;false;false;63;95;191;;; -193702;1;0;false;false;;;;;; -193703;4;0;false;false;63;95;191;;; -193707;1;0;false;false;;;;;; -193708;3;0;false;false;63;95;191;;; -193711;1;0;false;false;;;;;; -193712;4;0;false;false;63;95;191;;; -193716;1;0;false;false;;;;;; -193717;2;0;false;false;63;95;191;;; -193719;1;0;false;false;;;;;; -193720;3;0;false;false;63;95;191;;; -193723;1;0;false;false;;;;;; -193724;6;0;false;false;127;127;159;;; -193730;13;0;false;false;63;95;191;;; -193743;7;0;false;false;127;127;159;;; -193750;5;0;false;false;;;;;; -193755;1;0;false;false;63;95;191;;; -193756;1;0;false;false;;;;;; -193757;9;0;false;false;63;95;191;;; -193766;2;0;false;false;;;;;; -193768;3;0;false;false;63;95;191;;; -193771;1;0;false;false;;;;;; -193772;2;0;false;false;63;95;191;;; -193774;1;0;false;false;;;;;; -193775;5;0;false;false;63;95;191;;; -193780;1;0;false;false;;;;;; -193781;2;0;false;false;63;95;191;;; -193783;1;0;false;false;;;;;; -193784;2;0;false;false;63;95;191;;; -193786;1;0;false;false;;;;;; -193787;10;0;false;false;63;95;191;;; -193797;2;0;false;false;;;;;; -193799;7;0;false;false;63;95;191;;; -193806;1;0;false;false;;;;;; -193807;3;0;false;false;63;95;191;;; -193810;1;0;false;false;;;;;; -193811;4;0;false;false;63;95;191;;; -193815;1;0;false;false;;;;;; -193816;2;0;false;false;63;95;191;;; -193818;1;0;false;false;;;;;; -193819;3;0;false;false;63;95;191;;; -193822;1;0;false;false;;;;;; -193823;7;0;false;false;63;95;191;;; -193830;4;0;false;false;;;;;; -193834;1;0;false;false;63;95;191;;; -193835;1;0;false;false;;;;;; -193836;5;0;false;false;63;95;191;;; -193841;1;0;false;false;;;;;; -193842;7;0;false;false;63;95;191;;; -193849;3;0;false;false;;;;;; -193852;2;0;false;false;63;95;191;;; -193854;1;0;false;false;;;;;; -193855;3;0;false;false;63;95;191;;; -193858;1;0;false;false;;;;;; -193859;6;0;false;false;63;95;191;;; -193865;1;0;false;false;;;;;; -193866;3;0;false;false;63;95;191;;; -193869;1;0;false;false;;;;;; -193870;3;0;false;false;63;95;191;;; -193873;1;0;false;false;;;;;; -193874;10;0;false;false;63;95;191;;; -193884;1;0;false;false;;;;;; -193885;5;0;false;false;63;95;191;;; -193890;1;0;false;false;;;;;; -193891;3;0;false;false;63;95;191;;; -193894;1;0;false;false;;;;;; -193895;3;0;false;false;63;95;191;;; -193898;4;0;false;false;;;;;; -193902;1;0;false;false;63;95;191;;; -193903;1;0;false;false;;;;;; -193904;9;0;false;false;63;95;191;;; -193913;1;0;false;false;;;;;; -193914;4;0;false;false;63;95;191;;; -193918;1;0;false;false;;;;;; -193919;8;0;false;false;63;95;191;;; -193927;1;0;false;false;;;;;; -193928;4;0;false;false;63;95;191;;; -193932;1;0;false;false;;;;;; -193933;4;0;false;false;63;95;191;;; -193937;1;0;false;false;;;;;; -193938;3;0;false;false;63;95;191;;; -193941;1;0;false;false;;;;;; -193942;5;0;false;false;63;95;191;;; -193947;1;0;false;false;;;;;; -193948;4;0;false;false;63;95;191;;; -193952;1;0;false;false;;;;;; -193953;3;0;false;false;63;95;191;;; -193956;1;0;false;false;;;;;; -193957;5;0;false;false;63;95;191;;; -193962;1;0;false;false;;;;;; -193963;4;0;false;false;63;95;191;;; -193967;1;0;false;false;;;;;; -193968;7;0;false;false;63;95;191;;; -193975;3;0;false;false;;;;;; -193978;1;0;false;false;63;95;191;;; -193979;1;0;false;false;;;;;; -193980;4;0;false;false;63;95;191;;; -193984;1;0;false;false;;;;;; -193985;10;0;false;false;63;95;191;;; -193995;1;0;false;false;;;;;; -193996;2;0;false;false;63;95;191;;; -193998;2;0;false;false;;;;;; -194000;8;0;false;false;63;95;191;;; -194008;1;0;false;false;;;;;; -194009;2;0;false;false;63;95;191;;; -194011;1;0;false;false;;;;;; -194012;3;0;false;false;63;95;191;;; -194015;1;0;false;false;;;;;; -194016;7;0;false;false;63;95;191;;; -194023;3;0;false;false;;;;;; -194026;1;0;false;false;63;95;191;;; -194027;1;0;false;false;;;;;; -194028;3;0;false;false;127;127;159;;; -194031;3;0;false;false;;;;;; -194034;1;0;false;false;63;95;191;;; -194035;3;0;false;false;;;;;; -194038;1;0;false;false;63;95;191;;; -194039;1;0;false;false;;;;;; -194040;11;1;false;false;127;159;191;;; -194051;12;0;false;false;63;95;191;;; -194063;1;0;false;false;;;;;; -194064;4;0;false;false;127;127;159;;; -194068;3;0;false;false;;;;;; -194071;1;0;false;false;63;95;191;;; -194072;4;0;false;false;;;;;; -194076;4;0;false;false;127;127;159;;; -194080;21;0;false;false;63;95;191;;; -194101;1;0;false;false;;;;;; -194102;1;0;false;false;127;127;159;;; -194103;1;0;false;false;;;;;; -194104;2;0;false;false;63;95;191;;; -194106;1;0;false;false;;;;;; -194107;3;0;false;false;63;95;191;;; -194110;1;0;false;false;;;;;; -194111;8;0;false;false;63;95;191;;; -194119;1;0;false;false;;;;;; -194120;3;0;false;false;63;95;191;;; -194123;1;0;false;false;;;;;; -194124;4;0;false;false;63;95;191;;; -194128;1;0;false;false;;;;;; -194129;8;0;false;false;63;95;191;;; -194137;5;0;false;false;127;127;159;;; -194142;3;0;false;false;;;;;; -194145;1;0;false;false;63;95;191;;; -194146;4;0;false;false;;;;;; -194150;4;0;false;false;127;127;159;;; -194154;27;0;false;false;63;95;191;;; -194181;1;0;false;false;;;;;; -194182;1;0;false;false;127;127;159;;; -194183;1;0;false;false;;;;;; -194184;2;0;false;false;63;95;191;;; -194186;1;0;false;false;;;;;; -194187;3;0;false;false;63;95;191;;; -194190;1;0;false;false;;;;;; -194191;6;0;false;false;63;95;191;;; -194197;1;0;false;false;;;;;; -194198;4;0;false;false;63;95;191;;; -194202;1;0;false;false;;;;;; -194203;3;0;false;false;63;95;191;;; -194206;1;0;false;false;;;;;; -194207;6;0;false;false;63;95;191;;; -194213;1;0;false;false;;;;;; -194214;4;0;false;false;63;95;191;;; -194218;1;0;false;false;;;;;; -194219;7;0;false;false;63;95;191;;; -194226;1;0;false;false;;;;;; -194227;3;0;false;false;63;95;191;;; -194230;1;0;false;false;;;;;; -194231;8;0;false;false;63;95;191;;; -194239;5;0;false;false;127;127;159;;; -194244;3;0;false;false;;;;;; -194247;1;0;false;false;63;95;191;;; -194248;1;0;false;false;;;;;; -194249;5;0;false;false;127;127;159;;; -194254;3;0;false;false;;;;;; -194257;2;0;false;false;63;95;191;;; -194259;2;0;false;false;;;;;; -194261;6;1;false;false;127;0;85;;; -194267;1;0;false;false;;;;;; -194268;4;1;false;false;127;0;85;;; -194272;1;0;false;false;;;;;; -194273;8;0;false;false;0;0;0;;; -194281;3;0;false;false;;;;;; -194284;14;0;false;false;0;0;0;;; -194298;4;0;false;false;;;;;; -194302;6;0;false;false;0;0;0;;; -194308;1;0;false;false;;;;;; -194309;5;0;false;false;0;0;0;;; -194314;3;0;false;false;;;;;; -194317;4;0;false;false;0;0;0;;; -194321;1;0;false;false;;;;;; -194322;1;0;false;false;0;0;0;;; -194323;1;0;false;false;;;;;; -194324;8;0;false;false;0;0;0;;; -194332;1;0;false;false;;;;;; -194333;35;0;false;false;0;0;0;;; -194368;3;0;false;false;;;;;; -194371;2;1;false;false;127;0;85;;; -194373;1;0;false;false;;;;;; -194374;5;0;false;false;0;0;0;;; -194379;1;0;false;false;;;;;; -194380;2;0;false;false;0;0;0;;; -194382;1;0;false;false;;;;;; -194383;4;1;false;false;127;0;85;;; -194387;1;0;false;false;;;;;; -194388;2;0;false;false;0;0;0;;; -194390;1;0;false;false;;;;;; -194391;13;0;false;false;0;0;0;;; -194404;1;0;false;false;;;;;; -194405;1;0;false;false;0;0;0;;; -194406;1;0;false;false;;;;;; -194407;2;0;false;false;0;0;0;;; -194409;1;0;false;false;;;;;; -194410;1;0;false;false;0;0;0;;; -194411;4;0;false;false;;;;;; -194415;5;0;false;false;0;0;0;;; -194420;1;0;false;false;;;;;; -194421;5;0;false;false;0;0;0;;; -194426;1;0;false;false;;;;;; -194427;1;0;false;false;0;0;0;;; -194428;1;0;false;false;;;;;; -194429;3;1;false;false;127;0;85;;; -194432;1;0;false;false;;;;;; -194433;8;0;false;false;0;0;0;;; -194441;4;0;false;false;;;;;; -194445;11;0;false;false;0;0;0;;; -194456;1;0;false;false;;;;;; -194457;1;0;false;false;0;0;0;;; -194458;1;0;false;false;;;;;; -194459;12;0;false;false;0;0;0;;; -194471;4;0;false;false;;;;;; -194475;9;0;false;false;0;0;0;;; -194484;1;0;false;false;;;;;; -194485;1;0;false;false;0;0;0;;; -194486;1;0;false;false;;;;;; -194487;12;0;false;false;0;0;0;;; -194499;4;0;false;false;;;;;; -194503;10;0;false;false;0;0;0;;; -194513;1;0;false;false;;;;;; -194514;1;0;false;false;0;0;0;;; -194515;1;0;false;false;;;;;; -194516;28;0;false;false;0;0;0;;; -194544;4;0;false;false;;;;;; -194548;20;0;false;false;0;0;0;;; -194568;3;0;false;false;;;;;; -194571;1;0;false;false;0;0;0;;; -194572;2;0;false;false;;;;;; -194574;1;0;false;false;0;0;0;;; -194575;2;0;false;false;;;;;; -194577;3;0;false;false;63;95;191;;; -194580;3;0;false;false;;;;;; -194583;1;0;false;false;63;95;191;;; -194584;1;0;false;false;;;;;; -194585;6;0;false;false;63;95;191;;; -194591;1;0;false;false;;;;;; -194592;3;0;false;false;63;95;191;;; -194595;1;0;false;false;;;;;; -194596;9;0;false;false;63;95;191;;; -194605;1;0;false;false;;;;;; -194606;5;0;false;false;63;95;191;;; -194611;2;0;false;false;;;;;; -194613;6;0;false;false;63;95;191;;; -194619;1;0;false;false;;;;;; -194620;3;0;false;false;63;95;191;;; -194623;1;0;false;false;;;;;; -194624;2;0;false;false;63;95;191;;; -194626;1;0;false;false;;;;;; -194627;3;0;false;false;63;95;191;;; -194630;1;0;false;false;;;;;; -194631;3;0;false;false;63;95;191;;; -194634;1;0;false;false;;;;;; -194635;6;0;false;false;63;95;191;;; -194641;1;0;false;false;;;;;; -194642;2;0;false;false;63;95;191;;; -194644;1;0;false;false;;;;;; -194645;7;0;false;false;63;95;191;;; -194652;3;0;false;false;;;;;; -194655;1;0;false;false;63;95;191;;; -194656;1;0;false;false;;;;;; -194657;6;0;false;false;63;95;191;;; -194663;1;0;false;false;;;;;; -194664;8;0;false;false;63;95;191;;; -194672;3;0;false;false;;;;;; -194675;1;0;false;false;63;95;191;;; -194676;1;0;false;false;;;;;; -194677;3;0;false;false;127;127;159;;; -194680;3;0;false;false;;;;;; -194683;1;0;false;false;63;95;191;;; -194684;3;0;false;false;;;;;; -194687;1;0;false;false;63;95;191;;; -194688;1;0;false;false;;;;;; -194689;7;1;false;false;127;159;191;;; -194696;2;0;false;false;63;95;191;;; -194698;1;0;false;false;;;;;; -194699;2;0;false;false;63;95;191;;; -194701;1;0;false;false;;;;;; -194702;2;0;false;false;63;95;191;;; -194704;1;0;false;false;;;;;; -194705;6;0;false;false;63;95;191;;; -194711;1;0;false;false;;;;;; -194712;2;0;false;false;63;95;191;;; -194714;4;0;false;false;;;;;; -194718;1;0;false;false;63;95;191;;; -194719;1;0;false;false;;;;;; -194720;7;1;false;false;127;159;191;;; -194727;9;0;false;false;63;95;191;;; -194736;1;0;false;false;;;;;; -194737;5;0;false;false;63;95;191;;; -194742;1;0;false;false;;;;;; -194743;4;0;false;false;63;95;191;;; -194747;1;0;false;false;;;;;; -194748;2;0;false;false;63;95;191;;; -194750;1;0;false;false;;;;;; -194751;6;0;false;false;63;95;191;;; -194757;3;0;false;false;;;;;; -194760;1;0;false;false;63;95;191;;; -194761;1;0;false;false;;;;;; -194762;7;1;false;false;127;159;191;;; -194769;6;0;false;false;63;95;191;;; -194775;1;0;false;false;;;;;; -194776;1;0;false;false;63;95;191;;; -194777;1;0;false;false;;;;;; -194778;5;0;false;false;63;95;191;;; -194783;1;0;false;false;;;;;; -194784;8;0;false;false;63;95;191;;; -194792;1;0;false;false;;;;;; -194793;2;0;false;false;63;95;191;;; -194795;1;0;false;false;;;;;; -194796;5;0;false;false;63;95;191;;; -194801;1;0;false;false;;;;;; -194802;9;0;false;false;63;95;191;;; -194811;1;0;false;false;;;;;; -194812;2;0;false;false;63;95;191;;; -194814;3;0;false;false;;;;;; -194817;1;0;false;false;63;95;191;;; -194818;1;0;false;false;;;;;; -194819;7;1;false;false;127;159;191;;; -194826;12;0;false;false;63;95;191;;; -194838;1;0;false;false;;;;;; -194839;12;0;false;false;63;95;191;;; -194851;1;0;false;false;;;;;; -194852;6;0;false;false;63;95;191;;; -194858;1;0;false;false;;;;;; -194859;4;0;false;false;63;95;191;;; -194863;1;0;false;false;;;;;; -194864;4;0;false;false;63;95;191;;; -194868;1;0;false;false;;;;;; -194869;5;0;false;false;63;95;191;;; -194874;1;0;false;false;;;;;; -194875;2;0;false;false;63;95;191;;; -194877;1;0;false;false;;;;;; -194878;2;0;false;false;63;95;191;;; -194880;1;0;false;false;;;;;; -194881;6;0;false;false;63;95;191;;; -194887;1;0;false;false;;;;;; -194888;4;0;false;false;63;95;191;;; -194892;1;0;false;false;;;;;; -194893;5;0;false;false;63;95;191;;; -194898;3;0;false;false;;;;;; -194901;2;0;false;false;63;95;191;;; -194903;2;0;false;false;;;;;; -194905;4;1;false;false;127;0;85;;; -194909;1;0;false;false;;;;;; -194910;15;0;false;false;0;0;0;;; -194925;1;0;false;false;;;;;; -194926;3;0;false;false;0;0;0;;; -194929;3;1;false;false;127;0;85;;; -194932;1;0;false;false;;;;;; -194933;10;0;false;false;0;0;0;;; -194943;3;1;false;false;127;0;85;;; -194946;1;0;false;false;;;;;; -194947;7;0;false;false;0;0;0;;; -194954;1;0;false;false;;;;;; -194955;3;1;false;false;127;0;85;;; -194958;1;0;false;false;;;;;; -194959;13;0;false;false;0;0;0;;; -194972;1;0;false;false;;;;;; -194973;1;0;false;false;0;0;0;;; -194974;3;0;false;false;;;;;; -194977;9;0;false;false;0;0;0;;; -194986;1;0;false;false;;;;;; -194987;10;0;false;false;0;0;0;;; -194997;1;0;false;false;;;;;; -194998;1;0;false;false;0;0;0;;; -194999;1;0;false;false;;;;;; -195000;16;0;false;false;0;0;0;;; -195016;3;0;false;false;;;;;; -195019;5;0;false;false;0;0;0;;; -195024;1;0;false;false;;;;;; -195025;10;0;false;false;0;0;0;;; -195035;1;0;false;false;;;;;; -195036;1;0;false;false;0;0;0;;; -195037;1;0;false;false;;;;;; -195038;16;0;false;false;0;0;0;;; -195054;6;0;false;false;;;;;; -195060;67;0;false;false;63;127;95;;; -195127;1;0;false;false;;;;;; -195128;39;0;false;false;63;127;95;;; -195167;1;0;false;false;;;;;; -195168;2;1;false;false;127;0;85;;; -195170;1;0;false;false;;;;;; -195171;17;0;false;false;0;0;0;;; -195188;1;0;false;false;;;;;; -195189;2;0;false;false;0;0;0;;; -195191;1;0;false;false;;;;;; -195192;2;0;false;false;0;0;0;;; -195194;1;0;false;false;;;;;; -195195;1;0;false;false;0;0;0;;; -195196;4;0;false;false;;;;;; -195200;6;1;false;false;127;0;85;;; -195206;1;0;false;false;0;0;0;;; -195207;3;0;false;false;;;;;; -195210;1;0;false;false;0;0;0;;; -195211;3;0;false;false;;;;;; -195214;2;1;false;false;127;0;85;;; -195216;1;0;false;false;;;;;; -195217;13;0;false;false;0;0;0;;; -195230;1;0;false;false;;;;;; -195231;1;0;false;false;0;0;0;;; -195232;1;0;false;false;;;;;; -195233;2;0;false;false;0;0;0;;; -195235;1;0;false;false;;;;;; -195236;1;0;false;false;0;0;0;;; -195237;4;0;false;false;;;;;; -195241;71;0;false;false;63;127;95;;; -195312;2;0;false;false;;;;;; -195314;5;0;false;false;0;0;0;;; -195319;1;0;false;false;;;;;; -195320;10;0;false;false;0;0;0;;; -195330;1;0;false;false;;;;;; -195331;1;0;false;false;0;0;0;;; -195332;1;0;false;false;;;;;; -195333;16;0;false;false;0;0;0;;; -195349;4;0;false;false;;;;;; -195353;3;1;false;false;127;0;85;;; -195356;1;0;false;false;;;;;; -195357;9;0;false;false;0;0;0;;; -195366;1;0;false;false;;;;;; -195367;1;0;false;false;0;0;0;;; -195368;1;0;false;false;;;;;; -195369;23;0;false;false;0;0;0;;; -195392;4;0;false;false;;;;;; -195396;3;1;false;false;127;0;85;;; -195399;1;0;false;false;;;;;; -195400;7;0;false;false;0;0;0;;; -195407;1;0;false;false;;;;;; -195408;1;0;false;false;0;0;0;;; -195409;1;0;false;false;;;;;; -195410;12;0;false;false;0;0;0;;; -195422;1;0;false;false;;;;;; -195423;1;0;false;false;0;0;0;;; -195424;1;0;false;false;;;;;; -195425;17;0;false;false;0;0;0;;; -195442;1;0;false;false;;;;;; -195443;1;0;false;false;0;0;0;;; -195444;1;0;false;false;;;;;; -195445;18;0;false;false;0;0;0;;; -195463;4;0;false;false;;;;;; -195467;2;1;false;false;127;0;85;;; -195469;1;0;false;false;;;;;; -195470;16;0;false;false;0;0;0;;; -195486;1;0;false;false;;;;;; -195487;1;0;false;false;0;0;0;;; -195488;5;0;false;false;;;;;; -195493;9;0;false;false;0;0;0;;; -195502;1;0;false;false;;;;;; -195503;1;0;false;false;0;0;0;;; -195504;1;0;false;false;;;;;; -195505;2;0;false;false;0;0;0;;; -195507;4;0;false;false;;;;;; -195511;1;0;false;false;0;0;0;;; -195512;4;0;false;false;;;;;; -195516;3;1;false;false;127;0;85;;; -195519;1;0;false;false;;;;;; -195520;7;0;false;false;0;0;0;;; -195527;1;0;false;false;;;;;; -195528;12;0;false;false;0;0;0;;; -195540;4;0;false;false;;;;;; -195544;5;0;false;false;0;0;0;;; -195549;1;0;false;false;;;;;; -195550;11;0;false;false;0;0;0;;; -195561;4;0;false;false;;;;;; -195565;2;0;false;false;0;0;0;;; -195567;1;0;false;false;;;;;; -195568;7;0;false;false;0;0;0;;; -195575;4;0;false;false;;;;;; -195579;7;1;false;false;127;0;85;;; -195586;1;0;false;false;;;;;; -195587;12;0;false;false;0;0;0;;; -195599;1;0;false;false;;;;;; -195600;1;0;false;false;0;0;0;;; -195601;1;0;false;false;;;;;; -195602;13;0;false;false;0;0;0;;; -195615;1;0;false;false;;;;;; -195616;2;0;false;false;0;0;0;;; -195618;1;0;false;false;;;;;; -195619;17;0;false;false;0;0;0;;; -195636;1;0;false;false;;;;;; -195637;2;0;false;false;0;0;0;;; -195639;1;0;false;false;;;;;; -195640;9;0;false;false;0;0;0;;; -195649;4;0;false;false;;;;;; -195653;17;0;false;false;0;0;0;;; -195670;1;0;false;false;;;;;; -195671;1;0;false;false;0;0;0;;; -195672;1;0;false;false;;;;;; -195673;9;0;false;false;0;0;0;;; -195682;4;0;false;false;;;;;; -195686;2;1;false;false;127;0;85;;; -195688;1;0;false;false;;;;;; -195689;14;0;false;false;0;0;0;;; -195703;1;0;false;false;;;;;; -195704;1;0;false;false;0;0;0;;; -195705;5;0;false;false;;;;;; -195710;6;0;false;false;0;0;0;;; -195716;1;0;false;false;;;;;; -195717;1;0;false;false;0;0;0;;; -195718;1;0;false;false;;;;;; -195719;2;0;false;false;0;0;0;;; -195721;5;0;false;false;;;;;; -195726;11;0;false;false;0;0;0;;; -195737;1;0;false;false;;;;;; -195738;1;0;false;false;0;0;0;;; -195739;1;0;false;false;;;;;; -195740;13;0;false;false;0;0;0;;; -195753;5;0;false;false;;;;;; -195758;10;0;false;false;0;0;0;;; -195768;1;0;false;false;;;;;; -195769;1;0;false;false;0;0;0;;; -195770;1;0;false;false;;;;;; -195771;3;1;false;false;127;0;85;;; -195774;1;0;false;false;;;;;; -195775;19;0;false;false;0;0;0;;; -195794;1;0;false;false;;;;;; -195795;17;0;false;false;0;0;0;;; -195812;1;0;false;false;;;;;; -195813;14;0;false;false;0;0;0;;; -195827;5;0;false;false;;;;;; -195832;6;0;false;false;0;0;0;;; -195838;1;0;false;false;;;;;; -195839;1;0;false;false;0;0;0;;; -195840;1;0;false;false;;;;;; -195841;3;1;false;false;127;0;85;;; -195844;1;0;false;false;;;;;; -195845;14;0;false;false;0;0;0;;; -195859;1;0;false;false;;;;;; -195860;9;0;false;false;0;0;0;;; -195869;5;0;false;false;;;;;; -195874;26;0;false;false;0;0;0;;; -195900;5;0;false;false;;;;;; -195905;33;0;false;false;0;0;0;;; -195938;5;0;false;false;;;;;; -195943;33;0;false;false;0;0;0;;; -195976;4;0;false;false;;;;;; -195980;1;0;false;false;0;0;0;;; -195981;1;0;false;false;;;;;; -195982;4;1;false;false;127;0;85;;; -195986;1;0;false;false;;;;;; -195987;1;0;false;false;0;0;0;;; -195988;5;0;false;false;;;;;; -195993;6;0;false;false;0;0;0;;; -195999;1;0;false;false;;;;;; -196000;1;0;false;false;0;0;0;;; -196001;1;0;false;false;;;;;; -196002;7;0;false;false;0;0;0;;; -196009;5;0;false;false;;;;;; -196014;11;0;false;false;0;0;0;;; -196025;1;0;false;false;;;;;; -196026;1;0;false;false;0;0;0;;; -196027;1;0;false;false;;;;;; -196028;6;0;false;false;0;0;0;;; -196034;1;0;false;false;;;;;; -196035;1;0;false;false;0;0;0;;; -196036;1;0;false;false;;;;;; -196037;13;0;false;false;0;0;0;;; -196050;5;0;false;false;;;;;; -196055;10;0;false;false;0;0;0;;; -196065;1;0;false;false;;;;;; -196066;1;0;false;false;0;0;0;;; -196067;1;0;false;false;;;;;; -196068;4;1;false;false;127;0;85;;; -196072;1;0;false;false;0;0;0;;; -196073;5;0;false;false;;;;;; -196078;6;0;false;false;0;0;0;;; -196084;1;0;false;false;;;;;; -196085;1;0;false;false;0;0;0;;; -196086;1;0;false;false;;;;;; -196087;3;0;false;false;0;0;0;;; -196090;4;0;false;false;;;;;; -196094;1;0;false;false;0;0;0;;; -196095;6;0;false;false;;;;;; -196101;3;1;false;false;127;0;85;;; -196104;1;0;false;false;;;;;; -196105;1;0;false;false;0;0;0;;; -196106;3;1;false;false;127;0;85;;; -196109;1;0;false;false;;;;;; -196110;1;0;false;false;0;0;0;;; -196111;1;0;false;false;;;;;; -196112;1;0;false;false;0;0;0;;; -196113;1;0;false;false;;;;;; -196114;10;0;false;false;0;0;0;;; -196124;1;0;false;false;;;;;; -196125;6;0;false;false;0;0;0;;; -196131;1;0;false;false;;;;;; -196132;1;0;false;false;0;0;0;;; -196133;1;0;false;false;;;;;; -196134;11;0;false;false;0;0;0;;; -196145;1;0;false;false;;;;;; -196146;2;0;false;false;0;0;0;;; -196148;1;0;false;false;;;;;; -196149;1;0;false;false;0;0;0;;; -196150;1;0;false;false;;;;;; -196151;1;0;false;false;0;0;0;;; -196152;1;0;false;false;;;;;; -196153;10;0;false;false;0;0;0;;; -196163;1;0;false;false;;;;;; -196164;4;0;false;false;0;0;0;;; -196168;1;0;false;false;;;;;; -196169;6;0;false;false;0;0;0;;; -196175;1;0;false;false;;;;;; -196176;2;0;false;false;0;0;0;;; -196178;1;0;false;false;;;;;; -196179;11;0;false;false;0;0;0;;; -196190;1;0;false;false;;;;;; -196191;1;0;false;false;0;0;0;;; -196192;5;0;false;false;;;;;; -196197;6;0;false;false;0;0;0;;; -196203;1;0;false;false;;;;;; -196204;4;0;false;false;0;0;0;;; -196208;1;0;false;false;;;;;; -196209;1;0;false;false;0;0;0;;; -196210;1;0;false;false;;;;;; -196211;19;0;false;false;0;0;0;;; -196230;5;0;false;false;;;;;; -196235;23;0;false;false;0;0;0;;; -196258;1;0;false;false;;;;;; -196259;2;0;false;false;0;0;0;;; -196261;1;0;false;false;;;;;; -196262;7;0;false;false;0;0;0;;; -196269;1;0;false;false;;;;;; -196270;7;0;false;false;0;0;0;;; -196277;1;0;false;false;;;;;; -196278;11;0;false;false;0;0;0;;; -196289;1;0;false;false;;;;;; -196290;11;0;false;false;0;0;0;;; -196301;1;0;false;false;;;;;; -196302;4;1;false;false;127;0;85;;; -196306;2;0;false;false;0;0;0;;; -196308;4;0;false;false;;;;;; -196312;1;0;false;false;0;0;0;;; -196313;4;0;false;false;;;;;; -196317;2;1;false;false;127;0;85;;; -196319;1;0;false;false;;;;;; -196320;7;0;false;false;0;0;0;;; -196327;1;0;false;false;;;;;; -196328;1;0;false;false;0;0;0;;; -196329;1;0;false;false;;;;;; -196330;12;0;false;false;0;0;0;;; -196342;1;0;false;false;;;;;; -196343;1;0;false;false;0;0;0;;; -196344;5;0;false;false;;;;;; -196349;33;0;false;false;0;0;0;;; -196382;5;0;false;false;;;;;; -196387;23;0;false;false;0;0;0;;; -196410;1;0;false;false;;;;;; -196411;7;0;false;false;0;0;0;;; -196418;1;0;false;false;;;;;; -196419;17;0;false;false;0;0;0;;; -196436;1;0;false;false;;;;;; -196437;11;0;false;false;0;0;0;;; -196448;1;0;false;false;;;;;; -196449;1;0;false;false;0;0;0;;; -196450;1;0;false;false;;;;;; -196451;8;0;false;false;0;0;0;;; -196459;4;0;false;false;;;;;; -196463;1;0;false;false;0;0;0;;; -196464;4;0;false;false;;;;;; -196468;2;1;false;false;127;0;85;;; -196470;1;0;false;false;;;;;; -196471;14;0;false;false;0;0;0;;; -196485;1;0;false;false;;;;;; -196486;1;0;false;false;0;0;0;;; -196487;5;0;false;false;;;;;; -196492;19;0;false;false;0;0;0;;; -196511;1;0;false;false;;;;;; -196512;11;0;false;false;0;0;0;;; -196523;1;0;false;false;;;;;; -196524;11;0;false;false;0;0;0;;; -196535;1;0;false;false;;;;;; -196536;8;0;false;false;0;0;0;;; -196544;5;0;false;false;;;;;; -196549;24;0;false;false;0;0;0;;; -196573;1;0;false;false;;;;;; -196574;2;0;false;false;0;0;0;;; -196576;1;0;false;false;;;;;; -196577;8;0;false;false;0;0;0;;; -196585;5;0;false;false;;;;;; -196590;17;0;false;false;0;0;0;;; -196607;5;0;false;false;;;;;; -196612;21;0;false;false;0;0;0;;; -196633;4;0;false;false;;;;;; -196637;1;0;false;false;0;0;0;;; -196638;3;0;false;false;;;;;; -196641;1;0;false;false;0;0;0;;; -196642;3;0;false;false;;;;;; -196645;15;0;false;false;0;0;0;;; -196660;1;0;false;false;;;;;; -196661;11;0;false;false;0;0;0;;; -196672;1;0;false;false;;;;;; -196673;11;0;false;false;0;0;0;;; -196684;1;0;false;false;;;;;; -196685;3;0;false;false;0;0;0;;; -196688;2;0;false;false;;;;;; -196690;1;0;false;false;0;0;0;;; -196691;2;0;false;false;;;;;; -196693;3;0;false;false;63;95;191;;; -196696;4;0;false;false;;;;;; -196700;1;0;false;false;63;95;191;;; -196701;1;0;false;false;;;;;; -196702;6;0;false;false;63;95;191;;; -196708;1;0;false;false;;;;;; -196709;3;0;false;false;63;95;191;;; -196712;1;0;false;false;;;;;; -196713;8;0;false;false;63;95;191;;; -196721;1;0;false;false;;;;;; -196722;4;0;false;false;63;95;191;;; -196726;1;0;false;false;;;;;; -196727;2;0;false;false;63;95;191;;; -196729;1;0;false;false;;;;;; -196730;3;0;false;false;63;95;191;;; -196733;1;0;false;false;;;;;; -196734;7;0;false;false;63;95;191;;; -196741;1;0;false;false;;;;;; -196742;8;0;false;false;63;95;191;;; -196750;3;0;false;false;;;;;; -196753;1;0;false;false;63;95;191;;; -196754;3;0;false;false;;;;;; -196757;1;0;false;false;63;95;191;;; -196758;1;0;false;false;;;;;; -196759;11;1;false;false;127;159;191;;; -196770;12;0;false;false;63;95;191;;; -196782;1;0;false;false;;;;;; -196783;4;0;false;false;127;127;159;;; -196787;3;0;false;false;;;;;; -196790;1;0;false;false;63;95;191;;; -196791;4;0;false;false;;;;;; -196795;4;0;false;false;127;127;159;;; -196799;21;0;false;false;63;95;191;;; -196820;1;0;false;false;;;;;; -196821;1;0;false;false;127;127;159;;; -196822;1;0;false;false;;;;;; -196823;2;0;false;false;63;95;191;;; -196825;1;0;false;false;;;;;; -196826;3;0;false;false;63;95;191;;; -196829;1;0;false;false;;;;;; -196830;8;0;false;false;63;95;191;;; -196838;1;0;false;false;;;;;; -196839;3;0;false;false;63;95;191;;; -196842;1;0;false;false;;;;;; -196843;4;0;false;false;63;95;191;;; -196847;1;0;false;false;;;;;; -196848;8;0;false;false;63;95;191;;; -196856;5;0;false;false;127;127;159;;; -196861;3;0;false;false;;;;;; -196864;1;0;false;false;63;95;191;;; -196865;4;0;false;false;;;;;; -196869;4;0;false;false;127;127;159;;; -196873;27;0;false;false;63;95;191;;; -196900;1;0;false;false;;;;;; -196901;1;0;false;false;127;127;159;;; -196902;1;0;false;false;;;;;; -196903;2;0;false;false;63;95;191;;; -196905;1;0;false;false;;;;;; -196906;3;0;false;false;63;95;191;;; -196909;1;0;false;false;;;;;; -196910;6;0;false;false;63;95;191;;; -196916;1;0;false;false;;;;;; -196917;4;0;false;false;63;95;191;;; -196921;1;0;false;false;;;;;; -196922;3;0;false;false;63;95;191;;; -196925;1;0;false;false;;;;;; -196926;6;0;false;false;63;95;191;;; -196932;1;0;false;false;;;;;; -196933;4;0;false;false;63;95;191;;; -196937;1;0;false;false;;;;;; -196938;7;0;false;false;63;95;191;;; -196945;1;0;false;false;;;;;; -196946;3;0;false;false;63;95;191;;; -196949;1;0;false;false;;;;;; -196950;8;0;false;false;63;95;191;;; -196958;5;0;false;false;127;127;159;;; -196963;3;0;false;false;;;;;; -196966;1;0;false;false;63;95;191;;; -196967;1;0;false;false;;;;;; -196968;5;0;false;false;127;127;159;;; -196973;3;0;false;false;;;;;; -196976;2;0;false;false;63;95;191;;; -196978;2;0;false;false;;;;;; -196980;6;1;false;false;127;0;85;;; -196986;1;0;false;false;;;;;; -196987;4;1;false;false;127;0;85;;; -196991;1;0;false;false;;;;;; -196992;7;0;false;false;0;0;0;;; -196999;1;0;false;false;;;;;; -197000;1;0;false;false;0;0;0;;; -197001;3;0;false;false;;;;;; -197004;14;0;false;false;0;0;0;;; -197018;3;0;false;false;;;;;; -197021;7;0;false;false;0;0;0;;; -197028;1;0;false;false;;;;;; -197029;7;0;false;false;0;0;0;;; -197036;1;0;false;false;;;;;; -197037;1;0;false;false;0;0;0;;; -197038;1;0;false;false;;;;;; -197039;3;1;false;false;127;0;85;;; -197042;1;0;false;false;;;;;; -197043;10;0;false;false;0;0;0;;; -197053;3;0;false;false;;;;;; -197056;22;0;false;false;0;0;0;;; -197078;1;0;false;false;;;;;; -197079;7;0;false;false;0;0;0;;; -197086;1;0;false;false;;;;;; -197087;1;0;false;false;0;0;0;;; -197088;1;0;false;false;;;;;; -197089;3;1;false;false;127;0;85;;; -197092;1;0;false;false;;;;;; -197093;25;0;false;false;0;0;0;;; -197118;6;0;false;false;;;;;; -197124;27;0;false;false;0;0;0;;; -197151;1;0;false;false;;;;;; -197152;1;0;false;false;0;0;0;;; -197153;1;0;false;false;;;;;; -197154;4;1;false;false;127;0;85;;; -197158;1;0;false;false;0;0;0;;; -197159;3;0;false;false;;;;;; -197162;27;0;false;false;0;0;0;;; -197189;1;0;false;false;;;;;; -197190;1;0;false;false;0;0;0;;; -197191;1;0;false;false;;;;;; -197192;4;1;false;false;127;0;85;;; -197196;1;0;false;false;0;0;0;;; -197197;3;0;false;false;;;;;; -197200;26;0;false;false;0;0;0;;; -197226;1;0;false;false;;;;;; -197227;1;0;false;false;0;0;0;;; -197228;1;0;false;false;;;;;; -197229;4;1;false;false;127;0;85;;; -197233;1;0;false;false;0;0;0;;; -197234;3;0;false;false;;;;;; -197237;27;0;false;false;0;0;0;;; -197264;1;0;false;false;;;;;; -197265;1;0;false;false;0;0;0;;; -197266;1;0;false;false;;;;;; -197267;4;1;false;false;127;0;85;;; -197271;1;0;false;false;0;0;0;;; -197272;4;0;false;false;;;;;; -197276;3;1;false;false;127;0;85;;; -197279;1;0;false;false;;;;;; -197280;9;0;false;false;0;0;0;;; -197289;4;1;false;false;127;0;85;;; -197293;1;0;false;false;0;0;0;;; -197294;1;0;false;false;;;;;; -197295;8;0;false;false;0;0;0;;; -197303;1;0;false;false;;;;;; -197304;15;0;false;false;0;0;0;;; -197319;3;0;false;false;;;;;; -197322;18;0;false;false;0;0;0;;; -197340;2;0;false;false;;;;;; -197342;1;0;false;false;0;0;0;;; -197343;2;0;false;false;;;;;; -197345;3;0;false;false;63;95;191;;; -197348;4;0;false;false;;;;;; -197352;1;0;false;false;63;95;191;;; -197353;1;0;false;false;;;;;; -197354;7;0;false;false;63;95;191;;; -197361;1;0;false;false;;;;;; -197362;1;0;false;false;63;95;191;;; -197363;1;0;false;false;;;;;; -197364;8;0;false;false;63;95;191;;; -197372;1;0;false;false;;;;;; -197373;4;0;false;false;63;95;191;;; -197377;1;0;false;false;;;;;; -197378;4;0;false;false;63;95;191;;; -197382;1;0;false;false;;;;;; -197383;5;0;false;false;63;95;191;;; -197388;1;0;false;false;;;;;; -197389;3;0;false;false;63;95;191;;; -197392;1;0;false;false;;;;;; -197393;8;0;false;false;63;95;191;;; -197401;1;0;false;false;;;;;; -197402;4;0;false;false;63;95;191;;; -197406;3;0;false;false;;;;;; -197409;1;0;false;false;63;95;191;;; -197410;1;0;false;false;;;;;; -197411;2;0;false;false;63;95;191;;; -197413;1;0;false;false;;;;;; -197414;3;0;false;false;63;95;191;;; -197417;1;0;false;false;;;;;; -197418;9;0;false;false;63;95;191;;; -197427;1;0;false;false;;;;;; -197428;8;0;false;false;63;95;191;;; -197436;3;0;false;false;;;;;; -197439;1;0;false;false;63;95;191;;; -197440;1;0;false;false;;;;;; -197441;3;0;false;false;127;127;159;;; -197444;3;0;false;false;;;;;; -197447;1;0;false;false;63;95;191;;; -197448;1;0;false;false;;;;;; -197449;3;0;false;false;63;95;191;;; -197452;1;0;false;false;;;;;; -197453;8;0;false;false;63;95;191;;; -197461;1;0;false;false;;;;;; -197462;3;0;false;false;63;95;191;;; -197465;1;0;false;false;;;;;; -197466;2;0;false;false;63;95;191;;; -197468;1;0;false;false;;;;;; -197469;3;0;false;false;63;95;191;;; -197472;1;0;false;false;;;;;; -197473;2;0;false;false;63;95;191;;; -197475;1;0;false;false;;;;;; -197476;1;0;false;false;63;95;191;;; -197477;1;0;false;false;;;;;; -197478;3;0;false;false;63;95;191;;; -197481;1;0;false;false;127;127;159;;; -197482;2;0;false;false;63;95;191;;; -197484;1;0;false;false;;;;;; -197485;7;0;false;false;63;95;191;;; -197492;3;0;false;false;;;;;; -197495;1;0;false;false;63;95;191;;; -197496;1;0;false;false;;;;;; -197497;4;0;false;false;127;127;159;;; -197501;3;0;false;false;;;;;; -197504;1;0;false;false;63;95;191;;; -197505;4;0;false;false;;;;;; -197509;1;0;false;false;63;95;191;;; -197510;1;0;false;false;;;;;; -197511;7;1;false;false;127;159;191;;; -197518;7;0;false;false;63;95;191;;; -197525;1;0;false;false;;;;;; -197526;3;0;false;false;63;95;191;;; -197529;1;0;false;false;;;;;; -197530;7;0;false;false;63;95;191;;; -197537;1;0;false;false;;;;;; -197538;2;0;false;false;63;95;191;;; -197540;1;0;false;false;;;;;; -197541;5;0;false;false;63;95;191;;; -197546;1;0;false;false;;;;;; -197547;2;0;false;false;63;95;191;;; -197549;3;0;false;false;;;;;; -197552;1;0;false;false;63;95;191;;; -197553;1;0;false;false;;;;;; -197554;11;1;false;false;127;159;191;;; -197565;12;0;false;false;63;95;191;;; -197577;1;0;false;false;;;;;; -197578;4;0;false;false;127;127;159;;; -197582;3;0;false;false;;;;;; -197585;1;0;false;false;63;95;191;;; -197586;4;0;false;false;;;;;; -197590;4;0;false;false;127;127;159;;; -197594;21;0;false;false;63;95;191;;; -197615;1;0;false;false;;;;;; -197616;1;0;false;false;127;127;159;;; -197617;1;0;false;false;;;;;; -197618;2;0;false;false;63;95;191;;; -197620;1;0;false;false;;;;;; -197621;3;0;false;false;63;95;191;;; -197624;1;0;false;false;;;;;; -197625;8;0;false;false;63;95;191;;; -197633;1;0;false;false;;;;;; -197634;3;0;false;false;63;95;191;;; -197637;1;0;false;false;;;;;; -197638;4;0;false;false;63;95;191;;; -197642;1;0;false;false;;;;;; -197643;8;0;false;false;63;95;191;;; -197651;5;0;false;false;127;127;159;;; -197656;3;0;false;false;;;;;; -197659;1;0;false;false;63;95;191;;; -197660;4;0;false;false;;;;;; -197664;4;0;false;false;127;127;159;;; -197668;27;0;false;false;63;95;191;;; -197695;1;0;false;false;;;;;; -197696;1;0;false;false;127;127;159;;; -197697;1;0;false;false;;;;;; -197698;2;0;false;false;63;95;191;;; -197700;1;0;false;false;;;;;; -197701;3;0;false;false;63;95;191;;; -197704;1;0;false;false;;;;;; -197705;6;0;false;false;63;95;191;;; -197711;1;0;false;false;;;;;; -197712;4;0;false;false;63;95;191;;; -197716;1;0;false;false;;;;;; -197717;3;0;false;false;63;95;191;;; -197720;1;0;false;false;;;;;; -197721;6;0;false;false;63;95;191;;; -197727;1;0;false;false;;;;;; -197728;4;0;false;false;63;95;191;;; -197732;1;0;false;false;;;;;; -197733;7;0;false;false;63;95;191;;; -197740;1;0;false;false;;;;;; -197741;3;0;false;false;63;95;191;;; -197744;1;0;false;false;;;;;; -197745;8;0;false;false;63;95;191;;; -197753;5;0;false;false;127;127;159;;; -197758;3;0;false;false;;;;;; -197761;1;0;false;false;63;95;191;;; -197762;1;0;false;false;;;;;; -197763;5;0;false;false;127;127;159;;; -197768;3;0;false;false;;;;;; -197771;1;0;false;false;63;95;191;;; -197772;1;0;false;false;;;;;; -197773;11;1;false;false;127;159;191;;; -197784;24;0;false;false;63;95;191;;; -197808;1;0;false;false;;;;;; -197809;4;0;false;false;127;127;159;;; -197813;3;0;false;false;;;;;; -197816;1;0;false;false;63;95;191;;; -197817;4;0;false;false;;;;;; -197821;4;0;false;false;127;127;159;;; -197825;19;0;false;false;63;95;191;;; -197844;1;0;false;false;;;;;; -197845;4;0;false;false;63;95;191;;; -197849;1;0;false;false;;;;;; -197850;7;0;false;false;63;95;191;;; -197857;1;0;false;false;;;;;; -197858;2;0;false;false;63;95;191;;; -197860;1;0;false;false;;;;;; -197861;4;0;false;false;63;95;191;;; -197865;5;0;false;false;127;127;159;;; -197870;3;0;false;false;;;;;; -197873;1;0;false;false;63;95;191;;; -197874;1;0;false;false;;;;;; -197875;5;0;false;false;127;127;159;;; -197880;3;0;false;false;;;;;; -197883;2;0;false;false;63;95;191;;; -197885;2;0;false;false;;;;;; -197887;6;1;false;false;127;0;85;;; -197893;1;0;false;false;;;;;; -197894;8;0;false;false;0;0;0;;; -197902;1;0;false;false;;;;;; -197903;13;0;false;false;0;0;0;;; -197916;1;0;false;false;;;;;; -197917;8;0;false;false;0;0;0;;; -197925;1;0;false;false;;;;;; -197926;1;0;false;false;0;0;0;;; -197927;3;0;false;false;;;;;; -197930;14;0;false;false;0;0;0;;; -197944;4;0;false;false;;;;;; -197948;22;0;false;false;0;0;0;;; -197970;1;0;false;false;;;;;; -197971;7;0;false;false;0;0;0;;; -197978;1;0;false;false;;;;;; -197979;1;0;false;false;0;0;0;;; -197980;1;0;false;false;;;;;; -197981;3;1;false;false;127;0;85;;; -197984;1;0;false;false;;;;;; -197985;25;0;false;false;0;0;0;;; -198010;3;0;false;false;;;;;; -198013;27;0;false;false;0;0;0;;; -198040;1;0;false;false;;;;;; -198041;1;0;false;false;0;0;0;;; -198042;1;0;false;false;;;;;; -198043;4;1;false;false;127;0;85;;; -198047;1;0;false;false;0;0;0;;; -198048;3;0;false;false;;;;;; -198051;27;0;false;false;0;0;0;;; -198078;1;0;false;false;;;;;; -198079;1;0;false;false;0;0;0;;; -198080;1;0;false;false;;;;;; -198081;4;1;false;false;127;0;85;;; -198085;1;0;false;false;0;0;0;;; -198086;3;0;false;false;;;;;; -198089;26;0;false;false;0;0;0;;; -198115;1;0;false;false;;;;;; -198116;1;0;false;false;0;0;0;;; -198117;1;0;false;false;;;;;; -198118;4;1;false;false;127;0;85;;; -198122;1;0;false;false;0;0;0;;; -198123;3;0;false;false;;;;;; -198126;27;0;false;false;0;0;0;;; -198153;1;0;false;false;;;;;; -198154;1;0;false;false;0;0;0;;; -198155;1;0;false;false;;;;;; -198156;4;1;false;false;127;0;85;;; -198160;1;0;false;false;0;0;0;;; -198161;3;0;false;false;;;;;; -198164;2;1;false;false;127;0;85;;; -198166;1;0;false;false;;;;;; -198167;8;0;false;false;0;0;0;;; -198175;1;0;false;false;;;;;; -198176;2;0;false;false;0;0;0;;; -198178;1;0;false;false;;;;;; -198179;4;1;false;false;127;0;85;;; -198183;1;0;false;false;0;0;0;;; -198184;1;0;false;false;;;;;; -198185;1;0;false;false;0;0;0;;; -198186;4;0;false;false;;;;;; -198190;35;0;false;false;0;0;0;;; -198225;3;0;false;false;;;;;; -198228;1;0;false;false;0;0;0;;; -198229;3;0;false;false;;;;;; -198232;6;1;false;false;127;0;85;;; -198238;1;0;false;false;;;;;; -198239;14;0;false;false;0;0;0;;; -198253;1;0;false;false;;;;;; -198254;9;0;false;false;0;0;0;;; -198263;2;0;false;false;;;;;; -198265;1;0;false;false;0;0;0;;; -198266;2;0;false;false;;;;;; -198268;3;0;false;false;63;95;191;;; -198271;4;0;false;false;;;;;; -198275;1;0;false;false;63;95;191;;; -198276;1;0;false;false;;;;;; -198277;7;0;false;false;63;95;191;;; -198284;1;0;false;false;;;;;; -198285;1;0;false;false;63;95;191;;; -198286;1;0;false;false;;;;;; -198287;8;0;false;false;63;95;191;;; -198295;1;0;false;false;;;;;; -198296;4;0;false;false;63;95;191;;; -198300;1;0;false;false;;;;;; -198301;4;0;false;false;63;95;191;;; -198305;1;0;false;false;;;;;; -198306;5;0;false;false;63;95;191;;; -198311;1;0;false;false;;;;;; -198312;3;0;false;false;63;95;191;;; -198315;1;0;false;false;;;;;; -198316;8;0;false;false;63;95;191;;; -198324;1;0;false;false;;;;;; -198325;4;0;false;false;63;95;191;;; -198329;3;0;false;false;;;;;; -198332;1;0;false;false;63;95;191;;; -198333;1;0;false;false;;;;;; -198334;2;0;false;false;63;95;191;;; -198336;1;0;false;false;;;;;; -198337;3;0;false;false;63;95;191;;; -198340;1;0;false;false;;;;;; -198341;9;0;false;false;63;95;191;;; -198350;1;0;false;false;;;;;; -198351;8;0;false;false;63;95;191;;; -198359;3;0;false;false;;;;;; -198362;1;0;false;false;63;95;191;;; -198363;1;0;false;false;;;;;; -198364;3;0;false;false;127;127;159;;; -198367;3;0;false;false;;;;;; -198370;1;0;false;false;63;95;191;;; -198371;1;0;false;false;;;;;; -198372;3;0;false;false;63;95;191;;; -198375;1;0;false;false;;;;;; -198376;8;0;false;false;63;95;191;;; -198384;1;0;false;false;;;;;; -198385;3;0;false;false;63;95;191;;; -198388;1;0;false;false;;;;;; -198389;2;0;false;false;63;95;191;;; -198391;1;0;false;false;;;;;; -198392;3;0;false;false;63;95;191;;; -198395;1;0;false;false;;;;;; -198396;2;0;false;false;63;95;191;;; -198398;1;0;false;false;;;;;; -198399;1;0;false;false;63;95;191;;; -198400;1;0;false;false;;;;;; -198401;3;0;false;false;63;95;191;;; -198404;1;0;false;false;127;127;159;;; -198405;2;0;false;false;63;95;191;;; -198407;1;0;false;false;;;;;; -198408;7;0;false;false;63;95;191;;; -198415;3;0;false;false;;;;;; -198418;1;0;false;false;63;95;191;;; -198419;1;0;false;false;;;;;; -198420;4;0;false;false;127;127;159;;; -198424;3;0;false;false;;;;;; -198427;1;0;false;false;63;95;191;;; -198428;4;0;false;false;;;;;; -198432;1;0;false;false;63;95;191;;; -198433;1;0;false;false;;;;;; -198434;7;1;false;false;127;159;191;;; -198441;7;0;false;false;63;95;191;;; -198448;1;0;false;false;;;;;; -198449;3;0;false;false;63;95;191;;; -198452;1;0;false;false;;;;;; -198453;7;0;false;false;63;95;191;;; -198460;1;0;false;false;;;;;; -198461;2;0;false;false;63;95;191;;; -198463;1;0;false;false;;;;;; -198464;5;0;false;false;63;95;191;;; -198469;1;0;false;false;;;;;; -198470;2;0;false;false;63;95;191;;; -198472;3;0;false;false;;;;;; -198475;1;0;false;false;63;95;191;;; -198476;1;0;false;false;;;;;; -198477;7;1;false;false;127;159;191;;; -198484;7;0;false;false;63;95;191;;; -198491;1;0;false;false;;;;;; -198492;5;0;false;false;63;95;191;;; -198497;1;0;false;false;;;;;; -198498;7;0;false;false;63;95;191;;; -198505;1;0;false;false;;;;;; -198506;2;0;false;false;63;95;191;;; -198508;1;0;false;false;;;;;; -198509;3;0;false;false;63;95;191;;; -198512;1;0;false;false;;;;;; -198513;6;0;false;false;63;95;191;;; -198519;1;0;false;false;;;;;; -198520;8;0;false;false;63;95;191;;; -198528;3;0;false;false;;;;;; -198531;1;0;false;false;63;95;191;;; -198532;1;0;false;false;;;;;; -198533;11;1;false;false;127;159;191;;; -198544;12;0;false;false;63;95;191;;; -198556;1;0;false;false;;;;;; -198557;4;0;false;false;127;127;159;;; -198561;3;0;false;false;;;;;; -198564;1;0;false;false;63;95;191;;; -198565;4;0;false;false;;;;;; -198569;4;0;false;false;127;127;159;;; -198573;21;0;false;false;63;95;191;;; -198594;1;0;false;false;;;;;; -198595;1;0;false;false;127;127;159;;; -198596;1;0;false;false;;;;;; -198597;2;0;false;false;63;95;191;;; -198599;1;0;false;false;;;;;; -198600;3;0;false;false;63;95;191;;; -198603;1;0;false;false;;;;;; -198604;8;0;false;false;63;95;191;;; -198612;1;0;false;false;;;;;; -198613;3;0;false;false;63;95;191;;; -198616;1;0;false;false;;;;;; -198617;4;0;false;false;63;95;191;;; -198621;1;0;false;false;;;;;; -198622;8;0;false;false;63;95;191;;; -198630;5;0;false;false;127;127;159;;; -198635;3;0;false;false;;;;;; -198638;1;0;false;false;63;95;191;;; -198639;4;0;false;false;;;;;; -198643;4;0;false;false;127;127;159;;; -198647;27;0;false;false;63;95;191;;; -198674;1;0;false;false;;;;;; -198675;1;0;false;false;127;127;159;;; -198676;1;0;false;false;;;;;; -198677;2;0;false;false;63;95;191;;; -198679;1;0;false;false;;;;;; -198680;3;0;false;false;63;95;191;;; -198683;1;0;false;false;;;;;; -198684;6;0;false;false;63;95;191;;; -198690;1;0;false;false;;;;;; -198691;4;0;false;false;63;95;191;;; -198695;1;0;false;false;;;;;; -198696;3;0;false;false;63;95;191;;; -198699;1;0;false;false;;;;;; -198700;6;0;false;false;63;95;191;;; -198706;1;0;false;false;;;;;; -198707;4;0;false;false;63;95;191;;; -198711;1;0;false;false;;;;;; -198712;7;0;false;false;63;95;191;;; -198719;1;0;false;false;;;;;; -198720;3;0;false;false;63;95;191;;; -198723;1;0;false;false;;;;;; -198724;8;0;false;false;63;95;191;;; -198732;5;0;false;false;127;127;159;;; -198737;3;0;false;false;;;;;; -198740;1;0;false;false;63;95;191;;; -198741;1;0;false;false;;;;;; -198742;5;0;false;false;127;127;159;;; -198747;3;0;false;false;;;;;; -198750;1;0;false;false;63;95;191;;; -198751;1;0;false;false;;;;;; -198752;11;1;false;false;127;159;191;;; -198763;24;0;false;false;63;95;191;;; -198787;1;0;false;false;;;;;; -198788;4;0;false;false;127;127;159;;; -198792;3;0;false;false;;;;;; -198795;1;0;false;false;63;95;191;;; -198796;4;0;false;false;;;;;; -198800;4;0;false;false;127;127;159;;; -198804;19;0;false;false;63;95;191;;; -198823;1;0;false;false;;;;;; -198824;4;0;false;false;63;95;191;;; -198828;1;0;false;false;;;;;; -198829;7;0;false;false;63;95;191;;; -198836;1;0;false;false;;;;;; -198837;2;0;false;false;63;95;191;;; -198839;1;0;false;false;;;;;; -198840;7;0;false;false;63;95;191;;; -198847;1;0;false;false;;;;;; -198848;2;0;false;false;63;95;191;;; -198850;1;0;false;false;;;;;; -198851;4;0;false;false;63;95;191;;; -198855;5;0;false;false;127;127;159;;; -198860;3;0;false;false;;;;;; -198863;1;0;false;false;63;95;191;;; -198864;1;0;false;false;;;;;; -198865;5;0;false;false;127;127;159;;; -198870;3;0;false;false;;;;;; -198873;1;0;false;false;63;95;191;;; -198874;1;0;false;false;;;;;; -198875;7;1;false;false;127;159;191;;; -198882;3;0;false;false;63;95;191;;; -198885;3;0;false;false;;;;;; -198888;2;0;false;false;63;95;191;;; -198890;2;0;false;false;;;;;; -198892;6;1;false;false;127;0;85;;; -198898;1;0;false;false;;;;;; -198899;8;0;false;false;0;0;0;;; -198907;1;0;false;false;;;;;; -198908;13;0;false;false;0;0;0;;; -198921;1;0;false;false;;;;;; -198922;8;0;false;false;0;0;0;;; -198930;1;0;false;false;;;;;; -198931;22;0;false;false;0;0;0;;; -198953;1;0;false;false;;;;;; -198954;8;0;false;false;0;0;0;;; -198962;1;0;false;false;;;;;; -198963;1;0;false;false;0;0;0;;; -198964;3;0;false;false;;;;;; -198967;14;0;false;false;0;0;0;;; -198981;3;0;false;false;;;;;; -198984;2;1;false;false;127;0;85;;; -198986;1;0;false;false;;;;;; -198987;8;0;false;false;0;0;0;;; -198995;1;0;false;false;;;;;; -198996;2;0;false;false;0;0;0;;; -198998;1;0;false;false;;;;;; -198999;4;1;false;false;127;0;85;;; -199003;1;0;false;false;;;;;; -199004;2;0;false;false;0;0;0;;; -199006;1;0;false;false;;;;;; -199007;7;0;false;false;0;0;0;;; -199014;1;0;false;false;;;;;; -199015;2;0;false;false;0;0;0;;; -199017;1;0;false;false;;;;;; -199018;4;1;false;false;127;0;85;;; -199022;1;0;false;false;0;0;0;;; -199023;1;0;false;false;;;;;; -199024;1;0;false;false;0;0;0;;; -199025;4;0;false;false;;;;;; -199029;35;0;false;false;0;0;0;;; -199064;3;0;false;false;;;;;; -199067;1;0;false;false;0;0;0;;; -199068;3;0;false;false;;;;;; -199071;6;1;false;false;127;0;85;;; -199077;1;0;false;false;;;;;; -199078;3;1;false;false;127;0;85;;; -199081;1;0;false;false;;;;;; -199082;9;0;false;false;0;0;0;;; -199091;4;1;false;false;127;0;85;;; -199095;1;0;false;false;0;0;0;;; -199096;1;0;false;false;;;;;; -199097;8;0;false;false;0;0;0;;; -199105;1;0;false;false;;;;;; -199106;9;0;false;false;0;0;0;;; -199115;2;0;false;false;;;;;; -199117;1;0;false;false;0;0;0;;; -199118;2;0;false;false;;;;;; -199120;3;0;false;false;63;95;191;;; -199123;3;0;false;false;;;;;; -199126;1;0;false;false;63;95;191;;; -199127;1;0;false;false;;;;;; -199128;6;0;false;false;63;95;191;;; -199134;1;0;false;false;;;;;; -199135;3;0;false;false;63;95;191;;; -199138;1;0;false;false;;;;;; -199139;6;0;false;false;63;95;191;;; -199145;1;0;false;false;;;;;; -199146;6;0;false;false;63;95;191;;; -199152;1;0;false;false;;;;;; -199153;2;0;false;false;63;95;191;;; -199155;1;0;false;false;;;;;; -199156;3;0;false;false;63;95;191;;; -199159;1;0;false;false;;;;;; -199160;8;0;false;false;63;95;191;;; -199168;1;0;false;false;;;;;; -199169;2;0;false;false;63;95;191;;; -199171;1;0;false;false;;;;;; -199172;2;0;false;false;63;95;191;;; -199174;1;0;false;false;;;;;; -199175;6;0;false;false;63;95;191;;; -199181;3;0;false;false;;;;;; -199184;1;0;false;false;63;95;191;;; -199185;1;0;false;false;;;;;; -199186;2;0;false;false;63;95;191;;; -199188;1;0;false;false;;;;;; -199189;7;0;false;false;63;95;191;;; -199196;1;0;false;false;;;;;; -199197;2;0;false;false;63;95;191;;; -199199;1;0;false;false;;;;;; -199200;2;0;false;false;63;95;191;;; -199202;1;0;false;false;;;;;; -199203;8;0;false;false;63;95;191;;; -199211;1;0;false;false;;;;;; -199212;3;0;false;false;63;95;191;;; -199215;1;0;false;false;;;;;; -199216;4;0;false;false;63;95;191;;; -199220;1;0;false;false;;;;;; -199221;4;0;false;false;63;95;191;;; -199225;1;0;false;false;;;;;; -199226;1;0;false;false;63;95;191;;; -199227;1;0;false;false;;;;;; -199228;5;0;false;false;63;95;191;;; -199233;1;0;false;false;;;;;; -199234;7;0;false;false;63;95;191;;; -199241;3;0;false;false;;;;;; -199244;1;0;false;false;63;95;191;;; -199245;1;0;false;false;;;;;; -199246;2;0;false;false;63;95;191;;; -199248;1;0;false;false;;;;;; -199249;10;0;false;false;63;95;191;;; -199259;1;0;false;false;;;;;; -199260;3;0;false;false;63;95;191;;; -199263;1;0;false;false;;;;;; -199264;7;0;false;false;63;95;191;;; -199271;1;0;false;false;;;;;; -199272;4;0;false;false;63;95;191;;; -199276;1;0;false;false;;;;;; -199277;2;0;false;false;63;95;191;;; -199279;1;0;false;false;;;;;; -199280;10;0;false;false;63;95;191;;; -199290;1;0;false;false;;;;;; -199291;8;0;false;false;63;95;191;;; -199299;3;0;false;false;;;;;; -199302;1;0;false;false;63;95;191;;; -199303;1;0;false;false;;;;;; -199304;3;0;false;false;127;127;159;;; -199307;3;0;false;false;;;;;; -199310;1;0;false;false;63;95;191;;; -199311;1;0;false;false;;;;;; -199312;12;0;false;false;63;95;191;;; -199324;1;0;false;false;;;;;; -199325;3;0;false;false;63;95;191;;; -199328;1;0;false;false;;;;;; -199329;7;0;false;false;63;95;191;;; -199336;1;0;false;false;;;;;; -199337;5;0;false;false;63;95;191;;; -199342;1;0;false;false;;;;;; -199343;3;0;false;false;63;95;191;;; -199346;1;0;false;false;;;;;; -199347;3;0;false;false;63;95;191;;; -199350;1;0;false;false;;;;;; -199351;5;0;false;false;63;95;191;;; -199356;1;0;false;false;;;;;; -199357;2;0;false;false;63;95;191;;; -199359;1;0;false;false;;;;;; -199360;3;0;false;false;63;95;191;;; -199363;1;0;false;false;;;;;; -199364;7;0;false;false;63;95;191;;; -199371;3;0;false;false;;;;;; -199374;1;0;false;false;63;95;191;;; -199375;1;0;false;false;;;;;; -199376;4;0;false;false;63;95;191;;; -199380;1;0;false;false;;;;;; -199381;1;0;false;false;63;95;191;;; -199382;1;0;false;false;;;;;; -199383;6;0;false;false;127;127;159;;; -199389;17;0;false;false;63;95;191;;; -199406;7;0;false;false;127;127;159;;; -199413;1;0;false;false;;;;;; -199414;2;0;false;false;63;95;191;;; -199416;1;0;false;false;;;;;; -199417;4;0;false;false;63;95;191;;; -199421;1;0;false;false;;;;;; -199422;1;0;false;false;63;95;191;;; -199423;1;0;false;false;;;;;; -199424;6;0;false;false;63;95;191;;; -199430;1;0;false;false;;;;;; -199431;4;0;false;false;63;95;191;;; -199435;4;0;false;false;;;;;; -199439;1;0;false;false;63;95;191;;; -199440;1;0;false;false;;;;;; -199441;2;0;false;false;63;95;191;;; -199443;1;0;false;false;;;;;; -199444;3;0;false;false;63;95;191;;; -199447;1;0;false;false;;;;;; -199448;4;0;false;false;63;95;191;;; -199452;1;0;false;false;;;;;; -199453;12;0;false;false;63;95;191;;; -199465;1;0;false;false;;;;;; -199466;2;0;false;false;63;95;191;;; -199468;1;0;false;false;;;;;; -199469;3;0;false;false;63;95;191;;; -199472;1;0;false;false;;;;;; -199473;6;0;false;false;63;95;191;;; -199479;1;0;false;false;;;;;; -199480;4;0;false;false;63;95;191;;; -199484;1;0;false;false;;;;;; -199485;6;0;false;false;63;95;191;;; -199491;1;0;false;false;;;;;; -199492;4;0;false;false;63;95;191;;; -199496;1;0;false;false;;;;;; -199497;7;0;false;false;63;95;191;;; -199504;4;0;false;false;;;;;; -199508;1;0;false;false;63;95;191;;; -199509;1;0;false;false;;;;;; -199510;3;0;false;false;63;95;191;;; -199513;1;0;false;false;;;;;; -199514;4;0;false;false;63;95;191;;; -199518;1;0;false;false;;;;;; -199519;3;0;false;false;63;95;191;;; -199522;1;0;false;false;;;;;; -199523;7;0;false;false;63;95;191;;; -199530;1;0;false;false;;;;;; -199531;5;0;false;false;63;95;191;;; -199536;1;0;false;false;;;;;; -199537;3;0;false;false;63;95;191;;; -199540;1;0;false;false;;;;;; -199541;4;0;false;false;63;95;191;;; -199545;1;0;false;false;;;;;; -199546;8;0;false;false;63;95;191;;; -199554;3;0;false;false;;;;;; -199557;1;0;false;false;63;95;191;;; -199558;1;0;false;false;;;;;; -199559;4;0;false;false;127;127;159;;; -199563;3;0;false;false;;;;;; -199566;1;0;false;false;63;95;191;;; -199567;3;0;false;false;;;;;; -199570;1;0;false;false;63;95;191;;; -199571;1;0;false;false;;;;;; -199572;11;1;false;false;127;159;191;;; -199583;12;0;false;false;63;95;191;;; -199595;1;0;false;false;;;;;; -199596;4;0;false;false;127;127;159;;; -199600;3;0;false;false;;;;;; -199603;1;0;false;false;63;95;191;;; -199604;4;0;false;false;;;;;; -199608;4;0;false;false;127;127;159;;; -199612;21;0;false;false;63;95;191;;; -199633;1;0;false;false;;;;;; -199634;1;0;false;false;127;127;159;;; -199635;1;0;false;false;;;;;; -199636;2;0;false;false;63;95;191;;; -199638;1;0;false;false;;;;;; -199639;3;0;false;false;63;95;191;;; -199642;1;0;false;false;;;;;; -199643;8;0;false;false;63;95;191;;; -199651;1;0;false;false;;;;;; -199652;3;0;false;false;63;95;191;;; -199655;1;0;false;false;;;;;; -199656;4;0;false;false;63;95;191;;; -199660;1;0;false;false;;;;;; -199661;8;0;false;false;63;95;191;;; -199669;5;0;false;false;127;127;159;;; -199674;3;0;false;false;;;;;; -199677;1;0;false;false;63;95;191;;; -199678;4;0;false;false;;;;;; -199682;4;0;false;false;127;127;159;;; -199686;27;0;false;false;63;95;191;;; -199713;1;0;false;false;;;;;; -199714;1;0;false;false;127;127;159;;; -199715;1;0;false;false;;;;;; -199716;2;0;false;false;63;95;191;;; -199718;1;0;false;false;;;;;; -199719;3;0;false;false;63;95;191;;; -199722;1;0;false;false;;;;;; -199723;6;0;false;false;63;95;191;;; -199729;1;0;false;false;;;;;; -199730;4;0;false;false;63;95;191;;; -199734;1;0;false;false;;;;;; -199735;3;0;false;false;63;95;191;;; -199738;1;0;false;false;;;;;; -199739;6;0;false;false;63;95;191;;; -199745;1;0;false;false;;;;;; -199746;4;0;false;false;63;95;191;;; -199750;1;0;false;false;;;;;; -199751;7;0;false;false;63;95;191;;; -199758;1;0;false;false;;;;;; -199759;3;0;false;false;63;95;191;;; -199762;1;0;false;false;;;;;; -199763;8;0;false;false;63;95;191;;; -199771;5;0;false;false;127;127;159;;; -199776;3;0;false;false;;;;;; -199779;1;0;false;false;63;95;191;;; -199780;1;0;false;false;;;;;; -199781;5;0;false;false;127;127;159;;; -199786;3;0;false;false;;;;;; -199789;1;0;false;false;63;95;191;;; -199790;3;0;false;false;;;;;; -199793;1;0;false;false;63;95;191;;; -199794;1;0;false;false;;;;;; -199795;5;1;false;false;127;159;191;;; -199800;14;0;false;false;63;95;191;;; -199814;3;0;false;false;;;;;; -199817;2;0;false;false;63;95;191;;; -199819;2;0;false;false;;;;;; -199821;6;1;false;false;127;0;85;;; -199827;1;0;false;false;;;;;; -199828;4;1;false;false;127;0;85;;; -199832;1;0;false;false;;;;;; -199833;8;0;false;false;0;0;0;;; -199841;1;0;false;false;;;;;; -199842;1;0;false;false;0;0;0;;; -199843;3;0;false;false;;;;;; -199846;3;1;false;false;127;0;85;;; -199849;1;0;false;false;;;;;; -199850;10;0;false;false;0;0;0;;; -199860;6;0;false;false;;;;;; -199866;5;1;false;false;127;0;85;;; -199871;10;0;false;false;0;0;0;;; -199881;3;0;false;false;;;;;; -199884;9;0;false;false;0;0;0;;; -199893;1;0;false;false;;;;;; -199894;1;0;false;false;0;0;0;;; -199895;1;0;false;false;;;;;; -199896;23;0;false;false;0;0;0;;; -199919;1;0;false;false;;;;;; -199920;1;0;false;false;0;0;0;;; -199921;1;0;false;false;;;;;; -199922;8;0;false;false;0;0;0;;; -199930;1;0;false;false;;;;;; -199931;1;0;false;false;0;0;0;;; -199932;1;0;false;false;;;;;; -199933;2;0;false;false;0;0;0;;; -199935;3;0;false;false;;;;;; -199938;31;0;false;false;0;0;0;;; -199969;1;0;false;false;;;;;; -199970;10;0;false;false;0;0;0;;; -199980;1;0;false;false;;;;;; -199981;4;1;false;false;127;0;85;;; -199985;2;0;false;false;0;0;0;;; -199987;3;0;false;false;;;;;; -199990;29;0;false;false;0;0;0;;; -200019;1;0;false;false;;;;;; -200020;11;0;false;false;0;0;0;;; -200031;3;0;false;false;;;;;; -200034;25;0;false;false;0;0;0;;; -200059;2;0;false;false;;;;;; -200061;1;0;false;false;0;0;0;;; -200062;2;0;false;false;;;;;; -200064;3;0;false;false;63;95;191;;; -200067;3;0;false;false;;;;;; -200070;1;0;false;false;63;95;191;;; -200071;1;0;false;false;;;;;; -200072;6;0;false;false;63;95;191;;; -200078;1;0;false;false;;;;;; -200079;3;0;false;false;63;95;191;;; -200082;1;0;false;false;;;;;; -200083;11;0;false;false;63;95;191;;; -200094;1;0;false;false;;;;;; -200095;4;0;false;false;63;95;191;;; -200099;1;0;false;false;;;;;; -200100;2;0;false;false;63;95;191;;; -200102;1;0;false;false;;;;;; -200103;3;0;false;false;63;95;191;;; -200106;1;0;false;false;;;;;; -200107;8;0;false;false;63;95;191;;; -200115;1;0;false;false;;;;;; -200116;9;0;false;false;63;95;191;;; -200125;1;0;false;false;;;;;; -200126;2;0;false;false;63;95;191;;; -200128;3;0;false;false;;;;;; -200131;1;0;false;false;63;95;191;;; -200132;1;0;false;false;;;;;; -200133;3;0;false;false;63;95;191;;; -200136;1;0;false;false;;;;;; -200137;9;0;false;false;63;95;191;;; -200146;1;0;false;false;;;;;; -200147;2;0;false;false;63;95;191;;; -200149;1;0;false;false;;;;;; -200150;2;0;false;false;63;95;191;;; -200152;1;0;false;false;;;;;; -200153;6;0;false;false;63;95;191;;; -200159;1;0;false;false;;;;;; -200160;2;0;false;false;63;95;191;;; -200162;1;0;false;false;;;;;; -200163;7;0;false;false;63;95;191;;; -200170;1;0;false;false;;;;;; -200171;2;0;false;false;63;95;191;;; -200173;1;0;false;false;;;;;; -200174;2;0;false;false;63;95;191;;; -200176;1;0;false;false;;;;;; -200177;8;0;false;false;63;95;191;;; -200185;4;0;false;false;;;;;; -200189;1;0;false;false;63;95;191;;; -200190;1;0;false;false;;;;;; -200191;3;0;false;false;63;95;191;;; -200194;1;0;false;false;;;;;; -200195;4;0;false;false;63;95;191;;; -200199;1;0;false;false;;;;;; -200200;4;0;false;false;63;95;191;;; -200204;1;0;false;false;;;;;; -200205;1;0;false;false;63;95;191;;; -200206;1;0;false;false;;;;;; -200207;5;0;false;false;63;95;191;;; -200212;1;0;false;false;;;;;; -200213;7;0;false;false;63;95;191;;; -200220;1;0;false;false;;;;;; -200221;2;0;false;false;63;95;191;;; -200223;1;0;false;false;;;;;; -200224;10;0;false;false;63;95;191;;; -200234;1;0;false;false;;;;;; -200235;4;0;false;false;63;95;191;;; -200239;1;0;false;false;;;;;; -200240;4;0;false;false;63;95;191;;; -200244;1;0;false;false;;;;;; -200245;2;0;false;false;63;95;191;;; -200247;3;0;false;false;;;;;; -200250;1;0;false;false;63;95;191;;; -200251;1;0;false;false;;;;;; -200252;3;0;false;false;63;95;191;;; -200255;1;0;false;false;;;;;; -200256;8;0;false;false;63;95;191;;; -200264;1;0;false;false;;;;;; -200265;4;0;false;false;63;95;191;;; -200269;1;0;false;false;;;;;; -200270;2;0;false;false;63;95;191;;; -200272;1;0;false;false;;;;;; -200273;8;0;false;false;63;95;191;;; -200281;1;0;false;false;;;;;; -200282;2;0;false;false;63;95;191;;; -200284;1;0;false;false;;;;;; -200285;3;0;false;false;63;95;191;;; -200288;1;0;false;false;;;;;; -200289;6;0;false;false;127;127;159;;; -200295;3;0;false;false;63;95;191;;; -200298;7;0;false;false;127;127;159;;; -200305;1;0;false;false;;;;;; -200306;4;0;false;false;63;95;191;;; -200310;3;0;false;false;;;;;; -200313;1;0;false;false;63;95;191;;; -200314;1;0;false;false;;;;;; -200315;2;0;false;false;63;95;191;;; -200317;1;0;false;false;;;;;; -200318;6;0;false;false;127;127;159;;; -200324;4;0;false;false;63;95;191;;; -200328;7;0;false;false;127;127;159;;; -200335;1;0;false;false;63;95;191;;; -200336;1;0;false;false;;;;;; -200337;3;0;false;false;63;95;191;;; -200340;1;0;false;false;;;;;; -200341;8;0;false;false;63;95;191;;; -200349;1;0;false;false;;;;;; -200350;2;0;false;false;63;95;191;;; -200352;1;0;false;false;;;;;; -200353;3;0;false;false;63;95;191;;; -200356;1;0;false;false;;;;;; -200357;8;0;false;false;63;95;191;;; -200365;1;0;false;false;;;;;; -200366;5;0;false;false;63;95;191;;; -200371;3;0;false;false;;;;;; -200374;1;0;false;false;63;95;191;;; -200375;1;0;false;false;;;;;; -200376;9;0;false;false;63;95;191;;; -200385;1;0;false;false;;;;;; -200386;4;0;false;false;63;95;191;;; -200390;1;0;false;false;;;;;; -200391;3;0;false;false;63;95;191;;; -200394;1;0;false;false;;;;;; -200395;9;0;false;false;63;95;191;;; -200404;1;0;false;false;;;;;; -200405;4;0;false;false;63;95;191;;; -200409;1;0;false;false;;;;;; -200410;4;0;false;false;63;95;191;;; -200414;1;0;false;false;;;;;; -200415;4;0;false;false;63;95;191;;; -200419;1;0;false;false;;;;;; -200420;5;0;false;false;63;95;191;;; -200425;1;0;false;false;;;;;; -200426;5;0;false;false;63;95;191;;; -200431;3;0;false;false;;;;;; -200434;1;0;false;false;63;95;191;;; -200435;1;0;false;false;;;;;; -200436;12;0;false;false;63;95;191;;; -200448;1;0;false;false;;;;;; -200449;6;0;false;false;63;95;191;;; -200455;1;0;false;false;;;;;; -200456;2;0;false;false;63;95;191;;; -200458;1;0;false;false;;;;;; -200459;3;0;false;false;63;95;191;;; -200462;1;0;false;false;;;;;; -200463;6;0;false;false;127;127;159;;; -200469;3;0;false;false;63;95;191;;; -200472;7;0;false;false;127;127;159;;; -200479;1;0;false;false;;;;;; -200480;4;0;false;false;63;95;191;;; -200484;1;0;false;false;;;;;; -200485;2;0;false;false;63;95;191;;; -200487;4;0;false;false;;;;;; -200491;1;0;false;false;63;95;191;;; -200492;1;0;false;false;;;;;; -200493;6;0;false;false;127;127;159;;; -200499;5;0;false;false;63;95;191;;; -200504;7;0;false;false;127;127;159;;; -200511;1;0;false;false;63;95;191;;; -200512;1;0;false;false;;;;;; -200513;3;0;false;false;63;95;191;;; -200516;1;0;false;false;;;;;; -200517;8;0;false;false;63;95;191;;; -200525;1;0;false;false;;;;;; -200526;4;0;false;false;63;95;191;;; -200530;1;0;false;false;;;;;; -200531;3;0;false;false;63;95;191;;; -200534;1;0;false;false;;;;;; -200535;2;0;false;false;63;95;191;;; -200537;1;0;false;false;;;;;; -200538;8;0;false;false;63;95;191;;; -200546;3;0;false;false;;;;;; -200549;1;0;false;false;63;95;191;;; -200550;1;0;false;false;;;;;; -200551;3;0;false;false;127;127;159;;; -200554;3;0;false;false;;;;;; -200557;1;0;false;false;63;95;191;;; -200558;1;0;false;false;;;;;; -200559;5;0;false;false;63;95;191;;; -200564;1;0;false;false;;;;;; -200565;3;0;false;false;63;95;191;;; -200568;1;0;false;false;;;;;; -200569;7;0;false;false;63;95;191;;; -200576;1;0;false;false;;;;;; -200577;5;0;false;false;63;95;191;;; -200582;1;0;false;false;;;;;; -200583;2;0;false;false;63;95;191;;; -200585;1;0;false;false;;;;;; -200586;3;0;false;false;63;95;191;;; -200589;1;0;false;false;;;;;; -200590;5;0;false;false;63;95;191;;; -200595;1;0;false;false;;;;;; -200596;2;0;false;false;63;95;191;;; -200598;1;0;false;false;;;;;; -200599;3;0;false;false;63;95;191;;; -200602;1;0;false;false;;;;;; -200603;9;0;false;false;63;95;191;;; -200612;1;0;false;false;;;;;; -200613;9;0;false;false;63;95;191;;; -200622;3;0;false;false;;;;;; -200625;1;0;false;false;63;95;191;;; -200626;1;0;false;false;;;;;; -200627;2;0;false;false;63;95;191;;; -200629;1;0;false;false;;;;;; -200630;8;0;false;false;63;95;191;;; -200638;1;0;false;false;;;;;; -200639;12;0;false;false;63;95;191;;; -200651;1;0;false;false;;;;;; -200652;3;0;false;false;63;95;191;;; -200655;1;0;false;false;;;;;; -200656;7;0;false;false;63;95;191;;; -200663;1;0;false;false;;;;;; -200664;5;0;false;false;63;95;191;;; -200669;1;0;false;false;;;;;; -200670;2;0;false;false;63;95;191;;; -200672;1;0;false;false;;;;;; -200673;3;0;false;false;63;95;191;;; -200676;1;0;false;false;;;;;; -200677;7;0;false;false;63;95;191;;; -200684;1;0;false;false;;;;;; -200685;6;0;false;false;63;95;191;;; -200691;3;0;false;false;;;;;; -200694;1;0;false;false;63;95;191;;; -200695;1;0;false;false;;;;;; -200696;4;0;false;false;63;95;191;;; -200700;1;0;false;false;;;;;; -200701;1;0;false;false;63;95;191;;; -200702;1;0;false;false;;;;;; -200703;6;0;false;false;127;127;159;;; -200709;17;0;false;false;63;95;191;;; -200726;7;0;false;false;127;127;159;;; -200733;1;0;false;false;;;;;; -200734;2;0;false;false;63;95;191;;; -200736;1;0;false;false;;;;;; -200737;4;0;false;false;63;95;191;;; -200741;1;0;false;false;;;;;; -200742;1;0;false;false;63;95;191;;; -200743;1;0;false;false;;;;;; -200744;6;0;false;false;63;95;191;;; -200750;1;0;false;false;;;;;; -200751;4;0;false;false;63;95;191;;; -200755;4;0;false;false;;;;;; -200759;1;0;false;false;63;95;191;;; -200760;1;0;false;false;;;;;; -200761;2;0;false;false;63;95;191;;; -200763;1;0;false;false;;;;;; -200764;3;0;false;false;63;95;191;;; -200767;1;0;false;false;;;;;; -200768;4;0;false;false;63;95;191;;; -200772;1;0;false;false;;;;;; -200773;12;0;false;false;63;95;191;;; -200785;1;0;false;false;;;;;; -200786;2;0;false;false;63;95;191;;; -200788;1;0;false;false;;;;;; -200789;3;0;false;false;63;95;191;;; -200792;1;0;false;false;;;;;; -200793;6;0;false;false;63;95;191;;; -200799;1;0;false;false;;;;;; -200800;4;0;false;false;63;95;191;;; -200804;1;0;false;false;;;;;; -200805;6;0;false;false;63;95;191;;; -200811;1;0;false;false;;;;;; -200812;4;0;false;false;63;95;191;;; -200816;1;0;false;false;;;;;; -200817;7;0;false;false;63;95;191;;; -200824;4;0;false;false;;;;;; -200828;1;0;false;false;63;95;191;;; -200829;1;0;false;false;;;;;; -200830;3;0;false;false;63;95;191;;; -200833;1;0;false;false;;;;;; -200834;4;0;false;false;63;95;191;;; -200838;1;0;false;false;;;;;; -200839;3;0;false;false;63;95;191;;; -200842;1;0;false;false;;;;;; -200843;7;0;false;false;63;95;191;;; -200850;1;0;false;false;;;;;; -200851;5;0;false;false;63;95;191;;; -200856;1;0;false;false;;;;;; -200857;3;0;false;false;63;95;191;;; -200860;1;0;false;false;;;;;; -200861;4;0;false;false;63;95;191;;; -200865;1;0;false;false;;;;;; -200866;8;0;false;false;63;95;191;;; -200874;3;0;false;false;;;;;; -200877;1;0;false;false;63;95;191;;; -200878;1;0;false;false;;;;;; -200879;4;0;false;false;127;127;159;;; -200883;3;0;false;false;;;;;; -200886;1;0;false;false;63;95;191;;; -200887;3;0;false;false;;;;;; -200890;1;0;false;false;63;95;191;;; -200891;1;0;false;false;;;;;; -200892;7;1;false;false;127;159;191;;; -200899;1;0;false;false;63;95;191;;; -200900;1;0;false;false;;;;;; -200901;3;0;false;false;63;95;191;;; -200904;1;0;false;false;;;;;; -200905;1;0;false;false;63;95;191;;; -200906;1;0;false;false;;;;;; -200907;10;0;false;false;63;95;191;;; -200917;1;0;false;false;;;;;; -200918;2;0;false;false;63;95;191;;; -200920;1;0;false;false;;;;;; -200921;3;0;false;false;63;95;191;;; -200924;1;0;false;false;;;;;; -200925;4;0;false;false;63;95;191;;; -200929;1;0;false;false;;;;;; -200930;2;0;false;false;63;95;191;;; -200932;1;0;false;false;;;;;; -200933;4;0;false;false;63;95;191;;; -200937;3;0;false;false;;;;;; -200940;1;0;false;false;63;95;191;;; -200941;1;0;false;false;;;;;; -200942;7;1;false;false;127;159;191;;; -200949;1;0;false;false;63;95;191;;; -200950;1;0;false;false;;;;;; -200951;3;0;false;false;63;95;191;;; -200954;1;0;false;false;;;;;; -200955;1;0;false;false;63;95;191;;; -200956;1;0;false;false;;;;;; -200957;10;0;false;false;63;95;191;;; -200967;1;0;false;false;;;;;; -200968;2;0;false;false;63;95;191;;; -200970;1;0;false;false;;;;;; -200971;3;0;false;false;63;95;191;;; -200974;1;0;false;false;;;;;; -200975;4;0;false;false;63;95;191;;; -200979;1;0;false;false;;;;;; -200980;2;0;false;false;63;95;191;;; -200982;1;0;false;false;;;;;; -200983;4;0;false;false;63;95;191;;; -200987;3;0;false;false;;;;;; -200990;1;0;false;false;63;95;191;;; -200991;1;0;false;false;;;;;; -200992;7;1;false;false;127;159;191;;; -200999;5;0;false;false;63;95;191;;; -201004;1;0;false;false;;;;;; -201005;3;0;false;false;63;95;191;;; -201008;1;0;false;false;;;;;; -201009;5;0;false;false;63;95;191;;; -201014;1;0;false;false;;;;;; -201015;2;0;false;false;63;95;191;;; -201017;1;0;false;false;;;;;; -201018;3;0;false;false;63;95;191;;; -201021;1;0;false;false;;;;;; -201022;4;0;false;false;63;95;191;;; -201026;1;0;false;false;;;;;; -201027;2;0;false;false;63;95;191;;; -201029;1;0;false;false;;;;;; -201030;4;0;false;false;63;95;191;;; -201034;3;0;false;false;;;;;; -201037;1;0;false;false;63;95;191;;; -201038;1;0;false;false;;;;;; -201039;7;1;false;false;127;159;191;;; -201046;6;0;false;false;63;95;191;;; -201052;1;0;false;false;;;;;; -201053;3;0;false;false;63;95;191;;; -201056;1;0;false;false;;;;;; -201057;6;0;false;false;63;95;191;;; -201063;1;0;false;false;;;;;; -201064;2;0;false;false;63;95;191;;; -201066;1;0;false;false;;;;;; -201067;3;0;false;false;63;95;191;;; -201070;1;0;false;false;;;;;; -201071;4;0;false;false;63;95;191;;; -201075;1;0;false;false;;;;;; -201076;2;0;false;false;63;95;191;;; -201078;1;0;false;false;;;;;; -201079;4;0;false;false;63;95;191;;; -201083;3;0;false;false;;;;;; -201086;1;0;false;false;63;95;191;;; -201087;1;0;false;false;;;;;; -201088;7;1;false;false;127;159;191;;; -201095;3;0;false;false;63;95;191;;; -201098;1;0;false;false;;;;;; -201099;6;0;false;false;127;127;159;;; -201105;4;0;false;false;63;95;191;;; -201109;7;0;false;false;127;127;159;;; -201116;1;0;false;false;;;;;; -201117;2;0;false;false;63;95;191;;; -201119;1;0;false;false;;;;;; -201120;8;0;false;false;63;95;191;;; -201128;1;0;false;false;;;;;; -201129;6;0;false;false;63;95;191;;; -201135;1;0;false;false;;;;;; -201136;7;0;false;false;63;95;191;;; -201143;1;0;false;false;;;;;; -201144;3;0;false;false;63;95;191;;; -201147;1;0;false;false;;;;;; -201148;6;0;false;false;127;127;159;;; -201154;5;0;false;false;63;95;191;;; -201159;7;0;false;false;127;127;159;;; -201166;1;0;false;false;;;;;; -201167;9;0;false;false;63;95;191;;; -201176;3;0;false;false;;;;;; -201179;1;0;false;false;63;95;191;;; -201180;3;0;false;false;;;;;; -201183;1;0;false;false;63;95;191;;; -201184;1;0;false;false;;;;;; -201185;11;1;false;false;127;159;191;;; -201196;12;0;false;false;63;95;191;;; -201208;1;0;false;false;;;;;; -201209;4;0;false;false;127;127;159;;; -201213;3;0;false;false;;;;;; -201216;1;0;false;false;63;95;191;;; -201217;4;0;false;false;;;;;; -201221;4;0;false;false;127;127;159;;; -201225;21;0;false;false;63;95;191;;; -201246;1;0;false;false;;;;;; -201247;1;0;false;false;127;127;159;;; -201248;1;0;false;false;;;;;; -201249;2;0;false;false;63;95;191;;; -201251;1;0;false;false;;;;;; -201252;3;0;false;false;63;95;191;;; -201255;1;0;false;false;;;;;; -201256;8;0;false;false;63;95;191;;; -201264;1;0;false;false;;;;;; -201265;3;0;false;false;63;95;191;;; -201268;1;0;false;false;;;;;; -201269;4;0;false;false;63;95;191;;; -201273;1;0;false;false;;;;;; -201274;8;0;false;false;63;95;191;;; -201282;5;0;false;false;127;127;159;;; -201287;3;0;false;false;;;;;; -201290;1;0;false;false;63;95;191;;; -201291;4;0;false;false;;;;;; -201295;4;0;false;false;127;127;159;;; -201299;27;0;false;false;63;95;191;;; -201326;1;0;false;false;;;;;; -201327;1;0;false;false;127;127;159;;; -201328;1;0;false;false;;;;;; -201329;2;0;false;false;63;95;191;;; -201331;1;0;false;false;;;;;; -201332;3;0;false;false;63;95;191;;; -201335;1;0;false;false;;;;;; -201336;6;0;false;false;63;95;191;;; -201342;1;0;false;false;;;;;; -201343;4;0;false;false;63;95;191;;; -201347;1;0;false;false;;;;;; -201348;3;0;false;false;63;95;191;;; -201351;1;0;false;false;;;;;; -201352;6;0;false;false;63;95;191;;; -201358;1;0;false;false;;;;;; -201359;4;0;false;false;63;95;191;;; -201363;1;0;false;false;;;;;; -201364;7;0;false;false;63;95;191;;; -201371;1;0;false;false;;;;;; -201372;3;0;false;false;63;95;191;;; -201375;1;0;false;false;;;;;; -201376;8;0;false;false;63;95;191;;; -201384;5;0;false;false;127;127;159;;; -201389;3;0;false;false;;;;;; -201392;1;0;false;false;63;95;191;;; -201393;1;0;false;false;;;;;; -201394;5;0;false;false;127;127;159;;; -201399;3;0;false;false;;;;;; -201402;1;0;false;false;63;95;191;;; -201403;3;0;false;false;;;;;; -201406;1;0;false;false;63;95;191;;; -201407;1;0;false;false;;;;;; -201408;5;1;false;false;127;159;191;;; -201413;14;0;false;false;63;95;191;;; -201427;3;0;false;false;;;;;; -201430;2;0;false;false;63;95;191;;; -201432;2;0;false;false;;;;;; -201434;6;1;false;false;127;0;85;;; -201440;1;0;false;false;;;;;; -201441;4;1;false;false;127;0;85;;; -201445;1;0;false;false;;;;;; -201446;7;0;false;false;0;0;0;;; -201453;3;1;false;false;127;0;85;;; -201456;1;0;false;false;;;;;; -201457;2;0;false;false;0;0;0;;; -201459;1;0;false;false;;;;;; -201460;3;1;false;false;127;0;85;;; -201463;1;0;false;false;;;;;; -201464;2;0;false;false;0;0;0;;; -201466;1;0;false;false;;;;;; -201467;3;1;false;false;127;0;85;;; -201470;1;0;false;false;;;;;; -201471;6;0;false;false;0;0;0;;; -201477;1;0;false;false;;;;;; -201478;3;1;false;false;127;0;85;;; -201481;1;0;false;false;;;;;; -201482;7;0;false;false;0;0;0;;; -201489;1;0;false;false;;;;;; -201490;7;1;false;false;127;0;85;;; -201497;1;0;false;false;;;;;; -201498;4;0;false;false;0;0;0;;; -201502;1;0;false;false;;;;;; -201503;1;0;false;false;0;0;0;;; -201504;3;0;false;false;;;;;; -201507;5;1;false;false;127;0;85;;; -201512;10;0;false;false;0;0;0;;; -201522;1;0;false;false;;;;;; -201523;2;0;false;false;0;0;0;;; -201525;1;0;false;false;;;;;; -201526;6;0;false;false;0;0;0;;; -201532;1;0;false;false;;;;;; -201533;7;0;false;false;0;0;0;;; -201540;1;0;false;false;;;;;; -201541;5;0;false;false;0;0;0;;; -201546;3;0;false;false;;;;;; -201549;2;1;false;false;127;0;85;;; -201551;1;0;false;false;;;;;; -201552;7;0;false;false;0;0;0;;; -201559;1;0;false;false;;;;;; -201560;1;0;false;false;0;0;0;;; -201561;1;0;false;false;;;;;; -201562;2;0;false;false;0;0;0;;; -201564;1;0;false;false;;;;;; -201565;1;0;false;false;0;0;0;;; -201566;4;0;false;false;;;;;; -201570;3;1;false;false;127;0;85;;; -201573;1;0;false;false;;;;;; -201574;9;0;false;false;0;0;0;;; -201583;1;0;false;false;;;;;; -201584;1;0;false;false;0;0;0;;; -201585;1;0;false;false;;;;;; -201586;23;0;false;false;0;0;0;;; -201609;4;0;false;false;;;;;; -201613;3;1;false;false;127;0;85;;; -201616;1;0;false;false;;;;;; -201617;9;0;false;false;0;0;0;;; -201626;1;0;false;false;;;;;; -201627;1;0;false;false;0;0;0;;; -201628;1;0;false;false;;;;;; -201629;14;0;false;false;0;0;0;;; -201643;1;0;false;false;;;;;; -201644;1;0;false;false;0;0;0;;; -201645;1;0;false;false;;;;;; -201646;2;0;false;false;0;0;0;;; -201648;1;0;false;false;;;;;; -201649;1;0;false;false;0;0;0;;; -201650;1;0;false;false;;;;;; -201651;11;0;false;false;0;0;0;;; -201662;4;0;false;false;;;;;; -201666;3;1;false;false;127;0;85;;; -201669;1;0;false;false;;;;;; -201670;7;0;false;false;0;0;0;;; -201677;1;0;false;false;;;;;; -201678;1;0;false;false;0;0;0;;; -201679;1;0;false;false;;;;;; -201680;9;0;false;false;0;0;0;;; -201689;1;0;false;false;;;;;; -201690;1;0;false;false;0;0;0;;; -201691;1;0;false;false;;;;;; -201692;26;0;false;false;0;0;0;;; -201718;1;0;false;false;;;;;; -201719;12;0;false;false;0;0;0;;; -201731;4;0;false;false;;;;;; -201735;3;1;false;false;127;0;85;;; -201738;1;0;false;false;;;;;; -201739;10;0;false;false;0;0;0;;; -201749;8;0;false;false;;;;;; -201757;44;0;false;false;63;127;95;;; -201801;2;0;false;false;;;;;; -201803;9;0;false;false;0;0;0;;; -201812;1;0;false;false;;;;;; -201813;1;0;false;false;0;0;0;;; -201814;1;0;false;false;;;;;; -201815;19;0;false;false;0;0;0;;; -201834;1;0;false;false;;;;;; -201835;11;0;false;false;0;0;0;;; -201846;4;0;false;false;;;;;; -201850;9;0;false;false;0;0;0;;; -201859;1;0;false;false;;;;;; -201860;1;0;false;false;0;0;0;;; -201861;1;0;false;false;;;;;; -201862;17;0;false;false;0;0;0;;; -201879;1;0;false;false;;;;;; -201880;10;0;false;false;0;0;0;;; -201890;1;0;false;false;;;;;; -201891;1;0;false;false;0;0;0;;; -201892;1;0;false;false;;;;;; -201893;10;0;false;false;0;0;0;;; -201903;4;0;false;false;;;;;; -201907;26;0;false;false;0;0;0;;; -201933;1;0;false;false;;;;;; -201934;10;0;false;false;0;0;0;;; -201944;1;0;false;false;;;;;; -201945;4;1;false;false;127;0;85;;; -201949;2;0;false;false;0;0;0;;; -201951;4;0;false;false;;;;;; -201955;37;0;false;false;63;127;95;;; -201992;2;0;false;false;;;;;; -201994;9;0;false;false;0;0;0;;; -202003;1;0;false;false;;;;;; -202004;1;0;false;false;0;0;0;;; -202005;1;0;false;false;;;;;; -202006;23;0;false;false;0;0;0;;; -202029;1;0;false;false;;;;;; -202030;1;0;false;false;0;0;0;;; -202031;1;0;false;false;;;;;; -202032;8;0;false;false;0;0;0;;; -202040;1;0;false;false;;;;;; -202041;1;0;false;false;0;0;0;;; -202042;1;0;false;false;;;;;; -202043;2;0;false;false;0;0;0;;; -202045;4;0;false;false;;;;;; -202049;29;0;false;false;0;0;0;;; -202078;1;0;false;false;;;;;; -202079;11;0;false;false;0;0;0;;; -202090;4;0;false;false;;;;;; -202094;25;0;false;false;0;0;0;;; -202119;3;0;false;false;;;;;; -202122;1;0;false;false;0;0;0;;; -202123;2;0;false;false;;;;;; -202125;1;0;false;false;0;0;0;;; -202126;2;0;false;false;;;;;; -202128;3;0;false;false;63;95;191;;; -202131;4;0;false;false;;;;;; -202135;1;0;false;false;63;95;191;;; -202136;1;0;false;false;;;;;; -202137;7;0;false;false;63;95;191;;; -202144;1;0;false;false;;;;;; -202145;1;0;false;false;63;95;191;;; -202146;1;0;false;false;;;;;; -202147;4;0;false;false;63;95;191;;; -202151;1;0;false;false;;;;;; -202152;5;0;false;false;63;95;191;;; -202157;1;0;false;false;;;;;; -202158;2;0;false;false;63;95;191;;; -202160;1;0;false;false;;;;;; -202161;3;0;false;false;63;95;191;;; -202164;1;0;false;false;;;;;; -202165;9;0;false;false;63;95;191;;; -202174;1;0;false;false;;;;;; -202175;5;0;false;false;63;95;191;;; -202180;3;0;false;false;;;;;; -202183;1;0;false;false;63;95;191;;; -202184;1;0;false;false;;;;;; -202185;3;0;false;false;127;127;159;;; -202188;3;0;false;false;;;;;; -202191;1;0;false;false;63;95;191;;; -202192;3;0;false;false;;;;;; -202195;1;0;false;false;63;95;191;;; -202196;1;0;false;false;;;;;; -202197;7;1;false;false;127;159;191;;; -202204;9;0;false;false;63;95;191;;; -202213;1;0;false;false;;;;;; -202214;5;0;false;false;63;95;191;;; -202219;1;0;false;false;;;;;; -202220;4;0;false;false;63;95;191;;; -202224;1;0;false;false;;;;;; -202225;2;0;false;false;63;95;191;;; -202227;1;0;false;false;;;;;; -202228;6;0;false;false;63;95;191;;; -202234;1;0;false;false;;;;;; -202235;2;0;false;false;63;95;191;;; -202237;1;0;false;false;;;;;; -202238;3;0;false;false;63;95;191;;; -202241;1;0;false;false;;;;;; -202242;9;0;false;false;63;95;191;;; -202251;1;0;false;false;;;;;; -202252;6;0;false;false;63;95;191;;; -202258;3;0;false;false;;;;;; -202261;1;0;false;false;63;95;191;;; -202262;1;0;false;false;;;;;; -202263;7;1;false;false;127;159;191;;; -202270;17;0;false;false;63;95;191;;; -202287;1;0;false;false;;;;;; -202288;6;0;false;false;63;95;191;;; -202294;1;0;false;false;;;;;; -202295;2;0;false;false;63;95;191;;; -202297;1;0;false;false;;;;;; -202298;9;0;false;false;63;95;191;;; -202307;1;0;false;false;;;;;; -202308;2;0;false;false;63;95;191;;; -202310;1;0;false;false;;;;;; -202311;5;0;false;false;63;95;191;;; -202316;1;0;false;false;;;;;; -202317;9;0;false;false;63;95;191;;; -202326;3;0;false;false;;;;;; -202329;1;0;false;false;63;95;191;;; -202330;1;0;false;false;;;;;; -202331;7;1;false;false;127;159;191;;; -202338;8;0;false;false;63;95;191;;; -202346;1;0;false;false;;;;;; -202347;4;0;false;false;63;95;191;;; -202351;1;0;false;false;;;;;; -202352;4;0;false;false;63;95;191;;; -202356;1;0;false;false;;;;;; -202357;2;0;false;false;63;95;191;;; -202359;1;0;false;false;;;;;; -202360;6;0;false;false;63;95;191;;; -202366;3;0;false;false;;;;;; -202369;1;0;false;false;63;95;191;;; -202370;1;0;false;false;;;;;; -202371;7;1;false;false;127;159;191;;; -202378;9;0;false;false;63;95;191;;; -202387;1;0;false;false;;;;;; -202388;6;0;false;false;63;95;191;;; -202394;1;0;false;false;;;;;; -202395;2;0;false;false;63;95;191;;; -202397;1;0;false;false;;;;;; -202398;3;0;false;false;63;95;191;;; -202401;1;0;false;false;;;;;; -202402;4;0;false;false;63;95;191;;; -202406;1;0;false;false;;;;;; -202407;5;0;false;false;63;95;191;;; -202412;1;0;false;false;;;;;; -202413;9;0;false;false;63;95;191;;; -202422;1;0;false;false;;;;;; -202423;6;0;false;false;63;95;191;;; -202429;1;0;false;false;;;;;; -202430;4;0;false;false;63;95;191;;; -202434;3;0;false;false;;;;;; -202437;1;0;false;false;63;95;191;;; -202438;1;0;false;false;;;;;; -202439;7;1;false;false;127;159;191;;; -202446;15;0;false;false;63;95;191;;; -202461;1;0;false;false;;;;;; -202462;10;0;false;false;63;95;191;;; -202472;1;0;false;false;;;;;; -202473;3;0;false;false;63;95;191;;; -202476;1;0;false;false;;;;;; -202477;10;0;false;false;63;95;191;;; -202487;1;0;false;false;;;;;; -202488;2;0;false;false;63;95;191;;; -202490;1;0;false;false;;;;;; -202491;12;0;false;false;63;95;191;;; -202503;3;0;false;false;;;;;; -202506;1;0;false;false;63;95;191;;; -202507;2;0;false;false;;;;;; -202509;3;0;false;false;63;95;191;;; -202512;1;0;false;false;;;;;; -202513;9;0;false;false;63;95;191;;; -202522;1;0;false;false;;;;;; -202523;6;0;false;false;63;95;191;;; -202529;1;0;false;false;;;;;; -202530;6;0;false;false;63;95;191;;; -202536;1;0;false;false;;;;;; -202537;2;0;false;false;63;95;191;;; -202539;1;0;false;false;;;;;; -202540;3;0;false;false;63;95;191;;; -202543;1;0;false;false;;;;;; -202544;6;0;false;false;63;95;191;;; -202550;1;0;false;false;;;;;; -202551;5;0;false;false;63;95;191;;; -202556;1;0;false;false;;;;;; -202557;8;0;false;false;63;95;191;;; -202565;1;0;false;false;;;;;; -202566;3;0;false;false;63;95;191;;; -202569;4;0;false;false;;;;;; -202573;1;0;false;false;63;95;191;;; -202574;2;0;false;false;;;;;; -202576;4;0;false;false;63;95;191;;; -202580;1;0;false;false;;;;;; -202581;9;0;false;false;63;95;191;;; -202590;1;0;false;false;;;;;; -202591;2;0;false;false;63;95;191;;; -202593;1;0;false;false;;;;;; -202594;1;0;false;false;63;95;191;;; -202595;1;0;false;false;;;;;; -202596;4;0;false;false;63;95;191;;; -202600;1;0;false;false;;;;;; -202601;6;0;false;false;63;95;191;;; -202607;1;0;false;false;;;;;; -202608;3;0;false;false;63;95;191;;; -202611;1;0;false;false;;;;;; -202612;6;0;false;false;63;95;191;;; -202618;1;0;false;false;;;;;; -202619;4;0;false;false;63;95;191;;; -202623;1;0;false;false;;;;;; -202624;2;0;false;false;63;95;191;;; -202626;1;0;false;false;;;;;; -202627;8;0;false;false;63;95;191;;; -202635;1;0;false;false;;;;;; -202636;3;0;false;false;63;95;191;;; -202639;4;0;false;false;;;;;; -202643;1;0;false;false;63;95;191;;; -202644;2;0;false;false;;;;;; -202646;4;0;false;false;63;95;191;;; -202650;1;0;false;false;;;;;; -202651;2;0;false;false;63;95;191;;; -202653;1;0;false;false;;;;;; -202654;7;0;false;false;63;95;191;;; -202661;1;0;false;false;;;;;; -202662;3;0;false;false;63;95;191;;; -202665;1;0;false;false;;;;;; -202666;3;0;false;false;63;95;191;;; -202669;1;0;false;false;;;;;; -202670;3;0;false;false;63;95;191;;; -202673;1;0;false;false;;;;;; -202674;2;0;false;false;63;95;191;;; -202676;1;0;false;false;;;;;; -202677;3;0;false;false;63;95;191;;; -202680;1;0;false;false;;;;;; -202681;5;0;false;false;63;95;191;;; -202686;1;0;false;false;;;;;; -202687;6;0;false;false;63;95;191;;; -202693;1;0;false;false;;;;;; -202694;2;0;false;false;63;95;191;;; -202696;1;0;false;false;;;;;; -202697;3;0;false;false;63;95;191;;; -202700;1;0;false;false;;;;;; -202701;7;0;false;false;63;95;191;;; -202708;3;0;false;false;;;;;; -202711;1;0;false;false;63;95;191;;; -202712;2;0;false;false;;;;;; -202714;10;0;false;false;63;95;191;;; -202724;1;0;false;false;;;;;; -202725;3;0;false;false;63;95;191;;; -202728;1;0;false;false;;;;;; -202729;10;0;false;false;63;95;191;;; -202739;1;0;false;false;;;;;; -202740;8;0;false;false;63;95;191;;; -202748;1;0;false;false;;;;;; -202749;7;0;false;false;63;95;191;;; -202756;1;0;false;false;;;;;; -202757;12;0;false;false;63;95;191;;; -202769;1;0;false;false;;;;;; -202770;3;0;false;false;63;95;191;;; -202773;4;0;false;false;;;;;; -202777;1;0;false;false;63;95;191;;; -202778;2;0;false;false;;;;;; -202780;6;0;false;false;63;95;191;;; -202786;1;0;false;false;;;;;; -202787;6;0;false;false;63;95;191;;; -202793;3;0;false;false;;;;;; -202796;2;0;false;false;63;95;191;;; -202798;2;0;false;false;;;;;; -202800;4;1;false;false;127;0;85;;; -202804;1;0;false;false;;;;;; -202805;12;0;false;false;0;0;0;;; -202817;3;1;false;false;127;0;85;;; -202820;1;0;false;false;;;;;; -202821;10;0;false;false;0;0;0;;; -202831;1;0;false;false;;;;;; -202832;3;1;false;false;127;0;85;;; -202835;1;0;false;false;;;;;; -202836;18;0;false;false;0;0;0;;; -202854;1;0;false;false;;;;;; -202855;3;1;false;false;127;0;85;;; -202858;1;0;false;false;;;;;; -202859;9;0;false;false;0;0;0;;; -202868;1;0;false;false;;;;;; -202869;3;1;false;false;127;0;85;;; -202872;1;0;false;false;;;;;; -202873;10;0;false;false;0;0;0;;; -202883;1;0;false;false;;;;;; -202884;7;1;false;false;127;0;85;;; -202891;1;0;false;false;;;;;; -202892;16;0;false;false;0;0;0;;; -202908;1;0;false;false;;;;;; -202909;1;0;false;false;0;0;0;;; -202910;3;0;false;false;;;;;; -202913;6;0;false;false;0;0;0;;; -202919;1;0;false;false;;;;;; -202920;4;0;false;false;0;0;0;;; -202924;1;0;false;false;;;;;; -202925;1;0;false;false;0;0;0;;; -202926;1;0;false;false;;;;;; -202927;27;0;false;false;0;0;0;;; -202954;3;0;false;false;;;;;; -202957;3;1;false;false;127;0;85;;; -202960;1;0;false;false;;;;;; -202961;9;0;false;false;0;0;0;;; -202970;1;0;false;false;;;;;; -202971;1;0;false;false;0;0;0;;; -202972;1;0;false;false;;;;;; -202973;8;0;false;false;0;0;0;;; -202981;1;0;false;false;;;;;; -202982;1;0;false;false;0;0;0;;; -202983;1;0;false;false;;;;;; -202984;9;0;false;false;0;0;0;;; -202993;1;0;false;false;;;;;; -202994;1;0;false;false;0;0;0;;; -202995;1;0;false;false;;;;;; -202996;2;0;false;false;0;0;0;;; -202998;3;0;false;false;;;;;; -203001;3;1;false;false;127;0;85;;; -203004;1;0;false;false;;;;;; -203005;8;0;false;false;0;0;0;;; -203013;1;0;false;false;;;;;; -203014;12;0;false;false;0;0;0;;; -203026;3;0;false;false;;;;;; -203029;3;1;false;false;127;0;85;;; -203032;1;0;false;false;;;;;; -203033;10;0;false;false;0;0;0;;; -203043;1;0;false;false;;;;;; -203044;1;0;false;false;0;0;0;;; -203045;1;0;false;false;;;;;; -203046;35;0;false;false;0;0;0;;; -203081;3;0;false;false;;;;;; -203084;7;1;false;false;127;0;85;;; -203091;1;0;false;false;;;;;; -203092;15;0;false;false;0;0;0;;; -203107;3;0;false;false;;;;;; -203110;9;0;false;false;0;0;0;;; -203119;1;0;false;false;;;;;; -203120;10;0;false;false;0;0;0;;; -203130;1;0;false;false;;;;;; -203131;1;0;false;false;0;0;0;;; -203132;1;0;false;false;;;;;; -203133;16;0;false;false;0;0;0;;; -203149;6;0;false;false;;;;;; -203155;14;0;false;false;0;0;0;;; -203169;1;0;false;false;;;;;; -203170;1;0;false;false;0;0;0;;; -203171;1;0;false;false;;;;;; -203172;12;0;false;false;0;0;0;;; -203184;1;0;false;false;;;;;; -203185;1;0;false;false;0;0;0;;; -203186;1;0;false;false;;;;;; -203187;19;0;false;false;0;0;0;;; -203206;1;0;false;false;;;;;; -203207;2;0;false;false;0;0;0;;; -203209;1;0;false;false;;;;;; -203210;1;0;false;false;0;0;0;;; -203211;1;0;false;false;;;;;; -203212;2;0;false;false;0;0;0;;; -203214;1;0;false;false;;;;;; -203215;8;0;false;false;0;0;0;;; -203223;1;0;false;false;;;;;; -203224;1;0;false;false;0;0;0;;; -203225;1;0;false;false;;;;;; -203226;11;0;false;false;0;0;0;;; -203237;3;0;false;false;;;;;; -203240;64;0;false;false;63;127;95;;; -203304;1;0;false;false;;;;;; -203305;62;0;false;false;63;127;95;;; -203367;1;0;false;false;;;;;; -203368;2;1;false;false;127;0;85;;; -203370;1;0;false;false;;;;;; -203371;16;0;false;false;0;0;0;;; -203387;1;0;false;false;;;;;; -203388;2;0;false;false;0;0;0;;; -203390;1;0;false;false;;;;;; -203391;9;0;false;false;0;0;0;;; -203400;1;0;false;false;;;;;; -203401;1;0;false;false;0;0;0;;; -203402;1;0;false;false;;;;;; -203403;10;0;false;false;0;0;0;;; -203413;1;0;false;false;;;;;; -203414;2;0;false;false;0;0;0;;; -203416;1;0;false;false;;;;;; -203417;14;0;false;false;0;0;0;;; -203431;1;0;false;false;;;;;; -203432;1;0;false;false;0;0;0;;; -203433;4;0;false;false;;;;;; -203437;14;0;false;false;0;0;0;;; -203451;1;0;false;false;;;;;; -203452;1;0;false;false;0;0;0;;; -203453;1;0;false;false;;;;;; -203454;4;1;false;false;127;0;85;;; -203458;1;0;false;false;0;0;0;;; -203459;3;0;false;false;;;;;; -203462;1;0;false;false;0;0;0;;; -203463;4;0;false;false;;;;;; -203467;10;0;false;false;0;0;0;;; -203477;1;0;false;false;;;;;; -203478;6;0;false;false;0;0;0;;; -203484;1;0;false;false;;;;;; -203485;1;0;false;false;0;0;0;;; -203486;1;0;false;false;;;;;; -203487;28;0;false;false;0;0;0;;; -203515;1;0;false;false;;;;;; -203516;12;0;false;false;0;0;0;;; -203528;3;0;false;false;;;;;; -203531;9;0;false;false;0;0;0;;; -203540;1;0;false;false;;;;;; -203541;4;0;false;false;0;0;0;;; -203545;1;0;false;false;;;;;; -203546;1;0;false;false;0;0;0;;; -203547;1;0;false;false;;;;;; -203548;35;0;false;false;0;0;0;;; -203583;1;0;false;false;;;;;; -203584;19;0;false;false;0;0;0;;; -203603;1;0;false;false;;;;;; -203604;14;0;false;false;0;0;0;;; -203618;1;0;false;false;;;;;; -203619;1;0;false;false;0;0;0;;; -203620;1;0;false;false;;;;;; -203621;3;0;false;false;0;0;0;;; -203624;3;0;false;false;;;;;; -203627;35;0;false;false;0;0;0;;; -203662;3;0;false;false;;;;;; -203665;6;0;false;false;0;0;0;;; -203671;1;0;false;false;;;;;; -203672;2;0;false;false;0;0;0;;; -203674;1;0;false;false;;;;;; -203675;23;0;false;false;0;0;0;;; -203698;3;0;false;false;;;;;; -203701;27;0;false;false;0;0;0;;; -203728;3;0;false;false;;;;;; -203731;7;0;false;false;0;0;0;;; -203738;1;0;false;false;;;;;; -203739;1;0;false;false;0;0;0;;; -203740;1;0;false;false;;;;;; -203741;9;0;false;false;0;0;0;;; -203750;1;0;false;false;;;;;; -203751;1;0;false;false;0;0;0;;; -203752;1;0;false;false;;;;;; -203753;10;0;false;false;0;0;0;;; -203763;1;0;false;false;;;;;; -203764;1;0;false;false;0;0;0;;; -203765;1;0;false;false;;;;;; -203766;21;0;false;false;0;0;0;;; -203787;3;0;false;false;;;;;; -203790;11;0;false;false;0;0;0;;; -203801;1;0;false;false;;;;;; -203802;1;0;false;false;0;0;0;;; -203803;1;0;false;false;;;;;; -203804;14;0;false;false;0;0;0;;; -203818;1;0;false;false;;;;;; -203819;1;0;false;false;0;0;0;;; -203820;1;0;false;false;;;;;; -203821;16;0;false;false;0;0;0;;; -203837;1;0;false;false;;;;;; -203838;1;0;false;false;0;0;0;;; -203839;1;0;false;false;;;;;; -203840;10;0;false;false;0;0;0;;; -203850;1;0;false;false;;;;;; -203851;1;0;false;false;0;0;0;;; -203852;1;0;false;false;;;;;; -203853;11;0;false;false;0;0;0;;; -203864;1;0;false;false;;;;;; -203865;1;0;false;false;0;0;0;;; -203866;1;0;false;false;;;;;; -203867;11;0;false;false;0;0;0;;; -203878;3;0;false;false;;;;;; -203881;12;0;false;false;0;0;0;;; -203893;1;0;false;false;;;;;; -203894;8;0;false;false;0;0;0;;; -203902;1;0;false;false;;;;;; -203903;12;0;false;false;0;0;0;;; -203915;1;0;false;false;;;;;; -203916;11;0;false;false;0;0;0;;; -203927;1;0;false;false;;;;;; -203928;17;0;false;false;0;0;0;;; -203945;6;0;false;false;;;;;; -203951;60;0;false;false;63;127;95;;; -204011;1;0;false;false;;;;;; -204012;2;1;false;false;127;0;85;;; -204014;1;0;false;false;;;;;; -204015;10;0;false;false;0;0;0;;; -204025;1;0;false;false;;;;;; -204026;1;0;false;false;0;0;0;;; -204027;1;0;false;false;;;;;; -204028;2;0;false;false;0;0;0;;; -204030;1;0;false;false;;;;;; -204031;1;0;false;false;0;0;0;;; -204032;4;0;false;false;;;;;; -204036;10;0;false;false;0;0;0;;; -204046;1;0;false;false;;;;;; -204047;1;0;false;false;0;0;0;;; -204048;1;0;false;false;;;;;; -204049;34;0;false;false;0;0;0;;; -204083;4;0;false;false;;;;;; -204087;3;1;false;false;127;0;85;;; -204090;1;0;false;false;;;;;; -204091;16;0;false;false;0;0;0;;; -204107;1;0;false;false;;;;;; -204108;1;0;false;false;0;0;0;;; -204109;1;0;false;false;;;;;; -204110;9;0;false;false;0;0;0;;; -204119;1;0;false;false;;;;;; -204120;1;0;false;false;0;0;0;;; -204121;1;0;false;false;;;;;; -204122;11;0;false;false;0;0;0;;; -204133;5;0;false;false;;;;;; -204138;46;0;false;false;63;127;95;;; -204184;2;0;false;false;;;;;; -204186;2;1;false;false;127;0;85;;; -204188;1;0;false;false;;;;;; -204189;17;0;false;false;0;0;0;;; -204206;1;0;false;false;;;;;; -204207;1;0;false;false;0;0;0;;; -204208;1;0;false;false;;;;;; -204209;2;0;false;false;0;0;0;;; -204211;1;0;false;false;;;;;; -204212;1;0;false;false;0;0;0;;; -204213;5;0;false;false;;;;;; -204218;4;0;false;false;0;0;0;;; -204222;1;0;false;false;;;;;; -204223;1;0;false;false;0;0;0;;; -204224;1;0;false;false;;;;;; -204225;26;0;false;false;0;0;0;;; -204251;5;0;false;false;;;;;; -204256;63;0;false;false;63;127;95;;; -204319;3;0;false;false;;;;;; -204322;62;0;false;false;63;127;95;;; -204384;3;0;false;false;;;;;; -204387;2;1;false;false;127;0;85;;; -204389;1;0;false;false;;;;;; -204390;16;0;false;false;0;0;0;;; -204406;1;0;false;false;;;;;; -204407;2;0;false;false;0;0;0;;; -204409;1;0;false;false;;;;;; -204410;16;0;false;false;0;0;0;;; -204426;1;0;false;false;;;;;; -204427;2;0;false;false;0;0;0;;; -204429;1;0;false;false;;;;;; -204430;14;0;false;false;0;0;0;;; -204444;1;0;false;false;;;;;; -204445;1;0;false;false;0;0;0;;; -204446;6;0;false;false;;;;;; -204452;14;0;false;false;0;0;0;;; -204466;1;0;false;false;;;;;; -204467;1;0;false;false;0;0;0;;; -204468;1;0;false;false;;;;;; -204469;4;1;false;false;127;0;85;;; -204473;1;0;false;false;0;0;0;;; -204474;5;0;false;false;;;;;; -204479;1;0;false;false;0;0;0;;; -204480;5;0;false;false;;;;;; -204485;4;0;false;false;0;0;0;;; -204489;1;0;false;false;;;;;; -204490;1;0;false;false;0;0;0;;; -204491;1;0;false;false;;;;;; -204492;26;0;false;false;0;0;0;;; -204518;5;0;false;false;;;;;; -204523;6;0;false;false;0;0;0;;; -204529;1;0;false;false;;;;;; -204530;1;0;false;false;0;0;0;;; -204531;1;0;false;false;;;;;; -204532;28;0;false;false;0;0;0;;; -204560;1;0;false;false;;;;;; -204561;12;0;false;false;0;0;0;;; -204573;5;0;false;false;;;;;; -204578;4;0;false;false;0;0;0;;; -204582;1;0;false;false;;;;;; -204583;1;0;false;false;0;0;0;;; -204584;1;0;false;false;;;;;; -204585;19;0;false;false;0;0;0;;; -204604;1;0;false;false;;;;;; -204605;16;0;false;false;0;0;0;;; -204621;1;0;false;false;;;;;; -204622;1;0;false;false;0;0;0;;; -204623;1;0;false;false;;;;;; -204624;3;0;false;false;0;0;0;;; -204627;5;0;false;false;;;;;; -204632;35;0;false;false;0;0;0;;; -204667;5;0;false;false;;;;;; -204672;6;0;false;false;0;0;0;;; -204678;1;0;false;false;;;;;; -204679;2;0;false;false;0;0;0;;; -204681;1;0;false;false;;;;;; -204682;23;0;false;false;0;0;0;;; -204705;5;0;false;false;;;;;; -204710;27;0;false;false;0;0;0;;; -204737;5;0;false;false;;;;;; -204742;7;0;false;false;0;0;0;;; -204749;1;0;false;false;;;;;; -204750;1;0;false;false;0;0;0;;; -204751;1;0;false;false;;;;;; -204752;8;0;false;false;0;0;0;;; -204760;1;0;false;false;;;;;; -204761;1;0;false;false;0;0;0;;; -204762;1;0;false;false;;;;;; -204763;10;0;false;false;0;0;0;;; -204773;1;0;false;false;;;;;; -204774;1;0;false;false;0;0;0;;; -204775;1;0;false;false;;;;;; -204776;21;0;false;false;0;0;0;;; -204797;5;0;false;false;;;;;; -204802;11;0;false;false;0;0;0;;; -204813;1;0;false;false;;;;;; -204814;1;0;false;false;0;0;0;;; -204815;1;0;false;false;;;;;; -204816;14;0;false;false;0;0;0;;; -204830;1;0;false;false;;;;;; -204831;1;0;false;false;0;0;0;;; -204832;1;0;false;false;;;;;; -204833;16;0;false;false;0;0;0;;; -204849;1;0;false;false;;;;;; -204850;1;0;false;false;0;0;0;;; -204851;1;0;false;false;;;;;; -204852;10;0;false;false;0;0;0;;; -204862;1;0;false;false;;;;;; -204863;1;0;false;false;0;0;0;;; -204864;1;0;false;false;;;;;; -204865;11;0;false;false;0;0;0;;; -204876;1;0;false;false;;;;;; -204877;1;0;false;false;0;0;0;;; -204878;1;0;false;false;;;;;; -204879;11;0;false;false;0;0;0;;; -204890;5;0;false;false;;;;;; -204895;12;0;false;false;0;0;0;;; -204907;1;0;false;false;;;;;; -204908;8;0;false;false;0;0;0;;; -204916;1;0;false;false;;;;;; -204917;12;0;false;false;0;0;0;;; -204929;1;0;false;false;;;;;; -204930;11;0;false;false;0;0;0;;; -204941;1;0;false;false;;;;;; -204942;17;0;false;false;0;0;0;;; -204959;4;0;false;false;;;;;; -204963;1;0;false;false;0;0;0;;; -204964;3;0;false;false;;;;;; -204967;1;0;false;false;0;0;0;;; -204968;2;0;false;false;;;;;; -204970;1;0;false;false;0;0;0;;; -204971;2;0;false;false;;;;;; -204973;3;0;false;false;63;95;191;;; -204976;3;0;false;false;;;;;; -204979;1;0;false;false;63;95;191;;; -204980;1;0;false;false;;;;;; -204981;5;0;false;false;63;95;191;;; -204986;1;0;false;false;;;;;; -204987;3;0;false;false;63;95;191;;; -204990;1;0;false;false;;;;;; -204991;6;0;false;false;63;95;191;;; -204997;1;0;false;false;;;;;; -204998;2;0;false;false;63;95;191;;; -205000;1;0;false;false;;;;;; -205001;7;0;false;false;63;95;191;;; -205008;1;0;false;false;;;;;; -205009;1;0;false;false;63;95;191;;; -205010;1;0;false;false;;;;;; -205011;4;0;false;false;63;95;191;;; -205015;1;0;false;false;;;;;; -205016;7;0;false;false;63;95;191;;; -205023;3;0;false;false;;;;;; -205026;1;0;false;false;63;95;191;;; -205027;1;0;false;false;;;;;; -205028;3;0;false;false;63;95;191;;; -205031;1;0;false;false;;;;;; -205032;8;0;false;false;63;95;191;;; -205040;1;0;false;false;;;;;; -205041;3;0;false;false;63;95;191;;; -205044;1;0;false;false;;;;;; -205045;9;0;false;false;63;95;191;;; -205054;1;0;false;false;;;;;; -205055;2;0;false;false;63;95;191;;; -205057;1;0;false;false;;;;;; -205058;4;0;false;false;63;95;191;;; -205062;1;0;false;false;;;;;; -205063;2;0;false;false;63;95;191;;; -205065;1;0;false;false;;;;;; -205066;10;0;false;false;63;95;191;;; -205076;3;0;false;false;;;;;; -205079;1;0;false;false;63;95;191;;; -205080;1;0;false;false;;;;;; -205081;3;0;false;false;127;127;159;;; -205084;3;0;false;false;;;;;; -205087;1;0;false;false;63;95;191;;; -205088;3;0;false;false;;;;;; -205091;1;0;false;false;63;95;191;;; -205092;1;0;false;false;;;;;; -205093;7;1;false;false;127;159;191;;; -205100;1;0;false;false;63;95;191;;; -205101;1;0;false;false;;;;;; -205102;1;0;false;false;63;95;191;;; -205103;1;0;false;false;;;;;; -205104;8;0;false;false;63;95;191;;; -205112;1;0;false;false;;;;;; -205113;2;0;false;false;63;95;191;;; -205115;1;0;false;false;;;;;; -205116;3;0;false;false;63;95;191;;; -205119;1;0;false;false;;;;;; -205120;4;0;false;false;63;95;191;;; -205124;1;0;false;false;;;;;; -205125;6;0;false;false;63;95;191;;; -205131;3;0;false;false;;;;;; -205134;1;0;false;false;63;95;191;;; -205135;1;0;false;false;;;;;; -205136;7;1;false;false;127;159;191;;; -205143;12;0;false;false;63;95;191;;; -205155;1;0;false;false;;;;;; -205156;6;0;false;false;63;95;191;;; -205162;1;0;false;false;;;;;; -205163;2;0;false;false;63;95;191;;; -205165;1;0;false;false;;;;;; -205166;3;0;false;false;63;95;191;;; -205169;1;0;false;false;;;;;; -205170;6;0;false;false;63;95;191;;; -205176;3;0;false;false;;;;;; -205179;1;0;false;false;63;95;191;;; -205180;1;0;false;false;;;;;; -205181;7;1;false;false;127;159;191;;; -205188;17;0;false;false;63;95;191;;; -205205;1;0;false;false;;;;;; -205206;6;0;false;false;63;95;191;;; -205212;1;0;false;false;;;;;; -205213;2;0;false;false;63;95;191;;; -205215;1;0;false;false;;;;;; -205216;8;0;false;false;63;95;191;;; -205224;1;0;false;false;;;;;; -205225;6;0;false;false;63;95;191;;; -205231;3;0;false;false;;;;;; -205234;2;0;false;false;63;95;191;;; -205236;2;0;false;false;;;;;; -205238;4;1;false;false;127;0;85;;; -205242;1;0;false;false;;;;;; -205243;22;0;false;false;0;0;0;;; -205265;3;1;false;false;127;0;85;;; -205268;1;0;false;false;;;;;; -205269;2;0;false;false;0;0;0;;; -205271;1;0;false;false;;;;;; -205272;3;1;false;false;127;0;85;;; -205275;1;0;false;false;;;;;; -205276;13;0;false;false;0;0;0;;; -205289;1;0;false;false;;;;;; -205290;3;1;false;false;127;0;85;;; -205293;1;0;false;false;;;;;; -205294;18;0;false;false;0;0;0;;; -205312;1;0;false;false;;;;;; -205313;1;0;false;false;0;0;0;;; -205314;3;0;false;false;;;;;; -205317;9;0;false;false;0;0;0;;; -205326;1;0;false;false;;;;;; -205327;10;0;false;false;0;0;0;;; -205337;1;0;false;false;;;;;; -205338;1;0;false;false;0;0;0;;; -205339;1;0;false;false;;;;;; -205340;16;0;false;false;0;0;0;;; -205356;3;0;false;false;;;;;; -205359;3;1;false;false;127;0;85;;; -205362;1;0;false;false;;;;;; -205363;9;0;false;false;0;0;0;;; -205372;1;0;false;false;;;;;; -205373;1;0;false;false;0;0;0;;; -205374;1;0;false;false;;;;;; -205375;12;0;false;false;0;0;0;;; -205387;1;0;false;false;;;;;; -205388;1;0;false;false;0;0;0;;; -205389;1;0;false;false;;;;;; -205390;18;0;false;false;0;0;0;;; -205408;3;0;false;false;;;;;; -205411;3;1;false;false;127;0;85;;; -205414;1;0;false;false;;;;;; -205415;8;0;false;false;0;0;0;;; -205423;3;0;false;false;;;;;; -205426;3;1;false;false;127;0;85;;; -205429;1;0;false;false;;;;;; -205430;13;0;false;false;0;0;0;;; -205443;7;0;false;false;;;;;; -205450;2;1;false;false;127;0;85;;; -205452;1;0;false;false;;;;;; -205453;10;0;false;false;0;0;0;;; -205463;1;0;false;false;;;;;; -205464;1;0;false;false;0;0;0;;; -205465;1;0;false;false;;;;;; -205466;2;0;false;false;0;0;0;;; -205468;1;0;false;false;;;;;; -205469;1;0;false;false;0;0;0;;; -205470;4;0;false;false;;;;;; -205474;7;0;false;false;0;0;0;;; -205481;1;0;false;false;;;;;; -205482;1;0;false;false;0;0;0;;; -205483;1;0;false;false;;;;;; -205484;11;0;false;false;0;0;0;;; -205495;1;0;false;false;;;;;; -205496;1;0;false;false;0;0;0;;; -205497;1;0;false;false;;;;;; -205498;1;0;false;false;0;0;0;;; -205499;1;0;false;false;;;;;; -205500;12;0;false;false;0;0;0;;; -205512;4;0;false;false;;;;;; -205516;12;0;false;false;0;0;0;;; -205528;1;0;false;false;;;;;; -205529;1;0;false;false;0;0;0;;; -205530;1;0;false;false;;;;;; -205531;7;0;false;false;0;0;0;;; -205538;1;0;false;false;;;;;; -205539;1;0;false;false;0;0;0;;; -205540;1;0;false;false;;;;;; -205541;9;0;false;false;0;0;0;;; -205550;1;0;false;false;;;;;; -205551;1;0;false;false;0;0;0;;; -205552;1;0;false;false;;;;;; -205553;11;0;false;false;0;0;0;;; -205564;3;0;false;false;;;;;; -205567;1;0;false;false;0;0;0;;; -205568;4;0;false;false;;;;;; -205572;4;1;false;false;127;0;85;;; -205576;1;0;false;false;;;;;; -205577;1;0;false;false;0;0;0;;; -205578;4;0;false;false;;;;;; -205582;12;0;false;false;0;0;0;;; -205594;1;0;false;false;;;;;; -205595;1;0;false;false;0;0;0;;; -205596;1;0;false;false;;;;;; -205597;11;0;false;false;0;0;0;;; -205608;1;0;false;false;;;;;; -205609;1;0;false;false;0;0;0;;; -205610;1;0;false;false;;;;;; -205611;1;0;false;false;0;0;0;;; -205612;1;0;false;false;;;;;; -205613;12;0;false;false;0;0;0;;; -205625;4;0;false;false;;;;;; -205629;7;0;false;false;0;0;0;;; -205636;1;0;false;false;;;;;; -205637;1;0;false;false;0;0;0;;; -205638;1;0;false;false;;;;;; -205639;12;0;false;false;0;0;0;;; -205651;1;0;false;false;;;;;; -205652;1;0;false;false;0;0;0;;; -205653;1;0;false;false;;;;;; -205654;9;0;false;false;0;0;0;;; -205663;1;0;false;false;;;;;; -205664;1;0;false;false;0;0;0;;; -205665;1;0;false;false;;;;;; -205666;11;0;false;false;0;0;0;;; -205677;3;0;false;false;;;;;; -205680;1;0;false;false;0;0;0;;; -205681;4;0;false;false;;;;;; -205685;7;0;false;false;0;0;0;;; -205692;4;0;false;false;;;;;; -205696;2;0;false;false;0;0;0;;; -205698;1;0;false;false;;;;;; -205699;13;0;false;false;0;0;0;;; -205712;3;0;false;false;;;;;; -205715;21;0;false;false;63;127;95;;; -205736;2;0;false;false;;;;;; -205738;2;0;false;false;0;0;0;;; -205740;1;0;false;false;;;;;; -205741;8;0;false;false;0;0;0;;; -205749;5;0;false;false;;;;;; -205754;16;0;false;false;63;127;95;;; -205770;2;0;false;false;;;;;; -205772;17;0;false;false;0;0;0;;; -205789;1;0;false;false;;;;;; -205790;18;0;false;false;0;0;0;;; -205808;1;0;false;false;;;;;; -205809;4;1;false;false;127;0;85;;; -205813;2;0;false;false;0;0;0;;; -205815;3;0;false;false;;;;;; -205818;68;0;false;false;63;127;95;;; -205886;1;0;false;false;;;;;; -205887;69;0;false;false;63;127;95;;; -205956;1;0;false;false;;;;;; -205957;50;0;false;false;63;127;95;;; -206007;1;0;false;false;;;;;; -206008;68;0;false;false;63;127;95;;; -206076;1;0;false;false;;;;;; -206077;70;0;false;false;63;127;95;;; -206147;1;0;false;false;;;;;; -206148;55;0;false;false;63;127;95;;; -206203;1;0;false;false;;;;;; -206204;66;0;false;false;63;127;95;;; -206270;1;0;false;false;;;;;; -206271;67;0;false;false;63;127;95;;; -206338;1;0;false;false;;;;;; -206339;66;0;false;false;63;127;95;;; -206405;1;0;false;false;;;;;; -206406;54;0;false;false;63;127;95;;; -206460;1;0;false;false;;;;;; -206461;66;0;false;false;63;127;95;;; -206527;1;0;false;false;;;;;; -206528;53;0;false;false;63;127;95;;; -206581;1;0;false;false;;;;;; -206582;2;1;false;false;127;0;85;;; -206584;1;0;false;false;;;;;; -206585;2;0;false;false;0;0;0;;; -206587;1;0;false;false;;;;;; -206588;1;0;false;false;0;0;0;;; -206589;1;0;false;false;;;;;; -206590;10;0;false;false;0;0;0;;; -206600;1;0;false;false;;;;;; -206601;1;0;false;false;0;0;0;;; -206602;1;0;false;false;;;;;; -206603;1;0;false;false;0;0;0;;; -206604;1;0;false;false;;;;;; -206605;2;0;false;false;0;0;0;;; -206607;1;0;false;false;;;;;; -206608;1;0;false;false;0;0;0;;; -206609;1;0;false;false;;;;;; -206610;2;0;false;false;0;0;0;;; -206612;1;0;false;false;;;;;; -206613;18;0;false;false;0;0;0;;; -206631;1;0;false;false;;;;;; -206632;1;0;false;false;0;0;0;;; -206633;4;0;false;false;;;;;; -206637;62;0;false;false;63;127;95;;; -206699;2;0;false;false;;;;;; -206701;5;1;false;false;127;0;85;;; -206706;10;0;false;false;0;0;0;;; -206716;1;0;false;false;;;;;; -206717;2;0;false;false;0;0;0;;; -206719;1;0;false;false;;;;;; -206720;17;0;false;false;0;0;0;;; -206737;1;0;false;false;;;;;; -206738;11;0;false;false;0;0;0;;; -206749;1;0;false;false;;;;;; -206750;4;1;false;false;127;0;85;;; -206754;2;0;false;false;0;0;0;;; -206756;3;0;false;false;;;;;; -206759;1;0;false;false;0;0;0;;; -206760;3;0;false;false;;;;;; -206763;2;1;false;false;127;0;85;;; -206765;1;0;false;false;;;;;; -206766;13;0;false;false;0;0;0;;; -206779;1;0;false;false;;;;;; -206780;1;0;false;false;0;0;0;;; -206781;1;0;false;false;;;;;; -206782;2;0;false;false;0;0;0;;; -206784;1;0;false;false;;;;;; -206785;1;0;false;false;0;0;0;;; -206786;4;0;false;false;;;;;; -206790;3;1;false;false;127;0;85;;; -206793;1;0;false;false;;;;;; -206794;12;0;false;false;0;0;0;;; -206806;1;0;false;false;;;;;; -206807;1;0;false;false;0;0;0;;; -206808;1;0;false;false;;;;;; -206809;1;0;false;false;0;0;0;;; -206810;1;0;false;false;;;;;; -206811;1;0;false;false;0;0;0;;; -206812;1;0;false;false;;;;;; -206813;11;0;false;false;0;0;0;;; -206824;4;0;false;false;;;;;; -206828;3;1;false;false;127;0;85;;; -206831;1;0;false;false;;;;;; -206832;12;0;false;false;0;0;0;;; -206844;1;0;false;false;;;;;; -206845;1;0;false;false;0;0;0;;; -206846;1;0;false;false;;;;;; -206847;12;0;false;false;0;0;0;;; -206859;1;0;false;false;;;;;; -206860;1;0;false;false;0;0;0;;; -206861;1;0;false;false;;;;;; -206862;11;0;false;false;0;0;0;;; -206873;8;0;false;false;;;;;; -206881;2;1;false;false;127;0;85;;; -206883;1;0;false;false;;;;;; -206884;13;0;false;false;0;0;0;;; -206897;1;0;false;false;;;;;; -206898;1;0;false;false;0;0;0;;; -206899;1;0;false;false;;;;;; -206900;12;0;false;false;0;0;0;;; -206912;1;0;false;false;;;;;; -206913;1;0;false;false;0;0;0;;; -206914;1;0;false;false;;;;;; -206915;1;0;false;false;0;0;0;;; -206916;1;0;false;false;;;;;; -206917;2;0;false;false;0;0;0;;; -206919;1;0;false;false;;;;;; -206920;12;0;false;false;0;0;0;;; -206932;1;0;false;false;;;;;; -206933;2;0;false;false;0;0;0;;; -206935;1;0;false;false;;;;;; -206936;18;0;false;false;0;0;0;;; -206954;1;0;false;false;;;;;; -206955;1;0;false;false;0;0;0;;; -206956;5;0;false;false;;;;;; -206961;21;0;false;false;63;127;95;;; -206982;3;0;false;false;;;;;; -206985;5;1;false;false;127;0;85;;; -206990;10;0;false;false;0;0;0;;; -207000;1;0;false;false;;;;;; -207001;13;0;false;false;0;0;0;;; -207014;1;0;false;false;;;;;; -207015;17;0;false;false;0;0;0;;; -207032;1;0;false;false;;;;;; -207033;13;0;false;false;0;0;0;;; -207046;1;0;false;false;;;;;; -207047;4;1;false;false;127;0;85;;; -207051;2;0;false;false;0;0;0;;; -207053;4;0;false;false;;;;;; -207057;1;0;false;false;0;0;0;;; -207058;3;0;false;false;;;;;; -207061;1;0;false;false;0;0;0;;; -207062;2;0;false;false;;;;;; -207064;1;0;false;false;0;0;0;;; -207065;2;0;false;false;;;;;; -207067;3;0;false;false;63;95;191;;; -207070;4;0;false;false;;;;;; -207074;1;0;false;false;63;95;191;;; -207075;1;0;false;false;;;;;; -207076;7;0;false;false;63;95;191;;; -207083;1;0;false;false;;;;;; -207084;3;0;false;false;63;95;191;;; -207087;1;0;false;false;;;;;; -207088;9;0;false;false;63;95;191;;; -207097;1;0;false;false;;;;;; -207098;4;0;false;false;63;95;191;;; -207102;1;0;false;false;;;;;; -207103;6;0;false;false;63;95;191;;; -207109;3;0;false;false;;;;;; -207112;1;0;false;false;63;95;191;;; -207113;1;0;false;false;;;;;; -207114;3;0;false;false;127;127;159;;; -207117;3;0;false;false;;;;;; -207120;1;0;false;false;63;95;191;;; -207121;3;0;false;false;;;;;; -207124;1;0;false;false;63;95;191;;; -207125;1;0;false;false;;;;;; -207126;7;1;false;false;127;159;191;;; -207133;5;0;false;false;63;95;191;;; -207138;1;0;false;false;;;;;; -207139;6;0;false;false;63;95;191;;; -207145;1;0;false;false;;;;;; -207146;2;0;false;false;63;95;191;;; -207148;1;0;false;false;;;;;; -207149;3;0;false;false;63;95;191;;; -207152;1;0;false;false;;;;;; -207153;5;0;false;false;63;95;191;;; -207158;1;0;false;false;;;;;; -207159;9;0;false;false;63;95;191;;; -207168;1;0;false;false;;;;;; -207169;2;0;false;false;63;95;191;;; -207171;1;0;false;false;;;;;; -207172;6;0;false;false;63;95;191;;; -207178;3;0;false;false;;;;;; -207181;1;0;false;false;63;95;191;;; -207182;1;0;false;false;;;;;; -207183;7;1;false;false;127;159;191;;; -207190;6;0;false;false;63;95;191;;; -207196;1;0;false;false;;;;;; -207197;6;0;false;false;63;95;191;;; -207203;1;0;false;false;;;;;; -207204;2;0;false;false;63;95;191;;; -207206;1;0;false;false;;;;;; -207207;10;0;false;false;63;95;191;;; -207217;1;0;false;false;;;;;; -207218;2;0;false;false;63;95;191;;; -207220;1;0;false;false;;;;;; -207221;6;0;false;false;63;95;191;;; -207227;3;0;false;false;;;;;; -207230;1;0;false;false;63;95;191;;; -207231;1;0;false;false;;;;;; -207232;7;1;false;false;127;159;191;;; -207239;15;0;false;false;63;95;191;;; -207254;1;0;false;false;;;;;; -207255;4;0;false;false;63;95;191;;; -207259;1;0;false;false;;;;;; -207260;2;0;false;false;63;95;191;;; -207262;1;0;false;false;;;;;; -207263;3;0;false;false;63;95;191;;; -207266;1;0;false;false;;;;;; -207267;10;0;false;false;63;95;191;;; -207277;1;0;false;false;;;;;; -207278;6;0;false;false;63;95;191;;; -207284;1;0;false;false;;;;;; -207285;2;0;false;false;63;95;191;;; -207287;1;0;false;false;;;;;; -207288;7;0;false;false;63;95;191;;; -207295;1;0;false;false;;;;;; -207296;2;0;false;false;63;95;191;;; -207298;3;0;false;false;;;;;; -207301;1;0;false;false;63;95;191;;; -207302;2;0;false;false;;;;;; -207304;4;0;false;false;63;95;191;;; -207308;1;0;false;false;;;;;; -207309;2;0;false;false;63;95;191;;; -207311;1;0;false;false;;;;;; -207312;3;0;false;false;63;95;191;;; -207315;1;0;false;false;;;;;; -207316;6;0;false;false;63;95;191;;; -207322;1;0;false;false;;;;;; -207323;10;0;false;false;63;95;191;;; -207333;2;0;false;false;;;;;; -207335;2;0;false;false;63;95;191;;; -207337;1;0;false;false;;;;;; -207338;5;0;false;false;63;95;191;;; -207343;1;0;false;false;;;;;; -207344;3;0;false;false;63;95;191;;; -207347;1;0;false;false;;;;;; -207348;6;0;false;false;63;95;191;;; -207354;1;0;false;false;;;;;; -207355;6;0;false;false;63;95;191;;; -207361;1;0;false;false;;;;;; -207362;5;0;false;false;63;95;191;;; -207367;1;0;false;false;;;;;; -207368;4;0;false;false;63;95;191;;; -207372;3;0;false;false;;;;;; -207375;1;0;false;false;63;95;191;;; -207376;2;0;false;false;;;;;; -207378;2;0;false;false;63;95;191;;; -207380;1;0;false;false;;;;;; -207381;7;0;false;false;63;95;191;;; -207388;1;0;false;false;;;;;; -207389;6;0;false;false;63;95;191;;; -207395;1;0;false;false;;;;;; -207396;8;0;false;false;63;95;191;;; -207404;1;0;false;false;;;;;; -207405;2;0;false;false;63;95;191;;; -207407;1;0;false;false;;;;;; -207408;8;0;false;false;63;95;191;;; -207416;2;0;false;false;;;;;; -207418;2;0;false;false;63;95;191;;; -207420;1;0;false;false;;;;;; -207421;3;0;false;false;63;95;191;;; -207424;1;0;false;false;;;;;; -207425;6;0;false;false;63;95;191;;; -207431;1;0;false;false;;;;;; -207432;5;0;false;false;63;95;191;;; -207437;1;0;false;false;;;;;; -207438;8;0;false;false;63;95;191;;; -207446;3;0;false;false;;;;;; -207449;1;0;false;false;63;95;191;;; -207450;1;0;false;false;;;;;; -207451;3;0;false;false;63;95;191;;; -207454;1;0;false;false;;;;;; -207455;4;0;false;false;63;95;191;;; -207459;1;0;false;false;;;;;; -207460;9;0;false;false;63;95;191;;; -207469;1;0;false;false;;;;;; -207470;2;0;false;false;63;95;191;;; -207472;1;0;false;false;;;;;; -207473;1;0;false;false;63;95;191;;; -207474;1;0;false;false;;;;;; -207475;4;0;false;false;63;95;191;;; -207479;1;0;false;false;;;;;; -207480;6;0;false;false;63;95;191;;; -207486;1;0;false;false;;;;;; -207487;3;0;false;false;63;95;191;;; -207490;1;0;false;false;;;;;; -207491;6;0;false;false;63;95;191;;; -207497;1;0;false;false;;;;;; -207498;4;0;false;false;63;95;191;;; -207502;1;0;false;false;;;;;; -207503;2;0;false;false;63;95;191;;; -207505;1;0;false;false;;;;;; -207506;8;0;false;false;63;95;191;;; -207514;1;0;false;false;;;;;; -207515;3;0;false;false;63;95;191;;; -207518;4;0;false;false;;;;;; -207522;1;0;false;false;63;95;191;;; -207523;2;0;false;false;;;;;; -207525;4;0;false;false;63;95;191;;; -207529;1;0;false;false;;;;;; -207530;2;0;false;false;63;95;191;;; -207532;1;0;false;false;;;;;; -207533;7;0;false;false;63;95;191;;; -207540;1;0;false;false;;;;;; -207541;3;0;false;false;63;95;191;;; -207544;1;0;false;false;;;;;; -207545;3;0;false;false;63;95;191;;; -207548;1;0;false;false;;;;;; -207549;3;0;false;false;63;95;191;;; -207552;1;0;false;false;;;;;; -207553;2;0;false;false;63;95;191;;; -207555;1;0;false;false;;;;;; -207556;3;0;false;false;63;95;191;;; -207559;1;0;false;false;;;;;; -207560;5;0;false;false;63;95;191;;; -207565;1;0;false;false;;;;;; -207566;6;0;false;false;63;95;191;;; -207572;1;0;false;false;;;;;; -207573;2;0;false;false;63;95;191;;; -207575;1;0;false;false;;;;;; -207576;3;0;false;false;63;95;191;;; -207579;1;0;false;false;;;;;; -207580;7;0;false;false;63;95;191;;; -207587;3;0;false;false;;;;;; -207590;1;0;false;false;63;95;191;;; -207591;2;0;false;false;;;;;; -207593;3;0;false;false;63;95;191;;; -207596;1;0;false;false;;;;;; -207597;6;0;false;false;63;95;191;;; -207603;1;0;false;false;;;;;; -207604;9;0;false;false;63;95;191;;; -207613;1;0;false;false;;;;;; -207614;4;0;false;false;63;95;191;;; -207618;1;0;false;false;;;;;; -207619;2;0;false;false;63;95;191;;; -207621;1;0;false;false;;;;;; -207622;6;0;false;false;63;95;191;;; -207628;1;0;false;false;;;;;; -207629;3;0;false;false;63;95;191;;; -207632;1;0;false;false;;;;;; -207633;8;0;false;false;63;95;191;;; -207641;1;0;false;false;;;;;; -207642;2;0;false;false;63;95;191;;; -207644;1;0;false;false;;;;;; -207645;15;0;false;false;63;95;191;;; -207660;4;0;false;false;;;;;; -207664;1;0;false;false;63;95;191;;; -207665;2;0;false;false;;;;;; -207667;2;0;false;false;63;95;191;;; -207669;1;0;false;false;;;;;; -207670;3;0;false;false;63;95;191;;; -207673;1;0;false;false;;;;;; -207674;2;0;false;false;63;95;191;;; -207676;1;0;false;false;;;;;; -207677;6;0;false;false;63;95;191;;; -207683;2;0;false;false;;;;;; -207685;7;0;false;false;63;95;191;;; -207692;1;0;false;false;;;;;; -207693;2;0;false;false;63;95;191;;; -207695;1;0;false;false;;;;;; -207696;3;0;false;false;63;95;191;;; -207699;1;0;false;false;;;;;; -207700;3;0;false;false;63;95;191;;; -207703;1;0;false;false;;;;;; -207704;4;0;false;false;63;95;191;;; -207708;1;0;false;false;;;;;; -207709;3;0;false;false;63;95;191;;; -207712;1;0;false;false;;;;;; -207713;2;0;false;false;63;95;191;;; -207715;1;0;false;false;;;;;; -207716;3;0;false;false;63;95;191;;; -207719;1;0;false;false;;;;;; -207720;2;0;false;false;63;95;191;;; -207722;1;0;false;false;;;;;; -207723;5;0;false;false;63;95;191;;; -207728;1;0;false;false;;;;;; -207729;7;0;false;false;63;95;191;;; -207736;4;0;false;false;;;;;; -207740;1;0;false;false;63;95;191;;; -207741;2;0;false;false;;;;;; -207743;2;0;false;false;63;95;191;;; -207745;1;0;false;false;;;;;; -207746;3;0;false;false;63;95;191;;; -207749;1;0;false;false;;;;;; -207750;4;0;false;false;63;95;191;;; -207754;1;0;false;false;;;;;; -207755;2;0;false;false;63;95;191;;; -207757;1;0;false;false;;;;;; -207758;6;0;false;false;63;95;191;;; -207764;1;0;false;false;;;;;; -207765;4;0;false;false;63;95;191;;; -207769;1;0;false;false;;;;;; -207770;3;0;false;false;63;95;191;;; -207773;1;0;false;false;;;;;; -207774;5;0;false;false;63;95;191;;; -207779;1;0;false;false;;;;;; -207780;6;0;false;false;63;95;191;;; -207786;2;0;false;false;;;;;; -207788;2;0;false;false;63;95;191;;; -207790;1;0;false;false;;;;;; -207791;4;0;false;false;63;95;191;;; -207795;1;0;false;false;;;;;; -207796;6;0;false;false;63;95;191;;; -207802;1;0;false;false;;;;;; -207803;2;0;false;false;63;95;191;;; -207805;4;0;false;false;;;;;; -207809;1;0;false;false;63;95;191;;; -207810;2;0;false;false;;;;;; -207812;10;0;false;false;63;95;191;;; -207822;1;0;false;false;;;;;; -207823;6;0;false;false;63;95;191;;; -207829;1;0;false;false;;;;;; -207830;3;0;false;false;63;95;191;;; -207833;1;0;false;false;;;;;; -207834;3;0;false;false;63;95;191;;; -207837;1;0;false;false;;;;;; -207838;6;0;false;false;63;95;191;;; -207844;1;0;false;false;;;;;; -207845;5;0;false;false;63;95;191;;; -207850;1;0;false;false;;;;;; -207851;4;0;false;false;63;95;191;;; -207855;1;0;false;false;;;;;; -207856;8;0;false;false;63;95;191;;; -207864;1;0;false;false;;;;;; -207865;15;0;false;false;63;95;191;;; -207880;4;0;false;false;;;;;; -207884;1;0;false;false;63;95;191;;; -207885;2;0;false;false;;;;;; -207887;6;0;false;false;63;95;191;;; -207893;1;0;false;false;;;;;; -207894;2;0;false;false;63;95;191;;; -207896;1;0;false;false;;;;;; -207897;3;0;false;false;63;95;191;;; -207900;1;0;false;false;;;;;; -207901;2;0;false;false;63;95;191;;; -207903;1;0;false;false;;;;;; -207904;5;0;false;false;63;95;191;;; -207909;2;0;false;false;;;;;; -207911;2;0;false;false;63;95;191;;; -207913;1;0;false;false;;;;;; -207914;4;0;false;false;63;95;191;;; -207918;1;0;false;false;;;;;; -207919;10;0;false;false;63;95;191;;; -207929;1;0;false;false;;;;;; -207930;6;0;false;false;63;95;191;;; -207936;1;0;false;false;;;;;; -207937;4;0;false;false;63;95;191;;; -207941;1;0;false;false;;;;;; -207942;7;0;false;false;63;95;191;;; -207949;1;0;false;false;;;;;; -207950;3;0;false;false;63;95;191;;; -207953;4;0;false;false;;;;;; -207957;1;0;false;false;63;95;191;;; -207958;2;0;false;false;;;;;; -207960;3;0;false;false;63;95;191;;; -207963;1;0;false;false;;;;;; -207964;6;0;false;false;63;95;191;;; -207970;1;0;false;false;;;;;; -207971;6;0;false;false;63;95;191;;; -207977;1;0;false;false;;;;;; -207978;15;0;false;false;63;95;191;;; -207993;1;0;false;false;;;;;; -207994;3;0;false;false;63;95;191;;; -207997;1;0;false;false;;;;;; -207998;2;0;false;false;63;95;191;;; -208000;1;0;false;false;;;;;; -208001;3;0;false;false;63;95;191;;; -208004;1;0;false;false;;;;;; -208005;2;0;false;false;63;95;191;;; -208007;1;0;false;false;;;;;; -208008;6;0;false;false;63;95;191;;; -208014;4;0;false;false;;;;;; -208018;1;0;false;false;63;95;191;;; -208019;1;0;false;false;;;;;; -208020;11;1;false;false;127;159;191;;; -208031;12;0;false;false;63;95;191;;; -208043;1;0;false;false;;;;;; -208044;4;0;false;false;127;127;159;;; -208048;3;0;false;false;;;;;; -208051;1;0;false;false;63;95;191;;; -208052;4;0;false;false;;;;;; -208056;4;0;false;false;127;127;159;;; -208060;21;0;false;false;63;95;191;;; -208081;1;0;false;false;;;;;; -208082;1;0;false;false;127;127;159;;; -208083;1;0;false;false;;;;;; -208084;2;0;false;false;63;95;191;;; -208086;1;0;false;false;;;;;; -208087;3;0;false;false;63;95;191;;; -208090;1;0;false;false;;;;;; -208091;8;0;false;false;63;95;191;;; -208099;1;0;false;false;;;;;; -208100;3;0;false;false;63;95;191;;; -208103;1;0;false;false;;;;;; -208104;4;0;false;false;63;95;191;;; -208108;1;0;false;false;;;;;; -208109;8;0;false;false;63;95;191;;; -208117;5;0;false;false;127;127;159;;; -208122;3;0;false;false;;;;;; -208125;1;0;false;false;63;95;191;;; -208126;4;0;false;false;;;;;; -208130;4;0;false;false;127;127;159;;; -208134;27;0;false;false;63;95;191;;; -208161;1;0;false;false;;;;;; -208162;1;0;false;false;127;127;159;;; -208163;1;0;false;false;;;;;; -208164;2;0;false;false;63;95;191;;; -208166;1;0;false;false;;;;;; -208167;3;0;false;false;63;95;191;;; -208170;1;0;false;false;;;;;; -208171;6;0;false;false;63;95;191;;; -208177;1;0;false;false;;;;;; -208178;4;0;false;false;63;95;191;;; -208182;1;0;false;false;;;;;; -208183;3;0;false;false;63;95;191;;; -208186;1;0;false;false;;;;;; -208187;6;0;false;false;63;95;191;;; -208193;1;0;false;false;;;;;; -208194;4;0;false;false;63;95;191;;; -208198;1;0;false;false;;;;;; -208199;7;0;false;false;63;95;191;;; -208206;1;0;false;false;;;;;; -208207;3;0;false;false;63;95;191;;; -208210;1;0;false;false;;;;;; -208211;8;0;false;false;63;95;191;;; -208219;5;0;false;false;127;127;159;;; -208224;3;0;false;false;;;;;; -208227;1;0;false;false;63;95;191;;; -208228;1;0;false;false;;;;;; -208229;5;0;false;false;127;127;159;;; -208234;3;0;false;false;;;;;; -208237;1;0;false;false;63;95;191;;; -208238;1;0;false;false;;;;;; -208239;11;1;false;false;127;159;191;;; -208250;24;0;false;false;63;95;191;;; -208274;1;0;false;false;;;;;; -208275;4;0;false;false;127;127;159;;; -208279;3;0;false;false;;;;;; -208282;1;0;false;false;63;95;191;;; -208283;3;0;false;false;;;;;; -208286;4;0;false;false;127;127;159;;; -208290;19;0;false;false;63;95;191;;; -208309;1;0;false;false;;;;;; -208310;4;0;false;false;63;95;191;;; -208314;1;0;false;false;;;;;; -208315;5;0;false;false;63;95;191;;; -208320;1;0;false;false;;;;;; -208321;6;0;false;false;63;95;191;;; -208327;1;0;false;false;;;;;; -208328;3;0;false;false;63;95;191;;; -208331;1;0;false;false;;;;;; -208332;3;0;false;false;63;95;191;;; -208335;1;0;false;false;;;;;; -208336;7;0;false;false;63;95;191;;; -208343;1;0;false;false;;;;;; -208344;3;0;false;false;63;95;191;;; -208347;1;0;false;false;;;;;; -208348;6;0;false;false;63;95;191;;; -208354;1;0;false;false;;;;;; -208355;7;0;false;false;63;95;191;;; -208362;5;0;false;false;127;127;159;;; -208367;4;0;false;false;;;;;; -208371;1;0;false;false;63;95;191;;; -208372;1;0;false;false;;;;;; -208373;5;0;false;false;127;127;159;;; -208378;3;0;false;false;;;;;; -208381;2;0;false;false;63;95;191;;; -208383;2;0;false;false;;;;;; -208385;6;1;false;false;127;0;85;;; -208391;1;0;false;false;;;;;; -208392;4;1;false;false;127;0;85;;; -208396;1;0;false;false;;;;;; -208397;12;0;false;false;0;0;0;;; -208409;3;1;false;false;127;0;85;;; -208412;1;0;false;false;;;;;; -208413;6;0;false;false;0;0;0;;; -208419;1;0;false;false;;;;;; -208420;3;1;false;false;127;0;85;;; -208423;1;0;false;false;;;;;; -208424;7;0;false;false;0;0;0;;; -208431;1;0;false;false;;;;;; -208432;7;1;false;false;127;0;85;;; -208439;1;0;false;false;;;;;; -208440;16;0;false;false;0;0;0;;; -208456;1;0;false;false;;;;;; -208457;1;0;false;false;0;0;0;;; -208458;3;0;false;false;;;;;; -208461;14;0;false;false;0;0;0;;; -208475;3;0;false;false;;;;;; -208478;3;1;false;false;127;0;85;;; -208481;1;0;false;false;;;;;; -208482;3;0;false;false;0;0;0;;; -208485;1;0;false;false;;;;;; -208486;1;0;false;false;0;0;0;;; -208487;1;0;false;false;;;;;; -208488;5;0;false;false;0;0;0;;; -208493;1;0;false;false;;;;;; -208494;1;0;false;false;0;0;0;;; -208495;1;0;false;false;;;;;; -208496;7;0;false;false;0;0;0;;; -208503;3;0;false;false;;;;;; -208506;3;1;false;false;127;0;85;;; -208509;1;0;false;false;;;;;; -208510;13;0;false;false;0;0;0;;; -208523;1;0;false;false;;;;;; -208524;1;0;false;false;0;0;0;;; -208525;1;0;false;false;;;;;; -208526;23;0;false;false;0;0;0;;; -208549;3;0;false;false;;;;;; -208552;3;1;false;false;127;0;85;;; -208555;1;0;false;false;;;;;; -208556;10;0;false;false;0;0;0;;; -208566;3;0;false;false;;;;;; -208569;3;1;false;false;127;0;85;;; -208572;1;0;false;false;;;;;; -208573;9;0;false;false;0;0;0;;; -208582;6;0;false;false;;;;;; -208588;2;1;false;false;127;0;85;;; -208590;1;0;false;false;;;;;; -208591;6;0;false;false;0;0;0;;; -208597;1;0;false;false;;;;;; -208598;1;0;false;false;0;0;0;;; -208599;1;0;false;false;;;;;; -208600;3;0;false;false;0;0;0;;; -208603;1;0;false;false;;;;;; -208604;2;0;false;false;0;0;0;;; -208606;1;0;false;false;;;;;; -208607;5;0;false;false;0;0;0;;; -208612;1;0;false;false;;;;;; -208613;1;0;false;false;0;0;0;;; -208614;1;0;false;false;;;;;; -208615;1;0;false;false;0;0;0;;; -208616;1;0;false;false;;;;;; -208617;2;0;false;false;0;0;0;;; -208619;1;0;false;false;;;;;; -208620;3;0;false;false;0;0;0;;; -208623;1;0;false;false;;;;;; -208624;1;0;false;false;0;0;0;;; -208625;1;0;false;false;;;;;; -208626;14;0;false;false;0;0;0;;; -208640;1;0;false;false;;;;;; -208641;1;0;false;false;0;0;0;;; -208642;4;0;false;false;;;;;; -208646;35;0;false;false;0;0;0;;; -208681;3;0;false;false;;;;;; -208684;1;0;false;false;0;0;0;;; -208685;4;0;false;false;;;;;; -208689;9;0;false;false;0;0;0;;; -208698;1;0;false;false;;;;;; -208699;1;0;false;false;0;0;0;;; -208700;1;0;false;false;;;;;; -208701;31;0;false;false;0;0;0;;; -208732;3;0;false;false;;;;;; -208735;8;0;false;false;0;0;0;;; -208743;1;0;false;false;;;;;; -208744;1;0;false;false;0;0;0;;; -208745;1;0;false;false;;;;;; -208746;29;0;false;false;0;0;0;;; -208775;3;0;false;false;;;;;; -208778;66;0;false;false;63;127;95;;; -208844;1;0;false;false;;;;;; -208845;28;0;false;false;63;127;95;;; -208873;1;0;false;false;;;;;; -208874;26;0;false;false;0;0;0;;; -208900;1;0;false;false;;;;;; -208901;8;0;false;false;0;0;0;;; -208909;1;0;false;false;;;;;; -208910;1;0;false;false;0;0;0;;; -208911;1;0;false;false;;;;;; -208912;9;0;false;false;0;0;0;;; -208921;1;0;false;false;;;;;; -208922;1;0;false;false;0;0;0;;; -208923;1;0;false;false;;;;;; -208924;2;0;false;false;0;0;0;;; -208926;1;0;false;false;;;;;; -208927;4;1;false;false;127;0;85;;; -208931;2;0;false;false;0;0;0;;; -208933;3;0;false;false;;;;;; -208936;26;0;false;false;0;0;0;;; -208962;1;0;false;false;;;;;; -208963;7;0;false;false;0;0;0;;; -208970;1;0;false;false;;;;;; -208971;17;0;false;false;0;0;0;;; -208988;2;0;false;false;;;;;; -208990;1;0;false;false;0;0;0;;; -208991;2;0;false;false;;;;;; -208993;3;0;false;false;63;95;191;;; -208996;3;0;false;false;;;;;; -208999;1;0;false;false;63;95;191;;; -209000;1;0;false;false;;;;;; -209001;7;0;false;false;63;95;191;;; -209008;1;0;false;false;;;;;; -209009;3;0;false;false;63;95;191;;; -209012;1;0;false;false;;;;;; -209013;9;0;false;false;63;95;191;;; -209022;1;0;false;false;;;;;; -209023;13;0;false;false;63;95;191;;; -209036;1;0;false;false;;;;;; -209037;7;0;false;false;63;95;191;;; -209044;1;0;false;false;;;;;; -209045;9;0;false;false;63;95;191;;; -209054;3;0;false;false;;;;;; -209057;1;0;false;false;63;95;191;;; -209058;1;0;false;false;;;;;; -209059;3;0;false;false;127;127;159;;; -209062;3;0;false;false;;;;;; -209065;1;0;false;false;63;95;191;;; -209066;3;0;false;false;;;;;; -209069;1;0;false;false;63;95;191;;; -209070;1;0;false;false;;;;;; -209071;7;1;false;false;127;159;191;;; -209078;8;0;false;false;63;95;191;;; -209086;1;0;false;false;;;;;; -209087;3;0;false;false;63;95;191;;; -209090;1;0;false;false;;;;;; -209091;8;0;false;false;63;95;191;;; -209099;3;0;false;false;;;;;; -209102;1;0;false;false;63;95;191;;; -209103;1;0;false;false;;;;;; -209104;11;1;false;false;127;159;191;;; -209115;12;0;false;false;63;95;191;;; -209127;1;0;false;false;;;;;; -209128;4;0;false;false;127;127;159;;; -209132;3;0;false;false;;;;;; -209135;1;0;false;false;63;95;191;;; -209136;4;0;false;false;;;;;; -209140;4;0;false;false;127;127;159;;; -209144;21;0;false;false;63;95;191;;; -209165;1;0;false;false;;;;;; -209166;1;0;false;false;127;127;159;;; -209167;1;0;false;false;;;;;; -209168;2;0;false;false;63;95;191;;; -209170;1;0;false;false;;;;;; -209171;3;0;false;false;63;95;191;;; -209174;1;0;false;false;;;;;; -209175;8;0;false;false;63;95;191;;; -209183;1;0;false;false;;;;;; -209184;3;0;false;false;63;95;191;;; -209187;1;0;false;false;;;;;; -209188;4;0;false;false;63;95;191;;; -209192;1;0;false;false;;;;;; -209193;8;0;false;false;63;95;191;;; -209201;5;0;false;false;127;127;159;;; -209206;3;0;false;false;;;;;; -209209;1;0;false;false;63;95;191;;; -209210;4;0;false;false;;;;;; -209214;4;0;false;false;127;127;159;;; -209218;27;0;false;false;63;95;191;;; -209245;1;0;false;false;;;;;; -209246;1;0;false;false;127;127;159;;; -209247;1;0;false;false;;;;;; -209248;2;0;false;false;63;95;191;;; -209250;1;0;false;false;;;;;; -209251;3;0;false;false;63;95;191;;; -209254;1;0;false;false;;;;;; -209255;6;0;false;false;63;95;191;;; -209261;1;0;false;false;;;;;; -209262;4;0;false;false;63;95;191;;; -209266;1;0;false;false;;;;;; -209267;3;0;false;false;63;95;191;;; -209270;1;0;false;false;;;;;; -209271;6;0;false;false;63;95;191;;; -209277;1;0;false;false;;;;;; -209278;4;0;false;false;63;95;191;;; -209282;1;0;false;false;;;;;; -209283;7;0;false;false;63;95;191;;; -209290;1;0;false;false;;;;;; -209291;3;0;false;false;63;95;191;;; -209294;1;0;false;false;;;;;; -209295;8;0;false;false;63;95;191;;; -209303;5;0;false;false;127;127;159;;; -209308;3;0;false;false;;;;;; -209311;1;0;false;false;63;95;191;;; -209312;1;0;false;false;;;;;; -209313;5;0;false;false;127;127;159;;; -209318;3;0;false;false;;;;;; -209321;1;0;false;false;63;95;191;;; -209322;1;0;false;false;;;;;; -209323;11;1;false;false;127;159;191;;; -209334;24;0;false;false;63;95;191;;; -209358;1;0;false;false;;;;;; -209359;4;0;false;false;127;127;159;;; -209363;3;0;false;false;;;;;; -209366;1;0;false;false;63;95;191;;; -209367;4;0;false;false;;;;;; -209371;4;0;false;false;127;127;159;;; -209375;19;0;false;false;63;95;191;;; -209394;1;0;false;false;;;;;; -209395;4;0;false;false;63;95;191;;; -209399;1;0;false;false;;;;;; -209400;8;0;false;false;63;95;191;;; -209408;1;0;false;false;;;;;; -209409;2;0;false;false;63;95;191;;; -209411;1;0;false;false;;;;;; -209412;4;0;false;false;63;95;191;;; -209416;5;0;false;false;127;127;159;;; -209421;3;0;false;false;;;;;; -209424;1;0;false;false;63;95;191;;; -209425;1;0;false;false;;;;;; -209426;5;0;false;false;127;127;159;;; -209431;3;0;false;false;;;;;; -209434;1;0;false;false;63;95;191;;; -209435;1;0;false;false;;;;;; -209436;7;1;false;false;127;159;191;;; -209443;3;0;false;false;63;95;191;;; -209446;3;0;false;false;;;;;; -209449;2;0;false;false;63;95;191;;; -209451;2;0;false;false;;;;;; -209453;6;1;false;false;127;0;85;;; -209459;1;0;false;false;;;;;; -209460;4;1;false;false;127;0;85;;; -209464;1;0;false;false;;;;;; -209465;45;0;false;false;0;0;0;;; -209510;1;0;false;false;;;;;; -209511;9;0;false;false;0;0;0;;; -209520;1;0;false;false;;;;;; -209521;1;0;false;false;0;0;0;;; -209522;3;0;false;false;;;;;; -209525;14;0;false;false;0;0;0;;; -209539;3;0;false;false;;;;;; -209542;2;1;false;false;127;0;85;;; -209544;1;0;false;false;;;;;; -209545;9;0;false;false;0;0;0;;; -209554;1;0;false;false;;;;;; -209555;2;0;false;false;0;0;0;;; -209557;1;0;false;false;;;;;; -209558;4;1;false;false;127;0;85;;; -209562;1;0;false;false;0;0;0;;; -209563;1;0;false;false;;;;;; -209564;35;0;false;false;0;0;0;;; -209599;3;0;false;false;;;;;; -209602;31;0;false;false;0;0;0;;; -209633;1;0;false;false;;;;;; -209634;10;0;false;false;0;0;0;;; -209644;3;0;false;false;;;;;; -209647;1;0;false;false;0;0;0;;; -209648;2;0;false;false;;;;;; -209650;3;0;false;false;63;95;191;;; -209653;3;0;false;false;;;;;; -209656;1;0;false;false;63;95;191;;; -209657;1;0;false;false;;;;;; -209658;7;0;false;false;63;95;191;;; -209665;1;0;false;false;;;;;; -209666;3;0;false;false;63;95;191;;; -209669;1;0;false;false;;;;;; -209670;9;0;false;false;63;95;191;;; -209679;1;0;false;false;;;;;; -209680;8;0;false;false;63;95;191;;; -209688;1;0;false;false;;;;;; -209689;6;0;false;false;63;95;191;;; -209695;1;0;false;false;;;;;; -209696;9;0;false;false;63;95;191;;; -209705;3;0;false;false;;;;;; -209708;1;0;false;false;63;95;191;;; -209709;1;0;false;false;;;;;; -209710;3;0;false;false;127;127;159;;; -209713;3;0;false;false;;;;;; -209716;1;0;false;false;63;95;191;;; -209717;3;0;false;false;;;;;; -209720;1;0;false;false;63;95;191;;; -209721;1;0;false;false;;;;;; -209722;7;1;false;false;127;159;191;;; -209729;22;0;false;false;63;95;191;;; -209751;1;0;false;false;;;;;; -209752;3;0;false;false;63;95;191;;; -209755;1;0;false;false;;;;;; -209756;8;0;false;false;63;95;191;;; -209764;3;0;false;false;;;;;; -209767;1;0;false;false;63;95;191;;; -209768;1;0;false;false;;;;;; -209769;11;1;false;false;127;159;191;;; -209780;12;0;false;false;63;95;191;;; -209792;1;0;false;false;;;;;; -209793;4;0;false;false;127;127;159;;; -209797;3;0;false;false;;;;;; -209800;1;0;false;false;63;95;191;;; -209801;4;0;false;false;;;;;; -209805;4;0;false;false;127;127;159;;; -209809;21;0;false;false;63;95;191;;; -209830;1;0;false;false;;;;;; -209831;1;0;false;false;127;127;159;;; -209832;1;0;false;false;;;;;; -209833;2;0;false;false;63;95;191;;; -209835;1;0;false;false;;;;;; -209836;3;0;false;false;63;95;191;;; -209839;1;0;false;false;;;;;; -209840;8;0;false;false;63;95;191;;; -209848;1;0;false;false;;;;;; -209849;3;0;false;false;63;95;191;;; -209852;1;0;false;false;;;;;; -209853;4;0;false;false;63;95;191;;; -209857;1;0;false;false;;;;;; -209858;8;0;false;false;63;95;191;;; -209866;5;0;false;false;127;127;159;;; -209871;3;0;false;false;;;;;; -209874;1;0;false;false;63;95;191;;; -209875;4;0;false;false;;;;;; -209879;4;0;false;false;127;127;159;;; -209883;27;0;false;false;63;95;191;;; -209910;1;0;false;false;;;;;; -209911;1;0;false;false;127;127;159;;; -209912;1;0;false;false;;;;;; -209913;2;0;false;false;63;95;191;;; -209915;1;0;false;false;;;;;; -209916;3;0;false;false;63;95;191;;; -209919;1;0;false;false;;;;;; -209920;6;0;false;false;63;95;191;;; -209926;1;0;false;false;;;;;; -209927;4;0;false;false;63;95;191;;; -209931;1;0;false;false;;;;;; -209932;3;0;false;false;63;95;191;;; -209935;1;0;false;false;;;;;; -209936;6;0;false;false;63;95;191;;; -209942;1;0;false;false;;;;;; -209943;4;0;false;false;63;95;191;;; -209947;1;0;false;false;;;;;; -209948;7;0;false;false;63;95;191;;; -209955;1;0;false;false;;;;;; -209956;3;0;false;false;63;95;191;;; -209959;1;0;false;false;;;;;; -209960;8;0;false;false;63;95;191;;; -209968;5;0;false;false;127;127;159;;; -209973;3;0;false;false;;;;;; -209976;1;0;false;false;63;95;191;;; -209977;1;0;false;false;;;;;; -209978;5;0;false;false;127;127;159;;; -209983;3;0;false;false;;;;;; -209986;1;0;false;false;63;95;191;;; -209987;1;0;false;false;;;;;; -209988;11;1;false;false;127;159;191;;; -209999;24;0;false;false;63;95;191;;; -210023;1;0;false;false;;;;;; -210024;4;0;false;false;127;127;159;;; -210028;3;0;false;false;;;;;; -210031;1;0;false;false;63;95;191;;; -210032;4;0;false;false;;;;;; -210036;4;0;false;false;127;127;159;;; -210040;19;0;false;false;63;95;191;;; -210059;1;0;false;false;;;;;; -210060;4;0;false;false;63;95;191;;; -210064;1;0;false;false;;;;;; -210065;8;0;false;false;63;95;191;;; -210073;1;0;false;false;;;;;; -210074;2;0;false;false;63;95;191;;; -210076;1;0;false;false;;;;;; -210077;4;0;false;false;63;95;191;;; -210081;5;0;false;false;127;127;159;;; -210086;3;0;false;false;;;;;; -210089;1;0;false;false;63;95;191;;; -210090;1;0;false;false;;;;;; -210091;5;0;false;false;127;127;159;;; -210096;3;0;false;false;;;;;; -210099;2;0;false;false;63;95;191;;; -210101;2;0;false;false;;;;;; -210103;6;1;false;false;127;0;85;;; -210109;1;0;false;false;;;;;; -210110;4;1;false;false;127;0;85;;; -210114;1;0;false;false;;;;;; -210115;51;0;false;false;0;0;0;;; -210166;1;0;false;false;;;;;; -210167;23;0;false;false;0;0;0;;; -210190;1;0;false;false;;;;;; -210191;1;0;false;false;0;0;0;;; -210192;3;0;false;false;;;;;; -210195;14;0;false;false;0;0;0;;; -210209;3;0;false;false;;;;;; -210212;2;1;false;false;127;0;85;;; -210214;1;0;false;false;;;;;; -210215;23;0;false;false;0;0;0;;; -210238;1;0;false;false;;;;;; -210239;2;0;false;false;0;0;0;;; -210241;1;0;false;false;;;;;; -210242;4;1;false;false;127;0;85;;; -210246;1;0;false;false;0;0;0;;; -210247;1;0;false;false;;;;;; -210248;35;0;false;false;0;0;0;;; -210283;3;0;false;false;;;;;; -210286;30;0;false;false;0;0;0;;; -210316;1;0;false;false;;;;;; -210317;24;0;false;false;0;0;0;;; -210341;3;0;false;false;;;;;; -210344;1;0;false;false;0;0;0;;; -210345;2;0;false;false;;;;;; -210347;3;0;false;false;63;95;191;;; -210350;3;0;false;false;;;;;; -210353;1;0;false;false;63;95;191;;; -210354;1;0;false;false;;;;;; -210355;7;0;false;false;63;95;191;;; -210362;1;0;false;false;;;;;; -210363;3;0;false;false;63;95;191;;; -210366;1;0;false;false;;;;;; -210367;9;0;false;false;63;95;191;;; -210376;1;0;false;false;;;;;; -210377;4;0;false;false;63;95;191;;; -210381;1;0;false;false;;;;;; -210382;10;0;false;false;63;95;191;;; -210392;1;0;false;false;;;;;; -210393;9;0;false;false;63;95;191;;; -210402;3;0;false;false;;;;;; -210405;1;0;false;false;63;95;191;;; -210406;1;0;false;false;;;;;; -210407;3;0;false;false;127;127;159;;; -210410;3;0;false;false;;;;;; -210413;1;0;false;false;63;95;191;;; -210414;3;0;false;false;;;;;; -210417;1;0;false;false;63;95;191;;; -210418;1;0;false;false;;;;;; -210419;7;1;false;false;127;159;191;;; -210426;8;0;false;false;63;95;191;;; -210434;1;0;false;false;;;;;; -210435;3;0;false;false;63;95;191;;; -210438;1;0;false;false;;;;;; -210439;8;0;false;false;63;95;191;;; -210447;3;0;false;false;;;;;; -210450;1;0;false;false;63;95;191;;; -210451;1;0;false;false;;;;;; -210452;11;1;false;false;127;159;191;;; -210463;12;0;false;false;63;95;191;;; -210475;1;0;false;false;;;;;; -210476;4;0;false;false;127;127;159;;; -210480;3;0;false;false;;;;;; -210483;1;0;false;false;63;95;191;;; -210484;4;0;false;false;;;;;; -210488;4;0;false;false;127;127;159;;; -210492;21;0;false;false;63;95;191;;; -210513;1;0;false;false;;;;;; -210514;1;0;false;false;127;127;159;;; -210515;1;0;false;false;;;;;; -210516;2;0;false;false;63;95;191;;; -210518;1;0;false;false;;;;;; -210519;3;0;false;false;63;95;191;;; -210522;1;0;false;false;;;;;; -210523;8;0;false;false;63;95;191;;; -210531;1;0;false;false;;;;;; -210532;3;0;false;false;63;95;191;;; -210535;1;0;false;false;;;;;; -210536;4;0;false;false;63;95;191;;; -210540;1;0;false;false;;;;;; -210541;8;0;false;false;63;95;191;;; -210549;5;0;false;false;127;127;159;;; -210554;3;0;false;false;;;;;; -210557;1;0;false;false;63;95;191;;; -210558;4;0;false;false;;;;;; -210562;4;0;false;false;127;127;159;;; -210566;27;0;false;false;63;95;191;;; -210593;1;0;false;false;;;;;; -210594;1;0;false;false;127;127;159;;; -210595;1;0;false;false;;;;;; -210596;2;0;false;false;63;95;191;;; -210598;1;0;false;false;;;;;; -210599;3;0;false;false;63;95;191;;; -210602;1;0;false;false;;;;;; -210603;6;0;false;false;63;95;191;;; -210609;1;0;false;false;;;;;; -210610;4;0;false;false;63;95;191;;; -210614;1;0;false;false;;;;;; -210615;3;0;false;false;63;95;191;;; -210618;1;0;false;false;;;;;; -210619;6;0;false;false;63;95;191;;; -210625;1;0;false;false;;;;;; -210626;4;0;false;false;63;95;191;;; -210630;1;0;false;false;;;;;; -210631;7;0;false;false;63;95;191;;; -210638;1;0;false;false;;;;;; -210639;3;0;false;false;63;95;191;;; -210642;1;0;false;false;;;;;; -210643;8;0;false;false;63;95;191;;; -210651;5;0;false;false;127;127;159;;; -210656;3;0;false;false;;;;;; -210659;1;0;false;false;63;95;191;;; -210660;1;0;false;false;;;;;; -210661;5;0;false;false;127;127;159;;; -210666;3;0;false;false;;;;;; -210669;1;0;false;false;63;95;191;;; -210670;1;0;false;false;;;;;; -210671;11;1;false;false;127;159;191;;; -210682;24;0;false;false;63;95;191;;; -210706;1;0;false;false;;;;;; -210707;4;0;false;false;127;127;159;;; -210711;3;0;false;false;;;;;; -210714;1;0;false;false;63;95;191;;; -210715;4;0;false;false;;;;;; -210719;4;0;false;false;127;127;159;;; -210723;19;0;false;false;63;95;191;;; -210742;1;0;false;false;;;;;; -210743;4;0;false;false;63;95;191;;; -210747;1;0;false;false;;;;;; -210748;8;0;false;false;63;95;191;;; -210756;1;0;false;false;;;;;; -210757;2;0;false;false;63;95;191;;; -210759;1;0;false;false;;;;;; -210760;4;0;false;false;63;95;191;;; -210764;5;0;false;false;127;127;159;;; -210769;3;0;false;false;;;;;; -210772;1;0;false;false;63;95;191;;; -210773;1;0;false;false;;;;;; -210774;5;0;false;false;127;127;159;;; -210779;3;0;false;false;;;;;; -210782;2;0;false;false;63;95;191;;; -210784;2;0;false;false;;;;;; -210786;6;1;false;false;127;0;85;;; -210792;1;0;false;false;;;;;; -210793;4;1;false;false;127;0;85;;; -210797;1;0;false;false;;;;;; -210798;51;0;false;false;0;0;0;;; -210849;1;0;false;false;;;;;; -210850;9;0;false;false;0;0;0;;; -210859;1;0;false;false;;;;;; -210860;1;0;false;false;0;0;0;;; -210861;3;0;false;false;;;;;; -210864;14;0;false;false;0;0;0;;; -210878;3;0;false;false;;;;;; -210881;2;1;false;false;127;0;85;;; -210883;1;0;false;false;;;;;; -210884;9;0;false;false;0;0;0;;; -210893;1;0;false;false;;;;;; -210894;2;0;false;false;0;0;0;;; -210896;1;0;false;false;;;;;; -210897;4;1;false;false;127;0;85;;; -210901;1;0;false;false;0;0;0;;; -210902;1;0;false;false;;;;;; -210903;35;0;false;false;0;0;0;;; -210938;3;0;false;false;;;;;; -210941;33;0;false;false;0;0;0;;; -210974;1;0;false;false;;;;;; -210975;10;0;false;false;0;0;0;;; -210985;4;0;false;false;;;;;; -210989;66;0;false;false;63;127;95;;; -211055;1;0;false;false;;;;;; -211056;2;1;false;false;127;0;85;;; -211058;1;0;false;false;;;;;; -211059;32;0;false;false;0;0;0;;; -211091;1;0;false;false;;;;;; -211092;2;0;false;false;0;0;0;;; -211094;1;0;false;false;;;;;; -211095;19;0;false;false;0;0;0;;; -211114;1;0;false;false;;;;;; -211115;1;0;false;false;0;0;0;;; -211116;4;0;false;false;;;;;; -211120;18;0;false;false;0;0;0;;; -211138;1;0;false;false;;;;;; -211139;13;0;false;false;0;0;0;;; -211152;1;0;false;false;;;;;; -211153;1;0;false;false;0;0;0;;; -211154;1;0;false;false;;;;;; -211155;3;1;false;false;127;0;85;;; -211158;1;0;false;false;;;;;; -211159;38;0;false;false;0;0;0;;; -211197;4;0;false;false;;;;;; -211201;30;0;false;false;0;0;0;;; -211231;1;0;false;false;;;;;; -211232;15;0;false;false;0;0;0;;; -211247;5;0;false;false;;;;;; -211252;18;0;false;false;0;0;0;;; -211270;1;0;false;false;;;;;; -211271;1;0;false;false;0;0;0;;; -211272;1;0;false;false;;;;;; -211273;5;1;false;false;127;0;85;;; -211278;1;0;false;false;0;0;0;;; -211279;3;0;false;false;;;;;; -211282;1;0;false;false;0;0;0;;; -211283;2;0;false;false;;;;;; -211285;1;0;false;false;0;0;0;;; -211286;2;0;false;false;;;;;; -211288;3;0;false;false;63;95;191;;; -211291;3;0;false;false;;;;;; -211294;1;0;false;false;63;95;191;;; -211295;1;0;false;false;;;;;; -211296;7;0;false;false;63;95;191;;; -211303;1;0;false;false;;;;;; -211304;3;0;false;false;63;95;191;;; -211307;1;0;false;false;;;;;; -211308;9;0;false;false;63;95;191;;; -211317;1;0;false;false;;;;;; -211318;4;0;false;false;63;95;191;;; -211322;1;0;false;false;;;;;; -211323;5;0;false;false;63;95;191;;; -211328;1;0;false;false;;;;;; -211329;9;0;false;false;63;95;191;;; -211338;3;0;false;false;;;;;; -211341;1;0;false;false;63;95;191;;; -211342;1;0;false;false;;;;;; -211343;3;0;false;false;127;127;159;;; -211346;3;0;false;false;;;;;; -211349;1;0;false;false;63;95;191;;; -211350;3;0;false;false;;;;;; -211353;1;0;false;false;63;95;191;;; -211354;1;0;false;false;;;;;; -211355;7;1;false;false;127;159;191;;; -211362;8;0;false;false;63;95;191;;; -211370;1;0;false;false;;;;;; -211371;3;0;false;false;63;95;191;;; -211374;1;0;false;false;;;;;; -211375;8;0;false;false;63;95;191;;; -211383;3;0;false;false;;;;;; -211386;1;0;false;false;63;95;191;;; -211387;1;0;false;false;;;;;; -211388;11;1;false;false;127;159;191;;; -211399;12;0;false;false;63;95;191;;; -211411;1;0;false;false;;;;;; -211412;4;0;false;false;127;127;159;;; -211416;3;0;false;false;;;;;; -211419;1;0;false;false;63;95;191;;; -211420;4;0;false;false;;;;;; -211424;4;0;false;false;127;127;159;;; -211428;21;0;false;false;63;95;191;;; -211449;1;0;false;false;;;;;; -211450;1;0;false;false;127;127;159;;; -211451;1;0;false;false;;;;;; -211452;2;0;false;false;63;95;191;;; -211454;1;0;false;false;;;;;; -211455;3;0;false;false;63;95;191;;; -211458;1;0;false;false;;;;;; -211459;8;0;false;false;63;95;191;;; -211467;1;0;false;false;;;;;; -211468;3;0;false;false;63;95;191;;; -211471;1;0;false;false;;;;;; -211472;4;0;false;false;63;95;191;;; -211476;1;0;false;false;;;;;; -211477;8;0;false;false;63;95;191;;; -211485;5;0;false;false;127;127;159;;; -211490;3;0;false;false;;;;;; -211493;1;0;false;false;63;95;191;;; -211494;4;0;false;false;;;;;; -211498;4;0;false;false;127;127;159;;; -211502;27;0;false;false;63;95;191;;; -211529;1;0;false;false;;;;;; -211530;1;0;false;false;127;127;159;;; -211531;1;0;false;false;;;;;; -211532;2;0;false;false;63;95;191;;; -211534;1;0;false;false;;;;;; -211535;3;0;false;false;63;95;191;;; -211538;1;0;false;false;;;;;; -211539;6;0;false;false;63;95;191;;; -211545;1;0;false;false;;;;;; -211546;4;0;false;false;63;95;191;;; -211550;1;0;false;false;;;;;; -211551;3;0;false;false;63;95;191;;; -211554;1;0;false;false;;;;;; -211555;6;0;false;false;63;95;191;;; -211561;1;0;false;false;;;;;; -211562;4;0;false;false;63;95;191;;; -211566;1;0;false;false;;;;;; -211567;7;0;false;false;63;95;191;;; -211574;1;0;false;false;;;;;; -211575;3;0;false;false;63;95;191;;; -211578;1;0;false;false;;;;;; -211579;8;0;false;false;63;95;191;;; -211587;5;0;false;false;127;127;159;;; -211592;3;0;false;false;;;;;; -211595;1;0;false;false;63;95;191;;; -211596;1;0;false;false;;;;;; -211597;5;0;false;false;127;127;159;;; -211602;3;0;false;false;;;;;; -211605;1;0;false;false;63;95;191;;; -211606;1;0;false;false;;;;;; -211607;11;1;false;false;127;159;191;;; -211618;24;0;false;false;63;95;191;;; -211642;1;0;false;false;;;;;; -211643;4;0;false;false;127;127;159;;; -211647;3;0;false;false;;;;;; -211650;1;0;false;false;63;95;191;;; -211651;4;0;false;false;;;;;; -211655;4;0;false;false;127;127;159;;; -211659;19;0;false;false;63;95;191;;; -211678;1;0;false;false;;;;;; -211679;4;0;false;false;63;95;191;;; -211683;1;0;false;false;;;;;; -211684;8;0;false;false;63;95;191;;; -211692;1;0;false;false;;;;;; -211693;2;0;false;false;63;95;191;;; -211695;1;0;false;false;;;;;; -211696;4;0;false;false;63;95;191;;; -211700;5;0;false;false;127;127;159;;; -211705;3;0;false;false;;;;;; -211708;1;0;false;false;63;95;191;;; -211709;1;0;false;false;;;;;; -211710;5;0;false;false;127;127;159;;; -211715;3;0;false;false;;;;;; -211718;2;0;false;false;63;95;191;;; -211720;2;0;false;false;;;;;; -211722;6;1;false;false;127;0;85;;; -211728;1;0;false;false;;;;;; -211729;4;1;false;false;127;0;85;;; -211733;1;0;false;false;;;;;; -211734;41;0;false;false;0;0;0;;; -211775;1;0;false;false;;;;;; -211776;9;0;false;false;0;0;0;;; -211785;1;0;false;false;;;;;; -211786;1;0;false;false;0;0;0;;; -211787;3;0;false;false;;;;;; -211790;14;0;false;false;0;0;0;;; -211804;3;0;false;false;;;;;; -211807;2;1;false;false;127;0;85;;; -211809;1;0;false;false;;;;;; -211810;9;0;false;false;0;0;0;;; -211819;1;0;false;false;;;;;; -211820;2;0;false;false;0;0;0;;; -211822;1;0;false;false;;;;;; -211823;4;1;false;false;127;0;85;;; -211827;1;0;false;false;0;0;0;;; -211828;1;0;false;false;;;;;; -211829;1;0;false;false;0;0;0;;; -211830;4;0;false;false;;;;;; -211834;35;0;false;false;0;0;0;;; -211869;3;0;false;false;;;;;; -211872;1;0;false;false;0;0;0;;; -211873;3;0;false;false;;;;;; -211876;28;0;false;false;0;0;0;;; -211904;1;0;false;false;;;;;; -211905;10;0;false;false;0;0;0;;; -211915;4;0;false;false;;;;;; -211919;80;0;false;false;63;127;95;;; -211999;1;0;false;false;;;;;; -212000;2;1;false;false;127;0;85;;; -212002;1;0;false;false;;;;;; -212003;27;0;false;false;0;0;0;;; -212030;1;0;false;false;;;;;; -212031;2;0;false;false;0;0;0;;; -212033;1;0;false;false;;;;;; -212034;14;0;false;false;0;0;0;;; -212048;1;0;false;false;;;;;; -212049;1;0;false;false;0;0;0;;; -212050;4;0;false;false;;;;;; -212054;18;0;false;false;0;0;0;;; -212072;1;0;false;false;;;;;; -212073;13;0;false;false;0;0;0;;; -212086;1;0;false;false;;;;;; -212087;1;0;false;false;0;0;0;;; -212088;1;0;false;false;;;;;; -212089;3;1;false;false;127;0;85;;; -212092;1;0;false;false;;;;;; -212093;38;0;false;false;0;0;0;;; -212131;4;0;false;false;;;;;; -212135;25;0;false;false;0;0;0;;; -212160;1;0;false;false;;;;;; -212161;15;0;false;false;0;0;0;;; -212176;5;0;false;false;;;;;; -212181;13;0;false;false;0;0;0;;; -212194;1;0;false;false;;;;;; -212195;1;0;false;false;0;0;0;;; -212196;1;0;false;false;;;;;; -212197;5;1;false;false;127;0;85;;; -212202;1;0;false;false;0;0;0;;; -212203;3;0;false;false;;;;;; -212206;1;0;false;false;0;0;0;;; -212207;2;0;false;false;;;;;; -212209;1;0;false;false;0;0;0;;; -212210;2;0;false;false;;;;;; -212212;3;0;false;false;63;95;191;;; -212215;3;0;false;false;;;;;; -212218;1;0;false;false;63;95;191;;; -212219;1;0;false;false;;;;;; -212220;7;0;false;false;63;95;191;;; -212227;1;0;false;false;;;;;; -212228;3;0;false;false;63;95;191;;; -212231;1;0;false;false;;;;;; -212232;9;0;false;false;63;95;191;;; -212241;1;0;false;false;;;;;; -212242;6;0;false;false;63;95;191;;; -212248;1;0;false;false;;;;;; -212249;9;0;false;false;63;95;191;;; -212258;3;0;false;false;;;;;; -212261;1;0;false;false;63;95;191;;; -212262;1;0;false;false;;;;;; -212263;3;0;false;false;127;127;159;;; -212266;3;0;false;false;;;;;; -212269;1;0;false;false;63;95;191;;; -212270;3;0;false;false;;;;;; -212273;1;0;false;false;63;95;191;;; -212274;1;0;false;false;;;;;; -212275;7;1;false;false;127;159;191;;; -212282;14;0;false;false;63;95;191;;; -212296;1;0;false;false;;;;;; -212297;3;0;false;false;63;95;191;;; -212300;1;0;false;false;;;;;; -212301;8;0;false;false;63;95;191;;; -212309;3;0;false;false;;;;;; -212312;1;0;false;false;63;95;191;;; -212313;1;0;false;false;;;;;; -212314;11;1;false;false;127;159;191;;; -212325;12;0;false;false;63;95;191;;; -212337;1;0;false;false;;;;;; -212338;4;0;false;false;127;127;159;;; -212342;3;0;false;false;;;;;; -212345;1;0;false;false;63;95;191;;; -212346;4;0;false;false;;;;;; -212350;4;0;false;false;127;127;159;;; -212354;21;0;false;false;63;95;191;;; -212375;1;0;false;false;;;;;; -212376;1;0;false;false;127;127;159;;; -212377;1;0;false;false;;;;;; -212378;2;0;false;false;63;95;191;;; -212380;1;0;false;false;;;;;; -212381;3;0;false;false;63;95;191;;; -212384;1;0;false;false;;;;;; -212385;8;0;false;false;63;95;191;;; -212393;1;0;false;false;;;;;; -212394;3;0;false;false;63;95;191;;; -212397;1;0;false;false;;;;;; -212398;4;0;false;false;63;95;191;;; -212402;1;0;false;false;;;;;; -212403;8;0;false;false;63;95;191;;; -212411;5;0;false;false;127;127;159;;; -212416;3;0;false;false;;;;;; -212419;1;0;false;false;63;95;191;;; -212420;4;0;false;false;;;;;; -212424;4;0;false;false;127;127;159;;; -212428;27;0;false;false;63;95;191;;; -212455;1;0;false;false;;;;;; -212456;1;0;false;false;127;127;159;;; -212457;1;0;false;false;;;;;; -212458;2;0;false;false;63;95;191;;; -212460;1;0;false;false;;;;;; -212461;3;0;false;false;63;95;191;;; -212464;1;0;false;false;;;;;; -212465;6;0;false;false;63;95;191;;; -212471;1;0;false;false;;;;;; -212472;4;0;false;false;63;95;191;;; -212476;1;0;false;false;;;;;; -212477;3;0;false;false;63;95;191;;; -212480;1;0;false;false;;;;;; -212481;6;0;false;false;63;95;191;;; -212487;1;0;false;false;;;;;; -212488;4;0;false;false;63;95;191;;; -212492;1;0;false;false;;;;;; -212493;7;0;false;false;63;95;191;;; -212500;1;0;false;false;;;;;; -212501;3;0;false;false;63;95;191;;; -212504;1;0;false;false;;;;;; -212505;8;0;false;false;63;95;191;;; -212513;5;0;false;false;127;127;159;;; -212518;3;0;false;false;;;;;; -212521;1;0;false;false;63;95;191;;; -212522;1;0;false;false;;;;;; -212523;5;0;false;false;127;127;159;;; -212528;3;0;false;false;;;;;; -212531;1;0;false;false;63;95;191;;; -212532;1;0;false;false;;;;;; -212533;11;1;false;false;127;159;191;;; -212544;24;0;false;false;63;95;191;;; -212568;1;0;false;false;;;;;; -212569;4;0;false;false;127;127;159;;; -212573;3;0;false;false;;;;;; -212576;1;0;false;false;63;95;191;;; -212577;4;0;false;false;;;;;; -212581;4;0;false;false;127;127;159;;; -212585;19;0;false;false;63;95;191;;; -212604;1;0;false;false;;;;;; -212605;4;0;false;false;63;95;191;;; -212609;1;0;false;false;;;;;; -212610;8;0;false;false;63;95;191;;; -212618;1;0;false;false;;;;;; -212619;2;0;false;false;63;95;191;;; -212621;1;0;false;false;;;;;; -212622;4;0;false;false;63;95;191;;; -212626;5;0;false;false;127;127;159;;; -212631;3;0;false;false;;;;;; -212634;1;0;false;false;63;95;191;;; -212635;1;0;false;false;;;;;; -212636;5;0;false;false;127;127;159;;; -212641;3;0;false;false;;;;;; -212644;2;0;false;false;63;95;191;;; -212646;2;0;false;false;;;;;; -212648;6;1;false;false;127;0;85;;; -212654;1;0;false;false;;;;;; -212655;4;1;false;false;127;0;85;;; -212659;1;0;false;false;;;;;; -212660;35;0;false;false;0;0;0;;; -212695;1;0;false;false;;;;;; -212696;15;0;false;false;0;0;0;;; -212711;1;0;false;false;;;;;; -212712;1;0;false;false;0;0;0;;; -212713;3;0;false;false;;;;;; -212716;14;0;false;false;0;0;0;;; -212730;3;0;false;false;;;;;; -212733;2;1;false;false;127;0;85;;; -212735;1;0;false;false;;;;;; -212736;15;0;false;false;0;0;0;;; -212751;1;0;false;false;;;;;; -212752;2;0;false;false;0;0;0;;; -212754;1;0;false;false;;;;;; -212755;4;1;false;false;127;0;85;;; -212759;1;0;false;false;0;0;0;;; -212760;1;0;false;false;;;;;; -212761;1;0;false;false;0;0;0;;; -212762;4;0;false;false;;;;;; -212766;35;0;false;false;0;0;0;;; -212801;3;0;false;false;;;;;; -212804;1;0;false;false;0;0;0;;; -212805;3;0;false;false;;;;;; -212808;26;0;false;false;0;0;0;;; -212834;1;0;false;false;;;;;; -212835;16;0;false;false;0;0;0;;; -212851;3;0;false;false;;;;;; -212854;1;0;false;false;0;0;0;;; -212855;2;0;false;false;;;;;; -212857;3;0;false;false;63;95;191;;; -212860;3;0;false;false;;;;;; -212863;1;0;false;false;63;95;191;;; -212864;1;0;false;false;;;;;; -212865;7;0;false;false;63;95;191;;; -212872;1;0;false;false;;;;;; -212873;3;0;false;false;63;95;191;;; -212876;1;0;false;false;;;;;; -212877;9;0;false;false;63;95;191;;; -212886;1;0;false;false;;;;;; -212887;9;0;false;false;63;95;191;;; -212896;1;0;false;false;;;;;; -212897;9;0;false;false;63;95;191;;; -212906;3;0;false;false;;;;;; -212909;1;0;false;false;63;95;191;;; -212910;1;0;false;false;;;;;; -212911;3;0;false;false;127;127;159;;; -212914;3;0;false;false;;;;;; -212917;1;0;false;false;63;95;191;;; -212918;3;0;false;false;;;;;; -212921;1;0;false;false;63;95;191;;; -212922;1;0;false;false;;;;;; -212923;7;1;false;false;127;159;191;;; -212930;8;0;false;false;63;95;191;;; -212938;1;0;false;false;;;;;; -212939;3;0;false;false;63;95;191;;; -212942;1;0;false;false;;;;;; -212943;8;0;false;false;63;95;191;;; -212951;3;0;false;false;;;;;; -212954;1;0;false;false;63;95;191;;; -212955;1;0;false;false;;;;;; -212956;11;1;false;false;127;159;191;;; -212967;12;0;false;false;63;95;191;;; -212979;1;0;false;false;;;;;; -212980;4;0;false;false;127;127;159;;; -212984;3;0;false;false;;;;;; -212987;1;0;false;false;63;95;191;;; -212988;4;0;false;false;;;;;; -212992;4;0;false;false;127;127;159;;; -212996;21;0;false;false;63;95;191;;; -213017;1;0;false;false;;;;;; -213018;1;0;false;false;127;127;159;;; -213019;1;0;false;false;;;;;; -213020;2;0;false;false;63;95;191;;; -213022;1;0;false;false;;;;;; -213023;3;0;false;false;63;95;191;;; -213026;1;0;false;false;;;;;; -213027;8;0;false;false;63;95;191;;; -213035;1;0;false;false;;;;;; -213036;3;0;false;false;63;95;191;;; -213039;1;0;false;false;;;;;; -213040;4;0;false;false;63;95;191;;; -213044;1;0;false;false;;;;;; -213045;8;0;false;false;63;95;191;;; -213053;5;0;false;false;127;127;159;;; -213058;3;0;false;false;;;;;; -213061;1;0;false;false;63;95;191;;; -213062;4;0;false;false;;;;;; -213066;4;0;false;false;127;127;159;;; -213070;27;0;false;false;63;95;191;;; -213097;1;0;false;false;;;;;; -213098;1;0;false;false;127;127;159;;; -213099;1;0;false;false;;;;;; -213100;2;0;false;false;63;95;191;;; -213102;1;0;false;false;;;;;; -213103;3;0;false;false;63;95;191;;; -213106;1;0;false;false;;;;;; -213107;6;0;false;false;63;95;191;;; -213113;1;0;false;false;;;;;; -213114;4;0;false;false;63;95;191;;; -213118;1;0;false;false;;;;;; -213119;3;0;false;false;63;95;191;;; -213122;1;0;false;false;;;;;; -213123;6;0;false;false;63;95;191;;; -213129;1;0;false;false;;;;;; -213130;4;0;false;false;63;95;191;;; -213134;1;0;false;false;;;;;; -213135;7;0;false;false;63;95;191;;; -213142;1;0;false;false;;;;;; -213143;3;0;false;false;63;95;191;;; -213146;1;0;false;false;;;;;; -213147;8;0;false;false;63;95;191;;; -213155;5;0;false;false;127;127;159;;; -213160;3;0;false;false;;;;;; -213163;1;0;false;false;63;95;191;;; -213164;1;0;false;false;;;;;; -213165;5;0;false;false;127;127;159;;; -213170;3;0;false;false;;;;;; -213173;1;0;false;false;63;95;191;;; -213174;1;0;false;false;;;;;; -213175;11;1;false;false;127;159;191;;; -213186;24;0;false;false;63;95;191;;; -213210;1;0;false;false;;;;;; -213211;4;0;false;false;127;127;159;;; -213215;3;0;false;false;;;;;; -213218;1;0;false;false;63;95;191;;; -213219;4;0;false;false;;;;;; -213223;4;0;false;false;127;127;159;;; -213227;19;0;false;false;63;95;191;;; -213246;1;0;false;false;;;;;; -213247;4;0;false;false;63;95;191;;; -213251;1;0;false;false;;;;;; -213252;8;0;false;false;63;95;191;;; -213260;1;0;false;false;;;;;; -213261;2;0;false;false;63;95;191;;; -213263;1;0;false;false;;;;;; -213264;4;0;false;false;63;95;191;;; -213268;5;0;false;false;127;127;159;;; -213273;3;0;false;false;;;;;; -213276;1;0;false;false;63;95;191;;; -213277;1;0;false;false;;;;;; -213278;5;0;false;false;127;127;159;;; -213283;3;0;false;false;;;;;; -213286;2;0;false;false;63;95;191;;; -213288;2;0;false;false;;;;;; -213290;6;1;false;false;127;0;85;;; -213296;1;0;false;false;;;;;; -213297;4;1;false;false;127;0;85;;; -213301;1;0;false;false;;;;;; -213302;41;0;false;false;0;0;0;;; -213343;1;0;false;false;;;;;; -213344;9;0;false;false;0;0;0;;; -213353;1;0;false;false;;;;;; -213354;1;0;false;false;0;0;0;;; -213355;3;0;false;false;;;;;; -213358;14;0;false;false;0;0;0;;; -213372;3;0;false;false;;;;;; -213375;2;1;false;false;127;0;85;;; -213377;1;0;false;false;;;;;; -213378;9;0;false;false;0;0;0;;; -213387;1;0;false;false;;;;;; -213388;2;0;false;false;0;0;0;;; -213390;1;0;false;false;;;;;; -213391;4;1;false;false;127;0;85;;; -213395;1;0;false;false;0;0;0;;; -213396;1;0;false;false;;;;;; -213397;1;0;false;false;0;0;0;;; -213398;4;0;false;false;;;;;; -213402;35;0;false;false;0;0;0;;; -213437;3;0;false;false;;;;;; -213440;1;0;false;false;0;0;0;;; -213441;3;0;false;false;;;;;; -213444;29;0;false;false;0;0;0;;; -213473;1;0;false;false;;;;;; -213474;10;0;false;false;0;0;0;;; -213484;3;0;false;false;;;;;; -213487;1;0;false;false;0;0;0;;; -213488;2;0;false;false;;;;;; -213490;3;0;false;false;63;95;191;;; -213493;3;0;false;false;;;;;; -213496;1;0;false;false;63;95;191;;; -213497;1;0;false;false;;;;;; -213498;7;0;false;false;63;95;191;;; -213505;1;0;false;false;;;;;; -213506;3;0;false;false;63;95;191;;; -213509;1;0;false;false;;;;;; -213510;9;0;false;false;63;95;191;;; -213519;1;0;false;false;;;;;; -213520;6;0;false;false;63;95;191;;; -213526;1;0;false;false;;;;;; -213527;9;0;false;false;63;95;191;;; -213536;3;0;false;false;;;;;; -213539;1;0;false;false;63;95;191;;; -213540;1;0;false;false;;;;;; -213541;3;0;false;false;127;127;159;;; -213544;3;0;false;false;;;;;; -213547;1;0;false;false;63;95;191;;; -213548;3;0;false;false;;;;;; -213551;1;0;false;false;63;95;191;;; -213552;1;0;false;false;;;;;; -213553;7;1;false;false;127;159;191;;; -213560;14;0;false;false;63;95;191;;; -213574;1;0;false;false;;;;;; -213575;3;0;false;false;63;95;191;;; -213578;1;0;false;false;;;;;; -213579;8;0;false;false;63;95;191;;; -213587;3;0;false;false;;;;;; -213590;1;0;false;false;63;95;191;;; -213591;1;0;false;false;;;;;; -213592;11;1;false;false;127;159;191;;; -213603;12;0;false;false;63;95;191;;; -213615;1;0;false;false;;;;;; -213616;4;0;false;false;127;127;159;;; -213620;3;0;false;false;;;;;; -213623;1;0;false;false;63;95;191;;; -213624;4;0;false;false;;;;;; -213628;4;0;false;false;127;127;159;;; -213632;21;0;false;false;63;95;191;;; -213653;1;0;false;false;;;;;; -213654;1;0;false;false;127;127;159;;; -213655;1;0;false;false;;;;;; -213656;2;0;false;false;63;95;191;;; -213658;1;0;false;false;;;;;; -213659;3;0;false;false;63;95;191;;; -213662;1;0;false;false;;;;;; -213663;8;0;false;false;63;95;191;;; -213671;1;0;false;false;;;;;; -213672;3;0;false;false;63;95;191;;; -213675;1;0;false;false;;;;;; -213676;4;0;false;false;63;95;191;;; -213680;1;0;false;false;;;;;; -213681;8;0;false;false;63;95;191;;; -213689;5;0;false;false;127;127;159;;; -213694;3;0;false;false;;;;;; -213697;1;0;false;false;63;95;191;;; -213698;4;0;false;false;;;;;; -213702;4;0;false;false;127;127;159;;; -213706;27;0;false;false;63;95;191;;; -213733;1;0;false;false;;;;;; -213734;1;0;false;false;127;127;159;;; -213735;1;0;false;false;;;;;; -213736;2;0;false;false;63;95;191;;; -213738;1;0;false;false;;;;;; -213739;3;0;false;false;63;95;191;;; -213742;1;0;false;false;;;;;; -213743;6;0;false;false;63;95;191;;; -213749;1;0;false;false;;;;;; -213750;4;0;false;false;63;95;191;;; -213754;1;0;false;false;;;;;; -213755;3;0;false;false;63;95;191;;; -213758;1;0;false;false;;;;;; -213759;6;0;false;false;63;95;191;;; -213765;1;0;false;false;;;;;; -213766;4;0;false;false;63;95;191;;; -213770;1;0;false;false;;;;;; -213771;7;0;false;false;63;95;191;;; -213778;1;0;false;false;;;;;; -213779;3;0;false;false;63;95;191;;; -213782;1;0;false;false;;;;;; -213783;8;0;false;false;63;95;191;;; -213791;5;0;false;false;127;127;159;;; -213796;3;0;false;false;;;;;; -213799;1;0;false;false;63;95;191;;; -213800;1;0;false;false;;;;;; -213801;5;0;false;false;127;127;159;;; -213806;3;0;false;false;;;;;; -213809;1;0;false;false;63;95;191;;; -213810;1;0;false;false;;;;;; -213811;11;1;false;false;127;159;191;;; -213822;24;0;false;false;63;95;191;;; -213846;1;0;false;false;;;;;; -213847;4;0;false;false;127;127;159;;; -213851;3;0;false;false;;;;;; -213854;1;0;false;false;63;95;191;;; -213855;4;0;false;false;;;;;; -213859;4;0;false;false;127;127;159;;; -213863;19;0;false;false;63;95;191;;; -213882;1;0;false;false;;;;;; -213883;4;0;false;false;63;95;191;;; -213887;1;0;false;false;;;;;; -213888;8;0;false;false;63;95;191;;; -213896;1;0;false;false;;;;;; -213897;2;0;false;false;63;95;191;;; -213899;1;0;false;false;;;;;; -213900;4;0;false;false;63;95;191;;; -213904;5;0;false;false;127;127;159;;; -213909;3;0;false;false;;;;;; -213912;1;0;false;false;63;95;191;;; -213913;1;0;false;false;;;;;; -213914;5;0;false;false;127;127;159;;; -213919;3;0;false;false;;;;;; -213922;2;0;false;false;63;95;191;;; -213924;2;0;false;false;;;;;; -213926;6;1;false;false;127;0;85;;; -213932;1;0;false;false;;;;;; -213933;4;1;false;false;127;0;85;;; -213937;1;0;false;false;;;;;; -213938;35;0;false;false;0;0;0;;; -213973;1;0;false;false;;;;;; -213974;15;0;false;false;0;0;0;;; -213989;1;0;false;false;;;;;; -213990;1;0;false;false;0;0;0;;; -213991;3;0;false;false;;;;;; -213994;14;0;false;false;0;0;0;;; -214008;3;0;false;false;;;;;; -214011;2;1;false;false;127;0;85;;; -214013;1;0;false;false;;;;;; -214014;15;0;false;false;0;0;0;;; -214029;1;0;false;false;;;;;; -214030;2;0;false;false;0;0;0;;; -214032;1;0;false;false;;;;;; -214033;4;1;false;false;127;0;85;;; -214037;1;0;false;false;0;0;0;;; -214038;1;0;false;false;;;;;; -214039;1;0;false;false;0;0;0;;; -214040;4;0;false;false;;;;;; -214044;35;0;false;false;0;0;0;;; -214079;3;0;false;false;;;;;; -214082;1;0;false;false;0;0;0;;; -214083;3;0;false;false;;;;;; -214086;26;0;false;false;0;0;0;;; -214112;1;0;false;false;;;;;; -214113;16;0;false;false;0;0;0;;; -214129;3;0;false;false;;;;;; -214132;1;0;false;false;0;0;0;;; -214133;2;0;false;false;;;;;; -214135;3;0;false;false;63;95;191;;; -214138;3;0;false;false;;;;;; -214141;1;0;false;false;63;95;191;;; -214142;1;0;false;false;;;;;; -214143;7;0;false;false;63;95;191;;; -214150;1;0;false;false;;;;;; -214151;3;0;false;false;63;95;191;;; -214154;1;0;false;false;;;;;; -214155;9;0;false;false;63;95;191;;; -214164;1;0;false;false;;;;;; -214165;3;0;false;false;63;95;191;;; -214168;1;0;false;false;;;;;; -214169;6;0;false;false;63;95;191;;; -214175;1;0;false;false;;;;;; -214176;9;0;false;false;63;95;191;;; -214185;3;0;false;false;;;;;; -214188;1;0;false;false;63;95;191;;; -214189;1;0;false;false;;;;;; -214190;3;0;false;false;127;127;159;;; -214193;3;0;false;false;;;;;; -214196;1;0;false;false;63;95;191;;; -214197;3;0;false;false;;;;;; -214200;1;0;false;false;63;95;191;;; -214201;1;0;false;false;;;;;; -214202;7;1;false;false;127;159;191;;; -214209;8;0;false;false;63;95;191;;; -214217;1;0;false;false;;;;;; -214218;3;0;false;false;63;95;191;;; -214221;1;0;false;false;;;;;; -214222;8;0;false;false;63;95;191;;; -214230;3;0;false;false;;;;;; -214233;1;0;false;false;63;95;191;;; -214234;1;0;false;false;;;;;; -214235;11;1;false;false;127;159;191;;; -214246;12;0;false;false;63;95;191;;; -214258;1;0;false;false;;;;;; -214259;4;0;false;false;127;127;159;;; -214263;3;0;false;false;;;;;; -214266;1;0;false;false;63;95;191;;; -214267;4;0;false;false;;;;;; -214271;4;0;false;false;127;127;159;;; -214275;21;0;false;false;63;95;191;;; -214296;1;0;false;false;;;;;; -214297;1;0;false;false;127;127;159;;; -214298;1;0;false;false;;;;;; -214299;2;0;false;false;63;95;191;;; -214301;1;0;false;false;;;;;; -214302;3;0;false;false;63;95;191;;; -214305;1;0;false;false;;;;;; -214306;8;0;false;false;63;95;191;;; -214314;1;0;false;false;;;;;; -214315;3;0;false;false;63;95;191;;; -214318;1;0;false;false;;;;;; -214319;4;0;false;false;63;95;191;;; -214323;1;0;false;false;;;;;; -214324;8;0;false;false;63;95;191;;; -214332;5;0;false;false;127;127;159;;; -214337;3;0;false;false;;;;;; -214340;1;0;false;false;63;95;191;;; -214341;4;0;false;false;;;;;; -214345;4;0;false;false;127;127;159;;; -214349;27;0;false;false;63;95;191;;; -214376;1;0;false;false;;;;;; -214377;1;0;false;false;127;127;159;;; -214378;1;0;false;false;;;;;; -214379;2;0;false;false;63;95;191;;; -214381;1;0;false;false;;;;;; -214382;3;0;false;false;63;95;191;;; -214385;1;0;false;false;;;;;; -214386;6;0;false;false;63;95;191;;; -214392;1;0;false;false;;;;;; -214393;4;0;false;false;63;95;191;;; -214397;1;0;false;false;;;;;; -214398;3;0;false;false;63;95;191;;; -214401;1;0;false;false;;;;;; -214402;6;0;false;false;63;95;191;;; -214408;1;0;false;false;;;;;; -214409;4;0;false;false;63;95;191;;; -214413;1;0;false;false;;;;;; -214414;7;0;false;false;63;95;191;;; -214421;1;0;false;false;;;;;; -214422;3;0;false;false;63;95;191;;; -214425;1;0;false;false;;;;;; -214426;8;0;false;false;63;95;191;;; -214434;5;0;false;false;127;127;159;;; -214439;3;0;false;false;;;;;; -214442;1;0;false;false;63;95;191;;; -214443;1;0;false;false;;;;;; -214444;5;0;false;false;127;127;159;;; -214449;3;0;false;false;;;;;; -214452;1;0;false;false;63;95;191;;; -214453;1;0;false;false;;;;;; -214454;11;1;false;false;127;159;191;;; -214465;24;0;false;false;63;95;191;;; -214489;1;0;false;false;;;;;; -214490;4;0;false;false;127;127;159;;; -214494;3;0;false;false;;;;;; -214497;1;0;false;false;63;95;191;;; -214498;4;0;false;false;;;;;; -214502;4;0;false;false;127;127;159;;; -214506;19;0;false;false;63;95;191;;; -214525;1;0;false;false;;;;;; -214526;4;0;false;false;63;95;191;;; -214530;1;0;false;false;;;;;; -214531;8;0;false;false;63;95;191;;; -214539;1;0;false;false;;;;;; -214540;2;0;false;false;63;95;191;;; -214542;1;0;false;false;;;;;; -214543;4;0;false;false;63;95;191;;; -214547;5;0;false;false;127;127;159;;; -214552;3;0;false;false;;;;;; -214555;1;0;false;false;63;95;191;;; -214556;1;0;false;false;;;;;; -214557;5;0;false;false;127;127;159;;; -214562;3;0;false;false;;;;;; -214565;2;0;false;false;63;95;191;;; -214567;2;0;false;false;;;;;; -214569;6;1;false;false;127;0;85;;; -214575;1;0;false;false;;;;;; -214576;4;1;false;false;127;0;85;;; -214580;1;0;false;false;;;;;; -214581;41;0;false;false;0;0;0;;; -214622;1;0;false;false;;;;;; -214623;9;0;false;false;0;0;0;;; -214632;1;0;false;false;;;;;; -214633;1;0;false;false;0;0;0;;; -214634;3;0;false;false;;;;;; -214637;2;1;false;false;127;0;85;;; -214639;1;0;false;false;;;;;; -214640;9;0;false;false;0;0;0;;; -214649;1;0;false;false;;;;;; -214650;2;0;false;false;0;0;0;;; -214652;1;0;false;false;;;;;; -214653;4;1;false;false;127;0;85;;; -214657;1;0;false;false;0;0;0;;; -214658;1;0;false;false;;;;;; -214659;35;0;false;false;0;0;0;;; -214694;3;0;false;false;;;;;; -214697;25;0;false;false;0;0;0;;; -214722;1;0;false;false;;;;;; -214723;10;0;false;false;0;0;0;;; -214733;3;0;false;false;;;;;; -214736;1;0;false;false;0;0;0;;; -214737;2;0;false;false;;;;;; -214739;3;0;false;false;63;95;191;;; -214742;4;0;false;false;;;;;; -214746;1;0;false;false;63;95;191;;; -214747;1;0;false;false;;;;;; -214748;8;0;false;false;63;95;191;;; -214756;1;0;false;false;;;;;; -214757;3;0;false;false;63;95;191;;; -214760;1;0;false;false;;;;;; -214761;6;0;false;false;63;95;191;;; -214767;1;0;false;false;;;;;; -214768;2;0;false;false;63;95;191;;; -214770;1;0;false;false;;;;;; -214771;3;0;false;false;63;95;191;;; -214774;1;0;false;false;;;;;; -214775;5;0;false;false;63;95;191;;; -214780;1;0;false;false;;;;;; -214781;5;0;false;false;63;95;191;;; -214786;1;0;false;false;;;;;; -214787;4;0;false;false;63;95;191;;; -214791;1;0;false;false;;;;;; -214792;3;0;false;false;63;95;191;;; -214795;1;0;false;false;;;;;; -214796;7;0;false;false;63;95;191;;; -214803;2;0;false;false;;;;;; -214805;4;0;false;false;63;95;191;;; -214809;1;0;false;false;;;;;; -214810;6;0;false;false;63;95;191;;; -214816;3;0;false;false;;;;;; -214819;1;0;false;false;63;95;191;;; -214820;1;0;false;false;;;;;; -214821;11;0;false;false;63;95;191;;; -214832;1;0;false;false;;;;;; -214833;7;0;false;false;63;95;191;;; -214840;1;0;false;false;;;;;; -214841;3;0;false;false;63;95;191;;; -214844;1;0;false;false;;;;;; -214845;6;0;false;false;63;95;191;;; -214851;1;0;false;false;;;;;; -214852;2;0;false;false;63;95;191;;; -214854;1;0;false;false;;;;;; -214855;3;0;false;false;63;95;191;;; -214858;1;0;false;false;;;;;; -214859;5;0;false;false;63;95;191;;; -214864;1;0;false;false;;;;;; -214865;5;0;false;false;63;95;191;;; -214870;1;0;false;false;;;;;; -214871;3;0;false;false;63;95;191;;; -214874;1;0;false;false;;;;;; -214875;4;0;false;false;63;95;191;;; -214879;1;0;false;false;;;;;; -214880;4;0;false;false;63;95;191;;; -214884;1;0;false;false;;;;;; -214885;3;0;false;false;63;95;191;;; -214888;3;0;false;false;;;;;; -214891;1;0;false;false;63;95;191;;; -214892;1;0;false;false;;;;;; -214893;3;0;false;false;63;95;191;;; -214896;1;0;false;false;;;;;; -214897;3;0;false;false;63;95;191;;; -214900;1;0;false;false;;;;;; -214901;7;0;false;false;63;95;191;;; -214908;4;0;false;false;;;;;; -214912;1;0;false;false;63;95;191;;; -214913;1;0;false;false;;;;;; -214914;3;0;false;false;127;127;159;;; -214917;3;0;false;false;;;;;; -214920;1;0;false;false;63;95;191;;; -214921;1;0;false;false;;;;;; -214922;6;0;false;false;63;95;191;;; -214928;1;0;false;false;;;;;; -214929;3;0;false;false;63;95;191;;; -214932;1;0;false;false;;;;;; -214933;2;0;false;false;63;95;191;;; -214935;1;0;false;false;;;;;; -214936;6;0;false;false;63;95;191;;; -214942;1;0;false;false;;;;;; -214943;2;0;false;false;63;95;191;;; -214945;1;0;false;false;;;;;; -214946;1;0;false;false;63;95;191;;; -214947;1;0;false;false;;;;;; -214948;17;0;false;false;63;95;191;;; -214965;1;0;false;false;;;;;; -214966;3;0;false;false;63;95;191;;; -214969;1;0;false;false;;;;;; -214970;4;0;false;false;63;95;191;;; -214974;1;0;false;false;;;;;; -214975;3;0;false;false;63;95;191;;; -214978;1;0;false;false;;;;;; -214979;5;0;false;false;63;95;191;;; -214984;1;0;false;false;;;;;; -214985;3;0;false;false;63;95;191;;; -214988;4;0;false;false;;;;;; -214992;1;0;false;false;63;95;191;;; -214993;1;0;false;false;;;;;; -214994;8;0;false;false;63;95;191;;; -215002;1;0;false;false;;;;;; -215003;9;0;false;false;63;95;191;;; -215012;1;0;false;false;;;;;; -215013;3;0;false;false;63;95;191;;; -215016;1;0;false;false;;;;;; -215017;7;0;false;false;63;95;191;;; -215024;3;0;false;false;;;;;; -215027;1;0;false;false;63;95;191;;; -215028;1;0;false;false;;;;;; -215029;4;0;false;false;127;127;159;;; -215033;3;0;false;false;;;;;; -215036;1;0;false;false;63;95;191;;; -215037;3;0;false;false;;;;;; -215040;1;0;false;false;63;95;191;;; -215041;1;0;false;false;;;;;; -215042;7;1;false;false;127;159;191;;; -215049;5;0;false;false;63;95;191;;; -215054;1;0;false;false;;;;;; -215055;6;0;false;false;63;95;191;;; -215061;1;0;false;false;;;;;; -215062;2;0;false;false;63;95;191;;; -215064;1;0;false;false;;;;;; -215065;5;0;false;false;63;95;191;;; -215070;1;0;false;false;;;;;; -215071;9;0;false;false;63;95;191;;; -215080;1;0;false;false;;;;;; -215081;5;0;false;false;63;95;191;;; -215086;1;0;false;false;;;;;; -215087;6;0;false;false;63;95;191;;; -215093;1;0;false;false;;;;;; -215094;4;0;false;false;63;95;191;;; -215098;1;0;false;false;;;;;; -215099;2;0;false;false;63;95;191;;; -215101;1;0;false;false;;;;;; -215102;7;0;false;false;63;95;191;;; -215109;3;0;false;false;;;;;; -215112;1;0;false;false;63;95;191;;; -215113;1;0;false;false;;;;;; -215114;7;1;false;false;127;159;191;;; -215121;6;0;false;false;63;95;191;;; -215127;1;0;false;false;;;;;; -215128;6;0;false;false;63;95;191;;; -215134;1;0;false;false;;;;;; -215135;2;0;false;false;63;95;191;;; -215137;1;0;false;false;;;;;; -215138;3;0;false;false;63;95;191;;; -215141;1;0;false;false;;;;;; -215142;5;0;false;false;63;95;191;;; -215147;1;0;false;false;;;;;; -215148;2;0;false;false;63;95;191;;; -215150;1;0;false;false;;;;;; -215151;6;0;false;false;63;95;191;;; -215157;1;0;false;false;;;;;; -215158;6;0;false;false;63;95;191;;; -215164;1;0;false;false;;;;;; -215165;2;0;false;false;63;95;191;;; -215167;3;0;false;false;;;;;; -215170;1;0;false;false;63;95;191;;; -215171;1;0;false;false;;;;;; -215172;7;1;false;false;127;159;191;;; -215179;6;0;false;false;63;95;191;;; -215185;1;0;false;false;;;;;; -215186;10;0;false;false;63;95;191;;; -215196;1;0;false;false;;;;;; -215197;7;0;false;false;63;95;191;;; -215204;1;0;false;false;;;;;; -215205;10;0;false;false;63;95;191;;; -215215;1;0;false;false;;;;;; -215216;3;0;false;false;63;95;191;;; -215219;1;0;false;false;;;;;; -215220;3;0;false;false;63;95;191;;; -215223;1;0;false;false;;;;;; -215224;5;0;false;false;63;95;191;;; -215229;1;0;false;false;;;;;; -215230;12;0;false;false;63;95;191;;; -215242;3;0;false;false;;;;;; -215245;1;0;false;false;63;95;191;;; -215246;1;0;false;false;;;;;; -215247;3;0;false;false;63;95;191;;; -215250;1;0;false;false;;;;;; -215251;6;0;false;false;63;95;191;;; -215257;1;0;false;false;;;;;; -215258;6;0;false;false;63;95;191;;; -215264;1;0;false;false;;;;;; -215265;3;0;false;false;63;95;191;;; -215268;1;0;false;false;;;;;; -215269;7;0;false;false;63;95;191;;; -215276;1;0;false;false;;;;;; -215277;3;0;false;false;63;95;191;;; -215280;1;0;false;false;;;;;; -215281;6;0;false;false;63;95;191;;; -215287;1;0;false;false;;;;;; -215288;2;0;false;false;63;95;191;;; -215290;1;0;false;false;;;;;; -215291;6;0;false;false;63;95;191;;; -215297;1;0;false;false;;;;;; -215298;3;0;false;false;63;95;191;;; -215301;1;0;false;false;;;;;; -215302;9;0;false;false;63;95;191;;; -215311;1;0;false;false;;;;;; -215312;5;0;false;false;63;95;191;;; -215317;4;0;false;false;;;;;; -215321;1;0;false;false;63;95;191;;; -215322;1;0;false;false;;;;;; -215323;3;0;false;false;63;95;191;;; -215326;1;0;false;false;;;;;; -215327;7;0;false;false;63;95;191;;; -215334;1;0;false;false;;;;;; -215335;3;0;false;false;63;95;191;;; -215338;1;0;false;false;;;;;; -215339;5;0;false;false;63;95;191;;; -215344;1;0;false;false;;;;;; -215345;9;0;false;false;63;95;191;;; -215354;1;0;false;false;;;;;; -215355;2;0;false;false;63;95;191;;; -215357;1;0;false;false;;;;;; -215358;9;0;false;false;63;95;191;;; -215367;1;0;false;false;;;;;; -215368;2;0;false;false;63;95;191;;; -215370;1;0;false;false;;;;;; -215371;3;0;false;false;63;95;191;;; -215374;1;0;false;false;;;;;; -215375;6;0;false;false;63;95;191;;; -215381;1;0;false;false;;;;;; -215382;2;0;false;false;63;95;191;;; -215384;1;0;false;false;;;;;; -215385;7;0;false;false;63;95;191;;; -215392;3;0;false;false;;;;;; -215395;1;0;false;false;63;95;191;;; -215396;1;0;false;false;;;;;; -215397;2;0;false;false;63;95;191;;; -215399;1;0;false;false;;;;;; -215400;3;0;false;false;63;95;191;;; -215403;1;0;false;false;;;;;; -215404;3;0;false;false;63;95;191;;; -215407;1;0;false;false;127;127;159;;; -215408;8;0;false;false;63;95;191;;; -215416;1;0;false;false;;;;;; -215417;4;0;false;false;63;95;191;;; -215421;1;0;false;false;;;;;; -215422;3;0;false;false;63;95;191;;; -215425;1;0;false;false;;;;;; -215426;2;0;false;false;63;95;191;;; -215428;1;0;false;false;;;;;; -215429;5;0;false;false;63;95;191;;; -215434;3;0;false;false;;;;;; -215437;1;0;false;false;63;95;191;;; -215438;1;0;false;false;;;;;; -215439;11;1;false;false;127;159;191;;; -215450;12;0;false;false;63;95;191;;; -215462;1;0;false;false;;;;;; -215463;4;0;false;false;127;127;159;;; -215467;3;0;false;false;;;;;; -215470;1;0;false;false;63;95;191;;; -215471;4;0;false;false;;;;;; -215475;4;0;false;false;127;127;159;;; -215479;21;0;false;false;63;95;191;;; -215500;1;0;false;false;;;;;; -215501;1;0;false;false;127;127;159;;; -215502;1;0;false;false;;;;;; -215503;2;0;false;false;63;95;191;;; -215505;1;0;false;false;;;;;; -215506;3;0;false;false;63;95;191;;; -215509;1;0;false;false;;;;;; -215510;8;0;false;false;63;95;191;;; -215518;1;0;false;false;;;;;; -215519;3;0;false;false;63;95;191;;; -215522;1;0;false;false;;;;;; -215523;4;0;false;false;63;95;191;;; -215527;1;0;false;false;;;;;; -215528;8;0;false;false;63;95;191;;; -215536;5;0;false;false;127;127;159;;; -215541;3;0;false;false;;;;;; -215544;1;0;false;false;63;95;191;;; -215545;4;0;false;false;;;;;; -215549;4;0;false;false;127;127;159;;; -215553;27;0;false;false;63;95;191;;; -215580;1;0;false;false;;;;;; -215581;1;0;false;false;127;127;159;;; -215582;1;0;false;false;;;;;; -215583;2;0;false;false;63;95;191;;; -215585;1;0;false;false;;;;;; -215586;3;0;false;false;63;95;191;;; -215589;1;0;false;false;;;;;; -215590;6;0;false;false;63;95;191;;; -215596;1;0;false;false;;;;;; -215597;4;0;false;false;63;95;191;;; -215601;1;0;false;false;;;;;; -215602;3;0;false;false;63;95;191;;; -215605;1;0;false;false;;;;;; -215606;6;0;false;false;63;95;191;;; -215612;1;0;false;false;;;;;; -215613;4;0;false;false;63;95;191;;; -215617;1;0;false;false;;;;;; -215618;7;0;false;false;63;95;191;;; -215625;1;0;false;false;;;;;; -215626;3;0;false;false;63;95;191;;; -215629;1;0;false;false;;;;;; -215630;8;0;false;false;63;95;191;;; -215638;5;0;false;false;127;127;159;;; -215643;3;0;false;false;;;;;; -215646;1;0;false;false;63;95;191;;; -215647;1;0;false;false;;;;;; -215648;5;0;false;false;127;127;159;;; -215653;3;0;false;false;;;;;; -215656;1;0;false;false;63;95;191;;; -215657;1;0;false;false;;;;;; -215658;11;1;false;false;127;159;191;;; -215669;24;0;false;false;63;95;191;;; -215693;1;0;false;false;;;;;; -215694;4;0;false;false;127;127;159;;; -215698;3;0;false;false;;;;;; -215701;1;0;false;false;63;95;191;;; -215702;3;0;false;false;;;;;; -215705;4;0;false;false;127;127;159;;; -215709;19;0;false;false;63;95;191;;; -215728;1;0;false;false;;;;;; -215729;4;0;false;false;63;95;191;;; -215733;1;0;false;false;;;;;; -215734;6;0;false;false;63;95;191;;; -215740;1;0;false;false;;;;;; -215741;5;0;false;false;63;95;191;;; -215746;1;0;false;false;;;;;; -215747;2;0;false;false;63;95;191;;; -215749;1;0;false;false;;;;;; -215750;3;0;false;false;63;95;191;;; -215753;1;0;false;false;;;;;; -215754;2;0;false;false;63;95;191;;; -215756;1;0;false;false;;;;;; -215757;7;0;false;false;63;95;191;;; -215764;1;0;false;false;;;;;; -215765;3;0;false;false;63;95;191;;; -215768;1;0;false;false;;;;;; -215769;5;0;false;false;63;95;191;;; -215774;1;0;false;false;;;;;; -215775;5;0;false;false;63;95;191;;; -215780;1;0;false;false;;;;;; -215781;2;0;false;false;63;95;191;;; -215783;1;0;false;false;;;;;; -215784;33;0;false;false;63;95;191;;; -215817;4;0;false;false;;;;;; -215821;1;0;false;false;63;95;191;;; -215822;3;0;false;false;;;;;; -215825;4;0;false;false;127;127;159;;; -215829;19;0;false;false;63;95;191;;; -215848;1;0;false;false;;;;;; -215849;4;0;false;false;63;95;191;;; -215853;1;0;false;false;;;;;; -215854;6;0;false;false;63;95;191;;; -215860;1;0;false;false;;;;;; -215861;2;0;false;false;63;95;191;;; -215863;1;0;false;false;;;;;; -215864;4;0;false;false;63;95;191;;; -215868;5;0;false;false;127;127;159;;; -215873;3;0;false;false;;;;;; -215876;1;0;false;false;63;95;191;;; -215877;1;0;false;false;;;;;; -215878;5;0;false;false;127;127;159;;; -215883;3;0;false;false;;;;;; -215886;1;0;false;false;63;95;191;;; -215887;1;0;false;false;;;;;; -215888;7;1;false;false;127;159;191;;; -215895;3;0;false;false;63;95;191;;; -215898;3;0;false;false;;;;;; -215901;2;0;false;false;63;95;191;;; -215903;2;0;false;false;;;;;; -215905;6;1;false;false;127;0;85;;; -215911;1;0;false;false;;;;;; -215912;4;1;false;false;127;0;85;;; -215916;1;0;false;false;;;;;; -215917;19;0;false;false;0;0;0;;; -215936;3;1;false;false;127;0;85;;; -215939;1;0;false;false;;;;;; -215940;6;0;false;false;0;0;0;;; -215946;1;0;false;false;;;;;; -215947;3;1;false;false;127;0;85;;; -215950;1;0;false;false;;;;;; -215951;7;0;false;false;0;0;0;;; -215958;1;0;false;false;;;;;; -215959;12;0;false;false;0;0;0;;; -215971;1;0;false;false;;;;;; -215972;7;0;false;false;0;0;0;;; -215979;1;0;false;false;;;;;; -215980;1;0;false;false;0;0;0;;; -215981;3;0;false;false;;;;;; -215984;14;0;false;false;0;0;0;;; -215998;3;0;false;false;;;;;; -216001;2;1;false;false;127;0;85;;; -216003;1;0;false;false;;;;;; -216004;15;0;false;false;0;0;0;;; -216019;1;0;false;false;;;;;; -216020;1;0;false;false;0;0;0;;; -216021;4;0;false;false;;;;;; -216025;6;1;false;false;127;0;85;;; -216031;1;0;false;false;0;0;0;;; -216032;3;0;false;false;;;;;; -216035;1;0;false;false;0;0;0;;; -216036;4;0;false;false;;;;;; -216040;2;1;false;false;127;0;85;;; -216042;1;0;false;false;;;;;; -216043;7;0;false;false;0;0;0;;; -216050;1;0;false;false;;;;;; -216051;2;0;false;false;0;0;0;;; -216053;1;0;false;false;;;;;; -216054;4;1;false;false;127;0;85;;; -216058;1;0;false;false;0;0;0;;; -216059;1;0;false;false;;;;;; -216060;1;0;false;false;0;0;0;;; -216061;5;0;false;false;;;;;; -216066;35;0;false;false;0;0;0;;; -216101;4;0;false;false;;;;;; -216105;1;0;false;false;0;0;0;;; -216106;4;0;false;false;;;;;; -216110;2;1;false;false;127;0;85;;; -216112;1;0;false;false;;;;;; -216113;14;0;false;false;0;0;0;;; -216127;1;0;false;false;;;;;; -216128;2;0;false;false;0;0;0;;; -216130;1;0;false;false;;;;;; -216131;2;0;false;false;0;0;0;;; -216133;1;0;false;false;;;;;; -216134;1;0;false;false;0;0;0;;; -216135;5;0;false;false;;;;;; -216140;14;0;false;false;0;0;0;;; -216154;3;1;false;false;127;0;85;;; -216157;1;0;false;false;;;;;; -216158;17;0;false;false;0;0;0;;; -216175;1;0;false;false;;;;;; -216176;7;0;false;false;0;0;0;;; -216183;1;0;false;false;;;;;; -216184;4;1;false;false;127;0;85;;; -216188;1;0;false;false;0;0;0;;; -216189;1;0;false;false;;;;;; -216190;4;1;false;false;127;0;85;;; -216194;3;0;false;false;0;0;0;;; -216197;5;0;false;false;;;;;; -216202;6;1;false;false;127;0;85;;; -216208;1;0;false;false;0;0;0;;; -216209;4;0;false;false;;;;;; -216213;1;0;false;false;0;0;0;;; -216214;3;0;false;false;;;;;; -216217;3;1;false;false;127;0;85;;; -216220;1;0;false;false;;;;;; -216221;3;0;false;false;0;0;0;;; -216224;1;0;false;false;;;;;; -216225;1;0;false;false;0;0;0;;; -216226;1;0;false;false;;;;;; -216227;5;0;false;false;0;0;0;;; -216232;1;0;false;false;;;;;; -216233;1;0;false;false;0;0;0;;; -216234;1;0;false;false;;;;;; -216235;7;0;false;false;0;0;0;;; -216242;3;0;false;false;;;;;; -216245;2;1;false;false;127;0;85;;; -216247;1;0;false;false;;;;;; -216248;6;0;false;false;0;0;0;;; -216254;1;0;false;false;;;;;; -216255;1;0;false;false;0;0;0;;; -216256;1;0;false;false;;;;;; -216257;3;0;false;false;0;0;0;;; -216260;1;0;false;false;;;;;; -216261;2;0;false;false;0;0;0;;; -216263;1;0;false;false;;;;;; -216264;5;0;false;false;0;0;0;;; -216269;1;0;false;false;;;;;; -216270;1;0;false;false;0;0;0;;; -216271;1;0;false;false;;;;;; -216272;1;0;false;false;0;0;0;;; -216273;1;0;false;false;;;;;; -216274;2;0;false;false;0;0;0;;; -216276;1;0;false;false;;;;;; -216277;3;0;false;false;0;0;0;;; -216280;1;0;false;false;;;;;; -216281;1;0;false;false;0;0;0;;; -216282;1;0;false;false;;;;;; -216283;15;0;false;false;0;0;0;;; -216298;1;0;false;false;;;;;; -216299;1;0;false;false;0;0;0;;; -216300;4;0;false;false;;;;;; -216304;35;0;false;false;0;0;0;;; -216339;3;0;false;false;;;;;; -216342;1;0;false;false;0;0;0;;; -216343;4;0;false;false;;;;;; -216347;3;1;false;false;127;0;85;;; -216350;1;0;false;false;;;;;; -216351;9;0;false;false;0;0;0;;; -216360;1;0;false;false;;;;;; -216361;1;0;false;false;0;0;0;;; -216362;1;0;false;false;;;;;; -216363;31;0;false;false;0;0;0;;; -216394;3;0;false;false;;;;;; -216397;3;1;false;false;127;0;85;;; -216400;1;0;false;false;;;;;; -216401;8;0;false;false;0;0;0;;; -216409;1;0;false;false;;;;;; -216410;1;0;false;false;0;0;0;;; -216411;1;0;false;false;;;;;; -216412;29;0;false;false;0;0;0;;; -216441;5;0;false;false;;;;;; -216446;43;0;false;false;0;0;0;;; -216489;1;0;false;false;;;;;; -216490;7;0;false;false;0;0;0;;; -216497;1;0;false;false;;;;;; -216498;8;0;false;false;0;0;0;;; -216506;3;0;false;false;;;;;; -216509;26;0;false;false;0;0;0;;; -216535;1;0;false;false;;;;;; -216536;8;0;false;false;0;0;0;;; -216544;1;0;false;false;;;;;; -216545;1;0;false;false;0;0;0;;; -216546;1;0;false;false;;;;;; -216547;9;0;false;false;0;0;0;;; -216556;1;0;false;false;;;;;; -216557;1;0;false;false;0;0;0;;; -216558;1;0;false;false;;;;;; -216559;2;0;false;false;0;0;0;;; -216561;1;0;false;false;;;;;; -216562;4;1;false;false;127;0;85;;; -216566;2;0;false;false;0;0;0;;; -216568;5;0;false;false;;;;;; -216573;59;0;false;false;63;127;95;;; -216632;1;0;false;false;;;;;; -216633;2;1;false;false;127;0;85;;; -216635;1;0;false;false;;;;;; -216636;25;0;false;false;0;0;0;;; -216661;1;0;false;false;;;;;; -216662;10;0;false;false;0;0;0;;; -216672;1;0;false;false;;;;;; -216673;1;0;false;false;0;0;0;;; -216674;4;0;false;false;;;;;; -216678;3;1;false;false;127;0;85;;; -216681;1;0;false;false;;;;;; -216682;7;0;false;false;0;0;0;;; -216689;1;0;false;false;;;;;; -216690;1;0;false;false;0;0;0;;; -216691;1;0;false;false;;;;;; -216692;9;0;false;false;0;0;0;;; -216701;1;0;false;false;;;;;; -216702;1;0;false;false;0;0;0;;; -216703;1;0;false;false;;;;;; -216704;10;0;false;false;0;0;0;;; -216714;1;0;false;false;;;;;; -216715;1;0;false;false;0;0;0;;; -216716;1;0;false;false;;;;;; -216717;21;0;false;false;0;0;0;;; -216738;4;0;false;false;;;;;; -216742;3;1;false;false;127;0;85;;; -216745;1;0;false;false;;;;;; -216746;11;0;false;false;0;0;0;;; -216757;1;0;false;false;;;;;; -216758;1;0;false;false;0;0;0;;; -216759;1;0;false;false;;;;;; -216760;9;0;false;false;0;0;0;;; -216769;1;0;false;false;;;;;; -216770;1;0;false;false;0;0;0;;; -216771;1;0;false;false;;;;;; -216772;2;0;false;false;0;0;0;;; -216774;1;0;false;false;;;;;; -216775;1;0;false;false;0;0;0;;; -216776;1;0;false;false;;;;;; -216777;10;0;false;false;0;0;0;;; -216787;1;0;false;false;;;;;; -216788;1;0;false;false;0;0;0;;; -216789;1;0;false;false;;;;;; -216790;21;0;false;false;0;0;0;;; -216811;6;0;false;false;;;;;; -216817;7;0;false;false;0;0;0;;; -216824;1;0;false;false;;;;;; -216825;8;0;false;false;0;0;0;;; -216833;1;0;false;false;;;;;; -216834;22;0;false;false;0;0;0;;; -216856;1;0;false;false;;;;;; -216857;11;0;false;false;0;0;0;;; -216868;1;0;false;false;;;;;; -216869;1;0;false;false;0;0;0;;; -216870;1;0;false;false;;;;;; -216871;8;0;false;false;0;0;0;;; -216879;1;0;false;false;;;;;; -216880;4;1;false;false;127;0;85;;; -216884;2;0;false;false;0;0;0;;; -216886;3;0;false;false;;;;;; -216889;1;0;false;false;0;0;0;;; -216890;5;0;false;false;;;;;; -216895;54;0;false;false;63;127;95;;; -216949;1;0;false;false;;;;;; -216950;53;0;false;false;63;127;95;;; -217003;1;0;false;false;;;;;; -217004;18;0;false;false;63;127;95;;; -217022;1;0;false;false;;;;;; -217023;19;0;false;false;0;0;0;;; -217042;2;0;false;false;;;;;; -217044;1;0;false;false;0;0;0;;; -217045;2;0;false;false;;;;;; -217047;3;0;false;false;63;95;191;;; -217050;3;0;false;false;;;;;; -217053;1;0;false;false;63;95;191;;; -217054;1;0;false;false;;;;;; -217055;8;0;false;false;63;95;191;;; -217063;1;0;false;false;;;;;; -217064;3;0;false;false;63;95;191;;; -217067;1;0;false;false;;;;;; -217068;5;0;false;false;63;95;191;;; -217073;1;0;false;false;;;;;; -217074;4;0;false;false;63;95;191;;; -217078;1;0;false;false;;;;;; -217079;5;0;false;false;63;95;191;;; -217084;1;0;false;false;;;;;; -217085;4;0;false;false;63;95;191;;; -217089;1;0;false;false;;;;;; -217090;3;0;false;false;63;95;191;;; -217093;1;0;false;false;;;;;; -217094;5;0;false;false;63;95;191;;; -217099;3;0;false;false;;;;;; -217102;1;0;false;false;63;95;191;;; -217103;1;0;false;false;;;;;; -217104;2;0;false;false;63;95;191;;; -217106;1;0;false;false;;;;;; -217107;3;0;false;false;63;95;191;;; -217110;1;0;false;false;;;;;; -217111;6;0;false;false;63;95;191;;; -217117;1;0;false;false;;;;;; -217118;3;0;false;false;63;95;191;;; -217121;1;0;false;false;;;;;; -217122;3;0;false;false;63;95;191;;; -217125;1;0;false;false;;;;;; -217126;10;0;false;false;63;95;191;;; -217136;1;0;false;false;;;;;; -217137;5;0;false;false;63;95;191;;; -217142;1;0;false;false;;;;;; -217143;3;0;false;false;63;95;191;;; -217146;1;0;false;false;;;;;; -217147;6;0;false;false;63;95;191;;; -217153;1;0;false;false;;;;;; -217154;8;0;false;false;63;95;191;;; -217162;1;0;false;false;;;;;; -217163;4;0;false;false;63;95;191;;; -217167;1;0;false;false;;;;;; -217168;4;0;false;false;63;95;191;;; -217172;4;0;false;false;;;;;; -217176;1;0;false;false;63;95;191;;; -217177;1;0;false;false;;;;;; -217178;3;0;false;false;63;95;191;;; -217181;1;0;false;false;;;;;; -217182;5;0;false;false;63;95;191;;; -217187;1;0;false;false;;;;;; -217188;4;0;false;false;63;95;191;;; -217192;1;0;false;false;;;;;; -217193;3;0;false;false;63;95;191;;; -217196;1;0;false;false;;;;;; -217197;5;0;false;false;63;95;191;;; -217202;1;0;false;false;;;;;; -217203;4;0;false;false;63;95;191;;; -217207;1;0;false;false;;;;;; -217208;2;0;false;false;63;95;191;;; -217210;1;0;false;false;;;;;; -217211;8;0;false;false;63;95;191;;; -217219;1;0;false;false;;;;;; -217220;3;0;false;false;63;95;191;;; -217223;1;0;false;false;;;;;; -217224;3;0;false;false;63;95;191;;; -217227;1;0;false;false;;;;;; -217228;4;0;false;false;63;95;191;;; -217232;1;0;false;false;;;;;; -217233;2;0;false;false;63;95;191;;; -217235;1;0;false;false;;;;;; -217236;6;0;false;false;63;95;191;;; -217242;4;0;false;false;;;;;; -217246;1;0;false;false;63;95;191;;; -217247;1;0;false;false;;;;;; -217248;10;0;false;false;63;95;191;;; -217258;1;0;false;false;;;;;; -217259;1;0;false;false;63;95;191;;; -217260;1;0;false;false;;;;;; -217261;10;0;false;false;63;95;191;;; -217271;1;0;false;false;;;;;; -217272;4;0;false;false;63;95;191;;; -217276;1;0;false;false;;;;;; -217277;2;0;false;false;63;95;191;;; -217279;1;0;false;false;;;;;; -217280;7;0;false;false;63;95;191;;; -217287;1;0;false;false;;;;;; -217288;4;0;false;false;63;95;191;;; -217292;1;0;false;false;;;;;; -217293;6;0;false;false;63;95;191;;; -217299;1;0;false;false;;;;;; -217300;3;0;false;false;63;95;191;;; -217303;1;0;false;false;;;;;; -217304;4;0;false;false;63;95;191;;; -217308;1;0;false;false;;;;;; -217309;4;0;false;false;63;95;191;;; -217313;4;0;false;false;;;;;; -217317;1;0;false;false;63;95;191;;; -217318;1;0;false;false;;;;;; -217319;4;0;false;false;63;95;191;;; -217323;1;0;false;false;;;;;; -217324;3;0;false;false;63;95;191;;; -217327;1;0;false;false;;;;;; -217328;4;0;false;false;63;95;191;;; -217332;1;0;false;false;;;;;; -217333;4;0;false;false;63;95;191;;; -217337;1;0;false;false;;;;;; -217338;4;0;false;false;63;95;191;;; -217342;1;0;false;false;;;;;; -217343;4;0;false;false;63;95;191;;; -217347;1;0;false;false;;;;;; -217348;1;0;false;false;63;95;191;;; -217349;1;0;false;false;;;;;; -217350;6;0;false;false;63;95;191;;; -217356;1;0;false;false;;;;;; -217357;4;0;false;false;63;95;191;;; -217361;1;0;false;false;;;;;; -217362;2;0;false;false;63;95;191;;; -217364;1;0;false;false;;;;;; -217365;4;0;false;false;63;95;191;;; -217369;1;0;false;false;;;;;; -217370;6;0;false;false;63;95;191;;; -217376;1;0;false;false;;;;;; -217377;2;0;false;false;63;95;191;;; -217379;1;0;false;false;;;;;; -217380;3;0;false;false;63;95;191;;; -217383;1;0;false;false;;;;;; -217384;4;0;false;false;63;95;191;;; -217388;4;0;false;false;;;;;; -217392;1;0;false;false;63;95;191;;; -217393;1;0;false;false;;;;;; -217394;3;0;false;false;63;95;191;;; -217397;1;0;false;false;;;;;; -217398;10;0;false;false;63;95;191;;; -217408;1;0;false;false;;;;;; -217409;5;0;false;false;63;95;191;;; -217414;1;0;false;false;;;;;; -217415;2;0;false;false;63;95;191;;; -217417;1;0;false;false;;;;;; -217418;5;0;false;false;63;95;191;;; -217423;3;0;false;false;;;;;; -217426;1;0;false;false;63;95;191;;; -217427;1;0;false;false;;;;;; -217428;3;0;false;false;127;127;159;;; -217431;3;0;false;false;;;;;; -217434;1;0;false;false;63;95;191;;; -217435;1;0;false;false;;;;;; -217436;3;0;false;false;127;127;159;;; -217439;5;0;false;false;63;95;191;;; -217444;4;0;false;false;127;127;159;;; -217448;1;0;false;false;;;;;; -217449;6;0;false;false;63;95;191;;; -217455;1;0;false;false;;;;;; -217456;3;0;false;false;63;95;191;;; -217459;1;0;false;false;;;;;; -217460;7;0;false;false;63;95;191;;; -217467;1;0;false;false;;;;;; -217468;9;0;false;false;63;95;191;;; -217477;1;0;false;false;;;;;; -217478;3;0;false;false;63;95;191;;; -217481;1;0;false;false;;;;;; -217482;7;0;false;false;63;95;191;;; -217489;1;0;false;false;;;;;; -217490;9;0;false;false;63;95;191;;; -217499;1;0;false;false;;;;;; -217500;2;0;false;false;63;95;191;;; -217502;3;0;false;false;;;;;; -217505;1;0;false;false;63;95;191;;; -217506;1;0;false;false;;;;;; -217507;7;0;false;false;63;95;191;;; -217514;1;0;false;false;;;;;; -217515;2;0;false;false;63;95;191;;; -217517;1;0;false;false;;;;;; -217518;8;0;false;false;63;95;191;;; -217526;3;0;false;false;;;;;; -217529;1;0;false;false;63;95;191;;; -217530;1;0;false;false;;;;;; -217531;4;0;false;false;127;127;159;;; -217535;4;0;false;false;;;;;; -217539;1;0;false;false;63;95;191;;; -217540;1;0;false;false;;;;;; -217541;4;0;false;false;127;127;159;;; -217545;9;0;false;false;63;95;191;;; -217554;1;0;false;false;;;;;; -217555;6;0;false;false;63;95;191;;; -217561;1;0;false;false;;;;;; -217562;8;0;false;false;63;95;191;;; -217570;1;0;false;false;;;;;; -217571;5;0;false;false;63;95;191;;; -217576;1;0;false;false;;;;;; -217577;9;0;false;false;63;95;191;;; -217586;1;0;false;false;;;;;; -217587;9;0;false;false;63;95;191;;; -217596;3;0;false;false;;;;;; -217599;1;0;false;false;63;95;191;;; -217600;1;0;false;false;;;;;; -217601;4;0;false;false;127;127;159;;; -217605;9;0;false;false;63;95;191;;; -217614;1;0;false;false;;;;;; -217615;5;0;false;false;63;95;191;;; -217620;1;0;false;false;;;;;; -217621;8;0;false;false;63;95;191;;; -217629;1;0;false;false;;;;;; -217630;5;0;false;false;63;95;191;;; -217635;1;0;false;false;;;;;; -217636;6;0;false;false;63;95;191;;; -217642;1;0;false;false;;;;;; -217643;3;0;false;false;63;95;191;;; -217646;1;0;false;false;;;;;; -217647;9;0;false;false;63;95;191;;; -217656;1;0;false;false;;;;;; -217657;2;0;false;false;63;95;191;;; -217659;1;0;false;false;;;;;; -217660;4;0;false;false;63;95;191;;; -217664;1;0;false;false;;;;;; -217665;4;0;false;false;63;95;191;;; -217669;1;0;false;false;;;;;; -217670;4;0;false;false;63;95;191;;; -217674;4;0;false;false;;;;;; -217678;1;0;false;false;63;95;191;;; -217679;1;0;false;false;;;;;; -217680;7;0;false;false;63;95;191;;; -217687;1;0;false;false;;;;;; -217688;8;0;false;false;63;95;191;;; -217696;3;0;false;false;;;;;; -217699;1;0;false;false;63;95;191;;; -217700;1;0;false;false;;;;;; -217701;4;0;false;false;127;127;159;;; -217705;9;0;false;false;63;95;191;;; -217714;1;0;false;false;;;;;; -217715;10;0;false;false;63;95;191;;; -217725;1;0;false;false;;;;;; -217726;8;0;false;false;63;95;191;;; -217734;1;0;false;false;;;;;; -217735;5;0;false;false;63;95;191;;; -217740;1;0;false;false;;;;;; -217741;9;0;false;false;63;95;191;;; -217750;1;0;false;false;;;;;; -217751;2;0;false;false;63;95;191;;; -217753;1;0;false;false;;;;;; -217754;7;0;false;false;63;95;191;;; -217761;1;0;false;false;;;;;; -217762;3;0;false;false;63;95;191;;; -217765;1;0;false;false;;;;;; -217766;5;0;false;false;63;95;191;;; -217771;3;0;false;false;;;;;; -217774;1;0;false;false;63;95;191;;; -217775;1;0;false;false;;;;;; -217776;2;0;false;false;63;95;191;;; -217778;1;0;false;false;;;;;; -217779;6;0;false;false;63;95;191;;; -217785;1;0;false;false;;;;;; -217786;5;0;false;false;63;95;191;;; -217791;1;0;false;false;;;;;; -217792;8;0;false;false;63;95;191;;; -217800;1;0;false;false;;;;;; -217801;4;0;false;false;63;95;191;;; -217805;3;0;false;false;;;;;; -217808;1;0;false;false;63;95;191;;; -217809;1;0;false;false;;;;;; -217810;5;0;false;false;127;127;159;;; -217815;3;0;false;false;;;;;; -217818;1;0;false;false;63;95;191;;; -217819;1;0;false;false;;;;;; -217820;4;0;false;false;127;127;159;;; -217824;3;0;false;false;;;;;; -217827;1;0;false;false;63;95;191;;; -217828;3;0;false;false;;;;;; -217831;1;0;false;false;63;95;191;;; -217832;1;0;false;false;;;;;; -217833;7;1;false;false;127;159;191;;; -217840;5;0;false;false;63;95;191;;; -217845;1;0;false;false;;;;;; -217846;6;0;false;false;63;95;191;;; -217852;1;0;false;false;;;;;; -217853;2;0;false;false;63;95;191;;; -217855;1;0;false;false;;;;;; -217856;5;0;false;false;63;95;191;;; -217861;1;0;false;false;;;;;; -217862;9;0;false;false;63;95;191;;; -217871;1;0;false;false;;;;;; -217872;2;0;false;false;63;95;191;;; -217874;1;0;false;false;;;;;; -217875;7;0;false;false;63;95;191;;; -217882;3;0;false;false;;;;;; -217885;1;0;false;false;63;95;191;;; -217886;1;0;false;false;;;;;; -217887;7;1;false;false;127;159;191;;; -217894;6;0;false;false;63;95;191;;; -217900;1;0;false;false;;;;;; -217901;6;0;false;false;63;95;191;;; -217907;1;0;false;false;;;;;; -217908;2;0;false;false;63;95;191;;; -217910;1;0;false;false;;;;;; -217911;10;0;false;false;63;95;191;;; -217921;1;0;false;false;;;;;; -217922;2;0;false;false;63;95;191;;; -217924;1;0;false;false;;;;;; -217925;8;0;false;false;63;95;191;;; -217933;1;0;false;false;;;;;; -217934;3;0;false;false;63;95;191;;; -217937;1;0;false;false;;;;;; -217938;1;0;false;false;63;95;191;;; -217939;1;0;false;false;;;;;; -217940;2;0;false;false;63;95;191;;; -217942;1;0;false;false;;;;;; -217943;6;0;false;false;63;95;191;;; -217949;1;0;false;false;;;;;; -217950;4;0;false;false;63;95;191;;; -217954;3;0;false;false;;;;;; -217957;1;0;false;false;63;95;191;;; -217958;1;0;false;false;;;;;; -217959;7;1;false;false;127;159;191;;; -217966;4;0;false;false;63;95;191;;; -217970;1;0;false;false;;;;;; -217971;3;0;false;false;63;95;191;;; -217974;1;0;false;false;;;;;; -217975;5;0;false;false;63;95;191;;; -217980;1;0;false;false;;;;;; -217981;3;0;false;false;63;95;191;;; -217984;1;0;false;false;;;;;; -217985;2;0;false;false;63;95;191;;; -217987;1;0;false;false;;;;;; -217988;5;0;false;false;63;95;191;;; -217993;1;0;false;false;;;;;; -217994;2;0;false;false;63;95;191;;; -217996;1;0;false;false;;;;;; -217997;6;0;false;false;63;95;191;;; -218003;1;0;false;false;;;;;; -218004;5;0;false;false;63;95;191;;; -218009;3;0;false;false;;;;;; -218012;1;0;false;false;63;95;191;;; -218013;1;0;false;false;;;;;; -218014;11;1;false;false;127;159;191;;; -218025;12;0;false;false;63;95;191;;; -218037;1;0;false;false;;;;;; -218038;4;0;false;false;127;127;159;;; -218042;3;0;false;false;;;;;; -218045;1;0;false;false;63;95;191;;; -218046;4;0;false;false;;;;;; -218050;4;0;false;false;127;127;159;;; -218054;21;0;false;false;63;95;191;;; -218075;1;0;false;false;;;;;; -218076;1;0;false;false;127;127;159;;; -218077;1;0;false;false;;;;;; -218078;2;0;false;false;63;95;191;;; -218080;1;0;false;false;;;;;; -218081;3;0;false;false;63;95;191;;; -218084;1;0;false;false;;;;;; -218085;8;0;false;false;63;95;191;;; -218093;1;0;false;false;;;;;; -218094;3;0;false;false;63;95;191;;; -218097;1;0;false;false;;;;;; -218098;4;0;false;false;63;95;191;;; -218102;1;0;false;false;;;;;; -218103;8;0;false;false;63;95;191;;; -218111;5;0;false;false;127;127;159;;; -218116;3;0;false;false;;;;;; -218119;1;0;false;false;63;95;191;;; -218120;4;0;false;false;;;;;; -218124;4;0;false;false;127;127;159;;; -218128;27;0;false;false;63;95;191;;; -218155;1;0;false;false;;;;;; -218156;1;0;false;false;127;127;159;;; -218157;1;0;false;false;;;;;; -218158;2;0;false;false;63;95;191;;; -218160;1;0;false;false;;;;;; -218161;3;0;false;false;63;95;191;;; -218164;1;0;false;false;;;;;; -218165;6;0;false;false;63;95;191;;; -218171;1;0;false;false;;;;;; -218172;4;0;false;false;63;95;191;;; -218176;1;0;false;false;;;;;; -218177;3;0;false;false;63;95;191;;; -218180;1;0;false;false;;;;;; -218181;6;0;false;false;63;95;191;;; -218187;1;0;false;false;;;;;; -218188;4;0;false;false;63;95;191;;; -218192;1;0;false;false;;;;;; -218193;7;0;false;false;63;95;191;;; -218200;1;0;false;false;;;;;; -218201;3;0;false;false;63;95;191;;; -218204;1;0;false;false;;;;;; -218205;8;0;false;false;63;95;191;;; -218213;5;0;false;false;127;127;159;;; -218218;3;0;false;false;;;;;; -218221;1;0;false;false;63;95;191;;; -218222;1;0;false;false;;;;;; -218223;5;0;false;false;127;127;159;;; -218228;3;0;false;false;;;;;; -218231;1;0;false;false;63;95;191;;; -218232;1;0;false;false;;;;;; -218233;11;1;false;false;127;159;191;;; -218244;24;0;false;false;63;95;191;;; -218268;1;0;false;false;;;;;; -218269;4;0;false;false;127;127;159;;; -218273;3;0;false;false;;;;;; -218276;1;0;false;false;63;95;191;;; -218277;3;0;false;false;;;;;; -218280;4;0;false;false;127;127;159;;; -218284;19;0;false;false;63;95;191;;; -218303;1;0;false;false;;;;;; -218304;4;0;false;false;63;95;191;;; -218308;1;0;false;false;;;;;; -218309;6;0;false;false;63;95;191;;; -218315;1;0;false;false;;;;;; -218316;5;0;false;false;63;95;191;;; -218321;1;0;false;false;;;;;; -218322;2;0;false;false;63;95;191;;; -218324;1;0;false;false;;;;;; -218325;3;0;false;false;63;95;191;;; -218328;1;0;false;false;;;;;; -218329;2;0;false;false;63;95;191;;; -218331;1;0;false;false;;;;;; -218332;7;0;false;false;63;95;191;;; -218339;1;0;false;false;;;;;; -218340;3;0;false;false;63;95;191;;; -218343;1;0;false;false;;;;;; -218344;5;0;false;false;63;95;191;;; -218349;1;0;false;false;;;;;; -218350;5;0;false;false;63;95;191;;; -218355;1;0;false;false;;;;;; -218356;2;0;false;false;63;95;191;;; -218358;1;0;false;false;;;;;; -218359;33;0;false;false;63;95;191;;; -218392;4;0;false;false;;;;;; -218396;1;0;false;false;63;95;191;;; -218397;3;0;false;false;;;;;; -218400;4;0;false;false;127;127;159;;; -218404;22;0;false;false;63;95;191;;; -218426;1;0;false;false;;;;;; -218427;4;0;false;false;63;95;191;;; -218431;1;0;false;false;;;;;; -218432;6;0;false;false;63;95;191;;; -218438;1;0;false;false;;;;;; -218439;5;0;false;false;63;95;191;;; -218444;1;0;false;false;;;;;; -218445;2;0;false;false;63;95;191;;; -218447;1;0;false;false;;;;;; -218448;3;0;false;false;63;95;191;;; -218451;1;0;false;false;;;;;; -218452;2;0;false;false;63;95;191;;; -218454;1;0;false;false;;;;;; -218455;6;0;false;false;63;95;191;;; -218461;1;0;false;false;;;;;; -218462;1;0;false;false;63;95;191;;; -218463;1;0;false;false;;;;;; -218464;5;0;false;false;63;95;191;;; -218469;1;0;false;false;;;;;; -218470;4;0;false;false;63;95;191;;; -218474;1;0;false;false;;;;;; -218475;4;0;false;false;63;95;191;;; -218479;1;0;false;false;;;;;; -218480;10;0;false;false;63;95;191;;; -218490;4;0;false;false;;;;;; -218494;1;0;false;false;63;95;191;;; -218495;3;0;false;false;;;;;; -218498;9;0;false;false;63;95;191;;; -218507;1;0;false;false;;;;;; -218508;1;0;false;false;63;95;191;;; -218509;1;0;false;false;;;;;; -218510;4;0;false;false;63;95;191;;; -218514;1;0;false;false;;;;;; -218515;9;0;false;false;63;95;191;;; -218524;1;0;false;false;;;;;; -218525;3;0;false;false;63;95;191;;; -218528;1;0;false;false;;;;;; -218529;7;0;false;false;63;95;191;;; -218536;1;0;false;false;;;;;; -218537;2;0;false;false;63;95;191;;; -218539;1;0;false;false;;;;;; -218540;9;0;false;false;63;95;191;;; -218549;1;0;false;false;;;;;; -218550;4;0;false;false;63;95;191;;; -218554;1;0;false;false;;;;;; -218555;2;0;false;false;63;95;191;;; -218557;1;0;false;false;;;;;; -218558;7;0;false;false;63;95;191;;; -218565;1;0;false;false;;;;;; -218566;3;0;false;false;63;95;191;;; -218569;1;0;false;false;;;;;; -218570;2;0;false;false;63;95;191;;; -218572;1;0;false;false;;;;;; -218573;3;0;false;false;63;95;191;;; -218576;1;0;false;false;;;;;; -218577;2;0;false;false;63;95;191;;; -218579;1;0;false;false;;;;;; -218580;3;0;false;false;63;95;191;;; -218583;1;0;false;false;;;;;; -218584;8;0;false;false;63;95;191;;; -218592;1;0;false;false;;;;;; -218593;4;0;false;false;63;95;191;;; -218597;1;0;false;false;;;;;; -218598;2;0;false;false;63;95;191;;; -218600;1;0;false;false;;;;;; -218601;1;0;false;false;63;95;191;;; -218602;1;0;false;false;;;;;; -218603;4;0;false;false;63;95;191;;; -218607;1;0;false;false;;;;;; -218608;9;0;false;false;63;95;191;;; -218617;1;0;false;false;;;;;; -218618;2;0;false;false;63;95;191;;; -218620;1;0;false;false;;;;;; -218621;3;0;false;false;63;95;191;;; -218624;1;0;false;false;;;;;; -218625;9;0;false;false;63;95;191;;; -218634;5;0;false;false;127;127;159;;; -218639;5;0;false;false;;;;;; -218644;1;0;false;false;63;95;191;;; -218645;3;0;false;false;;;;;; -218648;4;0;false;false;127;127;159;;; -218652;19;0;false;false;63;95;191;;; -218671;1;0;false;false;;;;;; -218672;4;0;false;false;63;95;191;;; -218676;1;0;false;false;;;;;; -218677;6;0;false;false;63;95;191;;; -218683;1;0;false;false;;;;;; -218684;2;0;false;false;63;95;191;;; -218686;1;0;false;false;;;;;; -218687;4;0;false;false;63;95;191;;; -218691;5;0;false;false;127;127;159;;; -218696;3;0;false;false;;;;;; -218699;1;0;false;false;63;95;191;;; -218700;1;0;false;false;;;;;; -218701;5;0;false;false;127;127;159;;; -218706;3;0;false;false;;;;;; -218709;2;0;false;false;63;95;191;;; -218711;2;0;false;false;;;;;; -218713;6;1;false;false;127;0;85;;; -218719;1;0;false;false;;;;;; -218720;4;1;false;false;127;0;85;;; -218724;1;0;false;false;;;;;; -218725;17;0;false;false;0;0;0;;; -218742;3;1;false;false;127;0;85;;; -218745;1;0;false;false;;;;;; -218746;6;0;false;false;0;0;0;;; -218752;1;0;false;false;;;;;; -218753;3;1;false;false;127;0;85;;; -218756;1;0;false;false;;;;;; -218757;7;0;false;false;0;0;0;;; -218764;1;0;false;false;;;;;; -218765;6;0;false;false;0;0;0;;; -218771;1;0;false;false;;;;;; -218772;5;0;false;false;0;0;0;;; -218777;1;0;false;false;;;;;; -218778;1;0;false;false;0;0;0;;; -218779;3;0;false;false;;;;;; -218782;14;0;false;false;0;0;0;;; -218796;3;0;false;false;;;;;; -218799;3;1;false;false;127;0;85;;; -218802;1;0;false;false;;;;;; -218803;13;0;false;false;0;0;0;;; -218816;1;0;false;false;;;;;; -218817;1;0;false;false;0;0;0;;; -218818;1;0;false;false;;;;;; -218819;15;0;false;false;0;0;0;;; -218834;3;0;false;false;;;;;; -218837;3;1;false;false;127;0;85;;; -218840;1;0;false;false;;;;;; -218841;3;0;false;false;0;0;0;;; -218844;1;0;false;false;;;;;; -218845;1;0;false;false;0;0;0;;; -218846;1;0;false;false;;;;;; -218847;5;0;false;false;0;0;0;;; -218852;1;0;false;false;;;;;; -218853;1;0;false;false;0;0;0;;; -218854;1;0;false;false;;;;;; -218855;7;0;false;false;0;0;0;;; -218862;3;0;false;false;;;;;; -218865;5;0;false;false;0;0;0;;; -218870;1;0;false;false;;;;;; -218871;5;0;false;false;0;0;0;;; -218876;1;0;false;false;;;;;; -218877;1;0;false;false;0;0;0;;; -218878;1;0;false;false;;;;;; -218879;3;1;false;false;127;0;85;;; -218882;1;0;false;false;;;;;; -218883;8;0;false;false;0;0;0;;; -218891;6;0;false;false;;;;;; -218897;2;1;false;false;127;0;85;;; -218899;1;0;false;false;;;;;; -218900;6;0;false;false;0;0;0;;; -218906;1;0;false;false;;;;;; -218907;1;0;false;false;0;0;0;;; -218908;1;0;false;false;;;;;; -218909;3;0;false;false;0;0;0;;; -218912;1;0;false;false;;;;;; -218913;2;0;false;false;0;0;0;;; -218915;1;0;false;false;;;;;; -218916;5;0;false;false;0;0;0;;; -218921;1;0;false;false;;;;;; -218922;1;0;false;false;0;0;0;;; -218923;1;0;false;false;;;;;; -218924;1;0;false;false;0;0;0;;; -218925;1;0;false;false;;;;;; -218926;2;0;false;false;0;0;0;;; -218928;1;0;false;false;;;;;; -218929;3;0;false;false;0;0;0;;; -218932;1;0;false;false;;;;;; -218933;1;0;false;false;0;0;0;;; -218934;1;0;false;false;;;;;; -218935;14;0;false;false;0;0;0;;; -218949;1;0;false;false;;;;;; -218950;1;0;false;false;0;0;0;;; -218951;4;0;false;false;;;;;; -218955;35;0;false;false;0;0;0;;; -218990;3;0;false;false;;;;;; -218993;1;0;false;false;0;0;0;;; -218994;4;0;false;false;;;;;; -218998;2;1;false;false;127;0;85;;; -219000;1;0;false;false;;;;;; -219001;5;0;false;false;0;0;0;;; -219006;1;0;false;false;;;;;; -219007;2;0;false;false;0;0;0;;; -219009;1;0;false;false;;;;;; -219010;4;1;false;false;127;0;85;;; -219014;1;0;false;false;0;0;0;;; -219015;1;0;false;false;;;;;; -219016;1;0;false;false;0;0;0;;; -219017;4;0;false;false;;;;;; -219021;35;0;false;false;0;0;0;;; -219056;3;0;false;false;;;;;; -219059;1;0;false;false;0;0;0;;; -219060;3;0;false;false;;;;;; -219063;11;0;false;false;0;0;0;;; -219074;1;0;false;false;;;;;; -219075;1;0;false;false;0;0;0;;; -219076;1;0;false;false;;;;;; -219077;6;0;false;false;0;0;0;;; -219083;3;0;false;false;;;;;; -219086;9;0;false;false;0;0;0;;; -219095;1;0;false;false;;;;;; -219096;1;0;false;false;0;0;0;;; -219097;1;0;false;false;;;;;; -219098;4;0;false;false;0;0;0;;; -219102;3;0;false;false;;;;;; -219105;10;0;false;false;0;0;0;;; -219115;1;0;false;false;;;;;; -219116;1;0;false;false;0;0;0;;; -219117;1;0;false;false;;;;;; -219118;5;0;false;false;0;0;0;;; -219123;3;0;false;false;;;;;; -219126;20;0;false;false;0;0;0;;; -219146;1;0;false;false;;;;;; -219147;5;1;false;false;127;0;85;;; -219152;2;0;false;false;0;0;0;;; -219154;2;0;false;false;;;;;; -219156;1;0;false;false;0;0;0;;; -219157;2;0;false;false;;;;;; -219159;3;0;false;false;63;95;191;;; -219162;3;0;false;false;;;;;; -219165;1;0;false;false;63;95;191;;; -219166;1;0;false;false;;;;;; -219167;6;0;false;false;63;95;191;;; -219173;1;0;false;false;;;;;; -219174;3;0;false;false;63;95;191;;; -219177;1;0;false;false;;;;;; -219178;5;0;false;false;63;95;191;;; -219183;1;0;false;false;;;;;; -219184;9;0;false;false;63;95;191;;; -219193;1;0;false;false;;;;;; -219194;9;0;false;false;63;95;191;;; -219203;1;0;false;false;;;;;; -219204;3;0;false;false;63;95;191;;; -219207;1;0;false;false;;;;;; -219208;6;0;false;false;63;95;191;;; -219214;1;0;false;false;;;;;; -219215;8;0;false;false;63;95;191;;; -219223;1;0;false;false;;;;;; -219224;11;0;false;false;63;95;191;;; -219235;3;0;false;false;;;;;; -219238;1;0;false;false;63;95;191;;; -219239;1;0;false;false;;;;;; -219240;3;0;false;false;63;95;191;;; -219243;1;0;false;false;;;;;; -219244;7;0;false;false;63;95;191;;; -219251;1;0;false;false;;;;;; -219252;5;0;false;false;63;95;191;;; -219257;1;0;false;false;;;;;; -219258;3;0;false;false;63;95;191;;; -219261;1;0;false;false;;;;;; -219262;6;0;false;false;63;95;191;;; -219268;1;0;false;false;;;;;; -219269;5;0;false;false;63;95;191;;; -219274;1;0;false;false;;;;;; -219275;6;0;false;false;63;95;191;;; -219281;1;0;false;false;;;;;; -219282;3;0;false;false;63;95;191;;; -219285;1;0;false;false;;;;;; -219286;7;0;false;false;63;95;191;;; -219293;3;0;false;false;;;;;; -219296;2;0;false;false;63;95;191;;; -219298;2;0;false;false;;;;;; -219300;4;1;false;false;127;0;85;;; -219304;1;0;false;false;;;;;; -219305;7;0;false;false;0;0;0;;; -219312;1;0;false;false;;;;;; -219313;1;0;false;false;0;0;0;;; -219314;3;0;false;false;;;;;; -219317;9;0;false;false;0;0;0;;; -219326;1;0;false;false;;;;;; -219327;11;0;false;false;0;0;0;;; -219338;1;0;false;false;;;;;; -219339;1;0;false;false;0;0;0;;; -219340;1;0;false;false;;;;;; -219341;17;0;false;false;0;0;0;;; -219358;3;0;false;false;;;;;; -219361;9;0;false;false;0;0;0;;; -219370;1;0;false;false;;;;;; -219371;13;0;false;false;0;0;0;;; -219384;1;0;false;false;;;;;; -219385;1;0;false;false;0;0;0;;; -219386;1;0;false;false;;;;;; -219387;19;0;false;false;0;0;0;;; -219406;3;0;false;false;;;;;; -219409;11;0;false;false;0;0;0;;; -219420;1;0;false;false;;;;;; -219421;1;0;false;false;0;0;0;;; -219422;1;0;false;false;;;;;; -219423;2;0;false;false;0;0;0;;; -219425;3;0;false;false;;;;;; -219428;8;0;false;false;0;0;0;;; -219436;1;0;false;false;;;;;; -219437;1;0;false;false;0;0;0;;; -219438;1;0;false;false;;;;;; -219439;2;0;false;false;0;0;0;;; -219441;3;0;false;false;;;;;; -219444;9;0;false;false;0;0;0;;; -219453;1;0;false;false;;;;;; -219454;1;0;false;false;0;0;0;;; -219455;1;0;false;false;;;;;; -219456;2;0;false;false;0;0;0;;; -219458;3;0;false;false;;;;;; -219461;20;0;false;false;0;0;0;;; -219481;1;0;false;false;;;;;; -219482;1;0;false;false;0;0;0;;; -219483;1;0;false;false;;;;;; -219484;2;0;false;false;0;0;0;;; -219486;3;0;false;false;;;;;; -219489;22;0;false;false;0;0;0;;; -219511;1;0;false;false;;;;;; -219512;1;0;false;false;0;0;0;;; -219513;1;0;false;false;;;;;; -219514;2;0;false;false;0;0;0;;; -219516;4;0;false;false;;;;;; -219520;17;0;false;false;0;0;0;;; -219537;3;0;false;false;;;;;; -219540;61;0;false;false;63;127;95;;; -219601;1;0;false;false;;;;;; -219602;28;0;false;false;63;127;95;;; -219630;1;0;false;false;;;;;; -219631;2;1;false;false;127;0;85;;; -219633;1;0;false;false;;;;;; -219634;18;0;false;false;0;0;0;;; -219652;1;0;false;false;;;;;; -219653;2;0;false;false;0;0;0;;; -219655;1;0;false;false;;;;;; -219656;4;1;false;false;127;0;85;;; -219660;1;0;false;false;0;0;0;;; -219661;1;0;false;false;;;;;; -219662;1;0;false;false;0;0;0;;; -219663;4;0;false;false;;;;;; -219667;48;0;false;false;0;0;0;;; -219715;4;0;false;false;;;;;; -219719;43;0;false;false;0;0;0;;; -219762;4;0;false;false;;;;;; -219766;27;0;false;false;0;0;0;;; -219793;3;0;false;false;;;;;; -219796;1;0;false;false;0;0;0;;; -219797;4;0;false;false;;;;;; -219801;24;0;false;false;0;0;0;;; -219825;3;0;false;false;;;;;; -219828;2;1;false;false;127;0;85;;; -219830;1;0;false;false;;;;;; -219831;12;0;false;false;0;0;0;;; -219843;1;0;false;false;;;;;; -219844;2;0;false;false;0;0;0;;; -219846;1;0;false;false;;;;;; -219847;4;1;false;false;127;0;85;;; -219851;1;0;false;false;0;0;0;;; -219852;1;0;false;false;;;;;; -219853;1;0;false;false;0;0;0;;; -219854;4;0;false;false;;;;;; -219858;28;0;false;false;0;0;0;;; -219886;3;0;false;false;;;;;; -219889;1;0;false;false;0;0;0;;; -219890;3;0;false;false;;;;;; -219893;2;1;false;false;127;0;85;;; -219895;1;0;false;false;;;;;; -219896;14;0;false;false;0;0;0;;; -219910;1;0;false;false;;;;;; -219911;2;0;false;false;0;0;0;;; -219913;1;0;false;false;;;;;; -219914;4;1;false;false;127;0;85;;; -219918;1;0;false;false;0;0;0;;; -219919;1;0;false;false;;;;;; -219920;1;0;false;false;0;0;0;;; -219921;4;0;false;false;;;;;; -219925;30;0;false;false;0;0;0;;; -219955;4;0;false;false;;;;;; -219959;1;0;false;false;0;0;0;;; -219960;3;0;false;false;;;;;; -219963;16;0;false;false;0;0;0;;; -219979;3;0;false;false;;;;;; -219982;19;0;false;false;0;0;0;;; -220001;3;0;false;false;;;;;; -220004;5;1;false;false;127;0;85;;; -220009;10;0;false;false;0;0;0;;; -220019;2;0;false;false;;;;;; -220021;1;0;false;false;0;0;0;;; -220022;2;0;false;false;;;;;; -220024;3;0;false;false;63;95;191;;; -220027;3;0;false;false;;;;;; -220030;1;0;false;false;63;95;191;;; -220031;1;0;false;false;;;;;; -220032;6;0;false;false;63;95;191;;; -220038;1;0;false;false;;;;;; -220039;3;0;false;false;63;95;191;;; -220042;1;0;false;false;;;;;; -220043;10;0;false;false;63;95;191;;; -220053;3;0;false;false;;;;;; -220056;2;0;false;false;63;95;191;;; -220058;2;0;false;false;;;;;; -220060;4;1;false;false;127;0;85;;; -220064;1;0;false;false;;;;;; -220065;16;0;false;false;0;0;0;;; -220081;1;0;false;false;;;;;; -220082;1;0;false;false;0;0;0;;; -220083;3;0;false;false;;;;;; -220086;11;0;false;false;0;0;0;;; -220097;1;0;false;false;;;;;; -220098;1;0;false;false;0;0;0;;; -220099;1;0;false;false;;;;;; -220100;11;0;false;false;0;0;0;;; -220111;1;0;false;false;;;;;; -220112;1;0;false;false;0;0;0;;; -220113;1;0;false;false;;;;;; -220114;12;0;false;false;0;0;0;;; -220126;3;0;false;false;;;;;; -220129;15;0;false;false;0;0;0;;; -220144;1;0;false;false;;;;;; -220145;1;0;false;false;0;0;0;;; -220146;1;0;false;false;;;;;; -220147;3;0;false;false;0;0;0;;; -220150;2;0;false;false;;;;;; -220152;1;0;false;false;0;0;0;;; -220153;2;0;false;false;;;;;; -220155;3;0;false;false;63;95;191;;; -220158;3;0;false;false;;;;;; -220161;1;0;false;false;63;95;191;;; -220162;1;0;false;false;;;;;; -220163;7;0;false;false;63;95;191;;; -220170;1;0;false;false;;;;;; -220171;3;0;false;false;63;95;191;;; -220174;1;0;false;false;;;;;; -220175;6;0;false;false;63;95;191;;; -220181;1;0;false;false;;;;;; -220182;13;0;false;false;63;95;191;;; -220195;3;0;false;false;;;;;; -220198;1;0;false;false;63;95;191;;; -220199;1;0;false;false;;;;;; -220200;3;0;false;false;127;127;159;;; -220203;3;0;false;false;;;;;; -220206;1;0;false;false;63;95;191;;; -220207;3;0;false;false;;;;;; -220210;1;0;false;false;63;95;191;;; -220211;1;0;false;false;;;;;; -220212;7;1;false;false;127;159;191;;; -220219;6;0;false;false;63;95;191;;; -220225;1;0;false;false;;;;;; -220226;6;0;false;false;63;95;191;;; -220232;1;0;false;false;;;;;; -220233;2;0;false;false;63;95;191;;; -220235;1;0;false;false;;;;;; -220236;6;0;false;false;63;95;191;;; -220242;1;0;false;false;;;;;; -220243;2;0;false;false;63;95;191;;; -220245;1;0;false;false;;;;;; -220246;7;0;false;false;63;95;191;;; -220253;1;0;false;false;;;;;; -220254;1;0;false;false;63;95;191;;; -220255;1;0;false;false;;;;;; -220256;1;0;false;false;63;95;191;;; -220257;1;0;false;false;;;;;; -220258;1;0;false;false;63;95;191;;; -220259;1;0;false;false;;;;;; -220260;6;0;false;false;63;95;191;;; -220266;1;0;false;false;;;;;; -220267;5;0;false;false;63;95;191;;; -220272;3;0;false;false;;;;;; -220275;1;0;false;false;63;95;191;;; -220276;2;0;false;false;;;;;; -220278;18;0;false;false;63;95;191;;; -220296;1;0;false;false;;;;;; -220297;2;0;false;false;63;95;191;;; -220299;2;0;false;false;;;;;; -220301;4;1;false;false;127;0;85;;; -220305;1;0;false;false;;;;;; -220306;17;0;false;false;0;0;0;;; -220323;3;1;false;false;127;0;85;;; -220326;1;0;false;false;;;;;; -220327;7;0;false;false;0;0;0;;; -220334;1;0;false;false;;;;;; -220335;1;0;false;false;0;0;0;;; -220336;3;0;false;false;;;;;; -220339;9;0;false;false;0;0;0;;; -220348;1;0;false;false;;;;;; -220349;11;0;false;false;0;0;0;;; -220360;6;0;false;false;;;;;; -220366;2;1;false;false;127;0;85;;; -220368;1;0;false;false;;;;;; -220369;7;0;false;false;0;0;0;;; -220376;1;0;false;false;;;;;; -220377;2;0;false;false;0;0;0;;; -220379;1;0;false;false;;;;;; -220380;2;0;false;false;0;0;0;;; -220382;1;0;false;false;;;;;; -220383;1;0;false;false;0;0;0;;; -220384;4;0;false;false;;;;;; -220388;6;1;false;false;127;0;85;;; -220394;1;0;false;false;0;0;0;;; -220395;3;0;false;false;;;;;; -220398;1;0;false;false;0;0;0;;; -220399;3;0;false;false;;;;;; -220402;10;0;false;false;0;0;0;;; -220412;1;0;false;false;;;;;; -220413;1;0;false;false;0;0;0;;; -220414;1;0;false;false;;;;;; -220415;16;0;false;false;0;0;0;;; -220431;3;0;false;false;;;;;; -220434;2;1;false;false;127;0;85;;; -220436;1;0;false;false;;;;;; -220437;7;0;false;false;0;0;0;;; -220444;1;0;false;false;;;;;; -220445;1;0;false;false;0;0;0;;; -220446;1;0;false;false;;;;;; -220447;2;0;false;false;0;0;0;;; -220449;1;0;false;false;;;;;; -220450;1;0;false;false;0;0;0;;; -220451;4;0;false;false;;;;;; -220455;3;1;false;false;127;0;85;;; -220458;1;0;false;false;;;;;; -220459;7;0;false;false;0;0;0;;; -220466;1;0;false;false;;;;;; -220467;1;0;false;false;0;0;0;;; -220468;1;0;false;false;;;;;; -220469;10;0;false;false;0;0;0;;; -220479;1;0;false;false;;;;;; -220480;1;0;false;false;0;0;0;;; -220481;1;0;false;false;;;;;; -220482;7;0;false;false;0;0;0;;; -220489;4;0;false;false;;;;;; -220493;3;1;false;false;127;0;85;;; -220496;1;0;false;false;;;;;; -220497;11;0;false;false;0;0;0;;; -220508;1;0;false;false;;;;;; -220509;1;0;false;false;0;0;0;;; -220510;1;0;false;false;;;;;; -220511;16;0;false;false;0;0;0;;; -220527;1;0;false;false;;;;;; -220528;1;0;false;false;0;0;0;;; -220529;1;0;false;false;;;;;; -220530;7;0;false;false;0;0;0;;; -220537;1;0;false;false;;;;;; -220538;1;0;false;false;0;0;0;;; -220539;1;0;false;false;;;;;; -220540;12;0;false;false;0;0;0;;; -220552;4;0;false;false;;;;;; -220556;3;1;false;false;127;0;85;;; -220559;1;0;false;false;;;;;; -220560;12;0;false;false;0;0;0;;; -220572;1;0;false;false;;;;;; -220573;1;0;false;false;0;0;0;;; -220574;1;0;false;false;;;;;; -220575;17;0;false;false;0;0;0;;; -220592;1;0;false;false;;;;;; -220593;1;0;false;false;0;0;0;;; -220594;1;0;false;false;;;;;; -220595;9;0;false;false;0;0;0;;; -220604;1;0;false;false;;;;;; -220605;1;0;false;false;0;0;0;;; -220606;1;0;false;false;;;;;; -220607;13;0;false;false;0;0;0;;; -220620;4;0;false;false;;;;;; -220624;7;0;false;false;0;0;0;;; -220631;5;0;false;false;;;;;; -220636;11;0;false;false;0;0;0;;; -220647;1;0;false;false;;;;;; -220648;10;0;false;false;0;0;0;;; -220658;7;0;false;false;;;;;; -220665;21;0;false;false;63;127;95;;; -220686;3;0;false;false;;;;;; -220689;8;0;false;false;0;0;0;;; -220697;1;0;false;false;;;;;; -220698;10;0;false;false;0;0;0;;; -220708;7;0;false;false;;;;;; -220715;16;0;false;false;63;127;95;;; -220731;3;0;false;false;;;;;; -220734;12;0;false;false;0;0;0;;; -220746;1;0;false;false;;;;;; -220747;13;0;false;false;0;0;0;;; -220760;1;0;false;false;;;;;; -220761;4;1;false;false;127;0;85;;; -220765;2;0;false;false;0;0;0;;; -220767;4;0;false;false;;;;;; -220771;2;1;false;false;127;0;85;;; -220773;1;0;false;false;;;;;; -220774;8;0;false;false;0;0;0;;; -220782;1;0;false;false;;;;;; -220783;1;0;false;false;0;0;0;;; -220784;1;0;false;false;;;;;; -220785;12;0;false;false;0;0;0;;; -220797;1;0;false;false;;;;;; -220798;1;0;false;false;0;0;0;;; -220799;5;0;false;false;;;;;; -220804;61;0;false;false;63;127;95;;; -220865;3;0;false;false;;;;;; -220868;21;0;false;false;63;127;95;;; -220889;3;0;false;false;;;;;; -220892;5;1;false;false;127;0;85;;; -220897;8;0;false;false;0;0;0;;; -220905;6;0;false;false;;;;;; -220911;10;0;false;false;0;0;0;;; -220921;1;0;false;false;;;;;; -220922;1;0;false;false;0;0;0;;; -220923;1;0;false;false;;;;;; -220924;12;0;false;false;0;0;0;;; -220936;1;0;false;false;;;;;; -220937;10;0;false;false;0;0;0;;; -220947;7;0;false;false;;;;;; -220954;6;0;false;false;0;0;0;;; -220960;1;0;false;false;;;;;; -220961;1;0;false;false;0;0;0;;; -220962;1;0;false;false;;;;;; -220963;12;0;false;false;0;0;0;;; -220975;1;0;false;false;;;;;; -220976;13;0;false;false;0;0;0;;; -220989;1;0;false;false;;;;;; -220990;4;1;false;false;127;0;85;;; -220994;2;0;false;false;0;0;0;;; -220996;4;0;false;false;;;;;; -221000;1;0;false;false;0;0;0;;; -221001;3;0;false;false;;;;;; -221004;1;0;false;false;0;0;0;;; -221005;3;0;false;false;;;;;; -221008;4;1;false;false;127;0;85;;; -221012;1;0;false;false;;;;;; -221013;1;0;false;false;0;0;0;;; -221014;4;0;false;false;;;;;; -221018;3;1;false;false;127;0;85;;; -221021;1;0;false;false;;;;;; -221022;12;0;false;false;0;0;0;;; -221034;1;0;false;false;;;;;; -221035;1;0;false;false;0;0;0;;; -221036;1;0;false;false;;;;;; -221037;10;0;false;false;0;0;0;;; -221047;1;0;false;false;;;;;; -221048;1;0;false;false;0;0;0;;; -221049;1;0;false;false;;;;;; -221050;7;0;false;false;0;0;0;;; -221057;4;0;false;false;;;;;; -221061;3;1;false;false;127;0;85;;; -221064;1;0;false;false;;;;;; -221065;11;0;false;false;0;0;0;;; -221076;1;0;false;false;;;;;; -221077;1;0;false;false;0;0;0;;; -221078;1;0;false;false;;;;;; -221079;16;0;false;false;0;0;0;;; -221095;1;0;false;false;;;;;; -221096;1;0;false;false;0;0;0;;; -221097;1;0;false;false;;;;;; -221098;12;0;false;false;0;0;0;;; -221110;1;0;false;false;;;;;; -221111;1;0;false;false;0;0;0;;; -221112;1;0;false;false;;;;;; -221113;12;0;false;false;0;0;0;;; -221125;4;0;false;false;;;;;; -221129;3;1;false;false;127;0;85;;; -221132;1;0;false;false;;;;;; -221133;12;0;false;false;0;0;0;;; -221145;1;0;false;false;;;;;; -221146;1;0;false;false;0;0;0;;; -221147;1;0;false;false;;;;;; -221148;17;0;false;false;0;0;0;;; -221165;1;0;false;false;;;;;; -221166;1;0;false;false;0;0;0;;; -221167;1;0;false;false;;;;;; -221168;9;0;false;false;0;0;0;;; -221177;1;0;false;false;;;;;; -221178;1;0;false;false;0;0;0;;; -221179;1;0;false;false;;;;;; -221180;13;0;false;false;0;0;0;;; -221193;4;0;false;false;;;;;; -221197;7;0;false;false;0;0;0;;; -221204;5;0;false;false;;;;;; -221209;13;0;false;false;0;0;0;;; -221222;1;0;false;false;;;;;; -221223;10;0;false;false;0;0;0;;; -221233;5;0;false;false;;;;;; -221238;21;0;false;false;63;127;95;;; -221259;3;0;false;false;;;;;; -221262;11;0;false;false;0;0;0;;; -221273;1;0;false;false;;;;;; -221274;10;0;false;false;0;0;0;;; -221284;6;0;false;false;;;;;; -221290;16;0;false;false;63;127;95;;; -221306;3;0;false;false;;;;;; -221309;12;0;false;false;0;0;0;;; -221321;1;0;false;false;;;;;; -221322;13;0;false;false;0;0;0;;; -221335;1;0;false;false;;;;;; -221336;4;1;false;false;127;0;85;;; -221340;2;0;false;false;0;0;0;;; -221342;4;0;false;false;;;;;; -221346;2;1;false;false;127;0;85;;; -221348;1;0;false;false;;;;;; -221349;13;0;false;false;0;0;0;;; -221362;1;0;false;false;;;;;; -221363;1;0;false;false;0;0;0;;; -221364;1;0;false;false;;;;;; -221365;12;0;false;false;0;0;0;;; -221377;1;0;false;false;;;;;; -221378;1;0;false;false;0;0;0;;; -221379;5;0;false;false;;;;;; -221384;58;0;false;false;63;127;95;;; -221442;3;0;false;false;;;;;; -221445;16;0;false;false;63;127;95;;; -221461;3;0;false;false;;;;;; -221464;5;1;false;false;127;0;85;;; -221469;8;0;false;false;0;0;0;;; -221477;6;0;false;false;;;;;; -221483;10;0;false;false;0;0;0;;; -221493;1;0;false;false;;;;;; -221494;1;0;false;false;0;0;0;;; -221495;1;0;false;false;;;;;; -221496;12;0;false;false;0;0;0;;; -221508;1;0;false;false;;;;;; -221509;10;0;false;false;0;0;0;;; -221519;7;0;false;false;;;;;; -221526;7;0;false;false;0;0;0;;; -221533;1;0;false;false;;;;;; -221534;1;0;false;false;0;0;0;;; -221535;1;0;false;false;;;;;; -221536;12;0;false;false;0;0;0;;; -221548;1;0;false;false;;;;;; -221549;13;0;false;false;0;0;0;;; -221562;1;0;false;false;;;;;; -221563;4;1;false;false;127;0;85;;; -221567;2;0;false;false;0;0;0;;; -221569;5;0;false;false;;;;;; -221574;1;0;false;false;0;0;0;;; -221575;3;0;false;false;;;;;; -221578;1;0;false;false;0;0;0;;; -221579;3;0;false;false;;;;;; -221582;22;0;false;false;0;0;0;;; -221604;1;0;false;false;;;;;; -221605;2;0;false;false;0;0;0;;; -221607;1;0;false;false;;;;;; -221608;7;0;false;false;0;0;0;;; -221615;3;0;false;false;;;;;; -221618;3;1;false;false;127;0;85;;; -221621;1;0;false;false;;;;;; -221622;10;0;false;false;0;0;0;;; -221632;1;0;false;false;;;;;; -221633;1;0;false;false;0;0;0;;; -221634;1;0;false;false;;;;;; -221635;7;0;false;false;0;0;0;;; -221642;1;0;false;false;;;;;; -221643;1;0;false;false;0;0;0;;; -221644;1;0;false;false;;;;;; -221645;7;0;false;false;0;0;0;;; -221652;3;0;false;false;;;;;; -221655;19;0;false;false;0;0;0;;; -221674;3;0;false;false;;;;;; -221677;48;0;false;false;63;127;95;;; -221725;1;0;false;false;;;;;; -221726;7;0;false;false;0;0;0;;; -221733;1;0;false;false;;;;;; -221734;1;0;false;false;0;0;0;;; -221735;1;0;false;false;;;;;; -221736;11;0;false;false;0;0;0;;; -221747;2;0;false;false;;;;;; -221749;1;0;false;false;0;0;0;;; -221750;2;0;false;false;;;;;; -221752;3;0;false;false;63;95;191;;; -221755;3;0;false;false;;;;;; -221758;1;0;false;false;63;95;191;;; -221759;1;0;false;false;;;;;; -221760;7;0;false;false;63;95;191;;; -221767;1;0;false;false;;;;;; -221768;3;0;false;false;63;95;191;;; -221771;1;0;false;false;;;;;; -221772;6;0;false;false;63;95;191;;; -221778;1;0;false;false;;;;;; -221779;12;0;false;false;63;95;191;;; -221791;1;0;false;false;;;;;; -221792;3;0;false;false;63;95;191;;; -221795;1;0;false;false;;;;;; -221796;6;0;false;false;63;95;191;;; -221802;1;0;false;false;;;;;; -221803;3;0;false;false;63;95;191;;; -221806;1;0;false;false;;;;;; -221807;10;0;false;false;63;95;191;;; -221817;1;0;false;false;;;;;; -221818;6;0;false;false;63;95;191;;; -221824;3;0;false;false;;;;;; -221827;1;0;false;false;63;95;191;;; -221828;1;0;false;false;;;;;; -221829;3;0;false;false;63;95;191;;; -221832;1;0;false;false;;;;;; -221833;2;0;false;false;63;95;191;;; -221835;1;0;false;false;;;;;; -221836;7;0;false;false;63;95;191;;; -221843;1;0;false;false;;;;;; -221844;3;0;false;false;63;95;191;;; -221847;1;0;false;false;;;;;; -221848;3;0;false;false;63;95;191;;; -221851;1;0;false;false;;;;;; -221852;10;0;false;false;63;95;191;;; -221862;1;0;false;false;;;;;; -221863;8;0;false;false;63;95;191;;; -221871;3;0;false;false;;;;;; -221874;1;0;false;false;63;95;191;;; -221875;1;0;false;false;;;;;; -221876;3;0;false;false;127;127;159;;; -221879;3;0;false;false;;;;;; -221882;1;0;false;false;63;95;191;;; -221883;3;0;false;false;;;;;; -221886;1;0;false;false;63;95;191;;; -221887;1;0;false;false;;;;;; -221888;7;1;false;false;127;159;191;;; -221895;6;0;false;false;63;95;191;;; -221901;1;0;false;false;;;;;; -221902;6;0;false;false;63;95;191;;; -221908;1;0;false;false;;;;;; -221909;2;0;false;false;63;95;191;;; -221911;1;0;false;false;;;;;; -221912;6;0;false;false;63;95;191;;; -221918;1;0;false;false;;;;;; -221919;2;0;false;false;63;95;191;;; -221921;1;0;false;false;;;;;; -221922;7;0;false;false;63;95;191;;; -221929;1;0;false;false;;;;;; -221930;1;0;false;false;63;95;191;;; -221931;1;0;false;false;;;;;; -221932;1;0;false;false;63;95;191;;; -221933;1;0;false;false;;;;;; -221934;1;0;false;false;63;95;191;;; -221935;1;0;false;false;;;;;; -221936;6;0;false;false;63;95;191;;; -221942;1;0;false;false;;;;;; -221943;5;0;false;false;63;95;191;;; -221948;3;0;false;false;;;;;; -221951;1;0;false;false;63;95;191;;; -221952;2;0;false;false;;;;;; -221954;18;0;false;false;63;95;191;;; -221972;1;0;false;false;;;;;; -221973;1;0;false;false;63;95;191;;; -221974;1;0;false;false;;;;;; -221975;8;1;false;false;127;159;191;;; -221983;2;0;false;false;;;;;; -221985;1;0;false;false;63;95;191;;; -221986;1;0;false;false;;;;;; -221987;8;0;false;false;63;95;191;;; -221995;1;0;false;false;;;;;; -221996;6;0;false;false;63;95;191;;; -222002;1;0;false;false;;;;;; -222003;3;0;false;false;63;95;191;;; -222006;1;0;false;false;;;;;; -222007;8;0;false;false;63;95;191;;; -222015;4;0;false;false;;;;;; -222019;1;0;false;false;63;95;191;;; -222020;1;0;false;false;;;;;; -222021;9;0;false;false;63;95;191;;; -222030;1;0;false;false;;;;;; -222031;6;0;false;false;63;95;191;;; -222037;1;0;false;false;;;;;; -222038;3;0;false;false;63;95;191;;; -222041;1;0;false;false;;;;;; -222042;3;0;false;false;63;95;191;;; -222045;1;0;false;false;;;;;; -222046;9;0;false;false;63;95;191;;; -222055;1;0;false;false;;;;;; -222056;3;0;false;false;63;95;191;;; -222059;1;0;false;false;;;;;; -222060;5;0;false;false;63;95;191;;; -222065;1;0;false;false;;;;;; -222066;6;0;false;false;63;95;191;;; -222072;1;0;false;false;;;;;; -222073;2;0;false;false;63;95;191;;; -222075;1;0;false;false;;;;;; -222076;3;0;false;false;63;95;191;;; -222079;1;0;false;false;;;;;; -222080;6;0;false;false;63;95;191;;; -222086;3;0;false;false;;;;;; -222089;2;0;false;false;63;95;191;;; -222091;2;0;false;false;;;;;; -222093;7;1;false;false;127;0;85;;; -222100;1;0;false;false;;;;;; -222101;20;0;false;false;0;0;0;;; -222121;3;1;false;false;127;0;85;;; -222124;1;0;false;false;;;;;; -222125;7;0;false;false;0;0;0;;; -222132;1;0;false;false;;;;;; -222133;1;0;false;false;0;0;0;;; -222134;3;0;false;false;;;;;; -222137;2;1;false;false;127;0;85;;; -222139;1;0;false;false;;;;;; -222140;7;0;false;false;0;0;0;;; -222147;1;0;false;false;;;;;; -222148;2;0;false;false;0;0;0;;; -222150;1;0;false;false;;;;;; -222151;2;0;false;false;0;0;0;;; -222153;1;0;false;false;;;;;; -222154;1;0;false;false;0;0;0;;; -222155;4;0;false;false;;;;;; -222159;6;1;false;false;127;0;85;;; -222165;1;0;false;false;;;;;; -222166;5;1;false;false;127;0;85;;; -222171;1;0;false;false;0;0;0;;; -222172;3;0;false;false;;;;;; -222175;1;0;false;false;0;0;0;;; -222176;3;0;false;false;;;;;; -222179;9;0;false;false;0;0;0;;; -222188;1;0;false;false;;;;;; -222189;13;0;false;false;0;0;0;;; -222202;1;0;false;false;;;;;; -222203;1;0;false;false;0;0;0;;; -222204;1;0;false;false;;;;;; -222205;19;0;false;false;0;0;0;;; -222224;3;0;false;false;;;;;; -222227;2;1;false;false;127;0;85;;; -222229;1;0;false;false;;;;;; -222230;14;0;false;false;0;0;0;;; -222244;1;0;false;false;;;;;; -222245;2;0;false;false;0;0;0;;; -222247;1;0;false;false;;;;;; -222248;4;1;false;false;127;0;85;;; -222252;1;0;false;false;0;0;0;;; -222253;1;0;false;false;;;;;; -222254;1;0;false;false;0;0;0;;; -222255;4;0;false;false;;;;;; -222259;49;0;false;false;0;0;0;;; -222308;1;0;false;false;;;;;; -222309;1;0;false;false;0;0;0;;; -222310;1;0;false;false;;;;;; -222311;8;0;false;false;0;0;0;;; -222319;3;0;false;false;;;;;; -222322;1;0;false;false;0;0;0;;; -222323;3;0;false;false;;;;;; -222326;25;0;false;false;0;0;0;;; -222351;3;0;false;false;;;;;; -222354;6;1;false;false;127;0;85;;; -222360;1;0;false;false;;;;;; -222361;4;1;false;false;127;0;85;;; -222365;1;0;false;false;0;0;0;;; -222366;2;0;false;false;;;;;; -222368;1;0;false;false;0;0;0;;; -222369;2;0;false;false;;;;;; -222371;3;0;false;false;63;95;191;;; -222374;4;0;false;false;;;;;; -222378;1;0;false;false;63;95;191;;; -222379;1;0;false;false;;;;;; -222380;7;0;false;false;63;95;191;;; -222387;1;0;false;false;;;;;; -222388;3;0;false;false;63;95;191;;; -222391;1;0;false;false;;;;;; -222392;3;0;false;false;63;95;191;;; -222395;1;0;false;false;;;;;; -222396;5;0;false;false;63;95;191;;; -222401;3;0;false;false;;;;;; -222404;1;0;false;false;63;95;191;;; -222405;1;0;false;false;;;;;; -222406;3;0;false;false;127;127;159;;; -222409;3;0;false;false;;;;;; -222412;1;0;false;false;63;95;191;;; -222413;3;0;false;false;;;;;; -222416;1;0;false;false;63;95;191;;; -222417;1;0;false;false;;;;;; -222418;11;1;false;false;127;159;191;;; -222429;12;0;false;false;63;95;191;;; -222441;1;0;false;false;;;;;; -222442;4;0;false;false;127;127;159;;; -222446;3;0;false;false;;;;;; -222449;1;0;false;false;63;95;191;;; -222450;4;0;false;false;;;;;; -222454;4;0;false;false;127;127;159;;; -222458;21;0;false;false;63;95;191;;; -222479;1;0;false;false;;;;;; -222480;1;0;false;false;127;127;159;;; -222481;1;0;false;false;;;;;; -222482;2;0;false;false;63;95;191;;; -222484;1;0;false;false;;;;;; -222485;3;0;false;false;63;95;191;;; -222488;1;0;false;false;;;;;; -222489;8;0;false;false;63;95;191;;; -222497;1;0;false;false;;;;;; -222498;3;0;false;false;63;95;191;;; -222501;1;0;false;false;;;;;; -222502;4;0;false;false;63;95;191;;; -222506;1;0;false;false;;;;;; -222507;8;0;false;false;63;95;191;;; -222515;5;0;false;false;127;127;159;;; -222520;3;0;false;false;;;;;; -222523;1;0;false;false;63;95;191;;; -222524;4;0;false;false;;;;;; -222528;4;0;false;false;127;127;159;;; -222532;27;0;false;false;63;95;191;;; -222559;1;0;false;false;;;;;; -222560;1;0;false;false;127;127;159;;; -222561;1;0;false;false;;;;;; -222562;2;0;false;false;63;95;191;;; -222564;1;0;false;false;;;;;; -222565;3;0;false;false;63;95;191;;; -222568;1;0;false;false;;;;;; -222569;6;0;false;false;63;95;191;;; -222575;1;0;false;false;;;;;; -222576;4;0;false;false;63;95;191;;; -222580;1;0;false;false;;;;;; -222581;3;0;false;false;63;95;191;;; -222584;1;0;false;false;;;;;; -222585;6;0;false;false;63;95;191;;; -222591;1;0;false;false;;;;;; -222592;4;0;false;false;63;95;191;;; -222596;1;0;false;false;;;;;; -222597;7;0;false;false;63;95;191;;; -222604;1;0;false;false;;;;;; -222605;3;0;false;false;63;95;191;;; -222608;1;0;false;false;;;;;; -222609;8;0;false;false;63;95;191;;; -222617;5;0;false;false;127;127;159;;; -222622;3;0;false;false;;;;;; -222625;1;0;false;false;63;95;191;;; -222626;1;0;false;false;;;;;; -222627;5;0;false;false;127;127;159;;; -222632;3;0;false;false;;;;;; -222635;2;0;false;false;63;95;191;;; -222637;2;0;false;false;;;;;; -222639;6;1;false;false;127;0;85;;; -222645;1;0;false;false;;;;;; -222646;4;1;false;false;127;0;85;;; -222650;1;0;false;false;;;;;; -222651;11;0;false;false;0;0;0;;; -222662;1;0;false;false;;;;;; -222663;1;0;false;false;0;0;0;;; -222664;3;0;false;false;;;;;; -222667;14;0;false;false;0;0;0;;; -222681;3;0;false;false;;;;;; -222684;15;0;false;false;0;0;0;;; -222699;1;0;false;false;;;;;; -222700;28;0;false;false;0;0;0;;; -222728;2;0;false;false;;;;;; -222730;1;0;false;false;0;0;0;;; -222731;2;0;false;false;;;;;; -222733;3;0;false;false;63;95;191;;; -222736;3;0;false;false;;;;;; -222739;1;0;false;false;63;95;191;;; -222740;1;0;false;false;;;;;; -222741;16;0;false;false;63;95;191;;; -222757;1;0;false;false;;;;;; -222758;4;0;false;false;63;95;191;;; -222762;1;0;false;false;;;;;; -222763;2;0;false;false;63;95;191;;; -222765;1;0;false;false;;;;;; -222766;7;0;false;false;63;95;191;;; -222773;1;0;false;false;;;;;; -222774;2;0;false;false;63;95;191;;; -222776;1;0;false;false;;;;;; -222777;3;0;false;false;63;95;191;;; -222780;1;0;false;false;;;;;; -222781;6;0;false;false;63;95;191;;; -222787;3;0;false;false;;;;;; -222790;1;0;false;false;63;95;191;;; -222791;1;0;false;false;;;;;; -222792;3;0;false;false;127;127;159;;; -222795;3;0;false;false;;;;;; -222798;1;0;false;false;63;95;191;;; -222799;3;0;false;false;;;;;; -222802;1;0;false;false;63;95;191;;; -222803;1;0;false;false;;;;;; -222804;7;1;false;false;127;159;191;;; -222811;5;0;false;false;63;95;191;;; -222816;1;0;false;false;;;;;; -222817;3;0;false;false;63;95;191;;; -222820;1;0;false;false;;;;;; -222821;4;0;false;false;63;95;191;;; -222825;1;0;false;false;;;;;; -222826;6;0;false;false;63;95;191;;; -222832;1;0;false;false;;;;;; -222833;6;0;false;false;63;95;191;;; -222839;4;0;false;false;;;;;; -222843;1;0;false;false;63;95;191;;; -222844;1;0;false;false;;;;;; -222845;4;0;false;false;127;127;159;;; -222849;3;0;false;false;;;;;; -222852;1;0;false;false;63;95;191;;; -222853;1;0;false;false;;;;;; -222854;4;0;false;false;127;127;159;;; -222858;11;0;false;false;63;95;191;;; -222869;1;0;false;false;;;;;; -222870;1;0;false;false;127;127;159;;; -222871;1;0;false;false;;;;;; -222872;3;0;false;false;63;95;191;;; -222875;1;0;false;false;;;;;; -222876;7;0;false;false;63;95;191;;; -222883;1;0;false;false;;;;;; -222884;5;0;false;false;63;95;191;;; -222889;1;0;false;false;;;;;; -222890;6;0;false;false;63;95;191;;; -222896;5;0;false;false;127;127;159;;; -222901;3;0;false;false;;;;;; -222904;1;0;false;false;63;95;191;;; -222905;2;0;false;false;;;;;; -222907;4;0;false;false;127;127;159;;; -222911;9;0;false;false;63;95;191;;; -222920;1;0;false;false;;;;;; -222921;1;0;false;false;127;127;159;;; -222922;1;0;false;false;;;;;; -222923;3;0;false;false;63;95;191;;; -222926;1;0;false;false;;;;;; -222927;7;0;false;false;63;95;191;;; -222934;1;0;false;false;;;;;; -222935;3;0;false;false;63;95;191;;; -222938;1;0;false;false;;;;;; -222939;6;0;false;false;63;95;191;;; -222945;5;0;false;false;127;127;159;;; -222950;3;0;false;false;;;;;; -222953;1;0;false;false;63;95;191;;; -222954;2;0;false;false;;;;;; -222956;4;0;false;false;127;127;159;;; -222960;10;0;false;false;63;95;191;;; -222970;1;0;false;false;;;;;; -222971;1;0;false;false;127;127;159;;; -222972;1;0;false;false;;;;;; -222973;3;0;false;false;63;95;191;;; -222976;1;0;false;false;;;;;; -222977;3;0;false;false;63;95;191;;; -222980;1;0;false;false;;;;;; -222981;4;0;false;false;63;95;191;;; -222985;5;0;false;false;127;127;159;;; -222990;3;0;false;false;;;;;; -222993;1;0;false;false;63;95;191;;; -222994;1;0;false;false;;;;;; -222995;5;0;false;false;127;127;159;;; -223000;3;0;false;false;;;;;; -223003;2;0;false;false;63;95;191;;; -223005;2;0;false;false;;;;;; -223007;4;1;false;false;127;0;85;;; -223011;1;0;false;false;;;;;; -223012;18;0;false;false;0;0;0;;; -223030;1;0;false;false;;;;;; -223031;6;0;false;false;0;0;0;;; -223037;1;0;false;false;;;;;; -223038;1;0;false;false;0;0;0;;; -223039;3;0;false;false;;;;;; -223042;2;1;false;false;127;0;85;;; -223044;1;0;false;false;;;;;; -223045;10;0;false;false;0;0;0;;; -223055;1;0;false;false;;;;;; -223056;1;0;false;false;0;0;0;;; -223057;4;0;false;false;;;;;; -223061;20;0;false;false;0;0;0;;; -223081;1;0;false;false;;;;;; -223082;4;1;false;false;127;0;85;;; -223086;2;0;false;false;0;0;0;;; -223088;3;0;false;false;;;;;; -223091;1;0;false;false;0;0;0;;; -223092;2;0;false;false;;;;;; -223094;1;0;false;false;0;0;0;;; -223095;2;0;false;false;;;;;; -223097;4;1;false;false;127;0;85;;; -223101;1;0;false;false;;;;;; -223102;21;0;false;false;0;0;0;;; -223123;1;0;false;false;;;;;; -223124;6;0;false;false;0;0;0;;; -223130;1;0;false;false;;;;;; -223131;1;0;false;false;0;0;0;;; -223132;3;0;false;false;;;;;; -223135;10;0;false;false;0;0;0;;; -223145;1;0;false;false;;;;;; -223146;10;0;false;false;0;0;0;;; -223156;1;0;false;false;;;;;; -223157;1;0;false;false;0;0;0;;; -223158;1;0;false;false;;;;;; -223159;16;0;false;false;0;0;0;;; -223175;3;0;false;false;;;;;; -223178;2;1;false;false;127;0;85;;; -223180;1;0;false;false;;;;;; -223181;20;0;false;false;0;0;0;;; -223201;1;0;false;false;;;;;; -223202;2;0;false;false;0;0;0;;; -223204;1;0;false;false;;;;;; -223205;2;0;false;false;0;0;0;;; -223207;1;0;false;false;;;;;; -223208;1;0;false;false;0;0;0;;; -223209;4;0;false;false;;;;;; -223213;39;0;false;false;0;0;0;;; -223252;1;0;false;false;;;;;; -223253;12;0;false;false;0;0;0;;; -223265;1;0;false;false;;;;;; -223266;9;0;false;false;0;0;0;;; -223275;1;0;false;false;;;;;; -223276;1;0;false;false;0;0;0;;; -223277;1;0;false;false;;;;;; -223278;13;0;false;false;0;0;0;;; -223291;3;0;false;false;;;;;; -223294;1;0;false;false;0;0;0;;; -223295;1;0;false;false;;;;;; -223296;4;1;false;false;127;0;85;;; -223300;1;0;false;false;;;;;; -223301;1;0;false;false;0;0;0;;; -223302;4;0;false;false;;;;;; -223306;2;1;false;false;127;0;85;;; -223308;1;0;false;false;;;;;; -223309;12;0;false;false;0;0;0;;; -223321;1;0;false;false;;;;;; -223322;2;0;false;false;0;0;0;;; -223324;1;0;false;false;;;;;; -223325;10;0;false;false;0;0;0;;; -223335;1;0;false;false;;;;;; -223336;1;0;false;false;0;0;0;;; -223337;5;0;false;false;;;;;; -223342;39;0;false;false;0;0;0;;; -223381;1;0;false;false;;;;;; -223382;12;0;false;false;0;0;0;;; -223394;1;0;false;false;;;;;; -223395;21;0;false;false;0;0;0;;; -223416;4;0;false;false;;;;;; -223420;1;0;false;false;0;0;0;;; -223421;1;0;false;false;;;;;; -223422;4;1;false;false;127;0;85;;; -223426;1;0;false;false;;;;;; -223427;1;0;false;false;0;0;0;;; -223428;5;0;false;false;;;;;; -223433;39;0;false;false;0;0;0;;; -223472;1;0;false;false;;;;;; -223473;12;0;false;false;0;0;0;;; -223485;1;0;false;false;;;;;; -223486;9;0;false;false;0;0;0;;; -223495;1;0;false;false;;;;;; -223496;1;0;false;false;0;0;0;;; -223497;1;0;false;false;;;;;; -223498;13;0;false;false;0;0;0;;; -223511;5;0;false;false;;;;;; -223516;39;0;false;false;0;0;0;;; -223555;1;0;false;false;;;;;; -223556;12;0;false;false;0;0;0;;; -223568;1;0;false;false;;;;;; -223569;21;0;false;false;0;0;0;;; -223590;5;0;false;false;;;;;; -223595;1;0;false;false;0;0;0;;; -223596;3;0;false;false;;;;;; -223599;1;0;false;false;0;0;0;;; -223600;3;0;false;false;;;;;; -223603;27;0;false;false;0;0;0;;; -223630;1;0;false;false;;;;;; -223631;7;0;false;false;0;0;0;;; -223638;2;0;false;false;;;;;; -223640;1;0;false;false;0;0;0;;; -223641;2;0;false;false;;;;;; -223643;3;0;false;false;63;95;191;;; -223646;3;0;false;false;;;;;; -223649;1;0;false;false;63;95;191;;; -223650;1;0;false;false;;;;;; -223651;5;0;false;false;63;95;191;;; -223656;1;0;false;false;;;;;; -223657;3;0;false;false;63;95;191;;; -223660;1;0;false;false;;;;;; -223661;9;0;false;false;63;95;191;;; -223670;1;0;false;false;;;;;; -223671;9;0;false;false;63;95;191;;; -223680;1;0;false;false;;;;;; -223681;6;0;false;false;63;95;191;;; -223687;3;0;false;false;;;;;; -223690;2;0;false;false;63;95;191;;; -223692;2;0;false;false;;;;;; -223694;4;1;false;false;127;0;85;;; -223698;1;0;false;false;;;;;; -223699;20;0;false;false;0;0;0;;; -223719;1;0;false;false;;;;;; -223720;1;0;false;false;0;0;0;;; -223721;3;0;false;false;;;;;; -223724;39;0;false;false;0;0;0;;; -223763;3;0;false;false;;;;;; -223766;5;0;false;false;0;0;0;;; -223771;1;0;false;false;;;;;; -223772;5;0;false;false;0;0;0;;; -223777;1;0;false;false;;;;;; -223778;1;0;false;false;0;0;0;;; -223779;1;0;false;false;;;;;; -223780;3;1;false;false;127;0;85;;; -223783;1;0;false;false;;;;;; -223784;8;0;false;false;0;0;0;;; -223792;3;0;false;false;;;;;; -223795;7;0;false;false;0;0;0;;; -223802;1;0;false;false;;;;;; -223803;1;0;false;false;0;0;0;;; -223804;1;0;false;false;;;;;; -223805;12;0;false;false;0;0;0;;; -223817;3;0;false;false;;;;;; -223820;7;0;false;false;0;0;0;;; -223827;1;0;false;false;;;;;; -223828;1;0;false;false;0;0;0;;; -223829;1;0;false;false;;;;;; -223830;12;0;false;false;0;0;0;;; -223842;3;0;false;false;;;;;; -223845;30;0;false;false;0;0;0;;; -223875;1;0;false;false;;;;;; -223876;7;0;false;false;0;0;0;;; -223883;2;0;false;false;;;;;; -223885;1;0;false;false;0;0;0;;; -223886;2;0;false;false;;;;;; -223888;3;0;false;false;63;95;191;;; -223891;3;0;false;false;;;;;; -223894;1;0;false;false;63;95;191;;; -223895;1;0;false;false;;;;;; -223896;4;0;false;false;63;95;191;;; -223900;1;0;false;false;;;;;; -223901;7;0;false;false;63;95;191;;; -223908;1;0;false;false;;;;;; -223909;3;0;false;false;63;95;191;;; -223912;1;0;false;false;;;;;; -223913;6;0;false;false;63;95;191;;; -223919;1;0;false;false;;;;;; -223920;5;0;false;false;63;95;191;;; -223925;1;0;false;false;;;;;; -223926;6;0;false;false;63;95;191;;; -223932;3;0;false;false;;;;;; -223935;1;0;false;false;63;95;191;;; -223936;1;0;false;false;;;;;; -223937;4;0;false;false;63;95;191;;; -223941;1;0;false;false;;;;;; -223942;9;0;false;false;63;95;191;;; -223951;1;0;false;false;;;;;; -223952;3;0;false;false;63;95;191;;; -223955;1;0;false;false;;;;;; -223956;8;0;false;false;63;95;191;;; -223964;1;0;false;false;;;;;; -223965;5;0;false;false;63;95;191;;; -223970;1;0;false;false;;;;;; -223971;3;0;false;false;63;95;191;;; -223974;1;0;false;false;;;;;; -223975;9;0;false;false;63;95;191;;; -223984;3;0;false;false;;;;;; -223987;1;0;false;false;63;95;191;;; -223988;1;0;false;false;;;;;; -223989;3;0;false;false;127;127;159;;; -223992;3;0;false;false;;;;;; -223995;1;0;false;false;63;95;191;;; -223996;3;0;false;false;;;;;; -223999;1;0;false;false;63;95;191;;; -224000;1;0;false;false;;;;;; -224001;7;1;false;false;127;159;191;;; -224008;4;0;false;false;63;95;191;;; -224012;1;0;false;false;;;;;; -224013;11;0;false;false;63;95;191;;; -224024;1;0;false;false;;;;;; -224025;5;0;false;false;63;95;191;;; -224030;1;0;false;false;;;;;; -224031;6;0;false;false;63;95;191;;; -224037;1;0;false;false;;;;;; -224038;12;0;false;false;63;95;191;;; -224050;1;0;false;false;;;;;; -224051;4;0;false;false;63;95;191;;; -224055;1;0;false;false;;;;;; -224056;3;0;false;false;63;95;191;;; -224059;1;0;false;false;;;;;; -224060;4;0;false;false;63;95;191;;; -224064;1;0;false;false;;;;;; -224065;5;0;false;false;63;95;191;;; -224070;3;0;false;false;;;;;; -224073;1;0;false;false;63;95;191;;; -224074;1;0;false;false;;;;;; -224075;7;1;false;false;127;159;191;;; -224082;3;0;false;false;63;95;191;;; -224085;3;0;false;false;;;;;; -224088;2;0;false;false;63;95;191;;; -224090;2;0;false;false;;;;;; -224092;6;1;false;false;127;0;85;;; -224098;1;0;false;false;;;;;; -224099;4;1;false;false;127;0;85;;; -224103;1;0;false;false;;;;;; -224104;12;0;false;false;0;0;0;;; -224116;7;1;false;false;127;0;85;;; -224123;1;0;false;false;;;;;; -224124;5;0;false;false;0;0;0;;; -224129;1;0;false;false;;;;;; -224130;1;0;false;false;0;0;0;;; -224131;3;0;false;false;;;;;; -224134;14;0;false;false;0;0;0;;; -224148;3;0;false;false;;;;;; -224151;2;1;false;false;127;0;85;;; -224153;1;0;false;false;;;;;; -224154;12;0;false;false;0;0;0;;; -224166;1;0;false;false;;;;;; -224167;1;0;false;false;0;0;0;;; -224168;1;0;false;false;;;;;; -224169;11;0;false;false;0;0;0;;; -224180;1;0;false;false;;;;;; -224181;2;0;false;false;0;0;0;;; -224183;1;0;false;false;;;;;; -224184;2;0;false;false;0;0;0;;; -224186;1;0;false;false;;;;;; -224187;6;1;false;false;127;0;85;;; -224193;1;0;false;false;0;0;0;;; -224194;6;0;false;false;;;;;; -224200;2;1;false;false;127;0;85;;; -224202;1;0;false;false;;;;;; -224203;5;0;false;false;0;0;0;;; -224208;1;0;false;false;;;;;; -224209;2;0;false;false;0;0;0;;; -224211;1;0;false;false;;;;;; -224212;9;0;false;false;0;0;0;;; -224221;1;0;false;false;;;;;; -224222;1;0;false;false;0;0;0;;; -224223;4;0;false;false;;;;;; -224227;9;0;false;false;0;0;0;;; -224236;1;0;false;false;;;;;; -224237;13;0;false;false;0;0;0;;; -224250;1;0;false;false;;;;;; -224251;1;0;false;false;0;0;0;;; -224252;1;0;false;false;;;;;; -224253;19;0;false;false;0;0;0;;; -224272;8;0;false;false;;;;;; -224280;8;0;false;false;0;0;0;;; -224288;1;0;false;false;;;;;; -224289;1;0;false;false;0;0;0;;; -224290;1;0;false;false;;;;;; -224291;5;0;false;false;0;0;0;;; -224296;4;0;false;false;;;;;; -224300;2;1;false;false;127;0;85;;; -224302;1;0;false;false;;;;;; -224303;10;0;false;false;0;0;0;;; -224313;1;0;false;false;;;;;; -224314;1;0;false;false;0;0;0;;; -224315;5;0;false;false;;;;;; -224320;14;0;false;false;0;0;0;;; -224334;1;0;false;false;;;;;; -224335;1;0;false;false;0;0;0;;; -224336;1;0;false;false;;;;;; -224337;8;0;false;false;0;0;0;;; -224345;5;0;false;false;;;;;; -224350;7;0;false;false;0;0;0;;; -224357;1;0;false;false;;;;;; -224358;1;0;false;false;0;0;0;;; -224359;1;0;false;false;;;;;; -224360;3;1;false;false;127;0;85;;; -224363;1;0;false;false;;;;;; -224364;24;0;false;false;0;0;0;;; -224388;1;0;false;false;;;;;; -224389;16;0;false;false;0;0;0;;; -224405;4;0;false;false;;;;;; -224409;1;0;false;false;0;0;0;;; -224410;4;0;false;false;;;;;; -224414;4;1;false;false;127;0;85;;; -224418;1;0;false;false;;;;;; -224419;1;0;false;false;0;0;0;;; -224420;5;0;false;false;;;;;; -224425;7;0;false;false;0;0;0;;; -224432;1;0;false;false;;;;;; -224433;1;0;false;false;0;0;0;;; -224434;1;0;false;false;;;;;; -224435;15;0;false;false;0;0;0;;; -224450;4;0;false;false;;;;;; -224454;1;0;false;false;0;0;0;;; -224455;4;0;false;false;;;;;; -224459;24;0;false;false;0;0;0;;; -224483;4;0;false;false;;;;;; -224487;22;0;false;false;0;0;0;;; -224509;1;0;false;false;;;;;; -224510;1;0;false;false;0;0;0;;; -224511;1;0;false;false;;;;;; -224512;2;0;false;false;0;0;0;;; -224514;4;0;false;false;;;;;; -224518;2;1;false;false;127;0;85;;; -224520;1;0;false;false;;;;;; -224521;14;0;false;false;0;0;0;;; -224535;1;0;false;false;;;;;; -224536;2;0;false;false;0;0;0;;; -224538;1;0;false;false;;;;;; -224539;4;1;false;false;127;0;85;;; -224543;1;0;false;false;0;0;0;;; -224544;1;0;false;false;;;;;; -224545;1;0;false;false;0;0;0;;; -224546;5;0;false;false;;;;;; -224551;36;0;false;false;0;0;0;;; -224587;4;0;false;false;;;;;; -224591;1;0;false;false;0;0;0;;; -224592;4;0;false;false;;;;;; -224596;16;0;false;false;0;0;0;;; -224612;4;0;false;false;;;;;; -224616;19;0;false;false;0;0;0;;; -224635;4;0;false;false;;;;;; -224639;5;1;false;false;127;0;85;;; -224644;10;0;false;false;0;0;0;;; -224654;5;0;false;false;;;;;; -224659;1;0;false;false;0;0;0;;; -224660;2;0;false;false;;;;;; -224662;1;0;false;false;0;0;0;;; -224663;2;0;false;false;;;;;; -224665;3;0;false;false;63;95;191;;; -224668;3;0;false;false;;;;;; -224671;1;0;false;false;63;95;191;;; -224672;1;0;false;false;;;;;; -224673;4;0;false;false;63;95;191;;; -224677;1;0;false;false;;;;;; -224678;3;0;false;false;63;95;191;;; -224681;1;0;false;false;;;;;; -224682;10;0;false;false;63;95;191;;; -224692;1;0;false;false;;;;;; -224693;6;0;false;false;63;95;191;;; -224699;2;0;false;false;;;;;; -224701;3;0;false;false;63;95;191;;; -224704;1;0;false;false;;;;;; -224705;3;0;false;false;63;95;191;;; -224708;1;0;false;false;;;;;; -224709;7;0;false;false;63;95;191;;; -224716;1;0;false;false;;;;;; -224717;6;0;false;false;63;95;191;;; -224723;1;0;false;false;;;;;; -224724;3;0;false;false;63;95;191;;; -224727;1;0;false;false;;;;;; -224728;9;0;false;false;63;95;191;;; -224737;3;0;false;false;;;;;; -224740;1;0;false;false;63;95;191;;; -224741;4;0;false;false;;;;;; -224745;1;0;false;false;63;95;191;;; -224746;1;0;false;false;;;;;; -224747;4;0;false;false;127;127;159;;; -224751;3;0;false;false;;;;;; -224754;1;0;false;false;63;95;191;;; -224755;1;0;false;false;;;;;; -224756;7;1;false;false;127;159;191;;; -224763;5;0;false;false;63;95;191;;; -224768;1;0;false;false;;;;;; -224769;3;0;false;false;63;95;191;;; -224772;1;0;false;false;;;;;; -224773;3;0;false;false;63;95;191;;; -224776;1;0;false;false;;;;;; -224777;5;0;false;false;63;95;191;;; -224782;1;0;false;false;;;;;; -224783;3;0;false;false;63;95;191;;; -224786;1;0;false;false;;;;;; -224787;3;0;false;false;63;95;191;;; -224790;1;0;false;false;;;;;; -224791;8;0;false;false;63;95;191;;; -224799;3;0;false;false;;;;;; -224802;1;0;false;false;63;95;191;;; -224803;3;0;false;false;;;;;; -224806;1;0;false;false;63;95;191;;; -224807;1;0;false;false;;;;;; -224808;11;1;false;false;127;159;191;;; -224819;12;0;false;false;63;95;191;;; -224831;1;0;false;false;;;;;; -224832;4;0;false;false;127;127;159;;; -224836;3;0;false;false;;;;;; -224839;1;0;false;false;63;95;191;;; -224840;4;0;false;false;;;;;; -224844;4;0;false;false;127;127;159;;; -224848;21;0;false;false;63;95;191;;; -224869;1;0;false;false;;;;;; -224870;1;0;false;false;127;127;159;;; -224871;1;0;false;false;;;;;; -224872;2;0;false;false;63;95;191;;; -224874;1;0;false;false;;;;;; -224875;3;0;false;false;63;95;191;;; -224878;1;0;false;false;;;;;; -224879;8;0;false;false;63;95;191;;; -224887;1;0;false;false;;;;;; -224888;3;0;false;false;63;95;191;;; -224891;1;0;false;false;;;;;; -224892;4;0;false;false;63;95;191;;; -224896;1;0;false;false;;;;;; -224897;8;0;false;false;63;95;191;;; -224905;5;0;false;false;127;127;159;;; -224910;3;0;false;false;;;;;; -224913;1;0;false;false;63;95;191;;; -224914;4;0;false;false;;;;;; -224918;4;0;false;false;127;127;159;;; -224922;27;0;false;false;63;95;191;;; -224949;1;0;false;false;;;;;; -224950;1;0;false;false;127;127;159;;; -224951;1;0;false;false;;;;;; -224952;2;0;false;false;63;95;191;;; -224954;1;0;false;false;;;;;; -224955;3;0;false;false;63;95;191;;; -224958;1;0;false;false;;;;;; -224959;6;0;false;false;63;95;191;;; -224965;1;0;false;false;;;;;; -224966;4;0;false;false;63;95;191;;; -224970;1;0;false;false;;;;;; -224971;3;0;false;false;63;95;191;;; -224974;1;0;false;false;;;;;; -224975;6;0;false;false;63;95;191;;; -224981;1;0;false;false;;;;;; -224982;4;0;false;false;63;95;191;;; -224986;1;0;false;false;;;;;; -224987;7;0;false;false;63;95;191;;; -224994;1;0;false;false;;;;;; -224995;3;0;false;false;63;95;191;;; -224998;1;0;false;false;;;;;; -224999;8;0;false;false;63;95;191;;; -225007;5;0;false;false;127;127;159;;; -225012;3;0;false;false;;;;;; -225015;1;0;false;false;63;95;191;;; -225016;1;0;false;false;;;;;; -225017;5;0;false;false;127;127;159;;; -225022;3;0;false;false;;;;;; -225025;2;0;false;false;63;95;191;;; -225027;2;0;false;false;;;;;; -225029;6;1;false;false;127;0;85;;; -225035;1;0;false;false;;;;;; -225036;4;1;false;false;127;0;85;;; -225040;1;0;false;false;;;;;; -225041;14;0;false;false;0;0;0;;; -225055;1;0;false;false;;;;;; -225056;6;0;false;false;0;0;0;;; -225062;1;0;false;false;;;;;; -225063;1;0;false;false;0;0;0;;; -225064;3;0;false;false;;;;;; -225067;11;0;false;false;0;0;0;;; -225078;1;0;false;false;;;;;; -225079;3;0;false;false;0;0;0;;; -225082;3;0;false;false;;;;;; -225085;5;1;false;false;127;0;85;;; -225090;17;0;false;false;0;0;0;;; -225107;3;0;false;false;;;;;; -225110;14;0;false;false;0;0;0;;; -225124;1;0;false;false;;;;;; -225125;1;0;false;false;0;0;0;;; -225126;1;0;false;false;;;;;; -225127;9;0;false;false;0;0;0;;; -225136;4;0;false;false;;;;;; -225140;2;1;false;false;127;0;85;;; -225142;1;0;false;false;;;;;; -225143;6;0;false;false;0;0;0;;; -225149;1;0;false;false;;;;;; -225150;2;0;false;false;0;0;0;;; -225152;1;0;false;false;;;;;; -225153;4;1;false;false;127;0;85;;; -225157;1;0;false;false;0;0;0;;; -225158;1;0;false;false;;;;;; -225159;1;0;false;false;0;0;0;;; -225160;4;0;false;false;;;;;; -225164;19;0;false;false;0;0;0;;; -225183;3;0;false;false;;;;;; -225186;1;0;false;false;0;0;0;;; -225187;2;0;false;false;;;;;; -225189;1;0;false;false;0;0;0;;; -225190;2;0;false;false;;;;;; -225192;3;0;false;false;63;95;191;;; -225195;3;0;false;false;;;;;; -225198;1;0;false;false;63;95;191;;; -225199;1;0;false;false;;;;;; -225200;5;1;false;false;127;159;191;;; -225205;45;0;false;false;63;95;191;;; -225250;3;0;false;false;;;;;; -225253;2;0;false;false;63;95;191;;; -225255;2;0;false;false;;;;;; -225257;6;1;false;false;127;0;85;;; -225263;1;0;false;false;;;;;; -225264;4;1;false;false;127;0;85;;; -225268;1;0;false;false;;;;;; -225269;19;0;false;false;0;0;0;;; -225288;1;0;false;false;;;;;; -225289;6;0;false;false;0;0;0;;; -225295;1;0;false;false;;;;;; -225296;1;0;false;false;0;0;0;;; -225297;3;0;false;false;;;;;; -225300;14;0;false;false;0;0;0;;; -225314;3;0;false;false;;;;;; -225317;10;0;false;false;0;0;0;;; -225327;1;0;false;false;;;;;; -225328;1;0;false;false;0;0;0;;; -225329;1;0;false;false;;;;;; -225330;6;0;false;false;0;0;0;;; -225336;3;0;false;false;;;;;; -225339;5;1;false;false;127;0;85;;; -225344;32;0;false;false;0;0;0;;; -225376;3;0;false;false;;;;;; -225379;9;0;false;false;0;0;0;;; -225388;2;0;false;false;;;;;; -225390;1;0;false;false;0;0;0;;; -225391;2;0;false;false;;;;;; -225393;3;0;false;false;63;95;191;;; -225396;3;0;false;false;;;;;; -225399;1;0;false;false;63;95;191;;; -225400;1;0;false;false;;;;;; -225401;4;0;false;false;63;95;191;;; -225405;1;0;false;false;;;;;; -225406;3;0;false;false;63;95;191;;; -225409;1;0;false;false;;;;;; -225410;4;0;false;false;63;95;191;;; -225414;1;0;false;false;;;;;; -225415;8;0;false;false;63;95;191;;; -225423;1;0;false;false;;;;;; -225424;5;0;false;false;63;95;191;;; -225429;2;0;false;false;;;;;; -225431;4;0;false;false;63;95;191;;; -225435;1;0;false;false;;;;;; -225436;4;0;false;false;63;95;191;;; -225440;1;0;false;false;;;;;; -225441;3;0;false;false;63;95;191;;; -225444;1;0;false;false;;;;;; -225445;4;0;false;false;63;95;191;;; -225449;1;0;false;false;;;;;; -225450;4;0;false;false;63;95;191;;; -225454;1;0;false;false;;;;;; -225455;7;0;false;false;63;95;191;;; -225462;3;0;false;false;;;;;; -225465;1;0;false;false;63;95;191;;; -225466;1;0;false;false;;;;;; -225467;9;0;false;false;63;95;191;;; -225476;1;0;false;false;;;;;; -225477;2;0;false;false;63;95;191;;; -225479;1;0;false;false;;;;;; -225480;7;0;false;false;63;95;191;;; -225487;1;0;false;false;;;;;; -225488;2;0;false;false;63;95;191;;; -225490;1;0;false;false;;;;;; -225491;8;0;false;false;63;95;191;;; -225499;1;0;false;false;;;;;; -225500;2;0;false;false;63;95;191;;; -225502;1;0;false;false;;;;;; -225503;4;0;false;false;63;95;191;;; -225507;1;0;false;false;;;;;; -225508;4;0;false;false;63;95;191;;; -225512;1;0;false;false;;;;;; -225513;3;0;false;false;63;95;191;;; -225516;1;0;false;false;;;;;; -225517;3;0;false;false;63;95;191;;; -225520;1;0;false;false;;;;;; -225521;4;0;false;false;63;95;191;;; -225525;3;0;false;false;;;;;; -225528;1;0;false;false;63;95;191;;; -225529;1;0;false;false;;;;;; -225530;6;0;false;false;63;95;191;;; -225536;3;0;false;false;;;;;; -225539;1;0;false;false;63;95;191;;; -225540;3;0;false;false;;;;;; -225543;1;0;false;false;63;95;191;;; -225544;1;0;false;false;;;;;; -225545;7;1;false;false;127;159;191;;; -225552;4;0;false;false;63;95;191;;; -225556;1;0;false;false;;;;;; -225557;3;0;false;false;63;95;191;;; -225560;1;0;false;false;;;;;; -225561;3;0;false;false;63;95;191;;; -225564;1;0;false;false;;;;;; -225565;8;0;false;false;63;95;191;;; -225573;1;0;false;false;;;;;; -225574;4;0;false;false;63;95;191;;; -225578;3;0;false;false;;;;;; -225581;1;0;false;false;63;95;191;;; -225582;1;0;false;false;;;;;; -225583;11;1;false;false;127;159;191;;; -225594;12;0;false;false;63;95;191;;; -225606;1;0;false;false;;;;;; -225607;4;0;false;false;127;127;159;;; -225611;3;0;false;false;;;;;; -225614;1;0;false;false;63;95;191;;; -225615;4;0;false;false;;;;;; -225619;4;0;false;false;127;127;159;;; -225623;21;0;false;false;63;95;191;;; -225644;1;0;false;false;;;;;; -225645;1;0;false;false;127;127;159;;; -225646;1;0;false;false;;;;;; -225647;2;0;false;false;63;95;191;;; -225649;1;0;false;false;;;;;; -225650;3;0;false;false;63;95;191;;; -225653;1;0;false;false;;;;;; -225654;8;0;false;false;63;95;191;;; -225662;1;0;false;false;;;;;; -225663;3;0;false;false;63;95;191;;; -225666;1;0;false;false;;;;;; -225667;4;0;false;false;63;95;191;;; -225671;1;0;false;false;;;;;; -225672;8;0;false;false;63;95;191;;; -225680;5;0;false;false;127;127;159;;; -225685;3;0;false;false;;;;;; -225688;1;0;false;false;63;95;191;;; -225689;4;0;false;false;;;;;; -225693;4;0;false;false;127;127;159;;; -225697;27;0;false;false;63;95;191;;; -225724;1;0;false;false;;;;;; -225725;1;0;false;false;127;127;159;;; -225726;1;0;false;false;;;;;; -225727;2;0;false;false;63;95;191;;; -225729;1;0;false;false;;;;;; -225730;3;0;false;false;63;95;191;;; -225733;1;0;false;false;;;;;; -225734;6;0;false;false;63;95;191;;; -225740;1;0;false;false;;;;;; -225741;4;0;false;false;63;95;191;;; -225745;1;0;false;false;;;;;; -225746;3;0;false;false;63;95;191;;; -225749;1;0;false;false;;;;;; -225750;6;0;false;false;63;95;191;;; -225756;1;0;false;false;;;;;; -225757;4;0;false;false;63;95;191;;; -225761;1;0;false;false;;;;;; -225762;7;0;false;false;63;95;191;;; -225769;1;0;false;false;;;;;; -225770;3;0;false;false;63;95;191;;; -225773;1;0;false;false;;;;;; -225774;8;0;false;false;63;95;191;;; -225782;5;0;false;false;127;127;159;;; -225787;3;0;false;false;;;;;; -225790;1;0;false;false;63;95;191;;; -225791;1;0;false;false;;;;;; -225792;5;0;false;false;127;127;159;;; -225797;3;0;false;false;;;;;; -225800;1;0;false;false;63;95;191;;; -225801;1;0;false;false;;;;;; -225802;3;0;false;false;127;127;159;;; -225805;3;0;false;false;;;;;; -225808;1;0;false;false;63;95;191;;; -225809;1;0;false;false;;;;;; -225810;12;1;false;false;127;159;191;;; -225822;3;0;false;false;63;95;191;;; -225825;1;0;false;false;;;;;; -225826;19;0;false;false;63;95;191;;; -225845;1;0;false;false;;;;;; -225846;8;0;false;false;63;95;191;;; -225854;3;0;false;false;;;;;; -225857;1;0;false;false;63;95;191;;; -225858;1;0;false;false;;;;;; -225859;4;0;false;false;127;127;159;;; -225863;3;0;false;false;;;;;; -225866;2;0;false;false;63;95;191;;; -225868;2;0;false;false;;;;;; -225870;6;1;false;false;127;0;85;;; -225876;1;0;false;false;;;;;; -225877;4;1;false;false;127;0;85;;; -225881;1;0;false;false;;;;;; -225882;16;0;false;false;0;0;0;;; -225898;7;1;false;false;127;0;85;;; -225905;1;0;false;false;;;;;; -225906;5;0;false;false;0;0;0;;; -225911;1;0;false;false;;;;;; -225912;1;0;false;false;0;0;0;;; -225913;3;0;false;false;;;;;; -225916;14;0;false;false;0;0;0;;; -225930;3;0;false;false;;;;;; -225933;12;0;false;false;0;0;0;;; -225945;1;0;false;false;;;;;; -225946;1;0;false;false;0;0;0;;; -225947;1;0;false;false;;;;;; -225948;5;0;false;false;0;0;0;;; -225953;2;0;false;false;;;;;; -225955;1;0;false;false;0;0;0;;; -225956;2;0;false;false;;;;;; -225958;4;1;false;false;127;0;85;;; -225962;1;0;false;false;;;;;; -225963;17;0;false;false;0;0;0;;; -225980;3;1;false;false;127;0;85;;; -225983;1;0;false;false;;;;;; -225984;10;0;false;false;0;0;0;;; -225994;1;0;false;false;;;;;; -225995;3;1;false;false;127;0;85;;; -225998;1;0;false;false;;;;;; -225999;5;0;false;false;0;0;0;;; -226004;1;0;false;false;;;;;; -226005;3;1;false;false;127;0;85;;; -226008;1;0;false;false;;;;;; -226009;10;0;false;false;0;0;0;;; -226019;1;0;false;false;;;;;; -226020;1;0;false;false;0;0;0;;; -226021;3;0;false;false;;;;;; -226024;5;0;false;false;0;0;0;;; -226029;1;0;false;false;;;;;; -226030;5;0;false;false;0;0;0;;; -226035;1;0;false;false;;;;;; -226036;1;0;false;false;0;0;0;;; -226037;1;0;false;false;;;;;; -226038;11;0;false;false;0;0;0;;; -226049;3;0;false;false;;;;;; -226052;2;1;false;false;127;0;85;;; -226054;1;0;false;false;;;;;; -226055;6;0;false;false;0;0;0;;; -226061;1;0;false;false;;;;;; -226062;2;0;false;false;0;0;0;;; -226064;1;0;false;false;;;;;; -226065;4;1;false;false;127;0;85;;; -226069;1;0;false;false;0;0;0;;; -226070;1;0;false;false;;;;;; -226071;1;0;false;false;0;0;0;;; -226072;4;0;false;false;;;;;; -226076;7;1;false;false;127;0;85;;; -226083;1;0;false;false;;;;;; -226084;11;0;false;false;0;0;0;;; -226095;1;0;false;false;;;;;; -226096;1;0;false;false;0;0;0;;; -226097;1;0;false;false;;;;;; -226098;5;0;false;false;0;0;0;;; -226103;1;0;false;false;;;;;; -226104;2;0;false;false;0;0;0;;; -226106;1;0;false;false;;;;;; -226107;13;0;false;false;0;0;0;;; -226120;4;0;false;false;;;;;; -226124;3;1;false;false;127;0;85;;; -226127;1;0;false;false;;;;;; -226128;14;0;false;false;0;0;0;;; -226142;1;0;false;false;;;;;; -226143;1;0;false;false;0;0;0;;; -226144;1;0;false;false;;;;;; -226145;10;0;false;false;0;0;0;;; -226155;4;0;false;false;;;;;; -226159;2;1;false;false;127;0;85;;; -226161;1;0;false;false;;;;;; -226162;14;0;false;false;0;0;0;;; -226176;1;0;false;false;;;;;; -226177;1;0;false;false;0;0;0;;; -226178;5;0;false;false;;;;;; -226183;2;1;false;false;127;0;85;;; -226185;1;0;false;false;;;;;; -226186;15;0;false;false;0;0;0;;; -226201;1;0;false;false;;;;;; -226202;2;0;false;false;0;0;0;;; -226204;1;0;false;false;;;;;; -226205;9;0;false;false;0;0;0;;; -226214;1;0;false;false;;;;;; -226215;1;0;false;false;0;0;0;;; -226216;6;0;false;false;;;;;; -226222;14;0;false;false;0;0;0;;; -226236;1;0;false;false;;;;;; -226237;1;0;false;false;0;0;0;;; -226238;1;0;false;false;;;;;; -226239;10;0;false;false;0;0;0;;; -226249;5;0;false;false;;;;;; -226254;1;0;false;false;0;0;0;;; -226255;1;0;false;false;;;;;; -226256;4;1;false;false;127;0;85;;; -226260;1;0;false;false;;;;;; -226261;2;1;false;false;127;0;85;;; -226263;1;0;false;false;;;;;; -226264;15;0;false;false;0;0;0;;; -226279;1;0;false;false;;;;;; -226280;2;0;false;false;0;0;0;;; -226282;1;0;false;false;;;;;; -226283;10;0;false;false;0;0;0;;; -226293;1;0;false;false;;;;;; -226294;1;0;false;false;0;0;0;;; -226295;6;0;false;false;;;;;; -226301;14;0;false;false;0;0;0;;; -226315;1;0;false;false;;;;;; -226316;1;0;false;false;0;0;0;;; -226317;1;0;false;false;;;;;; -226318;9;0;false;false;0;0;0;;; -226327;5;0;false;false;;;;;; -226332;1;0;false;false;0;0;0;;; -226333;4;0;false;false;;;;;; -226337;1;0;false;false;0;0;0;;; -226338;4;0;false;false;;;;;; -226342;2;1;false;false;127;0;85;;; -226344;1;0;false;false;;;;;; -226345;12;0;false;false;0;0;0;;; -226357;1;0;false;false;;;;;; -226358;2;0;false;false;0;0;0;;; -226360;1;0;false;false;;;;;; -226361;14;0;false;false;0;0;0;;; -226375;1;0;false;false;;;;;; -226376;2;0;false;false;0;0;0;;; -226378;1;0;false;false;;;;;; -226379;10;0;false;false;0;0;0;;; -226389;1;0;false;false;;;;;; -226390;1;0;false;false;0;0;0;;; -226391;5;0;false;false;;;;;; -226396;9;0;false;false;0;0;0;;; -226405;1;0;false;false;;;;;; -226406;2;0;false;false;0;0;0;;; -226408;1;0;false;false;;;;;; -226409;18;0;false;false;0;0;0;;; -226427;1;0;false;false;;;;;; -226428;1;0;false;false;0;0;0;;; -226429;1;0;false;false;;;;;; -226430;3;0;false;false;0;0;0;;; -226433;4;0;false;false;;;;;; -226437;1;0;false;false;0;0;0;;; -226438;4;0;false;false;;;;;; -226442;3;1;false;false;127;0;85;;; -226445;1;0;false;false;;;;;; -226446;9;0;false;false;0;0;0;;; -226455;1;0;false;false;;;;;; -226456;1;0;false;false;0;0;0;;; -226457;1;0;false;false;;;;;; -226458;4;0;false;false;0;0;0;;; -226462;1;0;false;false;;;;;; -226463;1;0;false;false;0;0;0;;; -226464;1;0;false;false;;;;;; -226465;10;0;false;false;0;0;0;;; -226475;1;0;false;false;;;;;; -226476;1;0;false;false;0;0;0;;; -226477;1;0;false;false;;;;;; -226478;20;0;false;false;0;0;0;;; -226498;1;0;false;false;;;;;; -226499;1;0;false;false;0;0;0;;; -226500;1;0;false;false;;;;;; -226501;10;0;false;false;0;0;0;;; -226511;4;0;false;false;;;;;; -226515;28;0;false;false;0;0;0;;; -226543;1;0;false;false;;;;;; -226544;11;0;false;false;0;0;0;;; -226555;4;0;false;false;;;;;; -226559;49;0;false;false;0;0;0;;; -226608;4;0;false;false;;;;;; -226612;2;1;false;false;127;0;85;;; -226614;1;0;false;false;;;;;; -226615;10;0;false;false;0;0;0;;; -226625;1;0;false;false;;;;;; -226626;2;0;false;false;0;0;0;;; -226628;1;0;false;false;;;;;; -226629;15;0;false;false;0;0;0;;; -226644;1;0;false;false;;;;;; -226645;1;0;false;false;0;0;0;;; -226646;5;0;false;false;;;;;; -226651;14;0;false;false;0;0;0;;; -226665;1;0;false;false;;;;;; -226666;1;0;false;false;0;0;0;;; -226667;1;0;false;false;;;;;; -226668;10;0;false;false;0;0;0;;; -226678;5;0;false;false;;;;;; -226683;2;1;false;false;127;0;85;;; -226685;1;0;false;false;;;;;; -226686;13;0;false;false;0;0;0;;; -226699;1;0;false;false;;;;;; -226700;1;0;false;false;0;0;0;;; -226701;6;0;false;false;;;;;; -226707;2;1;false;false;127;0;85;;; -226709;1;0;false;false;;;;;; -226710;15;0;false;false;0;0;0;;; -226725;1;0;false;false;;;;;; -226726;2;0;false;false;0;0;0;;; -226728;1;0;false;false;;;;;; -226729;12;0;false;false;0;0;0;;; -226741;1;0;false;false;;;;;; -226742;1;0;false;false;0;0;0;;; -226743;7;0;false;false;;;;;; -226750;22;0;false;false;0;0;0;;; -226772;4;1;false;false;127;0;85;;; -226776;2;0;false;false;0;0;0;;; -226778;6;0;false;false;;;;;; -226784;1;0;false;false;0;0;0;;; -226785;1;0;false;false;;;;;; -226786;4;1;false;false;127;0;85;;; -226790;1;0;false;false;;;;;; -226791;2;1;false;false;127;0;85;;; -226793;1;0;false;false;;;;;; -226794;15;0;false;false;0;0;0;;; -226809;1;0;false;false;;;;;; -226810;2;0;false;false;0;0;0;;; -226812;1;0;false;false;;;;;; -226813;9;0;false;false;0;0;0;;; -226822;1;0;false;false;;;;;; -226823;1;0;false;false;0;0;0;;; -226824;7;0;false;false;;;;;; -226831;39;0;false;false;0;0;0;;; -226870;6;0;false;false;;;;;; -226876;1;0;false;false;0;0;0;;; -226877;1;0;false;false;;;;;; -226878;4;1;false;false;127;0;85;;; -226882;1;0;false;false;;;;;; -226883;2;1;false;false;127;0;85;;; -226885;1;0;false;false;;;;;; -226886;15;0;false;false;0;0;0;;; -226901;1;0;false;false;;;;;; -226902;2;0;false;false;0;0;0;;; -226904;1;0;false;false;;;;;; -226905;10;0;false;false;0;0;0;;; -226915;1;0;false;false;;;;;; -226916;1;0;false;false;0;0;0;;; -226917;7;0;false;false;;;;;; -226924;40;0;false;false;0;0;0;;; -226964;6;0;false;false;;;;;; -226970;1;0;false;false;0;0;0;;; -226971;5;0;false;false;;;;;; -226976;1;0;false;false;0;0;0;;; -226977;5;0;false;false;;;;;; -226982;32;0;false;false;0;0;0;;; -227014;1;0;false;false;;;;;; -227015;12;0;false;false;0;0;0;;; -227027;5;0;false;false;;;;;; -227032;2;1;false;false;127;0;85;;; -227034;1;0;false;false;;;;;; -227035;15;0;false;false;0;0;0;;; -227050;1;0;false;false;;;;;; -227051;2;0;false;false;0;0;0;;; -227053;1;0;false;false;;;;;; -227054;9;0;false;false;0;0;0;;; -227063;1;0;false;false;;;;;; -227064;1;0;false;false;0;0;0;;; -227065;6;0;false;false;;;;;; -227071;57;0;false;false;0;0;0;;; -227128;5;0;false;false;;;;;; -227133;1;0;false;false;0;0;0;;; -227134;1;0;false;false;;;;;; -227135;4;1;false;false;127;0;85;;; -227139;1;0;false;false;;;;;; -227140;2;1;false;false;127;0;85;;; -227142;1;0;false;false;;;;;; -227143;15;0;false;false;0;0;0;;; -227158;1;0;false;false;;;;;; -227159;2;0;false;false;0;0;0;;; -227161;1;0;false;false;;;;;; -227162;10;0;false;false;0;0;0;;; -227172;1;0;false;false;;;;;; -227173;1;0;false;false;0;0;0;;; -227174;6;0;false;false;;;;;; -227180;53;0;false;false;0;0;0;;; -227233;5;0;false;false;;;;;; -227238;1;0;false;false;0;0;0;;; -227239;4;0;false;false;;;;;; -227243;1;0;false;false;0;0;0;;; -227244;3;0;false;false;;;;;; -227247;1;0;false;false;0;0;0;;; -227248;3;0;false;false;;;;;; -227251;7;0;false;false;0;0;0;;; -227258;1;0;false;false;;;;;; -227259;1;0;false;false;0;0;0;;; -227260;1;0;false;false;;;;;; -227261;10;0;false;false;0;0;0;;; -227271;2;0;false;false;;;;;; -227273;1;0;false;false;0;0;0;;; -227274;2;0;false;false;;;;;; -227276;3;0;false;false;63;95;191;;; -227279;3;0;false;false;;;;;; -227282;1;0;false;false;63;95;191;;; -227283;1;0;false;false;;;;;; -227284;5;0;false;false;63;95;191;;; -227289;1;0;false;false;;;;;; -227290;3;0;false;false;63;95;191;;; -227293;1;0;false;false;;;;;; -227294;5;0;false;false;63;95;191;;; -227299;1;0;false;false;;;;;; -227300;2;0;false;false;63;95;191;;; -227302;1;0;false;false;;;;;; -227303;3;0;false;false;63;95;191;;; -227306;1;0;false;false;;;;;; -227307;7;0;false;false;63;95;191;;; -227314;1;0;false;false;;;;;; -227315;5;0;false;false;63;95;191;;; -227320;1;0;false;false;;;;;; -227321;7;0;false;false;63;95;191;;; -227328;3;0;false;false;;;;;; -227331;2;0;false;false;63;95;191;;; -227333;2;0;false;false;;;;;; -227335;4;1;false;false;127;0;85;;; -227339;1;0;false;false;;;;;; -227340;18;0;false;false;0;0;0;;; -227358;1;0;false;false;;;;;; -227359;1;0;false;false;0;0;0;;; -227360;3;0;false;false;;;;;; -227363;3;1;false;false;127;0;85;;; -227366;1;0;false;false;;;;;; -227367;9;0;false;false;0;0;0;;; -227376;1;0;false;false;;;;;; -227377;1;0;false;false;0;0;0;;; -227378;1;0;false;false;;;;;; -227379;15;0;false;false;0;0;0;;; -227394;3;0;false;false;;;;;; -227397;6;0;false;false;0;0;0;;; -227403;1;0;false;false;;;;;; -227404;4;0;false;false;0;0;0;;; -227408;1;0;false;false;;;;;; -227409;1;0;false;false;0;0;0;;; -227410;1;0;false;false;;;;;; -227411;27;0;false;false;0;0;0;;; -227438;3;0;false;false;;;;;; -227441;3;1;false;false;127;0;85;;; -227444;1;0;false;false;;;;;; -227445;10;0;false;false;0;0;0;;; -227455;1;0;false;false;;;;;; -227456;1;0;false;false;0;0;0;;; -227457;1;0;false;false;;;;;; -227458;35;0;false;false;0;0;0;;; -227493;3;0;false;false;;;;;; -227496;3;1;false;false;127;0;85;;; -227499;1;0;false;false;;;;;; -227500;12;0;false;false;0;0;0;;; -227512;1;0;false;false;;;;;; -227513;1;0;false;false;0;0;0;;; -227514;1;0;false;false;;;;;; -227515;11;0;false;false;0;0;0;;; -227526;1;0;false;false;;;;;; -227527;1;0;false;false;0;0;0;;; -227528;1;0;false;false;;;;;; -227529;11;0;false;false;0;0;0;;; -227540;3;0;false;false;;;;;; -227543;3;1;false;false;127;0;85;;; -227546;1;0;false;false;;;;;; -227547;9;0;false;false;0;0;0;;; -227556;1;0;false;false;;;;;; -227557;1;0;false;false;0;0;0;;; -227558;1;0;false;false;;;;;; -227559;18;0;false;false;0;0;0;;; -227577;1;0;false;false;;;;;; -227578;10;0;false;false;0;0;0;;; -227588;1;0;false;false;;;;;; -227589;14;0;false;false;0;0;0;;; -227603;3;0;false;false;;;;;; -227606;27;0;false;false;0;0;0;;; -227633;1;0;false;false;;;;;; -227634;10;0;false;false;0;0;0;;; -227644;1;0;false;false;;;;;; -227645;21;0;false;false;0;0;0;;; -227666;2;0;false;false;;;;;; -227668;1;0;false;false;0;0;0;;; -227669;2;0;false;false;;;;;; -227671;3;0;false;false;63;95;191;;; -227674;3;0;false;false;;;;;; -227677;1;0;false;false;63;95;191;;; -227678;1;0;false;false;;;;;; -227679;4;0;false;false;63;95;191;;; -227683;1;0;false;false;;;;;; -227684;3;0;false;false;63;95;191;;; -227687;1;0;false;false;;;;;; -227688;5;0;false;false;63;95;191;;; -227693;1;0;false;false;;;;;; -227694;7;0;false;false;63;95;191;;; -227701;3;0;false;false;;;;;; -227704;1;0;false;false;63;95;191;;; -227705;3;0;false;false;;;;;; -227708;1;0;false;false;63;95;191;;; -227709;1;0;false;false;;;;;; -227710;7;1;false;false;127;159;191;;; -227717;6;0;false;false;63;95;191;;; -227723;1;0;false;false;;;;;; -227724;5;0;false;false;63;95;191;;; -227729;1;0;false;false;;;;;; -227730;7;0;false;false;63;95;191;;; -227737;1;0;false;false;;;;;; -227738;8;0;false;false;63;95;191;;; -227746;1;0;false;false;;;;;; -227747;2;0;false;false;63;95;191;;; -227749;1;0;false;false;;;;;; -227750;3;0;false;false;63;95;191;;; -227753;1;0;false;false;;;;;; -227754;5;0;false;false;63;95;191;;; -227759;1;0;false;false;;;;;; -227760;9;0;false;false;63;95;191;;; -227769;1;0;false;false;;;;;; -227770;2;0;false;false;63;95;191;;; -227772;1;0;false;false;;;;;; -227773;3;0;false;false;63;95;191;;; -227776;1;0;false;false;;;;;; -227777;5;0;false;false;63;95;191;;; -227782;3;0;false;false;;;;;; -227785;1;0;false;false;63;95;191;;; -227786;1;0;false;false;;;;;; -227787;11;1;false;false;127;159;191;;; -227798;12;0;false;false;63;95;191;;; -227810;1;0;false;false;;;;;; -227811;4;0;false;false;127;127;159;;; -227815;3;0;false;false;;;;;; -227818;1;0;false;false;63;95;191;;; -227819;4;0;false;false;;;;;; -227823;4;0;false;false;127;127;159;;; -227827;21;0;false;false;63;95;191;;; -227848;1;0;false;false;;;;;; -227849;1;0;false;false;127;127;159;;; -227850;1;0;false;false;;;;;; -227851;2;0;false;false;63;95;191;;; -227853;1;0;false;false;;;;;; -227854;3;0;false;false;63;95;191;;; -227857;1;0;false;false;;;;;; -227858;8;0;false;false;63;95;191;;; -227866;1;0;false;false;;;;;; -227867;3;0;false;false;63;95;191;;; -227870;1;0;false;false;;;;;; -227871;4;0;false;false;63;95;191;;; -227875;1;0;false;false;;;;;; -227876;8;0;false;false;63;95;191;;; -227884;5;0;false;false;127;127;159;;; -227889;3;0;false;false;;;;;; -227892;1;0;false;false;63;95;191;;; -227893;4;0;false;false;;;;;; -227897;4;0;false;false;127;127;159;;; -227901;27;0;false;false;63;95;191;;; -227928;1;0;false;false;;;;;; -227929;1;0;false;false;127;127;159;;; -227930;1;0;false;false;;;;;; -227931;2;0;false;false;63;95;191;;; -227933;1;0;false;false;;;;;; -227934;3;0;false;false;63;95;191;;; -227937;1;0;false;false;;;;;; -227938;6;0;false;false;63;95;191;;; -227944;1;0;false;false;;;;;; -227945;4;0;false;false;63;95;191;;; -227949;1;0;false;false;;;;;; -227950;3;0;false;false;63;95;191;;; -227953;1;0;false;false;;;;;; -227954;6;0;false;false;63;95;191;;; -227960;1;0;false;false;;;;;; -227961;4;0;false;false;63;95;191;;; -227965;1;0;false;false;;;;;; -227966;7;0;false;false;63;95;191;;; -227973;1;0;false;false;;;;;; -227974;3;0;false;false;63;95;191;;; -227977;1;0;false;false;;;;;; -227978;8;0;false;false;63;95;191;;; -227986;5;0;false;false;127;127;159;;; -227991;3;0;false;false;;;;;; -227994;1;0;false;false;63;95;191;;; -227995;1;0;false;false;;;;;; -227996;5;0;false;false;127;127;159;;; -228001;3;0;false;false;;;;;; -228004;1;0;false;false;63;95;191;;; -228005;1;0;false;false;;;;;; -228006;11;1;false;false;127;159;191;;; -228017;24;0;false;false;63;95;191;;; -228041;1;0;false;false;;;;;; -228042;4;0;false;false;127;127;159;;; -228046;3;0;false;false;;;;;; -228049;1;0;false;false;63;95;191;;; -228050;3;0;false;false;;;;;; -228053;4;0;false;false;127;127;159;;; -228057;22;0;false;false;63;95;191;;; -228079;1;0;false;false;;;;;; -228080;4;0;false;false;63;95;191;;; -228084;1;0;false;false;;;;;; -228085;6;0;false;false;63;95;191;;; -228091;1;0;false;false;;;;;; -228092;3;0;false;false;63;95;191;;; -228095;1;0;false;false;;;;;; -228096;5;0;false;false;63;95;191;;; -228101;1;0;false;false;;;;;; -228102;2;0;false;false;63;95;191;;; -228104;1;0;false;false;;;;;; -228105;3;0;false;false;63;95;191;;; -228108;1;0;false;false;;;;;; -228109;3;0;false;false;63;95;191;;; -228112;1;0;false;false;;;;;; -228113;2;0;false;false;63;95;191;;; -228115;1;0;false;false;;;;;; -228116;3;0;false;false;63;95;191;;; -228119;1;0;false;false;;;;;; -228120;9;0;false;false;63;95;191;;; -228129;1;0;false;false;;;;;; -228130;5;0;false;false;63;95;191;;; -228135;1;0;false;false;;;;;; -228136;2;0;false;false;63;95;191;;; -228138;1;0;false;false;;;;;; -228139;6;0;false;false;63;95;191;;; -228145;1;0;false;false;;;;;; -228146;1;0;false;false;63;95;191;;; -228147;4;0;false;false;;;;;; -228151;1;0;false;false;63;95;191;;; -228152;1;0;false;false;;;;;; -228153;5;0;false;false;63;95;191;;; -228158;1;0;false;false;;;;;; -228159;4;0;false;false;63;95;191;;; -228163;1;0;false;false;;;;;; -228164;4;0;false;false;63;95;191;;; -228168;1;0;false;false;;;;;; -228169;9;0;false;false;63;95;191;;; -228178;1;0;false;false;;;;;; -228179;4;0;false;false;63;95;191;;; -228183;1;0;false;false;;;;;; -228184;4;0;false;false;63;95;191;;; -228188;1;0;false;false;;;;;; -228189;7;0;false;false;63;95;191;;; -228196;1;0;false;false;;;;;; -228197;7;0;false;false;63;95;191;;; -228204;1;0;false;false;;;;;; -228205;2;0;false;false;63;95;191;;; -228207;1;0;false;false;;;;;; -228208;5;0;false;false;63;95;191;;; -228213;1;0;false;false;;;;;; -228214;2;0;false;false;63;95;191;;; -228216;1;0;false;false;;;;;; -228217;2;0;false;false;63;95;191;;; -228219;1;0;false;false;;;;;; -228220;5;0;false;false;63;95;191;;; -228225;1;0;false;false;;;;;; -228226;3;0;false;false;63;95;191;;; -228229;1;0;false;false;;;;;; -228230;4;0;false;false;63;95;191;;; -228234;1;0;false;false;;;;;; -228235;10;0;false;false;63;95;191;;; -228245;3;0;false;false;;;;;; -228248;1;0;false;false;63;95;191;;; -228249;1;0;false;false;;;;;; -228250;5;0;false;false;127;127;159;;; -228255;3;0;false;false;;;;;; -228258;2;0;false;false;63;95;191;;; -228260;2;0;false;false;;;;;; -228262;6;1;false;false;127;0;85;;; -228268;1;0;false;false;;;;;; -228269;4;1;false;false;127;0;85;;; -228273;1;0;false;false;;;;;; -228274;15;0;false;false;0;0;0;;; -228289;3;1;false;false;127;0;85;;; -228292;1;0;false;false;;;;;; -228293;7;0;false;false;0;0;0;;; -228300;1;0;false;false;;;;;; -228301;1;0;false;false;0;0;0;;; -228302;3;0;false;false;;;;;; -228305;14;0;false;false;0;0;0;;; -228319;3;0;false;false;;;;;; -228322;3;1;false;false;127;0;85;;; -228325;1;0;false;false;;;;;; -228326;6;0;false;false;0;0;0;;; -228332;1;0;false;false;;;;;; -228333;1;0;false;false;0;0;0;;; -228334;1;0;false;false;;;;;; -228335;15;0;false;false;0;0;0;;; -228350;9;0;false;false;;;;;; -228359;2;1;false;false;127;0;85;;; -228361;1;0;false;false;;;;;; -228362;7;0;false;false;0;0;0;;; -228369;1;0;false;false;;;;;; -228370;1;0;false;false;0;0;0;;; -228371;1;0;false;false;;;;;; -228372;1;0;false;false;0;0;0;;; -228373;1;0;false;false;;;;;; -228374;2;0;false;false;0;0;0;;; -228376;1;0;false;false;;;;;; -228377;6;0;false;false;0;0;0;;; -228383;1;0;false;false;;;;;; -228384;2;0;false;false;0;0;0;;; -228386;1;0;false;false;;;;;; -228387;12;0;false;false;0;0;0;;; -228399;1;0;false;false;;;;;; -228400;1;0;false;false;0;0;0;;; -228401;4;0;false;false;;;;;; -228405;2;1;false;false;127;0;85;;; -228407;1;0;false;false;;;;;; -228408;7;0;false;false;0;0;0;;; -228415;1;0;false;false;;;;;; -228416;1;0;false;false;0;0;0;;; -228417;1;0;false;false;;;;;; -228418;2;0;false;false;0;0;0;;; -228420;1;0;false;false;;;;;; -228421;1;0;false;false;0;0;0;;; -228422;5;0;false;false;;;;;; -228427;11;0;false;false;0;0;0;;; -228438;1;0;false;false;;;;;; -228439;1;0;false;false;0;0;0;;; -228440;1;0;false;false;;;;;; -228441;2;0;false;false;0;0;0;;; -228443;4;0;false;false;;;;;; -228447;1;0;false;false;0;0;0;;; -228448;4;0;false;false;;;;;; -228452;4;1;false;false;127;0;85;;; -228456;4;0;false;false;;;;;; -228460;2;1;false;false;127;0;85;;; -228462;1;0;false;false;;;;;; -228463;7;0;false;false;0;0;0;;; -228470;1;0;false;false;;;;;; -228471;1;0;false;false;0;0;0;;; -228472;1;0;false;false;;;;;; -228473;7;0;false;false;0;0;0;;; -228480;1;0;false;false;;;;;; -228481;1;0;false;false;0;0;0;;; -228482;5;0;false;false;;;;;; -228487;11;0;false;false;0;0;0;;; -228498;1;0;false;false;;;;;; -228499;1;0;false;false;0;0;0;;; -228500;1;0;false;false;;;;;; -228501;7;0;false;false;0;0;0;;; -228508;4;0;false;false;;;;;; -228512;1;0;false;false;0;0;0;;; -228513;4;0;false;false;;;;;; -228517;4;1;false;false;127;0;85;;; -228521;1;0;false;false;;;;;; -228522;1;0;false;false;0;0;0;;; -228523;5;0;false;false;;;;;; -228528;2;1;false;false;127;0;85;;; -228530;1;0;false;false;;;;;; -228531;25;0;false;false;0;0;0;;; -228556;1;0;false;false;;;;;; -228557;1;0;false;false;0;0;0;;; -228558;6;0;false;false;;;;;; -228564;62;0;false;false;63;127;95;;; -228626;4;0;false;false;;;;;; -228630;64;0;false;false;63;127;95;;; -228694;4;0;false;false;;;;;; -228698;38;0;false;false;0;0;0;;; -228736;5;0;false;false;;;;;; -228741;1;0;false;false;0;0;0;;; -228742;5;0;false;false;;;;;; -228747;11;0;false;false;0;0;0;;; -228758;1;0;false;false;;;;;; -228759;1;0;false;false;0;0;0;;; -228760;1;0;false;false;;;;;; -228761;7;0;false;false;0;0;0;;; -228768;4;0;false;false;;;;;; -228772;1;0;false;false;0;0;0;;; -228773;4;0;false;false;;;;;; -228777;47;0;false;false;63;127;95;;; -228824;2;0;false;false;;;;;; -228826;55;0;false;false;63;127;95;;; -228881;2;0;false;false;;;;;; -228883;15;0;false;false;0;0;0;;; -228898;5;1;false;false;127;0;85;;; -228903;2;0;false;false;0;0;0;;; -228905;3;0;false;false;;;;;; -228908;1;0;false;false;0;0;0;;; -228909;3;0;false;false;;;;;; -228912;52;0;false;false;63;127;95;;; -228964;1;0;false;false;;;;;; -228965;19;0;false;false;0;0;0;;; -228984;2;0;false;false;;;;;; -228986;1;0;false;false;0;0;0;;; -228987;3;0;false;false;;;;;; -228990;3;0;false;false;63;95;191;;; -228993;3;0;false;false;;;;;; -228996;1;0;false;false;63;95;191;;; -228997;1;0;false;false;;;;;; -228998;6;0;false;false;63;95;191;;; -229004;1;0;false;false;;;;;; -229005;3;0;false;false;63;95;191;;; -229008;1;0;false;false;;;;;; -229009;9;0;false;false;63;95;191;;; -229018;1;0;false;false;;;;;; -229019;4;0;false;false;63;95;191;;; -229023;1;0;false;false;;;;;; -229024;5;0;false;false;63;95;191;;; -229029;1;0;false;false;;;;;; -229030;2;0;false;false;63;95;191;;; -229032;1;0;false;false;;;;;; -229033;3;0;false;false;63;95;191;;; -229036;1;0;false;false;;;;;; -229037;10;0;false;false;63;95;191;;; -229047;2;0;false;false;;;;;; -229049;3;0;false;false;63;95;191;;; -229052;1;0;false;false;;;;;; -229053;4;0;false;false;63;95;191;;; -229057;1;0;false;false;;;;;; -229058;4;0;false;false;63;95;191;;; -229062;1;0;false;false;;;;;; -229063;2;0;false;false;63;95;191;;; -229065;1;0;false;false;;;;;; -229066;6;0;false;false;63;95;191;;; -229072;3;0;false;false;;;;;; -229075;1;0;false;false;63;95;191;;; -229076;1;0;false;false;;;;;; -229077;2;0;false;false;63;95;191;;; -229079;1;0;false;false;;;;;; -229080;3;0;false;false;63;95;191;;; -229083;1;0;false;false;;;;;; -229084;9;0;false;false;63;95;191;;; -229093;1;0;false;false;;;;;; -229094;2;0;false;false;63;95;191;;; -229096;1;0;false;false;;;;;; -229097;5;0;false;false;63;95;191;;; -229102;1;0;false;false;;;;;; -229103;4;0;false;false;63;95;191;;; -229107;1;0;false;false;;;;;; -229108;6;0;false;false;63;95;191;;; -229114;1;0;false;false;;;;;; -229115;3;0;false;false;63;95;191;;; -229118;1;0;false;false;;;;;; -229119;3;0;false;false;63;95;191;;; -229122;1;0;false;false;;;;;; -229123;7;0;false;false;63;95;191;;; -229130;3;0;false;false;;;;;; -229133;1;0;false;false;63;95;191;;; -229134;1;0;false;false;;;;;; -229135;3;0;false;false;127;127;159;;; -229138;3;0;false;false;;;;;; -229141;1;0;false;false;63;95;191;;; -229142;3;0;false;false;;;;;; -229145;1;0;false;false;63;95;191;;; -229146;1;0;false;false;;;;;; -229147;7;1;false;false;127;159;191;;; -229154;5;0;false;false;63;95;191;;; -229159;1;0;false;false;;;;;; -229160;5;0;false;false;63;95;191;;; -229165;1;0;false;false;;;;;; -229166;5;0;false;false;63;95;191;;; -229171;1;0;false;false;;;;;; -229172;2;0;false;false;63;95;191;;; -229174;1;0;false;false;;;;;; -229175;3;0;false;false;63;95;191;;; -229178;1;0;false;false;;;;;; -229179;4;0;false;false;63;95;191;;; -229183;3;0;false;false;;;;;; -229186;1;0;false;false;63;95;191;;; -229187;1;0;false;false;;;;;; -229188;7;1;false;false;127;159;191;;; -229195;6;0;false;false;63;95;191;;; -229201;1;0;false;false;;;;;; -229202;6;0;false;false;63;95;191;;; -229208;1;0;false;false;;;;;; -229209;2;0;false;false;63;95;191;;; -229211;1;0;false;false;;;;;; -229212;4;0;false;false;63;95;191;;; -229216;1;0;false;false;;;;;; -229217;2;0;false;false;63;95;191;;; -229219;1;0;false;false;;;;;; -229220;5;0;false;false;63;95;191;;; -229225;1;0;false;false;;;;;; -229226;2;0;false;false;63;95;191;;; -229228;1;0;false;false;;;;;; -229229;9;0;false;false;63;95;191;;; -229238;3;0;false;false;;;;;; -229241;1;0;false;false;63;95;191;;; -229242;4;0;false;false;;;;;; -229246;1;0;false;false;63;95;191;;; -229247;1;0;false;false;;;;;; -229248;11;1;false;false;127;159;191;;; -229259;9;0;false;false;63;95;191;;; -229268;1;0;false;false;;;;;; -229269;3;0;false;false;63;95;191;;; -229272;1;0;false;false;;;;;; -229273;21;0;false;false;63;95;191;;; -229294;3;0;false;false;;;;;; -229297;1;0;false;false;63;95;191;;; -229298;1;0;false;false;;;;;; -229299;5;1;false;false;127;159;191;;; -229304;41;0;false;false;63;95;191;;; -229345;3;0;false;false;;;;;; -229348;2;0;false;false;63;95;191;;; -229350;2;0;false;false;;;;;; -229352;4;1;false;false;127;0;85;;; -229356;1;0;false;false;;;;;; -229357;20;0;false;false;0;0;0;;; -229377;3;1;false;false;127;0;85;;; -229380;1;0;false;false;;;;;; -229381;6;0;false;false;0;0;0;;; -229387;1;0;false;false;;;;;; -229388;3;1;false;false;127;0;85;;; -229391;1;0;false;false;;;;;; -229392;7;0;false;false;0;0;0;;; -229399;1;0;false;false;;;;;; -229400;3;1;false;false;127;0;85;;; -229403;1;0;false;false;;;;;; -229404;14;0;false;false;0;0;0;;; -229418;1;0;false;false;;;;;; -229419;6;1;false;false;127;0;85;;; -229425;1;0;false;false;;;;;; -229426;8;0;false;false;0;0;0;;; -229434;1;0;false;false;;;;;; -229435;1;0;false;false;0;0;0;;; -229436;3;0;false;false;;;;;; -229439;2;1;false;false;127;0;85;;; -229441;1;0;false;false;;;;;; -229442;14;0;false;false;0;0;0;;; -229456;1;0;false;false;;;;;; -229457;2;0;false;false;0;0;0;;; -229459;1;0;false;false;;;;;; -229460;23;0;false;false;0;0;0;;; -229483;1;0;false;false;;;;;; -229484;2;0;false;false;0;0;0;;; -229486;1;0;false;false;;;;;; -229487;10;0;false;false;0;0;0;;; -229497;1;0;false;false;;;;;; -229498;2;0;false;false;0;0;0;;; -229500;1;0;false;false;;;;;; -229501;8;0;false;false;0;0;0;;; -229509;1;0;false;false;;;;;; -229510;6;1;false;false;127;0;85;;; -229516;1;0;false;false;0;0;0;;; -229517;3;0;false;false;;;;;; -229520;12;0;false;false;0;0;0;;; -229532;1;0;false;false;;;;;; -229533;17;0;false;false;0;0;0;;; -229550;1;0;false;false;;;;;; -229551;1;0;false;false;0;0;0;;; -229552;1;0;false;false;;;;;; -229553;27;0;false;false;0;0;0;;; -229580;3;0;false;false;;;;;; -229583;10;0;false;false;0;0;0;;; -229593;1;0;false;false;;;;;; -229594;15;0;false;false;0;0;0;;; -229609;1;0;false;false;;;;;; -229610;1;0;false;false;0;0;0;;; -229611;1;0;false;false;;;;;; -229612;3;1;false;false;127;0;85;;; -229615;1;0;false;false;;;;;; -229616;17;0;false;false;0;0;0;;; -229633;1;0;false;false;;;;;; -229634;8;0;false;false;0;0;0;;; -229642;3;0;false;false;;;;;; -229645;6;0;false;false;0;0;0;;; -229651;1;0;false;false;;;;;; -229652;9;0;false;false;0;0;0;;; -229661;1;0;false;false;;;;;; -229662;1;0;false;false;0;0;0;;; -229663;1;0;false;false;;;;;; -229664;42;0;false;false;0;0;0;;; -229706;3;0;false;false;;;;;; -229709;8;0;false;false;0;0;0;;; -229717;1;0;false;false;;;;;; -229718;5;0;false;false;0;0;0;;; -229723;3;0;false;false;;;;;; -229726;10;0;false;false;0;0;0;;; -229736;1;0;false;false;;;;;; -229737;6;0;false;false;0;0;0;;; -229743;3;0;false;false;;;;;; -229746;2;1;false;false;127;0;85;;; -229748;1;0;false;false;;;;;; -229749;14;0;false;false;0;0;0;;; -229763;1;0;false;false;;;;;; -229764;2;0;false;false;0;0;0;;; -229766;1;0;false;false;;;;;; -229767;24;0;false;false;0;0;0;;; -229791;1;0;false;false;;;;;; -229792;1;0;false;false;0;0;0;;; -229793;4;0;false;false;;;;;; -229797;4;0;false;false;0;0;0;;; -229801;1;0;false;false;;;;;; -229802;1;0;false;false;0;0;0;;; -229803;1;0;false;false;;;;;; -229804;3;1;false;false;127;0;85;;; -229807;1;0;false;false;;;;;; -229808;20;0;false;false;0;0;0;;; -229828;4;0;false;false;;;;;; -229832;5;0;false;false;0;0;0;;; -229837;1;0;false;false;;;;;; -229838;1;0;false;false;0;0;0;;; -229839;1;0;false;false;;;;;; -229840;3;1;false;false;127;0;85;;; -229843;1;0;false;false;;;;;; -229844;30;0;false;false;0;0;0;;; -229874;3;0;false;false;;;;;; -229877;1;0;false;false;0;0;0;;; -229878;1;0;false;false;;;;;; -229879;4;1;false;false;127;0;85;;; -229883;1;0;false;false;;;;;; -229884;1;0;false;false;0;0;0;;; -229885;4;0;false;false;;;;;; -229889;11;0;false;false;0;0;0;;; -229900;1;0;false;false;;;;;; -229901;11;0;false;false;0;0;0;;; -229912;1;0;false;false;;;;;; -229913;1;0;false;false;0;0;0;;; -229914;1;0;false;false;;;;;; -229915;26;0;false;false;0;0;0;;; -229941;4;0;false;false;;;;;; -229945;9;0;false;false;0;0;0;;; -229954;1;0;false;false;;;;;; -229955;9;0;false;false;0;0;0;;; -229964;1;0;false;false;;;;;; -229965;1;0;false;false;0;0;0;;; -229966;1;0;false;false;;;;;; -229967;3;1;false;false;127;0;85;;; -229970;1;0;false;false;;;;;; -229971;16;0;false;false;0;0;0;;; -229987;1;0;false;false;;;;;; -229988;8;0;false;false;0;0;0;;; -229996;4;0;false;false;;;;;; -230000;6;0;false;false;0;0;0;;; -230006;1;0;false;false;;;;;; -230007;7;0;false;false;0;0;0;;; -230014;1;0;false;false;;;;;; -230015;1;0;false;false;0;0;0;;; -230016;1;0;false;false;;;;;; -230017;36;0;false;false;0;0;0;;; -230053;4;0;false;false;;;;;; -230057;4;0;false;false;0;0;0;;; -230061;1;0;false;false;;;;;; -230062;1;0;false;false;0;0;0;;; -230063;1;0;false;false;;;;;; -230064;3;1;false;false;127;0;85;;; -230067;1;0;false;false;;;;;; -230068;17;0;false;false;0;0;0;;; -230085;1;0;false;false;;;;;; -230086;11;0;false;false;0;0;0;;; -230097;4;0;false;false;;;;;; -230101;5;0;false;false;0;0;0;;; -230106;1;0;false;false;;;;;; -230107;1;0;false;false;0;0;0;;; -230108;1;0;false;false;;;;;; -230109;3;1;false;false;127;0;85;;; -230112;1;0;false;false;;;;;; -230113;23;0;false;false;0;0;0;;; -230136;1;0;false;false;;;;;; -230137;19;0;false;false;0;0;0;;; -230156;3;0;false;false;;;;;; -230159;1;0;false;false;0;0;0;;; -230160;3;0;false;false;;;;;; -230163;27;0;false;false;0;0;0;;; -230190;1;0;false;false;;;;;; -230191;6;0;false;false;0;0;0;;; -230197;1;0;false;false;;;;;; -230198;15;0;false;false;0;0;0;;; -230213;2;0;false;false;;;;;; -230215;1;0;false;false;0;0;0;;; -230216;2;0;false;false;;;;;; -230218;3;0;false;false;63;95;191;;; -230221;3;0;false;false;;;;;; -230224;1;0;false;false;63;95;191;;; -230225;1;0;false;false;;;;;; -230226;4;0;false;false;63;95;191;;; -230230;1;0;false;false;;;;;; -230231;3;0;false;false;63;95;191;;; -230234;1;0;false;false;;;;;; -230235;7;0;false;false;63;95;191;;; -230242;1;0;false;false;;;;;; -230243;14;0;false;false;63;95;191;;; -230257;1;0;false;false;;;;;; -230258;2;0;false;false;63;95;191;;; -230260;1;0;false;false;;;;;; -230261;3;0;false;false;63;95;191;;; -230264;1;0;false;false;;;;;; -230265;3;0;false;false;63;95;191;;; -230268;1;0;false;false;;;;;; -230269;4;0;false;false;63;95;191;;; -230273;1;0;false;false;;;;;; -230274;8;0;false;false;63;95;191;;; -230282;3;0;false;false;;;;;; -230285;1;0;false;false;63;95;191;;; -230286;1;0;false;false;;;;;; -230287;3;0;false;false;127;127;159;;; -230290;3;0;false;false;;;;;; -230293;1;0;false;false;63;95;191;;; -230294;3;0;false;false;;;;;; -230297;1;0;false;false;63;95;191;;; -230298;1;0;false;false;;;;;; -230299;7;1;false;false;127;159;191;;; -230306;10;0;false;false;63;95;191;;; -230316;1;0;false;false;;;;;; -230317;17;0;false;false;63;95;191;;; -230334;1;0;false;false;;;;;; -230335;14;0;false;false;63;95;191;;; -230349;1;0;false;false;;;;;; -230350;2;0;false;false;63;95;191;;; -230352;1;0;false;false;;;;;; -230353;3;0;false;false;63;95;191;;; -230356;1;0;false;false;;;;;; -230357;3;0;false;false;63;95;191;;; -230360;1;0;false;false;;;;;; -230361;4;0;false;false;63;95;191;;; -230365;1;0;false;false;;;;;; -230366;8;0;false;false;63;95;191;;; -230374;3;0;false;false;;;;;; -230377;1;0;false;false;63;95;191;;; -230378;1;0;false;false;;;;;; -230379;11;1;false;false;127;159;191;;; -230390;12;0;false;false;63;95;191;;; -230402;1;0;false;false;;;;;; -230403;4;0;false;false;127;127;159;;; -230407;3;0;false;false;;;;;; -230410;1;0;false;false;63;95;191;;; -230411;4;0;false;false;;;;;; -230415;4;0;false;false;127;127;159;;; -230419;21;0;false;false;63;95;191;;; -230440;1;0;false;false;;;;;; -230441;1;0;false;false;127;127;159;;; -230442;1;0;false;false;;;;;; -230443;2;0;false;false;63;95;191;;; -230445;1;0;false;false;;;;;; -230446;3;0;false;false;63;95;191;;; -230449;1;0;false;false;;;;;; -230450;8;0;false;false;63;95;191;;; -230458;1;0;false;false;;;;;; -230459;3;0;false;false;63;95;191;;; -230462;1;0;false;false;;;;;; -230463;4;0;false;false;63;95;191;;; -230467;1;0;false;false;;;;;; -230468;8;0;false;false;63;95;191;;; -230476;5;0;false;false;127;127;159;;; -230481;3;0;false;false;;;;;; -230484;1;0;false;false;63;95;191;;; -230485;4;0;false;false;;;;;; -230489;4;0;false;false;127;127;159;;; -230493;27;0;false;false;63;95;191;;; -230520;1;0;false;false;;;;;; -230521;1;0;false;false;127;127;159;;; -230522;1;0;false;false;;;;;; -230523;2;0;false;false;63;95;191;;; -230525;1;0;false;false;;;;;; -230526;3;0;false;false;63;95;191;;; -230529;1;0;false;false;;;;;; -230530;6;0;false;false;63;95;191;;; -230536;1;0;false;false;;;;;; -230537;4;0;false;false;63;95;191;;; -230541;1;0;false;false;;;;;; -230542;3;0;false;false;63;95;191;;; -230545;1;0;false;false;;;;;; -230546;6;0;false;false;63;95;191;;; -230552;1;0;false;false;;;;;; -230553;4;0;false;false;63;95;191;;; -230557;1;0;false;false;;;;;; -230558;7;0;false;false;63;95;191;;; -230565;1;0;false;false;;;;;; -230566;3;0;false;false;63;95;191;;; -230569;1;0;false;false;;;;;; -230570;8;0;false;false;63;95;191;;; -230578;5;0;false;false;127;127;159;;; -230583;3;0;false;false;;;;;; -230586;1;0;false;false;63;95;191;;; -230587;1;0;false;false;;;;;; -230588;5;0;false;false;127;127;159;;; -230593;3;0;false;false;;;;;; -230596;1;0;false;false;63;95;191;;; -230597;1;0;false;false;;;;;; -230598;11;1;false;false;127;159;191;;; -230609;24;0;false;false;63;95;191;;; -230633;1;0;false;false;;;;;; -230634;4;0;false;false;127;127;159;;; -230638;3;0;false;false;;;;;; -230641;1;0;false;false;63;95;191;;; -230642;4;0;false;false;;;;;; -230646;4;0;false;false;127;127;159;;; -230650;19;0;false;false;63;95;191;;; -230669;1;0;false;false;;;;;; -230670;4;0;false;false;63;95;191;;; -230674;1;0;false;false;;;;;; -230675;8;0;false;false;63;95;191;;; -230683;1;0;false;false;;;;;; -230684;2;0;false;false;63;95;191;;; -230686;1;0;false;false;;;;;; -230687;4;0;false;false;63;95;191;;; -230691;5;0;false;false;127;127;159;;; -230696;3;0;false;false;;;;;; -230699;1;0;false;false;63;95;191;;; -230700;1;0;false;false;;;;;; -230701;5;0;false;false;127;127;159;;; -230706;3;0;false;false;;;;;; -230709;2;0;false;false;63;95;191;;; -230711;2;0;false;false;;;;;; -230713;6;1;false;false;127;0;85;;; -230719;1;0;false;false;;;;;; -230720;4;1;false;false;127;0;85;;; -230724;1;0;false;false;;;;;; -230725;28;0;false;false;0;0;0;;; -230753;1;0;false;false;;;;;; -230754;11;0;false;false;0;0;0;;; -230765;1;0;false;false;;;;;; -230766;1;0;false;false;0;0;0;;; -230767;3;0;false;false;;;;;; -230770;14;0;false;false;0;0;0;;; -230784;4;0;false;false;;;;;; -230788;2;1;false;false;127;0;85;;; -230790;1;0;false;false;;;;;; -230791;11;0;false;false;0;0;0;;; -230802;1;0;false;false;;;;;; -230803;2;0;false;false;0;0;0;;; -230805;1;0;false;false;;;;;; -230806;4;1;false;false;127;0;85;;; -230810;1;0;false;false;0;0;0;;; -230811;1;0;false;false;;;;;; -230812;1;0;false;false;0;0;0;;; -230813;4;0;false;false;;;;;; -230817;35;0;false;false;0;0;0;;; -230852;3;0;false;false;;;;;; -230855;1;0;false;false;0;0;0;;; -230856;3;0;false;false;;;;;; -230859;2;1;false;false;127;0;85;;; -230861;1;0;false;false;;;;;; -230862;8;0;false;false;0;0;0;;; -230870;1;0;false;false;;;;;; -230871;2;0;false;false;0;0;0;;; -230873;1;0;false;false;;;;;; -230874;4;1;false;false;127;0;85;;; -230878;1;0;false;false;0;0;0;;; -230879;1;0;false;false;;;;;; -230880;1;0;false;false;0;0;0;;; -230881;4;0;false;false;;;;;; -230885;53;0;false;false;0;0;0;;; -230938;3;0;false;false;;;;;; -230941;1;0;false;false;0;0;0;;; -230942;4;0;false;false;;;;;; -230946;14;0;false;false;0;0;0;;; -230960;1;0;false;false;;;;;; -230961;1;0;false;false;0;0;0;;; -230962;1;0;false;false;;;;;; -230963;11;0;false;false;0;0;0;;; -230974;3;0;false;false;;;;;; -230977;2;1;false;false;127;0;85;;; -230979;1;0;false;false;;;;;; -230980;10;0;false;false;0;0;0;;; -230990;1;0;false;false;;;;;; -230991;1;0;false;false;0;0;0;;; -230992;4;0;false;false;;;;;; -230996;7;0;false;false;0;0;0;;; -231003;1;0;false;false;;;;;; -231004;1;0;false;false;0;0;0;;; -231005;1;0;false;false;;;;;; -231006;3;1;false;false;127;0;85;;; -231009;1;0;false;false;;;;;; -231010;24;0;false;false;0;0;0;;; -231034;1;0;false;false;;;;;; -231035;16;0;false;false;0;0;0;;; -231051;3;0;false;false;;;;;; -231054;1;0;false;false;0;0;0;;; -231055;3;0;false;false;;;;;; -231058;4;1;false;false;127;0;85;;; -231062;1;0;false;false;;;;;; -231063;1;0;false;false;0;0;0;;; -231064;4;0;false;false;;;;;; -231068;7;0;false;false;0;0;0;;; -231075;1;0;false;false;;;;;; -231076;1;0;false;false;0;0;0;;; -231077;1;0;false;false;;;;;; -231078;15;0;false;false;0;0;0;;; -231093;3;0;false;false;;;;;; -231096;1;0;false;false;0;0;0;;; -231097;3;0;false;false;;;;;; -231100;50;0;false;false;0;0;0;;; -231150;3;0;false;false;;;;;; -231153;8;0;false;false;0;0;0;;; -231161;2;0;false;false;;;;;; -231163;1;0;false;false;0;0;0;;; -231164;2;0;false;false;;;;;; -231166;3;0;false;false;63;95;191;;; -231169;3;0;false;false;;;;;; -231172;1;0;false;false;63;95;191;;; -231173;1;0;false;false;;;;;; -231174;4;0;false;false;63;95;191;;; -231178;1;0;false;false;;;;;; -231179;3;0;false;false;63;95;191;;; -231182;1;0;false;false;;;;;; -231183;10;0;false;false;63;95;191;;; -231193;1;0;false;false;;;;;; -231194;6;0;false;false;63;95;191;;; -231200;1;0;false;false;;;;;; -231201;2;0;false;false;63;95;191;;; -231203;1;0;false;false;;;;;; -231204;3;0;false;false;63;95;191;;; -231207;1;0;false;false;;;;;; -231208;6;0;false;false;63;95;191;;; -231214;1;0;false;false;;;;;; -231215;9;0;false;false;63;95;191;;; -231224;1;0;false;false;;;;;; -231225;2;0;false;false;63;95;191;;; -231227;1;0;false;false;;;;;; -231228;3;0;false;false;63;95;191;;; -231231;3;0;false;false;;;;;; -231234;1;0;false;false;63;95;191;;; -231235;1;0;false;false;;;;;; -231236;9;0;false;false;63;95;191;;; -231245;2;0;false;false;;;;;; -231247;10;0;false;false;63;95;191;;; -231257;1;0;false;false;;;;;; -231258;2;0;false;false;63;95;191;;; -231260;1;0;false;false;;;;;; -231261;6;0;false;false;63;95;191;;; -231267;1;0;false;false;;;;;; -231268;3;0;false;false;63;95;191;;; -231271;1;0;false;false;;;;;; -231272;4;0;false;false;63;95;191;;; -231276;1;0;false;false;;;;;; -231277;4;0;false;false;63;95;191;;; -231281;1;0;false;false;;;;;; -231282;5;0;false;false;63;95;191;;; -231287;1;0;false;false;;;;;; -231288;3;0;false;false;63;95;191;;; -231291;4;0;false;false;;;;;; -231295;1;0;false;false;63;95;191;;; -231296;1;0;false;false;;;;;; -231297;10;0;false;false;63;95;191;;; -231307;1;0;false;false;;;;;; -231308;6;0;false;false;63;95;191;;; -231314;1;0;false;false;;;;;; -231315;4;0;false;false;63;95;191;;; -231319;1;0;false;false;;;;;; -231320;2;0;false;false;63;95;191;;; -231322;1;0;false;false;;;;;; -231323;5;0;false;false;63;95;191;;; -231328;1;0;false;false;;;;;; -231329;2;0;false;false;63;95;191;;; -231331;1;0;false;false;;;;;; -231332;3;0;false;false;63;95;191;;; -231335;1;0;false;false;;;;;; -231336;7;0;false;false;63;95;191;;; -231343;1;0;false;false;;;;;; -231344;7;0;false;false;63;95;191;;; -231351;3;0;false;false;;;;;; -231354;1;0;false;false;63;95;191;;; -231355;3;0;false;false;;;;;; -231358;1;0;false;false;63;95;191;;; -231359;1;0;false;false;;;;;; -231360;5;1;false;false;127;159;191;;; -231365;41;0;false;false;63;95;191;;; -231406;3;0;false;false;;;;;; -231409;2;0;false;false;63;95;191;;; -231411;2;0;false;false;;;;;; -231413;6;1;false;false;127;0;85;;; -231419;1;0;false;false;;;;;; -231420;4;1;false;false;127;0;85;;; -231424;1;0;false;false;;;;;; -231425;9;0;false;false;0;0;0;;; -231434;1;0;false;false;;;;;; -231435;7;0;false;false;0;0;0;;; -231442;1;0;false;false;;;;;; -231443;7;0;false;false;0;0;0;;; -231450;1;0;false;false;;;;;; -231451;1;0;false;false;0;0;0;;; -231452;3;0;false;false;;;;;; -231455;2;1;false;false;127;0;85;;; -231457;1;0;false;false;;;;;; -231458;7;0;false;false;0;0;0;;; -231465;1;0;false;false;;;;;; -231466;2;0;false;false;0;0;0;;; -231468;1;0;false;false;;;;;; -231469;4;1;false;false;127;0;85;;; -231473;1;0;false;false;0;0;0;;; -231474;1;0;false;false;;;;;; -231475;1;0;false;false;0;0;0;;; -231476;4;0;false;false;;;;;; -231480;5;1;false;false;127;0;85;;; -231485;24;0;false;false;0;0;0;;; -231509;3;0;false;false;;;;;; -231512;1;0;false;false;0;0;0;;; -231513;1;0;false;false;;;;;; -231514;4;1;false;false;127;0;85;;; -231518;1;0;false;false;;;;;; -231519;1;0;false;false;0;0;0;;; -231520;4;0;false;false;;;;;; -231524;5;1;false;false;127;0;85;;; -231529;19;0;false;false;0;0;0;;; -231548;3;0;false;false;;;;;; -231551;1;0;false;false;0;0;0;;; -231552;2;0;false;false;;;;;; -231554;1;0;false;false;0;0;0;;; -231555;2;0;false;false;;;;;; -231557;3;0;false;false;63;95;191;;; -231560;4;0;false;false;;;;;; -231564;1;0;false;false;63;95;191;;; -231565;1;0;false;false;;;;;; -231566;4;0;false;false;63;95;191;;; -231570;1;0;false;false;;;;;; -231571;7;0;false;false;63;95;191;;; -231578;1;0;false;false;;;;;; -231579;3;0;false;false;63;95;191;;; -231582;1;0;false;false;;;;;; -231583;6;0;false;false;63;95;191;;; -231589;1;0;false;false;;;;;; -231590;10;0;false;false;63;95;191;;; -231600;1;0;false;false;;;;;; -231601;6;0;false;false;63;95;191;;; -231607;1;0;false;false;;;;;; -231608;5;0;false;false;63;95;191;;; -231613;1;0;false;false;;;;;; -231614;5;0;false;false;63;95;191;;; -231619;1;0;false;false;;;;;; -231620;9;0;false;false;63;95;191;;; -231629;3;0;false;false;;;;;; -231632;1;0;false;false;63;95;191;;; -231633;1;0;false;false;;;;;; -231634;4;0;false;false;127;127;159;;; -231638;3;0;false;false;;;;;; -231641;1;0;false;false;63;95;191;;; -231642;3;0;false;false;;;;;; -231645;1;0;false;false;63;95;191;;; -231646;1;0;false;false;;;;;; -231647;7;1;false;false;127;159;191;;; -231654;6;0;false;false;63;95;191;;; -231660;1;0;false;false;;;;;; -231661;2;0;false;false;63;95;191;;; -231663;1;0;false;false;;;;;; -231664;4;0;false;false;63;95;191;;; -231668;1;0;false;false;;;;;; -231669;6;0;false;false;63;95;191;;; -231675;1;0;false;false;;;;;; -231676;8;0;false;false;63;95;191;;; -231684;1;0;false;false;;;;;; -231685;1;0;false;false;63;95;191;;; -231686;1;0;false;false;;;;;; -231687;4;0;false;false;63;95;191;;; -231691;1;0;false;false;;;;;; -231692;7;0;false;false;63;95;191;;; -231699;1;0;false;false;;;;;; -231700;3;0;false;false;63;95;191;;; -231703;1;0;false;false;;;;;; -231704;5;0;false;false;63;95;191;;; -231709;1;0;false;false;;;;;; -231710;2;0;false;false;63;95;191;;; -231712;1;0;false;false;;;;;; -231713;5;0;false;false;63;95;191;;; -231718;3;0;false;false;;;;;; -231721;1;0;false;false;63;95;191;;; -231722;2;0;false;false;;;;;; -231724;6;0;false;false;63;95;191;;; -231730;1;0;false;false;;;;;; -231731;6;0;false;false;63;95;191;;; -231737;1;0;false;false;;;;;; -231738;4;0;false;false;63;95;191;;; -231742;1;0;false;false;;;;;; -231743;3;0;false;false;63;95;191;;; -231746;1;0;false;false;;;;;; -231747;4;0;false;false;63;95;191;;; -231751;1;0;false;false;;;;;; -231752;6;0;false;false;63;95;191;;; -231758;1;0;false;false;;;;;; -231759;2;0;false;false;63;95;191;;; -231761;1;0;false;false;;;;;; -231762;7;0;false;false;63;95;191;;; -231769;1;0;false;false;;;;;; -231770;5;0;false;false;63;95;191;;; -231775;1;0;false;false;;;;;; -231776;7;0;false;false;63;95;191;;; -231783;3;0;false;false;;;;;; -231786;1;0;false;false;63;95;191;;; -231787;1;0;false;false;;;;;; -231788;11;1;false;false;127;159;191;;; -231799;12;0;false;false;63;95;191;;; -231811;1;0;false;false;;;;;; -231812;4;0;false;false;127;127;159;;; -231816;3;0;false;false;;;;;; -231819;1;0;false;false;63;95;191;;; -231820;4;0;false;false;;;;;; -231824;4;0;false;false;127;127;159;;; -231828;21;0;false;false;63;95;191;;; -231849;1;0;false;false;;;;;; -231850;1;0;false;false;127;127;159;;; -231851;1;0;false;false;;;;;; -231852;2;0;false;false;63;95;191;;; -231854;1;0;false;false;;;;;; -231855;3;0;false;false;63;95;191;;; -231858;1;0;false;false;;;;;; -231859;8;0;false;false;63;95;191;;; -231867;1;0;false;false;;;;;; -231868;3;0;false;false;63;95;191;;; -231871;1;0;false;false;;;;;; -231872;4;0;false;false;63;95;191;;; -231876;1;0;false;false;;;;;; -231877;8;0;false;false;63;95;191;;; -231885;5;0;false;false;127;127;159;;; -231890;3;0;false;false;;;;;; -231893;1;0;false;false;63;95;191;;; -231894;4;0;false;false;;;;;; -231898;4;0;false;false;127;127;159;;; -231902;27;0;false;false;63;95;191;;; -231929;1;0;false;false;;;;;; -231930;1;0;false;false;127;127;159;;; -231931;1;0;false;false;;;;;; -231932;2;0;false;false;63;95;191;;; -231934;1;0;false;false;;;;;; -231935;3;0;false;false;63;95;191;;; -231938;1;0;false;false;;;;;; -231939;6;0;false;false;63;95;191;;; -231945;1;0;false;false;;;;;; -231946;4;0;false;false;63;95;191;;; -231950;1;0;false;false;;;;;; -231951;3;0;false;false;63;95;191;;; -231954;1;0;false;false;;;;;; -231955;6;0;false;false;63;95;191;;; -231961;1;0;false;false;;;;;; -231962;4;0;false;false;63;95;191;;; -231966;1;0;false;false;;;;;; -231967;7;0;false;false;63;95;191;;; -231974;1;0;false;false;;;;;; -231975;3;0;false;false;63;95;191;;; -231978;1;0;false;false;;;;;; -231979;8;0;false;false;63;95;191;;; -231987;5;0;false;false;127;127;159;;; -231992;3;0;false;false;;;;;; -231995;1;0;false;false;63;95;191;;; -231996;1;0;false;false;;;;;; -231997;5;0;false;false;127;127;159;;; -232002;3;0;false;false;;;;;; -232005;2;0;false;false;63;95;191;;; -232007;2;0;false;false;;;;;; -232009;6;1;false;false;127;0;85;;; -232015;1;0;false;false;;;;;; -232016;4;1;false;false;127;0;85;;; -232020;1;0;false;false;;;;;; -232021;22;0;false;false;0;0;0;;; -232043;7;1;false;false;127;0;85;;; -232050;1;0;false;false;;;;;; -232051;7;0;false;false;0;0;0;;; -232058;1;0;false;false;;;;;; -232059;1;0;false;false;0;0;0;;; -232060;3;0;false;false;;;;;; -232063;14;0;false;false;0;0;0;;; -232077;3;0;false;false;;;;;; -232080;18;0;false;false;0;0;0;;; -232098;1;0;false;false;;;;;; -232099;1;0;false;false;0;0;0;;; -232100;1;0;false;false;;;;;; -232101;7;0;false;false;0;0;0;;; -232108;2;0;false;false;;;;;; -232110;1;0;false;false;0;0;0;;; -232111;2;0;false;false;;;;;; -232113;3;0;false;false;63;95;191;;; -232116;3;0;false;false;;;;;; -232119;1;0;false;false;63;95;191;;; -232120;1;0;false;false;;;;;; -232121;4;0;false;false;63;95;191;;; -232125;1;0;false;false;;;;;; -232126;7;0;false;false;63;95;191;;; -232133;1;0;false;false;;;;;; -232134;3;0;false;false;63;95;191;;; -232137;1;0;false;false;;;;;; -232138;6;0;false;false;63;95;191;;; -232144;1;0;false;false;;;;;; -232145;7;0;false;false;63;95;191;;; -232152;1;0;false;false;;;;;; -232153;3;0;false;false;63;95;191;;; -232156;1;0;false;false;;;;;; -232157;2;0;false;false;63;95;191;;; -232159;1;0;false;false;;;;;; -232160;7;0;false;false;63;95;191;;; -232167;3;0;false;false;;;;;; -232170;1;0;false;false;63;95;191;;; -232171;1;0;false;false;;;;;; -232172;4;0;false;false;127;127;159;;; -232176;3;0;false;false;;;;;; -232179;1;0;false;false;63;95;191;;; -232180;3;0;false;false;;;;;; -232183;1;0;false;false;63;95;191;;; -232184;1;0;false;false;;;;;; -232185;7;1;false;false;127;159;191;;; -232192;8;0;false;false;63;95;191;;; -232200;1;0;false;false;;;;;; -232201;2;0;false;false;63;95;191;;; -232203;1;0;false;false;;;;;; -232204;4;0;false;false;63;95;191;;; -232208;1;0;false;false;;;;;; -232209;7;0;false;false;63;95;191;;; -232216;1;0;false;false;;;;;; -232217;3;0;false;false;63;95;191;;; -232220;1;0;false;false;;;;;; -232221;2;0;false;false;63;95;191;;; -232223;1;0;false;false;;;;;; -232224;7;0;false;false;63;95;191;;; -232231;1;0;false;false;;;;;; -232232;2;0;false;false;63;95;191;;; -232234;1;0;false;false;;;;;; -232235;5;0;false;false;63;95;191;;; -232240;1;0;false;false;;;;;; -232241;7;0;false;false;63;95;191;;; -232248;1;0;false;false;;;;;; -232249;3;0;false;false;63;95;191;;; -232252;1;0;false;false;;;;;; -232253;3;0;false;false;63;95;191;;; -232256;1;0;false;false;;;;;; -232257;2;0;false;false;63;95;191;;; -232259;4;0;false;false;;;;;; -232263;1;0;false;false;63;95;191;;; -232264;2;0;false;false;;;;;; -232266;6;0;false;false;63;95;191;;; -232272;3;0;false;false;;;;;; -232275;1;0;false;false;63;95;191;;; -232276;1;0;false;false;;;;;; -232277;11;1;false;false;127;159;191;;; -232288;12;0;false;false;63;95;191;;; -232300;1;0;false;false;;;;;; -232301;4;0;false;false;127;127;159;;; -232305;3;0;false;false;;;;;; -232308;1;0;false;false;63;95;191;;; -232309;4;0;false;false;;;;;; -232313;4;0;false;false;127;127;159;;; -232317;21;0;false;false;63;95;191;;; -232338;1;0;false;false;;;;;; -232339;1;0;false;false;127;127;159;;; -232340;1;0;false;false;;;;;; -232341;2;0;false;false;63;95;191;;; -232343;1;0;false;false;;;;;; -232344;3;0;false;false;63;95;191;;; -232347;1;0;false;false;;;;;; -232348;8;0;false;false;63;95;191;;; -232356;1;0;false;false;;;;;; -232357;3;0;false;false;63;95;191;;; -232360;1;0;false;false;;;;;; -232361;4;0;false;false;63;95;191;;; -232365;1;0;false;false;;;;;; -232366;8;0;false;false;63;95;191;;; -232374;5;0;false;false;127;127;159;;; -232379;3;0;false;false;;;;;; -232382;1;0;false;false;63;95;191;;; -232383;4;0;false;false;;;;;; -232387;4;0;false;false;127;127;159;;; -232391;27;0;false;false;63;95;191;;; -232418;1;0;false;false;;;;;; -232419;1;0;false;false;127;127;159;;; -232420;1;0;false;false;;;;;; -232421;2;0;false;false;63;95;191;;; -232423;1;0;false;false;;;;;; -232424;3;0;false;false;63;95;191;;; -232427;1;0;false;false;;;;;; -232428;6;0;false;false;63;95;191;;; -232434;1;0;false;false;;;;;; -232435;4;0;false;false;63;95;191;;; -232439;1;0;false;false;;;;;; -232440;3;0;false;false;63;95;191;;; -232443;1;0;false;false;;;;;; -232444;6;0;false;false;63;95;191;;; -232450;1;0;false;false;;;;;; -232451;4;0;false;false;63;95;191;;; -232455;1;0;false;false;;;;;; -232456;7;0;false;false;63;95;191;;; -232463;1;0;false;false;;;;;; -232464;3;0;false;false;63;95;191;;; -232467;1;0;false;false;;;;;; -232468;8;0;false;false;63;95;191;;; -232476;5;0;false;false;127;127;159;;; -232481;3;0;false;false;;;;;; -232484;1;0;false;false;63;95;191;;; -232485;1;0;false;false;;;;;; -232486;5;0;false;false;127;127;159;;; -232491;3;0;false;false;;;;;; -232494;2;0;false;false;63;95;191;;; -232496;2;0;false;false;;;;;; -232498;6;1;false;false;127;0;85;;; -232504;1;0;false;false;;;;;; -232505;4;1;false;false;127;0;85;;; -232509;1;0;false;false;;;;;; -232510;12;0;false;false;0;0;0;;; -232522;7;1;false;false;127;0;85;;; -232529;1;0;false;false;;;;;; -232530;9;0;false;false;0;0;0;;; -232539;1;0;false;false;;;;;; -232540;1;0;false;false;0;0;0;;; -232541;3;0;false;false;;;;;; -232544;14;0;false;false;0;0;0;;; -232558;3;0;false;false;;;;;; -232561;4;1;false;false;127;0;85;;; -232565;9;0;false;false;0;0;0;;; -232574;1;0;false;false;;;;;; -232575;1;0;false;false;0;0;0;;; -232576;1;0;false;false;;;;;; -232577;9;0;false;false;0;0;0;;; -232586;2;0;false;false;;;;;; -232588;1;0;false;false;0;0;0;;; -232589;2;0;false;false;;;;;; -232591;3;0;false;false;63;95;191;;; -232594;3;0;false;false;;;;;; -232597;1;0;false;false;63;95;191;;; -232598;1;0;false;false;;;;;; -232599;4;0;false;false;63;95;191;;; -232603;1;0;false;false;;;;;; -232604;1;0;false;false;63;95;191;;; -232605;1;0;false;false;;;;;; -232606;3;0;false;false;63;95;191;;; -232609;1;0;false;false;;;;;; -232610;4;0;false;false;63;95;191;;; -232614;1;0;false;false;;;;;; -232615;2;0;false;false;63;95;191;;; -232617;1;0;false;false;;;;;; -232618;6;0;false;false;63;95;191;;; -232624;1;0;false;false;;;;;; -232625;4;0;false;false;63;95;191;;; -232629;1;0;false;false;;;;;; -232630;5;0;false;false;63;95;191;;; -232635;3;0;false;false;;;;;; -232638;1;0;false;false;63;95;191;;; -232639;1;0;false;false;;;;;; -232640;3;0;false;false;127;127;159;;; -232643;3;0;false;false;;;;;; -232646;1;0;false;false;63;95;191;;; -232647;1;0;false;false;;;;;; -232648;3;0;false;false;127;127;159;;; -232651;5;0;false;false;63;95;191;;; -232656;4;0;false;false;127;127;159;;; -232660;1;0;false;false;;;;;; -232661;6;0;false;false;63;95;191;;; -232667;1;0;false;false;;;;;; -232668;5;0;false;false;63;95;191;;; -232673;1;0;false;false;;;;;; -232674;3;0;false;false;63;95;191;;; -232677;1;0;false;false;;;;;; -232678;3;0;false;false;63;95;191;;; -232681;1;0;false;false;;;;;; -232682;9;0;false;false;63;95;191;;; -232691;1;0;false;false;;;;;; -232692;6;0;false;false;63;95;191;;; -232698;1;0;false;false;;;;;; -232699;4;0;false;false;63;95;191;;; -232703;1;0;false;false;;;;;; -232704;4;0;false;false;63;95;191;;; -232708;1;0;false;false;;;;;; -232709;2;0;false;false;63;95;191;;; -232711;1;0;false;false;;;;;; -232712;8;0;false;false;63;95;191;;; -232720;3;0;false;false;;;;;; -232723;1;0;false;false;63;95;191;;; -232724;1;0;false;false;;;;;; -232725;3;0;false;false;63;95;191;;; -232728;1;0;false;false;;;;;; -232729;3;0;false;false;63;95;191;;; -232732;1;0;false;false;;;;;; -232733;4;0;false;false;63;95;191;;; -232737;1;0;false;false;;;;;; -232738;8;0;false;false;63;95;191;;; -232746;1;0;false;false;;;;;; -232747;2;0;false;false;63;95;191;;; -232749;1;0;false;false;;;;;; -232750;7;0;false;false;63;95;191;;; -232757;1;0;false;false;;;;;; -232758;6;0;false;false;63;95;191;;; -232764;3;0;false;false;;;;;; -232767;1;0;false;false;63;95;191;;; -232768;1;0;false;false;;;;;; -232769;4;0;false;false;127;127;159;;; -232773;3;0;false;false;;;;;; -232776;1;0;false;false;63;95;191;;; -232777;3;0;false;false;;;;;; -232780;1;0;false;false;63;95;191;;; -232781;1;0;false;false;;;;;; -232782;7;1;false;false;127;159;191;;; -232789;4;0;false;false;63;95;191;;; -232793;1;0;false;false;;;;;; -232794;3;0;false;false;63;95;191;;; -232797;1;0;false;false;;;;;; -232798;4;0;false;false;63;95;191;;; -232802;3;0;false;false;;;;;; -232805;1;0;false;false;63;95;191;;; -232806;1;0;false;false;;;;;; -232807;11;1;false;false;127;159;191;;; -232818;12;0;false;false;63;95;191;;; -232830;1;0;false;false;;;;;; -232831;4;0;false;false;127;127;159;;; -232835;3;0;false;false;;;;;; -232838;1;0;false;false;63;95;191;;; -232839;4;0;false;false;;;;;; -232843;4;0;false;false;127;127;159;;; -232847;21;0;false;false;63;95;191;;; -232868;1;0;false;false;;;;;; -232869;1;0;false;false;127;127;159;;; -232870;1;0;false;false;;;;;; -232871;2;0;false;false;63;95;191;;; -232873;1;0;false;false;;;;;; -232874;3;0;false;false;63;95;191;;; -232877;1;0;false;false;;;;;; -232878;8;0;false;false;63;95;191;;; -232886;1;0;false;false;;;;;; -232887;3;0;false;false;63;95;191;;; -232890;1;0;false;false;;;;;; -232891;4;0;false;false;63;95;191;;; -232895;1;0;false;false;;;;;; -232896;8;0;false;false;63;95;191;;; -232904;5;0;false;false;127;127;159;;; -232909;3;0;false;false;;;;;; -232912;1;0;false;false;63;95;191;;; -232913;4;0;false;false;;;;;; -232917;4;0;false;false;127;127;159;;; -232921;27;0;false;false;63;95;191;;; -232948;1;0;false;false;;;;;; -232949;1;0;false;false;127;127;159;;; -232950;1;0;false;false;;;;;; -232951;2;0;false;false;63;95;191;;; -232953;1;0;false;false;;;;;; -232954;3;0;false;false;63;95;191;;; -232957;1;0;false;false;;;;;; -232958;6;0;false;false;63;95;191;;; -232964;1;0;false;false;;;;;; -232965;4;0;false;false;63;95;191;;; -232969;1;0;false;false;;;;;; -232970;3;0;false;false;63;95;191;;; -232973;1;0;false;false;;;;;; -232974;6;0;false;false;63;95;191;;; -232980;1;0;false;false;;;;;; -232981;4;0;false;false;63;95;191;;; -232985;1;0;false;false;;;;;; -232986;7;0;false;false;63;95;191;;; -232993;1;0;false;false;;;;;; -232994;3;0;false;false;63;95;191;;; -232997;1;0;false;false;;;;;; -232998;8;0;false;false;63;95;191;;; -233006;5;0;false;false;127;127;159;;; -233011;3;0;false;false;;;;;; -233014;1;0;false;false;63;95;191;;; -233015;1;0;false;false;;;;;; -233016;5;0;false;false;127;127;159;;; -233021;3;0;false;false;;;;;; -233024;2;0;false;false;63;95;191;;; -233026;2;0;false;false;;;;;; -233028;6;1;false;false;127;0;85;;; -233034;1;0;false;false;;;;;; -233035;4;1;false;false;127;0;85;;; -233039;1;0;false;false;;;;;; -233040;12;0;false;false;0;0;0;;; -233052;1;0;false;false;;;;;; -233053;5;0;false;false;0;0;0;;; -233058;1;0;false;false;;;;;; -233059;1;0;false;false;0;0;0;;; -233060;3;0;false;false;;;;;; -233063;14;0;false;false;0;0;0;;; -233077;3;0;false;false;;;;;; -233080;3;1;false;false;127;0;85;;; -233083;1;0;false;false;;;;;; -233084;13;0;false;false;0;0;0;;; -233097;1;0;false;false;;;;;; -233098;1;0;false;false;0;0;0;;; -233099;1;0;false;false;;;;;; -233100;11;0;false;false;0;0;0;;; -233111;6;0;false;false;;;;;; -233117;5;1;false;false;127;0;85;;; -233122;15;0;false;false;0;0;0;;; -233137;4;0;false;false;;;;;; -233141;21;0;false;false;0;0;0;;; -233162;3;0;false;false;;;;;; -233165;47;0;false;false;63;127;95;;; -233212;1;0;false;false;;;;;; -233213;2;1;false;false;127;0;85;;; -233215;1;0;false;false;;;;;; -233216;11;0;false;false;0;0;0;;; -233227;1;0;false;false;;;;;; -233228;2;0;false;false;0;0;0;;; -233230;1;0;false;false;;;;;; -233231;14;0;false;false;0;0;0;;; -233245;1;0;false;false;;;;;; -233246;1;0;false;false;0;0;0;;; -233247;4;0;false;false;;;;;; -233251;44;0;false;false;0;0;0;;; -233295;1;0;false;false;;;;;; -233296;1;0;false;false;0;0;0;;; -233297;1;0;false;false;;;;;; -233298;10;0;false;false;0;0;0;;; -233308;1;0;false;false;;;;;; -233309;1;0;false;false;0;0;0;;; -233310;1;0;false;false;;;;;; -233311;14;0;false;false;0;0;0;;; -233325;1;0;false;false;;;;;; -233326;4;1;false;false;127;0;85;;; -233330;2;0;false;false;0;0;0;;; -233332;4;0;false;false;;;;;; -233336;23;0;false;false;0;0;0;;; -233359;3;0;false;false;;;;;; -233362;1;0;false;false;0;0;0;;; -233363;3;0;false;false;;;;;; -233366;24;0;false;false;0;0;0;;; -233390;3;0;false;false;;;;;; -233393;22;0;false;false;0;0;0;;; -233415;3;0;false;false;;;;;; -233418;2;1;false;false;127;0;85;;; -233420;1;0;false;false;;;;;; -233421;15;0;false;false;0;0;0;;; -233436;1;0;false;false;;;;;; -233437;21;0;false;false;0;0;0;;; -233458;3;0;false;false;;;;;; -233461;14;0;false;false;0;0;0;;; -233475;1;0;false;false;;;;;; -233476;1;0;false;false;0;0;0;;; -233477;1;0;false;false;;;;;; -233478;9;0;false;false;0;0;0;;; -233487;3;0;false;false;;;;;; -233490;46;0;false;false;63;127;95;;; -233536;1;0;false;false;;;;;; -233537;19;0;false;false;0;0;0;;; -233556;3;0;false;false;;;;;; -233559;5;1;false;false;127;0;85;;; -233564;10;0;false;false;0;0;0;;; -233574;2;0;false;false;;;;;; -233576;1;0;false;false;0;0;0;;; -233577;2;0;false;false;;;;;; -233579;3;0;false;false;63;95;191;;; -233582;3;0;false;false;;;;;; -233585;1;0;false;false;63;95;191;;; -233586;1;0;false;false;;;;;; -233587;5;1;false;false;127;159;191;;; -233592;45;0;false;false;63;95;191;;; -233637;3;0;false;false;;;;;; -233640;2;0;false;false;63;95;191;;; -233642;2;0;false;false;;;;;; -233644;6;1;false;false;127;0;85;;; -233650;1;0;false;false;;;;;; -233651;4;1;false;false;127;0;85;;; -233655;1;0;false;false;;;;;; -233656;19;0;false;false;0;0;0;;; -233675;1;0;false;false;;;;;; -233676;6;0;false;false;0;0;0;;; -233682;1;0;false;false;;;;;; -233683;1;0;false;false;0;0;0;;; -233684;3;0;false;false;;;;;; -233687;14;0;false;false;0;0;0;;; -233701;3;0;false;false;;;;;; -233704;10;0;false;false;0;0;0;;; -233714;1;0;false;false;;;;;; -233715;1;0;false;false;0;0;0;;; -233716;1;0;false;false;;;;;; -233717;6;0;false;false;0;0;0;;; -233723;3;0;false;false;;;;;; -233726;5;1;false;false;127;0;85;;; -233731;32;0;false;false;0;0;0;;; -233763;3;0;false;false;;;;;; -233766;9;0;false;false;0;0;0;;; -233775;2;0;false;false;;;;;; -233777;1;0;false;false;0;0;0;;; -233778;2;0;false;false;;;;;; -233780;3;0;false;false;63;95;191;;; -233783;4;0;false;false;;;;;; -233787;1;0;false;false;63;95;191;;; -233788;1;0;false;false;;;;;; -233789;4;0;false;false;63;95;191;;; -233793;1;0;false;false;;;;;; -233794;3;0;false;false;63;95;191;;; -233797;1;0;false;false;;;;;; -233798;10;0;false;false;63;95;191;;; -233808;1;0;false;false;;;;;; -233809;6;0;false;false;63;95;191;;; -233815;1;0;false;false;;;;;; -233816;6;0;false;false;63;95;191;;; -233822;1;0;false;false;;;;;; -233823;8;0;false;false;63;95;191;;; -233831;1;0;false;false;;;;;; -233832;2;0;false;false;63;95;191;;; -233834;1;0;false;false;;;;;; -233835;3;0;false;false;63;95;191;;; -233838;1;0;false;false;;;;;; -233839;5;0;false;false;63;95;191;;; -233844;1;0;false;false;;;;;; -233845;2;0;false;false;63;95;191;;; -233847;1;0;false;false;;;;;; -233848;3;0;false;false;63;95;191;;; -233851;1;0;false;false;;;;;; -233852;5;0;false;false;63;95;191;;; -233857;3;0;false;false;;;;;; -233860;1;0;false;false;63;95;191;;; -233861;1;0;false;false;;;;;; -233862;2;0;false;false;63;95;191;;; -233864;1;0;false;false;;;;;; -233865;7;0;false;false;63;95;191;;; -233872;1;0;false;false;;;;;; -233873;2;0;false;false;63;95;191;;; -233875;1;0;false;false;;;;;; -233876;5;0;false;false;63;95;191;;; -233881;1;0;false;false;;;;;; -233882;2;0;false;false;63;95;191;;; -233884;1;0;false;false;;;;;; -233885;2;0;false;false;63;95;191;;; -233887;1;0;false;false;;;;;; -233888;4;0;false;false;63;95;191;;; -233892;1;0;false;false;;;;;; -233893;4;0;false;false;63;95;191;;; -233897;3;0;false;false;;;;;; -233900;1;0;false;false;63;95;191;;; -233901;1;0;false;false;;;;;; -233902;3;0;false;false;127;127;159;;; -233905;3;0;false;false;;;;;; -233908;1;0;false;false;63;95;191;;; -233909;1;0;false;false;;;;;; -233910;3;0;false;false;127;127;159;;; -233913;5;0;false;false;63;95;191;;; -233918;4;0;false;false;127;127;159;;; -233922;1;0;false;false;;;;;; -233923;3;0;false;false;63;95;191;;; -233926;1;0;false;false;;;;;; -233927;10;0;false;false;63;95;191;;; -233937;1;0;false;false;;;;;; -233938;5;0;false;false;63;95;191;;; -233943;1;0;false;false;;;;;; -233944;2;0;false;false;63;95;191;;; -233946;1;0;false;false;;;;;; -233947;5;0;false;false;63;95;191;;; -233952;1;0;false;false;;;;;; -233953;2;0;false;false;63;95;191;;; -233955;1;0;false;false;;;;;; -233956;1;0;false;false;63;95;191;;; -233957;1;0;false;false;;;;;; -233958;4;0;false;false;63;95;191;;; -233962;1;0;false;false;;;;;; -233963;3;0;false;false;63;95;191;;; -233966;1;0;false;false;;;;;; -233967;4;0;false;false;63;95;191;;; -233971;1;0;false;false;;;;;; -233972;2;0;false;false;63;95;191;;; -233974;1;0;false;false;;;;;; -233975;3;0;false;false;63;95;191;;; -233978;1;0;false;false;;;;;; -233979;2;0;false;false;63;95;191;;; -233981;1;0;false;false;;;;;; -233982;3;0;false;false;63;95;191;;; -233985;4;0;false;false;;;;;; -233989;1;0;false;false;63;95;191;;; -233990;1;0;false;false;;;;;; -233991;7;0;false;false;63;95;191;;; -233998;3;0;false;false;;;;;; -234001;1;0;false;false;63;95;191;;; -234002;1;0;false;false;;;;;; -234003;4;0;false;false;127;127;159;;; -234007;3;0;false;false;;;;;; -234010;1;0;false;false;63;95;191;;; -234011;3;0;false;false;;;;;; -234014;1;0;false;false;63;95;191;;; -234015;1;0;false;false;;;;;; -234016;7;1;false;false;127;159;191;;; -234023;6;0;false;false;63;95;191;;; -234029;1;0;false;false;;;;;; -234030;10;0;false;false;63;95;191;;; -234040;1;0;false;false;;;;;; -234041;6;0;false;false;63;95;191;;; -234047;1;0;false;false;;;;;; -234048;6;0;false;false;63;95;191;;; -234054;1;0;false;false;;;;;; -234055;8;0;false;false;63;95;191;;; -234063;1;0;false;false;;;;;; -234064;2;0;false;false;63;95;191;;; -234066;1;0;false;false;;;;;; -234067;3;0;false;false;63;95;191;;; -234070;1;0;false;false;;;;;; -234071;5;0;false;false;63;95;191;;; -234076;4;0;false;false;;;;;; -234080;1;0;false;false;63;95;191;;; -234081;2;0;false;false;;;;;; -234083;2;0;false;false;63;95;191;;; -234085;1;0;false;false;;;;;; -234086;3;0;false;false;63;95;191;;; -234089;1;0;false;false;;;;;; -234090;5;0;false;false;63;95;191;;; -234095;1;0;false;false;;;;;; -234096;8;0;false;false;63;95;191;;; -234104;1;0;false;false;;;;;; -234105;2;0;false;false;63;95;191;;; -234107;1;0;false;false;;;;;; -234108;9;0;false;false;63;95;191;;; -234117;1;0;false;false;;;;;; -234118;10;0;false;false;63;95;191;;; -234128;1;0;false;false;;;;;; -234129;8;0;false;false;63;95;191;;; -234137;1;0;false;false;;;;;; -234138;2;0;false;false;63;95;191;;; -234140;1;0;false;false;;;;;; -234141;2;0;false;false;63;95;191;;; -234143;1;0;false;false;;;;;; -234144;2;0;false;false;63;95;191;;; -234146;4;0;false;false;;;;;; -234150;1;0;false;false;63;95;191;;; -234151;2;0;false;false;;;;;; -234153;5;0;false;false;63;95;191;;; -234158;1;0;false;false;;;;;; -234159;2;0;false;false;63;95;191;;; -234161;1;0;false;false;;;;;; -234162;1;0;false;false;63;95;191;;; -234163;1;0;false;false;;;;;; -234164;3;0;false;false;63;95;191;;; -234167;1;0;false;false;;;;;; -234168;7;0;false;false;63;95;191;;; -234175;1;0;false;false;;;;;; -234176;2;0;false;false;63;95;191;;; -234178;1;0;false;false;;;;;; -234179;3;0;false;false;63;95;191;;; -234182;1;0;false;false;;;;;; -234183;9;0;false;false;63;95;191;;; -234192;1;0;false;false;;;;;; -234193;2;0;false;false;63;95;191;;; -234195;1;0;false;false;;;;;; -234196;1;0;false;false;63;95;191;;; -234197;1;0;false;false;;;;;; -234198;1;0;false;false;63;95;191;;; -234199;1;0;false;false;;;;;; -234200;1;0;false;false;63;95;191;;; -234201;1;0;false;false;;;;;; -234202;3;0;false;false;63;95;191;;; -234205;1;0;false;false;;;;;; -234206;7;0;false;false;63;95;191;;; -234213;1;0;false;false;;;;;; -234214;2;0;false;false;63;95;191;;; -234216;1;0;false;false;;;;;; -234217;9;0;false;false;63;95;191;;; -234226;3;0;false;false;;;;;; -234229;1;0;false;false;63;95;191;;; -234230;1;0;false;false;;;;;; -234231;11;1;false;false;127;159;191;;; -234242;12;0;false;false;63;95;191;;; -234254;1;0;false;false;;;;;; -234255;4;0;false;false;127;127;159;;; -234259;3;0;false;false;;;;;; -234262;1;0;false;false;63;95;191;;; -234263;4;0;false;false;;;;;; -234267;4;0;false;false;127;127;159;;; -234271;21;0;false;false;63;95;191;;; -234292;1;0;false;false;;;;;; -234293;1;0;false;false;127;127;159;;; -234294;1;0;false;false;;;;;; -234295;2;0;false;false;63;95;191;;; -234297;1;0;false;false;;;;;; -234298;3;0;false;false;63;95;191;;; -234301;1;0;false;false;;;;;; -234302;8;0;false;false;63;95;191;;; -234310;1;0;false;false;;;;;; -234311;3;0;false;false;63;95;191;;; -234314;1;0;false;false;;;;;; -234315;4;0;false;false;63;95;191;;; -234319;1;0;false;false;;;;;; -234320;8;0;false;false;63;95;191;;; -234328;5;0;false;false;127;127;159;;; -234333;3;0;false;false;;;;;; -234336;1;0;false;false;63;95;191;;; -234337;4;0;false;false;;;;;; -234341;4;0;false;false;127;127;159;;; -234345;27;0;false;false;63;95;191;;; -234372;1;0;false;false;;;;;; -234373;1;0;false;false;127;127;159;;; -234374;1;0;false;false;;;;;; -234375;2;0;false;false;63;95;191;;; -234377;1;0;false;false;;;;;; -234378;3;0;false;false;63;95;191;;; -234381;1;0;false;false;;;;;; -234382;6;0;false;false;63;95;191;;; -234388;1;0;false;false;;;;;; -234389;4;0;false;false;63;95;191;;; -234393;1;0;false;false;;;;;; -234394;3;0;false;false;63;95;191;;; -234397;1;0;false;false;;;;;; -234398;6;0;false;false;63;95;191;;; -234404;1;0;false;false;;;;;; -234405;4;0;false;false;63;95;191;;; -234409;1;0;false;false;;;;;; -234410;7;0;false;false;63;95;191;;; -234417;1;0;false;false;;;;;; -234418;3;0;false;false;63;95;191;;; -234421;1;0;false;false;;;;;; -234422;8;0;false;false;63;95;191;;; -234430;5;0;false;false;127;127;159;;; -234435;3;0;false;false;;;;;; -234438;1;0;false;false;63;95;191;;; -234439;1;0;false;false;;;;;; -234440;5;0;false;false;127;127;159;;; -234445;3;0;false;false;;;;;; -234448;2;0;false;false;63;95;191;;; -234450;2;0;false;false;;;;;; -234452;6;1;false;false;127;0;85;;; -234458;1;0;false;false;;;;;; -234459;4;1;false;false;127;0;85;;; -234463;1;0;false;false;;;;;; -234464;19;0;false;false;0;0;0;;; -234483;3;1;false;false;127;0;85;;; -234486;1;0;false;false;;;;;; -234487;7;0;false;false;0;0;0;;; -234494;1;0;false;false;;;;;; -234495;1;0;false;false;0;0;0;;; -234496;3;0;false;false;;;;;; -234499;14;0;false;false;0;0;0;;; -234513;3;0;false;false;;;;;; -234516;3;1;false;false;127;0;85;;; -234519;1;0;false;false;;;;;; -234520;15;0;false;false;0;0;0;;; -234535;1;0;false;false;;;;;; -234536;1;0;false;false;0;0;0;;; -234537;1;0;false;false;;;;;; -234538;22;0;false;false;0;0;0;;; -234560;3;0;false;false;;;;;; -234563;2;1;false;false;127;0;85;;; -234565;1;0;false;false;;;;;; -234566;15;0;false;false;0;0;0;;; -234581;1;0;false;false;;;;;; -234582;2;0;false;false;0;0;0;;; -234584;1;0;false;false;;;;;; -234585;2;0;false;false;0;0;0;;; -234587;1;0;false;false;;;;;; -234588;1;0;false;false;0;0;0;;; -234589;4;0;false;false;;;;;; -234593;6;1;false;false;127;0;85;;; -234599;1;0;false;false;0;0;0;;; -234600;3;0;false;false;;;;;; -234603;1;0;false;false;0;0;0;;; -234604;4;0;false;false;;;;;; -234608;2;1;false;false;127;0;85;;; -234610;1;0;false;false;;;;;; -234611;7;0;false;false;0;0;0;;; -234618;1;0;false;false;;;;;; -234619;1;0;false;false;0;0;0;;; -234620;1;0;false;false;;;;;; -234621;2;0;false;false;0;0;0;;; -234623;1;0;false;false;;;;;; -234624;1;0;false;false;0;0;0;;; -234625;4;0;false;false;;;;;; -234629;6;0;false;false;0;0;0;;; -234635;1;0;false;false;;;;;; -234636;1;0;false;false;0;0;0;;; -234637;1;0;false;false;;;;;; -234638;2;0;false;false;0;0;0;;; -234640;3;0;false;false;;;;;; -234643;1;0;false;false;0;0;0;;; -234644;3;0;false;false;;;;;; -234647;6;0;false;false;0;0;0;;; -234653;1;0;false;false;;;;;; -234654;2;0;false;false;0;0;0;;; -234656;1;0;false;false;;;;;; -234657;25;0;false;false;0;0;0;;; -234682;3;0;false;false;;;;;; -234685;59;0;false;false;63;127;95;;; -234744;1;0;false;false;;;;;; -234745;46;0;false;false;63;127;95;;; -234791;1;0;false;false;;;;;; -234792;61;0;false;false;63;127;95;;; -234853;1;0;false;false;;;;;; -234854;29;0;false;false;63;127;95;;; -234883;1;0;false;false;;;;;; -234884;2;1;false;false;127;0;85;;; -234886;1;0;false;false;;;;;; -234887;16;0;false;false;0;0;0;;; -234903;1;0;false;false;;;;;; -234904;1;0;false;false;0;0;0;;; -234905;1;0;false;false;;;;;; -234906;2;0;false;false;0;0;0;;; -234908;1;0;false;false;;;;;; -234909;1;0;false;false;0;0;0;;; -234910;4;0;false;false;;;;;; -234914;3;1;false;false;127;0;85;;; -234917;1;0;false;false;;;;;; -234918;5;0;false;false;0;0;0;;; -234923;1;0;false;false;;;;;; -234924;1;0;false;false;0;0;0;;; -234925;1;0;false;false;;;;;; -234926;21;0;false;false;0;0;0;;; -234947;4;0;false;false;;;;;; -234951;62;0;false;false;63;127;95;;; -235013;2;0;false;false;;;;;; -235015;63;0;false;false;63;127;95;;; -235078;2;0;false;false;;;;;; -235080;31;0;false;false;63;127;95;;; -235111;2;0;false;false;;;;;; -235113;2;1;false;false;127;0;85;;; -235115;1;0;false;false;;;;;; -235116;7;0;false;false;0;0;0;;; -235123;1;0;false;false;;;;;; -235124;1;0;false;false;0;0;0;;; -235125;1;0;false;false;;;;;; -235126;5;0;false;false;0;0;0;;; -235131;1;0;false;false;;;;;; -235132;1;0;false;false;0;0;0;;; -235133;1;0;false;false;;;;;; -235134;16;0;false;false;0;0;0;;; -235150;1;0;false;false;;;;;; -235151;1;0;false;false;0;0;0;;; -235152;5;0;false;false;;;;;; -235157;6;0;false;false;0;0;0;;; -235163;1;0;false;false;;;;;; -235164;1;0;false;false;0;0;0;;; -235165;1;0;false;false;;;;;; -235166;11;0;false;false;0;0;0;;; -235177;1;0;false;false;;;;;; -235178;5;0;false;false;0;0;0;;; -235183;1;0;false;false;;;;;; -235184;1;0;false;false;0;0;0;;; -235185;1;0;false;false;;;;;; -235186;17;0;false;false;0;0;0;;; -235203;4;0;false;false;;;;;; -235207;1;0;false;false;0;0;0;;; -235208;3;0;false;false;;;;;; -235211;1;0;false;false;0;0;0;;; -235212;3;0;false;false;;;;;; -235215;26;0;false;false;0;0;0;;; -235241;1;0;false;false;;;;;; -235242;1;0;false;false;0;0;0;;; -235243;1;0;false;false;;;;;; -235244;24;0;false;false;0;0;0;;; -235268;2;0;false;false;;;;;; -235270;1;0;false;false;0;0;0;;; -235271;2;0;false;false;;;;;; -235273;3;0;false;false;63;95;191;;; -235276;4;0;false;false;;;;;; -235280;1;0;false;false;63;95;191;;; -235281;1;0;false;false;;;;;; -235282;4;0;false;false;63;95;191;;; -235286;1;0;false;false;;;;;; -235287;3;0;false;false;63;95;191;;; -235290;1;0;false;false;;;;;; -235291;10;0;false;false;63;95;191;;; -235301;1;0;false;false;;;;;; -235302;5;0;false;false;63;95;191;;; -235307;1;0;false;false;;;;;; -235308;6;0;false;false;63;95;191;;; -235314;1;0;false;false;;;;;; -235315;8;0;false;false;63;95;191;;; -235323;1;0;false;false;;;;;; -235324;2;0;false;false;63;95;191;;; -235326;1;0;false;false;;;;;; -235327;3;0;false;false;63;95;191;;; -235330;1;0;false;false;;;;;; -235331;5;0;false;false;63;95;191;;; -235336;1;0;false;false;;;;;; -235337;2;0;false;false;63;95;191;;; -235339;1;0;false;false;;;;;; -235340;3;0;false;false;63;95;191;;; -235343;1;0;false;false;;;;;; -235344;5;0;false;false;63;95;191;;; -235349;3;0;false;false;;;;;; -235352;1;0;false;false;63;95;191;;; -235353;1;0;false;false;;;;;; -235354;2;0;false;false;63;95;191;;; -235356;1;0;false;false;;;;;; -235357;7;0;false;false;63;95;191;;; -235364;1;0;false;false;;;;;; -235365;2;0;false;false;63;95;191;;; -235367;1;0;false;false;;;;;; -235368;5;0;false;false;63;95;191;;; -235373;1;0;false;false;;;;;; -235374;2;0;false;false;63;95;191;;; -235376;1;0;false;false;;;;;; -235377;2;0;false;false;63;95;191;;; -235379;1;0;false;false;;;;;; -235380;4;0;false;false;63;95;191;;; -235384;1;0;false;false;;;;;; -235385;4;0;false;false;63;95;191;;; -235389;3;0;false;false;;;;;; -235392;1;0;false;false;63;95;191;;; -235393;1;0;false;false;;;;;; -235394;3;0;false;false;127;127;159;;; -235397;3;0;false;false;;;;;; -235400;1;0;false;false;63;95;191;;; -235401;1;0;false;false;;;;;; -235402;3;0;false;false;127;127;159;;; -235405;5;0;false;false;63;95;191;;; -235410;4;0;false;false;127;127;159;;; -235414;1;0;false;false;;;;;; -235415;3;0;false;false;63;95;191;;; -235418;1;0;false;false;;;;;; -235419;10;0;false;false;63;95;191;;; -235429;1;0;false;false;;;;;; -235430;5;0;false;false;63;95;191;;; -235435;1;0;false;false;;;;;; -235436;6;0;false;false;63;95;191;;; -235442;1;0;false;false;;;;;; -235443;2;0;false;false;63;95;191;;; -235445;1;0;false;false;;;;;; -235446;5;0;false;false;63;95;191;;; -235451;1;0;false;false;;;;;; -235452;2;0;false;false;63;95;191;;; -235454;1;0;false;false;;;;;; -235455;1;0;false;false;63;95;191;;; -235456;1;0;false;false;;;;;; -235457;4;0;false;false;63;95;191;;; -235461;1;0;false;false;;;;;; -235462;3;0;false;false;63;95;191;;; -235465;1;0;false;false;;;;;; -235466;4;0;false;false;63;95;191;;; -235470;4;0;false;false;;;;;; -235474;1;0;false;false;63;95;191;;; -235475;1;0;false;false;;;;;; -235476;2;0;false;false;63;95;191;;; -235478;1;0;false;false;;;;;; -235479;3;0;false;false;63;95;191;;; -235482;1;0;false;false;;;;;; -235483;2;0;false;false;63;95;191;;; -235485;1;0;false;false;;;;;; -235486;3;0;false;false;63;95;191;;; -235489;1;0;false;false;;;;;; -235490;7;0;false;false;63;95;191;;; -235497;3;0;false;false;;;;;; -235500;1;0;false;false;63;95;191;;; -235501;1;0;false;false;;;;;; -235502;4;0;false;false;127;127;159;;; -235506;3;0;false;false;;;;;; -235509;1;0;false;false;63;95;191;;; -235510;3;0;false;false;;;;;; -235513;1;0;false;false;63;95;191;;; -235514;1;0;false;false;;;;;; -235515;7;1;false;false;127;159;191;;; -235522;5;0;false;false;63;95;191;;; -235527;1;0;false;false;;;;;; -235528;10;0;false;false;63;95;191;;; -235538;1;0;false;false;;;;;; -235539;5;0;false;false;63;95;191;;; -235544;1;0;false;false;;;;;; -235545;6;0;false;false;63;95;191;;; -235551;1;0;false;false;;;;;; -235552;8;0;false;false;63;95;191;;; -235560;1;0;false;false;;;;;; -235561;2;0;false;false;63;95;191;;; -235563;1;0;false;false;;;;;; -235564;3;0;false;false;63;95;191;;; -235567;1;0;false;false;;;;;; -235568;5;0;false;false;63;95;191;;; -235573;4;0;false;false;;;;;; -235577;1;0;false;false;63;95;191;;; -235578;2;0;false;false;;;;;; -235580;2;0;false;false;63;95;191;;; -235582;1;0;false;false;;;;;; -235583;3;0;false;false;63;95;191;;; -235586;1;0;false;false;;;;;; -235587;5;0;false;false;63;95;191;;; -235592;3;0;false;false;;;;;; -235595;1;0;false;false;63;95;191;;; -235596;1;0;false;false;;;;;; -235597;11;1;false;false;127;159;191;;; -235608;12;0;false;false;63;95;191;;; -235620;1;0;false;false;;;;;; -235621;4;0;false;false;127;127;159;;; -235625;3;0;false;false;;;;;; -235628;1;0;false;false;63;95;191;;; -235629;4;0;false;false;;;;;; -235633;4;0;false;false;127;127;159;;; -235637;21;0;false;false;63;95;191;;; -235658;1;0;false;false;;;;;; -235659;1;0;false;false;127;127;159;;; -235660;1;0;false;false;;;;;; -235661;2;0;false;false;63;95;191;;; -235663;1;0;false;false;;;;;; -235664;3;0;false;false;63;95;191;;; -235667;1;0;false;false;;;;;; -235668;8;0;false;false;63;95;191;;; -235676;1;0;false;false;;;;;; -235677;3;0;false;false;63;95;191;;; -235680;1;0;false;false;;;;;; -235681;4;0;false;false;63;95;191;;; -235685;1;0;false;false;;;;;; -235686;8;0;false;false;63;95;191;;; -235694;5;0;false;false;127;127;159;;; -235699;3;0;false;false;;;;;; -235702;1;0;false;false;63;95;191;;; -235703;4;0;false;false;;;;;; -235707;4;0;false;false;127;127;159;;; -235711;27;0;false;false;63;95;191;;; -235738;1;0;false;false;;;;;; -235739;1;0;false;false;127;127;159;;; -235740;1;0;false;false;;;;;; -235741;2;0;false;false;63;95;191;;; -235743;1;0;false;false;;;;;; -235744;3;0;false;false;63;95;191;;; -235747;1;0;false;false;;;;;; -235748;6;0;false;false;63;95;191;;; -235754;1;0;false;false;;;;;; -235755;4;0;false;false;63;95;191;;; -235759;1;0;false;false;;;;;; -235760;3;0;false;false;63;95;191;;; -235763;1;0;false;false;;;;;; -235764;6;0;false;false;63;95;191;;; -235770;1;0;false;false;;;;;; -235771;4;0;false;false;63;95;191;;; -235775;1;0;false;false;;;;;; -235776;7;0;false;false;63;95;191;;; -235783;1;0;false;false;;;;;; -235784;3;0;false;false;63;95;191;;; -235787;1;0;false;false;;;;;; -235788;8;0;false;false;63;95;191;;; -235796;5;0;false;false;127;127;159;;; -235801;3;0;false;false;;;;;; -235804;1;0;false;false;63;95;191;;; -235805;1;0;false;false;;;;;; -235806;5;0;false;false;127;127;159;;; -235811;3;0;false;false;;;;;; -235814;1;0;false;false;63;95;191;;; -235815;1;0;false;false;;;;;; -235816;7;1;false;false;127;159;191;;; -235823;3;0;false;false;63;95;191;;; -235826;3;0;false;false;;;;;; -235829;2;0;false;false;63;95;191;;; -235831;2;0;false;false;;;;;; -235833;6;1;false;false;127;0;85;;; -235839;1;0;false;false;;;;;; -235840;4;1;false;false;127;0;85;;; -235844;1;0;false;false;;;;;; -235845;19;0;false;false;0;0;0;;; -235864;3;1;false;false;127;0;85;;; -235867;1;0;false;false;;;;;; -235868;6;0;false;false;0;0;0;;; -235874;1;0;false;false;;;;;; -235875;1;0;false;false;0;0;0;;; -235876;3;0;false;false;;;;;; -235879;14;0;false;false;0;0;0;;; -235893;3;0;false;false;;;;;; -235896;3;1;false;false;127;0;85;;; -235899;1;0;false;false;;;;;; -235900;15;0;false;false;0;0;0;;; -235915;1;0;false;false;;;;;; -235916;1;0;false;false;0;0;0;;; -235917;1;0;false;false;;;;;; -235918;22;0;false;false;0;0;0;;; -235940;3;0;false;false;;;;;; -235943;2;1;false;false;127;0;85;;; -235945;1;0;false;false;;;;;; -235946;15;0;false;false;0;0;0;;; -235961;1;0;false;false;;;;;; -235962;2;0;false;false;0;0;0;;; -235964;1;0;false;false;;;;;; -235965;2;0;false;false;0;0;0;;; -235967;1;0;false;false;;;;;; -235968;1;0;false;false;0;0;0;;; -235969;4;0;false;false;;;;;; -235973;6;1;false;false;127;0;85;;; -235979;1;0;false;false;0;0;0;;; -235980;3;0;false;false;;;;;; -235983;1;0;false;false;0;0;0;;; -235984;4;0;false;false;;;;;; -235988;2;1;false;false;127;0;85;;; -235990;1;0;false;false;;;;;; -235991;6;0;false;false;0;0;0;;; -235997;1;0;false;false;;;;;; -235998;1;0;false;false;0;0;0;;; -235999;1;0;false;false;;;;;; -236000;2;0;false;false;0;0;0;;; -236002;1;0;false;false;;;;;; -236003;1;0;false;false;0;0;0;;; -236004;4;0;false;false;;;;;; -236008;5;0;false;false;0;0;0;;; -236013;1;0;false;false;;;;;; -236014;1;0;false;false;0;0;0;;; -236015;1;0;false;false;;;;;; -236016;2;0;false;false;0;0;0;;; -236018;3;0;false;false;;;;;; -236021;1;0;false;false;0;0;0;;; -236022;3;0;false;false;;;;;; -236025;59;0;false;false;63;127;95;;; -236084;1;0;false;false;;;;;; -236085;46;0;false;false;63;127;95;;; -236131;1;0;false;false;;;;;; -236132;61;0;false;false;63;127;95;;; -236193;1;0;false;false;;;;;; -236194;29;0;false;false;63;127;95;;; -236223;1;0;false;false;;;;;; -236224;2;1;false;false;127;0;85;;; -236226;1;0;false;false;;;;;; -236227;16;0;false;false;0;0;0;;; -236243;1;0;false;false;;;;;; -236244;1;0;false;false;0;0;0;;; -236245;1;0;false;false;;;;;; -236246;2;0;false;false;0;0;0;;; -236248;1;0;false;false;;;;;; -236249;1;0;false;false;0;0;0;;; -236250;4;0;false;false;;;;;; -236254;3;1;false;false;127;0;85;;; -236257;1;0;false;false;;;;;; -236258;5;0;false;false;0;0;0;;; -236263;1;0;false;false;;;;;; -236264;1;0;false;false;0;0;0;;; -236265;1;0;false;false;;;;;; -236266;21;0;false;false;0;0;0;;; -236287;4;0;false;false;;;;;; -236291;62;0;false;false;63;127;95;;; -236353;2;0;false;false;;;;;; -236355;63;0;false;false;63;127;95;;; -236418;2;0;false;false;;;;;; -236420;31;0;false;false;63;127;95;;; -236451;2;0;false;false;;;;;; -236453;2;1;false;false;127;0;85;;; -236455;1;0;false;false;;;;;; -236456;6;0;false;false;0;0;0;;; -236462;1;0;false;false;;;;;; -236463;1;0;false;false;0;0;0;;; -236464;1;0;false;false;;;;;; -236465;5;0;false;false;0;0;0;;; -236470;1;0;false;false;;;;;; -236471;1;0;false;false;0;0;0;;; -236472;1;0;false;false;;;;;; -236473;16;0;false;false;0;0;0;;; -236489;1;0;false;false;;;;;; -236490;1;0;false;false;0;0;0;;; -236491;5;0;false;false;;;;;; -236496;5;0;false;false;0;0;0;;; -236501;1;0;false;false;;;;;; -236502;1;0;false;false;0;0;0;;; -236503;1;0;false;false;;;;;; -236504;11;0;false;false;0;0;0;;; -236515;1;0;false;false;;;;;; -236516;5;0;false;false;0;0;0;;; -236521;1;0;false;false;;;;;; -236522;1;0;false;false;0;0;0;;; -236523;1;0;false;false;;;;;; -236524;17;0;false;false;0;0;0;;; -236541;4;0;false;false;;;;;; -236545;1;0;false;false;0;0;0;;; -236546;3;0;false;false;;;;;; -236549;1;0;false;false;0;0;0;;; -236550;3;0;false;false;;;;;; -236553;25;0;false;false;0;0;0;;; -236578;1;0;false;false;;;;;; -236579;1;0;false;false;0;0;0;;; -236580;1;0;false;false;;;;;; -236581;24;0;false;false;0;0;0;;; -236605;2;0;false;false;;;;;; -236607;1;0;false;false;0;0;0;;; -236608;2;0;false;false;;;;;; -236610;3;0;false;false;63;95;191;;; -236613;3;0;false;false;;;;;; -236616;1;0;false;false;63;95;191;;; -236617;1;0;false;false;;;;;; -236618;7;0;false;false;63;95;191;;; -236625;1;0;false;false;;;;;; -236626;3;0;false;false;63;95;191;;; -236629;1;0;false;false;;;;;; -236630;7;0;false;false;63;95;191;;; -236637;1;0;false;false;;;;;; -236638;3;0;false;false;63;95;191;;; -236641;1;0;false;false;;;;;; -236642;3;0;false;false;63;95;191;;; -236645;1;0;false;false;;;;;; -236646;4;0;false;false;63;95;191;;; -236650;1;0;false;false;;;;;; -236651;4;0;false;false;63;95;191;;; -236655;1;0;false;false;;;;;; -236656;2;0;false;false;63;95;191;;; -236658;1;0;false;false;;;;;; -236659;3;0;false;false;63;95;191;;; -236662;1;0;false;false;;;;;; -236663;10;0;false;false;63;95;191;;; -236673;1;0;false;false;;;;;; -236674;6;0;false;false;63;95;191;;; -236680;1;0;false;false;;;;;; -236681;3;0;false;false;63;95;191;;; -236684;4;0;false;false;;;;;; -236688;1;0;false;false;63;95;191;;; -236689;1;0;false;false;;;;;; -236690;2;0;false;false;63;95;191;;; -236692;1;0;false;false;;;;;; -236693;7;0;false;false;63;95;191;;; -236700;1;0;false;false;;;;;; -236701;7;0;false;false;63;95;191;;; -236708;1;0;false;false;;;;;; -236709;5;0;false;false;63;95;191;;; -236714;1;0;false;false;;;;;; -236715;8;0;false;false;63;95;191;;; -236723;3;0;false;false;;;;;; -236726;2;0;false;false;63;95;191;;; -236728;2;0;false;false;;;;;; -236730;4;1;false;false;127;0;85;;; -236734;1;0;false;false;;;;;; -236735;24;0;false;false;0;0;0;;; -236759;1;0;false;false;;;;;; -236760;1;0;false;false;0;0;0;;; -236761;3;0;false;false;;;;;; -236764;9;0;false;false;0;0;0;;; -236773;1;0;false;false;;;;;; -236774;13;0;false;false;0;0;0;;; -236787;1;0;false;false;;;;;; -236788;1;0;false;false;0;0;0;;; -236789;1;0;false;false;;;;;; -236790;19;0;false;false;0;0;0;;; -236809;6;0;false;false;;;;;; -236815;2;1;false;false;127;0;85;;; -236817;1;0;false;false;;;;;; -236818;14;0;false;false;0;0;0;;; -236832;1;0;false;false;;;;;; -236833;2;0;false;false;0;0;0;;; -236835;1;0;false;false;;;;;; -236836;4;1;false;false;127;0;85;;; -236840;1;0;false;false;;;;;; -236841;2;0;false;false;0;0;0;;; -236843;1;0;false;false;;;;;; -236844;27;0;false;false;0;0;0;;; -236871;1;0;false;false;;;;;; -236872;1;0;false;false;0;0;0;;; -236873;4;0;false;false;;;;;; -236877;5;1;false;false;127;0;85;;; -236882;1;0;false;false;;;;;; -236883;3;1;false;false;127;0;85;;; -236886;1;0;false;false;;;;;; -236887;8;0;false;false;0;0;0;;; -236895;1;0;false;false;;;;;; -236896;1;0;false;false;0;0;0;;; -236897;1;0;false;false;;;;;; -236898;2;0;false;false;0;0;0;;; -236900;4;0;false;false;;;;;; -236904;9;0;false;false;0;0;0;;; -236913;1;0;false;false;;;;;; -236914;10;0;false;false;0;0;0;;; -236924;1;0;false;false;;;;;; -236925;1;0;false;false;0;0;0;;; -236926;1;0;false;false;;;;;; -236927;16;0;false;false;0;0;0;;; -236943;4;0;false;false;;;;;; -236947;60;0;false;false;63;127;95;;; -237007;2;0;false;false;;;;;; -237009;65;0;false;false;63;127;95;;; -237074;2;0;false;false;;;;;; -237076;56;0;false;false;63;127;95;;; -237132;2;0;false;false;;;;;; -237134;2;1;false;false;127;0;85;;; -237136;1;0;false;false;;;;;; -237137;17;0;false;false;0;0;0;;; -237154;1;0;false;false;;;;;; -237155;1;0;false;false;0;0;0;;; -237156;1;0;false;false;;;;;; -237157;21;0;false;false;0;0;0;;; -237178;1;0;false;false;;;;;; -237179;1;0;false;false;0;0;0;;; -237180;5;0;false;false;;;;;; -237185;24;0;false;false;0;0;0;;; -237209;6;0;false;false;;;;;; -237215;29;0;false;false;0;0;0;;; -237244;6;0;false;false;;;;;; -237250;27;0;false;false;0;0;0;;; -237277;6;0;false;false;;;;;; -237283;21;0;false;false;0;0;0;;; -237304;7;0;false;false;;;;;; -237311;12;0;false;false;63;127;95;;; -237323;4;0;false;false;;;;;; -237327;16;0;false;false;0;0;0;;; -237343;1;0;false;false;;;;;; -237344;1;0;false;false;0;0;0;;; -237345;1;0;false;false;;;;;; -237346;10;0;false;false;0;0;0;;; -237356;1;0;false;false;;;;;; -237357;1;0;false;false;0;0;0;;; -237358;1;0;false;false;;;;;; -237359;12;0;false;false;0;0;0;;; -237371;1;0;false;false;;;;;; -237372;15;0;false;false;63;127;95;;; -237387;4;0;false;false;;;;;; -237391;29;0;false;false;0;0;0;;; -237420;6;0;false;false;;;;;; -237426;16;0;false;false;0;0;0;;; -237442;1;0;false;false;;;;;; -237443;1;0;false;false;0;0;0;;; -237444;1;0;false;false;;;;;; -237445;10;0;false;false;0;0;0;;; -237455;1;0;false;false;;;;;; -237456;1;0;false;false;0;0;0;;; -237457;1;0;false;false;;;;;; -237458;13;0;false;false;0;0;0;;; -237471;1;0;false;false;;;;;; -237472;14;0;false;false;63;127;95;;; -237486;2;0;false;false;;;;;; -237488;1;0;false;false;0;0;0;;; -237489;4;0;false;false;;;;;; -237493;4;1;false;false;127;0;85;;; -237497;5;0;false;false;;;;;; -237502;2;1;false;false;127;0;85;;; -237504;1;0;false;false;;;;;; -237505;25;0;false;false;0;0;0;;; -237530;1;0;false;false;;;;;; -237531;2;0;false;false;0;0;0;;; -237533;1;0;false;false;;;;;; -237534;8;0;false;false;0;0;0;;; -237542;1;0;false;false;;;;;; -237543;2;0;false;false;0;0;0;;; -237545;1;0;false;false;;;;;; -237546;26;0;false;false;0;0;0;;; -237572;1;0;false;false;;;;;; -237573;2;0;false;false;0;0;0;;; -237575;1;0;false;false;;;;;; -237576;9;0;false;false;0;0;0;;; -237585;1;0;false;false;;;;;; -237586;1;0;false;false;0;0;0;;; -237587;5;0;false;false;;;;;; -237592;24;0;false;false;0;0;0;;; -237616;6;0;false;false;;;;;; -237622;29;0;false;false;0;0;0;;; -237651;6;0;false;false;;;;;; -237657;27;0;false;false;0;0;0;;; -237684;6;0;false;false;;;;;; -237690;9;0;false;false;0;0;0;;; -237699;6;0;false;false;;;;;; -237705;9;0;false;false;0;0;0;;; -237714;6;0;false;false;;;;;; -237720;29;0;false;false;0;0;0;;; -237749;6;0;false;false;;;;;; -237755;10;0;false;false;0;0;0;;; -237765;4;0;false;false;;;;;; -237769;1;0;false;false;0;0;0;;; -237770;3;0;false;false;;;;;; -237773;1;0;false;false;0;0;0;;; -237774;2;0;false;false;;;;;; -237776;1;0;false;false;0;0;0;;; -237777;2;0;false;false;;;;;; -237779;3;0;false;false;63;95;191;;; -237782;4;0;false;false;;;;;; -237786;1;0;false;false;63;95;191;;; -237787;1;0;false;false;;;;;; -237788;4;0;false;false;63;95;191;;; -237792;1;0;false;false;;;;;; -237793;3;0;false;false;63;95;191;;; -237796;1;0;false;false;;;;;; -237797;10;0;false;false;63;95;191;;; -237807;1;0;false;false;;;;;; -237808;5;0;false;false;63;95;191;;; -237813;1;0;false;false;;;;;; -237814;2;0;false;false;63;95;191;;; -237816;1;0;false;false;;;;;; -237817;3;0;false;false;63;95;191;;; -237820;1;0;false;false;;;;;; -237821;9;0;false;false;63;95;191;;; -237830;1;0;false;false;;;;;; -237831;6;0;false;false;63;95;191;;; -237837;3;0;false;false;;;;;; -237840;1;0;false;false;63;95;191;;; -237841;1;0;false;false;;;;;; -237842;3;0;false;false;63;95;191;;; -237845;1;0;false;false;;;;;; -237846;10;0;false;false;63;95;191;;; -237856;1;0;false;false;;;;;; -237857;5;0;false;false;63;95;191;;; -237862;1;0;false;false;;;;;; -237863;2;0;false;false;63;95;191;;; -237865;1;0;false;false;;;;;; -237866;5;0;false;false;63;95;191;;; -237871;1;0;false;false;;;;;; -237872;3;0;false;false;63;95;191;;; -237875;1;0;false;false;;;;;; -237876;3;0;false;false;63;95;191;;; -237879;1;0;false;false;;;;;; -237880;5;0;false;false;63;95;191;;; -237885;1;0;false;false;;;;;; -237886;2;0;false;false;63;95;191;;; -237888;1;0;false;false;;;;;; -237889;3;0;false;false;63;95;191;;; -237892;1;0;false;false;;;;;; -237893;7;0;false;false;63;95;191;;; -237900;1;0;false;false;;;;;; -237901;3;0;false;false;63;95;191;;; -237904;3;0;false;false;;;;;; -237907;1;0;false;false;63;95;191;;; -237908;1;0;false;false;;;;;; -237909;4;0;false;false;63;95;191;;; -237913;1;0;false;false;;;;;; -237914;10;0;false;false;63;95;191;;; -237924;1;0;false;false;;;;;; -237925;6;0;false;false;63;95;191;;; -237931;1;0;false;false;;;;;; -237932;3;0;false;false;63;95;191;;; -237935;1;0;false;false;;;;;; -237936;9;0;false;false;63;95;191;;; -237945;1;0;false;false;;;;;; -237946;4;0;false;false;63;95;191;;; -237950;1;0;false;false;;;;;; -237951;7;0;false;false;63;95;191;;; -237958;1;0;false;false;;;;;; -237959;2;0;false;false;63;95;191;;; -237961;1;0;false;false;;;;;; -237962;7;0;false;false;63;95;191;;; -237969;3;0;false;false;;;;;; -237972;1;0;false;false;63;95;191;;; -237973;1;0;false;false;;;;;; -237974;3;0;false;false;63;95;191;;; -237977;1;0;false;false;;;;;; -237978;4;0;false;false;63;95;191;;; -237982;1;0;false;false;;;;;; -237983;10;0;false;false;63;95;191;;; -237993;1;0;false;false;;;;;; -237994;5;0;false;false;63;95;191;;; -237999;1;0;false;false;;;;;; -238000;2;0;false;false;63;95;191;;; -238002;1;0;false;false;;;;;; -238003;7;0;false;false;63;95;191;;; -238010;1;0;false;false;;;;;; -238011;2;0;false;false;63;95;191;;; -238013;1;0;false;false;;;;;; -238014;1;0;false;false;63;95;191;;; -238015;1;0;false;false;;;;;; -238016;10;0;false;false;63;95;191;;; -238026;1;0;false;false;;;;;; -238027;8;0;false;false;63;95;191;;; -238035;1;0;false;false;;;;;; -238036;3;0;false;false;63;95;191;;; -238039;4;0;false;false;;;;;; -238043;1;0;false;false;63;95;191;;; -238044;1;0;false;false;;;;;; -238045;4;0;false;false;63;95;191;;; -238049;1;0;false;false;;;;;; -238050;10;0;false;false;63;95;191;;; -238060;1;0;false;false;;;;;; -238061;6;0;false;false;63;95;191;;; -238067;1;0;false;false;;;;;; -238068;6;0;false;false;63;95;191;;; -238074;1;0;false;false;;;;;; -238075;3;0;false;false;63;95;191;;; -238078;1;0;false;false;;;;;; -238079;2;0;false;false;63;95;191;;; -238081;1;0;false;false;;;;;; -238082;6;0;false;false;63;95;191;;; -238088;1;0;false;false;;;;;; -238089;2;0;false;false;63;95;191;;; -238091;1;0;false;false;;;;;; -238092;1;0;false;false;63;95;191;;; -238093;1;0;false;false;;;;;; -238094;22;0;false;false;63;95;191;;; -238116;4;0;false;false;;;;;; -238120;1;0;false;false;63;95;191;;; -238121;1;0;false;false;;;;;; -238122;3;0;false;false;63;95;191;;; -238125;1;0;false;false;;;;;; -238126;4;0;false;false;63;95;191;;; -238130;1;0;false;false;;;;;; -238131;3;0;false;false;63;95;191;;; -238134;1;0;false;false;;;;;; -238135;5;0;false;false;63;95;191;;; -238140;1;0;false;false;;;;;; -238141;3;0;false;false;63;95;191;;; -238144;1;0;false;false;;;;;; -238145;8;0;false;false;63;95;191;;; -238153;1;0;false;false;;;;;; -238154;9;0;false;false;63;95;191;;; -238163;1;0;false;false;;;;;; -238164;3;0;false;false;63;95;191;;; -238167;1;0;false;false;;;;;; -238168;4;0;false;false;63;95;191;;; -238172;1;0;false;false;;;;;; -238173;12;0;false;false;63;95;191;;; -238185;3;0;false;false;;;;;; -238188;1;0;false;false;63;95;191;;; -238189;1;0;false;false;;;;;; -238190;3;0;false;false;127;127;159;;; -238193;3;0;false;false;;;;;; -238196;1;0;false;false;63;95;191;;; -238197;1;0;false;false;;;;;; -238198;4;0;false;false;63;95;191;;; -238202;1;0;false;false;;;;;; -238203;10;0;false;false;63;95;191;;; -238213;1;0;false;false;;;;;; -238214;6;0;false;false;63;95;191;;; -238220;1;0;false;false;;;;;; -238221;3;0;false;false;63;95;191;;; -238224;1;0;false;false;;;;;; -238225;10;0;false;false;63;95;191;;; -238235;1;0;false;false;;;;;; -238236;8;0;false;false;63;95;191;;; -238244;1;0;false;false;;;;;; -238245;2;0;false;false;63;95;191;;; -238247;1;0;false;false;;;;;; -238248;3;0;false;false;63;95;191;;; -238251;1;0;false;false;;;;;; -238252;4;0;false;false;63;95;191;;; -238256;1;0;false;false;;;;;; -238257;5;0;false;false;63;95;191;;; -238262;1;0;false;false;;;;;; -238263;3;0;false;false;63;95;191;;; -238266;1;0;false;false;;;;;; -238267;3;0;false;false;63;95;191;;; -238270;4;0;false;false;;;;;; -238274;1;0;false;false;63;95;191;;; -238275;1;0;false;false;;;;;; -238276;4;0;false;false;63;95;191;;; -238280;1;0;false;false;;;;;; -238281;5;0;false;false;63;95;191;;; -238286;1;0;false;false;;;;;; -238287;4;0;false;false;63;95;191;;; -238291;1;0;false;false;;;;;; -238292;2;0;false;false;63;95;191;;; -238294;1;0;false;false;;;;;; -238295;9;0;false;false;63;95;191;;; -238304;1;0;false;false;;;;;; -238305;2;0;false;false;63;95;191;;; -238307;1;0;false;false;;;;;; -238308;4;0;false;false;63;95;191;;; -238312;1;0;false;false;;;;;; -238313;6;0;false;false;63;95;191;;; -238319;1;0;false;false;;;;;; -238320;5;0;false;false;63;95;191;;; -238325;3;0;false;false;;;;;; -238328;1;0;false;false;63;95;191;;; -238329;1;0;false;false;;;;;; -238330;6;0;false;false;63;95;191;;; -238336;1;0;false;false;;;;;; -238337;4;0;false;false;63;95;191;;; -238341;1;0;false;false;;;;;; -238342;8;0;false;false;63;95;191;;; -238350;1;0;false;false;;;;;; -238351;4;0;false;false;63;95;191;;; -238355;1;0;false;false;;;;;; -238356;6;0;false;false;63;95;191;;; -238362;1;0;false;false;;;;;; -238363;5;0;false;false;63;95;191;;; -238368;1;0;false;false;;;;;; -238369;3;0;false;false;63;95;191;;; -238372;1;0;false;false;;;;;; -238373;8;0;false;false;63;95;191;;; -238381;1;0;false;false;;;;;; -238382;2;0;false;false;63;95;191;;; -238384;1;0;false;false;;;;;; -238385;8;0;false;false;63;95;191;;; -238393;1;0;false;false;;;;;; -238394;3;0;false;false;63;95;191;;; -238397;1;0;false;false;;;;;; -238398;4;0;false;false;63;95;191;;; -238402;4;0;false;false;;;;;; -238406;1;0;false;false;63;95;191;;; -238407;1;0;false;false;;;;;; -238408;10;0;false;false;63;95;191;;; -238418;1;0;false;false;;;;;; -238419;6;0;false;false;63;95;191;;; -238425;1;0;false;false;;;;;; -238426;4;0;false;false;63;95;191;;; -238430;1;0;false;false;;;;;; -238431;3;0;false;false;63;95;191;;; -238434;1;0;false;false;;;;;; -238435;10;0;false;false;63;95;191;;; -238445;1;0;false;false;;;;;; -238446;4;0;false;false;63;95;191;;; -238450;1;0;false;false;;;;;; -238451;3;0;false;false;63;95;191;;; -238454;1;0;false;false;;;;;; -238455;5;0;false;false;63;95;191;;; -238460;1;0;false;false;;;;;; -238461;5;0;false;false;63;95;191;;; -238466;1;0;false;false;;;;;; -238467;3;0;false;false;63;95;191;;; -238470;1;0;false;false;;;;;; -238471;6;0;false;false;63;95;191;;; -238477;4;0;false;false;;;;;; -238481;1;0;false;false;63;95;191;;; -238482;1;0;false;false;;;;;; -238483;4;0;false;false;63;95;191;;; -238487;1;0;false;false;;;;;; -238488;6;0;false;false;63;95;191;;; -238494;1;0;false;false;;;;;; -238495;4;0;false;false;63;95;191;;; -238499;1;0;false;false;;;;;; -238500;5;0;false;false;63;95;191;;; -238505;1;0;false;false;;;;;; -238506;10;0;false;false;63;95;191;;; -238516;1;0;false;false;;;;;; -238517;5;0;false;false;63;95;191;;; -238522;1;0;false;false;;;;;; -238523;2;0;false;false;63;95;191;;; -238525;1;0;false;false;;;;;; -238526;6;0;false;false;63;95;191;;; -238532;1;0;false;false;;;;;; -238533;4;0;false;false;63;95;191;;; -238537;1;0;false;false;;;;;; -238538;2;0;false;false;63;95;191;;; -238540;1;0;false;false;;;;;; -238541;7;0;false;false;63;95;191;;; -238548;1;0;false;false;;;;;; -238549;2;0;false;false;63;95;191;;; -238551;4;0;false;false;;;;;; -238555;1;0;false;false;63;95;191;;; -238556;1;0;false;false;;;;;; -238557;9;0;false;false;63;95;191;;; -238566;1;0;false;false;;;;;; -238567;4;0;false;false;63;95;191;;; -238571;1;0;false;false;;;;;; -238572;3;0;false;false;63;95;191;;; -238575;1;0;false;false;;;;;; -238576;5;0;false;false;63;95;191;;; -238581;1;0;false;false;;;;;; -238582;9;0;false;false;63;95;191;;; -238591;1;0;false;false;;;;;; -238592;2;0;false;false;63;95;191;;; -238594;1;0;false;false;;;;;; -238595;1;0;false;false;63;95;191;;; -238596;1;0;false;false;;;;;; -238597;4;0;false;false;63;95;191;;; -238601;1;0;false;false;;;;;; -238602;2;0;false;false;63;95;191;;; -238604;1;0;false;false;;;;;; -238605;3;0;false;false;63;95;191;;; -238608;1;0;false;false;;;;;; -238609;4;0;false;false;63;95;191;;; -238613;1;0;false;false;;;;;; -238614;3;0;false;false;63;95;191;;; -238617;1;0;false;false;;;;;; -238618;9;0;false;false;63;95;191;;; -238627;1;0;false;false;;;;;; -238628;3;0;false;false;63;95;191;;; -238631;4;0;false;false;;;;;; -238635;1;0;false;false;63;95;191;;; -238636;1;0;false;false;;;;;; -238637;4;0;false;false;63;95;191;;; -238641;1;0;false;false;;;;;; -238642;10;0;false;false;63;95;191;;; -238652;4;0;false;false;;;;;; -238656;1;0;false;false;63;95;191;;; -238657;1;0;false;false;;;;;; -238658;4;0;false;false;127;127;159;;; -238662;3;0;false;false;;;;;; -238665;1;0;false;false;63;95;191;;; -238666;1;0;false;false;;;;;; -238667;3;0;false;false;127;127;159;;; -238670;3;0;false;false;;;;;; -238673;1;0;false;false;63;95;191;;; -238674;1;0;false;false;;;;;; -238675;4;0;false;false;63;95;191;;; -238679;1;0;false;false;;;;;; -238680;3;0;false;false;63;95;191;;; -238683;1;0;false;false;;;;;; -238684;5;0;false;false;63;95;191;;; -238689;1;0;false;false;;;;;; -238690;3;0;false;false;63;95;191;;; -238693;1;0;false;false;;;;;; -238694;6;0;false;false;63;95;191;;; -238700;1;0;false;false;;;;;; -238701;2;0;false;false;63;95;191;;; -238703;1;0;false;false;;;;;; -238704;8;0;false;false;63;95;191;;; -238712;1;0;false;false;;;;;; -238713;1;0;false;false;63;95;191;;; -238714;1;0;false;false;;;;;; -238715;4;0;false;false;63;95;191;;; -238719;1;0;false;false;;;;;; -238720;10;0;false;false;63;95;191;;; -238730;1;0;false;false;;;;;; -238731;3;0;false;false;63;95;191;;; -238734;1;0;false;false;;;;;; -238735;3;0;false;false;63;95;191;;; -238738;1;0;false;false;;;;;; -238739;4;0;false;false;63;95;191;;; -238743;4;0;false;false;;;;;; -238747;1;0;false;false;63;95;191;;; -238748;1;0;false;false;;;;;; -238749;10;0;false;false;63;95;191;;; -238759;1;0;false;false;;;;;; -238760;5;0;false;false;63;95;191;;; -238765;1;0;false;false;;;;;; -238766;10;0;false;false;63;95;191;;; -238776;1;0;false;false;;;;;; -238777;3;0;false;false;63;95;191;;; -238780;1;0;false;false;;;;;; -238781;3;0;false;false;63;95;191;;; -238784;1;0;false;false;;;;;; -238785;5;0;false;false;63;95;191;;; -238790;1;0;false;false;;;;;; -238791;2;0;false;false;63;95;191;;; -238793;1;0;false;false;;;;;; -238794;3;0;false;false;63;95;191;;; -238797;1;0;false;false;;;;;; -238798;6;0;false;false;63;95;191;;; -238804;1;0;false;false;;;;;; -238805;4;0;false;false;63;95;191;;; -238809;1;0;false;false;;;;;; -238810;2;0;false;false;63;95;191;;; -238812;1;0;false;false;;;;;; -238813;8;0;false;false;63;95;191;;; -238821;4;0;false;false;;;;;; -238825;1;0;false;false;63;95;191;;; -238826;1;0;false;false;;;;;; -238827;3;0;false;false;63;95;191;;; -238830;1;0;false;false;;;;;; -238831;3;0;false;false;63;95;191;;; -238834;1;0;false;false;;;;;; -238835;5;0;false;false;63;95;191;;; -238840;1;0;false;false;;;;;; -238841;4;0;false;false;63;95;191;;; -238845;1;0;false;false;;;;;; -238846;7;0;false;false;63;95;191;;; -238853;1;0;false;false;;;;;; -238854;4;0;false;false;63;95;191;;; -238858;1;0;false;false;;;;;; -238859;10;0;false;false;63;95;191;;; -238869;1;0;false;false;;;;;; -238870;6;0;false;false;63;95;191;;; -238876;1;0;false;false;;;;;; -238877;4;0;false;false;63;95;191;;; -238881;1;0;false;false;;;;;; -238882;6;0;false;false;63;95;191;;; -238888;1;0;false;false;;;;;; -238889;10;0;false;false;63;95;191;;; -238899;4;0;false;false;;;;;; -238903;1;0;false;false;63;95;191;;; -238904;1;0;false;false;;;;;; -238905;4;0;false;false;127;127;159;;; -238909;3;0;false;false;;;;;; -238912;1;0;false;false;63;95;191;;; -238913;4;0;false;false;;;;;; -238917;1;0;false;false;63;95;191;;; -238918;1;0;false;false;;;;;; -238919;7;1;false;false;127;159;191;;; -238926;9;0;false;false;63;95;191;;; -238935;1;0;false;false;;;;;; -238936;5;0;false;false;63;95;191;;; -238941;1;0;false;false;;;;;; -238942;4;0;false;false;63;95;191;;; -238946;1;0;false;false;;;;;; -238947;3;0;false;false;63;95;191;;; -238950;1;0;false;false;;;;;; -238951;5;0;false;false;63;95;191;;; -238956;1;0;false;false;;;;;; -238957;2;0;false;false;63;95;191;;; -238959;1;0;false;false;;;;;; -238960;7;0;false;false;63;95;191;;; -238967;1;0;false;false;;;;;; -238968;3;0;false;false;63;95;191;;; -238971;1;0;false;false;;;;;; -238972;1;0;false;false;63;95;191;;; -238973;1;0;false;false;;;;;; -238974;5;0;false;false;63;95;191;;; -238979;3;0;false;false;;;;;; -238982;1;0;false;false;63;95;191;;; -238983;1;0;false;false;;;;;; -238984;7;1;false;false;127;159;191;;; -238991;9;0;false;false;63;95;191;;; -239000;1;0;false;false;;;;;; -239001;6;0;false;false;63;95;191;;; -239007;1;0;false;false;;;;;; -239008;2;0;false;false;63;95;191;;; -239010;1;0;false;false;;;;;; -239011;5;0;false;false;63;95;191;;; -239016;1;0;false;false;;;;;; -239017;3;0;false;false;63;95;191;;; -239020;1;0;false;false;;;;;; -239021;5;0;false;false;63;95;191;;; -239026;1;0;false;false;;;;;; -239027;7;0;false;false;63;95;191;;; -239034;1;0;false;false;;;;;; -239035;3;0;false;false;63;95;191;;; -239038;3;0;false;false;;;;;; -239041;1;0;false;false;63;95;191;;; -239042;1;0;false;false;;;;;; -239043;7;1;false;false;127;159;191;;; -239050;10;0;false;false;63;95;191;;; -239060;1;0;false;false;;;;;; -239061;4;0;false;false;63;95;191;;; -239065;1;0;false;false;;;;;; -239066;10;0;false;false;63;95;191;;; -239076;1;0;false;false;;;;;; -239077;5;0;false;false;63;95;191;;; -239082;3;0;false;false;;;;;; -239085;1;0;false;false;63;95;191;;; -239086;1;0;false;false;;;;;; -239087;11;1;false;false;127;159;191;;; -239098;12;0;false;false;63;95;191;;; -239110;1;0;false;false;;;;;; -239111;4;0;false;false;127;127;159;;; -239115;3;0;false;false;;;;;; -239118;1;0;false;false;63;95;191;;; -239119;4;0;false;false;;;;;; -239123;4;0;false;false;127;127;159;;; -239127;21;0;false;false;63;95;191;;; -239148;1;0;false;false;;;;;; -239149;1;0;false;false;127;127;159;;; -239150;1;0;false;false;;;;;; -239151;2;0;false;false;63;95;191;;; -239153;1;0;false;false;;;;;; -239154;3;0;false;false;63;95;191;;; -239157;1;0;false;false;;;;;; -239158;8;0;false;false;63;95;191;;; -239166;1;0;false;false;;;;;; -239167;3;0;false;false;63;95;191;;; -239170;1;0;false;false;;;;;; -239171;4;0;false;false;63;95;191;;; -239175;1;0;false;false;;;;;; -239176;8;0;false;false;63;95;191;;; -239184;5;0;false;false;127;127;159;;; -239189;3;0;false;false;;;;;; -239192;1;0;false;false;63;95;191;;; -239193;4;0;false;false;;;;;; -239197;4;0;false;false;127;127;159;;; -239201;27;0;false;false;63;95;191;;; -239228;1;0;false;false;;;;;; -239229;1;0;false;false;127;127;159;;; -239230;1;0;false;false;;;;;; -239231;2;0;false;false;63;95;191;;; -239233;1;0;false;false;;;;;; -239234;3;0;false;false;63;95;191;;; -239237;1;0;false;false;;;;;; -239238;6;0;false;false;63;95;191;;; -239244;1;0;false;false;;;;;; -239245;4;0;false;false;63;95;191;;; -239249;1;0;false;false;;;;;; -239250;3;0;false;false;63;95;191;;; -239253;1;0;false;false;;;;;; -239254;6;0;false;false;63;95;191;;; -239260;1;0;false;false;;;;;; -239261;4;0;false;false;63;95;191;;; -239265;1;0;false;false;;;;;; -239266;7;0;false;false;63;95;191;;; -239273;1;0;false;false;;;;;; -239274;3;0;false;false;63;95;191;;; -239277;1;0;false;false;;;;;; -239278;8;0;false;false;63;95;191;;; -239286;5;0;false;false;127;127;159;;; -239291;3;0;false;false;;;;;; -239294;1;0;false;false;63;95;191;;; -239295;1;0;false;false;;;;;; -239296;5;0;false;false;127;127;159;;; -239301;3;0;false;false;;;;;; -239304;1;0;false;false;63;95;191;;; -239305;1;0;false;false;;;;;; -239306;11;1;false;false;127;159;191;;; -239317;24;0;false;false;63;95;191;;; -239341;1;0;false;false;;;;;; -239342;4;0;false;false;127;127;159;;; -239346;3;0;false;false;;;;;; -239349;1;0;false;false;63;95;191;;; -239350;3;0;false;false;;;;;; -239353;4;0;false;false;127;127;159;;; -239357;22;0;false;false;63;95;191;;; -239379;1;0;false;false;;;;;; -239380;4;0;false;false;63;95;191;;; -239384;1;0;false;false;;;;;; -239385;3;0;false;false;63;95;191;;; -239388;1;0;false;false;;;;;; -239389;9;0;false;false;63;95;191;;; -239398;1;0;false;false;;;;;; -239399;4;0;false;false;63;95;191;;; -239403;1;0;false;false;;;;;; -239404;5;0;false;false;63;95;191;;; -239409;1;0;false;false;;;;;; -239410;2;0;false;false;63;95;191;;; -239412;1;0;false;false;;;;;; -239413;7;0;false;false;63;95;191;;; -239420;5;0;false;false;127;127;159;;; -239425;3;0;false;false;;;;;; -239428;1;0;false;false;63;95;191;;; -239429;1;0;false;false;;;;;; -239430;5;0;false;false;127;127;159;;; -239435;3;0;false;false;;;;;; -239438;2;0;false;false;63;95;191;;; -239440;2;0;false;false;;;;;; -239442;6;1;false;false;127;0;85;;; -239448;1;0;false;false;;;;;; -239449;4;1;false;false;127;0;85;;; -239453;1;0;false;false;;;;;; -239454;18;0;false;false;0;0;0;;; -239472;3;1;false;false;127;0;85;;; -239475;1;0;false;false;;;;;; -239476;10;0;false;false;0;0;0;;; -239486;1;0;false;false;;;;;; -239487;3;1;false;false;127;0;85;;; -239490;1;0;false;false;;;;;; -239491;10;0;false;false;0;0;0;;; -239501;1;0;false;false;;;;;; -239502;5;0;false;false;0;0;0;;; -239507;1;0;false;false;;;;;; -239508;11;0;false;false;0;0;0;;; -239519;1;0;false;false;;;;;; -239520;1;0;false;false;0;0;0;;; -239521;3;0;false;false;;;;;; -239524;14;0;false;false;0;0;0;;; -239538;3;0;false;false;;;;;; -239541;3;1;false;false;127;0;85;;; -239544;1;0;false;false;;;;;; -239545;18;0;false;false;0;0;0;;; -239563;1;0;false;false;;;;;; -239564;1;0;false;false;0;0;0;;; -239565;1;0;false;false;;;;;; -239566;24;0;false;false;0;0;0;;; -239590;6;0;false;false;;;;;; -239596;76;0;false;false;63;127;95;;; -239672;1;0;false;false;;;;;; -239673;2;1;false;false;127;0;85;;; -239675;1;0;false;false;;;;;; -239676;20;0;false;false;0;0;0;;; -239696;1;0;false;false;;;;;; -239697;1;0;false;false;0;0;0;;; -239698;4;0;false;false;;;;;; -239702;6;1;false;false;127;0;85;;; -239708;1;0;false;false;0;0;0;;; -239709;3;0;false;false;;;;;; -239712;1;0;false;false;0;0;0;;; -239713;3;0;false;false;;;;;; -239716;2;1;false;false;127;0;85;;; -239718;1;0;false;false;;;;;; -239719;10;0;false;false;0;0;0;;; -239729;1;0;false;false;;;;;; -239730;1;0;false;false;0;0;0;;; -239731;1;0;false;false;;;;;; -239732;1;0;false;false;0;0;0;;; -239733;1;0;false;false;;;;;; -239734;2;0;false;false;0;0;0;;; -239736;1;0;false;false;;;;;; -239737;9;0;false;false;0;0;0;;; -239746;1;0;false;false;;;;;; -239747;1;0;false;false;0;0;0;;; -239748;1;0;false;false;;;;;; -239749;9;0;false;false;0;0;0;;; -239758;1;0;false;false;;;;;; -239759;1;0;false;false;0;0;0;;; -239760;1;0;false;false;;;;;; -239761;30;0;false;false;0;0;0;;; -239791;1;0;false;false;;;;;; -239792;1;0;false;false;0;0;0;;; -239793;4;0;false;false;;;;;; -239797;38;0;false;false;0;0;0;;; -239835;3;0;false;false;;;;;; -239838;1;0;false;false;0;0;0;;; -239839;4;0;false;false;;;;;; -239843;46;0;false;false;0;0;0;;; -239889;1;0;false;false;;;;;; -239890;10;0;false;false;0;0;0;;; -239900;1;0;false;false;;;;;; -239901;12;0;false;false;0;0;0;;; -239913;3;0;false;false;;;;;; -239916;56;0;false;false;63;127;95;;; -239972;1;0;false;false;;;;;; -239973;2;1;false;false;127;0;85;;; -239975;1;0;false;false;;;;;; -239976;10;0;false;false;0;0;0;;; -239986;1;0;false;false;;;;;; -239987;1;0;false;false;0;0;0;;; -239988;1;0;false;false;;;;;; -239989;18;0;false;false;0;0;0;;; -240007;1;0;false;false;;;;;; -240008;2;0;false;false;0;0;0;;; -240010;1;0;false;false;;;;;; -240011;9;0;false;false;0;0;0;;; -240020;1;0;false;false;;;;;; -240021;1;0;false;false;0;0;0;;; -240022;1;0;false;false;;;;;; -240023;9;0;false;false;0;0;0;;; -240032;1;0;false;false;;;;;; -240033;1;0;false;false;0;0;0;;; -240034;1;0;false;false;;;;;; -240035;1;0;false;false;0;0;0;;; -240036;1;0;false;false;;;;;; -240037;1;0;false;false;0;0;0;;; -240038;1;0;false;false;;;;;; -240039;9;0;false;false;0;0;0;;; -240048;1;0;false;false;;;;;; -240049;1;0;false;false;0;0;0;;; -240050;4;0;false;false;;;;;; -240054;6;1;false;false;127;0;85;;; -240060;1;0;false;false;0;0;0;;; -240061;3;0;false;false;;;;;; -240064;1;0;false;false;0;0;0;;; -240065;3;0;false;false;;;;;; -240068;30;0;false;false;63;127;95;;; -240098;1;0;false;false;;;;;; -240099;2;1;false;false;127;0;85;;; -240101;1;0;false;false;;;;;; -240102;10;0;false;false;0;0;0;;; -240112;1;0;false;false;;;;;; -240113;1;0;false;false;0;0;0;;; -240114;1;0;false;false;;;;;; -240115;9;0;false;false;0;0;0;;; -240124;1;0;false;false;;;;;; -240125;1;0;false;false;0;0;0;;; -240126;4;0;false;false;;;;;; -240130;9;0;false;false;0;0;0;;; -240139;1;0;false;false;;;;;; -240140;2;0;false;false;0;0;0;;; -240142;1;0;false;false;;;;;; -240143;8;0;false;false;0;0;0;;; -240151;1;0;false;false;;;;;; -240152;1;0;false;false;0;0;0;;; -240153;1;0;false;false;;;;;; -240154;10;0;false;false;0;0;0;;; -240164;4;0;false;false;;;;;; -240168;9;0;false;false;0;0;0;;; -240177;1;0;false;false;;;;;; -240178;1;0;false;false;0;0;0;;; -240179;1;0;false;false;;;;;; -240180;9;0;false;false;0;0;0;;; -240189;3;0;false;false;;;;;; -240192;1;0;false;false;0;0;0;;; -240193;3;0;false;false;;;;;; -240196;2;1;false;false;127;0;85;;; -240198;1;0;false;false;;;;;; -240199;10;0;false;false;0;0;0;;; -240209;1;0;false;false;;;;;; -240210;1;0;false;false;0;0;0;;; -240211;1;0;false;false;;;;;; -240212;9;0;false;false;0;0;0;;; -240221;1;0;false;false;;;;;; -240222;1;0;false;false;0;0;0;;; -240223;1;0;false;false;;;;;; -240224;1;0;false;false;0;0;0;;; -240225;1;0;false;false;;;;;; -240226;1;0;false;false;0;0;0;;; -240227;1;0;false;false;;;;;; -240228;19;0;false;false;0;0;0;;; -240247;1;0;false;false;;;;;; -240248;1;0;false;false;0;0;0;;; -240249;4;0;false;false;;;;;; -240253;9;0;false;false;0;0;0;;; -240262;1;0;false;false;;;;;; -240263;1;0;false;false;0;0;0;;; -240264;1;0;false;false;;;;;; -240265;18;0;false;false;0;0;0;;; -240283;1;0;false;false;;;;;; -240284;1;0;false;false;0;0;0;;; -240285;1;0;false;false;;;;;; -240286;9;0;false;false;0;0;0;;; -240295;1;0;false;false;;;;;; -240296;1;0;false;false;0;0;0;;; -240297;1;0;false;false;;;;;; -240298;2;0;false;false;0;0;0;;; -240300;3;0;false;false;;;;;; -240303;1;0;false;false;0;0;0;;; -240304;3;0;false;false;;;;;; -240307;9;0;false;false;0;0;0;;; -240316;1;0;false;false;;;;;; -240317;2;0;false;false;0;0;0;;; -240319;1;0;false;false;;;;;; -240320;9;0;false;false;0;0;0;;; -240329;3;0;false;false;;;;;; -240332;5;1;false;false;127;0;85;;; -240337;8;0;false;false;0;0;0;;; -240345;4;0;false;false;;;;;; -240349;11;0;false;false;0;0;0;;; -240360;1;0;false;false;;;;;; -240361;9;0;false;false;0;0;0;;; -240370;1;0;false;false;;;;;; -240371;1;0;false;false;0;0;0;;; -240372;1;0;false;false;;;;;; -240373;10;0;false;false;0;0;0;;; -240383;1;0;false;false;;;;;; -240384;1;0;false;false;0;0;0;;; -240385;1;0;false;false;;;;;; -240386;10;0;false;false;0;0;0;;; -240396;5;0;false;false;;;;;; -240401;21;0;false;false;0;0;0;;; -240422;1;0;false;false;;;;;; -240423;1;0;false;false;0;0;0;;; -240424;1;0;false;false;;;;;; -240425;10;0;false;false;0;0;0;;; -240435;1;0;false;false;;;;;; -240436;1;0;false;false;0;0;0;;; -240437;1;0;false;false;;;;;; -240438;12;0;false;false;0;0;0;;; -240450;1;0;false;false;;;;;; -240451;9;0;false;false;0;0;0;;; -240460;1;0;false;false;;;;;; -240461;1;0;false;false;0;0;0;;; -240462;1;0;false;false;;;;;; -240463;11;0;false;false;0;0;0;;; -240474;1;0;false;false;;;;;; -240475;4;1;false;false;127;0;85;;; -240479;2;0;false;false;0;0;0;;; -240481;2;0;false;false;;;;;; -240483;1;0;false;false;0;0;0;;; -240484;2;0;false;false;;;;;; -240486;3;0;false;false;63;95;191;;; -240489;3;0;false;false;;;;;; -240492;1;0;false;false;63;95;191;;; -240493;1;0;false;false;;;;;; -240494;5;0;false;false;63;95;191;;; -240499;1;0;false;false;;;;;; -240500;9;0;false;false;63;95;191;;; -240509;1;0;false;false;;;;;; -240510;6;0;false;false;63;95;191;;; -240516;1;0;false;false;;;;;; -240517;5;0;false;false;63;95;191;;; -240522;1;0;false;false;;;;;; -240523;2;0;false;false;63;95;191;;; -240525;1;0;false;false;;;;;; -240526;4;0;false;false;63;95;191;;; -240530;1;0;false;false;;;;;; -240531;9;0;false;false;63;95;191;;; -240540;1;0;false;false;;;;;; -240541;10;0;false;false;63;95;191;;; -240551;3;0;false;false;;;;;; -240554;2;0;false;false;63;95;191;;; -240556;2;0;false;false;;;;;; -240558;4;1;false;false;127;0;85;;; -240562;1;0;false;false;;;;;; -240563;29;0;false;false;0;0;0;;; -240592;1;0;false;false;;;;;; -240593;1;0;false;false;0;0;0;;; -240594;3;0;false;false;;;;;; -240597;2;1;false;false;127;0;85;;; -240599;1;0;false;false;;;;;; -240600;18;0;false;false;0;0;0;;; -240618;1;0;false;false;;;;;; -240619;1;0;false;false;0;0;0;;; -240620;4;0;false;false;;;;;; -240624;2;1;false;false;127;0;85;;; -240626;1;0;false;false;;;;;; -240627;12;0;false;false;0;0;0;;; -240639;1;0;false;false;;;;;; -240640;1;0;false;false;0;0;0;;; -240641;1;0;false;false;;;;;; -240642;23;0;false;false;0;0;0;;; -240665;1;0;false;false;;;;;; -240666;1;0;false;false;0;0;0;;; -240667;5;0;false;false;;;;;; -240672;15;0;false;false;0;0;0;;; -240687;1;0;false;false;;;;;; -240688;1;0;false;false;0;0;0;;; -240689;1;0;false;false;;;;;; -240690;23;0;false;false;0;0;0;;; -240713;4;0;false;false;;;;;; -240717;1;0;false;false;0;0;0;;; -240718;4;0;false;false;;;;;; -240722;4;1;false;false;127;0;85;;; -240726;1;0;false;false;;;;;; -240727;2;1;false;false;127;0;85;;; -240729;1;0;false;false;;;;;; -240730;12;0;false;false;0;0;0;;; -240742;1;0;false;false;;;;;; -240743;1;0;false;false;0;0;0;;; -240744;1;0;false;false;;;;;; -240745;23;0;false;false;0;0;0;;; -240768;1;0;false;false;;;;;; -240769;1;0;false;false;0;0;0;;; -240770;5;0;false;false;;;;;; -240775;15;0;false;false;0;0;0;;; -240790;1;0;false;false;;;;;; -240791;1;0;false;false;0;0;0;;; -240792;1;0;false;false;;;;;; -240793;23;0;false;false;0;0;0;;; -240816;4;0;false;false;;;;;; -240820;1;0;false;false;0;0;0;;; -240821;3;0;false;false;;;;;; -240824;1;0;false;false;0;0;0;;; -240825;2;0;false;false;;;;;; -240827;1;0;false;false;0;0;0;;; -240828;2;0;false;false;;;;;; -240830;3;0;false;false;63;95;191;;; -240833;3;0;false;false;;;;;; -240836;1;0;false;false;63;95;191;;; -240837;1;0;false;false;;;;;; -240838;4;0;false;false;63;95;191;;; -240842;1;0;false;false;;;;;; -240843;3;0;false;false;63;95;191;;; -240846;1;0;false;false;;;;;; -240847;11;0;false;false;63;95;191;;; -240858;1;0;false;false;;;;;; -240859;2;0;false;false;63;95;191;;; -240861;1;0;false;false;;;;;; -240862;3;0;false;false;63;95;191;;; -240865;1;0;false;false;;;;;; -240866;9;0;false;false;63;95;191;;; -240875;1;0;false;false;;;;;; -240876;5;0;false;false;63;95;191;;; -240881;1;0;false;false;;;;;; -240882;4;0;false;false;63;95;191;;; -240886;1;0;false;false;;;;;; -240887;2;0;false;false;63;95;191;;; -240889;1;0;false;false;;;;;; -240890;3;0;false;false;63;95;191;;; -240893;3;0;false;false;;;;;; -240896;1;0;false;false;63;95;191;;; -240897;1;0;false;false;;;;;; -240898;2;0;false;false;63;95;191;;; -240900;1;0;false;false;;;;;; -240901;3;0;false;false;63;95;191;;; -240904;1;0;false;false;;;;;; -240905;9;0;false;false;63;95;191;;; -240914;1;0;false;false;;;;;; -240915;6;0;false;false;127;127;159;;; -240921;17;0;false;false;63;95;191;;; -240938;7;0;false;false;127;127;159;;; -240945;1;0;false;false;;;;;; -240946;2;0;false;false;63;95;191;;; -240948;1;0;false;false;;;;;; -240949;6;0;false;false;127;127;159;;; -240955;17;0;false;false;63;95;191;;; -240972;7;0;false;false;127;127;159;;; -240979;1;0;false;false;63;95;191;;; -240980;3;0;false;false;;;;;; -240983;1;0;false;false;63;95;191;;; -240984;1;0;false;false;;;;;; -240985;3;0;false;false;127;127;159;;; -240988;3;0;false;false;;;;;; -240991;1;0;false;false;63;95;191;;; -240992;3;0;false;false;;;;;; -240995;1;0;false;false;63;95;191;;; -240996;1;0;false;false;;;;;; -240997;7;1;false;false;127;159;191;;; -241004;11;0;false;false;63;95;191;;; -241015;1;0;false;false;;;;;; -241016;3;0;false;false;63;95;191;;; -241019;1;0;false;false;;;;;; -241020;11;0;false;false;63;95;191;;; -241031;1;0;false;false;;;;;; -241032;5;0;false;false;63;95;191;;; -241037;3;0;false;false;;;;;; -241040;1;0;false;false;63;95;191;;; -241041;4;0;false;false;;;;;; -241045;1;0;false;false;63;95;191;;; -241046;1;0;false;false;;;;;; -241047;11;1;false;false;127;159;191;;; -241058;12;0;false;false;63;95;191;;; -241070;1;0;false;false;;;;;; -241071;4;0;false;false;127;127;159;;; -241075;3;0;false;false;;;;;; -241078;1;0;false;false;63;95;191;;; -241079;4;0;false;false;;;;;; -241083;4;0;false;false;127;127;159;;; -241087;21;0;false;false;63;95;191;;; -241108;1;0;false;false;;;;;; -241109;1;0;false;false;127;127;159;;; -241110;1;0;false;false;;;;;; -241111;2;0;false;false;63;95;191;;; -241113;1;0;false;false;;;;;; -241114;3;0;false;false;63;95;191;;; -241117;1;0;false;false;;;;;; -241118;8;0;false;false;63;95;191;;; -241126;1;0;false;false;;;;;; -241127;3;0;false;false;63;95;191;;; -241130;1;0;false;false;;;;;; -241131;4;0;false;false;63;95;191;;; -241135;1;0;false;false;;;;;; -241136;8;0;false;false;63;95;191;;; -241144;5;0;false;false;127;127;159;;; -241149;3;0;false;false;;;;;; -241152;1;0;false;false;63;95;191;;; -241153;4;0;false;false;;;;;; -241157;4;0;false;false;127;127;159;;; -241161;27;0;false;false;63;95;191;;; -241188;1;0;false;false;;;;;; -241189;1;0;false;false;127;127;159;;; -241190;1;0;false;false;;;;;; -241191;2;0;false;false;63;95;191;;; -241193;1;0;false;false;;;;;; -241194;3;0;false;false;63;95;191;;; -241197;1;0;false;false;;;;;; -241198;6;0;false;false;63;95;191;;; -241204;1;0;false;false;;;;;; -241205;4;0;false;false;63;95;191;;; -241209;1;0;false;false;;;;;; -241210;3;0;false;false;63;95;191;;; -241213;1;0;false;false;;;;;; -241214;6;0;false;false;63;95;191;;; -241220;1;0;false;false;;;;;; -241221;4;0;false;false;63;95;191;;; -241225;1;0;false;false;;;;;; -241226;7;0;false;false;63;95;191;;; -241233;1;0;false;false;;;;;; -241234;3;0;false;false;63;95;191;;; -241237;1;0;false;false;;;;;; -241238;8;0;false;false;63;95;191;;; -241246;5;0;false;false;127;127;159;;; -241251;3;0;false;false;;;;;; -241254;1;0;false;false;63;95;191;;; -241255;1;0;false;false;;;;;; -241256;5;0;false;false;127;127;159;;; -241261;3;0;false;false;;;;;; -241264;1;0;false;false;63;95;191;;; -241265;4;0;false;false;;;;;; -241269;1;0;false;false;63;95;191;;; -241270;1;0;false;false;;;;;; -241271;7;1;false;false;127;159;191;;; -241278;5;0;false;false;63;95;191;;; -241283;3;0;false;false;;;;;; -241286;2;0;false;false;63;95;191;;; -241288;2;0;false;false;;;;;; -241290;6;1;false;false;127;0;85;;; -241296;1;0;false;false;;;;;; -241297;4;1;false;false;127;0;85;;; -241301;1;0;false;false;;;;;; -241302;15;0;false;false;0;0;0;;; -241317;3;1;false;false;127;0;85;;; -241320;1;0;false;false;;;;;; -241321;12;0;false;false;0;0;0;;; -241333;1;0;false;false;;;;;; -241334;1;0;false;false;0;0;0;;; -241335;3;0;false;false;;;;;; -241338;2;1;false;false;127;0;85;;; -241340;1;0;false;false;;;;;; -241341;13;0;false;false;0;0;0;;; -241354;1;0;false;false;;;;;; -241355;1;0;false;false;0;0;0;;; -241356;1;0;false;false;;;;;; -241357;18;0;false;false;0;0;0;;; -241375;1;0;false;false;;;;;; -241376;1;0;false;false;0;0;0;;; -241377;1;0;false;false;;;;;; -241378;19;0;false;false;0;0;0;;; -241397;1;0;false;false;;;;;; -241398;2;0;false;false;0;0;0;;; -241400;1;0;false;false;;;;;; -241401;2;0;false;false;0;0;0;;; -241403;1;0;false;false;;;;;; -241404;1;0;false;false;0;0;0;;; -241405;5;0;false;false;;;;;; -241410;6;1;false;false;127;0;85;;; -241416;1;0;false;false;0;0;0;;; -241417;3;0;false;false;;;;;; -241420;1;0;false;false;0;0;0;;; -241421;3;0;false;false;;;;;; -241424;2;1;false;false;127;0;85;;; -241426;1;0;false;false;;;;;; -241427;13;0;false;false;0;0;0;;; -241440;1;0;false;false;;;;;; -241441;1;0;false;false;0;0;0;;; -241442;1;0;false;false;;;;;; -241443;18;0;false;false;0;0;0;;; -241461;1;0;false;false;;;;;; -241462;2;0;false;false;0;0;0;;; -241464;1;0;false;false;;;;;; -241465;1;0;false;false;0;0;0;;; -241466;1;0;false;false;;;;;; -241467;2;0;false;false;0;0;0;;; -241469;1;0;false;false;;;;;; -241470;12;0;false;false;0;0;0;;; -241482;1;0;false;false;;;;;; -241483;1;0;false;false;0;0;0;;; -241484;1;0;false;false;;;;;; -241485;18;0;false;false;0;0;0;;; -241503;1;0;false;false;;;;;; -241504;2;0;false;false;0;0;0;;; -241506;1;0;false;false;;;;;; -241507;2;0;false;false;0;0;0;;; -241509;1;0;false;false;;;;;; -241510;1;0;false;false;0;0;0;;; -241511;4;0;false;false;;;;;; -241515;6;1;false;false;127;0;85;;; -241521;1;0;false;false;0;0;0;;; -241522;4;0;false;false;;;;;; -241526;1;0;false;false;0;0;0;;; -241527;3;0;false;false;;;;;; -241530;2;1;false;false;127;0;85;;; -241532;1;0;false;false;;;;;; -241533;13;0;false;false;0;0;0;;; -241546;1;0;false;false;;;;;; -241547;1;0;false;false;0;0;0;;; -241548;1;0;false;false;;;;;; -241549;18;0;false;false;0;0;0;;; -241567;1;0;false;false;;;;;; -241568;2;0;false;false;0;0;0;;; -241570;1;0;false;false;;;;;; -241571;1;0;false;false;0;0;0;;; -241572;1;0;false;false;;;;;; -241573;2;0;false;false;0;0;0;;; -241575;1;0;false;false;;;;;; -241576;13;0;false;false;0;0;0;;; -241589;1;0;false;false;;;;;; -241590;1;0;false;false;0;0;0;;; -241591;4;0;false;false;;;;;; -241595;6;1;false;false;127;0;85;;; -241601;1;0;false;false;0;0;0;;; -241602;4;0;false;false;;;;;; -241606;1;0;false;false;0;0;0;;; -241607;4;0;false;false;;;;;; -241611;2;1;false;false;127;0;85;;; -241613;1;0;false;false;;;;;; -241614;13;0;false;false;0;0;0;;; -241627;1;0;false;false;;;;;; -241628;1;0;false;false;0;0;0;;; -241629;1;0;false;false;;;;;; -241630;18;0;false;false;0;0;0;;; -241648;1;0;false;false;;;;;; -241649;2;0;false;false;0;0;0;;; -241651;1;0;false;false;;;;;; -241652;1;0;false;false;0;0;0;;; -241653;1;0;false;false;;;;;; -241654;2;0;false;false;0;0;0;;; -241656;1;0;false;false;;;;;; -241657;14;0;false;false;0;0;0;;; -241671;1;0;false;false;;;;;; -241672;1;0;false;false;0;0;0;;; -241673;4;0;false;false;;;;;; -241677;6;1;false;false;127;0;85;;; -241683;1;0;false;false;0;0;0;;; -241684;3;0;false;false;;;;;; -241687;1;0;false;false;0;0;0;;; -241688;3;0;false;false;;;;;; -241691;2;1;false;false;127;0;85;;; -241693;1;0;false;false;;;;;; -241694;33;0;false;false;0;0;0;;; -241727;1;0;false;false;;;;;; -241728;13;0;false;false;0;0;0;;; -241741;1;0;false;false;;;;;; -241742;1;0;false;false;0;0;0;;; -241743;4;0;false;false;;;;;; -241747;6;1;false;false;127;0;85;;; -241753;1;0;false;false;0;0;0;;; -241754;3;0;false;false;;;;;; -241757;1;0;false;false;0;0;0;;; -241758;3;0;false;false;;;;;; -241761;10;0;false;false;0;0;0;;; -241771;1;0;false;false;;;;;; -241772;1;0;false;false;0;0;0;;; -241773;1;0;false;false;;;;;; -241774;12;0;false;false;0;0;0;;; -241786;1;0;false;false;;;;;; -241787;1;0;false;false;0;0;0;;; -241788;1;0;false;false;;;;;; -241789;18;0;false;false;0;0;0;;; -241807;1;0;false;false;;;;;; -241808;2;0;false;false;0;0;0;;; -241810;1;0;false;false;;;;;; -241811;2;0;false;false;0;0;0;;; -241813;3;0;false;false;;;;;; -241816;21;0;false;false;0;0;0;;; -241837;3;0;false;false;;;;;; -241840;14;0;false;false;0;0;0;;; -241854;1;0;false;false;;;;;; -241855;1;0;false;false;0;0;0;;; -241856;1;0;false;false;;;;;; -241857;9;0;false;false;0;0;0;;; -241866;3;0;false;false;;;;;; -241869;19;0;false;false;0;0;0;;; -241888;3;0;false;false;;;;;; -241891;21;0;false;false;0;0;0;;; -241912;3;0;false;false;;;;;; -241915;20;0;false;false;0;0;0;;; -241935;3;0;false;false;;;;;; -241938;5;1;false;false;127;0;85;;; -241943;10;0;false;false;0;0;0;;; -241953;2;0;false;false;;;;;; -241955;1;0;false;false;0;0;0;;; -241956;2;0;false;false;;;;;; -241958;3;0;false;false;63;95;191;;; -241961;3;0;false;false;;;;;; -241964;1;0;false;false;63;95;191;;; -241965;1;0;false;false;;;;;; -241966;7;0;false;false;63;95;191;;; -241973;1;0;false;false;;;;;; -241974;3;0;false;false;63;95;191;;; -241977;1;0;false;false;;;;;; -241978;7;0;false;false;63;95;191;;; -241985;1;0;false;false;;;;;; -241986;3;0;false;false;63;95;191;;; -241989;1;0;false;false;;;;;; -241990;3;0;false;false;63;95;191;;; -241993;1;0;false;false;;;;;; -241994;4;0;false;false;63;95;191;;; -241998;1;0;false;false;;;;;; -241999;4;0;false;false;63;95;191;;; -242003;1;0;false;false;;;;;; -242004;2;0;false;false;63;95;191;;; -242006;1;0;false;false;;;;;; -242007;3;0;false;false;63;95;191;;; -242010;1;0;false;false;;;;;; -242011;6;0;false;false;63;95;191;;; -242017;1;0;false;false;;;;;; -242018;4;0;false;false;63;95;191;;; -242022;1;0;false;false;;;;;; -242023;2;0;false;false;63;95;191;;; -242025;4;0;false;false;;;;;; -242029;1;0;false;false;63;95;191;;; -242030;1;0;false;false;;;;;; -242031;7;0;false;false;63;95;191;;; -242038;1;0;false;false;;;;;; -242039;7;0;false;false;63;95;191;;; -242046;1;0;false;false;;;;;; -242047;12;0;false;false;63;95;191;;; -242059;1;0;false;false;;;;;; -242060;8;0;false;false;63;95;191;;; -242068;3;0;false;false;;;;;; -242071;2;0;false;false;63;95;191;;; -242073;2;0;false;false;;;;;; -242075;4;1;false;false;127;0;85;;; -242079;1;0;false;false;;;;;; -242080;15;0;false;false;0;0;0;;; -242095;1;0;false;false;;;;;; -242096;1;0;false;false;0;0;0;;; -242097;3;0;false;false;;;;;; -242100;9;0;false;false;0;0;0;;; -242109;1;0;false;false;;;;;; -242110;11;0;false;false;0;0;0;;; -242121;1;0;false;false;;;;;; -242122;1;0;false;false;0;0;0;;; -242123;1;0;false;false;;;;;; -242124;17;0;false;false;0;0;0;;; -242141;6;0;false;false;;;;;; -242147;2;1;false;false;127;0;85;;; -242149;1;0;false;false;;;;;; -242150;12;0;false;false;0;0;0;;; -242162;1;0;false;false;;;;;; -242163;2;0;false;false;0;0;0;;; -242165;1;0;false;false;;;;;; -242166;4;1;false;false;127;0;85;;; -242170;1;0;false;false;0;0;0;;; -242171;1;0;false;false;;;;;; -242172;1;0;false;false;0;0;0;;; -242173;4;0;false;false;;;;;; -242177;9;0;false;false;0;0;0;;; -242186;1;0;false;false;;;;;; -242187;10;0;false;false;0;0;0;;; -242197;1;0;false;false;;;;;; -242198;1;0;false;false;0;0;0;;; -242199;1;0;false;false;;;;;; -242200;16;0;false;false;0;0;0;;; -242216;4;0;false;false;;;;;; -242220;5;1;false;false;127;0;85;;; -242225;1;0;false;false;;;;;; -242226;3;1;false;false;127;0;85;;; -242229;1;0;false;false;;;;;; -242230;8;0;false;false;0;0;0;;; -242238;1;0;false;false;;;;;; -242239;1;0;false;false;0;0;0;;; -242240;1;0;false;false;;;;;; -242241;2;0;false;false;0;0;0;;; -242243;4;0;false;false;;;;;; -242247;3;1;false;false;127;0;85;;; -242250;1;0;false;false;;;;;; -242251;7;0;false;false;0;0;0;;; -242258;1;0;false;false;;;;;; -242259;1;0;false;false;0;0;0;;; -242260;1;0;false;false;;;;;; -242261;22;0;false;false;0;0;0;;; -242283;1;0;false;false;;;;;; -242284;1;0;false;false;0;0;0;;; -242285;1;0;false;false;;;;;; -242286;23;0;false;false;0;0;0;;; -242309;8;0;false;false;;;;;; -242317;60;0;false;false;63;127;95;;; -242377;2;0;false;false;;;;;; -242379;65;0;false;false;63;127;95;;; -242444;2;0;false;false;;;;;; -242446;56;0;false;false;63;127;95;;; -242502;2;0;false;false;;;;;; -242504;2;1;false;false;127;0;85;;; -242506;1;0;false;false;;;;;; -242507;18;0;false;false;0;0;0;;; -242525;1;0;false;false;;;;;; -242526;1;0;false;false;0;0;0;;; -242527;1;0;false;false;;;;;; -242528;8;0;false;false;0;0;0;;; -242536;1;0;false;false;;;;;; -242537;1;0;false;false;0;0;0;;; -242538;5;0;false;false;;;;;; -242543;22;0;false;false;0;0;0;;; -242565;6;0;false;false;;;;;; -242571;27;0;false;false;0;0;0;;; -242598;6;0;false;false;;;;;; -242604;25;0;false;false;0;0;0;;; -242629;6;0;false;false;;;;;; -242635;8;0;false;false;0;0;0;;; -242643;6;0;false;false;;;;;; -242649;18;0;false;false;0;0;0;;; -242667;4;0;false;false;;;;;; -242671;15;0;false;false;63;127;95;;; -242686;4;0;false;false;;;;;; -242690;27;0;false;false;0;0;0;;; -242717;6;0;false;false;;;;;; -242723;19;0;false;false;0;0;0;;; -242742;4;0;false;false;;;;;; -242746;14;0;false;false;63;127;95;;; -242760;2;0;false;false;;;;;; -242762;1;0;false;false;0;0;0;;; -242763;4;0;false;false;;;;;; -242767;4;1;false;false;127;0;85;;; -242771;4;0;false;false;;;;;; -242775;2;1;false;false;127;0;85;;; -242777;1;0;false;false;;;;;; -242778;23;0;false;false;0;0;0;;; -242801;1;0;false;false;;;;;; -242802;2;0;false;false;0;0;0;;; -242804;1;0;false;false;;;;;; -242805;8;0;false;false;0;0;0;;; -242813;1;0;false;false;;;;;; -242814;2;0;false;false;0;0;0;;; -242816;1;0;false;false;;;;;; -242817;24;0;false;false;0;0;0;;; -242841;1;0;false;false;;;;;; -242842;2;0;false;false;0;0;0;;; -242844;1;0;false;false;;;;;; -242845;9;0;false;false;0;0;0;;; -242854;1;0;false;false;;;;;; -242855;1;0;false;false;0;0;0;;; -242856;5;0;false;false;;;;;; -242861;22;0;false;false;0;0;0;;; -242883;6;0;false;false;;;;;; -242889;27;0;false;false;0;0;0;;; -242916;6;0;false;false;;;;;; -242922;25;0;false;false;0;0;0;;; -242947;6;0;false;false;;;;;; -242953;9;0;false;false;0;0;0;;; -242962;6;0;false;false;;;;;; -242968;9;0;false;false;0;0;0;;; -242977;6;0;false;false;;;;;; -242983;27;0;false;false;0;0;0;;; -243010;6;0;false;false;;;;;; -243016;10;0;false;false;0;0;0;;; -243026;4;0;false;false;;;;;; -243030;1;0;false;false;0;0;0;;; -243031;5;0;false;false;;;;;; -243036;1;0;false;false;0;0;0;;; -243037;3;0;false;false;;;;;; -243040;25;0;false;false;0;0;0;;; -243065;2;0;false;false;;;;;; -243067;1;0;false;false;0;0;0;;; -243068;2;0;false;false;;;;;; -243070;3;0;false;false;63;95;191;;; -243073;4;0;false;false;;;;;; -243077;1;0;false;false;63;95;191;;; -243078;1;0;false;false;;;;;; -243079;4;0;false;false;63;95;191;;; -243083;1;0;false;false;;;;;; -243084;3;0;false;false;63;95;191;;; -243087;1;0;false;false;;;;;; -243088;9;0;false;false;63;95;191;;; -243097;1;0;false;false;;;;;; -243098;2;0;false;false;63;95;191;;; -243100;1;0;false;false;;;;;; -243101;3;0;false;false;63;95;191;;; -243104;1;0;false;false;;;;;; -243105;5;0;false;false;63;95;191;;; -243110;1;0;false;false;;;;;; -243111;8;0;false;false;63;95;191;;; -243119;1;0;false;false;;;;;; -243120;3;0;false;false;63;95;191;;; -243123;1;0;false;false;;;;;; -243124;7;0;false;false;63;95;191;;; -243131;1;0;false;false;;;;;; -243132;2;0;false;false;63;95;191;;; -243134;1;0;false;false;;;;;; -243135;4;0;false;false;63;95;191;;; -243139;1;0;false;false;;;;;; -243140;5;0;false;false;63;95;191;;; -243145;2;0;false;false;;;;;; -243147;10;0;false;false;63;95;191;;; -243157;1;0;false;false;;;;;; -243158;2;0;false;false;63;95;191;;; -243160;1;0;false;false;;;;;; -243161;26;0;false;false;63;95;191;;; -243187;3;0;false;false;;;;;; -243190;1;0;false;false;63;95;191;;; -243191;1;0;false;false;;;;;; -243192;3;0;false;false;127;127;159;;; -243195;3;0;false;false;;;;;; -243198;1;0;false;false;63;95;191;;; -243199;3;0;false;false;;;;;; -243202;1;0;false;false;63;95;191;;; -243203;1;0;false;false;;;;;; -243204;7;1;false;false;127;159;191;;; -243211;5;0;false;false;63;95;191;;; -243216;1;0;false;false;;;;;; -243217;3;0;false;false;63;95;191;;; -243220;1;0;false;false;;;;;; -243221;5;0;false;false;63;95;191;;; -243226;1;0;false;false;;;;;; -243227;8;0;false;false;63;95;191;;; -243235;3;0;false;false;;;;;; -243238;1;0;false;false;63;95;191;;; -243239;1;0;false;false;;;;;; -243240;5;1;false;false;127;159;191;;; -243245;22;0;false;false;63;95;191;;; -243267;3;0;false;false;;;;;; -243270;1;0;false;false;63;95;191;;; -243271;1;0;false;false;;;;;; -243272;11;1;false;false;127;159;191;;; -243283;12;0;false;false;63;95;191;;; -243295;1;0;false;false;;;;;; -243296;4;0;false;false;127;127;159;;; -243300;3;0;false;false;;;;;; -243303;1;0;false;false;63;95;191;;; -243304;4;0;false;false;;;;;; -243308;4;0;false;false;127;127;159;;; -243312;21;0;false;false;63;95;191;;; -243333;1;0;false;false;;;;;; -243334;1;0;false;false;127;127;159;;; -243335;1;0;false;false;;;;;; -243336;2;0;false;false;63;95;191;;; -243338;1;0;false;false;;;;;; -243339;3;0;false;false;63;95;191;;; -243342;1;0;false;false;;;;;; -243343;8;0;false;false;63;95;191;;; -243351;1;0;false;false;;;;;; -243352;3;0;false;false;63;95;191;;; -243355;1;0;false;false;;;;;; -243356;4;0;false;false;63;95;191;;; -243360;1;0;false;false;;;;;; -243361;8;0;false;false;63;95;191;;; -243369;5;0;false;false;127;127;159;;; -243374;3;0;false;false;;;;;; -243377;1;0;false;false;63;95;191;;; -243378;4;0;false;false;;;;;; -243382;4;0;false;false;127;127;159;;; -243386;27;0;false;false;63;95;191;;; -243413;1;0;false;false;;;;;; -243414;1;0;false;false;127;127;159;;; -243415;1;0;false;false;;;;;; -243416;2;0;false;false;63;95;191;;; -243418;1;0;false;false;;;;;; -243419;3;0;false;false;63;95;191;;; -243422;1;0;false;false;;;;;; -243423;6;0;false;false;63;95;191;;; -243429;1;0;false;false;;;;;; -243430;4;0;false;false;63;95;191;;; -243434;1;0;false;false;;;;;; -243435;3;0;false;false;63;95;191;;; -243438;1;0;false;false;;;;;; -243439;6;0;false;false;63;95;191;;; -243445;1;0;false;false;;;;;; -243446;4;0;false;false;63;95;191;;; -243450;1;0;false;false;;;;;; -243451;7;0;false;false;63;95;191;;; -243458;1;0;false;false;;;;;; -243459;3;0;false;false;63;95;191;;; -243462;1;0;false;false;;;;;; -243463;8;0;false;false;63;95;191;;; -243471;5;0;false;false;127;127;159;;; -243476;3;0;false;false;;;;;; -243479;1;0;false;false;63;95;191;;; -243480;1;0;false;false;;;;;; -243481;5;0;false;false;127;127;159;;; -243486;3;0;false;false;;;;;; -243489;1;0;false;false;63;95;191;;; -243490;1;0;false;false;;;;;; -243491;11;1;false;false;127;159;191;;; -243502;24;0;false;false;63;95;191;;; -243526;1;0;false;false;;;;;; -243527;4;0;false;false;127;127;159;;; -243531;3;0;false;false;;;;;; -243534;1;0;false;false;63;95;191;;; -243535;3;0;false;false;;;;;; -243538;4;0;false;false;127;127;159;;; -243542;22;0;false;false;63;95;191;;; -243564;1;0;false;false;;;;;; -243565;4;0;false;false;63;95;191;;; -243569;1;0;false;false;;;;;; -243570;6;0;false;false;63;95;191;;; -243576;1;0;false;false;;;;;; -243577;3;0;false;false;63;95;191;;; -243580;1;0;false;false;;;;;; -243581;5;0;false;false;63;95;191;;; -243586;1;0;false;false;;;;;; -243587;2;0;false;false;63;95;191;;; -243589;1;0;false;false;;;;;; -243590;3;0;false;false;63;95;191;;; -243593;1;0;false;false;;;;;; -243594;3;0;false;false;63;95;191;;; -243597;1;0;false;false;;;;;; -243598;2;0;false;false;63;95;191;;; -243600;1;0;false;false;;;;;; -243601;3;0;false;false;63;95;191;;; -243604;1;0;false;false;;;;;; -243605;9;0;false;false;63;95;191;;; -243614;1;0;false;false;;;;;; -243615;5;0;false;false;63;95;191;;; -243620;1;0;false;false;;;;;; -243621;2;0;false;false;63;95;191;;; -243623;1;0;false;false;;;;;; -243624;6;0;false;false;63;95;191;;; -243630;1;0;false;false;;;;;; -243631;1;0;false;false;63;95;191;;; -243632;4;0;false;false;;;;;; -243636;1;0;false;false;63;95;191;;; -243637;1;0;false;false;;;;;; -243638;5;0;false;false;63;95;191;;; -243643;1;0;false;false;;;;;; -243644;4;0;false;false;63;95;191;;; -243648;1;0;false;false;;;;;; -243649;4;0;false;false;63;95;191;;; -243653;1;0;false;false;;;;;; -243654;9;0;false;false;63;95;191;;; -243663;1;0;false;false;;;;;; -243664;4;0;false;false;63;95;191;;; -243668;1;0;false;false;;;;;; -243669;4;0;false;false;63;95;191;;; -243673;1;0;false;false;;;;;; -243674;7;0;false;false;63;95;191;;; -243681;1;0;false;false;;;;;; -243682;7;0;false;false;63;95;191;;; -243689;1;0;false;false;;;;;; -243690;2;0;false;false;63;95;191;;; -243692;1;0;false;false;;;;;; -243693;5;0;false;false;63;95;191;;; -243698;1;0;false;false;;;;;; -243699;2;0;false;false;63;95;191;;; -243701;1;0;false;false;;;;;; -243702;2;0;false;false;63;95;191;;; -243704;1;0;false;false;;;;;; -243705;5;0;false;false;63;95;191;;; -243710;1;0;false;false;;;;;; -243711;3;0;false;false;63;95;191;;; -243714;1;0;false;false;;;;;; -243715;4;0;false;false;63;95;191;;; -243719;1;0;false;false;;;;;; -243720;10;0;false;false;63;95;191;;; -243730;3;0;false;false;;;;;; -243733;1;0;false;false;63;95;191;;; -243734;1;0;false;false;;;;;; -243735;5;0;false;false;127;127;159;;; -243740;4;0;false;false;;;;;; -243744;2;0;false;false;63;95;191;;; -243746;2;0;false;false;;;;;; -243748;6;1;false;false;127;0;85;;; -243754;1;0;false;false;;;;;; -243755;4;1;false;false;127;0;85;;; -243759;1;0;false;false;;;;;; -243760;13;0;false;false;0;0;0;;; -243773;3;1;false;false;127;0;85;;; -243776;1;0;false;false;;;;;; -243777;6;0;false;false;0;0;0;;; -243783;1;0;false;false;;;;;; -243784;1;0;false;false;0;0;0;;; -243785;3;0;false;false;;;;;; -243788;48;0;false;false;63;127;95;;; -243836;1;0;false;false;;;;;; -243837;19;0;false;false;0;0;0;;; -243856;1;0;false;false;;;;;; -243857;7;0;false;false;0;0;0;;; -243864;2;0;false;false;;;;;; -243866;1;0;false;false;0;0;0;;; -243867;2;0;false;false;;;;;; -243869;3;0;false;false;63;95;191;;; -243872;4;0;false;false;;;;;; -243876;1;0;false;false;63;95;191;;; -243877;1;0;false;false;;;;;; -243878;4;0;false;false;63;95;191;;; -243882;1;0;false;false;;;;;; -243883;3;0;false;false;63;95;191;;; -243886;1;0;false;false;;;;;; -243887;9;0;false;false;63;95;191;;; -243896;1;0;false;false;;;;;; -243897;3;0;false;false;63;95;191;;; -243900;1;0;false;false;;;;;; -243901;7;0;false;false;63;95;191;;; -243908;1;0;false;false;;;;;; -243909;2;0;false;false;63;95;191;;; -243911;1;0;false;false;;;;;; -243912;4;0;false;false;63;95;191;;; -243916;1;0;false;false;;;;;; -243917;5;0;false;false;63;95;191;;; -243922;3;0;false;false;;;;;; -243925;1;0;false;false;63;95;191;;; -243926;1;0;false;false;;;;;; -243927;3;0;false;false;127;127;159;;; -243930;3;0;false;false;;;;;; -243933;1;0;false;false;63;95;191;;; -243934;1;0;false;false;;;;;; -243935;8;0;false;false;63;95;191;;; -243943;1;0;false;false;;;;;; -243944;2;0;false;false;63;95;191;;; -243946;1;0;false;false;;;;;; -243947;4;0;false;false;63;95;191;;; -243951;1;0;false;false;;;;;; -243952;6;0;false;false;63;95;191;;; -243958;2;0;false;false;;;;;; -243960;4;0;false;false;63;95;191;;; -243964;1;0;false;false;;;;;; -243965;10;0;false;false;63;95;191;;; -243975;1;0;false;false;;;;;; -243976;3;0;false;false;63;95;191;;; -243979;1;0;false;false;;;;;; -243980;9;0;false;false;63;95;191;;; -243989;1;0;false;false;;;;;; -243990;2;0;false;false;63;95;191;;; -243992;1;0;false;false;;;;;; -243993;5;0;false;false;63;95;191;;; -243998;1;0;false;false;;;;;; -243999;2;0;false;false;63;95;191;;; -244001;3;0;false;false;;;;;; -244004;1;0;false;false;63;95;191;;; -244005;1;0;false;false;;;;;; -244006;5;0;false;false;63;95;191;;; -244011;1;0;false;false;;;;;; -244012;10;0;false;false;63;95;191;;; -244022;2;0;false;false;;;;;; -244024;2;0;false;false;63;95;191;;; -244026;1;0;false;false;;;;;; -244027;1;0;false;false;63;95;191;;; -244028;1;0;false;false;;;;;; -244029;4;0;false;false;63;95;191;;; -244033;1;0;false;false;;;;;; -244034;6;0;false;false;63;95;191;;; -244040;1;0;false;false;;;;;; -244041;4;0;false;false;63;95;191;;; -244045;1;0;false;false;;;;;; -244046;8;0;false;false;63;95;191;;; -244054;1;0;false;false;;;;;; -244055;1;0;false;false;63;95;191;;; -244056;1;0;false;false;;;;;; -244057;11;0;false;false;63;95;191;;; -244068;1;0;false;false;;;;;; -244069;5;0;false;false;63;95;191;;; -244074;1;0;false;false;;;;;; -244075;3;0;false;false;63;95;191;;; -244078;4;0;false;false;;;;;; -244082;1;0;false;false;63;95;191;;; -244083;1;0;false;false;;;;;; -244084;3;0;false;false;63;95;191;;; -244087;1;0;false;false;;;;;; -244088;5;0;false;false;63;95;191;;; -244093;1;0;false;false;;;;;; -244094;10;0;false;false;63;95;191;;; -244104;1;0;false;false;;;;;; -244105;7;0;false;false;63;95;191;;; -244112;1;0;false;false;;;;;; -244113;4;0;false;false;63;95;191;;; -244117;1;0;false;false;;;;;; -244118;4;0;false;false;63;95;191;;; -244122;3;0;false;false;;;;;; -244125;1;0;false;false;63;95;191;;; -244126;1;0;false;false;;;;;; -244127;4;0;false;false;127;127;159;;; -244131;3;0;false;false;;;;;; -244134;1;0;false;false;63;95;191;;; -244135;3;0;false;false;;;;;; -244138;1;0;false;false;63;95;191;;; -244139;1;0;false;false;;;;;; -244140;7;1;false;false;127;159;191;;; -244147;5;0;false;false;63;95;191;;; -244152;1;0;false;false;;;;;; -244153;11;0;false;false;63;95;191;;; -244164;1;0;false;false;;;;;; -244165;5;0;false;false;63;95;191;;; -244170;1;0;false;false;;;;;; -244171;7;0;false;false;63;95;191;;; -244178;1;0;false;false;;;;;; -244179;11;0;false;false;63;95;191;;; -244190;1;0;false;false;;;;;; -244191;3;0;false;false;63;95;191;;; -244194;1;0;false;false;;;;;; -244195;6;0;false;false;63;95;191;;; -244201;3;0;false;false;;;;;; -244204;1;0;false;false;63;95;191;;; -244205;2;0;false;false;;;;;; -244207;3;0;false;false;63;95;191;;; -244210;1;0;false;false;;;;;; -244211;5;0;false;false;63;95;191;;; -244216;1;0;false;false;;;;;; -244217;4;0;false;false;63;95;191;;; -244221;1;0;false;false;;;;;; -244222;2;0;false;false;63;95;191;;; -244224;1;0;false;false;;;;;; -244225;6;0;false;false;63;95;191;;; -244231;1;0;false;false;;;;;; -244232;2;0;false;false;63;95;191;;; -244234;1;0;false;false;;;;;; -244235;3;0;false;false;63;95;191;;; -244238;1;0;false;false;;;;;; -244239;9;0;false;false;63;95;191;;; -244248;1;0;false;false;;;;;; -244249;5;0;false;false;63;95;191;;; -244254;1;0;false;false;;;;;; -244255;4;0;false;false;63;95;191;;; -244259;1;0;false;false;;;;;; -244260;1;0;false;false;63;95;191;;; -244261;1;0;false;false;;;;;; -244262;1;0;false;false;63;95;191;;; -244263;1;0;false;false;;;;;; -244264;2;0;false;false;63;95;191;;; -244266;3;0;false;false;;;;;; -244269;1;0;false;false;63;95;191;;; -244270;1;0;false;false;;;;;; -244271;5;1;false;false;127;159;191;;; -244276;22;0;false;false;63;95;191;;; -244298;3;0;false;false;;;;;; -244301;1;0;false;false;63;95;191;;; -244302;1;0;false;false;;;;;; -244303;11;1;false;false;127;159;191;;; -244314;12;0;false;false;63;95;191;;; -244326;1;0;false;false;;;;;; -244327;4;0;false;false;127;127;159;;; -244331;3;0;false;false;;;;;; -244334;1;0;false;false;63;95;191;;; -244335;4;0;false;false;;;;;; -244339;4;0;false;false;127;127;159;;; -244343;21;0;false;false;63;95;191;;; -244364;1;0;false;false;;;;;; -244365;1;0;false;false;127;127;159;;; -244366;1;0;false;false;;;;;; -244367;2;0;false;false;63;95;191;;; -244369;1;0;false;false;;;;;; -244370;3;0;false;false;63;95;191;;; -244373;1;0;false;false;;;;;; -244374;8;0;false;false;63;95;191;;; -244382;1;0;false;false;;;;;; -244383;3;0;false;false;63;95;191;;; -244386;1;0;false;false;;;;;; -244387;4;0;false;false;63;95;191;;; -244391;1;0;false;false;;;;;; -244392;8;0;false;false;63;95;191;;; -244400;5;0;false;false;127;127;159;;; -244405;3;0;false;false;;;;;; -244408;1;0;false;false;63;95;191;;; -244409;4;0;false;false;;;;;; -244413;4;0;false;false;127;127;159;;; -244417;27;0;false;false;63;95;191;;; -244444;1;0;false;false;;;;;; -244445;1;0;false;false;127;127;159;;; -244446;1;0;false;false;;;;;; -244447;2;0;false;false;63;95;191;;; -244449;1;0;false;false;;;;;; -244450;3;0;false;false;63;95;191;;; -244453;1;0;false;false;;;;;; -244454;6;0;false;false;63;95;191;;; -244460;1;0;false;false;;;;;; -244461;4;0;false;false;63;95;191;;; -244465;1;0;false;false;;;;;; -244466;3;0;false;false;63;95;191;;; -244469;1;0;false;false;;;;;; -244470;6;0;false;false;63;95;191;;; -244476;1;0;false;false;;;;;; -244477;4;0;false;false;63;95;191;;; -244481;1;0;false;false;;;;;; -244482;7;0;false;false;63;95;191;;; -244489;1;0;false;false;;;;;; -244490;3;0;false;false;63;95;191;;; -244493;1;0;false;false;;;;;; -244494;8;0;false;false;63;95;191;;; -244502;5;0;false;false;127;127;159;;; -244507;3;0;false;false;;;;;; -244510;1;0;false;false;63;95;191;;; -244511;1;0;false;false;;;;;; -244512;5;0;false;false;127;127;159;;; -244517;3;0;false;false;;;;;; -244520;1;0;false;false;63;95;191;;; -244521;1;0;false;false;;;;;; -244522;11;1;false;false;127;159;191;;; -244533;24;0;false;false;63;95;191;;; -244557;1;0;false;false;;;;;; -244558;4;0;false;false;127;127;159;;; -244562;3;0;false;false;;;;;; -244565;1;0;false;false;63;95;191;;; -244566;3;0;false;false;;;;;; -244569;4;0;false;false;127;127;159;;; -244573;19;0;false;false;63;95;191;;; -244592;1;0;false;false;;;;;; -244593;4;0;false;false;63;95;191;;; -244597;1;0;false;false;;;;;; -244598;5;0;false;false;63;95;191;;; -244603;1;0;false;false;;;;;; -244604;2;0;false;false;63;95;191;;; -244606;1;0;false;false;;;;;; -244607;4;0;false;false;63;95;191;;; -244611;5;0;false;false;127;127;159;;; -244616;3;0;false;false;;;;;; -244619;1;0;false;false;63;95;191;;; -244620;3;0;false;false;;;;;; -244623;4;0;false;false;127;127;159;;; -244627;22;0;false;false;63;95;191;;; -244649;1;0;false;false;;;;;; -244650;4;0;false;false;63;95;191;;; -244654;1;0;false;false;;;;;; -244655;6;0;false;false;63;95;191;;; -244661;1;0;false;false;;;;;; -244662;3;0;false;false;63;95;191;;; -244665;1;0;false;false;;;;;; -244666;5;0;false;false;63;95;191;;; -244671;1;0;false;false;;;;;; -244672;2;0;false;false;63;95;191;;; -244674;1;0;false;false;;;;;; -244675;3;0;false;false;63;95;191;;; -244678;1;0;false;false;;;;;; -244679;3;0;false;false;63;95;191;;; -244682;1;0;false;false;;;;;; -244683;2;0;false;false;63;95;191;;; -244685;1;0;false;false;;;;;; -244686;3;0;false;false;63;95;191;;; -244689;1;0;false;false;;;;;; -244690;9;0;false;false;63;95;191;;; -244699;1;0;false;false;;;;;; -244700;5;0;false;false;63;95;191;;; -244705;1;0;false;false;;;;;; -244706;2;0;false;false;63;95;191;;; -244708;1;0;false;false;;;;;; -244709;6;0;false;false;63;95;191;;; -244715;1;0;false;false;;;;;; -244716;1;0;false;false;63;95;191;;; -244717;4;0;false;false;;;;;; -244721;1;0;false;false;63;95;191;;; -244722;1;0;false;false;;;;;; -244723;5;0;false;false;63;95;191;;; -244728;1;0;false;false;;;;;; -244729;4;0;false;false;63;95;191;;; -244733;1;0;false;false;;;;;; -244734;4;0;false;false;63;95;191;;; -244738;1;0;false;false;;;;;; -244739;9;0;false;false;63;95;191;;; -244748;1;0;false;false;;;;;; -244749;4;0;false;false;63;95;191;;; -244753;1;0;false;false;;;;;; -244754;4;0;false;false;63;95;191;;; -244758;1;0;false;false;;;;;; -244759;7;0;false;false;63;95;191;;; -244766;1;0;false;false;;;;;; -244767;7;0;false;false;63;95;191;;; -244774;1;0;false;false;;;;;; -244775;2;0;false;false;63;95;191;;; -244777;1;0;false;false;;;;;; -244778;5;0;false;false;63;95;191;;; -244783;1;0;false;false;;;;;; -244784;2;0;false;false;63;95;191;;; -244786;1;0;false;false;;;;;; -244787;2;0;false;false;63;95;191;;; -244789;1;0;false;false;;;;;; -244790;5;0;false;false;63;95;191;;; -244795;1;0;false;false;;;;;; -244796;3;0;false;false;63;95;191;;; -244799;1;0;false;false;;;;;; -244800;4;0;false;false;63;95;191;;; -244804;1;0;false;false;;;;;; -244805;10;0;false;false;63;95;191;;; -244815;3;0;false;false;;;;;; -244818;1;0;false;false;63;95;191;;; -244819;1;0;false;false;;;;;; -244820;5;0;false;false;127;127;159;;; -244825;4;0;false;false;;;;;; -244829;2;0;false;false;63;95;191;;; -244831;2;0;false;false;;;;;; -244833;6;1;false;false;127;0;85;;; -244839;1;0;false;false;;;;;; -244840;4;1;false;false;127;0;85;;; -244844;1;0;false;false;;;;;; -244845;18;0;false;false;0;0;0;;; -244863;1;0;false;false;;;;;; -244864;6;0;false;false;0;0;0;;; -244870;1;0;false;false;;;;;; -244871;1;0;false;false;0;0;0;;; -244872;3;0;false;false;;;;;; -244875;14;0;false;false;0;0;0;;; -244889;3;0;false;false;;;;;; -244892;2;1;false;false;127;0;85;;; -244894;1;0;false;false;;;;;; -244895;6;0;false;false;0;0;0;;; -244901;1;0;false;false;;;;;; -244902;2;0;false;false;0;0;0;;; -244904;1;0;false;false;;;;;; -244905;4;1;false;false;127;0;85;;; -244909;1;0;false;false;0;0;0;;; -244910;1;0;false;false;;;;;; -244911;9;0;false;false;0;0;0;;; -244920;1;0;false;false;;;;;; -244921;26;0;false;false;0;0;0;;; -244947;4;0;false;false;;;;;; -244951;21;0;false;false;0;0;0;;; -244972;1;0;false;false;;;;;; -244973;9;0;false;false;0;0;0;;; -244982;2;0;false;false;;;;;; -244984;1;0;false;false;0;0;0;;; -244985;2;0;false;false;;;;;; -244987;3;0;false;false;63;95;191;;; -244990;3;0;false;false;;;;;; -244993;1;0;false;false;63;95;191;;; -244994;1;0;false;false;;;;;; -244995;4;0;false;false;63;95;191;;; -244999;1;0;false;false;;;;;; -245000;3;0;false;false;63;95;191;;; -245003;1;0;false;false;;;;;; -245004;10;0;false;false;63;95;191;;; -245014;1;0;false;false;;;;;; -245015;9;0;false;false;63;95;191;;; -245024;1;0;false;false;;;;;; -245025;10;0;false;false;63;95;191;;; -245035;1;0;false;false;;;;;; -245036;5;0;false;false;63;95;191;;; -245041;1;0;false;false;;;;;; -245042;2;0;false;false;63;95;191;;; -245044;1;0;false;false;;;;;; -245045;3;0;false;false;63;95;191;;; -245048;1;0;false;false;;;;;; -245049;5;0;false;false;63;95;191;;; -245054;1;0;false;false;;;;;; -245055;9;0;false;false;63;95;191;;; -245064;3;0;false;false;;;;;; -245067;1;0;false;false;63;95;191;;; -245068;1;0;false;false;;;;;; -245069;2;0;false;false;63;95;191;;; -245071;1;0;false;false;;;;;; -245072;3;0;false;false;63;95;191;;; -245075;1;0;false;false;;;;;; -245076;9;0;false;false;63;95;191;;; -245085;1;0;false;false;;;;;; -245086;2;0;false;false;63;95;191;;; -245088;1;0;false;false;;;;;; -245089;2;0;false;false;63;95;191;;; -245091;1;0;false;false;;;;;; -245092;3;0;false;false;63;95;191;;; -245095;1;0;false;false;;;;;; -245096;7;0;false;false;63;95;191;;; -245103;1;0;false;false;;;;;; -245104;6;0;false;false;63;95;191;;; -245110;1;0;false;false;;;;;; -245111;5;0;false;false;63;95;191;;; -245116;1;0;false;false;;;;;; -245117;3;0;false;false;63;95;191;;; -245120;1;0;false;false;;;;;; -245121;3;0;false;false;63;95;191;;; -245124;1;0;false;false;;;;;; -245125;7;0;false;false;63;95;191;;; -245132;3;0;false;false;;;;;; -245135;1;0;false;false;63;95;191;;; -245136;1;0;false;false;;;;;; -245137;2;0;false;false;63;95;191;;; -245139;1;0;false;false;;;;;; -245140;3;0;false;false;63;95;191;;; -245143;1;0;false;false;;;;;; -245144;8;0;false;false;63;95;191;;; -245152;1;0;false;false;;;;;; -245153;2;0;false;false;63;95;191;;; -245155;1;0;false;false;;;;;; -245156;5;0;false;false;63;95;191;;; -245161;3;0;false;false;;;;;; -245164;1;0;false;false;63;95;191;;; -245165;3;0;false;false;;;;;; -245168;1;0;false;false;63;95;191;;; -245169;1;0;false;false;;;;;; -245170;7;1;false;false;127;159;191;;; -245177;5;0;false;false;63;95;191;;; -245182;1;0;false;false;;;;;; -245183;3;0;false;false;63;95;191;;; -245186;1;0;false;false;;;;;; -245187;3;0;false;false;63;95;191;;; -245190;1;0;false;false;;;;;; -245191;5;0;false;false;63;95;191;;; -245196;1;0;false;false;;;;;; -245197;3;0;false;false;63;95;191;;; -245200;1;0;false;false;;;;;; -245201;5;0;false;false;63;95;191;;; -245206;3;0;false;false;;;;;; -245209;1;0;false;false;63;95;191;;; -245210;3;0;false;false;;;;;; -245213;1;0;false;false;63;95;191;;; -245214;1;0;false;false;;;;;; -245215;11;1;false;false;127;159;191;;; -245226;24;0;false;false;63;95;191;;; -245250;1;0;false;false;;;;;; -245251;4;0;false;false;127;127;159;;; -245255;3;0;false;false;;;;;; -245258;1;0;false;false;63;95;191;;; -245259;4;0;false;false;;;;;; -245263;4;0;false;false;127;127;159;;; -245267;22;0;false;false;63;95;191;;; -245289;1;0;false;false;;;;;; -245290;1;0;false;false;127;127;159;;; -245291;1;0;false;false;;;;;; -245292;2;0;false;false;63;95;191;;; -245294;1;0;false;false;;;;;; -245295;3;0;false;false;63;95;191;;; -245298;1;0;false;false;;;;;; -245299;8;0;false;false;63;95;191;;; -245307;1;0;false;false;;;;;; -245308;3;0;false;false;63;95;191;;; -245311;1;0;false;false;;;;;; -245312;4;0;false;false;63;95;191;;; -245316;1;0;false;false;;;;;; -245317;8;0;false;false;63;95;191;;; -245325;5;0;false;false;127;127;159;;; -245330;4;0;false;false;;;;;; -245334;1;0;false;false;63;95;191;;; -245335;1;0;false;false;;;;;; -245336;5;0;false;false;127;127;159;;; -245341;3;0;false;false;;;;;; -245344;1;0;false;false;63;95;191;;; -245345;1;0;false;false;;;;;; -245346;11;1;false;false;127;159;191;;; -245357;12;0;false;false;63;95;191;;; -245369;1;0;false;false;;;;;; -245370;4;0;false;false;127;127;159;;; -245374;3;0;false;false;;;;;; -245377;1;0;false;false;63;95;191;;; -245378;4;0;false;false;;;;;; -245382;4;0;false;false;127;127;159;;; -245386;21;0;false;false;63;95;191;;; -245407;1;0;false;false;;;;;; -245408;1;0;false;false;127;127;159;;; -245409;1;0;false;false;;;;;; -245410;2;0;false;false;63;95;191;;; -245412;1;0;false;false;;;;;; -245413;3;0;false;false;63;95;191;;; -245416;1;0;false;false;;;;;; -245417;8;0;false;false;63;95;191;;; -245425;1;0;false;false;;;;;; -245426;3;0;false;false;63;95;191;;; -245429;1;0;false;false;;;;;; -245430;4;0;false;false;63;95;191;;; -245434;1;0;false;false;;;;;; -245435;8;0;false;false;63;95;191;;; -245443;5;0;false;false;127;127;159;;; -245448;3;0;false;false;;;;;; -245451;1;0;false;false;63;95;191;;; -245452;4;0;false;false;;;;;; -245456;4;0;false;false;127;127;159;;; -245460;27;0;false;false;63;95;191;;; -245487;1;0;false;false;;;;;; -245488;1;0;false;false;127;127;159;;; -245489;1;0;false;false;;;;;; -245490;2;0;false;false;63;95;191;;; -245492;1;0;false;false;;;;;; -245493;3;0;false;false;63;95;191;;; -245496;1;0;false;false;;;;;; -245497;6;0;false;false;63;95;191;;; -245503;1;0;false;false;;;;;; -245504;4;0;false;false;63;95;191;;; -245508;1;0;false;false;;;;;; -245509;3;0;false;false;63;95;191;;; -245512;1;0;false;false;;;;;; -245513;6;0;false;false;63;95;191;;; -245519;1;0;false;false;;;;;; -245520;4;0;false;false;63;95;191;;; -245524;1;0;false;false;;;;;; -245525;7;0;false;false;63;95;191;;; -245532;1;0;false;false;;;;;; -245533;3;0;false;false;63;95;191;;; -245536;1;0;false;false;;;;;; -245537;8;0;false;false;63;95;191;;; -245545;5;0;false;false;127;127;159;;; -245550;3;0;false;false;;;;;; -245553;1;0;false;false;63;95;191;;; -245554;1;0;false;false;;;;;; -245555;5;0;false;false;127;127;159;;; -245560;3;0;false;false;;;;;; -245563;1;0;false;false;63;95;191;;; -245564;1;0;false;false;;;;;; -245565;7;1;false;false;127;159;191;;; -245572;3;0;false;false;63;95;191;;; -245575;3;0;false;false;;;;;; -245578;2;0;false;false;63;95;191;;; -245580;2;0;false;false;;;;;; -245582;6;1;false;false;127;0;85;;; -245588;1;0;false;false;;;;;; -245589;4;1;false;false;127;0;85;;; -245593;1;0;false;false;;;;;; -245594;22;0;false;false;0;0;0;;; -245616;1;0;false;false;;;;;; -245617;6;0;false;false;0;0;0;;; -245623;1;0;false;false;;;;;; -245624;6;0;false;false;0;0;0;;; -245630;1;0;false;false;;;;;; -245631;1;0;false;false;0;0;0;;; -245632;3;0;false;false;;;;;; -245635;11;0;false;false;0;0;0;;; -245646;1;0;false;false;;;;;; -245647;3;0;false;false;0;0;0;;; -245650;3;0;false;false;;;;;; -245653;2;1;false;false;127;0;85;;; -245655;1;0;false;false;;;;;; -245656;6;0;false;false;0;0;0;;; -245662;1;0;false;false;;;;;; -245663;2;0;false;false;0;0;0;;; -245665;1;0;false;false;;;;;; -245666;4;1;false;false;127;0;85;;; -245670;1;0;false;false;0;0;0;;; -245671;1;0;false;false;;;;;; -245672;1;0;false;false;0;0;0;;; -245673;4;0;false;false;;;;;; -245677;2;1;false;false;127;0;85;;; -245679;1;0;false;false;;;;;; -245680;20;0;false;false;0;0;0;;; -245700;1;0;false;false;;;;;; -245701;38;0;false;false;0;0;0;;; -245739;3;0;false;false;;;;;; -245742;1;0;false;false;0;0;0;;; -245743;3;0;false;false;;;;;; -245746;19;0;false;false;0;0;0;;; -245765;1;0;false;false;;;;;; -245766;1;0;false;false;0;0;0;;; -245767;1;0;false;false;;;;;; -245768;6;0;false;false;0;0;0;;; -245774;3;0;false;false;;;;;; -245777;9;0;false;false;0;0;0;;; -245786;2;0;false;false;;;;;; -245788;1;0;false;false;0;0;0;;; -245789;3;0;false;false;;;;;; -245792;3;0;false;false;63;95;191;;; -245795;3;0;false;false;;;;;; -245798;1;0;false;false;63;95;191;;; -245799;1;0;false;false;;;;;; -245800;4;0;false;false;63;95;191;;; -245804;1;0;false;false;;;;;; -245805;3;0;false;false;63;95;191;;; -245808;1;0;false;false;;;;;; -245809;10;0;false;false;63;95;191;;; -245819;1;0;false;false;;;;;; -245820;9;0;false;false;63;95;191;;; -245829;1;0;false;false;;;;;; -245830;10;0;false;false;63;95;191;;; -245840;1;0;false;false;;;;;; -245841;5;0;false;false;63;95;191;;; -245846;1;0;false;false;;;;;; -245847;2;0;false;false;63;95;191;;; -245849;1;0;false;false;;;;;; -245850;3;0;false;false;63;95;191;;; -245853;1;0;false;false;;;;;; -245854;5;0;false;false;63;95;191;;; -245859;1;0;false;false;;;;;; -245860;9;0;false;false;63;95;191;;; -245869;3;0;false;false;;;;;; -245872;1;0;false;false;63;95;191;;; -245873;1;0;false;false;;;;;; -245874;2;0;false;false;63;95;191;;; -245876;1;0;false;false;;;;;; -245877;3;0;false;false;63;95;191;;; -245880;1;0;false;false;;;;;; -245881;9;0;false;false;63;95;191;;; -245890;1;0;false;false;;;;;; -245891;2;0;false;false;63;95;191;;; -245893;1;0;false;false;;;;;; -245894;2;0;false;false;63;95;191;;; -245896;1;0;false;false;;;;;; -245897;3;0;false;false;63;95;191;;; -245900;1;0;false;false;;;;;; -245901;7;0;false;false;63;95;191;;; -245908;1;0;false;false;;;;;; -245909;6;0;false;false;63;95;191;;; -245915;1;0;false;false;;;;;; -245916;5;0;false;false;63;95;191;;; -245921;1;0;false;false;;;;;; -245922;3;0;false;false;63;95;191;;; -245925;1;0;false;false;;;;;; -245926;3;0;false;false;63;95;191;;; -245929;1;0;false;false;;;;;; -245930;7;0;false;false;63;95;191;;; -245937;3;0;false;false;;;;;; -245940;1;0;false;false;63;95;191;;; -245941;1;0;false;false;;;;;; -245942;2;0;false;false;63;95;191;;; -245944;1;0;false;false;;;;;; -245945;3;0;false;false;63;95;191;;; -245948;1;0;false;false;;;;;; -245949;8;0;false;false;63;95;191;;; -245957;1;0;false;false;;;;;; -245958;2;0;false;false;63;95;191;;; -245960;1;0;false;false;;;;;; -245961;5;0;false;false;63;95;191;;; -245966;3;0;false;false;;;;;; -245969;1;0;false;false;63;95;191;;; -245970;3;0;false;false;;;;;; -245973;1;0;false;false;63;95;191;;; -245974;1;0;false;false;;;;;; -245975;7;1;false;false;127;159;191;;; -245982;5;0;false;false;63;95;191;;; -245987;1;0;false;false;;;;;; -245988;3;0;false;false;63;95;191;;; -245991;1;0;false;false;;;;;; -245992;3;0;false;false;63;95;191;;; -245995;1;0;false;false;;;;;; -245996;5;0;false;false;63;95;191;;; -246001;1;0;false;false;;;;;; -246002;3;0;false;false;63;95;191;;; -246005;1;0;false;false;;;;;; -246006;5;0;false;false;63;95;191;;; -246011;3;0;false;false;;;;;; -246014;1;0;false;false;63;95;191;;; -246015;3;0;false;false;;;;;; -246018;1;0;false;false;63;95;191;;; -246019;1;0;false;false;;;;;; -246020;11;1;false;false;127;159;191;;; -246031;24;0;false;false;63;95;191;;; -246055;1;0;false;false;;;;;; -246056;4;0;false;false;127;127;159;;; -246060;3;0;false;false;;;;;; -246063;1;0;false;false;63;95;191;;; -246064;4;0;false;false;;;;;; -246068;4;0;false;false;127;127;159;;; -246072;22;0;false;false;63;95;191;;; -246094;1;0;false;false;;;;;; -246095;1;0;false;false;127;127;159;;; -246096;1;0;false;false;;;;;; -246097;2;0;false;false;63;95;191;;; -246099;1;0;false;false;;;;;; -246100;3;0;false;false;63;95;191;;; -246103;1;0;false;false;;;;;; -246104;8;0;false;false;63;95;191;;; -246112;1;0;false;false;;;;;; -246113;3;0;false;false;63;95;191;;; -246116;1;0;false;false;;;;;; -246117;4;0;false;false;63;95;191;;; -246121;1;0;false;false;;;;;; -246122;8;0;false;false;63;95;191;;; -246130;5;0;false;false;127;127;159;;; -246135;4;0;false;false;;;;;; -246139;1;0;false;false;63;95;191;;; -246140;1;0;false;false;;;;;; -246141;5;0;false;false;127;127;159;;; -246146;3;0;false;false;;;;;; -246149;1;0;false;false;63;95;191;;; -246150;1;0;false;false;;;;;; -246151;11;1;false;false;127;159;191;;; -246162;12;0;false;false;63;95;191;;; -246174;1;0;false;false;;;;;; -246175;4;0;false;false;127;127;159;;; -246179;3;0;false;false;;;;;; -246182;1;0;false;false;63;95;191;;; -246183;4;0;false;false;;;;;; -246187;4;0;false;false;127;127;159;;; -246191;21;0;false;false;63;95;191;;; -246212;1;0;false;false;;;;;; -246213;1;0;false;false;127;127;159;;; -246214;1;0;false;false;;;;;; -246215;2;0;false;false;63;95;191;;; -246217;1;0;false;false;;;;;; -246218;3;0;false;false;63;95;191;;; -246221;1;0;false;false;;;;;; -246222;8;0;false;false;63;95;191;;; -246230;1;0;false;false;;;;;; -246231;3;0;false;false;63;95;191;;; -246234;1;0;false;false;;;;;; -246235;4;0;false;false;63;95;191;;; -246239;1;0;false;false;;;;;; -246240;8;0;false;false;63;95;191;;; -246248;5;0;false;false;127;127;159;;; -246253;3;0;false;false;;;;;; -246256;1;0;false;false;63;95;191;;; -246257;4;0;false;false;;;;;; -246261;4;0;false;false;127;127;159;;; -246265;27;0;false;false;63;95;191;;; -246292;1;0;false;false;;;;;; -246293;1;0;false;false;127;127;159;;; -246294;1;0;false;false;;;;;; -246295;2;0;false;false;63;95;191;;; -246297;1;0;false;false;;;;;; -246298;3;0;false;false;63;95;191;;; -246301;1;0;false;false;;;;;; -246302;6;0;false;false;63;95;191;;; -246308;1;0;false;false;;;;;; -246309;4;0;false;false;63;95;191;;; -246313;1;0;false;false;;;;;; -246314;3;0;false;false;63;95;191;;; -246317;1;0;false;false;;;;;; -246318;6;0;false;false;63;95;191;;; -246324;1;0;false;false;;;;;; -246325;4;0;false;false;63;95;191;;; -246329;1;0;false;false;;;;;; -246330;7;0;false;false;63;95;191;;; -246337;1;0;false;false;;;;;; -246338;3;0;false;false;63;95;191;;; -246341;1;0;false;false;;;;;; -246342;8;0;false;false;63;95;191;;; -246350;5;0;false;false;127;127;159;;; -246355;3;0;false;false;;;;;; -246358;1;0;false;false;63;95;191;;; -246359;1;0;false;false;;;;;; -246360;5;0;false;false;127;127;159;;; -246365;3;0;false;false;;;;;; -246368;1;0;false;false;63;95;191;;; -246369;1;0;false;false;;;;;; -246370;7;1;false;false;127;159;191;;; -246377;3;0;false;false;63;95;191;;; -246380;3;0;false;false;;;;;; -246383;2;0;false;false;63;95;191;;; -246385;2;0;false;false;;;;;; -246387;6;1;false;false;127;0;85;;; -246393;1;0;false;false;;;;;; -246394;4;1;false;false;127;0;85;;; -246398;1;0;false;false;;;;;; -246399;22;0;false;false;0;0;0;;; -246421;1;0;false;false;;;;;; -246422;6;0;false;false;0;0;0;;; -246428;1;0;false;false;;;;;; -246429;6;0;false;false;0;0;0;;; -246435;1;0;false;false;;;;;; -246436;1;0;false;false;0;0;0;;; -246437;3;0;false;false;;;;;; -246440;11;0;false;false;0;0;0;;; -246451;1;0;false;false;;;;;; -246452;3;0;false;false;0;0;0;;; -246455;3;0;false;false;;;;;; -246458;2;1;false;false;127;0;85;;; -246460;1;0;false;false;;;;;; -246461;6;0;false;false;0;0;0;;; -246467;1;0;false;false;;;;;; -246468;2;0;false;false;0;0;0;;; -246470;1;0;false;false;;;;;; -246471;4;1;false;false;127;0;85;;; -246475;1;0;false;false;0;0;0;;; -246476;1;0;false;false;;;;;; -246477;1;0;false;false;0;0;0;;; -246478;4;0;false;false;;;;;; -246482;2;1;false;false;127;0;85;;; -246484;1;0;false;false;;;;;; -246485;20;0;false;false;0;0;0;;; -246505;1;0;false;false;;;;;; -246506;38;0;false;false;0;0;0;;; -246544;3;0;false;false;;;;;; -246547;1;0;false;false;0;0;0;;; -246548;3;0;false;false;;;;;; -246551;19;0;false;false;0;0;0;;; -246570;1;0;false;false;;;;;; -246571;1;0;false;false;0;0;0;;; -246572;1;0;false;false;;;;;; -246573;6;0;false;false;0;0;0;;; -246579;3;0;false;false;;;;;; -246582;9;0;false;false;0;0;0;;; -246591;2;0;false;false;;;;;; -246593;1;0;false;false;0;0;0;;; -246594;3;0;false;false;;;;;; -246597;3;0;false;false;63;95;191;;; -246600;4;0;false;false;;;;;; -246604;1;0;false;false;63;95;191;;; -246605;1;0;false;false;;;;;; -246606;4;0;false;false;63;95;191;;; -246610;1;0;false;false;;;;;; -246611;3;0;false;false;63;95;191;;; -246614;1;0;false;false;;;;;; -246615;9;0;false;false;63;95;191;;; -246624;1;0;false;false;;;;;; -246625;3;0;false;false;63;95;191;;; -246628;1;0;false;false;;;;;; -246629;7;0;false;false;63;95;191;;; -246636;1;0;false;false;;;;;; -246637;2;0;false;false;63;95;191;;; -246639;1;0;false;false;;;;;; -246640;4;0;false;false;63;95;191;;; -246644;1;0;false;false;;;;;; -246645;5;0;false;false;63;95;191;;; -246650;3;0;false;false;;;;;; -246653;1;0;false;false;63;95;191;;; -246654;1;0;false;false;;;;;; -246655;3;0;false;false;127;127;159;;; -246658;3;0;false;false;;;;;; -246661;1;0;false;false;63;95;191;;; -246662;1;0;false;false;;;;;; -246663;8;0;false;false;63;95;191;;; -246671;1;0;false;false;;;;;; -246672;2;0;false;false;63;95;191;;; -246674;1;0;false;false;;;;;; -246675;4;0;false;false;63;95;191;;; -246679;1;0;false;false;;;;;; -246680;6;0;false;false;63;95;191;;; -246686;2;0;false;false;;;;;; -246688;4;0;false;false;63;95;191;;; -246692;1;0;false;false;;;;;; -246693;10;0;false;false;63;95;191;;; -246703;1;0;false;false;;;;;; -246704;3;0;false;false;63;95;191;;; -246707;1;0;false;false;;;;;; -246708;9;0;false;false;63;95;191;;; -246717;1;0;false;false;;;;;; -246718;2;0;false;false;63;95;191;;; -246720;1;0;false;false;;;;;; -246721;5;0;false;false;63;95;191;;; -246726;1;0;false;false;;;;;; -246727;2;0;false;false;63;95;191;;; -246729;3;0;false;false;;;;;; -246732;1;0;false;false;63;95;191;;; -246733;1;0;false;false;;;;;; -246734;5;0;false;false;63;95;191;;; -246739;1;0;false;false;;;;;; -246740;10;0;false;false;63;95;191;;; -246750;2;0;false;false;;;;;; -246752;2;0;false;false;63;95;191;;; -246754;1;0;false;false;;;;;; -246755;1;0;false;false;63;95;191;;; -246756;1;0;false;false;;;;;; -246757;4;0;false;false;63;95;191;;; -246761;1;0;false;false;;;;;; -246762;6;0;false;false;63;95;191;;; -246768;1;0;false;false;;;;;; -246769;4;0;false;false;63;95;191;;; -246773;1;0;false;false;;;;;; -246774;8;0;false;false;63;95;191;;; -246782;1;0;false;false;;;;;; -246783;1;0;false;false;63;95;191;;; -246784;1;0;false;false;;;;;; -246785;11;0;false;false;63;95;191;;; -246796;1;0;false;false;;;;;; -246797;5;0;false;false;63;95;191;;; -246802;1;0;false;false;;;;;; -246803;3;0;false;false;63;95;191;;; -246806;4;0;false;false;;;;;; -246810;1;0;false;false;63;95;191;;; -246811;1;0;false;false;;;;;; -246812;3;0;false;false;63;95;191;;; -246815;1;0;false;false;;;;;; -246816;5;0;false;false;63;95;191;;; -246821;1;0;false;false;;;;;; -246822;10;0;false;false;63;95;191;;; -246832;1;0;false;false;;;;;; -246833;7;0;false;false;63;95;191;;; -246840;1;0;false;false;;;;;; -246841;4;0;false;false;63;95;191;;; -246845;1;0;false;false;;;;;; -246846;4;0;false;false;63;95;191;;; -246850;3;0;false;false;;;;;; -246853;1;0;false;false;63;95;191;;; -246854;1;0;false;false;;;;;; -246855;4;0;false;false;127;127;159;;; -246859;3;0;false;false;;;;;; -246862;1;0;false;false;63;95;191;;; -246863;3;0;false;false;;;;;; -246866;1;0;false;false;63;95;191;;; -246867;1;0;false;false;;;;;; -246868;7;1;false;false;127;159;191;;; -246875;5;0;false;false;63;95;191;;; -246880;1;0;false;false;;;;;; -246881;9;0;false;false;63;95;191;;; -246890;1;0;false;false;;;;;; -246891;5;0;false;false;63;95;191;;; -246896;1;0;false;false;;;;;; -246897;7;0;false;false;63;95;191;;; -246904;1;0;false;false;;;;;; -246905;3;0;false;false;63;95;191;;; -246908;1;0;false;false;;;;;; -246909;5;0;false;false;63;95;191;;; -246914;1;0;false;false;;;;;; -246915;4;0;false;false;63;95;191;;; -246919;1;0;false;false;;;;;; -246920;2;0;false;false;63;95;191;;; -246922;1;0;false;false;;;;;; -246923;6;0;false;false;63;95;191;;; -246929;1;0;false;false;;;;;; -246930;2;0;false;false;63;95;191;;; -246932;1;0;false;false;;;;;; -246933;3;0;false;false;63;95;191;;; -246936;4;0;false;false;;;;;; -246940;1;0;false;false;63;95;191;;; -246941;2;0;false;false;;;;;; -246943;9;0;false;false;63;95;191;;; -246952;1;0;false;false;;;;;; -246953;5;0;false;false;63;95;191;;; -246958;1;0;false;false;;;;;; -246959;4;0;false;false;63;95;191;;; -246963;1;0;false;false;;;;;; -246964;5;0;false;false;63;95;191;;; -246969;1;0;false;false;;;;;; -246970;1;0;false;false;63;95;191;;; -246971;1;0;false;false;;;;;; -246972;4;0;false;false;63;95;191;;; -246976;3;0;false;false;;;;;; -246979;1;0;false;false;63;95;191;;; -246980;1;0;false;false;;;;;; -246981;7;1;false;false;127;159;191;;; -246988;3;0;false;false;63;95;191;;; -246991;1;0;false;false;;;;;; -246992;9;0;false;false;63;95;191;;; -247001;1;0;false;false;;;;;; -247002;3;0;false;false;63;95;191;;; -247005;1;0;false;false;;;;;; -247006;6;0;false;false;63;95;191;;; -247012;3;0;false;false;;;;;; -247015;1;0;false;false;63;95;191;;; -247016;1;0;false;false;;;;;; -247017;5;1;false;false;127;159;191;;; -247022;27;0;false;false;63;95;191;;; -247049;3;0;false;false;;;;;; -247052;1;0;false;false;63;95;191;;; -247053;1;0;false;false;;;;;; -247054;11;1;false;false;127;159;191;;; -247065;12;0;false;false;63;95;191;;; -247077;1;0;false;false;;;;;; -247078;4;0;false;false;127;127;159;;; -247082;3;0;false;false;;;;;; -247085;1;0;false;false;63;95;191;;; -247086;4;0;false;false;;;;;; -247090;4;0;false;false;127;127;159;;; -247094;21;0;false;false;63;95;191;;; -247115;1;0;false;false;;;;;; -247116;1;0;false;false;127;127;159;;; -247117;1;0;false;false;;;;;; -247118;2;0;false;false;63;95;191;;; -247120;1;0;false;false;;;;;; -247121;3;0;false;false;63;95;191;;; -247124;1;0;false;false;;;;;; -247125;8;0;false;false;63;95;191;;; -247133;1;0;false;false;;;;;; -247134;3;0;false;false;63;95;191;;; -247137;1;0;false;false;;;;;; -247138;4;0;false;false;63;95;191;;; -247142;1;0;false;false;;;;;; -247143;8;0;false;false;63;95;191;;; -247151;5;0;false;false;127;127;159;;; -247156;3;0;false;false;;;;;; -247159;1;0;false;false;63;95;191;;; -247160;4;0;false;false;;;;;; -247164;4;0;false;false;127;127;159;;; -247168;27;0;false;false;63;95;191;;; -247195;1;0;false;false;;;;;; -247196;1;0;false;false;127;127;159;;; -247197;1;0;false;false;;;;;; -247198;2;0;false;false;63;95;191;;; -247200;1;0;false;false;;;;;; -247201;3;0;false;false;63;95;191;;; -247204;1;0;false;false;;;;;; -247205;6;0;false;false;63;95;191;;; -247211;1;0;false;false;;;;;; -247212;4;0;false;false;63;95;191;;; -247216;1;0;false;false;;;;;; -247217;3;0;false;false;63;95;191;;; -247220;1;0;false;false;;;;;; -247221;6;0;false;false;63;95;191;;; -247227;1;0;false;false;;;;;; -247228;4;0;false;false;63;95;191;;; -247232;1;0;false;false;;;;;; -247233;7;0;false;false;63;95;191;;; -247240;1;0;false;false;;;;;; -247241;3;0;false;false;63;95;191;;; -247244;1;0;false;false;;;;;; -247245;8;0;false;false;63;95;191;;; -247253;5;0;false;false;127;127;159;;; -247258;3;0;false;false;;;;;; -247261;1;0;false;false;63;95;191;;; -247262;1;0;false;false;;;;;; -247263;5;0;false;false;127;127;159;;; -247268;3;0;false;false;;;;;; -247271;1;0;false;false;63;95;191;;; -247272;1;0;false;false;;;;;; -247273;11;1;false;false;127;159;191;;; -247284;24;0;false;false;63;95;191;;; -247308;1;0;false;false;;;;;; -247309;4;0;false;false;127;127;159;;; -247313;3;0;false;false;;;;;; -247316;1;0;false;false;63;95;191;;; -247317;3;0;false;false;;;;;; -247320;4;0;false;false;127;127;159;;; -247324;22;0;false;false;63;95;191;;; -247346;1;0;false;false;;;;;; -247347;4;0;false;false;63;95;191;;; -247351;1;0;false;false;;;;;; -247352;6;0;false;false;63;95;191;;; -247358;1;0;false;false;;;;;; -247359;3;0;false;false;63;95;191;;; -247362;1;0;false;false;;;;;; -247363;5;0;false;false;63;95;191;;; -247368;1;0;false;false;;;;;; -247369;2;0;false;false;63;95;191;;; -247371;1;0;false;false;;;;;; -247372;3;0;false;false;63;95;191;;; -247375;1;0;false;false;;;;;; -247376;3;0;false;false;63;95;191;;; -247379;1;0;false;false;;;;;; -247380;2;0;false;false;63;95;191;;; -247382;1;0;false;false;;;;;; -247383;3;0;false;false;63;95;191;;; -247386;1;0;false;false;;;;;; -247387;9;0;false;false;63;95;191;;; -247396;1;0;false;false;;;;;; -247397;5;0;false;false;63;95;191;;; -247402;1;0;false;false;;;;;; -247403;2;0;false;false;63;95;191;;; -247405;1;0;false;false;;;;;; -247406;6;0;false;false;63;95;191;;; -247412;1;0;false;false;;;;;; -247413;1;0;false;false;63;95;191;;; -247414;4;0;false;false;;;;;; -247418;1;0;false;false;63;95;191;;; -247419;1;0;false;false;;;;;; -247420;5;0;false;false;63;95;191;;; -247425;1;0;false;false;;;;;; -247426;4;0;false;false;63;95;191;;; -247430;1;0;false;false;;;;;; -247431;4;0;false;false;63;95;191;;; -247435;1;0;false;false;;;;;; -247436;9;0;false;false;63;95;191;;; -247445;1;0;false;false;;;;;; -247446;4;0;false;false;63;95;191;;; -247450;1;0;false;false;;;;;; -247451;4;0;false;false;63;95;191;;; -247455;1;0;false;false;;;;;; -247456;7;0;false;false;63;95;191;;; -247463;1;0;false;false;;;;;; -247464;7;0;false;false;63;95;191;;; -247471;1;0;false;false;;;;;; -247472;2;0;false;false;63;95;191;;; -247474;1;0;false;false;;;;;; -247475;5;0;false;false;63;95;191;;; -247480;1;0;false;false;;;;;; -247481;2;0;false;false;63;95;191;;; -247483;1;0;false;false;;;;;; -247484;2;0;false;false;63;95;191;;; -247486;1;0;false;false;;;;;; -247487;5;0;false;false;63;95;191;;; -247492;1;0;false;false;;;;;; -247493;3;0;false;false;63;95;191;;; -247496;1;0;false;false;;;;;; -247497;4;0;false;false;63;95;191;;; -247501;1;0;false;false;;;;;; -247502;10;0;false;false;63;95;191;;; -247512;3;0;false;false;;;;;; -247515;1;0;false;false;63;95;191;;; -247516;1;0;false;false;;;;;; -247517;5;0;false;false;127;127;159;;; -247522;3;0;false;false;;;;;; -247525;2;0;false;false;63;95;191;;; -247527;2;0;false;false;;;;;; -247529;6;1;false;false;127;0;85;;; -247535;1;0;false;false;;;;;; -247536;4;1;false;false;127;0;85;;; -247540;1;0;false;false;;;;;; -247541;13;0;false;false;0;0;0;;; -247554;3;1;false;false;127;0;85;;; -247557;1;0;false;false;;;;;; -247558;6;0;false;false;0;0;0;;; -247564;1;0;false;false;;;;;; -247565;3;1;false;false;127;0;85;;; -247568;1;0;false;false;;;;;; -247569;4;0;false;false;0;0;0;;; -247573;1;0;false;false;;;;;; -247574;1;0;false;false;0;0;0;;; -247575;3;0;false;false;;;;;; -247578;47;0;false;false;63;127;95;;; -247625;1;0;false;false;;;;;; -247626;24;0;false;false;0;0;0;;; -247650;1;0;false;false;;;;;; -247651;3;0;false;false;0;0;0;;; -247654;1;0;false;false;;;;;; -247655;1;0;false;false;0;0;0;;; -247656;1;0;false;false;;;;;; -247657;7;0;false;false;0;0;0;;; -247664;3;0;false;false;;;;;; -247667;16;0;false;false;0;0;0;;; -247683;2;0;false;false;;;;;; -247685;1;0;false;false;0;0;0;;; -247686;2;0;false;false;;;;;; -247688;3;0;false;false;63;95;191;;; -247691;4;0;false;false;;;;;; -247695;1;0;false;false;63;95;191;;; -247696;1;0;false;false;;;;;; -247697;4;0;false;false;63;95;191;;; -247701;1;0;false;false;;;;;; -247702;3;0;false;false;63;95;191;;; -247705;1;0;false;false;;;;;; -247706;10;0;false;false;63;95;191;;; -247716;1;0;false;false;;;;;; -247717;3;0;false;false;63;95;191;;; -247720;1;0;false;false;;;;;; -247721;3;0;false;false;63;95;191;;; -247724;1;0;false;false;;;;;; -247725;9;0;false;false;63;95;191;;; -247734;1;0;false;false;;;;;; -247735;3;0;false;false;63;95;191;;; -247738;1;0;false;false;;;;;; -247739;3;0;false;false;63;95;191;;; -247742;1;0;false;false;;;;;; -247743;2;0;false;false;63;95;191;;; -247745;1;0;false;false;;;;;; -247746;8;0;false;false;63;95;191;;; -247754;1;0;false;false;;;;;; -247755;4;0;false;false;63;95;191;;; -247759;1;0;false;false;;;;;; -247760;13;0;false;false;63;95;191;;; -247773;1;0;false;false;;;;;; -247774;2;0;false;false;63;95;191;;; -247776;1;0;false;false;;;;;; -247777;6;0;false;false;63;95;191;;; -247783;4;0;false;false;;;;;; -247787;1;0;false;false;63;95;191;;; -247788;1;0;false;false;;;;;; -247789;3;0;false;false;63;95;191;;; -247792;1;0;false;false;;;;;; -247793;9;0;false;false;63;95;191;;; -247802;1;0;false;false;;;;;; -247803;4;0;false;false;63;95;191;;; -247807;1;0;false;false;;;;;; -247808;5;0;false;false;63;95;191;;; -247813;1;0;false;false;;;;;; -247814;1;0;false;false;63;95;191;;; -247815;1;0;false;false;;;;;; -247816;8;0;false;false;63;95;191;;; -247824;1;0;false;false;;;;;; -247825;6;0;false;false;63;95;191;;; -247831;1;0;false;false;;;;;; -247832;6;0;false;false;63;95;191;;; -247838;1;0;false;false;;;;;; -247839;3;0;false;false;63;95;191;;; -247842;1;0;false;false;;;;;; -247843;5;0;false;false;63;95;191;;; -247848;1;0;false;false;;;;;; -247849;2;0;false;false;63;95;191;;; -247851;1;0;false;false;;;;;; -247852;3;0;false;false;63;95;191;;; -247855;1;0;false;false;;;;;; -247856;6;0;false;false;63;95;191;;; -247862;1;0;false;false;;;;;; -247863;5;0;false;false;63;95;191;;; -247868;1;0;false;false;;;;;; -247869;2;0;false;false;63;95;191;;; -247871;1;0;false;false;;;;;; -247872;3;0;false;false;63;95;191;;; -247875;4;0;false;false;;;;;; -247879;1;0;false;false;63;95;191;;; -247880;1;0;false;false;;;;;; -247881;10;0;false;false;63;95;191;;; -247891;1;0;false;false;;;;;; -247892;3;0;false;false;127;127;159;;; -247895;3;0;false;false;;;;;; -247898;1;0;false;false;63;95;191;;; -247899;3;0;false;false;;;;;; -247902;1;0;false;false;63;95;191;;; -247903;1;0;false;false;;;;;; -247904;7;1;false;false;127;159;191;;; -247911;5;0;false;false;63;95;191;;; -247916;1;0;false;false;;;;;; -247917;6;0;false;false;63;95;191;;; -247923;1;0;false;false;;;;;; -247924;2;0;false;false;63;95;191;;; -247926;1;0;false;false;;;;;; -247927;3;0;false;false;63;95;191;;; -247930;1;0;false;false;;;;;; -247931;5;0;false;false;63;95;191;;; -247936;1;0;false;false;;;;;; -247937;8;0;false;false;63;95;191;;; -247945;1;0;false;false;;;;;; -247946;9;0;false;false;63;95;191;;; -247955;3;0;false;false;;;;;; -247958;1;0;false;false;63;95;191;;; -247959;1;0;false;false;;;;;; -247960;7;1;false;false;127;159;191;;; -247967;6;0;false;false;63;95;191;;; -247973;1;0;false;false;;;;;; -247974;6;0;false;false;63;95;191;;; -247980;1;0;false;false;;;;;; -247981;2;0;false;false;63;95;191;;; -247983;1;0;false;false;;;;;; -247984;10;0;false;false;63;95;191;;; -247994;1;0;false;false;;;;;; -247995;2;0;false;false;63;95;191;;; -247997;1;0;false;false;;;;;; -247998;6;0;false;false;63;95;191;;; -248004;3;0;false;false;;;;;; -248007;1;0;false;false;63;95;191;;; -248008;4;0;false;false;;;;;; -248012;1;0;false;false;63;95;191;;; -248013;1;0;false;false;;;;;; -248014;11;1;false;false;127;159;191;;; -248025;12;0;false;false;63;95;191;;; -248037;1;0;false;false;;;;;; -248038;4;0;false;false;127;127;159;;; -248042;3;0;false;false;;;;;; -248045;1;0;false;false;63;95;191;;; -248046;4;0;false;false;;;;;; -248050;4;0;false;false;127;127;159;;; -248054;21;0;false;false;63;95;191;;; -248075;1;0;false;false;;;;;; -248076;1;0;false;false;127;127;159;;; -248077;1;0;false;false;;;;;; -248078;2;0;false;false;63;95;191;;; -248080;1;0;false;false;;;;;; -248081;3;0;false;false;63;95;191;;; -248084;1;0;false;false;;;;;; -248085;8;0;false;false;63;95;191;;; -248093;1;0;false;false;;;;;; -248094;3;0;false;false;63;95;191;;; -248097;1;0;false;false;;;;;; -248098;4;0;false;false;63;95;191;;; -248102;1;0;false;false;;;;;; -248103;8;0;false;false;63;95;191;;; -248111;5;0;false;false;127;127;159;;; -248116;3;0;false;false;;;;;; -248119;1;0;false;false;63;95;191;;; -248120;4;0;false;false;;;;;; -248124;4;0;false;false;127;127;159;;; -248128;27;0;false;false;63;95;191;;; -248155;1;0;false;false;;;;;; -248156;1;0;false;false;127;127;159;;; -248157;1;0;false;false;;;;;; -248158;2;0;false;false;63;95;191;;; -248160;1;0;false;false;;;;;; -248161;3;0;false;false;63;95;191;;; -248164;1;0;false;false;;;;;; -248165;6;0;false;false;63;95;191;;; -248171;1;0;false;false;;;;;; -248172;4;0;false;false;63;95;191;;; -248176;1;0;false;false;;;;;; -248177;3;0;false;false;63;95;191;;; -248180;1;0;false;false;;;;;; -248181;6;0;false;false;63;95;191;;; -248187;1;0;false;false;;;;;; -248188;4;0;false;false;63;95;191;;; -248192;1;0;false;false;;;;;; -248193;7;0;false;false;63;95;191;;; -248200;1;0;false;false;;;;;; -248201;3;0;false;false;63;95;191;;; -248204;1;0;false;false;;;;;; -248205;8;0;false;false;63;95;191;;; -248213;5;0;false;false;127;127;159;;; -248218;3;0;false;false;;;;;; -248221;1;0;false;false;63;95;191;;; -248222;1;0;false;false;;;;;; -248223;5;0;false;false;127;127;159;;; -248228;3;0;false;false;;;;;; -248231;1;0;false;false;63;95;191;;; -248232;1;0;false;false;;;;;; -248233;11;1;false;false;127;159;191;;; -248244;24;0;false;false;63;95;191;;; -248268;1;0;false;false;;;;;; -248269;4;0;false;false;127;127;159;;; -248273;3;0;false;false;;;;;; -248276;1;0;false;false;63;95;191;;; -248277;3;0;false;false;;;;;; -248280;4;0;false;false;127;127;159;;; -248284;22;0;false;false;63;95;191;;; -248306;1;0;false;false;;;;;; -248307;4;0;false;false;63;95;191;;; -248311;1;0;false;false;;;;;; -248312;6;0;false;false;63;95;191;;; -248318;1;0;false;false;;;;;; -248319;3;0;false;false;63;95;191;;; -248322;1;0;false;false;;;;;; -248323;5;0;false;false;63;95;191;;; -248328;1;0;false;false;;;;;; -248329;2;0;false;false;63;95;191;;; -248331;1;0;false;false;;;;;; -248332;3;0;false;false;63;95;191;;; -248335;1;0;false;false;;;;;; -248336;3;0;false;false;63;95;191;;; -248339;1;0;false;false;;;;;; -248340;2;0;false;false;63;95;191;;; -248342;1;0;false;false;;;;;; -248343;3;0;false;false;63;95;191;;; -248346;1;0;false;false;;;;;; -248347;9;0;false;false;63;95;191;;; -248356;1;0;false;false;;;;;; -248357;5;0;false;false;63;95;191;;; -248362;1;0;false;false;;;;;; -248363;2;0;false;false;63;95;191;;; -248365;1;0;false;false;;;;;; -248366;6;0;false;false;63;95;191;;; -248372;1;0;false;false;;;;;; -248373;1;0;false;false;63;95;191;;; -248374;4;0;false;false;;;;;; -248378;1;0;false;false;63;95;191;;; -248379;1;0;false;false;;;;;; -248380;5;0;false;false;63;95;191;;; -248385;1;0;false;false;;;;;; -248386;4;0;false;false;63;95;191;;; -248390;1;0;false;false;;;;;; -248391;4;0;false;false;63;95;191;;; -248395;1;0;false;false;;;;;; -248396;9;0;false;false;63;95;191;;; -248405;1;0;false;false;;;;;; -248406;4;0;false;false;63;95;191;;; -248410;1;0;false;false;;;;;; -248411;4;0;false;false;63;95;191;;; -248415;1;0;false;false;;;;;; -248416;7;0;false;false;63;95;191;;; -248423;1;0;false;false;;;;;; -248424;7;0;false;false;63;95;191;;; -248431;1;0;false;false;;;;;; -248432;2;0;false;false;63;95;191;;; -248434;1;0;false;false;;;;;; -248435;5;0;false;false;63;95;191;;; -248440;1;0;false;false;;;;;; -248441;2;0;false;false;63;95;191;;; -248443;1;0;false;false;;;;;; -248444;2;0;false;false;63;95;191;;; -248446;1;0;false;false;;;;;; -248447;5;0;false;false;63;95;191;;; -248452;1;0;false;false;;;;;; -248453;3;0;false;false;63;95;191;;; -248456;1;0;false;false;;;;;; -248457;4;0;false;false;63;95;191;;; -248461;1;0;false;false;;;;;; -248462;10;0;false;false;63;95;191;;; -248472;3;0;false;false;;;;;; -248475;1;0;false;false;63;95;191;;; -248476;1;0;false;false;;;;;; -248477;5;0;false;false;127;127;159;;; -248482;3;0;false;false;;;;;; -248485;2;0;false;false;63;95;191;;; -248487;2;0;false;false;;;;;; -248489;6;1;false;false;127;0;85;;; -248495;1;0;false;false;;;;;; -248496;4;1;false;false;127;0;85;;; -248500;1;0;false;false;;;;;; -248501;18;0;false;false;0;0;0;;; -248519;3;1;false;false;127;0;85;;; -248522;1;0;false;false;;;;;; -248523;6;0;false;false;0;0;0;;; -248529;1;0;false;false;;;;;; -248530;3;1;false;false;127;0;85;;; -248533;1;0;false;false;;;;;; -248534;7;0;false;false;0;0;0;;; -248541;1;0;false;false;;;;;; -248542;1;0;false;false;0;0;0;;; -248543;3;0;false;false;;;;;; -248546;14;0;false;false;0;0;0;;; -248560;3;0;false;false;;;;;; -248563;3;1;false;false;127;0;85;;; -248566;1;0;false;false;;;;;; -248567;13;0;false;false;0;0;0;;; -248580;1;0;false;false;;;;;; -248581;1;0;false;false;0;0;0;;; -248582;1;0;false;false;;;;;; -248583;15;0;false;false;0;0;0;;; -248598;3;0;false;false;;;;;; -248601;5;0;false;false;0;0;0;;; -248606;1;0;false;false;;;;;; -248607;1;0;false;false;0;0;0;;; -248608;1;0;false;false;;;;;; -248609;11;0;false;false;0;0;0;;; -248620;1;0;false;false;;;;;; -248621;8;0;false;false;0;0;0;;; -248629;1;0;false;false;;;;;; -248630;7;0;false;false;0;0;0;;; -248637;1;0;false;false;;;;;; -248638;16;0;false;false;0;0;0;;; -248654;3;0;false;false;;;;;; -248657;3;1;false;false;127;0;85;;; -248660;1;0;false;false;;;;;; -248661;3;0;false;false;0;0;0;;; -248664;1;0;false;false;;;;;; -248665;1;0;false;false;0;0;0;;; -248666;1;0;false;false;;;;;; -248667;5;0;false;false;0;0;0;;; -248672;1;0;false;false;;;;;; -248673;1;0;false;false;0;0;0;;; -248674;1;0;false;false;;;;;; -248675;7;0;false;false;0;0;0;;; -248682;3;0;false;false;;;;;; -248685;2;1;false;false;127;0;85;;; -248687;1;0;false;false;;;;;; -248688;4;0;false;false;0;0;0;;; -248692;1;0;false;false;;;;;; -248693;1;0;false;false;0;0;0;;; -248694;1;0;false;false;;;;;; -248695;2;0;false;false;0;0;0;;; -248697;1;0;false;false;;;;;; -248698;1;0;false;false;0;0;0;;; -248699;4;0;false;false;;;;;; -248703;6;0;false;false;0;0;0;;; -248709;1;0;false;false;;;;;; -248710;1;0;false;false;0;0;0;;; -248711;1;0;false;false;;;;;; -248712;7;0;false;false;0;0;0;;; -248719;3;0;false;false;;;;;; -248722;1;0;false;false;0;0;0;;; -248723;1;0;false;false;;;;;; -248724;4;1;false;false;127;0;85;;; -248728;1;0;false;false;;;;;; -248729;1;0;false;false;0;0;0;;; -248730;4;0;false;false;;;;;; -248734;2;1;false;false;127;0;85;;; -248736;1;0;false;false;;;;;; -248737;4;0;false;false;0;0;0;;; -248741;1;0;false;false;;;;;; -248742;1;0;false;false;0;0;0;;; -248743;1;0;false;false;;;;;; -248744;14;0;false;false;0;0;0;;; -248758;1;0;false;false;;;;;; -248759;6;0;false;false;0;0;0;;; -248765;1;0;false;false;;;;;; -248766;1;0;false;false;0;0;0;;; -248767;1;0;false;false;;;;;; -248768;13;0;false;false;0;0;0;;; -248781;1;0;false;false;;;;;; -248782;1;0;false;false;0;0;0;;; -248783;1;0;false;false;;;;;; -248784;6;0;false;false;0;0;0;;; -248790;3;0;false;false;;;;;; -248793;1;0;false;false;0;0;0;;; -248794;3;0;false;false;;;;;; -248797;2;1;false;false;127;0;85;;; -248799;1;0;false;false;;;;;; -248800;23;0;false;false;0;0;0;;; -248823;1;0;false;false;;;;;; -248824;2;0;false;false;0;0;0;;; -248826;1;0;false;false;;;;;; -248827;21;0;false;false;0;0;0;;; -248848;1;0;false;false;;;;;; -248849;1;0;false;false;0;0;0;;; -248850;1;0;false;false;;;;;; -248851;8;0;false;false;0;0;0;;; -248859;1;0;false;false;;;;;; -248860;1;0;false;false;0;0;0;;; -248861;4;0;false;false;;;;;; -248865;71;0;false;false;63;127;95;;; -248936;2;0;false;false;;;;;; -248938;78;0;false;false;63;127;95;;; -249016;2;0;false;false;;;;;; -249018;29;0;false;false;63;127;95;;; -249047;2;0;false;false;;;;;; -249049;38;0;false;false;0;0;0;;; -249087;3;0;false;false;;;;;; -249090;1;0;false;false;0;0;0;;; -249091;8;0;false;false;;;;;; -249099;27;0;false;false;0;0;0;;; -249126;1;0;false;false;;;;;; -249127;7;0;false;false;0;0;0;;; -249134;1;0;false;false;;;;;; -249135;5;1;false;false;127;0;85;;; -249140;2;0;false;false;0;0;0;;; -249142;3;0;false;false;;;;;; -249145;52;0;false;false;63;127;95;;; -249197;1;0;false;false;;;;;; -249198;19;0;false;false;0;0;0;;; -249217;2;0;false;false;;;;;; -249219;1;0;false;false;0;0;0;;; -249220;2;0;false;false;;;;;; -249222;3;0;false;false;63;95;191;;; -249225;4;0;false;false;;;;;; -249229;1;0;false;false;63;95;191;;; -249230;1;0;false;false;;;;;; -249231;4;0;false;false;63;95;191;;; -249235;1;0;false;false;;;;;; -249236;3;0;false;false;63;95;191;;; -249239;1;0;false;false;;;;;; -249240;10;0;false;false;63;95;191;;; -249250;4;0;false;false;;;;;; -249254;1;0;false;false;63;95;191;;; -249255;1;0;false;false;;;;;; -249256;3;0;false;false;63;95;191;;; -249259;1;0;false;false;;;;;; -249260;3;0;false;false;63;95;191;;; -249263;1;0;false;false;;;;;; -249264;9;0;false;false;63;95;191;;; -249273;1;0;false;false;;;;;; -249274;3;0;false;false;63;95;191;;; -249277;1;0;false;false;;;;;; -249278;3;0;false;false;63;95;191;;; -249281;1;0;false;false;;;;;; -249282;2;0;false;false;63;95;191;;; -249284;1;0;false;false;;;;;; -249285;8;0;false;false;63;95;191;;; -249293;1;0;false;false;;;;;; -249294;4;0;false;false;63;95;191;;; -249298;1;0;false;false;;;;;; -249299;13;0;false;false;63;95;191;;; -249312;1;0;false;false;;;;;; -249313;2;0;false;false;63;95;191;;; -249315;1;0;false;false;;;;;; -249316;6;0;false;false;63;95;191;;; -249322;4;0;false;false;;;;;; -249326;1;0;false;false;63;95;191;;; -249327;1;0;false;false;;;;;; -249328;3;0;false;false;63;95;191;;; -249331;1;0;false;false;;;;;; -249332;9;0;false;false;63;95;191;;; -249341;1;0;false;false;;;;;; -249342;4;0;false;false;63;95;191;;; -249346;1;0;false;false;;;;;; -249347;5;0;false;false;63;95;191;;; -249352;3;0;false;false;;;;;; -249355;1;0;false;false;63;95;191;;; -249356;1;0;false;false;;;;;; -249357;3;0;false;false;127;127;159;;; -249360;3;0;false;false;;;;;; -249363;1;0;false;false;63;95;191;;; -249364;3;0;false;false;;;;;; -249367;1;0;false;false;63;95;191;;; -249368;1;0;false;false;;;;;; -249369;7;1;false;false;127;159;191;;; -249376;5;0;false;false;63;95;191;;; -249381;1;0;false;false;;;;;; -249382;6;0;false;false;63;95;191;;; -249388;1;0;false;false;;;;;; -249389;2;0;false;false;63;95;191;;; -249391;1;0;false;false;;;;;; -249392;3;0;false;false;63;95;191;;; -249395;1;0;false;false;;;;;; -249396;5;0;false;false;63;95;191;;; -249401;1;0;false;false;;;;;; -249402;8;0;false;false;63;95;191;;; -249410;1;0;false;false;;;;;; -249411;10;0;false;false;63;95;191;;; -249421;1;0;false;false;;;;;; -249422;5;0;false;false;63;95;191;;; -249427;1;0;false;false;;;;;; -249428;2;0;false;false;63;95;191;;; -249430;1;0;false;false;;;;;; -249431;1;0;false;false;63;95;191;;; -249432;1;0;false;false;;;;;; -249433;4;0;false;false;63;95;191;;; -249437;1;0;false;false;;;;;; -249438;2;0;false;false;63;95;191;;; -249440;1;0;false;false;;;;;; -249441;5;0;false;false;63;95;191;;; -249446;3;0;false;false;;;;;; -249449;1;0;false;false;63;95;191;;; -249450;1;0;false;false;;;;;; -249451;7;1;false;false;127;159;191;;; -249458;6;0;false;false;63;95;191;;; -249464;1;0;false;false;;;;;; -249465;6;0;false;false;63;95;191;;; -249471;1;0;false;false;;;;;; -249472;2;0;false;false;63;95;191;;; -249474;1;0;false;false;;;;;; -249475;10;0;false;false;63;95;191;;; -249485;1;0;false;false;;;;;; -249486;2;0;false;false;63;95;191;;; -249488;1;0;false;false;;;;;; -249489;7;0;false;false;63;95;191;;; -249496;1;0;false;false;;;;;; -249497;1;0;false;false;63;95;191;;; -249498;1;0;false;false;;;;;; -249499;20;0;false;false;63;95;191;;; -249519;1;0;false;false;;;;;; -249520;1;0;false;false;63;95;191;;; -249521;2;0;false;false;;;;;; -249523;34;0;false;false;63;95;191;;; -249557;1;0;false;false;;;;;; -249558;1;0;false;false;63;95;191;;; -249559;2;0;false;false;;;;;; -249561;1;0;false;false;63;95;191;;; -249562;1;0;false;false;;;;;; -249563;8;0;false;false;63;95;191;;; -249571;1;0;false;false;;;;;; -249572;6;0;false;false;63;95;191;;; -249578;1;0;false;false;;;;;; -249579;6;0;false;false;63;95;191;;; -249585;1;0;false;false;;;;;; -249586;3;0;false;false;63;95;191;;; -249589;1;0;false;false;;;;;; -249590;5;0;false;false;63;95;191;;; -249595;1;0;false;false;;;;;; -249596;2;0;false;false;63;95;191;;; -249598;1;0;false;false;;;;;; -249599;3;0;false;false;63;95;191;;; -249602;1;0;false;false;;;;;; -249603;9;0;false;false;63;95;191;;; -249612;1;0;false;false;;;;;; -249613;6;0;false;false;63;95;191;;; -249619;3;0;false;false;;;;;; -249622;1;0;false;false;63;95;191;;; -249623;1;0;false;false;;;;;; -249624;7;1;false;false;127;159;191;;; -249631;9;0;false;false;63;95;191;;; -249640;1;0;false;false;;;;;; -249641;1;0;false;false;63;95;191;;; -249642;1;0;false;false;;;;;; -249643;9;0;false;false;63;95;191;;; -249652;1;0;false;false;;;;;; -249653;5;0;false;false;63;95;191;;; -249658;1;0;false;false;;;;;; -249659;2;0;false;false;63;95;191;;; -249661;1;0;false;false;;;;;; -249662;4;0;false;false;63;95;191;;; -249666;1;0;false;false;;;;;; -249667;4;0;false;false;63;95;191;;; -249671;1;0;false;false;;;;;; -249672;3;0;false;false;63;95;191;;; -249675;1;0;false;false;;;;;; -249676;2;0;false;false;63;95;191;;; -249678;1;0;false;false;;;;;; -249679;4;0;false;false;63;95;191;;; -249683;1;0;false;false;;;;;; -249684;3;0;false;false;63;95;191;;; -249687;1;0;false;false;;;;;; -249688;4;0;false;false;63;95;191;;; -249692;4;0;false;false;;;;;; -249696;1;0;false;false;63;95;191;;; -249697;2;0;false;false;;;;;; -249699;3;0;false;false;63;95;191;;; -249702;1;0;false;false;;;;;; -249703;9;0;false;false;63;95;191;;; -249712;1;0;false;false;;;;;; -249713;2;0;false;false;63;95;191;;; -249715;1;0;false;false;;;;;; -249716;6;0;false;false;63;95;191;;; -249722;3;0;false;false;;;;;; -249725;2;0;false;false;63;95;191;;; -249727;2;0;false;false;;;;;; -249729;4;1;false;false;127;0;85;;; -249733;1;0;false;false;;;;;; -249734;21;0;false;false;0;0;0;;; -249755;3;1;false;false;127;0;85;;; -249758;1;0;false;false;;;;;; -249759;6;0;false;false;0;0;0;;; -249765;1;0;false;false;;;;;; -249766;3;1;false;false;127;0;85;;; -249769;1;0;false;false;;;;;; -249770;7;0;false;false;0;0;0;;; -249777;1;0;false;false;;;;;; -249778;7;1;false;false;127;0;85;;; -249785;1;0;false;false;;;;;; -249786;10;0;false;false;0;0;0;;; -249796;1;0;false;false;;;;;; -249797;1;0;false;false;0;0;0;;; -249798;3;0;false;false;;;;;; -249801;3;1;false;false;127;0;85;;; -249804;1;0;false;false;;;;;; -249805;3;0;false;false;0;0;0;;; -249808;1;0;false;false;;;;;; -249809;1;0;false;false;0;0;0;;; -249810;1;0;false;false;;;;;; -249811;5;0;false;false;0;0;0;;; -249816;1;0;false;false;;;;;; -249817;1;0;false;false;0;0;0;;; -249818;1;0;false;false;;;;;; -249819;7;0;false;false;0;0;0;;; -249826;6;0;false;false;;;;;; -249832;2;1;false;false;127;0;85;;; -249834;1;0;false;false;;;;;; -249835;6;0;false;false;0;0;0;;; -249841;1;0;false;false;;;;;; -249842;1;0;false;false;0;0;0;;; -249843;1;0;false;false;;;;;; -249844;4;0;false;false;0;0;0;;; -249848;1;0;false;false;;;;;; -249849;1;0;false;false;0;0;0;;; -249850;4;0;false;false;;;;;; -249854;3;1;false;false;127;0;85;;; -249857;1;0;false;false;;;;;; -249858;4;0;false;false;0;0;0;;; -249862;1;0;false;false;;;;;; -249863;1;0;false;false;0;0;0;;; -249864;1;0;false;false;;;;;; -249865;4;0;false;false;0;0;0;;; -249869;4;0;false;false;;;;;; -249873;3;0;false;false;0;0;0;;; -249876;1;0;false;false;;;;;; -249877;1;0;false;false;0;0;0;;; -249878;1;0;false;false;;;;;; -249879;6;0;false;false;0;0;0;;; -249885;4;0;false;false;;;;;; -249889;5;0;false;false;0;0;0;;; -249894;1;0;false;false;;;;;; -249895;1;0;false;false;0;0;0;;; -249896;1;0;false;false;;;;;; -249897;5;0;false;false;0;0;0;;; -249902;3;0;false;false;;;;;; -249905;1;0;false;false;0;0;0;;; -249906;3;0;false;false;;;;;; -249909;68;0;false;false;63;127;95;;; -249977;1;0;false;false;;;;;; -249978;15;0;false;false;63;127;95;;; -249993;1;0;false;false;;;;;; -249994;2;1;false;false;127;0;85;;; -249996;1;0;false;false;;;;;; -249997;12;0;false;false;0;0;0;;; -250009;1;0;false;false;;;;;; -250010;2;0;false;false;0;0;0;;; -250012;1;0;false;false;;;;;; -250013;5;0;false;false;0;0;0;;; -250018;1;0;false;false;;;;;; -250019;2;0;false;false;0;0;0;;; -250021;1;0;false;false;;;;;; -250022;11;0;false;false;0;0;0;;; -250033;1;0;false;false;;;;;; -250034;2;0;false;false;0;0;0;;; -250036;1;0;false;false;;;;;; -250037;3;0;false;false;0;0;0;;; -250040;1;0;false;false;;;;;; -250041;2;0;false;false;0;0;0;;; -250043;5;0;false;false;;;;;; -250048;7;0;false;false;0;0;0;;; -250055;1;0;false;false;;;;;; -250056;1;0;false;false;0;0;0;;; -250057;1;0;false;false;;;;;; -250058;1;0;false;false;0;0;0;;; -250059;1;0;false;false;;;;;; -250060;2;0;false;false;0;0;0;;; -250062;1;0;false;false;;;;;; -250063;15;0;false;false;0;0;0;;; -250078;1;0;false;false;;;;;; -250079;2;0;false;false;0;0;0;;; -250081;1;0;false;false;;;;;; -250082;12;0;false;false;0;0;0;;; -250094;1;0;false;false;;;;;; -250095;2;0;false;false;0;0;0;;; -250097;5;0;false;false;;;;;; -250102;7;0;false;false;0;0;0;;; -250109;1;0;false;false;;;;;; -250110;1;0;false;false;0;0;0;;; -250111;1;0;false;false;;;;;; -250112;1;0;false;false;0;0;0;;; -250113;1;0;false;false;;;;;; -250114;2;0;false;false;0;0;0;;; -250116;1;0;false;false;;;;;; -250117;15;0;false;false;0;0;0;;; -250132;1;0;false;false;;;;;; -250133;2;0;false;false;0;0;0;;; -250135;1;0;false;false;;;;;; -250136;13;0;false;false;0;0;0;;; -250149;1;0;false;false;;;;;; -250150;1;0;false;false;0;0;0;;; -250151;4;0;false;false;;;;;; -250155;26;0;false;false;0;0;0;;; -250181;4;0;false;false;;;;;; -250185;2;1;false;false;127;0;85;;; -250187;1;0;false;false;;;;;; -250188;7;0;false;false;0;0;0;;; -250195;1;0;false;false;;;;;; -250196;1;0;false;false;0;0;0;;; -250197;1;0;false;false;;;;;; -250198;2;0;false;false;0;0;0;;; -250200;1;0;false;false;;;;;; -250201;1;0;false;false;0;0;0;;; -250202;5;0;false;false;;;;;; -250207;15;0;false;false;0;0;0;;; -250222;1;0;false;false;;;;;; -250223;1;0;false;false;0;0;0;;; -250224;1;0;false;false;;;;;; -250225;11;0;false;false;0;0;0;;; -250236;1;0;false;false;;;;;; -250237;1;0;false;false;0;0;0;;; -250238;1;0;false;false;;;;;; -250239;4;0;false;false;0;0;0;;; -250243;5;0;false;false;;;;;; -250248;11;0;false;false;0;0;0;;; -250259;1;0;false;false;;;;;; -250260;1;0;false;false;0;0;0;;; -250261;1;0;false;false;;;;;; -250262;11;0;false;false;0;0;0;;; -250273;1;0;false;false;;;;;; -250274;1;0;false;false;0;0;0;;; -250275;1;0;false;false;;;;;; -250276;6;0;false;false;0;0;0;;; -250282;4;0;false;false;;;;;; -250286;1;0;false;false;0;0;0;;; -250287;4;0;false;false;;;;;; -250291;4;1;false;false;127;0;85;;; -250295;1;0;false;false;;;;;; -250296;1;0;false;false;0;0;0;;; -250297;5;0;false;false;;;;;; -250302;15;0;false;false;0;0;0;;; -250317;1;0;false;false;;;;;; -250318;1;0;false;false;0;0;0;;; -250319;1;0;false;false;;;;;; -250320;11;0;false;false;0;0;0;;; -250331;1;0;false;false;;;;;; -250332;1;0;false;false;0;0;0;;; -250333;1;0;false;false;;;;;; -250334;6;0;false;false;0;0;0;;; -250340;5;0;false;false;;;;;; -250345;11;0;false;false;0;0;0;;; -250356;1;0;false;false;;;;;; -250357;1;0;false;false;0;0;0;;; -250358;1;0;false;false;;;;;; -250359;11;0;false;false;0;0;0;;; -250370;1;0;false;false;;;;;; -250371;1;0;false;false;0;0;0;;; -250372;1;0;false;false;;;;;; -250373;4;0;false;false;0;0;0;;; -250377;4;0;false;false;;;;;; -250381;1;0;false;false;0;0;0;;; -250382;4;0;false;false;;;;;; -250386;32;0;false;false;0;0;0;;; -250418;1;0;false;false;;;;;; -250419;11;0;false;false;0;0;0;;; -250430;1;0;false;false;;;;;; -250431;1;0;false;false;0;0;0;;; -250432;1;0;false;false;;;;;; -250433;12;0;false;false;0;0;0;;; -250445;1;0;false;false;;;;;; -250446;4;1;false;false;127;0;85;;; -250450;2;0;false;false;0;0;0;;; -250452;3;0;false;false;;;;;; -250455;1;0;false;false;0;0;0;;; -250456;2;0;false;false;;;;;; -250458;1;0;false;false;0;0;0;;; -250459;2;0;false;false;;;;;; -250461;3;0;false;false;63;95;191;;; -250464;4;0;false;false;;;;;; -250468;1;0;false;false;63;95;191;;; -250469;1;0;false;false;;;;;; -250470;4;0;false;false;63;95;191;;; -250474;1;0;false;false;;;;;; -250475;3;0;false;false;63;95;191;;; -250478;1;0;false;false;;;;;; -250479;9;0;false;false;63;95;191;;; -250488;1;0;false;false;;;;;; -250489;6;0;false;false;63;95;191;;; -250495;1;0;false;false;;;;;; -250496;3;0;false;false;63;95;191;;; -250499;1;0;false;false;;;;;; -250500;3;0;false;false;63;95;191;;; -250503;1;0;false;false;;;;;; -250504;5;0;false;false;63;95;191;;; -250509;1;0;false;false;;;;;; -250510;10;0;false;false;63;95;191;;; -250520;1;0;false;false;;;;;; -250521;8;0;false;false;63;95;191;;; -250529;1;0;false;false;;;;;; -250530;6;0;false;false;63;95;191;;; -250536;1;0;false;false;;;;;; -250537;3;0;false;false;63;95;191;;; -250540;1;0;false;false;;;;;; -250541;3;0;false;false;63;95;191;;; -250544;3;0;false;false;;;;;; -250547;1;0;false;false;63;95;191;;; -250548;1;0;false;false;;;;;; -250549;9;0;false;false;63;95;191;;; -250558;1;0;false;false;;;;;; -250559;6;0;false;false;63;95;191;;; -250565;2;0;false;false;;;;;; -250567;8;0;false;false;63;95;191;;; -250575;1;0;false;false;;;;;; -250576;5;0;false;false;63;95;191;;; -250581;1;0;false;false;;;;;; -250582;6;0;false;false;63;95;191;;; -250588;1;0;false;false;;;;;; -250589;3;0;false;false;63;95;191;;; -250592;1;0;false;false;;;;;; -250593;8;0;false;false;63;95;191;;; -250601;1;0;false;false;;;;;; -250602;2;0;false;false;63;95;191;;; -250604;1;0;false;false;;;;;; -250605;4;0;false;false;63;95;191;;; -250609;1;0;false;false;;;;;; -250610;9;0;false;false;63;95;191;;; -250619;4;0;false;false;;;;;; -250623;1;0;false;false;63;95;191;;; -250624;1;0;false;false;;;;;; -250625;7;0;false;false;63;95;191;;; -250632;1;0;false;false;;;;;; -250633;4;0;false;false;63;95;191;;; -250637;1;0;false;false;;;;;; -250638;3;0;false;false;63;95;191;;; -250641;1;0;false;false;;;;;; -250642;3;0;false;false;63;95;191;;; -250645;1;0;false;false;;;;;; -250646;6;0;false;false;63;95;191;;; -250652;1;0;false;false;;;;;; -250653;2;0;false;false;63;95;191;;; -250655;1;0;false;false;;;;;; -250656;5;0;false;false;63;95;191;;; -250661;1;0;false;false;;;;;; -250662;2;0;false;false;63;95;191;;; -250664;1;0;false;false;;;;;; -250665;10;0;false;false;63;95;191;;; -250675;1;0;false;false;;;;;; -250676;6;0;false;false;63;95;191;;; -250682;1;0;false;false;;;;;; -250683;4;0;false;false;63;95;191;;; -250687;1;0;false;false;;;;;; -250688;13;0;false;false;63;95;191;;; -250701;4;0;false;false;;;;;; -250705;1;0;false;false;63;95;191;;; -250706;1;0;false;false;;;;;; -250707;4;0;false;false;63;95;191;;; -250711;1;0;false;false;;;;;; -250712;1;0;false;false;63;95;191;;; -250713;1;0;false;false;;;;;; -250714;10;0;false;false;63;95;191;;; -250724;1;0;false;false;;;;;; -250725;4;0;false;false;63;95;191;;; -250729;1;0;false;false;;;;;; -250730;3;0;false;false;63;95;191;;; -250733;1;0;false;false;;;;;; -250734;4;0;false;false;63;95;191;;; -250738;1;0;false;false;;;;;; -250739;11;0;false;false;63;95;191;;; -250750;4;0;false;false;;;;;; -250754;1;0;false;false;63;95;191;;; -250755;1;0;false;false;;;;;; -250756;3;0;false;false;127;127;159;;; -250759;3;0;false;false;;;;;; -250762;1;0;false;false;63;95;191;;; -250763;1;0;false;false;;;;;; -250764;6;0;false;false;63;95;191;;; -250770;1;0;false;false;;;;;; -250771;3;0;false;false;63;95;191;;; -250774;1;0;false;false;;;;;; -250775;2;0;false;false;63;95;191;;; -250777;1;0;false;false;;;;;; -250778;6;0;false;false;63;95;191;;; -250784;1;0;false;false;;;;;; -250785;2;0;false;false;63;95;191;;; -250787;1;0;false;false;;;;;; -250788;1;0;false;false;63;95;191;;; -250789;1;0;false;false;;;;;; -250790;17;0;false;false;63;95;191;;; -250807;1;0;false;false;;;;;; -250808;3;0;false;false;63;95;191;;; -250811;1;0;false;false;;;;;; -250812;4;0;false;false;63;95;191;;; -250816;1;0;false;false;;;;;; -250817;3;0;false;false;63;95;191;;; -250820;1;0;false;false;;;;;; -250821;5;0;false;false;63;95;191;;; -250826;1;0;false;false;;;;;; -250827;3;0;false;false;63;95;191;;; -250830;4;0;false;false;;;;;; -250834;1;0;false;false;63;95;191;;; -250835;1;0;false;false;;;;;; -250836;8;0;false;false;63;95;191;;; -250844;1;0;false;false;;;;;; -250845;9;0;false;false;63;95;191;;; -250854;1;0;false;false;;;;;; -250855;3;0;false;false;63;95;191;;; -250858;1;0;false;false;;;;;; -250859;7;0;false;false;63;95;191;;; -250866;3;0;false;false;;;;;; -250869;1;0;false;false;63;95;191;;; -250870;1;0;false;false;;;;;; -250871;4;0;false;false;127;127;159;;; -250875;3;0;false;false;;;;;; -250878;1;0;false;false;63;95;191;;; -250879;3;0;false;false;;;;;; -250882;1;0;false;false;63;95;191;;; -250883;1;0;false;false;;;;;; -250884;7;1;false;false;127;159;191;;; -250891;5;0;false;false;63;95;191;;; -250896;1;0;false;false;;;;;; -250897;10;0;false;false;63;95;191;;; -250907;1;0;false;false;;;;;; -250908;6;0;false;false;63;95;191;;; -250914;1;0;false;false;;;;;; -250915;10;0;false;false;63;95;191;;; -250925;1;0;false;false;;;;;; -250926;3;0;false;false;63;95;191;;; -250929;1;0;false;false;;;;;; -250930;5;0;false;false;63;95;191;;; -250935;1;0;false;false;;;;;; -250936;12;0;false;false;63;95;191;;; -250948;3;0;false;false;;;;;; -250951;1;0;false;false;63;95;191;;; -250952;1;0;false;false;;;;;; -250953;10;0;false;false;63;95;191;;; -250963;1;0;false;false;;;;;; -250964;3;0;false;false;63;95;191;;; -250967;1;0;false;false;;;;;; -250968;3;0;false;false;63;95;191;;; -250971;1;0;false;false;;;;;; -250972;5;0;false;false;63;95;191;;; -250977;1;0;false;false;;;;;; -250978;2;0;false;false;63;95;191;;; -250980;1;0;false;false;;;;;; -250981;3;0;false;false;63;95;191;;; -250984;1;0;false;false;;;;;; -250985;5;0;false;false;63;95;191;;; -250990;1;0;false;false;;;;;; -250991;6;0;false;false;63;95;191;;; -250997;1;0;false;false;;;;;; -250998;3;0;false;false;63;95;191;;; -251001;1;0;false;false;;;;;; -251002;2;0;false;false;63;95;191;;; -251004;1;0;false;false;;;;;; -251005;4;0;false;false;63;95;191;;; -251009;1;0;false;false;;;;;; -251010;2;0;false;false;63;95;191;;; -251012;1;0;false;false;;;;;; -251013;6;0;false;false;63;95;191;;; -251019;3;0;false;false;;;;;; -251022;1;0;false;false;63;95;191;;; -251023;1;0;false;false;;;;;; -251024;3;0;false;false;63;95;191;;; -251027;1;0;false;false;;;;;; -251028;7;0;false;false;63;95;191;;; -251035;3;0;false;false;;;;;; -251038;1;0;false;false;63;95;191;;; -251039;1;0;false;false;;;;;; -251040;11;1;false;false;127;159;191;;; -251051;12;0;false;false;63;95;191;;; -251063;1;0;false;false;;;;;; -251064;4;0;false;false;127;127;159;;; -251068;3;0;false;false;;;;;; -251071;1;0;false;false;63;95;191;;; -251072;4;0;false;false;;;;;; -251076;4;0;false;false;127;127;159;;; -251080;21;0;false;false;63;95;191;;; -251101;1;0;false;false;;;;;; -251102;1;0;false;false;127;127;159;;; -251103;1;0;false;false;;;;;; -251104;2;0;false;false;63;95;191;;; -251106;1;0;false;false;;;;;; -251107;3;0;false;false;63;95;191;;; -251110;1;0;false;false;;;;;; -251111;8;0;false;false;63;95;191;;; -251119;1;0;false;false;;;;;; -251120;3;0;false;false;63;95;191;;; -251123;1;0;false;false;;;;;; -251124;4;0;false;false;63;95;191;;; -251128;1;0;false;false;;;;;; -251129;8;0;false;false;63;95;191;;; -251137;5;0;false;false;127;127;159;;; -251142;3;0;false;false;;;;;; -251145;1;0;false;false;63;95;191;;; -251146;4;0;false;false;;;;;; -251150;4;0;false;false;127;127;159;;; -251154;27;0;false;false;63;95;191;;; -251181;1;0;false;false;;;;;; -251182;1;0;false;false;127;127;159;;; -251183;1;0;false;false;;;;;; -251184;2;0;false;false;63;95;191;;; -251186;1;0;false;false;;;;;; -251187;3;0;false;false;63;95;191;;; -251190;1;0;false;false;;;;;; -251191;6;0;false;false;63;95;191;;; -251197;1;0;false;false;;;;;; -251198;4;0;false;false;63;95;191;;; -251202;1;0;false;false;;;;;; -251203;3;0;false;false;63;95;191;;; -251206;1;0;false;false;;;;;; -251207;6;0;false;false;63;95;191;;; -251213;1;0;false;false;;;;;; -251214;4;0;false;false;63;95;191;;; -251218;1;0;false;false;;;;;; -251219;7;0;false;false;63;95;191;;; -251226;1;0;false;false;;;;;; -251227;3;0;false;false;63;95;191;;; -251230;1;0;false;false;;;;;; -251231;8;0;false;false;63;95;191;;; -251239;5;0;false;false;127;127;159;;; -251244;3;0;false;false;;;;;; -251247;1;0;false;false;63;95;191;;; -251248;1;0;false;false;;;;;; -251249;5;0;false;false;127;127;159;;; -251254;3;0;false;false;;;;;; -251257;1;0;false;false;63;95;191;;; -251258;1;0;false;false;;;;;; -251259;11;1;false;false;127;159;191;;; -251270;24;0;false;false;63;95;191;;; -251294;1;0;false;false;;;;;; -251295;4;0;false;false;127;127;159;;; -251299;3;0;false;false;;;;;; -251302;1;0;false;false;63;95;191;;; -251303;3;0;false;false;;;;;; -251306;4;0;false;false;127;127;159;;; -251310;19;0;false;false;63;95;191;;; -251329;1;0;false;false;;;;;; -251330;4;0;false;false;63;95;191;;; -251334;1;0;false;false;;;;;; -251335;3;0;false;false;63;95;191;;; -251338;1;0;false;false;;;;;; -251339;5;0;false;false;63;95;191;;; -251344;1;0;false;false;;;;;; -251345;5;0;false;false;63;95;191;;; -251350;1;0;false;false;;;;;; -251351;2;0;false;false;63;95;191;;; -251353;1;0;false;false;;;;;; -251354;7;0;false;false;63;95;191;;; -251361;1;0;false;false;;;;;; -251362;3;0;false;false;63;95;191;;; -251365;1;0;false;false;;;;;; -251366;5;0;false;false;63;95;191;;; -251371;1;0;false;false;;;;;; -251372;5;0;false;false;63;95;191;;; -251377;1;0;false;false;;;;;; -251378;2;0;false;false;63;95;191;;; -251380;1;0;false;false;;;;;; -251381;15;0;false;false;63;95;191;;; -251396;5;0;false;false;127;127;159;;; -251401;4;0;false;false;;;;;; -251405;1;0;false;false;63;95;191;;; -251406;1;0;false;false;;;;;; -251407;5;0;false;false;127;127;159;;; -251412;3;0;false;false;;;;;; -251415;2;0;false;false;63;95;191;;; -251417;2;0;false;false;;;;;; -251419;6;1;false;false;127;0;85;;; -251425;1;0;false;false;;;;;; -251426;4;1;false;false;127;0;85;;; -251430;1;0;false;false;;;;;; -251431;24;0;false;false;0;0;0;;; -251455;1;0;false;false;;;;;; -251456;6;0;false;false;0;0;0;;; -251462;1;0;false;false;;;;;; -251463;1;0;false;false;0;0;0;;; -251464;3;0;false;false;;;;;; -251467;14;0;false;false;0;0;0;;; -251481;6;0;false;false;;;;;; -251487;72;0;false;false;63;127;95;;; -251559;1;0;false;false;;;;;; -251560;2;1;false;false;127;0;85;;; -251562;1;0;false;false;;;;;; -251563;15;0;false;false;0;0;0;;; -251578;1;0;false;false;;;;;; -251579;1;0;false;false;0;0;0;;; -251580;4;0;false;false;;;;;; -251584;6;1;false;false;127;0;85;;; -251590;1;0;false;false;0;0;0;;; -251591;3;0;false;false;;;;;; -251594;1;0;false;false;0;0;0;;; -251595;4;0;false;false;;;;;; -251599;70;0;false;false;63;127;95;;; -251669;1;0;false;false;;;;;; -251670;2;1;false;false;127;0;85;;; -251672;1;0;false;false;;;;;; -251673;6;0;false;false;0;0;0;;; -251679;1;0;false;false;;;;;; -251680;2;0;false;false;0;0;0;;; -251682;1;0;false;false;;;;;; -251683;4;1;false;false;127;0;85;;; -251687;1;0;false;false;;;;;; -251688;2;0;false;false;0;0;0;;; -251690;1;0;false;false;;;;;; -251691;11;0;false;false;0;0;0;;; -251702;1;0;false;false;;;;;; -251703;1;0;false;false;0;0;0;;; -251704;1;0;false;false;;;;;; -251705;12;0;false;false;0;0;0;;; -251717;1;0;false;false;;;;;; -251718;1;0;false;false;0;0;0;;; -251719;1;0;false;false;;;;;; -251720;23;0;false;false;0;0;0;;; -251743;1;0;false;false;;;;;; -251744;1;0;false;false;0;0;0;;; -251745;4;0;false;false;;;;;; -251749;35;0;false;false;0;0;0;;; -251784;3;0;false;false;;;;;; -251787;1;0;false;false;0;0;0;;; -251788;5;0;false;false;;;;;; -251793;39;0;false;false;0;0;0;;; -251832;3;0;false;false;;;;;; -251835;2;1;false;false;127;0;85;;; -251837;1;0;false;false;;;;;; -251838;6;0;false;false;0;0;0;;; -251844;1;0;false;false;;;;;; -251845;2;0;false;false;0;0;0;;; -251847;1;0;false;false;;;;;; -251848;4;1;false;false;127;0;85;;; -251852;1;0;false;false;0;0;0;;; -251853;1;0;false;false;;;;;; -251854;1;0;false;false;0;0;0;;; -251855;4;0;false;false;;;;;; -251859;3;1;false;false;127;0;85;;; -251862;1;0;false;false;;;;;; -251863;9;0;false;false;0;0;0;;; -251872;1;0;false;false;;;;;; -251873;1;0;false;false;0;0;0;;; -251874;1;0;false;false;;;;;; -251875;37;0;false;false;0;0;0;;; -251912;4;0;false;false;;;;;; -251916;3;1;false;false;127;0;85;;; -251919;1;0;false;false;;;;;; -251920;8;0;false;false;0;0;0;;; -251928;1;0;false;false;;;;;; -251929;1;0;false;false;0;0;0;;; -251930;1;0;false;false;;;;;; -251931;35;0;false;false;0;0;0;;; -251966;1;0;false;false;;;;;; -251967;1;0;false;false;0;0;0;;; -251968;1;0;false;false;;;;;; -251969;14;0;false;false;0;0;0;;; -251983;4;0;false;false;;;;;; -251987;26;0;false;false;0;0;0;;; -252013;1;0;false;false;;;;;; -252014;8;0;false;false;0;0;0;;; -252022;1;0;false;false;;;;;; -252023;1;0;false;false;0;0;0;;; -252024;1;0;false;false;;;;;; -252025;9;0;false;false;0;0;0;;; -252034;1;0;false;false;;;;;; -252035;1;0;false;false;0;0;0;;; -252036;1;0;false;false;;;;;; -252037;2;0;false;false;0;0;0;;; -252039;1;0;false;false;;;;;; -252040;4;1;false;false;127;0;85;;; -252044;2;0;false;false;0;0;0;;; -252046;6;0;false;false;;;;;; -252052;60;0;false;false;63;127;95;;; -252112;2;0;false;false;;;;;; -252114;2;1;false;false;127;0;85;;; -252116;1;0;false;false;;;;;; -252117;25;0;false;false;0;0;0;;; -252142;1;0;false;false;;;;;; -252143;10;0;false;false;0;0;0;;; -252153;1;0;false;false;;;;;; -252154;1;0;false;false;0;0;0;;; -252155;5;0;false;false;;;;;; -252160;3;1;false;false;127;0;85;;; -252163;1;0;false;false;;;;;; -252164;7;0;false;false;0;0;0;;; -252171;1;0;false;false;;;;;; -252172;1;0;false;false;0;0;0;;; -252173;1;0;false;false;;;;;; -252174;9;0;false;false;0;0;0;;; -252183;1;0;false;false;;;;;; -252184;1;0;false;false;0;0;0;;; -252185;1;0;false;false;;;;;; -252186;10;0;false;false;0;0;0;;; -252196;1;0;false;false;;;;;; -252197;1;0;false;false;0;0;0;;; -252198;1;0;false;false;;;;;; -252199;21;0;false;false;0;0;0;;; -252220;5;0;false;false;;;;;; -252225;3;1;false;false;127;0;85;;; -252228;1;0;false;false;;;;;; -252229;11;0;false;false;0;0;0;;; -252240;1;0;false;false;;;;;; -252241;1;0;false;false;0;0;0;;; -252242;1;0;false;false;;;;;; -252243;9;0;false;false;0;0;0;;; -252252;1;0;false;false;;;;;; -252253;1;0;false;false;0;0;0;;; -252254;1;0;false;false;;;;;; -252255;2;0;false;false;0;0;0;;; -252257;1;0;false;false;;;;;; -252258;1;0;false;false;0;0;0;;; -252259;1;0;false;false;;;;;; -252260;10;0;false;false;0;0;0;;; -252270;1;0;false;false;;;;;; -252271;1;0;false;false;0;0;0;;; -252272;1;0;false;false;;;;;; -252273;21;0;false;false;0;0;0;;; -252294;7;0;false;false;;;;;; -252301;7;0;false;false;0;0;0;;; -252308;1;0;false;false;;;;;; -252309;8;0;false;false;0;0;0;;; -252317;1;0;false;false;;;;;; -252318;22;0;false;false;0;0;0;;; -252340;1;0;false;false;;;;;; -252341;11;0;false;false;0;0;0;;; -252352;1;0;false;false;;;;;; -252353;1;0;false;false;0;0;0;;; -252354;1;0;false;false;;;;;; -252355;8;0;false;false;0;0;0;;; -252363;1;0;false;false;;;;;; -252364;4;1;false;false;127;0;85;;; -252368;2;0;false;false;0;0;0;;; -252370;4;0;false;false;;;;;; -252374;1;0;false;false;0;0;0;;; -252375;3;0;false;false;;;;;; -252378;1;0;false;false;0;0;0;;; -252379;1;0;false;false;;;;;; -252380;4;1;false;false;127;0;85;;; -252384;1;0;false;false;;;;;; -252385;1;0;false;false;0;0;0;;; -252386;4;0;false;false;;;;;; -252390;24;0;false;false;63;127;95;;; -252414;2;0;false;false;;;;;; -252416;18;0;false;false;0;0;0;;; -252434;1;0;false;false;;;;;; -252435;23;0;false;false;0;0;0;;; -252458;1;0;false;false;;;;;; -252459;5;1;false;false;127;0;85;;; -252464;2;0;false;false;0;0;0;;; -252466;4;0;false;false;;;;;; -252470;9;0;false;false;0;0;0;;; -252479;3;0;false;false;;;;;; -252482;1;0;false;false;0;0;0;;; -252483;6;0;false;false;;;;;; -252489;54;0;false;false;63;127;95;;; -252543;1;0;false;false;;;;;; -252544;53;0;false;false;63;127;95;;; -252597;1;0;false;false;;;;;; -252598;18;0;false;false;63;127;95;;; -252616;1;0;false;false;;;;;; -252617;19;0;false;false;0;0;0;;; -252636;2;0;false;false;;;;;; -252638;1;0;false;false;0;0;0;;; -252639;2;0;false;false;;;;;; -252641;3;0;false;false;63;95;191;;; -252644;4;0;false;false;;;;;; -252648;1;0;false;false;63;95;191;;; -252649;1;0;false;false;;;;;; -252650;4;0;false;false;63;95;191;;; -252654;1;0;false;false;;;;;; -252655;6;0;false;false;63;95;191;;; -252661;1;0;false;false;;;;;; -252662;2;0;false;false;63;95;191;;; -252664;1;0;false;false;;;;;; -252665;2;0;false;false;63;95;191;;; -252667;1;0;false;false;;;;;; -252668;4;0;false;false;63;95;191;;; -252672;1;0;false;false;;;;;; -252673;3;0;false;false;63;95;191;;; -252676;1;0;false;false;;;;;; -252677;9;0;false;false;63;95;191;;; -252686;1;0;false;false;;;;;; -252687;3;0;false;false;63;95;191;;; -252690;1;0;false;false;;;;;; -252691;6;0;false;false;63;95;191;;; -252697;1;0;false;false;;;;;; -252698;8;0;false;false;63;95;191;;; -252706;1;0;false;false;;;;;; -252707;3;0;false;false;63;95;191;;; -252710;1;0;false;false;;;;;; -252711;6;0;false;false;63;95;191;;; -252717;4;0;false;false;;;;;; -252721;1;0;false;false;63;95;191;;; -252722;1;0;false;false;;;;;; -252723;2;0;false;false;63;95;191;;; -252725;1;0;false;false;;;;;; -252726;3;0;false;false;63;95;191;;; -252729;1;0;false;false;;;;;; -252730;6;0;false;false;63;95;191;;; -252736;1;0;false;false;;;;;; -252737;4;0;false;false;63;95;191;;; -252741;1;0;false;false;;;;;; -252742;2;0;false;false;63;95;191;;; -252744;1;0;false;false;;;;;; -252745;8;0;false;false;63;95;191;;; -252753;1;0;false;false;;;;;; -252754;4;0;false;false;63;95;191;;; -252758;1;0;false;false;;;;;; -252759;3;0;false;false;63;95;191;;; -252762;1;0;false;false;;;;;; -252763;5;0;false;false;63;95;191;;; -252768;1;0;false;false;;;;;; -252769;3;0;false;false;63;95;191;;; -252772;1;0;false;false;;;;;; -252773;2;0;false;false;63;95;191;;; -252775;1;0;false;false;;;;;; -252776;7;0;false;false;63;95;191;;; -252783;3;0;false;false;;;;;; -252786;1;0;false;false;63;95;191;;; -252787;1;0;false;false;;;;;; -252788;3;0;false;false;127;127;159;;; -252791;3;0;false;false;;;;;; -252794;1;0;false;false;63;95;191;;; -252795;1;0;false;false;;;;;; -252796;6;0;false;false;63;95;191;;; -252802;1;0;false;false;;;;;; -252803;3;0;false;false;63;95;191;;; -252806;1;0;false;false;;;;;; -252807;2;0;false;false;63;95;191;;; -252809;1;0;false;false;;;;;; -252810;6;0;false;false;63;95;191;;; -252816;1;0;false;false;;;;;; -252817;2;0;false;false;63;95;191;;; -252819;1;0;false;false;;;;;; -252820;1;0;false;false;63;95;191;;; -252821;1;0;false;false;;;;;; -252822;17;0;false;false;63;95;191;;; -252839;1;0;false;false;;;;;; -252840;3;0;false;false;63;95;191;;; -252843;1;0;false;false;;;;;; -252844;4;0;false;false;63;95;191;;; -252848;1;0;false;false;;;;;; -252849;3;0;false;false;63;95;191;;; -252852;1;0;false;false;;;;;; -252853;5;0;false;false;63;95;191;;; -252858;1;0;false;false;;;;;; -252859;3;0;false;false;63;95;191;;; -252862;4;0;false;false;;;;;; -252866;1;0;false;false;63;95;191;;; -252867;1;0;false;false;;;;;; -252868;8;0;false;false;63;95;191;;; -252876;1;0;false;false;;;;;; -252877;9;0;false;false;63;95;191;;; -252886;1;0;false;false;;;;;; -252887;3;0;false;false;63;95;191;;; -252890;1;0;false;false;;;;;; -252891;7;0;false;false;63;95;191;;; -252898;3;0;false;false;;;;;; -252901;1;0;false;false;63;95;191;;; -252902;1;0;false;false;;;;;; -252903;4;0;false;false;127;127;159;;; -252907;3;0;false;false;;;;;; -252910;1;0;false;false;63;95;191;;; -252911;3;0;false;false;;;;;; -252914;1;0;false;false;63;95;191;;; -252915;1;0;false;false;;;;;; -252916;7;1;false;false;127;159;191;;; -252923;6;0;false;false;63;95;191;;; -252929;1;0;false;false;;;;;; -252930;10;0;false;false;63;95;191;;; -252940;1;0;false;false;;;;;; -252941;7;0;false;false;63;95;191;;; -252948;1;0;false;false;;;;;; -252949;10;0;false;false;63;95;191;;; -252959;1;0;false;false;;;;;; -252960;3;0;false;false;63;95;191;;; -252963;1;0;false;false;;;;;; -252964;5;0;false;false;63;95;191;;; -252969;1;0;false;false;;;;;; -252970;12;0;false;false;63;95;191;;; -252982;3;0;false;false;;;;;; -252985;1;0;false;false;63;95;191;;; -252986;1;0;false;false;;;;;; -252987;3;0;false;false;63;95;191;;; -252990;1;0;false;false;;;;;; -252991;6;0;false;false;63;95;191;;; -252997;1;0;false;false;;;;;; -252998;6;0;false;false;63;95;191;;; -253004;1;0;false;false;;;;;; -253005;3;0;false;false;63;95;191;;; -253008;1;0;false;false;;;;;; -253009;8;0;false;false;63;95;191;;; -253017;1;0;false;false;;;;;; -253018;3;0;false;false;63;95;191;;; -253021;1;0;false;false;;;;;; -253022;5;0;false;false;63;95;191;;; -253027;1;0;false;false;;;;;; -253028;9;0;false;false;63;95;191;;; -253037;1;0;false;false;;;;;; -253038;2;0;false;false;63;95;191;;; -253040;1;0;false;false;;;;;; -253041;9;0;false;false;63;95;191;;; -253050;1;0;false;false;;;;;; -253051;2;0;false;false;63;95;191;;; -253053;4;0;false;false;;;;;; -253057;1;0;false;false;63;95;191;;; -253058;1;0;false;false;;;;;; -253059;3;0;false;false;63;95;191;;; -253062;1;0;false;false;;;;;; -253063;6;0;false;false;63;95;191;;; -253069;1;0;false;false;;;;;; -253070;2;0;false;false;63;95;191;;; -253072;1;0;false;false;;;;;; -253073;8;0;false;false;63;95;191;;; -253081;1;0;false;false;;;;;; -253082;4;0;false;false;63;95;191;;; -253086;1;0;false;false;;;;;; -253087;3;0;false;false;63;95;191;;; -253090;1;0;false;false;;;;;; -253091;2;0;false;false;63;95;191;;; -253093;1;0;false;false;;;;;; -253094;5;0;false;false;63;95;191;;; -253099;1;0;false;false;;;;;; -253100;3;0;false;false;63;95;191;;; -253103;1;0;false;false;;;;;; -253104;6;0;false;false;63;95;191;;; -253110;1;0;false;false;;;;;; -253111;4;0;false;false;63;95;191;;; -253115;1;0;false;false;;;;;; -253116;2;0;false;false;63;95;191;;; -253118;1;0;false;false;;;;;; -253119;2;0;false;false;63;95;191;;; -253121;1;0;false;false;;;;;; -253122;2;0;false;false;63;95;191;;; -253124;1;0;false;false;;;;;; -253125;6;0;false;false;63;95;191;;; -253131;3;0;false;false;;;;;; -253134;1;0;false;false;63;95;191;;; -253135;1;0;false;false;;;;;; -253136;11;1;false;false;127;159;191;;; -253147;12;0;false;false;63;95;191;;; -253159;1;0;false;false;;;;;; -253160;4;0;false;false;127;127;159;;; -253164;3;0;false;false;;;;;; -253167;1;0;false;false;63;95;191;;; -253168;4;0;false;false;;;;;; -253172;4;0;false;false;127;127;159;;; -253176;21;0;false;false;63;95;191;;; -253197;1;0;false;false;;;;;; -253198;1;0;false;false;127;127;159;;; -253199;1;0;false;false;;;;;; -253200;2;0;false;false;63;95;191;;; -253202;1;0;false;false;;;;;; -253203;3;0;false;false;63;95;191;;; -253206;1;0;false;false;;;;;; -253207;8;0;false;false;63;95;191;;; -253215;1;0;false;false;;;;;; -253216;3;0;false;false;63;95;191;;; -253219;1;0;false;false;;;;;; -253220;4;0;false;false;63;95;191;;; -253224;1;0;false;false;;;;;; -253225;8;0;false;false;63;95;191;;; -253233;5;0;false;false;127;127;159;;; -253238;3;0;false;false;;;;;; -253241;1;0;false;false;63;95;191;;; -253242;4;0;false;false;;;;;; -253246;4;0;false;false;127;127;159;;; -253250;27;0;false;false;63;95;191;;; -253277;1;0;false;false;;;;;; -253278;1;0;false;false;127;127;159;;; -253279;1;0;false;false;;;;;; -253280;2;0;false;false;63;95;191;;; -253282;1;0;false;false;;;;;; -253283;3;0;false;false;63;95;191;;; -253286;1;0;false;false;;;;;; -253287;6;0;false;false;63;95;191;;; -253293;1;0;false;false;;;;;; -253294;4;0;false;false;63;95;191;;; -253298;1;0;false;false;;;;;; -253299;3;0;false;false;63;95;191;;; -253302;1;0;false;false;;;;;; -253303;6;0;false;false;63;95;191;;; -253309;1;0;false;false;;;;;; -253310;4;0;false;false;63;95;191;;; -253314;1;0;false;false;;;;;; -253315;7;0;false;false;63;95;191;;; -253322;1;0;false;false;;;;;; -253323;3;0;false;false;63;95;191;;; -253326;1;0;false;false;;;;;; -253327;8;0;false;false;63;95;191;;; -253335;5;0;false;false;127;127;159;;; -253340;3;0;false;false;;;;;; -253343;1;0;false;false;63;95;191;;; -253344;1;0;false;false;;;;;; -253345;5;0;false;false;127;127;159;;; -253350;3;0;false;false;;;;;; -253353;1;0;false;false;63;95;191;;; -253354;1;0;false;false;;;;;; -253355;11;1;false;false;127;159;191;;; -253366;24;0;false;false;63;95;191;;; -253390;1;0;false;false;;;;;; -253391;4;0;false;false;127;127;159;;; -253395;3;0;false;false;;;;;; -253398;1;0;false;false;63;95;191;;; -253399;4;0;false;false;;;;;; -253403;4;0;false;false;127;127;159;;; -253407;19;0;false;false;63;95;191;;; -253426;1;0;false;false;;;;;; -253427;4;0;false;false;63;95;191;;; -253431;1;0;false;false;;;;;; -253432;8;0;false;false;63;95;191;;; -253440;1;0;false;false;;;;;; -253441;2;0;false;false;63;95;191;;; -253443;1;0;false;false;;;;;; -253444;4;0;false;false;63;95;191;;; -253448;5;0;false;false;127;127;159;;; -253453;3;0;false;false;;;;;; -253456;1;0;false;false;63;95;191;;; -253457;4;0;false;false;;;;;; -253461;4;0;false;false;127;127;159;;; -253465;19;0;false;false;63;95;191;;; -253484;1;0;false;false;;;;;; -253485;4;0;false;false;63;95;191;;; -253489;1;0;false;false;;;;;; -253490;3;0;false;false;63;95;191;;; -253493;1;0;false;false;;;;;; -253494;4;0;false;false;63;95;191;;; -253498;1;0;false;false;;;;;; -253499;2;0;false;false;63;95;191;;; -253501;1;0;false;false;;;;;; -253502;3;0;false;false;63;95;191;;; -253505;1;0;false;false;;;;;; -253506;5;0;false;false;63;95;191;;; -253511;1;0;false;false;;;;;; -253512;6;0;false;false;63;95;191;;; -253518;1;0;false;false;;;;;; -253519;2;0;false;false;63;95;191;;; -253521;1;0;false;false;;;;;; -253522;7;0;false;false;63;95;191;;; -253529;1;0;false;false;;;;;; -253530;3;0;false;false;63;95;191;;; -253533;1;0;false;false;;;;;; -253534;5;0;false;false;63;95;191;;; -253539;1;0;false;false;;;;;; -253540;5;0;false;false;63;95;191;;; -253545;1;0;false;false;;;;;; -253546;2;0;false;false;63;95;191;;; -253548;1;0;false;false;;;;;; -253549;15;0;false;false;63;95;191;;; -253564;5;0;false;false;127;127;159;;; -253569;4;0;false;false;;;;;; -253573;1;0;false;false;63;95;191;;; -253574;1;0;false;false;;;;;; -253575;5;0;false;false;127;127;159;;; -253580;3;0;false;false;;;;;; -253583;2;0;false;false;63;95;191;;; -253585;2;0;false;false;;;;;; -253587;6;1;false;false;127;0;85;;; -253593;1;0;false;false;;;;;; -253594;4;1;false;false;127;0;85;;; -253598;1;0;false;false;;;;;; -253599;27;0;false;false;0;0;0;;; -253626;1;0;false;false;;;;;; -253627;7;0;false;false;0;0;0;;; -253634;1;0;false;false;;;;;; -253635;1;0;false;false;0;0;0;;; -253636;3;0;false;false;;;;;; -253639;14;0;false;false;0;0;0;;; -253653;3;0;false;false;;;;;; -253656;72;0;false;false;63;127;95;;; -253728;1;0;false;false;;;;;; -253729;2;1;false;false;127;0;85;;; -253731;1;0;false;false;;;;;; -253732;15;0;false;false;0;0;0;;; -253747;1;0;false;false;;;;;; -253748;1;0;false;false;0;0;0;;; -253749;4;0;false;false;;;;;; -253753;6;1;false;false;127;0;85;;; -253759;1;0;false;false;0;0;0;;; -253760;3;0;false;false;;;;;; -253763;1;0;false;false;0;0;0;;; -253764;4;0;false;false;;;;;; -253768;2;1;false;false;127;0;85;;; -253770;1;0;false;false;;;;;; -253771;7;0;false;false;0;0;0;;; -253778;1;0;false;false;;;;;; -253779;2;0;false;false;0;0;0;;; -253781;1;0;false;false;;;;;; -253782;4;1;false;false;127;0;85;;; -253786;1;0;false;false;0;0;0;;; -253787;1;0;false;false;;;;;; -253788;1;0;false;false;0;0;0;;; -253789;5;0;false;false;;;;;; -253794;35;0;false;false;0;0;0;;; -253829;4;0;false;false;;;;;; -253833;1;0;false;false;0;0;0;;; -253834;4;0;false;false;;;;;; -253838;69;0;false;false;63;127;95;;; -253907;2;0;false;false;;;;;; -253909;18;0;false;false;63;127;95;;; -253927;2;0;false;false;;;;;; -253929;2;1;false;false;127;0;85;;; -253931;1;0;false;false;;;;;; -253932;14;0;false;false;0;0;0;;; -253946;1;0;false;false;;;;;; -253947;2;0;false;false;0;0;0;;; -253949;1;0;false;false;;;;;; -253950;2;0;false;false;0;0;0;;; -253952;1;0;false;false;;;;;; -253953;1;0;false;false;0;0;0;;; -253954;5;0;false;false;;;;;; -253959;10;0;false;false;0;0;0;;; -253969;1;0;false;false;;;;;; -253970;4;0;false;false;0;0;0;;; -253974;1;0;false;false;;;;;; -253975;1;0;false;false;0;0;0;;; -253976;1;0;false;false;;;;;; -253977;24;0;false;false;0;0;0;;; -254001;5;0;false;false;;;;;; -254006;3;1;false;false;127;0;85;;; -254009;1;0;false;false;;;;;; -254010;7;0;false;false;0;0;0;;; -254017;1;0;false;false;;;;;; -254018;1;0;false;false;0;0;0;;; -254019;1;0;false;false;;;;;; -254020;10;0;false;false;0;0;0;;; -254030;1;0;false;false;;;;;; -254031;1;0;false;false;0;0;0;;; -254032;1;0;false;false;;;;;; -254033;12;0;false;false;0;0;0;;; -254045;4;0;false;false;;;;;; -254049;3;1;false;false;127;0;85;;; -254052;1;0;false;false;;;;;; -254053;9;0;false;false;0;0;0;;; -254062;1;0;false;false;;;;;; -254063;1;0;false;false;0;0;0;;; -254064;1;0;false;false;;;;;; -254065;41;0;false;false;0;0;0;;; -254106;4;0;false;false;;;;;; -254110;3;1;false;false;127;0;85;;; -254113;1;0;false;false;;;;;; -254114;9;0;false;false;0;0;0;;; -254123;4;0;false;false;;;;;; -254127;2;1;false;false;127;0;85;;; -254129;1;0;false;false;;;;;; -254130;8;0;false;false;0;0;0;;; -254138;1;0;false;false;;;;;; -254139;1;0;false;false;0;0;0;;; -254140;1;0;false;false;;;;;; -254141;23;0;false;false;0;0;0;;; -254164;1;0;false;false;;;;;; -254165;1;0;false;false;0;0;0;;; -254166;5;0;false;false;;;;;; -254171;35;0;false;false;0;0;0;;; -254206;4;0;false;false;;;;;; -254210;1;0;false;false;0;0;0;;; -254211;6;0;false;false;;;;;; -254217;8;0;false;false;0;0;0;;; -254225;1;0;false;false;;;;;; -254226;1;0;false;false;0;0;0;;; -254227;1;0;false;false;;;;;; -254228;33;0;false;false;0;0;0;;; -254261;4;0;false;false;;;;;; -254265;49;0;false;false;63;127;95;;; -254314;2;0;false;false;;;;;; -254316;26;0;false;false;0;0;0;;; -254342;1;0;false;false;;;;;; -254343;8;0;false;false;0;0;0;;; -254351;1;0;false;false;;;;;; -254352;1;0;false;false;0;0;0;;; -254353;1;0;false;false;;;;;; -254354;9;0;false;false;0;0;0;;; -254363;1;0;false;false;;;;;; -254364;1;0;false;false;0;0;0;;; -254365;1;0;false;false;;;;;; -254366;2;0;false;false;0;0;0;;; -254368;1;0;false;false;;;;;; -254369;4;1;false;false;127;0;85;;; -254373;2;0;false;false;0;0;0;;; -254375;4;0;false;false;;;;;; -254379;1;0;false;false;0;0;0;;; -254380;4;0;false;false;;;;;; -254384;4;1;false;false;127;0;85;;; -254388;1;0;false;false;;;;;; -254389;1;0;false;false;0;0;0;;; -254390;4;0;false;false;;;;;; -254394;20;0;false;false;63;127;95;;; -254414;2;0;false;false;;;;;; -254416;18;0;false;false;0;0;0;;; -254434;1;0;false;false;;;;;; -254435;23;0;false;false;0;0;0;;; -254458;1;0;false;false;;;;;; -254459;5;1;false;false;127;0;85;;; -254464;2;0;false;false;0;0;0;;; -254466;4;0;false;false;;;;;; -254470;1;0;false;false;0;0;0;;; -254471;3;0;false;false;;;;;; -254474;41;0;false;false;0;0;0;;; -254515;3;0;false;false;;;;;; -254518;9;0;false;false;0;0;0;;; -254527;1;0;false;false;;;;;; -254528;55;0;false;false;63;127;95;;; -254583;1;0;false;false;;;;;; -254584;54;0;false;false;63;127;95;;; -254638;1;0;false;false;;;;;; -254639;53;0;false;false;63;127;95;;; -254692;1;0;false;false;;;;;; -254693;18;0;false;false;63;127;95;;; -254711;1;0;false;false;;;;;; -254712;19;0;false;false;0;0;0;;; -254731;2;0;false;false;;;;;; -254733;1;0;false;false;0;0;0;;; -254734;2;0;false;false;;;;;; -254736;3;0;false;false;63;95;191;;; -254739;4;0;false;false;;;;;; -254743;1;0;false;false;63;95;191;;; -254744;1;0;false;false;;;;;; -254745;4;0;false;false;63;95;191;;; -254749;1;0;false;false;;;;;; -254750;3;0;false;false;63;95;191;;; -254753;1;0;false;false;;;;;; -254754;3;0;false;false;63;95;191;;; -254757;1;0;false;false;;;;;; -254758;6;0;false;false;63;95;191;;; -254764;4;0;false;false;;;;;; -254768;1;0;false;false;63;95;191;;; -254769;1;0;false;false;;;;;; -254770;3;0;false;false;127;127;159;;; -254773;3;0;false;false;;;;;; -254776;1;0;false;false;63;95;191;;; -254777;3;0;false;false;;;;;; -254780;1;0;false;false;63;95;191;;; -254781;1;0;false;false;;;;;; -254782;7;1;false;false;127;159;191;;; -254789;4;0;false;false;63;95;191;;; -254793;1;0;false;false;;;;;; -254794;3;0;false;false;63;95;191;;; -254797;1;0;false;false;;;;;; -254798;5;0;false;false;63;95;191;;; -254803;1;0;false;false;;;;;; -254804;8;0;false;false;63;95;191;;; -254812;1;0;false;false;;;;;; -254813;2;0;false;false;63;95;191;;; -254815;1;0;false;false;;;;;; -254816;11;0;false;false;63;95;191;;; -254827;3;0;false;false;;;;;; -254830;1;0;false;false;63;95;191;;; -254831;1;0;false;false;;;;;; -254832;11;1;false;false;127;159;191;;; -254843;12;0;false;false;63;95;191;;; -254855;1;0;false;false;;;;;; -254856;4;0;false;false;127;127;159;;; -254860;3;0;false;false;;;;;; -254863;1;0;false;false;63;95;191;;; -254864;4;0;false;false;;;;;; -254868;4;0;false;false;127;127;159;;; -254872;21;0;false;false;63;95;191;;; -254893;1;0;false;false;;;;;; -254894;1;0;false;false;127;127;159;;; -254895;1;0;false;false;;;;;; -254896;2;0;false;false;63;95;191;;; -254898;1;0;false;false;;;;;; -254899;3;0;false;false;63;95;191;;; -254902;1;0;false;false;;;;;; -254903;8;0;false;false;63;95;191;;; -254911;1;0;false;false;;;;;; -254912;3;0;false;false;63;95;191;;; -254915;1;0;false;false;;;;;; -254916;4;0;false;false;63;95;191;;; -254920;1;0;false;false;;;;;; -254921;8;0;false;false;63;95;191;;; -254929;5;0;false;false;127;127;159;;; -254934;3;0;false;false;;;;;; -254937;1;0;false;false;63;95;191;;; -254938;4;0;false;false;;;;;; -254942;4;0;false;false;127;127;159;;; -254946;27;0;false;false;63;95;191;;; -254973;1;0;false;false;;;;;; -254974;1;0;false;false;127;127;159;;; -254975;1;0;false;false;;;;;; -254976;2;0;false;false;63;95;191;;; -254978;1;0;false;false;;;;;; -254979;3;0;false;false;63;95;191;;; -254982;1;0;false;false;;;;;; -254983;6;0;false;false;63;95;191;;; -254989;1;0;false;false;;;;;; -254990;4;0;false;false;63;95;191;;; -254994;1;0;false;false;;;;;; -254995;3;0;false;false;63;95;191;;; -254998;1;0;false;false;;;;;; -254999;6;0;false;false;63;95;191;;; -255005;1;0;false;false;;;;;; -255006;4;0;false;false;63;95;191;;; -255010;1;0;false;false;;;;;; -255011;7;0;false;false;63;95;191;;; -255018;1;0;false;false;;;;;; -255019;3;0;false;false;63;95;191;;; -255022;1;0;false;false;;;;;; -255023;8;0;false;false;63;95;191;;; -255031;5;0;false;false;127;127;159;;; -255036;3;0;false;false;;;;;; -255039;1;0;false;false;63;95;191;;; -255040;1;0;false;false;;;;;; -255041;5;0;false;false;127;127;159;;; -255046;3;0;false;false;;;;;; -255049;2;0;false;false;63;95;191;;; -255051;2;0;false;false;;;;;; -255053;6;1;false;false;127;0;85;;; -255059;1;0;false;false;;;;;; -255060;4;1;false;false;127;0;85;;; -255064;1;0;false;false;;;;;; -255065;8;0;false;false;0;0;0;;; -255073;3;1;false;false;127;0;85;;; -255076;1;0;false;false;;;;;; -255077;5;0;false;false;0;0;0;;; -255082;1;0;false;false;;;;;; -255083;1;0;false;false;0;0;0;;; -255084;3;0;false;false;;;;;; -255087;14;0;false;false;0;0;0;;; -255101;4;0;false;false;;;;;; -255105;9;0;false;false;0;0;0;;; -255114;1;0;false;false;;;;;; -255115;1;0;false;false;0;0;0;;; -255116;1;0;false;false;;;;;; -255117;5;0;false;false;0;0;0;;; -255122;3;0;false;false;;;;;; -255125;33;0;false;false;0;0;0;;; -255158;3;0;false;false;;;;;; -255161;2;1;false;false;127;0;85;;; -255163;1;0;false;false;;;;;; -255164;12;0;false;false;0;0;0;;; -255176;1;0;false;false;;;;;; -255177;1;0;false;false;0;0;0;;; -255178;1;0;false;false;;;;;; -255179;2;0;false;false;0;0;0;;; -255181;1;0;false;false;;;;;; -255182;1;0;false;false;0;0;0;;; -255183;4;0;false;false;;;;;; -255187;11;0;false;false;0;0;0;;; -255198;1;0;false;false;;;;;; -255199;1;0;false;false;0;0;0;;; -255200;1;0;false;false;;;;;; -255201;2;0;false;false;0;0;0;;; -255203;4;0;false;false;;;;;; -255207;12;0;false;false;0;0;0;;; -255219;4;0;false;false;;;;;; -255223;15;0;false;false;0;0;0;;; -255238;5;1;false;false;127;0;85;;; -255243;2;0;false;false;0;0;0;;; -255245;3;0;false;false;;;;;; -255248;1;0;false;false;0;0;0;;; -255249;3;0;false;false;;;;;; -255252;53;0;false;false;63;127;95;;; -255305;1;0;false;false;;;;;; -255306;18;0;false;false;0;0;0;;; -255324;1;0;false;false;;;;;; -255325;23;0;false;false;0;0;0;;; -255348;1;0;false;false;;;;;; -255349;5;1;false;false;127;0;85;;; -255354;2;0;false;false;0;0;0;;; -255356;3;0;false;false;;;;;; -255359;9;0;false;false;0;0;0;;; -255368;2;0;false;false;;;;;; -255370;1;0;false;false;0;0;0;;; -255371;2;0;false;false;;;;;; -255373;3;0;false;false;63;95;191;;; -255376;4;0;false;false;;;;;; -255380;1;0;false;false;63;95;191;;; -255381;1;0;false;false;;;;;; -255382;4;0;false;false;63;95;191;;; -255386;1;0;false;false;;;;;; -255387;3;0;false;false;63;95;191;;; -255390;1;0;false;false;;;;;; -255391;6;0;false;false;63;95;191;;; -255397;1;0;false;false;;;;;; -255398;8;0;false;false;63;95;191;;; -255406;4;0;false;false;;;;;; -255410;1;0;false;false;63;95;191;;; -255411;1;0;false;false;;;;;; -255412;2;0;false;false;63;95;191;;; -255414;1;0;false;false;;;;;; -255415;3;0;false;false;63;95;191;;; -255418;1;0;false;false;;;;;; -255419;6;0;false;false;63;95;191;;; -255425;1;0;false;false;;;;;; -255426;3;0;false;false;63;95;191;;; -255429;1;0;false;false;;;;;; -255430;3;0;false;false;63;95;191;;; -255433;1;0;false;false;;;;;; -255434;10;0;false;false;63;95;191;;; -255444;1;0;false;false;;;;;; -255445;5;0;false;false;63;95;191;;; -255450;1;0;false;false;;;;;; -255451;3;0;false;false;63;95;191;;; -255454;1;0;false;false;;;;;; -255455;6;0;false;false;63;95;191;;; -255461;1;0;false;false;;;;;; -255462;8;0;false;false;63;95;191;;; -255470;1;0;false;false;;;;;; -255471;4;0;false;false;63;95;191;;; -255475;1;0;false;false;;;;;; -255476;4;0;false;false;63;95;191;;; -255480;4;0;false;false;;;;;; -255484;1;0;false;false;63;95;191;;; -255485;1;0;false;false;;;;;; -255486;3;0;false;false;63;95;191;;; -255489;1;0;false;false;;;;;; -255490;5;0;false;false;63;95;191;;; -255495;1;0;false;false;;;;;; -255496;4;0;false;false;63;95;191;;; -255500;1;0;false;false;;;;;; -255501;3;0;false;false;63;95;191;;; -255504;1;0;false;false;;;;;; -255505;5;0;false;false;63;95;191;;; -255510;1;0;false;false;;;;;; -255511;4;0;false;false;63;95;191;;; -255515;1;0;false;false;;;;;; -255516;2;0;false;false;63;95;191;;; -255518;1;0;false;false;;;;;; -255519;8;0;false;false;63;95;191;;; -255527;1;0;false;false;;;;;; -255528;3;0;false;false;63;95;191;;; -255531;1;0;false;false;;;;;; -255532;3;0;false;false;63;95;191;;; -255535;1;0;false;false;;;;;; -255536;4;0;false;false;63;95;191;;; -255540;1;0;false;false;;;;;; -255541;2;0;false;false;63;95;191;;; -255543;1;0;false;false;;;;;; -255544;6;0;false;false;63;95;191;;; -255550;4;0;false;false;;;;;; -255554;1;0;false;false;63;95;191;;; -255555;1;0;false;false;;;;;; -255556;10;0;false;false;63;95;191;;; -255566;1;0;false;false;;;;;; -255567;1;0;false;false;63;95;191;;; -255568;1;0;false;false;;;;;; -255569;10;0;false;false;63;95;191;;; -255579;1;0;false;false;;;;;; -255580;4;0;false;false;63;95;191;;; -255584;1;0;false;false;;;;;; -255585;2;0;false;false;63;95;191;;; -255587;1;0;false;false;;;;;; -255588;7;0;false;false;63;95;191;;; -255595;1;0;false;false;;;;;; -255596;4;0;false;false;63;95;191;;; -255600;1;0;false;false;;;;;; -255601;6;0;false;false;63;95;191;;; -255607;1;0;false;false;;;;;; -255608;3;0;false;false;63;95;191;;; -255611;1;0;false;false;;;;;; -255612;4;0;false;false;63;95;191;;; -255616;1;0;false;false;;;;;; -255617;4;0;false;false;63;95;191;;; -255621;4;0;false;false;;;;;; -255625;1;0;false;false;63;95;191;;; -255626;1;0;false;false;;;;;; -255627;4;0;false;false;63;95;191;;; -255631;1;0;false;false;;;;;; -255632;3;0;false;false;63;95;191;;; -255635;1;0;false;false;;;;;; -255636;4;0;false;false;63;95;191;;; -255640;3;0;false;false;;;;;; -255643;1;0;false;false;63;95;191;;; -255644;1;0;false;false;;;;;; -255645;3;0;false;false;127;127;159;;; -255648;3;0;false;false;;;;;; -255651;1;0;false;false;63;95;191;;; -255652;1;0;false;false;;;;;; -255653;3;0;false;false;127;127;159;;; -255656;5;0;false;false;63;95;191;;; -255661;4;0;false;false;127;127;159;;; -255665;1;0;false;false;;;;;; -255666;4;0;false;false;63;95;191;;; -255670;1;0;false;false;;;;;; -255671;1;0;false;false;63;95;191;;; -255672;1;0;false;false;;;;;; -255673;6;0;false;false;63;95;191;;; -255679;1;0;false;false;;;;;; -255680;4;0;false;false;63;95;191;;; -255684;1;0;false;false;;;;;; -255685;2;0;false;false;63;95;191;;; -255687;1;0;false;false;;;;;; -255688;4;0;false;false;63;95;191;;; -255692;1;0;false;false;;;;;; -255693;6;0;false;false;63;95;191;;; -255699;1;0;false;false;;;;;; -255700;2;0;false;false;63;95;191;;; -255702;1;0;false;false;;;;;; -255703;3;0;false;false;63;95;191;;; -255706;1;0;false;false;;;;;; -255707;4;0;false;false;63;95;191;;; -255711;1;0;false;false;;;;;; -255712;3;0;false;false;63;95;191;;; -255715;1;0;false;false;;;;;; -255716;10;0;false;false;63;95;191;;; -255726;4;0;false;false;;;;;; -255730;1;0;false;false;63;95;191;;; -255731;1;0;false;false;;;;;; -255732;5;0;false;false;63;95;191;;; -255737;1;0;false;false;;;;;; -255738;2;0;false;false;63;95;191;;; -255740;1;0;false;false;;;;;; -255741;5;0;false;false;63;95;191;;; -255746;3;0;false;false;;;;;; -255749;1;0;false;false;63;95;191;;; -255750;1;0;false;false;;;;;; -255751;4;0;false;false;127;127;159;;; -255755;3;0;false;false;;;;;; -255758;1;0;false;false;63;95;191;;; -255759;3;0;false;false;;;;;; -255762;1;0;false;false;63;95;191;;; -255763;1;0;false;false;;;;;; -255764;7;1;false;false;127;159;191;;; -255771;4;0;false;false;63;95;191;;; -255775;1;0;false;false;;;;;; -255776;3;0;false;false;63;95;191;;; -255779;1;0;false;false;;;;;; -255780;6;0;false;false;63;95;191;;; -255786;1;0;false;false;;;;;; -255787;8;0;false;false;63;95;191;;; -255795;1;0;false;false;;;;;; -255796;8;0;false;false;63;95;191;;; -255804;1;0;false;false;;;;;; -255805;8;0;false;false;63;95;191;;; -255813;1;0;false;false;;;;;; -255814;8;0;false;false;63;95;191;;; -255822;1;0;false;false;;;;;; -255823;4;0;false;false;63;95;191;;; -255827;1;0;false;false;;;;;; -255828;6;0;false;false;63;95;191;;; -255834;4;0;false;false;;;;;; -255838;1;0;false;false;63;95;191;;; -255839;2;0;false;false;;;;;; -255841;4;0;false;false;63;95;191;;; -255845;1;0;false;false;;;;;; -255846;4;0;false;false;63;95;191;;; -255850;1;0;false;false;;;;;; -255851;3;0;false;false;63;95;191;;; -255854;1;0;false;false;;;;;; -255855;5;0;false;false;63;95;191;;; -255860;1;0;false;false;;;;;; -255861;10;0;false;false;63;95;191;;; -255871;1;0;false;false;;;;;; -255872;3;0;false;false;63;95;191;;; -255875;1;0;false;false;;;;;; -255876;3;0;false;false;63;95;191;;; -255879;1;0;false;false;;;;;; -255880;10;0;false;false;63;95;191;;; -255890;2;0;false;false;;;;;; -255892;3;0;false;false;63;95;191;;; -255895;3;0;false;false;;;;;; -255898;1;0;false;false;63;95;191;;; -255899;2;0;false;false;;;;;; -255901;7;0;false;false;63;95;191;;; -255908;1;0;false;false;;;;;; -255909;9;0;false;false;63;95;191;;; -255918;1;0;false;false;;;;;; -255919;2;0;false;false;63;95;191;;; -255921;1;0;false;false;;;;;; -255922;4;0;false;false;63;95;191;;; -255926;1;0;false;false;;;;;; -255927;10;0;false;false;63;95;191;;; -255937;3;0;false;false;;;;;; -255940;1;0;false;false;63;95;191;;; -255941;1;0;false;false;;;;;; -255942;11;1;false;false;127;159;191;;; -255953;12;0;false;false;63;95;191;;; -255965;1;0;false;false;;;;;; -255966;4;0;false;false;127;127;159;;; -255970;3;0;false;false;;;;;; -255973;1;0;false;false;63;95;191;;; -255974;4;0;false;false;;;;;; -255978;4;0;false;false;127;127;159;;; -255982;21;0;false;false;63;95;191;;; -256003;1;0;false;false;;;;;; -256004;1;0;false;false;127;127;159;;; -256005;1;0;false;false;;;;;; -256006;2;0;false;false;63;95;191;;; -256008;1;0;false;false;;;;;; -256009;3;0;false;false;63;95;191;;; -256012;1;0;false;false;;;;;; -256013;8;0;false;false;63;95;191;;; -256021;1;0;false;false;;;;;; -256022;3;0;false;false;63;95;191;;; -256025;1;0;false;false;;;;;; -256026;4;0;false;false;63;95;191;;; -256030;1;0;false;false;;;;;; -256031;8;0;false;false;63;95;191;;; -256039;5;0;false;false;127;127;159;;; -256044;3;0;false;false;;;;;; -256047;1;0;false;false;63;95;191;;; -256048;4;0;false;false;;;;;; -256052;4;0;false;false;127;127;159;;; -256056;27;0;false;false;63;95;191;;; -256083;1;0;false;false;;;;;; -256084;1;0;false;false;127;127;159;;; -256085;1;0;false;false;;;;;; -256086;2;0;false;false;63;95;191;;; -256088;1;0;false;false;;;;;; -256089;3;0;false;false;63;95;191;;; -256092;1;0;false;false;;;;;; -256093;6;0;false;false;63;95;191;;; -256099;1;0;false;false;;;;;; -256100;4;0;false;false;63;95;191;;; -256104;1;0;false;false;;;;;; -256105;3;0;false;false;63;95;191;;; -256108;1;0;false;false;;;;;; -256109;6;0;false;false;63;95;191;;; -256115;1;0;false;false;;;;;; -256116;4;0;false;false;63;95;191;;; -256120;1;0;false;false;;;;;; -256121;7;0;false;false;63;95;191;;; -256128;1;0;false;false;;;;;; -256129;3;0;false;false;63;95;191;;; -256132;1;0;false;false;;;;;; -256133;8;0;false;false;63;95;191;;; -256141;5;0;false;false;127;127;159;;; -256146;3;0;false;false;;;;;; -256149;1;0;false;false;63;95;191;;; -256150;1;0;false;false;;;;;; -256151;5;0;false;false;127;127;159;;; -256156;3;0;false;false;;;;;; -256159;1;0;false;false;63;95;191;;; -256160;1;0;false;false;;;;;; -256161;11;1;false;false;127;159;191;;; -256172;24;0;false;false;63;95;191;;; -256196;1;0;false;false;;;;;; -256197;4;0;false;false;127;127;159;;; -256201;3;0;false;false;;;;;; -256204;1;0;false;false;63;95;191;;; -256205;4;0;false;false;;;;;; -256209;4;0;false;false;127;127;159;;; -256213;19;0;false;false;63;95;191;;; -256232;1;0;false;false;;;;;; -256233;4;0;false;false;63;95;191;;; -256237;1;0;false;false;;;;;; -256238;6;0;false;false;63;95;191;;; -256244;1;0;false;false;;;;;; -256245;2;0;false;false;63;95;191;;; -256247;1;0;false;false;;;;;; -256248;4;0;false;false;63;95;191;;; -256252;5;0;false;false;127;127;159;;; -256257;3;0;false;false;;;;;; -256260;1;0;false;false;63;95;191;;; -256261;1;0;false;false;;;;;; -256262;5;0;false;false;127;127;159;;; -256267;3;0;false;false;;;;;; -256270;2;0;false;false;63;95;191;;; -256272;2;0;false;false;;;;;; -256274;6;1;false;false;127;0;85;;; -256280;1;0;false;false;;;;;; -256281;4;1;false;false;127;0;85;;; -256285;1;0;false;false;;;;;; -256286;14;0;false;false;0;0;0;;; -256300;1;0;false;false;;;;;; -256301;5;0;false;false;0;0;0;;; -256306;1;0;false;false;;;;;; -256307;1;0;false;false;0;0;0;;; -256308;3;0;false;false;;;;;; -256311;14;0;false;false;0;0;0;;; -256325;3;0;false;false;;;;;; -256328;5;0;false;false;0;0;0;;; -256333;1;0;false;false;;;;;; -256334;5;0;false;false;0;0;0;;; -256339;1;0;false;false;;;;;; -256340;1;0;false;false;0;0;0;;; -256341;1;0;false;false;;;;;; -256342;3;1;false;false;127;0;85;;; -256345;1;0;false;false;;;;;; -256346;8;0;false;false;0;0;0;;; -256354;6;0;false;false;;;;;; -256360;2;1;false;false;127;0;85;;; -256362;1;0;false;false;;;;;; -256363;5;0;false;false;0;0;0;;; -256368;1;0;false;false;;;;;; -256369;2;0;false;false;0;0;0;;; -256371;1;0;false;false;;;;;; -256372;4;1;false;false;127;0;85;;; -256376;1;0;false;false;0;0;0;;; -256377;1;0;false;false;;;;;; -256378;1;0;false;false;0;0;0;;; -256379;4;0;false;false;;;;;; -256383;35;0;false;false;0;0;0;;; -256418;3;0;false;false;;;;;; -256421;1;0;false;false;0;0;0;;; -256422;3;0;false;false;;;;;; -256425;11;0;false;false;0;0;0;;; -256436;1;0;false;false;;;;;; -256437;1;0;false;false;0;0;0;;; -256438;1;0;false;false;;;;;; -256439;2;0;false;false;0;0;0;;; -256441;3;0;false;false;;;;;; -256444;9;0;false;false;0;0;0;;; -256453;1;0;false;false;;;;;; -256454;1;0;false;false;0;0;0;;; -256455;1;0;false;false;;;;;; -256456;15;0;false;false;0;0;0;;; -256471;3;0;false;false;;;;;; -256474;10;0;false;false;0;0;0;;; -256484;1;0;false;false;;;;;; -256485;1;0;false;false;0;0;0;;; -256486;1;0;false;false;;;;;; -256487;5;0;false;false;0;0;0;;; -256492;3;0;false;false;;;;;; -256495;10;0;false;false;0;0;0;;; -256505;1;0;false;false;;;;;; -256506;1;0;false;false;0;0;0;;; -256507;1;0;false;false;;;;;; -256508;4;1;false;false;127;0;85;;; -256512;1;0;false;false;0;0;0;;; -256513;4;0;false;false;;;;;; -256517;27;0;false;false;0;0;0;;; -256544;1;0;false;false;;;;;; -256545;7;0;false;false;0;0;0;;; -256552;3;0;false;false;;;;;; -256555;2;1;false;false;127;0;85;;; -256557;1;0;false;false;;;;;; -256558;12;0;false;false;0;0;0;;; -256570;1;0;false;false;;;;;; -256571;1;0;false;false;0;0;0;;; -256572;4;0;false;false;;;;;; -256576;15;0;false;false;0;0;0;;; -256591;1;0;false;false;;;;;; -256592;15;0;false;false;0;0;0;;; -256607;1;0;false;false;;;;;; -256608;1;0;false;false;0;0;0;;; -256609;1;0;false;false;;;;;; -256610;4;1;false;false;127;0;85;;; -256614;1;0;false;false;0;0;0;;; -256615;8;0;false;false;;;;;; -256623;2;1;false;false;127;0;85;;; -256625;1;0;false;false;;;;;; -256626;29;0;false;false;0;0;0;;; -256655;1;0;false;false;;;;;; -256656;1;0;false;false;0;0;0;;; -256657;7;0;false;false;;;;;; -256664;15;0;false;false;0;0;0;;; -256679;1;0;false;false;;;;;; -256680;1;0;false;false;0;0;0;;; -256681;1;0;false;false;;;;;; -256682;3;1;false;false;127;0;85;;; -256685;1;0;false;false;;;;;; -256686;32;0;false;false;0;0;0;;; -256718;5;0;false;false;;;;;; -256723;21;0;false;false;0;0;0;;; -256744;1;0;false;false;;;;;; -256745;1;0;false;false;0;0;0;;; -256746;1;0;false;false;;;;;; -256747;12;0;false;false;0;0;0;;; -256759;5;0;false;false;;;;;; -256764;19;0;false;false;0;0;0;;; -256783;1;0;false;false;;;;;; -256784;1;0;false;false;0;0;0;;; -256785;1;0;false;false;;;;;; -256786;11;0;false;false;0;0;0;;; -256797;1;0;false;false;;;;;; -256798;1;0;false;false;0;0;0;;; -256799;1;0;false;false;;;;;; -256800;20;0;false;false;0;0;0;;; -256820;5;0;false;false;;;;;; -256825;20;0;false;false;0;0;0;;; -256845;1;0;false;false;;;;;; -256846;1;0;false;false;0;0;0;;; -256847;1;0;false;false;;;;;; -256848;33;0;false;false;0;0;0;;; -256881;1;0;false;false;;;;;; -256882;9;0;false;false;0;0;0;;; -256891;1;0;false;false;;;;;; -256892;1;0;false;false;0;0;0;;; -256893;1;0;false;false;;;;;; -256894;13;0;false;false;0;0;0;;; -256907;4;0;false;false;;;;;; -256911;1;0;false;false;0;0;0;;; -256912;4;0;false;false;;;;;; -256916;28;0;false;false;0;0;0;;; -256944;4;0;false;false;;;;;; -256948;23;0;false;false;0;0;0;;; -256971;5;0;false;false;;;;;; -256976;2;1;false;false;127;0;85;;; -256978;1;0;false;false;;;;;; -256979;16;0;false;false;0;0;0;;; -256995;1;0;false;false;;;;;; -256996;2;0;false;false;0;0;0;;; -256998;1;0;false;false;;;;;; -256999;4;1;false;false;127;0;85;;; -257003;1;0;false;false;0;0;0;;; -257004;1;0;false;false;;;;;; -257005;1;0;false;false;0;0;0;;; -257006;5;0;false;false;;;;;; -257011;31;0;false;false;0;0;0;;; -257042;1;0;false;false;;;;;; -257043;17;0;false;false;0;0;0;;; -257060;4;0;false;false;;;;;; -257064;1;0;false;false;0;0;0;;; -257065;3;0;false;false;;;;;; -257068;1;0;false;false;0;0;0;;; -257069;2;0;false;false;;;;;; -257071;1;0;false;false;0;0;0;;; -257072;2;0;false;false;;;;;; -257074;3;0;false;false;63;95;191;;; -257077;3;0;false;false;;;;;; -257080;1;0;false;false;63;95;191;;; -257081;1;0;false;false;;;;;; -257082;4;0;false;false;63;95;191;;; -257086;1;0;false;false;;;;;; -257087;3;0;false;false;63;95;191;;; -257090;1;0;false;false;;;;;; -257091;4;0;false;false;63;95;191;;; -257095;1;0;false;false;;;;;; -257096;5;0;false;false;63;95;191;;; -257101;1;0;false;false;;;;;; -257102;2;0;false;false;63;95;191;;; -257104;1;0;false;false;;;;;; -257105;3;0;false;false;63;95;191;;; -257108;1;0;false;false;;;;;; -257109;9;0;false;false;63;95;191;;; -257118;1;0;false;false;;;;;; -257119;6;0;false;false;63;95;191;;; -257125;1;0;false;false;;;;;; -257126;2;0;false;false;63;95;191;;; -257128;1;0;false;false;;;;;; -257129;11;0;false;false;63;95;191;;; -257140;3;0;false;false;;;;;; -257143;1;0;false;false;63;95;191;;; -257144;1;0;false;false;;;;;; -257145;3;0;false;false;127;127;159;;; -257148;3;0;false;false;;;;;; -257151;1;0;false;false;63;95;191;;; -257152;1;0;false;false;;;;;; -257153;3;0;false;false;63;95;191;;; -257156;1;0;false;false;;;;;; -257157;4;0;false;false;63;95;191;;; -257161;1;0;false;false;;;;;; -257162;5;0;false;false;63;95;191;;; -257167;1;0;false;false;;;;;; -257168;9;0;false;false;63;95;191;;; -257177;1;0;false;false;;;;;; -257178;3;0;false;false;63;95;191;;; -257181;1;0;false;false;;;;;; -257182;6;0;false;false;63;95;191;;; -257188;1;0;false;false;;;;;; -257189;2;0;false;false;63;95;191;;; -257191;1;0;false;false;;;;;; -257192;4;0;false;false;63;95;191;;; -257196;1;0;false;false;;;;;; -257197;4;0;false;false;63;95;191;;; -257201;3;0;false;false;;;;;; -257204;1;0;false;false;63;95;191;;; -257205;1;0;false;false;;;;;; -257206;3;0;false;false;63;95;191;;; -257209;1;0;false;false;;;;;; -257210;4;0;false;false;63;95;191;;; -257214;1;0;false;false;;;;;; -257215;3;0;false;false;63;95;191;;; -257218;1;0;false;false;;;;;; -257219;4;0;false;false;63;95;191;;; -257223;1;0;false;false;;;;;; -257224;4;0;false;false;63;95;191;;; -257228;1;0;false;false;;;;;; -257229;3;0;false;false;63;95;191;;; -257232;1;0;false;false;;;;;; -257233;7;0;false;false;63;95;191;;; -257240;3;0;false;false;;;;;; -257243;1;0;false;false;63;95;191;;; -257244;1;0;false;false;;;;;; -257245;4;0;false;false;127;127;159;;; -257249;3;0;false;false;;;;;; -257252;1;0;false;false;63;95;191;;; -257253;3;0;false;false;;;;;; -257256;1;0;false;false;63;95;191;;; -257257;1;0;false;false;;;;;; -257258;7;1;false;false;127;159;191;;; -257265;5;0;false;false;63;95;191;;; -257270;1;0;false;false;;;;;; -257271;3;0;false;false;63;95;191;;; -257274;1;0;false;false;;;;;; -257275;3;0;false;false;63;95;191;;; -257278;1;0;false;false;;;;;; -257279;4;0;false;false;63;95;191;;; -257283;1;0;false;false;;;;;; -257284;6;0;false;false;63;95;191;;; -257290;3;0;false;false;;;;;; -257293;1;0;false;false;63;95;191;;; -257294;1;0;false;false;;;;;; -257295;11;1;false;false;127;159;191;;; -257306;12;0;false;false;63;95;191;;; -257318;1;0;false;false;;;;;; -257319;4;0;false;false;127;127;159;;; -257323;3;0;false;false;;;;;; -257326;1;0;false;false;63;95;191;;; -257327;4;0;false;false;;;;;; -257331;4;0;false;false;127;127;159;;; -257335;21;0;false;false;63;95;191;;; -257356;1;0;false;false;;;;;; -257357;1;0;false;false;127;127;159;;; -257358;1;0;false;false;;;;;; -257359;2;0;false;false;63;95;191;;; -257361;1;0;false;false;;;;;; -257362;3;0;false;false;63;95;191;;; -257365;1;0;false;false;;;;;; -257366;8;0;false;false;63;95;191;;; -257374;1;0;false;false;;;;;; -257375;3;0;false;false;63;95;191;;; -257378;1;0;false;false;;;;;; -257379;4;0;false;false;63;95;191;;; -257383;1;0;false;false;;;;;; -257384;8;0;false;false;63;95;191;;; -257392;5;0;false;false;127;127;159;;; -257397;3;0;false;false;;;;;; -257400;1;0;false;false;63;95;191;;; -257401;4;0;false;false;;;;;; -257405;4;0;false;false;127;127;159;;; -257409;27;0;false;false;63;95;191;;; -257436;1;0;false;false;;;;;; -257437;1;0;false;false;127;127;159;;; -257438;1;0;false;false;;;;;; -257439;2;0;false;false;63;95;191;;; -257441;1;0;false;false;;;;;; -257442;3;0;false;false;63;95;191;;; -257445;1;0;false;false;;;;;; -257446;6;0;false;false;63;95;191;;; -257452;1;0;false;false;;;;;; -257453;4;0;false;false;63;95;191;;; -257457;1;0;false;false;;;;;; -257458;3;0;false;false;63;95;191;;; -257461;1;0;false;false;;;;;; -257462;6;0;false;false;63;95;191;;; -257468;1;0;false;false;;;;;; -257469;4;0;false;false;63;95;191;;; -257473;1;0;false;false;;;;;; -257474;7;0;false;false;63;95;191;;; -257481;1;0;false;false;;;;;; -257482;3;0;false;false;63;95;191;;; -257485;1;0;false;false;;;;;; -257486;8;0;false;false;63;95;191;;; -257494;5;0;false;false;127;127;159;;; -257499;3;0;false;false;;;;;; -257502;1;0;false;false;63;95;191;;; -257503;1;0;false;false;;;;;; -257504;5;0;false;false;127;127;159;;; -257509;3;0;false;false;;;;;; -257512;1;0;false;false;63;95;191;;; -257513;1;0;false;false;;;;;; -257514;11;1;false;false;127;159;191;;; -257525;24;0;false;false;63;95;191;;; -257549;1;0;false;false;;;;;; -257550;4;0;false;false;127;127;159;;; -257554;3;0;false;false;;;;;; -257557;1;0;false;false;63;95;191;;; -257558;3;0;false;false;;;;;; -257561;4;0;false;false;127;127;159;;; -257565;20;0;false;false;63;95;191;;; -257585;1;0;false;false;;;;;; -257586;4;0;false;false;63;95;191;;; -257590;1;0;false;false;;;;;; -257591;5;0;false;false;63;95;191;;; -257596;1;0;false;false;;;;;; -257597;2;0;false;false;63;95;191;;; -257599;1;0;false;false;;;;;; -257600;1;0;false;false;63;95;191;;; -257601;5;0;false;false;127;127;159;;; -257606;3;0;false;false;;;;;; -257609;1;0;false;false;63;95;191;;; -257610;1;0;false;false;;;;;; -257611;5;0;false;false;127;127;159;;; -257616;3;0;false;false;;;;;; -257619;2;0;false;false;63;95;191;;; -257621;2;0;false;false;;;;;; -257623;6;1;false;false;127;0;85;;; -257629;1;0;false;false;;;;;; -257630;4;1;false;false;127;0;85;;; -257634;1;0;false;false;;;;;; -257635;13;0;false;false;0;0;0;;; -257648;3;1;false;false;127;0;85;;; -257651;1;0;false;false;;;;;; -257652;6;0;false;false;0;0;0;;; -257658;1;0;false;false;;;;;; -257659;1;0;false;false;0;0;0;;; -257660;3;0;false;false;;;;;; -257663;14;0;false;false;0;0;0;;; -257677;3;0;false;false;;;;;; -257680;2;1;false;false;127;0;85;;; -257682;1;0;false;false;;;;;; -257683;6;0;false;false;0;0;0;;; -257689;1;0;false;false;;;;;; -257690;2;0;false;false;0;0;0;;; -257692;1;0;false;false;;;;;; -257693;2;0;false;false;0;0;0;;; -257695;1;0;false;false;;;;;; -257696;1;0;false;false;0;0;0;;; -257697;4;0;false;false;;;;;; -257701;36;0;false;false;0;0;0;;; -257737;3;0;false;false;;;;;; -257740;1;0;false;false;0;0;0;;; -257741;3;0;false;false;;;;;; -257744;9;0;false;false;0;0;0;;; -257753;1;0;false;false;;;;;; -257754;1;0;false;false;0;0;0;;; -257755;1;0;false;false;;;;;; -257756;6;0;false;false;0;0;0;;; -257762;2;0;false;false;;;;;; -257764;1;0;false;false;0;0;0;;; -257765;2;0;false;false;;;;;; -257767;3;0;false;false;63;95;191;;; -257770;3;0;false;false;;;;;; -257773;1;0;false;false;63;95;191;;; -257774;1;0;false;false;;;;;; -257775;4;0;false;false;63;95;191;;; -257779;1;0;false;false;;;;;; -257780;3;0;false;false;63;95;191;;; -257783;1;0;false;false;;;;;; -257784;3;0;false;false;63;95;191;;; -257787;1;0;false;false;;;;;; -257788;6;0;false;false;63;95;191;;; -257794;1;0;false;false;;;;;; -257795;2;0;false;false;63;95;191;;; -257797;1;0;false;false;;;;;; -257798;7;0;false;false;63;95;191;;; -257805;1;0;false;false;;;;;; -257806;2;0;false;false;63;95;191;;; -257808;1;0;false;false;;;;;; -257809;5;0;false;false;63;95;191;;; -257814;1;0;false;false;;;;;; -257815;2;0;false;false;63;95;191;;; -257817;1;0;false;false;;;;;; -257818;2;0;false;false;63;95;191;;; -257820;1;0;false;false;;;;;; -257821;4;0;false;false;63;95;191;;; -257825;1;0;false;false;;;;;; -257826;4;0;false;false;63;95;191;;; -257830;3;0;false;false;;;;;; -257833;1;0;false;false;63;95;191;;; -257834;1;0;false;false;;;;;; -257835;3;0;false;false;127;127;159;;; -257838;3;0;false;false;;;;;; -257841;1;0;false;false;63;95;191;;; -257842;1;0;false;false;;;;;; -257843;3;0;false;false;63;95;191;;; -257846;1;0;false;false;;;;;; -257847;3;0;false;false;63;95;191;;; -257850;1;0;false;false;;;;;; -257851;5;0;false;false;63;95;191;;; -257856;1;0;false;false;;;;;; -257857;2;0;false;false;63;95;191;;; -257859;1;0;false;false;;;;;; -257860;3;0;false;false;63;95;191;;; -257863;1;0;false;false;;;;;; -257864;5;0;false;false;63;95;191;;; -257869;1;0;false;false;;;;;; -257870;2;0;false;false;63;95;191;;; -257872;1;0;false;false;;;;;; -257873;3;0;false;false;63;95;191;;; -257876;1;0;false;false;;;;;; -257877;4;0;false;false;63;95;191;;; -257881;1;0;false;false;;;;;; -257882;4;0;false;false;63;95;191;;; -257886;1;0;false;false;;;;;; -257887;2;0;false;false;63;95;191;;; -257889;1;0;false;false;;;;;; -257890;9;0;false;false;63;95;191;;; -257899;1;0;false;false;;;;;; -257900;2;0;false;false;63;95;191;;; -257902;1;0;false;false;;;;;; -257903;3;0;false;false;63;95;191;;; -257906;1;0;false;false;;;;;; -257907;3;0;false;false;63;95;191;;; -257910;4;0;false;false;;;;;; -257914;1;0;false;false;63;95;191;;; -257915;1;0;false;false;;;;;; -257916;2;0;false;false;63;95;191;;; -257918;1;0;false;false;;;;;; -257919;3;0;false;false;63;95;191;;; -257922;1;0;false;false;;;;;; -257923;7;0;false;false;63;95;191;;; -257930;1;0;false;false;;;;;; -257931;3;0;false;false;63;95;191;;; -257934;1;0;false;false;;;;;; -257935;3;0;false;false;63;95;191;;; -257938;1;0;false;false;;;;;; -257939;5;0;false;false;63;95;191;;; -257944;1;0;false;false;;;;;; -257945;7;0;false;false;63;95;191;;; -257952;1;0;false;false;;;;;; -257953;4;0;false;false;63;95;191;;; -257957;1;0;false;false;;;;;; -257958;3;0;false;false;63;95;191;;; -257961;1;0;false;false;;;;;; -257962;6;0;false;false;63;95;191;;; -257968;1;0;false;false;;;;;; -257969;2;0;false;false;63;95;191;;; -257971;1;0;false;false;;;;;; -257972;9;0;false;false;63;95;191;;; -257981;3;0;false;false;;;;;; -257984;1;0;false;false;63;95;191;;; -257985;1;0;false;false;;;;;; -257986;8;0;false;false;63;95;191;;; -257994;1;0;false;false;;;;;; -257995;6;0;false;false;63;95;191;;; -258001;1;0;false;false;;;;;; -258002;4;0;false;false;63;95;191;;; -258006;1;0;false;false;;;;;; -258007;5;0;false;false;63;95;191;;; -258012;3;0;false;false;;;;;; -258015;1;0;false;false;63;95;191;;; -258016;1;0;false;false;;;;;; -258017;5;0;false;false;63;95;191;;; -258022;1;0;false;false;;;;;; -258023;3;0;false;false;63;95;191;;; -258026;1;0;false;false;;;;;; -258027;3;0;false;false;63;95;191;;; -258030;1;0;false;false;;;;;; -258031;5;0;false;false;63;95;191;;; -258036;1;0;false;false;;;;;; -258037;2;0;false;false;63;95;191;;; -258039;1;0;false;false;;;;;; -258040;5;0;false;false;63;95;191;;; -258045;1;0;false;false;;;;;; -258046;2;0;false;false;63;95;191;;; -258048;1;0;false;false;;;;;; -258049;1;0;false;false;63;95;191;;; -258050;1;0;false;false;;;;;; -258051;4;0;false;false;63;95;191;;; -258055;1;0;false;false;;;;;; -258056;3;0;false;false;63;95;191;;; -258059;1;0;false;false;;;;;; -258060;4;0;false;false;63;95;191;;; -258064;1;0;false;false;;;;;; -258065;2;0;false;false;63;95;191;;; -258067;1;0;false;false;;;;;; -258068;3;0;false;false;63;95;191;;; -258071;1;0;false;false;;;;;; -258072;2;0;false;false;63;95;191;;; -258074;1;0;false;false;;;;;; -258075;3;0;false;false;63;95;191;;; -258078;1;0;false;false;;;;;; -258079;7;0;false;false;63;95;191;;; -258086;3;0;false;false;;;;;; -258089;1;0;false;false;63;95;191;;; -258090;1;0;false;false;;;;;; -258091;4;0;false;false;127;127;159;;; -258095;3;0;false;false;;;;;; -258098;1;0;false;false;63;95;191;;; -258099;3;0;false;false;;;;;; -258102;1;0;false;false;63;95;191;;; -258103;1;0;false;false;;;;;; -258104;7;1;false;false;127;159;191;;; -258111;8;0;false;false;63;95;191;;; -258119;1;0;false;false;;;;;; -258120;3;0;false;false;63;95;191;;; -258123;1;0;false;false;;;;;; -258124;3;0;false;false;63;95;191;;; -258127;1;0;false;false;;;;;; -258128;6;0;false;false;63;95;191;;; -258134;1;0;false;false;;;;;; -258135;4;0;false;false;63;95;191;;; -258139;1;0;false;false;;;;;; -258140;2;0;false;false;63;95;191;;; -258142;1;0;false;false;;;;;; -258143;7;0;false;false;63;95;191;;; -258150;1;0;false;false;;;;;; -258151;1;0;false;false;63;95;191;;; -258152;1;0;false;false;;;;;; -258153;3;0;false;false;63;95;191;;; -258156;4;0;false;false;;;;;; -258160;1;0;false;false;63;95;191;;; -258161;2;0;false;false;;;;;; -258163;14;0;false;false;63;95;191;;; -258177;1;0;false;false;;;;;; -258178;1;0;false;false;127;127;159;;; -258179;1;0;false;false;;;;;; -258180;5;0;false;false;63;95;191;;; -258185;1;0;false;false;;;;;; -258186;7;0;false;false;63;95;191;;; -258193;1;0;false;false;;;;;; -258194;5;0;false;false;63;95;191;;; -258199;1;0;false;false;;;;;; -258200;3;0;false;false;63;95;191;;; -258203;1;0;false;false;;;;;; -258204;5;0;false;false;63;95;191;;; -258209;1;0;false;false;;;;;; -258210;2;0;false;false;63;95;191;;; -258212;1;0;false;false;;;;;; -258213;2;0;false;false;63;95;191;;; -258215;1;0;false;false;;;;;; -258216;5;0;false;false;63;95;191;;; -258221;1;0;false;false;;;;;; -258222;3;0;false;false;63;95;191;;; -258225;1;0;false;false;;;;;; -258226;5;0;false;false;63;95;191;;; -258231;4;0;false;false;;;;;; -258235;1;0;false;false;63;95;191;;; -258236;2;0;false;false;;;;;; -258238;7;0;false;false;63;95;191;;; -258245;1;0;false;false;;;;;; -258246;3;0;false;false;63;95;191;;; -258249;1;0;false;false;;;;;; -258250;7;0;false;false;63;95;191;;; -258257;1;0;false;false;;;;;; -258258;5;0;false;false;63;95;191;;; -258263;1;0;false;false;;;;;; -258264;2;0;false;false;63;95;191;;; -258266;1;0;false;false;;;;;; -258267;14;0;false;false;63;95;191;;; -258281;1;0;false;false;;;;;; -258282;1;0;false;false;127;127;159;;; -258283;1;0;false;false;;;;;; -258284;2;0;false;false;63;95;191;;; -258286;1;0;false;false;;;;;; -258287;2;0;false;false;63;95;191;;; -258289;1;0;false;false;;;;;; -258290;3;0;false;false;63;95;191;;; -258293;1;0;false;false;;;;;; -258294;2;0;false;false;63;95;191;;; -258296;1;0;false;false;;;;;; -258297;5;0;false;false;63;95;191;;; -258302;4;0;false;false;;;;;; -258306;1;0;false;false;63;95;191;;; -258307;2;0;false;false;;;;;; -258309;5;0;false;false;63;95;191;;; -258314;1;0;false;false;;;;;; -258315;4;0;false;false;63;95;191;;; -258319;1;0;false;false;;;;;; -258320;2;0;false;false;63;95;191;;; -258322;1;0;false;false;;;;;; -258323;8;0;false;false;63;95;191;;; -258331;1;0;false;false;;;;;; -258332;12;0;false;false;63;95;191;;; -258344;3;0;false;false;;;;;; -258347;1;0;false;false;63;95;191;;; -258348;1;0;false;false;;;;;; -258349;11;1;false;false;127;159;191;;; -258360;12;0;false;false;63;95;191;;; -258372;1;0;false;false;;;;;; -258373;4;0;false;false;127;127;159;;; -258377;3;0;false;false;;;;;; -258380;1;0;false;false;63;95;191;;; -258381;4;0;false;false;;;;;; -258385;4;0;false;false;127;127;159;;; -258389;21;0;false;false;63;95;191;;; -258410;1;0;false;false;;;;;; -258411;1;0;false;false;127;127;159;;; -258412;1;0;false;false;;;;;; -258413;2;0;false;false;63;95;191;;; -258415;1;0;false;false;;;;;; -258416;3;0;false;false;63;95;191;;; -258419;1;0;false;false;;;;;; -258420;8;0;false;false;63;95;191;;; -258428;1;0;false;false;;;;;; -258429;3;0;false;false;63;95;191;;; -258432;1;0;false;false;;;;;; -258433;4;0;false;false;63;95;191;;; -258437;1;0;false;false;;;;;; -258438;8;0;false;false;63;95;191;;; -258446;5;0;false;false;127;127;159;;; -258451;3;0;false;false;;;;;; -258454;1;0;false;false;63;95;191;;; -258455;4;0;false;false;;;;;; -258459;4;0;false;false;127;127;159;;; -258463;27;0;false;false;63;95;191;;; -258490;1;0;false;false;;;;;; -258491;1;0;false;false;127;127;159;;; -258492;1;0;false;false;;;;;; -258493;2;0;false;false;63;95;191;;; -258495;1;0;false;false;;;;;; -258496;3;0;false;false;63;95;191;;; -258499;1;0;false;false;;;;;; -258500;6;0;false;false;63;95;191;;; -258506;1;0;false;false;;;;;; -258507;4;0;false;false;63;95;191;;; -258511;1;0;false;false;;;;;; -258512;3;0;false;false;63;95;191;;; -258515;1;0;false;false;;;;;; -258516;6;0;false;false;63;95;191;;; -258522;1;0;false;false;;;;;; -258523;4;0;false;false;63;95;191;;; -258527;1;0;false;false;;;;;; -258528;7;0;false;false;63;95;191;;; -258535;1;0;false;false;;;;;; -258536;3;0;false;false;63;95;191;;; -258539;1;0;false;false;;;;;; -258540;8;0;false;false;63;95;191;;; -258548;5;0;false;false;127;127;159;;; -258553;3;0;false;false;;;;;; -258556;1;0;false;false;63;95;191;;; -258557;1;0;false;false;;;;;; -258558;5;0;false;false;127;127;159;;; -258563;3;0;false;false;;;;;; -258566;2;0;false;false;63;95;191;;; -258568;2;0;false;false;;;;;; -258570;6;1;false;false;127;0;85;;; -258576;1;0;false;false;;;;;; -258577;4;1;false;false;127;0;85;;; -258581;1;0;false;false;;;;;; -258582;12;0;false;false;0;0;0;;; -258594;3;1;false;false;127;0;85;;; -258597;1;0;false;false;;;;;; -258598;9;0;false;false;0;0;0;;; -258607;1;0;false;false;;;;;; -258608;1;0;false;false;0;0;0;;; -258609;3;0;false;false;;;;;; -258612;14;0;false;false;0;0;0;;; -258626;3;0;false;false;;;;;; -258629;3;1;false;false;127;0;85;;; -258632;1;0;false;false;;;;;; -258633;9;0;false;false;0;0;0;;; -258642;1;0;false;false;;;;;; -258643;1;0;false;false;0;0;0;;; -258644;1;0;false;false;;;;;; -258645;30;0;false;false;0;0;0;;; -258675;3;0;false;false;;;;;; -258678;3;1;false;false;127;0;85;;; -258681;1;0;false;false;;;;;; -258682;8;0;false;false;0;0;0;;; -258690;1;0;false;false;;;;;; -258691;1;0;false;false;0;0;0;;; -258692;1;0;false;false;;;;;; -258693;11;0;false;false;0;0;0;;; -258704;1;0;false;false;;;;;; -258705;19;0;false;false;0;0;0;;; -258724;1;0;false;false;;;;;; -258725;22;0;false;false;0;0;0;;; -258747;6;0;false;false;;;;;; -258753;2;1;false;false;127;0;85;;; -258755;1;0;false;false;;;;;; -258756;15;0;false;false;0;0;0;;; -258771;1;0;false;false;;;;;; -258772;2;0;false;false;0;0;0;;; -258774;1;0;false;false;;;;;; -258775;2;0;false;false;0;0;0;;; -258777;1;0;false;false;;;;;; -258778;1;0;false;false;0;0;0;;; -258779;4;0;false;false;;;;;; -258783;6;1;false;false;127;0;85;;; -258789;1;0;false;false;0;0;0;;; -258790;3;0;false;false;;;;;; -258793;1;0;false;false;0;0;0;;; -258794;4;0;false;false;;;;;; -258798;2;1;false;false;127;0;85;;; -258800;1;0;false;false;;;;;; -258801;9;0;false;false;0;0;0;;; -258810;1;0;false;false;;;;;; -258811;1;0;false;false;0;0;0;;; -258812;1;0;false;false;;;;;; -258813;2;0;false;false;0;0;0;;; -258815;1;0;false;false;;;;;; -258816;1;0;false;false;0;0;0;;; -258817;4;0;false;false;;;;;; -258821;8;0;false;false;0;0;0;;; -258829;1;0;false;false;;;;;; -258830;1;0;false;false;0;0;0;;; -258831;1;0;false;false;;;;;; -258832;2;0;false;false;0;0;0;;; -258834;3;0;false;false;;;;;; -258837;1;0;false;false;0;0;0;;; -258838;3;0;false;false;;;;;; -258841;4;1;false;false;127;0;85;;; -258845;4;0;false;false;;;;;; -258849;2;1;false;false;127;0;85;;; -258851;1;0;false;false;;;;;; -258852;9;0;false;false;0;0;0;;; -258861;1;0;false;false;;;;;; -258862;1;0;false;false;0;0;0;;; -258863;1;0;false;false;;;;;; -258864;9;0;false;false;0;0;0;;; -258873;1;0;false;false;;;;;; -258874;1;0;false;false;0;0;0;;; -258875;1;0;false;false;;;;;; -258876;9;0;false;false;0;0;0;;; -258885;1;0;false;false;;;;;; -258886;1;0;false;false;0;0;0;;; -258887;4;0;false;false;;;;;; -258891;8;0;false;false;0;0;0;;; -258899;1;0;false;false;;;;;; -258900;1;0;false;false;0;0;0;;; -258901;1;0;false;false;;;;;; -258902;9;0;false;false;0;0;0;;; -258911;1;0;false;false;;;;;; -258912;1;0;false;false;0;0;0;;; -258913;1;0;false;false;;;;;; -258914;9;0;false;false;0;0;0;;; -258923;3;0;false;false;;;;;; -258926;1;0;false;false;0;0;0;;; -258927;3;0;false;false;;;;;; -258930;2;1;false;false;127;0;85;;; -258932;1;0;false;false;;;;;; -258933;10;0;false;false;0;0;0;;; -258943;1;0;false;false;;;;;; -258944;1;0;false;false;0;0;0;;; -258945;4;0;false;false;;;;;; -258949;3;1;false;false;127;0;85;;; -258952;1;0;false;false;;;;;; -258953;17;0;false;false;0;0;0;;; -258970;1;0;false;false;;;;;; -258971;1;0;false;false;0;0;0;;; -258972;1;0;false;false;;;;;; -258973;41;0;false;false;0;0;0;;; -259014;4;0;false;false;;;;;; -259018;8;0;false;false;0;0;0;;; -259026;1;0;false;false;;;;;; -259027;1;0;false;false;0;0;0;;; -259028;1;0;false;false;;;;;; -259029;43;0;false;false;0;0;0;;; -259072;3;0;false;false;;;;;; -259075;1;0;false;false;0;0;0;;; -259076;3;0;false;false;;;;;; -259079;32;0;false;false;0;0;0;;; -259111;1;0;false;false;;;;;; -259112;1;0;false;false;0;0;0;;; -259113;1;0;false;false;;;;;; -259114;23;0;false;false;0;0;0;;; -259137;1;0;false;false;;;;;; -259138;4;1;false;false;127;0;85;;; -259142;2;0;false;false;0;0;0;;; -259144;2;0;false;false;;;;;; -259146;1;0;false;false;0;0;0;;; -259147;2;0;false;false;;;;;; -259149;3;0;false;false;63;95;191;;; -259152;3;0;false;false;;;;;; -259155;1;0;false;false;63;95;191;;; -259156;1;0;false;false;;;;;; -259157;4;0;false;false;63;95;191;;; -259161;1;0;false;false;;;;;; -259162;3;0;false;false;63;95;191;;; -259165;1;0;false;false;;;;;; -259166;3;0;false;false;63;95;191;;; -259169;1;0;false;false;;;;;; -259170;5;0;false;false;63;95;191;;; -259175;1;0;false;false;;;;;; -259176;7;0;false;false;63;95;191;;; -259183;1;0;false;false;;;;;; -259184;2;0;false;false;63;95;191;;; -259186;1;0;false;false;;;;;; -259187;7;0;false;false;63;95;191;;; -259194;1;0;false;false;;;;;; -259195;2;0;false;false;63;95;191;;; -259197;1;0;false;false;;;;;; -259198;5;0;false;false;63;95;191;;; -259203;1;0;false;false;;;;;; -259204;2;0;false;false;63;95;191;;; -259206;1;0;false;false;;;;;; -259207;2;0;false;false;63;95;191;;; -259209;1;0;false;false;;;;;; -259210;4;0;false;false;63;95;191;;; -259214;1;0;false;false;;;;;; -259215;4;0;false;false;63;95;191;;; -259219;3;0;false;false;;;;;; -259222;1;0;false;false;63;95;191;;; -259223;1;0;false;false;;;;;; -259224;3;0;false;false;127;127;159;;; -259227;3;0;false;false;;;;;; -259230;1;0;false;false;63;95;191;;; -259231;1;0;false;false;;;;;; -259232;3;0;false;false;63;95;191;;; -259235;1;0;false;false;;;;;; -259236;3;0;false;false;63;95;191;;; -259239;1;0;false;false;;;;;; -259240;5;0;false;false;63;95;191;;; -259245;1;0;false;false;;;;;; -259246;6;0;false;false;63;95;191;;; -259252;1;0;false;false;;;;;; -259253;2;0;false;false;63;95;191;;; -259255;1;0;false;false;;;;;; -259256;3;0;false;false;63;95;191;;; -259259;1;0;false;false;;;;;; -259260;8;0;false;false;63;95;191;;; -259268;1;0;false;false;;;;;; -259269;5;0;false;false;63;95;191;;; -259274;1;0;false;false;;;;;; -259275;6;0;false;false;63;95;191;;; -259281;1;0;false;false;;;;;; -259282;2;0;false;false;63;95;191;;; -259284;1;0;false;false;;;;;; -259285;3;0;false;false;63;95;191;;; -259288;1;0;false;false;;;;;; -259289;7;0;false;false;63;95;191;;; -259296;1;0;false;false;;;;;; -259297;3;0;false;false;63;95;191;;; -259300;3;0;false;false;;;;;; -259303;1;0;false;false;63;95;191;;; -259304;1;0;false;false;;;;;; -259305;6;0;false;false;63;95;191;;; -259311;1;0;false;false;;;;;; -259312;2;0;false;false;63;95;191;;; -259314;1;0;false;false;;;;;; -259315;8;0;false;false;63;95;191;;; -259323;1;0;false;false;;;;;; -259324;2;0;false;false;63;95;191;;; -259326;1;0;false;false;;;;;; -259327;4;0;false;false;63;95;191;;; -259331;1;0;false;false;;;;;; -259332;3;0;false;false;63;95;191;;; -259335;1;0;false;false;;;;;; -259336;5;0;false;false;63;95;191;;; -259341;1;0;false;false;;;;;; -259342;5;0;false;false;63;95;191;;; -259347;1;0;false;false;;;;;; -259348;8;0;false;false;63;95;191;;; -259356;1;0;false;false;;;;;; -259357;2;0;false;false;63;95;191;;; -259359;1;0;false;false;;;;;; -259360;2;0;false;false;63;95;191;;; -259362;1;0;false;false;;;;;; -259363;3;0;false;false;63;95;191;;; -259366;1;0;false;false;;;;;; -259367;4;0;false;false;63;95;191;;; -259371;3;0;false;false;;;;;; -259374;1;0;false;false;63;95;191;;; -259375;1;0;false;false;;;;;; -259376;3;0;false;false;63;95;191;;; -259379;1;0;false;false;;;;;; -259380;3;0;false;false;63;95;191;;; -259383;1;0;false;false;;;;;; -259384;5;0;false;false;63;95;191;;; -259389;1;0;false;false;;;;;; -259390;2;0;false;false;63;95;191;;; -259392;1;0;false;false;;;;;; -259393;8;0;false;false;63;95;191;;; -259401;1;0;false;false;;;;;; -259402;2;0;false;false;63;95;191;;; -259404;1;0;false;false;;;;;; -259405;3;0;false;false;63;95;191;;; -259408;1;0;false;false;;;;;; -259409;13;0;false;false;63;95;191;;; -259422;1;0;false;false;;;;;; -259423;3;0;false;false;63;95;191;;; -259426;1;0;false;false;;;;;; -259427;5;0;false;false;63;95;191;;; -259432;3;0;false;false;;;;;; -259435;1;0;false;false;63;95;191;;; -259436;1;0;false;false;;;;;; -259437;5;0;false;false;63;95;191;;; -259442;1;0;false;false;;;;;; -259443;3;0;false;false;63;95;191;;; -259446;1;0;false;false;;;;;; -259447;3;0;false;false;63;95;191;;; -259450;1;0;false;false;;;;;; -259451;5;0;false;false;63;95;191;;; -259456;1;0;false;false;;;;;; -259457;2;0;false;false;63;95;191;;; -259459;1;0;false;false;;;;;; -259460;5;0;false;false;63;95;191;;; -259465;1;0;false;false;;;;;; -259466;2;0;false;false;63;95;191;;; -259468;1;0;false;false;;;;;; -259469;1;0;false;false;63;95;191;;; -259470;1;0;false;false;;;;;; -259471;4;0;false;false;63;95;191;;; -259475;1;0;false;false;;;;;; -259476;3;0;false;false;63;95;191;;; -259479;1;0;false;false;;;;;; -259480;4;0;false;false;63;95;191;;; -259484;1;0;false;false;;;;;; -259485;2;0;false;false;63;95;191;;; -259487;1;0;false;false;;;;;; -259488;3;0;false;false;63;95;191;;; -259491;1;0;false;false;;;;;; -259492;2;0;false;false;63;95;191;;; -259494;1;0;false;false;;;;;; -259495;3;0;false;false;63;95;191;;; -259498;1;0;false;false;;;;;; -259499;7;0;false;false;63;95;191;;; -259506;3;0;false;false;;;;;; -259509;1;0;false;false;63;95;191;;; -259510;1;0;false;false;;;;;; -259511;4;0;false;false;127;127;159;;; -259515;3;0;false;false;;;;;; -259518;1;0;false;false;63;95;191;;; -259519;3;0;false;false;;;;;; -259522;1;0;false;false;63;95;191;;; -259523;1;0;false;false;;;;;; -259524;7;1;false;false;127;159;191;;; -259531;5;0;false;false;63;95;191;;; -259536;1;0;false;false;;;;;; -259537;3;0;false;false;63;95;191;;; -259540;1;0;false;false;;;;;; -259541;3;0;false;false;63;95;191;;; -259544;1;0;false;false;;;;;; -259545;5;0;false;false;63;95;191;;; -259550;1;0;false;false;;;;;; -259551;7;0;false;false;63;95;191;;; -259558;1;0;false;false;;;;;; -259559;4;0;false;false;63;95;191;;; -259563;1;0;false;false;;;;;; -259564;2;0;false;false;63;95;191;;; -259566;1;0;false;false;;;;;; -259567;7;0;false;false;63;95;191;;; -259574;1;0;false;false;;;;;; -259575;1;0;false;false;63;95;191;;; -259576;1;0;false;false;;;;;; -259577;3;0;false;false;63;95;191;;; -259580;4;0;false;false;;;;;; -259584;1;0;false;false;63;95;191;;; -259585;2;0;false;false;;;;;; -259587;15;0;false;false;63;95;191;;; -259602;1;0;false;false;;;;;; -259603;1;0;false;false;127;127;159;;; -259604;1;0;false;false;;;;;; -259605;7;0;false;false;63;95;191;;; -259612;1;0;false;false;;;;;; -259613;5;0;false;false;63;95;191;;; -259618;1;0;false;false;;;;;; -259619;3;0;false;false;63;95;191;;; -259622;1;0;false;false;;;;;; -259623;5;0;false;false;63;95;191;;; -259628;1;0;false;false;;;;;; -259629;1;0;false;false;63;95;191;;; -259630;1;0;false;false;;;;;; -259631;17;0;false;false;63;95;191;;; -259648;1;0;false;false;;;;;; -259649;2;0;false;false;63;95;191;;; -259651;1;0;false;false;;;;;; -259652;3;0;false;false;63;95;191;;; -259655;3;0;false;false;;;;;; -259658;1;0;false;false;63;95;191;;; -259659;2;0;false;false;;;;;; -259661;2;0;false;false;63;95;191;;; -259663;1;0;false;false;;;;;; -259664;5;0;false;false;63;95;191;;; -259669;1;0;false;false;;;;;; -259670;6;0;false;false;63;95;191;;; -259676;1;0;false;false;;;;;; -259677;4;0;false;false;63;95;191;;; -259681;1;0;false;false;;;;;; -259682;2;0;false;false;63;95;191;;; -259684;1;0;false;false;;;;;; -259685;8;0;false;false;63;95;191;;; -259693;1;0;false;false;;;;;; -259694;12;0;false;false;63;95;191;;; -259706;3;0;false;false;;;;;; -259709;1;0;false;false;63;95;191;;; -259710;1;0;false;false;;;;;; -259711;11;1;false;false;127;159;191;;; -259722;12;0;false;false;63;95;191;;; -259734;1;0;false;false;;;;;; -259735;4;0;false;false;127;127;159;;; -259739;3;0;false;false;;;;;; -259742;1;0;false;false;63;95;191;;; -259743;4;0;false;false;;;;;; -259747;4;0;false;false;127;127;159;;; -259751;21;0;false;false;63;95;191;;; -259772;1;0;false;false;;;;;; -259773;1;0;false;false;127;127;159;;; -259774;1;0;false;false;;;;;; -259775;2;0;false;false;63;95;191;;; -259777;1;0;false;false;;;;;; -259778;3;0;false;false;63;95;191;;; -259781;1;0;false;false;;;;;; -259782;8;0;false;false;63;95;191;;; -259790;1;0;false;false;;;;;; -259791;3;0;false;false;63;95;191;;; -259794;1;0;false;false;;;;;; -259795;4;0;false;false;63;95;191;;; -259799;1;0;false;false;;;;;; -259800;8;0;false;false;63;95;191;;; -259808;5;0;false;false;127;127;159;;; -259813;3;0;false;false;;;;;; -259816;1;0;false;false;63;95;191;;; -259817;4;0;false;false;;;;;; -259821;4;0;false;false;127;127;159;;; -259825;27;0;false;false;63;95;191;;; -259852;1;0;false;false;;;;;; -259853;1;0;false;false;127;127;159;;; -259854;1;0;false;false;;;;;; -259855;2;0;false;false;63;95;191;;; -259857;1;0;false;false;;;;;; -259858;3;0;false;false;63;95;191;;; -259861;1;0;false;false;;;;;; -259862;6;0;false;false;63;95;191;;; -259868;1;0;false;false;;;;;; -259869;4;0;false;false;63;95;191;;; -259873;1;0;false;false;;;;;; -259874;3;0;false;false;63;95;191;;; -259877;1;0;false;false;;;;;; -259878;6;0;false;false;63;95;191;;; -259884;1;0;false;false;;;;;; -259885;4;0;false;false;63;95;191;;; -259889;1;0;false;false;;;;;; -259890;7;0;false;false;63;95;191;;; -259897;1;0;false;false;;;;;; -259898;3;0;false;false;63;95;191;;; -259901;1;0;false;false;;;;;; -259902;8;0;false;false;63;95;191;;; -259910;5;0;false;false;127;127;159;;; -259915;3;0;false;false;;;;;; -259918;1;0;false;false;63;95;191;;; -259919;1;0;false;false;;;;;; -259920;5;0;false;false;127;127;159;;; -259925;3;0;false;false;;;;;; -259928;1;0;false;false;63;95;191;;; -259929;1;0;false;false;;;;;; -259930;7;1;false;false;127;159;191;;; -259937;3;0;false;false;63;95;191;;; -259940;3;0;false;false;;;;;; -259943;2;0;false;false;63;95;191;;; -259945;2;0;false;false;;;;;; -259947;6;1;false;false;127;0;85;;; -259953;1;0;false;false;;;;;; -259954;4;1;false;false;127;0;85;;; -259958;1;0;false;false;;;;;; -259959;12;0;false;false;0;0;0;;; -259971;3;1;false;false;127;0;85;;; -259974;1;0;false;false;;;;;; -259975;6;0;false;false;0;0;0;;; -259981;1;0;false;false;;;;;; -259982;1;0;false;false;0;0;0;;; -259983;3;0;false;false;;;;;; -259986;14;0;false;false;0;0;0;;; -260000;3;0;false;false;;;;;; -260003;3;1;false;false;127;0;85;;; -260006;1;0;false;false;;;;;; -260007;9;0;false;false;0;0;0;;; -260016;1;0;false;false;;;;;; -260017;24;0;false;false;0;0;0;;; -260041;3;0;false;false;;;;;; -260044;3;1;false;false;127;0;85;;; -260047;1;0;false;false;;;;;; -260048;6;0;false;false;0;0;0;;; -260054;1;0;false;false;;;;;; -260055;1;0;false;false;0;0;0;;; -260056;1;0;false;false;;;;;; -260057;23;0;false;false;0;0;0;;; -260080;3;0;false;false;;;;;; -260083;3;1;false;false;127;0;85;;; -260086;1;0;false;false;;;;;; -260087;11;0;false;false;0;0;0;;; -260098;1;0;false;false;;;;;; -260099;1;0;false;false;0;0;0;;; -260100;1;0;false;false;;;;;; -260101;11;0;false;false;0;0;0;;; -260112;1;0;false;false;;;;;; -260113;9;0;false;false;0;0;0;;; -260122;1;0;false;false;;;;;; -260123;1;0;false;false;0;0;0;;; -260124;1;0;false;false;;;;;; -260125;22;0;false;false;0;0;0;;; -260147;1;0;false;false;;;;;; -260148;1;0;false;false;0;0;0;;; -260149;1;0;false;false;;;;;; -260150;8;0;false;false;0;0;0;;; -260158;6;0;false;false;;;;;; -260164;2;1;false;false;127;0;85;;; -260166;1;0;false;false;;;;;; -260167;15;0;false;false;0;0;0;;; -260182;1;0;false;false;;;;;; -260183;2;0;false;false;0;0;0;;; -260185;1;0;false;false;;;;;; -260186;2;0;false;false;0;0;0;;; -260188;1;0;false;false;;;;;; -260189;1;0;false;false;0;0;0;;; -260190;4;0;false;false;;;;;; -260194;6;1;false;false;127;0;85;;; -260200;1;0;false;false;0;0;0;;; -260201;3;0;false;false;;;;;; -260204;1;0;false;false;0;0;0;;; -260205;4;0;false;false;;;;;; -260209;2;1;false;false;127;0;85;;; -260211;1;0;false;false;;;;;; -260212;6;0;false;false;0;0;0;;; -260218;1;0;false;false;;;;;; -260219;1;0;false;false;0;0;0;;; -260220;1;0;false;false;;;;;; -260221;2;0;false;false;0;0;0;;; -260223;1;0;false;false;;;;;; -260224;1;0;false;false;0;0;0;;; -260225;4;0;false;false;;;;;; -260229;5;0;false;false;0;0;0;;; -260234;1;0;false;false;;;;;; -260235;1;0;false;false;0;0;0;;; -260236;1;0;false;false;;;;;; -260237;2;0;false;false;0;0;0;;; -260239;3;0;false;false;;;;;; -260242;1;0;false;false;0;0;0;;; -260243;3;0;false;false;;;;;; -260246;4;1;false;false;127;0;85;;; -260250;4;0;false;false;;;;;; -260254;2;1;false;false;127;0;85;;; -260256;1;0;false;false;;;;;; -260257;6;0;false;false;0;0;0;;; -260263;1;0;false;false;;;;;; -260264;1;0;false;false;0;0;0;;; -260265;1;0;false;false;;;;;; -260266;12;0;false;false;0;0;0;;; -260278;1;0;false;false;;;;;; -260279;1;0;false;false;0;0;0;;; -260280;4;0;false;false;;;;;; -260284;5;0;false;false;0;0;0;;; -260289;1;0;false;false;;;;;; -260290;1;0;false;false;0;0;0;;; -260291;1;0;false;false;;;;;; -260292;12;0;false;false;0;0;0;;; -260304;3;0;false;false;;;;;; -260307;1;0;false;false;0;0;0;;; -260308;3;0;false;false;;;;;; -260311;30;0;false;false;0;0;0;;; -260341;1;0;false;false;;;;;; -260342;4;1;false;false;127;0;85;;; -260346;2;0;false;false;0;0;0;;; -260348;2;0;false;false;;;;;; -260350;1;0;false;false;0;0;0;;; -260351;2;0;false;false;;;;;; -260353;3;0;false;false;63;95;191;;; -260356;3;0;false;false;;;;;; -260359;1;0;false;false;63;95;191;;; -260360;1;0;false;false;;;;;; -260361;7;0;false;false;63;95;191;;; -260368;1;0;false;false;;;;;; -260369;3;0;false;false;63;95;191;;; -260372;1;0;false;false;;;;;; -260373;6;0;false;false;63;95;191;;; -260379;1;0;false;false;;;;;; -260380;11;0;false;false;63;95;191;;; -260391;3;0;false;false;;;;;; -260394;1;0;false;false;63;95;191;;; -260395;1;0;false;false;;;;;; -260396;3;0;false;false;127;127;159;;; -260399;3;0;false;false;;;;;; -260402;1;0;false;false;63;95;191;;; -260403;3;0;false;false;;;;;; -260406;1;0;false;false;63;95;191;;; -260407;1;0;false;false;;;;;; -260408;7;1;false;false;127;159;191;;; -260415;11;0;false;false;63;95;191;;; -260426;1;0;false;false;;;;;; -260427;3;0;false;false;63;95;191;;; -260430;1;0;false;false;;;;;; -260431;3;0;false;false;63;95;191;;; -260434;1;0;false;false;;;;;; -260435;8;0;false;false;63;95;191;;; -260443;1;0;false;false;;;;;; -260444;6;0;false;false;63;95;191;;; -260450;1;0;false;false;;;;;; -260451;6;0;false;false;63;95;191;;; -260457;3;0;false;false;;;;;; -260460;1;0;false;false;63;95;191;;; -260461;1;0;false;false;;;;;; -260462;7;1;false;false;127;159;191;;; -260469;15;0;false;false;63;95;191;;; -260484;4;0;false;false;;;;;; -260488;1;0;false;false;63;95;191;;; -260489;2;0;false;false;;;;;; -260491;5;0;false;false;63;95;191;;; -260496;1;0;false;false;;;;;; -260497;3;0;false;false;63;95;191;;; -260500;1;0;false;false;;;;;; -260501;6;0;false;false;63;95;191;;; -260507;1;0;false;false;;;;;; -260508;5;0;false;false;63;95;191;;; -260513;1;0;false;false;;;;;; -260514;4;0;false;false;63;95;191;;; -260518;1;0;false;false;;;;;; -260519;2;0;false;false;63;95;191;;; -260521;1;0;false;false;;;;;; -260522;5;0;false;false;63;95;191;;; -260527;1;0;false;false;;;;;; -260528;2;0;false;false;63;95;191;;; -260530;1;0;false;false;;;;;; -260531;7;0;false;false;63;95;191;;; -260538;1;0;false;false;;;;;; -260539;3;0;false;false;63;95;191;;; -260542;1;0;false;false;;;;;; -260543;3;0;false;false;63;95;191;;; -260546;1;0;false;false;;;;;; -260547;6;0;false;false;63;95;191;;; -260553;1;0;false;false;;;;;; -260554;7;0;false;false;63;95;191;;; -260561;3;0;false;false;;;;;; -260564;1;0;false;false;63;95;191;;; -260565;2;0;false;false;;;;;; -260567;5;0;false;false;63;95;191;;; -260572;1;0;false;false;;;;;; -260573;1;0;false;false;63;95;191;;; -260574;1;0;false;false;;;;;; -260575;3;0;false;false;63;95;191;;; -260578;1;0;false;false;;;;;; -260579;6;0;false;false;63;95;191;;; -260585;1;0;false;false;;;;;; -260586;5;0;false;false;63;95;191;;; -260591;1;0;false;false;;;;;; -260592;4;0;false;false;63;95;191;;; -260596;1;0;false;false;;;;;; -260597;3;0;false;false;63;95;191;;; -260600;1;0;false;false;;;;;; -260601;2;0;false;false;63;95;191;;; -260603;1;0;false;false;;;;;; -260604;5;0;false;false;63;95;191;;; -260609;3;0;false;false;;;;;; -260612;1;0;false;false;63;95;191;;; -260613;1;0;false;false;;;;;; -260614;8;1;false;false;127;159;191;;; -260622;3;0;false;false;;;;;; -260625;1;0;false;false;63;95;191;;; -260626;1;0;false;false;;;;;; -260627;8;0;false;false;63;95;191;;; -260635;1;0;false;false;;;;;; -260636;6;0;false;false;63;95;191;;; -260642;1;0;false;false;;;;;; -260643;3;0;false;false;63;95;191;;; -260646;1;0;false;false;;;;;; -260647;8;0;false;false;63;95;191;;; -260655;4;0;false;false;;;;;; -260659;1;0;false;false;63;95;191;;; -260660;1;0;false;false;;;;;; -260661;9;0;false;false;63;95;191;;; -260670;1;0;false;false;;;;;; -260671;6;0;false;false;63;95;191;;; -260677;1;0;false;false;;;;;; -260678;3;0;false;false;63;95;191;;; -260681;1;0;false;false;;;;;; -260682;3;0;false;false;63;95;191;;; -260685;1;0;false;false;;;;;; -260686;9;0;false;false;63;95;191;;; -260695;1;0;false;false;;;;;; -260696;3;0;false;false;63;95;191;;; -260699;1;0;false;false;;;;;; -260700;5;0;false;false;63;95;191;;; -260705;1;0;false;false;;;;;; -260706;6;0;false;false;63;95;191;;; -260712;1;0;false;false;;;;;; -260713;2;0;false;false;63;95;191;;; -260715;1;0;false;false;;;;;; -260716;3;0;false;false;63;95;191;;; -260719;1;0;false;false;;;;;; -260720;6;0;false;false;63;95;191;;; -260726;3;0;false;false;;;;;; -260729;2;0;false;false;63;95;191;;; -260731;2;0;false;false;;;;;; -260733;7;1;false;false;127;0;85;;; -260740;1;0;false;false;;;;;; -260741;24;0;false;false;0;0;0;;; -260765;3;1;false;false;127;0;85;;; -260768;1;0;false;false;;;;;; -260769;12;0;false;false;0;0;0;;; -260781;1;0;false;false;;;;;; -260782;7;1;false;false;127;0;85;;; -260789;1;0;false;false;;;;;; -260790;16;0;false;false;0;0;0;;; -260806;1;0;false;false;;;;;; -260807;1;0;false;false;0;0;0;;; -260808;3;0;false;false;;;;;; -260811;9;0;false;false;0;0;0;;; -260820;1;0;false;false;;;;;; -260821;11;0;false;false;0;0;0;;; -260832;3;0;false;false;;;;;; -260835;9;0;false;false;0;0;0;;; -260844;1;0;false;false;;;;;; -260845;11;0;false;false;0;0;0;;; -260856;1;0;false;false;;;;;; -260857;1;0;false;false;0;0;0;;; -260858;1;0;false;false;;;;;; -260859;17;0;false;false;0;0;0;;; -260876;6;0;false;false;;;;;; -260882;2;1;false;false;127;0;85;;; -260884;1;0;false;false;;;;;; -260885;12;0;false;false;0;0;0;;; -260897;1;0;false;false;;;;;; -260898;2;0;false;false;0;0;0;;; -260900;1;0;false;false;;;;;; -260901;21;0;false;false;0;0;0;;; -260922;1;0;false;false;;;;;; -260923;1;0;false;false;0;0;0;;; -260924;4;0;false;false;;;;;; -260928;6;1;false;false;127;0;85;;; -260934;1;0;false;false;;;;;; -260935;5;1;false;false;127;0;85;;; -260940;1;0;false;false;0;0;0;;; -260941;3;0;false;false;;;;;; -260944;1;0;false;false;0;0;0;;; -260945;3;0;false;false;;;;;; -260948;2;1;false;false;127;0;85;;; -260950;1;0;false;false;;;;;; -260951;12;0;false;false;0;0;0;;; -260963;1;0;false;false;;;;;; -260964;2;0;false;false;0;0;0;;; -260966;1;0;false;false;;;;;; -260967;4;1;false;false;127;0;85;;; -260971;1;0;false;false;;;;;; -260972;2;0;false;false;0;0;0;;; -260974;1;0;false;false;;;;;; -260975;16;0;false;false;0;0;0;;; -260991;1;0;false;false;;;;;; -260992;1;0;false;false;0;0;0;;; -260993;4;0;false;false;;;;;; -260997;38;0;false;false;0;0;0;;; -261035;3;0;false;false;;;;;; -261038;1;0;false;false;0;0;0;;; -261039;3;0;false;false;;;;;; -261042;10;0;false;false;0;0;0;;; -261052;1;0;false;false;;;;;; -261053;1;0;false;false;0;0;0;;; -261054;1;0;false;false;;;;;; -261055;16;0;false;false;0;0;0;;; -261071;3;0;false;false;;;;;; -261074;7;0;false;false;0;0;0;;; -261081;4;0;false;false;;;;;; -261085;2;0;false;false;0;0;0;;; -261087;1;0;false;false;;;;;; -261088;2;0;false;false;0;0;0;;; -261090;10;0;false;false;;;;;; -261100;21;0;false;false;63;127;95;;; -261121;2;0;false;false;;;;;; -261123;2;0;false;false;0;0;0;;; -261125;1;0;false;false;;;;;; -261126;11;0;false;false;0;0;0;;; -261137;1;0;false;false;;;;;; -261138;1;0;false;false;0;0;0;;; -261139;1;0;false;false;;;;;; -261140;21;0;false;false;0;0;0;;; -261161;1;0;false;false;;;;;; -261162;16;0;false;false;63;127;95;;; -261178;2;0;false;false;;;;;; -261180;17;0;false;false;0;0;0;;; -261197;1;0;false;false;;;;;; -261198;18;0;false;false;0;0;0;;; -261216;1;0;false;false;;;;;; -261217;4;1;false;false;127;0;85;;; -261221;2;0;false;false;0;0;0;;; -261223;5;0;false;false;;;;;; -261228;20;0;false;false;0;0;0;;; -261248;1;0;false;false;;;;;; -261249;1;0;false;false;0;0;0;;; -261250;1;0;false;false;;;;;; -261251;12;0;false;false;0;0;0;;; -261263;3;0;false;false;;;;;; -261266;20;0;false;false;0;0;0;;; -261286;3;0;false;false;;;;;; -261289;3;1;false;false;127;0;85;;; -261292;1;0;false;false;;;;;; -261293;10;0;false;false;0;0;0;;; -261303;1;0;false;false;;;;;; -261304;1;0;false;false;0;0;0;;; -261305;1;0;false;false;;;;;; -261306;8;0;false;false;0;0;0;;; -261314;3;0;false;false;;;;;; -261317;19;0;false;false;0;0;0;;; -261336;3;0;false;false;;;;;; -261339;48;0;false;false;63;127;95;;; -261387;1;0;false;false;;;;;; -261388;7;0;false;false;0;0;0;;; -261395;1;0;false;false;;;;;; -261396;1;0;false;false;0;0;0;;; -261397;1;0;false;false;;;;;; -261398;11;0;false;false;0;0;0;;; -261409;3;0;false;false;;;;;; -261412;6;1;false;false;127;0;85;;; -261418;1;0;false;false;;;;;; -261419;4;1;false;false;127;0;85;;; -261423;1;0;false;false;0;0;0;;; -261424;2;0;false;false;;;;;; -261426;1;0;false;false;0;0;0;;; -261427;2;0;false;false;;;;;; -261429;3;0;false;false;63;95;191;;; -261432;3;0;false;false;;;;;; -261435;1;0;false;false;63;95;191;;; -261436;1;0;false;false;;;;;; -261437;7;0;false;false;63;95;191;;; -261444;1;0;false;false;;;;;; -261445;3;0;false;false;63;95;191;;; -261448;1;0;false;false;;;;;; -261449;9;0;false;false;63;95;191;;; -261458;1;0;false;false;;;;;; -261459;8;0;false;false;63;95;191;;; -261467;1;0;false;false;;;;;; -261468;4;0;false;false;63;95;191;;; -261472;1;0;false;false;;;;;; -261473;5;0;false;false;63;95;191;;; -261478;3;0;false;false;;;;;; -261481;1;0;false;false;63;95;191;;; -261482;1;0;false;false;;;;;; -261483;3;0;false;false;127;127;159;;; -261486;3;0;false;false;;;;;; -261489;1;0;false;false;63;95;191;;; -261490;4;0;false;false;;;;;; -261494;1;0;false;false;63;95;191;;; -261495;1;0;false;false;;;;;; -261496;7;1;false;false;127;159;191;;; -261503;1;0;false;false;63;95;191;;; -261504;1;0;false;false;;;;;; -261505;3;0;false;false;63;95;191;;; -261508;1;0;false;false;;;;;; -261509;1;0;false;false;63;95;191;;; -261510;1;0;false;false;;;;;; -261511;10;0;false;false;63;95;191;;; -261521;1;0;false;false;;;;;; -261522;4;0;false;false;63;95;191;;; -261526;1;0;false;false;;;;;; -261527;6;0;false;false;63;95;191;;; -261533;1;0;false;false;;;;;; -261534;2;0;false;false;63;95;191;;; -261536;1;0;false;false;;;;;; -261537;4;0;false;false;63;95;191;;; -261541;1;0;false;false;;;;;; -261542;8;0;false;false;63;95;191;;; -261550;3;0;false;false;;;;;; -261553;1;0;false;false;63;95;191;;; -261554;1;0;false;false;;;;;; -261555;7;1;false;false;127;159;191;;; -261562;4;0;false;false;63;95;191;;; -261566;1;0;false;false;;;;;; -261567;3;0;false;false;63;95;191;;; -261570;1;0;false;false;;;;;; -261571;4;0;false;false;63;95;191;;; -261575;1;0;false;false;;;;;; -261576;4;0;false;false;63;95;191;;; -261580;1;0;false;false;;;;;; -261581;6;0;false;false;63;95;191;;; -261587;1;0;false;false;;;;;; -261588;2;0;false;false;63;95;191;;; -261590;1;0;false;false;;;;;; -261591;4;0;false;false;63;95;191;;; -261595;1;0;false;false;;;;;; -261596;8;0;false;false;63;95;191;;; -261604;1;0;false;false;;;;;; -261605;8;0;false;false;63;95;191;;; -261613;1;0;false;false;;;;;; -261614;2;0;false;false;63;95;191;;; -261616;1;0;false;false;;;;;; -261617;3;0;false;false;63;95;191;;; -261620;3;0;false;false;;;;;; -261623;1;0;false;false;63;95;191;;; -261624;1;0;false;false;;;;;; -261625;5;0;false;false;63;95;191;;; -261630;1;0;false;false;;;;;; -261631;4;0;false;false;63;95;191;;; -261635;1;0;false;false;;;;;; -261636;2;0;false;false;63;95;191;;; -261638;1;0;false;false;;;;;; -261639;3;0;false;false;63;95;191;;; -261642;1;0;false;false;;;;;; -261643;9;0;false;false;63;95;191;;; -261652;3;0;false;false;;;;;; -261655;1;0;false;false;63;95;191;;; -261656;1;0;false;false;;;;;; -261657;8;1;false;false;127;159;191;;; -261665;3;0;false;false;;;;;; -261668;1;0;false;false;63;95;191;;; -261669;1;0;false;false;;;;;; -261670;8;0;false;false;63;95;191;;; -261678;1;0;false;false;;;;;; -261679;6;0;false;false;63;95;191;;; -261685;1;0;false;false;;;;;; -261686;3;0;false;false;63;95;191;;; -261689;1;0;false;false;;;;;; -261690;8;0;false;false;63;95;191;;; -261698;1;0;false;false;;;;;; -261699;2;0;false;false;63;95;191;;; -261701;1;0;false;false;;;;;; -261702;4;0;false;false;63;95;191;;; -261706;1;0;false;false;;;;;; -261707;3;0;false;false;63;95;191;;; -261710;1;0;false;false;;;;;; -261711;9;0;false;false;63;95;191;;; -261720;1;0;false;false;;;;;; -261721;8;0;false;false;63;95;191;;; -261729;1;0;false;false;;;;;; -261730;8;0;false;false;63;95;191;;; -261738;4;0;false;false;;;;;; -261742;1;0;false;false;63;95;191;;; -261743;1;0;false;false;;;;;; -261744;9;0;false;false;63;95;191;;; -261753;1;0;false;false;;;;;; -261754;9;0;false;false;63;95;191;;; -261763;1;0;false;false;;;;;; -261764;8;0;false;false;63;95;191;;; -261772;1;0;false;false;;;;;; -261773;2;0;false;false;63;95;191;;; -261775;1;0;false;false;;;;;; -261776;7;0;false;false;63;95;191;;; -261783;1;0;false;false;;;;;; -261784;8;0;false;false;63;95;191;;; -261792;1;0;false;false;;;;;; -261793;3;0;false;false;63;95;191;;; -261796;1;0;false;false;;;;;; -261797;6;0;false;false;63;95;191;;; -261803;1;0;false;false;;;;;; -261804;3;0;false;false;63;95;191;;; -261807;4;0;false;false;;;;;; -261811;1;0;false;false;63;95;191;;; -261812;1;0;false;false;;;;;; -261813;3;0;false;false;63;95;191;;; -261816;1;0;false;false;;;;;; -261817;9;0;false;false;63;95;191;;; -261826;5;0;false;false;;;;;; -261831;2;0;false;false;63;95;191;;; -261833;2;0;false;false;;;;;; -261835;7;1;false;false;127;0;85;;; -261842;1;0;false;false;;;;;; -261843;13;0;false;false;0;0;0;;; -261856;3;1;false;false;127;0;85;;; -261859;1;0;false;false;;;;;; -261860;2;0;false;false;0;0;0;;; -261862;1;0;false;false;;;;;; -261863;3;1;false;false;127;0;85;;; -261866;1;0;false;false;;;;;; -261867;5;0;false;false;0;0;0;;; -261872;1;0;false;false;;;;;; -261873;1;0;false;false;0;0;0;;; -261874;3;0;false;false;;;;;; -261877;3;1;false;false;127;0;85;;; -261880;1;0;false;false;;;;;; -261881;15;0;false;false;0;0;0;;; -261896;1;0;false;false;;;;;; -261897;1;0;false;false;0;0;0;;; -261898;1;0;false;false;;;;;; -261899;21;0;false;false;0;0;0;;; -261920;1;0;false;false;;;;;; -261921;1;0;false;false;0;0;0;;; -261922;1;0;false;false;;;;;; -261923;11;0;false;false;0;0;0;;; -261934;3;0;false;false;;;;;; -261937;3;1;false;false;127;0;85;;; -261940;1;0;false;false;;;;;; -261941;17;0;false;false;0;0;0;;; -261958;1;0;false;false;;;;;; -261959;1;0;false;false;0;0;0;;; -261960;1;0;false;false;;;;;; -261961;23;0;false;false;0;0;0;;; -261984;3;0;false;false;;;;;; -261987;3;1;false;false;127;0;85;;; -261990;1;0;false;false;;;;;; -261991;19;0;false;false;0;0;0;;; -262010;1;0;false;false;;;;;; -262011;1;0;false;false;0;0;0;;; -262012;1;0;false;false;;;;;; -262013;15;0;false;false;0;0;0;;; -262028;1;0;false;false;;;;;; -262029;1;0;false;false;0;0;0;;; -262030;1;0;false;false;;;;;; -262031;2;0;false;false;0;0;0;;; -262033;3;0;false;false;;;;;; -262036;7;1;false;false;127;0;85;;; -262043;1;0;false;false;;;;;; -262044;8;0;false;false;0;0;0;;; -262052;1;0;false;false;;;;;; -262053;1;0;false;false;0;0;0;;; -262054;1;0;false;false;;;;;; -262055;5;1;false;false;127;0;85;;; -262060;1;0;false;false;0;0;0;;; -262061;8;0;false;false;;;;;; -262069;2;1;false;false;127;0;85;;; -262071;1;0;false;false;;;;;; -262072;2;0;false;false;0;0;0;;; -262074;1;0;false;false;;;;;; -262075;1;0;false;false;0;0;0;;; -262076;1;0;false;false;;;;;; -262077;11;0;false;false;0;0;0;;; -262088;1;0;false;false;;;;;; -262089;1;0;false;false;0;0;0;;; -262090;4;0;false;false;;;;;; -262094;38;0;false;false;63;127;95;;; -262132;2;0;false;false;;;;;; -262134;1;0;false;false;0;0;0;;; -262135;1;0;false;false;;;;;; -262136;1;0;false;false;0;0;0;;; -262137;1;0;false;false;;;;;; -262138;31;0;false;false;0;0;0;;; -262169;1;0;false;false;;;;;; -262170;1;0;false;false;0;0;0;;; -262171;1;0;false;false;;;;;; -262172;3;0;false;false;0;0;0;;; -262175;1;0;false;false;;;;;; -262176;1;0;false;false;0;0;0;;; -262177;1;0;false;false;;;;;; -262178;1;0;false;false;0;0;0;;; -262179;1;0;false;false;;;;;; -262180;21;0;false;false;0;0;0;;; -262201;5;0;false;false;;;;;; -262206;8;0;false;false;0;0;0;;; -262214;1;0;false;false;;;;;; -262215;1;0;false;false;0;0;0;;; -262216;1;0;false;false;;;;;; -262217;23;0;false;false;0;0;0;;; -262240;3;0;false;false;;;;;; -262243;1;0;false;false;0;0;0;;; -262244;3;0;false;false;;;;;; -262247;4;1;false;false;127;0;85;;; -262251;4;0;false;false;;;;;; -262255;2;1;false;false;127;0;85;;; -262257;1;0;false;false;;;;;; -262258;2;0;false;false;0;0;0;;; -262260;1;0;false;false;;;;;; -262261;2;0;false;false;0;0;0;;; -262263;1;0;false;false;;;;;; -262264;16;0;false;false;0;0;0;;; -262280;1;0;false;false;;;;;; -262281;1;0;false;false;0;0;0;;; -262282;4;0;false;false;;;;;; -262286;38;0;false;false;63;127;95;;; -262324;2;0;false;false;;;;;; -262326;1;0;false;false;0;0;0;;; -262327;1;0;false;false;;;;;; -262328;1;0;false;false;0;0;0;;; -262329;1;0;false;false;;;;;; -262330;29;0;false;false;0;0;0;;; -262359;1;0;false;false;;;;;; -262360;1;0;false;false;0;0;0;;; -262361;1;0;false;false;;;;;; -262362;23;0;false;false;0;0;0;;; -262385;1;0;false;false;;;;;; -262386;1;0;false;false;0;0;0;;; -262387;1;0;false;false;;;;;; -262388;1;0;false;false;0;0;0;;; -262389;1;0;false;false;;;;;; -262390;21;0;false;false;0;0;0;;; -262411;4;0;false;false;;;;;; -262415;8;0;false;false;0;0;0;;; -262423;1;0;false;false;;;;;; -262424;1;0;false;false;0;0;0;;; -262425;1;0;false;false;;;;;; -262426;21;0;false;false;0;0;0;;; -262447;1;0;false;false;;;;;; -262448;1;0;false;false;0;0;0;;; -262449;1;0;false;false;;;;;; -262450;17;0;false;false;0;0;0;;; -262467;3;0;false;false;;;;;; -262470;1;0;false;false;0;0;0;;; -262471;3;0;false;false;;;;;; -262474;2;1;false;false;127;0;85;;; -262476;1;0;false;false;;;;;; -262477;5;0;false;false;0;0;0;;; -262482;1;0;false;false;;;;;; -262483;1;0;false;false;0;0;0;;; -262484;1;0;false;false;;;;;; -262485;9;0;false;false;0;0;0;;; -262494;1;0;false;false;;;;;; -262495;1;0;false;false;0;0;0;;; -262496;4;0;false;false;;;;;; -262500;8;0;false;false;0;0;0;;; -262508;1;0;false;false;;;;;; -262509;1;0;false;false;0;0;0;;; -262510;1;0;false;false;;;;;; -262511;28;0;false;false;0;0;0;;; -262539;1;0;false;false;;;;;; -262540;1;0;false;false;0;0;0;;; -262541;1;0;false;false;;;;;; -262542;18;0;false;false;0;0;0;;; -262560;1;0;false;false;;;;;; -262561;4;1;false;false;127;0;85;;; -262565;2;0;false;false;0;0;0;;; -262567;3;0;false;false;;;;;; -262570;1;0;false;false;0;0;0;;; -262571;3;0;false;false;;;;;; -262574;4;1;false;false;127;0;85;;; -262578;3;0;false;false;;;;;; -262581;2;1;false;false;127;0;85;;; -262583;1;0;false;false;;;;;; -262584;5;0;false;false;0;0;0;;; -262589;1;0;false;false;;;;;; -262590;1;0;false;false;0;0;0;;; -262591;1;0;false;false;;;;;; -262592;17;0;false;false;0;0;0;;; -262609;1;0;false;false;;;;;; -262610;1;0;false;false;0;0;0;;; -262611;4;0;false;false;;;;;; -262615;8;0;false;false;0;0;0;;; -262623;1;0;false;false;;;;;; -262624;1;0;false;false;0;0;0;;; -262625;1;0;false;false;;;;;; -262626;29;0;false;false;0;0;0;;; -262655;1;0;false;false;;;;;; -262656;1;0;false;false;0;0;0;;; -262657;1;0;false;false;;;;;; -262658;2;0;false;false;0;0;0;;; -262660;1;0;false;false;;;;;; -262661;1;0;false;false;0;0;0;;; -262662;1;0;false;false;;;;;; -262663;17;0;false;false;0;0;0;;; -262680;1;0;false;false;;;;;; -262681;1;0;false;false;0;0;0;;; -262682;1;0;false;false;;;;;; -262683;23;0;false;false;0;0;0;;; -262706;1;0;false;false;;;;;; -262707;4;1;false;false;127;0;85;;; -262711;2;0;false;false;0;0;0;;; -262713;3;0;false;false;;;;;; -262716;1;0;false;false;0;0;0;;; -262717;3;0;false;false;;;;;; -262720;6;1;false;false;127;0;85;;; -262726;1;0;false;false;;;;;; -262727;9;0;false;false;0;0;0;;; -262736;2;0;false;false;;;;;; -262738;1;0;false;false;0;0;0;;; -262739;2;0;false;false;;;;;; -262741;3;0;false;false;63;95;191;;; -262744;3;0;false;false;;;;;; -262747;1;0;false;false;63;95;191;;; -262748;1;0;false;false;;;;;; -262749;4;0;false;false;63;95;191;;; -262753;1;0;false;false;;;;;; -262754;3;0;false;false;63;95;191;;; -262757;1;0;false;false;;;;;; -262758;5;0;false;false;63;95;191;;; -262763;1;0;false;false;;;;;; -262764;8;0;false;false;63;95;191;;; -262772;1;0;false;false;;;;;; -262773;3;0;false;false;63;95;191;;; -262776;1;0;false;false;;;;;; -262777;7;0;false;false;63;95;191;;; -262784;1;0;false;false;;;;;; -262785;3;0;false;false;63;95;191;;; -262788;1;0;false;false;;;;;; -262789;5;0;false;false;63;95;191;;; -262794;1;0;false;false;;;;;; -262795;6;0;false;false;63;95;191;;; -262801;1;0;false;false;;;;;; -262802;4;0;false;false;63;95;191;;; -262806;1;0;false;false;;;;;; -262807;5;0;false;false;63;95;191;;; -262812;3;0;false;false;;;;;; -262815;2;0;false;false;63;95;191;;; -262817;2;0;false;false;;;;;; -262819;4;1;false;false;127;0;85;;; -262823;1;0;false;false;;;;;; -262824;11;0;false;false;0;0;0;;; -262835;1;0;false;false;;;;;; -262836;1;0;false;false;0;0;0;;; -262837;3;0;false;false;;;;;; -262840;3;1;false;false;127;0;85;;; -262843;1;0;false;false;;;;;; -262844;9;0;false;false;0;0;0;;; -262853;1;0;false;false;;;;;; -262854;1;0;false;false;0;0;0;;; -262855;1;0;false;false;;;;;; -262856;37;0;false;false;0;0;0;;; -262893;6;0;false;false;;;;;; -262899;21;0;false;false;0;0;0;;; -262920;2;0;false;false;;;;;; -262922;1;0;false;false;0;0;0;;; -262923;2;0;false;false;;;;;; -262925;3;0;false;false;63;95;191;;; -262928;3;0;false;false;;;;;; -262931;1;0;false;false;63;95;191;;; -262932;1;0;false;false;;;;;; -262933;4;0;false;false;63;95;191;;; -262937;1;0;false;false;;;;;; -262938;3;0;false;false;63;95;191;;; -262941;1;0;false;false;;;;;; -262942;5;0;false;false;63;95;191;;; -262947;1;0;false;false;;;;;; -262948;8;0;false;false;63;95;191;;; -262956;1;0;false;false;;;;;; -262957;3;0;false;false;63;95;191;;; -262960;1;0;false;false;;;;;; -262961;7;0;false;false;63;95;191;;; -262968;1;0;false;false;;;;;; -262969;3;0;false;false;63;95;191;;; -262972;1;0;false;false;;;;;; -262973;5;0;false;false;63;95;191;;; -262978;1;0;false;false;;;;;; -262979;6;0;false;false;63;95;191;;; -262985;1;0;false;false;;;;;; -262986;4;0;false;false;63;95;191;;; -262990;1;0;false;false;;;;;; -262991;5;0;false;false;63;95;191;;; -262996;3;0;false;false;;;;;; -262999;2;0;false;false;63;95;191;;; -263001;2;0;false;false;;;;;; -263003;4;1;false;false;127;0;85;;; -263007;1;0;false;false;;;;;; -263008;10;0;false;false;0;0;0;;; -263018;3;1;false;false;127;0;85;;; -263021;1;0;false;false;;;;;; -263022;10;0;false;false;0;0;0;;; -263032;1;0;false;false;;;;;; -263033;1;0;false;false;0;0;0;;; -263034;3;0;false;false;;;;;; -263037;3;1;false;false;127;0;85;;; -263040;1;0;false;false;;;;;; -263041;10;0;false;false;0;0;0;;; -263051;1;0;false;false;;;;;; -263052;1;0;false;false;0;0;0;;; -263053;1;0;false;false;;;;;; -263054;35;0;false;false;0;0;0;;; -263089;3;0;false;false;;;;;; -263092;6;0;false;false;0;0;0;;; -263098;1;0;false;false;;;;;; -263099;4;0;false;false;0;0;0;;; -263103;1;0;false;false;;;;;; -263104;1;0;false;false;0;0;0;;; -263105;1;0;false;false;;;;;; -263106;27;0;false;false;0;0;0;;; -263133;3;0;false;false;;;;;; -263136;3;1;false;false;127;0;85;;; -263139;1;0;false;false;;;;;; -263140;12;0;false;false;0;0;0;;; -263152;1;0;false;false;;;;;; -263153;1;0;false;false;0;0;0;;; -263154;1;0;false;false;;;;;; -263155;11;0;false;false;0;0;0;;; -263166;1;0;false;false;;;;;; -263167;1;0;false;false;0;0;0;;; -263168;1;0;false;false;;;;;; -263169;11;0;false;false;0;0;0;;; -263180;3;0;false;false;;;;;; -263183;3;1;false;false;127;0;85;;; -263186;1;0;false;false;;;;;; -263187;9;0;false;false;0;0;0;;; -263196;1;0;false;false;;;;;; -263197;1;0;false;false;0;0;0;;; -263198;1;0;false;false;;;;;; -263199;18;0;false;false;0;0;0;;; -263217;1;0;false;false;;;;;; -263218;10;0;false;false;0;0;0;;; -263228;1;0;false;false;;;;;; -263229;14;0;false;false;0;0;0;;; -263243;4;0;false;false;;;;;; -263247;7;1;false;false;127;0;85;;; -263254;1;0;false;false;;;;;; -263255;8;0;false;false;0;0;0;;; -263263;1;0;false;false;;;;;; -263264;1;0;false;false;0;0;0;;; -263265;1;0;false;false;;;;;; -263266;23;0;false;false;0;0;0;;; -263289;1;0;false;false;;;;;; -263290;11;0;false;false;0;0;0;;; -263301;3;0;false;false;;;;;; -263304;7;1;false;false;127;0;85;;; -263311;1;0;false;false;;;;;; -263312;20;0;false;false;0;0;0;;; -263332;1;0;false;false;;;;;; -263333;1;0;false;false;0;0;0;;; -263334;1;0;false;false;;;;;; -263335;5;1;false;false;127;0;85;;; -263340;1;0;false;false;0;0;0;;; -263341;3;0;false;false;;;;;; -263344;5;0;false;false;0;0;0;;; -263349;1;0;false;false;;;;;; -263350;5;0;false;false;0;0;0;;; -263355;1;0;false;false;;;;;; -263356;1;0;false;false;0;0;0;;; -263357;1;0;false;false;;;;;; -263358;11;0;false;false;0;0;0;;; -263369;5;0;false;false;;;;;; -263374;2;1;false;false;127;0;85;;; -263376;1;0;false;false;;;;;; -263377;9;0;false;false;0;0;0;;; -263386;1;0;false;false;;;;;; -263387;2;0;false;false;0;0;0;;; -263389;1;0;false;false;;;;;; -263390;5;0;false;false;0;0;0;;; -263395;1;0;false;false;;;;;; -263396;2;0;false;false;0;0;0;;; -263398;1;0;false;false;;;;;; -263399;4;1;false;false;127;0;85;;; -263403;1;0;false;false;0;0;0;;; -263404;1;0;false;false;;;;;; -263405;1;0;false;false;0;0;0;;; -263406;4;0;false;false;;;;;; -263410;3;1;false;false;127;0;85;;; -263413;1;0;false;false;;;;;; -263414;6;0;false;false;0;0;0;;; -263420;1;0;false;false;;;;;; -263421;1;0;false;false;0;0;0;;; -263422;1;0;false;false;;;;;; -263423;22;0;false;false;0;0;0;;; -263445;4;0;false;false;;;;;; -263449;2;1;false;false;127;0;85;;; -263451;1;0;false;false;;;;;; -263452;8;0;false;false;0;0;0;;; -263460;1;0;false;false;;;;;; -263461;1;0;false;false;0;0;0;;; -263462;1;0;false;false;;;;;; -263463;21;0;false;false;0;0;0;;; -263484;1;0;false;false;;;;;; -263485;1;0;false;false;0;0;0;;; -263486;1;0;false;false;;;;;; -263487;22;0;false;false;0;0;0;;; -263509;1;0;false;false;;;;;; -263510;1;0;false;false;0;0;0;;; -263511;1;0;false;false;;;;;; -263512;1;0;false;false;0;0;0;;; -263513;1;0;false;false;;;;;; -263514;2;0;false;false;0;0;0;;; -263516;1;0;false;false;;;;;; -263517;10;0;false;false;0;0;0;;; -263527;1;0;false;false;;;;;; -263528;1;0;false;false;0;0;0;;; -263529;5;0;false;false;;;;;; -263534;20;0;false;false;0;0;0;;; -263554;1;0;false;false;;;;;; -263555;1;0;false;false;0;0;0;;; -263556;1;0;false;false;;;;;; -263557;4;1;false;false;127;0;85;;; -263561;1;0;false;false;0;0;0;;; -263562;4;0;false;false;;;;;; -263566;1;0;false;false;0;0;0;;; -263567;3;0;false;false;;;;;; -263570;1;0;false;false;0;0;0;;; -263571;3;0;false;false;;;;;; -263574;2;1;false;false;127;0;85;;; -263576;1;0;false;false;;;;;; -263577;10;0;false;false;0;0;0;;; -263587;1;0;false;false;;;;;; -263588;2;0;false;false;0;0;0;;; -263590;1;0;false;false;;;;;; -263591;21;0;false;false;0;0;0;;; -263612;1;0;false;false;;;;;; -263613;1;0;false;false;0;0;0;;; -263614;4;0;false;false;;;;;; -263618;71;0;false;false;63;127;95;;; -263689;2;0;false;false;;;;;; -263691;70;0;false;false;63;127;95;;; -263761;2;0;false;false;;;;;; -263763;72;0;false;false;63;127;95;;; -263835;2;0;false;false;;;;;; -263837;75;0;false;false;63;127;95;;; -263912;2;0;false;false;;;;;; -263914;27;0;false;false;0;0;0;;; -263941;1;0;false;false;;;;;; -263942;10;0;false;false;0;0;0;;; -263952;1;0;false;false;;;;;; -263953;21;0;false;false;0;0;0;;; -263974;3;0;false;false;;;;;; -263977;1;0;false;false;0;0;0;;; -263978;2;0;false;false;;;;;; -263980;1;0;false;false;0;0;0;;; -263981;2;0;false;false;;;;;; -263983;3;0;false;false;63;95;191;;; -263986;3;0;false;false;;;;;; -263989;1;0;false;false;63;95;191;;; -263990;1;0;false;false;;;;;; -263991;7;0;false;false;63;95;191;;; -263998;1;0;false;false;;;;;; -263999;3;0;false;false;63;95;191;;; -264002;1;0;false;false;;;;;; -264003;9;0;false;false;63;95;191;;; -264012;1;0;false;false;;;;;; -264013;6;0;false;false;63;95;191;;; -264019;1;0;false;false;;;;;; -264020;4;0;false;false;63;95;191;;; -264024;1;0;false;false;;;;;; -264025;5;0;false;false;63;95;191;;; -264030;3;0;false;false;;;;;; -264033;1;0;false;false;63;95;191;;; -264034;1;0;false;false;;;;;; -264035;3;0;false;false;127;127;159;;; -264038;3;0;false;false;;;;;; -264041;1;0;false;false;63;95;191;;; -264042;3;0;false;false;;;;;; -264045;1;0;false;false;63;95;191;;; -264046;1;0;false;false;;;;;; -264047;7;1;false;false;127;159;191;;; -264054;6;0;false;false;63;95;191;;; -264060;1;0;false;false;;;;;; -264061;6;0;false;false;63;95;191;;; -264067;1;0;false;false;;;;;; -264068;4;0;false;false;63;95;191;;; -264072;1;0;false;false;;;;;; -264073;6;0;false;false;63;95;191;;; -264079;1;0;false;false;;;;;; -264080;2;0;false;false;63;95;191;;; -264082;1;0;false;false;;;;;; -264083;7;0;false;false;63;95;191;;; -264090;1;0;false;false;;;;;; -264091;4;0;false;false;63;95;191;;; -264095;1;0;false;false;;;;;; -264096;4;0;false;false;63;95;191;;; -264100;3;0;false;false;;;;;; -264103;2;0;false;false;63;95;191;;; -264105;2;0;false;false;;;;;; -264107;4;1;false;false;127;0;85;;; -264111;1;0;false;false;;;;;; -264112;11;0;false;false;0;0;0;;; -264123;3;1;false;false;127;0;85;;; -264126;1;0;false;false;;;;;; -264127;7;0;false;false;0;0;0;;; -264134;1;0;false;false;;;;;; -264135;1;0;false;false;0;0;0;;; -264136;3;0;false;false;;;;;; -264139;3;1;false;false;127;0;85;;; -264142;1;0;false;false;;;;;; -264143;4;0;false;false;0;0;0;;; -264147;1;0;false;false;;;;;; -264148;1;0;false;false;0;0;0;;; -264149;1;0;false;false;;;;;; -264150;32;0;false;false;0;0;0;;; -264182;3;0;false;false;;;;;; -264185;3;1;false;false;127;0;85;;; -264188;1;0;false;false;;;;;; -264189;10;0;false;false;0;0;0;;; -264199;1;0;false;false;;;;;; -264200;1;0;false;false;0;0;0;;; -264201;1;0;false;false;;;;;; -264202;30;0;false;false;0;0;0;;; -264232;3;0;false;false;;;;;; -264235;3;1;false;false;127;0;85;;; -264238;1;0;false;false;;;;;; -264239;12;0;false;false;0;0;0;;; -264251;1;0;false;false;;;;;; -264252;1;0;false;false;0;0;0;;; -264253;1;0;false;false;;;;;; -264254;6;0;false;false;0;0;0;;; -264260;1;0;false;false;;;;;; -264261;1;0;false;false;0;0;0;;; -264262;1;0;false;false;;;;;; -264263;11;0;false;false;0;0;0;;; -264274;3;0;false;false;;;;;; -264277;6;0;false;false;0;0;0;;; -264283;1;0;false;false;;;;;; -264284;8;0;false;false;0;0;0;;; -264292;1;0;false;false;;;;;; -264293;1;0;false;false;0;0;0;;; -264294;1;0;false;false;;;;;; -264295;22;0;false;false;0;0;0;;; -264317;3;0;false;false;;;;;; -264320;3;1;false;false;127;0;85;;; -264323;1;0;false;false;;;;;; -264324;9;0;false;false;0;0;0;;; -264333;1;0;false;false;;;;;; -264334;1;0;false;false;0;0;0;;; -264335;1;0;false;false;;;;;; -264336;22;0;false;false;0;0;0;;; -264358;1;0;false;false;;;;;; -264359;5;0;false;false;0;0;0;;; -264364;1;0;false;false;;;;;; -264365;14;0;false;false;0;0;0;;; -264379;6;0;false;false;;;;;; -264385;23;0;false;false;0;0;0;;; -264408;1;0;false;false;;;;;; -264409;6;0;false;false;0;0;0;;; -264415;3;0;false;false;;;;;; -264418;1;0;false;false;0;0;0;;; -264419;2;0;false;false;;;;;; -264421;3;0;false;false;63;95;191;;; -264424;2;0;false;false;;;;;; -264426;3;0;false;false;63;95;191;;; -264429;3;0;false;false;;;;;; -264432;1;0;false;false;63;95;191;;; -264433;1;0;false;false;;;;;; -264434;7;0;false;false;63;95;191;;; -264441;1;0;false;false;;;;;; -264442;3;0;false;false;63;95;191;;; -264445;1;0;false;false;;;;;; -264446;9;0;false;false;63;95;191;;; -264455;1;0;false;false;;;;;; -264456;4;0;false;false;63;95;191;;; -264460;1;0;false;false;;;;;; -264461;5;0;false;false;63;95;191;;; -264466;2;0;false;false;;;;;; -264468;3;0;false;false;63;95;191;;; -264471;1;0;false;false;;;;;; -264472;3;0;false;false;63;95;191;;; -264475;1;0;false;false;;;;;; -264476;2;0;false;false;63;95;191;;; -264478;1;0;false;false;;;;;; -264479;3;0;false;false;63;95;191;;; -264482;1;0;false;false;;;;;; -264483;9;0;false;false;63;95;191;;; -264492;1;0;false;false;;;;;; -264493;4;0;false;false;63;95;191;;; -264497;1;0;false;false;;;;;; -264498;2;0;false;false;63;95;191;;; -264500;1;0;false;false;;;;;; -264501;8;0;false;false;63;95;191;;; -264509;1;0;false;false;;;;;; -264510;4;0;false;false;63;95;191;;; -264514;3;0;false;false;;;;;; -264517;1;0;false;false;63;95;191;;; -264518;1;0;false;false;;;;;; -264519;5;0;false;false;63;95;191;;; -264524;2;0;false;false;;;;;; -264526;4;0;false;false;63;95;191;;; -264530;1;0;false;false;;;;;; -264531;4;0;false;false;63;95;191;;; -264535;1;0;false;false;;;;;; -264536;2;0;false;false;63;95;191;;; -264538;1;0;false;false;;;;;; -264539;1;0;false;false;63;95;191;;; -264540;1;0;false;false;;;;;; -264541;5;0;false;false;63;95;191;;; -264546;1;0;false;false;127;127;159;;; -264547;2;0;false;false;63;95;191;;; -264549;1;0;false;false;127;127;159;;; -264550;4;0;false;false;63;95;191;;; -264554;1;0;false;false;;;;;; -264555;9;0;false;false;63;95;191;;; -264564;1;0;false;false;;;;;; -264565;7;0;false;false;63;95;191;;; -264572;1;0;false;false;;;;;; -264573;3;0;false;false;63;95;191;;; -264576;1;0;false;false;;;;;; -264577;3;0;false;false;63;95;191;;; -264580;1;0;false;false;;;;;; -264581;2;0;false;false;63;95;191;;; -264583;1;0;false;false;;;;;; -264584;3;0;false;false;63;95;191;;; -264587;1;0;false;false;;;;;; -264588;9;0;false;false;63;95;191;;; -264597;1;0;false;false;;;;;; -264598;2;0;false;false;63;95;191;;; -264600;1;0;false;false;;;;;; -264601;3;0;false;false;63;95;191;;; -264604;3;0;false;false;;;;;; -264607;1;0;false;false;63;95;191;;; -264608;1;0;false;false;;;;;; -264609;6;0;false;false;63;95;191;;; -264615;1;0;false;false;;;;;; -264616;9;0;false;false;63;95;191;;; -264625;1;0;false;false;;;;;; -264626;2;0;false;false;63;95;191;;; -264628;1;0;false;false;;;;;; -264629;3;0;false;false;63;95;191;;; -264632;1;0;false;false;;;;;; -264633;9;0;false;false;63;95;191;;; -264642;1;0;false;false;;;;;; -264643;6;0;false;false;63;95;191;;; -264649;1;0;false;false;;;;;; -264650;5;0;false;false;63;95;191;;; -264655;1;0;false;false;;;;;; -264656;3;0;false;false;63;95;191;;; -264659;1;0;false;false;;;;;; -264660;5;0;false;false;63;95;191;;; -264665;1;0;false;false;;;;;; -264666;2;0;false;false;63;95;191;;; -264668;1;0;false;false;;;;;; -264669;9;0;false;false;63;95;191;;; -264678;3;0;false;false;;;;;; -264681;1;0;false;false;63;95;191;;; -264682;1;0;false;false;;;;;; -264683;3;0;false;false;127;127;159;;; -264686;3;0;false;false;;;;;; -264689;1;0;false;false;63;95;191;;; -264690;3;0;false;false;;;;;; -264693;1;0;false;false;63;95;191;;; -264694;1;0;false;false;;;;;; -264695;11;1;false;false;127;159;191;;; -264706;12;0;false;false;63;95;191;;; -264718;1;0;false;false;;;;;; -264719;4;0;false;false;127;127;159;;; -264723;3;0;false;false;;;;;; -264726;1;0;false;false;63;95;191;;; -264727;4;0;false;false;;;;;; -264731;4;0;false;false;127;127;159;;; -264735;21;0;false;false;63;95;191;;; -264756;1;0;false;false;;;;;; -264757;1;0;false;false;127;127;159;;; -264758;1;0;false;false;;;;;; -264759;2;0;false;false;63;95;191;;; -264761;1;0;false;false;;;;;; -264762;3;0;false;false;63;95;191;;; -264765;1;0;false;false;;;;;; -264766;8;0;false;false;63;95;191;;; -264774;1;0;false;false;;;;;; -264775;3;0;false;false;63;95;191;;; -264778;1;0;false;false;;;;;; -264779;4;0;false;false;63;95;191;;; -264783;1;0;false;false;;;;;; -264784;8;0;false;false;63;95;191;;; -264792;5;0;false;false;127;127;159;;; -264797;3;0;false;false;;;;;; -264800;1;0;false;false;63;95;191;;; -264801;4;0;false;false;;;;;; -264805;4;0;false;false;127;127;159;;; -264809;27;0;false;false;63;95;191;;; -264836;1;0;false;false;;;;;; -264837;1;0;false;false;127;127;159;;; -264838;1;0;false;false;;;;;; -264839;2;0;false;false;63;95;191;;; -264841;1;0;false;false;;;;;; -264842;3;0;false;false;63;95;191;;; -264845;1;0;false;false;;;;;; -264846;6;0;false;false;63;95;191;;; -264852;1;0;false;false;;;;;; -264853;4;0;false;false;63;95;191;;; -264857;1;0;false;false;;;;;; -264858;3;0;false;false;63;95;191;;; -264861;1;0;false;false;;;;;; -264862;6;0;false;false;63;95;191;;; -264868;1;0;false;false;;;;;; -264869;4;0;false;false;63;95;191;;; -264873;1;0;false;false;;;;;; -264874;7;0;false;false;63;95;191;;; -264881;1;0;false;false;;;;;; -264882;3;0;false;false;63;95;191;;; -264885;1;0;false;false;;;;;; -264886;8;0;false;false;63;95;191;;; -264894;5;0;false;false;127;127;159;;; -264899;3;0;false;false;;;;;; -264902;1;0;false;false;63;95;191;;; -264903;1;0;false;false;;;;;; -264904;5;0;false;false;127;127;159;;; -264909;3;0;false;false;;;;;; -264912;2;0;false;false;63;95;191;;; -264914;2;0;false;false;;;;;; -264916;6;1;false;false;127;0;85;;; -264922;1;0;false;false;;;;;; -264923;4;1;false;false;127;0;85;;; -264927;1;0;false;false;;;;;; -264928;15;0;false;false;0;0;0;;; -264943;1;0;false;false;;;;;; -264944;1;0;false;false;0;0;0;;; -264945;3;0;false;false;;;;;; -264948;14;0;false;false;0;0;0;;; -264962;3;0;false;false;;;;;; -264965;7;1;false;false;127;0;85;;; -264972;1;0;false;false;;;;;; -264973;14;0;false;false;0;0;0;;; -264987;3;0;false;false;;;;;; -264990;3;1;false;false;127;0;85;;; -264993;1;0;false;false;;;;;; -264994;12;0;false;false;0;0;0;;; -265006;1;0;false;false;;;;;; -265007;10;0;false;false;0;0;0;;; -265017;1;0;false;false;;;;;; -265018;7;0;false;false;0;0;0;;; -265025;1;0;false;false;;;;;; -265026;10;0;false;false;0;0;0;;; -265036;1;0;false;false;;;;;; -265037;8;0;false;false;0;0;0;;; -265045;1;0;false;false;;;;;; -265046;5;0;false;false;0;0;0;;; -265051;1;0;false;false;;;;;; -265052;13;0;false;false;0;0;0;;; -265065;5;0;false;false;;;;;; -265070;37;0;false;false;63;127;95;;; -265107;1;0;false;false;;;;;; -265108;7;1;false;false;127;0;85;;; -265115;1;0;false;false;;;;;; -265116;11;0;false;false;0;0;0;;; -265127;1;0;false;false;;;;;; -265128;1;0;false;false;0;0;0;;; -265129;1;0;false;false;;;;;; -265130;11;0;false;false;0;0;0;;; -265141;1;0;false;false;;;;;; -265142;2;0;false;false;0;0;0;;; -265144;1;0;false;false;;;;;; -265145;12;0;false;false;0;0;0;;; -265157;5;0;false;false;;;;;; -265162;2;1;false;false;127;0;85;;; -265164;1;0;false;false;;;;;; -265165;13;0;false;false;0;0;0;;; -265178;1;0;false;false;;;;;; -265179;1;0;false;false;0;0;0;;; -265180;4;0;false;false;;;;;; -265184;11;0;false;false;0;0;0;;; -265195;1;0;false;false;;;;;; -265196;1;0;false;false;0;0;0;;; -265197;1;0;false;false;;;;;; -265198;12;0;false;false;0;0;0;;; -265210;4;0;false;false;;;;;; -265214;9;0;false;false;0;0;0;;; -265223;1;0;false;false;;;;;; -265224;1;0;false;false;0;0;0;;; -265225;1;0;false;false;;;;;; -265226;12;0;false;false;0;0;0;;; -265238;3;0;false;false;;;;;; -265241;1;0;false;false;0;0;0;;; -265242;1;0;false;false;;;;;; -265243;4;1;false;false;127;0;85;;; -265247;1;0;false;false;;;;;; -265248;1;0;false;false;0;0;0;;; -265249;4;0;false;false;;;;;; -265253;11;0;false;false;0;0;0;;; -265264;1;0;false;false;;;;;; -265265;1;0;false;false;0;0;0;;; -265266;1;0;false;false;;;;;; -265267;12;0;false;false;0;0;0;;; -265279;4;0;false;false;;;;;; -265283;9;0;false;false;0;0;0;;; -265292;1;0;false;false;;;;;; -265293;1;0;false;false;0;0;0;;; -265294;1;0;false;false;;;;;; -265295;12;0;false;false;0;0;0;;; -265307;3;0;false;false;;;;;; -265310;1;0;false;false;0;0;0;;; -265311;6;0;false;false;;;;;; -265317;65;0;false;false;63;127;95;;; -265382;1;0;false;false;;;;;; -265383;9;0;false;false;0;0;0;;; -265392;1;0;false;false;;;;;; -265393;1;0;false;false;0;0;0;;; -265394;1;0;false;false;;;;;; -265395;37;0;false;false;0;0;0;;; -265432;3;0;false;false;;;;;; -265435;12;0;false;false;0;0;0;;; -265447;1;0;false;false;;;;;; -265448;1;0;false;false;0;0;0;;; -265449;1;0;false;false;;;;;; -265450;11;0;false;false;0;0;0;;; -265461;1;0;false;false;;;;;; -265462;1;0;false;false;0;0;0;;; -265463;1;0;false;false;;;;;; -265464;35;0;false;false;0;0;0;;; -265499;3;0;false;false;;;;;; -265502;6;0;false;false;0;0;0;;; -265508;1;0;false;false;;;;;; -265509;1;0;false;false;0;0;0;;; -265510;1;0;false;false;;;;;; -265511;40;0;false;false;0;0;0;;; -265551;1;0;false;false;;;;;; -265552;10;0;false;false;0;0;0;;; -265562;1;0;false;false;;;;;; -265563;14;0;false;false;0;0;0;;; -265577;4;0;false;false;;;;;; -265581;7;0;false;false;0;0;0;;; -265588;2;0;false;false;;;;;; -265590;1;0;false;false;0;0;0;;; -265591;1;0;false;false;;;;;; -265592;35;0;false;false;0;0;0;;; -265627;3;0;false;false;;;;;; -265630;12;0;false;false;0;0;0;;; -265642;1;0;false;false;;;;;; -265643;1;0;false;false;0;0;0;;; -265644;1;0;false;false;;;;;; -265645;9;0;false;false;0;0;0;;; -265654;1;0;false;false;;;;;; -265655;1;0;false;false;0;0;0;;; -265656;1;0;false;false;;;;;; -265657;33;0;false;false;0;0;0;;; -265690;3;0;false;false;;;;;; -265693;4;0;false;false;0;0;0;;; -265697;1;0;false;false;;;;;; -265698;1;0;false;false;0;0;0;;; -265699;1;0;false;false;;;;;; -265700;38;0;false;false;0;0;0;;; -265738;1;0;false;false;;;;;; -265739;8;0;false;false;0;0;0;;; -265747;1;0;false;false;;;;;; -265748;14;0;false;false;0;0;0;;; -265762;6;0;false;false;;;;;; -265768;76;0;false;false;63;127;95;;; -265844;1;0;false;false;;;;;; -265845;3;1;false;false;127;0;85;;; -265848;1;0;false;false;;;;;; -265849;1;0;false;false;0;0;0;;; -265850;1;0;false;false;;;;;; -265851;1;0;false;false;0;0;0;;; -265852;1;0;false;false;;;;;; -265853;22;0;false;false;0;0;0;;; -265875;3;0;false;false;;;;;; -265878;2;1;false;false;127;0;85;;; -265880;1;0;false;false;;;;;; -265881;13;0;false;false;0;0;0;;; -265894;1;0;false;false;;;;;; -265895;1;0;false;false;0;0;0;;; -265896;4;0;false;false;;;;;; -265900;13;0;false;false;0;0;0;;; -265913;1;0;false;false;;;;;; -265914;1;0;false;false;0;0;0;;; -265915;1;0;false;false;;;;;; -265916;6;0;false;false;0;0;0;;; -265922;1;0;false;false;;;;;; -265923;1;0;false;false;0;0;0;;; -265924;1;0;false;false;;;;;; -265925;4;0;false;false;0;0;0;;; -265929;1;0;false;false;;;;;; -265930;2;0;false;false;0;0;0;;; -265932;1;0;false;false;;;;;; -265933;2;0;false;false;0;0;0;;; -265935;3;0;false;false;;;;;; -265938;1;0;false;false;0;0;0;;; -265939;1;0;false;false;;;;;; -265940;4;1;false;false;127;0;85;;; -265944;1;0;false;false;;;;;; -265945;1;0;false;false;0;0;0;;; -265946;4;0;false;false;;;;;; -265950;13;0;false;false;0;0;0;;; -265963;1;0;false;false;;;;;; -265964;1;0;false;false;0;0;0;;; -265965;1;0;false;false;;;;;; -265966;4;0;false;false;0;0;0;;; -265970;1;0;false;false;;;;;; -265971;1;0;false;false;0;0;0;;; -265972;1;0;false;false;;;;;; -265973;6;0;false;false;0;0;0;;; -265979;1;0;false;false;;;;;; -265980;2;0;false;false;0;0;0;;; -265982;1;0;false;false;;;;;; -265983;2;0;false;false;0;0;0;;; -265985;3;0;false;false;;;;;; -265988;1;0;false;false;0;0;0;;; -265989;6;0;false;false;;;;;; -265995;2;1;false;false;127;0;85;;; -265997;1;0;false;false;;;;;; -265998;15;0;false;false;0;0;0;;; -266013;1;0;false;false;;;;;; -266014;1;0;false;false;0;0;0;;; -266015;4;0;false;false;;;;;; -266019;63;0;false;false;63;127;95;;; -266082;2;0;false;false;;;;;; -266084;31;0;false;false;63;127;95;;; -266115;2;0;false;false;;;;;; -266117;20;0;false;false;0;0;0;;; -266137;1;0;false;false;;;;;; -266138;11;0;false;false;0;0;0;;; -266149;4;0;false;false;;;;;; -266153;71;0;false;false;63;127;95;;; -266224;2;0;false;false;;;;;; -266226;4;0;false;false;0;0;0;;; -266230;1;0;false;false;;;;;; -266231;1;0;false;false;0;0;0;;; -266232;1;0;false;false;;;;;; -266233;38;0;false;false;0;0;0;;; -266271;1;0;false;false;;;;;; -266272;8;0;false;false;0;0;0;;; -266280;1;0;false;false;;;;;; -266281;14;0;false;false;0;0;0;;; -266295;5;0;false;false;;;;;; -266300;18;0;false;false;0;0;0;;; -266318;1;0;false;false;;;;;; -266319;9;0;false;false;0;0;0;;; -266328;3;0;false;false;;;;;; -266331;1;0;false;false;0;0;0;;; -266332;1;0;false;false;;;;;; -266333;4;1;false;false;127;0;85;;; -266337;1;0;false;false;;;;;; -266338;1;0;false;false;0;0;0;;; -266339;4;0;false;false;;;;;; -266343;66;0;false;false;63;127;95;;; -266409;2;0;false;false;;;;;; -266411;24;0;false;false;63;127;95;;; -266435;2;0;false;false;;;;;; -266437;18;0;false;false;0;0;0;;; -266455;1;0;false;false;;;;;; -266456;9;0;false;false;0;0;0;;; -266465;3;0;false;false;;;;;; -266468;1;0;false;false;0;0;0;;; -266469;4;0;false;false;;;;;; -266473;1;0;false;false;0;0;0;;; -266474;2;0;false;false;;;;;; -266476;7;1;false;false;127;0;85;;; -266483;1;0;false;false;;;;;; -266484;13;0;false;false;0;0;0;;; -266497;1;0;false;false;;;;;; -266498;1;0;false;false;0;0;0;;; -266499;3;0;false;false;;;;;; -266502;6;1;false;false;127;0;85;;; -266508;1;0;false;false;;;;;; -266509;26;0;false;false;0;0;0;;; -266535;2;0;false;false;;;;;; -266537;1;0;false;false;0;0;0;;; -266538;2;0;false;false;;;;;; -266540;3;0;false;false;63;95;191;;; -266543;3;0;false;false;;;;;; -266546;1;0;false;false;63;95;191;;; -266547;1;0;false;false;;;;;; -266548;7;0;false;false;63;95;191;;; -266555;1;0;false;false;;;;;; -266556;3;0;false;false;63;95;191;;; -266559;1;0;false;false;;;;;; -266560;9;0;false;false;63;95;191;;; -266569;1;0;false;false;;;;;; -266570;3;0;false;false;63;95;191;;; -266573;1;0;false;false;;;;;; -266574;5;0;false;false;63;95;191;;; -266579;1;0;false;false;;;;;; -266580;8;0;false;false;63;95;191;;; -266588;1;0;false;false;;;;;; -266589;9;0;false;false;63;95;191;;; -266598;1;0;false;false;;;;;; -266599;2;0;false;false;63;95;191;;; -266601;1;0;false;false;;;;;; -266602;3;0;false;false;63;95;191;;; -266605;1;0;false;false;;;;;; -266606;4;0;false;false;63;95;191;;; -266610;1;0;false;false;;;;;; -266611;7;0;false;false;63;95;191;;; -266618;3;0;false;false;;;;;; -266621;1;0;false;false;63;95;191;;; -266622;1;0;false;false;;;;;; -266623;2;0;false;false;63;95;191;;; -266625;1;0;false;false;;;;;; -266626;3;0;false;false;63;95;191;;; -266629;1;0;false;false;;;;;; -266630;9;0;false;false;63;95;191;;; -266639;1;0;false;false;;;;;; -266640;10;0;false;false;63;95;191;;; -266650;1;0;false;false;;;;;; -266651;4;0;false;false;63;95;191;;; -266655;1;0;false;false;;;;;; -266656;3;0;false;false;63;95;191;;; -266659;1;0;false;false;;;;;; -266660;8;0;false;false;63;95;191;;; -266668;1;0;false;false;;;;;; -266669;5;0;false;false;63;95;191;;; -266674;1;0;false;false;;;;;; -266675;3;0;false;false;63;95;191;;; -266678;1;0;false;false;;;;;; -266679;9;0;false;false;63;95;191;;; -266688;1;0;false;false;;;;;; -266689;2;0;false;false;63;95;191;;; -266691;4;0;false;false;;;;;; -266695;1;0;false;false;63;95;191;;; -266696;1;0;false;false;;;;;; -266697;5;0;false;false;63;95;191;;; -266702;1;0;false;false;;;;;; -266703;3;0;false;false;63;95;191;;; -266706;1;0;false;false;;;;;; -266707;3;0;false;false;63;95;191;;; -266710;1;0;false;false;;;;;; -266711;5;0;false;false;63;95;191;;; -266716;1;0;false;false;;;;;; -266717;5;0;false;false;63;95;191;;; -266722;1;0;false;false;;;;;; -266723;2;0;false;false;63;95;191;;; -266725;1;0;false;false;;;;;; -266726;3;0;false;false;63;95;191;;; -266729;1;0;false;false;;;;;; -266730;3;0;false;false;63;95;191;;; -266733;1;0;false;false;;;;;; -266734;2;0;false;false;63;95;191;;; -266736;1;0;false;false;;;;;; -266737;3;0;false;false;63;95;191;;; -266740;1;0;false;false;;;;;; -266741;3;0;false;false;63;95;191;;; -266744;1;0;false;false;;;;;; -266745;5;0;false;false;63;95;191;;; -266750;3;0;false;false;;;;;; -266753;1;0;false;false;63;95;191;;; -266754;1;0;false;false;;;;;; -266755;2;0;false;false;63;95;191;;; -266757;1;0;false;false;;;;;; -266758;3;0;false;false;63;95;191;;; -266761;1;0;false;false;;;;;; -266762;9;0;false;false;63;95;191;;; -266771;1;0;false;false;;;;;; -266772;2;0;false;false;63;95;191;;; -266774;1;0;false;false;;;;;; -266775;6;0;false;false;63;95;191;;; -266781;1;0;false;false;;;;;; -266782;3;0;false;false;63;95;191;;; -266785;1;0;false;false;;;;;; -266786;8;0;false;false;63;95;191;;; -266794;1;0;false;false;;;;;; -266795;4;0;false;false;63;95;191;;; -266799;1;0;false;false;;;;;; -266800;2;0;false;false;63;95;191;;; -266802;1;0;false;false;;;;;; -266803;2;0;false;false;63;95;191;;; -266805;1;0;false;false;;;;;; -266806;5;0;false;false;63;95;191;;; -266811;1;0;false;false;;;;;; -266812;2;0;false;false;63;95;191;;; -266814;1;0;false;false;;;;;; -266815;4;0;false;false;63;95;191;;; -266819;1;0;false;false;;;;;; -266820;3;0;false;false;63;95;191;;; -266823;3;0;false;false;;;;;; -266826;1;0;false;false;63;95;191;;; -266827;1;0;false;false;;;;;; -266828;4;0;false;false;63;95;191;;; -266832;1;0;false;false;;;;;; -266833;4;0;false;false;63;95;191;;; -266837;1;0;false;false;;;;;; -266838;7;0;false;false;63;95;191;;; -266845;1;0;false;false;;;;;; -266846;9;0;false;false;63;95;191;;; -266855;2;0;false;false;;;;;; -266857;2;0;false;false;63;95;191;;; -266859;1;0;false;false;;;;;; -266860;3;0;false;false;63;95;191;;; -266863;1;0;false;false;;;;;; -266864;9;0;false;false;63;95;191;;; -266873;1;0;false;false;;;;;; -266874;2;0;false;false;63;95;191;;; -266876;1;0;false;false;;;;;; -266877;6;0;false;false;63;95;191;;; -266883;1;0;false;false;;;;;; -266884;3;0;false;false;63;95;191;;; -266887;1;0;false;false;;;;;; -266888;8;0;false;false;63;95;191;;; -266896;1;0;false;false;;;;;; -266897;4;0;false;false;63;95;191;;; -266901;4;0;false;false;;;;;; -266905;1;0;false;false;63;95;191;;; -266906;1;0;false;false;;;;;; -266907;2;0;false;false;63;95;191;;; -266909;1;0;false;false;;;;;; -266910;2;0;false;false;63;95;191;;; -266912;1;0;false;false;;;;;; -266913;4;0;false;false;63;95;191;;; -266917;1;0;false;false;;;;;; -266918;10;0;false;false;63;95;191;;; -266928;3;0;false;false;;;;;; -266931;1;0;false;false;63;95;191;;; -266932;1;0;false;false;;;;;; -266933;3;0;false;false;127;127;159;;; -266936;3;0;false;false;;;;;; -266939;1;0;false;false;63;95;191;;; -266940;3;0;false;false;;;;;; -266943;1;0;false;false;63;95;191;;; -266944;1;0;false;false;;;;;; -266945;7;1;false;false;127;159;191;;; -266952;11;0;false;false;63;95;191;;; -266963;1;0;false;false;;;;;; -266964;6;0;false;false;63;95;191;;; -266970;1;0;false;false;;;;;; -266971;2;0;false;false;63;95;191;;; -266973;1;0;false;false;;;;;; -266974;3;0;false;false;63;95;191;;; -266977;1;0;false;false;;;;;; -266978;4;0;false;false;63;95;191;;; -266982;1;0;false;false;;;;;; -266983;6;0;false;false;63;95;191;;; -266989;3;0;false;false;;;;;; -266992;1;0;false;false;63;95;191;;; -266993;1;0;false;false;;;;;; -266994;7;1;false;false;127;159;191;;; -267001;14;0;false;false;63;95;191;;; -267015;1;0;false;false;;;;;; -267016;6;0;false;false;63;95;191;;; -267022;1;0;false;false;;;;;; -267023;2;0;false;false;63;95;191;;; -267025;1;0;false;false;;;;;; -267026;4;0;false;false;63;95;191;;; -267030;1;0;false;false;;;;;; -267031;5;0;false;false;63;95;191;;; -267036;1;0;false;false;;;;;; -267037;8;0;false;false;63;95;191;;; -267045;3;0;false;false;;;;;; -267048;1;0;false;false;63;95;191;;; -267049;1;0;false;false;;;;;; -267050;7;1;false;false;127;159;191;;; -267057;9;0;false;false;63;95;191;;; -267066;1;0;false;false;;;;;; -267067;6;0;false;false;63;95;191;;; -267073;1;0;false;false;;;;;; -267074;2;0;false;false;63;95;191;;; -267076;1;0;false;false;;;;;; -267077;3;0;false;false;63;95;191;;; -267080;1;0;false;false;;;;;; -267081;4;0;false;false;63;95;191;;; -267085;3;0;false;false;;;;;; -267088;2;0;false;false;63;95;191;;; -267090;2;0;false;false;;;;;; -267092;4;1;false;false;127;0;85;;; -267096;1;0;false;false;;;;;; -267097;16;0;false;false;0;0;0;;; -267113;3;1;false;false;127;0;85;;; -267116;1;0;false;false;;;;;; -267117;12;0;false;false;0;0;0;;; -267129;1;0;false;false;;;;;; -267130;3;1;false;false;127;0;85;;; -267133;1;0;false;false;;;;;; -267134;15;0;false;false;0;0;0;;; -267149;1;0;false;false;;;;;; -267150;3;1;false;false;127;0;85;;; -267153;1;0;false;false;;;;;; -267154;10;0;false;false;0;0;0;;; -267164;1;0;false;false;;;;;; -267165;1;0;false;false;0;0;0;;; -267166;3;0;false;false;;;;;; -267169;2;1;false;false;127;0;85;;; -267171;1;0;false;false;;;;;; -267172;12;0;false;false;0;0;0;;; -267184;1;0;false;false;;;;;; -267185;2;0;false;false;0;0;0;;; -267187;1;0;false;false;;;;;; -267188;12;0;false;false;0;0;0;;; -267200;1;0;false;false;;;;;; -267201;1;0;false;false;0;0;0;;; -267202;4;0;false;false;;;;;; -267206;38;0;false;false;63;127;95;;; -267244;2;0;false;false;;;;;; -267246;6;1;false;false;127;0;85;;; -267252;1;0;false;false;0;0;0;;; -267253;3;0;false;false;;;;;; -267256;1;0;false;false;0;0;0;;; -267257;3;0;false;false;;;;;; -267260;2;1;false;false;127;0;85;;; -267262;1;0;false;false;;;;;; -267263;12;0;false;false;0;0;0;;; -267275;1;0;false;false;;;;;; -267276;1;0;false;false;0;0;0;;; -267277;1;0;false;false;;;;;; -267278;12;0;false;false;0;0;0;;; -267290;1;0;false;false;;;;;; -267291;1;0;false;false;0;0;0;;; -267292;4;0;false;false;;;;;; -267296;48;0;false;false;63;127;95;;; -267344;2;0;false;false;;;;;; -267346;32;0;false;false;0;0;0;;; -267378;1;0;false;false;;;;;; -267379;11;0;false;false;0;0;0;;; -267390;1;0;false;false;;;;;; -267391;1;0;false;false;0;0;0;;; -267392;1;0;false;false;;;;;; -267393;12;0;false;false;0;0;0;;; -267405;1;0;false;false;;;;;; -267406;4;1;false;false;127;0;85;;; -267410;2;0;false;false;0;0;0;;; -267412;3;0;false;false;;;;;; -267415;1;0;false;false;0;0;0;;; -267416;3;0;false;false;;;;;; -267419;2;1;false;false;127;0;85;;; -267421;1;0;false;false;;;;;; -267422;12;0;false;false;0;0;0;;; -267434;1;0;false;false;;;;;; -267435;1;0;false;false;0;0;0;;; -267436;1;0;false;false;;;;;; -267437;11;0;false;false;0;0;0;;; -267448;1;0;false;false;;;;;; -267449;1;0;false;false;0;0;0;;; -267450;1;0;false;false;;;;;; -267451;14;0;false;false;0;0;0;;; -267465;1;0;false;false;;;;;; -267466;2;0;false;false;0;0;0;;; -267468;1;0;false;false;;;;;; -267469;11;0;false;false;0;0;0;;; -267480;1;0;false;false;;;;;; -267481;1;0;false;false;0;0;0;;; -267482;1;0;false;false;;;;;; -267483;11;0;false;false;0;0;0;;; -267494;1;0;false;false;;;;;; -267495;1;0;false;false;0;0;0;;; -267496;1;0;false;false;;;;;; -267497;15;0;false;false;0;0;0;;; -267512;1;0;false;false;;;;;; -267513;1;0;false;false;0;0;0;;; -267514;4;0;false;false;;;;;; -267518;48;0;false;false;63;127;95;;; -267566;2;0;false;false;;;;;; -267568;65;0;false;false;63;127;95;;; -267633;2;0;false;false;;;;;; -267635;78;0;false;false;63;127;95;;; -267713;2;0;false;false;;;;;; -267715;3;1;false;false;127;0;85;;; -267718;1;0;false;false;;;;;; -267719;12;0;false;false;0;0;0;;; -267731;1;0;false;false;;;;;; -267732;1;0;false;false;0;0;0;;; -267733;1;0;false;false;;;;;; -267734;9;0;false;false;0;0;0;;; -267743;1;0;false;false;;;;;; -267744;1;0;false;false;0;0;0;;; -267745;1;0;false;false;;;;;; -267746;15;0;false;false;0;0;0;;; -267761;4;0;false;false;;;;;; -267765;3;1;false;false;127;0;85;;; -267768;1;0;false;false;;;;;; -267769;11;0;false;false;0;0;0;;; -267780;1;0;false;false;;;;;; -267781;1;0;false;false;0;0;0;;; -267782;1;0;false;false;;;;;; -267783;11;0;false;false;0;0;0;;; -267794;1;0;false;false;;;;;; -267795;1;0;false;false;0;0;0;;; -267796;1;0;false;false;;;;;; -267797;10;0;false;false;0;0;0;;; -267807;4;0;false;false;;;;;; -267811;32;0;false;false;0;0;0;;; -267843;1;0;false;false;;;;;; -267844;11;0;false;false;0;0;0;;; -267855;1;0;false;false;;;;;; -267856;1;0;false;false;0;0;0;;; -267857;1;0;false;false;;;;;; -267858;12;0;false;false;0;0;0;;; -267870;1;0;false;false;;;;;; -267871;1;0;false;false;0;0;0;;; -267872;1;0;false;false;;;;;; -267873;12;0;false;false;0;0;0;;; -267885;1;0;false;false;;;;;; -267886;4;1;false;false;127;0;85;;; -267890;2;0;false;false;0;0;0;;; -267892;3;0;false;false;;;;;; -267895;1;0;false;false;0;0;0;;; -267896;3;0;false;false;;;;;; -267899;2;1;false;false;127;0;85;;; -267901;1;0;false;false;;;;;; -267902;12;0;false;false;0;0;0;;; -267914;1;0;false;false;;;;;; -267915;1;0;false;false;0;0;0;;; -267916;1;0;false;false;;;;;; -267917;11;0;false;false;0;0;0;;; -267928;1;0;false;false;;;;;; -267929;2;0;false;false;0;0;0;;; -267931;1;0;false;false;;;;;; -267932;11;0;false;false;0;0;0;;; -267943;1;0;false;false;;;;;; -267944;1;0;false;false;0;0;0;;; -267945;1;0;false;false;;;;;; -267946;11;0;false;false;0;0;0;;; -267957;1;0;false;false;;;;;; -267958;1;0;false;false;0;0;0;;; -267959;1;0;false;false;;;;;; -267960;15;0;false;false;0;0;0;;; -267975;1;0;false;false;;;;;; -267976;1;0;false;false;0;0;0;;; -267977;4;0;false;false;;;;;; -267981;69;0;false;false;63;127;95;;; -268050;2;0;false;false;;;;;; -268052;32;0;false;false;0;0;0;;; -268084;1;0;false;false;;;;;; -268085;1;0;false;false;0;0;0;;; -268086;1;0;false;false;;;;;; -268087;10;0;false;false;0;0;0;;; -268097;1;0;false;false;;;;;; -268098;2;0;false;false;0;0;0;;; -268100;1;0;false;false;;;;;; -268101;4;1;false;false;127;0;85;;; -268105;2;0;false;false;0;0;0;;; -268107;4;0;false;false;;;;;; -268111;52;0;false;false;63;127;95;;; -268163;2;0;false;false;;;;;; -268165;19;0;false;false;0;0;0;;; -268184;3;0;false;false;;;;;; -268187;1;0;false;false;0;0;0;;; -268188;3;0;false;false;;;;;; -268191;4;1;false;false;127;0;85;;; -268195;1;0;false;false;;;;;; -268196;1;0;false;false;0;0;0;;; -268197;4;0;false;false;;;;;; -268201;46;0;false;false;63;127;95;;; -268247;2;0;false;false;;;;;; -268249;32;0;false;false;0;0;0;;; -268281;1;0;false;false;;;;;; -268282;1;0;false;false;0;0;0;;; -268283;1;0;false;false;;;;;; -268284;9;0;false;false;0;0;0;;; -268293;1;0;false;false;;;;;; -268294;1;0;false;false;0;0;0;;; -268295;1;0;false;false;;;;;; -268296;15;0;false;false;0;0;0;;; -268311;1;0;false;false;;;;;; -268312;11;0;false;false;0;0;0;;; -268323;1;0;false;false;;;;;; -268324;1;0;false;false;0;0;0;;; -268325;1;0;false;false;;;;;; -268326;12;0;false;false;0;0;0;;; -268338;1;0;false;false;;;;;; -268339;4;1;false;false;127;0;85;;; -268343;2;0;false;false;0;0;0;;; -268345;4;0;false;false;;;;;; -268349;52;0;false;false;63;127;95;;; -268401;2;0;false;false;;;;;; -268403;19;0;false;false;0;0;0;;; -268422;3;0;false;false;;;;;; -268425;1;0;false;false;0;0;0;;; -268426;3;0;false;false;;;;;; -268429;1;0;false;false;0;0;0;;; -268430;2;0;false;false;;;;;; -268432;3;0;false;false;63;95;191;;; -268435;3;0;false;false;;;;;; -268438;1;0;false;false;63;95;191;;; -268439;1;0;false;false;;;;;; -268440;7;0;false;false;63;95;191;;; -268447;1;0;false;false;;;;;; -268448;3;0;false;false;63;95;191;;; -268451;1;0;false;false;;;;;; -268452;5;0;false;false;63;95;191;;; -268457;3;0;false;false;;;;;; -268460;1;0;false;false;63;95;191;;; -268461;1;0;false;false;;;;;; -268462;3;0;false;false;127;127;159;;; -268465;3;0;false;false;;;;;; -268468;1;0;false;false;63;95;191;;; -268469;4;0;false;false;;;;;; -268473;1;0;false;false;63;95;191;;; -268474;1;0;false;false;;;;;; -268475;7;1;false;false;127;159;191;;; -268482;18;0;false;false;63;95;191;;; -268500;1;0;false;false;;;;;; -268501;6;0;false;false;63;95;191;;; -268507;1;0;false;false;;;;;; -268508;4;0;false;false;63;95;191;;; -268512;1;0;false;false;;;;;; -268513;5;0;false;false;63;95;191;;; -268518;1;0;false;false;;;;;; -268519;6;0;false;false;63;95;191;;; -268525;1;0;false;false;;;;;; -268526;6;0;false;false;63;95;191;;; -268532;4;0;false;false;;;;;; -268536;1;0;false;false;63;95;191;;; -268537;2;0;false;false;;;;;; -268539;8;0;false;false;63;95;191;;; -268547;3;0;false;false;;;;;; -268550;2;0;false;false;63;95;191;;; -268552;2;0;false;false;;;;;; -268554;4;1;false;false;127;0;85;;; -268558;1;0;false;false;;;;;; -268559;15;0;false;false;0;0;0;;; -268574;3;1;false;false;127;0;85;;; -268577;1;0;false;false;;;;;; -268578;19;0;false;false;0;0;0;;; -268597;1;0;false;false;;;;;; -268598;1;0;false;false;0;0;0;;; -268599;3;0;false;false;;;;;; -268602;14;0;false;false;0;0;0;;; -268616;1;0;false;false;;;;;; -268617;14;0;false;false;0;0;0;;; -268631;1;0;false;false;;;;;; -268632;1;0;false;false;0;0;0;;; -268633;1;0;false;false;;;;;; -268634;16;0;false;false;0;0;0;;; -268650;1;0;false;false;;;;;; -268651;8;0;false;false;0;0;0;;; -268659;3;0;false;false;;;;;; -268662;3;1;false;false;127;0;85;;; -268665;1;0;false;false;;;;;; -268666;12;0;false;false;0;0;0;;; -268678;5;0;false;false;;;;;; -268683;72;0;false;false;63;127;95;;; -268755;1;0;false;false;;;;;; -268756;70;0;false;false;63;127;95;;; -268826;1;0;false;false;;;;;; -268827;37;0;false;false;63;127;95;;; -268864;1;0;false;false;;;;;; -268865;2;1;false;false;127;0;85;;; -268867;1;0;false;false;;;;;; -268868;19;0;false;false;0;0;0;;; -268887;1;0;false;false;;;;;; -268888;2;0;false;false;0;0;0;;; -268890;1;0;false;false;;;;;; -268891;1;0;false;false;0;0;0;;; -268892;1;0;false;false;;;;;; -268893;2;0;false;false;0;0;0;;; -268895;1;0;false;false;;;;;; -268896;15;0;false;false;0;0;0;;; -268911;1;0;false;false;;;;;; -268912;1;0;false;false;0;0;0;;; -268913;1;0;false;false;;;;;; -268914;18;0;false;false;0;0;0;;; -268932;1;0;false;false;;;;;; -268933;2;0;false;false;0;0;0;;; -268935;4;0;false;false;;;;;; -268939;29;0;false;false;0;0;0;;; -268968;1;0;false;false;;;;;; -268969;2;0;false;false;0;0;0;;; -268971;1;0;false;false;;;;;; -268972;30;0;false;false;0;0;0;;; -269002;1;0;false;false;;;;;; -269003;1;0;false;false;0;0;0;;; -269004;4;0;false;false;;;;;; -269008;6;1;false;false;127;0;85;;; -269014;1;0;false;false;0;0;0;;; -269015;3;0;false;false;;;;;; -269018;1;0;false;false;0;0;0;;; -269019;3;0;false;false;;;;;; -269022;27;0;false;false;0;0;0;;; -269049;9;0;false;false;;;;;; -269058;59;0;false;false;63;127;95;;; -269117;1;0;false;false;;;;;; -269118;11;0;false;false;0;0;0;;; -269129;1;0;false;false;;;;;; -269130;1;0;false;false;0;0;0;;; -269131;1;0;false;false;;;;;; -269132;35;0;false;false;0;0;0;;; -269167;3;0;false;false;;;;;; -269170;62;0;false;false;63;127;95;;; -269232;1;0;false;false;;;;;; -269233;65;0;false;false;63;127;95;;; -269298;1;0;false;false;;;;;; -269299;38;0;false;false;63;127;95;;; -269337;1;0;false;false;;;;;; -269338;2;1;false;false;127;0;85;;; -269340;1;0;false;false;;;;;; -269341;12;0;false;false;0;0;0;;; -269353;1;0;false;false;;;;;; -269354;1;0;false;false;0;0;0;;; -269355;1;0;false;false;;;;;; -269356;22;0;false;false;0;0;0;;; -269378;1;0;false;false;;;;;; -269379;1;0;false;false;0;0;0;;; -269380;1;0;false;false;;;;;; -269381;1;0;false;false;0;0;0;;; -269382;1;0;false;false;;;;;; -269383;2;0;false;false;0;0;0;;; -269385;4;0;false;false;;;;;; -269389;9;0;false;false;0;0;0;;; -269398;1;0;false;false;;;;;; -269399;2;0;false;false;0;0;0;;; -269401;1;0;false;false;;;;;; -269402;35;0;false;false;0;0;0;;; -269437;1;0;false;false;;;;;; -269438;1;0;false;false;0;0;0;;; -269439;1;0;false;false;;;;;; -269440;3;0;false;false;0;0;0;;; -269443;1;0;false;false;;;;;; -269444;1;0;false;false;0;0;0;;; -269445;4;0;false;false;;;;;; -269449;14;0;false;false;0;0;0;;; -269463;3;0;false;false;;;;;; -269466;1;0;false;false;0;0;0;;; -269467;3;0;false;false;;;;;; -269470;2;1;false;false;127;0;85;;; -269472;1;0;false;false;;;;;; -269473;12;0;false;false;0;0;0;;; -269485;1;0;false;false;;;;;; -269486;2;0;false;false;0;0;0;;; -269488;1;0;false;false;;;;;; -269489;9;0;false;false;0;0;0;;; -269498;1;0;false;false;;;;;; -269499;1;0;false;false;0;0;0;;; -269500;4;0;false;false;;;;;; -269504;9;0;false;false;0;0;0;;; -269513;1;0;false;false;;;;;; -269514;11;0;false;false;0;0;0;;; -269525;1;0;false;false;;;;;; -269526;1;0;false;false;0;0;0;;; -269527;1;0;false;false;;;;;; -269528;17;0;false;false;0;0;0;;; -269545;4;0;false;false;;;;;; -269549;62;0;false;false;63;127;95;;; -269611;2;0;false;false;;;;;; -269613;70;0;false;false;63;127;95;;; -269683;2;0;false;false;;;;;; -269685;44;0;false;false;63;127;95;;; -269729;2;0;false;false;;;;;; -269731;20;0;false;false;0;0;0;;; -269751;1;0;false;false;;;;;; -269752;2;0;false;false;0;0;0;;; -269754;1;0;false;false;;;;;; -269755;12;0;false;false;0;0;0;;; -269767;1;0;false;false;;;;;; -269768;1;0;false;false;0;0;0;;; -269769;1;0;false;false;;;;;; -269770;9;0;false;false;0;0;0;;; -269779;1;0;false;false;;;;;; -269780;1;0;false;false;0;0;0;;; -269781;1;0;false;false;;;;;; -269782;23;0;false;false;0;0;0;;; -269805;4;0;false;false;;;;;; -269809;64;0;false;false;63;127;95;;; -269873;2;0;false;false;;;;;; -269875;71;0;false;false;63;127;95;;; -269946;2;0;false;false;;;;;; -269948;27;0;false;false;63;127;95;;; -269975;2;0;false;false;;;;;; -269977;2;1;false;false;127;0;85;;; -269979;1;0;false;false;;;;;; -269980;21;0;false;false;0;0;0;;; -270001;1;0;false;false;;;;;; -270002;1;0;false;false;0;0;0;;; -270003;1;0;false;false;;;;;; -270004;2;0;false;false;0;0;0;;; -270006;1;0;false;false;;;;;; -270007;1;0;false;false;0;0;0;;; -270008;5;0;false;false;;;;;; -270013;20;0;false;false;0;0;0;;; -270033;1;0;false;false;;;;;; -270034;1;0;false;false;0;0;0;;; -270035;1;0;false;false;;;;;; -270036;2;0;false;false;0;0;0;;; -270038;4;0;false;false;;;;;; -270042;1;0;false;false;0;0;0;;; -270043;4;0;false;false;;;;;; -270047;8;0;false;false;0;0;0;;; -270055;1;0;false;false;;;;;; -270056;1;0;false;false;0;0;0;;; -270057;1;0;false;false;;;;;; -270058;12;0;false;false;0;0;0;;; -270070;4;0;false;false;;;;;; -270074;9;0;false;false;0;0;0;;; -270083;1;0;false;false;;;;;; -270084;1;0;false;false;0;0;0;;; -270085;1;0;false;false;;;;;; -270086;34;0;false;false;0;0;0;;; -270120;4;0;false;false;;;;;; -270124;2;1;false;false;127;0;85;;; -270126;1;0;false;false;;;;;; -270127;12;0;false;false;0;0;0;;; -270139;1;0;false;false;;;;;; -270140;2;0;false;false;0;0;0;;; -270142;1;0;false;false;;;;;; -270143;4;1;false;false;127;0;85;;; -270147;1;0;false;false;0;0;0;;; -270148;1;0;false;false;;;;;; -270149;1;0;false;false;0;0;0;;; -270150;5;0;false;false;;;;;; -270155;47;0;false;false;0;0;0;;; -270202;4;0;false;false;;;;;; -270206;1;0;false;false;0;0;0;;; -270207;3;0;false;false;;;;;; -270210;1;0;false;false;0;0;0;;; -270211;3;0;false;false;;;;;; -270214;53;0;false;false;63;127;95;;; -270267;1;0;false;false;;;;;; -270268;63;0;false;false;63;127;95;;; -270331;1;0;false;false;;;;;; -270332;19;0;false;false;0;0;0;;; -270351;7;0;false;false;;;;;; -270358;59;0;false;false;63;127;95;;; -270417;1;0;false;false;;;;;; -270418;5;1;false;false;127;0;85;;; -270423;10;0;false;false;0;0;0;;; -270433;2;0;false;false;;;;;; -270435;1;0;false;false;0;0;0;;; -270436;2;0;false;false;;;;;; -270438;1;0;false;false;0;0;0;;; diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/tab.png b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/tab.png deleted file mode 100644 index cca224fa..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/tab.png and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/text.txt b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/text.txt deleted file mode 100644 index 61429ef6..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/text.txt +++ /dev/null @@ -1,7951 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.swt.custom; - - -import java.util.*; - -import org.eclipse.swt.*; -import org.eclipse.swt.accessibility.*; -import org.eclipse.swt.dnd.*; -import org.eclipse.swt.events.*; -import org.eclipse.swt.graphics.*; -import org.eclipse.swt.internal.*; -import org.eclipse.swt.printing.*; -import org.eclipse.swt.widgets.*; - -/** - * A StyledText is an editable user interface object that displays lines - * of text. The following style attributes can be defined for the text: - *
                                  - *
                                • foreground color - *
                                • background color - *
                                • font style (bold, italic, bold-italic, regular) - *
                                • underline - *
                                • strikeout - *
                                - *

                                - * In addition to text style attributes, the background color of a line may - * be specified. - *

                                - *

                                - * There are two ways to use this widget when specifying text style information. - * You may use the API that is defined for StyledText or you may define your own - * LineStyleListener. If you define your own listener, you will be responsible - * for maintaining the text style information for the widget. IMPORTANT: You may - * not define your own listener and use the StyledText API. The following - * StyledText API is not supported if you have defined a LineStyleListener: - *

                                  - *
                                • getStyleRangeAtOffset(int) - *
                                • getStyleRanges() - *
                                • replaceStyleRanges(int,int,StyleRange[]) - *
                                • setStyleRange(StyleRange) - *
                                • setStyleRanges(StyleRange[]) - *
                                - *

                                - *

                                - * There are two ways to use this widget when specifying line background colors. - * You may use the API that is defined for StyledText or you may define your own - * LineBackgroundListener. If you define your own listener, you will be responsible - * for maintaining the line background color information for the widget. - * IMPORTANT: You may not define your own listener and use the StyledText API. - * The following StyledText API is not supported if you have defined a - * LineBackgroundListener: - *

                                  - *
                                • getLineBackground(int) - *
                                • setLineBackground(int,int,Color) - *
                                - *

                                - *

                                - * The content implementation for this widget may also be user-defined. To do so, - * you must implement the StyledTextContent interface and use the StyledText API - * setContent(StyledTextContent) to initialize the widget. - *

                                - *

                                - * IMPORTANT: This class is not intended to be subclassed. - *

                                - *
                                - *
                                Styles:
                                FULL_SELECTION, MULTI, READ_ONLY, SINGLE, WRAP - *
                                Events:
                                ExtendedModify, LineGetBackground, LineGetSegments, LineGetStyle, Modify, Selection, Verify, VerifyKey - *
                                - */ -public class StyledText extends Canvas { - static final char TAB = '\t'; - static final String PlatformLineDelimiter = System.getProperty("line.separator"); - static final int BIDI_CARET_WIDTH = 3; - static final int DEFAULT_WIDTH = 64; - static final int DEFAULT_HEIGHT = 64; - static final int V_SCROLL_RATE = 50; - static final int H_SCROLL_RATE = 10; - - static final int ExtendedModify = 3000; - static final int LineGetBackground = 3001; - static final int LineGetStyle = 3002; - static final int TextChanging = 3003; - static final int TextSet = 3004; - static final int VerifyKey = 3005; - static final int TextChanged = 3006; - static final int LineGetSegments = 3007; - - Color selectionBackground; // selection background color - Color selectionForeground; // selection foreground color - StyledTextContent logicalContent; // native content (default or user specified) - StyledTextContent content; // line wrapping content, same as logicalContent if word wrap is off - DisplayRenderer renderer; - Listener listener; - TextChangeListener textChangeListener; // listener for TextChanging, TextChanged and TextSet events from StyledTextContent - DefaultLineStyler defaultLineStyler;// used for setStyles API when no LineStyleListener is registered - LineCache lineCache; - boolean userLineStyle = false; // true=widget is using a user defined line style listener for line styles. false=widget is using the default line styler to store line styles - boolean userLineBackground = false; // true=widget is using a user defined line background listener for line backgrounds. false=widget is using the default line styler to store line backgrounds - int verticalScrollOffset = 0; // pixel based - int horizontalScrollOffset = 0; // pixel based - int topIndex = 0; // top visible line - int lastPaintTopIndex = -1; - int topOffset = 0; // offset of first character in top line - int clientAreaHeight = 0; // the client area height. Needed to calculate content width for new - // visible lines during Resize callback - int clientAreaWidth = 0; // the client area width. Needed during Resize callback to determine - // if line wrap needs to be recalculated - int lineHeight; // line height=font height - int tabLength = 4; // number of characters in a tab - int leftMargin; - int topMargin; - int rightMargin; - int bottomMargin; - Cursor ibeamCursor; - int columnX; // keep track of the horizontal caret position - // when changing lines/pages. Fixes bug 5935 - int caretOffset = 0; - Point selection = new Point(0, 0); // x and y are start and end caret offsets of selection - Point clipboardSelection; // x and y are start and end caret offsets of previous selection - int selectionAnchor; // position of selection anchor. 0 based offset from beginning of text - Point doubleClickSelection; // selection after last mouse double click - boolean editable = true; - boolean wordWrap = false; - boolean doubleClickEnabled = true; // see getDoubleClickEnabled - boolean overwrite = false; // insert/overwrite edit mode - int textLimit = -1; // limits the number of characters the user can type in the widget. Unlimited by default. - Hashtable keyActionMap = new Hashtable(); - Color background = null; // workaround for bug 4791 - Color foreground = null; // - Clipboard clipboard; - boolean mouseDown = false; - boolean mouseDoubleClick = false; // true=a double click ocurred. Don't do mouse swipe selection. - int autoScrollDirection = SWT.NULL; // the direction of autoscrolling (up, down, right, left) - int autoScrollDistance = 0; - int lastTextChangeStart; // cache data of the - int lastTextChangeNewLineCount; // last text changing - int lastTextChangeNewCharCount; // event for use in the - int lastTextChangeReplaceLineCount; // text changed handler - int lastTextChangeReplaceCharCount; - boolean isMirrored; - boolean bidiColoring = false; // apply the BIDI algorithm on text segments of the same color - Image leftCaretBitmap = null; - Image rightCaretBitmap = null; - int caretDirection = SWT.NULL; - boolean advancing = true; - Caret defaultCaret = null; - boolean updateCaretDirection = true; - - final static boolean IS_CARBON, IS_GTK, IS_MOTIF; - final static boolean DOUBLE_BUFFER; - static { - String platform = SWT.getPlatform(); - IS_CARBON = "carbon".equals(platform); - IS_GTK = "gtk".equals(platform); - IS_MOTIF = "motif".equals(platform); - DOUBLE_BUFFER = !IS_CARBON; - } - - /** - * The Printing class implements printing of a range of text. - * An instance of Printing is returned in the - * StyledText#print(Printer) API. The run() method may be - * invoked from any thread. - */ - static class Printing implements Runnable { - final static int LEFT = 0; // left aligned header/footer segment - final static int CENTER = 1; // centered header/footer segment - final static int RIGHT = 2; // right aligned header/footer segment - - StyledText parent; - Printer printer; - PrintRenderer renderer; - StyledTextPrintOptions printOptions; - StyledTextContent printerContent; // copy of the widget content - Rectangle clientArea; // client area to print on - Font printerFont; - FontData displayFontData; - Hashtable printerColors; // printer color cache for line backgrounds and style - Hashtable lineBackgrounds = new Hashtable(); // cached line backgrounds - Hashtable lineStyles = new Hashtable(); // cached line styles - Hashtable bidiSegments = new Hashtable(); // cached bidi segments when running on a bidi platform - GC gc; // printer GC - int pageWidth; // width of a printer page in pixels - int startPage; // first page to print - int endPage; // last page to print - int pageSize; // number of lines on a page - int startLine; // first (wrapped) line to print - int endLine; // last (wrapped) line to print - boolean singleLine; // widget single line mode - Point selection = null; // selected text - boolean mirrored; //indicates the printing gc should be mirrored - - /** - * Creates an instance of Printing. - * Copies the widget content and rendering data that needs - * to be requested from listeners. - *

                                - * @param parent StyledText widget to print. - * @param printer printer device to print on. - * @param printOptions print options - */ - Printing(StyledText parent, Printer printer, StyledTextPrintOptions printOptions) { - PrinterData data = printer.getPrinterData(); - - this.parent = parent; - this.printer = printer; - this.printOptions = printOptions; - this.mirrored = (parent.getStyle() & SWT.MIRRORED) != 0; - singleLine = parent.isSingleLine(); - startPage = 1; - endPage = Integer.MAX_VALUE; - if (data.scope == PrinterData.PAGE_RANGE) { - startPage = data.startPage; - endPage = data.endPage; - if (endPage < startPage) { - int temp = endPage; - endPage = startPage; - startPage = temp; - } - } - else - if (data.scope == PrinterData.SELECTION) { - selection = parent.getSelectionRange(); - } - - displayFontData = parent.getFont().getFontData()[0]; - copyContent(parent.getContent()); - cacheLineData(printerContent); - } - /** - * Caches the bidi segments of the given line. - *

                                - * @param lineOffset offset of the line to cache bidi segments for. - * Relative to the start of the document. - * @param line line to cache bidi segments for. - */ - void cacheBidiSegments(int lineOffset, String line) { - int[] segments = parent.getBidiSegments(lineOffset, line); - - if (segments != null) { - bidiSegments.put(new Integer(lineOffset), segments); - } - } - /** - * Caches the line background color of the given line. - *

                                - * @param lineOffset offset of the line to cache the background - * color for. Relative to the start of the document. - * @param line line to cache the background color for - */ - void cacheLineBackground(int lineOffset, String line) { - StyledTextEvent event = parent.getLineBackgroundData(lineOffset, line); - - if (event != null) { - lineBackgrounds.put(new Integer(lineOffset), event); - } - } - /** - * Caches all line data that needs to be requested from a listener. - *

                                - * @param printerContent StyledTextContent to request - * line data for. - */ - void cacheLineData(StyledTextContent printerContent) { - for (int i = 0; i < printerContent.getLineCount(); i++) { - int lineOffset = printerContent.getOffsetAtLine(i); - String line = printerContent.getLine(i); - - if (printOptions.printLineBackground) { - cacheLineBackground(lineOffset, line); - } - if (printOptions.printTextBackground || - printOptions.printTextForeground || - printOptions.printTextFontStyle) { - cacheLineStyle(lineOffset, line); - } - if (parent.isBidi()) { - cacheBidiSegments(lineOffset, line); - } - } - } - /** - * Caches all line styles of the given line. - *

                                - * @param lineOffset offset of the line to cache the styles for. - * Relative to the start of the document. - * @param line line to cache the styles for. - */ - void cacheLineStyle(int lineOffset, String line) { - StyledTextEvent event = parent.getLineStyleData(lineOffset, line); - - if (event != null) { - StyleRange[] styles = event.styles; - for (int i = 0; i < styles.length; i++) { - StyleRange styleCopy = null; - if (!printOptions.printTextBackground && styles[i].background != null) { - styleCopy = (StyleRange) styles[i].clone(); - styleCopy.background = null; - } - if (!printOptions.printTextForeground && styles[i].foreground != null) { - if (styleCopy == null) { - styleCopy = (StyleRange) styles[i].clone(); - } - styleCopy.foreground = null; - } - if (!printOptions.printTextFontStyle && styles[i].fontStyle != SWT.NORMAL) { - if (styleCopy == null) { - styleCopy = (StyleRange) styles[i].clone(); - } - styleCopy.fontStyle = SWT.NORMAL; - } - if (styleCopy != null) { - styles[i] = styleCopy; - } - } - lineStyles.put(new Integer(lineOffset), event); - } - } - /** - * Copies the text of the specified StyledTextContent. - *

                                - * @param original the StyledTextContent to copy. - */ - void copyContent(StyledTextContent original) { - int insertOffset = 0; - - printerContent = new DefaultContent(); - for (int i = 0; i < original.getLineCount(); i++) { - int insertEndOffset; - if (i < original.getLineCount() - 1) { - insertEndOffset = original.getOffsetAtLine(i + 1); - } - else { - insertEndOffset = original.getCharCount(); - } - printerContent.replaceTextRange(insertOffset, 0, original.getTextRange(insertOffset, insertEndOffset - insertOffset)); - insertOffset = insertEndOffset; - } - } - /** - * Replaces all display colors in the cached line backgrounds and - * line styles with printer colors. - */ - void createPrinterColors() { - Enumeration values = lineBackgrounds.elements(); - printerColors = new Hashtable(); - while (values.hasMoreElements()) { - StyledTextEvent event = (StyledTextEvent) values.nextElement(); - event.lineBackground = getPrinterColor(event.lineBackground); - } - - values = lineStyles.elements(); - while (values.hasMoreElements()) { - StyledTextEvent event = (StyledTextEvent) values.nextElement(); - for (int i = 0; i < event.styles.length; i++) { - StyleRange style = event.styles[i]; - Color printerBackground = getPrinterColor(style.background); - Color printerForeground = getPrinterColor(style.foreground); - - if (printerBackground != style.background || - printerForeground != style.foreground) { - style = (StyleRange) style.clone(); - style.background = printerBackground; - style.foreground = printerForeground; - event.styles[i] = style; - } - } - } - } - /** - * Disposes of the resources and the PrintRenderer. - */ - void dispose() { - if (printerColors != null) { - Enumeration colors = printerColors.elements(); - - while (colors.hasMoreElements()) { - Color color = (Color) colors.nextElement(); - color.dispose(); - } - printerColors = null; - } - if (gc != null) { - gc.dispose(); - gc = null; - } - if (printerFont != null) { - printerFont.dispose(); - printerFont = null; - } - if (renderer != null) { - renderer.dispose(); - renderer = null; - } - } - /** - * Finish printing the indicated page. - * - * @param page page that was printed - */ - void endPage(int page) { - printDecoration(page, false); - printer.endPage(); - } - /** - * Creates a PrintRenderer and calculate the line range - * to print. - */ - void initializeRenderer() { - Rectangle trim = printer.computeTrim(0, 0, 0, 0); - Point dpi = printer.getDPI(); - - printerFont = new Font(printer, displayFontData.getName(), displayFontData.getHeight(), SWT.NORMAL); - clientArea = printer.getClientArea(); - pageWidth = clientArea.width; - // one inch margin around text - clientArea.x = dpi.x + trim.x; - clientArea.y = dpi.y + trim.y; - clientArea.width -= (clientArea.x + trim.width); - clientArea.height -= (clientArea.y + trim.height); - - // make the orientation of the printer gc match the control - int style = mirrored ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; - gc = new GC(printer, style); - gc.setFont(printerFont); - renderer = new PrintRenderer( - printer, printerFont, gc, printerContent, - lineBackgrounds, lineStyles, bidiSegments, - parent.tabLength, clientArea); - if (printOptions.header != null) { - int lineHeight = renderer.getLineHeight(); - clientArea.y += lineHeight * 2; - clientArea.height -= lineHeight * 2; - } - if (printOptions.footer != null) { - clientArea.height -= renderer.getLineHeight() * 2; - } - pageSize = clientArea.height / renderer.getLineHeight(); - StyledTextContent content = renderer.getContent(); - startLine = 0; - if (singleLine) { - endLine = 0; - } - else { - endLine = content.getLineCount() - 1; - } - PrinterData data = printer.getPrinterData(); - if (data.scope == PrinterData.PAGE_RANGE) { - startLine = (startPage - 1) * pageSize; - } - else - if (data.scope == PrinterData.SELECTION) { - startLine = content.getLineAtOffset(selection.x); - if (selection.y > 0) { - endLine = content.getLineAtOffset(selection.x + selection.y - 1); - } - else { - endLine = startLine - 1; - } - } - } - /** - * Returns the printer color for the given display color. - *

                                - * @param color display color - * @return color create on the printer with the same RGB values - * as the display color. - */ - Color getPrinterColor(Color color) { - Color printerColor = null; - - if (color != null) { - printerColor = (Color) printerColors.get(color); - if (printerColor == null) { - printerColor = new Color(printer, color.getRGB()); - printerColors.put(color, printerColor); - } - } - return printerColor; - } - /** - * Prints the lines in the specified page range. - */ - void print() { - StyledTextContent content = renderer.getContent(); - Color background = gc.getBackground(); - Color foreground = gc.getForeground(); - int lineHeight = renderer.getLineHeight(); - int paintY = clientArea.y; - int page = startPage; - - for (int i = startLine; i <= endLine && page <= endPage; i++, paintY += lineHeight) { - String line = content.getLine(i); - - if (paintY == clientArea.y) { - startPage(page); - } - renderer.drawLine( - line, i, paintY, gc, background, foreground, true); - if (paintY + lineHeight * 2 > clientArea.y + clientArea.height) { - // close full page - endPage(page); - paintY = clientArea.y - lineHeight; - page++; - } - } - if (paintY > clientArea.y) { - // close partial page - endPage(page); - } - } - /** - * Print header or footer decorations. - * - * @param page page number to print, if specified in the StyledTextPrintOptions header or footer. - * @param header true = print the header, false = print the footer - */ - void printDecoration(int page, boolean header) { - int lastSegmentIndex = 0; - final int SegmentCount = 3; - String text; - - if (header) { - text = printOptions.header; - } - else { - text = printOptions.footer; - } - if (text == null) { - return; - } - for (int i = 0; i < SegmentCount; i++) { - int segmentIndex = text.indexOf(StyledTextPrintOptions.SEPARATOR, lastSegmentIndex); - String segment; - - if (segmentIndex == -1) { - segment = text.substring(lastSegmentIndex); - printDecorationSegment(segment, i, page, header); - break; - } - else { - segment = text.substring(lastSegmentIndex, segmentIndex); - printDecorationSegment(segment, i, page, header); - lastSegmentIndex = segmentIndex + StyledTextPrintOptions.SEPARATOR.length(); - } - } - } - /** - * Print one segment of a header or footer decoration. - * Headers and footers have three different segments. - * One each for left aligned, centered, and right aligned text. - * - * @param segment decoration segment to print - * @param alignment alignment of the segment. 0=left, 1=center, 2=right - * @param page page number to print, if specified in the decoration segment. - * @param header true = print the header, false = print the footer - */ - void printDecorationSegment(String segment, int alignment, int page, boolean header) { - int pageIndex = segment.indexOf(StyledTextPrintOptions.PAGE_TAG); - - if (pageIndex != -1) { - final int PageTagLength = StyledTextPrintOptions.PAGE_TAG.length(); - StringBuffer buffer = new StringBuffer(segment.substring (0, pageIndex)); - buffer.append (page); - buffer.append (segment.substring(pageIndex + PageTagLength)); - segment = buffer.toString(); - } - if (segment.length() > 0) { - int segmentWidth; - int drawX = 0; - int drawY = 0; - TextLayout layout = new TextLayout(printer); - layout.setText(segment); - layout.setFont(printerFont); - segmentWidth = layout.getLineBounds(0).width; - if (header) { - drawY = clientArea.y - renderer.getLineHeight() * 2; - } - else { - drawY = clientArea.y + clientArea.height + renderer.getLineHeight(); - } - if (alignment == LEFT) { - drawX = clientArea.x; - } - else - if (alignment == CENTER) { - drawX = (pageWidth - segmentWidth) / 2; - } - else - if (alignment == RIGHT) { - drawX = clientArea.x + clientArea.width - segmentWidth; - } - layout.draw(gc, drawX, drawY); - layout.dispose(); - } - } - /** - * Starts a print job and prints the pages specified in the constructor. - */ - public void run() { - String jobName = printOptions.jobName; - - if (jobName == null) { - jobName = "Printing"; - } - if (printer.startJob(jobName)) { - createPrinterColors(); - initializeRenderer(); - print(); - dispose(); - printer.endJob(); - } - } - /** - * Start printing a new page. - * - * @param page page number to be started - */ - void startPage(int page) { - printer.startPage(); - printDecoration(page, true); - } - } - /** - * The RTFWriter class is used to write widget content as - * rich text. The implementation complies with the RTF specification - * version 1.5. - *

                                - * toString() is guaranteed to return a valid RTF string only after - * close() has been called. - *

                                - *

                                - * Whole and partial lines and line breaks can be written. Lines will be - * formatted using the styles queried from the LineStyleListener, if - * set, or those set directly in the widget. All styles are applied to - * the RTF stream like they are rendered by the widget. In addition, the - * widget font name and size is used for the whole text. - *

                                - */ - class RTFWriter extends TextWriter { - static final int DEFAULT_FOREGROUND = 0; - static final int DEFAULT_BACKGROUND = 1; - Vector colorTable = new Vector(); - boolean WriteUnicode; - - /** - * Creates a RTF writer that writes content starting at offset "start" - * in the document. start and lengthcan be set to specify partial - * lines. - *

                                - * - * @param start start offset of content to write, 0 based from - * beginning of document - * @param length length of content to write - */ - public RTFWriter(int start, int length) { - super(start, length); - colorTable.addElement(getForeground()); - colorTable.addElement(getBackground()); - setUnicode(); - } - /** - * Closes the RTF writer. Once closed no more content can be written. - * NOTE: toString() does not return a valid RTF string until - * close() has been called. - */ - public void close() { - if (!isClosed()) { - writeHeader(); - write("\n}}\0"); - super.close(); - } - } - /** - * Returns the index of the specified color in the RTF color table. - *

                                - * - * @param color the color - * @param defaultIndex return value if color is null - * @return the index of the specified color in the RTF color table - * or "defaultIndex" if "color" is null. - */ - int getColorIndex(Color color, int defaultIndex) { - int index; - - if (color == null) { - index = defaultIndex; - } - else { - index = colorTable.indexOf(color); - if (index == -1) { - index = colorTable.size(); - colorTable.addElement(color); - } - } - return index; - } - /** - * Determines if Unicode RTF should be written. - * Don't write Unicode RTF on Windows 95/98/ME or NT. - */ - void setUnicode() { - final String Win95 = "windows 95"; - final String Win98 = "windows 98"; - final String WinME = "windows me"; - final String WinNT = "windows nt"; - String osName = System.getProperty("os.name").toLowerCase(); - String osVersion = System.getProperty("os.version"); - int majorVersion = 0; - - if (osName.startsWith(WinNT) && osVersion != null) { - int majorIndex = osVersion.indexOf('.'); - if (majorIndex != -1) { - osVersion = osVersion.substring(0, majorIndex); - try { - majorVersion = Integer.parseInt(osVersion); - } - catch (NumberFormatException exception) { - // ignore exception. version number remains unknown. - // will write without Unicode - } - } - } - if (!osName.startsWith(Win95) && - !osName.startsWith(Win98) && - !osName.startsWith(WinME) && - (!osName.startsWith(WinNT) || majorVersion > 4)) { - WriteUnicode = true; - } - else { - WriteUnicode = false; - } - } - /** - * Appends the specified segment of "string" to the RTF data. - * Copy from start up to, but excluding, end. - *

                                - * - * @param string string to copy a segment from. Must not contain - * line breaks. Line breaks should be written using writeLineDelimiter() - * @param start start offset of segment. 0 based. - * @param end end offset of segment - */ - void write(String string, int start, int end) { - for (int index = start; index < end; index++) { - char ch = string.charAt(index); - if (ch > 0xFF && WriteUnicode) { - // write the sub string from the last escaped character - // to the current one. Fixes bug 21698. - if (index > start) { - write(string.substring(start, index)); - } - write("\\u"); - write(Integer.toString((short) ch)); - write(' '); // control word delimiter - start = index + 1; - } - else - if (ch == '}' || ch == '{' || ch == '\\') { - // write the sub string from the last escaped character - // to the current one. Fixes bug 21698. - if (index > start) { - write(string.substring(start, index)); - } - write('\\'); - write(ch); - start = index + 1; - } - } - // write from the last escaped character to the end. - // Fixes bug 21698. - if (start < end) { - write(string.substring(start, end)); - } - } - /** - * Writes the RTF header including font table and color table. - */ - void writeHeader() { - StringBuffer header = new StringBuffer(); - FontData fontData = getFont().getFontData()[0]; - header.append("{\\rtf1\\ansi"); - // specify code page, necessary for copy to work in bidi - // systems that don't support Unicode RTF. - String cpg = System.getProperty("file.encoding").toLowerCase(); - if (cpg.startsWith("cp") || cpg.startsWith("ms")) { - cpg = cpg.substring(2, cpg.length()); - header.append("\\ansicpg"); - header.append(cpg); - } - header.append("\\uc0\\deff0{\\fonttbl{\\f0\\fnil "); - header.append(fontData.getName()); - header.append(";}}\n{\\colortbl"); - for (int i = 0; i < colorTable.size(); i++) { - Color color = (Color) colorTable.elementAt(i); - header.append("\\red"); - header.append(color.getRed()); - header.append("\\green"); - header.append(color.getGreen()); - header.append("\\blue"); - header.append(color.getBlue()); - header.append(";"); - } - // some RTF readers ignore the deff0 font tag. Explicitly - // set the font for the whole document to work around this. - header.append("}\n{\\f0\\fs"); - // font size is specified in half points - header.append(fontData.getHeight() * 2); - header.append(" "); - write(header.toString(), 0); - } - /** - * Appends the specified line text to the RTF data. Lines will be formatted - * using the styles queried from the LineStyleListener, if set, or those set - * directly in the widget. - *

                                - * - * @param line line text to write as RTF. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLine(String line, int lineOffset) { - StyleRange[] styles = new StyleRange[0]; - Color lineBackground = null; - StyledTextEvent event; - - if (isClosed()) { - SWT.error(SWT.ERROR_IO); - } - event = renderer.getLineStyleData(lineOffset, line); - if (event != null) { - styles = event.styles; - } - event = renderer.getLineBackgroundData(lineOffset, line); - if (event != null) { - lineBackground = event.lineBackground; - } - if (lineBackground == null) { - lineBackground = getBackground(); - } - writeStyledLine(line, lineOffset, styles, lineBackground); - } - /** - * Appends the specified line delmimiter to the RTF data. - *

                                - * - * @param lineDelimiter line delimiter to write as RTF. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLineDelimiter(String lineDelimiter) { - if (isClosed()) { - SWT.error(SWT.ERROR_IO); - } - write(lineDelimiter, 0, lineDelimiter.length()); - write("\\par "); - } - /** - * Appends the specified line text to the RTF data. - * Use the colors and font styles specified in "styles" and "lineBackground". - * Formatting is written to reflect the text rendering by the text widget. - * Style background colors take precedence over the line background color. - * Background colors are written using the \highlight tag (vs. the \cb tag). - *

                                - * - * @param line line text to write as RTF. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @param styles styles to use for formatting. Must not be null. - * @param lineBackground line background color to use for formatting. - * May be null. - */ - void writeStyledLine(String line, int lineOffset, StyleRange[] styles, Color lineBackground) { - int lineLength = line.length(); - int lineIndex; - int copyEnd; - int startOffset = getStart(); - int endOffset = startOffset + super.getCharCount(); - int lineEndOffset = Math.min(lineLength, endOffset - lineOffset); - int writeOffset = startOffset - lineOffset; - - if (writeOffset >= line.length()) { - return; // whole line is outside write range - } - else - if (writeOffset > 0) { - lineIndex = writeOffset; // line starts before RTF write start - } - else { - lineIndex = 0; - } - if (lineBackground != null) { - write("{\\highlight"); - write(getColorIndex(lineBackground, DEFAULT_BACKGROUND)); - write(" "); - } - for (int i = 0; i < styles.length; i++) { - StyleRange style = styles[i]; - int start = style.start - lineOffset; - int end = start + style.length; - int colorIndex; - // skip over partial first line - if (end < writeOffset) { - continue; - } - // style starts beyond line end or RTF write end - if (start >= lineEndOffset) { - break; - } - // write any unstyled text - if (lineIndex < start) { - // copy to start of style - // style starting betond end of write range or end of line - // is guarded against above. - write(line, lineIndex, start); - lineIndex = start; - } - // write styled text - colorIndex = getColorIndex(style.background, DEFAULT_BACKGROUND); - write("{\\cf"); - write(getColorIndex(style.foreground, DEFAULT_FOREGROUND)); - if (colorIndex != DEFAULT_BACKGROUND) { - write("\\highlight"); - write(colorIndex); - } - if ((style.fontStyle & SWT.BOLD) != 0) { - write("\\b"); - } - if ((style.fontStyle & SWT.ITALIC) != 0) { - write("\\i"); - } - if (style.underline) { - write("\\ul"); - } - if (style.strikeout) { - write("\\strike"); - } - write(" "); - // copy to end of style or end of write range or end of line - copyEnd = Math.min(end, lineEndOffset); - // guard against invalid styles and let style processing continue - copyEnd = Math.max(copyEnd, lineIndex); - write(line, lineIndex, copyEnd); - if ((style.fontStyle & SWT.BOLD) != 0) { - write("\\b0"); - } - if ((style.fontStyle & SWT.ITALIC) != 0) { - write("\\i0"); - } - if (style.underline) { - write("\\ul0"); - } - if (style.strikeout) { - write("\\strike0"); - } - write("}"); - lineIndex = copyEnd; - } - // write unstyled text at the end of the line - if (lineIndex < lineEndOffset) { - write(line, lineIndex, lineEndOffset); - } - if (lineBackground != null) { - write("}"); - } - } - } - /** - * The TextWriter class is used to write widget content to - * a string. Whole and partial lines and line breaks can be written. To write - * partial lines, specify the start and length of the desired segment - * during object creation. - *

                                - * NOTE: toString() is guaranteed to return a valid string only after close() - * has been called. - */ - class TextWriter { - private StringBuffer buffer; - private int startOffset; // offset of first character that will be written - private int endOffset; // offset of last character that will be written. - // 0 based from the beginning of the widget text. - private boolean isClosed = false; - - /** - * Creates a writer that writes content starting at offset "start" - * in the document. start and length can be set to specify partial lines. - *

                                - * - * @param start start offset of content to write, 0 based from beginning of document - * @param length length of content to write - */ - public TextWriter(int start, int length) { - buffer = new StringBuffer(length); - startOffset = start; - endOffset = start + length; - } - /** - * Closes the writer. Once closed no more content can be written. - * NOTE: toString() is not guaranteed to return a valid string unless - * the writer is closed. - */ - public void close() { - if (!isClosed) { - isClosed = true; - } - } - /** - * Returns the number of characters to write. - * @return the integer number of characters to write - */ - public int getCharCount() { - return endOffset - startOffset; - } - /** - * Returns the offset where writing starts. 0 based from the start of - * the widget text. Used to write partial lines. - * @return the integer offset where writing starts - */ - public int getStart() { - return startOffset; - } - /** - * Returns whether the writer is closed. - * @return a boolean specifying whether or not the writer is closed - */ - public boolean isClosed() { - return isClosed; - } - /** - * Returns the string. close() must be called before toString() - * is guaranteed to return a valid string. - * - * @return the string - */ - public String toString() { - return buffer.toString(); - } - /** - * Appends the given string to the data. - */ - void write(String string) { - buffer.append(string); - } - /** - * Inserts the given string to the data at the specified offset. - * Do nothing if "offset" is < 0 or > getCharCount() - *

                                - * - * @param string text to insert - * @param offset offset in the existing data to insert "string" at. - */ - void write(String string, int offset) { - if (offset < 0 || offset > buffer.length()) { - return; - } - buffer.insert(offset, string); - } - /** - * Appends the given int to the data. - */ - void write(int i) { - buffer.append(i); - } - /** - * Appends the given character to the data. - */ - void write(char i) { - buffer.append(i); - } - /** - * Appends the specified line text to the data. - *

                                - * - * @param line line text to write. Must not contain line breaks - * Line breaks should be written using writeLineDelimiter() - * @param lineOffset offset of the line. 0 based from the start of the - * widget document. Any text occurring before the start offset or after the - * end offset specified during object creation is ignored. - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLine(String line, int lineOffset) { - int lineLength = line.length(); - int lineIndex; - int copyEnd; - int writeOffset = startOffset - lineOffset; - - if (isClosed) { - SWT.error(SWT.ERROR_IO); - } - if (writeOffset >= lineLength) { - return; // whole line is outside write range - } - else - if (writeOffset > 0) { - lineIndex = writeOffset; // line starts before write start - } - else { - lineIndex = 0; - } - copyEnd = Math.min(lineLength, endOffset - lineOffset); - if (lineIndex < copyEnd) { - write(line.substring(lineIndex, copyEnd)); - } - } - /** - * Appends the specified line delmimiter to the data. - *

                                - * - * @param lineDelimiter line delimiter to write - * @exception SWTException

                                  - *
                                • ERROR_IO when the writer is closed.
                                • - *
                                - */ - public void writeLineDelimiter(String lineDelimiter) { - if (isClosed) { - SWT.error(SWT.ERROR_IO); - } - write(lineDelimiter); - } - } - /** - * LineCache provides an interface to calculate and invalidate - * line based data. - * Implementors need to return a line width in getWidth. - */ - interface LineCache { - /** - * Calculates the lines in the specified range. - *

                                - * - * @param startLine first line to calculate - * @param lineCount number of lines to calculate - */ - public void calculate(int startLine, int lineCount); - /** - * Returns a width that will be used by the StyledText - * widget to size a horizontal scroll bar. - *

                                - * - * @return the line width - */ - public int getWidth(); - /** - * Resets the lines in the specified range. - * This method is called in StyledText.redraw() - * and allows implementors to call redraw themselves during reset. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth); - /** - * Resets the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth); - /** - * Called when a text change occurred. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount); - } - /** - * Keeps track of line widths and the longest line in the - * StyledText document. - * Line widths are calculated when requested by a call to - * calculate and cached until reset by a call - * to redrawReset or reset. - */ - class ContentWidthCache implements LineCache { - StyledText parent; // parent widget, used to create a GC for line measuring - int[] lineWidth; // width in pixel of each line in the document, -1 for unknown width - StyledTextContent content; // content to use for line width calculation - int lineCount; // number of lines in lineWidth array - int maxWidth; // maximum line width of all measured lines - int maxWidthLineIndex; // index of the widest line - - /** - * Creates a new ContentWidthCache and allocates space - * for the given number of lines. - *

                                - * - * @param parent the StyledText widget used to create a GC for - * line measuring - * @param content a StyledTextContent containing the initial number - * of lines to allocate space for - */ - public ContentWidthCache(StyledText parent, StyledTextContent content) { - this.parent = parent; - this.content = content; - this.lineCount = content.getLineCount(); - lineWidth = new int[lineCount]; - reset(0, lineCount, false); - } - /** - * Calculates the width of each line in the given range if it has - * not been calculated yet. - * If any line in the given range is wider than the currently widest - * line, the maximum line width is updated, - *

                                - * - * @param startLine first line to calculate the line width of - * @param lineCount number of lines to calculate the line width for - */ - public void calculate(int startLine, int lineCount) { - int caretWidth = 0; - int endLine = startLine + lineCount; - - if (startLine < 0 || endLine > lineWidth.length) { - return; - } - caretWidth = getCaretWidth(); - for (int i = startLine; i < endLine; i++) { - if (lineWidth[i] == -1) { - String line = content.getLine(i); - int lineOffset = content.getOffsetAtLine(i); - lineWidth[i] = contentWidth(line, lineOffset) + caretWidth; - } - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - /** - * Calculates the width of the visible lines in the specified - * range. - *

                                - * - * @param startLine the first changed line - * @param newLineCount the number of inserted lines - */ - void calculateVisible(int startLine, int newLineCount) { - int topIndex = parent.getTopIndex(); - int bottomLine = Math.min(getPartialBottomIndex(), startLine + newLineCount); - - startLine = Math.max(startLine, topIndex); - calculate(startLine, bottomLine - startLine + 1); - } - /** - * Measures the width of the given line. - *

                                - * - * @param line the line to measure - * @param lineOffset start offset of the line to measure, relative - * to the start of the document - * @return the width of the given line - */ - int contentWidth(String line, int lineOffset) { - TextLayout layout = renderer.getTextLayout(line, lineOffset); - Rectangle rect = layout.getLineBounds(0); - renderer.disposeTextLayout(layout); - return rect.x + rect.width + leftMargin + rightMargin; - } - /** - * Grows the lineWidth array to accomodate new line width - * information. - *

                                - * - * @param numLines the number of elements to increase the array by - */ - void expandLines(int numLines) { - int size = lineWidth.length; - if (size - lineCount >= numLines) { - return; - } - int[] newLines = new int[Math.max(size * 2, size + numLines)]; - System.arraycopy(lineWidth, 0, newLines, 0, size); - lineWidth = newLines; - reset(size, lineWidth.length - size, false); - } - /** - * Returns the width of the longest measured line. - *

                                - * - * @return the width of the longest measured line. - */ - public int getWidth() { - return maxWidth; - } - /** - * Updates the line width array to reflect inserted or deleted lines. - *

                                - * - * @param startLine the starting line of the change that took place - * @param delta the number of lines in the change, > 0 indicates lines inserted, - * < 0 indicates lines deleted - */ - void linesChanged(int startLine, int delta) { - boolean inserting = delta > 0; - - if (delta == 0) { - return; - } - if (inserting) { - // shift the lines down to make room for new lines - expandLines(delta); - for (int i = lineCount - 1; i >= startLine; i--) { - lineWidth[i + delta] = lineWidth[i]; - } - // reset the new lines - for (int i = startLine + 1; i <= startLine + delta && i < lineWidth.length; i++) { - lineWidth[i] = -1; - } - // have new lines been inserted above the longest line? - if (maxWidthLineIndex >= startLine) { - maxWidthLineIndex += delta; - } - } - else { - // shift up the lines - for (int i = startLine - delta; i < lineCount; i++) { - lineWidth[i+delta] = lineWidth[i]; - } - // has the longest line been removed? - if (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine - delta) { - maxWidth = 0; - maxWidthLineIndex = -1; - } - else - if (maxWidthLineIndex >= startLine - delta) { - maxWidthLineIndex += delta; - } - } - lineCount += delta; - } - /** - * Resets the line width of the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=if the widest line is being - * reset the maximum width of all remaining cached lines is - * calculated. false=the maximum width is set to 0 if the - * widest line is being reset. - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) { - reset(startLine, lineCount, calculateMaxWidth); - } - /** - * Resets the line width of the lines in the specified range. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=if the widest line is being - * reset the maximum width of all remaining cached lines is - * calculated. false=the maximum width is set to 0 if the - * widest line is being reset. - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth) { - int endLine = startLine + lineCount; - - if (startLine < 0 || endLine > lineWidth.length) { - return; - } - for (int i = startLine; i < endLine; i++) { - lineWidth[i] = -1; - } - // if the longest line is one of the reset lines, the maximum line - // width is no longer valid - if (maxWidthLineIndex >= startLine && maxWidthLineIndex < endLine) { - maxWidth = 0; - maxWidthLineIndex = -1; - if (calculateMaxWidth) { - for (int i = 0; i < lineCount; i++) { - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - } - } - /** - * Updates the line width array to reflect a text change. - * Lines affected by the text change will be reset. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) { - int startLine = parent.getLineAtOffset(startOffset); - boolean removedMaxLine = (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine + replaceLineCount); - // entire text deleted? - if (startLine == 0 && replaceLineCount == lineCount) { - lineCount = newLineCount; - lineWidth = new int[lineCount]; - reset(0, lineCount, false); - maxWidth = 0; - } - else { - linesChanged(startLine, -replaceLineCount); - linesChanged(startLine, newLineCount); - lineWidth[startLine] = -1; - } - // only calculate the visible lines. otherwise measurements of changed lines - // outside the visible area may subsequently change again without the - // lines ever being visible. - calculateVisible(startLine, newLineCount); - // maxWidthLineIndex will be -1 (i.e., unknown line width) if the widget has - // not been visible yet and the changed lines have therefore not been - // calculated above. - if (removedMaxLine || - (maxWidthLineIndex != -1 && lineWidth[maxWidthLineIndex] < maxWidth)) { - // longest line has been removed or changed and is now shorter. - // need to recalculate maximum content width for all lines - maxWidth = 0; - for (int i = 0; i < lineCount; i++) { - if (lineWidth[i] > maxWidth) { - maxWidth = lineWidth[i]; - maxWidthLineIndex = i; - } - } - } - } - } - /** - * Updates the line wrapping of the content. - * The line wrapping must always be in a consistent state. - * Therefore, when reset or redrawReset - * is called, the line wrapping is recalculated immediately - * instead of in calculate. - */ - class WordWrapCache implements LineCache { - StyledText parent; - WrappedContent visualContent; - - /** - * Creates a new WordWrapCache and calculates an initial - * line wrapping. - *

                                - * - * @param parent the StyledText widget to wrap content in. - * @param content the content provider that does the actual line wrapping. - */ - public WordWrapCache(StyledText parent, WrappedContent content) { - this.parent = parent; - visualContent = content; - visualContent.wrapLines(); - } - /** - * Do nothing. Lines are wrapped immediately after reset. - *

                                - * - * @param startLine first line to calculate - * @param lineCount number of lines to calculate - */ - public void calculate(int startLine, int lineCount) { - } - /** - * Returns the client area width. Lines are wrapped so there - * is no horizontal scroll bar. - *

                                - * - * @return the line width - */ - public int getWidth() { - return parent.getClientArea().width; - } - /** - * Wraps the lines in the specified range. - * This method is called in StyledText.redraw(). - * A redraw is therefore not necessary. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) { - if (lineCount == visualContent.getLineCount()) { - // do a full rewrap if all lines are reset - visualContent.wrapLines(); - } - else { - visualContent.reset(startLine, lineCount); - } - } - /** - * Rewraps the lines in the specified range and redraws - * the widget if the line wrapping has changed. - *

                                - * - * @param startLine the first line to reset - * @param lineCount the number of lines to reset - * @param calculateMaxWidth true=implementors should retain a - * valid width even if it is affected by the reset operation. - * false=the width may be set to 0 - */ - public void reset(int startLine, int lineCount, boolean calculateMaxWidth) { - int itemCount = getPartialBottomIndex() - topIndex + 1; - int[] oldLineOffsets = new int[itemCount]; - - for (int i = 0; i < itemCount; i++) { - oldLineOffsets[i] = visualContent.getOffsetAtLine(i + topIndex); - } - redrawReset(startLine, lineCount, calculateMaxWidth); - // check for cases which will require a full redraw - if (getPartialBottomIndex() - topIndex + 1 != itemCount) { - // number of visible lines has changed - parent.internalRedraw(); - } - else { - for (int i = 0; i < itemCount; i++) { - if (visualContent.getOffsetAtLine(i + topIndex) != oldLineOffsets[i]) { - // wrapping of one of the visible lines has changed - parent.internalRedraw(); - break; - } - } - } - } - /** - * Passes the text change notification to the line wrap content. - *

                                - * - * @param startOffset the start offset of the text change - * @param newLineCount the number of inserted lines - * @param replaceLineCount the number of deleted lines - * @param newCharCount the number of new characters - * @param replaceCharCount the number of deleted characters - */ - public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) { - int startLine = visualContent.getLineAtOffset(startOffset); - visualContent.textChanged(startOffset, newLineCount, replaceLineCount, newCharCount, replaceCharCount); - - // if we are wrapping then it is possible for a deletion on the last - // line of text to shorten the total text length by a line. If this - // occurs then the startIndex must be adjusted such that a redraw will - // be performed if a visible region is affected. fixes bug 42947. - if (wordWrap) { - int lineCount = content.getLineCount(); - if (startLine >= lineCount) startLine = lineCount - 1; - } - if (startLine <= getPartialBottomIndex()) { - // only redraw if the text change affects text inside or above - // the visible lines. if it is below the visible lines it will - // not affect the word wrapping. fixes bug 14047. - parent.internalRedraw(); - } - } - } - -/** - * Constructs a new instance of this class given its parent - * and a style value describing its behavior and appearance. - *

                                - * The style value is either one of the style constants defined in - * class SWT which is applicable to instances of this - * class, or must be built by bitwise OR'ing together - * (that is, using the int "|" operator) two or more - * of those SWT style constants. The class description - * lists the style constants that are applicable to the class. - * Style bits are also inherited from superclasses. - *

                                - * - * @param parent a widget which will be the parent of the new instance (cannot be null) - * @param style the style of widget to construct - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT - if the parent is null
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent
                                • - *
                                - * - * @see SWT#FULL_SELECTION - * @see SWT#MULTI - * @see SWT#READ_ONLY - * @see SWT#SINGLE - * @see SWT#WRAP - * @see #getStyle - */ -public StyledText(Composite parent, int style) { - super(parent, checkStyle(style | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND)); - // set the bg/fg in the OS to ensure that these are the same as StyledText, necessary - // for ensuring that the bg/fg the IME box uses is the same as what StyledText uses - super.setForeground(getForeground()); - super.setBackground(getBackground()); - Display display = getDisplay(); - isMirrored = (super.getStyle() & SWT.MIRRORED) != 0; - if ((style & SWT.READ_ONLY) != 0) { - setEditable(false); - } - leftMargin = rightMargin = isBidiCaret() ? BIDI_CARET_WIDTH - 1: 0; - if ((style & SWT.SINGLE) != 0 && (style & SWT.BORDER) != 0) { - leftMargin = topMargin = rightMargin = bottomMargin = 2; - } - clipboard = new Clipboard(display); - installDefaultContent(); - initializeRenderer(); - if ((style & SWT.WRAP) != 0) { - setWordWrap(true); - } - else { - lineCache = new ContentWidthCache(this, content); - } - defaultCaret = new Caret(this, SWT.NULL); - if (isBidiCaret()) { - createCaretBitmaps(); - Runnable runnable = new Runnable() { - public void run() { - int direction = BidiUtil.getKeyboardLanguage() == BidiUtil.KEYBOARD_BIDI ? SWT.RIGHT : SWT.LEFT; - if (direction == caretDirection) return; - if (getCaret() != defaultCaret) return; - int lineIndex = getCaretLine(); - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, lineIndex, offsetInLine); - setCaretLocation(newCaretX, getCaretLine(), direction); - } - }; - BidiUtil.addLanguageListener(handle, runnable); - } - setCaret(defaultCaret); - calculateScrollBars(); - createKeyBindings(); - ibeamCursor = new Cursor(display, SWT.CURSOR_IBEAM); - setCursor(ibeamCursor); - installListeners(); - installDefaultLineStyler(); - initializeAccessible(); -} -/** - * Adds an extended modify listener. An ExtendedModify event is sent by the - * widget when the widget text has changed. - *

                                - * - * @param extendedModifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { - checkWidget(); - if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - StyledTextListener typedListener = new StyledTextListener(extendedModifyListener); - addListener(ExtendedModify, typedListener); -} -/** - * Maps a key to an action. - * One action can be associated with N keys. However, each key can only - * have one action (key:action is N:1 relation). - *

                                - * - * @param key a key code defined in SWT.java or a character. - * Optionally ORd with a state mask. Preferred state masks are one or more of - * SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform - * differences. However, there may be cases where using the specific state masks - * (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense. - * @param action one of the predefined actions defined in ST.java. - * Use SWT.NULL to remove a key binding. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setKeyBinding(int key, int action) { - checkWidget(); - - int keyValue = key & SWT.KEY_MASK; - int modifierValue = key & SWT.MODIFIER_MASK; - char keyChar = (char)keyValue; - - if (Compatibility.isLetter(keyChar)) { - // make the keybinding case insensitive by adding it - // in its upper and lower case form - char ch = Character.toUpperCase(keyChar); - int newKey = ch | modifierValue; - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(newKey)); - } - else { - keyActionMap.put(new Integer(newKey), new Integer(action)); - } - ch = Character.toLowerCase(keyChar); - newKey = ch | modifierValue; - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(newKey)); - } - else { - keyActionMap.put(new Integer(newKey), new Integer(action)); - } - } else { - if (action == SWT.NULL) { - keyActionMap.remove(new Integer(key)); - } - else { - keyActionMap.put(new Integer(key), new Integer(action)); - } - } - -} -/** - * Adds a bidirectional segment listener. A BidiSegmentEvent is sent - * whenever a line of text is measured or rendered. The user can - * specify text ranges in the line that should be treated as if they - * had a different direction than the surrounding text. - * This may be used when adjacent segments of right-to-left text should - * not be reordered relative to each other. - * E.g., Multiple Java string literals in a right-to-left language - * should generally remain in logical order to each other, that is, the - * way they are stored. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - * @see BidiSegmentEvent - * @since 2.0 - */ -public void addBidiSegmentListener(BidiSegmentListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetSegments, typedListener); -} -/** - * Adds a line background listener. A LineGetBackground event is sent by the - * widget to determine the background color for a line. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addLineBackgroundListener(LineBackgroundListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - if (!userLineBackground) { - removeLineBackgroundListener(defaultLineStyler); - defaultLineStyler.setLineBackground(0, logicalContent.getLineCount(), null); - userLineBackground = true; - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetBackground, typedListener); -} -/** - * Adds a line style listener. A LineGetStyle event is sent by the widget to - * determine the styles for a line. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addLineStyleListener(LineStyleListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (!userLineStyle) { - removeLineStyleListener(defaultLineStyler); - defaultLineStyler.setStyleRange(null); - userLineStyle = true; - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(LineGetStyle, typedListener); -} -/** - * Adds a modify listener. A Modify event is sent by the widget when the widget text - * has changed. - *

                                - * - * @param modifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addModifyListener(ModifyListener modifyListener) { - checkWidget(); - if (modifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(modifyListener); - addListener(SWT.Modify, typedListener); -} -/** - * Adds a selection listener. A Selection event is sent by the widget when the - * selection has changed. - *

                                - * When widgetSelected is called, the event x amd y fields contain - * the start and end caret indices of the selection. - * widgetDefaultSelected is not called for StyledTexts. - *

                                - * - * @param listener the listener - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addSelectionListener(SelectionListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(listener); - addListener(SWT.Selection, typedListener); -} -/** - * Adds a verify key listener. A VerifyKey event is sent by the widget when a key - * is pressed. The widget ignores the key press if the listener sets the doit field - * of the event to false. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addVerifyKeyListener(VerifyKeyListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - StyledTextListener typedListener = new StyledTextListener(listener); - addListener(VerifyKey, typedListener); -} -/** - * Adds a verify listener. A Verify event is sent by the widget when the widget text - * is about to change. The listener can set the event text and the doit field to - * change the text that is set in the widget or to force the widget to ignore the - * text change. - *

                                - * - * @param verifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void addVerifyListener(VerifyListener verifyListener) { - checkWidget(); - if (verifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(verifyListener); - addListener(SWT.Verify, typedListener); -} -/** - * Appends a string to the text at the end of the widget. - *

                                - * - * @param string the string to be appended - * @see #replaceTextRange(int,int,String) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void append(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - int lastChar = Math.max(getCharCount(), 0); - replaceTextRange(lastChar, 0, string); -} -/** - * Calculates the width of the widest visible line. - */ -void calculateContentWidth() { - lineCache = getLineCache(content); - lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1); -} -/** - * Calculates the scroll bars - */ -void calculateScrollBars() { - ScrollBar horizontalBar = getHorizontalBar(); - ScrollBar verticalBar = getVerticalBar(); - - setScrollBars(); - if (verticalBar != null) { - verticalBar.setIncrement(getVerticalIncrement()); - } - if (horizontalBar != null) { - horizontalBar.setIncrement(getHorizontalIncrement()); - } -} -/** - * Calculates the top index based on the current vertical scroll offset. - * The top index is the index of the topmost fully visible line or the - * topmost partially visible line if no line is fully visible. - * The top index starts at 0. - */ -void calculateTopIndex() { - int oldTopIndex = topIndex; - int verticalIncrement = getVerticalIncrement(); - int clientAreaHeight = getClientArea().height; - - if (verticalIncrement == 0) { - return; - } - topIndex = Compatibility.ceil(verticalScrollOffset, verticalIncrement); - // Set top index to partially visible top line if no line is fully - // visible but at least some of the widget client area is visible. - // Fixes bug 15088. - if (topIndex > 0) { - if (clientAreaHeight > 0) { - int bottomPixel = verticalScrollOffset + clientAreaHeight; - int fullLineTopPixel = topIndex * verticalIncrement; - int fullLineVisibleHeight = bottomPixel - fullLineTopPixel; - // set top index to partially visible line if no line fully fits in - // client area or if space is available but not used (the latter should - // never happen because we use claimBottomFreeSpace) - if (fullLineVisibleHeight < verticalIncrement) { - topIndex--; - } - } - else - if (topIndex >= content.getLineCount()) { - topIndex = content.getLineCount() - 1; - } - } - if (topIndex != oldTopIndex) { - topOffset = content.getOffsetAtLine(topIndex); - lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1); - setHorizontalScrollBar(); - } -} -/** - * Hides the scroll bars if widget is created in single line mode. - */ -static int checkStyle(int style) { - if ((style & SWT.SINGLE) != 0) { - style &= ~(SWT.H_SCROLL | SWT.V_SCROLL | SWT.WRAP | SWT.MULTI); - } else { - style |= SWT.MULTI; - if ((style & SWT.WRAP) != 0) { - style &= ~SWT.H_SCROLL; - } - } - return style; -} -/** - * Scrolls down the text to use new space made available by a resize or by - * deleted lines. - */ -void claimBottomFreeSpace() { - int newVerticalOffset = Math.max(0, content.getLineCount() * lineHeight - getClientArea().height); - - if (newVerticalOffset < verticalScrollOffset) { - // Scroll up so that empty lines below last text line are used. - // Fixes 1GEYJM0 - setVerticalScrollOffset(newVerticalOffset, true); - } -} -/** - * Scrolls text to the right to use new space made available by a resize. - */ -void claimRightFreeSpace() { - int newHorizontalOffset = Math.max(0, lineCache.getWidth() - (getClientArea().width - leftMargin - rightMargin)); - - if (newHorizontalOffset < horizontalScrollOffset) { - // item is no longer drawn past the right border of the client area - // align the right end of the item with the right border of the - // client area (window is scrolled right). - scrollHorizontalBar(newHorizontalOffset - horizontalScrollOffset); - } -} -/** - * Clears the widget margin. - * - * @param gc GC to render on - * @param background background color to use for clearing the margin - * @param clientArea widget client area dimensions - */ -void clearMargin(GC gc, Color background, Rectangle clientArea, int y) { - // clear the margin background - gc.setBackground(background); - if (topMargin > 0) { - gc.fillRectangle(0, -y, clientArea.width, topMargin); - } - if (bottomMargin > 0) { - gc.fillRectangle(0, clientArea.height - bottomMargin - y, clientArea.width, bottomMargin); - } - if (leftMargin > 0) { - gc.fillRectangle(0, -y, leftMargin, clientArea.height); - } - if (rightMargin > 0) { - gc.fillRectangle(clientArea.width - rightMargin, -y, rightMargin, clientArea.height); - } -} -/** - * Removes the widget selection. - *

                                - * - * @param sendEvent a Selection event is sent when set to true and when the selection is actually reset. - */ -void clearSelection(boolean sendEvent) { - int selectionStart = selection.x; - int selectionEnd = selection.y; - int length = content.getCharCount(); - - resetSelection(); - // redraw old selection, if any - if (selectionEnd - selectionStart > 0) { - // called internally to remove selection after text is removed - // therefore make sure redraw range is valid. - int redrawStart = Math.min(selectionStart, length); - int redrawEnd = Math.min(selectionEnd, length); - if (redrawEnd - redrawStart > 0) { - internalRedrawRange(redrawStart, redrawEnd - redrawStart, true); - } - if (sendEvent) { - sendSelectionEvent(); - } - } -} -public Point computeSize (int wHint, int hHint, boolean changed) { - checkWidget(); - int count, width, height; - boolean singleLine = (getStyle() & SWT.SINGLE) != 0; - - if (singleLine) { - count = 1; - } else { - count = content.getLineCount(); - } - if (wHint != SWT.DEFAULT) { - width = wHint; - } - else { - width = DEFAULT_WIDTH; - } - if (wHint == SWT.DEFAULT) { - LineCache computeLineCache = lineCache; - if (wordWrap) { - // set non-wrapping content width calculator. Ensures ideal line width - // that does not required wrapping. Fixes bug 31195. - computeLineCache = new ContentWidthCache(this, logicalContent); - if (!singleLine) { - count = logicalContent.getLineCount(); - } - } - // Only calculate what can actually be displayed. - // Do this because measuring each text line is a - // time-consuming process. - int visibleCount = Math.min (count, getDisplay().getBounds().height / lineHeight); - computeLineCache.calculate(0, visibleCount); - width = computeLineCache.getWidth() + leftMargin + rightMargin; - } - else - if (wordWrap && !singleLine) { - // calculate to wrap to width hint. Fixes bug 20377. - // don't wrap live content. Fixes bug 38344. - WrappedContent wrappedContent = new WrappedContent(renderer, logicalContent); - wrappedContent.wrapLines(width); - count = wrappedContent.getLineCount(); - } - if (hHint != SWT.DEFAULT) { - height = hHint; - } - else { - height = count * lineHeight + topMargin + bottomMargin; - } - // Use default values if no text is defined. - if (width == 0) { - width = DEFAULT_WIDTH; - } - if (height == 0) { - if (singleLine) { - height = lineHeight; - } - else { - height = DEFAULT_HEIGHT; - } - } - Rectangle rect = computeTrim(0, 0, width, height); - return new Point (rect.width, rect.height); -} -/** - * Copies the selected text to the DND.CLIPBOARD clipboard. - * The text will be put on the clipboard in plain text format and RTF format. - * The DND.CLIPBOARD clipboard is used for data that is - * transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) or - * by menu action. - * - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void copy() { - checkWidget(); - copy(DND.CLIPBOARD); -} - -/** - * Copies the selected text to the specified clipboard. The text will be put in the - * clipboard in plain text format and RTF format. - * - *

                                The clipboardType is one of the clipboard constants defined in class - * DND. The DND.CLIPBOARD clipboard is - * used for data that is transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) - * or by menu action. The DND.SELECTION_CLIPBOARD - * clipboard is used for data that is transferred by selecting text and pasting - * with the middle mouse button.

                                - * - * @param clipboardType indicates the type of clipboard - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 3.1 - */ -public void copy(int clipboardType) { - checkWidget(); - if (clipboardType != DND.CLIPBOARD && - clipboardType != DND.SELECTION_CLIPBOARD) return; - int length = selection.y - selection.x; - if (length > 0) { - try { - setClipboardContent(selection.x, length, clipboardType); - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } -} -/** - * Returns a string that uses only the line delimiter specified by the - * StyledTextContent implementation. - * Returns only the first line if the widget has the SWT.SINGLE style. - *

                                - * - * @param text the text that may have line delimiters that don't - * match the model line delimiter. Possible line delimiters - * are CR ('\r'), LF ('\n'), CR/LF ("\r\n") - * @return the converted text that only uses the line delimiter - * specified by the model. Returns only the first line if the widget - * has the SWT.SINGLE style. - */ -String getModelDelimitedText(String text) { - StringBuffer convertedText; - String delimiter = getLineDelimiter(); - int length = text.length(); - int crIndex = 0; - int lfIndex = 0; - int i = 0; - - if (length == 0) { - return text; - } - convertedText = new StringBuffer(length); - while (i < length) { - if (crIndex != -1) { - crIndex = text.indexOf(SWT.CR, i); - } - if (lfIndex != -1) { - lfIndex = text.indexOf(SWT.LF, i); - } - if (lfIndex == -1 && crIndex == -1) { // no more line breaks? - break; - } - else // CR occurs before LF or no LF present? - if ((crIndex < lfIndex && crIndex != -1) || lfIndex == -1) { - convertedText.append(text.substring(i, crIndex)); - if (lfIndex == crIndex + 1) { // CR/LF combination? - i = lfIndex + 1; - } - else { - i = crIndex + 1; - } - } - else { // LF occurs before CR! - convertedText.append(text.substring(i, lfIndex)); - i = lfIndex + 1; - } - if (isSingleLine()) { - break; - } - convertedText.append(delimiter); - } - // copy remaining text if any and if not in single line mode or no - // text copied thus far (because there only is one line) - if (i < length && (!isSingleLine() || convertedText.length() == 0)) { - convertedText.append(text.substring(i)); - } - return convertedText.toString(); -} -/** - * Creates default key bindings. - */ -void createKeyBindings() { - int nextKey = isMirrored() ? SWT.ARROW_LEFT : SWT.ARROW_RIGHT; - int previousKey = isMirrored() ? SWT.ARROW_RIGHT : SWT.ARROW_LEFT; - - // Navigation - setKeyBinding(SWT.ARROW_UP, ST.LINE_UP); - setKeyBinding(SWT.ARROW_DOWN, ST.LINE_DOWN); - setKeyBinding(SWT.HOME, ST.LINE_START); - setKeyBinding(SWT.END, ST.LINE_END); - setKeyBinding(SWT.PAGE_UP, ST.PAGE_UP); - setKeyBinding(SWT.PAGE_DOWN, ST.PAGE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD1, ST.TEXT_START); - setKeyBinding(SWT.END | SWT.MOD1, ST.TEXT_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD1, ST.WINDOW_START); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1, ST.WINDOW_END); - setKeyBinding(nextKey, ST.COLUMN_NEXT); - setKeyBinding(previousKey, ST.COLUMN_PREVIOUS); - setKeyBinding(nextKey | SWT.MOD1, ST.WORD_NEXT); - setKeyBinding(previousKey | SWT.MOD1, ST.WORD_PREVIOUS); - - // Selection - setKeyBinding(SWT.ARROW_UP | SWT.MOD2, ST.SELECT_LINE_UP); - setKeyBinding(SWT.ARROW_DOWN | SWT.MOD2, ST.SELECT_LINE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD2, ST.SELECT_LINE_START); - setKeyBinding(SWT.END | SWT.MOD2, ST.SELECT_LINE_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD2, ST.SELECT_PAGE_UP); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD2, ST.SELECT_PAGE_DOWN); - setKeyBinding(SWT.HOME | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_START); - setKeyBinding(SWT.END | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_END); - setKeyBinding(SWT.PAGE_UP | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_START); - setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_END); - setKeyBinding(nextKey | SWT.MOD2, ST.SELECT_COLUMN_NEXT); - setKeyBinding(previousKey | SWT.MOD2, ST.SELECT_COLUMN_PREVIOUS); - setKeyBinding(nextKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_NEXT); - setKeyBinding(previousKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_PREVIOUS); - - // Modification - // Cut, Copy, Paste - setKeyBinding('X' | SWT.MOD1, ST.CUT); - setKeyBinding('C' | SWT.MOD1, ST.COPY); - setKeyBinding('V' | SWT.MOD1, ST.PASTE); - // Cut, Copy, Paste Wordstar style - setKeyBinding(SWT.DEL | SWT.MOD2, ST.CUT); - setKeyBinding(SWT.INSERT | SWT.MOD1, ST.COPY); - setKeyBinding(SWT.INSERT | SWT.MOD2, ST.PASTE); - setKeyBinding(SWT.BS | SWT.MOD2, ST.DELETE_PREVIOUS); - - setKeyBinding(SWT.BS, ST.DELETE_PREVIOUS); - setKeyBinding(SWT.DEL, ST.DELETE_NEXT); - setKeyBinding(SWT.BS | SWT.MOD1, ST.DELETE_WORD_PREVIOUS); - setKeyBinding(SWT.DEL | SWT.MOD1, ST.DELETE_WORD_NEXT); - - // Miscellaneous - setKeyBinding(SWT.INSERT, ST.TOGGLE_OVERWRITE); -} -/** - * Create the bitmaps to use for the caret in bidi mode. This - * method only needs to be called upon widget creation and when the - * font changes (the caret bitmap height needs to match font height). - */ -void createCaretBitmaps() { - int caretWidth = BIDI_CARET_WIDTH; - Display display = getDisplay(); - if (leftCaretBitmap != null) { - if (defaultCaret != null && leftCaretBitmap.equals(defaultCaret.getImage())) { - defaultCaret.setImage(null); - } - leftCaretBitmap.dispose(); - } - leftCaretBitmap = new Image(display, caretWidth, lineHeight); - GC gc = new GC (leftCaretBitmap); - gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.fillRectangle(0, 0, caretWidth, lineHeight); - gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - gc.drawLine(0,0,0,lineHeight); - gc.drawLine(0,0,caretWidth-1,0); - gc.drawLine(0,1,1,1); - gc.dispose(); - - if (rightCaretBitmap != null) { - if (defaultCaret != null && rightCaretBitmap.equals(defaultCaret.getImage())) { - defaultCaret.setImage(null); - } - rightCaretBitmap.dispose(); - } - rightCaretBitmap = new Image(display, caretWidth, lineHeight); - gc = new GC (rightCaretBitmap); - gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.fillRectangle(0, 0, caretWidth, lineHeight); - gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE)); - gc.drawLine(caretWidth-1,0,caretWidth-1,lineHeight); - gc.drawLine(0,0,caretWidth-1,0); - gc.drawLine(caretWidth-1,1,1,1); - gc.dispose(); -} -/** - * Moves the selected text to the clipboard. The text will be put in the - * clipboard in plain text format and RTF format. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void cut(){ - checkWidget(); - int length = selection.y - selection.x; - - if (length > 0) { - try { - setClipboardContent(selection.x, length, DND.CLIPBOARD); - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - // Abort cut operation if copy to clipboard fails. - // Fixes bug 21030. - return; - } - doDelete(); - } -} -/** - * A mouse move event has occurred. See if we should start autoscrolling. If - * the move position is outside of the client area, initiate autoscrolling. - * Otherwise, we've moved back into the widget so end autoscrolling. - */ -void doAutoScroll(Event event) { - Rectangle area = getClientArea(); - - if (event.y > area.height) { - doAutoScroll(SWT.DOWN, event.y - area.height); - } - else - if (event.y < 0) { - doAutoScroll(SWT.UP, -event.y); - } - else - if (event.x < leftMargin && !wordWrap) { - doAutoScroll(ST.COLUMN_PREVIOUS, leftMargin - event.x); - } - else - if (event.x > area.width - leftMargin - rightMargin && !wordWrap) { - doAutoScroll(ST.COLUMN_NEXT, event.x - (area.width - leftMargin - rightMargin)); - } - else { - endAutoScroll(); - } -} -/** - * Initiates autoscrolling. - *

                                - * - * @param direction SWT.UP, SWT.DOWN, SWT.COLUMN_NEXT, SWT.COLUMN_PREVIOUS - */ -void doAutoScroll(int direction, int distance) { - Runnable timer = null; - - autoScrollDistance = distance; - - // If we're already autoscrolling in the given direction do nothing - if (autoScrollDirection == direction) { - return; - } - - final Display display = getDisplay(); - // Set a timer that will simulate the user pressing and holding - // down a cursor key (i.e., arrowUp, arrowDown). - if (direction == SWT.UP) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == SWT.UP) { - int lines = (autoScrollDistance / getLineHeight()) + 1; - doSelectionPageUp(lines); - display.timerExec(V_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(V_SCROLL_RATE, timer); - } else if (direction == SWT.DOWN) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == SWT.DOWN) { - int lines = (autoScrollDistance / getLineHeight()) + 1; - doSelectionPageDown(lines); - display.timerExec(V_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(V_SCROLL_RATE, timer); - } else if (direction == ST.COLUMN_NEXT) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == ST.COLUMN_NEXT) { - doVisualNext(); - setMouseWordSelectionAnchor(); - doMouseSelection(); - display.timerExec(H_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(H_SCROLL_RATE, timer); - } else if (direction == ST.COLUMN_PREVIOUS) { - timer = new Runnable() { - public void run() { - if (autoScrollDirection == ST.COLUMN_PREVIOUS) { - doVisualPrevious(); - setMouseWordSelectionAnchor(); - doMouseSelection(); - display.timerExec(H_SCROLL_RATE, this); - } - } - }; - autoScrollDirection = direction; - display.timerExec(H_SCROLL_RATE, timer); - } -} -/** - * Deletes the previous character. Delete the selected text if any. - * Move the caret in front of the deleted text. - */ -void doBackspace() { - Event event = new Event(); - event.text = ""; - if (selection.x != selection.y) { - event.start = selection.x; - event.end = selection.y; - sendKeyEvent(event); - } - else - if (caretOffset > 0) { - int line = content.getLineAtOffset(caretOffset); - int lineOffset = content.getOffsetAtLine(line); - - if (caretOffset == lineOffset) { - lineOffset = content.getOffsetAtLine(line - 1); - event.start = lineOffset + content.getLine(line - 1).length(); - event.end = caretOffset; - } - else { - String lineText = content.getLine(line); - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - int start = layout.getPreviousOffset(caretOffset - lineOffset, SWT.MOVEMENT_CHAR); - renderer.disposeTextLayout(layout); - event.start = start + lineOffset; - event.end = caretOffset; - } - sendKeyEvent(event); - } -} -/** - * Replaces the selection with the character or insert the character at the - * current caret position if no selection exists. - * If a carriage return was typed replace it with the line break character - * used by the widget on this platform. - *

                                - * - * @param key the character typed by the user - */ -void doContent(char key) { - Event event; - - if (textLimit > 0 && - content.getCharCount() - (selection.y - selection.x) >= textLimit) { - return; - } - event = new Event(); - event.start = selection.x; - event.end = selection.y; - // replace a CR line break with the widget line break - // CR does not make sense on Windows since most (all?) applications - // don't recognize CR as a line break. - if (key == SWT.CR || key == SWT.LF) { - if (!isSingleLine()) { - event.text = getLineDelimiter(); - } - } - // no selection and overwrite mode is on and the typed key is not a - // tab character (tabs are always inserted without overwriting)? - else - if (selection.x == selection.y && overwrite && key != TAB) { - int lineIndex = content.getLineAtOffset(event.end); - int lineOffset = content.getOffsetAtLine(lineIndex); - String line = content.getLine(lineIndex); - // replace character at caret offset if the caret is not at the - // end of the line - if (event.end < lineOffset + line.length()) { - event.end++; - } - event.text = new String(new char[] {key}); - } - else { - event.text = new String(new char[] {key}); - } - if (event.text != null) { - sendKeyEvent(event); - } -} -/** - * Moves the caret after the last character of the widget content. - */ -void doContentEnd() { - // place caret at end of first line if receiver is in single - // line mode. fixes 4820. - if (isSingleLine()) { - doLineEnd(); - } - else { - int length = content.getCharCount(); - if (caretOffset < length) { - caretOffset = length; - showCaret(); - } - } -} -/** - * Moves the caret in front of the first character of the widget content. - */ -void doContentStart() { - if (caretOffset > 0) { - caretOffset = 0; - showCaret(); - } -} -/** - * Moves the caret to the start of the selection if a selection exists. - * Otherwise, if no selection exists move the cursor according to the - * cursor selection rules. - *

                                - * - * @see #doSelectionCursorPrevious - */ -void doCursorPrevious() { - advancing = false; - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.x; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionCursorPrevious(); - } -} -/** - * Moves the caret to the end of the selection if a selection exists. - * Otherwise, if no selection exists move the cursor according to the - * cursor selection rules. - *

                                - * - * @see #doSelectionCursorNext - */ -void doCursorNext() { - advancing = true; - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.y; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionCursorNext(); - } -} -/** - * Deletes the next character. Delete the selected text if any. - */ -void doDelete() { - Event event = new Event(); - event.text = ""; - if (selection.x != selection.y) { - event.start = selection.x; - event.end = selection.y; - sendKeyEvent(event); - } - else - if (caretOffset < content.getCharCount()) { - int line = content.getLineAtOffset(caretOffset); - int lineOffset = content.getOffsetAtLine(line); - int lineLength = content.getLine(line).length(); - - if (caretOffset == lineOffset + lineLength) { - event.start = caretOffset; - event.end = content.getOffsetAtLine(line + 1); - } - else { - event.start = caretOffset; - event.end = getClusterNext(caretOffset, line); - } - sendKeyEvent(event); - } -} -/** - * Deletes the next word. - */ -void doDeleteWordNext() { - if (selection.x != selection.y) { - // if a selection exists, treat the as if - // only the delete key was pressed - doDelete(); - } else { - Event event = new Event(); - event.text = ""; - event.start = caretOffset; - event.end = getWordEnd(caretOffset); - sendKeyEvent(event); - } -} -/** - * Deletes the previous word. - */ -void doDeleteWordPrevious() { - if (selection.x != selection.y) { - // if a selection exists, treat as if - // only the backspace key was pressed - doBackspace(); - } else { - Event event = new Event(); - event.text = ""; - event.start = getWordStart(caretOffset); - event.end = caretOffset; - sendKeyEvent(event); - } -} -/** - * Moves the caret one line down and to the same character offset relative - * to the beginning of the line. Move the caret to the end of the new line - * if the new line is shorter than the character offset. - * - * @return index of the new line relative to the first line in the document - */ -int doLineDown() { - if (isSingleLine()) { - return 0; - } - // allow line down action only if receiver is not in single line mode. - // fixes 4820. - int caretLine = getCaretLine(); - if (caretLine < content.getLineCount() - 1) { - caretLine++; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - } - return caretLine; -} -/** - * Moves the caret to the end of the line. - */ -void doLineEnd() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int lineLength = content.getLine(caretLine).length(); - int lineEndOffset = lineOffset + lineLength; - - if (caretOffset < lineEndOffset) { - caretOffset = lineEndOffset; - showCaret(); - } -} -/** - * Moves the caret to the beginning of the line. - */ -void doLineStart() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - if (caretOffset > lineOffset) { - caretOffset = lineOffset; - showCaret(caretLine); - } -} -/** - * Moves the caret one line up and to the same character offset relative - * to the beginning of the line. Move the caret to the end of the new line - * if the new line is shorter than the character offset. - * - * @return index of the new line relative to the first line in the document - */ -int doLineUp() { - int caretLine = getCaretLine(); - if (caretLine > 0) { - caretLine--; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - } - return caretLine; -} -/** - * Moves the caret to the specified location. - *

                                - * - * @param x x location of the new caret position - * @param y y location of the new caret position - * @param select the location change is a selection operation. - * include the line delimiter in the selection - */ -void doMouseLocationChange(int x, int y, boolean select) { - int line = (y + verticalScrollOffset) / lineHeight; - int lineCount = content.getLineCount(); - int newCaretOffset; - int newCaretLine; - boolean oldAdvancing = advancing; - - updateCaretDirection = true; - if (line > lineCount - 1) { - line = lineCount - 1; - } - // allow caret to be placed below first line only if receiver is - // not in single line mode. fixes 4820. - if (line < 0 || (isSingleLine() && line > 0)) { - return; - } - newCaretOffset = getOffsetAtMouseLocation(x, line); - - if (mouseDoubleClick) { - // double click word select the previous/next word. fixes bug 15610 - newCaretOffset = doMouseWordSelect(x, newCaretOffset, line); - } - newCaretLine = content.getLineAtOffset(newCaretOffset); - // Is the mouse within the left client area border or on - // a different line? If not the autoscroll selection - // could be incorrectly reset. Fixes 1GKM3XS - if (y >= 0 && y < getClientArea().height && - (x >= 0 && x < getClientArea().width || wordWrap || - newCaretLine != content.getLineAtOffset(caretOffset))) { - if (newCaretOffset != caretOffset || advancing != oldAdvancing) { - caretOffset = newCaretOffset; - if (select) { - doMouseSelection(); - } - showCaret(); - } - } - if (!select) { - caretOffset = newCaretOffset; - clearSelection(true); - } -} -/** - * Updates the selection based on the caret position - */ -void doMouseSelection() { - if (caretOffset <= selection.x || - (caretOffset > selection.x && - caretOffset < selection.y && selectionAnchor == selection.x)) { - doSelection(ST.COLUMN_PREVIOUS); - } - else { - doSelection(ST.COLUMN_NEXT); - } -} -/** - * Returns the offset of the word at the specified offset. - * If the current selection extends from high index to low index - * (i.e., right to left, or caret is at left border of selecton on - * non-bidi platforms) the start offset of the word preceeding the - * selection is returned. If the current selection extends from - * low index to high index the end offset of the word following - * the selection is returned. - * - * @param x mouse x location - * @param newCaretOffset caret offset of the mouse cursor location - * @param line line index of the mouse cursor location - */ -int doMouseWordSelect(int x, int newCaretOffset, int line) { - int wordOffset; - - // flip selection anchor based on word selection direction from - // base double click. Always do this here (and don't rely on doAutoScroll) - // because auto scroll only does not cover all possible mouse selections - // (e.g., mouse x < 0 && mouse y > caret line y) - if (newCaretOffset < selectionAnchor && selectionAnchor == selection.x) { - selectionAnchor = doubleClickSelection.y; - } - else - if (newCaretOffset > selectionAnchor && selectionAnchor == selection.y) { - selectionAnchor = doubleClickSelection.x; - } - if (x >= 0 && x < getClientArea().width) { - // find the previous/next word - if (caretOffset == selection.x) { - wordOffset = getWordStart(newCaretOffset); - } - else { - wordOffset = getWordEndNoSpaces(newCaretOffset); - } - // mouse word select only on same line mouse cursor is on - if (content.getLineAtOffset(wordOffset) == line) { - newCaretOffset = wordOffset; - } - } - return newCaretOffset; -} -/** - * Scrolls one page down so that the last line (truncated or whole) - * of the current page becomes the fully visible top line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the end - * of the text where a full page scroll is not possible. In this case - * the caret is moved after the last character. - *

                                - * - * @param select whether or not to select the page - */ -void doPageDown(boolean select, int lines) { - int lineCount = content.getLineCount(); - int oldColumnX = columnX; - int oldHScrollOffset = horizontalScrollOffset; - int caretLine; - - // do nothing if in single line mode. fixes 5673 - if (isSingleLine()) { - return; - } - caretLine = getCaretLine(); - if (caretLine < lineCount - 1) { - int verticalMaximum = lineCount * getVerticalIncrement(); - int pageSize = getClientArea().height; - int scrollLines = Math.min(lineCount - caretLine - 1, lines); - int scrollOffset; - - // ensure that scrollLines never gets negative and at leat one - // line is scrolled. fixes bug 5602. - scrollLines = Math.max(1, scrollLines); - caretLine += scrollLines; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - if (select) { - doSelection(ST.COLUMN_NEXT); - } - // scroll one page down or to the bottom - scrollOffset = verticalScrollOffset + scrollLines * getVerticalIncrement(); - if (scrollOffset + pageSize > verticalMaximum) { - scrollOffset = verticalMaximum - pageSize; - } - if (scrollOffset > verticalScrollOffset) { - setVerticalScrollOffset(scrollOffset, true); - } - } - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - int hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; -} -/** - * Moves the cursor to the end of the last fully visible line. - */ -void doPageEnd() { - // go to end of line if in single line mode. fixes 5673 - if (isSingleLine()) { - doLineEnd(); - } - else { - int line = getBottomIndex(); - int bottomCaretOffset = content.getOffsetAtLine(line) + content.getLine(line).length(); - - if (caretOffset < bottomCaretOffset) { - caretOffset = bottomCaretOffset; - showCaret(); - } - } -} -/** - * Moves the cursor to the beginning of the first fully visible line. - */ -void doPageStart() { - int topCaretOffset = content.getOffsetAtLine(topIndex); - - if (caretOffset > topCaretOffset) { - caretOffset = topCaretOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(topIndex); - } -} -/** - * Scrolls one page up so that the first line (truncated or whole) - * of the current page becomes the fully visible last line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the beginning - * of the text where a full page scroll is not possible. In this case the - * caret is moved in front of the first character. - */ -void doPageUp(boolean select, int lines) { - int oldColumnX = columnX; - int oldHScrollOffset = horizontalScrollOffset; - int caretLine = getCaretLine(); - - if (caretLine > 0) { - int scrollLines = Math.max(1, Math.min(caretLine, lines)); - int scrollOffset; - - caretLine -= scrollLines; - caretOffset = getOffsetAtMouseLocation(columnX, caretLine); - if (select) { - doSelection(ST.COLUMN_PREVIOUS); - } - // scroll one page up or to the top - scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * getVerticalIncrement()); - if (scrollOffset < verticalScrollOffset) { - setVerticalScrollOffset(scrollOffset, true); - } - } - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - int hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; -} -/** - * Updates the selection to extend to the current caret position. - */ -void doSelection(int direction) { - int redrawStart = -1; - int redrawEnd = -1; - - if (selectionAnchor == -1) { - selectionAnchor = selection.x; - } - if (direction == ST.COLUMN_PREVIOUS) { - if (caretOffset < selection.x) { - // grow selection - redrawEnd = selection.x; - redrawStart = selection.x = caretOffset; - // check if selection has reversed direction - if (selection.y != selectionAnchor) { - redrawEnd = selection.y; - selection.y = selectionAnchor; - } - } - else // test whether selection actually changed. Fixes 1G71EO1 - if (selectionAnchor == selection.x && caretOffset < selection.y) { - // caret moved towards selection anchor (left side of selection). - // shrink selection - redrawEnd = selection.y; - redrawStart = selection.y = caretOffset; - } - } - else { - if (caretOffset > selection.y) { - // grow selection - redrawStart = selection.y; - redrawEnd = selection.y = caretOffset; - // check if selection has reversed direction - if (selection.x != selectionAnchor) { - redrawStart = selection.x; - selection.x = selectionAnchor; - } - } - else // test whether selection actually changed. Fixes 1G71EO1 - if (selectionAnchor == selection.y && caretOffset > selection.x) { - // caret moved towards selection anchor (right side of selection). - // shrink selection - redrawStart = selection.x; - redrawEnd = selection.x = caretOffset; - } - } - if (redrawStart != -1 && redrawEnd != -1) { - internalRedrawRange(redrawStart, redrawEnd - redrawStart, true); - sendSelectionEvent(); - } -} -/** - * Moves the caret to the next character or to the beginning of the - * next line if the cursor is at the end of a line. - */ -void doSelectionCursorNext() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - advancing = true; - if (offsetInLine < content.getLine(caretLine).length()) { - caretOffset = getClusterNext(caretOffset, caretLine); - showCaret(); - } - else - if (caretLine < content.getLineCount() - 1 && !isSingleLine()) { - // only go to next line if not in single line mode. fixes 5673 - caretLine++; - caretOffset = content.getOffsetAtLine(caretLine); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - } -} -/** - * Moves the caret to the previous character or to the end of the previous - * line if the cursor is at the beginning of a line. - */ -void doSelectionCursorPrevious() { - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - advancing = false; - if (offsetInLine > 0) { - caretOffset = getClusterPrevious(caretOffset, caretLine); - showCaret(caretLine); - } - else - if (caretLine > 0) { - caretLine--; - lineOffset = content.getOffsetAtLine(caretLine); - caretOffset = lineOffset + content.getLine(caretLine).length(); - showCaret(); - } -} -/** - * Moves the caret one line down and to the same character offset relative - * to the beginning of the line. Moves the caret to the end of the new line - * if the new line is shorter than the character offset. - * Moves the caret to the end of the text if the caret already is on the - * last line. - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - */ -void doSelectionLineDown() { - int oldColumnX; - int caretLine; - int lineStartOffset; - - if (isSingleLine()) { - return; - } - caretLine = getCaretLine(); - lineStartOffset = content.getOffsetAtLine(caretLine); - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - if (caretLine == content.getLineCount() - 1) { - caretOffset = content.getCharCount(); - } - else { - caretLine = doLineDown(); - } - setMouseWordSelectionAnchor(); - // select first and then scroll to reduce flash when key - // repeat scrolls lots of lines - doSelection(ST.COLUMN_NEXT); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // save the original horizontal caret position - columnX = oldColumnX; -} -/** - * Moves the caret one line up and to the same character offset relative - * to the beginning of the line. Moves the caret to the end of the new line - * if the new line is shorter than the character offset. - * Moves the caret to the beginning of the document if it is already on the - * first line. - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - */ -void doSelectionLineUp() { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - if (caretLine == 0) { - caretOffset = 0; - } - else { - caretLine = doLineUp(); - } - setMouseWordSelectionAnchor(); - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - doSelection(ST.COLUMN_PREVIOUS); - // save the original horizontal caret position - columnX = oldColumnX; -} -/** - * Scrolls one page down so that the last line (truncated or whole) - * of the current page becomes the fully visible top line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the end - * of the text where a full page scroll is not possible. In this case - * the caret is moved after the last character. - *

                                - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - *

                                - */ -void doSelectionPageDown(int lines) { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - doPageDown(true, lines); - columnX = oldColumnX; -} -/** - * Scrolls one page up so that the first line (truncated or whole) - * of the current page becomes the fully visible last line. - * The caret is scrolled the same number of lines so that its location - * relative to the top line remains the same. The exception is the beginning - * of the text where a full page scroll is not possible. In this case the - * caret is moved in front of the first character. - *

                                - * Adjusts the selection according to the caret change. This can either add - * to or subtract from the old selection, depending on the previous selection - * direction. - *

                                - */ -void doSelectionPageUp(int lines) { - int oldColumnX; - int caretLine = getCaretLine(); - int lineStartOffset = content.getOffsetAtLine(caretLine); - - // reset columnX on selection - oldColumnX = columnX = getXAtOffset( - content.getLine(caretLine), caretLine, caretOffset - lineStartOffset); - doPageUp(true, lines); - columnX = oldColumnX; -} -/** - * Moves the caret to the end of the next word . - */ -void doSelectionWordNext() { - int newCaretOffset = getWordEnd(caretOffset); - // Force symmetrical movement for word next and previous. Fixes 14536 - advancing = false; - // don't change caret position if in single line mode and the cursor - // would be on a different line. fixes 5673 - if (!isSingleLine() || - content.getLineAtOffset(caretOffset) == content.getLineAtOffset(newCaretOffset)) { - caretOffset = newCaretOffset; - showCaret(); - } -} -/** - * Moves the caret to the start of the previous word. - */ -void doSelectionWordPrevious() { - int caretLine; - advancing = false; - caretOffset = getWordStart(caretOffset); - caretLine = content.getLineAtOffset(caretOffset); - // word previous always comes from bottom line. when - // wrapping lines, stay on bottom line when on line boundary - if (wordWrap && caretLine < content.getLineCount() - 1 && - caretOffset == content.getOffsetAtLine(caretLine + 1)) { - caretLine++; - } - showCaret(caretLine); -} -/** - * Moves the caret one character to the left. Do not go to the previous line. - * When in a bidi locale and at a R2L character the caret is moved to the - * beginning of the R2L segment (visually right) and then one character to the - * left (visually left because it's now in a L2R segment). - */ -void doVisualPrevious() { - caretOffset = getClusterPrevious(caretOffset, getCaretLine()); - showCaret(); -} -/** - * Moves the caret one character to the right. Do not go to the next line. - * When in a bidi locale and at a R2L character the caret is moved to the - * end of the R2L segment (visually left) and then one character to the - * right (visually right because it's now in a L2R segment). - */ -void doVisualNext() { - caretOffset = getClusterNext(caretOffset, getCaretLine()); - showCaret(); -} -/** - * Moves the caret to the end of the next word. - * If a selection exists, move the caret to the end of the selection - * and remove the selection. - */ -void doWordNext() { - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.y; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionWordNext(); - } -} -/** - * Moves the caret to the start of the previous word. - * If a selection exists, move the caret to the start of the selection - * and remove the selection. - */ -void doWordPrevious() { - if (selection.y - selection.x > 0) { - int caretLine; - - caretOffset = selection.x; - caretLine = getCaretLine(); - showCaret(caretLine); - } - else { - doSelectionWordPrevious(); - } -} -/** - * Draws the specified rectangle. - * Draw directly without invalidating the affected area when clearBackground is - * false. - *

                                - * - * @param x the x position - * @param y the y position - * @param width the width - * @param height the height - * @param clearBackground true=clear the background by invalidating the requested - * redraw area, false=draw the foreground directly without invalidating the - * redraw area. - */ -void draw(int x, int y, int width, int height, boolean clearBackground) { - if (clearBackground) { - redraw(x + leftMargin, y + topMargin, width, height, true); - } - else { - int startLine = (y + verticalScrollOffset) / lineHeight; - int endY = y + height; - int paintYFromTopLine = (startLine - topIndex) * lineHeight; - int topLineOffset = (topIndex * lineHeight - verticalScrollOffset); - int paintY = paintYFromTopLine + topLineOffset + topMargin; // adjust y position for pixel based scrolling - int lineCount = content.getLineCount(); - Color background = getBackground(); - Color foreground = getForeground(); - GC gc = getGC(); - - if (isSingleLine()) { - lineCount = 1; - } - for (int i = startLine; paintY < endY && i < lineCount; i++, paintY += lineHeight) { - String line = content.getLine(i); - renderer.drawLine(line, i, paintY, gc, background, foreground, clearBackground); - } - gc.dispose(); - } -} -/** - * Ends the autoscroll process. - */ -void endAutoScroll() { - autoScrollDirection = SWT.NULL; -} -public Color getBackground() { - checkWidget(); - if (background == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND); - } - return background; -} -/** - * Returns the baseline, in pixels. - * - * @return baseline the baseline - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 3.0 - */ -public int getBaseline() { - checkWidget(); - return renderer.getBaseline(); -} -/** - * Gets the BIDI coloring mode. When true the BIDI text display - * algorithm is applied to segments of text that are the same - * color. - * - * @return the current coloring mode - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - *

                                - * @deprecated use BidiSegmentListener instead. - *

                                - */ -public boolean getBidiColoring() { - checkWidget(); - return bidiColoring; -} -/** - * Returns the index of the last fully visible line. - *

                                - * - * @return index of the last fully visible line. - */ -int getBottomIndex() { - int lineCount = 1; - - if (lineHeight != 0) { - // calculate the number of lines that are fully visible - int partialTopLineHeight = topIndex * lineHeight - verticalScrollOffset; - lineCount = (getClientArea().height - partialTopLineHeight) / lineHeight; - } - return Math.min(content.getLineCount() - 1, topIndex + Math.max(0, lineCount - 1)); -} -/** - * Returns the caret position relative to the start of the text. - *

                                - * - * @return the caret position relative to the start of the text. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getCaretOffset() { - checkWidget(); - - return caretOffset; -} -/** - * Returns the caret offset at the given x location in the line. - * The caret offset is the offset of the character where the caret will be - * placed when a mouse click occurs. The caret offset will be the offset of - * the character after the clicked one if the mouse click occurs at the second - * half of a character. - * Doesn't properly handle ligatures and other context dependent characters - * unless the current locale is a bidi locale. - * Ligatures are handled properly as long as they don't occur at lineXOffset. - *

                                - * - * @param line text of the line to calculate the offset in - * @param lineOffset offset of the first character in the line. - * 0 based from the beginning of the document. - * @param lineXOffset x location in the line - * @return caret offset at the x location relative to the start of the line. - */ -int getOffsetAtX(String line, int lineOffset, int lineXOffset) { - int x = lineXOffset - leftMargin + horizontalScrollOffset; - TextLayout layout = renderer.getTextLayout(line, lineOffset); - int[] trailing = new int[1]; - int offsetInLine = layout.getOffset(x, 0, trailing); - advancing = false; - if (trailing[0] != 0) { - int lineLength = line.length(); - if (offsetInLine + trailing[0] >= lineLength) { - offsetInLine = lineLength; - advancing = true; - } else { - int level; - int offset = offsetInLine; - while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--; - if (offset == 0 && Character.isDigit(line.charAt(offset))) { - level = isMirrored() ? 1 : 0; - } else { - level = layout.getLevel(offset) & 0x1; - } - offsetInLine += trailing[0]; - int trailingLevel = layout.getLevel(offsetInLine) & 0x1; - advancing = (level ^ trailingLevel) != 0; - } - } - renderer.disposeTextLayout(layout); - return offsetInLine; -} -/** - * Returns the caret width. - *

                                - * - * @return the caret width, 0 if caret is null. - */ -int getCaretWidth() { - Caret caret = getCaret(); - if (caret == null) return 0; - return caret.getSize().x; -} -Object getClipboardContent(int clipboardType) { - TextTransfer plainTextTransfer = TextTransfer.getInstance(); - return clipboard.getContents(plainTextTransfer, clipboardType); -} -int getClusterNext(int offset, int lineIndex) { - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - offset -= lineOffset; - offset = layout.getNextOffset(offset, SWT.MOVEMENT_CLUSTER); - offset += lineOffset; - renderer.disposeTextLayout(layout); - return offset; -} -int getClusterPrevious(int offset, int lineIndex) { - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - offset -= lineOffset; - offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_CLUSTER); - offset += lineOffset; - renderer.disposeTextLayout(layout); - return offset; -} -/** - * Returns the content implementation that is used for text storage - * or null if no user defined content implementation has been set. - *

                                - * - * @return content implementation that is used for text storage or null - * if no user defined content implementation has been set. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public StyledTextContent getContent() { - checkWidget(); - - return logicalContent; -} -/** - * Returns whether the widget implements double click mouse behavior. - *

                                - * - * @return true if double clicking a word selects the word, false if double clicks - * have the same effect as regular mouse clicks - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public boolean getDoubleClickEnabled() { - checkWidget(); - return doubleClickEnabled; -} -/** - * Returns whether the widget content can be edited. - *

                                - * - * @return true if content can be edited, false otherwise - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public boolean getEditable() { - checkWidget(); - return editable; -} -public Color getForeground() { - checkWidget(); - if (foreground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND); - } - return foreground; -} -/** - * Return a GC to use for rendering and update the cached font style to - * represent the current style. - *

                                - * - * @return GC. - */ -GC getGC() { - return new GC(this); -} -/** - * Returns the horizontal scroll increment. - *

                                - * - * @return horizontal scroll increment. - */ -int getHorizontalIncrement() { - GC gc = getGC(); - int increment = gc.getFontMetrics().getAverageCharWidth(); - - gc.dispose(); - return increment; -} -/** - * Returns the horizontal scroll offset relative to the start of the line. - *

                                - * - * @return horizontal scroll offset relative to the start of the line, - * measured in character increments starting at 0, if > 0 the content is scrolled - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getHorizontalIndex() { - checkWidget(); - return horizontalScrollOffset / getHorizontalIncrement(); -} -/** - * Returns the horizontal scroll offset relative to the start of the line. - *

                                - * - * @return the horizontal scroll offset relative to the start of the line, - * measured in pixel starting at 0, if > 0 the content is scrolled. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getHorizontalPixel() { - checkWidget(); - return horizontalScrollOffset; -} -/** - * Returns the action assigned to the key. - * Returns SWT.NULL if there is no action associated with the key. - *

                                - * - * @param key a key code defined in SWT.java or a character. - * Optionally ORd with a state mask. Preferred state masks are one or more of - * SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform - * differences. However, there may be cases where using the specific state masks - * (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense. - * @return one of the predefined actions defined in ST.java or SWT.NULL - * if there is no action associated with the key. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getKeyBinding(int key) { - checkWidget(); - Integer action = (Integer) keyActionMap.get(new Integer(key)); - int intAction; - - if (action == null) { - intAction = SWT.NULL; - } - else { - intAction = action.intValue(); - } - return intAction; -} -/** - * Gets the number of characters. - *

                                - * - * @return number of characters in the widget - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getCharCount() { - checkWidget(); - return content.getCharCount(); -} -/** - * Returns the background color of the line at the given index. - * Returns null if a LineBackgroundListener has been set or if no background - * color has been specified for the line. Should not be called if a - * LineBackgroundListener has been set since the listener maintains the - * line background colors. - * - * @param index the index of the line - * @return the background color of the line at the given index. - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the index is invalid
                                • - *
                                - */ -public Color getLineBackground(int index) { - checkWidget(); - Color lineBackground = null; - - if (index < 0 || index > logicalContent.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - if (!userLineBackground) { - lineBackground = defaultLineStyler.getLineBackground(index); - } - return lineBackground; -} -/** - * Returns the line background data for the given line or null if - * there is none. - *

                                - * @param lineOffset offset of the line start relative to the start - * of the content. - * @param line line to get line background data for - * @return line background data for the given line. - */ -StyledTextEvent getLineBackgroundData(int lineOffset, String line) { - return sendLineEvent(LineGetBackground, lineOffset, line); -} -/** - * Gets the number of text lines. - *

                                - * - * @return the number of lines in the widget - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getLineCount() { - checkWidget(); - return getLineAtOffset(getCharCount()) + 1; -} -/** - * Returns the number of lines that can be completely displayed in the - * widget client area. - *

                                - * - * @return number of lines that can be completely displayed in the widget - * client area. - */ -int getLineCountWhole() { - int lineCount; - - if (lineHeight != 0) { - lineCount = getClientArea().height / lineHeight; - } - else { - lineCount = 1; - } - return lineCount; -} -/** - * Returns the line at the specified offset in the text - * where 0 <= offset <= getCharCount() so that getLineAtOffset(getCharCount()) - * returns the line of the insert location. - * - * @param offset offset relative to the start of the content. - * 0 <= offset <= getCharCount() - * @return line at the specified offset in the text - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - */ -public int getLineAtOffset(int offset) { - checkWidget(); - - if (offset < 0 || offset > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return logicalContent.getLineAtOffset(offset); -} -/** - * Returns the line delimiter used for entering new lines by key down - * or paste operation. - *

                                - * - * @return line delimiter used for entering new lines by key down - * or paste operation. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getLineDelimiter() { - checkWidget(); - return content.getLineDelimiter(); -} -/** - * Returns a StyledTextEvent that can be used to request data such - * as styles and background color for a line. - * The specified line may be a visual (wrapped) line if in word - * wrap mode. The returned object will always be for a logical - * (unwrapped) line. - *

                                - * - * @param lineOffset offset of the line. This may be the offset of - * a visual line if the widget is in word wrap mode. - * @param line line text. This may be the text of a visualline if - * the widget is in word wrap mode. - * @return StyledTextEvent that can be used to request line data - * for the given line. - */ -StyledTextEvent sendLineEvent(int eventType, int lineOffset, String line) { - StyledTextEvent event = null; - - if (isListening(eventType)) { - event = new StyledTextEvent(logicalContent); - if (wordWrap) { - // if word wrap is on, the line offset and text may be visual (wrapped) - int lineIndex = logicalContent.getLineAtOffset(lineOffset); - - event.detail = logicalContent.getOffsetAtLine(lineIndex); - event.text = logicalContent.getLine(lineIndex); - } - else { - event.detail = lineOffset; - event.text = line; - } - notifyListeners(eventType, event); - } - return event; -} -/** - * Returns the line height. - *

                                - * - * @return line height in pixel. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getLineHeight() { - checkWidget(); - return lineHeight; -} -/** - * Returns a LineCache implementation. Depending on whether or not - * word wrap is on this may be a line wrapping or line width - * calculating implementaiton. - *

                                - * - * @param content StyledTextContent to create the LineCache on. - * @return a LineCache implementation - */ -LineCache getLineCache(StyledTextContent content) { - LineCache lineCache; - - if (wordWrap) { - lineCache = new WordWrapCache(this, (WrappedContent) content); - } - else { - lineCache = new ContentWidthCache(this, content); - } - return lineCache; -} -/** - * Returns the line style data for the given line or null if there is - * none. If there is a LineStyleListener but it does not set any styles, - * the StyledTextEvent.styles field will be initialized to an empty - * array. - *

                                - * - * @param lineOffset offset of the line start relative to the start of - * the content. - * @param line line to get line styles for - * @return line style data for the given line. Styles may start before - * line start and end after line end - */ -StyledTextEvent getLineStyleData(int lineOffset, String line) { - return sendLineEvent(LineGetStyle, lineOffset, line); -} -/** - * Returns the x, y location of the upper left corner of the character - * bounding box at the specified offset in the text. The point is - * relative to the upper left corner of the widget client area. - *

                                - * - * @param offset offset relative to the start of the content. - * 0 <= offset <= getCharCount() - * @return x, y location of the upper left corner of the character - * bounding box at the specified offset in the text. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - */ -public Point getLocationAtOffset(int offset) { - checkWidget(); - if (offset < 0 || offset > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - String lineContent = content.getLine(line); - int x = getXAtOffset(lineContent, line, offset - lineOffset); - int y = line * lineHeight - verticalScrollOffset; - - return new Point(x, y); -} -/** - * Returns the character offset of the first character of the given line. - *

                                - * - * @param lineIndex index of the line, 0 based relative to the first - * line in the content. 0 <= lineIndex < getLineCount(), except - * lineIndex may always be 0 - * @return offset offset of the first character of the line, relative to - * the beginning of the document. The first character of the document is - * at offset 0. - * When there are not any lines, getOffsetAtLine(0) is a valid call that - * answers 0. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())
                                • - *
                                - * @since 2.0 - */ -public int getOffsetAtLine(int lineIndex) { - checkWidget(); - - if (lineIndex < 0 || - (lineIndex > 0 && lineIndex >= logicalContent.getLineCount())) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return logicalContent.getOffsetAtLine(lineIndex); -} -/** - * Returns the offset of the character at the given location relative - * to the first character in the document. - * The return value reflects the character offset that the caret will - * be placed at if a mouse click occurred at the specified location. - * If the x coordinate of the location is beyond the center of a character - * the returned offset will be behind the character. - *

                                - * - * @param point the origin of character bounding box relative to - * the origin of the widget client area. - * @return offset of the character at the given location relative - * to the first character in the document. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when point is null
                                • - *
                                • ERROR_INVALID_ARGUMENT when there is no character at the specified location
                                • - *
                                - */ -public int getOffsetAtLocation(Point point) { - checkWidget(); - TextLayout layout; - int line; - int lineOffset; - int offsetInLine; - String lineText; - - if (point == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - // is y above first line or is x before first column? - if (point.y + verticalScrollOffset < 0 || point.x + horizontalScrollOffset < 0) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - line = (getTopPixel() + point.y) / lineHeight; - // does the referenced line exist? - if (line >= content.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - lineText = content.getLine(line); - lineOffset = content.getOffsetAtLine(line); - - int x = point.x - leftMargin + horizontalScrollOffset; - layout = renderer.getTextLayout(lineText, lineOffset); - Rectangle rect = layout.getLineBounds(0); - if (x > rect.x + rect.width) { - renderer.disposeTextLayout(layout); - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - int[] trailing = new int[1]; - offsetInLine = layout.getOffset(x, 0, trailing); - if (offsetInLine != lineText.length() - 1) { - offsetInLine = Math.min(lineText.length(), offsetInLine + trailing[0]); - } - renderer.disposeTextLayout(layout); - return lineOffset + offsetInLine; -} -/** - * Returns the offset at the specified x location in the specified line. - *

                                - * - * @param x x location of the mouse location - * @param line line the mouse location is in - * @return the offset at the specified x location in the specified line, - * relative to the beginning of the document - */ -int getOffsetAtMouseLocation(int x, int line) { - String lineText = content.getLine(line); - int lineOffset = content.getOffsetAtLine(line); - return getOffsetAtX(lineText, lineOffset, x) + lineOffset; -} -/** - * Return the orientation of the receiver. - * - * @return the orientation style - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 2.1.2 - */ -public int getOrientation () { - checkWidget(); - return isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; -} -/** - * Returns the index of the last partially visible line. - * - * @return index of the last partially visible line. - */ -int getPartialBottomIndex() { - int partialLineCount = Compatibility.ceil(getClientArea().height, lineHeight); - return Math.min(content.getLineCount(), topIndex + partialLineCount) - 1; -} -/** - * Returns the content in the specified range using the platform line - * delimiter to separate lines. - *

                                - * - * @param writer the TextWriter to write line text into - * @return the content in the specified range using the platform line - * delimiter to separate lines as written by the specified TextWriter. - */ -String getPlatformDelimitedText(TextWriter writer) { - int end = writer.getStart() + writer.getCharCount(); - int startLine = logicalContent.getLineAtOffset(writer.getStart()); - int endLine = logicalContent.getLineAtOffset(end); - String endLineText = logicalContent.getLine(endLine); - int endLineOffset = logicalContent.getOffsetAtLine(endLine); - - for (int i = startLine; i <= endLine; i++) { - writer.writeLine(logicalContent.getLine(i), logicalContent.getOffsetAtLine(i)); - if (i < endLine) { - writer.writeLineDelimiter(PlatformLineDelimiter); - } - } - if (end > endLineOffset + endLineText.length()) { - writer.writeLineDelimiter(PlatformLineDelimiter); - } - writer.close(); - return writer.toString(); -} -/** - * Returns the selection. - *

                                - * Text selections are specified in terms of caret positions. In a text - * widget that contains N characters, there are N+1 caret positions, - * ranging from 0..N - *

                                - * - * @return start and end of the selection, x is the offset of the first - * selected character, y is the offset after the last selected character. - * The selection values returned are visual (i.e., x will always always be - * <= y). To determine if a selection is right-to-left (RtoL) vs. left-to-right - * (LtoR), compare the caretOffset to the start and end of the selection - * (e.g., caretOffset == start of selection implies that the selection is RtoL). - * @see #getSelectionRange - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public Point getSelection() { - checkWidget(); - return new Point(selection.x, selection.y); -} -/** - * Returns the selection. - *

                                - * - * @return start and length of the selection, x is the offset of the - * first selected character, relative to the first character of the - * widget content. y is the length of the selection. - * The selection values returned are visual (i.e., length will always always be - * positive). To determine if a selection is right-to-left (RtoL) vs. left-to-right - * (LtoR), compare the caretOffset to the start and end of the selection - * (e.g., caretOffset == start of selection implies that the selection is RtoL). - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public Point getSelectionRange() { - checkWidget(); - return new Point(selection.x, selection.y - selection.x); -} -/** - * Returns the receiver's selection background color. - * - * @return the selection background color - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public Color getSelectionBackground() { - checkWidget(); - if (selectionBackground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION); - } - return selectionBackground; -} -/** - * Gets the number of selected characters. - *

                                - * - * @return the number of selected characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getSelectionCount() { - checkWidget(); - return getSelectionRange().y; -} -/** - * Returns the receiver's selection foreground color. - * - * @return the selection foreground color - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public Color getSelectionForeground() { - checkWidget(); - if (selectionForeground == null) { - return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT); - } - return selectionForeground; -} -/** - * Returns the selected text. - *

                                - * - * @return selected text, or an empty String if there is no selection. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getSelectionText() { - checkWidget(); - return content.getTextRange(selection.x, selection.y - selection.x); -} - -public int getStyle() { - int style = super.getStyle(); - style &= ~(SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT | SWT.MIRRORED); - if (isMirrored()) { - style |= SWT.RIGHT_TO_LEFT | SWT.MIRRORED; - } else { - style |= SWT.LEFT_TO_RIGHT; - } - return style; -} - -/** - * Returns the text segments that should be treated as if they - * had a different direction than the surrounding text. - *

                                - * - * @param lineOffset offset of the first character in the line. - * 0 based from the beginning of the document. - * @param line text of the line to specify bidi segments for - * @return text segments that should be treated as if they had a - * different direction than the surrounding text. Only the start - * index of a segment is specified, relative to the start of the - * line. Always starts with 0 and ends with the line length. - * @exception IllegalArgumentException

                                  - *
                                • ERROR_INVALID_ARGUMENT - if the segment indices returned - * by the listener do not start with 0, are not in ascending order, - * exceed the line length or have duplicates
                                • - *
                                - */ -int [] getBidiSegments(int lineOffset, String line) { - if (!isListening(LineGetSegments)) { - return getBidiSegmentsCompatibility(line, lineOffset); - } - StyledTextEvent event = sendLineEvent(LineGetSegments, lineOffset, line); - int lineLength = line.length(); - int[] segments; - if (event == null || event.segments == null || event.segments.length == 0) { - segments = new int[] {0, lineLength}; - } - else { - int segmentCount = event.segments.length; - - // test segment index consistency - if (event.segments[0] != 0) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - for (int i = 1; i < segmentCount; i++) { - if (event.segments[i] <= event.segments[i - 1] || event.segments[i] > lineLength) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - } - // ensure that last segment index is line end offset - if (event.segments[segmentCount - 1] != lineLength) { - segments = new int[segmentCount + 1]; - System.arraycopy(event.segments, 0, segments, 0, segmentCount); - segments[segmentCount] = lineLength; - } - else { - segments = event.segments; - } - } - return segments; -} -/** - * @see #getBidiSegments - * Supports deprecated setBidiColoring API. Remove when API is removed. - */ -int [] getBidiSegmentsCompatibility(String line, int lineOffset) { - StyledTextEvent event; - StyleRange [] styles = new StyleRange [0]; - int lineLength = line.length(); - if (!bidiColoring) { - return new int[] {0, lineLength}; - } - event = renderer.getLineStyleData(lineOffset, line); - if (event != null) { - styles = event.styles; - } - if (styles.length == 0) { - return new int[] {0, lineLength}; - } - int k=0, count = 1; - while (k < styles.length && styles[k].start == 0 && styles[k].length == lineLength) { - k++; - } - int[] offsets = new int[(styles.length - k) * 2 + 2]; - for (int i = k; i < styles.length; i++) { - StyleRange style = styles[i]; - int styleLineStart = Math.max(style.start - lineOffset, 0); - int styleLineEnd = Math.max(style.start + style.length - lineOffset, styleLineStart); - styleLineEnd = Math.min (styleLineEnd, line.length ()); - if (i > 0 && count > 1 && - ((styleLineStart >= offsets[count-2] && styleLineStart <= offsets[count-1]) || - (styleLineEnd >= offsets[count-2] && styleLineEnd <= offsets[count-1])) && - style.similarTo(styles[i-1])) { - offsets[count-2] = Math.min(offsets[count-2], styleLineStart); - offsets[count-1] = Math.max(offsets[count-1], styleLineEnd); - } else { - if (styleLineStart > offsets[count - 1]) { - offsets[count] = styleLineStart; - count++; - } - offsets[count] = styleLineEnd; - count++; - } - } - // add offset for last non-colored segment in line, if any - if (lineLength > offsets[count-1]) { - offsets [count] = lineLength; - count++; - } - if (count == offsets.length) { - return offsets; - } - int [] result = new int [count]; - System.arraycopy (offsets, 0, result, 0, count); - return result; -} -/** - * Returns the style range at the given offset. - * Returns null if a LineStyleListener has been set or if a style is not set - * for the offset. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param offset the offset to return the style for. - * 0 <= offset < getCharCount() must be true. - * @return a StyleRange with start == offset and length == 1, indicating - * the style at the given offset. null if a LineStyleListener has been set - * or if a style is not set for the given offset. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the offset is invalid
                                • - *
                                - */ -public StyleRange getStyleRangeAtOffset(int offset) { - checkWidget(); - if (offset < 0 || offset >= getCharCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - if (!userLineStyle) { - return defaultLineStyler.getStyleRangeAtOffset(offset); - } - return null; -} -/** - * Returns the styles. - * Returns an empty array if a LineStyleListener has been set. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @return the styles or an empty array if a LineStyleListener has been set. - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public StyleRange [] getStyleRanges() { - checkWidget(); - StyleRange styles[]; - - if (!userLineStyle) { - styles = defaultLineStyler.getStyleRanges(); - } - else { - styles = new StyleRange[0]; - } - return styles; -} -/** - * Returns the styles for the given text range. - * Returns an empty array if a LineStyleListener has been set. - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - * - * @param start the start offset of the style ranges to return - * @param length the number of style ranges to return - * - * @return the styles or an empty array if a LineStyleListener has - * been set. The returned styles will reflect the given range. The first - * returned StyleRange will have a starting offset >= start - * and the last returned StyleRange will have an ending - * offset <= start + length - 1 - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - * - * @since 3.0 - */ -public StyleRange [] getStyleRanges(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - StyleRange styles[]; - - if (!userLineStyle) { - styles = defaultLineStyler.getStyleRangesFor(start, length); - if (styles == null) return new StyleRange[0]; - // adjust the first and last style to reflect the specified - // range, clone these styles since the returned styles are the - // styles cached by the widget - if (styles.length == 1) { - StyleRange style = styles[0]; - if (style.start < start) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = newStyle.length - (start - newStyle.start); - newStyle.start = start; - styles[0] = newStyle; - } - if (style.start + style.length > (start + length)) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = start + length - newStyle.start; - styles[0] = newStyle; - } - } else if (styles.length > 1) { - StyleRange style = styles[0]; - if (style.start < start) { - StyleRange newStyle = (StyleRange)styles[0].clone(); - newStyle.length = newStyle.length - (start - newStyle.start); - newStyle.start = start; - styles[0] = newStyle; - } - style = styles[styles.length - 1]; - if (style.start + style.length > (start + length)) { - StyleRange newStyle = (StyleRange)styles[styles.length - 1].clone(); - newStyle.length = start + length - newStyle.start; - styles[styles.length - 1] = newStyle; - } - } - } - else { - styles = new StyleRange[0]; - } - return styles; -} -/** - * Returns the tab width measured in characters. - * - * @return tab width measured in characters - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTabs() { - checkWidget(); - return tabLength; -} -/** - * Returns a copy of the widget content. - *

                                - * - * @return copy of the widget content - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public String getText() { - checkWidget(); - return content.getTextRange(0, getCharCount()); -} -/** - * Returns the widget content between the two offsets. - *

                                - * - * @param start offset of the first character in the returned String - * @param end offset of the last character in the returned String - * @return widget content starting at start and ending at end - * @see #getTextRange(int,int) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - */ -public String getText(int start, int end) { - checkWidget(); - int contentLength = getCharCount(); - - if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return content.getTextRange(start, end - start + 1); -} -/** - * Returns the smallest bounding rectangle that includes the characters between two offsets. - *

                                - * - * @param start offset of the first character included in the bounding box - * @param end offset of the last character included in the bounding box - * @return bounding box of the text between start and end - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - * @since 3.1 - */ -public Rectangle getTextBounds(int start, int end) { - checkWidget(); - int contentLength = getCharCount(); - if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int lineStart = content.getLineAtOffset(start); - int lineEnd = content.getLineAtOffset(end); - Rectangle rect; - int y = lineStart * lineHeight; - int height = (lineEnd + 1) * lineHeight - y; - int left = 0x7fffffff, right = 0; - for (int i = lineStart; i <= lineEnd; i++) { - int lineOffset = content.getOffsetAtLine(i); - String line = content.getLine(i); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - if (i == lineStart && i == lineEnd) { - rect = layout.getBounds(start - lineOffset, end - lineOffset); - } else if (i == lineStart) { - rect = layout.getBounds(start - lineOffset, line.length()); - } else if (i == lineEnd) { - rect = layout.getBounds(0, end - lineOffset); - } else { - rect = layout.getLineBounds(0); - } - left = Math.min (left, rect.x); - right = Math.max (right, rect.x + rect.width); - renderer.disposeTextLayout(layout); - } - rect = new Rectangle (left, y, right-left, height); - rect.x += leftMargin - horizontalScrollOffset; - rect.y -= verticalScrollOffset; - return rect; -} -/** - * Returns the widget content starting at start for length characters. - *

                                - * - * @param start offset of the first character in the returned String - * @param length number of characters to return - * @return widget content starting at start and extending length characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or length are outside the widget content
                                • - *
                                - */ -public String getTextRange(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - return content.getTextRange(start, length); -} -/** - * Returns the maximum number of characters that the receiver is capable of holding. - * - * @return the text limit - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTextLimit() { - checkWidget(); - - return textLimit; -} -/** - * Gets the top index. The top index is the index of the fully visible line that - * is currently at the top of the widget or the topmost partially visible line if - * no line is fully visible. - * The top index changes when the widget is scrolled. Indexing is zero based. - *

                                - * - * @return the index of the top line - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTopIndex() { - checkWidget(); - int logicalTopIndex = topIndex; - - if (wordWrap) { - int visualLineOffset = content.getOffsetAtLine(topIndex); - logicalTopIndex = logicalContent.getLineAtOffset(visualLineOffset); - } - return logicalTopIndex; -} -/** - * Gets the top pixel. The top pixel is the pixel position of the line that is - * currently at the top of the widget.The text widget can be scrolled by pixels - * by dragging the scroll thumb so that a partial line may be displayed at the top - * the widget. The top pixel changes when the widget is scrolled. The top pixel - * does not include the widget trimming. - *

                                - * - * @return pixel position of the top line - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public int getTopPixel() { - checkWidget(); - return verticalScrollOffset; -} -/** - * Returns the vertical scroll increment. - *

                                - * - * @return vertical scroll increment. - */ -int getVerticalIncrement() { - return lineHeight; -} -int getCaretDirection() { - if (!isBidiCaret()) return SWT.DEFAULT; - if (!updateCaretDirection && caretDirection != SWT.NULL) return caretDirection; - updateCaretDirection = false; - int caretLine = getCaretLine(); - int lineOffset = content.getOffsetAtLine(caretLine); - String line = content.getLine(caretLine); - int offset = caretOffset - lineOffset; - int lineLength = line.length(); - if (lineLength == 0) return isMirrored() ? SWT.RIGHT : SWT.LEFT; - if (advancing && offset > 0) offset--; - if (offset == lineLength && offset > 0) offset--; - while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--; - if (offset == 0 && Character.isDigit(line.charAt(offset))) { - return isMirrored() ? SWT.RIGHT : SWT.LEFT; - } - TextLayout layout = renderer.getTextLayout(line, lineOffset); - int level = layout.getLevel(offset); - renderer.disposeTextLayout(layout); - return ((level & 1) != 0) ? SWT.RIGHT : SWT.LEFT; -} -/** - * Returns the index of the line the caret is on. - * When in word wrap mode and at the end of one wrapped line/ - * beginning of the continuing wrapped line the caret offset - * is not sufficient to determine the caret line. - * - * @return the index of the line the caret is on. - */ -int getCaretLine() { - int caretLine = content.getLineAtOffset(caretOffset); - int leftColumnX = leftMargin; - if (wordWrap && columnX <= leftColumnX && - caretLine < content.getLineCount() - 1 && - caretOffset == content.getOffsetAtLine(caretLine + 1)) { - caretLine++; - } - return caretLine; -} -/** - * Returns the offset of the character after the word at the specified - * offset. - *

                                - * There are two classes of words formed by a sequence of characters: - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Space characters ' ' (ASCII 20) are special as they are treated as - * part of the word leading up to the space character. Line breaks are - * treated as one word. - *

                                - */ -int getWordEnd(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - int lineLength = lineText.length(); - - if (offset >= getCharCount()) { - return offset; - } - if (offset == lineOffset + lineLength) { - line++; - offset = logicalContent.getOffsetAtLine(line); - } - else { - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - offset -= lineOffset; - offset = layout.getNextOffset(offset, SWT.MOVEMENT_WORD); - offset += lineOffset; - renderer.disposeTextLayout(layout); - } - return offset; -} -/** - * Returns the offset of the character after the word at the specified - * offset. - *

                                - * There are two classes of words formed by a sequence of characters: - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Spaces are ignored and do not represent a word. Line breaks are treated - * as one word. - *

                                - */ -int getWordEndNoSpaces(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - int lineLength = lineText.length(); - - if (offset >= getCharCount()) { - return offset; - } - if (offset == lineOffset + lineLength) { - line++; - offset = logicalContent.getOffsetAtLine(line); - } - else { - offset -= lineOffset; - char ch = lineText.charAt(offset); - boolean letterOrDigit = Compatibility.isLetterOrDigit(ch); - - while (offset < lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) { - offset++; - ch = lineText.charAt(offset); - } - if (offset == lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) { - offset++; - } - offset += lineOffset; - } - return offset; -} -/** - * Returns the start offset of the word at the specified offset. - * There are two classes of words formed by a sequence of characters: - *

                                - *

                                  - *
                                • from 0-9 and A-z (ASCII 48-57 and 65-122) - *
                                • every other character except line breaks - *
                                - *

                                - *

                                - * Space characters ' ' (ASCII 20) are special as they are treated as - * part of the word leading up to the space character. Line breaks are treated - * as one word. - *

                                - */ -int getWordStart(int offset) { - int line = logicalContent.getLineAtOffset(offset); - int lineOffset = logicalContent.getOffsetAtLine(line); - String lineText = logicalContent.getLine(line); - - if (offset <= 0) { - return offset; - } - if (offset == lineOffset) { - line--; - lineText = logicalContent.getLine(line); - offset = logicalContent.getOffsetAtLine(line) + lineText.length(); - } - else { - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - offset -= lineOffset; - offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_WORD); - offset += lineOffset; - renderer.disposeTextLayout(layout); - } - return offset; -} -/** - * Returns whether the widget wraps lines. - *

                                - * - * @return true if widget wraps lines, false otherwise - * @since 2.0 - */ -public boolean getWordWrap() { - checkWidget(); - return wordWrap; -} -/** - * Returns the x location of the character at the give offset in the line. - * NOTE: Does not return correct values for true italic fonts (vs. slanted fonts). - *

                                - * - * @return x location of the character at the given offset in the line. - */ -int getXAtOffset(String line, int lineIndex, int offsetInLine) { - int x = 0; - int lineLength = line.length(); - if (lineIndex < content.getLineCount() - 1) { - int endLineOffset = content.getOffsetAtLine(lineIndex + 1) - 1; - if (lineLength < offsetInLine && offsetInLine <= endLineOffset) { - offsetInLine = lineLength; - } - } - if (lineLength != 0 && offsetInLine <= lineLength) { - int lineOffset = content.getOffsetAtLine(lineIndex); - TextLayout layout = renderer.getTextLayout(line, lineOffset); - if (!advancing || offsetInLine == 0) { - x = layout.getLocation(offsetInLine, false).x; - } else { - x = layout.getLocation(offsetInLine - 1, true).x; - } - renderer.disposeTextLayout(layout); - } - return x + leftMargin - horizontalScrollOffset; -} -/** - * Inserts a string. The old selection is replaced with the new text. - *

                                - * - * @param string the string - * @see #replaceTextRange(int,int,String) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void insert(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - Point sel = getSelectionRange(); - replaceTextRange(sel.x, sel.y, string); -} -/** - * Creates content change listeners and set the default content model. - */ -void installDefaultContent() { - textChangeListener = new TextChangeListener() { - public void textChanging(TextChangingEvent event) { - handleTextChanging(event); - } - public void textChanged(TextChangedEvent event) { - handleTextChanged(event); - } - public void textSet(TextChangedEvent event) { - handleTextSet(event); - } - }; - logicalContent = content = new DefaultContent(); - content.addTextChangeListener(textChangeListener); -} -/** - * Creates a default line style listener. - * Used to store line background colors and styles. - * Removed when the user sets a LineStyleListener. - *

                                - * - * @see #addLineStyleListener - */ -void installDefaultLineStyler() { - defaultLineStyler = new DefaultLineStyler(logicalContent); - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - if (!userLineStyle) { - addListener(LineGetStyle, typedListener); - } - if (!userLineBackground) { - addListener(LineGetBackground, typedListener); - } -} -/** - * Adds event listeners - */ -void installListeners() { - ScrollBar verticalBar = getVerticalBar(); - ScrollBar horizontalBar = getHorizontalBar(); - - listener = new Listener() { - public void handleEvent(Event event) { - switch (event.type) { - case SWT.Dispose: handleDispose(event); break; - case SWT.KeyDown: handleKeyDown(event); break; - case SWT.KeyUp: handleKeyUp(event); break; - case SWT.MouseDown: handleMouseDown(event); break; - case SWT.MouseUp: handleMouseUp(event); break; - case SWT.MouseDoubleClick: handleMouseDoubleClick(event); break; - case SWT.MouseMove: handleMouseMove(event); break; - case SWT.Paint: handlePaint(event); break; - case SWT.Resize: handleResize(event); break; - case SWT.Traverse: handleTraverse(event); break; - } - } - }; - addListener(SWT.Dispose, listener); - addListener(SWT.KeyDown, listener); - addListener(SWT.KeyUp, listener); - addListener(SWT.MouseDown, listener); - addListener(SWT.MouseUp, listener); - addListener(SWT.MouseDoubleClick, listener); - addListener(SWT.MouseMove, listener); - addListener(SWT.Paint, listener); - addListener(SWT.Resize, listener); - addListener(SWT.Traverse, listener); - if (verticalBar != null) { - verticalBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - handleVerticalScroll(event); - } - }); - } - if (horizontalBar != null) { - horizontalBar.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - handleHorizontalScroll(event); - } - }); - } -} -StyledTextContent internalGetContent() { - return content; -} -int internalGetHorizontalPixel() { - return horizontalScrollOffset; -} -Point internalGetSelection() { - return selection; -} -boolean internalGetWordWrap() { - return wordWrap; -} -/** - * Used by WordWrapCache to bypass StyledText.redraw which does - * an unwanted cache reset. - */ -void internalRedraw() { - super.redraw(); -} -/** - * Redraws the specified text range. - *

                                - * - * @param start offset of the first character to redraw - * @param length number of characters to redraw - * @param clearBackground true if the background should be cleared as - * part of the redraw operation. If true, the entire redraw range will - * be cleared before anything is redrawn. If the redraw range includes - * the last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * The redraw operation will be faster and smoother if clearBackground is - * set to false. Whether or not the flag can be set to false depends on - * the type of change that has taken place. If font styles or background - * colors for the redraw range have changed, clearBackground should be - * set to true. If only foreground colors have changed for the redraw - * range, clearBackground can be set to false. - */ -void internalRedrawRange(int start, int length, boolean clearBackground) { - int end = start + length; - int firstLine = content.getLineAtOffset(start); - int lastLine = content.getLineAtOffset(end); - int offsetInFirstLine; - int partialBottomIndex = getPartialBottomIndex(); - int partialTopIndex = verticalScrollOffset / lineHeight; - // do nothing if redraw range is completely invisible - if (firstLine > partialBottomIndex || lastLine < partialTopIndex) { - return; - } - // only redraw visible lines - if (partialTopIndex > firstLine) { - firstLine = partialTopIndex; - offsetInFirstLine = 0; - } - else { - offsetInFirstLine = start - content.getOffsetAtLine(firstLine); - } - if (partialBottomIndex + 1 < lastLine) { - lastLine = partialBottomIndex + 1; // + 1 to redraw whole bottom line, including line break - end = content.getOffsetAtLine(lastLine); - } - redrawLines(firstLine, offsetInFirstLine, lastLine, end, clearBackground); - - // redraw entire center lines if redraw range includes more than two lines - if (lastLine - firstLine > 1) { - Rectangle clientArea = getClientArea(); - int redrawStopY = lastLine * lineHeight - verticalScrollOffset; - int redrawY = (firstLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, clientArea.width, redrawStopY - redrawY, clearBackground); - } -} -/** - * Returns the widget text with style information encoded using RTF format - * specification version 1.5. - * - * @return the widget text with style information encoded using RTF format - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -String getRtf(){ - checkWidget(); - RTFWriter rtfWriter = new RTFWriter(0, getCharCount()); - return getPlatformDelimitedText(rtfWriter); -} -/** - * Frees resources. - */ -void handleDispose(Event event) { - removeListener(SWT.Dispose, listener); - notifyListeners(SWT.Dispose, event); - event.type = SWT.None; - - clipboard.dispose(); - ibeamCursor.dispose(); - if (renderer != null) { - renderer.dispose(); - renderer = null; - } - if (content != null) { - content.removeTextChangeListener(textChangeListener); - content = null; - } - if (defaultCaret != null) { - defaultCaret.dispose(); - defaultCaret = null; - } - if (leftCaretBitmap != null) { - leftCaretBitmap.dispose(); - leftCaretBitmap = null; - } - if (rightCaretBitmap != null) { - rightCaretBitmap.dispose(); - rightCaretBitmap = null; - } - if (defaultLineStyler != null) { - defaultLineStyler.release(); - defaultLineStyler = null; - } - if (isBidiCaret()) { - BidiUtil.removeLanguageListener(handle); - } - selectionBackground = null; - selectionForeground = null; - logicalContent = null; - textChangeListener = null; - lineCache = null; - ibeamCursor = null; - selection = null; - doubleClickSelection = null; - keyActionMap = null; - background = null; - foreground = null; - clipboard = null; -} -/** - * Scrolls the widget horizontally. - */ -void handleHorizontalScroll(Event event) { - int scrollPixel = getHorizontalBar().getSelection() - horizontalScrollOffset; - scrollHorizontal(scrollPixel); -} -/** - * If an action has been registered for the key stroke execute the action. - * Otherwise, if a character has been entered treat it as new content. - *

                                - * - * @param event keyboard event - */ -void handleKey(Event event) { - int action; - advancing = true; - if (event.keyCode != 0) { - // special key pressed (e.g., F1) - action = getKeyBinding(event.keyCode | event.stateMask); - } - else { - // character key pressed - action = getKeyBinding(event.character | event.stateMask); - if (action == SWT.NULL) { - // see if we have a control character - if ((event.stateMask & SWT.CTRL) != 0 && (event.character >= 0) && event.character <= 31) { - // get the character from the CTRL+char sequence, the control - // key subtracts 64 from the value of the key that it modifies - int c = event.character + 64; - action = getKeyBinding(c | event.stateMask); - } - } - } - if (action == SWT.NULL) { - boolean ignore = false; - - if (IS_CARBON) { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Do not - // ignore COMMAND+ALT combinations since that key sequence - // produces characters on the mac. - ignore = (event.stateMask ^ SWT.COMMAND) == 0 || - (event.stateMask ^ (SWT.COMMAND | SWT.SHIFT)) == 0; - } else if (IS_MOTIF) { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Do not - // ignore ALT combinations since this key sequence - // produces characters on motif. - ignore = (event.stateMask ^ SWT.CTRL) == 0 || - (event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; - } else { - // Ignore accelerator key combinations (we do not want to - // insert a character in the text in this instance). Don't - // ignore CTRL+ALT combinations since that is the Alt Gr - // key on some keyboards. See bug 20953. - ignore = (event.stateMask ^ SWT.ALT) == 0 || - (event.stateMask ^ SWT.CTRL) == 0 || - (event.stateMask ^ (SWT.ALT | SWT.SHIFT)) == 0 || - (event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0; - } - // -ignore anything below SPACE except for line delimiter keys and tab. - // -ignore DEL - if (!ignore && event.character > 31 && event.character != SWT.DEL || - event.character == SWT.CR || event.character == SWT.LF || - event.character == TAB) { - doContent(event.character); - } - } - else { - invokeAction(action); - } -} -/** - * If a VerifyKey listener exists, verify that the key that was entered - * should be processed. - *

                                - * - * @param event keyboard event - */ -void handleKeyDown(Event event) { - if (clipboardSelection == null) { - clipboardSelection = new Point(selection.x, selection.y); - } - - Event verifyEvent = new Event(); - verifyEvent.character = event.character; - verifyEvent.keyCode = event.keyCode; - verifyEvent.stateMask = event.stateMask; - verifyEvent.doit = true; - notifyListeners(VerifyKey, verifyEvent); - if (verifyEvent.doit) { - handleKey(event); - } -} -/** - * Update the Selection Clipboard. - *

                                - * - * @param event keyboard event - */ -void handleKeyUp(Event event) { - if (clipboardSelection != null) { - if (clipboardSelection.x != selection.x || clipboardSelection.y != selection.y) { - try { - if (selection.y - selection.x > 0) { - setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); - } - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } - } - clipboardSelection = null; -} -/** - * Updates the caret location and selection if mouse button 1 has been - * pressed. - */ -void handleMouseDoubleClick(Event event) { - if (event.button != 1 || !doubleClickEnabled) { - return; - } - event.y -= topMargin; - mouseDoubleClick = true; - caretOffset = getWordStart(caretOffset); - resetSelection(); - caretOffset = getWordEndNoSpaces(caretOffset); - showCaret(); - doMouseSelection(); - doubleClickSelection = new Point(selection.x, selection.y); -} -/** - * Updates the caret location and selection if mouse button 1 has been - * pressed. - */ -void handleMouseDown(Event event) { - mouseDown = true; - mouseDoubleClick = false; - if (event.button == 2) { - String text = (String)getClipboardContent(DND.SELECTION_CLIPBOARD); - if (text != null && text.length() > 0) { - // position cursor - int x = event.x; - int y = event.y - topMargin; - doMouseLocationChange(x, y, false); - // insert text - Event e = new Event(); - e.start = selection.x; - e.end = selection.y; - e.text = getModelDelimitedText(text); - sendKeyEvent(e); - } - } - if ((event.button != 1) || (IS_CARBON && (event.stateMask & SWT.MOD4) != 0)) { - return; - } - boolean select = (event.stateMask & SWT.MOD2) != 0; - event.y -= topMargin; - doMouseLocationChange(event.x, event.y, select); -} -/** - * Updates the caret location and selection if mouse button 1 is pressed - * during the mouse move. - */ -void handleMouseMove(Event event) { - if (!mouseDown) return; - if ((event.stateMask & SWT.BUTTON1) == 0) { - return; - } - event.y -= topMargin; - doMouseLocationChange(event.x, event.y, true); - update(); - doAutoScroll(event); -} -/** - * Autoscrolling ends when the mouse button is released. - */ -void handleMouseUp(Event event) { - mouseDown = false; - mouseDoubleClick = false; - event.y -= topMargin; - endAutoScroll(); - if (event.button == 1) { - try { - if (selection.y - selection.x > 0) { - setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); - } - } - catch (SWTError error) { - // Copy to clipboard failed. This happens when another application - // is accessing the clipboard while we copy. Ignore the error. - // Fixes 1GDQAVN - // Rethrow all other errors. Fixes bug 17578. - if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) { - throw error; - } - } - } -} -/** - * Renders the invalidated area specified in the paint event. - *

                                - * - * @param event paint event - */ -void handlePaint(Event event) { - // Check if there is work to do - if (event.height == 0) return; - int startLine = Math.max(0, (event.y - topMargin + verticalScrollOffset) / lineHeight); - int paintYFromTopLine = (startLine - topIndex) * lineHeight; - int topLineOffset = topIndex * lineHeight - verticalScrollOffset; - int startY = paintYFromTopLine + topLineOffset + topMargin; // adjust y position for pixel based scrolling and top margin - int renderHeight = event.y + event.height - startY; - performPaint(event.gc, startLine, startY, renderHeight); -} -/** - * Recalculates the scroll bars. Rewraps all lines when in word - * wrap mode. - *

                                - * - * @param event resize event - */ -void handleResize(Event event) { - int oldHeight = clientAreaHeight; - int oldWidth = clientAreaWidth; - - Rectangle clientArea = getClientArea(); - clientAreaHeight = clientArea.height; - clientAreaWidth = clientArea.width; - /* Redraw the old or new right/bottom margin if needed */ - if (oldWidth != clientAreaWidth) { - if (rightMargin > 0) { - int x = (oldWidth < clientAreaWidth ? oldWidth : clientAreaWidth)- rightMargin; - redraw(x, 0, rightMargin, oldHeight, false); - } - } - if (oldHeight != clientAreaHeight) { - if (bottomMargin > 0) { - int y = (oldHeight < clientAreaHeight ? oldHeight : clientAreaHeight)- bottomMargin; - redraw(0, y, oldWidth, bottomMargin, false); - } - } - if (wordWrap) { - if (oldWidth != clientAreaWidth) { - wordWrapResize(oldWidth); - } - } - else - if (clientAreaHeight > oldHeight) { - int lineCount = content.getLineCount(); - int oldBottomIndex = topIndex + oldHeight / lineHeight; - int newItemCount = Compatibility.ceil(clientAreaHeight - oldHeight, lineHeight); - - oldBottomIndex = Math.min(oldBottomIndex, lineCount); - newItemCount = Math.min(newItemCount, lineCount - oldBottomIndex); - lineCache.calculate(oldBottomIndex, newItemCount); - } - setScrollBars(); - claimBottomFreeSpace(); - claimRightFreeSpace(); - if (oldHeight != clientAreaHeight) { - calculateTopIndex(); - } -} -/** - * Updates the caret position and selection and the scroll bars to reflect - * the content change. - *

                                - */ -void handleTextChanged(TextChangedEvent event) { - lineCache.textChanged(lastTextChangeStart, - lastTextChangeNewLineCount, - lastTextChangeReplaceLineCount, - lastTextChangeNewCharCount, - lastTextChangeReplaceCharCount); - setScrollBars(); - // update selection/caret location after styles have been changed. - // otherwise any text measuring could be incorrect - // - // also, this needs to be done after all scrolling. Otherwise, - // selection redraw would be flushed during scroll which is wrong. - // in some cases new text would be drawn in scroll source area even - // though the intent is to scroll it. - // fixes 1GB93QT - updateSelection( - lastTextChangeStart, - lastTextChangeReplaceCharCount, - lastTextChangeNewCharCount); - - if (lastTextChangeReplaceLineCount > 0) { - // Only check for unused space when lines are deleted. - // Fixes 1GFL4LY - // Scroll up so that empty lines below last text line are used. - // Fixes 1GEYJM0 - claimBottomFreeSpace(); - } - if (lastTextChangeReplaceCharCount > 0) { - // fixes bug 8273 - claimRightFreeSpace(); - } - // do direct drawing if the text change is confined to a single line. - // optimization and fixes bug 13999. see also handleTextChanging. - if (lastTextChangeNewLineCount == 0 && lastTextChangeReplaceLineCount == 0) { - int startLine = content.getLineAtOffset(lastTextChangeStart); - int startY = startLine * lineHeight - verticalScrollOffset + topMargin; - - if (DOUBLE_BUFFER) { - GC gc = getGC(); - Caret caret = getCaret(); - boolean caretVisible = false; - - if (caret != null) { - caretVisible = caret.getVisible(); - caret.setVisible(false); - } - performPaint(gc, startLine, startY, lineHeight); - if (caret != null) { - caret.setVisible(caretVisible); - } - gc.dispose(); - } else { - redraw(0, startY, getClientArea().width, lineHeight, false); - update(); - } - } -} -/** - * Updates the screen to reflect a pending content change. - *

                                - * - * @param event.start the start offset of the change - * @param event.newText text that is going to be inserted or empty String - * if no text will be inserted - * @param event.replaceCharCount length of text that is going to be replaced - * @param event.newCharCount length of text that is going to be inserted - * @param event.replaceLineCount number of lines that are going to be replaced - * @param event.newLineCount number of new lines that are going to be inserted - */ -void handleTextChanging(TextChangingEvent event) { - int firstLine; - int textChangeY; - boolean isMultiLineChange = event.replaceLineCount > 0 || event.newLineCount > 0; - - if (event.replaceCharCount < 0) { - event.start += event.replaceCharCount; - event.replaceCharCount *= -1; - } - lastTextChangeStart = event.start; - lastTextChangeNewLineCount = event.newLineCount; - lastTextChangeNewCharCount = event.newCharCount; - lastTextChangeReplaceLineCount = event.replaceLineCount; - lastTextChangeReplaceCharCount = event.replaceCharCount; - firstLine = content.getLineAtOffset(event.start); - textChangeY = firstLine * lineHeight - verticalScrollOffset + topMargin; - if (isMultiLineChange) { - redrawMultiLineChange(textChangeY, event.newLineCount, event.replaceLineCount); - } - // notify default line styler about text change - if (defaultLineStyler != null) { - defaultLineStyler.textChanging(event); - } - - // Update the caret offset if it is greater than the length of the content. - // This is necessary since style range API may be called between the - // handleTextChanging and handleTextChanged events and this API sets the - // caretOffset. - int newEndOfText = content.getCharCount() - event.replaceCharCount + event.newCharCount; - if (caretOffset > newEndOfText) caretOffset = newEndOfText; -} -/** - * Called when the widget content is set programatically, overwriting - * the old content. Resets the caret position, selection and scroll offsets. - * Recalculates the content width and scroll bars. Redraws the widget. - *

                                - * - * @param event text change event. - */ -void handleTextSet(TextChangedEvent event) { - reset(); -} -/** - * Called when a traversal key is pressed. - * Allow tab next traversal to occur when the widget is in single - * line mode or in multi line and non-editable mode . - * When in editable multi line mode we want to prevent the tab - * traversal and receive the tab key event instead. - *

                                - * - * @param event the event - */ -void handleTraverse(Event event) { - switch (event.detail) { - case SWT.TRAVERSE_ESCAPE: - case SWT.TRAVERSE_PAGE_NEXT: - case SWT.TRAVERSE_PAGE_PREVIOUS: - event.doit = true; - break; - case SWT.TRAVERSE_RETURN: - case SWT.TRAVERSE_TAB_NEXT: - case SWT.TRAVERSE_TAB_PREVIOUS: - if ((getStyle() & SWT.SINGLE) != 0) { - event.doit = true; - } else { - if (!editable || (event.stateMask & SWT.MODIFIER_MASK) != 0) { - event.doit = true; - } - } - break; - } -} -/** - * Scrolls the widget vertically. - */ -void handleVerticalScroll(Event event) { - setVerticalScrollOffset(getVerticalBar().getSelection(), false); -} -/** - * Add accessibility support for the widget. - */ -void initializeAccessible() { - final Accessible accessible = getAccessible(); - accessible.addAccessibleListener(new AccessibleAdapter() { - public void getHelp(AccessibleEvent e) { - e.result = getToolTipText(); - } - }); - accessible.addAccessibleTextListener(new AccessibleTextAdapter() { - public void getCaretOffset(AccessibleTextEvent e) { - e.offset = StyledText.this.getCaretOffset(); - } - public void getSelectionRange(AccessibleTextEvent e) { - Point selection = StyledText.this.getSelectionRange(); - e.offset = selection.x; - e.length = selection.y; - } - }); - accessible.addAccessibleControlListener(new AccessibleControlAdapter() { - public void getRole(AccessibleControlEvent e) { - e.detail = ACC.ROLE_TEXT; - } - public void getState(AccessibleControlEvent e) { - int state = 0; - if (isEnabled()) state |= ACC.STATE_FOCUSABLE; - if (isFocusControl()) state |= ACC.STATE_FOCUSED; - if (!isVisible()) state |= ACC.STATE_INVISIBLE; - if (!getEditable()) state |= ACC.STATE_READONLY; - e.detail = state; - } - public void getValue(AccessibleControlEvent e) { - e.result = StyledText.this.getText(); - } - }); - addListener(SWT.FocusIn, new Listener() { - public void handleEvent(Event event) { - accessible.setFocus(ACC.CHILDID_SELF); - } - }); -} -/** - * Initializes the fonts used to render font styles. - * Presently only regular and bold fonts are supported. - */ -void initializeRenderer() { - if (renderer != null) { - renderer.dispose(); - } - renderer = new DisplayRenderer(getDisplay(), getFont(), this, tabLength); - lineHeight = renderer.getLineHeight(); - if (wordWrap) { - content = new WrappedContent(renderer, logicalContent); - } -} -/** - * Executes the action. - *

                                - * - * @param action one of the actions defined in ST.java - */ -public void invokeAction(int action) { - int oldColumnX, oldHScrollOffset, hScrollChange; - int caretLine; - - checkWidget(); - updateCaretDirection = true; - switch (action) { - // Navigation - case ST.LINE_UP: - caretLine = doLineUp(); - oldColumnX = columnX; - oldHScrollOffset = horizontalScrollOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; - clearSelection(true); - break; - case ST.LINE_DOWN: - caretLine = doLineDown(); - oldColumnX = columnX; - oldHScrollOffset = horizontalScrollOffset; - // explicitly go to the calculated caret line. may be different - // from content.getLineAtOffset(caretOffset) when in word wrap mode - showCaret(caretLine); - // restore the original horizontal caret position - hScrollChange = oldHScrollOffset - horizontalScrollOffset; - columnX = oldColumnX + hScrollChange; - clearSelection(true); - break; - case ST.LINE_START: - doLineStart(); - clearSelection(true); - break; - case ST.LINE_END: - doLineEnd(); - clearSelection(true); - break; - case ST.COLUMN_PREVIOUS: - doCursorPrevious(); - clearSelection(true); - break; - case ST.COLUMN_NEXT: - doCursorNext(); - clearSelection(true); - break; - case ST.PAGE_UP: - doPageUp(false, getLineCountWhole()); - clearSelection(true); - break; - case ST.PAGE_DOWN: - doPageDown(false, getLineCountWhole()); - clearSelection(true); - break; - case ST.WORD_PREVIOUS: - doWordPrevious(); - clearSelection(true); - break; - case ST.WORD_NEXT: - doWordNext(); - clearSelection(true); - break; - case ST.TEXT_START: - doContentStart(); - clearSelection(true); - break; - case ST.TEXT_END: - doContentEnd(); - clearSelection(true); - break; - case ST.WINDOW_START: - doPageStart(); - clearSelection(true); - break; - case ST.WINDOW_END: - doPageEnd(); - clearSelection(true); - break; - // Selection - case ST.SELECT_LINE_UP: - doSelectionLineUp(); - break; - case ST.SELECT_ALL: - selectAll(); - break; - case ST.SELECT_LINE_DOWN: - doSelectionLineDown(); - break; - case ST.SELECT_LINE_START: - doLineStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_LINE_END: - doLineEnd(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_COLUMN_PREVIOUS: - doSelectionCursorPrevious(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_COLUMN_NEXT: - doSelectionCursorNext(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_PAGE_UP: - doSelectionPageUp(getLineCountWhole()); - break; - case ST.SELECT_PAGE_DOWN: - doSelectionPageDown(getLineCountWhole()); - break; - case ST.SELECT_WORD_PREVIOUS: - doSelectionWordPrevious(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_WORD_NEXT: - doSelectionWordNext(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_TEXT_START: - doContentStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_TEXT_END: - doContentEnd(); - doSelection(ST.COLUMN_NEXT); - break; - case ST.SELECT_WINDOW_START: - doPageStart(); - doSelection(ST.COLUMN_PREVIOUS); - break; - case ST.SELECT_WINDOW_END: - doPageEnd(); - doSelection(ST.COLUMN_NEXT); - break; - // Modification - case ST.CUT: - cut(); - break; - case ST.COPY: - copy(); - break; - case ST.PASTE: - paste(); - break; - case ST.DELETE_PREVIOUS: - doBackspace(); - break; - case ST.DELETE_NEXT: - doDelete(); - break; - case ST.DELETE_WORD_PREVIOUS: - doDeleteWordPrevious(); - break; - case ST.DELETE_WORD_NEXT: - doDeleteWordNext(); - break; - // Miscellaneous - case ST.TOGGLE_OVERWRITE: - overwrite = !overwrite; // toggle insert/overwrite mode - break; - } -} -/** - * Temporary until SWT provides this - */ -boolean isBidi() { - return IS_GTK || BidiUtil.isBidiPlatform() || isMirrored; -} -/** - * Returns whether the given offset is inside a multi byte line delimiter. - * Example: - * "Line1\r\n" isLineDelimiter(5) == false but isLineDelimiter(6) == true - * - * @return true if the given offset is inside a multi byte line delimiter. - * false if the given offset is before or after a line delimiter. - */ -boolean isLineDelimiter(int offset) { - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - int offsetInLine = offset - lineOffset; - // offsetInLine will be greater than line length if the line - // delimiter is longer than one character and the offset is set - // in between parts of the line delimiter. - return offsetInLine > content.getLine(line).length(); -} -/** - * Returns whether the widget is mirrored (right oriented/right to left - * writing order). - * - * @return isMirrored true=the widget is right oriented, false=the widget - * is left oriented - */ -boolean isMirrored() { - return isMirrored; -} -/** - * Returns whether or not the given lines are visible. - *

                                - * - * @return true if any of the lines is visible - * false if none of the lines is visible - */ -boolean isAreaVisible(int firstLine, int lastLine) { - int partialBottomIndex = getPartialBottomIndex(); - int partialTopIndex = verticalScrollOffset / lineHeight; - boolean notVisible = firstLine > partialBottomIndex || lastLine < partialTopIndex; - return !notVisible; -} -/** - * Returns whether the widget can have only one line. - *

                                - * - * @return true if widget can have only one line, false if widget can have - * multiple lines - */ -boolean isSingleLine() { - return (getStyle() & SWT.SINGLE) != 0; -} -/** - * Sends the specified verify event, replace/insert text as defined by - * the event and send a modify event. - *

                                - * - * @param event the text change event. - *

                                  - *
                                • event.start - the replace start offset
                                • - *
                                • event.end - the replace end offset
                                • - *
                                • event.text - the new text
                                • - *
                                - * @param updateCaret whether or not he caret should be set behind - * the new text - */ -void modifyContent(Event event, boolean updateCaret) { - event.doit = true; - notifyListeners(SWT.Verify, event); - if (event.doit) { - StyledTextEvent styledTextEvent = null; - int replacedLength = event.end - event.start; - if (isListening(ExtendedModify)) { - styledTextEvent = new StyledTextEvent(logicalContent); - styledTextEvent.start = event.start; - styledTextEvent.end = event.start + event.text.length(); - styledTextEvent.text = content.getTextRange(event.start, replacedLength); - } - if (updateCaret) { - //Fix advancing flag for delete/backspace key on direction boundary - if (event.text.length() == 0) { - int lineIndex = content.getLineAtOffset(event.start); - int lineOffset = content.getOffsetAtLine(lineIndex); - String lineText = content.getLine(lineIndex); - TextLayout layout = renderer.getTextLayout(lineText, lineOffset); - int levelStart = layout.getLevel(event.start - lineOffset); - int lineIndexEnd = content.getLineAtOffset(event.end); - if (lineIndex != lineIndexEnd) { - renderer.disposeTextLayout(layout); - lineOffset = content.getOffsetAtLine(lineIndexEnd); - lineText = content.getLine(lineIndexEnd); - layout = renderer.getTextLayout(lineText, lineOffset); - } - int levelEnd = layout.getLevel(event.end - lineOffset); - renderer.disposeTextLayout(layout); - advancing = levelStart != levelEnd; - } - } - content.replaceTextRange(event.start, replacedLength, event.text); - // set the caret position prior to sending the modify event. - // fixes 1GBB8NJ - if (updateCaret) { - // always update the caret location. fixes 1G8FODP - internalSetSelection(event.start + event.text.length(), 0, true); - showCaret(); - } - sendModifyEvent(event); - if (isListening(ExtendedModify)) { - notifyListeners(ExtendedModify, styledTextEvent); - } - } -} -/** - * Replaces the selection with the text on the DND.CLIPBOARD - * clipboard or, if there is no selection, inserts the text at the current - * caret offset. If the widget has the SWT.SINGLE style and the - * clipboard text contains more than one line, only the first line without - * line delimiters is inserted in the widget. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void paste(){ - checkWidget(); - String text; - text = (String) getClipboardContent(DND.CLIPBOARD); - if (text != null && text.length() > 0) { - Event event = new Event(); - event.start = selection.x; - event.end = selection.y; - event.text = getModelDelimitedText(text); - sendKeyEvent(event); - } -} -/** - * Render the specified area. Broken out as its own method to support - * direct drawing. - *

                                - * - * @param gc GC to render on - * @param startLine first line to render - * @param startY y pixel location to start rendering at - * @param renderHeight renderHeight widget area that needs to be filled with lines - */ -void performPaint(GC gc,int startLine,int startY, int renderHeight) { - Rectangle clientArea = getClientArea(); - Color background = getBackground(); - - // Check if there is work to do. We never want to try and create - // an Image with 0 width or 0 height. - if (clientArea.width == 0) { - return; - } - if (renderHeight > 0) { - // renderHeight will be negative when only top margin needs redrawing - Color foreground = getForeground(); - int lineCount = content.getLineCount(); - int gcStyle = isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT; - if (isSingleLine()) { - lineCount = 1; - } - int paintY, paintHeight; - Image lineBuffer; - GC lineGC; - boolean doubleBuffer = DOUBLE_BUFFER && lastPaintTopIndex == topIndex; - lastPaintTopIndex = topIndex; - if (doubleBuffer) { - paintY = 0; - paintHeight = renderHeight; - lineBuffer = new Image(getDisplay(), clientArea.width, renderHeight); - lineGC = new GC(lineBuffer, gcStyle); - lineGC.setFont(getFont()); - lineGC.setForeground(foreground); - lineGC.setBackground(background); - } else { - paintY = startY; - paintHeight = startY + renderHeight; - lineBuffer = null; - lineGC = gc; - } - for (int i = startLine; paintY < paintHeight && i < lineCount; i++, paintY += lineHeight) { - String line = content.getLine(i); - renderer.drawLine(line, i, paintY, lineGC, background, foreground, true); - } - if (paintY < paintHeight) { - lineGC.setBackground(background); - lineGC.fillRectangle(0, paintY, clientArea.width, paintHeight - paintY); - } - if (doubleBuffer) { - clearMargin(lineGC, background, clientArea, startY); - gc.drawImage(lineBuffer, 0, startY); - lineGC.dispose(); - lineBuffer.dispose(); - } - } - clearMargin(gc, background, clientArea, 0); -} -/** - * Prints the widget's text to the default printer. - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void print() { - checkWidget(); - Printer printer = new Printer(); - StyledTextPrintOptions options = new StyledTextPrintOptions(); - - options.printTextForeground = true; - options.printTextBackground = true; - options.printTextFontStyle = true; - options.printLineBackground = true; - new Printing(this, printer, options).run(); - printer.dispose(); -} -/** - * Returns a runnable that will print the widget's text - * to the specified printer. - *

                                - * The runnable may be run in a non-UI thread. - *

                                - * - * @param printer the printer to print to - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when printer is null
                                • - *
                                - */ -public Runnable print(Printer printer) { - checkWidget(); - StyledTextPrintOptions options = new StyledTextPrintOptions(); - options.printTextForeground = true; - options.printTextBackground = true; - options.printTextFontStyle = true; - options.printLineBackground = true; - if (printer == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - return print(printer, options); -} -/** - * Returns a runnable that will print the widget's text - * to the specified printer. - *

                                - * The runnable may be run in a non-UI thread. - *

                                - * - * @param printer the printer to print to - * @param options print options to use during printing - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when printer or options is null
                                • - *
                                - * @since 2.1 - */ -public Runnable print(Printer printer, StyledTextPrintOptions options) { - checkWidget(); - if (printer == null || options == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - return new Printing(this, printer, options); -} -/** - * Causes the entire bounds of the receiver to be marked - * as needing to be redrawn. The next time a paint request - * is processed, the control will be completely painted. - *

                                - * Recalculates the content width for all lines in the bounds. - * When a LineStyleListener is used a redraw call - * is the only notification to the widget that styles have changed - * and that the content width may have changed. - *

                                - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @see Control#update - */ -public void redraw() { - int itemCount; - - super.redraw(); - itemCount = getPartialBottomIndex() - topIndex + 1; - lineCache.redrawReset(topIndex, itemCount, true); - lineCache.calculate(topIndex, itemCount); - setHorizontalScrollBar(); -} -/** - * Causes the rectangular area of the receiver specified by - * the arguments to be marked as needing to be redrawn. - * The next time a paint request is processed, that area of - * the receiver will be painted. If the all flag - * is true, any children of the receiver which - * intersect with the specified area will also paint their - * intersecting areas. If the all flag is - * false, the children will not be painted. - *

                                - * Marks the content width of all lines in the specified rectangle - * as unknown. Recalculates the content width of all visible lines. - * When a LineStyleListener is used a redraw call - * is the only notification to the widget that styles have changed - * and that the content width may have changed. - *

                                - * - * @param x the x coordinate of the area to draw - * @param y the y coordinate of the area to draw - * @param width the width of the area to draw - * @param height the height of the area to draw - * @param all true if children should redraw, and false otherwise - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @see Control#update - */ -public void redraw(int x, int y, int width, int height, boolean all) { - super.redraw(x, y, width, height, all); - if (height > 0) { - int lineCount = content.getLineCount(); - int startLine = (getTopPixel() + y) / lineHeight; - int endLine = startLine + Compatibility.ceil(height, lineHeight); - int itemCount; - - // reset all lines in the redraw rectangle - startLine = Math.min(startLine, lineCount); - itemCount = Math.min(endLine, lineCount) - startLine; - lineCache.reset(startLine, itemCount, true); - // only calculate the visible lines - itemCount = getPartialBottomIndex() - topIndex + 1; - lineCache.calculate(topIndex, itemCount); - setHorizontalScrollBar(); - } -} -/** - * Redraws a text range in the specified lines - *

                                - * - * @param firstLine first line to redraw at the specified offset - * @param offsetInFirstLine offset in firstLine to start redrawing - * @param lastLine last line to redraw - * @param endOffset offset in the last where redrawing should stop - * @param clearBackground true=clear the background by invalidating - * the requested redraw range. If the redraw range includes the - * last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * false=draw the foreground directly without invalidating the - * redraw range. - */ -void redrawLines(int firstLine, int offsetInFirstLine, int lastLine, int endOffset, boolean clearBackground) { - String line = content.getLine(firstLine); - int lineCount = lastLine - firstLine + 1; - int redrawY, redrawWidth; - int lineOffset = content.getOffsetAtLine(firstLine); - boolean fullLineRedraw; - Rectangle clientArea = getClientArea(); - - fullLineRedraw = ((getStyle() & SWT.FULL_SELECTION) != 0 && lastLine > firstLine); - // if redraw range includes last character on the first line, - // clear background to right widget border. fixes bug 19595. - if (clearBackground && endOffset - lineOffset >= line.length()) { - fullLineRedraw = true; - } - TextLayout layout = renderer.getTextLayout(line, lineOffset); - Rectangle rect = layout.getBounds(offsetInFirstLine, Math.min(endOffset, line.length()) - 1); - renderer.disposeTextLayout(layout); - rect.x -= horizontalScrollOffset; - rect.intersect(clientArea); - redrawY = firstLine * lineHeight - verticalScrollOffset; - redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width; - draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground); - - // redraw last line if more than one line needs redrawing - if (lineCount > 1) { - lineOffset = content.getOffsetAtLine(lastLine); - int offsetInLastLine = endOffset - lineOffset; - // no redraw necessary if redraw offset is 0 - if (offsetInLastLine > 0) { - line = content.getLine(lastLine); - // if redraw range includes last character on the last line, - // clear background to right widget border. fixes bug 19595. - if (clearBackground && offsetInLastLine >= line.length()) { - fullLineRedraw = true; - } - line = content.getLine(lastLine); - layout = renderer.getTextLayout(line, lineOffset); - rect = layout.getBounds(0, offsetInLastLine - 1); - renderer.disposeTextLayout(layout); - rect.x -= horizontalScrollOffset; - rect.intersect(clientArea); - redrawY = lastLine * lineHeight - verticalScrollOffset; - redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width; - draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground); - } - } -} -/** - * Fixes the widget to display a text change. - * Bit blitting and redrawing is done as necessary. - *

                                - * - * @param y y location of the text change - * @param newLineCount number of new lines. - * @param replacedLineCount number of replaced lines. - */ -void redrawMultiLineChange(int y, int newLineCount, int replacedLineCount) { - Rectangle clientArea = getClientArea(); - int lineCount = newLineCount - replacedLineCount; - int sourceY; - int destinationY; - - if (lineCount > 0) { - sourceY = Math.max(0, y + lineHeight); - destinationY = sourceY + lineCount * lineHeight; - } - else { - destinationY = Math.max(0, y + lineHeight); - sourceY = destinationY - lineCount * lineHeight; - } - scroll( - 0, destinationY, // destination x, y - 0, sourceY, // source x, y - clientArea.width, clientArea.height, true); - // Always redrawing causes the bottom line to flash when a line is - // deleted. This is because SWT merges the paint area of the scroll - // with the paint area of the redraw call below. - // To prevent this we could call update after the scroll. However, - // adding update can cause even more flash if the client does other - // redraw/update calls (ie. for syntax highlighting). - // We could also redraw only when a line has been added or when - // contents has been added to a line. This would require getting - // line index info from the content and is not worth the trouble - // (the flash is only on the bottom line and minor). - // Specifying the NO_MERGE_PAINTS style bit prevents the merged - // redraw but could cause flash/slowness elsewhere. - if (y + lineHeight > 0 && y <= clientArea.height) { - // redraw first changed line in case a line was split/joined - super.redraw(0, y, clientArea.width, lineHeight, true); - } - if (newLineCount > 0) { - int redrawStartY = y + lineHeight; - int redrawHeight = newLineCount * lineHeight; - - if (redrawStartY + redrawHeight > 0 && redrawStartY <= clientArea.height) { - // display new text - super.redraw(0, redrawStartY, clientArea.width, redrawHeight, true); - } - } -} -/** - * Redraws the specified text range. - *

                                - * - * @param start offset of the first character to redraw - * @param length number of characters to redraw - * @param clearBackground true if the background should be cleared as - * part of the redraw operation. If true, the entire redraw range will - * be cleared before anything is redrawn. If the redraw range includes - * the last character of a line (i.e., the entire line is redrawn) the - * line is cleared all the way to the right border of the widget. - * The redraw operation will be faster and smoother if clearBackground - * is set to false. Whether or not the flag can be set to false depends - * on the type of change that has taken place. If font styles or - * background colors for the redraw range have changed, clearBackground - * should be set to true. If only foreground colors have changed for - * the redraw range, clearBackground can be set to false. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when start and/or end are outside the widget content
                                • - *
                                - */ -public void redrawRange(int start, int length, boolean clearBackground) { - checkWidget(); - int end = start + length; - int contentLength = content.getCharCount(); - int firstLine; - int lastLine; - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - firstLine = content.getLineAtOffset(start); - lastLine = content.getLineAtOffset(end); - // reset all affected lines but let the redraw recalculate only - // those that are visible. - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - internalRedrawRange(start, length, clearBackground); -} -/** - * Removes the specified bidirectional segment listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - * @since 2.0 - */ -public void removeBidiSegmentListener(BidiSegmentListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(LineGetSegments, listener); -} -/** - * Removes the specified extended modify listener. - *

                                - * - * @param extendedModifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { - checkWidget(); - if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(ExtendedModify, extendedModifyListener); -} -/** - * Removes the specified line background listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeLineBackgroundListener(LineBackgroundListener listener) { - checkWidget(); - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(LineGetBackground, listener); - // use default line styler if last user line styler was removed. - if (!isListening(LineGetBackground) && userLineBackground) { - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - addListener(LineGetBackground, typedListener); - userLineBackground = false; - } -} -/** - * Removes the specified line style listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeLineStyleListener(LineStyleListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(LineGetStyle, listener); - // use default line styler if last user line styler was removed. Fixes 1G7B1X2 - if (!isListening(LineGetStyle) && userLineStyle) { - StyledTextListener typedListener = new StyledTextListener(defaultLineStyler); - addListener(LineGetStyle, typedListener); - userLineStyle = false; - } -} -/** - * Removes the specified modify listener. - *

                                - * - * @param modifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeModifyListener(ModifyListener modifyListener) { - checkWidget(); - if (modifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Modify, modifyListener); -} -/** - * Removes the specified selection listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeSelectionListener(SelectionListener listener) { - checkWidget(); - if (listener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Selection, listener); -} -/** - * Removes the specified verify listener. - *

                                - * - * @param verifyListener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeVerifyListener(VerifyListener verifyListener) { - checkWidget(); - if (verifyListener == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Verify, verifyListener); -} -/** - * Removes the specified key verify listener. - *

                                - * - * @param listener the listener - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void removeVerifyKeyListener(VerifyKeyListener listener) { - if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); - removeListener(VerifyKey, listener); -} -/** - * Replaces the styles in the given range with new styles. This method - * effectively deletes the styles in the given range and then adds the - * the new styles. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param start offset of first character where styles will be deleted - * @param length length of the range to delete styles in - * @param ranges StyleRange objects containing the new style information. - * The ranges should not overlap and should be within the specified start - * and length. The style rendering is undefined if the ranges do overlap - * or are ill-defined. Must not be null. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())
                                • - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - * @since 2.0 - */ -public void replaceStyleRanges(int start, int length, StyleRange[] ranges) { - checkWidget(); - if (userLineStyle) { - return; - } - if (ranges == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (ranges.length == 0) { - setStyleRange(new StyleRange(start, length, null, null)); - return; - } - int end = start + length; - if (start > end || start < 0 || end > getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - int firstLine = content.getLineAtOffset(start); - int lastLine = content.getLineAtOffset(end); - - defaultLineStyler.replaceStyleRanges(start, length, ranges); - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - - // if the area is not visible, there is no need to redraw - if (isAreaVisible(firstLine, lastLine)) { - int redrawY = firstLine * lineHeight - verticalScrollOffset; - int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true); - } - - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Replaces the given text range with new text. - * If the widget has the SWT.SINGLE style and "text" contains more than - * one line, only the first line is rendered but the text is stored - * unchanged. A subsequent call to getText will return the same text - * that was set. Note that only a single line of text should be set when - * the SWT.SINGLE style is used. - *

                                - * NOTE: During the replace operation the current selection is - * changed as follows: - *

                                  - *
                                • selection before replaced text: selection unchanged - *
                                • selection after replaced text: adjust the selection so that same text - * remains selected - *
                                • selection intersects replaced text: selection is cleared and caret - * is placed after inserted text - *
                                - *

                                - * - * @param start offset of first character to replace - * @param length number of characters to replace. Use 0 to insert text - * @param text new text. May be empty to delete text. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())
                                • - *
                                • ERROR_INVALID_ARGUMENT when either start or end is inside a multi byte line delimiter. - * Splitting a line delimiter for example by inserting text in between the CR and LF and deleting part of a line delimiter is not supported
                                • - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void replaceTextRange(int start, int length, String text) { - checkWidget(); - int contentLength = getCharCount(); - int end = start + length; - Event event = new Event(); - - if (start > end || start < 0 || end > contentLength) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - if (text == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - event.start = start; - event.end = end; - event.text = text; - modifyContent(event, false); -} -/** - * Resets the caret position, selection and scroll offsets. Recalculate - * the content width and scroll bars. Redraw the widget. - */ -void reset() { - ScrollBar verticalBar = getVerticalBar(); - ScrollBar horizontalBar = getHorizontalBar(); - caretOffset = 0; - topIndex = 0; - topOffset = 0; - verticalScrollOffset = 0; - horizontalScrollOffset = 0; - resetSelection(); - // discard any styles that may have been set by creating a - // new default line styler - if (defaultLineStyler != null) { - removeLineBackgroundListener(defaultLineStyler); - removeLineStyleListener(defaultLineStyler); - installDefaultLineStyler(); - } - calculateContentWidth(); - if (verticalBar != null) { - verticalBar.setSelection(0); - } - if (horizontalBar != null) { - horizontalBar.setSelection(0); - } - setScrollBars(); - setCaretLocation(); - super.redraw(); -} -/** - * Resets the selection. - */ -void resetSelection() { - selection.x = selection.y = caretOffset; - selectionAnchor = -1; -} -/** - * Scrolls the widget horizontally. - *

                                - * - * @param pixels number of pixels to scroll, > 0 = scroll left, - * < 0 scroll right - */ -void scrollHorizontal(int pixels) { - Rectangle clientArea; - - if (pixels == 0) { - return; - } - clientArea = getClientArea(); - if (pixels > 0) { - int sourceX = leftMargin + pixels; - int scrollWidth = clientArea.width - sourceX - rightMargin; - int scrollHeight = clientArea.height - topMargin - bottomMargin; - scroll( - leftMargin, topMargin, // destination x, y - sourceX, topMargin, // source x, y - scrollWidth, scrollHeight, true); - if (sourceX > scrollWidth) { - // redraw from end of scrolled area to beginning of scroll - // invalidated area - super.redraw( - leftMargin + scrollWidth, topMargin, - pixels - scrollWidth, scrollHeight, true); - } - } - else { - int destinationX = leftMargin - pixels; - int scrollWidth = clientArea.width - destinationX - rightMargin; - int scrollHeight = clientArea.height - topMargin - bottomMargin; - scroll( - destinationX, topMargin, // destination x, y - leftMargin, topMargin, // source x, y - scrollWidth, scrollHeight, true); - if (destinationX > scrollWidth) { - // redraw from end of scroll invalidated area to scroll - // destination - super.redraw( - leftMargin + scrollWidth, topMargin, - -pixels - scrollWidth, scrollHeight, true); - } - } - horizontalScrollOffset += pixels; - int oldColumnX = columnX - pixels; - setCaretLocation(); - // restore the original horizontal caret index - columnX = oldColumnX; -} -/** - * Scrolls the widget horizontally and adjust the horizontal scroll - * bar to reflect the new horizontal offset.. - *

                                - * - * @param pixels number of pixels to scroll, > 0 = scroll left, - * < 0 scroll right - * @return - * true=the widget was scrolled - * false=the widget was not scrolled, the given offset is not valid. - */ -boolean scrollHorizontalBar(int pixels) { - if (pixels == 0) { - return false; - } - ScrollBar horizontalBar = getHorizontalBar(); - if (horizontalBar != null) { - horizontalBar.setSelection(horizontalScrollOffset + pixels); - } - scrollHorizontal(pixels); - return true; -} -/** - * Selects all the text. - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void selectAll() { - checkWidget(); - setSelection(0, Math.max(getCharCount(),0)); -} -/** - * Replaces/inserts text as defined by the event. - *

                                - * - * @param event the text change event. - *

                                  - *
                                • event.start - the replace start offset
                                • - *
                                • event.end - the replace end offset
                                • - *
                                • event.text - the new text
                                • - *
                                - */ -void sendKeyEvent(Event event) { - if (editable) { - modifyContent(event, true); - } -} -void sendModifyEvent(Event event) { - Accessible accessible = getAccessible(); - if (event.text.length() == 0) { - accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); - } else { - if (event.start == event.end) { - accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length()); - } else { - accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); - accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length()); - } - } - notifyListeners(SWT.Modify, event); -} -/** - * Sends the specified selection event. - */ -void sendSelectionEvent() { - getAccessible().textSelectionChanged(); - Event event = new Event(); - event.x = selection.x; - event.y = selection.y; - notifyListeners(SWT.Selection, event); -} -/** - * Sets whether the widget wraps lines. - * This overrides the creation style bit SWT.WRAP. - *

                                - * - * @param wrap true=widget wraps lines, false=widget does not wrap lines - * @since 2.0 - */ -public void setWordWrap(boolean wrap) { - checkWidget(); - if ((getStyle() & SWT.SINGLE) != 0) return; - - if (wrap != wordWrap) { - ScrollBar horizontalBar = getHorizontalBar(); - - wordWrap = wrap; - if (wordWrap) { - logicalContent = content; - content = new WrappedContent(renderer, logicalContent); - } - else { - content = logicalContent; - } - calculateContentWidth(); - horizontalScrollOffset = 0; - if (horizontalBar != null) { - horizontalBar.setVisible(!wordWrap); - } - setScrollBars(); - setCaretLocation(); - super.redraw(); - } -} -/** - * Sets the receiver's caret. Set the caret's height and location. - * - *

                                - * @param caret the new caret for the receiver - * - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setCaret(Caret caret) { - checkWidget (); - super.setCaret(caret); - caretDirection = SWT.NULL; - if (caret != null) { - setCaretLocation(); - } -} -/** - * @see org.eclipse.swt.widgets.Control#setBackground - */ -public void setBackground(Color color) { - checkWidget(); - background = color; - super.setBackground(getBackground()); - redraw(); -} -/** - * Sets the BIDI coloring mode. When true the BIDI text display - * algorithm is applied to segments of text that are the same - * color. - * - * @param mode the new coloring mode - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - *

                                - * @deprecated use BidiSegmentListener instead. - *

                                - */ -public void setBidiColoring(boolean mode) { - checkWidget(); - bidiColoring = mode; -} -void setCaretLocation(int newCaretX, int line, int direction) { - Caret caret = getCaret(); - if (caret != null) { - boolean updateImage = caret == defaultCaret; - int imageDirection = direction; - if (isMirrored()) { - if (imageDirection == SWT.LEFT) { - imageDirection = SWT.RIGHT; - } else if (imageDirection == SWT.RIGHT) { - imageDirection = SWT.LEFT; - } - } - if (updateImage && imageDirection == SWT.RIGHT) { - newCaretX -= (caret.getSize().x - 1); - } - int newCaretY = line * lineHeight - verticalScrollOffset + topMargin; - caret.setLocation(newCaretX, newCaretY); - getAccessible().textCaretMoved(getCaretOffset()); - if (direction != caretDirection) { - caretDirection = direction; - if (updateImage) { - if (imageDirection == SWT.DEFAULT) { - defaultCaret.setImage(null); - } else if (imageDirection == SWT.LEFT) { - defaultCaret.setImage(leftCaretBitmap); - } else if (imageDirection == SWT.RIGHT) { - defaultCaret.setImage(rightCaretBitmap); - } - } - caret.setSize(caret.getSize().x, lineHeight); - if (caretDirection == SWT.LEFT) { - BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_NON_BIDI); - } else if (caretDirection == SWT.RIGHT) { - BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_BIDI); - } - } - } - columnX = newCaretX; -} -/** - * Moves the Caret to the current caret offset. - */ -void setCaretLocation() { - int lineIndex = getCaretLine(); - String line = content.getLine(lineIndex); - int lineOffset = content.getOffsetAtLine(lineIndex); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, lineIndex, offsetInLine); - setCaretLocation(newCaretX, lineIndex, getCaretDirection()); -} -/** - * Sets the caret offset. - * - * @param offset caret offset, relative to the first character in the text. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setCaretOffset(int offset) { - checkWidget(); - int length = getCharCount(); - - if (length > 0 && offset != caretOffset) { - if (offset < 0) { - caretOffset = 0; - } - else - if (offset > length) { - caretOffset = length; - } - else { - if (isLineDelimiter(offset)) { - // offset is inside a multi byte line delimiter. This is an - // illegal operation and an exception is thrown. Fixes 1GDKK3R - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - caretOffset = offset; - } - // clear the selection if the caret is moved. - // don't notify listeners about the selection change. - clearSelection(false); - } - // always update the caret location. fixes 1G8FODP - setCaretLocation(); -} -/** - * Copies the specified text range to the clipboard. The text will be placed - * in the clipboard in plain text format and RTF format. - *

                                - * - * @param start start index of the text - * @param length length of text to place in clipboard - * - * @exception SWTError, see Clipboard.setContents - * @see org.eclipse.swt.dnd.Clipboard#setContents - */ -void setClipboardContent(int start, int length, int clipboardType) throws SWTError { - if (clipboardType == DND.SELECTION_CLIPBOARD && !(IS_MOTIF || IS_GTK)) return; - TextTransfer plainTextTransfer = TextTransfer.getInstance(); - TextWriter plainTextWriter = new TextWriter(start, length); - String plainText = getPlatformDelimitedText(plainTextWriter); - Object[] data; - Transfer[] types; - if (clipboardType == DND.SELECTION_CLIPBOARD) { - data = new Object[]{plainText}; - types = new Transfer[]{plainTextTransfer}; - } else { - RTFTransfer rtfTransfer = RTFTransfer.getInstance(); - RTFWriter rtfWriter = new RTFWriter(start, length); - String rtfText = getPlatformDelimitedText(rtfWriter); - data = new Object[]{rtfText, plainText}; - types = new Transfer[]{rtfTransfer, plainTextTransfer}; - } - clipboard.setContents(data, types, clipboardType); -} -/** - * Sets the content implementation to use for text storage. - *

                                - * - * @param newContent StyledTextContent implementation to use for text storage. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                - */ -public void setContent(StyledTextContent newContent) { - checkWidget(); - if (newContent == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - if (content != null) { - content.removeTextChangeListener(textChangeListener); - } - logicalContent = newContent; - if (wordWrap) { - content = new WrappedContent(renderer, logicalContent); - } - else { - content = logicalContent; - } - content.addTextChangeListener(textChangeListener); - reset(); -} -/** - * Sets the receiver's cursor to the cursor specified by the - * argument. Overridden to handle the null case since the - * StyledText widget uses an ibeam as its default cursor. - * - * @see org.eclipse.swt.widgets.Control#setCursor - */ -public void setCursor (Cursor cursor) { - if (cursor == null) { - super.setCursor(ibeamCursor); - } else { - super.setCursor(cursor); - } -} -/** - * Sets whether the widget implements double click mouse behavior. - *

                                - * - * @param enable if true double clicking a word selects the word, if false - * double clicks have the same effect as regular mouse clicks. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setDoubleClickEnabled(boolean enable) { - checkWidget(); - doubleClickEnabled = enable; -} -/** - * Sets whether the widget content can be edited. - *

                                - * - * @param editable if true content can be edited, if false content can not be - * edited - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setEditable(boolean editable) { - checkWidget(); - this.editable = editable; -} -/** - * Sets a new font to render text with. - *

                                - * NOTE: Italic fonts are not supported unless they have no overhang - * and the same baseline as regular fonts. - *

                                - * - * @param font new font - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setFont(Font font) { - checkWidget(); - int oldLineHeight = lineHeight; - - super.setFont(font); - initializeRenderer(); - // keep the same top line visible. fixes 5815 - if (lineHeight != oldLineHeight) { - setVerticalScrollOffset(verticalScrollOffset * lineHeight / oldLineHeight, true); - claimBottomFreeSpace(); - } - calculateContentWidth(); - calculateScrollBars(); - if (isBidiCaret()) createCaretBitmaps(); - caretDirection = SWT.NULL; - // always set the caret location. Fixes 6685 - setCaretLocation(); - super.redraw(); -} -/** - * @see org.eclipse.swt.widgets.Control#setForeground - */ -public void setForeground(Color color) { - checkWidget(); - foreground = color; - super.setForeground(getForeground()); - redraw(); -} -/** - * Sets the horizontal scroll offset relative to the start of the line. - * Do nothing if there is no text set. - *

                                - * NOTE: The horizontal index is reset to 0 when new text is set in the - * widget. - *

                                - * - * @param offset horizontal scroll offset relative to the start - * of the line, measured in character increments starting at 0, if - * equal to 0 the content is not scrolled, if > 0 = the content is scrolled. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setHorizontalIndex(int offset) { - checkWidget(); - int clientAreaWidth = getClientArea().width; - if (getCharCount() == 0) { - return; - } - if (offset < 0) { - offset = 0; - } - offset *= getHorizontalIncrement(); - // allow any value if client area width is unknown or 0. - // offset will be checked in resize handler. - // don't use isVisible since width is known even if widget - // is temporarily invisible - if (clientAreaWidth > 0) { - int width = lineCache.getWidth(); - // prevent scrolling if the content fits in the client area. - // align end of longest line with right border of client area - // if offset is out of range. - if (offset > width - clientAreaWidth) { - offset = Math.max(0, width - clientAreaWidth); - } - } - scrollHorizontalBar(offset - horizontalScrollOffset); -} -/** - * Sets the horizontal pixel offset relative to the start of the line. - * Do nothing if there is no text set. - *

                                - * NOTE: The horizontal pixel offset is reset to 0 when new text - * is set in the widget. - *

                                - * - * @param pixel horizontal pixel offset relative to the start - * of the line. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.0 - */ -public void setHorizontalPixel(int pixel) { - checkWidget(); - int clientAreaWidth = getClientArea().width; - if (getCharCount() == 0) { - return; - } - if (pixel < 0) { - pixel = 0; - } - // allow any value if client area width is unknown or 0. - // offset will be checked in resize handler. - // don't use isVisible since width is known even if widget - // is temporarily invisible - if (clientAreaWidth > 0) { - int width = lineCache.getWidth(); - // prevent scrolling if the content fits in the client area. - // align end of longest line with right border of client area - // if offset is out of range. - if (pixel > width - clientAreaWidth) { - pixel = Math.max(0, width - clientAreaWidth); - } - } - scrollHorizontalBar(pixel - horizontalScrollOffset); -} -/** - * Adjusts the maximum and the page size of the horizontal scroll bar - * to reflect content width changes. - */ -void setHorizontalScrollBar() { - ScrollBar horizontalBar = getHorizontalBar(); - - if (horizontalBar != null && horizontalBar.getVisible()) { - final int INACTIVE = 1; - Rectangle clientArea = getClientArea(); - // only set the real values if the scroll bar can be used - // (ie. because the thumb size is less than the scroll maximum) - // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 - if (clientArea.width < lineCache.getWidth()) { - horizontalBar.setValues( - horizontalBar.getSelection(), - horizontalBar.getMinimum(), - lineCache.getWidth(), // maximum - clientArea.width - leftMargin - rightMargin, // thumb size - horizontalBar.getIncrement(), - clientArea.width - leftMargin - rightMargin); // page size - } - else - if (horizontalBar.getThumb() != INACTIVE || horizontalBar.getMaximum() != INACTIVE) { - horizontalBar.setValues( - horizontalBar.getSelection(), - horizontalBar.getMinimum(), - INACTIVE, - INACTIVE, - horizontalBar.getIncrement(), - INACTIVE); - } - } -} -/** - * Sets the background color of the specified lines. - * The background color is drawn for the width of the widget. All - * line background colors are discarded when setText is called. - * The text background color if defined in a StyleRange overlays the - * line background color. Should not be called if a LineBackgroundListener - * has been set since the listener maintains the line backgrounds. - *

                                - * Line background colors are maintained relative to the line text, not the - * line index that is specified in this method call. - * During text changes, when entire lines are inserted or removed, the line - * background colors that are associated with the lines after the change - * will "move" with their respective text. An entire line is defined as - * extending from the first character on a line to the last and including the - * line delimiter. - *

                                - *

                                - * When two lines are joined by deleting a line delimiter, the top line - * background takes precedence and the color of the bottom line is deleted. - * For all other text changes line background colors will remain unchanged. - *

                                - * - * @param startLine first line the color is applied to, 0 based - * @param lineCount number of lines the color applies to. - * @param background line background color - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when the specified line range is invalid
                                • - *
                                - */ -public void setLineBackground(int startLine, int lineCount, Color background) { - checkWidget(); - int partialBottomIndex = getPartialBottomIndex(); - - // this API can not be used if the client is providing the line background - if (userLineBackground) { - return; - } - if (startLine < 0 || startLine + lineCount > logicalContent.getLineCount()) { - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - defaultLineStyler.setLineBackground(startLine, lineCount, background); - // do nothing if redraw range is completely invisible - if (startLine > partialBottomIndex || startLine + lineCount - 1 < topIndex) { - return; - } - // only redraw visible lines - if (startLine < topIndex) { - lineCount -= topIndex - startLine; - startLine = topIndex; - } - if (startLine + lineCount - 1 > partialBottomIndex) { - lineCount = partialBottomIndex - startLine + 1; - } - startLine -= topIndex; - super.redraw( - leftMargin, startLine * lineHeight + topMargin, - getClientArea().width - leftMargin - rightMargin, lineCount * lineHeight, true); -} -/** - * Flips selection anchor based on word selection direction. - */ -void setMouseWordSelectionAnchor() { - if (mouseDoubleClick) { - if (caretOffset < doubleClickSelection.x) { - selectionAnchor = doubleClickSelection.y; - } - else if (caretOffset > doubleClickSelection.y) { - selectionAnchor = doubleClickSelection.x; - } - } -} -/** - * Sets the orientation of the receiver, which must be one - * of the constants SWT.LEFT_TO_RIGHT or SWT.RIGHT_TO_LEFT. - *

                                - * - * @param orientation new orientation style - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * - * @since 2.1.2 - */ -public void setOrientation(int orientation) { - if ((orientation & (SWT.RIGHT_TO_LEFT | SWT.LEFT_TO_RIGHT)) == 0) { - return; - } - if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && (orientation & SWT.LEFT_TO_RIGHT) != 0) { - return; - } - if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && isMirrored()) { - return; - } - if ((orientation & SWT.LEFT_TO_RIGHT) != 0 && !isMirrored()) { - return; - } - if (!BidiUtil.setOrientation(handle, orientation)) { - return; - } - isMirrored = (orientation & SWT.RIGHT_TO_LEFT) != 0; - initializeRenderer(); - caretDirection = SWT.NULL; - setCaretLocation(); - keyActionMap.clear(); - createKeyBindings(); - super.redraw(); -} -/** - * Adjusts the maximum and the page size of the scroll bars to - * reflect content width/length changes. - */ -void setScrollBars() { - ScrollBar verticalBar = getVerticalBar(); - - if (verticalBar != null) { - Rectangle clientArea = getClientArea(); - final int INACTIVE = 1; - int maximum = content.getLineCount() * getVerticalIncrement(); - - // only set the real values if the scroll bar can be used - // (ie. because the thumb size is less than the scroll maximum) - // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 - if (clientArea.height < maximum) { - verticalBar.setValues( - verticalBar.getSelection(), - verticalBar.getMinimum(), - maximum, - clientArea.height, // thumb size - verticalBar.getIncrement(), - clientArea.height); // page size - } - else - if (verticalBar.getThumb() != INACTIVE || verticalBar.getMaximum() != INACTIVE) { - verticalBar.setValues( - verticalBar.getSelection(), - verticalBar.getMinimum(), - INACTIVE, - INACTIVE, - verticalBar.getIncrement(), - INACTIVE); - } - } - setHorizontalScrollBar(); -} -/** - * Sets the selection to the given position and scrolls it into view. Equivalent to setSelection(start,start). - *

                                - * - * @param start new caret position - * @see #setSelection(int,int) - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(int start) { - // checkWidget test done in setSelectionRange - setSelection(start, start); -} -/** - * Sets the selection and scrolls it into view. - *

                                - * Indexing is zero based. Text selections are specified in terms of - * caret positions. In a text widget that contains N characters, there are - * N+1 caret positions, ranging from 0..N - *

                                - * - * @param point x=selection start offset, y=selection end offset - * The caret will be placed at the selection start when x > y. - * @see #setSelection(int,int) - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when point is null
                                • - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(Point point) { - checkWidget(); - if (point == null) SWT.error (SWT.ERROR_NULL_ARGUMENT); - setSelection(point.x, point.y); -} -/** - * Sets the receiver's selection background color to the color specified - * by the argument, or to the default system color for the control - * if the argument is null. - * - * @param color the new color (or null) - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT - if the argument has been disposed
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public void setSelectionBackground (Color color) { - checkWidget (); - if (color != null) { - if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - selectionBackground = color; - redraw(); -} -/** - * Sets the receiver's selection foreground color to the color specified - * by the argument, or to the default system color for the control - * if the argument is null. - * - * @param color the new color (or null) - * - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT - if the argument has been disposed
                                • - *
                                - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.1 - */ -public void setSelectionForeground (Color color) { - checkWidget (); - if (color != null) { - if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - selectionForeground = color; - redraw(); -} -/** - * Sets the selection and scrolls it into view. - *

                                - * Indexing is zero based. Text selections are specified in terms of - * caret positions. In a text widget that contains N characters, there are - * N+1 caret positions, ranging from 0..N - *

                                - * - * @param start selection start offset. The caret will be placed at the - * selection start when start > end. - * @param end selection end offset - * @see #setSelectionRange(int,int) - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelection(int start, int end) { - // checkWidget test done in setSelectionRange - setSelectionRange(start, end - start); - showSelection(); -} -/** - * Sets the selection. The new selection may not be visible. Call showSelection to scroll - * the selection into view. A negative length places the caret at the visual start of the - * selection.

                                - * - * @param start offset of the first selected character - * @param length number of characters to select - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) - *
                                - */ -public void setSelectionRange(int start, int length) { - checkWidget(); - int contentLength = getCharCount(); - start = Math.max(0, Math.min (start, contentLength)); - int end = start + length; - if (end < 0) { - length = -start; - } else { - if (end > contentLength) length = contentLength - start; - } - if (isLineDelimiter(start) || isLineDelimiter(start + length)) { - // the start offset or end offset of the selection range is inside a - // multi byte line delimiter. This is an illegal operation and an exception - // is thrown. Fixes 1GDKK3R - SWT.error(SWT.ERROR_INVALID_ARGUMENT); - } - internalSetSelection(start, length, false); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets the selection. - * The new selection may not be visible. Call showSelection to scroll - * the selection into view. - *

                                - * - * @param start offset of the first selected character, start >= 0 must be true. - * @param length number of characters to select, 0 <= start + length - * <= getCharCount() must be true. - * A negative length places the caret at the selection start. - * @param sendEvent a Selection event is sent when set to true and when - * the selection is reset. - */ -void internalSetSelection(int start, int length, boolean sendEvent) { - int end = start + length; - - if (start > end) { - int temp = end; - end = start; - start = temp; - } - // is the selection range different or is the selection direction - // different? - if (selection.x != start || selection.y != end || - (length > 0 && selectionAnchor != selection.x) || - (length < 0 && selectionAnchor != selection.y)) { - clearSelection(sendEvent); - if (length < 0) { - selectionAnchor = selection.y = end; - caretOffset = selection.x = start; - } - else { - selectionAnchor = selection.x = start; - caretOffset = selection.y = end; - } - internalRedrawRange(selection.x, selection.y - selection.x, true); - } -} -/** - * Adds the specified style. The new style overwrites existing styles for the - * specified range. Existing style ranges are adjusted if they partially - * overlap with the new style, To clear an individual style, call setStyleRange - * with a StyleRange that has null attributes. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param range StyleRange object containing the style information. - * Overwrites the old style in the given range. May be null to delete - * all styles. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_INVALID_RANGE when the style range is outside the valid range (> getCharCount())
                                • - *
                                - */ -public void setStyleRange(StyleRange range) { - checkWidget(); - - // this API can not be used if the client is providing the line styles - if (userLineStyle) { - return; - } - // check the range, make sure it falls within the range of the text - if (range != null && range.start + range.length > content.getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - defaultLineStyler.setStyleRange(range); - if (range != null) { - int firstLine = content.getLineAtOffset(range.start); - int lastLine = content.getLineAtOffset(range.start + range.length); - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - - // if the style is not visible, there is no need to redraw - if (isAreaVisible(firstLine, lastLine)) { - int redrawY = firstLine * lineHeight - verticalScrollOffset; - int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset; - draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true); - } - } else { - // clearing all styles - lineCache.reset(0, content.getLineCount(), false); - redraw(); - } - - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets styles to be used for rendering the widget content. All styles - * in the widget will be replaced with the given set of styles. - *

                                - * Should not be called if a LineStyleListener has been set since the - * listener maintains the styles. - *

                                - * - * @param ranges StyleRange objects containing the style information. - * The ranges should not overlap. The style rendering is undefined if - * the ranges do overlap. Must not be null. The styles need to be in order. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when listener is null
                                • - *
                                • ERROR_INVALID_RANGE when the last of the style ranges is outside the valid range (> getCharCount())
                                • - *
                                - */ -public void setStyleRanges(StyleRange[] ranges) { - checkWidget(); - // this API can not be used if the client is providing the line styles - if (userLineStyle) { - return; - } - if (ranges == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - // check the last range, make sure it falls within the range of the - // current text - if (ranges.length != 0) { - StyleRange last = ranges[ranges.length-1]; - int lastEnd = last.start + last.length; - int firstLine = content.getLineAtOffset(ranges[0].start); - int lastLine; - if (lastEnd > content.getCharCount()) { - SWT.error(SWT.ERROR_INVALID_RANGE); - } - lastLine = content.getLineAtOffset(lastEnd); - // reset all lines affected by the style change - lineCache.reset(firstLine, lastLine - firstLine + 1, true); - } - else { - // reset all lines - lineCache.reset(0, content.getLineCount(), false); - } - defaultLineStyler.setStyleRanges(ranges); - redraw(); // should only redraw affected area to avoid flashing - // make sure that the caret is positioned correctly. - // caret location may change if font style changes. - // fixes 1G8FODP - setCaretLocation(); -} -/** - * Sets the tab width. - *

                                - * - * @param tabs tab width measured in characters. - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setTabs(int tabs) { - checkWidget(); - tabLength = tabs; - renderer.setTabLength(tabLength); - if (caretOffset > 0) { - caretOffset = 0; - showCaret(); - clearSelection(false); - } - // reset all line widths when the tab width changes - lineCache.reset(0, content.getLineCount(), false); - redraw(); -} -/** - * Sets the widget content. - * If the widget has the SWT.SINGLE style and "text" contains more than - * one line, only the first line is rendered but the text is stored - * unchanged. A subsequent call to getText will return the same text - * that was set. - *

                                - * Note: Only a single line of text should be set when the SWT.SINGLE - * style is used. - *

                                - * - * @param text new widget content. Replaces existing content. Line styles - * that were set using StyledText API are discarded. The - * current selection is also discarded. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_NULL_ARGUMENT when string is null
                                • - *
                                - */ -public void setText(String text) { - checkWidget(); - Event event = new Event(); - - if (text == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - event.start = 0; - event.end = getCharCount(); - event.text = text; - event.doit = true; - notifyListeners(SWT.Verify, event); - if (event.doit) { - StyledTextEvent styledTextEvent = null; - - if (isListening(ExtendedModify)) { - styledTextEvent = new StyledTextEvent(logicalContent); - styledTextEvent.start = event.start; - styledTextEvent.end = event.start + event.text.length(); - styledTextEvent.text = content.getTextRange(event.start, event.end - event.start); - } - content.setText(event.text); - sendModifyEvent(event); - if (styledTextEvent != null) { - notifyListeners(ExtendedModify, styledTextEvent); - } - } -} -/** - * Sets the text limit to the specified number of characters. - *

                                - * The text limit specifies the amount of text that - * the user can type into the widget. - *

                                - * - * @param limit the new text limit. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @exception IllegalArgumentException
                                  - *
                                • ERROR_CANNOT_BE_ZERO when limit is 0
                                • - *
                                - */ -public void setTextLimit(int limit) { - checkWidget(); - if (limit == 0) { - SWT.error(SWT.ERROR_CANNOT_BE_ZERO); - } - textLimit = limit; -} -/** - * Sets the top index. Do nothing if there is no text set. - *

                                - * The top index is the index of the line that is currently at the top - * of the widget. The top index changes when the widget is scrolled. - * Indexing starts from zero. - * Note: The top index is reset to 0 when new text is set in the widget. - *

                                - * - * @param topIndex new top index. Must be between 0 and - * getLineCount() - fully visible lines per page. If no lines are fully - * visible the maximum value is getLineCount() - 1. An out of range - * index will be adjusted accordingly. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void setTopIndex(int topIndex) { - checkWidget(); - int lineCount = logicalContent.getLineCount(); - int pageSize = Math.max(1, Math.min(lineCount, getLineCountWhole())); - - if (getCharCount() == 0) { - return; - } - if (topIndex < 0) { - topIndex = 0; - } - else - if (topIndex > lineCount - pageSize) { - topIndex = lineCount - pageSize; - } - if (wordWrap) { - int logicalLineOffset = logicalContent.getOffsetAtLine(topIndex); - topIndex = content.getLineAtOffset(logicalLineOffset); - } - setVerticalScrollOffset(topIndex * getVerticalIncrement(), true); -} -/** - * Sets the top pixel offset. Do nothing if there is no text set. - *

                                - * The top pixel offset is the vertical pixel offset of the widget. The - * widget is scrolled so that the given pixel position is at the top. - * The top index is adjusted to the corresponding top line. - * Note: The top pixel is reset to 0 when new text is set in the widget. - *

                                - * - * @param pixel new top pixel offset. Must be between 0 and - * (getLineCount() - visible lines per page) / getLineHeight()). An out - * of range offset will be adjusted accordingly. - * @exception SWTException
                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - * @since 2.0 - */ -public void setTopPixel(int pixel) { - checkWidget(); - int lineCount =content.getLineCount(); - int height = getClientArea().height; - int maxTopPixel = Math.max(0, lineCount * getVerticalIncrement() - height); - - if (getCharCount() == 0) { - return; - } - if (pixel < 0) { - pixel = 0; - } - else - if (pixel > maxTopPixel) { - pixel = maxTopPixel; - } - setVerticalScrollOffset(pixel, true); -} -/** - * Scrolls the widget vertically. - *

                                - * - * @param pixelOffset the new vertical scroll offset - * @param adjustScrollBar - * true= the scroll thumb will be moved to reflect the new scroll offset. - * false = the scroll thumb will not be moved - * @return - * true=the widget was scrolled - * false=the widget was not scrolled, the given offset is not valid. - */ -boolean setVerticalScrollOffset(int pixelOffset, boolean adjustScrollBar) { - Rectangle clientArea; - ScrollBar verticalBar = getVerticalBar(); - - if (pixelOffset == verticalScrollOffset) { - return false; - } - if (verticalBar != null && adjustScrollBar) { - verticalBar.setSelection(pixelOffset); - } - clientArea = getClientArea(); - scroll( - 0, 0, // destination x, y - 0, pixelOffset - verticalScrollOffset, // source x, y - clientArea.width, clientArea.height, true); - - verticalScrollOffset = pixelOffset; - calculateTopIndex(); - int oldColumnX = columnX; - setCaretLocation(); - // restore the original horizontal caret index - columnX = oldColumnX; - return true; -} -/** - * Scrolls the specified location into view. - *

                                - * - * @param x the x coordinate that should be made visible. - * @param line the line that should be made visible. Relative to the - * first line in the document. - * @return - * true=the widget was scrolled to make the specified location visible. - * false=the specified location is already visible, the widget was - * not scrolled. - */ -boolean showLocation(int x, int line) { - int clientAreaWidth = getClientArea().width - leftMargin; - int verticalIncrement = getVerticalIncrement(); - int horizontalIncrement = clientAreaWidth / 4; - boolean scrolled = false; - - if (x < leftMargin) { - // always make 1/4 of a page visible - x = Math.max(horizontalScrollOffset * -1, x - horizontalIncrement); - scrolled = scrollHorizontalBar(x); - } - else - if (x >= clientAreaWidth) { - // always make 1/4 of a page visible - x = Math.min(lineCache.getWidth() - horizontalScrollOffset, x + horizontalIncrement); - scrolled = scrollHorizontalBar(x - clientAreaWidth); - } - if (line < topIndex) { - scrolled = setVerticalScrollOffset(line * verticalIncrement, true); - } - else - if (line > getBottomIndex()) { - scrolled = setVerticalScrollOffset((line + 1) * verticalIncrement - getClientArea().height, true); - } - return scrolled; -} -/** - * Sets the caret location and scrolls the caret offset into view. - */ -void showCaret() { - int caretLine = content.getLineAtOffset(caretOffset); - - showCaret(caretLine); -} -/** - * Sets the caret location and scrolls the caret offset into view. - */ -void showCaret(int caretLine) { - int lineOffset = content.getOffsetAtLine(caretLine); - String line = content.getLine(caretLine); - int offsetInLine = caretOffset - lineOffset; - int newCaretX = getXAtOffset(line, caretLine, offsetInLine); - boolean scrolled = showLocation(newCaretX, caretLine); - boolean setWrapCaretLocation = false; - Caret caret = getCaret(); - - if (wordWrap && caret != null) { - int caretY = caret.getLocation().y; - if ((caretY + verticalScrollOffset) / getVerticalIncrement() - 1 != caretLine) { - setWrapCaretLocation = true; - } - } - if (!scrolled || setWrapCaretLocation) { - // set the caret location if a scroll operation did not set it (as a - // sideeffect of scrolling) or when in word wrap mode and the caret - // line was explicitly specified (i.e., because getWrapCaretLine does - // not return the desired line causing scrolling to not set it correctly) - setCaretLocation(newCaretX, caretLine, getCaretDirection()); - } -} -/** - * Scrolls the specified offset into view. - *

                                - * - * @param offset offset that should be scolled into view - */ -void showOffset(int offset) { - int line = content.getLineAtOffset(offset); - int lineOffset = content.getOffsetAtLine(line); - int offsetInLine = offset - lineOffset; - String lineText = content.getLine(line); - int xAtOffset = getXAtOffset(lineText, line, offsetInLine); - - showLocation(xAtOffset, line); -} -/** -/** - * Scrolls the selection into view. The end of the selection will be scrolled into - * view. Note that if a right-to-left selection exists, the end of the selection is the - * visual beginning of the selection (i.e., where the caret is located). - *

                                - * - * @exception SWTException

                                  - *
                                • ERROR_WIDGET_DISPOSED - if the receiver has been disposed
                                • - *
                                • ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver
                                • - *
                                - */ -public void showSelection() { - checkWidget(); - boolean selectionFits; - int startOffset, startLine, startX, endOffset, endLine, endX, offsetInLine; - - // is selection from right-to-left? - boolean rightToLeft = caretOffset == selection.x; - - if (rightToLeft) { - startOffset = selection.y; - endOffset = selection.x; - } else { - startOffset = selection.x; - endOffset = selection.y; - } - - // calculate the logical start and end values for the selection - startLine = content.getLineAtOffset(startOffset); - offsetInLine = startOffset - content.getOffsetAtLine(startLine); - startX = getXAtOffset(content.getLine(startLine), startLine, offsetInLine); - endLine = content.getLineAtOffset(endOffset); - offsetInLine = endOffset - content.getOffsetAtLine(endLine); - endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine); - - // can the selection be fully displayed within the widget's visible width? - int w = getClientArea().width; - if (rightToLeft) { - selectionFits = startX - endX <= w; - } else { - selectionFits = endX - startX <= w; - } - - if (selectionFits) { - // show as much of the selection as possible by first showing - // the start of the selection - showLocation(startX, startLine); - // endX value could change if showing startX caused a scroll to occur - endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine); - showLocation(endX, endLine); - } else { - // just show the end of the selection since the selection start - // will not be visible - showLocation(endX, endLine); - } -} -boolean isBidiCaret() { - return BidiUtil.isBidiPlatform(); -} -/** - * Updates the selection and caret position depending on the text change. - * If the selection intersects with the replaced text, the selection is - * reset and the caret moved to the end of the new text. - * If the selection is behind the replaced text it is moved so that the - * same text remains selected. If the selection is before the replaced text - * it is left unchanged. - *

                                - * - * @param startOffset offset of the text change - * @param replacedLength length of text being replaced - * @param newLength length of new text - */ -void updateSelection(int startOffset, int replacedLength, int newLength) { - if (selection.y <= startOffset) { - // selection ends before text change - return; - } - if (selection.x < startOffset) { - // clear selection fragment before text change - internalRedrawRange(selection.x, startOffset - selection.x, true); - } - if (selection.y > startOffset + replacedLength && selection.x < startOffset + replacedLength) { - // clear selection fragment after text change. - // do this only when the selection is actually affected by the - // change. Selection is only affected if it intersects the change (1GDY217). - int netNewLength = newLength - replacedLength; - int redrawStart = startOffset + newLength; - internalRedrawRange(redrawStart, selection.y + netNewLength - redrawStart, true); - } - if (selection.y > startOffset && selection.x < startOffset + replacedLength) { - // selection intersects replaced text. set caret behind text change - internalSetSelection(startOffset + newLength, 0, true); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); - } - else { - // move selection to keep same text selected - internalSetSelection(selection.x + newLength - replacedLength, selection.y - selection.x, true); - // always update the caret location. fixes 1G8FODP - setCaretLocation(); - } -} -/** - * Rewraps all lines - *

                                - * - * @param oldClientAreaWidth client area width before resize - * occurred - */ -void wordWrapResize(int oldClientAreaWidth) { - WrappedContent wrappedContent = (WrappedContent) content; - int newTopIndex; - - // all lines are wrapped and no rewrap required if widget has already - // been visible, client area is now wider and visual (wrapped) line - // count equals logical line count. - if (oldClientAreaWidth != 0 && clientAreaWidth > oldClientAreaWidth && - wrappedContent.getLineCount() == logicalContent.getLineCount()) { - return; - } - wrappedContent.wrapLines(); - - // adjust the top index so that top line remains the same - newTopIndex = content.getLineAtOffset(topOffset); - // topOffset is the beginning of the top line. therefore it - // needs to be adjusted because in a wrapped line this is also - // the end of the preceeding line. - if (newTopIndex < content.getLineCount() - 1 && - topOffset == content.getOffsetAtLine(newTopIndex + 1)) { - newTopIndex++; - } - if (newTopIndex != topIndex) { - ScrollBar verticalBar = getVerticalBar(); - // adjust index and pixel offset manually instead of calling - // setVerticalScrollOffset because the widget does not actually need - // to be scrolled. causes flash otherwise. - verticalScrollOffset += (newTopIndex - topIndex) * getVerticalIncrement(); - // verticalScrollOffset may become negative if first line was - // partially visible and second line was top line. prevent this from - // happening to fix 8503. - if (verticalScrollOffset < 0) { - verticalScrollOffset = 0; - } - topIndex = newTopIndex; - topOffset = content.getOffsetAtLine(topIndex); - if (verticalBar != null) { - verticalBar.setSelection(verticalScrollOffset); - } - } - // caret may be on a different line after a rewrap. - // call setCaretLocation after fixing vertical scroll offset. - setCaretLocation(); - // word wrap may have changed on one of the visible lines - super.redraw(); -} -} diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/todo.gif b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/todo.gif deleted file mode 100644 index 0bbc98a7..00000000 Binary files a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/todo.gif and /dev/null differ diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/undoStack.js b/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/undoStack.js deleted file mode 100644 index eab28efa..00000000 --- a/branches/firebug1.5/sandbox/sandbox/orion_nightly/samples/undoStack.js +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This - * program and the accompanying materials are made available under the terms of - * the Eclipse Public License v1.0 which accompanies this distribution, and is - * available at http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: IBM Corporation - initial API and implementation - ******************************************************************************/ - -var eclipse = eclipse || {}; - -eclipse.UndoStack = (function() { - var Change = (function() { - function Change(offset, text, previousText) { - this.offset = offset; - this.text = text; - this.previousText = previousText; - } - Change.prototype = { - undo: function (editor, select) { - this._doUndoRedo(this.offset, this.previousText, this.text, editor, select); - }, - redo: function (editor, select) { - this._doUndoRedo(this.offset, this.text, this.previousText, editor, select); - }, - _doUndoRedo: function(offset, text, previousText, editor, select) { - editor.setText(text, offset, offset + previousText.length); - if (select) { - editor.setSelection(offset, offset + text.length); - } - } - }; - return Change; - }()); - - var CompoundChange = (function() { - function CompoundChange (selection, caret) { - this.selection = selection; - this.caret = caret; - this.changes = []; - } - CompoundChange.prototype = { - add: function (change) { - this.changes.push(change); - }, - undo: function (editor, select) { - for (var i=this.changes.length - 1; i >= 0; i--) { - this.changes[i].undo(editor, false); - } - if (select) { - var start = this.selection.start; - var end = this.selection.end; - editor.setSelection(this.caret ? start : end, this.caret ? end : start); - } - }, - redo: function (editor, select) { - for (var i = 0; i < this.changes.length; i++) { - this.changes[i].redo(editor, false); - } - if (select) { - var start = this.selection.start; - var end = this.selection.end; - editor.setSelection(this.caret ? start : end, this.caret ? end : start); - } - } - }; - return CompoundChange; - }()); - - function UndoStack (editor, size) { - this.editor = editor; - this.size = size !== undefined ? size : 100; - this.reset(); - editor.addEventListener("ModelChanging", this, this._onModelChanging); - editor.addEventListener("Destroy", this, this._onDestroy); - } - UndoStack.prototype = { - add: function (change) { - if (this.compoundChange) { - this.compoundChange.add(change); - } else { - var length = this.stack.length; - this.stack.splice(this.index, length-this.index, change); - this.index++; - if (this.stack.length > this.size) { - this.stack.shift(); - this.index--; - this.cleanIndex--; - } - } - }, - markClean: function() { - this.endCompoundChange(); - this._commitUndo(); - this.cleanIndex = this.index; - }, - isClean: function() { - return this.cleanIndex === this.getSize().undo; - }, - canUndo: function() { - return this.getSize().undo > 0; - }, - canRedo: function() { - return this.getSize().redo > 0; - }, - endCompoundChange: function() { - this.compoundChange = undefined; - }, - getSize: function() { - var index = this.index; - var length = this.stack.length; - if (this._undoStart !== undefined) { - index++; - } - return {undo: index, redo: (length - index)}; - }, - undo: function() { - this._commitUndo(); - if (this.index <= 0) { - return false; - } - var change = this.stack[--this.index]; - this._ignoreUndo = true; - change.undo(this.editor, true); - this._ignoreUndo = false; - return true; - }, - redo: function() { - this._commitUndo(); - if (this.index >= this.stack.length) { - return false; - } - var change = this.stack[this.index++]; - this._ignoreUndo = true; - change.redo(this.editor, true); - this._ignoreUndo = false; - return true; - }, - reset: function() { - this.index = this.cleanIndex = 0; - this.stack = []; - this._undoStart = undefined; - this._undoText = ""; - this._ignoreUndo = false; - this._compoundChange = undefined; - }, - startCompoundChange: function() { - var change = new CompoundChange(this.editor.getSelection(), this.editor.getCaretOffset()); - this.add(change); - this.compoundChange = change; - }, - _commitUndo: function () { - if (this._undoStart !== undefined) { - if (this._undoStart < 0) { - this.add(new Change(-this._undoStart, "", this._undoText, "")); - } else { - this.add(new Change(this._undoStart, this._undoText, "")); - } - this._undoStart = undefined; - this._undoText = ""; - } - }, - _onDestroy: function() { - this.editor.removeEventListener("ModelChanging", this, this._onModelChanging); - this.editor.removeEventListener("Destroy", this, this._onDestroy); - }, - _onModelChanging: function(e) { - var newText = e.text; - var start = e.start; - var removedCharCount = e.removedCharCount; - var addedCharCount = e.addedCharCount; - if (this._ignoreUndo) { - return; - } - if (this._undoStart !== undefined && - !((addedCharCount === 1 && removedCharCount === 0 && start === this._undoStart + this._undoText.length) || - (addedCharCount === 0 && removedCharCount === 1 && (((start + 1) === -this._undoStart) || (start === -this._undoStart))))) - { - this._commitUndo(); - } - if (!this.compoundChange) { - if (addedCharCount === 1 && removedCharCount === 0) { - if (this._undoStart === undefined) { - this._undoStart = start; - } - this._undoText = this._undoText + newText; - return; - } else if (addedCharCount === 0 && removedCharCount === 1) { - var deleting = this._undoText.length > 0 && -this._undoStart === start; - this._undoStart = -start; - if (deleting) { - this._undoText = this._undoText + this.editor.getText(start, start + removedCharCount); - } else { - this._undoText = this.editor.getText(start, start + removedCharCount) + this._undoText; - } - return; - } - } - this.add(new Change(start, newText, this.editor.getText(start, start + removedCharCount))); - } - }; - return UndoStack; -}()); \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/requireNamespace/namespace.js b/branches/firebug1.5/sandbox/sandbox/requireNamespace/namespace.js deleted file mode 100644 index 224cfb6a..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireNamespace/namespace.js +++ /dev/null @@ -1,86 +0,0 @@ -require.def("scope", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { // no scope needed once lib is a "top-level" module -// ************************************************************************************************ - -console.log("loading Scope module"); - -exports.create = function() -{ - var newScope = {}; - - var namespace = newScope.namespace = function(namespace, source) - { - var set = !!source, - ns = namespace.replace("/", ".").split("."), - object = newScope; - - for(var i=0, l=ns.length, n; n=ns[i]; i++) - { - if(set) - object[n] = i < l-1 ? object[n] || {} : source; - - else if(!object[n]) - error('Namespace not found: ' + namespace); - - object = object[n]; - } - - return object; - }; - - newScope.include = function(name) - { - var m = require(name); - for (var n in m) - newScope[n] = m[n]; - }; - - newScope.imports = function(name) - { - namespace(name, require(name)); - }; - - return newScope; -}; - - - - - - - - - - - - - - var moduleScope = cjsModule.scope = { - include: function(moduleName) { - var includedModule = req(moduleName); - for (var name in includedModule) { - if (includedModule.hasOwnProperty(name)) { - moduleScope[name] = includedModule[name]; - } - } - }, - imports: function(namespace) - { - NS(namespace, require(namespace), moduleScope); - } - }; - - - - - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Panel.js b/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Panel.js deleted file mode 100644 index 7da7f67d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Panel.js +++ /dev/null @@ -1,44 +0,0 @@ -require.def("Firebug/Panel", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module", - "Lib", - "Lib/Event" -], -// ************************************************************************************************ -function(require, exports, module) { with (module.scope) { -// ************************************************************************************************ - -include("Lib"); // Lib.extend avaiable as extend -include("Lib/Event"); // Lib.Event.addEvent avaiable as addEvent - -console.log("loading Firebug.Panel module"); - -var Panel = -{ - panelNode: null, - - initialize: function() - { - console.log("calling Firebug.Panel.initialize"); - - // dummy call just to demonstrate loading small pieces of Lib - addEvent(this.panelNode, "click"); - }, - - show: function() { - console.log("calling Firebug.Panel.show"); - }, - - hide: function() { - console.log("calling Firebug.Panel.hide"); - } -}; - -return Panel; - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Script.js b/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Script.js deleted file mode 100644 index 861ca4fe..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/Firebug/Script.js +++ /dev/null @@ -1,37 +0,0 @@ -require.def("Firebug/Script", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module", - "Lib", - "Firebug/Panel" -], -// ************************************************************************************************ -function(require, exports, module) { with (module.scope) { -// ************************************************************************************************ - -include("Lib"); // Lib.extend avaiable as extend - -imports("Firebug/Panel"); // Add Firebug.Panel to the module scope - -console.log("loading Firebug.Script module"); - -var Script = extend(Firebug.Panel, -{ - initialize: function() { - Firebug.Panel.initialize.apply(this, arguments); - - console.log("calling Firebug.Script.initialize"); - }, - - helper: function() { - console.log("calling Firebug.Script.helper"); - } -}); - -return Script; - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib.js b/branches/firebug1.5/sandbox/sandbox/requireScope/Lib.js deleted file mode 100644 index f9cb08a0..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib.js +++ /dev/null @@ -1,34 +0,0 @@ -require.def("Lib", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { // no scope needed once lib is a "top-level" module -// ************************************************************************************************ - -console.log("loading Lib module"); - -exports.extend = function(l, r) -{ - var newOb = {}; - for (var n in l) - newOb[n] = l[n]; - for (var n in r) - newOb[n] = r[n]; - return newOb; -}; - -exports.append = function(l, r) -{ - for (var n in r) - l[n] = r[n]; - - return l; -}; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Domplate.js b/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Domplate.js deleted file mode 100644 index d4c9ce14..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Domplate.js +++ /dev/null @@ -1,24 +0,0 @@ -require.def("lib/event", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { // no scope needed once lib is a "top-level" module -// ************************************************************************************************ - -console.log("loading lib.event module"); - -exports.addEvent = function() { - console.log("calling lib.event.addEvent"); -}; - -exports.removeEvent = function() { - console.log("calling lib.event.removeEvent"); -}; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Event.js b/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Event.js deleted file mode 100644 index 76e809f7..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/Lib/Event.js +++ /dev/null @@ -1,24 +0,0 @@ -require.def("Lib/Event", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { // no scope needed once lib is a "top-level" module -// ************************************************************************************************ - -console.log("loading Lib.Event module"); - -exports.addEvent = function() { - console.log("calling Lib.Event.addEvent"); -}; - -exports.removeEvent = function() { - console.log("calling Lib.Event.removeEvent"); -}; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/require.js b/branches/firebug1.5/sandbox/sandbox/requireScope/require.js deleted file mode 100644 index c4d7999b..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/require.js +++ /dev/null @@ -1,1745 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//laxbreak is true to allow build pragmas to change some statements. -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */ -/*global window: false, document: false, navigator: false, -setTimeout: false, traceDeps: true, clearInterval: false, self: false, -setInterval: false, importScripts: false, jQuery: false */ - - -var require, define; -(function () { - //Change this version number for each release. - var version = "0.14.5", - empty = {}, s, - i, defContextName = "_", contextLoads = [], - scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState, - readyRegExp = /^(complete|loaded)$/, - commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, - cjsRequireRegExp = /require\(["']([\w-_\.\/]+)["']\)/g, - main, - isBrowser = !!(typeof window !== "undefined" && navigator && document), - isWebWorker = !isBrowser && typeof importScripts !== "undefined", - ostring = Object.prototype.toString, - ap = Array.prototype, - aps = ap.slice, scrollIntervalId, req, baseElement, - defQueue = [], useInteractive = false, currentlyAddingScript; - - function isFunction(it) { - return ostring.call(it) === "[object Function]"; - } - - //Check for an existing version of require. If so, then exit out. Only allow - //one version of require to be active in a page. However, allow for a require - //config object, just exit quickly if require is an actual function. - if (typeof require !== "undefined") { - if (isFunction(require)) { - return; - } else { - //assume it is a config object. - cfg = require; - } - } - - /** - * Calls a method on a plugin. The obj object should have two property, - * name: the name of the method to call on the plugin - * args: the arguments to pass to the plugin method. - */ - function callPlugin(prefix, context, obj) { - //Call the plugin, or load it. - var plugin = s.plugins.defined[prefix], waiting; - if (plugin) { - plugin[obj.name].apply(null, obj.args); - } else { - //Put the call in the waiting call BEFORE requiring the module, - //since the require could be synchronous in some environments, - //like builds - waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []); - waiting.push(obj); - - //Load the module - req(["require/" + prefix], context.contextName); - } - } - - /** - * Convenience method to call main for a require.def call that was put on - * hold in the defQueue. - */ - function callDefMain(args, context) { - main.apply(req, args); - //Mark the module loaded. Must do it here in addition - //to doing it in require.def in case a script does - //not call require.def - context.loaded[args[0]] = true; - } - - /** - * Used to set up package paths from a packagePaths or packages config object. - * @param {Object} packages the object to store the new package config - * @param {Array} currentPackages an array of packages to configure - * @param {String} [dir] a prefix dir to use. - */ - function configurePackageDir(packages, currentPackages, dir) { - var i, location, pkgObj; - for (i = 0; (pkgObj = currentPackages[i]); i++) { - pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj; - location = pkgObj.location; - - //Add dir to the path, but avoid paths that start with a slash - //or have a colon (indicates a protocol) - if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) { - pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name); - } - - //Normalize package paths. - pkgObj.location = pkgObj.location || pkgObj.name; - pkgObj.lib = pkgObj.lib || "lib"; - pkgObj.main = pkgObj.main || "main"; - - packages[pkgObj.name] = pkgObj; - } - } - - /** - * Determine if priority loading is done. If so clear the priorityWait - */ - function isPriorityDone(context) { - var priorityDone = true, - priorityWait = context.config.priorityWait, - priorityName, i; - if (priorityWait) { - for (i = 0; (priorityName = priorityWait[i]); i++) { - if (!context.loaded[priorityName]) { - priorityDone = false; - break; - } - } - if (priorityDone) { - delete context.config.priorityWait; - } - } - return priorityDone; - } - - /** - * Resumes tracing of dependencies and then checks if everything is loaded. - */ - function resume(context) { - var args, i, paused = s.paused; - if (context.scriptCount <= 0) { - //Synchronous envs will push the number below zero with the - //decrement above, be sure to set it back to zero for good measure. - //require() calls that also do not end up loading scripts could - //push the number negative too. - context.scriptCount = 0; - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - req.onError(new Error('Mismatched anonymous require.def modules')); - } else { - callDefMain(args, context); - } - } - - //Skip the resume if current context is in priority wait. - if (context.config.priorityWait && !isPriorityDone(context)) { - return; - } - - if (paused.length) { - for (i = 0; (args = paused[i]); i++) { - req.checkDeps.apply(req, args); - } - } - - req.checkLoaded(s.ctxName); - } - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - */ - require = function (deps, callback, contextName, relModuleName) { - var context, config; - if (typeof deps === "string" && !isFunction(callback)) { - //Just return the module wanted. In this scenario, the - //second arg (if passed) is just the contextName. - return require.get(deps, callback, contextName, relModuleName); - } - // Dependencies first - if (!require.isArray(deps)) { - // deps is a config object - config = deps; - if (require.isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = contextName; - contextName = relModuleName; - relModuleName = arguments[4]; - } else { - deps = []; - } - } - - main(null, deps, callback, config, contextName, relModuleName); - - //If the require call does not trigger anything new to load, - //then resume the dependency processing. Context will be undefined - //on first run of require. - context = s.contexts[(contextName || (config && config.context) || s.ctxName)]; - if (context && context.scriptCount === 0) { - resume(context); - } - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - }; - - //Alias for caja compliance internally - - //specifically: "Dynamically computed names should use require.async()" - //even though this spec isn't really decided on. - //Since it is here, use this alias to make typing shorter. - req = require; - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * If you do override it, this method should *always* throw an error - * to stop the execution flow correctly. Otherwise, other weird errors - * will occur. - * @param {Error} err the error object. - */ - req.onError = function (err) { - throw err; - }; - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = req.def = function (name, deps, callback, contextName) { - var i, scripts, script, node = currentlyAddingScript; - - //Allow for anonymous functions - if (typeof name !== 'string') { - //Adjust args appropriately - contextName = callback; - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!req.isArray(deps)) { - contextName = callback; - callback = deps; - deps = []; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!name && !deps.length && req.isFunction(callback)) { - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies. - callback - .toString() - .replace(commentRegExp, "") - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and such, so always add those as dependencies. - //This is a bit wasteful for RequireJS modules that do not need - //an exports or module object, but erring on side of safety. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = ["require", "exports", "module"].concat(deps); - } - - //If in IE 6-8 and hit an anonymous require.def call, do the interactive/ - //currentlyAddingScript scripts stuff. - if (!name && useInteractive) { - scripts = document.getElementsByTagName('script'); - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - if (script.readyState === 'interactive') { - node = script; - break; - } - } - if (!node) { - req.onError(new Error("ERROR: No matching script interactive for " + callback)); - } - - name = node.getAttribute("data-requiremodule"); - } - - if (typeof name === 'string') { - //Do not try to auto-register a jquery later. - //Do this work here and in main, since for IE/useInteractive, this function - //is the earliest touch-point. - s.contexts[s.ctxName].jQueryDef = (name === "jquery"); - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. - defQueue.push([name, deps, callback, null, contextName]); - }; - - main = function (name, deps, callback, config, contextName, relModuleName) { - //Grab the context, or create a new one for the given context name. - var context, newContext, loaded, pluginPrefix, - canSetContext, prop, newLength, outDeps, mods, paths, index, i, - deferMods, deferModArgs, lastModArg, waitingName, packages, - packagePaths; - - contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName); - context = s.contexts[contextName]; - - if (name) { - // Pull off any plugin prefix. - index = name.indexOf("!"); - if (index !== -1) { - pluginPrefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } else { - //Could be that the plugin name should be auto-applied. - //Used by i18n plugin to enable anonymous i18n modules, but - //still associating the auto-generated name with the i18n plugin. - pluginPrefix = context.defPlugin[name]; - } - - - //If module already defined for context, or already waiting to be - //evaluated, leave. - waitingName = context.waiting[name]; - if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) { - return; - } - } - - if (contextName !== s.ctxName) { - //If nothing is waiting on being loaded in the current context, - //then switch s.ctxName to current contextName. - loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded); - canSetContext = true; - if (loaded) { - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - canSetContext = false; - break; - } - } - } - } - if (canSetContext) { - s.ctxName = contextName; - } - } - - if (!context) { - newContext = { - contextName: contextName, - config: { - waitSeconds: 7, - baseUrl: s.baseUrl || "./", - paths: {}, - packages: {} - }, - waiting: [], - specified: { - "require": true, - "exports": true, - "module": true - }, - loaded: {}, - scriptCount: 0, - urlFetched: {}, - defPlugin: {}, - defined: {}, - modifiers: {} - }; - - if (s.plugins.newContext) { - s.plugins.newContext(newContext); - } - - context = s.contexts[contextName] = newContext; - } - - //If have a config object, update the context's config object with - //the config values. - if (config) { - //Make sure the baseUrl ends in a slash. - if (config.baseUrl) { - if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") { - config.baseUrl += "/"; - } - } - - //Save off the paths and packages since they require special processing, - //they are additive. - paths = context.config.paths; - packages = context.config.packages; - - //Mix in the config values, favoring the new values over - //existing ones in context.config. - req.mixin(context.config, config, true); - - //Adjust paths if necessary. - if (config.paths) { - for (prop in config.paths) { - if (!(prop in empty)) { - paths[prop] = config.paths[prop]; - } - } - context.config.paths = paths; - } - - packagePaths = config.packagePaths; - if (packagePaths || config.packages) { - //Convert packagePaths into a packages config. - if (packagePaths) { - for (prop in packagePaths) { - if (!(prop in empty)) { - configurePackageDir(packages, packagePaths[prop], prop); - } - } - } - - //Adjust packages if necessary. - if (config.packages) { - configurePackageDir(packages, config.packages); - } - - //Done with modifications, assing packages back to context config - context.config.packages = packages; - } - - //If priority loading is in effect, trigger the loads now - if (config.priority) { - //Create a separate config property that can be - //easily tested for config priority completion. - //Do this instead of wiping out the config.priority - //in case it needs to be inspected for debug purposes later. - req(config.priority); - context.config.priorityWait = config.priority; - } - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (config.deps || config.callback) { - req(config.deps || [], config.callback); - } - - //Set up ready callback, if asked. Useful when require is defined as a - //config object before require.js is loaded. - if (config.ready) { - req.ready(config.ready); - } - - //If it is just a config block, nothing else, - //then return. - if (!deps) { - return; - } - } - - //Normalize dependency strings: need to determine if they have - //prefixes and to also normalize any relative paths. Replace the deps - //array of strings with an array of objects. - if (deps) { - outDeps = deps; - deps = []; - for (i = 0; i < outDeps.length; i++) { - deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context); - } - } - - //Store the module for later evaluation - newLength = context.waiting.push({ - name: name, - deps: deps, - callback: callback - }); - - if (name) { - //Store index of insertion for quick lookup - context.waiting[name] = newLength - 1; - - //Mark the module as specified so no need to fetch it again. - //Important to set specified here for the - //pause/resume case where there are multiple modules in a file. - context.specified[name] = true; - - //Load any modifiers for the module. - mods = context.modifiers[name]; - if (mods) { - req(mods, contextName); - deferMods = mods.__deferMods; - if (deferMods) { - for (i = 0; i < deferMods.length; i++) { - deferModArgs = deferMods[i]; - - //Add the context name to the def call. - lastModArg = deferModArgs[deferModArgs.length - 1]; - if (lastModArg === undefined) { - deferModArgs[deferModArgs.length - 1] = contextName; - } else if (typeof lastModArg === "string") { - deferMods.push(contextName); - } - - require.def.apply(require, deferModArgs); - } - } - } - } - - //If the callback is not an actual function, it means it already - //has the definition of the module as a literal value. - if (name && callback && !req.isFunction(callback)) { - context.defined[name] = callback; - } - - //If a pluginPrefix is available, call the plugin, or load it. - if (pluginPrefix) { - callPlugin(pluginPrefix, context, { - name: "require", - args: [name, deps, callback, context] - }); - } - - //Hold on to the module until a script load or other adapter has finished - //evaluating the whole file. This helps when a file has more than one - //module in it -- dependencies are not traced and fetched until the whole - //file is processed. - s.paused.push([pluginPrefix, name, deps, context]); - - //Set loaded here for modules that are also loaded - //as part of a layer, where onScriptLoad is not fired - //for those cases. Do this after the inline define and - //dependency tracing is done. - //Also check if auto-registry of jQuery needs to be skipped. - if (name) { - context.loaded[name] = true; - context.jQueryDef = (name === "jquery"); - } - }; - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - req.mixin = function (target, source, force) { - for (var prop in source) { - if (!(prop in empty) && (!(prop in target) || force)) { - target[prop] = source[prop]; - } - } - return req; - }; - - req.version = version; - - //Set up page state. - s = req.s = { - ctxName: defContextName, - contexts: {}, - paused: [], - plugins: { - defined: {}, - callbacks: {}, - waiting: {} - }, - //Stores a list of URLs that should not get async script tag treatment. - skipAsync: {}, - isBrowser: isBrowser, - isPageLoaded: !isBrowser, - readyCalls: [], - doc: isBrowser ? document : null - }; - - req.isBrowser = s.isBrowser; - if (isBrowser) { - s.head = document.getElementsByTagName("head")[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName("base")[0]; - if (baseElement) { - s.head = baseElement.parentNode; - } - } - - /** - * Sets up a plugin callback name. Want to make it easy to test if a plugin - * needs to be called for a certain lifecycle event by testing for - * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event - * if there is a real plugin that registers for it. - */ - function makePluginCallback(name, returnOnTrue) { - var cbs = s.plugins.callbacks[name] = []; - s.plugins[name] = function () { - for (var i = 0, cb; (cb = cbs[i]); i++) { - if (cb.apply(null, arguments) === true && returnOnTrue) { - return true; - } - } - return false; - }; - } - - /** - * Registers a new plugin for require. - */ - req.plugin = function (obj) { - var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks, - waiting = s.plugins.waiting[prefix], generics, - defined = s.plugins.defined, contexts = s.contexts, context; - - //Do not allow redefinition of a plugin, there may be internal - //state in the plugin that could be lost. - if (defined[prefix]) { - return req; - } - - //Save the plugin. - defined[prefix] = obj; - - //Set up plugin callbacks for methods that need to be generic to - //require, for lifecycle cases where it does not care about a particular - //plugin, but just that some plugin work needs to be done. - generics = ["newContext", "isWaiting", "orderDeps"]; - for (i = 0; (prop = generics[i]); i++) { - if (!s.plugins[prop]) { - makePluginCallback(prop, prop === "isWaiting"); - } - cbs[prop].push(obj[prop]); - } - - //Call newContext for any contexts that were already created. - if (obj.newContext) { - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - obj.newContext(context); - } - } - } - - //If there are waiting requests for a plugin, execute them now. - if (waiting) { - for (i = 0; (call = waiting[i]); i++) { - if (obj[call.name]) { - obj[call.name].apply(null, call.args); - } - } - delete s.plugins.waiting[prefix]; - } - - return req; - }; - - /** - * As of jQuery 1.4.3, it supports a readyWait property that will hold off - * calling jQuery ready callbacks until all scripts are loaded. Be sure - * to track it if readyWait is available. Also, since jQuery 1.4.3 does - * not register as a module, need to do some global inference checking. - * Even if it does register as a module, not guaranteed to be the precise - * name of the global. If a jQuery is tracked for this context, then go - * ahead and register it as a module too, if not already in process. - */ - function jQueryCheck(context, jqCandidate) { - if (!context.jQuery) { - var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null); - if ($ && "readyWait" in $) { - context.jQuery = $; - - //Manually create a "jquery" module entry if not one already - //or in process. - if (!context.defined.jquery && !context.jQueryDef) { - context.defined.jquery = $; - } - - //Make sure - if (context.scriptCount) { - $.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - } - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - * @param {Object} context the context object - */ - req.completeLoad = function (moduleName, context) { - //If there is a waiting require.def call - var args; - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - break; - } else if (args[0] === moduleName) { - //Found matching require.def call for this script! - break; - } else { - //Some other named require.def call, most likely the result - //of a build layer that included many require.def calls. - callDefMain(args, context); - } - } - if (args) { - callDefMain(args, context); - } - - //Mark the script as loaded. Note that this can be different from a - //moduleName that maps to a require.def call. This line is important - //for traditional browser scripts. - context.loaded[moduleName] = true; - - //If a global jQuery is defined, check for it. Need to do it here - //instead of main() since stock jQuery does not register as - //a module via define. - jQueryCheck(context); - - context.scriptCount -= 1; - resume(context); - }; - - /** - * Legacy function, remove at some point - */ - req.pause = req.resume = function () {}; - - /** - * Trace down the dependencies to see if they are loaded. If not, trigger - * the load. - * @param {String} pluginPrefix the plugin prefix, if any associated with the name. - * - * @param {String} name: the name of the module that has the dependencies. - * - * @param {Array} deps array of dependencies. - * - * @param {Object} context: the loading context. - * - * @private - */ - req.checkDeps = function (pluginPrefix, name, deps, context) { - //Figure out if all the modules are loaded. If the module is not - //being loaded or already loaded, add it to the "to load" list, - //and request it to be loaded. - var i, dep; - - if (pluginPrefix) { - callPlugin(pluginPrefix, context, { - name: "checkDeps", - args: [name, deps, context] - }); - } else { - for (i = 0; (dep = deps[i]); i++) { - if (!context.specified[dep.fullName]) { - context.specified[dep.fullName] = true; - - //Reset the start time to use for timeouts - context.startTime = (new Date()).getTime(); - - //If a plugin, call its load method. - if (dep.prefix) { - callPlugin(dep.prefix, context, { - name: "load", - args: [dep.name, context.contextName] - }); - } else { - req.load(dep.name, context.contextName); - } - } - } - } - }; - - /** - * Register a module that modifies another module. The modifier will - * only be called once the target module has been loaded. - * - * First syntax: - * - * require.modify({ - * "some/target1": "my/modifier1", - * "some/target2": "my/modifier2", - * }); - * - * With this syntax, the my/modifier1 will only be loaded when - * "some/target1" is loaded. - * - * Second syntax, defining a modifier. - * - * require.modify("some/target1", "my/modifier", - * ["some/target1", "some/other"], - * function (target, other) { - * //Modify properties of target here. - * Only properties of target can be modified, but - * target cannot be replaced. - * } - * ); - */ - req.modify = function (target, name, deps, callback, contextName) { - var prop, modifier, list, - cName = (typeof target === "string" ? contextName : name) || s.ctxName, - context = s.contexts[cName], - mods = context.modifiers; - - if (typeof target === "string") { - //A modifier module. - //First store that it is a modifier. - list = mods[target] || (mods[target] = []); - if (!list[name]) { - list.push(name); - list[name] = true; - } - - //Trigger the normal module definition logic if the target - //is already in the system. - if (context.specified[target]) { - req.def(name, deps, callback, contextName); - } else { - //Hold on to the execution/dependency checks for the modifier - //until the target is fetched. - (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]); - } - } else { - //A list of modifiers. Save them for future reference. - for (prop in target) { - if (!(prop in empty)) { - //Store the modifier for future use. - modifier = target[prop]; - list = mods[prop] || (context.modifiers[prop] = []); - if (!list[modifier]) { - list.push(modifier); - list[modifier] = true; - - if (context.specified[prop]) { - //Load the modifier right away. - req([modifier], cName); - } - } - } - } - } - }; - - req.isArray = function (it) { - return ostring.call(it) === "[object Array]"; - }; - - req.isFunction = isFunction; - - /** - * Gets one module's exported value. This method is used by require(). - * It is broken out as a separate function to allow a host environment - * shim to overwrite this function with something appropriate for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} [contextName] the name of the context to use. Uses - * default context if no contextName is provided. You should never - * pass the contextName explicitly -- it is handled by the require() code. - * @param {String} [relModuleName] a module name to use for relative - * module name lookups. You should never pass this argument explicitly -- - * it is handled by the require() code. - * - * @returns {Object} the exported module value. - */ - req.get = function (moduleName, contextName, relModuleName) { - if (moduleName === "require" || moduleName === "exports" || moduleName === "module") { - req.onError(new Error("Explicit require of " + moduleName + " is not allowed.")); - } - contextName = contextName || s.ctxName; - - var ret, context = s.contexts[contextName]; - - //Normalize module name, if it contains . or .. - moduleName = req.normalizeName(moduleName, relModuleName, context); - - ret = context.defined[moduleName]; - if (ret === undefined) { - req.onError(new Error("require: module name '" + - moduleName + - "' has not been loaded yet for context: " + - contextName)); - } - return ret; - }; - - /** - * Makes the request to load a module. May be an async load depending on - * the environment and the circumstance of the load call. Override this - * method in a host environment shim to do something specific for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} contextName the name of the context to use. - */ - req.load = function (moduleName, contextName) { - var context = s.contexts[contextName], - urlFetched = context.urlFetched, - loaded = context.loaded, url; - s.isDone = false; - - //Only set loaded to false for tracking if it has not already been set. - if (!loaded[moduleName]) { - loaded[moduleName] = false; - } - - if (contextName !== s.ctxName) { - //Not in the right context now, hold on to it until - //the current context finishes all its loading. - contextLoads.push(arguments); - } else { - //First derive the path name for the module. - url = req.nameToUrl(moduleName, null, contextName); - if (!urlFetched[url]) { - context.scriptCount += 1; - req.attach(url, contextName, moduleName); - urlFetched[url] = true; - - //If tracking a jQuery, then make sure its readyWait - //is incremented to prevent its ready callbacks from - //triggering too soon. - if (context.jQuery && !context.jQueryIncremented) { - context.jQuery.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - }; - - req.jsExtRegExp = /\.js$/; - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @param {Object} context - * @returns {String} normalized name - */ - req.normalizeName = function (name, baseName, context) { - //Adjust any relative paths. - var part; - if (name.charAt(0) === ".") { - if (!baseName) { - req.onError(new Error("Cannot normalize module name: " + - name + - ", no relative module name available.")); - } - - if (context.config.packages[baseName]) { - //If the baseName is a package name, then just treat it as one - //name to concat the name with. - baseName = [baseName]; - } else { - //Convert baseName to array, and lop off the last part, - //so that . matches that "directory" and not name of the baseName's - //module. For instance, baseName of "one/two/three", maps to - //"one/two/three.js", but we want the directory, "one/two" for - //this normalization. - baseName = baseName.split("/"); - baseName = baseName.slice(0, baseName.length - 1); - } - - name = baseName.concat(name.split("/")); - for (i = 0; (part = name[i]); i++) { - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - name.splice(i - 1, 2); - i -= 2; - } - } - name = name.join("/"); - } - return name; - }; - - /** - * Splits a name into a possible plugin prefix and - * the module name. If baseName is provided it will - * also normalize the name via require.normalizeName() - * - * @param {String} name the module name - * @param {String} [baseName] base name that name is - * relative to. - * @param {Object} context - * - * @returns {Object} with properties, 'prefix' (which - * may be null), 'name' and 'fullName', which is a combination - * of the prefix (if it exists) and the name. - */ - req.splitPrefix = function (name, baseName, context) { - var index = name.indexOf("!"), prefix = null; - if (index !== -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - - //Account for relative paths if there is a base name. - name = req.normalizeName(name, baseName, context); - - return { - prefix: prefix, - name: name, - fullName: prefix ? prefix + "!" + name : name - }; - }; - - /** - * Converts a module name to a file path. - */ - req.nameToUrl = function (moduleName, ext, contextName, relModuleName) { - var paths, packages, pkg, pkgPath, syms, i, parentModule, url, - context = s.contexts[contextName], - config = context.config; - - //Normalize module name if have a base relative module name to work from. - moduleName = req.normalizeName(moduleName, relModuleName, context); - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file. - //The slash is important for protocol-less URLs as well as full paths. - if (moduleName.indexOf(":") !== -1 || moduleName.charAt(0) === '/' || req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext ? ext : ""); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - packages = config.packages; - - syms = moduleName.split("/"); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i--) { - parentModule = syms.slice(0, i).join("/"); - if (paths[parentModule]) { - syms.splice(0, i, paths[parentModule]); - break; - } else if ((pkg = packages[parentModule])) { - //pkg can have just a string value to the path - //or can be an object with props: - //main, lib, name, location. - pkgPath = pkg.location + '/' + pkg.lib; - //If module name is just the package name, then looking - //for the main module. - if (moduleName === pkg.name) { - pkgPath += '/' + pkg.main; - } - syms.splice(0, i, pkgPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join("/") + (ext || ".js"); - url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url; - } - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }; - - /** - * Checks if all modules for a context are loaded, and if so, evaluates the - * new ones in right dependency order. - * - * @private - */ - req.checkLoaded = function (contextName) { - var context = s.contexts[contextName || s.ctxName], - waitInterval = context.config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - loaded, defined = context.defined, - modifiers = context.modifiers, waiting, noLoads = "", - hasLoadedProp = false, stillLoading = false, prop, - - pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps, - - i, module, allDone, loads, loadArgs, err; - - //If already doing a checkLoaded call, - //then do not bother checking loaded state. - if (context.isCheckLoaded) { - return; - } - - //Determine if priority loading is done. If so clear the priority. If - //not, then do not check - if (context.config.priorityWait) { - if (isPriorityDone(context)) { - //Call resume, since it could have - //some waiting dependencies to trace. - resume(context); - } else { - return; - } - } - - //Signal that checkLoaded is being require, so other calls that could be triggered - //by calling a waiting callback that then calls require and then this function - //should not proceed. At the end of this function, if there are still things - //waiting, then checkLoaded will be called again. - context.isCheckLoaded = true; - - //Grab waiting and loaded lists here, since it could have changed since - //this function was first called. - waiting = context.waiting; - loaded = context.loaded; - - //See if anything is still in flight. - for (prop in loaded) { - if (!(prop in empty)) { - hasLoadedProp = true; - if (!loaded[prop]) { - if (expired) { - noLoads += prop + " "; - } else { - stillLoading = true; - break; - } - } - } - } - - //Check for exit conditions. - if (!hasLoadedProp && !waiting.length - && (!pIsWaiting || !pIsWaiting(context)) - ) { - //If the loaded object had no items, then the rest of - //the work below does not need to be done. - context.isCheckLoaded = false; - return; - } - if (expired && noLoads) { - //If wait time expired, throw error of unloaded modules. - err = new Error("require.js load timeout for modules: " + noLoads); - err.requireType = "timeout"; - err.requireModules = noLoads; - req.onError(err); - } - if (stillLoading) { - //Something is still waiting to load. Wait for it. - context.isCheckLoaded = false; - if (isBrowser || isWebWorker) { - setTimeout(function () { - req.checkLoaded(contextName); - }, 50); - } - return; - } - - //Order the dependencies. Also clean up state because the evaluation - //of modules might create new loading tasks, so need to reset. - //Be sure to call plugins too. - context.waiting = []; - context.loaded = {}; - - //Call plugins to order their dependencies, do their - //module definitions. - if (pOrderDeps) { - pOrderDeps(context); - } - - //Before defining the modules, give priority treatment to any modifiers - //for modules that are already defined. - for (prop in modifiers) { - if (!(prop in empty)) { - if (defined[prop]) { - req.execModifiers(prop, {}, waiting, context); - } - } - } - - //Define the modules, doing a depth first search. - for (i = 0; (module = waiting[i]); i++) { - req.exec(module, {}, waiting, context); - } - - //Indicate checkLoaded is now done. - context.isCheckLoaded = false; - - if (context.waiting.length - || (pIsWaiting && pIsWaiting(context)) - ) { - //More things in this context are waiting to load. They were probably - //added while doing the work above in checkLoaded, calling module - //callbacks that triggered other require calls. - req.checkLoaded(contextName); - } else if (contextLoads.length) { - //Check for other contexts that need to load things. - //First, make sure current context has no more things to - //load. After defining the modules above, new require calls - //could have been made. - loaded = context.loaded; - allDone = true; - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - allDone = false; - break; - } - } - } - - if (allDone) { - s.ctxName = contextLoads[0][1]; - loads = contextLoads; - //Reset contextLoads in case some of the waiting loads - //are for yet another context. - contextLoads = []; - for (i = 0; (loadArgs = loads[i]); i++) { - req.load.apply(req, loadArgs); - } - } - } else { - //Make sure we reset to default context. - s.ctxName = defContextName; - s.isDone = true; - if (req.callReady) { - req.callReady(); - } - } - }; - - /** - * Helper function that creates a setExports function for a "module" - * CommonJS dependency. Do this here to avoid creating a closure that - * is part of a loop in require.exec. - */ - function makeSetExports(moduleObj) { - return function (exports) { - moduleObj.exports = exports; - }; - } - - function makeContextModuleFunc(name, contextName, moduleName) { - return function () { - //A version of a require function that forces a contextName value - //and also passes a moduleName value for items that may need to - //look up paths relative to the moduleName - var args = [].concat(aps.call(arguments, 0)); - args.push(contextName, moduleName); - return (name ? require[name] : require).apply(null, args); - }; - } - - /** - * Helper function that creates a require function object to give to - * modules that ask for it as a dependency. It needs to be specific - * per module because of the implication of path mappings that may - * need to be relative to the module name. - */ - function makeRequire(context, moduleName) { - var contextName = context.contextName, - modRequire = makeContextModuleFunc(null, contextName, moduleName); - - req.mixin(modRequire, { - modify: makeContextModuleFunc("modify", contextName, moduleName), - def: makeContextModuleFunc("def", contextName, moduleName), - get: makeContextModuleFunc("get", contextName, moduleName), - nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName), - ready: req.ready, - context: context, - config: context.config, - isBrowser: s.isBrowser - }); - return modRequire; - } - - /** - * Executes the modules in the correct order. - * - * @private - */ - req.exec = function (module, traced, waiting, context) { - //Some modules are just plain script files, abddo not have a formal - //module definition, - if (!module) { - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - } - - var name = module.name, cb = module.callback, deps = module.deps, j, dep, - defined = context.defined, ret, args = [], depModule, cjsModule, - usingExports = false, depName; - - //If already traced or defined, do not bother a second time. - if (name) { - if (traced[name] || name in defined) { - return defined[name]; - } - - //Mark this module as being traced, so that it is not retraced (as in a circular - //dependency) - traced[name] = true; - } - - if (deps) { - for (j = 0; (dep = deps[j]); j++) { - depName = dep.name; - if (depName === "require") { - depModule = makeRequire(context, name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - depModule = defined[name] = {}; - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = depModule = { - id: name, - uri: name ? req.nameToUrl(name, null, context.contextName) : undefined - }; - cjsModule.setExports = makeSetExports(cjsModule); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // TODO: xxxpedro module scope handling hack - var NS = function(namespace, source, root) - { - root = root || window; - - var set = !!source, - ns = namespace.split("/"), - object = root; - - for(var i=0, l=ns.length, n; n=ns[i]; i++) - { - if(set) - object[n] = i < l-1 ? object[n] || {} : source; - - else if(!object[n]) - error('Namespace not found: ' + namespace); - - object = object[n]; - } - - return object; - }; - - var moduleScope = cjsModule.scope = { - include: function(moduleName) { - var includedModule = req(moduleName); - for (var name in includedModule) { - if (includedModule.hasOwnProperty(name)) { - moduleScope[name] = includedModule[name]; - } - } - }, - imports: function(namespace) - { - NS(namespace, require(namespace), moduleScope); - } - }; - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - } else { - //Get dependent module. It could not exist, for a circular - //dependency or if the loaded dependency does not actually call - //require. Favor not throwing an error here if undefined because - //we want to allow code that does not use require as a module - //definition framework to still work -- allow a web site to - //gradually update to contained modules. That is more - //important than forcing a throw for the circular dependency case. - depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context)); - } - - args.push(depModule); - } - } - - //Call the callback to define the module, if necessary. - cb = module.callback; - if (cb && req.isFunction(cb)) { - ret = req.execCb(name, cb, args); - if (name) { - //If using exports and the function did not return a value, - //and the "module" object for this definition function did not - //define an exported value, then use the exports object. - if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) { - ret = defined[name]; - } else { - if (cjsModule && "exports" in cjsModule) { - ret = defined[name] = cjsModule.exports; - } else { - if (name in defined && !usingExports) { - req.onError(new Error(name + " has already been defined")); - } - defined[name] = ret; - } - } - } - } - - //Execute modifiers, if they exist. - req.execModifiers(name, traced, waiting, context); - - return ret; - }; - - /** - * Executes a module callack function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * @param {String} name the module name. - * @param {Function} cb the module callback/definition function. - * @param {Array} args The arguments (dependent modules) to pass to callback. - * - * @private - */ - req.execCb = function (name, cb, args) { - return cb.apply(null, args); - }; - - /** - * Executes modifiers for the given module name. - * @param {String} target - * @param {Object} traced - * @param {Object} context - * - * @private - */ - req.execModifiers = function (target, traced, waiting, context) { - var modifiers = context.modifiers, mods = modifiers[target], mod, i; - if (mods) { - for (i = 0; i < mods.length; i++) { - mod = mods[i]; - //Not all modifiers define a module, they might collect other modules. - //If it is just a collection it will not be in waiting. - if (mod in waiting) { - req.exec(waiting[waiting[mod]], traced, waiting, context); - } - } - delete modifiers[target]; - } - }; - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - * - * @private - */ - req.onScriptLoad = function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement, contextName, moduleName, - context; - if (evt.type === "load" || readyRegExp.test(node.readyState)) { - //Pull out the name of the module and the context. - contextName = node.getAttribute("data-requirecontext"); - moduleName = node.getAttribute("data-requiremodule"); - context = s.contexts[contextName]; - - req.completeLoad(moduleName, context); - - //Clean up script binding. - if (node.removeEventListener) { - node.removeEventListener("load", req.onScriptLoad, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. - node.detachEvent("onreadystatechange", req.onScriptLoad); - } - } - }; - - /** - * Attaches the script represented by the URL to the current - * environment. Right now only supports browser loading, - * but can be redefined in other environments to do the right thing. - * @param {String} url the url of the script to attach. - * @param {String} contextName the name of the context that wants the script. - * @param {moduleName} the name of the module that is associated with the script. - * @param {Function} [callback] optional callback, defaults to require.onScriptLoad - * @param {String} [type] optional type, defaults to text/javascript - */ - req.attach = function (url, contextName, moduleName, callback, type) { - var node, loaded, context; - if (isBrowser) { - //In the browser so use a script tag - callback = callback || req.onScriptLoad; - node = document.createElement("script"); - node.type = type || "text/javascript"; - node.charset = "utf-8"; - //Use async so Gecko does not block on executing the script if something - //like a long-polling comet tag is being run first. Gecko likes - //to evaluate scripts in DOM order, even for dynamic scripts. - //It will fetch them async, but only evaluate the contents in DOM - //order, so a long-polling script tag can delay execution of scripts - //after it. But telling Gecko we expect async gets us the behavior - //we want -- execute it whenever it is finished downloading. Only - //Helps Firefox 3.6+ - //Allow some URLs to not be fetched async. Mostly helps the order! - //plugin - if (!s.skipAsync[url]) { - node.async = true; - } - node.setAttribute("data-requirecontext", contextName); - node.setAttribute("data-requiremodule", moduleName); - - //Set up load listener. - if (node.addEventListener) { - node.addEventListener("load", callback, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous require.def call to a name. - //However, IE reports the script as being in "interactive" - //readyState at the time of the require.def call. - useInteractive = true; - node.attachEvent("onreadystatechange", callback); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous require.def - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - s.head.insertBefore(node, baseElement); - } else { - s.head.appendChild(node); - } - currentlyAddingScript = null; - return node; - } else if (isWebWorker) { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - context = s.contexts[contextName]; - loaded = context.loaded; - loaded[moduleName] = false; - importScripts(url); - - //Account for anonymous modules - req.completeLoad(moduleName, context); - } - return null; - }; - - //Determine what baseUrl should be if not already defined via a require config object - s.baseUrl = cfg.baseUrl; - if (isBrowser && (!s.baseUrl || !s.head)) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - scripts = document.getElementsByTagName("script"); - if (cfg.baseUrlMatch) { - rePkg = cfg.baseUrlMatch; - } else { - - - - rePkg = /(allplugins-)?require\.js(\W|$)/i; - - } - - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - //Set the "head" where we can append children by - //using the script's parent. - if (!s.head) { - s.head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. - if (!cfg.deps) { - dataMain = script.getAttribute('data-main'); - if (dataMain) { - cfg.deps = [dataMain]; - } - } - - //Using .src instead of getAttribute to get an absolute URL. - //While using a relative URL will be fine for script tags, other - //URLs used for text! resources that use XHR calls might benefit - //from an absolute URL. - src = script.src; - if (src && !s.baseUrl) { - m = src.match(rePkg); - if (m) { - s.baseUrl = src.substring(0, m.index); - break; - } - } - } - } - - //****** START page load functionality **************** - /** - * Sets the page as loaded and triggers check for all modules loaded. - */ - req.pageLoaded = function () { - if (!s.isPageLoaded) { - s.isPageLoaded = true; - if (scrollIntervalId) { - clearInterval(scrollIntervalId); - } - - //Part of a fix for FF < 3.6 where readyState was not set to - //complete so libraries like jQuery that check for readyState - //after page load where not getting initialized correctly. - //Original approach suggested by Andrea Giammarchi: - //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html - //see other setReadyState reference for the rest of the fix. - if (setReadyState) { - document.readyState = "complete"; - } - - req.callReady(); - } - }; - - /** - * Internal function that calls back any ready functions. If you are - * integrating RequireJS with another library without require.ready support, - * you can define this method to call your page ready code instead. - */ - req.callReady = function () { - var callbacks = s.readyCalls, i, callback, contexts, context, prop; - - if (s.isPageLoaded && s.isDone) { - if (callbacks.length) { - s.readyCalls = []; - for (i = 0; (callback = callbacks[i]); i++) { - callback(); - } - } - - //If jQuery with readyWait is being tracked, updated its - //readyWait count. - contexts = s.contexts; - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - if (context.jQueryIncremented) { - context.jQuery.readyWait -= 1; - context.jQueryIncremented = false; - } - } - } - } - }; - - /** - * Registers functions to call when the page is loaded - */ - req.ready = function (callback) { - if (s.isPageLoaded && s.isDone) { - callback(); - } else { - s.readyCalls.push(callback); - } - return req; - }; - - if (isBrowser) { - if (document.addEventListener) { - //Standards. Hooray! Assumption here that if standards based, - //it knows about DOMContentLoaded. - document.addEventListener("DOMContentLoaded", req.pageLoaded, false); - window.addEventListener("load", req.pageLoaded, false); - //Part of FF < 3.6 readystate fix (see setReadyState refs for more info) - if (!document.readyState) { - setReadyState = true; - document.readyState = "loading"; - } - } else if (window.attachEvent) { - window.attachEvent("onload", req.pageLoaded); - - //DOMContentLoaded approximation, as found by Diego Perini: - //http://javascript.nwbox.com/IEContentLoaded/ - if (self === self.top) { - scrollIntervalId = setInterval(function () { - try { - //From this ticket: - //http://bugs.dojotoolkit.org/ticket/11106, - //In IE HTML Application (HTA), such as in a selenium test, - //javascript in the iframe can't see anything outside - //of it, so self===self.top is true, but the iframe is - //not the top window and doScroll will be available - //before document.body is set. Test document.body - //before trying the doScroll trick. - if (document.body) { - document.documentElement.doScroll("left"); - req.pageLoaded(); - } - } catch (e) {} - }, 30); - } - } - - //Check if document already complete, and if so, just trigger page load - //listeners. NOTE: does not work with Firefox before 3.6. To support - //those browsers, manually call require.pageLoaded(). - if (document.readyState === "complete") { - req.pageLoaded(); - } - } - //****** END page load functionality **************** - - //Set up default context. If require was a configuration object, use that as base config. - req(cfg); - - //If modules are built into require.js, then need to make sure dependencies are - //traced. Use a setTimeout in the browser world, to allow all the modules to register - //themselves. In a non-browser env, assume that modules are not built into require.js, - //which seems odd to do on the server. - if (typeof setTimeout !== "undefined") { - setTimeout(function () { - var ctx = s.contexts[(cfg.context || defContextName)]; - //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3, - //make sure to hold onto it for readyWait triggering. - jQueryCheck(ctx); - - // TODO: xxxpedro timing issue in FF - setTimeout(function(){ resume(ctx); }, 0); - }, 0); - } -}()); - diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/test.html b/branches/firebug1.5/sandbox/sandbox/requireScope/test.html deleted file mode 100644 index db7a6598..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/test.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - -

                                CommonJS module loader WITH(scope) handling

                                -

                                See source code of Lib.js and Firebug/Script.js for more examples of usage.

                                -

                                The code used in this file is:

                                -
                                -
                                -require.def("App", // module ID
                                -// ************************************************************************************************ 
                                -[
                                -    // list of dependencies
                                -    "require", 
                                -    "exports", 
                                -    "module", 
                                -    "Firebug/Script"
                                -],
                                -// ************************************************************************************************ 
                                -function(require, exports, module) {
                                -// ************************************************************************************************ 
                                -
                                -var Script = require("Firebug/Script");
                                -Script.initialize();
                                -Script.show();
                                -
                                -// ************************************************************************************************ 
                                -});
                                -
                                -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/a.js b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/a.js deleted file mode 100644 index 5c4fa5a4..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/a.js +++ /dev/null @@ -1,22 +0,0 @@ -require.def("a", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module", - "scope", - "b", - "c" -], -// ************************************************************************************************ -function(require, exports, module) { with( require("scope").create() ) { -// ************************************************************************************************ - -console.log("loading A module"); - -include("a"); -include("b"); - -// ************************************************************************************************ -}}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/b.js b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/b.js deleted file mode 100644 index 8d2d39bd..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/b.js +++ /dev/null @@ -1,18 +0,0 @@ -require.def("b", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { -// ************************************************************************************************ - -console.log("loading B module"); - -exports.b = true; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/c.js b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/c.js deleted file mode 100644 index 80dd6b6e..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/c.js +++ /dev/null @@ -1,18 +0,0 @@ -require.def("c", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { -// ************************************************************************************************ - -console.log("loading C module"); - -exports.C = true; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/require.js b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/require.js deleted file mode 100644 index c4d7999b..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/require.js +++ /dev/null @@ -1,1745 +0,0 @@ -/** vim: et:ts=4:sw=4:sts=4 - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved. - * Available via the MIT or new BSD license. - * see: http://github.com/jrburke/requirejs for details - */ -//laxbreak is true to allow build pragmas to change some statements. -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */ -/*global window: false, document: false, navigator: false, -setTimeout: false, traceDeps: true, clearInterval: false, self: false, -setInterval: false, importScripts: false, jQuery: false */ - - -var require, define; -(function () { - //Change this version number for each release. - var version = "0.14.5", - empty = {}, s, - i, defContextName = "_", contextLoads = [], - scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState, - readyRegExp = /^(complete|loaded)$/, - commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, - cjsRequireRegExp = /require\(["']([\w-_\.\/]+)["']\)/g, - main, - isBrowser = !!(typeof window !== "undefined" && navigator && document), - isWebWorker = !isBrowser && typeof importScripts !== "undefined", - ostring = Object.prototype.toString, - ap = Array.prototype, - aps = ap.slice, scrollIntervalId, req, baseElement, - defQueue = [], useInteractive = false, currentlyAddingScript; - - function isFunction(it) { - return ostring.call(it) === "[object Function]"; - } - - //Check for an existing version of require. If so, then exit out. Only allow - //one version of require to be active in a page. However, allow for a require - //config object, just exit quickly if require is an actual function. - if (typeof require !== "undefined") { - if (isFunction(require)) { - return; - } else { - //assume it is a config object. - cfg = require; - } - } - - /** - * Calls a method on a plugin. The obj object should have two property, - * name: the name of the method to call on the plugin - * args: the arguments to pass to the plugin method. - */ - function callPlugin(prefix, context, obj) { - //Call the plugin, or load it. - var plugin = s.plugins.defined[prefix], waiting; - if (plugin) { - plugin[obj.name].apply(null, obj.args); - } else { - //Put the call in the waiting call BEFORE requiring the module, - //since the require could be synchronous in some environments, - //like builds - waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []); - waiting.push(obj); - - //Load the module - req(["require/" + prefix], context.contextName); - } - } - - /** - * Convenience method to call main for a require.def call that was put on - * hold in the defQueue. - */ - function callDefMain(args, context) { - main.apply(req, args); - //Mark the module loaded. Must do it here in addition - //to doing it in require.def in case a script does - //not call require.def - context.loaded[args[0]] = true; - } - - /** - * Used to set up package paths from a packagePaths or packages config object. - * @param {Object} packages the object to store the new package config - * @param {Array} currentPackages an array of packages to configure - * @param {String} [dir] a prefix dir to use. - */ - function configurePackageDir(packages, currentPackages, dir) { - var i, location, pkgObj; - for (i = 0; (pkgObj = currentPackages[i]); i++) { - pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj; - location = pkgObj.location; - - //Add dir to the path, but avoid paths that start with a slash - //or have a colon (indicates a protocol) - if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) { - pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name); - } - - //Normalize package paths. - pkgObj.location = pkgObj.location || pkgObj.name; - pkgObj.lib = pkgObj.lib || "lib"; - pkgObj.main = pkgObj.main || "main"; - - packages[pkgObj.name] = pkgObj; - } - } - - /** - * Determine if priority loading is done. If so clear the priorityWait - */ - function isPriorityDone(context) { - var priorityDone = true, - priorityWait = context.config.priorityWait, - priorityName, i; - if (priorityWait) { - for (i = 0; (priorityName = priorityWait[i]); i++) { - if (!context.loaded[priorityName]) { - priorityDone = false; - break; - } - } - if (priorityDone) { - delete context.config.priorityWait; - } - } - return priorityDone; - } - - /** - * Resumes tracing of dependencies and then checks if everything is loaded. - */ - function resume(context) { - var args, i, paused = s.paused; - if (context.scriptCount <= 0) { - //Synchronous envs will push the number below zero with the - //decrement above, be sure to set it back to zero for good measure. - //require() calls that also do not end up loading scripts could - //push the number negative too. - context.scriptCount = 0; - - //Make sure any remaining defQueue items get properly processed. - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - req.onError(new Error('Mismatched anonymous require.def modules')); - } else { - callDefMain(args, context); - } - } - - //Skip the resume if current context is in priority wait. - if (context.config.priorityWait && !isPriorityDone(context)) { - return; - } - - if (paused.length) { - for (i = 0; (args = paused[i]); i++) { - req.checkDeps.apply(req, args); - } - } - - req.checkLoaded(s.ctxName); - } - } - - /** - * Main entry point. - * - * If the only argument to require is a string, then the module that - * is represented by that string is fetched for the appropriate context. - * - * If the first argument is an array, then it will be treated as an array - * of dependency string names to fetch. An optional function callback can - * be specified to execute when all of those dependencies are available. - */ - require = function (deps, callback, contextName, relModuleName) { - var context, config; - if (typeof deps === "string" && !isFunction(callback)) { - //Just return the module wanted. In this scenario, the - //second arg (if passed) is just the contextName. - return require.get(deps, callback, contextName, relModuleName); - } - // Dependencies first - if (!require.isArray(deps)) { - // deps is a config object - config = deps; - if (require.isArray(callback)) { - // Adjust args if there are dependencies - deps = callback; - callback = contextName; - contextName = relModuleName; - relModuleName = arguments[4]; - } else { - deps = []; - } - } - - main(null, deps, callback, config, contextName, relModuleName); - - //If the require call does not trigger anything new to load, - //then resume the dependency processing. Context will be undefined - //on first run of require. - context = s.contexts[(contextName || (config && config.context) || s.ctxName)]; - if (context && context.scriptCount === 0) { - resume(context); - } - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - }; - - //Alias for caja compliance internally - - //specifically: "Dynamically computed names should use require.async()" - //even though this spec isn't really decided on. - //Since it is here, use this alias to make typing shorter. - req = require; - - /** - * Any errors that require explicitly generates will be passed to this - * function. Intercept/override it if you want custom error handling. - * If you do override it, this method should *always* throw an error - * to stop the execution flow correctly. Otherwise, other weird errors - * will occur. - * @param {Error} err the error object. - */ - req.onError = function (err) { - throw err; - }; - - /** - * The function that handles definitions of modules. Differs from - * require() in that a string for the module should be the first argument, - * and the function to execute after dependencies are loaded should - * return a value to define the module corresponding to the first argument's - * name. - */ - define = req.def = function (name, deps, callback, contextName) { - var i, scripts, script, node = currentlyAddingScript; - - //Allow for anonymous functions - if (typeof name !== 'string') { - //Adjust args appropriately - contextName = callback; - callback = deps; - deps = name; - name = null; - } - - //This module may not have dependencies - if (!req.isArray(deps)) { - contextName = callback; - callback = deps; - deps = []; - } - - //If no name, and callback is a function, then figure out if it a - //CommonJS thing with dependencies. - if (!name && !deps.length && req.isFunction(callback)) { - //Remove comments from the callback string, - //look for require calls, and pull them into the dependencies. - callback - .toString() - .replace(commentRegExp, "") - .replace(cjsRequireRegExp, function (match, dep) { - deps.push(dep); - }); - - //May be a CommonJS thing even without require calls, but still - //could use exports, and such, so always add those as dependencies. - //This is a bit wasteful for RequireJS modules that do not need - //an exports or module object, but erring on side of safety. - //REQUIRES the function to expect the CommonJS variables in the - //order listed below. - deps = ["require", "exports", "module"].concat(deps); - } - - //If in IE 6-8 and hit an anonymous require.def call, do the interactive/ - //currentlyAddingScript scripts stuff. - if (!name && useInteractive) { - scripts = document.getElementsByTagName('script'); - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - if (script.readyState === 'interactive') { - node = script; - break; - } - } - if (!node) { - req.onError(new Error("ERROR: No matching script interactive for " + callback)); - } - - name = node.getAttribute("data-requiremodule"); - } - - if (typeof name === 'string') { - //Do not try to auto-register a jquery later. - //Do this work here and in main, since for IE/useInteractive, this function - //is the earliest touch-point. - s.contexts[s.ctxName].jQueryDef = (name === "jquery"); - } - - //Always save off evaluating the def call until the script onload handler. - //This allows multiple modules to be in a file without prematurely - //tracing dependencies, and allows for anonymous module support, - //where the module name is not known until the script onload event - //occurs. - defQueue.push([name, deps, callback, null, contextName]); - }; - - main = function (name, deps, callback, config, contextName, relModuleName) { - //Grab the context, or create a new one for the given context name. - var context, newContext, loaded, pluginPrefix, - canSetContext, prop, newLength, outDeps, mods, paths, index, i, - deferMods, deferModArgs, lastModArg, waitingName, packages, - packagePaths; - - contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName); - context = s.contexts[contextName]; - - if (name) { - // Pull off any plugin prefix. - index = name.indexOf("!"); - if (index !== -1) { - pluginPrefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } else { - //Could be that the plugin name should be auto-applied. - //Used by i18n plugin to enable anonymous i18n modules, but - //still associating the auto-generated name with the i18n plugin. - pluginPrefix = context.defPlugin[name]; - } - - - //If module already defined for context, or already waiting to be - //evaluated, leave. - waitingName = context.waiting[name]; - if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) { - return; - } - } - - if (contextName !== s.ctxName) { - //If nothing is waiting on being loaded in the current context, - //then switch s.ctxName to current contextName. - loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded); - canSetContext = true; - if (loaded) { - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - canSetContext = false; - break; - } - } - } - } - if (canSetContext) { - s.ctxName = contextName; - } - } - - if (!context) { - newContext = { - contextName: contextName, - config: { - waitSeconds: 7, - baseUrl: s.baseUrl || "./", - paths: {}, - packages: {} - }, - waiting: [], - specified: { - "require": true, - "exports": true, - "module": true - }, - loaded: {}, - scriptCount: 0, - urlFetched: {}, - defPlugin: {}, - defined: {}, - modifiers: {} - }; - - if (s.plugins.newContext) { - s.plugins.newContext(newContext); - } - - context = s.contexts[contextName] = newContext; - } - - //If have a config object, update the context's config object with - //the config values. - if (config) { - //Make sure the baseUrl ends in a slash. - if (config.baseUrl) { - if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") { - config.baseUrl += "/"; - } - } - - //Save off the paths and packages since they require special processing, - //they are additive. - paths = context.config.paths; - packages = context.config.packages; - - //Mix in the config values, favoring the new values over - //existing ones in context.config. - req.mixin(context.config, config, true); - - //Adjust paths if necessary. - if (config.paths) { - for (prop in config.paths) { - if (!(prop in empty)) { - paths[prop] = config.paths[prop]; - } - } - context.config.paths = paths; - } - - packagePaths = config.packagePaths; - if (packagePaths || config.packages) { - //Convert packagePaths into a packages config. - if (packagePaths) { - for (prop in packagePaths) { - if (!(prop in empty)) { - configurePackageDir(packages, packagePaths[prop], prop); - } - } - } - - //Adjust packages if necessary. - if (config.packages) { - configurePackageDir(packages, config.packages); - } - - //Done with modifications, assing packages back to context config - context.config.packages = packages; - } - - //If priority loading is in effect, trigger the loads now - if (config.priority) { - //Create a separate config property that can be - //easily tested for config priority completion. - //Do this instead of wiping out the config.priority - //in case it needs to be inspected for debug purposes later. - req(config.priority); - context.config.priorityWait = config.priority; - } - - //If a deps array or a config callback is specified, then call - //require with those args. This is useful when require is defined as a - //config object before require.js is loaded. - if (config.deps || config.callback) { - req(config.deps || [], config.callback); - } - - //Set up ready callback, if asked. Useful when require is defined as a - //config object before require.js is loaded. - if (config.ready) { - req.ready(config.ready); - } - - //If it is just a config block, nothing else, - //then return. - if (!deps) { - return; - } - } - - //Normalize dependency strings: need to determine if they have - //prefixes and to also normalize any relative paths. Replace the deps - //array of strings with an array of objects. - if (deps) { - outDeps = deps; - deps = []; - for (i = 0; i < outDeps.length; i++) { - deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context); - } - } - - //Store the module for later evaluation - newLength = context.waiting.push({ - name: name, - deps: deps, - callback: callback - }); - - if (name) { - //Store index of insertion for quick lookup - context.waiting[name] = newLength - 1; - - //Mark the module as specified so no need to fetch it again. - //Important to set specified here for the - //pause/resume case where there are multiple modules in a file. - context.specified[name] = true; - - //Load any modifiers for the module. - mods = context.modifiers[name]; - if (mods) { - req(mods, contextName); - deferMods = mods.__deferMods; - if (deferMods) { - for (i = 0; i < deferMods.length; i++) { - deferModArgs = deferMods[i]; - - //Add the context name to the def call. - lastModArg = deferModArgs[deferModArgs.length - 1]; - if (lastModArg === undefined) { - deferModArgs[deferModArgs.length - 1] = contextName; - } else if (typeof lastModArg === "string") { - deferMods.push(contextName); - } - - require.def.apply(require, deferModArgs); - } - } - } - } - - //If the callback is not an actual function, it means it already - //has the definition of the module as a literal value. - if (name && callback && !req.isFunction(callback)) { - context.defined[name] = callback; - } - - //If a pluginPrefix is available, call the plugin, or load it. - if (pluginPrefix) { - callPlugin(pluginPrefix, context, { - name: "require", - args: [name, deps, callback, context] - }); - } - - //Hold on to the module until a script load or other adapter has finished - //evaluating the whole file. This helps when a file has more than one - //module in it -- dependencies are not traced and fetched until the whole - //file is processed. - s.paused.push([pluginPrefix, name, deps, context]); - - //Set loaded here for modules that are also loaded - //as part of a layer, where onScriptLoad is not fired - //for those cases. Do this after the inline define and - //dependency tracing is done. - //Also check if auto-registry of jQuery needs to be skipped. - if (name) { - context.loaded[name] = true; - context.jQueryDef = (name === "jquery"); - } - }; - - /** - * Simple function to mix in properties from source into target, - * but only if target does not already have a property of the same name. - */ - req.mixin = function (target, source, force) { - for (var prop in source) { - if (!(prop in empty) && (!(prop in target) || force)) { - target[prop] = source[prop]; - } - } - return req; - }; - - req.version = version; - - //Set up page state. - s = req.s = { - ctxName: defContextName, - contexts: {}, - paused: [], - plugins: { - defined: {}, - callbacks: {}, - waiting: {} - }, - //Stores a list of URLs that should not get async script tag treatment. - skipAsync: {}, - isBrowser: isBrowser, - isPageLoaded: !isBrowser, - readyCalls: [], - doc: isBrowser ? document : null - }; - - req.isBrowser = s.isBrowser; - if (isBrowser) { - s.head = document.getElementsByTagName("head")[0]; - //If BASE tag is in play, using appendChild is a problem for IE6. - //When that browser dies, this can be removed. Details in this jQuery bug: - //http://dev.jquery.com/ticket/2709 - baseElement = document.getElementsByTagName("base")[0]; - if (baseElement) { - s.head = baseElement.parentNode; - } - } - - /** - * Sets up a plugin callback name. Want to make it easy to test if a plugin - * needs to be called for a certain lifecycle event by testing for - * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event - * if there is a real plugin that registers for it. - */ - function makePluginCallback(name, returnOnTrue) { - var cbs = s.plugins.callbacks[name] = []; - s.plugins[name] = function () { - for (var i = 0, cb; (cb = cbs[i]); i++) { - if (cb.apply(null, arguments) === true && returnOnTrue) { - return true; - } - } - return false; - }; - } - - /** - * Registers a new plugin for require. - */ - req.plugin = function (obj) { - var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks, - waiting = s.plugins.waiting[prefix], generics, - defined = s.plugins.defined, contexts = s.contexts, context; - - //Do not allow redefinition of a plugin, there may be internal - //state in the plugin that could be lost. - if (defined[prefix]) { - return req; - } - - //Save the plugin. - defined[prefix] = obj; - - //Set up plugin callbacks for methods that need to be generic to - //require, for lifecycle cases where it does not care about a particular - //plugin, but just that some plugin work needs to be done. - generics = ["newContext", "isWaiting", "orderDeps"]; - for (i = 0; (prop = generics[i]); i++) { - if (!s.plugins[prop]) { - makePluginCallback(prop, prop === "isWaiting"); - } - cbs[prop].push(obj[prop]); - } - - //Call newContext for any contexts that were already created. - if (obj.newContext) { - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - obj.newContext(context); - } - } - } - - //If there are waiting requests for a plugin, execute them now. - if (waiting) { - for (i = 0; (call = waiting[i]); i++) { - if (obj[call.name]) { - obj[call.name].apply(null, call.args); - } - } - delete s.plugins.waiting[prefix]; - } - - return req; - }; - - /** - * As of jQuery 1.4.3, it supports a readyWait property that will hold off - * calling jQuery ready callbacks until all scripts are loaded. Be sure - * to track it if readyWait is available. Also, since jQuery 1.4.3 does - * not register as a module, need to do some global inference checking. - * Even if it does register as a module, not guaranteed to be the precise - * name of the global. If a jQuery is tracked for this context, then go - * ahead and register it as a module too, if not already in process. - */ - function jQueryCheck(context, jqCandidate) { - if (!context.jQuery) { - var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null); - if ($ && "readyWait" in $) { - context.jQuery = $; - - //Manually create a "jquery" module entry if not one already - //or in process. - if (!context.defined.jquery && !context.jQueryDef) { - context.defined.jquery = $; - } - - //Make sure - if (context.scriptCount) { - $.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - } - - /** - * Internal method used by environment adapters to complete a load event. - * A load event could be a script load or just a load pass from a synchronous - * load call. - * @param {String} moduleName the name of the module to potentially complete. - * @param {Object} context the context object - */ - req.completeLoad = function (moduleName, context) { - //If there is a waiting require.def call - var args; - while (defQueue.length) { - args = defQueue.shift(); - if (args[0] === null) { - args[0] = moduleName; - break; - } else if (args[0] === moduleName) { - //Found matching require.def call for this script! - break; - } else { - //Some other named require.def call, most likely the result - //of a build layer that included many require.def calls. - callDefMain(args, context); - } - } - if (args) { - callDefMain(args, context); - } - - //Mark the script as loaded. Note that this can be different from a - //moduleName that maps to a require.def call. This line is important - //for traditional browser scripts. - context.loaded[moduleName] = true; - - //If a global jQuery is defined, check for it. Need to do it here - //instead of main() since stock jQuery does not register as - //a module via define. - jQueryCheck(context); - - context.scriptCount -= 1; - resume(context); - }; - - /** - * Legacy function, remove at some point - */ - req.pause = req.resume = function () {}; - - /** - * Trace down the dependencies to see if they are loaded. If not, trigger - * the load. - * @param {String} pluginPrefix the plugin prefix, if any associated with the name. - * - * @param {String} name: the name of the module that has the dependencies. - * - * @param {Array} deps array of dependencies. - * - * @param {Object} context: the loading context. - * - * @private - */ - req.checkDeps = function (pluginPrefix, name, deps, context) { - //Figure out if all the modules are loaded. If the module is not - //being loaded or already loaded, add it to the "to load" list, - //and request it to be loaded. - var i, dep; - - if (pluginPrefix) { - callPlugin(pluginPrefix, context, { - name: "checkDeps", - args: [name, deps, context] - }); - } else { - for (i = 0; (dep = deps[i]); i++) { - if (!context.specified[dep.fullName]) { - context.specified[dep.fullName] = true; - - //Reset the start time to use for timeouts - context.startTime = (new Date()).getTime(); - - //If a plugin, call its load method. - if (dep.prefix) { - callPlugin(dep.prefix, context, { - name: "load", - args: [dep.name, context.contextName] - }); - } else { - req.load(dep.name, context.contextName); - } - } - } - } - }; - - /** - * Register a module that modifies another module. The modifier will - * only be called once the target module has been loaded. - * - * First syntax: - * - * require.modify({ - * "some/target1": "my/modifier1", - * "some/target2": "my/modifier2", - * }); - * - * With this syntax, the my/modifier1 will only be loaded when - * "some/target1" is loaded. - * - * Second syntax, defining a modifier. - * - * require.modify("some/target1", "my/modifier", - * ["some/target1", "some/other"], - * function (target, other) { - * //Modify properties of target here. - * Only properties of target can be modified, but - * target cannot be replaced. - * } - * ); - */ - req.modify = function (target, name, deps, callback, contextName) { - var prop, modifier, list, - cName = (typeof target === "string" ? contextName : name) || s.ctxName, - context = s.contexts[cName], - mods = context.modifiers; - - if (typeof target === "string") { - //A modifier module. - //First store that it is a modifier. - list = mods[target] || (mods[target] = []); - if (!list[name]) { - list.push(name); - list[name] = true; - } - - //Trigger the normal module definition logic if the target - //is already in the system. - if (context.specified[target]) { - req.def(name, deps, callback, contextName); - } else { - //Hold on to the execution/dependency checks for the modifier - //until the target is fetched. - (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]); - } - } else { - //A list of modifiers. Save them for future reference. - for (prop in target) { - if (!(prop in empty)) { - //Store the modifier for future use. - modifier = target[prop]; - list = mods[prop] || (context.modifiers[prop] = []); - if (!list[modifier]) { - list.push(modifier); - list[modifier] = true; - - if (context.specified[prop]) { - //Load the modifier right away. - req([modifier], cName); - } - } - } - } - } - }; - - req.isArray = function (it) { - return ostring.call(it) === "[object Array]"; - }; - - req.isFunction = isFunction; - - /** - * Gets one module's exported value. This method is used by require(). - * It is broken out as a separate function to allow a host environment - * shim to overwrite this function with something appropriate for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} [contextName] the name of the context to use. Uses - * default context if no contextName is provided. You should never - * pass the contextName explicitly -- it is handled by the require() code. - * @param {String} [relModuleName] a module name to use for relative - * module name lookups. You should never pass this argument explicitly -- - * it is handled by the require() code. - * - * @returns {Object} the exported module value. - */ - req.get = function (moduleName, contextName, relModuleName) { - if (moduleName === "require" || moduleName === "exports" || moduleName === "module") { - req.onError(new Error("Explicit require of " + moduleName + " is not allowed.")); - } - contextName = contextName || s.ctxName; - - var ret, context = s.contexts[contextName]; - - //Normalize module name, if it contains . or .. - moduleName = req.normalizeName(moduleName, relModuleName, context); - - ret = context.defined[moduleName]; - if (ret === undefined) { - req.onError(new Error("require: module name '" + - moduleName + - "' has not been loaded yet for context: " + - contextName)); - } - return ret; - }; - - /** - * Makes the request to load a module. May be an async load depending on - * the environment and the circumstance of the load call. Override this - * method in a host environment shim to do something specific for that - * environment. - * - * @param {String} moduleName the name of the module. - * @param {String} contextName the name of the context to use. - */ - req.load = function (moduleName, contextName) { - var context = s.contexts[contextName], - urlFetched = context.urlFetched, - loaded = context.loaded, url; - s.isDone = false; - - //Only set loaded to false for tracking if it has not already been set. - if (!loaded[moduleName]) { - loaded[moduleName] = false; - } - - if (contextName !== s.ctxName) { - //Not in the right context now, hold on to it until - //the current context finishes all its loading. - contextLoads.push(arguments); - } else { - //First derive the path name for the module. - url = req.nameToUrl(moduleName, null, contextName); - if (!urlFetched[url]) { - context.scriptCount += 1; - req.attach(url, contextName, moduleName); - urlFetched[url] = true; - - //If tracking a jQuery, then make sure its readyWait - //is incremented to prevent its ready callbacks from - //triggering too soon. - if (context.jQuery && !context.jQueryIncremented) { - context.jQuery.readyWait += 1; - context.jQueryIncremented = true; - } - } - } - }; - - req.jsExtRegExp = /\.js$/; - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @param {Object} context - * @returns {String} normalized name - */ - req.normalizeName = function (name, baseName, context) { - //Adjust any relative paths. - var part; - if (name.charAt(0) === ".") { - if (!baseName) { - req.onError(new Error("Cannot normalize module name: " + - name + - ", no relative module name available.")); - } - - if (context.config.packages[baseName]) { - //If the baseName is a package name, then just treat it as one - //name to concat the name with. - baseName = [baseName]; - } else { - //Convert baseName to array, and lop off the last part, - //so that . matches that "directory" and not name of the baseName's - //module. For instance, baseName of "one/two/three", maps to - //"one/two/three.js", but we want the directory, "one/two" for - //this normalization. - baseName = baseName.split("/"); - baseName = baseName.slice(0, baseName.length - 1); - } - - name = baseName.concat(name.split("/")); - for (i = 0; (part = name[i]); i++) { - if (part === ".") { - name.splice(i, 1); - i -= 1; - } else if (part === "..") { - name.splice(i - 1, 2); - i -= 2; - } - } - name = name.join("/"); - } - return name; - }; - - /** - * Splits a name into a possible plugin prefix and - * the module name. If baseName is provided it will - * also normalize the name via require.normalizeName() - * - * @param {String} name the module name - * @param {String} [baseName] base name that name is - * relative to. - * @param {Object} context - * - * @returns {Object} with properties, 'prefix' (which - * may be null), 'name' and 'fullName', which is a combination - * of the prefix (if it exists) and the name. - */ - req.splitPrefix = function (name, baseName, context) { - var index = name.indexOf("!"), prefix = null; - if (index !== -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - - //Account for relative paths if there is a base name. - name = req.normalizeName(name, baseName, context); - - return { - prefix: prefix, - name: name, - fullName: prefix ? prefix + "!" + name : name - }; - }; - - /** - * Converts a module name to a file path. - */ - req.nameToUrl = function (moduleName, ext, contextName, relModuleName) { - var paths, packages, pkg, pkgPath, syms, i, parentModule, url, - context = s.contexts[contextName], - config = context.config; - - //Normalize module name if have a base relative module name to work from. - moduleName = req.normalizeName(moduleName, relModuleName, context); - - //If a colon is in the URL, it indicates a protocol is used and it is just - //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file. - //The slash is important for protocol-less URLs as well as full paths. - if (moduleName.indexOf(":") !== -1 || moduleName.charAt(0) === '/' || req.jsExtRegExp.test(moduleName)) { - //Just a plain path, not module name lookup, so just return it. - //Add extension if it is included. This is a bit wonky, only non-.js things pass - //an extension, this method probably needs to be reworked. - url = moduleName + (ext ? ext : ""); - } else { - //A module that needs to be converted to a path. - paths = config.paths; - packages = config.packages; - - syms = moduleName.split("/"); - //For each module name segment, see if there is a path - //registered for it. Start with most specific name - //and work up from it. - for (i = syms.length; i > 0; i--) { - parentModule = syms.slice(0, i).join("/"); - if (paths[parentModule]) { - syms.splice(0, i, paths[parentModule]); - break; - } else if ((pkg = packages[parentModule])) { - //pkg can have just a string value to the path - //or can be an object with props: - //main, lib, name, location. - pkgPath = pkg.location + '/' + pkg.lib; - //If module name is just the package name, then looking - //for the main module. - if (moduleName === pkg.name) { - pkgPath += '/' + pkg.main; - } - syms.splice(0, i, pkgPath); - break; - } - } - - //Join the path parts together, then figure out if baseUrl is needed. - url = syms.join("/") + (ext || ".js"); - url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url; - } - return config.urlArgs ? url + - ((url.indexOf('?') === -1 ? '?' : '&') + - config.urlArgs) : url; - }; - - /** - * Checks if all modules for a context are loaded, and if so, evaluates the - * new ones in right dependency order. - * - * @private - */ - req.checkLoaded = function (contextName) { - var context = s.contexts[contextName || s.ctxName], - waitInterval = context.config.waitSeconds * 1000, - //It is possible to disable the wait interval by using waitSeconds of 0. - expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), - loaded, defined = context.defined, - modifiers = context.modifiers, waiting, noLoads = "", - hasLoadedProp = false, stillLoading = false, prop, - - pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps, - - i, module, allDone, loads, loadArgs, err; - - //If already doing a checkLoaded call, - //then do not bother checking loaded state. - if (context.isCheckLoaded) { - return; - } - - //Determine if priority loading is done. If so clear the priority. If - //not, then do not check - if (context.config.priorityWait) { - if (isPriorityDone(context)) { - //Call resume, since it could have - //some waiting dependencies to trace. - resume(context); - } else { - return; - } - } - - //Signal that checkLoaded is being require, so other calls that could be triggered - //by calling a waiting callback that then calls require and then this function - //should not proceed. At the end of this function, if there are still things - //waiting, then checkLoaded will be called again. - context.isCheckLoaded = true; - - //Grab waiting and loaded lists here, since it could have changed since - //this function was first called. - waiting = context.waiting; - loaded = context.loaded; - - //See if anything is still in flight. - for (prop in loaded) { - if (!(prop in empty)) { - hasLoadedProp = true; - if (!loaded[prop]) { - if (expired) { - noLoads += prop + " "; - } else { - stillLoading = true; - break; - } - } - } - } - - //Check for exit conditions. - if (!hasLoadedProp && !waiting.length - && (!pIsWaiting || !pIsWaiting(context)) - ) { - //If the loaded object had no items, then the rest of - //the work below does not need to be done. - context.isCheckLoaded = false; - return; - } - if (expired && noLoads) { - //If wait time expired, throw error of unloaded modules. - err = new Error("require.js load timeout for modules: " + noLoads); - err.requireType = "timeout"; - err.requireModules = noLoads; - req.onError(err); - } - if (stillLoading) { - //Something is still waiting to load. Wait for it. - context.isCheckLoaded = false; - if (isBrowser || isWebWorker) { - setTimeout(function () { - req.checkLoaded(contextName); - }, 50); - } - return; - } - - //Order the dependencies. Also clean up state because the evaluation - //of modules might create new loading tasks, so need to reset. - //Be sure to call plugins too. - context.waiting = []; - context.loaded = {}; - - //Call plugins to order their dependencies, do their - //module definitions. - if (pOrderDeps) { - pOrderDeps(context); - } - - //Before defining the modules, give priority treatment to any modifiers - //for modules that are already defined. - for (prop in modifiers) { - if (!(prop in empty)) { - if (defined[prop]) { - req.execModifiers(prop, {}, waiting, context); - } - } - } - - //Define the modules, doing a depth first search. - for (i = 0; (module = waiting[i]); i++) { - req.exec(module, {}, waiting, context); - } - - //Indicate checkLoaded is now done. - context.isCheckLoaded = false; - - if (context.waiting.length - || (pIsWaiting && pIsWaiting(context)) - ) { - //More things in this context are waiting to load. They were probably - //added while doing the work above in checkLoaded, calling module - //callbacks that triggered other require calls. - req.checkLoaded(contextName); - } else if (contextLoads.length) { - //Check for other contexts that need to load things. - //First, make sure current context has no more things to - //load. After defining the modules above, new require calls - //could have been made. - loaded = context.loaded; - allDone = true; - for (prop in loaded) { - if (!(prop in empty)) { - if (!loaded[prop]) { - allDone = false; - break; - } - } - } - - if (allDone) { - s.ctxName = contextLoads[0][1]; - loads = contextLoads; - //Reset contextLoads in case some of the waiting loads - //are for yet another context. - contextLoads = []; - for (i = 0; (loadArgs = loads[i]); i++) { - req.load.apply(req, loadArgs); - } - } - } else { - //Make sure we reset to default context. - s.ctxName = defContextName; - s.isDone = true; - if (req.callReady) { - req.callReady(); - } - } - }; - - /** - * Helper function that creates a setExports function for a "module" - * CommonJS dependency. Do this here to avoid creating a closure that - * is part of a loop in require.exec. - */ - function makeSetExports(moduleObj) { - return function (exports) { - moduleObj.exports = exports; - }; - } - - function makeContextModuleFunc(name, contextName, moduleName) { - return function () { - //A version of a require function that forces a contextName value - //and also passes a moduleName value for items that may need to - //look up paths relative to the moduleName - var args = [].concat(aps.call(arguments, 0)); - args.push(contextName, moduleName); - return (name ? require[name] : require).apply(null, args); - }; - } - - /** - * Helper function that creates a require function object to give to - * modules that ask for it as a dependency. It needs to be specific - * per module because of the implication of path mappings that may - * need to be relative to the module name. - */ - function makeRequire(context, moduleName) { - var contextName = context.contextName, - modRequire = makeContextModuleFunc(null, contextName, moduleName); - - req.mixin(modRequire, { - modify: makeContextModuleFunc("modify", contextName, moduleName), - def: makeContextModuleFunc("def", contextName, moduleName), - get: makeContextModuleFunc("get", contextName, moduleName), - nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName), - ready: req.ready, - context: context, - config: context.config, - isBrowser: s.isBrowser - }); - return modRequire; - } - - /** - * Executes the modules in the correct order. - * - * @private - */ - req.exec = function (module, traced, waiting, context) { - //Some modules are just plain script files, abddo not have a formal - //module definition, - if (!module) { - //Returning undefined for Spidermonky strict checking in Komodo - return undefined; - } - - var name = module.name, cb = module.callback, deps = module.deps, j, dep, - defined = context.defined, ret, args = [], depModule, cjsModule, - usingExports = false, depName; - - //If already traced or defined, do not bother a second time. - if (name) { - if (traced[name] || name in defined) { - return defined[name]; - } - - //Mark this module as being traced, so that it is not retraced (as in a circular - //dependency) - traced[name] = true; - } - - if (deps) { - for (j = 0; (dep = deps[j]); j++) { - depName = dep.name; - if (depName === "require") { - depModule = makeRequire(context, name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - depModule = defined[name] = {}; - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = depModule = { - id: name, - uri: name ? req.nameToUrl(name, null, context.contextName) : undefined - }; - cjsModule.setExports = makeSetExports(cjsModule); - - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // TODO: xxxpedro module scope handling hack - var NS = function(namespace, source, root) - { - root = root || window; - - var set = !!source, - ns = namespace.split("/"), - object = root; - - for(var i=0, l=ns.length, n; n=ns[i]; i++) - { - if(set) - object[n] = i < l-1 ? object[n] || {} : source; - - else if(!object[n]) - error('Namespace not found: ' + namespace); - - object = object[n]; - } - - return object; - }; - - var moduleScope = cjsModule.scope = { - include: function(moduleName) { - var includedModule = req(moduleName); - for (var name in includedModule) { - if (includedModule.hasOwnProperty(name)) { - moduleScope[name] = includedModule[name]; - } - } - }, - imports: function(namespace) - { - NS(namespace, require(namespace), moduleScope); - } - }; - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - } else { - //Get dependent module. It could not exist, for a circular - //dependency or if the loaded dependency does not actually call - //require. Favor not throwing an error here if undefined because - //we want to allow code that does not use require as a module - //definition framework to still work -- allow a web site to - //gradually update to contained modules. That is more - //important than forcing a throw for the circular dependency case. - depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context)); - } - - args.push(depModule); - } - } - - //Call the callback to define the module, if necessary. - cb = module.callback; - if (cb && req.isFunction(cb)) { - ret = req.execCb(name, cb, args); - if (name) { - //If using exports and the function did not return a value, - //and the "module" object for this definition function did not - //define an exported value, then use the exports object. - if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) { - ret = defined[name]; - } else { - if (cjsModule && "exports" in cjsModule) { - ret = defined[name] = cjsModule.exports; - } else { - if (name in defined && !usingExports) { - req.onError(new Error(name + " has already been defined")); - } - defined[name] = ret; - } - } - } - } - - //Execute modifiers, if they exist. - req.execModifiers(name, traced, waiting, context); - - return ret; - }; - - /** - * Executes a module callack function. Broken out as a separate function - * solely to allow the build system to sequence the files in the built - * layer in the right sequence. - * @param {String} name the module name. - * @param {Function} cb the module callback/definition function. - * @param {Array} args The arguments (dependent modules) to pass to callback. - * - * @private - */ - req.execCb = function (name, cb, args) { - return cb.apply(null, args); - }; - - /** - * Executes modifiers for the given module name. - * @param {String} target - * @param {Object} traced - * @param {Object} context - * - * @private - */ - req.execModifiers = function (target, traced, waiting, context) { - var modifiers = context.modifiers, mods = modifiers[target], mod, i; - if (mods) { - for (i = 0; i < mods.length; i++) { - mod = mods[i]; - //Not all modifiers define a module, they might collect other modules. - //If it is just a collection it will not be in waiting. - if (mod in waiting) { - req.exec(waiting[waiting[mod]], traced, waiting, context); - } - } - delete modifiers[target]; - } - }; - - /** - * callback for script loads, used to check status of loading. - * - * @param {Event} evt the event from the browser for the script - * that was loaded. - * - * @private - */ - req.onScriptLoad = function (evt) { - //Using currentTarget instead of target for Firefox 2.0's sake. Not - //all old browsers will be supported, but this one was easy enough - //to support and still makes sense. - var node = evt.currentTarget || evt.srcElement, contextName, moduleName, - context; - if (evt.type === "load" || readyRegExp.test(node.readyState)) { - //Pull out the name of the module and the context. - contextName = node.getAttribute("data-requirecontext"); - moduleName = node.getAttribute("data-requiremodule"); - context = s.contexts[contextName]; - - req.completeLoad(moduleName, context); - - //Clean up script binding. - if (node.removeEventListener) { - node.removeEventListener("load", req.onScriptLoad, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. - node.detachEvent("onreadystatechange", req.onScriptLoad); - } - } - }; - - /** - * Attaches the script represented by the URL to the current - * environment. Right now only supports browser loading, - * but can be redefined in other environments to do the right thing. - * @param {String} url the url of the script to attach. - * @param {String} contextName the name of the context that wants the script. - * @param {moduleName} the name of the module that is associated with the script. - * @param {Function} [callback] optional callback, defaults to require.onScriptLoad - * @param {String} [type] optional type, defaults to text/javascript - */ - req.attach = function (url, contextName, moduleName, callback, type) { - var node, loaded, context; - if (isBrowser) { - //In the browser so use a script tag - callback = callback || req.onScriptLoad; - node = document.createElement("script"); - node.type = type || "text/javascript"; - node.charset = "utf-8"; - //Use async so Gecko does not block on executing the script if something - //like a long-polling comet tag is being run first. Gecko likes - //to evaluate scripts in DOM order, even for dynamic scripts. - //It will fetch them async, but only evaluate the contents in DOM - //order, so a long-polling script tag can delay execution of scripts - //after it. But telling Gecko we expect async gets us the behavior - //we want -- execute it whenever it is finished downloading. Only - //Helps Firefox 3.6+ - //Allow some URLs to not be fetched async. Mostly helps the order! - //plugin - if (!s.skipAsync[url]) { - node.async = true; - } - node.setAttribute("data-requirecontext", contextName); - node.setAttribute("data-requiremodule", moduleName); - - //Set up load listener. - if (node.addEventListener) { - node.addEventListener("load", callback, false); - } else { - //Probably IE. If not it will throw an error, which will be - //useful to know. IE (at least 6-8) do not fire - //script onload right after executing the script, so - //we cannot tie the anonymous require.def call to a name. - //However, IE reports the script as being in "interactive" - //readyState at the time of the require.def call. - useInteractive = true; - node.attachEvent("onreadystatechange", callback); - } - node.src = url; - - //For some cache cases in IE 6-8, the script executes before the end - //of the appendChild execution, so to tie an anonymous require.def - //call to the module name (which is stored on the node), hold on - //to a reference to this node, but clear after the DOM insertion. - currentlyAddingScript = node; - if (baseElement) { - s.head.insertBefore(node, baseElement); - } else { - s.head.appendChild(node); - } - currentlyAddingScript = null; - return node; - } else if (isWebWorker) { - //In a web worker, use importScripts. This is not a very - //efficient use of importScripts, importScripts will block until - //its script is downloaded and evaluated. However, if web workers - //are in play, the expectation that a build has been done so that - //only one script needs to be loaded anyway. This may need to be - //reevaluated if other use cases become common. - context = s.contexts[contextName]; - loaded = context.loaded; - loaded[moduleName] = false; - importScripts(url); - - //Account for anonymous modules - req.completeLoad(moduleName, context); - } - return null; - }; - - //Determine what baseUrl should be if not already defined via a require config object - s.baseUrl = cfg.baseUrl; - if (isBrowser && (!s.baseUrl || !s.head)) { - //Figure out baseUrl. Get it from the script tag with require.js in it. - scripts = document.getElementsByTagName("script"); - if (cfg.baseUrlMatch) { - rePkg = cfg.baseUrlMatch; - } else { - - - - rePkg = /(allplugins-)?require\.js(\W|$)/i; - - } - - for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) { - //Set the "head" where we can append children by - //using the script's parent. - if (!s.head) { - s.head = script.parentNode; - } - - //Look for a data-main attribute to set main script for the page - //to load. - if (!cfg.deps) { - dataMain = script.getAttribute('data-main'); - if (dataMain) { - cfg.deps = [dataMain]; - } - } - - //Using .src instead of getAttribute to get an absolute URL. - //While using a relative URL will be fine for script tags, other - //URLs used for text! resources that use XHR calls might benefit - //from an absolute URL. - src = script.src; - if (src && !s.baseUrl) { - m = src.match(rePkg); - if (m) { - s.baseUrl = src.substring(0, m.index); - break; - } - } - } - } - - //****** START page load functionality **************** - /** - * Sets the page as loaded and triggers check for all modules loaded. - */ - req.pageLoaded = function () { - if (!s.isPageLoaded) { - s.isPageLoaded = true; - if (scrollIntervalId) { - clearInterval(scrollIntervalId); - } - - //Part of a fix for FF < 3.6 where readyState was not set to - //complete so libraries like jQuery that check for readyState - //after page load where not getting initialized correctly. - //Original approach suggested by Andrea Giammarchi: - //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html - //see other setReadyState reference for the rest of the fix. - if (setReadyState) { - document.readyState = "complete"; - } - - req.callReady(); - } - }; - - /** - * Internal function that calls back any ready functions. If you are - * integrating RequireJS with another library without require.ready support, - * you can define this method to call your page ready code instead. - */ - req.callReady = function () { - var callbacks = s.readyCalls, i, callback, contexts, context, prop; - - if (s.isPageLoaded && s.isDone) { - if (callbacks.length) { - s.readyCalls = []; - for (i = 0; (callback = callbacks[i]); i++) { - callback(); - } - } - - //If jQuery with readyWait is being tracked, updated its - //readyWait count. - contexts = s.contexts; - for (prop in contexts) { - if (!(prop in empty)) { - context = contexts[prop]; - if (context.jQueryIncremented) { - context.jQuery.readyWait -= 1; - context.jQueryIncremented = false; - } - } - } - } - }; - - /** - * Registers functions to call when the page is loaded - */ - req.ready = function (callback) { - if (s.isPageLoaded && s.isDone) { - callback(); - } else { - s.readyCalls.push(callback); - } - return req; - }; - - if (isBrowser) { - if (document.addEventListener) { - //Standards. Hooray! Assumption here that if standards based, - //it knows about DOMContentLoaded. - document.addEventListener("DOMContentLoaded", req.pageLoaded, false); - window.addEventListener("load", req.pageLoaded, false); - //Part of FF < 3.6 readystate fix (see setReadyState refs for more info) - if (!document.readyState) { - setReadyState = true; - document.readyState = "loading"; - } - } else if (window.attachEvent) { - window.attachEvent("onload", req.pageLoaded); - - //DOMContentLoaded approximation, as found by Diego Perini: - //http://javascript.nwbox.com/IEContentLoaded/ - if (self === self.top) { - scrollIntervalId = setInterval(function () { - try { - //From this ticket: - //http://bugs.dojotoolkit.org/ticket/11106, - //In IE HTML Application (HTA), such as in a selenium test, - //javascript in the iframe can't see anything outside - //of it, so self===self.top is true, but the iframe is - //not the top window and doScroll will be available - //before document.body is set. Test document.body - //before trying the doScroll trick. - if (document.body) { - document.documentElement.doScroll("left"); - req.pageLoaded(); - } - } catch (e) {} - }, 30); - } - } - - //Check if document already complete, and if so, just trigger page load - //listeners. NOTE: does not work with Firefox before 3.6. To support - //those browsers, manually call require.pageLoaded(). - if (document.readyState === "complete") { - req.pageLoaded(); - } - } - //****** END page load functionality **************** - - //Set up default context. If require was a configuration object, use that as base config. - req(cfg); - - //If modules are built into require.js, then need to make sure dependencies are - //traced. Use a setTimeout in the browser world, to allow all the modules to register - //themselves. In a non-browser env, assume that modules are not built into require.js, - //which seems odd to do on the server. - if (typeof setTimeout !== "undefined") { - setTimeout(function () { - var ctx = s.contexts[(cfg.context || defContextName)]; - //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3, - //make sure to hold onto it for readyWait triggering. - jQueryCheck(ctx); - - // TODO: xxxpedro timing issue in FF - setTimeout(function(){ resume(ctx); }, 0); - }, 0); - } -}()); - diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/scope.js b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/scope.js deleted file mode 100644 index eb0a720d..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/scope.js +++ /dev/null @@ -1,28 +0,0 @@ -require.def("scope", // module ID -// ************************************************************************************************ -[ - // list of dependencies - "require", - "exports", - "module" -], -// ************************************************************************************************ -function(require, exports, module) { // no scope needed once lib is a "top-level" module -// ************************************************************************************************ - -console.log("loading Scope module"); - -exports.create = function() -{ - var newScope = {}; - newScope.include = function(name) - { - var m = require(name); - for (var n in m) - newScope[n] = m[n]; - }; - return newScope; -}; - -// ************************************************************************************************ -}); diff --git a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/test.html b/branches/firebug1.5/sandbox/sandbox/requireScope/v2/test.html deleted file mode 100644 index b46869a1..00000000 --- a/branches/firebug1.5/sandbox/sandbox/requireScope/v2/test.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - -

                                CommonJS module loader WITH(scope) handling

                                -

                                See source code of Lib.js and Firebug/Script.js for more examples of usage.

                                -

                                The code used in this file is:

                                -
                                -
                                -require.def("App", // module ID
                                -// ************************************************************************************************ 
                                -[
                                -    // list of dependencies
                                -    "require", 
                                -    "exports", 
                                -    "module", 
                                -    "Firebug/Script"
                                -],
                                -// ************************************************************************************************ 
                                -function(require, exports, module) {
                                -// ************************************************************************************************ 
                                -
                                -var Script = require("Firebug/Script");
                                -Script.initialize();
                                -Script.show();
                                -
                                -// ************************************************************************************************ 
                                -});
                                -
                                -
                                - - diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader.js deleted file mode 100644 index dbac1b41..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader.js +++ /dev/null @@ -1,615 +0,0 @@ -var debug = false; - -// TODO: xxxpedro -FileCache = {}; - -var KeywordNames = { - "=break": "BREAK", - "=case": "CASE", - "=catch": "CATCH", - "=const": "VAR", - "=continue": "CONTINUE", - "=default": "DEFAULT", - "=delete": "DELETE", - "=do": "DO", - "=else": "ELSE", - "=false": "FALSE", - "=finally": "FINALLY", - "=for": "FOR", - "=function": "FUNCTION", - "=if": "IF", - "=in": "IN", - "=instanceof": "INSTANCEOF", - "=new": "NEW", - "=null": "NULL", - "=return": "RETURN", - "=switch": "SWITCH", - "=this": "THIS", - "=throw": "THROW", - "=true": "TRUE", - "=try": "TRY", - "=typeof": "TYPEOF", - "=void": "VOID", - "=while": "WHILE", - "=with": "WITH", - "=var": "VAR" -}; - -var PunctuationNames = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" -}; - -TokenReader = { - keepDocs: true, - keepWhite: false, - keepComments: false -}; - -TokenReader.getRelevantTokens = function(srcFile) -{ - var cache = FileCache[srcFile]; - - if (cache) - return cache.relevantTokens; - else - return TokenReader.parseFile(srcFile); -}; - -TokenReader.getAllTokens = function(srcFile) -{ - var cache = JSDOC.FileCache[srcFile]; - - if (cache) - return cache.tokens; - else - return TokenReader.parseFile(srcFile, true); -}; - -TokenReader.parseFile = function(srcFile, allTokens) -{ - if(debug) console.time("TokenReader.prototype.tokenize()"); - - var text; - - try - { - text = getResource(srcFile); - } - catch(e) - { - console.log("Can't read source file '"+srcFile+"': "+e.message); - } - - var cursor = 0; - var start = 0; - var line = 1; - - var c; - var str; - var q; - var length = text.length; - - var varNameChars = "$_."; - var puncNames = PunctuationNames; - - var tokens = []; - /**@ignore*/ - tokens.last = function() { return this[this.length-1]; }; - /**@ignore*/ - tokens.lastSym = function() { - for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) { - if (!(e.type == "WHIT" || e.type == "COMM")) return e; - } - }; - - var relevantTokens = []; - relevantTokens.last = tokens.last; - relevantTokens.lastSym = tokens.lastSym; - - - var look = function(n, considerWhitespace) { - if (typeof n == "undefined") n = 0; - if (typeof considerWhitespace == "undefined") considerWhitespace = false; - - if (cursor+n < 0 || cursor+n >= text.length) { - var result = new String(""); - result.eof = true; - return result; - } - else if ( considerWhitespace ) { - var count = 0; - var i = cursor; - - while (true) { - if (text.charAt(n+i).match(/\s/) ) { - if (n < 0) i--; else i++; - continue; - } - else { - return text.charAt(n+i); - } - } - } - else { - return text.charAt(cursor+n); - } - }; - - var next = function(n) { - if (typeof n == "undefined") n = 1; - if (n < 1) return null; - - var pulled = ""; - for (var i = 0; i < n; i++) { - if (cursor+i < text.length) { - - // TODO: xxxpedro line number - if (text.charAt(cursor+i) == "\n") { - line++; - } - - pulled += text.charAt(cursor+i); - } - else { - var result = new String(""); - result.eof = true; - return result; - } - } - - cursor += n; - return pulled; - }; - - var balance = function(/**String*/start, /**String*/stop) { - if (!stop) stop = JSDOC.Lang.matching(start); - - var token; - var depth = 0; - var got = []; - var started = false; - - while ((token = look())) { - if (token.isa == start) { - depth++; - started = true; - } - - if (started) { - got.push(token); - } - - if (token.isa == stop) { - depth--; - if (depth == 0) return got; - } - if (!next()) break; - } - }; - - var createToken = function(data, type, name) { - - var token = { - data: data, - type: type, - name: name, - line: start - }; - - token.is = function(what) { - return this.name === what || this.type === what; - }; - - tokens.push(token); - - if (name == "JSDOC") - { - relevantTokens.push(token); - } - else if (type != "COMM" && type != "WHIT") - { - relevantTokens.push(token); - } - - return token; - }; - - - c = text.charAt(cursor); - - while (cursor < length) { - - start = line; - //stream.line = line; - //stream.cursor = cursor; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Whitespace - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (c <= " ") - { - str = c; - cursor++; - - if (c == "\n") line++; - - while (true) { - c = text.charAt(cursor); - if (c == "\n") line++; - - if (!c || c > " ") - { - break; - } - str += c; - cursor++; - } - - //if (this.collapseWhite) str = " "; - //if (this.keepWhite) createToken(str, "WHIT", "SPACE"); - createToken(str, "WHIT", "SPACE"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // names - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) { - str = c; - cursor += 1; - for (;;) { - c = text.charAt(cursor); - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) { - str += c; - cursor += 1; - } else { - break; - } - } - - var name; - if ((name = KeywordNames[str])) createToken(str, "KEYW", name); - else createToken(str, "NAME", "NAME"); - - //console.log("name " + str + " : " + line + " (" + cursor + "/" + length + ")"); - //result.push(make('name', str)); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // number - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - } else if (c >= '0' && c <= '9') { - str = c; - cursor += 1; - - // Look for more digits. - - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - cursor += 1; - str += c; - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - cursor += 1; - str += c; - c = text.charAt(cursor); - if (c === '-' || c === '+') { - cursor += 1; - str += c; - c = text.charAt(cursor); - } - if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - } - do { - cursor += 1; - str += c; - c = text.charAt(cursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - cursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - n = +str; - if (isFinite(n)) { - //result.push(make('number', n)); - createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - } else { - //make('number', str).error("Bad number"); - } - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // multi-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c == "/" && text.charAt(cursor+1) == "*") { - - var isJSDOC = text.charAt(cursor+3); - isJSDOC = text.charAt(cursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - cursor += 2; - - while (true) { - c = text.charAt(cursor); - str += c; - if (c == "\n") line++; - - if ( c == "*" && text.charAt(cursor+1) == "/") - { - str += "/"; - cursor += 2; - c = text.charAt(cursor); - break; - } - cursor++; - } - - // to start doclet we allow /** or /*** but not /** / or /**** - //if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC"); - //else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream ); - - if (isJSDOC) createToken(str, "COMM", "JSDOC"); - else createToken(str, "COMM", "MULTI_LINE_COMM"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // single-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c === '/' && text.charAt(cursor + 1) === '/') { - str = c; - - for (;;) { - cursor++; - c = text.charAt(cursor); - if (c == "\n") line++; - - if (c === '\n' || c === '\r' || c === '') { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - createToken(str, "COMM", "SINGLE_LINE_COMM"); - - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // string - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c === '\'' || c === '"') { - str = c; - q = c; - for (;;) { - cursor += 1; - c = text.charAt(cursor); - str += c; - - if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - } - - // Look for the closing quote. - - if (c === q) { - break; - } - - // Look for escapement. - - if (c === '\\') { - cursor += 1; - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = text.charAt(cursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = parseInt(text.substr(cursor + 1, 4), 16); - if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - } - c = String.fromCharCode(c); - cursor += 4; - break; - } - } - } - cursor += 1; - //result.push(make('string', str)); - createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - c = text.charAt(cursor); - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // regular expression - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c == "/") - { - - //console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" )); - - if ( - !(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol - !last.is("NUMB") && !last.is("NAME") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET") - ) - { - - str = c; - var lastC = c; - - while(true) - { - cursor++; - c = text.charAt(cursor); - str += c; - - if (c == "/" && lastC != "^" && (lastC != "\\" || (lastC == "\\" && cursor > 2 && text.charAt(cursor-2) == "\\")) ) - { - break; - } - lastC = c; - } - - //console.log("REGX " + str); - createToken(str, "REGX", "REGX"); - - cursor++; - c = text.charAt(cursor); - - continue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // punctuations and/or operators - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - if (puncNames[c]) - { - str = c; - - while (true) - { - cursor++; - c = text.charAt(cursor); - - if (!c || !puncNames[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + cursor + "/" + length + ")"); - createToken(str, "PUNC", puncNames[str]); - - continue; - } - - if (debug) - console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length); - - // if execution reaches here then an error has happened - createToken(next(), "TOKN", "UNKNOWN_TOKEN"); - - } - - // TODO: xxxpedro performance - cache source - FileCache[srcFile] = { - text: text, - lines: line, - tokens: tokens, - relevantTokens: relevantTokens - }; - - if (debug) console.timeEnd("TokenReader.prototype.tokenize()"); - - return allTokens ? tokens : relevantTokens; -}; - diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js deleted file mode 100644 index 6533f12e..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js +++ /dev/null @@ -1,702 +0,0 @@ -// TODO: divide string into chuncks - -var debug = false; - -// TODO: xxxpedro -FileCache = {}; - -var KeywordNames = { - "=break": "BREAK", - "=case": "CASE", - "=catch": "CATCH", - "=const": "VAR", - "=continue": "CONTINUE", - "=default": "DEFAULT", - "=delete": "DELETE", - "=do": "DO", - "=else": "ELSE", - "=false": "FALSE", - "=finally": "FINALLY", - "=for": "FOR", - "=function": "FUNCTION", - "=if": "IF", - "=in": "IN", - "=instanceof": "INSTANCEOF", - "=new": "NEW", - "=null": "NULL", - "=return": "RETURN", - "=switch": "SWITCH", - "=this": "THIS", - "=throw": "THROW", - "=true": "TRUE", - "=try": "TRY", - "=typeof": "TYPEOF", - "=void": "VOID", - "=while": "WHILE", - "=with": "WITH", - "=var": "VAR" -}; - -var PunctuationNames = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" -}; - -TokenReader = { - keepDocs: true, - keepWhite: false, - keepComments: false -}; - -TokenReader.getRelevantTokens = function(srcFile) -{ - var cache = FileCache[srcFile]; - - if (cache) - return cache.relevantTokens; - else - return TokenReader.parseFile(srcFile); -}; - -TokenReader.getAllTokens = function(srcFile) -{ - var cache = JSDOC.FileCache[srcFile]; - - if (cache) - return cache.tokens; - else - return TokenReader.parseFile(srcFile, true); -}; - -TokenReader.parseFile = function(srcFile, allTokens) -{ - if(debug) console.time("TokenReader.prototype.tokenize()"); - - var _text; - - try - { - _text = getResource(srcFile); - } - catch(e) - { - console.log("Can't read source file '"+srcFile+"': "+e.message); - } - - var cursor = 0; - var start = 0; - var line = 1; - - var _c; - - var tokens = []; - /**@ignore*/ - tokens.last = function() { return this[this.length-1]; }; - /**@ignore*/ - tokens.lastSym = function() { - for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) { - if (!(e.type == "WHIT" || e.type == "COMM")) return e; - } - }; - - var relevantTokens = []; - relevantTokens.last = tokens.last; - relevantTokens.lastSym = tokens.lastSym; - - - var look = function(n, considerWhitespace) { - if (typeof n == "undefined") n = 0; - if (typeof considerWhitespace == "undefined") considerWhitespace = false; - - if (cursor+n < 0 || cursor+n >= _text.length) { - var result = new String(""); - result.eof = true; - return result; - } - else if ( considerWhitespace ) { - var count = 0; - var i = cursor; - - while (true) { - if (_text.charAt(n+i).match(/\s/) ) { - if (n < 0) i--; else i++; - continue; - } - else { - return _text.charAt(n+i); - } - } - } - else { - return _text.charAt(cursor+n); - } - }; - - var next = function(n) { - if (typeof n == "undefined") n = 1; - if (n < 1) return null; - - var pulled = ""; - for (var i = 0; i < n; i++) { - if (cursor+i < _text.length) { - - // TODO: xxxpedro line number - if (_text.charAt(cursor+i) == "\n") { - line++; - } - - pulled += _text.charAt(cursor+i); - } - else { - var result = new String(""); - result.eof = true; - return result; - } - } - - cursor += n; - return pulled; - }; - - var balance = function(/**String*/start, /**String*/stop) { - if (!stop) stop = JSDOC.Lang.matching(start); - - var token; - var depth = 0; - var got = []; - var started = false; - - while ((token = look())) { - if (token.isa == start) { - depth++; - started = true; - } - - if (started) { - got.push(token); - } - - if (token.isa == stop) { - depth--; - if (depth == 0) return got; - } - if (!next()) break; - } - }; - - var _createToken = function(data, type, name) { - - var token = { - data: data, - type: type, - name: name, - line: start - }; - - token.is = function(what) { - return this.name === what || this.type === what; - }; - - tokens.push(token); - - if (name == "JSDOC") - { - relevantTokens.push(token); - } - else if (type != "COMM" && type != "WHIT") - { - relevantTokens.push(token); - } - - return token; - }; - - - _c = _text.charAt(cursor); - - var processingCallback; - var processingTime = 0; - var processing = function() - { - processingTime = new Date().getTime(); - - var c = _c; - - var text = _text; - var length = text.length; - var createToken = _createToken; - - var q; - var str; - var varNameChars = "$_."; - var Punctuations = PunctuationNames; - var Keywords = KeywordNames; - - - while (cursor < length) { - - /* - // NO INTERRUPTIONS - if (new Date().getTime() - processingTime > 75) { - setTimeout(processing, 25); - break; - } - /**/ - - - start = line; - //stream.line = line; - //stream.cursor = cursor; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Whitespace - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (c <= " ") - { - str = c; - cursor++; - - if (c == "\n") line++; - - while (true) { - c = text.charAt(cursor); - if (c == "\n") line++; - - if (!c || c > " ") - { - break; - } - str += c; - cursor++; - } - - //if (this.collapseWhite) str = " "; - //if (this.keepWhite) createToken(str, "WHIT", "SPACE"); - createToken(str, "WHIT", "SPACE"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // names - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) { - str = c; - cursor += 1; - for (;;) { - c = text.charAt(cursor); - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) { - str += c; - cursor += 1; - } else { - break; - } - } - - var name; - if ((name = Keywords[str])) createToken(str, "KEYW", name); - else createToken(str, "NAME", "NAME"); - - //console.log("name " + str + " : " + line + " (" + cursor + "/" + length + ")"); - //result.push(make('name', str)); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // number - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - } else if (c >= '0' && c <= '9') { - str = c; - cursor += 1; - - // Look for more digits. - - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - cursor += 1; - str += c; - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - cursor += 1; - str += c; - c = text.charAt(cursor); - if (c === '-' || c === '+') { - cursor += 1; - str += c; - c = text.charAt(cursor); - } - if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - } - do { - cursor += 1; - str += c; - c = text.charAt(cursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - cursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - n = +str; - if (isFinite(n)) { - //result.push(make('number', n)); - createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - } else { - //make('number', str).error("Bad number"); - } - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // multi-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c == "/" && text.charAt(cursor+1) == "*") { - - var isJSDOC = text.charAt(cursor+3); - isJSDOC = text.charAt(cursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - cursor += 2; - - while (true) { - c = text.charAt(cursor); - str += c; - if (c == "\n") line++; - - if ( c == "*" && text.charAt(cursor+1) == "/") - { - str += "/"; - cursor += 2; - c = text.charAt(cursor); - break; - } - cursor++; - } - - // to start doclet we allow /** or /*** but not /** / or /**** - //if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC"); - //else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream ); - - if (isJSDOC) createToken(str, "COMM", "JSDOC"); - else createToken(str, "COMM", "MULTI_LINE_COMM"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // single-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c === '/' && text.charAt(cursor + 1) === '/') { - str = c; - - for (;;) { - cursor++; - c = text.charAt(cursor); - if (c == "\n") line++; - - if (c === '\n' || c === '\r' || c === '') { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - createToken(str, "COMM", "SINGLE_LINE_COMM"); - - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // string - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c === '\'' || c === '"') { - str = c; - q = c; - for (;;) { - cursor += 1; - c = text.charAt(cursor); - str += c; - - if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - } - - // Look for the closing quote. - - if (c === q) { - break; - } - - // Look for escapement. - - if (c === '\\') { - cursor += 1; - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = text.charAt(cursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = parseInt(text.substr(cursor + 1, 4), 16); - if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - } - c = String.fromCharCode(c); - cursor += 4; - break; - } - } - } - cursor += 1; - //result.push(make('string', str)); - createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - c = text.charAt(cursor); - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // regular expression - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c == "/") - { - - //console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" )); - - if ( - !(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol - !last.is("NUMB") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET") && - (!last.is("NAME") || last.is("NAME") && last.data == "return") - ) - { - - str = c; - var escapeNext = false; - - while(true) - { - cursor++; - c = text.charAt(cursor); - str += c; - - if (escapeNext) - { - escapeNext = false; - continue; - } - - if (c == "\\") - { - escapeNext = true; - continue; - } - - if (c == "/") - { - var nextC = text.charAt(cursor+1); - if (nextC == "g" || nextC == "i") - { - cursor++; - c = text.charAt(cursor); - str += c; - } - - break; - } - } - - //console.log("REGX " + str); - createToken(str, "REGX", "REGX"); - - cursor++; - c = text.charAt(cursor); - - continue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // punctuations and/or operators - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - if (Punctuations[c]) - { - str = c; - - while (true) - { - cursor++; - c = text.charAt(cursor); - - if (!c || !Punctuations[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + cursor + "/" + length + ")"); - createToken(str, "PUNC", Punctuations[str]); - - continue; - } - - //debugger; - if (debug) - console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length); - - // if execution reaches here then an error has happened - createToken(next(), "TOKN", "UNKNOWN_TOKEN"); - - } - - - - _c = c; - - - - if (cursor < length) - { - //console.log(cursor, length, Math.round(cursor/length*100)+"%") - - out.innerHTML = Math.round(cursor/length*100)+"%"; - } - else if (cursor >= length) - { - // end - processingCallback(); - } - }; - - - - - // TODO: xxxpedro performance - cache source - processingCallback = function() - { - totalTime = new Date().getTime() - totalTime; - - var numLines = _text.split(/n/).length; - - out.innerHTML = "finished in " + (totalTime/1000).toFixed(2) + " seconds", - " per line " + (totalTime/numLines).toFixed(2) + " ms" - ; - - - /* - FileCache[srcFile] = { - text: text, - lines: line, - tokens: tokens, - relevantTokens: relevantTokens - }; - - if (debug) console.timeEnd("TokenReader.prototype.tokenize()"); - - var result = allTokens ? tokens : relevantTokens; - - - console.log( "Ok" );*/ - } - - var totalTime = new Date().getTime(); - var out = document.getElementById("progressText"); - processing(); -}; - diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4.js deleted file mode 100644 index 7950d578..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader4.js +++ /dev/null @@ -1,700 +0,0 @@ -// TODO: divide string into chuncks - -var debug = false; - -// TODO: xxxpedro -FileCache = {}; - -var KeywordNames = { - "=break": "BREAK", - "=case": "CASE", - "=catch": "CATCH", - "=const": "VAR", - "=continue": "CONTINUE", - "=default": "DEFAULT", - "=delete": "DELETE", - "=do": "DO", - "=else": "ELSE", - "=false": "FALSE", - "=finally": "FINALLY", - "=for": "FOR", - "=function": "FUNCTION", - "=if": "IF", - "=in": "IN", - "=instanceof": "INSTANCEOF", - "=new": "NEW", - "=null": "NULL", - "=return": "RETURN", - "=switch": "SWITCH", - "=this": "THIS", - "=throw": "THROW", - "=true": "TRUE", - "=try": "TRY", - "=typeof": "TYPEOF", - "=void": "VOID", - "=while": "WHILE", - "=with": "WITH", - "=var": "VAR" -}; - -var PunctuationNames = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" -}; - -TokenReader = { - keepDocs: true, - keepWhite: false, - keepComments: false -}; - -TokenReader.getRelevantTokens = function(srcFile) -{ - var cache = FileCache[srcFile]; - - if (cache) - return cache.relevantTokens; - else - return TokenReader.parseFile(srcFile); -}; - -TokenReader.getAllTokens = function(srcFile) -{ - var cache = JSDOC.FileCache[srcFile]; - - if (cache) - return cache.tokens; - else - return TokenReader.parseFile(srcFile, true); -}; - -TokenReader.parseFile = function(srcFile, allTokens) -{ - if(debug) console.time("TokenReader.prototype.tokenize()"); - - var _text; - - try - { - _text = getResource(srcFile); - } - catch(e) - { - console.log("Can't read source file '"+srcFile+"': "+e.message); - } - - var cursor = 0; - var start = 0; - var line = 1; - - var _c; - - var tokens = []; - /**@ignore*/ - tokens.last = function() { return this[this.length-1]; }; - /**@ignore*/ - tokens.lastSym = function() { - for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) { - if (!(e.type == "WHIT" || e.type == "COMM")) return e; - } - }; - - var relevantTokens = []; - relevantTokens.last = tokens.last; - relevantTokens.lastSym = tokens.lastSym; - - - var look = function(n, considerWhitespace) { - if (typeof n == "undefined") n = 0; - if (typeof considerWhitespace == "undefined") considerWhitespace = false; - - if (cursor+n < 0 || cursor+n >= _text.length) { - var result = new String(""); - result.eof = true; - return result; - } - else if ( considerWhitespace ) { - var count = 0; - var i = cursor; - - while (true) { - if (_text.charAt(n+i).match(/\s/) ) { - if (n < 0) i--; else i++; - continue; - } - else { - return _text.charAt(n+i); - } - } - } - else { - return _text.charAt(cursor+n); - } - }; - - var next = function(n) { - if (typeof n == "undefined") n = 1; - if (n < 1) return null; - - var pulled = ""; - for (var i = 0; i < n; i++) { - if (cursor+i < _text.length) { - - // TODO: xxxpedro line number - if (_text.charAt(cursor+i) == "\n") { - line++; - } - - pulled += _text.charAt(cursor+i); - } - else { - var result = new String(""); - result.eof = true; - return result; - } - } - - cursor += n; - return pulled; - }; - - var balance = function(/**String*/start, /**String*/stop) { - if (!stop) stop = JSDOC.Lang.matching(start); - - var token; - var depth = 0; - var got = []; - var started = false; - - while ((token = look())) { - if (token.isa == start) { - depth++; - started = true; - } - - if (started) { - got.push(token); - } - - if (token.isa == stop) { - depth--; - if (depth == 0) return got; - } - if (!next()) break; - } - }; - - var _createToken = function(data, type, name) { - - var token = { - data: data, - type: type, - name: name, - line: start - }; - - token.is = function(what) { - return this.name === what || this.type === what; - }; - - tokens.push(token); - - if (name == "JSDOC") - { - relevantTokens.push(token); - } - else if (type != "COMM" && type != "WHIT") - { - relevantTokens.push(token); - } - - return token; - }; - - - _c = _text.charAt(cursor); - - var processingCallback; - var processingTime = 0; - var processing = function() - { - processingTime = new Date().getTime(); - - var c = _c; - - var text = _text; - var length = text.length; - var createToken = _createToken; - - var q; - var str; - var varNameChars = "$_."; - var Punctuations = PunctuationNames; - var Keywords = KeywordNames; - - - while (cursor < length) { - - - if (new Date().getTime() - processingTime > 75) { - setTimeout(processing, 25); - break; - } - - - start = line; - //stream.line = line; - //stream.cursor = cursor; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // Whitespace - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - if (c <= " ") - { - str = c; - cursor++; - - if (c == "\n") line++; - - while (true) { - c = text.charAt(cursor); - if (c == "\n") line++; - - if (!c || c > " ") - { - break; - } - str += c; - cursor++; - } - - //if (this.collapseWhite) str = " "; - //if (this.keepWhite) createToken(str, "WHIT", "SPACE"); - createToken(str, "WHIT", "SPACE"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // names - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) { - str = c; - cursor += 1; - for (;;) { - c = text.charAt(cursor); - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) { - str += c; - cursor += 1; - } else { - break; - } - } - - var name; - if ((name = Keywords[str])) createToken(str, "KEYW", name); - else createToken(str, "NAME", "NAME"); - - //console.log("name " + str + " : " + line + " (" + cursor + "/" + length + ")"); - //result.push(make('name', str)); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // number - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - } else if (c >= '0' && c <= '9') { - str = c; - cursor += 1; - - // Look for more digits. - - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - cursor += 1; - str += c; - for (;;) { - c = text.charAt(cursor); - if (c < '0' || c > '9') { - break; - } - cursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - cursor += 1; - str += c; - c = text.charAt(cursor); - if (c === '-' || c === '+') { - cursor += 1; - str += c; - c = text.charAt(cursor); - } - if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - } - do { - cursor += 1; - str += c; - c = text.charAt(cursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - cursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - n = +str; - if (isFinite(n)) { - //result.push(make('number', n)); - createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - } else { - //make('number', str).error("Bad number"); - } - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // multi-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c == "/" && text.charAt(cursor+1) == "*") { - - var isJSDOC = text.charAt(cursor+3); - isJSDOC = text.charAt(cursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - cursor += 2; - - while (true) { - c = text.charAt(cursor); - str += c; - if (c == "\n") line++; - - if ( c == "*" && text.charAt(cursor+1) == "/") - { - str += "/"; - cursor += 2; - c = text.charAt(cursor); - break; - } - cursor++; - } - - // to start doclet we allow /** or /*** but not /** / or /**** - //if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC"); - //else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream ); - - if (isJSDOC) createToken(str, "COMM", "JSDOC"); - else createToken(str, "COMM", "MULTI_LINE_COMM"); - - continue; - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // single-line comment - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - } else if (c === '/' && text.charAt(cursor + 1) === '/') { - str = c; - - for (;;) { - cursor++; - c = text.charAt(cursor); - if (c == "\n") line++; - - if (c === '\n' || c === '\r' || c === '') { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - createToken(str, "COMM", "SINGLE_LINE_COMM"); - - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // string - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c === '\'' || c === '"') { - str = c; - q = c; - for (;;) { - cursor += 1; - c = text.charAt(cursor); - str += c; - - if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - } - - // Look for the closing quote. - - if (c === q) { - break; - } - - // Look for escapement. - - if (c === '\\') { - cursor += 1; - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = text.charAt(cursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - if (cursor >= length) { - //make('string', str).error("Unterminated string"); - } - c = parseInt(text.substr(cursor + 1, 4), 16); - if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - } - c = String.fromCharCode(c); - cursor += 4; - break; - } - } - } - cursor += 1; - //result.push(make('string', str)); - createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - c = text.charAt(cursor); - continue; - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // regular expression - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - else if (c == "/") - { - - //console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" )); - - if ( - !(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol - !last.is("NUMB") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET") && - (!last.is("NAME") || last.is("NAME") && last.data == "return") - ) - { - - str = c; - var escapeNext = false; - - while(true) - { - cursor++; - c = text.charAt(cursor); - str += c; - - if (escapeNext) - { - escapeNext = false; - continue; - } - - if (c == "\\") - { - escapeNext = true; - continue; - } - - if (c == "/") - { - var nextC = text.charAt(cursor+1); - if (nextC == "g" || nextC == "i") - { - cursor++; - c = text.charAt(cursor); - str += c; - } - - break; - } - } - - //console.log("REGX " + str); - createToken(str, "REGX", "REGX"); - - cursor++; - c = text.charAt(cursor); - - continue; - } - } - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - // punctuations and/or operators - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - - if (Punctuations[c]) - { - str = c; - - while (true) - { - cursor++; - c = text.charAt(cursor); - - if (!c || !Punctuations[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + cursor + "/" + length + ")"); - createToken(str, "PUNC", Punctuations[str]); - - continue; - } - - //debugger; - if (debug) - console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length); - - // if execution reaches here then an error has happened - createToken(next(), "TOKN", "UNKNOWN_TOKEN"); - - } - - - - _c = c; - - - - if (cursor < length) - { - //console.log(cursor, length, Math.round(cursor/length*100)+"%") - - out.innerHTML = Math.round(cursor/length*100)+"%"; - } - else if (cursor >= length) - { - // end - processingCallback(); - } - }; - - - - - // TODO: xxxpedro performance - cache source - processingCallback = function() - { - totalTime = new Date().getTime() - totalTime; - - var numLines = _text.split(/n/).length; - - out.innerHTML = "finished in " + (totalTime/1000).toFixed(2) + " seconds", - " per line " + (totalTime/numLines).toFixed(2) + " ms" - ; - - - /* - FileCache[srcFile] = { - text: text, - lines: line, - tokens: tokens, - relevantTokens: relevantTokens - }; - - if (debug) console.timeEnd("TokenReader.prototype.tokenize()"); - - var result = allTokens ? tokens : relevantTokens; - - - console.log( "Ok" );*/ - } - - var totalTime = new Date().getTime(); - var out = document.getElementById("progressText"); - processing(); -}; - diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js deleted file mode 100644 index fdc5faba..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js +++ /dev/null @@ -1,769 +0,0 @@ -/* - -TODO: - - options: - - alltokens, relevanttokens - - comment/jsdoc/spaces flags - - custom language keywords - - - html parser - - cssparser - - allow multiple instances - -*/ -var parseFile = function(sourceText, allTokens) -{ - var renderTokens = true; - var debug = false; - - - // normalize line breaks - sourceText = sourceText.replace(/\r\n/g, "\n"); - - - var numOfInterruptions = 0; - var bufferStart = 0; - - var _sourceTextLength = sourceText.length; - var _lines = sourceText.split("\n"); - - var _continuation = { - main: {line: -1, lineCursor: -1, lineLength: 0}, - deep: {} - }; - - var _tokens = []; - - var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - - var _Keywords = { - "break": "BREAK", - "case": "CASE", - "catch": "CATCH", - "const": "VAR", - "continue": "CONTINUE", - "default": "DEFAULT", - "delete": "DELETE", - "do": "DO", - "else": "ELSE", - "false": "FALSE", - "finally": "FINALLY", - "for": "FOR", - "function": "FUNCTION", - "if": "IF", - "in": "IN", - "instanceof": "INSTANCEOF", - "new": "NEW", - "null": "NULL", - "return": "RETURN", - "switch": "SWITCH", - "this": "THIS", - "throw": "THROW", - "true": "TRUE", - "try": "TRY", - "typeof": "TYPEOF", - "void": "VOID", - "while": "WHILE", - "with": "WITH", - "var": "VAR" - }; - - var _Punctuations = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" - }; - - var processing = function() - { - var next = function() - { - // a line is loaded and the cursor is not at the end, so move the - // cursor one position and return the character at that position - if (lineText && lineCursor < lineLength - 1) - { - lineCursor++ - return lineText.charAt(lineCursor); - } - - // cursor have reached the end of the stream - if (line == numOfLines - 1) - { - return "(end)"; - } - - // if we are here, cursor have reached the end of the line - - // add the length of the last line (or the initialized zero value) - // plus one newline character. The sum bufferStart + lineCursor - // guives the exact position of the cursor in the source and in - // the end bufferStart + lineCursor equals to sourceTextLength - bufferStart += lineLength + 1; - - // load new line and set the cursor back to the beginning - line++; - lineCursor = -1; - lineText = lines[line]; - lineLength = lineText.length; - - // return the the new line indicator - return "(newline)"; - }; - - // references to constants - var Keywords = _Keywords; - var Punctuations = _Punctuations; - var NameFirstChars = _NameFirstChars; - var NameChars = _NameChars ; - var sourceTextLength = _sourceTextLength; - - // references to objects - var continuation = _continuation; - var tokens = _tokens; - var lines = _lines; - - // cache number of lines - var numOfLines = lines.length; - - // internal variables - var q; // aux variable to hold quote character, and number conversion - var str; // variable to hold the token being constructed - var start; // the line in which the token has started - var focus; // the current focus of the iteration. its value will be the current character - // being processed, or if a deep interruption happened (the deep loop which parser an - // individual token has been interrupted) its value will be the first character that - // started the token's processing (eg, if it was during a name processing it will - // be the first letter of the name). This variable allows remembering which deep loop - // was being executed before interrupting the execution. - - - // processing continuation state - var state = continuation.main; - - var line = state.line; // current line - var lineCursor = state.lineCursor; // current cursor (column) position - var lineText = state.lineText; // current line's text - var lineLength = state.lineLength; // current line's length - var lastToken = state.lastToken; // last relevant token generated - var lastFocus = state.lastFocus; // last focus before interrupting - var interrupted = state.interrupted;// deep loop interruption indication - - var c = state.c || next(); // current character being processed - - // start measuring current processing time - var processingTime = new Date().getTime(); - - while (c != "(end)") - { - -// if (new Date().getTime() - processingTime > 75) -// { -// setTimeout(processing, 25); -// //console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength); -// break; -// } - - focus = interrupted ? lastFocus : c; - - //console.log("focus %o cursor %d interrupted %o ", lastFocus, lineCursor, interrupted); - - start = line; - - - // ************************************************************************************ - // newline - // ************************************************************************************ - - if (focus == '(newline)') - { - tokens.push({type: "newline", data: null, line: start}); - } - - // ************************************************************************************ - // whitespace - // ************************************************************************************ - - else if (focus == ' ') - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { -// if (new Date().getTime() - processingTime > 75) -// { -// lastFocus = focus; -// interrupted = true; -// break; -// } - - c = next(); - - if (c == "(end)" || c > " ") - { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - continuation.deep = {}; - tokens.push({type: "space", data: str, line: start}); - - debug && console.log("spaces: "+str.length); - } - else - { - continuation.deep = {str: str}; - } - - continue; - } - - // ************************************************************************************ - // name - // ************************************************************************************ - - else if (NameFirstChars.indexOf(focus) != -1) - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { -// if (new Date().getTime() - processingTime > 75) -// { -// lastFocus = focus; -// interrupted = true; -// break; -// } - - c = next(); - - if (NameChars.indexOf(c) == -1) { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - if (Keywords[str]) - tokens.push(lastToken = {type: "keyw", data: str, line: start}); - else - tokens.push(lastToken = {type: "name", data: str, line: start}); - - debug && console.log("name: "+str); - } - else - { - continuation.deep = {str: str}; - } - - continue; - - } - - // ************************************************************************************ - // number - // ************************************************************************************ - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - else if (focus >= '0' && focus <= '9') - { - str = c; - lineCursor += 1; - - // Look for more digits. - - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - lineCursor += 1; - str += c; - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - if (c === '-' || c === '+') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } - //if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - //} - do { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - lineCursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - q = +str; - if (isFinite(q)) { - //result.push(make('number', n)); - //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - tokens.push(lastToken = {type: "numb", data: str, line: start}); - } else { - //make('number', str).error("Bad number"); - } - - continue; - } - - // ************************************************************************************ - // multi-line comment - // ************************************************************************************ - - else if (focus == "/" && lineText.charAt(lineCursor+1) == "*") - { - - var isJSDOC = lineText.charAt(lineCursor+3); - isJSDOC = lineText.charAt(lineCursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - next(); - //lineCursor += 2; - - while (true) { - c = next(); - - if (c == "(newline)") - { - if (str) - tokens.push({type: "comm", data: str, line: start}); - - tokens.push({type: "newline", data: null, line: start}); - str = ""; - continue; - } - - //c = lineText.charAt(lineCursor); - str += c; - //if (c == "\n") line++; - - if ( c == "*" && lineText.charAt(lineCursor+1) == "/") - { - str += "/"; - next(); - c = next(); - //lineCursor += 2; - //c = lineText.charAt(lineCursor); - break; - } - //lineCursor++; - } - - //if (isJSDOC) createToken(str, "COMM", "JSDOC"); - //else createToken(str, "COMM", "MULTI_LINE_COMM"); - tokens.push({type: "comm", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // single-line comment - // ************************************************************************************ - - else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/') - { - str = c; - - for (;;) { - lineCursor++; - c = lineText.charAt(lineCursor); - //if (c == "\n") line++; - - //if (c === '\n' || c === '\r' || c === '') { - if (!c) { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - //createToken(str, "COMM", "SINGLE_LINE_COMM"); - tokens.push({type: "comm", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // string - // ************************************************************************************ - - else if (focus === '\'' || focus === '"') - { - state = continuation.deep; - - str = state.str || c; - q = state.q || c; - //str = c; - //q = c; - - for (;;) - { -// if (new Date().getTime() - processingTime > 75) -// { -// lastFocus = focus; -// interrupted = true; -// //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength); -// break; -// -// } - - lineCursor += 1; - c = lineText.charAt(lineCursor); - str += c; - - //if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - //} - - // Look for the closing quote. - - if (c === q) - { - interrupted = false; - break; - } - - // Look for escapement. - - if (c === '\\') - { - lineCursor += 1; - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = lineText.charAt(lineCursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = parseInt(lineText.substr(lineCursor + 1, 4), 16); - //if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - //} - c = String.fromCharCode(c); - lineCursor += 4; - break; - } - } - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - lineCursor += 1; - //result.push(make('string', str)); - //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - tokens.push(lastToken = {type: "strn", data: str, line: start}); - c = lineText.charAt(lineCursor); - } - else - { - continuation.deep = {str: str, q: q}; - } - - continue; - } - - // ************************************************************************************ - // regular expression - // ************************************************************************************ - - else if (focus == "/") - { - var last = lastToken || {}; - var lastData = last.data; - var lastType = last.type; - if ( - !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && - (lastType != "name" || lastType == "name" && lastData == "return") - ) - { - - str = c; - var escapeNext = false; - - while(true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - - if (escapeNext) - { - escapeNext = false; - continue; - } - - if (c == "\\") - { - escapeNext = true; - continue; - } - - if (c == "/") - { - var nextC = lineText.charAt(lineCursor+1); - if (nextC == "g" || nextC == "i") - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - } - - break; - } - } - - //console.log("REGX " + str); - tokens.push(lastToken = {type: "regx", data: str, line: start}); - - lineCursor++; - c = lineText.charAt(lineCursor); - - continue; - } - } - - // ************************************************************************************ - // punctuations and/or operators - // ************************************************************************************ - - if (Punctuations[focus]) - { - str = c; - - while (true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - - //c = next(); - - if (!c || !Punctuations[str+c]) - //if (!Punctuations[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + lineCursor + "/" + lineLength + ")"); - tokens.push(lastToken = {type: "punc", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // fail - // ************************************************************************************ - c = next(); - - } - - continuation.main = { - c: c, - line: line, - lineCursor: lineCursor, - lineText: lineText, - lineLength: lineLength, - lastToken: lastToken, - interrupted: interrupted, - lastFocus: lastFocus - }; - - - if (c == "(end)") - { - var progress = bufferStart + lineCursor; - - updateProgress(progress, sourceTextLength); - - processingCallback(progress, sourceTextLength, numOfLines); - - if(renderTokens) - render(tokens); - } - else - { - updateProgress(bufferStart + lineCursor, sourceTextLength); - - if (renderTokens && tokens.length>=1000) - render(tokens); - } - }; - - var updateProgress = function(progress, total) - { - var value = progress/total; - - if (!halfProgressReached && value > 0.5) - { - halfProgressReached = true; - progressText.style.color = "#fff"; - } - - progressText.innerHTML = Math.round(value*100)+"%"; - progressFill.style.width = Math.round(value*progressBarWidth)+"px"; - }; - - var processingCallback = function(progress, total, numOfLines) - { - totalTime = new Date().getTime() - totalTime; - - var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" + - " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) "; - - progressText.innerHTML = text; - - if (window.console) - { - console.log(text); - } - }; - - var tokensRendered = false; - var render = function(tokens) - { - if (tokensRendered) - return; - - tokensRendered = true; - - var html = ['
                                '];
                                -        for (var i=1, count=1000; i
                                ');
                                -            else
                                -                html.push(''+tk.data+'');
                                -        }
                                -        html.push(' \n
                                '); - document.getElementById("source").innerHTML = html.join(""); - - window.tokens = tokens; - }; - - var callbackTimes = 0; - - var totalTime = new Date().getTime(); - - var progressText = document.getElementById("progressText"); - var progressFill = document.getElementById("progressFill"); - var progressBar = document.getElementById("progressBar"); - var progressBarWidth = progressBar.clientWidth; - var halfProgressReached = false; - - processing(); -}; diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9.js deleted file mode 100644 index 91b13291..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9.js +++ /dev/null @@ -1,769 +0,0 @@ -/* - -TODO: - - options: - - alltokens, relevanttokens - - comment/jsdoc/spaces flags - - custom language keywords - - - html parser - - cssparser - - allow multiple instances - -*/ -var parseFile = function(sourceText, allTokens) -{ - var renderTokens = true; - var debug = false; - - - // normalize line breaks - sourceText = sourceText.replace(/\r\n/g, "\n"); - - - var numOfInterruptions = 0; - var bufferStart = 0; - - var _sourceTextLength = sourceText.length; - var _lines = sourceText.split("\n"); - - var _continuation = { - main: {line: -1, lineCursor: -1, lineLength: 0}, - deep: {} - }; - - var _tokens = []; - - var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - - var _Keywords = { - "break": "BREAK", - "case": "CASE", - "catch": "CATCH", - "const": "VAR", - "continue": "CONTINUE", - "default": "DEFAULT", - "delete": "DELETE", - "do": "DO", - "else": "ELSE", - "false": "FALSE", - "finally": "FINALLY", - "for": "FOR", - "function": "FUNCTION", - "if": "IF", - "in": "IN", - "instanceof": "INSTANCEOF", - "new": "NEW", - "null": "NULL", - "return": "RETURN", - "switch": "SWITCH", - "this": "THIS", - "throw": "THROW", - "true": "TRUE", - "try": "TRY", - "typeof": "TYPEOF", - "void": "VOID", - "while": "WHILE", - "with": "WITH", - "var": "VAR" - }; - - var _Punctuations = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" - }; - - var processing = function() - { - var next = function() - { - // a line is loaded and the cursor is not at the end, so move the - // cursor one position and return the character at that position - if (lineText && lineCursor < lineLength - 1) - { - lineCursor++ - return lineText.charAt(lineCursor); - } - - // cursor have reached the end of the stream - if (line == numOfLines - 1) - { - return "(end)"; - } - - // if we are here, cursor have reached the end of the line - - // add the length of the last line (or the initialized zero value) - // plus one newline character. The sum bufferStart + lineCursor - // guives the exact position of the cursor in the source and in - // the end bufferStart + lineCursor equals to sourceTextLength - bufferStart += lineLength + 1; - - // load new line and set the cursor back to the beginning - line++; - lineCursor = -1; - lineText = lines[line]; - lineLength = lineText.length; - - // return the the new line indicator - return "(newline)"; - }; - - // references to constants - var Keywords = _Keywords; - var Punctuations = _Punctuations; - var NameFirstChars = _NameFirstChars; - var NameChars = _NameChars ; - var sourceTextLength = _sourceTextLength; - - // references to objects - var continuation = _continuation; - var tokens = _tokens; - var lines = _lines; - - // cache number of lines - var numOfLines = lines.length; - - // internal variables - var q; // aux variable to hold quote character, and number conversion - var str; // variable to hold the token being constructed - var start; // the line in which the token has started - var focus; // the current focus of the iteration. its value will be the current character - // being processed, or if a deep interruption happened (the deep loop which parser an - // individual token has been interrupted) its value will be the first character that - // started the token's processing (eg, if it was during a name processing it will - // be the first letter of the name). This variable allows remembering which deep loop - // was being executed before interrupting the execution. - - - // processing continuation state - var state = continuation.main; - - var line = state.line; // current line - var lineCursor = state.lineCursor; // current cursor (column) position - var lineText = state.lineText; // current line's text - var lineLength = state.lineLength; // current line's length - var lastToken = state.lastToken; // last relevant token generated - var lastFocus = state.lastFocus; // last focus before interrupting - var interrupted = state.interrupted;// deep loop interruption indication - - var c = state.c || next(); // current character being processed - - // start measuring current processing time - var processingTime = new Date().getTime(); - - while (c != "(end)") - { - - if (new Date().getTime() - processingTime > 75) - { - setTimeout(processing, 25); - //console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength); - break; - } - - focus = interrupted ? lastFocus : c; - - //console.log("focus %o cursor %d interrupted %o ", lastFocus, lineCursor, interrupted); - - start = line; - - - // ************************************************************************************ - // newline - // ************************************************************************************ - - if (focus == '(newline)') - { - tokens.push({type: "newline", data: null, line: start}); - } - - // ************************************************************************************ - // whitespace - // ************************************************************************************ - - else if (focus == ' ') - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - break; - } - - c = next(); - - if (c == "(end)" || c > " ") - { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - continuation.deep = {}; - tokens.push({type: "space", data: str, line: start}); - - debug && console.log("spaces: "+str.length); - } - else - { - continuation.deep = {str: str}; - } - - continue; - } - - // ************************************************************************************ - // name - // ************************************************************************************ - - else if (NameFirstChars.indexOf(focus) != -1) - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - break; - } - - c = next(); - - if (NameChars.indexOf(c) == -1) { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - if (Keywords[str]) - tokens.push(lastToken = {type: "keyw", data: str, line: start}); - else - tokens.push(lastToken = {type: "name", data: str, line: start}); - - debug && console.log("name: "+str); - } - else - { - continuation.deep = {str: str}; - } - - continue; - - } - - // ************************************************************************************ - // number - // ************************************************************************************ - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - else if (focus >= '0' && focus <= '9') - { - str = c; - lineCursor += 1; - - // Look for more digits. - - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - lineCursor += 1; - str += c; - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - if (c === '-' || c === '+') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } - //if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - //} - do { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - lineCursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - q = +str; - if (isFinite(q)) { - //result.push(make('number', n)); - //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - tokens.push(lastToken = {type: "numb", data: str, line: start}); - } else { - //make('number', str).error("Bad number"); - } - - continue; - } - - // ************************************************************************************ - // multi-line comment - // ************************************************************************************ - - else if (focus == "/" && lineText.charAt(lineCursor+1) == "*") - { - - var isJSDOC = lineText.charAt(lineCursor+3); - isJSDOC = lineText.charAt(lineCursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - next(); - //lineCursor += 2; - - while (true) { - c = next(); - - if (c == "(newline)") - { - if (str) - tokens.push({type: "comm", data: str, line: start}); - - tokens.push({type: "newline", data: null, line: start}); - str = ""; - continue; - } - - //c = lineText.charAt(lineCursor); - str += c; - //if (c == "\n") line++; - - if ( c == "*" && lineText.charAt(lineCursor+1) == "/") - { - str += "/"; - next(); - c = next(); - //lineCursor += 2; - //c = lineText.charAt(lineCursor); - break; - } - //lineCursor++; - } - - //if (isJSDOC) createToken(str, "COMM", "JSDOC"); - //else createToken(str, "COMM", "MULTI_LINE_COMM"); - tokens.push({type: "comm", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // single-line comment - // ************************************************************************************ - - else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/') - { - str = c; - - for (;;) { - lineCursor++; - c = lineText.charAt(lineCursor); - //if (c == "\n") line++; - - //if (c === '\n' || c === '\r' || c === '') { - if (!c) { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - //createToken(str, "COMM", "SINGLE_LINE_COMM"); - tokens.push({type: "comm", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // string - // ************************************************************************************ - - else if (focus === '\'' || focus === '"') - { - state = continuation.deep; - - str = state.str || c; - q = state.q || c; - //str = c; - //q = c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength); - break; - - } - - lineCursor += 1; - c = lineText.charAt(lineCursor); - str += c; - - //if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - //} - - // Look for the closing quote. - - if (c === q) - { - interrupted = false; - break; - } - - // Look for escapement. - - if (c === '\\') - { - lineCursor += 1; - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = lineText.charAt(lineCursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = parseInt(lineText.substr(lineCursor + 1, 4), 16); - //if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - //} - c = String.fromCharCode(c); - lineCursor += 4; - break; - } - } - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - lineCursor += 1; - //result.push(make('string', str)); - //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - tokens.push(lastToken = {type: "strn", data: str, line: start}); - c = lineText.charAt(lineCursor); - } - else - { - continuation.deep = {str: str, q: q}; - } - - continue; - } - - // ************************************************************************************ - // regular expression - // ************************************************************************************ - - else if (focus == "/") - { - var last = lastToken || {}; - var lastData = last.data; - var lastType = last.type; - if ( - !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && - (lastType != "name" || lastType == "name" && lastData == "return") - ) - { - - str = c; - var escapeNext = false; - - while(true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - - if (escapeNext) - { - escapeNext = false; - continue; - } - - if (c == "\\") - { - escapeNext = true; - continue; - } - - if (c == "/") - { - var nextC = lineText.charAt(lineCursor+1); - if (nextC == "g" || nextC == "i") - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - } - - break; - } - } - - //console.log("REGX " + str); - tokens.push(lastToken = {type: "regx", data: str, line: start}); - - lineCursor++; - c = lineText.charAt(lineCursor); - - continue; - } - } - - // ************************************************************************************ - // punctuations and/or operators - // ************************************************************************************ - - if (Punctuations[focus]) - { - str = c; - - while (true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - - //c = next(); - - if (!c || !Punctuations[str+c]) - //if (!Punctuations[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + lineCursor + "/" + lineLength + ")"); - tokens.push(lastToken = {type: "punc", data: str, line: start}); - - continue; - } - - // ************************************************************************************ - // fail - // ************************************************************************************ - c = next(); - - } - - continuation.main = { - c: c, - line: line, - lineCursor: lineCursor, - lineText: lineText, - lineLength: lineLength, - lastToken: lastToken, - interrupted: interrupted, - lastFocus: lastFocus - }; - - - if (c == "(end)") - { - var progress = bufferStart + lineCursor; - - updateProgress(progress, sourceTextLength); - - processingCallback(progress, sourceTextLength, numOfLines); - - if(renderTokens) - render(tokens); - } - else - { - updateProgress(bufferStart + lineCursor, sourceTextLength); - - if (renderTokens && tokens.length>=1000) - render(tokens); - } - }; - - var updateProgress = function(progress, total) - { - var value = progress/total; - - if (!halfProgressReached && value > 0.5) - { - halfProgressReached = true; - progressText.style.color = "#fff"; - } - - progressText.innerHTML = Math.round(value*100)+"%"; - progressFill.style.width = Math.round(value*progressBarWidth)+"px"; - }; - - var processingCallback = function(progress, total, numOfLines) - { - totalTime = new Date().getTime() - totalTime; - - var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" + - " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) "; - - progressText.innerHTML = text; - - if (window.console) - { - console.log(text); - } - }; - - var tokensRendered = false; - var render = function(tokens) - { - if (tokensRendered) - return; - - tokensRendered = true; - - var html = ['
                                '];
                                -        for (var i=1, count=1000; i
                                ');
                                -            else
                                -                html.push(''+tk.data+'');
                                -        }
                                -        html.push(' \n
                                '); - document.getElementById("source").innerHTML = html.join(""); - - window.tokens = tokens; - }; - - var callbackTimes = 0; - - var totalTime = new Date().getTime(); - - var progressText = document.getElementById("progressText"); - var progressFill = document.getElementById("progressFill"); - var progressBar = document.getElementById("progressBar"); - var progressBarWidth = progressBar.clientWidth; - var halfProgressReached = false; - - processing(); -}; diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9b.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9b.js deleted file mode 100644 index cf2f8d2f..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/TokenReader9b.js +++ /dev/null @@ -1,831 +0,0 @@ -/* - -TODO: - - options: - - alltokens, relevanttokens - - comment/jsdoc/spaces flags - - custom language keywords - - - html parser - - cssparser - - allow multiple instances - -*/ -var ParseStopIteration = {toString: function() {return "ParseStopIteration"}}; -var ParseEnd = {toString: function() {return "ParseEnd"}}; - -var parseTricker; -var processingTime2; -var parseTrick = function() -{ - var token; - var xops; - - try - { - processingTime2 = new Date().getTime(); - while(true) - { - if (new Date().getTime() - processingTime2 > 50) - { - console.log("interruption"); - setTimeout(parseTrick, 150); - break; - } - - token = parseTricker(); - } - } - catch(e) - { - console.log("interruption EEE"); - if (e == ParseStopIteration) - { - xops = true; - setTimeout(parseTrick, 150); - } - else if (e == ParseEnd) - { - alert("end"); - } - } -}; - -var parseFile = function(sourceText, allTokens) -{ - var renderTokens = true; - var debug = false; - - - // normalize line breaks - sourceText = sourceText.replace(/\r\n/g, "\n"); - - - var numOfInterruptions = 0; - var bufferStart = 0; - - var _sourceTextLength = sourceText.length; - var _lines = sourceText.split("\n"); - - var _continuation = { - main: {line: -1, lineCursor: -1, lineLength: 0}, - deep: {} - }; - - var _tokens = []; - - var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; - - var _Keywords = { - "break": "BREAK", - "case": "CASE", - "catch": "CATCH", - "const": "VAR", - "continue": "CONTINUE", - "default": "DEFAULT", - "delete": "DELETE", - "do": "DO", - "else": "ELSE", - "false": "FALSE", - "finally": "FINALLY", - "for": "FOR", - "function": "FUNCTION", - "if": "IF", - "in": "IN", - "instanceof": "INSTANCEOF", - "new": "NEW", - "null": "NULL", - "return": "RETURN", - "switch": "SWITCH", - "this": "THIS", - "throw": "THROW", - "true": "TRUE", - "try": "TRY", - "typeof": "TYPEOF", - "void": "VOID", - "while": "WHILE", - "with": "WITH", - "var": "VAR" - }; - - var _Punctuations = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" - }; - - var next = function() - { - var _next = function() - { - // a line is loaded and the cursor is not at the end, so move the - // cursor one position and return the character at that position - if (lineText && lineCursor < lineLength - 1) - { - lineCursor++ - return lineText.charAt(lineCursor); - } - - // cursor have reached the end of the stream - if (line == numOfLines - 1) - { - return "(end)"; - } - - // if we are here, cursor have reached the end of the line - - // add the length of the last line (or the initialized zero value) - // plus one newline character. The sum bufferStart + lineCursor - // guives the exact position of the cursor in the source and in - // the end bufferStart + lineCursor equals to sourceTextLength - bufferStart += lineLength + 1; - - // load new line and set the cursor back to the beginning - line++; - lineCursor = -1; - lineText = lines[line]; - lineLength = lineText.length; - - // return the the new line indicator - return "(newline)"; - }; - - // references to constants - var Keywords = _Keywords; - var Punctuations = _Punctuations; - var NameFirstChars = _NameFirstChars; - var NameChars = _NameChars ; - var sourceTextLength = _sourceTextLength; - - // references to objects - var continuation = _continuation; - var tokens = _tokens; - var lines = _lines; - - // cache number of lines - var numOfLines = lines.length; - - // internal variables - var q; // aux variable to hold quote character, and number conversion - var str; // variable to hold the token being constructed - var start; // the line in which the token has started - var focus; // the current focus of the iteration. its value will be the current character - // being processed, or if a deep interruption happened (the deep loop which parser an - // individual token has been interrupted) its value will be the first character that - // started the token's processing (eg, if it was during a name processing it will - // be the first letter of the name). This variable allows remembering which deep loop - // was being executed before interrupting the execution. - - - // processing continuation state - var state = continuation.main; - - var line = state.line; // current line - var lineCursor = state.lineCursor; // current cursor (column) position - var lineText = state.lineText; // current line's text - var lineLength = state.lineLength; // current line's length - var lastToken = state.lastToken; // last relevant token generated - var lastFocus = state.lastFocus; // last focus before interrupting - var interrupted = state.interrupted;// deep loop interruption indication - var interrupted2; - var thetoken; - - var c = state.c || _next(); // current character being processed - - // start measuring current processing time - var processingTime = new Date().getTime(); - - while (c != "(end)") - { - - if (thetoken || (new Date().getTime() - processingTime > 75)) - { - //setTimeout(processing, 25); - interrupted2 = true; - console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength); - break; - } - - focus = interrupted ? lastFocus : c; - - //console.log("focus %o cursor %d interrupted %o ", lastFocus, lineCursor, interrupted); - - start = line; - - - // ************************************************************************************ - // newline - // ************************************************************************************ - - if (focus == '(newline)') - { - thetoken = {type: "newline", data: null, line: start}; - c = lineText.charAt(++lineCursor); - break; - } - - // ************************************************************************************ - // whitespace - // ************************************************************************************ - - else if (focus == ' ') - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - break; - } - - c = _next(); - - if (c == "(end)" || c > " ") - { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - continuation.deep = {}; - thetoken ={type: "space", data: str, line: start}; - - debug && console.log("spaces: "+str.length); - break; - } - else - { - continuation.deep = {str: str}; - } - - continue; - } - - // ************************************************************************************ - // name - // ************************************************************************************ - - else if (NameFirstChars.indexOf(focus) != -1) - { - state = continuation.deep; - - str = state.str || c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - break; - } - - c = _next(); - - if (NameChars.indexOf(c) == -1) { - interrupted = false; - break; - } - - str += c; - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - if (Keywords[str]) - thetoken = lastToken = {type: "keyw", data: str, line: start}; - else - thetoken = lastToken = {type: "name", data: str, line: start}; - - debug && console.log("name: "+str); - break; - } - else - { - continuation.deep = {str: str}; - } - - continue; - - } - - // ************************************************************************************ - // number - // ************************************************************************************ - - // A number cannot start with a decimal point. It must start with a digit, - // possibly '0'. - - else if (focus >= '0' && focus <= '9') - { - str = c; - lineCursor += 1; - - // Look for more digits. - - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - - // Look for a decimal fraction part. - - if (c === '.') { - lineCursor += 1; - str += c; - for (;;) { - c = lineText.charAt(lineCursor); - if (c < '0' || c > '9') { - break; - } - lineCursor += 1; - str += c; - } - } - - // Look for an exponent part. - - if (c === 'e' || c === 'E') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - if (c === '-' || c === '+') { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } - //if (c < '0' || c > '9') { - //make('number', str).error("Bad exponent"); - //} - do { - lineCursor += 1; - str += c; - c = lineText.charAt(lineCursor); - } while (c >= '0' && c <= '9'); - } - - // Make sure the next character is not a letter. - - if (c >= 'a' && c <= 'z') { - str += c; - lineCursor += 1; - //make('number', str).error("Bad number"); - } - - // Convert the string value to a number. If it is finite, then it is a good - // token. - - q = +str; - if (isFinite(q)) { - //result.push(make('number', n)); - //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL - thetoken = lastToken = {type: "numb", data: str, line: start}; - break; - } else { - //make('number', str).error("Bad number"); - } - - continue; - }/**/ - - // ************************************************************************************ - // multi-line comment - // ************************************************************************************ - - else if (focus == "/" && lineText.charAt(lineCursor+1) == "*") - { - - var isJSDOC = lineText.charAt(lineCursor+3); - isJSDOC = lineText.charAt(lineCursor+2) == "*" && - (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** / - isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /**** - - str = "/*"; - _next(); - //lineCursor += 2; - - while (true) { - c = _next(); - - if (c == "(newline)") - { - if (str) - thetoken = {type: "comm", data: str, line: start}; - - thetoken = {type: "newline", data: null, line: start}; - str = ""; - break; - continue; - } - - //c = lineText.charAt(lineCursor); - str += c; - //if (c == "\n") line++; - - if ( c == "*" && lineText.charAt(lineCursor+1) == "/") - { - str += "/"; - _next(); - c = _next(); - //lineCursor += 2; - //c = lineText.charAt(lineCursor); - break; - } - //lineCursor++; - } - - //if (isJSDOC) createToken(str, "COMM", "JSDOC"); - //else createToken(str, "COMM", "MULTI_LINE_COMM"); - thetoken = {type: "comm", data: str, line: start}; - break; - - continue; - }/**/ - - // ************************************************************************************ - // single-line comment - // ************************************************************************************ - - else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/') - { - str = c; - - for (;;) { - lineCursor++; - c = lineText.charAt(lineCursor); - //if (c == "\n") line++; - - //if (c === '\n' || c === '\r' || c === '') { - if (!c) { - break; - } - str += c; - } - - //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM"); - //createToken(str, "COMM", "SINGLE_LINE_COMM"); - thetoken = {type: "comm", data: str, line: start}; - break; - - continue; - } - - // ************************************************************************************ - // string - // ************************************************************************************ -/* - else if (focus === '\'' || focus === '"') - { - state = continuation.deep; - - str = state.str || c; - q = state.q || c; - //str = c; - //q = c; - - for (;;) - { - if (new Date().getTime() - processingTime > 75) - { - lastFocus = focus; - interrupted = true; - //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength); - break; - - } - - lineCursor += 1; - c = lineText.charAt(lineCursor); - str += c; - - //if (c < ' ') { - //make('string', str).error(c === '\n' || c === '\r' || c === '' ? - // "Unterminated string." : - // "Control character in string.", make('', str)); - //} - - // Look for the closing quote. - - if (c === q) - { - interrupted = false; - break; - } - - // Look for escapement. - - if (c === '\\') - { - lineCursor += 1; - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = lineText.charAt(lineCursor); - switch (c) { - case 'b': - c = '\b'; - break; - case 'f': - c = '\f'; - break; - case 'n': - c = '\n'; - break; - case 'r': - c = '\r'; - break; - case 't': - c = '\t'; - break; - case 'u': - //if (lineCursor >= lineLength) { - //make('string', str).error("Unterminated string"); - //} - c = parseInt(lineText.substr(lineCursor + 1, 4), 16); - //if (!isFinite(c) || c < 0) { - //make('string', str).error("Unterminated string"); - //} - c = String.fromCharCode(c); - lineCursor += 4; - break; - } - } - } - - if (!interrupted && str) - { - // success - continuation.deep = {}; - - lineCursor += 1; - //result.push(make('string', str)); - //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE"); - thetoken = lastToken = {type: "strn", data: str, line: start}; - c = lineText.charAt(lineCursor); - break; - } - else - { - continuation.deep = {str: str, q: q}; - } - - continue; - } -/**/ - // ************************************************************************************ - // regular expression - // ************************************************************************************ - - else if (focus == "/") - { - var last = lastToken || {}; - var lastData = last.data; - var lastType = last.type; - if ( - !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && - (lastType != "name" || lastType == "name" && lastData == "return") - ) - { - - str = c; - var escapeNext = false; - - while(true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - - if (escapeNext) - { - escapeNext = false; - continue; - } - - if (c == "\\") - { - escapeNext = true; - continue; - } - - if (c == "/") - { - var nextC = lineText.charAt(lineCursor+1); - if (nextC == "g" || nextC == "i") - { - lineCursor++; - c = lineText.charAt(lineCursor); - str += c; - } - - break; - } - } - - //console.log("REGX " + str); - thetoken = lastToken = {type: "regx", data: str, line: start}; - - lineCursor++; - c = lineText.charAt(lineCursor); - - break; - - continue; - } - } - - // ************************************************************************************ - // punctuations and/or operators - // ************************************************************************************ - - if (Punctuations[focus]) - { - str = c; - - while (true) - { - lineCursor++; - c = lineText.charAt(lineCursor); - - //c = _next(); - - if (!c || !Punctuations[str+c]) - //if (!Punctuations[str+c]) - { - break; - } - - str += c; - } - - //console.log("punc " + str + " : " + line + " (" + lineCursor + "/" + lineLength + ")"); - thetoken = lastToken = {type: "punc", data: str, line: start}; - - break; - - continue; - } - - // ************************************************************************************ - // fail - // ************************************************************************************ - c = _next(); - - } - - continuation.main = { - c: c, - line: line, - lineCursor: lineCursor, - lineText: lineText, - lineLength: lineLength, - lastToken: lastToken, - interrupted: interrupted, - lastFocus: lastFocus - }; - - - if (c == "(end)") - { - var progress = bufferStart + lineCursor; - - updateProgress(progress, sourceTextLength); - - processingCallback(progress, sourceTextLength, numOfLines); - throw ParseEnd; -// if(renderTokens) -// render(tokens); - } - else - { - updateProgress(bufferStart + lineCursor, sourceTextLength); - -// if (renderTokens && tokens.length>=1000) -// render(tokens); - } - - if (thetoken) return thetoken; - - if (interrupted2) throw ParseStopIteration; - - - }; - - var updateProgress = function(progress, total) - { - var value = progress/total; - - if (!halfProgressReached && value > 0.5) - { - halfProgressReached = true; - progressText.style.color = "#fff"; - } - - progressText.innerHTML = Math.round(value*100)+"%"; - progressFill.style.width = Math.round(value*progressBarWidth)+"px"; - }; - - var processingCallback = function(progress, total, numOfLines) - { - totalTime = new Date().getTime() - totalTime; - - var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" + - " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) "; - - progressText.innerHTML = text; - - if (window.console) - { - console.log(text); - } - }; - - var tokensRendered = false; - var render = function(tokens) - { - if (tokensRendered) - return; - - tokensRendered = true; - - var html = ['
                                '];
                                -        for (var i=1, count=1000; i
                                ');
                                -            else
                                -                html.push(''+tk.data+'');
                                -        }
                                -        html.push(' \n
                                '); - document.getElementById("source").innerHTML = html.join(""); - - window.tokens = tokens; - }; - - var callbackTimes = 0; - - var totalTime = new Date().getTime(); - - var progressText = document.getElementById("progressText"); - var progressFill = document.getElementById("progressFill"); - var progressBar = document.getElementById("progressBar"); - var progressBarWidth = progressBar.clientWidth; - var halfProgressReached = false; - - return next; -}; diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html deleted file mode 100644 index 45ad79e8..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - CodeMirror: String highlight demonstration - - - -
                                - -
                                - - - -
                                -
                                -
                                
                                -
                                - - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html deleted file mode 100644 index 4d9e38be..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - CodeMirror: String highlight demonstration - - - -
                                - -
                                - - - -
                                -
                                -
                                
                                -
                                - - - - \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js deleted file mode 100644 index ac915122..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js +++ /dev/null @@ -1,68 +0,0 @@ -// Minimal framing needed to use CodeMirror-style parsers to highlight -// code. Load this along with tokenize.js, stringstream.js, and your -// parser. Then call highlightText, passing a string as the first -// argument, and as the second argument either a callback function -// that will be called with an array of SPAN nodes for every line in -// the code, or a DOM node to which to append these spans, and -// optionally (not needed if you only loaded one parser) a parser -// object. - -// Stuff from util.js that the parsers are using. -var StopIteration = {toString: function() {return "StopIteration"}}; - -var Editor = {}; -var indentUnit = 2; - -(function(){ - function normaliseString(string) { - var tab = ""; - for (var i = 0; i < indentUnit; i++) tab += " "; - - string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n"); - var pos = 0, parts = [], lines = string.split("\n"); - for (var line = 0; line < lines.length; line++) { - if (line != 0) parts.push("\n"); - parts.push(lines[line]); - } - - return { - next: function() { - if (pos < parts.length) return parts[pos++]; - else throw StopIteration; - } - }; - } - - window.highlightText = function(string, callback, parser) { - parser = (parser || Editor.Parser).make(stringStream(normaliseString(string))); - var line = []; - if (callback.nodeType == 1) { - var node = callback; - callback = function(line) { - for (var i = 0; i < line.length; i++) - node.appendChild(line[i]); - node.appendChild(document.createElement("BR")); - }; - } - - try { - while (true) { - var token = parser.next(); - if (token.value == "\n") { - callback(line); - line = []; - } - else { - var span = document.createElement("SPAN"); - span.className = token.style; - span.appendChild(document.createTextNode(token.value)); - line.push(span); - } - } - } - catch (e) { - if (e != StopIteration) throw e; - } - if (line.length) callback(line); - } -})(); diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js deleted file mode 100644 index 1dd42bf7..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js +++ /dev/null @@ -1,88 +0,0 @@ -// Minimal framing needed to use CodeMirror-style parsers to highlight -// code. Load this along with tokenize.js, stringstream.js, and your -// parser. Then call highlightText, passing a string as the first -// argument, and as the second argument either a callback function -// that will be called with an array of SPAN nodes for every line in -// the code, or a DOM node to which to append these spans, and -// optionally (not needed if you only loaded one parser) a parser -// object. - -// Stuff from util.js that the parsers are using. -var StopIteration = {toString: function() {return "StopIteration"}}; - -var Editor = {}; -var indentUnit = 2; - -(function(){ - function normaliseString(string) { - var tab = ""; - for (var i = 0; i < indentUnit; i++) tab += " "; - - string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n"); - var pos = 0, parts = [], lines = string.split("\n"); - for (var line = 0; line < lines.length; line++) { - if (line != 0) parts.push("\n"); - parts.push(lines[line]); - } - - return { - next: function() { - if (pos < parts.length) return parts[pos++]; - else throw StopIteration; - } - }; - } - - window.highlightText = function(string, callback, parser) { - - var totalTime = new Date().getTime(); - - parser = (parser || Editor.Parser).make(stringStream(normaliseString(string))); - var line = []; - if (callback.nodeType == 1) { - var node = callback; - callback = function(line) { - for (var i = 0; i < line.length; i++) - node.appendChild(line[i]); - node.appendChild(document.createElement("BR")); - }; - } - - var interrupted; -(function(){ - try { - var startTime = new Date().getTime(); - while (true) { - - interrupted = false; - - if (new Date().getTime() - startTime > 75) - { - setTimeout(arguments.callee, 25); - interrupted = true; - break; - } - - var token = parser.next(); - if (token.value == "\n") { - callback(line); - line = []; - } - else { - var span = document.createElement("SPAN"); - span.className = token.style; - span.appendChild(document.createTextNode(token.value)); - line.push(span); - } - } - - } - catch (e) { - alert(new Date().getTime() - totalTime + " ms"); - if (e != StopIteration) throw e; - } -})(); - - if (line.length) callback(line); - } -})(); diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css deleted file mode 100644 index 7c65d7df..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css +++ /dev/null @@ -1,59 +0,0 @@ -html { - cursor: text; -} - -.editbox { - margin: .4em; - padding: 0; - font-family: monospace; - font-size: 10pt; - color: black; -} - -pre.code, .editbox { - color: #666666; -} - -.editbox p { - margin: 0; -} - -span.js-punctuation { - color: #666666; -} - -span.js-operator { - color: #666666; -} - -span.js-keyword { - color: #770088; -} - -span.js-atom { - color: #228811; -} - -span.js-variable { - color: black; -} - -span.js-variabledef { - color: #0000FF; -} - -span.js-localvariable { - color: #004499; -} - -span.js-property { - color: black; -} - -span.js-comment { - color: #AA7700; -} - -span.js-string { - color: #AA2222; -} diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js deleted file mode 100644 index 3aa20697..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js +++ /dev/null @@ -1,359 +0,0 @@ -/* Parse function for JavaScript. Makes use of the tokenizer from - * tokenizejavascript.js. Note that your parsers do not have to be - * this complicated -- if you don't want to recognize local variables, - * in many languages it is enough to just look for braces, semicolons, - * parentheses, etc, and know when you are inside a string or comment. - * - * See manual.html for more info about the parser interface. - */ - -var JSParser = Editor.Parser = (function() { - // Token types that can be considered to be atoms. - var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; - // Setting that can be used to have JSON data indent properly. - var json = false; - // Constructor for the lexical context objects. - function JSLexical(indented, column, type, align, prev, info) { - // indentation at start of this line - this.indented = indented; - // column at which this scope was opened - this.column = column; - // type of scope ('vardef', 'stat' (statement), 'form' (special form), '[', '{', or '(') - this.type = type; - // '[', '{', or '(' blocks that have any text after their opening - // character are said to be 'aligned' -- any lines below are - // indented all the way to the opening character. - if (align != null) - this.align = align; - // Parent scope, if any. - this.prev = prev; - this.info = info; - } - - // My favourite JavaScript indentation rules. - function indentJS(lexical) { - return function(firstChars) { - var firstChar = firstChars && firstChars.charAt(0), type = lexical.type; - var closing = firstChar == type; - if (type == "vardef") - return lexical.indented + 4; - else if (type == "form" && firstChar == "{") - return lexical.indented; - else if (type == "stat" || type == "form") - return lexical.indented + indentUnit; - else if (lexical.info == "switch" && !closing) - return lexical.indented + (/^(?:case|default)\b/.test(firstChars) ? indentUnit : 2 * indentUnit); - else if (lexical.align) - return lexical.column - (closing ? 1 : 0); - else - return lexical.indented + (closing ? 0 : indentUnit); - }; - } - - // The parser-iterator-producing function itself. - function parseJS(input, basecolumn) { - // Wrap the input in a token stream - var tokens = tokenizeJavaScript(input); - // The parser state. cc is a stack of actions that have to be - // performed to finish the current statement. For example we might - // know that we still need to find a closing parenthesis and a - // semicolon. Actions at the end of the stack go first. It is - // initialized with an infinitely looping action that consumes - // whole statements. - var cc = [json ? expressions : statements]; - // Context contains information about the current local scope, the - // variables defined in that, and the scopes above it. - var context = null; - // The lexical scope, used mostly for indentation. - var lexical = new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false); - // Current column, and the indentation at the start of the current - // line. Used to create lexical scope objects. - var column = 0; - var indented = 0; - // Variables which are used by the mark, cont, and pass functions - // below to communicate with the driver loop in the 'next' - // function. - var consume, marked; - - // The iterator object. - var parser = {next: next, copy: copy}; - - function next(){ - // Start by performing any 'lexical' actions (adjusting the - // lexical variable), or the operations below will be working - // with the wrong lexical state. - while(cc[cc.length - 1].lex) - cc.pop()(); - - // Fetch a token. - var token = tokens.next(); - - // Adjust column and indented. - if (token.type == "whitespace" && column == 0) - indented = token.value.length; - column += token.value.length; - if (token.content == "\n"){ - indented = column = 0; - // If the lexical scope's align property is still undefined at - // the end of the line, it is an un-aligned scope. - if (!("align" in lexical)) - lexical.align = false; - // Newline tokens get an indentation function associated with - // them. - token.indentation = indentJS(lexical); - } - // No more processing for meaningless tokens. - if (token.type == "whitespace" || token.type == "comment") - return token; - // When a meaningful token is found and the lexical scope's - // align is undefined, it is an aligned scope. - if (!("align" in lexical)) - lexical.align = true; - - // Execute actions until one 'consumes' the token and we can - // return it. - while(true) { - consume = marked = false; - // Take and execute the topmost action. - cc.pop()(token.type, token.content); - if (consume){ - // Marked is used to change the style of the current token. - if (marked) - token.style = marked; - // Here we differentiate between local and global variables. - else if (token.type == "variable" && inScope(token.content)) - token.style = "js-localvariable"; - return token; - } - } - } - - // This makes a copy of the parser state. It stores all the - // stateful variables in a closure, and returns a function that - // will restore them when called with a new input stream. Note - // that the cc array has to be copied, because it is contantly - // being modified. Lexical objects are not mutated, and context - // objects are not mutated in a harmful way, so they can be shared - // between runs of the parser. - function copy(){ - var _context = context, _lexical = lexical, _cc = cc.concat([]), _tokenState = tokens.state; - - return function copyParser(input){ - context = _context; - lexical = _lexical; - cc = _cc.concat([]); // copies the array - column = indented = 0; - tokens = tokenizeJavaScript(input, _tokenState); - return parser; - }; - } - - // Helper function for pushing a number of actions onto the cc - // stack in reverse order. - function push(fs){ - for (var i = fs.length - 1; i >= 0; i--) - cc.push(fs[i]); - } - // cont and pass are used by the action functions to add other - // actions to the stack. cont will cause the current token to be - // consumed, pass will leave it for the next action. - function cont(){ - push(arguments); - consume = true; - } - function pass(){ - push(arguments); - consume = false; - } - // Used to change the style of the current token. - function mark(style){ - marked = style; - } - - // Push a new scope. Will automatically link the current scope. - function pushcontext(){ - context = {prev: context, vars: {"this": true, "arguments": true}}; - } - // Pop off the current scope. - function popcontext(){ - context = context.prev; - } - // Register a variable in the current scope. - function register(varname){ - if (context){ - mark("js-variabledef"); - context.vars[varname] = true; - } - } - // Check whether a variable is defined in the current scope. - function inScope(varname){ - var cursor = context; - while (cursor) { - if (cursor.vars[varname]) - return true; - cursor = cursor.prev; - } - return false; - } - - // Push a new lexical context of the given type. - function pushlex(type, info) { - var result = function(){ - lexical = new JSLexical(indented, column, type, null, lexical, info) - }; - result.lex = true; - return result; - } - // Pop off the current lexical context. - function poplex(){ - if (lexical.type == ")") - indented = lexical.indented; - lexical = lexical.prev; - } - poplex.lex = true; - // The 'lex' flag on these actions is used by the 'next' function - // to know they can (and have to) be ran before moving on to the - // next token. - - // Creates an action that discards tokens until it finds one of - // the given type. - function expect(wanted){ - return function expecting(type){ - if (type == wanted) cont(); - else if (wanted == ";") pass(); - else cont(arguments.callee); - }; - } - - // Looks for a statement, and then calls itself. - function statements(type){ - return pass(statement, statements); - } - function expressions(type){ - return pass(expression, expressions); - } - // Dispatches various types of statements based on the type of the - // current token. - function statement(type){ - if (type == "var") cont(pushlex("vardef"), vardef1, expect(";"), poplex); - else if (type == "keyword a") cont(pushlex("form"), expression, statement, poplex); - else if (type == "keyword b") cont(pushlex("form"), statement, poplex); - else if (type == "{") cont(pushlex("}"), block, poplex); - else if (type == ";") cont(); - else if (type == "function") cont(functiondef); - else if (type == "for") cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex); - else if (type == "variable") cont(pushlex("stat"), maybelabel); - else if (type == "switch") cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex); - else if (type == "case") cont(expression, expect(":")); - else if (type == "default") cont(expect(":")); - else if (type == "catch") cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext); - else pass(pushlex("stat"), expression, expect(";"), poplex); - } - // Dispatch expression types. - function expression(type){ - if (atomicTypes.hasOwnProperty(type)) cont(maybeoperator); - else if (type == "function") cont(functiondef); - else if (type == "keyword c") cont(expression); - else if (type == "(") cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator); - else if (type == "operator") cont(expression); - else if (type == "[") cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator); - else if (type == "{") cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); - else cont(); - } - // Called for places where operators, function calls, or - // subscripts are valid. Will skip on to the next action if none - // is found. - function maybeoperator(type, value){ - if (type == "operator" && /\+\+|--/.test(value)) cont(maybeoperator); - else if (type == "operator") cont(expression); - else if (type == ";") pass(); - else if (type == "(") cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); - else if (type == ".") cont(property, maybeoperator); - else if (type == "[") cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); - } - // When a statement starts with a variable name, it might be a - // label. If no colon follows, it's a regular statement. - function maybelabel(type){ - if (type == ":") cont(poplex, statement); - else pass(maybeoperator, expect(";"), poplex); - } - // Property names need to have their style adjusted -- the - // tokenizer thinks they are variables. - function property(type){ - if (type == "variable") {mark("js-property"); cont();} - } - // This parses a property and its value in an object literal. - function objprop(type){ - if (type == "variable") mark("js-property"); - if (atomicTypes.hasOwnProperty(type)) cont(expect(":"), expression); - } - // Parses a comma-separated list of the things that are recognized - // by the 'what' argument. - function commasep(what, end){ - function proceed(type) { - if (type == ",") cont(what, proceed); - else if (type == end) cont(); - else cont(expect(end)); - } - return function commaSeparated(type) { - if (type == end) cont(); - else pass(what, proceed); - }; - } - // Look for statements until a closing brace is found. - function block(type){ - if (type == "}") cont(); - else pass(statement, block); - } - // Variable definitions are split into two actions -- 1 looks for - // a name or the end of the definition, 2 looks for an '=' sign or - // a comma. - function vardef1(type, value){ - if (type == "variable"){register(value); cont(vardef2);} - else cont(); - } - function vardef2(type, value){ - if (value == "=") cont(expression, vardef2); - else if (type == ",") cont(vardef1); - } - // For loops. - function forspec1(type){ - if (type == "var") cont(vardef1, forspec2); - else if (type == ";") pass(forspec2); - else if (type == "variable") cont(formaybein); - else pass(forspec2); - } - function formaybein(type, value){ - if (value == "in") cont(expression); - else cont(maybeoperator, forspec2); - } - function forspec2(type, value){ - if (type == ";") cont(forspec3); - else if (value == "in") cont(expression); - else cont(expression, expect(";"), forspec3); - } - function forspec3(type) { - if (type == ")") pass(); - else cont(expression); - } - // A function definition creates a new context, and the variables - // in its argument list have to be added to this context. - function functiondef(type, value){ - if (type == "variable"){register(value); cont(functiondef);} - else if (type == "(") cont(pushcontext, commasep(funarg, ")"), statement, popcontext); - } - function funarg(type, value){ - if (type == "variable"){register(value); cont();} - } - - return parser; - } - - return { - make: parseJS, - electricChars: "{}:", - configure: function(obj) { - if (obj.json != null) json = obj.json; - } - }; -})(); diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js deleted file mode 100644 index b56e2f63..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js +++ /dev/null @@ -1,145 +0,0 @@ -/* String streams are the things fed to parsers (which can feed them - * to a tokenizer if they want). They provide peek and next methods - * for looking at the current character (next 'consumes' this - * character, peek does not), and a get method for retrieving all the - * text that was consumed since the last time get was called. - * - * An easy mistake to make is to let a StopIteration exception finish - * the token stream while there are still characters pending in the - * string stream (hitting the end of the buffer while parsing a - * token). To make it easier to detect such errors, the stringstreams - * throw an exception when this happens. - */ - -// Make a stringstream stream out of an iterator that returns strings. -// This is applied to the result of traverseDOM (see codemirror.js), -// and the resulting stream is fed to the parser. -var stringStream = function(source){ - // String that's currently being iterated over. - var current = ""; - // Position in that string. - var pos = 0; - // Accumulator for strings that have been iterated over but not - // get()-ed yet. - var accum = ""; - // Make sure there are more characters ready, or throw - // StopIteration. - function ensureChars() { - while (pos == current.length) { - accum += current; - current = ""; // In case source.next() throws - pos = 0; - try {current = source.next();} - catch (e) { - if (e != StopIteration) throw e; - else return false; - } - } - return true; - } - - return { - // peek: -> character - // Return the next character in the stream. - peek: function() { - if (!ensureChars()) return null; - return current.charAt(pos); - }, - // next: -> character - // Get the next character, throw StopIteration if at end, check - // for unused content. - next: function() { - if (!ensureChars()) { - if (accum.length > 0) - throw "End of stringstream reached without emptying buffer ('" + accum + "')."; - else - throw StopIteration; - } - return current.charAt(pos++); - }, - // get(): -> string - // Return the characters iterated over since the last call to - // .get(). - get: function() { - var temp = accum; - accum = ""; - if (pos > 0){ - temp += current.slice(0, pos); - current = current.slice(pos); - pos = 0; - } - return temp; - }, - // Push a string back into the stream. - push: function(str) { - current = current.slice(0, pos) + str + current.slice(pos); - }, - lookAhead: function(str, consume, skipSpaces, caseInsensitive) { - function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} - str = cased(str); - var found = false; - - var _accum = accum, _pos = pos; - if (skipSpaces) this.nextWhileMatches(/[\s\u00a0]/); - - while (true) { - var end = pos + str.length, left = current.length - pos; - if (end <= current.length) { - found = str == cased(current.slice(pos, end)); - pos = end; - break; - } - else if (str.slice(0, left) == cased(current.slice(pos))) { - accum += current; current = ""; - try {current = source.next();} - catch (e) {break;} - pos = 0; - str = str.slice(left); - } - else { - break; - } - } - - if (!(found && consume)) { - current = accum.slice(_accum.length) + current; - pos = _pos; - accum = _accum; - } - - return found; - }, - - // Utils built on top of the above - // more: -> boolean - // Produce true if the stream isn't empty. - more: function() { - return this.peek() !== null; - }, - applies: function(test) { - var next = this.peek(); - return (next !== null && test(next)); - }, - nextWhile: function(test) { - var next; - while ((next = this.peek()) !== null && test(next)) - this.next(); - }, - matches: function(re) { - var next = this.peek(); - return (next !== null && re.test(next)); - }, - nextWhileMatches: function(re) { - var next; - while ((next = this.peek()) !== null && re.test(next)) - this.next(); - }, - equals: function(ch) { - return ch === this.peek(); - }, - endOfLine: function() { - var next = this.peek(); - return next == null || next == "\n"; - } - }; -}; diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js deleted file mode 100644 index 071970ce..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js +++ /dev/null @@ -1,57 +0,0 @@ -// A framework for simple tokenizers. Takes care of newlines and -// white-space, and of getting the text from the source stream into -// the token object. A state is a function of two arguments -- a -// string stream and a setState function. The second can be used to -// change the tokenizer's state, and can be ignored for stateless -// tokenizers. This function should advance the stream over a token -// and return a string or object containing information about the next -// token, or null to pass and have the (new) state be called to finish -// the token. When a string is given, it is wrapped in a {style, type} -// object. In the resulting object, the characters consumed are stored -// under the content property. Any whitespace following them is also -// automatically consumed, and added to the value property. (Thus, -// content is the actual meaningful part of the token, while value -// contains all the text it spans.) - -function tokenizer(source, state) { - // Newlines are always a separate token. - function isWhiteSpace(ch) { - // The messy regexp is because IE's regexp matcher is of the - // opinion that non-breaking spaces are no whitespace. - return ch != "\n" && /^[\s\u00a0]*$/.test(ch); - } - - var tokenizer = { - state: state, - - take: function(type) { - if (typeof(type) == "string") - type = {style: type, type: type}; - - type.content = (type.content || "") + source.get(); - if (!/\n$/.test(type.content)) - source.nextWhile(isWhiteSpace); - type.value = type.content + source.get(); - return type; - }, - - next: function () { - if (!source.more()) throw StopIteration; - - var type; - if (source.equals("\n")) { - source.next(); - return this.take("whitespace"); - } - - if (source.applies(isWhiteSpace)) - type = "whitespace"; - else - while (!type) - type = this.state(source, function(s) {tokenizer.state = s;}); - - return this.take(type); - } - }; - return tokenizer; -} diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js deleted file mode 100644 index 019136fc..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js +++ /dev/null @@ -1,174 +0,0 @@ -/* Tokenizer for JavaScript code */ - -var tokenizeJavaScript = (function() { - // Advance the stream until the given character (not preceded by a - // backslash) is encountered, or the end of the line is reached. - function nextUntilUnescaped(source, end) { - var escaped = false; - while (!source.endOfLine()) { - var next = source.next(); - if (next == end && !escaped) - return false; - escaped = !escaped && next == "\\"; - } - return escaped; - } - - // A map of JavaScript's keywords. The a/b/c keyword distinction is - // very rough, but it gives the parser enough information to parse - // correct code correctly (we don't care that much how we parse - // incorrect code). The style information included in these objects - // is used by the highlighter to pick the correct CSS style for a - // token. - var keywords = function(){ - function result(type, style){ - return {type: type, style: "js-" + style}; - } - // keywords that take a parenthised expression, and then a - // statement (if) - var keywordA = result("keyword a", "keyword"); - // keywords that take just a statement (else) - var keywordB = result("keyword b", "keyword"); - // keywords that optionally take an expression, and form a - // statement (return) - var keywordC = result("keyword c", "keyword"); - var operator = result("operator", "keyword"); - var atom = result("atom", "atom"); - return { - "if": keywordA, "while": keywordA, "with": keywordA, - "else": keywordB, "do": keywordB, "try": keywordB, "finally": keywordB, - "return": keywordC, "break": keywordC, "continue": keywordC, "new": keywordC, "delete": keywordC, "throw": keywordC, - "in": operator, "typeof": operator, "instanceof": operator, - "var": result("var", "keyword"), "function": result("function", "keyword"), "catch": result("catch", "keyword"), - "for": result("for", "keyword"), "switch": result("switch", "keyword"), - "case": result("case", "keyword"), "default": result("default", "keyword"), - "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom - }; - }(); - - // Some helper regexps - var isOperatorChar = /[+\-*&%=<>!?|]/; - var isHexDigit = /[0-9A-Fa-f]/; - var isWordChar = /[\w\$_]/; - - // Wrapper around jsToken that helps maintain parser state (whether - // we are inside of a multi-line comment and whether the next token - // could be a regular expression). - function jsTokenState(inside, regexp) { - return function(source, setState) { - var newInside = inside; - var type = jsToken(inside, regexp, source, function(c) {newInside = c;}); - var newRegexp = type.type == "operator" || type.type == "keyword c" || type.type.match(/^[\[{}\(,;:]$/); - if (newRegexp != regexp || newInside != inside) - setState(jsTokenState(newInside, newRegexp)); - return type; - }; - } - - // The token reader, intended to be used by the tokenizer from - // tokenize.js (through jsTokenState). Advances the source stream - // over a token, and returns an object containing the type and style - // of that token. - function jsToken(inside, regexp, source, setInside) { - function readHexNumber(){ - source.next(); // skip the 'x' - source.nextWhileMatches(isHexDigit); - return {type: "number", style: "js-atom"}; - } - - function readNumber() { - source.nextWhileMatches(/[0-9]/); - if (source.equals(".")){ - source.next(); - source.nextWhileMatches(/[0-9]/); - } - if (source.equals("e") || source.equals("E")){ - source.next(); - if (source.equals("-")) - source.next(); - source.nextWhileMatches(/[0-9]/); - } - return {type: "number", style: "js-atom"}; - } - // Read a word, look it up in keywords. If not found, it is a - // variable, otherwise it is a keyword of the type found. - function readWord() { - source.nextWhileMatches(isWordChar); - var word = source.get(); - var known = keywords.hasOwnProperty(word) && keywords.propertyIsEnumerable(word) && keywords[word]; - return known ? {type: known.type, style: known.style, content: word} : - {type: "variable", style: "js-variable", content: word}; - } - function readRegexp() { - nextUntilUnescaped(source, "/"); - source.nextWhileMatches(/[gi]/); - return {type: "regexp", style: "js-string"}; - } - // Mutli-line comments are tricky. We want to return the newlines - // embedded in them as regular newline tokens, and then continue - // returning a comment token for every line of the comment. So - // some state has to be saved (inside) to indicate whether we are - // inside a /* */ sequence. - function readMultilineComment(start){ - var newInside = "/*"; - var maybeEnd = (start == "*"); - while (true) { - if (source.endOfLine()) - break; - var next = source.next(); - if (next == "/" && maybeEnd){ - newInside = null; - break; - } - maybeEnd = (next == "*"); - } - setInside(newInside); - return {type: "comment", style: "js-comment"}; - } - function readOperator() { - source.nextWhileMatches(isOperatorChar); - return {type: "operator", style: "js-operator"}; - } - function readString(quote) { - var endBackSlash = nextUntilUnescaped(source, quote); - setInside(endBackSlash ? quote : null); - return {type: "string", style: "js-string"}; - } - - // Fetch the next token. Dispatches on first character in the - // stream, or first two characters when the first is a slash. - if (inside == "\"" || inside == "'") - return readString(inside); - var ch = source.next(); - if (inside == "/*") - return readMultilineComment(ch); - else if (ch == "\"" || ch == "'") - return readString(ch); - // with punctuation, the type of the token is the symbol itself - else if (/[\[\]{}\(\),;\:\.]/.test(ch)) - return {type: ch, style: "js-punctuation"}; - else if (ch == "0" && (source.equals("x") || source.equals("X"))) - return readHexNumber(); - else if (/[0-9]/.test(ch)) - return readNumber(); - else if (ch == "/"){ - if (source.equals("*")) - { source.next(); return readMultilineComment(ch); } - else if (source.equals("/")) - { nextUntilUnescaped(source, null); return {type: "comment", style: "js-comment"};} - else if (regexp) - return readRegexp(); - else - return readOperator(); - } - else if (isOperatorChar.test(ch)) - return readOperator(); - else - return readWord(); - } - - // The external interface to the tokenizer. - return function(source, startState) { - return tokenizer(source, startState || jsTokenState(false, true)); - }; -})(); diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint.js deleted file mode 100644 index 827536d6..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint.js +++ /dev/null @@ -1,5726 +0,0 @@ -// jslint.js -// 2010-10-26 - -/* -Copyright (c) 2002 Douglas Crockford (www.JSLint.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -The Software shall be used for Good, not Evil. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -/* - JSLINT is a global function. It takes two parameters. - - var myResult = JSLINT(source, option); - - The first parameter is either a string or an array of strings. If it is a - string, it will be split on '\n' or '\r'. If it is an array of strings, it - is assumed that each string represents one line. The source can be a - JavaScript text, or HTML text, or a Konfabulator text. - - The second parameter is an optional object of options which control the - operation of JSLINT. Most of the options are booleans: They are all are - optional and have a default value of false. - - If it checks out, JSLINT returns true. Otherwise, it returns false. - - If false, you can inspect JSLINT.errors to find out the problems. - JSLINT.errors is an array of objects containing these members: - - { - line : The line (relative to 0) at which the lint was found - character : The character (relative to 0) at which the lint was found - reason : The problem - evidence : The text line in which the problem occurred - raw : The raw message before the details were inserted - a : The first detail - b : The second detail - c : The third detail - d : The fourth detail - } - - If a fatal error was found, a null will be the last element of the - JSLINT.errors array. - - You can request a Function Report, which shows all of the functions - and the parameters and vars that they use. This can be used to find - implied global variables and other problems. The report is in HTML and - can be inserted in an HTML . - - var myReport = JSLINT.report(limited); - - If limited is true, then the report will be limited to only errors. - - You can request a data structure which contains JSLint's results. - - var myData = JSLINT.data(); - - It returns a structure with this form: - - { - errors: [ - { - line: NUMBER, - character: NUMBER, - reason: STRING, - evidence: STRING - } - ], - functions: [ - name: STRING, - line: NUMBER, - last: NUMBER, - param: [ - STRING - ], - closure: [ - STRING - ], - var: [ - STRING - ], - exception: [ - STRING - ], - outer: [ - STRING - ], - unused: [ - STRING - ], - global: [ - STRING - ], - label: [ - STRING - ] - ], - globals: [ - STRING - ], - member: { - STRING: NUMBER - }, - unuseds: [ - { - name: STRING, - line: NUMBER - } - ], - implieds: [ - { - name: STRING, - line: NUMBER - } - ], - urls: [ - STRING - ], - json: BOOLEAN - } - - Empty arrays will not be included. - -*/ - -/*jslint - evil: true, nomen: false, onevar: false, regexp: false, strict: true -*/ - -/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%", - "(begin)", "(breakage)", "(context)", "(error)", "(global)", - "(identifier)", "(last)", "(line)", "(loopage)", "(name)", "(onevar)", - "(params)", "(scope)", "(statement)", "(verb)", "*", "+", "++", "-", - "--", "\/", "<", "<=", "==", "===", ">", ">=", ADSAFE, ActiveXObject, - Array, Boolean, COM, CScript, Canvas, CustomAnimation, Date, Debug, E, - Enumerator, Error, EvalError, FadeAnimation, Flash, FormField, Frame, - Function, HotKey, Image, JSON, LN10, LN2, LOG10E, LOG2E, MAX_VALUE, - MIN_VALUE, Math, MenuItem, MoveAnimation, NEGATIVE_INFINITY, Number, - Object, Option, PI, POSITIVE_INFINITY, Point, RangeError, Rectangle, - ReferenceError, RegExp, ResizeAnimation, RotateAnimation, SQRT1_2, - SQRT2, ScrollBar, String, Style, SyntaxError, System, Text, TextArea, - Timer, TypeError, URIError, URL, VBArray, WScript, Web, Window, XMLDOM, - XMLHttpRequest, "\\", a, abbr, acronym, addEventListener, address, - adsafe, alert, aliceblue, animator, antiquewhite, appleScript, applet, - apply, approved, aqua, aquamarine, area, arguments, arity, article, - aside, audio, autocomplete, azure, b, background, - "background-attachment", "background-color", "background-image", - "background-position", "background-repeat", base, bdo, beep, beige, big, - bisque, bitwise, black, blanchedalmond, block, blockquote, blue, - blueviolet, blur, body, border, "border-bottom", "border-bottom-color", - "border-bottom-style", "border-bottom-width", "border-collapse", - "border-color", "border-left", "border-left-color", "border-left-style", - "border-left-width", "border-right", "border-right-color", - "border-right-style", "border-right-width", "border-spacing", - "border-style", "border-top", "border-top-color", "border-top-style", - "border-top-width", "border-width", bottom, br, brown, browser, - burlywood, button, bytesToUIString, c, cadetblue, call, callee, caller, - canvas, cap, caption, "caption-side", cases, center, charAt, charCodeAt, - character, chartreuse, chocolate, chooseColor, chooseFile, chooseFolder, - cite, clear, clearInterval, clearTimeout, clip, close, closeWidget, - closed, closure, cm, code, col, colgroup, color, command, comment, - condition, confirm, console, constructor, content, convertPathToHFS, - convertPathToPlatform, coral, cornflowerblue, cornsilk, - "counter-increment", "counter-reset", create, crimson, css, cursor, - cyan, d, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen, - darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, - darksalmon, darkseagreen, darkslateblue, darkslategray, darkturquoise, - darkviolet, data, datalist, dd, debug, decodeURI, decodeURIComponent, - deeppink, deepskyblue, defaultStatus, defineClass, del, deserialize, - details, devel, dfn, dialog, dimension, dimgray, dir, direction, - display, div, dl, document, dodgerblue, dt, edition, else, em, embed, - empty, "empty-cells", encodeURI, encodeURIComponent, entityify, eqeqeq, - errors, es5, escape, eval, event, evidence, evil, ex, exception, exec, exps, - fieldset, figure, filesystem, firebrick, first, float, floor, - floralwhite, focus, focusWidget, font, "font-face", "font-family", - "font-size", "font-size-adjust", "font-stretch", "font-style", - "font-variant", "font-weight", footer, forestgreen, forin, form, - fragment, frame, frames, frameset, from, fromCharCode, fuchsia, fud, - funct, function, functions, g, gainsboro, gc, getComputedStyle, - ghostwhite, global, globals, gold, goldenrod, gray, green, greenyellow, - h1, h2, h3, h4, h5, h6, hasOwnProperty, head, header, height, help, - hgroup, history, honeydew, hotpink, hr, 'hta:application', html, - i, iTunes, id, identifier, - iframe, img, immed, implieds, in, include, indent, indexOf, indianred, - indigo, init, input, ins, isAlpha, isApplicationRunning, isDigit, - isFinite, isNaN, ivory, join, jslint, json, kbd, keygen, khaki, - konfabulatorVersion, label, labelled, lang, last, lavender, - lavenderblush, lawngreen, laxbreak, lbp, led, left, legend, - lemonchiffon, length, "letter-spacing", li, lib, lightblue, lightcoral, - lightcyan, lightgoldenrodyellow, lightgreen, lightpink, lightsalmon, - lightseagreen, lightskyblue, lightslategray, lightsteelblue, - lightyellow, lime, limegreen, line, "line-height", linen, link, - "list-style", "list-style-image", "list-style-position", - "list-style-type", load, loadClass, location, log, m, magenta, map, - margin, "margin-bottom", "margin-left", "margin-right", "margin-top", - mark, "marker-offset", maroon, match, "max-height", "max-width", maxerr, - maxlen, md5, media, mediumaquamarine, mediumblue, mediumorchid, - mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen, - mediumturquoise, mediumvioletred, member, menu, message, meta, meter, - midnightblue, "min-height", "min-width", mintcream, mistyrose, mm, - moccasin, moveBy, moveTo, name, nav, navajowhite, navigator, navy, new, - newcap, noframes, nomen, noscript, nud, object, ol, oldlace, olive, - olivedrab, on, onbeforeunload, onblur, onerror, onevar, onfocus, onload, - onresize, onunload, opacity, open, openURL, opener, opera, optgroup, - option, orange, orangered, orchid, outer, outline, "outline-color", - "outline-style", "outline-width", output, overflow, "overflow-x", - "overflow-y", p, padding, "padding-bottom", "padding-left", - "padding-right", "padding-top", page, "page-break-after", - "page-break-before", palegoldenrod, palegreen, paleturquoise, - palevioletred, papayawhip, param, parent, parseFloat, parseInt, - passfail, pc, peachpuff, peru, pink, play, plum, plusplus, pop, - popupMenu, position, powderblue, pre, predef, preferenceGroups, - preferences, print, progress, prompt, prototype, pt, purple, push, px, - q, quit, quotes, random, range, raw, reach, readFile, readUrl, reason, - red, regexp, reloadWidget, removeEventListener, replace, report, - reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, rhino, right, - rosybrown, royalblue, rp, rt, ruby, runCommand, runCommandInBg, - saddlebrown, safe, salmon, samp, sandybrown, saveAs, savePreferences, - screen, script, scroll, scrollBy, scrollTo, seagreen, seal, search, - seashell, section, select, serialize, setInterval, setTimeout, shift, - showWidgetPreferences, sienna, silver, skyblue, slateblue, slategray, - sleep, slice, small, snow, sort, source, span, spawn, speak, split, - springgreen, src, stack, statement, status, steelblue, strict, strong, - style, styleproperty, sub, substr, sup, supplant, suppressUpdates, sync, - system, table, "table-layout", tan, tbody, td, teal, tellWidget, test, - "text-align", "text-decoration", "text-indent", "text-shadow", - "text-transform", textarea, tfoot, th, thead, thistle, time, title, - toLowerCase, toString, toUpperCase, toint32, token, tomato, top, tr, tt, - turquoise, type, u, ul, undef, unescape, "unicode-bidi", unused, - unwatch, updateNow, urls, value, valueOf, var, version, - "vertical-align", video, violet, visibility, watch, wheat, white, - "white-space", whitesmoke, widget, width, windows, "word-spacing", - "word-wrap", yahooCheckLogin, yahooLogin, yahooLogout, yellow, - yellowgreen, "z-index" -*/ - -// We build the application inside a function so that we produce only a single -// global variable. The function will be invoked, its return value is the JSLINT -// application itself. - -"use strict"; - -var JSLINT = (function () { - var adsafe_id, // The widget's ADsafe id. - adsafe_may, // The widget may load approved scripts. - adsafe_went, // ADSAFE.go has been called. - anonname, // The guessed name for anonymous functions. - approved, // ADsafe approved urls. - - atrule = { - media : true, - 'font-face': true, - page : true - }, - -// These are operators that should not be used with the ! operator. - - bang = { - '<': true, - '<=': true, - '==': true, - '===': true, - '!==': true, - '!=': true, - '>': true, - '>=': true, - '+': true, - '-': true, - '*': true, - '/': true, - '%': true - }, - -// These are members that should not be permitted in the safe subset. - - banned = { // the member names that ADsafe prohibits. - 'arguments' : true, - callee : true, - caller : true, - constructor : true, - 'eval' : true, - prototype : true, - stack : true, - unwatch : true, - valueOf : true, - watch : true - }, - - -// These are the JSLint boolean options. - - boolOptions = { - adsafe : true, // if ADsafe should be enforced - bitwise : true, // if bitwise operators should not be allowed - browser : true, // if the standard browser globals should be predefined - cap : true, // if upper case HTML should be allowed - css : true, // if CSS workarounds should be tolerated - debug : true, // if debugger statements should be allowed - devel : true, // if logging should be allowed (console, alert, etc.) - eqeqeq : true, // if === should be required - es5 : true, // if ES5 syntax should be allowed - evil : true, // if eval should be allowed - forin : true, // if for in statements must filter - fragment : true, // if HTML fragments should be allowed - immed : true, // if immediate invocations must be wrapped in parens - laxbreak : true, // if line breaks should not be checked - newcap : true, // if constructor names must be capitalized - nomen : true, // if names should be checked - on : true, // if HTML event handlers should be allowed - onevar : true, // if only one var statement per function should be allowed - passfail : true, // if the scan should stop on first error - plusplus : true, // if increment/decrement should not be allowed - regexp : true, // if the . should not be allowed in regexp literals - rhino : true, // if the Rhino environment globals should be predefined - undef : true, // if variables should be declared before used - safe : true, // if use of some browser features should be restricted - windows : true, // if MS Windows-specigic globals should be predefined - strict : true, // require the "use strict"; pragma - sub : true, // if all forms of subscript notation are tolerated - white : true, // if strict whitespace rules apply - widget : true // if the Yahoo Widgets globals should be predefined - }, - -// browser contains a set of global names which are commonly provided by a -// web browser environment. - - browser = { - addEventListener: false, - blur : false, - clearInterval : false, - clearTimeout : false, - close : false, - closed : false, - defaultStatus : false, - document : false, - event : false, - focus : false, - frames : false, - getComputedStyle: false, - history : false, - Image : false, - length : false, - location : false, - moveBy : false, - moveTo : false, - name : false, - navigator : false, - onbeforeunload : true, - onblur : true, - onerror : true, - onfocus : true, - onload : true, - onresize : true, - onunload : true, - open : false, - opener : false, - Option : false, - parent : false, - print : false, - removeEventListener: false, - resizeBy : false, - resizeTo : false, - screen : false, - scroll : false, - scrollBy : false, - scrollTo : false, - setInterval : false, - setTimeout : false, - status : false, - top : false, - XMLHttpRequest : false - }, - - cssAttributeData, - cssAny, - - cssColorData = { - "aliceblue" : true, - "antiquewhite" : true, - "aqua" : true, - "aquamarine" : true, - "azure" : true, - "beige" : true, - "bisque" : true, - "black" : true, - "blanchedalmond" : true, - "blue" : true, - "blueviolet" : true, - "brown" : true, - "burlywood" : true, - "cadetblue" : true, - "chartreuse" : true, - "chocolate" : true, - "coral" : true, - "cornflowerblue" : true, - "cornsilk" : true, - "crimson" : true, - "cyan" : true, - "darkblue" : true, - "darkcyan" : true, - "darkgoldenrod" : true, - "darkgray" : true, - "darkgreen" : true, - "darkkhaki" : true, - "darkmagenta" : true, - "darkolivegreen" : true, - "darkorange" : true, - "darkorchid" : true, - "darkred" : true, - "darksalmon" : true, - "darkseagreen" : true, - "darkslateblue" : true, - "darkslategray" : true, - "darkturquoise" : true, - "darkviolet" : true, - "deeppink" : true, - "deepskyblue" : true, - "dimgray" : true, - "dodgerblue" : true, - "firebrick" : true, - "floralwhite" : true, - "forestgreen" : true, - "fuchsia" : true, - "gainsboro" : true, - "ghostwhite" : true, - "gold" : true, - "goldenrod" : true, - "gray" : true, - "green" : true, - "greenyellow" : true, - "honeydew" : true, - "hotpink" : true, - "indianred" : true, - "indigo" : true, - "ivory" : true, - "khaki" : true, - "lavender" : true, - "lavenderblush" : true, - "lawngreen" : true, - "lemonchiffon" : true, - "lightblue" : true, - "lightcoral" : true, - "lightcyan" : true, - "lightgoldenrodyellow" : true, - "lightgreen" : true, - "lightpink" : true, - "lightsalmon" : true, - "lightseagreen" : true, - "lightskyblue" : true, - "lightslategray" : true, - "lightsteelblue" : true, - "lightyellow" : true, - "lime" : true, - "limegreen" : true, - "linen" : true, - "magenta" : true, - "maroon" : true, - "mediumaquamarine" : true, - "mediumblue" : true, - "mediumorchid" : true, - "mediumpurple" : true, - "mediumseagreen" : true, - "mediumslateblue" : true, - "mediumspringgreen" : true, - "mediumturquoise" : true, - "mediumvioletred" : true, - "midnightblue" : true, - "mintcream" : true, - "mistyrose" : true, - "moccasin" : true, - "navajowhite" : true, - "navy" : true, - "oldlace" : true, - "olive" : true, - "olivedrab" : true, - "orange" : true, - "orangered" : true, - "orchid" : true, - "palegoldenrod" : true, - "palegreen" : true, - "paleturquoise" : true, - "palevioletred" : true, - "papayawhip" : true, - "peachpuff" : true, - "peru" : true, - "pink" : true, - "plum" : true, - "powderblue" : true, - "purple" : true, - "red" : true, - "rosybrown" : true, - "royalblue" : true, - "saddlebrown" : true, - "salmon" : true, - "sandybrown" : true, - "seagreen" : true, - "seashell" : true, - "sienna" : true, - "silver" : true, - "skyblue" : true, - "slateblue" : true, - "slategray" : true, - "snow" : true, - "springgreen" : true, - "steelblue" : true, - "tan" : true, - "teal" : true, - "thistle" : true, - "tomato" : true, - "turquoise" : true, - "violet" : true, - "wheat" : true, - "white" : true, - "whitesmoke" : true, - "yellow" : true, - "yellowgreen" : true - }, - - cssBorderStyle, - cssBreak, - - cssLengthData = { - '%': true, - 'cm': true, - 'em': true, - 'ex': true, - 'in': true, - 'mm': true, - 'pc': true, - 'pt': true, - 'px': true - }, - - cssOverflow, - - devel = { - alert : false, - confirm : false, - console : false, - Debug : false, - opera : false, - prompt : false - }, - - escapes = { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '"' : '\\"', - '/' : '\\/', - '\\': '\\\\' - }, - - funct, // The current function - - functionicity = [ - 'closure', 'exception', 'global', 'label', - 'outer', 'unused', 'var' - ], - - functions, // All of the functions - - global, // The global scope - htmltag = { - a: {}, - abbr: {}, - acronym: {}, - address: {}, - applet: {}, - area: {empty: true, parent: ' map '}, - article: {}, - aside: {}, - audio: {}, - b: {}, - base: {empty: true, parent: ' head '}, - bdo: {}, - big: {}, - blockquote: {}, - body: {parent: ' html noframes '}, - br: {empty: true}, - button: {}, - canvas: {parent: ' body p div th td '}, - caption: {parent: ' table '}, - center: {}, - cite: {}, - code: {}, - col: {empty: true, parent: ' table colgroup '}, - colgroup: {parent: ' table '}, - command: {parent: ' menu '}, - datalist: {}, - dd: {parent: ' dl '}, - del: {}, - details: {}, - dialog: {}, - dfn: {}, - dir: {}, - div: {}, - dl: {}, - dt: {parent: ' dl '}, - em: {}, - embed: {}, - fieldset: {}, - figure: {}, - font: {}, - footer: {}, - form: {}, - frame: {empty: true, parent: ' frameset '}, - frameset: {parent: ' html frameset '}, - h1: {}, - h2: {}, - h3: {}, - h4: {}, - h5: {}, - h6: {}, - head: {parent: ' html '}, - header: {}, - hgroup: {}, - hr: {empty: true}, - 'hta:application': - {empty: true, parent: ' head '}, - html: {parent: '*'}, - i: {}, - iframe: {}, - img: {empty: true}, - input: {empty: true}, - ins: {}, - kbd: {}, - keygen: {}, - label: {}, - legend: {parent: ' details fieldset figure '}, - li: {parent: ' dir menu ol ul '}, - link: {empty: true, parent: ' head '}, - map: {}, - mark: {}, - menu: {}, - meta: {empty: true, parent: ' head noframes noscript '}, - meter: {}, - nav: {}, - noframes: {parent: ' html body '}, - noscript: {parent: ' body head noframes '}, - object: {}, - ol: {}, - optgroup: {parent: ' select '}, - option: {parent: ' optgroup select '}, - output: {}, - p: {}, - param: {empty: true, parent: ' applet object '}, - pre: {}, - progress: {}, - q: {}, - rp: {}, - rt: {}, - ruby: {}, - samp: {}, - script: {empty: true, parent: ' body div frame head iframe p pre span '}, - section: {}, - select: {}, - small: {}, - span: {}, - source: {}, - strong: {}, - style: {parent: ' head ', empty: true}, - sub: {}, - sup: {}, - table: {}, - tbody: {parent: ' table '}, - td: {parent: ' tr '}, - textarea: {}, - tfoot: {parent: ' table '}, - th: {parent: ' tr '}, - thead: {parent: ' table '}, - time: {}, - title: {parent: ' head '}, - tr: {parent: ' table tbody thead tfoot '}, - tt: {}, - u: {}, - ul: {}, - 'var': {}, - video: {} - }, - - ids, // HTML ids - implied, // Implied globals - inblock, - indent, - jsonmode, - lines, - lookahead, - member, - membersOnly, - nexttoken, - noreach, - option, - predefined, // Global variables defined by option - prereg, - prevtoken, - - rhino = { - defineClass : false, - deserialize : false, - gc : false, - help : false, - load : false, - loadClass : false, - print : false, - quit : false, - readFile : false, - readUrl : false, - runCommand : false, - seal : false, - serialize : false, - spawn : false, - sync : false, - toint32 : false, - version : false - }, - - scope, // The current scope - - windows = { - ActiveXObject: false, - CScript : false, - Debug : false, - Enumerator : false, - System : false, - VBArray : false, - WScript : false - }, - - src, - stack, - -// standard contains the global names that are provided by the -// ECMAScript standard. - - standard = { - Array : false, - Boolean : false, - Date : false, - decodeURI : false, - decodeURIComponent : false, - encodeURI : false, - encodeURIComponent : false, - Error : false, - 'eval' : false, - EvalError : false, - Function : false, - hasOwnProperty : false, - isFinite : false, - isNaN : false, - JSON : false, - Math : false, - Number : false, - Object : false, - parseInt : false, - parseFloat : false, - RangeError : false, - ReferenceError : false, - RegExp : false, - String : false, - SyntaxError : false, - TypeError : false, - URIError : false - }, - - standard_member = { - E : true, - LN2 : true, - LN10 : true, - LOG2E : true, - LOG10E : true, - PI : true, - SQRT1_2 : true, - SQRT2 : true, - MAX_VALUE : true, - MIN_VALUE : true, - NEGATIVE_INFINITY : true, - POSITIVE_INFINITY : true - }, - - strict_mode, - syntax = {}, - tab, - token, - urls, - warnings, - -// widget contains the global names which are provided to a Yahoo -// (fna Konfabulator) widget. - - widget = { - alert : true, - animator : true, - appleScript : true, - beep : true, - bytesToUIString : true, - Canvas : true, - chooseColor : true, - chooseFile : true, - chooseFolder : true, - closeWidget : true, - COM : true, - convertPathToHFS : true, - convertPathToPlatform : true, - CustomAnimation : true, - escape : true, - FadeAnimation : true, - filesystem : true, - Flash : true, - focusWidget : true, - form : true, - FormField : true, - Frame : true, - HotKey : true, - Image : true, - include : true, - isApplicationRunning : true, - iTunes : true, - konfabulatorVersion : true, - log : true, - md5 : true, - MenuItem : true, - MoveAnimation : true, - openURL : true, - play : true, - Point : true, - popupMenu : true, - preferenceGroups : true, - preferences : true, - print : true, - prompt : true, - random : true, - Rectangle : true, - reloadWidget : true, - ResizeAnimation : true, - resolvePath : true, - resumeUpdates : true, - RotateAnimation : true, - runCommand : true, - runCommandInBg : true, - saveAs : true, - savePreferences : true, - screen : true, - ScrollBar : true, - showWidgetPreferences : true, - sleep : true, - speak : true, - Style : true, - suppressUpdates : true, - system : true, - tellWidget : true, - Text : true, - TextArea : true, - Timer : true, - unescape : true, - updateNow : true, - URL : true, - Web : true, - widget : true, - Window : true, - XMLDOM : true, - XMLHttpRequest : true, - yahooCheckLogin : true, - yahooLogin : true, - yahooLogout : true - }, - -// xmode is used to adapt to the exceptions in html parsing. -// It can have these states: -// false .js script file -// html -// outer -// script -// style -// scriptstring -// styleproperty - - xmode, - xquote, - -// unsafe comment or string - ax = /@cc|<\/?|script|\]*s\]|<\s*!|</i, -// unsafe characters that are silently deleted by one or more browsers - cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/, -// token - tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/, -// html token - hx = /^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-:]*|[0-9]+|--)/, -// characters in strings that need escapement - nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/, - nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, -// outer html token - ox = /[>&]|<[\/!]?|--/, -// star slash - lx = /\*\/|\/\*/, -// identifier - ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/, -// javascript url - jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i, -// url badness - ux = /&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i, -// style - sx = /^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/, - ssx = /^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/, -// attributes characters - qx = /[^a-zA-Z0-9+\-_\/ ]/, -// query characters for ids - dx = /[\[\]\/\\"'*<>.&:(){}+=#]/, - - rx = { - outer: hx, - html: hx, - style: sx, - styleproperty: ssx - }; - - function F() {} - - if (typeof Object.create !== 'function') { - Object.create = function (o) { - F.prototype = o; - return new F(); - }; - } - - - function is_own(object, name) { - return Object.prototype.hasOwnProperty.call(object, name); - } - - - function combine(t, o) { - var n; - for (n in o) { - if (is_own(o, n)) { - t[n] = o[n]; - } - } - } - - String.prototype.entityify = function () { - return this - .replace(/&/g, '&') - .replace(//g, '>'); - }; - - String.prototype.isAlpha = function () { - return (this >= 'a' && this <= 'z\uffff') || - (this >= 'A' && this <= 'Z\uffff'); - }; - - - String.prototype.isDigit = function () { - return (this >= '0' && this <= '9'); - }; - - - String.prototype.supplant = function (o) { - return this.replace(/\{([^{}]*)\}/g, function (a, b) { - var r = o[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - }); - }; - - String.prototype.name = function () { - -// If the string looks like an identifier, then we can return it as is. -// If the string contains no control characters, no quote characters, and no -// backslash characters, then we can simply slap some quotes around it. -// Otherwise we must also replace the offending characters with safe -// sequences. - - if (ix.test(this)) { - return this; - } - if (nx.test(this)) { - return '"' + this.replace(nxg, function (a) { - var c = escapes[a]; - if (c) { - return c; - } - return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4); - }) + '"'; - } - return '"' + this + '"'; - }; - - - function assume() { - if (!option.safe) { - if (option.rhino) { - combine(predefined, rhino); - } - if (option.devel) { - combine(predefined, devel); - } - if (option.browser) { - combine(predefined, browser); - } - if (option.windows) { - combine(predefined, windows); - } - if (option.widget) { - combine(predefined, widget); - } - } - } - - -// Produce an error warning. - - function quit(m, l, ch) { - throw { - name: 'JSLintError', - line: l, - character: ch, - message: m + " (" + Math.floor((l / lines.length) * 100) + - "% scanned)." - }; - } - - function warning(m, t, a, b, c, d) { - var ch, l, w; - t = t || nexttoken; - if (t.id === '(end)') { // `~ - t = token; - } - l = t.line || 0; - ch = t.from || 0; - w = { - id: '(error)', - raw: m, - evidence: lines[l - 1] || '', - line: l, - character: ch, - a: a, - b: b, - c: c, - d: d - }; - w.reason = m.supplant(w); - JSLINT.errors.push(w); - if (option.passfail) { - quit('Stopping. ', l, ch); - } - warnings += 1; - if (warnings >= option.maxerr) { - quit("Too many errors.", l, ch); - } - return w; - } - - function warningAt(m, l, ch, a, b, c, d) { - return warning(m, { - line: l, - from: ch - }, a, b, c, d); - } - - function error(m, t, a, b, c, d) { - var w = warning(m, t, a, b, c, d); - quit("Stopping, unable to continue.", w.line, w.character); - } - - function errorAt(m, l, ch, a, b, c, d) { - return error(m, { - line: l, - from: ch - }, a, b, c, d); - } - - - -// lexical analysis - - var lex = (function lex() { - var character, from, line, s; - -// Private lex methods - - function nextLine() { - var at; - if (line >= lines.length) { - return false; - } - character = 1; - s = lines[line]; - line += 1; - at = s.search(/ \t/); - if (at >= 0) { - warningAt("Mixed spaces and tabs.", line, at + 1); - } - s = s.replace(/\t/g, tab); - at = s.search(cx); - if (at >= 0) { - warningAt("Unsafe character.", line, at); - } - if (option.maxlen && option.maxlen < s.length) { - warningAt("Line too long.", line, s.length); - } - return true; - } - -// Produce a token object. The token inherits from a syntax symbol. - - function it(type, value) { - var i, t; - if (type === '(color)' || type === '(range)') { - t = {type: type}; - } else if (type === '(punctuator)' || - (type === '(identifier)' && is_own(syntax, value))) { - t = syntax[value] || syntax['(error)']; - } else { - //t = syntax[type]; - t = {type: type}; - } - t = Object.create(t); - if (type === '(string)' || type === '(range)') { - if (jx.test(value)) { - warningAt("Script URL.", line, from); - } - } - if (type === '(identifier)') { - t.identifier = true; - if (value === '__iterator__' || value === '__proto__') { - errorAt("Reserved name '{a}'.", - line, from, value); - } else if (option.nomen && - (value.charAt(0) === '_' || - value.charAt(value.length - 1) === '_')) { - warningAt("Unexpected {a} in '{b}'.", line, from, - "dangling '_'", value); - } - } - t.value = value; - t.line = line; - t.character = character; - t.from = from; - i = t.id; - if (i !== '(endline)') { - prereg = i && - (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) || - i === 'return'); - } - return t; - } - -// Public lex methods - - return { - init: function (source) { - if (typeof source === 'string') { - lines = source - .replace(/\r\n/g, '\n') - .replace(/\r/g, '\n') - .split('\n'); - } else { - lines = source; - } - line = 0; - nextLine(); - from = 1; - }, - - range: function (begin, end) { - var c, value = ''; - from = character; - if (s.charAt(0) !== begin) { - errorAt("Expected '{a}' and instead saw '{b}'.", - line, character, begin, s.charAt(0)); - } - for (;;) { - s = s.slice(1); - character += 1; - c = s.charAt(0); - switch (c) { - case '': - errorAt("Missing '{a}'.", line, character, c); - break; - case end: - s = s.slice(1); - character += 1; - return it('(range)', value); - case xquote: - case '\\': - warningAt("Unexpected '{a}'.", line, character, c); - } - value += c; - } - - }, - -// token -- this is called by advance to get the next token. - - token: function () { - var b, c, captures, d, depth, high, i, l, low, q, t; - - function match(x) { - var r = x.exec(s), r1; - if (r) { - l = r[0].length; - r1 = r[1]; - c = r1.charAt(0); - s = s.substr(l); - from = character + l - r1.length; - character += l; - return r1; - } - } - - function string(x) { - var c, j, r = ''; - - if (jsonmode && x !== '"') { - warningAt("Strings must use doublequote.", - line, character); - } - - if (xquote === x || (xmode === 'scriptstring' && !xquote)) { - return it('(punctuator)', x); - } - - function esc(n) { - var i = parseInt(s.substr(j + 1, n), 16); - j += n; - if (i >= 32 && i <= 126 && - i !== 34 && i !== 92 && i !== 39) { - warningAt("Unnecessary escapement.", line, character); - } - character += n; - c = String.fromCharCode(i); - } - j = 0; - for (;;) { - while (j >= s.length) { - j = 0; - if (xmode !== 'html' || !nextLine()) { - errorAt("Unclosed string.", line, from); - } - } - c = s.charAt(j); - if (c === x) { - character += 1; - s = s.substr(j + 1); - return it('(string)', r, x); - } - if (c < ' ') { - if (c === '\n' || c === '\r') { - break; - } - warningAt("Control character in string: {a}.", - line, character + j, s.slice(0, j)); - } else if (c === xquote) { - warningAt("Bad HTML string", line, character + j); - } else if (c === '<') { - if (option.safe && xmode === 'html') { - warningAt("ADsafe string violation.", - line, character + j); - } else if (s.charAt(j + 1) === '/' && (xmode || option.safe)) { - warningAt("Expected '<\\/' and instead saw ' 0) { - character += 1; - s = s.slice(i); - break; - } else { - if (!nextLine()) { - return it('(end)', ''); - } - } - } -// t = match(rx[xmode] || tx); -// if (!t) { -// if (xmode === 'html') { -// return it('(error)', s.charAt(0)); -// } else { -// t = ''; -// c = ''; -// while (s && s < '!') { -// s = s.substr(1); -// } -// if (s) { -// errorAt("Unexpected '{a}'.", -// line, character, s.substr(0, 1)); -// } -// } - t = match(rx[xmode] || tx); - if (!t) { - t = ''; - c = ''; - while (s && s < '!') { - s = s.substr(1); - } - if (s) { - if (xmode === 'html') { - return it('(error)', s.charAt(0)); - } else { - errorAt("Unexpected '{a}'.", - line, character, s.substr(0, 1)); - } - } - } else { - - // identifier - - if (c.isAlpha() || c === '_' || c === '$') { - return it('(identifier)', t); - } - - // number - - if (c.isDigit()) { - if (xmode !== 'style' && !isFinite(Number(t))) { - warningAt("Bad number '{a}'.", - line, character, t); - } - if (xmode !== 'style' && - xmode !== 'styleproperty' && - s.substr(0, 1).isAlpha()) { - warningAt("Missing space after '{a}'.", - line, character, t); - } - if (c === '0') { - d = t.substr(1, 1); - if (d.isDigit()) { - if (token.id !== '.' && xmode !== 'styleproperty') { - warningAt("Don't use extra leading zeros '{a}'.", - line, character, t); - } - } else if (jsonmode && (d === 'x' || d === 'X')) { - warningAt("Avoid 0x-. '{a}'.", - line, character, t); - } - } - if (t.substr(t.length - 1) === '.') { - warningAt( - "A trailing decimal point can be confused with a dot '{a}'.", - line, character, t); - } - return it('(number)', t); - } - switch (t) { - - // string - - case '"': - case "'": - return string(t); - - // // comment - - case '//': - if (src || (xmode && xmode !== 'script')) { - warningAt("Unexpected comment.", line, character); - } else if (xmode === 'script' && /<\s*\//i.test(s)) { - warningAt("Unexpected <\/ in comment.", line, character); - } else if ((option.safe || xmode === 'script') && ax.test(s)) { - warningAt("Dangerous comment.", line, character); - } - s = ''; - token.comment = true; - break; - - // /* comment - - case '/*': - if (src || (xmode && xmode !== 'script' && xmode !== 'style' && xmode !== 'styleproperty')) { - warningAt("Unexpected comment.", line, character); - } - if (option.safe && ax.test(s)) { - warningAt("ADsafe comment violation.", line, character); - } - for (;;) { - i = s.search(lx); - if (i >= 0) { - break; - } - if (!nextLine()) { - errorAt("Unclosed comment.", line, character); - } else { - if (option.safe && ax.test(s)) { - warningAt("ADsafe comment violation.", - line, character); - } - } - } - character += i + 2; - if (s.substr(i, 1) === '/') { - errorAt("Nested comment.", line, character); - } - s = s.substr(i + 2); - token.comment = true; - break; - - // /*members /*jslint /*global - - case '/*members': - case '/*member': - case '/*jslint': - case '/*global': - case '*/': - return { - value: t, - type: 'special', - line: line, - character: character, - from: from - }; - - case '': - break; - // / - case '/': - if (token.id === '/=') { - errorAt( -"A regular expression literal can be confused with '/='.", line, from); - } - if (prereg) { - depth = 0; - captures = 0; - l = 0; - for (;;) { - b = true; - c = s.charAt(l); - l += 1; - switch (c) { - case '': - errorAt("Unclosed regular expression.", - line, from); - return; - case '/': - if (depth > 0) { - warningAt("Unescaped '{a}'.", - line, from + l, '/'); - } - c = s.substr(0, l - 1); - q = { - g: true, - i: true, - m: true - }; - while (q[s.charAt(l)] === true) { - q[s.charAt(l)] = false; - l += 1; - } - character += l; - s = s.substr(l); - q = s.charAt(0); - if (q === '/' || q === '*') { - errorAt("Confusing regular expression.", - line, from); - } - return it('(regexp)', c); - case '\\': - c = s.charAt(l); - if (c < ' ') { - warningAt( -"Unexpected control character in regular expression.", line, from + l); - } else if (c === '<') { - warningAt( -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); - } - l += 1; - break; - case '(': - depth += 1; - b = false; - if (s.charAt(l) === '?') { - l += 1; - switch (s.charAt(l)) { - case ':': - case '=': - case '!': - l += 1; - break; - default: - warningAt( -"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l)); - } - } else { - captures += 1; - } - break; - case '|': - b = false; - break; - case ')': - if (depth === 0) { - warningAt("Unescaped '{a}'.", - line, from + l, ')'); - } else { - depth -= 1; - } - break; - case ' ': - q = 1; - while (s.charAt(l) === ' ') { - l += 1; - q += 1; - } - if (q > 1) { - warningAt( -"Spaces are hard to count. Use {{a}}.", line, from + l, q); - } - break; - case '[': - c = s.charAt(l); - if (c === '^') { - l += 1; - if (option.regexp) { - warningAt("Insecure '{a}'.", - line, from + l, c); - } else if (s.charAt(l) === ']') { - errorAt("Unescaped '{a}'.", - line, from + l, '^'); - } - } - q = false; - if (c === ']') { - warningAt("Empty class.", line, - from + l - 1); - q = true; - } -klass: do { - c = s.charAt(l); - l += 1; - switch (c) { - case '[': - case '^': - warningAt("Unescaped '{a}'.", - line, from + l, c); - q = true; - break; - case '-': - if (q) { - q = false; - } else { - warningAt("Unescaped '{a}'.", - line, from + l, '-'); - q = true; - } - break; - case ']': - if (!q) { - warningAt("Unescaped '{a}'.", - line, from + l - 1, '-'); - } - break klass; - case '\\': - c = s.charAt(l); - if (c < ' ') { - warningAt( -"Unexpected control character in regular expression.", line, from + l); - } else if (c === '<') { - warningAt( -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); - } - l += 1; - q = true; - break; - case '/': - warningAt("Unescaped '{a}'.", - line, from + l - 1, '/'); - q = true; - break; - case '<': - if (xmode === 'script') { - c = s.charAt(l); - if (c === '!' || c === '/') { - warningAt( -"HTML confusion in regular expression '<{a}'.", line, from + l, c); - } - } - q = true; - break; - default: - q = true; - } - } while (c); - break; - case '.': - if (option.regexp) { - warningAt("Insecure '{a}'.", line, - from + l, c); - } - break; - case ']': - case '?': - case '{': - case '}': - case '+': - case '*': - warningAt("Unescaped '{a}'.", line, - from + l, c); - break; - case '<': - if (xmode === 'script') { - c = s.charAt(l); - if (c === '!' || c === '/') { - warningAt( -"HTML confusion in regular expression '<{a}'.", line, from + l, c); - } - } - } - if (b) { - switch (s.charAt(l)) { - case '?': - case '+': - case '*': - l += 1; - if (s.charAt(l) === '?') { - l += 1; - } - break; - case '{': - l += 1; - c = s.charAt(l); - if (c < '0' || c > '9') { - warningAt( -"Expected a number and instead saw '{a}'.", line, from + l, c); - } - l += 1; - low = +c; - for (;;) { - c = s.charAt(l); - if (c < '0' || c > '9') { - break; - } - l += 1; - low = +c + (low * 10); - } - high = low; - if (c === ',') { - l += 1; - high = Infinity; - c = s.charAt(l); - if (c >= '0' && c <= '9') { - l += 1; - high = +c; - for (;;) { - c = s.charAt(l); - if (c < '0' || c > '9') { - break; - } - l += 1; - high = +c + (high * 10); - } - } - } - if (s.charAt(l) !== '}') { - warningAt( -"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c); - } else { - l += 1; - } - if (s.charAt(l) === '?') { - l += 1; - } - if (low > high) { - warningAt( -"'{a}' should not be greater than '{b}'.", line, from + l, low, high); - } - } - } - } - c = s.substr(0, l - 1); - character += l; - s = s.substr(l); - return it('(regexp)', c); - } - return it('(punctuator)', t); - - // punctuator - - case '.", line, character); - } - character += 3; - s = s.slice(i + 3); - break; - case '#': - if (xmode === 'html' || xmode === 'styleproperty') { - for (;;) { - c = s.charAt(0); - if ((c < '0' || c > '9') && - (c < 'a' || c > 'f') && - (c < 'A' || c > 'F')) { - break; - } - character += 1; - s = s.substr(1); - t += c; - } - if (t.length !== 4 && t.length !== 7) { - warningAt("Bad hex color '{a}'.", line, - from + l, t); - } - return it('(color)', t); - } - return it('(punctuator)', t); - default: - if (xmode === 'outer' && c === '&') { - character += 1; - s = s.substr(1); - for (;;) { - c = s.charAt(0); - character += 1; - s = s.substr(1); - if (c === ';') { - break; - } - if (!((c >= '0' && c <= '9') || - (c >= 'a' && c <= 'z') || - c === '#')) { - errorAt("Bad entity", line, from + l, - character); - } - } - break; - } - return it('(punctuator)', t); - } - } - } - } - }; - }()); - - - function addlabel(t, type) { - - if (option.safe && funct['(global)'] && - typeof predefined[t] !== 'boolean') { - warning('ADsafe global: ' + t + '.', token); - } else if (t === 'hasOwnProperty') { - warning("'hasOwnProperty' is a really bad name."); - } - -// Define t in the current function in the current scope. - - if (is_own(funct, t) && !funct['(global)']) { - warning(funct[t] === true ? - "'{a}' was used before it was defined." : - "'{a}' is already defined.", - nexttoken, t); - } - funct[t] = type; - if (funct['(global)']) { - global[t] = funct; - if (is_own(implied, t)) { - warning("'{a}' was used before it was defined.", nexttoken, t); - delete implied[t]; - } - } else { - scope[t] = funct; - } - } - - - function doOption() { - var b, obj, filter, o = nexttoken.value, t, v; - switch (o) { - case '*/': - error("Unbegun comment."); - break; - case '/*members': - case '/*member': - o = '/*members'; - if (!membersOnly) { - membersOnly = {}; - } - obj = membersOnly; - break; - case '/*jslint': - if (option.safe) { - warning("ADsafe restriction."); - } - obj = option; - filter = boolOptions; - break; - case '/*global': - if (option.safe) { - warning("ADsafe restriction."); - } - obj = predefined; - break; - default: - } - t = lex.token(); -loop: for (;;) { - for (;;) { - if (t.type === 'special' && t.value === '*/') { - break loop; - } - if (t.id !== '(endline)' && t.id !== ',') { - break; - } - t = lex.token(); - } - if (t.type !== '(string)' && t.type !== '(identifier)' && - o !== '/*members') { - error("Bad option.", t); - } - v = lex.token(); - if (v.id === ':') { - v = lex.token(); - if (obj === membersOnly) { - error("Expected '{a}' and instead saw '{b}'.", - t, '*/', ':'); - } - if (t.value === 'indent' && o === '/*jslint') { - b = +v.value; - if (typeof b !== 'number' || !isFinite(b) || b <= 0 || - Math.floor(b) !== b) { - error("Expected a small integer and instead saw '{a}'.", - v, v.value); - } - obj.white = true; - obj.indent = b; - } else if (t.value === 'maxerr' && o === '/*jslint') { - b = +v.value; - if (typeof b !== 'number' || !isFinite(b) || b <= 0 || - Math.floor(b) !== b) { - error("Expected a small integer and instead saw '{a}'.", - v, v.value); - } - obj.maxerr = b; - } else if (t.value === 'maxlen' && o === '/*jslint') { - b = +v.value; - if (typeof b !== 'number' || !isFinite(b) || b <= 0 || - Math.floor(b) !== b) { - error("Expected a small integer and instead saw '{a}'.", - v, v.value); - } - obj.maxlen = b; - } else if (v.value === 'true') { - obj[t.value] = true; - } else if (v.value === 'false') { - obj[t.value] = false; - } else { - error("Bad option value.", v); - } - t = lex.token(); - } else { - if (o === '/*jslint') { - error("Missing option value.", t); - } - obj[t.value] = false; - t = v; - } - } - if (filter) { - assume(); - } - } - - -// We need a peek function. If it has an argument, it peeks that much farther -// ahead. It is used to distinguish -// for ( var i in ... -// from -// for ( var i = ... - - function peek(p) { - var i = p || 0, j = 0, t; - - while (j <= i) { - t = lookahead[j]; - if (!t) { - t = lookahead[j] = lex.token(); - } - j += 1; - } - return t; - } - - - -// Produce the next token. It looks for programming errors. - - function advance(id, t) { - switch (token.id) { - case '(number)': - if (nexttoken.id === '.') { - warning( -"A dot following a number can be confused with a decimal point.", token); - } - break; - case '-': - if (nexttoken.id === '-' || nexttoken.id === '--') { - warning("Confusing minusses."); - } - break; - case '+': - if (nexttoken.id === '+' || nexttoken.id === '++') { - warning("Confusing plusses."); - } - break; - } - if (token.type === '(string)' || token.identifier) { - anonname = token.value; - } - - if (id && nexttoken.id !== id) { - if (t) { - if (nexttoken.id === '(end)') { - warning("Unmatched '{a}'.", t, t.id); - } else { - warning( -"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.", - nexttoken, id, t.id, t.line, nexttoken.value); - } - } else if (nexttoken.type !== '(identifier)' || - nexttoken.value !== id) { - warning("Expected '{a}' and instead saw '{b}'.", - nexttoken, id, nexttoken.value); - } - } - prevtoken = token; - token = nexttoken; - for (;;) { - nexttoken = lookahead.shift() || lex.token(); - if (nexttoken.id === '(end)' || nexttoken.id === '(error)') { - return; - } - if (nexttoken.type === 'special') { - doOption(); - } else { - if (nexttoken.id !== '(endline)') { - break; - } - } - } - } - - -// This is the heart of JSLINT, the Pratt parser. In addition to parsing, it -// is looking for ad hoc lint patterns. We add to Pratt's model .fud, which is -// like nud except that it is only used on the first token of a statement. -// Having .fud makes it much easier to define JavaScript. I retained Pratt's -// nomenclature. - -// .nud Null denotation -// .fud First null denotation -// .led Left denotation -// lbp Left binding power -// rbp Right binding power - -// They are key to the parsing method called Top Down Operator Precedence. - - function parse(rbp, initial) { - var left; - if (nexttoken.id === '(end)') { - error("Unexpected early end of program.", token); - } - advance(); - if (option.safe && typeof predefined[token.value] === 'boolean' && - (nexttoken.id !== '(' && nexttoken.id !== '.')) { - warning('ADsafe violation.', token); - } - if (initial) { - anonname = 'anonymous'; - funct['(verb)'] = token.value; - } - if (initial === true && token.fud) { - left = token.fud(); - } else { - if (token.nud) { - left = token.nud(); - } else { - if (nexttoken.type === '(number)' && token.id === '.') { - warning( -"A leading decimal point can be confused with a dot: '.{a}'.", - token, nexttoken.value); - advance(); - return token; - } else { - error("Expected an identifier and instead saw '{a}'.", - token, token.id); - } - } - while (rbp < nexttoken.lbp) { - advance(); - if (token.led) { - left = token.led(left); - } else { - error("Expected an operator and instead saw '{a}'.", - token, token.id); - } - } - } - return left; - } - - -// Functions for conformance of style. - - function adjacent(left, right) { - left = left || token; - right = right || nexttoken; - if (option.white || xmode === 'styleproperty' || xmode === 'style') { - if (left.character !== right.from && left.line === right.line) { - warning("Unexpected space after '{a}'.", right, left.value); - } - } - } - - function nobreak(left, right) { - left = left || token; - right = right || nexttoken; - if (left.character !== right.from || left.line !== right.line) { - warning("Unexpected space before '{a}'.", right, right.value); - } - } - - function nospace(left, right) { - left = left || token; - right = right || nexttoken; - if (option.white && !left.comment) { - if (left.line === right.line) { - adjacent(left, right); - } - } - } - - - function nonadjacent(left, right) { - if (option.white) { - left = left || token; - right = right || nexttoken; - if (left.line === right.line && left.character === right.from) { - warning("Missing space after '{a}'.", - nexttoken, left.value); - } - } - } - - function nobreaknonadjacent(left, right) { - left = left || token; - right = right || nexttoken; - if (!option.laxbreak && left.line !== right.line) { - warning("Bad line breaking before '{a}'.", right, right.id); - } else if (option.white) { - left = left || token; - right = right || nexttoken; - if (left.character === right.from) { - warning("Missing space after '{a}'.", - nexttoken, left.value); - } - } - } - - function indentation(bias) { - var i; - if (option.white && nexttoken.id !== '(end)') { - i = indent + (bias || 0); - if (nexttoken.from !== i) { - warning( -"Expected '{a}' to have an indentation at {b} instead at {c}.", - nexttoken, nexttoken.value, i, nexttoken.from); - } - } - } - - function nolinebreak(t) { - t = t || token; - if (t.line !== nexttoken.line) { - warning("Line breaking error '{a}'.", t, t.value); - } - } - - - function comma() { - if (token.line !== nexttoken.line) { - if (!option.laxbreak) { - warning("Bad line breaking before '{a}'.", token, nexttoken.id); - } - } else if (token.character !== nexttoken.from && option.white) { - warning("Unexpected space after '{a}'.", nexttoken, token.value); - } - advance(','); - nonadjacent(token, nexttoken); - } - - -// Functional constructors for making the symbols that will be inherited by -// tokens. - - function symbol(s, p) { - var x = syntax[s]; - if (!x || typeof x !== 'object') { - syntax[s] = x = { - id: s, - lbp: p, - value: s - }; - } - return x; - } - - - function delim(s) { - return symbol(s, 0); - } - - - function stmt(s, f) { - var x = delim(s); - x.identifier = x.reserved = true; - x.fud = f; - return x; - } - - - function blockstmt(s, f) { - var x = stmt(s, f); - x.block = true; - return x; - } - - - function reserveName(x) { - var c = x.id.charAt(0); - if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { - x.identifier = x.reserved = true; - } - return x; - } - - - function prefix(s, f) { - var x = symbol(s, 150); - reserveName(x); - x.nud = (typeof f === 'function') ? f : function () { - this.right = parse(150); - this.arity = 'unary'; - if (this.id === '++' || this.id === '--') { - if (option.plusplus) { - warning("Unexpected use of '{a}'.", this, this.id); - } else if ((!this.right.identifier || this.right.reserved) && - this.right.id !== '.' && this.right.id !== '[') { - warning("Bad operand.", this); - } - } - return this; - }; - return x; - } - - - function type(s, f) { - var x = delim(s); - x.type = s; - x.nud = f; - return x; - } - - - function reserve(s, f) { - var x = type(s, f); - x.identifier = x.reserved = true; - return x; - } - - - function reservevar(s, v) { - return reserve(s, function () { - if (typeof v === 'function') { - v(this); - } - return this; - }); - } - - - function infix(s, f, p, w) { - var x = symbol(s, p); - reserveName(x); - x.led = function (left) { - if (!w) { - nobreaknonadjacent(prevtoken, token); - nonadjacent(token, nexttoken); - } - if (typeof f === 'function') { - return f(left, this); - } else { - this.left = left; - this.right = parse(p); - return this; - } - }; - return x; - } - - - function relation(s, f) { - var x = symbol(s, 100); - x.led = function (left) { - nobreaknonadjacent(prevtoken, token); - nonadjacent(token, nexttoken); - var right = parse(100); - if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) { - warning("Use the isNaN function to compare with NaN.", this); - } else if (f) { - f.apply(this, [left, right]); - } - if (left.id === '!') { - warning("Confusing use of '{a}'.", left, '!'); - } - if (right.id === '!') { - warning("Confusing use of '{a}'.", left, '!'); - } - this.left = left; - this.right = right; - return this; - }; - return x; - } - - - function isPoorRelation(node) { - return node && - ((node.type === '(number)' && +node.value === 0) || - (node.type === '(string)' && node.value === '') || - node.type === 'true' || - node.type === 'false' || - node.type === 'undefined' || - node.type === 'null'); - } - - - function assignop(s, f) { - symbol(s, 20).exps = true; - return infix(s, function (left, that) { - var l; - that.left = left; - if (predefined[left.value] === false && - scope[left.value]['(global)'] === true) { - warning("Read only.", left); - } else if (left['function']) { - warning("'{a}' is a function.", left, left.value); - } - if (option.safe) { - l = left; - do { - if (typeof predefined[l.value] === 'boolean') { - warning('ADsafe violation.', l); - } - l = l.left; - } while (l); - } - if (left) { - if (left.id === '.' || left.id === '[') { - if (!left.left || left.left.value === 'arguments') { - warning('Bad assignment.', that); - } - that.right = parse(19); - return that; - } else if (left.identifier && !left.reserved) { - if (funct[left.value] === 'exception') { - warning("Do not assign to the exception parameter.", left); - } - that.right = parse(19); - return that; - } - if (left === syntax['function']) { - warning( -"Expected an identifier in an assignment and instead saw a function invocation.", - token); - } - } - error("Bad assignment.", that); - }, 20); - } - - - function bitwise(s, f, p) { - var x = symbol(s, p); - reserveName(x); - x.led = (typeof f === 'function') ? f : function (left) { - if (option.bitwise) { - warning("Unexpected use of '{a}'.", this, this.id); - } - this.left = left; - this.right = parse(p); - return this; - }; - return x; - } - - - function bitwiseassignop(s) { - symbol(s, 20).exps = true; - return infix(s, function (left, that) { - if (option.bitwise) { - warning("Unexpected use of '{a}'.", that, that.id); - } - nonadjacent(prevtoken, token); - nonadjacent(token, nexttoken); - if (left) { - if (left.id === '.' || left.id === '[' || - (left.identifier && !left.reserved)) { - parse(19); - return that; - } - if (left === syntax['function']) { - warning( -"Expected an identifier in an assignment, and instead saw a function invocation.", - token); - } - return that; - } - error("Bad assignment.", that); - }, 20); - } - - - function suffix(s, f) { - var x = symbol(s, 150); - x.led = function (left) { - if (option.plusplus) { - warning("Unexpected use of '{a}'.", this, this.id); - } else if ((!left.identifier || left.reserved) && - left.id !== '.' && left.id !== '[') { - warning("Bad operand.", this); - } - this.left = left; - return this; - }; - return x; - } - - - function optionalidentifier() { - if (nexttoken.identifier) { - advance(); - if (option.safe && banned[token.value]) { - warning("ADsafe violation: '{a}'.", token, token.value); - } else if (token.reserved && !option.es5) { - warning("Expected an identifier and instead saw '{a}' (a reserved word).", - token, token.id); - } - return token.value; - } - } - - - function identifier() { - var i = optionalidentifier(); - if (i) { - return i; - } - if (token.id === 'function' && nexttoken.id === '(') { - warning("Missing name in function statement."); - } else { - error("Expected an identifier and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - } - - - function reachable(s) { - var i = 0, t; - if (nexttoken.id !== ';' || noreach) { - return; - } - for (;;) { - t = peek(i); - if (t.reach) { - return; - } - if (t.id !== '(endline)') { - if (t.id === 'function') { - warning( -"Inner functions should be listed at the top of the outer function.", t); - break; - } - warning("Unreachable '{a}' after '{b}'.", t, t.value, s); - break; - } - i += 1; - } - } - - - function statement(noindent) { - var i = indent, r, s = scope, t = nexttoken; - -// We don't like the empty statement. - - if (t.id === ';') { - warning("Unnecessary semicolon.", t); - advance(';'); - return; - } - -// Is this a labelled statement? - - if (t.identifier && !t.reserved && peek().id === ':') { - advance(); - advance(':'); - scope = Object.create(s); - addlabel(t.value, 'label'); - if (!nexttoken.labelled) { - warning("Label '{a}' on {b} statement.", - nexttoken, t.value, nexttoken.value); - } - if (jx.test(t.value + ':')) { - warning("Label '{a}' looks like a javascript url.", - t, t.value); - } - nexttoken.label = t.value; - t = nexttoken; - } - -// Parse the statement. - - if (!noindent) { - indentation(); - } - r = parse(0, true); - -// Look for the final semicolon. - - if (!t.block) { - if (!r || !r.exps) { - warning( -"Expected an assignment or function call and instead saw an expression.", - token); - } else if (r.id === '(' && r.left.id === 'new') { - warning("Do not use 'new' for side effects."); - } - if (nexttoken.id !== ';') { - warningAt("Missing semicolon.", token.line, - token.from + token.value.length); - } else { - adjacent(token, nexttoken); - advance(';'); - nonadjacent(token, nexttoken); - } - } - -// Restore the indentation. - - indent = i; - scope = s; - return r; - } - - - function use_strict() { - if (nexttoken.value === 'use strict') { - advance(); - advance(';'); - strict_mode = true; - option.newcap = true; - option.undef = true; - return true; - } else { - return false; - } - } - - - function statements(begin) { - var a = [], f, p; - if (begin && !use_strict() && option.strict) { - warning('Missing "use strict" statement.', nexttoken); - } - if (option.adsafe) { - switch (begin) { - case 'script': - if (!adsafe_may) { - if (nexttoken.value !== 'ADSAFE' || - peek(0).id !== '.' || - (peek(1).value !== 'id' && - peek(1).value !== 'go')) { - error('ADsafe violation: Missing ADSAFE.id or ADSAFE.go.', - nexttoken); - } - } - if (nexttoken.value === 'ADSAFE' && - peek(0).id === '.' && - peek(1).value === 'id') { - if (adsafe_may) { - error('ADsafe violation.', nexttoken); - } - advance('ADSAFE'); - advance('.'); - advance('id'); - advance('('); - if (nexttoken.value !== adsafe_id) { - error('ADsafe violation: id does not match.', nexttoken); - } - advance('(string)'); - advance(')'); - advance(';'); - adsafe_may = true; - } - break; - case 'lib': - if (nexttoken.value === 'ADSAFE') { - advance('ADSAFE'); - advance('.'); - advance('lib'); - advance('('); - advance('(string)'); - comma(); - f = parse(0); - if (f.id !== 'function') { - error('The second argument to lib must be a function.', f); - } - p = f.funct['(params)']; - p = p && p.join(', '); - if (p && p !== 'lib') { - error("Expected '{a}' and instead saw '{b}'.", - f, '(lib)', '(' + p + ')'); - } - advance(')'); - advance(';'); - return a; - } else { - error("ADsafe lib violation."); - } - } - } - while (!nexttoken.reach && nexttoken.id !== '(end)') { - if (nexttoken.id === ';') { - warning("Unnecessary semicolon."); - advance(';'); - } else { - a.push(statement()); - } - } - return a; - } - - - function block(f) { - var a, b = inblock, old_indent = indent, s = scope, t; - inblock = f; - scope = Object.create(scope); - nonadjacent(token, nexttoken); - t = nexttoken; - if (nexttoken.id === '{') { - advance('{'); - if (nexttoken.id !== '}' || token.line !== nexttoken.line) { - indent += option.indent; - while (!f && nexttoken.from > indent) { - indent += option.indent; - } - if (!f) { - use_strict(); - } - a = statements(); - indent -= option.indent; - indentation(); - } - advance('}', t); - indent = old_indent; - } else { - warning("Expected '{a}' and instead saw '{b}'.", - nexttoken, '{', nexttoken.value); - noreach = true; - a = [statement()]; - noreach = false; - } - funct['(verb)'] = null; - scope = s; - inblock = b; - if (f && (!a || a.length === 0)) { - warning("Empty block."); - } - return a; - } - - - function countMember(m) { - if (membersOnly && typeof membersOnly[m] !== 'boolean') { - warning("Unexpected /*member '{a}'.", token, m); - } - if (typeof member[m] === 'number') { - member[m] += 1; - } else { - member[m] = 1; - } - } - - - function note_implied(token) { - var name = token.value, line = token.line, a = implied[name]; - if (typeof a === 'function') { - a = false; - } - if (!a) { - a = [line]; - implied[name] = a; - } else if (a[a.length - 1] !== line) { - a.push(line); - } - } - - -// CSS parsing. - - - function cssName() { - if (nexttoken.identifier) { - advance(); - return true; - } - } - - - function cssNumber() { - if (nexttoken.id === '-') { - advance('-'); - adjacent(); - nolinebreak(); - } - if (nexttoken.type === '(number)') { - advance('(number)'); - return true; - } - } - - - function cssString() { - if (nexttoken.type === '(string)') { - advance(); - return true; - } - } - - - function cssColor() { - var i, number, value; - if (nexttoken.identifier) { - value = nexttoken.value; - if (value === 'rgb' || value === 'rgba') { - advance(); - advance('('); - for (i = 0; i < 3; i += 1) { - if (i) { - advance(','); - } - number = nexttoken.value; - if (nexttoken.type !== '(number)' || number < 0) { - warning("Expected a positive number and instead saw '{a}'", - nexttoken, number); - advance(); - } else { - advance(); - if (nexttoken.id === '%') { - advance('%'); - if (number > 100) { - warning("Expected a percentage and instead saw '{a}'", - token, number); - } - } else { - if (number > 255) { - warning("Expected a small number and instead saw '{a}'", - token, number); - } - } - } - } - if (value === 'rgba') { - advance(','); - number = +nexttoken.value; - if (nexttoken.type !== '(number)' || number < 0 || number > 1) { - warning("Expected a number between 0 and 1 and instead saw '{a}'", - nexttoken, number); - } - advance(); - if (nexttoken.id === '%') { - warning("Unexpected '%'."); - advance('%'); - } - } - advance(')'); - return true; - } else if (cssColorData[nexttoken.value] === true) { - advance(); - return true; - } - } else if (nexttoken.type === '(color)') { - advance(); - return true; - } - return false; - } - - - function cssLength() { - if (nexttoken.id === '-') { - advance('-'); - adjacent(); - nolinebreak(); - } - if (nexttoken.type === '(number)') { - advance(); - if (nexttoken.type !== '(string)' && - cssLengthData[nexttoken.value] === true) { - adjacent(); - advance(); - } else if (+token.value !== 0) { - warning("Expected a linear unit and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - return true; - } - return false; - } - - - function cssLineHeight() { - if (nexttoken.id === '-') { - advance('-'); - adjacent(); - } - if (nexttoken.type === '(number)') { - advance(); - if (nexttoken.type !== '(string)' && - cssLengthData[nexttoken.value] === true) { - adjacent(); - advance(); - } - return true; - } - return false; - } - - - function cssWidth() { - if (nexttoken.identifier) { - switch (nexttoken.value) { - case 'thin': - case 'medium': - case 'thick': - advance(); - return true; - } - } else { - return cssLength(); - } - } - - - function cssMargin() { - if (nexttoken.identifier) { - if (nexttoken.value === 'auto') { - advance(); - return true; - } - } else { - return cssLength(); - } - } - - function cssAttr() { - if (nexttoken.identifier && nexttoken.value === 'attr') { - advance(); - advance('('); - if (!nexttoken.identifier) { - warning("Expected a name and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - advance(')'); - return true; - } - return false; - } - - - function cssCommaList() { - while (nexttoken.id !== ';') { - if (!cssName() && !cssString()) { - warning("Expected a name and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - if (nexttoken.id !== ',') { - return true; - } - comma(); - } - } - - - function cssCounter() { - if (nexttoken.identifier && nexttoken.value === 'counter') { - advance(); - advance('('); - advance(); - if (nexttoken.id === ',') { - comma(); - if (nexttoken.type !== '(string)') { - warning("Expected a string and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - } - advance(')'); - return true; - } - if (nexttoken.identifier && nexttoken.value === 'counters') { - advance(); - advance('('); - if (!nexttoken.identifier) { - warning("Expected a name and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - if (nexttoken.id === ',') { - comma(); - if (nexttoken.type !== '(string)') { - warning("Expected a string and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - } - if (nexttoken.id === ',') { - comma(); - if (nexttoken.type !== '(string)') { - warning("Expected a string and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - } - advance(')'); - return true; - } - return false; - } - - - function cssShape() { - var i; - if (nexttoken.identifier && nexttoken.value === 'rect') { - advance(); - advance('('); - for (i = 0; i < 4; i += 1) { - if (!cssLength()) { - warning("Expected a number and instead saw '{a}'.", - nexttoken, nexttoken.value); - break; - } - } - advance(')'); - return true; - } - return false; - } - - - function cssUrl() { - var c, url; - if (nexttoken.identifier && nexttoken.value === 'url') { - nexttoken = lex.range('(', ')'); - url = nexttoken.value; - c = url.charAt(0); - if (c === '"' || c === '\'') { - if (url.slice(-1) !== c) { - warning("Bad url string."); - } else { - url = url.slice(1, -1); - if (url.indexOf(c) >= 0) { - warning("Bad url string."); - } - } - } - if (!url) { - warning("Missing url."); - } - advance(); - if (option.safe && ux.test(url)) { - error("ADsafe URL violation."); - } - urls.push(url); - return true; - } - return false; - } - - - cssAny = [cssUrl, function () { - for (;;) { - if (nexttoken.identifier) { - switch (nexttoken.value.toLowerCase()) { - case 'url': - cssUrl(); - break; - case 'expression': - warning("Unexpected expression '{a}'.", - nexttoken, nexttoken.value); - advance(); - break; - default: - advance(); - } - } else { - if (nexttoken.id === ';' || nexttoken.id === '!' || - nexttoken.id === '(end)' || nexttoken.id === '}') { - return true; - } - advance(); - } - } - }]; - - - cssBorderStyle = [ - 'none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'ridge', - 'inset', 'outset' - ]; - - cssBreak = [ - 'auto', 'always', 'avoid', 'left', 'right' - ]; - - cssOverflow = [ - 'auto', 'hidden', 'scroll', 'visible' - ]; - - cssAttributeData = { - background: [ - true, 'background-attachment', 'background-color', - 'background-image', 'background-position', 'background-repeat' - ], - 'background-attachment': ['scroll', 'fixed'], - 'background-color': ['transparent', cssColor], - 'background-image': ['none', cssUrl], - 'background-position': [ - 2, [cssLength, 'top', 'bottom', 'left', 'right', 'center'] - ], - 'background-repeat': [ - 'repeat', 'repeat-x', 'repeat-y', 'no-repeat' - ], - 'border': [true, 'border-color', 'border-style', 'border-width'], - 'border-bottom': [ - true, 'border-bottom-color', 'border-bottom-style', - 'border-bottom-width' - ], - 'border-bottom-color': cssColor, - 'border-bottom-style': cssBorderStyle, - 'border-bottom-width': cssWidth, - 'border-collapse': ['collapse', 'separate'], - 'border-color': ['transparent', 4, cssColor], - 'border-left': [ - true, 'border-left-color', 'border-left-style', 'border-left-width' - ], - 'border-left-color': cssColor, - 'border-left-style': cssBorderStyle, - 'border-left-width': cssWidth, - 'border-right': [ - true, 'border-right-color', 'border-right-style', - 'border-right-width' - ], - 'border-right-color': cssColor, - 'border-right-style': cssBorderStyle, - 'border-right-width': cssWidth, - 'border-spacing': [2, cssLength], - 'border-style': [4, cssBorderStyle], - 'border-top': [ - true, 'border-top-color', 'border-top-style', 'border-top-width' - ], - 'border-top-color': cssColor, - 'border-top-style': cssBorderStyle, - 'border-top-width': cssWidth, - 'border-width': [4, cssWidth], - bottom: [cssLength, 'auto'], - 'caption-side' : ['bottom', 'left', 'right', 'top'], - clear: ['both', 'left', 'none', 'right'], - clip: [cssShape, 'auto'], - color: cssColor, - content: [ - 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', - cssString, cssUrl, cssCounter, cssAttr - ], - 'counter-increment': [ - cssName, 'none' - ], - 'counter-reset': [ - cssName, 'none' - ], - cursor: [ - cssUrl, 'auto', 'crosshair', 'default', 'e-resize', 'help', 'move', - 'n-resize', 'ne-resize', 'nw-resize', 'pointer', 's-resize', - 'se-resize', 'sw-resize', 'w-resize', 'text', 'wait' - ], - direction: ['ltr', 'rtl'], - display: [ - 'block', 'compact', 'inline', 'inline-block', 'inline-table', - 'list-item', 'marker', 'none', 'run-in', 'table', 'table-caption', - 'table-cell', 'table-column', 'table-column-group', - 'table-footer-group', 'table-header-group', 'table-row', - 'table-row-group' - ], - 'empty-cells': ['show', 'hide'], - 'float': ['left', 'none', 'right'], - font: [ - 'caption', 'icon', 'menu', 'message-box', 'small-caption', - 'status-bar', true, 'font-size', 'font-style', 'font-weight', - 'font-family' - ], - 'font-family': cssCommaList, - 'font-size': [ - 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', - 'xx-large', 'larger', 'smaller', cssLength - ], - 'font-size-adjust': ['none', cssNumber], - 'font-stretch': [ - 'normal', 'wider', 'narrower', 'ultra-condensed', - 'extra-condensed', 'condensed', 'semi-condensed', - 'semi-expanded', 'expanded', 'extra-expanded' - ], - 'font-style': [ - 'normal', 'italic', 'oblique' - ], - 'font-variant': [ - 'normal', 'small-caps' - ], - 'font-weight': [ - 'normal', 'bold', 'bolder', 'lighter', cssNumber - ], - height: [cssLength, 'auto'], - left: [cssLength, 'auto'], - 'letter-spacing': ['normal', cssLength], - 'line-height': ['normal', cssLineHeight], - 'list-style': [ - true, 'list-style-image', 'list-style-position', 'list-style-type' - ], - 'list-style-image': ['none', cssUrl], - 'list-style-position': ['inside', 'outside'], - 'list-style-type': [ - 'circle', 'disc', 'square', 'decimal', 'decimal-leading-zero', - 'lower-roman', 'upper-roman', 'lower-greek', 'lower-alpha', - 'lower-latin', 'upper-alpha', 'upper-latin', 'hebrew', 'katakana', - 'hiragana-iroha', 'katakana-oroha', 'none' - ], - margin: [4, cssMargin], - 'margin-bottom': cssMargin, - 'margin-left': cssMargin, - 'margin-right': cssMargin, - 'margin-top': cssMargin, - 'marker-offset': [cssLength, 'auto'], - 'max-height': [cssLength, 'none'], - 'max-width': [cssLength, 'none'], - 'min-height': cssLength, - 'min-width': cssLength, - opacity: cssNumber, - outline: [true, 'outline-color', 'outline-style', 'outline-width'], - 'outline-color': ['invert', cssColor], - 'outline-style': [ - 'dashed', 'dotted', 'double', 'groove', 'inset', 'none', - 'outset', 'ridge', 'solid' - ], - 'outline-width': cssWidth, - overflow: cssOverflow, - 'overflow-x': cssOverflow, - 'overflow-y': cssOverflow, - padding: [4, cssLength], - 'padding-bottom': cssLength, - 'padding-left': cssLength, - 'padding-right': cssLength, - 'padding-top': cssLength, - 'page-break-after': cssBreak, - 'page-break-before': cssBreak, - position: ['absolute', 'fixed', 'relative', 'static'], - quotes: [8, cssString], - right: [cssLength, 'auto'], - 'table-layout': ['auto', 'fixed'], - 'text-align': ['center', 'justify', 'left', 'right'], - 'text-decoration': [ - 'none', 'underline', 'overline', 'line-through', 'blink' - ], - 'text-indent': cssLength, - 'text-shadow': ['none', 4, [cssColor, cssLength]], - 'text-transform': ['capitalize', 'uppercase', 'lowercase', 'none'], - top: [cssLength, 'auto'], - 'unicode-bidi': ['normal', 'embed', 'bidi-override'], - 'vertical-align': [ - 'baseline', 'bottom', 'sub', 'super', 'top', 'text-top', 'middle', - 'text-bottom', cssLength - ], - visibility: ['visible', 'hidden', 'collapse'], - 'white-space': [ - 'normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'inherit' - ], - width: [cssLength, 'auto'], - 'word-spacing': ['normal', cssLength], - 'word-wrap': ['break-word', 'normal'], - 'z-index': ['auto', cssNumber] - }; - - function styleAttribute() { - var v; - while (nexttoken.id === '*' || nexttoken.id === '#' || - nexttoken.value === '_') { - if (!option.css) { - warning("Unexpected '{a}'.", nexttoken, nexttoken.value); - } - advance(); - } - if (nexttoken.id === '-') { - if (!option.css) { - warning("Unexpected '{a}'.", nexttoken, nexttoken.value); - } - advance('-'); - if (!nexttoken.identifier) { - warning( -"Expected a non-standard style attribute and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - return cssAny; - } else { - if (!nexttoken.identifier) { - warning("Excepted a style attribute, and instead saw '{a}'.", - nexttoken, nexttoken.value); - } else { - if (is_own(cssAttributeData, nexttoken.value)) { - v = cssAttributeData[nexttoken.value]; - } else { - v = cssAny; - if (!option.css) { - warning("Unrecognized style attribute '{a}'.", - nexttoken, nexttoken.value); - } - } - } - advance(); - return v; - } - } - - - function styleValue(v) { - var i = 0, - n, - once, - match, - round, - start = 0, - vi; - switch (typeof v) { - case 'function': - return v(); - case 'string': - if (nexttoken.identifier && nexttoken.value === v) { - advance(); - return true; - } - return false; - } - for (;;) { - if (i >= v.length) { - return false; - } - vi = v[i]; - i += 1; - if (vi === true) { - break; - } else if (typeof vi === 'number') { - n = vi; - vi = v[i]; - i += 1; - } else { - n = 1; - } - match = false; - while (n > 0) { - if (styleValue(vi)) { - match = true; - n -= 1; - } else { - break; - } - } - if (match) { - return true; - } - } - start = i; - once = []; - for (;;) { - round = false; - for (i = start; i < v.length; i += 1) { - if (!once[i]) { - if (styleValue(cssAttributeData[v[i]])) { - match = true; - round = true; - once[i] = true; - break; - } - } - } - if (!round) { - return match; - } - } - } - - function styleChild() { - if (nexttoken.id === '(number)') { - advance(); - if (nexttoken.value === 'n' && nexttoken.identifier) { - adjacent(); - advance(); - if (nexttoken.id === '+') { - adjacent(); - advance('+'); - adjacent(); - advance('(number)'); - } - } - return; - } else { - switch (nexttoken.value) { - case 'odd': - case 'even': - if (nexttoken.identifier) { - advance(); - return; - } - } - } - warning("Unexpected token '{a}'.", nexttoken, nexttoken.value); - } - - function substyle() { - var v; - for (;;) { - if (nexttoken.id === '}' || nexttoken.id === '(end)' || - xquote && nexttoken.id === xquote) { - return; - } - while (nexttoken.id === ';') { - warning("Misplaced ';'."); - advance(';'); - } - v = styleAttribute(); - advance(':'); - if (nexttoken.identifier && nexttoken.value === 'inherit') { - advance(); - } else { - if (!styleValue(v)) { - warning("Unexpected token '{a}'.", nexttoken, - nexttoken.value); - advance(); - } - } - if (nexttoken.id === '!') { - advance('!'); - adjacent(); - if (nexttoken.identifier && nexttoken.value === 'important') { - advance(); - } else { - warning("Expected '{a}' and instead saw '{b}'.", - nexttoken, 'important', nexttoken.value); - } - } - if (nexttoken.id === '}' || nexttoken.id === xquote) { - warning("Missing '{a}'.", nexttoken, ';'); - } else { - advance(';'); - } - } - } - - function styleSelector() { - if (nexttoken.identifier) { - if (!is_own(htmltag, option.cap ? - nexttoken.value.toLowerCase() : nexttoken.value)) { - warning("Expected a tagName, and instead saw {a}.", - nexttoken, nexttoken.value); - } - advance(); - } else { - switch (nexttoken.id) { - case '>': - case '+': - advance(); - styleSelector(); - break; - case ':': - advance(':'); - switch (nexttoken.value) { - case 'active': - case 'after': - case 'before': - case 'checked': - case 'disabled': - case 'empty': - case 'enabled': - case 'first-child': - case 'first-letter': - case 'first-line': - case 'first-of-type': - case 'focus': - case 'hover': - case 'last-child': - case 'last-of-type': - case 'link': - case 'only-of-type': - case 'root': - case 'target': - case 'visited': - advance(); - break; - case 'lang': - advance(); - advance('('); - if (!nexttoken.identifier) { - warning("Expected a lang code, and instead saw :{a}.", - nexttoken, nexttoken.value); - } - advance(')'); - break; - case 'nth-child': - case 'nth-last-child': - case 'nth-last-of-type': - case 'nth-of-type': - advance(); - advance('('); - styleChild(); - advance(')'); - break; - case 'not': - advance(); - advance('('); - if (nexttoken.id === ':' && peek(0).value === 'not') { - warning("Nested not."); - } - styleSelector(); - advance(')'); - break; - default: - warning("Expected a pseudo, and instead saw :{a}.", - nexttoken, nexttoken.value); - } - break; - case '#': - advance('#'); - if (!nexttoken.identifier) { - warning("Expected an id, and instead saw #{a}.", - nexttoken, nexttoken.value); - } - advance(); - break; - case '*': - advance('*'); - break; - case '.': - advance('.'); - if (!nexttoken.identifier) { - warning("Expected a class, and instead saw #.{a}.", - nexttoken, nexttoken.value); - } - advance(); - break; - case '[': - advance('['); - if (!nexttoken.identifier) { - warning("Expected an attribute, and instead saw [{a}].", - nexttoken, nexttoken.value); - } - advance(); - if (nexttoken.id === '=' || nexttoken.value === '~=' || - nexttoken.value === '$=' || - nexttoken.value === '|=' || - nexttoken.id === '*=' || - nexttoken.id === '^=') { - advance(); - if (nexttoken.type !== '(string)') { - warning("Expected a string, and instead saw {a}.", - nexttoken, nexttoken.value); - } - advance(); - } - advance(']'); - break; - default: - error("Expected a CSS selector, and instead saw {a}.", - nexttoken, nexttoken.value); - } - } - } - - function stylePattern() { - var name; - if (nexttoken.id === '{') { - warning("Expected a style pattern, and instead saw '{a}'.", nexttoken, - nexttoken.id); - } else if (nexttoken.id === '@') { - advance('@'); - name = nexttoken.value; - if (nexttoken.identifier && atrule[name] === true) { - advance(); - return name; - } - warning("Expected an at-rule, and instead saw @{a}.", nexttoken, name); - } - for (;;) { - styleSelector(); - if (nexttoken.id === ' fragments and .js files.", token); - } - if (option.fragment) { - if (n !== 'div') { - error("ADsafe violation: Wrap the widget in a div.", token); - } - } else { - error("Use the fragment option.", token); - } - } - option.browser = true; - assume(); - } - - function doAttribute(n, a, v) { - var u, x; - if (a === 'id') { - u = typeof v === 'string' ? v.toUpperCase() : ''; - if (ids[u] === true) { - warning("Duplicate id='{a}'.", nexttoken, v); - } - if (!/^[A-Za-z][A-Za-z0-9._:\-]*$/.test(v)) { - warning("Bad id: '{a}'.", nexttoken, v); - } else if (option.adsafe) { - if (adsafe_id) { - if (v.slice(0, adsafe_id.length) !== adsafe_id) { - warning("ADsafe violation: An id must have a '{a}' prefix", - nexttoken, adsafe_id); - } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) { - warning("ADSAFE violation: bad id."); - } - } else { - adsafe_id = v; - if (!/^[A-Z]+_$/.test(v)) { - warning("ADSAFE violation: bad id."); - } - } - } - x = v.search(dx); - if (x >= 0) { - warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a); - } - ids[u] = true; - } else if (a === 'class' || a === 'type' || a === 'name') { - x = v.search(qx); - if (x >= 0) { - warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a); - } - ids[u] = true; - } else if (a === 'href' || a === 'background' || - a === 'content' || a === 'data' || - a.indexOf('src') >= 0 || a.indexOf('url') >= 0) { - if (option.safe && ux.test(v)) { - error("ADsafe URL violation."); - } - urls.push(v); - } else if (a === 'for') { - if (option.adsafe) { - if (adsafe_id) { - if (v.slice(0, adsafe_id.length) !== adsafe_id) { - warning("ADsafe violation: An id must have a '{a}' prefix", - nexttoken, adsafe_id); - } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) { - warning("ADSAFE violation: bad id."); - } - } else { - warning("ADSAFE violation: bad id."); - } - } - } else if (a === 'name') { - if (option.adsafe && v.indexOf('_') >= 0) { - warning("ADsafe name violation."); - } - } - } - - function doTag(n, a) { - var i, t = htmltag[n], x; - src = false; - if (!t) { - error("Unrecognized tag '<{a}>'.", - nexttoken, - n === n.toLowerCase() ? n : - n + ' (capitalization error)'); - } - if (stack.length > 0) { - if (n === 'html') { - error("Too many tags.", token); - } - x = t.parent; - if (x) { - if (x.indexOf(' ' + stack[stack.length - 1].name + ' ') < 0) { - error("A '<{a}>' must be within '<{b}>'.", - token, n, x); - } - } else if (!option.adsafe && !option.fragment) { - i = stack.length; - do { - if (i <= 0) { - error("A '<{a}>' must be within '<{b}>'.", - token, n, 'body'); - } - i -= 1; - } while (stack[i].name !== 'body'); - } - } - switch (n) { - case 'div': - if (option.adsafe && stack.length === 1 && !adsafe_id) { - warning("ADSAFE violation: missing ID_."); - } - break; - case 'script': - xmode = 'script'; - advance('>'); - indent = nexttoken.from; - if (a.lang) { - warning("lang is deprecated.", token); - } - if (option.adsafe && stack.length !== 1) { - warning("ADsafe script placement violation.", token); - } - if (a.src) { - if (option.adsafe && (!adsafe_may || !approved[a.src])) { - warning("ADsafe unapproved script source.", token); - } - if (a.type) { - warning("type is unnecessary.", token); - } - } else { - if (adsafe_went) { - error("ADsafe script violation.", token); - } - statements('script'); - } - xmode = 'html'; - advance(''); - styles(); - xmode = 'html'; - advance(''; - } - - function html() { - var a, attributes, e, n, q, t, v, w = option.white, wmode; - xmode = 'html'; - xquote = ''; - stack = null; - for (;;) { - switch (nexttoken.value) { - case '<': - xmode = 'html'; - advance('<'); - attributes = {}; - t = nexttoken; - if (!t.identifier) { - warning("Bad identifier {a}.", t, t.value); - } - n = t.value; - if (option.cap) { - n = n.toLowerCase(); - } - t.name = n; - advance(); - if (!stack) { - stack = []; - doBegin(n); - } - v = htmltag[n]; - if (typeof v !== 'object') { - error("Unrecognized tag '<{a}>'.", t, n); - } - e = v.empty; - t.type = n; - for (;;) { - if (nexttoken.id === '/') { - advance('/'); - if (nexttoken.id !== '>') { - warning("Expected '{a}' and instead saw '{b}'.", - nexttoken, '>', nexttoken.value); - } - break; - } - if (nexttoken.id && nexttoken.id.substr(0, 1) === '>') { - break; - } - if (!nexttoken.identifier) { - if (nexttoken.id === '(end)' || nexttoken.id === '(error)') { - error("Missing '>'.", nexttoken); - } - warning("Bad identifier."); - } - option.white = true; - nonadjacent(token, nexttoken); - a = nexttoken.value; - option.white = w; - advance(); - if (!option.cap && a !== a.toLowerCase()) { - warning("Attribute '{a}' not all lower case.", nexttoken, a); - } - a = a.toLowerCase(); - xquote = ''; - if (is_own(attributes, a)) { - warning("Attribute '{a}' repeated.", nexttoken, a); - } - if (a.slice(0, 2) === 'on') { - if (!option.on) { - warning("Avoid HTML event handlers."); - } - xmode = 'scriptstring'; - advance('='); - q = nexttoken.id; - if (q !== '"' && q !== "'") { - error("Missing quote."); - } - xquote = q; - wmode = option.white; - option.white = false; - advance(q); - statements('on'); - option.white = wmode; - if (nexttoken.id !== q) { - error("Missing close quote on script attribute."); - } - xmode = 'html'; - xquote = ''; - advance(q); - v = false; - } else if (a === 'style') { - xmode = 'scriptstring'; - advance('='); - q = nexttoken.id; - if (q !== '"' && q !== "'") { - error("Missing quote."); - } - xmode = 'styleproperty'; - xquote = q; - advance(q); - substyle(); - xmode = 'html'; - xquote = ''; - advance(q); - v = false; - } else { - if (nexttoken.id === '=') { - advance('='); - v = nexttoken.value; - if (!nexttoken.identifier && - nexttoken.id !== '"' && - nexttoken.id !== '\'' && - nexttoken.type !== '(string)' && - nexttoken.type !== '(number)' && - nexttoken.type !== '(color)') { - warning("Expected an attribute value and instead saw '{a}'.", token, a); - } - advance(); - } else { - v = true; - } - } - attributes[a] = v; - doAttribute(n, a, v); - } - doTag(n, attributes); - if (!e) { - stack.push(t); - } - xmode = 'outer'; - advance('>'); - break; - case '') { - error("Missing '{a}'.", nexttoken, '>'); - } - xmode = 'outer'; - advance('>'); - break; - case '' || nexttoken.id === '(end)') { - break; - } - if (nexttoken.value.indexOf('--') >= 0) { - error("Unexpected --."); - } - if (nexttoken.value.indexOf('<') >= 0) { - error("Unexpected <."); - } - if (nexttoken.value.indexOf('>') >= 0) { - error("Unexpected >."); - } - } - xmode = 'outer'; - advance('>'); - break; - case '(end)': - return; - default: - if (nexttoken.id === '(end)') { - error("Missing '{a}'.", nexttoken, - ''); - } else { - advance(); - } - } - if (stack && stack.length === 0 && (option.adsafe || - !option.fragment || nexttoken.id === '(end)')) { - break; - } - } - if (nexttoken.id !== '(end)') { - error("Unexpected material after the end."); - } - } - - -// Build the syntax table by declaring the syntactic elements of the language. - - type('(number)', function () { - return this; - }); - type('(string)', function () { - return this; - }); - - syntax['(identifier)'] = { - type: '(identifier)', - lbp: 0, - identifier: true, - nud: function () { - var v = this.value, - s = scope[v], - f; - if (typeof s === 'function') { - -// Protection against accidental inheritance. - - s = undefined; - } else if (typeof s === 'boolean') { - f = funct; - funct = functions[0]; - addlabel(v, 'var'); - s = funct; - funct = f; - } - -// The name is in scope and defined in the current function. - - if (funct === s) { - -// Change 'unused' to 'var', and reject labels. - - switch (funct[v]) { - case 'unused': - funct[v] = 'var'; - break; - case 'unction': - funct[v] = 'function'; - this['function'] = true; - break; - case 'function': - this['function'] = true; - break; - case 'label': - warning("'{a}' is a statement label.", token, v); - break; - } - -// The name is not defined in the function. If we are in the global scope, -// then we have an undefined variable. - - } else if (funct['(global)']) { - if (option.undef && predefined[v] !== 'boolean') { - warning("'{a}' is not defined.", token, v); - } - note_implied(token); - -// If the name is already defined in the current -// function, but not as outer, then there is a scope error. - - } else { - switch (funct[v]) { - case 'closure': - case 'function': - case 'var': - case 'unused': - warning("'{a}' used out of scope.", token, v); - break; - case 'label': - warning("'{a}' is a statement label.", token, v); - break; - case 'outer': - case 'global': - break; - default: - -// If the name is defined in an outer function, make an outer entry, and if -// it was unused, make it var. - - if (s === true) { - funct[v] = true; - } else if (s === null) { - warning("'{a}' is not allowed.", token, v); - note_implied(token); - } else if (typeof s !== 'object') { - if (option.undef) { - warning("'{a}' is not defined.", token, v); - } else { - funct[v] = true; - } - note_implied(token); - } else { - switch (s[v]) { - case 'function': - case 'unction': - this['function'] = true; - s[v] = 'closure'; - funct[v] = s['(global)'] ? 'global' : 'outer'; - break; - case 'var': - case 'unused': - s[v] = 'closure'; - funct[v] = s['(global)'] ? 'global' : 'outer'; - break; - case 'closure': - case 'parameter': - funct[v] = s['(global)'] ? 'global' : 'outer'; - break; - case 'label': - warning("'{a}' is a statement label.", token, v); - } - } - } - } - return this; - }, - led: function () { - error("Expected an operator and instead saw '{a}'.", - nexttoken, nexttoken.value); - } - }; - - type('(regexp)', function () { - return this; - }); - - -// ECMAScript parser - - delim('(endline)'); - delim('(begin)'); - delim('(end)').reach = true; - delim(''); - delim('(error)').reach = true; - delim('}').reach = true; - delim(')'); - delim(']'); - delim('"').reach = true; - delim("'").reach = true; - delim(';'); - delim(':').reach = true; - delim(','); - delim('#'); - delim('@'); - reserve('else'); - reserve('case').reach = true; - reserve('catch'); - reserve('default').reach = true; - reserve('finally'); - reservevar('arguments', function (x) { - if (strict_mode && funct['(global)']) { - warning("Strict violation.", x); - } else if (option.safe) { - warning("ADsafe violation.", x); - } - }); - reservevar('eval', function (x) { - if (option.safe) { - warning("ADsafe violation.", x); - } - }); - reservevar('false'); - reservevar('Infinity'); - reservevar('NaN'); - reservevar('null'); - reservevar('this', function (x) { - if (strict_mode && ((funct['(statement)'] && - funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) { - warning("Strict violation.", x); - } else if (option.safe) { - warning("ADsafe violation.", x); - } - }); - reservevar('true'); - reservevar('undefined'); - assignop('=', 'assign', 20); - assignop('+=', 'assignadd', 20); - assignop('-=', 'assignsub', 20); - assignop('*=', 'assignmult', 20); - assignop('/=', 'assigndiv', 20).nud = function () { - error("A regular expression literal can be confused with '/='."); - }; - assignop('%=', 'assignmod', 20); - bitwiseassignop('&=', 'assignbitand', 20); - bitwiseassignop('|=', 'assignbitor', 20); - bitwiseassignop('^=', 'assignbitxor', 20); - bitwiseassignop('<<=', 'assignshiftleft', 20); - bitwiseassignop('>>=', 'assignshiftright', 20); - bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20); - infix('?', function (left, that) { - that.left = left; - that.right = parse(10); - advance(':'); - that['else'] = parse(10); - return that; - }, 30); - - infix('||', 'or', 40); - infix('&&', 'and', 50); - bitwise('|', 'bitor', 70); - bitwise('^', 'bitxor', 80); - bitwise('&', 'bitand', 90); - relation('==', function (left, right) { - if (option.eqeqeq) { - warning("Expected '{a}' and instead saw '{b}'.", - this, '===', '=='); - } else if (isPoorRelation(left)) { - warning("Use '{a}' to compare with '{b}'.", - this, '===', left.value); - } else if (isPoorRelation(right)) { - warning("Use '{a}' to compare with '{b}'.", - this, '===', right.value); - } - return this; - }); - relation('==='); - relation('!=', function (left, right) { - if (option.eqeqeq) { - warning("Expected '{a}' and instead saw '{b}'.", - this, '!==', '!='); - } else if (isPoorRelation(left)) { - warning("Use '{a}' to compare with '{b}'.", - this, '!==', left.value); - } else if (isPoorRelation(right)) { - warning("Use '{a}' to compare with '{b}'.", - this, '!==', right.value); - } - return this; - }); - relation('!=='); - relation('<'); - relation('>'); - relation('<='); - relation('>='); - bitwise('<<', 'shiftleft', 120); - bitwise('>>', 'shiftright', 120); - bitwise('>>>', 'shiftrightunsigned', 120); - infix('in', 'in', 120); - infix('instanceof', 'instanceof', 120); - infix('+', function (left, that) { - var right = parse(130); - if (left && right && left.id === '(string)' && right.id === '(string)') { - left.value += right.value; - left.character = right.character; - if (jx.test(left.value)) { - warning("JavaScript URL.", left); - } - return left; - } - that.left = left; - that.right = right; - return that; - }, 130); - prefix('+', 'num'); - prefix('+++', function () { - warning("Confusing pluses."); - this.right = parse(150); - this.arity = 'unary'; - return this; - }); - infix('+++', function (left) { - warning("Confusing pluses."); - this.left = left; - this.right = parse(130); - return this; - }, 130); - infix('-', 'sub', 130); - prefix('-', 'neg'); - prefix('---', function () { - warning("Confusing minuses."); - this.right = parse(150); - this.arity = 'unary'; - return this; - }); - infix('---', function (left) { - warning("Confusing minuses."); - this.left = left; - this.right = parse(130); - return this; - }, 130); - infix('*', 'mult', 140); - infix('/', 'div', 140); - infix('%', 'mod', 140); - - suffix('++', 'postinc'); - prefix('++', 'preinc'); - syntax['++'].exps = true; - - suffix('--', 'postdec'); - prefix('--', 'predec'); - syntax['--'].exps = true; - prefix('delete', function () { - var p = parse(0); - if (!p || (p.id !== '.' && p.id !== '[')) { - warning("Variables should not be deleted."); - } - this.first = p; - return this; - }).exps = true; - - - prefix('~', function () { - if (option.bitwise) { - warning("Unexpected '{a}'.", this, '~'); - } - parse(150); - return this; - }); - prefix('!', function () { - this.right = parse(150); - this.arity = 'unary'; - if (bang[this.right.id] === true) { - warning("Confusing use of '{a}'.", this, '!'); - } - return this; - }); - prefix('typeof', 'typeof'); - prefix('new', function () { - var c = parse(155), i; - if (c && c.id !== 'function') { - if (c.identifier) { - c['new'] = true; - switch (c.value) { - case 'Object': - warning("Use the object literal notation {}.", token); - break; - case 'Array': - if (nexttoken.id !== '(') { - warning("Use the array literal notation [].", token); - } else { - advance('('); - if (nexttoken.id === ')') { - warning("Use the array literal notation [].", token); - } else { - i = parse(0); - c.dimension = i; - if ((i.id === '(number)' && /[.+\-Ee]/.test(i.value)) || - (i.id === '-' && !i.right) || - i.id === '(string)' || i.id === '[' || - i.id === '{' || i.id === 'true' || - i.id === 'false' || - i.id === 'null' || i.id === 'undefined' || - i.id === 'Infinity') { - warning("Use the array literal notation [].", token); - } - if (nexttoken.id !== ')') { - error("Use the array literal notation [].", token); - } - } - advance(')'); - } - this.first = c; - return this; - case 'Number': - case 'String': - case 'Boolean': - case 'Math': - case 'JSON': - warning("Do not use {a} as a constructor.", token, c.value); - break; - case 'Function': - if (!option.evil) { - warning("The Function constructor is eval."); - } - break; - case 'Date': - case 'RegExp': - break; - default: - if (c.id !== 'function') { - i = c.value.substr(0, 1); - if (option.newcap && (i < 'A' || i > 'Z')) { - warning( - "A constructor name should start with an uppercase letter.", - token); - } - } - } - } else { - if (c.id !== '.' && c.id !== '[' && c.id !== '(') { - warning("Bad constructor.", token); - } - } - } else { - warning("Weird construction. Delete 'new'.", this); - } - adjacent(token, nexttoken); - if (nexttoken.id !== '(') { - warning("Missing '()' invoking a constructor."); - } - this.first = c; - return this; - }); - syntax['new'].exps = true; - - infix('.', function (left, that) { - adjacent(prevtoken, token); - nobreak(); - var m = identifier(); - if (typeof m === 'string') { - countMember(m); - } - that.left = left; - that.right = m; - if (left && left.value === 'arguments' && - (m === 'callee' || m === 'caller')) { - warning("Avoid arguments.{a}.", left, m); - } else if (!option.evil && left && left.value === 'document' && - (m === 'write' || m === 'writeln')) { - warning("document.write can be a form of eval.", left); - } else if (option.adsafe) { - if (left && left.value === 'ADSAFE') { - if (m === 'id' || m === 'lib') { - warning("ADsafe violation.", that); - } else if (m === 'go') { - if (xmode !== 'script') { - warning("ADsafe violation.", that); - } else if (adsafe_went || nexttoken.id !== '(' || - peek(0).id !== '(string)' || - peek(0).value !== adsafe_id || - peek(1).id !== ',') { - error("ADsafe violation: go.", that); - } - adsafe_went = true; - adsafe_may = false; - } - } - } - if (!option.evil && (m === 'eval' || m === 'execScript')) { - warning('eval is evil.'); - } else if (option.safe) { - for (;;) { - if (banned[m] === true) { - warning("ADsafe restricted word '{a}'.", token, m); - } - if (typeof predefined[left.value] !== 'boolean' || - nexttoken.id === '(') { - break; - } - if (standard_member[m] === true) { - if (nexttoken.id === '.') { - warning("ADsafe violation.", that); - } - break; - } - if (nexttoken.id !== '.') { - warning("ADsafe violation.", that); - break; - } - advance('.'); - token.left = that; - token.right = m; - that = token; - m = identifier(); - if (typeof m === 'string') { - countMember(m); - } - } - } - return that; - }, 160, true); - - infix('(', function (left, that) { - if (prevtoken.id !== '}' && prevtoken.id !== ')') { - nobreak(prevtoken, token); - } - nospace(); - if (option.immed && !left.immed && left.id === 'function') { - warning("Wrap an immediate function invocation in parentheses " + - "to assist the reader in understanding that the expression " + - "is the result of a function, and not the function itself."); - } - var n = 0, - p = []; - if (left) { - if (left.type === '(identifier)') { - if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) { - if (left.value !== 'Number' && left.value !== 'String' && - left.value !== 'Boolean' && - left.value !== 'Date') { - if (left.value === 'Math') { - warning("Math is not a function.", left); - } else if (option.newcap) { - warning( -"Missing 'new' prefix when invoking a constructor.", left); - } - } - } - } else if (left.id === '.') { - if (option.safe && left.left.value === 'Math' && - left.right === 'random') { - warning("ADsafe violation.", left); - } - } - } - if (nexttoken.id !== ')') { - for (;;) { - p[p.length] = parse(10); - n += 1; - if (nexttoken.id !== ',') { - break; - } - comma(); - } - } - advance(')'); - nospace(prevtoken, token); - if (typeof left === 'object') { - if (left.value === 'parseInt' && n === 1) { - warning("Missing radix parameter.", left); - } - if (!option.evil) { - if (left.value === 'eval' || left.value === 'Function' || - left.value === 'execScript') { - warning("eval is evil.", left); - } else if (p[0] && p[0].id === '(string)' && - (left.value === 'setTimeout' || - left.value === 'setInterval')) { - warning( - "Implied eval is evil. Pass a function instead of a string.", left); - } - } - if (!left.identifier && left.id !== '.' && left.id !== '[' && - left.id !== '(' && left.id !== '&&' && left.id !== '||' && - left.id !== '?') { - warning("Bad invocation.", left); - } - } - that.left = left; - return that; - }, 155, true).exps = true; - - prefix('(', function () { - nospace(); - if (nexttoken.id === 'function') { - nexttoken.immed = true; - } - var v = parse(0); - advance(')', this); - nospace(prevtoken, token); - if (option.immed && v.id === 'function') { - if (nexttoken.id === '(') { - warning( -"Move the invocation into the parens that contain the function.", nexttoken); - } else { - warning( -"Do not wrap function literals in parens unless they are to be immediately invoked.", - this); - } - } - return v; - }); - - infix('[', function (left, that) { - nobreak(prevtoken, token); - nospace(); - var e = parse(0), s; - if (e && e.type === '(string)') { - if (option.safe && banned[e.value] === true) { - warning("ADsafe restricted word '{a}'.", that, e.value); - } else if (!option.evil && - (e.value === 'eval' || e.value === 'execScript')) { - warning("eval is evil.", that); - } else if (option.safe && - (e.value.charAt(0) === '_' || e.value.charAt(0) === '-')) { - warning("ADsafe restricted subscript '{a}'.", that, e.value); - } - countMember(e.value); - if (!option.sub && ix.test(e.value)) { - s = syntax[e.value]; - if (!s || !s.reserved) { - warning("['{a}'] is better written in dot notation.", - e, e.value); - } - } - } else if (!e || e.type !== '(number)' || e.value < 0) { - if (option.safe) { - warning('ADsafe subscripting.'); - } - } - advance(']', that); - nospace(prevtoken, token); - that.left = left; - that.right = e; - return that; - }, 160, true); - - prefix('[', function () { - var b = token.line !== nexttoken.line; - this.first = []; - if (b) { - indent += option.indent; - if (nexttoken.from === indent + option.indent) { - indent += option.indent; - } - } - while (nexttoken.id !== '(end)') { - while (nexttoken.id === ',') { - warning("Extra comma."); - advance(','); - } - if (nexttoken.id === ']') { - break; - } - if (b && token.line !== nexttoken.line) { - indentation(); - } - this.first.push(parse(10)); - if (nexttoken.id === ',') { - comma(); - if (nexttoken.id === ']' && !option.es5) { - warning("Extra comma.", token); - break; - } - } else { - break; - } - } - if (b) { - indent -= option.indent; - indentation(); - } - advance(']', this); - return this; - }, 160); - - - function property_name() { - var id = optionalidentifier(true); - if (!id) { - if (nexttoken.id === '(string)') { - id = nexttoken.value; - if (option.adsafe && - (id.charAt(0) === '_' || - id.charAt(id.length - 1) === '_')) { - warning("Unexpected {a} in '{b}'.", token, - "dangling '_'", id); - } - advance(); - } else if (nexttoken.id === '(number)') { - id = nexttoken.value.toString(); - advance(); - } - } - return id; - } - - - function functionparams() { - var i, t = nexttoken, p = []; - advance('('); - nospace(); - if (nexttoken.id === ')') { - advance(')'); - nospace(prevtoken, token); - return; - } - for (;;) { - i = identifier(); - p.push(i); - addlabel(i, 'parameter'); - if (nexttoken.id === ',') { - comma(); - } else { - advance(')', t); - nospace(prevtoken, token); - return p; - } - } - } - - - function doFunction(i, statement) { - var f, s = scope; - scope = Object.create(s); - funct = { - '(name)' : i || '"' + anonname + '"', - '(line)' : nexttoken.line, - '(context)' : funct, - '(breakage)' : 0, - '(loopage)' : 0, - '(scope)' : scope, - '(statement)': statement - }; - f = funct; - token.funct = funct; - functions.push(funct); - if (i) { - addlabel(i, 'function'); - } - funct['(params)'] = functionparams(); - - block(false); - scope = s; - funct['(last)'] = token.line; - funct = funct['(context)']; - return f; - } - - - (function (x) { - x.nud = function () { - var b, f, i, j, p, seen = {}, t; - b = token.line !== nexttoken.line; - if (b) { - indent += option.indent; - if (nexttoken.from === indent + option.indent) { - indent += option.indent; - } - } - for (;;) { - if (nexttoken.id === '}') { - break; - } - if (b) { - indentation(); - } - if (nexttoken.value === 'get' && peek().id !== ':') { - advance('get'); - if (!option.es5) { - error("get/set are ES5 features."); - } - i = property_name(); - if (!i) { - error("Missing property name."); - } - t = nexttoken; - adjacent(token, nexttoken); - f = doFunction(i); - if (funct['(loopage)']) { - warning("Don't make functions within a loop.", t); - } - p = f['(params)']; - if (p) { - warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i); - } - adjacent(token, nexttoken); - advance(','); - indentation(); - advance('set'); - j = property_name(); - if (i !== j) { - error("Expected {a} and instead saw {b}.", token, i, j); - } - t = nexttoken; - adjacent(token, nexttoken); - f = doFunction(i); - p = f['(params)']; - if (!p || p.length !== 1 || p[0] !== 'value') { - warning("Expected (value) in set {a} function.", t, i); - } - } else { - i = property_name(); - if (typeof i !== 'string') { - break; - } - advance(':'); - nonadjacent(token, nexttoken); - parse(10); - } - if (seen[i] === true) { - warning("Duplicate member '{a}'.", nexttoken, i); - } - seen[i] = true; - countMember(i); - if (nexttoken.id === ',') { - comma(); - if (nexttoken.id === ',') { - warning("Extra comma.", token); - } else if (nexttoken.id === '}' && !option.es5) { - warning("Extra comma.", token); - } - } else { - break; - } - } - if (b) { - indent -= option.indent; - indentation(); - } - advance('}', this); - return this; - }; - x.fud = function () { - error("Expected to see a statement and instead saw a block.", token); - }; - }(delim('{'))); - - - var varstatement = function varstatement(prefix) { - -// JavaScript does not have block scope. It only has function scope. So, -// declaring a variable in a block can have unexpected consequences. - - var id, name, value; - - if (funct['(onevar)'] && option.onevar) { - warning("Too many var statements."); - } else if (!funct['(global)']) { - funct['(onevar)'] = true; - } - this.first = []; - for (;;) { - nonadjacent(token, nexttoken); - id = identifier(); - if (funct['(global)'] && predefined[id] === false) { - warning("Redefinition of '{a}'.", token, id); - } - addlabel(id, 'unused'); - if (prefix) { - break; - } - name = token; - this.first.push(token); - if (nexttoken.id === '=') { - nonadjacent(token, nexttoken); - advance('='); - nonadjacent(token, nexttoken); - if (nexttoken.id === 'undefined') { - warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id); - } - if (peek(0).id === '=' && nexttoken.identifier) { - error("Variable {a} was not declared correctly.", - nexttoken, nexttoken.value); - } - value = parse(0); - name.first = value; - } - if (nexttoken.id !== ',') { - break; - } - comma(); - } - return this; - }; - - - stmt('var', varstatement).exps = true; - - - blockstmt('function', function () { - if (inblock) { - warning( -"Function statements cannot be placed in blocks. Use a function expression or move the statement to the top of the outer function.", token); - - } - var i = identifier(); - adjacent(token, nexttoken); - addlabel(i, 'unction'); - doFunction(i, true); - if (nexttoken.id === '(' && nexttoken.line === token.line) { - error( -"Function statements are not invocable. Wrap the whole function invocation in parens."); - } - return this; - }); - - prefix('function', function () { - var i = optionalidentifier(); - if (i) { - adjacent(token, nexttoken); - } else { - nonadjacent(token, nexttoken); - } - doFunction(i); - if (funct['(loopage)']) { - warning("Don't make functions within a loop."); - } - return this; - }); - - blockstmt('if', function () { - var t = nexttoken; - advance('('); - nonadjacent(this, t); - nospace(); - parse(20); - if (nexttoken.id === '=') { - warning("Expected a conditional expression and instead saw an assignment."); - advance('='); - parse(20); - } - advance(')', t); - nospace(prevtoken, token); - block(true); - if (nexttoken.id === 'else') { - nonadjacent(token, nexttoken); - advance('else'); - if (nexttoken.id === 'if' || nexttoken.id === 'switch') { - statement(true); - } else { - block(true); - } - } - return this; - }); - - blockstmt('try', function () { - var b, e, s; - if (option.adsafe) { - warning("ADsafe try violation.", this); - } - block(false); - if (nexttoken.id === 'catch') { - advance('catch'); - nonadjacent(token, nexttoken); - advance('('); - s = scope; - scope = Object.create(s); - e = nexttoken.value; - if (nexttoken.type !== '(identifier)') { - warning("Expected an identifier and instead saw '{a}'.", - nexttoken, e); - } else { - addlabel(e, 'exception'); - } - advance(); - advance(')'); - block(false); - b = true; - scope = s; - } - if (nexttoken.id === 'finally') { - advance('finally'); - block(false); - return; - } else if (!b) { - error("Expected '{a}' and instead saw '{b}'.", - nexttoken, 'catch', nexttoken.value); - } - return this; - }); - - blockstmt('while', function () { - var t = nexttoken; - funct['(breakage)'] += 1; - funct['(loopage)'] += 1; - advance('('); - nonadjacent(this, t); - nospace(); - parse(20); - if (nexttoken.id === '=') { - warning("Expected a conditional expression and instead saw an assignment."); - advance('='); - parse(20); - } - advance(')', t); - nospace(prevtoken, token); - block(true); - funct['(breakage)'] -= 1; - funct['(loopage)'] -= 1; - return this; - }).labelled = true; - - reserve('with'); - - blockstmt('switch', function () { - var t = nexttoken, - g = false; - funct['(breakage)'] += 1; - advance('('); - nonadjacent(this, t); - nospace(); - this.condition = parse(20); - advance(')', t); - nospace(prevtoken, token); - nonadjacent(token, nexttoken); - t = nexttoken; - advance('{'); - nonadjacent(token, nexttoken); - indent += option.indent; - this.cases = []; - for (;;) { - switch (nexttoken.id) { - case 'case': - switch (funct['(verb)']) { - case 'break': - case 'case': - case 'continue': - case 'return': - case 'switch': - case 'throw': - break; - default: - warning( - "Expected a 'break' statement before 'case'.", - token); - } - indentation(-option.indent); - advance('case'); - this.cases.push(parse(20)); - g = true; - advance(':'); - funct['(verb)'] = 'case'; - break; - case 'default': - switch (funct['(verb)']) { - case 'break': - case 'continue': - case 'return': - case 'throw': - break; - default: - warning( - "Expected a 'break' statement before 'default'.", - token); - } - indentation(-option.indent); - advance('default'); - g = true; - advance(':'); - break; - case '}': - indent -= option.indent; - indentation(); - advance('}', t); - if (this.cases.length === 1 || this.condition.id === 'true' || - this.condition.id === 'false') { - warning("This 'switch' should be an 'if'.", this); - } - funct['(breakage)'] -= 1; - funct['(verb)'] = undefined; - return; - case '(end)': - error("Missing '{a}'.", nexttoken, '}'); - return; - default: - if (g) { - switch (token.id) { - case ',': - error("Each value should have its own case label."); - return; - case ':': - statements(); - break; - default: - error("Missing ':' on a case clause.", token); - } - } else { - error("Expected '{a}' and instead saw '{b}'.", - nexttoken, 'case', nexttoken.value); - } - } - } - }).labelled = true; - - stmt('debugger', function () { - if (!option.debug) { - warning("All 'debugger' statements should be removed."); - } - return this; - }).exps = true; - - (function () { - var x = stmt('do', function () { - funct['(breakage)'] += 1; - funct['(loopage)'] += 1; - this.first = block(true); - advance('while'); - var t = nexttoken; - nonadjacent(token, t); - advance('('); - nospace(); - parse(20); - if (nexttoken.id === '=') { - warning("Expected a conditional expression and instead saw an assignment."); - advance('='); - parse(20); - } - advance(')', t); - nospace(prevtoken, token); - funct['(breakage)'] -= 1; - funct['(loopage)'] -= 1; - return this; - }); - x.labelled = true; - x.exps = true; - }()); - - blockstmt('for', function () { - var f = option.forin, s, t = nexttoken; - funct['(breakage)'] += 1; - funct['(loopage)'] += 1; - advance('('); - nonadjacent(this, t); - nospace(); - if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') { - if (nexttoken.id === 'var') { - advance('var'); - varstatement(true); - } else { - switch (funct[nexttoken.value]) { - case 'unused': - funct[nexttoken.value] = 'var'; - break; - case 'var': - break; - default: - warning("Bad for in variable '{a}'.", - nexttoken, nexttoken.value); - } - advance(); - } - advance('in'); - parse(20); - advance(')', t); - s = block(true); - if (!f && (s.length > 1 || typeof s[0] !== 'object' || - s[0].value !== 'if')) { - warning("The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.", this); - } - funct['(breakage)'] -= 1; - funct['(loopage)'] -= 1; - return this; - } else { - if (nexttoken.id !== ';') { - if (nexttoken.id === 'var') { - advance('var'); - varstatement(); - } else { - for (;;) { - parse(0, 'for'); - if (nexttoken.id !== ',') { - break; - } - comma(); - } - } - } - nolinebreak(token); - advance(';'); - if (nexttoken.id !== ';') { - parse(20); - if (nexttoken.id === '=') { - warning("Expected a conditional expression and instead saw an assignment."); - advance('='); - parse(20); - } - } - nolinebreak(token); - advance(';'); - if (nexttoken.id === ';') { - error("Expected '{a}' and instead saw '{b}'.", - nexttoken, ')', ';'); - } - if (nexttoken.id !== ')') { - for (;;) { - parse(0, 'for'); - if (nexttoken.id !== ',') { - break; - } - comma(); - } - } - advance(')', t); - nospace(prevtoken, token); - block(true); - funct['(breakage)'] -= 1; - funct['(loopage)'] -= 1; - return this; - } - }).labelled = true; - - - stmt('break', function () { - var v = nexttoken.value; - if (funct['(breakage)'] === 0) { - warning("Unexpected '{a}'.", nexttoken, this.value); - } - nolinebreak(this); - if (nexttoken.id !== ';') { - if (token.line === nexttoken.line) { - if (funct[v] !== 'label') { - warning("'{a}' is not a statement label.", nexttoken, v); - } else if (scope[v] !== funct) { - warning("'{a}' is out of scope.", nexttoken, v); - } - this.first = nexttoken; - advance(); - } - } - reachable('break'); - return this; - }).exps = true; - - - stmt('continue', function () { - var v = nexttoken.value; - if (funct['(breakage)'] === 0) { - warning("Unexpected '{a}'.", nexttoken, this.value); - } - nolinebreak(this); - if (nexttoken.id !== ';') { - if (token.line === nexttoken.line) { - if (funct[v] !== 'label') { - warning("'{a}' is not a statement label.", nexttoken, v); - } else if (scope[v] !== funct) { - warning("'{a}' is out of scope.", nexttoken, v); - } - this.first = nexttoken; - advance(); - } - } else if (!funct['(loopage)']) { - warning("Unexpected '{a}'.", nexttoken, this.value); - } - reachable('continue'); - return this; - }).exps = true; - - - stmt('return', function () { - nolinebreak(this); - if (nexttoken.id === '(regexp)') { - warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator."); - } - if (nexttoken.id !== ';' && !nexttoken.reach) { - nonadjacent(token, nexttoken); - this.first = parse(20); - } - reachable('return'); - return this; - }).exps = true; - - - stmt('throw', function () { - nolinebreak(this); - nonadjacent(token, nexttoken); - this.first = parse(20); - reachable('throw'); - return this; - }).exps = true; - - reserve('void'); - -// Superfluous reserved words - - reserve('class'); - reserve('const'); - reserve('enum'); - reserve('export'); - reserve('extends'); - reserve('import'); - reserve('super'); - - reserve('let'); - reserve('yield'); - reserve('implements'); - reserve('interface'); - reserve('package'); - reserve('private'); - reserve('protected'); - reserve('public'); - reserve('static'); - - -// Parse JSON - - function jsonValue() { - - function jsonObject() { - var o = {}, t = nexttoken; - advance('{'); - if (nexttoken.id !== '}') { - for (;;) { - if (nexttoken.id === '(end)') { - error("Missing '}' to match '{' from line {a}.", - nexttoken, t.line); - } else if (nexttoken.id === '}') { - warning("Unexpected comma.", token); - break; - } else if (nexttoken.id === ',') { - error("Unexpected comma.", nexttoken); - } else if (nexttoken.id !== '(string)') { - warning("Expected a string and instead saw {a}.", - nexttoken, nexttoken.value); - } - if (o[nexttoken.value] === true) { - warning("Duplicate key '{a}'.", - nexttoken, nexttoken.value); - } else if (nexttoken.value === '__proto__') { - warning("Stupid key '{a}'.", - nexttoken, nexttoken.value); - } else { - o[nexttoken.value] = true; - } - advance(); - advance(':'); - jsonValue(); - if (nexttoken.id !== ',') { - break; - } - advance(','); - } - } - advance('}'); - } - - function jsonArray() { - var t = nexttoken; - advance('['); - if (nexttoken.id !== ']') { - for (;;) { - if (nexttoken.id === '(end)') { - error("Missing ']' to match '[' from line {a}.", - nexttoken, t.line); - } else if (nexttoken.id === ']') { - warning("Unexpected comma.", token); - break; - } else if (nexttoken.id === ',') { - error("Unexpected comma.", nexttoken); - } - jsonValue(); - if (nexttoken.id !== ',') { - break; - } - advance(','); - } - } - advance(']'); - } - - switch (nexttoken.id) { - case '{': - jsonObject(); - break; - case '[': - jsonArray(); - break; - case 'true': - case 'false': - case 'null': - case '(number)': - case '(string)': - advance(); - break; - case '-': - advance('-'); - if (token.character !== nexttoken.from) { - warning("Unexpected space after '-'.", token); - } - adjacent(token, nexttoken); - advance('(number)'); - break; - default: - error("Expected a JSON value.", nexttoken); - } - } - - -// The actual JSLINT function itself. - - var itself = function (s, o) { - var a, i; - JSLINT.errors = []; - predefined = Object.create(standard); - if (o) { - a = o.predef; - if (a instanceof Array) { - for (i = 0; i < a.length; i += 1) { - predefined[a[i]] = true; - } - } - if (o.adsafe) { - o.safe = true; - } - if (o.safe) { - o.browser = - o.css = - o.debug = - o.devel = - o.evil = - o.forin = - o.on = - o.rhino = - o.windows = - o.sub = - o.widget = false; - - o.eqeqeq = - o.nomen = - o.safe = - o.strict = - o.undef = true; - - predefined.Date = - predefined['eval'] = - predefined.Function = - predefined.Object = null; - - predefined.ADSAFE = - predefined.lib = false; - } - option = o; - } else { - option = {}; - } - option.indent = option.indent || 4; - option.maxerr = option.maxerr || 50; - adsafe_id = ''; - adsafe_may = false; - adsafe_went = false; - approved = {}; - if (option.approved) { - for (i = 0; i < option.approved.length; i += 1) { - approved[option.approved[i]] = option.approved[i]; - } - } else { - approved.test = 'test'; - } - tab = ''; - for (i = 0; i < option.indent; i += 1) { - tab += ' '; - } - indent = 1; - global = Object.create(predefined); - scope = global; - funct = { - '(global)': true, - '(name)': '(global)', - '(scope)': scope, - '(breakage)': 0, - '(loopage)': 0 - }; - functions = [funct]; - ids = {}; - urls = []; - src = false; - xmode = false; - stack = null; - member = {}; - membersOnly = null; - implied = {}; - inblock = false; - lookahead = []; - jsonmode = false; - warnings = 0; - lex.init(s); - prereg = true; - strict_mode = false; - - prevtoken = token = nexttoken = syntax['(begin)']; - assume(); - - try { - advance(); - if (nexttoken.value.charAt(0) === '<') { - html(); - if (option.adsafe && !adsafe_went) { - warning("ADsafe violation: Missing ADSAFE.go.", this); - } - } else { - switch (nexttoken.id) { - case '{': - case '[': - option.laxbreak = true; - jsonmode = true; - jsonValue(); - break; - case '@': - case '*': - case '#': - case '.': - case ':': - xmode = 'style'; - advance(); - if (token.id !== '@' || !nexttoken.identifier || - nexttoken.value !== 'charset' || token.line !== 1 || - token.from !== 1) { - error("A css file should begin with @charset 'UTF-8';"); - } - advance(); - if (nexttoken.type !== '(string)' && - nexttoken.value !== 'UTF-8') { - error("A css file should begin with @charset 'UTF-8';"); - } - advance(); - advance(';'); - styles(); - break; - - default: - if (option.adsafe && option.fragment) { - error("Expected '{a}' and instead saw '{b}'.", - nexttoken, '
                                ', nexttoken.value); - } - statements('lib'); - } - } - advance('(end)'); - } catch (e) { - if (e) { - JSLINT.errors.push({ - reason : e.message, - line : e.line || nexttoken.line, - character : e.character || nexttoken.from - }, null); - } - } - return JSLINT.errors.length === 0; - }; - - function is_array(o) { - return Object.prototype.toString.apply(o) === '[object Array]'; - } - - function to_array(o) { - var a = [], k; - for (k in o) { - if (is_own(o, k)) { - a.push(k); - } - } - return a; - } - - -// Data summary. - - itself.data = function () { - - var data = {functions: []}, fu, globals, implieds = [], f, i, j, - members = [], n, unused = [], v; - if (itself.errors.length) { - data.errors = itself.errors; - } - - if (jsonmode) { - data.json = true; - } - - for (n in implied) { - if (is_own(implied, n)) { - implieds.push({ - name: n, - line: implied[n] - }); - } - } - if (implieds.length > 0) { - data.implieds = implieds; - } - - if (urls.length > 0) { - data.urls = urls; - } - - globals = to_array(scope); - if (globals.length > 0) { - data.globals = globals; - } - - for (i = 1; i < functions.length; i += 1) { - f = functions[i]; - fu = {}; - for (j = 0; j < functionicity.length; j += 1) { - fu[functionicity[j]] = []; - } - for (n in f) { - if (is_own(f, n) && n.charAt(0) !== '(') { - v = f[n]; - if (v === 'unction') { - v = 'unused'; - } - if (is_array(fu[v])) { - fu[v].push(n); - if (v === 'unused') { - unused.push({ - name: n, - line: f['(line)'], - 'function': f['(name)'] - }); - } - } - } - } - for (j = 0; j < functionicity.length; j += 1) { - if (fu[functionicity[j]].length === 0) { - delete fu[functionicity[j]]; - } - } - fu.name = f['(name)']; - fu.param = f['(params)']; - fu.line = f['(line)']; - fu.last = f['(last)']; - data.functions.push(fu); - } - - if (unused.length > 0) { - data.unused = unused; - } - - members = []; - for (n in member) { - if (typeof member[n] === 'number') { - data.member = member; - break; - } - } - - return data; - }; - - itself.report = function (option) { - var data = itself.data(); - - var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s; - - function detail(h, array) { - var b, i, singularity; - if (array) { - o.push('
                                ' + h + ' '); - array = array.sort(); - for (i = 0; i < array.length; i += 1) { - if (array[i] !== singularity) { - singularity = array[i]; - o.push((b ? ', ' : '') + singularity); - b = true; - } - } - o.push('
                                '); - } - } - - - if (data.errors || data.implieds || data.unused) { - err = true; - o.push('
                                Error:'); - if (data.errors) { - for (i = 0; i < data.errors.length; i += 1) { - c = data.errors[i]; - if (c) { - e = c.evidence || ''; - o.push('

                                Problem' + (isFinite(c.line) ? ' at line ' + - c.line + ' character ' + c.character : '') + - ': ' + c.reason.entityify() + - '

                                ' + - (e && (e.length > 80 ? e.slice(0, 77) + '...' : - e).entityify()) + '

                                '); - } - } - } - - if (data.implieds) { - s = []; - for (i = 0; i < data.implieds.length; i += 1) { - s[i] = '' + data.implieds[i].name + ' ' + - data.implieds[i].line + ''; - } - o.push('

                                Implied global: ' + s.join(', ') + '

                                '); - } - - if (data.unused) { - s = []; - for (i = 0; i < data.unused.length; i += 1) { - s[i] = '' + data.unused[i].name + ' ' + - data.unused[i].line + ' ' + - data.unused[i]['function'] + ''; - } - o.push('

                                Unused variable: ' + s.join(', ') + '

                                '); - } - if (data.json) { - o.push('

                                JSON: bad.

                                '); - } - o.push('
                                '); - } - - if (!option) { - - o.push('
                                '); - - if (data.urls) { - detail("URLs
                                ", data.urls, '
                                '); - } - - if (xmode === 'style') { - o.push('

                                CSS.

                                '); - } else if (data.json && !err) { - o.push('

                                JSON: good.

                                '); - } else if (data.globals) { - o.push('
                                Global ' + - data.globals.sort().join(', ') + '
                                '); - } else { - o.push('
                                No new global variables introduced.
                                '); - } - - for (i = 0; i < data.functions.length; i += 1) { - f = data.functions[i]; - - o.push('
                                ' + f.line + '-' + - f.last + ' ' + (f.name || '') + '(' + - (f.param ? f.param.join(', ') : '') + ')
                                '); - detail('Unused', f.unused); - detail('Closure', f.closure); - detail('Variable', f['var']); - detail('Exception', f.exception); - detail('Outer', f.outer); - detail('Global', f.global); - detail('Label', f.label); - } - - if (data.member) { - a = to_array(data.member); - if (a.length) { - a = a.sort(); - m = '
                                /*members ';
                                -                    l = 10;
                                -                    for (i = 0; i < a.length; i += 1) {
                                -                        k = a[i];
                                -                        n = k.name();
                                -                        if (l + n.length > 72) {
                                -                            o.push(m + '
                                '); - m = ' '; - l = 1; - } - l += n.length + 2; - if (data.member[k] === 1) { - n = '' + n + ''; - } - if (i < a.length - 1) { - n += ', '; - } - m += n; - } - o.push(m + '
                                */
                                '); - } - o.push('
                                '); - } - } - return o.join(''); - }; - itself.jslint = itself; - - itself.edition = '2010-10-26'; - - return itself; - -}()); diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint2.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint2.js deleted file mode 100644 index 1a63a505..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/fulljslint2.js +++ /dev/null @@ -1,810 +0,0 @@ -var src = false; -var tab = " "; -var option = {}; -var syntax = {}; -var xmode = "script"; -var prereg = true; -var jsonmode = false; - -var errorAt = function(msg, line, from){console.error(msg, line, from)}; -var warningAt = function(msg, line, from){console.warn(msg, line, from)}; - -function F() {} - -if (typeof Object.create !== 'function') { - Object.create = function (o) { - F.prototype = o; - return new F(); - }; -} - - -String.prototype.isAlpha = function () { - return (this >= 'a' && this <= 'z\uffff') || - (this >= 'A' && this <= 'Z\uffff'); -}; - -String.prototype.isDigit = function () { - return (this >= '0' && this <= '9'); -}; - - -function is_own(object, name) { - return Object.prototype.hasOwnProperty.call(object, name); -} - - -var - -// xmode is used to adapt to the exceptions in html parsing. -// It can have these states: -// false .js script file -// html -// outer -// script -// style -// scriptstring -// styleproperty - - //xmode, - xquote, - -// unsafe comment or string - ax = /@cc|<\/?|script|\]*s\]|<\s*!|</i, -// unsafe characters that are silently deleted by one or more browsers - cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/, -// token - tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/, -// html token - hx = /^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-:]*|[0-9]+|--)/, -// characters in strings that need escapement - nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/, - nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, -// outer html token - ox = /[>&]|<[\/!]?|--/, -// star slash - lx = /\*\/|\/\*/, -// identifier - ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/, -// javascript url - jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i, -// url badness - ux = /&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i, -// style - sx = /^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/, - ssx = /^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/, -// attributes characters - qx = /[^a-zA-Z0-9+\-_\/ ]/, -// query characters for ids - dx = /[\[\]\/\\"'*<>.&:(){}+=#]/, - - rx = { - outer: hx, - html: hx, - style: sx, - styleproperty: ssx - }; - - - var character, from, line, s; - var lines; - -// Private lex methods - - function nextLine() { - var at; - if (line >= lines.length) { - return false; - } - character = 1; - s = lines[line]; - line += 1; - at = s.search(/ \t/); - if (at >= 0) { - warningAt("Mixed spaces and tabs.", line, at + 1); - } - s = s.replace(/\t/g, tab); - at = s.search(cx); - if (at >= 0) { - warningAt("Unsafe character.", line, at); - } - if (option.maxlen && option.maxlen < s.length) { - warningAt("Line too long.", line, s.length); - } - return true; - } - -// Produce a token object. The token inherits from a syntax symbol. - - function it(type, value) { - var i, t; - if (type === '(color)' || type === '(range)') { - t = {type: type}; - } else if (type === '(punctuator)' || - (type === '(identifier)' && is_own(syntax, value))) { - t = syntax[value] || syntax['(error)']; - } else { - t = syntax[type]; - } - - // xxxpedro - t = {id:type}; - - t = Object.create(t); - if (type === '(string)' || type === '(range)') { - if (jx.test(value)) { - warningAt("Script URL.", line, from); - } - } - if (type === '(identifier)') { - t.identifier = true; - if (value === '__iterator__' || value === '__proto__') { - errorAt("Reserved name '{a}'.", - line, from, value); - } else if (option.nomen && - (value.charAt(0) === '_' || - value.charAt(value.length - 1) === '_')) { - warningAt("Unexpected {a} in '{b}'.", line, from, - "dangling '_'", value); - } - } - t.value = value; - t.line = line; - t.character = character; - t.from = from; - i = t.id; - if (i !== '(endline)') { - prereg = i && - (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) || - i === 'return'); - } - return t; - } - -var init = function (source) { - if (typeof source === 'string') { - lines = source - .replace(/\r\n/g, '\n') - .replace(/\r/g, '\n') - .split('\n'); - } else { - lines = source; - } - line = 0; - nextLine(); - from = 1; -}; - - -var token = function () { - var b, c, captures, d, depth, high, i, l, low, q, t; - - function match(x) { - var r = x.exec(s), r1; - if (r) { - l = r[0].length; - r1 = r[1]; - c = r1.charAt(0); - s = s.substr(l); - from = character + l - r1.length; - character += l; - return r1; - } - } - - function string(x) { - var c, j, r = ''; - - if (jsonmode && x !== '"') { - warningAt("Strings must use doublequote.", - line, character); - } - - if (xquote === x || (xmode === 'scriptstring' && !xquote)) { - return it('(punctuator)', x); - } - - function esc(n) { - var i = parseInt(s.substr(j + 1, n), 16); - j += n; - if (i >= 32 && i <= 126 && - i !== 34 && i !== 92 && i !== 39) { - warningAt("Unnecessary escapement.", line, character); - } - character += n; - c = String.fromCharCode(i); - } - j = 0; - for (;;) { - while (j >= s.length) { - j = 0; - if (xmode !== 'html' || !nextLine()) { - errorAt("Unclosed string.", line, from); - } - } - c = s.charAt(j); - if (c === x) { - character += 1; - s = s.substr(j + 1); - return it('(string)', r, x); - } - if (c < ' ') { - if (c === '\n' || c === '\r') { - break; - } - warningAt("Control character in string: {a}.", - line, character + j, s.slice(0, j)); - } else if (c === xquote) { - warningAt("Bad HTML string", line, character + j); - } else if (c === '<') { - if (option.safe && xmode === 'html') { - warningAt("ADsafe string violation.", - line, character + j); - } else if (s.charAt(j + 1) === '/' && (xmode || option.safe)) { - warningAt("Expected '<\\/' and instead saw ' 0) { - character += 1; - s = s.slice(i); - break; - } else { - if (!nextLine()) { - return it('(end)', ''); - } - } - } -// t = match(rx[xmode] || tx); -// if (!t) { -// if (xmode === 'html') { -// return it('(error)', s.charAt(0)); -// } else { -// t = ''; -// c = ''; -// while (s && s < '!') { -// s = s.substr(1); -// } -// if (s) { -// errorAt("Unexpected '{a}'.", -// line, character, s.substr(0, 1)); -// } -// } - t = match(rx[xmode] || tx); - if (!t) { - t = ''; - c = ''; - while (s && s < '!') { - s = s.substr(1); - } - if (s) { - if (xmode === 'html') { - return it('(error)', s.charAt(0)); - } else { - errorAt("Unexpected '{a}'.", - line, character, s.substr(0, 1)); - } - } - } else { - -// identifier - - if (c.isAlpha() || c === '_' || c === '$') { - return it('(identifier)', t); - } - -// number - - if (c.isDigit()) { - if (xmode !== 'style' && !isFinite(Number(t))) { - warningAt("Bad number '{a}'.", - line, character, t); - } - if (xmode !== 'style' && - xmode !== 'styleproperty' && - s.substr(0, 1).isAlpha()) { - warningAt("Missing space after '{a}'.", - line, character, t); - } - if (c === '0') { - d = t.substr(1, 1); - if (d.isDigit()) { - if (token.id !== '.' && xmode !== 'styleproperty') { - warningAt("Don't use extra leading zeros '{a}'.", - line, character, t); - } - } else if (jsonmode && (d === 'x' || d === 'X')) { - warningAt("Avoid 0x-. '{a}'.", - line, character, t); - } - } - if (t.substr(t.length - 1) === '.') { - warningAt( -"A trailing decimal point can be confused with a dot '{a}'.", - line, character, t); - } - return it('(number)', t); - } - - switch (t) { - -// string - - case '"': - case "'": - return string(t); - -// // comment - - case '//': - if (src || (xmode && xmode !== 'script')) { - warningAt("Unexpected comment.", line, character); - } else if (xmode === 'script' && /<\s*\//i.test(s)) { - warningAt("Unexpected <\/ in comment.", line, character); - } else if ((option.safe || xmode === 'script') && ax.test(s)) { - warningAt("Dangerous comment.", line, character); - } - s = ''; - token.comment = true; - break; - -// /* comment - - case '/*': - if (src || (xmode && xmode !== 'script' && xmode !== 'style' && xmode !== 'styleproperty')) { - warningAt("Unexpected comment.", line, character); - } - if (option.safe && ax.test(s)) { - warningAt("ADsafe comment violation.", line, character); - } - for (;;) { - i = s.search(lx); - if (i >= 0) { - break; - } - if (!nextLine()) { - errorAt("Unclosed comment.", line, character); - } else { - if (option.safe && ax.test(s)) { - warningAt("ADsafe comment violation.", - line, character); - } - } - } - character += i + 2; - if (s.substr(i, 1) === '/') { - errorAt("Nested comment.", line, character); - } - s = s.substr(i + 2); - token.comment = true; - break; - -// /*members /*jslint /*global - - case '/*members': - case '/*member': - case '/*jslint': - case '/*global': - case '*/': - return { - value: t, - type: 'special', - line: line, - character: character, - from: from - }; - - case '': - break; -// / - case '/': - if (token.id === '/=') { - errorAt( -"A regular expression literal can be confused with '/='.", line, from); - } - /// xxxpedro - if (prereg) { - depth = 0; - captures = 0; - l = 0; - for (;;) { - b = true; - c = s.charAt(l); - l += 1; - switch (c) { - case '': - errorAt("Unclosed regular expression.", - line, from); - return; - case '/': - if (depth > 0) { - warningAt("Unescaped '{a}'.", - line, from + l, '/'); - } - c = s.substr(0, l - 1); - q = { - g: true, - i: true, - m: true - }; - while (q[s.charAt(l)] === true) { - q[s.charAt(l)] = false; - l += 1; - } - character += l; - s = s.substr(l); - q = s.charAt(0); - if (q === '/' || q === '*') { - errorAt("Confusing regular expression.", - line, from); - } - return it('(regexp)', c); - case '\\': - c = s.charAt(l); - if (c < ' ') { - warningAt( -"Unexpected control character in regular expression.", line, from + l); - } else if (c === '<') { - warningAt( -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); - } - l += 1; - break; - case '(': - depth += 1; - b = false; - if (s.charAt(l) === '?') { - l += 1; - switch (s.charAt(l)) { - case ':': - case '=': - case '!': - l += 1; - break; - default: - warningAt( -"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l)); - } - } else { - captures += 1; - } - break; - case '|': - b = false; - break; - case ')': - if (depth === 0) { - warningAt("Unescaped '{a}'.", - line, from + l, ')'); - } else { - depth -= 1; - } - break; - case ' ': - q = 1; - while (s.charAt(l) === ' ') { - l += 1; - q += 1; - } - if (q > 1) { - warningAt( -"Spaces are hard to count. Use {{a}}.", line, from + l, q); - } - break; - case '[': - c = s.charAt(l); - if (c === '^') { - l += 1; - if (option.regexp) { - warningAt("Insecure '{a}'.", - line, from + l, c); - } else if (s.charAt(l) === ']') { - errorAt("Unescaped '{a}'.", - line, from + l, '^'); - } - } - q = false; - if (c === ']') { - warningAt("Empty class.", line, - from + l - 1); - q = true; - } -klass: do { - c = s.charAt(l); - l += 1; - switch (c) { - case '[': - case '^': - warningAt("Unescaped '{a}'.", - line, from + l, c); - q = true; - break; - case '-': - if (q) { - q = false; - } else { - warningAt("Unescaped '{a}'.", - line, from + l, '-'); - q = true; - } - break; - case ']': - if (!q) { - warningAt("Unescaped '{a}'.", - line, from + l - 1, '-'); - } - break klass; - case '\\': - c = s.charAt(l); - if (c < ' ') { - warningAt( -"Unexpected control character in regular expression.", line, from + l); - } else if (c === '<') { - warningAt( -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c); - } - l += 1; - q = true; - break; - case '/': - warningAt("Unescaped '{a}'.", - line, from + l - 1, '/'); - q = true; - break; - case '<': - if (xmode === 'script') { - c = s.charAt(l); - if (c === '!' || c === '/') { - warningAt( -"HTML confusion in regular expression '<{a}'.", line, from + l, c); - } - } - q = true; - break; - default: - q = true; - } - } while (c); - break; - case '.': - if (option.regexp) { - warningAt("Insecure '{a}'.", line, - from + l, c); - } - break; - case ']': - case '?': - case '{': - case '}': - case '+': - case '*': - warningAt("Unescaped '{a}'.", line, - from + l, c); - break; - case '<': - if (xmode === 'script') { - c = s.charAt(l); - if (c === '!' || c === '/') { - warningAt( -"HTML confusion in regular expression '<{a}'.", line, from + l, c); - } - } - } - if (b) { - switch (s.charAt(l)) { - case '?': - case '+': - case '*': - l += 1; - if (s.charAt(l) === '?') { - l += 1; - } - break; - case '{': - l += 1; - c = s.charAt(l); - if (c < '0' || c > '9') { - warningAt( -"Expected a number and instead saw '{a}'.", line, from + l, c); - } - l += 1; - low = +c; - for (;;) { - c = s.charAt(l); - if (c < '0' || c > '9') { - break; - } - l += 1; - low = +c + (low * 10); - } - high = low; - if (c === ',') { - l += 1; - high = Infinity; - c = s.charAt(l); - if (c >= '0' && c <= '9') { - l += 1; - high = +c; - for (;;) { - c = s.charAt(l); - if (c < '0' || c > '9') { - break; - } - l += 1; - high = +c + (high * 10); - } - } - } - if (s.charAt(l) !== '}') { - warningAt( -"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c); - } else { - l += 1; - } - if (s.charAt(l) === '?') { - l += 1; - } - if (low > high) { - warningAt( -"'{a}' should not be greater than '{b}'.", line, from + l, low, high); - } - } - } - } - c = s.substr(0, l - 1); - character += l; - s = s.substr(l); - return it('(regexp)', c); - } - return it('(punctuator)', t); - -// punctuator - - case '.", line, character); - } - character += 3; - s = s.slice(i + 3); - break; - case '#': - if (xmode === 'html' || xmode === 'styleproperty') { - for (;;) { - c = s.charAt(0); - if ((c < '0' || c > '9') && - (c < 'a' || c > 'f') && - (c < 'A' || c > 'F')) { - break; - } - character += 1; - s = s.substr(1); - t += c; - } - if (t.length !== 4 && t.length !== 7) { - warningAt("Bad hex color '{a}'.", line, - from + l, t); - } - return it('(color)', t); - } - return it('(punctuator)', t); - default: - if (xmode === 'outer' && c === '&') { - character += 1; - s = s.substr(1); - for (;;) { - c = s.charAt(0); - character += 1; - s = s.substr(1); - if (c === ';') { - break; - } - if (!((c >= '0' && c <= '9') || - (c >= 'a' && c <= 'z') || - c === '#')) { - errorAt("Bad entity", line, from + l, - character); - } - } - break; - } - return it('(punctuator)', t); - } - } - } -}; diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.css b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.css deleted file mode 100644 index 09541516..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.css +++ /dev/null @@ -1,66 +0,0 @@ -/* Pretty printing styles. Used with prettify.js. */ - -.str { color: #080; } -.kwd { color: #008; } -.com { color: #800; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -.tag { color: #008; } -.atn { color: #606; } -.atv { color: #080; } -.dec { color: #606; } -pre.prettyprint { padding: 2px; border: 1px solid #888; } - -@media print { - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - -/* xxxpedro */ -html, body { - margin: 0; - padding: 0; -} -pre.prettyprint { - margin-left: 76px; - border: none; - font: 12px Monospace; - padding: 2px; -} -.lineNumbers { - font: 12px Monospace; - position: absolute; - width: 55px; - text-align: right; - top: 0; - left: 0; - - border-right: 2px solid #ccc; - color: #fff; - font-style: normal; - /*font-weight: bold;*/ - padding: 2px 7px; - /*background: #6277AA;*/ - background-image: -moz-linear-gradient(right, #ddd, #bbb); /* FF3.6 */ - background-image: -webkit-gradient(linear,right top,left top,color-stop(0, #ddd),color-stop(1, #bbb)); /* Saf4+, Chrome */ - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd', EndColorStr='#bbb', GradientType='1'); /* IE6,IE7 */ - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd', EndColorStr='#bbb', GradientType='1')"; /* IE8 */ -} -.lineNumbers a, .lineNumbers a:visited { - color: #777; - text-decoration: none; -} -#sourceSpacer { - height: 768px; - position: relative; -} \ No newline at end of file diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.js b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.js deleted file mode 100644 index 09d6394f..00000000 --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prettify.js +++ /dev/null @@ -1,1478 +0,0 @@ -// Copyright (C) 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -/** - * @fileoverview - * some functions for browser-side pretty printing of code contained in html. - *

                                - * - * For a fairly comprehensive set of languages see the - * README - * file that came with this source. At a minimum, the lexer should work on a - * number of languages including C and friends, Java, Python, Bash, SQL, HTML, - * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk - * and a subset of Perl, but, because of commenting conventions, doesn't work on - * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. - *

                                - * Usage:

                                  - *
                                1. include this source file in an html page via - * {@code } - *
                                2. define style rules. See the example page for examples. - *
                                3. mark the {@code
                                  } and {@code } tags in your source with
                                  - *    {@code class=prettyprint.}
                                  - *    You can also use the (html deprecated) {@code } tag, but the pretty
                                  - *    printer needs to do more substantial DOM manipulations to support that, so
                                  - *    some css styles may not be preserved.
                                  - * </ol>
                                  - * That's it.  I wanted to keep the API as simple as possible, so there's no
                                  - * need to specify which language the code is in, but if you wish, you can add
                                  - * another class to the {@code <pre>} or {@code <code>} element to specify the
                                  - * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
                                  - * starts with "lang-" followed by a file extension, specifies the file type.
                                  - * See the "lang-*.js" files in this directory for code that implements
                                  - * per-language file handlers.
                                  - * <p>
                                  - * Change log:<br>
                                  - * cbeust, 2006/08/22
                                  - * <blockquote>
                                  - *   Java annotations (start with "@") are now captured as literals ("lit")
                                  - * </blockquote>
                                  - * @requires console
                                  - * @overrides window
                                  - */
                                  -
                                  -// JSLint declarations
                                  -/*global console, document, navigator, setTimeout, window */
                                  -
                                  -/**
                                  - * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
                                  - * UI events.
                                  - * If set to {@code false}, {@code prettyPrint()} is synchronous.
                                  - */
                                  -window['PR_SHOULD_USE_CONTINUATION'] = true;
                                  -
                                  -/** the number of characters between tab columns */
                                  -window['PR_TAB_WIDTH'] = 8;
                                  -
                                  -/** Walks the DOM returning a properly escaped version of innerHTML.
                                  -  * @param {Node} node
                                  -  * @param {Array.<string>} out output buffer that receives chunks of HTML.
                                  -  */
                                  -window['PR_normalizedHtml']
                                  -
                                  -/** Contains functions for creating and registering new language handlers.
                                  -  * @type {Object}
                                  -  */
                                  -  = window['PR']
                                  -
                                  -/** Pretty print a chunk of code.
                                  -  *
                                  -  * @param {string} sourceCodeHtml code as html
                                  -  * @return {string} code as html, but prettier
                                  -  */
                                  -  = window['prettyPrintOne']
                                  -/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
                                  -  * {@code class=prettyprint} and prettify them.
                                  -  * @param {Function?} opt_whenDone if specified, called when the last entry
                                  -  *     has been finished.
                                  -  */
                                  -  = window['prettyPrint'] = void 0;
                                  -
                                  -/** browser detection. @extern @returns false if not IE, otherwise the major version. */
                                  -window['_pr_isIE6'] = function () {
                                  -  var ieVersion = navigator && navigator.userAgent &&
                                  -      navigator.userAgent.match(/\bMSIE ([678])\./);
                                  -  ieVersion = ieVersion ? +ieVersion[1] : false;
                                  -  window['_pr_isIE6'] = function () { return ieVersion; };
                                  -  return ieVersion;
                                  -};
                                  -
                                  -
                                  -(function () {
                                  -  // Keyword lists for various languages.
                                  -  var FLOW_CONTROL_KEYWORDS =
                                  -      "break continue do else for if return while ";
                                  -  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
                                  -      "double enum extern float goto int long register short signed sizeof " +
                                  -      "static struct switch typedef union unsigned void volatile ";
                                  -  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
                                  -      "new operator private protected public this throw true try typeof ";
                                  -  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
                                  -      "concept concept_map const_cast constexpr decltype " +
                                  -      "dynamic_cast explicit export friend inline late_check " +
                                  -      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
                                  -      "template typeid typename using virtual wchar_t where ";
                                  -  var JAVA_KEYWORDS = COMMON_KEYWORDS +
                                  -      "abstract boolean byte extends final finally implements import " +
                                  -      "instanceof null native package strictfp super synchronized throws " +
                                  -      "transient ";
                                  -  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
                                  -      "as base by checked decimal delegate descending event " +
                                  -      "fixed foreach from group implicit in interface internal into is lock " +
                                  -      "object out override orderby params partial readonly ref sbyte sealed " +
                                  -      "stackalloc string select uint ulong unchecked unsafe ushort var ";
                                  -  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
                                  -      "debugger eval export function get null set undefined var with " +
                                  -      "Infinity NaN ";
                                  -  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
                                  -      "goto if import last local my next no our print package redo require " +
                                  -      "sub undef unless until use wantarray while BEGIN END ";
                                  -  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
                                  -      "elif except exec finally from global import in is lambda " +
                                  -      "nonlocal not or pass print raise try with yield " +
                                  -      "False True None ";
                                  -  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
                                  -      " defined elsif end ensure false in module next nil not or redo rescue " +
                                  -      "retry self super then true undef unless until when yield BEGIN END ";
                                  -  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
                                  -      "function in local set then until ";
                                  -  var ALL_KEYWORDS = (
                                  -      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
                                  -      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
                                  -
                                  -  // token style names.  correspond to css classes
                                  -  /** token style for a string literal */
                                  -  var PR_STRING = 'str';
                                  -  /** token style for a keyword */
                                  -  var PR_KEYWORD = 'kwd';
                                  -  /** token style for a comment */
                                  -  var PR_COMMENT = 'com';
                                  -  /** token style for a type */
                                  -  var PR_TYPE = 'typ';
                                  -  /** token style for a literal value.  e.g. 1, null, true. */
                                  -  var PR_LITERAL = 'lit';
                                  -  /** token style for a punctuation string. */
                                  -  var PR_PUNCTUATION = 'pun';
                                  -  /** token style for a punctuation string. */
                                  -  var PR_PLAIN = 'pln';
                                  -
                                  -  /** token style for an sgml tag. */
                                  -  var PR_TAG = 'tag';
                                  -  /** token style for a markup declaration such as a DOCTYPE. */
                                  -  var PR_DECLARATION = 'dec';
                                  -  /** token style for embedded source. */
                                  -  var PR_SOURCE = 'src';
                                  -  /** token style for an sgml attribute name. */
                                  -  var PR_ATTRIB_NAME = 'atn';
                                  -  /** token style for an sgml attribute value. */
                                  -  var PR_ATTRIB_VALUE = 'atv';
                                  -
                                  -  /**
                                  -   * A class that indicates a section of markup that is not code, e.g. to allow
                                  -   * embedding of line numbers within code listings.
                                  -   */
                                  -  var PR_NOCODE = 'nocode';
                                  -
                                  -  /** A set of tokens that can precede a regular expression literal in
                                  -    * javascript.
                                  -    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
                                  -    * list, but I've removed ones that might be problematic when seen in
                                  -    * languages that don't support regular expression literals.
                                  -    *
                                  -    * <p>Specifically, I've removed any keywords that can't precede a regexp
                                  -    * literal in a syntactically legal javascript program, and I've removed the
                                  -    * "in" keyword since it's not a keyword in many languages, and might be used
                                  -    * as a count of inches.
                                  -    *
                                  -    * <p>The link a above does not accurately describe EcmaScript rules since
                                  -    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
                                  -    * very well in practice.
                                  -    *
                                  -    * @private
                                  -    */
                                  -  var REGEXP_PRECEDER_PATTERN = function () {
                                  -      var preceders = [
                                  -          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
                                  -          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
                                  -          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
                                  -          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
                                  -          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
                                  -          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
                                  -          "||=", "~" /* handles =~ and !~ */,
                                  -          "break", "case", "continue", "delete",
                                  -          "do", "else", "finally", "instanceof",
                                  -          "return", "throw", "try", "typeof"
                                  -          ];
                                  -      var pattern = '(?:^^|[+-]';
                                  -      for (var i = 0; i < preceders.length; ++i) {
                                  -        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
                                  -      }
                                  -      pattern += ')\\s*';  // matches at end, and matches empty string
                                  -      return pattern;
                                  -      // CAVEAT: this does not properly handle the case where a regular
                                  -      // expression immediately follows another since a regular expression may
                                  -      // have flags for case-sensitivity and the like.  Having regexp tokens
                                  -      // adjacent is not valid in any language I'm aware of, so I'm punting.
                                  -      // TODO: maybe style special characters inside a regexp as punctuation.
                                  -    }();
                                  -
                                  -  // Define regexps here so that the interpreter doesn't have to create an
                                  -  // object each time the function containing them is called.
                                  -  // The language spec requires a new object created even if you don't access
                                  -  // the $1 members.
                                  -  var pr_amp = /&/g;
                                  -  var pr_lt = /</g;
                                  -  var pr_gt = />/g;
                                  -  var pr_quot = /\"/g;
                                  -  /** like textToHtml but escapes double quotes to be attribute safe. */
                                  -  function attribToHtml(str) {
                                  -    return str.replace(pr_amp, '&amp;')
                                  -        .replace(pr_lt, '&lt;')
                                  -        .replace(pr_gt, '&gt;')
                                  -        .replace(pr_quot, '&quot;');
                                  -  }
                                  -
                                  -  /** escapest html special characters to html. */
                                  -  function textToHtml(str) {
                                  -    return str.replace(pr_amp, '&amp;')
                                  -        .replace(pr_lt, '&lt;')
                                  -        .replace(pr_gt, '&gt;');
                                  -  }
                                  -
                                  -
                                  -  var pr_ltEnt = /&lt;/g;
                                  -  var pr_gtEnt = /&gt;/g;
                                  -  var pr_aposEnt = /&apos;/g;
                                  -  var pr_quotEnt = /&quot;/g;
                                  -  var pr_ampEnt = /&amp;/g;
                                  -  var pr_nbspEnt = /&nbsp;/g;
                                  -  /** unescapes html to plain text. */
                                  -  function htmlToText(html) {
                                  -    var pos = html.indexOf('&');
                                  -    if (pos < 0) { return html; }
                                  -    // Handle numeric entities specially.  We can't use functional substitution
                                  -    // since that doesn't work in older versions of Safari.
                                  -    // These should be rare since most browsers convert them to normal chars.
                                  -    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
                                  -      var end = html.indexOf(';', pos);
                                  -      if (end >= 0) {
                                  -        var num = html.substring(pos + 3, end);
                                  -        var radix = 10;
                                  -        if (num && num.charAt(0) === 'x') {
                                  -          num = num.substring(1);
                                  -          radix = 16;
                                  -        }
                                  -        var codePoint = parseInt(num, radix);
                                  -        if (!isNaN(codePoint)) {
                                  -          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
                                  -                  html.substring(end + 1));
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    return html.replace(pr_ltEnt, '<')
                                  -        .replace(pr_gtEnt, '>')
                                  -        .replace(pr_aposEnt, "'")
                                  -        .replace(pr_quotEnt, '"')
                                  -        .replace(pr_nbspEnt, ' ')
                                  -        .replace(pr_ampEnt, '&');
                                  -  }
                                  -
                                  -  /** is the given node's innerHTML normally unescaped? */
                                  -  function isRawContent(node) {
                                  -    return 'XMP' === node.tagName;
                                  -  }
                                  -
                                  -  var newlineRe = /[\r\n]/g;
                                  -  /**
                                  -   * Are newlines and adjacent spaces significant in the given node's innerHTML?
                                  -   */
                                  -  function isPreformatted(node, content) {
                                  -    // PRE means preformatted, and is a very common case, so don't create
                                  -    // unnecessary computed style objects.
                                  -    if ('PRE' === node.tagName) { return true; }
                                  -    if (!newlineRe.test(content)) { return true; }  // Don't care
                                  -    var whitespace = '';
                                  -    // For disconnected nodes, IE has no currentStyle.
                                  -    if (node.currentStyle) {
                                  -      whitespace = node.currentStyle.whiteSpace;
                                  -    } else if (window.getComputedStyle) {
                                  -      // Firefox makes a best guess if node is disconnected whereas Safari
                                  -      // returns the empty string.
                                  -      whitespace = window.getComputedStyle(node, null).whiteSpace;
                                  -    }
                                  -    return !whitespace || whitespace === 'pre';
                                  -  }
                                  -
                                  -  function normalizedHtml(node, out) {
                                  -    switch (node.nodeType) {
                                  -      case 1:  // an element
                                  -        var name = node.tagName.toLowerCase();
                                  -        out.push('<', name);
                                  -        for (var i = 0; i < node.attributes.length; ++i) {
                                  -          var attr = node.attributes[i];
                                  -          if (!attr.specified) { continue; }
                                  -          out.push(' ');
                                  -          normalizedHtml(attr, out);
                                  -        }
                                  -        out.push('>');
                                  -        for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -          normalizedHtml(child, out);
                                  -        }
                                  -        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
                                  -          out.push('<\/', name, '>');
                                  -        }
                                  -        break;
                                  -      case 2: // an attribute
                                  -        out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"');
                                  -        break;
                                  -      case 3: case 4: // text
                                  -        out.push(textToHtml(node.nodeValue));
                                  -        break;
                                  -    }
                                  -  }
                                  -
                                  -  /**
                                  -   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
                                  -   * matches the union o the sets o strings matched d by the input RegExp.
                                  -   * Since it matches globally, if the input strings have a start-of-input
                                  -   * anchor (/^.../), it is ignored for the purposes of unioning.
                                  -   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
                                  -   * @return {RegExp} a global regex.
                                  -   */
                                  -  function combinePrefixPatterns(regexs) {
                                  -    var capturedGroupIndex = 0;
                                  -
                                  -    var needToFoldCase = false;
                                  -    var ignoreCase = false;
                                  -    for (var i = 0, n = regexs.length; i < n; ++i) {
                                  -      var regex = regexs[i];
                                  -      if (regex.ignoreCase) {
                                  -        ignoreCase = true;
                                  -      } else if (/[a-z]/i.test(regex.source.replace(
                                  -                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
                                  -        needToFoldCase = true;
                                  -        ignoreCase = false;
                                  -        break;
                                  -      }
                                  -    }
                                  -
                                  -    function decodeEscape(charsetPart) {
                                  -      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
                                  -      switch (charsetPart.charAt(1)) {
                                  -        case 'b': return 8;
                                  -        case 't': return 9;
                                  -        case 'n': return 0xa;
                                  -        case 'v': return 0xb;
                                  -        case 'f': return 0xc;
                                  -        case 'r': return 0xd;
                                  -        case 'u': case 'x':
                                  -          return parseInt(charsetPart.substring(2), 16)
                                  -              || charsetPart.charCodeAt(1);
                                  -        case '0': case '1': case '2': case '3': case '4':
                                  -        case '5': case '6': case '7':
                                  -          return parseInt(charsetPart.substring(1), 8);
                                  -        default: return charsetPart.charCodeAt(1);
                                  -      }
                                  -    }
                                  -
                                  -    function encodeEscape(charCode) {
                                  -      if (charCode < 0x20) {
                                  -        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
                                  -      }
                                  -      var ch = String.fromCharCode(charCode);
                                  -      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
                                  -        ch = '\\' + ch;
                                  -      }
                                  -      return ch;
                                  -    }
                                  -
                                  -    function caseFoldCharset(charSet) {
                                  -      var charsetParts = charSet.substring(1, charSet.length - 1).match(
                                  -          new RegExp(
                                  -              '\\\\u[0-9A-Fa-f]{4}'
                                  -              + '|\\\\x[0-9A-Fa-f]{2}'
                                  -              + '|\\\\[0-3][0-7]{0,2}'
                                  -              + '|\\\\[0-7]{1,2}'
                                  -              + '|\\\\[\\s\\S]'
                                  -              + '|-'
                                  -              + '|[^-\\\\]',
                                  -              'g'));
                                  -      var groups = [];
                                  -      var ranges = [];
                                  -      var inverse = charsetParts[0] === '^';
                                  -      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
                                  -        var p = charsetParts[i];
                                  -        switch (p) {
                                  -          case '\\B': case '\\b':
                                  -          case '\\D': case '\\d':
                                  -          case '\\S': case '\\s':
                                  -          case '\\W': case '\\w':
                                  -            groups.push(p);
                                  -            continue;
                                  -        }
                                  -        var start = decodeEscape(p);
                                  -        var end;
                                  -        if (i + 2 < n && '-' === charsetParts[i + 1]) {
                                  -          end = decodeEscape(charsetParts[i + 2]);
                                  -          i += 2;
                                  -        } else {
                                  -          end = start;
                                  -        }
                                  -        ranges.push([start, end]);
                                  -        // If the range might intersect letters, then expand it.
                                  -        if (!(end < 65 || start > 122)) {
                                  -          if (!(end < 65 || start > 90)) {
                                  -            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
                                  -          }
                                  -          if (!(end < 97 || start > 122)) {
                                  -            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
                                  -      // -> [[1, 12], [14, 14], [16, 17]]
                                  -      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
                                  -      var consolidatedRanges = [];
                                  -      var lastRange = [NaN, NaN];
                                  -      for (var i = 0; i < ranges.length; ++i) {
                                  -        var range = ranges[i];
                                  -        if (range[0] <= lastRange[1] + 1) {
                                  -          lastRange[1] = Math.max(lastRange[1], range[1]);
                                  -        } else {
                                  -          consolidatedRanges.push(lastRange = range);
                                  -        }
                                  -      }
                                  -
                                  -      var out = ['['];
                                  -      if (inverse) { out.push('^'); }
                                  -      out.push.apply(out, groups);
                                  -      for (var i = 0; i < consolidatedRanges.length; ++i) {
                                  -        var range = consolidatedRanges[i];
                                  -        out.push(encodeEscape(range[0]));
                                  -        if (range[1] > range[0]) {
                                  -          if (range[1] + 1 > range[0]) { out.push('-'); }
                                  -          out.push(encodeEscape(range[1]));
                                  -        }
                                  -      }
                                  -      out.push(']');
                                  -      return out.join('');
                                  -    }
                                  -
                                  -    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
                                  -      // Split into character sets, escape sequences, punctuation strings
                                  -      // like ('(', '(?:', ')', '^'), and runs of characters that do not
                                  -      // include any of the above.
                                  -      var parts = regex.source.match(
                                  -          new RegExp(
                                  -              '(?:'
                                  -              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
                                  -              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
                                  -              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
                                  -              + '|\\\\[0-9]+'  // a back-reference or octal escape
                                  -              + '|\\\\[^ux0-9]'  // other escape sequence
                                  -              + '|\\(\\?[:!=]'  // start of a non-capturing group
                                  -              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
                                  -              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
                                  -              + ')',
                                  -              'g'));
                                  -      var n = parts.length;
                                  -
                                  -      // Maps captured group numbers to the number they will occupy in
                                  -      // the output or to -1 if that has not been determined, or to
                                  -      // undefined if they need not be capturing in the output.
                                  -      var capturedGroups = [];
                                  -
                                  -      // Walk over and identify back references to build the capturedGroups
                                  -      // mapping.
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        var p = parts[i];
                                  -        if (p === '(') {
                                  -          // groups are 1-indexed, so max group index is count of '('
                                  -          ++groupIndex;
                                  -        } else if ('\\' === p.charAt(0)) {
                                  -          var decimalValue = +p.substring(1);
                                  -          if (decimalValue && decimalValue <= groupIndex) {
                                  -            capturedGroups[decimalValue] = -1;
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // Renumber groups and reduce capturing groups to non-capturing groups
                                  -      // where possible.
                                  -      for (var i = 1; i < capturedGroups.length; ++i) {
                                  -        if (-1 === capturedGroups[i]) {
                                  -          capturedGroups[i] = ++capturedGroupIndex;
                                  -        }
                                  -      }
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        var p = parts[i];
                                  -        if (p === '(') {
                                  -          ++groupIndex;
                                  -          if (capturedGroups[groupIndex] === undefined) {
                                  -            parts[i] = '(?:';
                                  -          }
                                  -        } else if ('\\' === p.charAt(0)) {
                                  -          var decimalValue = +p.substring(1);
                                  -          if (decimalValue && decimalValue <= groupIndex) {
                                  -            parts[i] = '\\' + capturedGroups[groupIndex];
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // Remove any prefix anchors so that the output will match anywhere.
                                  -      // ^^ really does mean an anchored match though.
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
                                  -      }
                                  -
                                  -      // Expand letters to groupts to handle mixing of case-sensitive and
                                  -      // case-insensitive patterns if necessary.
                                  -      if (regex.ignoreCase && needToFoldCase) {
                                  -        for (var i = 0; i < n; ++i) {
                                  -          var p = parts[i];
                                  -          var ch0 = p.charAt(0);
                                  -          if (p.length >= 2 && ch0 === '[') {
                                  -            parts[i] = caseFoldCharset(p);
                                  -          } else if (ch0 !== '\\') {
                                  -            // TODO: handle letters in numeric escapes.
                                  -            parts[i] = p.replace(
                                  -                /[a-zA-Z]/g,
                                  -                function (ch) {
                                  -                  var cc = ch.charCodeAt(0);
                                  -                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
                                  -                });
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      return parts.join('');
                                  -    }
                                  -
                                  -    var rewritten = [];
                                  -    for (var i = 0, n = regexs.length; i < n; ++i) {
                                  -      var regex = regexs[i];
                                  -      if (regex.global || regex.multiline) { throw new Error('' + regex); }
                                  -      rewritten.push(
                                  -          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
                                  -    }
                                  -
                                  -    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
                                  -  }
                                  -
                                  -  var PR_innerHtmlWorks = null;
                                  -  function getInnerHtml(node) {
                                  -    // inner html is hopelessly broken in Safari 2.0.4 when the content is
                                  -    // an html description of well formed XML and the containing tag is a PRE
                                  -    // tag, so we detect that case and emulate innerHTML.
                                  -    if (null === PR_innerHtmlWorks) {
                                  -      var testNode = document.createElement('PRE');
                                  -      testNode.appendChild(
                                  -          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
                                  -      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
                                  -    }
                                  -
                                  -    if (PR_innerHtmlWorks) {
                                  -      var content = node.innerHTML;
                                  -      // XMP tags contain unescaped entities so require special handling.
                                  -      if (isRawContent(node)) {
                                  -        content = textToHtml(content);
                                  -      } else if (!isPreformatted(node, content)) {
                                  -        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
                                  -            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
                                  -      }
                                  -      return content;
                                  -    }
                                  -
                                  -    var out = [];
                                  -    for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -      normalizedHtml(child, out);
                                  -    }
                                  -    return out.join('');
                                  -  }
                                  -
                                  -  /** returns a function that expand tabs to spaces.  This function can be fed
                                  -    * successive chunks of text, and will maintain its own internal state to
                                  -    * keep track of how tabs are expanded.
                                  -    * @return {function (string) : string} a function that takes
                                  -    *   plain text and return the text with tabs expanded.
                                  -    * @private
                                  -    */
                                  -  function makeTabExpander(tabWidth) {
                                  -    var SPACES = '                ';
                                  -    var charInLine = 0;
                                  -
                                  -    return function (plainText) {
                                  -      // walk over each character looking for tabs and newlines.
                                  -      // On tabs, expand them.  On newlines, reset charInLine.
                                  -      // Otherwise increment charInLine
                                  -      var out = null;
                                  -      var pos = 0;
                                  -      for (var i = 0, n = plainText.length; i < n; ++i) {
                                  -        var ch = plainText.charAt(i);
                                  -
                                  -        switch (ch) {
                                  -          case '\t':
                                  -            if (!out) { out = []; }
                                  -            out.push(plainText.substring(pos, i));
                                  -            // calculate how much space we need in front of this part
                                  -            // nSpaces is the amount of padding -- the number of spaces needed
                                  -            // to move us to the next column, where columns occur at factors of
                                  -            // tabWidth.
                                  -            var nSpaces = tabWidth - (charInLine % tabWidth);
                                  -            charInLine += nSpaces;
                                  -            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
                                  -              out.push(SPACES.substring(0, nSpaces));
                                  -            }
                                  -            pos = i + 1;
                                  -            break;
                                  -          case '\n':
                                  -            charInLine = 0;
                                  -            break;
                                  -          default:
                                  -            ++charInLine;
                                  -        }
                                  -      }
                                  -      if (!out) { return plainText; }
                                  -      out.push(plainText.substring(pos));
                                  -      return out.join('');
                                  -    };
                                  -  }
                                  -
                                  -  var pr_chunkPattern = new RegExp(
                                  -      '[^<]+'  // A run of characters other than '<'
                                  -      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
                                  -      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
                                  -      // a probable tag that should not be highlighted
                                  -      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
                                  -      + '|<',  // A '<' that does not begin a larger chunk
                                  -      'g');
                                  -  var pr_commentPrefix = /^<\!--/;
                                  -  var pr_cdataPrefix = /^<!\[CDATA\[/;
                                  -  var pr_brPrefix = /^<br\b/i;
                                  -  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
                                  -
                                  -  /** split markup into chunks of html tags (style null) and
                                  -    * plain text (style {@link #PR_PLAIN}), converting tags which are
                                  -    * significant for tokenization (<br>) into their textual equivalent.
                                  -    *
                                  -    * @param {string} s html where whitespace is considered significant.
                                  -    * @return {Object} source code and extracted tags.
                                  -    * @private
                                  -    */
                                  -  function extractTags(s) {
                                  -    // since the pattern has the 'g' modifier and defines no capturing groups,
                                  -    // this will return a list of all chunks which we then classify and wrap as
                                  -    // PR_Tokens
                                  -    var matches = s.match(pr_chunkPattern);
                                  -    var sourceBuf = [];
                                  -    var sourceBufLen = 0;
                                  -    var extractedTags = [];
                                  -    if (matches) {
                                  -      for (var i = 0, n = matches.length; i < n; ++i) {
                                  -        var match = matches[i];
                                  -        if (match.length > 1 && match.charAt(0) === '<') {
                                  -          if (pr_commentPrefix.test(match)) { continue; }
                                  -          if (pr_cdataPrefix.test(match)) {
                                  -            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
                                  -            sourceBuf.push(match.substring(9, match.length - 3));
                                  -            sourceBufLen += match.length - 12;
                                  -          } else if (pr_brPrefix.test(match)) {
                                  -            // <br> tags are lexically significant so convert them to text.
                                  -            // This is undone later.
                                  -            sourceBuf.push('\n');
                                  -            ++sourceBufLen;
                                  -          } else {
                                  -            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
                                  -              // A <span class="nocode"> will start a section that should be
                                  -              // ignored.  Continue walking the list until we see a matching end
                                  -              // tag.
                                  -              var name = match.match(pr_tagNameRe)[2];
                                  -              var depth = 1;
                                  -              var j;
                                  -              end_tag_loop:
                                  -              for (j = i + 1; j < n; ++j) {
                                  -                var name2 = matches[j].match(pr_tagNameRe);
                                  -                if (name2 && name2[2] === name) {
                                  -                  if (name2[1] === '/') {
                                  -                    if (--depth === 0) { break end_tag_loop; }
                                  -                  } else {
                                  -                    ++depth;
                                  -                  }
                                  -                }
                                  -              }
                                  -              if (j < n) {
                                  -                extractedTags.push(
                                  -                    sourceBufLen, matches.slice(i, j + 1).join(''));
                                  -                i = j;
                                  -              } else {  // Ignore unclosed sections.
                                  -                extractedTags.push(sourceBufLen, match);
                                  -              }
                                  -            } else {
                                  -              extractedTags.push(sourceBufLen, match);
                                  -            }
                                  -          }
                                  -        } else {
                                  -          var literalText = htmlToText(match);
                                  -          sourceBuf.push(literalText);
                                  -          sourceBufLen += literalText.length;
                                  -        }
                                  -      }
                                  -    }
                                  -    return { source: sourceBuf.join(''), tags: extractedTags };
                                  -  }
                                  -
                                  -  /** True if the given tag contains a class attribute with the nocode class. */
                                  -  function isNoCodeTag(tag) {
                                  -    return !!tag
                                  -        // First canonicalize the representation of attributes
                                  -        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
                                  -                 ' $1="$2$3$4"')
                                  -        // Then look for the attribute we want.
                                  -        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
                                  -  }
                                  -
                                  -  /**
                                  -   * Apply the given language handler to sourceCode and add the resulting
                                  -   * decorations to out.
                                  -   * @param {number} basePos the index of sourceCode within the chunk of source
                                  -   *    whose decorations are already present on out.
                                  -   */
                                  -  function appendDecorations(basePos, sourceCode, langHandler, out) {
                                  -    if (!sourceCode) { return; }
                                  -    var job = {
                                  -      source: sourceCode,
                                  -      basePos: basePos
                                  -    };
                                  -    langHandler(job);
                                  -    out.push.apply(out, job.decorations);
                                  -  }
                                  -
                                  -  /** Given triples of [style, pattern, context] returns a lexing function,
                                  -    * The lexing function interprets the patterns to find token boundaries and
                                  -    * returns a decoration list of the form
                                  -    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
                                  -    * where index_n is an index into the sourceCode, and style_n is a style
                                  -    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
                                  -    * all characters in sourceCode[index_n-1:index_n].
                                  -    *
                                  -    * The stylePatterns is a list whose elements have the form
                                  -    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
                                  -    *
                                  -    * Style is a style constant like PR_PLAIN, or can be a string of the
                                  -    * form 'lang-FOO', where FOO is a language extension describing the
                                  -    * language of the portion of the token in $1 after pattern executes.
                                  -    * E.g., if style is 'lang-lisp', and group 1 contains the text
                                  -    * '(hello (world))', then that portion of the token will be passed to the
                                  -    * registered lisp handler for formatting.
                                  -    * The text before and after group 1 will be restyled using this decorator
                                  -    * so decorators should take care that this doesn't result in infinite
                                  -    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
                                  -    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
                                  -    * '<script>foo()<\/script>', which would cause the current decorator to
                                  -    * be called with '<script>' which would not match the same rule since
                                  -    * group 1 must not be empty, so it would be instead styled as PR_TAG by
                                  -    * the generic tag rule.  The handler registered for the 'js' extension would
                                  -    * then be called with 'foo()', and finally, the current decorator would
                                  -    * be called with '<\/script>' which would not match the original rule and
                                  -    * so the generic tag rule would identify it as a tag.
                                  -    *
                                  -    * Pattern must only match prefixes, and if it matches a prefix, then that
                                  -    * match is considered a token with the same style.
                                  -    *
                                  -    * Context is applied to the last non-whitespace, non-comment token
                                  -    * recognized.
                                  -    *
                                  -    * Shortcut is an optional string of characters, any of which, if the first
                                  -    * character, gurantee that this pattern and only this pattern matches.
                                  -    *
                                  -    * @param {Array} shortcutStylePatterns patterns that always start with
                                  -    *   a known character.  Must have a shortcut string.
                                  -    * @param {Array} fallthroughStylePatterns patterns that will be tried in
                                  -    *   order if the shortcut ones fail.  May have shortcuts.
                                  -    *
                                  -    * @return {function (Object)} a
                                  -    *   function that takes source code and returns a list of decorations.
                                  -    */
                                  -  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
                                  -    var shortcuts = {};
                                  -    var tokenizer;
                                  -    (function () {
                                  -      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
                                  -      var allRegexs = [];
                                  -      var regexKeys = {};
                                  -      for (var i = 0, n = allPatterns.length; i < n; ++i) {
                                  -        var patternParts = allPatterns[i];
                                  -        var shortcutChars = patternParts[3];
                                  -        if (shortcutChars) {
                                  -          for (var c = shortcutChars.length; --c >= 0;) {
                                  -            shortcuts[shortcutChars.charAt(c)] = patternParts;
                                  -          }
                                  -        }
                                  -        var regex = patternParts[1];
                                  -        var k = '' + regex;
                                  -        if (!regexKeys.hasOwnProperty(k)) {
                                  -          allRegexs.push(regex);
                                  -          regexKeys[k] = null;
                                  -        }
                                  -      }
                                  -      allRegexs.push(/[\0-\uffff]/);
                                  -      tokenizer = combinePrefixPatterns(allRegexs);
                                  -    })();
                                  -
                                  -    var nPatterns = fallthroughStylePatterns.length;
                                  -    var notWs = /\S/;
                                  -
                                  -    /**
                                  -     * Lexes job.source and produces an output array job.decorations of style
                                  -     * classes preceded by the position at which they start in job.source in
                                  -     * order.
                                  -     *
                                  -     * @param {Object} job an object like {@code
                                  -     *    source: {string} sourceText plain text,
                                  -     *    basePos: {int} position of job.source in the larger chunk of
                                  -     *        sourceCode.
                                  -     * }
                                  -     */
                                  -    var decorate = function (job) {
                                  -      var sourceCode = job.source, basePos = job.basePos;
                                  -      /** Even entries are positions in source in ascending order.  Odd enties
                                  -        * are style markers (e.g., PR_COMMENT) that run from that position until
                                  -        * the end.
                                  -        * @type {Array.<number|string>}
                                  -        */
                                  -      var decorations = [basePos, PR_PLAIN];
                                  -      var pos = 0;  // index into sourceCode
                                  -      var tokens = sourceCode.match(tokenizer) || [];
                                  -      var styleCache = {};
                                  -
                                  -      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
                                  -        var token = tokens[ti];
                                  -        var style = styleCache[token];
                                  -        var match = void 0;
                                  -
                                  -        var isEmbedded;
                                  -        if (typeof style === 'string') {
                                  -          isEmbedded = false;
                                  -        } else {
                                  -          var patternParts = shortcuts[token.charAt(0)];
                                  -          if (patternParts) {
                                  -            match = token.match(patternParts[1]);
                                  -            style = patternParts[0];
                                  -          } else {
                                  -            for (var i = 0; i < nPatterns; ++i) {
                                  -              patternParts = fallthroughStylePatterns[i];
                                  -              match = token.match(patternParts[1]);
                                  -              if (match) {
                                  -                style = patternParts[0];
                                  -                break;
                                  -              }
                                  -            }
                                  -
                                  -            if (!match) {  // make sure that we make progress
                                  -              style = PR_PLAIN;
                                  -            }
                                  -          }
                                  -
                                  -          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
                                  -          if (isEmbedded && !(match && typeof match[1] === 'string')) {
                                  -            isEmbedded = false;
                                  -            style = PR_SOURCE;
                                  -          }
                                  -
                                  -          if (!isEmbedded) { styleCache[token] = style; }
                                  -        }
                                  -
                                  -        var tokenStart = pos;
                                  -        pos += token.length;
                                  -
                                  -        if (!isEmbedded) {
                                  -          decorations.push(basePos + tokenStart, style);
                                  -        } else {  // Treat group 1 as an embedded block of source code.
                                  -          var embeddedSource = match[1];
                                  -          var embeddedSourceStart = token.indexOf(embeddedSource);
                                  -          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
                                  -          if (match[2]) {
                                  -            // If embeddedSource can be blank, then it would match at the
                                  -            // beginning which would cause us to infinitely recurse on the
                                  -            // entire token, so we catch the right context in match[2].
                                  -            embeddedSourceEnd = token.length - match[2].length;
                                  -            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
                                  -          }
                                  -          var lang = style.substring(5);
                                  -          // Decorate the left of the embedded source
                                  -          appendDecorations(
                                  -              basePos + tokenStart,
                                  -              token.substring(0, embeddedSourceStart),
                                  -              decorate, decorations);
                                  -          // Decorate the embedded source
                                  -          appendDecorations(
                                  -              basePos + tokenStart + embeddedSourceStart,
                                  -              embeddedSource,
                                  -              langHandlerForExtension(lang, embeddedSource),
                                  -              decorations);
                                  -          // Decorate the right of the embedded section
                                  -          appendDecorations(
                                  -              basePos + tokenStart + embeddedSourceEnd,
                                  -              token.substring(embeddedSourceEnd),
                                  -              decorate, decorations);
                                  -        }
                                  -      }
                                  -      job.decorations = decorations;
                                  -    };
                                  -    return decorate;
                                  -  }
                                  -
                                  -  /** returns a function that produces a list of decorations from source text.
                                  -    *
                                  -    * This code treats ", ', and ` as string delimiters, and \ as a string
                                  -    * escape.  It does not recognize perl's qq() style strings.
                                  -    * It has no special handling for double delimiter escapes as in basic, or
                                  -    * the tripled delimiters used in python, but should work on those regardless
                                  -    * although in those cases a single string literal may be broken up into
                                  -    * multiple adjacent string literals.
                                  -    *
                                  -    * It recognizes C, C++, and shell style comments.
                                  -    *
                                  -    * @param {Object} options a set of optional parameters.
                                  -    * @return {function (Object)} a function that examines the source code
                                  -    *     in the input job and builds the decoration list.
                                  -    */
                                  -  function sourceDecorator(options) {
                                  -    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
                                  -    if (options['tripleQuotedStrings']) {
                                  -      // '''multi-line-string''', 'single-line-string', and double-quoted
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
                                  -           null, '\'"']);
                                  -    } else if (options['multiLineStrings']) {
                                  -      // 'multi-line-string', "multi-line-string"
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
                                  -           null, '\'"`']);
                                  -    } else {
                                  -      // 'single-line-string', "single-line-string"
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,
                                  -           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
                                  -           null, '"\'']);
                                  -    }
                                  -    if (options['verbatimStrings']) {
                                  -      // verbatim-string-literal production from the C# grammar.  See issue 93.
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
                                  -    }
                                  -    if (options['hashComments']) {
                                  -      if (options['cStyleComments']) {
                                  -        // Stop C preprocessor declarations at an unclosed open comment
                                  -        shortcutStylePatterns.push(
                                  -            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
                                  -             null, '#']);
                                  -        fallthroughStylePatterns.push(
                                  -            [PR_STRING,
                                  -             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
                                  -             null]);
                                  -      } else {
                                  -        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
                                  -      }
                                  -    }
                                  -    if (options['cStyleComments']) {
                                  -      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
                                  -    }
                                  -    if (options['regexLiterals']) {
                                  -      var REGEX_LITERAL = (
                                  -          // A regular expression literal starts with a slash that is
                                  -          // not followed by * or / so that it is not confused with
                                  -          // comments.
                                  -          '/(?=[^/*])'
                                  -          // and then contains any number of raw characters,
                                  -          + '(?:[^/\\x5B\\x5C]'
                                  -          // escape sequences (\x5C),
                                  -          +    '|\\x5C[\\s\\S]'
                                  -          // or non-nesting character sets (\x5B\x5D);
                                  -          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
                                  -          // finally closed by a /.
                                  -          + '/');
                                  -      fallthroughStylePatterns.push(
                                  -          ['lang-regex',
                                  -           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
                                  -           ]);
                                  -    }
                                  -
                                  -    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
                                  -    if (keywords.length) {
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_KEYWORD,
                                  -           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
                                  -    }
                                  -
                                  -    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
                                  -    fallthroughStylePatterns.push(
                                  -        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
                                  -        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
                                  -        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
                                  -        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
                                  -        [PR_LITERAL,
                                  -         new RegExp(
                                  -             '^(?:'
                                  -             // A hex number
                                  -             + '0x[a-f0-9]+'
                                  -             // or an octal or decimal number,
                                  -             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
                                  -             // possibly in scientific notation
                                  -             + '(?:e[+\\-]?\\d+)?'
                                  -             + ')'
                                  -             // with an optional modifier like UL for unsigned long
                                  -             + '[a-z]*', 'i'),
                                  -         null, '0123456789'],
                                  -        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
                                  -
                                  -    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
                                  -  }
                                  -
                                  -  var decorateSource = sourceDecorator({
                                  -        'keywords': ALL_KEYWORDS,
                                  -        'hashComments': true,
                                  -        'cStyleComments': true,
                                  -        'multiLineStrings': true,
                                  -        'regexLiterals': true
                                  -      });
                                  -
                                  -  /** Breaks {@code job.source} around style boundaries in
                                  -    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
                                  -    * and leaves the result in {@code job.prettyPrintedHtml}.
                                  -    * @param {Object} job like {
                                  -    *    source: {string} source as plain text,
                                  -    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
                                  -    *                   html preceded by their position in {@code job.source}
                                  -    *                   in order
                                  -    *    decorations: {Array.<number|string} an array of style classes preceded
                                  -    *                 by the position at which they start in job.source in order
                                  -    * }
                                  -    * @private
                                  -    */
                                  -  function recombineTagsAndDecorations(job) {
                                  -    var sourceText = job.source;
                                  -    var extractedTags = job.extractedTags;
                                  -    var decorations = job.decorations;
                                  -
                                  -    var html = [];
                                  -    // index past the last char in sourceText written to html
                                  -    var outputIdx = 0;
                                  -
                                  -    var openDecoration = null;
                                  -    var currentDecoration = null;
                                  -    var tagPos = 0;  // index into extractedTags
                                  -    var decPos = 0;  // index into decorations
                                  -    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
                                  -
                                  -    var adjacentSpaceRe = /([\r\n ]) /g;
                                  -    var startOrSpaceRe = /(^| ) /gm;
                                  -    var newlineRe = /\r\n?|\n/g;
                                  -    var trailingSpaceRe = /[ \r\n]$/;
                                  -    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
                                  -
                                  -    // A helper function that is responsible for opening sections of decoration
                                  -    // and outputing properly escaped chunks of source
                                  -    function emitTextUpTo(sourceIdx) {
                                  -      if (sourceIdx > outputIdx) {
                                  -        if (openDecoration && openDecoration !== currentDecoration) {
                                  -          // Close the current decoration
                                  -          html.push('</span>');
                                  -          openDecoration = null;
                                  -        }
                                  -        if (!openDecoration && currentDecoration) {
                                  -          openDecoration = currentDecoration;
                                  -          html.push('<span class="', openDecoration, '">');
                                  -        }
                                  -        // This interacts badly with some wikis which introduces paragraph tags
                                  -        // into pre blocks for some strange reason.
                                  -        // It's necessary for IE though which seems to lose the preformattedness
                                  -        // of <pre> tags when their innerHTML is assigned.
                                  -        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
                                  -        // and it serves to undo the conversion of <br>s to newlines done in
                                  -        // chunkify.
                                  -        var htmlChunk = textToHtml(
                                  -            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
                                  -            .replace(lastWasSpace
                                  -                     ? startOrSpaceRe
                                  -                     : adjacentSpaceRe, '$1&nbsp;');
                                  -        // Keep track of whether we need to escape space at the beginning of the
                                  -        // next chunk.
                                  -        lastWasSpace = trailingSpaceRe.test(htmlChunk);
                                  -        // IE collapses multiple adjacient <br>s into 1 line break.
                                  -        // Prefix every <br> with '&nbsp;' can prevent such IE's behavior.
                                  -        var lineBreakHtml = window['_pr_isIE6']() ? '&nbsp;<br />' : '<br />';
                                  -        html.push(htmlChunk.replace(newlineRe, lineBreakHtml));
                                  -        outputIdx = sourceIdx;
                                  -      }
                                  -    }
                                  -
                                  -    while (true) {
                                  -      // Determine if we're going to consume a tag this time around.  Otherwise
                                  -      // we consume a decoration or exit.
                                  -      var outputTag;
                                  -      if (tagPos < extractedTags.length) {
                                  -        if (decPos < decorations.length) {
                                  -          // Pick one giving preference to extractedTags since we shouldn't open
                                  -          // a new style that we're going to have to immediately close in order
                                  -          // to output a tag.
                                  -          outputTag = extractedTags[tagPos] <= decorations[decPos];
                                  -        } else {
                                  -          outputTag = true;
                                  -        }
                                  -      } else {
                                  -        outputTag = false;
                                  -      }
                                  -      // Consume either a decoration or a tag or exit.
                                  -      if (outputTag) {
                                  -        emitTextUpTo(extractedTags[tagPos]);
                                  -        if (openDecoration) {
                                  -          // Close the current decoration
                                  -          html.push('</span>');
                                  -          openDecoration = null;
                                  -        }
                                  -        html.push(extractedTags[tagPos + 1]);
                                  -        tagPos += 2;
                                  -      } else if (decPos < decorations.length) {
                                  -        emitTextUpTo(decorations[decPos]);
                                  -        currentDecoration = decorations[decPos + 1];
                                  -        decPos += 2;
                                  -      } else {
                                  -        break;
                                  -      }
                                  -    }
                                  -    emitTextUpTo(sourceText.length);
                                  -    if (openDecoration) {
                                  -      html.push('</span>');
                                  -    }
                                  -    job.prettyPrintedHtml = html.join('');
                                  -  }
                                  -
                                  -  /** Maps language-specific file extensions to handlers. */
                                  -  var langHandlerRegistry = {};
                                  -  /** Register a language handler for the given file extensions.
                                  -    * @param {function (Object)} handler a function from source code to a list
                                  -    *      of decorations.  Takes a single argument job which describes the
                                  -    *      state of the computation.   The single parameter has the form
                                  -    *      {@code {
                                  -    *        source: {string} as plain text.
                                  -    *        decorations: {Array.<number|string>} an array of style classes
                                  -    *                     preceded by the position at which they start in
                                  -    *                     job.source in order.
                                  -    *                     The language handler should assigned this field.
                                  -    *        basePos: {int} the position of source in the larger source chunk.
                                  -    *                 All positions in the output decorations array are relative
                                  -    *                 to the larger source chunk.
                                  -    *      } }
                                  -    * @param {Array.<string>} fileExtensions
                                  -    */
                                  -  function registerLangHandler(handler, fileExtensions) {
                                  -    for (var i = fileExtensions.length; --i >= 0;) {
                                  -      var ext = fileExtensions[i];
                                  -      if (!langHandlerRegistry.hasOwnProperty(ext)) {
                                  -        langHandlerRegistry[ext] = handler;
                                  -      } else if ('console' in window) {
                                  -        console.warn('cannot override language handler %s', ext);
                                  -      }
                                  -    }
                                  -  }
                                  -  function langHandlerForExtension(extension, source) {
                                  -    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
                                  -      // Treat it as markup if the first non whitespace character is a < and
                                  -      // the last non-whitespace character is a >.
                                  -      extension = /^\s*</.test(source)
                                  -          ? 'default-markup'
                                  -          : 'default-code';
                                  -    }
                                  -    return langHandlerRegistry[extension];
                                  -  }
                                  -  registerLangHandler(decorateSource, ['default-code']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer(
                                  -          [],
                                  -          [
                                  -           [PR_PLAIN,       /^[^<?]+/],
                                  -           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
                                  -           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
                                  -           // Unescaped content in an unknown language
                                  -           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
                                  -           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
                                  -           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
                                  -           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
                                  -           // Unescaped content in javascript.  (Or possibly vbscript).
                                  -           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
                                  -           // Contains unescaped stylesheet content
                                  -           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
                                  -           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
                                  -          ]),
                                  -      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer(
                                  -          [
                                  -           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
                                  -           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
                                  -           ],
                                  -          [
                                  -           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
                                  -           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
                                  -           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
                                  -           [PR_PUNCTUATION,  /^[=<>\/]+/],
                                  -           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
                                  -           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
                                  -           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
                                  -           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
                                  -           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
                                  -           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
                                  -           ]),
                                  -      ['in.tag']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': CPP_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'cStyleComments': true
                                  -        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': 'null true false'
                                  -        }), ['json']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': CSHARP_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'cStyleComments': true,
                                  -          'verbatimStrings': true
                                  -        }), ['cs']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': JAVA_KEYWORDS,
                                  -          'cStyleComments': true
                                  -        }), ['java']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': SH_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true
                                  -        }), ['bsh', 'csh', 'sh']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': PYTHON_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'tripleQuotedStrings': true
                                  -        }), ['cv', 'py']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': PERL_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'regexLiterals': true
                                  -        }), ['perl', 'pl', 'pm']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': RUBY_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'regexLiterals': true
                                  -        }), ['rb']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': JSCRIPT_KEYWORDS,
                                  -          'cStyleComments': true,
                                  -          'regexLiterals': true
                                  -        }), ['js']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
                                  -
                                  -  function applyDecorator(job) {
                                  -    var sourceCodeHtml = job.sourceCodeHtml;
                                  -    var opt_langExtension = job.langExtension;
                                  -
                                  -    // Prepopulate output in case processing fails with an exception.
                                  -    job.prettyPrintedHtml = sourceCodeHtml;
                                  -
                                  -    try {
                                  -      // Extract tags, and convert the source code to plain text.
                                  -      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
                                  -      /** Plain text. @type {string} */
                                  -      var source = sourceAndExtractedTags.source;
                                  -      job.source = source;
                                  -      job.basePos = 0;
                                  -
                                  -      /** Even entries are positions in source in ascending order.  Odd entries
                                  -        * are tags that were extracted at that position.
                                  -        * @type {Array.<number|string>}
                                  -        */
                                  -      job.extractedTags = sourceAndExtractedTags.tags;
                                  -
                                  -      // Apply the appropriate language handler
                                  -      langHandlerForExtension(opt_langExtension, source)(job);
                                  -      // Integrate the decorations and tags back into the source code to produce
                                  -      // a decorated html string which is left in job.prettyPrintedHtml.
                                  -      recombineTagsAndDecorations(job);
                                  -    } catch (e) {
                                  -      if ('console' in window) {
                                  -        console.log(e);
                                  -        console.trace();
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
                                  -    var job = {
                                  -      sourceCodeHtml: sourceCodeHtml,
                                  -      langExtension: opt_langExtension
                                  -    };
                                  -    applyDecorator(job);
                                  -    return job.prettyPrintedHtml;
                                  -  }
                                  -
                                  -  function prettyPrint(opt_whenDone) {
                                  -    var isIE678 = window['_pr_isIE6']();
                                  -    var ieNewline = isIE678 === 6 ? '\r\n' : '\r';
                                  -    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
                                  -
                                  -    // fetch a list of nodes to rewrite
                                  -    var codeSegments = [
                                  -        document.getElementsByTagName('pre'),
                                  -        document.getElementsByTagName('code'),
                                  -        document.getElementsByTagName('xmp') ];
                                  -    var elements = [];
                                  -    for (var i = 0; i < codeSegments.length; ++i) {
                                  -      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
                                  -        elements.push(codeSegments[i][j]);
                                  -      }
                                  -    }
                                  -    codeSegments = null;
                                  -
                                  -    var clock = Date;
                                  -    if (!clock['now']) {
                                  -      clock = { 'now': function () { return (new Date).getTime(); } };
                                  -    }
                                  -
                                  -    // The loop is broken into a series of continuations to make sure that we
                                  -    // don't make the browser unresponsive when rewriting a large page.
                                  -    var k = 0;
                                  -    var prettyPrintingJob;
                                  -
                                  -    function doWork() {
                                  -      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
                                  -                     clock.now() + 250 /* ms */ :
                                  -                     Infinity);
                                  -      for (; k < elements.length && clock.now() < endTime; k++) {
                                  -        var cs = elements[k];
                                  -        if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
                                  -          // If the classes includes a language extensions, use it.
                                  -          // Language extensions can be specified like
                                  -          //     <pre class="prettyprint lang-cpp">
                                  -          // the language extension "cpp" is used to find a language handler as
                                  -          // passed to PR_registerLangHandler.
                                  -          var langExtension = cs.className.match(/\blang-(\w+)\b/);
                                  -          if (langExtension) { langExtension = langExtension[1]; }
                                  -
                                  -          // make sure this is not nested in an already prettified element
                                  -          var nested = false;
                                  -          for (var p = cs.parentNode; p; p = p.parentNode) {
                                  -            if ((p.tagName === 'pre' || p.tagName === 'code' ||
                                  -                 p.tagName === 'xmp') &&
                                  -                p.className && p.className.indexOf('prettyprint') >= 0) {
                                  -              nested = true;
                                  -              break;
                                  -            }
                                  -          }
                                  -          if (!nested) {
                                  -            // fetch the content as a snippet of properly escaped HTML.
                                  -            // Firefox adds newlines at the end.
                                  -            var content = getInnerHtml(cs);
                                  -            content = content.replace(/(?:\r\n?|\n)$/, '');
                                  -
                                  -            // do the pretty printing
                                  -            prettyPrintingJob = {
                                  -              sourceCodeHtml: content,
                                  -              langExtension: langExtension,
                                  -              sourceNode: cs
                                  -            };
                                  -            applyDecorator(prettyPrintingJob);
                                  -            replaceWithPrettyPrintedHtml();
                                  -          }
                                  -        }
                                  -      }
                                  -      if (k < elements.length) {
                                  -        // finish up in a continuation
                                  -        setTimeout(doWork, 250);
                                  -      } else if (opt_whenDone) {
                                  -        opt_whenDone();
                                  -      }
                                  -    }
                                  -
                                  -    function replaceWithPrettyPrintedHtml() {
                                  -      var newContent = prettyPrintingJob.prettyPrintedHtml;
                                  -      if (!newContent) { return; }
                                  -      var cs = prettyPrintingJob.sourceNode;
                                  -
                                  -      // push the prettified html back into the tag.
                                  -      if (!isRawContent(cs)) {
                                  -        // just replace the old html with the new
                                  -        cs.innerHTML = newContent;
                                  -      } else {
                                  -        // we need to change the tag to a <pre> since <xmp>s do not allow
                                  -        // embedded tags such as the span tags used to attach styles to
                                  -        // sections of source code.
                                  -        var pre = document.createElement('PRE');
                                  -        for (var i = 0; i < cs.attributes.length; ++i) {
                                  -          var a = cs.attributes[i];
                                  -          if (a.specified) {
                                  -            var aname = a.name.toLowerCase();
                                  -            if (aname === 'class') {
                                  -              pre.className = a.value;  // For IE 6
                                  -            } else {
                                  -              pre.setAttribute(a.name, a.value);
                                  -            }
                                  -          }
                                  -        }
                                  -        pre.innerHTML = newContent;
                                  -
                                  -        // remove the old
                                  -        cs.parentNode.replaceChild(pre, cs);
                                  -        cs = pre;
                                  -      }
                                  -
                                  -      // Replace <br>s with line-feeds so that copying and pasting works
                                  -      // on IE 6.
                                  -      // Doing this on other browsers breaks lots of stuff since \r\n is
                                  -      // treated as two newlines on Firefox, and doing this also slows
                                  -      // down rendering.
                                  -      if (isIE678 && cs.tagName === 'PRE') {
                                  -        var lineBreaks = cs.getElementsByTagName('br');
                                  -        for (var j = lineBreaks.length; --j >= 0;) {
                                  -          var lineBreak = lineBreaks[j];
                                  -          lineBreak.parentNode.replaceChild(
                                  -              document.createTextNode(ieNewline), lineBreak);
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    doWork();
                                  -  }
                                  -
                                  -  window['PR_normalizedHtml'] = normalizedHtml;
                                  -  window['prettyPrintOne'] = prettyPrintOne;
                                  -  window['prettyPrint'] = prettyPrint;
                                  -  window['PR'] = {
                                  -        'combinePrefixPatterns': combinePrefixPatterns,
                                  -        'createSimpleLexer': createSimpleLexer,
                                  -        'registerLangHandler': registerLangHandler,
                                  -        'sourceDecorator': sourceDecorator,
                                  -        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
                                  -        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
                                  -        'PR_COMMENT': PR_COMMENT,
                                  -        'PR_DECLARATION': PR_DECLARATION,
                                  -        'PR_KEYWORD': PR_KEYWORD,
                                  -        'PR_LITERAL': PR_LITERAL,
                                  -        'PR_NOCODE': PR_NOCODE,
                                  -        'PR_PLAIN': PR_PLAIN,
                                  -        'PR_PUNCTUATION': PR_PUNCTUATION,
                                  -        'PR_SOURCE': PR_SOURCE,
                                  -        'PR_STRING': PR_STRING,
                                  -        'PR_TAG': PR_TAG,
                                  -        'PR_TYPE': PR_TYPE
                                  -      };
                                  -})();
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype1.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  deleted file mode 100644
                                  index 56567816..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" src="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="zfulljslint2.js"></script>
                                  -<script type="text/javascript" src="TokenReader5.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -window.onload = function()
                                  -{
                                  -    TokenReader.parseFile("../../../build/syntax-test2.js");
                                  -    //TokenReader.parseFile("../../../build/firebug-lite-beta.js");
                                  -    //console.log(TokenReader.parseFile(window.location.href))
                                  -}
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="out">Hi
                                  -  </div>
                                  -  
                                  -  <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  deleted file mode 100644
                                  index beba30d5..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  +++ /dev/null
                                  @@ -1,159 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="TokenReader9.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -debugger;
                                  -    parseTricker=parseFile(sourceText);
                                  -    parseTrick();
                                  -    
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2b.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  deleted file mode 100644
                                  index 97904ddb..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="TokenReader9b.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    parseTricker=parseFile(sourceText);
                                  -    parseTrick();
                                  -    
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype3.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  deleted file mode 100644
                                  index 4abc9ed4..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="prettify.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var html = getResource("../../../build/syntax-test1.js");
                                  -    console.time("z");
                                  -    prettyPrintOne(html)
                                  -    console.timeEnd("z");
                                  -}
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="out">Hi
                                  -  </div>
                                  -  
                                  -  <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype4.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  deleted file mode 100644
                                  index 37056bc0..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  +++ /dev/null
                                  @@ -1,262 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    process(sourceText);
                                  -};
                                  -
                                  -
                                  -var process = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -
                                  -    var next = function(){
                                  -        
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            var count = 0;
                                  -    
                                  -            for(;i<length;i++)
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw Interruption;
                                  -                
                                  -                s += text.charAt(i);
                                  -                
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == Interruption)
                                  -            {
                                  -                setTimeout(next, 25);
                                  -            }
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    next();
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  deleted file mode 100644
                                  index a254e339..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            //var ts = new Date().getTime();
                                  -            tokenizer.awake();
                                  -            
                                  -            while(token)
                                  -            {
                                  -                tokenizer.sleep();
                                  -                //if (new Date().getTime() - ts > 50) throw Interruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e instanceof Interruption)
                                  -            {
                                  -                onProgress(e.position, e.total);
                                  -                
                                  -                setTimeout(parse, 25);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var token = next();
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var Interruption = function(position, total)
                                  -{
                                  -    this.position = position;
                                  -    this.total = total;
                                  -}; 
                                  -
                                  -Interruption.prototype = {toString: function() {return "Interruption"}};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -
                                  -    var ts;
                                  -    
                                  -    var self = 
                                  -    {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw new Interruption(i, length);
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                        return s;
                                  -                }
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e instanceof Interruption)
                                  -                {
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    setTimeout(self.next, 25);
                                  -                    
                                  -                    throw Interruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        sleep: function()
                                  -        {
                                  -            if (new Date().getTime() - self.ts > 50) throw new Interruption(i, length);
                                  -        },
                                  -        
                                  -        awake: function()
                                  -        {
                                  -            self.ts = new Date().getTime();
                                  -        }
                                  -    };
                                  -    
                                  -    return self;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5b.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  deleted file mode 100644
                                  index 71c99265..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  +++ /dev/null
                                  @@ -1,381 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            while(hasTokens())
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == ParserInterruption)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    runButton.value = "pause";
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    //throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5c.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  deleted file mode 100644
                                  index 7d8b4ad7..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  +++ /dev/null
                                  @@ -1,396 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            while(hasTokens())
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == ParserInterruption)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    runButton.value = "pause";
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    var scope = {
                                  -        text: sourceText,
                                  -        i:  0,
                                  -        s:  "",
                                  -        length:  sourceText.length,
                                  -        count: 0,
                                  -        running: true
                                  -    };
                                  -    
                                  -    with (scope) {
                                  -    
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    /*
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    /**/
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    //throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    }
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype6.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  deleted file mode 100644
                                  index 53731420..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  +++ /dev/null
                                  @@ -1,324 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            for(;;)
                                  -            {
                                  -                token = next();
                                  -                
                                  -                if (tokenizer.eof) break;
                                  -                
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //if (e == ParserInterruption)
                                  -            //{
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            //}
                                  -        }
                                  -    };
                                  -    
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressText = document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.value = "pause";
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var running = true;
                                  -    var ts = new Date().getTime();
                                  -    
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                tokenizer.eof = true;
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype7.html b/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  deleted file mode 100644
                                  index 4a308844..00000000
                                  --- a/branches/firebug1.5/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  +++ /dev/null
                                  @@ -1,325 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -/*
                                  -
                                  -pause
                                  -resume
                                  -stop?
                                  -sleep(ms)
                                  -
                                  -awake
                                  -
                                  -
                                  -*/
                                  -
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var InterruptionEvent = Interruption;
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            for(;;)
                                  -            {
                                  -                token = next();
                                  -                
                                  -                if (tokenizer.eof) break;
                                  -                
                                  -                if (new Date().getTime() - ts > 50) throw InterruptionEvent;
                                  -            }
                                  -            
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == InterruptionEvent)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressText = document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.value = "pause";
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var running = true;
                                  -    var ts = new Date().getTime();
                                  -    
                                  -    parse();
                                  -};
                                  -
                                  -var Interruption = {toString: function(){return "Interruption";}};
                                  -
                                  -var createTokenizer = function(sourceText)
                                  -{
                                  -    var InterruptionEvent = Interruption;
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var iterator = function(){
                                  -        
                                  -        try
                                  -        {
                                  -            var timestamp = new Date().getTime();
                                  -    
                                  -            for(;i<length;)
                                  -            {
                                  -                s += text.charAt(i);
                                  -                
                                  -                if (++count % 1000 == 0)
                                  -                {
                                  -                    var r = s;
                                  -                    s = "";
                                  -                    i++;
                                  -                    return r;
                                  -                }
                                  -                
                                  -                i++;
                                  -                
                                  -                if (new Date().getTime() - timestamp > 50) throw InterruptionEvent;
                                  -            }
                                  -            
                                  -            running = false;
                                  -            tokenizer.eof = true;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == InterruptionEvent)
                                  -            {
                                  -                throw InterruptionEvent;
                                  -            }
                                  -        }
                                  -
                                  -    };
                                  -    
                                  -    var tokenizer = {
                                  -
                                  -        eof: false,
                                  -        
                                  -        next: iterator,
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/skin/classic/blank.gif b/branches/firebug1.5/skin/classic/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/blank.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/buttonBg.png b/branches/firebug1.5/skin/classic/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/buttonBg.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/buttonBgHover.png b/branches/firebug1.5/skin/classic/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/detach.png b/branches/firebug1.5/skin/classic/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/detach.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/detachHover.png b/branches/firebug1.5/skin/classic/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/detachHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/disable.gif b/branches/firebug1.5/skin/classic/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/disable.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/disable.png b/branches/firebug1.5/skin/classic/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/disable.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/disableHover.gif b/branches/firebug1.5/skin/classic/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/disableHover.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/disableHover.png b/branches/firebug1.5/skin/classic/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/disableHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/down.png b/branches/firebug1.5/skin/classic/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/down.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/downActive.png b/branches/firebug1.5/skin/classic/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/downActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/downHover.png b/branches/firebug1.5/skin/classic/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/downHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/errorIcon-sm.png b/branches/firebug1.5/skin/classic/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/errorIcon.gif b/branches/firebug1.5/skin/classic/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/errorIcon.png b/branches/firebug1.5/skin/classic/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/errorIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/firebug.css b/branches/firebug1.5/skin/classic/firebug.css
                                  deleted file mode 100644
                                  index 004925f8..00000000
                                  --- a/branches/firebug1.5/skin/classic/firebug.css
                                  +++ /dev/null
                                  @@ -1,3063 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -    font: message-box;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 6px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #d4d0c8 0 0;
                                  -    height: 28px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #d4d0c8 #fff #d4d0c8 #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 8px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #D4D0C8 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #D4D0C8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #d4d0c8 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #d4d0c8;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 28px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/firebug1.5/skin/classic/firebug.html b/branches/firebug1.5/skin/classic/firebug.html
                                  deleted file mode 100644
                                  index 4432a325..00000000
                                  --- a/branches/firebug1.5/skin/classic/firebug.html
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/skin/classic/firebug.png b/branches/firebug1.5/skin/classic/firebug.png
                                  deleted file mode 100644
                                  index 123545a1..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/firebug.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/group.gif b/branches/firebug1.5/skin/classic/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/group.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/infoIcon.gif b/branches/firebug1.5/skin/classic/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/infoIcon.png b/branches/firebug1.5/skin/classic/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/infoIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/loading_16.gif b/branches/firebug1.5/skin/classic/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/loading_16.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/min.png b/branches/firebug1.5/skin/classic/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/min.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/minHover.png b/branches/firebug1.5/skin/classic/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/minHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/off.png b/branches/firebug1.5/skin/classic/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/off.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/offHover.png b/branches/firebug1.5/skin/classic/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/offHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/pixel_transparent.gif b/branches/firebug1.5/skin/classic/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/roundCorner.svg b/branches/firebug1.5/skin/classic/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/firebug1.5/skin/classic/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/firebug1.5/skin/classic/search.gif b/branches/firebug1.5/skin/classic/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/search.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/search.png b/branches/firebug1.5/skin/classic/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/search.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/shadow.gif b/branches/firebug1.5/skin/classic/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/shadow.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/shadow2.gif b/branches/firebug1.5/skin/classic/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/shadow2.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/shadowAlpha.png b/branches/firebug1.5/skin/classic/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/sprite.png b/branches/firebug1.5/skin/classic/sprite.png
                                  deleted file mode 100644
                                  index 3fe97bb6..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/sprite.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabHoverLeft.png b/branches/firebug1.5/skin/classic/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 5852d8d7..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabHoverMid.png b/branches/firebug1.5/skin/classic/tabHoverMid.png
                                  deleted file mode 100644
                                  index e7c9ba75..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabHoverRight.png b/branches/firebug1.5/skin/classic/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3c62c981..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabLeft.png b/branches/firebug1.5/skin/classic/tabLeft.png
                                  deleted file mode 100644
                                  index 3368de73..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMenuCheckbox.png b/branches/firebug1.5/skin/classic/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMenuPin.png b/branches/firebug1.5/skin/classic/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMenuRadio.png b/branches/firebug1.5/skin/classic/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMenuTarget.png b/branches/firebug1.5/skin/classic/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMenuTargetHover.png b/branches/firebug1.5/skin/classic/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabMid.png b/branches/firebug1.5/skin/classic/tabMid.png
                                  deleted file mode 100644
                                  index b2cfeac5..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tabRight.png b/branches/firebug1.5/skin/classic/tabRight.png
                                  deleted file mode 100644
                                  index 8470a95e..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tabRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/textEditorBorders.gif b/branches/firebug1.5/skin/classic/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/textEditorBorders.png b/branches/firebug1.5/skin/classic/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/textEditorCorners.gif b/branches/firebug1.5/skin/classic/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/textEditorCorners.png b/branches/firebug1.5/skin/classic/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/titlebarMid.png b/branches/firebug1.5/skin/classic/titlebarMid.png
                                  deleted file mode 100644
                                  index e9a74163..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/toolbarMid.png b/branches/firebug1.5/skin/classic/toolbarMid.png
                                  deleted file mode 100644
                                  index a1257f52..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tree_close.gif b/branches/firebug1.5/skin/classic/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tree_close.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/tree_open.gif b/branches/firebug1.5/skin/classic/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/tree_open.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/twistyClosed.png b/branches/firebug1.5/skin/classic/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/twistyOpen.png b/branches/firebug1.5/skin/classic/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/up.png b/branches/firebug1.5/skin/classic/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/up.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/upActive.png b/branches/firebug1.5/skin/classic/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/upActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/upHover.png b/branches/firebug1.5/skin/classic/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/upHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/warningIcon.gif b/branches/firebug1.5/skin/classic/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/classic/warningIcon.png b/branches/firebug1.5/skin/classic/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/firebug1.5/skin/classic/warningIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/blank.gif b/branches/firebug1.5/skin/light/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/light/blank.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/buttonBg.png b/branches/firebug1.5/skin/light/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/firebug1.5/skin/light/buttonBg.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/buttonBgHover.png b/branches/firebug1.5/skin/light/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/firebug1.5/skin/light/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/close.png b/branches/firebug1.5/skin/light/close.png
                                  deleted file mode 100644
                                  index ada59d8a..00000000
                                  Binary files a/branches/firebug1.5/skin/light/close.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/closeHover.png b/branches/firebug1.5/skin/light/closeHover.png
                                  deleted file mode 100644
                                  index be0145d2..00000000
                                  Binary files a/branches/firebug1.5/skin/light/closeHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/detach.png b/branches/firebug1.5/skin/light/detach.png
                                  deleted file mode 100644
                                  index 25d97e03..00000000
                                  Binary files a/branches/firebug1.5/skin/light/detach.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/detachHover.png b/branches/firebug1.5/skin/light/detachHover.png
                                  deleted file mode 100644
                                  index edb81253..00000000
                                  Binary files a/branches/firebug1.5/skin/light/detachHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/disable.gif b/branches/firebug1.5/skin/light/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/firebug1.5/skin/light/disable.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/disable.png b/branches/firebug1.5/skin/light/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/firebug1.5/skin/light/disable.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/disableHover.gif b/branches/firebug1.5/skin/light/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/firebug1.5/skin/light/disableHover.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/disableHover.png b/branches/firebug1.5/skin/light/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/firebug1.5/skin/light/disableHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/down.png b/branches/firebug1.5/skin/light/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/firebug1.5/skin/light/down.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/downActive.png b/branches/firebug1.5/skin/light/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/firebug1.5/skin/light/downActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/downHover.png b/branches/firebug1.5/skin/light/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/firebug1.5/skin/light/downHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/errorIcon-sm.png b/branches/firebug1.5/skin/light/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/firebug1.5/skin/light/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/errorIcon.gif b/branches/firebug1.5/skin/light/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/firebug1.5/skin/light/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/errorIcon.png b/branches/firebug1.5/skin/light/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/firebug1.5/skin/light/errorIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/firebug.css b/branches/firebug1.5/skin/light/firebug.css
                                  deleted file mode 100644
                                  index 7af18e64..00000000
                                  --- a/branches/firebug1.5/skin/light/firebug.css
                                  +++ /dev/null
                                  @@ -1,3063 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -    font: message-box;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 5px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #eee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    height: 23px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 7px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    height: 23px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #EEEEEE;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 23px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 23px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #EEEEEE 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #eee;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/firebug1.5/skin/light/firebug.html b/branches/firebug1.5/skin/light/firebug.html
                                  deleted file mode 100644
                                  index 4432a325..00000000
                                  --- a/branches/firebug1.5/skin/light/firebug.html
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/skin/light/firebug.png b/branches/firebug1.5/skin/light/firebug.png
                                  deleted file mode 100644
                                  index 338dc5a1..00000000
                                  Binary files a/branches/firebug1.5/skin/light/firebug.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/group.gif b/branches/firebug1.5/skin/light/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/firebug1.5/skin/light/group.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/infoIcon.gif b/branches/firebug1.5/skin/light/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/firebug1.5/skin/light/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/infoIcon.png b/branches/firebug1.5/skin/light/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/firebug1.5/skin/light/infoIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/loading_16.gif b/branches/firebug1.5/skin/light/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/firebug1.5/skin/light/loading_16.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/min.png b/branches/firebug1.5/skin/light/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/firebug1.5/skin/light/min.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/minHover.png b/branches/firebug1.5/skin/light/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/firebug1.5/skin/light/minHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/off.png b/branches/firebug1.5/skin/light/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/firebug1.5/skin/light/off.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/offHover.png b/branches/firebug1.5/skin/light/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/firebug1.5/skin/light/offHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/pixel_transparent.gif b/branches/firebug1.5/skin/light/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/light/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/roundCorner.svg b/branches/firebug1.5/skin/light/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/firebug1.5/skin/light/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/firebug1.5/skin/light/search.gif b/branches/firebug1.5/skin/light/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/firebug1.5/skin/light/search.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/search.png b/branches/firebug1.5/skin/light/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/firebug1.5/skin/light/search.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/shadow.gif b/branches/firebug1.5/skin/light/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/firebug1.5/skin/light/shadow.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/shadow2.gif b/branches/firebug1.5/skin/light/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/firebug1.5/skin/light/shadow2.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/shadowAlpha.png b/branches/firebug1.5/skin/light/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/firebug1.5/skin/light/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/sprite.png b/branches/firebug1.5/skin/light/sprite.png
                                  deleted file mode 100644
                                  index d117e123..00000000
                                  Binary files a/branches/firebug1.5/skin/light/sprite.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabHoverLeft.png b/branches/firebug1.5/skin/light/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 708215d2..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabHoverMid.png b/branches/firebug1.5/skin/light/tabHoverMid.png
                                  deleted file mode 100644
                                  index 6ff9a864..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabHoverRight.png b/branches/firebug1.5/skin/light/tabHoverRight.png
                                  deleted file mode 100644
                                  index 9f02130d..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabLeft.png b/branches/firebug1.5/skin/light/tabLeft.png
                                  deleted file mode 100644
                                  index 8c502135..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMenuCheckbox.png b/branches/firebug1.5/skin/light/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMenuPin.png b/branches/firebug1.5/skin/light/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMenuRadio.png b/branches/firebug1.5/skin/light/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMenuTarget.png b/branches/firebug1.5/skin/light/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMenuTargetHover.png b/branches/firebug1.5/skin/light/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabMid.png b/branches/firebug1.5/skin/light/tabMid.png
                                  deleted file mode 100644
                                  index 0a00b60d..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tabRight.png b/branches/firebug1.5/skin/light/tabRight.png
                                  deleted file mode 100644
                                  index b43c352d..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tabRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/textEditorBorders.gif b/branches/firebug1.5/skin/light/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/firebug1.5/skin/light/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/textEditorBorders.png b/branches/firebug1.5/skin/light/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/firebug1.5/skin/light/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/textEditorCorners.gif b/branches/firebug1.5/skin/light/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/firebug1.5/skin/light/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/textEditorCorners.png b/branches/firebug1.5/skin/light/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/firebug1.5/skin/light/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/titlebarMid.png b/branches/firebug1.5/skin/light/titlebarMid.png
                                  deleted file mode 100644
                                  index 5fc63e79..00000000
                                  Binary files a/branches/firebug1.5/skin/light/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/toolbarMid.png b/branches/firebug1.5/skin/light/toolbarMid.png
                                  deleted file mode 100644
                                  index 8520aab2..00000000
                                  Binary files a/branches/firebug1.5/skin/light/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tree_close.gif b/branches/firebug1.5/skin/light/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tree_close.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/tree_open.gif b/branches/firebug1.5/skin/light/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/firebug1.5/skin/light/tree_open.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/twistyClosed.png b/branches/firebug1.5/skin/light/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/firebug1.5/skin/light/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/twistyOpen.png b/branches/firebug1.5/skin/light/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/firebug1.5/skin/light/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/up.png b/branches/firebug1.5/skin/light/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/firebug1.5/skin/light/up.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/upActive.png b/branches/firebug1.5/skin/light/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/firebug1.5/skin/light/upActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/upHover.png b/branches/firebug1.5/skin/light/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/firebug1.5/skin/light/upHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/warningIcon.gif b/branches/firebug1.5/skin/light/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/firebug1.5/skin/light/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/light/warningIcon.png b/branches/firebug1.5/skin/light/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/firebug1.5/skin/light/warningIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/blank.gif b/branches/firebug1.5/skin/xp/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/blank.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/buttonBg.png b/branches/firebug1.5/skin/xp/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/buttonBg.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/buttonBgHover.png b/branches/firebug1.5/skin/xp/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/debugger.css b/branches/firebug1.5/skin/xp/debugger.css
                                  deleted file mode 100644
                                  index ba55c7ea..00000000
                                  --- a/branches/firebug1.5/skin/xp/debugger.css
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-script {
                                  -    overflow: hidden;
                                  -    font-family: monospace;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.scriptTooltip {
                                  -    position: fixed;
                                  -    z-index: 2147483647;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceBox {
                                  -    /* TODO: xxxpedro problem with sourceBox and scrolling elements */
                                  -    /*overflow: scroll; /* see issue 1479 */
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    white-space: nowrap;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceLine {
                                  -    -moz-user-select: none;
                                  -    margin-right: 10px;
                                  -    border-right: 1px solid #CCCCCC;
                                  -    padding: 0px 4px 0 20px;
                                  -    background: #EEEEEE no-repeat 2px 0px;
                                  -    color: #888888;
                                  -    white-space: pre;
                                  -    font-family: monospace; /* see issue 2953 */
                                  -}
                                  -
                                  -.noteInToolTip { /* below sourceLine, so it overrides it */
                                  -    background-color: #FFD472;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus .sourceLine {
                                  -    background-color: #FFFFC0;
                                  -    color: navy;
                                  -    border-right: 1px solid black;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -.a11y1emSize {
                                  -    width: 1em;
                                  -    height: 1em;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.useA11y .panelStatusLabel:focus {
                                  -    outline-offset: -2px !important;
                                  - }
                                  -
                                  -.sourceBox > .sourceRow > .sourceLine {
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.sourceLine:hover {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.sourceRowText {
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] {
                                  -    outline: 1px solid #D9D9B6;
                                  -    margin-right: 1px;
                                  -    background-color: lightgoldenrodyellow;
                                  -}
                                  -
                                  -.sourceRow[executable="true"] > .sourceLine {
                                  -    content: "-";
                                  -    color: #4AA02C;  /* Spring Green */
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/exe.png);
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointCondition.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointExe.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabledExe.png);
                                  -}
                                  -
                                  -.sourceLine.editing {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.conditionEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    margin-top: 0;
                                  -    left: 2px;
                                  -    width: 90%;
                                  -}
                                  -
                                  -.conditionEditorInner {
                                  -    position: relative;
                                  -    top: -26px;
                                  -    height: 0;
                                  -}
                                  -
                                  -.conditionCaption {
                                  -    margin-bottom: 2px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    font-size: 11px;
                                  -    color: #226679;
                                  -}
                                  -
                                  -.conditionInput {
                                  -    width: 100%;
                                  -    border: 1px solid #0096C0;
                                  -    font-family: monospace;
                                  -    font-size: inherit;
                                  -}
                                  -
                                  -.conditionEditorInner1 {
                                  -    padding-left: 37px;
                                  -    background: url(condBorders.png) repeat-y;
                                  -}
                                  -
                                  -.conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBorders.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.conditionEditorTop1 {
                                  -    background: url(condCorners.png) no-repeat 100% 0;
                                  -    margin-left: 37px;
                                  -    height: 35px;
                                  -}
                                  -
                                  -.conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -37px;
                                  -    width: 37px;
                                  -    height: 35px;
                                  -    background: url(condCorners.png) no-repeat;
                                  -}
                                  -
                                  -.conditionEditorBottom1 {
                                  -    background: url(condCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 37px;
                                  -    height: 33px;
                                  -}
                                  -
                                  -.conditionEditorBottom2 {
                                  -    position: relative;    left: -37px;
                                  -    width: 37px;
                                  -    height: 33px;
                                  -    background: url(condCorners.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.upsideDown {
                                  -    margin-top: 2px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner {
                                  -    top: -8px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner1 {
                                  -    padding-left: 33px;
                                  -    background: url(condBordersUps.png) repeat-y;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBordersUps.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 0;
                                  -    margin-left: 33px;
                                  -    height: 25px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 25px;
                                  -    background: url(condCornersUps.png) no-repeat;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 100%;
                                  -    margin-left: 33px;
                                  -    height: 43px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 43px;
                                  -    background: url(condCornersUps.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointsGroupListBox {
                                  -  overflow: hidden;
                                  -}
                                  -
                                  -.breakpointBlockHead {
                                  -    position: relative;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .checkbox {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .objectLink-sourceLink {
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    background-color: #FFFFFF; /* issue 3308 */
                                  -}
                                  -
                                  -.breakpointBlockHead > .closeButton {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 2px;
                                  -}
                                  -
                                  -.breakpointCheckbox {
                                  -    margin-top: 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.breakpointName {
                                  -    margin-left: 4px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] > .breakpointBlockHead > *,
                                  -.breakpointRow[aria-checked="false"] > .breakpointCode {
                                  -    opacity: 0.5;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] .breakpointCheckbox,
                                  -.breakpointRow[aria-checked="false"] .objectLink-sourceLink,
                                  -.breakpointRow[aria-checked="false"] .closeButton,
                                  -.breakpointRow[aria-checked="false"] .breakpointMutationType {
                                  -    opacity: 1.0 !important;
                                  -}
                                  -
                                  -.breakpointCode {
                                  -    overflow: hidden;
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.breakpointCondition {
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: Gray;
                                  -}
                                  -
                                  -.breakpointBlock-breakpoints > .groupHeader {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointBlock-monitors > .breakpointCode {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.breakpointBlock-errorBreakpoints .breakpointCheckbox,
                                  -.breakpointBlock-monitors .breakpointCheckbox {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointHeader {
                                  -    margin: 0 !important;
                                  -    border-top: none !important;
                                  -}
                                  diff --git a/branches/firebug1.5/skin/xp/detach.png b/branches/firebug1.5/skin/xp/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/detach.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/detachHover.png b/branches/firebug1.5/skin/xp/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/detachHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/disable.gif b/branches/firebug1.5/skin/xp/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/disable.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/disable.png b/branches/firebug1.5/skin/xp/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/disable.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/disableHover.gif b/branches/firebug1.5/skin/xp/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/disableHover.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/disableHover.png b/branches/firebug1.5/skin/xp/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/disableHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/down.png b/branches/firebug1.5/skin/xp/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/down.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/downActive.png b/branches/firebug1.5/skin/xp/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/downActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/downHover.png b/branches/firebug1.5/skin/xp/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/downHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/errorIcon-sm.png b/branches/firebug1.5/skin/xp/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/errorIcon.gif b/branches/firebug1.5/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/errorIcon.png b/branches/firebug1.5/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/firebug-1.3a2.css b/branches/firebug1.5/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index b5dd5dde..00000000
                                  --- a/branches/firebug1.5/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/firebug1.5/skin/xp/firebug.IE6.css b/branches/firebug1.5/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/branches/firebug1.5/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/branches/firebug1.5/skin/xp/firebug.png b/branches/firebug1.5/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/group.gif b/branches/firebug1.5/skin/xp/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/group.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/html.css b/branches/firebug1.5/skin/xp/html.css
                                  deleted file mode 100644
                                  index 9d0afb50..00000000
                                  --- a/branches/firebug1.5/skin/xp/html.css
                                  +++ /dev/null
                                  @@ -1,272 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-html {
                                  -    -moz-box-sizing: padding-box;
                                  -    padding: 4px 0 0 2px;
                                  -}
                                  -
                                  -.nodeBox {
                                  -    position: relative;
                                  -    font-family: Monaco, monospace;
                                  -    padding-left: 13px;
                                  -    -moz-user-select: -moz-none;
                                  -}
                                  -.nodeBox.search-selection {
                                  -    -moz-user-select: text;
                                  -}
                                  -.twisty {
                                  -    position: absolute;
                                  -    left: 0px;
                                  -    top: 0px;
                                  -    width: 14px;
                                  -    height: 14px;
                                  -}
                                  -
                                  -.nodeChildBox {
                                  -    margin-left: 12px;
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeLabel,
                                  -.nodeCloseLabel {
                                  -    margin: -2px 2px 0 2px;
                                  -    border: 2px solid transparent;
                                  -    -moz-border-radius: 3px;
                                  -    padding: 0 2px;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeCloseLabel {
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,
                                  -.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeWhiteSpace {
                                  -    border: 1px solid LightGray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -.nodeWhiteSpace_Space {
                                  -    border: 1px solid #ddd;
                                  -}
                                  -
                                  -.nodeTextEntity {
                                  -    border: 1px solid gray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlightOpen > .nodeLabel {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -.nodeBox.highlightOpen > .nodeCloseLabel,
                                  -.nodeBox.highlightOpen > .nodeChildBox,
                                  -.nodeBox.open > .nodeCloseLabel,
                                  -.nodeBox.open > .nodeChildBox {
                                  -    display: block;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel {
                                  -    border-color: Highlight;
                                  -    background-color: Highlight;
                                  -    color: HighlightText !important;
                                  -}
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: inherit !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlighted > .nodeLabel {
                                  -    border-color: Highlight !important;
                                  -    background-color: cyan !important;
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden .nodeCloseLabel,
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
                                  -.nodeBox.nodeHidden .nodeText {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.mutated > .nodeLabel,
                                  -.nodeAttr.mutated,
                                  -.nodeValue.mutated,
                                  -.nodeText.mutated,
                                  -.nodeBox.mutated > .nodeText {
                                  -    background-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -.nodeBox.selected.mutated > .nodeLabel,
                                  -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
                                  -    background-color: #EFFF79;
                                  -    border-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-dirxml {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.soloElement > .nodeBox  {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.useA11y .nodeLabel.focused {
                                  -    outline: 2px solid #FF9933;
                                  -    -moz-outline-radius: 3px;
                                  -    outline-offset: -2px;
                                  -}
                                  -
                                  -.useA11y .nodeLabelBox:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointCode .twisty {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointCode .nodeBox.containerNodeBox,
                                  -.breakpointCode .nodeLabel {
                                  -    padding-left: 0px;
                                  -    margin-left: 0px;
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.breakpointCode .nodeTag,
                                  -.breakpointCode .nodeAttr,
                                  -.breakpointCode .nodeText,
                                  -.breakpointCode .nodeValue,
                                  -.breakpointCode .nodeLabel {
                                  -    color: DarkGreen !important;
                                  -}
                                  -
                                  -.breakpointMutationType {
                                  -    position: absolute;
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(twistyClosed.png);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -	min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(twistyOpen.png);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/skin/xp/infoIcon.gif b/branches/firebug1.5/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/infoIcon.png b/branches/firebug1.5/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/loading_16.gif b/branches/firebug1.5/skin/xp/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/loading_16.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/min.png b/branches/firebug1.5/skin/xp/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/min.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/minHover.png b/branches/firebug1.5/skin/xp/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/minHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/off.png b/branches/firebug1.5/skin/xp/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/off.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/offHover.png b/branches/firebug1.5/skin/xp/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/offHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/pixel_transparent.gif b/branches/firebug1.5/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/roundCorner.svg b/branches/firebug1.5/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/firebug1.5/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/firebug1.5/skin/xp/search.gif b/branches/firebug1.5/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/search.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/search.png b/branches/firebug1.5/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/search.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/shadow.gif b/branches/firebug1.5/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/shadow2.gif b/branches/firebug1.5/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/shadowAlpha.png b/branches/firebug1.5/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/sprite.png b/branches/firebug1.5/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabHoverLeft.png b/branches/firebug1.5/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabHoverMid.png b/branches/firebug1.5/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabHoverRight.png b/branches/firebug1.5/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabLeft.png b/branches/firebug1.5/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMenuCheckbox.png b/branches/firebug1.5/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMenuPin.png b/branches/firebug1.5/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMenuRadio.png b/branches/firebug1.5/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMenuTarget.png b/branches/firebug1.5/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMenuTargetHover.png b/branches/firebug1.5/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabMid.png b/branches/firebug1.5/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tabRight.png b/branches/firebug1.5/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/textEditorBorders.gif b/branches/firebug1.5/skin/xp/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/textEditorBorders.png b/branches/firebug1.5/skin/xp/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/textEditorCorners.gif b/branches/firebug1.5/skin/xp/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/textEditorCorners.png b/branches/firebug1.5/skin/xp/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/titlebarMid.png b/branches/firebug1.5/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/toolbarMid.png b/branches/firebug1.5/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tree_close.gif b/branches/firebug1.5/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/tree_open.gif b/branches/firebug1.5/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/twistyClosed.png b/branches/firebug1.5/skin/xp/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/twistyOpen.png b/branches/firebug1.5/skin/xp/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/up.png b/branches/firebug1.5/skin/xp/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/up.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/upActive.png b/branches/firebug1.5/skin/xp/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/upActive.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/upHover.png b/branches/firebug1.5/skin/xp/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/upHover.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/warningIcon.gif b/branches/firebug1.5/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/firebug1.5/skin/xp/warningIcon.png b/branches/firebug1.5/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/firebug1.5/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/branches/firebug1.5/tests/examples/test.txt b/branches/firebug1.5/tests/examples/test.txt
                                  deleted file mode 100644
                                  index 2ae6cf45..00000000
                                  --- a/branches/firebug1.5/tests/examples/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/tests/readme.txt b/branches/firebug1.5/tests/readme.txt
                                  deleted file mode 100644
                                  index 30404ce4..00000000
                                  --- a/branches/firebug1.5/tests/readme.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -TODO
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/.htaccess b/branches/flexBox/build/.htaccess
                                  deleted file mode 100644
                                  index cb38bde8..00000000
                                  --- a/branches/flexBox/build/.htaccess
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -AddType "text/javascript;charset=UTF-8" .jgz .js
                                  -AddEncoding gzip .jgz
                                  -
                                  -<IfModule expires_module>
                                  -    ExpiresActive On
                                  -    ExpiresDefault A86400
                                  -</IfModule>
                                  -
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1.js [L]
                                  -</IfModule>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/build.bat b/branches/flexBox/build/build.bat
                                  deleted file mode 100644
                                  index 6e71c227..00000000
                                  --- a/branches/flexBox/build/build.bat
                                  +++ /dev/null
                                  @@ -1,21 +0,0 @@
                                  -rd firebug-lite /s /q 
                                  -rd pub /s /q 
                                  -
                                  -svn export "../" "./firebug-lite"
                                  -
                                  -md pub
                                  -xcopy ".\firebug-lite\skin\." ".\pub\skin" /s /i
                                  -copy "..\docs\beta\index.html" ".\pub\index.html"
                                  -copy "..\content\changelog.txt" ".\pub"
                                  -copy ".\firebug-lite\build\*.*" ".\pub"
                                  -del ".\pub\*.bat"
                                  -
                                  -tar -cv --file=firebug-lite.tar firebug-lite/*
                                  -gzip -9 < firebug-lite.tar > ./pub/firebug-lite.tar.tgz
                                  -
                                  -del firebug-lite.tar
                                  -
                                  -rd firebug-lite /s /q 
                                  -
                                  -pause
                                  -
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/background.html b/branches/flexBox/build/chrome-extension-beta/background.html
                                  deleted file mode 100644
                                  index ae58fbf9..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/background.html
                                  +++ /dev/null
                                  @@ -1,243 +0,0 @@
                                  -<script>
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -//var bookmarklet = "javascript:(typeof Firebug!='undefined')?Firebug.chrome.toggle():(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');";
                                  -var firebugVersion = "Firebug Lite 1.4.0";
                                  -var extensionURL = chrome.extension.getURL("");
                                  -var isActive = false;
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleIconClick(tab)
                                  -{
                                  -    if (tab.url.indexOf("https://chrome.google.com/webstore") == 0 ||
                                  -        tab.url.indexOf("https://chrome.google.com/extensions") == 0 ||
                                  -        tab.url.indexOf("chrome://") == 0)
                                  -    {
                                  -        alert("Sorry, for security reasons extensions cannot run scripts in this page, "+
                                  -                "which means Firebug Lite can't work here.   :(");
                                  -        
                                  -        return;
                                  -    }
                                  -
                                  -    if (tab.url.indexOf("file:///") == 0)
                                  -    {
                                  -        // TODO: include message here about the problem, and chrome bug
                                  -        //chrome.tabs.update(tab.id, {url: bookmarklet});
                                  -        
                                  -        alert("So, you want to load Firebug Lite in a local file, huh?\n\n" +
                                  -        
                                  -            "Sorry to say but this is a complicated issue... there's a Chrome bug preventing us " +
                                  -            "to load Firebug Lite here, and there's a JavaScript security restriction " +
                                  -            "preventing us to do XHR calls.  :(\n\n" +
                                  -            
                                  -            "You can solve all these problems by using a local web server which is simple to " +
                                  -            "install and is safer for you.   :)\n\n" +
                                  -
                                  -            "If you want to know more about this problem, and how to solve it, please read " +
                                  -            "our FAQ entry for this subject at:\n\n" +
                                  -            "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ"
                                  -        );
                                  -        
                                  -        return;
                                  -    }
                                  -    
                                  -    var isContentScriptActive = false;
                                  -    
                                  -    var tryToActivateFirebug = function(){
                                  -        chrome.tabs.sendRequest( tab.id, {name: "FB_isActive"}, 
                                  -        
                                  -            function(response)
                                  -            {
                                  -                isContentScriptActive = true;
                                  -                
                                  -                if (response.value == "true")
                                  -                {
                                  -                    chrome.tabs.update(tab.id, {url: "javascript:Firebug.chrome.toggle()"});
                                  -                }
                                  -                else
                                  -                {
                                  -                    setActivationStorage(tab);
                                  -                    chrome.tabs.sendRequest(tab.id, {name: "FB_loadFirebug"});
                                  -                }
                                  -            }
                                  -        );
                                  -    };
                                  -
                                  -    var firebugShouldBeLoaded = tab.url.indexOf("https://") == 0 || tab.url.indexOf("http://") == 0;
                                  -
                                  -    tryToActivateFirebug();
                                  -    
                                  -    setTimeout(function(){
                                  -    
                                  -        // the problem of this approach is that if the page does not allow content scripts, like
                                  -        // the Chrome Web Store, it will falsely warn users that reloading the page will complete
                                  -        // the activation process when in the reality it will not. But, the most common case is
                                  -        // when the user just installed Firebug Lite and have other tabs already opened, which
                                  -        // completely ruins the very first experience with using the Firebug Lite extension.
                                  -        if (!isContentScriptActive)
                                  -        {
                                  -        
                                  -            // try again
                                  -            tryToActivateFirebug();
                                  -
                                  -            setTimeout(function(){
                                  -
                                  -                if (!isContentScriptActive)
                                  -                {
                                  -                    //chrome.tabs.update(tab.id, {url: bookmarlet});
                                  -                    //enableBrowserActionIcon();
                                  -                    //setActivationStorage(tab);
                                  -                    
                                  -                    if (firebugShouldBeLoaded)
                                  -                    {
                                  -                        setActivationStorage(tab);
                                  -                        if (confirm("It seems that this page was opened before Firebug Lite was "+
                                  -                              "enabled. It will (hopefully) load after reloading this page.   :)"+
                                  -                              "\n\nPress ok to reload the page now, or cancel to reload it later."))
                                  -                        {
                                  -                            chrome.tabs.update(tab.id, {url: "javascript:window.location.reload()"});
                                  -                        }
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // TODO: add FAQ entry with the problem and point it here
                                  -                        alert("Sorry, Firebug Lite cannot be loaded in this page.   :(\n\nFor "+
                                  -                                "support, please visit:\nhttp://groups.google.com/group/firebug");
                                  -                    }
                                  -                }
                                  -
                                  -            },500);
                                  -
                                  -        }
                                  -        
                                  -    },500);
                                  -};
                                  -
                                  -chrome.browserAction.onClicked.addListener(handleIconClick);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleTabChange(tabId, selectInfo)
                                  -{
                                  -    var isUpdated = false;
                                  -    
                                  -    chrome.tabs.sendRequest(tabId, {name: "FB_isActive"}, 
                                  -    
                                  -        function(response)
                                  -        {
                                  -            isUpdated = true;
                                  -            
                                  -            if (response.value == "true")
                                  -            {
                                  -                enableBrowserActionIcon();
                                  -                isActive = true;
                                  -            }
                                  -            else
                                  -            {
                                  -                disableBrowserActionIcon();
                                  -                isActive = false;
                                  -            }
                                  -        }
                                  -    );
                                  -    
                                  -    setTimeout(function(){
                                  -    
                                  -        chrome.tabs.get(tabId, function(tab){
                                  -        
                                  -            var title = tab.title || "";
                                  -            if (!isUpdated && !title.indexOf("Firebug Lite") == 0)
                                  -            {
                                  -                disableBrowserActionIcon();
                                  -                isActive = false;
                                  -            }
                                  -            
                                  -        });
                                  -           
                                  -    },100);  
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.tabs.onSelectionChanged.addListener(handleTabChange);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleUpdateTab(tabId, updateInfo, tab)
                                  -{
                                  -    if (updateInfo.status == "complete") return;
                                  -    
                                  -    handleTabChange(tabId, updateInfo);
                                  -}
                                  -
                                  -// memory leaking here
                                  -//chrome.tabs.onUpdated.addListener(handleUpdateTab);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.extension.onRequest.addListener
                                  -(
                                  -    function(request, sender, sendResponse)
                                  -    {
                                  -        if (request.name == "FB_enableIcon")
                                  -            enableBrowserActionIcon();
                                  -        
                                  -        else if (request.name == "FB_disableIcon")
                                  -            disableBrowserActionIcon();
                                  -            
                                  -        else if (request.name == "FB_deactivate")
                                  -        {
                                  -            disableBrowserActionIcon();
                                  -            chrome.tabs.getSelected(null, function(tab){
                                  -                unsetActivationStorage(tab);
                                  -                
                                  -                chrome.tabs.sendRequest(tab.id, {name: "FB_deactivate"});
                                  -            });
                                  -        }
                                  -
                                  -        sendResponse({}); // snub them.
                                  -    }
                                  -);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.contextMenus.create({
                                  -    title: "Inspect with Firebug Lite",
                                  -    "contexts": ["all"],
                                  -    onclick: function(info, tab) {
                                  -        chrome.tabs.sendRequest(tab.id, {name: "FB_contextMenuClick"});
                                  -    }
                                  -});
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function enableBrowserActionIcon()
                                  -{
                                  -    chrome.browserAction.setTitle({title: firebugVersion + " (On)"});
                                  -    chrome.browserAction.setIcon({path:"firebug24.png"});
                                  -};
                                  -
                                  -function disableBrowserActionIcon()
                                  -{
                                  -    chrome.browserAction.setTitle({title: firebugVersion + " (Off)"});
                                  -    chrome.browserAction.setIcon({path:"firebug24_disabled.png"});
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function setActivationStorage(tab)
                                  -{
                                  -    chrome.tabs.update(tab.id, {url: "javascript:localStorage.setItem('Firebug','1,1,"+extensionURL+"')"});
                                  -    isActive = true;
                                  -};
                                  -
                                  -function unsetActivationStorage(tab)
                                  -{
                                  -    chrome.tabs.update(tab.id, {url: "javascript:localStorage.removeItem('Firebug')"});
                                  -    isActive = false;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -</script>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/contentScript.js b/branches/flexBox/build/chrome-extension-beta/contentScript.js
                                  deleted file mode 100644
                                  index 96ba4dbc..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/contentScript.js
                                  +++ /dev/null
                                  @@ -1,378 +0,0 @@
                                  -// *************************************************************************************************
                                  -
                                  -var isActive = false;
                                  -var isOpen = false;
                                  -var extensionURL = null;
                                  -
                                  -var contextMenuElementXPath = null;
                                  -var isListeningKeyboardActivation = false;
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// restore Firebug Lite state
                                  -var loadStateData = function()
                                  -{
                                  -    var FirebugData = localStorage.getItem("Firebug");
                                  -
                                  -    isActive = false;
                                  -    isOpen = false;
                                  -    extensionURL = chrome.extension.getURL("");
                                  -    
                                  -    if (FirebugData)
                                  -    {
                                  -        FirebugData = FirebugData.split(",");
                                  -        isActive = FirebugData[0] == "1";
                                  -        isOpen = FirebugData[1] == "1";
                                  -    }
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// load Firebug Lite application
                                  -var loadFirebug = function()
                                  -{
                                  -    document.documentElement.setAttribute("debug", isOpen);
                                  -
                                  -    injectScriptText("("+listenConsoleCalls+")()");
                                  -
                                  -    // TODO: xxxpedro - change to XHR when Issue 41024 is solved
                                  -    // Issue 41024: XHR using file: and chrome-extension: protocols not working.
                                  -    // http://code.google.com/p/chromium/issues/detail?id=41024
                                  -    injectFirebugScript();
                                  -};
                                  -
                                  -// TODO: think a better solution than using the stateData parameter, required
                                  -// by the keyboard activation.
                                  -var loadFirebugAndWait = function(callback, stateData)
                                  -{
                                  -    stateData = stateData || ('1,1,'+extensionURL);
                                  -    localStorage.setItem('Firebug', stateData);
                                  -    loadStateData();
                                  -    chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"});
                                  -
                                  -    document.documentElement.setAttribute("debug", isOpen);
                                  -
                                  -    injectFirebugScript();
                                  -
                                  -    setTimeout(function(){
                                  -        waitFirebug(callback);
                                  -    },0);
                                  -};
                                  -
                                  -var waitFirebug = function(callback)
                                  -{
                                  -    if (document && document.getElementById("FirebugChannel"))
                                  -    {
                                  -        stopListeningKeyboardActivation();
                                  -        callback();
                                  -    }
                                  -    else
                                  -        setTimeout(function(){ waitFirebug(callback); }, 100);
                                  -    
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// inject Firebug Lite script into the page
                                  -var injectFirebugScript = function(url)
                                  -{
                                  -    scriptElement = document.getElementById("FirebugLite");
                                  -    if (scriptElement)
                                  -    {
                                  -        firebugDispatch("FB_toggle");
                                  -    }
                                  -    else
                                  -    {
                                  -        var script = document.createElement("script");
                                  -
                                  -        script.src = extensionURL + "firebug-lite-beta.js";
                                  -        script.setAttribute("id", "FirebugLite");
                                  -        script.setAttribute("firebugIgnore", "true");
                                  -        script.setAttribute("extension", "Chrome");
                                  -        document.documentElement.appendChild(script);
                                  -
                                  -        script.onload = function() {
                                  -            // TODO: xxxpedro remove this files when deploy the new structure
                                  -            script = document.createElement("script");
                                  -            script.src = extensionURL + "googleChrome.js";
                                  -            document.documentElement.appendChild(script);
                                  -        };
                                  -    }
                                  -};
                                  -
                                  -// inject a script into the page
                                  -var injectScriptText = function(text)
                                  -{
                                  -    var script = document.createElement("script");
                                  -    var parent = document.documentElement;
                                  -    
                                  -    script.text = text;
                                  -    script.setAttribute("id", "FirebugLite");
                                  -    script.setAttribute("firebugIgnore", "true");
                                  -    script.setAttribute("extension", "Chrome");
                                  -    parent.appendChild(script);
                                  -    parent.removeChild(script);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// communication with the background page
                                  -chrome.extension.onRequest.addListener
                                  -(
                                  -    function(request, sender, sendResponse)
                                  -    {
                                  -        // check if Firebug Lite is active
                                  -        if (request.name == "FB_isActive")
                                  -        {
                                  -            loadStateData();
                                  -            sendResponse({value: ""+isActive});
                                  -        }
                                  -        // load Firebug Lite application
                                  -        else if (request.name == "FB_loadFirebug")
                                  -        {
                                  -            setTimeout(function(){
                                  -            
                                  -                loadStateData();
                                  -
                                  -                //loadFirebug();
                                  -                loadFirebugAndWait(function(){
                                  -                
                                  -                    isActive = true;
                                  -                    var message = isActive ? "FB_enableIcon" : "FB_disableIcon";
                                  -                    chrome.extension.sendRequest({name: message});
                                  -
                                  -                    loadChannel();
                                  -                });
                                  -
                                  -            },0);
                                  -            
                                  -            sendResponse({});
                                  -        }
                                  -        // handle context menu click by sending "FB_contextMenuClick" message 
                                  -        // to Firebug Lite application
                                  -        else if (request.name == "FB_contextMenuClick")
                                  -        {
                                  -            // TODO: if not active, activate first, wait the activation to complete
                                  -            // and only then dispatch the event to Firebug Lite application
                                  -            if (isActive)
                                  -                firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath);
                                  -            else
                                  -                loadFirebugAndWait(function(){
                                  -                    firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath);
                                  -                });
                                  -        }
                                  -        else if (request.name == "FB_deactivate")
                                  -        {
                                  -            listenKeyboardActivation();
                                  -        }
                                  -        else
                                  -            sendResponse({}); // snub them.
                                  -    }
                                  -);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// communication with the page
                                  -var channel = null;
                                  -var channelEvent;
                                  -
                                  -var onFirebugChannelEvent = function()
                                  -{
                                  -    channel = document.getElementById("FirebugChannel");
                                  -
                                  -    if (channel)
                                  -    {
                                  -        chrome.extension.sendRequest({name: channel.innerText});
                                  -    }
                                  -};
                                  -
                                  -var loadChannel = function()
                                  -{
                                  -    channel = document.getElementById("FirebugChannel");
                                  -
                                  -    if (channel)
                                  -    {
                                  -        channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -        channelEvent = document.createEvent("Event");
                                  -        channelEvent.initEvent("FirebugChannelEvent", true, true);
                                  -    }
                                  -};
                                  -
                                  -var firebugDispatch = function(data)
                                  -{
                                  -    if (!channel)
                                  -        loadChannel();
                                  -
                                  -    channel.innerText = data;
                                  -    channel.dispatchEvent(channelEvent);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var onContextMenu = function(event)
                                  -{
                                  -    contextMenuElementXPath = getElementXPath(event.target);
                                  -};
                                  -
                                  -var loadListeners = function()
                                  -{
                                  -    window.addEventListener("contextmenu", onContextMenu);
                                  -    window.addEventListener("unload", unloadListeners);
                                  -};
                                  -
                                  -var unloadListeners = function()
                                  -{
                                  -    if (channel)
                                  -    {
                                  -        channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -    }
                                  -    
                                  -    window.removeEventListener("contextmenu", onContextMenu);
                                  -    window.removeEventListener("unload", unloadListeners);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// listen to console calls before Firebug Lite finishes to load
                                  -var listenConsoleCalls = function()
                                  -{
                                  -    // TODO: xxxpedro add all console functions
                                  -    var fns = ["log", "info", "warn", "error"];
                                  -
                                  -    var listener = {consoleQueue: ["chromeConsoleQueueHack"]};
                                  -    var queue = listener.consoleQueue;
                                  -
                                  -    for (var i=0, l=fns.length; i<l; i++)
                                  -    {
                                  -        var fn = fns[i];
                                  -
                                  -        (function(fn){
                                  -
                                  -            listener[fn] = function()
                                  -            {
                                  -                queue.push([fn, arguments]);
                                  -            };
                                  -
                                  -        })(fn);
                                  -    }
                                  -
                                  -    window.console = listener;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -
                                  -    if (keyCode == 123 /* F12 */ && !shiftKey)
                                  -    {
                                  -        loadFirebugAndWait(function(){
                                  -        
                                  -            if (ctrlKey)
                                  -            {
                                  -                firebugDispatch("FB_openInNewWindow");
                                  -            }
                                  -            else
                                  -            {
                                  -                firebugDispatch("FB_toggle");
                                  -            }
                                  -            
                                  -        },"1,0,"); // TODO: think a better solution than using the stateData parameter
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        //cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        //cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var listenKeyboardActivation = function()
                                  -{
                                  -    // TODO: listen to F12 key. if pressed activate Firebug Lite, and open
                                  -
                                  -    // TODO: this function could also listen to CTRL+SHIFT+C, triggering
                                  -    // Firebug Lite activation, opening it, and starting the inspection,
                                  -    // like in Firebug for Firefox
                                  -
                                  -    // TODO: this function should be called also when Firebug Lite is deactivated
                                  -    window.addEventListener("keydown", onGlobalKeyDown);
                                  -    
                                  -    isListeningKeyboardActivation = true;
                                  -};
                                  -
                                  -var stopListeningKeyboardActivation = function()
                                  -{
                                  -    // TODO: remove listener when Firebug Lite application is activated/loaded
                                  -
                                  -    // TODO: remove listener on window onunload (if not removed already)
                                  -    if (isListeningKeyboardActivation)
                                  -    {
                                  -        window.removeEventListener("keydown", onGlobalKeyDown);
                                  -    }
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var getElementXPath = function(element)
                                  -{
                                  -    if (element && element.id)
                                  -        return '//*[@id="' + element.id + '"]';
                                  -    else
                                  -        return this.getElementTreeXPath(element);
                                  -};
                                  -
                                  -var getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// startup Firebug Lite if it is active for the current page
                                  -loadStateData();
                                  -
                                  -if (isActive)
                                  -{
                                  -    loadFirebugAndWait(function(){
                                  -        loadChannel();
                                  -    });
                                  -}
                                  -else
                                  -{
                                  -    listenKeyboardActivation();
                                  -}
                                  -
                                  -loadListeners();
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// adjust the browser icon according Firebug Lite's current state
                                  -chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"});
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug-lite-beta.js b/branches/flexBox/build/chrome-extension-beta/firebug-lite-beta.js
                                  deleted file mode 100644
                                  index e6c7a297..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/firebug-lite-beta.js
                                  +++ /dev/null
                                  @@ -1,31176 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.4.0
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -/** @namespace describe lib */
                                  -
                                  -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE 
                                  -var FBL = {};
                                  -
                                  -( /** @scope s_lib @this FBL */ function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion = 4;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// Globals
                                  -this.reJavascript = /\s*javascript:\s*(.*)/;
                                  -this.reChrome = /chrome:\/\/([^\/]*)\//;
                                  -this.reFile = /file:\/\/([^\/]*)\//;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // Firebug Lite is already running in persistent mode so we just quit
                                  -    if (window.firebug && firebug.firebuglite || window.console && console.firebuglite)
                                  -        return;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyEnvironment;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        // The problem is that we don't have the Firebug object yet, so we can't use 
                                  -        // Firebug.loadPrefs. We're using the Store module directly instead.
                                  -        var prefs = FBL.Store.get("FirebugLite") || {};
                                  -        FBL.Env.DefaultOptions = FBL.Env.Options;
                                  -        FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {});
                                  -        
                                  -        if (FBL.isFirefox && 
                                  -            typeof FBL.Env.browser.console == "object" && 
                                  -            FBL.Env.browser.console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -                return;
                                  -    }
                                  -    
                                  -    // exposes the FBL to the global namespace when in debug mode
                                  -    if (FBL.Env.isDebugMode)
                                  -    {
                                  -        FBL.Env.browser.FBL = FBL;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -    FBL.Firebug.loadPrefs();
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // wait document load
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: true,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        disableXHRListener: false,
                                  -        disableResourceFetching: false,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isDebugMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyEnvironment = function destroyEnvironment()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    var hasSrcAttribute = true;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                {
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                    hasSrcAttribute = false;
                                  -                }
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                {
                                  -                    scriptSrc = si.src;
                                  -                }
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        path = productionDir;
                                  -        FBL.Env.bookmarkletOutdated = false;
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    isGetFirebugSite = reGetFirebugSite.test(path);
                                  -    
                                  -    if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1)
                                  -    {
                                  -        // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like 
                                  -        // https://getfirebug.com/firebug-lite.js, then we must manually add the full path,
                                  -        // otherwise the Env.Location will hold the wrong path, which will in turn lead to
                                  -        // undesirable effects like the problem in Issue 4587
                                  -        path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/");
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        // Always use the local skin when running in the same domain
                                  -        // See Issue 3554: Firebug Lite should use local images when loaded locally
                                  -        Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 &&
                                  -                // but we cannot use the locan skin when loaded from getfirebug.com, otherwise
                                  -                // the bookmarklet won't work when visiting getfirebug.com
                                  -                !isGetFirebugSite;
                                  -        
                                  -        // detecting development and debug modes via file name
                                  -        if (fileName == "firebug-lite-dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        else if (fileName == "firebug-lite-debug.js")
                                  -        {
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        
                                  -        // process the <html debug="true">
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -        }
                                  -        
                                  -        // process the Script URL Options
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name == "debug")
                                  -                {
                                  -                    Env.isDebugMode = !!value;
                                  -                }
                                  -                else if (name in Env.Options)
                                  -                {
                                  -                    Env.Options[name] = value;
                                  -                }
                                  -                else
                                  -                {
                                  -                    Env[name] = value;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        // process the Script JSON Options
                                  -        if (hasSrcAttribute)
                                  -        {
                                  -            var innerOptions = FBL.trim(script.innerHTML);
                                  -            if (innerOptions)
                                  -            {
                                  -                var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -                
                                  -                for (var name in innerOptionsObject)
                                  -                {
                                  -                    var value = innerOptionsObject[name];
                                  -                    
                                  -                    if (name == "debug")
                                  -                    {
                                  -                        Env.isDebugMode = !!value;
                                  -                    }
                                  -                    else if (name in Env.Options)
                                  -                    {
                                  -                        Env.Options[name] = value;
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        Env[name] = value;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (!Env.Options.saveCookies)
                                  -            FBL.Store.remove("FirebugLite");
                                  -        
                                  -        // process the Debug Mode
                                  -        if (Env.isDebugMode)
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -            Env.Options.enableTrace = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); };
                                  -};
                                  -
                                  -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.descend = function(prototypeParent, childProperties)
                                  -{
                                  -    function protoSetter() {};
                                  -    protoSetter.prototype = prototypeParent;
                                  -    var newOb = new protoSetter();
                                  -    for (var n in childProperties)
                                  -        newOb[n] = childProperties[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = this.createElement("link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -};
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -this.appendStylesheet = function(doc, uri)
                                  -{
                                  -    // Make sure the stylesheet is not appended twice.
                                  -    if (this.$(uri, doc))
                                  -        return;
                                  -
                                  -    var styleSheet = this.createStyleSheet(doc, uri);
                                  -    styleSheet.setAttribute("id", uri);
                                  -    this.addStyleSheet(doc, styleSheet);
                                  -};
                                  -
                                  -this.addScript = function(doc, id, src)
                                  -{
                                  -    var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
                                  -    element.setAttribute("type", "text/javascript");
                                  -    element.setAttribute("id", id);
                                  -    if (!FBTrace.DBG_CONSOLE)
                                  -        FBL.unwrapObject(element).firebugIgnore = true;
                                  -
                                  -    element.innerHTML = src;
                                  -    if (doc.documentElement)
                                  -        doc.documentElement.appendChild(element);
                                  -    else
                                  -    {
                                  -        // See issue 1079, the svg test case gives this error
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.addScript doc has no documentElement:", doc);
                                  -    }
                                  -    return element;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getStyle = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Whitespace and Entity conversions
                                  -
                                  -var entityConversionLists = this.entityConversionLists = {
                                  -    normal : {
                                  -        whitespace : {
                                  -            '\t' : '\u200c\u2192',
                                  -            '\n' : '\u200c\u00b6',
                                  -            '\r' : '\u200c\u00ac',
                                  -            ' '  : '\u200c\u00b7'
                                  -        }
                                  -    },
                                  -    reverse : {
                                  -        whitespace : {
                                  -            '&Tab;' : '\t',
                                  -            '&NewLine;' : '\n',
                                  -            '\u200c\u2192' : '\t',
                                  -            '\u200c\u00b6' : '\n',
                                  -            '\u200c\u00ac' : '\r',
                                  -            '\u200c\u00b7' : ' '
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var normal = entityConversionLists.normal,
                                  -    reverse = entityConversionLists.reverse;
                                  -
                                  -function addEntityMapToList(ccode, entity)
                                  -{
                                  -    var lists = Array.prototype.slice.call(arguments, 2),
                                  -        len = lists.length,
                                  -        ch = String.fromCharCode(ccode);
                                  -    for (var i = 0; i < len; i++)
                                  -    {
                                  -        var list = lists[i];
                                  -        normal[list]=normal[list] || {};
                                  -        normal[list][ch] = '&' + entity + ';';
                                  -        reverse[list]=reverse[list] || {};
                                  -        reverse[list]['&' + entity + ';'] = ch;
                                  -    }
                                  -};
                                  -
                                  -var e = addEntityMapToList,
                                  -    white = 'whitespace',
                                  -    text = 'text',
                                  -    attr = 'attributes',
                                  -    css = 'css',
                                  -    editor = 'editor';
                                  -
                                  -e(0x0022, 'quot', attr, css);
                                  -e(0x0026, 'amp', attr, text, css);
                                  -e(0x0027, 'apos', css);
                                  -e(0x003c, 'lt', attr, text, css);
                                  -e(0x003e, 'gt', attr, text, css);
                                  -e(0xa9, 'copy', text, editor);
                                  -e(0xae, 'reg', text, editor);
                                  -e(0x2122, 'trade', text, editor);
                                  -
                                  -// See http://en.wikipedia.org/wiki/Dash
                                  -e(0x2012, '#8210', attr, text, editor); // figure dash
                                  -e(0x2013, 'ndash', attr, text, editor); // en dash
                                  -e(0x2014, 'mdash', attr, text, editor); // em dash
                                  -e(0x2015, '#8213', attr, text, editor); // horizontal bar
                                  -
                                  -e(0x00a0, 'nbsp', attr, text, white, editor);
                                  -e(0x2002, 'ensp', attr, text, white, editor);
                                  -e(0x2003, 'emsp', attr, text, white, editor);
                                  -e(0x2009, 'thinsp', attr, text, white, editor);
                                  -e(0x200c, 'zwnj', attr, text, white, editor);
                                  -e(0x200d, 'zwj', attr, text, white, editor);
                                  -e(0x200e, 'lrm', attr, text, white, editor);
                                  -e(0x200f, 'rlm', attr, text, white, editor);
                                  -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP)
                                  -
                                  -//************************************************************************************************
                                  -// Entity escaping
                                  -
                                  -var entityConversionRegexes = {
                                  -        normal : {},
                                  -        reverse : {}
                                  -    };
                                  -
                                  -var escapeEntitiesRegEx = {
                                  -    normal : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('([' + chars.join('') + '])', 'gm');
                                  -    },
                                  -    reverse : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('(' + chars.join('|') + ')', 'gm');
                                  -    }
                                  -};
                                  -
                                  -function getEscapeRegexp(direction, lists)
                                  -{
                                  -    var name = '', re;
                                  -    var groups = [].concat(lists);
                                  -    for (i = 0; i < groups.length; i++)
                                  -    {
                                  -        name += groups[i].group;
                                  -    }
                                  -    re = entityConversionRegexes[direction][name];
                                  -    if (!re)
                                  -    {
                                  -        var list = {};
                                  -        if (groups.length > 1)
                                  -        {
                                  -            for ( var i = 0; i < groups.length; i++)
                                  -            {
                                  -                var aList = entityConversionLists[direction][groups[i].group];
                                  -                for ( var item in aList)
                                  -                    list[item] = aList[item];
                                  -            }
                                  -        } else if (groups.length==1)
                                  -        {
                                  -            list = entityConversionLists[direction][groups[0].group]; // faster for special case
                                  -        } else {
                                  -            list = {}; // perhaps should print out an error here?
                                  -        }
                                  -        re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
                                  -    }
                                  -    return re;
                                  -};
                                  -
                                  -function createSimpleEscape(name, direction)
                                  -{
                                  -    return function(value)
                                  -    {
                                  -        var list = entityConversionLists[direction][name];
                                  -        return String(value).replace(
                                  -                getEscapeRegexp(direction, {
                                  -                    group : name,
                                  -                    list : list
                                  -                }),
                                  -                function(ch)
                                  -                {
                                  -                    return list[ch];
                                  -                }
                                  -               );
                                  -    };
                                  -};
                                  -
                                  -function escapeGroupsForEntities(str, lists)
                                  -{
                                  -    lists = [].concat(lists);
                                  -    var re = getEscapeRegexp('normal', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list, last = '';
                                  -    if (!len)
                                  -        return [ {
                                  -            str : String(str),
                                  -            group : '',
                                  -            name : ''
                                  -        } ];
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.normal[list.group][cur];
                                  -            // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space
                                  -            //     r = ' ';
                                  -            if (r)
                                  -            {
                                  -                results[ri] = {
                                  -                    'str' : r,
                                  -                    'class' : list['class'],
                                  -                    'extra' : list.extra[cur] ? list['class']
                                  -                            + list.extra[cur] : ''
                                  -                };
                                  -                break;
                                  -            }
                                  -        }
                                  -        // last=cur;
                                  -        if (!r)
                                  -            results[ri] = {
                                  -                'str' : cur,
                                  -                'class' : '',
                                  -                'extra' : ''
                                  -            };
                                  -        ri++;
                                  -    }
                                  -    return results;
                                  -};
                                  -
                                  -this.escapeGroupsForEntities = escapeGroupsForEntities;
                                  -
                                  -
                                  -function unescapeEntities(str, lists)
                                  -{
                                  -    var re = getEscapeRegexp('reverse', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list;
                                  -    if (!len)
                                  -        return str;
                                  -    lists = [].concat(lists);
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.reverse[list.group][cur];
                                  -            if (r)
                                  -            {
                                  -                results[ri] = r;
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (!r)
                                  -            results[ri] = cur;
                                  -        ri++;
                                  -    }
                                  -    return results.join('') || '';
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal');
                                  -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal');
                                  -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal');
                                  -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal');
                                  -
                                  -// deprecated compatibility functions
                                  -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal');
                                  -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse');
                                  -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML);
                                  -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML);
                                  -
                                  -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal');
                                  -
                                  -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse');
                                  -
                                  -this.unescapeForTextNode = function(str)
                                  -{
                                  -    if (Firebug.showTextNodesWithWhitespace)
                                  -        str = unescapeWhitespace(str);
                                  -    if (!Firebug.showTextNodesWithEntities)
                                  -        str = escapeForElementAttribute(str);
                                  -    return str;
                                  -};
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -this.splitLines = function(text)
                                  -{
                                  -    var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
                                  -    var lines;
                                  -    if (text.match)
                                  -    {
                                  -        lines = text.match(reSplitLines2);
                                  -    }
                                  -    else
                                  -    {
                                  -        var str = text+"";
                                  -        lines = str.match(reSplitLines2);
                                  -    }
                                  -    lines.pop();
                                  -    return lines;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -    {
                                  -        try
                                  -        {
                                  -            // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -            return ob + "";
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            FBTrace.sysout("Lib.safeToString() failed for ", ob);
                                  -            return "";
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // xxxpedro it is not safe to use ob+""?
                                  -        return ob + "";
                                  -        ///return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.hasProperties = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getStyle(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, 
                                  -    // but it is causing a bug (the element disappears when you set the "collapsed" 
                                  -    // attribute, but it doesn't appear when you remove the attribute. So, for those
                                  -    // cases, we need to use the class attribute.
                                  -    if (this.isIElt8)
                                  -    {
                                  -        if (collapsed)
                                  -            this.setClass(elt, "collapsed");
                                  -        else
                                  -            this.removeClass(elt, "collapsed");
                                  -    }
                                  -    else
                                  -        elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    var addOffset = function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, "");
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (elt.offsetLeft)
                                  -            ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -            coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft");
                                  -        if (elt.offsetTop)
                                  -            ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -            coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop");
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else
                                  -        {
                                  -            var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -            // IE will fail when reading the frameElement property of a popup window.
                                  -            // We don't need it anyway once it is outside the (popup) viewport, so we're
                                  -            // ignoring the frameElement check when the window is a popup
                                  -            if (!otherView.opener && otherView.frameElement)
                                  -                addOffset(otherView.frameElement, coords, otherView);
                                  -        }
                                  -    };
                                  -
                                  -    var isIE = this.isIE;
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) };
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS
                                  -
                                  -var cssKeywordMap = null;
                                  -var cssPropNames = null;
                                  -var cssColorNames = null;
                                  -var imageRules = null;
                                  -
                                  -this.getCSSKeywordsByProperty = function(propName)
                                  -{
                                  -    if (!cssKeywordMap)
                                  -    {
                                  -        cssKeywordMap = {};
                                  -
                                  -        for (var name in this.cssInfo)
                                  -        {
                                  -            var list = [];
                                  -
                                  -            var types = this.cssInfo[name];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -            {
                                  -                var keywords = this.cssKeywords[types[i]];
                                  -                if (keywords)
                                  -                    list.push.apply(list, keywords);
                                  -            }
                                  -
                                  -            cssKeywordMap[name] = list;
                                  -        }
                                  -    }
                                  -
                                  -    return propName in cssKeywordMap ? cssKeywordMap[propName] : [];
                                  -};
                                  -
                                  -this.getCSSPropertyNames = function()
                                  -{
                                  -    if (!cssPropNames)
                                  -    {
                                  -        cssPropNames = [];
                                  -
                                  -        for (var name in this.cssInfo)
                                  -            cssPropNames.push(name);
                                  -    }
                                  -
                                  -    return cssPropNames;
                                  -};
                                  -
                                  -this.isColorKeyword = function(keyword)
                                  -{
                                  -    if (keyword == "transparent")
                                  -        return false;
                                  -
                                  -    if (!cssColorNames)
                                  -    {
                                  -        cssColorNames = [];
                                  -
                                  -        var colors = this.cssKeywords["color"];
                                  -        for (var i = 0; i < colors.length; ++i)
                                  -            cssColorNames.push(colors[i].toLowerCase());
                                  -
                                  -        var systemColors = this.cssKeywords["systemColor"];
                                  -        for (var i = 0; i < systemColors.length; ++i)
                                  -            cssColorNames.push(systemColors[i].toLowerCase());
                                  -    }
                                  -
                                  -    return cssColorNames.indexOf ? // Array.indexOf is not available in IE
                                  -            cssColorNames.indexOf(keyword.toLowerCase()) != -1 :
                                  -            (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.isImageRule = function(rule)
                                  -{
                                  -    if (!imageRules)
                                  -    {
                                  -        imageRules = [];
                                  -
                                  -        for (var i in this.cssInfo)
                                  -        {
                                  -            var r = i.toLowerCase();
                                  -            var suffix = "image";
                                  -            if (r.match(suffix + "$") == suffix || r == "background")
                                  -                imageRules.push(r);
                                  -        }
                                  -    }
                                  -
                                  -    return imageRules.indexOf ? // Array.indexOf is not available in IE
                                  -            imageRules.indexOf(rule.toLowerCase()) != -1 :
                                  -            (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.copyTextStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.fontFamily = style.fontFamily;
                                  -        
                                  -        // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE
                                  -        // returns wrong computed styles for inherited properties (like font-*)
                                  -        //
                                  -        // Also would be good to create a FBL.getStyle() 
                                  -        toNode.style.fontSize = style.fontSize;
                                  -        toNode.style.fontWeight = style.fontWeight;
                                  -        toNode.style.fontStyle = style.fontStyle;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.copyBoxStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.marginTop = style.marginTop;
                                  -        toNode.style.marginRight = style.marginRight;
                                  -        toNode.style.marginBottom = style.marginBottom;
                                  -        toNode.style.marginLeft = style.marginLeft;
                                  -        toNode.style.borderTopWidth = style.borderTopWidth;
                                  -        toNode.style.borderRightWidth = style.borderRightWidth;
                                  -        toNode.style.borderBottomWidth = style.borderBottomWidth;
                                  -        toNode.style.borderLeftWidth = style.borderLeftWidth;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.readBoxStyles = function(style)
                                  -{
                                  -    var styleNames = {
                                  -        "margin-top": "marginTop", "margin-right": "marginRight",
                                  -        "margin-left": "marginLeft", "margin-bottom": "marginBottom",
                                  -        "border-top-width": "borderTop", "border-right-width": "borderRight",
                                  -        "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
                                  -        "padding-top": "paddingTop", "padding-right": "paddingRight",
                                  -        "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
                                  -        "z-index": "zIndex"
                                  -    };
                                  -
                                  -    var styles = {};
                                  -    for (var styleName in styleNames)
                                  -        styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
                                  -    if (FBTrace.DBG_INSPECT)
                                  -        FBTrace.sysout("readBoxStyles ", styles);
                                  -    return styles;
                                  -};
                                  -
                                  -this.getBoxFromStyles = function(style, element)
                                  -{
                                  -    var args = this.readBoxStyles(style);
                                  -    args.width = element.offsetWidth
                                  -        - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -    args.height = element.offsetHeight
                                  -        - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -    return args;
                                  -};
                                  -
                                  -this.getElementCSSSelector = function(element)
                                  -{
                                  -    var label = element.localName.toLowerCase();
                                  -    if (element.id)
                                  -        label += "#" + element.id;
                                  -    if (element.hasAttribute("class"))
                                  -        label += "." + element.getAttribute("class").split(" ")[0];
                                  -
                                  -    return label;
                                  -};
                                  -
                                  -this.getURLForStyleSheet= function(styleSheet)
                                  -{
                                  -    //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null.
                                  -    return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
                                  -};
                                  -
                                  -this.getDocumentForStyleSheet = function(styleSheet)
                                  -{
                                  -    while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
                                  -    {
                                  -        styleSheet = styleSheet.parentStyleSheet;
                                  -    }
                                  -    if (styleSheet.ownerNode)
                                  -      return styleSheet.ownerNode.ownerDocument;
                                  -};
                                  -
                                  -/**
                                  - * Retrieves the instance number for a given style sheet. The instance number
                                  - * is sheet's index within the set of all other sheets whose URL is the same.
                                  - */
                                  -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
                                  -{
                                  -    // System URLs are always unique (or at least we are making this assumption)
                                  -    if (FBL.isSystemStyleSheet(styleSheet))
                                  -        return 0;
                                  -
                                  -    // ownerDocument is an optional hint for performance
                                  -    if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument);
                                  -    ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet);
                                  -
                                  -    var ret = 0,
                                  -        styleSheets = ownerDocument.styleSheets,
                                  -        href = styleSheet.href;
                                  -    for (var i = 0; i < styleSheets.length; i++)
                                  -    {
                                  -        var curSheet = styleSheets[i];
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode)));
                                  -        if (curSheet == styleSheet)
                                  -            break;
                                  -        if (curSheet.href == href)
                                  -            ret++;
                                  -    }
                                  -    return ret;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// HTML and XML Serialization
                                  -
                                  -
                                  -var getElementType = this.getElementType = function(node)
                                  -{
                                  -    if (isElementXUL(node))
                                  -        return 'xul';
                                  -    else if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else if (isElementXHTML(node))
                                  -        return 'xhtml';
                                  -    else if (isElementHTML(node))
                                  -        return 'html';
                                  -};
                                  -
                                  -var getElementSimpleType = this.getElementSimpleType = function(node)
                                  -{
                                  -    if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else
                                  -        return 'html';
                                  -};
                                  -
                                  -var isElementHTML = this.isElementHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toUpperCase();
                                  -};
                                  -
                                  -var isElementXHTML = this.isElementXHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toLowerCase();
                                  -};
                                  -
                                  -var isElementMathML = this.isElementMathML = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
                                  -};
                                  -
                                  -var isElementSVG = this.isElementSVG = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/2000/svg';
                                  -};
                                  -
                                  -var isElementXUL = this.isElementXUL = function(node)
                                  -{
                                  -    return node instanceof XULElement;
                                  -};
                                  -
                                  -this.isSelfClosing = function(element)
                                  -{
                                  -    if (isElementSVG(element) || isElementMathML(element))
                                  -        return true;
                                  -    var tag = element.localName.toLowerCase();
                                  -    return (this.selfClosingTags.hasOwnProperty(tag));
                                  -};
                                  -
                                  -this.getElementHTML = function(element)
                                  -{
                                  -    var self=this;
                                  -    function toHTML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            html.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                html.push('>');
                                  -
                                  -                var pureText=true;
                                  -                for (var child = element.firstChild; child; child = child.nextSibling)
                                  -                    pureText=pureText && (child.nodeType == Node.TEXT_NODE);
                                  -
                                  -                if (pureText)
                                  -                    html.push(escapeForHtmlEditor(elt.textContent));
                                  -                else {
                                  -                    for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                        toHTML(child);
                                  -                }
                                  -
                                  -                html.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else if (isElementSVG(elt) || isElementMathML(elt))
                                  -            {
                                  -                html.push('/>');
                                  -            }
                                  -            else if (self.isSelfClosing(elt))
                                  -            {
                                  -                html.push((isElementXHTML(elt))?'/>':'>');
                                  -            }
                                  -            else
                                  -            {
                                  -                html.push('></', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            html.push(escapeForTextNode(elt.textContent));
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            html.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            html.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var html = [];
                                  -    toHTML(element);
                                  -    return html.join("");
                                  -};
                                  -
                                  -this.getElementXML = function(element)
                                  -{
                                  -    function toXML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            xml.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                xml.push('>');
                                  -
                                  -                for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                    toXML(child);
                                  -
                                  -                xml.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else
                                  -                xml.push('/>');
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            xml.push(elt.nodeValue);
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            xml.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            xml.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var xml = [];
                                  -    toXML(element);
                                  -    return xml.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.old_hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document);
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.isAncestor = function(node, potentialAncestor)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (parent == potentialAncestor)
                                  -            return true;
                                  -    }
                                  -
                                  -    return false;
                                  -};
                                  -
                                  -this.getNextElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.nextSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getPreviousElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.previousSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.findNextDown = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (criteria(child))
                                  -            return child;
                                  -
                                  -        var next = this.findNextDown(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -};
                                  -
                                  -this.findPreviousUp = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.lastChild; child; child = child.previousSibling)
                                  -    {
                                  -        var next = this.findPreviousUp(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -
                                  -        if (criteria(child))
                                  -            return child;
                                  -    }
                                  -};
                                  -
                                  -this.findNext = function(node, criteria, upOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    if (!upOnly)
                                  -    {
                                  -        var next = this.findNextDown(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
                                  -    {
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -
                                  -        var next = this.findNextDown(sib, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -        return this.findNext(node.parentNode, criteria, true);
                                  -};
                                  -
                                  -this.findPrevious = function(node, criteria, downOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
                                  -    {
                                  -        var prev = this.findPreviousUp(sib, criteria);
                                  -        if (prev)
                                  -            return prev;
                                  -
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -    }
                                  -
                                  -    if (!downOnly)
                                  -    {
                                  -        var next = this.findPreviousUp(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -    {
                                  -        if (criteria(node.parentNode))
                                  -            return node.parentNode;
                                  -
                                  -        return this.findPrevious(node.parentNode, criteria, true);
                                  -    }
                                  -};
                                  -
                                  -this.getNextByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findNext(root, iter);
                                  -};
                                  -
                                  -this.getPreviousByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findPrevious(root, iter);
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Modification
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API 
                                  -var appendFragment = null;
                                  -
                                  -this.appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE 
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -    
                                  -    var doc = element.ownerDocument;
                                  -    
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -    
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -        
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -        
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -        
                                  -        div = null;
                                  -    }
                                  -    
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.safeGetWindowLocation = function(window)
                                  -{
                                  -    try
                                  -    {
                                  -        if (window)
                                  -        {
                                  -            if (window.closed)
                                  -                return "(window.closed)";
                                  -            if ("location" in window)
                                  -                return window.location+"";
                                  -            else
                                  -                return "(no window.location)";
                                  -        }
                                  -        else
                                  -            return "(no context.window)";
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
                                  -        return "(getWindowLocation: "+exc+")";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && // others
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 4 : // IE "click" and "dblclick" button model
                                  -            event.button == 1) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 2 : // IE "click" and "dblclick" button model
                                  -            event.button == 2) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isAlt = function(event)
                                  -{
                                  -    return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isAltClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isAlt(event);
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, useCapture);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    if (!listeners) return;
                                  -    
                                  -    try
                                  -    {/**/
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -    }
                                  -    /**/
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;";
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    if (!url)
                                  -        return null;
                                  -
                                  -    // Remove query string from the URL if any.
                                  -    var queryString = url.indexOf("?");
                                  -    if (queryString != -1)
                                  -        url = url.substr(0, queryString);
                                  -
                                  -    // Now get the file extension.
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.isSystemStyleSheet = function(sheet)
                                  -{
                                  -    var href = sheet && sheet.href;
                                  -    return href && FBL.isSystemURL(href);
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ",";
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^\/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^\/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters
                                  -// as in response/request headers and get/post parameters in Net module?
                                  -this.parseURLParamsArray = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedTextArray(search);
                                  -};
                                  -
                                  -this.parseURLEncodedTextArray = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [""]});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL = function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    ///var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        ///jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -        
                                  -        //jsonObject = Firebug.context.eval(jsonString);
                                  -        jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;});
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        /***
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {/**/
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        ///}
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Caret Position
                                  -
                                  -this.setSelectionRange = function(input, start, length)
                                  -{
                                  -    if (input.createTextRange)
                                  -    {
                                  -        var range = input.createTextRange(); 
                                  -        range.moveStart("character", start); 
                                  -        range.moveEnd("character", length - input.value.length); 
                                  -        range.select();
                                  -    }
                                  -    else if (input.setSelectionRange)
                                  -    {
                                  -        input.setSelectionRange(start, length);
                                  -        input.focus();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Selection Start / Caret Position
                                  -
                                  -this.getInputSelectionStart = function(input)
                                  -{
                                  -    if (document.selection)
                                  -    {
                                  -        var range = input.ownerDocument.selection.createRange();
                                  -        var text = range.text;
                                  -        
                                  -        //console.log("range", range.text);
                                  -        
                                  -        // if there is a selection, find the start position
                                  -        if (text)
                                  -        {
                                  -            return input.value.indexOf(text);
                                  -        }
                                  -        // if there is no selection, find the caret position
                                  -        else
                                  -        {
                                  -            range.moveStart("character", -input.value.length);
                                  -            
                                  -            return range.text.length;
                                  -        }
                                  -    }
                                  -    else if (typeof input.selectionStart != "undefined")
                                  -        return input.selectionStart;
                                  -    
                                  -    return 0;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    try
                                  -    {
                                  -        // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -        return toString.call(object) === "[object Function]" || 
                                  -                this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -        FBTrace.sysout("Lib.isFunction() failed for ", object);
                                  -        return false;
                                  -    }
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is accessible in the window, uses the native instanceof operator
                                  -        // if the instanceof evaluates to "true" we can assume it is a instance, but if it
                                  -        // evaluates to "false" we must continue with the duck type detection below because
                                  -        // the native object may be extended, thus breaking the instanceof result 
                                  -        // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -        if (className in win && object instanceof win[className])
                                  -            return true;
                                  -    }
                                  -    // If the object doesn't have the ownerDocument property, we'll try to look at
                                  -    // the current context's window
                                  -    else
                                  -    {
                                  -        // TODO: xxxpedro context
                                  -        // Since we're not using yet a Firebug.context, we'll just use the top window
                                  -        // (browser) as a reference
                                  -        var win = Firebug.browser.window;
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    // get the duck type model from the cache 
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    // starts the hacky duck type detection
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            // avoid problems with extended native objects
                                  -            // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -            if (!obj.hasOwnProperty(name))
                                  -                continue;
                                  -            
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    CSSStyleRule:
                                  -    {
                                  -        property: ["selectorText", "style"]
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -/*
                                  -
                                  -Problems:
                                  -
                                  -  - IE does not have window.Node, window.Element, etc
                                  -  - for (var name in Node.prototype) return nothing on FF
                                  -
                                  -*/
                                  -
                                  -
                                  -var domMemberMap2 = {};
                                  -
                                  -var domMemberMap2Sandbox = null;
                                  -
                                  -var getDomMemberMap2 = function(name)
                                  -{
                                  -    if (!domMemberMap2Sandbox)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var frame = doc.createElement("iframe");
                                  -        
                                  -        frame.id = "FirebugSandbox";
                                  -        frame.style.display = "none";
                                  -        frame.src = "about:blank";
                                  -        
                                  -        doc.body.appendChild(frame);
                                  -        
                                  -        domMemberMap2Sandbox = frame.window || frame.contentWindow;
                                  -    }
                                  -    
                                  -    var props = [];
                                  -    
                                  -    //var object = domMemberMap2Sandbox[name];
                                  -    //object = object.prototype || object;
                                  -    
                                  -    var object = null;
                                  -    
                                  -    if (name == "Window")
                                  -        object = domMemberMap2Sandbox.window;
                                  -    
                                  -    else if (name == "Document")
                                  -        object = domMemberMap2Sandbox.document;
                                  -        
                                  -    else if (name == "HTMLScriptElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("script");
                                  -    
                                  -    else if (name == "HTMLAnchorElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("a");
                                  -    
                                  -    else if (name.indexOf("Element") != -1)
                                  -    {
                                  -        object = domMemberMap2Sandbox.document.createElement("div");
                                  -    }
                                  -    
                                  -    if (object)
                                  -    {
                                  -        //object = object.prototype || object;
                                  -        
                                  -        //props  = 'addEventListener,document,location,navigator,window'.split(',');
                                  -        
                                  -        for (var n in object)
                                  -          props.push(n);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return props;
                                  -    return extendArray(props, domMemberMap[name]);
                                  -};
                                  -
                                  -// xxxpedro experimental get DOM members
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        FBL.domMemberCache = domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = getDomMemberMap2(name);
                                  -            var cache = domMemberCache[name] = {};
                                  -            
                                  -            /*
                                  -            if (name.indexOf("Element") != -1)
                                  -            {
                                  -                this.append(cache, this.getDOMMembers("Node"));
                                  -                this.append(cache, this.getDOMMembers("Element"));
                                  -            }
                                  -            /**/
                                  -            
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument"))
                                  -            { return domMemberCache.Document; }
                                  -        else if (this.instanceOf(object, "Location"))
                                  -            { return domMemberCache.Location; }
                                  -        else if (this.instanceOf(object, "HTMLImageElement"))
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (this.instanceOf(object, "HTMLAnchorElement"))
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (this.instanceOf(object, "HTMLInputElement"))
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (this.instanceOf(object, "HTMLButtonElement"))
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (this.instanceOf(object, "HTMLFormElement"))
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (this.instanceOf(object, "HTMLBodyElement"))
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (this.instanceOf(object, "HTMLHtmlElement"))
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (this.instanceOf(object, "HTMLScriptElement"))
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableElement"))
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableRowElement"))
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableCellElement"))
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (this.instanceOf(object, "HTMLIFrameElement"))
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (this.instanceOf(object, "SVGSVGElement"))
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (this.instanceOf(object, "SVGElement"))
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (this.instanceOf(object, "Element"))
                                  -            { return domMemberCache.Element; }
                                  -        else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection"))
                                  -            { return domMemberCache.Text; }
                                  -        else if (this.instanceOf(object, "Attr"))
                                  -            { return domMemberCache.Attr; }
                                  -        else if (this.instanceOf(object, "Node"))
                                  -            { return domMemberCache.Node; }
                                  -        else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy"))
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getDOMMembers FAILED ", E);
                                  -        
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -
                                  -/*
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap"
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -this.selfClosingTags =
                                  -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "area": 1,
                                  -    "base": 1,
                                  -    "col": 1,
                                  -    "input": 1,
                                  -    "img": 1,
                                  -    "br": 1,
                                  -    "hr": 1,
                                  -    "param":1,
                                  -    "embed":1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -    "PARAM": 1,
                                  -    "COL": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1,
                                  -    "param": 1,
                                  -    "col": 1
                                  -    /*
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -if (typeof KeyEvent == "undefined") {
                                  -    this.KeyEvent = {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        DOM_VK_SHIFT: 16,
                                  -        DOM_VK_CONTROL: 17,
                                  -        DOM_VK_ALT: 18,
                                  -        DOM_VK_PAUSE: 19,
                                  -        DOM_VK_CAPS_LOCK: 20,
                                  -        DOM_VK_ESCAPE: 27,
                                  -        DOM_VK_SPACE: 32,
                                  -        DOM_VK_PAGE_UP: 33,
                                  -        DOM_VK_PAGE_DOWN: 34,
                                  -        DOM_VK_END: 35,
                                  -        DOM_VK_HOME: 36,
                                  -        DOM_VK_LEFT: 37,
                                  -        DOM_VK_UP: 38,
                                  -        DOM_VK_RIGHT: 39,
                                  -        DOM_VK_DOWN: 40,
                                  -        DOM_VK_PRINTSCREEN: 44,
                                  -        DOM_VK_INSERT: 45,
                                  -        DOM_VK_DELETE: 46,
                                  -        DOM_VK_0: 48,
                                  -        DOM_VK_1: 49,
                                  -        DOM_VK_2: 50,
                                  -        DOM_VK_3: 51,
                                  -        DOM_VK_4: 52,
                                  -        DOM_VK_5: 53,
                                  -        DOM_VK_6: 54,
                                  -        DOM_VK_7: 55,
                                  -        DOM_VK_8: 56,
                                  -        DOM_VK_9: 57,
                                  -        DOM_VK_SEMICOLON: 59,
                                  -        DOM_VK_EQUALS: 61,
                                  -        DOM_VK_A: 65,
                                  -        DOM_VK_B: 66,
                                  -        DOM_VK_C: 67,
                                  -        DOM_VK_D: 68,
                                  -        DOM_VK_E: 69,
                                  -        DOM_VK_F: 70,
                                  -        DOM_VK_G: 71,
                                  -        DOM_VK_H: 72,
                                  -        DOM_VK_I: 73,
                                  -        DOM_VK_J: 74,
                                  -        DOM_VK_K: 75,
                                  -        DOM_VK_L: 76,
                                  -        DOM_VK_M: 77,
                                  -        DOM_VK_N: 78,
                                  -        DOM_VK_O: 79,
                                  -        DOM_VK_P: 80,
                                  -        DOM_VK_Q: 81,
                                  -        DOM_VK_R: 82,
                                  -        DOM_VK_S: 83,
                                  -        DOM_VK_T: 84,
                                  -        DOM_VK_U: 85,
                                  -        DOM_VK_V: 86,
                                  -        DOM_VK_W: 87,
                                  -        DOM_VK_X: 88,
                                  -        DOM_VK_Y: 89,
                                  -        DOM_VK_Z: 90,
                                  -        DOM_VK_CONTEXT_MENU: 93,
                                  -        DOM_VK_NUMPAD0: 96,
                                  -        DOM_VK_NUMPAD1: 97,
                                  -        DOM_VK_NUMPAD2: 98,
                                  -        DOM_VK_NUMPAD3: 99,
                                  -        DOM_VK_NUMPAD4: 100,
                                  -        DOM_VK_NUMPAD5: 101,
                                  -        DOM_VK_NUMPAD6: 102,
                                  -        DOM_VK_NUMPAD7: 103,
                                  -        DOM_VK_NUMPAD8: 104,
                                  -        DOM_VK_NUMPAD9: 105,
                                  -        DOM_VK_MULTIPLY: 106,
                                  -        DOM_VK_ADD: 107,
                                  -        DOM_VK_SEPARATOR: 108,
                                  -        DOM_VK_SUBTRACT: 109,
                                  -        DOM_VK_DECIMAL: 110,
                                  -        DOM_VK_DIVIDE: 111,
                                  -        DOM_VK_F1: 112,
                                  -        DOM_VK_F2: 113,
                                  -        DOM_VK_F3: 114,
                                  -        DOM_VK_F4: 115,
                                  -        DOM_VK_F5: 116,
                                  -        DOM_VK_F6: 117,
                                  -        DOM_VK_F7: 118,
                                  -        DOM_VK_F8: 119,
                                  -        DOM_VK_F9: 120,
                                  -        DOM_VK_F10: 121,
                                  -        DOM_VK_F11: 122,
                                  -        DOM_VK_F12: 123,
                                  -        DOM_VK_F13: 124,
                                  -        DOM_VK_F14: 125,
                                  -        DOM_VK_F15: 126,
                                  -        DOM_VK_F16: 127,
                                  -        DOM_VK_F17: 128,
                                  -        DOM_VK_F18: 129,
                                  -        DOM_VK_F19: 130,
                                  -        DOM_VK_F20: 131,
                                  -        DOM_VK_F21: 132,
                                  -        DOM_VK_F22: 133,
                                  -        DOM_VK_F23: 134,
                                  -        DOM_VK_F24: 135,
                                  -        DOM_VK_NUM_LOCK: 144,
                                  -        DOM_VK_SCROLL_LOCK: 145,
                                  -        DOM_VK_COMMA: 188,
                                  -        DOM_VK_PERIOD: 190,
                                  -        DOM_VK_SLASH: 191,
                                  -        DOM_VK_BACK_QUOTE: 192,
                                  -        DOM_VK_OPEN_BRACKET: 219,
                                  -        DOM_VK_BACK_SLASH: 220,
                                  -        DOM_VK_CLOSE_BRACKET: 221,
                                  -        DOM_VK_QUOTE: 222,
                                  -        DOM_VK_META: 224
                                  -    };
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -/**
                                  - * @namespace
                                  - */
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = FBL.getNativeXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Create a AJAX request.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Asynchronous flag. Default is "true".   
                                  -     * @param {String}   options.dataType      Data type ("text", "html", "xml" or "json"). Default is "text".
                                  -     * @param {String}   options.contentType   Content-type of the data being sent. Default is "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     onLoading callback
                                  -     * @param {Function} options.onLoaded      onLoaded callback
                                  -     * @param {Function} options.onInteractive onInteractive callback
                                  -     * @param {Function} options.onComplete    onComplete callback
                                  -     * @param {Function} options.onUpdate      onUpdate callback
                                  -     * @param {Function} options.onSuccess     onSuccess callback
                                  -     * @param {Function} options.onFailure     onFailure callback
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        // process options
                                  -        var o = FBL.extend(
                                  -                {
                                  -                    // default values
                                  -                    type: "get",
                                  -                    async: true,
                                  -                    dataType: "text",
                                  -                    contentType: "application/x-www-form-urlencoded"
                                  -                }, 
                                  -                options || {}
                                  -            );
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data;
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(var param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // open XHR object
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // indicates that it is a XHR request to the server
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // if data is being sent, sets the appropriate content-type
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -            t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // onreadystatechange handler
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // send the request
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Handles the state change
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * gets the appropriate response value according the type
                                  -     */
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText;
                                  -        else if (type == "text")  return t.responseText;
                                  -        else if (type == "html")  return t.responseText;
                                  -        else if (type == "xml")   return t.responseXML;
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * returns the current state of the XHR object
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        if (days)
                                  -        {
                                  -            var date = new Date();
                                  -            date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -            var expires = "; expires="+date.toGMTString();
                                  -        }
                                  -        else 
                                  -            var expires = "";
                                  -        
                                  -        document.cookie = name+"="+value+expires+"; path=/";
                                  -    }
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        var nameEQ = name + "=";
                                  -        var ca = document.cookie.split(';');
                                  -        
                                  -        for(var i=0; i < ca.length; i++)
                                  -        {
                                  -            var c = ca[i];
                                  -            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -        }
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_i18n */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    "NoMembersWarning": "There are no properties to show for this object.",
                                  -    
                                  -    "EmptyStyleSheet": "There are no rules in this stylesheet.",
                                  -    "EmptyElementCSS": "This element has no style rules.",
                                  -    "AccessRestricted": "Access to restricted URI denied.",
                                  -    
                                  -    "net.label.Parameters": "Parameters",
                                  -    "net.label.Source": "Source",
                                  -    "URLParameters": "Params",
                                  -    
                                  -    "EditStyle": "Edit Element Style...",
                                  -    "NewRule": "New Rule...",
                                  -    
                                  -    "NewProp": "New Property...",
                                  -    "EditProp": 'Edit "%s"',
                                  -    "DeleteProp": 'Delete "%s"',
                                  -    "DisableProp": 'Disable "%s"'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -
                                  -FBL.$STRF = function(name, args)
                                  -{
                                  -    if (!oSTR.hasOwnProperty(name)) return name;
                                  -    
                                  -    var format = oSTR[name];
                                  -    var objIndex = 0;
                                  -    
                                  -    var parts = parseFormat(format);
                                  -    var trialIndex = objIndex;
                                  -    var objects = args;
                                  -    
                                  -    for (var i= 0; i < parts.length; i++)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -            {
                                  -                format = "";
                                  -                objIndex = -1;
                                  -                parts.length = 0;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -    }
                                  -    
                                  -    var result = [];
                                  -    for (var i = 0; i < parts.length; ++i)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            result.push(""+args.shift());
                                  -        }
                                  -        else
                                  -            result.push(part);
                                  -    }
                                  -    
                                  -    return result.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var parseFormat = function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.4.0",
                                  -    revision: "$Revision: 11956 $",
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        Firebug.loadPrefs();
                                  -        Firebug.context.persistedState.isOpen = false;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets)
                                  -            FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document);
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Firebug.disableResourceFetching)
                                  -            Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " +
                                  -            		"resource fetching is disabled. To enabled it set the Firebug Lite option " +
                                  -            		"\"disableResourceFetching\" to \"false\". More info at " +
                                  -            		"http://getfirebug.com/firebuglite#Options"], 
                                  -            		Firebug.context, "warn");
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.DefaultOptions;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function()
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        var prefs = Store.get("FirebugLite") || {};
                                  -        var options = prefs.options;
                                  -        var persistedState = prefs.persistedState || FBL.defaultPersistedState;
                                  -        
                                  -        for (var name in options)
                                  -        {
                                  -            if (options.hasOwnProperty(name))
                                  -                Firebug[name] = options[name];
                                  -        }
                                  -        
                                  -        if (Firebug.context && persistedState)
                                  -            Firebug.context.persistedState = persistedState;
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var prefs = {
                                  -            options: {}
                                  -        };
                                  -        
                                  -        var EnvOptions = Env.Options;
                                  -        var options = prefs.options;
                                  -        for (var name in EnvOptions)
                                  -        {
                                  -            if (EnvOptions.hasOwnProperty(name))
                                  -            {
                                  -                options[name] = Firebug[name];
                                  -            }
                                  -        }
                                  -        
                                  -        var persistedState = Firebug.context.persistedState;
                                  -        if (!persistedState)
                                  -        {
                                  -            persistedState = Firebug.context.persistedState = FBL.defaultPersistedState;
                                  -        }
                                  -        
                                  -        prefs.persistedState = persistedState;
                                  -        
                                  -        Store.set("FirebugLite", prefs);
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        Store.remove("FirebugLite");
                                  -        this.restorePrefs();
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *  
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener 
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            var panelBarNode = this.parentPanel ? 
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -            
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -        
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel = 
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : 
                                  -                Firebug.chrome.selectedPanel;
                                  -        
                                  -        Firebug.showInfoTips = true;
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        this.visible = true;
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -        
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -        
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu) 
                                  -            return;
                                  -        
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -            
                                  -            items: menu
                                  -        });
                                  -        
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -        
                                  -        return true;
                                  -        
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -        
                                  -        var screenY = 0;
                                  -        
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY; 
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -        
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *  
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        
                                  -        ///return m ? m[1] : label;
                                  -        
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE && 
                                  -                // safeToString() returns "[object]" for some objects like window.Image 
                                  -                (label == "[object]" || 
                                  -                // safeToString() returns undefined for some objects like window.clientInformation 
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_gui */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -/**@namespace*/
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -/**@namespace*/
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.shutdown();
                                  -                selectedPanel.hide();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                Firebug.context.persistedState.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.show();
                                  -            panel.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller 
                                  - *  
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -/**@extend FBL.Button.prototype*/
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.Button 
                                  - */
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype,
                                  -/**@extend FBL.IconButton.prototype*/ 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        _command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            item.label = $STR(item.label);
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - * 
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller
                                  - *   
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                getElementByClass(Firebug.chrome.document, "fbBody"),
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -/**@extend FBL.Menu.prototype*/
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked);
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var handler = null;
                                  -             
                                  -            // target.command can be a function or a string. 
                                  -            var cmd = target.command;
                                  -            
                                  -            // If it is a function it will be used as the handler
                                  -            if (isFunction(cmd))
                                  -                handler = cmd;
                                  -            // If it is a string it the property of the current menu object 
                                  -            // will be used as the handler
                                  -            else if (typeof cmd == "string")
                                  -                handler = this[cmd];
                                  -            
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -append(Menu,
                                  -/**@extend FBL.Menu*/
                                  -{
                                  -    register: function(object)
                                  -    {
                                  -        menuMap[object.id] = object;
                                  -    },
                                  -    
                                  -    check: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "true");
                                  -    },
                                  -    
                                  -    uncheck: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "");
                                  -    },
                                  -    
                                  -    disable: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuDisabled");
                                  -    },
                                  -    
                                  -    enable: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuDisabled");
                                  -    }
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -/**@class*/
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_context*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -
                                  -/** @class */
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    this.browser = Env.browser;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // partial-port of Firebug tabContext.js
                                  -    
                                  -    browser: null,
                                  -    loaded: true,
                                  -    
                                  -    setTimeout: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        if (win.setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        
                                  -        var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setTimeout.apply(win, arguments) :
                                  -                win.setTimeout(fn, delay);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setInterval.apply(win, arguments) :
                                  -                win.setInterval(fn, delay);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            
                                  -            // avoid error. need to create a better getPanel() function as explained below
                                  -            if (!Firebug.chrome || !Firebug.chrome.selectedPanel)
                                  -                return;
                                  -            
                                  -            //var panel = this.getPanel(panelName, true);
                                  -            //TODO: xxxpedro context how to get all panels using a single function?
                                  -            // the current workaround to make the invalidation works is invalidating
                                  -            // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -            var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                    Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                    null;
                                  -            
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                //var panel = this.getPanel(panelName, true);
                                  -                //TODO: xxxpedro context how to get all panels using a single function?
                                  -                // the current workaround to make the invalidation works is invalidating
                                  -                // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -                var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                        Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                        null;
                                  -
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var isObjectLiteral = trim(expr).indexOf("{") == 0,
                                  -            cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // If it is an object literal, then wrap the expression with parenthesis so we can 
                                  -            // capture the return value
                                  -            if (isObjectLiteral)
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ ("+expr+") }" :
                                  -                    "(" + expr + ")";
                                  -            }
                                  -            else
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            cmd = api ?
                                  -                // with API and context, no return value
                                  -                "(function(arguments){ with(" + api + "){ " +
                                  -                    expr + 
                                  -                " } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, no return value
                                  -                "(function(arguments){ " + 
                                  -                    expr + 
                                  -                " }).call(" + context + ",undefined)";
                                  -        }
                                  -        
                                  -        result = this.eval(cmd);
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg);
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        else if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -        
                                  -        else if (unit == "ex")
                                  -            return this.exToPixels(el, value);
                                  -        
                                  -        // TODO: add other units. Maybe create a better general way
                                  -        // to calculate measurements in different units.    
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        };
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getStyle: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbTop,
                                  -    fbContent,
                                  -    fbContentStyle,
                                  -    fbBottom,
                                  -    fbBtnInspect,
                                  -
                                  -    fbToolbar,
                                  -
                                  -    fbPanelBox1,
                                  -    fbPanelBox1Style,
                                  -    fbPanelBox2,
                                  -    fbPanelBox2Style,
                                  -    fbPanelBar2Box,
                                  -    fbPanelBar2BoxStyle,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -    fbVSplitterStyle,
                                  -
                                  -    fbPanel1,
                                  -    fbPanel1Style,
                                  -    fbPanel2,
                                  -    fbPanel2Style,
                                  -
                                  -    fbConsole,
                                  -    fbConsoleStyle,
                                  -    fbHTML,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.addController(
                                  -            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        /*
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            }
                                  -    
                                  -            addEvent(Firebug.chrome.document, "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -        
                                  -        this.addController(
                                  -                [fbPanel1, "mousedown", onPanelMouseDown],
                                  -                [fbPanel2, "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = this.getSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), 
                                  -            
                                  -            height = heightValue + "px",
                                  -            
                                  -            // Width related values
                                  -            sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidthValue = Math.max(sideWidthValue - 6, 0);
                                  -            
                                  -            var sideWidth = sideWidthValue + "px";
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -            
                                  -            if (Firebug.chrome.largeCommandLineVisible)
                                  -            {
                                  -                fbLargeCommandLine = $("fbLargeCommandLine");
                                  -                
                                  -                fbLargeCommandLine.style.height = heightValue - 4 + "px";
                                  -                fbLargeCommandLine.style.width = sideWidthValue - 2 + "px";
                                  -                
                                  -                fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -                fbLargeCommandButtons.style.width = sideWidth;
                                  -            }
                                  -            else
                                  -            {
                                  -                fbPanel2Style.height = height;
                                  -                fbPanel2Style.width = sideWidth;
                                  -                
                                  -                fbPanelBar2BoxStyle.width = sideWidth;
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            fbBottom.className = "";
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            fbBottom.className = "hide";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite =
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Cache = 
                                  -{
                                  -    ID: "firebug-" + new Date().getTime()
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - * 
                                  - * TODO: Investigate a possibility of cache validation, to be customized by each 
                                  - * kind of cache. For ElementCache it should validate if the element still is 
                                  - * inserted at the DOM.
                                  - */ 
                                  -var cacheUID = 0;
                                  -var createCache = function()
                                  -{
                                  -    var map = {};
                                  -    var data = {};
                                  -    
                                  -    var CID = Firebug.Lite.Cache.ID;
                                  -    
                                  -    // better detection
                                  -    var supportsDeleteExpando = !document.all;
                                  -    
                                  -    var cacheFunction = function(element)
                                  -    {
                                  -        return cacheAPI.set(element);
                                  -    };
                                  -    
                                  -    var cacheAPI =  
                                  -    {
                                  -        get: function(key)
                                  -        {
                                  -            return map.hasOwnProperty(key) ?
                                  -                    map[key] :
                                  -                    null;
                                  -        },
                                  -        
                                  -        set: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id)
                                  -            {
                                  -                id = ++cacheUID;
                                  -                element[CID] = id;
                                  -            }
                                  -            
                                  -            if (!map.hasOwnProperty(id))
                                  -            {
                                  -                map[id] = element;
                                  -                data[id] = {};
                                  -            }
                                  -            
                                  -            return id;
                                  -        },
                                  -        
                                  -        unset: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id) return;
                                  -            
                                  -            if (supportsDeleteExpando)
                                  -            {
                                  -                delete element[CID];
                                  -            }
                                  -            else if (element.removeAttribute)
                                  -            {
                                  -                element.removeAttribute(CID);
                                  -            }
                                  -
                                  -            delete map[id];
                                  -            delete data[id];
                                  -            
                                  -        },
                                  -        
                                  -        key: function(element)
                                  -        {
                                  -            return getValidatedKey(element);
                                  -        },
                                  -        
                                  -        has: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            return id && map.hasOwnProperty(id);
                                  -        },
                                  -        
                                  -        each: function(callback)
                                  -        {
                                  -            for (var key in map)
                                  -            {
                                  -                if (map.hasOwnProperty(key))
                                  -                {
                                  -                    callback(key, map[key]);
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        data: function(element, name, value)
                                  -        {
                                  -            // set data
                                  -            if (value)
                                  -            {
                                  -                if (!name) return null;
                                  -                
                                  -                var id = cacheAPI.set(element);
                                  -                
                                  -                return data[id][name] = value;
                                  -            }
                                  -            // get data
                                  -            else
                                  -            {
                                  -                var id = cacheAPI.key(element);
                                  -
                                  -                return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ?
                                  -                        data[id][name] :
                                  -                        null;
                                  -            }
                                  -        },
                                  -        
                                  -        clear: function()
                                  -        {
                                  -            for (var id in map)
                                  -            {
                                  -                var element = map[id];
                                  -                cacheAPI.unset(element);                
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var getValidatedKey = function(element)
                                  -    {
                                  -        var id = element[CID];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property CID will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            !supportsDeleteExpando &&   // the problem happens when supportsDeleteExpando is false
                                  -            id &&                       // the element has the expando property 
                                  -            map.hasOwnProperty(id) &&   // there is a cached element with the same id
                                  -            map[id] != element          // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            element.removeAttribute(CID);
                                  -
                                  -            id = null;
                                  -        }
                                  -        
                                  -        return id;
                                  -    };
                                  -    
                                  -    FBL.append(cacheFunction, cacheAPI);
                                  -    
                                  -    return cacheFunction;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro : check if we need really this on FBL scope
                                  -Firebug.Lite.Cache.StyleSheet = createCache();
                                  -Firebug.Lite.Cache.Element = createCache();
                                  -
                                  -// TODO: xxxpedro
                                  -Firebug.Lite.Cache.Event = createCache();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -var sourceMap = {};
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.Lite.Proxy = 
                                  -{
                                  -    // jsonp callbacks
                                  -    _callbacks: {},
                                  -    
                                  -    /**
                                  -     * Load a resource, either locally (directly) or externally (via proxy) using 
                                  -     * synchronous XHR calls. Loading external resources requires the proxy plugin to
                                  -     * be installed and configured (see /plugin/proxy/proxy.php).
                                  -     */
                                  -    load: function(url)
                                  -    {
                                  -        var resourceDomain = getDomain(url);
                                  -        var isLocalResource =
                                  -            // empty domain means local URL
                                  -            !resourceDomain ||
                                  -            // same domain means local too
                                  -            resourceDomain ==  Firebug.context.window.location.host; // TODO: xxxpedro context
                                  -        
                                  -        return isLocalResource ? fetchResource(url) : fetchProxyResource(url);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using JSONP technique.
                                  -     */
                                  -    loadJSONP: function(url, callback)
                                  -    {
                                  -        var script = createGlobalElement("script"),
                                  -            doc = Firebug.context.document,
                                  -            
                                  -            uid = "" + new Date().getTime(),
                                  -            callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid,
                                  -            
                                  -            jsonpURL = url.indexOf("?") != -1 ? 
                                  -                    url + "&" + callbackName :
                                  -                    url + "?" + callbackName;
                                  -            
                                  -        Firebug.Lite.Proxy._callbacks[uid] = function(data)
                                  -        {
                                  -            if (callback)
                                  -                callback(data);
                                  -            
                                  -            script.parentNode.removeChild(script);
                                  -            delete Firebug.Lite.Proxy._callbacks[uid];
                                  -        };
                                  -        
                                  -        script.src = jsonpURL;
                                  -        
                                  -        if (doc.documentElement)
                                  -            doc.documentElement.appendChild(script);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using YQL (not reliable).
                                  -     */
                                  -    YQL: function(url, callback)
                                  -    {
                                  -        var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" +
                                  -                encodeURIComponent(url) + "%22&format=xml";
                                  -        
                                  -        this.loadJSONP(yql, function(data)
                                  -        {
                                  -            var source = data.results[0];
                                  -            
                                  -            // clean up YQL bogus elements
                                  -            var match = /<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -            if (match)
                                  -                source = match[1];
                                  -            
                                  -            console.log(source);
                                  -        });
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage = 
                                  -    "/* Firebug Lite resource fetching is disabled.\n" +
                                  -    "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" +
                                  -    "More info at http://getfirebug.com/firebuglite#Options */";
                                  -
                                  -var fetchResource = function(url)
                                  -{
                                  -    if (Firebug.disableResourceFetching)
                                  -    {
                                  -        var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -        return source;
                                  -    }
                                  -
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    // Getting the native XHR object so our calls won't be logged in the Console Panel
                                  -    var xhr = FBL.getNativeXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    var source = sourceMap[url] = xhr.responseText; 
                                  -    return source;
                                  -};
                                  -
                                  -var fetchProxyResource = function(url)
                                  -{
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url);
                                  -    var response = fetchResource(proxyURL);
                                  -    
                                  -    try
                                  -    {
                                  -        var data = eval("(" + response + ")");
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return "ERROR: Firebug Lite Proxy plugin returned an invalid response.";
                                  -    }
                                  -    
                                  -    var source = data ? data.contents : ""; 
                                  -    return source;
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Style = 
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Script = function(window)
                                  -{
                                  -    this.fileName = null;
                                  -    this.isValid = null;
                                  -    this.baseLineNumber = null;
                                  -    this.lineExtent = null;
                                  -    this.tag = null;
                                  -    
                                  -    this.functionName = null;
                                  -    this.functionSource = null;
                                  -};
                                  -
                                  -Firebug.Lite.Script.prototype = 
                                  -{
                                  -    isLineExecutable: function(){},
                                  -    pcToLine: function(){},
                                  -    lineToPc: function(){},
                                  -    
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Script";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -Firebug.Lite.Browser = function(window)
                                  -{
                                  -    this.contentWindow = window;
                                  -    this.contentDocument = window.document;
                                  -    this.currentURI = 
                                  -    {
                                  -        spec: window.location.href
                                  -    };
                                  -};
                                  -
                                  -Firebug.Lite.Browser.prototype = 
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Browser";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -    http://www.JSON.org/json2.js
                                  -    2010-03-20
                                  -
                                  -    Public Domain.
                                  -
                                  -    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
                                  -
                                  -    See http://www.JSON.org/js.html
                                  -
                                  -
                                  -    This code should be minified before deployment.
                                  -    See http://javascript.crockford.com/jsmin.html
                                  -
                                  -    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
                                  -    NOT CONTROL.
                                  -
                                  -
                                  -    This file creates a global JSON object containing two methods: stringify
                                  -    and parse.
                                  -
                                  -        JSON.stringify(value, replacer, space)
                                  -            value       any JavaScript value, usually an object or array.
                                  -
                                  -            replacer    an optional parameter that determines how object
                                  -                        values are stringified for objects. It can be a
                                  -                        function or an array of strings.
                                  -
                                  -            space       an optional parameter that specifies the indentation
                                  -                        of nested structures. If it is omitted, the text will
                                  -                        be packed without extra whitespace. If it is a number,
                                  -                        it will specify the number of spaces to indent at each
                                  -                        level. If it is a string (such as '\t' or '&nbsp;'),
                                  -                        it contains the characters used to indent at each level.
                                  -
                                  -            This method produces a JSON text from a JavaScript value.
                                  -
                                  -            When an object value is found, if the object contains a toJSON
                                  -            method, its toJSON method will be called and the result will be
                                  -            stringified. A toJSON method does not serialize: it returns the
                                  -            value represented by the name/value pair that should be serialized,
                                  -            or undefined if nothing should be serialized. The toJSON method
                                  -            will be passed the key associated with the value, and this will be
                                  -            bound to the value
                                  -
                                  -            For example, this would serialize Dates as ISO strings.
                                  -
                                  -                Date.prototype.toJSON = function (key) {
                                  -                    function f(n) {
                                  -                        // Format integers to have at least two digits.
                                  -                        return n < 10 ? '0' + n : n;
                                  -                    }
                                  -
                                  -                    return this.getUTCFullYear()   + '-' +
                                  -                         f(this.getUTCMonth() + 1) + '-' +
                                  -                         f(this.getUTCDate())      + 'T' +
                                  -                         f(this.getUTCHours())     + ':' +
                                  -                         f(this.getUTCMinutes())   + ':' +
                                  -                         f(this.getUTCSeconds())   + 'Z';
                                  -                };
                                  -
                                  -            You can provide an optional replacer method. It will be passed the
                                  -            key and value of each member, with this bound to the containing
                                  -            object. The value that is returned from your method will be
                                  -            serialized. If your method returns undefined, then the member will
                                  -            be excluded from the serialization.
                                  -
                                  -            If the replacer parameter is an array of strings, then it will be
                                  -            used to select the members to be serialized. It filters the results
                                  -            such that only members with keys listed in the replacer array are
                                  -            stringified.
                                  -
                                  -            Values that do not have JSON representations, such as undefined or
                                  -            functions, will not be serialized. Such values in objects will be
                                  -            dropped; in arrays they will be replaced with null. You can use
                                  -            a replacer function to replace those with JSON values.
                                  -            JSON.stringify(undefined) returns undefined.
                                  -
                                  -            The optional space parameter produces a stringification of the
                                  -            value that is filled with line breaks and indentation to make it
                                  -            easier to read.
                                  -
                                  -            If the space parameter is a non-empty string, then that string will
                                  -            be used for indentation. If the space parameter is a number, then
                                  -            the indentation will be that many spaces.
                                  -
                                  -            Example:
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}]);
                                  -            // text is '["e",{"pluribus":"unum"}]'
                                  -
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
                                  -            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
                                  -
                                  -            text = JSON.stringify([new Date()], function (key, value) {
                                  -                return this[key] instanceof Date ?
                                  -                    'Date(' + this[key] + ')' : value;
                                  -            });
                                  -            // text is '["Date(---current time---)"]'
                                  -
                                  -
                                  -        JSON.parse(text, reviver)
                                  -            This method parses a JSON text to produce an object or array.
                                  -            It can throw a SyntaxError exception.
                                  -
                                  -            The optional reviver parameter is a function that can filter and
                                  -            transform the results. It receives each of the keys and values,
                                  -            and its return value is used instead of the original value.
                                  -            If it returns what it received, then the structure is not modified.
                                  -            If it returns undefined then the member is deleted.
                                  -
                                  -            Example:
                                  -
                                  -            // Parse the text. Values that look like ISO date strings will
                                  -            // be converted to Date objects.
                                  -
                                  -            myData = JSON.parse(text, function (key, value) {
                                  -                var a;
                                  -                if (typeof value === 'string') {
                                  -                    a =
                                  -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                                  -                    if (a) {
                                  -                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                                  -                            +a[5], +a[6]));
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                                  -                var d;
                                  -                if (typeof value === 'string' &&
                                  -                        value.slice(0, 5) === 'Date(' &&
                                  -                        value.slice(-1) === ')') {
                                  -                    d = new Date(value.slice(5, -1));
                                  -                    if (d) {
                                  -                        return d;
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -
                                  -    This is a reference implementation. You are free to copy, modify, or
                                  -    redistribute.
                                  -*/
                                  -
                                  -/*jslint evil: true, strict: false */
                                  -
                                  -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
                                  -    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
                                  -    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
                                  -    lastIndex, length, parse, prototype, push, replace, slice, stringify,
                                  -    test, toJSON, toString, valueOf
                                  -*/
                                  -
                                  -
                                  -// Create a JSON object only if one does not already exist. We create the
                                  -// methods in a closure to avoid creating global variables.
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var JSON = window.JSON || {};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -(function () {
                                  -
                                  -    function f(n) {
                                  -        // Format integers to have at least two digits.
                                  -        return n < 10 ? '0' + n : n;
                                  -    }
                                  -
                                  -    if (typeof Date.prototype.toJSON !== 'function') {
                                  -
                                  -        Date.prototype.toJSON = function (key) {
                                  -
                                  -            return isFinite(this.valueOf()) ?
                                  -                   this.getUTCFullYear()   + '-' +
                                  -                 f(this.getUTCMonth() + 1) + '-' +
                                  -                 f(this.getUTCDate())      + 'T' +
                                  -                 f(this.getUTCHours())     + ':' +
                                  -                 f(this.getUTCMinutes())   + ':' +
                                  -                 f(this.getUTCSeconds())   + 'Z' : null;
                                  -        };
                                  -
                                  -        String.prototype.toJSON =
                                  -        Number.prototype.toJSON =
                                  -        Boolean.prototype.toJSON = function (key) {
                                  -            return this.valueOf();
                                  -        };
                                  -    }
                                  -
                                  -    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        gap,
                                  -        indent,
                                  -        meta = {    // table of character substitutions
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '\\': '\\\\'
                                  -        },
                                  -        rep;
                                  -
                                  -
                                  -    function quote(string) {
                                  -
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can safely slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe escape
                                  -// sequences.
                                  -
                                  -        escapable.lastIndex = 0;
                                  -        return escapable.test(string) ?
                                  -            '"' + string.replace(escapable, function (a) {
                                  -                var c = meta[a];
                                  -                return typeof c === 'string' ? c :
                                  -                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -            }) + '"' :
                                  -            '"' + string + '"';
                                  -    }
                                  -
                                  -
                                  -    function str(key, holder) {
                                  -
                                  -// Produce a string from holder[key].
                                  -
                                  -        var i,          // The loop counter.
                                  -            k,          // The member key.
                                  -            v,          // The member value.
                                  -            length,
                                  -            mind = gap,
                                  -            partial,
                                  -            value = holder[key];
                                  -
                                  -// If the value has a toJSON method, call it to obtain a replacement value.
                                  -
                                  -        if (value && typeof value === 'object' &&
                                  -                typeof value.toJSON === 'function') {
                                  -            value = value.toJSON(key);
                                  -        }
                                  -
                                  -// If we were called with a replacer function, then call the replacer to
                                  -// obtain a replacement value.
                                  -
                                  -        if (typeof rep === 'function') {
                                  -            value = rep.call(holder, key, value);
                                  -        }
                                  -
                                  -// What happens next depends on the value's type.
                                  -
                                  -        switch (typeof value) {
                                  -        case 'string':
                                  -            return quote(value);
                                  -
                                  -        case 'number':
                                  -
                                  -// JSON numbers must be finite. Encode non-finite numbers as null.
                                  -
                                  -            return isFinite(value) ? String(value) : 'null';
                                  -
                                  -        case 'boolean':
                                  -        case 'null':
                                  -
                                  -// If the value is a boolean or null, convert it to a string. Note:
                                  -// typeof null does not produce 'null'. The case is included here in
                                  -// the remote chance that this gets fixed someday.
                                  -
                                  -            return String(value);
                                  -
                                  -// If the type is 'object', we might be dealing with an object or an array or
                                  -// null.
                                  -
                                  -        case 'object':
                                  -
                                  -// Due to a specification blunder in ECMAScript, typeof null is 'object',
                                  -// so watch out for that case.
                                  -
                                  -            if (!value) {
                                  -                return 'null';
                                  -            }
                                  -
                                  -// Make an array to hold the partial results of stringifying this object value.
                                  -
                                  -            gap += indent;
                                  -            partial = [];
                                  -
                                  -// Is the value an array?
                                  -
                                  -            if (Object.prototype.toString.apply(value) === '[object Array]') {
                                  -
                                  -// The value is an array. Stringify every element. Use null as a placeholder
                                  -// for non-JSON values.
                                  -
                                  -                length = value.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    partial[i] = str(i, value) || 'null';
                                  -                }
                                  -
                                  -// Join all of the elements together, separated with commas, and wrap them in
                                  -// brackets.
                                  -
                                  -                v = partial.length === 0 ? '[]' :
                                  -                    gap ? '[\n' + gap +
                                  -                            partial.join(',\n' + gap) + '\n' +
                                  -                                mind + ']' :
                                  -                          '[' + partial.join(',') + ']';
                                  -                gap = mind;
                                  -                return v;
                                  -            }
                                  -
                                  -// If the replacer is an array, use it to select the members to be stringified.
                                  -
                                  -            if (rep && typeof rep === 'object') {
                                  -                length = rep.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    k = rep[i];
                                  -                    if (typeof k === 'string') {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -
                                  -// Otherwise, iterate through all of the keys in the object.
                                  -
                                  -                for (k in value) {
                                  -                    if (Object.hasOwnProperty.call(value, k)) {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -// Join all of the member texts together, separated with commas,
                                  -// and wrap them in braces.
                                  -
                                  -            v = partial.length === 0 ? '{}' :
                                  -                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                                  -                        mind + '}' : '{' + partial.join(',') + '}';
                                  -            gap = mind;
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -// If the JSON object does not yet have a stringify method, give it one.
                                  -
                                  -    if (typeof JSON.stringify !== 'function') {
                                  -        JSON.stringify = function (value, replacer, space) {
                                  -
                                  -// The stringify method takes a value and an optional replacer, and an optional
                                  -// space parameter, and returns a JSON text. The replacer can be a function
                                  -// that can replace values, or an array of strings that will select the keys.
                                  -// A default replacer method can be provided. Use of the space parameter can
                                  -// produce text that is more easily readable.
                                  -
                                  -            var i;
                                  -            gap = '';
                                  -            indent = '';
                                  -
                                  -// If the space parameter is a number, make an indent string containing that
                                  -// many spaces.
                                  -
                                  -            if (typeof space === 'number') {
                                  -                for (i = 0; i < space; i += 1) {
                                  -                    indent += ' ';
                                  -                }
                                  -
                                  -// If the space parameter is a string, it will be used as the indent string.
                                  -
                                  -            } else if (typeof space === 'string') {
                                  -                indent = space;
                                  -            }
                                  -
                                  -// If there is a replacer, it must be a function or an array.
                                  -// Otherwise, throw an error.
                                  -
                                  -            rep = replacer;
                                  -            if (replacer && typeof replacer !== 'function' &&
                                  -                    (typeof replacer !== 'object' ||
                                  -                     typeof replacer.length !== 'number')) {
                                  -                throw new Error('JSON.stringify');
                                  -            }
                                  -
                                  -// Make a fake root object containing our value under the key of ''.
                                  -// Return the result of stringifying the value.
                                  -
                                  -            return str('', {'': value});
                                  -        };
                                  -    }
                                  -
                                  -
                                  -// If the JSON object does not yet have a parse method, give it one.
                                  -
                                  -    if (typeof JSON.parse !== 'function') {
                                  -        JSON.parse = function (text, reviver) {
                                  -
                                  -// The parse method takes a text and an optional reviver function, and returns
                                  -// a JavaScript value if the text is a valid JSON text.
                                  -
                                  -            var j;
                                  -
                                  -            function walk(holder, key) {
                                  -
                                  -// The walk method is used to recursively walk the resulting structure so
                                  -// that modifications can be made.
                                  -
                                  -                var k, v, value = holder[key];
                                  -                if (value && typeof value === 'object') {
                                  -                    for (k in value) {
                                  -                        if (Object.hasOwnProperty.call(value, k)) {
                                  -                            v = walk(value, k);
                                  -                            if (v !== undefined) {
                                  -                                value[k] = v;
                                  -                            } else {
                                  -                                delete value[k];
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                return reviver.call(holder, key, value);
                                  -            }
                                  -
                                  -
                                  -// Parsing happens in four stages. In the first stage, we replace certain
                                  -// Unicode characters with escape sequences. JavaScript handles many characters
                                  -// incorrectly, either silently deleting them, or treating them as line endings.
                                  -
                                  -            text = String(text);
                                  -            cx.lastIndex = 0;
                                  -            if (cx.test(text)) {
                                  -                text = text.replace(cx, function (a) {
                                  -                    return '\\u' +
                                  -                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -                });
                                  -            }
                                  -
                                  -// In the second stage, we run the text against regular expressions that look
                                  -// for non-JSON patterns. We are especially concerned with '()' and 'new'
                                  -// because they can cause invocation, and '=' because it can cause mutation.
                                  -// But just to be safe, we want to reject all unexpected forms.
                                  -
                                  -// We split the second stage into 4 regexp operations in order to work around
                                  -// crippling inefficiencies in IE's and Safari's regexp engines. First we
                                  -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
                                  -// replace all simple value tokens with ']' characters. Third, we delete all
                                  -// open brackets that follow a colon or comma or that begin the text. Finally,
                                  -// we look to see that the remaining characters are only whitespace or ']' or
                                  -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
                                  -
                                  -            if (/^[\],:{}\s]*$/.
                                  -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                                  -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
                                  -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                                  -
                                  -// In the third stage we use the eval function to compile the text into a
                                  -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                                  -// in JavaScript: it can begin a block or an object literal. We wrap the text
                                  -// in parens to eliminate the ambiguity.
                                  -
                                  -                j = eval('(' + text + ')');
                                  -
                                  -// In the optional fourth stage, we recursively walk the new structure, passing
                                  -// each name/value pair to a reviver function for possible transformation.
                                  -
                                  -                return typeof reviver === 'function' ?
                                  -                    walk({'': j}, '') : j;
                                  -            }
                                  -
                                  -// If the text is not JSON parseable, then a SyntaxError is thrown.
                                  -
                                  -            throw new SyntaxError('JSON.parse');
                                  -        };
                                  -    }
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.JSON = JSON;
                                  -
                                  -// ************************************************************************************************
                                  -}());
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -/* Copyright (c) 2010-2011 Marcus Westin
                                  - *
                                  - * Permission is hereby granted, free of charge, to any person obtaining a copy
                                  - * of this software and associated documentation files (the "Software"), to deal
                                  - * in the Software without restriction, including without limitation the rights
                                  - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  - * copies of the Software, and to permit persons to whom the Software is
                                  - * furnished to do so, subject to the following conditions:
                                  - *
                                  - * The above copyright notice and this permission notice shall be included in
                                  - * all copies or substantial portions of the Software.
                                  - *
                                  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  - * THE SOFTWARE.
                                  - */
                                  -
                                  -var store = (function(){
                                  -	var api = {},
                                  -		win = window,
                                  -		doc = win.document,
                                  -		localStorageName = 'localStorage',
                                  -		globalStorageName = 'globalStorage',
                                  -		namespace = '__firebug__storejs__',
                                  -		storage
                                  -
                                  -	api.disabled = false
                                  -	api.set = function(key, value) {}
                                  -	api.get = function(key) {}
                                  -	api.remove = function(key) {}
                                  -	api.clear = function() {}
                                  -	api.transact = function(key, transactionFn) {
                                  -		var val = api.get(key)
                                  -		if (typeof val == 'undefined') { val = {} }
                                  -		transactionFn(val)
                                  -		api.set(key, val)
                                  -	}
                                  -
                                  -	api.serialize = function(value) {
                                  -		return JSON.stringify(value)
                                  -	}
                                  -	api.deserialize = function(value) {
                                  -		if (typeof value != 'string') { return undefined }
                                  -		return JSON.parse(value)
                                  -	}
                                  -
                                  -	// Functions to encapsulate questionable FireFox 3.6.13 behavior 
                                  -	// when about.config::dom.storage.enabled === false
                                  -	// See https://github.com/marcuswestin/store.js/issues#issue/13
                                  -	function isLocalStorageNameSupported() {
                                  -		try { return (localStorageName in win && win[localStorageName]) }
                                  -		catch(err) { return false }
                                  -	}
                                  -	
                                  -	function isGlobalStorageNameSupported() {
                                  -		try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) }
                                  -		catch(err) { return false }
                                  -	}	
                                  -
                                  -	if (isLocalStorageNameSupported()) {
                                  -		storage = win[localStorageName]
                                  -		api.set = function(key, val) { storage.setItem(key, api.serialize(val)) }
                                  -		api.get = function(key) { return api.deserialize(storage.getItem(key)) }
                                  -		api.remove = function(key) { storage.removeItem(key) }
                                  -		api.clear = function() { storage.clear() }
                                  -
                                  -	} else if (isGlobalStorageNameSupported()) {
                                  -		storage = win[globalStorageName][win.location.hostname]
                                  -		api.set = function(key, val) { storage[key] = api.serialize(val) }
                                  -		api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) }
                                  -		api.remove = function(key) { delete storage[key] }
                                  -		api.clear = function() { for (var key in storage ) { delete storage[key] } }
                                  -
                                  -	} else if (doc.documentElement.addBehavior) {
                                  -		var storage = doc.createElement('div')
                                  -		function withIEStorage(storeFunction) {
                                  -			return function() {
                                  -				var args = Array.prototype.slice.call(arguments, 0)
                                  -				args.unshift(storage)
                                  -				// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
                                  -				// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
                                  -				// TODO: xxxpedro doc.body is not always available so we must use doc.documentElement.
                                  -				// We need to make sure this change won't affect the behavior of this library.
                                  -				doc.documentElement.appendChild(storage)
                                  -				storage.addBehavior('#default#userData')
                                  -				storage.load(localStorageName)
                                  -				var result = storeFunction.apply(api, args)
                                  -				doc.documentElement.removeChild(storage)
                                  -				return result
                                  -			}
                                  -		}
                                  -		api.set = withIEStorage(function(storage, key, val) {
                                  -			storage.setAttribute(key, api.serialize(val))
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.get = withIEStorage(function(storage, key) {
                                  -			return api.deserialize(storage.getAttribute(key))
                                  -		})
                                  -		api.remove = withIEStorage(function(storage, key) {
                                  -			storage.removeAttribute(key)
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.clear = withIEStorage(function(storage) {
                                  -			var attributes = storage.XMLDocument.documentElement.attributes
                                  -			storage.load(localStorageName)
                                  -			for (var i=0, attr; attr = attributes[i]; i++) {
                                  -				storage.removeAttribute(attr.name)
                                  -			}
                                  -			storage.save(localStorageName)
                                  -		})
                                  -	}
                                  -	
                                  -	try {
                                  -		api.set(namespace, namespace)
                                  -		if (api.get(namespace) != namespace) { api.disabled = true }
                                  -		api.remove(namespace)
                                  -	} catch(e) {
                                  -		api.disabled = true
                                  -	}
                                  -	
                                  -	return api
                                  -})();
                                  -
                                  -if (typeof module != 'undefined') { module.exports = store }
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.Store = store;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_selector*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -/**
                                  - * @name Firebug.Selector 
                                  - * @namespace
                                  - */
                                  -
                                  -/**
                                  - * @exports Sizzle as Firebug.Selector
                                  - */ 
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -/**#@+ @ignore */
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -/**#@-*/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache(targ))
                                  -            {
                                  -                var target = ""+ElementCache.key(targ);
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    if (Firebug.HTML)
                                  -                        Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0);
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache.has(targ))
                                  -                FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        // avoid error when the element is not attached a document
                                  -        if (!el || !el.parentNode)
                                  -            return;
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -( /** @scope s_domplate */ function() {
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -FBL.DomplateTag = function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateEmbed = function DomplateEmbed()
                                  -{
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateLoop = function DomplateLoop()
                                  -{
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var DomplateTag = FBL.DomplateTag;
                                  -var DomplateEmbed = FBL.DomplateEmbed;
                                  -var DomplateLoop = FBL.DomplateLoop;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var womb = null;
                                  -
                                  -FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -var domplate = FBL.domplate;
                                  -
                                  -FBL.domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -FBL.DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); };
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateEmbed.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateLoop.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -/** @class */
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -/** @class */
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** @namespace */
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild;
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertBefore: function(args, before, self)
                                  -    {
                                  -        return this.insertNode(args, before.ownerDocument, before, false, self);
                                  -    },
                                  -
                                  -    insertAfter: function(args, after, self)
                                  -    {
                                  -        return this.insertNode(args, after.ownerDocument, after, true, self);
                                  -    },
                                  -
                                  -    insertNode: function(args, doc, element, isAfter, self)
                                  -    {
                                  -        if (!args)
                                  -            args = {};
                                  -
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode html: "+html+"\n");
                                  -
                                  -        var doc = element.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        if (isAfter)
                                  -        {
                                  -            while (womb.firstChild)
                                  -                if (element.nextSibling)
                                  -                    element.parentNode.insertBefore(womb.firstChild, element.nextSibling);
                                  -                else
                                  -                    element.parentNode.appendChild(womb.firstChild);
                                  -        }
                                  -        else
                                  -        {
                                  -            while (womb.lastChild)
                                  -                element.parentNode.insertBefore(womb.lastChild, element);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -
                                  -    /*
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -    
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle "),
                                  -            
                                  -            SPAN({"class": "objectProps"}, 
                                  -                SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
                                  -                FOR("prop", "$object|propIterator",
                                  -                    SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"),
                                  -                    SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
                                  -                    TAG("$prop.tag", {object: "$prop.object"}),
                                  -                    SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
                                  -                ),
                                  -                SPAN({"class": "objectRightBrace"}, "}")
                                  -            )
                                  -        ),
                                  -
                                  -    propNumberTag:
                                  -        SPAN({"class": "objectProp-number"}, "$object"),
                                  -
                                  -    propStringTag:
                                  -        SPAN({"class": "objectProp-string"}, "&quot;$object&quot;"),
                                  -
                                  -    propObjectTag:
                                  -        SPAN({"class": "objectProp-object"}, "$object"),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        ///Firebug.ObjectShortIteratorMax;
                                  -        var maxLength = 55; // default max length for long representation
                                  -        
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var length = 0;
                                  -        
                                  -        var numProperties = 0;
                                  -        var numPropertiesShown = 0;
                                  -        var maxLengthReached = false;
                                  -        
                                  -        var lib = this;
                                  -        
                                  -        var propRepsMap = 
                                  -        {
                                  -            "boolean": this.propNumberTag,
                                  -            "number": this.propNumberTag,
                                  -            "string": this.propStringTag,
                                  -            "object": this.propObjectTag
                                  -        };
                                  -
                                  -        try
                                  -        {
                                  -            var title = Firebug.Rep.getTitle(object);
                                  -            length += title.length;
                                  -
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                
                                  -                var type = typeof(value);
                                  -                if (type == "boolean" || 
                                  -                    type == "number" || 
                                  -                    (type == "string" && value) || 
                                  -                    (type == "object" && value && value.toString))
                                  -                {
                                  -                    var tag = propRepsMap[type];
                                  -                    
                                  -                    var value = (type == "object") ?
                                  -                        Firebug.getRep(value).getTitle(value) :
                                  -                        value + "";
                                  -                        
                                  -                    length += name.length + value.length + 4;
                                  -                    
                                  -                    if (length <= maxLength)
                                  -                    {
                                  -                        props.push({
                                  -                            tag: tag, 
                                  -                            name: name, 
                                  -                            object: value, 
                                  -                            equal: "=", 
                                  -                            delim: ", "
                                  -                        });
                                  -                        
                                  -                        numPropertiesShown++;
                                  -                    }
                                  -                    else
                                  -                        maxLengthReached = true;
                                  -
                                  -                }
                                  -                
                                  -                numProperties++;
                                  -                
                                  -                if (maxLengthReached && numProperties > numPropertiesShown)
                                  -                    break;
                                  -            }
                                  -            
                                  -            if (numProperties > numPropertiesShown)
                                  -            {
                                  -                props.push({
                                  -                    object: "...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                });
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    fb_1_6_propIterator: function (object, max)
                                  -    {
                                  -        max = max || 3;
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0, count = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(value);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && value)
                                  -                    || (t == "object" && value && value.toString))
                                  -                {
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag || rep.tag;
                                  -                    if (t == "object")
                                  -                    {
                                  -                        value = rep.getTitle(value);
                                  -                        tag = rep.titleTag;
                                  -                    }
                                  -                    count++;
                                  -                    if (count <= max)
                                  -                        props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -            if (count > max)
                                  -            {
                                  -                props[Math.max(1,max-1)] = {
                                  -                    object: "more...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                };
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    /*
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -    /**/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.nodeName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.nodeName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 
                                  -                 // we must check if the attribute is specified otherwise IE will show them
                                  -                 if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.nodeName == "id")
                                  -                    idAttr = attr;
                                  -                 else if (attr.nodeName == "class")
                                  -                    classAttr = attr;
                                  -                 else if (attr.nodeName == "style")
                                  -                    attrs.push({
                                  -                        nodeName: attr.nodeName,
                                  -                        nodeValue: attr.nodeValue ||
                                  -                        // IE won't recognize the attr.nodeValue of <style> nodes ...
                                  -                        // and will return CSS property names in upper case, so we need to convert them
                                  -                        elt.style.cssText.replace(/([^\s]+)\s*:/g, 
                                  -                                function(m,g){return g.toLowerCase()+":"})                         
                                  -                    });
                                  -                 else
                                  -                    attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.nodeName == "id" || attr.nodeName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -     
                                  -     // TODO: xxxpedro remove this?
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -     /**/
                                  -
                                  -     getNodeTextGroups: function(element)
                                  -     {
                                  -         var text =  element.textContent;
                                  -         if (!Firebug.showFullTextNodes)
                                  -         {
                                  -             text=cropString(text,50);
                                  -         }
                                  -
                                  -         var escapeGroups=[];
                                  -
                                  -         if (Firebug.showTextNodesWithWhitespace)
                                  -             escapeGroups.push({
                                  -                'group': 'whitespace',
                                  -                'class': 'nodeWhiteSpace',
                                  -                'extra': {
                                  -                    '\t': '_Tab',
                                  -                    '\n': '_Para',
                                  -                    ' ' : '_Space'
                                  -                }
                                  -             });
                                  -         if (Firebug.showTextNodesWithEntities)
                                  -             escapeGroups.push({
                                  -                 'group':'text',
                                  -                 'class':'nodeTextEntity',
                                  -                 'extra':{}
                                  -             });
                                  -
                                  -         if (escapeGroups.length)
                                  -             return escapeGroupsForEntities(text, escapeGroups);
                                  -         else
                                  -             return [{str:text,'class':'',extra:''}];
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.nodeName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"),
                                  -            " ( ",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            " )",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        return frame.name || "anonymous";
                                  -        
                                  -        //return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        var fileName = cropString(getFileName(frame.href), 20);
                                  -        return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : "");
                                  -        
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var saveTimeout = 400;
                                  -var pageAmount = 10;
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var currentTarget = null;
                                  -var currentGroup = null;
                                  -var currentPanel = null;
                                  -var currentEditor = null;
                                  -
                                  -var defaultEditor = null;
                                  -
                                  -var originalClassName = null;
                                  -
                                  -var originalValue = null;
                                  -var defaultValue = null;
                                  -var previousValue = null;
                                  -
                                  -var invalidEditor = false;
                                  -var ignoreNextInput = false;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Editor = extend(Firebug.Module,
                                  -{
                                  -    supportsStopEvent: true,
                                  -
                                  -    dispatchName: "editor",
                                  -    tabCharacter: "    ",
                                  -
                                  -    startEditing: function(target, value, editor)
                                  -    {
                                  -        this.stopEditing();
                                  -
                                  -        if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter"))
                                  -            return;
                                  -
                                  -        var panel = Firebug.getElementPanel(target);
                                  -        if (!panel.editable)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.startEditing " + value, target);
                                  -
                                  -        defaultValue = target.getAttribute("defaultValue");
                                  -        if (value == undefined)
                                  -        {
                                  -            var textContent = isIE ? "innerText" : "textContent";
                                  -            value = target[textContent];
                                  -            if (value == defaultValue)
                                  -                value = "";
                                  -        }
                                  -
                                  -        originalValue = previousValue = value;
                                  -
                                  -        invalidEditor = false;
                                  -        currentTarget = target;
                                  -        currentPanel = panel;
                                  -        currentGroup = getAncestorByClass(target, "editGroup");
                                  -
                                  -        currentPanel.editing = true;
                                  -
                                  -        var panelEditor = currentPanel.getEditor(target, value);
                                  -        currentEditor = editor ? editor : panelEditor;
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        var inlineParent = getInlineParent(target);
                                  -        var targetSize = getOffsetSize(inlineParent);
                                  -
                                  -        setClass(panel.panelNode, "editing");
                                  -        setClass(target, "editing");
                                  -        if (currentGroup)
                                  -            setClass(currentGroup, "editing");
                                  -
                                  -        currentEditor.show(target, currentPanel, value, targetSize);
                                  -        //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
                                  -        currentEditor.beginEditing(target, value);
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Editor start panel "+currentPanel.name);
                                  -        this.attachListeners(currentEditor, panel.context);
                                  -    },
                                  -
                                  -    stopEditing: function(cancel)
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout);
                                  -
                                  -        clearTimeout(this.saveTimeout);
                                  -        delete this.saveTimeout;
                                  -
                                  -        this.detachListeners(currentEditor, currentPanel.context);
                                  -
                                  -        removeClass(currentPanel.panelNode, "editing");
                                  -        removeClass(currentTarget, "editing");
                                  -        if (currentGroup)
                                  -            removeClass(currentGroup, "editing");
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        if (value == defaultValue)
                                  -            value = "";
                                  -
                                  -        var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
                                  -
                                  -        try
                                  -        {
                                  -            if (cancel)
                                  -            {
                                  -                //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]);
                                  -                if (value != originalValue)
                                  -                    this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
                                  -
                                  -                if (removeGroup && !originalValue && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else if (!value)
                                  -            {
                                  -                this.saveEditAndNotifyListeners(currentTarget, null, previousValue);
                                  -
                                  -                if (removeGroup && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else
                                  -                this.save(value);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            //throw exc.message;
                                  -            //ERROR(exc);
                                  -        }
                                  -
                                  -        currentEditor.hide();
                                  -        currentPanel.editing = false;
                                  -
                                  -        //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]);
                                  -        //if (FBTrace.DBG_EDITOR)
                                  -        //    FBTrace.sysout("Editor stop panel "+currentPanel.name);
                                  -        
                                  -        currentTarget = null;
                                  -        currentGroup = null;
                                  -        currentPanel = null;
                                  -        currentEditor = null;
                                  -        originalValue = null;
                                  -        invalidEditor = false;
                                  -
                                  -        return value;
                                  -    },
                                  -
                                  -    cancelEditing: function()
                                  -    {
                                  -        return this.stopEditing(true);
                                  -    },
                                  -
                                  -    update: function(saveNow)
                                  -    {
                                  -        if (this.saveTimeout)
                                  -            clearTimeout(this.saveTimeout);
                                  -
                                  -        invalidEditor = true;
                                  -
                                  -        currentEditor.layout();
                                  -
                                  -        if (saveNow)
                                  -            this.save();
                                  -        else
                                  -        {
                                  -            var context = currentPanel.context;
                                  -            this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout);
                                  -            if (FBTrace.DBG_EDITOR)
                                  -                FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
                                  -        }
                                  -    },
                                  -
                                  -    save: function(value)
                                  -    {
                                  -        if (!invalidEditor)
                                  -            return;
                                  -
                                  -        if (value == undefined)
                                  -            value = currentEditor.getValue();
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"));
                                  -        try
                                  -        {
                                  -            this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
                                  -
                                  -            previousValue = value;
                                  -            invalidEditor = false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("editor.save FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
                                  -    {
                                  -        currentEditor.saveEdit(currentTarget, value, previousValue);
                                  -        //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]);
                                  -    },
                                  -
                                  -    setEditTarget: function(element)
                                  -    {
                                  -        if (!element)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]);
                                  -            this.stopEditing();
                                  -        }
                                  -        else if (hasClass(element, "insertBefore"))
                                  -            this.insertRow(element, "before");
                                  -        else if (hasClass(element, "insertAfter"))
                                  -            this.insertRow(element, "after");
                                  -        else
                                  -            this.startEditing(element);
                                  -    },
                                  -
                                  -    tabNextEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var nextEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            nextEditable = !value && currentGroup
                                  -                ? getNextOutsider(nextEditable, currentGroup)
                                  -                : getNextByClass(nextEditable, "editable");
                                  -        }
                                  -        while (nextEditable && !nextEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(nextEditable);
                                  -    },
                                  -
                                  -    tabPreviousEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var prevEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            prevEditable = !value && currentGroup
                                  -                ? getPreviousOutsider(prevEditable, currentGroup)
                                  -                : getPreviousByClass(prevEditable, "editable");
                                  -        }
                                  -        while (prevEditable && !prevEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(prevEditable);
                                  -    },
                                  -
                                  -    insertRow: function(relative, insertWhere)
                                  -    {
                                  -        var group =
                                  -            relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget;
                                  -        var value = this.stopEditing();
                                  -
                                  -        currentPanel = Firebug.getElementPanel(group);
                                  -
                                  -        currentEditor = currentPanel.getEditor(group, value);
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        currentGroup = currentEditor.insertNewRow(group, insertWhere);
                                  -        if (!currentGroup)
                                  -            return;
                                  -
                                  -        var editable = hasClass(currentGroup, "editable")
                                  -            ? currentGroup
                                  -            : getNextByClass(currentGroup, "editable");
                                  -
                                  -        if (editable)
                                  -            this.setEditTarget(editable);
                                  -    },
                                  -
                                  -    insertRowForObject: function(relative)
                                  -    {
                                  -        var container = getAncestorByClass(relative, "insertInto");
                                  -        if (container)
                                  -        {
                                  -            relative = getChildByClass(container, "insertBefore");
                                  -            if (relative)
                                  -                this.insertRow(relative, "before");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachListeners: function(editor, context)
                                  -    {
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        addEvent(win, "resize", this.onResize);
                                  -        addEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        this.listeners = [
                                  -            chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this))
                                  -        ];
                                  -
                                  -        if (editor.arrowCompletion)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)),
                                  -                chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)),
                                  -                chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)),
                                  -                chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount))
                                  -            );
                                  -        }
                                  -
                                  -        if (currentEditor.tabNavigation)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")),
                                  -                chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this))
                                  -            );
                                  -        }
                                  -        else if (currentEditor.multiLine)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("TAB", null, insertTab)
                                  -            );
                                  -        }
                                  -        else
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this))
                                  -            );
                                  -
                                  -            if (currentEditor.tabCompletion)
                                  -            {
                                  -                this.listeners.push(
                                  -                    chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)),
                                  -                    chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1))
                                  -                );
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    detachListeners: function(editor, context)
                                  -    {
                                  -        if (!this.listeners)
                                  -            return;
                                  -
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        removeEvent(win, "resize", this.onResize);
                                  -        removeEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -        if (chrome)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; ++i)
                                  -                chrome.keyIgnore(this.listeners[i]);
                                  -        }
                                  -
                                  -        delete this.listeners;
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        currentEditor.layout(true);
                                  -    },
                                  -
                                  -    onBlur: function(event)
                                  -    {
                                  -        if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box))
                                  -            this.stopEditing();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -
                                  -        this.onResize = bindFixed(this.onResize, this);
                                  -        this.onBlur = bind(this.onBlur, this);
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        this.stopEditing();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// BaseEditor
                                  -
                                  -Firebug.BaseEditor = extend(Firebug.MeasureBox,
                                  -{
                                  -    getValue: function()
                                  -    {
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for context menus within inline editors.
                                  -
                                  -    getContextMenuItems: function(target)
                                  -    {
                                  -        var items = [];
                                  -        items.push({label: "Cut", commandID: "cmd_cut"});
                                  -        items.push({label: "Copy", commandID: "cmd_copy"});
                                  -        items.push({label: "Paste", commandID: "cmd_paste"});
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Editor Module listeners will get "onBeginEditing" just before this call
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // Editor Module listeners will get "onSaveEdit" just after this call
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// InlineEditor
                                  -
                                  -// basic inline editor attributes
                                  -var inlineEditorAttributes = {
                                  -    "class": "textEditorInner",
                                  -    
                                  -    type: "text", 
                                  -    spellcheck: "false",
                                  -    
                                  -    onkeypress: "$onKeyPress",
                                  -    
                                  -    onoverflow: "$onOverflow",
                                  -    oncontextmenu: "$onContextMenu"
                                  -};
                                  -
                                  -// IE does not support the oninput event, so we're using the onkeydown to signalize
                                  -// the relevant keyboard events, and the onpropertychange to actually handle the
                                  -// input event, which should happen after the onkeydown event is fired and after the 
                                  -// value of the input is updated, but before the onkeyup and before the input (with the 
                                  -// new value) is rendered
                                  -if (isIE)
                                  -{
                                  -    inlineEditorAttributes.onpropertychange = "$onInput";
                                  -    inlineEditorAttributes.onkeydown = "$onKeyDown";
                                  -}
                                  -// for other browsers we use the oninput event
                                  -else
                                  -{
                                  -    inlineEditorAttributes.oninput = "$onInput";
                                  -}
                                  -
                                  -Firebug.InlineEditor = function(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -};
                                  -
                                  -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    enterOnBlur: true,
                                  -    outerMargin: 8,
                                  -    shadowExpand: 7,
                                  -
                                  -    tag:
                                  -        DIV({"class": "inlineEditor"},
                                  -            DIV({"class": "textEditorTop1"},
                                  -                DIV({"class": "textEditorTop2"})
                                  -            ),
                                  -            DIV({"class": "textEditorInner1"},
                                  -                DIV({"class": "textEditorInner2"},
                                  -                    INPUT(
                                  -                        inlineEditorAttributes
                                  -                    )
                                  -                )
                                  -            ),
                                  -            DIV({"class": "textEditorBottom1"},
                                  -                DIV({"class": "textEditorBottom2"})
                                  -            )
                                  -        ),
                                  -
                                  -    inputTag :
                                  -        INPUT({"class": "textEditorInner", type: "text",
                                  -            /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
                                  -        ),
                                  -
                                  -    expanderTag:
                                  -        IMG({"class": "inlineExpander", src: "blank.gif"}),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.fixedWidth = false;
                                  -        this.completeAsYouType = true;
                                  -        this.tabNavigation = true;
                                  -        this.multiLine = false;
                                  -        this.tabCompletion = false;
                                  -        this.arrowCompletion = true;
                                  -        this.noWrap = true;
                                  -        this.numeric = false;
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        this.destroyInput();
                                  -    },
                                  -
                                  -    initializeInline: function(doc)
                                  -    {
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Firebug.InlineEditor initializeInline()");
                                  -        
                                  -        //this.box = this.tag.replace({}, doc, this);
                                  -        this.box = this.tag.append({}, doc.body, this);
                                  -        
                                  -        //this.input = this.box.childNodes[1].firstChild.firstChild;  // XXXjjb childNode[1] required
                                  -        this.input = this.box.getElementsByTagName("input")[0];
                                  -        
                                  -        if (isIElt8)
                                  -        {
                                  -            this.input.style.top = "-8px";
                                  -        }
                                  -        
                                  -        this.expander = this.expanderTag.replace({}, doc, this);
                                  -        this.initialize();
                                  -    },
                                  -
                                  -    destroyInput: function()
                                  -    {
                                  -        // XXXjoe Need to remove input/keypress handlers to avoid leaks
                                  -    },
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        // It's only a one-line editor, so new lines shouldn't be allowed
                                  -        return this.input.value = stripNewLines(value);
                                  -    },
                                  -
                                  -    show: function(target, panel, value, targetSize)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]);
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.targetSize = targetSize;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        //this.targetOffset = getClientOffset(target);
                                  -        
                                  -        // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the 
                                  -        // offset values of invisible elements, or empty elements. So, in order to get the 
                                  -        // correct values, we temporary inject a character in the innerHTML of the empty element, 
                                  -        // then we get the offset values, and next, we restore the original innerHTML value.
                                  -        var innerHTML = target.innerHTML;
                                  -        var isEmptyElement = !innerHTML;
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = ".";
                                  -        
                                  -        // Get the position of the target element (that is about to be edited)
                                  -        this.targetOffset = 
                                  -        {
                                  -            x: target.offsetLeft,
                                  -            y: target.offsetTop
                                  -        };
                                  -        
                                  -        // Restore the original innerHTML value of the empty element
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = innerHTML;
                                  -        
                                  -        this.originalClassName = this.box.className;
                                  -
                                  -        var classNames = target.className.split(" ");
                                  -        for (var i = 0; i < classNames.length; ++i)
                                  -            setClass(this.box, "editor-" + classNames[i]);
                                  -
                                  -        // Make the editor match the target's font style
                                  -        copyTextStyles(target, this.box);
                                  -
                                  -        this.setValue(value);
                                  -
                                  -        if (this.fixedWidth)
                                  -            this.updateLayout(true);
                                  -        else
                                  -        {
                                  -            this.startMeasuring(target);
                                  -            this.textSize = this.measureInputText(value);
                                  -
                                  -            // Correct the height of the box to make the funky CSS drop-shadow line up
                                  -            var parent = this.input.parentNode;
                                  -            if (hasClass(parent, "textEditorInner2"))
                                  -            {
                                  -                var yDiff = this.textSize.height - this.shadowExpand;
                                  -                
                                  -                // IE6 height offset
                                  -                if (isIE6)
                                  -                    yDiff -= 2;
                                  -                
                                  -                parent.style.height = yDiff + "px";
                                  -                parent.parentNode.style.height = yDiff + "px";
                                  -            }
                                  -
                                  -            this.updateLayout(true);
                                  -        }
                                  -
                                  -        this.getAutoCompleter().reset();
                                  -
                                  -        if (isIElt8)
                                  -            panel.panelNode.appendChild(this.box);
                                  -        else
                                  -            target.offsetParent.appendChild(this.box);        
                                  -        
                                  -        //console.log(target);
                                  -        //this.input.select(); // it's called bellow, with setTimeout
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            // reset input style
                                  -            this.input.style.fontFamily = "Monospace";
                                  -            this.input.style.fontSize = "11px";
                                  -        }
                                  -
                                  -        // Insert the "expander" to cover the target element with white space
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            copyBoxStyles(target, this.expander);
                                  -
                                  -            target.parentNode.replaceChild(this.expander, target);
                                  -            collapse(target, true);
                                  -            this.expander.parentNode.insertBefore(target, this.expander);
                                  -        }
                                  -
                                  -        //TODO: xxxpedro
                                  -        //scrollIntoCenterView(this.box, null, true);
                                  -        
                                  -        // Display the editor after change its size and position to avoid flickering
                                  -        this.box.style.display = "block";
                                  -        
                                  -        // we need to call input.focus() and input.select() with a timeout, 
                                  -        // otherwise it won't work on all browsers due to timing issues 
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.input.focus();
                                  -            self.input.select();
                                  -        },0);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.box.className = this.originalClassName;
                                  -        
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            this.stopMeasuring();
                                  -
                                  -            collapse(this.target, false);
                                  -
                                  -            if (this.expander.parentNode)
                                  -                this.expander.parentNode.removeChild(this.expander);
                                  -        }
                                  -
                                  -        if (this.box.parentNode)
                                  -        {
                                  -            ///setSelectionRange(this.input, 0, 0);
                                  -            this.input.blur();
                                  -            
                                  -            this.box.parentNode.removeChild(this.box);
                                  -        }
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -        if (!this.fixedWidth)
                                  -            this.textSize = this.measureInputText(this.input.value);
                                  -
                                  -        if (forceAll)
                                  -            this.targetOffset = getClientOffset(this.expander);
                                  -
                                  -        this.updateLayout(false, forceAll);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleter: function()
                                  -    {
                                  -        if (!this.autoCompleter)
                                  -        {
                                  -            this.autoCompleter = new Firebug.AutoCompleter(null,
                                  -                bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this),
                                  -                true, false);
                                  -        }
                                  -
                                  -        return this.autoCompleter;
                                  -    },
                                  -
                                  -    completeValue: function(amt)
                                  -    {
                                  -        //console.log("completeValue");
                                  -        
                                  -        var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); 
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            Firebug.Editor.update(true);
                                  -            
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -        else
                                  -            this.incrementValue(amt);
                                  -    },
                                  -
                                  -    incrementValue: function(amt)
                                  -    {
                                  -        var value = this.input.value;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        if (isIE)
                                  -            var start = getInputSelectionStart(this.input), end = start;
                                  -        else
                                  -            var start = this.input.selectionStart, end = this.input.selectionEnd;
                                  -
                                  -        //debugger;
                                  -        var range = this.getAutoCompleteRange(value, start);
                                  -        if (!range || range.type != "int")
                                  -            range = {start: 0, end: value.length-1};
                                  -
                                  -        var expr = value.substr(range.start, range.end-range.start+1);
                                  -        preExpr = value.substr(0, range.start);
                                  -        postExpr = value.substr(range.end+1);
                                  -
                                  -        // See if the value is an integer, and if so increment it
                                  -        var intValue = parseInt(expr);
                                  -        if (!!intValue || intValue == 0)
                                  -        {
                                  -            var m = /\d+/.exec(expr);
                                  -            var digitPost = expr.substr(m.index+m[0].length);
                                  -
                                  -            var completion = intValue-amt;
                                  -            this.input.value = preExpr + completion + digitPost + postExpr;
                                  -            
                                  -            setSelectionRange(this.input, start, end);
                                  -
                                  -            Firebug.Editor.update(true);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        //console.log("onKeyPress", event);
                                  -        if (event.keyCode == 27 && !this.completeAsYouType)
                                  -        {
                                  -            var reverted = this.getAutoCompleter().revert(this.input);
                                  -            if (reverted)
                                  -                cancelEvent(event);
                                  -        }
                                  -        else if (event.charCode && this.advanceToNext(this.target, event.charCode))
                                  -        {
                                  -            Firebug.Editor.tabNextEditor();
                                  -            cancelEvent(event);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57)
                                  -                && event.charCode != 45 && event.charCode != 46)
                                  -                FBL.cancelEvent(event);
                                  -            else
                                  -            {
                                  -                // If the user backspaces, don't autocomplete after the upcoming input event
                                  -                this.ignoreNextInput = event.keyCode == 8;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onOverflow: function()
                                  -    {
                                  -        this.updateLayout(false, false, 3);
                                  -    },
                                  -
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        //console.log("onKeyDown", event.keyCode);
                                  -        if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8)
                                  -        {
                                  -            this.keyDownPressed = true;
                                  -        }
                                  -    },
                                  -    
                                  -    onInput: function(event)
                                  -    {
                                  -        //debugger;
                                  -        
                                  -        // skip not relevant onpropertychange calls on IE
                                  -        if (isIE)
                                  -        {
                                  -            if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) 
                                  -                return;
                                  -            
                                  -            this.keyDownPressed = false;
                                  -        }
                                  -        
                                  -        //console.log("onInput", event);
                                  -        //console.trace();
                                  -        
                                  -        var selectRangeCallback;
                                  -        
                                  -        if (this.ignoreNextInput)
                                  -        {
                                  -            this.ignoreNextInput = false;
                                  -            this.getAutoCompleter().reset();
                                  -        }
                                  -        else if (this.completeAsYouType)
                                  -            selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false);
                                  -        else
                                  -            this.getAutoCompleter().reset();
                                  -
                                  -        Firebug.Editor.update();
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var popup = $("fbInlineEditorPopup");
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        var menu = this.getContextMenuItems(target);
                                  -        if (menu)
                                  -        {
                                  -            for (var i = 0; i < menu.length; ++i)
                                  -                FBL.createMenuItem(popup, menu[i]);
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -
                                  -        popup.openPopupAtScreen(event.screenX, event.screenY, true);
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateLayout: function(initial, forceAll, extraWidth)
                                  -    {
                                  -        if (this.fixedWidth)
                                  -        {
                                  -            this.box.style.left = (this.targetOffset.x) + "px";
                                  -            this.box.style.top = (this.targetOffset.y) + "px";
                                  -
                                  -            var w = this.target.offsetWidth;
                                  -            var h = this.target.offsetHeight;
                                  -            this.input.style.width = w + "px";
                                  -            this.input.style.height = (h-3) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            if (initial || forceAll)
                                  -            {
                                  -                this.box.style.left = this.targetOffset.x + "px";
                                  -                this.box.style.top = this.targetOffset.y + "px";
                                  -            }
                                  -
                                  -            var approxTextWidth = this.textSize.width;
                                  -            var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x)
                                  -                - this.outerMargin;
                                  -
                                  -            var wrapped = initial
                                  -                ? this.noWrap && this.targetSize.height > this.textSize.height+3
                                  -                : this.noWrap && approxTextWidth > maxWidth;
                                  -
                                  -            if (wrapped)
                                  -            {
                                  -                var style = isIE ?
                                  -                        this.target.currentStyle :
                                  -                        this.target.ownerDocument.defaultView.getComputedStyle(this.target, "");
                                  -                
                                  -                targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight);
                                  -
                                  -                // Make the width fit the remaining x-space from the offset to the far right
                                  -                approxTextWidth = maxWidth - targetMargin;
                                  -
                                  -                this.input.style.width = "100%";
                                  -                this.box.style.width = approxTextWidth + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                // Make the input one character wider than the text value so that
                                  -                // typing does not ever cause the textbox to scroll
                                  -                var charWidth = this.measureInputText('m').width;
                                  -
                                  -                // Sometimes we need to make the editor a little wider, specifically when
                                  -                // an overflow happens, otherwise it will scroll off some text on the left
                                  -                if (extraWidth)
                                  -                    charWidth *= extraWidth;
                                  -
                                  -                var inputWidth = approxTextWidth + charWidth;
                                  -
                                  -                if (initial)
                                  -                {
                                  -                    if (isIE)
                                  -                    {
                                  -                        // TODO: xxxpedro
                                  -                        var xDiff = 13;
                                  -                        this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                    }
                                  -                    else
                                  -                        this.box.style.width = "auto";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // TODO: xxxpedro
                                  -                    var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth;
                                  -                    this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                }
                                  -
                                  -                this.input.style.width = inputWidth + "px";
                                  -            }
                                  -
                                  -            this.expander.style.width = approxTextWidth + "px";
                                  -            this.expander.style.height = Math.max(this.textSize.height-3,0) + "px";
                                  -        }
                                  -
                                  -        if (forceAll)
                                  -            scrollIntoCenterView(this.box, null, true);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Autocompletion
                                  -
                                  -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive)
                                  -{
                                  -    var candidates = null;
                                  -    var originalValue = null;
                                  -    var originalOffset = -1;
                                  -    var lastExpr = null;
                                  -    var lastOffset = -1;
                                  -    var exprOffset = 0;
                                  -    var lastIndex = 0;
                                  -    var preParsed = null;
                                  -    var preExpr = null;
                                  -    var postExpr = null;
                                  -
                                  -    this.revert = function(textBox)
                                  -    {
                                  -        if (originalOffset != -1)
                                  -        {
                                  -            textBox.value = originalValue;
                                  -            
                                  -            setSelectionRange(textBox, originalOffset, originalOffset);
                                  -
                                  -            this.reset();
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            this.reset();
                                  -            return false;
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        candidates = null;
                                  -        originalValue = null;
                                  -        originalOffset = -1;
                                  -        lastExpr = null;
                                  -        lastOffset = 0;
                                  -        exprOffset = 0;
                                  -    };
                                  -
                                  -    this.complete = function(context, textBox, cycle, reverse)
                                  -    {
                                  -        //console.log("complete", context, textBox, cycle, reverse);
                                  -        // TODO: xxxpedro important port to firebug (variable leak)
                                  -        //var value = lastValue = textBox.value;
                                  -        var value = textBox.value;
                                  -        
                                  -        //var offset = textBox.selectionStart;
                                  -        var offset = getInputSelectionStart(textBox);
                                  -        
                                  -        // The result of selectionStart() in Safari/Chrome is 1 unit less than the result
                                  -        // in Firefox. Therefore, we need to manually adjust the value here.
                                  -        if (isSafari && !cycle && offset >= 0) offset++;
                                  -        
                                  -        if (!selectMode && originalOffset != -1)
                                  -            offset = originalOffset;
                                  -
                                  -        if (!candidates || !cycle || offset != lastOffset)
                                  -        {
                                  -            originalOffset = offset;
                                  -            originalValue = value;
                                  -
                                  -            // Find the part of the string that will be parsed
                                  -            var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0;
                                  -            preParsed = value.substr(0, parseStart);
                                  -            var parsed = value.substr(parseStart);
                                  -
                                  -            // Find the part of the string that is being completed
                                  -            var range = getRange ? getRange(parsed, offset-parseStart, context) : null;
                                  -            if (!range)
                                  -                range = {start: 0, end: parsed.length-1 };
                                  -
                                  -            var expr = parsed.substr(range.start, range.end-range.start+1);
                                  -            preExpr = parsed.substr(0, range.start);
                                  -            postExpr = parsed.substr(range.end+1);
                                  -            exprOffset = parseStart + range.start;
                                  -
                                  -            if (!cycle)
                                  -            {
                                  -                if (!expr)
                                  -                    return;
                                  -                else if (lastExpr && lastExpr.indexOf(expr) != 0)
                                  -                {
                                  -                    candidates = null;
                                  -                }
                                  -                else if (lastExpr && lastExpr.length >= expr.length)
                                  -                {
                                  -                    candidates = null;
                                  -                    lastExpr = expr;
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            lastExpr = expr;
                                  -            lastOffset = offset;
                                  -
                                  -            var searchExpr;
                                  -
                                  -            // Check if the cursor is at the very right edge of the expression, or
                                  -            // somewhere in the middle of it
                                  -            if (expr && offset != parseStart+range.end+1)
                                  -            {
                                  -                if (cycle)
                                  -                {
                                  -                    // We are in the middle of the expression, but we can
                                  -                    // complete by cycling to the next item in the values
                                  -                    // list after the expression
                                  -                    offset = range.start;
                                  -                    searchExpr = expr;
                                  -                    expr = "";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // We can't complete unless we are at the ridge edge
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            var values = evaluator(preExpr, expr, postExpr, context);
                                  -            if (!values)
                                  -                return;
                                  -
                                  -            if (expr)
                                  -            {
                                  -                // Filter the list of values to those which begin with expr. We
                                  -                // will then go on to complete the first value in the resulting list
                                  -                candidates = [];
                                  -
                                  -                if (caseSensitive)
                                  -                {
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.indexOf(expr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = caseSensitive ? expr : expr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -
                                  -                lastIndex = reverse ? candidates.length-1 : 0;
                                  -            }
                                  -            else if (searchExpr)
                                  -            {
                                  -                var searchIndex = -1;
                                  -
                                  -                // Find the first instance of searchExpr in the values list. We
                                  -                // will then complete the string that is found
                                  -                if (caseSensitive)
                                  -                {
                                  -                    searchIndex = values.indexOf(expr);
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = searchExpr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                        {
                                  -                            searchIndex = i;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                // Nothing found, so there's nothing to complete to
                                  -                if (searchIndex == -1)
                                  -                    return this.reset();
                                  -
                                  -                expr = searchExpr;
                                  -                candidates = cloneArray(values);
                                  -                lastIndex = searchIndex;
                                  -            }
                                  -            else
                                  -            {
                                  -                expr = "";
                                  -                candidates = [];
                                  -                for (var i = 0; i < values.length; ++i)
                                  -                {
                                  -                    if (values[i].substr)
                                  -                        candidates.push(values[i]);
                                  -                }
                                  -                lastIndex = -1;
                                  -            }
                                  -        }
                                  -
                                  -        if (cycle)
                                  -        {
                                  -            expr = lastExpr;
                                  -            lastIndex += reverse ? -1 : 1;
                                  -        }
                                  -
                                  -        if (!candidates.length)
                                  -            return;
                                  -
                                  -        if (lastIndex >= candidates.length)
                                  -            lastIndex = 0;
                                  -        else if (lastIndex < 0)
                                  -            lastIndex = candidates.length-1;
                                  -
                                  -        var completion = candidates[lastIndex];
                                  -        var preCompletion = expr.substr(0, offset-exprOffset);
                                  -        var postCompletion = completion.substr(offset-exprOffset);
                                  -
                                  -        textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr;
                                  -        var offsetEnd = preParsed.length + preExpr.length + completion.length;
                                  -        
                                  -        // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange()
                                  -        // is working well.
                                  -        /*
                                  -        if (textBox.setSelectionRange)
                                  -        {
                                  -            // we must select the range with a timeout, otherwise the text won't
                                  -            // be properly selected (because after this function executes, the editor's
                                  -            // input will be resized to fit the whole text)
                                  -            setTimeout(function(){
                                  -                if (selectMode)
                                  -                    textBox.setSelectionRange(offset, offsetEnd);
                                  -                else
                                  -                    textBox.setSelectionRange(offsetEnd, offsetEnd);
                                  -            },0);
                                  -        }
                                  -        /**/
                                  -        
                                  -        // we must select the range with a timeout, otherwise the text won't
                                  -        // be properly selected (because after this function executes, the editor's
                                  -        // input will be resized to fit the whole text)
                                  -        /*
                                  -        setTimeout(function(){
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        },0);
                                  -                
                                  -        return true;
                                  -        /**/
                                  -        
                                  -        // The editor text should be selected only after calling the editor.update() 
                                  -        // in Safari/Chrome, otherwise the text won't be selected. So, we're returning
                                  -        // a function to be called later (in the proper time for all browsers).
                                  -        //
                                  -        // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid
                                  -        // returning a closure. the complete() function seems to be called only twice in
                                  -        // editor.js. See if this function is called anywhere else (like css.js for example).
                                  -        return function(){
                                  -            //console.log("autocomplete ", textBox, offset, offsetEnd);
                                  -            
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        };
                                  -        /**/
                                  -    };
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getDefaultEditor = function getDefaultEditor(panel)
                                  -{
                                  -    if (!defaultEditor)
                                  -    {
                                  -        var doc = panel.document;
                                  -        defaultEditor = new Firebug.InlineEditor(doc);
                                  -    }
                                  -
                                  -    return defaultEditor;
                                  -}
                                  -
                                  -/**
                                  - * An outsider is the first element matching the stepper element that
                                  - * is not an child of group. Elements tagged with insertBefore or insertAfter
                                  - * classes are also excluded from these results unless they are the sibling
                                  - * of group, relative to group's parent editGroup. This allows for the proper insertion
                                  - * rows when groups are nested.
                                  - */
                                  -var getOutsider = function getOutsider(element, group, stepper)
                                  -{
                                  -    var parentGroup = getAncestorByClass(group.parentNode, "editGroup");
                                  -    var next;
                                  -    do
                                  -    {
                                  -        next = stepper(next || element);
                                  -    }
                                  -    while (isAncestor(next, group) || isGroupInsert(next, parentGroup));
                                  -
                                  -    return next;
                                  -}
                                  -
                                  -var isGroupInsert = function isGroupInsert(next, group)
                                  -{
                                  -    return (!group || isAncestor(next, group))
                                  -        && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter"));
                                  -}
                                  -
                                  -var getNextOutsider = function getNextOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getNextByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getPreviousOutsider = function getPreviousOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getInlineParent = function getInlineParent(element)
                                  -{
                                  -    var lastInline = element;
                                  -    for (; element; element = element.parentNode)
                                  -    {
                                  -        //var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        var s = isIE ?
                                  -                element.currentStyle :
                                  -                element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        
                                  -        if (s.display != "inline")
                                  -            return lastInline;
                                  -        else
                                  -            lastInline = element;
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -var insertTab = function insertTab()
                                  -{
                                  -    insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Editor);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (Env.Options.disableXHRListener)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -// XHRSpy
                                  -    
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// XMLHttpRequestWrapper
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal variables
                                  -    
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal methods
                                  -    
                                  -    var updateSelfPropertiesIgnore = {
                                  -        abort: 1,
                                  -        channel: 1,
                                  -        getAllResponseHeaders: 1,
                                  -        getInterface: 1,
                                  -        getResponseHeader: 1,
                                  -        mozBackgroundRequest: 1,
                                  -        multipart: 1,
                                  -        onreadystatechange: 1,
                                  -        open: 1,
                                  -        send: 1,
                                  -        setRequestHeader: 1
                                  -    };
                                  -    
                                  -    var updateSelfProperties = function()
                                  -    {
                                  -        if (supportsXHRIterator)
                                  -        {
                                  -            for (var propName in xhrRequest)
                                  -            {
                                  -                if (propName in updateSelfPropertiesIgnore)
                                  -                    continue;
                                  -                
                                  -                try
                                  -                {
                                  -                    var propValue = xhrRequest[propName];
                                  -                    
                                  -                    if (propValue && !isFunction(propValue))
                                  -                        self[propName] = propValue;
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    //console.log(propName, E.message);
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // will fail to read these xhrRequest properties if the request is not completed
                                  -            if (xhrRequest.readyState == 4)
                                  -            {
                                  -                self.status = xhrRequest.status;
                                  -                self.statusText = xhrRequest.statusText;
                                  -                self.responseText = xhrRequest.responseText;
                                  -                self.responseXML = xhrRequest.responseXML;
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var updateXHRPropertiesIgnore = {
                                  -        channel: 1,
                                  -        onreadystatechange: 1,
                                  -        readyState: 1,
                                  -        responseBody: 1,
                                  -        responseText: 1,
                                  -        responseXML: 1,
                                  -        status: 1,
                                  -        statusText: 1,
                                  -        upload: 1
                                  -    };
                                  -    
                                  -    var updateXHRProperties = function()
                                  -    {
                                  -        for (var propName in self)
                                  -        {
                                  -            if (propName in updateXHRPropertiesIgnore)
                                  -                continue;
                                  -            
                                  -            try
                                  -            {
                                  -                var propValue = self[propName];
                                  -                
                                  -                if (propValue && !xhrRequest[propName])
                                  -                {
                                  -                    xhrRequest[propName] = propValue;
                                  -                }
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                //console.log(propName, E.message);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var logXHR = function() 
                                  -    {
                                  -        var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR);
                                  -        
                                  -        if (row)
                                  -        {
                                  -            setClass(row, "loading");
                                  -            spy.logRow = row;
                                  -        }
                                  -    };
                                  -    
                                  -    var finishXHR = function() 
                                  -    {
                                  -        var duration = new Date().getTime() - reqStartTS;
                                  -        var success = xhrRequest.status == 200;
                                  -        
                                  -        var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -        var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : [];
                                  -        var reHeader = /^(\S+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, l=responses.length; i<l; i++)
                                  -        {
                                  -            var text = responses[i];
                                  -            var match = text.match(reHeader);
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var name = match[1];
                                  -                var value = match[2];
                                  -                
                                  -                // update the spy mimeType property so we can detect when to show 
                                  -                // custom response viewers (such as HTML, XML or JSON viewer)
                                  -                if (name == "Content-Type")
                                  -                    spy.mimeType = value;
                                  -                
                                  -                /*
                                  -                if (name == "Last Modified")
                                  -                {
                                  -                    if (!spy.cacheEntry)
                                  -                        spy.cacheEntry = [];
                                  -                    
                                  -                    spy.cacheEntry.push({
                                  -                       name: [name],
                                  -                       value: [value]
                                  -                    });
                                  -                }
                                  -                /**/
                                  -                
                                  -                spy.responseHeaders.push({
                                  -                   name: [name],
                                  -                   value: [value]
                                  -                });
                                  -            }
                                  -        }
                                  -            
                                  -        with({
                                  -            row: spy.logRow, 
                                  -            status: xhrRequest.status == 0 ? 
                                  -                        // if xhrRequest.status == 0 then accessing xhrRequest.statusText
                                  -                        // will cause an error, so we must handle this case (Issue 3504)
                                  -                        "" : xhrRequest.status + " " + xhrRequest.statusText, 
                                  -            time: duration,
                                  -            success: success
                                  -        })
                                  -        {
                                  -            setTimeout(function(){
                                  -                
                                  -                spy.responseText = xhrRequest.responseText;
                                  -                
                                  -                // update row information to avoid "ethernal spinning gif" bug in IE 
                                  -                row = row || spy.logRow;
                                  -                
                                  -                // if chrome document is not loaded, there will be no row yet, so just ignore
                                  -                if (!row) return;
                                  -                
                                  -                // update the XHR representation data
                                  -                handleRequestStatus(success, status, time);
                                  -                
                                  -            },200);
                                  -        }
                                  -        
                                  -        spy.loaded = true;
                                  -        /*
                                  -        // commented because they are being updated by the updateSelfProperties() function
                                  -        self.status = xhrRequest.status;
                                  -        self.statusText = xhrRequest.statusText;
                                  -        self.responseText = xhrRequest.responseText;
                                  -        self.responseXML = xhrRequest.responseXML;
                                  -        /**/
                                  -        updateSelfProperties();
                                  -    };
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log(["onreadystatechange", xhrRequest.readyState, xhrRequest.readyState == 4 && xhrRequest.status]);
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            finishXHR();
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    // update the XHR representation data
                                  -    var handleRequestStatus = function(success, status, time)
                                  -    {
                                  -        var row = spy.logRow;
                                  -        FBL.removeClass(row, "loading");
                                  -        
                                  -        if (!success)
                                  -            FBL.setClass(row, "error");
                                  -        
                                  -        var item = FBL.$$(".spyStatus", row)[0];
                                  -        item.innerHTML = status;
                                  -        
                                  -        if (time)
                                  -        {
                                  -            var item = FBL.$$(".spyTime", row)[0];
                                  -            item.innerHTML = time + "ms";
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public properties and handlers
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public methods
                                  -    
                                  -    this.open = function(method, url, async, user, password)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        updateSelfProperties();
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        spy.urlParams = parseURLParamsArray(url);
                                  -        
                                  -        try
                                  -        {
                                  -            // xhrRequest.open.apply may not be available in IE
                                  -            if (supportsApply)
                                  -                xhrRequest.open.apply(xhrRequest, arguments);
                                  -            else
                                  -                xhrRequest.open(method, url, async, user, password);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        spy.data = data;
                                  -        
                                  -        reqStartTS = new Date().getTime();
                                  -        
                                  -        updateXHRProperties();
                                  -        
                                  -        try
                                  -        {
                                  -            xhrRequest.send(data);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            // TODO: xxxpedro XHR throws or not?
                                  -            //throw e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            logXHR();
                                  -            
                                  -            if (!spy.async)
                                  -            {
                                  -                self.readyState = xhrRequest.readyState;
                                  -                
                                  -                // sometimes an error happens when calling finishXHR()
                                  -                // Issue 3422: Firebug Lite breaks Google Instant Search
                                  -                try
                                  -                {
                                  -                    finishXHR();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        return xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        xhrRequest.abort();
                                  -        updateSelfProperties();
                                  -        handleRequestStatus(false, "Aborted");
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    /**/
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Clone XHR object
                                  -
                                  -    // xhrRequest.open.apply not available in IE and will throw an error in 
                                  -    // IE6 by simply reading xhrRequest.open so we must sniff it
                                  -    var supportsApply = !isIE6 &&
                                  -            xhrRequest && 
                                  -            xhrRequest.open && 
                                  -            typeof xhrRequest.open.apply != "undefined";
                                  -    
                                  -    var numberOfXHRProperties = 0;
                                  -    for (var propName in xhrRequest)
                                  -    {
                                  -        numberOfXHRProperties++;
                                  -        
                                  -        if (propName in updateSelfPropertiesIgnore)
                                  -            continue;
                                  -        
                                  -        try
                                  -        {
                                  -            var propValue = xhrRequest[propName];
                                  -            
                                  -            if (isFunction(propValue))
                                  -            {
                                  -                if (typeof self[propName] == "undefined")
                                  -                {
                                  -                    this[propName] = (function(name, xhr){
                                  -                    
                                  -                        return supportsApply ?
                                  -                            // if the browser supports apply 
                                  -                            function()
                                  -                            {
                                  -                                return xhr[name].apply(xhr, arguments);
                                  -                            }
                                  -                            :
                                  -                            function(a,b,c,d,e)
                                  -                            {
                                  -                                return xhr[name](a,b,c,d,e);
                                  -                            };
                                  -                    
                                  -                    })(propName, xhrRequest);
                                  -                } 
                                  -            }
                                  -            else
                                  -                this[propName] = propValue;
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            //console.log(propName, E.message);
                                  -        }
                                  -    }
                                  -    
                                  -    // IE6 does not support for (var prop in XHR)
                                  -    var supportsXHRIterator = numberOfXHRProperties > 0;
                                  -    
                                  -    /**/
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ActiveXObject Wrapper (IE6 only)
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    _ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new _ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Register the XMLHttpRequestWrapper for non-IE6 browsers
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    };
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -
                                  -FBL.getNativeXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new _XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new _ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -        this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]);
                                  -        this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]);
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                var postText = $$(".netInfoPostText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                var putText = $$(".netInfoPutText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else ///if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            
                                  -            ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0];
                                  -            
                                  -            ///iframe.contentWindow.document.body.innerHTML = text;
                                  -            
                                  -            // TODO: xxxpedro net - remove scripts
                                  -            var reScript = /<script(.|\s)*?\/script>/gi;
                                  -            
                                  -            text = text.replace(reScript, "");
                                  -                
                                  -            iframe.contentWindow.document.write(text);
                                  -            iframe.contentWindow.document.close();
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0];
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0];
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        ///var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        var sourceNode = $$(".source", node)[0];
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents posted data within request info (the info, which is visible when
                                  - * a request entry is expanded. This template renders content of the Post tab.
                                  - */
                                  -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/
                                  -{
                                  -    // application/x-www-form-urlencoded
                                  -    paramsTable:
                                  -        TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")},
                                  -                TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
                                  -                    TD({colspan: 3, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parameters"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "application/x-www-form-urlencoded"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // multipart/form-data
                                  -    partsTable:
                                  -        TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parts")},
                                  -                TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role":"presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parts"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "multipart/form-data"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/json
                                  -    jsonTable:
                                  -        TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")},
                                  -            TBODY({"role": "list", "aria-label": $STR("JSON")},
                                  -                TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            ///$STR("jsonviewer.tab.JSON")
                                  -                            $STR("JSON")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostJSONBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/xml
                                  -    xmlTable:
                                  -        TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")},
                                  -                TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("xmlviewer.tab.XML")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostXMLBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTable:
                                  -        TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Source")},
                                  -                TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostSource"},
                                  -                            $STR("net.label.Source")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceBodyTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                FOR("line", "$param|getParamValueIterator",
                                  -                    CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        return NetInfoBody.getParamValueIterator(param);
                                  -    },
                                  -
                                  -    render: function(context, parentNode, file)
                                  -    {
                                  -        //debugger;
                                  -        var spy = getAncestorByClass(parentNode, "spyHead");
                                  -        var spyObject = spy.repObject;
                                  -        var data = spyObject.data;
                                  -        
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        var contentType = file.mimeType;
                                  -        
                                  -        ///var text = Utils.getPostText(file, context, true);
                                  -        ///if (text == undefined)
                                  -        ///    return;
                                  -
                                  -        ///if (Utils.isURLEncodedRequest(file, context))
                                  -        // fake Utils.isURLEncodedRequest identification
                                  -        if (contentType && contentType == "application/x-www-form-urlencoded" ||
                                  -            data && data.indexOf("=") != -1) 
                                  -        {
                                  -            ///var lines = text.split("\n");
                                  -            ///var params = parseURLEncodedText(lines[lines.length-1]);
                                  -            var params = parseURLEncodedTextArray(data);
                                  -            if (params)
                                  -                this.insertParameters(parentNode, params);
                                  -        }
                                  -
                                  -        ///if (Utils.isMultiPartRequest(file, context))
                                  -        ///{
                                  -        ///    var data = this.parseMultiPartText(file, context);
                                  -        ///    if (data)
                                  -        ///        this.insertParts(parentNode, data);
                                  -        ///}
                                  -
                                  -        // moved to the top
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -
                                  -        ///if (Firebug.JSONViewerModel.isJSON(contentType))
                                  -        var jsonData = {
                                  -            responseText: data
                                  -        };
                                  -        
                                  -        if (Firebug.JSONViewerModel.isJSON(contentType, data))
                                  -            ///this.insertJSON(parentNode, file, context);
                                  -            this.insertJSON(parentNode, jsonData, context);
                                  -
                                  -        ///if (Firebug.XMLViewerModel.isXML(contentType))
                                  -        ///    this.insertXML(parentNode, file, context);
                                  -
                                  -        ///var postText = Utils.getPostText(file, context);
                                  -        ///postText = Utils.formatPostText(postText);
                                  -        var postText = data;
                                  -        if (postText)
                                  -            this.insertSource(parentNode, postText);
                                  -    },
                                  -
                                  -    insertParameters: function(parentNode, params)
                                  -    {
                                  -        if (!params || !params.length)
                                  -            return;
                                  -
                                  -        var paramTable = this.paramsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostParamsTitle", paramTable)[0];
                                  -        //var paramTable = this.paramsTable.append(null, parentNode);
                                  -        //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
                                  -        
                                  -        var tbody = paramTable.getElementsByTagName("tbody")[0];
                                  -        
                                  -        NetInfoBody.headerDataTag.insertRows({headers: params}, row);
                                  -    },
                                  -
                                  -    insertParts: function(parentNode, data)
                                  -    {
                                  -        if (!data.params || !data.params.length)
                                  -            return;
                                  -
                                  -        var partsTable = this.partsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostPartsTitle", paramTable)[0];
                                  -        //var partsTable = this.partsTable.append(null, parentNode);
                                  -        //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
                                  -    },
                                  -
                                  -    insertJSON: function(parentNode, file, context)
                                  -    {
                                  -        ///var text = Utils.getPostText(file, context);
                                  -        var text = file.responseText;
                                  -        ///var data = parseJSONString(text, "http://" + file.request.originalURI.host);
                                  -        var data = parseJSONString(text);
                                  -        if (!data)
                                  -            return;
                                  -
                                  -        ///var jsonTable = this.jsonTable.append(null, parentNode);
                                  -        var jsonTable = this.jsonTable.append({}, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0];
                                  -
                                  -        if (!this.toggles)
                                  -            this.toggles = {};
                                  -
                                  -        Firebug.DOMPanel.DirTable.tag.replace(
                                  -            {object: data, toggles: this.toggles}, jsonBody);
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -
                                  -        var jsonTable = this.xmlTable.append(null, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0];
                                  -
                                  -        Firebug.XMLViewerModel.insertXML(jsonBody, text);
                                  -    },
                                  -
                                  -    insertSource: function(parentNode, text)
                                  -    {
                                  -        var sourceTable = this.sourceTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostSourceTitle", sourceTable)[0];
                                  -        //var sourceTable = this.sourceTable.append(null, parentNode);
                                  -        //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
                                  -
                                  -        var param = {value: [text]};
                                  -        this.sourceBodyTag.insertRows({param: param}, row);
                                  -    },
                                  -
                                  -    parseMultiPartText: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text == undefined)
                                  -            return null;
                                  -
                                  -        FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
                                  -
                                  -        var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
                                  -
                                  -        var divider = "\r\n\r\n";
                                  -        var bodyStart = text.indexOf(divider);
                                  -        var body = text.substr(bodyStart + divider.length);
                                  -
                                  -        var postData = {};
                                  -        postData.mimeType = "multipart/form-data";
                                  -        postData.params = [];
                                  -
                                  -        var parts = body.split("--" + boundary);
                                  -        for (var i=0; i<parts.length; i++)
                                  -        {
                                  -            var part = parts[i].split(divider);
                                  -            if (part.length != 2)
                                  -                continue;
                                  -
                                  -            var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -            postData.params.push({
                                  -                name: (m && m.length > 1) ? m[1] : "",
                                  -                value: trim(part[1])
                                  -            });
                                  -        }
                                  -
                                  -        return postData;
                                  -    }
                                  -});
                                  -
                                  -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a;};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy, logRow);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow)
                                  -{
                                  -    if (!spy.logRow && logRow)
                                  -        spy.logRow = logRow;
                                  -    
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// List of JSON content types.
                                  -var contentTypes =
                                  -{
                                  -    // TODO: create issue: jsonViewer will not try to evaluate the contents of the requested file 
                                  -    // if the content-type is set to "text/plain"
                                  -    //"text/plain": 1,
                                  -    "text/javascript": 1,
                                  -    "text/x-javascript": 1,
                                  -    "text/json": 1,
                                  -    "text/x-json": 1,
                                  -    "application/json": 1,
                                  -    "application/x-json": 1,
                                  -    "application/javascript": 1,
                                  -    "application/x-javascript": 1,
                                  -    "application/json-rpc": 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -Firebug.JSONViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "jsonViewer",
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -
                                  -        // Used by Firebug.DOMPanel.DirTable domplate.
                                  -        this.toggles = {};
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_JSONVIEWER)
                                  -            FBTrace.sysout("jsonviewer.initTabBody", infoBox);
                                  -
                                  -        // Let listeners to parse the JSON.
                                  -        dispatch(this.fbListeners, "onParseJSON", [file]);
                                  -
                                  -        // The JSON is still no there, try to parse most common cases.
                                  -        if (!file.jsonObject)
                                  -        {
                                  -            ///if (this.isJSON(safeGetContentType(file.request), file.responseText))
                                  -            if (this.isJSON(file.mimeType, file.responseText))
                                  -                file.jsonObject = this.parseJSON(file);
                                  -        }
                                  -
                                  -        // The jsonObject is created so, the JSON tab can be displayed.
                                  -        if (file.jsonObject && hasProperties(file.jsonObject))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
                                  -                ///$STR("jsonviewer.tab.JSON"));
                                  -                $STR("JSON"));
                                  -
                                  -            if (FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
                                  -                    (typeof(file.jsonObject) != "undefined"), file.jsonObject);
                                  -        }
                                  -    },
                                  -
                                  -    isJSON: function(contentType, data)
                                  -    {
                                  -        // Workaround for JSON responses without proper content type
                                  -        // Let's consider all responses starting with "{" as JSON. In the worst
                                  -        // case there will be an exception when parsing. This means that no-JSON
                                  -        // responses (and post data) (with "{") can be parsed unnecessarily,
                                  -        // which represents a little overhead, but this happens only if the request
                                  -        // is actually expanded by the user in the UI (Net & Console panels).
                                  -        
                                  -        ///var responseText = data ? trimLeft(data) : null;
                                  -        ///if (responseText && responseText.indexOf("{") == 0)
                                  -        ///    return true;
                                  -        var responseText = data ? trim(data) : null;
                                  -        if (responseText && responseText.indexOf("{") == 0)
                                  -            return true;
                                  -
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        contentType = contentType.split(";")[0];
                                  -        contentType = trim(contentType);
                                  -        return contentTypes[contentType];
                                  -    },
                                  -
                                  -    // Update listener for TabView
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
                                  -        var tabBody = $$(".netInfoJSONText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        if (file.jsonObject) {
                                  -            Firebug.DOMPanel.DirTable.tag.replace(
                                  -                 {object: file.jsonObject, toggles: this.toggles}, tabBody);
                                  -        }
                                  -    },
                                  -
                                  -    parseJSON: function(file)
                                  -    {
                                  -        var jsonString = new String(file.responseText);
                                  -        ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
                                  -        return parseJSONString(jsonString);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.JSONViewerModel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -// List of XML related content types.
                                  -var xmlContentTypes =
                                  -[
                                  -    "text/xml",
                                  -    "application/xml",
                                  -    "application/xhtml+xml",
                                  -    "application/rss+xml",
                                  -    "application/atom+xml",,
                                  -    "application/vnd.mozilla.maybe.feed",
                                  -    "application/rdf+xml",
                                  -    "application/vnd.mozilla.xul+xml"
                                  -];
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -/**
                                  - * @module Implements viewer for XML based network responses. In order to create a new
                                  - * tab wihin network request detail, a listener is registered into
                                  - * <code>Firebug.NetMonitor.NetInfoBody</code> object.
                                  - */
                                  -Firebug.XMLViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "xmlViewer",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.shutdown.apply(this, arguments);
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    /**
                                  -     * Check response's content-type and if it's a XML, create a new tab with XML preview.
                                  -     */
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.initTabBody", infoBox);
                                  -
                                  -        // If the response is XML let's display a pretty preview.
                                  -        ///if (this.isXML(safeGetContentType(file.request)))
                                  -        if (this.isXML(file.mimeType, file.responseText))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
                                  -                ///$STR("xmlviewer.tab.XML"));
                                  -                $STR("XML"));
                                  -
                                  -            if (FBTrace.DBG_XMLVIEWER)
                                  -                FBTrace.sysout("xmlviewer.initTabBody; XML response available");
                                  -        }
                                  -    },
                                  -
                                  -    isXML: function(contentType)
                                  -    {
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        // Look if the response is XML based.
                                  -        for (var i=0; i<xmlContentTypes.length; i++)
                                  -        {
                                  -            if (contentType.indexOf(xmlContentTypes[i]) == 0)
                                  -                return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Parse XML response and render pretty printed preview.
                                  -     */
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
                                  -        var tabBody = $$(".netInfoXMLText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoXMLTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        this.insertXML(tabBody, Firebug.NetMonitor.Utils.getResponseText(file, context));
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, text)
                                  -    {
                                  -        var xmlText = text.replace(/^\s*<?.+?>\s*/, "");
                                  -        
                                  -        var div = parentNode.ownerDocument.createElement("div");
                                  -        div.innerHTML = xmlText;
                                  -        
                                  -        var root = div.getElementsByTagName("*")[0];
                                  -    
                                  -        /***
                                  -        var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
                                  -        var doc = parser.parseFromString(text, "text/xml");
                                  -        var root = doc.documentElement;
                                  -
                                  -        // Error handling
                                  -        var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
                                  -        if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
                                  -        {
                                  -            this.ParseError.tag.replace({error: {
                                  -                message: root.firstChild.nodeValue,
                                  -                source: root.lastChild.textContent
                                  -            }}, parentNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
                                  -
                                  -        // Override getHidden in these templates. The parsed XML documen is
                                  -        // hidden, but we want to display it using 'visible' styling.
                                  -        /*
                                  -        var templates = [
                                  -            Firebug.HTMLPanel.CompleteElement,
                                  -            Firebug.HTMLPanel.Element,
                                  -            Firebug.HTMLPanel.TextElement,
                                  -            Firebug.HTMLPanel.EmptyElement,
                                  -            Firebug.HTMLPanel.XEmptyElement,
                                  -        ];
                                  -
                                  -        var originals = [];
                                  -        for (var i=0; i<templates.length; i++)
                                  -        {
                                  -            originals[i] = templates[i].getHidden;
                                  -            templates[i].getHidden = function() {
                                  -                return "";
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        // Generate XML preview.
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: root}, parentNode);
                                  -        var html = [];
                                  -        Firebug.Reps.appendNode(root, html);
                                  -        parentNode.innerHTML = html.join("");
                                  -        
                                  -
                                  -        /*
                                  -        for (var i=0; i<originals.length; i++)
                                  -            templates[i].getHidden = originals[i];/**/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Domplate
                                  -
                                  -/**
                                  - * @domplate Represents a template for displaying XML parser errors. Used by
                                  - * <code>Firebug.XMLViewerModel</code>.
                                  - */
                                  -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "xmlInfoError"},
                                  -            DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
                                  -            PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
                                  -        ),
                                  -
                                  -    getSource: function(error)
                                  -    {
                                  -        var parts = error.source.split("\n");
                                  -        if (parts.length != 2)
                                  -            return error.source;
                                  -
                                  -        var limit = 50;
                                  -        var column = parts[1].length;
                                  -        if (column >= limit) {
                                  -            parts[0] = "..." + parts[0].substr(column - limit);
                                  -            parts[1] = "..." + parts[1].substr(column - limit);
                                  -        }
                                  -
                                  -        if (parts[0].length > 80)
                                  -            parts[0] = parts[0].substr(0, 80) + "...";
                                  -
                                  -        return parts.join("\n");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.XMLViewerModel);
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -/*
                                  -
                                  -// new offline message handler
                                  -o = {x:1,y:2};
                                  -
                                  -r = Firebug.getRep(o);
                                  -
                                  -r.tag.tag.compile();
                                  -
                                  -outputs = [];
                                  -html = r.tag.renderHTML({object:o}, outputs);
                                  -
                                  -
                                  -// finish rendering the template (the DOM part)
                                  -target = $("build");
                                  -target.innerHTML = html;
                                  -root = target.firstChild;
                                  -
                                  -domArgs = [root, r.tag.context, 0];
                                  -domArgs.push.apply(domArgs, r.tag.domArgs);
                                  -domArgs.push.apply(domArgs, outputs);
                                  -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs);
                                  -
                                  -
                                  - */
                                  -var consoleQueue = [];
                                  -var lastHighlightedObject;
                                  -var FirebugContext = Env.browser;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -            else
                                  -            {
                                  -                consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            //context = FirebugContext;
                                  -            context = Firebug.context;
                                  -
                                  -        /*
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -        /**/
                                  -        
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -        {
                                  -            panel.clear();
                                  -        }
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -    
                                  -    flush: function()
                                  -    {
                                  -        dispatch(this.fbListeners,"flush",[]);
                                  -        
                                  -        for (var i=0, length=consoleQueue.length; i<length; i++)
                                  -        {
                                  -            var args = consoleQueue[i];
                                  -            this.logRow.apply(this, args);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {} // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // TODO: xxxpedro console2
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        if (!Firebug.Inspector) return;
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -    
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        var repObject = object ? object.repObject : null;
                                  -        
                                  -        if (!repObject)
                                  -        {
                                  -            return;
                                  -        }
                                  -        
                                  -        if (hasClass(object, "objectLink-object"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(repObject, true);
                                  -        }
                                  -        else if (hasClass(object, "objectLink-element"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -            Firebug.chrome.getPanel("HTML").select(repObject, true);
                                  -        }
                                  -        
                                  -        /*
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        /**/
                                  -        
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    //searchable: true,
                                  -    //breakable: true,
                                  -    //editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true
                                  -    },
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.document;
                                  -        this.onMouseMove = bind(this.onMouseMove, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //Firebug.Console.injector.install(Firebug.browser.window);
                                  -        
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseMove);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        //consolex.trace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        //removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -    
                                  -var frameCounters = {};
                                  -var traceRecursion = 0;
                                  -
                                  -Firebug.Console.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupCollapsed",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments);};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -                c.firebuglite = Firebug.version;
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox;
                                  -        
                                  -        if (win.console)
                                  -        {
                                  -            if (Env.Options.overrideConsole)
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            else
                                  -                // if there's a console object and overrideConsole is false we should just quit
                                  -                return;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                // try overriding the console object
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                // if something goes wrong create the firebug object instead
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            }
                                  -        }
                                  -        
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebuglite = Firebug.version;    
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        //TODO: xxxpedro console error
                                  -        //if (arguments.length == 1)
                                  -        //{
                                  -        //    logAssert("error", arguments);  // add more info based on stack trace
                                  -        //}
                                  -        //else
                                  -        //{
                                  -            //Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        //}
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        // TODO: xxxpedro console2: is there a better way to find a unique ID for the coun() call?
                                  -        var frameId = "0";
                                  -        //var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!frameCounters)
                                  -                frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -            {
                                  -                return f.getName();
                                  -            }
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -            {
                                  -                return f.name;
                                  -            }
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        traceRecursion++;
                                  -        
                                  -        if (traceRecursion > 1)
                                  -        {
                                  -            traceRecursion--;
                                  -            return;
                                  -        }
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        
                                  -        try
                                  -        {
                                  -            (0)();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var result = e;
                                  -            
                                  -            var stack = 
                                  -                result.stack || // Firefox / Google Chrome 
                                  -                result.stacktrace || // Opera
                                  -                "";
                                  -            
                                  -            stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -            var items = stack.split(/[\n\r]/);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Google Chrome
                                  -            if (FBL.isSafari)
                                  -            {
                                  -                //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -                //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                
                                  -                var reChromeStackItemName = /\s*\($/;
                                  -                var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=4, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos];
                                  -                    var item = items[i];
                                  -                    var match = item.match(reChromeStackItem);
                                  -                    
                                  -                    //Firebug.Console.log("["+ framePos +"]--------------------------");
                                  -                    //Firebug.Console.log(item);
                                  -                    //Firebug.Console.log("................");
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        if (name)
                                  -                        {
                                  -                            name = name.replace(reChromeStackItemName, "");
                                  -                            frame.name = name; 
                                  -                        }
                                  -                        
                                  -                        //Firebug.Console.log("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reChromeStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("url: "+value[1]);
                                  -                            //Firebug.Console.log("line: "+value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            else if (FBL.isFirefox)
                                  -            {
                                  -                // Firefox
                                  -                var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -                var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=2, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos] || {};
                                  -                    var item = items[i];
                                  -                    var match = item.match(reFirefoxStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        
                                  -                        //Firebug.Console.logFormatted("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reFirefoxStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("href: "+ value[1]);
                                  -                            //Firebug.Console.log("line: " + value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.logFormatted([match[2]]);
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            /*
                                  -            else if (FBL.isOpera)
                                  -            {
                                  -                // Opera
                                  -                var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -                var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -                
                                  -                for (var i=0, length=items.length; i<length; i+=2)
                                  -                {
                                  -                    var item = items[i];
                                  -                    
                                  -                    var match = item.match(reOperaStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        //Firebug.Console.log(match[1]);
                                  -                        
                                  -                        var value = match[2].match(reOperaStackItemValue);
                                  -                        
                                  -                        if (value)
                                  -                        {
                                  -                            //Firebug.Console.log(value[1]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                        //Firebug.Console.log("--------------------------");
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -        }
                                  -        
                                  -        //console.log(stack);
                                  -        //console.dir(frames);
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -        
                                  -        traceRecursion--;
                                  -    };
                                  -    
                                  -    this.trace_ok = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return;
                                  -        //return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    var win = Env.browser.window;
                                  -    Firebug.Console.injector.install(win);
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    Firebug.context.persistedState.commandHistory.push(command);
                                  -    Firebug.context.persistedState.commandPointer = 
                                  -        Firebug.context.persistedState.commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        defineCommandLineAPI();
                                  -        
                                  -         Firebug.context.persistedState.commandHistory =  
                                  -             Firebug.context.persistedState.commandHistory || [];
                                  -
                                  -         Firebug.context.persistedState.commandPointer =  
                                  -             Firebug.context.persistedState.commandPointer || -1;
                                  -        
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null;
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API";
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        Firebug.Console.log(commandPrefix + " " + stripNewLines(command), 
                                  -                Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        Firebug.Console.log(result);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.commandPointer > 0 && 
                                  -            Firebug.context.persistedState.commandHistory.length > 0)
                                  -        {
                                  -            this.element.value = Firebug.context.persistedState.commandHistory
                                  -                                    [--Firebug.context.persistedState.commandPointer];
                                  -        }
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = Firebug.context.persistedState.commandHistory.length -1;
                                  -        var i = Firebug.context.persistedState.commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = Firebug.context.persistedState.commandHistory
                                  -                              [++Firebug.context.persistedState.commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++Firebug.context.persistedState.commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        href = href || "";
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        var html = [
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          ];
                                  -        
                                  -        // TODO: xxxpedro ajust to Console2
                                  -        //Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id);
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: function(o)
                                  -    {
                                  -        Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable);
                                  -    },
                                  -
                                  -    dirxml: function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var defineCommandLineAPI = function defineCommandLineAPI()
                                  -{
                                  -    Firebug.CommandLine.API = {};
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -    
                                  -    var stack = FirebugChrome.htmlSelectionStack;
                                  -    if (stack)
                                  -    {
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var cacheID = Firebug.Lite.Cache.ID;
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    // ignores also the cache property injected by firebug
                                  -    ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = ElementCache(node);
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                // FIXME xxxpedro remove this
                                  -                //var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || 
                                  -                        // Issue 4432:  Firebug Lite: HTML is mixed-up with functions
                                  -                        // The problem here is that expando properties added to DOM elements in 
                                  -                        // IE < 9 will behave like DOM attributes and so they'll show up when
                                  -                        // looking at element.attributes list. 
                                  -                        isIE && (browserVersion-0<9) && typeof attr.nodeValue != "string" ||
                                  -                        Firebug.ignoreFirebugElements && ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;');
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="sourceCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = ElementCache.get(uid);
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>';
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && ElementCache(el);
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = ElementCache.get(id).parentNode;
                                  -
                                  -            if (node)
                                  -                id = ElementCache(node);
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (fbPanel1)
                                  -            fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: !Firebug.flexChromeEnabled /* FIXME xxxpedro chromenew */,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        this.panelNode.style.minWidth = "500px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(this.sidePanelBar && !this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("css");
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null;
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        this.panelNode.innerHTML = html.join("");
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.context.persistedState.selectedHTMLElementId =
                                  -                Firebug.context.persistedState.selectedHTMLElementId &&
                                  -                ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId) ?
                                  -                Firebug.context.persistedState.selectedHTMLElementId :
                                  -                ElementCache(Firebug.browser.document.body);
                                  -            
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(Firebug.context.persistedState.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -    },
                                  -    
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var id = ElementCache(object);
                                  -        
                                  -        if (id)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(id);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":";}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null;
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        e.style.borderRadius = "2px";
                                  -
                                  -        selectedElement = e;
                                  -        
                                  -        Firebug.context.persistedState.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = ElementCache.get(e.id);
                                  -        var sidePanelBar = Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -        var selectedSidePanel = sidePanelBar ? sidePanelBar.selectedPanel : null;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            if (selectedSidePanel)
                                  -                selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0);
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = ElementCache.get(uid.value);
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = ElementCache(object);
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = ElementCache(node);
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;');
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            var value = trim(node.nodeValue);
                                  -            if (value)
                                  -                html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -
                                  -Hack:
                                  -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; 
                                  -Firebug.showInfoTips = true; 
                                  -Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -
                                  -/**/
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var maxWidth = 100, maxHeight = 80;
                                  -var infoTipMargin = 10;
                                  -var infoTipWindowPadding = 25;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.InfoTip = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "infoTip",
                                  -    tags: domplate(
                                  -    {
                                  -        infoTipTag: DIV({"class": "infoTip"}),
                                  -
                                  -        colorTag:
                                  -            DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, "&nbsp;"),
                                  -
                                  -        imgTag:
                                  -            DIV({"class": "infoTipImageBox infoTipLoading"},
                                  -                IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
                                  -                    onload: "$onLoadImage"}),
                                  -                IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}),
                                  -                DIV({"class": "infoTipCaption"})
                                  -            ),
                                  -
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget || event.srcElement;
                                  -            ///var bgImg = img.nextSibling;
                                  -            ///if (!bgImg)
                                  -            ///    return; // Sometimes gets called after element is dead
                                  -
                                  -            ///var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -            
                                  -            /// TODO: xxxpedro infoTip hack
                                  -            var caption = getElementByClass(innerBox, "infoTipCaption");
                                  -            var bgImg = getElementByClass(innerBox, "infoTipBgImage");
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -            
                                  -            // TODO: xxxpedro infoTip IE and timing issue
                                  -            // TODO: use offline document to avoid flickering
                                  -            if (isIE)
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            
                                  -            var updateInfoTip = function(){
                                  -            
                                  -            var w = img.naturalWidth || img.width || 10, 
                                  -                h = img.naturalHeight || img.height || 10;
                                  -            
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -            caption.innerHTML = $STRF(w + " x " + h);
                                  -            
                                  -            
                                  -            };
                                  -            
                                  -            if (isIE) 
                                  -                setTimeout(updateInfoTip, 0);
                                  -            else
                                  -            {
                                  -                updateInfoTip();
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            }
                                  -
                                  -            ///
                                  -        }
                                  -        
                                  -        /*
                                  -        /// onLoadImage original
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget;
                                  -            var bgImg = img.nextSibling;
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -
                                  -            var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -
                                  -            var w = img.naturalWidth, h = img.naturalHeight;
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -
                                  -            removeClass(innerBox, "infoTipLoading");
                                  -        }
                                  -        /**/
                                  -        
                                  -    }),
                                  -
                                  -    initializeBrowser: function(browser)
                                  -    {
                                  -        browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser);
                                  -        browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser);
                                  -
                                  -        ///var doc = browser.contentDocument;
                                  -        var doc = browser.document;
                                  -        if (!doc)
                                  -            return;
                                  -
                                  -        ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -        ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -        ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -        addEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -        addEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -        addEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -        
                                  -        return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc));
                                  -    },
                                  -
                                  -    uninitializeBrowser: function(browser)
                                  -    {
                                  -        if (browser.infoTip)
                                  -        {
                                  -            ///var doc = browser.contentDocument;
                                  -            var doc = browser.document;
                                  -            ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -            ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -            ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -            removeEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -            removeEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -            removeEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -
                                  -            browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -            delete browser.infoTip;
                                  -            delete browser.onInfoTipMouseMove;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        if (!Firebug.showInfoTips)
                                  -            return;
                                  -
                                  -        var scrollParent = getOverflowParent(target);
                                  -        var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
                                  -
                                  -        if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset))
                                  -        {
                                  -            var htmlElt = infoTip.ownerDocument.documentElement;
                                  -            var panelWidth = htmlElt.clientWidth;
                                  -            var panelHeight = htmlElt.clientHeight;
                                  -
                                  -            if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
                                  -            {
                                  -                infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.left = (x+infoTipMargin) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -
                                  -            if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
                                  -            {
                                  -                infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.top = (y+infoTipMargin) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_INFOTIP)
                                  -                FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
                                  -                    ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
                                  -                    ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
                                  -                    ", offsetWidth: " + infoTip.offsetWidth +
                                  -                    ", x: " + x + ", panelWidth: " + panelWidth +
                                  -                    ", y: " + y + ", panelHeight: " + panelHeight);
                                  -
                                  -            infoTip.setAttribute("active", "true");
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(infoTip);
                                  -    },
                                  -
                                  -    hideInfoTip: function(infoTip)
                                  -    {
                                  -        if (infoTip)
                                  -            infoTip.removeAttribute("active");
                                  -    },
                                  -
                                  -    onMouseOut: function(event, browser)
                                  -    {
                                  -        if (!event.relatedTarget)
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    onMouseMove: function(event, browser)
                                  -    {
                                  -        // Ignore if the mouse is moving over the existing info tip.
                                  -        if (getAncestorByClass(event.target, "infoTip"))
                                  -            return;
                                  -
                                  -        if (browser.currentPanel)
                                  -        {
                                  -            var x = event.clientX, y = event.clientY, target = event.target || event.srcElement;
                                  -            this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset);
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    populateColorInfoTip: function(infoTip, color)
                                  -    {
                                  -        this.tags.colorTag.replace({rgbValue: color}, infoTip);
                                  -        return true;
                                  -    },
                                  -
                                  -    populateImageInfoTip: function(infoTip, url, repeat)
                                  -    {
                                  -        if (!repeat)
                                  -            repeat = "no-repeat";
                                  -
                                  -        this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    disable: function()
                                  -    {
                                  -        // XXXjoe For each browser, call uninitializeBrowser
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel)
                                  -        {
                                  -            var infoTip = panel.panelBrowser.infoTip;
                                  -            if (!infoTip)
                                  -                infoTip = this.initializeBrowser(panel.panelBrowser);
                                  -            this.hideInfoTip(infoTip);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -        this.showPanel(browser, panel);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.InfoTip);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var CssParser = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Simple CSS stylesheet parser from:
                                  -// https://github.com/sergeche/webkit-css
                                  -
                                  -/**
                                  - * Simple CSS stylesheet parser that remembers rule's lines in file
                                  - * @author Sergey Chikuyonok (serge.che@gmail.com)
                                  - * @link http://chikuyonok.ru
                                  - */
                                  -CssParser = (function(){
                                  -    /**
                                  -     * Returns rule object
                                  -     * @param {Number} start Character index where CSS rule definition starts
                                  -     * @param {Number} body_start Character index where CSS rule's body starts
                                  -     * @param {Number} end Character index where CSS rule definition ends
                                  -     */
                                  -    function rule(start, body_start, end) {
                                  -        return {
                                  -            start: start || 0,
                                  -            body_start: body_start || 0,
                                  -            end: end || 0,
                                  -            line: -1,
                                  -            selector: null,
                                  -            parent: null,
                                  -            
                                  -            /** @type {rule[]} */
                                  -            children: [],
                                  -            
                                  -            addChild: function(start, body_start, end) {
                                  -                var r = rule(start, body_start, end);
                                  -                r.parent = this;
                                  -                this.children.push(r);
                                  -                return r;
                                  -            },
                                  -            /**
                                  -             * Returns last child element
                                  -             * @return {rule}
                                  -             */
                                  -            lastChild: function() {
                                  -                return this.children[this.children.length - 1];
                                  -            }
                                  -        };
                                  -    }
                                  -    
                                  -    /**
                                  -     * Replaces all occurances of substring defined by regexp
                                  -     * @param {String} str
                                  -     * @return {RegExp} re
                                  -     * @return {String}
                                  -     */
                                  -    function removeAll(str, re) {
                                  -        var m;
                                  -        while (m = str.match(re)) {
                                  -            str = str.substring(m[0].length);
                                  -        }
                                  -        
                                  -        return str;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Trims whitespace from the beginning and the end of string
                                  -     * @param {String} str
                                  -     * @return {String}
                                  -     */
                                  -    function trim(str) {
                                  -        return str.replace(/^\s+|\s+$/g, '');
                                  -    }
                                  -    
                                  -    /**
                                  -     * Normalizes CSS rules selector
                                  -     * @param {String} selector
                                  -     */
                                  -    function normalizeSelector(selector) {
                                  -        // remove newlines
                                  -        selector = selector.replace(/[\n\r]/g, ' ');
                                  -        
                                  -        selector = trim(selector);
                                  -        
                                  -        // remove spaces after commas
                                  -        selector = selector.replace(/\s*,\s*/g, ',');
                                  -        
                                  -        return selector;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Preprocesses parsed rules: adjusts char indexes, skipping whitespace and
                                  -     * newlines, saves rule selector, removes comments, etc.
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node CSS rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function preprocessRules(text, rule_node) {
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i],
                                  -                rule_start = text.substring(r.start, r.body_start),
                                  -                cur_len = rule_start.length;
                                  -            
                                  -            // remove newlines for better regexp matching
                                  -            rule_start = rule_start.replace(/[\n\r]/g, ' ');
                                  -            
                                  -            // remove @import rules
                                  -//            rule_start = removeAll(rule_start, /^\s*@import\s*url\((['"])?.+?\1?\)\;?/g);
                                  -            
                                  -            // remove comments
                                  -            rule_start = removeAll(rule_start, /^\s*\/\*.*?\*\/[\s\t]*/);
                                  -            
                                  -            // remove whitespace
                                  -            rule_start = rule_start.replace(/^[\s\t]+/, '');
                                  -            
                                  -            r.start += (cur_len - rule_start.length);
                                  -            r.selector = normalizeSelector(rule_start);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves all lise starting indexes for faster search
                                  -     * @param {String} text CSS stylesheet
                                  -     * @return {Number[]}
                                  -     */
                                  -    function saveLineIndexes(text) {
                                  -        var result = [0],
                                  -            i = 0,
                                  -            il = text.length,
                                  -            ch, ch2;
                                  -            
                                  -        while (i < il) {
                                  -            ch = text.charAt(i);
                                  -            
                                  -            if (ch == '\n' || ch == '\r') {
                                  -                if (ch == '\r' && i < il - 1 && text.charAt(i + 1) == '\n') {
                                  -                    // windows line ending: CRLF. Skip next character 
                                  -                    i++;
                                  -                }
                                  -                
                                  -                result.push(i + 1);
                                  -            }
                                  -            
                                  -            i++;
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves line number for parsed rules
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node Rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function saveLineNumbers(text, rule_node, line_indexes, startLine) {
                                  -        preprocessRules(text, rule_node);
                                  -        
                                  -        startLine = startLine || 0;
                                  -        
                                  -        // remember lines start indexes, preserving line ending characters
                                  -        if (!line_indexes)
                                  -            var line_indexes = saveLineIndexes(text);
                                  -
                                  -        // now find each rule's line
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i];
                                  -            r.line = line_indexes.length + startLine;
                                  -            for (var j = 0, jl = line_indexes.length - 1; j < jl; j++) {
                                  -                var line_ix = line_indexes[j];
                                  -                if (r.start >=  line_indexes[j] && r.start <  line_indexes[j + 1]) {
                                  -                    r.line = j + 1 + startLine;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            
                                  -            saveLineNumbers(text, r, line_indexes);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    return {
                                  -        /**
                                  -         * Parses text as CSS stylesheet, remembring each rule position inside 
                                  -         * text
                                  -         * @param {String} text CSS stylesheet to parse
                                  -         */
                                  -        read: function(text, startLine) {
                                  -            var rule_start = [],
                                  -                rule_body_start = [],
                                  -                rules = [],
                                  -                in_comment = 0,
                                  -                root = rule(),
                                  -                cur_parent = root,
                                  -                last_rule = null,
                                  -                stack = [],
                                  -                ch, ch2;
                                  -                
                                  -            stack.last = function() {
                                  -                return this[this.length - 1];
                                  -            };
                                  -            
                                  -            function hasStr(pos, substr) {
                                  -                return text.substr(pos, substr.length) == substr;
                                  -            }
                                  -                
                                  -            for (var i = 0, il = text.length; i < il; i++) {
                                  -                ch = text.charAt(i);
                                  -                ch2 = i < il - 1 ? text.charAt(i + 1) : '';
                                  -                
                                  -                if (!rule_start.length)
                                  -                    rule_start.push(i);
                                  -                    
                                  -                switch (ch) {
                                  -                    case '@':
                                  -                        if (!in_comment) {
                                  -                            if (hasStr(i, '@import')) {
                                  -                                var m = text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -                                if (m) {
                                  -                                    cur_parent.addChild(i, i + 7, i + m[0].length);
                                  -                                    i += m[0].length;
                                  -                                    rule_start.pop();
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                        }
                                  -                    case '/':
                                  -                        // xxxpedro allowing comment inside comment
                                  -                        if (!in_comment && ch2 == '*') { // comment start
                                  -                            in_comment++;
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '*':
                                  -                        if (ch2 == '/') { // comment end
                                  -                            in_comment--;
                                  -                        }
                                  -                        break;
                                  -                    
                                  -                    case '{':
                                  -                        if (!in_comment) {
                                  -                            rule_body_start.push(i);
                                  -                            
                                  -                            cur_parent = cur_parent.addChild(rule_start.pop());
                                  -                            stack.push(cur_parent);
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '}':
                                  -                        // found the end of the rule
                                  -                        if (!in_comment) {
                                  -                            /** @type {rule} */
                                  -                            var last_rule = stack.pop();
                                  -                            rule_start.pop();
                                  -                            last_rule.body_start = rule_body_start.pop();
                                  -                            last_rule.end = i;
                                  -                            cur_parent = last_rule.parent || root;
                                  -                        }
                                  -                        break;
                                  -                }
                                  -                
                                  -            }
                                  -            
                                  -            return saveLineNumbers(text, root, null, startLine);
                                  -        },
                                  -        
                                  -        normalizeSelector: normalizeSelector,
                                  -        
                                  -        /**
                                  -         * Find matched rule by selector.
                                  -         * @param {rule} rule_node Parsed rule node
                                  -         * @param {String} selector CSS selector
                                  -         * @param {String} source CSS stylesheet source code
                                  -         * 
                                  -         * @return {rule[]|null} Array of matched rules, sorted by priority (most 
                                  -         * recent on top)
                                  -         */
                                  -        findBySelector: function(rule_node, selector, source) {
                                  -            var selector = normalizeSelector(selector),
                                  -                result = [];
                                  -                
                                  -            if (rule_node) {
                                  -                for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -                    /** @type {rule} */
                                  -                    var r = rule_node.children[i];
                                  -                    if (r.selector == selector) {
                                  -                        result.push(r);
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            if (result.length) {
                                  -                return result;
                                  -            } else {
                                  -                return null;
                                  -            }
                                  -        }
                                  -    };
                                  -})();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.CssParser = CssParser;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet Parser
                                  -
                                  -var CssAnalyzer = {};
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var CSSRuleMap = {};
                                  -var ElementCSSRulesMap = {};
                                  -
                                  -var internalStyleSheetIndex = -1;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -var reSelectorClass = /\.[\w\d_-]+/g;
                                  -var reSelectorId = /#[\w\d_-]+/g;
                                  -
                                  -var globalCSSRuleIndex;
                                  -
                                  -var processAllStyleSheetsTimeout = null;
                                  -
                                  -var externalStyleSheetURLs = [];
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -//************************************************************************************************
                                  -// CSS Analyzer templates
                                  -
                                  -CssAnalyzer.externalStyleSheetWarning = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'},
                                  -            SPAN("$object|STR"),
                                  -            A({"href": "$href", target:"_blank"}, "$link|STR")
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Analyzer methods
                                  -
                                  -CssAnalyzer.processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    try
                                  -    {
                                  -        processAllStyleSheets(doc, styleSheetIterator);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * 
                                  - * @param element
                                  - * @returns {String[]} Array of IDs of CSS Rules
                                  - */
                                  -CssAnalyzer.getElementCSSRules = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        return getElementCSSRules(element);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -CssAnalyzer.getRuleData = function(ruleId)
                                  -{
                                  -    return CSSRuleMap[ruleId];
                                  -};
                                  -
                                  -// TODO: do we need this?
                                  -CssAnalyzer.getRuleLine = function()
                                  -{
                                  -};
                                  -
                                  -CssAnalyzer.hasExternalStyleSheet = function()
                                  -{
                                  -    return externalStyleSheetURLs.length > 0;
                                  -};
                                  -
                                  -CssAnalyzer.parseStyleSheet = function(href)
                                  -{
                                  -    var sourceData = extractSourceData(href);
                                  -    var parsedObj = CssParser.read(sourceData.source, sourceData.startLine);
                                  -    var parsedRules = parsedObj.children;
                                  -    
                                  -    // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -    //
                                  -    // Ignore all special selectors like @media and @page
                                  -    for(var i=0; i < parsedRules.length; )
                                  -    {
                                  -        if (parsedRules[i].selector.indexOf("@") != -1)
                                  -        {
                                  -            parsedRules.splice(i, 1);
                                  -        }
                                  -        else
                                  -            i++;
                                  -    }
                                  -    
                                  -    return parsedRules;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Internals
                                  -//************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet processing
                                  -
                                  -var processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    styleSheetIterator = styleSheetIterator || processStyleSheet;
                                  -    
                                  -    globalCSSRuleIndex = -1;
                                  -    
                                  -    var styleSheets = doc.styleSheets;
                                  -    var importedStyleSheets = [];
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -        var start = new Date().getTime();
                                  -    
                                  -    for(var i=0, length=styleSheets.length; i<length; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            
                                  -            if ("firebugIgnore" in styleSheet) continue;
                                  -            
                                  -            // we must read the length to make sure we have permission to read 
                                  -            // the stylesheet's content. If an error occurs here, we cannot 
                                  -            // read the stylesheet due to access restriction policy
                                  -            var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -            rules.length;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            externalStyleSheetURLs.push(styleSheet.href);
                                  -            styleSheet.restricted = true;
                                  -            var ssid = StyleSheetCache(styleSheet);
                                  -            
                                  -            /// TODO: xxxpedro external css
                                  -            //loadExternalStylesheet(doc, styleSheetIterator, styleSheet);
                                  -        }
                                  -        
                                  -        // process internal and external styleSheets
                                  -        styleSheetIterator(doc, styleSheet);
                                  -        
                                  -        var importedStyleSheet, importedRules;
                                  -        
                                  -        // process imported styleSheets in IE
                                  -        if (isIE)
                                  -        {
                                  -            var imports = styleSheet.imports;
                                  -            
                                  -            for(var j=0, importsLength=imports.length; j<importsLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    importedStyleSheet = imports[j];
                                  -                    // we must read the length to make sure we have permission
                                  -                    // to read the imported stylesheet's content. 
                                  -                    importedRules = importedStyleSheet.rules;
                                  -                    importedRules.length;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -                
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -        // process imported styleSheets in other browsers
                                  -        else if (rules)
                                  -        {
                                  -            for(var j=0, rulesLength=rules.length; j<rulesLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    var rule = rules[j];
                                  -                    
                                  -                    importedStyleSheet = rule.styleSheet;
                                  -                    
                                  -                    if (importedStyleSheet)
                                  -                    {
                                  -                        // we must read the length to make sure we have permission
                                  -                        // to read the imported stylesheet's content. 
                                  -                        importedRules = importedStyleSheet.cssRules;
                                  -                        importedRules.length;
                                  -                    }
                                  -                    else
                                  -                        break;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -    {
                                  -        FBTrace.sysout("FBL.processAllStyleSheets", "all stylesheet rules processed in " + (new Date().getTime() - start) + "ms");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var processStyleSheet = function(doc, styleSheet)
                                  -{
                                  -    if (styleSheet.restricted)
                                  -        return;
                                  -    
                                  -    var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -    
                                  -    var ssid = StyleSheetCache(styleSheet);
                                  -    
                                  -    var href = styleSheet.href;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // CSS Parser
                                  -    var shouldParseCSS = typeof CssParser != "undefined" && !Firebug.disableResourceFetching;
                                  -    if (shouldParseCSS)
                                  -    {
                                  -        try
                                  -        {
                                  -            var parsedRules = CssAnalyzer.parseStyleSheet(href); 
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("processStyleSheet FAILS", e.message || e);
                                  -            shouldParseCSS = false;
                                  -        }
                                  -        finally
                                  -        {
                                  -            var parsedRulesIndex = 0;
                                  -            
                                  -            var dontSupportGroupedRules = isIE && browserVersion < 9;
                                  -            var group = [];
                                  -            var groupItem;
                                  -        }
                                  -    }
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    for (var i=0, length=rules.length; i<length; i++)
                                  -    {
                                  -        // TODO: xxxpedro is there a better way to cache CSS Rules? The problem is that
                                  -        // we cannot add expando properties in the rule object in IE
                                  -        var rid = ssid + ":" + i;
                                  -        var rule = rules[i];
                                  -        var selector = rule.selectorText || "";
                                  -        var lineNo = null;
                                  -        
                                  -        // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -        //
                                  -        // Ignore all special selectors like @media and @page
                                  -        if (!selector || selector.indexOf("@") != -1)
                                  -            continue;
                                  -        
                                  -        if (isIE)
                                  -            selector = selector.replace(reSelectorTag, function(s){return s.toLowerCase();});
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // CSS Parser
                                  -        if (shouldParseCSS)
                                  -        {
                                  -            var parsedRule = parsedRules[parsedRulesIndex];
                                  -            var parsedSelector = parsedRule.selector;
                                  -
                                  -            if (dontSupportGroupedRules && parsedSelector.indexOf(",") != -1 && group.length == 0)
                                  -                group = parsedSelector.split(",");
                                  -            
                                  -            if (dontSupportGroupedRules && group.length > 0)
                                  -            {
                                  -                groupItem = group.shift();
                                  -                
                                  -                if (CssParser.normalizeSelector(selector) == groupItem)
                                  -                    lineNo = parsedRule.line;
                                  -                
                                  -                if (group.length == 0)
                                  -                    parsedRulesIndex++;
                                  -            }
                                  -            else if (CssParser.normalizeSelector(selector) == parsedRule.selector)
                                  -            {
                                  -                lineNo = parsedRule.line;
                                  -                parsedRulesIndex++;
                                  -            }
                                  -        }
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        CSSRuleMap[rid] =
                                  -        {
                                  -            styleSheetId: ssid,
                                  -            styleSheetIndex: i,
                                  -            order: ++globalCSSRuleIndex,
                                  -            specificity: 
                                  -                // See: Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -                //
                                  -                // if it is a normal selector then calculate the specificity
                                  -                selector && selector.indexOf(",") == -1 ? 
                                  -                getCSSRuleSpecificity(selector) : 
                                  -                // See: Issue 3262: [Firebug lite] Specificity of grouped CSS Rules
                                  -                //
                                  -                // if it is a grouped selector, do not calculate the specificity
                                  -                // because the correct value will depend of the matched element.
                                  -                // The proper specificity value for grouped selectors are calculated
                                  -                // via getElementCSSRules(element)
                                  -                0,
                                  -            
                                  -            rule: rule,
                                  -            lineNo: lineNo,
                                  -            selector: selector,
                                  -            cssText: rule.style ? rule.style.cssText : rule.cssText ? rule.cssText : ""        
                                  -        };
                                  -        
                                  -        // TODO: what happens with elements added after this? Need to create a test case.
                                  -        // Maybe we should place this at getElementCSSRules() but it will make the function
                                  -        // a lot more expensive.
                                  -        // 
                                  -        // Maybe add a "refresh" button?
                                  -        var elements = Firebug.Selector(selector, doc);
                                  -        
                                  -        for (var j=0, elementsLength=elements.length; j<elementsLength; j++)
                                  -        {
                                  -            var element = elements[j];
                                  -            var eid = ElementCache(element);
                                  -            
                                  -            if (!ElementCSSRulesMap[eid])
                                  -                ElementCSSRulesMap[eid] = [];
                                  -            
                                  -            ElementCSSRulesMap[eid].push(rid);
                                  -        }
                                  -        
                                  -        //console.log(selector, elements);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// External StyleSheet Loader
                                  -
                                  -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet)
                                  -{
                                  -    var url = styleSheet.href;
                                  -    styleSheet.firebugIgnore = true;
                                  -    
                                  -    var source = Firebug.Lite.Proxy.load(url);
                                  -    
                                  -    // TODO: check for null and error responses
                                  -    
                                  -    // remove comments
                                  -    //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -    //source = source.replace(reMultiComment, "");
                                  -    
                                  -    // convert relative addresses to absolute ones  
                                  -    source = source.replace(/url\(([^\)]+)\)/g, function(a,name){
                                  -    
                                  -        var hasDomain = /\w+:\/\/./.test(name);
                                  -        
                                  -        if (!hasDomain)
                                  -        {
                                  -            name = name.replace(/^(["'])(.+)\1$/, "$2");
                                  -            var first = name.charAt(0);
                                  -            
                                  -            // relative path, based on root
                                  -            if (first == "/")
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLRoot
                                  -                var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -                
                                  -                return m ? 
                                  -                    "url(" + m[1] + name + ")" :
                                  -                    "url(" + name + ")";
                                  -            }
                                  -            // relative path, based on current location
                                  -            else
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLPath
                                  -                var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, "");
                                  -                
                                  -                path = path + name;
                                  -                
                                  -                var reBack = /[^\/]+\/\.\.\//;
                                  -                while(reBack.test(path))
                                  -                {
                                  -                    path = path.replace(reBack, "");
                                  -                }
                                  -                
                                  -                //console.log("url(" + path + ")");
                                  -                
                                  -                return "url(" + path + ")";
                                  -            }
                                  -        }
                                  -        
                                  -        // if it is an absolute path, there is nothing to do
                                  -        return a;
                                  -    });
                                  -    
                                  -    var oldStyle = styleSheet.ownerNode;
                                  -    
                                  -    if (!oldStyle) return;
                                  -    
                                  -    if (!oldStyle.parentNode) return;
                                  -    
                                  -    var style = createGlobalElement("style");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.innerHTML = source;
                                  -
                                  -    //debugger;
                                  -    oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling);
                                  -    oldStyle.parentNode.removeChild(oldStyle);
                                  -    
                                  -    doc.styleSheets[doc.styleSheets.length-1].externalURL = url;
                                  -    
                                  -    console.log(url, "call " + externalStyleSheetURLs.length, source);
                                  -    
                                  -    externalStyleSheetURLs.pop();
                                  -    
                                  -    if (processAllStyleSheetsTimeout)
                                  -    {
                                  -        clearTimeout(processAllStyleSheetsTimeout);
                                  -    }
                                  -    
                                  -    processAllStyleSheetsTimeout = setTimeout(function(){
                                  -        console.log("processing");
                                  -        FBL.processAllStyleSheets(doc, styleSheetIterator);
                                  -        processAllStyleSheetsTimeout = null;
                                  -    },200);
                                  -    
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// getElementCSSRules
                                  -
                                  -var getElementCSSRules = function(element)
                                  -{
                                  -    var eid = ElementCache(element);
                                  -    var rules = ElementCSSRulesMap[eid];
                                  -    
                                  -    if (!rules) return;
                                  -    
                                  -    var arr = [element];
                                  -    var Selector = Firebug.Selector;
                                  -    var ruleId, rule;
                                  -    
                                  -    // for the case of grouped selectors, we need to calculate the highest
                                  -    // specificity within the selectors of the group that matches the element,
                                  -    // so we can sort the rules properly without over estimating the specificity
                                  -    // of grouped selectors
                                  -    for (var i = 0, length = rules.length; i < length; i++)
                                  -    {
                                  -        ruleId = rules[i];
                                  -        rule = CSSRuleMap[ruleId];
                                  -        
                                  -        // check if it is a grouped selector
                                  -        if (rule.selector.indexOf(",") != -1)
                                  -        {
                                  -            var selectors = rule.selector.split(",");
                                  -            var maxSpecificity = -1;
                                  -            var sel, spec, mostSpecificSelector;
                                  -            
                                  -            // loop over all selectors in the group
                                  -            for (var j, len = selectors.length; j < len; j++)
                                  -            {
                                  -                sel = selectors[j];
                                  -                
                                  -                // find if the selector matches the element
                                  -                if (Selector.matches(sel, arr).length == 1)
                                  -                {
                                  -                    spec = getCSSRuleSpecificity(sel);
                                  -                    
                                  -                    // find the most specific selector that macthes the element
                                  -                    if (spec > maxSpecificity)
                                  -                    {
                                  -                        maxSpecificity = spec;
                                  -                        mostSpecificSelector = sel;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            rule.specificity = maxSpecificity;
                                  -        }
                                  -    }
                                  -    
                                  -    rules.sort(sortElementRules);
                                  -    //rules.sort(solveRulesTied);
                                  -    
                                  -    return rules;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Rule Specificity
                                  -
                                  -var sortElementRules = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    var specificityA = ruleA.specificity;
                                  -    var specificityB = ruleB.specificity;
                                  -    
                                  -    if (specificityA > specificityB)
                                  -        return 1;
                                  -    
                                  -    else if (specificityA < specificityB)
                                  -        return -1;
                                  -    
                                  -    else
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -};
                                  -
                                  -var solveRulesTied = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    if (ruleA.specificity == ruleB.specificity)
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -        
                                  -    return null;
                                  -};
                                  -
                                  -var getCSSRuleSpecificity = function(selector)
                                  -{
                                  -    var match = selector.match(reSelectorTag);
                                  -    var tagCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorClass);
                                  -    var classCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorId);
                                  -    var idCount = match ? match.length : 0;
                                  -    
                                  -    return tagCount + 10*classCount + 100*idCount;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet data
                                  -
                                  -var extractSourceData = function(href)
                                  -{
                                  -    var sourceData = 
                                  -    {
                                  -        source: null,
                                  -        startLine: 0
                                  -    };
                                  -    
                                  -    if (href)
                                  -    {
                                  -        sourceData.source = Firebug.Lite.Proxy.load(href);
                                  -    }
                                  -    else
                                  -    {
                                  -        // TODO: create extractInternalSourceData(index)
                                  -        // TODO: pre process the position of the inline styles so this will happen only once
                                  -        // in case of having multiple inline styles
                                  -        var index = 0;
                                  -        var ssIndex = ++internalStyleSheetIndex;
                                  -        var reStyleTag = /\<\s*style.*\>/gi;
                                  -        var reEndStyleTag = /\<\/\s*style.*\>/gi;
                                  -        
                                  -        var source = Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -        source = source.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        
                                  -        var startLine = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            var matchStyleTag = source.match(reStyleTag); 
                                  -            var i0 = source.indexOf(matchStyleTag[0]) + matchStyleTag[0].length;
                                  -            
                                  -            for (var i=0; i < i0; i++)
                                  -            {
                                  -                if (source.charAt(i) == "\n")
                                  -                    startLine++;
                                  -            }
                                  -            
                                  -            source = source.substr(i0);
                                  -            
                                  -            index++;
                                  -        }
                                  -        while (index <= ssIndex);
                                  -    
                                  -        var matchEndStyleTag = source.match(reEndStyleTag);
                                  -        var i1 = source.indexOf(matchEndStyleTag[0]);
                                  -        
                                  -        var extractedSource = source.substr(0, i1);
                                  -        
                                  -        sourceData.source = extractedSource;
                                  -        sourceData.startLine = startLine;
                                  -    }
                                  -    
                                  -    return sourceData;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -FBL.CssAnalyzer = CssAnalyzer;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// move to FBL
                                  -(function() { 
                                  -
                                  -// ************************************************************************************************
                                  -// XPath
                                  -
                                  -/**
                                  - * Gets an XPath for an element which describes its hierarchical location.
                                  - */
                                  -this.getElementXPath = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        if (element && element.id)
                                  -            return '//*[@id="' + element.id + '"]';
                                  -        else
                                  -            return this.getElementTreeXPath(element);
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        // xxxpedro: trying to detect the mysterious error:
                                  -        // Security error" code: "1000
                                  -        //debugger;
                                  -    }
                                  -};
                                  -
                                  -this.getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -        
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -            
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -this.getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -this.getRuleMatchingElements = function(rule, doc)
                                  -{
                                  -    var css = rule.selectorText;
                                  -    var xpath = this.cssToXPath(css);
                                  -    return this.getElementsByXPath(doc, xpath);
                                  -};
                                  -
                                  -
                                  -}).call(FBL);
                                  -
                                  -
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -};
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -};
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
                                  -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
                                  -//const nsISelectionDisplay = Ci.nsISelectionDisplay;
                                  -//const nsISelectionController = Ci.nsISelectionController;
                                  -
                                  -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
                                  -//const STATE_ACTIVE  = 0x01;
                                  -//const STATE_FOCUS   = 0x02;
                                  -//const STATE_HOVER   = 0x04;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -Firebug.SourceBoxPanel = Firebug.Panel;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -
                                  -var domUtils = null;
                                  -
                                  -var textContent = isIE ? "innerText" : "textContent";
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var CSSDomplateBase = {
                                  -    isEditable: function(rule)
                                  -    {
                                  -        return !rule.isSystemSheet;
                                  -    },
                                  -    isSelectorEditable: function(rule)
                                  -    {
                                  -        return rule.isSelectorEditable && this.isEditable(rule);
                                  -    }
                                  -};
                                  -
                                  -var CSSPropTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
                                  -          $editGroup: "$rule|isEditable",
                                  -          $cssOverridden: "$prop.overridden", role : "option"},
                                  -        A({"class": "cssPropDisable"}, "&nbsp;&nbsp;"),
                                  -        SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )
                                  -});
                                  -
                                  -var CSSRuleTag =
                                  -    TAG("$rule.tag", {rule: "$rule"});
                                  -
                                  -var CSSImportRuleTag = domplate({
                                  -    tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
                                  -        "@import &quot;",
                                  -        A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
                                  -        "&quot;;"
                                  -    )
                                  -});
                                  -
                                  -var CSSStyleRuleTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssRule insertInto",
                                  -            $cssEditableRule: "$rule|isEditable",
                                  -            $editGroup: "$rule|isSelectorEditable",
                                  -            _repObject: "$rule.rule",
                                  -            "ruleId": "$rule.id", role : 'presentation'},
                                  -        DIV({"class": "cssHead focusRow", role : 'listitem'},
                                  -            SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {"
                                  -        ),
                                  -        DIV({role : 'group'},
                                  -            DIV({"class": "cssPropertyListBox", role : 'listbox'},
                                  -                FOR("prop", "$rule.props",
                                  -                    TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        DIV({"class": "editable insertBefore", role:"presentation"}, "}")
                                  -    )
                                  -});
                                  -
                                  -var reSplitCSS =  /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -
                                  -var reURL = /url\("?([^"\)]+)?"?\)/;
                                  -
                                  -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
                                  -
                                  -//const sothinkInstalled = !!$("swfcatcherKey_sidebar");
                                  -var sothinkInstalled = false;
                                  -var styleGroups =
                                  -{
                                  -    text: [
                                  -        "font-family",
                                  -        "font-size",
                                  -        "font-weight",
                                  -        "font-style",
                                  -        "color",
                                  -        "text-transform",
                                  -        "text-decoration",
                                  -        "letter-spacing",
                                  -        "word-spacing",
                                  -        "line-height",
                                  -        "text-align",
                                  -        "vertical-align",
                                  -        "direction",
                                  -        "column-count",
                                  -        "column-gap",
                                  -        "column-width"
                                  -    ],
                                  -
                                  -    background: [
                                  -        "background-color",
                                  -        "background-image",
                                  -        "background-repeat",
                                  -        "background-position",
                                  -        "background-attachment",
                                  -        "opacity"
                                  -    ],
                                  -
                                  -    box: [
                                  -        "width",
                                  -        "height",
                                  -        "top",
                                  -        "right",
                                  -        "bottom",
                                  -        "left",
                                  -        "margin-top",
                                  -        "margin-right",
                                  -        "margin-bottom",
                                  -        "margin-left",
                                  -        "padding-top",
                                  -        "padding-right",
                                  -        "padding-bottom",
                                  -        "padding-left",
                                  -        "border-top-width",
                                  -        "border-right-width",
                                  -        "border-bottom-width",
                                  -        "border-left-width",
                                  -        "border-top-color",
                                  -        "border-right-color",
                                  -        "border-bottom-color",
                                  -        "border-left-color",
                                  -        "border-top-style",
                                  -        "border-right-style",
                                  -        "border-bottom-style",
                                  -        "border-left-style",
                                  -        "-moz-border-top-radius",
                                  -        "-moz-border-right-radius",
                                  -        "-moz-border-bottom-radius",
                                  -        "-moz-border-left-radius",
                                  -        "outline-top-width",
                                  -        "outline-right-width",
                                  -        "outline-bottom-width",
                                  -        "outline-left-width",
                                  -        "outline-top-color",
                                  -        "outline-right-color",
                                  -        "outline-bottom-color",
                                  -        "outline-left-color",
                                  -        "outline-top-style",
                                  -        "outline-right-style",
                                  -        "outline-bottom-style",
                                  -        "outline-left-style"
                                  -    ],
                                  -
                                  -    layout: [
                                  -        "position",
                                  -        "display",
                                  -        "visibility",
                                  -        "z-index",
                                  -        "overflow-x",  // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
                                  -        "overflow-y",
                                  -        "overflow-clip",
                                  -        "white-space",
                                  -        "clip",
                                  -        "float",
                                  -        "clear",
                                  -        "-moz-box-sizing"
                                  -    ],
                                  -
                                  -    other: [
                                  -        "cursor",
                                  -        "list-style-image",
                                  -        "list-style-position",
                                  -        "list-style-type",
                                  -        "marker-offset",
                                  -        "user-focus",
                                  -        "user-select",
                                  -        "user-modify",
                                  -        "user-input"
                                  -    ]
                                  -};
                                  -
                                  -var styleGroupTitles =
                                  -{
                                  -    text: "Text",
                                  -    background: "Background",
                                  -    box: "Box Model",
                                  -    layout: "Layout",
                                  -    other: "Other"
                                  -};
                                  -
                                  -Firebug.CSSModule = extend(Firebug.Module,
                                  -{
                                  -    freeEdit: function(styleSheet, value)
                                  -    {
                                  -        if (!styleSheet.editStyleSheet)
                                  -        {
                                  -            var ownerNode = getStyleSheetOwnerNode(styleSheet);
                                  -            styleSheet.disabled = true;
                                  -
                                  -            var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL);
                                  -            url.spec = styleSheet.href;
                                  -
                                  -            var editStyleSheet = ownerNode.ownerDocument.createElementNS(
                                  -                "http://www.w3.org/1999/xhtml",
                                  -                "style");
                                  -            unwrapObject(editStyleSheet).firebugIgnore = true;
                                  -            editStyleSheet.setAttribute("type", "text/css");
                                  -            editStyleSheet.setAttributeNS(
                                  -                "http://www.w3.org/XML/1998/namespace",
                                  -                "base",
                                  -                url.directory);
                                  -            if (ownerNode.hasAttribute("media"))
                                  -            {
                                  -              editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
                                  -            }
                                  -
                                  -            // Insert the edited stylesheet directly after the old one to ensure the styles
                                  -            // cascade properly.
                                  -            ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
                                  -
                                  -            styleSheet.editStyleSheet = editStyleSheet;
                                  -        }
                                  -
                                  -        styleSheet.editStyleSheet.innerHTML = value;
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
                                  -    },
                                  -
                                  -    insertRule: function(styleSheet, cssText, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
                                  -        var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
                                  -
                                  -        dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
                                  -
                                  -        return insertIndex;
                                  -    },
                                  -
                                  -    deleteRule: function(styleSheet, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules);
                                  -        dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]);
                                  -
                                  -        styleSheet.deleteRule(ruleIndex);
                                  -    },
                                  -
                                  -    setProperty: function(rule, propName, propValue, propPriority)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        // good browsers
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
                                  -            // unless we remove the property first
                                  -            style.removeProperty(propName);
                                  -    
                                  -            style.setProperty(propName, propValue, propPriority);
                                  -        }
                                  -        // sad browsers
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro parse CSS rule to find property priority in IE?
                                  -            //console.log(propName, propValue);
                                  -            style[toCamelCase(propName)] = propValue;
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    },
                                  -
                                  -    removeProperty: function(rule, propName, parent)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -    
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            style.removeProperty(propName);
                                  -        }
                                  -        else
                                  -        {
                                  -            style[toCamelCase(propName)] = "";
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    }/*,
                                  -
                                  -    cleanupSheets: function(doc, context)
                                  -    {
                                  -        // Due to the manner in which the layout engine handles multiple
                                  -        // references to the same sheet we need to kick it a little bit.
                                  -        // The injecting a simple stylesheet then removing it will force
                                  -        // Firefox to regenerate it's CSS hierarchy.
                                  -        //
                                  -        // WARN: This behavior was determined anecdotally.
                                  -        // See http://code.google.com/p/fbug/issues/detail?id=2440
                                  -        var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -        style.setAttribute("charset","utf-8");
                                  -        unwrapObject(style).firebugIgnore = true;
                                  -        style.setAttribute("type", "text/css");
                                  -        style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
                                  -        addStyleSheet(doc, style);
                                  -        style.parentNode.removeChild(style);
                                  -
                                  -        // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
                                  -        // This voodoo touches each style sheet to force some Firefox internal change to allow edits.
                                  -        var styleSheets = getAllStyleSheets(context);
                                  -        for(var i = 0; i < styleSheets.length; i++)
                                  -        {
                                  -            try
                                  -            {
                                  -                var rules = styleSheets[i].cssRules;
                                  -                if (rules.length > 0)
                                  -                    var touch = rules[0];
                                  -                if (FBTrace.DBG_CSS && touch)
                                  -                    FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName()));
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e);
                                  -            }
                                  -        }
                                  -    },
                                  -    cleanupSheetHandler: function(event, context)
                                  -    {
                                  -        var target = event.target || event.srcElement,
                                  -            tagName = (target.tagName || "").toLowerCase();
                                  -        if (tagName == "link")
                                  -        {
                                  -            this.cleanupSheets(target.ownerDocument, context);
                                  -        }
                                  -    },
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        var cleanupSheets = bind(this.cleanupSheets, this),
                                  -            cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context),
                                  -            doc = win.document;
                                  -
                                  -        //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false);
                                  -        //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false);
                                  -    },
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var self = this;
                                  -        iterateWindows(context.browser.contentWindow, function(subwin)
                                  -        {
                                  -            self.cleanupSheets(subwin.document, context);
                                  -        });
                                  -    }
                                  -    /**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CSSStyleSheetPanel = function() {};
                                  -
                                  -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        tag:
                                  -            DIV({"class": "cssSheet insertInto a11yCSSView"},
                                  -                FOR("rule", "$rules",
                                  -                    CSSRuleTag
                                  -                ),
                                  -                DIV({"class": "cssSheet editable insertBefore"}, "")
                                  -                )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        if (this.location)
                                  -            this.updateLocation(this.location);
                                  -        else if (this.selection)
                                  -            this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (!this.stylesheetEditor)
                                  -            this.stylesheetEditor = new StyleSheetEditor(this.document);
                                  -
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -        {
                                  -            if (!this.location)
                                  -                return;
                                  -
                                  -            var styleSheet = this.location.editStyleSheet
                                  -                ? this.location.editStyleSheet.sheet
                                  -                : this.location;
                                  -
                                  -            var css = getStyleSheetCSS(styleSheet, this.context);
                                  -            //var topmost = getTopmostRuleLine(this.panelNode);
                                  -
                                  -            this.stylesheetEditor.styleSheet = this.location;
                                  -            Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
                                  -            //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
                                  -        }
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        if (this.location.href)
                                  -            return this.location.href;
                                  -        else
                                  -            return this.context.window.location.href;
                                  -    },
                                  -
                                  -    getRuleByLine: function(styleSheet, line)
                                  -    {
                                  -        if (!domUtils)
                                  -            return null;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        for (var i = 0; i < cssRules.length; ++i)
                                  -        {
                                  -            var rule = cssRules[i];
                                  -            if (rule instanceof CSSStyleRule)
                                  -            {
                                  -                var ruleLine = domUtils.getRuleLine(rule);
                                  -                if (ruleLine >= line)
                                  -                    return rule;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightRule: function(rule)
                                  -    {
                                  -        var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
                                  -        if (ruleElement)
                                  -        {
                                  -            scrollIntoCenterView(ruleElement, this.panelNode);
                                  -            setClassTimed(ruleElement, "jumpHighlight", this.context);
                                  -        }
                                  -    },
                                  -
                                  -    getStyleSheetRules: function(context, styleSheet)
                                  -    {
                                  -        var isSystemSheet = isSystemStyleSheet(styleSheet);
                                  -
                                  -        function appendRules(cssRules)
                                  -        {
                                  -            for (var i = 0; i < cssRules.length; ++i)
                                  -            {
                                  -                var rule = cssRules[i];
                                  -                
                                  -                // TODO: xxxpedro opera instanceof stylesheet remove the following comments when 
                                  -                // the issue with opera and style sheet Classes has been solved.
                                  -                
                                  -                //if (rule instanceof CSSStyleRule)
                                  -                if (instanceOf(rule, "CSSStyleRule"))
                                  -                {
                                  -                    var props = this.getRuleProperties(context, rule);
                                  -                    //var line = domUtils.getRuleLine(rule);
                                  -                    var line = null;
                                  -                    
                                  -                    var selector = rule.selectorText;
                                  -                    
                                  -                    if (isIE)
                                  -                    {
                                  -                        selector = selector.replace(reSelectorTag, 
                                  -                                function(s){return s.toLowerCase();});
                                  -                    }
                                  -                    
                                  -                    var ruleId = rule.selectorText+"/"+line;
                                  -                    rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId,
                                  -                                selector: selector, props: props,
                                  -                                isSystemSheet: isSystemSheet,
                                  -                                isSelectorEditable: true});
                                  -                }
                                  -                //else if (rule instanceof CSSImportRule)
                                  -                else if (instanceOf(rule, "CSSImportRule"))
                                  -                    rules.push({tag: CSSImportRuleTag.tag, rule: rule});
                                  -                //else if (rule instanceof CSSMediaRule)
                                  -                else if (instanceOf(rule, "CSSMediaRule"))
                                  -                    appendRules.apply(this, [rule.cssRules]);
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var rules = [];
                                  -        appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]);
                                  -        return rules;
                                  -    },
                                  -
                                  -    parseCSSProps: function(style, inheritMode)
                                  -    {
                                  -        var props = [];
                                  -
                                  -        if (Firebug.expandShorthandProps)
                                  -        {
                                  -            var count = style.length-1,
                                  -                index = style.length;
                                  -            while (index--)
                                  -            {
                                  -                var propName = style.item(count - index);
                                  -                this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -            var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -            var line,i=0;
                                  -            // TODO: xxxpedro port to firebug: variable leaked into global namespace
                                  -            var m;
                                  -            
                                  -            while(line=lines[i++]){
                                  -                m = propRE.exec(line);
                                  -                if(!m)
                                  -                    continue;
                                  -                //var name = m[1], value = m[2], important = !!m[3];
                                  -                if (m[2])
                                  -                    this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
                                  -            };
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    getRuleProperties: function(context, rule, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(rule.style, inheritMode);
                                  -
                                  -        // TODO: xxxpedro port to firebug: variable leaked into global namespace 
                                  -        //var line = domUtils.getRuleLine(rule);
                                  -        var line;
                                  -        var ruleId = rule.selectorText+"/"+line;
                                  -        this.addOldProperties(context, ruleId, inheritMode, props);
                                  -        sortProperties(props);
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    addOldProperties: function(context, ruleId, inheritMode, props)
                                  -    {
                                  -        if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var moreProps = context.selectorMap[ruleId];
                                  -            for (var i = 0; i < moreProps.length; ++i)
                                  -            {
                                  -                var prop = moreProps[i];
                                  -                this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    addProperty: function(name, value, important, disabled, inheritMode, props)
                                  -    {
                                  -        name = name.toLowerCase();
                                  -        
                                  -        if (inheritMode && !inheritedStyleNames[name])
                                  -            return;
                                  -
                                  -        name = this.translateName(name, value);
                                  -        if (name)
                                  -        {
                                  -            value = stripUnits(rgbToHex(value));
                                  -            important = important ? " !important" : "";
                                  -
                                  -            var prop = {name: name, value: value, important: important, disabled: disabled};
                                  -            props.push(prop);
                                  -        }
                                  -    },
                                  -
                                  -    translateName: function(name, value)
                                  -    {
                                  -        // Don't show these proprietary Mozilla properties
                                  -        if ((value == "-moz-initial"
                                  -            && (name == "-moz-background-clip" || name == "-moz-background-origin"
                                  -                || name == "-moz-background-inline-policy"))
                                  -        || (value == "physical"
                                  -            && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
                                  -                || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
                                  -        || (value == "physical"
                                  -            && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
                                  -                || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
                                  -            return null;
                                  -
                                  -        // Translate these back to the form the user probably expects
                                  -        if (name == "margin-left-value")
                                  -            return "margin-left";
                                  -        else if (name == "margin-right-value")
                                  -            return "margin-right";
                                  -        else if (name == "margin-top-value")
                                  -            return "margin-top";
                                  -        else if (name == "margin-bottom-value")
                                  -            return "margin-bottom";
                                  -        else if (name == "padding-left-value")
                                  -            return "padding-left";
                                  -        else if (name == "padding-right-value")
                                  -            return "padding-right";
                                  -        else if (name == "padding-top-value")
                                  -            return "padding-top";
                                  -        else if (name == "padding-bottom-value")
                                  -            return "padding-bottom";
                                  -        // XXXjoe What about border!
                                  -        else
                                  -            return name;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editElementStyle: function()
                                  -    {
                                  -        ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
                                  -        var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0];
                                  -        var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
                                  -        if (!styleRuleBox)
                                  -        {
                                  -            var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []};
                                  -            if (!rulesBox)
                                  -            {
                                  -                // The element did not have any displayed styles. We need to create the whole tree and remove
                                  -                // the no styles message
                                  -                styleRuleBox = this.template.cascadedTag.replace({
                                  -                    rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom")
                                  -                }, this.panelNode);
                                  -
                                  -                ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
                                  -                styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0];
                                  -            }
                                  -            else
                                  -                styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
                                  -
                                  -            ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
                                  -            styleRuleBox = $$(".insertInto", styleRuleBox)[0];
                                  -        }
                                  -
                                  -        Firebug.Editor.insertRowForObject(styleRuleBox);
                                  -    },
                                  -
                                  -    insertPropertyRow: function(row)
                                  -    {
                                  -        Firebug.Editor.insertRowForObject(row);
                                  -    },
                                  -
                                  -    insertRule: function(row)
                                  -    {
                                  -        var location = getAncestorByClass(row, "cssRule");
                                  -        if (!location)
                                  -        {
                                  -            location = getChildByClass(this.panelNode, "cssSheet");
                                  -            Firebug.Editor.insertRowForObject(location);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Editor.insertRow(location, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editPropertyRow: function(row)
                                  -    {
                                  -        var propValueBox = getChildByClass(row, "cssPropValue");
                                  -        Firebug.Editor.startEditing(propValueBox);
                                  -    },
                                  -
                                  -    deletePropertyRow: function(row)
                                  -    {
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -        Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -        // Remove the property from the selector map, if it was disabled
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var map = this.context.selectorMap[ruleId];
                                  -            for (var i = 0; i < map.length; ++i)
                                  -            {
                                  -                if (map[i].name == propName)
                                  -                {
                                  -                    map.splice(i, 1);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (this.name == "stylesheet")
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]);
                                  -        row.parentNode.removeChild(row);
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    disablePropertyRow: function(row)
                                  -    {
                                  -        toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -
                                  -        if (!this.context.selectorMap)
                                  -            this.context.selectorMap = {};
                                  -
                                  -        // XXXjoe Generate unique key for elements too
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if (!(this.context.selectorMap.hasOwnProperty(ruleId)))
                                  -            this.context.selectorMap[ruleId] = [];
                                  -
                                  -        var map = this.context.selectorMap[ruleId];
                                  -        var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -        var parsedValue = parsePriority(propValue);
                                  -        if (hasClass(row, "disabledStyle"))
                                  -        {
                                  -            Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -            map.push({"name": propName, "value": parsedValue.value,
                                  -                "important": parsedValue.priority});
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -
                                  -            var index = findPropByName(map, propName);
                                  -            map.splice(index, 1);
                                  -        }
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        //console.log("onMouseDown", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        // XXjoe Hack to only allow clicking on the checkbox
                                  -        if (!isLeftClick(event) || offset > 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        if (hasClass(target, "textEditor"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (row && hasClass(row, "editGroup"))
                                  -        {
                                  -            this.disablePropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onDoubleClick: function(event)
                                  -    {
                                  -        //console.log("onDoubleClick", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        if (!isLeftClick(event) || offset <= 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20);
                                  -        
                                  -        // if the inline editor was clicked, don't insert a new rule
                                  -        if (hasClass(target, "textEditorInner"))
                                  -            return;
                                  -            
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        if (row && !getAncestorByClass(target, "cssPropName")
                                  -            && !getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            this.insertPropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "stylesheet",
                                  -    title: "CSS",
                                  -    parentPanel: null,
                                  -    searchable: true,
                                  -    dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
                                  -    
                                  -    options:
                                  -    {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onDoubleClick = bind(this.onDoubleClick, this);
                                  -
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var selectNode = this.selectNode = createElement("select");
                                  -            
                                  -            CssAnalyzer.processAllStyleSheets(doc, function(doc, styleSheet)
                                  -            {
                                  -                var key = StyleSheetCache.key(styleSheet);
                                  -                var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -                var option = createElement("option", {value: key});
                                  -                
                                  -                option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -                selectNode.appendChild(option);
                                  -            });
                                  -            
                                  -            this.toolButtonsNode.appendChild(selectNode);
                                  -        }
                                  -        /**/
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var key = target.value;
                                  -        var styleSheet = StyleSheetCache.get(key);
                                  -        
                                  -        this.updateLocation(styleSheet);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //if (!domUtils)
                                  -        //{
                                  -        //    try {
                                  -        //        domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils");
                                  -        //    } catch (exc) {
                                  -        //        if (FBTrace.DBG_ERRORS)
                                  -        //            FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc);
                                  -        //    }
                                  -        //}
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        this.initializeNode();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            var styleSheets = Firebug.browser.document.styleSheets;
                                  -            
                                  -            if (styleSheets.length > 0)
                                  -            {
                                  -                addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -                
                                  -                this.updateLocation(styleSheets[0]);
                                  -            }
                                  -        }
                                  -        
                                  -        //Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // must destroy the editor when we leave the panel to avoid problems (Issue 2981)
                                  -        Firebug.Editor.stopEditing();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        }
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
                                  -
                                  -        //persistObjects(this, state);
                                  -
                                  -        // xxxpedro we are stopping the editor in the shutdown method already
                                  -        //Firebug.Editor.stopEditing();
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        Firebug.Inspector.stopInspecting(true);
                                  -
                                  -        this.showToolbarButtons("fbCSSButtons", true);
                                  -
                                  -        if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel
                                  -        {
                                  -            restoreObjects(this, state);
                                  -
                                  -            if (!this.location)
                                  -                this.location = this.getDefaultLocation();
                                  -
                                  -            if (state && state.scrollTop)
                                  -                this.panelNode.scrollTop = state.scrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbCSSButtons", false);
                                  -
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof CSSStyleSheet)
                                  -            return 1;
                                  -        else if (object instanceof CSSStyleRule)
                                  -            return 2;
                                  -        else if (object instanceof CSSStyleDeclaration)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateLocation: function(styleSheet)
                                  -    {
                                  -        if (!styleSheet)
                                  -            return;
                                  -        if (styleSheet.editStyleSheet)
                                  -            styleSheet = styleSheet.editStyleSheet.sheet;
                                  -        
                                  -        // if it is a restricted stylesheet, show the warning message and abort the update process
                                  -        if (styleSheet.restricted)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode);
                                  -
                                  -            // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The stylesheet could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"
                                  -            }, this.panelNode);
                                  -            
                                  -            return;
                                  -        }
                                  -
                                  -        var rules = this.getStyleSheetRules(this.context, styleSheet);
                                  -
                                  -        var result;
                                  -        if (rules.length)
                                  -            // FIXME xxxpedro chromenew this is making iPad's Safari to crash
                                  -            result = this.template.tag.replace({rules: rules}, this.panelNode);
                                  -        else
                                  -            result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro need to fix showToolbarButtons function
                                  -        //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location));
                                  -
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        this.selection = null;
                                  -
                                  -        if (object instanceof CSSStyleDeclaration) {
                                  -            object = object.parentRule;
                                  -        }
                                  -
                                  -        if (object instanceof CSSStyleRule)
                                  -        {
                                  -            this.navigate(object.parentStyleSheet);
                                  -            this.highlightRule(object);
                                  -        }
                                  -        else if (object instanceof CSSStyleSheet)
                                  -        {
                                  -            this.navigate(object);
                                  -        }
                                  -        else if (object instanceof SourceLink)
                                  -        {
                                  -            try
                                  -            {
                                  -                var sourceLink = object;
                                  -
                                  -                var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -                if (sourceFile)
                                  -                {
                                  -                    clearNode(this.panelNode);  // replace rendered stylesheets
                                  -                    this.showSourceFile(sourceFile);
                                  -
                                  -                    var lineNo = object.line;
                                  -                    if (lineNo)
                                  -                        this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
                                  -                }
                                  -                else // XXXjjb we should not be taking this path
                                  -                {
                                  -                    var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -                    if (stylesheet)
                                  -                        this.navigate(stylesheet);
                                  -                    else
                                  -                    {
                                  -                        if (FBTrace.DBG_CSS)
                                  -                            FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink);
                                  -                    }
                                  -                }
                                  -            }
                                  -            catch(exc) {
                                  -                if (FBTrace.DBG_CSS)
                                  -                    FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var styleSheets = getAllStyleSheets(this.context);
                                  -        return styleSheets;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") },
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(style, target)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        if (this.infoTipType == "color")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyColor",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -        else if (this.infoTipType == "image")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyImageLocation",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) },
                                  -                {label: "OpenImageInNewTab",
                                  -                    command: bindFixed(openNewTab, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -
                                  -        ///if (this.selection instanceof Element)
                                  -        if (isElement(this.selection))
                                  -        {
                                  -            items.push(
                                  -                //"-",
                                  -                {label: "EditStyle",
                                  -                    command: bindFixed(this.editElementStyle, this) }
                                  -            );
                                  -        }
                                  -        else if (!isSystemStyleSheet(this.selection))
                                  -        {
                                  -            items.push(
                                  -                    //"-",
                                  -                    {label: "NewRule",
                                  -                        command: bindFixed(this.insertRule, this, target) }
                                  -                );
                                  -        }
                                  -
                                  -        var cssRule = getAncestorByClass(target, "cssRule");
                                  -        if (cssRule && hasClass(cssRule, "cssEditableRule"))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewProp",
                                  -                    command: bindFixed(this.insertPropertyRow, this, target) }
                                  -            );
                                  -
                                  -            var propRow = getAncestorByClass(target, "cssProp");
                                  -            if (propRow)
                                  -            {
                                  -                var propName = getChildByClass(propRow, "cssPropName")[textContent];
                                  -                var isDisabled = hasClass(propRow, "disabledStyle");
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.editPropertyRow, this, propRow) },
                                  -                    {label: $STRF("DeleteProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.deletePropertyRow, this, propRow) },
                                  -                    {label: $STRF("DisableProp", [propName]), nol10n: true,
                                  -                        type: "checkbox", checked: isDisabled,
                                  -                        command: bindFixed(this.disablePropertyRow, this, propRow) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -        if (this.infoTipType == "image")
                                  -        {
                                  -            openNewTab(this.infoTipObject);
                                  -            return true;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        var propValue = getAncestorByClass(target, "cssPropValue");
                                  -        if (propValue)
                                  -        {
                                  -            var offset = getClientOffset(propValue);
                                  -            var offsetX = x-offset.x;
                                  -
                                  -            var text = propValue[textContent];
                                  -            var charWidth = propValue.offsetWidth/text.length;
                                  -            var charOffset = Math.floor(offsetX/charWidth);
                                  -
                                  -            var cssValue = parseCSSValue(text, charOffset);
                                  -            if (cssValue)
                                  -            {
                                  -                if (cssValue.value == this.infoTipValue)
                                  -                    return true;
                                  -
                                  -                this.infoTipValue = cssValue.value;
                                  -
                                  -                if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value)))
                                  -                {
                                  -                    this.infoTipType = "color";
                                  -                    this.infoTipObject = cssValue.value;
                                  -
                                  -                    return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value);
                                  -                }
                                  -                else if (cssValue.type == "url")
                                  -                {
                                  -                    ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0);
                                  -                    var propNameNode = getElementByClass(target.parentNode, "cssPropName");
                                  -                    if (propNameNode && isImageRule(propNameNode[textContent]))
                                  -                    {
                                  -                        var rule = Firebug.getRepObject(target);
                                  -                        var baseURL = this.getStylesheetURL(rule);
                                  -                        var relURL = parseURLValue(cssValue.value);
                                  -                        var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL);
                                  -                        var repeat = parseRepeatValue(text);
                                  -
                                  -                        this.infoTipType = "image";
                                  -                        this.infoTipObject = absURL;
                                  -
                                  -                        return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        delete this.infoTipType;
                                  -        delete this.infoTipValue;
                                  -        delete this.infoTipObject;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (target == this.panelNode
                                  -            || hasClass(target, "cssSelector") || hasClass(target, "cssRule")
                                  -            || hasClass(target, "cssSheet"))
                                  -        {
                                  -            if (!this.ruleEditor)
                                  -                this.ruleEditor = new CSSRuleEditor(this.document);
                                  -
                                  -            return this.ruleEditor;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!this.editor)
                                  -                this.editor = new CSSEditor(this.document);
                                  -
                                  -            return this.editor;
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheets = this.context.window.document.styleSheets;
                                  -            if (styleSheets.length)
                                  -            {
                                  -                var sheet = styleSheets[0];
                                  -                return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_LOCATIONS)
                                  -                FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectDescription: function(styleSheet)
                                  -    {
                                  -        var url = getURLForStyleSheet(styleSheet);
                                  -        var instance = getInstanceForStyleSheet(styleSheet);
                                  -
                                  -        var baseDescription = splitURLBase(url);
                                  -        if (instance) {
                                  -          baseDescription.name = baseDescription.name + " #" + (instance + 1);
                                  -        }
                                  -        return baseDescription;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -        function scanDoc(styleSheet) {
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < styleSheet.cssRules.length; i++)
                                  -            {
                                  -                if (scanRE.test(styleSheet.cssRules[i].cssText))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -        {
                                  -            row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.editing)
                                  -            {
                                  -                this.currentSearch = new TextSearch(this.stylesheetEditor.box);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -
                                  -                if (row)
                                  -                {
                                  -                    var sel = this.document.defaultView.getSelection();
                                  -                    sel.removeAllRanges();
                                  -                    sel.addRange(this.currentSearch.range);
                                  -                    scrollSelectionIntoView(this);
                                  -                    return true;
                                  -                }
                                  -                else
                                  -                    return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -                this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -            }
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            this.document.defaultView.getSelection().selectAllChildren(row);
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal")
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -
                                  -function CSSElementPanel() {}
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        cascadedTag:
                                  -            DIV({"class": "a11yCSSView",  role : 'presentation'},
                                  -                DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') },
                                  -                    FOR("rule", "$rules",
                                  -                        TAG("$ruleTag", {rule: "$rule"})
                                  -                    )
                                  -                ),
                                  -                DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')},
                                  -                    FOR("section", "$inherited",
                                  -                        H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' },
                                  -                            SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
                                  -                            TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
                                  -                        ),
                                  -                        DIV({role : 'group'},
                                  -                            FOR("rule", "$section.rules",
                                  -                                TAG("$ruleTag", {rule: "$rule"})
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                 )
                                  -            ),
                                  -
                                  -        ruleTag:
                                  -            isIE ?
                                  -            // IE needs the sourceLink first, otherwise it will be rendered outside the panel
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}),
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"})                
                                  -            )
                                  -            :
                                  -            // other browsers need the sourceLink last, otherwise it will cause an extra space
                                  -            // before the rule representation
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"}),
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateCascadeView: function(element)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]);
                                  -        var rules = [], sections = [], usedProps = {};
                                  -        this.getInheritedRules(element, sections, usedProps);
                                  -        this.getElementRules(element, rules, usedProps);
                                  -
                                  -        if (rules.length || sections.length)
                                  -        {
                                  -            var inheritLabel = "Inherited from"; // $STR("InheritedFrom");
                                  -            var result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
                                  -                inheritLabel: inheritLabel}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -        else
                                  -        {
                                  -            var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -
                                  -        // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -        if (CssAnalyzer.hasExternalStyleSheet())
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The results here may be inaccurate because some " +
                                  -                        "stylesheets could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"
                                  -            }, this.panelNode);
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        // if the parentStyleSheet.href is null, CSS std says its inline style.
                                  -        // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location
                                  -        if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
                                  -            return rule.parentStyleSheet.href;
                                  -        else
                                  -            return this.selection.ownerDocument.location.href;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getInheritedRules: function(element, sections, usedProps)
                                  -    {
                                  -        var parent = element.parentNode;
                                  -        if (parent && parent.nodeType == 1)
                                  -        {
                                  -            this.getInheritedRules(parent, sections, usedProps);
                                  -
                                  -            var rules = [];
                                  -            this.getElementRules(parent, rules, usedProps, true);
                                  -
                                  -            if (rules.length)
                                  -                sections.splice(0, 0, {element: parent, rules: rules});
                                  -        }
                                  -    },
                                  -
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        
                                  -        inspectedRules = CssAnalyzer.getElementCSSRules(element);
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0, length=inspectedRules.length; i < length; ++i)
                                  -            {
                                  -                var ruleId = inspectedRules[i];
                                  -                var ruleData = CssAnalyzer.getRuleData(ruleId);
                                  -                var rule = ruleData.rule;
                                  -                
                                  -                var ssid = ruleData.styleSheetId;
                                  -                var parentStyleSheet = StyleSheetCache.get(ssid); 
                                  -
                                  -                var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = null;
                                  -                //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = false;
                                  -                //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                //
                                  -                //var line = domUtils.getRuleLine(rule);
                                  -                // TODO: xxxpedro CSS line number 
                                  -                var line = ruleData.lineNo;
                                  -                
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: ruleData.selector, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /*
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        try
                                  -        {
                                  -            inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null;
                                  -        } catch (exc) {}
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0; i < inspectedRules.Count(); ++i)
                                  -            {
                                  -                var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
                                  -
                                  -                var href = rule.parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                var line = domUtils.getRuleLine(rule);
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: rule.selectorText, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /**/
                                  -    markOverridenProps: function(props, usedProps, inheritMode)
                                  -    {
                                  -        for (var i = 0; i < props.length; ++i)
                                  -        {
                                  -            var prop = props[i];
                                  -            if ( usedProps.hasOwnProperty(prop.name) )
                                  -            {
                                  -                var deadProps = usedProps[prop.name]; // all previous occurrences of this property
                                  -                for (var j = 0; j < deadProps.length; ++j)
                                  -                {
                                  -                    var deadProp = deadProps[j];
                                  -                    if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important)
                                  -                        prop.overridden = true;  // new occurrence overridden
                                  -                    else if (!prop.disabled)
                                  -                        deadProp.overridden = true;  // previous occurrences overridden
                                  -                }
                                  -            }
                                  -            else
                                  -                usedProps[prop.name] = [];
                                  -
                                  -            prop.wasInherited = inheritMode ? true : false;
                                  -            usedProps[prop.name].push(prop);  // all occurrences of a property seen so far, by name
                                  -        }
                                  -    },
                                  -
                                  -    getStyleProperties: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(element.style, inheritMode);
                                  -        this.addOldProperties(this.context, getElementXPath(element), inheritMode, props);
                                  -
                                  -        sortProperties(props);
                                  -        this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -        if (props.length)
                                  -            rules.splice(0, 0,
                                  -                    {rule: element, id: getElementXPath(element),
                                  -                        selector: "element.style", props: props, inherited: inheritMode});
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "css",
                                  -    title: "Style",
                                  -    parentPanel: "HTML",
                                  -    order: 0,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -        
                                  -        //this.updateCascadeView(document.getElementsByTagName("h1")[0]);
                                  -        //this.updateCascadeView(document.getElementById("build"));
                                  -        
                                  -        /*
                                  -        this.onStateChange = bindFixed(this.contentStateCheck, this);
                                  -        this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER);
                                  -        this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
                                  -        /**/
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (domUtils)
                                  -        {
                                  -            // Normally these would not be required, but in order to update after the state is set
                                  -            // using the options menu we need to monitor these global events as well
                                  -            var doc = win.document;
                                  -            ///addEvent(doc, "mouseover", this.onHoverChange);
                                  -            ///addEvent(doc, "mousedown", this.onActiveChange);
                                  -        }
                                  -    },
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var doc = win.document;
                                  -        ///removeEvent(doc, "mouseover", this.onHoverChange);
                                  -        ///removeEvent(doc, "mousedown", this.onActiveChange);
                                  -
                                  -        if (isAncestor(this.stateChangeEl, doc))
                                  -        {
                                  -            this.removeStateChangeHandlers();
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Element ? 1 : 0;
                                  -    },
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateCascadeView(element);
                                  -        if (domUtils)
                                  -        {
                                  -            this.contentState = safeGetContentState(element);
                                  -            this.addStateChangeHandlers(element);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(element)
                                  -    {
                                  -        if ( !instanceOf(element , "Element") ) // html supports SourceLink
                                  -            return;
                                  -
                                  -        if (sothinkInstalled)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -
                                  -        /*
                                  -        if (!domUtils)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        this.updateView(element);
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "showUserAgentCSS" || name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var ret = [
                                  -            {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") },
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }
                                  -        ];
                                  -        if (domUtils && this.selection)
                                  -        {
                                  -            var state = safeGetContentState(this.selection);
                                  -
                                  -            ret.push("-");
                                  -            ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE,
                                  -              command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)});
                                  -            ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER,
                                  -              command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)});
                                  -        }
                                  -        return ret;
                                  -    },
                                  -
                                  -    updateContentState: function(state, remove)
                                  -    {
                                  -        domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state);
                                  -        this.refresh();
                                  -    },
                                  -
                                  -    addStateChangeHandlers: function(el)
                                  -    {
                                  -      this.removeStateChangeHandlers();
                                  -
                                  -      /*
                                  -      addEvent(el, "focus", this.onStateChange);
                                  -      addEvent(el, "blur", this.onStateChange);
                                  -      addEvent(el, "mouseup", this.onStateChange);
                                  -      addEvent(el, "mousedown", this.onStateChange);
                                  -      addEvent(el, "mouseover", this.onStateChange);
                                  -      addEvent(el, "mouseout", this.onStateChange);
                                  -      /**/
                                  -
                                  -      this.stateChangeEl = el;
                                  -    },
                                  -
                                  -    removeStateChangeHandlers: function()
                                  -    {
                                  -        var sel = this.stateChangeEl;
                                  -        if (sel)
                                  -        {
                                  -            /*
                                  -            removeEvent(sel, "focus", this.onStateChange);
                                  -            removeEvent(sel, "blur", this.onStateChange);
                                  -            removeEvent(sel, "mouseup", this.onStateChange);
                                  -            removeEvent(sel, "mousedown", this.onStateChange);
                                  -            removeEvent(sel, "mouseover", this.onStateChange);
                                  -            removeEvent(sel, "mouseout", this.onStateChange);
                                  -            /**/
                                  -        }
                                  -    },
                                  -
                                  -    contentStateCheck: function(state)
                                  -    {
                                  -        if (!state || this.contentState & state)
                                  -        {
                                  -            var timeoutRunner = bindFixed(function()
                                  -            {
                                  -                var newState = safeGetContentState(this.selection);
                                  -                if (newState != this.contentState)
                                  -                {
                                  -                    this.context.invalidatePanels(this.name);
                                  -                }
                                  -            }, this);
                                  -
                                  -            // Delay exec until after the event has processed and the state has been updated
                                  -            setTimeout(timeoutRunner, 0);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -function safeGetContentState(selection)
                                  -{
                                  -    try
                                  -    {
                                  -        return domUtils.getContentState(selection);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("css.safeGetContentState; EXCEPTION", e);
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function CSSComputedElementPanel() {}
                                  -
                                  -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        computedTag:
                                  -            DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')},
                                  -                FOR("group", "$groups",
                                  -                    H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"},
                                  -                        SPAN({"class": "cssInheritLabel"}, "$group.title")
                                  -                    ),
                                  -                    TABLE({width: "100%", role : 'group'},
                                  -                        TBODY({role : 'presentation'},
                                  -                            FOR("prop", "$group.props",
                                  -                                TR({"class": 'focusRow computedStyleRow', role : 'listitem'},
                                  -                                    TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"),
                                  -                                    TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value")
                                  -                                )
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateComputedView: function(element)
                                  -    {
                                  -        var win = isIE ?
                                  -                element.ownerDocument.parentWindow :
                                  -                element.ownerDocument.defaultView;
                                  -        
                                  -        var style = isIE ?
                                  -                element.currentStyle :
                                  -                win.getComputedStyle(element, "");
                                  -
                                  -        var groups = [];
                                  -
                                  -        for (var groupName in styleGroups)
                                  -        {
                                  -            // TODO: xxxpedro i18n $STR
                                  -            //var title = $STR("StyleGroup-" + groupName);
                                  -            var title = styleGroupTitles[groupName];
                                  -            var group = {title: title, props: []};
                                  -            groups.push(group);
                                  -
                                  -            var props = styleGroups[groupName];
                                  -            for (var i = 0; i < props.length; ++i)
                                  -            {
                                  -                var propName = props[i];
                                  -                var propValue = style.getPropertyValue ?
                                  -                        style.getPropertyValue(propName) :
                                  -                        ""+style[toCamelCase(propName)];
                                  -                
                                  -                if (propValue === undefined || propValue === null) 
                                  -                    continue;
                                  -                
                                  -                propValue = stripUnits(rgbToHex(propValue));
                                  -                if (propValue)
                                  -                    group.props.push({name: propName, value: propValue});
                                  -            }
                                  -        }
                                  -
                                  -        var result = this.template.computedTag.replace({groups: groups}, this.panelNode);
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "computed",
                                  -    title: "Computed",
                                  -    parentPanel: "HTML",
                                  -    order: 1,
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateComputedView(element);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSSEditor
                                  -
                                  -function CSSEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var rule = Firebug.getRepObject(target);
                                  -        var emptyProp = 
                                  -        {
                                  -            // TODO: xxxpedro - uses charCode(255) to force the element being rendered, 
                                  -            // allowing webkit to get the correct position of the property name "span",
                                  -            // when inserting a new CSS rule?
                                  -            name: "",
                                  -            value: "",
                                  -            important: ""
                                  -        };
                                  -
                                  -        if (insertWhere == "before")
                                  -            return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
                                  -        else
                                  -            return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // We need to check the value first in order to avoid a problem in IE8 
                                  -        // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite 
                                  -        if (!value) return;
                                  -        
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (hasClass(row, "disabledStyle"))
                                  -            toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(target);
                                  -
                                  -        if (hasClass(target, "cssPropName"))
                                  -        {
                                  -            if (value && previousValue != value)  // name of property has changed.
                                  -            {
                                  -                var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -                var parsedValue = parsePriority(propValue);
                                  -
                                  -                if (propValue && propValue != "undefined") {
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n");
                                  -                    if (previousValue)
                                  -                        Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -                    Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
                                  -                }
                                  -            }
                                  -            else if (!value) // name of the property has been deleted, so remove the property.
                                  -                Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -        }
                                  -        else if (getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -
                                  -            if (FBTrace.DBG_CSS)
                                  -            {
                                  -                FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n");
                                  -               // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
                                  -            }
                                  -
                                  -            if (value && value != "null")
                                  -            {
                                  -                var parsedValue = parsePriority(value);
                                  -                Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -            }
                                  -            else if (previousValue && previousValue != "null")
                                  -                Firebug.CSSModule.removeProperty(rule, propName);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -            return {start: 0, end: value.length-1};
                                  -        else
                                  -            return parseCSSValue(value, offset);
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -        {
                                  -            return getCSSPropertyNames();
                                  -        }
                                  -        else
                                  -        {
                                  -            var row = getAncestorByClass(this.target, "cssProp");
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            return getCSSKeywordsByProperty(propName);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//CSSRuleEditor
                                  -
                                  -function CSSRuleEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -    this.completeAsYouType = false;
                                  -}
                                  -CSSRuleEditor.uniquifier = 0;
                                  -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -         var emptyRule = {
                                  -                 selector: "",
                                  -                 id: "",
                                  -                 props: [],
                                  -                 isSelectorEditable: true
                                  -         };
                                  -
                                  -         if (insertWhere == "before")
                                  -             return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
                                  -         else
                                  -             return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "'  '" + previousValue + "'", target);
                                  -
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        if (value === previousValue)     return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        var styleSheet = this.panel.location;
                                  -        styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        var rule = Firebug.getRepObject(target), oldRule = rule;
                                  -        var ruleIndex = cssRules.length;
                                  -        if (rule || Firebug.getRepObject(row.nextSibling))
                                  -        {
                                  -            var searchRule = rule || Firebug.getRepObject(row.nextSibling);
                                  -            for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex]; ruleIndex++) {}
                                  -        }
                                  -
                                  -        // Delete in all cases except for new add
                                  -        // We want to do this before the insert to ease change tracking
                                  -        if (oldRule)
                                  -        {
                                  -            Firebug.CSSModule.deleteRule(styleSheet, ruleIndex);
                                  -        }
                                  -
                                  -        // Firefox does not follow the spec for the update selector text case.
                                  -        // When attempting to update the value, firefox will silently fail.
                                  -        // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
                                  -        // old discussion of this bug.
                                  -        // As a result we need to recreate the style every time the selector
                                  -        // changes.
                                  -        if (value)
                                  -        {
                                  -            var cssText = [ value, "{" ];
                                  -            var props = row.getElementsByClassName("cssProp");
                                  -            for (var i = 0; i < props.length; i++) {
                                  -                var propEl = props[i];
                                  -                if (!hasClass(propEl, "disabledStyle")) {
                                  -                    cssText.push(getChildByClass(propEl, "cssPropName")[textContent]);
                                  -                    cssText.push(":");
                                  -                    cssText.push(getChildByClass(propEl, "cssPropValue")[textContent]);
                                  -                    cssText.push(";");
                                  -                }
                                  -            }
                                  -            cssText.push("}");
                                  -            cssText = cssText.join("");
                                  -
                                  -            try
                                  -            {
                                  -                var insertLoc = Firebug.CSSModule.insertRule(styleSheet, cssText, ruleIndex);
                                  -                rule = cssRules[insertLoc];
                                  -                ruleIndex++;
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("CSS Insert Error: "+err, err);
                                  -
                                  -                target.innerHTML = escapeForCss(previousValue);
                                  -                row.repObject = undefined;
                                  -                return;
                                  -            }
                                  -        } else {
                                  -            rule = undefined;
                                  -        }
                                  -
                                  -        // Update the rep object
                                  -        row.repObject = rule;
                                  -        if (!oldRule)
                                  -        {
                                  -            // Who knows what the domutils will return for rule line
                                  -            // for a recently created rule. To be safe we just generate
                                  -            // a unique value as this is only used as an internal key.
                                  -            var ruleId = "new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -            row.setAttribute("ruleId", ruleId);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheetEditor
                                  -
                                  -function StyleSheetEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -}
                                  -
                                  -StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    multiLine: true,
                                  -
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        if (this.box.parentNode == this.panel.panelNode)
                                  -            this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -        delete this.styleSheet;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        Firebug.CSSModule.freeEdit(this.styleSheet, value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        this.panel.refresh();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    },
                                  -
                                  -    scrollToLine: function(line, offset)
                                  -    {
                                  -        this.startMeasuring(this.input);
                                  -        var lineHeight = this.measureText().height;
                                  -        this.stopMeasuring();
                                  -
                                  -        this.input.scrollTop = (line * lineHeight) + offset;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var rgbToHex = function rgbToHex(value)
                                  -{
                                  -    return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, rgbToHexReplacer);
                                  -};
                                  -
                                  -var rgbToHexReplacer = function(_, r, g, b) {
                                  -    return '#' + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
                                  -};
                                  -
                                  -var stripUnits = function stripUnits(value)
                                  -{
                                  -    // remove units from '0px', '0em' etc. leave non-zero units in-tact.
                                  -    return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi, stripUnitsReplacer);
                                  -};
                                  -
                                  -var stripUnitsReplacer = function(_, skip, remove, whitespace) {
                                  -    return skip || ('0' + whitespace);
                                  -};
                                  -
                                  -function parsePriority(value)
                                  -{
                                  -    var rePriority = /(.*?)\s*(!important)?$/;
                                  -    var m = rePriority.exec(value);
                                  -    var propValue = m ? m[1] : "";
                                  -    var priority = m && m[2] ? "important" : "";
                                  -    return {value: propValue, priority: priority};
                                  -}
                                  -
                                  -function parseURLValue(value)
                                  -{
                                  -    var m = reURL.exec(value);
                                  -    return m ? m[1] : "";
                                  -}
                                  -
                                  -function parseRepeatValue(value)
                                  -{
                                  -    var m = reRepeat.exec(value);
                                  -    return m ? m[0] : "";
                                  -}
                                  -
                                  -function parseCSSValue(value, offset)
                                  -{
                                  -    var start = 0;
                                  -    var m;
                                  -    while (1)
                                  -    {
                                  -        m = reSplitCSS.exec(value);
                                  -        if (m && m.index+m[0].length < offset)
                                  -        {
                                  -            value = value.substr(m.index+m[0].length);
                                  -            start += m.index+m[0].length;
                                  -            offset -= m.index+m[0].length;
                                  -        }
                                  -        else
                                  -            break;
                                  -    }
                                  -
                                  -    if (m)
                                  -    {
                                  -        var type;
                                  -        if (m[1])
                                  -            type = "url";
                                  -        else if (m[2] || m[3])
                                  -            type = "rgb";
                                  -        else if (m[4])
                                  -            type = "int";
                                  -
                                  -        return {value: m[0], start: start+m.index, end: start+m.index+(m[0].length-1), type: type};
                                  -    }
                                  -}
                                  -
                                  -function findPropByName(props, name)
                                  -{
                                  -    for (var i = 0; i < props.length; ++i)
                                  -    {
                                  -        if (props[i].name == name)
                                  -            return i;
                                  -    }
                                  -}
                                  -
                                  -function sortProperties(props)
                                  -{
                                  -    props.sort(function(a, b)
                                  -    {
                                  -        return a.name > b.name ? 1 : -1;
                                  -    });
                                  -}
                                  -
                                  -function getTopmostRuleLine(panelNode)
                                  -{
                                  -    for (var child = panelNode.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
                                  -        {
                                  -            var rule = child.repObject;
                                  -            if (rule)
                                  -                return {
                                  -                    line: domUtils.getRuleLine(rule),
                                  -                    offset: panelNode.scrollTop-child.offsetTop
                                  -                };
                                  -        }
                                  -    }
                                  -    return 0;
                                  -}
                                  -
                                  -function getStyleSheetCSS(sheet, context)
                                  -{
                                  -    if (sheet.ownerNode instanceof HTMLStyleElement)
                                  -        return sheet.ownerNode.innerHTML;
                                  -    else
                                  -        return context.sourceCache.load(sheet.href).join("");
                                  -}
                                  -
                                  -function getStyleSheetOwnerNode(sheet) {
                                  -    for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
                                  -
                                  -    return sheet.ownerNode;
                                  -}
                                  -
                                  -function scrollSelectionIntoView(panel)
                                  -{
                                  -    var selCon = getSelectionController(panel);
                                  -    selCon.scrollSelectionIntoView(
                                  -            nsISelectionController.SELECTION_NORMAL,
                                  -            nsISelectionController.SELECTION_FOCUS_REGION, true);
                                  -}
                                  -
                                  -function getSelectionController(panel)
                                  -{
                                  -    var browser = Firebug.chrome.getPanelBrowser(panel);
                                  -    return browser.docShell.QueryInterface(nsIInterfaceRequestor)
                                  -        .getInterface(nsISelectionDisplay)
                                  -        .QueryInterface(nsISelectionController);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    selectIndex: 0, // index of the current selectNode's option
                                  -    sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script")
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            // Don't show Firebug Lite source code in the list of options
                                  -            if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
                                  -                continue;
                                  -            
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // we must render the code first, so the persistent state can be restore
                                  -        this.selectSourceCode(this.selectIndex);
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.selectIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.selectIndex = index;
                                  -        this.sourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        var select = this.selectNode;
                                  -        
                                  -        this.selectIndex = select.selectedIndex;
                                  -        
                                  -        var option = select.options[select.selectedIndex];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        var select = this.selectNode; 
                                  -        select.selectedIndex = index;
                                  -        
                                  -        var option = select.options[index];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.sourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.panelNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode);
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (Firebug.disableResourceFetching)
                                  -                {
                                  -                    renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage);
                                  -                }
                                  -                else if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                onFailure();
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[Firebug.Lite.Cache.ID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {};
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    /*
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    /**/
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var defaultObject = this.getDefaultSelection(this.context);
                                  -            var selectObject = defaultObject; 
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro dom 
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val) && !(name in domMembers))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers && !(name in domConstantMap))
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -};
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -// FIXME: xxxpedro This function is already defined in Lib. If we keep this definition here, it
                                  -// will crash IE9 when not running the IE Developer Tool with JavaScript Debugging enabled!!!
                                  -// Check if this function is in fact defined in Firebug for Firefox. If so, we should remove
                                  -// this from here. The only difference of this function is the IE hack to show up the prototype
                                  -// of functions, but Firebug no longer shows the prototype for simple functions.
                                  -//var hasProperties = function hasProperties(ob)
                                  -//{
                                  -//    try
                                  -//    {
                                  -//        for (var name in ob)
                                  -//            return true;
                                  -//    } catch (exc) {}
                                  -//    
                                  -//    // IE function prototype is not listed in (for..in)
                                  -//    if (isFunction(ob)) return true;
                                  -//    
                                  -//    return false;
                                  -//};
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -};
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -};
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -};
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -};
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -};
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -};
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1,
                                  -    DBG_CSS: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.panelNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().panelNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.clearButton.shutdown();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -var registerModule = Firebug.registerModule;
                                  -var registerPanel = Firebug.registerPanel;
                                  -
                                  -// ************************************************************************************************
                                  -append(Firebug,
                                  -{
                                  -    extend: function(fn)
                                  -    {
                                  -        if (Firebug.chrome && Firebug.chrome.addPanel)
                                  -        {
                                  -            var namespace = ns(fn);
                                  -            fn.call(namespace, FBL);
                                  -        }
                                  -        else
                                  -        {
                                  -            setTimeout(function(){Firebug.extend(fn);},100);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        registerModule.apply(Firebug, arguments);
                                  -        
                                  -        modules.push.apply(modules, arguments);
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        registerPanel.apply(Firebug, arguments);
                                  -        
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            // TODO: xxxpedro investigate why Dev Panel throws an error
                                  -            if (panelType.prototype.name == "Dev") continue;
                                  -            
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            var parentPanelName = panelType.prototype.parentPanel;
                                  -            if (parentPanelName)
                                  -            {
                                  -                parentPanelMap[parentPanelName] = 1;
                                  -            }
                                  -            else
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -                var chrome = Firebug.chrome;
                                  -                chrome.addPanel(panelName);
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    chrome.selectPanel(panelName);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]);                
                                  -            }
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.Skin = 
                                  -{
                                  -    CSS: '.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.png) repeat-y;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disable.png) no-repeat 2px 1px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.png) no-repeat !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/infoIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/warningIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.png) !important;background-image:url(chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug.jpg b/branches/flexBox/build/chrome-extension-beta/firebug.jpg
                                  deleted file mode 100644
                                  index 2a18aa0d..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug.jpg and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug128.png b/branches/flexBox/build/chrome-extension-beta/firebug128.png
                                  deleted file mode 100644
                                  index dbca545f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug128.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug16.png b/branches/flexBox/build/chrome-extension-beta/firebug16.png
                                  deleted file mode 100644
                                  index d8d0c249..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug16.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug24.png b/branches/flexBox/build/chrome-extension-beta/firebug24.png
                                  deleted file mode 100644
                                  index f50ff926..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug24.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug24_disabled.png b/branches/flexBox/build/chrome-extension-beta/firebug24_disabled.png
                                  deleted file mode 100644
                                  index 16d4dcde..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug24_disabled.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug32.png b/branches/flexBox/build/chrome-extension-beta/firebug32.png
                                  deleted file mode 100644
                                  index c02f4f5f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug32.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/firebug48.png b/branches/flexBox/build/chrome-extension-beta/firebug48.png
                                  deleted file mode 100644
                                  index b4431327..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/firebug48.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/googleChrome.js b/branches/flexBox/build/chrome-extension-beta/googleChrome.js
                                  deleted file mode 100644
                                  index 26c8af3d..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/googleChrome.js
                                  +++ /dev/null
                                  @@ -1,106 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -Firebug.extend(function(FBL) { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (!Env.isChromeExtension) return;
                                  -
                                  -// ************************************************************************************************
                                  -// local variables
                                  -
                                  -var channel;
                                  -var channelEvent;
                                  -
                                  -// ************************************************************************************************
                                  -// GoogleChrome Module
                                  -
                                  -Firebug.GoogleChrome = extend(Firebug.Module,
                                  -{
                                  -    initialize: function()
                                  -    {
                                  -        var doc = FBL.Env.browser.document;
                                  -        
                                  -        if (!doc.getElementById("FirebugChannel"))
                                  -        {
                                  -            channel = doc.createElement("div");
                                  -            channel.id = "FirebugChannel";
                                  -            channel.firebugIgnore = true;
                                  -            channel.style.display = "none";
                                  -            doc.documentElement.insertBefore(channel, doc.documentElement.firstChild);
                                  -            
                                  -            channelEvent = document.createEvent("Event");
                                  -            channelEvent.initEvent("FirebugChannelEvent", true, true);
                                  -            
                                  -            channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -        }
                                  -    },
                                  -
                                  -    dispatch: function(message)
                                  -    {
                                  -        channel.innerText = message;
                                  -        channel.dispatchEvent(channelEvent);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// internals
                                  -
                                  -var onFirebugChannelEvent = function()
                                  -{
                                  -    var name = channel.innerText;
                                  -    
                                  -    if (name.indexOf("FB_contextMenuClick") == 0)
                                  -    {
                                  -        var doc = FBL.Env.browser.document;
                                  -        var contextMenuElementXPath = name.split(",")[1];
                                  -        var contextMenuElement = getElementsByXPath(doc, contextMenuElementXPath)[0];
                                  -
                                  -        // If not open, open it first
                                  -        Firebug.chrome.toggle(true);
                                  -        
                                  -        setTimeout(function(){
                                  -
                                  -            // Select the HTML panel
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -
                                  -            // Select the clicked element in the HTML tree
                                  -            Firebug.HTML.select(contextMenuElement);
                                  -        
                                  -        },50);
                                  -    }
                                  -    else if (name == "FB_toggle")
                                  -    {
                                  -        Firebug.chrome.toggle();
                                  -    }
                                  -    else if (name == "FB_openInNewWindow")
                                  -    {
                                  -        setTimeout(function(){
                                  -            Firebug.chrome.toggle(true, true);
                                  -        },0);
                                  -    }
                                  -};
                                  -
                                  -var getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.GoogleChrome);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/license.txt b/branches/flexBox/build/chrome-extension-beta/license.txt
                                  deleted file mode 100644
                                  index ba43b751..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/license.txt
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2007, Parakey Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Parakey Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Parakey Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/manifest.json b/branches/flexBox/build/chrome-extension-beta/manifest.json
                                  deleted file mode 100644
                                  index 00f497ee..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/manifest.json
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -{
                                  -  "name": "Firebug Lite Beta for Google Chromeâ„¢",
                                  -  "version": "1.4.0.11961",
                                  -  "description": "Firebug Lite Beta for Google Chrome, supported by the Firebug Working Group.",
                                  -  "update_url": "https://getfirebug.com/releases/lite/chrome/beta/updates.xml",
                                  -  "background_page": "background.html",
                                  -  "browser_action":
                                  -  {
                                  -    "default_icon": "firebug24_disabled.png",
                                  -    "default_title": "Firebug Lite 1.4.0"
                                  -  },
                                  -  "icons":
                                  -  {
                                  -    "128": "firebug128.png",
                                  -    "16": "firebug16.png",
                                  -    "32": "firebug32.png",
                                  -    "48": "firebug48.png"
                                  -  },
                                  -  "content_scripts":
                                  -  [
                                  -    {
                                  -      "matches": ["http://*/*", "https://*/*"],
                                  -      "js": ["contentScript.js"],
                                  -      "run_at": "document_start"
                                  -    }
                                  -  ],
                                  -  "permissions":
                                  -  [
                                  -    "contextMenus",
                                  -    "tabs", 
                                  -    "http://*/*", 
                                  -    "https://*/*",
                                  -    "http://127.0.0.1/*",
                                  -    "http://localhost/*"
                                  -  ]
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/blank.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBg.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBgHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/debugger.css b/branches/flexBox/build/chrome-extension-beta/skin/xp/debugger.css
                                  deleted file mode 100644
                                  index 4a64d266..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/debugger.css
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-script {
                                  -    overflow: hidden;
                                  -    font-family: monospace;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.scriptTooltip {
                                  -    position: fixed;
                                  -    z-index: 2147483647;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceBox {
                                  -    /* TODO: xxxpedro problem with sourceBox and scrolling elements */
                                  -    /*overflow: scroll; /* see issue 1479 */
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    white-space: nowrap;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceLine {
                                  -    -moz-user-select: none;
                                  -    margin-right: 10px;
                                  -    border-right: 1px solid #CCCCCC;
                                  -    padding: 0px 4px 0 20px;
                                  -    background: #EEEEEE no-repeat 2px 0px;
                                  -    color: #888888;
                                  -    white-space: pre;
                                  -    font-family: monospace; /* see issue 2953 */
                                  -}
                                  -
                                  -.noteInToolTip { /* below sourceLine, so it overrides it */
                                  -    background-color: #FFD472;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus .sourceLine {
                                  -    background-color: #FFFFC0;
                                  -    color: navy;
                                  -    border-right: 1px solid black;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -.a11y1emSize {
                                  -    width: 1em;
                                  -    height: 1em;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.useA11y .panelStatusLabel:focus {
                                  -    outline-offset: -2px !important;
                                  - }
                                  -
                                  -.sourceBox > .sourceRow > .sourceLine {
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.sourceLine:hover {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.sourceRowText {
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] {
                                  -    outline: 1px solid #D9D9B6;
                                  -    margin-right: 1px;
                                  -    background-color: lightgoldenrodyellow;
                                  -}
                                  -
                                  -.sourceRow[executable="true"] > .sourceLine {
                                  -    content: "-";
                                  -    color: #4AA02C;  /* Spring Green */
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/exe.png);
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointCondition.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointExe.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabledExe.png);
                                  -}
                                  -
                                  -.sourceLine.editing {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.conditionEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    margin-top: 0;
                                  -    left: 2px;
                                  -    width: 90%;
                                  -}
                                  -
                                  -.conditionEditorInner {
                                  -    position: relative;
                                  -    top: -26px;
                                  -    height: 0;
                                  -}
                                  -
                                  -.conditionCaption {
                                  -    margin-bottom: 2px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    font-size: 11px;
                                  -    color: #226679;
                                  -}
                                  -
                                  -.conditionInput {
                                  -    width: 100%;
                                  -    border: 1px solid #0096C0;
                                  -    font-family: monospace;
                                  -    font-size: inherit;
                                  -}
                                  -
                                  -.conditionEditorInner1 {
                                  -    padding-left: 37px;
                                  -    background: url(condBorders.png) repeat-y;
                                  -}
                                  -
                                  -.conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBorders.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.conditionEditorTop1 {
                                  -    background: url(condCorners.png) no-repeat 100% 0;
                                  -    margin-left: 37px;
                                  -    height: 35px;
                                  -}
                                  -
                                  -.conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -37px;
                                  -    width: 37px;
                                  -    height: 35px;
                                  -    background: url(condCorners.png) no-repeat;
                                  -}
                                  -
                                  -.conditionEditorBottom1 {
                                  -    background: url(condCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 37px;
                                  -    height: 33px;
                                  -}
                                  -
                                  -.conditionEditorBottom2 {
                                  -    position: relative;    left: -37px;
                                  -    width: 37px;
                                  -    height: 33px;
                                  -    background: url(condCorners.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.upsideDown {
                                  -    margin-top: 2px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner {
                                  -    top: -8px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner1 {
                                  -    padding-left: 33px;
                                  -    background: url(condBordersUps.png) repeat-y;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBordersUps.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 0;
                                  -    margin-left: 33px;
                                  -    height: 25px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 25px;
                                  -    background: url(condCornersUps.png) no-repeat;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 100%;
                                  -    margin-left: 33px;
                                  -    height: 43px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 43px;
                                  -    background: url(condCornersUps.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointsGroupListBox {
                                  -  overflow: hidden;
                                  -}
                                  -
                                  -.breakpointBlockHead {
                                  -    position: relative;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .checkbox {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .objectLink-sourceLink {
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    background-color: #FFFFFF; /* issue 3308 */
                                  -}
                                  -
                                  -.breakpointBlockHead > .closeButton {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 2px;
                                  -}
                                  -
                                  -.breakpointCheckbox {
                                  -    margin-top: 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.breakpointName {
                                  -    margin-left: 4px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] > .breakpointBlockHead > *,
                                  -.breakpointRow[aria-checked="false"] > .breakpointCode {
                                  -    opacity: 0.5;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] .breakpointCheckbox,
                                  -.breakpointRow[aria-checked="false"] .objectLink-sourceLink,
                                  -.breakpointRow[aria-checked="false"] .closeButton,
                                  -.breakpointRow[aria-checked="false"] .breakpointMutationType {
                                  -    opacity: 1.0 !important;
                                  -}
                                  -
                                  -.breakpointCode {
                                  -    overflow: hidden;
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.breakpointCondition {
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: Gray;
                                  -}
                                  -
                                  -.breakpointBlock-breakpoints > .groupHeader {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointBlock-monitors > .breakpointCode {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.breakpointBlock-errorBreakpoints .breakpointCheckbox,
                                  -.breakpointBlock-monitors .breakpointCheckbox {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointHeader {
                                  -    margin: 0 !important;
                                  -    border-top: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/detach.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/detachHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/down.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/downActive.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/downHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon-sm.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css b/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index b5dd5dde..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.IE6.css b/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.css b/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index cc33761c..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,3147 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -.obscured {
                                  -    left: -999999px !important;
                                  -}
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -	font-size: 11px;
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -	font-size: 11px;
                                  -    font: Monaco, monospace;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    -webkit-border-radius: 4px 4px 0 0;
                                  -    border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    white-space: pre-wrap;
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -    min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties IE6 */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -
                                  -* html .logRow-spy .spyHead .spyTitle,
                                  -* html .logGroup .logGroupLabel,
                                  -* html .hasChildren .memberLabelCell .memberLabel,
                                  -* html .hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -* html .opened .spyHead .spyTitle,
                                  -* html .opened .logGroupLabel, 
                                  -* html .opened .memberLabelCell .memberLabel {
                                  -    background-image: url(tree_close.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -/* xxxpedro reps object representation .................................... */
                                  -.objectProp-object {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectProps {
                                  -    color: #000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.objectPropName {
                                  -    /*font-style: italic;*/
                                  -    color: #777;
                                  -}
                                  -
                                  -/*
                                  -.objectProps .objectProp-string,
                                  -.objectProps .objectProp-number,
                                  -.objectProps .objectProp-object
                                  -{
                                  -    font-style: italic;
                                  -}
                                  -/**/
                                  -
                                  -.objectProps .objectProp-string
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #f55;
                                  -}
                                  -.objectProps .objectProp-number
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #55a;
                                  -}
                                  -.objectProps .objectProp-object
                                  -{
                                  -    /*font-family: Lucida Grande,sans-serif;*/
                                  -    color: #585;
                                  -}
                                  -/* xxxpedro reps object representation .................................... */
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.objectEqual,
                                  -.objectComma,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.objectRightBrace,
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    border-spacing: 0;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbChrome > tbody > tr > td {
                                  -    padding: 0;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 48px;
                                  -    padding: 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em/1.4545em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.html b/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index 22960919..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,215 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<!-- An empty script to avoid FOUC when loading the stylesheet -->
                                  -<script type="text/javascript"></script>
                                  -<style type="text/css" media="screen">@import "firebug.css";</style>
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/group.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/html.css b/branches/flexBox/build/chrome-extension-beta/skin/xp/html.css
                                  deleted file mode 100644
                                  index 9d0afb50..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/html.css
                                  +++ /dev/null
                                  @@ -1,272 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-html {
                                  -    -moz-box-sizing: padding-box;
                                  -    padding: 4px 0 0 2px;
                                  -}
                                  -
                                  -.nodeBox {
                                  -    position: relative;
                                  -    font-family: Monaco, monospace;
                                  -    padding-left: 13px;
                                  -    -moz-user-select: -moz-none;
                                  -}
                                  -.nodeBox.search-selection {
                                  -    -moz-user-select: text;
                                  -}
                                  -.twisty {
                                  -    position: absolute;
                                  -    left: 0px;
                                  -    top: 0px;
                                  -    width: 14px;
                                  -    height: 14px;
                                  -}
                                  -
                                  -.nodeChildBox {
                                  -    margin-left: 12px;
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeLabel,
                                  -.nodeCloseLabel {
                                  -    margin: -2px 2px 0 2px;
                                  -    border: 2px solid transparent;
                                  -    -moz-border-radius: 3px;
                                  -    padding: 0 2px;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeCloseLabel {
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,
                                  -.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeWhiteSpace {
                                  -    border: 1px solid LightGray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -.nodeWhiteSpace_Space {
                                  -    border: 1px solid #ddd;
                                  -}
                                  -
                                  -.nodeTextEntity {
                                  -    border: 1px solid gray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlightOpen > .nodeLabel {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -.nodeBox.highlightOpen > .nodeCloseLabel,
                                  -.nodeBox.highlightOpen > .nodeChildBox,
                                  -.nodeBox.open > .nodeCloseLabel,
                                  -.nodeBox.open > .nodeChildBox {
                                  -    display: block;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel {
                                  -    border-color: Highlight;
                                  -    background-color: Highlight;
                                  -    color: HighlightText !important;
                                  -}
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: inherit !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlighted > .nodeLabel {
                                  -    border-color: Highlight !important;
                                  -    background-color: cyan !important;
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden .nodeCloseLabel,
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
                                  -.nodeBox.nodeHidden .nodeText {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.mutated > .nodeLabel,
                                  -.nodeAttr.mutated,
                                  -.nodeValue.mutated,
                                  -.nodeText.mutated,
                                  -.nodeBox.mutated > .nodeText {
                                  -    background-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -.nodeBox.selected.mutated > .nodeLabel,
                                  -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
                                  -    background-color: #EFFF79;
                                  -    border-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-dirxml {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.soloElement > .nodeBox  {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.useA11y .nodeLabel.focused {
                                  -    outline: 2px solid #FF9933;
                                  -    -moz-outline-radius: 3px;
                                  -    outline-offset: -2px;
                                  -}
                                  -
                                  -.useA11y .nodeLabelBox:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointCode .twisty {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointCode .nodeBox.containerNodeBox,
                                  -.breakpointCode .nodeLabel {
                                  -    padding-left: 0px;
                                  -    margin-left: 0px;
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.breakpointCode .nodeTag,
                                  -.breakpointCode .nodeAttr,
                                  -.breakpointCode .nodeText,
                                  -.breakpointCode .nodeValue,
                                  -.breakpointCode .nodeLabel {
                                  -    color: DarkGreen !important;
                                  -}
                                  -
                                  -.breakpointMutationType {
                                  -    position: absolute;
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(twistyClosed.png);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -	min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(twistyOpen.png);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/loading_16.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/min.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/minHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/off.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/offHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/pixel_transparent.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/roundCorner.svg b/branches/flexBox/build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/search.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/search.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow2.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadowAlpha.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/sprite.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverLeft.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverMid.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverRight.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabLeft.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuPin.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuRadio.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTarget.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMid.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabRight.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/titlebarMid.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/toolbarMid.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_close.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_open.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyClosed.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyOpen.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/up.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/upActive.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/upHover.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.gif b/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.png b/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension-beta/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/background.html b/branches/flexBox/build/chrome-extension/background.html
                                  deleted file mode 100644
                                  index ae58fbf9..00000000
                                  --- a/branches/flexBox/build/chrome-extension/background.html
                                  +++ /dev/null
                                  @@ -1,243 +0,0 @@
                                  -<script>
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -//var bookmarklet = "javascript:(typeof Firebug!='undefined')?Firebug.chrome.toggle():(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');";
                                  -var firebugVersion = "Firebug Lite 1.4.0";
                                  -var extensionURL = chrome.extension.getURL("");
                                  -var isActive = false;
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleIconClick(tab)
                                  -{
                                  -    if (tab.url.indexOf("https://chrome.google.com/webstore") == 0 ||
                                  -        tab.url.indexOf("https://chrome.google.com/extensions") == 0 ||
                                  -        tab.url.indexOf("chrome://") == 0)
                                  -    {
                                  -        alert("Sorry, for security reasons extensions cannot run scripts in this page, "+
                                  -                "which means Firebug Lite can't work here.   :(");
                                  -        
                                  -        return;
                                  -    }
                                  -
                                  -    if (tab.url.indexOf("file:///") == 0)
                                  -    {
                                  -        // TODO: include message here about the problem, and chrome bug
                                  -        //chrome.tabs.update(tab.id, {url: bookmarklet});
                                  -        
                                  -        alert("So, you want to load Firebug Lite in a local file, huh?\n\n" +
                                  -        
                                  -            "Sorry to say but this is a complicated issue... there's a Chrome bug preventing us " +
                                  -            "to load Firebug Lite here, and there's a JavaScript security restriction " +
                                  -            "preventing us to do XHR calls.  :(\n\n" +
                                  -            
                                  -            "You can solve all these problems by using a local web server which is simple to " +
                                  -            "install and is safer for you.   :)\n\n" +
                                  -
                                  -            "If you want to know more about this problem, and how to solve it, please read " +
                                  -            "our FAQ entry for this subject at:\n\n" +
                                  -            "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ"
                                  -        );
                                  -        
                                  -        return;
                                  -    }
                                  -    
                                  -    var isContentScriptActive = false;
                                  -    
                                  -    var tryToActivateFirebug = function(){
                                  -        chrome.tabs.sendRequest( tab.id, {name: "FB_isActive"}, 
                                  -        
                                  -            function(response)
                                  -            {
                                  -                isContentScriptActive = true;
                                  -                
                                  -                if (response.value == "true")
                                  -                {
                                  -                    chrome.tabs.update(tab.id, {url: "javascript:Firebug.chrome.toggle()"});
                                  -                }
                                  -                else
                                  -                {
                                  -                    setActivationStorage(tab);
                                  -                    chrome.tabs.sendRequest(tab.id, {name: "FB_loadFirebug"});
                                  -                }
                                  -            }
                                  -        );
                                  -    };
                                  -
                                  -    var firebugShouldBeLoaded = tab.url.indexOf("https://") == 0 || tab.url.indexOf("http://") == 0;
                                  -
                                  -    tryToActivateFirebug();
                                  -    
                                  -    setTimeout(function(){
                                  -    
                                  -        // the problem of this approach is that if the page does not allow content scripts, like
                                  -        // the Chrome Web Store, it will falsely warn users that reloading the page will complete
                                  -        // the activation process when in the reality it will not. But, the most common case is
                                  -        // when the user just installed Firebug Lite and have other tabs already opened, which
                                  -        // completely ruins the very first experience with using the Firebug Lite extension.
                                  -        if (!isContentScriptActive)
                                  -        {
                                  -        
                                  -            // try again
                                  -            tryToActivateFirebug();
                                  -
                                  -            setTimeout(function(){
                                  -
                                  -                if (!isContentScriptActive)
                                  -                {
                                  -                    //chrome.tabs.update(tab.id, {url: bookmarlet});
                                  -                    //enableBrowserActionIcon();
                                  -                    //setActivationStorage(tab);
                                  -                    
                                  -                    if (firebugShouldBeLoaded)
                                  -                    {
                                  -                        setActivationStorage(tab);
                                  -                        if (confirm("It seems that this page was opened before Firebug Lite was "+
                                  -                              "enabled. It will (hopefully) load after reloading this page.   :)"+
                                  -                              "\n\nPress ok to reload the page now, or cancel to reload it later."))
                                  -                        {
                                  -                            chrome.tabs.update(tab.id, {url: "javascript:window.location.reload()"});
                                  -                        }
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // TODO: add FAQ entry with the problem and point it here
                                  -                        alert("Sorry, Firebug Lite cannot be loaded in this page.   :(\n\nFor "+
                                  -                                "support, please visit:\nhttp://groups.google.com/group/firebug");
                                  -                    }
                                  -                }
                                  -
                                  -            },500);
                                  -
                                  -        }
                                  -        
                                  -    },500);
                                  -};
                                  -
                                  -chrome.browserAction.onClicked.addListener(handleIconClick);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleTabChange(tabId, selectInfo)
                                  -{
                                  -    var isUpdated = false;
                                  -    
                                  -    chrome.tabs.sendRequest(tabId, {name: "FB_isActive"}, 
                                  -    
                                  -        function(response)
                                  -        {
                                  -            isUpdated = true;
                                  -            
                                  -            if (response.value == "true")
                                  -            {
                                  -                enableBrowserActionIcon();
                                  -                isActive = true;
                                  -            }
                                  -            else
                                  -            {
                                  -                disableBrowserActionIcon();
                                  -                isActive = false;
                                  -            }
                                  -        }
                                  -    );
                                  -    
                                  -    setTimeout(function(){
                                  -    
                                  -        chrome.tabs.get(tabId, function(tab){
                                  -        
                                  -            var title = tab.title || "";
                                  -            if (!isUpdated && !title.indexOf("Firebug Lite") == 0)
                                  -            {
                                  -                disableBrowserActionIcon();
                                  -                isActive = false;
                                  -            }
                                  -            
                                  -        });
                                  -           
                                  -    },100);  
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.tabs.onSelectionChanged.addListener(handleTabChange);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function handleUpdateTab(tabId, updateInfo, tab)
                                  -{
                                  -    if (updateInfo.status == "complete") return;
                                  -    
                                  -    handleTabChange(tabId, updateInfo);
                                  -}
                                  -
                                  -// memory leaking here
                                  -//chrome.tabs.onUpdated.addListener(handleUpdateTab);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.extension.onRequest.addListener
                                  -(
                                  -    function(request, sender, sendResponse)
                                  -    {
                                  -        if (request.name == "FB_enableIcon")
                                  -            enableBrowserActionIcon();
                                  -        
                                  -        else if (request.name == "FB_disableIcon")
                                  -            disableBrowserActionIcon();
                                  -            
                                  -        else if (request.name == "FB_deactivate")
                                  -        {
                                  -            disableBrowserActionIcon();
                                  -            chrome.tabs.getSelected(null, function(tab){
                                  -                unsetActivationStorage(tab);
                                  -                
                                  -                chrome.tabs.sendRequest(tab.id, {name: "FB_deactivate"});
                                  -            });
                                  -        }
                                  -
                                  -        sendResponse({}); // snub them.
                                  -    }
                                  -);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -chrome.contextMenus.create({
                                  -    title: "Inspect with Firebug Lite",
                                  -    "contexts": ["all"],
                                  -    onclick: function(info, tab) {
                                  -        chrome.tabs.sendRequest(tab.id, {name: "FB_contextMenuClick"});
                                  -    }
                                  -});
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function enableBrowserActionIcon()
                                  -{
                                  -    chrome.browserAction.setTitle({title: firebugVersion + " (On)"});
                                  -    chrome.browserAction.setIcon({path:"firebug24.png"});
                                  -};
                                  -
                                  -function disableBrowserActionIcon()
                                  -{
                                  -    chrome.browserAction.setTitle({title: firebugVersion + " (Off)"});
                                  -    chrome.browserAction.setIcon({path:"firebug24_disabled.png"});
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -function setActivationStorage(tab)
                                  -{
                                  -    chrome.tabs.update(tab.id, {url: "javascript:localStorage.setItem('Firebug','1,1,"+extensionURL+"')"});
                                  -    isActive = true;
                                  -};
                                  -
                                  -function unsetActivationStorage(tab)
                                  -{
                                  -    chrome.tabs.update(tab.id, {url: "javascript:localStorage.removeItem('Firebug')"});
                                  -    isActive = false;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -</script>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/contentScript.js b/branches/flexBox/build/chrome-extension/contentScript.js
                                  deleted file mode 100644
                                  index 0c461567..00000000
                                  --- a/branches/flexBox/build/chrome-extension/contentScript.js
                                  +++ /dev/null
                                  @@ -1,378 +0,0 @@
                                  -// *************************************************************************************************
                                  -
                                  -var isActive = false;
                                  -var isOpen = false;
                                  -var extensionURL = null;
                                  -
                                  -var contextMenuElementXPath = null;
                                  -var isListeningKeyboardActivation = false;
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// restore Firebug Lite state
                                  -var loadStateData = function()
                                  -{
                                  -    var FirebugData = localStorage.getItem("Firebug");
                                  -
                                  -    isActive = false;
                                  -    isOpen = false;
                                  -    extensionURL = chrome.extension.getURL("");
                                  -    
                                  -    if (FirebugData)
                                  -    {
                                  -        FirebugData = FirebugData.split(",");
                                  -        isActive = FirebugData[0] == "1";
                                  -        isOpen = FirebugData[1] == "1";
                                  -    }
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// load Firebug Lite application
                                  -var loadFirebug = function()
                                  -{
                                  -    document.documentElement.setAttribute("debug", isOpen);
                                  -
                                  -    injectScriptText("("+listenConsoleCalls+")()");
                                  -
                                  -    // TODO: xxxpedro - change to XHR when Issue 41024 is solved
                                  -    // Issue 41024: XHR using file: and chrome-extension: protocols not working.
                                  -    // http://code.google.com/p/chromium/issues/detail?id=41024
                                  -    injectFirebugScript();
                                  -};
                                  -
                                  -// TODO: think a better solution than using the stateData parameter, required
                                  -// by the keyboard activation.
                                  -var loadFirebugAndWait = function(callback, stateData)
                                  -{
                                  -    stateData = stateData || ('1,1,'+extensionURL);
                                  -    localStorage.setItem('Firebug', stateData);
                                  -    loadStateData();
                                  -    chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"});
                                  -
                                  -    document.documentElement.setAttribute("debug", isOpen);
                                  -
                                  -    injectFirebugScript();
                                  -
                                  -    setTimeout(function(){
                                  -        waitFirebug(callback);
                                  -    },0);
                                  -};
                                  -
                                  -var waitFirebug = function(callback)
                                  -{
                                  -    if (document && document.getElementById("FirebugChannel"))
                                  -    {
                                  -        stopListeningKeyboardActivation();
                                  -        callback();
                                  -    }
                                  -    else
                                  -        setTimeout(function(){ waitFirebug(callback); }, 100);
                                  -    
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// inject Firebug Lite script into the page
                                  -var injectFirebugScript = function(url)
                                  -{
                                  -    scriptElement = document.getElementById("FirebugLite");
                                  -    if (scriptElement)
                                  -    {
                                  -        firebugDispatch("FB_toggle");
                                  -    }
                                  -    else
                                  -    {
                                  -        var script = document.createElement("script");
                                  -
                                  -        script.src = extensionURL + "firebug-lite.js";
                                  -        script.setAttribute("id", "FirebugLite");
                                  -        script.setAttribute("firebugIgnore", "true");
                                  -        script.setAttribute("extension", "Chrome");
                                  -        document.documentElement.appendChild(script);
                                  -
                                  -        script.onload = function() {
                                  -            // TODO: xxxpedro remove this files when deploy the new structure
                                  -            script = document.createElement("script");
                                  -            script.src = extensionURL + "googleChrome.js";
                                  -            document.documentElement.appendChild(script);
                                  -        };
                                  -    }
                                  -};
                                  -
                                  -// inject a script into the page
                                  -var injectScriptText = function(text)
                                  -{
                                  -    var script = document.createElement("script");
                                  -    var parent = document.documentElement;
                                  -    
                                  -    script.text = text;
                                  -    script.setAttribute("id", "FirebugLite");
                                  -    script.setAttribute("firebugIgnore", "true");
                                  -    script.setAttribute("extension", "Chrome");
                                  -    parent.appendChild(script);
                                  -    parent.removeChild(script);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// communication with the background page
                                  -chrome.extension.onRequest.addListener
                                  -(
                                  -    function(request, sender, sendResponse)
                                  -    {
                                  -        // check if Firebug Lite is active
                                  -        if (request.name == "FB_isActive")
                                  -        {
                                  -            loadStateData();
                                  -            sendResponse({value: ""+isActive});
                                  -        }
                                  -        // load Firebug Lite application
                                  -        else if (request.name == "FB_loadFirebug")
                                  -        {
                                  -            setTimeout(function(){
                                  -            
                                  -                loadStateData();
                                  -
                                  -                //loadFirebug();
                                  -                loadFirebugAndWait(function(){
                                  -                
                                  -                    isActive = true;
                                  -                    var message = isActive ? "FB_enableIcon" : "FB_disableIcon";
                                  -                    chrome.extension.sendRequest({name: message});
                                  -
                                  -                    loadChannel();
                                  -                });
                                  -
                                  -            },0);
                                  -            
                                  -            sendResponse({});
                                  -        }
                                  -        // handle context menu click by sending "FB_contextMenuClick" message 
                                  -        // to Firebug Lite application
                                  -        else if (request.name == "FB_contextMenuClick")
                                  -        {
                                  -            // TODO: if not active, activate first, wait the activation to complete
                                  -            // and only then dispatch the event to Firebug Lite application
                                  -            if (isActive)
                                  -                firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath);
                                  -            else
                                  -                loadFirebugAndWait(function(){
                                  -                    firebugDispatch("FB_contextMenuClick,"+contextMenuElementXPath);
                                  -                });
                                  -        }
                                  -        else if (request.name == "FB_deactivate")
                                  -        {
                                  -            listenKeyboardActivation();
                                  -        }
                                  -        else
                                  -            sendResponse({}); // snub them.
                                  -    }
                                  -);
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// communication with the page
                                  -var channel = null;
                                  -var channelEvent;
                                  -
                                  -var onFirebugChannelEvent = function()
                                  -{
                                  -    channel = document.getElementById("FirebugChannel");
                                  -
                                  -    if (channel)
                                  -    {
                                  -        chrome.extension.sendRequest({name: channel.innerText});
                                  -    }
                                  -};
                                  -
                                  -var loadChannel = function()
                                  -{
                                  -    channel = document.getElementById("FirebugChannel");
                                  -
                                  -    if (channel)
                                  -    {
                                  -        channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -        channelEvent = document.createEvent("Event");
                                  -        channelEvent.initEvent("FirebugChannelEvent", true, true);
                                  -    }
                                  -};
                                  -
                                  -var firebugDispatch = function(data)
                                  -{
                                  -    if (!channel)
                                  -        loadChannel();
                                  -
                                  -    channel.innerText = data;
                                  -    channel.dispatchEvent(channelEvent);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var onContextMenu = function(event)
                                  -{
                                  -    contextMenuElementXPath = getElementXPath(event.target);
                                  -};
                                  -
                                  -var loadListeners = function()
                                  -{
                                  -    window.addEventListener("contextmenu", onContextMenu);
                                  -    window.addEventListener("unload", unloadListeners);
                                  -};
                                  -
                                  -var unloadListeners = function()
                                  -{
                                  -    if (channel)
                                  -    {
                                  -        channel.removeEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -    }
                                  -    
                                  -    window.removeEventListener("contextmenu", onContextMenu);
                                  -    window.removeEventListener("unload", unloadListeners);
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// listen to console calls before Firebug Lite finishes to load
                                  -var listenConsoleCalls = function()
                                  -{
                                  -    // TODO: xxxpedro add all console functions
                                  -    var fns = ["log", "info", "warn", "error"];
                                  -
                                  -    var listener = {consoleQueue: ["chromeConsoleQueueHack"]};
                                  -    var queue = listener.consoleQueue;
                                  -
                                  -    for (var i=0, l=fns.length; i<l; i++)
                                  -    {
                                  -        var fn = fns[i];
                                  -
                                  -        (function(fn){
                                  -
                                  -            listener[fn] = function()
                                  -            {
                                  -                queue.push([fn, arguments]);
                                  -            };
                                  -
                                  -        })(fn);
                                  -    }
                                  -
                                  -    window.console = listener;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -
                                  -    if (keyCode == 123 /* F12 */ && !shiftKey)
                                  -    {
                                  -        loadFirebugAndWait(function(){
                                  -        
                                  -            if (ctrlKey)
                                  -            {
                                  -                firebugDispatch("FB_openInNewWindow");
                                  -            }
                                  -            else
                                  -            {
                                  -                firebugDispatch("FB_toggle");
                                  -            }
                                  -            
                                  -        },"1,0,"); // TODO: think a better solution than using the stateData parameter
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        //cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        //cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var listenKeyboardActivation = function()
                                  -{
                                  -    // TODO: listen to F12 key. if pressed activate Firebug Lite, and open
                                  -
                                  -    // TODO: this function could also listen to CTRL+SHIFT+C, triggering
                                  -    // Firebug Lite activation, opening it, and starting the inspection,
                                  -    // like in Firebug for Firefox
                                  -
                                  -    // TODO: this function should be called also when Firebug Lite is deactivated
                                  -    window.addEventListener("keydown", onGlobalKeyDown);
                                  -    
                                  -    isListeningKeyboardActivation = true;
                                  -};
                                  -
                                  -var stopListeningKeyboardActivation = function()
                                  -{
                                  -    // TODO: remove listener when Firebug Lite application is activated/loaded
                                  -
                                  -    // TODO: remove listener on window onunload (if not removed already)
                                  -    if (isListeningKeyboardActivation)
                                  -    {
                                  -        window.removeEventListener("keydown", onGlobalKeyDown);
                                  -    }
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var getElementXPath = function(element)
                                  -{
                                  -    if (element && element.id)
                                  -        return '//*[@id="' + element.id + '"]';
                                  -    else
                                  -        return this.getElementTreeXPath(element);
                                  -};
                                  -
                                  -var getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// startup Firebug Lite if it is active for the current page
                                  -loadStateData();
                                  -
                                  -if (isActive)
                                  -{
                                  -    loadFirebugAndWait(function(){
                                  -        loadChannel();
                                  -    });
                                  -}
                                  -else
                                  -{
                                  -    listenKeyboardActivation();
                                  -}
                                  -
                                  -loadListeners();
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -// adjust the browser icon according Firebug Lite's current state
                                  -chrome.extension.sendRequest({name: isActive ? "FB_enableIcon" : "FB_disableIcon"});
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug-lite.js b/branches/flexBox/build/chrome-extension/firebug-lite.js
                                  deleted file mode 100644
                                  index c9b3a4e2..00000000
                                  --- a/branches/flexBox/build/chrome-extension/firebug-lite.js
                                  +++ /dev/null
                                  @@ -1,31176 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.4.0
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -/** @namespace describe lib */
                                  -
                                  -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE 
                                  -var FBL = {};
                                  -
                                  -( /** @scope s_lib @this FBL */ function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion = 4;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// Globals
                                  -this.reJavascript = /\s*javascript:\s*(.*)/;
                                  -this.reChrome = /chrome:\/\/([^\/]*)\//;
                                  -this.reFile = /file:\/\/([^\/]*)\//;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // Firebug Lite is already running in persistent mode so we just quit
                                  -    if (window.firebug && firebug.firebuglite || window.console && console.firebuglite)
                                  -        return;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyEnvironment;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        // The problem is that we don't have the Firebug object yet, so we can't use 
                                  -        // Firebug.loadPrefs. We're using the Store module directly instead.
                                  -        var prefs = FBL.Store.get("FirebugLite") || {};
                                  -        FBL.Env.DefaultOptions = FBL.Env.Options;
                                  -        FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {});
                                  -        
                                  -        if (FBL.isFirefox && 
                                  -            typeof FBL.Env.browser.console == "object" && 
                                  -            FBL.Env.browser.console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -                return;
                                  -    }
                                  -    
                                  -    // exposes the FBL to the global namespace when in debug mode
                                  -    if (FBL.Env.isDebugMode)
                                  -    {
                                  -        FBL.Env.browser.FBL = FBL;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -    FBL.Firebug.loadPrefs();
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // wait document load
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: true,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        disableXHRListener: false,
                                  -        disableResourceFetching: false,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isDebugMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyEnvironment = function destroyEnvironment()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    var hasSrcAttribute = true;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                {
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                    hasSrcAttribute = false;
                                  -                }
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                {
                                  -                    scriptSrc = si.src;
                                  -                }
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        path = productionDir;
                                  -        FBL.Env.bookmarkletOutdated = false;
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    isGetFirebugSite = reGetFirebugSite.test(path);
                                  -    
                                  -    if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1)
                                  -    {
                                  -        // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like 
                                  -        // https://getfirebug.com/firebug-lite.js, then we must manually add the full path,
                                  -        // otherwise the Env.Location will hold the wrong path, which will in turn lead to
                                  -        // undesirable effects like the problem in Issue 4587
                                  -        path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/");
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        // Always use the local skin when running in the same domain
                                  -        // See Issue 3554: Firebug Lite should use local images when loaded locally
                                  -        Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 &&
                                  -                // but we cannot use the locan skin when loaded from getfirebug.com, otherwise
                                  -                // the bookmarklet won't work when visiting getfirebug.com
                                  -                !isGetFirebugSite;
                                  -        
                                  -        // detecting development and debug modes via file name
                                  -        if (fileName == "firebug-lite-dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        else if (fileName == "firebug-lite-debug.js")
                                  -        {
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        
                                  -        // process the <html debug="true">
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -        }
                                  -        
                                  -        // process the Script URL Options
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name == "debug")
                                  -                {
                                  -                    Env.isDebugMode = !!value;
                                  -                }
                                  -                else if (name in Env.Options)
                                  -                {
                                  -                    Env.Options[name] = value;
                                  -                }
                                  -                else
                                  -                {
                                  -                    Env[name] = value;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        // process the Script JSON Options
                                  -        if (hasSrcAttribute)
                                  -        {
                                  -            var innerOptions = FBL.trim(script.innerHTML);
                                  -            if (innerOptions)
                                  -            {
                                  -                var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -                
                                  -                for (var name in innerOptionsObject)
                                  -                {
                                  -                    var value = innerOptionsObject[name];
                                  -                    
                                  -                    if (name == "debug")
                                  -                    {
                                  -                        Env.isDebugMode = !!value;
                                  -                    }
                                  -                    else if (name in Env.Options)
                                  -                    {
                                  -                        Env.Options[name] = value;
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        Env[name] = value;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (!Env.Options.saveCookies)
                                  -            FBL.Store.remove("FirebugLite");
                                  -        
                                  -        // process the Debug Mode
                                  -        if (Env.isDebugMode)
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -            Env.Options.enableTrace = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); };
                                  -};
                                  -
                                  -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.descend = function(prototypeParent, childProperties)
                                  -{
                                  -    function protoSetter() {};
                                  -    protoSetter.prototype = prototypeParent;
                                  -    var newOb = new protoSetter();
                                  -    for (var n in childProperties)
                                  -        newOb[n] = childProperties[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = this.createElement("link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -};
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -this.appendStylesheet = function(doc, uri)
                                  -{
                                  -    // Make sure the stylesheet is not appended twice.
                                  -    if (this.$(uri, doc))
                                  -        return;
                                  -
                                  -    var styleSheet = this.createStyleSheet(doc, uri);
                                  -    styleSheet.setAttribute("id", uri);
                                  -    this.addStyleSheet(doc, styleSheet);
                                  -};
                                  -
                                  -this.addScript = function(doc, id, src)
                                  -{
                                  -    var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
                                  -    element.setAttribute("type", "text/javascript");
                                  -    element.setAttribute("id", id);
                                  -    if (!FBTrace.DBG_CONSOLE)
                                  -        FBL.unwrapObject(element).firebugIgnore = true;
                                  -
                                  -    element.innerHTML = src;
                                  -    if (doc.documentElement)
                                  -        doc.documentElement.appendChild(element);
                                  -    else
                                  -    {
                                  -        // See issue 1079, the svg test case gives this error
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.addScript doc has no documentElement:", doc);
                                  -    }
                                  -    return element;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getStyle = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Whitespace and Entity conversions
                                  -
                                  -var entityConversionLists = this.entityConversionLists = {
                                  -    normal : {
                                  -        whitespace : {
                                  -            '\t' : '\u200c\u2192',
                                  -            '\n' : '\u200c\u00b6',
                                  -            '\r' : '\u200c\u00ac',
                                  -            ' '  : '\u200c\u00b7'
                                  -        }
                                  -    },
                                  -    reverse : {
                                  -        whitespace : {
                                  -            '&Tab;' : '\t',
                                  -            '&NewLine;' : '\n',
                                  -            '\u200c\u2192' : '\t',
                                  -            '\u200c\u00b6' : '\n',
                                  -            '\u200c\u00ac' : '\r',
                                  -            '\u200c\u00b7' : ' '
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var normal = entityConversionLists.normal,
                                  -    reverse = entityConversionLists.reverse;
                                  -
                                  -function addEntityMapToList(ccode, entity)
                                  -{
                                  -    var lists = Array.prototype.slice.call(arguments, 2),
                                  -        len = lists.length,
                                  -        ch = String.fromCharCode(ccode);
                                  -    for (var i = 0; i < len; i++)
                                  -    {
                                  -        var list = lists[i];
                                  -        normal[list]=normal[list] || {};
                                  -        normal[list][ch] = '&' + entity + ';';
                                  -        reverse[list]=reverse[list] || {};
                                  -        reverse[list]['&' + entity + ';'] = ch;
                                  -    }
                                  -};
                                  -
                                  -var e = addEntityMapToList,
                                  -    white = 'whitespace',
                                  -    text = 'text',
                                  -    attr = 'attributes',
                                  -    css = 'css',
                                  -    editor = 'editor';
                                  -
                                  -e(0x0022, 'quot', attr, css);
                                  -e(0x0026, 'amp', attr, text, css);
                                  -e(0x0027, 'apos', css);
                                  -e(0x003c, 'lt', attr, text, css);
                                  -e(0x003e, 'gt', attr, text, css);
                                  -e(0xa9, 'copy', text, editor);
                                  -e(0xae, 'reg', text, editor);
                                  -e(0x2122, 'trade', text, editor);
                                  -
                                  -// See http://en.wikipedia.org/wiki/Dash
                                  -e(0x2012, '#8210', attr, text, editor); // figure dash
                                  -e(0x2013, 'ndash', attr, text, editor); // en dash
                                  -e(0x2014, 'mdash', attr, text, editor); // em dash
                                  -e(0x2015, '#8213', attr, text, editor); // horizontal bar
                                  -
                                  -e(0x00a0, 'nbsp', attr, text, white, editor);
                                  -e(0x2002, 'ensp', attr, text, white, editor);
                                  -e(0x2003, 'emsp', attr, text, white, editor);
                                  -e(0x2009, 'thinsp', attr, text, white, editor);
                                  -e(0x200c, 'zwnj', attr, text, white, editor);
                                  -e(0x200d, 'zwj', attr, text, white, editor);
                                  -e(0x200e, 'lrm', attr, text, white, editor);
                                  -e(0x200f, 'rlm', attr, text, white, editor);
                                  -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP)
                                  -
                                  -//************************************************************************************************
                                  -// Entity escaping
                                  -
                                  -var entityConversionRegexes = {
                                  -        normal : {},
                                  -        reverse : {}
                                  -    };
                                  -
                                  -var escapeEntitiesRegEx = {
                                  -    normal : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('([' + chars.join('') + '])', 'gm');
                                  -    },
                                  -    reverse : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('(' + chars.join('|') + ')', 'gm');
                                  -    }
                                  -};
                                  -
                                  -function getEscapeRegexp(direction, lists)
                                  -{
                                  -    var name = '', re;
                                  -    var groups = [].concat(lists);
                                  -    for (i = 0; i < groups.length; i++)
                                  -    {
                                  -        name += groups[i].group;
                                  -    }
                                  -    re = entityConversionRegexes[direction][name];
                                  -    if (!re)
                                  -    {
                                  -        var list = {};
                                  -        if (groups.length > 1)
                                  -        {
                                  -            for ( var i = 0; i < groups.length; i++)
                                  -            {
                                  -                var aList = entityConversionLists[direction][groups[i].group];
                                  -                for ( var item in aList)
                                  -                    list[item] = aList[item];
                                  -            }
                                  -        } else if (groups.length==1)
                                  -        {
                                  -            list = entityConversionLists[direction][groups[0].group]; // faster for special case
                                  -        } else {
                                  -            list = {}; // perhaps should print out an error here?
                                  -        }
                                  -        re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
                                  -    }
                                  -    return re;
                                  -};
                                  -
                                  -function createSimpleEscape(name, direction)
                                  -{
                                  -    return function(value)
                                  -    {
                                  -        var list = entityConversionLists[direction][name];
                                  -        return String(value).replace(
                                  -                getEscapeRegexp(direction, {
                                  -                    group : name,
                                  -                    list : list
                                  -                }),
                                  -                function(ch)
                                  -                {
                                  -                    return list[ch];
                                  -                }
                                  -               );
                                  -    };
                                  -};
                                  -
                                  -function escapeGroupsForEntities(str, lists)
                                  -{
                                  -    lists = [].concat(lists);
                                  -    var re = getEscapeRegexp('normal', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list, last = '';
                                  -    if (!len)
                                  -        return [ {
                                  -            str : String(str),
                                  -            group : '',
                                  -            name : ''
                                  -        } ];
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.normal[list.group][cur];
                                  -            // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space
                                  -            //     r = ' ';
                                  -            if (r)
                                  -            {
                                  -                results[ri] = {
                                  -                    'str' : r,
                                  -                    'class' : list['class'],
                                  -                    'extra' : list.extra[cur] ? list['class']
                                  -                            + list.extra[cur] : ''
                                  -                };
                                  -                break;
                                  -            }
                                  -        }
                                  -        // last=cur;
                                  -        if (!r)
                                  -            results[ri] = {
                                  -                'str' : cur,
                                  -                'class' : '',
                                  -                'extra' : ''
                                  -            };
                                  -        ri++;
                                  -    }
                                  -    return results;
                                  -};
                                  -
                                  -this.escapeGroupsForEntities = escapeGroupsForEntities;
                                  -
                                  -
                                  -function unescapeEntities(str, lists)
                                  -{
                                  -    var re = getEscapeRegexp('reverse', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list;
                                  -    if (!len)
                                  -        return str;
                                  -    lists = [].concat(lists);
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.reverse[list.group][cur];
                                  -            if (r)
                                  -            {
                                  -                results[ri] = r;
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (!r)
                                  -            results[ri] = cur;
                                  -        ri++;
                                  -    }
                                  -    return results.join('') || '';
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal');
                                  -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal');
                                  -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal');
                                  -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal');
                                  -
                                  -// deprecated compatibility functions
                                  -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal');
                                  -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse');
                                  -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML);
                                  -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML);
                                  -
                                  -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal');
                                  -
                                  -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse');
                                  -
                                  -this.unescapeForTextNode = function(str)
                                  -{
                                  -    if (Firebug.showTextNodesWithWhitespace)
                                  -        str = unescapeWhitespace(str);
                                  -    if (!Firebug.showTextNodesWithEntities)
                                  -        str = escapeForElementAttribute(str);
                                  -    return str;
                                  -};
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -this.splitLines = function(text)
                                  -{
                                  -    var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
                                  -    var lines;
                                  -    if (text.match)
                                  -    {
                                  -        lines = text.match(reSplitLines2);
                                  -    }
                                  -    else
                                  -    {
                                  -        var str = text+"";
                                  -        lines = str.match(reSplitLines2);
                                  -    }
                                  -    lines.pop();
                                  -    return lines;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -    {
                                  -        try
                                  -        {
                                  -            // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -            return ob + "";
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            FBTrace.sysout("Lib.safeToString() failed for ", ob);
                                  -            return "";
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // xxxpedro it is not safe to use ob+""?
                                  -        return ob + "";
                                  -        ///return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.hasProperties = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getStyle(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, 
                                  -    // but it is causing a bug (the element disappears when you set the "collapsed" 
                                  -    // attribute, but it doesn't appear when you remove the attribute. So, for those
                                  -    // cases, we need to use the class attribute.
                                  -    if (this.isIElt8)
                                  -    {
                                  -        if (collapsed)
                                  -            this.setClass(elt, "collapsed");
                                  -        else
                                  -            this.removeClass(elt, "collapsed");
                                  -    }
                                  -    else
                                  -        elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    var addOffset = function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, "");
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (elt.offsetLeft)
                                  -            ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -            coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft");
                                  -        if (elt.offsetTop)
                                  -            ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -            coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop");
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else
                                  -        {
                                  -            var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -            // IE will fail when reading the frameElement property of a popup window.
                                  -            // We don't need it anyway once it is outside the (popup) viewport, so we're
                                  -            // ignoring the frameElement check when the window is a popup
                                  -            if (!otherView.opener && otherView.frameElement)
                                  -                addOffset(otherView.frameElement, coords, otherView);
                                  -        }
                                  -    };
                                  -
                                  -    var isIE = this.isIE;
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) };
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS
                                  -
                                  -var cssKeywordMap = null;
                                  -var cssPropNames = null;
                                  -var cssColorNames = null;
                                  -var imageRules = null;
                                  -
                                  -this.getCSSKeywordsByProperty = function(propName)
                                  -{
                                  -    if (!cssKeywordMap)
                                  -    {
                                  -        cssKeywordMap = {};
                                  -
                                  -        for (var name in this.cssInfo)
                                  -        {
                                  -            var list = [];
                                  -
                                  -            var types = this.cssInfo[name];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -            {
                                  -                var keywords = this.cssKeywords[types[i]];
                                  -                if (keywords)
                                  -                    list.push.apply(list, keywords);
                                  -            }
                                  -
                                  -            cssKeywordMap[name] = list;
                                  -        }
                                  -    }
                                  -
                                  -    return propName in cssKeywordMap ? cssKeywordMap[propName] : [];
                                  -};
                                  -
                                  -this.getCSSPropertyNames = function()
                                  -{
                                  -    if (!cssPropNames)
                                  -    {
                                  -        cssPropNames = [];
                                  -
                                  -        for (var name in this.cssInfo)
                                  -            cssPropNames.push(name);
                                  -    }
                                  -
                                  -    return cssPropNames;
                                  -};
                                  -
                                  -this.isColorKeyword = function(keyword)
                                  -{
                                  -    if (keyword == "transparent")
                                  -        return false;
                                  -
                                  -    if (!cssColorNames)
                                  -    {
                                  -        cssColorNames = [];
                                  -
                                  -        var colors = this.cssKeywords["color"];
                                  -        for (var i = 0; i < colors.length; ++i)
                                  -            cssColorNames.push(colors[i].toLowerCase());
                                  -
                                  -        var systemColors = this.cssKeywords["systemColor"];
                                  -        for (var i = 0; i < systemColors.length; ++i)
                                  -            cssColorNames.push(systemColors[i].toLowerCase());
                                  -    }
                                  -
                                  -    return cssColorNames.indexOf ? // Array.indexOf is not available in IE
                                  -            cssColorNames.indexOf(keyword.toLowerCase()) != -1 :
                                  -            (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.isImageRule = function(rule)
                                  -{
                                  -    if (!imageRules)
                                  -    {
                                  -        imageRules = [];
                                  -
                                  -        for (var i in this.cssInfo)
                                  -        {
                                  -            var r = i.toLowerCase();
                                  -            var suffix = "image";
                                  -            if (r.match(suffix + "$") == suffix || r == "background")
                                  -                imageRules.push(r);
                                  -        }
                                  -    }
                                  -
                                  -    return imageRules.indexOf ? // Array.indexOf is not available in IE
                                  -            imageRules.indexOf(rule.toLowerCase()) != -1 :
                                  -            (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.copyTextStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.fontFamily = style.fontFamily;
                                  -        
                                  -        // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE
                                  -        // returns wrong computed styles for inherited properties (like font-*)
                                  -        //
                                  -        // Also would be good to create a FBL.getStyle() 
                                  -        toNode.style.fontSize = style.fontSize;
                                  -        toNode.style.fontWeight = style.fontWeight;
                                  -        toNode.style.fontStyle = style.fontStyle;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.copyBoxStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.marginTop = style.marginTop;
                                  -        toNode.style.marginRight = style.marginRight;
                                  -        toNode.style.marginBottom = style.marginBottom;
                                  -        toNode.style.marginLeft = style.marginLeft;
                                  -        toNode.style.borderTopWidth = style.borderTopWidth;
                                  -        toNode.style.borderRightWidth = style.borderRightWidth;
                                  -        toNode.style.borderBottomWidth = style.borderBottomWidth;
                                  -        toNode.style.borderLeftWidth = style.borderLeftWidth;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.readBoxStyles = function(style)
                                  -{
                                  -    var styleNames = {
                                  -        "margin-top": "marginTop", "margin-right": "marginRight",
                                  -        "margin-left": "marginLeft", "margin-bottom": "marginBottom",
                                  -        "border-top-width": "borderTop", "border-right-width": "borderRight",
                                  -        "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
                                  -        "padding-top": "paddingTop", "padding-right": "paddingRight",
                                  -        "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
                                  -        "z-index": "zIndex"
                                  -    };
                                  -
                                  -    var styles = {};
                                  -    for (var styleName in styleNames)
                                  -        styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
                                  -    if (FBTrace.DBG_INSPECT)
                                  -        FBTrace.sysout("readBoxStyles ", styles);
                                  -    return styles;
                                  -};
                                  -
                                  -this.getBoxFromStyles = function(style, element)
                                  -{
                                  -    var args = this.readBoxStyles(style);
                                  -    args.width = element.offsetWidth
                                  -        - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -    args.height = element.offsetHeight
                                  -        - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -    return args;
                                  -};
                                  -
                                  -this.getElementCSSSelector = function(element)
                                  -{
                                  -    var label = element.localName.toLowerCase();
                                  -    if (element.id)
                                  -        label += "#" + element.id;
                                  -    if (element.hasAttribute("class"))
                                  -        label += "." + element.getAttribute("class").split(" ")[0];
                                  -
                                  -    return label;
                                  -};
                                  -
                                  -this.getURLForStyleSheet= function(styleSheet)
                                  -{
                                  -    //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null.
                                  -    return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
                                  -};
                                  -
                                  -this.getDocumentForStyleSheet = function(styleSheet)
                                  -{
                                  -    while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
                                  -    {
                                  -        styleSheet = styleSheet.parentStyleSheet;
                                  -    }
                                  -    if (styleSheet.ownerNode)
                                  -      return styleSheet.ownerNode.ownerDocument;
                                  -};
                                  -
                                  -/**
                                  - * Retrieves the instance number for a given style sheet. The instance number
                                  - * is sheet's index within the set of all other sheets whose URL is the same.
                                  - */
                                  -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
                                  -{
                                  -    // System URLs are always unique (or at least we are making this assumption)
                                  -    if (FBL.isSystemStyleSheet(styleSheet))
                                  -        return 0;
                                  -
                                  -    // ownerDocument is an optional hint for performance
                                  -    if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument);
                                  -    ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet);
                                  -
                                  -    var ret = 0,
                                  -        styleSheets = ownerDocument.styleSheets,
                                  -        href = styleSheet.href;
                                  -    for (var i = 0; i < styleSheets.length; i++)
                                  -    {
                                  -        var curSheet = styleSheets[i];
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode)));
                                  -        if (curSheet == styleSheet)
                                  -            break;
                                  -        if (curSheet.href == href)
                                  -            ret++;
                                  -    }
                                  -    return ret;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// HTML and XML Serialization
                                  -
                                  -
                                  -var getElementType = this.getElementType = function(node)
                                  -{
                                  -    if (isElementXUL(node))
                                  -        return 'xul';
                                  -    else if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else if (isElementXHTML(node))
                                  -        return 'xhtml';
                                  -    else if (isElementHTML(node))
                                  -        return 'html';
                                  -};
                                  -
                                  -var getElementSimpleType = this.getElementSimpleType = function(node)
                                  -{
                                  -    if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else
                                  -        return 'html';
                                  -};
                                  -
                                  -var isElementHTML = this.isElementHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toUpperCase();
                                  -};
                                  -
                                  -var isElementXHTML = this.isElementXHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toLowerCase();
                                  -};
                                  -
                                  -var isElementMathML = this.isElementMathML = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
                                  -};
                                  -
                                  -var isElementSVG = this.isElementSVG = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/2000/svg';
                                  -};
                                  -
                                  -var isElementXUL = this.isElementXUL = function(node)
                                  -{
                                  -    return node instanceof XULElement;
                                  -};
                                  -
                                  -this.isSelfClosing = function(element)
                                  -{
                                  -    if (isElementSVG(element) || isElementMathML(element))
                                  -        return true;
                                  -    var tag = element.localName.toLowerCase();
                                  -    return (this.selfClosingTags.hasOwnProperty(tag));
                                  -};
                                  -
                                  -this.getElementHTML = function(element)
                                  -{
                                  -    var self=this;
                                  -    function toHTML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            html.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                html.push('>');
                                  -
                                  -                var pureText=true;
                                  -                for (var child = element.firstChild; child; child = child.nextSibling)
                                  -                    pureText=pureText && (child.nodeType == Node.TEXT_NODE);
                                  -
                                  -                if (pureText)
                                  -                    html.push(escapeForHtmlEditor(elt.textContent));
                                  -                else {
                                  -                    for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                        toHTML(child);
                                  -                }
                                  -
                                  -                html.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else if (isElementSVG(elt) || isElementMathML(elt))
                                  -            {
                                  -                html.push('/>');
                                  -            }
                                  -            else if (self.isSelfClosing(elt))
                                  -            {
                                  -                html.push((isElementXHTML(elt))?'/>':'>');
                                  -            }
                                  -            else
                                  -            {
                                  -                html.push('></', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            html.push(escapeForTextNode(elt.textContent));
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            html.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            html.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var html = [];
                                  -    toHTML(element);
                                  -    return html.join("");
                                  -};
                                  -
                                  -this.getElementXML = function(element)
                                  -{
                                  -    function toXML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            xml.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                xml.push('>');
                                  -
                                  -                for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                    toXML(child);
                                  -
                                  -                xml.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else
                                  -                xml.push('/>');
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            xml.push(elt.nodeValue);
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            xml.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            xml.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var xml = [];
                                  -    toXML(element);
                                  -    return xml.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.old_hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document);
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.isAncestor = function(node, potentialAncestor)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (parent == potentialAncestor)
                                  -            return true;
                                  -    }
                                  -
                                  -    return false;
                                  -};
                                  -
                                  -this.getNextElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.nextSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getPreviousElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.previousSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.findNextDown = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (criteria(child))
                                  -            return child;
                                  -
                                  -        var next = this.findNextDown(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -};
                                  -
                                  -this.findPreviousUp = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.lastChild; child; child = child.previousSibling)
                                  -    {
                                  -        var next = this.findPreviousUp(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -
                                  -        if (criteria(child))
                                  -            return child;
                                  -    }
                                  -};
                                  -
                                  -this.findNext = function(node, criteria, upOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    if (!upOnly)
                                  -    {
                                  -        var next = this.findNextDown(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
                                  -    {
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -
                                  -        var next = this.findNextDown(sib, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -        return this.findNext(node.parentNode, criteria, true);
                                  -};
                                  -
                                  -this.findPrevious = function(node, criteria, downOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
                                  -    {
                                  -        var prev = this.findPreviousUp(sib, criteria);
                                  -        if (prev)
                                  -            return prev;
                                  -
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -    }
                                  -
                                  -    if (!downOnly)
                                  -    {
                                  -        var next = this.findPreviousUp(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -    {
                                  -        if (criteria(node.parentNode))
                                  -            return node.parentNode;
                                  -
                                  -        return this.findPrevious(node.parentNode, criteria, true);
                                  -    }
                                  -};
                                  -
                                  -this.getNextByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findNext(root, iter);
                                  -};
                                  -
                                  -this.getPreviousByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findPrevious(root, iter);
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Modification
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API 
                                  -var appendFragment = null;
                                  -
                                  -this.appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE 
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -    
                                  -    var doc = element.ownerDocument;
                                  -    
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -    
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -        
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -        
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -        
                                  -        div = null;
                                  -    }
                                  -    
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.safeGetWindowLocation = function(window)
                                  -{
                                  -    try
                                  -    {
                                  -        if (window)
                                  -        {
                                  -            if (window.closed)
                                  -                return "(window.closed)";
                                  -            if ("location" in window)
                                  -                return window.location+"";
                                  -            else
                                  -                return "(no window.location)";
                                  -        }
                                  -        else
                                  -            return "(no context.window)";
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
                                  -        return "(getWindowLocation: "+exc+")";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && // others
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 4 : // IE "click" and "dblclick" button model
                                  -            event.button == 1) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 2 : // IE "click" and "dblclick" button model
                                  -            event.button == 2) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isAlt = function(event)
                                  -{
                                  -    return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isAltClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isAlt(event);
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, useCapture);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    if (!listeners) return;
                                  -    
                                  -    try
                                  -    {/**/
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -    }
                                  -    /**/
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;";
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    if (!url)
                                  -        return null;
                                  -
                                  -    // Remove query string from the URL if any.
                                  -    var queryString = url.indexOf("?");
                                  -    if (queryString != -1)
                                  -        url = url.substr(0, queryString);
                                  -
                                  -    // Now get the file extension.
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.isSystemStyleSheet = function(sheet)
                                  -{
                                  -    var href = sheet && sheet.href;
                                  -    return href && FBL.isSystemURL(href);
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ",";
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^\/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^\/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters
                                  -// as in response/request headers and get/post parameters in Net module?
                                  -this.parseURLParamsArray = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedTextArray(search);
                                  -};
                                  -
                                  -this.parseURLEncodedTextArray = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [""]});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL = function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    ///var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        ///jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -        
                                  -        //jsonObject = Firebug.context.eval(jsonString);
                                  -        jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;});
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        /***
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {/**/
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        ///}
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Caret Position
                                  -
                                  -this.setSelectionRange = function(input, start, length)
                                  -{
                                  -    if (input.createTextRange)
                                  -    {
                                  -        var range = input.createTextRange(); 
                                  -        range.moveStart("character", start); 
                                  -        range.moveEnd("character", length - input.value.length); 
                                  -        range.select();
                                  -    }
                                  -    else if (input.setSelectionRange)
                                  -    {
                                  -        input.setSelectionRange(start, length);
                                  -        input.focus();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Selection Start / Caret Position
                                  -
                                  -this.getInputSelectionStart = function(input)
                                  -{
                                  -    if (document.selection)
                                  -    {
                                  -        var range = input.ownerDocument.selection.createRange();
                                  -        var text = range.text;
                                  -        
                                  -        //console.log("range", range.text);
                                  -        
                                  -        // if there is a selection, find the start position
                                  -        if (text)
                                  -        {
                                  -            return input.value.indexOf(text);
                                  -        }
                                  -        // if there is no selection, find the caret position
                                  -        else
                                  -        {
                                  -            range.moveStart("character", -input.value.length);
                                  -            
                                  -            return range.text.length;
                                  -        }
                                  -    }
                                  -    else if (typeof input.selectionStart != "undefined")
                                  -        return input.selectionStart;
                                  -    
                                  -    return 0;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    try
                                  -    {
                                  -        // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -        return toString.call(object) === "[object Function]" || 
                                  -                this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -        FBTrace.sysout("Lib.isFunction() failed for ", object);
                                  -        return false;
                                  -    }
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is accessible in the window, uses the native instanceof operator
                                  -        // if the instanceof evaluates to "true" we can assume it is a instance, but if it
                                  -        // evaluates to "false" we must continue with the duck type detection below because
                                  -        // the native object may be extended, thus breaking the instanceof result 
                                  -        // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -        if (className in win && object instanceof win[className])
                                  -            return true;
                                  -    }
                                  -    // If the object doesn't have the ownerDocument property, we'll try to look at
                                  -    // the current context's window
                                  -    else
                                  -    {
                                  -        // TODO: xxxpedro context
                                  -        // Since we're not using yet a Firebug.context, we'll just use the top window
                                  -        // (browser) as a reference
                                  -        var win = Firebug.browser.window;
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    // get the duck type model from the cache 
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    // starts the hacky duck type detection
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            // avoid problems with extended native objects
                                  -            // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -            if (!obj.hasOwnProperty(name))
                                  -                continue;
                                  -            
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    CSSStyleRule:
                                  -    {
                                  -        property: ["selectorText", "style"]
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -/*
                                  -
                                  -Problems:
                                  -
                                  -  - IE does not have window.Node, window.Element, etc
                                  -  - for (var name in Node.prototype) return nothing on FF
                                  -
                                  -*/
                                  -
                                  -
                                  -var domMemberMap2 = {};
                                  -
                                  -var domMemberMap2Sandbox = null;
                                  -
                                  -var getDomMemberMap2 = function(name)
                                  -{
                                  -    if (!domMemberMap2Sandbox)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var frame = doc.createElement("iframe");
                                  -        
                                  -        frame.id = "FirebugSandbox";
                                  -        frame.style.display = "none";
                                  -        frame.src = "about:blank";
                                  -        
                                  -        doc.body.appendChild(frame);
                                  -        
                                  -        domMemberMap2Sandbox = frame.window || frame.contentWindow;
                                  -    }
                                  -    
                                  -    var props = [];
                                  -    
                                  -    //var object = domMemberMap2Sandbox[name];
                                  -    //object = object.prototype || object;
                                  -    
                                  -    var object = null;
                                  -    
                                  -    if (name == "Window")
                                  -        object = domMemberMap2Sandbox.window;
                                  -    
                                  -    else if (name == "Document")
                                  -        object = domMemberMap2Sandbox.document;
                                  -        
                                  -    else if (name == "HTMLScriptElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("script");
                                  -    
                                  -    else if (name == "HTMLAnchorElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("a");
                                  -    
                                  -    else if (name.indexOf("Element") != -1)
                                  -    {
                                  -        object = domMemberMap2Sandbox.document.createElement("div");
                                  -    }
                                  -    
                                  -    if (object)
                                  -    {
                                  -        //object = object.prototype || object;
                                  -        
                                  -        //props  = 'addEventListener,document,location,navigator,window'.split(',');
                                  -        
                                  -        for (var n in object)
                                  -          props.push(n);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return props;
                                  -    return extendArray(props, domMemberMap[name]);
                                  -};
                                  -
                                  -// xxxpedro experimental get DOM members
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        FBL.domMemberCache = domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = getDomMemberMap2(name);
                                  -            var cache = domMemberCache[name] = {};
                                  -            
                                  -            /*
                                  -            if (name.indexOf("Element") != -1)
                                  -            {
                                  -                this.append(cache, this.getDOMMembers("Node"));
                                  -                this.append(cache, this.getDOMMembers("Element"));
                                  -            }
                                  -            /**/
                                  -            
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument"))
                                  -            { return domMemberCache.Document; }
                                  -        else if (this.instanceOf(object, "Location"))
                                  -            { return domMemberCache.Location; }
                                  -        else if (this.instanceOf(object, "HTMLImageElement"))
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (this.instanceOf(object, "HTMLAnchorElement"))
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (this.instanceOf(object, "HTMLInputElement"))
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (this.instanceOf(object, "HTMLButtonElement"))
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (this.instanceOf(object, "HTMLFormElement"))
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (this.instanceOf(object, "HTMLBodyElement"))
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (this.instanceOf(object, "HTMLHtmlElement"))
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (this.instanceOf(object, "HTMLScriptElement"))
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableElement"))
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableRowElement"))
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableCellElement"))
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (this.instanceOf(object, "HTMLIFrameElement"))
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (this.instanceOf(object, "SVGSVGElement"))
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (this.instanceOf(object, "SVGElement"))
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (this.instanceOf(object, "Element"))
                                  -            { return domMemberCache.Element; }
                                  -        else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection"))
                                  -            { return domMemberCache.Text; }
                                  -        else if (this.instanceOf(object, "Attr"))
                                  -            { return domMemberCache.Attr; }
                                  -        else if (this.instanceOf(object, "Node"))
                                  -            { return domMemberCache.Node; }
                                  -        else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy"))
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getDOMMembers FAILED ", E);
                                  -        
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -
                                  -/*
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap"
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -this.selfClosingTags =
                                  -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "area": 1,
                                  -    "base": 1,
                                  -    "col": 1,
                                  -    "input": 1,
                                  -    "img": 1,
                                  -    "br": 1,
                                  -    "hr": 1,
                                  -    "param":1,
                                  -    "embed":1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -    "PARAM": 1,
                                  -    "COL": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1,
                                  -    "param": 1,
                                  -    "col": 1
                                  -    /*
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -if (typeof KeyEvent == "undefined") {
                                  -    this.KeyEvent = {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        DOM_VK_SHIFT: 16,
                                  -        DOM_VK_CONTROL: 17,
                                  -        DOM_VK_ALT: 18,
                                  -        DOM_VK_PAUSE: 19,
                                  -        DOM_VK_CAPS_LOCK: 20,
                                  -        DOM_VK_ESCAPE: 27,
                                  -        DOM_VK_SPACE: 32,
                                  -        DOM_VK_PAGE_UP: 33,
                                  -        DOM_VK_PAGE_DOWN: 34,
                                  -        DOM_VK_END: 35,
                                  -        DOM_VK_HOME: 36,
                                  -        DOM_VK_LEFT: 37,
                                  -        DOM_VK_UP: 38,
                                  -        DOM_VK_RIGHT: 39,
                                  -        DOM_VK_DOWN: 40,
                                  -        DOM_VK_PRINTSCREEN: 44,
                                  -        DOM_VK_INSERT: 45,
                                  -        DOM_VK_DELETE: 46,
                                  -        DOM_VK_0: 48,
                                  -        DOM_VK_1: 49,
                                  -        DOM_VK_2: 50,
                                  -        DOM_VK_3: 51,
                                  -        DOM_VK_4: 52,
                                  -        DOM_VK_5: 53,
                                  -        DOM_VK_6: 54,
                                  -        DOM_VK_7: 55,
                                  -        DOM_VK_8: 56,
                                  -        DOM_VK_9: 57,
                                  -        DOM_VK_SEMICOLON: 59,
                                  -        DOM_VK_EQUALS: 61,
                                  -        DOM_VK_A: 65,
                                  -        DOM_VK_B: 66,
                                  -        DOM_VK_C: 67,
                                  -        DOM_VK_D: 68,
                                  -        DOM_VK_E: 69,
                                  -        DOM_VK_F: 70,
                                  -        DOM_VK_G: 71,
                                  -        DOM_VK_H: 72,
                                  -        DOM_VK_I: 73,
                                  -        DOM_VK_J: 74,
                                  -        DOM_VK_K: 75,
                                  -        DOM_VK_L: 76,
                                  -        DOM_VK_M: 77,
                                  -        DOM_VK_N: 78,
                                  -        DOM_VK_O: 79,
                                  -        DOM_VK_P: 80,
                                  -        DOM_VK_Q: 81,
                                  -        DOM_VK_R: 82,
                                  -        DOM_VK_S: 83,
                                  -        DOM_VK_T: 84,
                                  -        DOM_VK_U: 85,
                                  -        DOM_VK_V: 86,
                                  -        DOM_VK_W: 87,
                                  -        DOM_VK_X: 88,
                                  -        DOM_VK_Y: 89,
                                  -        DOM_VK_Z: 90,
                                  -        DOM_VK_CONTEXT_MENU: 93,
                                  -        DOM_VK_NUMPAD0: 96,
                                  -        DOM_VK_NUMPAD1: 97,
                                  -        DOM_VK_NUMPAD2: 98,
                                  -        DOM_VK_NUMPAD3: 99,
                                  -        DOM_VK_NUMPAD4: 100,
                                  -        DOM_VK_NUMPAD5: 101,
                                  -        DOM_VK_NUMPAD6: 102,
                                  -        DOM_VK_NUMPAD7: 103,
                                  -        DOM_VK_NUMPAD8: 104,
                                  -        DOM_VK_NUMPAD9: 105,
                                  -        DOM_VK_MULTIPLY: 106,
                                  -        DOM_VK_ADD: 107,
                                  -        DOM_VK_SEPARATOR: 108,
                                  -        DOM_VK_SUBTRACT: 109,
                                  -        DOM_VK_DECIMAL: 110,
                                  -        DOM_VK_DIVIDE: 111,
                                  -        DOM_VK_F1: 112,
                                  -        DOM_VK_F2: 113,
                                  -        DOM_VK_F3: 114,
                                  -        DOM_VK_F4: 115,
                                  -        DOM_VK_F5: 116,
                                  -        DOM_VK_F6: 117,
                                  -        DOM_VK_F7: 118,
                                  -        DOM_VK_F8: 119,
                                  -        DOM_VK_F9: 120,
                                  -        DOM_VK_F10: 121,
                                  -        DOM_VK_F11: 122,
                                  -        DOM_VK_F12: 123,
                                  -        DOM_VK_F13: 124,
                                  -        DOM_VK_F14: 125,
                                  -        DOM_VK_F15: 126,
                                  -        DOM_VK_F16: 127,
                                  -        DOM_VK_F17: 128,
                                  -        DOM_VK_F18: 129,
                                  -        DOM_VK_F19: 130,
                                  -        DOM_VK_F20: 131,
                                  -        DOM_VK_F21: 132,
                                  -        DOM_VK_F22: 133,
                                  -        DOM_VK_F23: 134,
                                  -        DOM_VK_F24: 135,
                                  -        DOM_VK_NUM_LOCK: 144,
                                  -        DOM_VK_SCROLL_LOCK: 145,
                                  -        DOM_VK_COMMA: 188,
                                  -        DOM_VK_PERIOD: 190,
                                  -        DOM_VK_SLASH: 191,
                                  -        DOM_VK_BACK_QUOTE: 192,
                                  -        DOM_VK_OPEN_BRACKET: 219,
                                  -        DOM_VK_BACK_SLASH: 220,
                                  -        DOM_VK_CLOSE_BRACKET: 221,
                                  -        DOM_VK_QUOTE: 222,
                                  -        DOM_VK_META: 224
                                  -    };
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -/**
                                  - * @namespace
                                  - */
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = FBL.getNativeXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Create a AJAX request.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Asynchronous flag. Default is "true".   
                                  -     * @param {String}   options.dataType      Data type ("text", "html", "xml" or "json"). Default is "text".
                                  -     * @param {String}   options.contentType   Content-type of the data being sent. Default is "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     onLoading callback
                                  -     * @param {Function} options.onLoaded      onLoaded callback
                                  -     * @param {Function} options.onInteractive onInteractive callback
                                  -     * @param {Function} options.onComplete    onComplete callback
                                  -     * @param {Function} options.onUpdate      onUpdate callback
                                  -     * @param {Function} options.onSuccess     onSuccess callback
                                  -     * @param {Function} options.onFailure     onFailure callback
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        // process options
                                  -        var o = FBL.extend(
                                  -                {
                                  -                    // default values
                                  -                    type: "get",
                                  -                    async: true,
                                  -                    dataType: "text",
                                  -                    contentType: "application/x-www-form-urlencoded"
                                  -                }, 
                                  -                options || {}
                                  -            );
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data;
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(var param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // open XHR object
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // indicates that it is a XHR request to the server
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // if data is being sent, sets the appropriate content-type
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -            t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // onreadystatechange handler
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // send the request
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Handles the state change
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * gets the appropriate response value according the type
                                  -     */
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText;
                                  -        else if (type == "text")  return t.responseText;
                                  -        else if (type == "html")  return t.responseText;
                                  -        else if (type == "xml")   return t.responseXML;
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * returns the current state of the XHR object
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        if (days)
                                  -        {
                                  -            var date = new Date();
                                  -            date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -            var expires = "; expires="+date.toGMTString();
                                  -        }
                                  -        else 
                                  -            var expires = "";
                                  -        
                                  -        document.cookie = name+"="+value+expires+"; path=/";
                                  -    }
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        var nameEQ = name + "=";
                                  -        var ca = document.cookie.split(';');
                                  -        
                                  -        for(var i=0; i < ca.length; i++)
                                  -        {
                                  -            var c = ca[i];
                                  -            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -        }
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_i18n */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    "NoMembersWarning": "There are no properties to show for this object.",
                                  -    
                                  -    "EmptyStyleSheet": "There are no rules in this stylesheet.",
                                  -    "EmptyElementCSS": "This element has no style rules.",
                                  -    "AccessRestricted": "Access to restricted URI denied.",
                                  -    
                                  -    "net.label.Parameters": "Parameters",
                                  -    "net.label.Source": "Source",
                                  -    "URLParameters": "Params",
                                  -    
                                  -    "EditStyle": "Edit Element Style...",
                                  -    "NewRule": "New Rule...",
                                  -    
                                  -    "NewProp": "New Property...",
                                  -    "EditProp": 'Edit "%s"',
                                  -    "DeleteProp": 'Delete "%s"',
                                  -    "DisableProp": 'Disable "%s"'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -
                                  -FBL.$STRF = function(name, args)
                                  -{
                                  -    if (!oSTR.hasOwnProperty(name)) return name;
                                  -    
                                  -    var format = oSTR[name];
                                  -    var objIndex = 0;
                                  -    
                                  -    var parts = parseFormat(format);
                                  -    var trialIndex = objIndex;
                                  -    var objects = args;
                                  -    
                                  -    for (var i= 0; i < parts.length; i++)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -            {
                                  -                format = "";
                                  -                objIndex = -1;
                                  -                parts.length = 0;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -    }
                                  -    
                                  -    var result = [];
                                  -    for (var i = 0; i < parts.length; ++i)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            result.push(""+args.shift());
                                  -        }
                                  -        else
                                  -            result.push(part);
                                  -    }
                                  -    
                                  -    return result.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var parseFormat = function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.4.0",
                                  -    revision: "$Revision: 11956 $",
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        Firebug.loadPrefs();
                                  -        Firebug.context.persistedState.isOpen = false;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets)
                                  -            FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document);
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Firebug.disableResourceFetching)
                                  -            Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " +
                                  -            		"resource fetching is disabled. To enabled it set the Firebug Lite option " +
                                  -            		"\"disableResourceFetching\" to \"false\". More info at " +
                                  -            		"http://getfirebug.com/firebuglite#Options"], 
                                  -            		Firebug.context, "warn");
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.DefaultOptions;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function()
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        var prefs = Store.get("FirebugLite") || {};
                                  -        var options = prefs.options;
                                  -        var persistedState = prefs.persistedState || FBL.defaultPersistedState;
                                  -        
                                  -        for (var name in options)
                                  -        {
                                  -            if (options.hasOwnProperty(name))
                                  -                Firebug[name] = options[name];
                                  -        }
                                  -        
                                  -        if (Firebug.context && persistedState)
                                  -            Firebug.context.persistedState = persistedState;
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var prefs = {
                                  -            options: {}
                                  -        };
                                  -        
                                  -        var EnvOptions = Env.Options;
                                  -        var options = prefs.options;
                                  -        for (var name in EnvOptions)
                                  -        {
                                  -            if (EnvOptions.hasOwnProperty(name))
                                  -            {
                                  -                options[name] = Firebug[name];
                                  -            }
                                  -        }
                                  -        
                                  -        var persistedState = Firebug.context.persistedState;
                                  -        if (!persistedState)
                                  -        {
                                  -            persistedState = Firebug.context.persistedState = FBL.defaultPersistedState;
                                  -        }
                                  -        
                                  -        prefs.persistedState = persistedState;
                                  -        
                                  -        Store.set("FirebugLite", prefs);
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        Store.remove("FirebugLite");
                                  -        this.restorePrefs();
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *  
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener 
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            var panelBarNode = this.parentPanel ? 
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -            
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -        
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel = 
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : 
                                  -                Firebug.chrome.selectedPanel;
                                  -        
                                  -        Firebug.showInfoTips = true;
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        this.visible = true;
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -        
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -        
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu) 
                                  -            return;
                                  -        
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -            
                                  -            items: menu
                                  -        });
                                  -        
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -        
                                  -        return true;
                                  -        
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -        
                                  -        var screenY = 0;
                                  -        
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY; 
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -        
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *  
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        
                                  -        ///return m ? m[1] : label;
                                  -        
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE && 
                                  -                // safeToString() returns "[object]" for some objects like window.Image 
                                  -                (label == "[object]" || 
                                  -                // safeToString() returns undefined for some objects like window.clientInformation 
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_gui */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -/**@namespace*/
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -/**@namespace*/
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.shutdown();
                                  -                selectedPanel.hide();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                Firebug.context.persistedState.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.show();
                                  -            panel.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller 
                                  - *  
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -/**@extend FBL.Button.prototype*/
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.Button 
                                  - */
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype,
                                  -/**@extend FBL.IconButton.prototype*/ 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        _command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            item.label = $STR(item.label);
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - * 
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller
                                  - *   
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                getElementByClass(Firebug.chrome.document, "fbBody"),
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -/**@extend FBL.Menu.prototype*/
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked);
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var handler = null;
                                  -             
                                  -            // target.command can be a function or a string. 
                                  -            var cmd = target.command;
                                  -            
                                  -            // If it is a function it will be used as the handler
                                  -            if (isFunction(cmd))
                                  -                handler = cmd;
                                  -            // If it is a string it the property of the current menu object 
                                  -            // will be used as the handler
                                  -            else if (typeof cmd == "string")
                                  -                handler = this[cmd];
                                  -            
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -append(Menu,
                                  -/**@extend FBL.Menu*/
                                  -{
                                  -    register: function(object)
                                  -    {
                                  -        menuMap[object.id] = object;
                                  -    },
                                  -    
                                  -    check: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "true");
                                  -    },
                                  -    
                                  -    uncheck: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "");
                                  -    },
                                  -    
                                  -    disable: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuDisabled");
                                  -    },
                                  -    
                                  -    enable: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuDisabled");
                                  -    }
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -/**@class*/
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_context*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -
                                  -/** @class */
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    this.browser = Env.browser;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // partial-port of Firebug tabContext.js
                                  -    
                                  -    browser: null,
                                  -    loaded: true,
                                  -    
                                  -    setTimeout: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        if (win.setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        
                                  -        var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setTimeout.apply(win, arguments) :
                                  -                win.setTimeout(fn, delay);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setInterval.apply(win, arguments) :
                                  -                win.setInterval(fn, delay);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            
                                  -            // avoid error. need to create a better getPanel() function as explained below
                                  -            if (!Firebug.chrome || !Firebug.chrome.selectedPanel)
                                  -                return;
                                  -            
                                  -            //var panel = this.getPanel(panelName, true);
                                  -            //TODO: xxxpedro context how to get all panels using a single function?
                                  -            // the current workaround to make the invalidation works is invalidating
                                  -            // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -            var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                    Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                    null;
                                  -            
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                //var panel = this.getPanel(panelName, true);
                                  -                //TODO: xxxpedro context how to get all panels using a single function?
                                  -                // the current workaround to make the invalidation works is invalidating
                                  -                // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -                var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                        Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                        null;
                                  -
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var isObjectLiteral = trim(expr).indexOf("{") == 0,
                                  -            cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // If it is an object literal, then wrap the expression with parenthesis so we can 
                                  -            // capture the return value
                                  -            if (isObjectLiteral)
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ ("+expr+") }" :
                                  -                    "(" + expr + ")";
                                  -            }
                                  -            else
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            cmd = api ?
                                  -                // with API and context, no return value
                                  -                "(function(arguments){ with(" + api + "){ " +
                                  -                    expr + 
                                  -                " } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, no return value
                                  -                "(function(arguments){ " + 
                                  -                    expr + 
                                  -                " }).call(" + context + ",undefined)";
                                  -        }
                                  -        
                                  -        result = this.eval(cmd);
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg);
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        else if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -        
                                  -        else if (unit == "ex")
                                  -            return this.exToPixels(el, value);
                                  -        
                                  -        // TODO: add other units. Maybe create a better general way
                                  -        // to calculate measurements in different units.    
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        };
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getStyle: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbTop,
                                  -    fbContent,
                                  -    fbContentStyle,
                                  -    fbBottom,
                                  -    fbBtnInspect,
                                  -
                                  -    fbToolbar,
                                  -
                                  -    fbPanelBox1,
                                  -    fbPanelBox1Style,
                                  -    fbPanelBox2,
                                  -    fbPanelBox2Style,
                                  -    fbPanelBar2Box,
                                  -    fbPanelBar2BoxStyle,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -    fbVSplitterStyle,
                                  -
                                  -    fbPanel1,
                                  -    fbPanel1Style,
                                  -    fbPanel2,
                                  -    fbPanel2Style,
                                  -
                                  -    fbConsole,
                                  -    fbConsoleStyle,
                                  -    fbHTML,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.addController(
                                  -            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        /*
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            }
                                  -    
                                  -            addEvent(Firebug.chrome.document, "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -        
                                  -        this.addController(
                                  -                [fbPanel1, "mousedown", onPanelMouseDown],
                                  -                [fbPanel2, "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = this.getSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), 
                                  -            
                                  -            height = heightValue + "px",
                                  -            
                                  -            // Width related values
                                  -            sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidthValue = Math.max(sideWidthValue - 6, 0);
                                  -            
                                  -            var sideWidth = sideWidthValue + "px";
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -            
                                  -            if (Firebug.chrome.largeCommandLineVisible)
                                  -            {
                                  -                fbLargeCommandLine = $("fbLargeCommandLine");
                                  -                
                                  -                fbLargeCommandLine.style.height = heightValue - 4 + "px";
                                  -                fbLargeCommandLine.style.width = sideWidthValue - 2 + "px";
                                  -                
                                  -                fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -                fbLargeCommandButtons.style.width = sideWidth;
                                  -            }
                                  -            else
                                  -            {
                                  -                fbPanel2Style.height = height;
                                  -                fbPanel2Style.width = sideWidth;
                                  -                
                                  -                fbPanelBar2BoxStyle.width = sideWidth;
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            fbBottom.className = "";
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            fbBottom.className = "hide";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite =
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Cache = 
                                  -{
                                  -    ID: "firebug-" + new Date().getTime()
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - * 
                                  - * TODO: Investigate a possibility of cache validation, to be customized by each 
                                  - * kind of cache. For ElementCache it should validate if the element still is 
                                  - * inserted at the DOM.
                                  - */ 
                                  -var cacheUID = 0;
                                  -var createCache = function()
                                  -{
                                  -    var map = {};
                                  -    var data = {};
                                  -    
                                  -    var CID = Firebug.Lite.Cache.ID;
                                  -    
                                  -    // better detection
                                  -    var supportsDeleteExpando = !document.all;
                                  -    
                                  -    var cacheFunction = function(element)
                                  -    {
                                  -        return cacheAPI.set(element);
                                  -    };
                                  -    
                                  -    var cacheAPI =  
                                  -    {
                                  -        get: function(key)
                                  -        {
                                  -            return map.hasOwnProperty(key) ?
                                  -                    map[key] :
                                  -                    null;
                                  -        },
                                  -        
                                  -        set: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id)
                                  -            {
                                  -                id = ++cacheUID;
                                  -                element[CID] = id;
                                  -            }
                                  -            
                                  -            if (!map.hasOwnProperty(id))
                                  -            {
                                  -                map[id] = element;
                                  -                data[id] = {};
                                  -            }
                                  -            
                                  -            return id;
                                  -        },
                                  -        
                                  -        unset: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id) return;
                                  -            
                                  -            if (supportsDeleteExpando)
                                  -            {
                                  -                delete element[CID];
                                  -            }
                                  -            else if (element.removeAttribute)
                                  -            {
                                  -                element.removeAttribute(CID);
                                  -            }
                                  -
                                  -            delete map[id];
                                  -            delete data[id];
                                  -            
                                  -        },
                                  -        
                                  -        key: function(element)
                                  -        {
                                  -            return getValidatedKey(element);
                                  -        },
                                  -        
                                  -        has: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            return id && map.hasOwnProperty(id);
                                  -        },
                                  -        
                                  -        each: function(callback)
                                  -        {
                                  -            for (var key in map)
                                  -            {
                                  -                if (map.hasOwnProperty(key))
                                  -                {
                                  -                    callback(key, map[key]);
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        data: function(element, name, value)
                                  -        {
                                  -            // set data
                                  -            if (value)
                                  -            {
                                  -                if (!name) return null;
                                  -                
                                  -                var id = cacheAPI.set(element);
                                  -                
                                  -                return data[id][name] = value;
                                  -            }
                                  -            // get data
                                  -            else
                                  -            {
                                  -                var id = cacheAPI.key(element);
                                  -
                                  -                return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ?
                                  -                        data[id][name] :
                                  -                        null;
                                  -            }
                                  -        },
                                  -        
                                  -        clear: function()
                                  -        {
                                  -            for (var id in map)
                                  -            {
                                  -                var element = map[id];
                                  -                cacheAPI.unset(element);                
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var getValidatedKey = function(element)
                                  -    {
                                  -        var id = element[CID];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property CID will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            !supportsDeleteExpando &&   // the problem happens when supportsDeleteExpando is false
                                  -            id &&                       // the element has the expando property 
                                  -            map.hasOwnProperty(id) &&   // there is a cached element with the same id
                                  -            map[id] != element          // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            element.removeAttribute(CID);
                                  -
                                  -            id = null;
                                  -        }
                                  -        
                                  -        return id;
                                  -    };
                                  -    
                                  -    FBL.append(cacheFunction, cacheAPI);
                                  -    
                                  -    return cacheFunction;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro : check if we need really this on FBL scope
                                  -Firebug.Lite.Cache.StyleSheet = createCache();
                                  -Firebug.Lite.Cache.Element = createCache();
                                  -
                                  -// TODO: xxxpedro
                                  -Firebug.Lite.Cache.Event = createCache();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -var sourceMap = {};
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.Lite.Proxy = 
                                  -{
                                  -    // jsonp callbacks
                                  -    _callbacks: {},
                                  -    
                                  -    /**
                                  -     * Load a resource, either locally (directly) or externally (via proxy) using 
                                  -     * synchronous XHR calls. Loading external resources requires the proxy plugin to
                                  -     * be installed and configured (see /plugin/proxy/proxy.php).
                                  -     */
                                  -    load: function(url)
                                  -    {
                                  -        var resourceDomain = getDomain(url);
                                  -        var isLocalResource =
                                  -            // empty domain means local URL
                                  -            !resourceDomain ||
                                  -            // same domain means local too
                                  -            resourceDomain ==  Firebug.context.window.location.host; // TODO: xxxpedro context
                                  -        
                                  -        return isLocalResource ? fetchResource(url) : fetchProxyResource(url);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using JSONP technique.
                                  -     */
                                  -    loadJSONP: function(url, callback)
                                  -    {
                                  -        var script = createGlobalElement("script"),
                                  -            doc = Firebug.context.document,
                                  -            
                                  -            uid = "" + new Date().getTime(),
                                  -            callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid,
                                  -            
                                  -            jsonpURL = url.indexOf("?") != -1 ? 
                                  -                    url + "&" + callbackName :
                                  -                    url + "?" + callbackName;
                                  -            
                                  -        Firebug.Lite.Proxy._callbacks[uid] = function(data)
                                  -        {
                                  -            if (callback)
                                  -                callback(data);
                                  -            
                                  -            script.parentNode.removeChild(script);
                                  -            delete Firebug.Lite.Proxy._callbacks[uid];
                                  -        };
                                  -        
                                  -        script.src = jsonpURL;
                                  -        
                                  -        if (doc.documentElement)
                                  -            doc.documentElement.appendChild(script);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using YQL (not reliable).
                                  -     */
                                  -    YQL: function(url, callback)
                                  -    {
                                  -        var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" +
                                  -                encodeURIComponent(url) + "%22&format=xml";
                                  -        
                                  -        this.loadJSONP(yql, function(data)
                                  -        {
                                  -            var source = data.results[0];
                                  -            
                                  -            // clean up YQL bogus elements
                                  -            var match = /<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -            if (match)
                                  -                source = match[1];
                                  -            
                                  -            console.log(source);
                                  -        });
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage = 
                                  -    "/* Firebug Lite resource fetching is disabled.\n" +
                                  -    "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" +
                                  -    "More info at http://getfirebug.com/firebuglite#Options */";
                                  -
                                  -var fetchResource = function(url)
                                  -{
                                  -    if (Firebug.disableResourceFetching)
                                  -    {
                                  -        var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -        return source;
                                  -    }
                                  -
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    // Getting the native XHR object so our calls won't be logged in the Console Panel
                                  -    var xhr = FBL.getNativeXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    var source = sourceMap[url] = xhr.responseText; 
                                  -    return source;
                                  -};
                                  -
                                  -var fetchProxyResource = function(url)
                                  -{
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url);
                                  -    var response = fetchResource(proxyURL);
                                  -    
                                  -    try
                                  -    {
                                  -        var data = eval("(" + response + ")");
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return "ERROR: Firebug Lite Proxy plugin returned an invalid response.";
                                  -    }
                                  -    
                                  -    var source = data ? data.contents : ""; 
                                  -    return source;
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Style = 
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Script = function(window)
                                  -{
                                  -    this.fileName = null;
                                  -    this.isValid = null;
                                  -    this.baseLineNumber = null;
                                  -    this.lineExtent = null;
                                  -    this.tag = null;
                                  -    
                                  -    this.functionName = null;
                                  -    this.functionSource = null;
                                  -};
                                  -
                                  -Firebug.Lite.Script.prototype = 
                                  -{
                                  -    isLineExecutable: function(){},
                                  -    pcToLine: function(){},
                                  -    lineToPc: function(){},
                                  -    
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Script";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -Firebug.Lite.Browser = function(window)
                                  -{
                                  -    this.contentWindow = window;
                                  -    this.contentDocument = window.document;
                                  -    this.currentURI = 
                                  -    {
                                  -        spec: window.location.href
                                  -    };
                                  -};
                                  -
                                  -Firebug.Lite.Browser.prototype = 
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Browser";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -    http://www.JSON.org/json2.js
                                  -    2010-03-20
                                  -
                                  -    Public Domain.
                                  -
                                  -    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
                                  -
                                  -    See http://www.JSON.org/js.html
                                  -
                                  -
                                  -    This code should be minified before deployment.
                                  -    See http://javascript.crockford.com/jsmin.html
                                  -
                                  -    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
                                  -    NOT CONTROL.
                                  -
                                  -
                                  -    This file creates a global JSON object containing two methods: stringify
                                  -    and parse.
                                  -
                                  -        JSON.stringify(value, replacer, space)
                                  -            value       any JavaScript value, usually an object or array.
                                  -
                                  -            replacer    an optional parameter that determines how object
                                  -                        values are stringified for objects. It can be a
                                  -                        function or an array of strings.
                                  -
                                  -            space       an optional parameter that specifies the indentation
                                  -                        of nested structures. If it is omitted, the text will
                                  -                        be packed without extra whitespace. If it is a number,
                                  -                        it will specify the number of spaces to indent at each
                                  -                        level. If it is a string (such as '\t' or '&nbsp;'),
                                  -                        it contains the characters used to indent at each level.
                                  -
                                  -            This method produces a JSON text from a JavaScript value.
                                  -
                                  -            When an object value is found, if the object contains a toJSON
                                  -            method, its toJSON method will be called and the result will be
                                  -            stringified. A toJSON method does not serialize: it returns the
                                  -            value represented by the name/value pair that should be serialized,
                                  -            or undefined if nothing should be serialized. The toJSON method
                                  -            will be passed the key associated with the value, and this will be
                                  -            bound to the value
                                  -
                                  -            For example, this would serialize Dates as ISO strings.
                                  -
                                  -                Date.prototype.toJSON = function (key) {
                                  -                    function f(n) {
                                  -                        // Format integers to have at least two digits.
                                  -                        return n < 10 ? '0' + n : n;
                                  -                    }
                                  -
                                  -                    return this.getUTCFullYear()   + '-' +
                                  -                         f(this.getUTCMonth() + 1) + '-' +
                                  -                         f(this.getUTCDate())      + 'T' +
                                  -                         f(this.getUTCHours())     + ':' +
                                  -                         f(this.getUTCMinutes())   + ':' +
                                  -                         f(this.getUTCSeconds())   + 'Z';
                                  -                };
                                  -
                                  -            You can provide an optional replacer method. It will be passed the
                                  -            key and value of each member, with this bound to the containing
                                  -            object. The value that is returned from your method will be
                                  -            serialized. If your method returns undefined, then the member will
                                  -            be excluded from the serialization.
                                  -
                                  -            If the replacer parameter is an array of strings, then it will be
                                  -            used to select the members to be serialized. It filters the results
                                  -            such that only members with keys listed in the replacer array are
                                  -            stringified.
                                  -
                                  -            Values that do not have JSON representations, such as undefined or
                                  -            functions, will not be serialized. Such values in objects will be
                                  -            dropped; in arrays they will be replaced with null. You can use
                                  -            a replacer function to replace those with JSON values.
                                  -            JSON.stringify(undefined) returns undefined.
                                  -
                                  -            The optional space parameter produces a stringification of the
                                  -            value that is filled with line breaks and indentation to make it
                                  -            easier to read.
                                  -
                                  -            If the space parameter is a non-empty string, then that string will
                                  -            be used for indentation. If the space parameter is a number, then
                                  -            the indentation will be that many spaces.
                                  -
                                  -            Example:
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}]);
                                  -            // text is '["e",{"pluribus":"unum"}]'
                                  -
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
                                  -            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
                                  -
                                  -            text = JSON.stringify([new Date()], function (key, value) {
                                  -                return this[key] instanceof Date ?
                                  -                    'Date(' + this[key] + ')' : value;
                                  -            });
                                  -            // text is '["Date(---current time---)"]'
                                  -
                                  -
                                  -        JSON.parse(text, reviver)
                                  -            This method parses a JSON text to produce an object or array.
                                  -            It can throw a SyntaxError exception.
                                  -
                                  -            The optional reviver parameter is a function that can filter and
                                  -            transform the results. It receives each of the keys and values,
                                  -            and its return value is used instead of the original value.
                                  -            If it returns what it received, then the structure is not modified.
                                  -            If it returns undefined then the member is deleted.
                                  -
                                  -            Example:
                                  -
                                  -            // Parse the text. Values that look like ISO date strings will
                                  -            // be converted to Date objects.
                                  -
                                  -            myData = JSON.parse(text, function (key, value) {
                                  -                var a;
                                  -                if (typeof value === 'string') {
                                  -                    a =
                                  -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                                  -                    if (a) {
                                  -                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                                  -                            +a[5], +a[6]));
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                                  -                var d;
                                  -                if (typeof value === 'string' &&
                                  -                        value.slice(0, 5) === 'Date(' &&
                                  -                        value.slice(-1) === ')') {
                                  -                    d = new Date(value.slice(5, -1));
                                  -                    if (d) {
                                  -                        return d;
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -
                                  -    This is a reference implementation. You are free to copy, modify, or
                                  -    redistribute.
                                  -*/
                                  -
                                  -/*jslint evil: true, strict: false */
                                  -
                                  -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
                                  -    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
                                  -    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
                                  -    lastIndex, length, parse, prototype, push, replace, slice, stringify,
                                  -    test, toJSON, toString, valueOf
                                  -*/
                                  -
                                  -
                                  -// Create a JSON object only if one does not already exist. We create the
                                  -// methods in a closure to avoid creating global variables.
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var JSON = window.JSON || {};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -(function () {
                                  -
                                  -    function f(n) {
                                  -        // Format integers to have at least two digits.
                                  -        return n < 10 ? '0' + n : n;
                                  -    }
                                  -
                                  -    if (typeof Date.prototype.toJSON !== 'function') {
                                  -
                                  -        Date.prototype.toJSON = function (key) {
                                  -
                                  -            return isFinite(this.valueOf()) ?
                                  -                   this.getUTCFullYear()   + '-' +
                                  -                 f(this.getUTCMonth() + 1) + '-' +
                                  -                 f(this.getUTCDate())      + 'T' +
                                  -                 f(this.getUTCHours())     + ':' +
                                  -                 f(this.getUTCMinutes())   + ':' +
                                  -                 f(this.getUTCSeconds())   + 'Z' : null;
                                  -        };
                                  -
                                  -        String.prototype.toJSON =
                                  -        Number.prototype.toJSON =
                                  -        Boolean.prototype.toJSON = function (key) {
                                  -            return this.valueOf();
                                  -        };
                                  -    }
                                  -
                                  -    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        gap,
                                  -        indent,
                                  -        meta = {    // table of character substitutions
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '\\': '\\\\'
                                  -        },
                                  -        rep;
                                  -
                                  -
                                  -    function quote(string) {
                                  -
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can safely slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe escape
                                  -// sequences.
                                  -
                                  -        escapable.lastIndex = 0;
                                  -        return escapable.test(string) ?
                                  -            '"' + string.replace(escapable, function (a) {
                                  -                var c = meta[a];
                                  -                return typeof c === 'string' ? c :
                                  -                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -            }) + '"' :
                                  -            '"' + string + '"';
                                  -    }
                                  -
                                  -
                                  -    function str(key, holder) {
                                  -
                                  -// Produce a string from holder[key].
                                  -
                                  -        var i,          // The loop counter.
                                  -            k,          // The member key.
                                  -            v,          // The member value.
                                  -            length,
                                  -            mind = gap,
                                  -            partial,
                                  -            value = holder[key];
                                  -
                                  -// If the value has a toJSON method, call it to obtain a replacement value.
                                  -
                                  -        if (value && typeof value === 'object' &&
                                  -                typeof value.toJSON === 'function') {
                                  -            value = value.toJSON(key);
                                  -        }
                                  -
                                  -// If we were called with a replacer function, then call the replacer to
                                  -// obtain a replacement value.
                                  -
                                  -        if (typeof rep === 'function') {
                                  -            value = rep.call(holder, key, value);
                                  -        }
                                  -
                                  -// What happens next depends on the value's type.
                                  -
                                  -        switch (typeof value) {
                                  -        case 'string':
                                  -            return quote(value);
                                  -
                                  -        case 'number':
                                  -
                                  -// JSON numbers must be finite. Encode non-finite numbers as null.
                                  -
                                  -            return isFinite(value) ? String(value) : 'null';
                                  -
                                  -        case 'boolean':
                                  -        case 'null':
                                  -
                                  -// If the value is a boolean or null, convert it to a string. Note:
                                  -// typeof null does not produce 'null'. The case is included here in
                                  -// the remote chance that this gets fixed someday.
                                  -
                                  -            return String(value);
                                  -
                                  -// If the type is 'object', we might be dealing with an object or an array or
                                  -// null.
                                  -
                                  -        case 'object':
                                  -
                                  -// Due to a specification blunder in ECMAScript, typeof null is 'object',
                                  -// so watch out for that case.
                                  -
                                  -            if (!value) {
                                  -                return 'null';
                                  -            }
                                  -
                                  -// Make an array to hold the partial results of stringifying this object value.
                                  -
                                  -            gap += indent;
                                  -            partial = [];
                                  -
                                  -// Is the value an array?
                                  -
                                  -            if (Object.prototype.toString.apply(value) === '[object Array]') {
                                  -
                                  -// The value is an array. Stringify every element. Use null as a placeholder
                                  -// for non-JSON values.
                                  -
                                  -                length = value.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    partial[i] = str(i, value) || 'null';
                                  -                }
                                  -
                                  -// Join all of the elements together, separated with commas, and wrap them in
                                  -// brackets.
                                  -
                                  -                v = partial.length === 0 ? '[]' :
                                  -                    gap ? '[\n' + gap +
                                  -                            partial.join(',\n' + gap) + '\n' +
                                  -                                mind + ']' :
                                  -                          '[' + partial.join(',') + ']';
                                  -                gap = mind;
                                  -                return v;
                                  -            }
                                  -
                                  -// If the replacer is an array, use it to select the members to be stringified.
                                  -
                                  -            if (rep && typeof rep === 'object') {
                                  -                length = rep.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    k = rep[i];
                                  -                    if (typeof k === 'string') {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -
                                  -// Otherwise, iterate through all of the keys in the object.
                                  -
                                  -                for (k in value) {
                                  -                    if (Object.hasOwnProperty.call(value, k)) {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -// Join all of the member texts together, separated with commas,
                                  -// and wrap them in braces.
                                  -
                                  -            v = partial.length === 0 ? '{}' :
                                  -                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                                  -                        mind + '}' : '{' + partial.join(',') + '}';
                                  -            gap = mind;
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -// If the JSON object does not yet have a stringify method, give it one.
                                  -
                                  -    if (typeof JSON.stringify !== 'function') {
                                  -        JSON.stringify = function (value, replacer, space) {
                                  -
                                  -// The stringify method takes a value and an optional replacer, and an optional
                                  -// space parameter, and returns a JSON text. The replacer can be a function
                                  -// that can replace values, or an array of strings that will select the keys.
                                  -// A default replacer method can be provided. Use of the space parameter can
                                  -// produce text that is more easily readable.
                                  -
                                  -            var i;
                                  -            gap = '';
                                  -            indent = '';
                                  -
                                  -// If the space parameter is a number, make an indent string containing that
                                  -// many spaces.
                                  -
                                  -            if (typeof space === 'number') {
                                  -                for (i = 0; i < space; i += 1) {
                                  -                    indent += ' ';
                                  -                }
                                  -
                                  -// If the space parameter is a string, it will be used as the indent string.
                                  -
                                  -            } else if (typeof space === 'string') {
                                  -                indent = space;
                                  -            }
                                  -
                                  -// If there is a replacer, it must be a function or an array.
                                  -// Otherwise, throw an error.
                                  -
                                  -            rep = replacer;
                                  -            if (replacer && typeof replacer !== 'function' &&
                                  -                    (typeof replacer !== 'object' ||
                                  -                     typeof replacer.length !== 'number')) {
                                  -                throw new Error('JSON.stringify');
                                  -            }
                                  -
                                  -// Make a fake root object containing our value under the key of ''.
                                  -// Return the result of stringifying the value.
                                  -
                                  -            return str('', {'': value});
                                  -        };
                                  -    }
                                  -
                                  -
                                  -// If the JSON object does not yet have a parse method, give it one.
                                  -
                                  -    if (typeof JSON.parse !== 'function') {
                                  -        JSON.parse = function (text, reviver) {
                                  -
                                  -// The parse method takes a text and an optional reviver function, and returns
                                  -// a JavaScript value if the text is a valid JSON text.
                                  -
                                  -            var j;
                                  -
                                  -            function walk(holder, key) {
                                  -
                                  -// The walk method is used to recursively walk the resulting structure so
                                  -// that modifications can be made.
                                  -
                                  -                var k, v, value = holder[key];
                                  -                if (value && typeof value === 'object') {
                                  -                    for (k in value) {
                                  -                        if (Object.hasOwnProperty.call(value, k)) {
                                  -                            v = walk(value, k);
                                  -                            if (v !== undefined) {
                                  -                                value[k] = v;
                                  -                            } else {
                                  -                                delete value[k];
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                return reviver.call(holder, key, value);
                                  -            }
                                  -
                                  -
                                  -// Parsing happens in four stages. In the first stage, we replace certain
                                  -// Unicode characters with escape sequences. JavaScript handles many characters
                                  -// incorrectly, either silently deleting them, or treating them as line endings.
                                  -
                                  -            text = String(text);
                                  -            cx.lastIndex = 0;
                                  -            if (cx.test(text)) {
                                  -                text = text.replace(cx, function (a) {
                                  -                    return '\\u' +
                                  -                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -                });
                                  -            }
                                  -
                                  -// In the second stage, we run the text against regular expressions that look
                                  -// for non-JSON patterns. We are especially concerned with '()' and 'new'
                                  -// because they can cause invocation, and '=' because it can cause mutation.
                                  -// But just to be safe, we want to reject all unexpected forms.
                                  -
                                  -// We split the second stage into 4 regexp operations in order to work around
                                  -// crippling inefficiencies in IE's and Safari's regexp engines. First we
                                  -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
                                  -// replace all simple value tokens with ']' characters. Third, we delete all
                                  -// open brackets that follow a colon or comma or that begin the text. Finally,
                                  -// we look to see that the remaining characters are only whitespace or ']' or
                                  -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
                                  -
                                  -            if (/^[\],:{}\s]*$/.
                                  -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                                  -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
                                  -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                                  -
                                  -// In the third stage we use the eval function to compile the text into a
                                  -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                                  -// in JavaScript: it can begin a block or an object literal. We wrap the text
                                  -// in parens to eliminate the ambiguity.
                                  -
                                  -                j = eval('(' + text + ')');
                                  -
                                  -// In the optional fourth stage, we recursively walk the new structure, passing
                                  -// each name/value pair to a reviver function for possible transformation.
                                  -
                                  -                return typeof reviver === 'function' ?
                                  -                    walk({'': j}, '') : j;
                                  -            }
                                  -
                                  -// If the text is not JSON parseable, then a SyntaxError is thrown.
                                  -
                                  -            throw new SyntaxError('JSON.parse');
                                  -        };
                                  -    }
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.JSON = JSON;
                                  -
                                  -// ************************************************************************************************
                                  -}());
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -/* Copyright (c) 2010-2011 Marcus Westin
                                  - *
                                  - * Permission is hereby granted, free of charge, to any person obtaining a copy
                                  - * of this software and associated documentation files (the "Software"), to deal
                                  - * in the Software without restriction, including without limitation the rights
                                  - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  - * copies of the Software, and to permit persons to whom the Software is
                                  - * furnished to do so, subject to the following conditions:
                                  - *
                                  - * The above copyright notice and this permission notice shall be included in
                                  - * all copies or substantial portions of the Software.
                                  - *
                                  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  - * THE SOFTWARE.
                                  - */
                                  -
                                  -var store = (function(){
                                  -	var api = {},
                                  -		win = window,
                                  -		doc = win.document,
                                  -		localStorageName = 'localStorage',
                                  -		globalStorageName = 'globalStorage',
                                  -		namespace = '__firebug__storejs__',
                                  -		storage
                                  -
                                  -	api.disabled = false
                                  -	api.set = function(key, value) {}
                                  -	api.get = function(key) {}
                                  -	api.remove = function(key) {}
                                  -	api.clear = function() {}
                                  -	api.transact = function(key, transactionFn) {
                                  -		var val = api.get(key)
                                  -		if (typeof val == 'undefined') { val = {} }
                                  -		transactionFn(val)
                                  -		api.set(key, val)
                                  -	}
                                  -
                                  -	api.serialize = function(value) {
                                  -		return JSON.stringify(value)
                                  -	}
                                  -	api.deserialize = function(value) {
                                  -		if (typeof value != 'string') { return undefined }
                                  -		return JSON.parse(value)
                                  -	}
                                  -
                                  -	// Functions to encapsulate questionable FireFox 3.6.13 behavior 
                                  -	// when about.config::dom.storage.enabled === false
                                  -	// See https://github.com/marcuswestin/store.js/issues#issue/13
                                  -	function isLocalStorageNameSupported() {
                                  -		try { return (localStorageName in win && win[localStorageName]) }
                                  -		catch(err) { return false }
                                  -	}
                                  -	
                                  -	function isGlobalStorageNameSupported() {
                                  -		try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) }
                                  -		catch(err) { return false }
                                  -	}	
                                  -
                                  -	if (isLocalStorageNameSupported()) {
                                  -		storage = win[localStorageName]
                                  -		api.set = function(key, val) { storage.setItem(key, api.serialize(val)) }
                                  -		api.get = function(key) { return api.deserialize(storage.getItem(key)) }
                                  -		api.remove = function(key) { storage.removeItem(key) }
                                  -		api.clear = function() { storage.clear() }
                                  -
                                  -	} else if (isGlobalStorageNameSupported()) {
                                  -		storage = win[globalStorageName][win.location.hostname]
                                  -		api.set = function(key, val) { storage[key] = api.serialize(val) }
                                  -		api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) }
                                  -		api.remove = function(key) { delete storage[key] }
                                  -		api.clear = function() { for (var key in storage ) { delete storage[key] } }
                                  -
                                  -	} else if (doc.documentElement.addBehavior) {
                                  -		var storage = doc.createElement('div')
                                  -		function withIEStorage(storeFunction) {
                                  -			return function() {
                                  -				var args = Array.prototype.slice.call(arguments, 0)
                                  -				args.unshift(storage)
                                  -				// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
                                  -				// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
                                  -				// TODO: xxxpedro doc.body is not always available so we must use doc.documentElement.
                                  -				// We need to make sure this change won't affect the behavior of this library.
                                  -				doc.documentElement.appendChild(storage)
                                  -				storage.addBehavior('#default#userData')
                                  -				storage.load(localStorageName)
                                  -				var result = storeFunction.apply(api, args)
                                  -				doc.documentElement.removeChild(storage)
                                  -				return result
                                  -			}
                                  -		}
                                  -		api.set = withIEStorage(function(storage, key, val) {
                                  -			storage.setAttribute(key, api.serialize(val))
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.get = withIEStorage(function(storage, key) {
                                  -			return api.deserialize(storage.getAttribute(key))
                                  -		})
                                  -		api.remove = withIEStorage(function(storage, key) {
                                  -			storage.removeAttribute(key)
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.clear = withIEStorage(function(storage) {
                                  -			var attributes = storage.XMLDocument.documentElement.attributes
                                  -			storage.load(localStorageName)
                                  -			for (var i=0, attr; attr = attributes[i]; i++) {
                                  -				storage.removeAttribute(attr.name)
                                  -			}
                                  -			storage.save(localStorageName)
                                  -		})
                                  -	}
                                  -	
                                  -	try {
                                  -		api.set(namespace, namespace)
                                  -		if (api.get(namespace) != namespace) { api.disabled = true }
                                  -		api.remove(namespace)
                                  -	} catch(e) {
                                  -		api.disabled = true
                                  -	}
                                  -	
                                  -	return api
                                  -})();
                                  -
                                  -if (typeof module != 'undefined') { module.exports = store }
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.Store = store;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_selector*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -/**
                                  - * @name Firebug.Selector 
                                  - * @namespace
                                  - */
                                  -
                                  -/**
                                  - * @exports Sizzle as Firebug.Selector
                                  - */ 
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -/**#@+ @ignore */
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -/**#@-*/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache(targ))
                                  -            {
                                  -                var target = ""+ElementCache.key(targ);
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    if (Firebug.HTML)
                                  -                        Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0);
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache.has(targ))
                                  -                FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        // avoid error when the element is not attached a document
                                  -        if (!el || !el.parentNode)
                                  -            return;
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -( /** @scope s_domplate */ function() {
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -FBL.DomplateTag = function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateEmbed = function DomplateEmbed()
                                  -{
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateLoop = function DomplateLoop()
                                  -{
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var DomplateTag = FBL.DomplateTag;
                                  -var DomplateEmbed = FBL.DomplateEmbed;
                                  -var DomplateLoop = FBL.DomplateLoop;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var womb = null;
                                  -
                                  -FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -var domplate = FBL.domplate;
                                  -
                                  -FBL.domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -FBL.DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); };
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateEmbed.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateLoop.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -/** @class */
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -/** @class */
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** @namespace */
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild;
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertBefore: function(args, before, self)
                                  -    {
                                  -        return this.insertNode(args, before.ownerDocument, before, false, self);
                                  -    },
                                  -
                                  -    insertAfter: function(args, after, self)
                                  -    {
                                  -        return this.insertNode(args, after.ownerDocument, after, true, self);
                                  -    },
                                  -
                                  -    insertNode: function(args, doc, element, isAfter, self)
                                  -    {
                                  -        if (!args)
                                  -            args = {};
                                  -
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode html: "+html+"\n");
                                  -
                                  -        var doc = element.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        if (isAfter)
                                  -        {
                                  -            while (womb.firstChild)
                                  -                if (element.nextSibling)
                                  -                    element.parentNode.insertBefore(womb.firstChild, element.nextSibling);
                                  -                else
                                  -                    element.parentNode.appendChild(womb.firstChild);
                                  -        }
                                  -        else
                                  -        {
                                  -            while (womb.lastChild)
                                  -                element.parentNode.insertBefore(womb.lastChild, element);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -
                                  -    /*
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -    
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle "),
                                  -            
                                  -            SPAN({"class": "objectProps"}, 
                                  -                SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
                                  -                FOR("prop", "$object|propIterator",
                                  -                    SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"),
                                  -                    SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
                                  -                    TAG("$prop.tag", {object: "$prop.object"}),
                                  -                    SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
                                  -                ),
                                  -                SPAN({"class": "objectRightBrace"}, "}")
                                  -            )
                                  -        ),
                                  -
                                  -    propNumberTag:
                                  -        SPAN({"class": "objectProp-number"}, "$object"),
                                  -
                                  -    propStringTag:
                                  -        SPAN({"class": "objectProp-string"}, "&quot;$object&quot;"),
                                  -
                                  -    propObjectTag:
                                  -        SPAN({"class": "objectProp-object"}, "$object"),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        ///Firebug.ObjectShortIteratorMax;
                                  -        var maxLength = 55; // default max length for long representation
                                  -        
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var length = 0;
                                  -        
                                  -        var numProperties = 0;
                                  -        var numPropertiesShown = 0;
                                  -        var maxLengthReached = false;
                                  -        
                                  -        var lib = this;
                                  -        
                                  -        var propRepsMap = 
                                  -        {
                                  -            "boolean": this.propNumberTag,
                                  -            "number": this.propNumberTag,
                                  -            "string": this.propStringTag,
                                  -            "object": this.propObjectTag
                                  -        };
                                  -
                                  -        try
                                  -        {
                                  -            var title = Firebug.Rep.getTitle(object);
                                  -            length += title.length;
                                  -
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                
                                  -                var type = typeof(value);
                                  -                if (type == "boolean" || 
                                  -                    type == "number" || 
                                  -                    (type == "string" && value) || 
                                  -                    (type == "object" && value && value.toString))
                                  -                {
                                  -                    var tag = propRepsMap[type];
                                  -                    
                                  -                    var value = (type == "object") ?
                                  -                        Firebug.getRep(value).getTitle(value) :
                                  -                        value + "";
                                  -                        
                                  -                    length += name.length + value.length + 4;
                                  -                    
                                  -                    if (length <= maxLength)
                                  -                    {
                                  -                        props.push({
                                  -                            tag: tag, 
                                  -                            name: name, 
                                  -                            object: value, 
                                  -                            equal: "=", 
                                  -                            delim: ", "
                                  -                        });
                                  -                        
                                  -                        numPropertiesShown++;
                                  -                    }
                                  -                    else
                                  -                        maxLengthReached = true;
                                  -
                                  -                }
                                  -                
                                  -                numProperties++;
                                  -                
                                  -                if (maxLengthReached && numProperties > numPropertiesShown)
                                  -                    break;
                                  -            }
                                  -            
                                  -            if (numProperties > numPropertiesShown)
                                  -            {
                                  -                props.push({
                                  -                    object: "...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                });
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    fb_1_6_propIterator: function (object, max)
                                  -    {
                                  -        max = max || 3;
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0, count = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(value);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && value)
                                  -                    || (t == "object" && value && value.toString))
                                  -                {
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag || rep.tag;
                                  -                    if (t == "object")
                                  -                    {
                                  -                        value = rep.getTitle(value);
                                  -                        tag = rep.titleTag;
                                  -                    }
                                  -                    count++;
                                  -                    if (count <= max)
                                  -                        props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -            if (count > max)
                                  -            {
                                  -                props[Math.max(1,max-1)] = {
                                  -                    object: "more...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                };
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    /*
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -    /**/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.nodeName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.nodeName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 
                                  -                 // we must check if the attribute is specified otherwise IE will show them
                                  -                 if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.nodeName == "id")
                                  -                    idAttr = attr;
                                  -                 else if (attr.nodeName == "class")
                                  -                    classAttr = attr;
                                  -                 else if (attr.nodeName == "style")
                                  -                    attrs.push({
                                  -                        nodeName: attr.nodeName,
                                  -                        nodeValue: attr.nodeValue ||
                                  -                        // IE won't recognize the attr.nodeValue of <style> nodes ...
                                  -                        // and will return CSS property names in upper case, so we need to convert them
                                  -                        elt.style.cssText.replace(/([^\s]+)\s*:/g, 
                                  -                                function(m,g){return g.toLowerCase()+":"})                         
                                  -                    });
                                  -                 else
                                  -                    attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.nodeName == "id" || attr.nodeName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -     
                                  -     // TODO: xxxpedro remove this?
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -     /**/
                                  -
                                  -     getNodeTextGroups: function(element)
                                  -     {
                                  -         var text =  element.textContent;
                                  -         if (!Firebug.showFullTextNodes)
                                  -         {
                                  -             text=cropString(text,50);
                                  -         }
                                  -
                                  -         var escapeGroups=[];
                                  -
                                  -         if (Firebug.showTextNodesWithWhitespace)
                                  -             escapeGroups.push({
                                  -                'group': 'whitespace',
                                  -                'class': 'nodeWhiteSpace',
                                  -                'extra': {
                                  -                    '\t': '_Tab',
                                  -                    '\n': '_Para',
                                  -                    ' ' : '_Space'
                                  -                }
                                  -             });
                                  -         if (Firebug.showTextNodesWithEntities)
                                  -             escapeGroups.push({
                                  -                 'group':'text',
                                  -                 'class':'nodeTextEntity',
                                  -                 'extra':{}
                                  -             });
                                  -
                                  -         if (escapeGroups.length)
                                  -             return escapeGroupsForEntities(text, escapeGroups);
                                  -         else
                                  -             return [{str:text,'class':'',extra:''}];
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.nodeName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"),
                                  -            " ( ",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            " )",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        return frame.name || "anonymous";
                                  -        
                                  -        //return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        var fileName = cropString(getFileName(frame.href), 20);
                                  -        return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : "");
                                  -        
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var saveTimeout = 400;
                                  -var pageAmount = 10;
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var currentTarget = null;
                                  -var currentGroup = null;
                                  -var currentPanel = null;
                                  -var currentEditor = null;
                                  -
                                  -var defaultEditor = null;
                                  -
                                  -var originalClassName = null;
                                  -
                                  -var originalValue = null;
                                  -var defaultValue = null;
                                  -var previousValue = null;
                                  -
                                  -var invalidEditor = false;
                                  -var ignoreNextInput = false;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Editor = extend(Firebug.Module,
                                  -{
                                  -    supportsStopEvent: true,
                                  -
                                  -    dispatchName: "editor",
                                  -    tabCharacter: "    ",
                                  -
                                  -    startEditing: function(target, value, editor)
                                  -    {
                                  -        this.stopEditing();
                                  -
                                  -        if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter"))
                                  -            return;
                                  -
                                  -        var panel = Firebug.getElementPanel(target);
                                  -        if (!panel.editable)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.startEditing " + value, target);
                                  -
                                  -        defaultValue = target.getAttribute("defaultValue");
                                  -        if (value == undefined)
                                  -        {
                                  -            var textContent = isIE ? "innerText" : "textContent";
                                  -            value = target[textContent];
                                  -            if (value == defaultValue)
                                  -                value = "";
                                  -        }
                                  -
                                  -        originalValue = previousValue = value;
                                  -
                                  -        invalidEditor = false;
                                  -        currentTarget = target;
                                  -        currentPanel = panel;
                                  -        currentGroup = getAncestorByClass(target, "editGroup");
                                  -
                                  -        currentPanel.editing = true;
                                  -
                                  -        var panelEditor = currentPanel.getEditor(target, value);
                                  -        currentEditor = editor ? editor : panelEditor;
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        var inlineParent = getInlineParent(target);
                                  -        var targetSize = getOffsetSize(inlineParent);
                                  -
                                  -        setClass(panel.panelNode, "editing");
                                  -        setClass(target, "editing");
                                  -        if (currentGroup)
                                  -            setClass(currentGroup, "editing");
                                  -
                                  -        currentEditor.show(target, currentPanel, value, targetSize);
                                  -        //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
                                  -        currentEditor.beginEditing(target, value);
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Editor start panel "+currentPanel.name);
                                  -        this.attachListeners(currentEditor, panel.context);
                                  -    },
                                  -
                                  -    stopEditing: function(cancel)
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout);
                                  -
                                  -        clearTimeout(this.saveTimeout);
                                  -        delete this.saveTimeout;
                                  -
                                  -        this.detachListeners(currentEditor, currentPanel.context);
                                  -
                                  -        removeClass(currentPanel.panelNode, "editing");
                                  -        removeClass(currentTarget, "editing");
                                  -        if (currentGroup)
                                  -            removeClass(currentGroup, "editing");
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        if (value == defaultValue)
                                  -            value = "";
                                  -
                                  -        var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
                                  -
                                  -        try
                                  -        {
                                  -            if (cancel)
                                  -            {
                                  -                //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]);
                                  -                if (value != originalValue)
                                  -                    this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
                                  -
                                  -                if (removeGroup && !originalValue && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else if (!value)
                                  -            {
                                  -                this.saveEditAndNotifyListeners(currentTarget, null, previousValue);
                                  -
                                  -                if (removeGroup && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else
                                  -                this.save(value);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            //throw exc.message;
                                  -            //ERROR(exc);
                                  -        }
                                  -
                                  -        currentEditor.hide();
                                  -        currentPanel.editing = false;
                                  -
                                  -        //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]);
                                  -        //if (FBTrace.DBG_EDITOR)
                                  -        //    FBTrace.sysout("Editor stop panel "+currentPanel.name);
                                  -        
                                  -        currentTarget = null;
                                  -        currentGroup = null;
                                  -        currentPanel = null;
                                  -        currentEditor = null;
                                  -        originalValue = null;
                                  -        invalidEditor = false;
                                  -
                                  -        return value;
                                  -    },
                                  -
                                  -    cancelEditing: function()
                                  -    {
                                  -        return this.stopEditing(true);
                                  -    },
                                  -
                                  -    update: function(saveNow)
                                  -    {
                                  -        if (this.saveTimeout)
                                  -            clearTimeout(this.saveTimeout);
                                  -
                                  -        invalidEditor = true;
                                  -
                                  -        currentEditor.layout();
                                  -
                                  -        if (saveNow)
                                  -            this.save();
                                  -        else
                                  -        {
                                  -            var context = currentPanel.context;
                                  -            this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout);
                                  -            if (FBTrace.DBG_EDITOR)
                                  -                FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
                                  -        }
                                  -    },
                                  -
                                  -    save: function(value)
                                  -    {
                                  -        if (!invalidEditor)
                                  -            return;
                                  -
                                  -        if (value == undefined)
                                  -            value = currentEditor.getValue();
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"));
                                  -        try
                                  -        {
                                  -            this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
                                  -
                                  -            previousValue = value;
                                  -            invalidEditor = false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("editor.save FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
                                  -    {
                                  -        currentEditor.saveEdit(currentTarget, value, previousValue);
                                  -        //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]);
                                  -    },
                                  -
                                  -    setEditTarget: function(element)
                                  -    {
                                  -        if (!element)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]);
                                  -            this.stopEditing();
                                  -        }
                                  -        else if (hasClass(element, "insertBefore"))
                                  -            this.insertRow(element, "before");
                                  -        else if (hasClass(element, "insertAfter"))
                                  -            this.insertRow(element, "after");
                                  -        else
                                  -            this.startEditing(element);
                                  -    },
                                  -
                                  -    tabNextEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var nextEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            nextEditable = !value && currentGroup
                                  -                ? getNextOutsider(nextEditable, currentGroup)
                                  -                : getNextByClass(nextEditable, "editable");
                                  -        }
                                  -        while (nextEditable && !nextEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(nextEditable);
                                  -    },
                                  -
                                  -    tabPreviousEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var prevEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            prevEditable = !value && currentGroup
                                  -                ? getPreviousOutsider(prevEditable, currentGroup)
                                  -                : getPreviousByClass(prevEditable, "editable");
                                  -        }
                                  -        while (prevEditable && !prevEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(prevEditable);
                                  -    },
                                  -
                                  -    insertRow: function(relative, insertWhere)
                                  -    {
                                  -        var group =
                                  -            relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget;
                                  -        var value = this.stopEditing();
                                  -
                                  -        currentPanel = Firebug.getElementPanel(group);
                                  -
                                  -        currentEditor = currentPanel.getEditor(group, value);
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        currentGroup = currentEditor.insertNewRow(group, insertWhere);
                                  -        if (!currentGroup)
                                  -            return;
                                  -
                                  -        var editable = hasClass(currentGroup, "editable")
                                  -            ? currentGroup
                                  -            : getNextByClass(currentGroup, "editable");
                                  -
                                  -        if (editable)
                                  -            this.setEditTarget(editable);
                                  -    },
                                  -
                                  -    insertRowForObject: function(relative)
                                  -    {
                                  -        var container = getAncestorByClass(relative, "insertInto");
                                  -        if (container)
                                  -        {
                                  -            relative = getChildByClass(container, "insertBefore");
                                  -            if (relative)
                                  -                this.insertRow(relative, "before");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachListeners: function(editor, context)
                                  -    {
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        addEvent(win, "resize", this.onResize);
                                  -        addEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        this.listeners = [
                                  -            chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this))
                                  -        ];
                                  -
                                  -        if (editor.arrowCompletion)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)),
                                  -                chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)),
                                  -                chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)),
                                  -                chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount))
                                  -            );
                                  -        }
                                  -
                                  -        if (currentEditor.tabNavigation)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")),
                                  -                chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this))
                                  -            );
                                  -        }
                                  -        else if (currentEditor.multiLine)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("TAB", null, insertTab)
                                  -            );
                                  -        }
                                  -        else
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this))
                                  -            );
                                  -
                                  -            if (currentEditor.tabCompletion)
                                  -            {
                                  -                this.listeners.push(
                                  -                    chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)),
                                  -                    chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1))
                                  -                );
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    detachListeners: function(editor, context)
                                  -    {
                                  -        if (!this.listeners)
                                  -            return;
                                  -
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        removeEvent(win, "resize", this.onResize);
                                  -        removeEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -        if (chrome)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; ++i)
                                  -                chrome.keyIgnore(this.listeners[i]);
                                  -        }
                                  -
                                  -        delete this.listeners;
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        currentEditor.layout(true);
                                  -    },
                                  -
                                  -    onBlur: function(event)
                                  -    {
                                  -        if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box))
                                  -            this.stopEditing();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -
                                  -        this.onResize = bindFixed(this.onResize, this);
                                  -        this.onBlur = bind(this.onBlur, this);
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        this.stopEditing();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// BaseEditor
                                  -
                                  -Firebug.BaseEditor = extend(Firebug.MeasureBox,
                                  -{
                                  -    getValue: function()
                                  -    {
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for context menus within inline editors.
                                  -
                                  -    getContextMenuItems: function(target)
                                  -    {
                                  -        var items = [];
                                  -        items.push({label: "Cut", commandID: "cmd_cut"});
                                  -        items.push({label: "Copy", commandID: "cmd_copy"});
                                  -        items.push({label: "Paste", commandID: "cmd_paste"});
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Editor Module listeners will get "onBeginEditing" just before this call
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // Editor Module listeners will get "onSaveEdit" just after this call
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// InlineEditor
                                  -
                                  -// basic inline editor attributes
                                  -var inlineEditorAttributes = {
                                  -    "class": "textEditorInner",
                                  -    
                                  -    type: "text", 
                                  -    spellcheck: "false",
                                  -    
                                  -    onkeypress: "$onKeyPress",
                                  -    
                                  -    onoverflow: "$onOverflow",
                                  -    oncontextmenu: "$onContextMenu"
                                  -};
                                  -
                                  -// IE does not support the oninput event, so we're using the onkeydown to signalize
                                  -// the relevant keyboard events, and the onpropertychange to actually handle the
                                  -// input event, which should happen after the onkeydown event is fired and after the 
                                  -// value of the input is updated, but before the onkeyup and before the input (with the 
                                  -// new value) is rendered
                                  -if (isIE)
                                  -{
                                  -    inlineEditorAttributes.onpropertychange = "$onInput";
                                  -    inlineEditorAttributes.onkeydown = "$onKeyDown";
                                  -}
                                  -// for other browsers we use the oninput event
                                  -else
                                  -{
                                  -    inlineEditorAttributes.oninput = "$onInput";
                                  -}
                                  -
                                  -Firebug.InlineEditor = function(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -};
                                  -
                                  -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    enterOnBlur: true,
                                  -    outerMargin: 8,
                                  -    shadowExpand: 7,
                                  -
                                  -    tag:
                                  -        DIV({"class": "inlineEditor"},
                                  -            DIV({"class": "textEditorTop1"},
                                  -                DIV({"class": "textEditorTop2"})
                                  -            ),
                                  -            DIV({"class": "textEditorInner1"},
                                  -                DIV({"class": "textEditorInner2"},
                                  -                    INPUT(
                                  -                        inlineEditorAttributes
                                  -                    )
                                  -                )
                                  -            ),
                                  -            DIV({"class": "textEditorBottom1"},
                                  -                DIV({"class": "textEditorBottom2"})
                                  -            )
                                  -        ),
                                  -
                                  -    inputTag :
                                  -        INPUT({"class": "textEditorInner", type: "text",
                                  -            /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
                                  -        ),
                                  -
                                  -    expanderTag:
                                  -        IMG({"class": "inlineExpander", src: "blank.gif"}),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.fixedWidth = false;
                                  -        this.completeAsYouType = true;
                                  -        this.tabNavigation = true;
                                  -        this.multiLine = false;
                                  -        this.tabCompletion = false;
                                  -        this.arrowCompletion = true;
                                  -        this.noWrap = true;
                                  -        this.numeric = false;
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        this.destroyInput();
                                  -    },
                                  -
                                  -    initializeInline: function(doc)
                                  -    {
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Firebug.InlineEditor initializeInline()");
                                  -        
                                  -        //this.box = this.tag.replace({}, doc, this);
                                  -        this.box = this.tag.append({}, doc.body, this);
                                  -        
                                  -        //this.input = this.box.childNodes[1].firstChild.firstChild;  // XXXjjb childNode[1] required
                                  -        this.input = this.box.getElementsByTagName("input")[0];
                                  -        
                                  -        if (isIElt8)
                                  -        {
                                  -            this.input.style.top = "-8px";
                                  -        }
                                  -        
                                  -        this.expander = this.expanderTag.replace({}, doc, this);
                                  -        this.initialize();
                                  -    },
                                  -
                                  -    destroyInput: function()
                                  -    {
                                  -        // XXXjoe Need to remove input/keypress handlers to avoid leaks
                                  -    },
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        // It's only a one-line editor, so new lines shouldn't be allowed
                                  -        return this.input.value = stripNewLines(value);
                                  -    },
                                  -
                                  -    show: function(target, panel, value, targetSize)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]);
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.targetSize = targetSize;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        //this.targetOffset = getClientOffset(target);
                                  -        
                                  -        // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the 
                                  -        // offset values of invisible elements, or empty elements. So, in order to get the 
                                  -        // correct values, we temporary inject a character in the innerHTML of the empty element, 
                                  -        // then we get the offset values, and next, we restore the original innerHTML value.
                                  -        var innerHTML = target.innerHTML;
                                  -        var isEmptyElement = !innerHTML;
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = ".";
                                  -        
                                  -        // Get the position of the target element (that is about to be edited)
                                  -        this.targetOffset = 
                                  -        {
                                  -            x: target.offsetLeft,
                                  -            y: target.offsetTop
                                  -        };
                                  -        
                                  -        // Restore the original innerHTML value of the empty element
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = innerHTML;
                                  -        
                                  -        this.originalClassName = this.box.className;
                                  -
                                  -        var classNames = target.className.split(" ");
                                  -        for (var i = 0; i < classNames.length; ++i)
                                  -            setClass(this.box, "editor-" + classNames[i]);
                                  -
                                  -        // Make the editor match the target's font style
                                  -        copyTextStyles(target, this.box);
                                  -
                                  -        this.setValue(value);
                                  -
                                  -        if (this.fixedWidth)
                                  -            this.updateLayout(true);
                                  -        else
                                  -        {
                                  -            this.startMeasuring(target);
                                  -            this.textSize = this.measureInputText(value);
                                  -
                                  -            // Correct the height of the box to make the funky CSS drop-shadow line up
                                  -            var parent = this.input.parentNode;
                                  -            if (hasClass(parent, "textEditorInner2"))
                                  -            {
                                  -                var yDiff = this.textSize.height - this.shadowExpand;
                                  -                
                                  -                // IE6 height offset
                                  -                if (isIE6)
                                  -                    yDiff -= 2;
                                  -                
                                  -                parent.style.height = yDiff + "px";
                                  -                parent.parentNode.style.height = yDiff + "px";
                                  -            }
                                  -
                                  -            this.updateLayout(true);
                                  -        }
                                  -
                                  -        this.getAutoCompleter().reset();
                                  -
                                  -        if (isIElt8)
                                  -            panel.panelNode.appendChild(this.box);
                                  -        else
                                  -            target.offsetParent.appendChild(this.box);        
                                  -        
                                  -        //console.log(target);
                                  -        //this.input.select(); // it's called bellow, with setTimeout
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            // reset input style
                                  -            this.input.style.fontFamily = "Monospace";
                                  -            this.input.style.fontSize = "11px";
                                  -        }
                                  -
                                  -        // Insert the "expander" to cover the target element with white space
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            copyBoxStyles(target, this.expander);
                                  -
                                  -            target.parentNode.replaceChild(this.expander, target);
                                  -            collapse(target, true);
                                  -            this.expander.parentNode.insertBefore(target, this.expander);
                                  -        }
                                  -
                                  -        //TODO: xxxpedro
                                  -        //scrollIntoCenterView(this.box, null, true);
                                  -        
                                  -        // Display the editor after change its size and position to avoid flickering
                                  -        this.box.style.display = "block";
                                  -        
                                  -        // we need to call input.focus() and input.select() with a timeout, 
                                  -        // otherwise it won't work on all browsers due to timing issues 
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.input.focus();
                                  -            self.input.select();
                                  -        },0);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.box.className = this.originalClassName;
                                  -        
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            this.stopMeasuring();
                                  -
                                  -            collapse(this.target, false);
                                  -
                                  -            if (this.expander.parentNode)
                                  -                this.expander.parentNode.removeChild(this.expander);
                                  -        }
                                  -
                                  -        if (this.box.parentNode)
                                  -        {
                                  -            ///setSelectionRange(this.input, 0, 0);
                                  -            this.input.blur();
                                  -            
                                  -            this.box.parentNode.removeChild(this.box);
                                  -        }
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -        if (!this.fixedWidth)
                                  -            this.textSize = this.measureInputText(this.input.value);
                                  -
                                  -        if (forceAll)
                                  -            this.targetOffset = getClientOffset(this.expander);
                                  -
                                  -        this.updateLayout(false, forceAll);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleter: function()
                                  -    {
                                  -        if (!this.autoCompleter)
                                  -        {
                                  -            this.autoCompleter = new Firebug.AutoCompleter(null,
                                  -                bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this),
                                  -                true, false);
                                  -        }
                                  -
                                  -        return this.autoCompleter;
                                  -    },
                                  -
                                  -    completeValue: function(amt)
                                  -    {
                                  -        //console.log("completeValue");
                                  -        
                                  -        var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); 
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            Firebug.Editor.update(true);
                                  -            
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -        else
                                  -            this.incrementValue(amt);
                                  -    },
                                  -
                                  -    incrementValue: function(amt)
                                  -    {
                                  -        var value = this.input.value;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        if (isIE)
                                  -            var start = getInputSelectionStart(this.input), end = start;
                                  -        else
                                  -            var start = this.input.selectionStart, end = this.input.selectionEnd;
                                  -
                                  -        //debugger;
                                  -        var range = this.getAutoCompleteRange(value, start);
                                  -        if (!range || range.type != "int")
                                  -            range = {start: 0, end: value.length-1};
                                  -
                                  -        var expr = value.substr(range.start, range.end-range.start+1);
                                  -        preExpr = value.substr(0, range.start);
                                  -        postExpr = value.substr(range.end+1);
                                  -
                                  -        // See if the value is an integer, and if so increment it
                                  -        var intValue = parseInt(expr);
                                  -        if (!!intValue || intValue == 0)
                                  -        {
                                  -            var m = /\d+/.exec(expr);
                                  -            var digitPost = expr.substr(m.index+m[0].length);
                                  -
                                  -            var completion = intValue-amt;
                                  -            this.input.value = preExpr + completion + digitPost + postExpr;
                                  -            
                                  -            setSelectionRange(this.input, start, end);
                                  -
                                  -            Firebug.Editor.update(true);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        //console.log("onKeyPress", event);
                                  -        if (event.keyCode == 27 && !this.completeAsYouType)
                                  -        {
                                  -            var reverted = this.getAutoCompleter().revert(this.input);
                                  -            if (reverted)
                                  -                cancelEvent(event);
                                  -        }
                                  -        else if (event.charCode && this.advanceToNext(this.target, event.charCode))
                                  -        {
                                  -            Firebug.Editor.tabNextEditor();
                                  -            cancelEvent(event);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57)
                                  -                && event.charCode != 45 && event.charCode != 46)
                                  -                FBL.cancelEvent(event);
                                  -            else
                                  -            {
                                  -                // If the user backspaces, don't autocomplete after the upcoming input event
                                  -                this.ignoreNextInput = event.keyCode == 8;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onOverflow: function()
                                  -    {
                                  -        this.updateLayout(false, false, 3);
                                  -    },
                                  -
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        //console.log("onKeyDown", event.keyCode);
                                  -        if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8)
                                  -        {
                                  -            this.keyDownPressed = true;
                                  -        }
                                  -    },
                                  -    
                                  -    onInput: function(event)
                                  -    {
                                  -        //debugger;
                                  -        
                                  -        // skip not relevant onpropertychange calls on IE
                                  -        if (isIE)
                                  -        {
                                  -            if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) 
                                  -                return;
                                  -            
                                  -            this.keyDownPressed = false;
                                  -        }
                                  -        
                                  -        //console.log("onInput", event);
                                  -        //console.trace();
                                  -        
                                  -        var selectRangeCallback;
                                  -        
                                  -        if (this.ignoreNextInput)
                                  -        {
                                  -            this.ignoreNextInput = false;
                                  -            this.getAutoCompleter().reset();
                                  -        }
                                  -        else if (this.completeAsYouType)
                                  -            selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false);
                                  -        else
                                  -            this.getAutoCompleter().reset();
                                  -
                                  -        Firebug.Editor.update();
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var popup = $("fbInlineEditorPopup");
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        var menu = this.getContextMenuItems(target);
                                  -        if (menu)
                                  -        {
                                  -            for (var i = 0; i < menu.length; ++i)
                                  -                FBL.createMenuItem(popup, menu[i]);
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -
                                  -        popup.openPopupAtScreen(event.screenX, event.screenY, true);
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateLayout: function(initial, forceAll, extraWidth)
                                  -    {
                                  -        if (this.fixedWidth)
                                  -        {
                                  -            this.box.style.left = (this.targetOffset.x) + "px";
                                  -            this.box.style.top = (this.targetOffset.y) + "px";
                                  -
                                  -            var w = this.target.offsetWidth;
                                  -            var h = this.target.offsetHeight;
                                  -            this.input.style.width = w + "px";
                                  -            this.input.style.height = (h-3) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            if (initial || forceAll)
                                  -            {
                                  -                this.box.style.left = this.targetOffset.x + "px";
                                  -                this.box.style.top = this.targetOffset.y + "px";
                                  -            }
                                  -
                                  -            var approxTextWidth = this.textSize.width;
                                  -            var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x)
                                  -                - this.outerMargin;
                                  -
                                  -            var wrapped = initial
                                  -                ? this.noWrap && this.targetSize.height > this.textSize.height+3
                                  -                : this.noWrap && approxTextWidth > maxWidth;
                                  -
                                  -            if (wrapped)
                                  -            {
                                  -                var style = isIE ?
                                  -                        this.target.currentStyle :
                                  -                        this.target.ownerDocument.defaultView.getComputedStyle(this.target, "");
                                  -                
                                  -                targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight);
                                  -
                                  -                // Make the width fit the remaining x-space from the offset to the far right
                                  -                approxTextWidth = maxWidth - targetMargin;
                                  -
                                  -                this.input.style.width = "100%";
                                  -                this.box.style.width = approxTextWidth + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                // Make the input one character wider than the text value so that
                                  -                // typing does not ever cause the textbox to scroll
                                  -                var charWidth = this.measureInputText('m').width;
                                  -
                                  -                // Sometimes we need to make the editor a little wider, specifically when
                                  -                // an overflow happens, otherwise it will scroll off some text on the left
                                  -                if (extraWidth)
                                  -                    charWidth *= extraWidth;
                                  -
                                  -                var inputWidth = approxTextWidth + charWidth;
                                  -
                                  -                if (initial)
                                  -                {
                                  -                    if (isIE)
                                  -                    {
                                  -                        // TODO: xxxpedro
                                  -                        var xDiff = 13;
                                  -                        this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                    }
                                  -                    else
                                  -                        this.box.style.width = "auto";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // TODO: xxxpedro
                                  -                    var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth;
                                  -                    this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                }
                                  -
                                  -                this.input.style.width = inputWidth + "px";
                                  -            }
                                  -
                                  -            this.expander.style.width = approxTextWidth + "px";
                                  -            this.expander.style.height = Math.max(this.textSize.height-3,0) + "px";
                                  -        }
                                  -
                                  -        if (forceAll)
                                  -            scrollIntoCenterView(this.box, null, true);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Autocompletion
                                  -
                                  -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive)
                                  -{
                                  -    var candidates = null;
                                  -    var originalValue = null;
                                  -    var originalOffset = -1;
                                  -    var lastExpr = null;
                                  -    var lastOffset = -1;
                                  -    var exprOffset = 0;
                                  -    var lastIndex = 0;
                                  -    var preParsed = null;
                                  -    var preExpr = null;
                                  -    var postExpr = null;
                                  -
                                  -    this.revert = function(textBox)
                                  -    {
                                  -        if (originalOffset != -1)
                                  -        {
                                  -            textBox.value = originalValue;
                                  -            
                                  -            setSelectionRange(textBox, originalOffset, originalOffset);
                                  -
                                  -            this.reset();
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            this.reset();
                                  -            return false;
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        candidates = null;
                                  -        originalValue = null;
                                  -        originalOffset = -1;
                                  -        lastExpr = null;
                                  -        lastOffset = 0;
                                  -        exprOffset = 0;
                                  -    };
                                  -
                                  -    this.complete = function(context, textBox, cycle, reverse)
                                  -    {
                                  -        //console.log("complete", context, textBox, cycle, reverse);
                                  -        // TODO: xxxpedro important port to firebug (variable leak)
                                  -        //var value = lastValue = textBox.value;
                                  -        var value = textBox.value;
                                  -        
                                  -        //var offset = textBox.selectionStart;
                                  -        var offset = getInputSelectionStart(textBox);
                                  -        
                                  -        // The result of selectionStart() in Safari/Chrome is 1 unit less than the result
                                  -        // in Firefox. Therefore, we need to manually adjust the value here.
                                  -        if (isSafari && !cycle && offset >= 0) offset++;
                                  -        
                                  -        if (!selectMode && originalOffset != -1)
                                  -            offset = originalOffset;
                                  -
                                  -        if (!candidates || !cycle || offset != lastOffset)
                                  -        {
                                  -            originalOffset = offset;
                                  -            originalValue = value;
                                  -
                                  -            // Find the part of the string that will be parsed
                                  -            var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0;
                                  -            preParsed = value.substr(0, parseStart);
                                  -            var parsed = value.substr(parseStart);
                                  -
                                  -            // Find the part of the string that is being completed
                                  -            var range = getRange ? getRange(parsed, offset-parseStart, context) : null;
                                  -            if (!range)
                                  -                range = {start: 0, end: parsed.length-1 };
                                  -
                                  -            var expr = parsed.substr(range.start, range.end-range.start+1);
                                  -            preExpr = parsed.substr(0, range.start);
                                  -            postExpr = parsed.substr(range.end+1);
                                  -            exprOffset = parseStart + range.start;
                                  -
                                  -            if (!cycle)
                                  -            {
                                  -                if (!expr)
                                  -                    return;
                                  -                else if (lastExpr && lastExpr.indexOf(expr) != 0)
                                  -                {
                                  -                    candidates = null;
                                  -                }
                                  -                else if (lastExpr && lastExpr.length >= expr.length)
                                  -                {
                                  -                    candidates = null;
                                  -                    lastExpr = expr;
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            lastExpr = expr;
                                  -            lastOffset = offset;
                                  -
                                  -            var searchExpr;
                                  -
                                  -            // Check if the cursor is at the very right edge of the expression, or
                                  -            // somewhere in the middle of it
                                  -            if (expr && offset != parseStart+range.end+1)
                                  -            {
                                  -                if (cycle)
                                  -                {
                                  -                    // We are in the middle of the expression, but we can
                                  -                    // complete by cycling to the next item in the values
                                  -                    // list after the expression
                                  -                    offset = range.start;
                                  -                    searchExpr = expr;
                                  -                    expr = "";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // We can't complete unless we are at the ridge edge
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            var values = evaluator(preExpr, expr, postExpr, context);
                                  -            if (!values)
                                  -                return;
                                  -
                                  -            if (expr)
                                  -            {
                                  -                // Filter the list of values to those which begin with expr. We
                                  -                // will then go on to complete the first value in the resulting list
                                  -                candidates = [];
                                  -
                                  -                if (caseSensitive)
                                  -                {
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.indexOf(expr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = caseSensitive ? expr : expr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -
                                  -                lastIndex = reverse ? candidates.length-1 : 0;
                                  -            }
                                  -            else if (searchExpr)
                                  -            {
                                  -                var searchIndex = -1;
                                  -
                                  -                // Find the first instance of searchExpr in the values list. We
                                  -                // will then complete the string that is found
                                  -                if (caseSensitive)
                                  -                {
                                  -                    searchIndex = values.indexOf(expr);
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = searchExpr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                        {
                                  -                            searchIndex = i;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                // Nothing found, so there's nothing to complete to
                                  -                if (searchIndex == -1)
                                  -                    return this.reset();
                                  -
                                  -                expr = searchExpr;
                                  -                candidates = cloneArray(values);
                                  -                lastIndex = searchIndex;
                                  -            }
                                  -            else
                                  -            {
                                  -                expr = "";
                                  -                candidates = [];
                                  -                for (var i = 0; i < values.length; ++i)
                                  -                {
                                  -                    if (values[i].substr)
                                  -                        candidates.push(values[i]);
                                  -                }
                                  -                lastIndex = -1;
                                  -            }
                                  -        }
                                  -
                                  -        if (cycle)
                                  -        {
                                  -            expr = lastExpr;
                                  -            lastIndex += reverse ? -1 : 1;
                                  -        }
                                  -
                                  -        if (!candidates.length)
                                  -            return;
                                  -
                                  -        if (lastIndex >= candidates.length)
                                  -            lastIndex = 0;
                                  -        else if (lastIndex < 0)
                                  -            lastIndex = candidates.length-1;
                                  -
                                  -        var completion = candidates[lastIndex];
                                  -        var preCompletion = expr.substr(0, offset-exprOffset);
                                  -        var postCompletion = completion.substr(offset-exprOffset);
                                  -
                                  -        textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr;
                                  -        var offsetEnd = preParsed.length + preExpr.length + completion.length;
                                  -        
                                  -        // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange()
                                  -        // is working well.
                                  -        /*
                                  -        if (textBox.setSelectionRange)
                                  -        {
                                  -            // we must select the range with a timeout, otherwise the text won't
                                  -            // be properly selected (because after this function executes, the editor's
                                  -            // input will be resized to fit the whole text)
                                  -            setTimeout(function(){
                                  -                if (selectMode)
                                  -                    textBox.setSelectionRange(offset, offsetEnd);
                                  -                else
                                  -                    textBox.setSelectionRange(offsetEnd, offsetEnd);
                                  -            },0);
                                  -        }
                                  -        /**/
                                  -        
                                  -        // we must select the range with a timeout, otherwise the text won't
                                  -        // be properly selected (because after this function executes, the editor's
                                  -        // input will be resized to fit the whole text)
                                  -        /*
                                  -        setTimeout(function(){
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        },0);
                                  -                
                                  -        return true;
                                  -        /**/
                                  -        
                                  -        // The editor text should be selected only after calling the editor.update() 
                                  -        // in Safari/Chrome, otherwise the text won't be selected. So, we're returning
                                  -        // a function to be called later (in the proper time for all browsers).
                                  -        //
                                  -        // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid
                                  -        // returning a closure. the complete() function seems to be called only twice in
                                  -        // editor.js. See if this function is called anywhere else (like css.js for example).
                                  -        return function(){
                                  -            //console.log("autocomplete ", textBox, offset, offsetEnd);
                                  -            
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        };
                                  -        /**/
                                  -    };
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getDefaultEditor = function getDefaultEditor(panel)
                                  -{
                                  -    if (!defaultEditor)
                                  -    {
                                  -        var doc = panel.document;
                                  -        defaultEditor = new Firebug.InlineEditor(doc);
                                  -    }
                                  -
                                  -    return defaultEditor;
                                  -}
                                  -
                                  -/**
                                  - * An outsider is the first element matching the stepper element that
                                  - * is not an child of group. Elements tagged with insertBefore or insertAfter
                                  - * classes are also excluded from these results unless they are the sibling
                                  - * of group, relative to group's parent editGroup. This allows for the proper insertion
                                  - * rows when groups are nested.
                                  - */
                                  -var getOutsider = function getOutsider(element, group, stepper)
                                  -{
                                  -    var parentGroup = getAncestorByClass(group.parentNode, "editGroup");
                                  -    var next;
                                  -    do
                                  -    {
                                  -        next = stepper(next || element);
                                  -    }
                                  -    while (isAncestor(next, group) || isGroupInsert(next, parentGroup));
                                  -
                                  -    return next;
                                  -}
                                  -
                                  -var isGroupInsert = function isGroupInsert(next, group)
                                  -{
                                  -    return (!group || isAncestor(next, group))
                                  -        && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter"));
                                  -}
                                  -
                                  -var getNextOutsider = function getNextOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getNextByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getPreviousOutsider = function getPreviousOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getInlineParent = function getInlineParent(element)
                                  -{
                                  -    var lastInline = element;
                                  -    for (; element; element = element.parentNode)
                                  -    {
                                  -        //var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        var s = isIE ?
                                  -                element.currentStyle :
                                  -                element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        
                                  -        if (s.display != "inline")
                                  -            return lastInline;
                                  -        else
                                  -            lastInline = element;
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -var insertTab = function insertTab()
                                  -{
                                  -    insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Editor);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (Env.Options.disableXHRListener)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -// XHRSpy
                                  -    
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// XMLHttpRequestWrapper
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal variables
                                  -    
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal methods
                                  -    
                                  -    var updateSelfPropertiesIgnore = {
                                  -        abort: 1,
                                  -        channel: 1,
                                  -        getAllResponseHeaders: 1,
                                  -        getInterface: 1,
                                  -        getResponseHeader: 1,
                                  -        mozBackgroundRequest: 1,
                                  -        multipart: 1,
                                  -        onreadystatechange: 1,
                                  -        open: 1,
                                  -        send: 1,
                                  -        setRequestHeader: 1
                                  -    };
                                  -    
                                  -    var updateSelfProperties = function()
                                  -    {
                                  -        if (supportsXHRIterator)
                                  -        {
                                  -            for (var propName in xhrRequest)
                                  -            {
                                  -                if (propName in updateSelfPropertiesIgnore)
                                  -                    continue;
                                  -                
                                  -                try
                                  -                {
                                  -                    var propValue = xhrRequest[propName];
                                  -                    
                                  -                    if (propValue && !isFunction(propValue))
                                  -                        self[propName] = propValue;
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    //console.log(propName, E.message);
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // will fail to read these xhrRequest properties if the request is not completed
                                  -            if (xhrRequest.readyState == 4)
                                  -            {
                                  -                self.status = xhrRequest.status;
                                  -                self.statusText = xhrRequest.statusText;
                                  -                self.responseText = xhrRequest.responseText;
                                  -                self.responseXML = xhrRequest.responseXML;
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var updateXHRPropertiesIgnore = {
                                  -        channel: 1,
                                  -        onreadystatechange: 1,
                                  -        readyState: 1,
                                  -        responseBody: 1,
                                  -        responseText: 1,
                                  -        responseXML: 1,
                                  -        status: 1,
                                  -        statusText: 1,
                                  -        upload: 1
                                  -    };
                                  -    
                                  -    var updateXHRProperties = function()
                                  -    {
                                  -        for (var propName in self)
                                  -        {
                                  -            if (propName in updateXHRPropertiesIgnore)
                                  -                continue;
                                  -            
                                  -            try
                                  -            {
                                  -                var propValue = self[propName];
                                  -                
                                  -                if (propValue && !xhrRequest[propName])
                                  -                {
                                  -                    xhrRequest[propName] = propValue;
                                  -                }
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                //console.log(propName, E.message);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var logXHR = function() 
                                  -    {
                                  -        var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR);
                                  -        
                                  -        if (row)
                                  -        {
                                  -            setClass(row, "loading");
                                  -            spy.logRow = row;
                                  -        }
                                  -    };
                                  -    
                                  -    var finishXHR = function() 
                                  -    {
                                  -        var duration = new Date().getTime() - reqStartTS;
                                  -        var success = xhrRequest.status == 200;
                                  -        
                                  -        var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -        var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : [];
                                  -        var reHeader = /^(\S+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, l=responses.length; i<l; i++)
                                  -        {
                                  -            var text = responses[i];
                                  -            var match = text.match(reHeader);
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var name = match[1];
                                  -                var value = match[2];
                                  -                
                                  -                // update the spy mimeType property so we can detect when to show 
                                  -                // custom response viewers (such as HTML, XML or JSON viewer)
                                  -                if (name == "Content-Type")
                                  -                    spy.mimeType = value;
                                  -                
                                  -                /*
                                  -                if (name == "Last Modified")
                                  -                {
                                  -                    if (!spy.cacheEntry)
                                  -                        spy.cacheEntry = [];
                                  -                    
                                  -                    spy.cacheEntry.push({
                                  -                       name: [name],
                                  -                       value: [value]
                                  -                    });
                                  -                }
                                  -                /**/
                                  -                
                                  -                spy.responseHeaders.push({
                                  -                   name: [name],
                                  -                   value: [value]
                                  -                });
                                  -            }
                                  -        }
                                  -            
                                  -        with({
                                  -            row: spy.logRow, 
                                  -            status: xhrRequest.status == 0 ? 
                                  -                        // if xhrRequest.status == 0 then accessing xhrRequest.statusText
                                  -                        // will cause an error, so we must handle this case (Issue 3504)
                                  -                        "" : xhrRequest.status + " " + xhrRequest.statusText, 
                                  -            time: duration,
                                  -            success: success
                                  -        })
                                  -        {
                                  -            setTimeout(function(){
                                  -                
                                  -                spy.responseText = xhrRequest.responseText;
                                  -                
                                  -                // update row information to avoid "ethernal spinning gif" bug in IE 
                                  -                row = row || spy.logRow;
                                  -                
                                  -                // if chrome document is not loaded, there will be no row yet, so just ignore
                                  -                if (!row) return;
                                  -                
                                  -                // update the XHR representation data
                                  -                handleRequestStatus(success, status, time);
                                  -                
                                  -            },200);
                                  -        }
                                  -        
                                  -        spy.loaded = true;
                                  -        /*
                                  -        // commented because they are being updated by the updateSelfProperties() function
                                  -        self.status = xhrRequest.status;
                                  -        self.statusText = xhrRequest.statusText;
                                  -        self.responseText = xhrRequest.responseText;
                                  -        self.responseXML = xhrRequest.responseXML;
                                  -        /**/
                                  -        updateSelfProperties();
                                  -    };
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log(["onreadystatechange", xhrRequest.readyState, xhrRequest.readyState == 4 && xhrRequest.status]);
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            finishXHR();
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    // update the XHR representation data
                                  -    var handleRequestStatus = function(success, status, time)
                                  -    {
                                  -        var row = spy.logRow;
                                  -        FBL.removeClass(row, "loading");
                                  -        
                                  -        if (!success)
                                  -            FBL.setClass(row, "error");
                                  -        
                                  -        var item = FBL.$$(".spyStatus", row)[0];
                                  -        item.innerHTML = status;
                                  -        
                                  -        if (time)
                                  -        {
                                  -            var item = FBL.$$(".spyTime", row)[0];
                                  -            item.innerHTML = time + "ms";
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public properties and handlers
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public methods
                                  -    
                                  -    this.open = function(method, url, async, user, password)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        updateSelfProperties();
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        spy.urlParams = parseURLParamsArray(url);
                                  -        
                                  -        try
                                  -        {
                                  -            // xhrRequest.open.apply may not be available in IE
                                  -            if (supportsApply)
                                  -                xhrRequest.open.apply(xhrRequest, arguments);
                                  -            else
                                  -                xhrRequest.open(method, url, async, user, password);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        spy.data = data;
                                  -        
                                  -        reqStartTS = new Date().getTime();
                                  -        
                                  -        updateXHRProperties();
                                  -        
                                  -        try
                                  -        {
                                  -            xhrRequest.send(data);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            // TODO: xxxpedro XHR throws or not?
                                  -            //throw e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            logXHR();
                                  -            
                                  -            if (!spy.async)
                                  -            {
                                  -                self.readyState = xhrRequest.readyState;
                                  -                
                                  -                // sometimes an error happens when calling finishXHR()
                                  -                // Issue 3422: Firebug Lite breaks Google Instant Search
                                  -                try
                                  -                {
                                  -                    finishXHR();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        return xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        xhrRequest.abort();
                                  -        updateSelfProperties();
                                  -        handleRequestStatus(false, "Aborted");
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    /**/
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Clone XHR object
                                  -
                                  -    // xhrRequest.open.apply not available in IE and will throw an error in 
                                  -    // IE6 by simply reading xhrRequest.open so we must sniff it
                                  -    var supportsApply = !isIE6 &&
                                  -            xhrRequest && 
                                  -            xhrRequest.open && 
                                  -            typeof xhrRequest.open.apply != "undefined";
                                  -    
                                  -    var numberOfXHRProperties = 0;
                                  -    for (var propName in xhrRequest)
                                  -    {
                                  -        numberOfXHRProperties++;
                                  -        
                                  -        if (propName in updateSelfPropertiesIgnore)
                                  -            continue;
                                  -        
                                  -        try
                                  -        {
                                  -            var propValue = xhrRequest[propName];
                                  -            
                                  -            if (isFunction(propValue))
                                  -            {
                                  -                if (typeof self[propName] == "undefined")
                                  -                {
                                  -                    this[propName] = (function(name, xhr){
                                  -                    
                                  -                        return supportsApply ?
                                  -                            // if the browser supports apply 
                                  -                            function()
                                  -                            {
                                  -                                return xhr[name].apply(xhr, arguments);
                                  -                            }
                                  -                            :
                                  -                            function(a,b,c,d,e)
                                  -                            {
                                  -                                return xhr[name](a,b,c,d,e);
                                  -                            };
                                  -                    
                                  -                    })(propName, xhrRequest);
                                  -                } 
                                  -            }
                                  -            else
                                  -                this[propName] = propValue;
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            //console.log(propName, E.message);
                                  -        }
                                  -    }
                                  -    
                                  -    // IE6 does not support for (var prop in XHR)
                                  -    var supportsXHRIterator = numberOfXHRProperties > 0;
                                  -    
                                  -    /**/
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ActiveXObject Wrapper (IE6 only)
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    _ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new _ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Register the XMLHttpRequestWrapper for non-IE6 browsers
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    };
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -
                                  -FBL.getNativeXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new _XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new _ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -        this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]);
                                  -        this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]);
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                var postText = $$(".netInfoPostText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                var putText = $$(".netInfoPutText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else ///if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            
                                  -            ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0];
                                  -            
                                  -            ///iframe.contentWindow.document.body.innerHTML = text;
                                  -            
                                  -            // TODO: xxxpedro net - remove scripts
                                  -            var reScript = /<script(.|\s)*?\/script>/gi;
                                  -            
                                  -            text = text.replace(reScript, "");
                                  -                
                                  -            iframe.contentWindow.document.write(text);
                                  -            iframe.contentWindow.document.close();
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0];
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0];
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        ///var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        var sourceNode = $$(".source", node)[0];
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents posted data within request info (the info, which is visible when
                                  - * a request entry is expanded. This template renders content of the Post tab.
                                  - */
                                  -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/
                                  -{
                                  -    // application/x-www-form-urlencoded
                                  -    paramsTable:
                                  -        TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")},
                                  -                TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
                                  -                    TD({colspan: 3, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parameters"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "application/x-www-form-urlencoded"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // multipart/form-data
                                  -    partsTable:
                                  -        TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parts")},
                                  -                TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role":"presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parts"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "multipart/form-data"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/json
                                  -    jsonTable:
                                  -        TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")},
                                  -            TBODY({"role": "list", "aria-label": $STR("JSON")},
                                  -                TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            ///$STR("jsonviewer.tab.JSON")
                                  -                            $STR("JSON")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostJSONBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/xml
                                  -    xmlTable:
                                  -        TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")},
                                  -                TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("xmlviewer.tab.XML")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostXMLBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTable:
                                  -        TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Source")},
                                  -                TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostSource"},
                                  -                            $STR("net.label.Source")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceBodyTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                FOR("line", "$param|getParamValueIterator",
                                  -                    CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        return NetInfoBody.getParamValueIterator(param);
                                  -    },
                                  -
                                  -    render: function(context, parentNode, file)
                                  -    {
                                  -        //debugger;
                                  -        var spy = getAncestorByClass(parentNode, "spyHead");
                                  -        var spyObject = spy.repObject;
                                  -        var data = spyObject.data;
                                  -        
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        var contentType = file.mimeType;
                                  -        
                                  -        ///var text = Utils.getPostText(file, context, true);
                                  -        ///if (text == undefined)
                                  -        ///    return;
                                  -
                                  -        ///if (Utils.isURLEncodedRequest(file, context))
                                  -        // fake Utils.isURLEncodedRequest identification
                                  -        if (contentType && contentType == "application/x-www-form-urlencoded" ||
                                  -            data && data.indexOf("=") != -1) 
                                  -        {
                                  -            ///var lines = text.split("\n");
                                  -            ///var params = parseURLEncodedText(lines[lines.length-1]);
                                  -            var params = parseURLEncodedTextArray(data);
                                  -            if (params)
                                  -                this.insertParameters(parentNode, params);
                                  -        }
                                  -
                                  -        ///if (Utils.isMultiPartRequest(file, context))
                                  -        ///{
                                  -        ///    var data = this.parseMultiPartText(file, context);
                                  -        ///    if (data)
                                  -        ///        this.insertParts(parentNode, data);
                                  -        ///}
                                  -
                                  -        // moved to the top
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -
                                  -        ///if (Firebug.JSONViewerModel.isJSON(contentType))
                                  -        var jsonData = {
                                  -            responseText: data
                                  -        };
                                  -        
                                  -        if (Firebug.JSONViewerModel.isJSON(contentType, data))
                                  -            ///this.insertJSON(parentNode, file, context);
                                  -            this.insertJSON(parentNode, jsonData, context);
                                  -
                                  -        ///if (Firebug.XMLViewerModel.isXML(contentType))
                                  -        ///    this.insertXML(parentNode, file, context);
                                  -
                                  -        ///var postText = Utils.getPostText(file, context);
                                  -        ///postText = Utils.formatPostText(postText);
                                  -        var postText = data;
                                  -        if (postText)
                                  -            this.insertSource(parentNode, postText);
                                  -    },
                                  -
                                  -    insertParameters: function(parentNode, params)
                                  -    {
                                  -        if (!params || !params.length)
                                  -            return;
                                  -
                                  -        var paramTable = this.paramsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostParamsTitle", paramTable)[0];
                                  -        //var paramTable = this.paramsTable.append(null, parentNode);
                                  -        //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
                                  -        
                                  -        var tbody = paramTable.getElementsByTagName("tbody")[0];
                                  -        
                                  -        NetInfoBody.headerDataTag.insertRows({headers: params}, row);
                                  -    },
                                  -
                                  -    insertParts: function(parentNode, data)
                                  -    {
                                  -        if (!data.params || !data.params.length)
                                  -            return;
                                  -
                                  -        var partsTable = this.partsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostPartsTitle", paramTable)[0];
                                  -        //var partsTable = this.partsTable.append(null, parentNode);
                                  -        //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
                                  -    },
                                  -
                                  -    insertJSON: function(parentNode, file, context)
                                  -    {
                                  -        ///var text = Utils.getPostText(file, context);
                                  -        var text = file.responseText;
                                  -        ///var data = parseJSONString(text, "http://" + file.request.originalURI.host);
                                  -        var data = parseJSONString(text);
                                  -        if (!data)
                                  -            return;
                                  -
                                  -        ///var jsonTable = this.jsonTable.append(null, parentNode);
                                  -        var jsonTable = this.jsonTable.append({}, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0];
                                  -
                                  -        if (!this.toggles)
                                  -            this.toggles = {};
                                  -
                                  -        Firebug.DOMPanel.DirTable.tag.replace(
                                  -            {object: data, toggles: this.toggles}, jsonBody);
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -
                                  -        var jsonTable = this.xmlTable.append(null, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0];
                                  -
                                  -        Firebug.XMLViewerModel.insertXML(jsonBody, text);
                                  -    },
                                  -
                                  -    insertSource: function(parentNode, text)
                                  -    {
                                  -        var sourceTable = this.sourceTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostSourceTitle", sourceTable)[0];
                                  -        //var sourceTable = this.sourceTable.append(null, parentNode);
                                  -        //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
                                  -
                                  -        var param = {value: [text]};
                                  -        this.sourceBodyTag.insertRows({param: param}, row);
                                  -    },
                                  -
                                  -    parseMultiPartText: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text == undefined)
                                  -            return null;
                                  -
                                  -        FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
                                  -
                                  -        var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
                                  -
                                  -        var divider = "\r\n\r\n";
                                  -        var bodyStart = text.indexOf(divider);
                                  -        var body = text.substr(bodyStart + divider.length);
                                  -
                                  -        var postData = {};
                                  -        postData.mimeType = "multipart/form-data";
                                  -        postData.params = [];
                                  -
                                  -        var parts = body.split("--" + boundary);
                                  -        for (var i=0; i<parts.length; i++)
                                  -        {
                                  -            var part = parts[i].split(divider);
                                  -            if (part.length != 2)
                                  -                continue;
                                  -
                                  -            var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -            postData.params.push({
                                  -                name: (m && m.length > 1) ? m[1] : "",
                                  -                value: trim(part[1])
                                  -            });
                                  -        }
                                  -
                                  -        return postData;
                                  -    }
                                  -});
                                  -
                                  -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a;};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy, logRow);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow)
                                  -{
                                  -    if (!spy.logRow && logRow)
                                  -        spy.logRow = logRow;
                                  -    
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// List of JSON content types.
                                  -var contentTypes =
                                  -{
                                  -    // TODO: create issue: jsonViewer will not try to evaluate the contents of the requested file 
                                  -    // if the content-type is set to "text/plain"
                                  -    //"text/plain": 1,
                                  -    "text/javascript": 1,
                                  -    "text/x-javascript": 1,
                                  -    "text/json": 1,
                                  -    "text/x-json": 1,
                                  -    "application/json": 1,
                                  -    "application/x-json": 1,
                                  -    "application/javascript": 1,
                                  -    "application/x-javascript": 1,
                                  -    "application/json-rpc": 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -Firebug.JSONViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "jsonViewer",
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -
                                  -        // Used by Firebug.DOMPanel.DirTable domplate.
                                  -        this.toggles = {};
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_JSONVIEWER)
                                  -            FBTrace.sysout("jsonviewer.initTabBody", infoBox);
                                  -
                                  -        // Let listeners to parse the JSON.
                                  -        dispatch(this.fbListeners, "onParseJSON", [file]);
                                  -
                                  -        // The JSON is still no there, try to parse most common cases.
                                  -        if (!file.jsonObject)
                                  -        {
                                  -            ///if (this.isJSON(safeGetContentType(file.request), file.responseText))
                                  -            if (this.isJSON(file.mimeType, file.responseText))
                                  -                file.jsonObject = this.parseJSON(file);
                                  -        }
                                  -
                                  -        // The jsonObject is created so, the JSON tab can be displayed.
                                  -        if (file.jsonObject && hasProperties(file.jsonObject))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
                                  -                ///$STR("jsonviewer.tab.JSON"));
                                  -                $STR("JSON"));
                                  -
                                  -            if (FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
                                  -                    (typeof(file.jsonObject) != "undefined"), file.jsonObject);
                                  -        }
                                  -    },
                                  -
                                  -    isJSON: function(contentType, data)
                                  -    {
                                  -        // Workaround for JSON responses without proper content type
                                  -        // Let's consider all responses starting with "{" as JSON. In the worst
                                  -        // case there will be an exception when parsing. This means that no-JSON
                                  -        // responses (and post data) (with "{") can be parsed unnecessarily,
                                  -        // which represents a little overhead, but this happens only if the request
                                  -        // is actually expanded by the user in the UI (Net & Console panels).
                                  -        
                                  -        ///var responseText = data ? trimLeft(data) : null;
                                  -        ///if (responseText && responseText.indexOf("{") == 0)
                                  -        ///    return true;
                                  -        var responseText = data ? trim(data) : null;
                                  -        if (responseText && responseText.indexOf("{") == 0)
                                  -            return true;
                                  -
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        contentType = contentType.split(";")[0];
                                  -        contentType = trim(contentType);
                                  -        return contentTypes[contentType];
                                  -    },
                                  -
                                  -    // Update listener for TabView
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
                                  -        var tabBody = $$(".netInfoJSONText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        if (file.jsonObject) {
                                  -            Firebug.DOMPanel.DirTable.tag.replace(
                                  -                 {object: file.jsonObject, toggles: this.toggles}, tabBody);
                                  -        }
                                  -    },
                                  -
                                  -    parseJSON: function(file)
                                  -    {
                                  -        var jsonString = new String(file.responseText);
                                  -        ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
                                  -        return parseJSONString(jsonString);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.JSONViewerModel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -// List of XML related content types.
                                  -var xmlContentTypes =
                                  -[
                                  -    "text/xml",
                                  -    "application/xml",
                                  -    "application/xhtml+xml",
                                  -    "application/rss+xml",
                                  -    "application/atom+xml",,
                                  -    "application/vnd.mozilla.maybe.feed",
                                  -    "application/rdf+xml",
                                  -    "application/vnd.mozilla.xul+xml"
                                  -];
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -/**
                                  - * @module Implements viewer for XML based network responses. In order to create a new
                                  - * tab wihin network request detail, a listener is registered into
                                  - * <code>Firebug.NetMonitor.NetInfoBody</code> object.
                                  - */
                                  -Firebug.XMLViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "xmlViewer",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.shutdown.apply(this, arguments);
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    /**
                                  -     * Check response's content-type and if it's a XML, create a new tab with XML preview.
                                  -     */
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.initTabBody", infoBox);
                                  -
                                  -        // If the response is XML let's display a pretty preview.
                                  -        ///if (this.isXML(safeGetContentType(file.request)))
                                  -        if (this.isXML(file.mimeType, file.responseText))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
                                  -                ///$STR("xmlviewer.tab.XML"));
                                  -                $STR("XML"));
                                  -
                                  -            if (FBTrace.DBG_XMLVIEWER)
                                  -                FBTrace.sysout("xmlviewer.initTabBody; XML response available");
                                  -        }
                                  -    },
                                  -
                                  -    isXML: function(contentType)
                                  -    {
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        // Look if the response is XML based.
                                  -        for (var i=0; i<xmlContentTypes.length; i++)
                                  -        {
                                  -            if (contentType.indexOf(xmlContentTypes[i]) == 0)
                                  -                return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Parse XML response and render pretty printed preview.
                                  -     */
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
                                  -        var tabBody = $$(".netInfoXMLText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoXMLTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        this.insertXML(tabBody, Firebug.NetMonitor.Utils.getResponseText(file, context));
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, text)
                                  -    {
                                  -        var xmlText = text.replace(/^\s*<?.+?>\s*/, "");
                                  -        
                                  -        var div = parentNode.ownerDocument.createElement("div");
                                  -        div.innerHTML = xmlText;
                                  -        
                                  -        var root = div.getElementsByTagName("*")[0];
                                  -    
                                  -        /***
                                  -        var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
                                  -        var doc = parser.parseFromString(text, "text/xml");
                                  -        var root = doc.documentElement;
                                  -
                                  -        // Error handling
                                  -        var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
                                  -        if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
                                  -        {
                                  -            this.ParseError.tag.replace({error: {
                                  -                message: root.firstChild.nodeValue,
                                  -                source: root.lastChild.textContent
                                  -            }}, parentNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
                                  -
                                  -        // Override getHidden in these templates. The parsed XML documen is
                                  -        // hidden, but we want to display it using 'visible' styling.
                                  -        /*
                                  -        var templates = [
                                  -            Firebug.HTMLPanel.CompleteElement,
                                  -            Firebug.HTMLPanel.Element,
                                  -            Firebug.HTMLPanel.TextElement,
                                  -            Firebug.HTMLPanel.EmptyElement,
                                  -            Firebug.HTMLPanel.XEmptyElement,
                                  -        ];
                                  -
                                  -        var originals = [];
                                  -        for (var i=0; i<templates.length; i++)
                                  -        {
                                  -            originals[i] = templates[i].getHidden;
                                  -            templates[i].getHidden = function() {
                                  -                return "";
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        // Generate XML preview.
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: root}, parentNode);
                                  -        var html = [];
                                  -        Firebug.Reps.appendNode(root, html);
                                  -        parentNode.innerHTML = html.join("");
                                  -        
                                  -
                                  -        /*
                                  -        for (var i=0; i<originals.length; i++)
                                  -            templates[i].getHidden = originals[i];/**/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Domplate
                                  -
                                  -/**
                                  - * @domplate Represents a template for displaying XML parser errors. Used by
                                  - * <code>Firebug.XMLViewerModel</code>.
                                  - */
                                  -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "xmlInfoError"},
                                  -            DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
                                  -            PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
                                  -        ),
                                  -
                                  -    getSource: function(error)
                                  -    {
                                  -        var parts = error.source.split("\n");
                                  -        if (parts.length != 2)
                                  -            return error.source;
                                  -
                                  -        var limit = 50;
                                  -        var column = parts[1].length;
                                  -        if (column >= limit) {
                                  -            parts[0] = "..." + parts[0].substr(column - limit);
                                  -            parts[1] = "..." + parts[1].substr(column - limit);
                                  -        }
                                  -
                                  -        if (parts[0].length > 80)
                                  -            parts[0] = parts[0].substr(0, 80) + "...";
                                  -
                                  -        return parts.join("\n");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.XMLViewerModel);
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -/*
                                  -
                                  -// new offline message handler
                                  -o = {x:1,y:2};
                                  -
                                  -r = Firebug.getRep(o);
                                  -
                                  -r.tag.tag.compile();
                                  -
                                  -outputs = [];
                                  -html = r.tag.renderHTML({object:o}, outputs);
                                  -
                                  -
                                  -// finish rendering the template (the DOM part)
                                  -target = $("build");
                                  -target.innerHTML = html;
                                  -root = target.firstChild;
                                  -
                                  -domArgs = [root, r.tag.context, 0];
                                  -domArgs.push.apply(domArgs, r.tag.domArgs);
                                  -domArgs.push.apply(domArgs, outputs);
                                  -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs);
                                  -
                                  -
                                  - */
                                  -var consoleQueue = [];
                                  -var lastHighlightedObject;
                                  -var FirebugContext = Env.browser;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -            else
                                  -            {
                                  -                consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            //context = FirebugContext;
                                  -            context = Firebug.context;
                                  -
                                  -        /*
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -        /**/
                                  -        
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -        {
                                  -            panel.clear();
                                  -        }
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -    
                                  -    flush: function()
                                  -    {
                                  -        dispatch(this.fbListeners,"flush",[]);
                                  -        
                                  -        for (var i=0, length=consoleQueue.length; i<length; i++)
                                  -        {
                                  -            var args = consoleQueue[i];
                                  -            this.logRow.apply(this, args);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {} // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // TODO: xxxpedro console2
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        if (!Firebug.Inspector) return;
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -    
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        var repObject = object ? object.repObject : null;
                                  -        
                                  -        if (!repObject)
                                  -        {
                                  -            return;
                                  -        }
                                  -        
                                  -        if (hasClass(object, "objectLink-object"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(repObject, true);
                                  -        }
                                  -        else if (hasClass(object, "objectLink-element"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -            Firebug.chrome.getPanel("HTML").select(repObject, true);
                                  -        }
                                  -        
                                  -        /*
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        /**/
                                  -        
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    //searchable: true,
                                  -    //breakable: true,
                                  -    //editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true
                                  -    },
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.document;
                                  -        this.onMouseMove = bind(this.onMouseMove, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //Firebug.Console.injector.install(Firebug.browser.window);
                                  -        
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseMove);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        //consolex.trace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        //removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -    
                                  -var frameCounters = {};
                                  -var traceRecursion = 0;
                                  -
                                  -Firebug.Console.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupCollapsed",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments);};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -                c.firebuglite = Firebug.version;
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox;
                                  -        
                                  -        if (win.console)
                                  -        {
                                  -            if (Env.Options.overrideConsole)
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            else
                                  -                // if there's a console object and overrideConsole is false we should just quit
                                  -                return;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                // try overriding the console object
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                // if something goes wrong create the firebug object instead
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            }
                                  -        }
                                  -        
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebuglite = Firebug.version;    
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        //TODO: xxxpedro console error
                                  -        //if (arguments.length == 1)
                                  -        //{
                                  -        //    logAssert("error", arguments);  // add more info based on stack trace
                                  -        //}
                                  -        //else
                                  -        //{
                                  -            //Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        //}
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        // TODO: xxxpedro console2: is there a better way to find a unique ID for the coun() call?
                                  -        var frameId = "0";
                                  -        //var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!frameCounters)
                                  -                frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -            {
                                  -                return f.getName();
                                  -            }
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -            {
                                  -                return f.name;
                                  -            }
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        traceRecursion++;
                                  -        
                                  -        if (traceRecursion > 1)
                                  -        {
                                  -            traceRecursion--;
                                  -            return;
                                  -        }
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        
                                  -        try
                                  -        {
                                  -            (0)();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var result = e;
                                  -            
                                  -            var stack = 
                                  -                result.stack || // Firefox / Google Chrome 
                                  -                result.stacktrace || // Opera
                                  -                "";
                                  -            
                                  -            stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -            var items = stack.split(/[\n\r]/);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Google Chrome
                                  -            if (FBL.isSafari)
                                  -            {
                                  -                //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -                //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                
                                  -                var reChromeStackItemName = /\s*\($/;
                                  -                var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=4, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos];
                                  -                    var item = items[i];
                                  -                    var match = item.match(reChromeStackItem);
                                  -                    
                                  -                    //Firebug.Console.log("["+ framePos +"]--------------------------");
                                  -                    //Firebug.Console.log(item);
                                  -                    //Firebug.Console.log("................");
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        if (name)
                                  -                        {
                                  -                            name = name.replace(reChromeStackItemName, "");
                                  -                            frame.name = name; 
                                  -                        }
                                  -                        
                                  -                        //Firebug.Console.log("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reChromeStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("url: "+value[1]);
                                  -                            //Firebug.Console.log("line: "+value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            else if (FBL.isFirefox)
                                  -            {
                                  -                // Firefox
                                  -                var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -                var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=2, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos] || {};
                                  -                    var item = items[i];
                                  -                    var match = item.match(reFirefoxStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        
                                  -                        //Firebug.Console.logFormatted("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reFirefoxStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("href: "+ value[1]);
                                  -                            //Firebug.Console.log("line: " + value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.logFormatted([match[2]]);
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            /*
                                  -            else if (FBL.isOpera)
                                  -            {
                                  -                // Opera
                                  -                var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -                var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -                
                                  -                for (var i=0, length=items.length; i<length; i+=2)
                                  -                {
                                  -                    var item = items[i];
                                  -                    
                                  -                    var match = item.match(reOperaStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        //Firebug.Console.log(match[1]);
                                  -                        
                                  -                        var value = match[2].match(reOperaStackItemValue);
                                  -                        
                                  -                        if (value)
                                  -                        {
                                  -                            //Firebug.Console.log(value[1]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                        //Firebug.Console.log("--------------------------");
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -        }
                                  -        
                                  -        //console.log(stack);
                                  -        //console.dir(frames);
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -        
                                  -        traceRecursion--;
                                  -    };
                                  -    
                                  -    this.trace_ok = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return;
                                  -        //return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    var win = Env.browser.window;
                                  -    Firebug.Console.injector.install(win);
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    Firebug.context.persistedState.commandHistory.push(command);
                                  -    Firebug.context.persistedState.commandPointer = 
                                  -        Firebug.context.persistedState.commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        defineCommandLineAPI();
                                  -        
                                  -         Firebug.context.persistedState.commandHistory =  
                                  -             Firebug.context.persistedState.commandHistory || [];
                                  -
                                  -         Firebug.context.persistedState.commandPointer =  
                                  -             Firebug.context.persistedState.commandPointer || -1;
                                  -        
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null;
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API";
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        Firebug.Console.log(commandPrefix + " " + stripNewLines(command), 
                                  -                Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        Firebug.Console.log(result);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.commandPointer > 0 && 
                                  -            Firebug.context.persistedState.commandHistory.length > 0)
                                  -        {
                                  -            this.element.value = Firebug.context.persistedState.commandHistory
                                  -                                    [--Firebug.context.persistedState.commandPointer];
                                  -        }
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = Firebug.context.persistedState.commandHistory.length -1;
                                  -        var i = Firebug.context.persistedState.commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = Firebug.context.persistedState.commandHistory
                                  -                              [++Firebug.context.persistedState.commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++Firebug.context.persistedState.commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        href = href || "";
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        var html = [
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          ];
                                  -        
                                  -        // TODO: xxxpedro ajust to Console2
                                  -        //Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id);
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: function(o)
                                  -    {
                                  -        Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable);
                                  -    },
                                  -
                                  -    dirxml: function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var defineCommandLineAPI = function defineCommandLineAPI()
                                  -{
                                  -    Firebug.CommandLine.API = {};
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -    
                                  -    var stack = FirebugChrome.htmlSelectionStack;
                                  -    if (stack)
                                  -    {
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var cacheID = Firebug.Lite.Cache.ID;
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    // ignores also the cache property injected by firebug
                                  -    ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = ElementCache(node);
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                // FIXME xxxpedro remove this
                                  -                //var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || 
                                  -                        // Issue 4432:  Firebug Lite: HTML is mixed-up with functions
                                  -                        // The problem here is that expando properties added to DOM elements in 
                                  -                        // IE < 9 will behave like DOM attributes and so they'll show up when
                                  -                        // looking at element.attributes list. 
                                  -                        isIE && (browserVersion-0<9) && typeof attr.nodeValue != "string" ||
                                  -                        Firebug.ignoreFirebugElements && ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;');
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="sourceCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = ElementCache.get(uid);
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>';
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && ElementCache(el);
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = ElementCache.get(id).parentNode;
                                  -
                                  -            if (node)
                                  -                id = ElementCache(node);
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (fbPanel1)
                                  -            fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: !Firebug.flexChromeEnabled /* FIXME xxxpedro chromenew */,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        this.panelNode.style.minWidth = "500px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(this.sidePanelBar && !this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("css");
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null;
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        this.panelNode.innerHTML = html.join("");
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.context.persistedState.selectedHTMLElementId =
                                  -                Firebug.context.persistedState.selectedHTMLElementId &&
                                  -                ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId) ?
                                  -                Firebug.context.persistedState.selectedHTMLElementId :
                                  -                ElementCache(Firebug.browser.document.body);
                                  -            
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(Firebug.context.persistedState.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -    },
                                  -    
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var id = ElementCache(object);
                                  -        
                                  -        if (id)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(id);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":";}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null;
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        e.style.borderRadius = "2px";
                                  -
                                  -        selectedElement = e;
                                  -        
                                  -        Firebug.context.persistedState.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = ElementCache.get(e.id);
                                  -        var sidePanelBar = Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -        var selectedSidePanel = sidePanelBar ? sidePanelBar.selectedPanel : null;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            if (selectedSidePanel)
                                  -                selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0);
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = ElementCache.get(uid.value);
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = ElementCache(object);
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = ElementCache(node);
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;');
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            var value = trim(node.nodeValue);
                                  -            if (value)
                                  -                html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -
                                  -Hack:
                                  -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; 
                                  -Firebug.showInfoTips = true; 
                                  -Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -
                                  -/**/
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var maxWidth = 100, maxHeight = 80;
                                  -var infoTipMargin = 10;
                                  -var infoTipWindowPadding = 25;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.InfoTip = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "infoTip",
                                  -    tags: domplate(
                                  -    {
                                  -        infoTipTag: DIV({"class": "infoTip"}),
                                  -
                                  -        colorTag:
                                  -            DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, "&nbsp;"),
                                  -
                                  -        imgTag:
                                  -            DIV({"class": "infoTipImageBox infoTipLoading"},
                                  -                IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
                                  -                    onload: "$onLoadImage"}),
                                  -                IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}),
                                  -                DIV({"class": "infoTipCaption"})
                                  -            ),
                                  -
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget || event.srcElement;
                                  -            ///var bgImg = img.nextSibling;
                                  -            ///if (!bgImg)
                                  -            ///    return; // Sometimes gets called after element is dead
                                  -
                                  -            ///var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -            
                                  -            /// TODO: xxxpedro infoTip hack
                                  -            var caption = getElementByClass(innerBox, "infoTipCaption");
                                  -            var bgImg = getElementByClass(innerBox, "infoTipBgImage");
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -            
                                  -            // TODO: xxxpedro infoTip IE and timing issue
                                  -            // TODO: use offline document to avoid flickering
                                  -            if (isIE)
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            
                                  -            var updateInfoTip = function(){
                                  -            
                                  -            var w = img.naturalWidth || img.width || 10, 
                                  -                h = img.naturalHeight || img.height || 10;
                                  -            
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -            caption.innerHTML = $STRF(w + " x " + h);
                                  -            
                                  -            
                                  -            };
                                  -            
                                  -            if (isIE) 
                                  -                setTimeout(updateInfoTip, 0);
                                  -            else
                                  -            {
                                  -                updateInfoTip();
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            }
                                  -
                                  -            ///
                                  -        }
                                  -        
                                  -        /*
                                  -        /// onLoadImage original
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget;
                                  -            var bgImg = img.nextSibling;
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -
                                  -            var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -
                                  -            var w = img.naturalWidth, h = img.naturalHeight;
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -
                                  -            removeClass(innerBox, "infoTipLoading");
                                  -        }
                                  -        /**/
                                  -        
                                  -    }),
                                  -
                                  -    initializeBrowser: function(browser)
                                  -    {
                                  -        browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser);
                                  -        browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser);
                                  -
                                  -        ///var doc = browser.contentDocument;
                                  -        var doc = browser.document;
                                  -        if (!doc)
                                  -            return;
                                  -
                                  -        ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -        ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -        ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -        addEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -        addEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -        addEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -        
                                  -        return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc));
                                  -    },
                                  -
                                  -    uninitializeBrowser: function(browser)
                                  -    {
                                  -        if (browser.infoTip)
                                  -        {
                                  -            ///var doc = browser.contentDocument;
                                  -            var doc = browser.document;
                                  -            ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -            ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -            ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -            removeEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -            removeEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -            removeEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -
                                  -            browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -            delete browser.infoTip;
                                  -            delete browser.onInfoTipMouseMove;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        if (!Firebug.showInfoTips)
                                  -            return;
                                  -
                                  -        var scrollParent = getOverflowParent(target);
                                  -        var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
                                  -
                                  -        if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset))
                                  -        {
                                  -            var htmlElt = infoTip.ownerDocument.documentElement;
                                  -            var panelWidth = htmlElt.clientWidth;
                                  -            var panelHeight = htmlElt.clientHeight;
                                  -
                                  -            if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
                                  -            {
                                  -                infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.left = (x+infoTipMargin) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -
                                  -            if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
                                  -            {
                                  -                infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.top = (y+infoTipMargin) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_INFOTIP)
                                  -                FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
                                  -                    ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
                                  -                    ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
                                  -                    ", offsetWidth: " + infoTip.offsetWidth +
                                  -                    ", x: " + x + ", panelWidth: " + panelWidth +
                                  -                    ", y: " + y + ", panelHeight: " + panelHeight);
                                  -
                                  -            infoTip.setAttribute("active", "true");
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(infoTip);
                                  -    },
                                  -
                                  -    hideInfoTip: function(infoTip)
                                  -    {
                                  -        if (infoTip)
                                  -            infoTip.removeAttribute("active");
                                  -    },
                                  -
                                  -    onMouseOut: function(event, browser)
                                  -    {
                                  -        if (!event.relatedTarget)
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    onMouseMove: function(event, browser)
                                  -    {
                                  -        // Ignore if the mouse is moving over the existing info tip.
                                  -        if (getAncestorByClass(event.target, "infoTip"))
                                  -            return;
                                  -
                                  -        if (browser.currentPanel)
                                  -        {
                                  -            var x = event.clientX, y = event.clientY, target = event.target || event.srcElement;
                                  -            this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset);
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    populateColorInfoTip: function(infoTip, color)
                                  -    {
                                  -        this.tags.colorTag.replace({rgbValue: color}, infoTip);
                                  -        return true;
                                  -    },
                                  -
                                  -    populateImageInfoTip: function(infoTip, url, repeat)
                                  -    {
                                  -        if (!repeat)
                                  -            repeat = "no-repeat";
                                  -
                                  -        this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    disable: function()
                                  -    {
                                  -        // XXXjoe For each browser, call uninitializeBrowser
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel)
                                  -        {
                                  -            var infoTip = panel.panelBrowser.infoTip;
                                  -            if (!infoTip)
                                  -                infoTip = this.initializeBrowser(panel.panelBrowser);
                                  -            this.hideInfoTip(infoTip);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -        this.showPanel(browser, panel);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.InfoTip);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var CssParser = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Simple CSS stylesheet parser from:
                                  -// https://github.com/sergeche/webkit-css
                                  -
                                  -/**
                                  - * Simple CSS stylesheet parser that remembers rule's lines in file
                                  - * @author Sergey Chikuyonok (serge.che@gmail.com)
                                  - * @link http://chikuyonok.ru
                                  - */
                                  -CssParser = (function(){
                                  -    /**
                                  -     * Returns rule object
                                  -     * @param {Number} start Character index where CSS rule definition starts
                                  -     * @param {Number} body_start Character index where CSS rule's body starts
                                  -     * @param {Number} end Character index where CSS rule definition ends
                                  -     */
                                  -    function rule(start, body_start, end) {
                                  -        return {
                                  -            start: start || 0,
                                  -            body_start: body_start || 0,
                                  -            end: end || 0,
                                  -            line: -1,
                                  -            selector: null,
                                  -            parent: null,
                                  -            
                                  -            /** @type {rule[]} */
                                  -            children: [],
                                  -            
                                  -            addChild: function(start, body_start, end) {
                                  -                var r = rule(start, body_start, end);
                                  -                r.parent = this;
                                  -                this.children.push(r);
                                  -                return r;
                                  -            },
                                  -            /**
                                  -             * Returns last child element
                                  -             * @return {rule}
                                  -             */
                                  -            lastChild: function() {
                                  -                return this.children[this.children.length - 1];
                                  -            }
                                  -        };
                                  -    }
                                  -    
                                  -    /**
                                  -     * Replaces all occurances of substring defined by regexp
                                  -     * @param {String} str
                                  -     * @return {RegExp} re
                                  -     * @return {String}
                                  -     */
                                  -    function removeAll(str, re) {
                                  -        var m;
                                  -        while (m = str.match(re)) {
                                  -            str = str.substring(m[0].length);
                                  -        }
                                  -        
                                  -        return str;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Trims whitespace from the beginning and the end of string
                                  -     * @param {String} str
                                  -     * @return {String}
                                  -     */
                                  -    function trim(str) {
                                  -        return str.replace(/^\s+|\s+$/g, '');
                                  -    }
                                  -    
                                  -    /**
                                  -     * Normalizes CSS rules selector
                                  -     * @param {String} selector
                                  -     */
                                  -    function normalizeSelector(selector) {
                                  -        // remove newlines
                                  -        selector = selector.replace(/[\n\r]/g, ' ');
                                  -        
                                  -        selector = trim(selector);
                                  -        
                                  -        // remove spaces after commas
                                  -        selector = selector.replace(/\s*,\s*/g, ',');
                                  -        
                                  -        return selector;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Preprocesses parsed rules: adjusts char indexes, skipping whitespace and
                                  -     * newlines, saves rule selector, removes comments, etc.
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node CSS rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function preprocessRules(text, rule_node) {
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i],
                                  -                rule_start = text.substring(r.start, r.body_start),
                                  -                cur_len = rule_start.length;
                                  -            
                                  -            // remove newlines for better regexp matching
                                  -            rule_start = rule_start.replace(/[\n\r]/g, ' ');
                                  -            
                                  -            // remove @import rules
                                  -//            rule_start = removeAll(rule_start, /^\s*@import\s*url\((['"])?.+?\1?\)\;?/g);
                                  -            
                                  -            // remove comments
                                  -            rule_start = removeAll(rule_start, /^\s*\/\*.*?\*\/[\s\t]*/);
                                  -            
                                  -            // remove whitespace
                                  -            rule_start = rule_start.replace(/^[\s\t]+/, '');
                                  -            
                                  -            r.start += (cur_len - rule_start.length);
                                  -            r.selector = normalizeSelector(rule_start);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves all lise starting indexes for faster search
                                  -     * @param {String} text CSS stylesheet
                                  -     * @return {Number[]}
                                  -     */
                                  -    function saveLineIndexes(text) {
                                  -        var result = [0],
                                  -            i = 0,
                                  -            il = text.length,
                                  -            ch, ch2;
                                  -            
                                  -        while (i < il) {
                                  -            ch = text.charAt(i);
                                  -            
                                  -            if (ch == '\n' || ch == '\r') {
                                  -                if (ch == '\r' && i < il - 1 && text.charAt(i + 1) == '\n') {
                                  -                    // windows line ending: CRLF. Skip next character 
                                  -                    i++;
                                  -                }
                                  -                
                                  -                result.push(i + 1);
                                  -            }
                                  -            
                                  -            i++;
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves line number for parsed rules
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node Rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function saveLineNumbers(text, rule_node, line_indexes, startLine) {
                                  -        preprocessRules(text, rule_node);
                                  -        
                                  -        startLine = startLine || 0;
                                  -        
                                  -        // remember lines start indexes, preserving line ending characters
                                  -        if (!line_indexes)
                                  -            var line_indexes = saveLineIndexes(text);
                                  -
                                  -        // now find each rule's line
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i];
                                  -            r.line = line_indexes.length + startLine;
                                  -            for (var j = 0, jl = line_indexes.length - 1; j < jl; j++) {
                                  -                var line_ix = line_indexes[j];
                                  -                if (r.start >=  line_indexes[j] && r.start <  line_indexes[j + 1]) {
                                  -                    r.line = j + 1 + startLine;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            
                                  -            saveLineNumbers(text, r, line_indexes);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    return {
                                  -        /**
                                  -         * Parses text as CSS stylesheet, remembring each rule position inside 
                                  -         * text
                                  -         * @param {String} text CSS stylesheet to parse
                                  -         */
                                  -        read: function(text, startLine) {
                                  -            var rule_start = [],
                                  -                rule_body_start = [],
                                  -                rules = [],
                                  -                in_comment = 0,
                                  -                root = rule(),
                                  -                cur_parent = root,
                                  -                last_rule = null,
                                  -                stack = [],
                                  -                ch, ch2;
                                  -                
                                  -            stack.last = function() {
                                  -                return this[this.length - 1];
                                  -            };
                                  -            
                                  -            function hasStr(pos, substr) {
                                  -                return text.substr(pos, substr.length) == substr;
                                  -            }
                                  -                
                                  -            for (var i = 0, il = text.length; i < il; i++) {
                                  -                ch = text.charAt(i);
                                  -                ch2 = i < il - 1 ? text.charAt(i + 1) : '';
                                  -                
                                  -                if (!rule_start.length)
                                  -                    rule_start.push(i);
                                  -                    
                                  -                switch (ch) {
                                  -                    case '@':
                                  -                        if (!in_comment) {
                                  -                            if (hasStr(i, '@import')) {
                                  -                                var m = text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -                                if (m) {
                                  -                                    cur_parent.addChild(i, i + 7, i + m[0].length);
                                  -                                    i += m[0].length;
                                  -                                    rule_start.pop();
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                        }
                                  -                    case '/':
                                  -                        // xxxpedro allowing comment inside comment
                                  -                        if (!in_comment && ch2 == '*') { // comment start
                                  -                            in_comment++;
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '*':
                                  -                        if (ch2 == '/') { // comment end
                                  -                            in_comment--;
                                  -                        }
                                  -                        break;
                                  -                    
                                  -                    case '{':
                                  -                        if (!in_comment) {
                                  -                            rule_body_start.push(i);
                                  -                            
                                  -                            cur_parent = cur_parent.addChild(rule_start.pop());
                                  -                            stack.push(cur_parent);
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '}':
                                  -                        // found the end of the rule
                                  -                        if (!in_comment) {
                                  -                            /** @type {rule} */
                                  -                            var last_rule = stack.pop();
                                  -                            rule_start.pop();
                                  -                            last_rule.body_start = rule_body_start.pop();
                                  -                            last_rule.end = i;
                                  -                            cur_parent = last_rule.parent || root;
                                  -                        }
                                  -                        break;
                                  -                }
                                  -                
                                  -            }
                                  -            
                                  -            return saveLineNumbers(text, root, null, startLine);
                                  -        },
                                  -        
                                  -        normalizeSelector: normalizeSelector,
                                  -        
                                  -        /**
                                  -         * Find matched rule by selector.
                                  -         * @param {rule} rule_node Parsed rule node
                                  -         * @param {String} selector CSS selector
                                  -         * @param {String} source CSS stylesheet source code
                                  -         * 
                                  -         * @return {rule[]|null} Array of matched rules, sorted by priority (most 
                                  -         * recent on top)
                                  -         */
                                  -        findBySelector: function(rule_node, selector, source) {
                                  -            var selector = normalizeSelector(selector),
                                  -                result = [];
                                  -                
                                  -            if (rule_node) {
                                  -                for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -                    /** @type {rule} */
                                  -                    var r = rule_node.children[i];
                                  -                    if (r.selector == selector) {
                                  -                        result.push(r);
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            if (result.length) {
                                  -                return result;
                                  -            } else {
                                  -                return null;
                                  -            }
                                  -        }
                                  -    };
                                  -})();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.CssParser = CssParser;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet Parser
                                  -
                                  -var CssAnalyzer = {};
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var CSSRuleMap = {};
                                  -var ElementCSSRulesMap = {};
                                  -
                                  -var internalStyleSheetIndex = -1;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -var reSelectorClass = /\.[\w\d_-]+/g;
                                  -var reSelectorId = /#[\w\d_-]+/g;
                                  -
                                  -var globalCSSRuleIndex;
                                  -
                                  -var processAllStyleSheetsTimeout = null;
                                  -
                                  -var externalStyleSheetURLs = [];
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -//************************************************************************************************
                                  -// CSS Analyzer templates
                                  -
                                  -CssAnalyzer.externalStyleSheetWarning = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'},
                                  -            SPAN("$object|STR"),
                                  -            A({"href": "$href", target:"_blank"}, "$link|STR")
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Analyzer methods
                                  -
                                  -CssAnalyzer.processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    try
                                  -    {
                                  -        processAllStyleSheets(doc, styleSheetIterator);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * 
                                  - * @param element
                                  - * @returns {String[]} Array of IDs of CSS Rules
                                  - */
                                  -CssAnalyzer.getElementCSSRules = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        return getElementCSSRules(element);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -CssAnalyzer.getRuleData = function(ruleId)
                                  -{
                                  -    return CSSRuleMap[ruleId];
                                  -};
                                  -
                                  -// TODO: do we need this?
                                  -CssAnalyzer.getRuleLine = function()
                                  -{
                                  -};
                                  -
                                  -CssAnalyzer.hasExternalStyleSheet = function()
                                  -{
                                  -    return externalStyleSheetURLs.length > 0;
                                  -};
                                  -
                                  -CssAnalyzer.parseStyleSheet = function(href)
                                  -{
                                  -    var sourceData = extractSourceData(href);
                                  -    var parsedObj = CssParser.read(sourceData.source, sourceData.startLine);
                                  -    var parsedRules = parsedObj.children;
                                  -    
                                  -    // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -    //
                                  -    // Ignore all special selectors like @media and @page
                                  -    for(var i=0; i < parsedRules.length; )
                                  -    {
                                  -        if (parsedRules[i].selector.indexOf("@") != -1)
                                  -        {
                                  -            parsedRules.splice(i, 1);
                                  -        }
                                  -        else
                                  -            i++;
                                  -    }
                                  -    
                                  -    return parsedRules;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Internals
                                  -//************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet processing
                                  -
                                  -var processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    styleSheetIterator = styleSheetIterator || processStyleSheet;
                                  -    
                                  -    globalCSSRuleIndex = -1;
                                  -    
                                  -    var styleSheets = doc.styleSheets;
                                  -    var importedStyleSheets = [];
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -        var start = new Date().getTime();
                                  -    
                                  -    for(var i=0, length=styleSheets.length; i<length; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            
                                  -            if ("firebugIgnore" in styleSheet) continue;
                                  -            
                                  -            // we must read the length to make sure we have permission to read 
                                  -            // the stylesheet's content. If an error occurs here, we cannot 
                                  -            // read the stylesheet due to access restriction policy
                                  -            var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -            rules.length;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            externalStyleSheetURLs.push(styleSheet.href);
                                  -            styleSheet.restricted = true;
                                  -            var ssid = StyleSheetCache(styleSheet);
                                  -            
                                  -            /// TODO: xxxpedro external css
                                  -            //loadExternalStylesheet(doc, styleSheetIterator, styleSheet);
                                  -        }
                                  -        
                                  -        // process internal and external styleSheets
                                  -        styleSheetIterator(doc, styleSheet);
                                  -        
                                  -        var importedStyleSheet, importedRules;
                                  -        
                                  -        // process imported styleSheets in IE
                                  -        if (isIE)
                                  -        {
                                  -            var imports = styleSheet.imports;
                                  -            
                                  -            for(var j=0, importsLength=imports.length; j<importsLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    importedStyleSheet = imports[j];
                                  -                    // we must read the length to make sure we have permission
                                  -                    // to read the imported stylesheet's content. 
                                  -                    importedRules = importedStyleSheet.rules;
                                  -                    importedRules.length;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -                
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -        // process imported styleSheets in other browsers
                                  -        else if (rules)
                                  -        {
                                  -            for(var j=0, rulesLength=rules.length; j<rulesLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    var rule = rules[j];
                                  -                    
                                  -                    importedStyleSheet = rule.styleSheet;
                                  -                    
                                  -                    if (importedStyleSheet)
                                  -                    {
                                  -                        // we must read the length to make sure we have permission
                                  -                        // to read the imported stylesheet's content. 
                                  -                        importedRules = importedStyleSheet.cssRules;
                                  -                        importedRules.length;
                                  -                    }
                                  -                    else
                                  -                        break;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -    {
                                  -        FBTrace.sysout("FBL.processAllStyleSheets", "all stylesheet rules processed in " + (new Date().getTime() - start) + "ms");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var processStyleSheet = function(doc, styleSheet)
                                  -{
                                  -    if (styleSheet.restricted)
                                  -        return;
                                  -    
                                  -    var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -    
                                  -    var ssid = StyleSheetCache(styleSheet);
                                  -    
                                  -    var href = styleSheet.href;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // CSS Parser
                                  -    var shouldParseCSS = typeof CssParser != "undefined" && !Firebug.disableResourceFetching;
                                  -    if (shouldParseCSS)
                                  -    {
                                  -        try
                                  -        {
                                  -            var parsedRules = CssAnalyzer.parseStyleSheet(href); 
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("processStyleSheet FAILS", e.message || e);
                                  -            shouldParseCSS = false;
                                  -        }
                                  -        finally
                                  -        {
                                  -            var parsedRulesIndex = 0;
                                  -            
                                  -            var dontSupportGroupedRules = isIE && browserVersion < 9;
                                  -            var group = [];
                                  -            var groupItem;
                                  -        }
                                  -    }
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    for (var i=0, length=rules.length; i<length; i++)
                                  -    {
                                  -        // TODO: xxxpedro is there a better way to cache CSS Rules? The problem is that
                                  -        // we cannot add expando properties in the rule object in IE
                                  -        var rid = ssid + ":" + i;
                                  -        var rule = rules[i];
                                  -        var selector = rule.selectorText || "";
                                  -        var lineNo = null;
                                  -        
                                  -        // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -        //
                                  -        // Ignore all special selectors like @media and @page
                                  -        if (!selector || selector.indexOf("@") != -1)
                                  -            continue;
                                  -        
                                  -        if (isIE)
                                  -            selector = selector.replace(reSelectorTag, function(s){return s.toLowerCase();});
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // CSS Parser
                                  -        if (shouldParseCSS)
                                  -        {
                                  -            var parsedRule = parsedRules[parsedRulesIndex];
                                  -            var parsedSelector = parsedRule.selector;
                                  -
                                  -            if (dontSupportGroupedRules && parsedSelector.indexOf(",") != -1 && group.length == 0)
                                  -                group = parsedSelector.split(",");
                                  -            
                                  -            if (dontSupportGroupedRules && group.length > 0)
                                  -            {
                                  -                groupItem = group.shift();
                                  -                
                                  -                if (CssParser.normalizeSelector(selector) == groupItem)
                                  -                    lineNo = parsedRule.line;
                                  -                
                                  -                if (group.length == 0)
                                  -                    parsedRulesIndex++;
                                  -            }
                                  -            else if (CssParser.normalizeSelector(selector) == parsedRule.selector)
                                  -            {
                                  -                lineNo = parsedRule.line;
                                  -                parsedRulesIndex++;
                                  -            }
                                  -        }
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        CSSRuleMap[rid] =
                                  -        {
                                  -            styleSheetId: ssid,
                                  -            styleSheetIndex: i,
                                  -            order: ++globalCSSRuleIndex,
                                  -            specificity: 
                                  -                // See: Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -                //
                                  -                // if it is a normal selector then calculate the specificity
                                  -                selector && selector.indexOf(",") == -1 ? 
                                  -                getCSSRuleSpecificity(selector) : 
                                  -                // See: Issue 3262: [Firebug lite] Specificity of grouped CSS Rules
                                  -                //
                                  -                // if it is a grouped selector, do not calculate the specificity
                                  -                // because the correct value will depend of the matched element.
                                  -                // The proper specificity value for grouped selectors are calculated
                                  -                // via getElementCSSRules(element)
                                  -                0,
                                  -            
                                  -            rule: rule,
                                  -            lineNo: lineNo,
                                  -            selector: selector,
                                  -            cssText: rule.style ? rule.style.cssText : rule.cssText ? rule.cssText : ""        
                                  -        };
                                  -        
                                  -        // TODO: what happens with elements added after this? Need to create a test case.
                                  -        // Maybe we should place this at getElementCSSRules() but it will make the function
                                  -        // a lot more expensive.
                                  -        // 
                                  -        // Maybe add a "refresh" button?
                                  -        var elements = Firebug.Selector(selector, doc);
                                  -        
                                  -        for (var j=0, elementsLength=elements.length; j<elementsLength; j++)
                                  -        {
                                  -            var element = elements[j];
                                  -            var eid = ElementCache(element);
                                  -            
                                  -            if (!ElementCSSRulesMap[eid])
                                  -                ElementCSSRulesMap[eid] = [];
                                  -            
                                  -            ElementCSSRulesMap[eid].push(rid);
                                  -        }
                                  -        
                                  -        //console.log(selector, elements);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// External StyleSheet Loader
                                  -
                                  -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet)
                                  -{
                                  -    var url = styleSheet.href;
                                  -    styleSheet.firebugIgnore = true;
                                  -    
                                  -    var source = Firebug.Lite.Proxy.load(url);
                                  -    
                                  -    // TODO: check for null and error responses
                                  -    
                                  -    // remove comments
                                  -    //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -    //source = source.replace(reMultiComment, "");
                                  -    
                                  -    // convert relative addresses to absolute ones  
                                  -    source = source.replace(/url\(([^\)]+)\)/g, function(a,name){
                                  -    
                                  -        var hasDomain = /\w+:\/\/./.test(name);
                                  -        
                                  -        if (!hasDomain)
                                  -        {
                                  -            name = name.replace(/^(["'])(.+)\1$/, "$2");
                                  -            var first = name.charAt(0);
                                  -            
                                  -            // relative path, based on root
                                  -            if (first == "/")
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLRoot
                                  -                var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -                
                                  -                return m ? 
                                  -                    "url(" + m[1] + name + ")" :
                                  -                    "url(" + name + ")";
                                  -            }
                                  -            // relative path, based on current location
                                  -            else
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLPath
                                  -                var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, "");
                                  -                
                                  -                path = path + name;
                                  -                
                                  -                var reBack = /[^\/]+\/\.\.\//;
                                  -                while(reBack.test(path))
                                  -                {
                                  -                    path = path.replace(reBack, "");
                                  -                }
                                  -                
                                  -                //console.log("url(" + path + ")");
                                  -                
                                  -                return "url(" + path + ")";
                                  -            }
                                  -        }
                                  -        
                                  -        // if it is an absolute path, there is nothing to do
                                  -        return a;
                                  -    });
                                  -    
                                  -    var oldStyle = styleSheet.ownerNode;
                                  -    
                                  -    if (!oldStyle) return;
                                  -    
                                  -    if (!oldStyle.parentNode) return;
                                  -    
                                  -    var style = createGlobalElement("style");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.innerHTML = source;
                                  -
                                  -    //debugger;
                                  -    oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling);
                                  -    oldStyle.parentNode.removeChild(oldStyle);
                                  -    
                                  -    doc.styleSheets[doc.styleSheets.length-1].externalURL = url;
                                  -    
                                  -    console.log(url, "call " + externalStyleSheetURLs.length, source);
                                  -    
                                  -    externalStyleSheetURLs.pop();
                                  -    
                                  -    if (processAllStyleSheetsTimeout)
                                  -    {
                                  -        clearTimeout(processAllStyleSheetsTimeout);
                                  -    }
                                  -    
                                  -    processAllStyleSheetsTimeout = setTimeout(function(){
                                  -        console.log("processing");
                                  -        FBL.processAllStyleSheets(doc, styleSheetIterator);
                                  -        processAllStyleSheetsTimeout = null;
                                  -    },200);
                                  -    
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// getElementCSSRules
                                  -
                                  -var getElementCSSRules = function(element)
                                  -{
                                  -    var eid = ElementCache(element);
                                  -    var rules = ElementCSSRulesMap[eid];
                                  -    
                                  -    if (!rules) return;
                                  -    
                                  -    var arr = [element];
                                  -    var Selector = Firebug.Selector;
                                  -    var ruleId, rule;
                                  -    
                                  -    // for the case of grouped selectors, we need to calculate the highest
                                  -    // specificity within the selectors of the group that matches the element,
                                  -    // so we can sort the rules properly without over estimating the specificity
                                  -    // of grouped selectors
                                  -    for (var i = 0, length = rules.length; i < length; i++)
                                  -    {
                                  -        ruleId = rules[i];
                                  -        rule = CSSRuleMap[ruleId];
                                  -        
                                  -        // check if it is a grouped selector
                                  -        if (rule.selector.indexOf(",") != -1)
                                  -        {
                                  -            var selectors = rule.selector.split(",");
                                  -            var maxSpecificity = -1;
                                  -            var sel, spec, mostSpecificSelector;
                                  -            
                                  -            // loop over all selectors in the group
                                  -            for (var j, len = selectors.length; j < len; j++)
                                  -            {
                                  -                sel = selectors[j];
                                  -                
                                  -                // find if the selector matches the element
                                  -                if (Selector.matches(sel, arr).length == 1)
                                  -                {
                                  -                    spec = getCSSRuleSpecificity(sel);
                                  -                    
                                  -                    // find the most specific selector that macthes the element
                                  -                    if (spec > maxSpecificity)
                                  -                    {
                                  -                        maxSpecificity = spec;
                                  -                        mostSpecificSelector = sel;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            rule.specificity = maxSpecificity;
                                  -        }
                                  -    }
                                  -    
                                  -    rules.sort(sortElementRules);
                                  -    //rules.sort(solveRulesTied);
                                  -    
                                  -    return rules;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Rule Specificity
                                  -
                                  -var sortElementRules = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    var specificityA = ruleA.specificity;
                                  -    var specificityB = ruleB.specificity;
                                  -    
                                  -    if (specificityA > specificityB)
                                  -        return 1;
                                  -    
                                  -    else if (specificityA < specificityB)
                                  -        return -1;
                                  -    
                                  -    else
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -};
                                  -
                                  -var solveRulesTied = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    if (ruleA.specificity == ruleB.specificity)
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -        
                                  -    return null;
                                  -};
                                  -
                                  -var getCSSRuleSpecificity = function(selector)
                                  -{
                                  -    var match = selector.match(reSelectorTag);
                                  -    var tagCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorClass);
                                  -    var classCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorId);
                                  -    var idCount = match ? match.length : 0;
                                  -    
                                  -    return tagCount + 10*classCount + 100*idCount;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet data
                                  -
                                  -var extractSourceData = function(href)
                                  -{
                                  -    var sourceData = 
                                  -    {
                                  -        source: null,
                                  -        startLine: 0
                                  -    };
                                  -    
                                  -    if (href)
                                  -    {
                                  -        sourceData.source = Firebug.Lite.Proxy.load(href);
                                  -    }
                                  -    else
                                  -    {
                                  -        // TODO: create extractInternalSourceData(index)
                                  -        // TODO: pre process the position of the inline styles so this will happen only once
                                  -        // in case of having multiple inline styles
                                  -        var index = 0;
                                  -        var ssIndex = ++internalStyleSheetIndex;
                                  -        var reStyleTag = /\<\s*style.*\>/gi;
                                  -        var reEndStyleTag = /\<\/\s*style.*\>/gi;
                                  -        
                                  -        var source = Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -        source = source.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        
                                  -        var startLine = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            var matchStyleTag = source.match(reStyleTag); 
                                  -            var i0 = source.indexOf(matchStyleTag[0]) + matchStyleTag[0].length;
                                  -            
                                  -            for (var i=0; i < i0; i++)
                                  -            {
                                  -                if (source.charAt(i) == "\n")
                                  -                    startLine++;
                                  -            }
                                  -            
                                  -            source = source.substr(i0);
                                  -            
                                  -            index++;
                                  -        }
                                  -        while (index <= ssIndex);
                                  -    
                                  -        var matchEndStyleTag = source.match(reEndStyleTag);
                                  -        var i1 = source.indexOf(matchEndStyleTag[0]);
                                  -        
                                  -        var extractedSource = source.substr(0, i1);
                                  -        
                                  -        sourceData.source = extractedSource;
                                  -        sourceData.startLine = startLine;
                                  -    }
                                  -    
                                  -    return sourceData;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -FBL.CssAnalyzer = CssAnalyzer;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// move to FBL
                                  -(function() { 
                                  -
                                  -// ************************************************************************************************
                                  -// XPath
                                  -
                                  -/**
                                  - * Gets an XPath for an element which describes its hierarchical location.
                                  - */
                                  -this.getElementXPath = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        if (element && element.id)
                                  -            return '//*[@id="' + element.id + '"]';
                                  -        else
                                  -            return this.getElementTreeXPath(element);
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        // xxxpedro: trying to detect the mysterious error:
                                  -        // Security error" code: "1000
                                  -        //debugger;
                                  -    }
                                  -};
                                  -
                                  -this.getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -        
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -            
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -this.getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -this.getRuleMatchingElements = function(rule, doc)
                                  -{
                                  -    var css = rule.selectorText;
                                  -    var xpath = this.cssToXPath(css);
                                  -    return this.getElementsByXPath(doc, xpath);
                                  -};
                                  -
                                  -
                                  -}).call(FBL);
                                  -
                                  -
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -};
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -};
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
                                  -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
                                  -//const nsISelectionDisplay = Ci.nsISelectionDisplay;
                                  -//const nsISelectionController = Ci.nsISelectionController;
                                  -
                                  -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
                                  -//const STATE_ACTIVE  = 0x01;
                                  -//const STATE_FOCUS   = 0x02;
                                  -//const STATE_HOVER   = 0x04;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -Firebug.SourceBoxPanel = Firebug.Panel;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -
                                  -var domUtils = null;
                                  -
                                  -var textContent = isIE ? "innerText" : "textContent";
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var CSSDomplateBase = {
                                  -    isEditable: function(rule)
                                  -    {
                                  -        return !rule.isSystemSheet;
                                  -    },
                                  -    isSelectorEditable: function(rule)
                                  -    {
                                  -        return rule.isSelectorEditable && this.isEditable(rule);
                                  -    }
                                  -};
                                  -
                                  -var CSSPropTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
                                  -          $editGroup: "$rule|isEditable",
                                  -          $cssOverridden: "$prop.overridden", role : "option"},
                                  -        A({"class": "cssPropDisable"}, "&nbsp;&nbsp;"),
                                  -        SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )
                                  -});
                                  -
                                  -var CSSRuleTag =
                                  -    TAG("$rule.tag", {rule: "$rule"});
                                  -
                                  -var CSSImportRuleTag = domplate({
                                  -    tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
                                  -        "@import &quot;",
                                  -        A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
                                  -        "&quot;;"
                                  -    )
                                  -});
                                  -
                                  -var CSSStyleRuleTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssRule insertInto",
                                  -            $cssEditableRule: "$rule|isEditable",
                                  -            $editGroup: "$rule|isSelectorEditable",
                                  -            _repObject: "$rule.rule",
                                  -            "ruleId": "$rule.id", role : 'presentation'},
                                  -        DIV({"class": "cssHead focusRow", role : 'listitem'},
                                  -            SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {"
                                  -        ),
                                  -        DIV({role : 'group'},
                                  -            DIV({"class": "cssPropertyListBox", role : 'listbox'},
                                  -                FOR("prop", "$rule.props",
                                  -                    TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        DIV({"class": "editable insertBefore", role:"presentation"}, "}")
                                  -    )
                                  -});
                                  -
                                  -var reSplitCSS =  /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -
                                  -var reURL = /url\("?([^"\)]+)?"?\)/;
                                  -
                                  -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
                                  -
                                  -//const sothinkInstalled = !!$("swfcatcherKey_sidebar");
                                  -var sothinkInstalled = false;
                                  -var styleGroups =
                                  -{
                                  -    text: [
                                  -        "font-family",
                                  -        "font-size",
                                  -        "font-weight",
                                  -        "font-style",
                                  -        "color",
                                  -        "text-transform",
                                  -        "text-decoration",
                                  -        "letter-spacing",
                                  -        "word-spacing",
                                  -        "line-height",
                                  -        "text-align",
                                  -        "vertical-align",
                                  -        "direction",
                                  -        "column-count",
                                  -        "column-gap",
                                  -        "column-width"
                                  -    ],
                                  -
                                  -    background: [
                                  -        "background-color",
                                  -        "background-image",
                                  -        "background-repeat",
                                  -        "background-position",
                                  -        "background-attachment",
                                  -        "opacity"
                                  -    ],
                                  -
                                  -    box: [
                                  -        "width",
                                  -        "height",
                                  -        "top",
                                  -        "right",
                                  -        "bottom",
                                  -        "left",
                                  -        "margin-top",
                                  -        "margin-right",
                                  -        "margin-bottom",
                                  -        "margin-left",
                                  -        "padding-top",
                                  -        "padding-right",
                                  -        "padding-bottom",
                                  -        "padding-left",
                                  -        "border-top-width",
                                  -        "border-right-width",
                                  -        "border-bottom-width",
                                  -        "border-left-width",
                                  -        "border-top-color",
                                  -        "border-right-color",
                                  -        "border-bottom-color",
                                  -        "border-left-color",
                                  -        "border-top-style",
                                  -        "border-right-style",
                                  -        "border-bottom-style",
                                  -        "border-left-style",
                                  -        "-moz-border-top-radius",
                                  -        "-moz-border-right-radius",
                                  -        "-moz-border-bottom-radius",
                                  -        "-moz-border-left-radius",
                                  -        "outline-top-width",
                                  -        "outline-right-width",
                                  -        "outline-bottom-width",
                                  -        "outline-left-width",
                                  -        "outline-top-color",
                                  -        "outline-right-color",
                                  -        "outline-bottom-color",
                                  -        "outline-left-color",
                                  -        "outline-top-style",
                                  -        "outline-right-style",
                                  -        "outline-bottom-style",
                                  -        "outline-left-style"
                                  -    ],
                                  -
                                  -    layout: [
                                  -        "position",
                                  -        "display",
                                  -        "visibility",
                                  -        "z-index",
                                  -        "overflow-x",  // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
                                  -        "overflow-y",
                                  -        "overflow-clip",
                                  -        "white-space",
                                  -        "clip",
                                  -        "float",
                                  -        "clear",
                                  -        "-moz-box-sizing"
                                  -    ],
                                  -
                                  -    other: [
                                  -        "cursor",
                                  -        "list-style-image",
                                  -        "list-style-position",
                                  -        "list-style-type",
                                  -        "marker-offset",
                                  -        "user-focus",
                                  -        "user-select",
                                  -        "user-modify",
                                  -        "user-input"
                                  -    ]
                                  -};
                                  -
                                  -var styleGroupTitles =
                                  -{
                                  -    text: "Text",
                                  -    background: "Background",
                                  -    box: "Box Model",
                                  -    layout: "Layout",
                                  -    other: "Other"
                                  -};
                                  -
                                  -Firebug.CSSModule = extend(Firebug.Module,
                                  -{
                                  -    freeEdit: function(styleSheet, value)
                                  -    {
                                  -        if (!styleSheet.editStyleSheet)
                                  -        {
                                  -            var ownerNode = getStyleSheetOwnerNode(styleSheet);
                                  -            styleSheet.disabled = true;
                                  -
                                  -            var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL);
                                  -            url.spec = styleSheet.href;
                                  -
                                  -            var editStyleSheet = ownerNode.ownerDocument.createElementNS(
                                  -                "http://www.w3.org/1999/xhtml",
                                  -                "style");
                                  -            unwrapObject(editStyleSheet).firebugIgnore = true;
                                  -            editStyleSheet.setAttribute("type", "text/css");
                                  -            editStyleSheet.setAttributeNS(
                                  -                "http://www.w3.org/XML/1998/namespace",
                                  -                "base",
                                  -                url.directory);
                                  -            if (ownerNode.hasAttribute("media"))
                                  -            {
                                  -              editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
                                  -            }
                                  -
                                  -            // Insert the edited stylesheet directly after the old one to ensure the styles
                                  -            // cascade properly.
                                  -            ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
                                  -
                                  -            styleSheet.editStyleSheet = editStyleSheet;
                                  -        }
                                  -
                                  -        styleSheet.editStyleSheet.innerHTML = value;
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
                                  -    },
                                  -
                                  -    insertRule: function(styleSheet, cssText, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
                                  -        var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
                                  -
                                  -        dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
                                  -
                                  -        return insertIndex;
                                  -    },
                                  -
                                  -    deleteRule: function(styleSheet, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules);
                                  -        dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]);
                                  -
                                  -        styleSheet.deleteRule(ruleIndex);
                                  -    },
                                  -
                                  -    setProperty: function(rule, propName, propValue, propPriority)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        // good browsers
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
                                  -            // unless we remove the property first
                                  -            style.removeProperty(propName);
                                  -    
                                  -            style.setProperty(propName, propValue, propPriority);
                                  -        }
                                  -        // sad browsers
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro parse CSS rule to find property priority in IE?
                                  -            //console.log(propName, propValue);
                                  -            style[toCamelCase(propName)] = propValue;
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    },
                                  -
                                  -    removeProperty: function(rule, propName, parent)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -    
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            style.removeProperty(propName);
                                  -        }
                                  -        else
                                  -        {
                                  -            style[toCamelCase(propName)] = "";
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    }/*,
                                  -
                                  -    cleanupSheets: function(doc, context)
                                  -    {
                                  -        // Due to the manner in which the layout engine handles multiple
                                  -        // references to the same sheet we need to kick it a little bit.
                                  -        // The injecting a simple stylesheet then removing it will force
                                  -        // Firefox to regenerate it's CSS hierarchy.
                                  -        //
                                  -        // WARN: This behavior was determined anecdotally.
                                  -        // See http://code.google.com/p/fbug/issues/detail?id=2440
                                  -        var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -        style.setAttribute("charset","utf-8");
                                  -        unwrapObject(style).firebugIgnore = true;
                                  -        style.setAttribute("type", "text/css");
                                  -        style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
                                  -        addStyleSheet(doc, style);
                                  -        style.parentNode.removeChild(style);
                                  -
                                  -        // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
                                  -        // This voodoo touches each style sheet to force some Firefox internal change to allow edits.
                                  -        var styleSheets = getAllStyleSheets(context);
                                  -        for(var i = 0; i < styleSheets.length; i++)
                                  -        {
                                  -            try
                                  -            {
                                  -                var rules = styleSheets[i].cssRules;
                                  -                if (rules.length > 0)
                                  -                    var touch = rules[0];
                                  -                if (FBTrace.DBG_CSS && touch)
                                  -                    FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName()));
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e);
                                  -            }
                                  -        }
                                  -    },
                                  -    cleanupSheetHandler: function(event, context)
                                  -    {
                                  -        var target = event.target || event.srcElement,
                                  -            tagName = (target.tagName || "").toLowerCase();
                                  -        if (tagName == "link")
                                  -        {
                                  -            this.cleanupSheets(target.ownerDocument, context);
                                  -        }
                                  -    },
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        var cleanupSheets = bind(this.cleanupSheets, this),
                                  -            cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context),
                                  -            doc = win.document;
                                  -
                                  -        //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false);
                                  -        //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false);
                                  -    },
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var self = this;
                                  -        iterateWindows(context.browser.contentWindow, function(subwin)
                                  -        {
                                  -            self.cleanupSheets(subwin.document, context);
                                  -        });
                                  -    }
                                  -    /**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CSSStyleSheetPanel = function() {};
                                  -
                                  -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        tag:
                                  -            DIV({"class": "cssSheet insertInto a11yCSSView"},
                                  -                FOR("rule", "$rules",
                                  -                    CSSRuleTag
                                  -                ),
                                  -                DIV({"class": "cssSheet editable insertBefore"}, "")
                                  -                )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        if (this.location)
                                  -            this.updateLocation(this.location);
                                  -        else if (this.selection)
                                  -            this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (!this.stylesheetEditor)
                                  -            this.stylesheetEditor = new StyleSheetEditor(this.document);
                                  -
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -        {
                                  -            if (!this.location)
                                  -                return;
                                  -
                                  -            var styleSheet = this.location.editStyleSheet
                                  -                ? this.location.editStyleSheet.sheet
                                  -                : this.location;
                                  -
                                  -            var css = getStyleSheetCSS(styleSheet, this.context);
                                  -            //var topmost = getTopmostRuleLine(this.panelNode);
                                  -
                                  -            this.stylesheetEditor.styleSheet = this.location;
                                  -            Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
                                  -            //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
                                  -        }
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        if (this.location.href)
                                  -            return this.location.href;
                                  -        else
                                  -            return this.context.window.location.href;
                                  -    },
                                  -
                                  -    getRuleByLine: function(styleSheet, line)
                                  -    {
                                  -        if (!domUtils)
                                  -            return null;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        for (var i = 0; i < cssRules.length; ++i)
                                  -        {
                                  -            var rule = cssRules[i];
                                  -            if (rule instanceof CSSStyleRule)
                                  -            {
                                  -                var ruleLine = domUtils.getRuleLine(rule);
                                  -                if (ruleLine >= line)
                                  -                    return rule;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightRule: function(rule)
                                  -    {
                                  -        var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
                                  -        if (ruleElement)
                                  -        {
                                  -            scrollIntoCenterView(ruleElement, this.panelNode);
                                  -            setClassTimed(ruleElement, "jumpHighlight", this.context);
                                  -        }
                                  -    },
                                  -
                                  -    getStyleSheetRules: function(context, styleSheet)
                                  -    {
                                  -        var isSystemSheet = isSystemStyleSheet(styleSheet);
                                  -
                                  -        function appendRules(cssRules)
                                  -        {
                                  -            for (var i = 0; i < cssRules.length; ++i)
                                  -            {
                                  -                var rule = cssRules[i];
                                  -                
                                  -                // TODO: xxxpedro opera instanceof stylesheet remove the following comments when 
                                  -                // the issue with opera and style sheet Classes has been solved.
                                  -                
                                  -                //if (rule instanceof CSSStyleRule)
                                  -                if (instanceOf(rule, "CSSStyleRule"))
                                  -                {
                                  -                    var props = this.getRuleProperties(context, rule);
                                  -                    //var line = domUtils.getRuleLine(rule);
                                  -                    var line = null;
                                  -                    
                                  -                    var selector = rule.selectorText;
                                  -                    
                                  -                    if (isIE)
                                  -                    {
                                  -                        selector = selector.replace(reSelectorTag, 
                                  -                                function(s){return s.toLowerCase();});
                                  -                    }
                                  -                    
                                  -                    var ruleId = rule.selectorText+"/"+line;
                                  -                    rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId,
                                  -                                selector: selector, props: props,
                                  -                                isSystemSheet: isSystemSheet,
                                  -                                isSelectorEditable: true});
                                  -                }
                                  -                //else if (rule instanceof CSSImportRule)
                                  -                else if (instanceOf(rule, "CSSImportRule"))
                                  -                    rules.push({tag: CSSImportRuleTag.tag, rule: rule});
                                  -                //else if (rule instanceof CSSMediaRule)
                                  -                else if (instanceOf(rule, "CSSMediaRule"))
                                  -                    appendRules.apply(this, [rule.cssRules]);
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var rules = [];
                                  -        appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]);
                                  -        return rules;
                                  -    },
                                  -
                                  -    parseCSSProps: function(style, inheritMode)
                                  -    {
                                  -        var props = [];
                                  -
                                  -        if (Firebug.expandShorthandProps)
                                  -        {
                                  -            var count = style.length-1,
                                  -                index = style.length;
                                  -            while (index--)
                                  -            {
                                  -                var propName = style.item(count - index);
                                  -                this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -            var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -            var line,i=0;
                                  -            // TODO: xxxpedro port to firebug: variable leaked into global namespace
                                  -            var m;
                                  -            
                                  -            while(line=lines[i++]){
                                  -                m = propRE.exec(line);
                                  -                if(!m)
                                  -                    continue;
                                  -                //var name = m[1], value = m[2], important = !!m[3];
                                  -                if (m[2])
                                  -                    this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
                                  -            };
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    getRuleProperties: function(context, rule, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(rule.style, inheritMode);
                                  -
                                  -        // TODO: xxxpedro port to firebug: variable leaked into global namespace 
                                  -        //var line = domUtils.getRuleLine(rule);
                                  -        var line;
                                  -        var ruleId = rule.selectorText+"/"+line;
                                  -        this.addOldProperties(context, ruleId, inheritMode, props);
                                  -        sortProperties(props);
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    addOldProperties: function(context, ruleId, inheritMode, props)
                                  -    {
                                  -        if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var moreProps = context.selectorMap[ruleId];
                                  -            for (var i = 0; i < moreProps.length; ++i)
                                  -            {
                                  -                var prop = moreProps[i];
                                  -                this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    addProperty: function(name, value, important, disabled, inheritMode, props)
                                  -    {
                                  -        name = name.toLowerCase();
                                  -        
                                  -        if (inheritMode && !inheritedStyleNames[name])
                                  -            return;
                                  -
                                  -        name = this.translateName(name, value);
                                  -        if (name)
                                  -        {
                                  -            value = stripUnits(rgbToHex(value));
                                  -            important = important ? " !important" : "";
                                  -
                                  -            var prop = {name: name, value: value, important: important, disabled: disabled};
                                  -            props.push(prop);
                                  -        }
                                  -    },
                                  -
                                  -    translateName: function(name, value)
                                  -    {
                                  -        // Don't show these proprietary Mozilla properties
                                  -        if ((value == "-moz-initial"
                                  -            && (name == "-moz-background-clip" || name == "-moz-background-origin"
                                  -                || name == "-moz-background-inline-policy"))
                                  -        || (value == "physical"
                                  -            && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
                                  -                || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
                                  -        || (value == "physical"
                                  -            && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
                                  -                || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
                                  -            return null;
                                  -
                                  -        // Translate these back to the form the user probably expects
                                  -        if (name == "margin-left-value")
                                  -            return "margin-left";
                                  -        else if (name == "margin-right-value")
                                  -            return "margin-right";
                                  -        else if (name == "margin-top-value")
                                  -            return "margin-top";
                                  -        else if (name == "margin-bottom-value")
                                  -            return "margin-bottom";
                                  -        else if (name == "padding-left-value")
                                  -            return "padding-left";
                                  -        else if (name == "padding-right-value")
                                  -            return "padding-right";
                                  -        else if (name == "padding-top-value")
                                  -            return "padding-top";
                                  -        else if (name == "padding-bottom-value")
                                  -            return "padding-bottom";
                                  -        // XXXjoe What about border!
                                  -        else
                                  -            return name;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editElementStyle: function()
                                  -    {
                                  -        ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
                                  -        var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0];
                                  -        var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
                                  -        if (!styleRuleBox)
                                  -        {
                                  -            var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []};
                                  -            if (!rulesBox)
                                  -            {
                                  -                // The element did not have any displayed styles. We need to create the whole tree and remove
                                  -                // the no styles message
                                  -                styleRuleBox = this.template.cascadedTag.replace({
                                  -                    rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom")
                                  -                }, this.panelNode);
                                  -
                                  -                ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
                                  -                styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0];
                                  -            }
                                  -            else
                                  -                styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
                                  -
                                  -            ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
                                  -            styleRuleBox = $$(".insertInto", styleRuleBox)[0];
                                  -        }
                                  -
                                  -        Firebug.Editor.insertRowForObject(styleRuleBox);
                                  -    },
                                  -
                                  -    insertPropertyRow: function(row)
                                  -    {
                                  -        Firebug.Editor.insertRowForObject(row);
                                  -    },
                                  -
                                  -    insertRule: function(row)
                                  -    {
                                  -        var location = getAncestorByClass(row, "cssRule");
                                  -        if (!location)
                                  -        {
                                  -            location = getChildByClass(this.panelNode, "cssSheet");
                                  -            Firebug.Editor.insertRowForObject(location);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Editor.insertRow(location, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editPropertyRow: function(row)
                                  -    {
                                  -        var propValueBox = getChildByClass(row, "cssPropValue");
                                  -        Firebug.Editor.startEditing(propValueBox);
                                  -    },
                                  -
                                  -    deletePropertyRow: function(row)
                                  -    {
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -        Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -        // Remove the property from the selector map, if it was disabled
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var map = this.context.selectorMap[ruleId];
                                  -            for (var i = 0; i < map.length; ++i)
                                  -            {
                                  -                if (map[i].name == propName)
                                  -                {
                                  -                    map.splice(i, 1);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (this.name == "stylesheet")
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]);
                                  -        row.parentNode.removeChild(row);
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    disablePropertyRow: function(row)
                                  -    {
                                  -        toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -
                                  -        if (!this.context.selectorMap)
                                  -            this.context.selectorMap = {};
                                  -
                                  -        // XXXjoe Generate unique key for elements too
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if (!(this.context.selectorMap.hasOwnProperty(ruleId)))
                                  -            this.context.selectorMap[ruleId] = [];
                                  -
                                  -        var map = this.context.selectorMap[ruleId];
                                  -        var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -        var parsedValue = parsePriority(propValue);
                                  -        if (hasClass(row, "disabledStyle"))
                                  -        {
                                  -            Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -            map.push({"name": propName, "value": parsedValue.value,
                                  -                "important": parsedValue.priority});
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -
                                  -            var index = findPropByName(map, propName);
                                  -            map.splice(index, 1);
                                  -        }
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        //console.log("onMouseDown", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        // XXjoe Hack to only allow clicking on the checkbox
                                  -        if (!isLeftClick(event) || offset > 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        if (hasClass(target, "textEditor"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (row && hasClass(row, "editGroup"))
                                  -        {
                                  -            this.disablePropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onDoubleClick: function(event)
                                  -    {
                                  -        //console.log("onDoubleClick", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        if (!isLeftClick(event) || offset <= 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20);
                                  -        
                                  -        // if the inline editor was clicked, don't insert a new rule
                                  -        if (hasClass(target, "textEditorInner"))
                                  -            return;
                                  -            
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        if (row && !getAncestorByClass(target, "cssPropName")
                                  -            && !getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            this.insertPropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "stylesheet",
                                  -    title: "CSS",
                                  -    parentPanel: null,
                                  -    searchable: true,
                                  -    dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
                                  -    
                                  -    options:
                                  -    {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onDoubleClick = bind(this.onDoubleClick, this);
                                  -
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var selectNode = this.selectNode = createElement("select");
                                  -            
                                  -            CssAnalyzer.processAllStyleSheets(doc, function(doc, styleSheet)
                                  -            {
                                  -                var key = StyleSheetCache.key(styleSheet);
                                  -                var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -                var option = createElement("option", {value: key});
                                  -                
                                  -                option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -                selectNode.appendChild(option);
                                  -            });
                                  -            
                                  -            this.toolButtonsNode.appendChild(selectNode);
                                  -        }
                                  -        /**/
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var key = target.value;
                                  -        var styleSheet = StyleSheetCache.get(key);
                                  -        
                                  -        this.updateLocation(styleSheet);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //if (!domUtils)
                                  -        //{
                                  -        //    try {
                                  -        //        domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils");
                                  -        //    } catch (exc) {
                                  -        //        if (FBTrace.DBG_ERRORS)
                                  -        //            FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc);
                                  -        //    }
                                  -        //}
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        this.initializeNode();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            var styleSheets = Firebug.browser.document.styleSheets;
                                  -            
                                  -            if (styleSheets.length > 0)
                                  -            {
                                  -                addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -                
                                  -                this.updateLocation(styleSheets[0]);
                                  -            }
                                  -        }
                                  -        
                                  -        //Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // must destroy the editor when we leave the panel to avoid problems (Issue 2981)
                                  -        Firebug.Editor.stopEditing();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        }
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
                                  -
                                  -        //persistObjects(this, state);
                                  -
                                  -        // xxxpedro we are stopping the editor in the shutdown method already
                                  -        //Firebug.Editor.stopEditing();
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        Firebug.Inspector.stopInspecting(true);
                                  -
                                  -        this.showToolbarButtons("fbCSSButtons", true);
                                  -
                                  -        if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel
                                  -        {
                                  -            restoreObjects(this, state);
                                  -
                                  -            if (!this.location)
                                  -                this.location = this.getDefaultLocation();
                                  -
                                  -            if (state && state.scrollTop)
                                  -                this.panelNode.scrollTop = state.scrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbCSSButtons", false);
                                  -
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof CSSStyleSheet)
                                  -            return 1;
                                  -        else if (object instanceof CSSStyleRule)
                                  -            return 2;
                                  -        else if (object instanceof CSSStyleDeclaration)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateLocation: function(styleSheet)
                                  -    {
                                  -        if (!styleSheet)
                                  -            return;
                                  -        if (styleSheet.editStyleSheet)
                                  -            styleSheet = styleSheet.editStyleSheet.sheet;
                                  -        
                                  -        // if it is a restricted stylesheet, show the warning message and abort the update process
                                  -        if (styleSheet.restricted)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode);
                                  -
                                  -            // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The stylesheet could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"
                                  -            }, this.panelNode);
                                  -            
                                  -            return;
                                  -        }
                                  -
                                  -        var rules = this.getStyleSheetRules(this.context, styleSheet);
                                  -
                                  -        var result;
                                  -        if (rules.length)
                                  -            // FIXME xxxpedro chromenew this is making iPad's Safari to crash
                                  -            result = this.template.tag.replace({rules: rules}, this.panelNode);
                                  -        else
                                  -            result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro need to fix showToolbarButtons function
                                  -        //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location));
                                  -
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        this.selection = null;
                                  -
                                  -        if (object instanceof CSSStyleDeclaration) {
                                  -            object = object.parentRule;
                                  -        }
                                  -
                                  -        if (object instanceof CSSStyleRule)
                                  -        {
                                  -            this.navigate(object.parentStyleSheet);
                                  -            this.highlightRule(object);
                                  -        }
                                  -        else if (object instanceof CSSStyleSheet)
                                  -        {
                                  -            this.navigate(object);
                                  -        }
                                  -        else if (object instanceof SourceLink)
                                  -        {
                                  -            try
                                  -            {
                                  -                var sourceLink = object;
                                  -
                                  -                var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -                if (sourceFile)
                                  -                {
                                  -                    clearNode(this.panelNode);  // replace rendered stylesheets
                                  -                    this.showSourceFile(sourceFile);
                                  -
                                  -                    var lineNo = object.line;
                                  -                    if (lineNo)
                                  -                        this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
                                  -                }
                                  -                else // XXXjjb we should not be taking this path
                                  -                {
                                  -                    var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -                    if (stylesheet)
                                  -                        this.navigate(stylesheet);
                                  -                    else
                                  -                    {
                                  -                        if (FBTrace.DBG_CSS)
                                  -                            FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink);
                                  -                    }
                                  -                }
                                  -            }
                                  -            catch(exc) {
                                  -                if (FBTrace.DBG_CSS)
                                  -                    FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var styleSheets = getAllStyleSheets(this.context);
                                  -        return styleSheets;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") },
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(style, target)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        if (this.infoTipType == "color")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyColor",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -        else if (this.infoTipType == "image")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyImageLocation",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) },
                                  -                {label: "OpenImageInNewTab",
                                  -                    command: bindFixed(openNewTab, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -
                                  -        ///if (this.selection instanceof Element)
                                  -        if (isElement(this.selection))
                                  -        {
                                  -            items.push(
                                  -                //"-",
                                  -                {label: "EditStyle",
                                  -                    command: bindFixed(this.editElementStyle, this) }
                                  -            );
                                  -        }
                                  -        else if (!isSystemStyleSheet(this.selection))
                                  -        {
                                  -            items.push(
                                  -                    //"-",
                                  -                    {label: "NewRule",
                                  -                        command: bindFixed(this.insertRule, this, target) }
                                  -                );
                                  -        }
                                  -
                                  -        var cssRule = getAncestorByClass(target, "cssRule");
                                  -        if (cssRule && hasClass(cssRule, "cssEditableRule"))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewProp",
                                  -                    command: bindFixed(this.insertPropertyRow, this, target) }
                                  -            );
                                  -
                                  -            var propRow = getAncestorByClass(target, "cssProp");
                                  -            if (propRow)
                                  -            {
                                  -                var propName = getChildByClass(propRow, "cssPropName")[textContent];
                                  -                var isDisabled = hasClass(propRow, "disabledStyle");
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.editPropertyRow, this, propRow) },
                                  -                    {label: $STRF("DeleteProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.deletePropertyRow, this, propRow) },
                                  -                    {label: $STRF("DisableProp", [propName]), nol10n: true,
                                  -                        type: "checkbox", checked: isDisabled,
                                  -                        command: bindFixed(this.disablePropertyRow, this, propRow) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -        if (this.infoTipType == "image")
                                  -        {
                                  -            openNewTab(this.infoTipObject);
                                  -            return true;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        var propValue = getAncestorByClass(target, "cssPropValue");
                                  -        if (propValue)
                                  -        {
                                  -            var offset = getClientOffset(propValue);
                                  -            var offsetX = x-offset.x;
                                  -
                                  -            var text = propValue[textContent];
                                  -            var charWidth = propValue.offsetWidth/text.length;
                                  -            var charOffset = Math.floor(offsetX/charWidth);
                                  -
                                  -            var cssValue = parseCSSValue(text, charOffset);
                                  -            if (cssValue)
                                  -            {
                                  -                if (cssValue.value == this.infoTipValue)
                                  -                    return true;
                                  -
                                  -                this.infoTipValue = cssValue.value;
                                  -
                                  -                if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value)))
                                  -                {
                                  -                    this.infoTipType = "color";
                                  -                    this.infoTipObject = cssValue.value;
                                  -
                                  -                    return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value);
                                  -                }
                                  -                else if (cssValue.type == "url")
                                  -                {
                                  -                    ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0);
                                  -                    var propNameNode = getElementByClass(target.parentNode, "cssPropName");
                                  -                    if (propNameNode && isImageRule(propNameNode[textContent]))
                                  -                    {
                                  -                        var rule = Firebug.getRepObject(target);
                                  -                        var baseURL = this.getStylesheetURL(rule);
                                  -                        var relURL = parseURLValue(cssValue.value);
                                  -                        var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL);
                                  -                        var repeat = parseRepeatValue(text);
                                  -
                                  -                        this.infoTipType = "image";
                                  -                        this.infoTipObject = absURL;
                                  -
                                  -                        return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        delete this.infoTipType;
                                  -        delete this.infoTipValue;
                                  -        delete this.infoTipObject;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (target == this.panelNode
                                  -            || hasClass(target, "cssSelector") || hasClass(target, "cssRule")
                                  -            || hasClass(target, "cssSheet"))
                                  -        {
                                  -            if (!this.ruleEditor)
                                  -                this.ruleEditor = new CSSRuleEditor(this.document);
                                  -
                                  -            return this.ruleEditor;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!this.editor)
                                  -                this.editor = new CSSEditor(this.document);
                                  -
                                  -            return this.editor;
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheets = this.context.window.document.styleSheets;
                                  -            if (styleSheets.length)
                                  -            {
                                  -                var sheet = styleSheets[0];
                                  -                return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_LOCATIONS)
                                  -                FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectDescription: function(styleSheet)
                                  -    {
                                  -        var url = getURLForStyleSheet(styleSheet);
                                  -        var instance = getInstanceForStyleSheet(styleSheet);
                                  -
                                  -        var baseDescription = splitURLBase(url);
                                  -        if (instance) {
                                  -          baseDescription.name = baseDescription.name + " #" + (instance + 1);
                                  -        }
                                  -        return baseDescription;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -        function scanDoc(styleSheet) {
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < styleSheet.cssRules.length; i++)
                                  -            {
                                  -                if (scanRE.test(styleSheet.cssRules[i].cssText))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -        {
                                  -            row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.editing)
                                  -            {
                                  -                this.currentSearch = new TextSearch(this.stylesheetEditor.box);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -
                                  -                if (row)
                                  -                {
                                  -                    var sel = this.document.defaultView.getSelection();
                                  -                    sel.removeAllRanges();
                                  -                    sel.addRange(this.currentSearch.range);
                                  -                    scrollSelectionIntoView(this);
                                  -                    return true;
                                  -                }
                                  -                else
                                  -                    return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -                this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -            }
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            this.document.defaultView.getSelection().selectAllChildren(row);
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal")
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -
                                  -function CSSElementPanel() {}
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        cascadedTag:
                                  -            DIV({"class": "a11yCSSView",  role : 'presentation'},
                                  -                DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') },
                                  -                    FOR("rule", "$rules",
                                  -                        TAG("$ruleTag", {rule: "$rule"})
                                  -                    )
                                  -                ),
                                  -                DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')},
                                  -                    FOR("section", "$inherited",
                                  -                        H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' },
                                  -                            SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
                                  -                            TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
                                  -                        ),
                                  -                        DIV({role : 'group'},
                                  -                            FOR("rule", "$section.rules",
                                  -                                TAG("$ruleTag", {rule: "$rule"})
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                 )
                                  -            ),
                                  -
                                  -        ruleTag:
                                  -            isIE ?
                                  -            // IE needs the sourceLink first, otherwise it will be rendered outside the panel
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}),
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"})                
                                  -            )
                                  -            :
                                  -            // other browsers need the sourceLink last, otherwise it will cause an extra space
                                  -            // before the rule representation
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"}),
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateCascadeView: function(element)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]);
                                  -        var rules = [], sections = [], usedProps = {};
                                  -        this.getInheritedRules(element, sections, usedProps);
                                  -        this.getElementRules(element, rules, usedProps);
                                  -
                                  -        if (rules.length || sections.length)
                                  -        {
                                  -            var inheritLabel = "Inherited from"; // $STR("InheritedFrom");
                                  -            var result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
                                  -                inheritLabel: inheritLabel}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -        else
                                  -        {
                                  -            var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -
                                  -        // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -        if (CssAnalyzer.hasExternalStyleSheet())
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The results here may be inaccurate because some " +
                                  -                        "stylesheets could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"
                                  -            }, this.panelNode);
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        // if the parentStyleSheet.href is null, CSS std says its inline style.
                                  -        // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location
                                  -        if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
                                  -            return rule.parentStyleSheet.href;
                                  -        else
                                  -            return this.selection.ownerDocument.location.href;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getInheritedRules: function(element, sections, usedProps)
                                  -    {
                                  -        var parent = element.parentNode;
                                  -        if (parent && parent.nodeType == 1)
                                  -        {
                                  -            this.getInheritedRules(parent, sections, usedProps);
                                  -
                                  -            var rules = [];
                                  -            this.getElementRules(parent, rules, usedProps, true);
                                  -
                                  -            if (rules.length)
                                  -                sections.splice(0, 0, {element: parent, rules: rules});
                                  -        }
                                  -    },
                                  -
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        
                                  -        inspectedRules = CssAnalyzer.getElementCSSRules(element);
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0, length=inspectedRules.length; i < length; ++i)
                                  -            {
                                  -                var ruleId = inspectedRules[i];
                                  -                var ruleData = CssAnalyzer.getRuleData(ruleId);
                                  -                var rule = ruleData.rule;
                                  -                
                                  -                var ssid = ruleData.styleSheetId;
                                  -                var parentStyleSheet = StyleSheetCache.get(ssid); 
                                  -
                                  -                var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = null;
                                  -                //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = false;
                                  -                //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                //
                                  -                //var line = domUtils.getRuleLine(rule);
                                  -                // TODO: xxxpedro CSS line number 
                                  -                var line = ruleData.lineNo;
                                  -                
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: ruleData.selector, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /*
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        try
                                  -        {
                                  -            inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null;
                                  -        } catch (exc) {}
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0; i < inspectedRules.Count(); ++i)
                                  -            {
                                  -                var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
                                  -
                                  -                var href = rule.parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                var line = domUtils.getRuleLine(rule);
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: rule.selectorText, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /**/
                                  -    markOverridenProps: function(props, usedProps, inheritMode)
                                  -    {
                                  -        for (var i = 0; i < props.length; ++i)
                                  -        {
                                  -            var prop = props[i];
                                  -            if ( usedProps.hasOwnProperty(prop.name) )
                                  -            {
                                  -                var deadProps = usedProps[prop.name]; // all previous occurrences of this property
                                  -                for (var j = 0; j < deadProps.length; ++j)
                                  -                {
                                  -                    var deadProp = deadProps[j];
                                  -                    if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important)
                                  -                        prop.overridden = true;  // new occurrence overridden
                                  -                    else if (!prop.disabled)
                                  -                        deadProp.overridden = true;  // previous occurrences overridden
                                  -                }
                                  -            }
                                  -            else
                                  -                usedProps[prop.name] = [];
                                  -
                                  -            prop.wasInherited = inheritMode ? true : false;
                                  -            usedProps[prop.name].push(prop);  // all occurrences of a property seen so far, by name
                                  -        }
                                  -    },
                                  -
                                  -    getStyleProperties: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(element.style, inheritMode);
                                  -        this.addOldProperties(this.context, getElementXPath(element), inheritMode, props);
                                  -
                                  -        sortProperties(props);
                                  -        this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -        if (props.length)
                                  -            rules.splice(0, 0,
                                  -                    {rule: element, id: getElementXPath(element),
                                  -                        selector: "element.style", props: props, inherited: inheritMode});
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "css",
                                  -    title: "Style",
                                  -    parentPanel: "HTML",
                                  -    order: 0,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -        
                                  -        //this.updateCascadeView(document.getElementsByTagName("h1")[0]);
                                  -        //this.updateCascadeView(document.getElementById("build"));
                                  -        
                                  -        /*
                                  -        this.onStateChange = bindFixed(this.contentStateCheck, this);
                                  -        this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER);
                                  -        this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
                                  -        /**/
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (domUtils)
                                  -        {
                                  -            // Normally these would not be required, but in order to update after the state is set
                                  -            // using the options menu we need to monitor these global events as well
                                  -            var doc = win.document;
                                  -            ///addEvent(doc, "mouseover", this.onHoverChange);
                                  -            ///addEvent(doc, "mousedown", this.onActiveChange);
                                  -        }
                                  -    },
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var doc = win.document;
                                  -        ///removeEvent(doc, "mouseover", this.onHoverChange);
                                  -        ///removeEvent(doc, "mousedown", this.onActiveChange);
                                  -
                                  -        if (isAncestor(this.stateChangeEl, doc))
                                  -        {
                                  -            this.removeStateChangeHandlers();
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Element ? 1 : 0;
                                  -    },
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateCascadeView(element);
                                  -        if (domUtils)
                                  -        {
                                  -            this.contentState = safeGetContentState(element);
                                  -            this.addStateChangeHandlers(element);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(element)
                                  -    {
                                  -        if ( !instanceOf(element , "Element") ) // html supports SourceLink
                                  -            return;
                                  -
                                  -        if (sothinkInstalled)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -
                                  -        /*
                                  -        if (!domUtils)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        this.updateView(element);
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "showUserAgentCSS" || name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var ret = [
                                  -            {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") },
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }
                                  -        ];
                                  -        if (domUtils && this.selection)
                                  -        {
                                  -            var state = safeGetContentState(this.selection);
                                  -
                                  -            ret.push("-");
                                  -            ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE,
                                  -              command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)});
                                  -            ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER,
                                  -              command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)});
                                  -        }
                                  -        return ret;
                                  -    },
                                  -
                                  -    updateContentState: function(state, remove)
                                  -    {
                                  -        domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state);
                                  -        this.refresh();
                                  -    },
                                  -
                                  -    addStateChangeHandlers: function(el)
                                  -    {
                                  -      this.removeStateChangeHandlers();
                                  -
                                  -      /*
                                  -      addEvent(el, "focus", this.onStateChange);
                                  -      addEvent(el, "blur", this.onStateChange);
                                  -      addEvent(el, "mouseup", this.onStateChange);
                                  -      addEvent(el, "mousedown", this.onStateChange);
                                  -      addEvent(el, "mouseover", this.onStateChange);
                                  -      addEvent(el, "mouseout", this.onStateChange);
                                  -      /**/
                                  -
                                  -      this.stateChangeEl = el;
                                  -    },
                                  -
                                  -    removeStateChangeHandlers: function()
                                  -    {
                                  -        var sel = this.stateChangeEl;
                                  -        if (sel)
                                  -        {
                                  -            /*
                                  -            removeEvent(sel, "focus", this.onStateChange);
                                  -            removeEvent(sel, "blur", this.onStateChange);
                                  -            removeEvent(sel, "mouseup", this.onStateChange);
                                  -            removeEvent(sel, "mousedown", this.onStateChange);
                                  -            removeEvent(sel, "mouseover", this.onStateChange);
                                  -            removeEvent(sel, "mouseout", this.onStateChange);
                                  -            /**/
                                  -        }
                                  -    },
                                  -
                                  -    contentStateCheck: function(state)
                                  -    {
                                  -        if (!state || this.contentState & state)
                                  -        {
                                  -            var timeoutRunner = bindFixed(function()
                                  -            {
                                  -                var newState = safeGetContentState(this.selection);
                                  -                if (newState != this.contentState)
                                  -                {
                                  -                    this.context.invalidatePanels(this.name);
                                  -                }
                                  -            }, this);
                                  -
                                  -            // Delay exec until after the event has processed and the state has been updated
                                  -            setTimeout(timeoutRunner, 0);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -function safeGetContentState(selection)
                                  -{
                                  -    try
                                  -    {
                                  -        return domUtils.getContentState(selection);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("css.safeGetContentState; EXCEPTION", e);
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function CSSComputedElementPanel() {}
                                  -
                                  -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        computedTag:
                                  -            DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')},
                                  -                FOR("group", "$groups",
                                  -                    H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"},
                                  -                        SPAN({"class": "cssInheritLabel"}, "$group.title")
                                  -                    ),
                                  -                    TABLE({width: "100%", role : 'group'},
                                  -                        TBODY({role : 'presentation'},
                                  -                            FOR("prop", "$group.props",
                                  -                                TR({"class": 'focusRow computedStyleRow', role : 'listitem'},
                                  -                                    TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"),
                                  -                                    TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value")
                                  -                                )
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateComputedView: function(element)
                                  -    {
                                  -        var win = isIE ?
                                  -                element.ownerDocument.parentWindow :
                                  -                element.ownerDocument.defaultView;
                                  -        
                                  -        var style = isIE ?
                                  -                element.currentStyle :
                                  -                win.getComputedStyle(element, "");
                                  -
                                  -        var groups = [];
                                  -
                                  -        for (var groupName in styleGroups)
                                  -        {
                                  -            // TODO: xxxpedro i18n $STR
                                  -            //var title = $STR("StyleGroup-" + groupName);
                                  -            var title = styleGroupTitles[groupName];
                                  -            var group = {title: title, props: []};
                                  -            groups.push(group);
                                  -
                                  -            var props = styleGroups[groupName];
                                  -            for (var i = 0; i < props.length; ++i)
                                  -            {
                                  -                var propName = props[i];
                                  -                var propValue = style.getPropertyValue ?
                                  -                        style.getPropertyValue(propName) :
                                  -                        ""+style[toCamelCase(propName)];
                                  -                
                                  -                if (propValue === undefined || propValue === null) 
                                  -                    continue;
                                  -                
                                  -                propValue = stripUnits(rgbToHex(propValue));
                                  -                if (propValue)
                                  -                    group.props.push({name: propName, value: propValue});
                                  -            }
                                  -        }
                                  -
                                  -        var result = this.template.computedTag.replace({groups: groups}, this.panelNode);
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "computed",
                                  -    title: "Computed",
                                  -    parentPanel: "HTML",
                                  -    order: 1,
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateComputedView(element);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSSEditor
                                  -
                                  -function CSSEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var rule = Firebug.getRepObject(target);
                                  -        var emptyProp = 
                                  -        {
                                  -            // TODO: xxxpedro - uses charCode(255) to force the element being rendered, 
                                  -            // allowing webkit to get the correct position of the property name "span",
                                  -            // when inserting a new CSS rule?
                                  -            name: "",
                                  -            value: "",
                                  -            important: ""
                                  -        };
                                  -
                                  -        if (insertWhere == "before")
                                  -            return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
                                  -        else
                                  -            return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // We need to check the value first in order to avoid a problem in IE8 
                                  -        // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite 
                                  -        if (!value) return;
                                  -        
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (hasClass(row, "disabledStyle"))
                                  -            toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(target);
                                  -
                                  -        if (hasClass(target, "cssPropName"))
                                  -        {
                                  -            if (value && previousValue != value)  // name of property has changed.
                                  -            {
                                  -                var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -                var parsedValue = parsePriority(propValue);
                                  -
                                  -                if (propValue && propValue != "undefined") {
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n");
                                  -                    if (previousValue)
                                  -                        Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -                    Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
                                  -                }
                                  -            }
                                  -            else if (!value) // name of the property has been deleted, so remove the property.
                                  -                Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -        }
                                  -        else if (getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -
                                  -            if (FBTrace.DBG_CSS)
                                  -            {
                                  -                FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n");
                                  -               // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
                                  -            }
                                  -
                                  -            if (value && value != "null")
                                  -            {
                                  -                var parsedValue = parsePriority(value);
                                  -                Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -            }
                                  -            else if (previousValue && previousValue != "null")
                                  -                Firebug.CSSModule.removeProperty(rule, propName);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -            return {start: 0, end: value.length-1};
                                  -        else
                                  -            return parseCSSValue(value, offset);
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -        {
                                  -            return getCSSPropertyNames();
                                  -        }
                                  -        else
                                  -        {
                                  -            var row = getAncestorByClass(this.target, "cssProp");
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            return getCSSKeywordsByProperty(propName);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//CSSRuleEditor
                                  -
                                  -function CSSRuleEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -    this.completeAsYouType = false;
                                  -}
                                  -CSSRuleEditor.uniquifier = 0;
                                  -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -         var emptyRule = {
                                  -                 selector: "",
                                  -                 id: "",
                                  -                 props: [],
                                  -                 isSelectorEditable: true
                                  -         };
                                  -
                                  -         if (insertWhere == "before")
                                  -             return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
                                  -         else
                                  -             return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "'  '" + previousValue + "'", target);
                                  -
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        if (value === previousValue)     return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        var styleSheet = this.panel.location;
                                  -        styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        var rule = Firebug.getRepObject(target), oldRule = rule;
                                  -        var ruleIndex = cssRules.length;
                                  -        if (rule || Firebug.getRepObject(row.nextSibling))
                                  -        {
                                  -            var searchRule = rule || Firebug.getRepObject(row.nextSibling);
                                  -            for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex]; ruleIndex++) {}
                                  -        }
                                  -
                                  -        // Delete in all cases except for new add
                                  -        // We want to do this before the insert to ease change tracking
                                  -        if (oldRule)
                                  -        {
                                  -            Firebug.CSSModule.deleteRule(styleSheet, ruleIndex);
                                  -        }
                                  -
                                  -        // Firefox does not follow the spec for the update selector text case.
                                  -        // When attempting to update the value, firefox will silently fail.
                                  -        // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
                                  -        // old discussion of this bug.
                                  -        // As a result we need to recreate the style every time the selector
                                  -        // changes.
                                  -        if (value)
                                  -        {
                                  -            var cssText = [ value, "{" ];
                                  -            var props = row.getElementsByClassName("cssProp");
                                  -            for (var i = 0; i < props.length; i++) {
                                  -                var propEl = props[i];
                                  -                if (!hasClass(propEl, "disabledStyle")) {
                                  -                    cssText.push(getChildByClass(propEl, "cssPropName")[textContent]);
                                  -                    cssText.push(":");
                                  -                    cssText.push(getChildByClass(propEl, "cssPropValue")[textContent]);
                                  -                    cssText.push(";");
                                  -                }
                                  -            }
                                  -            cssText.push("}");
                                  -            cssText = cssText.join("");
                                  -
                                  -            try
                                  -            {
                                  -                var insertLoc = Firebug.CSSModule.insertRule(styleSheet, cssText, ruleIndex);
                                  -                rule = cssRules[insertLoc];
                                  -                ruleIndex++;
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("CSS Insert Error: "+err, err);
                                  -
                                  -                target.innerHTML = escapeForCss(previousValue);
                                  -                row.repObject = undefined;
                                  -                return;
                                  -            }
                                  -        } else {
                                  -            rule = undefined;
                                  -        }
                                  -
                                  -        // Update the rep object
                                  -        row.repObject = rule;
                                  -        if (!oldRule)
                                  -        {
                                  -            // Who knows what the domutils will return for rule line
                                  -            // for a recently created rule. To be safe we just generate
                                  -            // a unique value as this is only used as an internal key.
                                  -            var ruleId = "new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -            row.setAttribute("ruleId", ruleId);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheetEditor
                                  -
                                  -function StyleSheetEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -}
                                  -
                                  -StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    multiLine: true,
                                  -
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        if (this.box.parentNode == this.panel.panelNode)
                                  -            this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -        delete this.styleSheet;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        Firebug.CSSModule.freeEdit(this.styleSheet, value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        this.panel.refresh();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    },
                                  -
                                  -    scrollToLine: function(line, offset)
                                  -    {
                                  -        this.startMeasuring(this.input);
                                  -        var lineHeight = this.measureText().height;
                                  -        this.stopMeasuring();
                                  -
                                  -        this.input.scrollTop = (line * lineHeight) + offset;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var rgbToHex = function rgbToHex(value)
                                  -{
                                  -    return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, rgbToHexReplacer);
                                  -};
                                  -
                                  -var rgbToHexReplacer = function(_, r, g, b) {
                                  -    return '#' + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
                                  -};
                                  -
                                  -var stripUnits = function stripUnits(value)
                                  -{
                                  -    // remove units from '0px', '0em' etc. leave non-zero units in-tact.
                                  -    return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi, stripUnitsReplacer);
                                  -};
                                  -
                                  -var stripUnitsReplacer = function(_, skip, remove, whitespace) {
                                  -    return skip || ('0' + whitespace);
                                  -};
                                  -
                                  -function parsePriority(value)
                                  -{
                                  -    var rePriority = /(.*?)\s*(!important)?$/;
                                  -    var m = rePriority.exec(value);
                                  -    var propValue = m ? m[1] : "";
                                  -    var priority = m && m[2] ? "important" : "";
                                  -    return {value: propValue, priority: priority};
                                  -}
                                  -
                                  -function parseURLValue(value)
                                  -{
                                  -    var m = reURL.exec(value);
                                  -    return m ? m[1] : "";
                                  -}
                                  -
                                  -function parseRepeatValue(value)
                                  -{
                                  -    var m = reRepeat.exec(value);
                                  -    return m ? m[0] : "";
                                  -}
                                  -
                                  -function parseCSSValue(value, offset)
                                  -{
                                  -    var start = 0;
                                  -    var m;
                                  -    while (1)
                                  -    {
                                  -        m = reSplitCSS.exec(value);
                                  -        if (m && m.index+m[0].length < offset)
                                  -        {
                                  -            value = value.substr(m.index+m[0].length);
                                  -            start += m.index+m[0].length;
                                  -            offset -= m.index+m[0].length;
                                  -        }
                                  -        else
                                  -            break;
                                  -    }
                                  -
                                  -    if (m)
                                  -    {
                                  -        var type;
                                  -        if (m[1])
                                  -            type = "url";
                                  -        else if (m[2] || m[3])
                                  -            type = "rgb";
                                  -        else if (m[4])
                                  -            type = "int";
                                  -
                                  -        return {value: m[0], start: start+m.index, end: start+m.index+(m[0].length-1), type: type};
                                  -    }
                                  -}
                                  -
                                  -function findPropByName(props, name)
                                  -{
                                  -    for (var i = 0; i < props.length; ++i)
                                  -    {
                                  -        if (props[i].name == name)
                                  -            return i;
                                  -    }
                                  -}
                                  -
                                  -function sortProperties(props)
                                  -{
                                  -    props.sort(function(a, b)
                                  -    {
                                  -        return a.name > b.name ? 1 : -1;
                                  -    });
                                  -}
                                  -
                                  -function getTopmostRuleLine(panelNode)
                                  -{
                                  -    for (var child = panelNode.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
                                  -        {
                                  -            var rule = child.repObject;
                                  -            if (rule)
                                  -                return {
                                  -                    line: domUtils.getRuleLine(rule),
                                  -                    offset: panelNode.scrollTop-child.offsetTop
                                  -                };
                                  -        }
                                  -    }
                                  -    return 0;
                                  -}
                                  -
                                  -function getStyleSheetCSS(sheet, context)
                                  -{
                                  -    if (sheet.ownerNode instanceof HTMLStyleElement)
                                  -        return sheet.ownerNode.innerHTML;
                                  -    else
                                  -        return context.sourceCache.load(sheet.href).join("");
                                  -}
                                  -
                                  -function getStyleSheetOwnerNode(sheet) {
                                  -    for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
                                  -
                                  -    return sheet.ownerNode;
                                  -}
                                  -
                                  -function scrollSelectionIntoView(panel)
                                  -{
                                  -    var selCon = getSelectionController(panel);
                                  -    selCon.scrollSelectionIntoView(
                                  -            nsISelectionController.SELECTION_NORMAL,
                                  -            nsISelectionController.SELECTION_FOCUS_REGION, true);
                                  -}
                                  -
                                  -function getSelectionController(panel)
                                  -{
                                  -    var browser = Firebug.chrome.getPanelBrowser(panel);
                                  -    return browser.docShell.QueryInterface(nsIInterfaceRequestor)
                                  -        .getInterface(nsISelectionDisplay)
                                  -        .QueryInterface(nsISelectionController);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    selectIndex: 0, // index of the current selectNode's option
                                  -    sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script")
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            // Don't show Firebug Lite source code in the list of options
                                  -            if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
                                  -                continue;
                                  -            
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // we must render the code first, so the persistent state can be restore
                                  -        this.selectSourceCode(this.selectIndex);
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.selectIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.selectIndex = index;
                                  -        this.sourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        var select = this.selectNode;
                                  -        
                                  -        this.selectIndex = select.selectedIndex;
                                  -        
                                  -        var option = select.options[select.selectedIndex];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        var select = this.selectNode; 
                                  -        select.selectedIndex = index;
                                  -        
                                  -        var option = select.options[index];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.sourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.panelNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode);
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (Firebug.disableResourceFetching)
                                  -                {
                                  -                    renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage);
                                  -                }
                                  -                else if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                onFailure();
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[Firebug.Lite.Cache.ID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {};
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    /*
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    /**/
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var defaultObject = this.getDefaultSelection(this.context);
                                  -            var selectObject = defaultObject; 
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro dom 
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val) && !(name in domMembers))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers && !(name in domConstantMap))
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -};
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -// FIXME: xxxpedro This function is already defined in Lib. If we keep this definition here, it
                                  -// will crash IE9 when not running the IE Developer Tool with JavaScript Debugging enabled!!!
                                  -// Check if this function is in fact defined in Firebug for Firefox. If so, we should remove
                                  -// this from here. The only difference of this function is the IE hack to show up the prototype
                                  -// of functions, but Firebug no longer shows the prototype for simple functions.
                                  -//var hasProperties = function hasProperties(ob)
                                  -//{
                                  -//    try
                                  -//    {
                                  -//        for (var name in ob)
                                  -//            return true;
                                  -//    } catch (exc) {}
                                  -//    
                                  -//    // IE function prototype is not listed in (for..in)
                                  -//    if (isFunction(ob)) return true;
                                  -//    
                                  -//    return false;
                                  -//};
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -};
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -};
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -};
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -};
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -};
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -};
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1,
                                  -    DBG_CSS: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.panelNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().panelNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.clearButton.shutdown();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -var registerModule = Firebug.registerModule;
                                  -var registerPanel = Firebug.registerPanel;
                                  -
                                  -// ************************************************************************************************
                                  -append(Firebug,
                                  -{
                                  -    extend: function(fn)
                                  -    {
                                  -        if (Firebug.chrome && Firebug.chrome.addPanel)
                                  -        {
                                  -            var namespace = ns(fn);
                                  -            fn.call(namespace, FBL);
                                  -        }
                                  -        else
                                  -        {
                                  -            setTimeout(function(){Firebug.extend(fn);},100);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        registerModule.apply(Firebug, arguments);
                                  -        
                                  -        modules.push.apply(modules, arguments);
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        registerPanel.apply(Firebug, arguments);
                                  -        
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            // TODO: xxxpedro investigate why Dev Panel throws an error
                                  -            if (panelType.prototype.name == "Dev") continue;
                                  -            
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            var parentPanelName = panelType.prototype.parentPanel;
                                  -            if (parentPanelName)
                                  -            {
                                  -                parentPanelMap[parentPanelName] = 1;
                                  -            }
                                  -            else
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -                var chrome = Firebug.chrome;
                                  -                chrome.addPanel(panelName);
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    chrome.selectPanel(panelName);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]);                
                                  -            }
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.Skin = 
                                  -{
                                  -    CSS: '.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.png) repeat-y;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.png) repeat-y 100% 0;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.png) no-repeat 0 100%;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disable.png) no-repeat 2px 1px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disableHover.png) no-repeat 2px 1px;_background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.png) no-repeat !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/min.png);}#fbWindow_btClose:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/minHover.png);}#fbWindow_btDetach{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/detach.png);}#fbWindow_btDetach:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/detachHover.png);}#fbWindow_btDeactivate{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/off.png);}#fbWindow_btDeactivate:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/infoIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/warningIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.png) !important;background-image:url(chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug.jpg b/branches/flexBox/build/chrome-extension/firebug.jpg
                                  deleted file mode 100644
                                  index 2a18aa0d..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug.jpg and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug128.png b/branches/flexBox/build/chrome-extension/firebug128.png
                                  deleted file mode 100644
                                  index dbca545f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug128.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug16.png b/branches/flexBox/build/chrome-extension/firebug16.png
                                  deleted file mode 100644
                                  index d8d0c249..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug16.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug24.png b/branches/flexBox/build/chrome-extension/firebug24.png
                                  deleted file mode 100644
                                  index f50ff926..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug24.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug24_disabled.png b/branches/flexBox/build/chrome-extension/firebug24_disabled.png
                                  deleted file mode 100644
                                  index 16d4dcde..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug24_disabled.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug32.png b/branches/flexBox/build/chrome-extension/firebug32.png
                                  deleted file mode 100644
                                  index c02f4f5f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug32.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/firebug48.png b/branches/flexBox/build/chrome-extension/firebug48.png
                                  deleted file mode 100644
                                  index b4431327..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/firebug48.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/googleChrome.js b/branches/flexBox/build/chrome-extension/googleChrome.js
                                  deleted file mode 100644
                                  index 26c8af3d..00000000
                                  --- a/branches/flexBox/build/chrome-extension/googleChrome.js
                                  +++ /dev/null
                                  @@ -1,106 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -Firebug.extend(function(FBL) { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (!Env.isChromeExtension) return;
                                  -
                                  -// ************************************************************************************************
                                  -// local variables
                                  -
                                  -var channel;
                                  -var channelEvent;
                                  -
                                  -// ************************************************************************************************
                                  -// GoogleChrome Module
                                  -
                                  -Firebug.GoogleChrome = extend(Firebug.Module,
                                  -{
                                  -    initialize: function()
                                  -    {
                                  -        var doc = FBL.Env.browser.document;
                                  -        
                                  -        if (!doc.getElementById("FirebugChannel"))
                                  -        {
                                  -            channel = doc.createElement("div");
                                  -            channel.id = "FirebugChannel";
                                  -            channel.firebugIgnore = true;
                                  -            channel.style.display = "none";
                                  -            doc.documentElement.insertBefore(channel, doc.documentElement.firstChild);
                                  -            
                                  -            channelEvent = document.createEvent("Event");
                                  -            channelEvent.initEvent("FirebugChannelEvent", true, true);
                                  -            
                                  -            channel.addEventListener("FirebugChannelEvent", onFirebugChannelEvent);
                                  -        }
                                  -    },
                                  -
                                  -    dispatch: function(message)
                                  -    {
                                  -        channel.innerText = message;
                                  -        channel.dispatchEvent(channelEvent);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// internals
                                  -
                                  -var onFirebugChannelEvent = function()
                                  -{
                                  -    var name = channel.innerText;
                                  -    
                                  -    if (name.indexOf("FB_contextMenuClick") == 0)
                                  -    {
                                  -        var doc = FBL.Env.browser.document;
                                  -        var contextMenuElementXPath = name.split(",")[1];
                                  -        var contextMenuElement = getElementsByXPath(doc, contextMenuElementXPath)[0];
                                  -
                                  -        // If not open, open it first
                                  -        Firebug.chrome.toggle(true);
                                  -        
                                  -        setTimeout(function(){
                                  -
                                  -            // Select the HTML panel
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -
                                  -            // Select the clicked element in the HTML tree
                                  -            Firebug.HTML.select(contextMenuElement);
                                  -        
                                  -        },50);
                                  -    }
                                  -    else if (name == "FB_toggle")
                                  -    {
                                  -        Firebug.chrome.toggle();
                                  -    }
                                  -    else if (name == "FB_openInNewWindow")
                                  -    {
                                  -        setTimeout(function(){
                                  -            Firebug.chrome.toggle(true, true);
                                  -        },0);
                                  -    }
                                  -};
                                  -
                                  -var getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.GoogleChrome);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/license.txt b/branches/flexBox/build/chrome-extension/license.txt
                                  deleted file mode 100644
                                  index ba43b751..00000000
                                  --- a/branches/flexBox/build/chrome-extension/license.txt
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2007, Parakey Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Parakey Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Parakey Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  diff --git a/branches/flexBox/build/chrome-extension/manifest.json b/branches/flexBox/build/chrome-extension/manifest.json
                                  deleted file mode 100644
                                  index 01fe877e..00000000
                                  --- a/branches/flexBox/build/chrome-extension/manifest.json
                                  +++ /dev/null
                                  @@ -1,35 +0,0 @@
                                  -{
                                  -  "name": "Firebug Lite for Google Chromeâ„¢",
                                  -  "version": "1.4.0.11961",
                                  -  "description": "Firebug Lite for Google Chrome, supported by the Firebug Working Group.",
                                  -  "background_page": "background.html",
                                  -  "browser_action":
                                  -  {
                                  -    "default_icon": "firebug24_disabled.png",
                                  -    "default_title": "Firebug Lite 1.4.0"
                                  -  },
                                  -  "icons":
                                  -  {
                                  -    "128": "firebug128.png",
                                  -    "16": "firebug16.png",
                                  -    "32": "firebug32.png",
                                  -    "48": "firebug48.png"
                                  -  },
                                  -  "content_scripts":
                                  -  [
                                  -    {
                                  -      "matches": ["http://*/*", "https://*/*"],
                                  -      "js": ["contentScript.js"],
                                  -      "run_at": "document_start"
                                  -    }
                                  -  ],
                                  -  "permissions":
                                  -  [
                                  -    "contextMenus",
                                  -    "tabs", 
                                  -    "http://*/*", 
                                  -    "https://*/*",
                                  -    "http://127.0.0.1/*",
                                  -    "http://localhost/*"
                                  -  ]
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/blank.gif b/branches/flexBox/build/chrome-extension/skin/xp/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/buttonBg.png b/branches/flexBox/build/chrome-extension/skin/xp/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/buttonBgHover.png b/branches/flexBox/build/chrome-extension/skin/xp/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/debugger.css b/branches/flexBox/build/chrome-extension/skin/xp/debugger.css
                                  deleted file mode 100644
                                  index 4a64d266..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/debugger.css
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-script {
                                  -    overflow: hidden;
                                  -    font-family: monospace;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.scriptTooltip {
                                  -    position: fixed;
                                  -    z-index: 2147483647;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceBox {
                                  -    /* TODO: xxxpedro problem with sourceBox and scrolling elements */
                                  -    /*overflow: scroll; /* see issue 1479 */
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    white-space: nowrap;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceLine {
                                  -    -moz-user-select: none;
                                  -    margin-right: 10px;
                                  -    border-right: 1px solid #CCCCCC;
                                  -    padding: 0px 4px 0 20px;
                                  -    background: #EEEEEE no-repeat 2px 0px;
                                  -    color: #888888;
                                  -    white-space: pre;
                                  -    font-family: monospace; /* see issue 2953 */
                                  -}
                                  -
                                  -.noteInToolTip { /* below sourceLine, so it overrides it */
                                  -    background-color: #FFD472;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus .sourceLine {
                                  -    background-color: #FFFFC0;
                                  -    color: navy;
                                  -    border-right: 1px solid black;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -.a11y1emSize {
                                  -    width: 1em;
                                  -    height: 1em;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.useA11y .panelStatusLabel:focus {
                                  -    outline-offset: -2px !important;
                                  - }
                                  -
                                  -.sourceBox > .sourceRow > .sourceLine {
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.sourceLine:hover {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.sourceRowText {
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] {
                                  -    outline: 1px solid #D9D9B6;
                                  -    margin-right: 1px;
                                  -    background-color: lightgoldenrodyellow;
                                  -}
                                  -
                                  -.sourceRow[executable="true"] > .sourceLine {
                                  -    content: "-";
                                  -    color: #4AA02C;  /* Spring Green */
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/exe.png);
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointCondition.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointExe.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabledExe.png);
                                  -}
                                  -
                                  -.sourceLine.editing {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.conditionEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    margin-top: 0;
                                  -    left: 2px;
                                  -    width: 90%;
                                  -}
                                  -
                                  -.conditionEditorInner {
                                  -    position: relative;
                                  -    top: -26px;
                                  -    height: 0;
                                  -}
                                  -
                                  -.conditionCaption {
                                  -    margin-bottom: 2px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    font-size: 11px;
                                  -    color: #226679;
                                  -}
                                  -
                                  -.conditionInput {
                                  -    width: 100%;
                                  -    border: 1px solid #0096C0;
                                  -    font-family: monospace;
                                  -    font-size: inherit;
                                  -}
                                  -
                                  -.conditionEditorInner1 {
                                  -    padding-left: 37px;
                                  -    background: url(condBorders.png) repeat-y;
                                  -}
                                  -
                                  -.conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBorders.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.conditionEditorTop1 {
                                  -    background: url(condCorners.png) no-repeat 100% 0;
                                  -    margin-left: 37px;
                                  -    height: 35px;
                                  -}
                                  -
                                  -.conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -37px;
                                  -    width: 37px;
                                  -    height: 35px;
                                  -    background: url(condCorners.png) no-repeat;
                                  -}
                                  -
                                  -.conditionEditorBottom1 {
                                  -    background: url(condCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 37px;
                                  -    height: 33px;
                                  -}
                                  -
                                  -.conditionEditorBottom2 {
                                  -    position: relative;    left: -37px;
                                  -    width: 37px;
                                  -    height: 33px;
                                  -    background: url(condCorners.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.upsideDown {
                                  -    margin-top: 2px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner {
                                  -    top: -8px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner1 {
                                  -    padding-left: 33px;
                                  -    background: url(condBordersUps.png) repeat-y;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBordersUps.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 0;
                                  -    margin-left: 33px;
                                  -    height: 25px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 25px;
                                  -    background: url(condCornersUps.png) no-repeat;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 100%;
                                  -    margin-left: 33px;
                                  -    height: 43px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 43px;
                                  -    background: url(condCornersUps.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointsGroupListBox {
                                  -  overflow: hidden;
                                  -}
                                  -
                                  -.breakpointBlockHead {
                                  -    position: relative;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .checkbox {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .objectLink-sourceLink {
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    background-color: #FFFFFF; /* issue 3308 */
                                  -}
                                  -
                                  -.breakpointBlockHead > .closeButton {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 2px;
                                  -}
                                  -
                                  -.breakpointCheckbox {
                                  -    margin-top: 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.breakpointName {
                                  -    margin-left: 4px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] > .breakpointBlockHead > *,
                                  -.breakpointRow[aria-checked="false"] > .breakpointCode {
                                  -    opacity: 0.5;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] .breakpointCheckbox,
                                  -.breakpointRow[aria-checked="false"] .objectLink-sourceLink,
                                  -.breakpointRow[aria-checked="false"] .closeButton,
                                  -.breakpointRow[aria-checked="false"] .breakpointMutationType {
                                  -    opacity: 1.0 !important;
                                  -}
                                  -
                                  -.breakpointCode {
                                  -    overflow: hidden;
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.breakpointCondition {
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: Gray;
                                  -}
                                  -
                                  -.breakpointBlock-breakpoints > .groupHeader {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointBlock-monitors > .breakpointCode {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.breakpointBlock-errorBreakpoints .breakpointCheckbox,
                                  -.breakpointBlock-monitors .breakpointCheckbox {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointHeader {
                                  -    margin: 0 !important;
                                  -    border-top: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/detach.png b/branches/flexBox/build/chrome-extension/skin/xp/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/detachHover.png b/branches/flexBox/build/chrome-extension/skin/xp/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/disable.gif b/branches/flexBox/build/chrome-extension/skin/xp/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/disable.png b/branches/flexBox/build/chrome-extension/skin/xp/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/disableHover.gif b/branches/flexBox/build/chrome-extension/skin/xp/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/disableHover.png b/branches/flexBox/build/chrome-extension/skin/xp/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/down.png b/branches/flexBox/build/chrome-extension/skin/xp/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/downActive.png b/branches/flexBox/build/chrome-extension/skin/xp/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/downHover.png b/branches/flexBox/build/chrome-extension/skin/xp/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon-sm.png b/branches/flexBox/build/chrome-extension/skin/xp/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.gif b/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.png b/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/firebug-1.3a2.css b/branches/flexBox/build/chrome-extension/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index b5dd5dde..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/firebug.IE6.css b/branches/flexBox/build/chrome-extension/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/firebug.css b/branches/flexBox/build/chrome-extension/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index cc33761c..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,3147 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -.obscured {
                                  -    left: -999999px !important;
                                  -}
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -	font-size: 11px;
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -	font-size: 11px;
                                  -    font: Monaco, monospace;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    -webkit-border-radius: 4px 4px 0 0;
                                  -    border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    white-space: pre-wrap;
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -    min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties IE6 */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -
                                  -* html .logRow-spy .spyHead .spyTitle,
                                  -* html .logGroup .logGroupLabel,
                                  -* html .hasChildren .memberLabelCell .memberLabel,
                                  -* html .hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -* html .opened .spyHead .spyTitle,
                                  -* html .opened .logGroupLabel, 
                                  -* html .opened .memberLabelCell .memberLabel {
                                  -    background-image: url(tree_close.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -/* xxxpedro reps object representation .................................... */
                                  -.objectProp-object {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectProps {
                                  -    color: #000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.objectPropName {
                                  -    /*font-style: italic;*/
                                  -    color: #777;
                                  -}
                                  -
                                  -/*
                                  -.objectProps .objectProp-string,
                                  -.objectProps .objectProp-number,
                                  -.objectProps .objectProp-object
                                  -{
                                  -    font-style: italic;
                                  -}
                                  -/**/
                                  -
                                  -.objectProps .objectProp-string
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #f55;
                                  -}
                                  -.objectProps .objectProp-number
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #55a;
                                  -}
                                  -.objectProps .objectProp-object
                                  -{
                                  -    /*font-family: Lucida Grande,sans-serif;*/
                                  -    color: #585;
                                  -}
                                  -/* xxxpedro reps object representation .................................... */
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.objectEqual,
                                  -.objectComma,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.objectRightBrace,
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    border-spacing: 0;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbChrome > tbody > tr > td {
                                  -    padding: 0;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 48px;
                                  -    padding: 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em/1.4545em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/firebug.html b/branches/flexBox/build/chrome-extension/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index 22960919..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,215 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<!-- An empty script to avoid FOUC when loading the stylesheet -->
                                  -<script type="text/javascript"></script>
                                  -<style type="text/css" media="screen">@import "firebug.css";</style>
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/firebug.png b/branches/flexBox/build/chrome-extension/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/group.gif b/branches/flexBox/build/chrome-extension/skin/xp/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/html.css b/branches/flexBox/build/chrome-extension/skin/xp/html.css
                                  deleted file mode 100644
                                  index 9d0afb50..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/html.css
                                  +++ /dev/null
                                  @@ -1,272 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-html {
                                  -    -moz-box-sizing: padding-box;
                                  -    padding: 4px 0 0 2px;
                                  -}
                                  -
                                  -.nodeBox {
                                  -    position: relative;
                                  -    font-family: Monaco, monospace;
                                  -    padding-left: 13px;
                                  -    -moz-user-select: -moz-none;
                                  -}
                                  -.nodeBox.search-selection {
                                  -    -moz-user-select: text;
                                  -}
                                  -.twisty {
                                  -    position: absolute;
                                  -    left: 0px;
                                  -    top: 0px;
                                  -    width: 14px;
                                  -    height: 14px;
                                  -}
                                  -
                                  -.nodeChildBox {
                                  -    margin-left: 12px;
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeLabel,
                                  -.nodeCloseLabel {
                                  -    margin: -2px 2px 0 2px;
                                  -    border: 2px solid transparent;
                                  -    -moz-border-radius: 3px;
                                  -    padding: 0 2px;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeCloseLabel {
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,
                                  -.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeWhiteSpace {
                                  -    border: 1px solid LightGray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -.nodeWhiteSpace_Space {
                                  -    border: 1px solid #ddd;
                                  -}
                                  -
                                  -.nodeTextEntity {
                                  -    border: 1px solid gray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlightOpen > .nodeLabel {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -.nodeBox.highlightOpen > .nodeCloseLabel,
                                  -.nodeBox.highlightOpen > .nodeChildBox,
                                  -.nodeBox.open > .nodeCloseLabel,
                                  -.nodeBox.open > .nodeChildBox {
                                  -    display: block;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel {
                                  -    border-color: Highlight;
                                  -    background-color: Highlight;
                                  -    color: HighlightText !important;
                                  -}
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: inherit !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlighted > .nodeLabel {
                                  -    border-color: Highlight !important;
                                  -    background-color: cyan !important;
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden .nodeCloseLabel,
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
                                  -.nodeBox.nodeHidden .nodeText {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.mutated > .nodeLabel,
                                  -.nodeAttr.mutated,
                                  -.nodeValue.mutated,
                                  -.nodeText.mutated,
                                  -.nodeBox.mutated > .nodeText {
                                  -    background-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -.nodeBox.selected.mutated > .nodeLabel,
                                  -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
                                  -    background-color: #EFFF79;
                                  -    border-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-dirxml {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.soloElement > .nodeBox  {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.useA11y .nodeLabel.focused {
                                  -    outline: 2px solid #FF9933;
                                  -    -moz-outline-radius: 3px;
                                  -    outline-offset: -2px;
                                  -}
                                  -
                                  -.useA11y .nodeLabelBox:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointCode .twisty {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointCode .nodeBox.containerNodeBox,
                                  -.breakpointCode .nodeLabel {
                                  -    padding-left: 0px;
                                  -    margin-left: 0px;
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.breakpointCode .nodeTag,
                                  -.breakpointCode .nodeAttr,
                                  -.breakpointCode .nodeText,
                                  -.breakpointCode .nodeValue,
                                  -.breakpointCode .nodeLabel {
                                  -    color: DarkGreen !important;
                                  -}
                                  -
                                  -.breakpointMutationType {
                                  -    position: absolute;
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(twistyClosed.png);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -	min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(twistyOpen.png);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.gif b/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.png b/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/loading_16.gif b/branches/flexBox/build/chrome-extension/skin/xp/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/min.png b/branches/flexBox/build/chrome-extension/skin/xp/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/minHover.png b/branches/flexBox/build/chrome-extension/skin/xp/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/off.png b/branches/flexBox/build/chrome-extension/skin/xp/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/offHover.png b/branches/flexBox/build/chrome-extension/skin/xp/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/pixel_transparent.gif b/branches/flexBox/build/chrome-extension/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/roundCorner.svg b/branches/flexBox/build/chrome-extension/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/build/chrome-extension/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/search.gif b/branches/flexBox/build/chrome-extension/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/search.png b/branches/flexBox/build/chrome-extension/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/shadow.gif b/branches/flexBox/build/chrome-extension/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/shadow2.gif b/branches/flexBox/build/chrome-extension/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/shadowAlpha.png b/branches/flexBox/build/chrome-extension/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/sprite.png b/branches/flexBox/build/chrome-extension/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverLeft.png b/branches/flexBox/build/chrome-extension/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverMid.png b/branches/flexBox/build/chrome-extension/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverRight.png b/branches/flexBox/build/chrome-extension/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabLeft.png b/branches/flexBox/build/chrome-extension/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuCheckbox.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuPin.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuRadio.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTarget.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTargetHover.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabMid.png b/branches/flexBox/build/chrome-extension/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tabRight.png b/branches/flexBox/build/chrome-extension/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.gif b/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.png b/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.gif b/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.png b/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/titlebarMid.png b/branches/flexBox/build/chrome-extension/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/toolbarMid.png b/branches/flexBox/build/chrome-extension/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tree_close.gif b/branches/flexBox/build/chrome-extension/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/tree_open.gif b/branches/flexBox/build/chrome-extension/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/twistyClosed.png b/branches/flexBox/build/chrome-extension/skin/xp/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/twistyOpen.png b/branches/flexBox/build/chrome-extension/skin/xp/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/up.png b/branches/flexBox/build/chrome-extension/skin/xp/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/upActive.png b/branches/flexBox/build/chrome-extension/skin/xp/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/upHover.png b/branches/flexBox/build/chrome-extension/skin/xp/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.gif b/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.png b/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/build/chrome-extension/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/build/compress.bat b/branches/flexBox/build/compress.bat
                                  deleted file mode 100644
                                  index ebc54a3e..00000000
                                  --- a/branches/flexBox/build/compress.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug-lite.js firebug-lite-debug.js
                                  -
                                  -pause
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/firebug-lite-beta.js b/branches/flexBox/build/firebug-lite-beta.js
                                  deleted file mode 100644
                                  index ca4dc52e..00000000
                                  --- a/branches/flexBox/build/firebug-lite-beta.js
                                  +++ /dev/null
                                  @@ -1,31108 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.5.0-flex-a2
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -/** @namespace describe lib */
                                  -
                                  -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE 
                                  -window.FBL = {};
                                  -
                                  -( /** @scope s_lib @this FBL */ function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion = 4;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// Globals
                                  -this.reJavascript = /\s*javascript:\s*(.*)/;
                                  -this.reChrome = /chrome:\/\/([^\/]*)\//;
                                  -this.reFile = /file:\/\/([^\/]*)\//;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // Firebug Lite is already running in persistent mode so we just quit
                                  -    if (window.firebug && firebug.firebuglite || window.console && console.firebuglite)
                                  -        return;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyEnvironment;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        // The problem is that we don't have the Firebug object yet, so we can't use 
                                  -        // Firebug.loadPrefs. We're using the Store module directly instead.
                                  -        var prefs = FBL.Store.get("FirebugLite") || {};
                                  -        FBL.Env.DefaultOptions = FBL.Env.Options;
                                  -        FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {});
                                  -        
                                  -        if (FBL.isFirefox && 
                                  -            typeof FBL.Env.browser.console == "object" && 
                                  -            FBL.Env.browser.console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -                return;
                                  -    }
                                  -    
                                  -    // exposes the FBL to the global namespace when in debug mode
                                  -    if (FBL.Env.isDebugMode)
                                  -    {
                                  -        FBL.Env.browser.FBL = FBL;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -    FBL.Firebug.loadPrefs();
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // wait document load
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: true,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        disableXHRListener: false,
                                  -        disableResourceFetching: false,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "flexBox",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isDebugMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyEnvironment = function destroyEnvironment()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    var hasSrcAttribute = true;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                {
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                    hasSrcAttribute = false;
                                  -                }
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                {
                                  -                    scriptSrc = si.src;
                                  -                }
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        path = productionDir;
                                  -        FBL.Env.bookmarkletOutdated = false;
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    isGetFirebugSite = reGetFirebugSite.test(path);
                                  -    
                                  -    if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1)
                                  -    {
                                  -        // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like 
                                  -        // https://getfirebug.com/firebug-lite.js, then we must manually add the full path,
                                  -        // otherwise the Env.Location will hold the wrong path, which will in turn lead to
                                  -        // undesirable effects like the problem in Issue 4587
                                  -        path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/");
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        // Always use the local skin when running in the same domain
                                  -        // See Issue 3554: Firebug Lite should use local images when loaded locally
                                  -        Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 &&
                                  -                // but we cannot use the locan skin when loaded from getfirebug.com, otherwise
                                  -                // the bookmarklet won't work when visiting getfirebug.com
                                  -                !isGetFirebugSite;
                                  -        
                                  -        // detecting development and debug modes via file name
                                  -        if (fileName == "firebug-lite-dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        else if (fileName == "firebug-lite-debug.js")
                                  -        {
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        
                                  -        // process the <html debug="true">
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -        }
                                  -        
                                  -        // process the Script URL Options
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name == "debug")
                                  -                {
                                  -                    Env.isDebugMode = !!value;
                                  -                }
                                  -                else if (name in Env.Options)
                                  -                {
                                  -                    Env.Options[name] = value;
                                  -                }
                                  -                else
                                  -                {
                                  -                    Env[name] = value;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        // process the Script JSON Options
                                  -        if (hasSrcAttribute)
                                  -        {
                                  -            var innerOptions = FBL.trim(script.innerHTML);
                                  -            if (innerOptions)
                                  -            {
                                  -                var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -                
                                  -                for (var name in innerOptionsObject)
                                  -                {
                                  -                    var value = innerOptionsObject[name];
                                  -                    
                                  -                    if (name == "debug")
                                  -                    {
                                  -                        Env.isDebugMode = !!value;
                                  -                    }
                                  -                    else if (name in Env.Options)
                                  -                    {
                                  -                        Env.Options[name] = value;
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        Env[name] = value;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (!Env.Options.saveCookies)
                                  -            FBL.Store.remove("FirebugLite");
                                  -        
                                  -        // process the Debug Mode
                                  -        if (Env.isDebugMode)
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -            Env.Options.enableTrace = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); };
                                  -};
                                  -
                                  -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.descend = function(prototypeParent, childProperties)
                                  -{
                                  -    function protoSetter() {};
                                  -    protoSetter.prototype = prototypeParent;
                                  -    var newOb = new protoSetter();
                                  -    for (var n in childProperties)
                                  -        newOb[n] = childProperties[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = this.createElement("link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -};
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -this.appendStylesheet = function(doc, uri)
                                  -{
                                  -    // Make sure the stylesheet is not appended twice.
                                  -    if (this.$(uri, doc))
                                  -        return;
                                  -
                                  -    var styleSheet = this.createStyleSheet(doc, uri);
                                  -    styleSheet.setAttribute("id", uri);
                                  -    this.addStyleSheet(doc, styleSheet);
                                  -};
                                  -
                                  -this.addScript = function(doc, id, src)
                                  -{
                                  -    var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
                                  -    element.setAttribute("type", "text/javascript");
                                  -    element.setAttribute("id", id);
                                  -    if (!FBTrace.DBG_CONSOLE)
                                  -        FBL.unwrapObject(element).firebugIgnore = true;
                                  -
                                  -    element.innerHTML = src;
                                  -    if (doc.documentElement)
                                  -        doc.documentElement.appendChild(element);
                                  -    else
                                  -    {
                                  -        // See issue 1079, the svg test case gives this error
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.addScript doc has no documentElement:", doc);
                                  -    }
                                  -    return element;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getStyle = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Whitespace and Entity conversions
                                  -
                                  -var entityConversionLists = this.entityConversionLists = {
                                  -    normal : {
                                  -        whitespace : {
                                  -            '\t' : '\u200c\u2192',
                                  -            '\n' : '\u200c\u00b6',
                                  -            '\r' : '\u200c\u00ac',
                                  -            ' '  : '\u200c\u00b7'
                                  -        }
                                  -    },
                                  -    reverse : {
                                  -        whitespace : {
                                  -            '&Tab;' : '\t',
                                  -            '&NewLine;' : '\n',
                                  -            '\u200c\u2192' : '\t',
                                  -            '\u200c\u00b6' : '\n',
                                  -            '\u200c\u00ac' : '\r',
                                  -            '\u200c\u00b7' : ' '
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var normal = entityConversionLists.normal,
                                  -    reverse = entityConversionLists.reverse;
                                  -
                                  -function addEntityMapToList(ccode, entity)
                                  -{
                                  -    var lists = Array.prototype.slice.call(arguments, 2),
                                  -        len = lists.length,
                                  -        ch = String.fromCharCode(ccode);
                                  -    for (var i = 0; i < len; i++)
                                  -    {
                                  -        var list = lists[i];
                                  -        normal[list]=normal[list] || {};
                                  -        normal[list][ch] = '&' + entity + ';';
                                  -        reverse[list]=reverse[list] || {};
                                  -        reverse[list]['&' + entity + ';'] = ch;
                                  -    }
                                  -};
                                  -
                                  -var e = addEntityMapToList,
                                  -    white = 'whitespace',
                                  -    text = 'text',
                                  -    attr = 'attributes',
                                  -    css = 'css',
                                  -    editor = 'editor';
                                  -
                                  -e(0x0022, 'quot', attr, css);
                                  -e(0x0026, 'amp', attr, text, css);
                                  -e(0x0027, 'apos', css);
                                  -e(0x003c, 'lt', attr, text, css);
                                  -e(0x003e, 'gt', attr, text, css);
                                  -e(0xa9, 'copy', text, editor);
                                  -e(0xae, 'reg', text, editor);
                                  -e(0x2122, 'trade', text, editor);
                                  -
                                  -// See http://en.wikipedia.org/wiki/Dash
                                  -e(0x2012, '#8210', attr, text, editor); // figure dash
                                  -e(0x2013, 'ndash', attr, text, editor); // en dash
                                  -e(0x2014, 'mdash', attr, text, editor); // em dash
                                  -e(0x2015, '#8213', attr, text, editor); // horizontal bar
                                  -
                                  -e(0x00a0, 'nbsp', attr, text, white, editor);
                                  -e(0x2002, 'ensp', attr, text, white, editor);
                                  -e(0x2003, 'emsp', attr, text, white, editor);
                                  -e(0x2009, 'thinsp', attr, text, white, editor);
                                  -e(0x200c, 'zwnj', attr, text, white, editor);
                                  -e(0x200d, 'zwj', attr, text, white, editor);
                                  -e(0x200e, 'lrm', attr, text, white, editor);
                                  -e(0x200f, 'rlm', attr, text, white, editor);
                                  -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP)
                                  -
                                  -//************************************************************************************************
                                  -// Entity escaping
                                  -
                                  -var entityConversionRegexes = {
                                  -        normal : {},
                                  -        reverse : {}
                                  -    };
                                  -
                                  -var escapeEntitiesRegEx = {
                                  -    normal : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('([' + chars.join('') + '])', 'gm');
                                  -    },
                                  -    reverse : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('(' + chars.join('|') + ')', 'gm');
                                  -    }
                                  -};
                                  -
                                  -function getEscapeRegexp(direction, lists)
                                  -{
                                  -    var name = '', re;
                                  -    var groups = [].concat(lists);
                                  -    for (i = 0; i < groups.length; i++)
                                  -    {
                                  -        name += groups[i].group;
                                  -    }
                                  -    re = entityConversionRegexes[direction][name];
                                  -    if (!re)
                                  -    {
                                  -        var list = {};
                                  -        if (groups.length > 1)
                                  -        {
                                  -            for ( var i = 0; i < groups.length; i++)
                                  -            {
                                  -                var aList = entityConversionLists[direction][groups[i].group];
                                  -                for ( var item in aList)
                                  -                    list[item] = aList[item];
                                  -            }
                                  -        } else if (groups.length==1)
                                  -        {
                                  -            list = entityConversionLists[direction][groups[0].group]; // faster for special case
                                  -        } else {
                                  -            list = {}; // perhaps should print out an error here?
                                  -        }
                                  -        re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
                                  -    }
                                  -    return re;
                                  -};
                                  -
                                  -function createSimpleEscape(name, direction)
                                  -{
                                  -    return function(value)
                                  -    {
                                  -        var list = entityConversionLists[direction][name];
                                  -        return String(value).replace(
                                  -                getEscapeRegexp(direction, {
                                  -                    group : name,
                                  -                    list : list
                                  -                }),
                                  -                function(ch)
                                  -                {
                                  -                    return list[ch];
                                  -                }
                                  -               );
                                  -    };
                                  -};
                                  -
                                  -function escapeGroupsForEntities(str, lists)
                                  -{
                                  -    lists = [].concat(lists);
                                  -    var re = getEscapeRegexp('normal', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list, last = '';
                                  -    if (!len)
                                  -        return [ {
                                  -            str : String(str),
                                  -            group : '',
                                  -            name : ''
                                  -        } ];
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.normal[list.group][cur];
                                  -            // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space
                                  -            //     r = ' ';
                                  -            if (r)
                                  -            {
                                  -                results[ri] = {
                                  -                    'str' : r,
                                  -                    'class' : list['class'],
                                  -                    'extra' : list.extra[cur] ? list['class']
                                  -                            + list.extra[cur] : ''
                                  -                };
                                  -                break;
                                  -            }
                                  -        }
                                  -        // last=cur;
                                  -        if (!r)
                                  -            results[ri] = {
                                  -                'str' : cur,
                                  -                'class' : '',
                                  -                'extra' : ''
                                  -            };
                                  -        ri++;
                                  -    }
                                  -    return results;
                                  -};
                                  -
                                  -this.escapeGroupsForEntities = escapeGroupsForEntities;
                                  -
                                  -
                                  -function unescapeEntities(str, lists)
                                  -{
                                  -    var re = getEscapeRegexp('reverse', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list;
                                  -    if (!len)
                                  -        return str;
                                  -    lists = [].concat(lists);
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.reverse[list.group][cur];
                                  -            if (r)
                                  -            {
                                  -                results[ri] = r;
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (!r)
                                  -            results[ri] = cur;
                                  -        ri++;
                                  -    }
                                  -    return results.join('') || '';
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal');
                                  -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal');
                                  -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal');
                                  -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal');
                                  -
                                  -// deprecated compatibility functions
                                  -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal');
                                  -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse');
                                  -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML);
                                  -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML);
                                  -
                                  -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal');
                                  -
                                  -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse');
                                  -
                                  -this.unescapeForTextNode = function(str)
                                  -{
                                  -    if (Firebug.showTextNodesWithWhitespace)
                                  -        str = unescapeWhitespace(str);
                                  -    if (!Firebug.showTextNodesWithEntities)
                                  -        str = escapeForElementAttribute(str);
                                  -    return str;
                                  -};
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -this.splitLines = function(text)
                                  -{
                                  -    var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
                                  -    var lines;
                                  -    if (text.match)
                                  -    {
                                  -        lines = text.match(reSplitLines2);
                                  -    }
                                  -    else
                                  -    {
                                  -        var str = text+"";
                                  -        lines = str.match(reSplitLines2);
                                  -    }
                                  -    lines.pop();
                                  -    return lines;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -    {
                                  -        try
                                  -        {
                                  -            // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -            return ob + "";
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            FBTrace.sysout("Lib.safeToString() failed for ", ob);
                                  -            return "";
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // xxxpedro it is not safe to use ob+""?
                                  -        return ob + "";
                                  -        ///return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.hasProperties = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getStyle(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, 
                                  -    // but it is causing a bug (the element disappears when you set the "collapsed" 
                                  -    // attribute, but it doesn't appear when you remove the attribute. So, for those
                                  -    // cases, we need to use the class attribute.
                                  -    if (this.isIElt8)
                                  -    {
                                  -        if (collapsed)
                                  -            this.setClass(elt, "collapsed");
                                  -        else
                                  -            this.removeClass(elt, "collapsed");
                                  -    }
                                  -    else
                                  -        elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    var addOffset = function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, "");
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (elt.offsetLeft)
                                  -            ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -            coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft");
                                  -        if (elt.offsetTop)
                                  -            ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -            coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop");
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else
                                  -        {
                                  -            var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -            // IE will fail when reading the frameElement property of a popup window.
                                  -            // We don't need it anyway once it is outside the (popup) viewport, so we're
                                  -            // ignoring the frameElement check when the window is a popup
                                  -            if (!otherView.opener && otherView.frameElement)
                                  -                addOffset(otherView.frameElement, coords, otherView);
                                  -        }
                                  -    };
                                  -
                                  -    var isIE = this.isIE;
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) };
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS
                                  -
                                  -var cssKeywordMap = null;
                                  -var cssPropNames = null;
                                  -var cssColorNames = null;
                                  -var imageRules = null;
                                  -
                                  -this.getCSSKeywordsByProperty = function(propName)
                                  -{
                                  -    if (!cssKeywordMap)
                                  -    {
                                  -        cssKeywordMap = {};
                                  -
                                  -        for (var name in this.cssInfo)
                                  -        {
                                  -            var list = [];
                                  -
                                  -            var types = this.cssInfo[name];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -            {
                                  -                var keywords = this.cssKeywords[types[i]];
                                  -                if (keywords)
                                  -                    list.push.apply(list, keywords);
                                  -            }
                                  -
                                  -            cssKeywordMap[name] = list;
                                  -        }
                                  -    }
                                  -
                                  -    return propName in cssKeywordMap ? cssKeywordMap[propName] : [];
                                  -};
                                  -
                                  -this.getCSSPropertyNames = function()
                                  -{
                                  -    if (!cssPropNames)
                                  -    {
                                  -        cssPropNames = [];
                                  -
                                  -        for (var name in this.cssInfo)
                                  -            cssPropNames.push(name);
                                  -    }
                                  -
                                  -    return cssPropNames;
                                  -};
                                  -
                                  -this.isColorKeyword = function(keyword)
                                  -{
                                  -    if (keyword == "transparent")
                                  -        return false;
                                  -
                                  -    if (!cssColorNames)
                                  -    {
                                  -        cssColorNames = [];
                                  -
                                  -        var colors = this.cssKeywords["color"];
                                  -        for (var i = 0; i < colors.length; ++i)
                                  -            cssColorNames.push(colors[i].toLowerCase());
                                  -
                                  -        var systemColors = this.cssKeywords["systemColor"];
                                  -        for (var i = 0; i < systemColors.length; ++i)
                                  -            cssColorNames.push(systemColors[i].toLowerCase());
                                  -    }
                                  -
                                  -    return cssColorNames.indexOf ? // Array.indexOf is not available in IE
                                  -            cssColorNames.indexOf(keyword.toLowerCase()) != -1 :
                                  -            (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.isImageRule = function(rule)
                                  -{
                                  -    if (!imageRules)
                                  -    {
                                  -        imageRules = [];
                                  -
                                  -        for (var i in this.cssInfo)
                                  -        {
                                  -            var r = i.toLowerCase();
                                  -            var suffix = "image";
                                  -            if (r.match(suffix + "$") == suffix || r == "background")
                                  -                imageRules.push(r);
                                  -        }
                                  -    }
                                  -
                                  -    return imageRules.indexOf ? // Array.indexOf is not available in IE
                                  -            imageRules.indexOf(rule.toLowerCase()) != -1 :
                                  -            (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.copyTextStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.fontFamily = style.fontFamily;
                                  -        
                                  -        // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE
                                  -        // returns wrong computed styles for inherited properties (like font-*)
                                  -        //
                                  -        // Also would be good to create a FBL.getStyle() 
                                  -        toNode.style.fontSize = style.fontSize;
                                  -        toNode.style.fontWeight = style.fontWeight;
                                  -        toNode.style.fontStyle = style.fontStyle;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.copyBoxStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.marginTop = style.marginTop;
                                  -        toNode.style.marginRight = style.marginRight;
                                  -        toNode.style.marginBottom = style.marginBottom;
                                  -        toNode.style.marginLeft = style.marginLeft;
                                  -        toNode.style.borderTopWidth = style.borderTopWidth;
                                  -        toNode.style.borderRightWidth = style.borderRightWidth;
                                  -        toNode.style.borderBottomWidth = style.borderBottomWidth;
                                  -        toNode.style.borderLeftWidth = style.borderLeftWidth;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.readBoxStyles = function(style)
                                  -{
                                  -    var styleNames = {
                                  -        "margin-top": "marginTop", "margin-right": "marginRight",
                                  -        "margin-left": "marginLeft", "margin-bottom": "marginBottom",
                                  -        "border-top-width": "borderTop", "border-right-width": "borderRight",
                                  -        "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
                                  -        "padding-top": "paddingTop", "padding-right": "paddingRight",
                                  -        "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
                                  -        "z-index": "zIndex"
                                  -    };
                                  -
                                  -    var styles = {};
                                  -    for (var styleName in styleNames)
                                  -        styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
                                  -    if (FBTrace.DBG_INSPECT)
                                  -        FBTrace.sysout("readBoxStyles ", styles);
                                  -    return styles;
                                  -};
                                  -
                                  -this.getBoxFromStyles = function(style, element)
                                  -{
                                  -    var args = this.readBoxStyles(style);
                                  -    args.width = element.offsetWidth
                                  -        - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -    args.height = element.offsetHeight
                                  -        - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -    return args;
                                  -};
                                  -
                                  -this.getElementCSSSelector = function(element)
                                  -{
                                  -    var label = element.localName.toLowerCase();
                                  -    if (element.id)
                                  -        label += "#" + element.id;
                                  -    if (element.hasAttribute("class"))
                                  -        label += "." + element.getAttribute("class").split(" ")[0];
                                  -
                                  -    return label;
                                  -};
                                  -
                                  -this.getURLForStyleSheet= function(styleSheet)
                                  -{
                                  -    //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null.
                                  -    return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
                                  -};
                                  -
                                  -this.getDocumentForStyleSheet = function(styleSheet)
                                  -{
                                  -    while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
                                  -    {
                                  -        styleSheet = styleSheet.parentStyleSheet;
                                  -    }
                                  -    if (styleSheet.ownerNode)
                                  -      return styleSheet.ownerNode.ownerDocument;
                                  -};
                                  -
                                  -/**
                                  - * Retrieves the instance number for a given style sheet. The instance number
                                  - * is sheet's index within the set of all other sheets whose URL is the same.
                                  - */
                                  -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
                                  -{
                                  -    // System URLs are always unique (or at least we are making this assumption)
                                  -    if (FBL.isSystemStyleSheet(styleSheet))
                                  -        return 0;
                                  -
                                  -    // ownerDocument is an optional hint for performance
                                  -    if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument);
                                  -    ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet);
                                  -
                                  -    var ret = 0,
                                  -        styleSheets = ownerDocument.styleSheets,
                                  -        href = styleSheet.href;
                                  -    for (var i = 0; i < styleSheets.length; i++)
                                  -    {
                                  -        var curSheet = styleSheets[i];
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode)));
                                  -        if (curSheet == styleSheet)
                                  -            break;
                                  -        if (curSheet.href == href)
                                  -            ret++;
                                  -    }
                                  -    return ret;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// HTML and XML Serialization
                                  -
                                  -
                                  -var getElementType = this.getElementType = function(node)
                                  -{
                                  -    if (isElementXUL(node))
                                  -        return 'xul';
                                  -    else if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else if (isElementXHTML(node))
                                  -        return 'xhtml';
                                  -    else if (isElementHTML(node))
                                  -        return 'html';
                                  -};
                                  -
                                  -var getElementSimpleType = this.getElementSimpleType = function(node)
                                  -{
                                  -    if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else
                                  -        return 'html';
                                  -};
                                  -
                                  -var isElementHTML = this.isElementHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toUpperCase();
                                  -};
                                  -
                                  -var isElementXHTML = this.isElementXHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toLowerCase();
                                  -};
                                  -
                                  -var isElementMathML = this.isElementMathML = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
                                  -};
                                  -
                                  -var isElementSVG = this.isElementSVG = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/2000/svg';
                                  -};
                                  -
                                  -var isElementXUL = this.isElementXUL = function(node)
                                  -{
                                  -    return node instanceof XULElement;
                                  -};
                                  -
                                  -this.isSelfClosing = function(element)
                                  -{
                                  -    if (isElementSVG(element) || isElementMathML(element))
                                  -        return true;
                                  -    var tag = element.localName.toLowerCase();
                                  -    return (this.selfClosingTags.hasOwnProperty(tag));
                                  -};
                                  -
                                  -this.getElementHTML = function(element)
                                  -{
                                  -    var self=this;
                                  -    function toHTML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            html.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                html.push('>');
                                  -
                                  -                var pureText=true;
                                  -                for (var child = element.firstChild; child; child = child.nextSibling)
                                  -                    pureText=pureText && (child.nodeType == Node.TEXT_NODE);
                                  -
                                  -                if (pureText)
                                  -                    html.push(escapeForHtmlEditor(elt.textContent));
                                  -                else {
                                  -                    for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                        toHTML(child);
                                  -                }
                                  -
                                  -                html.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else if (isElementSVG(elt) || isElementMathML(elt))
                                  -            {
                                  -                html.push('/>');
                                  -            }
                                  -            else if (self.isSelfClosing(elt))
                                  -            {
                                  -                html.push((isElementXHTML(elt))?'/>':'>');
                                  -            }
                                  -            else
                                  -            {
                                  -                html.push('></', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            html.push(escapeForTextNode(elt.textContent));
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            html.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            html.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var html = [];
                                  -    toHTML(element);
                                  -    return html.join("");
                                  -};
                                  -
                                  -this.getElementXML = function(element)
                                  -{
                                  -    function toXML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            xml.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                xml.push('>');
                                  -
                                  -                for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                    toXML(child);
                                  -
                                  -                xml.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else
                                  -                xml.push('/>');
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            xml.push(elt.nodeValue);
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            xml.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            xml.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var xml = [];
                                  -    toXML(element);
                                  -    return xml.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.old_hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document);
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.isAncestor = function(node, potentialAncestor)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (parent == potentialAncestor)
                                  -            return true;
                                  -    }
                                  -
                                  -    return false;
                                  -};
                                  -
                                  -this.getNextElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.nextSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getPreviousElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.previousSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.findNextDown = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (criteria(child))
                                  -            return child;
                                  -
                                  -        var next = this.findNextDown(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -};
                                  -
                                  -this.findPreviousUp = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.lastChild; child; child = child.previousSibling)
                                  -    {
                                  -        var next = this.findPreviousUp(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -
                                  -        if (criteria(child))
                                  -            return child;
                                  -    }
                                  -};
                                  -
                                  -this.findNext = function(node, criteria, upOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    if (!upOnly)
                                  -    {
                                  -        var next = this.findNextDown(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
                                  -    {
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -
                                  -        var next = this.findNextDown(sib, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -        return this.findNext(node.parentNode, criteria, true);
                                  -};
                                  -
                                  -this.findPrevious = function(node, criteria, downOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
                                  -    {
                                  -        var prev = this.findPreviousUp(sib, criteria);
                                  -        if (prev)
                                  -            return prev;
                                  -
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -    }
                                  -
                                  -    if (!downOnly)
                                  -    {
                                  -        var next = this.findPreviousUp(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -    {
                                  -        if (criteria(node.parentNode))
                                  -            return node.parentNode;
                                  -
                                  -        return this.findPrevious(node.parentNode, criteria, true);
                                  -    }
                                  -};
                                  -
                                  -this.getNextByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findNext(root, iter);
                                  -};
                                  -
                                  -this.getPreviousByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findPrevious(root, iter);
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Modification
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API 
                                  -var appendFragment = null;
                                  -
                                  -this.appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE 
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -    
                                  -    var doc = element.ownerDocument;
                                  -    
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -    
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -        
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -        
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -        
                                  -        div = null;
                                  -    }
                                  -    
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.safeGetWindowLocation = function(window)
                                  -{
                                  -    try
                                  -    {
                                  -        if (window)
                                  -        {
                                  -            if (window.closed)
                                  -                return "(window.closed)";
                                  -            if ("location" in window)
                                  -                return window.location+"";
                                  -            else
                                  -                return "(no window.location)";
                                  -        }
                                  -        else
                                  -            return "(no context.window)";
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
                                  -        return "(getWindowLocation: "+exc+")";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && // others
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 4 : // IE "click" and "dblclick" button model
                                  -            event.button == 1) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 2 : // IE "click" and "dblclick" button model
                                  -            event.button == 2) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isAlt = function(event)
                                  -{
                                  -    return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isAltClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isAlt(event);
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, useCapture);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    if (!listeners) return;
                                  -    
                                  -    try
                                  -    {/**/
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -    }
                                  -    /**/
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;";
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    if (!url)
                                  -        return null;
                                  -
                                  -    // Remove query string from the URL if any.
                                  -    var queryString = url.indexOf("?");
                                  -    if (queryString != -1)
                                  -        url = url.substr(0, queryString);
                                  -
                                  -    // Now get the file extension.
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.isSystemStyleSheet = function(sheet)
                                  -{
                                  -    var href = sheet && sheet.href;
                                  -    return href && FBL.isSystemURL(href);
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ",";
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^\/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^\/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters
                                  -// as in response/request headers and get/post parameters in Net module?
                                  -this.parseURLParamsArray = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedTextArray(search);
                                  -};
                                  -
                                  -this.parseURLEncodedTextArray = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [""]});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL = function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    ///var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        ///jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -        
                                  -        //jsonObject = Firebug.context.eval(jsonString);
                                  -        jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;});
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        /***
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {/**/
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        ///}
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Caret Position
                                  -
                                  -this.setSelectionRange = function(input, start, length)
                                  -{
                                  -    if (input.createTextRange)
                                  -    {
                                  -        var range = input.createTextRange(); 
                                  -        range.moveStart("character", start); 
                                  -        range.moveEnd("character", length - input.value.length); 
                                  -        range.select();
                                  -    }
                                  -    else if (input.setSelectionRange)
                                  -    {
                                  -        input.setSelectionRange(start, length);
                                  -        input.focus();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Selection Start / Caret Position
                                  -
                                  -this.getInputSelectionStart = function(input)
                                  -{
                                  -    if (document.selection)
                                  -    {
                                  -        var range = input.ownerDocument.selection.createRange();
                                  -        var text = range.text;
                                  -        
                                  -        //console.log("range", range.text);
                                  -        
                                  -        // if there is a selection, find the start position
                                  -        if (text)
                                  -        {
                                  -            return input.value.indexOf(text);
                                  -        }
                                  -        // if there is no selection, find the caret position
                                  -        else
                                  -        {
                                  -            range.moveStart("character", -input.value.length);
                                  -            
                                  -            return range.text.length;
                                  -        }
                                  -    }
                                  -    else if (typeof input.selectionStart != "undefined")
                                  -        return input.selectionStart;
                                  -    
                                  -    return 0;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    try
                                  -    {
                                  -        // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -        return toString.call(object) === "[object Function]" || 
                                  -                this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -        FBTrace.sysout("Lib.isFunction() failed for ", object);
                                  -        return false;
                                  -    }
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is accessible in the window, uses the native instanceof operator
                                  -        // if the instanceof evaluates to "true" we can assume it is a instance, but if it
                                  -        // evaluates to "false" we must continue with the duck type detection below because
                                  -        // the native object may be extended, thus breaking the instanceof result 
                                  -        // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -        if (className in win && object instanceof win[className])
                                  -            return true;
                                  -    }
                                  -    // If the object doesn't have the ownerDocument property, we'll try to look at
                                  -    // the current context's window
                                  -    else
                                  -    {
                                  -        // TODO: xxxpedro context
                                  -        // Since we're not using yet a Firebug.context, we'll just use the top window
                                  -        // (browser) as a reference
                                  -        var win = Firebug.browser.window;
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    // get the duck type model from the cache 
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    // starts the hacky duck type detection
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            // avoid problems with extended native objects
                                  -            // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -            if (!obj.hasOwnProperty(name))
                                  -                continue;
                                  -            
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    CSSStyleRule:
                                  -    {
                                  -        property: ["selectorText", "style"]
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -/*
                                  -
                                  -Problems:
                                  -
                                  -  - IE does not have window.Node, window.Element, etc
                                  -  - for (var name in Node.prototype) return nothing on FF
                                  -
                                  -*/
                                  -
                                  -
                                  -var domMemberMap2 = {};
                                  -
                                  -var domMemberMap2Sandbox = null;
                                  -
                                  -var getDomMemberMap2 = function(name)
                                  -{
                                  -    if (!domMemberMap2Sandbox)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var frame = doc.createElement("iframe");
                                  -        
                                  -        frame.id = "FirebugSandbox";
                                  -        frame.style.display = "none";
                                  -        frame.src = "about:blank";
                                  -        
                                  -        doc.body.appendChild(frame);
                                  -        
                                  -        domMemberMap2Sandbox = frame.window || frame.contentWindow;
                                  -    }
                                  -    
                                  -    var props = [];
                                  -    
                                  -    //var object = domMemberMap2Sandbox[name];
                                  -    //object = object.prototype || object;
                                  -    
                                  -    var object = null;
                                  -    
                                  -    if (name == "Window")
                                  -        object = domMemberMap2Sandbox.window;
                                  -    
                                  -    else if (name == "Document")
                                  -        object = domMemberMap2Sandbox.document;
                                  -        
                                  -    else if (name == "HTMLScriptElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("script");
                                  -    
                                  -    else if (name == "HTMLAnchorElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("a");
                                  -    
                                  -    else if (name.indexOf("Element") != -1)
                                  -    {
                                  -        object = domMemberMap2Sandbox.document.createElement("div");
                                  -    }
                                  -    
                                  -    if (object)
                                  -    {
                                  -        //object = object.prototype || object;
                                  -        
                                  -        //props  = 'addEventListener,document,location,navigator,window'.split(',');
                                  -        
                                  -        for (var n in object)
                                  -          props.push(n);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return props;
                                  -    return extendArray(props, domMemberMap[name]);
                                  -};
                                  -
                                  -// xxxpedro experimental get DOM members
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        FBL.domMemberCache = domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = getDomMemberMap2(name);
                                  -            var cache = domMemberCache[name] = {};
                                  -            
                                  -            /*
                                  -            if (name.indexOf("Element") != -1)
                                  -            {
                                  -                this.append(cache, this.getDOMMembers("Node"));
                                  -                this.append(cache, this.getDOMMembers("Element"));
                                  -            }
                                  -            /**/
                                  -            
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument"))
                                  -            { return domMemberCache.Document; }
                                  -        else if (this.instanceOf(object, "Location"))
                                  -            { return domMemberCache.Location; }
                                  -        else if (this.instanceOf(object, "HTMLImageElement"))
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (this.instanceOf(object, "HTMLAnchorElement"))
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (this.instanceOf(object, "HTMLInputElement"))
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (this.instanceOf(object, "HTMLButtonElement"))
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (this.instanceOf(object, "HTMLFormElement"))
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (this.instanceOf(object, "HTMLBodyElement"))
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (this.instanceOf(object, "HTMLHtmlElement"))
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (this.instanceOf(object, "HTMLScriptElement"))
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableElement"))
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableRowElement"))
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableCellElement"))
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (this.instanceOf(object, "HTMLIFrameElement"))
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (this.instanceOf(object, "SVGSVGElement"))
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (this.instanceOf(object, "SVGElement"))
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (this.instanceOf(object, "Element"))
                                  -            { return domMemberCache.Element; }
                                  -        else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection"))
                                  -            { return domMemberCache.Text; }
                                  -        else if (this.instanceOf(object, "Attr"))
                                  -            { return domMemberCache.Attr; }
                                  -        else if (this.instanceOf(object, "Node"))
                                  -            { return domMemberCache.Node; }
                                  -        else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy"))
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getDOMMembers FAILED ", E);
                                  -        
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -
                                  -/*
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap"
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -this.selfClosingTags =
                                  -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "area": 1,
                                  -    "base": 1,
                                  -    "col": 1,
                                  -    "input": 1,
                                  -    "img": 1,
                                  -    "br": 1,
                                  -    "hr": 1,
                                  -    "param":1,
                                  -    "embed":1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -    "PARAM": 1,
                                  -    "COL": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1,
                                  -    "param": 1,
                                  -    "col": 1
                                  -    /*
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -if (typeof KeyEvent == "undefined") {
                                  -    this.KeyEvent = {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        DOM_VK_SHIFT: 16,
                                  -        DOM_VK_CONTROL: 17,
                                  -        DOM_VK_ALT: 18,
                                  -        DOM_VK_PAUSE: 19,
                                  -        DOM_VK_CAPS_LOCK: 20,
                                  -        DOM_VK_ESCAPE: 27,
                                  -        DOM_VK_SPACE: 32,
                                  -        DOM_VK_PAGE_UP: 33,
                                  -        DOM_VK_PAGE_DOWN: 34,
                                  -        DOM_VK_END: 35,
                                  -        DOM_VK_HOME: 36,
                                  -        DOM_VK_LEFT: 37,
                                  -        DOM_VK_UP: 38,
                                  -        DOM_VK_RIGHT: 39,
                                  -        DOM_VK_DOWN: 40,
                                  -        DOM_VK_PRINTSCREEN: 44,
                                  -        DOM_VK_INSERT: 45,
                                  -        DOM_VK_DELETE: 46,
                                  -        DOM_VK_0: 48,
                                  -        DOM_VK_1: 49,
                                  -        DOM_VK_2: 50,
                                  -        DOM_VK_3: 51,
                                  -        DOM_VK_4: 52,
                                  -        DOM_VK_5: 53,
                                  -        DOM_VK_6: 54,
                                  -        DOM_VK_7: 55,
                                  -        DOM_VK_8: 56,
                                  -        DOM_VK_9: 57,
                                  -        DOM_VK_SEMICOLON: 59,
                                  -        DOM_VK_EQUALS: 61,
                                  -        DOM_VK_A: 65,
                                  -        DOM_VK_B: 66,
                                  -        DOM_VK_C: 67,
                                  -        DOM_VK_D: 68,
                                  -        DOM_VK_E: 69,
                                  -        DOM_VK_F: 70,
                                  -        DOM_VK_G: 71,
                                  -        DOM_VK_H: 72,
                                  -        DOM_VK_I: 73,
                                  -        DOM_VK_J: 74,
                                  -        DOM_VK_K: 75,
                                  -        DOM_VK_L: 76,
                                  -        DOM_VK_M: 77,
                                  -        DOM_VK_N: 78,
                                  -        DOM_VK_O: 79,
                                  -        DOM_VK_P: 80,
                                  -        DOM_VK_Q: 81,
                                  -        DOM_VK_R: 82,
                                  -        DOM_VK_S: 83,
                                  -        DOM_VK_T: 84,
                                  -        DOM_VK_U: 85,
                                  -        DOM_VK_V: 86,
                                  -        DOM_VK_W: 87,
                                  -        DOM_VK_X: 88,
                                  -        DOM_VK_Y: 89,
                                  -        DOM_VK_Z: 90,
                                  -        DOM_VK_CONTEXT_MENU: 93,
                                  -        DOM_VK_NUMPAD0: 96,
                                  -        DOM_VK_NUMPAD1: 97,
                                  -        DOM_VK_NUMPAD2: 98,
                                  -        DOM_VK_NUMPAD3: 99,
                                  -        DOM_VK_NUMPAD4: 100,
                                  -        DOM_VK_NUMPAD5: 101,
                                  -        DOM_VK_NUMPAD6: 102,
                                  -        DOM_VK_NUMPAD7: 103,
                                  -        DOM_VK_NUMPAD8: 104,
                                  -        DOM_VK_NUMPAD9: 105,
                                  -        DOM_VK_MULTIPLY: 106,
                                  -        DOM_VK_ADD: 107,
                                  -        DOM_VK_SEPARATOR: 108,
                                  -        DOM_VK_SUBTRACT: 109,
                                  -        DOM_VK_DECIMAL: 110,
                                  -        DOM_VK_DIVIDE: 111,
                                  -        DOM_VK_F1: 112,
                                  -        DOM_VK_F2: 113,
                                  -        DOM_VK_F3: 114,
                                  -        DOM_VK_F4: 115,
                                  -        DOM_VK_F5: 116,
                                  -        DOM_VK_F6: 117,
                                  -        DOM_VK_F7: 118,
                                  -        DOM_VK_F8: 119,
                                  -        DOM_VK_F9: 120,
                                  -        DOM_VK_F10: 121,
                                  -        DOM_VK_F11: 122,
                                  -        DOM_VK_F12: 123,
                                  -        DOM_VK_F13: 124,
                                  -        DOM_VK_F14: 125,
                                  -        DOM_VK_F15: 126,
                                  -        DOM_VK_F16: 127,
                                  -        DOM_VK_F17: 128,
                                  -        DOM_VK_F18: 129,
                                  -        DOM_VK_F19: 130,
                                  -        DOM_VK_F20: 131,
                                  -        DOM_VK_F21: 132,
                                  -        DOM_VK_F22: 133,
                                  -        DOM_VK_F23: 134,
                                  -        DOM_VK_F24: 135,
                                  -        DOM_VK_NUM_LOCK: 144,
                                  -        DOM_VK_SCROLL_LOCK: 145,
                                  -        DOM_VK_COMMA: 188,
                                  -        DOM_VK_PERIOD: 190,
                                  -        DOM_VK_SLASH: 191,
                                  -        DOM_VK_BACK_QUOTE: 192,
                                  -        DOM_VK_OPEN_BRACKET: 219,
                                  -        DOM_VK_BACK_SLASH: 220,
                                  -        DOM_VK_CLOSE_BRACKET: 221,
                                  -        DOM_VK_QUOTE: 222,
                                  -        DOM_VK_META: 224
                                  -    };
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -/**
                                  - * @namespace
                                  - */
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = FBL.getNativeXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Create a AJAX request.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Asynchronous flag. Default is "true".   
                                  -     * @param {String}   options.dataType      Data type ("text", "html", "xml" or "json"). Default is "text".
                                  -     * @param {String}   options.contentType   Content-type of the data being sent. Default is "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     onLoading callback
                                  -     * @param {Function} options.onLoaded      onLoaded callback
                                  -     * @param {Function} options.onInteractive onInteractive callback
                                  -     * @param {Function} options.onComplete    onComplete callback
                                  -     * @param {Function} options.onUpdate      onUpdate callback
                                  -     * @param {Function} options.onSuccess     onSuccess callback
                                  -     * @param {Function} options.onFailure     onFailure callback
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        // process options
                                  -        var o = FBL.extend(
                                  -                {
                                  -                    // default values
                                  -                    type: "get",
                                  -                    async: true,
                                  -                    dataType: "text",
                                  -                    contentType: "application/x-www-form-urlencoded"
                                  -                }, 
                                  -                options || {}
                                  -            );
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data;
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(var param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // open XHR object
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // indicates that it is a XHR request to the server
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // if data is being sent, sets the appropriate content-type
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -            t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // onreadystatechange handler
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // send the request
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Handles the state change
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * gets the appropriate response value according the type
                                  -     */
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText;
                                  -        else if (type == "text")  return t.responseText;
                                  -        else if (type == "html")  return t.responseText;
                                  -        else if (type == "xml")   return t.responseXML;
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * returns the current state of the XHR object
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        if (days)
                                  -        {
                                  -            var date = new Date();
                                  -            date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -            var expires = "; expires="+date.toGMTString();
                                  -        }
                                  -        else 
                                  -            var expires = "";
                                  -        
                                  -        document.cookie = name+"="+value+expires+"; path=/";
                                  -    }
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        var nameEQ = name + "=";
                                  -        var ca = document.cookie.split(';');
                                  -        
                                  -        for(var i=0; i < ca.length; i++)
                                  -        {
                                  -            var c = ca[i];
                                  -            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -        }
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_i18n */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    "NoMembersWarning": "There are no properties to show for this object.",
                                  -    
                                  -    "EmptyStyleSheet": "There are no rules in this stylesheet.",
                                  -    "EmptyElementCSS": "This element has no style rules.",
                                  -    "AccessRestricted": "Access to restricted URI denied.",
                                  -    
                                  -    "net.label.Parameters": "Parameters",
                                  -    "net.label.Source": "Source",
                                  -    "URLParameters": "Params",
                                  -    
                                  -    "EditStyle": "Edit Element Style...",
                                  -    "NewRule": "New Rule...",
                                  -    
                                  -    "NewProp": "New Property...",
                                  -    "EditProp": 'Edit "%s"',
                                  -    "DeleteProp": 'Delete "%s"',
                                  -    "DisableProp": 'Disable "%s"'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -
                                  -FBL.$STRF = function(name, args)
                                  -{
                                  -    if (!oSTR.hasOwnProperty(name)) return name;
                                  -    
                                  -    var format = oSTR[name];
                                  -    var objIndex = 0;
                                  -    
                                  -    var parts = parseFormat(format);
                                  -    var trialIndex = objIndex;
                                  -    var objects = args;
                                  -    
                                  -    for (var i= 0; i < parts.length; i++)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -            {
                                  -                format = "";
                                  -                objIndex = -1;
                                  -                parts.length = 0;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -    }
                                  -    
                                  -    var result = [];
                                  -    for (var i = 0; i < parts.length; ++i)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            result.push(""+args.shift());
                                  -        }
                                  -        else
                                  -            result.push(part);
                                  -    }
                                  -    
                                  -    return result.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var parseFormat = function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.5.0-flex-a2",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        Firebug.loadPrefs();
                                  -        Firebug.context.persistedState.isOpen = false;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets)
                                  -            FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document);
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Firebug.disableResourceFetching)
                                  -            Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " +
                                  -            		"resource fetching is disabled. To enabled it set the Firebug Lite option " +
                                  -            		"\"disableResourceFetching\" to \"false\". More info at " +
                                  -            		"http://getfirebug.com/firebuglite#Options"], 
                                  -            		Firebug.context, "warn");
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.DefaultOptions;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function()
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        var prefs = Store.get("FirebugLite") || {};
                                  -        var options = prefs.options;
                                  -        var persistedState = prefs.persistedState || FBL.defaultPersistedState;
                                  -        
                                  -        for (var name in options)
                                  -        {
                                  -            if (options.hasOwnProperty(name))
                                  -                Firebug[name] = options[name];
                                  -        }
                                  -        
                                  -        if (Firebug.context && persistedState)
                                  -            Firebug.context.persistedState = persistedState;
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var prefs = {
                                  -            options: {}
                                  -        };
                                  -        
                                  -        var EnvOptions = Env.Options;
                                  -        var options = prefs.options;
                                  -        for (var name in EnvOptions)
                                  -        {
                                  -            if (EnvOptions.hasOwnProperty(name))
                                  -            {
                                  -                options[name] = Firebug[name];
                                  -            }
                                  -        }
                                  -        
                                  -        var persistedState = Firebug.context.persistedState;
                                  -        if (!persistedState)
                                  -        {
                                  -            persistedState = Firebug.context.persistedState = FBL.defaultPersistedState;
                                  -        }
                                  -        
                                  -        prefs.persistedState = persistedState;
                                  -        
                                  -        Store.set("FirebugLite", prefs);
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        Store.remove("FirebugLite");
                                  -        this.restorePrefs();
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *  
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener 
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarContainer: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1-panelTabs");
                                  -        this.sidePanelBarContainer = $("fbPanelBar2-panelTabs");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel
                                  -        var container = this.parentPanel ? 
                                  -                Firebug.chrome.getSidePanelContainer() :
                                  -                Firebug.chrome.getPanelContainer(); 
                                  -        
                                  -        var panelNode = this.panelNode = createElement("div", {
                                  -            id: panelId,
                                  -            className: "fbPanel",
                                  -            document: container.ownerDocument
                                  -        });
                                  -
                                  -        container.appendChild(panelNode);            
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel Tab
                                  -        var tabNode = this.tabNode = createElement("span", {
                                  -            id: panelId + "Tab",
                                  -            className: "panelTab",
                                  -            innerHTML: this.title + '<span class="panelOptions">â–¼</span>'
                                  -        });
                                  -        
                                  -        /*
                                  -        var tabHTML = '<span class="panelTab">' + this.title + 
                                  -                '<span class="panelOptions">â–¼</span></span>';            
                                  -        
                                  -        var tabNode = this.tabNode = createElement("a", {
                                  -            id: panelId + "Tab",
                                  -            className: "fbTab fbHover",
                                  -            innerHTML: tabHTML
                                  -        });
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            tabNode.href = "javascript:void(0)";
                                  -        }
                                  -        /**/
                                  -        
                                  -        var panelBarNode = this.parentPanel ? 
                                  -                Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                this.panelBarNode;
                                  -        
                                  -        panelBarNode.appendChild(tabNode);
                                  -        tabNode.style.display = "block";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create ToolButtons
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = createElement("span", {
                                  -                id: panelId + "Buttons",
                                  -                className: "fbToolbarButtons"
                                  -            });
                                  -            
                                  -            $("fbMainToolbar").appendChild(this.toolButtonsNode);
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create StatusBar
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox")
                                  -                // FIXME xxxpedro chromenew
                                  -                || $("fbMainToolbar");
                                  -            
                                  -            this.statusBarNode = createElement("span", {
                                  -                id: panelId + "StatusBar",
                                  -                className: "fbToolbarButtons fbStatusBar"
                                  -            });
                                  -            
                                  -            this.statusBarBox.appendChild(this.statusBarNode);
                                  -        }
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        ///this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -        
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel = 
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : 
                                  -                Firebug.chrome.selectedPanel;
                                  -        
                                  -        Firebug.showInfoTips = true;
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        this.visible = true;
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -        
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -        
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu) 
                                  -            return;
                                  -        
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -            
                                  -            items: menu
                                  -        });
                                  -        
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -        
                                  -        return true;
                                  -        
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -        
                                  -        var screenY = 0;
                                  -        
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY; 
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -        
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *  
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        
                                  -        ///return m ? m[1] : label;
                                  -        
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE && 
                                  -                // safeToString() returns "[object]" for some objects like window.Image 
                                  -                (label == "[object]" || 
                                  -                // safeToString() returns undefined for some objects like window.clientInformation 
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_gui */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -/**@namespace*/
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -/**@namespace*/
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarContainer.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.shutdown();
                                  -                selectedPanel.hide();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                Firebug.context.persistedState.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.show();
                                  -            panel.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller 
                                  - *  
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -/**@extend FBL.Button.prototype*/
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.Button 
                                  - */
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype,
                                  -/**@extend FBL.IconButton.prototype*/ 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        _command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            item.label = $STR(item.label);
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - * 
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller
                                  - *   
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                Firebug.chrome.document.body,
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -/**@extend FBL.Menu.prototype*/
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked);
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var handler = null;
                                  -             
                                  -            // target.command can be a function or a string. 
                                  -            var cmd = target.command;
                                  -            
                                  -            // If it is a function it will be used as the handler
                                  -            if (isFunction(cmd))
                                  -                handler = cmd;
                                  -            // If it is a string it the property of the current menu object 
                                  -            // will be used as the handler
                                  -            else if (typeof cmd == "string")
                                  -                handler = this[cmd];
                                  -            
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -append(Menu,
                                  -/**@extend FBL.Menu*/
                                  -{
                                  -    register: function(object)
                                  -    {
                                  -        menuMap[object.id] = object;
                                  -    },
                                  -    
                                  -    check: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "true");
                                  -    },
                                  -    
                                  -    uncheck: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "");
                                  -    },
                                  -    
                                  -    disable: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuDisabled");
                                  -    },
                                  -    
                                  -    enable: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuDisabled");
                                  -    }
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -/**@class*/
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_context*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -
                                  -/** @class */
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    this.browser = Env.browser;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // partial-port of Firebug tabContext.js
                                  -    
                                  -    browser: null,
                                  -    loaded: true,
                                  -    
                                  -    setTimeout: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        if (win.setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        
                                  -        var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setTimeout.apply(win, arguments) :
                                  -                win.setTimeout(fn, delay);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setInterval.apply(win, arguments) :
                                  -                win.setInterval(fn, delay);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            
                                  -            // avoid error. need to create a better getPanel() function as explained below
                                  -            if (!Firebug.chrome || !Firebug.chrome.selectedPanel)
                                  -                return;
                                  -            
                                  -            //var panel = this.getPanel(panelName, true);
                                  -            //TODO: xxxpedro context how to get all panels using a single function?
                                  -            // the current workaround to make the invalidation works is invalidating
                                  -            // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -            var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                    Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                    null;
                                  -            
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                //var panel = this.getPanel(panelName, true);
                                  -                //TODO: xxxpedro context how to get all panels using a single function?
                                  -                // the current workaround to make the invalidation works is invalidating
                                  -                // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -                var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                        Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                        null;
                                  -
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var isObjectLiteral = trim(expr).indexOf("{") == 0,
                                  -            cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // If it is an object literal, then wrap the expression with parenthesis so we can 
                                  -            // capture the return value
                                  -            if (isObjectLiteral)
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ ("+expr+") }" :
                                  -                    "(" + expr + ")";
                                  -            }
                                  -            else
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            cmd = api ?
                                  -                // with API and context, no return value
                                  -                "(function(arguments){ with(" + api + "){ " +
                                  -                    expr + 
                                  -                " } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, no return value
                                  -                "(function(arguments){ " + 
                                  -                    expr + 
                                  -                " }).call(" + context + ",undefined)";
                                  -        }
                                  -        
                                  -        result = this.eval(cmd);
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg);
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        else if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -        
                                  -        else if (unit == "ex")
                                  -            return this.exToPixels(el, value);
                                  -        
                                  -        // TODO: add other units. Maybe create a better general way
                                  -        // to calculate measurements in different units.    
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        };
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getStyle: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbBtnInspect,
                                  -
                                  -    fbMainToolbarBox,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -
                                  -var panelBar1, panelBar2, panelContainer, sidePanelContainer, panelDocument, sidePanelDocument;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -// xxxpedro chromenew hack
                                  -Firebug.framesLoaded = 0;
                                  -var numberOfFramesToLoad = 3;
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    // FIXME xxxpedro chromenew: is this the right place to reset the framesLoaded?
                                  -    Firebug.framesLoaded = 0;
                                  -    
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getPanelContainer: function()
                                  -    {
                                  -        return panelContainer;
                                  -    },
                                  -    
                                  -    getSidePanelContainer: function()
                                  -    {
                                  -        return sidePanelContainer;
                                  -    },
                                  -    
                                  -    getPanelDocument: function(panelType)
                                  -    {
                                  -        if (panelType.prototype.parentPanel)
                                  -            return sidePanelDocument;
                                  -        else
                                  -            return panelDocument;
                                  -    },
                                  -    
                                  -    // xxxpedro
                                  -    getSidePanelDocument: function()
                                  -    {
                                  -        return sidePanelDocument;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {   
                                  -        panelBar1 = $("fbPanelBar1-content");
                                  -        panelBar2 = $("fbPanelBar2-content");
                                  -        
                                  -        panelContainer = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document.body : 
                                  -                panelBar1;
                                  -        
                                  -        sidePanelContainer = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document.body : 
                                  -                panelBar2;
                                  -        
                                  -        panelDocument = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        sidePanelDocument = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new IconButton({
                                  -                type: "toggle",
                                  -                element: $("fbInspectButton"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew  
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.activate();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        // FIXME xxxpedro is this being used?
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbMainToolbarBox = $("fbMainToolbarBox");
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        //topHeight = fbTop.offsetHeight;
                                  -        //topPartialHeight = fbMainToolbarBox.offsetHeight;
                                  -        topHeight = 0;
                                  -        topPartialHeight = 0;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        //disableTextSelection($("fbMainToolbarBox"));
                                  -        //disableTextSelection($("fbPanelBarBox"));
                                  -        //disableTextSelection($("fbPanelBar1"));
                                  -        //disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -//        this.addController(
                                  -//            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -//        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            };
                                  -    
                                  -            addEvent(this.getSidePanelDocument(), "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(this.getSidePanelDocument(), "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -
                                  -        this.addController(
                                  -                [this.getPanelContainer(), "mousedown", onPanelMouseDown],
                                  -                [this.getSidePanelContainer(), "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.deactivate();
                                  -
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        //restoreTextSelection($("fbMainToolbarBox"));
                                  -        //restoreTextSelection($("fbPanelBarBox"));
                                  -        //restoreTextSelection($("fbPanelBar1"));
                                  -        //restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbMainToolbarBox = null;
                                  -
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            // FIXME xxxpedro chromenew
                                  -            //self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -//        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -//        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -//        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = null;
                                  -        ///fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbContentBox");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -//                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbContentBox", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        // FIXME xxxpedro chromenew
                                  -        ///if (fbVSplitterStyle)
                                  -        ///    fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        ///this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        /// xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    // FIXME: xxxpedro chromenew
                                  -    return;
                                  -    
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            removeClass($("fbContentBox"), "hideCommandLine");
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            setClass($("fbContentBox"), "hideCommandLine");
                                  -        }
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -            removeClass($("fbContentBox"), "hideSidePanelBar");
                                  -        else
                                  -            setClass($("fbContentBox"), "hideSidePanelBar");
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite =
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Cache = 
                                  -{
                                  -    ID: "firebug-" + new Date().getTime()
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - * 
                                  - * TODO: Investigate a possibility of cache validation, to be customized by each 
                                  - * kind of cache. For ElementCache it should validate if the element still is 
                                  - * inserted at the DOM.
                                  - */ 
                                  -var cacheUID = 0;
                                  -var createCache = function()
                                  -{
                                  -    var map = {};
                                  -    var data = {};
                                  -    
                                  -    var CID = Firebug.Lite.Cache.ID;
                                  -    
                                  -    // better detection
                                  -    var supportsDeleteExpando = !document.all;
                                  -    
                                  -    var cacheFunction = function(element)
                                  -    {
                                  -        return cacheAPI.set(element);
                                  -    };
                                  -    
                                  -    var cacheAPI =  
                                  -    {
                                  -        get: function(key)
                                  -        {
                                  -            return map.hasOwnProperty(key) ?
                                  -                    map[key] :
                                  -                    null;
                                  -        },
                                  -        
                                  -        set: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id)
                                  -            {
                                  -                id = ++cacheUID;
                                  -                element[CID] = id;
                                  -            }
                                  -            
                                  -            if (!map.hasOwnProperty(id))
                                  -            {
                                  -                map[id] = element;
                                  -                data[id] = {};
                                  -            }
                                  -            
                                  -            return id;
                                  -        },
                                  -        
                                  -        unset: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id) return;
                                  -            
                                  -            if (supportsDeleteExpando)
                                  -            {
                                  -                delete element[CID];
                                  -            }
                                  -            else if (element.removeAttribute)
                                  -            {
                                  -                element.removeAttribute(CID);
                                  -            }
                                  -
                                  -            delete map[id];
                                  -            delete data[id];
                                  -            
                                  -        },
                                  -        
                                  -        key: function(element)
                                  -        {
                                  -            return getValidatedKey(element);
                                  -        },
                                  -        
                                  -        has: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            return id && map.hasOwnProperty(id);
                                  -        },
                                  -        
                                  -        each: function(callback)
                                  -        {
                                  -            for (var key in map)
                                  -            {
                                  -                if (map.hasOwnProperty(key))
                                  -                {
                                  -                    callback(key, map[key]);
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        data: function(element, name, value)
                                  -        {
                                  -            // set data
                                  -            if (value)
                                  -            {
                                  -                if (!name) return null;
                                  -                
                                  -                var id = cacheAPI.set(element);
                                  -                
                                  -                return data[id][name] = value;
                                  -            }
                                  -            // get data
                                  -            else
                                  -            {
                                  -                var id = cacheAPI.key(element);
                                  -
                                  -                return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ?
                                  -                        data[id][name] :
                                  -                        null;
                                  -            }
                                  -        },
                                  -        
                                  -        clear: function()
                                  -        {
                                  -            for (var id in map)
                                  -            {
                                  -                var element = map[id];
                                  -                cacheAPI.unset(element);                
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var getValidatedKey = function(element)
                                  -    {
                                  -        var id = element[CID];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property CID will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            !supportsDeleteExpando &&   // the problem happens when supportsDeleteExpando is false
                                  -            id &&                       // the element has the expando property 
                                  -            map.hasOwnProperty(id) &&   // there is a cached element with the same id
                                  -            map[id] != element          // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            element.removeAttribute(CID);
                                  -
                                  -            id = null;
                                  -        }
                                  -        
                                  -        return id;
                                  -    };
                                  -    
                                  -    FBL.append(cacheFunction, cacheAPI);
                                  -    
                                  -    return cacheFunction;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro : check if we need really this on FBL scope
                                  -Firebug.Lite.Cache.StyleSheet = createCache();
                                  -Firebug.Lite.Cache.Element = createCache();
                                  -
                                  -// TODO: xxxpedro
                                  -Firebug.Lite.Cache.Event = createCache();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -var sourceMap = {};
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.Lite.Proxy = 
                                  -{
                                  -    // jsonp callbacks
                                  -    _callbacks: {},
                                  -    
                                  -    /**
                                  -     * Load a resource, either locally (directly) or externally (via proxy) using 
                                  -     * synchronous XHR calls. Loading external resources requires the proxy plugin to
                                  -     * be installed and configured (see /plugin/proxy/proxy.php).
                                  -     */
                                  -    load: function(url)
                                  -    {
                                  -        var resourceDomain = getDomain(url);
                                  -        var isLocalResource =
                                  -            // empty domain means local URL
                                  -            !resourceDomain ||
                                  -            // same domain means local too
                                  -            resourceDomain ==  Firebug.context.window.location.host; // TODO: xxxpedro context
                                  -        
                                  -        return isLocalResource ? fetchResource(url) : fetchProxyResource(url);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using JSONP technique.
                                  -     */
                                  -    loadJSONP: function(url, callback)
                                  -    {
                                  -        var script = createGlobalElement("script"),
                                  -            doc = Firebug.context.document,
                                  -            
                                  -            uid = "" + new Date().getTime(),
                                  -            callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid,
                                  -            
                                  -            jsonpURL = url.indexOf("?") != -1 ? 
                                  -                    url + "&" + callbackName :
                                  -                    url + "?" + callbackName;
                                  -            
                                  -        Firebug.Lite.Proxy._callbacks[uid] = function(data)
                                  -        {
                                  -            if (callback)
                                  -                callback(data);
                                  -            
                                  -            script.parentNode.removeChild(script);
                                  -            delete Firebug.Lite.Proxy._callbacks[uid];
                                  -        };
                                  -        
                                  -        script.src = jsonpURL;
                                  -        
                                  -        if (doc.documentElement)
                                  -            doc.documentElement.appendChild(script);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using YQL (not reliable).
                                  -     */
                                  -    YQL: function(url, callback)
                                  -    {
                                  -        var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" +
                                  -                encodeURIComponent(url) + "%22&format=xml";
                                  -        
                                  -        this.loadJSONP(yql, function(data)
                                  -        {
                                  -            var source = data.results[0];
                                  -            
                                  -            // clean up YQL bogus elements
                                  -            var match = /<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -            if (match)
                                  -                source = match[1];
                                  -            
                                  -            console.log(source);
                                  -        });
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage = 
                                  -    "/* Firebug Lite resource fetching is disabled.\n" +
                                  -    "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" +
                                  -    "More info at http://getfirebug.com/firebuglite#Options */";
                                  -
                                  -var fetchResource = function(url)
                                  -{
                                  -    if (Firebug.disableResourceFetching)
                                  -    {
                                  -        var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -        return source;
                                  -    }
                                  -
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    // Getting the native XHR object so our calls won't be logged in the Console Panel
                                  -    var xhr = FBL.getNativeXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    var source = sourceMap[url] = xhr.responseText; 
                                  -    return source;
                                  -};
                                  -
                                  -var fetchProxyResource = function(url)
                                  -{
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url);
                                  -    var response = fetchResource(proxyURL);
                                  -    
                                  -    try
                                  -    {
                                  -        var data = eval("(" + response + ")");
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return "ERROR: Firebug Lite Proxy plugin returned an invalid response.";
                                  -    }
                                  -    
                                  -    var source = data ? data.contents : ""; 
                                  -    return source;
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Style = 
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Script = function(window)
                                  -{
                                  -    this.fileName = null;
                                  -    this.isValid = null;
                                  -    this.baseLineNumber = null;
                                  -    this.lineExtent = null;
                                  -    this.tag = null;
                                  -    
                                  -    this.functionName = null;
                                  -    this.functionSource = null;
                                  -};
                                  -
                                  -Firebug.Lite.Script.prototype = 
                                  -{
                                  -    isLineExecutable: function(){},
                                  -    pcToLine: function(){},
                                  -    lineToPc: function(){},
                                  -    
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Script";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -Firebug.Lite.Browser = function(window)
                                  -{
                                  -    this.contentWindow = window;
                                  -    this.contentDocument = window.document;
                                  -    this.currentURI = 
                                  -    {
                                  -        spec: window.location.href
                                  -    };
                                  -};
                                  -
                                  -Firebug.Lite.Browser.prototype = 
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Browser";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -    http://www.JSON.org/json2.js
                                  -    2010-03-20
                                  -
                                  -    Public Domain.
                                  -
                                  -    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
                                  -
                                  -    See http://www.JSON.org/js.html
                                  -
                                  -
                                  -    This code should be minified before deployment.
                                  -    See http://javascript.crockford.com/jsmin.html
                                  -
                                  -    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
                                  -    NOT CONTROL.
                                  -
                                  -
                                  -    This file creates a global JSON object containing two methods: stringify
                                  -    and parse.
                                  -
                                  -        JSON.stringify(value, replacer, space)
                                  -            value       any JavaScript value, usually an object or array.
                                  -
                                  -            replacer    an optional parameter that determines how object
                                  -                        values are stringified for objects. It can be a
                                  -                        function or an array of strings.
                                  -
                                  -            space       an optional parameter that specifies the indentation
                                  -                        of nested structures. If it is omitted, the text will
                                  -                        be packed without extra whitespace. If it is a number,
                                  -                        it will specify the number of spaces to indent at each
                                  -                        level. If it is a string (such as '\t' or '&nbsp;'),
                                  -                        it contains the characters used to indent at each level.
                                  -
                                  -            This method produces a JSON text from a JavaScript value.
                                  -
                                  -            When an object value is found, if the object contains a toJSON
                                  -            method, its toJSON method will be called and the result will be
                                  -            stringified. A toJSON method does not serialize: it returns the
                                  -            value represented by the name/value pair that should be serialized,
                                  -            or undefined if nothing should be serialized. The toJSON method
                                  -            will be passed the key associated with the value, and this will be
                                  -            bound to the value
                                  -
                                  -            For example, this would serialize Dates as ISO strings.
                                  -
                                  -                Date.prototype.toJSON = function (key) {
                                  -                    function f(n) {
                                  -                        // Format integers to have at least two digits.
                                  -                        return n < 10 ? '0' + n : n;
                                  -                    }
                                  -
                                  -                    return this.getUTCFullYear()   + '-' +
                                  -                         f(this.getUTCMonth() + 1) + '-' +
                                  -                         f(this.getUTCDate())      + 'T' +
                                  -                         f(this.getUTCHours())     + ':' +
                                  -                         f(this.getUTCMinutes())   + ':' +
                                  -                         f(this.getUTCSeconds())   + 'Z';
                                  -                };
                                  -
                                  -            You can provide an optional replacer method. It will be passed the
                                  -            key and value of each member, with this bound to the containing
                                  -            object. The value that is returned from your method will be
                                  -            serialized. If your method returns undefined, then the member will
                                  -            be excluded from the serialization.
                                  -
                                  -            If the replacer parameter is an array of strings, then it will be
                                  -            used to select the members to be serialized. It filters the results
                                  -            such that only members with keys listed in the replacer array are
                                  -            stringified.
                                  -
                                  -            Values that do not have JSON representations, such as undefined or
                                  -            functions, will not be serialized. Such values in objects will be
                                  -            dropped; in arrays they will be replaced with null. You can use
                                  -            a replacer function to replace those with JSON values.
                                  -            JSON.stringify(undefined) returns undefined.
                                  -
                                  -            The optional space parameter produces a stringification of the
                                  -            value that is filled with line breaks and indentation to make it
                                  -            easier to read.
                                  -
                                  -            If the space parameter is a non-empty string, then that string will
                                  -            be used for indentation. If the space parameter is a number, then
                                  -            the indentation will be that many spaces.
                                  -
                                  -            Example:
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}]);
                                  -            // text is '["e",{"pluribus":"unum"}]'
                                  -
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
                                  -            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
                                  -
                                  -            text = JSON.stringify([new Date()], function (key, value) {
                                  -                return this[key] instanceof Date ?
                                  -                    'Date(' + this[key] + ')' : value;
                                  -            });
                                  -            // text is '["Date(---current time---)"]'
                                  -
                                  -
                                  -        JSON.parse(text, reviver)
                                  -            This method parses a JSON text to produce an object or array.
                                  -            It can throw a SyntaxError exception.
                                  -
                                  -            The optional reviver parameter is a function that can filter and
                                  -            transform the results. It receives each of the keys and values,
                                  -            and its return value is used instead of the original value.
                                  -            If it returns what it received, then the structure is not modified.
                                  -            If it returns undefined then the member is deleted.
                                  -
                                  -            Example:
                                  -
                                  -            // Parse the text. Values that look like ISO date strings will
                                  -            // be converted to Date objects.
                                  -
                                  -            myData = JSON.parse(text, function (key, value) {
                                  -                var a;
                                  -                if (typeof value === 'string') {
                                  -                    a =
                                  -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                                  -                    if (a) {
                                  -                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                                  -                            +a[5], +a[6]));
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                                  -                var d;
                                  -                if (typeof value === 'string' &&
                                  -                        value.slice(0, 5) === 'Date(' &&
                                  -                        value.slice(-1) === ')') {
                                  -                    d = new Date(value.slice(5, -1));
                                  -                    if (d) {
                                  -                        return d;
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -
                                  -    This is a reference implementation. You are free to copy, modify, or
                                  -    redistribute.
                                  -*/
                                  -
                                  -/*jslint evil: true, strict: false */
                                  -
                                  -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
                                  -    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
                                  -    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
                                  -    lastIndex, length, parse, prototype, push, replace, slice, stringify,
                                  -    test, toJSON, toString, valueOf
                                  -*/
                                  -
                                  -
                                  -// Create a JSON object only if one does not already exist. We create the
                                  -// methods in a closure to avoid creating global variables.
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var JSON = window.JSON || {};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -(function () {
                                  -
                                  -    function f(n) {
                                  -        // Format integers to have at least two digits.
                                  -        return n < 10 ? '0' + n : n;
                                  -    }
                                  -
                                  -    if (typeof Date.prototype.toJSON !== 'function') {
                                  -
                                  -        Date.prototype.toJSON = function (key) {
                                  -
                                  -            return isFinite(this.valueOf()) ?
                                  -                   this.getUTCFullYear()   + '-' +
                                  -                 f(this.getUTCMonth() + 1) + '-' +
                                  -                 f(this.getUTCDate())      + 'T' +
                                  -                 f(this.getUTCHours())     + ':' +
                                  -                 f(this.getUTCMinutes())   + ':' +
                                  -                 f(this.getUTCSeconds())   + 'Z' : null;
                                  -        };
                                  -
                                  -        String.prototype.toJSON =
                                  -        Number.prototype.toJSON =
                                  -        Boolean.prototype.toJSON = function (key) {
                                  -            return this.valueOf();
                                  -        };
                                  -    }
                                  -
                                  -    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        gap,
                                  -        indent,
                                  -        meta = {    // table of character substitutions
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '\\': '\\\\'
                                  -        },
                                  -        rep;
                                  -
                                  -
                                  -    function quote(string) {
                                  -
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can safely slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe escape
                                  -// sequences.
                                  -
                                  -        escapable.lastIndex = 0;
                                  -        return escapable.test(string) ?
                                  -            '"' + string.replace(escapable, function (a) {
                                  -                var c = meta[a];
                                  -                return typeof c === 'string' ? c :
                                  -                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -            }) + '"' :
                                  -            '"' + string + '"';
                                  -    }
                                  -
                                  -
                                  -    function str(key, holder) {
                                  -
                                  -// Produce a string from holder[key].
                                  -
                                  -        var i,          // The loop counter.
                                  -            k,          // The member key.
                                  -            v,          // The member value.
                                  -            length,
                                  -            mind = gap,
                                  -            partial,
                                  -            value = holder[key];
                                  -
                                  -// If the value has a toJSON method, call it to obtain a replacement value.
                                  -
                                  -        if (value && typeof value === 'object' &&
                                  -                typeof value.toJSON === 'function') {
                                  -            value = value.toJSON(key);
                                  -        }
                                  -
                                  -// If we were called with a replacer function, then call the replacer to
                                  -// obtain a replacement value.
                                  -
                                  -        if (typeof rep === 'function') {
                                  -            value = rep.call(holder, key, value);
                                  -        }
                                  -
                                  -// What happens next depends on the value's type.
                                  -
                                  -        switch (typeof value) {
                                  -        case 'string':
                                  -            return quote(value);
                                  -
                                  -        case 'number':
                                  -
                                  -// JSON numbers must be finite. Encode non-finite numbers as null.
                                  -
                                  -            return isFinite(value) ? String(value) : 'null';
                                  -
                                  -        case 'boolean':
                                  -        case 'null':
                                  -
                                  -// If the value is a boolean or null, convert it to a string. Note:
                                  -// typeof null does not produce 'null'. The case is included here in
                                  -// the remote chance that this gets fixed someday.
                                  -
                                  -            return String(value);
                                  -
                                  -// If the type is 'object', we might be dealing with an object or an array or
                                  -// null.
                                  -
                                  -        case 'object':
                                  -
                                  -// Due to a specification blunder in ECMAScript, typeof null is 'object',
                                  -// so watch out for that case.
                                  -
                                  -            if (!value) {
                                  -                return 'null';
                                  -            }
                                  -
                                  -// Make an array to hold the partial results of stringifying this object value.
                                  -
                                  -            gap += indent;
                                  -            partial = [];
                                  -
                                  -// Is the value an array?
                                  -
                                  -            if (Object.prototype.toString.apply(value) === '[object Array]') {
                                  -
                                  -// The value is an array. Stringify every element. Use null as a placeholder
                                  -// for non-JSON values.
                                  -
                                  -                length = value.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    partial[i] = str(i, value) || 'null';
                                  -                }
                                  -
                                  -// Join all of the elements together, separated with commas, and wrap them in
                                  -// brackets.
                                  -
                                  -                v = partial.length === 0 ? '[]' :
                                  -                    gap ? '[\n' + gap +
                                  -                            partial.join(',\n' + gap) + '\n' +
                                  -                                mind + ']' :
                                  -                          '[' + partial.join(',') + ']';
                                  -                gap = mind;
                                  -                return v;
                                  -            }
                                  -
                                  -// If the replacer is an array, use it to select the members to be stringified.
                                  -
                                  -            if (rep && typeof rep === 'object') {
                                  -                length = rep.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    k = rep[i];
                                  -                    if (typeof k === 'string') {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -
                                  -// Otherwise, iterate through all of the keys in the object.
                                  -
                                  -                for (k in value) {
                                  -                    if (Object.hasOwnProperty.call(value, k)) {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -// Join all of the member texts together, separated with commas,
                                  -// and wrap them in braces.
                                  -
                                  -            v = partial.length === 0 ? '{}' :
                                  -                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                                  -                        mind + '}' : '{' + partial.join(',') + '}';
                                  -            gap = mind;
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -// If the JSON object does not yet have a stringify method, give it one.
                                  -
                                  -    if (typeof JSON.stringify !== 'function') {
                                  -        JSON.stringify = function (value, replacer, space) {
                                  -
                                  -// The stringify method takes a value and an optional replacer, and an optional
                                  -// space parameter, and returns a JSON text. The replacer can be a function
                                  -// that can replace values, or an array of strings that will select the keys.
                                  -// A default replacer method can be provided. Use of the space parameter can
                                  -// produce text that is more easily readable.
                                  -
                                  -            var i;
                                  -            gap = '';
                                  -            indent = '';
                                  -
                                  -// If the space parameter is a number, make an indent string containing that
                                  -// many spaces.
                                  -
                                  -            if (typeof space === 'number') {
                                  -                for (i = 0; i < space; i += 1) {
                                  -                    indent += ' ';
                                  -                }
                                  -
                                  -// If the space parameter is a string, it will be used as the indent string.
                                  -
                                  -            } else if (typeof space === 'string') {
                                  -                indent = space;
                                  -            }
                                  -
                                  -// If there is a replacer, it must be a function or an array.
                                  -// Otherwise, throw an error.
                                  -
                                  -            rep = replacer;
                                  -            if (replacer && typeof replacer !== 'function' &&
                                  -                    (typeof replacer !== 'object' ||
                                  -                     typeof replacer.length !== 'number')) {
                                  -                throw new Error('JSON.stringify');
                                  -            }
                                  -
                                  -// Make a fake root object containing our value under the key of ''.
                                  -// Return the result of stringifying the value.
                                  -
                                  -            return str('', {'': value});
                                  -        };
                                  -    }
                                  -
                                  -
                                  -// If the JSON object does not yet have a parse method, give it one.
                                  -
                                  -    if (typeof JSON.parse !== 'function') {
                                  -        JSON.parse = function (text, reviver) {
                                  -
                                  -// The parse method takes a text and an optional reviver function, and returns
                                  -// a JavaScript value if the text is a valid JSON text.
                                  -
                                  -            var j;
                                  -
                                  -            function walk(holder, key) {
                                  -
                                  -// The walk method is used to recursively walk the resulting structure so
                                  -// that modifications can be made.
                                  -
                                  -                var k, v, value = holder[key];
                                  -                if (value && typeof value === 'object') {
                                  -                    for (k in value) {
                                  -                        if (Object.hasOwnProperty.call(value, k)) {
                                  -                            v = walk(value, k);
                                  -                            if (v !== undefined) {
                                  -                                value[k] = v;
                                  -                            } else {
                                  -                                delete value[k];
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                return reviver.call(holder, key, value);
                                  -            }
                                  -
                                  -
                                  -// Parsing happens in four stages. In the first stage, we replace certain
                                  -// Unicode characters with escape sequences. JavaScript handles many characters
                                  -// incorrectly, either silently deleting them, or treating them as line endings.
                                  -
                                  -            text = String(text);
                                  -            cx.lastIndex = 0;
                                  -            if (cx.test(text)) {
                                  -                text = text.replace(cx, function (a) {
                                  -                    return '\\u' +
                                  -                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -                });
                                  -            }
                                  -
                                  -// In the second stage, we run the text against regular expressions that look
                                  -// for non-JSON patterns. We are especially concerned with '()' and 'new'
                                  -// because they can cause invocation, and '=' because it can cause mutation.
                                  -// But just to be safe, we want to reject all unexpected forms.
                                  -
                                  -// We split the second stage into 4 regexp operations in order to work around
                                  -// crippling inefficiencies in IE's and Safari's regexp engines. First we
                                  -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
                                  -// replace all simple value tokens with ']' characters. Third, we delete all
                                  -// open brackets that follow a colon or comma or that begin the text. Finally,
                                  -// we look to see that the remaining characters are only whitespace or ']' or
                                  -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
                                  -
                                  -            if (/^[\],:{}\s]*$/.
                                  -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                                  -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
                                  -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                                  -
                                  -// In the third stage we use the eval function to compile the text into a
                                  -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                                  -// in JavaScript: it can begin a block or an object literal. We wrap the text
                                  -// in parens to eliminate the ambiguity.
                                  -
                                  -                j = eval('(' + text + ')');
                                  -
                                  -// In the optional fourth stage, we recursively walk the new structure, passing
                                  -// each name/value pair to a reviver function for possible transformation.
                                  -
                                  -                return typeof reviver === 'function' ?
                                  -                    walk({'': j}, '') : j;
                                  -            }
                                  -
                                  -// If the text is not JSON parseable, then a SyntaxError is thrown.
                                  -
                                  -            throw new SyntaxError('JSON.parse');
                                  -        };
                                  -    }
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.JSON = JSON;
                                  -
                                  -// ************************************************************************************************
                                  -}());
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -/* Copyright (c) 2010-2011 Marcus Westin
                                  - *
                                  - * Permission is hereby granted, free of charge, to any person obtaining a copy
                                  - * of this software and associated documentation files (the "Software"), to deal
                                  - * in the Software without restriction, including without limitation the rights
                                  - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  - * copies of the Software, and to permit persons to whom the Software is
                                  - * furnished to do so, subject to the following conditions:
                                  - *
                                  - * The above copyright notice and this permission notice shall be included in
                                  - * all copies or substantial portions of the Software.
                                  - *
                                  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  - * THE SOFTWARE.
                                  - */
                                  -
                                  -var store = (function(){
                                  -	var api = {},
                                  -		win = window,
                                  -		doc = win.document,
                                  -		localStorageName = 'localStorage',
                                  -		globalStorageName = 'globalStorage',
                                  -		namespace = '__firebug__storejs__',
                                  -		storage
                                  -
                                  -	api.disabled = false
                                  -	api.set = function(key, value) {}
                                  -	api.get = function(key) {}
                                  -	api.remove = function(key) {}
                                  -	api.clear = function() {}
                                  -	api.transact = function(key, transactionFn) {
                                  -		var val = api.get(key)
                                  -		if (typeof val == 'undefined') { val = {} }
                                  -		transactionFn(val)
                                  -		api.set(key, val)
                                  -	}
                                  -
                                  -	api.serialize = function(value) {
                                  -		return JSON.stringify(value)
                                  -	}
                                  -	api.deserialize = function(value) {
                                  -		if (typeof value != 'string') { return undefined }
                                  -		return JSON.parse(value)
                                  -	}
                                  -
                                  -	// Functions to encapsulate questionable FireFox 3.6.13 behavior 
                                  -	// when about.config::dom.storage.enabled === false
                                  -	// See https://github.com/marcuswestin/store.js/issues#issue/13
                                  -	function isLocalStorageNameSupported() {
                                  -		try { return (localStorageName in win && win[localStorageName]) }
                                  -		catch(err) { return false }
                                  -	}
                                  -	
                                  -	function isGlobalStorageNameSupported() {
                                  -		try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) }
                                  -		catch(err) { return false }
                                  -	}	
                                  -
                                  -	if (isLocalStorageNameSupported()) {
                                  -		storage = win[localStorageName]
                                  -		api.set = function(key, val) { storage.setItem(key, api.serialize(val)) }
                                  -		api.get = function(key) { return api.deserialize(storage.getItem(key)) }
                                  -		api.remove = function(key) { storage.removeItem(key) }
                                  -		api.clear = function() { storage.clear() }
                                  -
                                  -	} else if (isGlobalStorageNameSupported()) {
                                  -		storage = win[globalStorageName][win.location.hostname]
                                  -		api.set = function(key, val) { storage[key] = api.serialize(val) }
                                  -		api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) }
                                  -		api.remove = function(key) { delete storage[key] }
                                  -		api.clear = function() { for (var key in storage ) { delete storage[key] } }
                                  -
                                  -	} else if (doc.documentElement.addBehavior) {
                                  -		var storage = doc.createElement('div')
                                  -		function withIEStorage(storeFunction) {
                                  -			return function() {
                                  -				var args = Array.prototype.slice.call(arguments, 0)
                                  -				args.unshift(storage)
                                  -				// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
                                  -				// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
                                  -				// TODO: xxxpedro doc.body is not always available so we must use doc.documentElement.
                                  -				// We need to make sure this change won't affect the behavior of this library.
                                  -				doc.documentElement.appendChild(storage)
                                  -				storage.addBehavior('#default#userData')
                                  -				storage.load(localStorageName)
                                  -				var result = storeFunction.apply(api, args)
                                  -				doc.documentElement.removeChild(storage)
                                  -				return result
                                  -			}
                                  -		}
                                  -		api.set = withIEStorage(function(storage, key, val) {
                                  -			storage.setAttribute(key, api.serialize(val))
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.get = withIEStorage(function(storage, key) {
                                  -			return api.deserialize(storage.getAttribute(key))
                                  -		})
                                  -		api.remove = withIEStorage(function(storage, key) {
                                  -			storage.removeAttribute(key)
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.clear = withIEStorage(function(storage) {
                                  -			var attributes = storage.XMLDocument.documentElement.attributes
                                  -			storage.load(localStorageName)
                                  -			for (var i=0, attr; attr = attributes[i]; i++) {
                                  -				storage.removeAttribute(attr.name)
                                  -			}
                                  -			storage.save(localStorageName)
                                  -		})
                                  -	}
                                  -	
                                  -	try {
                                  -		api.set(namespace, namespace)
                                  -		if (api.get(namespace) != namespace) { api.disabled = true }
                                  -		api.remove(namespace)
                                  -	} catch(e) {
                                  -		api.disabled = true
                                  -	}
                                  -	
                                  -	return api
                                  -})();
                                  -
                                  -if (typeof module != 'undefined') { module.exports = store }
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.Store = store;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_selector*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -/**
                                  - * @name Firebug.Selector 
                                  - * @namespace
                                  - */
                                  -
                                  -/**
                                  - * @exports Sizzle as Firebug.Selector
                                  - */ 
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -/**#@+ @ignore */
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -/**#@-*/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache(targ))
                                  -            {
                                  -                var target = ""+ElementCache.key(targ);
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    if (Firebug.HTML)
                                  -                        Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0);
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache.has(targ))
                                  -                FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        // avoid error when the element is not attached a document
                                  -        if (!el || !el.parentNode)
                                  -            return;
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -( /** @scope s_domplate */ function() {
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -FBL.DomplateTag = function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateEmbed = function DomplateEmbed()
                                  -{
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateLoop = function DomplateLoop()
                                  -{
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var DomplateTag = FBL.DomplateTag;
                                  -var DomplateEmbed = FBL.DomplateEmbed;
                                  -var DomplateLoop = FBL.DomplateLoop;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var womb = null;
                                  -
                                  -FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -var domplate = FBL.domplate;
                                  -
                                  -FBL.domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -FBL.DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); };
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateEmbed.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateLoop.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -/** @class */
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -/** @class */
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** @namespace */
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild;
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertBefore: function(args, before, self)
                                  -    {
                                  -        return this.insertNode(args, before.ownerDocument, before, false, self);
                                  -    },
                                  -
                                  -    insertAfter: function(args, after, self)
                                  -    {
                                  -        return this.insertNode(args, after.ownerDocument, after, true, self);
                                  -    },
                                  -
                                  -    insertNode: function(args, doc, element, isAfter, self)
                                  -    {
                                  -        if (!args)
                                  -            args = {};
                                  -
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode html: "+html+"\n");
                                  -
                                  -        var doc = element.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        if (isAfter)
                                  -        {
                                  -            while (womb.firstChild)
                                  -                if (element.nextSibling)
                                  -                    element.parentNode.insertBefore(womb.firstChild, element.nextSibling);
                                  -                else
                                  -                    element.parentNode.appendChild(womb.firstChild);
                                  -        }
                                  -        else
                                  -        {
                                  -            while (womb.lastChild)
                                  -                element.parentNode.insertBefore(womb.lastChild, element);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -
                                  -    /*
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -    
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle "),
                                  -            
                                  -            SPAN({"class": "objectProps"}, 
                                  -                SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
                                  -                FOR("prop", "$object|propIterator",
                                  -                    SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"),
                                  -                    SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
                                  -                    TAG("$prop.tag", {object: "$prop.object"}),
                                  -                    SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
                                  -                ),
                                  -                SPAN({"class": "objectRightBrace"}, "}")
                                  -            )
                                  -        ),
                                  -
                                  -    propNumberTag:
                                  -        SPAN({"class": "objectProp-number"}, "$object"),
                                  -
                                  -    propStringTag:
                                  -        SPAN({"class": "objectProp-string"}, "&quot;$object&quot;"),
                                  -
                                  -    propObjectTag:
                                  -        SPAN({"class": "objectProp-object"}, "$object"),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        ///Firebug.ObjectShortIteratorMax;
                                  -        var maxLength = 55; // default max length for long representation
                                  -        
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var length = 0;
                                  -        
                                  -        var numProperties = 0;
                                  -        var numPropertiesShown = 0;
                                  -        var maxLengthReached = false;
                                  -        
                                  -        var lib = this;
                                  -        
                                  -        var propRepsMap = 
                                  -        {
                                  -            "boolean": this.propNumberTag,
                                  -            "number": this.propNumberTag,
                                  -            "string": this.propStringTag,
                                  -            "object": this.propObjectTag
                                  -        };
                                  -
                                  -        try
                                  -        {
                                  -            var title = Firebug.Rep.getTitle(object);
                                  -            length += title.length;
                                  -
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                
                                  -                var type = typeof(value);
                                  -                if (type == "boolean" || 
                                  -                    type == "number" || 
                                  -                    (type == "string" && value) || 
                                  -                    (type == "object" && value && value.toString))
                                  -                {
                                  -                    var tag = propRepsMap[type];
                                  -                    
                                  -                    var value = (type == "object") ?
                                  -                        Firebug.getRep(value).getTitle(value) :
                                  -                        value + "";
                                  -                        
                                  -                    length += name.length + value.length + 4;
                                  -                    
                                  -                    if (length <= maxLength)
                                  -                    {
                                  -                        props.push({
                                  -                            tag: tag, 
                                  -                            name: name, 
                                  -                            object: value, 
                                  -                            equal: "=", 
                                  -                            delim: ", "
                                  -                        });
                                  -                        
                                  -                        numPropertiesShown++;
                                  -                    }
                                  -                    else
                                  -                        maxLengthReached = true;
                                  -
                                  -                }
                                  -                
                                  -                numProperties++;
                                  -                
                                  -                if (maxLengthReached && numProperties > numPropertiesShown)
                                  -                    break;
                                  -            }
                                  -            
                                  -            if (numProperties > numPropertiesShown)
                                  -            {
                                  -                props.push({
                                  -                    object: "...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                });
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    fb_1_6_propIterator: function (object, max)
                                  -    {
                                  -        max = max || 3;
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0, count = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(value);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && value)
                                  -                    || (t == "object" && value && value.toString))
                                  -                {
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag || rep.tag;
                                  -                    if (t == "object")
                                  -                    {
                                  -                        value = rep.getTitle(value);
                                  -                        tag = rep.titleTag;
                                  -                    }
                                  -                    count++;
                                  -                    if (count <= max)
                                  -                        props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -            if (count > max)
                                  -            {
                                  -                props[Math.max(1,max-1)] = {
                                  -                    object: "more...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                };
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    /*
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -    /**/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.nodeName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.nodeName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 
                                  -                 // we must check if the attribute is specified otherwise IE will show them
                                  -                 if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.nodeName == "id")
                                  -                    idAttr = attr;
                                  -                 else if (attr.nodeName == "class")
                                  -                    classAttr = attr;
                                  -                 else if (attr.nodeName == "style")
                                  -                    attrs.push({
                                  -                        nodeName: attr.nodeName,
                                  -                        nodeValue: attr.nodeValue ||
                                  -                        // IE won't recognize the attr.nodeValue of <style> nodes ...
                                  -                        // and will return CSS property names in upper case, so we need to convert them
                                  -                        elt.style.cssText.replace(/([^\s]+)\s*:/g, 
                                  -                                function(m,g){return g.toLowerCase()+":"})                         
                                  -                    });
                                  -                 else
                                  -                    attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.nodeName == "id" || attr.nodeName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -     
                                  -     // TODO: xxxpedro remove this?
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -     /**/
                                  -
                                  -     getNodeTextGroups: function(element)
                                  -     {
                                  -         var text =  element.textContent;
                                  -         if (!Firebug.showFullTextNodes)
                                  -         {
                                  -             text=cropString(text,50);
                                  -         }
                                  -
                                  -         var escapeGroups=[];
                                  -
                                  -         if (Firebug.showTextNodesWithWhitespace)
                                  -             escapeGroups.push({
                                  -                'group': 'whitespace',
                                  -                'class': 'nodeWhiteSpace',
                                  -                'extra': {
                                  -                    '\t': '_Tab',
                                  -                    '\n': '_Para',
                                  -                    ' ' : '_Space'
                                  -                }
                                  -             });
                                  -         if (Firebug.showTextNodesWithEntities)
                                  -             escapeGroups.push({
                                  -                 'group':'text',
                                  -                 'class':'nodeTextEntity',
                                  -                 'extra':{}
                                  -             });
                                  -
                                  -         if (escapeGroups.length)
                                  -             return escapeGroupsForEntities(text, escapeGroups);
                                  -         else
                                  -             return [{str:text,'class':'',extra:''}];
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.nodeName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"),
                                  -            " ( ",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            " )",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        return frame.name || "anonymous";
                                  -        
                                  -        //return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        var fileName = cropString(getFileName(frame.href), 20);
                                  -        return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : "");
                                  -        
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var saveTimeout = 400;
                                  -var pageAmount = 10;
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var currentTarget = null;
                                  -var currentGroup = null;
                                  -var currentPanel = null;
                                  -var currentEditor = null;
                                  -
                                  -var defaultEditor = null;
                                  -
                                  -var originalClassName = null;
                                  -
                                  -var originalValue = null;
                                  -var defaultValue = null;
                                  -var previousValue = null;
                                  -
                                  -var invalidEditor = false;
                                  -var ignoreNextInput = false;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Editor = extend(Firebug.Module,
                                  -{
                                  -    supportsStopEvent: true,
                                  -
                                  -    dispatchName: "editor",
                                  -    tabCharacter: "    ",
                                  -
                                  -    startEditing: function(target, value, editor)
                                  -    {
                                  -        this.stopEditing();
                                  -
                                  -        if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter"))
                                  -            return;
                                  -
                                  -        var panel = Firebug.getElementPanel(target);
                                  -        if (!panel.editable)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.startEditing " + value, target);
                                  -
                                  -        defaultValue = target.getAttribute("defaultValue");
                                  -        if (value == undefined)
                                  -        {
                                  -            var textContent = isIE ? "innerText" : "textContent";
                                  -            value = target[textContent];
                                  -            if (value == defaultValue)
                                  -                value = "";
                                  -        }
                                  -
                                  -        originalValue = previousValue = value;
                                  -
                                  -        invalidEditor = false;
                                  -        currentTarget = target;
                                  -        currentPanel = panel;
                                  -        currentGroup = getAncestorByClass(target, "editGroup");
                                  -
                                  -        currentPanel.editing = true;
                                  -
                                  -        var panelEditor = currentPanel.getEditor(target, value);
                                  -        currentEditor = editor ? editor : panelEditor;
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        var inlineParent = getInlineParent(target);
                                  -        var targetSize = getOffsetSize(inlineParent);
                                  -
                                  -        setClass(panel.panelNode, "editing");
                                  -        setClass(target, "editing");
                                  -        if (currentGroup)
                                  -            setClass(currentGroup, "editing");
                                  -
                                  -        currentEditor.show(target, currentPanel, value, targetSize);
                                  -        //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
                                  -        currentEditor.beginEditing(target, value);
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Editor start panel "+currentPanel.name);
                                  -        this.attachListeners(currentEditor, panel.context);
                                  -    },
                                  -
                                  -    stopEditing: function(cancel)
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout);
                                  -
                                  -        clearTimeout(this.saveTimeout);
                                  -        delete this.saveTimeout;
                                  -
                                  -        this.detachListeners(currentEditor, currentPanel.context);
                                  -
                                  -        removeClass(currentPanel.panelNode, "editing");
                                  -        removeClass(currentTarget, "editing");
                                  -        if (currentGroup)
                                  -            removeClass(currentGroup, "editing");
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        if (value == defaultValue)
                                  -            value = "";
                                  -
                                  -        var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
                                  -
                                  -        try
                                  -        {
                                  -            if (cancel)
                                  -            {
                                  -                //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]);
                                  -                if (value != originalValue)
                                  -                    this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
                                  -
                                  -                if (removeGroup && !originalValue && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else if (!value)
                                  -            {
                                  -                this.saveEditAndNotifyListeners(currentTarget, null, previousValue);
                                  -
                                  -                if (removeGroup && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else
                                  -                this.save(value);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            //throw exc.message;
                                  -            //ERROR(exc);
                                  -        }
                                  -
                                  -        currentEditor.hide();
                                  -        currentPanel.editing = false;
                                  -
                                  -        //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]);
                                  -        //if (FBTrace.DBG_EDITOR)
                                  -        //    FBTrace.sysout("Editor stop panel "+currentPanel.name);
                                  -        
                                  -        currentTarget = null;
                                  -        currentGroup = null;
                                  -        currentPanel = null;
                                  -        currentEditor = null;
                                  -        originalValue = null;
                                  -        invalidEditor = false;
                                  -
                                  -        return value;
                                  -    },
                                  -
                                  -    cancelEditing: function()
                                  -    {
                                  -        return this.stopEditing(true);
                                  -    },
                                  -
                                  -    update: function(saveNow)
                                  -    {
                                  -        if (this.saveTimeout)
                                  -            clearTimeout(this.saveTimeout);
                                  -
                                  -        invalidEditor = true;
                                  -
                                  -        currentEditor.layout();
                                  -
                                  -        if (saveNow)
                                  -            this.save();
                                  -        else
                                  -        {
                                  -            var context = currentPanel.context;
                                  -            this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout);
                                  -            if (FBTrace.DBG_EDITOR)
                                  -                FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
                                  -        }
                                  -    },
                                  -
                                  -    save: function(value)
                                  -    {
                                  -        if (!invalidEditor)
                                  -            return;
                                  -
                                  -        if (value == undefined)
                                  -            value = currentEditor.getValue();
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"));
                                  -        try
                                  -        {
                                  -            this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
                                  -
                                  -            previousValue = value;
                                  -            invalidEditor = false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("editor.save FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
                                  -    {
                                  -        currentEditor.saveEdit(currentTarget, value, previousValue);
                                  -        //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]);
                                  -    },
                                  -
                                  -    setEditTarget: function(element)
                                  -    {
                                  -        if (!element)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]);
                                  -            this.stopEditing();
                                  -        }
                                  -        else if (hasClass(element, "insertBefore"))
                                  -            this.insertRow(element, "before");
                                  -        else if (hasClass(element, "insertAfter"))
                                  -            this.insertRow(element, "after");
                                  -        else
                                  -            this.startEditing(element);
                                  -    },
                                  -
                                  -    tabNextEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var nextEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            nextEditable = !value && currentGroup
                                  -                ? getNextOutsider(nextEditable, currentGroup)
                                  -                : getNextByClass(nextEditable, "editable");
                                  -        }
                                  -        while (nextEditable && !nextEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(nextEditable);
                                  -    },
                                  -
                                  -    tabPreviousEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var prevEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            prevEditable = !value && currentGroup
                                  -                ? getPreviousOutsider(prevEditable, currentGroup)
                                  -                : getPreviousByClass(prevEditable, "editable");
                                  -        }
                                  -        while (prevEditable && !prevEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(prevEditable);
                                  -    },
                                  -
                                  -    insertRow: function(relative, insertWhere)
                                  -    {
                                  -        var group =
                                  -            relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget;
                                  -        var value = this.stopEditing();
                                  -
                                  -        currentPanel = Firebug.getElementPanel(group);
                                  -
                                  -        currentEditor = currentPanel.getEditor(group, value);
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        currentGroup = currentEditor.insertNewRow(group, insertWhere);
                                  -        if (!currentGroup)
                                  -            return;
                                  -
                                  -        var editable = hasClass(currentGroup, "editable")
                                  -            ? currentGroup
                                  -            : getNextByClass(currentGroup, "editable");
                                  -
                                  -        if (editable)
                                  -            this.setEditTarget(editable);
                                  -    },
                                  -
                                  -    insertRowForObject: function(relative)
                                  -    {
                                  -        var container = getAncestorByClass(relative, "insertInto");
                                  -        if (container)
                                  -        {
                                  -            relative = getChildByClass(container, "insertBefore");
                                  -            if (relative)
                                  -                this.insertRow(relative, "before");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachListeners: function(editor, context)
                                  -    {
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        addEvent(win, "resize", this.onResize);
                                  -        addEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        this.listeners = [
                                  -            chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this))
                                  -        ];
                                  -
                                  -        if (editor.arrowCompletion)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)),
                                  -                chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)),
                                  -                chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)),
                                  -                chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount))
                                  -            );
                                  -        }
                                  -
                                  -        if (currentEditor.tabNavigation)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")),
                                  -                chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this))
                                  -            );
                                  -        }
                                  -        else if (currentEditor.multiLine)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("TAB", null, insertTab)
                                  -            );
                                  -        }
                                  -        else
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this))
                                  -            );
                                  -
                                  -            if (currentEditor.tabCompletion)
                                  -            {
                                  -                this.listeners.push(
                                  -                    chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)),
                                  -                    chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1))
                                  -                );
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    detachListeners: function(editor, context)
                                  -    {
                                  -        if (!this.listeners)
                                  -            return;
                                  -
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        removeEvent(win, "resize", this.onResize);
                                  -        removeEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -        if (chrome)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; ++i)
                                  -                chrome.keyIgnore(this.listeners[i]);
                                  -        }
                                  -
                                  -        delete this.listeners;
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        currentEditor.layout(true);
                                  -    },
                                  -
                                  -    onBlur: function(event)
                                  -    {
                                  -        if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box))
                                  -            this.stopEditing();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -
                                  -        this.onResize = bindFixed(this.onResize, this);
                                  -        this.onBlur = bind(this.onBlur, this);
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        this.stopEditing();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// BaseEditor
                                  -
                                  -Firebug.BaseEditor = extend(Firebug.MeasureBox,
                                  -{
                                  -    getValue: function()
                                  -    {
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for context menus within inline editors.
                                  -
                                  -    getContextMenuItems: function(target)
                                  -    {
                                  -        var items = [];
                                  -        items.push({label: "Cut", commandID: "cmd_cut"});
                                  -        items.push({label: "Copy", commandID: "cmd_copy"});
                                  -        items.push({label: "Paste", commandID: "cmd_paste"});
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Editor Module listeners will get "onBeginEditing" just before this call
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // Editor Module listeners will get "onSaveEdit" just after this call
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// InlineEditor
                                  -
                                  -// basic inline editor attributes
                                  -var inlineEditorAttributes = {
                                  -    "class": "textEditorInner",
                                  -    
                                  -    type: "text", 
                                  -    spellcheck: "false",
                                  -    
                                  -    onkeypress: "$onKeyPress",
                                  -    
                                  -    onoverflow: "$onOverflow",
                                  -    oncontextmenu: "$onContextMenu"
                                  -};
                                  -
                                  -// IE does not support the oninput event, so we're using the onkeydown to signalize
                                  -// the relevant keyboard events, and the onpropertychange to actually handle the
                                  -// input event, which should happen after the onkeydown event is fired and after the 
                                  -// value of the input is updated, but before the onkeyup and before the input (with the 
                                  -// new value) is rendered
                                  -if (isIE)
                                  -{
                                  -    inlineEditorAttributes.onpropertychange = "$onInput";
                                  -    inlineEditorAttributes.onkeydown = "$onKeyDown";
                                  -}
                                  -// for other browsers we use the oninput event
                                  -else
                                  -{
                                  -    inlineEditorAttributes.oninput = "$onInput";
                                  -}
                                  -
                                  -Firebug.InlineEditor = function(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -};
                                  -
                                  -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    enterOnBlur: true,
                                  -    outerMargin: 8,
                                  -    shadowExpand: 7,
                                  -
                                  -    tag:
                                  -        DIV({"class": "inlineEditor"},
                                  -            DIV({"class": "textEditorTop1"},
                                  -                DIV({"class": "textEditorTop2"})
                                  -            ),
                                  -            DIV({"class": "textEditorInner1"},
                                  -                DIV({"class": "textEditorInner2"},
                                  -                    INPUT(
                                  -                        inlineEditorAttributes
                                  -                    )
                                  -                )
                                  -            ),
                                  -            DIV({"class": "textEditorBottom1"},
                                  -                DIV({"class": "textEditorBottom2"})
                                  -            )
                                  -        ),
                                  -
                                  -    inputTag :
                                  -        INPUT({"class": "textEditorInner", type: "text",
                                  -            /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
                                  -        ),
                                  -
                                  -    expanderTag:
                                  -        IMG({"class": "inlineExpander", src: "blank.gif"}),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.fixedWidth = false;
                                  -        this.completeAsYouType = true;
                                  -        this.tabNavigation = true;
                                  -        this.multiLine = false;
                                  -        this.tabCompletion = false;
                                  -        this.arrowCompletion = true;
                                  -        this.noWrap = true;
                                  -        this.numeric = false;
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        this.destroyInput();
                                  -    },
                                  -
                                  -    initializeInline: function(doc)
                                  -    {
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Firebug.InlineEditor initializeInline()");
                                  -        
                                  -        //this.box = this.tag.replace({}, doc, this);
                                  -        this.box = this.tag.append({}, doc.body, this);
                                  -        
                                  -        //this.input = this.box.childNodes[1].firstChild.firstChild;  // XXXjjb childNode[1] required
                                  -        this.input = this.box.getElementsByTagName("input")[0];
                                  -        
                                  -        if (isIElt8)
                                  -        {
                                  -            this.input.style.top = "-8px";
                                  -        }
                                  -        
                                  -        this.expander = this.expanderTag.replace({}, doc, this);
                                  -        this.initialize();
                                  -    },
                                  -
                                  -    destroyInput: function()
                                  -    {
                                  -        // XXXjoe Need to remove input/keypress handlers to avoid leaks
                                  -    },
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        // It's only a one-line editor, so new lines shouldn't be allowed
                                  -        return this.input.value = stripNewLines(value);
                                  -    },
                                  -
                                  -    show: function(target, panel, value, targetSize)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]);
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.targetSize = targetSize;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        //this.targetOffset = getClientOffset(target);
                                  -        
                                  -        // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the 
                                  -        // offset values of invisible elements, or empty elements. So, in order to get the 
                                  -        // correct values, we temporary inject a character in the innerHTML of the empty element, 
                                  -        // then we get the offset values, and next, we restore the original innerHTML value.
                                  -        var innerHTML = target.innerHTML;
                                  -        var isEmptyElement = !innerHTML;
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = ".";
                                  -        
                                  -        // Get the position of the target element (that is about to be edited)
                                  -        this.targetOffset = 
                                  -        {
                                  -            x: target.offsetLeft,
                                  -            y: target.offsetTop
                                  -        };
                                  -        
                                  -        // Restore the original innerHTML value of the empty element
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = innerHTML;
                                  -        
                                  -        this.originalClassName = this.box.className;
                                  -
                                  -        var classNames = target.className.split(" ");
                                  -        for (var i = 0; i < classNames.length; ++i)
                                  -            setClass(this.box, "editor-" + classNames[i]);
                                  -
                                  -        // Make the editor match the target's font style
                                  -        copyTextStyles(target, this.box);
                                  -
                                  -        this.setValue(value);
                                  -
                                  -        if (this.fixedWidth)
                                  -            this.updateLayout(true);
                                  -        else
                                  -        {
                                  -            this.startMeasuring(target);
                                  -            this.textSize = this.measureInputText(value);
                                  -
                                  -            // Correct the height of the box to make the funky CSS drop-shadow line up
                                  -            var parent = this.input.parentNode;
                                  -            if (hasClass(parent, "textEditorInner2"))
                                  -            {
                                  -                var yDiff = this.textSize.height - this.shadowExpand;
                                  -                
                                  -                // IE6 height offset
                                  -                if (isIE6)
                                  -                    yDiff -= 2;
                                  -                
                                  -                parent.style.height = yDiff + "px";
                                  -                parent.parentNode.style.height = yDiff + "px";
                                  -            }
                                  -
                                  -            this.updateLayout(true);
                                  -        }
                                  -
                                  -        this.getAutoCompleter().reset();
                                  -
                                  -        if (isIElt8)
                                  -            panel.panelNode.appendChild(this.box);
                                  -        else
                                  -            target.offsetParent.appendChild(this.box);        
                                  -        
                                  -        //console.log(target);
                                  -        //this.input.select(); // it's called bellow, with setTimeout
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            // reset input style
                                  -            this.input.style.fontFamily = "Monospace";
                                  -            this.input.style.fontSize = "11px";
                                  -        }
                                  -
                                  -        // Insert the "expander" to cover the target element with white space
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            copyBoxStyles(target, this.expander);
                                  -
                                  -            target.parentNode.replaceChild(this.expander, target);
                                  -            collapse(target, true);
                                  -            this.expander.parentNode.insertBefore(target, this.expander);
                                  -        }
                                  -
                                  -        //TODO: xxxpedro
                                  -        //scrollIntoCenterView(this.box, null, true);
                                  -        
                                  -        // Display the editor after change its size and position to avoid flickering
                                  -        this.box.style.display = "block";
                                  -        
                                  -        // we need to call input.focus() and input.select() with a timeout, 
                                  -        // otherwise it won't work on all browsers due to timing issues 
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.input.focus();
                                  -            self.input.select();
                                  -        },0);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.box.className = this.originalClassName;
                                  -        
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            this.stopMeasuring();
                                  -
                                  -            collapse(this.target, false);
                                  -
                                  -            if (this.expander.parentNode)
                                  -                this.expander.parentNode.removeChild(this.expander);
                                  -        }
                                  -
                                  -        if (this.box.parentNode)
                                  -        {
                                  -            ///setSelectionRange(this.input, 0, 0);
                                  -            this.input.blur();
                                  -            
                                  -            this.box.parentNode.removeChild(this.box);
                                  -        }
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -        if (!this.fixedWidth)
                                  -            this.textSize = this.measureInputText(this.input.value);
                                  -
                                  -        if (forceAll)
                                  -            this.targetOffset = getClientOffset(this.expander);
                                  -
                                  -        this.updateLayout(false, forceAll);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleter: function()
                                  -    {
                                  -        if (!this.autoCompleter)
                                  -        {
                                  -            this.autoCompleter = new Firebug.AutoCompleter(null,
                                  -                bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this),
                                  -                true, false);
                                  -        }
                                  -
                                  -        return this.autoCompleter;
                                  -    },
                                  -
                                  -    completeValue: function(amt)
                                  -    {
                                  -        //console.log("completeValue");
                                  -        
                                  -        var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); 
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            Firebug.Editor.update(true);
                                  -            
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -        else
                                  -            this.incrementValue(amt);
                                  -    },
                                  -
                                  -    incrementValue: function(amt)
                                  -    {
                                  -        var value = this.input.value;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        if (isIE)
                                  -            var start = getInputSelectionStart(this.input), end = start;
                                  -        else
                                  -            var start = this.input.selectionStart, end = this.input.selectionEnd;
                                  -
                                  -        //debugger;
                                  -        var range = this.getAutoCompleteRange(value, start);
                                  -        if (!range || range.type != "int")
                                  -            range = {start: 0, end: value.length-1};
                                  -
                                  -        var expr = value.substr(range.start, range.end-range.start+1);
                                  -        preExpr = value.substr(0, range.start);
                                  -        postExpr = value.substr(range.end+1);
                                  -
                                  -        // See if the value is an integer, and if so increment it
                                  -        var intValue = parseInt(expr);
                                  -        if (!!intValue || intValue == 0)
                                  -        {
                                  -            var m = /\d+/.exec(expr);
                                  -            var digitPost = expr.substr(m.index+m[0].length);
                                  -
                                  -            var completion = intValue-amt;
                                  -            this.input.value = preExpr + completion + digitPost + postExpr;
                                  -            
                                  -            setSelectionRange(this.input, start, end);
                                  -
                                  -            Firebug.Editor.update(true);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        //console.log("onKeyPress", event);
                                  -        if (event.keyCode == 27 && !this.completeAsYouType)
                                  -        {
                                  -            var reverted = this.getAutoCompleter().revert(this.input);
                                  -            if (reverted)
                                  -                cancelEvent(event);
                                  -        }
                                  -        else if (event.charCode && this.advanceToNext(this.target, event.charCode))
                                  -        {
                                  -            Firebug.Editor.tabNextEditor();
                                  -            cancelEvent(event);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57)
                                  -                && event.charCode != 45 && event.charCode != 46)
                                  -                FBL.cancelEvent(event);
                                  -            else
                                  -            {
                                  -                // If the user backspaces, don't autocomplete after the upcoming input event
                                  -                this.ignoreNextInput = event.keyCode == 8;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onOverflow: function()
                                  -    {
                                  -        this.updateLayout(false, false, 3);
                                  -    },
                                  -
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        //console.log("onKeyDown", event.keyCode);
                                  -        if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8)
                                  -        {
                                  -            this.keyDownPressed = true;
                                  -        }
                                  -    },
                                  -    
                                  -    onInput: function(event)
                                  -    {
                                  -        //debugger;
                                  -        
                                  -        // skip not relevant onpropertychange calls on IE
                                  -        if (isIE)
                                  -        {
                                  -            if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) 
                                  -                return;
                                  -            
                                  -            this.keyDownPressed = false;
                                  -        }
                                  -        
                                  -        //console.log("onInput", event);
                                  -        //console.trace();
                                  -        
                                  -        var selectRangeCallback;
                                  -        
                                  -        if (this.ignoreNextInput)
                                  -        {
                                  -            this.ignoreNextInput = false;
                                  -            this.getAutoCompleter().reset();
                                  -        }
                                  -        else if (this.completeAsYouType)
                                  -            selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false);
                                  -        else
                                  -            this.getAutoCompleter().reset();
                                  -
                                  -        Firebug.Editor.update();
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var popup = $("fbInlineEditorPopup");
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        var menu = this.getContextMenuItems(target);
                                  -        if (menu)
                                  -        {
                                  -            for (var i = 0; i < menu.length; ++i)
                                  -                FBL.createMenuItem(popup, menu[i]);
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -
                                  -        popup.openPopupAtScreen(event.screenX, event.screenY, true);
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateLayout: function(initial, forceAll, extraWidth)
                                  -    {
                                  -        if (this.fixedWidth)
                                  -        {
                                  -            this.box.style.left = (this.targetOffset.x) + "px";
                                  -            this.box.style.top = (this.targetOffset.y) + "px";
                                  -
                                  -            var w = this.target.offsetWidth;
                                  -            var h = this.target.offsetHeight;
                                  -            this.input.style.width = w + "px";
                                  -            this.input.style.height = (h-3) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            if (initial || forceAll)
                                  -            {
                                  -                this.box.style.left = this.targetOffset.x + "px";
                                  -                this.box.style.top = this.targetOffset.y + "px";
                                  -            }
                                  -
                                  -            var approxTextWidth = this.textSize.width;
                                  -            var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x)
                                  -                - this.outerMargin;
                                  -
                                  -            var wrapped = initial
                                  -                ? this.noWrap && this.targetSize.height > this.textSize.height+3
                                  -                : this.noWrap && approxTextWidth > maxWidth;
                                  -
                                  -            if (wrapped)
                                  -            {
                                  -                var style = isIE ?
                                  -                        this.target.currentStyle :
                                  -                        this.target.ownerDocument.defaultView.getComputedStyle(this.target, "");
                                  -                
                                  -                targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight);
                                  -
                                  -                // Make the width fit the remaining x-space from the offset to the far right
                                  -                approxTextWidth = maxWidth - targetMargin;
                                  -
                                  -                this.input.style.width = "100%";
                                  -                this.box.style.width = approxTextWidth + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                // Make the input one character wider than the text value so that
                                  -                // typing does not ever cause the textbox to scroll
                                  -                var charWidth = this.measureInputText('m').width;
                                  -
                                  -                // Sometimes we need to make the editor a little wider, specifically when
                                  -                // an overflow happens, otherwise it will scroll off some text on the left
                                  -                if (extraWidth)
                                  -                    charWidth *= extraWidth;
                                  -
                                  -                var inputWidth = approxTextWidth + charWidth;
                                  -
                                  -                if (initial)
                                  -                {
                                  -                    if (isIE)
                                  -                    {
                                  -                        // TODO: xxxpedro
                                  -                        var xDiff = 13;
                                  -                        this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                    }
                                  -                    else
                                  -                        this.box.style.width = "auto";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // TODO: xxxpedro
                                  -                    var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth;
                                  -                    this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                }
                                  -
                                  -                this.input.style.width = inputWidth + "px";
                                  -            }
                                  -
                                  -            this.expander.style.width = approxTextWidth + "px";
                                  -            this.expander.style.height = Math.max(this.textSize.height-3,0) + "px";
                                  -        }
                                  -
                                  -        if (forceAll)
                                  -            scrollIntoCenterView(this.box, null, true);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Autocompletion
                                  -
                                  -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive)
                                  -{
                                  -    var candidates = null;
                                  -    var originalValue = null;
                                  -    var originalOffset = -1;
                                  -    var lastExpr = null;
                                  -    var lastOffset = -1;
                                  -    var exprOffset = 0;
                                  -    var lastIndex = 0;
                                  -    var preParsed = null;
                                  -    var preExpr = null;
                                  -    var postExpr = null;
                                  -
                                  -    this.revert = function(textBox)
                                  -    {
                                  -        if (originalOffset != -1)
                                  -        {
                                  -            textBox.value = originalValue;
                                  -            
                                  -            setSelectionRange(textBox, originalOffset, originalOffset);
                                  -
                                  -            this.reset();
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            this.reset();
                                  -            return false;
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        candidates = null;
                                  -        originalValue = null;
                                  -        originalOffset = -1;
                                  -        lastExpr = null;
                                  -        lastOffset = 0;
                                  -        exprOffset = 0;
                                  -    };
                                  -
                                  -    this.complete = function(context, textBox, cycle, reverse)
                                  -    {
                                  -        //console.log("complete", context, textBox, cycle, reverse);
                                  -        // TODO: xxxpedro important port to firebug (variable leak)
                                  -        //var value = lastValue = textBox.value;
                                  -        var value = textBox.value;
                                  -        
                                  -        //var offset = textBox.selectionStart;
                                  -        var offset = getInputSelectionStart(textBox);
                                  -        
                                  -        // The result of selectionStart() in Safari/Chrome is 1 unit less than the result
                                  -        // in Firefox. Therefore, we need to manually adjust the value here.
                                  -        if (isSafari && !cycle && offset >= 0) offset++;
                                  -        
                                  -        if (!selectMode && originalOffset != -1)
                                  -            offset = originalOffset;
                                  -
                                  -        if (!candidates || !cycle || offset != lastOffset)
                                  -        {
                                  -            originalOffset = offset;
                                  -            originalValue = value;
                                  -
                                  -            // Find the part of the string that will be parsed
                                  -            var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0;
                                  -            preParsed = value.substr(0, parseStart);
                                  -            var parsed = value.substr(parseStart);
                                  -
                                  -            // Find the part of the string that is being completed
                                  -            var range = getRange ? getRange(parsed, offset-parseStart, context) : null;
                                  -            if (!range)
                                  -                range = {start: 0, end: parsed.length-1 };
                                  -
                                  -            var expr = parsed.substr(range.start, range.end-range.start+1);
                                  -            preExpr = parsed.substr(0, range.start);
                                  -            postExpr = parsed.substr(range.end+1);
                                  -            exprOffset = parseStart + range.start;
                                  -
                                  -            if (!cycle)
                                  -            {
                                  -                if (!expr)
                                  -                    return;
                                  -                else if (lastExpr && lastExpr.indexOf(expr) != 0)
                                  -                {
                                  -                    candidates = null;
                                  -                }
                                  -                else if (lastExpr && lastExpr.length >= expr.length)
                                  -                {
                                  -                    candidates = null;
                                  -                    lastExpr = expr;
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            lastExpr = expr;
                                  -            lastOffset = offset;
                                  -
                                  -            var searchExpr;
                                  -
                                  -            // Check if the cursor is at the very right edge of the expression, or
                                  -            // somewhere in the middle of it
                                  -            if (expr && offset != parseStart+range.end+1)
                                  -            {
                                  -                if (cycle)
                                  -                {
                                  -                    // We are in the middle of the expression, but we can
                                  -                    // complete by cycling to the next item in the values
                                  -                    // list after the expression
                                  -                    offset = range.start;
                                  -                    searchExpr = expr;
                                  -                    expr = "";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // We can't complete unless we are at the ridge edge
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            var values = evaluator(preExpr, expr, postExpr, context);
                                  -            if (!values)
                                  -                return;
                                  -
                                  -            if (expr)
                                  -            {
                                  -                // Filter the list of values to those which begin with expr. We
                                  -                // will then go on to complete the first value in the resulting list
                                  -                candidates = [];
                                  -
                                  -                if (caseSensitive)
                                  -                {
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.indexOf(expr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = caseSensitive ? expr : expr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -
                                  -                lastIndex = reverse ? candidates.length-1 : 0;
                                  -            }
                                  -            else if (searchExpr)
                                  -            {
                                  -                var searchIndex = -1;
                                  -
                                  -                // Find the first instance of searchExpr in the values list. We
                                  -                // will then complete the string that is found
                                  -                if (caseSensitive)
                                  -                {
                                  -                    searchIndex = values.indexOf(expr);
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = searchExpr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                        {
                                  -                            searchIndex = i;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                // Nothing found, so there's nothing to complete to
                                  -                if (searchIndex == -1)
                                  -                    return this.reset();
                                  -
                                  -                expr = searchExpr;
                                  -                candidates = cloneArray(values);
                                  -                lastIndex = searchIndex;
                                  -            }
                                  -            else
                                  -            {
                                  -                expr = "";
                                  -                candidates = [];
                                  -                for (var i = 0; i < values.length; ++i)
                                  -                {
                                  -                    if (values[i].substr)
                                  -                        candidates.push(values[i]);
                                  -                }
                                  -                lastIndex = -1;
                                  -            }
                                  -        }
                                  -
                                  -        if (cycle)
                                  -        {
                                  -            expr = lastExpr;
                                  -            lastIndex += reverse ? -1 : 1;
                                  -        }
                                  -
                                  -        if (!candidates.length)
                                  -            return;
                                  -
                                  -        if (lastIndex >= candidates.length)
                                  -            lastIndex = 0;
                                  -        else if (lastIndex < 0)
                                  -            lastIndex = candidates.length-1;
                                  -
                                  -        var completion = candidates[lastIndex];
                                  -        var preCompletion = expr.substr(0, offset-exprOffset);
                                  -        var postCompletion = completion.substr(offset-exprOffset);
                                  -
                                  -        textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr;
                                  -        var offsetEnd = preParsed.length + preExpr.length + completion.length;
                                  -        
                                  -        // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange()
                                  -        // is working well.
                                  -        /*
                                  -        if (textBox.setSelectionRange)
                                  -        {
                                  -            // we must select the range with a timeout, otherwise the text won't
                                  -            // be properly selected (because after this function executes, the editor's
                                  -            // input will be resized to fit the whole text)
                                  -            setTimeout(function(){
                                  -                if (selectMode)
                                  -                    textBox.setSelectionRange(offset, offsetEnd);
                                  -                else
                                  -                    textBox.setSelectionRange(offsetEnd, offsetEnd);
                                  -            },0);
                                  -        }
                                  -        /**/
                                  -        
                                  -        // we must select the range with a timeout, otherwise the text won't
                                  -        // be properly selected (because after this function executes, the editor's
                                  -        // input will be resized to fit the whole text)
                                  -        /*
                                  -        setTimeout(function(){
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        },0);
                                  -                
                                  -        return true;
                                  -        /**/
                                  -        
                                  -        // The editor text should be selected only after calling the editor.update() 
                                  -        // in Safari/Chrome, otherwise the text won't be selected. So, we're returning
                                  -        // a function to be called later (in the proper time for all browsers).
                                  -        //
                                  -        // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid
                                  -        // returning a closure. the complete() function seems to be called only twice in
                                  -        // editor.js. See if this function is called anywhere else (like css.js for example).
                                  -        return function(){
                                  -            //console.log("autocomplete ", textBox, offset, offsetEnd);
                                  -            
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        };
                                  -        /**/
                                  -    };
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getDefaultEditor = function getDefaultEditor(panel)
                                  -{
                                  -    if (!defaultEditor)
                                  -    {
                                  -        var doc = panel.document;
                                  -        defaultEditor = new Firebug.InlineEditor(doc);
                                  -    }
                                  -
                                  -    return defaultEditor;
                                  -}
                                  -
                                  -/**
                                  - * An outsider is the first element matching the stepper element that
                                  - * is not an child of group. Elements tagged with insertBefore or insertAfter
                                  - * classes are also excluded from these results unless they are the sibling
                                  - * of group, relative to group's parent editGroup. This allows for the proper insertion
                                  - * rows when groups are nested.
                                  - */
                                  -var getOutsider = function getOutsider(element, group, stepper)
                                  -{
                                  -    var parentGroup = getAncestorByClass(group.parentNode, "editGroup");
                                  -    var next;
                                  -    do
                                  -    {
                                  -        next = stepper(next || element);
                                  -    }
                                  -    while (isAncestor(next, group) || isGroupInsert(next, parentGroup));
                                  -
                                  -    return next;
                                  -}
                                  -
                                  -var isGroupInsert = function isGroupInsert(next, group)
                                  -{
                                  -    return (!group || isAncestor(next, group))
                                  -        && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter"));
                                  -}
                                  -
                                  -var getNextOutsider = function getNextOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getNextByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getPreviousOutsider = function getPreviousOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getInlineParent = function getInlineParent(element)
                                  -{
                                  -    var lastInline = element;
                                  -    for (; element; element = element.parentNode)
                                  -    {
                                  -        //var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        var s = isIE ?
                                  -                element.currentStyle :
                                  -                element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        
                                  -        if (s.display != "inline")
                                  -            return lastInline;
                                  -        else
                                  -            lastInline = element;
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -var insertTab = function insertTab()
                                  -{
                                  -    insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Editor);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (Env.Options.disableXHRListener)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -// XHRSpy
                                  -    
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// XMLHttpRequestWrapper
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal variables
                                  -    
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal methods
                                  -    
                                  -    var updateSelfPropertiesIgnore = {
                                  -        abort: 1,
                                  -        channel: 1,
                                  -        getAllResponseHeaders: 1,
                                  -        getInterface: 1,
                                  -        getResponseHeader: 1,
                                  -        mozBackgroundRequest: 1,
                                  -        multipart: 1,
                                  -        onreadystatechange: 1,
                                  -        open: 1,
                                  -        send: 1,
                                  -        setRequestHeader: 1
                                  -    };
                                  -    
                                  -    var updateSelfProperties = function()
                                  -    {
                                  -        if (supportsXHRIterator)
                                  -        {
                                  -            for (var propName in xhrRequest)
                                  -            {
                                  -                if (propName in updateSelfPropertiesIgnore)
                                  -                    continue;
                                  -                
                                  -                try
                                  -                {
                                  -                    var propValue = xhrRequest[propName];
                                  -                    
                                  -                    if (propValue && !isFunction(propValue))
                                  -                        self[propName] = propValue;
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    //console.log(propName, E.message);
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // will fail to read these xhrRequest properties if the request is not completed
                                  -            if (xhrRequest.readyState == 4)
                                  -            {
                                  -                self.status = xhrRequest.status;
                                  -                self.statusText = xhrRequest.statusText;
                                  -                self.responseText = xhrRequest.responseText;
                                  -                self.responseXML = xhrRequest.responseXML;
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var updateXHRPropertiesIgnore = {
                                  -        channel: 1,
                                  -        onreadystatechange: 1,
                                  -        readyState: 1,
                                  -        responseBody: 1,
                                  -        responseText: 1,
                                  -        responseXML: 1,
                                  -        status: 1,
                                  -        statusText: 1,
                                  -        upload: 1
                                  -    };
                                  -    
                                  -    var updateXHRProperties = function()
                                  -    {
                                  -        for (var propName in self)
                                  -        {
                                  -            if (propName in updateXHRPropertiesIgnore)
                                  -                continue;
                                  -            
                                  -            try
                                  -            {
                                  -                var propValue = self[propName];
                                  -                
                                  -                if (propValue && !xhrRequest[propName])
                                  -                {
                                  -                    xhrRequest[propName] = propValue;
                                  -                }
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                //console.log(propName, E.message);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var logXHR = function() 
                                  -    {
                                  -        var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR);
                                  -        
                                  -        if (row)
                                  -        {
                                  -            setClass(row, "loading");
                                  -            spy.logRow = row;
                                  -        }
                                  -    };
                                  -    
                                  -    var finishXHR = function() 
                                  -    {
                                  -        var duration = new Date().getTime() - reqStartTS;
                                  -        var success = xhrRequest.status == 200;
                                  -        
                                  -        var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -        var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : [];
                                  -        var reHeader = /^(\S+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, l=responses.length; i<l; i++)
                                  -        {
                                  -            var text = responses[i];
                                  -            var match = text.match(reHeader);
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var name = match[1];
                                  -                var value = match[2];
                                  -                
                                  -                // update the spy mimeType property so we can detect when to show 
                                  -                // custom response viewers (such as HTML, XML or JSON viewer)
                                  -                if (name == "Content-Type")
                                  -                    spy.mimeType = value;
                                  -                
                                  -                /*
                                  -                if (name == "Last Modified")
                                  -                {
                                  -                    if (!spy.cacheEntry)
                                  -                        spy.cacheEntry = [];
                                  -                    
                                  -                    spy.cacheEntry.push({
                                  -                       name: [name],
                                  -                       value: [value]
                                  -                    });
                                  -                }
                                  -                /**/
                                  -                
                                  -                spy.responseHeaders.push({
                                  -                   name: [name],
                                  -                   value: [value]
                                  -                });
                                  -            }
                                  -        }
                                  -            
                                  -        with({
                                  -            row: spy.logRow, 
                                  -            status: xhrRequest.status == 0 ? 
                                  -                        // if xhrRequest.status == 0 then accessing xhrRequest.statusText
                                  -                        // will cause an error, so we must handle this case (Issue 3504)
                                  -                        "" : xhrRequest.status + " " + xhrRequest.statusText, 
                                  -            time: duration,
                                  -            success: success
                                  -        })
                                  -        {
                                  -            setTimeout(function(){
                                  -                
                                  -                spy.responseText = xhrRequest.responseText;
                                  -                
                                  -                // update row information to avoid "ethernal spinning gif" bug in IE 
                                  -                row = row || spy.logRow;
                                  -                
                                  -                // if chrome document is not loaded, there will be no row yet, so just ignore
                                  -                if (!row) return;
                                  -                
                                  -                // update the XHR representation data
                                  -                handleRequestStatus(success, status, time);
                                  -                
                                  -            },200);
                                  -        }
                                  -        
                                  -        spy.loaded = true;
                                  -        /*
                                  -        // commented because they are being updated by the updateSelfProperties() function
                                  -        self.status = xhrRequest.status;
                                  -        self.statusText = xhrRequest.statusText;
                                  -        self.responseText = xhrRequest.responseText;
                                  -        self.responseXML = xhrRequest.responseXML;
                                  -        /**/
                                  -        updateSelfProperties();
                                  -    };
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log(["onreadystatechange", xhrRequest.readyState, xhrRequest.readyState == 4 && xhrRequest.status]);
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            finishXHR();
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    // update the XHR representation data
                                  -    var handleRequestStatus = function(success, status, time)
                                  -    {
                                  -        var row = spy.logRow;
                                  -        FBL.removeClass(row, "loading");
                                  -        
                                  -        if (!success)
                                  -            FBL.setClass(row, "error");
                                  -        
                                  -        var item = FBL.$$(".spyStatus", row)[0];
                                  -        item.innerHTML = status;
                                  -        
                                  -        if (time)
                                  -        {
                                  -            var item = FBL.$$(".spyTime", row)[0];
                                  -            item.innerHTML = time + "ms";
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public properties and handlers
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public methods
                                  -    
                                  -    this.open = function(method, url, async, user, password)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        updateSelfProperties();
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        spy.urlParams = parseURLParamsArray(url);
                                  -        
                                  -        try
                                  -        {
                                  -            // xhrRequest.open.apply may not be available in IE
                                  -            if (supportsApply)
                                  -                xhrRequest.open.apply(xhrRequest, arguments);
                                  -            else
                                  -                xhrRequest.open(method, url, async, user, password);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        spy.data = data;
                                  -        
                                  -        reqStartTS = new Date().getTime();
                                  -        
                                  -        updateXHRProperties();
                                  -        
                                  -        try
                                  -        {
                                  -            xhrRequest.send(data);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            // TODO: xxxpedro XHR throws or not?
                                  -            //throw e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            logXHR();
                                  -            
                                  -            if (!spy.async)
                                  -            {
                                  -                self.readyState = xhrRequest.readyState;
                                  -                
                                  -                // sometimes an error happens when calling finishXHR()
                                  -                // Issue 3422: Firebug Lite breaks Google Instant Search
                                  -                try
                                  -                {
                                  -                    finishXHR();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        return xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        xhrRequest.abort();
                                  -        updateSelfProperties();
                                  -        handleRequestStatus(false, "Aborted");
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    /**/
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Clone XHR object
                                  -
                                  -    // xhrRequest.open.apply not available in IE and will throw an error in 
                                  -    // IE6 by simply reading xhrRequest.open so we must sniff it
                                  -    var supportsApply = !isIE6 &&
                                  -            xhrRequest && 
                                  -            xhrRequest.open && 
                                  -            typeof xhrRequest.open.apply != "undefined";
                                  -    
                                  -    var numberOfXHRProperties = 0;
                                  -    for (var propName in xhrRequest)
                                  -    {
                                  -        numberOfXHRProperties++;
                                  -        
                                  -        if (propName in updateSelfPropertiesIgnore)
                                  -            continue;
                                  -        
                                  -        try
                                  -        {
                                  -            var propValue = xhrRequest[propName];
                                  -            
                                  -            if (isFunction(propValue))
                                  -            {
                                  -                if (typeof self[propName] == "undefined")
                                  -                {
                                  -                    this[propName] = (function(name, xhr){
                                  -                    
                                  -                        return supportsApply ?
                                  -                            // if the browser supports apply 
                                  -                            function()
                                  -                            {
                                  -                                return xhr[name].apply(xhr, arguments);
                                  -                            }
                                  -                            :
                                  -                            function(a,b,c,d,e)
                                  -                            {
                                  -                                return xhr[name](a,b,c,d,e);
                                  -                            };
                                  -                    
                                  -                    })(propName, xhrRequest);
                                  -                } 
                                  -            }
                                  -            else
                                  -                this[propName] = propValue;
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            //console.log(propName, E.message);
                                  -        }
                                  -    }
                                  -    
                                  -    // IE6 does not support for (var prop in XHR)
                                  -    var supportsXHRIterator = numberOfXHRProperties > 0;
                                  -    
                                  -    /**/
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ActiveXObject Wrapper (IE6 only)
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    _ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new _ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Register the XMLHttpRequestWrapper for non-IE6 browsers
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    };
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -
                                  -FBL.getNativeXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new _XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new _ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -        this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]);
                                  -        this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]);
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                var postText = $$(".netInfoPostText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                var putText = $$(".netInfoPutText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else ///if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            
                                  -            ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0];
                                  -            
                                  -            ///iframe.contentWindow.document.body.innerHTML = text;
                                  -            
                                  -            // TODO: xxxpedro net - remove scripts
                                  -            var reScript = /<script(.|\s)*?\/script>/gi;
                                  -            
                                  -            text = text.replace(reScript, "");
                                  -                
                                  -            iframe.contentWindow.document.write(text);
                                  -            iframe.contentWindow.document.close();
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0];
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0];
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        ///var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        var sourceNode = $$(".source", node)[0];
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents posted data within request info (the info, which is visible when
                                  - * a request entry is expanded. This template renders content of the Post tab.
                                  - */
                                  -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/
                                  -{
                                  -    // application/x-www-form-urlencoded
                                  -    paramsTable:
                                  -        TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")},
                                  -                TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
                                  -                    TD({colspan: 3, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parameters"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "application/x-www-form-urlencoded"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // multipart/form-data
                                  -    partsTable:
                                  -        TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parts")},
                                  -                TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role":"presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parts"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "multipart/form-data"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/json
                                  -    jsonTable:
                                  -        TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")},
                                  -            TBODY({"role": "list", "aria-label": $STR("JSON")},
                                  -                TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            ///$STR("jsonviewer.tab.JSON")
                                  -                            $STR("JSON")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostJSONBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/xml
                                  -    xmlTable:
                                  -        TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")},
                                  -                TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("xmlviewer.tab.XML")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostXMLBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTable:
                                  -        TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Source")},
                                  -                TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostSource"},
                                  -                            $STR("net.label.Source")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceBodyTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                FOR("line", "$param|getParamValueIterator",
                                  -                    CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        return NetInfoBody.getParamValueIterator(param);
                                  -    },
                                  -
                                  -    render: function(context, parentNode, file)
                                  -    {
                                  -        //debugger;
                                  -        var spy = getAncestorByClass(parentNode, "spyHead");
                                  -        var spyObject = spy.repObject;
                                  -        var data = spyObject.data;
                                  -        
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        var contentType = file.mimeType;
                                  -        
                                  -        ///var text = Utils.getPostText(file, context, true);
                                  -        ///if (text == undefined)
                                  -        ///    return;
                                  -
                                  -        ///if (Utils.isURLEncodedRequest(file, context))
                                  -        // fake Utils.isURLEncodedRequest identification
                                  -        if (contentType && contentType == "application/x-www-form-urlencoded" ||
                                  -            data && data.indexOf("=") != -1) 
                                  -        {
                                  -            ///var lines = text.split("\n");
                                  -            ///var params = parseURLEncodedText(lines[lines.length-1]);
                                  -            var params = parseURLEncodedTextArray(data);
                                  -            if (params)
                                  -                this.insertParameters(parentNode, params);
                                  -        }
                                  -
                                  -        ///if (Utils.isMultiPartRequest(file, context))
                                  -        ///{
                                  -        ///    var data = this.parseMultiPartText(file, context);
                                  -        ///    if (data)
                                  -        ///        this.insertParts(parentNode, data);
                                  -        ///}
                                  -
                                  -        // moved to the top
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -
                                  -        ///if (Firebug.JSONViewerModel.isJSON(contentType))
                                  -        var jsonData = {
                                  -            responseText: data
                                  -        };
                                  -        
                                  -        if (Firebug.JSONViewerModel.isJSON(contentType, data))
                                  -            ///this.insertJSON(parentNode, file, context);
                                  -            this.insertJSON(parentNode, jsonData, context);
                                  -
                                  -        ///if (Firebug.XMLViewerModel.isXML(contentType))
                                  -        ///    this.insertXML(parentNode, file, context);
                                  -
                                  -        ///var postText = Utils.getPostText(file, context);
                                  -        ///postText = Utils.formatPostText(postText);
                                  -        var postText = data;
                                  -        if (postText)
                                  -            this.insertSource(parentNode, postText);
                                  -    },
                                  -
                                  -    insertParameters: function(parentNode, params)
                                  -    {
                                  -        if (!params || !params.length)
                                  -            return;
                                  -
                                  -        var paramTable = this.paramsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostParamsTitle", paramTable)[0];
                                  -        //var paramTable = this.paramsTable.append(null, parentNode);
                                  -        //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
                                  -        
                                  -        var tbody = paramTable.getElementsByTagName("tbody")[0];
                                  -        
                                  -        NetInfoBody.headerDataTag.insertRows({headers: params}, row);
                                  -    },
                                  -
                                  -    insertParts: function(parentNode, data)
                                  -    {
                                  -        if (!data.params || !data.params.length)
                                  -            return;
                                  -
                                  -        var partsTable = this.partsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostPartsTitle", paramTable)[0];
                                  -        //var partsTable = this.partsTable.append(null, parentNode);
                                  -        //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
                                  -    },
                                  -
                                  -    insertJSON: function(parentNode, file, context)
                                  -    {
                                  -        ///var text = Utils.getPostText(file, context);
                                  -        var text = file.responseText;
                                  -        ///var data = parseJSONString(text, "http://" + file.request.originalURI.host);
                                  -        var data = parseJSONString(text);
                                  -        if (!data)
                                  -            return;
                                  -
                                  -        ///var jsonTable = this.jsonTable.append(null, parentNode);
                                  -        var jsonTable = this.jsonTable.append({}, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0];
                                  -
                                  -        if (!this.toggles)
                                  -            this.toggles = {};
                                  -
                                  -        Firebug.DOMPanel.DirTable.tag.replace(
                                  -            {object: data, toggles: this.toggles}, jsonBody);
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -
                                  -        var jsonTable = this.xmlTable.append(null, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0];
                                  -
                                  -        Firebug.XMLViewerModel.insertXML(jsonBody, text);
                                  -    },
                                  -
                                  -    insertSource: function(parentNode, text)
                                  -    {
                                  -        var sourceTable = this.sourceTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostSourceTitle", sourceTable)[0];
                                  -        //var sourceTable = this.sourceTable.append(null, parentNode);
                                  -        //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
                                  -
                                  -        var param = {value: [text]};
                                  -        this.sourceBodyTag.insertRows({param: param}, row);
                                  -    },
                                  -
                                  -    parseMultiPartText: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text == undefined)
                                  -            return null;
                                  -
                                  -        FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
                                  -
                                  -        var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
                                  -
                                  -        var divider = "\r\n\r\n";
                                  -        var bodyStart = text.indexOf(divider);
                                  -        var body = text.substr(bodyStart + divider.length);
                                  -
                                  -        var postData = {};
                                  -        postData.mimeType = "multipart/form-data";
                                  -        postData.params = [];
                                  -
                                  -        var parts = body.split("--" + boundary);
                                  -        for (var i=0; i<parts.length; i++)
                                  -        {
                                  -            var part = parts[i].split(divider);
                                  -            if (part.length != 2)
                                  -                continue;
                                  -
                                  -            var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -            postData.params.push({
                                  -                name: (m && m.length > 1) ? m[1] : "",
                                  -                value: trim(part[1])
                                  -            });
                                  -        }
                                  -
                                  -        return postData;
                                  -    }
                                  -});
                                  -
                                  -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a;};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy, logRow);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow)
                                  -{
                                  -    if (!spy.logRow && logRow)
                                  -        spy.logRow = logRow;
                                  -    
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// List of JSON content types.
                                  -var contentTypes =
                                  -{
                                  -    // TODO: create issue: jsonViewer will not try to evaluate the contents of the requested file 
                                  -    // if the content-type is set to "text/plain"
                                  -    //"text/plain": 1,
                                  -    "text/javascript": 1,
                                  -    "text/x-javascript": 1,
                                  -    "text/json": 1,
                                  -    "text/x-json": 1,
                                  -    "application/json": 1,
                                  -    "application/x-json": 1,
                                  -    "application/javascript": 1,
                                  -    "application/x-javascript": 1,
                                  -    "application/json-rpc": 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -Firebug.JSONViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "jsonViewer",
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -
                                  -        // Used by Firebug.DOMPanel.DirTable domplate.
                                  -        this.toggles = {};
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_JSONVIEWER)
                                  -            FBTrace.sysout("jsonviewer.initTabBody", infoBox);
                                  -
                                  -        // Let listeners to parse the JSON.
                                  -        dispatch(this.fbListeners, "onParseJSON", [file]);
                                  -
                                  -        // The JSON is still no there, try to parse most common cases.
                                  -        if (!file.jsonObject)
                                  -        {
                                  -            ///if (this.isJSON(safeGetContentType(file.request), file.responseText))
                                  -            if (this.isJSON(file.mimeType, file.responseText))
                                  -                file.jsonObject = this.parseJSON(file);
                                  -        }
                                  -
                                  -        // The jsonObject is created so, the JSON tab can be displayed.
                                  -        if (file.jsonObject && hasProperties(file.jsonObject))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
                                  -                ///$STR("jsonviewer.tab.JSON"));
                                  -                $STR("JSON"));
                                  -
                                  -            if (FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
                                  -                    (typeof(file.jsonObject) != "undefined"), file.jsonObject);
                                  -        }
                                  -    },
                                  -
                                  -    isJSON: function(contentType, data)
                                  -    {
                                  -        // Workaround for JSON responses without proper content type
                                  -        // Let's consider all responses starting with "{" as JSON. In the worst
                                  -        // case there will be an exception when parsing. This means that no-JSON
                                  -        // responses (and post data) (with "{") can be parsed unnecessarily,
                                  -        // which represents a little overhead, but this happens only if the request
                                  -        // is actually expanded by the user in the UI (Net & Console panels).
                                  -        
                                  -        ///var responseText = data ? trimLeft(data) : null;
                                  -        ///if (responseText && responseText.indexOf("{") == 0)
                                  -        ///    return true;
                                  -        var responseText = data ? trim(data) : null;
                                  -        if (responseText && responseText.indexOf("{") == 0)
                                  -            return true;
                                  -
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        contentType = contentType.split(";")[0];
                                  -        contentType = trim(contentType);
                                  -        return contentTypes[contentType];
                                  -    },
                                  -
                                  -    // Update listener for TabView
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
                                  -        var tabBody = $$(".netInfoJSONText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        if (file.jsonObject) {
                                  -            Firebug.DOMPanel.DirTable.tag.replace(
                                  -                 {object: file.jsonObject, toggles: this.toggles}, tabBody);
                                  -        }
                                  -    },
                                  -
                                  -    parseJSON: function(file)
                                  -    {
                                  -        var jsonString = new String(file.responseText);
                                  -        ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
                                  -        return parseJSONString(jsonString);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.JSONViewerModel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -// List of XML related content types.
                                  -var xmlContentTypes =
                                  -[
                                  -    "text/xml",
                                  -    "application/xml",
                                  -    "application/xhtml+xml",
                                  -    "application/rss+xml",
                                  -    "application/atom+xml",,
                                  -    "application/vnd.mozilla.maybe.feed",
                                  -    "application/rdf+xml",
                                  -    "application/vnd.mozilla.xul+xml"
                                  -];
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -/**
                                  - * @module Implements viewer for XML based network responses. In order to create a new
                                  - * tab wihin network request detail, a listener is registered into
                                  - * <code>Firebug.NetMonitor.NetInfoBody</code> object.
                                  - */
                                  -Firebug.XMLViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "xmlViewer",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.shutdown.apply(this, arguments);
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    /**
                                  -     * Check response's content-type and if it's a XML, create a new tab with XML preview.
                                  -     */
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.initTabBody", infoBox);
                                  -
                                  -        // If the response is XML let's display a pretty preview.
                                  -        ///if (this.isXML(safeGetContentType(file.request)))
                                  -        if (this.isXML(file.mimeType, file.responseText))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
                                  -                ///$STR("xmlviewer.tab.XML"));
                                  -                $STR("XML"));
                                  -
                                  -            if (FBTrace.DBG_XMLVIEWER)
                                  -                FBTrace.sysout("xmlviewer.initTabBody; XML response available");
                                  -        }
                                  -    },
                                  -
                                  -    isXML: function(contentType)
                                  -    {
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        // Look if the response is XML based.
                                  -        for (var i=0; i<xmlContentTypes.length; i++)
                                  -        {
                                  -            if (contentType.indexOf(xmlContentTypes[i]) == 0)
                                  -                return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Parse XML response and render pretty printed preview.
                                  -     */
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
                                  -        var tabBody = $$(".netInfoXMLText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoXMLTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        this.insertXML(tabBody, Firebug.NetMonitor.Utils.getResponseText(file, context));
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, text)
                                  -    {
                                  -        var xmlText = text.replace(/^\s*<?.+?>\s*/, "");
                                  -        
                                  -        var div = parentNode.ownerDocument.createElement("div");
                                  -        div.innerHTML = xmlText;
                                  -        
                                  -        var root = div.getElementsByTagName("*")[0];
                                  -    
                                  -        /***
                                  -        var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
                                  -        var doc = parser.parseFromString(text, "text/xml");
                                  -        var root = doc.documentElement;
                                  -
                                  -        // Error handling
                                  -        var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
                                  -        if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
                                  -        {
                                  -            this.ParseError.tag.replace({error: {
                                  -                message: root.firstChild.nodeValue,
                                  -                source: root.lastChild.textContent
                                  -            }}, parentNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
                                  -
                                  -        // Override getHidden in these templates. The parsed XML documen is
                                  -        // hidden, but we want to display it using 'visible' styling.
                                  -        /*
                                  -        var templates = [
                                  -            Firebug.HTMLPanel.CompleteElement,
                                  -            Firebug.HTMLPanel.Element,
                                  -            Firebug.HTMLPanel.TextElement,
                                  -            Firebug.HTMLPanel.EmptyElement,
                                  -            Firebug.HTMLPanel.XEmptyElement,
                                  -        ];
                                  -
                                  -        var originals = [];
                                  -        for (var i=0; i<templates.length; i++)
                                  -        {
                                  -            originals[i] = templates[i].getHidden;
                                  -            templates[i].getHidden = function() {
                                  -                return "";
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        // Generate XML preview.
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: root}, parentNode);
                                  -        var html = [];
                                  -        Firebug.Reps.appendNode(root, html);
                                  -        parentNode.innerHTML = html.join("");
                                  -        
                                  -
                                  -        /*
                                  -        for (var i=0; i<originals.length; i++)
                                  -            templates[i].getHidden = originals[i];/**/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Domplate
                                  -
                                  -/**
                                  - * @domplate Represents a template for displaying XML parser errors. Used by
                                  - * <code>Firebug.XMLViewerModel</code>.
                                  - */
                                  -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "xmlInfoError"},
                                  -            DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
                                  -            PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
                                  -        ),
                                  -
                                  -    getSource: function(error)
                                  -    {
                                  -        var parts = error.source.split("\n");
                                  -        if (parts.length != 2)
                                  -            return error.source;
                                  -
                                  -        var limit = 50;
                                  -        var column = parts[1].length;
                                  -        if (column >= limit) {
                                  -            parts[0] = "..." + parts[0].substr(column - limit);
                                  -            parts[1] = "..." + parts[1].substr(column - limit);
                                  -        }
                                  -
                                  -        if (parts[0].length > 80)
                                  -            parts[0] = parts[0].substr(0, 80) + "...";
                                  -
                                  -        return parts.join("\n");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.XMLViewerModel);
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -/*
                                  -
                                  -// new offline message handler
                                  -o = {x:1,y:2};
                                  -
                                  -r = Firebug.getRep(o);
                                  -
                                  -r.tag.tag.compile();
                                  -
                                  -outputs = [];
                                  -html = r.tag.renderHTML({object:o}, outputs);
                                  -
                                  -
                                  -// finish rendering the template (the DOM part)
                                  -target = $("build");
                                  -target.innerHTML = html;
                                  -root = target.firstChild;
                                  -
                                  -domArgs = [root, r.tag.context, 0];
                                  -domArgs.push.apply(domArgs, r.tag.domArgs);
                                  -domArgs.push.apply(domArgs, outputs);
                                  -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs);
                                  -
                                  -
                                  - */
                                  -var consoleQueue = [];
                                  -var lastHighlightedObject;
                                  -var FirebugContext = Env.browser;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -            else
                                  -            {
                                  -                consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            //context = FirebugContext;
                                  -            context = Firebug.context;
                                  -
                                  -        /*
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -        /**/
                                  -        
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -        {
                                  -            panel.clear();
                                  -        }
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -    
                                  -    flush: function()
                                  -    {
                                  -        dispatch(this.fbListeners,"flush",[]);
                                  -        
                                  -        for (var i=0, length=consoleQueue.length; i<length; i++)
                                  -        {
                                  -            var args = consoleQueue[i];
                                  -            this.logRow.apply(this, args);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {}; // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // TODO: xxxpedro console2
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        if (!Firebug.Inspector) return;
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -    
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        var repObject = object ? object.repObject : null;
                                  -        
                                  -        if (!repObject)
                                  -        {
                                  -            return;
                                  -        }
                                  -        
                                  -        if (hasClass(object, "objectLink-object"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(repObject, true);
                                  -        }
                                  -        else if (hasClass(object, "objectLink-element"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -            Firebug.chrome.getPanel("HTML").select(repObject, true);
                                  -        }
                                  -        
                                  -        /*
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        /**/
                                  -        
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    //searchable: true,
                                  -    //breakable: true,
                                  -    //editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: false
                                  -    },
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.getPanelDocument(Firebug.ConsolePanel);
                                  -        this.onMouseMove = bind(this.onMouseMove, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            caption: "Clear",
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //Firebug.Console.injector.install(Firebug.browser.window);
                                  -        
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseMove);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        //consolex.trace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        //removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -    
                                  -var frameCounters = {};
                                  -var traceRecursion = 0;
                                  -
                                  -Firebug.Console.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupCollapsed",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments);};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -                c.firebuglite = Firebug.version;
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox;
                                  -        
                                  -        if (win.console)
                                  -        {
                                  -            if (Env.Options.overrideConsole)
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            else
                                  -                // if there's a console object and overrideConsole is false we should just quit
                                  -                return;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                // try overriding the console object
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                // if something goes wrong create the firebug object instead
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            }
                                  -        }
                                  -        
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebuglite = Firebug.version;    
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        //TODO: xxxpedro console error
                                  -        //if (arguments.length == 1)
                                  -        //{
                                  -        //    logAssert("error", arguments);  // add more info based on stack trace
                                  -        //}
                                  -        //else
                                  -        //{
                                  -            //Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        //}
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        // TODO: xxxpedro console2: is there a better way to find a unique ID for the coun() call?
                                  -        var frameId = "0";
                                  -        //var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!frameCounters)
                                  -                frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -            {
                                  -                return f.getName();
                                  -            }
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -            {
                                  -                return f.name;
                                  -            }
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        traceRecursion++;
                                  -        
                                  -        if (traceRecursion > 1)
                                  -        {
                                  -            traceRecursion--;
                                  -            return;
                                  -        }
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        
                                  -        try
                                  -        {
                                  -            (0)();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var result = e;
                                  -            
                                  -            var stack = 
                                  -                result.stack || // Firefox / Google Chrome 
                                  -                result.stacktrace || // Opera
                                  -                "";
                                  -            
                                  -            stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -            var items = stack.split(/[\n\r]/);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Google Chrome
                                  -            if (FBL.isSafari)
                                  -            {
                                  -                //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -                //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                
                                  -                var reChromeStackItemName = /\s*\($/;
                                  -                var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=4, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos];
                                  -                    var item = items[i];
                                  -                    var match = item.match(reChromeStackItem);
                                  -                    
                                  -                    //Firebug.Console.log("["+ framePos +"]--------------------------");
                                  -                    //Firebug.Console.log(item);
                                  -                    //Firebug.Console.log("................");
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        if (name)
                                  -                        {
                                  -                            name = name.replace(reChromeStackItemName, "");
                                  -                            frame.name = name; 
                                  -                        }
                                  -                        
                                  -                        //Firebug.Console.log("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reChromeStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("url: "+value[1]);
                                  -                            //Firebug.Console.log("line: "+value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            else if (FBL.isFirefox)
                                  -            {
                                  -                // Firefox
                                  -                var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -                var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=2, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos] || {};
                                  -                    var item = items[i];
                                  -                    var match = item.match(reFirefoxStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        
                                  -                        //Firebug.Console.logFormatted("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reFirefoxStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("href: "+ value[1]);
                                  -                            //Firebug.Console.log("line: " + value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.logFormatted([match[2]]);
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            /*
                                  -            else if (FBL.isOpera)
                                  -            {
                                  -                // Opera
                                  -                var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -                var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -                
                                  -                for (var i=0, length=items.length; i<length; i+=2)
                                  -                {
                                  -                    var item = items[i];
                                  -                    
                                  -                    var match = item.match(reOperaStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        //Firebug.Console.log(match[1]);
                                  -                        
                                  -                        var value = match[2].match(reOperaStackItemValue);
                                  -                        
                                  -                        if (value)
                                  -                        {
                                  -                            //Firebug.Console.log(value[1]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                        //Firebug.Console.log("--------------------------");
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -        }
                                  -        
                                  -        //console.log(stack);
                                  -        //console.dir(frames);
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -        
                                  -        traceRecursion--;
                                  -    };
                                  -    
                                  -    this.trace_ok = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return;
                                  -        //return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    var win = Env.browser.window;
                                  -    Firebug.Console.injector.install(win);
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    Firebug.context.persistedState.commandHistory.push(command);
                                  -    Firebug.context.persistedState.commandPointer = 
                                  -        Firebug.context.persistedState.commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        defineCommandLineAPI();
                                  -        
                                  -         Firebug.context.persistedState.commandHistory =  
                                  -             Firebug.context.persistedState.commandHistory || [];
                                  -
                                  -         Firebug.context.persistedState.commandPointer =  
                                  -             Firebug.context.persistedState.commandPointer || -1;
                                  -        
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null;
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API";
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        Firebug.Console.log(commandPrefix + " " + stripNewLines(command), 
                                  -                Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        Firebug.Console.log(result);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.commandPointer > 0 && 
                                  -            Firebug.context.persistedState.commandHistory.length > 0)
                                  -        {
                                  -            this.element.value = Firebug.context.persistedState.commandHistory
                                  -                                    [--Firebug.context.persistedState.commandPointer];
                                  -        }
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = Firebug.context.persistedState.commandHistory.length -1;
                                  -        var i = Firebug.context.persistedState.commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = Firebug.context.persistedState.commandHistory
                                  -                              [++Firebug.context.persistedState.commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++Firebug.context.persistedState.commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        href = href || "";
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        var html = [
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          ];
                                  -        
                                  -        // TODO: xxxpedro ajust to Console2
                                  -        //Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id);
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: function(o)
                                  -    {
                                  -        Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable);
                                  -    },
                                  -
                                  -    dirxml: function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var defineCommandLineAPI = function defineCommandLineAPI()
                                  -{
                                  -    Firebug.CommandLine.API = {};
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -    
                                  -    var stack = FirebugChrome.htmlSelectionStack;
                                  -    if (stack)
                                  -    {
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var cacheID = Firebug.Lite.Cache.ID;
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    // ignores also the cache property injected by firebug
                                  -    ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = ElementCache(node);
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                // FIXME xxxpedro remove this
                                  -                //var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || 
                                  -                        // Issue 4432:  Firebug Lite: HTML is mixed-up with functions
                                  -                        // The problem here is that expando properties added to DOM elements in 
                                  -                        // IE < 9 will behave like DOM attributes and so they'll show up when
                                  -                        // looking at element.attributes list. 
                                  -                        isIE && (browserVersion-0<9) && typeof attr.nodeValue != "string" ||
                                  -                        Firebug.ignoreFirebugElements && ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;');
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="sourceCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.getPanelDocument(HTMLPanel);
                                  -        var uid = treeNode.id;
                                  -        var parentNode = ElementCache.get(uid);
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>';
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && ElementCache(el);
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = ElementCache.get(id).parentNode;
                                  -
                                  -            if (node)
                                  -                id = ElementCache(node);
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -            
                                  -            if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        // FIXME: xxxpedro chromenew - this isn't working after detaching the UI
                                  -        if (fbPanel1)
                                  -            fbPanel1.parentNode.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -        
                                  -        // FIXME: IE6 - create chrome.getPanelScrollElement()?
                                  -        // fbPanel1.ownerDocument.documentElement.scrollTop = Math.round(node.offsetTop - fbPanel1.ownerDocument.documentElement.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        this.panelNode.style.minWidth = "500px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(this.sidePanelBar && !this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("css");
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null;
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        this.panelNode.innerHTML = html.join("");
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = Firebug.chrome.getPanelContainer();
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.context.persistedState.selectedHTMLElementId =
                                  -                Firebug.context.persistedState.selectedHTMLElementId &&
                                  -                ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId) ?
                                  -                Firebug.context.persistedState.selectedHTMLElementId :
                                  -                ElementCache(Firebug.browser.document.body);
                                  -            
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        /// FIXME xxxpedro chromenew
                                  -        ///addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        // FIXME xxxpedro chromenew
                                  -        ///removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(Firebug.context.persistedState.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -    },
                                  -    
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var id = ElementCache(object);
                                  -        
                                  -        if (id)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(id);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":";}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null;
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        Firebug.context.persistedState.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = ElementCache.get(e.id);
                                  -        var sidePanelBar = Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -        var selectedSidePanel = sidePanelBar ? sidePanelBar.selectedPanel : null;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            if (selectedSidePanel)
                                  -                selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0);
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = ElementCache.get(uid.value);
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = ElementCache(object);
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = ElementCache(node);
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;');
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            var value = trim(node.nodeValue);
                                  -            if (value)
                                  -                html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -
                                  -Hack:
                                  -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; 
                                  -Firebug.showInfoTips = true; 
                                  -Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -
                                  -/**/
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var maxWidth = 100, maxHeight = 80;
                                  -var infoTipMargin = 10;
                                  -var infoTipWindowPadding = 25;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.InfoTip = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "infoTip",
                                  -    tags: domplate(
                                  -    {
                                  -        infoTipTag: DIV({"class": "infoTip"}),
                                  -
                                  -        colorTag:
                                  -            DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, "&nbsp;"),
                                  -
                                  -        imgTag:
                                  -            DIV({"class": "infoTipImageBox infoTipLoading"},
                                  -                IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
                                  -                    onload: "$onLoadImage"}),
                                  -                IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}),
                                  -                DIV({"class": "infoTipCaption"})
                                  -            ),
                                  -
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget || event.srcElement;
                                  -            ///var bgImg = img.nextSibling;
                                  -            ///if (!bgImg)
                                  -            ///    return; // Sometimes gets called after element is dead
                                  -
                                  -            ///var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -            
                                  -            /// TODO: xxxpedro infoTip hack
                                  -            var caption = getElementByClass(innerBox, "infoTipCaption");
                                  -            var bgImg = getElementByClass(innerBox, "infoTipBgImage");
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -            
                                  -            // TODO: xxxpedro infoTip IE and timing issue
                                  -            // TODO: use offline document to avoid flickering
                                  -            if (isIE)
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            
                                  -            var updateInfoTip = function(){
                                  -            
                                  -            var w = img.naturalWidth || img.width || 10, 
                                  -                h = img.naturalHeight || img.height || 10;
                                  -            
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -            caption.innerHTML = $STRF(w + " x " + h);
                                  -            
                                  -            
                                  -            };
                                  -            
                                  -            if (isIE) 
                                  -                setTimeout(updateInfoTip, 0);
                                  -            else
                                  -            {
                                  -                updateInfoTip();
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            }
                                  -
                                  -            ///
                                  -        }
                                  -        
                                  -        /*
                                  -        /// onLoadImage original
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget;
                                  -            var bgImg = img.nextSibling;
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -
                                  -            var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -
                                  -            var w = img.naturalWidth, h = img.naturalHeight;
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -
                                  -            removeClass(innerBox, "infoTipLoading");
                                  -        }
                                  -        /**/
                                  -        
                                  -    }),
                                  -
                                  -    initializeBrowser: function(browser)
                                  -    {
                                  -        browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser);
                                  -        browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser);
                                  -
                                  -        ///var doc = browser.contentDocument;
                                  -        var doc = browser.document;
                                  -        if (!doc)
                                  -            return;
                                  -
                                  -        ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -        ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -        ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -        addEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -        addEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -        addEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -        
                                  -        return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc));
                                  -    },
                                  -
                                  -    uninitializeBrowser: function(browser)
                                  -    {
                                  -        if (browser.infoTip)
                                  -        {
                                  -            ///var doc = browser.contentDocument;
                                  -            var doc = browser.document;
                                  -            ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -            ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -            ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -            removeEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -            removeEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -            removeEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -
                                  -            browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -            delete browser.infoTip;
                                  -            delete browser.onInfoTipMouseMove;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        if (!Firebug.showInfoTips)
                                  -            return;
                                  -
                                  -        var scrollParent = getOverflowParent(target);
                                  -        var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
                                  -
                                  -        if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset))
                                  -        {
                                  -            var htmlElt = infoTip.ownerDocument.documentElement;
                                  -            var panelWidth = htmlElt.clientWidth;
                                  -            var panelHeight = htmlElt.clientHeight;
                                  -
                                  -            if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
                                  -            {
                                  -                infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.left = (x+infoTipMargin) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -
                                  -            if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
                                  -            {
                                  -                infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.top = (y+infoTipMargin) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_INFOTIP)
                                  -                FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
                                  -                    ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
                                  -                    ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
                                  -                    ", offsetWidth: " + infoTip.offsetWidth +
                                  -                    ", x: " + x + ", panelWidth: " + panelWidth +
                                  -                    ", y: " + y + ", panelHeight: " + panelHeight);
                                  -
                                  -            infoTip.setAttribute("active", "true");
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(infoTip);
                                  -    },
                                  -
                                  -    hideInfoTip: function(infoTip)
                                  -    {
                                  -        if (infoTip)
                                  -            infoTip.removeAttribute("active");
                                  -    },
                                  -
                                  -    onMouseOut: function(event, browser)
                                  -    {
                                  -        if (!event.relatedTarget)
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    onMouseMove: function(event, browser)
                                  -    {
                                  -        // Ignore if the mouse is moving over the existing info tip.
                                  -        if (getAncestorByClass(event.target, "infoTip"))
                                  -            return;
                                  -
                                  -        if (browser.currentPanel)
                                  -        {
                                  -            var x = event.clientX, y = event.clientY, target = event.target || event.srcElement;
                                  -            this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset);
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    populateColorInfoTip: function(infoTip, color)
                                  -    {
                                  -        this.tags.colorTag.replace({rgbValue: color}, infoTip);
                                  -        return true;
                                  -    },
                                  -
                                  -    populateImageInfoTip: function(infoTip, url, repeat)
                                  -    {
                                  -        if (!repeat)
                                  -            repeat = "no-repeat";
                                  -
                                  -        this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    disable: function()
                                  -    {
                                  -        // XXXjoe For each browser, call uninitializeBrowser
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel)
                                  -        {
                                  -            var infoTip = panel.panelBrowser.infoTip;
                                  -            if (!infoTip)
                                  -                infoTip = this.initializeBrowser(panel.panelBrowser);
                                  -            this.hideInfoTip(infoTip);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -        this.showPanel(browser, panel);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.InfoTip);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var CssParser = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Simple CSS stylesheet parser from:
                                  -// https://github.com/sergeche/webkit-css
                                  -
                                  -/**
                                  - * Simple CSS stylesheet parser that remembers rule's lines in file
                                  - * @author Sergey Chikuyonok (serge.che@gmail.com)
                                  - * @link http://chikuyonok.ru
                                  - */
                                  -CssParser = (function(){
                                  -    /**
                                  -     * Returns rule object
                                  -     * @param {Number} start Character index where CSS rule definition starts
                                  -     * @param {Number} body_start Character index where CSS rule's body starts
                                  -     * @param {Number} end Character index where CSS rule definition ends
                                  -     */
                                  -    function rule(start, body_start, end) {
                                  -        return {
                                  -            start: start || 0,
                                  -            body_start: body_start || 0,
                                  -            end: end || 0,
                                  -            line: -1,
                                  -            selector: null,
                                  -            parent: null,
                                  -            
                                  -            /** @type {rule[]} */
                                  -            children: [],
                                  -            
                                  -            addChild: function(start, body_start, end) {
                                  -                var r = rule(start, body_start, end);
                                  -                r.parent = this;
                                  -                this.children.push(r);
                                  -                return r;
                                  -            },
                                  -            /**
                                  -             * Returns last child element
                                  -             * @return {rule}
                                  -             */
                                  -            lastChild: function() {
                                  -                return this.children[this.children.length - 1];
                                  -            }
                                  -        };
                                  -    }
                                  -    
                                  -    /**
                                  -     * Replaces all occurances of substring defined by regexp
                                  -     * @param {String} str
                                  -     * @return {RegExp} re
                                  -     * @return {String}
                                  -     */
                                  -    function removeAll(str, re) {
                                  -        var m;
                                  -        while (m = str.match(re)) {
                                  -            str = str.substring(m[0].length);
                                  -        }
                                  -        
                                  -        return str;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Trims whitespace from the beginning and the end of string
                                  -     * @param {String} str
                                  -     * @return {String}
                                  -     */
                                  -    function trim(str) {
                                  -        return str.replace(/^\s+|\s+$/g, '');
                                  -    }
                                  -    
                                  -    /**
                                  -     * Normalizes CSS rules selector
                                  -     * @param {String} selector
                                  -     */
                                  -    function normalizeSelector(selector) {
                                  -        // remove newlines
                                  -        selector = selector.replace(/[\n\r]/g, ' ');
                                  -        
                                  -        selector = trim(selector);
                                  -        
                                  -        // remove spaces after commas
                                  -        selector = selector.replace(/\s*,\s*/g, ',');
                                  -        
                                  -        return selector;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Preprocesses parsed rules: adjusts char indexes, skipping whitespace and
                                  -     * newlines, saves rule selector, removes comments, etc.
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node CSS rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function preprocessRules(text, rule_node) {
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i],
                                  -                rule_start = text.substring(r.start, r.body_start),
                                  -                cur_len = rule_start.length;
                                  -            
                                  -            // remove newlines for better regexp matching
                                  -            rule_start = rule_start.replace(/[\n\r]/g, ' ');
                                  -            
                                  -            // remove @import rules
                                  -//            rule_start = removeAll(rule_start, /^\s*@import\s*url\((['"])?.+?\1?\)\;?/g);
                                  -            
                                  -            // remove comments
                                  -            rule_start = removeAll(rule_start, /^\s*\/\*.*?\*\/[\s\t]*/);
                                  -            
                                  -            // remove whitespace
                                  -            rule_start = rule_start.replace(/^[\s\t]+/, '');
                                  -            
                                  -            r.start += (cur_len - rule_start.length);
                                  -            r.selector = normalizeSelector(rule_start);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves all lise starting indexes for faster search
                                  -     * @param {String} text CSS stylesheet
                                  -     * @return {Number[]}
                                  -     */
                                  -    function saveLineIndexes(text) {
                                  -        var result = [0],
                                  -            i = 0,
                                  -            il = text.length,
                                  -            ch, ch2;
                                  -            
                                  -        while (i < il) {
                                  -            ch = text.charAt(i);
                                  -            
                                  -            if (ch == '\n' || ch == '\r') {
                                  -                if (ch == '\r' && i < il - 1 && text.charAt(i + 1) == '\n') {
                                  -                    // windows line ending: CRLF. Skip next character 
                                  -                    i++;
                                  -                }
                                  -                
                                  -                result.push(i + 1);
                                  -            }
                                  -            
                                  -            i++;
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves line number for parsed rules
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node Rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function saveLineNumbers(text, rule_node, line_indexes, startLine) {
                                  -        preprocessRules(text, rule_node);
                                  -        
                                  -        startLine = startLine || 0;
                                  -        
                                  -        // remember lines start indexes, preserving line ending characters
                                  -        if (!line_indexes)
                                  -            var line_indexes = saveLineIndexes(text);
                                  -
                                  -        // now find each rule's line
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i];
                                  -            r.line = line_indexes.length + startLine;
                                  -            for (var j = 0, jl = line_indexes.length - 1; j < jl; j++) {
                                  -                var line_ix = line_indexes[j];
                                  -                if (r.start >=  line_indexes[j] && r.start <  line_indexes[j + 1]) {
                                  -                    r.line = j + 1 + startLine;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            
                                  -            saveLineNumbers(text, r, line_indexes);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    return {
                                  -        /**
                                  -         * Parses text as CSS stylesheet, remembring each rule position inside 
                                  -         * text
                                  -         * @param {String} text CSS stylesheet to parse
                                  -         */
                                  -        read: function(text, startLine) {
                                  -            var rule_start = [],
                                  -                rule_body_start = [],
                                  -                rules = [],
                                  -                in_comment = 0,
                                  -                root = rule(),
                                  -                cur_parent = root,
                                  -                last_rule = null,
                                  -                stack = [],
                                  -                ch, ch2;
                                  -                
                                  -            stack.last = function() {
                                  -                return this[this.length - 1];
                                  -            };
                                  -            
                                  -            function hasStr(pos, substr) {
                                  -                return text.substr(pos, substr.length) == substr;
                                  -            }
                                  -                
                                  -            for (var i = 0, il = text.length; i < il; i++) {
                                  -                ch = text.charAt(i);
                                  -                ch2 = i < il - 1 ? text.charAt(i + 1) : '';
                                  -                
                                  -                if (!rule_start.length)
                                  -                    rule_start.push(i);
                                  -                    
                                  -                switch (ch) {
                                  -                    case '@':
                                  -                        if (!in_comment) {
                                  -                            if (hasStr(i, '@import')) {
                                  -                                var m = text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -                                if (m) {
                                  -                                    cur_parent.addChild(i, i + 7, i + m[0].length);
                                  -                                    i += m[0].length;
                                  -                                    rule_start.pop();
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                        }
                                  -                    case '/':
                                  -                        // xxxpedro allowing comment inside comment
                                  -                        if (!in_comment && ch2 == '*') { // comment start
                                  -                            in_comment++;
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '*':
                                  -                        if (ch2 == '/') { // comment end
                                  -                            in_comment--;
                                  -                        }
                                  -                        break;
                                  -                    
                                  -                    case '{':
                                  -                        if (!in_comment) {
                                  -                            rule_body_start.push(i);
                                  -                            
                                  -                            cur_parent = cur_parent.addChild(rule_start.pop());
                                  -                            stack.push(cur_parent);
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '}':
                                  -                        // found the end of the rule
                                  -                        if (!in_comment) {
                                  -                            /** @type {rule} */
                                  -                            var last_rule = stack.pop();
                                  -                            rule_start.pop();
                                  -                            last_rule.body_start = rule_body_start.pop();
                                  -                            last_rule.end = i;
                                  -                            cur_parent = last_rule.parent || root;
                                  -                        }
                                  -                        break;
                                  -                }
                                  -                
                                  -            }
                                  -            
                                  -            return saveLineNumbers(text, root, null, startLine);
                                  -        },
                                  -        
                                  -        normalizeSelector: normalizeSelector,
                                  -        
                                  -        /**
                                  -         * Find matched rule by selector.
                                  -         * @param {rule} rule_node Parsed rule node
                                  -         * @param {String} selector CSS selector
                                  -         * @param {String} source CSS stylesheet source code
                                  -         * 
                                  -         * @return {rule[]|null} Array of matched rules, sorted by priority (most 
                                  -         * recent on top)
                                  -         */
                                  -        findBySelector: function(rule_node, selector, source) {
                                  -            var selector = normalizeSelector(selector),
                                  -                result = [];
                                  -                
                                  -            if (rule_node) {
                                  -                for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -                    /** @type {rule} */
                                  -                    var r = rule_node.children[i];
                                  -                    if (r.selector == selector) {
                                  -                        result.push(r);
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            if (result.length) {
                                  -                return result;
                                  -            } else {
                                  -                return null;
                                  -            }
                                  -        }
                                  -    };
                                  -})();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.CssParser = CssParser;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet Parser
                                  -
                                  -var CssAnalyzer = {};
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var CSSRuleMap = {};
                                  -var ElementCSSRulesMap = {};
                                  -
                                  -var internalStyleSheetIndex = -1;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -var reSelectorClass = /\.[\w\d_-]+/g;
                                  -var reSelectorId = /#[\w\d_-]+/g;
                                  -
                                  -var globalCSSRuleIndex;
                                  -
                                  -var processAllStyleSheetsTimeout = null;
                                  -
                                  -var externalStyleSheetURLs = [];
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -//************************************************************************************************
                                  -// CSS Analyzer templates
                                  -
                                  -CssAnalyzer.externalStyleSheetWarning = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'},
                                  -            SPAN("$object|STR"),
                                  -            A({"href": "$href", target:"_blank"}, "$link|STR")
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Analyzer methods
                                  -
                                  -CssAnalyzer.processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    try
                                  -    {
                                  -        processAllStyleSheets(doc, styleSheetIterator);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * 
                                  - * @param element
                                  - * @returns {String[]} Array of IDs of CSS Rules
                                  - */
                                  -CssAnalyzer.getElementCSSRules = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        return getElementCSSRules(element);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -CssAnalyzer.getRuleData = function(ruleId)
                                  -{
                                  -    return CSSRuleMap[ruleId];
                                  -};
                                  -
                                  -// TODO: do we need this?
                                  -CssAnalyzer.getRuleLine = function()
                                  -{
                                  -};
                                  -
                                  -CssAnalyzer.hasExternalStyleSheet = function()
                                  -{
                                  -    return externalStyleSheetURLs.length > 0;
                                  -};
                                  -
                                  -CssAnalyzer.parseStyleSheet = function(href)
                                  -{
                                  -    var sourceData = extractSourceData(href);
                                  -    var parsedObj = CssParser.read(sourceData.source, sourceData.startLine);
                                  -    var parsedRules = parsedObj.children;
                                  -    
                                  -    // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -    //
                                  -    // Ignore all special selectors like @media and @page
                                  -    for(var i=0; i < parsedRules.length; )
                                  -    {
                                  -        if (parsedRules[i].selector.indexOf("@") != -1)
                                  -        {
                                  -            parsedRules.splice(i, 1);
                                  -        }
                                  -        else
                                  -            i++;
                                  -    }
                                  -    
                                  -    return parsedRules;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Internals
                                  -//************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet processing
                                  -
                                  -var processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    styleSheetIterator = styleSheetIterator || processStyleSheet;
                                  -    
                                  -    globalCSSRuleIndex = -1;
                                  -    
                                  -    var styleSheets = doc.styleSheets;
                                  -    var importedStyleSheets = [];
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -        var start = new Date().getTime();
                                  -    
                                  -    for(var i=0, length=styleSheets.length; i<length; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            
                                  -            if ("firebugIgnore" in styleSheet) continue;
                                  -            
                                  -            // we must read the length to make sure we have permission to read 
                                  -            // the stylesheet's content. If an error occurs here, we cannot 
                                  -            // read the stylesheet due to access restriction policy
                                  -            var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -            rules.length;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            externalStyleSheetURLs.push(styleSheet.href);
                                  -            styleSheet.restricted = true;
                                  -            var ssid = StyleSheetCache(styleSheet);
                                  -            
                                  -            /// TODO: xxxpedro external css
                                  -            //loadExternalStylesheet(doc, styleSheetIterator, styleSheet);
                                  -        }
                                  -        
                                  -        // process internal and external styleSheets
                                  -        styleSheetIterator(doc, styleSheet);
                                  -        
                                  -        var importedStyleSheet, importedRules;
                                  -        
                                  -        // process imported styleSheets in IE
                                  -        if (isIE)
                                  -        {
                                  -            var imports = styleSheet.imports;
                                  -            
                                  -            for(var j=0, importsLength=imports.length; j<importsLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    importedStyleSheet = imports[j];
                                  -                    // we must read the length to make sure we have permission
                                  -                    // to read the imported stylesheet's content. 
                                  -                    importedRules = importedStyleSheet.rules;
                                  -                    importedRules.length;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -                
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -        // process imported styleSheets in other browsers
                                  -        else if (rules)
                                  -        {
                                  -            for(var j=0, rulesLength=rules.length; j<rulesLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    var rule = rules[j];
                                  -                    
                                  -                    importedStyleSheet = rule.styleSheet;
                                  -                    
                                  -                    if (importedStyleSheet)
                                  -                    {
                                  -                        // we must read the length to make sure we have permission
                                  -                        // to read the imported stylesheet's content. 
                                  -                        importedRules = importedStyleSheet.cssRules;
                                  -                        importedRules.length;
                                  -                    }
                                  -                    else
                                  -                        break;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -    {
                                  -        FBTrace.sysout("FBL.processAllStyleSheets", "all stylesheet rules processed in " + (new Date().getTime() - start) + "ms");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var processStyleSheet = function(doc, styleSheet)
                                  -{
                                  -    if (styleSheet.restricted)
                                  -        return;
                                  -    
                                  -    var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -    
                                  -    var ssid = StyleSheetCache(styleSheet);
                                  -    
                                  -    var href = styleSheet.href;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // CSS Parser
                                  -    var shouldParseCSS = typeof CssParser != "undefined" && !Firebug.disableResourceFetching;
                                  -    if (shouldParseCSS)
                                  -    {
                                  -        try
                                  -        {
                                  -            var parsedRules = CssAnalyzer.parseStyleSheet(href); 
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("processStyleSheet FAILS", e.message || e);
                                  -            shouldParseCSS = false;
                                  -        }
                                  -        finally
                                  -        {
                                  -            var parsedRulesIndex = 0;
                                  -            
                                  -            var dontSupportGroupedRules = isIE && browserVersion < 9;
                                  -            var group = [];
                                  -            var groupItem;
                                  -        }
                                  -    }
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    for (var i=0, length=rules.length; i<length; i++)
                                  -    {
                                  -        // TODO: xxxpedro is there a better way to cache CSS Rules? The problem is that
                                  -        // we cannot add expando properties in the rule object in IE
                                  -        var rid = ssid + ":" + i;
                                  -        var rule = rules[i];
                                  -        var selector = rule.selectorText || "";
                                  -        var lineNo = null;
                                  -        
                                  -        // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -        //
                                  -        // Ignore all special selectors like @media and @page
                                  -        if (!selector || selector.indexOf("@") != -1)
                                  -            continue;
                                  -        
                                  -        if (isIE)
                                  -            selector = selector.replace(reSelectorTag, function(s){return s.toLowerCase();});
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // CSS Parser
                                  -        if (shouldParseCSS)
                                  -        {
                                  -            var parsedRule = parsedRules[parsedRulesIndex];
                                  -            var parsedSelector = parsedRule.selector;
                                  -
                                  -            if (dontSupportGroupedRules && parsedSelector.indexOf(",") != -1 && group.length == 0)
                                  -                group = parsedSelector.split(",");
                                  -            
                                  -            if (dontSupportGroupedRules && group.length > 0)
                                  -            {
                                  -                groupItem = group.shift();
                                  -                
                                  -                if (CssParser.normalizeSelector(selector) == groupItem)
                                  -                    lineNo = parsedRule.line;
                                  -                
                                  -                if (group.length == 0)
                                  -                    parsedRulesIndex++;
                                  -            }
                                  -            else if (CssParser.normalizeSelector(selector) == parsedRule.selector)
                                  -            {
                                  -                lineNo = parsedRule.line;
                                  -                parsedRulesIndex++;
                                  -            }
                                  -        }
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        CSSRuleMap[rid] =
                                  -        {
                                  -            styleSheetId: ssid,
                                  -            styleSheetIndex: i,
                                  -            order: ++globalCSSRuleIndex,
                                  -            specificity: 
                                  -                // See: Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -                //
                                  -                // if it is a normal selector then calculate the specificity
                                  -                selector && selector.indexOf(",") == -1 ? 
                                  -                getCSSRuleSpecificity(selector) : 
                                  -                // See: Issue 3262: [Firebug lite] Specificity of grouped CSS Rules
                                  -                //
                                  -                // if it is a grouped selector, do not calculate the specificity
                                  -                // because the correct value will depend of the matched element.
                                  -                // The proper specificity value for grouped selectors are calculated
                                  -                // via getElementCSSRules(element)
                                  -                0,
                                  -            
                                  -            rule: rule,
                                  -            lineNo: lineNo,
                                  -            selector: selector,
                                  -            cssText: rule.style ? rule.style.cssText : rule.cssText ? rule.cssText : ""        
                                  -        };
                                  -        
                                  -        // TODO: what happens with elements added after this? Need to create a test case.
                                  -        // Maybe we should place this at getElementCSSRules() but it will make the function
                                  -        // a lot more expensive.
                                  -        // 
                                  -        // Maybe add a "refresh" button?
                                  -        var elements = Firebug.Selector(selector, doc);
                                  -        
                                  -        for (var j=0, elementsLength=elements.length; j<elementsLength; j++)
                                  -        {
                                  -            var element = elements[j];
                                  -            var eid = ElementCache(element);
                                  -            
                                  -            if (!ElementCSSRulesMap[eid])
                                  -                ElementCSSRulesMap[eid] = [];
                                  -            
                                  -            ElementCSSRulesMap[eid].push(rid);
                                  -        }
                                  -        
                                  -        //console.log(selector, elements);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// External StyleSheet Loader
                                  -
                                  -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet)
                                  -{
                                  -    var url = styleSheet.href;
                                  -    styleSheet.firebugIgnore = true;
                                  -    
                                  -    var source = Firebug.Lite.Proxy.load(url);
                                  -    
                                  -    // TODO: check for null and error responses
                                  -    
                                  -    // remove comments
                                  -    //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -    //source = source.replace(reMultiComment, "");
                                  -    
                                  -    // convert relative addresses to absolute ones  
                                  -    source = source.replace(/url\(([^\)]+)\)/g, function(a,name){
                                  -    
                                  -        var hasDomain = /\w+:\/\/./.test(name);
                                  -        
                                  -        if (!hasDomain)
                                  -        {
                                  -            name = name.replace(/^(["'])(.+)\1$/, "$2");
                                  -            var first = name.charAt(0);
                                  -            
                                  -            // relative path, based on root
                                  -            if (first == "/")
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLRoot
                                  -                var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -                
                                  -                return m ? 
                                  -                    "url(" + m[1] + name + ")" :
                                  -                    "url(" + name + ")";
                                  -            }
                                  -            // relative path, based on current location
                                  -            else
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLPath
                                  -                var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, "");
                                  -                
                                  -                path = path + name;
                                  -                
                                  -                var reBack = /[^\/]+\/\.\.\//;
                                  -                while(reBack.test(path))
                                  -                {
                                  -                    path = path.replace(reBack, "");
                                  -                }
                                  -                
                                  -                //console.log("url(" + path + ")");
                                  -                
                                  -                return "url(" + path + ")";
                                  -            }
                                  -        }
                                  -        
                                  -        // if it is an absolute path, there is nothing to do
                                  -        return a;
                                  -    });
                                  -    
                                  -    var oldStyle = styleSheet.ownerNode;
                                  -    
                                  -    if (!oldStyle) return;
                                  -    
                                  -    if (!oldStyle.parentNode) return;
                                  -    
                                  -    var style = createGlobalElement("style");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.innerHTML = source;
                                  -
                                  -    //debugger;
                                  -    oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling);
                                  -    oldStyle.parentNode.removeChild(oldStyle);
                                  -    
                                  -    doc.styleSheets[doc.styleSheets.length-1].externalURL = url;
                                  -    
                                  -    console.log(url, "call " + externalStyleSheetURLs.length, source);
                                  -    
                                  -    externalStyleSheetURLs.pop();
                                  -    
                                  -    if (processAllStyleSheetsTimeout)
                                  -    {
                                  -        clearTimeout(processAllStyleSheetsTimeout);
                                  -    }
                                  -    
                                  -    processAllStyleSheetsTimeout = setTimeout(function(){
                                  -        console.log("processing");
                                  -        FBL.processAllStyleSheets(doc, styleSheetIterator);
                                  -        processAllStyleSheetsTimeout = null;
                                  -    },200);
                                  -    
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// getElementCSSRules
                                  -
                                  -var getElementCSSRules = function(element)
                                  -{
                                  -    var eid = ElementCache(element);
                                  -    var rules = ElementCSSRulesMap[eid];
                                  -    
                                  -    if (!rules) return;
                                  -    
                                  -    var arr = [element];
                                  -    var Selector = Firebug.Selector;
                                  -    var ruleId, rule;
                                  -    
                                  -    // for the case of grouped selectors, we need to calculate the highest
                                  -    // specificity within the selectors of the group that matches the element,
                                  -    // so we can sort the rules properly without over estimating the specificity
                                  -    // of grouped selectors
                                  -    for (var i = 0, length = rules.length; i < length; i++)
                                  -    {
                                  -        ruleId = rules[i];
                                  -        rule = CSSRuleMap[ruleId];
                                  -        
                                  -        // check if it is a grouped selector
                                  -        if (rule.selector.indexOf(",") != -1)
                                  -        {
                                  -            var selectors = rule.selector.split(",");
                                  -            var maxSpecificity = -1;
                                  -            var sel, spec, mostSpecificSelector;
                                  -            
                                  -            // loop over all selectors in the group
                                  -            for (var j, len = selectors.length; j < len; j++)
                                  -            {
                                  -                sel = selectors[j];
                                  -                
                                  -                // find if the selector matches the element
                                  -                if (Selector.matches(sel, arr).length == 1)
                                  -                {
                                  -                    spec = getCSSRuleSpecificity(sel);
                                  -                    
                                  -                    // find the most specific selector that macthes the element
                                  -                    if (spec > maxSpecificity)
                                  -                    {
                                  -                        maxSpecificity = spec;
                                  -                        mostSpecificSelector = sel;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            rule.specificity = maxSpecificity;
                                  -        }
                                  -    }
                                  -    
                                  -    rules.sort(sortElementRules);
                                  -    //rules.sort(solveRulesTied);
                                  -    
                                  -    return rules;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Rule Specificity
                                  -
                                  -var sortElementRules = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    var specificityA = ruleA.specificity;
                                  -    var specificityB = ruleB.specificity;
                                  -    
                                  -    if (specificityA > specificityB)
                                  -        return 1;
                                  -    
                                  -    else if (specificityA < specificityB)
                                  -        return -1;
                                  -    
                                  -    else
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -};
                                  -
                                  -var solveRulesTied = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    if (ruleA.specificity == ruleB.specificity)
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -        
                                  -    return null;
                                  -};
                                  -
                                  -var getCSSRuleSpecificity = function(selector)
                                  -{
                                  -    var match = selector.match(reSelectorTag);
                                  -    var tagCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorClass);
                                  -    var classCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorId);
                                  -    var idCount = match ? match.length : 0;
                                  -    
                                  -    return tagCount + 10*classCount + 100*idCount;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet data
                                  -
                                  -var extractSourceData = function(href)
                                  -{
                                  -    var sourceData = 
                                  -    {
                                  -        source: null,
                                  -        startLine: 0
                                  -    };
                                  -    
                                  -    if (href)
                                  -    {
                                  -        sourceData.source = Firebug.Lite.Proxy.load(href);
                                  -    }
                                  -    else
                                  -    {
                                  -        // TODO: create extractInternalSourceData(index)
                                  -        // TODO: pre process the position of the inline styles so this will happen only once
                                  -        // in case of having multiple inline styles
                                  -        var index = 0;
                                  -        var ssIndex = ++internalStyleSheetIndex;
                                  -        var reStyleTag = /\<\s*style.*\>/gi;
                                  -        var reEndStyleTag = /\<\/\s*style.*\>/gi;
                                  -        
                                  -        var source = Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -        source = source.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        
                                  -        var startLine = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            var matchStyleTag = source.match(reStyleTag); 
                                  -            var i0 = source.indexOf(matchStyleTag[0]) + matchStyleTag[0].length;
                                  -            
                                  -            for (var i=0; i < i0; i++)
                                  -            {
                                  -                if (source.charAt(i) == "\n")
                                  -                    startLine++;
                                  -            }
                                  -            
                                  -            source = source.substr(i0);
                                  -            
                                  -            index++;
                                  -        }
                                  -        while (index <= ssIndex);
                                  -    
                                  -        var matchEndStyleTag = source.match(reEndStyleTag);
                                  -        var i1 = source.indexOf(matchEndStyleTag[0]);
                                  -        
                                  -        var extractedSource = source.substr(0, i1);
                                  -        
                                  -        sourceData.source = extractedSource;
                                  -        sourceData.startLine = startLine;
                                  -    }
                                  -    
                                  -    return sourceData;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -FBL.CssAnalyzer = CssAnalyzer;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// move to FBL
                                  -(function() { 
                                  -
                                  -// ************************************************************************************************
                                  -// XPath
                                  -
                                  -/**
                                  - * Gets an XPath for an element which describes its hierarchical location.
                                  - */
                                  -this.getElementXPath = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        if (element && element.id)
                                  -            return '//*[@id="' + element.id + '"]';
                                  -        else
                                  -            return this.getElementTreeXPath(element);
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        // xxxpedro: trying to detect the mysterious error:
                                  -        // Security error" code: "1000
                                  -        // This error happens when rendering the StorageList object in the DOM panel
                                  -        //debugger;
                                  -    }
                                  -};
                                  -
                                  -this.getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -        
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -            
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -this.getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -this.getRuleMatchingElements = function(rule, doc)
                                  -{
                                  -    var css = rule.selectorText;
                                  -    var xpath = this.cssToXPath(css);
                                  -    return this.getElementsByXPath(doc, xpath);
                                  -};
                                  -
                                  -
                                  -}).call(FBL);
                                  -
                                  -
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -};
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -};
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
                                  -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
                                  -//const nsISelectionDisplay = Ci.nsISelectionDisplay;
                                  -//const nsISelectionController = Ci.nsISelectionController;
                                  -
                                  -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
                                  -//const STATE_ACTIVE  = 0x01;
                                  -//const STATE_FOCUS   = 0x02;
                                  -//const STATE_HOVER   = 0x04;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -Firebug.SourceBoxPanel = Firebug.Panel;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -
                                  -var domUtils = null;
                                  -
                                  -var textContent = isIE ? "innerText" : "textContent";
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var CSSDomplateBase = {
                                  -    isEditable: function(rule)
                                  -    {
                                  -        return !rule.isSystemSheet;
                                  -    },
                                  -    isSelectorEditable: function(rule)
                                  -    {
                                  -        return rule.isSelectorEditable && this.isEditable(rule);
                                  -    }
                                  -};
                                  -
                                  -var CSSPropTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
                                  -          $editGroup: "$rule|isEditable",
                                  -          $cssOverridden: "$prop.overridden", role : "option"},
                                  -        A({"class": "cssPropDisable"}, "&nbsp;&nbsp;"),
                                  -        SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )
                                  -});
                                  -
                                  -var CSSRuleTag =
                                  -    TAG("$rule.tag", {rule: "$rule"});
                                  -
                                  -var CSSImportRuleTag = domplate({
                                  -    tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
                                  -        "@import &quot;",
                                  -        A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
                                  -        "&quot;;"
                                  -    )
                                  -});
                                  -
                                  -var CSSStyleRuleTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssRule insertInto",
                                  -            $cssEditableRule: "$rule|isEditable",
                                  -            $editGroup: "$rule|isSelectorEditable",
                                  -            _repObject: "$rule.rule",
                                  -            "ruleId": "$rule.id", role : 'presentation'},
                                  -        DIV({"class": "cssHead focusRow", role : 'listitem'},
                                  -            SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {"
                                  -        ),
                                  -        DIV({role : 'group'},
                                  -            DIV({"class": "cssPropertyListBox", role : 'listbox'},
                                  -                FOR("prop", "$rule.props",
                                  -                    TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        DIV({"class": "editable insertBefore", role:"presentation"}, "}")
                                  -    )
                                  -});
                                  -
                                  -var reSplitCSS =  /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -
                                  -var reURL = /url\("?([^"\)]+)?"?\)/;
                                  -
                                  -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
                                  -
                                  -//const sothinkInstalled = !!$("swfcatcherKey_sidebar");
                                  -var sothinkInstalled = false;
                                  -var styleGroups =
                                  -{
                                  -    text: [
                                  -        "font-family",
                                  -        "font-size",
                                  -        "font-weight",
                                  -        "font-style",
                                  -        "color",
                                  -        "text-transform",
                                  -        "text-decoration",
                                  -        "letter-spacing",
                                  -        "word-spacing",
                                  -        "line-height",
                                  -        "text-align",
                                  -        "vertical-align",
                                  -        "direction",
                                  -        "column-count",
                                  -        "column-gap",
                                  -        "column-width"
                                  -    ],
                                  -
                                  -    background: [
                                  -        "background-color",
                                  -        "background-image",
                                  -        "background-repeat",
                                  -        "background-position",
                                  -        "background-attachment",
                                  -        "opacity"
                                  -    ],
                                  -
                                  -    box: [
                                  -        "width",
                                  -        "height",
                                  -        "top",
                                  -        "right",
                                  -        "bottom",
                                  -        "left",
                                  -        "margin-top",
                                  -        "margin-right",
                                  -        "margin-bottom",
                                  -        "margin-left",
                                  -        "padding-top",
                                  -        "padding-right",
                                  -        "padding-bottom",
                                  -        "padding-left",
                                  -        "border-top-width",
                                  -        "border-right-width",
                                  -        "border-bottom-width",
                                  -        "border-left-width",
                                  -        "border-top-color",
                                  -        "border-right-color",
                                  -        "border-bottom-color",
                                  -        "border-left-color",
                                  -        "border-top-style",
                                  -        "border-right-style",
                                  -        "border-bottom-style",
                                  -        "border-left-style",
                                  -        "-moz-border-top-radius",
                                  -        "-moz-border-right-radius",
                                  -        "-moz-border-bottom-radius",
                                  -        "-moz-border-left-radius",
                                  -        "outline-top-width",
                                  -        "outline-right-width",
                                  -        "outline-bottom-width",
                                  -        "outline-left-width",
                                  -        "outline-top-color",
                                  -        "outline-right-color",
                                  -        "outline-bottom-color",
                                  -        "outline-left-color",
                                  -        "outline-top-style",
                                  -        "outline-right-style",
                                  -        "outline-bottom-style",
                                  -        "outline-left-style"
                                  -    ],
                                  -
                                  -    layout: [
                                  -        "position",
                                  -        "display",
                                  -        "visibility",
                                  -        "z-index",
                                  -        "overflow-x",  // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
                                  -        "overflow-y",
                                  -        "overflow-clip",
                                  -        "white-space",
                                  -        "clip",
                                  -        "float",
                                  -        "clear",
                                  -        "-moz-box-sizing"
                                  -    ],
                                  -
                                  -    other: [
                                  -        "cursor",
                                  -        "list-style-image",
                                  -        "list-style-position",
                                  -        "list-style-type",
                                  -        "marker-offset",
                                  -        "user-focus",
                                  -        "user-select",
                                  -        "user-modify",
                                  -        "user-input"
                                  -    ]
                                  -};
                                  -
                                  -var styleGroupTitles =
                                  -{
                                  -    text: "Text",
                                  -    background: "Background",
                                  -    box: "Box Model",
                                  -    layout: "Layout",
                                  -    other: "Other"
                                  -};
                                  -
                                  -Firebug.CSSModule = extend(Firebug.Module,
                                  -{
                                  -    freeEdit: function(styleSheet, value)
                                  -    {
                                  -        if (!styleSheet.editStyleSheet)
                                  -        {
                                  -            var ownerNode = getStyleSheetOwnerNode(styleSheet);
                                  -            styleSheet.disabled = true;
                                  -
                                  -            var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL);
                                  -            url.spec = styleSheet.href;
                                  -
                                  -            var editStyleSheet = ownerNode.ownerDocument.createElementNS(
                                  -                "http://www.w3.org/1999/xhtml",
                                  -                "style");
                                  -            unwrapObject(editStyleSheet).firebugIgnore = true;
                                  -            editStyleSheet.setAttribute("type", "text/css");
                                  -            editStyleSheet.setAttributeNS(
                                  -                "http://www.w3.org/XML/1998/namespace",
                                  -                "base",
                                  -                url.directory);
                                  -            if (ownerNode.hasAttribute("media"))
                                  -            {
                                  -              editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
                                  -            }
                                  -
                                  -            // Insert the edited stylesheet directly after the old one to ensure the styles
                                  -            // cascade properly.
                                  -            ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
                                  -
                                  -            styleSheet.editStyleSheet = editStyleSheet;
                                  -        }
                                  -
                                  -        styleSheet.editStyleSheet.innerHTML = value;
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
                                  -    },
                                  -
                                  -    insertRule: function(styleSheet, cssText, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
                                  -        var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
                                  -
                                  -        dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
                                  -
                                  -        return insertIndex;
                                  -    },
                                  -
                                  -    deleteRule: function(styleSheet, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules);
                                  -        dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]);
                                  -
                                  -        styleSheet.deleteRule(ruleIndex);
                                  -    },
                                  -
                                  -    setProperty: function(rule, propName, propValue, propPriority)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        // good browsers
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
                                  -            // unless we remove the property first
                                  -            style.removeProperty(propName);
                                  -    
                                  -            style.setProperty(propName, propValue, propPriority);
                                  -        }
                                  -        // sad browsers
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro parse CSS rule to find property priority in IE?
                                  -            //console.log(propName, propValue);
                                  -            style[toCamelCase(propName)] = propValue;
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    },
                                  -
                                  -    removeProperty: function(rule, propName, parent)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -    
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            style.removeProperty(propName);
                                  -        }
                                  -        else
                                  -        {
                                  -            style[toCamelCase(propName)] = "";
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    }/*,
                                  -
                                  -    cleanupSheets: function(doc, context)
                                  -    {
                                  -        // Due to the manner in which the layout engine handles multiple
                                  -        // references to the same sheet we need to kick it a little bit.
                                  -        // The injecting a simple stylesheet then removing it will force
                                  -        // Firefox to regenerate it's CSS hierarchy.
                                  -        //
                                  -        // WARN: This behavior was determined anecdotally.
                                  -        // See http://code.google.com/p/fbug/issues/detail?id=2440
                                  -        var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -        style.setAttribute("charset","utf-8");
                                  -        unwrapObject(style).firebugIgnore = true;
                                  -        style.setAttribute("type", "text/css");
                                  -        style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
                                  -        addStyleSheet(doc, style);
                                  -        style.parentNode.removeChild(style);
                                  -
                                  -        // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
                                  -        // This voodoo touches each style sheet to force some Firefox internal change to allow edits.
                                  -        var styleSheets = getAllStyleSheets(context);
                                  -        for(var i = 0; i < styleSheets.length; i++)
                                  -        {
                                  -            try
                                  -            {
                                  -                var rules = styleSheets[i].cssRules;
                                  -                if (rules.length > 0)
                                  -                    var touch = rules[0];
                                  -                if (FBTrace.DBG_CSS && touch)
                                  -                    FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName()));
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e);
                                  -            }
                                  -        }
                                  -    },
                                  -    cleanupSheetHandler: function(event, context)
                                  -    {
                                  -        var target = event.target || event.srcElement,
                                  -            tagName = (target.tagName || "").toLowerCase();
                                  -        if (tagName == "link")
                                  -        {
                                  -            this.cleanupSheets(target.ownerDocument, context);
                                  -        }
                                  -    },
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        var cleanupSheets = bind(this.cleanupSheets, this),
                                  -            cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context),
                                  -            doc = win.document;
                                  -
                                  -        //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false);
                                  -        //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false);
                                  -    },
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var self = this;
                                  -        iterateWindows(context.browser.contentWindow, function(subwin)
                                  -        {
                                  -            self.cleanupSheets(subwin.document, context);
                                  -        });
                                  -    }
                                  -    /**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CSSStyleSheetPanel = function() {};
                                  -
                                  -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        tag:
                                  -            DIV({"class": "cssSheet insertInto a11yCSSView"},
                                  -                FOR("rule", "$rules",
                                  -                    CSSRuleTag
                                  -                ),
                                  -                DIV({"class": "cssSheet editable insertBefore"}, "")
                                  -                )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        if (this.location)
                                  -            this.updateLocation(this.location);
                                  -        else if (this.selection)
                                  -            this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (!this.stylesheetEditor)
                                  -            this.stylesheetEditor = new StyleSheetEditor(this.document);
                                  -
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -        {
                                  -            if (!this.location)
                                  -                return;
                                  -
                                  -            var styleSheet = this.location.editStyleSheet
                                  -                ? this.location.editStyleSheet.sheet
                                  -                : this.location;
                                  -
                                  -            var css = getStyleSheetCSS(styleSheet, this.context);
                                  -            //var topmost = getTopmostRuleLine(this.panelNode);
                                  -
                                  -            this.stylesheetEditor.styleSheet = this.location;
                                  -            Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
                                  -            //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
                                  -        }
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        if (this.location.href)
                                  -            return this.location.href;
                                  -        else
                                  -            return this.context.window.location.href;
                                  -    },
                                  -
                                  -    getRuleByLine: function(styleSheet, line)
                                  -    {
                                  -        if (!domUtils)
                                  -            return null;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        for (var i = 0; i < cssRules.length; ++i)
                                  -        {
                                  -            var rule = cssRules[i];
                                  -            if (rule instanceof CSSStyleRule)
                                  -            {
                                  -                var ruleLine = domUtils.getRuleLine(rule);
                                  -                if (ruleLine >= line)
                                  -                    return rule;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightRule: function(rule)
                                  -    {
                                  -        var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
                                  -        if (ruleElement)
                                  -        {
                                  -            scrollIntoCenterView(ruleElement, this.panelNode);
                                  -            setClassTimed(ruleElement, "jumpHighlight", this.context);
                                  -        }
                                  -    },
                                  -
                                  -    getStyleSheetRules: function(context, styleSheet)
                                  -    {
                                  -        var isSystemSheet = isSystemStyleSheet(styleSheet);
                                  -
                                  -        function appendRules(cssRules)
                                  -        {
                                  -            for (var i = 0; i < cssRules.length; ++i)
                                  -            {
                                  -                var rule = cssRules[i];
                                  -                
                                  -                // TODO: xxxpedro opera instanceof stylesheet remove the following comments when 
                                  -                // the issue with opera and style sheet Classes has been solved.
                                  -                
                                  -                //if (rule instanceof CSSStyleRule)
                                  -                if (instanceOf(rule, "CSSStyleRule"))
                                  -                {
                                  -                    var props = this.getRuleProperties(context, rule);
                                  -                    //var line = domUtils.getRuleLine(rule);
                                  -                    var line = null;
                                  -                    
                                  -                    var selector = rule.selectorText;
                                  -                    
                                  -                    if (isIE)
                                  -                    {
                                  -                        selector = selector.replace(reSelectorTag, 
                                  -                                function(s){return s.toLowerCase();});
                                  -                    }
                                  -                    
                                  -                    var ruleId = rule.selectorText+"/"+line;
                                  -                    rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId,
                                  -                                selector: selector, props: props,
                                  -                                isSystemSheet: isSystemSheet,
                                  -                                isSelectorEditable: true});
                                  -                }
                                  -                //else if (rule instanceof CSSImportRule)
                                  -                else if (instanceOf(rule, "CSSImportRule"))
                                  -                    rules.push({tag: CSSImportRuleTag.tag, rule: rule});
                                  -                //else if (rule instanceof CSSMediaRule)
                                  -                else if (instanceOf(rule, "CSSMediaRule"))
                                  -                    appendRules.apply(this, [rule.cssRules]);
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var rules = [];
                                  -        appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]);
                                  -        return rules;
                                  -    },
                                  -
                                  -    parseCSSProps: function(style, inheritMode)
                                  -    {
                                  -        var props = [];
                                  -
                                  -        if (Firebug.expandShorthandProps)
                                  -        {
                                  -            var count = style.length-1,
                                  -                index = style.length;
                                  -            while (index--)
                                  -            {
                                  -                var propName = style.item(count - index);
                                  -                this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -            var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -            var line,i=0;
                                  -            // TODO: xxxpedro port to firebug: variable leaked into global namespace
                                  -            var m;
                                  -            
                                  -            while(line=lines[i++]){
                                  -                m = propRE.exec(line);
                                  -                if(!m)
                                  -                    continue;
                                  -                //var name = m[1], value = m[2], important = !!m[3];
                                  -                if (m[2])
                                  -                    this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
                                  -            };
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    getRuleProperties: function(context, rule, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(rule.style, inheritMode);
                                  -
                                  -        // TODO: xxxpedro port to firebug: variable leaked into global namespace 
                                  -        //var line = domUtils.getRuleLine(rule);
                                  -        var line;
                                  -        var ruleId = rule.selectorText+"/"+line;
                                  -        this.addOldProperties(context, ruleId, inheritMode, props);
                                  -        sortProperties(props);
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    addOldProperties: function(context, ruleId, inheritMode, props)
                                  -    {
                                  -        if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var moreProps = context.selectorMap[ruleId];
                                  -            for (var i = 0; i < moreProps.length; ++i)
                                  -            {
                                  -                var prop = moreProps[i];
                                  -                this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    addProperty: function(name, value, important, disabled, inheritMode, props)
                                  -    {
                                  -        name = name.toLowerCase();
                                  -        
                                  -        if (inheritMode && !inheritedStyleNames[name])
                                  -            return;
                                  -
                                  -        name = this.translateName(name, value);
                                  -        if (name)
                                  -        {
                                  -            value = stripUnits(rgbToHex(value));
                                  -            important = important ? " !important" : "";
                                  -
                                  -            var prop = {name: name, value: value, important: important, disabled: disabled};
                                  -            props.push(prop);
                                  -        }
                                  -    },
                                  -
                                  -    translateName: function(name, value)
                                  -    {
                                  -        // Don't show these proprietary Mozilla properties
                                  -        if ((value == "-moz-initial"
                                  -            && (name == "-moz-background-clip" || name == "-moz-background-origin"
                                  -                || name == "-moz-background-inline-policy"))
                                  -        || (value == "physical"
                                  -            && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
                                  -                || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
                                  -        || (value == "physical"
                                  -            && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
                                  -                || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
                                  -            return null;
                                  -
                                  -        // Translate these back to the form the user probably expects
                                  -        if (name == "margin-left-value")
                                  -            return "margin-left";
                                  -        else if (name == "margin-right-value")
                                  -            return "margin-right";
                                  -        else if (name == "margin-top-value")
                                  -            return "margin-top";
                                  -        else if (name == "margin-bottom-value")
                                  -            return "margin-bottom";
                                  -        else if (name == "padding-left-value")
                                  -            return "padding-left";
                                  -        else if (name == "padding-right-value")
                                  -            return "padding-right";
                                  -        else if (name == "padding-top-value")
                                  -            return "padding-top";
                                  -        else if (name == "padding-bottom-value")
                                  -            return "padding-bottom";
                                  -        // XXXjoe What about border!
                                  -        else
                                  -            return name;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editElementStyle: function()
                                  -    {
                                  -        ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
                                  -        var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0];
                                  -        var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
                                  -        if (!styleRuleBox)
                                  -        {
                                  -            var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []};
                                  -            if (!rulesBox)
                                  -            {
                                  -                // The element did not have any displayed styles. We need to create the whole tree and remove
                                  -                // the no styles message
                                  -                styleRuleBox = this.template.cascadedTag.replace({
                                  -                    rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom")
                                  -                }, this.panelNode);
                                  -
                                  -                ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
                                  -                styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0];
                                  -            }
                                  -            else
                                  -                styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
                                  -
                                  -            ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
                                  -            styleRuleBox = $$(".insertInto", styleRuleBox)[0];
                                  -        }
                                  -
                                  -        Firebug.Editor.insertRowForObject(styleRuleBox);
                                  -    },
                                  -
                                  -    insertPropertyRow: function(row)
                                  -    {
                                  -        Firebug.Editor.insertRowForObject(row);
                                  -    },
                                  -
                                  -    insertRule: function(row)
                                  -    {
                                  -        var location = getAncestorByClass(row, "cssRule");
                                  -        if (!location)
                                  -        {
                                  -            location = getChildByClass(this.panelNode, "cssSheet");
                                  -            Firebug.Editor.insertRowForObject(location);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Editor.insertRow(location, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editPropertyRow: function(row)
                                  -    {
                                  -        var propValueBox = getChildByClass(row, "cssPropValue");
                                  -        Firebug.Editor.startEditing(propValueBox);
                                  -    },
                                  -
                                  -    deletePropertyRow: function(row)
                                  -    {
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -        Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -        // Remove the property from the selector map, if it was disabled
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var map = this.context.selectorMap[ruleId];
                                  -            for (var i = 0; i < map.length; ++i)
                                  -            {
                                  -                if (map[i].name == propName)
                                  -                {
                                  -                    map.splice(i, 1);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (this.name == "stylesheet")
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]);
                                  -        row.parentNode.removeChild(row);
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    disablePropertyRow: function(row)
                                  -    {
                                  -        toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -
                                  -        if (!this.context.selectorMap)
                                  -            this.context.selectorMap = {};
                                  -
                                  -        // XXXjoe Generate unique key for elements too
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if (!(this.context.selectorMap.hasOwnProperty(ruleId)))
                                  -            this.context.selectorMap[ruleId] = [];
                                  -
                                  -        var map = this.context.selectorMap[ruleId];
                                  -        var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -        var parsedValue = parsePriority(propValue);
                                  -        if (hasClass(row, "disabledStyle"))
                                  -        {
                                  -            Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -            map.push({"name": propName, "value": parsedValue.value,
                                  -                "important": parsedValue.priority});
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -
                                  -            var index = findPropByName(map, propName);
                                  -            map.splice(index, 1);
                                  -        }
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        //console.log("onMouseDown", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        // XXjoe Hack to only allow clicking on the checkbox
                                  -        if (!isLeftClick(event) || offset > 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        if (hasClass(target, "textEditor"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (row && hasClass(row, "editGroup"))
                                  -        {
                                  -            this.disablePropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onDoubleClick: function(event)
                                  -    {
                                  -        //console.log("onDoubleClick", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        if (!isLeftClick(event) || offset <= 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20);
                                  -        
                                  -        // if the inline editor was clicked, don't insert a new rule
                                  -        if (hasClass(target, "textEditorInner"))
                                  -            return;
                                  -            
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        if (row && !getAncestorByClass(target, "cssPropName")
                                  -            && !getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            this.insertPropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "stylesheet",
                                  -    title: "CSS",
                                  -    parentPanel: null,
                                  -    searchable: true,
                                  -    dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
                                  -    
                                  -    options:
                                  -    {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onDoubleClick = bind(this.onDoubleClick, this);
                                  -
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var selectNode = this.selectNode = createElement("select");
                                  -            
                                  -            CssAnalyzer.processAllStyleSheets(doc, function(doc, styleSheet)
                                  -            {
                                  -                var key = StyleSheetCache.key(styleSheet);
                                  -                var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -                var option = createElement("option", {value: key});
                                  -                
                                  -                option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -                selectNode.appendChild(option);
                                  -            });
                                  -            
                                  -            this.toolButtonsNode.appendChild(selectNode);
                                  -        }
                                  -        /**/
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var key = target.value;
                                  -        var styleSheet = StyleSheetCache.get(key);
                                  -        
                                  -        this.updateLocation(styleSheet);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //if (!domUtils)
                                  -        //{
                                  -        //    try {
                                  -        //        domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils");
                                  -        //    } catch (exc) {
                                  -        //        if (FBTrace.DBG_ERRORS)
                                  -        //            FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc);
                                  -        //    }
                                  -        //}
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        this.initializeNode();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            var styleSheets = Firebug.browser.document.styleSheets;
                                  -            
                                  -            if (styleSheets.length > 0)
                                  -            {
                                  -                addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -                
                                  -                this.updateLocation(styleSheets[0]);
                                  -            }
                                  -        }
                                  -        
                                  -        //Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // must destroy the editor when we leave the panel to avoid problems (Issue 2981)
                                  -        Firebug.Editor.stopEditing();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        }
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
                                  -
                                  -        //persistObjects(this, state);
                                  -
                                  -        // xxxpedro we are stopping the editor in the shutdown method already
                                  -        //Firebug.Editor.stopEditing();
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        Firebug.Inspector.stopInspecting(true);
                                  -
                                  -        this.showToolbarButtons("fbCSSButtons", true);
                                  -
                                  -        if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel
                                  -        {
                                  -            restoreObjects(this, state);
                                  -
                                  -            if (!this.location)
                                  -                this.location = this.getDefaultLocation();
                                  -
                                  -            if (state && state.scrollTop)
                                  -                this.panelNode.scrollTop = state.scrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbCSSButtons", false);
                                  -
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof CSSStyleSheet)
                                  -            return 1;
                                  -        else if (object instanceof CSSStyleRule)
                                  -            return 2;
                                  -        else if (object instanceof CSSStyleDeclaration)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateLocation: function(styleSheet)
                                  -    {
                                  -        if (!styleSheet)
                                  -            return;
                                  -        if (styleSheet.editStyleSheet)
                                  -            styleSheet = styleSheet.editStyleSheet.sheet;
                                  -        
                                  -        // if it is a restricted stylesheet, show the warning message and abort the update process
                                  -        if (styleSheet.restricted)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode);
                                  -
                                  -            // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The stylesheet could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"
                                  -            }, this.panelNode);
                                  -            
                                  -            return;
                                  -        }
                                  -
                                  -        var rules = this.getStyleSheetRules(this.context, styleSheet);
                                  -
                                  -        var result;
                                  -        if (rules.length)
                                  -            // FIXME xxxpedro chromenew this is making iPad's Safari to crash
                                  -            result = this.template.tag.replace({rules: rules}, this.panelNode);
                                  -        else
                                  -            result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro need to fix showToolbarButtons function
                                  -        //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location));
                                  -
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        this.selection = null;
                                  -
                                  -        if (object instanceof CSSStyleDeclaration) {
                                  -            object = object.parentRule;
                                  -        }
                                  -
                                  -        if (object instanceof CSSStyleRule)
                                  -        {
                                  -            this.navigate(object.parentStyleSheet);
                                  -            this.highlightRule(object);
                                  -        }
                                  -        else if (object instanceof CSSStyleSheet)
                                  -        {
                                  -            this.navigate(object);
                                  -        }
                                  -        else if (object instanceof SourceLink)
                                  -        {
                                  -            try
                                  -            {
                                  -                var sourceLink = object;
                                  -
                                  -                var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -                if (sourceFile)
                                  -                {
                                  -                    clearNode(this.panelNode);  // replace rendered stylesheets
                                  -                    this.showSourceFile(sourceFile);
                                  -
                                  -                    var lineNo = object.line;
                                  -                    if (lineNo)
                                  -                        this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
                                  -                }
                                  -                else // XXXjjb we should not be taking this path
                                  -                {
                                  -                    var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -                    if (stylesheet)
                                  -                        this.navigate(stylesheet);
                                  -                    else
                                  -                    {
                                  -                        if (FBTrace.DBG_CSS)
                                  -                            FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink);
                                  -                    }
                                  -                }
                                  -            }
                                  -            catch(exc) {
                                  -                if (FBTrace.DBG_CSS)
                                  -                    FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var styleSheets = getAllStyleSheets(this.context);
                                  -        return styleSheets;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") },
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(style, target)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        if (this.infoTipType == "color")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyColor",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -        else if (this.infoTipType == "image")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyImageLocation",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) },
                                  -                {label: "OpenImageInNewTab",
                                  -                    command: bindFixed(openNewTab, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -
                                  -        ///if (this.selection instanceof Element)
                                  -        if (isElement(this.selection))
                                  -        {
                                  -            items.push(
                                  -                //"-",
                                  -                {label: "EditStyle",
                                  -                    command: bindFixed(this.editElementStyle, this) }
                                  -            );
                                  -        }
                                  -        else if (!isSystemStyleSheet(this.selection))
                                  -        {
                                  -            items.push(
                                  -                    //"-",
                                  -                    {label: "NewRule",
                                  -                        command: bindFixed(this.insertRule, this, target) }
                                  -                );
                                  -        }
                                  -
                                  -        var cssRule = getAncestorByClass(target, "cssRule");
                                  -        if (cssRule && hasClass(cssRule, "cssEditableRule"))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewProp",
                                  -                    command: bindFixed(this.insertPropertyRow, this, target) }
                                  -            );
                                  -
                                  -            var propRow = getAncestorByClass(target, "cssProp");
                                  -            if (propRow)
                                  -            {
                                  -                var propName = getChildByClass(propRow, "cssPropName")[textContent];
                                  -                var isDisabled = hasClass(propRow, "disabledStyle");
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.editPropertyRow, this, propRow) },
                                  -                    {label: $STRF("DeleteProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.deletePropertyRow, this, propRow) },
                                  -                    {label: $STRF("DisableProp", [propName]), nol10n: true,
                                  -                        type: "checkbox", checked: isDisabled,
                                  -                        command: bindFixed(this.disablePropertyRow, this, propRow) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -        if (this.infoTipType == "image")
                                  -        {
                                  -            openNewTab(this.infoTipObject);
                                  -            return true;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        var propValue = getAncestorByClass(target, "cssPropValue");
                                  -        if (propValue)
                                  -        {
                                  -            var offset = getClientOffset(propValue);
                                  -            var offsetX = x-offset.x;
                                  -
                                  -            var text = propValue[textContent];
                                  -            var charWidth = propValue.offsetWidth/text.length;
                                  -            var charOffset = Math.floor(offsetX/charWidth);
                                  -
                                  -            var cssValue = parseCSSValue(text, charOffset);
                                  -            if (cssValue)
                                  -            {
                                  -                if (cssValue.value == this.infoTipValue)
                                  -                    return true;
                                  -
                                  -                this.infoTipValue = cssValue.value;
                                  -
                                  -                if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value)))
                                  -                {
                                  -                    this.infoTipType = "color";
                                  -                    this.infoTipObject = cssValue.value;
                                  -
                                  -                    return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value);
                                  -                }
                                  -                else if (cssValue.type == "url")
                                  -                {
                                  -                    ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0);
                                  -                    var propNameNode = getElementByClass(target.parentNode, "cssPropName");
                                  -                    if (propNameNode && isImageRule(propNameNode[textContent]))
                                  -                    {
                                  -                        var rule = Firebug.getRepObject(target);
                                  -                        var baseURL = this.getStylesheetURL(rule);
                                  -                        var relURL = parseURLValue(cssValue.value);
                                  -                        var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL);
                                  -                        var repeat = parseRepeatValue(text);
                                  -
                                  -                        this.infoTipType = "image";
                                  -                        this.infoTipObject = absURL;
                                  -
                                  -                        return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        delete this.infoTipType;
                                  -        delete this.infoTipValue;
                                  -        delete this.infoTipObject;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (target == this.panelNode
                                  -            || hasClass(target, "cssSelector") || hasClass(target, "cssRule")
                                  -            || hasClass(target, "cssSheet"))
                                  -        {
                                  -            if (!this.ruleEditor)
                                  -                this.ruleEditor = new CSSRuleEditor(this.document);
                                  -
                                  -            return this.ruleEditor;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!this.editor)
                                  -                this.editor = new CSSEditor(this.document);
                                  -
                                  -            return this.editor;
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheets = this.context.window.document.styleSheets;
                                  -            if (styleSheets.length)
                                  -            {
                                  -                var sheet = styleSheets[0];
                                  -                return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_LOCATIONS)
                                  -                FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectDescription: function(styleSheet)
                                  -    {
                                  -        var url = getURLForStyleSheet(styleSheet);
                                  -        var instance = getInstanceForStyleSheet(styleSheet);
                                  -
                                  -        var baseDescription = splitURLBase(url);
                                  -        if (instance) {
                                  -          baseDescription.name = baseDescription.name + " #" + (instance + 1);
                                  -        }
                                  -        return baseDescription;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -        function scanDoc(styleSheet) {
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < styleSheet.cssRules.length; i++)
                                  -            {
                                  -                if (scanRE.test(styleSheet.cssRules[i].cssText))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -        {
                                  -            row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.editing)
                                  -            {
                                  -                this.currentSearch = new TextSearch(this.stylesheetEditor.box);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -
                                  -                if (row)
                                  -                {
                                  -                    var sel = this.document.defaultView.getSelection();
                                  -                    sel.removeAllRanges();
                                  -                    sel.addRange(this.currentSearch.range);
                                  -                    scrollSelectionIntoView(this);
                                  -                    return true;
                                  -                }
                                  -                else
                                  -                    return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -                this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -            }
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            this.document.defaultView.getSelection().selectAllChildren(row);
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal")
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -
                                  -function CSSElementPanel() {}
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        cascadedTag:
                                  -            DIV({"class": "a11yCSSView",  role : 'presentation'},
                                  -                DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') },
                                  -                    FOR("rule", "$rules",
                                  -                        TAG("$ruleTag", {rule: "$rule"})
                                  -                    )
                                  -                ),
                                  -                DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')},
                                  -                    FOR("section", "$inherited",
                                  -                        H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' },
                                  -                            SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
                                  -                            TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
                                  -                        ),
                                  -                        DIV({role : 'group'},
                                  -                            FOR("rule", "$section.rules",
                                  -                                TAG("$ruleTag", {rule: "$rule"})
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                 )
                                  -            ),
                                  -
                                  -        ruleTag:
                                  -            isIE ?
                                  -            // IE needs the sourceLink first, otherwise it will be rendered outside the panel
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}),
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"})                
                                  -            )
                                  -            :
                                  -            // other browsers need the sourceLink last, otherwise it will cause an extra space
                                  -            // before the rule representation
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"}),
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateCascadeView: function(element)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]);
                                  -        var rules = [], sections = [], usedProps = {};
                                  -        this.getInheritedRules(element, sections, usedProps);
                                  -        this.getElementRules(element, rules, usedProps);
                                  -
                                  -        if (rules.length || sections.length)
                                  -        {
                                  -            var inheritLabel = "Inherited from"; // $STR("InheritedFrom");
                                  -            var result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
                                  -                inheritLabel: inheritLabel}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -        else
                                  -        {
                                  -            var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -
                                  -        // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -        if (CssAnalyzer.hasExternalStyleSheet())
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The results here may be inaccurate because some " +
                                  -                        "stylesheets could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"
                                  -            }, this.panelNode);
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        // if the parentStyleSheet.href is null, CSS std says its inline style.
                                  -        // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location
                                  -        if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
                                  -            return rule.parentStyleSheet.href;
                                  -        else
                                  -            return this.selection.ownerDocument.location.href;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getInheritedRules: function(element, sections, usedProps)
                                  -    {
                                  -        var parent = element.parentNode;
                                  -        if (parent && parent.nodeType == 1)
                                  -        {
                                  -            this.getInheritedRules(parent, sections, usedProps);
                                  -
                                  -            var rules = [];
                                  -            this.getElementRules(parent, rules, usedProps, true);
                                  -
                                  -            if (rules.length)
                                  -                sections.splice(0, 0, {element: parent, rules: rules});
                                  -        }
                                  -    },
                                  -
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        
                                  -        inspectedRules = CssAnalyzer.getElementCSSRules(element);
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0, length=inspectedRules.length; i < length; ++i)
                                  -            {
                                  -                var ruleId = inspectedRules[i];
                                  -                var ruleData = CssAnalyzer.getRuleData(ruleId);
                                  -                var rule = ruleData.rule;
                                  -                
                                  -                var ssid = ruleData.styleSheetId;
                                  -                var parentStyleSheet = StyleSheetCache.get(ssid); 
                                  -
                                  -                var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = null;
                                  -                //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = false;
                                  -                //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                //
                                  -                //var line = domUtils.getRuleLine(rule);
                                  -                // TODO: xxxpedro CSS line number 
                                  -                var line = ruleData.lineNo;
                                  -                
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: ruleData.selector, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /*
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        try
                                  -        {
                                  -            inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null;
                                  -        } catch (exc) {}
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0; i < inspectedRules.Count(); ++i)
                                  -            {
                                  -                var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
                                  -
                                  -                var href = rule.parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                var line = domUtils.getRuleLine(rule);
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: rule.selectorText, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /**/
                                  -    markOverridenProps: function(props, usedProps, inheritMode)
                                  -    {
                                  -        for (var i = 0; i < props.length; ++i)
                                  -        {
                                  -            var prop = props[i];
                                  -            if ( usedProps.hasOwnProperty(prop.name) )
                                  -            {
                                  -                var deadProps = usedProps[prop.name]; // all previous occurrences of this property
                                  -                for (var j = 0; j < deadProps.length; ++j)
                                  -                {
                                  -                    var deadProp = deadProps[j];
                                  -                    if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important)
                                  -                        prop.overridden = true;  // new occurrence overridden
                                  -                    else if (!prop.disabled)
                                  -                        deadProp.overridden = true;  // previous occurrences overridden
                                  -                }
                                  -            }
                                  -            else
                                  -                usedProps[prop.name] = [];
                                  -
                                  -            prop.wasInherited = inheritMode ? true : false;
                                  -            usedProps[prop.name].push(prop);  // all occurrences of a property seen so far, by name
                                  -        }
                                  -    },
                                  -
                                  -    getStyleProperties: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(element.style, inheritMode);
                                  -        this.addOldProperties(this.context, getElementXPath(element), inheritMode, props);
                                  -
                                  -        sortProperties(props);
                                  -        this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -        if (props.length)
                                  -            rules.splice(0, 0,
                                  -                    {rule: element, id: getElementXPath(element),
                                  -                        selector: "element.style", props: props, inherited: inheritMode});
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "css",
                                  -    title: "Style",
                                  -    parentPanel: "HTML",
                                  -    order: 0,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -        
                                  -        //this.updateCascadeView(document.getElementsByTagName("h1")[0]);
                                  -        //this.updateCascadeView(document.getElementById("build"));
                                  -        
                                  -        /*
                                  -        this.onStateChange = bindFixed(this.contentStateCheck, this);
                                  -        this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER);
                                  -        this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
                                  -        /**/
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (domUtils)
                                  -        {
                                  -            // Normally these would not be required, but in order to update after the state is set
                                  -            // using the options menu we need to monitor these global events as well
                                  -            var doc = win.document;
                                  -            ///addEvent(doc, "mouseover", this.onHoverChange);
                                  -            ///addEvent(doc, "mousedown", this.onActiveChange);
                                  -        }
                                  -    },
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var doc = win.document;
                                  -        ///removeEvent(doc, "mouseover", this.onHoverChange);
                                  -        ///removeEvent(doc, "mousedown", this.onActiveChange);
                                  -
                                  -        if (isAncestor(this.stateChangeEl, doc))
                                  -        {
                                  -            this.removeStateChangeHandlers();
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Element ? 1 : 0;
                                  -    },
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateCascadeView(element);
                                  -        if (domUtils)
                                  -        {
                                  -            this.contentState = safeGetContentState(element);
                                  -            this.addStateChangeHandlers(element);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(element)
                                  -    {
                                  -        if ( !instanceOf(element , "Element") ) // html supports SourceLink
                                  -            return;
                                  -
                                  -        if (sothinkInstalled)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -
                                  -        /*
                                  -        if (!domUtils)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        this.updateView(element);
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "showUserAgentCSS" || name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var ret = [
                                  -            {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") },
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }
                                  -        ];
                                  -        if (domUtils && this.selection)
                                  -        {
                                  -            var state = safeGetContentState(this.selection);
                                  -
                                  -            ret.push("-");
                                  -            ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE,
                                  -              command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)});
                                  -            ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER,
                                  -              command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)});
                                  -        }
                                  -        return ret;
                                  -    },
                                  -
                                  -    updateContentState: function(state, remove)
                                  -    {
                                  -        domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state);
                                  -        this.refresh();
                                  -    },
                                  -
                                  -    addStateChangeHandlers: function(el)
                                  -    {
                                  -      this.removeStateChangeHandlers();
                                  -
                                  -      /*
                                  -      addEvent(el, "focus", this.onStateChange);
                                  -      addEvent(el, "blur", this.onStateChange);
                                  -      addEvent(el, "mouseup", this.onStateChange);
                                  -      addEvent(el, "mousedown", this.onStateChange);
                                  -      addEvent(el, "mouseover", this.onStateChange);
                                  -      addEvent(el, "mouseout", this.onStateChange);
                                  -      /**/
                                  -
                                  -      this.stateChangeEl = el;
                                  -    },
                                  -
                                  -    removeStateChangeHandlers: function()
                                  -    {
                                  -        var sel = this.stateChangeEl;
                                  -        if (sel)
                                  -        {
                                  -            /*
                                  -            removeEvent(sel, "focus", this.onStateChange);
                                  -            removeEvent(sel, "blur", this.onStateChange);
                                  -            removeEvent(sel, "mouseup", this.onStateChange);
                                  -            removeEvent(sel, "mousedown", this.onStateChange);
                                  -            removeEvent(sel, "mouseover", this.onStateChange);
                                  -            removeEvent(sel, "mouseout", this.onStateChange);
                                  -            /**/
                                  -        }
                                  -    },
                                  -
                                  -    contentStateCheck: function(state)
                                  -    {
                                  -        if (!state || this.contentState & state)
                                  -        {
                                  -            var timeoutRunner = bindFixed(function()
                                  -            {
                                  -                var newState = safeGetContentState(this.selection);
                                  -                if (newState != this.contentState)
                                  -                {
                                  -                    this.context.invalidatePanels(this.name);
                                  -                }
                                  -            }, this);
                                  -
                                  -            // Delay exec until after the event has processed and the state has been updated
                                  -            setTimeout(timeoutRunner, 0);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -function safeGetContentState(selection)
                                  -{
                                  -    try
                                  -    {
                                  -        return domUtils.getContentState(selection);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("css.safeGetContentState; EXCEPTION", e);
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function CSSComputedElementPanel() {}
                                  -
                                  -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        computedTag:
                                  -            DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')},
                                  -                FOR("group", "$groups",
                                  -                    H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"},
                                  -                        SPAN({"class": "cssInheritLabel"}, "$group.title")
                                  -                    ),
                                  -                    TABLE({width: "100%", role : 'group'},
                                  -                        TBODY({role : 'presentation'},
                                  -                            FOR("prop", "$group.props",
                                  -                                TR({"class": 'focusRow computedStyleRow', role : 'listitem'},
                                  -                                    TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"),
                                  -                                    TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value")
                                  -                                )
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateComputedView: function(element)
                                  -    {
                                  -        var win = isIE ?
                                  -                element.ownerDocument.parentWindow :
                                  -                element.ownerDocument.defaultView;
                                  -        
                                  -        var style = isIE ?
                                  -                element.currentStyle :
                                  -                win.getComputedStyle(element, "");
                                  -
                                  -        var groups = [];
                                  -
                                  -        for (var groupName in styleGroups)
                                  -        {
                                  -            // TODO: xxxpedro i18n $STR
                                  -            //var title = $STR("StyleGroup-" + groupName);
                                  -            var title = styleGroupTitles[groupName];
                                  -            var group = {title: title, props: []};
                                  -            groups.push(group);
                                  -
                                  -            var props = styleGroups[groupName];
                                  -            for (var i = 0; i < props.length; ++i)
                                  -            {
                                  -                var propName = props[i];
                                  -                var propValue = style.getPropertyValue ?
                                  -                        style.getPropertyValue(propName) :
                                  -                        ""+style[toCamelCase(propName)];
                                  -                
                                  -                if (propValue === undefined || propValue === null) 
                                  -                    continue;
                                  -                
                                  -                propValue = stripUnits(rgbToHex(propValue));
                                  -                if (propValue)
                                  -                    group.props.push({name: propName, value: propValue});
                                  -            }
                                  -        }
                                  -
                                  -        var result = this.template.computedTag.replace({groups: groups}, this.panelNode);
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "computed",
                                  -    title: "Computed",
                                  -    parentPanel: "HTML",
                                  -    order: 1,
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateComputedView(element);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSSEditor
                                  -
                                  -function CSSEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var rule = Firebug.getRepObject(target);
                                  -        var emptyProp = 
                                  -        {
                                  -            // TODO: xxxpedro - uses charCode(255) to force the element being rendered, 
                                  -            // allowing webkit to get the correct position of the property name "span",
                                  -            // when inserting a new CSS rule?
                                  -            name: "",
                                  -            value: "",
                                  -            important: ""
                                  -        };
                                  -
                                  -        if (insertWhere == "before")
                                  -            return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
                                  -        else
                                  -            return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // We need to check the value first in order to avoid a problem in IE8 
                                  -        // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite 
                                  -        if (!value) return;
                                  -        
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (hasClass(row, "disabledStyle"))
                                  -            toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(target);
                                  -
                                  -        if (hasClass(target, "cssPropName"))
                                  -        {
                                  -            if (value && previousValue != value)  // name of property has changed.
                                  -            {
                                  -                var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -                var parsedValue = parsePriority(propValue);
                                  -
                                  -                if (propValue && propValue != "undefined") {
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n");
                                  -                    if (previousValue)
                                  -                        Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -                    Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
                                  -                }
                                  -            }
                                  -            else if (!value) // name of the property has been deleted, so remove the property.
                                  -                Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -        }
                                  -        else if (getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -
                                  -            if (FBTrace.DBG_CSS)
                                  -            {
                                  -                FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n");
                                  -               // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
                                  -            }
                                  -
                                  -            if (value && value != "null")
                                  -            {
                                  -                var parsedValue = parsePriority(value);
                                  -                Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -            }
                                  -            else if (previousValue && previousValue != "null")
                                  -                Firebug.CSSModule.removeProperty(rule, propName);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -            return {start: 0, end: value.length-1};
                                  -        else
                                  -            return parseCSSValue(value, offset);
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -        {
                                  -            return getCSSPropertyNames();
                                  -        }
                                  -        else
                                  -        {
                                  -            var row = getAncestorByClass(this.target, "cssProp");
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            return getCSSKeywordsByProperty(propName);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//CSSRuleEditor
                                  -
                                  -function CSSRuleEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -    this.completeAsYouType = false;
                                  -}
                                  -CSSRuleEditor.uniquifier = 0;
                                  -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -         var emptyRule = {
                                  -                 selector: "",
                                  -                 id: "",
                                  -                 props: [],
                                  -                 isSelectorEditable: true
                                  -         };
                                  -
                                  -         if (insertWhere == "before")
                                  -             return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
                                  -         else
                                  -             return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "'  '" + previousValue + "'", target);
                                  -
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        if (value === previousValue)     return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        var styleSheet = this.panel.location;
                                  -        styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        var rule = Firebug.getRepObject(target), oldRule = rule;
                                  -        var ruleIndex = cssRules.length;
                                  -        if (rule || Firebug.getRepObject(row.nextSibling))
                                  -        {
                                  -            var searchRule = rule || Firebug.getRepObject(row.nextSibling);
                                  -            for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex]; ruleIndex++) {}
                                  -        }
                                  -
                                  -        // Delete in all cases except for new add
                                  -        // We want to do this before the insert to ease change tracking
                                  -        if (oldRule)
                                  -        {
                                  -            Firebug.CSSModule.deleteRule(styleSheet, ruleIndex);
                                  -        }
                                  -
                                  -        // Firefox does not follow the spec for the update selector text case.
                                  -        // When attempting to update the value, firefox will silently fail.
                                  -        // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
                                  -        // old discussion of this bug.
                                  -        // As a result we need to recreate the style every time the selector
                                  -        // changes.
                                  -        if (value)
                                  -        {
                                  -            var cssText = [ value, "{" ];
                                  -            var props = row.getElementsByClassName("cssProp");
                                  -            for (var i = 0; i < props.length; i++) {
                                  -                var propEl = props[i];
                                  -                if (!hasClass(propEl, "disabledStyle")) {
                                  -                    cssText.push(getChildByClass(propEl, "cssPropName")[textContent]);
                                  -                    cssText.push(":");
                                  -                    cssText.push(getChildByClass(propEl, "cssPropValue")[textContent]);
                                  -                    cssText.push(";");
                                  -                }
                                  -            }
                                  -            cssText.push("}");
                                  -            cssText = cssText.join("");
                                  -
                                  -            try
                                  -            {
                                  -                var insertLoc = Firebug.CSSModule.insertRule(styleSheet, cssText, ruleIndex);
                                  -                rule = cssRules[insertLoc];
                                  -                ruleIndex++;
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("CSS Insert Error: "+err, err);
                                  -
                                  -                target.innerHTML = escapeForCss(previousValue);
                                  -                row.repObject = undefined;
                                  -                return;
                                  -            }
                                  -        } else {
                                  -            rule = undefined;
                                  -        }
                                  -
                                  -        // Update the rep object
                                  -        row.repObject = rule;
                                  -        if (!oldRule)
                                  -        {
                                  -            // Who knows what the domutils will return for rule line
                                  -            // for a recently created rule. To be safe we just generate
                                  -            // a unique value as this is only used as an internal key.
                                  -            var ruleId = "new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -            row.setAttribute("ruleId", ruleId);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheetEditor
                                  -
                                  -function StyleSheetEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -}
                                  -
                                  -StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    multiLine: true,
                                  -
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        if (this.box.parentNode == this.panel.panelNode)
                                  -            this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -        delete this.styleSheet;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        Firebug.CSSModule.freeEdit(this.styleSheet, value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        this.panel.refresh();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    },
                                  -
                                  -    scrollToLine: function(line, offset)
                                  -    {
                                  -        this.startMeasuring(this.input);
                                  -        var lineHeight = this.measureText().height;
                                  -        this.stopMeasuring();
                                  -
                                  -        this.input.scrollTop = (line * lineHeight) + offset;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var rgbToHex = function rgbToHex(value)
                                  -{
                                  -    return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, rgbToHexReplacer);
                                  -};
                                  -
                                  -var rgbToHexReplacer = function(_, r, g, b) {
                                  -    return '#' + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
                                  -};
                                  -
                                  -var stripUnits = function stripUnits(value)
                                  -{
                                  -    // remove units from '0px', '0em' etc. leave non-zero units in-tact.
                                  -    return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi, stripUnitsReplacer);
                                  -};
                                  -
                                  -var stripUnitsReplacer = function(_, skip, remove, whitespace) {
                                  -    return skip || ('0' + whitespace);
                                  -};
                                  -
                                  -function parsePriority(value)
                                  -{
                                  -    var rePriority = /(.*?)\s*(!important)?$/;
                                  -    var m = rePriority.exec(value);
                                  -    var propValue = m ? m[1] : "";
                                  -    var priority = m && m[2] ? "important" : "";
                                  -    return {value: propValue, priority: priority};
                                  -}
                                  -
                                  -function parseURLValue(value)
                                  -{
                                  -    var m = reURL.exec(value);
                                  -    return m ? m[1] : "";
                                  -}
                                  -
                                  -function parseRepeatValue(value)
                                  -{
                                  -    var m = reRepeat.exec(value);
                                  -    return m ? m[0] : "";
                                  -}
                                  -
                                  -function parseCSSValue(value, offset)
                                  -{
                                  -    var start = 0;
                                  -    var m;
                                  -    while (1)
                                  -    {
                                  -        m = reSplitCSS.exec(value);
                                  -        if (m && m.index+m[0].length < offset)
                                  -        {
                                  -            value = value.substr(m.index+m[0].length);
                                  -            start += m.index+m[0].length;
                                  -            offset -= m.index+m[0].length;
                                  -        }
                                  -        else
                                  -            break;
                                  -    }
                                  -
                                  -    if (m)
                                  -    {
                                  -        var type;
                                  -        if (m[1])
                                  -            type = "url";
                                  -        else if (m[2] || m[3])
                                  -            type = "rgb";
                                  -        else if (m[4])
                                  -            type = "int";
                                  -
                                  -        return {value: m[0], start: start+m.index, end: start+m.index+(m[0].length-1), type: type};
                                  -    }
                                  -}
                                  -
                                  -function findPropByName(props, name)
                                  -{
                                  -    for (var i = 0; i < props.length; ++i)
                                  -    {
                                  -        if (props[i].name == name)
                                  -            return i;
                                  -    }
                                  -}
                                  -
                                  -function sortProperties(props)
                                  -{
                                  -    props.sort(function(a, b)
                                  -    {
                                  -        return a.name > b.name ? 1 : -1;
                                  -    });
                                  -}
                                  -
                                  -function getTopmostRuleLine(panelNode)
                                  -{
                                  -    for (var child = panelNode.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
                                  -        {
                                  -            var rule = child.repObject;
                                  -            if (rule)
                                  -                return {
                                  -                    line: domUtils.getRuleLine(rule),
                                  -                    offset: panelNode.scrollTop-child.offsetTop
                                  -                };
                                  -        }
                                  -    }
                                  -    return 0;
                                  -}
                                  -
                                  -function getStyleSheetCSS(sheet, context)
                                  -{
                                  -    if (sheet.ownerNode instanceof HTMLStyleElement)
                                  -        return sheet.ownerNode.innerHTML;
                                  -    else
                                  -        return context.sourceCache.load(sheet.href).join("");
                                  -}
                                  -
                                  -function getStyleSheetOwnerNode(sheet) {
                                  -    for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
                                  -
                                  -    return sheet.ownerNode;
                                  -}
                                  -
                                  -function scrollSelectionIntoView(panel)
                                  -{
                                  -    var selCon = getSelectionController(panel);
                                  -    selCon.scrollSelectionIntoView(
                                  -            nsISelectionController.SELECTION_NORMAL,
                                  -            nsISelectionController.SELECTION_FOCUS_REGION, true);
                                  -}
                                  -
                                  -function getSelectionController(panel)
                                  -{
                                  -    var browser = Firebug.chrome.getPanelBrowser(panel);
                                  -    return browser.docShell.QueryInterface(nsIInterfaceRequestor)
                                  -        .getInterface(nsISelectionDisplay)
                                  -        .QueryInterface(nsISelectionController);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    selectIndex: 0, // index of the current selectNode's option
                                  -    sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script")
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            // Don't show Firebug Lite source code in the list of options
                                  -            if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
                                  -                continue;
                                  -            
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // we must render the code first, so the persistent state can be restore
                                  -        this.selectSourceCode(this.selectIndex);
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.selectIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.selectIndex = index;
                                  -        this.sourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        var select = this.selectNode;
                                  -        
                                  -        this.selectIndex = select.selectedIndex;
                                  -        
                                  -        var option = select.options[select.selectedIndex];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        var select = this.selectNode; 
                                  -        select.selectedIndex = index;
                                  -        
                                  -        var option = select.options[index];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.sourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.panelNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode);
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (Firebug.disableResourceFetching)
                                  -                {
                                  -                    renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage);
                                  -                }
                                  -                else if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                onFailure();
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[Firebug.Lite.Cache.ID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {};
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    /*
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    /**/
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var defaultObject = this.getDefaultSelection(this.context);
                                  -            var selectObject = defaultObject; 
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro dom 
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val) && !(name in domMembers))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers && !(name in domConstantMap))
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -};
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -// FIXME: xxxpedro This function is already defined in Lib. If we keep this definition here, it
                                  -// will crash IE9 when not running the IE Developer Tool with JavaScript Debugging enabled!!!
                                  -// Check if this function is in fact defined in Firebug for Firefox. If so, we should remove
                                  -// this from here. The only difference of this function is the IE hack to show up the prototype
                                  -// of functions, but Firebug no longer shows the prototype for simple functions.
                                  -//var hasProperties = function hasProperties(ob)
                                  -//{
                                  -//    try
                                  -//    {
                                  -//        for (var name in ob)
                                  -//            return true;
                                  -//    } catch (exc) {}
                                  -//    
                                  -//    // IE function prototype is not listed in (for..in)
                                  -//    if (isFunction(ob)) return true;
                                  -//    
                                  -//    return false;
                                  -//};
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -};
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -};
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -};
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -};
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -};
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -};
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1,
                                  -    DBG_CSS: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.panelNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().panelNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.clearButton.shutdown();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -var registerModule = Firebug.registerModule;
                                  -var registerPanel = Firebug.registerPanel;
                                  -
                                  -// ************************************************************************************************
                                  -append(Firebug,
                                  -{
                                  -    extend: function(fn)
                                  -    {
                                  -        if (Firebug.chrome && Firebug.chrome.addPanel)
                                  -        {
                                  -            var namespace = ns(fn);
                                  -            fn.call(namespace, FBL);
                                  -        }
                                  -        else
                                  -        {
                                  -            setTimeout(function(){Firebug.extend(fn);},100);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        registerModule.apply(Firebug, arguments);
                                  -        
                                  -        modules.push.apply(modules, arguments);
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        registerPanel.apply(Firebug, arguments);
                                  -        
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            // TODO: xxxpedro investigate why Dev Panel throws an error
                                  -            if (panelType.prototype.name == "Dev") continue;
                                  -            
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            var parentPanelName = panelType.prototype.parentPanel;
                                  -            if (parentPanelName)
                                  -            {
                                  -                parentPanelMap[parentPanelName] = 1;
                                  -            }
                                  -            else
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -                var chrome = Firebug.chrome;
                                  -                chrome.addPanel(panelName);
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    chrome.selectPanel(panelName);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]);                
                                  -            }
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.Skin = 
                                  -{
                                  -    CSS: '.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y 100% 0;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 0 100%;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/min.png);}#fbWindow_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/minHover.png);}#fbWindow_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detach.png);}#fbWindow_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detachHover.png);}#fbWindow_btDeactivate{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/off.png);}#fbWindow_btDeactivate:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/firebug-lite-debug.js b/branches/flexBox/build/firebug-lite-debug.js
                                  deleted file mode 100644
                                  index ca4dc52e..00000000
                                  --- a/branches/flexBox/build/firebug-lite-debug.js
                                  +++ /dev/null
                                  @@ -1,31108 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.5.0-flex-a2
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -/** @namespace describe lib */
                                  -
                                  -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE 
                                  -window.FBL = {};
                                  -
                                  -( /** @scope s_lib @this FBL */ function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion = 4;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// Globals
                                  -this.reJavascript = /\s*javascript:\s*(.*)/;
                                  -this.reChrome = /chrome:\/\/([^\/]*)\//;
                                  -this.reFile = /file:\/\/([^\/]*)\//;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // Firebug Lite is already running in persistent mode so we just quit
                                  -    if (window.firebug && firebug.firebuglite || window.console && console.firebuglite)
                                  -        return;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyEnvironment;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        // The problem is that we don't have the Firebug object yet, so we can't use 
                                  -        // Firebug.loadPrefs. We're using the Store module directly instead.
                                  -        var prefs = FBL.Store.get("FirebugLite") || {};
                                  -        FBL.Env.DefaultOptions = FBL.Env.Options;
                                  -        FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {});
                                  -        
                                  -        if (FBL.isFirefox && 
                                  -            typeof FBL.Env.browser.console == "object" && 
                                  -            FBL.Env.browser.console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -                return;
                                  -    }
                                  -    
                                  -    // exposes the FBL to the global namespace when in debug mode
                                  -    if (FBL.Env.isDebugMode)
                                  -    {
                                  -        FBL.Env.browser.FBL = FBL;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -    FBL.Firebug.loadPrefs();
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // wait document load
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: true,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        disableXHRListener: false,
                                  -        disableResourceFetching: false,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "flexBox",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isDebugMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyEnvironment = function destroyEnvironment()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    var hasSrcAttribute = true;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                {
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                    hasSrcAttribute = false;
                                  -                }
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                {
                                  -                    scriptSrc = si.src;
                                  -                }
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        path = productionDir;
                                  -        FBL.Env.bookmarkletOutdated = false;
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    isGetFirebugSite = reGetFirebugSite.test(path);
                                  -    
                                  -    if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1)
                                  -    {
                                  -        // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like 
                                  -        // https://getfirebug.com/firebug-lite.js, then we must manually add the full path,
                                  -        // otherwise the Env.Location will hold the wrong path, which will in turn lead to
                                  -        // undesirable effects like the problem in Issue 4587
                                  -        path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/");
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        // Always use the local skin when running in the same domain
                                  -        // See Issue 3554: Firebug Lite should use local images when loaded locally
                                  -        Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 &&
                                  -                // but we cannot use the locan skin when loaded from getfirebug.com, otherwise
                                  -                // the bookmarklet won't work when visiting getfirebug.com
                                  -                !isGetFirebugSite;
                                  -        
                                  -        // detecting development and debug modes via file name
                                  -        if (fileName == "firebug-lite-dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        else if (fileName == "firebug-lite-debug.js")
                                  -        {
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        
                                  -        // process the <html debug="true">
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -        }
                                  -        
                                  -        // process the Script URL Options
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name == "debug")
                                  -                {
                                  -                    Env.isDebugMode = !!value;
                                  -                }
                                  -                else if (name in Env.Options)
                                  -                {
                                  -                    Env.Options[name] = value;
                                  -                }
                                  -                else
                                  -                {
                                  -                    Env[name] = value;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        // process the Script JSON Options
                                  -        if (hasSrcAttribute)
                                  -        {
                                  -            var innerOptions = FBL.trim(script.innerHTML);
                                  -            if (innerOptions)
                                  -            {
                                  -                var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -                
                                  -                for (var name in innerOptionsObject)
                                  -                {
                                  -                    var value = innerOptionsObject[name];
                                  -                    
                                  -                    if (name == "debug")
                                  -                    {
                                  -                        Env.isDebugMode = !!value;
                                  -                    }
                                  -                    else if (name in Env.Options)
                                  -                    {
                                  -                        Env.Options[name] = value;
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        Env[name] = value;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (!Env.Options.saveCookies)
                                  -            FBL.Store.remove("FirebugLite");
                                  -        
                                  -        // process the Debug Mode
                                  -        if (Env.isDebugMode)
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -            Env.Options.enableTrace = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); };
                                  -};
                                  -
                                  -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.descend = function(prototypeParent, childProperties)
                                  -{
                                  -    function protoSetter() {};
                                  -    protoSetter.prototype = prototypeParent;
                                  -    var newOb = new protoSetter();
                                  -    for (var n in childProperties)
                                  -        newOb[n] = childProperties[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = this.createElement("link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -};
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -this.appendStylesheet = function(doc, uri)
                                  -{
                                  -    // Make sure the stylesheet is not appended twice.
                                  -    if (this.$(uri, doc))
                                  -        return;
                                  -
                                  -    var styleSheet = this.createStyleSheet(doc, uri);
                                  -    styleSheet.setAttribute("id", uri);
                                  -    this.addStyleSheet(doc, styleSheet);
                                  -};
                                  -
                                  -this.addScript = function(doc, id, src)
                                  -{
                                  -    var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
                                  -    element.setAttribute("type", "text/javascript");
                                  -    element.setAttribute("id", id);
                                  -    if (!FBTrace.DBG_CONSOLE)
                                  -        FBL.unwrapObject(element).firebugIgnore = true;
                                  -
                                  -    element.innerHTML = src;
                                  -    if (doc.documentElement)
                                  -        doc.documentElement.appendChild(element);
                                  -    else
                                  -    {
                                  -        // See issue 1079, the svg test case gives this error
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.addScript doc has no documentElement:", doc);
                                  -    }
                                  -    return element;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getStyle = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Whitespace and Entity conversions
                                  -
                                  -var entityConversionLists = this.entityConversionLists = {
                                  -    normal : {
                                  -        whitespace : {
                                  -            '\t' : '\u200c\u2192',
                                  -            '\n' : '\u200c\u00b6',
                                  -            '\r' : '\u200c\u00ac',
                                  -            ' '  : '\u200c\u00b7'
                                  -        }
                                  -    },
                                  -    reverse : {
                                  -        whitespace : {
                                  -            '&Tab;' : '\t',
                                  -            '&NewLine;' : '\n',
                                  -            '\u200c\u2192' : '\t',
                                  -            '\u200c\u00b6' : '\n',
                                  -            '\u200c\u00ac' : '\r',
                                  -            '\u200c\u00b7' : ' '
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var normal = entityConversionLists.normal,
                                  -    reverse = entityConversionLists.reverse;
                                  -
                                  -function addEntityMapToList(ccode, entity)
                                  -{
                                  -    var lists = Array.prototype.slice.call(arguments, 2),
                                  -        len = lists.length,
                                  -        ch = String.fromCharCode(ccode);
                                  -    for (var i = 0; i < len; i++)
                                  -    {
                                  -        var list = lists[i];
                                  -        normal[list]=normal[list] || {};
                                  -        normal[list][ch] = '&' + entity + ';';
                                  -        reverse[list]=reverse[list] || {};
                                  -        reverse[list]['&' + entity + ';'] = ch;
                                  -    }
                                  -};
                                  -
                                  -var e = addEntityMapToList,
                                  -    white = 'whitespace',
                                  -    text = 'text',
                                  -    attr = 'attributes',
                                  -    css = 'css',
                                  -    editor = 'editor';
                                  -
                                  -e(0x0022, 'quot', attr, css);
                                  -e(0x0026, 'amp', attr, text, css);
                                  -e(0x0027, 'apos', css);
                                  -e(0x003c, 'lt', attr, text, css);
                                  -e(0x003e, 'gt', attr, text, css);
                                  -e(0xa9, 'copy', text, editor);
                                  -e(0xae, 'reg', text, editor);
                                  -e(0x2122, 'trade', text, editor);
                                  -
                                  -// See http://en.wikipedia.org/wiki/Dash
                                  -e(0x2012, '#8210', attr, text, editor); // figure dash
                                  -e(0x2013, 'ndash', attr, text, editor); // en dash
                                  -e(0x2014, 'mdash', attr, text, editor); // em dash
                                  -e(0x2015, '#8213', attr, text, editor); // horizontal bar
                                  -
                                  -e(0x00a0, 'nbsp', attr, text, white, editor);
                                  -e(0x2002, 'ensp', attr, text, white, editor);
                                  -e(0x2003, 'emsp', attr, text, white, editor);
                                  -e(0x2009, 'thinsp', attr, text, white, editor);
                                  -e(0x200c, 'zwnj', attr, text, white, editor);
                                  -e(0x200d, 'zwj', attr, text, white, editor);
                                  -e(0x200e, 'lrm', attr, text, white, editor);
                                  -e(0x200f, 'rlm', attr, text, white, editor);
                                  -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP)
                                  -
                                  -//************************************************************************************************
                                  -// Entity escaping
                                  -
                                  -var entityConversionRegexes = {
                                  -        normal : {},
                                  -        reverse : {}
                                  -    };
                                  -
                                  -var escapeEntitiesRegEx = {
                                  -    normal : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('([' + chars.join('') + '])', 'gm');
                                  -    },
                                  -    reverse : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('(' + chars.join('|') + ')', 'gm');
                                  -    }
                                  -};
                                  -
                                  -function getEscapeRegexp(direction, lists)
                                  -{
                                  -    var name = '', re;
                                  -    var groups = [].concat(lists);
                                  -    for (i = 0; i < groups.length; i++)
                                  -    {
                                  -        name += groups[i].group;
                                  -    }
                                  -    re = entityConversionRegexes[direction][name];
                                  -    if (!re)
                                  -    {
                                  -        var list = {};
                                  -        if (groups.length > 1)
                                  -        {
                                  -            for ( var i = 0; i < groups.length; i++)
                                  -            {
                                  -                var aList = entityConversionLists[direction][groups[i].group];
                                  -                for ( var item in aList)
                                  -                    list[item] = aList[item];
                                  -            }
                                  -        } else if (groups.length==1)
                                  -        {
                                  -            list = entityConversionLists[direction][groups[0].group]; // faster for special case
                                  -        } else {
                                  -            list = {}; // perhaps should print out an error here?
                                  -        }
                                  -        re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
                                  -    }
                                  -    return re;
                                  -};
                                  -
                                  -function createSimpleEscape(name, direction)
                                  -{
                                  -    return function(value)
                                  -    {
                                  -        var list = entityConversionLists[direction][name];
                                  -        return String(value).replace(
                                  -                getEscapeRegexp(direction, {
                                  -                    group : name,
                                  -                    list : list
                                  -                }),
                                  -                function(ch)
                                  -                {
                                  -                    return list[ch];
                                  -                }
                                  -               );
                                  -    };
                                  -};
                                  -
                                  -function escapeGroupsForEntities(str, lists)
                                  -{
                                  -    lists = [].concat(lists);
                                  -    var re = getEscapeRegexp('normal', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list, last = '';
                                  -    if (!len)
                                  -        return [ {
                                  -            str : String(str),
                                  -            group : '',
                                  -            name : ''
                                  -        } ];
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.normal[list.group][cur];
                                  -            // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space
                                  -            //     r = ' ';
                                  -            if (r)
                                  -            {
                                  -                results[ri] = {
                                  -                    'str' : r,
                                  -                    'class' : list['class'],
                                  -                    'extra' : list.extra[cur] ? list['class']
                                  -                            + list.extra[cur] : ''
                                  -                };
                                  -                break;
                                  -            }
                                  -        }
                                  -        // last=cur;
                                  -        if (!r)
                                  -            results[ri] = {
                                  -                'str' : cur,
                                  -                'class' : '',
                                  -                'extra' : ''
                                  -            };
                                  -        ri++;
                                  -    }
                                  -    return results;
                                  -};
                                  -
                                  -this.escapeGroupsForEntities = escapeGroupsForEntities;
                                  -
                                  -
                                  -function unescapeEntities(str, lists)
                                  -{
                                  -    var re = getEscapeRegexp('reverse', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list;
                                  -    if (!len)
                                  -        return str;
                                  -    lists = [].concat(lists);
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.reverse[list.group][cur];
                                  -            if (r)
                                  -            {
                                  -                results[ri] = r;
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (!r)
                                  -            results[ri] = cur;
                                  -        ri++;
                                  -    }
                                  -    return results.join('') || '';
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal');
                                  -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal');
                                  -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal');
                                  -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal');
                                  -
                                  -// deprecated compatibility functions
                                  -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal');
                                  -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse');
                                  -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML);
                                  -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML);
                                  -
                                  -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal');
                                  -
                                  -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse');
                                  -
                                  -this.unescapeForTextNode = function(str)
                                  -{
                                  -    if (Firebug.showTextNodesWithWhitespace)
                                  -        str = unescapeWhitespace(str);
                                  -    if (!Firebug.showTextNodesWithEntities)
                                  -        str = escapeForElementAttribute(str);
                                  -    return str;
                                  -};
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -this.splitLines = function(text)
                                  -{
                                  -    var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
                                  -    var lines;
                                  -    if (text.match)
                                  -    {
                                  -        lines = text.match(reSplitLines2);
                                  -    }
                                  -    else
                                  -    {
                                  -        var str = text+"";
                                  -        lines = str.match(reSplitLines2);
                                  -    }
                                  -    lines.pop();
                                  -    return lines;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -    {
                                  -        try
                                  -        {
                                  -            // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -            return ob + "";
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            FBTrace.sysout("Lib.safeToString() failed for ", ob);
                                  -            return "";
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // xxxpedro it is not safe to use ob+""?
                                  -        return ob + "";
                                  -        ///return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.hasProperties = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getStyle(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, 
                                  -    // but it is causing a bug (the element disappears when you set the "collapsed" 
                                  -    // attribute, but it doesn't appear when you remove the attribute. So, for those
                                  -    // cases, we need to use the class attribute.
                                  -    if (this.isIElt8)
                                  -    {
                                  -        if (collapsed)
                                  -            this.setClass(elt, "collapsed");
                                  -        else
                                  -            this.removeClass(elt, "collapsed");
                                  -    }
                                  -    else
                                  -        elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    var addOffset = function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, "");
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (elt.offsetLeft)
                                  -            ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -            coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft");
                                  -        if (elt.offsetTop)
                                  -            ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -            coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop");
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else
                                  -        {
                                  -            var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -            // IE will fail when reading the frameElement property of a popup window.
                                  -            // We don't need it anyway once it is outside the (popup) viewport, so we're
                                  -            // ignoring the frameElement check when the window is a popup
                                  -            if (!otherView.opener && otherView.frameElement)
                                  -                addOffset(otherView.frameElement, coords, otherView);
                                  -        }
                                  -    };
                                  -
                                  -    var isIE = this.isIE;
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) };
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS
                                  -
                                  -var cssKeywordMap = null;
                                  -var cssPropNames = null;
                                  -var cssColorNames = null;
                                  -var imageRules = null;
                                  -
                                  -this.getCSSKeywordsByProperty = function(propName)
                                  -{
                                  -    if (!cssKeywordMap)
                                  -    {
                                  -        cssKeywordMap = {};
                                  -
                                  -        for (var name in this.cssInfo)
                                  -        {
                                  -            var list = [];
                                  -
                                  -            var types = this.cssInfo[name];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -            {
                                  -                var keywords = this.cssKeywords[types[i]];
                                  -                if (keywords)
                                  -                    list.push.apply(list, keywords);
                                  -            }
                                  -
                                  -            cssKeywordMap[name] = list;
                                  -        }
                                  -    }
                                  -
                                  -    return propName in cssKeywordMap ? cssKeywordMap[propName] : [];
                                  -};
                                  -
                                  -this.getCSSPropertyNames = function()
                                  -{
                                  -    if (!cssPropNames)
                                  -    {
                                  -        cssPropNames = [];
                                  -
                                  -        for (var name in this.cssInfo)
                                  -            cssPropNames.push(name);
                                  -    }
                                  -
                                  -    return cssPropNames;
                                  -};
                                  -
                                  -this.isColorKeyword = function(keyword)
                                  -{
                                  -    if (keyword == "transparent")
                                  -        return false;
                                  -
                                  -    if (!cssColorNames)
                                  -    {
                                  -        cssColorNames = [];
                                  -
                                  -        var colors = this.cssKeywords["color"];
                                  -        for (var i = 0; i < colors.length; ++i)
                                  -            cssColorNames.push(colors[i].toLowerCase());
                                  -
                                  -        var systemColors = this.cssKeywords["systemColor"];
                                  -        for (var i = 0; i < systemColors.length; ++i)
                                  -            cssColorNames.push(systemColors[i].toLowerCase());
                                  -    }
                                  -
                                  -    return cssColorNames.indexOf ? // Array.indexOf is not available in IE
                                  -            cssColorNames.indexOf(keyword.toLowerCase()) != -1 :
                                  -            (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.isImageRule = function(rule)
                                  -{
                                  -    if (!imageRules)
                                  -    {
                                  -        imageRules = [];
                                  -
                                  -        for (var i in this.cssInfo)
                                  -        {
                                  -            var r = i.toLowerCase();
                                  -            var suffix = "image";
                                  -            if (r.match(suffix + "$") == suffix || r == "background")
                                  -                imageRules.push(r);
                                  -        }
                                  -    }
                                  -
                                  -    return imageRules.indexOf ? // Array.indexOf is not available in IE
                                  -            imageRules.indexOf(rule.toLowerCase()) != -1 :
                                  -            (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.copyTextStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.fontFamily = style.fontFamily;
                                  -        
                                  -        // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE
                                  -        // returns wrong computed styles for inherited properties (like font-*)
                                  -        //
                                  -        // Also would be good to create a FBL.getStyle() 
                                  -        toNode.style.fontSize = style.fontSize;
                                  -        toNode.style.fontWeight = style.fontWeight;
                                  -        toNode.style.fontStyle = style.fontStyle;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.copyBoxStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.marginTop = style.marginTop;
                                  -        toNode.style.marginRight = style.marginRight;
                                  -        toNode.style.marginBottom = style.marginBottom;
                                  -        toNode.style.marginLeft = style.marginLeft;
                                  -        toNode.style.borderTopWidth = style.borderTopWidth;
                                  -        toNode.style.borderRightWidth = style.borderRightWidth;
                                  -        toNode.style.borderBottomWidth = style.borderBottomWidth;
                                  -        toNode.style.borderLeftWidth = style.borderLeftWidth;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.readBoxStyles = function(style)
                                  -{
                                  -    var styleNames = {
                                  -        "margin-top": "marginTop", "margin-right": "marginRight",
                                  -        "margin-left": "marginLeft", "margin-bottom": "marginBottom",
                                  -        "border-top-width": "borderTop", "border-right-width": "borderRight",
                                  -        "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
                                  -        "padding-top": "paddingTop", "padding-right": "paddingRight",
                                  -        "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
                                  -        "z-index": "zIndex"
                                  -    };
                                  -
                                  -    var styles = {};
                                  -    for (var styleName in styleNames)
                                  -        styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
                                  -    if (FBTrace.DBG_INSPECT)
                                  -        FBTrace.sysout("readBoxStyles ", styles);
                                  -    return styles;
                                  -};
                                  -
                                  -this.getBoxFromStyles = function(style, element)
                                  -{
                                  -    var args = this.readBoxStyles(style);
                                  -    args.width = element.offsetWidth
                                  -        - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -    args.height = element.offsetHeight
                                  -        - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -    return args;
                                  -};
                                  -
                                  -this.getElementCSSSelector = function(element)
                                  -{
                                  -    var label = element.localName.toLowerCase();
                                  -    if (element.id)
                                  -        label += "#" + element.id;
                                  -    if (element.hasAttribute("class"))
                                  -        label += "." + element.getAttribute("class").split(" ")[0];
                                  -
                                  -    return label;
                                  -};
                                  -
                                  -this.getURLForStyleSheet= function(styleSheet)
                                  -{
                                  -    //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null.
                                  -    return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
                                  -};
                                  -
                                  -this.getDocumentForStyleSheet = function(styleSheet)
                                  -{
                                  -    while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
                                  -    {
                                  -        styleSheet = styleSheet.parentStyleSheet;
                                  -    }
                                  -    if (styleSheet.ownerNode)
                                  -      return styleSheet.ownerNode.ownerDocument;
                                  -};
                                  -
                                  -/**
                                  - * Retrieves the instance number for a given style sheet. The instance number
                                  - * is sheet's index within the set of all other sheets whose URL is the same.
                                  - */
                                  -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
                                  -{
                                  -    // System URLs are always unique (or at least we are making this assumption)
                                  -    if (FBL.isSystemStyleSheet(styleSheet))
                                  -        return 0;
                                  -
                                  -    // ownerDocument is an optional hint for performance
                                  -    if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument);
                                  -    ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet);
                                  -
                                  -    var ret = 0,
                                  -        styleSheets = ownerDocument.styleSheets,
                                  -        href = styleSheet.href;
                                  -    for (var i = 0; i < styleSheets.length; i++)
                                  -    {
                                  -        var curSheet = styleSheets[i];
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode)));
                                  -        if (curSheet == styleSheet)
                                  -            break;
                                  -        if (curSheet.href == href)
                                  -            ret++;
                                  -    }
                                  -    return ret;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// HTML and XML Serialization
                                  -
                                  -
                                  -var getElementType = this.getElementType = function(node)
                                  -{
                                  -    if (isElementXUL(node))
                                  -        return 'xul';
                                  -    else if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else if (isElementXHTML(node))
                                  -        return 'xhtml';
                                  -    else if (isElementHTML(node))
                                  -        return 'html';
                                  -};
                                  -
                                  -var getElementSimpleType = this.getElementSimpleType = function(node)
                                  -{
                                  -    if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else
                                  -        return 'html';
                                  -};
                                  -
                                  -var isElementHTML = this.isElementHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toUpperCase();
                                  -};
                                  -
                                  -var isElementXHTML = this.isElementXHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toLowerCase();
                                  -};
                                  -
                                  -var isElementMathML = this.isElementMathML = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
                                  -};
                                  -
                                  -var isElementSVG = this.isElementSVG = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/2000/svg';
                                  -};
                                  -
                                  -var isElementXUL = this.isElementXUL = function(node)
                                  -{
                                  -    return node instanceof XULElement;
                                  -};
                                  -
                                  -this.isSelfClosing = function(element)
                                  -{
                                  -    if (isElementSVG(element) || isElementMathML(element))
                                  -        return true;
                                  -    var tag = element.localName.toLowerCase();
                                  -    return (this.selfClosingTags.hasOwnProperty(tag));
                                  -};
                                  -
                                  -this.getElementHTML = function(element)
                                  -{
                                  -    var self=this;
                                  -    function toHTML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            html.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                html.push('>');
                                  -
                                  -                var pureText=true;
                                  -                for (var child = element.firstChild; child; child = child.nextSibling)
                                  -                    pureText=pureText && (child.nodeType == Node.TEXT_NODE);
                                  -
                                  -                if (pureText)
                                  -                    html.push(escapeForHtmlEditor(elt.textContent));
                                  -                else {
                                  -                    for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                        toHTML(child);
                                  -                }
                                  -
                                  -                html.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else if (isElementSVG(elt) || isElementMathML(elt))
                                  -            {
                                  -                html.push('/>');
                                  -            }
                                  -            else if (self.isSelfClosing(elt))
                                  -            {
                                  -                html.push((isElementXHTML(elt))?'/>':'>');
                                  -            }
                                  -            else
                                  -            {
                                  -                html.push('></', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            html.push(escapeForTextNode(elt.textContent));
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            html.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            html.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var html = [];
                                  -    toHTML(element);
                                  -    return html.join("");
                                  -};
                                  -
                                  -this.getElementXML = function(element)
                                  -{
                                  -    function toXML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            xml.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                xml.push('>');
                                  -
                                  -                for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                    toXML(child);
                                  -
                                  -                xml.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else
                                  -                xml.push('/>');
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            xml.push(elt.nodeValue);
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            xml.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            xml.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var xml = [];
                                  -    toXML(element);
                                  -    return xml.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.old_hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document);
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.isAncestor = function(node, potentialAncestor)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (parent == potentialAncestor)
                                  -            return true;
                                  -    }
                                  -
                                  -    return false;
                                  -};
                                  -
                                  -this.getNextElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.nextSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getPreviousElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.previousSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.findNextDown = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (criteria(child))
                                  -            return child;
                                  -
                                  -        var next = this.findNextDown(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -};
                                  -
                                  -this.findPreviousUp = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.lastChild; child; child = child.previousSibling)
                                  -    {
                                  -        var next = this.findPreviousUp(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -
                                  -        if (criteria(child))
                                  -            return child;
                                  -    }
                                  -};
                                  -
                                  -this.findNext = function(node, criteria, upOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    if (!upOnly)
                                  -    {
                                  -        var next = this.findNextDown(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
                                  -    {
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -
                                  -        var next = this.findNextDown(sib, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -        return this.findNext(node.parentNode, criteria, true);
                                  -};
                                  -
                                  -this.findPrevious = function(node, criteria, downOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
                                  -    {
                                  -        var prev = this.findPreviousUp(sib, criteria);
                                  -        if (prev)
                                  -            return prev;
                                  -
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -    }
                                  -
                                  -    if (!downOnly)
                                  -    {
                                  -        var next = this.findPreviousUp(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -    {
                                  -        if (criteria(node.parentNode))
                                  -            return node.parentNode;
                                  -
                                  -        return this.findPrevious(node.parentNode, criteria, true);
                                  -    }
                                  -};
                                  -
                                  -this.getNextByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findNext(root, iter);
                                  -};
                                  -
                                  -this.getPreviousByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findPrevious(root, iter);
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Modification
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API 
                                  -var appendFragment = null;
                                  -
                                  -this.appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE 
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -    
                                  -    var doc = element.ownerDocument;
                                  -    
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -    
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -        
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -        
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -        
                                  -        div = null;
                                  -    }
                                  -    
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.safeGetWindowLocation = function(window)
                                  -{
                                  -    try
                                  -    {
                                  -        if (window)
                                  -        {
                                  -            if (window.closed)
                                  -                return "(window.closed)";
                                  -            if ("location" in window)
                                  -                return window.location+"";
                                  -            else
                                  -                return "(no window.location)";
                                  -        }
                                  -        else
                                  -            return "(no context.window)";
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
                                  -        return "(getWindowLocation: "+exc+")";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && // others
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 4 : // IE "click" and "dblclick" button model
                                  -            event.button == 1) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 2 : // IE "click" and "dblclick" button model
                                  -            event.button == 2) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isAlt = function(event)
                                  -{
                                  -    return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isAltClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isAlt(event);
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, useCapture);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    if (!listeners) return;
                                  -    
                                  -    try
                                  -    {/**/
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -    }
                                  -    /**/
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;";
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    if (!url)
                                  -        return null;
                                  -
                                  -    // Remove query string from the URL if any.
                                  -    var queryString = url.indexOf("?");
                                  -    if (queryString != -1)
                                  -        url = url.substr(0, queryString);
                                  -
                                  -    // Now get the file extension.
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.isSystemStyleSheet = function(sheet)
                                  -{
                                  -    var href = sheet && sheet.href;
                                  -    return href && FBL.isSystemURL(href);
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ",";
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^\/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^\/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters
                                  -// as in response/request headers and get/post parameters in Net module?
                                  -this.parseURLParamsArray = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedTextArray(search);
                                  -};
                                  -
                                  -this.parseURLEncodedTextArray = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [""]});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL = function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    ///var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        ///jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -        
                                  -        //jsonObject = Firebug.context.eval(jsonString);
                                  -        jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;});
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        /***
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {/**/
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        ///}
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Caret Position
                                  -
                                  -this.setSelectionRange = function(input, start, length)
                                  -{
                                  -    if (input.createTextRange)
                                  -    {
                                  -        var range = input.createTextRange(); 
                                  -        range.moveStart("character", start); 
                                  -        range.moveEnd("character", length - input.value.length); 
                                  -        range.select();
                                  -    }
                                  -    else if (input.setSelectionRange)
                                  -    {
                                  -        input.setSelectionRange(start, length);
                                  -        input.focus();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Selection Start / Caret Position
                                  -
                                  -this.getInputSelectionStart = function(input)
                                  -{
                                  -    if (document.selection)
                                  -    {
                                  -        var range = input.ownerDocument.selection.createRange();
                                  -        var text = range.text;
                                  -        
                                  -        //console.log("range", range.text);
                                  -        
                                  -        // if there is a selection, find the start position
                                  -        if (text)
                                  -        {
                                  -            return input.value.indexOf(text);
                                  -        }
                                  -        // if there is no selection, find the caret position
                                  -        else
                                  -        {
                                  -            range.moveStart("character", -input.value.length);
                                  -            
                                  -            return range.text.length;
                                  -        }
                                  -    }
                                  -    else if (typeof input.selectionStart != "undefined")
                                  -        return input.selectionStart;
                                  -    
                                  -    return 0;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    try
                                  -    {
                                  -        // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -        return toString.call(object) === "[object Function]" || 
                                  -                this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -        FBTrace.sysout("Lib.isFunction() failed for ", object);
                                  -        return false;
                                  -    }
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is accessible in the window, uses the native instanceof operator
                                  -        // if the instanceof evaluates to "true" we can assume it is a instance, but if it
                                  -        // evaluates to "false" we must continue with the duck type detection below because
                                  -        // the native object may be extended, thus breaking the instanceof result 
                                  -        // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -        if (className in win && object instanceof win[className])
                                  -            return true;
                                  -    }
                                  -    // If the object doesn't have the ownerDocument property, we'll try to look at
                                  -    // the current context's window
                                  -    else
                                  -    {
                                  -        // TODO: xxxpedro context
                                  -        // Since we're not using yet a Firebug.context, we'll just use the top window
                                  -        // (browser) as a reference
                                  -        var win = Firebug.browser.window;
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    // get the duck type model from the cache 
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    // starts the hacky duck type detection
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            // avoid problems with extended native objects
                                  -            // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -            if (!obj.hasOwnProperty(name))
                                  -                continue;
                                  -            
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    CSSStyleRule:
                                  -    {
                                  -        property: ["selectorText", "style"]
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -/*
                                  -
                                  -Problems:
                                  -
                                  -  - IE does not have window.Node, window.Element, etc
                                  -  - for (var name in Node.prototype) return nothing on FF
                                  -
                                  -*/
                                  -
                                  -
                                  -var domMemberMap2 = {};
                                  -
                                  -var domMemberMap2Sandbox = null;
                                  -
                                  -var getDomMemberMap2 = function(name)
                                  -{
                                  -    if (!domMemberMap2Sandbox)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var frame = doc.createElement("iframe");
                                  -        
                                  -        frame.id = "FirebugSandbox";
                                  -        frame.style.display = "none";
                                  -        frame.src = "about:blank";
                                  -        
                                  -        doc.body.appendChild(frame);
                                  -        
                                  -        domMemberMap2Sandbox = frame.window || frame.contentWindow;
                                  -    }
                                  -    
                                  -    var props = [];
                                  -    
                                  -    //var object = domMemberMap2Sandbox[name];
                                  -    //object = object.prototype || object;
                                  -    
                                  -    var object = null;
                                  -    
                                  -    if (name == "Window")
                                  -        object = domMemberMap2Sandbox.window;
                                  -    
                                  -    else if (name == "Document")
                                  -        object = domMemberMap2Sandbox.document;
                                  -        
                                  -    else if (name == "HTMLScriptElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("script");
                                  -    
                                  -    else if (name == "HTMLAnchorElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("a");
                                  -    
                                  -    else if (name.indexOf("Element") != -1)
                                  -    {
                                  -        object = domMemberMap2Sandbox.document.createElement("div");
                                  -    }
                                  -    
                                  -    if (object)
                                  -    {
                                  -        //object = object.prototype || object;
                                  -        
                                  -        //props  = 'addEventListener,document,location,navigator,window'.split(',');
                                  -        
                                  -        for (var n in object)
                                  -          props.push(n);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return props;
                                  -    return extendArray(props, domMemberMap[name]);
                                  -};
                                  -
                                  -// xxxpedro experimental get DOM members
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        FBL.domMemberCache = domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = getDomMemberMap2(name);
                                  -            var cache = domMemberCache[name] = {};
                                  -            
                                  -            /*
                                  -            if (name.indexOf("Element") != -1)
                                  -            {
                                  -                this.append(cache, this.getDOMMembers("Node"));
                                  -                this.append(cache, this.getDOMMembers("Element"));
                                  -            }
                                  -            /**/
                                  -            
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument"))
                                  -            { return domMemberCache.Document; }
                                  -        else if (this.instanceOf(object, "Location"))
                                  -            { return domMemberCache.Location; }
                                  -        else if (this.instanceOf(object, "HTMLImageElement"))
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (this.instanceOf(object, "HTMLAnchorElement"))
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (this.instanceOf(object, "HTMLInputElement"))
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (this.instanceOf(object, "HTMLButtonElement"))
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (this.instanceOf(object, "HTMLFormElement"))
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (this.instanceOf(object, "HTMLBodyElement"))
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (this.instanceOf(object, "HTMLHtmlElement"))
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (this.instanceOf(object, "HTMLScriptElement"))
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableElement"))
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableRowElement"))
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableCellElement"))
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (this.instanceOf(object, "HTMLIFrameElement"))
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (this.instanceOf(object, "SVGSVGElement"))
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (this.instanceOf(object, "SVGElement"))
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (this.instanceOf(object, "Element"))
                                  -            { return domMemberCache.Element; }
                                  -        else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection"))
                                  -            { return domMemberCache.Text; }
                                  -        else if (this.instanceOf(object, "Attr"))
                                  -            { return domMemberCache.Attr; }
                                  -        else if (this.instanceOf(object, "Node"))
                                  -            { return domMemberCache.Node; }
                                  -        else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy"))
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getDOMMembers FAILED ", E);
                                  -        
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -
                                  -/*
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap"
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -this.selfClosingTags =
                                  -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "area": 1,
                                  -    "base": 1,
                                  -    "col": 1,
                                  -    "input": 1,
                                  -    "img": 1,
                                  -    "br": 1,
                                  -    "hr": 1,
                                  -    "param":1,
                                  -    "embed":1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -    "PARAM": 1,
                                  -    "COL": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1,
                                  -    "param": 1,
                                  -    "col": 1
                                  -    /*
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -if (typeof KeyEvent == "undefined") {
                                  -    this.KeyEvent = {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        DOM_VK_SHIFT: 16,
                                  -        DOM_VK_CONTROL: 17,
                                  -        DOM_VK_ALT: 18,
                                  -        DOM_VK_PAUSE: 19,
                                  -        DOM_VK_CAPS_LOCK: 20,
                                  -        DOM_VK_ESCAPE: 27,
                                  -        DOM_VK_SPACE: 32,
                                  -        DOM_VK_PAGE_UP: 33,
                                  -        DOM_VK_PAGE_DOWN: 34,
                                  -        DOM_VK_END: 35,
                                  -        DOM_VK_HOME: 36,
                                  -        DOM_VK_LEFT: 37,
                                  -        DOM_VK_UP: 38,
                                  -        DOM_VK_RIGHT: 39,
                                  -        DOM_VK_DOWN: 40,
                                  -        DOM_VK_PRINTSCREEN: 44,
                                  -        DOM_VK_INSERT: 45,
                                  -        DOM_VK_DELETE: 46,
                                  -        DOM_VK_0: 48,
                                  -        DOM_VK_1: 49,
                                  -        DOM_VK_2: 50,
                                  -        DOM_VK_3: 51,
                                  -        DOM_VK_4: 52,
                                  -        DOM_VK_5: 53,
                                  -        DOM_VK_6: 54,
                                  -        DOM_VK_7: 55,
                                  -        DOM_VK_8: 56,
                                  -        DOM_VK_9: 57,
                                  -        DOM_VK_SEMICOLON: 59,
                                  -        DOM_VK_EQUALS: 61,
                                  -        DOM_VK_A: 65,
                                  -        DOM_VK_B: 66,
                                  -        DOM_VK_C: 67,
                                  -        DOM_VK_D: 68,
                                  -        DOM_VK_E: 69,
                                  -        DOM_VK_F: 70,
                                  -        DOM_VK_G: 71,
                                  -        DOM_VK_H: 72,
                                  -        DOM_VK_I: 73,
                                  -        DOM_VK_J: 74,
                                  -        DOM_VK_K: 75,
                                  -        DOM_VK_L: 76,
                                  -        DOM_VK_M: 77,
                                  -        DOM_VK_N: 78,
                                  -        DOM_VK_O: 79,
                                  -        DOM_VK_P: 80,
                                  -        DOM_VK_Q: 81,
                                  -        DOM_VK_R: 82,
                                  -        DOM_VK_S: 83,
                                  -        DOM_VK_T: 84,
                                  -        DOM_VK_U: 85,
                                  -        DOM_VK_V: 86,
                                  -        DOM_VK_W: 87,
                                  -        DOM_VK_X: 88,
                                  -        DOM_VK_Y: 89,
                                  -        DOM_VK_Z: 90,
                                  -        DOM_VK_CONTEXT_MENU: 93,
                                  -        DOM_VK_NUMPAD0: 96,
                                  -        DOM_VK_NUMPAD1: 97,
                                  -        DOM_VK_NUMPAD2: 98,
                                  -        DOM_VK_NUMPAD3: 99,
                                  -        DOM_VK_NUMPAD4: 100,
                                  -        DOM_VK_NUMPAD5: 101,
                                  -        DOM_VK_NUMPAD6: 102,
                                  -        DOM_VK_NUMPAD7: 103,
                                  -        DOM_VK_NUMPAD8: 104,
                                  -        DOM_VK_NUMPAD9: 105,
                                  -        DOM_VK_MULTIPLY: 106,
                                  -        DOM_VK_ADD: 107,
                                  -        DOM_VK_SEPARATOR: 108,
                                  -        DOM_VK_SUBTRACT: 109,
                                  -        DOM_VK_DECIMAL: 110,
                                  -        DOM_VK_DIVIDE: 111,
                                  -        DOM_VK_F1: 112,
                                  -        DOM_VK_F2: 113,
                                  -        DOM_VK_F3: 114,
                                  -        DOM_VK_F4: 115,
                                  -        DOM_VK_F5: 116,
                                  -        DOM_VK_F6: 117,
                                  -        DOM_VK_F7: 118,
                                  -        DOM_VK_F8: 119,
                                  -        DOM_VK_F9: 120,
                                  -        DOM_VK_F10: 121,
                                  -        DOM_VK_F11: 122,
                                  -        DOM_VK_F12: 123,
                                  -        DOM_VK_F13: 124,
                                  -        DOM_VK_F14: 125,
                                  -        DOM_VK_F15: 126,
                                  -        DOM_VK_F16: 127,
                                  -        DOM_VK_F17: 128,
                                  -        DOM_VK_F18: 129,
                                  -        DOM_VK_F19: 130,
                                  -        DOM_VK_F20: 131,
                                  -        DOM_VK_F21: 132,
                                  -        DOM_VK_F22: 133,
                                  -        DOM_VK_F23: 134,
                                  -        DOM_VK_F24: 135,
                                  -        DOM_VK_NUM_LOCK: 144,
                                  -        DOM_VK_SCROLL_LOCK: 145,
                                  -        DOM_VK_COMMA: 188,
                                  -        DOM_VK_PERIOD: 190,
                                  -        DOM_VK_SLASH: 191,
                                  -        DOM_VK_BACK_QUOTE: 192,
                                  -        DOM_VK_OPEN_BRACKET: 219,
                                  -        DOM_VK_BACK_SLASH: 220,
                                  -        DOM_VK_CLOSE_BRACKET: 221,
                                  -        DOM_VK_QUOTE: 222,
                                  -        DOM_VK_META: 224
                                  -    };
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -/**
                                  - * @namespace
                                  - */
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = FBL.getNativeXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Create a AJAX request.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Asynchronous flag. Default is "true".   
                                  -     * @param {String}   options.dataType      Data type ("text", "html", "xml" or "json"). Default is "text".
                                  -     * @param {String}   options.contentType   Content-type of the data being sent. Default is "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     onLoading callback
                                  -     * @param {Function} options.onLoaded      onLoaded callback
                                  -     * @param {Function} options.onInteractive onInteractive callback
                                  -     * @param {Function} options.onComplete    onComplete callback
                                  -     * @param {Function} options.onUpdate      onUpdate callback
                                  -     * @param {Function} options.onSuccess     onSuccess callback
                                  -     * @param {Function} options.onFailure     onFailure callback
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        // process options
                                  -        var o = FBL.extend(
                                  -                {
                                  -                    // default values
                                  -                    type: "get",
                                  -                    async: true,
                                  -                    dataType: "text",
                                  -                    contentType: "application/x-www-form-urlencoded"
                                  -                }, 
                                  -                options || {}
                                  -            );
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data;
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(var param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // open XHR object
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // indicates that it is a XHR request to the server
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // if data is being sent, sets the appropriate content-type
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -            t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // onreadystatechange handler
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // send the request
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Handles the state change
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * gets the appropriate response value according the type
                                  -     */
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText;
                                  -        else if (type == "text")  return t.responseText;
                                  -        else if (type == "html")  return t.responseText;
                                  -        else if (type == "xml")   return t.responseXML;
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * returns the current state of the XHR object
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        if (days)
                                  -        {
                                  -            var date = new Date();
                                  -            date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -            var expires = "; expires="+date.toGMTString();
                                  -        }
                                  -        else 
                                  -            var expires = "";
                                  -        
                                  -        document.cookie = name+"="+value+expires+"; path=/";
                                  -    }
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        var nameEQ = name + "=";
                                  -        var ca = document.cookie.split(';');
                                  -        
                                  -        for(var i=0; i < ca.length; i++)
                                  -        {
                                  -            var c = ca[i];
                                  -            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -        }
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_i18n */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    "NoMembersWarning": "There are no properties to show for this object.",
                                  -    
                                  -    "EmptyStyleSheet": "There are no rules in this stylesheet.",
                                  -    "EmptyElementCSS": "This element has no style rules.",
                                  -    "AccessRestricted": "Access to restricted URI denied.",
                                  -    
                                  -    "net.label.Parameters": "Parameters",
                                  -    "net.label.Source": "Source",
                                  -    "URLParameters": "Params",
                                  -    
                                  -    "EditStyle": "Edit Element Style...",
                                  -    "NewRule": "New Rule...",
                                  -    
                                  -    "NewProp": "New Property...",
                                  -    "EditProp": 'Edit "%s"',
                                  -    "DeleteProp": 'Delete "%s"',
                                  -    "DisableProp": 'Disable "%s"'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -
                                  -FBL.$STRF = function(name, args)
                                  -{
                                  -    if (!oSTR.hasOwnProperty(name)) return name;
                                  -    
                                  -    var format = oSTR[name];
                                  -    var objIndex = 0;
                                  -    
                                  -    var parts = parseFormat(format);
                                  -    var trialIndex = objIndex;
                                  -    var objects = args;
                                  -    
                                  -    for (var i= 0; i < parts.length; i++)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -            {
                                  -                format = "";
                                  -                objIndex = -1;
                                  -                parts.length = 0;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -    }
                                  -    
                                  -    var result = [];
                                  -    for (var i = 0; i < parts.length; ++i)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            result.push(""+args.shift());
                                  -        }
                                  -        else
                                  -            result.push(part);
                                  -    }
                                  -    
                                  -    return result.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var parseFormat = function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.5.0-flex-a2",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        Firebug.loadPrefs();
                                  -        Firebug.context.persistedState.isOpen = false;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets)
                                  -            FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document);
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Firebug.disableResourceFetching)
                                  -            Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " +
                                  -            		"resource fetching is disabled. To enabled it set the Firebug Lite option " +
                                  -            		"\"disableResourceFetching\" to \"false\". More info at " +
                                  -            		"http://getfirebug.com/firebuglite#Options"], 
                                  -            		Firebug.context, "warn");
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.DefaultOptions;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function()
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        var prefs = Store.get("FirebugLite") || {};
                                  -        var options = prefs.options;
                                  -        var persistedState = prefs.persistedState || FBL.defaultPersistedState;
                                  -        
                                  -        for (var name in options)
                                  -        {
                                  -            if (options.hasOwnProperty(name))
                                  -                Firebug[name] = options[name];
                                  -        }
                                  -        
                                  -        if (Firebug.context && persistedState)
                                  -            Firebug.context.persistedState = persistedState;
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var prefs = {
                                  -            options: {}
                                  -        };
                                  -        
                                  -        var EnvOptions = Env.Options;
                                  -        var options = prefs.options;
                                  -        for (var name in EnvOptions)
                                  -        {
                                  -            if (EnvOptions.hasOwnProperty(name))
                                  -            {
                                  -                options[name] = Firebug[name];
                                  -            }
                                  -        }
                                  -        
                                  -        var persistedState = Firebug.context.persistedState;
                                  -        if (!persistedState)
                                  -        {
                                  -            persistedState = Firebug.context.persistedState = FBL.defaultPersistedState;
                                  -        }
                                  -        
                                  -        prefs.persistedState = persistedState;
                                  -        
                                  -        Store.set("FirebugLite", prefs);
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        Store.remove("FirebugLite");
                                  -        this.restorePrefs();
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *  
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener 
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarContainer: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1-panelTabs");
                                  -        this.sidePanelBarContainer = $("fbPanelBar2-panelTabs");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel
                                  -        var container = this.parentPanel ? 
                                  -                Firebug.chrome.getSidePanelContainer() :
                                  -                Firebug.chrome.getPanelContainer(); 
                                  -        
                                  -        var panelNode = this.panelNode = createElement("div", {
                                  -            id: panelId,
                                  -            className: "fbPanel",
                                  -            document: container.ownerDocument
                                  -        });
                                  -
                                  -        container.appendChild(panelNode);            
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel Tab
                                  -        var tabNode = this.tabNode = createElement("span", {
                                  -            id: panelId + "Tab",
                                  -            className: "panelTab",
                                  -            innerHTML: this.title + '<span class="panelOptions">â–¼</span>'
                                  -        });
                                  -        
                                  -        /*
                                  -        var tabHTML = '<span class="panelTab">' + this.title + 
                                  -                '<span class="panelOptions">â–¼</span></span>';            
                                  -        
                                  -        var tabNode = this.tabNode = createElement("a", {
                                  -            id: panelId + "Tab",
                                  -            className: "fbTab fbHover",
                                  -            innerHTML: tabHTML
                                  -        });
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            tabNode.href = "javascript:void(0)";
                                  -        }
                                  -        /**/
                                  -        
                                  -        var panelBarNode = this.parentPanel ? 
                                  -                Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                this.panelBarNode;
                                  -        
                                  -        panelBarNode.appendChild(tabNode);
                                  -        tabNode.style.display = "block";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create ToolButtons
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = createElement("span", {
                                  -                id: panelId + "Buttons",
                                  -                className: "fbToolbarButtons"
                                  -            });
                                  -            
                                  -            $("fbMainToolbar").appendChild(this.toolButtonsNode);
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create StatusBar
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox")
                                  -                // FIXME xxxpedro chromenew
                                  -                || $("fbMainToolbar");
                                  -            
                                  -            this.statusBarNode = createElement("span", {
                                  -                id: panelId + "StatusBar",
                                  -                className: "fbToolbarButtons fbStatusBar"
                                  -            });
                                  -            
                                  -            this.statusBarBox.appendChild(this.statusBarNode);
                                  -        }
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        ///this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -        
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel = 
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : 
                                  -                Firebug.chrome.selectedPanel;
                                  -        
                                  -        Firebug.showInfoTips = true;
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        this.visible = true;
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -        
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -        
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu) 
                                  -            return;
                                  -        
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -            
                                  -            items: menu
                                  -        });
                                  -        
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -        
                                  -        return true;
                                  -        
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -        
                                  -        var screenY = 0;
                                  -        
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY; 
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -        
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *  
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        
                                  -        ///return m ? m[1] : label;
                                  -        
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE && 
                                  -                // safeToString() returns "[object]" for some objects like window.Image 
                                  -                (label == "[object]" || 
                                  -                // safeToString() returns undefined for some objects like window.clientInformation 
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_gui */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -/**@namespace*/
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -/**@namespace*/
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarContainer.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.shutdown();
                                  -                selectedPanel.hide();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                Firebug.context.persistedState.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.show();
                                  -            panel.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller 
                                  - *  
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -/**@extend FBL.Button.prototype*/
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.Button 
                                  - */
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype,
                                  -/**@extend FBL.IconButton.prototype*/ 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        _command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            item.label = $STR(item.label);
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - * 
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller
                                  - *   
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                Firebug.chrome.document.body,
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -/**@extend FBL.Menu.prototype*/
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked);
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var handler = null;
                                  -             
                                  -            // target.command can be a function or a string. 
                                  -            var cmd = target.command;
                                  -            
                                  -            // If it is a function it will be used as the handler
                                  -            if (isFunction(cmd))
                                  -                handler = cmd;
                                  -            // If it is a string it the property of the current menu object 
                                  -            // will be used as the handler
                                  -            else if (typeof cmd == "string")
                                  -                handler = this[cmd];
                                  -            
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -append(Menu,
                                  -/**@extend FBL.Menu*/
                                  -{
                                  -    register: function(object)
                                  -    {
                                  -        menuMap[object.id] = object;
                                  -    },
                                  -    
                                  -    check: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "true");
                                  -    },
                                  -    
                                  -    uncheck: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "");
                                  -    },
                                  -    
                                  -    disable: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuDisabled");
                                  -    },
                                  -    
                                  -    enable: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuDisabled");
                                  -    }
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -/**@class*/
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_context*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -
                                  -/** @class */
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    this.browser = Env.browser;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // partial-port of Firebug tabContext.js
                                  -    
                                  -    browser: null,
                                  -    loaded: true,
                                  -    
                                  -    setTimeout: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        if (win.setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        
                                  -        var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setTimeout.apply(win, arguments) :
                                  -                win.setTimeout(fn, delay);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setInterval.apply(win, arguments) :
                                  -                win.setInterval(fn, delay);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            
                                  -            // avoid error. need to create a better getPanel() function as explained below
                                  -            if (!Firebug.chrome || !Firebug.chrome.selectedPanel)
                                  -                return;
                                  -            
                                  -            //var panel = this.getPanel(panelName, true);
                                  -            //TODO: xxxpedro context how to get all panels using a single function?
                                  -            // the current workaround to make the invalidation works is invalidating
                                  -            // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -            var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                    Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                    null;
                                  -            
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                //var panel = this.getPanel(panelName, true);
                                  -                //TODO: xxxpedro context how to get all panels using a single function?
                                  -                // the current workaround to make the invalidation works is invalidating
                                  -                // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -                var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                        Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                        null;
                                  -
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var isObjectLiteral = trim(expr).indexOf("{") == 0,
                                  -            cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // If it is an object literal, then wrap the expression with parenthesis so we can 
                                  -            // capture the return value
                                  -            if (isObjectLiteral)
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ ("+expr+") }" :
                                  -                    "(" + expr + ")";
                                  -            }
                                  -            else
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            cmd = api ?
                                  -                // with API and context, no return value
                                  -                "(function(arguments){ with(" + api + "){ " +
                                  -                    expr + 
                                  -                " } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, no return value
                                  -                "(function(arguments){ " + 
                                  -                    expr + 
                                  -                " }).call(" + context + ",undefined)";
                                  -        }
                                  -        
                                  -        result = this.eval(cmd);
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg);
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        else if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -        
                                  -        else if (unit == "ex")
                                  -            return this.exToPixels(el, value);
                                  -        
                                  -        // TODO: add other units. Maybe create a better general way
                                  -        // to calculate measurements in different units.    
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        };
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getStyle: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbBtnInspect,
                                  -
                                  -    fbMainToolbarBox,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -
                                  -var panelBar1, panelBar2, panelContainer, sidePanelContainer, panelDocument, sidePanelDocument;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -// xxxpedro chromenew hack
                                  -Firebug.framesLoaded = 0;
                                  -var numberOfFramesToLoad = 3;
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    // FIXME xxxpedro chromenew: is this the right place to reset the framesLoaded?
                                  -    Firebug.framesLoaded = 0;
                                  -    
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getPanelContainer: function()
                                  -    {
                                  -        return panelContainer;
                                  -    },
                                  -    
                                  -    getSidePanelContainer: function()
                                  -    {
                                  -        return sidePanelContainer;
                                  -    },
                                  -    
                                  -    getPanelDocument: function(panelType)
                                  -    {
                                  -        if (panelType.prototype.parentPanel)
                                  -            return sidePanelDocument;
                                  -        else
                                  -            return panelDocument;
                                  -    },
                                  -    
                                  -    // xxxpedro
                                  -    getSidePanelDocument: function()
                                  -    {
                                  -        return sidePanelDocument;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {   
                                  -        panelBar1 = $("fbPanelBar1-content");
                                  -        panelBar2 = $("fbPanelBar2-content");
                                  -        
                                  -        panelContainer = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document.body : 
                                  -                panelBar1;
                                  -        
                                  -        sidePanelContainer = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document.body : 
                                  -                panelBar2;
                                  -        
                                  -        panelDocument = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        sidePanelDocument = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new IconButton({
                                  -                type: "toggle",
                                  -                element: $("fbInspectButton"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew  
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.activate();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        // FIXME xxxpedro is this being used?
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbMainToolbarBox = $("fbMainToolbarBox");
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        //topHeight = fbTop.offsetHeight;
                                  -        //topPartialHeight = fbMainToolbarBox.offsetHeight;
                                  -        topHeight = 0;
                                  -        topPartialHeight = 0;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        //disableTextSelection($("fbMainToolbarBox"));
                                  -        //disableTextSelection($("fbPanelBarBox"));
                                  -        //disableTextSelection($("fbPanelBar1"));
                                  -        //disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -//        this.addController(
                                  -//            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -//        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            };
                                  -    
                                  -            addEvent(this.getSidePanelDocument(), "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(this.getSidePanelDocument(), "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -
                                  -        this.addController(
                                  -                [this.getPanelContainer(), "mousedown", onPanelMouseDown],
                                  -                [this.getSidePanelContainer(), "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.deactivate();
                                  -
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        //restoreTextSelection($("fbMainToolbarBox"));
                                  -        //restoreTextSelection($("fbPanelBarBox"));
                                  -        //restoreTextSelection($("fbPanelBar1"));
                                  -        //restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbMainToolbarBox = null;
                                  -
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            // FIXME xxxpedro chromenew
                                  -            //self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -//        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -//        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -//        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = null;
                                  -        ///fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbContentBox");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -//                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbContentBox", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        // FIXME xxxpedro chromenew
                                  -        ///if (fbVSplitterStyle)
                                  -        ///    fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        ///this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        /// xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    // FIXME: xxxpedro chromenew
                                  -    return;
                                  -    
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            removeClass($("fbContentBox"), "hideCommandLine");
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            setClass($("fbContentBox"), "hideCommandLine");
                                  -        }
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -            removeClass($("fbContentBox"), "hideSidePanelBar");
                                  -        else
                                  -            setClass($("fbContentBox"), "hideSidePanelBar");
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite =
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Cache = 
                                  -{
                                  -    ID: "firebug-" + new Date().getTime()
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - * 
                                  - * TODO: Investigate a possibility of cache validation, to be customized by each 
                                  - * kind of cache. For ElementCache it should validate if the element still is 
                                  - * inserted at the DOM.
                                  - */ 
                                  -var cacheUID = 0;
                                  -var createCache = function()
                                  -{
                                  -    var map = {};
                                  -    var data = {};
                                  -    
                                  -    var CID = Firebug.Lite.Cache.ID;
                                  -    
                                  -    // better detection
                                  -    var supportsDeleteExpando = !document.all;
                                  -    
                                  -    var cacheFunction = function(element)
                                  -    {
                                  -        return cacheAPI.set(element);
                                  -    };
                                  -    
                                  -    var cacheAPI =  
                                  -    {
                                  -        get: function(key)
                                  -        {
                                  -            return map.hasOwnProperty(key) ?
                                  -                    map[key] :
                                  -                    null;
                                  -        },
                                  -        
                                  -        set: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id)
                                  -            {
                                  -                id = ++cacheUID;
                                  -                element[CID] = id;
                                  -            }
                                  -            
                                  -            if (!map.hasOwnProperty(id))
                                  -            {
                                  -                map[id] = element;
                                  -                data[id] = {};
                                  -            }
                                  -            
                                  -            return id;
                                  -        },
                                  -        
                                  -        unset: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id) return;
                                  -            
                                  -            if (supportsDeleteExpando)
                                  -            {
                                  -                delete element[CID];
                                  -            }
                                  -            else if (element.removeAttribute)
                                  -            {
                                  -                element.removeAttribute(CID);
                                  -            }
                                  -
                                  -            delete map[id];
                                  -            delete data[id];
                                  -            
                                  -        },
                                  -        
                                  -        key: function(element)
                                  -        {
                                  -            return getValidatedKey(element);
                                  -        },
                                  -        
                                  -        has: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            return id && map.hasOwnProperty(id);
                                  -        },
                                  -        
                                  -        each: function(callback)
                                  -        {
                                  -            for (var key in map)
                                  -            {
                                  -                if (map.hasOwnProperty(key))
                                  -                {
                                  -                    callback(key, map[key]);
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        data: function(element, name, value)
                                  -        {
                                  -            // set data
                                  -            if (value)
                                  -            {
                                  -                if (!name) return null;
                                  -                
                                  -                var id = cacheAPI.set(element);
                                  -                
                                  -                return data[id][name] = value;
                                  -            }
                                  -            // get data
                                  -            else
                                  -            {
                                  -                var id = cacheAPI.key(element);
                                  -
                                  -                return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ?
                                  -                        data[id][name] :
                                  -                        null;
                                  -            }
                                  -        },
                                  -        
                                  -        clear: function()
                                  -        {
                                  -            for (var id in map)
                                  -            {
                                  -                var element = map[id];
                                  -                cacheAPI.unset(element);                
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var getValidatedKey = function(element)
                                  -    {
                                  -        var id = element[CID];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property CID will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            !supportsDeleteExpando &&   // the problem happens when supportsDeleteExpando is false
                                  -            id &&                       // the element has the expando property 
                                  -            map.hasOwnProperty(id) &&   // there is a cached element with the same id
                                  -            map[id] != element          // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            element.removeAttribute(CID);
                                  -
                                  -            id = null;
                                  -        }
                                  -        
                                  -        return id;
                                  -    };
                                  -    
                                  -    FBL.append(cacheFunction, cacheAPI);
                                  -    
                                  -    return cacheFunction;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro : check if we need really this on FBL scope
                                  -Firebug.Lite.Cache.StyleSheet = createCache();
                                  -Firebug.Lite.Cache.Element = createCache();
                                  -
                                  -// TODO: xxxpedro
                                  -Firebug.Lite.Cache.Event = createCache();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -var sourceMap = {};
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.Lite.Proxy = 
                                  -{
                                  -    // jsonp callbacks
                                  -    _callbacks: {},
                                  -    
                                  -    /**
                                  -     * Load a resource, either locally (directly) or externally (via proxy) using 
                                  -     * synchronous XHR calls. Loading external resources requires the proxy plugin to
                                  -     * be installed and configured (see /plugin/proxy/proxy.php).
                                  -     */
                                  -    load: function(url)
                                  -    {
                                  -        var resourceDomain = getDomain(url);
                                  -        var isLocalResource =
                                  -            // empty domain means local URL
                                  -            !resourceDomain ||
                                  -            // same domain means local too
                                  -            resourceDomain ==  Firebug.context.window.location.host; // TODO: xxxpedro context
                                  -        
                                  -        return isLocalResource ? fetchResource(url) : fetchProxyResource(url);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using JSONP technique.
                                  -     */
                                  -    loadJSONP: function(url, callback)
                                  -    {
                                  -        var script = createGlobalElement("script"),
                                  -            doc = Firebug.context.document,
                                  -            
                                  -            uid = "" + new Date().getTime(),
                                  -            callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid,
                                  -            
                                  -            jsonpURL = url.indexOf("?") != -1 ? 
                                  -                    url + "&" + callbackName :
                                  -                    url + "?" + callbackName;
                                  -            
                                  -        Firebug.Lite.Proxy._callbacks[uid] = function(data)
                                  -        {
                                  -            if (callback)
                                  -                callback(data);
                                  -            
                                  -            script.parentNode.removeChild(script);
                                  -            delete Firebug.Lite.Proxy._callbacks[uid];
                                  -        };
                                  -        
                                  -        script.src = jsonpURL;
                                  -        
                                  -        if (doc.documentElement)
                                  -            doc.documentElement.appendChild(script);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using YQL (not reliable).
                                  -     */
                                  -    YQL: function(url, callback)
                                  -    {
                                  -        var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" +
                                  -                encodeURIComponent(url) + "%22&format=xml";
                                  -        
                                  -        this.loadJSONP(yql, function(data)
                                  -        {
                                  -            var source = data.results[0];
                                  -            
                                  -            // clean up YQL bogus elements
                                  -            var match = /<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -            if (match)
                                  -                source = match[1];
                                  -            
                                  -            console.log(source);
                                  -        });
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage = 
                                  -    "/* Firebug Lite resource fetching is disabled.\n" +
                                  -    "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" +
                                  -    "More info at http://getfirebug.com/firebuglite#Options */";
                                  -
                                  -var fetchResource = function(url)
                                  -{
                                  -    if (Firebug.disableResourceFetching)
                                  -    {
                                  -        var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -        return source;
                                  -    }
                                  -
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    // Getting the native XHR object so our calls won't be logged in the Console Panel
                                  -    var xhr = FBL.getNativeXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    var source = sourceMap[url] = xhr.responseText; 
                                  -    return source;
                                  -};
                                  -
                                  -var fetchProxyResource = function(url)
                                  -{
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url);
                                  -    var response = fetchResource(proxyURL);
                                  -    
                                  -    try
                                  -    {
                                  -        var data = eval("(" + response + ")");
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return "ERROR: Firebug Lite Proxy plugin returned an invalid response.";
                                  -    }
                                  -    
                                  -    var source = data ? data.contents : ""; 
                                  -    return source;
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Style = 
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Script = function(window)
                                  -{
                                  -    this.fileName = null;
                                  -    this.isValid = null;
                                  -    this.baseLineNumber = null;
                                  -    this.lineExtent = null;
                                  -    this.tag = null;
                                  -    
                                  -    this.functionName = null;
                                  -    this.functionSource = null;
                                  -};
                                  -
                                  -Firebug.Lite.Script.prototype = 
                                  -{
                                  -    isLineExecutable: function(){},
                                  -    pcToLine: function(){},
                                  -    lineToPc: function(){},
                                  -    
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Script";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -Firebug.Lite.Browser = function(window)
                                  -{
                                  -    this.contentWindow = window;
                                  -    this.contentDocument = window.document;
                                  -    this.currentURI = 
                                  -    {
                                  -        spec: window.location.href
                                  -    };
                                  -};
                                  -
                                  -Firebug.Lite.Browser.prototype = 
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Browser";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -    http://www.JSON.org/json2.js
                                  -    2010-03-20
                                  -
                                  -    Public Domain.
                                  -
                                  -    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
                                  -
                                  -    See http://www.JSON.org/js.html
                                  -
                                  -
                                  -    This code should be minified before deployment.
                                  -    See http://javascript.crockford.com/jsmin.html
                                  -
                                  -    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
                                  -    NOT CONTROL.
                                  -
                                  -
                                  -    This file creates a global JSON object containing two methods: stringify
                                  -    and parse.
                                  -
                                  -        JSON.stringify(value, replacer, space)
                                  -            value       any JavaScript value, usually an object or array.
                                  -
                                  -            replacer    an optional parameter that determines how object
                                  -                        values are stringified for objects. It can be a
                                  -                        function or an array of strings.
                                  -
                                  -            space       an optional parameter that specifies the indentation
                                  -                        of nested structures. If it is omitted, the text will
                                  -                        be packed without extra whitespace. If it is a number,
                                  -                        it will specify the number of spaces to indent at each
                                  -                        level. If it is a string (such as '\t' or '&nbsp;'),
                                  -                        it contains the characters used to indent at each level.
                                  -
                                  -            This method produces a JSON text from a JavaScript value.
                                  -
                                  -            When an object value is found, if the object contains a toJSON
                                  -            method, its toJSON method will be called and the result will be
                                  -            stringified. A toJSON method does not serialize: it returns the
                                  -            value represented by the name/value pair that should be serialized,
                                  -            or undefined if nothing should be serialized. The toJSON method
                                  -            will be passed the key associated with the value, and this will be
                                  -            bound to the value
                                  -
                                  -            For example, this would serialize Dates as ISO strings.
                                  -
                                  -                Date.prototype.toJSON = function (key) {
                                  -                    function f(n) {
                                  -                        // Format integers to have at least two digits.
                                  -                        return n < 10 ? '0' + n : n;
                                  -                    }
                                  -
                                  -                    return this.getUTCFullYear()   + '-' +
                                  -                         f(this.getUTCMonth() + 1) + '-' +
                                  -                         f(this.getUTCDate())      + 'T' +
                                  -                         f(this.getUTCHours())     + ':' +
                                  -                         f(this.getUTCMinutes())   + ':' +
                                  -                         f(this.getUTCSeconds())   + 'Z';
                                  -                };
                                  -
                                  -            You can provide an optional replacer method. It will be passed the
                                  -            key and value of each member, with this bound to the containing
                                  -            object. The value that is returned from your method will be
                                  -            serialized. If your method returns undefined, then the member will
                                  -            be excluded from the serialization.
                                  -
                                  -            If the replacer parameter is an array of strings, then it will be
                                  -            used to select the members to be serialized. It filters the results
                                  -            such that only members with keys listed in the replacer array are
                                  -            stringified.
                                  -
                                  -            Values that do not have JSON representations, such as undefined or
                                  -            functions, will not be serialized. Such values in objects will be
                                  -            dropped; in arrays they will be replaced with null. You can use
                                  -            a replacer function to replace those with JSON values.
                                  -            JSON.stringify(undefined) returns undefined.
                                  -
                                  -            The optional space parameter produces a stringification of the
                                  -            value that is filled with line breaks and indentation to make it
                                  -            easier to read.
                                  -
                                  -            If the space parameter is a non-empty string, then that string will
                                  -            be used for indentation. If the space parameter is a number, then
                                  -            the indentation will be that many spaces.
                                  -
                                  -            Example:
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}]);
                                  -            // text is '["e",{"pluribus":"unum"}]'
                                  -
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
                                  -            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
                                  -
                                  -            text = JSON.stringify([new Date()], function (key, value) {
                                  -                return this[key] instanceof Date ?
                                  -                    'Date(' + this[key] + ')' : value;
                                  -            });
                                  -            // text is '["Date(---current time---)"]'
                                  -
                                  -
                                  -        JSON.parse(text, reviver)
                                  -            This method parses a JSON text to produce an object or array.
                                  -            It can throw a SyntaxError exception.
                                  -
                                  -            The optional reviver parameter is a function that can filter and
                                  -            transform the results. It receives each of the keys and values,
                                  -            and its return value is used instead of the original value.
                                  -            If it returns what it received, then the structure is not modified.
                                  -            If it returns undefined then the member is deleted.
                                  -
                                  -            Example:
                                  -
                                  -            // Parse the text. Values that look like ISO date strings will
                                  -            // be converted to Date objects.
                                  -
                                  -            myData = JSON.parse(text, function (key, value) {
                                  -                var a;
                                  -                if (typeof value === 'string') {
                                  -                    a =
                                  -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                                  -                    if (a) {
                                  -                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                                  -                            +a[5], +a[6]));
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                                  -                var d;
                                  -                if (typeof value === 'string' &&
                                  -                        value.slice(0, 5) === 'Date(' &&
                                  -                        value.slice(-1) === ')') {
                                  -                    d = new Date(value.slice(5, -1));
                                  -                    if (d) {
                                  -                        return d;
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -
                                  -    This is a reference implementation. You are free to copy, modify, or
                                  -    redistribute.
                                  -*/
                                  -
                                  -/*jslint evil: true, strict: false */
                                  -
                                  -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
                                  -    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
                                  -    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
                                  -    lastIndex, length, parse, prototype, push, replace, slice, stringify,
                                  -    test, toJSON, toString, valueOf
                                  -*/
                                  -
                                  -
                                  -// Create a JSON object only if one does not already exist. We create the
                                  -// methods in a closure to avoid creating global variables.
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var JSON = window.JSON || {};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -(function () {
                                  -
                                  -    function f(n) {
                                  -        // Format integers to have at least two digits.
                                  -        return n < 10 ? '0' + n : n;
                                  -    }
                                  -
                                  -    if (typeof Date.prototype.toJSON !== 'function') {
                                  -
                                  -        Date.prototype.toJSON = function (key) {
                                  -
                                  -            return isFinite(this.valueOf()) ?
                                  -                   this.getUTCFullYear()   + '-' +
                                  -                 f(this.getUTCMonth() + 1) + '-' +
                                  -                 f(this.getUTCDate())      + 'T' +
                                  -                 f(this.getUTCHours())     + ':' +
                                  -                 f(this.getUTCMinutes())   + ':' +
                                  -                 f(this.getUTCSeconds())   + 'Z' : null;
                                  -        };
                                  -
                                  -        String.prototype.toJSON =
                                  -        Number.prototype.toJSON =
                                  -        Boolean.prototype.toJSON = function (key) {
                                  -            return this.valueOf();
                                  -        };
                                  -    }
                                  -
                                  -    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        gap,
                                  -        indent,
                                  -        meta = {    // table of character substitutions
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '\\': '\\\\'
                                  -        },
                                  -        rep;
                                  -
                                  -
                                  -    function quote(string) {
                                  -
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can safely slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe escape
                                  -// sequences.
                                  -
                                  -        escapable.lastIndex = 0;
                                  -        return escapable.test(string) ?
                                  -            '"' + string.replace(escapable, function (a) {
                                  -                var c = meta[a];
                                  -                return typeof c === 'string' ? c :
                                  -                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -            }) + '"' :
                                  -            '"' + string + '"';
                                  -    }
                                  -
                                  -
                                  -    function str(key, holder) {
                                  -
                                  -// Produce a string from holder[key].
                                  -
                                  -        var i,          // The loop counter.
                                  -            k,          // The member key.
                                  -            v,          // The member value.
                                  -            length,
                                  -            mind = gap,
                                  -            partial,
                                  -            value = holder[key];
                                  -
                                  -// If the value has a toJSON method, call it to obtain a replacement value.
                                  -
                                  -        if (value && typeof value === 'object' &&
                                  -                typeof value.toJSON === 'function') {
                                  -            value = value.toJSON(key);
                                  -        }
                                  -
                                  -// If we were called with a replacer function, then call the replacer to
                                  -// obtain a replacement value.
                                  -
                                  -        if (typeof rep === 'function') {
                                  -            value = rep.call(holder, key, value);
                                  -        }
                                  -
                                  -// What happens next depends on the value's type.
                                  -
                                  -        switch (typeof value) {
                                  -        case 'string':
                                  -            return quote(value);
                                  -
                                  -        case 'number':
                                  -
                                  -// JSON numbers must be finite. Encode non-finite numbers as null.
                                  -
                                  -            return isFinite(value) ? String(value) : 'null';
                                  -
                                  -        case 'boolean':
                                  -        case 'null':
                                  -
                                  -// If the value is a boolean or null, convert it to a string. Note:
                                  -// typeof null does not produce 'null'. The case is included here in
                                  -// the remote chance that this gets fixed someday.
                                  -
                                  -            return String(value);
                                  -
                                  -// If the type is 'object', we might be dealing with an object or an array or
                                  -// null.
                                  -
                                  -        case 'object':
                                  -
                                  -// Due to a specification blunder in ECMAScript, typeof null is 'object',
                                  -// so watch out for that case.
                                  -
                                  -            if (!value) {
                                  -                return 'null';
                                  -            }
                                  -
                                  -// Make an array to hold the partial results of stringifying this object value.
                                  -
                                  -            gap += indent;
                                  -            partial = [];
                                  -
                                  -// Is the value an array?
                                  -
                                  -            if (Object.prototype.toString.apply(value) === '[object Array]') {
                                  -
                                  -// The value is an array. Stringify every element. Use null as a placeholder
                                  -// for non-JSON values.
                                  -
                                  -                length = value.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    partial[i] = str(i, value) || 'null';
                                  -                }
                                  -
                                  -// Join all of the elements together, separated with commas, and wrap them in
                                  -// brackets.
                                  -
                                  -                v = partial.length === 0 ? '[]' :
                                  -                    gap ? '[\n' + gap +
                                  -                            partial.join(',\n' + gap) + '\n' +
                                  -                                mind + ']' :
                                  -                          '[' + partial.join(',') + ']';
                                  -                gap = mind;
                                  -                return v;
                                  -            }
                                  -
                                  -// If the replacer is an array, use it to select the members to be stringified.
                                  -
                                  -            if (rep && typeof rep === 'object') {
                                  -                length = rep.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    k = rep[i];
                                  -                    if (typeof k === 'string') {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -
                                  -// Otherwise, iterate through all of the keys in the object.
                                  -
                                  -                for (k in value) {
                                  -                    if (Object.hasOwnProperty.call(value, k)) {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -// Join all of the member texts together, separated with commas,
                                  -// and wrap them in braces.
                                  -
                                  -            v = partial.length === 0 ? '{}' :
                                  -                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                                  -                        mind + '}' : '{' + partial.join(',') + '}';
                                  -            gap = mind;
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -// If the JSON object does not yet have a stringify method, give it one.
                                  -
                                  -    if (typeof JSON.stringify !== 'function') {
                                  -        JSON.stringify = function (value, replacer, space) {
                                  -
                                  -// The stringify method takes a value and an optional replacer, and an optional
                                  -// space parameter, and returns a JSON text. The replacer can be a function
                                  -// that can replace values, or an array of strings that will select the keys.
                                  -// A default replacer method can be provided. Use of the space parameter can
                                  -// produce text that is more easily readable.
                                  -
                                  -            var i;
                                  -            gap = '';
                                  -            indent = '';
                                  -
                                  -// If the space parameter is a number, make an indent string containing that
                                  -// many spaces.
                                  -
                                  -            if (typeof space === 'number') {
                                  -                for (i = 0; i < space; i += 1) {
                                  -                    indent += ' ';
                                  -                }
                                  -
                                  -// If the space parameter is a string, it will be used as the indent string.
                                  -
                                  -            } else if (typeof space === 'string') {
                                  -                indent = space;
                                  -            }
                                  -
                                  -// If there is a replacer, it must be a function or an array.
                                  -// Otherwise, throw an error.
                                  -
                                  -            rep = replacer;
                                  -            if (replacer && typeof replacer !== 'function' &&
                                  -                    (typeof replacer !== 'object' ||
                                  -                     typeof replacer.length !== 'number')) {
                                  -                throw new Error('JSON.stringify');
                                  -            }
                                  -
                                  -// Make a fake root object containing our value under the key of ''.
                                  -// Return the result of stringifying the value.
                                  -
                                  -            return str('', {'': value});
                                  -        };
                                  -    }
                                  -
                                  -
                                  -// If the JSON object does not yet have a parse method, give it one.
                                  -
                                  -    if (typeof JSON.parse !== 'function') {
                                  -        JSON.parse = function (text, reviver) {
                                  -
                                  -// The parse method takes a text and an optional reviver function, and returns
                                  -// a JavaScript value if the text is a valid JSON text.
                                  -
                                  -            var j;
                                  -
                                  -            function walk(holder, key) {
                                  -
                                  -// The walk method is used to recursively walk the resulting structure so
                                  -// that modifications can be made.
                                  -
                                  -                var k, v, value = holder[key];
                                  -                if (value && typeof value === 'object') {
                                  -                    for (k in value) {
                                  -                        if (Object.hasOwnProperty.call(value, k)) {
                                  -                            v = walk(value, k);
                                  -                            if (v !== undefined) {
                                  -                                value[k] = v;
                                  -                            } else {
                                  -                                delete value[k];
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                return reviver.call(holder, key, value);
                                  -            }
                                  -
                                  -
                                  -// Parsing happens in four stages. In the first stage, we replace certain
                                  -// Unicode characters with escape sequences. JavaScript handles many characters
                                  -// incorrectly, either silently deleting them, or treating them as line endings.
                                  -
                                  -            text = String(text);
                                  -            cx.lastIndex = 0;
                                  -            if (cx.test(text)) {
                                  -                text = text.replace(cx, function (a) {
                                  -                    return '\\u' +
                                  -                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -                });
                                  -            }
                                  -
                                  -// In the second stage, we run the text against regular expressions that look
                                  -// for non-JSON patterns. We are especially concerned with '()' and 'new'
                                  -// because they can cause invocation, and '=' because it can cause mutation.
                                  -// But just to be safe, we want to reject all unexpected forms.
                                  -
                                  -// We split the second stage into 4 regexp operations in order to work around
                                  -// crippling inefficiencies in IE's and Safari's regexp engines. First we
                                  -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
                                  -// replace all simple value tokens with ']' characters. Third, we delete all
                                  -// open brackets that follow a colon or comma or that begin the text. Finally,
                                  -// we look to see that the remaining characters are only whitespace or ']' or
                                  -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
                                  -
                                  -            if (/^[\],:{}\s]*$/.
                                  -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                                  -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
                                  -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                                  -
                                  -// In the third stage we use the eval function to compile the text into a
                                  -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                                  -// in JavaScript: it can begin a block or an object literal. We wrap the text
                                  -// in parens to eliminate the ambiguity.
                                  -
                                  -                j = eval('(' + text + ')');
                                  -
                                  -// In the optional fourth stage, we recursively walk the new structure, passing
                                  -// each name/value pair to a reviver function for possible transformation.
                                  -
                                  -                return typeof reviver === 'function' ?
                                  -                    walk({'': j}, '') : j;
                                  -            }
                                  -
                                  -// If the text is not JSON parseable, then a SyntaxError is thrown.
                                  -
                                  -            throw new SyntaxError('JSON.parse');
                                  -        };
                                  -    }
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.JSON = JSON;
                                  -
                                  -// ************************************************************************************************
                                  -}());
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -/* Copyright (c) 2010-2011 Marcus Westin
                                  - *
                                  - * Permission is hereby granted, free of charge, to any person obtaining a copy
                                  - * of this software and associated documentation files (the "Software"), to deal
                                  - * in the Software without restriction, including without limitation the rights
                                  - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  - * copies of the Software, and to permit persons to whom the Software is
                                  - * furnished to do so, subject to the following conditions:
                                  - *
                                  - * The above copyright notice and this permission notice shall be included in
                                  - * all copies or substantial portions of the Software.
                                  - *
                                  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  - * THE SOFTWARE.
                                  - */
                                  -
                                  -var store = (function(){
                                  -	var api = {},
                                  -		win = window,
                                  -		doc = win.document,
                                  -		localStorageName = 'localStorage',
                                  -		globalStorageName = 'globalStorage',
                                  -		namespace = '__firebug__storejs__',
                                  -		storage
                                  -
                                  -	api.disabled = false
                                  -	api.set = function(key, value) {}
                                  -	api.get = function(key) {}
                                  -	api.remove = function(key) {}
                                  -	api.clear = function() {}
                                  -	api.transact = function(key, transactionFn) {
                                  -		var val = api.get(key)
                                  -		if (typeof val == 'undefined') { val = {} }
                                  -		transactionFn(val)
                                  -		api.set(key, val)
                                  -	}
                                  -
                                  -	api.serialize = function(value) {
                                  -		return JSON.stringify(value)
                                  -	}
                                  -	api.deserialize = function(value) {
                                  -		if (typeof value != 'string') { return undefined }
                                  -		return JSON.parse(value)
                                  -	}
                                  -
                                  -	// Functions to encapsulate questionable FireFox 3.6.13 behavior 
                                  -	// when about.config::dom.storage.enabled === false
                                  -	// See https://github.com/marcuswestin/store.js/issues#issue/13
                                  -	function isLocalStorageNameSupported() {
                                  -		try { return (localStorageName in win && win[localStorageName]) }
                                  -		catch(err) { return false }
                                  -	}
                                  -	
                                  -	function isGlobalStorageNameSupported() {
                                  -		try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) }
                                  -		catch(err) { return false }
                                  -	}	
                                  -
                                  -	if (isLocalStorageNameSupported()) {
                                  -		storage = win[localStorageName]
                                  -		api.set = function(key, val) { storage.setItem(key, api.serialize(val)) }
                                  -		api.get = function(key) { return api.deserialize(storage.getItem(key)) }
                                  -		api.remove = function(key) { storage.removeItem(key) }
                                  -		api.clear = function() { storage.clear() }
                                  -
                                  -	} else if (isGlobalStorageNameSupported()) {
                                  -		storage = win[globalStorageName][win.location.hostname]
                                  -		api.set = function(key, val) { storage[key] = api.serialize(val) }
                                  -		api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) }
                                  -		api.remove = function(key) { delete storage[key] }
                                  -		api.clear = function() { for (var key in storage ) { delete storage[key] } }
                                  -
                                  -	} else if (doc.documentElement.addBehavior) {
                                  -		var storage = doc.createElement('div')
                                  -		function withIEStorage(storeFunction) {
                                  -			return function() {
                                  -				var args = Array.prototype.slice.call(arguments, 0)
                                  -				args.unshift(storage)
                                  -				// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
                                  -				// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
                                  -				// TODO: xxxpedro doc.body is not always available so we must use doc.documentElement.
                                  -				// We need to make sure this change won't affect the behavior of this library.
                                  -				doc.documentElement.appendChild(storage)
                                  -				storage.addBehavior('#default#userData')
                                  -				storage.load(localStorageName)
                                  -				var result = storeFunction.apply(api, args)
                                  -				doc.documentElement.removeChild(storage)
                                  -				return result
                                  -			}
                                  -		}
                                  -		api.set = withIEStorage(function(storage, key, val) {
                                  -			storage.setAttribute(key, api.serialize(val))
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.get = withIEStorage(function(storage, key) {
                                  -			return api.deserialize(storage.getAttribute(key))
                                  -		})
                                  -		api.remove = withIEStorage(function(storage, key) {
                                  -			storage.removeAttribute(key)
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.clear = withIEStorage(function(storage) {
                                  -			var attributes = storage.XMLDocument.documentElement.attributes
                                  -			storage.load(localStorageName)
                                  -			for (var i=0, attr; attr = attributes[i]; i++) {
                                  -				storage.removeAttribute(attr.name)
                                  -			}
                                  -			storage.save(localStorageName)
                                  -		})
                                  -	}
                                  -	
                                  -	try {
                                  -		api.set(namespace, namespace)
                                  -		if (api.get(namespace) != namespace) { api.disabled = true }
                                  -		api.remove(namespace)
                                  -	} catch(e) {
                                  -		api.disabled = true
                                  -	}
                                  -	
                                  -	return api
                                  -})();
                                  -
                                  -if (typeof module != 'undefined') { module.exports = store }
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.Store = store;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_selector*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -/**
                                  - * @name Firebug.Selector 
                                  - * @namespace
                                  - */
                                  -
                                  -/**
                                  - * @exports Sizzle as Firebug.Selector
                                  - */ 
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -/**#@+ @ignore */
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -/**#@-*/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache(targ))
                                  -            {
                                  -                var target = ""+ElementCache.key(targ);
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    if (Firebug.HTML)
                                  -                        Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0);
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache.has(targ))
                                  -                FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        // avoid error when the element is not attached a document
                                  -        if (!el || !el.parentNode)
                                  -            return;
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -( /** @scope s_domplate */ function() {
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -FBL.DomplateTag = function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateEmbed = function DomplateEmbed()
                                  -{
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateLoop = function DomplateLoop()
                                  -{
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var DomplateTag = FBL.DomplateTag;
                                  -var DomplateEmbed = FBL.DomplateEmbed;
                                  -var DomplateLoop = FBL.DomplateLoop;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var womb = null;
                                  -
                                  -FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -var domplate = FBL.domplate;
                                  -
                                  -FBL.domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -FBL.DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); };
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateEmbed.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateLoop.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -/** @class */
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -/** @class */
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** @namespace */
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild;
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertBefore: function(args, before, self)
                                  -    {
                                  -        return this.insertNode(args, before.ownerDocument, before, false, self);
                                  -    },
                                  -
                                  -    insertAfter: function(args, after, self)
                                  -    {
                                  -        return this.insertNode(args, after.ownerDocument, after, true, self);
                                  -    },
                                  -
                                  -    insertNode: function(args, doc, element, isAfter, self)
                                  -    {
                                  -        if (!args)
                                  -            args = {};
                                  -
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode html: "+html+"\n");
                                  -
                                  -        var doc = element.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        if (isAfter)
                                  -        {
                                  -            while (womb.firstChild)
                                  -                if (element.nextSibling)
                                  -                    element.parentNode.insertBefore(womb.firstChild, element.nextSibling);
                                  -                else
                                  -                    element.parentNode.appendChild(womb.firstChild);
                                  -        }
                                  -        else
                                  -        {
                                  -            while (womb.lastChild)
                                  -                element.parentNode.insertBefore(womb.lastChild, element);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -
                                  -    /*
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -    
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle "),
                                  -            
                                  -            SPAN({"class": "objectProps"}, 
                                  -                SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
                                  -                FOR("prop", "$object|propIterator",
                                  -                    SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"),
                                  -                    SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
                                  -                    TAG("$prop.tag", {object: "$prop.object"}),
                                  -                    SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
                                  -                ),
                                  -                SPAN({"class": "objectRightBrace"}, "}")
                                  -            )
                                  -        ),
                                  -
                                  -    propNumberTag:
                                  -        SPAN({"class": "objectProp-number"}, "$object"),
                                  -
                                  -    propStringTag:
                                  -        SPAN({"class": "objectProp-string"}, "&quot;$object&quot;"),
                                  -
                                  -    propObjectTag:
                                  -        SPAN({"class": "objectProp-object"}, "$object"),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        ///Firebug.ObjectShortIteratorMax;
                                  -        var maxLength = 55; // default max length for long representation
                                  -        
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var length = 0;
                                  -        
                                  -        var numProperties = 0;
                                  -        var numPropertiesShown = 0;
                                  -        var maxLengthReached = false;
                                  -        
                                  -        var lib = this;
                                  -        
                                  -        var propRepsMap = 
                                  -        {
                                  -            "boolean": this.propNumberTag,
                                  -            "number": this.propNumberTag,
                                  -            "string": this.propStringTag,
                                  -            "object": this.propObjectTag
                                  -        };
                                  -
                                  -        try
                                  -        {
                                  -            var title = Firebug.Rep.getTitle(object);
                                  -            length += title.length;
                                  -
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                
                                  -                var type = typeof(value);
                                  -                if (type == "boolean" || 
                                  -                    type == "number" || 
                                  -                    (type == "string" && value) || 
                                  -                    (type == "object" && value && value.toString))
                                  -                {
                                  -                    var tag = propRepsMap[type];
                                  -                    
                                  -                    var value = (type == "object") ?
                                  -                        Firebug.getRep(value).getTitle(value) :
                                  -                        value + "";
                                  -                        
                                  -                    length += name.length + value.length + 4;
                                  -                    
                                  -                    if (length <= maxLength)
                                  -                    {
                                  -                        props.push({
                                  -                            tag: tag, 
                                  -                            name: name, 
                                  -                            object: value, 
                                  -                            equal: "=", 
                                  -                            delim: ", "
                                  -                        });
                                  -                        
                                  -                        numPropertiesShown++;
                                  -                    }
                                  -                    else
                                  -                        maxLengthReached = true;
                                  -
                                  -                }
                                  -                
                                  -                numProperties++;
                                  -                
                                  -                if (maxLengthReached && numProperties > numPropertiesShown)
                                  -                    break;
                                  -            }
                                  -            
                                  -            if (numProperties > numPropertiesShown)
                                  -            {
                                  -                props.push({
                                  -                    object: "...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                });
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    fb_1_6_propIterator: function (object, max)
                                  -    {
                                  -        max = max || 3;
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0, count = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(value);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && value)
                                  -                    || (t == "object" && value && value.toString))
                                  -                {
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag || rep.tag;
                                  -                    if (t == "object")
                                  -                    {
                                  -                        value = rep.getTitle(value);
                                  -                        tag = rep.titleTag;
                                  -                    }
                                  -                    count++;
                                  -                    if (count <= max)
                                  -                        props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -            if (count > max)
                                  -            {
                                  -                props[Math.max(1,max-1)] = {
                                  -                    object: "more...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                };
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    /*
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -    /**/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.nodeName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.nodeName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 
                                  -                 // we must check if the attribute is specified otherwise IE will show them
                                  -                 if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.nodeName == "id")
                                  -                    idAttr = attr;
                                  -                 else if (attr.nodeName == "class")
                                  -                    classAttr = attr;
                                  -                 else if (attr.nodeName == "style")
                                  -                    attrs.push({
                                  -                        nodeName: attr.nodeName,
                                  -                        nodeValue: attr.nodeValue ||
                                  -                        // IE won't recognize the attr.nodeValue of <style> nodes ...
                                  -                        // and will return CSS property names in upper case, so we need to convert them
                                  -                        elt.style.cssText.replace(/([^\s]+)\s*:/g, 
                                  -                                function(m,g){return g.toLowerCase()+":"})                         
                                  -                    });
                                  -                 else
                                  -                    attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.nodeName == "id" || attr.nodeName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -     
                                  -     // TODO: xxxpedro remove this?
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -     /**/
                                  -
                                  -     getNodeTextGroups: function(element)
                                  -     {
                                  -         var text =  element.textContent;
                                  -         if (!Firebug.showFullTextNodes)
                                  -         {
                                  -             text=cropString(text,50);
                                  -         }
                                  -
                                  -         var escapeGroups=[];
                                  -
                                  -         if (Firebug.showTextNodesWithWhitespace)
                                  -             escapeGroups.push({
                                  -                'group': 'whitespace',
                                  -                'class': 'nodeWhiteSpace',
                                  -                'extra': {
                                  -                    '\t': '_Tab',
                                  -                    '\n': '_Para',
                                  -                    ' ' : '_Space'
                                  -                }
                                  -             });
                                  -         if (Firebug.showTextNodesWithEntities)
                                  -             escapeGroups.push({
                                  -                 'group':'text',
                                  -                 'class':'nodeTextEntity',
                                  -                 'extra':{}
                                  -             });
                                  -
                                  -         if (escapeGroups.length)
                                  -             return escapeGroupsForEntities(text, escapeGroups);
                                  -         else
                                  -             return [{str:text,'class':'',extra:''}];
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.nodeName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"),
                                  -            " ( ",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            " )",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        return frame.name || "anonymous";
                                  -        
                                  -        //return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        var fileName = cropString(getFileName(frame.href), 20);
                                  -        return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : "");
                                  -        
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var saveTimeout = 400;
                                  -var pageAmount = 10;
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var currentTarget = null;
                                  -var currentGroup = null;
                                  -var currentPanel = null;
                                  -var currentEditor = null;
                                  -
                                  -var defaultEditor = null;
                                  -
                                  -var originalClassName = null;
                                  -
                                  -var originalValue = null;
                                  -var defaultValue = null;
                                  -var previousValue = null;
                                  -
                                  -var invalidEditor = false;
                                  -var ignoreNextInput = false;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Editor = extend(Firebug.Module,
                                  -{
                                  -    supportsStopEvent: true,
                                  -
                                  -    dispatchName: "editor",
                                  -    tabCharacter: "    ",
                                  -
                                  -    startEditing: function(target, value, editor)
                                  -    {
                                  -        this.stopEditing();
                                  -
                                  -        if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter"))
                                  -            return;
                                  -
                                  -        var panel = Firebug.getElementPanel(target);
                                  -        if (!panel.editable)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.startEditing " + value, target);
                                  -
                                  -        defaultValue = target.getAttribute("defaultValue");
                                  -        if (value == undefined)
                                  -        {
                                  -            var textContent = isIE ? "innerText" : "textContent";
                                  -            value = target[textContent];
                                  -            if (value == defaultValue)
                                  -                value = "";
                                  -        }
                                  -
                                  -        originalValue = previousValue = value;
                                  -
                                  -        invalidEditor = false;
                                  -        currentTarget = target;
                                  -        currentPanel = panel;
                                  -        currentGroup = getAncestorByClass(target, "editGroup");
                                  -
                                  -        currentPanel.editing = true;
                                  -
                                  -        var panelEditor = currentPanel.getEditor(target, value);
                                  -        currentEditor = editor ? editor : panelEditor;
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        var inlineParent = getInlineParent(target);
                                  -        var targetSize = getOffsetSize(inlineParent);
                                  -
                                  -        setClass(panel.panelNode, "editing");
                                  -        setClass(target, "editing");
                                  -        if (currentGroup)
                                  -            setClass(currentGroup, "editing");
                                  -
                                  -        currentEditor.show(target, currentPanel, value, targetSize);
                                  -        //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
                                  -        currentEditor.beginEditing(target, value);
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Editor start panel "+currentPanel.name);
                                  -        this.attachListeners(currentEditor, panel.context);
                                  -    },
                                  -
                                  -    stopEditing: function(cancel)
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout);
                                  -
                                  -        clearTimeout(this.saveTimeout);
                                  -        delete this.saveTimeout;
                                  -
                                  -        this.detachListeners(currentEditor, currentPanel.context);
                                  -
                                  -        removeClass(currentPanel.panelNode, "editing");
                                  -        removeClass(currentTarget, "editing");
                                  -        if (currentGroup)
                                  -            removeClass(currentGroup, "editing");
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        if (value == defaultValue)
                                  -            value = "";
                                  -
                                  -        var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
                                  -
                                  -        try
                                  -        {
                                  -            if (cancel)
                                  -            {
                                  -                //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]);
                                  -                if (value != originalValue)
                                  -                    this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
                                  -
                                  -                if (removeGroup && !originalValue && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else if (!value)
                                  -            {
                                  -                this.saveEditAndNotifyListeners(currentTarget, null, previousValue);
                                  -
                                  -                if (removeGroup && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else
                                  -                this.save(value);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            //throw exc.message;
                                  -            //ERROR(exc);
                                  -        }
                                  -
                                  -        currentEditor.hide();
                                  -        currentPanel.editing = false;
                                  -
                                  -        //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]);
                                  -        //if (FBTrace.DBG_EDITOR)
                                  -        //    FBTrace.sysout("Editor stop panel "+currentPanel.name);
                                  -        
                                  -        currentTarget = null;
                                  -        currentGroup = null;
                                  -        currentPanel = null;
                                  -        currentEditor = null;
                                  -        originalValue = null;
                                  -        invalidEditor = false;
                                  -
                                  -        return value;
                                  -    },
                                  -
                                  -    cancelEditing: function()
                                  -    {
                                  -        return this.stopEditing(true);
                                  -    },
                                  -
                                  -    update: function(saveNow)
                                  -    {
                                  -        if (this.saveTimeout)
                                  -            clearTimeout(this.saveTimeout);
                                  -
                                  -        invalidEditor = true;
                                  -
                                  -        currentEditor.layout();
                                  -
                                  -        if (saveNow)
                                  -            this.save();
                                  -        else
                                  -        {
                                  -            var context = currentPanel.context;
                                  -            this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout);
                                  -            if (FBTrace.DBG_EDITOR)
                                  -                FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
                                  -        }
                                  -    },
                                  -
                                  -    save: function(value)
                                  -    {
                                  -        if (!invalidEditor)
                                  -            return;
                                  -
                                  -        if (value == undefined)
                                  -            value = currentEditor.getValue();
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"));
                                  -        try
                                  -        {
                                  -            this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
                                  -
                                  -            previousValue = value;
                                  -            invalidEditor = false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("editor.save FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
                                  -    {
                                  -        currentEditor.saveEdit(currentTarget, value, previousValue);
                                  -        //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]);
                                  -    },
                                  -
                                  -    setEditTarget: function(element)
                                  -    {
                                  -        if (!element)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]);
                                  -            this.stopEditing();
                                  -        }
                                  -        else if (hasClass(element, "insertBefore"))
                                  -            this.insertRow(element, "before");
                                  -        else if (hasClass(element, "insertAfter"))
                                  -            this.insertRow(element, "after");
                                  -        else
                                  -            this.startEditing(element);
                                  -    },
                                  -
                                  -    tabNextEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var nextEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            nextEditable = !value && currentGroup
                                  -                ? getNextOutsider(nextEditable, currentGroup)
                                  -                : getNextByClass(nextEditable, "editable");
                                  -        }
                                  -        while (nextEditable && !nextEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(nextEditable);
                                  -    },
                                  -
                                  -    tabPreviousEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var prevEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            prevEditable = !value && currentGroup
                                  -                ? getPreviousOutsider(prevEditable, currentGroup)
                                  -                : getPreviousByClass(prevEditable, "editable");
                                  -        }
                                  -        while (prevEditable && !prevEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(prevEditable);
                                  -    },
                                  -
                                  -    insertRow: function(relative, insertWhere)
                                  -    {
                                  -        var group =
                                  -            relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget;
                                  -        var value = this.stopEditing();
                                  -
                                  -        currentPanel = Firebug.getElementPanel(group);
                                  -
                                  -        currentEditor = currentPanel.getEditor(group, value);
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        currentGroup = currentEditor.insertNewRow(group, insertWhere);
                                  -        if (!currentGroup)
                                  -            return;
                                  -
                                  -        var editable = hasClass(currentGroup, "editable")
                                  -            ? currentGroup
                                  -            : getNextByClass(currentGroup, "editable");
                                  -
                                  -        if (editable)
                                  -            this.setEditTarget(editable);
                                  -    },
                                  -
                                  -    insertRowForObject: function(relative)
                                  -    {
                                  -        var container = getAncestorByClass(relative, "insertInto");
                                  -        if (container)
                                  -        {
                                  -            relative = getChildByClass(container, "insertBefore");
                                  -            if (relative)
                                  -                this.insertRow(relative, "before");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachListeners: function(editor, context)
                                  -    {
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        addEvent(win, "resize", this.onResize);
                                  -        addEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        this.listeners = [
                                  -            chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this))
                                  -        ];
                                  -
                                  -        if (editor.arrowCompletion)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)),
                                  -                chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)),
                                  -                chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)),
                                  -                chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount))
                                  -            );
                                  -        }
                                  -
                                  -        if (currentEditor.tabNavigation)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")),
                                  -                chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this))
                                  -            );
                                  -        }
                                  -        else if (currentEditor.multiLine)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("TAB", null, insertTab)
                                  -            );
                                  -        }
                                  -        else
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this))
                                  -            );
                                  -
                                  -            if (currentEditor.tabCompletion)
                                  -            {
                                  -                this.listeners.push(
                                  -                    chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)),
                                  -                    chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1))
                                  -                );
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    detachListeners: function(editor, context)
                                  -    {
                                  -        if (!this.listeners)
                                  -            return;
                                  -
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        removeEvent(win, "resize", this.onResize);
                                  -        removeEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -        if (chrome)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; ++i)
                                  -                chrome.keyIgnore(this.listeners[i]);
                                  -        }
                                  -
                                  -        delete this.listeners;
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        currentEditor.layout(true);
                                  -    },
                                  -
                                  -    onBlur: function(event)
                                  -    {
                                  -        if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box))
                                  -            this.stopEditing();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -
                                  -        this.onResize = bindFixed(this.onResize, this);
                                  -        this.onBlur = bind(this.onBlur, this);
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        this.stopEditing();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// BaseEditor
                                  -
                                  -Firebug.BaseEditor = extend(Firebug.MeasureBox,
                                  -{
                                  -    getValue: function()
                                  -    {
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for context menus within inline editors.
                                  -
                                  -    getContextMenuItems: function(target)
                                  -    {
                                  -        var items = [];
                                  -        items.push({label: "Cut", commandID: "cmd_cut"});
                                  -        items.push({label: "Copy", commandID: "cmd_copy"});
                                  -        items.push({label: "Paste", commandID: "cmd_paste"});
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Editor Module listeners will get "onBeginEditing" just before this call
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // Editor Module listeners will get "onSaveEdit" just after this call
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// InlineEditor
                                  -
                                  -// basic inline editor attributes
                                  -var inlineEditorAttributes = {
                                  -    "class": "textEditorInner",
                                  -    
                                  -    type: "text", 
                                  -    spellcheck: "false",
                                  -    
                                  -    onkeypress: "$onKeyPress",
                                  -    
                                  -    onoverflow: "$onOverflow",
                                  -    oncontextmenu: "$onContextMenu"
                                  -};
                                  -
                                  -// IE does not support the oninput event, so we're using the onkeydown to signalize
                                  -// the relevant keyboard events, and the onpropertychange to actually handle the
                                  -// input event, which should happen after the onkeydown event is fired and after the 
                                  -// value of the input is updated, but before the onkeyup and before the input (with the 
                                  -// new value) is rendered
                                  -if (isIE)
                                  -{
                                  -    inlineEditorAttributes.onpropertychange = "$onInput";
                                  -    inlineEditorAttributes.onkeydown = "$onKeyDown";
                                  -}
                                  -// for other browsers we use the oninput event
                                  -else
                                  -{
                                  -    inlineEditorAttributes.oninput = "$onInput";
                                  -}
                                  -
                                  -Firebug.InlineEditor = function(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -};
                                  -
                                  -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    enterOnBlur: true,
                                  -    outerMargin: 8,
                                  -    shadowExpand: 7,
                                  -
                                  -    tag:
                                  -        DIV({"class": "inlineEditor"},
                                  -            DIV({"class": "textEditorTop1"},
                                  -                DIV({"class": "textEditorTop2"})
                                  -            ),
                                  -            DIV({"class": "textEditorInner1"},
                                  -                DIV({"class": "textEditorInner2"},
                                  -                    INPUT(
                                  -                        inlineEditorAttributes
                                  -                    )
                                  -                )
                                  -            ),
                                  -            DIV({"class": "textEditorBottom1"},
                                  -                DIV({"class": "textEditorBottom2"})
                                  -            )
                                  -        ),
                                  -
                                  -    inputTag :
                                  -        INPUT({"class": "textEditorInner", type: "text",
                                  -            /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
                                  -        ),
                                  -
                                  -    expanderTag:
                                  -        IMG({"class": "inlineExpander", src: "blank.gif"}),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.fixedWidth = false;
                                  -        this.completeAsYouType = true;
                                  -        this.tabNavigation = true;
                                  -        this.multiLine = false;
                                  -        this.tabCompletion = false;
                                  -        this.arrowCompletion = true;
                                  -        this.noWrap = true;
                                  -        this.numeric = false;
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        this.destroyInput();
                                  -    },
                                  -
                                  -    initializeInline: function(doc)
                                  -    {
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Firebug.InlineEditor initializeInline()");
                                  -        
                                  -        //this.box = this.tag.replace({}, doc, this);
                                  -        this.box = this.tag.append({}, doc.body, this);
                                  -        
                                  -        //this.input = this.box.childNodes[1].firstChild.firstChild;  // XXXjjb childNode[1] required
                                  -        this.input = this.box.getElementsByTagName("input")[0];
                                  -        
                                  -        if (isIElt8)
                                  -        {
                                  -            this.input.style.top = "-8px";
                                  -        }
                                  -        
                                  -        this.expander = this.expanderTag.replace({}, doc, this);
                                  -        this.initialize();
                                  -    },
                                  -
                                  -    destroyInput: function()
                                  -    {
                                  -        // XXXjoe Need to remove input/keypress handlers to avoid leaks
                                  -    },
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        // It's only a one-line editor, so new lines shouldn't be allowed
                                  -        return this.input.value = stripNewLines(value);
                                  -    },
                                  -
                                  -    show: function(target, panel, value, targetSize)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]);
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.targetSize = targetSize;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        //this.targetOffset = getClientOffset(target);
                                  -        
                                  -        // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the 
                                  -        // offset values of invisible elements, or empty elements. So, in order to get the 
                                  -        // correct values, we temporary inject a character in the innerHTML of the empty element, 
                                  -        // then we get the offset values, and next, we restore the original innerHTML value.
                                  -        var innerHTML = target.innerHTML;
                                  -        var isEmptyElement = !innerHTML;
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = ".";
                                  -        
                                  -        // Get the position of the target element (that is about to be edited)
                                  -        this.targetOffset = 
                                  -        {
                                  -            x: target.offsetLeft,
                                  -            y: target.offsetTop
                                  -        };
                                  -        
                                  -        // Restore the original innerHTML value of the empty element
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = innerHTML;
                                  -        
                                  -        this.originalClassName = this.box.className;
                                  -
                                  -        var classNames = target.className.split(" ");
                                  -        for (var i = 0; i < classNames.length; ++i)
                                  -            setClass(this.box, "editor-" + classNames[i]);
                                  -
                                  -        // Make the editor match the target's font style
                                  -        copyTextStyles(target, this.box);
                                  -
                                  -        this.setValue(value);
                                  -
                                  -        if (this.fixedWidth)
                                  -            this.updateLayout(true);
                                  -        else
                                  -        {
                                  -            this.startMeasuring(target);
                                  -            this.textSize = this.measureInputText(value);
                                  -
                                  -            // Correct the height of the box to make the funky CSS drop-shadow line up
                                  -            var parent = this.input.parentNode;
                                  -            if (hasClass(parent, "textEditorInner2"))
                                  -            {
                                  -                var yDiff = this.textSize.height - this.shadowExpand;
                                  -                
                                  -                // IE6 height offset
                                  -                if (isIE6)
                                  -                    yDiff -= 2;
                                  -                
                                  -                parent.style.height = yDiff + "px";
                                  -                parent.parentNode.style.height = yDiff + "px";
                                  -            }
                                  -
                                  -            this.updateLayout(true);
                                  -        }
                                  -
                                  -        this.getAutoCompleter().reset();
                                  -
                                  -        if (isIElt8)
                                  -            panel.panelNode.appendChild(this.box);
                                  -        else
                                  -            target.offsetParent.appendChild(this.box);        
                                  -        
                                  -        //console.log(target);
                                  -        //this.input.select(); // it's called bellow, with setTimeout
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            // reset input style
                                  -            this.input.style.fontFamily = "Monospace";
                                  -            this.input.style.fontSize = "11px";
                                  -        }
                                  -
                                  -        // Insert the "expander" to cover the target element with white space
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            copyBoxStyles(target, this.expander);
                                  -
                                  -            target.parentNode.replaceChild(this.expander, target);
                                  -            collapse(target, true);
                                  -            this.expander.parentNode.insertBefore(target, this.expander);
                                  -        }
                                  -
                                  -        //TODO: xxxpedro
                                  -        //scrollIntoCenterView(this.box, null, true);
                                  -        
                                  -        // Display the editor after change its size and position to avoid flickering
                                  -        this.box.style.display = "block";
                                  -        
                                  -        // we need to call input.focus() and input.select() with a timeout, 
                                  -        // otherwise it won't work on all browsers due to timing issues 
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.input.focus();
                                  -            self.input.select();
                                  -        },0);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.box.className = this.originalClassName;
                                  -        
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            this.stopMeasuring();
                                  -
                                  -            collapse(this.target, false);
                                  -
                                  -            if (this.expander.parentNode)
                                  -                this.expander.parentNode.removeChild(this.expander);
                                  -        }
                                  -
                                  -        if (this.box.parentNode)
                                  -        {
                                  -            ///setSelectionRange(this.input, 0, 0);
                                  -            this.input.blur();
                                  -            
                                  -            this.box.parentNode.removeChild(this.box);
                                  -        }
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -        if (!this.fixedWidth)
                                  -            this.textSize = this.measureInputText(this.input.value);
                                  -
                                  -        if (forceAll)
                                  -            this.targetOffset = getClientOffset(this.expander);
                                  -
                                  -        this.updateLayout(false, forceAll);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleter: function()
                                  -    {
                                  -        if (!this.autoCompleter)
                                  -        {
                                  -            this.autoCompleter = new Firebug.AutoCompleter(null,
                                  -                bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this),
                                  -                true, false);
                                  -        }
                                  -
                                  -        return this.autoCompleter;
                                  -    },
                                  -
                                  -    completeValue: function(amt)
                                  -    {
                                  -        //console.log("completeValue");
                                  -        
                                  -        var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); 
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            Firebug.Editor.update(true);
                                  -            
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -        else
                                  -            this.incrementValue(amt);
                                  -    },
                                  -
                                  -    incrementValue: function(amt)
                                  -    {
                                  -        var value = this.input.value;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        if (isIE)
                                  -            var start = getInputSelectionStart(this.input), end = start;
                                  -        else
                                  -            var start = this.input.selectionStart, end = this.input.selectionEnd;
                                  -
                                  -        //debugger;
                                  -        var range = this.getAutoCompleteRange(value, start);
                                  -        if (!range || range.type != "int")
                                  -            range = {start: 0, end: value.length-1};
                                  -
                                  -        var expr = value.substr(range.start, range.end-range.start+1);
                                  -        preExpr = value.substr(0, range.start);
                                  -        postExpr = value.substr(range.end+1);
                                  -
                                  -        // See if the value is an integer, and if so increment it
                                  -        var intValue = parseInt(expr);
                                  -        if (!!intValue || intValue == 0)
                                  -        {
                                  -            var m = /\d+/.exec(expr);
                                  -            var digitPost = expr.substr(m.index+m[0].length);
                                  -
                                  -            var completion = intValue-amt;
                                  -            this.input.value = preExpr + completion + digitPost + postExpr;
                                  -            
                                  -            setSelectionRange(this.input, start, end);
                                  -
                                  -            Firebug.Editor.update(true);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        //console.log("onKeyPress", event);
                                  -        if (event.keyCode == 27 && !this.completeAsYouType)
                                  -        {
                                  -            var reverted = this.getAutoCompleter().revert(this.input);
                                  -            if (reverted)
                                  -                cancelEvent(event);
                                  -        }
                                  -        else if (event.charCode && this.advanceToNext(this.target, event.charCode))
                                  -        {
                                  -            Firebug.Editor.tabNextEditor();
                                  -            cancelEvent(event);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57)
                                  -                && event.charCode != 45 && event.charCode != 46)
                                  -                FBL.cancelEvent(event);
                                  -            else
                                  -            {
                                  -                // If the user backspaces, don't autocomplete after the upcoming input event
                                  -                this.ignoreNextInput = event.keyCode == 8;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onOverflow: function()
                                  -    {
                                  -        this.updateLayout(false, false, 3);
                                  -    },
                                  -
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        //console.log("onKeyDown", event.keyCode);
                                  -        if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8)
                                  -        {
                                  -            this.keyDownPressed = true;
                                  -        }
                                  -    },
                                  -    
                                  -    onInput: function(event)
                                  -    {
                                  -        //debugger;
                                  -        
                                  -        // skip not relevant onpropertychange calls on IE
                                  -        if (isIE)
                                  -        {
                                  -            if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) 
                                  -                return;
                                  -            
                                  -            this.keyDownPressed = false;
                                  -        }
                                  -        
                                  -        //console.log("onInput", event);
                                  -        //console.trace();
                                  -        
                                  -        var selectRangeCallback;
                                  -        
                                  -        if (this.ignoreNextInput)
                                  -        {
                                  -            this.ignoreNextInput = false;
                                  -            this.getAutoCompleter().reset();
                                  -        }
                                  -        else if (this.completeAsYouType)
                                  -            selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false);
                                  -        else
                                  -            this.getAutoCompleter().reset();
                                  -
                                  -        Firebug.Editor.update();
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var popup = $("fbInlineEditorPopup");
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        var menu = this.getContextMenuItems(target);
                                  -        if (menu)
                                  -        {
                                  -            for (var i = 0; i < menu.length; ++i)
                                  -                FBL.createMenuItem(popup, menu[i]);
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -
                                  -        popup.openPopupAtScreen(event.screenX, event.screenY, true);
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateLayout: function(initial, forceAll, extraWidth)
                                  -    {
                                  -        if (this.fixedWidth)
                                  -        {
                                  -            this.box.style.left = (this.targetOffset.x) + "px";
                                  -            this.box.style.top = (this.targetOffset.y) + "px";
                                  -
                                  -            var w = this.target.offsetWidth;
                                  -            var h = this.target.offsetHeight;
                                  -            this.input.style.width = w + "px";
                                  -            this.input.style.height = (h-3) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            if (initial || forceAll)
                                  -            {
                                  -                this.box.style.left = this.targetOffset.x + "px";
                                  -                this.box.style.top = this.targetOffset.y + "px";
                                  -            }
                                  -
                                  -            var approxTextWidth = this.textSize.width;
                                  -            var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x)
                                  -                - this.outerMargin;
                                  -
                                  -            var wrapped = initial
                                  -                ? this.noWrap && this.targetSize.height > this.textSize.height+3
                                  -                : this.noWrap && approxTextWidth > maxWidth;
                                  -
                                  -            if (wrapped)
                                  -            {
                                  -                var style = isIE ?
                                  -                        this.target.currentStyle :
                                  -                        this.target.ownerDocument.defaultView.getComputedStyle(this.target, "");
                                  -                
                                  -                targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight);
                                  -
                                  -                // Make the width fit the remaining x-space from the offset to the far right
                                  -                approxTextWidth = maxWidth - targetMargin;
                                  -
                                  -                this.input.style.width = "100%";
                                  -                this.box.style.width = approxTextWidth + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                // Make the input one character wider than the text value so that
                                  -                // typing does not ever cause the textbox to scroll
                                  -                var charWidth = this.measureInputText('m').width;
                                  -
                                  -                // Sometimes we need to make the editor a little wider, specifically when
                                  -                // an overflow happens, otherwise it will scroll off some text on the left
                                  -                if (extraWidth)
                                  -                    charWidth *= extraWidth;
                                  -
                                  -                var inputWidth = approxTextWidth + charWidth;
                                  -
                                  -                if (initial)
                                  -                {
                                  -                    if (isIE)
                                  -                    {
                                  -                        // TODO: xxxpedro
                                  -                        var xDiff = 13;
                                  -                        this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                    }
                                  -                    else
                                  -                        this.box.style.width = "auto";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // TODO: xxxpedro
                                  -                    var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth;
                                  -                    this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                }
                                  -
                                  -                this.input.style.width = inputWidth + "px";
                                  -            }
                                  -
                                  -            this.expander.style.width = approxTextWidth + "px";
                                  -            this.expander.style.height = Math.max(this.textSize.height-3,0) + "px";
                                  -        }
                                  -
                                  -        if (forceAll)
                                  -            scrollIntoCenterView(this.box, null, true);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Autocompletion
                                  -
                                  -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive)
                                  -{
                                  -    var candidates = null;
                                  -    var originalValue = null;
                                  -    var originalOffset = -1;
                                  -    var lastExpr = null;
                                  -    var lastOffset = -1;
                                  -    var exprOffset = 0;
                                  -    var lastIndex = 0;
                                  -    var preParsed = null;
                                  -    var preExpr = null;
                                  -    var postExpr = null;
                                  -
                                  -    this.revert = function(textBox)
                                  -    {
                                  -        if (originalOffset != -1)
                                  -        {
                                  -            textBox.value = originalValue;
                                  -            
                                  -            setSelectionRange(textBox, originalOffset, originalOffset);
                                  -
                                  -            this.reset();
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            this.reset();
                                  -            return false;
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        candidates = null;
                                  -        originalValue = null;
                                  -        originalOffset = -1;
                                  -        lastExpr = null;
                                  -        lastOffset = 0;
                                  -        exprOffset = 0;
                                  -    };
                                  -
                                  -    this.complete = function(context, textBox, cycle, reverse)
                                  -    {
                                  -        //console.log("complete", context, textBox, cycle, reverse);
                                  -        // TODO: xxxpedro important port to firebug (variable leak)
                                  -        //var value = lastValue = textBox.value;
                                  -        var value = textBox.value;
                                  -        
                                  -        //var offset = textBox.selectionStart;
                                  -        var offset = getInputSelectionStart(textBox);
                                  -        
                                  -        // The result of selectionStart() in Safari/Chrome is 1 unit less than the result
                                  -        // in Firefox. Therefore, we need to manually adjust the value here.
                                  -        if (isSafari && !cycle && offset >= 0) offset++;
                                  -        
                                  -        if (!selectMode && originalOffset != -1)
                                  -            offset = originalOffset;
                                  -
                                  -        if (!candidates || !cycle || offset != lastOffset)
                                  -        {
                                  -            originalOffset = offset;
                                  -            originalValue = value;
                                  -
                                  -            // Find the part of the string that will be parsed
                                  -            var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0;
                                  -            preParsed = value.substr(0, parseStart);
                                  -            var parsed = value.substr(parseStart);
                                  -
                                  -            // Find the part of the string that is being completed
                                  -            var range = getRange ? getRange(parsed, offset-parseStart, context) : null;
                                  -            if (!range)
                                  -                range = {start: 0, end: parsed.length-1 };
                                  -
                                  -            var expr = parsed.substr(range.start, range.end-range.start+1);
                                  -            preExpr = parsed.substr(0, range.start);
                                  -            postExpr = parsed.substr(range.end+1);
                                  -            exprOffset = parseStart + range.start;
                                  -
                                  -            if (!cycle)
                                  -            {
                                  -                if (!expr)
                                  -                    return;
                                  -                else if (lastExpr && lastExpr.indexOf(expr) != 0)
                                  -                {
                                  -                    candidates = null;
                                  -                }
                                  -                else if (lastExpr && lastExpr.length >= expr.length)
                                  -                {
                                  -                    candidates = null;
                                  -                    lastExpr = expr;
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            lastExpr = expr;
                                  -            lastOffset = offset;
                                  -
                                  -            var searchExpr;
                                  -
                                  -            // Check if the cursor is at the very right edge of the expression, or
                                  -            // somewhere in the middle of it
                                  -            if (expr && offset != parseStart+range.end+1)
                                  -            {
                                  -                if (cycle)
                                  -                {
                                  -                    // We are in the middle of the expression, but we can
                                  -                    // complete by cycling to the next item in the values
                                  -                    // list after the expression
                                  -                    offset = range.start;
                                  -                    searchExpr = expr;
                                  -                    expr = "";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // We can't complete unless we are at the ridge edge
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            var values = evaluator(preExpr, expr, postExpr, context);
                                  -            if (!values)
                                  -                return;
                                  -
                                  -            if (expr)
                                  -            {
                                  -                // Filter the list of values to those which begin with expr. We
                                  -                // will then go on to complete the first value in the resulting list
                                  -                candidates = [];
                                  -
                                  -                if (caseSensitive)
                                  -                {
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.indexOf(expr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = caseSensitive ? expr : expr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -
                                  -                lastIndex = reverse ? candidates.length-1 : 0;
                                  -            }
                                  -            else if (searchExpr)
                                  -            {
                                  -                var searchIndex = -1;
                                  -
                                  -                // Find the first instance of searchExpr in the values list. We
                                  -                // will then complete the string that is found
                                  -                if (caseSensitive)
                                  -                {
                                  -                    searchIndex = values.indexOf(expr);
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = searchExpr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                        {
                                  -                            searchIndex = i;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                // Nothing found, so there's nothing to complete to
                                  -                if (searchIndex == -1)
                                  -                    return this.reset();
                                  -
                                  -                expr = searchExpr;
                                  -                candidates = cloneArray(values);
                                  -                lastIndex = searchIndex;
                                  -            }
                                  -            else
                                  -            {
                                  -                expr = "";
                                  -                candidates = [];
                                  -                for (var i = 0; i < values.length; ++i)
                                  -                {
                                  -                    if (values[i].substr)
                                  -                        candidates.push(values[i]);
                                  -                }
                                  -                lastIndex = -1;
                                  -            }
                                  -        }
                                  -
                                  -        if (cycle)
                                  -        {
                                  -            expr = lastExpr;
                                  -            lastIndex += reverse ? -1 : 1;
                                  -        }
                                  -
                                  -        if (!candidates.length)
                                  -            return;
                                  -
                                  -        if (lastIndex >= candidates.length)
                                  -            lastIndex = 0;
                                  -        else if (lastIndex < 0)
                                  -            lastIndex = candidates.length-1;
                                  -
                                  -        var completion = candidates[lastIndex];
                                  -        var preCompletion = expr.substr(0, offset-exprOffset);
                                  -        var postCompletion = completion.substr(offset-exprOffset);
                                  -
                                  -        textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr;
                                  -        var offsetEnd = preParsed.length + preExpr.length + completion.length;
                                  -        
                                  -        // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange()
                                  -        // is working well.
                                  -        /*
                                  -        if (textBox.setSelectionRange)
                                  -        {
                                  -            // we must select the range with a timeout, otherwise the text won't
                                  -            // be properly selected (because after this function executes, the editor's
                                  -            // input will be resized to fit the whole text)
                                  -            setTimeout(function(){
                                  -                if (selectMode)
                                  -                    textBox.setSelectionRange(offset, offsetEnd);
                                  -                else
                                  -                    textBox.setSelectionRange(offsetEnd, offsetEnd);
                                  -            },0);
                                  -        }
                                  -        /**/
                                  -        
                                  -        // we must select the range with a timeout, otherwise the text won't
                                  -        // be properly selected (because after this function executes, the editor's
                                  -        // input will be resized to fit the whole text)
                                  -        /*
                                  -        setTimeout(function(){
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        },0);
                                  -                
                                  -        return true;
                                  -        /**/
                                  -        
                                  -        // The editor text should be selected only after calling the editor.update() 
                                  -        // in Safari/Chrome, otherwise the text won't be selected. So, we're returning
                                  -        // a function to be called later (in the proper time for all browsers).
                                  -        //
                                  -        // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid
                                  -        // returning a closure. the complete() function seems to be called only twice in
                                  -        // editor.js. See if this function is called anywhere else (like css.js for example).
                                  -        return function(){
                                  -            //console.log("autocomplete ", textBox, offset, offsetEnd);
                                  -            
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        };
                                  -        /**/
                                  -    };
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getDefaultEditor = function getDefaultEditor(panel)
                                  -{
                                  -    if (!defaultEditor)
                                  -    {
                                  -        var doc = panel.document;
                                  -        defaultEditor = new Firebug.InlineEditor(doc);
                                  -    }
                                  -
                                  -    return defaultEditor;
                                  -}
                                  -
                                  -/**
                                  - * An outsider is the first element matching the stepper element that
                                  - * is not an child of group. Elements tagged with insertBefore or insertAfter
                                  - * classes are also excluded from these results unless they are the sibling
                                  - * of group, relative to group's parent editGroup. This allows for the proper insertion
                                  - * rows when groups are nested.
                                  - */
                                  -var getOutsider = function getOutsider(element, group, stepper)
                                  -{
                                  -    var parentGroup = getAncestorByClass(group.parentNode, "editGroup");
                                  -    var next;
                                  -    do
                                  -    {
                                  -        next = stepper(next || element);
                                  -    }
                                  -    while (isAncestor(next, group) || isGroupInsert(next, parentGroup));
                                  -
                                  -    return next;
                                  -}
                                  -
                                  -var isGroupInsert = function isGroupInsert(next, group)
                                  -{
                                  -    return (!group || isAncestor(next, group))
                                  -        && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter"));
                                  -}
                                  -
                                  -var getNextOutsider = function getNextOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getNextByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getPreviousOutsider = function getPreviousOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getInlineParent = function getInlineParent(element)
                                  -{
                                  -    var lastInline = element;
                                  -    for (; element; element = element.parentNode)
                                  -    {
                                  -        //var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        var s = isIE ?
                                  -                element.currentStyle :
                                  -                element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        
                                  -        if (s.display != "inline")
                                  -            return lastInline;
                                  -        else
                                  -            lastInline = element;
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -var insertTab = function insertTab()
                                  -{
                                  -    insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Editor);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (Env.Options.disableXHRListener)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -// XHRSpy
                                  -    
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// XMLHttpRequestWrapper
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal variables
                                  -    
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal methods
                                  -    
                                  -    var updateSelfPropertiesIgnore = {
                                  -        abort: 1,
                                  -        channel: 1,
                                  -        getAllResponseHeaders: 1,
                                  -        getInterface: 1,
                                  -        getResponseHeader: 1,
                                  -        mozBackgroundRequest: 1,
                                  -        multipart: 1,
                                  -        onreadystatechange: 1,
                                  -        open: 1,
                                  -        send: 1,
                                  -        setRequestHeader: 1
                                  -    };
                                  -    
                                  -    var updateSelfProperties = function()
                                  -    {
                                  -        if (supportsXHRIterator)
                                  -        {
                                  -            for (var propName in xhrRequest)
                                  -            {
                                  -                if (propName in updateSelfPropertiesIgnore)
                                  -                    continue;
                                  -                
                                  -                try
                                  -                {
                                  -                    var propValue = xhrRequest[propName];
                                  -                    
                                  -                    if (propValue && !isFunction(propValue))
                                  -                        self[propName] = propValue;
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    //console.log(propName, E.message);
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // will fail to read these xhrRequest properties if the request is not completed
                                  -            if (xhrRequest.readyState == 4)
                                  -            {
                                  -                self.status = xhrRequest.status;
                                  -                self.statusText = xhrRequest.statusText;
                                  -                self.responseText = xhrRequest.responseText;
                                  -                self.responseXML = xhrRequest.responseXML;
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var updateXHRPropertiesIgnore = {
                                  -        channel: 1,
                                  -        onreadystatechange: 1,
                                  -        readyState: 1,
                                  -        responseBody: 1,
                                  -        responseText: 1,
                                  -        responseXML: 1,
                                  -        status: 1,
                                  -        statusText: 1,
                                  -        upload: 1
                                  -    };
                                  -    
                                  -    var updateXHRProperties = function()
                                  -    {
                                  -        for (var propName in self)
                                  -        {
                                  -            if (propName in updateXHRPropertiesIgnore)
                                  -                continue;
                                  -            
                                  -            try
                                  -            {
                                  -                var propValue = self[propName];
                                  -                
                                  -                if (propValue && !xhrRequest[propName])
                                  -                {
                                  -                    xhrRequest[propName] = propValue;
                                  -                }
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                //console.log(propName, E.message);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var logXHR = function() 
                                  -    {
                                  -        var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR);
                                  -        
                                  -        if (row)
                                  -        {
                                  -            setClass(row, "loading");
                                  -            spy.logRow = row;
                                  -        }
                                  -    };
                                  -    
                                  -    var finishXHR = function() 
                                  -    {
                                  -        var duration = new Date().getTime() - reqStartTS;
                                  -        var success = xhrRequest.status == 200;
                                  -        
                                  -        var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -        var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : [];
                                  -        var reHeader = /^(\S+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, l=responses.length; i<l; i++)
                                  -        {
                                  -            var text = responses[i];
                                  -            var match = text.match(reHeader);
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var name = match[1];
                                  -                var value = match[2];
                                  -                
                                  -                // update the spy mimeType property so we can detect when to show 
                                  -                // custom response viewers (such as HTML, XML or JSON viewer)
                                  -                if (name == "Content-Type")
                                  -                    spy.mimeType = value;
                                  -                
                                  -                /*
                                  -                if (name == "Last Modified")
                                  -                {
                                  -                    if (!spy.cacheEntry)
                                  -                        spy.cacheEntry = [];
                                  -                    
                                  -                    spy.cacheEntry.push({
                                  -                       name: [name],
                                  -                       value: [value]
                                  -                    });
                                  -                }
                                  -                /**/
                                  -                
                                  -                spy.responseHeaders.push({
                                  -                   name: [name],
                                  -                   value: [value]
                                  -                });
                                  -            }
                                  -        }
                                  -            
                                  -        with({
                                  -            row: spy.logRow, 
                                  -            status: xhrRequest.status == 0 ? 
                                  -                        // if xhrRequest.status == 0 then accessing xhrRequest.statusText
                                  -                        // will cause an error, so we must handle this case (Issue 3504)
                                  -                        "" : xhrRequest.status + " " + xhrRequest.statusText, 
                                  -            time: duration,
                                  -            success: success
                                  -        })
                                  -        {
                                  -            setTimeout(function(){
                                  -                
                                  -                spy.responseText = xhrRequest.responseText;
                                  -                
                                  -                // update row information to avoid "ethernal spinning gif" bug in IE 
                                  -                row = row || spy.logRow;
                                  -                
                                  -                // if chrome document is not loaded, there will be no row yet, so just ignore
                                  -                if (!row) return;
                                  -                
                                  -                // update the XHR representation data
                                  -                handleRequestStatus(success, status, time);
                                  -                
                                  -            },200);
                                  -        }
                                  -        
                                  -        spy.loaded = true;
                                  -        /*
                                  -        // commented because they are being updated by the updateSelfProperties() function
                                  -        self.status = xhrRequest.status;
                                  -        self.statusText = xhrRequest.statusText;
                                  -        self.responseText = xhrRequest.responseText;
                                  -        self.responseXML = xhrRequest.responseXML;
                                  -        /**/
                                  -        updateSelfProperties();
                                  -    };
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log(["onreadystatechange", xhrRequest.readyState, xhrRequest.readyState == 4 && xhrRequest.status]);
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            finishXHR();
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    // update the XHR representation data
                                  -    var handleRequestStatus = function(success, status, time)
                                  -    {
                                  -        var row = spy.logRow;
                                  -        FBL.removeClass(row, "loading");
                                  -        
                                  -        if (!success)
                                  -            FBL.setClass(row, "error");
                                  -        
                                  -        var item = FBL.$$(".spyStatus", row)[0];
                                  -        item.innerHTML = status;
                                  -        
                                  -        if (time)
                                  -        {
                                  -            var item = FBL.$$(".spyTime", row)[0];
                                  -            item.innerHTML = time + "ms";
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public properties and handlers
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public methods
                                  -    
                                  -    this.open = function(method, url, async, user, password)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        updateSelfProperties();
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        spy.urlParams = parseURLParamsArray(url);
                                  -        
                                  -        try
                                  -        {
                                  -            // xhrRequest.open.apply may not be available in IE
                                  -            if (supportsApply)
                                  -                xhrRequest.open.apply(xhrRequest, arguments);
                                  -            else
                                  -                xhrRequest.open(method, url, async, user, password);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        spy.data = data;
                                  -        
                                  -        reqStartTS = new Date().getTime();
                                  -        
                                  -        updateXHRProperties();
                                  -        
                                  -        try
                                  -        {
                                  -            xhrRequest.send(data);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            // TODO: xxxpedro XHR throws or not?
                                  -            //throw e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            logXHR();
                                  -            
                                  -            if (!spy.async)
                                  -            {
                                  -                self.readyState = xhrRequest.readyState;
                                  -                
                                  -                // sometimes an error happens when calling finishXHR()
                                  -                // Issue 3422: Firebug Lite breaks Google Instant Search
                                  -                try
                                  -                {
                                  -                    finishXHR();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        return xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        xhrRequest.abort();
                                  -        updateSelfProperties();
                                  -        handleRequestStatus(false, "Aborted");
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    /**/
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Clone XHR object
                                  -
                                  -    // xhrRequest.open.apply not available in IE and will throw an error in 
                                  -    // IE6 by simply reading xhrRequest.open so we must sniff it
                                  -    var supportsApply = !isIE6 &&
                                  -            xhrRequest && 
                                  -            xhrRequest.open && 
                                  -            typeof xhrRequest.open.apply != "undefined";
                                  -    
                                  -    var numberOfXHRProperties = 0;
                                  -    for (var propName in xhrRequest)
                                  -    {
                                  -        numberOfXHRProperties++;
                                  -        
                                  -        if (propName in updateSelfPropertiesIgnore)
                                  -            continue;
                                  -        
                                  -        try
                                  -        {
                                  -            var propValue = xhrRequest[propName];
                                  -            
                                  -            if (isFunction(propValue))
                                  -            {
                                  -                if (typeof self[propName] == "undefined")
                                  -                {
                                  -                    this[propName] = (function(name, xhr){
                                  -                    
                                  -                        return supportsApply ?
                                  -                            // if the browser supports apply 
                                  -                            function()
                                  -                            {
                                  -                                return xhr[name].apply(xhr, arguments);
                                  -                            }
                                  -                            :
                                  -                            function(a,b,c,d,e)
                                  -                            {
                                  -                                return xhr[name](a,b,c,d,e);
                                  -                            };
                                  -                    
                                  -                    })(propName, xhrRequest);
                                  -                } 
                                  -            }
                                  -            else
                                  -                this[propName] = propValue;
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            //console.log(propName, E.message);
                                  -        }
                                  -    }
                                  -    
                                  -    // IE6 does not support for (var prop in XHR)
                                  -    var supportsXHRIterator = numberOfXHRProperties > 0;
                                  -    
                                  -    /**/
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ActiveXObject Wrapper (IE6 only)
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    _ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new _ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Register the XMLHttpRequestWrapper for non-IE6 browsers
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    };
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -
                                  -FBL.getNativeXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new _XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new _ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -        this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]);
                                  -        this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]);
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                var postText = $$(".netInfoPostText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                var putText = $$(".netInfoPutText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else ///if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            
                                  -            ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0];
                                  -            
                                  -            ///iframe.contentWindow.document.body.innerHTML = text;
                                  -            
                                  -            // TODO: xxxpedro net - remove scripts
                                  -            var reScript = /<script(.|\s)*?\/script>/gi;
                                  -            
                                  -            text = text.replace(reScript, "");
                                  -                
                                  -            iframe.contentWindow.document.write(text);
                                  -            iframe.contentWindow.document.close();
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0];
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0];
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        ///var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        var sourceNode = $$(".source", node)[0];
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents posted data within request info (the info, which is visible when
                                  - * a request entry is expanded. This template renders content of the Post tab.
                                  - */
                                  -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/
                                  -{
                                  -    // application/x-www-form-urlencoded
                                  -    paramsTable:
                                  -        TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")},
                                  -                TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
                                  -                    TD({colspan: 3, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parameters"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "application/x-www-form-urlencoded"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // multipart/form-data
                                  -    partsTable:
                                  -        TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parts")},
                                  -                TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role":"presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parts"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "multipart/form-data"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/json
                                  -    jsonTable:
                                  -        TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")},
                                  -            TBODY({"role": "list", "aria-label": $STR("JSON")},
                                  -                TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            ///$STR("jsonviewer.tab.JSON")
                                  -                            $STR("JSON")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostJSONBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/xml
                                  -    xmlTable:
                                  -        TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")},
                                  -                TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("xmlviewer.tab.XML")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostXMLBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTable:
                                  -        TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Source")},
                                  -                TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostSource"},
                                  -                            $STR("net.label.Source")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceBodyTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                FOR("line", "$param|getParamValueIterator",
                                  -                    CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        return NetInfoBody.getParamValueIterator(param);
                                  -    },
                                  -
                                  -    render: function(context, parentNode, file)
                                  -    {
                                  -        //debugger;
                                  -        var spy = getAncestorByClass(parentNode, "spyHead");
                                  -        var spyObject = spy.repObject;
                                  -        var data = spyObject.data;
                                  -        
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        var contentType = file.mimeType;
                                  -        
                                  -        ///var text = Utils.getPostText(file, context, true);
                                  -        ///if (text == undefined)
                                  -        ///    return;
                                  -
                                  -        ///if (Utils.isURLEncodedRequest(file, context))
                                  -        // fake Utils.isURLEncodedRequest identification
                                  -        if (contentType && contentType == "application/x-www-form-urlencoded" ||
                                  -            data && data.indexOf("=") != -1) 
                                  -        {
                                  -            ///var lines = text.split("\n");
                                  -            ///var params = parseURLEncodedText(lines[lines.length-1]);
                                  -            var params = parseURLEncodedTextArray(data);
                                  -            if (params)
                                  -                this.insertParameters(parentNode, params);
                                  -        }
                                  -
                                  -        ///if (Utils.isMultiPartRequest(file, context))
                                  -        ///{
                                  -        ///    var data = this.parseMultiPartText(file, context);
                                  -        ///    if (data)
                                  -        ///        this.insertParts(parentNode, data);
                                  -        ///}
                                  -
                                  -        // moved to the top
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -
                                  -        ///if (Firebug.JSONViewerModel.isJSON(contentType))
                                  -        var jsonData = {
                                  -            responseText: data
                                  -        };
                                  -        
                                  -        if (Firebug.JSONViewerModel.isJSON(contentType, data))
                                  -            ///this.insertJSON(parentNode, file, context);
                                  -            this.insertJSON(parentNode, jsonData, context);
                                  -
                                  -        ///if (Firebug.XMLViewerModel.isXML(contentType))
                                  -        ///    this.insertXML(parentNode, file, context);
                                  -
                                  -        ///var postText = Utils.getPostText(file, context);
                                  -        ///postText = Utils.formatPostText(postText);
                                  -        var postText = data;
                                  -        if (postText)
                                  -            this.insertSource(parentNode, postText);
                                  -    },
                                  -
                                  -    insertParameters: function(parentNode, params)
                                  -    {
                                  -        if (!params || !params.length)
                                  -            return;
                                  -
                                  -        var paramTable = this.paramsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostParamsTitle", paramTable)[0];
                                  -        //var paramTable = this.paramsTable.append(null, parentNode);
                                  -        //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
                                  -        
                                  -        var tbody = paramTable.getElementsByTagName("tbody")[0];
                                  -        
                                  -        NetInfoBody.headerDataTag.insertRows({headers: params}, row);
                                  -    },
                                  -
                                  -    insertParts: function(parentNode, data)
                                  -    {
                                  -        if (!data.params || !data.params.length)
                                  -            return;
                                  -
                                  -        var partsTable = this.partsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostPartsTitle", paramTable)[0];
                                  -        //var partsTable = this.partsTable.append(null, parentNode);
                                  -        //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
                                  -    },
                                  -
                                  -    insertJSON: function(parentNode, file, context)
                                  -    {
                                  -        ///var text = Utils.getPostText(file, context);
                                  -        var text = file.responseText;
                                  -        ///var data = parseJSONString(text, "http://" + file.request.originalURI.host);
                                  -        var data = parseJSONString(text);
                                  -        if (!data)
                                  -            return;
                                  -
                                  -        ///var jsonTable = this.jsonTable.append(null, parentNode);
                                  -        var jsonTable = this.jsonTable.append({}, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0];
                                  -
                                  -        if (!this.toggles)
                                  -            this.toggles = {};
                                  -
                                  -        Firebug.DOMPanel.DirTable.tag.replace(
                                  -            {object: data, toggles: this.toggles}, jsonBody);
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -
                                  -        var jsonTable = this.xmlTable.append(null, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0];
                                  -
                                  -        Firebug.XMLViewerModel.insertXML(jsonBody, text);
                                  -    },
                                  -
                                  -    insertSource: function(parentNode, text)
                                  -    {
                                  -        var sourceTable = this.sourceTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostSourceTitle", sourceTable)[0];
                                  -        //var sourceTable = this.sourceTable.append(null, parentNode);
                                  -        //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
                                  -
                                  -        var param = {value: [text]};
                                  -        this.sourceBodyTag.insertRows({param: param}, row);
                                  -    },
                                  -
                                  -    parseMultiPartText: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text == undefined)
                                  -            return null;
                                  -
                                  -        FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
                                  -
                                  -        var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
                                  -
                                  -        var divider = "\r\n\r\n";
                                  -        var bodyStart = text.indexOf(divider);
                                  -        var body = text.substr(bodyStart + divider.length);
                                  -
                                  -        var postData = {};
                                  -        postData.mimeType = "multipart/form-data";
                                  -        postData.params = [];
                                  -
                                  -        var parts = body.split("--" + boundary);
                                  -        for (var i=0; i<parts.length; i++)
                                  -        {
                                  -            var part = parts[i].split(divider);
                                  -            if (part.length != 2)
                                  -                continue;
                                  -
                                  -            var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -            postData.params.push({
                                  -                name: (m && m.length > 1) ? m[1] : "",
                                  -                value: trim(part[1])
                                  -            });
                                  -        }
                                  -
                                  -        return postData;
                                  -    }
                                  -});
                                  -
                                  -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a;};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy, logRow);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow)
                                  -{
                                  -    if (!spy.logRow && logRow)
                                  -        spy.logRow = logRow;
                                  -    
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// List of JSON content types.
                                  -var contentTypes =
                                  -{
                                  -    // TODO: create issue: jsonViewer will not try to evaluate the contents of the requested file 
                                  -    // if the content-type is set to "text/plain"
                                  -    //"text/plain": 1,
                                  -    "text/javascript": 1,
                                  -    "text/x-javascript": 1,
                                  -    "text/json": 1,
                                  -    "text/x-json": 1,
                                  -    "application/json": 1,
                                  -    "application/x-json": 1,
                                  -    "application/javascript": 1,
                                  -    "application/x-javascript": 1,
                                  -    "application/json-rpc": 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -Firebug.JSONViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "jsonViewer",
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -
                                  -        // Used by Firebug.DOMPanel.DirTable domplate.
                                  -        this.toggles = {};
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_JSONVIEWER)
                                  -            FBTrace.sysout("jsonviewer.initTabBody", infoBox);
                                  -
                                  -        // Let listeners to parse the JSON.
                                  -        dispatch(this.fbListeners, "onParseJSON", [file]);
                                  -
                                  -        // The JSON is still no there, try to parse most common cases.
                                  -        if (!file.jsonObject)
                                  -        {
                                  -            ///if (this.isJSON(safeGetContentType(file.request), file.responseText))
                                  -            if (this.isJSON(file.mimeType, file.responseText))
                                  -                file.jsonObject = this.parseJSON(file);
                                  -        }
                                  -
                                  -        // The jsonObject is created so, the JSON tab can be displayed.
                                  -        if (file.jsonObject && hasProperties(file.jsonObject))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
                                  -                ///$STR("jsonviewer.tab.JSON"));
                                  -                $STR("JSON"));
                                  -
                                  -            if (FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
                                  -                    (typeof(file.jsonObject) != "undefined"), file.jsonObject);
                                  -        }
                                  -    },
                                  -
                                  -    isJSON: function(contentType, data)
                                  -    {
                                  -        // Workaround for JSON responses without proper content type
                                  -        // Let's consider all responses starting with "{" as JSON. In the worst
                                  -        // case there will be an exception when parsing. This means that no-JSON
                                  -        // responses (and post data) (with "{") can be parsed unnecessarily,
                                  -        // which represents a little overhead, but this happens only if the request
                                  -        // is actually expanded by the user in the UI (Net & Console panels).
                                  -        
                                  -        ///var responseText = data ? trimLeft(data) : null;
                                  -        ///if (responseText && responseText.indexOf("{") == 0)
                                  -        ///    return true;
                                  -        var responseText = data ? trim(data) : null;
                                  -        if (responseText && responseText.indexOf("{") == 0)
                                  -            return true;
                                  -
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        contentType = contentType.split(";")[0];
                                  -        contentType = trim(contentType);
                                  -        return contentTypes[contentType];
                                  -    },
                                  -
                                  -    // Update listener for TabView
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
                                  -        var tabBody = $$(".netInfoJSONText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        if (file.jsonObject) {
                                  -            Firebug.DOMPanel.DirTable.tag.replace(
                                  -                 {object: file.jsonObject, toggles: this.toggles}, tabBody);
                                  -        }
                                  -    },
                                  -
                                  -    parseJSON: function(file)
                                  -    {
                                  -        var jsonString = new String(file.responseText);
                                  -        ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
                                  -        return parseJSONString(jsonString);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.JSONViewerModel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -// List of XML related content types.
                                  -var xmlContentTypes =
                                  -[
                                  -    "text/xml",
                                  -    "application/xml",
                                  -    "application/xhtml+xml",
                                  -    "application/rss+xml",
                                  -    "application/atom+xml",,
                                  -    "application/vnd.mozilla.maybe.feed",
                                  -    "application/rdf+xml",
                                  -    "application/vnd.mozilla.xul+xml"
                                  -];
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -/**
                                  - * @module Implements viewer for XML based network responses. In order to create a new
                                  - * tab wihin network request detail, a listener is registered into
                                  - * <code>Firebug.NetMonitor.NetInfoBody</code> object.
                                  - */
                                  -Firebug.XMLViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "xmlViewer",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.shutdown.apply(this, arguments);
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    /**
                                  -     * Check response's content-type and if it's a XML, create a new tab with XML preview.
                                  -     */
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.initTabBody", infoBox);
                                  -
                                  -        // If the response is XML let's display a pretty preview.
                                  -        ///if (this.isXML(safeGetContentType(file.request)))
                                  -        if (this.isXML(file.mimeType, file.responseText))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
                                  -                ///$STR("xmlviewer.tab.XML"));
                                  -                $STR("XML"));
                                  -
                                  -            if (FBTrace.DBG_XMLVIEWER)
                                  -                FBTrace.sysout("xmlviewer.initTabBody; XML response available");
                                  -        }
                                  -    },
                                  -
                                  -    isXML: function(contentType)
                                  -    {
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        // Look if the response is XML based.
                                  -        for (var i=0; i<xmlContentTypes.length; i++)
                                  -        {
                                  -            if (contentType.indexOf(xmlContentTypes[i]) == 0)
                                  -                return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Parse XML response and render pretty printed preview.
                                  -     */
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
                                  -        var tabBody = $$(".netInfoXMLText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoXMLTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        this.insertXML(tabBody, Firebug.NetMonitor.Utils.getResponseText(file, context));
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, text)
                                  -    {
                                  -        var xmlText = text.replace(/^\s*<?.+?>\s*/, "");
                                  -        
                                  -        var div = parentNode.ownerDocument.createElement("div");
                                  -        div.innerHTML = xmlText;
                                  -        
                                  -        var root = div.getElementsByTagName("*")[0];
                                  -    
                                  -        /***
                                  -        var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
                                  -        var doc = parser.parseFromString(text, "text/xml");
                                  -        var root = doc.documentElement;
                                  -
                                  -        // Error handling
                                  -        var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
                                  -        if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
                                  -        {
                                  -            this.ParseError.tag.replace({error: {
                                  -                message: root.firstChild.nodeValue,
                                  -                source: root.lastChild.textContent
                                  -            }}, parentNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
                                  -
                                  -        // Override getHidden in these templates. The parsed XML documen is
                                  -        // hidden, but we want to display it using 'visible' styling.
                                  -        /*
                                  -        var templates = [
                                  -            Firebug.HTMLPanel.CompleteElement,
                                  -            Firebug.HTMLPanel.Element,
                                  -            Firebug.HTMLPanel.TextElement,
                                  -            Firebug.HTMLPanel.EmptyElement,
                                  -            Firebug.HTMLPanel.XEmptyElement,
                                  -        ];
                                  -
                                  -        var originals = [];
                                  -        for (var i=0; i<templates.length; i++)
                                  -        {
                                  -            originals[i] = templates[i].getHidden;
                                  -            templates[i].getHidden = function() {
                                  -                return "";
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        // Generate XML preview.
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: root}, parentNode);
                                  -        var html = [];
                                  -        Firebug.Reps.appendNode(root, html);
                                  -        parentNode.innerHTML = html.join("");
                                  -        
                                  -
                                  -        /*
                                  -        for (var i=0; i<originals.length; i++)
                                  -            templates[i].getHidden = originals[i];/**/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Domplate
                                  -
                                  -/**
                                  - * @domplate Represents a template for displaying XML parser errors. Used by
                                  - * <code>Firebug.XMLViewerModel</code>.
                                  - */
                                  -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "xmlInfoError"},
                                  -            DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
                                  -            PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
                                  -        ),
                                  -
                                  -    getSource: function(error)
                                  -    {
                                  -        var parts = error.source.split("\n");
                                  -        if (parts.length != 2)
                                  -            return error.source;
                                  -
                                  -        var limit = 50;
                                  -        var column = parts[1].length;
                                  -        if (column >= limit) {
                                  -            parts[0] = "..." + parts[0].substr(column - limit);
                                  -            parts[1] = "..." + parts[1].substr(column - limit);
                                  -        }
                                  -
                                  -        if (parts[0].length > 80)
                                  -            parts[0] = parts[0].substr(0, 80) + "...";
                                  -
                                  -        return parts.join("\n");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.XMLViewerModel);
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -/*
                                  -
                                  -// new offline message handler
                                  -o = {x:1,y:2};
                                  -
                                  -r = Firebug.getRep(o);
                                  -
                                  -r.tag.tag.compile();
                                  -
                                  -outputs = [];
                                  -html = r.tag.renderHTML({object:o}, outputs);
                                  -
                                  -
                                  -// finish rendering the template (the DOM part)
                                  -target = $("build");
                                  -target.innerHTML = html;
                                  -root = target.firstChild;
                                  -
                                  -domArgs = [root, r.tag.context, 0];
                                  -domArgs.push.apply(domArgs, r.tag.domArgs);
                                  -domArgs.push.apply(domArgs, outputs);
                                  -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs);
                                  -
                                  -
                                  - */
                                  -var consoleQueue = [];
                                  -var lastHighlightedObject;
                                  -var FirebugContext = Env.browser;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -            else
                                  -            {
                                  -                consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            //context = FirebugContext;
                                  -            context = Firebug.context;
                                  -
                                  -        /*
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -        /**/
                                  -        
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -        {
                                  -            panel.clear();
                                  -        }
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -    
                                  -    flush: function()
                                  -    {
                                  -        dispatch(this.fbListeners,"flush",[]);
                                  -        
                                  -        for (var i=0, length=consoleQueue.length; i<length; i++)
                                  -        {
                                  -            var args = consoleQueue[i];
                                  -            this.logRow.apply(this, args);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {}; // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // TODO: xxxpedro console2
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        if (!Firebug.Inspector) return;
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -    
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        var repObject = object ? object.repObject : null;
                                  -        
                                  -        if (!repObject)
                                  -        {
                                  -            return;
                                  -        }
                                  -        
                                  -        if (hasClass(object, "objectLink-object"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(repObject, true);
                                  -        }
                                  -        else if (hasClass(object, "objectLink-element"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -            Firebug.chrome.getPanel("HTML").select(repObject, true);
                                  -        }
                                  -        
                                  -        /*
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        /**/
                                  -        
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    //searchable: true,
                                  -    //breakable: true,
                                  -    //editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: false
                                  -    },
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.getPanelDocument(Firebug.ConsolePanel);
                                  -        this.onMouseMove = bind(this.onMouseMove, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            caption: "Clear",
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //Firebug.Console.injector.install(Firebug.browser.window);
                                  -        
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseMove);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        //consolex.trace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        //removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -    
                                  -var frameCounters = {};
                                  -var traceRecursion = 0;
                                  -
                                  -Firebug.Console.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupCollapsed",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments);};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -                c.firebuglite = Firebug.version;
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox;
                                  -        
                                  -        if (win.console)
                                  -        {
                                  -            if (Env.Options.overrideConsole)
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            else
                                  -                // if there's a console object and overrideConsole is false we should just quit
                                  -                return;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                // try overriding the console object
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                // if something goes wrong create the firebug object instead
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            }
                                  -        }
                                  -        
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebuglite = Firebug.version;    
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        //TODO: xxxpedro console error
                                  -        //if (arguments.length == 1)
                                  -        //{
                                  -        //    logAssert("error", arguments);  // add more info based on stack trace
                                  -        //}
                                  -        //else
                                  -        //{
                                  -            //Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        //}
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        // TODO: xxxpedro console2: is there a better way to find a unique ID for the coun() call?
                                  -        var frameId = "0";
                                  -        //var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!frameCounters)
                                  -                frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -            {
                                  -                return f.getName();
                                  -            }
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -            {
                                  -                return f.name;
                                  -            }
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        traceRecursion++;
                                  -        
                                  -        if (traceRecursion > 1)
                                  -        {
                                  -            traceRecursion--;
                                  -            return;
                                  -        }
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        
                                  -        try
                                  -        {
                                  -            (0)();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var result = e;
                                  -            
                                  -            var stack = 
                                  -                result.stack || // Firefox / Google Chrome 
                                  -                result.stacktrace || // Opera
                                  -                "";
                                  -            
                                  -            stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -            var items = stack.split(/[\n\r]/);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Google Chrome
                                  -            if (FBL.isSafari)
                                  -            {
                                  -                //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -                //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                
                                  -                var reChromeStackItemName = /\s*\($/;
                                  -                var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=4, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos];
                                  -                    var item = items[i];
                                  -                    var match = item.match(reChromeStackItem);
                                  -                    
                                  -                    //Firebug.Console.log("["+ framePos +"]--------------------------");
                                  -                    //Firebug.Console.log(item);
                                  -                    //Firebug.Console.log("................");
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        if (name)
                                  -                        {
                                  -                            name = name.replace(reChromeStackItemName, "");
                                  -                            frame.name = name; 
                                  -                        }
                                  -                        
                                  -                        //Firebug.Console.log("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reChromeStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("url: "+value[1]);
                                  -                            //Firebug.Console.log("line: "+value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            else if (FBL.isFirefox)
                                  -            {
                                  -                // Firefox
                                  -                var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -                var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=2, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos] || {};
                                  -                    var item = items[i];
                                  -                    var match = item.match(reFirefoxStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        
                                  -                        //Firebug.Console.logFormatted("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reFirefoxStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("href: "+ value[1]);
                                  -                            //Firebug.Console.log("line: " + value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.logFormatted([match[2]]);
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            /*
                                  -            else if (FBL.isOpera)
                                  -            {
                                  -                // Opera
                                  -                var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -                var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -                
                                  -                for (var i=0, length=items.length; i<length; i+=2)
                                  -                {
                                  -                    var item = items[i];
                                  -                    
                                  -                    var match = item.match(reOperaStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        //Firebug.Console.log(match[1]);
                                  -                        
                                  -                        var value = match[2].match(reOperaStackItemValue);
                                  -                        
                                  -                        if (value)
                                  -                        {
                                  -                            //Firebug.Console.log(value[1]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                        //Firebug.Console.log("--------------------------");
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -        }
                                  -        
                                  -        //console.log(stack);
                                  -        //console.dir(frames);
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -        
                                  -        traceRecursion--;
                                  -    };
                                  -    
                                  -    this.trace_ok = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return;
                                  -        //return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    var win = Env.browser.window;
                                  -    Firebug.Console.injector.install(win);
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    Firebug.context.persistedState.commandHistory.push(command);
                                  -    Firebug.context.persistedState.commandPointer = 
                                  -        Firebug.context.persistedState.commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        defineCommandLineAPI();
                                  -        
                                  -         Firebug.context.persistedState.commandHistory =  
                                  -             Firebug.context.persistedState.commandHistory || [];
                                  -
                                  -         Firebug.context.persistedState.commandPointer =  
                                  -             Firebug.context.persistedState.commandPointer || -1;
                                  -        
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null;
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API";
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        Firebug.Console.log(commandPrefix + " " + stripNewLines(command), 
                                  -                Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        Firebug.Console.log(result);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.commandPointer > 0 && 
                                  -            Firebug.context.persistedState.commandHistory.length > 0)
                                  -        {
                                  -            this.element.value = Firebug.context.persistedState.commandHistory
                                  -                                    [--Firebug.context.persistedState.commandPointer];
                                  -        }
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = Firebug.context.persistedState.commandHistory.length -1;
                                  -        var i = Firebug.context.persistedState.commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = Firebug.context.persistedState.commandHistory
                                  -                              [++Firebug.context.persistedState.commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++Firebug.context.persistedState.commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        href = href || "";
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        var html = [
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          ];
                                  -        
                                  -        // TODO: xxxpedro ajust to Console2
                                  -        //Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id);
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: function(o)
                                  -    {
                                  -        Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable);
                                  -    },
                                  -
                                  -    dirxml: function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var defineCommandLineAPI = function defineCommandLineAPI()
                                  -{
                                  -    Firebug.CommandLine.API = {};
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -    
                                  -    var stack = FirebugChrome.htmlSelectionStack;
                                  -    if (stack)
                                  -    {
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var cacheID = Firebug.Lite.Cache.ID;
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    // ignores also the cache property injected by firebug
                                  -    ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = ElementCache(node);
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                // FIXME xxxpedro remove this
                                  -                //var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || 
                                  -                        // Issue 4432:  Firebug Lite: HTML is mixed-up with functions
                                  -                        // The problem here is that expando properties added to DOM elements in 
                                  -                        // IE < 9 will behave like DOM attributes and so they'll show up when
                                  -                        // looking at element.attributes list. 
                                  -                        isIE && (browserVersion-0<9) && typeof attr.nodeValue != "string" ||
                                  -                        Firebug.ignoreFirebugElements && ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;');
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="sourceCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.getPanelDocument(HTMLPanel);
                                  -        var uid = treeNode.id;
                                  -        var parentNode = ElementCache.get(uid);
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>';
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && ElementCache(el);
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = ElementCache.get(id).parentNode;
                                  -
                                  -            if (node)
                                  -                id = ElementCache(node);
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -            
                                  -            if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        // FIXME: xxxpedro chromenew - this isn't working after detaching the UI
                                  -        if (fbPanel1)
                                  -            fbPanel1.parentNode.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -        
                                  -        // FIXME: IE6 - create chrome.getPanelScrollElement()?
                                  -        // fbPanel1.ownerDocument.documentElement.scrollTop = Math.round(node.offsetTop - fbPanel1.ownerDocument.documentElement.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        this.panelNode.style.minWidth = "500px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(this.sidePanelBar && !this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("css");
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null;
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        this.panelNode.innerHTML = html.join("");
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = Firebug.chrome.getPanelContainer();
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.context.persistedState.selectedHTMLElementId =
                                  -                Firebug.context.persistedState.selectedHTMLElementId &&
                                  -                ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId) ?
                                  -                Firebug.context.persistedState.selectedHTMLElementId :
                                  -                ElementCache(Firebug.browser.document.body);
                                  -            
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        /// FIXME xxxpedro chromenew
                                  -        ///addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        // FIXME xxxpedro chromenew
                                  -        ///removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(Firebug.context.persistedState.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -    },
                                  -    
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var id = ElementCache(object);
                                  -        
                                  -        if (id)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(id);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":";}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null;
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        Firebug.context.persistedState.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = ElementCache.get(e.id);
                                  -        var sidePanelBar = Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -        var selectedSidePanel = sidePanelBar ? sidePanelBar.selectedPanel : null;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            if (selectedSidePanel)
                                  -                selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0);
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = ElementCache.get(uid.value);
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = ElementCache(object);
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = ElementCache(node);
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;');
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            var value = trim(node.nodeValue);
                                  -            if (value)
                                  -                html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -
                                  -Hack:
                                  -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; 
                                  -Firebug.showInfoTips = true; 
                                  -Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -
                                  -/**/
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var maxWidth = 100, maxHeight = 80;
                                  -var infoTipMargin = 10;
                                  -var infoTipWindowPadding = 25;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.InfoTip = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "infoTip",
                                  -    tags: domplate(
                                  -    {
                                  -        infoTipTag: DIV({"class": "infoTip"}),
                                  -
                                  -        colorTag:
                                  -            DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, "&nbsp;"),
                                  -
                                  -        imgTag:
                                  -            DIV({"class": "infoTipImageBox infoTipLoading"},
                                  -                IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
                                  -                    onload: "$onLoadImage"}),
                                  -                IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}),
                                  -                DIV({"class": "infoTipCaption"})
                                  -            ),
                                  -
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget || event.srcElement;
                                  -            ///var bgImg = img.nextSibling;
                                  -            ///if (!bgImg)
                                  -            ///    return; // Sometimes gets called after element is dead
                                  -
                                  -            ///var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -            
                                  -            /// TODO: xxxpedro infoTip hack
                                  -            var caption = getElementByClass(innerBox, "infoTipCaption");
                                  -            var bgImg = getElementByClass(innerBox, "infoTipBgImage");
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -            
                                  -            // TODO: xxxpedro infoTip IE and timing issue
                                  -            // TODO: use offline document to avoid flickering
                                  -            if (isIE)
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            
                                  -            var updateInfoTip = function(){
                                  -            
                                  -            var w = img.naturalWidth || img.width || 10, 
                                  -                h = img.naturalHeight || img.height || 10;
                                  -            
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -            caption.innerHTML = $STRF(w + " x " + h);
                                  -            
                                  -            
                                  -            };
                                  -            
                                  -            if (isIE) 
                                  -                setTimeout(updateInfoTip, 0);
                                  -            else
                                  -            {
                                  -                updateInfoTip();
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            }
                                  -
                                  -            ///
                                  -        }
                                  -        
                                  -        /*
                                  -        /// onLoadImage original
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget;
                                  -            var bgImg = img.nextSibling;
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -
                                  -            var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -
                                  -            var w = img.naturalWidth, h = img.naturalHeight;
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -
                                  -            removeClass(innerBox, "infoTipLoading");
                                  -        }
                                  -        /**/
                                  -        
                                  -    }),
                                  -
                                  -    initializeBrowser: function(browser)
                                  -    {
                                  -        browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser);
                                  -        browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser);
                                  -
                                  -        ///var doc = browser.contentDocument;
                                  -        var doc = browser.document;
                                  -        if (!doc)
                                  -            return;
                                  -
                                  -        ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -        ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -        ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -        addEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -        addEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -        addEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -        
                                  -        return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc));
                                  -    },
                                  -
                                  -    uninitializeBrowser: function(browser)
                                  -    {
                                  -        if (browser.infoTip)
                                  -        {
                                  -            ///var doc = browser.contentDocument;
                                  -            var doc = browser.document;
                                  -            ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -            ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -            ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -            removeEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -            removeEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -            removeEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -
                                  -            browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -            delete browser.infoTip;
                                  -            delete browser.onInfoTipMouseMove;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        if (!Firebug.showInfoTips)
                                  -            return;
                                  -
                                  -        var scrollParent = getOverflowParent(target);
                                  -        var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
                                  -
                                  -        if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset))
                                  -        {
                                  -            var htmlElt = infoTip.ownerDocument.documentElement;
                                  -            var panelWidth = htmlElt.clientWidth;
                                  -            var panelHeight = htmlElt.clientHeight;
                                  -
                                  -            if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
                                  -            {
                                  -                infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.left = (x+infoTipMargin) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -
                                  -            if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
                                  -            {
                                  -                infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.top = (y+infoTipMargin) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_INFOTIP)
                                  -                FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
                                  -                    ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
                                  -                    ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
                                  -                    ", offsetWidth: " + infoTip.offsetWidth +
                                  -                    ", x: " + x + ", panelWidth: " + panelWidth +
                                  -                    ", y: " + y + ", panelHeight: " + panelHeight);
                                  -
                                  -            infoTip.setAttribute("active", "true");
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(infoTip);
                                  -    },
                                  -
                                  -    hideInfoTip: function(infoTip)
                                  -    {
                                  -        if (infoTip)
                                  -            infoTip.removeAttribute("active");
                                  -    },
                                  -
                                  -    onMouseOut: function(event, browser)
                                  -    {
                                  -        if (!event.relatedTarget)
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    onMouseMove: function(event, browser)
                                  -    {
                                  -        // Ignore if the mouse is moving over the existing info tip.
                                  -        if (getAncestorByClass(event.target, "infoTip"))
                                  -            return;
                                  -
                                  -        if (browser.currentPanel)
                                  -        {
                                  -            var x = event.clientX, y = event.clientY, target = event.target || event.srcElement;
                                  -            this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset);
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    populateColorInfoTip: function(infoTip, color)
                                  -    {
                                  -        this.tags.colorTag.replace({rgbValue: color}, infoTip);
                                  -        return true;
                                  -    },
                                  -
                                  -    populateImageInfoTip: function(infoTip, url, repeat)
                                  -    {
                                  -        if (!repeat)
                                  -            repeat = "no-repeat";
                                  -
                                  -        this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    disable: function()
                                  -    {
                                  -        // XXXjoe For each browser, call uninitializeBrowser
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel)
                                  -        {
                                  -            var infoTip = panel.panelBrowser.infoTip;
                                  -            if (!infoTip)
                                  -                infoTip = this.initializeBrowser(panel.panelBrowser);
                                  -            this.hideInfoTip(infoTip);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -        this.showPanel(browser, panel);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.InfoTip);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var CssParser = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Simple CSS stylesheet parser from:
                                  -// https://github.com/sergeche/webkit-css
                                  -
                                  -/**
                                  - * Simple CSS stylesheet parser that remembers rule's lines in file
                                  - * @author Sergey Chikuyonok (serge.che@gmail.com)
                                  - * @link http://chikuyonok.ru
                                  - */
                                  -CssParser = (function(){
                                  -    /**
                                  -     * Returns rule object
                                  -     * @param {Number} start Character index where CSS rule definition starts
                                  -     * @param {Number} body_start Character index where CSS rule's body starts
                                  -     * @param {Number} end Character index where CSS rule definition ends
                                  -     */
                                  -    function rule(start, body_start, end) {
                                  -        return {
                                  -            start: start || 0,
                                  -            body_start: body_start || 0,
                                  -            end: end || 0,
                                  -            line: -1,
                                  -            selector: null,
                                  -            parent: null,
                                  -            
                                  -            /** @type {rule[]} */
                                  -            children: [],
                                  -            
                                  -            addChild: function(start, body_start, end) {
                                  -                var r = rule(start, body_start, end);
                                  -                r.parent = this;
                                  -                this.children.push(r);
                                  -                return r;
                                  -            },
                                  -            /**
                                  -             * Returns last child element
                                  -             * @return {rule}
                                  -             */
                                  -            lastChild: function() {
                                  -                return this.children[this.children.length - 1];
                                  -            }
                                  -        };
                                  -    }
                                  -    
                                  -    /**
                                  -     * Replaces all occurances of substring defined by regexp
                                  -     * @param {String} str
                                  -     * @return {RegExp} re
                                  -     * @return {String}
                                  -     */
                                  -    function removeAll(str, re) {
                                  -        var m;
                                  -        while (m = str.match(re)) {
                                  -            str = str.substring(m[0].length);
                                  -        }
                                  -        
                                  -        return str;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Trims whitespace from the beginning and the end of string
                                  -     * @param {String} str
                                  -     * @return {String}
                                  -     */
                                  -    function trim(str) {
                                  -        return str.replace(/^\s+|\s+$/g, '');
                                  -    }
                                  -    
                                  -    /**
                                  -     * Normalizes CSS rules selector
                                  -     * @param {String} selector
                                  -     */
                                  -    function normalizeSelector(selector) {
                                  -        // remove newlines
                                  -        selector = selector.replace(/[\n\r]/g, ' ');
                                  -        
                                  -        selector = trim(selector);
                                  -        
                                  -        // remove spaces after commas
                                  -        selector = selector.replace(/\s*,\s*/g, ',');
                                  -        
                                  -        return selector;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Preprocesses parsed rules: adjusts char indexes, skipping whitespace and
                                  -     * newlines, saves rule selector, removes comments, etc.
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node CSS rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function preprocessRules(text, rule_node) {
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i],
                                  -                rule_start = text.substring(r.start, r.body_start),
                                  -                cur_len = rule_start.length;
                                  -            
                                  -            // remove newlines for better regexp matching
                                  -            rule_start = rule_start.replace(/[\n\r]/g, ' ');
                                  -            
                                  -            // remove @import rules
                                  -//            rule_start = removeAll(rule_start, /^\s*@import\s*url\((['"])?.+?\1?\)\;?/g);
                                  -            
                                  -            // remove comments
                                  -            rule_start = removeAll(rule_start, /^\s*\/\*.*?\*\/[\s\t]*/);
                                  -            
                                  -            // remove whitespace
                                  -            rule_start = rule_start.replace(/^[\s\t]+/, '');
                                  -            
                                  -            r.start += (cur_len - rule_start.length);
                                  -            r.selector = normalizeSelector(rule_start);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves all lise starting indexes for faster search
                                  -     * @param {String} text CSS stylesheet
                                  -     * @return {Number[]}
                                  -     */
                                  -    function saveLineIndexes(text) {
                                  -        var result = [0],
                                  -            i = 0,
                                  -            il = text.length,
                                  -            ch, ch2;
                                  -            
                                  -        while (i < il) {
                                  -            ch = text.charAt(i);
                                  -            
                                  -            if (ch == '\n' || ch == '\r') {
                                  -                if (ch == '\r' && i < il - 1 && text.charAt(i + 1) == '\n') {
                                  -                    // windows line ending: CRLF. Skip next character 
                                  -                    i++;
                                  -                }
                                  -                
                                  -                result.push(i + 1);
                                  -            }
                                  -            
                                  -            i++;
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves line number for parsed rules
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node Rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function saveLineNumbers(text, rule_node, line_indexes, startLine) {
                                  -        preprocessRules(text, rule_node);
                                  -        
                                  -        startLine = startLine || 0;
                                  -        
                                  -        // remember lines start indexes, preserving line ending characters
                                  -        if (!line_indexes)
                                  -            var line_indexes = saveLineIndexes(text);
                                  -
                                  -        // now find each rule's line
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i];
                                  -            r.line = line_indexes.length + startLine;
                                  -            for (var j = 0, jl = line_indexes.length - 1; j < jl; j++) {
                                  -                var line_ix = line_indexes[j];
                                  -                if (r.start >=  line_indexes[j] && r.start <  line_indexes[j + 1]) {
                                  -                    r.line = j + 1 + startLine;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            
                                  -            saveLineNumbers(text, r, line_indexes);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    return {
                                  -        /**
                                  -         * Parses text as CSS stylesheet, remembring each rule position inside 
                                  -         * text
                                  -         * @param {String} text CSS stylesheet to parse
                                  -         */
                                  -        read: function(text, startLine) {
                                  -            var rule_start = [],
                                  -                rule_body_start = [],
                                  -                rules = [],
                                  -                in_comment = 0,
                                  -                root = rule(),
                                  -                cur_parent = root,
                                  -                last_rule = null,
                                  -                stack = [],
                                  -                ch, ch2;
                                  -                
                                  -            stack.last = function() {
                                  -                return this[this.length - 1];
                                  -            };
                                  -            
                                  -            function hasStr(pos, substr) {
                                  -                return text.substr(pos, substr.length) == substr;
                                  -            }
                                  -                
                                  -            for (var i = 0, il = text.length; i < il; i++) {
                                  -                ch = text.charAt(i);
                                  -                ch2 = i < il - 1 ? text.charAt(i + 1) : '';
                                  -                
                                  -                if (!rule_start.length)
                                  -                    rule_start.push(i);
                                  -                    
                                  -                switch (ch) {
                                  -                    case '@':
                                  -                        if (!in_comment) {
                                  -                            if (hasStr(i, '@import')) {
                                  -                                var m = text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -                                if (m) {
                                  -                                    cur_parent.addChild(i, i + 7, i + m[0].length);
                                  -                                    i += m[0].length;
                                  -                                    rule_start.pop();
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                        }
                                  -                    case '/':
                                  -                        // xxxpedro allowing comment inside comment
                                  -                        if (!in_comment && ch2 == '*') { // comment start
                                  -                            in_comment++;
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '*':
                                  -                        if (ch2 == '/') { // comment end
                                  -                            in_comment--;
                                  -                        }
                                  -                        break;
                                  -                    
                                  -                    case '{':
                                  -                        if (!in_comment) {
                                  -                            rule_body_start.push(i);
                                  -                            
                                  -                            cur_parent = cur_parent.addChild(rule_start.pop());
                                  -                            stack.push(cur_parent);
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '}':
                                  -                        // found the end of the rule
                                  -                        if (!in_comment) {
                                  -                            /** @type {rule} */
                                  -                            var last_rule = stack.pop();
                                  -                            rule_start.pop();
                                  -                            last_rule.body_start = rule_body_start.pop();
                                  -                            last_rule.end = i;
                                  -                            cur_parent = last_rule.parent || root;
                                  -                        }
                                  -                        break;
                                  -                }
                                  -                
                                  -            }
                                  -            
                                  -            return saveLineNumbers(text, root, null, startLine);
                                  -        },
                                  -        
                                  -        normalizeSelector: normalizeSelector,
                                  -        
                                  -        /**
                                  -         * Find matched rule by selector.
                                  -         * @param {rule} rule_node Parsed rule node
                                  -         * @param {String} selector CSS selector
                                  -         * @param {String} source CSS stylesheet source code
                                  -         * 
                                  -         * @return {rule[]|null} Array of matched rules, sorted by priority (most 
                                  -         * recent on top)
                                  -         */
                                  -        findBySelector: function(rule_node, selector, source) {
                                  -            var selector = normalizeSelector(selector),
                                  -                result = [];
                                  -                
                                  -            if (rule_node) {
                                  -                for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -                    /** @type {rule} */
                                  -                    var r = rule_node.children[i];
                                  -                    if (r.selector == selector) {
                                  -                        result.push(r);
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            if (result.length) {
                                  -                return result;
                                  -            } else {
                                  -                return null;
                                  -            }
                                  -        }
                                  -    };
                                  -})();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.CssParser = CssParser;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet Parser
                                  -
                                  -var CssAnalyzer = {};
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var CSSRuleMap = {};
                                  -var ElementCSSRulesMap = {};
                                  -
                                  -var internalStyleSheetIndex = -1;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -var reSelectorClass = /\.[\w\d_-]+/g;
                                  -var reSelectorId = /#[\w\d_-]+/g;
                                  -
                                  -var globalCSSRuleIndex;
                                  -
                                  -var processAllStyleSheetsTimeout = null;
                                  -
                                  -var externalStyleSheetURLs = [];
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -//************************************************************************************************
                                  -// CSS Analyzer templates
                                  -
                                  -CssAnalyzer.externalStyleSheetWarning = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'},
                                  -            SPAN("$object|STR"),
                                  -            A({"href": "$href", target:"_blank"}, "$link|STR")
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Analyzer methods
                                  -
                                  -CssAnalyzer.processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    try
                                  -    {
                                  -        processAllStyleSheets(doc, styleSheetIterator);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * 
                                  - * @param element
                                  - * @returns {String[]} Array of IDs of CSS Rules
                                  - */
                                  -CssAnalyzer.getElementCSSRules = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        return getElementCSSRules(element);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -CssAnalyzer.getRuleData = function(ruleId)
                                  -{
                                  -    return CSSRuleMap[ruleId];
                                  -};
                                  -
                                  -// TODO: do we need this?
                                  -CssAnalyzer.getRuleLine = function()
                                  -{
                                  -};
                                  -
                                  -CssAnalyzer.hasExternalStyleSheet = function()
                                  -{
                                  -    return externalStyleSheetURLs.length > 0;
                                  -};
                                  -
                                  -CssAnalyzer.parseStyleSheet = function(href)
                                  -{
                                  -    var sourceData = extractSourceData(href);
                                  -    var parsedObj = CssParser.read(sourceData.source, sourceData.startLine);
                                  -    var parsedRules = parsedObj.children;
                                  -    
                                  -    // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -    //
                                  -    // Ignore all special selectors like @media and @page
                                  -    for(var i=0; i < parsedRules.length; )
                                  -    {
                                  -        if (parsedRules[i].selector.indexOf("@") != -1)
                                  -        {
                                  -            parsedRules.splice(i, 1);
                                  -        }
                                  -        else
                                  -            i++;
                                  -    }
                                  -    
                                  -    return parsedRules;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Internals
                                  -//************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet processing
                                  -
                                  -var processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    styleSheetIterator = styleSheetIterator || processStyleSheet;
                                  -    
                                  -    globalCSSRuleIndex = -1;
                                  -    
                                  -    var styleSheets = doc.styleSheets;
                                  -    var importedStyleSheets = [];
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -        var start = new Date().getTime();
                                  -    
                                  -    for(var i=0, length=styleSheets.length; i<length; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            
                                  -            if ("firebugIgnore" in styleSheet) continue;
                                  -            
                                  -            // we must read the length to make sure we have permission to read 
                                  -            // the stylesheet's content. If an error occurs here, we cannot 
                                  -            // read the stylesheet due to access restriction policy
                                  -            var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -            rules.length;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            externalStyleSheetURLs.push(styleSheet.href);
                                  -            styleSheet.restricted = true;
                                  -            var ssid = StyleSheetCache(styleSheet);
                                  -            
                                  -            /// TODO: xxxpedro external css
                                  -            //loadExternalStylesheet(doc, styleSheetIterator, styleSheet);
                                  -        }
                                  -        
                                  -        // process internal and external styleSheets
                                  -        styleSheetIterator(doc, styleSheet);
                                  -        
                                  -        var importedStyleSheet, importedRules;
                                  -        
                                  -        // process imported styleSheets in IE
                                  -        if (isIE)
                                  -        {
                                  -            var imports = styleSheet.imports;
                                  -            
                                  -            for(var j=0, importsLength=imports.length; j<importsLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    importedStyleSheet = imports[j];
                                  -                    // we must read the length to make sure we have permission
                                  -                    // to read the imported stylesheet's content. 
                                  -                    importedRules = importedStyleSheet.rules;
                                  -                    importedRules.length;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -                
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -        // process imported styleSheets in other browsers
                                  -        else if (rules)
                                  -        {
                                  -            for(var j=0, rulesLength=rules.length; j<rulesLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    var rule = rules[j];
                                  -                    
                                  -                    importedStyleSheet = rule.styleSheet;
                                  -                    
                                  -                    if (importedStyleSheet)
                                  -                    {
                                  -                        // we must read the length to make sure we have permission
                                  -                        // to read the imported stylesheet's content. 
                                  -                        importedRules = importedStyleSheet.cssRules;
                                  -                        importedRules.length;
                                  -                    }
                                  -                    else
                                  -                        break;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -    {
                                  -        FBTrace.sysout("FBL.processAllStyleSheets", "all stylesheet rules processed in " + (new Date().getTime() - start) + "ms");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var processStyleSheet = function(doc, styleSheet)
                                  -{
                                  -    if (styleSheet.restricted)
                                  -        return;
                                  -    
                                  -    var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -    
                                  -    var ssid = StyleSheetCache(styleSheet);
                                  -    
                                  -    var href = styleSheet.href;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // CSS Parser
                                  -    var shouldParseCSS = typeof CssParser != "undefined" && !Firebug.disableResourceFetching;
                                  -    if (shouldParseCSS)
                                  -    {
                                  -        try
                                  -        {
                                  -            var parsedRules = CssAnalyzer.parseStyleSheet(href); 
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("processStyleSheet FAILS", e.message || e);
                                  -            shouldParseCSS = false;
                                  -        }
                                  -        finally
                                  -        {
                                  -            var parsedRulesIndex = 0;
                                  -            
                                  -            var dontSupportGroupedRules = isIE && browserVersion < 9;
                                  -            var group = [];
                                  -            var groupItem;
                                  -        }
                                  -    }
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    for (var i=0, length=rules.length; i<length; i++)
                                  -    {
                                  -        // TODO: xxxpedro is there a better way to cache CSS Rules? The problem is that
                                  -        // we cannot add expando properties in the rule object in IE
                                  -        var rid = ssid + ":" + i;
                                  -        var rule = rules[i];
                                  -        var selector = rule.selectorText || "";
                                  -        var lineNo = null;
                                  -        
                                  -        // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -        //
                                  -        // Ignore all special selectors like @media and @page
                                  -        if (!selector || selector.indexOf("@") != -1)
                                  -            continue;
                                  -        
                                  -        if (isIE)
                                  -            selector = selector.replace(reSelectorTag, function(s){return s.toLowerCase();});
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // CSS Parser
                                  -        if (shouldParseCSS)
                                  -        {
                                  -            var parsedRule = parsedRules[parsedRulesIndex];
                                  -            var parsedSelector = parsedRule.selector;
                                  -
                                  -            if (dontSupportGroupedRules && parsedSelector.indexOf(",") != -1 && group.length == 0)
                                  -                group = parsedSelector.split(",");
                                  -            
                                  -            if (dontSupportGroupedRules && group.length > 0)
                                  -            {
                                  -                groupItem = group.shift();
                                  -                
                                  -                if (CssParser.normalizeSelector(selector) == groupItem)
                                  -                    lineNo = parsedRule.line;
                                  -                
                                  -                if (group.length == 0)
                                  -                    parsedRulesIndex++;
                                  -            }
                                  -            else if (CssParser.normalizeSelector(selector) == parsedRule.selector)
                                  -            {
                                  -                lineNo = parsedRule.line;
                                  -                parsedRulesIndex++;
                                  -            }
                                  -        }
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        CSSRuleMap[rid] =
                                  -        {
                                  -            styleSheetId: ssid,
                                  -            styleSheetIndex: i,
                                  -            order: ++globalCSSRuleIndex,
                                  -            specificity: 
                                  -                // See: Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -                //
                                  -                // if it is a normal selector then calculate the specificity
                                  -                selector && selector.indexOf(",") == -1 ? 
                                  -                getCSSRuleSpecificity(selector) : 
                                  -                // See: Issue 3262: [Firebug lite] Specificity of grouped CSS Rules
                                  -                //
                                  -                // if it is a grouped selector, do not calculate the specificity
                                  -                // because the correct value will depend of the matched element.
                                  -                // The proper specificity value for grouped selectors are calculated
                                  -                // via getElementCSSRules(element)
                                  -                0,
                                  -            
                                  -            rule: rule,
                                  -            lineNo: lineNo,
                                  -            selector: selector,
                                  -            cssText: rule.style ? rule.style.cssText : rule.cssText ? rule.cssText : ""        
                                  -        };
                                  -        
                                  -        // TODO: what happens with elements added after this? Need to create a test case.
                                  -        // Maybe we should place this at getElementCSSRules() but it will make the function
                                  -        // a lot more expensive.
                                  -        // 
                                  -        // Maybe add a "refresh" button?
                                  -        var elements = Firebug.Selector(selector, doc);
                                  -        
                                  -        for (var j=0, elementsLength=elements.length; j<elementsLength; j++)
                                  -        {
                                  -            var element = elements[j];
                                  -            var eid = ElementCache(element);
                                  -            
                                  -            if (!ElementCSSRulesMap[eid])
                                  -                ElementCSSRulesMap[eid] = [];
                                  -            
                                  -            ElementCSSRulesMap[eid].push(rid);
                                  -        }
                                  -        
                                  -        //console.log(selector, elements);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// External StyleSheet Loader
                                  -
                                  -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet)
                                  -{
                                  -    var url = styleSheet.href;
                                  -    styleSheet.firebugIgnore = true;
                                  -    
                                  -    var source = Firebug.Lite.Proxy.load(url);
                                  -    
                                  -    // TODO: check for null and error responses
                                  -    
                                  -    // remove comments
                                  -    //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -    //source = source.replace(reMultiComment, "");
                                  -    
                                  -    // convert relative addresses to absolute ones  
                                  -    source = source.replace(/url\(([^\)]+)\)/g, function(a,name){
                                  -    
                                  -        var hasDomain = /\w+:\/\/./.test(name);
                                  -        
                                  -        if (!hasDomain)
                                  -        {
                                  -            name = name.replace(/^(["'])(.+)\1$/, "$2");
                                  -            var first = name.charAt(0);
                                  -            
                                  -            // relative path, based on root
                                  -            if (first == "/")
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLRoot
                                  -                var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -                
                                  -                return m ? 
                                  -                    "url(" + m[1] + name + ")" :
                                  -                    "url(" + name + ")";
                                  -            }
                                  -            // relative path, based on current location
                                  -            else
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLPath
                                  -                var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, "");
                                  -                
                                  -                path = path + name;
                                  -                
                                  -                var reBack = /[^\/]+\/\.\.\//;
                                  -                while(reBack.test(path))
                                  -                {
                                  -                    path = path.replace(reBack, "");
                                  -                }
                                  -                
                                  -                //console.log("url(" + path + ")");
                                  -                
                                  -                return "url(" + path + ")";
                                  -            }
                                  -        }
                                  -        
                                  -        // if it is an absolute path, there is nothing to do
                                  -        return a;
                                  -    });
                                  -    
                                  -    var oldStyle = styleSheet.ownerNode;
                                  -    
                                  -    if (!oldStyle) return;
                                  -    
                                  -    if (!oldStyle.parentNode) return;
                                  -    
                                  -    var style = createGlobalElement("style");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.innerHTML = source;
                                  -
                                  -    //debugger;
                                  -    oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling);
                                  -    oldStyle.parentNode.removeChild(oldStyle);
                                  -    
                                  -    doc.styleSheets[doc.styleSheets.length-1].externalURL = url;
                                  -    
                                  -    console.log(url, "call " + externalStyleSheetURLs.length, source);
                                  -    
                                  -    externalStyleSheetURLs.pop();
                                  -    
                                  -    if (processAllStyleSheetsTimeout)
                                  -    {
                                  -        clearTimeout(processAllStyleSheetsTimeout);
                                  -    }
                                  -    
                                  -    processAllStyleSheetsTimeout = setTimeout(function(){
                                  -        console.log("processing");
                                  -        FBL.processAllStyleSheets(doc, styleSheetIterator);
                                  -        processAllStyleSheetsTimeout = null;
                                  -    },200);
                                  -    
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// getElementCSSRules
                                  -
                                  -var getElementCSSRules = function(element)
                                  -{
                                  -    var eid = ElementCache(element);
                                  -    var rules = ElementCSSRulesMap[eid];
                                  -    
                                  -    if (!rules) return;
                                  -    
                                  -    var arr = [element];
                                  -    var Selector = Firebug.Selector;
                                  -    var ruleId, rule;
                                  -    
                                  -    // for the case of grouped selectors, we need to calculate the highest
                                  -    // specificity within the selectors of the group that matches the element,
                                  -    // so we can sort the rules properly without over estimating the specificity
                                  -    // of grouped selectors
                                  -    for (var i = 0, length = rules.length; i < length; i++)
                                  -    {
                                  -        ruleId = rules[i];
                                  -        rule = CSSRuleMap[ruleId];
                                  -        
                                  -        // check if it is a grouped selector
                                  -        if (rule.selector.indexOf(",") != -1)
                                  -        {
                                  -            var selectors = rule.selector.split(",");
                                  -            var maxSpecificity = -1;
                                  -            var sel, spec, mostSpecificSelector;
                                  -            
                                  -            // loop over all selectors in the group
                                  -            for (var j, len = selectors.length; j < len; j++)
                                  -            {
                                  -                sel = selectors[j];
                                  -                
                                  -                // find if the selector matches the element
                                  -                if (Selector.matches(sel, arr).length == 1)
                                  -                {
                                  -                    spec = getCSSRuleSpecificity(sel);
                                  -                    
                                  -                    // find the most specific selector that macthes the element
                                  -                    if (spec > maxSpecificity)
                                  -                    {
                                  -                        maxSpecificity = spec;
                                  -                        mostSpecificSelector = sel;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            rule.specificity = maxSpecificity;
                                  -        }
                                  -    }
                                  -    
                                  -    rules.sort(sortElementRules);
                                  -    //rules.sort(solveRulesTied);
                                  -    
                                  -    return rules;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Rule Specificity
                                  -
                                  -var sortElementRules = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    var specificityA = ruleA.specificity;
                                  -    var specificityB = ruleB.specificity;
                                  -    
                                  -    if (specificityA > specificityB)
                                  -        return 1;
                                  -    
                                  -    else if (specificityA < specificityB)
                                  -        return -1;
                                  -    
                                  -    else
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -};
                                  -
                                  -var solveRulesTied = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    if (ruleA.specificity == ruleB.specificity)
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -        
                                  -    return null;
                                  -};
                                  -
                                  -var getCSSRuleSpecificity = function(selector)
                                  -{
                                  -    var match = selector.match(reSelectorTag);
                                  -    var tagCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorClass);
                                  -    var classCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorId);
                                  -    var idCount = match ? match.length : 0;
                                  -    
                                  -    return tagCount + 10*classCount + 100*idCount;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet data
                                  -
                                  -var extractSourceData = function(href)
                                  -{
                                  -    var sourceData = 
                                  -    {
                                  -        source: null,
                                  -        startLine: 0
                                  -    };
                                  -    
                                  -    if (href)
                                  -    {
                                  -        sourceData.source = Firebug.Lite.Proxy.load(href);
                                  -    }
                                  -    else
                                  -    {
                                  -        // TODO: create extractInternalSourceData(index)
                                  -        // TODO: pre process the position of the inline styles so this will happen only once
                                  -        // in case of having multiple inline styles
                                  -        var index = 0;
                                  -        var ssIndex = ++internalStyleSheetIndex;
                                  -        var reStyleTag = /\<\s*style.*\>/gi;
                                  -        var reEndStyleTag = /\<\/\s*style.*\>/gi;
                                  -        
                                  -        var source = Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -        source = source.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        
                                  -        var startLine = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            var matchStyleTag = source.match(reStyleTag); 
                                  -            var i0 = source.indexOf(matchStyleTag[0]) + matchStyleTag[0].length;
                                  -            
                                  -            for (var i=0; i < i0; i++)
                                  -            {
                                  -                if (source.charAt(i) == "\n")
                                  -                    startLine++;
                                  -            }
                                  -            
                                  -            source = source.substr(i0);
                                  -            
                                  -            index++;
                                  -        }
                                  -        while (index <= ssIndex);
                                  -    
                                  -        var matchEndStyleTag = source.match(reEndStyleTag);
                                  -        var i1 = source.indexOf(matchEndStyleTag[0]);
                                  -        
                                  -        var extractedSource = source.substr(0, i1);
                                  -        
                                  -        sourceData.source = extractedSource;
                                  -        sourceData.startLine = startLine;
                                  -    }
                                  -    
                                  -    return sourceData;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -FBL.CssAnalyzer = CssAnalyzer;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// move to FBL
                                  -(function() { 
                                  -
                                  -// ************************************************************************************************
                                  -// XPath
                                  -
                                  -/**
                                  - * Gets an XPath for an element which describes its hierarchical location.
                                  - */
                                  -this.getElementXPath = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        if (element && element.id)
                                  -            return '//*[@id="' + element.id + '"]';
                                  -        else
                                  -            return this.getElementTreeXPath(element);
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        // xxxpedro: trying to detect the mysterious error:
                                  -        // Security error" code: "1000
                                  -        // This error happens when rendering the StorageList object in the DOM panel
                                  -        //debugger;
                                  -    }
                                  -};
                                  -
                                  -this.getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -        
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -            
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -this.getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -this.getRuleMatchingElements = function(rule, doc)
                                  -{
                                  -    var css = rule.selectorText;
                                  -    var xpath = this.cssToXPath(css);
                                  -    return this.getElementsByXPath(doc, xpath);
                                  -};
                                  -
                                  -
                                  -}).call(FBL);
                                  -
                                  -
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -};
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -};
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
                                  -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
                                  -//const nsISelectionDisplay = Ci.nsISelectionDisplay;
                                  -//const nsISelectionController = Ci.nsISelectionController;
                                  -
                                  -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
                                  -//const STATE_ACTIVE  = 0x01;
                                  -//const STATE_FOCUS   = 0x02;
                                  -//const STATE_HOVER   = 0x04;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -Firebug.SourceBoxPanel = Firebug.Panel;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -
                                  -var domUtils = null;
                                  -
                                  -var textContent = isIE ? "innerText" : "textContent";
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var CSSDomplateBase = {
                                  -    isEditable: function(rule)
                                  -    {
                                  -        return !rule.isSystemSheet;
                                  -    },
                                  -    isSelectorEditable: function(rule)
                                  -    {
                                  -        return rule.isSelectorEditable && this.isEditable(rule);
                                  -    }
                                  -};
                                  -
                                  -var CSSPropTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
                                  -          $editGroup: "$rule|isEditable",
                                  -          $cssOverridden: "$prop.overridden", role : "option"},
                                  -        A({"class": "cssPropDisable"}, "&nbsp;&nbsp;"),
                                  -        SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )
                                  -});
                                  -
                                  -var CSSRuleTag =
                                  -    TAG("$rule.tag", {rule: "$rule"});
                                  -
                                  -var CSSImportRuleTag = domplate({
                                  -    tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
                                  -        "@import &quot;",
                                  -        A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
                                  -        "&quot;;"
                                  -    )
                                  -});
                                  -
                                  -var CSSStyleRuleTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssRule insertInto",
                                  -            $cssEditableRule: "$rule|isEditable",
                                  -            $editGroup: "$rule|isSelectorEditable",
                                  -            _repObject: "$rule.rule",
                                  -            "ruleId": "$rule.id", role : 'presentation'},
                                  -        DIV({"class": "cssHead focusRow", role : 'listitem'},
                                  -            SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {"
                                  -        ),
                                  -        DIV({role : 'group'},
                                  -            DIV({"class": "cssPropertyListBox", role : 'listbox'},
                                  -                FOR("prop", "$rule.props",
                                  -                    TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        DIV({"class": "editable insertBefore", role:"presentation"}, "}")
                                  -    )
                                  -});
                                  -
                                  -var reSplitCSS =  /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -
                                  -var reURL = /url\("?([^"\)]+)?"?\)/;
                                  -
                                  -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
                                  -
                                  -//const sothinkInstalled = !!$("swfcatcherKey_sidebar");
                                  -var sothinkInstalled = false;
                                  -var styleGroups =
                                  -{
                                  -    text: [
                                  -        "font-family",
                                  -        "font-size",
                                  -        "font-weight",
                                  -        "font-style",
                                  -        "color",
                                  -        "text-transform",
                                  -        "text-decoration",
                                  -        "letter-spacing",
                                  -        "word-spacing",
                                  -        "line-height",
                                  -        "text-align",
                                  -        "vertical-align",
                                  -        "direction",
                                  -        "column-count",
                                  -        "column-gap",
                                  -        "column-width"
                                  -    ],
                                  -
                                  -    background: [
                                  -        "background-color",
                                  -        "background-image",
                                  -        "background-repeat",
                                  -        "background-position",
                                  -        "background-attachment",
                                  -        "opacity"
                                  -    ],
                                  -
                                  -    box: [
                                  -        "width",
                                  -        "height",
                                  -        "top",
                                  -        "right",
                                  -        "bottom",
                                  -        "left",
                                  -        "margin-top",
                                  -        "margin-right",
                                  -        "margin-bottom",
                                  -        "margin-left",
                                  -        "padding-top",
                                  -        "padding-right",
                                  -        "padding-bottom",
                                  -        "padding-left",
                                  -        "border-top-width",
                                  -        "border-right-width",
                                  -        "border-bottom-width",
                                  -        "border-left-width",
                                  -        "border-top-color",
                                  -        "border-right-color",
                                  -        "border-bottom-color",
                                  -        "border-left-color",
                                  -        "border-top-style",
                                  -        "border-right-style",
                                  -        "border-bottom-style",
                                  -        "border-left-style",
                                  -        "-moz-border-top-radius",
                                  -        "-moz-border-right-radius",
                                  -        "-moz-border-bottom-radius",
                                  -        "-moz-border-left-radius",
                                  -        "outline-top-width",
                                  -        "outline-right-width",
                                  -        "outline-bottom-width",
                                  -        "outline-left-width",
                                  -        "outline-top-color",
                                  -        "outline-right-color",
                                  -        "outline-bottom-color",
                                  -        "outline-left-color",
                                  -        "outline-top-style",
                                  -        "outline-right-style",
                                  -        "outline-bottom-style",
                                  -        "outline-left-style"
                                  -    ],
                                  -
                                  -    layout: [
                                  -        "position",
                                  -        "display",
                                  -        "visibility",
                                  -        "z-index",
                                  -        "overflow-x",  // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
                                  -        "overflow-y",
                                  -        "overflow-clip",
                                  -        "white-space",
                                  -        "clip",
                                  -        "float",
                                  -        "clear",
                                  -        "-moz-box-sizing"
                                  -    ],
                                  -
                                  -    other: [
                                  -        "cursor",
                                  -        "list-style-image",
                                  -        "list-style-position",
                                  -        "list-style-type",
                                  -        "marker-offset",
                                  -        "user-focus",
                                  -        "user-select",
                                  -        "user-modify",
                                  -        "user-input"
                                  -    ]
                                  -};
                                  -
                                  -var styleGroupTitles =
                                  -{
                                  -    text: "Text",
                                  -    background: "Background",
                                  -    box: "Box Model",
                                  -    layout: "Layout",
                                  -    other: "Other"
                                  -};
                                  -
                                  -Firebug.CSSModule = extend(Firebug.Module,
                                  -{
                                  -    freeEdit: function(styleSheet, value)
                                  -    {
                                  -        if (!styleSheet.editStyleSheet)
                                  -        {
                                  -            var ownerNode = getStyleSheetOwnerNode(styleSheet);
                                  -            styleSheet.disabled = true;
                                  -
                                  -            var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL);
                                  -            url.spec = styleSheet.href;
                                  -
                                  -            var editStyleSheet = ownerNode.ownerDocument.createElementNS(
                                  -                "http://www.w3.org/1999/xhtml",
                                  -                "style");
                                  -            unwrapObject(editStyleSheet).firebugIgnore = true;
                                  -            editStyleSheet.setAttribute("type", "text/css");
                                  -            editStyleSheet.setAttributeNS(
                                  -                "http://www.w3.org/XML/1998/namespace",
                                  -                "base",
                                  -                url.directory);
                                  -            if (ownerNode.hasAttribute("media"))
                                  -            {
                                  -              editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
                                  -            }
                                  -
                                  -            // Insert the edited stylesheet directly after the old one to ensure the styles
                                  -            // cascade properly.
                                  -            ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
                                  -
                                  -            styleSheet.editStyleSheet = editStyleSheet;
                                  -        }
                                  -
                                  -        styleSheet.editStyleSheet.innerHTML = value;
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
                                  -    },
                                  -
                                  -    insertRule: function(styleSheet, cssText, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
                                  -        var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
                                  -
                                  -        dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
                                  -
                                  -        return insertIndex;
                                  -    },
                                  -
                                  -    deleteRule: function(styleSheet, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules);
                                  -        dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]);
                                  -
                                  -        styleSheet.deleteRule(ruleIndex);
                                  -    },
                                  -
                                  -    setProperty: function(rule, propName, propValue, propPriority)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        // good browsers
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
                                  -            // unless we remove the property first
                                  -            style.removeProperty(propName);
                                  -    
                                  -            style.setProperty(propName, propValue, propPriority);
                                  -        }
                                  -        // sad browsers
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro parse CSS rule to find property priority in IE?
                                  -            //console.log(propName, propValue);
                                  -            style[toCamelCase(propName)] = propValue;
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    },
                                  -
                                  -    removeProperty: function(rule, propName, parent)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -    
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            style.removeProperty(propName);
                                  -        }
                                  -        else
                                  -        {
                                  -            style[toCamelCase(propName)] = "";
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    }/*,
                                  -
                                  -    cleanupSheets: function(doc, context)
                                  -    {
                                  -        // Due to the manner in which the layout engine handles multiple
                                  -        // references to the same sheet we need to kick it a little bit.
                                  -        // The injecting a simple stylesheet then removing it will force
                                  -        // Firefox to regenerate it's CSS hierarchy.
                                  -        //
                                  -        // WARN: This behavior was determined anecdotally.
                                  -        // See http://code.google.com/p/fbug/issues/detail?id=2440
                                  -        var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -        style.setAttribute("charset","utf-8");
                                  -        unwrapObject(style).firebugIgnore = true;
                                  -        style.setAttribute("type", "text/css");
                                  -        style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
                                  -        addStyleSheet(doc, style);
                                  -        style.parentNode.removeChild(style);
                                  -
                                  -        // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
                                  -        // This voodoo touches each style sheet to force some Firefox internal change to allow edits.
                                  -        var styleSheets = getAllStyleSheets(context);
                                  -        for(var i = 0; i < styleSheets.length; i++)
                                  -        {
                                  -            try
                                  -            {
                                  -                var rules = styleSheets[i].cssRules;
                                  -                if (rules.length > 0)
                                  -                    var touch = rules[0];
                                  -                if (FBTrace.DBG_CSS && touch)
                                  -                    FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName()));
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e);
                                  -            }
                                  -        }
                                  -    },
                                  -    cleanupSheetHandler: function(event, context)
                                  -    {
                                  -        var target = event.target || event.srcElement,
                                  -            tagName = (target.tagName || "").toLowerCase();
                                  -        if (tagName == "link")
                                  -        {
                                  -            this.cleanupSheets(target.ownerDocument, context);
                                  -        }
                                  -    },
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        var cleanupSheets = bind(this.cleanupSheets, this),
                                  -            cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context),
                                  -            doc = win.document;
                                  -
                                  -        //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false);
                                  -        //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false);
                                  -    },
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var self = this;
                                  -        iterateWindows(context.browser.contentWindow, function(subwin)
                                  -        {
                                  -            self.cleanupSheets(subwin.document, context);
                                  -        });
                                  -    }
                                  -    /**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CSSStyleSheetPanel = function() {};
                                  -
                                  -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        tag:
                                  -            DIV({"class": "cssSheet insertInto a11yCSSView"},
                                  -                FOR("rule", "$rules",
                                  -                    CSSRuleTag
                                  -                ),
                                  -                DIV({"class": "cssSheet editable insertBefore"}, "")
                                  -                )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        if (this.location)
                                  -            this.updateLocation(this.location);
                                  -        else if (this.selection)
                                  -            this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (!this.stylesheetEditor)
                                  -            this.stylesheetEditor = new StyleSheetEditor(this.document);
                                  -
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -        {
                                  -            if (!this.location)
                                  -                return;
                                  -
                                  -            var styleSheet = this.location.editStyleSheet
                                  -                ? this.location.editStyleSheet.sheet
                                  -                : this.location;
                                  -
                                  -            var css = getStyleSheetCSS(styleSheet, this.context);
                                  -            //var topmost = getTopmostRuleLine(this.panelNode);
                                  -
                                  -            this.stylesheetEditor.styleSheet = this.location;
                                  -            Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
                                  -            //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
                                  -        }
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        if (this.location.href)
                                  -            return this.location.href;
                                  -        else
                                  -            return this.context.window.location.href;
                                  -    },
                                  -
                                  -    getRuleByLine: function(styleSheet, line)
                                  -    {
                                  -        if (!domUtils)
                                  -            return null;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        for (var i = 0; i < cssRules.length; ++i)
                                  -        {
                                  -            var rule = cssRules[i];
                                  -            if (rule instanceof CSSStyleRule)
                                  -            {
                                  -                var ruleLine = domUtils.getRuleLine(rule);
                                  -                if (ruleLine >= line)
                                  -                    return rule;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightRule: function(rule)
                                  -    {
                                  -        var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
                                  -        if (ruleElement)
                                  -        {
                                  -            scrollIntoCenterView(ruleElement, this.panelNode);
                                  -            setClassTimed(ruleElement, "jumpHighlight", this.context);
                                  -        }
                                  -    },
                                  -
                                  -    getStyleSheetRules: function(context, styleSheet)
                                  -    {
                                  -        var isSystemSheet = isSystemStyleSheet(styleSheet);
                                  -
                                  -        function appendRules(cssRules)
                                  -        {
                                  -            for (var i = 0; i < cssRules.length; ++i)
                                  -            {
                                  -                var rule = cssRules[i];
                                  -                
                                  -                // TODO: xxxpedro opera instanceof stylesheet remove the following comments when 
                                  -                // the issue with opera and style sheet Classes has been solved.
                                  -                
                                  -                //if (rule instanceof CSSStyleRule)
                                  -                if (instanceOf(rule, "CSSStyleRule"))
                                  -                {
                                  -                    var props = this.getRuleProperties(context, rule);
                                  -                    //var line = domUtils.getRuleLine(rule);
                                  -                    var line = null;
                                  -                    
                                  -                    var selector = rule.selectorText;
                                  -                    
                                  -                    if (isIE)
                                  -                    {
                                  -                        selector = selector.replace(reSelectorTag, 
                                  -                                function(s){return s.toLowerCase();});
                                  -                    }
                                  -                    
                                  -                    var ruleId = rule.selectorText+"/"+line;
                                  -                    rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId,
                                  -                                selector: selector, props: props,
                                  -                                isSystemSheet: isSystemSheet,
                                  -                                isSelectorEditable: true});
                                  -                }
                                  -                //else if (rule instanceof CSSImportRule)
                                  -                else if (instanceOf(rule, "CSSImportRule"))
                                  -                    rules.push({tag: CSSImportRuleTag.tag, rule: rule});
                                  -                //else if (rule instanceof CSSMediaRule)
                                  -                else if (instanceOf(rule, "CSSMediaRule"))
                                  -                    appendRules.apply(this, [rule.cssRules]);
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var rules = [];
                                  -        appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]);
                                  -        return rules;
                                  -    },
                                  -
                                  -    parseCSSProps: function(style, inheritMode)
                                  -    {
                                  -        var props = [];
                                  -
                                  -        if (Firebug.expandShorthandProps)
                                  -        {
                                  -            var count = style.length-1,
                                  -                index = style.length;
                                  -            while (index--)
                                  -            {
                                  -                var propName = style.item(count - index);
                                  -                this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -            var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -            var line,i=0;
                                  -            // TODO: xxxpedro port to firebug: variable leaked into global namespace
                                  -            var m;
                                  -            
                                  -            while(line=lines[i++]){
                                  -                m = propRE.exec(line);
                                  -                if(!m)
                                  -                    continue;
                                  -                //var name = m[1], value = m[2], important = !!m[3];
                                  -                if (m[2])
                                  -                    this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
                                  -            };
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    getRuleProperties: function(context, rule, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(rule.style, inheritMode);
                                  -
                                  -        // TODO: xxxpedro port to firebug: variable leaked into global namespace 
                                  -        //var line = domUtils.getRuleLine(rule);
                                  -        var line;
                                  -        var ruleId = rule.selectorText+"/"+line;
                                  -        this.addOldProperties(context, ruleId, inheritMode, props);
                                  -        sortProperties(props);
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    addOldProperties: function(context, ruleId, inheritMode, props)
                                  -    {
                                  -        if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var moreProps = context.selectorMap[ruleId];
                                  -            for (var i = 0; i < moreProps.length; ++i)
                                  -            {
                                  -                var prop = moreProps[i];
                                  -                this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    addProperty: function(name, value, important, disabled, inheritMode, props)
                                  -    {
                                  -        name = name.toLowerCase();
                                  -        
                                  -        if (inheritMode && !inheritedStyleNames[name])
                                  -            return;
                                  -
                                  -        name = this.translateName(name, value);
                                  -        if (name)
                                  -        {
                                  -            value = stripUnits(rgbToHex(value));
                                  -            important = important ? " !important" : "";
                                  -
                                  -            var prop = {name: name, value: value, important: important, disabled: disabled};
                                  -            props.push(prop);
                                  -        }
                                  -    },
                                  -
                                  -    translateName: function(name, value)
                                  -    {
                                  -        // Don't show these proprietary Mozilla properties
                                  -        if ((value == "-moz-initial"
                                  -            && (name == "-moz-background-clip" || name == "-moz-background-origin"
                                  -                || name == "-moz-background-inline-policy"))
                                  -        || (value == "physical"
                                  -            && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
                                  -                || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
                                  -        || (value == "physical"
                                  -            && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
                                  -                || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
                                  -            return null;
                                  -
                                  -        // Translate these back to the form the user probably expects
                                  -        if (name == "margin-left-value")
                                  -            return "margin-left";
                                  -        else if (name == "margin-right-value")
                                  -            return "margin-right";
                                  -        else if (name == "margin-top-value")
                                  -            return "margin-top";
                                  -        else if (name == "margin-bottom-value")
                                  -            return "margin-bottom";
                                  -        else if (name == "padding-left-value")
                                  -            return "padding-left";
                                  -        else if (name == "padding-right-value")
                                  -            return "padding-right";
                                  -        else if (name == "padding-top-value")
                                  -            return "padding-top";
                                  -        else if (name == "padding-bottom-value")
                                  -            return "padding-bottom";
                                  -        // XXXjoe What about border!
                                  -        else
                                  -            return name;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editElementStyle: function()
                                  -    {
                                  -        ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
                                  -        var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0];
                                  -        var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
                                  -        if (!styleRuleBox)
                                  -        {
                                  -            var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []};
                                  -            if (!rulesBox)
                                  -            {
                                  -                // The element did not have any displayed styles. We need to create the whole tree and remove
                                  -                // the no styles message
                                  -                styleRuleBox = this.template.cascadedTag.replace({
                                  -                    rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom")
                                  -                }, this.panelNode);
                                  -
                                  -                ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
                                  -                styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0];
                                  -            }
                                  -            else
                                  -                styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
                                  -
                                  -            ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
                                  -            styleRuleBox = $$(".insertInto", styleRuleBox)[0];
                                  -        }
                                  -
                                  -        Firebug.Editor.insertRowForObject(styleRuleBox);
                                  -    },
                                  -
                                  -    insertPropertyRow: function(row)
                                  -    {
                                  -        Firebug.Editor.insertRowForObject(row);
                                  -    },
                                  -
                                  -    insertRule: function(row)
                                  -    {
                                  -        var location = getAncestorByClass(row, "cssRule");
                                  -        if (!location)
                                  -        {
                                  -            location = getChildByClass(this.panelNode, "cssSheet");
                                  -            Firebug.Editor.insertRowForObject(location);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Editor.insertRow(location, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editPropertyRow: function(row)
                                  -    {
                                  -        var propValueBox = getChildByClass(row, "cssPropValue");
                                  -        Firebug.Editor.startEditing(propValueBox);
                                  -    },
                                  -
                                  -    deletePropertyRow: function(row)
                                  -    {
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -        Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -        // Remove the property from the selector map, if it was disabled
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var map = this.context.selectorMap[ruleId];
                                  -            for (var i = 0; i < map.length; ++i)
                                  -            {
                                  -                if (map[i].name == propName)
                                  -                {
                                  -                    map.splice(i, 1);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (this.name == "stylesheet")
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]);
                                  -        row.parentNode.removeChild(row);
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    disablePropertyRow: function(row)
                                  -    {
                                  -        toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -
                                  -        if (!this.context.selectorMap)
                                  -            this.context.selectorMap = {};
                                  -
                                  -        // XXXjoe Generate unique key for elements too
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if (!(this.context.selectorMap.hasOwnProperty(ruleId)))
                                  -            this.context.selectorMap[ruleId] = [];
                                  -
                                  -        var map = this.context.selectorMap[ruleId];
                                  -        var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -        var parsedValue = parsePriority(propValue);
                                  -        if (hasClass(row, "disabledStyle"))
                                  -        {
                                  -            Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -            map.push({"name": propName, "value": parsedValue.value,
                                  -                "important": parsedValue.priority});
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -
                                  -            var index = findPropByName(map, propName);
                                  -            map.splice(index, 1);
                                  -        }
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        //console.log("onMouseDown", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        // XXjoe Hack to only allow clicking on the checkbox
                                  -        if (!isLeftClick(event) || offset > 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        if (hasClass(target, "textEditor"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (row && hasClass(row, "editGroup"))
                                  -        {
                                  -            this.disablePropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onDoubleClick: function(event)
                                  -    {
                                  -        //console.log("onDoubleClick", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        if (!isLeftClick(event) || offset <= 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20);
                                  -        
                                  -        // if the inline editor was clicked, don't insert a new rule
                                  -        if (hasClass(target, "textEditorInner"))
                                  -            return;
                                  -            
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        if (row && !getAncestorByClass(target, "cssPropName")
                                  -            && !getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            this.insertPropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "stylesheet",
                                  -    title: "CSS",
                                  -    parentPanel: null,
                                  -    searchable: true,
                                  -    dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
                                  -    
                                  -    options:
                                  -    {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onDoubleClick = bind(this.onDoubleClick, this);
                                  -
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var selectNode = this.selectNode = createElement("select");
                                  -            
                                  -            CssAnalyzer.processAllStyleSheets(doc, function(doc, styleSheet)
                                  -            {
                                  -                var key = StyleSheetCache.key(styleSheet);
                                  -                var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -                var option = createElement("option", {value: key});
                                  -                
                                  -                option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -                selectNode.appendChild(option);
                                  -            });
                                  -            
                                  -            this.toolButtonsNode.appendChild(selectNode);
                                  -        }
                                  -        /**/
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var key = target.value;
                                  -        var styleSheet = StyleSheetCache.get(key);
                                  -        
                                  -        this.updateLocation(styleSheet);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //if (!domUtils)
                                  -        //{
                                  -        //    try {
                                  -        //        domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils");
                                  -        //    } catch (exc) {
                                  -        //        if (FBTrace.DBG_ERRORS)
                                  -        //            FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc);
                                  -        //    }
                                  -        //}
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        this.initializeNode();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            var styleSheets = Firebug.browser.document.styleSheets;
                                  -            
                                  -            if (styleSheets.length > 0)
                                  -            {
                                  -                addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -                
                                  -                this.updateLocation(styleSheets[0]);
                                  -            }
                                  -        }
                                  -        
                                  -        //Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // must destroy the editor when we leave the panel to avoid problems (Issue 2981)
                                  -        Firebug.Editor.stopEditing();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        }
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
                                  -
                                  -        //persistObjects(this, state);
                                  -
                                  -        // xxxpedro we are stopping the editor in the shutdown method already
                                  -        //Firebug.Editor.stopEditing();
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        Firebug.Inspector.stopInspecting(true);
                                  -
                                  -        this.showToolbarButtons("fbCSSButtons", true);
                                  -
                                  -        if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel
                                  -        {
                                  -            restoreObjects(this, state);
                                  -
                                  -            if (!this.location)
                                  -                this.location = this.getDefaultLocation();
                                  -
                                  -            if (state && state.scrollTop)
                                  -                this.panelNode.scrollTop = state.scrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbCSSButtons", false);
                                  -
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof CSSStyleSheet)
                                  -            return 1;
                                  -        else if (object instanceof CSSStyleRule)
                                  -            return 2;
                                  -        else if (object instanceof CSSStyleDeclaration)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateLocation: function(styleSheet)
                                  -    {
                                  -        if (!styleSheet)
                                  -            return;
                                  -        if (styleSheet.editStyleSheet)
                                  -            styleSheet = styleSheet.editStyleSheet.sheet;
                                  -        
                                  -        // if it is a restricted stylesheet, show the warning message and abort the update process
                                  -        if (styleSheet.restricted)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode);
                                  -
                                  -            // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The stylesheet could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"
                                  -            }, this.panelNode);
                                  -            
                                  -            return;
                                  -        }
                                  -
                                  -        var rules = this.getStyleSheetRules(this.context, styleSheet);
                                  -
                                  -        var result;
                                  -        if (rules.length)
                                  -            // FIXME xxxpedro chromenew this is making iPad's Safari to crash
                                  -            result = this.template.tag.replace({rules: rules}, this.panelNode);
                                  -        else
                                  -            result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro need to fix showToolbarButtons function
                                  -        //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location));
                                  -
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        this.selection = null;
                                  -
                                  -        if (object instanceof CSSStyleDeclaration) {
                                  -            object = object.parentRule;
                                  -        }
                                  -
                                  -        if (object instanceof CSSStyleRule)
                                  -        {
                                  -            this.navigate(object.parentStyleSheet);
                                  -            this.highlightRule(object);
                                  -        }
                                  -        else if (object instanceof CSSStyleSheet)
                                  -        {
                                  -            this.navigate(object);
                                  -        }
                                  -        else if (object instanceof SourceLink)
                                  -        {
                                  -            try
                                  -            {
                                  -                var sourceLink = object;
                                  -
                                  -                var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -                if (sourceFile)
                                  -                {
                                  -                    clearNode(this.panelNode);  // replace rendered stylesheets
                                  -                    this.showSourceFile(sourceFile);
                                  -
                                  -                    var lineNo = object.line;
                                  -                    if (lineNo)
                                  -                        this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
                                  -                }
                                  -                else // XXXjjb we should not be taking this path
                                  -                {
                                  -                    var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -                    if (stylesheet)
                                  -                        this.navigate(stylesheet);
                                  -                    else
                                  -                    {
                                  -                        if (FBTrace.DBG_CSS)
                                  -                            FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink);
                                  -                    }
                                  -                }
                                  -            }
                                  -            catch(exc) {
                                  -                if (FBTrace.DBG_CSS)
                                  -                    FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var styleSheets = getAllStyleSheets(this.context);
                                  -        return styleSheets;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") },
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(style, target)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        if (this.infoTipType == "color")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyColor",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -        else if (this.infoTipType == "image")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyImageLocation",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) },
                                  -                {label: "OpenImageInNewTab",
                                  -                    command: bindFixed(openNewTab, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -
                                  -        ///if (this.selection instanceof Element)
                                  -        if (isElement(this.selection))
                                  -        {
                                  -            items.push(
                                  -                //"-",
                                  -                {label: "EditStyle",
                                  -                    command: bindFixed(this.editElementStyle, this) }
                                  -            );
                                  -        }
                                  -        else if (!isSystemStyleSheet(this.selection))
                                  -        {
                                  -            items.push(
                                  -                    //"-",
                                  -                    {label: "NewRule",
                                  -                        command: bindFixed(this.insertRule, this, target) }
                                  -                );
                                  -        }
                                  -
                                  -        var cssRule = getAncestorByClass(target, "cssRule");
                                  -        if (cssRule && hasClass(cssRule, "cssEditableRule"))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewProp",
                                  -                    command: bindFixed(this.insertPropertyRow, this, target) }
                                  -            );
                                  -
                                  -            var propRow = getAncestorByClass(target, "cssProp");
                                  -            if (propRow)
                                  -            {
                                  -                var propName = getChildByClass(propRow, "cssPropName")[textContent];
                                  -                var isDisabled = hasClass(propRow, "disabledStyle");
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.editPropertyRow, this, propRow) },
                                  -                    {label: $STRF("DeleteProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.deletePropertyRow, this, propRow) },
                                  -                    {label: $STRF("DisableProp", [propName]), nol10n: true,
                                  -                        type: "checkbox", checked: isDisabled,
                                  -                        command: bindFixed(this.disablePropertyRow, this, propRow) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -        if (this.infoTipType == "image")
                                  -        {
                                  -            openNewTab(this.infoTipObject);
                                  -            return true;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        var propValue = getAncestorByClass(target, "cssPropValue");
                                  -        if (propValue)
                                  -        {
                                  -            var offset = getClientOffset(propValue);
                                  -            var offsetX = x-offset.x;
                                  -
                                  -            var text = propValue[textContent];
                                  -            var charWidth = propValue.offsetWidth/text.length;
                                  -            var charOffset = Math.floor(offsetX/charWidth);
                                  -
                                  -            var cssValue = parseCSSValue(text, charOffset);
                                  -            if (cssValue)
                                  -            {
                                  -                if (cssValue.value == this.infoTipValue)
                                  -                    return true;
                                  -
                                  -                this.infoTipValue = cssValue.value;
                                  -
                                  -                if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value)))
                                  -                {
                                  -                    this.infoTipType = "color";
                                  -                    this.infoTipObject = cssValue.value;
                                  -
                                  -                    return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value);
                                  -                }
                                  -                else if (cssValue.type == "url")
                                  -                {
                                  -                    ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0);
                                  -                    var propNameNode = getElementByClass(target.parentNode, "cssPropName");
                                  -                    if (propNameNode && isImageRule(propNameNode[textContent]))
                                  -                    {
                                  -                        var rule = Firebug.getRepObject(target);
                                  -                        var baseURL = this.getStylesheetURL(rule);
                                  -                        var relURL = parseURLValue(cssValue.value);
                                  -                        var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL);
                                  -                        var repeat = parseRepeatValue(text);
                                  -
                                  -                        this.infoTipType = "image";
                                  -                        this.infoTipObject = absURL;
                                  -
                                  -                        return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        delete this.infoTipType;
                                  -        delete this.infoTipValue;
                                  -        delete this.infoTipObject;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (target == this.panelNode
                                  -            || hasClass(target, "cssSelector") || hasClass(target, "cssRule")
                                  -            || hasClass(target, "cssSheet"))
                                  -        {
                                  -            if (!this.ruleEditor)
                                  -                this.ruleEditor = new CSSRuleEditor(this.document);
                                  -
                                  -            return this.ruleEditor;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!this.editor)
                                  -                this.editor = new CSSEditor(this.document);
                                  -
                                  -            return this.editor;
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheets = this.context.window.document.styleSheets;
                                  -            if (styleSheets.length)
                                  -            {
                                  -                var sheet = styleSheets[0];
                                  -                return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_LOCATIONS)
                                  -                FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectDescription: function(styleSheet)
                                  -    {
                                  -        var url = getURLForStyleSheet(styleSheet);
                                  -        var instance = getInstanceForStyleSheet(styleSheet);
                                  -
                                  -        var baseDescription = splitURLBase(url);
                                  -        if (instance) {
                                  -          baseDescription.name = baseDescription.name + " #" + (instance + 1);
                                  -        }
                                  -        return baseDescription;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -        function scanDoc(styleSheet) {
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < styleSheet.cssRules.length; i++)
                                  -            {
                                  -                if (scanRE.test(styleSheet.cssRules[i].cssText))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -        {
                                  -            row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.editing)
                                  -            {
                                  -                this.currentSearch = new TextSearch(this.stylesheetEditor.box);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -
                                  -                if (row)
                                  -                {
                                  -                    var sel = this.document.defaultView.getSelection();
                                  -                    sel.removeAllRanges();
                                  -                    sel.addRange(this.currentSearch.range);
                                  -                    scrollSelectionIntoView(this);
                                  -                    return true;
                                  -                }
                                  -                else
                                  -                    return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -                this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -            }
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            this.document.defaultView.getSelection().selectAllChildren(row);
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal")
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -
                                  -function CSSElementPanel() {}
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        cascadedTag:
                                  -            DIV({"class": "a11yCSSView",  role : 'presentation'},
                                  -                DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') },
                                  -                    FOR("rule", "$rules",
                                  -                        TAG("$ruleTag", {rule: "$rule"})
                                  -                    )
                                  -                ),
                                  -                DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')},
                                  -                    FOR("section", "$inherited",
                                  -                        H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' },
                                  -                            SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
                                  -                            TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
                                  -                        ),
                                  -                        DIV({role : 'group'},
                                  -                            FOR("rule", "$section.rules",
                                  -                                TAG("$ruleTag", {rule: "$rule"})
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                 )
                                  -            ),
                                  -
                                  -        ruleTag:
                                  -            isIE ?
                                  -            // IE needs the sourceLink first, otherwise it will be rendered outside the panel
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}),
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"})                
                                  -            )
                                  -            :
                                  -            // other browsers need the sourceLink last, otherwise it will cause an extra space
                                  -            // before the rule representation
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"}),
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateCascadeView: function(element)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]);
                                  -        var rules = [], sections = [], usedProps = {};
                                  -        this.getInheritedRules(element, sections, usedProps);
                                  -        this.getElementRules(element, rules, usedProps);
                                  -
                                  -        if (rules.length || sections.length)
                                  -        {
                                  -            var inheritLabel = "Inherited from"; // $STR("InheritedFrom");
                                  -            var result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
                                  -                inheritLabel: inheritLabel}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -        else
                                  -        {
                                  -            var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -
                                  -        // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -        if (CssAnalyzer.hasExternalStyleSheet())
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The results here may be inaccurate because some " +
                                  -                        "stylesheets could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"
                                  -            }, this.panelNode);
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        // if the parentStyleSheet.href is null, CSS std says its inline style.
                                  -        // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location
                                  -        if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
                                  -            return rule.parentStyleSheet.href;
                                  -        else
                                  -            return this.selection.ownerDocument.location.href;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getInheritedRules: function(element, sections, usedProps)
                                  -    {
                                  -        var parent = element.parentNode;
                                  -        if (parent && parent.nodeType == 1)
                                  -        {
                                  -            this.getInheritedRules(parent, sections, usedProps);
                                  -
                                  -            var rules = [];
                                  -            this.getElementRules(parent, rules, usedProps, true);
                                  -
                                  -            if (rules.length)
                                  -                sections.splice(0, 0, {element: parent, rules: rules});
                                  -        }
                                  -    },
                                  -
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        
                                  -        inspectedRules = CssAnalyzer.getElementCSSRules(element);
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0, length=inspectedRules.length; i < length; ++i)
                                  -            {
                                  -                var ruleId = inspectedRules[i];
                                  -                var ruleData = CssAnalyzer.getRuleData(ruleId);
                                  -                var rule = ruleData.rule;
                                  -                
                                  -                var ssid = ruleData.styleSheetId;
                                  -                var parentStyleSheet = StyleSheetCache.get(ssid); 
                                  -
                                  -                var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = null;
                                  -                //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = false;
                                  -                //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                //
                                  -                //var line = domUtils.getRuleLine(rule);
                                  -                // TODO: xxxpedro CSS line number 
                                  -                var line = ruleData.lineNo;
                                  -                
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: ruleData.selector, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /*
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        try
                                  -        {
                                  -            inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null;
                                  -        } catch (exc) {}
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0; i < inspectedRules.Count(); ++i)
                                  -            {
                                  -                var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
                                  -
                                  -                var href = rule.parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                var line = domUtils.getRuleLine(rule);
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: rule.selectorText, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /**/
                                  -    markOverridenProps: function(props, usedProps, inheritMode)
                                  -    {
                                  -        for (var i = 0; i < props.length; ++i)
                                  -        {
                                  -            var prop = props[i];
                                  -            if ( usedProps.hasOwnProperty(prop.name) )
                                  -            {
                                  -                var deadProps = usedProps[prop.name]; // all previous occurrences of this property
                                  -                for (var j = 0; j < deadProps.length; ++j)
                                  -                {
                                  -                    var deadProp = deadProps[j];
                                  -                    if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important)
                                  -                        prop.overridden = true;  // new occurrence overridden
                                  -                    else if (!prop.disabled)
                                  -                        deadProp.overridden = true;  // previous occurrences overridden
                                  -                }
                                  -            }
                                  -            else
                                  -                usedProps[prop.name] = [];
                                  -
                                  -            prop.wasInherited = inheritMode ? true : false;
                                  -            usedProps[prop.name].push(prop);  // all occurrences of a property seen so far, by name
                                  -        }
                                  -    },
                                  -
                                  -    getStyleProperties: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(element.style, inheritMode);
                                  -        this.addOldProperties(this.context, getElementXPath(element), inheritMode, props);
                                  -
                                  -        sortProperties(props);
                                  -        this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -        if (props.length)
                                  -            rules.splice(0, 0,
                                  -                    {rule: element, id: getElementXPath(element),
                                  -                        selector: "element.style", props: props, inherited: inheritMode});
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "css",
                                  -    title: "Style",
                                  -    parentPanel: "HTML",
                                  -    order: 0,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -        
                                  -        //this.updateCascadeView(document.getElementsByTagName("h1")[0]);
                                  -        //this.updateCascadeView(document.getElementById("build"));
                                  -        
                                  -        /*
                                  -        this.onStateChange = bindFixed(this.contentStateCheck, this);
                                  -        this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER);
                                  -        this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
                                  -        /**/
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (domUtils)
                                  -        {
                                  -            // Normally these would not be required, but in order to update after the state is set
                                  -            // using the options menu we need to monitor these global events as well
                                  -            var doc = win.document;
                                  -            ///addEvent(doc, "mouseover", this.onHoverChange);
                                  -            ///addEvent(doc, "mousedown", this.onActiveChange);
                                  -        }
                                  -    },
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var doc = win.document;
                                  -        ///removeEvent(doc, "mouseover", this.onHoverChange);
                                  -        ///removeEvent(doc, "mousedown", this.onActiveChange);
                                  -
                                  -        if (isAncestor(this.stateChangeEl, doc))
                                  -        {
                                  -            this.removeStateChangeHandlers();
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Element ? 1 : 0;
                                  -    },
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateCascadeView(element);
                                  -        if (domUtils)
                                  -        {
                                  -            this.contentState = safeGetContentState(element);
                                  -            this.addStateChangeHandlers(element);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(element)
                                  -    {
                                  -        if ( !instanceOf(element , "Element") ) // html supports SourceLink
                                  -            return;
                                  -
                                  -        if (sothinkInstalled)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -
                                  -        /*
                                  -        if (!domUtils)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        this.updateView(element);
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "showUserAgentCSS" || name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var ret = [
                                  -            {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") },
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }
                                  -        ];
                                  -        if (domUtils && this.selection)
                                  -        {
                                  -            var state = safeGetContentState(this.selection);
                                  -
                                  -            ret.push("-");
                                  -            ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE,
                                  -              command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)});
                                  -            ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER,
                                  -              command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)});
                                  -        }
                                  -        return ret;
                                  -    },
                                  -
                                  -    updateContentState: function(state, remove)
                                  -    {
                                  -        domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state);
                                  -        this.refresh();
                                  -    },
                                  -
                                  -    addStateChangeHandlers: function(el)
                                  -    {
                                  -      this.removeStateChangeHandlers();
                                  -
                                  -      /*
                                  -      addEvent(el, "focus", this.onStateChange);
                                  -      addEvent(el, "blur", this.onStateChange);
                                  -      addEvent(el, "mouseup", this.onStateChange);
                                  -      addEvent(el, "mousedown", this.onStateChange);
                                  -      addEvent(el, "mouseover", this.onStateChange);
                                  -      addEvent(el, "mouseout", this.onStateChange);
                                  -      /**/
                                  -
                                  -      this.stateChangeEl = el;
                                  -    },
                                  -
                                  -    removeStateChangeHandlers: function()
                                  -    {
                                  -        var sel = this.stateChangeEl;
                                  -        if (sel)
                                  -        {
                                  -            /*
                                  -            removeEvent(sel, "focus", this.onStateChange);
                                  -            removeEvent(sel, "blur", this.onStateChange);
                                  -            removeEvent(sel, "mouseup", this.onStateChange);
                                  -            removeEvent(sel, "mousedown", this.onStateChange);
                                  -            removeEvent(sel, "mouseover", this.onStateChange);
                                  -            removeEvent(sel, "mouseout", this.onStateChange);
                                  -            /**/
                                  -        }
                                  -    },
                                  -
                                  -    contentStateCheck: function(state)
                                  -    {
                                  -        if (!state || this.contentState & state)
                                  -        {
                                  -            var timeoutRunner = bindFixed(function()
                                  -            {
                                  -                var newState = safeGetContentState(this.selection);
                                  -                if (newState != this.contentState)
                                  -                {
                                  -                    this.context.invalidatePanels(this.name);
                                  -                }
                                  -            }, this);
                                  -
                                  -            // Delay exec until after the event has processed and the state has been updated
                                  -            setTimeout(timeoutRunner, 0);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -function safeGetContentState(selection)
                                  -{
                                  -    try
                                  -    {
                                  -        return domUtils.getContentState(selection);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("css.safeGetContentState; EXCEPTION", e);
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function CSSComputedElementPanel() {}
                                  -
                                  -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        computedTag:
                                  -            DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')},
                                  -                FOR("group", "$groups",
                                  -                    H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"},
                                  -                        SPAN({"class": "cssInheritLabel"}, "$group.title")
                                  -                    ),
                                  -                    TABLE({width: "100%", role : 'group'},
                                  -                        TBODY({role : 'presentation'},
                                  -                            FOR("prop", "$group.props",
                                  -                                TR({"class": 'focusRow computedStyleRow', role : 'listitem'},
                                  -                                    TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"),
                                  -                                    TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value")
                                  -                                )
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateComputedView: function(element)
                                  -    {
                                  -        var win = isIE ?
                                  -                element.ownerDocument.parentWindow :
                                  -                element.ownerDocument.defaultView;
                                  -        
                                  -        var style = isIE ?
                                  -                element.currentStyle :
                                  -                win.getComputedStyle(element, "");
                                  -
                                  -        var groups = [];
                                  -
                                  -        for (var groupName in styleGroups)
                                  -        {
                                  -            // TODO: xxxpedro i18n $STR
                                  -            //var title = $STR("StyleGroup-" + groupName);
                                  -            var title = styleGroupTitles[groupName];
                                  -            var group = {title: title, props: []};
                                  -            groups.push(group);
                                  -
                                  -            var props = styleGroups[groupName];
                                  -            for (var i = 0; i < props.length; ++i)
                                  -            {
                                  -                var propName = props[i];
                                  -                var propValue = style.getPropertyValue ?
                                  -                        style.getPropertyValue(propName) :
                                  -                        ""+style[toCamelCase(propName)];
                                  -                
                                  -                if (propValue === undefined || propValue === null) 
                                  -                    continue;
                                  -                
                                  -                propValue = stripUnits(rgbToHex(propValue));
                                  -                if (propValue)
                                  -                    group.props.push({name: propName, value: propValue});
                                  -            }
                                  -        }
                                  -
                                  -        var result = this.template.computedTag.replace({groups: groups}, this.panelNode);
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "computed",
                                  -    title: "Computed",
                                  -    parentPanel: "HTML",
                                  -    order: 1,
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateComputedView(element);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSSEditor
                                  -
                                  -function CSSEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var rule = Firebug.getRepObject(target);
                                  -        var emptyProp = 
                                  -        {
                                  -            // TODO: xxxpedro - uses charCode(255) to force the element being rendered, 
                                  -            // allowing webkit to get the correct position of the property name "span",
                                  -            // when inserting a new CSS rule?
                                  -            name: "",
                                  -            value: "",
                                  -            important: ""
                                  -        };
                                  -
                                  -        if (insertWhere == "before")
                                  -            return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
                                  -        else
                                  -            return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // We need to check the value first in order to avoid a problem in IE8 
                                  -        // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite 
                                  -        if (!value) return;
                                  -        
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (hasClass(row, "disabledStyle"))
                                  -            toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(target);
                                  -
                                  -        if (hasClass(target, "cssPropName"))
                                  -        {
                                  -            if (value && previousValue != value)  // name of property has changed.
                                  -            {
                                  -                var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -                var parsedValue = parsePriority(propValue);
                                  -
                                  -                if (propValue && propValue != "undefined") {
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n");
                                  -                    if (previousValue)
                                  -                        Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -                    Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
                                  -                }
                                  -            }
                                  -            else if (!value) // name of the property has been deleted, so remove the property.
                                  -                Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -        }
                                  -        else if (getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -
                                  -            if (FBTrace.DBG_CSS)
                                  -            {
                                  -                FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n");
                                  -               // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
                                  -            }
                                  -
                                  -            if (value && value != "null")
                                  -            {
                                  -                var parsedValue = parsePriority(value);
                                  -                Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -            }
                                  -            else if (previousValue && previousValue != "null")
                                  -                Firebug.CSSModule.removeProperty(rule, propName);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -            return {start: 0, end: value.length-1};
                                  -        else
                                  -            return parseCSSValue(value, offset);
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -        {
                                  -            return getCSSPropertyNames();
                                  -        }
                                  -        else
                                  -        {
                                  -            var row = getAncestorByClass(this.target, "cssProp");
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            return getCSSKeywordsByProperty(propName);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//CSSRuleEditor
                                  -
                                  -function CSSRuleEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -    this.completeAsYouType = false;
                                  -}
                                  -CSSRuleEditor.uniquifier = 0;
                                  -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -         var emptyRule = {
                                  -                 selector: "",
                                  -                 id: "",
                                  -                 props: [],
                                  -                 isSelectorEditable: true
                                  -         };
                                  -
                                  -         if (insertWhere == "before")
                                  -             return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
                                  -         else
                                  -             return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "'  '" + previousValue + "'", target);
                                  -
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        if (value === previousValue)     return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        var styleSheet = this.panel.location;
                                  -        styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        var rule = Firebug.getRepObject(target), oldRule = rule;
                                  -        var ruleIndex = cssRules.length;
                                  -        if (rule || Firebug.getRepObject(row.nextSibling))
                                  -        {
                                  -            var searchRule = rule || Firebug.getRepObject(row.nextSibling);
                                  -            for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex]; ruleIndex++) {}
                                  -        }
                                  -
                                  -        // Delete in all cases except for new add
                                  -        // We want to do this before the insert to ease change tracking
                                  -        if (oldRule)
                                  -        {
                                  -            Firebug.CSSModule.deleteRule(styleSheet, ruleIndex);
                                  -        }
                                  -
                                  -        // Firefox does not follow the spec for the update selector text case.
                                  -        // When attempting to update the value, firefox will silently fail.
                                  -        // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
                                  -        // old discussion of this bug.
                                  -        // As a result we need to recreate the style every time the selector
                                  -        // changes.
                                  -        if (value)
                                  -        {
                                  -            var cssText = [ value, "{" ];
                                  -            var props = row.getElementsByClassName("cssProp");
                                  -            for (var i = 0; i < props.length; i++) {
                                  -                var propEl = props[i];
                                  -                if (!hasClass(propEl, "disabledStyle")) {
                                  -                    cssText.push(getChildByClass(propEl, "cssPropName")[textContent]);
                                  -                    cssText.push(":");
                                  -                    cssText.push(getChildByClass(propEl, "cssPropValue")[textContent]);
                                  -                    cssText.push(";");
                                  -                }
                                  -            }
                                  -            cssText.push("}");
                                  -            cssText = cssText.join("");
                                  -
                                  -            try
                                  -            {
                                  -                var insertLoc = Firebug.CSSModule.insertRule(styleSheet, cssText, ruleIndex);
                                  -                rule = cssRules[insertLoc];
                                  -                ruleIndex++;
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("CSS Insert Error: "+err, err);
                                  -
                                  -                target.innerHTML = escapeForCss(previousValue);
                                  -                row.repObject = undefined;
                                  -                return;
                                  -            }
                                  -        } else {
                                  -            rule = undefined;
                                  -        }
                                  -
                                  -        // Update the rep object
                                  -        row.repObject = rule;
                                  -        if (!oldRule)
                                  -        {
                                  -            // Who knows what the domutils will return for rule line
                                  -            // for a recently created rule. To be safe we just generate
                                  -            // a unique value as this is only used as an internal key.
                                  -            var ruleId = "new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -            row.setAttribute("ruleId", ruleId);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheetEditor
                                  -
                                  -function StyleSheetEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -}
                                  -
                                  -StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    multiLine: true,
                                  -
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        if (this.box.parentNode == this.panel.panelNode)
                                  -            this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -        delete this.styleSheet;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        Firebug.CSSModule.freeEdit(this.styleSheet, value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        this.panel.refresh();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    },
                                  -
                                  -    scrollToLine: function(line, offset)
                                  -    {
                                  -        this.startMeasuring(this.input);
                                  -        var lineHeight = this.measureText().height;
                                  -        this.stopMeasuring();
                                  -
                                  -        this.input.scrollTop = (line * lineHeight) + offset;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var rgbToHex = function rgbToHex(value)
                                  -{
                                  -    return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, rgbToHexReplacer);
                                  -};
                                  -
                                  -var rgbToHexReplacer = function(_, r, g, b) {
                                  -    return '#' + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
                                  -};
                                  -
                                  -var stripUnits = function stripUnits(value)
                                  -{
                                  -    // remove units from '0px', '0em' etc. leave non-zero units in-tact.
                                  -    return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi, stripUnitsReplacer);
                                  -};
                                  -
                                  -var stripUnitsReplacer = function(_, skip, remove, whitespace) {
                                  -    return skip || ('0' + whitespace);
                                  -};
                                  -
                                  -function parsePriority(value)
                                  -{
                                  -    var rePriority = /(.*?)\s*(!important)?$/;
                                  -    var m = rePriority.exec(value);
                                  -    var propValue = m ? m[1] : "";
                                  -    var priority = m && m[2] ? "important" : "";
                                  -    return {value: propValue, priority: priority};
                                  -}
                                  -
                                  -function parseURLValue(value)
                                  -{
                                  -    var m = reURL.exec(value);
                                  -    return m ? m[1] : "";
                                  -}
                                  -
                                  -function parseRepeatValue(value)
                                  -{
                                  -    var m = reRepeat.exec(value);
                                  -    return m ? m[0] : "";
                                  -}
                                  -
                                  -function parseCSSValue(value, offset)
                                  -{
                                  -    var start = 0;
                                  -    var m;
                                  -    while (1)
                                  -    {
                                  -        m = reSplitCSS.exec(value);
                                  -        if (m && m.index+m[0].length < offset)
                                  -        {
                                  -            value = value.substr(m.index+m[0].length);
                                  -            start += m.index+m[0].length;
                                  -            offset -= m.index+m[0].length;
                                  -        }
                                  -        else
                                  -            break;
                                  -    }
                                  -
                                  -    if (m)
                                  -    {
                                  -        var type;
                                  -        if (m[1])
                                  -            type = "url";
                                  -        else if (m[2] || m[3])
                                  -            type = "rgb";
                                  -        else if (m[4])
                                  -            type = "int";
                                  -
                                  -        return {value: m[0], start: start+m.index, end: start+m.index+(m[0].length-1), type: type};
                                  -    }
                                  -}
                                  -
                                  -function findPropByName(props, name)
                                  -{
                                  -    for (var i = 0; i < props.length; ++i)
                                  -    {
                                  -        if (props[i].name == name)
                                  -            return i;
                                  -    }
                                  -}
                                  -
                                  -function sortProperties(props)
                                  -{
                                  -    props.sort(function(a, b)
                                  -    {
                                  -        return a.name > b.name ? 1 : -1;
                                  -    });
                                  -}
                                  -
                                  -function getTopmostRuleLine(panelNode)
                                  -{
                                  -    for (var child = panelNode.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
                                  -        {
                                  -            var rule = child.repObject;
                                  -            if (rule)
                                  -                return {
                                  -                    line: domUtils.getRuleLine(rule),
                                  -                    offset: panelNode.scrollTop-child.offsetTop
                                  -                };
                                  -        }
                                  -    }
                                  -    return 0;
                                  -}
                                  -
                                  -function getStyleSheetCSS(sheet, context)
                                  -{
                                  -    if (sheet.ownerNode instanceof HTMLStyleElement)
                                  -        return sheet.ownerNode.innerHTML;
                                  -    else
                                  -        return context.sourceCache.load(sheet.href).join("");
                                  -}
                                  -
                                  -function getStyleSheetOwnerNode(sheet) {
                                  -    for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
                                  -
                                  -    return sheet.ownerNode;
                                  -}
                                  -
                                  -function scrollSelectionIntoView(panel)
                                  -{
                                  -    var selCon = getSelectionController(panel);
                                  -    selCon.scrollSelectionIntoView(
                                  -            nsISelectionController.SELECTION_NORMAL,
                                  -            nsISelectionController.SELECTION_FOCUS_REGION, true);
                                  -}
                                  -
                                  -function getSelectionController(panel)
                                  -{
                                  -    var browser = Firebug.chrome.getPanelBrowser(panel);
                                  -    return browser.docShell.QueryInterface(nsIInterfaceRequestor)
                                  -        .getInterface(nsISelectionDisplay)
                                  -        .QueryInterface(nsISelectionController);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    selectIndex: 0, // index of the current selectNode's option
                                  -    sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script")
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            // Don't show Firebug Lite source code in the list of options
                                  -            if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
                                  -                continue;
                                  -            
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // we must render the code first, so the persistent state can be restore
                                  -        this.selectSourceCode(this.selectIndex);
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.selectIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.selectIndex = index;
                                  -        this.sourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        var select = this.selectNode;
                                  -        
                                  -        this.selectIndex = select.selectedIndex;
                                  -        
                                  -        var option = select.options[select.selectedIndex];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        var select = this.selectNode; 
                                  -        select.selectedIndex = index;
                                  -        
                                  -        var option = select.options[index];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.sourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.panelNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode);
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (Firebug.disableResourceFetching)
                                  -                {
                                  -                    renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage);
                                  -                }
                                  -                else if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                onFailure();
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[Firebug.Lite.Cache.ID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {};
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    /*
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    /**/
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var defaultObject = this.getDefaultSelection(this.context);
                                  -            var selectObject = defaultObject; 
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro dom 
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val) && !(name in domMembers))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers && !(name in domConstantMap))
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -};
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -// FIXME: xxxpedro This function is already defined in Lib. If we keep this definition here, it
                                  -// will crash IE9 when not running the IE Developer Tool with JavaScript Debugging enabled!!!
                                  -// Check if this function is in fact defined in Firebug for Firefox. If so, we should remove
                                  -// this from here. The only difference of this function is the IE hack to show up the prototype
                                  -// of functions, but Firebug no longer shows the prototype for simple functions.
                                  -//var hasProperties = function hasProperties(ob)
                                  -//{
                                  -//    try
                                  -//    {
                                  -//        for (var name in ob)
                                  -//            return true;
                                  -//    } catch (exc) {}
                                  -//    
                                  -//    // IE function prototype is not listed in (for..in)
                                  -//    if (isFunction(ob)) return true;
                                  -//    
                                  -//    return false;
                                  -//};
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -};
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -};
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -};
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -};
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -};
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -};
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1,
                                  -    DBG_CSS: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.panelNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().panelNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.clearButton.shutdown();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -var registerModule = Firebug.registerModule;
                                  -var registerPanel = Firebug.registerPanel;
                                  -
                                  -// ************************************************************************************************
                                  -append(Firebug,
                                  -{
                                  -    extend: function(fn)
                                  -    {
                                  -        if (Firebug.chrome && Firebug.chrome.addPanel)
                                  -        {
                                  -            var namespace = ns(fn);
                                  -            fn.call(namespace, FBL);
                                  -        }
                                  -        else
                                  -        {
                                  -            setTimeout(function(){Firebug.extend(fn);},100);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        registerModule.apply(Firebug, arguments);
                                  -        
                                  -        modules.push.apply(modules, arguments);
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        registerPanel.apply(Firebug, arguments);
                                  -        
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            // TODO: xxxpedro investigate why Dev Panel throws an error
                                  -            if (panelType.prototype.name == "Dev") continue;
                                  -            
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            var parentPanelName = panelType.prototype.parentPanel;
                                  -            if (parentPanelName)
                                  -            {
                                  -                parentPanelMap[parentPanelName] = 1;
                                  -            }
                                  -            else
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -                var chrome = Firebug.chrome;
                                  -                chrome.addPanel(panelName);
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    chrome.selectPanel(panelName);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]);                
                                  -            }
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.Skin = 
                                  -{
                                  -    CSS: '.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y 100% 0;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 0 100%;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/min.png);}#fbWindow_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/minHover.png);}#fbWindow_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detach.png);}#fbWindow_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detachHover.png);}#fbWindow_btDeactivate{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/off.png);}#fbWindow_btDeactivate:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/firebug-lite.js b/branches/flexBox/build/firebug-lite.js
                                  deleted file mode 100644
                                  index 30faf5d3..00000000
                                  --- a/branches/flexBox/build/firebug-lite.js
                                  +++ /dev/null
                                  @@ -1,8203 +0,0 @@
                                  -(function(){
                                  -/**************************************************************
                                  - *
                                  - *    Firebug Lite 1.5.0-flex-a2
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -/*
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -window.FBL={};
                                  -(function(){var productionDir="http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion=4;
                                  -var reNotWhitespace=/[^\s]/;
                                  -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -this.reJavascript=/\s*javascript:\s*(.*)/;
                                  -this.reChrome=/chrome:\/\/([^\/]*)\//;
                                  -this.reFile=/file:\/\/([^\/]*)\//;
                                  -var userAgent=navigator.userAgent.toLowerCase();
                                  -this.isFirefox=/firefox/.test(userAgent);
                                  -this.isOpera=/opera/.test(userAgent);
                                  -this.isSafari=/webkit/.test(userAgent);
                                  -this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent);
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1];
                                  -this.isIElt8=this.isIE&&(this.browserVersion-0<8);
                                  -this.NS=null;
                                  -this.pixelsPerInch=null;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){if(window.firebug&&firebug.firebuglite||window.console&&console.firebuglite){return
                                  -}if(FBL.FBTrace){FBTrace=FBL.FBTrace
                                  -}else{FBTrace=FBL.FBTrace={}
                                  -}var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object";
                                  -if(isChromeContext){sharedEnv=window.Firebug.SharedEnv;
                                  -delete window.Firebug.SharedEnv;
                                  -FBL.Env=sharedEnv;
                                  -FBL.Env.isChromeContext=true;
                                  -FBTrace.messageQueue=FBL.Env.traceMessageQueue
                                  -}else{FBL.NS=document.documentElement.namespaceURI;
                                  -FBL.Env.browser=window;
                                  -FBL.Env.destroy=destroyEnvironment;
                                  -if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true
                                  -}findLocation();
                                  -var prefs=FBL.Store.get("FirebugLite")||{};
                                  -FBL.Env.DefaultOptions=FBL.Env.Options;
                                  -FBL.Env.Options=FBL.extend(FBL.Env.Options,prefs.options||{});
                                  -if(FBL.isFirefox&&typeof FBL.Env.browser.console=="object"&&FBL.Env.browser.console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return
                                  -}}if(FBL.Env.isDebugMode){FBL.Env.browser.FBL=FBL
                                  -}this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -if(FBL.Env.Options.enableTrace){FBTrace.initialize()
                                  -}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context")
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}FBL.Ajax.initialize();
                                  -FBL.Firebug.loadPrefs();
                                  -if(FBL.Env.Options.enablePersistent){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Env.FirebugChrome)
                                  -}else{FBL.Env.FirebugChrome=FBL.FirebugChrome;
                                  -FBL.Env.traceMessageQueue=FBTrace.messageQueue
                                  -}}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){var doc=FBL.Env.browser.document;
                                  -var body=doc.getElementsByTagName("body")[0];
                                  -if(body){calculatePixelsPerInch(doc,body);
                                  -onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Env.Options.enablePersistent&&FBL.Env.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Env.isDevelopmentMode){sharedEnv.destroy();
                                  -sharedEnv=null
                                  -}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -var sharedEnv;
                                  -this.Env={Options:{saveCookies:true,saveWindowPosition:false,saveCommandLineHistory:false,startOpened:false,startInNewWindow:false,showIconWhenHidden:true,overrideConsole:true,ignoreFirebugElements:true,disableWhenFirebugActive:true,disableXHRListener:false,disableResourceFetching:false,enableTrace:false,enablePersistent:false},Location:{sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null},skin:"flexBox",useLocalSkin:false,isDevelopmentMode:false,isDebugMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyEnvironment=function destroyEnvironment(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -var reGetFirebugSite=/(?:http|https):\/\/getfirebug.com\//;
                                  -var isGetFirebugSite;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -var scriptSrc;
                                  -var hasSrcAttribute=true;
                                  -if(script){scriptSrc=script.src;
                                  -file=reFirebugFile.exec(scriptSrc);
                                  -var version=script.getAttribute("FirebugLite");
                                  -var number=version?parseInt(version):0;
                                  -if(!version||!number||number<bookmarkletVersion){FBL.Env.bookmarkletOutdated=true
                                  -}}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"){if(file=reFirebugFile.exec(si.getAttribute("firebugSrc"))){scriptSrc=si.getAttribute("firebugSrc");
                                  -hasSrcAttribute=false
                                  -}else{if(file=reFirebugFile.exec(si.src)){scriptSrc=si.src
                                  -}else{continue
                                  -}}script=si;
                                  -break
                                  -}}}if(script){script.firebugIgnore=true
                                  -}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(scriptSrc)){path=rePath.exec(scriptSrc)[1]
                                  -}else{var r=rePath.exec(scriptSrc);
                                  -var src=r?r[1]:scriptSrc;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}}FBL.Env.isChromeExtension=script&&script.getAttribute("extension")=="Chrome";
                                  -if(FBL.Env.isChromeExtension){path=productionDir;
                                  -FBL.Env.bookmarkletOutdated=false;
                                  -script={innerHTML:"{showIconWhenHidden:false}"}
                                  -}isGetFirebugSite=reGetFirebugSite.test(path);
                                  -if(isGetFirebugSite&&path.indexOf("/releases/lite/")==-1){path+="releases/lite/"+(fileName=="firebug-lite-beta.js"?"beta/":"latest/")
                                  -}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var Env=FBL.Env;
                                  -Env.useLocalSkin=path.indexOf(location.protocol+"//"+location.host+"/")==0&&!isGetFirebugSite;
                                  -if(fileName=="firebug-lite-dev.js"){Env.isDevelopmentMode=true;
                                  -Env.isDebugMode=true
                                  -}else{if(fileName=="firebug-lite-debug.js"){Env.isDebugMode=true
                                  -}}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true
                                  -}if(fileOptions){var options=fileOptions.split(",");
                                  -for(var i=0,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var name,value;
                                  -if(option.indexOf("=")!=-1){var parts=option.split("=");
                                  -name=parts[0];
                                  -value=eval(unescape(parts[1]))
                                  -}else{name=option;
                                  -value=true
                                  -}if(name=="debug"){Env.isDebugMode=!!value
                                  -}else{if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}}if(hasSrcAttribute){var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval("("+innerOptions+")");
                                  -for(var name in innerOptionsObject){var value=innerOptionsObject[name];
                                  -if(name=="debug"){Env.isDebugMode=!!value
                                  -}else{if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}}}if(!Env.Options.saveCookies){FBL.Store.remove("FirebugLite")
                                  -}if(Env.isDebugMode){Env.Options.startOpened=true;
                                  -Env.Options.enableTrace=true;
                                  -Env.Options.disableWhenFirebugActive=false
                                  -}var loc=Env.Location;
                                  -var isProductionRelease=path.indexOf(productionDir)!=-1;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=(isProductionRelease?path:loc.baseDir)+"skin/"+Env.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName
                                  -}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.bindFixed=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,args)
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.descend=function(prototypeParent,childProperties){function protoSetter(){}protoSetter.prototype=prototypeParent;
                                  -var newOb=new protoSetter();
                                  -for(var n in childProperties){newOb[n]=childProperties[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}this.createStyleSheet=function(doc,url){var style=this.createElement("link");
                                  -style.setAttribute("charset","utf-8");
                                  -style.firebugIgnore=true;
                                  -style.setAttribute("rel","stylesheet");
                                  -style.setAttribute("type","text/css");
                                  -style.setAttribute("href",url);
                                  -return style
                                  -};
                                  -this.addStyleSheet=function(doc,style){var heads=doc.getElementsByTagName("head");
                                  -if(heads.length){heads[0].appendChild(style)
                                  -}else{doc.documentElement.appendChild(style)
                                  -}};
                                  -this.appendStylesheet=function(doc,uri){if(this.$(uri,doc)){return
                                  -}var styleSheet=this.createStyleSheet(doc,uri);
                                  -styleSheet.setAttribute("id",uri);
                                  -this.addStyleSheet(doc,styleSheet)
                                  -};
                                  -this.addScript=function(doc,id,src){var element=doc.createElementNS("http://www.w3.org/1999/xhtml","html:script");
                                  -element.setAttribute("type","text/javascript");
                                  -element.setAttribute("id",id);
                                  -if(!FBTrace.DBG_CONSOLE){FBL.unwrapObject(element).firebugIgnore=true
                                  -}element.innerHTML=src;
                                  -if(doc.documentElement){doc.documentElement.appendChild(element)
                                  -}else{if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.addScript doc has no documentElement:",doc)
                                  -}}return element
                                  -};
                                  -this.getStyle=this.isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return el.ownerDocument.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -};
                                  -var entityConversionLists=this.entityConversionLists={normal:{whitespace:{"\t":"\u200c\u2192","\n":"\u200c\u00b6","\r":"\u200c\u00ac"," ":"\u200c\u00b7"}},reverse:{whitespace:{"&Tab;":"\t","&NewLine;":"\n","\u200c\u2192":"\t","\u200c\u00b6":"\n","\u200c\u00ac":"\r","\u200c\u00b7":" "}}};
                                  -var normal=entityConversionLists.normal,reverse=entityConversionLists.reverse;
                                  -function addEntityMapToList(ccode,entity){var lists=Array.prototype.slice.call(arguments,2),len=lists.length,ch=String.fromCharCode(ccode);
                                  -for(var i=0;
                                  -i<len;
                                  -i++){var list=lists[i];
                                  -normal[list]=normal[list]||{};
                                  -normal[list][ch]="&"+entity+";";
                                  -reverse[list]=reverse[list]||{};
                                  -reverse[list]["&"+entity+";"]=ch
                                  -}}var e=addEntityMapToList,white="whitespace",text="text",attr="attributes",css="css",editor="editor";
                                  -e(34,"quot",attr,css);
                                  -e(38,"amp",attr,text,css);
                                  -e(39,"apos",css);
                                  -e(60,"lt",attr,text,css);
                                  -e(62,"gt",attr,text,css);
                                  -e(169,"copy",text,editor);
                                  -e(174,"reg",text,editor);
                                  -e(8482,"trade",text,editor);
                                  -e(8210,"#8210",attr,text,editor);
                                  -e(8211,"ndash",attr,text,editor);
                                  -e(8212,"mdash",attr,text,editor);
                                  -e(8213,"#8213",attr,text,editor);
                                  -e(160,"nbsp",attr,text,white,editor);
                                  -e(8194,"ensp",attr,text,white,editor);
                                  -e(8195,"emsp",attr,text,white,editor);
                                  -e(8201,"thinsp",attr,text,white,editor);
                                  -e(8204,"zwnj",attr,text,white,editor);
                                  -e(8205,"zwj",attr,text,white,editor);
                                  -e(8206,"lrm",attr,text,white,editor);
                                  -e(8207,"rlm",attr,text,white,editor);
                                  -e(8203,"#8203",attr,text,white,editor);
                                  -var entityConversionRegexes={normal:{},reverse:{}};
                                  -var escapeEntitiesRegEx={normal:function(list){var chars=[];
                                  -for(var ch in list){chars.push(ch)
                                  -}return new RegExp("(["+chars.join("")+"])","gm")
                                  -},reverse:function(list){var chars=[];
                                  -for(var ch in list){chars.push(ch)
                                  -}return new RegExp("("+chars.join("|")+")","gm")
                                  -}};
                                  -function getEscapeRegexp(direction,lists){var name="",re;
                                  -var groups=[].concat(lists);
                                  -for(i=0;
                                  -i<groups.length;
                                  -i++){name+=groups[i].group
                                  -}re=entityConversionRegexes[direction][name];
                                  -if(!re){var list={};
                                  -if(groups.length>1){for(var i=0;
                                  -i<groups.length;
                                  -i++){var aList=entityConversionLists[direction][groups[i].group];
                                  -for(var item in aList){list[item]=aList[item]
                                  -}}}else{if(groups.length==1){list=entityConversionLists[direction][groups[0].group]
                                  -}else{list={}
                                  -}}re=entityConversionRegexes[direction][name]=escapeEntitiesRegEx[direction](list)
                                  -}return re
                                  -}function createSimpleEscape(name,direction){return function(value){var list=entityConversionLists[direction][name];
                                  -return String(value).replace(getEscapeRegexp(direction,{group:name,list:list}),function(ch){return list[ch]
                                  -})
                                  -}
                                  -}function escapeGroupsForEntities(str,lists){lists=[].concat(lists);
                                  -var re=getEscapeRegexp("normal",lists),split=String(str).split(re),len=split.length,results=[],cur,r,i,ri=0,l,list,last="";
                                  -if(!len){return[{str:String(str),group:"",name:""}]
                                  -}for(i=0;
                                  -i<len;
                                  -i++){cur=split[i];
                                  -if(cur==""){continue
                                  -}for(l=0;
                                  -l<lists.length;
                                  -l++){list=lists[l];
                                  -r=entityConversionLists.normal[list.group][cur];
                                  -if(r){results[ri]={str:r,"class":list["class"],extra:list.extra[cur]?list["class"]+list.extra[cur]:""};
                                  -break
                                  -}}if(!r){results[ri]={str:cur,"class":"",extra:""}
                                  -}ri++
                                  -}return results
                                  -}this.escapeGroupsForEntities=escapeGroupsForEntities;
                                  -function unescapeEntities(str,lists){var re=getEscapeRegexp("reverse",lists),split=String(str).split(re),len=split.length,results=[],cur,r,i,ri=0,l,list;
                                  -if(!len){return str
                                  -}lists=[].concat(lists);
                                  -for(i=0;
                                  -i<len;
                                  -i++){cur=split[i];
                                  -if(cur==""){continue
                                  -}for(l=0;
                                  -l<lists.length;
                                  -l++){list=lists[l];
                                  -r=entityConversionLists.reverse[list.group][cur];
                                  -if(r){results[ri]=r;
                                  -break
                                  -}}if(!r){results[ri]=cur
                                  -}ri++
                                  -}return results.join("")||""
                                  -}var escapeForTextNode=this.escapeForTextNode=createSimpleEscape("text","normal");
                                  -var escapeForHtmlEditor=this.escapeForHtmlEditor=createSimpleEscape("editor","normal");
                                  -var escapeForElementAttribute=this.escapeForElementAttribute=createSimpleEscape("attributes","normal");
                                  -var escapeForCss=this.escapeForCss=createSimpleEscape("css","normal");
                                  -var escapeForSourceLine=this.escapeForSourceLine=createSimpleEscape("text","normal");
                                  -var unescapeWhitespace=createSimpleEscape("whitespace","reverse");
                                  -this.unescapeForTextNode=function(str){if(Firebug.showTextNodesWithWhitespace){str=unescapeWhitespace(str)
                                  -}if(!Firebug.showTextNodesWithEntities){str=escapeForElementAttribute(str)
                                  -}return str
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
                                  -};
                                  -this.splitLines=function(text){var reSplitLines2=/.*(:?\r\n|\n|\r)?/mg;
                                  -var lines;
                                  -if(text.match){lines=text.match(reSplitLines2)
                                  -}else{var str=text+"";
                                  -lines=str.match(reSplitLines2)
                                  -}lines.pop();
                                  -return lines
                                  -};
                                  -this.safeToString=function(ob){if(this.isIE){try{return ob+""
                                  -}catch(E){FBTrace.sysout("Lib.safeToString() failed for ",ob);
                                  -return""
                                  -}}try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return ob+""
                                  -}};
                                  -this.hasProperties=function(ob){try{for(var name in ob){return true
                                  -}}catch(exc){}return false
                                  -};
                                  -var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return this.getStyle(elt,"visibility")!="hidden"&&(elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML")
                                  -};
                                  -this.collapse=function(elt,collapsed){if(this.isIElt8){if(collapsed){this.setClass(elt,"collapsed")
                                  -}else{this.removeClass(elt,"collapsed")
                                  -}}else{elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -}};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){var nodeName=" "+node.nodeName.toLowerCase()+" ";
                                  -var ignoreTags=" table tbody thead tfoot th tr td ";
                                  -if(this.isIE&&ignoreTags.indexOf(nodeName)!=-1){this.eraseNode(node)
                                  -}else{node.innerHTML=""
                                  -}};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.getClientOffset=function(elt){var addOffset=function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -var chrome=Firebug.chrome;
                                  -if(elt.offsetLeft){coords.x+=elt.offsetLeft+chrome.getMeasurementInPixels(elt,"borderLeft")
                                  -}if(elt.offsetTop){coords.y+=elt.offsetTop+chrome.getMeasurementInPixels(elt,"borderTop")
                                  -}if(p){if(p.nodeType==1){addOffset(p,coords,view)
                                  -}}else{var otherView=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView;
                                  -if(!otherView.opener&&otherView.frameElement){addOffset(otherView.frameElement,coords,otherView)
                                  -}}};
                                  -var isIE=this.isIE;
                                  -var coords={x:0,y:0};
                                  -if(elt){var view=isIE?elt.ownerDocument.parentWindow:elt.ownerDocument.defaultView;
                                  -addOffset(elt,coords,view)
                                  -}return coords
                                  -};
                                  -this.getViewOffset=function(elt,singleFrame){function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -coords.x+=elt.offsetLeft-(p?p.scrollLeft:0);
                                  -coords.y+=elt.offsetTop-(p?p.scrollTop:0);
                                  -if(p){if(p.nodeType==1){var parentStyle=view.getComputedStyle(p,"");
                                  -if(parentStyle.position!="static"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth);
                                  -if(p.localName=="TABLE"){coords.x+=parseInt(parentStyle.paddingLeft);
                                  -coords.y+=parseInt(parentStyle.paddingTop)
                                  -}else{if(p.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.marginLeft);
                                  -coords.y+=parseInt(style.marginTop)
                                  -}}}else{if(p.localName=="BODY"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth)
                                  -}}var parent=elt.parentNode;
                                  -while(p!=parent){coords.x-=parent.scrollLeft;
                                  -coords.y-=parent.scrollTop;
                                  -parent=parent.parentNode
                                  -}addOffset(p,coords,view)
                                  -}}else{if(elt.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.borderLeftWidth);
                                  -coords.y+=parseInt(style.borderTopWidth);
                                  -var htmlStyle=view.getComputedStyle(elt.parentNode,"");
                                  -coords.x-=parseInt(htmlStyle.paddingLeft);
                                  -coords.y-=parseInt(htmlStyle.paddingTop)
                                  -}if(elt.scrollLeft){coords.x+=elt.scrollLeft
                                  -}if(elt.scrollTop){coords.y+=elt.scrollTop
                                  -}var win=elt.ownerDocument.defaultView;
                                  -if(win&&(!singleFrame&&win.frameElement)){addOffset(win.frameElement,coords,win)
                                  -}}}var coords={x:0,y:0};
                                  -if(elt){addOffset(elt,coords,elt.ownerDocument.defaultView)
                                  -}return coords
                                  -};
                                  -this.getLTRBWH=function(elt){var bcrect,dims={left:0,top:0,right:0,bottom:0,width:0,height:0};
                                  -if(elt){bcrect=elt.getBoundingClientRect();
                                  -dims.left=bcrect.left;
                                  -dims.top=bcrect.top;
                                  -dims.right=bcrect.right;
                                  -dims.bottom=bcrect.bottom;
                                  -if(bcrect.width){dims.width=bcrect.width;
                                  -dims.height=bcrect.height
                                  -}else{dims.width=dims.right-dims.left;
                                  -dims.height=dims.bottom-dims.top
                                  -}}return dims
                                  -};
                                  -this.applyBodyOffsets=function(elt,clientRect){var od=elt.ownerDocument;
                                  -if(!od.body){return clientRect
                                  -}var style=od.defaultView.getComputedStyle(od.body,null);
                                  -var pos=style.getPropertyValue("position");
                                  -if(pos==="absolute"||pos==="relative"){var borderLeft=parseInt(style.getPropertyValue("border-left-width").replace("px",""),10)||0;
                                  -var borderTop=parseInt(style.getPropertyValue("border-top-width").replace("px",""),10)||0;
                                  -var paddingLeft=parseInt(style.getPropertyValue("padding-left").replace("px",""),10)||0;
                                  -var paddingTop=parseInt(style.getPropertyValue("padding-top").replace("px",""),10)||0;
                                  -var marginLeft=parseInt(style.getPropertyValue("margin-left").replace("px",""),10)||0;
                                  -var marginTop=parseInt(style.getPropertyValue("margin-top").replace("px",""),10)||0;
                                  -var offsetX=borderLeft+paddingLeft+marginLeft;
                                  -var offsetY=borderTop+paddingTop+marginTop;
                                  -clientRect.left-=offsetX;
                                  -clientRect.top-=offsetY;
                                  -clientRect.right-=offsetX;
                                  -clientRect.bottom-=offsetY
                                  -}return clientRect
                                  -};
                                  -this.getOffsetSize=function(elt){return{width:elt.offsetWidth,height:elt.offsetHeight}
                                  -};
                                  -this.getOverflowParent=function(element){for(var scrollParent=element.parentNode;
                                  -scrollParent;
                                  -scrollParent=scrollParent.offsetParent){if(scrollParent.scrollHeight>scrollParent.offsetHeight){return scrollParent
                                  -}}};
                                  -this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom)
                                  -}return onBottom
                                  -};
                                  -this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element)
                                  -}}return(element.scrollTop==element.scrollHeight)
                                  -};
                                  -this.move=function(element,x,y){element.style.left=x+"px";
                                  -element.style.top=y+"px"
                                  -};
                                  -this.resize=function(element,w,h){element.style.width=w+"px";
                                  -element.style.height=h+"px"
                                  -};
                                  -this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2);
                                  -var centerY=offset.y-split;
                                  -scrollBox.scrollTop=centerY;
                                  -topSpace=split;
                                  -bottomSpace=split-element.offsetHeight
                                  -}return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)}
                                  -};
                                  -this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return
                                  -}if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -if(!notY){var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2);
                                  -scrollBox.scrollTop=centerY
                                  -}}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft;
                                  -var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth);
                                  -if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2);
                                  -scrollBox.scrollLeft=centerX
                                  -}}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML)
                                  -}};
                                  -var cssKeywordMap=null;
                                  -var cssPropNames=null;
                                  -var cssColorNames=null;
                                  -var imageRules=null;
                                  -this.getCSSKeywordsByProperty=function(propName){if(!cssKeywordMap){cssKeywordMap={};
                                  -for(var name in this.cssInfo){var list=[];
                                  -var types=this.cssInfo[name];
                                  -for(var i=0;
                                  -i<types.length;
                                  -++i){var keywords=this.cssKeywords[types[i]];
                                  -if(keywords){list.push.apply(list,keywords)
                                  -}}cssKeywordMap[name]=list
                                  -}}return propName in cssKeywordMap?cssKeywordMap[propName]:[]
                                  -};
                                  -this.getCSSPropertyNames=function(){if(!cssPropNames){cssPropNames=[];
                                  -for(var name in this.cssInfo){cssPropNames.push(name)
                                  -}}return cssPropNames
                                  -};
                                  -this.isColorKeyword=function(keyword){if(keyword=="transparent"){return false
                                  -}if(!cssColorNames){cssColorNames=[];
                                  -var colors=this.cssKeywords.color;
                                  -for(var i=0;
                                  -i<colors.length;
                                  -++i){cssColorNames.push(colors[i].toLowerCase())
                                  -}var systemColors=this.cssKeywords.systemColor;
                                  -for(var i=0;
                                  -i<systemColors.length;
                                  -++i){cssColorNames.push(systemColors[i].toLowerCase())
                                  -}}return cssColorNames.indexOf?cssColorNames.indexOf(keyword.toLowerCase())!=-1:(" "+cssColorNames.join(" ")+" ").indexOf(" "+keyword.toLowerCase()+" ")!=-1
                                  -};
                                  -this.isImageRule=function(rule){if(!imageRules){imageRules=[];
                                  -for(var i in this.cssInfo){var r=i.toLowerCase();
                                  -var suffix="image";
                                  -if(r.match(suffix+"$")==suffix||r=="background"){imageRules.push(r)
                                  -}}}return imageRules.indexOf?imageRules.indexOf(rule.toLowerCase())!=-1:(" "+imageRules.join(" ")+" ").indexOf(" "+rule.toLowerCase()+" ")!=-1
                                  -};
                                  -this.copyTextStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView;
                                  -if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"")
                                  -}toNode.style.fontFamily=style.fontFamily;
                                  -toNode.style.fontSize=style.fontSize;
                                  -toNode.style.fontWeight=style.fontWeight;
                                  -toNode.style.fontStyle=style.fontStyle;
                                  -return style
                                  -}};
                                  -this.copyBoxStyles=function(fromNode,toNode,style){var view=this.isIE?fromNode.ownerDocument.parentWindow:fromNode.ownerDocument.defaultView;
                                  -if(view){if(!style){style=this.isIE?fromNode.currentStyle:view.getComputedStyle(fromNode,"")
                                  -}toNode.style.marginTop=style.marginTop;
                                  -toNode.style.marginRight=style.marginRight;
                                  -toNode.style.marginBottom=style.marginBottom;
                                  -toNode.style.marginLeft=style.marginLeft;
                                  -toNode.style.borderTopWidth=style.borderTopWidth;
                                  -toNode.style.borderRightWidth=style.borderRightWidth;
                                  -toNode.style.borderBottomWidth=style.borderBottomWidth;
                                  -toNode.style.borderLeftWidth=style.borderLeftWidth;
                                  -return style
                                  -}};
                                  -this.readBoxStyles=function(style){var styleNames={"margin-top":"marginTop","margin-right":"marginRight","margin-left":"marginLeft","margin-bottom":"marginBottom","border-top-width":"borderTop","border-right-width":"borderRight","border-left-width":"borderLeft","border-bottom-width":"borderBottom","padding-top":"paddingTop","padding-right":"paddingRight","padding-left":"paddingLeft","padding-bottom":"paddingBottom","z-index":"zIndex"};
                                  -var styles={};
                                  -for(var styleName in styleNames){styles[styleNames[styleName]]=parseInt(style.getPropertyCSSValue(styleName).cssText)||0
                                  -}if(FBTrace.DBG_INSPECT){FBTrace.sysout("readBoxStyles ",styles)
                                  -}return styles
                                  -};
                                  -this.getBoxFromStyles=function(style,element){var args=this.readBoxStyles(style);
                                  -args.width=element.offsetWidth-(args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -args.height=element.offsetHeight-(args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -return args
                                  -};
                                  -this.getElementCSSSelector=function(element){var label=element.localName.toLowerCase();
                                  -if(element.id){label+="#"+element.id
                                  -}if(element.hasAttribute("class")){label+="."+element.getAttribute("class").split(" ")[0]
                                  -}return label
                                  -};
                                  -this.getURLForStyleSheet=function(styleSheet){return(styleSheet.href?styleSheet.href:styleSheet.ownerNode.ownerDocument.URL)
                                  -};
                                  -this.getDocumentForStyleSheet=function(styleSheet){while(styleSheet.parentStyleSheet&&!styleSheet.ownerNode){styleSheet=styleSheet.parentStyleSheet
                                  -}if(styleSheet.ownerNode){return styleSheet.ownerNode.ownerDocument
                                  -}};
                                  -this.getInstanceForStyleSheet=function(styleSheet,ownerDocument){if(FBL.isSystemStyleSheet(styleSheet)){return 0
                                  -}if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: "+styleSheet.href+" "+styleSheet.media.mediaText+" "+(styleSheet.ownerNode&&FBL.getElementXPath(styleSheet.ownerNode)),ownerDocument)
                                  -}ownerDocument=ownerDocument||FBL.getDocumentForStyleSheet(styleSheet);
                                  -var ret=0,styleSheets=ownerDocument.styleSheets,href=styleSheet.href;
                                  -for(var i=0;
                                  -i<styleSheets.length;
                                  -i++){var curSheet=styleSheets[i];
                                  -if(FBTrace.DBG_CSS){FBTrace.sysout("getInstanceForStyleSheet: compare href "+i+" "+curSheet.href+" "+curSheet.media.mediaText+" "+(curSheet.ownerNode&&FBL.getElementXPath(curSheet.ownerNode)))
                                  -}if(curSheet==styleSheet){break
                                  -}if(curSheet.href==href){ret++
                                  -}}return ret
                                  -};
                                  -var getElementType=this.getElementType=function(node){if(isElementXUL(node)){return"xul"
                                  -}else{if(isElementSVG(node)){return"svg"
                                  -}else{if(isElementMathML(node)){return"mathml"
                                  -}else{if(isElementXHTML(node)){return"xhtml"
                                  -}else{if(isElementHTML(node)){return"html"
                                  -}}}}}};
                                  -var getElementSimpleType=this.getElementSimpleType=function(node){if(isElementSVG(node)){return"svg"
                                  -}else{if(isElementMathML(node)){return"mathml"
                                  -}else{return"html"
                                  -}}};
                                  -var isElementHTML=this.isElementHTML=function(node){return node.nodeName==node.nodeName.toUpperCase()
                                  -};
                                  -var isElementXHTML=this.isElementXHTML=function(node){return node.nodeName==node.nodeName.toLowerCase()
                                  -};
                                  -var isElementMathML=this.isElementMathML=function(node){return node.namespaceURI=="http://www.w3.org/1998/Math/MathML"
                                  -};
                                  -var isElementSVG=this.isElementSVG=function(node){return node.namespaceURI=="http://www.w3.org/2000/svg"
                                  -};
                                  -var isElementXUL=this.isElementXUL=function(node){return node instanceof XULElement
                                  -};
                                  -this.isSelfClosing=function(element){if(isElementSVG(element)||isElementMathML(element)){return true
                                  -}var tag=element.localName.toLowerCase();
                                  -return(this.selfClosingTags.hasOwnProperty(tag))
                                  -};
                                  -this.getElementHTML=function(element){var self=this;
                                  -function toHTML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return
                                  -}html.push("<",elt.nodeName.toLowerCase());
                                  -for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.localName.indexOf("firebug-")==0){continue
                                  -}if(attr.localName.indexOf("-moz-math")==0){continue
                                  -}html.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"')
                                  -}if(elt.firstChild){html.push(">");
                                  -var pureText=true;
                                  -for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){pureText=pureText&&(child.nodeType==Node.TEXT_NODE)
                                  -}if(pureText){html.push(escapeForHtmlEditor(elt.textContent))
                                  -}else{for(var child=elt.firstChild;
                                  -child;
                                  -child=child.nextSibling){toHTML(child)
                                  -}}html.push("</",elt.nodeName.toLowerCase(),">")
                                  -}else{if(isElementSVG(elt)||isElementMathML(elt)){html.push("/>")
                                  -}else{if(self.isSelfClosing(elt)){html.push((isElementXHTML(elt))?"/>":">")
                                  -}else{html.push("></",elt.nodeName.toLowerCase(),">")
                                  -}}}}else{if(elt.nodeType==Node.TEXT_NODE){html.push(escapeForTextNode(elt.textContent))
                                  -}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){html.push("<![CDATA[",elt.nodeValue,"]]>")
                                  -}else{if(elt.nodeType==Node.COMMENT_NODE){html.push("<!--",elt.nodeValue,"-->")
                                  -}}}}}var html=[];
                                  -toHTML(element);
                                  -return html.join("")
                                  -};
                                  -this.getElementXML=function(element){function toXML(elt){if(elt.nodeType==Node.ELEMENT_NODE){if(unwrapObject(elt).firebugIgnore){return
                                  -}xml.push("<",elt.nodeName.toLowerCase());
                                  -for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.localName.indexOf("firebug-")==0){continue
                                  -}if(attr.localName.indexOf("-moz-math")==0){continue
                                  -}xml.push(" ",attr.nodeName,'="',escapeForElementAttribute(attr.nodeValue),'"')
                                  -}if(elt.firstChild){xml.push(">");
                                  -for(var child=elt.firstChild;
                                  -child;
                                  -child=child.nextSibling){toXML(child)
                                  -}xml.push("</",elt.nodeName.toLowerCase(),">")
                                  -}else{xml.push("/>")
                                  -}}else{if(elt.nodeType==Node.TEXT_NODE){xml.push(elt.nodeValue)
                                  -}else{if(elt.nodeType==Node.CDATA_SECTION_NODE){xml.push("<![CDATA[",elt.nodeValue,"]]>")
                                  -}else{if(elt.nodeType==Node.COMMENT_NODE){xml.push("<!--",elt.nodeValue,"-->")
                                  -}}}}}var xml=[];
                                  -toXML(element);
                                  -return xml.join("")
                                  -};
                                  -this.hasClass=function(node,name){if(arguments.length==2){return(" "+node.className+" ").indexOf(" "+name+" ")!=-1
                                  -}if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.old_hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&(" "+node.className+" ").indexOf(" "+name+" ")==-1){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if((" "+elt.className+" ").indexOf(" "+name+" ")!=-1){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.getElementsByClass=function(node,className){var result=[];
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){result.push(child)
                                  -}}return result
                                  -};
                                  -this.getElementByClass=function(node,className){var args=cloneArray(arguments);
                                  -args.splice(0,1);
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){var args1=cloneArray(args);
                                  -args1.unshift(child);
                                  -if(FBL.hasClass.apply(null,args1)){return child
                                  -}else{var found=FBL.getElementByClass.apply(null,args1);
                                  -if(found){return found
                                  -}}}return null
                                  -};
                                  -this.isAncestor=function(node,potentialAncestor){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(parent==potentialAncestor){return true
                                  -}}return false
                                  -};
                                  -this.getNextElement=function(node){while(node&&node.nodeType!=1){node=node.nextSibling
                                  -}return node
                                  -};
                                  -this.getPreviousElement=function(node){while(node&&node.nodeType!=1){node=node.previousSibling
                                  -}return node
                                  -};
                                  -this.getBody=function(doc){if(doc.body){return doc.body
                                  -}var body=doc.getElementsByTagName("body")[0];
                                  -if(body){return body
                                  -}return doc.firstChild
                                  -};
                                  -this.findNextDown=function(node,criteria){if(!node){return null
                                  -}for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(criteria(child)){return child
                                  -}var next=this.findNextDown(child,criteria);
                                  -if(next){return next
                                  -}}};
                                  -this.findPreviousUp=function(node,criteria){if(!node){return null
                                  -}for(var child=node.lastChild;
                                  -child;
                                  -child=child.previousSibling){var next=this.findPreviousUp(child,criteria);
                                  -if(next){return next
                                  -}if(criteria(child)){return child
                                  -}}};
                                  -this.findNext=function(node,criteria,upOnly,maxRoot){if(!node){return null
                                  -}if(!upOnly){var next=this.findNextDown(node,criteria);
                                  -if(next){return next
                                  -}}for(var sib=node.nextSibling;
                                  -sib;
                                  -sib=sib.nextSibling){if(criteria(sib)){return sib
                                  -}var next=this.findNextDown(sib,criteria);
                                  -if(next){return next
                                  -}}if(node.parentNode&&node.parentNode!=maxRoot){return this.findNext(node.parentNode,criteria,true)
                                  -}};
                                  -this.findPrevious=function(node,criteria,downOnly,maxRoot){if(!node){return null
                                  -}for(var sib=node.previousSibling;
                                  -sib;
                                  -sib=sib.previousSibling){var prev=this.findPreviousUp(sib,criteria);
                                  -if(prev){return prev
                                  -}if(criteria(sib)){return sib
                                  -}}if(!downOnly){var next=this.findPreviousUp(node,criteria);
                                  -if(next){return next
                                  -}}if(node.parentNode&&node.parentNode!=maxRoot){if(criteria(node.parentNode)){return node.parentNode
                                  -}return this.findPrevious(node.parentNode,criteria,true)
                                  -}};
                                  -this.getNextByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state)
                                  -};
                                  -return this.findNext(root,iter)
                                  -};
                                  -this.getPreviousByClass=function(root,state){var iter=function iter(node){return node.nodeType==1&&FBL.hasClass(node,state)
                                  -};
                                  -return this.findPrevious(root,iter)
                                  -};
                                  -this.isElement=function(o){try{return o&&this.instanceOf(o,"Element")
                                  -}catch(ex){return false
                                  -}};
                                  -var appendFragment=null;
                                  -this.appendInnerHTML=function(element,html,referenceElement){referenceElement=referenceElement||null;
                                  -var doc=element.ownerDocument;
                                  -if(doc.createRange){var range=doc.createRange();
                                  -range.selectNodeContents(element);
                                  -var fragment=range.createContextualFragment(html);
                                  -var firstChild=fragment.firstChild;
                                  -element.insertBefore(fragment,referenceElement)
                                  -}else{if(!appendFragment||appendFragment.ownerDocument!=doc){appendFragment=doc.createDocumentFragment()
                                  -}var div=doc.createElement("div");
                                  -div.innerHTML=html;
                                  -var firstChild=div.firstChild;
                                  -while(div.firstChild){appendFragment.appendChild(div.firstChild)
                                  -}element.insertBefore(appendFragment,referenceElement);
                                  -div=null
                                  -}return firstChild
                                  -};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Env.browser.document;
                                  -var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(name!="document"){element.setAttribute(propname,properties[name])
                                  -}}return element
                                  -};
                                  -this.safeGetWindowLocation=function(window){try{if(window){if(window.closed){return"(window.closed)"
                                  -}if("location" in window){return window.location+""
                                  -}else{return"(no window.location)"
                                  -}}else{return"(no context.window)"
                                  -}}catch(exc){if(FBTrace.DBG_WINDOWS||FBTrace.DBG_ERRORS){FBTrace.sysout("TabContext.getWindowLocation failed "+exc,exc)
                                  -}FBTrace.sysout("TabContext.getWindowLocation failed window:",window);
                                  -return"(getWindowLocation: "+exc+")"
                                  -}};
                                  -this.isLeftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==4:event.button==1)&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==2:event.button==2)&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isAlt=function(event){return event.altKey&&!event.ctrlKey&&!event.shiftKey&&!event.metaKey
                                  -};
                                  -this.isAltClick=function(event){return(this.isIE&&event.type!="click"&&event.type!="dblclick"?event.button==1:event.button==0)&&this.isAlt(event)
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler,useCapture){if(object.addEventListener){object.addEventListener(name,handler,useCapture)
                                  -}else{object.attachEvent("on"+name,handler)
                                  -}};
                                  -this.removeEvent=function(object,name,handler,useCapture){try{if(object.removeEventListener){object.removeEventListener(name,handler,useCapture)
                                  -}else{object.detachEvent("on"+name,handler)
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("FBL.removeEvent error: ",object,name)
                                  -}}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(e.stopPropagation){e.stopPropagation()
                                  -}else{e.cancelBubble=true
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.addEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.addEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.removeEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.removeEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){if(!listeners){return
                                  -}try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener[name]){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listener[name]){listener[name].apply(listener,args)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout(" Exception in lib.dispatch "+name,exc)
                                  -}}};
                                  -var disableTextSelectionHandler=function(event){FBL.cancelEvent(event,true);
                                  -return false
                                  -};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.addEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -if(!this.isFirefox){this.addEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}e.style.cursor="default"
                                  -};
                                  -this.restoreTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.removeEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="cursor: default;";
                                  -if(!this.isFirefox){this.removeEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}};
                                  -var eventTypes={composition:["composition","compositionstart","compositionend"],contextmenu:["contextmenu"],drag:["dragenter","dragover","dragexit","dragdrop","draggesture"],focus:["focus","blur"],form:["submit","reset","change","select","input"],key:["keydown","keyup","keypress"],load:["load","beforeunload","unload","abort","error"],mouse:["mousedown","mouseup","click","dblclick","mouseover","mouseout","mousemove"],mutation:["DOMSubtreeModified","DOMNodeInserted","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMNodeInsertedIntoDocument","DOMAttrModified","DOMCharacterDataModified"],paint:["paint","resize","scroll"],scroll:["overflow","underflow","overflowchanged"],text:["text"],ui:["DOMActivate","DOMFocusIn","DOMFocusOut"],xul:["popupshowing","popupshown","popuphiding","popuphidden","close","command","broadcast","commandupdate"]};
                                  -this.getEventFamily=function(eventType){if(!this.families){this.families={};
                                  -for(var family in eventTypes){var types=eventTypes[family];
                                  -for(var i=0;
                                  -i<types.length;
                                  -++i){this.families[types[i]]=family
                                  -}}}return this.families[eventType]
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){if(!url){return null
                                  -}var queryString=url.indexOf("?");
                                  -if(queryString!=-1){url=url.substr(0,queryString)
                                  -}var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.isSystemStyleSheet=function(sheet){var href=sheet&&sheet.href;
                                  -return href&&FBL.isSystemURL(href)
                                  -};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^\/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^\/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.parseURLParamsArray=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedTextArray(search)
                                  -};
                                  -this.parseURLEncodedTextArray=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:[decodeURIComponent(parts[1])]})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:[""]})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var jsonObject=null;
                                  -try{jsonObject=Firebug.context.evaluate(jsonString,null,null,function(){return null
                                  -})
                                  -}catch(e){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -this.setSelectionRange=function(input,start,length){if(input.createTextRange){var range=input.createTextRange();
                                  -range.moveStart("character",start);
                                  -range.moveEnd("character",length-input.value.length);
                                  -range.select()
                                  -}else{if(input.setSelectionRange){input.setSelectionRange(start,length);
                                  -input.focus()
                                  -}}};
                                  -this.getInputSelectionStart=function(input){if(document.selection){var range=input.ownerDocument.selection.createRange();
                                  -var text=range.text;
                                  -if(text){return input.value.indexOf(text)
                                  -}else{range.moveStart("character",-input.value.length);
                                  -return range.text.length
                                  -}}else{if(typeof input.selectionStart!="undefined"){return input.selectionStart
                                  -}}return 0
                                  -};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isFunction=function(object){if(!object){return false
                                  -}try{return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -}catch(E){FBTrace.sysout("Lib.isFunction() failed for ",object);
                                  -return false
                                  -}};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}if(object.ownerDocument){var win=object.ownerDocument.defaultView||object.ownerDocument.parentWindow;
                                  -if(className in win&&object instanceof win[className]){return true
                                  -}}else{var win=Firebug.browser.window;
                                  -if(className in win){return object instanceof win[className]
                                  -}}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){if(!obj.hasOwnProperty(name)){continue
                                  -}var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=(""+value).toLowerCase()){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{},CSSStyleRule:{property:["selectorText","style"]}};
                                  -var domMemberMap2={};
                                  -var domMemberMap2Sandbox=null;
                                  -var getDomMemberMap2=function(name){if(!domMemberMap2Sandbox){var doc=Firebug.chrome.document;
                                  -var frame=doc.createElement("iframe");
                                  -frame.id="FirebugSandbox";
                                  -frame.style.display="none";
                                  -frame.src="about:blank";
                                  -doc.body.appendChild(frame);
                                  -domMemberMap2Sandbox=frame.window||frame.contentWindow
                                  -}var props=[];
                                  -var object=null;
                                  -if(name=="Window"){object=domMemberMap2Sandbox.window
                                  -}else{if(name=="Document"){object=domMemberMap2Sandbox.document
                                  -}else{if(name=="HTMLScriptElement"){object=domMemberMap2Sandbox.document.createElement("script")
                                  -}else{if(name=="HTMLAnchorElement"){object=domMemberMap2Sandbox.document.createElement("a")
                                  -}else{if(name.indexOf("Element")!=-1){object=domMemberMap2Sandbox.document.createElement("div")
                                  -}}}}}if(object){for(var n in object){props.push(n)
                                  -}}return props;
                                  -return extendArray(props,domMemberMap[name])
                                  -};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){FBL.domMemberCache=domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=getDomMemberMap2(name);
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(this.instanceOf(object,"Document")||this.instanceOf(object,"XMLDocument")){return domMemberCache.Document
                                  -}else{if(this.instanceOf(object,"Location")){return domMemberCache.Location
                                  -}else{if(this.instanceOf(object,"HTMLImageElement")){return domMemberCache.HTMLImageElement
                                  -}else{if(this.instanceOf(object,"HTMLAnchorElement")){return domMemberCache.HTMLAnchorElement
                                  -}else{if(this.instanceOf(object,"HTMLInputElement")){return domMemberCache.HTMLInputElement
                                  -}else{if(this.instanceOf(object,"HTMLButtonElement")){return domMemberCache.HTMLButtonElement
                                  -}else{if(this.instanceOf(object,"HTMLFormElement")){return domMemberCache.HTMLFormElement
                                  -}else{if(this.instanceOf(object,"HTMLBodyElement")){return domMemberCache.HTMLBodyElement
                                  -}else{if(this.instanceOf(object,"HTMLHtmlElement")){return domMemberCache.HTMLHtmlElement
                                  -}else{if(this.instanceOf(object,"HTMLScriptElement")){return domMemberCache.HTMLScriptElement
                                  -}else{if(this.instanceOf(object,"HTMLTableElement")){return domMemberCache.HTMLTableElement
                                  -}else{if(this.instanceOf(object,"HTMLTableRowElement")){return domMemberCache.HTMLTableRowElement
                                  -}else{if(this.instanceOf(object,"HTMLTableCellElement")){return domMemberCache.HTMLTableCellElement
                                  -}else{if(this.instanceOf(object,"HTMLIFrameElement")){return domMemberCache.HTMLIFrameElement
                                  -}else{if(this.instanceOf(object,"SVGSVGElement")){return domMemberCache.SVGSVGElement
                                  -}else{if(this.instanceOf(object,"SVGElement")){return domMemberCache.SVGElement
                                  -}else{if(this.instanceOf(object,"Element")){return domMemberCache.Element
                                  -}else{if(this.instanceOf(object,"Text")||this.instanceOf(object,"CDATASection")){return domMemberCache.Text
                                  -}else{if(this.instanceOf(object,"Attr")){return domMemberCache.Attr
                                  -}else{if(this.instanceOf(object,"Node")){return domMemberCache.Node
                                  -}else{if(this.instanceOf(object,"Event")||this.instanceOf(object,"EventCopy")){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getDOMMembers FAILED ",E)
                                  -}return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap"]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -this.selfClosingTags={meta:1,link:1,area:1,base:1,col:1,input:1,img:1,br:1,hr:1,param:1,embed:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,PARAM:1,COL:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1,param:1,col:1};
                                  -if(typeof KeyEvent=="undefined"){this.KeyEvent={DOM_VK_CANCEL:3,DOM_VK_HELP:6,DOM_VK_BACK_SPACE:8,DOM_VK_TAB:9,DOM_VK_CLEAR:12,DOM_VK_RETURN:13,DOM_VK_ENTER:14,DOM_VK_SHIFT:16,DOM_VK_CONTROL:17,DOM_VK_ALT:18,DOM_VK_PAUSE:19,DOM_VK_CAPS_LOCK:20,DOM_VK_ESCAPE:27,DOM_VK_SPACE:32,DOM_VK_PAGE_UP:33,DOM_VK_PAGE_DOWN:34,DOM_VK_END:35,DOM_VK_HOME:36,DOM_VK_LEFT:37,DOM_VK_UP:38,DOM_VK_RIGHT:39,DOM_VK_DOWN:40,DOM_VK_PRINTSCREEN:44,DOM_VK_INSERT:45,DOM_VK_DELETE:46,DOM_VK_0:48,DOM_VK_1:49,DOM_VK_2:50,DOM_VK_3:51,DOM_VK_4:52,DOM_VK_5:53,DOM_VK_6:54,DOM_VK_7:55,DOM_VK_8:56,DOM_VK_9:57,DOM_VK_SEMICOLON:59,DOM_VK_EQUALS:61,DOM_VK_A:65,DOM_VK_B:66,DOM_VK_C:67,DOM_VK_D:68,DOM_VK_E:69,DOM_VK_F:70,DOM_VK_G:71,DOM_VK_H:72,DOM_VK_I:73,DOM_VK_J:74,DOM_VK_K:75,DOM_VK_L:76,DOM_VK_M:77,DOM_VK_N:78,DOM_VK_O:79,DOM_VK_P:80,DOM_VK_Q:81,DOM_VK_R:82,DOM_VK_S:83,DOM_VK_T:84,DOM_VK_U:85,DOM_VK_V:86,DOM_VK_W:87,DOM_VK_X:88,DOM_VK_Y:89,DOM_VK_Z:90,DOM_VK_CONTEXT_MENU:93,DOM_VK_NUMPAD0:96,DOM_VK_NUMPAD1:97,DOM_VK_NUMPAD2:98,DOM_VK_NUMPAD3:99,DOM_VK_NUMPAD4:100,DOM_VK_NUMPAD5:101,DOM_VK_NUMPAD6:102,DOM_VK_NUMPAD7:103,DOM_VK_NUMPAD8:104,DOM_VK_NUMPAD9:105,DOM_VK_MULTIPLY:106,DOM_VK_ADD:107,DOM_VK_SEPARATOR:108,DOM_VK_SUBTRACT:109,DOM_VK_DECIMAL:110,DOM_VK_DIVIDE:111,DOM_VK_F1:112,DOM_VK_F2:113,DOM_VK_F3:114,DOM_VK_F4:115,DOM_VK_F5:116,DOM_VK_F6:117,DOM_VK_F7:118,DOM_VK_F8:119,DOM_VK_F9:120,DOM_VK_F10:121,DOM_VK_F11:122,DOM_VK_F12:123,DOM_VK_F13:124,DOM_VK_F14:125,DOM_VK_F15:126,DOM_VK_F16:127,DOM_VK_F17:128,DOM_VK_F18:129,DOM_VK_F19:130,DOM_VK_F20:131,DOM_VK_F21:132,DOM_VK_F22:133,DOM_VK_F23:134,DOM_VK_F24:135,DOM_VK_NUM_LOCK:144,DOM_VK_SCROLL_LOCK:145,DOM_VK_COMMA:188,DOM_VK_PERIOD:190,DOM_VK_SLASH:191,DOM_VK_BACK_QUOTE:192,DOM_VK_OPEN_BRACKET:219,DOM_VK_BACK_SLASH:220,DOM_VK_CLOSE_BRACKET:221,DOM_VK_QUOTE:222,DOM_VK_META:224}
                                  -}this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=FBL.getNativeXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=FBL.extend({type:"get",async:true,dataType:"text",contentType:"application/x-www-form-urlencoded"},options||{});
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"||s=="Loaded"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(var param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.createCookie=function(name,value,days){if("cookie" in document){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -}};
                                  -this.readCookie=function(name){if("cookie" in document){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}}return null
                                  -};
                                  -this.removeCookie=function(name){this.createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}};
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -body.appendChild(inch);
                                  -FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -body.removeChild(inch)
                                  -};
                                  -this.SourceLink=function(url,line,type,object,instance){this.href=url;
                                  -this.instance=instance;
                                  -this.line=line;
                                  -this.type=type;
                                  -this.object=object
                                  -};
                                  -this.SourceLink.prototype={toString:function(){return this.href
                                  -},toJSON:function(){return'{"href":"'+this.href+'", '+(this.line?('"line":'+this.line+","):"")+(this.type?(' "type":"'+this.type+'",'):"")+"}"
                                  -}};
                                  -this.SourceText=function(lines,owner){this.lines=lines;
                                  -this.owner=owner
                                  -};
                                  -this.SourceText.getLineAsHTML=function(lineNo){return escapeForSourceLine(this.lines[lineNo-1])
                                  -}
                                  -}).apply(FBL);
                                  -FBL.ns(function(){with(FBL){var oSTR={NoMembersWarning:"There are no properties to show for this object.",EmptyStyleSheet:"There are no rules in this stylesheet.",EmptyElementCSS:"This element has no style rules.",AccessRestricted:"Access to restricted URI denied.","net.label.Parameters":"Parameters","net.label.Source":"Source",URLParameters:"Params",EditStyle:"Edit Element Style...",NewRule:"New Rule...",NewProp:"New Property...",EditProp:'Edit "%s"',DeleteProp:'Delete "%s"',DisableProp:'Disable "%s"'};
                                  -FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:name
                                  -};
                                  -FBL.$STRF=function(name,args){if(!oSTR.hasOwnProperty(name)){return name
                                  -}var format=oSTR[name];
                                  -var objIndex=0;
                                  -var parts=parseFormat(format);
                                  -var trialIndex=objIndex;
                                  -var objects=args;
                                  -for(var i=0;
                                  -i<parts.length;
                                  -i++){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format="";
                                  -objIndex=-1;
                                  -parts.length=0;
                                  -break
                                  -}}}var result=[];
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){result.push(""+args.shift())
                                  -}else{result.push(part)
                                  -}}return result.join("")
                                  -};
                                  -var parseFormat=function parseFormat(format){var parts=[];
                                  -if(format.length<=0){return parts
                                  -}var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index));
                                  -parts.push(m[0].substr(1))
                                  -}else{var type=m[8]?m[8]:m[5];
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -var rep=null;
                                  -switch(type){case"s":rep=FirebugReps.Text;
                                  -break;
                                  -case"f":case"i":case"d":rep=FirebugReps.Number;
                                  -break;
                                  -case"o":rep=null;
                                  -break
                                  -}parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({rep:rep,precision:precision,type:("%"+type)})
                                  -}format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -var parentPanelMap={};
                                  -FBL.Firebug={version:"Firebug Lite 1.5.0-flex-a2",revision:"$Revision$",modules:modules,panelTypes:panelTypes,panelTypeMap:panelTypeMap,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Env.browser);
                                  -Firebug.context=Firebug.browser;
                                  -Firebug.loadPrefs();
                                  -Firebug.context.persistedState.isOpen=false;
                                  -cacheDocument();
                                  -if(Firebug.Inspector&&Firebug.Inspector.create){Firebug.Inspector.create()
                                  -}if(FBL.CssAnalyzer&&FBL.CssAnalyzer.processAllStyleSheets){FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document)
                                  -}FirebugChrome.initialize();
                                  -dispatch(modules,"initialize",[]);
                                  -if(Firebug.disableResourceFetching){Firebug.Console.logFormatted(['Some Firebug Lite features are not working because resource fetching is disabled. To enabled it set the Firebug Lite option "disableResourceFetching" to "false". More info at http://getfirebug.com/firebuglite#Options'],Firebug.context,"warn")
                                  -}if(Env.onLoad){var onLoad=Env.onLoad;
                                  -delete Env.onLoad;
                                  -setTimeout(onLoad,200)
                                  -}},shutdown:function(){if(Firebug.saveCookies){Firebug.savePrefs()
                                  -}if(Firebug.Inspector){Firebug.Inspector.destroy()
                                  -}dispatch(modules,"shutdown",[]);
                                  -var chromeMap=FirebugChrome.chromeMap;
                                  -for(var name in chromeMap){if(chromeMap.hasOwnProperty(name)){try{chromeMap[name].destroy()
                                  -}catch(E){if(FBTrace.DBG_ERRORS){FBTrace.sysout("chrome.destroy() failed to: "+name)
                                  -}}}}Firebug.Lite.Cache.Element.clear();
                                  -Firebug.Lite.Cache.StyleSheet.clear();
                                  -Firebug.browser=null;
                                  -Firebug.context=null
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0,panelType;
                                  -panelType=arguments[i];
                                  -++i){panelTypeMap[panelType.prototype.name]=arguments[i];
                                  -if(panelType.prototype.parentPanel){parentPanelMap[panelType.prototype.parentPanel]=1
                                  -}}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){FBL.defaultRep=rep;
                                  -FBL.defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof object;
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}},getPref:function(name){return Firebug[name]
                                  -},setPref:function(name,value){Firebug[name]=value;
                                  -Firebug.savePrefs()
                                  -},setPrefs:function(prefs){for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
                                  -}}Firebug.savePrefs()
                                  -},restorePrefs:function(){var Options=Env.DefaultOptions;
                                  -for(var name in Options){Firebug[name]=Options[name]
                                  -}},loadPrefs:function(){this.restorePrefs();
                                  -var prefs=Store.get("FirebugLite")||{};
                                  -var options=prefs.options;
                                  -var persistedState=prefs.persistedState||FBL.defaultPersistedState;
                                  -for(var name in options){if(options.hasOwnProperty(name)){Firebug[name]=options[name]
                                  -}}if(Firebug.context&&persistedState){Firebug.context.persistedState=persistedState
                                  -}},savePrefs:function(){var prefs={options:{}};
                                  -var EnvOptions=Env.Options;
                                  -var options=prefs.options;
                                  -for(var name in EnvOptions){if(EnvOptions.hasOwnProperty(name)){options[name]=Firebug[name]
                                  -}}var persistedState=Firebug.context.persistedState;
                                  -if(!persistedState){persistedState=Firebug.context.persistedState=FBL.defaultPersistedState
                                  -}prefs.persistedState=persistedState;
                                  -Store.set("FirebugLite",prefs)
                                  -},erasePrefs:function(){Store.remove("FirebugLite");
                                  -this.restorePrefs()
                                  -}};
                                  -Firebug.restorePrefs();
                                  -window.Firebug=FBL.Firebug;
                                  -if(!Env.Options.enablePersistent||Env.Options.enablePersistent&&Env.isChromeContext||Env.isDebugMode){Env.browser.window.Firebug=FBL.Firebug
                                  -}FBL.cacheDocument=function cacheDocument(){var ElementCache=Firebug.Lite.Cache.Element;
                                  -var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -ElementCache(el)
                                  -}};
                                  -Firebug.Listener=function(){this.fbListeners=null
                                  -};
                                  -Firebug.Listener.prototype={addListener:function(listener){if(!this.fbListeners){this.fbListeners=[]
                                  -}this.fbListeners.push(listener)
                                  -},removeListener:function(listener){remove(this.fbListeners,listener)
                                  -}};
                                  -Firebug.Module=extend(new Firebug.Listener(),{initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}});
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasStatusBar:false,hasToolButtons:false,innerHTMLSync:false},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,sidePanelBarContainer:null,sidePanelBarNode:null,sidePanelBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){this.hasSidePanel=parentPanelMap.hasOwnProperty(this.name);
                                  -this.panelBarNode=$("fbPanelBar1-panelTabs");
                                  -this.sidePanelBarContainer=$("fbPanelBar2-panelTabs");
                                  -if(this.hasSidePanel){this.sidePanelBar=extend({},PanelBar);
                                  -this.sidePanelBar.create(this)
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -var container=this.parentPanel?Firebug.chrome.getSidePanelContainer():Firebug.chrome.getPanelContainer();
                                  -var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel",document:container.ownerDocument});
                                  -container.appendChild(panelNode);
                                  -var tabNode=this.tabNode=createElement("span",{id:panelId+"Tab",className:"panelTab",innerHTML:this.title+'<span class="panelOptions">â–¼</span>'});
                                  -var panelBarNode=this.parentPanel?Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode:this.panelBarNode;
                                  -panelBarNode.appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
                                  -$("fbMainToolbar").appendChild(this.toolButtonsNode)
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox")||$("fbMainToolbar");
                                  -this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"});
                                  -this.statusBarBox.appendChild(this.statusBarNode)
                                  -}this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name)
                                  -}this.onContextMenu=bind(this.onContextMenu,this)
                                  -},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(this.hasSidePanel){this.sidePanelBar.destroy();
                                  -this.sidePanelBar=null
                                  -}this.options=null;
                                  -this.name=null;
                                  -this.parentPanel=null;
                                  -this.tabNode=null;
                                  -this.panelNode=null;
                                  -this.containerNode=null;
                                  -this.toolButtonsNode=null;
                                  -this.statusBarBox=null;
                                  -this.statusBarNode=null
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}if(this.hasSidePanel){this.sidePanelBar.initialize()
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode;
                                  -this.containerNode.scrollTop=this.lastScrollTop;
                                  -addEvent(this.containerNode,"contextmenu",this.onContextMenu);
                                  -Firebug.chrome.currentPanel=Firebug.chrome.selectedPanel&&Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel:Firebug.chrome.selectedPanel;
                                  -Firebug.showInfoTips=true;
                                  -if(Firebug.InfoTip){Firebug.InfoTip.initializeBrowser(Firebug.chrome)
                                  -}},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name)
                                  -}if(Firebug.InfoTip){Firebug.InfoTip.uninitializeBrowser(Firebug.chrome)
                                  -}if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.hideLargeCommandLine()
                                  -}if(this.hasSidePanel){}this.lastScrollTop=this.containerNode.scrollTop;
                                  -removeEvent(this.containerNode,"contextmenu",this.onContextMenu)
                                  -},detach:function(oldChrome,newChrome){if(oldChrome&&oldChrome.selectedPanel&&oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop
                                  -}},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI()
                                  -}},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0
                                  -},show:function(state){var options=this.options;
                                  -if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -this.visible=true;
                                  -if(!this.parentPanel){Firebug.chrome.layout(this)
                                  -}},hide:function(state){var options=this.options;
                                  -if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none";
                                  -this.visible=false
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},hasObject:function(object){return false
                                  -},select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context)
                                  -}if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection)
                                  -}if(forceUpdate||object!=this.selection){this.selection=object;
                                  -this.updateSelection(object)
                                  -}},updateSelection:function(object){},markChange:function(skipSelf){if(this.dependents){if(skipSelf){for(var i=0;
                                  -i<this.dependents.length;
                                  -++i){var panelName=this.dependents[i];
                                  -if(panelName!=this.name){this.context.invalidatePanels(panelName)
                                  -}}}else{this.context.invalidatePanels.apply(this.context,this.dependents)
                                  -}}},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text,reverse){},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case Sensitive","searchCaseSensitive")]
                                  -},navigateToNextDocument:function(match,reverse){var self=this;
                                  -function compare(a,b){var locA=self.getObjectDescription(a);
                                  -var locB=self.getObjectDescription(b);
                                  -if(locA.path>locB.path){return 1
                                  -}if(locA.path<locB.path){return -1
                                  -}if(locA.name>locB.name){return 1
                                  -}if(locA.name<locB.name){return -1
                                  -}return 0
                                  -}var allLocs=this.getLocationList().sort(compare);
                                  -for(var curPos=0;
                                  -curPos<allLocs.length&&allLocs[curPos]!=this.location;
                                  -curPos++){}function transformIndex(index){if(reverse){var intermediate=curPos-index-1;
                                  -return(intermediate<0?allLocs.length:0)+intermediate
                                  -}else{return(curPos+index+1)%allLocs.length
                                  -}}for(var next=0;
                                  -next<allLocs.length-1;
                                  -next++){var object=allLocs[transformIndex(next)];
                                  -if(match(object)){this.navigate(object);
                                  -return object
                                  -}}},getOptionsMenuItems:function(){return null
                                  -},getContextMenuItems:function(object,target){return[]
                                  -},getBreakOnMenuItems:function(){return[]
                                  -},getEditor:function(target,value){},getDefaultSelection:function(){return null
                                  -},browseObject:function(object){},getPopupObject:function(target){return Firebug.getRepObject(target)
                                  -},getTooltipObject:function(target){return Firebug.getRepObject(target)
                                  -},showInfoTip:function(infoTip,x,y){},getObjectPath:function(object){return null
                                  -},getLocationList:function(){return null
                                  -},getDefaultLocation:function(){return null
                                  -},getObjectLocation:function(object){return""
                                  -},getObjectDescription:function(object){var url=this.getObjectLocation(object);
                                  -return FBL.splitURLBase(url)
                                  -},highlight:function(show){var tab=this.getTab();
                                  -if(!tab){return
                                  -}if(show){tab.setAttribute("highlight","true")
                                  -}else{tab.removeAttribute("highlight")
                                  -}},getTab:function(){var chrome=Firebug.chrome;
                                  -var tab=chrome.$("fbPanelBar2").getTab(this.name);
                                  -if(!tab){tab=chrome.$("fbPanelBar1").getTab(this.name)
                                  -}return tab
                                  -},breakOnNext:function(armed){},shouldBreakOnNext:function(){return false
                                  -},getBreakOnNextTooltip:function(enabled){return null
                                  -},onContextMenu:function(event){if(!this.getContextMenuItems){return
                                  -}cancelEvent(event,true);
                                  -var target=event.target||event.srcElement;
                                  -var menu=this.getContextMenuItems(this.selection,target);
                                  -if(!menu){return
                                  -}var contextMenu=new Menu({id:"fbPanelContextMenu",items:menu});
                                  -contextMenu.show(event.clientX,event.clientY);
                                  -return true
                                  -}};
                                  -Firebug.MeasureBox={startMeasuring:function(target){if(!this.measureBox){this.measureBox=target.ownerDocument.createElement("span");
                                  -this.measureBox.className="measureBox"
                                  -}copyTextStyles(target,this.measureBox);
                                  -target.ownerDocument.body.appendChild(this.measureBox)
                                  -},getMeasuringElement:function(){return this.measureBox
                                  -},measureText:function(value){this.measureBox.innerHTML=value?escapeForSourceLine(value):"m";
                                  -return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1}
                                  -},measureInputText:function(value){value=value?escapeForTextNode(value):"m";
                                  -if(!Firebug.showTextNodesWithWhitespace){value=value.replace(/\t/g,"mmmmmm").replace(/\ /g,"m")
                                  -}this.measureBox.innerHTML=value;
                                  -return{width:this.measureBox.offsetWidth,height:this.measureBox.offsetHeight-1}
                                  -},getBox:function(target){var style=this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox,"");
                                  -var box=getBoxFromStyles(style,this.measureBox);
                                  -return box
                                  -},stopMeasuring:function(){this.measureBox.parentNode.removeChild(this.measureBox)
                                  -}};
                                  -if(FBL.domplate){Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false
                                  -},inspectObject:function(object,context){Firebug.chrome.select(object)
                                  -},browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object
                                  -},getTitle:function(object){var label=safeToString(object);
                                  -var re=/\[object (.*?)\]/;
                                  -var m=re.exec(label);
                                  -if(m){return m[1]
                                  -}else{if(isIE&&(label=="[object]"||typeof object=="object"&&typeof label=="undefined")){return"Object"
                                  -}else{return label
                                  -}}},getTooltip:function(object){return null
                                  -},getContextMenuItems:function(object,target,context){return[]
                                  -},STR:function(name){return $STR(name)
                                  -},cropString:function(text){return cropString(text)
                                  -},cropMultipleLines:function(text,limit){return cropMultipleLines(text,limit)
                                  -},toLowerCase:function(text){return text?text.toLowerCase():text
                                  -},plural:function(n){return n==1?"":"s"
                                  -}})
                                  -}}});
                                  -FBL.ns(function(){with(FBL){FBL.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -FBL.PanelBar={panelMap:null,selectedPanel:null,parentPanelName:null,create:function(ownerPanel){this.panelMap={};
                                  -this.ownerPanel=ownerPanel;
                                  -if(ownerPanel){ownerPanel.sidePanelBarNode=createElement("span");
                                  -ownerPanel.sidePanelBarNode.style.display="none";
                                  -ownerPanel.sidePanelBarContainer.appendChild(ownerPanel.sidePanelBarNode)
                                  -}var panels=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panels[i];
                                  -i++){if(!ownerPanel&&!p.prototype.parentPanel||ownerPanel&&p.prototype.parentPanel&&ownerPanel.name==p.prototype.parentPanel){this.addPanel(p.prototype.name)
                                  -}}},destroy:function(){PanelBar.shutdown.call(this);
                                  -for(var name in this.panelMap){this.removePanel(name);
                                  -var panel=this.panelMap[name];
                                  -panel.destroy();
                                  -this.panelMap[name]=null;
                                  -delete this.panelMap[name]
                                  -}this.panelMap=null;
                                  -this.ownerPanel=null
                                  -},initialize:function(){if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="inline"
                                  -}for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){var selectedPanel=this.selectedPanel;
                                  -if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="none"
                                  -}this.selectedPanel=null
                                  -},addPanel:function(panelName,parentPanel){var PanelType=Firebug.panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){var panel=this.panelMap[panelName];
                                  -if(panel.hasOwnProperty(panelName)){panel.destroy()
                                  -}},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.shutdown();
                                  -selectedPanel.hide()
                                  -}if(!panel.parentPanel){Firebug.context.persistedState.selectedPanelName=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.show();
                                  -panel.initialize()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -}};
                                  -FBL.Button=function(options){options=options||{};
                                  -append(this,options);
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -if(this.element){this.container=this.element.parentNode
                                  -}else{this.shouldDestroy=true;
                                  -this.container=this.owner.getPanel().toolButtonsNode;
                                  -this.element=createElement("a",{className:this.baseClassName+" "+this.className+" fbHover",innerHTML:this.caption});
                                  -if(this.title){this.element.title=this.title
                                  -}this.container.appendChild(this.element)
                                  -}};
                                  -Button.prototype=extend(Controller,{type:"normal",caption:"caption",title:null,className:"",baseClassName:"fbButton",pressedClassName:"fbBtnPressed",element:null,container:null,owner:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -if(this.shouldDestroy){this.container.removeChild(this.element)
                                  -}this.element=null;
                                  -this.container=null;
                                  -this.owner=null
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var element=this.element;
                                  -this.addController([element,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([element,"mouseup",this.handleUnpress],[element,"mouseout",this.handleUnpress],[element,"click",this.handleClick])
                                  -}},shutdown:function(){Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.element,this.pressedClassName)
                                  -}else{if(display=="unpressed"){removeClass(this.element,this.pressedClassName)
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner,arguments)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner,arguments)
                                  -}}if(this.onClick){this.onClick.apply(this.owner,arguments)
                                  -}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -}});
                                  -FBL.IconButton=function(){Button.apply(this,arguments)
                                  -};
                                  -IconButton.prototype=extend(Button.prototype,{baseClassName:"fbIconButton",pressedClassName:"fbIconPressed"});
                                  -var menuItemProps={"class":"$item.className",type:"$item.type",value:"$item.value",_command:"$item.command"};
                                  -if(isIE6){menuItemProps.href="javascript:void(0)"
                                  -}if(FBL.domplate){var MenuPlate=domplate(Firebug.Rep,{tag:DIV({"class":"fbMenu fbShadow"},DIV({"class":"fbMenuContent fbShadowContent"},FOR("item","$object.items|memberIterator",TAG("$item.tag",{item:"$item"})))),itemTag:A(menuItemProps,"$item.label"),checkBoxTag:A(extend(menuItemProps,{checked:"$item.checked"}),"$item.label"),radioButtonTag:A(extend(menuItemProps,{selected:"$item.selected"}),"$item.label"),groupTag:A(extend(menuItemProps,{child:"$item.child"}),"$item.label"),shortcutTag:A(menuItemProps,"$item.label",SPAN({"class":"fbMenuShortcutKey"},"$item.key")),separatorTag:SPAN({"class":"fbMenuSeparator"}),memberIterator:function(items){var result=[];
                                  -for(var i=0,length=items.length;
                                  -i<length;
                                  -i++){var item=items[i];
                                  -if(typeof item=="string"&&item.indexOf("-")==0){result.push({tag:this.separatorTag});
                                  -continue
                                  -}item=extend(item,{});
                                  -item.type=item.type||"";
                                  -item.value=item.value||"";
                                  -var type=item.type;
                                  -item.tag=this.itemTag;
                                  -var className=item.className||"";
                                  -className+="fbMenuOption fbHover ";
                                  -if(type=="checkbox"){className+="fbMenuCheckBox ";
                                  -item.tag=this.checkBoxTag
                                  -}else{if(type=="radiobutton"){className+="fbMenuRadioButton ";
                                  -item.tag=this.radioButtonTag
                                  -}else{if(type=="group"){className+="fbMenuGroup ";
                                  -item.tag=this.groupTag
                                  -}else{if(type=="shortcut"){className+="fbMenuShortcut ";
                                  -item.tag=this.shortcutTag
                                  -}}}}if(item.checked){className+="fbMenuChecked "
                                  -}else{if(item.selected){className+="fbMenuRadioSelected "
                                  -}}if(item.disabled){className+="fbMenuDisabled "
                                  -}item.className=className;
                                  -item.label=$STR(item.label);
                                  -result.push(item)
                                  -}return result
                                  -}})
                                  -}FBL.Menu=function(options){if(!options.element){if(options.getItems){options.items=options.getItems()
                                  -}options.element=MenuPlate.tag.append({object:options},Firebug.chrome.document.body,MenuPlate)
                                  -}append(this,options);
                                  -if(typeof this.element=="string"){this.id=this.element;
                                  -this.element=$(this.id)
                                  -}else{if(this.id){this.element.id=this.id
                                  -}}this.element.firebugIgnore=true;
                                  -this.elementStyle=this.element.style;
                                  -this.isVisible=false;
                                  -this.handleMouseDown=bind(this.handleMouseDown,this);
                                  -this.handleMouseOver=bind(this.handleMouseOver,this);
                                  -this.handleMouseOut=bind(this.handleMouseOut,this);
                                  -this.handleWindowMouseDown=bind(this.handleWindowMouseDown,this)
                                  -};
                                  -var menuMap={};
                                  -Menu.prototype=extend(Controller,{destroy:function(){this.hide();
                                  -if(this.parentMenu){this.parentMenu.childMenu=null
                                  -}this.element.parentNode.removeChild(this.element);
                                  -this.element=null;
                                  -this.elementStyle=null;
                                  -this.parentMenu=null;
                                  -this.parentTarget=null
                                  -},initialize:function(){Controller.initialize.call(this);
                                  -this.addController([this.element,"mousedown",this.handleMouseDown],[this.element,"mouseover",this.handleMouseOver])
                                  -},shutdown:function(){Controller.shutdown.call(this)
                                  -},show:function(x,y){this.initialize();
                                  -if(this.isVisible){return
                                  -}x=x||0;
                                  -y=y||0;
                                  -if(this.parentMenu){var oldChildMenu=this.parentMenu.childMenu;
                                  -if(oldChildMenu&&oldChildMenu!=this){oldChildMenu.destroy()
                                  -}this.parentMenu.childMenu=this
                                  -}else{addEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown)
                                  -}this.elementStyle.display="block";
                                  -this.elementStyle.visibility="hidden";
                                  -var size=Firebug.chrome.getSize();
                                  -x=Math.min(x,size.width-this.element.clientWidth-10);
                                  -x=Math.max(x,0);
                                  -y=Math.min(y,size.height-this.element.clientHeight-10);
                                  -y=Math.max(y,0);
                                  -this.elementStyle.left=x+"px";
                                  -this.elementStyle.top=y+"px";
                                  -this.elementStyle.visibility="visible";
                                  -this.isVisible=true;
                                  -if(isFunction(this.onShow)){this.onShow.apply(this,arguments)
                                  -}},hide:function(){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -if(!this.isVisible){return
                                  -}this.elementStyle.display="none";
                                  -if(this.childMenu){this.childMenu.destroy();
                                  -this.childMenu=null
                                  -}if(this.parentTarget){removeClass(this.parentTarget,"fbMenuGroupSelected")
                                  -}this.isVisible=false;
                                  -this.shutdown();
                                  -if(isFunction(this.onHide)){this.onHide.apply(this,arguments)
                                  -}},showChildMenu:function(target){var id=target.getAttribute("child");
                                  -var parent=this;
                                  -var target=target;
                                  -this.showChildTimeout=Firebug.chrome.window.setTimeout(function(){var box=Firebug.chrome.getElementBox(target);
                                  -var childMenuObject=menuMap.hasOwnProperty(id)?menuMap[id]:{element:$(id)};
                                  -var childMenu=new Menu(extend(childMenuObject,{parentMenu:parent,parentTarget:target}));
                                  -var offsetLeft=isIE6?-1:-6;
                                  -childMenu.show(box.left+box.width+offsetLeft,box.top-6);
                                  -setClass(target,"fbMenuGroupSelected")
                                  -},350)
                                  -},clearHideTimeout:function(){if(this.hideTimeout){Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -delete this.hideTimeout
                                  -}},clearShowChildTimeout:function(){if(this.showChildTimeout){Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -this.showChildTimeout=null
                                  -}},handleMouseDown:function(event){cancelEvent(event,true);
                                  -var topParent=this;
                                  -while(topParent.parentMenu){topParent=topParent.parentMenu
                                  -}var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target||hasClass(target,"fbMenuGroup")){return false
                                  -}if(target&&!hasClass(target,"fbMenuDisabled")){var type=target.getAttribute("type");
                                  -if(type=="checkbox"){var checked=target.getAttribute("checked");
                                  -var value=target.getAttribute("value");
                                  -var wasChecked=hasClass(target,"fbMenuChecked");
                                  -if(wasChecked){removeClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","")
                                  -}else{setClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","true")
                                  -}if(isFunction(this.onCheck)){this.onCheck.call(this,target,value,!wasChecked)
                                  -}}if(type=="radiobutton"){var selectedRadios=getElementsByClass(target.parentNode,"fbMenuRadioSelected");
                                  -var group=target.getAttribute("group");
                                  -for(var i=0,length=selectedRadios.length;
                                  -i<length;
                                  -i++){radio=selectedRadios[i];
                                  -if(radio.getAttribute("group")==group){removeClass(radio,"fbMenuRadioSelected");
                                  -radio.setAttribute("selected","")
                                  -}}setClass(target,"fbMenuRadioSelected");
                                  -target.setAttribute("selected","true")
                                  -}var handler=null;
                                  -var cmd=target.command;
                                  -if(isFunction(cmd)){handler=cmd
                                  -}else{if(typeof cmd=="string"){handler=this[cmd]
                                  -}}var closeMenu=true;
                                  -if(handler){closeMenu=handler.call(this,target)!==false
                                  -}if(closeMenu){topParent.hide()
                                  -}}return false
                                  -},handleWindowMouseDown:function(event){var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenu");
                                  -if(!target){removeEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown);
                                  -this.hide()
                                  -}},handleMouseOver:function(event){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target){return
                                  -}var childMenu=this.childMenu;
                                  -if(childMenu){removeClass(childMenu.parentTarget,"fbMenuGroupSelected");
                                  -if(childMenu.parentTarget!=target&&childMenu.isVisible){childMenu.clearHideTimeout();
                                  -childMenu.hideTimeout=Firebug.chrome.window.setTimeout(function(){childMenu.destroy()
                                  -},300)
                                  -}}if(hasClass(target,"fbMenuGroup")){this.showChildMenu(target)
                                  -}}});
                                  -append(Menu,{register:function(object){menuMap[object.id]=object
                                  -},check:function(element){setClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","true")
                                  -},uncheck:function(element){removeClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","")
                                  -},disable:function(element){setClass(element,"fbMenuDisabled")
                                  -},enable:function(element){removeClass(element,"fbMenuDisabled")
                                  -}});
                                  -function StatusBar(){}StatusBar.prototype=extend(Controller,{})
                                  -}});
                                  -FBL.ns(function(){with(FBL){var refreshDelay=300;
                                  -var shouldFixElementFromPoint=isOpera||isSafari&&browserVersion<"532";
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -this.browser=Env.browser;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={browser:null,loaded:true,setTimeout:function(fn,delay){var win=this.window;
                                  -if(win.setTimeout==this.setTimeout){throw new Error("setTimeout recursion")
                                  -}var timeout=win.setTimeout.apply?win.setTimeout.apply(win,arguments):win.setTimeout(fn,delay);
                                  -if(!this.timeouts){this.timeouts={}
                                  -}this.timeouts[timeout]=1;
                                  -return timeout
                                  -},clearTimeout:function(timeout){clearTimeout(timeout);
                                  -if(this.timeouts){delete this.timeouts[timeout]
                                  -}},setInterval:function(fn,delay){var win=this.window;
                                  -var timeout=win.setInterval.apply?win.setInterval.apply(win,arguments):win.setInterval(fn,delay);
                                  -if(!this.intervals){this.intervals={}
                                  -}this.intervals[timeout]=1;
                                  -return timeout
                                  -},clearInterval:function(timeout){clearInterval(timeout);
                                  -if(this.intervals){delete this.intervals[timeout]
                                  -}},invalidatePanels:function(){if(!this.invalidPanels){this.invalidPanels={}
                                  -}for(var i=0;
                                  -i<arguments.length;
                                  -++i){var panelName=arguments[i];
                                  -if(!Firebug.chrome||!Firebug.chrome.selectedPanel){return
                                  -}var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null;
                                  -if(panel&&!panel.noRefresh){this.invalidPanels[panelName]=1
                                  -}}if(this.refreshTimeout){this.clearTimeout(this.refreshTimeout);
                                  -delete this.refreshTimeout
                                  -}this.refreshTimeout=this.setTimeout(bindFixed(function(){var invalids=[];
                                  -for(var panelName in this.invalidPanels){var panel=Firebug.chrome.selectedPanel.sidePanelBar?Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName,true):null;
                                  -if(panel){if(panel.visible&&!panel.editing){panel.refresh()
                                  -}else{panel.needsRefresh=true
                                  -}if(panel.editing){invalids.push(panelName)
                                  -}}}delete this.invalidPanels;
                                  -delete this.refreshTimeout;
                                  -if(invalids.length){this.invalidatePanels.apply(this,invalids)
                                  -}},this),refreshDelay)
                                  -},evaluate:function(expr,context,api,errorHandler){context=context||"window";
                                  -var isObjectLiteral=trim(expr).indexOf("{")==0,cmd,result;
                                  -if(context=="window"){if(isObjectLiteral){cmd=api?"with("+api+"){ ("+expr+") }":"("+expr+")"
                                  -}else{cmd=api?"with("+api+"){ "+expr+" }":expr
                                  -}}else{cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)"
                                  -}result=this.eval(cmd);
                                  -if(result&&result[evalError]){var msg=result.name?(result.name+": "):"";
                                  -msg+=result.message||result;
                                  -if(errorHandler){result=errorHandler(msg)
                                  -}else{result=msg
                                  -}}return result
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)&&(el.scrollWidth>width||el.scrollHeight>height)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(shouldFixElementFromPoint){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getStyle(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}else{if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}else{if(unit=="ex"){return this.exToPixels(el,value)
                                  -}}}}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getMeasurementBox:function(el,name){var result=[];
                                  -var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"];
                                  -if(isIE){var propName,cssValue;
                                  -var autoMargin=null;
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){propName=name+sufix;
                                  -cssValue=el.currentStyle[propName]||el.style[propName];
                                  -if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el)
                                  -}result[i]=autoMargin[sufix.toLowerCase()]
                                  -}else{result[i]=this.getMeasurementInPixels(el,propName)
                                  -}}}else{for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
                                  -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getCSSAutoMarginBox:function(el){if(isIE&&" meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ")!=-1){return{top:0,left:0,bottom:0,right:0}
                                  -}if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0}
                                  -}var offsetTop=0;
                                  -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -offsetTop=scrollSize.height
                                  -}var box=this.document.createElement("div");
                                  -box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -var clone=el.cloneNode(false);
                                  -var text=this.document.createTextNode("&nbsp;");
                                  -clone.appendChild(text);
                                  -box.appendChild(clone);
                                  -this.document.body.appendChild(box);
                                  -var marginTop=clone.offsetTop-box.offsetTop-1;
                                  -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
                                  -var marginLeft=clone.offsetLeft-box.offsetLeft-1;
                                  -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
                                  -this.document.body.removeChild(box);
                                  -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getStyle:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var WindowDefaultOptions={type:"frame",id:"FirebugUI"},commandLine,fbBtnInspect,fbMainToolbarBox,fbHSplitter,fbVSplitter,fbCommandLine,fbLargeCommandLine,fbLargeCommandButtons,topHeight,topPartialHeight,chromeRedrawSkipRate=isIE?75:isOpera?80:75,lastSelectedPanelName,focusCommandLineState=0,lastFocusedPanelName,lastHSplitterMouseMove=0,onHSplitterMouseMoveBuffer=null,onHSplitterMouseMoveTimer=null,lastVSplitterMouseMove=0;
                                  -var panelBar1,panelBar2,panelContainer,sidePanelContainer,panelDocument,sidePanelDocument;
                                  -Firebug.framesLoaded=0;
                                  -var numberOfFramesToLoad=3;
                                  -FBL.defaultPersistedState={isOpen:false,height:300,sidePanelWidth:350,selectedPanelName:"Console",selectedHTMLElementId:null,htmlSelectionStack:[]};
                                  -FBL.FirebugChrome={chromeMap:{},htmlSelectionStack:[],create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window")
                                  -}createChromeWindow()
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window")
                                  -}if(Env.chrome.type=="frame"||Env.chrome.type=="div"){ChromeMini.create(Env.chrome)
                                  -}var chrome=Firebug.chrome=new Chrome(Env.chrome);
                                  -FirebugChrome.chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onGlobalKeyDown);
                                  -if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}chrome.initialize()
                                  -}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name];
                                  -if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop
                                  -}}}};
                                  -var createChromeWindow=function(options){Firebug.framesLoaded=0;
                                  -options=extend(WindowDefaultOptions,options||{});
                                  -var browserWin=Env.browser.window;
                                  -var browserContext=new Context(browserWin);
                                  -var prefs=Store.get("FirebugLite");
                                  -var persistedState=prefs&&prefs.persistedState||defaultPersistedState;
                                  -var chrome={},context=options.context||Env.browser,type=chrome.type=Env.Options.enablePersistent?"popup":options.type,isChromeFrame=type=="frame",useLocalSkin=Env.useLocalSkin,url=useLocalSkin?Env.Location.skin:"about:blank",body=context.document.getElementsByTagName("body")[0],formatNode=function(node){if(!Env.isDebugMode){node.firebugIgnore=true
                                  -}var browserWinSize=browserContext.getWindowSize();
                                  -var height=persistedState.height||300;
                                  -height=Math.min(browserWinSize.height,height);
                                  -height=Math.max(200,height);
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=height+"px"
                                  -},createChromeDiv=function(){var node=chrome.node=createGlobalElement("div"),style=createGlobalElement("style"),css=FirebugChrome.Skin.CSS,rules=".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}"+css+".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -style.type="text/css";
                                  -if(style.styleSheet){style.styleSheet.cssText=rules
                                  -}else{style.appendChild(context.document.createTextNode(rules))
                                  -}document.getElementsByTagName("head")[0].appendChild(style);
                                  -node.className="fbBody";
                                  -node.style.overflow="hidden";
                                  -node.innerHTML=getChromeDivTemplate();
                                  -if(isIE){setTimeout(function(){node.firstChild.style.height="1px";
                                  -node.firstChild.style.position="static"
                                  -},0)
                                  -}formatNode(node);
                                  -body.appendChild(node);
                                  -chrome.window=window;
                                  -chrome.document=document;
                                  -onChromeLoad(chrome)
                                  -};
                                  -try{if(type=="div"){createChromeDiv();
                                  -return
                                  -}else{if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
                                  -node.setAttribute("src",url);
                                  -node.setAttribute("frameBorder","0");
                                  -formatNode(node);
                                  -body.appendChild(node);
                                  -node.id=options.id
                                  -}else{var height=persistedState.popupHeight||300;
                                  -var browserWinSize=browserContext.getWindowSize();
                                  -var browserWinLeft=typeof browserWin.screenX=="number"?browserWin.screenX:browserWin.screenLeft;
                                  -var popupLeft=typeof persistedState.popupLeft=="number"?persistedState.popupLeft:browserWinLeft;
                                  -var browserWinTop=typeof browserWin.screenY=="number"?browserWin.screenY:browserWin.screenTop;
                                  -var popupTop=typeof persistedState.popupTop=="number"?persistedState.popupTop:Math.max(0,Math.min(browserWinTop+browserWinSize.height-height,screen.availHeight-height-61));
                                  -var popupWidth=typeof persistedState.popupWidth=="number"?persistedState.popupWidth:Math.max(0,Math.min(browserWinSize.width,screen.availWidth-10));
                                  -var popupHeight=typeof persistedState.popupHeight=="number"?persistedState.popupHeight:300;
                                  -var options=["true,top=",popupTop,",left=",popupLeft,",height=",popupHeight,",width=",popupWidth,",resizable"].join(""),node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame),doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win,waitDelay=useLocalSkin?isChromeFrame?200:300:100,waitForWindow=function(){if(Firebug.framesLoaded==numberOfFramesToLoad&&isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||Firebug.framesLoaded==numberOfFramesToLoad&&!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -setTimeout(function(){onChromeLoad(chrome)
                                  -},useLocalSkin?200:0)
                                  -}else{setTimeout(waitForWindow,waitDelay)
                                  -}};
                                  -waitForWindow()
                                  -}catch(e){var msg=e.message||e;
                                  -if(/access/i.test(msg)){if(isChromeFrame){body.removeChild(node)
                                  -}else{if(type=="popup"){node.close()
                                  -}}createChromeDiv()
                                  -}else{alert("Firebug Error: Firebug GUI could not be created.")
                                  -}}};
                                  -var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded")
                                  -}if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome;
                                  -chrome.window.Firebug=chrome.window.Firebug||{};
                                  -chrome.window.Firebug.SharedEnv=Env;
                                  -if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Env.Location.app+"#remote,persist";
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"||chrome.type=="div"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},0)
                                  -}else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame;
                                  -var newChrome=new Chrome(chrome);
                                  -dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]);
                                  -newChrome.reattach(oldChrome,newChrome)
                                  -}}}};
                                  -var getChromeDivTemplate=function(){return FirebugChrome.Skin.HTML
                                  -};
                                  -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.Skin;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>html,body{margin:0;padding:0;overflow:hidden;}";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]="</style>";
                                  -r[++i]='</head><body class="fbBody'+(isPopup?" FirebugPopup":"")+'">';
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,Base);
                                  -append(this,chrome);
                                  -append(this,new Context(chrome.window));
                                  -FirebugChrome.chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -Env.chrome=chrome.window;
                                  -this.commandLineVisible=false;
                                  -this.sidePanelVisible=false;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase={};
                                  -append(ChromeBase,Controller);
                                  -append(ChromeBase,PanelBar);
                                  -append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,getPanelContainer:function(){return panelContainer
                                  -},getSidePanelContainer:function(){return sidePanelContainer
                                  -},getPanelDocument:function(panelType){if(panelType.prototype.parentPanel){return sidePanelDocument
                                  -}else{return panelDocument
                                  -}},getSidePanelDocument:function(){return sidePanelDocument
                                  -},create:function(){panelBar1=$("fbPanelBar1-content");
                                  -panelBar2=$("fbPanelBar2-content");
                                  -panelContainer=panelBar1.nodeName.toLowerCase()=="iframe"?panelBar1.contentWindow.document.body:panelBar1;
                                  -sidePanelContainer=panelBar2.nodeName.toLowerCase()=="iframe"?panelBar2.contentWindow.document.body:panelBar2;
                                  -panelDocument=panelBar1.nodeName.toLowerCase()=="iframe"?panelBar1.contentWindow.document:Firebug.chrome.document;
                                  -sidePanelDocument=panelBar2.nodeName.toLowerCase()=="iframe"?panelBar2.contentWindow.document:Firebug.chrome.document;
                                  -PanelBar.create.call(this);
                                  -if(Firebug.Inspector){this.inspectButton=new IconButton({type:"toggle",element:$("fbInspectButton"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -}},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy()
                                  -}PanelBar.destroy.call(this);
                                  -this.shutdown()
                                  -},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore()
                                  -},toggleChrome:function(){Firebug.chrome.toggle()
                                  -},openPopup:function(){Firebug.chrome.toggle(true,true)
                                  -},toggleInspect:function(){Firebug.Inspector.toggleInspect()
                                  -},focusCommandLine:function(){Firebug.chrome.focusCommandLine()
                                  -},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html")
                                  -},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug")
                                  -},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list")
                                  -},visit:function(url){window.open(url)
                                  -}});
                                  -var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies;
                                  -return[{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},{label:"Disable XHR Listener",type:"checkbox",value:"disableXHRListener",checked:Firebug.disableXHRListener,disabled:cookiesDisabled},{label:"Disable Resource Fetching",type:"checkbox",value:"disableResourceFetching",checked:Firebug.disableResourceFetching,disabled:cookiesDisabled},{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Reset All Firebug Options",command:"restorePrefs",disabled:cookiesDisabled}]
                                  -},onCheck:function(target,value,checked){Firebug.setPref(value,checked)
                                  -},restorePrefs:function(target){Firebug.erasePrefs();
                                  -if(target){this.updateMenu(target)
                                  -}},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption");
                                  -var firstOption=options[0];
                                  -var enabled=Firebug.saveCookies;
                                  -if(enabled){Menu.check(firstOption)
                                  -}else{Menu.uncheck(firstOption)
                                  -}if(enabled){Menu.check(options[0])
                                  -}else{Menu.uncheck(options[0])
                                  -}for(var i=1,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var value=option.getAttribute("value");
                                  -var pref=Firebug[value];
                                  -if(pref){Menu.check(option)
                                  -}else{Menu.uncheck(option)
                                  -}if(enabled){Menu.enable(option)
                                  -}else{Menu.disable(option)
                                  -}}}};
                                  -Menu.register(firebugOptionsMenu);
                                  -var menu=firebugMenu;
                                  -var testMenuClick=function(event){cancelEvent(event,true);
                                  -var target=event.target||event.srcElement;
                                  -if(menu.isVisible){menu.hide()
                                  -}else{var offsetLeft=isIE6?1:-4,chrome=Firebug.chrome,box=chrome.getElementBox(target),offset=chrome.type=="div"?chrome.getElementPosition(chrome.node):{top:0,left:0};
                                  -menu.show(box.left+offsetLeft-offset.left,box.top+box.height-5-offset.top)
                                  -}return false
                                  -};
                                  -var iconButton=new IconButton({type:"toggle",element:$("fbFirebugButton"),onClick:testMenuClick});
                                  -iconButton.initialize()
                                  -},initialize:function(){if(Firebug.CommandLine){Firebug.CommandLine.activate()
                                  -}if(Env.bookmarkletOutdated){Firebug.Console.logFormatted(["A new bookmarklet version is available. Please visit http://getfirebug.com/firebuglite#Install and update it."],Firebug.context,"warn")
                                  -}if(Firebug.Console){Firebug.Console.flush()
                                  -}if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application")
                                  -}Controller.initialize.call(this);
                                  -PanelBar.initialize.call(this);
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbMainToolbarBox=$("fbMainToolbarBox");
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbCommandLine=$("fbCommandLine");
                                  -fbLargeCommandLine=$("fbLargeCommandLine");
                                  -fbLargeCommandButtons=$("fbLargeCommandButtons");
                                  -topHeight=0;
                                  -topPartialHeight=0;
                                  -if(isIE6&&Firebug.Selector){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}if(Firebug.Inspector){this.inspectButton.initialize()
                                  -}var self=this;
                                  -setTimeout(function(){self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -if(Firebug.context.persistedState.selectedPanelName=="Console"&&Firebug.CommandLine){Firebug.chrome.focusCommandLine()
                                  -}},0);
                                  -var onPanelMouseDown=function onPanelMouseDown(event){var target=event.target||event.srcElement;
                                  -if(FBL.isLeftClick(event)){var editable=FBL.getAncestorByClass(target,"editable");
                                  -if(editable){Firebug.Editor.startEditing(editable);
                                  -FBL.cancelEvent(event)
                                  -}else{if(!hasClass(target,"textEditorInner")){Firebug.Editor.stopEditing()
                                  -}}}else{if(FBL.isMiddleClick(event)&&Firebug.getRepNode(target)){FBL.cancelEvent(event)
                                  -}}};
                                  -Firebug.getElementPanel=function(element){var panelNode=getAncestorByClass(element,"fbPanel");
                                  -var id=panelNode.id.substr(2);
                                  -var panel=Firebug.chrome.panelMap[id];
                                  -if(!panel){if(Firebug.chrome.selectedPanel.sidePanelBar){panel=Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id]
                                  -}}return panel
                                  -};
                                  -var onKeyCodeListenersMap=[];
                                  -var onKeyCodeListen=function(event){for(var keyCode in onKeyCodeListenersMap){var listeners=onKeyCodeListenersMap[keyCode];
                                  -for(var i=0,listener;
                                  -listener=listeners[i];
                                  -i++){var filter=listener.filter||FBL.noKeyModifiers;
                                  -if(event.keyCode==keyCode&&(!filter||filter(event))){listener.listener();
                                  -FBL.cancelEvent(event,true);
                                  -return false
                                  -}}}};
                                  -addEvent(Firebug.chrome.document,"keydown",onKeyCodeListen);
                                  -Firebug.chrome.keyCodeListen=function(key,filter,listener,capture){var keyCode=KeyEvent["DOM_VK_"+key];
                                  -if(!onKeyCodeListenersMap[keyCode]){onKeyCodeListenersMap[keyCode]=[]
                                  -}onKeyCodeListenersMap[keyCode].push({filter:filter,listener:listener});
                                  -return keyCode
                                  -};
                                  -Firebug.chrome.keyIgnore=function(keyCode){onKeyCodeListenersMap[keyCode]=null;
                                  -delete onKeyCodeListenersMap[keyCode]
                                  -};
                                  -Firebug.chrome.keyCodeListen=function(key,filter,listener,capture){if(!filter){filter=FBL.noKeyModifiers
                                  -}var keyCode=KeyEvent["DOM_VK_"+key];
                                  -var fn=function fn(event){if(event.keyCode==keyCode&&(!filter||filter(event))){listener();
                                  -FBL.cancelEvent(event,true);
                                  -return false
                                  -}};
                                  -addEvent(this.getSidePanelDocument(),"keydown",fn);
                                  -return[fn,capture]
                                  -};
                                  -Firebug.chrome.keyIgnore=function(listener){removeEvent(this.getSidePanelDocument(),"keydown",listener[0])
                                  -};
                                  -this.addController([this.getPanelContainer(),"mousedown",onPanelMouseDown],[this.getSidePanelContainer(),"mousedown",onPanelMouseDown]);
                                  -if(FBL.domplate){this.testMenu()
                                  -}},shutdown:function(){if(Firebug.CommandLine){Firebug.CommandLine.deactivate()
                                  -}if(Firebug.Inspector){this.inspectButton.shutdown()
                                  -}Controller.shutdown.call(this);
                                  -PanelBar.shutdown.call(this);
                                  -fbBtnInspect=null;
                                  -fbMainToolbarBox=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbCommandLine=null;
                                  -fbLargeCommandLine=null;
                                  -fbLargeCommandButtons=null;
                                  -topHeight=null;
                                  -topPartialHeight=null
                                  -},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=FirebugChrome.chromeMap.frame;
                                  -frame.reattach();
                                  -FirebugChrome.chromeMap.popup=null;
                                  -frame.open();
                                  -return
                                  -}if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!Firebug.context.persistedState.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!FirebugChrome.chromeMap.popup){this.close();
                                  -createChromeWindow({type:"popup"})
                                  -}},reattach:function(oldChrome,newChrome){Firebug.browser.window.Firebug=Firebug;
                                  -var newPanelMap=newChrome.panelMap;
                                  -var oldPanelMap=oldChrome.panelMap;
                                  -var panel;
                                  -for(var name in newPanelMap){panel=newPanelMap[name];
                                  -if(panel.options.innerHTMLSync){panel.panelNode.innerHTML=oldPanelMap[name].panelNode.innerHTML
                                  -}}Firebug.chrome=newChrome;
                                  -if(newChrome.type=="popup"){newChrome.initialize()
                                  -}else{Firebug.context.persistedState.selectedPanelName=oldChrome.selectedPanel.name
                                  -}dispatch(newPanelMap,"reattach",[oldChrome,newChrome])
                                  -},getSize:function(){return this.type=="div"?{height:this.node.offsetHeight,width:this.node.offsetWidth}:this.getWindowSize()
                                  -},resize:function(){var self=this;
                                  -setTimeout(function(){if(noFixedPosition&&(self.type=="frame"||self.type=="div")){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(panel.hasSidePanel)
                                  -},showLargeCommandLine:function(hideToggleIcon){var chrome=Firebug.chrome;
                                  -if(!chrome.largeCommandLineVisible){chrome.largeCommandLineVisible=true;
                                  -if(chrome.selectedPanel.options.hasCommandLine){if(Firebug.CommandLine){Firebug.CommandLine.blur()
                                  -}changeCommandLineVisibility(false)
                                  -}changeSidePanelVisibility(true);
                                  -fbLargeCommandLine.style.display="block";
                                  -fbLargeCommandButtons.style.display="block";
                                  -fbPanel2Style.display="none";
                                  -fbPanelBar2BoxStyle.display="none";
                                  -chrome.draw();
                                  -fbLargeCommandLine.focus();
                                  -if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(true)
                                  -}}},hideLargeCommandLine:function(){if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.largeCommandLineVisible=false;
                                  -if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(false)
                                  -}fbLargeCommandLine.blur();
                                  -fbPanel2Style.display="block";
                                  -fbPanelBar2BoxStyle.display="block";
                                  -fbLargeCommandLine.style.display="none";
                                  -fbLargeCommandButtons.style.display="none";
                                  -changeSidePanelVisibility(false);
                                  -if(Firebug.chrome.selectedPanel.options.hasCommandLine){changeCommandLineVisibility(true)
                                  -}Firebug.chrome.draw()
                                  -}},focusCommandLine:function(){var selectedPanelName=this.selectedPanel.name,panelToSelect;
                                  -if(focusCommandLineState==0||selectedPanelName!="Console"){focusCommandLineState=0;
                                  -lastFocusedPanelName=selectedPanelName;
                                  -panelToSelect="Console"
                                  -}if(focusCommandLineState==1){panelToSelect=lastFocusedPanelName
                                  -}this.selectPanel(panelToSelect);
                                  -try{if(Firebug.CommandLine){if(panelToSelect=="Console"){Firebug.CommandLine.focus()
                                  -}else{Firebug.CommandLine.blur()
                                  -}}}catch(e){}focusCommandLineState=++focusCommandLineState%2
                                  -}});
                                  -var ChromeFrameBase=extend(ChromeBase,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Env.Options.startInNewWindow){this.close();
                                  -this.toggle(true,true);
                                  -return
                                  -}if(Env.Options.startOpened){this.open()
                                  -}else{this.close()
                                  -}},destroy:function(){var size=Firebug.chrome.getWindowSize();
                                  -Firebug.context.persistedState.height=size.height;
                                  -if(Firebug.saveCookies){Firebug.savePrefs()
                                  -}removeGlobalEvent("keydown",onGlobalKeyDown);
                                  -ChromeBase.destroy.call(this);
                                  -this.document=null;
                                  -delete this.document;
                                  -this.window=null;
                                  -delete this.window;
                                  -this.node.parentNode.removeChild(this.node);
                                  -this.node=null;
                                  -delete this.node
                                  -},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[$("fbWindow_btClose"),"click",this.close],[$("fbWindow_btDetach"),"click",this.detach],[$("fbWindow_btDeactivate"),"click",this.deactivate]);
                                  -if(!Env.Options.enablePersistent){this.addController([Firebug.browser.window,"unload",Firebug.shutdown])
                                  -}if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},reattach:function(){var frame=FirebugChrome.chromeMap.frame;
                                  -ChromeBase.reattach(FirebugChrome.chromeMap.popup,this)
                                  -},open:function(){if(!Firebug.context.persistedState.isOpen){Firebug.context.persistedState.isOpen=true;
                                  -if(Env.isChromeExtension){localStorage.setItem("Firebug","1,1")
                                  -}var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(Firebug.showIconWhenHidden){if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}}else{node.style.display="block"
                                  -}var main=$("fbContentBox");
                                  -main.style.display="";
                                  -var self=this;
                                  -node.style.visibility="visible";
                                  -setTimeout(function(){self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}},10)
                                  -}},close:function(){if(Firebug.context.persistedState.isOpen){if(this.isInitialized){this.shutdown()
                                  -}Firebug.context.persistedState.isOpen=false;
                                  -if(Env.isChromeExtension){localStorage.setItem("Firebug","1,0")
                                  -}var node=this.node;
                                  -if(Firebug.showIconWhenHidden){node.style.visibility="hidden";
                                  -var main=$("fbContentBox",FirebugChrome.chromeMap.frame.document);
                                  -main.style.display="none";
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}else{node.style.display="none"
                                  -}}},deactivate:function(){if(Env.isChromeExtension){localStorage.removeItem("Firebug");
                                  -Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -Firebug.chrome.close()
                                  -}else{Firebug.shutdown()
                                  -}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if((this.type=="frame"||this.type=="div")&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}}});
                                  -var ChromeMini=extend(Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon",doc);
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors",doc);
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","true");
                                  -this.document.body.style.backgroundColor="transparent"
                                  -}else{node.style.background="transparent"
                                  -}if(noFixedPosition){this.fixIEPosition()
                                  -}this.addController([$("fbMiniIcon",doc),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=Firebug.context.persistedState.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","false");
                                  -this.document.body.style.backgroundColor="#fff"
                                  -}else{node.style.background="#fff"
                                  -}if(noFixedPosition){this.fixIEPosition()
                                  -}var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="none";
                                  -Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeBase,{initialize:function(){setClass(this.document.body,"FirebugPopup");
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy]);
                                  -if(Env.Options.enablePersistent){this.persist=bind(this.persist,this);
                                  -addEvent(Firebug.browser.window,"unload",this.persist)
                                  -}else{this.addController([Firebug.browser.window,"unload",this.close])
                                  -}},destroy:function(){var chromeWin=Firebug.chrome.window;
                                  -var left=chromeWin.screenX||chromeWin.screenLeft;
                                  -var top=chromeWin.screenY||chromeWin.screenTop;
                                  -var size=Firebug.chrome.getWindowSize();
                                  -Firebug.context.persistedState.popupTop=top;
                                  -Firebug.context.persistedState.popupLeft=left;
                                  -Firebug.context.persistedState.popupWidth=size.width;
                                  -Firebug.context.persistedState.popupHeight=size.height;
                                  -if(Firebug.saveCookies){Firebug.savePrefs()
                                  -}var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){dispatch(frame.panelMap,"detach",[this,frame]);
                                  -frame.reattach(this,frame)
                                  -}if(Env.Options.enablePersistent){removeEvent(Firebug.browser.window,"unload",this.persist)
                                  -}ChromeBase.destroy.apply(this);
                                  -FirebugChrome.chromeMap.popup=null;
                                  -this.node.close()
                                  -},persist:function(){persistTimeStart=new Date().getTime();
                                  -removeEvent(Firebug.browser.window,"unload",this.persist);
                                  -Firebug.Inspector.destroy();
                                  -Firebug.browser.window.FirebugOldBrowser=true;
                                  -var persistTimeStart=new Date().getTime();
                                  -var waitMainWindow=function(){var doc,head;
                                  -try{if(window.opener&&!window.opener.FirebugOldBrowser&&(doc=window.opener.document)){try{if(Env.isDebugMode){window.FBL=FBL
                                  -}window.Firebug=Firebug;
                                  -window.opener.Firebug=Firebug;
                                  -Env.browser=window.opener;
                                  -Firebug.browser=Firebug.context=new Context(Env.browser);
                                  -Firebug.loadPrefs();
                                  -registerConsole();
                                  -var persistDelay=new Date().getTime()-persistTimeStart;
                                  -var chrome=Firebug.chrome;
                                  -addEvent(Firebug.browser.window,"unload",chrome.persist);
                                  -FBL.cacheDocument();
                                  -Firebug.Inspector.create();
                                  -Firebug.Console.logFormatted(["Firebug could not capture console calls during "+persistDelay+"ms"],Firebug.context,"info");
                                  -setTimeout(function(){var htmlPanel=chrome.getPanel("HTML");
                                  -htmlPanel.createUI()
                                  -},50)
                                  -}catch(pE){alert("persist error: "+(pE.message||pE))
                                  -}}else{window.setTimeout(waitMainWindow,0)
                                  -}}catch(E){window.close()
                                  -}};
                                  -waitMainWindow()
                                  -},close:function(){this.destroy()
                                  -}});
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){return;
                                  -var last=Firebug.chrome.commandLineVisible;
                                  -var visible=Firebug.chrome.commandLineVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.commandLineVisible;
                                  -if(visible!=last){if(visible){removeClass($("fbContentBox"),"hideCommandLine");
                                  -if(Firebug.CommandLine){Firebug.CommandLine.activate()
                                  -}}else{if(Firebug.CommandLine){Firebug.CommandLine.deactivate()
                                  -}setClass($("fbContentBox"),"hideCommandLine")
                                  -}Firebug.chrome.window.flexBox.invalidate()
                                  -}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=Firebug.chrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.sidePanelVisible;
                                  -if(Firebug.chrome.sidePanelVisible!=last){if(Firebug.chrome.sidePanelVisible){removeClass($("fbContentBox"),"hideSidePanelBar")
                                  -}else{setClass($("fbContentBox"),"hideSidePanelBar")
                                  -}Firebug.chrome.window.flexBox.invalidate()
                                  -}};
                                  -var onGlobalKeyDown=function onGlobalKeyDown(event){var keyCode=event.keyCode;
                                  -var shiftKey=event.shiftKey;
                                  -var ctrlKey=event.ctrlKey;
                                  -if(keyCode==123&&(!isFirefox&&!shiftKey||shiftKey&&isFirefox)){Firebug.chrome.toggle(false,ctrlKey);
                                  -cancelEvent(event,true);
                                  -if(Env.isChromeExtension){Firebug.GoogleChrome.dispatch("FB_enableIcon")
                                  -}}else{if(keyCode==67&&ctrlKey&&shiftKey){Firebug.Inspector.toggleInspect();
                                  -cancelEvent(event,true)
                                  -}else{if(keyCode==76&&ctrlKey&&shiftKey){Firebug.chrome.focusCommandLine();
                                  -cancelEvent(event,true)
                                  -}}}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){addEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.defaultView||event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugUI"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -Firebug.context.persistedState.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="";
                                  -Firebug.chrome.draw();
                                  -return false
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -Firebug.context.persistedState.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Lite={}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Lite.Cache={ID:"firebug-"+new Date().getTime()};
                                  -var cacheUID=0;
                                  -var createCache=function(){var map={};
                                  -var data={};
                                  -var CID=Firebug.Lite.Cache.ID;
                                  -var supportsDeleteExpando=!document.all;
                                  -var cacheFunction=function(element){return cacheAPI.set(element)
                                  -};
                                  -var cacheAPI={get:function(key){return map.hasOwnProperty(key)?map[key]:null
                                  -},set:function(element){var id=getValidatedKey(element);
                                  -if(!id){id=++cacheUID;
                                  -element[CID]=id
                                  -}if(!map.hasOwnProperty(id)){map[id]=element;
                                  -data[id]={}
                                  -}return id
                                  -},unset:function(element){var id=getValidatedKey(element);
                                  -if(!id){return
                                  -}if(supportsDeleteExpando){delete element[CID]
                                  -}else{if(element.removeAttribute){element.removeAttribute(CID)
                                  -}}delete map[id];
                                  -delete data[id]
                                  -},key:function(element){return getValidatedKey(element)
                                  -},has:function(element){var id=getValidatedKey(element);
                                  -return id&&map.hasOwnProperty(id)
                                  -},each:function(callback){for(var key in map){if(map.hasOwnProperty(key)){callback(key,map[key])
                                  -}}},data:function(element,name,value){if(value){if(!name){return null
                                  -}var id=cacheAPI.set(element);
                                  -return data[id][name]=value
                                  -}else{var id=cacheAPI.key(element);
                                  -return data.hasOwnProperty(id)&&data[id].hasOwnProperty(name)?data[id][name]:null
                                  -}},clear:function(){for(var id in map){var element=map[id];
                                  -cacheAPI.unset(element)
                                  -}}};
                                  -var getValidatedKey=function(element){var id=element[CID];
                                  -if(!supportsDeleteExpando&&id&&map.hasOwnProperty(id)&&map[id]!=element){element.removeAttribute(CID);
                                  -id=null
                                  -}return id
                                  -};
                                  -FBL.append(cacheFunction,cacheAPI);
                                  -return cacheFunction
                                  -};
                                  -Firebug.Lite.Cache.StyleSheet=createCache();
                                  -Firebug.Lite.Cache.Element=createCache();
                                  -Firebug.Lite.Cache.Event=createCache()
                                  -}});
                                  -FBL.ns(function(){with(FBL){var sourceMap={};
                                  -Firebug.Lite.Proxy={_callbacks:{},load:function(url){var resourceDomain=getDomain(url);
                                  -var isLocalResource=!resourceDomain||resourceDomain==Firebug.context.window.location.host;
                                  -return isLocalResource?fetchResource(url):fetchProxyResource(url)
                                  -},loadJSONP:function(url,callback){var script=createGlobalElement("script"),doc=Firebug.context.document,uid=""+new Date().getTime(),callbackName="callback=Firebug.Lite.Proxy._callbacks."+uid,jsonpURL=url.indexOf("?")!=-1?url+"&"+callbackName:url+"?"+callbackName;
                                  -Firebug.Lite.Proxy._callbacks[uid]=function(data){if(callback){callback(data)
                                  -}script.parentNode.removeChild(script);
                                  -delete Firebug.Lite.Proxy._callbacks[uid]
                                  -};
                                  -script.src=jsonpURL;
                                  -if(doc.documentElement){doc.documentElement.appendChild(script)
                                  -}},YQL:function(url,callback){var yql="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22"+encodeURIComponent(url)+"%22&format=xml";
                                  -this.loadJSONP(yql,function(data){var source=data.results[0];
                                  -var match=/<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -if(match){source=match[1]
                                  -}console.log(source)
                                  -})
                                  -}};
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage='/* Firebug Lite resource fetching is disabled.\nTo enabled it set the Firebug Lite option "disableResourceFetching" to "false".\nMore info at http://getfirebug.com/firebuglite#Options */';
                                  -var fetchResource=function(url){if(Firebug.disableResourceFetching){var source=sourceMap[url]=Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -return source
                                  -}if(sourceMap.hasOwnProperty(url)){return sourceMap[url]
                                  -}var xhr=FBL.getNativeXHRObject();
                                  -xhr.open("get",url,false);
                                  -xhr.send();
                                  -var source=sourceMap[url]=xhr.responseText;
                                  -return source
                                  -};
                                  -var fetchProxyResource=function(url){if(sourceMap.hasOwnProperty(url)){return sourceMap[url]
                                  -}var proxyURL=Env.Location.baseDir+"plugin/proxy/proxy.php?url="+encodeURIComponent(url);
                                  -var response=fetchResource(proxyURL);
                                  -try{var data=eval("("+response+")")
                                  -}catch(E){return"ERROR: Firebug Lite Proxy plugin returned an invalid response."
                                  -}var source=data?data.contents:"";
                                  -return source
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Lite.Style={}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Lite.Script=function(window){this.fileName=null;
                                  -this.isValid=null;
                                  -this.baseLineNumber=null;
                                  -this.lineExtent=null;
                                  -this.tag=null;
                                  -this.functionName=null;
                                  -this.functionSource=null
                                  -};
                                  -Firebug.Lite.Script.prototype={isLineExecutable:function(){},pcToLine:function(){},lineToPc:function(){},toString:function(){return"Firebug.Lite.Script"
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Lite.Browser=function(window){this.contentWindow=window;
                                  -this.contentDocument=window.document;
                                  -this.currentURI={spec:window.location.href}
                                  -};
                                  -Firebug.Lite.Browser.prototype={toString:function(){return"Firebug.Lite.Browser"
                                  -}}
                                  -}});
                                  -var JSON=window.JSON||{};
                                  -(function(){function f(n){return n<10?"0"+n:n
                                  -}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null
                                  -};
                                  -String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()
                                  -}
                                  -}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;
                                  -function quote(string){escapable.lastIndex=0;
                                  -return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];
                                  -return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
                                  -})+'"':'"'+string+'"'
                                  -}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];
                                  -if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)
                                  -}if(typeof rep==="function"){value=rep.call(holder,key,value)
                                  -}switch(typeof value){case"string":return quote(value);
                                  -case"number":return isFinite(value)?String(value):"null";
                                  -case"boolean":case"null":return String(value);
                                  -case"object":if(!value){return"null"
                                  -}gap+=indent;
                                  -partial=[];
                                  -if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;
                                  -for(i=0;
                                  -i<length;
                                  -i+=1){partial[i]=str(i,value)||"null"
                                  -}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";
                                  -gap=mind;
                                  -return v
                                  -}if(rep&&typeof rep==="object"){length=rep.length;
                                  -for(i=0;
                                  -i<length;
                                  -i+=1){k=rep[i];
                                  -if(typeof k==="string"){v=str(k,value);
                                  -if(v){partial.push(quote(k)+(gap?": ":":")+v)
                                  -}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);
                                  -if(v){partial.push(quote(k)+(gap?": ":":")+v)
                                  -}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";
                                  -gap=mind;
                                  -return v
                                  -}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;
                                  -gap="";
                                  -indent="";
                                  -if(typeof space==="number"){for(i=0;
                                  -i<space;
                                  -i+=1){indent+=" "
                                  -}}else{if(typeof space==="string"){indent=space
                                  -}}rep=replacer;
                                  -if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")
                                  -}return str("",{"":value})
                                  -}
                                  -}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;
                                  -function walk(holder,key){var k,v,value=holder[key];
                                  -if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);
                                  -if(v!==undefined){value[k]=v
                                  -}else{delete value[k]
                                  -}}}}return reviver.call(holder,key,value)
                                  -}text=String(text);
                                  -cx.lastIndex=0;
                                  -if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)
                                  -})
                                  -}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");
                                  -return typeof reviver==="function"?walk({"":j},""):j
                                  -}throw new SyntaxError("JSON.parse")
                                  -}
                                  -}FBL.JSON=JSON
                                  -}());
                                  -(function(){var store=(function(){var api={},win=window,doc=win.document,localStorageName="localStorage",globalStorageName="globalStorage",namespace="__firebug__storejs__",storage;
                                  -api.disabled=false;
                                  -api.set=function(key,value){};
                                  -api.get=function(key){};
                                  -api.remove=function(key){};
                                  -api.clear=function(){};
                                  -api.transact=function(key,transactionFn){var val=api.get(key);
                                  -if(typeof val=="undefined"){val={}
                                  -}transactionFn(val);
                                  -api.set(key,val)
                                  -};
                                  -api.serialize=function(value){return JSON.stringify(value)
                                  -};
                                  -api.deserialize=function(value){if(typeof value!="string"){return undefined
                                  -}return JSON.parse(value)
                                  -};
                                  -function isLocalStorageNameSupported(){try{return(localStorageName in win&&win[localStorageName])
                                  -}catch(err){return false
                                  -}}function isGlobalStorageNameSupported(){try{return(globalStorageName in win&&win[globalStorageName]&&win[globalStorageName][win.location.hostname])
                                  -}catch(err){return false
                                  -}}if(isLocalStorageNameSupported()){storage=win[localStorageName];
                                  -api.set=function(key,val){storage.setItem(key,api.serialize(val))
                                  -};
                                  -api.get=function(key){return api.deserialize(storage.getItem(key))
                                  -};
                                  -api.remove=function(key){storage.removeItem(key)
                                  -};
                                  -api.clear=function(){storage.clear()
                                  -}
                                  -}else{if(isGlobalStorageNameSupported()){storage=win[globalStorageName][win.location.hostname];
                                  -api.set=function(key,val){storage[key]=api.serialize(val)
                                  -};
                                  -api.get=function(key){return api.deserialize(storage[key]&&storage[key].value)
                                  -};
                                  -api.remove=function(key){delete storage[key]
                                  -};
                                  -api.clear=function(){for(var key in storage){delete storage[key]
                                  -}}
                                  -}else{if(doc.documentElement.addBehavior){var storage=doc.createElement("div");
                                  -function withIEStorage(storeFunction){return function(){var args=Array.prototype.slice.call(arguments,0);
                                  -args.unshift(storage);
                                  -doc.documentElement.appendChild(storage);
                                  -storage.addBehavior("#default#userData");
                                  -storage.load(localStorageName);
                                  -var result=storeFunction.apply(api,args);
                                  -doc.documentElement.removeChild(storage);
                                  -return result
                                  -}
                                  -}api.set=withIEStorage(function(storage,key,val){storage.setAttribute(key,api.serialize(val));
                                  -storage.save(localStorageName)
                                  -});
                                  -api.get=withIEStorage(function(storage,key){return api.deserialize(storage.getAttribute(key))
                                  -});
                                  -api.remove=withIEStorage(function(storage,key){storage.removeAttribute(key);
                                  -storage.save(localStorageName)
                                  -});
                                  -api.clear=withIEStorage(function(storage){var attributes=storage.XMLDocument.documentElement.attributes;
                                  -storage.load(localStorageName);
                                  -for(var i=0,attr;
                                  -attr=attributes[i];
                                  -i++){storage.removeAttribute(attr.name)
                                  -}storage.save(localStorageName)
                                  -})
                                  -}}}try{api.set(namespace,namespace);
                                  -if(api.get(namespace)!=namespace){api.disabled=true
                                  -}api.remove(namespace)
                                  -}catch(e){api.disabled=true
                                  -}return api
                                  -})();
                                  -if(typeof module!="undefined"){module.exports=store
                                  -}FBL.Store=store
                                  -})();
                                  -FBL.ns(function(){with(FBL){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;
                                  -[0,0].sort(function(){baseHasDuplicate=false;
                                  -return 0
                                  -});
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector;
                                  -while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];
                                  -parts.push(m[1]);
                                  -if(m[2]){extra=m[3];
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}return results
                                  -};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];
                                  -match.splice(1,1);
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(var i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);
                                  -Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes,0)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.setStart(a,0);
                                  -aRange.setEnd(a,0);
                                  -bRange.setStart(b,0);
                                  -bRange.setEnd(b,0);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
                                  -var inspectorTS,inspectorTimer,isInspecting;
                                  -Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},destroy:function(){destroyBoxModelInspector();
                                  -destroyOutlineInspector();
                                  -offlineFragment=null
                                  -},toggleInspect:function(){if(isInspecting){this.stopInspecting()
                                  -}else{Firebug.chrome.inspectButton.changeState("pressed");
                                  -this.startInspecting()
                                  -}},startInspecting:function(){isInspecting=true;
                                  -Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){isInspecting=false;
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick);
                                  -destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus()
                                  -}},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(ElementCache(targ)){var target=""+ElementCache.key(targ);
                                  -var lazySelect=function(){inspectorTS=new Date().getTime();
                                  -if(Firebug.HTML){Firebug.HTML.selectTreeNode(""+ElementCache.key(targ))
                                  -}};
                                  -if(inspectorTimer){clearTimeout(inspectorTimer);
                                  -inspectorTimer=null
                                  -}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0)
                                  -}else{inspectorTimer=setTimeout(lazySelect,300)
                                  -}}lastInspecting=new Date().getTime()
                                  -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(ElementCache.has(targ)){FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ))
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){var border=2;
                                  -var scrollbarSize=17;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0);
                                  -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0);
                                  -var numVerticalBorders=freeVerticalSpace>0?2:1;
                                  -var o=outlineElements;
                                  -var style;
                                  -style=o.fbOutlineT.style;
                                  -style.top=top-border+"px";
                                  -style.left=left+"px";
                                  -style.height=border+"px";
                                  -style.width=width+"px";
                                  -style=o.fbOutlineL.style;
                                  -style.top=top-border+"px";
                                  -style.left=left-border+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=border+"px";
                                  -style=o.fbOutlineB.style;
                                  -if(freeVerticalSpace>0){style.top=top+height+"px";
                                  -style.left=left+"px";
                                  -style.width=width+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.width=border+"px"
                                  -}style=o.fbOutlineR.style;
                                  -if(freeHorizontalSpace>0){style.top=top-border+"px";
                                  -style.left=left+width+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.height=border+"px";
                                  -style.width=border+"px"
                                  -}if(!outlineVisible){this.showOutline()
                                  -}},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}if(boxModelVisible){this.hideBoxModel()
                                  -}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){if(!el||!el.parentNode){return
                                  -}var box=Firebug.browser.getElementBox(el);
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var offsetHeight=Firebug.chrome.type=="frame"?Firebug.context.persistedState.height:0;
                                  -if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return
                                  -}var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -var border=Firebug.browser.getMeasurementBox(el,"border");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxBorderStyle.top=margin.top+"px";
                                  -boxBorderStyle.left=margin.left+"px";
                                  -boxBorderStyle.height=height+"px";
                                  -boxBorderStyle.width=width+"px";
                                  -boxPaddingStyle.top=margin.top+border.top+"px";
                                  -boxPaddingStyle.left=margin.left+border.left+"px";
                                  -boxPaddingStyle.height=height-border.top-border.bottom+"px";
                                  -boxPaddingStyle.width=width-border.left-border.right+"px";
                                  -boxContentStyle.top=margin.top+border.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+border.left+padding.left+"px";
                                  -boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px";
                                  -boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px";
                                  -if(!boxModelVisible){this.showBoxModel()
                                  -}},hideBoxModel:function(){if(!boxModelVisible){return
                                  -}offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -},showBoxModel:function(){if(boxModelVisible){return
                                  -}if(outlineVisible){this.hideOutline()
                                  -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;";
                                  -var inspectModelStyle=inspectStyle+inspectModelOpacity;
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle=inspectStyle+"background: #666;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var getInspectingTarget=function(){};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.firebugIgnore=true;
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -fbInspectFrame=null
                                  -}};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
                                  -el.id=name;
                                  -el.firebugIgnore=true;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
                                  -el.parentNode.removeChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModel.firebugIgnore=true;
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=createGlobalElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxBorder=createGlobalElement("div");
                                  -boxBorder.id="fbBoxBorder";
                                  -boxBorderStyle=boxBorder.style;
                                  -boxBorderStyle.cssText=inspectBorderStyle;
                                  -boxModel.appendChild(boxBorder);
                                  -boxPadding=createGlobalElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=createGlobalElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -};
                                  -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
                                  -}
                                  -}});
                                  -(function(){FBL.DomplateTag=function DomplateTag(tagName){this.tagName=tagName
                                  -};
                                  -FBL.DomplateEmbed=function DomplateEmbed(){};
                                  -FBL.DomplateLoop=function DomplateLoop(){};
                                  -var DomplateTag=FBL.DomplateTag;
                                  -var DomplateEmbed=FBL.DomplateEmbed;
                                  -var DomplateLoop=FBL.DomplateLoop;
                                  -var womb=null;
                                  -FBL.domplate=function(){var lastSubject;
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i]
                                  -}for(var name in lastSubject){var val=lastSubject[name];
                                  -if(isTag(val)){val.tag.subject=lastSubject
                                  -}}return lastSubject
                                  -};
                                  -var domplate=FBL.domplate;
                                  -FBL.domplate.context=function(context,fn){var lastContext=domplate.lastContext;
                                  -domplate.topContext=context;
                                  -fn.apply(context);
                                  -domplate.topContext=lastContext
                                  -};
                                  -FBL.TAG=function(){var embed=new DomplateEmbed();
                                  -return embed.merge(arguments)
                                  -};
                                  -FBL.FOR=function(){var loop=new DomplateLoop();
                                  -return loop.merge(arguments)
                                  -};
                                  -FBL.DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName
                                  -}this.context=oldTag?oldTag.context:null;
                                  -this.subject=oldTag?oldTag.subject:null;
                                  -this.attrs=oldTag?copyObject(oldTag.attrs):{};
                                  -this.classes=oldTag?copyObject(oldTag.classes):{};
                                  -this.props=oldTag?copyObject(oldTag.props):null;
                                  -this.listeners=oldTag?copyArray(oldTag.listeners):null;
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args.length?args[0]:null;
                                  -var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs);
                                  -this.children=[];
                                  -if(domplate.topContext){this.context=domplate.topContext
                                  -}if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children)
                                  -}if(hasAttrs){this.parseAttrs(attrs)
                                  -}return creator(this,DomplateTag)
                                  -},parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]);
                                  -readPartNames(val,this.vars);
                                  -if(name.indexOf("on")==0){var eventName=name.substr(2);
                                  -if(!this.listeners){this.listeners=[]
                                  -}this.listeners.push(eventName,val)
                                  -}else{if(name.indexOf("_")==0){var propName=name.substr(1);
                                  -if(!this.props){this.props={}
                                  -}this.props[propName]=val
                                  -}else{if(name.indexOf("$")==0){var className=name.substr(1);
                                  -if(!this.classes){this.classes={}
                                  -}this.classes[className]=val
                                  -}else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val
                                  -}else{this.attrs[name]=val
                                  -}}}}}},compile:function(){if(this.renderMarkup){return
                                  -}this.compileMarkup();
                                  -this.compileDOM()
                                  -},compileMarkup:function(){this.markupArgs=[];
                                  -var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0};
                                  -this.generateMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -var fnBlock=["r=(function (__code__, __context__, __in__, __out__"];
                                  -for(var i=0;
                                  -i<info.argIndex;
                                  -++i){fnBlock.push(", s",i)
                                  -}fnBlock.push(") {");
                                  -if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (__context__) {")
                                  -}fnBlock.push("with (__in__) {");
                                  -fnBlock.push.apply(fnBlock,blocks);
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("}})");
                                  -function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var tagOutputs=[];
                                  -var markupArgs=[code,tag.tag.context,args,tagOutputs];
                                  -markupArgs.push.apply(markupArgs,tag.tag.markupArgs);
                                  -tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs);
                                  -outputs.push(tag);
                                  -outputs.push(tagOutputs)
                                  -}function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}function __loop__(iter,outputs,fn){var iterOuts=[];
                                  -outputs.push(iterOuts);
                                  -if(iter instanceof Array){iter=new ArrayIterator(iter)
                                  -}try{while(1){var value=iter.next();
                                  -var itemOuts=[0,0];
                                  -iterOuts.push(itemOuts);
                                  -fn.apply(this,[value,itemOuts])
                                  -}}catch(exc){if(exc!=StopIteration){throw exc
                                  -}}}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderMarkup=r
                                  -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars)
                                  -}for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.getVarNames(args)
                                  -}else{if(child instanceof Parts){for(var i=0;
                                  -i<child.parts.length;
                                  -++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name;
                                  -var names=name.split(".");
                                  -args.push(names[0])
                                  -}}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"');
                                  -for(var name in this.attrs){if(name!="class"){var val=this.attrs[name];
                                  -topBlock.push(', " ',name,'=\\""');
                                  -addParts(val,",",topBlock,info,true);
                                  -topBlock.push(', "\\""')
                                  -}}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){readPartNames(this.listeners[i+1],topOuts)
                                  -}}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts)
                                  -}}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""');
                                  -if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true)
                                  -}topBlock.push(', " "');
                                  -for(var name in this.classes){topBlock.push(", (");
                                  -addParts(this.classes[name],"",topBlock,info);
                                  -topBlock.push(' ? "',name,'" + " " : "")')
                                  -}topBlock.push(', "\\""')
                                  -}topBlock.push(',">"');
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -topBlock.push(',"</',this.tagName,'>"')
                                  -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info)
                                  -}else{addParts(child,",",topBlock,info,true)
                                  -}}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");")
                                  -}if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");")
                                  -}topBlock.splice(0,topBlock.length);
                                  -topOuts.splice(0,topOuts.length)
                                  -},addLocals:function(blocks){var varNames=[];
                                  -this.getVarNames(varNames);
                                  -var map={};
                                  -for(var i=0;
                                  -i<varNames.length;
                                  -++i){var name=varNames[i];
                                  -if(map.hasOwnProperty(name)){continue
                                  -}map[name]=1;
                                  -var names=name.split(".");
                                  -blocks.push("var ",names[0]+" = __in__."+names[0]+";")
                                  -}},compileDOM:function(){var path=[];
                                  -var blocks=[];
                                  -this.domArgs=[];
                                  -path.embedIndex=0;
                                  -path.loopIndex=0;
                                  -path.staticIndex=0;
                                  -path.renderIndex=0;
                                  -var nodeCount=this.generateDOM(path,blocks,this.domArgs);
                                  -var fnBlock=["r=(function (root, context, o"];
                                  -for(var i=0;
                                  -i<path.staticIndex;
                                  -++i){fnBlock.push(", ","s"+i)
                                  -}for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){fnBlock.push(", ","d"+i)
                                  -}fnBlock.push(") {");
                                  -for(var i=0;
                                  -i<path.loopIndex;
                                  -++i){fnBlock.push("var l",i," = 0;")
                                  -}for(var i=0;
                                  -i<path.embedIndex;
                                  -++i){fnBlock.push("var e",i," = 0;")
                                  -}if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (context) {")
                                  -}fnBlock.push(blocks.join(""));
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("return ",nodeCount,";");
                                  -fnBlock.push("})");
                                  -function __bind__(object,fn){return function(event){return fn.apply(object,[event])
                                  -}
                                  -}function __link__(node,tag,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var domArgs=[node,tag.tag.context,0];
                                  -domArgs.push.apply(domArgs,tag.tag.domArgs);
                                  -domArgs.push.apply(domArgs,args);
                                  -return tag.tag.renderDOM.apply(tag.tag.subject,domArgs)
                                  -}var self=this;
                                  -function __loop__(iter,fn){var nodeCount=0;
                                  -for(var i=0;
                                  -i<iter.length;
                                  -++i){iter[i][0]=i;
                                  -iter[i][1]=nodeCount;
                                  -nodeCount+=fn.apply(this,iter[i])
                                  -}return nodeCount
                                  -}function __path__(parent,offset){var root=parent;
                                  -for(var i=2;
                                  -i<arguments.length;
                                  -++i){var index=arguments[i];
                                  -if(i==3){index+=offset
                                  -}if(index==-1){parent=parent.parentNode
                                  -}else{parent=parent.childNodes[index]
                                  -}}return parent
                                  -}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderDOM=r
                                  -},generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks)
                                  -}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){var val=this.listeners[i+1];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);")
                                  -}}if(this.props){for(var name in this.props){var val=this.props[name];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push("node.",name," = ",arg,";")
                                  -}}this.generateChildDOM(path,blocks,args);
                                  -return 1
                                  -},generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o");
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){blocks.push(",",path[i])
                                  -}blocks.push(");")
                                  -},generateChildDOM:function(path,blocks,args){path.push(0);
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args)
                                  -}else{path[path.length-1]+="+1"
                                  -}}path.pop()
                                  -}};
                                  -FBL.DomplateEmbed.prototype=copyObject(FBL.DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]);
                                  -this.attrs=oldTag?oldTag.attrs:{};
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args[1];
                                  -for(var name in attrs){var val=parseValue(attrs[name]);
                                  -this.attrs[name]=val;
                                  -readPartNames(val,this.vars)
                                  -}return creator(this,DomplateEmbed)
                                  -},getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name)
                                  -}if(this.vars){names.push.apply(names,this.vars)
                                  -}},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("__link__(");
                                  -addParts(this.value,"",blocks,info);
                                  -blocks.push(", __code__, __out__, {");
                                  -var lastName=null;
                                  -for(var name in this.attrs){if(lastName){blocks.push(",")
                                  -}lastName=name;
                                  -var val=this.attrs[name];
                                  -blocks.push('"',name,'":');
                                  -addParts(val,"",blocks,info)
                                  -}blocks.push("});")
                                  -},generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++;
                                  -this.generateNodePath(path,blocks);
                                  -var valueName="d"+path.renderIndex++;
                                  -var argsName="d"+path.renderIndex++;
                                  -blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");");
                                  -return embedName
                                  -}});
                                  -FBL.DomplateLoop.prototype=copyObject(FBL.DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0];
                                  -this.iter=oldTag?oldTag.iter:parseValue(args[1]);
                                  -this.vars=[];
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -var offset=Math.min(args.length,2);
                                  -parseChildren(args,offset,this.vars,this.children);
                                  -return creator(this,DomplateLoop)
                                  -},getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name)
                                  -}DomplateTag.prototype.getVarNames.apply(this,[names])
                                  -},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -var iterName;
                                  -if(this.iter instanceof Parts){var part=this.iter.parts[0];
                                  -iterName=part.name;
                                  -if(part.format){for(var i=0;
                                  -i<part.format.length;
                                  -++i){iterName=part.format[i]+"("+iterName+")"
                                  -}}}else{iterName=this.iter
                                  -}blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {");
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("}]);")
                                  -},generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++;
                                  -var counterName="i"+path.loopIndex;
                                  -var loopName="l"+path.loopIndex++;
                                  -if(!path.length){path.push(-1,0)
                                  -}var preIndex=path.renderIndex;
                                  -path.renderIndex=0;
                                  -var nodeCount=0;
                                  -var subBlocks=[];
                                  -var basePath=path[path.length-1];
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount;
                                  -var child=this.children[i];
                                  -if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args)
                                  -}else{nodeCount+="+1"
                                  -}}path[path.length-1]=basePath+"+"+loopName;
                                  -blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName);
                                  -for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){blocks.push(",d"+i)
                                  -}blocks.push(") {");
                                  -blocks.push(subBlocks.join(""));
                                  -blocks.push("return ",nodeCount,";");
                                  -blocks.push("}]);");
                                  -path.renderIndex=preIndex;
                                  -return loopName
                                  -}});
                                  -function Variable(name,format){this.name=name;
                                  -this.format=format
                                  -}function Parts(parts){this.parts=parts
                                  -}function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -var index=0;
                                  -var parts=[];
                                  -var m;
                                  -while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index);
                                  -if(pre){parts.push(pre)
                                  -}var expr=m[1].split("|");
                                  -parts.push(new Variable(expr[0],expr.slice(1)));
                                  -index=re.lastIndex
                                  -}if(!index){return str
                                  -}var post=str.substr(index);
                                  -if(post){parts.push(post)
                                  -}return new Parts(parts)
                                  -}function parseValue(val){return typeof(val)=="string"?parseParts(val):val
                                  -}function parseChildren(args,offset,vars,children){for(var i=offset;
                                  -i<args.length;
                                  -++i){var val=parseValue(args[i]);
                                  -children.push(val);
                                  -readPartNames(val,vars)
                                  -}}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){vars.push(part.name)
                                  -}}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[];
                                  -for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var varName="d"+path.renderIndex++;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){varName=part.format[j]+"("+varName+")"
                                  -}}vals.push(varName)
                                  -}else{vals.push('"'+part.replace(/"/g,'\\"')+'"')
                                  -}}return vals.join("+")
                                  -}else{args.push(val);
                                  -return"s"+path.staticIndex++
                                  -}}function addParts(val,delim,block,info,escapeIt){var vals=[];
                                  -if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var partName=part.name;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){partName=part.format[j]+"("+partName+")"
                                  -}}if(escapeIt){vals.push("__escape__("+partName+")")
                                  -}else{vals.push(partName)
                                  -}}else{vals.push('"'+part+'"')
                                  -}}}else{if(isTag(val)){info.args.push(val);
                                  -vals.push("s"+info.argIndex++)
                                  -}else{vals.push('"'+val+'"')
                                  -}}var parts=vals.join(delim);
                                  -if(parts){block.push(delim,parts)
                                  -}}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag
                                  -}function creator(tag,cons){var fn=new Function("var tag = arguments.callee.tag;var cons = arguments.callee.cons;var newTag = new cons();return newTag.merge(arguments, tag);");
                                  -fn.tag=tag;
                                  -fn.cons=cons;
                                  -extend(fn,Renderer);
                                  -return fn
                                  -}function copyArray(oldArray){var ary=[];
                                  -if(oldArray){for(var i=0;
                                  -i<oldArray.length;
                                  -++i){ary.push(oldArray[i])
                                  -}}return ary
                                  -}function copyObject(l,r){var m={};
                                  -extend(m,l);
                                  -extend(m,r);
                                  -return m
                                  -}function extend(l,r){for(var n in r){l[n]=r[n]
                                  -}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}}function ArrayIterator(array){var index=-1;
                                  -this.next=function(){if(++index>=array.length){throw StopIteration
                                  -}return array[index]
                                  -}
                                  -}function StopIteration(){}FBL.$break=function(){throw StopIteration
                                  -};
                                  -var Renderer={renderHTML:function(args,outputs,self){var code=[];
                                  -var markupArgs=[code,this.tag.context,args,outputs];
                                  -markupArgs.push.apply(markupArgs,this.tag.markupArgs);
                                  -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs);
                                  -return code.join("")
                                  -},insertRows:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -var div=doc.createElement("div");
                                  -div.innerHTML="<table><tbody>"+html+"</tbody></table>";
                                  -var tbody=div.firstChild.firstChild;
                                  -var parent=before.tagName=="TR"?before.parentNode:before;
                                  -var after=before.tagName=="TR"?before.nextSibling:null;
                                  -var firstRow=tbody.firstChild,lastRow;
                                  -while(tbody.firstChild){lastRow=tbody.firstChild;
                                  -if(after){parent.insertBefore(lastRow,after)
                                  -}else{parent.appendChild(lastRow)
                                  -}}var offset=0;
                                  -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild;
                                  -for(;
                                  -node&&node!=firstRow;
                                  -node=node.nextSibling){++offset
                                  -}}var domArgs=[firstRow,this.tag.context,offset];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return[firstRow,lastRow]
                                  -},insertBefore:function(args,before,self){return this.insertNode(args,before.ownerDocument,before,false,self)
                                  -},insertAfter:function(args,after,self){return this.insertNode(args,after.ownerDocument,after,true,self)
                                  -},insertNode:function(args,doc,element,isAfter,self){if(!args){args={}
                                  -}this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=element.ownerDocument;
                                  -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div")
                                  -}womb.innerHTML=html;
                                  -var root=womb.firstChild;
                                  -if(isAfter){while(womb.firstChild){if(element.nextSibling){element.parentNode.insertBefore(womb.firstChild,element.nextSibling)
                                  -}else{element.parentNode.appendChild(womb.firstChild)
                                  -}}}else{while(womb.lastChild){element.parentNode.insertBefore(womb.lastChild,element)
                                  -}}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -},replace:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var root;
                                  -if(parent.nodeType==1){parent.innerHTML=html;
                                  -root=parent.firstChild
                                  -}else{if(!parent||parent.nodeType!=9){parent=document
                                  -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild
                                  -}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -},append:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div")
                                  -}womb.innerHTML=html;
                                  -var root=womb.firstChild;
                                  -while(womb.firstChild){parent.appendChild(womb.firstChild)
                                  -}womb=null;
                                  -var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -}};
                                  -function defineTags(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){var tagName=arguments[i];
                                  -var fn=new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -fn.DomplateTag=DomplateTag;
                                  -var fnName=tagName.toUpperCase();
                                  -FBL[fnName]=fn
                                  -}}defineTags("a","button","br","canvas","code","col","colgroup","div","fieldset","form","h1","h2","h3","hr","img","input","label","legend","li","ol","optgroup","option","p","pre","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","tr","tt","ul","iframe")
                                  -})();
                                  -var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"});
                                  -var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"});
                                  -var OBJECTLINK=this.OBJECTLINK=isIE6?A({"class":"objectLink objectLink-$className a11yFocus",href:"javascript:void(0)",title:"$object|FBL.getElementXPath",_repObject:"$object"}):A({"class":"objectLink objectLink-$className a11yFocus",title:"$object|FBL.getElementXPath",_repObject:"$object"});
                                  -this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined"
                                  -}});
                                  -this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null
                                  -}});
                                  -this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"});
                                  -this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number"
                                  -}});
                                  -this.String=domplate(Firebug.Rep,{tag:OBJECTBOX("&quot;$object&quot;"),shortTag:OBJECTBOX("&quot;$object|cropString&quot;"),className:"string",supportsObject:function(object,type){return type=="string"
                                  -}});
                                  -this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"});
                                  -this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")});
                                  -this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")});
                                  -this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/;
                                  -var fnText=safeToString(fn);
                                  -var m=fnRegex.exec(fnText);
                                  -return m?m[1]:"function()"
                                  -},copySource:function(fn){copyToClipboard(safeToString(fn))
                                  -},monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor")
                                  -}else{Firebug.Debugger.monitorScript(fn,script,"monitor")
                                  -}},className:"function",supportsObject:function(object,type){return isFunction(object)
                                  -},inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink)
                                  -}},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn);
                                  -if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber])
                                  -}else{if(fn.toString){return fn.toString()
                                  -}}},getTitle:function(fn,context){var name=fn.name?fn.name:"function";
                                  -return name+"()"
                                  -},getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn)
                                  -}if(!script){return
                                  -}var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=script?getFunctionName(script,context):fn.name;
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,fn)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.Obj=domplate(Firebug.Rep,{tag:OBJECTLINK(SPAN({"class":"objectTitle"},"$object|getTitle "),SPAN({"class":"objectProps"},SPAN({"class":"objectLeftBrace",role:"presentation"},"{"),FOR("prop","$object|propIterator",SPAN({"class":"objectPropName",role:"presentation"},"$prop.name"),SPAN({"class":"objectEqual",role:"presentation"},"$prop.equal"),TAG("$prop.tag",{object:"$prop.object"}),SPAN({"class":"objectComma",role:"presentation"},"$prop.delim")),SPAN({"class":"objectRightBrace"},"}"))),propNumberTag:SPAN({"class":"objectProp-number"},"$object"),propStringTag:SPAN({"class":"objectProp-string"},"&quot;$object&quot;"),propObjectTag:SPAN({"class":"objectProp-object"},"$object"),propIterator:function(object){var maxLength=55;
                                  -if(!object){return[]
                                  -}var props=[];
                                  -var length=0;
                                  -var numProperties=0;
                                  -var numPropertiesShown=0;
                                  -var maxLengthReached=false;
                                  -var lib=this;
                                  -var propRepsMap={"boolean":this.propNumberTag,number:this.propNumberTag,string:this.propStringTag,object:this.propObjectTag};
                                  -try{var title=Firebug.Rep.getTitle(object);
                                  -length+=title.length;
                                  -for(var name in object){var value;
                                  -try{value=object[name]
                                  -}catch(exc){continue
                                  -}var type=typeof(value);
                                  -if(type=="boolean"||type=="number"||(type=="string"&&value)||(type=="object"&&value&&value.toString)){var tag=propRepsMap[type];
                                  -var value=(type=="object")?Firebug.getRep(value).getTitle(value):value+"";
                                  -length+=name.length+value.length+4;
                                  -if(length<=maxLength){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "});
                                  -numPropertiesShown++
                                  -}else{maxLengthReached=true
                                  -}}numProperties++;
                                  -if(maxLengthReached&&numProperties>numPropertiesShown){break
                                  -}}if(numProperties>numPropertiesShown){props.push({object:"...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""})
                                  -}else{if(props.length>0){props[props.length-1].delim=""
                                  -}}}catch(exc){}return props
                                  -},fb_1_6_propIterator:function(object,max){max=max||3;
                                  -if(!object){return[]
                                  -}var props=[];
                                  -var len=0,count=0;
                                  -try{for(var name in object){var value;
                                  -try{value=object[name]
                                  -}catch(exc){continue
                                  -}var t=typeof(value);
                                  -if(t=="boolean"||t=="number"||(t=="string"&&value)||(t=="object"&&value&&value.toString)){var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag||rep.tag;
                                  -if(t=="object"){value=rep.getTitle(value);
                                  -tag=rep.titleTag
                                  -}count++;
                                  -if(count<=max){props.push({tag:tag,name:name,object:value,equal:"=",delim:", "})
                                  -}else{break
                                  -}}}if(count>max){props[Math.max(1,max-1)]={object:"more...",tag:FirebugReps.Caption.tag,name:"",equal:"",delim:""}
                                  -}else{if(props.length>0){props[props.length-1].delim=""
                                  -}}}catch(exc){}return props
                                  -},className:"object",supportsObject:function(object,type){return true
                                  -}});
                                  -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}return items
                                  -},shortArrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length&&i<3;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""})
                                  -}return items
                                  -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0;
                                  -for(child=child.previousSibling;
                                  -child;
                                  -child=child.previousSibling){if(child.repObject){++arrayIndex
                                  -}}return arrayIndex
                                  -},className:"array",supportsObject:function(object){return this.isArray(object)
                                  -},isArray:function(obj){try{if(!obj){return false
                                  -}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true
                                  -}else{if(instanceOf(obj,"HTMLCollection")){return true
                                  -}else{if(instanceOf(obj,"NodeList")){return true
                                  -}else{return false
                                  -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc);
                                  -FBTrace.sysout("isArray Fails on obj",obj)
                                  -}}return false
                                  -},getTitle:function(object,context){return"["+object.length+"]"
                                  -}});
                                  -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property
                                  -},getRealObject:function(prop,context){return prop.object[prop.name]
                                  -},getTitle:function(prop,context){return prop.name
                                  -}});
                                  -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile
                                  -},browseObject:function(file,context){openNewTab(file.href);
                                  -return true
                                  -},getRealObject:function(file,context){return null
                                  -}});
                                  -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy
                                  -}});
                                  -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"$object.nodeName|toLowerCase"),FOR("attr","$object|attrIterator","&nbsp;$attr.nodeName=&quot;",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"&quot;"),"&gt;"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden"
                                  -},getSelectorTag:function(elt){return elt.nodeName.toLowerCase()
                                  -},getSelectorId:function(elt){return elt.id?"#"+elt.id:""
                                  -},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:""
                                  -},getValue:function(elt){return"";
                                  -var value;
                                  -if(elt instanceof HTMLImageElement){value=getFileName(elt.src)
                                  -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href)
                                  -}else{if(elt instanceof HTMLInputElement){value=elt.value
                                  -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action)
                                  -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src)
                                  -}}}}}return value?" "+cropString(value,20):""
                                  -},attrIterator:function(elt){var attrs=[];
                                  -var idAttr,classAttr;
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(!attr.specified||attr.nodeName&&attr.nodeName.indexOf("firebug-")!=-1){continue
                                  -}else{if(attr.nodeName=="id"){idAttr=attr
                                  -}else{if(attr.nodeName=="class"){classAttr=attr
                                  -}else{if(attr.nodeName=="style"){attrs.push({nodeName:attr.nodeName,nodeValue:attr.nodeValue||elt.style.cssText.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":"
                                  -})})
                                  -}else{attrs.push(attr)
                                  -}}}}}}if(classAttr){attrs.splice(0,0,classAttr)
                                  -}if(idAttr){attrs.splice(0,0,idAttr)
                                  -}return attrs
                                  -},shortAttrIterator:function(elt){var attrs=[];
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.nodeName=="id"||attr.nodeName=="class"){attrs.push(attr)
                                  -}}}return attrs
                                  -},getHidden:function(elt){return isVisible(elt)?"":"nodeHidden"
                                  -},getXPath:function(elt){return getElementTreeXPath(elt)
                                  -},getNodeText:function(element){var text=element.textContent;
                                  -if(Firebug.showFullTextNodes){return text
                                  -}else{return cropString(text,50)
                                  -}},getNodeTextGroups:function(element){var text=element.textContent;
                                  -if(!Firebug.showFullTextNodes){text=cropString(text,50)
                                  -}var escapeGroups=[];
                                  -if(Firebug.showTextNodesWithWhitespace){escapeGroups.push({group:"whitespace","class":"nodeWhiteSpace",extra:{"\t":"_Tab","\n":"_Para"," ":"_Space"}})
                                  -}if(Firebug.showTextNodesWithEntities){escapeGroups.push({group:"text","class":"nodeTextEntity",extra:{}})
                                  -}if(escapeGroups.length){return escapeGroupsForEntities(text,escapeGroups)
                                  -}else{return[{str:text,"class":"",extra:""}]
                                  -}},copyHTML:function(elt){var html=getElementXML(elt);
                                  -copyToClipboard(html)
                                  -},copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML)
                                  -},copyXPath:function(elt){var xpath=getElementXPath(elt);
                                  -copyToClipboard(xpath)
                                  -},persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null;
                                  -return elts&&elts.length?elts[0]:null
                                  -},className:"element",supportsObject:function(object){return instanceOf(object,"Element")
                                  -},browseObject:function(elt,context){var tag=elt.nodeName.toLowerCase();
                                  -if(tag=="script"){openNewTab(elt.src)
                                  -}else{if(tag=="link"){openNewTab(elt.href)
                                  -}else{if(tag=="a"){openNewTab(elt.href)
                                  -}else{if(tag=="img"){openNewTab(elt.src)
                                  -}}}}return true
                                  -},persistObject:function(elt,context){var xpath=getElementXPath(elt);
                                  -return bind(this.persistor,top,xpath)
                                  -},getTitle:function(element,context){return getElementCSSSelector(element)
                                  -},getTooltip:function(elt){return this.getXPath(elt)
                                  -},getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context);
                                  -return[{label:"CopyHTML",command:bindFixed(this.copyHTML,this,elt)},{label:"CopyInnerHTML",command:bindFixed(this.copyInnerHTML,this,elt)},{label:"CopyXPath",command:bindFixed(this.copyXPath,this,elt)},"-",{label:"ShowEventsInConsole",type:"checkbox",checked:monitored,command:bindFixed(toggleMonitorEvents,FBL,elt,null,monitored,context)},"-",{label:"ScrollIntoView",command:bindFixed(elt.scrollIntoView,elt)}]
                                  -}});
                                  -this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"TextNode"),"&nbsp;textContent=&quot;",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),"&quot;","&gt;"),className:"textNode",supportsObject:function(object){return object instanceof Text
                                  -}});
                                  -this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):""
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Document")
                                  -},browseObject:function(doc,context){openNewTab(doc.location.href);
                                  -return true
                                  -},persistObject:function(doc,context){return this.persistor
                                  -},persistor:function(context){return context.window.document
                                  -},getTitle:function(win,context){return"document"
                                  -},getTooltip:function(doc){return doc.location.href
                                  -}});
                                  -this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href)
                                  -},copyURL:function(styleSheet){copyToClipboard(styleSheet.href)
                                  -},openInTab:function(styleSheet){openNewTab(styleSheet.href)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"CSSStyleSheet")
                                  -},browseObject:function(styleSheet,context){openNewTab(styleSheet.href);
                                  -return true
                                  -},persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href)
                                  -},getTooltip:function(styleSheet){return styleSheet.href
                                  -},getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}]
                                  -},persistor:function(context,href){return getStyleSheetByHref(href,context)
                                  -}});
                                  -this.Window=domplate(Firebug.Rep,{tag:OBJECTLINK("Window ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(win){try{return(win&&win.location&&!win.closed)?getFileName(win.location.href):""
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?")
                                  -}}},className:"object",supportsObject:function(object){return instanceOf(object,"Window")
                                  -},browseObject:function(win,context){openNewTab(win.location.href);
                                  -return true
                                  -},persistObject:function(win,context){return this.persistor
                                  -},persistor:function(context){return context.window
                                  -},getTitle:function(win,context){return"window"
                                  -},getTooltip:function(win){if(win&&!win.closed){return win.location.href
                                  -}}});
                                  -this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "];
                                  -var eventFamily=getEventFamily(event.type);
                                  -if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY)
                                  -}else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode)
                                  -}}return info.join("")
                                  -},copyEvent:function(event){return new EventCopy(event)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Event")||instanceOf(object,"EventCopy")
                                  -},getTitle:function(event,context){return"Event "+event.type
                                  -}});
                                  -this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true
                                  -},getSourceLinkTitle:function(sourceLink){if(!sourceLink){return""
                                  -}try{var fileName=getFileName(sourceLink.href);
                                  -fileName=decodeURIComponent(fileName);
                                  -fileName=cropString(fileName,17)
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc)
                                  -}}return typeof sourceLink.line=="number"?fileName+" (line "+sourceLink.line+")":fileName
                                  -},copyLink:function(sourceLink){copyToClipboard(sourceLink.href)
                                  -},openInTab:function(sourceLink){openNewTab(sourceLink.href)
                                  -},className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink
                                  -},getTooltip:function(sourceLink){return decodeURI(sourceLink.href)
                                  -},inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context);
                                  -if(scriptFile){return Firebug.chrome.select(sourceLink)
                                  -}}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object);
                                  -return
                                  -}var stylesheet=getStyleSheetByHref(sourceLink.href,context);
                                  -if(stylesheet){var ownerNode=stylesheet.ownerNode;
                                  -if(ownerNode){Firebug.chrome.select(sourceLink,"html");
                                  -return
                                  -}var panel=context.getPanel("stylesheet");
                                  -if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink)
                                  -}}}}viewSource(sourceLink.href,sourceLink.line)
                                  -},browseObject:function(sourceLink,context){openNewTab(sourceLink.href);
                                  -return true
                                  -},getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}]
                                  -}});
                                  -this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context)
                                  -},className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile
                                  -},persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href)
                                  -},browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href
                                  -}});
                                  -this.StackFrame=domplate(Firebug.Rep,{tag:OBJECTBLOCK(A({"class":"objectLink objectLink-function focusRow a11yFocus",_repObject:"$object.fn"},"$object|getCallName")," ( ",FOR("arg","$object|argIterator",TAG("$arg.tag",{object:"$arg.value"}),SPAN({"class":"arrayComma"},"$arg.delim"))," )",SPAN({"class":"objectLink-sourceLink objectLink"},"$object|getSourceLinkTitle")),getCallName:function(frame){return frame.name||"anonymous"
                                  -},getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),20);
                                  -return fileName+(frame.lineNo?" (line "+frame.lineNo+")":"");
                                  -var fileName=cropString(getFileName(frame.href),17);
                                  -return $STRF("Line",[fileName,frame.lineNo])
                                  -},argIterator:function(frame){if(!frame.args){return[]
                                  -}var items=[];
                                  -for(var i=0;
                                  -i<frame.args.length;
                                  -++i){var arg=frame.args[i];
                                  -if(!arg){break
                                  -}var rep=Firebug.getRep(arg.value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==frame.args.length-1?"":", ");
                                  -items.push({name:arg.name,value:arg.value,tag:tag,delim:delim})
                                  -}return items
                                  -},className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame
                                  -},inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js");
                                  -Firebug.chrome.select(sourceLink)
                                  -},getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo])
                                  -}});
                                  -this.StackTrace=domplate(Firebug.Rep,{tag:FOR("frame","$object.frames focusRow",TAG(this.StackFrame.tag,{object:"$frame"})),className:"stackTrace",supportsObject:function(object){return object instanceof StackTrace
                                  -}});
                                  -this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid)
                                  -},getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}return getFunctionName(frame.script,context)
                                  -},getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame);
                                  -if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo])
                                  -}else{return $STRF("Line",[frame.script.fileName,frame.line])
                                  -}},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script)
                                  -}});
                                  -this.ErrorMessage=domplate(Firebug.Rep,{tag:OBJECTBOX({$hasTwisty:"$object|hasStackTrace",$hasBreakSwitch:"$object|hasBreakSwitch",$breakForError:"$object|hasErrorBreak",_repObject:"$object",_stackTrace:"$object|getLastErrorStackTrace",onclick:"$onToggleError"},DIV({"class":"errorTitle a11yFocus",role:"checkbox","aria-checked":"false"},"$object.message|getMessage"),DIV({"class":"errorTrace"}),DIV({"class":"errorSourceBox errorSource-$object|getSourceType"},IMG({"class":"errorBreak a11yFocus",src:"blank.gif",role:"checkbox","aria-checked":"false",title:"Break on this error"}),A({"class":"errorSource a11yFocus"},"$object|getLine")),TAG(this.SourceLink.tag,{object:"$object|getSourceLink"})),getLastErrorStackTrace:function(error){return error.trace
                                  -},hasStackTrace:function(error){var url=error.href.toString();
                                  -var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1);
                                  -return !fromCommandLine&&error.trace
                                  -},hasBreakSwitch:function(error){return error.href&&error.lineNo>0
                                  -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo)
                                  -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/;
                                  -var m=re.exec(message);
                                  -return m?m[1]:message
                                  -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80)
                                  -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80)
                                  -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js";
                                  -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null
                                  -},getSourceType:function(error){if(error.source){return"syntax"
                                  -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none"
                                  -}else{if(error.category=="css"){return"none"
                                  -}else{if(!error.href||!error.lineNo){return"none"
                                  -}else{return"exec"
                                  -}}}}},onToggleError:function(event){var target=event.currentTarget;
                                  -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject)
                                  -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target);
                                  -this.inspectObject(target.repObject,panel.context)
                                  -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1];
                                  -toggleClass(target,"opened");
                                  -event.target.setAttribute("aria-checked",hasClass(target,"opened"));
                                  -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox)
                                  -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target);
                                  -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox])
                                  -}}else{clearNode(traceBox)
                                  -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo];
                                  -copyToClipboard(message.join("\n"))
                                  -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo)
                                  -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo)
                                  -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage
                                  -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -FirebugReps.SourceLink.inspectObject(sourceLink,context)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}];
                                  -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors"))
                                  -}return items
                                  -}});
                                  -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -Firebug.chrome.select(sourceLink)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}]
                                  -}});
                                  -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length;
                                  -var list=[];
                                  -for(var i=0;
                                  -i<sourceText.lines.length;
                                  -++i){var lineNo=(i+1)+"";
                                  -while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo
                                  -}list.push({lineNo:lineNo,text:sourceText.lines[i]})
                                  -}return list
                                  -},getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length)
                                  -}});
                                  -this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length;
                                  -return items+" history entries"
                                  -}catch(exc){return"object does not support history (nsIDOMHistory)"
                                  -}},showHistory:function(history){try{var items=history.length;
                                  -Firebug.chrome.select(history)
                                  -}catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory)
                                  -}});
                                  -this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache"
                                  -}catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264"
                                  -}},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264")
                                  -},className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList)
                                  -}}});
                                  -this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage"
                                  -},show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0")
                                  -},className:"Storage",supportsObject:function(object,type){return(object instanceof Storage)
                                  -}});
                                  -Firebug.registerRep(this.Undefined,this.Null,this.Number,this.String,this.Window,this.Element,this.Document,this.StyleSheet,this.Event,this.Property,this.Except,this.Arr);
                                  -Firebug.setDefaultReps(this.Func,this.Obj)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var saveTimeout=400;
                                  -var pageAmount=10;
                                  -var currentTarget=null;
                                  -var currentGroup=null;
                                  -var currentPanel=null;
                                  -var currentEditor=null;
                                  -var defaultEditor=null;
                                  -var originalClassName=null;
                                  -var originalValue=null;
                                  -var defaultValue=null;
                                  -var previousValue=null;
                                  -var invalidEditor=false;
                                  -var ignoreNextInput=false;
                                  -Firebug.Editor=extend(Firebug.Module,{supportsStopEvent:true,dispatchName:"editor",tabCharacter:"    ",startEditing:function(target,value,editor){this.stopEditing();
                                  -if(hasClass(target,"insertBefore")||hasClass(target,"insertAfter")){return
                                  -}var panel=Firebug.getElementPanel(target);
                                  -if(!panel.editable){return
                                  -}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.startEditing "+value,target)
                                  -}defaultValue=target.getAttribute("defaultValue");
                                  -if(value==undefined){var textContent=isIE?"innerText":"textContent";
                                  -value=target[textContent];
                                  -if(value==defaultValue){value=""
                                  -}}originalValue=previousValue=value;
                                  -invalidEditor=false;
                                  -currentTarget=target;
                                  -currentPanel=panel;
                                  -currentGroup=getAncestorByClass(target,"editGroup");
                                  -currentPanel.editing=true;
                                  -var panelEditor=currentPanel.getEditor(target,value);
                                  -currentEditor=editor?editor:panelEditor;
                                  -if(!currentEditor){currentEditor=getDefaultEditor(currentPanel)
                                  -}var inlineParent=getInlineParent(target);
                                  -var targetSize=getOffsetSize(inlineParent);
                                  -setClass(panel.panelNode,"editing");
                                  -setClass(target,"editing");
                                  -if(currentGroup){setClass(currentGroup,"editing")
                                  -}currentEditor.show(target,currentPanel,value,targetSize);
                                  -currentEditor.beginEditing(target,value);
                                  -if(FBTrace.DBG_EDITOR){FBTrace.sysout("Editor start panel "+currentPanel.name)
                                  -}this.attachListeners(currentEditor,panel.context)
                                  -},stopEditing:function(cancel){if(!currentTarget){return
                                  -}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.stopEditing cancel:"+cancel+" saveTimeout: "+this.saveTimeout)
                                  -}clearTimeout(this.saveTimeout);
                                  -delete this.saveTimeout;
                                  -this.detachListeners(currentEditor,currentPanel.context);
                                  -removeClass(currentPanel.panelNode,"editing");
                                  -removeClass(currentTarget,"editing");
                                  -if(currentGroup){removeClass(currentGroup,"editing")
                                  -}var value=currentEditor.getValue();
                                  -if(value==defaultValue){value=""
                                  -}var removeGroup=currentEditor.endEditing(currentTarget,value,cancel);
                                  -try{if(cancel){if(value!=originalValue){this.saveEditAndNotifyListeners(currentTarget,originalValue,previousValue)
                                  -}if(removeGroup&&!originalValue&&currentGroup){currentGroup.parentNode.removeChild(currentGroup)
                                  -}}else{if(!value){this.saveEditAndNotifyListeners(currentTarget,null,previousValue);
                                  -if(removeGroup&&currentGroup){currentGroup.parentNode.removeChild(currentGroup)
                                  -}}else{this.save(value)
                                  -}}}catch(exc){}currentEditor.hide();
                                  -currentPanel.editing=false;
                                  -currentTarget=null;
                                  -currentGroup=null;
                                  -currentPanel=null;
                                  -currentEditor=null;
                                  -originalValue=null;
                                  -invalidEditor=false;
                                  -return value
                                  -},cancelEditing:function(){return this.stopEditing(true)
                                  -},update:function(saveNow){if(this.saveTimeout){clearTimeout(this.saveTimeout)
                                  -}invalidEditor=true;
                                  -currentEditor.layout();
                                  -if(saveNow){this.save()
                                  -}else{var context=currentPanel.context;
                                  -this.saveTimeout=context.setTimeout(bindFixed(this.save,this),saveTimeout);
                                  -if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout)
                                  -}}},save:function(value){if(!invalidEditor){return
                                  -}if(value==undefined){value=currentEditor.getValue()
                                  -}if(FBTrace.DBG_EDITOR){FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"))
                                  -}try{this.saveEditAndNotifyListeners(currentTarget,value,previousValue);
                                  -previousValue=value;
                                  -invalidEditor=false
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("editor.save FAILS "+exc,exc)
                                  -}}},saveEditAndNotifyListeners:function(currentTarget,value,previousValue){currentEditor.saveEdit(currentTarget,value,previousValue)
                                  -},setEditTarget:function(element){if(!element){dispatch([Firebug.A11yModel],"onInlineEditorClose",[currentPanel,currentTarget,true]);
                                  -this.stopEditing()
                                  -}else{if(hasClass(element,"insertBefore")){this.insertRow(element,"before")
                                  -}else{if(hasClass(element,"insertAfter")){this.insertRow(element,"after")
                                  -}else{this.startEditing(element)
                                  -}}}},tabNextEditor:function(){if(!currentTarget){return
                                  -}var value=currentEditor.getValue();
                                  -var nextEditable=currentTarget;
                                  -do{nextEditable=!value&&currentGroup?getNextOutsider(nextEditable,currentGroup):getNextByClass(nextEditable,"editable")
                                  -}while(nextEditable&&!nextEditable.offsetHeight);
                                  -this.setEditTarget(nextEditable)
                                  -},tabPreviousEditor:function(){if(!currentTarget){return
                                  -}var value=currentEditor.getValue();
                                  -var prevEditable=currentTarget;
                                  -do{prevEditable=!value&&currentGroup?getPreviousOutsider(prevEditable,currentGroup):getPreviousByClass(prevEditable,"editable")
                                  -}while(prevEditable&&!prevEditable.offsetHeight);
                                  -this.setEditTarget(prevEditable)
                                  -},insertRow:function(relative,insertWhere){var group=relative||getAncestorByClass(currentTarget,"editGroup")||currentTarget;
                                  -var value=this.stopEditing();
                                  -currentPanel=Firebug.getElementPanel(group);
                                  -currentEditor=currentPanel.getEditor(group,value);
                                  -if(!currentEditor){currentEditor=getDefaultEditor(currentPanel)
                                  -}currentGroup=currentEditor.insertNewRow(group,insertWhere);
                                  -if(!currentGroup){return
                                  -}var editable=hasClass(currentGroup,"editable")?currentGroup:getNextByClass(currentGroup,"editable");
                                  -if(editable){this.setEditTarget(editable)
                                  -}},insertRowForObject:function(relative){var container=getAncestorByClass(relative,"insertInto");
                                  -if(container){relative=getChildByClass(container,"insertBefore");
                                  -if(relative){this.insertRow(relative,"before")
                                  -}}},attachListeners:function(editor,context){var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView;
                                  -addEvent(win,"resize",this.onResize);
                                  -addEvent(win,"blur",this.onBlur);
                                  -var chrome=Firebug.chrome;
                                  -this.listeners=[chrome.keyCodeListen("ESCAPE",null,bind(this.cancelEditing,this))];
                                  -if(editor.arrowCompletion){this.listeners.push(chrome.keyCodeListen("UP",null,bindFixed(editor.completeValue,editor,-1)),chrome.keyCodeListen("DOWN",null,bindFixed(editor.completeValue,editor,1)),chrome.keyCodeListen("PAGE_UP",null,bindFixed(editor.completeValue,editor,-pageAmount)),chrome.keyCodeListen("PAGE_DOWN",null,bindFixed(editor.completeValue,editor,pageAmount)))
                                  -}if(currentEditor.tabNavigation){this.listeners.push(chrome.keyCodeListen("RETURN",null,bind(this.tabNextEditor,this)),chrome.keyCodeListen("RETURN",isControl,bind(this.insertRow,this,null,"after")),chrome.keyCodeListen("TAB",null,bind(this.tabNextEditor,this)),chrome.keyCodeListen("TAB",isShift,bind(this.tabPreviousEditor,this)))
                                  -}else{if(currentEditor.multiLine){this.listeners.push(chrome.keyCodeListen("TAB",null,insertTab))
                                  -}else{this.listeners.push(chrome.keyCodeListen("RETURN",null,bindFixed(this.stopEditing,this)));
                                  -if(currentEditor.tabCompletion){this.listeners.push(chrome.keyCodeListen("TAB",null,bind(editor.completeValue,editor,1)),chrome.keyCodeListen("TAB",isShift,bind(editor.completeValue,editor,-1)))
                                  -}}}},detachListeners:function(editor,context){if(!this.listeners){return
                                  -}var win=isIE?currentTarget.ownerDocument.parentWindow:currentTarget.ownerDocument.defaultView;
                                  -removeEvent(win,"resize",this.onResize);
                                  -removeEvent(win,"blur",this.onBlur);
                                  -var chrome=Firebug.chrome;
                                  -if(chrome){for(var i=0;
                                  -i<this.listeners.length;
                                  -++i){chrome.keyIgnore(this.listeners[i])
                                  -}}delete this.listeners
                                  -},onResize:function(event){currentEditor.layout(true)
                                  -},onBlur:function(event){if(currentEditor.enterOnBlur&&isAncestor(event.target,currentEditor.box)){this.stopEditing()
                                  -}},initialize:function(){Firebug.Module.initialize.apply(this,arguments);
                                  -this.onResize=bindFixed(this.onResize,this);
                                  -this.onBlur=bind(this.onBlur,this)
                                  -},disable:function(){this.stopEditing()
                                  -},showContext:function(browser,context){this.stopEditing()
                                  -},showPanel:function(browser,panel){this.stopEditing()
                                  -}});
                                  -Firebug.BaseEditor=extend(Firebug.MeasureBox,{getValue:function(){},setValue:function(value){},show:function(target,panel,value,textSize,targetSize){},hide:function(){},layout:function(forceAll){},getContextMenuItems:function(target){var items=[];
                                  -items.push({label:"Cut",commandID:"cmd_cut"});
                                  -items.push({label:"Copy",commandID:"cmd_copy"});
                                  -items.push({label:"Paste",commandID:"cmd_paste"});
                                  -return items
                                  -},beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true
                                  -},insertNewRow:function(target,insertWhere){}});
                                  -var inlineEditorAttributes={"class":"textEditorInner",type:"text",spellcheck:"false",onkeypress:"$onKeyPress",onoverflow:"$onOverflow",oncontextmenu:"$onContextMenu"};
                                  -if(isIE){inlineEditorAttributes.onpropertychange="$onInput";
                                  -inlineEditorAttributes.onkeydown="$onKeyDown"
                                  -}else{inlineEditorAttributes.oninput="$onInput"
                                  -}Firebug.InlineEditor=function(doc){this.initializeInline(doc)
                                  -};
                                  -Firebug.InlineEditor.prototype=domplate(Firebug.BaseEditor,{enterOnBlur:true,outerMargin:8,shadowExpand:7,tag:DIV({"class":"inlineEditor"},DIV({"class":"textEditorTop1"},DIV({"class":"textEditorTop2"})),DIV({"class":"textEditorInner1"},DIV({"class":"textEditorInner2"},INPUT(inlineEditorAttributes))),DIV({"class":"textEditorBottom1"},DIV({"class":"textEditorBottom2"}))),inputTag:INPUT({"class":"textEditorInner",type:"text",onkeypress:"$onKeyPress",onoverflow:"$onOverflow"}),expanderTag:IMG({"class":"inlineExpander",src:"blank.gif"}),initialize:function(){this.fixedWidth=false;
                                  -this.completeAsYouType=true;
                                  -this.tabNavigation=true;
                                  -this.multiLine=false;
                                  -this.tabCompletion=false;
                                  -this.arrowCompletion=true;
                                  -this.noWrap=true;
                                  -this.numeric=false
                                  -},destroy:function(){this.destroyInput()
                                  -},initializeInline:function(doc){if(FBTrace.DBG_EDITOR){FBTrace.sysout("Firebug.InlineEditor initializeInline()")
                                  -}this.box=this.tag.append({},doc.body,this);
                                  -this.input=this.box.getElementsByTagName("input")[0];
                                  -if(isIElt8){this.input.style.top="-8px"
                                  -}this.expander=this.expanderTag.replace({},doc,this);
                                  -this.initialize()
                                  -},destroyInput:function(){},getValue:function(){return this.input.value
                                  -},setValue:function(value){return this.input.value=stripNewLines(value)
                                  -},show:function(target,panel,value,targetSize){this.target=target;
                                  -this.panel=panel;
                                  -this.targetSize=targetSize;
                                  -var innerHTML=target.innerHTML;
                                  -var isEmptyElement=!innerHTML;
                                  -if(isEmptyElement){target.innerHTML="."
                                  -}this.targetOffset={x:target.offsetLeft,y:target.offsetTop};
                                  -if(isEmptyElement){target.innerHTML=innerHTML
                                  -}this.originalClassName=this.box.className;
                                  -var classNames=target.className.split(" ");
                                  -for(var i=0;
                                  -i<classNames.length;
                                  -++i){setClass(this.box,"editor-"+classNames[i])
                                  -}copyTextStyles(target,this.box);
                                  -this.setValue(value);
                                  -if(this.fixedWidth){this.updateLayout(true)
                                  -}else{this.startMeasuring(target);
                                  -this.textSize=this.measureInputText(value);
                                  -var parent=this.input.parentNode;
                                  -if(hasClass(parent,"textEditorInner2")){var yDiff=this.textSize.height-this.shadowExpand;
                                  -if(isIE6){yDiff-=2
                                  -}parent.style.height=yDiff+"px";
                                  -parent.parentNode.style.height=yDiff+"px"
                                  -}this.updateLayout(true)
                                  -}this.getAutoCompleter().reset();
                                  -if(isIElt8){panel.panelNode.appendChild(this.box)
                                  -}else{target.offsetParent.appendChild(this.box)
                                  -}if(isIE){this.input.style.fontFamily="Monospace";
                                  -this.input.style.fontSize="11px"
                                  -}if(!this.fixedWidth){copyBoxStyles(target,this.expander);
                                  -target.parentNode.replaceChild(this.expander,target);
                                  -collapse(target,true);
                                  -this.expander.parentNode.insertBefore(target,this.expander)
                                  -}this.box.style.display="block";
                                  -var self=this;
                                  -setTimeout(function(){self.input.focus();
                                  -self.input.select()
                                  -},0)
                                  -},hide:function(){this.box.className=this.originalClassName;
                                  -if(!this.fixedWidth){this.stopMeasuring();
                                  -collapse(this.target,false);
                                  -if(this.expander.parentNode){this.expander.parentNode.removeChild(this.expander)
                                  -}}if(this.box.parentNode){this.input.blur();
                                  -this.box.parentNode.removeChild(this.box)
                                  -}delete this.target;
                                  -delete this.panel
                                  -},layout:function(forceAll){if(!this.fixedWidth){this.textSize=this.measureInputText(this.input.value)
                                  -}if(forceAll){this.targetOffset=getClientOffset(this.expander)
                                  -}this.updateLayout(false,forceAll)
                                  -},beginEditing:function(target,value){},saveEdit:function(target,value,previousValue){},endEditing:function(target,value,cancel){return true
                                  -},insertNewRow:function(target,insertWhere){},advanceToNext:function(target,charCode){return false
                                  -},getAutoCompleteRange:function(value,offset){},getAutoCompleteList:function(preExpr,expr,postExpr){},getAutoCompleter:function(){if(!this.autoCompleter){this.autoCompleter=new Firebug.AutoCompleter(null,bind(this.getAutoCompleteRange,this),bind(this.getAutoCompleteList,this),true,false)
                                  -}return this.autoCompleter
                                  -},completeValue:function(amt){var selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,true,amt<0);
                                  -if(selectRangeCallback){Firebug.Editor.update(true);
                                  -if(isSafari){setTimeout(selectRangeCallback,0)
                                  -}else{selectRangeCallback()
                                  -}}else{this.incrementValue(amt)
                                  -}},incrementValue:function(amt){var value=this.input.value;
                                  -if(isIE){var start=getInputSelectionStart(this.input),end=start
                                  -}else{var start=this.input.selectionStart,end=this.input.selectionEnd
                                  -}var range=this.getAutoCompleteRange(value,start);
                                  -if(!range||range.type!="int"){range={start:0,end:value.length-1}
                                  -}var expr=value.substr(range.start,range.end-range.start+1);
                                  -preExpr=value.substr(0,range.start);
                                  -postExpr=value.substr(range.end+1);
                                  -var intValue=parseInt(expr);
                                  -if(!!intValue||intValue==0){var m=/\d+/.exec(expr);
                                  -var digitPost=expr.substr(m.index+m[0].length);
                                  -var completion=intValue-amt;
                                  -this.input.value=preExpr+completion+digitPost+postExpr;
                                  -setSelectionRange(this.input,start,end);
                                  -Firebug.Editor.update(true);
                                  -return true
                                  -}else{return false
                                  -}},onKeyPress:function(event){if(event.keyCode==27&&!this.completeAsYouType){var reverted=this.getAutoCompleter().revert(this.input);
                                  -if(reverted){cancelEvent(event)
                                  -}}else{if(event.charCode&&this.advanceToNext(this.target,event.charCode)){Firebug.Editor.tabNextEditor();
                                  -cancelEvent(event)
                                  -}else{if(this.numeric&&event.charCode&&(event.charCode<48||event.charCode>57)&&event.charCode!=45&&event.charCode!=46){FBL.cancelEvent(event)
                                  -}else{this.ignoreNextInput=event.keyCode==8
                                  -}}}},onOverflow:function(){this.updateLayout(false,false,3)
                                  -},onKeyDown:function(event){if(event.keyCode>46||event.keyCode==32||event.keyCode==8){this.keyDownPressed=true
                                  -}},onInput:function(event){if(isIE){if(event.propertyName!="value"||!isVisible(this.input)||!this.keyDownPressed){return
                                  -}this.keyDownPressed=false
                                  -}var selectRangeCallback;
                                  -if(this.ignoreNextInput){this.ignoreNextInput=false;
                                  -this.getAutoCompleter().reset()
                                  -}else{if(this.completeAsYouType){selectRangeCallback=this.getAutoCompleter().complete(currentPanel.context,this.input,false)
                                  -}else{this.getAutoCompleter().reset()
                                  -}}Firebug.Editor.update();
                                  -if(selectRangeCallback){if(isSafari){setTimeout(selectRangeCallback,0)
                                  -}else{selectRangeCallback()
                                  -}}},onContextMenu:function(event){cancelEvent(event);
                                  -var popup=$("fbInlineEditorPopup");
                                  -FBL.eraseNode(popup);
                                  -var target=event.target||event.srcElement;
                                  -var menu=this.getContextMenuItems(target);
                                  -if(menu){for(var i=0;
                                  -i<menu.length;
                                  -++i){FBL.createMenuItem(popup,menu[i])
                                  -}}if(!popup.firstChild){return false
                                  -}popup.openPopupAtScreen(event.screenX,event.screenY,true);
                                  -return true
                                  -},updateLayout:function(initial,forceAll,extraWidth){if(this.fixedWidth){this.box.style.left=(this.targetOffset.x)+"px";
                                  -this.box.style.top=(this.targetOffset.y)+"px";
                                  -var w=this.target.offsetWidth;
                                  -var h=this.target.offsetHeight;
                                  -this.input.style.width=w+"px";
                                  -this.input.style.height=(h-3)+"px"
                                  -}else{if(initial||forceAll){this.box.style.left=this.targetOffset.x+"px";
                                  -this.box.style.top=this.targetOffset.y+"px"
                                  -}var approxTextWidth=this.textSize.width;
                                  -var maxWidth=(currentPanel.panelNode.scrollWidth-this.targetOffset.x)-this.outerMargin;
                                  -var wrapped=initial?this.noWrap&&this.targetSize.height>this.textSize.height+3:this.noWrap&&approxTextWidth>maxWidth;
                                  -if(wrapped){var style=isIE?this.target.currentStyle:this.target.ownerDocument.defaultView.getComputedStyle(this.target,"");
                                  -targetMargin=parseInt(style.marginLeft)+parseInt(style.marginRight);
                                  -approxTextWidth=maxWidth-targetMargin;
                                  -this.input.style.width="100%";
                                  -this.box.style.width=approxTextWidth+"px"
                                  -}else{var charWidth=this.measureInputText("m").width;
                                  -if(extraWidth){charWidth*=extraWidth
                                  -}var inputWidth=approxTextWidth+charWidth;
                                  -if(initial){if(isIE){var xDiff=13;
                                  -this.box.style.width=(inputWidth+xDiff)+"px"
                                  -}else{this.box.style.width="auto"
                                  -}}else{var xDiff=isIE?13:this.box.scrollWidth-this.input.offsetWidth;
                                  -this.box.style.width=(inputWidth+xDiff)+"px"
                                  -}this.input.style.width=inputWidth+"px"
                                  -}this.expander.style.width=approxTextWidth+"px";
                                  -this.expander.style.height=Math.max(this.textSize.height-3,0)+"px"
                                  -}if(forceAll){scrollIntoCenterView(this.box,null,true)
                                  -}}});
                                  -Firebug.AutoCompleter=function(getExprOffset,getRange,evaluator,selectMode,caseSensitive){var candidates=null;
                                  -var originalValue=null;
                                  -var originalOffset=-1;
                                  -var lastExpr=null;
                                  -var lastOffset=-1;
                                  -var exprOffset=0;
                                  -var lastIndex=0;
                                  -var preParsed=null;
                                  -var preExpr=null;
                                  -var postExpr=null;
                                  -this.revert=function(textBox){if(originalOffset!=-1){textBox.value=originalValue;
                                  -setSelectionRange(textBox,originalOffset,originalOffset);
                                  -this.reset();
                                  -return true
                                  -}else{this.reset();
                                  -return false
                                  -}};
                                  -this.reset=function(){candidates=null;
                                  -originalValue=null;
                                  -originalOffset=-1;
                                  -lastExpr=null;
                                  -lastOffset=0;
                                  -exprOffset=0
                                  -};
                                  -this.complete=function(context,textBox,cycle,reverse){var value=textBox.value;
                                  -var offset=getInputSelectionStart(textBox);
                                  -if(isSafari&&!cycle&&offset>=0){offset++
                                  -}if(!selectMode&&originalOffset!=-1){offset=originalOffset
                                  -}if(!candidates||!cycle||offset!=lastOffset){originalOffset=offset;
                                  -originalValue=value;
                                  -var parseStart=getExprOffset?getExprOffset(value,offset,context):0;
                                  -preParsed=value.substr(0,parseStart);
                                  -var parsed=value.substr(parseStart);
                                  -var range=getRange?getRange(parsed,offset-parseStart,context):null;
                                  -if(!range){range={start:0,end:parsed.length-1}
                                  -}var expr=parsed.substr(range.start,range.end-range.start+1);
                                  -preExpr=parsed.substr(0,range.start);
                                  -postExpr=parsed.substr(range.end+1);
                                  -exprOffset=parseStart+range.start;
                                  -if(!cycle){if(!expr){return
                                  -}else{if(lastExpr&&lastExpr.indexOf(expr)!=0){candidates=null
                                  -}else{if(lastExpr&&lastExpr.length>=expr.length){candidates=null;
                                  -lastExpr=expr;
                                  -return
                                  -}}}}lastExpr=expr;
                                  -lastOffset=offset;
                                  -var searchExpr;
                                  -if(expr&&offset!=parseStart+range.end+1){if(cycle){offset=range.start;
                                  -searchExpr=expr;
                                  -expr=""
                                  -}else{return
                                  -}}var values=evaluator(preExpr,expr,postExpr,context);
                                  -if(!values){return
                                  -}if(expr){candidates=[];
                                  -if(caseSensitive){for(var i=0;
                                  -i<values.length;
                                  -++i){var name=values[i];
                                  -if(name.indexOf&&name.indexOf(expr)==0){candidates.push(name)
                                  -}}}else{var lowerExpr=caseSensitive?expr:expr.toLowerCase();
                                  -for(var i=0;
                                  -i<values.length;
                                  -++i){var name=values[i];
                                  -if(name.indexOf&&name.toLowerCase().indexOf(lowerExpr)==0){candidates.push(name)
                                  -}}}lastIndex=reverse?candidates.length-1:0
                                  -}else{if(searchExpr){var searchIndex=-1;
                                  -if(caseSensitive){searchIndex=values.indexOf(expr)
                                  -}else{var lowerExpr=searchExpr.toLowerCase();
                                  -for(var i=0;
                                  -i<values.length;
                                  -++i){var name=values[i];
                                  -if(name&&name.toLowerCase().indexOf(lowerExpr)==0){searchIndex=i;
                                  -break
                                  -}}}if(searchIndex==-1){return this.reset()
                                  -}expr=searchExpr;
                                  -candidates=cloneArray(values);
                                  -lastIndex=searchIndex
                                  -}else{expr="";
                                  -candidates=[];
                                  -for(var i=0;
                                  -i<values.length;
                                  -++i){if(values[i].substr){candidates.push(values[i])
                                  -}}lastIndex=-1
                                  -}}}if(cycle){expr=lastExpr;
                                  -lastIndex+=reverse?-1:1
                                  -}if(!candidates.length){return
                                  -}if(lastIndex>=candidates.length){lastIndex=0
                                  -}else{if(lastIndex<0){lastIndex=candidates.length-1
                                  -}}var completion=candidates[lastIndex];
                                  -var preCompletion=expr.substr(0,offset-exprOffset);
                                  -var postCompletion=completion.substr(offset-exprOffset);
                                  -textBox.value=preParsed+preExpr+preCompletion+postCompletion+postExpr;
                                  -var offsetEnd=preParsed.length+preExpr.length+completion.length;
                                  -return function(){if(selectMode){setSelectionRange(textBox,offset,offsetEnd)
                                  -}else{setSelectionRange(textBox,offsetEnd,offsetEnd)
                                  -}}
                                  -}
                                  -};
                                  -var getDefaultEditor=function getDefaultEditor(panel){if(!defaultEditor){var doc=panel.document;
                                  -defaultEditor=new Firebug.InlineEditor(doc)
                                  -}return defaultEditor
                                  -};
                                  -var getOutsider=function getOutsider(element,group,stepper){var parentGroup=getAncestorByClass(group.parentNode,"editGroup");
                                  -var next;
                                  -do{next=stepper(next||element)
                                  -}while(isAncestor(next,group)||isGroupInsert(next,parentGroup));
                                  -return next
                                  -};
                                  -var isGroupInsert=function isGroupInsert(next,group){return(!group||isAncestor(next,group))&&(hasClass(next,"insertBefore")||hasClass(next,"insertAfter"))
                                  -};
                                  -var getNextOutsider=function getNextOutsider(element,group){return getOutsider(element,group,bind(getNextByClass,FBL,"editable"))
                                  -};
                                  -var getPreviousOutsider=function getPreviousOutsider(element,group){return getOutsider(element,group,bind(getPreviousByClass,FBL,"editable"))
                                  -};
                                  -var getInlineParent=function getInlineParent(element){var lastInline=element;
                                  -for(;
                                  -element;
                                  -element=element.parentNode){var s=isIE?element.currentStyle:element.ownerDocument.defaultView.getComputedStyle(element,"");
                                  -if(s.display!="inline"){return lastInline
                                  -}else{lastInline=element
                                  -}}return null
                                  -};
                                  -var insertTab=function insertTab(){insertTextIntoElement(currentEditor.input,Firebug.Editor.tabCharacter)
                                  -};
                                  -Firebug.registerModule(Firebug.Editor)
                                  -}});
                                  -FBL.ns(function(){with(FBL){if(Env.Options.disableXHRListener){return
                                  -}var XHRSpy=function(){this.requestHeaders=[];
                                  -this.responseHeaders=[]
                                  -};
                                  -XHRSpy.prototype={method:null,url:null,async:null,xhrRequest:null,href:null,loaded:false,logRow:null,responseText:null,requestHeaders:null,responseHeaders:null,sourceLink:null,getURL:function(){return this.href
                                  -}};
                                  -var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS;
                                  -var updateSelfPropertiesIgnore={abort:1,channel:1,getAllResponseHeaders:1,getInterface:1,getResponseHeader:1,mozBackgroundRequest:1,multipart:1,onreadystatechange:1,open:1,send:1,setRequestHeader:1};
                                  -var updateSelfProperties=function(){if(supportsXHRIterator){for(var propName in xhrRequest){if(propName in updateSelfPropertiesIgnore){continue
                                  -}try{var propValue=xhrRequest[propName];
                                  -if(propValue&&!isFunction(propValue)){self[propName]=propValue
                                  -}}catch(E){}}}else{if(xhrRequest.readyState==4){self.status=xhrRequest.status;
                                  -self.statusText=xhrRequest.statusText;
                                  -self.responseText=xhrRequest.responseText;
                                  -self.responseXML=xhrRequest.responseXML
                                  -}}};
                                  -var updateXHRPropertiesIgnore={channel:1,onreadystatechange:1,readyState:1,responseBody:1,responseText:1,responseXML:1,status:1,statusText:1,upload:1};
                                  -var updateXHRProperties=function(){for(var propName in self){if(propName in updateXHRPropertiesIgnore){continue
                                  -}try{var propValue=self[propName];
                                  -if(propValue&&!xhrRequest[propName]){xhrRequest[propName]=propValue
                                  -}}catch(E){}}};
                                  -var logXHR=function(){var row=Firebug.Console.log(spy,null,"spy",Firebug.Spy.XHR);
                                  -if(row){setClass(row,"loading");
                                  -spy.logRow=row
                                  -}};
                                  -var finishXHR=function(){var duration=new Date().getTime()-reqStartTS;
                                  -var success=xhrRequest.status==200;
                                  -var responseHeadersText=xhrRequest.getAllResponseHeaders();
                                  -var responses=responseHeadersText?responseHeadersText.split(/[\n\r]/):[];
                                  -var reHeader=/^(\S+):\s*(.*)/;
                                  -for(var i=0,l=responses.length;
                                  -i<l;
                                  -i++){var text=responses[i];
                                  -var match=text.match(reHeader);
                                  -if(match){var name=match[1];
                                  -var value=match[2];
                                  -if(name=="Content-Type"){spy.mimeType=value
                                  -}spy.responseHeaders.push({name:[name],value:[value]})
                                  -}}with({row:spy.logRow,status:xhrRequest.status==0?"":xhrRequest.status+" "+xhrRequest.statusText,time:duration,success:success}){setTimeout(function(){spy.responseText=xhrRequest.responseText;
                                  -row=row||spy.logRow;
                                  -if(!row){return
                                  -}handleRequestStatus(success,status,time)
                                  -},200)
                                  -}spy.loaded=true;
                                  -updateSelfProperties()
                                  -};
                                  -var handleStateChange=function(){self.readyState=xhrRequest.readyState;
                                  -if(xhrRequest.readyState==4){finishXHR();
                                  -xhrRequest.onreadystatechange=function(){}
                                  -}self.onreadystatechange()
                                  -};
                                  -var handleRequestStatus=function(success,status,time){var row=spy.logRow;
                                  -FBL.removeClass(row,"loading");
                                  -if(!success){FBL.setClass(row,"error")
                                  -}var item=FBL.$$(".spyStatus",row)[0];
                                  -item.innerHTML=status;
                                  -if(time){var item=FBL.$$(".spyTime",row)[0];
                                  -item.innerHTML=time+"ms"
                                  -}};
                                  -this.readyState=0;
                                  -this.onreadystatechange=function(){};
                                  -this.open=function(method,url,async,user,password){updateSelfProperties();
                                  -if(spy.loaded){spy=new XHRSpy()
                                  -}spy.method=method;
                                  -spy.url=url;
                                  -spy.async=async;
                                  -spy.href=url;
                                  -spy.xhrRequest=xhrRequest;
                                  -spy.urlParams=parseURLParamsArray(url);
                                  -try{if(supportsApply){xhrRequest.open.apply(xhrRequest,arguments)
                                  -}else{xhrRequest.open(method,url,async,user,password)
                                  -}}catch(e){}xhrRequest.onreadystatechange=handleStateChange
                                  -};
                                  -this.send=function(data){spy.data=data;
                                  -reqStartTS=new Date().getTime();
                                  -updateXHRProperties();
                                  -try{xhrRequest.send(data)
                                  -}catch(e){}finally{logXHR();
                                  -if(!spy.async){self.readyState=xhrRequest.readyState;
                                  -try{finishXHR()
                                  -}catch(E){}}}};
                                  -this.setRequestHeader=function(header,value){spy.requestHeaders.push({name:[header],value:[value]});
                                  -return xhrRequest.setRequestHeader(header,value)
                                  -};
                                  -this.abort=function(){xhrRequest.abort();
                                  -updateSelfProperties();
                                  -handleRequestStatus(false,"Aborted")
                                  -};
                                  -this.getResponseHeader=function(header){return xhrRequest.getResponseHeader(header)
                                  -};
                                  -this.getAllResponseHeaders=function(){return xhrRequest.getAllResponseHeaders()
                                  -};
                                  -var supportsApply=!isIE6&&xhrRequest&&xhrRequest.open&&typeof xhrRequest.open.apply!="undefined";
                                  -var numberOfXHRProperties=0;
                                  -for(var propName in xhrRequest){numberOfXHRProperties++;
                                  -if(propName in updateSelfPropertiesIgnore){continue
                                  -}try{var propValue=xhrRequest[propName];
                                  -if(isFunction(propValue)){if(typeof self[propName]=="undefined"){this[propName]=(function(name,xhr){return supportsApply?function(){return xhr[name].apply(xhr,arguments)
                                  -}:function(a,b,c,d,e){return xhr[name](a,b,c,d,e)
                                  -}
                                  -})(propName,xhrRequest)
                                  -}}else{this[propName]=propValue
                                  -}}catch(E){}}var supportsXHRIterator=numberOfXHRProperties>0;
                                  -return this
                                  -};
                                  -var _ActiveXObject;
                                  -var isIE6=/msie 6/i.test(navigator.appVersion);
                                  -if(isIE6){_ActiveXObject=window.ActiveXObject;
                                  -var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -window.ActiveXObject=function(name){var error=null;
                                  -try{var activeXObject=new _ActiveXObject(name)
                                  -}catch(e){error=e
                                  -}finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject)
                                  -}else{return activeXObject
                                  -}}else{throw error.message
                                  -}}}
                                  -}if(!isIE6){var _XMLHttpRequest=XMLHttpRequest;
                                  -window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper()
                                  -}
                                  -}FBL.getNativeXHRObject=function(){var xhrObj=false;
                                  -try{xhrObj=new _XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new _ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var reIgnore=/about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval=300;
                                  -var indentWidth=18;
                                  -var cacheSession=null;
                                  -var contexts=new Array();
                                  -var panelName="net";
                                  -var maxQueueRequests=500;
                                  -var activeRequests=[];
                                  -var mimeExtensionMap={txt:"text/plain",html:"text/html",htm:"text/html",xhtml:"text/html",xml:"text/xml",css:"text/css",js:"application/x-javascript",jss:"application/x-javascript",jpg:"image/jpg",jpeg:"image/jpeg",gif:"image/gif",png:"image/png",bmp:"image/bmp",swf:"application/x-shockwave-flash",flv:"video/x-flv"};
                                  -var fileCategories={"undefined":1,html:1,css:1,js:1,xhr:1,image:1,flash:1,txt:1,bin:1};
                                  -var textFileCategories={txt:1,html:1,xhr:1,css:1,js:1};
                                  -var binaryFileCategories={bin:1,flash:1};
                                  -var mimeCategoryMap={"text/plain":"txt","application/octet-stream":"bin","text/html":"html","text/xml":"html","text/css":"css","application/x-javascript":"js","text/javascript":"js","application/javascript":"js","image/jpeg":"image","image/jpg":"image","image/gif":"image","image/png":"image","image/bmp":"image","application/x-shockwave-flash":"flash","video/x-flv":"flash"};
                                  -var binaryCategoryMap={image:1,flash:1};
                                  -Firebug.NetMonitor=extend(Firebug.ActivableModule,{dispatchName:"netMonitor",clear:function(context){var panel=context.getPanel(panelName,true);
                                  -if(panel){panel.clear()
                                  -}},initialize:function(){return;
                                  -this.panelName=panelName;
                                  -Firebug.ActivableModule.initialize.apply(this,arguments);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
                                  -}NetHttpObserver.registerObserver();
                                  -NetHttpActivityObserver.registerObserver();
                                  -Firebug.Debugger.addListener(this.DebuggerListener)
                                  -},shutdown:function(){return;
                                  -prefs.removeObserver(Firebug.prefDomain,this,false);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
                                  -}NetHttpObserver.unregisterObserver();
                                  -NetHttpActivityObserver.unregisterObserver();
                                  -Firebug.Debugger.removeListener(this.DebuggerListener)
                                  -}});
                                  -Firebug.NetMonitor.NetInfoBody=domplate(Firebug.Rep,new Firebug.Listener(),{tag:DIV({"class":"netInfoBody",_repObject:"$file"},TAG("$infoTabs",{file:"$file"}),TAG("$infoBodies",{file:"$file"})),infoTabs:DIV({"class":"netInfoTabs focusRow subFocusRow",role:"tablist"},A({"class":"netInfoParamsTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Params",$collapsed:"$file|hideParams"},$STR("URLParameters")),A({"class":"netInfoHeadersTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Headers"},$STR("Headers")),A({"class":"netInfoPostTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Post",$collapsed:"$file|hidePost"},$STR("Post")),A({"class":"netInfoPutTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Put",$collapsed:"$file|hidePut"},$STR("Put")),A({"class":"netInfoResponseTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Response",$collapsed:"$file|hideResponse"},$STR("Response")),A({"class":"netInfoCacheTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Cache",$collapsed:"$file|hideCache"},$STR("Cache")),A({"class":"netInfoHtmlTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Html",$collapsed:"$file|hideHtml"},$STR("HTML"))),infoBodies:DIV({"class":"netInfoBodies outerFocusRow"},TABLE({"class":"netInfoParamsText netInfoText netInfoParamsTable",role:"tabpanel",cellpadding:0,cellspacing:0},TBODY()),DIV({"class":"netInfoHeadersText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPostText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPutText netInfoText",role:"tabpanel"}),PRE({"class":"netInfoResponseText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoCacheText netInfoText",role:"tabpanel"},TABLE({"class":"netInfoCacheTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("Cache")}))),DIV({"class":"netInfoHtmlText netInfoText",role:"tabpanel"},IFRAME({"class":"netInfoHtmlPreview",role:"document"}))),headerDataTag:FOR("param","$headers",TR({role:"listitem"},TD({"class":"netInfoParamName",role:"presentation"},TAG("$param|getNameTag",{param:"$param"})),TD({"class":"netInfoParamValue",role:"list","aria-label":"$param.name"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line"))))),customTab:A({"class":"netInfo$tabId\\Tab netInfoTab",onclick:"$onClickTab",view:"$tabId",role:"tab"},"$tabTitle"),customBody:DIV({"class":"netInfo$tabId\\Text netInfoText",role:"tabpanel"}),nameTag:SPAN("$param|getParamName"),nameWithTooltipTag:SPAN({title:"$param.name"},"$param|getParamName"),getNameTag:function(param){return(this.getParamName(param)==param.name)?this.nameTag:this.nameWithTooltipTag
                                  -},getParamName:function(param){var limit=25;
                                  -var name=param.name;
                                  -if(name.length>limit){name=name.substr(0,limit)+"..."
                                  -}return name
                                  -},getParamTitle:function(param){var limit=25;
                                  -var name=param.name;
                                  -if(name.length>limit){return name
                                  -}return""
                                  -},hideParams:function(file){return !file.urlParams||!file.urlParams.length
                                  -},hidePost:function(file){return file.method.toUpperCase()!="POST"
                                  -},hidePut:function(file){return file.method.toUpperCase()!="PUT"
                                  -},hideResponse:function(file){return false
                                  -},hideCache:function(file){return true;
                                  -return !file.cacheEntry
                                  -},hideHtml:function(file){return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml")
                                  -},onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement)
                                  -},getParamValueIterator:function(param){return param.value;
                                  -return wrapText(param.value,true)
                                  -},appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle};
                                  -this.customTab.append(args,$$(".netInfoTabs",netInfoBox)[0]);
                                  -this.customBody.append(args,$$(".netInfoBodies",netInfoBox)[0])
                                  -},selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab");
                                  -if(tab){this.selectTab(tab)
                                  -}},selectTab:function(tab){var view=tab.getAttribute("view");
                                  -var netInfoBox=getAncestorByClass(tab,"netInfoBody");
                                  -var selectedTab=netInfoBox.selectedTab;
                                  -if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected");
                                  -removeClass(selectedTab,"netInfoTabSelected");
                                  -selectedTab.setAttribute("aria-selected","false")
                                  -}var textBodyName="netInfo"+view+"Text";
                                  -selectedTab=netInfoBox.selectedTab=tab;
                                  -netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0];
                                  -setClass(netInfoBox.selectedText,"netInfoTextSelected");
                                  -setClass(selectedTab,"netInfoTabSelected");
                                  -selectedTab.setAttribute("selected","true");
                                  -selectedTab.setAttribute("aria-selected","true");
                                  -var file=Firebug.getRepObject(netInfoBox);
                                  -var context=Firebug.chrome;
                                  -this.updateInfo(netInfoBox,file,context)
                                  -},updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file)
                                  -}if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file)
                                  -}return
                                  -}var tab=netInfoBox.selectedTab;
                                  -if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true;
                                  -this.insertHeaderRows(netInfoBox,file.urlParams,"Params")
                                  -}}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0];
                                  -if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true;
                                  -NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders")
                                  -}if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true;
                                  -NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders")
                                  -}}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true;
                                  -var postText=$$(".netInfoPostText",netInfoBox)[0];
                                  -NetInfoPostData.render(context,postText,file)
                                  -}}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true;
                                  -var putText=$$(".netInfoPutText",netInfoBox)[0];
                                  -NetInfoPostData.render(context,putText,file)
                                  -}}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0];
                                  -if(file.category=="image"){netInfoBox.responsePresented=true;
                                  -var responseImage=netInfoBox.ownerDocument.createElement("img");
                                  -responseImage.src=file.href;
                                  -clearNode(responseTextBox);
                                  -responseTextBox.appendChild(responseImage,responseTextBox)
                                  -}else{this.setResponseText(file,netInfoBox,responseTextBox,context)
                                  -}}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -if(file.cacheEntry){netInfoBox.cachePresented=true;
                                  -this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache")
                                  -}}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true;
                                  -var text=Utils.getResponseText(file,context);
                                  -var iframe=$$(".netInfoHtmlPreview",netInfoBox)[0];
                                  -var reScript=/<script(.|\s)*?\/script>/gi;
                                  -text=text.replace(reScript,"");
                                  -iframe.contentWindow.document.write(text);
                                  -iframe.contentWindow.document.close()
                                  -}}}}}}}dispatch(NetInfoBody.fbListeners,"updateTabBody",[netInfoBox,file,context])
                                  -},setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true;
                                  -if(isIE){responseTextBox.style.whiteSpace="nowrap"
                                  -}responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText;
                                  -return;
                                  -var text=Utils.getResponseText(file,context);
                                  -var limit=Firebug.netDisplayedResponseLimit+15;
                                  -var limitReached=text?(text.length>limit):false;
                                  -if(limitReached){text=text.substr(0,limit)+"..."
                                  -}if(text){insertWrappedText(text,responseTextBox)
                                  -}else{insertWrappedText("",responseTextBox)
                                  -}if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true);
                                  -panel.openResponseInTab(file)
                                  -}};
                                  -Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox)
                                  -}netInfoBox.responsePresented=true;
                                  -if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated")
                                  -}},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return
                                  -}var headersTable=$$(".netInfo"+tableName+"Table",netInfoBox)[0];
                                  -var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body");
                                  -if(!tbody){tbody=headersTable.firstChild
                                  -}var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title");
                                  -this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody);
                                  -removeClass(titleRow,"collapsed")
                                  -}});
                                  -var NetInfoBody=Firebug.NetMonitor.NetInfoBody;
                                  -Firebug.NetMonitor.NetInfoHeaders=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoHeadersTable",role:"tabpanel"},DIV({"class":"netInfoHeadersGroup netInfoResponseHeadersTitle"},SPAN($STR("ResponseHeaders")),SPAN({"class":"netHeadersViewSource response collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"ResponseHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoResponseHeadersBody",role:"list","aria-label":$STR("ResponseHeaders")})),DIV({"class":"netInfoHeadersGroup netInfoRequestHeadersTitle"},SPAN($STR("RequestHeaders")),SPAN({"class":"netHeadersViewSource request collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"RequestHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoRequestHeadersBody",role:"list","aria-label":$STR("RequestHeaders")}))),sourceTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},PRE({"class":"source"}))),onViewSource:function(event){var target=event.target;
                                  -var requestHeaders=(target.rowName=="RequestHeaders");
                                  -var netInfoBox=getAncestorByClass(target,"netInfoBody");
                                  -var file=netInfoBox.repObject;
                                  -if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders;
                                  -this.insertHeaderRows(netInfoBox,headers,target.rowName);
                                  -target.innerHTML=$STR("net.headers.view source")
                                  -}else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText;
                                  -this.insertSource(netInfoBox,source,target.rowName);
                                  -target.innerHTML=$STR("net.headers.pretty print")
                                  -}target.sourceDisplayed=!target.sourceDisplayed;
                                  -cancelEvent(event)
                                  -},insertSource:function(netInfoBox,source,rowName){var tbody=$$(".netInfo"+rowName+"Body",netInfoBox)[0];
                                  -var node=this.sourceTag.replace({},tbody);
                                  -var sourceNode=$$(".source",node)[0];
                                  -sourceNode.innerHTML=source
                                  -},insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0];
                                  -var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0];
                                  -clearNode(tbody);
                                  -if(!headers.length){return
                                  -}NetInfoBody.headerDataTag.insertRows({headers:headers},tbody);
                                  -var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title");
                                  -removeClass(titleRow,"collapsed")
                                  -},init:function(parent){var rootNode=this.tag.append({},parent);
                                  -var netInfoBox=getAncestorByClass(parent,"netInfoBody");
                                  -var file=netInfoBox.repObject;
                                  -var viewSource;
                                  -viewSource=$$(".request",rootNode)[0];
                                  -if(file.requestHeadersText){removeClass(viewSource,"collapsed")
                                  -}viewSource=$$(".response",rootNode)[0];
                                  -if(file.responseHeadersText){removeClass(viewSource,"collapsed")
                                  -}},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent)
                                  -}this.insertHeaderRows(parent,headers,rowName)
                                  -}});
                                  -var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders;
                                  -Firebug.NetMonitor.NetInfoPostData=domplate(Firebug.Rep,{paramsTable:TABLE({"class":"netInfoPostParamsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parameters")},TR({"class":"netInfoPostParamsTitle",role:"presentation"},TD({colspan:3,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parameters"),SPAN({"class":"netInfoPostContentType"},"application/x-www-form-urlencoded")))))),partsTable:TABLE({"class":"netInfoPostPartsTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Parts")},TR({"class":"netInfoPostPartsTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("net.label.Parts"),SPAN({"class":"netInfoPostContentType"},"multipart/form-data")))))),jsonTable:TABLE({"class":"netInfoPostJSONTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("JSON")},TR({"class":"netInfoPostJSONTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("JSON")))),TR(TD({"class":"netInfoPostJSONBody"})))),xmlTable:TABLE({"class":"netInfoPostXMLTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("xmlviewer.tab.XML")},TR({"class":"netInfoPostXMLTitle",role:"presentation"},TD({role:"presentation"},DIV({"class":"netInfoPostParams"},$STR("xmlviewer.tab.XML")))),TR(TD({"class":"netInfoPostXMLBody"})))),sourceTable:TABLE({"class":"netInfoPostSourceTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("net.label.Source")},TR({"class":"netInfoPostSourceTitle",role:"presentation"},TD({colspan:2,role:"presentation"},DIV({"class":"netInfoPostSource"},$STR("net.label.Source")))))),sourceBodyTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line")))),getParamValueIterator:function(param){return NetInfoBody.getParamValueIterator(param)
                                  -},render:function(context,parentNode,file){var spy=getAncestorByClass(parentNode,"spyHead");
                                  -var spyObject=spy.repObject;
                                  -var data=spyObject.data;
                                  -var contentType=file.mimeType;
                                  -if(contentType&&contentType=="application/x-www-form-urlencoded"||data&&data.indexOf("=")!=-1){var params=parseURLEncodedTextArray(data);
                                  -if(params){this.insertParameters(parentNode,params)
                                  -}}var jsonData={responseText:data};
                                  -if(Firebug.JSONViewerModel.isJSON(contentType,data)){this.insertJSON(parentNode,jsonData,context)
                                  -}var postText=data;
                                  -if(postText){this.insertSource(parentNode,postText)
                                  -}},insertParameters:function(parentNode,params){if(!params||!params.length){return
                                  -}var paramTable=this.paramsTable.append({object:{}},parentNode);
                                  -var row=$$(".netInfoPostParamsTitle",paramTable)[0];
                                  -var tbody=paramTable.getElementsByTagName("tbody")[0];
                                  -NetInfoBody.headerDataTag.insertRows({headers:params},row)
                                  -},insertParts:function(parentNode,data){if(!data.params||!data.params.length){return
                                  -}var partsTable=this.partsTable.append({object:{}},parentNode);
                                  -var row=$$(".netInfoPostPartsTitle",paramTable)[0];
                                  -NetInfoBody.headerDataTag.insertRows({headers:data.params},row)
                                  -},insertJSON:function(parentNode,file,context){var text=file.responseText;
                                  -var data=parseJSONString(text);
                                  -if(!data){return
                                  -}var jsonTable=this.jsonTable.append({},parentNode);
                                  -var jsonBody=$$(".netInfoPostJSONBody",jsonTable)[0];
                                  -if(!this.toggles){this.toggles={}
                                  -}Firebug.DOMPanel.DirTable.tag.replace({object:data,toggles:this.toggles},jsonBody)
                                  -},insertXML:function(parentNode,file,context){var text=Utils.getPostText(file,context);
                                  -var jsonTable=this.xmlTable.append(null,parentNode);
                                  -var jsonBody=$$(".netInfoPostXMLBody",jsonTable)[0];
                                  -Firebug.XMLViewerModel.insertXML(jsonBody,text)
                                  -},insertSource:function(parentNode,text){var sourceTable=this.sourceTable.append({object:{}},parentNode);
                                  -var row=$$(".netInfoPostSourceTitle",sourceTable)[0];
                                  -var param={value:[text]};
                                  -this.sourceBodyTag.insertRows({param:param},row)
                                  -},parseMultiPartText:function(file,context){var text=Utils.getPostText(file,context);
                                  -if(text==undefined){return null
                                  -}FBTrace.sysout("net.parseMultiPartText; boundary: ",text);
                                  -var boundary=text.match(/\s*boundary=\s*(.*)/)[1];
                                  -var divider="\r\n\r\n";
                                  -var bodyStart=text.indexOf(divider);
                                  -var body=text.substr(bodyStart+divider.length);
                                  -var postData={};
                                  -postData.mimeType="multipart/form-data";
                                  -postData.params=[];
                                  -var parts=body.split("--"+boundary);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -i++){var part=parts[i].split(divider);
                                  -if(part.length!=2){continue
                                  -}var m=part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -postData.params.push({name:(m&&m.length>1)?m[1]:"",value:trim(part[1])})
                                  -}return postData
                                  -}});
                                  -var NetInfoPostData=Firebug.NetMonitor.NetInfoPostData;
                                  -var $STRP=function(a){return a
                                  -};
                                  -Firebug.NetMonitor.NetLimit=domplate(Firebug.Rep,{collapsed:true,tableTag:DIV(TABLE({width:"100%",cellpadding:0,cellspacing:0},TBODY())),limitTag:TR({"class":"netRow netLimitRow",$collapsed:"$isCollapsed"},TD({"class":"netCol netLimitCol",colspan:6},TABLE({cellpadding:0,cellspacing:0},TBODY(TR(TD(SPAN({"class":"netLimitLabel"},$STRP("plural.Limit_Exceeded",[0]))),TD({style:"width:100%"}),TD(BUTTON({"class":"netLimitButton",title:"$limitPrefsTitle",onclick:"$onPreferences"},$STR("LimitPrefs"))),TD("&nbsp;")))))),isCollapsed:function(){return this.collapsed
                                  -},onPreferences:function(event){openNewTab("about:config")
                                  -},updateCounter:function(row){removeClass(row,"collapsed");
                                  -var limitLabel=row.getElementsByClassName("netLimitLabel").item(0);
                                  -limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount])
                                  -},createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent);
                                  -var row=this.createRow(table.firstChild.firstChild,limitInfo);
                                  -return[table,row]
                                  -},createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0];
                                  -row.limitInfo=limitInfo;
                                  -return row
                                  -},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return
                                  -}if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit()
                                  -}},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit");
                                  -maxQueueRequests=value?value:maxQueueRequests
                                  -}});
                                  -var NetLimit=Firebug.NetMonitor.NetLimit;
                                  -Firebug.NetMonitor.ResponseSizeLimit=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoResponseSizeLimit"},SPAN("$object.beforeLink"),A({"class":"objectLink",onclick:"$onClickLink"},"$object.linkText"),SPAN("$object.afterLink")),reLink:/^(.*)<a>(.*)<\/a>(.*$)/,append:function(obj,parent){var m=obj.text.match(this.reLink);
                                  -return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this)
                                  -}});
                                  -Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null
                                  -}name=name.toLowerCase();
                                  -for(var i=0;
                                  -i<headers.length;
                                  -++i){var headerName=headers[i].name.toLowerCase();
                                  -if(headerName==name){return headers[i].value
                                  -}}},formatPostText:function(text){if(text instanceof XMLDocument){return getElementXML(text.documentElement)
                                  -}else{return text
                                  -}},getPostText:function(file,context,noLimit){if(!file.postText){file.postText=readPostTextFromRequest(file.request,context);
                                  -if(!file.postText&&context){file.postText=readPostTextFromPage(file.href,context)
                                  -}}if(!file.postText){return file.postText
                                  -}var limit=Firebug.netDisplayedPostBodyLimit;
                                  -if(file.postText.length>limit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n")
                                  -}return file.postText
                                  -},getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file)
                                  -},isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context);
                                  -if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true
                                  -}var headerValue=Utils.findHeader(file.requestHeaders,"content-type");
                                  -if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true
                                  -}return false
                                  -},isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context);
                                  -if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true
                                  -}return false
                                  -},getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri);
                                  -if(!ext){return mimeType
                                  -}else{var extMimeType=mimeExtensionMap[ext.toLowerCase()];
                                  -return extMimeType?extMimeType:mimeType
                                  -}}else{return mimeType
                                  -}},getDateFromSeconds:function(s){var d=new Date();
                                  -d.setTime(s*1000);
                                  -return d
                                  -},getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel);
                                  -file.status=request.responseStatus;
                                  -file.method=http.requestMethod;
                                  -file.urlParams=parseURLParams(file.href);
                                  -file.mimeType=Utils.getMimeType(request.contentType,request.name);
                                  -if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[];
                                  -http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value})
                                  -}});
                                  -http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value})
                                  -}});
                                  -file.requestHeaders=requestHeaders;
                                  -file.responseHeaders=responseHeaders
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc)
                                  -}}},isXHR:function(request){try{var callbacks=request.notificationCallbacks;
                                  -var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null;
                                  -if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request))
                                  -}return(xhrRequest!=null)
                                  -}catch(exc){}return false
                                  -},getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file)
                                  -}return file.category
                                  -}if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file)
                                  -}return file.category="xhr"
                                  -}if(!file.mimeType){var ext=getFileExtension(file.href);
                                  -if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()]
                                  -}}if(!file.mimeType){return""
                                  -}var mimeType=file.mimeType;
                                  -if(mimeType){mimeType=mimeType.split(";")[0]
                                  -}return(file.category=mimeCategoryMap[mimeType])
                                  -}};
                                  -var Utils=Firebug.NetMonitor.Utils;
                                  -Firebug.registerModule(Firebug.NetMonitor)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var contexts=[];
                                  -Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
                                  -}Firebug.Module.initialize.apply(this,arguments)
                                  -},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
                                  -}},initContext:function(context){context.spies=[];
                                  -if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window)
                                  -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName())
                                  -}},destroyContext:function(context){this.detachObserver(context,null);
                                  -if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName())
                                  -}delete context.spies;
                                  -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName())
                                  -}},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win)
                                  -}},unwatchWindow:function(context,win){try{this.detachObserver(context,win)
                                  -}catch(ex){ERROR(ex)
                                  -}},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver;
                                  -for(var i=0;
                                  -i<TabWatcher.contexts.length;
                                  -++i){var context=TabWatcher.contexts[i];
                                  -iterateWindows(context.window,function(win){tach.apply(this,[context,win])
                                  -})
                                  -}}},skipSpy:function(win){if(!win){return true
                                  -}var uri=safeGetWindowLocation(win);
                                  -if(uri&&(uri.indexOf("about:")==0||uri.indexOf("chrome:")==0)){return true
                                  -}},attachObserver:function(context,win){if(Firebug.Spy.skipSpy(win)){return
                                  -}for(var i=0;
                                  -i<contexts.length;
                                  -++i){if((contexts[i].context==context)&&(contexts[i].win==win)){return
                                  -}}if(contexts.length==0){httpObserver.addObserver(SpyHttpObserver,"firebug-http-event",false);
                                  -SpyHttpActivityObserver.registerObserver()
                                  -}contexts.push({context:context,win:win});
                                  -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.attachObserver (HTTP) "+contexts.length+" ",context.getName())
                                  -}},detachObserver:function(context,win){for(var i=0;
                                  -i<contexts.length;
                                  -++i){if(contexts[i].context==context){if(win&&(contexts[i].win!=win)){continue
                                  -}contexts.splice(i,1);
                                  -if(contexts.length==0){httpObserver.removeObserver(SpyHttpObserver,"firebug-http-event");
                                  -SpyHttpActivityObserver.unregisterObserver()
                                  -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.detachObserver (HTTP) "+contexts.length+" ",context.getName())
                                  -}return
                                  -}}},getXHR:function(request){if(!(request instanceof Ci.nsIHttpChannel)){return null
                                  -}try{var callbacks=request.notificationCallbacks;
                                  -return(callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null)
                                  -}catch(exc){if(exc.name=="NS_NOINTERFACE"){if(FBTrace.DBG_SPY){FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: "+safeGetRequestName(request))
                                  -}}}return null
                                  -}});
                                  -Firebug.Spy.XHR=domplate(Firebug.Rep,{tag:DIV({"class":"spyHead",_repObject:"$object"},TABLE({"class":"spyHeadTable focusRow outerFocusRow",cellpadding:0,cellspacing:0,role:"listitem","aria-expanded":"false"},TBODY({role:"presentation"},TR({"class":"spyRow"},TD({"class":"spyTitleCol spyCol",onclick:"$onToggleBody"},DIV({"class":"spyTitle"},"$object|getCaption"),DIV({"class":"spyFullTitle spyTitle"},"$object|getFullUri")),TD({"class":"spyCol"},DIV({"class":"spyStatus"},"$object|getStatus")),TD({"class":"spyCol"},SPAN({"class":"spyIcon"})),TD({"class":"spyCol"},SPAN({"class":"spyTime"})),TD({"class":"spyCol"},TAG(FirebugReps.SourceLink.tag,{object:"$object.sourceLink"})))))),getCaption:function(spy){return spy.method.toUpperCase()+" "+cropString(spy.getURL(),100)
                                  -},getFullUri:function(spy){return spy.method.toUpperCase()+" "+spy.getURL()
                                  -},getStatus:function(spy){var text="";
                                  -if(spy.statusCode){text+=spy.statusCode+" "
                                  -}if(spy.statusText){return text+=spy.statusText
                                  -}return text
                                  -},onToggleBody:function(event){var target=event.currentTarget||event.srcElement;
                                  -var logRow=getAncestorByClass(target,"logRow-spy");
                                  -if(isLeftClick(event)){toggleClass(logRow,"opened");
                                  -var spy=getChildByClass(logRow,"spyHead").repObject;
                                  -var spyHeadTable=getAncestorByClass(target,"spyHeadTable");
                                  -if(hasClass(logRow,"opened")){updateHttpSpyInfo(spy,logRow);
                                  -if(spyHeadTable){spyHeadTable.setAttribute("aria-expanded","true")
                                  -}}else{}}},copyURL:function(spy){copyToClipboard(spy.getURL())
                                  -},copyParams:function(spy){var text=spy.postText;
                                  -if(!text){return
                                  -}var url=reEncodeURL(spy,text,true);
                                  -copyToClipboard(url)
                                  -},copyResponse:function(spy){copyToClipboard(spy.responseText)
                                  -},openInTab:function(spy){openNewTab(spy.getURL(),spy.postText)
                                  -},supportsObject:function(object){return false;
                                  -return object instanceof Firebug.Spy.XMLHttpRequestSpy
                                  -},browseObject:function(spy,context){var url=spy.getURL();
                                  -openNewTab(url);
                                  -return true
                                  -},getRealObject:function(spy,context){return spy.xhrRequest
                                  -},getContextMenuItems:function(spy){var items=[{label:"CopyLocation",command:bindFixed(this.copyURL,this,spy)}];
                                  -if(spy.postText){items.push({label:"CopyLocationParameters",command:bindFixed(this.copyParams,this,spy)})
                                  -}items.push({label:"CopyResponse",command:bindFixed(this.copyResponse,this,spy)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,spy)});
                                  -return items
                                  -}});
                                  -function updateTime(spy){var timeBox=spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -if(spy.responseTime){timeBox.textContent=" "+formatTime(spy.responseTime)
                                  -}}function updateLogRow(spy){updateTime(spy);
                                  -var statusBox=spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -statusBox.textContent=Firebug.Spy.XHR.getStatus(spy);
                                  -removeClass(spy.logRow,"loading");
                                  -setClass(spy.logRow,"loaded");
                                  -try{var errorRange=Math.floor(spy.xhrRequest.status/100);
                                  -if(errorRange==4||errorRange==5){setClass(spy.logRow,"error")
                                  -}}catch(exc){}}var updateHttpSpyInfo=function updateHttpSpyInfo(spy,logRow){if(!spy.logRow&&logRow){spy.logRow=logRow
                                  -}if(!spy.logRow||!hasClass(spy.logRow,"opened")){return
                                  -}if(!spy.params){spy.params=parseURLParams(spy.href+"")
                                  -}if(!spy.requestHeaders){spy.requestHeaders=getRequestHeaders(spy)
                                  -}if(!spy.responseHeaders&&spy.loaded){spy.responseHeaders=getResponseHeaders(spy)
                                  -}var template=Firebug.NetMonitor.NetInfoBody;
                                  -var netInfoBox=getChildByClass(spy.logRow,"spyHead","netInfoBody");
                                  -if(!netInfoBox){var head=getChildByClass(spy.logRow,"spyHead");
                                  -netInfoBox=template.tag.append({file:spy},head);
                                  -dispatch(template.fbListeners,"initTabBody",[netInfoBox,spy]);
                                  -template.selectTabByName(netInfoBox,"Response")
                                  -}else{template.updateInfo(netInfoBox,spy,spy.context)
                                  -}};
                                  -function getRequestHeaders(spy){var headers=[];
                                  -var channel=spy.xhrRequest.channel;
                                  -if(channel instanceof Ci.nsIHttpChannel){channel.visitRequestHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
                                  -}})
                                  -}return headers
                                  -}function getResponseHeaders(spy){var headers=[];
                                  -try{var channel=spy.xhrRequest.channel;
                                  -if(channel instanceof Ci.nsIHttpChannel){channel.visitResponseHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
                                  -}})
                                  -}}catch(exc){if(FBTrace.DBG_SPY||FBTrace.DBG_ERRORS){FBTrace.sysout("spy.getResponseHeaders; EXCEPTION "+safeGetRequestName(spy.request),exc)
                                  -}}return headers
                                  -}Firebug.registerModule(Firebug.Spy)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var contentTypes={"text/javascript":1,"text/x-javascript":1,"text/json":1,"text/x-json":1,"application/json":1,"application/x-json":1,"application/javascript":1,"application/x-javascript":1,"application/json-rpc":1};
                                  -Firebug.JSONViewerModel=extend(Firebug.Module,{dispatchName:"jsonViewer",initialize:function(){Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -this.toggles={}
                                  -},shutdown:function(){Firebug.NetMonitor.NetInfoBody.removeListener(this)
                                  -},initTabBody:function(infoBox,file){if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody",infoBox)
                                  -}dispatch(this.fbListeners,"onParseJSON",[file]);
                                  -if(!file.jsonObject){if(this.isJSON(file.mimeType,file.responseText)){file.jsonObject=this.parseJSON(file)
                                  -}}if(file.jsonObject&&hasProperties(file.jsonObject)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"JSON",$STR("JSON"));
                                  -if(FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.initTabBody; JSON object available "+(typeof(file.jsonObject)!="undefined"),file.jsonObject)
                                  -}}},isJSON:function(contentType,data){var responseText=data?trim(data):null;
                                  -if(responseText&&responseText.indexOf("{")==0){return true
                                  -}if(!contentType){return false
                                  -}contentType=contentType.split(";")[0];
                                  -contentType=trim(contentType);
                                  -return contentTypes[contentType]
                                  -},updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab;
                                  -var tabBody=$$(".netInfoJSONText",infoBox)[0];
                                  -if(!hasClass(tab,"netInfoJSONTab")||tabBody.updated){return
                                  -}tabBody.updated=true;
                                  -if(file.jsonObject){Firebug.DOMPanel.DirTable.tag.replace({object:file.jsonObject,toggles:this.toggles},tabBody)
                                  -}},parseJSON:function(file){var jsonString=new String(file.responseText);
                                  -return parseJSONString(jsonString)
                                  -}});
                                  -Firebug.registerModule(Firebug.JSONViewerModel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var xmlContentTypes=["text/xml","application/xml","application/xhtml+xml","application/rss+xml","application/atom+xml",,"application/vnd.mozilla.maybe.feed","application/rdf+xml","application/vnd.mozilla.xul+xml"];
                                  -Firebug.XMLViewerModel=extend(Firebug.Module,{dispatchName:"xmlViewer",initialize:function(){Firebug.Module.initialize.apply(this,arguments);
                                  -Firebug.NetMonitor.NetInfoBody.addListener(this)
                                  -},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments);
                                  -Firebug.NetMonitor.NetInfoBody.removeListener(this)
                                  -},initTabBody:function(infoBox,file){if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody",infoBox)
                                  -}if(this.isXML(file.mimeType,file.responseText)){Firebug.NetMonitor.NetInfoBody.appendTab(infoBox,"XML",$STR("XML"));
                                  -if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.initTabBody; XML response available")
                                  -}}},isXML:function(contentType){if(!contentType){return false
                                  -}for(var i=0;
                                  -i<xmlContentTypes.length;
                                  -i++){if(contentType.indexOf(xmlContentTypes[i])==0){return true
                                  -}}return false
                                  -},updateTabBody:function(infoBox,file,context){var tab=infoBox.selectedTab;
                                  -var tabBody=$$(".netInfoXMLText",infoBox)[0];
                                  -if(!hasClass(tab,"netInfoXMLTab")||tabBody.updated){return
                                  -}tabBody.updated=true;
                                  -this.insertXML(tabBody,Firebug.NetMonitor.Utils.getResponseText(file,context))
                                  -},insertXML:function(parentNode,text){var xmlText=text.replace(/^\s*<?.+?>\s*/,"");
                                  -var div=parentNode.ownerDocument.createElement("div");
                                  -div.innerHTML=xmlText;
                                  -var root=div.getElementsByTagName("*")[0];
                                  -if(FBTrace.DBG_XMLVIEWER){FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed",doc)
                                  -}var html=[];
                                  -Firebug.Reps.appendNode(root,html);
                                  -parentNode.innerHTML=html.join("")
                                  -}});
                                  -Firebug.XMLViewerModel.ParseError=domplate(Firebug.Rep,{tag:DIV({"class":"xmlInfoError"},DIV({"class":"xmlInfoErrorMsg"},"$error.message"),PRE({"class":"xmlInfoErrorSource"},"$error|getSource")),getSource:function(error){var parts=error.source.split("\n");
                                  -if(parts.length!=2){return error.source
                                  -}var limit=50;
                                  -var column=parts[1].length;
                                  -if(column>=limit){parts[0]="..."+parts[0].substr(column-limit);
                                  -parts[1]="..."+parts[1].substr(column-limit)
                                  -}if(parts[0].length>80){parts[0]=parts[0].substr(0,80)+"..."
                                  -}return parts.join("\n")
                                  -}});
                                  -Firebug.registerModule(Firebug.XMLViewerModel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var consoleQueue=[];
                                  -var lastHighlightedObject;
                                  -var FirebugContext=Env.browser;
                                  -var maxQueueRequests=500;
                                  -Firebug.ConsoleBase={log:function(object,context,className,rep,noThrottle,sourceLink){return this.logRow(appendObject,object,context,className,rep,sourceLink,noThrottle)
                                  -},logFormatted:function(objects,context,className,noThrottle,sourceLink){return this.logRow(appendFormatted,objects,context,className,null,sourceLink,noThrottle)
                                  -},openGroup:function(objects,context,className,rep,noThrottle,sourceLink,noPush){return this.logRow(appendOpenGroup,objects,context,className,rep,sourceLink,noThrottle)
                                  -},closeGroup:function(context,noThrottle){return this.logRow(appendCloseGroup,null,context,null,null,null,noThrottle,true)
                                  -},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){noThrottle=true;
                                  -if(!context){context=FirebugContext
                                  -}if(FBTrace.DBG_ERRORS&&!context){FBTrace.sysout("Console.logRow has no context, skipping objects",objects)
                                  -}if(!context){return
                                  -}if(noThrottle||!context){var panel=this.getPanel(context);
                                  -if(panel){var row=panel.append(appender,objects,className,rep,sourceLink,noRow);
                                  -var container=panel.panelNode;
                                  -return row
                                  -}else{consoleQueue.push([appender,objects,context,className,rep,sourceLink,noThrottle,noRow])
                                  -}}else{if(!context.throttle){return
                                  -}var args=[appender,objects,context,className,rep,sourceLink,true,noRow];
                                  -context.throttle(this.logRow,this,args)
                                  -}},appendFormatted:function(args,row,context){if(!context){context=FirebugContext
                                  -}var panel=this.getPanel(context);
                                  -panel.appendFormatted(args,row)
                                  -},clear:function(context){if(!context){context=Firebug.context
                                  -}var panel=this.getPanel(context,true);
                                  -if(panel){panel.clear()
                                  -}},getPanel:function(context,noCreate){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -}};
                                  -var ActivableConsole=extend(Firebug.ConsoleBase,{isAlwaysEnabled:function(){return true
                                  -}});
                                  -Firebug.Console=Firebug.Console=extend(ActivableConsole,{dispatchName:"console",error:function(){Firebug.Console.logFormatted(arguments,Firebug.browser,"error")
                                  -},flush:function(){dispatch(this.fbListeners,"flush",[]);
                                  -for(var i=0,length=consoleQueue.length;
                                  -i<length;
                                  -i++){var args=consoleQueue[i];
                                  -this.logRow.apply(this,args)
                                  -}},showPanel:function(browser,panel){},getFirebugConsoleElement:function(context,win){var element=win.document.getElementById("_firebugConsole");
                                  -if(!element){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element")
                                  -}var elementForcer="(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";
                                  -if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context)
                                  -}else{var r=Firebug.CommandLine.evaluateInWebPage(elementForcer,context,win)
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("getFirebugConsoleElement forcing element result "+r,r)
                                  -}var element=win.document.getElementById("_firebugConsole");
                                  -if(!element){if(FBTrace.DBG_ERRORS){FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:",win)
                                  -}Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element",r,win],context,"error",true)
                                  -}}return element
                                  -},isReadyElsePreparing:function(context,win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.isReadyElsePreparing, win is "+(win?"an argument: ":"null, context.window: ")+(win?win.location:context.window.location),(win?win:context.window))
                                  -}if(win){return this.injector.attachIfNeeded(context,win)
                                  -}else{var attached=true;
                                  -for(var i=0;
                                  -i<context.windows.length;
                                  -i++){attached=attached&&this.injector.attachIfNeeded(context,context.windows[i])
                                  -}if(context.windows.indexOf(context.window)==-1){FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows")
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached)
                                  -}return attached
                                  -}},initialize:function(){this.panelName="console"
                                  -},enable:function(){if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors()
                                  -}},disable:function(){if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors()
                                  -}},initContext:function(context,persistedState){Firebug.ActivableModule.initContext.apply(this,arguments);
                                  -context.consoleReloadWarning=true
                                  -},loadedContext:function(context){for(var url in context.sourceFileMap){return
                                  -}this.clearReloadWarning(context)
                                  -},clearReloadWarning:function(context){if(context.consoleReloadWarning){var panel=context.getPanel(this.panelName);
                                  -panel.clearReloadWarning();
                                  -delete context.consoleReloadWarning
                                  -}},togglePersist:function(context){var panel=context.getPanel(this.panelName);
                                  -panel.persistContent=panel.persistContent?false:true;
                                  -Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",panel.persistContent)
                                  -},showContext:function(browser,context){Firebug.chrome.setGlobalAttribute("cmd_clearConsole","disabled",!context);
                                  -Firebug.ActivableModule.showContext.apply(this,arguments)
                                  -},destroyContext:function(context,persistedState){Firebug.Console.injector.detachConsole(context,context.window)
                                  -},onPanelEnable:function(panelName){if(panelName!=this.panelName){return
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelEnable**************")
                                  -}this.watchForErrors();
                                  -Firebug.Debugger.addDependentModule(this)
                                  -},onPanelDisable:function(panelName){if(panelName!=this.panelName){return
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onPanelDisable**************")
                                  -}Firebug.Debugger.removeDependentModule(this);
                                  -this.unwatchForErrors();
                                  -this.clear()
                                  -},onSuspendFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onSuspendFirebug\n")
                                  -}if(Firebug.Console.isAlwaysEnabled()){this.unwatchForErrors()
                                  -}},onResumeFirebug:function(){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onResumeFirebug\n")
                                  -}if(Firebug.Console.isAlwaysEnabled()){this.watchForErrors()
                                  -}},watchForErrors:function(){Firebug.Errors.checkEnabled();
                                  -$("fbStatusIcon").setAttribute("console","on")
                                  -},unwatchForErrors:function(){Firebug.Errors.checkEnabled();
                                  -$("fbStatusIcon").removeAttribute("console")
                                  -},onMonitorScript:function(context,frame){Firebug.Console.log(frame,context)
                                  -},onFunctionCall:function(context,frame,depth,calling){if(calling){Firebug.Console.openGroup([frame,"depth:"+depth],context)
                                  -}else{Firebug.Console.closeGroup(context)
                                  -}},logRow:function(appender,objects,context,className,rep,sourceLink,noThrottle,noRow){if(!context){context=FirebugContext
                                  -}if(FBTrace.DBG_WINDOWS&&!context){FBTrace.sysout("Console.logRow: no context \n")
                                  -}if(this.isAlwaysEnabled()){return Firebug.ConsoleBase.logRow.apply(this,arguments)
                                  -}}});
                                  -Firebug.ConsoleListener={log:function(context,object,className,sourceLink){},logFormatted:function(context,objects,className,sourceLink){}};
                                  -Firebug.ConsolePanel=function(){};
                                  -Firebug.ConsolePanel.prototype=extend(Firebug.Panel,{wasScrolledToBottom:false,messageCount:0,lastLogTime:0,groups:null,limit:null,append:function(appender,objects,className,rep,sourceLink,noRow){var container=this.getTopContainer();
                                  -if(noRow){appender.apply(this,[objects])
                                  -}else{var row=this.createRow("logRow",className);
                                  -appender.apply(this,[objects,row,rep]);
                                  -if(sourceLink){FirebugReps.SourceLink.tag.append({object:sourceLink},row)
                                  -}container.appendChild(row);
                                  -this.filterLogRow(row,this.wasScrolledToBottom);
                                  -if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
                                  -}return row
                                  -}},clear:function(){if(this.panelNode){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("ConsolePanel.clear")
                                  -}clearNode(this.panelNode);
                                  -this.insertLogLimit(this.context)
                                  -}},insertLogLimit:function(){var row=this.createRow("limitRow");
                                  -var limitInfo={totalCount:0,limitPrefsTitle:$STRF("LimitPrefsTitle",[Firebug.prefDomain+".console.logLimit"])};
                                  -return;
                                  -var netLimitRep=Firebug.NetMonitor.NetLimit;
                                  -var nodes=netLimitRep.createTable(row,limitInfo);
                                  -this.limit=nodes[1];
                                  -var container=this.panelNode;
                                  -container.insertBefore(nodes[0],container.firstChild)
                                  -},insertReloadWarning:function(){this.warningRow=this.append(appendObject,$STR("message.Reload to activate window console"),"info")
                                  -},clearReloadWarning:function(){if(this.warningRow){this.warningRow.parentNode.removeChild(this.warningRow);
                                  -delete this.warningRow
                                  -}},appendObject:function(object,row,rep){if(!rep){rep=Firebug.getRep(object)
                                  -}return rep.tag.append({object:object},row)
                                  -},appendFormatted:function(objects,row,rep){if(!objects||!objects.length){return
                                  -}function logText(text,row){var node=row.ownerDocument.createTextNode(text);
                                  -row.appendChild(node)
                                  -}var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}else{if(objects.length===1){if(format.length<1){logText("(an empty string)",row);
                                  -return
                                  -}}}var parts=parseFormat(format);
                                  -var trialIndex=objIndex;
                                  -for(var i=0;
                                  -i<parts.length;
                                  -i++){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){if(++trialIndex>objects.length){format="";
                                  -objIndex=-1;
                                  -parts.length=0;
                                  -break
                                  -}}}for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -if(typeof(object)!="undefined"){this.appendObject(object,row,part.rep)
                                  -}else{this.appendObject(part.type,row,FirebugReps.Text)
                                  -}}else{FirebugReps.Text.tag.append({object:part},row)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){logText(" ",row);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){FirebugReps.Text.tag.append({object:object},row)
                                  -}else{this.appendObject(object,row)
                                  -}}},appendOpenGroup:function(objects,row,rep){if(!this.groups){this.groups=[]
                                  -}setClass(row,"logGroup");
                                  -setClass(row,"opened");
                                  -var innerRow=this.createRow("logRow");
                                  -setClass(innerRow,"logGroupLabel");
                                  -if(rep){rep.tag.replace({objects:objects},innerRow)
                                  -}else{this.appendFormatted(objects,innerRow,rep)
                                  -}row.appendChild(innerRow);
                                  -var groupBody=this.createRow("logGroupBody");
                                  -row.appendChild(groupBody);
                                  -groupBody.setAttribute("role","group");
                                  -this.groups.push(groupBody);
                                  -addEvent(innerRow,"mousedown",function(event){if(isLeftClick(event)){var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"logGroupLabel");
                                  -var groupRow=target.parentNode;
                                  -if(hasClass(groupRow,"opened")){removeClass(groupRow,"opened");
                                  -target.setAttribute("aria-expanded","false")
                                  -}else{setClass(groupRow,"opened");
                                  -target.setAttribute("aria-expanded","true")
                                  -}}})
                                  -},appendCloseGroup:function(object,row,rep){if(this.groups){this.groups.pop()
                                  -}},onMouseMove:function(event){if(!Firebug.Inspector){return
                                  -}var target=event.srcElement||event.target;
                                  -var object=getAncestorByClass(target,"objectLink-element");
                                  -object=object?object.repObject:null;
                                  -if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
                                  -object=lastHighlightedObject
                                  -}}else{Firebug.Inspector.hideBoxModel()
                                  -}},onMouseDown:function(event){var target=event.srcElement||event.target;
                                  -var object=getAncestorByClass(target,"objectLink");
                                  -var repObject=object?object.repObject:null;
                                  -if(!repObject){return
                                  -}if(hasClass(object,"objectLink-object")){Firebug.chrome.selectPanel("DOM");
                                  -Firebug.chrome.getPanel("DOM").select(repObject,true)
                                  -}else{if(hasClass(object,"objectLink-element")){Firebug.chrome.selectPanel("HTML");
                                  -Firebug.chrome.getPanel("HTML").select(repObject,true)
                                  -}}},name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:false},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.context=Firebug.browser.window;
                                  -this.document=Firebug.chrome.getPanelDocument(Firebug.ConsolePanel);
                                  -this.onMouseMove=bind(this.onMouseMove,this);
                                  -this.onMouseDown=bind(this.onMouseDown,this);
                                  -this.clearButton=new Button({element:$("fbConsole_btClear"),caption:"Clear",owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -if(!this.persistedContent&&Firebug.Console.isAlwaysEnabled()){this.insertLogLimit(this.context);
                                  -this.updateMaxLimit();
                                  -if(this.context.consoleReloadWarning){this.insertReloadWarning()
                                  -}}addEvent(this.panelNode,"mouseover",this.onMouseMove);
                                  -addEvent(this.panelNode,"mousedown",this.onMouseDown);
                                  -this.clearButton.initialize()
                                  -},initializeNode:function(){if(FBTrace.DBG_CONSOLE){this.onScroller=bind(this.onScroll,this);
                                  -addEvent(this.panelNode,"scroll",this.onScroller)
                                  -}this.onResizer=bind(this.onResize,this);
                                  -this.resizeEventTarget=Firebug.chrome.$("fbContentBox");
                                  -addEvent(this.resizeEventTarget,"resize",this.onResizer)
                                  -},destroyNode:function(){if(this.onScroller){removeEvent(this.panelNode,"scroll",this.onScroller)
                                  -}},shutdown:function(){this.clearButton.shutdown();
                                  -removeEvent(this.panelNode,"mousemove",this.onMouseMove);
                                  -removeEvent(this.panelNode,"mousedown",this.onMouseDown);
                                  -this.destroyNode();
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},ishow:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel show; "+this.context.getName(),state)
                                  -}var enabled=Firebug.Console.isAlwaysEnabled();
                                  -if(enabled){Firebug.Console.disabledPanelPage.hide(this);
                                  -this.showCommandLine(true);
                                  -this.showToolbarButtons("fbConsoleButtons",true);
                                  -Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole","checked",this.persistContent);
                                  -if(state&&state.wasScrolledToBottom){this.wasScrolledToBottom=state.wasScrolledToBottom;
                                  -delete state.wasScrolledToBottom
                                  -}if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.show ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
                                  -}}else{this.hide(state);
                                  -Firebug.Console.disabledPanelPage.show(this)
                                  -}},ihide:function(state){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.panel hide; "+this.context.getName(),state)
                                  -}this.showToolbarButtons("fbConsoleButtons",false);
                                  -this.showCommandLine(false);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
                                  -}},destroy:function(state){if(this.panelNode.offsetHeight){this.wasScrolledToBottom=isScrolledToBottom(this.panelNode)
                                  -}if(state){state.wasScrolledToBottom=this.wasScrolledToBottom
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", "+this.context.getName())
                                  -}},shouldBreakOnNext:function(){return Firebug.getPref(Firebug.servicePrefDomain,"breakOnErrors")
                                  -},getBreakOnNextTooltip:function(enabled){return(enabled?$STR("console.Disable Break On All Errors"):$STR("console.Break On All Errors"))
                                  -},enablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.enablePanel; "+this.context.getName())
                                  -}Firebug.ActivablePanel.enablePanel.apply(this,arguments);
                                  -this.showCommandLine(true);
                                  -if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
                                  -}},disablePanel:function(module){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.ConsolePanel.disablePanel; "+this.context.getName())
                                  -}Firebug.ActivablePanel.disablePanel.apply(this,arguments);
                                  -this.showCommandLine(false)
                                  -},getOptionsMenuItems:function(){return[optionMenu("ShowJavaScriptErrors","showJSErrors"),optionMenu("ShowJavaScriptWarnings","showJSWarnings"),optionMenu("ShowCSSErrors","showCSSErrors"),optionMenu("ShowXMLErrors","showXMLErrors"),optionMenu("ShowXMLHttpRequests","showXMLHttpRequests"),optionMenu("ShowChromeErrors","showChromeErrors"),optionMenu("ShowChromeMessages","showChromeMessages"),optionMenu("ShowExternalErrors","showExternalErrors"),optionMenu("ShowNetworkErrors","showNetworkErrors"),this.getShowStackTraceMenuItem(),this.getStrictOptionMenuItem(),"-",optionMenu("LargeCommandLine","largeCommandLine")]
                                  -},getShowStackTraceMenuItem:function(){var menuItem=serviceOptionMenu("ShowStackTrace","showStackTrace");
                                  -if(FirebugContext&&!Firebug.Debugger.isAlwaysEnabled()){menuItem.disabled=true
                                  -}return menuItem
                                  -},getStrictOptionMenuItem:function(){var strictDomain="javascript.options";
                                  -var strictName="strict";
                                  -var strictValue=prefs.getBoolPref(strictDomain+"."+strictName);
                                  -return{label:"JavascriptOptionsStrict",type:"checkbox",checked:strictValue,command:bindFixed(Firebug.setPref,Firebug,strictDomain,strictName,!strictValue)}
                                  -},getBreakOnMenuItems:function(){return[]
                                  -},search:function(text){if(!text){return
                                  -}if(this.matchSet){for(var i in this.matchSet){removeClass(this.matchSet[i],"matched")
                                  -}}this.matchSet=[];
                                  -function findRow(node){return getAncestorByClass(node,"logRow")
                                  -}var search=new TextSearch(this.panelNode,findRow);
                                  -var logRow=search.find(text);
                                  -if(!logRow){dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,[]]);
                                  -return false
                                  -}for(;
                                  -logRow;
                                  -logRow=search.findNext()){setClass(logRow,"matched");
                                  -this.matchSet.push(logRow)
                                  -}dispatch([Firebug.A11yModel],"onConsoleSearchMatchFound",[this,text,this.matchSet]);
                                  -return true
                                  -},breakOnNext:function(breaking){Firebug.setPref(Firebug.servicePrefDomain,"breakOnErrors",breaking)
                                  -},createRow:function(rowName,className){var elt=this.document.createElement("div");
                                  -elt.className=rowName+(className?" "+rowName+"-"+className:"");
                                  -return elt
                                  -},getTopContainer:function(){if(this.groups&&this.groups.length){return this.groups[this.groups.length-1]
                                  -}else{return this.panelNode
                                  -}},filterLogRow:function(logRow,scrolledToBottom){if(this.searchText){setClass(logRow,"matching");
                                  -setClass(logRow,"matched");
                                  -setTimeout(bindFixed(function(){if(this.searchFilter(this.searchText,logRow)){this.matchSet.push(logRow)
                                  -}else{removeClass(logRow,"matched")
                                  -}removeClass(logRow,"matching");
                                  -if(scrolledToBottom){scrollToBottom(this.panelNode)
                                  -}},this),100)
                                  -}},searchFilter:function(text,logRow){var count=this.panelNode.childNodes.length;
                                  -var searchRange=this.document.createRange();
                                  -searchRange.setStart(this.panelNode,0);
                                  -searchRange.setEnd(this.panelNode,count);
                                  -var startPt=this.document.createRange();
                                  -startPt.setStartBefore(logRow);
                                  -var endPt=this.document.createRange();
                                  -endPt.setStartAfter(logRow);
                                  -return finder.Find(text,searchRange,startPt,endPt)!=null
                                  -},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return
                                  -}var prefDomain="Firebug.extension.";
                                  -var prefName=data.substr(prefDomain.length);
                                  -if(prefName=="console.logLimit"){this.updateMaxLimit()
                                  -}},updateMaxLimit:function(){var value=1000;
                                  -maxQueueRequests=value?value:maxQueueRequests
                                  -},showCommandLine:function(shouldShow){return;
                                  -if(shouldShow){collapse(Firebug.chrome.$("fbCommandBox"),false);
                                  -Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine,Firebug.chrome)
                                  -}else{Firebug.CommandLine.setMultiLine(false,Firebug.chrome,Firebug.largeCommandLine);
                                  -collapse(Firebug.chrome.$("fbCommandBox"),true)
                                  -}},onScroll:function(event){this.wasScrolledToBottom=FBL.isScrolledToBottom(this.panelNode);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", wasScrolledToBottom: "+this.context.getName(),event)
                                  -}},onResize:function(event){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: "+this.wasScrolledToBottom+", offsetHeight: "+this.panelNode.offsetHeight+", scrollTop: "+this.panelNode.scrollTop+", scrollHeight: "+this.panelNode.scrollHeight+", "+this.context.getName(),event)
                                  -}if(this.wasScrolledToBottom){scrollToBottom(this.panelNode)
                                  -}}});
                                  -function parseFormat(format){var parts=[];
                                  -if(format.length<=0){return parts
                                  -}var reg=/((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){if(m[0].substr(0,2)=="%%"){parts.push(format.substr(0,m.index));
                                  -parts.push(m[0].substr(1))
                                  -}else{var type=m[8]?m[8]:m[5];
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -var rep=null;
                                  -switch(type){case"s":rep=FirebugReps.Text;
                                  -break;
                                  -case"f":case"i":case"d":rep=FirebugReps.Number;
                                  -break;
                                  -case"o":rep=null;
                                  -break
                                  -}parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({rep:rep,precision:precision,type:("%"+type)})
                                  -}format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -}var appendObject=Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted=Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup=Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup=Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var frameCounters={};
                                  -var traceRecursion=0;
                                  -Firebug.Console.injector={install:function(context){var win=context.window;
                                  -var consoleHandler=new FirebugConsoleHandler(context,win);
                                  -var properties=["log","debug","info","warn","error","assert","dir","dirxml","group","groupCollapsed","groupEnd","time","timeEnd","count","trace","profile","profileEnd","clear","open","close"];
                                  -var Handler=function(name){var c=consoleHandler;
                                  -var f=consoleHandler[name];
                                  -return function(){return f.apply(c,arguments)
                                  -}
                                  -};
                                  -var installer=function(c){for(var i=0,l=properties.length;
                                  -i<l;
                                  -i++){var name=properties[i];
                                  -c[name]=new Handler(name);
                                  -c.firebuglite=Firebug.version
                                  -}};
                                  -var sandbox;
                                  -if(win.console){if(Env.Options.overrideConsole){sandbox=new win.Function("arguments.callee.install(window.firebug={})")
                                  -}else{return
                                  -}}else{try{sandbox=new win.Function("arguments.callee.install(window.console={})")
                                  -}catch(E){sandbox=new win.Function("arguments.callee.install(window.firebug={})")
                                  -}}sandbox.install=installer;
                                  -sandbox()
                                  -},isAttached:function(context,win){if(win.wrappedJSObject){var attached=(win.wrappedJSObject._getFirebugConsoleElement?true:false);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject))
                                  -}return attached
                                  -}else{if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement)
                                  -}return(win._getFirebugConsoleElement?true:false)
                                  -}},attachIfNeeded:function(context,win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded has win "+(win?((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null"))
                                  -}if(this.isAttached(context,win)){return true
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("Console.attachIfNeeded found isAttached false ")
                                  -}this.attachConsoleInjector(context,win);
                                  -this.addConsoleListener(context,win);
                                  -Firebug.Console.clearReloadWarning(context);
                                  -var attached=this.isAttached(context,win);
                                  -if(attached){dispatch(Firebug.Console.fbListeners,"onConsoleInjected",[context,win])
                                  -}return attached
                                  -},attachConsoleInjector:function(context,win){var consoleInjection=this.getConsoleInjectionScript();
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluating in "+win.location,consoleInjection)
                                  -}Firebug.CommandLine.evaluateInWebPage(consoleInjection,context,win);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location)
                                  -}},getConsoleInjectionScript:function(){if(!this.consoleInjectionScript){var script="";
                                  -script+="window.__defineGetter__('console', function() {\n";
                                  -script+=" return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -script+="window.loadFirebugConsole = function() {\n";
                                  -script+="window._firebug =  new _FirebugConsole();";
                                  -if(FBTrace.DBG_CONSOLE){script+=" window.dump('loadFirebugConsole '+window.location+'\\n');\n"
                                  -}script+=" return window._firebug };\n";
                                  -var theFirebugConsoleScript=getResource("chrome://firebug/content/consoleInjected.js");
                                  -script+=theFirebugConsoleScript;
                                  -this.consoleInjectionScript=script
                                  -}return this.consoleInjectionScript
                                  -},forceConsoleCompilationInPage:function(context,win){if(!win){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("no win in forceConsoleCompilationInPage!")
                                  -}return
                                  -}var consoleForcer="window.loadFirebugConsole();";
                                  -if(context.stopped){Firebug.Console.injector.evaluateConsoleScript(context)
                                  -}else{Firebug.CommandLine.evaluateInWebPage(consoleForcer,context,win)
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("forceConsoleCompilationInPage "+win.location,consoleForcer)
                                  -}},evaluateConsoleScript:function(context){var scriptSource=this.getConsoleInjectionScript();
                                  -Firebug.Debugger.evaluate(scriptSource,context)
                                  -},addConsoleListener:function(context,win){if(!context.activeConsoleHandlers){context.activeConsoleHandlers=[]
                                  -}else{for(var i=0;
                                  -i<context.activeConsoleHandlers.length;
                                  -i++){if(context.activeConsoleHandlers[i].window==win){context.activeConsoleHandlers[i].detach();
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n")
                                  -}context.activeConsoleHandlers.splice(i,1)
                                  -}}}var element=Firebug.Console.getFirebugConsoleElement(context,win);
                                  -if(element){element.setAttribute("FirebugVersion",Firebug.version)
                                  -}else{return false
                                  -}var handler=new FirebugConsoleHandler(context,win);
                                  -handler.attachTo(element);
                                  -context.activeConsoleHandlers.push(handler);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n")
                                  -}return true
                                  -},detachConsole:function(context,win){if(win&&win.document){var element=win.document.getElementById("_firebugConsole");
                                  -if(element){element.parentNode.removeChild(element)
                                  -}}}};
                                  -var total_handlers=0;
                                  -var FirebugConsoleHandler=function FirebugConsoleHandler(context,win){this.window=win;
                                  -this.attachTo=function(element){this.element=element;
                                  -this.boundHandler=bind(this.handleEvent,this);
                                  -this.element.addEventListener("firebugAppendConsole",this.boundHandler,true)
                                  -};
                                  -this.detach=function(){this.element.removeEventListener("firebugAppendConsole",this.boundHandler,true)
                                  -};
                                  -this.handler_name=++total_handlers;
                                  -this.handleEvent=function(event){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event",event)
                                  -}if(!Firebug.CommandLine.CommandHandler.handle(event,this,win)){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("FirebugConsoleHandler",this)
                                  -}var methodName=event.target.getAttribute("methodName");
                                  -Firebug.Console.log($STRF("console.MethodNotSupported",[methodName]))
                                  -}};
                                  -this.firebuglite=Firebug.version;
                                  -this.init=function(){var consoleElement=win.document.getElementById("_firebugConsole");
                                  -consoleElement.setAttribute("FirebugVersion",Firebug.version)
                                  -};
                                  -this.log=function(){logFormatted(arguments,"log")
                                  -};
                                  -this.debug=function(){logFormatted(arguments,"debug",true)
                                  -};
                                  -this.info=function(){logFormatted(arguments,"info",true)
                                  -};
                                  -this.warn=function(){logFormatted(arguments,"warn",true)
                                  -};
                                  -this.error=function(){logFormatted(arguments,"error",true)
                                  -};
                                  -this.exception=function(){logAssert("error",arguments)
                                  -};
                                  -this.assert=function(x){if(!x){var rest=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -i++){rest.push(arguments[i])
                                  -}logAssert("assert",rest)
                                  -}};
                                  -this.dir=function(o){Firebug.Console.log(o,context,"dir",Firebug.DOMPanel.DirTable)
                                  -};
                                  -this.dirxml=function(o){if(instanceOf(o,"Window")){o=o.document.documentElement
                                  -}else{if(instanceOf(o,"Document")){o=o.documentElement
                                  -}}Firebug.Console.log(o,context,"dirxml",Firebug.HTMLPanel.SoloElement)
                                  -};
                                  -this.group=function(){var sourceLink=null;
                                  -Firebug.Console.openGroup(arguments,null,"group",null,false,sourceLink)
                                  -};
                                  -this.groupEnd=function(){Firebug.Console.closeGroup(context)
                                  -};
                                  -this.groupCollapsed=function(){var sourceLink=getStackLink();
                                  -var row=Firebug.Console.openGroup(arguments,null,"group",null,true,sourceLink);
                                  -removeClass(row,"opened")
                                  -};
                                  -this.profile=function(title){logFormatted(["console.profile() not supported."],"warn",true)
                                  -};
                                  -this.profileEnd=function(){logFormatted(["console.profile() not supported."],"warn",true)
                                  -};
                                  -this.count=function(key){var frameId="0";
                                  -if(frameId){if(!frameCounters){frameCounters={}
                                  -}if(key!=undefined){frameId+=key
                                  -}var frameCounter=frameCounters[frameId];
                                  -if(!frameCounter){var logRow=logFormatted(["0"],null,true,true);
                                  -frameCounter={logRow:logRow,count:1};
                                  -frameCounters[frameId]=frameCounter
                                  -}else{++frameCounter.count
                                  -}var label=key==undefined?frameCounter.count:key+" "+frameCounter.count;
                                  -frameCounter.logRow.firstChild.firstChild.nodeValue=label
                                  -}};
                                  -this.trace=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
                                  -}if(f.name){return f.name
                                  -}var name=f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -return name||"anonymous"
                                  -};
                                  -var wasVisited=function(fn){for(var i=0,l=frames.length;
                                  -i<l;
                                  -i++){if(frames[i].fn==fn){return true
                                  -}}return false
                                  -};
                                  -traceRecursion++;
                                  -if(traceRecursion>1){traceRecursion--;
                                  -return
                                  -}var frames=[];
                                  -for(var fn=arguments.callee.caller.caller;
                                  -fn;
                                  -fn=fn.caller){if(wasVisited(fn)){break
                                  -}var args=[];
                                  -for(var i=0,l=fn.arguments.length;
                                  -i<l;
                                  -++i){args.push({value:fn.arguments[i]})
                                  -}frames.push({fn:fn,name:getFuncName(fn),args:args})
                                  -}try{(0)()
                                  -}catch(e){var result=e;
                                  -var stack=result.stack||result.stacktrace||"";
                                  -stack=stack.replace(/\n\r|\r\n/g,"\n");
                                  -var items=stack.split(/[\n\r]/);
                                  -if(FBL.isSafari){var reChromeStackItem=/^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -var reChromeStackItemName=/\s*\($/;
                                  -var reChromeStackItemValue=/^(.+)\:(\d+\:\d+)\)?$/;
                                  -var framePos=0;
                                  -for(var i=4,length=items.length;
                                  -i<length;
                                  -i++,framePos++){var frame=frames[framePos];
                                  -var item=items[i];
                                  -var match=item.match(reChromeStackItem);
                                  -if(match){var name=match[1];
                                  -if(name){name=name.replace(reChromeStackItemName,"");
                                  -frame.name=name
                                  -}var value=match[2].match(reChromeStackItemValue);
                                  -if(value){frame.href=value[1];
                                  -frame.lineNo=value[2]
                                  -}}}}else{if(FBL.isFirefox){var reFirefoxStackItem=/^(.*)@(.*)$/;
                                  -var reFirefoxStackItemValue=/^(.+)\:(\d+)$/;
                                  -var framePos=0;
                                  -for(var i=2,length=items.length;
                                  -i<length;
                                  -i++,framePos++){var frame=frames[framePos]||{};
                                  -var item=items[i];
                                  -var match=item.match(reFirefoxStackItem);
                                  -if(match){var name=match[1];
                                  -var value=match[2].match(reFirefoxStackItemValue);
                                  -if(value){frame.href=value[1];
                                  -frame.lineNo=value[2]
                                  -}}}}}}Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace);
                                  -traceRecursion--
                                  -};
                                  -this.trace_ok=function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
                                  -}if(f.name){return f.name
                                  -}var name=f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -return name||"anonymous"
                                  -};
                                  -var wasVisited=function(fn){for(var i=0,l=frames.length;
                                  -i<l;
                                  -i++){if(frames[i].fn==fn){return true
                                  -}}return false
                                  -};
                                  -var frames=[];
                                  -for(var fn=arguments.callee.caller;
                                  -fn;
                                  -fn=fn.caller){if(wasVisited(fn)){break
                                  -}var args=[];
                                  -for(var i=0,l=fn.arguments.length;
                                  -i<l;
                                  -++i){args.push({value:fn.arguments[i]})
                                  -}frames.push({fn:fn,name:getFuncName(fn),args:args})
                                  -}Firebug.Console.log({frames:frames},context,"stackTrace",FirebugReps.StackTrace)
                                  -};
                                  -this.clear=function(){Firebug.Console.clear(context)
                                  -};
                                  -this.time=function(name,reset){if(!name){return
                                  -}var time=new Date().getTime();
                                  -if(!this.timeCounters){this.timeCounters={}
                                  -}var key="KEY"+name.toString();
                                  -if(!reset&&this.timeCounters[key]){return
                                  -}this.timeCounters[key]=time
                                  -};
                                  -this.timeEnd=function(name){var time=new Date().getTime();
                                  -if(!this.timeCounters){return
                                  -}var key="KEY"+name.toString();
                                  -var timeCounter=this.timeCounters[key];
                                  -if(timeCounter){var diff=time-timeCounter;
                                  -var label=name+": "+diff+"ms";
                                  -this.info(label);
                                  -delete this.timeCounters[key]
                                  -}return diff
                                  -};
                                  -this.evaluated=function(result,context){if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called",result)
                                  -}Firebug.Console.log(result,context)
                                  -};
                                  -this.evaluateError=function(result,context){Firebug.Console.log(result,context,"errorMessage")
                                  -};
                                  -function logFormatted(args,className,linkToSource,noThrottle){var sourceLink=linkToSource?getStackLink():null;
                                  -return Firebug.Console.logFormatted(args,context,className,noThrottle,sourceLink)
                                  -}function logAssert(category,args){Firebug.Errors.increaseCount(context);
                                  -if(!args||!args.length||args.length==0){var msg=[FBL.$STR("Assertion")]
                                  -}else{var msg=args[0]
                                  -}if(Firebug.errorStackTrace){var trace=Firebug.errorStackTrace;
                                  -delete Firebug.errorStackTrace;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from errorStackTrace",trace)
                                  -}}else{if(msg.stack){var trace=parseToStackTrace(msg.stack);
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from msg.stack",trace)
                                  -}}else{var trace=getJSDUserStack();
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("logAssert trace from getJSDUserStack",trace)
                                  -}}}var errorObject=new FBL.ErrorMessage(msg,(msg.fileName?msg.fileName:win.location),(msg.lineNumber?msg.lineNumber:0),"",category,context,trace);
                                  -if(trace&&trace.frames&&trace.frames[0]){errorObject.correctWithStackTrace(trace)
                                  -}errorObject.resetSource();
                                  -var objects=errorObject;
                                  -if(args.length>1){objects=[errorObject];
                                  -for(var i=1;
                                  -i<args.length;
                                  -i++){objects.push(args[i])
                                  -}}var row=Firebug.Console.log(objects,context,"errorMessage",null,true);
                                  -row.scrollIntoView()
                                  -}function getComponentsStackDump(){var frame=Components.stack;
                                  -var userURL=win.location.href.toString();
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL,frame)
                                  -}while(frame&&FBL.isSystemURL(frame.filename)){frame=frame.caller
                                  -}if(frame){frame=frame.caller
                                  -}if(frame){frame=frame.caller
                                  -}if(FBTrace.DBG_CONSOLE){FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL,frame)
                                  -}return frame
                                  -}function getStackLink(){return
                                  -}function getJSDUserStack(){var trace=FBL.getCurrentStackTrace(context);
                                  -var frames=trace?trace.frames:null;
                                  -if(frames&&(frames.length>0)){var oldest=frames.length-1;
                                  -for(var i=0;
                                  -i<frames.length;
                                  -i++){if(frames[oldest-i].href.indexOf("chrome:")==0){break
                                  -}var fn=frames[oldest-i].fn+"";
                                  -if(fn&&(fn.indexOf("_firebugEvalEvent")!=-1)){break
                                  -}}FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i-oldest+2),trace);
                                  -trace.frames=trace.frames.slice(2-i);
                                  -return trace
                                  -}else{return"Firebug failed to get stack trace with any frames"
                                  -}}};
                                  -FBL.registerConsole=function(){var win=Env.browser.window;
                                  -Firebug.Console.injector.install(win)
                                  -};
                                  -registerConsole()
                                  -}});
                                  -FBL.ns(function(){with(FBL){var commandPrefix=">>>";
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -var commandHistory=[];
                                  -var commandPointer=-1;
                                  -var isAutoCompleting=null;
                                  -var autoCompletePrefix=null;
                                  -var autoCompleteExpr=null;
                                  -var autoCompleteBuffer=null;
                                  -var autoCompletePosition=null;
                                  -var fbCommandLine=null;
                                  -var fbLargeCommandLine=null;
                                  -var fbLargeCommandButtons=null;
                                  -var _completion={window:["console"],document:["getElementById","getElementsByTagName"]};
                                  -var _stack=function(command){Firebug.context.persistedState.commandHistory.push(command);
                                  -Firebug.context.persistedState.commandPointer=Firebug.context.persistedState.commandHistory.length
                                  -};
                                  -Firebug.CommandLine=extend(Firebug.Module,{element:null,isMultiLine:false,isActive:false,initialize:function(doc){this.clear=bind(this.clear,this);
                                  -this.enter=bind(this.enter,this);
                                  -this.onError=bind(this.onError,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -this.onMultiLineKeyDown=bind(this.onMultiLineKeyDown,this);
                                  -addEvent(Firebug.browser.window,"error",this.onError);
                                  -addEvent(Firebug.chrome.window,"error",this.onError)
                                  -},shutdown:function(doc){this.deactivate();
                                  -removeEvent(Firebug.browser.window,"error",this.onError);
                                  -removeEvent(Firebug.chrome.window,"error",this.onError)
                                  -},activate:function(multiLine,hideToggleIcon,onRun){defineCommandLineAPI();
                                  -Firebug.context.persistedState.commandHistory=Firebug.context.persistedState.commandHistory||[];
                                  -Firebug.context.persistedState.commandPointer=Firebug.context.persistedState.commandPointer||-1;
                                  -if(this.isActive){if(this.isMultiLine==multiLine){return
                                  -}this.deactivate()
                                  -}fbCommandLine=$("fbCommandLine");
                                  -fbLargeCommandLine=$("fbLargeCommandLine");
                                  -fbLargeCommandButtons=$("fbLargeCommandButtons");
                                  -if(multiLine){onRun=onRun||this.enter;
                                  -this.isMultiLine=true;
                                  -this.element=fbLargeCommandLine;
                                  -addEvent(this.element,"keydown",this.onMultiLineKeyDown);
                                  -addEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
                                  -this.runButton=new Button({element:$("fbCommand_btRun"),owner:Firebug.CommandLine,onClick:onRun});
                                  -this.runButton.initialize();
                                  -this.clearButton=new Button({element:$("fbCommand_btClear"),owner:Firebug.CommandLine,onClick:this.clear});
                                  -this.clearButton.initialize()
                                  -}else{this.isMultiLine=false;
                                  -this.element=fbCommandLine;
                                  -if(!fbCommandLine){return
                                  -}addEvent(this.element,"keydown",this.onKeyDown)
                                  -}if(isOpera){fixOperaTabKey(this.element)
                                  -}if(this.lastValue){this.element.value=this.lastValue
                                  -}this.isActive=true
                                  -},deactivate:function(){if(!this.isActive){return
                                  -}this.isActive=false;
                                  -this.lastValue=this.element.value;
                                  -if(this.isMultiLine){removeEvent(this.element,"keydown",this.onMultiLineKeyDown);
                                  -removeEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
                                  -this.runButton.destroy();
                                  -this.clearButton.destroy()
                                  -}else{removeEvent(this.element,"keydown",this.onKeyDown)
                                  -}this.element=null;
                                  -delete this.element;
                                  -fbCommandLine=null;
                                  -fbLargeCommandLine=null;
                                  -fbLargeCommandButtons=null
                                  -},focus:function(){this.element.focus()
                                  -},blur:function(){this.element.blur()
                                  -},clear:function(){this.element.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -var result=Firebug.context.evaluate(expr,"window",api,Firebug.Console.error);
                                  -return result
                                  -},enter:function(){var command=this.element.value;
                                  -if(!command){return
                                  -}_stack(command);
                                  -Firebug.Console.log(commandPrefix+" "+stripNewLines(command),Firebug.browser,"command",FirebugReps.Text);
                                  -var result=this.evaluate(command);
                                  -Firebug.Console.log(result)
                                  -},prevCommand:function(){if(Firebug.context.persistedState.commandPointer>0&&Firebug.context.persistedState.commandHistory.length>0){this.element.value=Firebug.context.persistedState.commandHistory[--Firebug.context.persistedState.commandPointer]
                                  -}},nextCommand:function(){var element=this.element;
                                  -var limit=Firebug.context.persistedState.commandHistory.length-1;
                                  -var i=Firebug.context.persistedState.commandPointer;
                                  -if(i<limit){element.value=Firebug.context.persistedState.commandHistory[++Firebug.context.persistedState.commandPointer]
                                  -}else{if(i==limit){++Firebug.context.persistedState.commandPointer;
                                  -element.value=""
                                  -}}},autocomplete:function(reverse){var element=this.element;
                                  -var command=element.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!isAutoCompleting){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}isAutoCompleting=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){autoCompletePrefix=prefix;
                                  -autoCompleteExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -autoCompletePosition=-1;
                                  -buffer=autoCompleteBuffer=isIE?_completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=autoCompleteBuffer
                                  -}if(buffer){prefix=autoCompletePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=autoCompletePosition+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){autoCompletePosition=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){element.value=autoCompleteExpr+result
                                  -}},setMultiLine:function(multiLine){if(multiLine==this.isMultiLine){return
                                  -}this.activate(multiLine)
                                  -},onError:function(msg,href,lineNo){href=href||"";
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -var html=['<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>"]
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false
                                  -}if(code==13){this.enter();
                                  -this.clear()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -},onMultiLineKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code==13&&e.ctrlKey){this.enter()
                                  -}}});
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.")
                                  -},$0:null,$1:null,dir:function(o){Firebug.Console.log(o,Firebug.context,"dir",Firebug.DOMPanel.DirTable)
                                  -},dirxml:function(o){if(instanceOf(o,"Window")){o=o.document.documentElement
                                  -}else{if(instanceOf(o,"Document")){o=o.documentElement
                                  -}}Firebug.Console.log(o,Firebug.context,"dirxml",Firebug.HTMLPanel.SoloElement)
                                  -}};
                                  -var defineCommandLineAPI=function defineCommandLineAPI(){Firebug.CommandLine.API={};
                                  -for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}var stack=FirebugChrome.htmlSelectionStack;
                                  -if(stack){Firebug.CommandLine.API.$0=stack[0];
                                  -Firebug.CommandLine.API.$1=stack[1]
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
                                  -var cacheID=Firebug.Lite.Cache.ID;
                                  -var ignoreHTMLProps={sizcache:1,sizset:1};
                                  -if(Firebug.ignoreFirebugElements){ignoreHTMLProps[cacheID]=1
                                  -}Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue
                                  -}var uid=ElementCache(node);
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=isVisible(node);
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||isIE&&(browserVersion-0<9)&&typeof attr.nodeValue!="string"||Firebug.ignoreFirebugElements&&ignoreHTMLProps.hasOwnProperty(attr.nodeName)){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?formatStyles(node.style.cssText):attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(isIE){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="lineNo">',s.join(""),'</div><pre class="sourceCode">',escapeHTML(src),"</pre>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.getPanelDocument(HTMLPanel);
                                  -var uid=treeNode.id;
                                  -var parentNode=ElementCache.get(uid);
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id,Firebug.chrome.getPanelDocument(HTMLPanel))
                                  -},select:function(el){var id=el&&ElementCache(el);
                                  -if(id){this.selectTreeNode(id)
                                  -}},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=ElementCache.get(id).parentNode;
                                  -if(node){id=ElementCache(node)
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id,Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -if(stack.length>0&&ElementCache.get(id).childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -if(fbPanel1){fbPanel1.parentNode.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -this.panelNode.style.minWidth="500px";
                                  -if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI()
                                  -}if(this.sidePanelBar&&!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("css")
                                  -}},destroy:function(){selectedElement=null;
                                  -fbPanel1=null;
                                  -selectedSidePanelTS=null;
                                  -selectedSidePanelTimer=null;
                                  -Firebug.Panel.destroy.apply(this,arguments)
                                  -},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -this.panelNode.innerHTML=html.join("")
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=Firebug.chrome.getPanelContainer();
                                  -if(!selectedElement){Firebug.context.persistedState.selectedHTMLElementId=Firebug.context.persistedState.selectedHTMLElementId&&ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId)?Firebug.context.persistedState.selectedHTMLElementId:ElementCache(Firebug.browser.document.body);
                                  -Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId)
                                  -}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},reattach:function(){if(Firebug.context.persistedState.selectedHTMLElementId){Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId)
                                  -}},updateSelection:function(object){var id=ElementCache(object);
                                  -if(id){Firebug.HTML.selectTreeNode(id)
                                  -}}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":"
                                  -}):styles
                                  -};
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectedSidePanelTS,selectedSidePanelTimer;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -Firebug.context.persistedState.selectedHTMLElementId=e.id;
                                  -var target=ElementCache.get(e.id);
                                  -var sidePanelBar=Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -var selectedSidePanel=sidePanelBar?sidePanelBar.selectedPanel:null;
                                  -var stack=FirebugChrome.htmlSelectionStack;
                                  -stack.unshift(target);
                                  -if(stack.length>2){stack.pop()
                                  -}var lazySelect=function(){selectedSidePanelTS=new Date().getTime();
                                  -if(selectedSidePanel){selectedSidePanel.select(target,true)
                                  -}};
                                  -if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer);
                                  -selectedSidePanelTimer=null
                                  -}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0)
                                  -}else{selectedSidePanelTimer=setTimeout(lazySelect,150)
                                  -}}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[cacheID];
                                  -if(!uid){return
                                  -}var el=ElementCache.get(uid.value);
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}};
                                  -Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=ElementCache(object);
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=ElementCache(node);
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?node.style.cssText:attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){var value=trim(node.nodeValue);
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var maxWidth=100,maxHeight=80;
                                  -var infoTipMargin=10;
                                  -var infoTipWindowPadding=25;
                                  -Firebug.InfoTip=extend(Firebug.Module,{dispatchName:"infoTip",tags:domplate({infoTipTag:DIV({"class":"infoTip"}),colorTag:DIV({style:"background: $rgbValue; width: 100px; height: 40px"},"&nbsp;"),imgTag:DIV({"class":"infoTipImageBox infoTipLoading"},IMG({"class":"infoTipImage",src:"$urlValue",repeat:"$repeat",onload:"$onLoadImage"}),IMG({"class":"infoTipBgImage",collapsed:true,src:"blank.gif"}),DIV({"class":"infoTipCaption"})),onLoadImage:function(event){var img=event.currentTarget||event.srcElement;
                                  -var innerBox=img.parentNode;
                                  -var caption=getElementByClass(innerBox,"infoTipCaption");
                                  -var bgImg=getElementByClass(innerBox,"infoTipBgImage");
                                  -if(!bgImg){return
                                  -}if(isIE){removeClass(innerBox,"infoTipLoading")
                                  -}var updateInfoTip=function(){var w=img.naturalWidth||img.width||10,h=img.naturalHeight||img.height||10;
                                  -var repeat=img.getAttribute("repeat");
                                  -if(repeat=="repeat-x"||(w==1&&h>1)){collapse(img,true);
                                  -collapse(bgImg,false);
                                  -bgImg.style.background="url("+img.src+") repeat-x";
                                  -bgImg.style.width=maxWidth+"px";
                                  -if(h>maxHeight){bgImg.style.height=maxHeight+"px"
                                  -}else{bgImg.style.height=h+"px"
                                  -}}else{if(repeat=="repeat-y"||(h==1&&w>1)){collapse(img,true);
                                  -collapse(bgImg,false);
                                  -bgImg.style.background="url("+img.src+") repeat-y";
                                  -bgImg.style.height=maxHeight+"px";
                                  -if(w>maxWidth){bgImg.style.width=maxWidth+"px"
                                  -}else{bgImg.style.width=w+"px"
                                  -}}else{if(repeat=="repeat"||(w==1&&h==1)){collapse(img,true);
                                  -collapse(bgImg,false);
                                  -bgImg.style.background="url("+img.src+") repeat";
                                  -bgImg.style.width=maxWidth+"px";
                                  -bgImg.style.height=maxHeight+"px"
                                  -}else{if(w>maxWidth||h>maxHeight){if(w>h){img.style.width=maxWidth+"px";
                                  -img.style.height=Math.round((h/w)*maxWidth)+"px"
                                  -}else{img.style.width=Math.round((w/h)*maxHeight)+"px";
                                  -img.style.height=maxHeight+"px"
                                  -}}}}}caption.innerHTML=$STRF(w+" x "+h)
                                  -};
                                  -if(isIE){setTimeout(updateInfoTip,0)
                                  -}else{updateInfoTip();
                                  -removeClass(innerBox,"infoTipLoading")
                                  -}}}),initializeBrowser:function(browser){browser.onInfoTipMouseOut=bind(this.onMouseOut,this,browser);
                                  -browser.onInfoTipMouseMove=bind(this.onMouseMove,this,browser);
                                  -var doc=browser.document;
                                  -if(!doc){return
                                  -}addEvent(doc,"mouseover",browser.onInfoTipMouseMove);
                                  -addEvent(doc,"mouseout",browser.onInfoTipMouseOut);
                                  -addEvent(doc,"mousemove",browser.onInfoTipMouseMove);
                                  -return browser.infoTip=this.tags.infoTipTag.append({},getBody(doc))
                                  -},uninitializeBrowser:function(browser){if(browser.infoTip){var doc=browser.document;
                                  -removeEvent(doc,"mouseover",browser.onInfoTipMouseMove);
                                  -removeEvent(doc,"mouseout",browser.onInfoTipMouseOut);
                                  -removeEvent(doc,"mousemove",browser.onInfoTipMouseMove);
                                  -browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -delete browser.infoTip;
                                  -delete browser.onInfoTipMouseMove
                                  -}},showInfoTip:function(infoTip,panel,target,x,y,rangeParent,rangeOffset){if(!Firebug.showInfoTips){return
                                  -}var scrollParent=getOverflowParent(target);
                                  -var scrollX=x+(scrollParent?scrollParent.scrollLeft:0);
                                  -if(panel.showInfoTip(infoTip,target,scrollX,y,rangeParent,rangeOffset)){var htmlElt=infoTip.ownerDocument.documentElement;
                                  -var panelWidth=htmlElt.clientWidth;
                                  -var panelHeight=htmlElt.clientHeight;
                                  -if(x+infoTip.offsetWidth+infoTipMargin>panelWidth){infoTip.style.left=Math.max(0,panelWidth-(infoTip.offsetWidth+infoTipMargin))+"px";
                                  -infoTip.style.right="auto"
                                  -}else{infoTip.style.left=(x+infoTipMargin)+"px";
                                  -infoTip.style.right="auto"
                                  -}if(y+infoTip.offsetHeight+infoTipMargin>panelHeight){infoTip.style.top=Math.max(0,panelHeight-(infoTip.offsetHeight+infoTipMargin))+"px";
                                  -infoTip.style.bottom="auto"
                                  -}else{infoTip.style.top=(y+infoTipMargin)+"px";
                                  -infoTip.style.bottom="auto"
                                  -}if(FBTrace.DBG_INFOTIP){FBTrace.sysout("infotip.showInfoTip; top: "+infoTip.style.top+", left: "+infoTip.style.left+", bottom: "+infoTip.style.bottom+", right:"+infoTip.style.right+", offsetHeight: "+infoTip.offsetHeight+", offsetWidth: "+infoTip.offsetWidth+", x: "+x+", panelWidth: "+panelWidth+", y: "+y+", panelHeight: "+panelHeight)
                                  -}infoTip.setAttribute("active","true")
                                  -}else{this.hideInfoTip(infoTip)
                                  -}},hideInfoTip:function(infoTip){if(infoTip){infoTip.removeAttribute("active")
                                  -}},onMouseOut:function(event,browser){if(!event.relatedTarget){this.hideInfoTip(browser.infoTip)
                                  -}},onMouseMove:function(event,browser){if(getAncestorByClass(event.target,"infoTip")){return
                                  -}if(browser.currentPanel){var x=event.clientX,y=event.clientY,target=event.target||event.srcElement;
                                  -this.showInfoTip(browser.infoTip,browser.currentPanel,target,x,y,event.rangeParent,event.rangeOffset)
                                  -}else{this.hideInfoTip(browser.infoTip)
                                  -}},populateColorInfoTip:function(infoTip,color){this.tags.colorTag.replace({rgbValue:color},infoTip);
                                  -return true
                                  -},populateImageInfoTip:function(infoTip,url,repeat){if(!repeat){repeat="no-repeat"
                                  -}this.tags.imgTag.replace({urlValue:url,repeat:repeat},infoTip);
                                  -return true
                                  -},disable:function(){},showPanel:function(browser,panel){if(panel){var infoTip=panel.panelBrowser.infoTip;
                                  -if(!infoTip){infoTip=this.initializeBrowser(panel.panelBrowser)
                                  -}this.hideInfoTip(infoTip)
                                  -}},showSidePanel:function(browser,panel){this.showPanel(browser,panel)
                                  -}});
                                  -Firebug.registerModule(Firebug.InfoTip)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var CssParser=null;
                                  -CssParser=(function(){function rule(start,body_start,end){return{start:start||0,body_start:body_start||0,end:end||0,line:-1,selector:null,parent:null,children:[],addChild:function(start,body_start,end){var r=rule(start,body_start,end);
                                  -r.parent=this;
                                  -this.children.push(r);
                                  -return r
                                  -},lastChild:function(){return this.children[this.children.length-1]
                                  -}}
                                  -}function removeAll(str,re){var m;
                                  -while(m=str.match(re)){str=str.substring(m[0].length)
                                  -}return str
                                  -}function trim(str){return str.replace(/^\s+|\s+$/g,"")
                                  -}function normalizeSelector(selector){selector=selector.replace(/[\n\r]/g," ");
                                  -selector=trim(selector);
                                  -selector=selector.replace(/\s*,\s*/g,",");
                                  -return selector
                                  -}function preprocessRules(text,rule_node){for(var i=0,il=rule_node.children.length;
                                  -i<il;
                                  -i++){var r=rule_node.children[i],rule_start=text.substring(r.start,r.body_start),cur_len=rule_start.length;
                                  -rule_start=rule_start.replace(/[\n\r]/g," ");
                                  -rule_start=removeAll(rule_start,/^\s*\/\*.*?\*\/[\s\t]*/);
                                  -rule_start=rule_start.replace(/^[\s\t]+/,"");
                                  -r.start+=(cur_len-rule_start.length);
                                  -r.selector=normalizeSelector(rule_start)
                                  -}return rule_node
                                  -}function saveLineIndexes(text){var result=[0],i=0,il=text.length,ch,ch2;
                                  -while(i<il){ch=text.charAt(i);
                                  -if(ch=="\n"||ch=="\r"){if(ch=="\r"&&i<il-1&&text.charAt(i+1)=="\n"){i++
                                  -}result.push(i+1)
                                  -}i++
                                  -}return result
                                  -}function saveLineNumbers(text,rule_node,line_indexes,startLine){preprocessRules(text,rule_node);
                                  -startLine=startLine||0;
                                  -if(!line_indexes){var line_indexes=saveLineIndexes(text)
                                  -}for(var i=0,il=rule_node.children.length;
                                  -i<il;
                                  -i++){var r=rule_node.children[i];
                                  -r.line=line_indexes.length+startLine;
                                  -for(var j=0,jl=line_indexes.length-1;
                                  -j<jl;
                                  -j++){var line_ix=line_indexes[j];
                                  -if(r.start>=line_indexes[j]&&r.start<line_indexes[j+1]){r.line=j+1+startLine;
                                  -break
                                  -}}saveLineNumbers(text,r,line_indexes)
                                  -}return rule_node
                                  -}return{read:function(text,startLine){var rule_start=[],rule_body_start=[],rules=[],in_comment=0,root=rule(),cur_parent=root,last_rule=null,stack=[],ch,ch2;
                                  -stack.last=function(){return this[this.length-1]
                                  -};
                                  -function hasStr(pos,substr){return text.substr(pos,substr.length)==substr
                                  -}for(var i=0,il=text.length;
                                  -i<il;
                                  -i++){ch=text.charAt(i);
                                  -ch2=i<il-1?text.charAt(i+1):"";
                                  -if(!rule_start.length){rule_start.push(i)
                                  -}switch(ch){case"@":if(!in_comment){if(hasStr(i,"@import")){var m=text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -if(m){cur_parent.addChild(i,i+7,i+m[0].length);
                                  -i+=m[0].length;
                                  -rule_start.pop()
                                  -}break
                                  -}}case"/":if(!in_comment&&ch2=="*"){in_comment++
                                  -}break;
                                  -case"*":if(ch2=="/"){in_comment--
                                  -}break;
                                  -case"{":if(!in_comment){rule_body_start.push(i);
                                  -cur_parent=cur_parent.addChild(rule_start.pop());
                                  -stack.push(cur_parent)
                                  -}break;
                                  -case"}":if(!in_comment){var last_rule=stack.pop();
                                  -rule_start.pop();
                                  -last_rule.body_start=rule_body_start.pop();
                                  -last_rule.end=i;
                                  -cur_parent=last_rule.parent||root
                                  -}break
                                  -}}return saveLineNumbers(text,root,null,startLine)
                                  -},normalizeSelector:normalizeSelector,findBySelector:function(rule_node,selector,source){var selector=normalizeSelector(selector),result=[];
                                  -if(rule_node){for(var i=0,il=rule_node.children.length;
                                  -i<il;
                                  -i++){var r=rule_node.children[i];
                                  -if(r.selector==selector){result.push(r)
                                  -}}}if(result.length){return result
                                  -}else{return null
                                  -}}}
                                  -})();
                                  -FBL.CssParser=CssParser
                                  -}});
                                  -FBL.ns(function(){with(FBL){var CssAnalyzer={};
                                  -var CSSRuleMap={};
                                  -var ElementCSSRulesMap={};
                                  -var internalStyleSheetIndex=-1;
                                  -var reSelectorTag=/(^|\s)(?:\w+)/g;
                                  -var reSelectorClass=/\.[\w\d_-]+/g;
                                  -var reSelectorId=/#[\w\d_-]+/g;
                                  -var globalCSSRuleIndex;
                                  -var processAllStyleSheetsTimeout=null;
                                  -var externalStyleSheetURLs=[];
                                  -var ElementCache=Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache=Firebug.Lite.Cache.StyleSheet;
                                  -CssAnalyzer.externalStyleSheetWarning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",style:"font-weight:normal;",role:"listitem"},SPAN("$object|STR"),A({href:"$href",target:"_blank"},"$link|STR"))});
                                  -CssAnalyzer.processAllStyleSheets=function(doc,styleSheetIterator){try{processAllStyleSheets(doc,styleSheetIterator)
                                  -}catch(e){FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ",e)
                                  -}};
                                  -CssAnalyzer.getElementCSSRules=function(element){try{return getElementCSSRules(element)
                                  -}catch(e){FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ",e)
                                  -}};
                                  -CssAnalyzer.getRuleData=function(ruleId){return CSSRuleMap[ruleId]
                                  -};
                                  -CssAnalyzer.getRuleLine=function(){};
                                  -CssAnalyzer.hasExternalStyleSheet=function(){return externalStyleSheetURLs.length>0
                                  -};
                                  -CssAnalyzer.parseStyleSheet=function(href){var sourceData=extractSourceData(href);
                                  -var parsedObj=CssParser.read(sourceData.source,sourceData.startLine);
                                  -var parsedRules=parsedObj.children;
                                  -for(var i=0;
                                  -i<parsedRules.length;
                                  -){if(parsedRules[i].selector.indexOf("@")!=-1){parsedRules.splice(i,1)
                                  -}else{i++
                                  -}}return parsedRules
                                  -};
                                  -var processAllStyleSheets=function(doc,styleSheetIterator){styleSheetIterator=styleSheetIterator||processStyleSheet;
                                  -globalCSSRuleIndex=-1;
                                  -var styleSheets=doc.styleSheets;
                                  -var importedStyleSheets=[];
                                  -if(FBTrace.DBG_CSS){var start=new Date().getTime()
                                  -}for(var i=0,length=styleSheets.length;
                                  -i<length;
                                  -i++){try{var styleSheet=styleSheets[i];
                                  -if("firebugIgnore" in styleSheet){continue
                                  -}var rules=isIE?styleSheet.rules:styleSheet.cssRules;
                                  -rules.length
                                  -}catch(e){externalStyleSheetURLs.push(styleSheet.href);
                                  -styleSheet.restricted=true;
                                  -var ssid=StyleSheetCache(styleSheet)
                                  -}styleSheetIterator(doc,styleSheet);
                                  -var importedStyleSheet,importedRules;
                                  -if(isIE){var imports=styleSheet.imports;
                                  -for(var j=0,importsLength=imports.length;
                                  -j<importsLength;
                                  -j++){try{importedStyleSheet=imports[j];
                                  -importedRules=importedStyleSheet.rules;
                                  -importedRules.length
                                  -}catch(e){externalStyleSheetURLs.push(styleSheet.href);
                                  -importedStyleSheet.restricted=true;
                                  -var ssid=StyleSheetCache(importedStyleSheet)
                                  -}styleSheetIterator(doc,importedStyleSheet)
                                  -}}else{if(rules){for(var j=0,rulesLength=rules.length;
                                  -j<rulesLength;
                                  -j++){try{var rule=rules[j];
                                  -importedStyleSheet=rule.styleSheet;
                                  -if(importedStyleSheet){importedRules=importedStyleSheet.cssRules;
                                  -importedRules.length
                                  -}else{break
                                  -}}catch(e){externalStyleSheetURLs.push(styleSheet.href);
                                  -importedStyleSheet.restricted=true;
                                  -var ssid=StyleSheetCache(importedStyleSheet)
                                  -}styleSheetIterator(doc,importedStyleSheet)
                                  -}}}}if(FBTrace.DBG_CSS){FBTrace.sysout("FBL.processAllStyleSheets","all stylesheet rules processed in "+(new Date().getTime()-start)+"ms")
                                  -}};
                                  -var processStyleSheet=function(doc,styleSheet){if(styleSheet.restricted){return
                                  -}var rules=isIE?styleSheet.rules:styleSheet.cssRules;
                                  -var ssid=StyleSheetCache(styleSheet);
                                  -var href=styleSheet.href;
                                  -var shouldParseCSS=typeof CssParser!="undefined"&&!Firebug.disableResourceFetching;
                                  -if(shouldParseCSS){try{var parsedRules=CssAnalyzer.parseStyleSheet(href)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("processStyleSheet FAILS",e.message||e)
                                  -}shouldParseCSS=false
                                  -}finally{var parsedRulesIndex=0;
                                  -var dontSupportGroupedRules=isIE&&browserVersion<9;
                                  -var group=[];
                                  -var groupItem
                                  -}}for(var i=0,length=rules.length;
                                  -i<length;
                                  -i++){var rid=ssid+":"+i;
                                  -var rule=rules[i];
                                  -var selector=rule.selectorText||"";
                                  -var lineNo=null;
                                  -if(!selector||selector.indexOf("@")!=-1){continue
                                  -}if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase()
                                  -})
                                  -}if(shouldParseCSS){var parsedRule=parsedRules[parsedRulesIndex];
                                  -var parsedSelector=parsedRule.selector;
                                  -if(dontSupportGroupedRules&&parsedSelector.indexOf(",")!=-1&&group.length==0){group=parsedSelector.split(",")
                                  -}if(dontSupportGroupedRules&&group.length>0){groupItem=group.shift();
                                  -if(CssParser.normalizeSelector(selector)==groupItem){lineNo=parsedRule.line
                                  -}if(group.length==0){parsedRulesIndex++
                                  -}}else{if(CssParser.normalizeSelector(selector)==parsedRule.selector){lineNo=parsedRule.line;
                                  -parsedRulesIndex++
                                  -}}}CSSRuleMap[rid]={styleSheetId:ssid,styleSheetIndex:i,order:++globalCSSRuleIndex,specificity:selector&&selector.indexOf(",")==-1?getCSSRuleSpecificity(selector):0,rule:rule,lineNo:lineNo,selector:selector,cssText:rule.style?rule.style.cssText:rule.cssText?rule.cssText:""};
                                  -var elements=Firebug.Selector(selector,doc);
                                  -for(var j=0,elementsLength=elements.length;
                                  -j<elementsLength;
                                  -j++){var element=elements[j];
                                  -var eid=ElementCache(element);
                                  -if(!ElementCSSRulesMap[eid]){ElementCSSRulesMap[eid]=[]
                                  -}ElementCSSRulesMap[eid].push(rid)
                                  -}}};
                                  -var loadExternalStylesheet=function(doc,styleSheetIterator,styleSheet){var url=styleSheet.href;
                                  -styleSheet.firebugIgnore=true;
                                  -var source=Firebug.Lite.Proxy.load(url);
                                  -source=source.replace(/url\(([^\)]+)\)/g,function(a,name){var hasDomain=/\w+:\/\/./.test(name);
                                  -if(!hasDomain){name=name.replace(/^(["'])(.+)\1$/,"$2");
                                  -var first=name.charAt(0);
                                  -if(first=="/"){var m=/^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -return m?"url("+m[1]+name+")":"url("+name+")"
                                  -}else{var path=url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g,"");
                                  -path=path+name;
                                  -var reBack=/[^\/]+\/\.\.\//;
                                  -while(reBack.test(path)){path=path.replace(reBack,"")
                                  -}return"url("+path+")"
                                  -}}return a
                                  -});
                                  -var oldStyle=styleSheet.ownerNode;
                                  -if(!oldStyle){return
                                  -}if(!oldStyle.parentNode){return
                                  -}var style=createGlobalElement("style");
                                  -style.setAttribute("charset","utf-8");
                                  -style.setAttribute("type","text/css");
                                  -style.innerHTML=source;
                                  -oldStyle.parentNode.insertBefore(style,oldStyle.nextSibling);
                                  -oldStyle.parentNode.removeChild(oldStyle);
                                  -doc.styleSheets[doc.styleSheets.length-1].externalURL=url;
                                  -console.log(url,"call "+externalStyleSheetURLs.length,source);
                                  -externalStyleSheetURLs.pop();
                                  -if(processAllStyleSheetsTimeout){clearTimeout(processAllStyleSheetsTimeout)
                                  -}processAllStyleSheetsTimeout=setTimeout(function(){console.log("processing");
                                  -FBL.processAllStyleSheets(doc,styleSheetIterator);
                                  -processAllStyleSheetsTimeout=null
                                  -},200)
                                  -};
                                  -var getElementCSSRules=function(element){var eid=ElementCache(element);
                                  -var rules=ElementCSSRulesMap[eid];
                                  -if(!rules){return
                                  -}var arr=[element];
                                  -var Selector=Firebug.Selector;
                                  -var ruleId,rule;
                                  -for(var i=0,length=rules.length;
                                  -i<length;
                                  -i++){ruleId=rules[i];
                                  -rule=CSSRuleMap[ruleId];
                                  -if(rule.selector.indexOf(",")!=-1){var selectors=rule.selector.split(",");
                                  -var maxSpecificity=-1;
                                  -var sel,spec,mostSpecificSelector;
                                  -for(var j,len=selectors.length;
                                  -j<len;
                                  -j++){sel=selectors[j];
                                  -if(Selector.matches(sel,arr).length==1){spec=getCSSRuleSpecificity(sel);
                                  -if(spec>maxSpecificity){maxSpecificity=spec;
                                  -mostSpecificSelector=sel
                                  -}}}rule.specificity=maxSpecificity
                                  -}}rules.sort(sortElementRules);
                                  -return rules
                                  -};
                                  -var sortElementRules=function(a,b){var ruleA=CSSRuleMap[a];
                                  -var ruleB=CSSRuleMap[b];
                                  -var specificityA=ruleA.specificity;
                                  -var specificityB=ruleB.specificity;
                                  -if(specificityA>specificityB){return 1
                                  -}else{if(specificityA<specificityB){return -1
                                  -}else{return ruleA.order>ruleB.order?1:-1
                                  -}}};
                                  -var solveRulesTied=function(a,b){var ruleA=CSSRuleMap[a];
                                  -var ruleB=CSSRuleMap[b];
                                  -if(ruleA.specificity==ruleB.specificity){return ruleA.order>ruleB.order?1:-1
                                  -}return null
                                  -};
                                  -var getCSSRuleSpecificity=function(selector){var match=selector.match(reSelectorTag);
                                  -var tagCount=match?match.length:0;
                                  -match=selector.match(reSelectorClass);
                                  -var classCount=match?match.length:0;
                                  -match=selector.match(reSelectorId);
                                  -var idCount=match?match.length:0;
                                  -return tagCount+10*classCount+100*idCount
                                  -};
                                  -var extractSourceData=function(href){var sourceData={source:null,startLine:0};
                                  -if(href){sourceData.source=Firebug.Lite.Proxy.load(href)
                                  -}else{var index=0;
                                  -var ssIndex=++internalStyleSheetIndex;
                                  -var reStyleTag=/\<\s*style.*\>/gi;
                                  -var reEndStyleTag=/\<\/\s*style.*\>/gi;
                                  -var source=Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -source=source.replace(/\n\r|\r\n/g,"\n");
                                  -var startLine=0;
                                  -do{var matchStyleTag=source.match(reStyleTag);
                                  -var i0=source.indexOf(matchStyleTag[0])+matchStyleTag[0].length;
                                  -for(var i=0;
                                  -i<i0;
                                  -i++){if(source.charAt(i)=="\n"){startLine++
                                  -}}source=source.substr(i0);
                                  -index++
                                  -}while(index<=ssIndex);
                                  -var matchEndStyleTag=source.match(reEndStyleTag);
                                  -var i1=source.indexOf(matchEndStyleTag[0]);
                                  -var extractedSource=source.substr(0,i1);
                                  -sourceData.source=extractedSource;
                                  -sourceData.startLine=startLine
                                  -}return sourceData
                                  -};
                                  -FBL.CssAnalyzer=CssAnalyzer
                                  -}});
                                  -(function(){this.getElementXPath=function(element){try{if(element&&element.id){return'//*[@id="'+element.id+'"]'
                                  -}else{return this.getElementTreeXPath(element)
                                  -}}catch(E){}};
                                  -this.getElementTreeXPath=function(element){var paths=[];
                                  -for(;
                                  -element&&element.nodeType==1;
                                  -element=element.parentNode){var index=0;
                                  -var nodeName=element.nodeName;
                                  -for(var sibling=element.previousSibling;
                                  -sibling;
                                  -sibling=sibling.previousSibling){if(sibling.nodeType!=1){continue
                                  -}if(sibling.nodeName==nodeName){++index
                                  -}}var tagName=element.nodeName.toLowerCase();
                                  -var pathIndex=(index?"["+(index+1)+"]":"");
                                  -paths.splice(0,0,tagName+pathIndex)
                                  -}return paths.length?"/"+paths.join("/"):null
                                  -};
                                  -this.getElementsByXPath=function(doc,xpath){var nodes=[];
                                  -try{var result=doc.evaluate(xpath,doc,null,XPathResult.ANY_TYPE,null);
                                  -for(var item=result.iterateNext();
                                  -item;
                                  -item=result.iterateNext()){nodes.push(item)
                                  -}}catch(exc){}return nodes
                                  -};
                                  -this.getRuleMatchingElements=function(rule,doc){var css=rule.selectorText;
                                  -var xpath=this.cssToXPath(css);
                                  -return this.getElementsByXPath(doc,xpath)
                                  -}
                                  -}).call(FBL);
                                  -FBL.ns(function(){with(FBL){var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn)
                                  -};
                                  -var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase()
                                  -};
                                  -var reCamelCase=/([A-Z])/g;
                                  -var reSelectorCase=/\-(.)/g;
                                  -var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase()
                                  -};
                                  -var ElementCache=Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache=Firebug.Lite.Cache.StyleSheet;
                                  -Firebug.SourceBoxPanel=Firebug.Panel;
                                  -var reSelectorTag=/(^|\s)(?:\w+)/g;
                                  -var domUtils=null;
                                  -var textContent=isIE?"innerText":"textContent";
                                  -var CSSDomplateBase={isEditable:function(rule){return !rule.isSystemSheet
                                  -},isSelectorEditable:function(rule){return rule.isSelectorEditable&&this.isEditable(rule)
                                  -}};
                                  -var CSSPropTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssProp focusRow",$disabledStyle:"$prop.disabled",$editGroup:"$rule|isEditable",$cssOverridden:"$prop.overridden",role:"option"},A({"class":"cssPropDisable"},"&nbsp;&nbsp;"),SPAN({"class":"cssPropName",$editable:"$rule|isEditable"},"$prop.name"),SPAN({"class":"cssColon"},":"),SPAN({"class":"cssPropValue",$editable:"$rule|isEditable"},"$prop.value$prop.important"),SPAN({"class":"cssSemi"},";"))});
                                  -var CSSRuleTag=TAG("$rule.tag",{rule:"$rule"});
                                  -var CSSImportRuleTag=domplate({tag:DIV({"class":"cssRule insertInto focusRow importRule",_repObject:"$rule.rule"},"@import &quot;",A({"class":"objectLink",_repObject:"$rule.rule.styleSheet"},"$rule.rule.href"),"&quot;;")});
                                  -var CSSStyleRuleTag=domplate(CSSDomplateBase,{tag:DIV({"class":"cssRule insertInto",$cssEditableRule:"$rule|isEditable",$editGroup:"$rule|isSelectorEditable",_repObject:"$rule.rule",ruleId:"$rule.id",role:"presentation"},DIV({"class":"cssHead focusRow",role:"listitem"},SPAN({"class":"cssSelector",$editable:"$rule|isSelectorEditable"},"$rule.selector")," {"),DIV({role:"group"},DIV({"class":"cssPropertyListBox",role:"listbox"},FOR("prop","$rule.props",TAG(CSSPropTag.tag,{rule:"$rule",prop:"$prop"})))),DIV({"class":"editable insertBefore",role:"presentation"},"}"))});
                                  -var reSplitCSS=/(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -var reURL=/url\("?([^"\)]+)?"?\)/;
                                  -var reRepeat=/no-repeat|repeat-x|repeat-y|repeat/;
                                  -var sothinkInstalled=false;
                                  -var styleGroups={text:["font-family","font-size","font-weight","font-style","color","text-transform","text-decoration","letter-spacing","word-spacing","line-height","text-align","vertical-align","direction","column-count","column-gap","column-width"],background:["background-color","background-image","background-repeat","background-position","background-attachment","opacity"],box:["width","height","top","right","bottom","left","margin-top","margin-right","margin-bottom","margin-left","padding-top","padding-right","padding-bottom","padding-left","border-top-width","border-right-width","border-bottom-width","border-left-width","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","-moz-border-top-radius","-moz-border-right-radius","-moz-border-bottom-radius","-moz-border-left-radius","outline-top-width","outline-right-width","outline-bottom-width","outline-left-width","outline-top-color","outline-right-color","outline-bottom-color","outline-left-color","outline-top-style","outline-right-style","outline-bottom-style","outline-left-style"],layout:["position","display","visibility","z-index","overflow-x","overflow-y","overflow-clip","white-space","clip","float","clear","-moz-box-sizing"],other:["cursor","list-style-image","list-style-position","list-style-type","marker-offset","user-focus","user-select","user-modify","user-input"]};
                                  -var styleGroupTitles={text:"Text",background:"Background",box:"Box Model",layout:"Layout",other:"Other"};
                                  -Firebug.CSSModule=extend(Firebug.Module,{freeEdit:function(styleSheet,value){if(!styleSheet.editStyleSheet){var ownerNode=getStyleSheetOwnerNode(styleSheet);
                                  -styleSheet.disabled=true;
                                  -var url=CCSV("@mozilla.org/network/standard-url;1",Components.interfaces.nsIURL);
                                  -url.spec=styleSheet.href;
                                  -var editStyleSheet=ownerNode.ownerDocument.createElementNS("http://www.w3.org/1999/xhtml","style");
                                  -unwrapObject(editStyleSheet).firebugIgnore=true;
                                  -editStyleSheet.setAttribute("type","text/css");
                                  -editStyleSheet.setAttributeNS("http://www.w3.org/XML/1998/namespace","base",url.directory);
                                  -if(ownerNode.hasAttribute("media")){editStyleSheet.setAttribute("media",ownerNode.getAttribute("media"))
                                  -}ownerNode.parentNode.insertBefore(editStyleSheet,ownerNode.nextSibling);
                                  -styleSheet.editStyleSheet=editStyleSheet
                                  -}styleSheet.editStyleSheet.innerHTML=value;
                                  -if(FBTrace.DBG_CSS){FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n")
                                  -}dispatch(this.fbListeners,"onCSSFreeEdit",[styleSheet,value])
                                  -},insertRule:function(styleSheet,cssText,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("Insert: "+ruleIndex+" "+cssText)
                                  -}var insertIndex=styleSheet.insertRule(cssText,ruleIndex);
                                  -dispatch(this.fbListeners,"onCSSInsertRule",[styleSheet,cssText,ruleIndex]);
                                  -return insertIndex
                                  -},deleteRule:function(styleSheet,ruleIndex){if(FBTrace.DBG_CSS){FBTrace.sysout("deleteRule: "+ruleIndex+" "+styleSheet.cssRules.length,styleSheet.cssRules)
                                  -}dispatch(this.fbListeners,"onCSSDeleteRule",[styleSheet,ruleIndex]);
                                  -styleSheet.deleteRule(ruleIndex)
                                  -},setProperty:function(rule,propName,propValue,propPriority){var style=rule.style||rule;
                                  -var baseText=style.cssText;
                                  -if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName);
                                  -var prevPriority=style.getPropertyPriority(propName);
                                  -style.removeProperty(propName);
                                  -style.setProperty(propName,propValue,propPriority)
                                  -}else{style[toCamelCase(propName)]=propValue
                                  -}if(propName){dispatch(this.fbListeners,"onCSSSetProperty",[style,propName,propValue,propPriority,prevValue,prevPriority,rule,baseText])
                                  -}},removeProperty:function(rule,propName,parent){var style=rule.style||rule;
                                  -var baseText=style.cssText;
                                  -if(style.getPropertyValue){var prevValue=style.getPropertyValue(propName);
                                  -var prevPriority=style.getPropertyPriority(propName);
                                  -style.removeProperty(propName)
                                  -}else{style[toCamelCase(propName)]=""
                                  -}if(propName){dispatch(this.fbListeners,"onCSSRemoveProperty",[style,propName,prevValue,prevPriority,rule,baseText])
                                  -}}});
                                  -Firebug.CSSStyleSheetPanel=function(){};
                                  -Firebug.CSSStyleSheetPanel.prototype=extend(Firebug.SourceBoxPanel,{template:domplate({tag:DIV({"class":"cssSheet insertInto a11yCSSView"},FOR("rule","$rules",CSSRuleTag),DIV({"class":"cssSheet editable insertBefore"},""))}),refresh:function(){if(this.location){this.updateLocation(this.location)
                                  -}else{if(this.selection){this.updateSelection(this.selection)
                                  -}}},toggleEditing:function(){if(!this.stylesheetEditor){this.stylesheetEditor=new StyleSheetEditor(this.document)
                                  -}if(this.editing){Firebug.Editor.stopEditing()
                                  -}else{if(!this.location){return
                                  -}var styleSheet=this.location.editStyleSheet?this.location.editStyleSheet.sheet:this.location;
                                  -var css=getStyleSheetCSS(styleSheet,this.context);
                                  -this.stylesheetEditor.styleSheet=this.location;
                                  -Firebug.Editor.startEditing(this.panelNode,css,this.stylesheetEditor)
                                  -}},getStylesheetURL:function(rule){if(this.location.href){return this.location.href
                                  -}else{return this.context.window.location.href
                                  -}},getRuleByLine:function(styleSheet,line){if(!domUtils){return null
                                  -}var cssRules=styleSheet.cssRules;
                                  -for(var i=0;
                                  -i<cssRules.length;
                                  -++i){var rule=cssRules[i];
                                  -if(rule instanceof CSSStyleRule){var ruleLine=domUtils.getRuleLine(rule);
                                  -if(ruleLine>=line){return rule
                                  -}}}},highlightRule:function(rule){var ruleElement=Firebug.getElementByRepObject(this.panelNode.firstChild,rule);
                                  -if(ruleElement){scrollIntoCenterView(ruleElement,this.panelNode);
                                  -setClassTimed(ruleElement,"jumpHighlight",this.context)
                                  -}},getStyleSheetRules:function(context,styleSheet){var isSystemSheet=isSystemStyleSheet(styleSheet);
                                  -function appendRules(cssRules){for(var i=0;
                                  -i<cssRules.length;
                                  -++i){var rule=cssRules[i];
                                  -if(instanceOf(rule,"CSSStyleRule")){var props=this.getRuleProperties(context,rule);
                                  -var line=null;
                                  -var selector=rule.selectorText;
                                  -if(isIE){selector=selector.replace(reSelectorTag,function(s){return s.toLowerCase()
                                  -})
                                  -}var ruleId=rule.selectorText+"/"+line;
                                  -rules.push({tag:CSSStyleRuleTag.tag,rule:rule,id:ruleId,selector:selector,props:props,isSystemSheet:isSystemSheet,isSelectorEditable:true})
                                  -}else{if(instanceOf(rule,"CSSImportRule")){rules.push({tag:CSSImportRuleTag.tag,rule:rule})
                                  -}else{if(instanceOf(rule,"CSSMediaRule")){appendRules.apply(this,[rule.cssRules])
                                  -}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_CSS){FBTrace.sysout("css getStyleSheetRules failed to classify a rule ",rule)
                                  -}}}}}}var rules=[];
                                  -appendRules.apply(this,[styleSheet.cssRules||styleSheet.rules]);
                                  -return rules
                                  -},parseCSSProps:function(style,inheritMode){var props=[];
                                  -if(Firebug.expandShorthandProps){var count=style.length-1,index=style.length;
                                  -while(index--){var propName=style.item(count-index);
                                  -this.addProperty(propName,style.getPropertyValue(propName),!!style.getPropertyPriority(propName),false,inheritMode,props)
                                  -}}else{var lines=style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -var propRE=/\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -var line,i=0;
                                  -var m;
                                  -while(line=lines[i++]){m=propRE.exec(line);
                                  -if(!m){continue
                                  -}if(m[2]){this.addProperty(m[1],m[2],!!m[3],false,inheritMode,props)
                                  -}}}return props
                                  -},getRuleProperties:function(context,rule,inheritMode){var props=this.parseCSSProps(rule.style,inheritMode);
                                  -var line;
                                  -var ruleId=rule.selectorText+"/"+line;
                                  -this.addOldProperties(context,ruleId,inheritMode,props);
                                  -sortProperties(props);
                                  -return props
                                  -},addOldProperties:function(context,ruleId,inheritMode,props){if(context.selectorMap&&context.selectorMap.hasOwnProperty(ruleId)){var moreProps=context.selectorMap[ruleId];
                                  -for(var i=0;
                                  -i<moreProps.length;
                                  -++i){var prop=moreProps[i];
                                  -this.addProperty(prop.name,prop.value,prop.important,true,inheritMode,props)
                                  -}}},addProperty:function(name,value,important,disabled,inheritMode,props){name=name.toLowerCase();
                                  -if(inheritMode&&!inheritedStyleNames[name]){return
                                  -}name=this.translateName(name,value);
                                  -if(name){value=stripUnits(rgbToHex(value));
                                  -important=important?" !important":"";
                                  -var prop={name:name,value:value,important:important,disabled:disabled};
                                  -props.push(prop)
                                  -}},translateName:function(name,value){if((value=="-moz-initial"&&(name=="-moz-background-clip"||name=="-moz-background-origin"||name=="-moz-background-inline-policy"))||(value=="physical"&&(name=="margin-left-ltr-source"||name=="margin-left-rtl-source"||name=="margin-right-ltr-source"||name=="margin-right-rtl-source"))||(value=="physical"&&(name=="padding-left-ltr-source"||name=="padding-left-rtl-source"||name=="padding-right-ltr-source"||name=="padding-right-rtl-source"))){return null
                                  -}if(name=="margin-left-value"){return"margin-left"
                                  -}else{if(name=="margin-right-value"){return"margin-right"
                                  -}else{if(name=="margin-top-value"){return"margin-top"
                                  -}else{if(name=="margin-bottom-value"){return"margin-bottom"
                                  -}else{if(name=="padding-left-value"){return"padding-left"
                                  -}else{if(name=="padding-right-value"){return"padding-right"
                                  -}else{if(name=="padding-top-value"){return"padding-top"
                                  -}else{if(name=="padding-bottom-value"){return"padding-bottom"
                                  -}else{return name
                                  -}}}}}}}}},editElementStyle:function(){var rulesBox=$$(".cssElementRuleContainer",this.panelNode)[0];
                                  -var styleRuleBox=rulesBox&&Firebug.getElementByRepObject(rulesBox,this.selection);
                                  -if(!styleRuleBox){var rule={rule:this.selection,inherited:false,selector:"element.style",props:[]};
                                  -if(!rulesBox){styleRuleBox=this.template.cascadedTag.replace({rules:[rule],inherited:[],inheritLabel:"Inherited from"},this.panelNode);
                                  -styleRuleBox=$$(".cssElementRuleContainer",styleRuleBox)[0]
                                  -}else{styleRuleBox=this.template.ruleTag.insertBefore({rule:rule},rulesBox)
                                  -}styleRuleBox=$$(".insertInto",styleRuleBox)[0]
                                  -}Firebug.Editor.insertRowForObject(styleRuleBox)
                                  -},insertPropertyRow:function(row){Firebug.Editor.insertRowForObject(row)
                                  -},insertRule:function(row){var location=getAncestorByClass(row,"cssRule");
                                  -if(!location){location=getChildByClass(this.panelNode,"cssSheet");
                                  -Firebug.Editor.insertRowForObject(location)
                                  -}else{Firebug.Editor.insertRow(location,"before")
                                  -}},editPropertyRow:function(row){var propValueBox=getChildByClass(row,"cssPropValue");
                                  -Firebug.Editor.startEditing(propValueBox)
                                  -},deletePropertyRow:function(row){var rule=Firebug.getRepObject(row);
                                  -var propName=getChildByClass(row,"cssPropName")[textContent];
                                  -Firebug.CSSModule.removeProperty(rule,propName);
                                  -var ruleId=Firebug.getRepNode(row).getAttribute("ruleId");
                                  -if(this.context.selectorMap&&this.context.selectorMap.hasOwnProperty(ruleId)){var map=this.context.selectorMap[ruleId];
                                  -for(var i=0;
                                  -i<map.length;
                                  -++i){if(map[i].name==propName){map.splice(i,1);
                                  -break
                                  -}}}if(this.name=="stylesheet"){dispatch([Firebug.A11yModel],"onInlineEditorClose",[this,row.firstChild,true])
                                  -}row.parentNode.removeChild(row);
                                  -this.markChange(this.name=="stylesheet")
                                  -},disablePropertyRow:function(row){toggleClass(row,"disabledStyle");
                                  -var rule=Firebug.getRepObject(row);
                                  -var propName=getChildByClass(row,"cssPropName")[textContent];
                                  -if(!this.context.selectorMap){this.context.selectorMap={}
                                  -}var ruleId=Firebug.getRepNode(row).getAttribute("ruleId");
                                  -if(!(this.context.selectorMap.hasOwnProperty(ruleId))){this.context.selectorMap[ruleId]=[]
                                  -}var map=this.context.selectorMap[ruleId];
                                  -var propValue=getChildByClass(row,"cssPropValue")[textContent];
                                  -var parsedValue=parsePriority(propValue);
                                  -if(hasClass(row,"disabledStyle")){Firebug.CSSModule.removeProperty(rule,propName);
                                  -map.push({name:propName,value:parsedValue.value,important:parsedValue.priority})
                                  -}else{Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority);
                                  -var index=findPropByName(map,propName);
                                  -map.splice(index,1)
                                  -}this.markChange(this.name=="stylesheet")
                                  -},onMouseDown:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft;
                                  -if(!isLeftClick(event)||offset>20){return
                                  -}var target=event.target||event.srcElement;
                                  -if(hasClass(target,"textEditor")){return
                                  -}var row=getAncestorByClass(target,"cssProp");
                                  -if(row&&hasClass(row,"editGroup")){this.disablePropertyRow(row);
                                  -cancelEvent(event)
                                  -}},onDoubleClick:function(event){var offset=event.clientX-this.panelNode.parentNode.offsetLeft;
                                  -if(!isLeftClick(event)||offset<=20){return
                                  -}var target=event.target||event.srcElement;
                                  -if(hasClass(target,"textEditorInner")){return
                                  -}var row=getAncestorByClass(target,"cssRule");
                                  -if(row&&!getAncestorByClass(target,"cssPropName")&&!getAncestorByClass(target,"cssPropValue")){this.insertPropertyRow(row);
                                  -cancelEvent(event)
                                  -}},name:"stylesheet",title:"CSS",parentPanel:null,searchable:true,dependents:["css","stylesheet","dom","domSide","layout"],options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onMouseDown=bind(this.onMouseDown,this);
                                  -this.onDoubleClick=bind(this.onDoubleClick,this);
                                  -if(this.name=="stylesheet"){this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var selectNode=this.selectNode=createElement("select");
                                  -CssAnalyzer.processAllStyleSheets(doc,function(doc,styleSheet){var key=StyleSheetCache.key(styleSheet);
                                  -var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:key});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -});
                                  -this.toolButtonsNode.appendChild(selectNode)
                                  -}},onChangeSelect:function(event){event=event||window.event;
                                  -var target=event.srcElement||event.currentTarget;
                                  -var key=target.value;
                                  -var styleSheet=StyleSheetCache.get(key);
                                  -this.updateLocation(styleSheet)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.context=Firebug.chrome;
                                  -this.document=Firebug.chrome.document;
                                  -this.initializeNode();
                                  -if(this.name=="stylesheet"){var styleSheets=Firebug.browser.document.styleSheets;
                                  -if(styleSheets.length>0){addEvent(this.selectNode,"change",this.onChangeSelect);
                                  -this.updateLocation(styleSheets[0])
                                  -}}},shutdown:function(){Firebug.Editor.stopEditing();
                                  -if(this.name=="stylesheet"){removeEvent(this.selectNode,"change",this.onChangeSelect)
                                  -}this.destroyNode();
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},destroy:function(state){Firebug.Panel.destroy.apply(this,arguments)
                                  -},initializeNode:function(oldPanelNode){addEvent(this.panelNode,"mousedown",this.onMouseDown);
                                  -addEvent(this.panelNode,"dblclick",this.onDoubleClick)
                                  -},destroyNode:function(){removeEvent(this.panelNode,"mousedown",this.onMouseDown);
                                  -removeEvent(this.panelNode,"dblclick",this.onDoubleClick)
                                  -},ishow:function(state){Firebug.Inspector.stopInspecting(true);
                                  -this.showToolbarButtons("fbCSSButtons",true);
                                  -if(this.context.loaded&&!this.location){restoreObjects(this,state);
                                  -if(!this.location){this.location=this.getDefaultLocation()
                                  -}if(state&&state.scrollTop){this.panelNode.scrollTop=state.scrollTop
                                  -}}},ihide:function(){this.showToolbarButtons("fbCSSButtons",false);
                                  -this.lastScrollTop=this.panelNode.scrollTop
                                  -},supportsObject:function(object){if(object instanceof CSSStyleSheet){return 1
                                  -}else{if(object instanceof CSSStyleRule){return 2
                                  -}else{if(object instanceof CSSStyleDeclaration){return 2
                                  -}else{if(object instanceof SourceLink&&object.type=="css"&&reCSS.test(object.href)){return 2
                                  -}else{return 0
                                  -}}}}},updateLocation:function(styleSheet){if(!styleSheet){return
                                  -}if(styleSheet.editStyleSheet){styleSheet=styleSheet.editStyleSheet.sheet
                                  -}if(styleSheet.restricted){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},this.panelNode);
                                  -CssAnalyzer.externalStyleSheetWarning.tag.append({object:"The stylesheet could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"},this.panelNode);
                                  -return
                                  -}var rules=this.getStyleSheetRules(this.context,styleSheet);
                                  -var result;
                                  -if(rules.length){result=this.template.tag.replace({rules:rules},this.panelNode)
                                  -}else{result=FirebugReps.Warning.tag.replace({object:"EmptyStyleSheet"},this.panelNode)
                                  -}},updateSelection:function(object){this.selection=null;
                                  -if(object instanceof CSSStyleDeclaration){object=object.parentRule
                                  -}if(object instanceof CSSStyleRule){this.navigate(object.parentStyleSheet);
                                  -this.highlightRule(object)
                                  -}else{if(object instanceof CSSStyleSheet){this.navigate(object)
                                  -}else{if(object instanceof SourceLink){try{var sourceLink=object;
                                  -var sourceFile=getSourceFileByHref(sourceLink.href,this.context);
                                  -if(sourceFile){clearNode(this.panelNode);
                                  -this.showSourceFile(sourceFile);
                                  -var lineNo=object.line;
                                  -if(lineNo){this.scrollToLine(lineNo,this.jumpHighlightFactory(lineNo,this.context))
                                  -}}else{var stylesheet=getStyleSheetByHref(sourceLink.href,this.context);
                                  -if(stylesheet){this.navigate(stylesheet)
                                  -}else{if(FBTrace.DBG_CSS){FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href,sourceLink)
                                  -}}}}catch(exc){if(FBTrace.DBG_CSS){FBTrace.sysout("css.upDateSelection FAILS "+exc,exc)
                                  -}}}}}},updateOption:function(name,value){if(name=="expandShorthandProps"){this.refresh()
                                  -}},getLocationList:function(){var styleSheets=getAllStyleSheets(this.context);
                                  -return styleSheets
                                  -},getOptionsMenuItems:function(){return[{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")},"-",{label:"Refresh",command:bind(this.refresh,this)}]
                                  -},getContextMenuItems:function(style,target){var items=[];
                                  -if(this.infoTipType=="color"){items.push({label:"CopyColor",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)})
                                  -}else{if(this.infoTipType=="image"){items.push({label:"CopyImageLocation",command:bindFixed(copyToClipboard,FBL,this.infoTipObject)},{label:"OpenImageInNewTab",command:bindFixed(openNewTab,FBL,this.infoTipObject)})
                                  -}}if(isElement(this.selection)){items.push({label:"EditStyle",command:bindFixed(this.editElementStyle,this)})
                                  -}else{if(!isSystemStyleSheet(this.selection)){items.push({label:"NewRule",command:bindFixed(this.insertRule,this,target)})
                                  -}}var cssRule=getAncestorByClass(target,"cssRule");
                                  -if(cssRule&&hasClass(cssRule,"cssEditableRule")){items.push("-",{label:"NewProp",command:bindFixed(this.insertPropertyRow,this,target)});
                                  -var propRow=getAncestorByClass(target,"cssProp");
                                  -if(propRow){var propName=getChildByClass(propRow,"cssPropName")[textContent];
                                  -var isDisabled=hasClass(propRow,"disabledStyle");
                                  -items.push({label:$STRF("EditProp",[propName]),nol10n:true,command:bindFixed(this.editPropertyRow,this,propRow)},{label:$STRF("DeleteProp",[propName]),nol10n:true,command:bindFixed(this.deletePropertyRow,this,propRow)},{label:$STRF("DisableProp",[propName]),nol10n:true,type:"checkbox",checked:isDisabled,command:bindFixed(this.disablePropertyRow,this,propRow)})
                                  -}}items.push("-",{label:"Refresh",command:bind(this.refresh,this)});
                                  -return items
                                  -},browseObject:function(object){if(this.infoTipType=="image"){openNewTab(this.infoTipObject);
                                  -return true
                                  -}},showInfoTip:function(infoTip,target,x,y){var propValue=getAncestorByClass(target,"cssPropValue");
                                  -if(propValue){var offset=getClientOffset(propValue);
                                  -var offsetX=x-offset.x;
                                  -var text=propValue[textContent];
                                  -var charWidth=propValue.offsetWidth/text.length;
                                  -var charOffset=Math.floor(offsetX/charWidth);
                                  -var cssValue=parseCSSValue(text,charOffset);
                                  -if(cssValue){if(cssValue.value==this.infoTipValue){return true
                                  -}this.infoTipValue=cssValue.value;
                                  -if(cssValue.type=="rgb"||(!cssValue.type&&isColorKeyword(cssValue.value))){this.infoTipType="color";
                                  -this.infoTipObject=cssValue.value;
                                  -return Firebug.InfoTip.populateColorInfoTip(infoTip,cssValue.value)
                                  -}else{if(cssValue.type=="url"){var propNameNode=getElementByClass(target.parentNode,"cssPropName");
                                  -if(propNameNode&&isImageRule(propNameNode[textContent])){var rule=Firebug.getRepObject(target);
                                  -var baseURL=this.getStylesheetURL(rule);
                                  -var relURL=parseURLValue(cssValue.value);
                                  -var absURL=isDataURL(relURL)?relURL:absoluteURL(relURL,baseURL);
                                  -var repeat=parseRepeatValue(text);
                                  -this.infoTipType="image";
                                  -this.infoTipObject=absURL;
                                  -return Firebug.InfoTip.populateImageInfoTip(infoTip,absURL,repeat)
                                  -}}}}}delete this.infoTipType;
                                  -delete this.infoTipValue;
                                  -delete this.infoTipObject
                                  -},getEditor:function(target,value){if(target==this.panelNode||hasClass(target,"cssSelector")||hasClass(target,"cssRule")||hasClass(target,"cssSheet")){if(!this.ruleEditor){this.ruleEditor=new CSSRuleEditor(this.document)
                                  -}return this.ruleEditor
                                  -}else{if(!this.editor){this.editor=new CSSEditor(this.document)
                                  -}return this.editor
                                  -}},getDefaultLocation:function(){try{var styleSheets=this.context.window.document.styleSheets;
                                  -if(styleSheets.length){var sheet=styleSheets[0];
                                  -return(Firebug.filterSystemURLs&&isSystemURL(getURLForStyleSheet(sheet)))?null:sheet
                                  -}}catch(exc){if(FBTrace.DBG_LOCATIONS){FBTrace.sysout("css.getDefaultLocation FAILS "+exc,exc)
                                  -}}},getObjectDescription:function(styleSheet){var url=getURLForStyleSheet(styleSheet);
                                  -var instance=getInstanceForStyleSheet(styleSheet);
                                  -var baseDescription=splitURLBase(url);
                                  -if(instance){baseDescription.name=baseDescription.name+" #"+(instance+1)
                                  -}return baseDescription
                                  -},search:function(text,reverse){var curDoc=this.searchCurrentDoc(!Firebug.searchGlobal,text,reverse);
                                  -if(!curDoc&&Firebug.searchGlobal){return this.searchOtherDocs(text,reverse)
                                  -}return curDoc
                                  -},searchOtherDocs:function(text,reverse){var scanRE=Firebug.Search.getTestingRegex(text);
                                  -function scanDoc(styleSheet){for(var i=0;
                                  -i<styleSheet.cssRules.length;
                                  -i++){if(scanRE.test(styleSheet.cssRules[i].cssText)){return true
                                  -}}}if(this.navigateToNextDocument(scanDoc,reverse)){return this.searchCurrentDoc(true,text,reverse)
                                  -}},searchCurrentDoc:function(wrapSearch,text,reverse){if(!text){delete this.currentSearch;
                                  -return false
                                  -}var row;
                                  -if(this.currentSearch&&text==this.currentSearch.text){row=this.currentSearch.findNext(wrapSearch,false,reverse,Firebug.Search.isCaseSensitive(text))
                                  -}else{if(this.editing){this.currentSearch=new TextSearch(this.stylesheetEditor.box);
                                  -row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text));
                                  -if(row){var sel=this.document.defaultView.getSelection();
                                  -sel.removeAllRanges();
                                  -sel.addRange(this.currentSearch.range);
                                  -scrollSelectionIntoView(this);
                                  -return true
                                  -}else{return false
                                  -}}else{function findRow(node){return node.nodeType==1?node:node.parentNode
                                  -}this.currentSearch=new TextSearch(this.panelNode,findRow);
                                  -row=this.currentSearch.find(text,reverse,Firebug.Search.isCaseSensitive(text))
                                  -}}if(row){this.document.defaultView.getSelection().selectAllChildren(row);
                                  -scrollIntoCenterView(row,this.panelNode);
                                  -dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,row]);
                                  -return true
                                  -}else{dispatch([Firebug.A11yModel],"onCSSSearchMatchFound",[this,text,null]);
                                  -return false
                                  -}},getSearchOptionsMenuItems:function(){return[Firebug.Search.searchOptionMenu("search.Case_Sensitive","searchCaseSensitive"),Firebug.Search.searchOptionMenu("search.Multiple_Files","searchGlobal")]
                                  -}});
                                  -function CSSElementPanel(){}CSSElementPanel.prototype=extend(Firebug.CSSStyleSheetPanel.prototype,{template:domplate({cascadedTag:DIV({"class":"a11yCSSView",role:"presentation"},DIV({role:"list","aria-label":$STR("aria.labels.style rules")},FOR("rule","$rules",TAG("$ruleTag",{rule:"$rule"}))),DIV({role:"list","aria-label":$STR("aria.labels.inherited style rules")},FOR("section","$inherited",H1({"class":"cssInheritHeader groupHeader focusRow",role:"listitem"},SPAN({"class":"cssInheritLabel"},"$inheritLabel"),TAG(FirebugReps.Element.shortTag,{object:"$section.element"})),DIV({role:"group"},FOR("rule","$section.rules",TAG("$ruleTag",{rule:"$rule"})))))),ruleTag:isIE?DIV({"class":"cssElementRuleContainer"},TAG(FirebugReps.SourceLink.tag,{object:"$rule.sourceLink"}),TAG(CSSStyleRuleTag.tag,{rule:"$rule"})):DIV({"class":"cssElementRuleContainer"},TAG(CSSStyleRuleTag.tag,{rule:"$rule"}),TAG(FirebugReps.SourceLink.tag,{object:"$rule.sourceLink"}))}),updateCascadeView:function(element){var rules=[],sections=[],usedProps={};
                                  -this.getInheritedRules(element,sections,usedProps);
                                  -this.getElementRules(element,rules,usedProps);
                                  -if(rules.length||sections.length){var inheritLabel="Inherited from";
                                  -var result=this.template.cascadedTag.replace({rules:rules,inherited:sections,inheritLabel:inheritLabel},this.panelNode)
                                  -}else{var result=FirebugReps.Warning.tag.replace({object:"EmptyElementCSS"},this.panelNode)
                                  -}if(CssAnalyzer.hasExternalStyleSheet()){CssAnalyzer.externalStyleSheetWarning.tag.append({object:"The results here may be inaccurate because some stylesheets could not be loaded due to access restrictions. ",link:"more...",href:"http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"},this.panelNode)
                                  -}},getStylesheetURL:function(rule){if(rule&&rule.parentStyleSheet&&rule.parentStyleSheet.href){return rule.parentStyleSheet.href
                                  -}else{return this.selection.ownerDocument.location.href
                                  -}},getInheritedRules:function(element,sections,usedProps){var parent=element.parentNode;
                                  -if(parent&&parent.nodeType==1){this.getInheritedRules(parent,sections,usedProps);
                                  -var rules=[];
                                  -this.getElementRules(parent,rules,usedProps,true);
                                  -if(rules.length){sections.splice(0,0,{element:parent,rules:rules})
                                  -}}},getElementRules:function(element,rules,usedProps,inheritMode){var inspectedRules,displayedRules={};
                                  -inspectedRules=CssAnalyzer.getElementCSSRules(element);
                                  -if(inspectedRules){for(var i=0,length=inspectedRules.length;
                                  -i<length;
                                  -++i){var ruleId=inspectedRules[i];
                                  -var ruleData=CssAnalyzer.getRuleData(ruleId);
                                  -var rule=ruleData.rule;
                                  -var ssid=ruleData.styleSheetId;
                                  -var parentStyleSheet=StyleSheetCache.get(ssid);
                                  -var href=parentStyleSheet.externalURL?parentStyleSheet.externalURL:parentStyleSheet.href;
                                  -var instance=null;
                                  -var isSystemSheet=false;
                                  -if(!Firebug.showUserAgentCSS&&isSystemSheet){continue
                                  -}if(!href){href=element.ownerDocument.location.href
                                  -}var props=this.getRuleProperties(this.context,rule,inheritMode);
                                  -if(inheritMode&&!props.length){continue
                                  -}var line=ruleData.lineNo;
                                  -var ruleId=rule.selectorText+"/"+line;
                                  -var sourceLink=new SourceLink(href,line,"css",rule,instance);
                                  -this.markOverridenProps(props,usedProps,inheritMode);
                                  -rules.splice(0,0,{rule:rule,id:ruleId,selector:ruleData.selector,sourceLink:sourceLink,props:props,inherited:inheritMode,isSystemSheet:isSystemSheet})
                                  -}}if(element.style){this.getStyleProperties(element,rules,usedProps,inheritMode)
                                  -}if(FBTrace.DBG_CSS){FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element),rules)
                                  -}},markOverridenProps:function(props,usedProps,inheritMode){for(var i=0;
                                  -i<props.length;
                                  -++i){var prop=props[i];
                                  -if(usedProps.hasOwnProperty(prop.name)){var deadProps=usedProps[prop.name];
                                  -for(var j=0;
                                  -j<deadProps.length;
                                  -++j){var deadProp=deadProps[j];
                                  -if(!deadProp.disabled&&!deadProp.wasInherited&&deadProp.important&&!prop.important){prop.overridden=true
                                  -}else{if(!prop.disabled){deadProp.overridden=true
                                  -}}}}else{usedProps[prop.name]=[]
                                  -}prop.wasInherited=inheritMode?true:false;
                                  -usedProps[prop.name].push(prop)
                                  -}},getStyleProperties:function(element,rules,usedProps,inheritMode){var props=this.parseCSSProps(element.style,inheritMode);
                                  -this.addOldProperties(this.context,getElementXPath(element),inheritMode,props);
                                  -sortProperties(props);
                                  -this.markOverridenProps(props,usedProps,inheritMode);
                                  -if(props.length){rules.splice(0,0,{rule:element,id:getElementXPath(element),selector:"element.style",props:props,inherited:inheritMode})
                                  -}},name:"css",title:"Style",parentPanel:"HTML",order:0,initialize:function(){this.context=Firebug.chrome;
                                  -this.document=Firebug.chrome.document;
                                  -Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this,arguments);
                                  -var selection=ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -if(selection){this.select(selection,true)
                                  -}},ishow:function(state){},watchWindow:function(win){if(domUtils){var doc=win.document
                                  -}},unwatchWindow:function(win){var doc=win.document;
                                  -if(isAncestor(this.stateChangeEl,doc)){this.removeStateChangeHandlers()
                                  -}},supportsObject:function(object){return object instanceof Element?1:0
                                  -},updateView:function(element){this.updateCascadeView(element);
                                  -if(domUtils){this.contentState=safeGetContentState(element);
                                  -this.addStateChangeHandlers(element)
                                  -}},updateSelection:function(element){if(!instanceOf(element,"Element")){return
                                  -}if(sothinkInstalled){FirebugReps.Warning.tag.replace({object:"SothinkWarning"},this.panelNode);
                                  -return
                                  -}if(!element){return
                                  -}this.updateView(element)
                                  -},updateOption:function(name,value){if(name=="showUserAgentCSS"||name=="expandShorthandProps"){this.refresh()
                                  -}},getOptionsMenuItems:function(){var ret=[{label:"Show User Agent CSS",type:"checkbox",checked:Firebug.showUserAgentCSS,command:bindFixed(Firebug.togglePref,Firebug,"showUserAgentCSS")},{label:"Expand Shorthand Properties",type:"checkbox",checked:Firebug.expandShorthandProps,command:bindFixed(Firebug.togglePref,Firebug,"expandShorthandProps")}];
                                  -if(domUtils&&this.selection){var state=safeGetContentState(this.selection);
                                  -ret.push("-");
                                  -ret.push({label:":active",type:"checkbox",checked:state&STATE_ACTIVE,command:bindFixed(this.updateContentState,this,STATE_ACTIVE,state&STATE_ACTIVE)});
                                  -ret.push({label:":hover",type:"checkbox",checked:state&STATE_HOVER,command:bindFixed(this.updateContentState,this,STATE_HOVER,state&STATE_HOVER)})
                                  -}return ret
                                  -},updateContentState:function(state,remove){domUtils.setContentState(remove?this.selection.ownerDocument.documentElement:this.selection,state);
                                  -this.refresh()
                                  -},addStateChangeHandlers:function(el){this.removeStateChangeHandlers();
                                  -this.stateChangeEl=el
                                  -},removeStateChangeHandlers:function(){var sel=this.stateChangeEl;
                                  -if(sel){}},contentStateCheck:function(state){if(!state||this.contentState&state){var timeoutRunner=bindFixed(function(){var newState=safeGetContentState(this.selection);
                                  -if(newState!=this.contentState){this.context.invalidatePanels(this.name)
                                  -}},this);
                                  -setTimeout(timeoutRunner,0)
                                  -}}});
                                  -function safeGetContentState(selection){try{return domUtils.getContentState(selection)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("css.safeGetContentState; EXCEPTION",e)
                                  -}}}function CSSComputedElementPanel(){}CSSComputedElementPanel.prototype=extend(CSSElementPanel.prototype,{template:domplate({computedTag:DIV({"class":"a11yCSSView",role:"list","aria-label":$STR("aria.labels.computed styles")},FOR("group","$groups",H1({"class":"cssInheritHeader groupHeader focusRow",role:"listitem"},SPAN({"class":"cssInheritLabel"},"$group.title")),TABLE({width:"100%",role:"group"},TBODY({role:"presentation"},FOR("prop","$group.props",TR({"class":"focusRow computedStyleRow",role:"listitem"},TD({"class":"stylePropName",role:"presentation"},"$prop.name"),TD({"class":"stylePropValue",role:"presentation"},"$prop.value")))))))}),updateComputedView:function(element){var win=isIE?element.ownerDocument.parentWindow:element.ownerDocument.defaultView;
                                  -var style=isIE?element.currentStyle:win.getComputedStyle(element,"");
                                  -var groups=[];
                                  -for(var groupName in styleGroups){var title=styleGroupTitles[groupName];
                                  -var group={title:title,props:[]};
                                  -groups.push(group);
                                  -var props=styleGroups[groupName];
                                  -for(var i=0;
                                  -i<props.length;
                                  -++i){var propName=props[i];
                                  -var propValue=style.getPropertyValue?style.getPropertyValue(propName):""+style[toCamelCase(propName)];
                                  -if(propValue===undefined||propValue===null){continue
                                  -}propValue=stripUnits(rgbToHex(propValue));
                                  -if(propValue){group.props.push({name:propName,value:propValue})
                                  -}}}var result=this.template.computedTag.replace({groups:groups},this.panelNode)
                                  -},name:"computed",title:"Computed",parentPanel:"HTML",order:1,updateView:function(element){this.updateComputedView(element)
                                  -},getOptionsMenuItems:function(){return[{label:"Refresh",command:bind(this.refresh,this)}]
                                  -}});
                                  -function CSSEditor(doc){this.initializeInline(doc)
                                  -}CSSEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var rule=Firebug.getRepObject(target);
                                  -var emptyProp={name:"",value:"",important:""};
                                  -if(insertWhere=="before"){return CSSPropTag.tag.insertBefore({prop:emptyProp,rule:rule},target)
                                  -}else{return CSSPropTag.tag.insertAfter({prop:emptyProp,rule:rule},target)
                                  -}},saveEdit:function(target,value,previousValue){if(!value){return
                                  -}target.innerHTML=escapeForCss(value);
                                  -var row=getAncestorByClass(target,"cssProp");
                                  -if(hasClass(row,"disabledStyle")){toggleClass(row,"disabledStyle")
                                  -}var rule=Firebug.getRepObject(target);
                                  -if(hasClass(target,"cssPropName")){if(value&&previousValue!=value){var propValue=getChildByClass(row,"cssPropValue")[textContent];
                                  -var parsedValue=parsePriority(propValue);
                                  -if(propValue&&propValue!="undefined"){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n")
                                  -}if(previousValue){Firebug.CSSModule.removeProperty(rule,previousValue)
                                  -}Firebug.CSSModule.setProperty(rule,value,parsedValue.value,parsedValue.priority)
                                  -}}else{if(!value){Firebug.CSSModule.removeProperty(rule,previousValue)
                                  -}}}else{if(getAncestorByClass(target,"cssPropValue")){var propName=getChildByClass(row,"cssPropName")[textContent];
                                  -var propValue=getChildByClass(row,"cssPropValue")[textContent];
                                  -if(FBTrace.DBG_CSS){FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName+" = "+propValue+"\n")
                                  -}if(value&&value!="null"){var parsedValue=parsePriority(value);
                                  -Firebug.CSSModule.setProperty(rule,propName,parsedValue.value,parsedValue.priority)
                                  -}else{if(previousValue&&previousValue!="null"){Firebug.CSSModule.removeProperty(rule,propName)
                                  -}}}}this.panel.markChange(this.panel.name=="stylesheet")
                                  -},advanceToNext:function(target,charCode){if(charCode==58&&hasClass(target,"cssPropName")){return true
                                  -}},getAutoCompleteRange:function(value,offset){if(hasClass(this.target,"cssPropName")){return{start:0,end:value.length-1}
                                  -}else{return parseCSSValue(value,offset)
                                  -}},getAutoCompleteList:function(preExpr,expr,postExpr){if(hasClass(this.target,"cssPropName")){return getCSSPropertyNames()
                                  -}else{var row=getAncestorByClass(this.target,"cssProp");
                                  -var propName=getChildByClass(row,"cssPropName")[textContent];
                                  -return getCSSKeywordsByProperty(propName)
                                  -}}});
                                  -function CSSRuleEditor(doc){this.initializeInline(doc);
                                  -this.completeAsYouType=false
                                  -}CSSRuleEditor.uniquifier=0;
                                  -CSSRuleEditor.prototype=domplate(Firebug.InlineEditor.prototype,{insertNewRow:function(target,insertWhere){var emptyRule={selector:"",id:"",props:[],isSelectorEditable:true};
                                  -if(insertWhere=="before"){return CSSStyleRuleTag.tag.insertBefore({rule:emptyRule},target)
                                  -}else{return CSSStyleRuleTag.tag.insertAfter({rule:emptyRule},target)
                                  -}},saveEdit:function(target,value,previousValue){if(FBTrace.DBG_CSS){FBTrace.sysout("CSSRuleEditor.saveEdit: '"+value+"'  '"+previousValue+"'",target)
                                  -}target.innerHTML=escapeForCss(value);
                                  -if(value===previousValue){return
                                  -}var row=getAncestorByClass(target,"cssRule");
                                  -var styleSheet=this.panel.location;
                                  -styleSheet=styleSheet.editStyleSheet?styleSheet.editStyleSheet.sheet:styleSheet;
                                  -var cssRules=styleSheet.cssRules;
                                  -var rule=Firebug.getRepObject(target),oldRule=rule;
                                  -var ruleIndex=cssRules.length;
                                  -if(rule||Firebug.getRepObject(row.nextSibling)){var searchRule=rule||Firebug.getRepObject(row.nextSibling);
                                  -for(ruleIndex=0;
                                  -ruleIndex<cssRules.length&&searchRule!=cssRules[ruleIndex];
                                  -ruleIndex++){}}if(oldRule){Firebug.CSSModule.deleteRule(styleSheet,ruleIndex)
                                  -}if(value){var cssText=[value,"{"];
                                  -var props=row.getElementsByClassName("cssProp");
                                  -for(var i=0;
                                  -i<props.length;
                                  -i++){var propEl=props[i];
                                  -if(!hasClass(propEl,"disabledStyle")){cssText.push(getChildByClass(propEl,"cssPropName")[textContent]);
                                  -cssText.push(":");
                                  -cssText.push(getChildByClass(propEl,"cssPropValue")[textContent]);
                                  -cssText.push(";")
                                  -}}cssText.push("}");
                                  -cssText=cssText.join("");
                                  -try{var insertLoc=Firebug.CSSModule.insertRule(styleSheet,cssText,ruleIndex);
                                  -rule=cssRules[insertLoc];
                                  -ruleIndex++
                                  -}catch(err){if(FBTrace.DBG_CSS||FBTrace.DBG_ERRORS){FBTrace.sysout("CSS Insert Error: "+err,err)
                                  -}target.innerHTML=escapeForCss(previousValue);
                                  -row.repObject=undefined;
                                  -return
                                  -}}else{rule=undefined
                                  -}row.repObject=rule;
                                  -if(!oldRule){var ruleId="new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -row.setAttribute("ruleId",ruleId)
                                  -}this.panel.markChange(this.panel.name=="stylesheet")
                                  -}});
                                  -function StyleSheetEditor(doc){this.box=this.tag.replace({},doc,this);
                                  -this.input=this.box.firstChild
                                  -}StyleSheetEditor.prototype=domplate(Firebug.BaseEditor,{multiLine:true,tag:DIV(TEXTAREA({"class":"styleSheetEditor fullPanelEditor",oninput:"$onInput"})),getValue:function(){return this.input.value
                                  -},setValue:function(value){return this.input.value=value
                                  -},show:function(target,panel,value,textSize,targetSize){this.target=target;
                                  -this.panel=panel;
                                  -this.panel.panelNode.appendChild(this.box);
                                  -this.input.value=value;
                                  -this.input.focus();
                                  -var command=Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -command.setAttribute("checked",true)
                                  -},hide:function(){var command=Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -command.setAttribute("checked",false);
                                  -if(this.box.parentNode==this.panel.panelNode){this.panel.panelNode.removeChild(this.box)
                                  -}delete this.target;
                                  -delete this.panel;
                                  -delete this.styleSheet
                                  -},saveEdit:function(target,value,previousValue){Firebug.CSSModule.freeEdit(this.styleSheet,value)
                                  -},endEditing:function(){this.panel.refresh();
                                  -return true
                                  -},onInput:function(){Firebug.Editor.update()
                                  -},scrollToLine:function(line,offset){this.startMeasuring(this.input);
                                  -var lineHeight=this.measureText().height;
                                  -this.stopMeasuring();
                                  -this.input.scrollTop=(line*lineHeight)+offset
                                  -}});
                                  -var rgbToHex=function rgbToHex(value){return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi,rgbToHexReplacer)
                                  -};
                                  -var rgbToHexReplacer=function(_,r,g,b){return"#"+((1<<24)+(r<<16)+(g<<8)+(b<<0)).toString(16).substr(-6).toUpperCase()
                                  -};
                                  -var stripUnits=function stripUnits(value){return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi,stripUnitsReplacer)
                                  -};
                                  -var stripUnitsReplacer=function(_,skip,remove,whitespace){return skip||("0"+whitespace)
                                  -};
                                  -function parsePriority(value){var rePriority=/(.*?)\s*(!important)?$/;
                                  -var m=rePriority.exec(value);
                                  -var propValue=m?m[1]:"";
                                  -var priority=m&&m[2]?"important":"";
                                  -return{value:propValue,priority:priority}
                                  -}function parseURLValue(value){var m=reURL.exec(value);
                                  -return m?m[1]:""
                                  -}function parseRepeatValue(value){var m=reRepeat.exec(value);
                                  -return m?m[0]:""
                                  -}function parseCSSValue(value,offset){var start=0;
                                  -var m;
                                  -while(1){m=reSplitCSS.exec(value);
                                  -if(m&&m.index+m[0].length<offset){value=value.substr(m.index+m[0].length);
                                  -start+=m.index+m[0].length;
                                  -offset-=m.index+m[0].length
                                  -}else{break
                                  -}}if(m){var type;
                                  -if(m[1]){type="url"
                                  -}else{if(m[2]||m[3]){type="rgb"
                                  -}else{if(m[4]){type="int"
                                  -}}}return{value:m[0],start:start+m.index,end:start+m.index+(m[0].length-1),type:type}
                                  -}}function findPropByName(props,name){for(var i=0;
                                  -i<props.length;
                                  -++i){if(props[i].name==name){return i
                                  -}}}function sortProperties(props){props.sort(function(a,b){return a.name>b.name?1:-1
                                  -})
                                  -}function getTopmostRuleLine(panelNode){for(var child=panelNode.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.offsetTop+child.offsetHeight>panelNode.scrollTop){var rule=child.repObject;
                                  -if(rule){return{line:domUtils.getRuleLine(rule),offset:panelNode.scrollTop-child.offsetTop}
                                  -}}}return 0
                                  -}function getStyleSheetCSS(sheet,context){if(sheet.ownerNode instanceof HTMLStyleElement){return sheet.ownerNode.innerHTML
                                  -}else{return context.sourceCache.load(sheet.href).join("")
                                  -}}function getStyleSheetOwnerNode(sheet){for(;
                                  -sheet&&!sheet.ownerNode;
                                  -sheet=sheet.parentStyleSheet){}return sheet.ownerNode
                                  -}function scrollSelectionIntoView(panel){var selCon=getSelectionController(panel);
                                  -selCon.scrollSelectionIntoView(nsISelectionController.SELECTION_NORMAL,nsISelectionController.SELECTION_FOCUS_REGION,true)
                                  -}function getSelectionController(panel){var browser=Firebug.chrome.getPanelBrowser(panel);
                                  -return browser.docShell.QueryInterface(nsIInterfaceRequestor).getInterface(nsISelectionDisplay).QueryInterface(nsISelectionController)
                                  -}Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null
                                  -},selectSourceCode:function(index){this.getPanel().selectSourceCode(index)
                                  -}});
                                  -Firebug.registerModule(Firebug.Script);
                                  -function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",selectIndex:0,sourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var scripts=doc.getElementsByTagName("script");
                                  -var selectNode=this.selectNode=createElement("select");
                                  -for(var i=0,script;
                                  -script=scripts[i];
                                  -i++){if(Firebug.ignoreFirebugElements&&script.getAttribute("firebugIgnore")){continue
                                  -}var fileName=getFileName(script.src)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:i});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -}this.toolButtonsNode.appendChild(selectNode)
                                  -},initialize:function(){this.selectSourceCode(this.selectIndex);
                                  -Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.selectNode,"change",this.onChangeSelect)
                                  -},shutdown:function(){removeEvent(this.selectNode,"change",this.onChangeSelect);
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
                                  -var oldPanel=oldChrome.getPanel("Script");
                                  -var index=oldPanel.selectIndex;
                                  -this.selectNode.selectedIndex=index;
                                  -this.selectIndex=index;
                                  -this.sourceIndex=-1
                                  -},onChangeSelect:function(event){var select=this.selectNode;
                                  -this.selectIndex=select.selectedIndex;
                                  -var option=select.options[select.selectedIndex];
                                  -if(!option){return
                                  -}var selectedSourceIndex=parseInt(option.value);
                                  -this.renderSourceCode(selectedSourceIndex)
                                  -},selectSourceCode:function(index){var select=this.selectNode;
                                  -select.selectedIndex=index;
                                  -var option=select.options[index];
                                  -if(!option){return
                                  -}var selectedSourceIndex=parseInt(option.value);
                                  -this.renderSourceCode(selectedSourceIndex)
                                  -},renderSourceCode:function(index){if(this.sourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0;
                                  -src=isIE&&!isExternal?src+"\n":"\n"+src;
                                  -src=src.replace(/\n\r|\r\n/g,"\n");
                                  -var match=src.match(/[\n]/g);
                                  -var lines=match?match.length:0;
                                  -html[hl++]='<div><div class="sourceBox" style="left:';
                                  -html[hl++]=35+7*(lines+"").length;
                                  -html[hl++]='px;"><pre class="sourceCode">';
                                  -html[hl++]=escapeHTML(src);
                                  -html[hl++]='</pre></div><div class="lineNo">';
                                  -for(var l=1,lines;
                                  -l<=lines;
                                  -l++){html[hl++]='<div line="';
                                  -html[hl++]=l;
                                  -html[hl++]='">';
                                  -html[hl++]=l;
                                  -html[hl++]="</div>"
                                  -}html[hl++]="</div></div>";
                                  -updatePanel(html)
                                  -};
                                  -var updatePanel=function(html){self.panelNode.innerHTML=html.join("");
                                  -setTimeout(function(){self.synchronizeUI()
                                  -},0)
                                  -};
                                  -var onFailure=function(){FirebugReps.Warning.tag.replace({object:"AccessRestricted"},self.panelNode)
                                  -};
                                  -var self=this;
                                  -var doc=Firebug.browser.document;
                                  -var script=doc.getElementsByTagName("script")[index];
                                  -var url=getScriptURL(script);
                                  -var isExternal=url&&url!=doc.location.href;
                                  -try{if(Firebug.disableResourceFetching){renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage)
                                  -}else{if(isExternal){Ajax.request({url:url,onSuccess:renderProcess,onFailure:onFailure})
                                  -}else{var src=script.innerHTML;
                                  -renderProcess(src)
                                  -}}}catch(e){onFailure()
                                  -}this.sourceIndex=index
                                  -}}});
                                  -Firebug.registerPanel(ScriptPanel);
                                  -var getScriptURL=function getScriptURL(script){var reFile=/([^\/\?#]+)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=Firebug.browser.document;
                                  -var file=reFile.exec(script.src);
                                  -if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(doc.location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){return path+fileName
                                  -}};
                                  -var getFileName=function getFileName(path){if(!path){return""
                                  -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -return match&&match[0]||path
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ElementCache=Firebug.Lite.Cache.Element;
                                  -var insertSliceSize=18;
                                  -var insertInterval=40;
                                  -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1};
                                  -if(Firebug.ignoreFirebugElements){ignoreVars[Firebug.Lite.Cache.ID]=1
                                  -}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"};
                                  -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"})));
                                  -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch"))));
                                  -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"}));
                                  -var domTableClass=isIElt8?"domTable domTableIE":"domTable";
                                  -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level)
                                  -},onClick:function(event){if(!isLeftClick(event)){return
                                  -}var target=event.target||event.srcElement;
                                  -var row=getAncestorByClass(target,"memberRow");
                                  -var label=getAncestorByClass(target,"memberLabel");
                                  -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode;
                                  -this.toggleRow(row)
                                  -}else{var object=Firebug.getRepObject(target);
                                  -if(typeof(object)=="function"){Firebug.chrome.select(object,"script");
                                  -cancelEvent(event)
                                  -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel;
                                  -if(panel){var rowValue=panel.getRowPropertyValue(row);
                                  -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue)
                                  -}else{panel.editProperty(row)
                                  -}cancelEvent(event)
                                  -}}}}return false
                                  -},toggleRow:function(row){var level=parseInt(row.getAttribute("level"));
                                  -var toggles=row.parentNode.parentNode.toggles;
                                  -if(hasClass(row,"opened")){removeClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){if(i==path.length-1){delete toggles[path[i]]
                                  -}else{toggles=toggles[path[i]]
                                  -}}}var rowTag=this.rowTag;
                                  -var tbody=row.parentNode;
                                  -setTimeout(function(){for(var firstRow=row.nextSibling;
                                  -firstRow;
                                  -firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break
                                  -}tbody.removeChild(firstRow)
                                  -}},row.insertTimeout?row.insertTimeout:0)
                                  -}else{setClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){var name=path[i];
                                  -if(toggles.hasOwnProperty(name)){toggles=toggles[name]
                                  -}else{toggles=toggles[name]={}
                                  -}}}var value=row.lastChild.firstChild.repObject;
                                  -var members=getMembers(value,level+1);
                                  -var rowTag=this.rowTag;
                                  -var lastRow=row;
                                  -var delay=0;
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow);
                                  -lastRow=result[1]
                                  -}if(isLast){row.removeAttribute("insertTimeout")
                                  -}},delay)
                                  -}delay+=insertInterval
                                  -}row.insertTimeout=delay
                                  -}}});
                                  -Firebug.DOMBasePanel=function(){};
                                  -Firebug.DOMBasePanel.prototype=extend(Firebug.Panel,{tag:DirTablePlate.tableTag,getRealObject:function(object){if(!object){return object
                                  -}if(object.wrappedJSObject){return object.wrappedJSObject
                                  -}return object
                                  -},rebuild:function(update,scrollTop){var members=getMembers(this.selection);
                                  -expandMembers(members,this.toggles,0,0);
                                  -this.showMembers(members,update,scrollTop);
                                  -if(!this.parentPanel){updateStatusBar(this)
                                  -}},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0;
                                  -i<this.timeouts.length;
                                  -++i){this.context.clearTimeout(this.timeouts[i])
                                  -}delete this.timeouts
                                  -}if(!members.length){return this.showEmptyMembers()
                                  -}var panelNode=this.panelNode;
                                  -var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop;
                                  -var offscreen=update&&panelNode.firstChild;
                                  -var dest=offscreen?panelNode.ownerDocument:panelNode;
                                  -var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest);
                                  -var tbody=table.lastChild;
                                  -var rowTag=DirTablePlate.rowTag;
                                  -var panel=this;
                                  -var result;
                                  -var timeouts=[];
                                  -var delay=0;
                                  -var renderStart=new Date().getTime();
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){timeouts.push(this.context.setTimeout(function(){if(!tbody.lastChild){return
                                  -}result=rowTag.insertRows({members:slice},tbody.lastChild);
                                  -if((panelNode.scrollHeight+panelNode.offsetHeight)>=priorScrollTop){panelNode.scrollTop=priorScrollTop
                                  -}},delay));
                                  -delay+=insertInterval
                                  -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild)
                                  -}else{panelNode.appendChild(table)
                                  -}panelNode.scrollTop=priorScrollTop
                                  -},delay))
                                  -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop
                                  -},delay))
                                  -}this.timeouts=timeouts
                                  -},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode)
                                  -},findPathObject:function(object){var pathIndex=-1;
                                  -for(var i=0;
                                  -i<this.objectPath.length;
                                  -++i){if(this.getPathObject(i)===object){return i
                                  -}}return -1
                                  -},getPathObject:function(index){var object=this.objectPath[index];
                                  -if(object instanceof Property){return object.getObject()
                                  -}else{return object
                                  -}},getRowObject:function(row){var object=getRowOwnerObject(row);
                                  -return object?object:this.selection
                                  -},getRowPropertyValue:function(row){var object=this.getRowObject(row);
                                  -object=this.getRealObject(object);
                                  -if(object){var propName=getRowName(row);
                                  -if(object instanceof jsdIStackFrame){return Firebug.Debugger.evaluate(propName,this.context)
                                  -}else{return object[propName]
                                  -}}},onMouseMove:function(event){var target=event.srcElement||event.target;
                                  -var object=getAncestorByClass(target,"objectLink-element");
                                  -object=object?object.repObject:null;
                                  -if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
                                  -object=lastHighlightedObject
                                  -}}else{Firebug.Inspector.hideBoxModel()
                                  -}},create:function(){this.context=Firebug.browser;
                                  -this.objectPath=[];
                                  -this.propertyPath=[];
                                  -this.viewPath=[];
                                  -this.pathIndex=-1;
                                  -this.toggles={};
                                  -Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"mousemove",this.onMouseMove)
                                  -},shutdown:function(){removeEvent(this.panelNode,"mousemove",this.onMouseMove);
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},ishow:function(state){if(this.context.loaded&&!this.selection){if(!state){this.select(null);
                                  -return
                                  -}if(state.viewPath){this.viewPath=state.viewPath
                                  -}if(state.propertyPath){this.propertyPath=state.propertyPath
                                  -}var defaultObject=this.getDefaultSelection(this.context);
                                  -var selectObject=defaultObject;
                                  -if(state.firstSelection){var restored=state.firstSelection(this.context);
                                  -if(restored){selectObject=restored;
                                  -this.objectPath=[defaultObject,restored]
                                  -}else{this.objectPath=[defaultObject]
                                  -}}else{this.objectPath=[defaultObject]
                                  -}if(this.propertyPath.length>1){for(var i=1;
                                  -i<this.propertyPath.length;
                                  -++i){var name=this.propertyPath[i];
                                  -if(!name){continue
                                  -}var object=selectObject;
                                  -try{selectObject=object[name]
                                  -}catch(exc){selectObject=null
                                  -}if(selectObject){this.objectPath.push(new Property(object,name))
                                  -}else{this.viewPath.splice(i);
                                  -this.propertyPath.splice(i);
                                  -this.objectPath.splice(i);
                                  -selectObject=this.getPathObject(this.objectPath.length-1);
                                  -break
                                  -}}}var selection=state.pathIndex<=this.objectPath.length-1?this.getPathObject(state.pathIndex):this.getPathObject(this.objectPath.length-1);
                                  -this.select(selection)
                                  -}},supportsObject:function(object){if(object==null){return 1000
                                  -}if(typeof(object)=="undefined"){return 1000
                                  -}else{if(object instanceof SourceLink){return 0
                                  -}else{return 1
                                  -}}},refresh:function(){this.rebuild(true)
                                  -},updateSelection:function(object){var previousIndex=this.pathIndex;
                                  -var previousView=previousIndex==-1?null:this.viewPath[previousIndex];
                                  -var newPath=this.pathToAppend;
                                  -delete this.pathToAppend;
                                  -var pathIndex=this.findPathObject(object);
                                  -if(newPath||pathIndex==-1){this.toggles={};
                                  -if(newPath){if(previousView){if(this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}var start=previousIndex+1,length=this.objectPath.length-start;
                                  -this.objectPath.splice(start,length);
                                  -this.propertyPath.splice(start,length);
                                  -this.viewPath.splice(start,length)
                                  -}var value=this.getPathObject(previousIndex);
                                  -if(!value){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n")
                                  -}return
                                  -}for(var i=0,length=newPath.length;
                                  -i<length;
                                  -++i){var name=newPath[i];
                                  -var object=value;
                                  -try{value=value[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n")
                                  -}return
                                  -}++this.pathIndex;
                                  -this.objectPath.push(new Property(object,name));
                                  -this.propertyPath.push(name);
                                  -this.viewPath.push({toggles:this.toggles,scrollTop:0})
                                  -}}else{this.toggles={};
                                  -var win=Firebug.browser.window;
                                  -if(object===win){this.pathIndex=0;
                                  -this.objectPath=[win];
                                  -this.propertyPath=[null];
                                  -this.viewPath=[{toggles:this.toggles,scrollTop:0}]
                                  -}else{this.pathIndex=1;
                                  -this.objectPath=[win,object];
                                  -this.propertyPath=[null,null];
                                  -this.viewPath=[{toggles:{},scrollTop:0},{toggles:this.toggles,scrollTop:0}]
                                  -}}this.panelNode.scrollTop=0;
                                  -this.rebuild()
                                  -}else{this.pathIndex=pathIndex;
                                  -var view=this.viewPath[pathIndex];
                                  -this.toggles=view.toggles;
                                  -if(previousView&&this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}this.rebuild(false,view.scrollTop)
                                  -}},getObjectPath:function(object){return this.objectPath
                                  -},getDefaultSelection:function(){return Firebug.browser.window
                                  -}});
                                  -var updateStatusBar=function(panel){var path=panel.propertyPath;
                                  -var index=panel.pathIndex;
                                  -var r=[];
                                  -for(var i=0,l=path.length;
                                  -i<l;
                                  -i++){r.push(i==index?'<a class="fbHover fbButton fbBtnSelected" ':'<a class="fbHover fbButton" ');
                                  -r.push("pathIndex=");
                                  -r.push(i);
                                  -if(isIE6){r.push(' href="javascript:void(0)"')
                                  -}r.push(">");
                                  -r.push(i==0?"window":path[i]||"Object");
                                  -r.push("</a>");
                                  -if(i<l-1){r.push('<span class="fbStatusSeparator">&gt;</span>')
                                  -}}panel.statusBarNode.innerHTML=r.join("")
                                  -};
                                  -var DOMMainPanel=Firebug.DOMPanel=function(){};
                                  -Firebug.DOMPanel.DirTable=DirTablePlate;
                                  -DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target;
                                  -var element=getAncestorByClass(target,"fbHover");
                                  -if(element){var pathIndex=element.getAttribute("pathIndex");
                                  -if(pathIndex){this.select(this.getPathObject(pathIndex))
                                  -}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}this.select(target.repObject,true)
                                  -},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this);
                                  -this.onClickStatusBar=bind(this.onClickStatusBar,this);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick);
                                  -this.ishow();
                                  -addEvent(this.statusBarNode,"click",this.onClickStatusBar)
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -var getMembers=function getMembers(object,level){if(!level){level=0
                                  -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[];
                                  -try{var domMembers=getDOMMembers(object);
                                  -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject
                                  -}else{var insecureObject=object
                                  -}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level)
                                  -}for(var name in insecureObject){if(ignoreVars[name]==1){continue
                                  -}var val;
                                  -try{val=insecureObject[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc)
                                  -}}var ordinal=parseInt(name);
                                  -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level)
                                  -}else{if(isFunction(val)){if(isClassFunction(val)&&!(name in domMembers)){addMember("userClass",userClasses,name,val,level)
                                  -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name])
                                  -}else{addMember("userFunction",userFuncs,name,val,level)
                                  -}}}else{var prefix="";
                                  -if(name in domMembers&&!(name in domConstantMap)){addMember("dom",domProps,(prefix+name),val,level,domMembers[name])
                                  -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level)
                                  -}else{addMember("user",userProps,(prefix+name),val,level)
                                  -}}}}}}catch(exc){throw exc;
                                  -if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc)
                                  -}}function sortName(a,b){return a.name>b.name?1:-1
                                  -}function sortOrder(a,b){return a.order>b.order?1:-1
                                  -}var members=[];
                                  -members.push.apply(members,ordinals);
                                  -Firebug.showUserProps=true;
                                  -Firebug.showUserFuncs=true;
                                  -Firebug.showDOMProps=true;
                                  -Firebug.showDOMFuncs=true;
                                  -Firebug.showDOMConstants=true;
                                  -if(Firebug.showUserProps){userProps.sort(sortName);
                                  -members.push.apply(members,userProps)
                                  -}if(Firebug.showUserFuncs){userClasses.sort(sortName);
                                  -members.push.apply(members,userClasses);
                                  -userFuncs.sort(sortName);
                                  -members.push.apply(members,userFuncs)
                                  -}if(Firebug.showDOMProps){domProps.sort(sortName);
                                  -members.push.apply(members,domProps)
                                  -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName);
                                  -members.push.apply(members,domFuncs)
                                  -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants)
                                  -}return members
                                  -};
                                  -function expandMembers(members,toggles,offset,level){var expanded=0;
                                  -for(var i=offset;
                                  -i<members.length;
                                  -++i){var member=members[i];
                                  -if(member.level>level){break
                                  -}if(toggles.hasOwnProperty(member.name)){member.open="opened";
                                  -var newMembers=getMembers(member.value,level+1);
                                  -var args=[i+1,0];
                                  -args.push.apply(args,newMembers);
                                  -members.splice.apply(members,args);
                                  -expanded+=newMembers.length;
                                  -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1)
                                  -}}return expanded
                                  -}function isClassFunction(fn){try{for(var name in fn.prototype){return true
                                  -}}catch(exc){}return false
                                  -}FBL.ErrorCopy=function(message){this.message=message
                                  -};
                                  -var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var ErrorCopy=function(){};
                                  -var valueType=typeof(value);
                                  -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength));
                                  -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag})
                                  -};
                                  -var getWatchRowIndex=function getWatchRowIndex(row){var index=-1;
                                  -for(;
                                  -row&&hasClass(row,"watchRow");
                                  -row=row.previousSibling){++index
                                  -}return index
                                  -};
                                  -var getRowName=function getRowName(row){var node=row.firstChild;
                                  -return node.textContent?node.textContent:node.innerText
                                  -};
                                  -var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject
                                  -};
                                  -var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row);
                                  -if(parentRow){return getRowValue(parentRow)
                                  -}};
                                  -var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row
                                  -}}};
                                  -var getPath=function getPath(row){var name=getRowName(row);
                                  -var path=[name];
                                  -var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row);
                                  -path.splice(0,0,name);
                                  ---level
                                  -}}return path
                                  -};
                                  -Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null
                                  -}});
                                  -Firebug.registerModule(Firebug.DOM);
                                  -var lastHighlightedObject;
                                  -function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}var object=target.repObject;
                                  -if(instanceOf(object,"Element")){Firebug.HTML.selectTreeNode(ElementCache(object))
                                  -}else{Firebug.chrome.selectPanel("DOM");
                                  -Firebug.chrome.getPanel("DOM").select(object,true)
                                  -}},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this)
                                  -},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick);
                                  -var selection=ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -if(selection){this.select(selection,true)
                                  -}},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles
                                  -}});
                                  -Firebug.registerPanel(DOMSidePanel)
                                  -}});
                                  -FBL.FBTrace={};
                                  -(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1,DBG_CSS:1};
                                  -this.module=null;
                                  -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[]
                                  -}for(var name in traceOptions){this[name]=traceOptions[name]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(module){this.module=module;
                                  -var queue=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(objects,className){var html=this.DBG_TIMESTAMP?[getTimestamp()," | "]:[];
                                  -var length=objects.length;
                                  -for(var i=0;
                                  -i<length;
                                  -++i){appendText(" ",html);
                                  -var object=objects[i];
                                  -if(i==0){html.push("<b>");
                                  -appendText(object,html);
                                  -html.push("</b>")
                                  -}else{appendText(object,html)
                                  -}}return this.logRow(html,className)
                                  -};
                                  -this.logRow=function(message,className){var panel=this.getPanel();
                                  -if(panel&&panel.panelNode){this.writeMessage(message,className)
                                  -}else{this.messageQueue.push([message,className])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(message,className){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -this.writeRow.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}};
                                  -this.appendRow=function(row){var container=this.getPanel().panelNode;
                                  -container.appendChild(row)
                                  -};
                                  -this.writeRow=function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -};
                                  -function appendText(object,html){html.push(escapeHTML(objectToString(object)))
                                  -}function getTimestamp(){var now=new Date();
                                  -var ms=""+(now.getMilliseconds()/1000).toFixed(3);
                                  -ms=ms.substr(2);
                                  -return now.toLocaleTimeString()+"."+ms
                                  -}var HTMLtoEntity={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function replaceChars(ch){return HTMLtoEntity[ch]
                                  -}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars)
                                  -}function objectToString(object){try{return object+""
                                  -}catch(exc){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().panelNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -},shutdown:function(){this.clearButton.shutdown();
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var parentPanelMap={};
                                  -var registerModule=Firebug.registerModule;
                                  -var registerPanel=Firebug.registerPanel;
                                  -append(Firebug,{extend:function(fn){if(Firebug.chrome&&Firebug.chrome.addPanel){var namespace=ns(fn);
                                  -fn.call(namespace,FBL)
                                  -}else{setTimeout(function(){Firebug.extend(fn)
                                  -},100)
                                  -}},registerModule:function(){registerModule.apply(Firebug,arguments);
                                  -modules.push.apply(modules,arguments);
                                  -dispatch(modules,"initialize",[]);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){registerPanel.apply(Firebug,arguments);
                                  -panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0,panelType;
                                  -panelType=arguments[i];
                                  -++i){if(panelType.prototype.name=="Dev"){continue
                                  -}panelTypeMap[panelType.prototype.name]=arguments[i];
                                  -var parentPanelName=panelType.prototype.parentPanel;
                                  -if(parentPanelName){parentPanelMap[parentPanelName]=1
                                  -}else{var panelName=panelType.prototype.name;
                                  -var chrome=Firebug.chrome;
                                  -chrome.addPanel(panelName);
                                  -var onTabClick=function onTabClick(){chrome.selectPanel(panelName);
                                  -return false
                                  -};
                                  -chrome.addController([chrome.panelMap[panelName].tabNode,"mousedown",onTabClick])
                                  -}}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}}})
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.Skin={CSS:'.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y 100% 0;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 0 100%;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/min.png);}#fbWindow_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/minHover.png);}#fbWindow_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detach.png);}#fbWindow_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detachHover.png);}#fbWindow_btDeactivate{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/off.png);}#fbWindow_btDeactivate:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>'}
                                  -}});
                                  -FBL.initialize()
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/build/template .htaccess b/branches/flexBox/build/template .htaccess
                                  deleted file mode 100644
                                  index 2b750b1a..00000000
                                  --- a/branches/flexBox/build/template .htaccess	
                                  +++ /dev/null
                                  @@ -1,41 +0,0 @@
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1 [L]
                                  -</IfModule>
                                  -
                                  -#<ifModule mod_headers>
                                  -#  Header unset ETag
                                  -#</ifModule>
                                  -#FileETag None
                                  -
                                  -#<ifModule mod_headers>
                                  -#  Header unset Last-Modified
                                  -#  Header set Cache-Control "private, x-gzip-ok=''"
                                  -#</ifModule>
                                  -
                                  -#<FilesMatch "\.(js|jgz)$">
                                  -#</FilesMatch>
                                  -
                                  -#ExpiresActive on
                                  -#ExpiresDefault "access plus 0 seconds"
                                  -
                                  -#<IfModule mod_expires>
                                  -#ExpiresActive On
                                  -#ExpiresDefault A300
                                  -#ExpiresByType image/x-icon A2592000
                                  -#ExpiresByType application/x-javascript A3600
                                  -#ExpiresByType text/css A3600
                                  -#ExpiresByType image/gif A604800
                                  -#ExpiresByType image/png A604800
                                  -#ExpiresByType image/jpeg A604800
                                  -#ExpiresByType text/plain A300
                                  -#ExpiresByType application/x-shockwave-flash A604800
                                  -#ExpiresByType video/x-flv A604800
                                  -#ExpiresByType application/pdf A604800
                                  -#ExpiresByType text/html A300
                                  -#</IfModule>
                                  -
                                  -AddType "text/javascript;charset=UTF-8" .jgz
                                  -AddEncoding gzip .jgz
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/bookmarlet.txt b/branches/flexBox/content/bookmarlet.txt
                                  deleted file mode 100644
                                  index 7d27be24..00000000
                                  --- a/branches/flexBox/content/bookmarlet.txt
                                  +++ /dev/null
                                  @@ -1,231 +0,0 @@
                                  -//*************************************************************************************************
                                  -// Bookmarlet versions
                                  -
                                  -// Bookmarlet version 4
                                  -
                                  -// stable
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');
                                  -
                                  -// debug
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-debug.js','releases/lite/debug/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');
                                  -
                                  -// beta
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite-beta.js','releases/lite/beta/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');
                                  -
                                  -// 1.3 dev
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/','#startOpened');
                                  -
                                  -// 1.4 dev
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.4/','#startOpened');
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// 1.3.0
                                  -
                                  -// 1.3.0
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');
                                  -
                                  -// 1.3.0 X
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-debug.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#debug');
                                  -
                                  -
                                  -
                                  -// version 2
                                  -// version 1
                                  -
                                  -javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','build/firebug.jgz','skin/xp/sprite.png','http://firebug.local:8740/firebug1.3/','#startOpened,disableWhenFirebugActive=false');
                                  -
                                  -
                                  -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened');
                                  -
                                  -
                                  -javascript:var%20firebug=document.createElement('script');firebug.setAttribute('src','http://firebug.local:8740/firebug1.2/firebug-lite-compressed.js');document.body.appendChild(firebug);(function(){if(window.firebug.version){firebug.init();}else{setTimeout(arguments.callee);}})();void(firebug);
                                  -http://firebug.local:8740/firebug1.3/
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL (sequencial)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('script');
                                  -L.id='FirebugLite';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -(function(F,i,r,e,b,u,g,L,I,T,E){
                                  -if(F.getElementById(b))return;
                                  -
                                  -E=F.documentElement.namespaceURI;
                                  -E=E?F[i+'NS'](E,'script'):F[i]('script');
                                  -
                                  -E=F[i]('script');
                                  -E[r]('id',b);
                                  -E[r]('src',I+g+T);
                                  -E[r](b,u);
                                  -(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);
                                  -
                                  -E=new Image;
                                  -E[r]('src',I+L);
                                  -})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.1','firebug.jgz','skin/xp/sprite.png','http://getfirebug.com/releases/lite/beta/','#startOpened');
                                  -//  F         i               r              e                      b                       u         g                    L                   I                                                          T
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBLite (parallel)
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=L+t;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=L+i;
                                  -})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened');
                                  -//  F         B              L                                            i                    t
                                  -
                                  -
                                  -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened');
                                  -
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -F.getElementsByTagName('head')[0].appendChild(g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -
                                  -r='getElementsByTagName';
                                  -e='appendChild';
                                  -
                                  -F[r]('head')[0][e](g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -
                                  -g=F[i]('div');
                                  -g.id='FBLI';
                                  -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -g.innerHTML='Loading...';
                                  -F[r]('body')[0][e](g);
                                  -
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -//        F,B,u,g,L,i,t,e
                                  -//        F,i,r,e,b,u,g,
                                  -(function(F,B,L,i,t,e){
                                  -if(F.getElementById('FBLS'))return;
                                  -
                                  -e=F[B]('div');
                                  -e.id='FBLI';
                                  -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F[B]('script');
                                  -e.id='FBLS';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL* (sequencial with loading indicator)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('div');
                                  -L.id='FBLI';
                                  -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;';
                                  -L.innerHTML='Loading ...';
                                  -F.body.appendChild(L);
                                  -
                                  -L=F.createElement('script');
                                  -L.id='FBLS';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// experimental bookmarlet
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -
                                  -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat';
                                  -t=i?'absolute':'fixed';
                                  -
                                  -e=F.createElement('div');
                                  -e.id='FirebugLoadIndicator';
                                  -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading Firebug Lite...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F.createElement('script');
                                  -e.src=L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -        
                                  -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -// firebug lite 1.2 bookmarlet
                                  -javascript:
                                  -
                                  -var firebug=document.createElement('script');
                                  -firebug.setAttribute('src','http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js');
                                  -document.body.appendChild(firebug);
                                  -(function(){
                                  -  if(window.firebug.version)
                                  -  {
                                  -    firebug.init();
                                  -  }
                                  -  else
                                  -  {
                                  -    setTimeout(arguments.callee);
                                  -  }
                                  -})();
                                  -void(firebug);
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/changelog.txt b/branches/flexBox/content/changelog.txt
                                  deleted file mode 100644
                                  index a29a4f3e..00000000
                                  --- a/branches/flexBox/content/changelog.txt
                                  +++ /dev/null
                                  @@ -1,1049 +0,0 @@
                                  -###################################################################################################
                                  - 1.4.0 - 2011-09-23 - Revision: 11961
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    Issue 4776: [Firebug lite] CSS Media Types
                                  -    Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -    Issue 3760: [Firebug lite] CommandLine throws syntax error if there's a comment in the expression
                                  -    Issue 3326: [Firebug lite] CSS Rule Line Number
                                  -    Issue 3262: [Firebug Lite] CSS specificity is not being calculated properly
                                  -    Issue 4239: [Firebug Lite] Using ie7-js library crashes IE8
                                  -    Issue 4472: [Firebug Lite] Ajax headers deleted on IE
                                  -
                                  -    Issue 4606: [Firebug Lite] Console is not working properly in recent versions of FF
                                  -    Issue 4587: [Firebug Lite] Opera shows security warning when using the Inspect tool
                                  -    Issue 4432: [Firebug Lite] HTML is mixed-up with functions 
                                  -    
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -
                                  -    - cssAnalyzer code refactored
                                  -    - cssParser (powered by sergeche's Simple CSS Parser https://github.com/sergeche/webkit-css)
                                  -
                                  --------------------------------------------------------------------------------
                                  -XHR
                                  --------------------------------------------------------------------------------
                                  -    - XHR calls made by Firebug Lite internally are not visible in the Console log anymore
                                  -    - added FBL.getNativeXHRObject()
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Other
                                  --------------------------------------------------------------------------------
                                  -    - Store module (powered by marcuswestin's library https://github.com/marcuswestin/store.js)
                                  -    
                                  -    - console injection fallback now works as expected, creating a "firebug" object when there's 
                                  -      a "console" object already and overrideConsole option is set to false.
                                  -
                                  -    - jsonViewer will not try to evaluate the contents of the requested file if the content-type
                                  -      is set to "text/plain" 
                                  -
                                  -    - new getLocation() function
                                  -    - better expression evaluation
                                  -
                                  --------------------------------------------------------------------------------
                                  -FBTest
                                  --------------------------------------------------------------------------------
                                  -    - more robust Unit Test Framework
                                  -    - updated QUnit to the latest version
                                  -    - FBTest.click() now works in IE
                                  -    - FBTest.getPanel() now returns also Side Panels
                                  -    - updated Test Cases to use Sebastian's template
                                  -    - Firebug Lite script is automatically inserted by the Test Runner, allowing you to easily
                                  -      test the same file against different versions
                                  -      
                                  -   - Improvements in the Test Runner
                                  -            - included total number of tests passed and failed, and total execution time
                                  -            - included link to run the test page again
                                  -            - included link to open the test page it in another tab
                                  -            - included link to view the test page in fullscreen mode
                                  -            - improved the progress output of the tests, including the title of that test (if any
                                  -              is found in the document.title)
                                  -
                                  -    - new Test Runner Toolbar:
                                  -            - allows selecting different Test Lists
                                  -            - allows selecting different builds given the Version/Channel/Mode    
                                  -
                                  -    - Properties added to FBTest
                                  -            - config
                                  -            - delayDuration
                                  -            - waitInterval
                                  -            - waitTimeout
                                  -
                                  -    - Methods added to FBTest
                                  -            - FBTest.triggerEvent()
                                  -            - FBTest.getXHRObject()
                                  -            - FBTest.loadScript()
                                  -            - FBTest.installFirebug()
                                  -            - FBTest.getFirebugConfig()
                                  -            - FBTest.getFirebugLocation()
                                  -            - FBTest.getTestListLocation()
                                  -            - FBTest.loadTestList()
                                  -            - FBTest.getURLParamaters()
                                  -            - FBTest.delay()
                                  -            - FBTest.wait()
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.4.0b1 - 2011-08-18 - Revision: 11337
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Issues
                                  --------------------------------------------------------------------------------
                                  -    - Issue 4606: Firebug Lite: Console is not working properly in recent versions of FF
                                  -    - Issue 4587: Firebug Lite: Opera shows security warning when using the Inspect tool
                                  -    - Issue 4432: Firebug Lite: HTML is mixed-up with functions 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Internal fixes
                                  --------------------------------------------------------------------------------
                                  -    - overrideConsole option now works as expected
                                  -    - Fixed problem with console injection in recent versions of FF
                                  -    - Fixed problem with resizing in-page chrome (iframe) in recent versions of FF
                                  -    - Fixed visual glitch with Menus in high resolution monitors
                                  -    - Fixed source line number height in high resolution monitors
                                  -    - Fixed mini-chrome (lower-right icon) size glitch when the cache is empty
                                  -    - Bookmarklet now works as expected when visiting getfirebug.com
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome extension
                                  --------------------------------------------------------------------------------
                                  -    - Improved activation failure messages in Chrome extension
                                  -
                                  --------------------------------------------------------------------------------
                                  -Internal changes
                                  --------------------------------------------------------------------------------
                                  -    - internal directory organization and code refactoring to facilitate future 
                                  -      merging with Firebug code base (now code written for lite and the code 
                                  -      borrowed from Firebug are in different directories)
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.2 - 2011-03-22 - Revision: 9760
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    - Issue 3422: Firebug Lite breaks Google Instant Search
                                  -    - Issue 3504: Firebug lite: jQuery.ajax call fails in IE
                                  -    - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -    - Issue 3554: Firebug Lite should use local images when loaded locally
                                  -    - Issue 3166: Listen to F12 key in for Google Chrome when inactive
                                  -    - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension
                                  -    - infoTips for CSS properties such as color and image
                                  -
                                  --------------------------------------------------------------------------------
                                  -Addition
                                  --------------------------------------------------------------------------------
                                  -    - infoTips for CSS properties such as color and image
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bugfixes
                                  --------------------------------------------------------------------------------
                                  -    - Issue 3422: Firebug Lite breaks Google Instant Search
                                  -    - Issue 3504: Firebug lite: jQuery.ajax call fails in IE
                                  -    - Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -    - Issue 3554: Firebug Lite should use local images when loaded locally
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Isolated most of Lite-specific code (not part/adaptation of Firebug's
                                  -      original source) into a single directory (/content/firebug/lite/).
                                  -    - Created a simple server-side proxy plugin to be used in conjunction with
                                  -      Firebug Lite in order to overcome the cross-domain limitations of JavaScript
                                  -    - Unifying Firebug Lite internal cache system (to be used in sourceCache).
                                  -      As a bonus, the unified model allows Firebug Lite to adapt its cache when
                                  -      new elements are inserted into the document, which means that now it will
                                  -      be easier to use the Inspector in dynamically created content.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome extension improvements
                                  --------------------------------------------------------------------------------
                                  -    - Issue 3166: Listen to F12 key in for Google Chrome when inactive
                                  -    - Issue 3579: Use context menu to Inspect Element in Firebug Lite Chrome Extension
                                  -    - Code refactored (chrome extension specific code isolated in a single file/module)
                                  -    - Better message handling (two-way communication between the application/page,
                                  -      content script and background page)
                                  -    - Activation refactoring. The application is loaded how assynchronously during
                                  -      activation and the activation can be started now by the BrowserAction/Icon,
                                  -      the F12/ctrl+F12 key, or the context meny "Inspect with Firebug Lite" option.
                                  -      It is possible also to activate-deactivate-reactivate without reloading
                                  -      the page now.
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.1 - 2010-09-07 - Revision: 7759
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    - Issue 3272: Install Google Chrome extension results in a 404 error
                                  -    - Issue 3384: Just two inadvertent globals across the Firebug Lite files
                                  -    - Issue 3318: Firebug Lite dies if you hide the UI when the large command line is open
                                  -    - Issue 3181: Firebug Lite Missing XHR methods/properties
                                  -    - Issue 3262: CSS specificity is not being calculated properly.
                                  -    - Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite
                                  -    - Normalizing syntax (missing semicolons)
                                  -    - Added basic JsDoc comment markup
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.1b2 - 2010-07-26 - Revision: 7413
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets
                                  -    - Issue 3181: Missing XHR methods/properties
                                  -    - Custom Net response viewers (XML and JSON viewers)
                                  -        - Port of HTML viewer used in XHR representations
                                  -        - Port of jsonViewer used in XHR representations
                                  -        - Port of xmlViewer used in XHR representations
                                  -
                                  --------------------------------------------------------------------------------
                                  -XHR
                                  --------------------------------------------------------------------------------
                                  -    - Compatibility with XMLHttpRequest 2 specification
                                  -    - Issue 3181: Missing XHR methods/properties
                                  -    - XHR representation is properly updated when the request is aborted
                                  -    - Adjusting spy.mimeType according XHR response so we can detect when to
                                  -      use custom response viewers (like HTML, XML and JSON viewers)
                                  -
                                  --------------------------------------------------------------------------------
                                  -jsonViewer
                                  --------------------------------------------------------------------------------
                                  -    - Port of jsonViewer used in XHR representations
                                  -
                                  --------------------------------------------------------------------------------
                                  -xmlViewer    
                                  --------------------------------------------------------------------------------
                                  -    - Port of xmlViewer used in XHR representations
                                  -
                                  --------------------------------------------------------------------------------
                                  -Net 
                                  --------------------------------------------------------------------------------
                                  -    - Custom Net response viewers (XML and JSON viewers)
                                  -    - Port of HTML viewer used in XHR representations
                                  -
                                  --------------------------------------------------------------------------------
                                  -Spy 
                                  --------------------------------------------------------------------------------
                                  -    - dispatching "initTabBody" event to Firebug.NetMonitor.NetInfoBody listeners
                                  -      so custom response viewers can be properly initialized
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Included warnings when some external stylesheets could not be loaded
                                  -    - Issue 3224: Firebug Lite shows error when trying to read some external stylesheets
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Avoid error when the element is not attached a document
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removing the temporary fix to RegExp problem Google Chrome 5 once it 
                                  -      is now fixed (and the temporary fix breaks the latest version).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Firebug
                                  --------------------------------------------------------------------------------
                                  -    - Firebug.Rep.getTitle now works for some special cases in IE
                                  -
                                  --------------------------------------------------------------------------------
                                  -Command Line
                                  --------------------------------------------------------------------------------
                                  -    - Firebug.Console no longer uses Firebug.Console.LOG_COMMAND to identify 
                                  -      console calls as in the old Console panel version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Added new experimental getDOMMember function to detect user members
                                  -      (properties/functions) of several builtin objects such as window,
                                  -      document, location, and instances of Element and other DOM objects
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.1b1 - 2010-06-29 - Revision: 7198
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    - Issue 2958: Unable to add CSS to an element that has no style rules
                                  -    - Issue 3165: Styling problem with nested expandable groups
                                  -    - Issue 3178: Bookmarklet does not support XML+XSLT documents
                                  -    - Context menu support for Style and CSS Panels
                                  -    - Using double click to insert new CSS rule (instead of mouse down)  
                                  -    
                                  -
                                  --------------------------------------------------------------------------------
                                  -i18n
                                  --------------------------------------------------------------------------------
                                  -    - Unified all localization-related functions inside i18n.js
                                  -    - Implemented $STRF (required for context menus)
                                  -
                                  --------------------------------------------------------------------------------
                                  -GUI
                                  --------------------------------------------------------------------------------
                                  -    - Improved GUI Menu component to support content menus
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - Fixed timing issues when calling input.focus() and input.select()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Panels now will stop editing when clicking on any non-editable element
                                  -
                                  --------------------------------------------------------------------------------
                                  -UI
                                  --------------------------------------------------------------------------------
                                  -    - Issue 3165: Styling problem with nested expandable groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Issue 2958: Unable to add CSS to an element that has no style rules
                                  -    - Using double click to insert new CSS rule (instead of mouse down)  
                                  -    - IE support for new features being used (context menu, double click, etc)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Firebug
                                  --------------------------------------------------------------------------------
                                  -    - Implemented panel.onContextMenu()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Ported lib.hasProperties()
                                  -    - Fixed IE mouse button detection for "dblclick" events
                                  -    - Port of lib.parseJSONString()
                                  -    - Making the development mode work online without requiring pre-configuration
                                  -    - Enabled the bookmarlet update detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Added the old representations back to Firebug Lite source (Firebug.Reps)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed the broken console.dirxml() function
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Fixed the broken dirxml() command line shortcut 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarklet
                                  --------------------------------------------------------------------------------
                                  -    - Issue 3178: Bookmarklet does not support XML+XSLT documents
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.1a2 - 2010-06-24 - Revision: 7125
                                  -###################################################################################################
                                  -
                                  -Overview:
                                  -    - Major performance improvements in the inline editor
                                  -    - Major performance improvement in Chrome.keyCodeListen 
                                  -    - Issue 3118: Long lines in XHR response
                                  -    - Issue 2981: Switching from CSS tab and back causes an error
                                  -    - Fix bug in Google Chrome 5 which causes representation of "object links" 
                                  -      not being properly styled
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - autocompletion cycling (with UP/DOWN keys) now works as expected for partially
                                  -      typed words in IE6+, Safari/Google Chrome, and Opera
                                  -      
                                  -    - Major improvement in editor's autocomplete performance (was too slow on IE)
                                  -    - No more problems with autocomplete when typing fast (timing issues)
                                  -    - ignoring the inline editor spell checking in Safari/Google Chrome
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Fix bug in Google Chrome 5 which causes representation of "object links" 
                                  -      not being properly styled
                                  -
                                  --------------------------------------------------------------------------------
                                  -UI
                                  --------------------------------------------------------------------------------
                                  -    - Issue 3118: Long lines in XHR response
                                  -    - Added round corner support in the XHR tabs to Chrome and Opera
                                  -    - Resetting user agent styles for tables which was creating a small glitch
                                  -      (undesired blank space) between the toolbar and the panel content
                                  -
                                  --------------------------------------------------------------------------------
                                  -Extensions
                                  --------------------------------------------------------------------------------
                                  -    - Testing Firediff extension support
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Issue 2981: Switching from CSS tab and back causes an error
                                  -    - Destroying the inline editor when the panel is destroyed or hidden
                                  -    - Properly dispatching some CSS change events to listeners
                                  -
                                  --------------------------------------------------------------------------------
                                  -Firebug
                                  --------------------------------------------------------------------------------
                                  -    - Port of Firebug.Listener
                                  -    - Firebug.Module now inherits from Firebug.Listener as in Firebug
                                  -    - Experimental context menu support
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Improved window key code event listener. Only one "keydown" event will be 
                                  -      attached to the window, and the onKeyCodeListen() function will delegate 
                                  -      which listeners should be called according to the event.keyCode fired.
                                  -
                                  -    - Fixing bug in the persistent mode (related to the new console panel)
                                  -    - Improving the accuracy of the delay time calculated in the persist process.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in Lib.dispatch which was preventing some listeners to be called.
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0 - 2010-05-24 - Revision: 6859
                                  -###################################################################################################
                                  -
                                  -    - Refactored code
                                  -        - Console e Css old modules deleted (not used anymore)
                                  -        - Test modules deleted (moved to 1.4 branch)
                                  -        - Comparison modules deleted (a copy of Domplate and DOM which was
                                  -          used to compare the Firebug and Firebug Lite sources)
                                  -          
                                  -    - New distribution location and file name:
                                  -        - https://getfirebug.com/firebug-lite.js (compressed)
                                  -        - https://getfirebug.com/firebug-lite-debug.js (uncompressed, trace)
                                  -        - https://getfirebug.com/firebug-lite-beta.js (beta channel)
                                  -    
                                  -    - Added "debug" URL option
                                  -    
                                  -    - Updated "classic" and "light" skins
                                  -    
                                  -    - Improvements in the debug mode (it exposes the FBL library, and forces
                                  -      the UI element to be visible at HTML panel)
                                  -    
                                  -    - Fixed frameCounters variable leaking to global namespace
                                  -    
                                  -    - Firebug.extend() method added to support Firebug Lite extensions
                                  -    
                                  -    - Fixed the missing command line API dir()
                                  -    - Fixed the missing command line api dirxml()
                                  -    - Fixed the missing console.firebuglite property in the console object
                                  -    - Fixed problem when loading an extension before the UI finish loading
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0b2 - 2010-05-06 - Revision: 6695
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - The Console Panel now uses the same rendering engine (domplate) and object
                                  -      representation (Reps) used in Firebug
                                  -      
                                  -    - Console now has clickable objects links, which will lead you to the related 
                                  -      panel, HTML if is an element, or the DOM panel if is an object
                                  -      
                                  -    - console.dir() now uses the same rich representation as in the DOM panel, with
                                  -      items which can be collapsed, and links which can be clicked.
                                  -      
                                  -    - console.trace() now uses rich representation, with clickable links, and will
                                  -      show the file name and line number for some browsers when found at the stacktrace 
                                  -    
                                  -    - console.count() now works as in Firebug
                                  -    - console.group() now can be collapsed, using the same representation as in Firebug 
                                  -    - console.groupCollapsed() added to the console object
                                  -
                                  -    - new offline log messages handler (messages called before Firebug Lite UI finish 
                                  -      rendering), able to support clickable links and advanced representations 
                                  -      like the XHR watcher
                                  -      
                                  -    - ability to listen offline XHR messages
                                  -    
                                  --------------------------------------------------------------------------------
                                  -XHR
                                  --------------------------------------------------------------------------------
                                  -    - Fixed Issue 2977: XHR POST and URL parameters in the console
                                  -    - Fixed Issue 2840: Firebug Lite 1.3b doesn't handle synchronous XHR requests
                                  -    - Fixed Issue 2846: Firebug Lite 1.3b doesn't show XHR request made before the main 
                                  -      document is loaded
                                  -      
                                  -    - Fixed issue with the spinning XHR gif that wasn't being hidden sometimes in IE
                                  -    - Fixed bug when there is no responseHeaders in IE
                                  -    - Properly handling error when something goes wrong (like access restriction error)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome extension
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem with restricted pages. the method used to load the bookmarlet
                                  -      when no content script is available no longer works in recent versions of
                                  -      Google Chrome, so now an alert box appears indicating that the extension
                                  -      can't work on that page
                                  -    
                                  -    - Fixed problem when trying to activate Firebug Lite in a page which was open
                                  -      before Firebug extension itself being enabled. Now it shows an alert box
                                  -      asking the user to reload the page to complete the activation
                                  -    
                                  -    - Fixed problem in Google Chrome 5 which was caused by not using the proper
                                  -      encoding (UTF-8) at the content script file
                                  -      
                                  -    - Fixed problem with popup. when the popup was opened, the bug icon was
                                  -      becoming gray, falsely indicating that it was deactivated
                                  -
                                  -    - Fixed problem with synchronization between Firebug Lite state and the 
                                  -      browser icon state
                                  -      
                                  -    - Fixed problem with UI images not loading in Mac and Linux (was related
                                  -      to a bug in a third-party compression tool called Izarc)
                                  -    
                                  -    - Ignoring the FirebugChannel element in the HTML panel visualization
                                  -    
                                  -    - The core of the extension now uses the exact the same source as found
                                  -      at getfirebug.com, and no longer needs to be built with a different
                                  -      URL location for the images 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem with cookies not available in XML+XSL documents
                                  -    - Fixed bug at lib.findLocation() in IE, when using deep relative paths 
                                  -    - Basic extension system support
                                  -    - Basic support for the next generation HTML panel (fully editable, cross-frame)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Net
                                  --------------------------------------------------------------------------------
                                  -    - Ported Firebug.NetMonitor.NetInfoPostData representation
                                  -    - Fixed problem with the styling of XHR post tab in Google Chrome
                                  -    - Fixed problem with the styling of XHR params tab in IE
                                  -
                                  --------------------------------------------------------------------------------
                                  -ConsoleInjector
                                  --------------------------------------------------------------------------------
                                  -    - ported the consoleInjector module from Firebug
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem with the Element's representation and attribute names
                                  -    - Adjusted the StackFrame representation to be used with the new console.trace()
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Fixed styling problem with source code inside HTML tree (script tag). 
                                  -      The line numbers were positioned at the top of the panel.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Repository
                                  --------------------------------------------------------------------------------
                                  -    - Added issues test cases directory to the repository
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0b1 - 2010-02-05 - Revision: 6012
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented a more robust stylesheet scanner (will scan imported stylesheets)
                                  -    - Implemented a cascading styles analyser (will detect which CSS rules are applied
                                  -      to a particular element, in the proper cascading order)
                                  -      
                                  -    - Ported css.js file from Firebug, including the following features:
                                  -        - live edit of CSS properties
                                  -        - enable/disable CSS properties on-the-fly
                                  -        - Cascading visualization
                                  -        - Inheritance visualization (with overriden properties marked)
                                  -    
                                  -    - Ported the CSS Panel
                                  -    - Ported the Style Panel
                                  -    - Ported the Computed Panel divided in categories (in a separated tab)
                                  -    - Fixed the problem with external stylesheets (now shows a "Access restricted" message). 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - Autocomplete feature with UP/DOWN keys
                                  -    - "Complete as you type" feature in most browsers (not working in Opera yet)
                                  -    - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN
                                  -    - Navigation with TAB/SHIFT+TAB
                                  -    - Fixed the CSS of editor to work in all browsers
                                  -    - Pretty inline editor support in IE6
                                  -    - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't 
                                  -      trigger the onkeypress event, making some changes in the editor not apply 
                                  -      to the CSS property.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Strings are properly rendered in console.* calls
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Don't show the Firebug Lite source code in the script list
                                  -    - Refactored Script panel
                                  -    - Fixed potential memory leak
                                  -    - Using the Warning template in the Script panel when failing to load external scripts.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - When running as Chrome extension, all images used in the interface are
                                  -      stored in the extension directory, hugely improving the perceived loading
                                  -      time for GUI operations, specially in the startup.
                                  -      
                                  -    - Implemented the chrome.deactivate() method
                                  -
                                  --------------------------------------------------------------------------------
                                  -GUI
                                  --------------------------------------------------------------------------------
                                  -    - Added the "off" button to the UI
                                  -    - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+
                                  -    - Fixed problem with panel initialization that was breaking the scroll 
                                  -      position persistence of the panels.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Added domplate tag.insertBefore method
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Added KeyEvent constants
                                  -    - Added bindFixed method
                                  -    - Added Whitespace and Entity conversions methods
                                  -    - Added String escaping methods
                                  -    - Added CSS methods
                                  -    - Added DOM queries methods
                                  -    
                                  -    - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" 
                                  -      CSS selector that was used to match the element)
                                  -     
                                  -    - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition()
                                  -      to support text selection and caret position detection in editor module
                                  -      
                                  -    - Making instanceOf() work also for non HTML elements (elements without ownerDocument 
                                  -      property), to avoid the use of the instanceof operator, that may cause error in other 
                                  -      browsers when the Class is not defined in the global namespace.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Ported editor.js module from Firebug
                                  -    - Ported a simplified version of tabContext.js
                                  -    - Implemented a more robust Cache system that will be used internally
                                  -    - Implemented a message dispatching method to communicate with the Chrome extension
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a5 - 2010-01-16 - Revision: 5719
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Large Command Line
                                  -    - Refactoring CommandLine module for better readability and encapsulation (commandHistory
                                  -        is now a private variable in CommandLine module)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Fix problem in iframe creation that was blocking the UI creation via
                                  -      bookmarlet in IE, for some pages.
                                  -      
                                  -    - Allow Firebug Lite UI to load in "windowless mode", without creating an
                                  -      iframe. This is necessary to make the bookmarlet run in cases where it
                                  -      is not possible to create an iframe.
                                  -      
                                  -    - Refactoring Chrome module for better readability
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - refined the layout of buttons (added an image background)
                                  -    - refined the layout of log groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -Context
                                  --------------------------------------------------------------------------------
                                  -    - Better context evaluation (commands with multiple lines are now properly evaluated)
                                  -    - context.evaluate() properly executes and returns the value of expressions with 
                                  -      multiple commands (be it multilined or not).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Style
                                  --------------------------------------------------------------------------------
                                  -    - Basic editing feature of inline styles (Style panel)
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - properly format inline style of elements in IE to lower-case in HTML panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - fixed visibility detection and visibility representation of elements
                                  -    - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), 
                                  -      and others. IE has a different pattern for identifying mouse buttons.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc).
                                  -    - ported the consoleInjetor.js file that will be used with the new console (console2.js)
                                  -    - ported the console.js file from Firebug codebase (not enabled yet). This will replace 
                                  -      the current implementation of the Console panel in the 1.3 final version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - new XHR watcher (with response and headers tabs) 
                                  -    - fixed variable "root" leaking to global namespace (domplate.js) 
                                  -    - improved development build functions
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4 - 2009-12-31 - Revision: 5505 
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Implemented synchronization of the persistent popup
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - Moved all UI components to a separated gui.js file.
                                  -    - Implemented the Menu class (with normal, checkbox, radiobutton, group
                                  -      and separator items), that will be used in options menus at 1.3 verson
                                  -      and in contexts menus at 1.4 version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -    - Implemented the console.trace (thanks dongryphon for the contribution!)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the border in the BoxModel Highlight
                                  -    
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Internet Explorer and inline styles representation (thanks christophe.blin 
                                  -      for the contribution!)
                                  -
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3 - 2009-09-13 - Revision: 4882
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2 - 2009-08-03 - Revision: 3847
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1 - 2009-05-03 - Revision: 2729
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0 - 2009-01-24 - Revision: 1765
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firebug-lite-dev.js b/branches/flexBox/content/firebug-lite-dev.js
                                  deleted file mode 100644
                                  index 69ab883d..00000000
                                  --- a/branches/flexBox/content/firebug-lite-dev.js
                                  +++ /dev/null
                                  @@ -1,832 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: plugin problem with Dev panel
                                  -// TODO: Dev panel doesn't work in persistent mode
                                  -// TODO: XHR listener breaks Firebug in Chrome when in persistent mode 
                                  -
                                  -// Firebug Lite is already running in persistent mode so we just quit
                                  -// TODO: better detection
                                  -if (window.Firebug)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var bookmarkletMode = true;
                                  -
                                  -//var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/latest/skin/xp/"; // stable
                                  -//var bookmarkletSkinURL = "https://getfirebug.com/releases/lite/beta/skin/xp/"; // beta
                                  -var bookmarkletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/"; // developer
                                  -//var bookmarkletSkinURL = "chrome-extension://bmagokdooijbeehmkpknfglimnifench/skin/xp/"; // chrome extension
                                  -//var bookmarkletSkinURL = "chrome-extension://mdaojmoeahmmokaflgbannaopagamgoj/skin/xp/"; // chrome beta extension
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//window.FBL = {}; // force exposure in IE global namespace
                                  -window.FBDev =
                                  -{
                                  -    // ********************************************************************************************
                                  -    modules:
                                  -    [ 
                                  -        // ****************************************************************************************
                                  -        // Application Core
                                  -        
                                  -        "lite/lib.js",
                                  -        "lite/i18n.js",
                                  -        "lite/firebug.js",
                                  -        
                                  -        "lite/gui.js",        
                                  -        "lite/context.js",
                                  -        "lite/chromeNew.js",
                                  -        "lite/chromeSkin.js",
                                  -        
                                  -        // firebug1.4 experimental
                                  -        //"lite/temp/chrome2.js",
                                  -        //"firebug/tabContext.js",
                                  -        //"firebug/tabWatcher.js",
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Lite Core
                                  -        
                                  -        "lite/lite.js",
                                  -        "lite/lite/cache.js",
                                  -        "lite/lite/proxy.js",
                                  -        "lite/lite/style.js",
                                  -        "lite/lite/script.js", // experimental
                                  -        "lite/lite/browser.js", // experimental
                                  -        
                                  -        "lite/store/json.js",
                                  -        "lite/store/store.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Firebug Classes
                                  -        
                                  -        "lite/selector.js",
                                  -        "lite/inspector.js",
                                  -        
                                  -        "firebug/domplate.js",
                                  -        "firebug/reps.js",        
                                  -        "firebug/editor.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // XHR Watcher
                                  -        
                                  -        "lite/xhr.js",
                                  -        "firebug/net.js",
                                  -        "firebug/spy.js",
                                  -        
                                  -        "firebug/jsonViewer.js",
                                  -        "firebug/xmlViewer.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Console / CommandLine core
                                  -        
                                  -        "firebug/console.js",
                                  -        "firebug/consoleInjector.js",
                                  -        
                                  -        "lite/commandLine.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Simple HTML Panel
                                  -        
                                  -        "lite/html.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Advanced HTML Panel (experimental)
                                  -        
                                  -        //"firebug/insideOutBox.js", // HTML experimental        
                                  -        //"firebug/lib/htmlLib.js", // HTML experimental
                                  -        //"lite/temp/html3.js", // HTML experimental
                                  -        //"lite/temp/html2.js", // HTML experimental
                                  -        
                                  -        "firebug/infotip.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // CSS Panel
                                  -        
                                  -        "lite/css/cssParser.js",
                                  -        "lite/css/cssAnalyzer.js",
                                  -        "firebug/css.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Simple Script Panel
                                  -        
                                  -        "lite/script.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Script Panel
                                  -        
                                  -        //"firebug/sourceCache.js", // experimental
                                  -        //"firebug/sourceFile.js", // experimental
                                  -        //"firebug/sourceBox.js", // experimental
                                  -        //"firebug/debugger.js", // experimental
                                  -        
                                  -        //"lite/eventDelegator.js", // experimental
                                  -
                                  -        "firebug/dom.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Trace Module/Panel
                                  -        
                                  -        "lite/trace.js",
                                  -        "lite/tracePanel.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Firediff
                                  -        
                                  -        /*
                                  -        "firediff/content/firediff/versionCompat.js",
                                  -        "firediff/content/firediff/diff.js",
                                  -        "firediff/content/firediff/path.js",
                                  -        "firediff/content/firediff/cssModel.js",
                                  -        "firediff/content/firediff/events.js",
                                  -        "firediff/content/firediff/domEvents.js",
                                  -        "firediff/content/firediff/cssEvents.js",
                                  -        "firediff/content/firediff/domplate.js",
                                  -        "firediff/content/firediff/search.js",
                                  -        "firediff/content/firediff/pages.js",
                                  -        "firediff/content/firediff/diffModule.js",
                                  -        "firediff/content/firediff/diffMonitor.js",
                                  -        */
                                  -        
                                  -        // ****************************************************************************************
                                  -        // FireRainbow
                                  -        
                                  -        /*
                                  -        "firerainbow/chrome/content/codemirror.js",
                                  -        "firerainbow/chrome/content/firerainbow.js",
                                  -        */
                                  -
                                  -        // ****************************************************************************************
                                  -        // Example Plugin
                                  -        
                                  -        //"lite/example/helloWorld.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Plugin Interface
                                  -        
                                  -        "lite/plugin.js", // must be the last module loaded
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Bootstrap
                                  -        "lite/boot.js"
                                  -    ],
                                  -    // ********************************************************************************************
                                  -
                                  -    loadChromeApplication: function(chrome)
                                  -    {
                                  -        loadModules(chrome.document); return;
                                  -        
                                  -        FBDev.buildSource(function(source){
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -            script.text = source;
                                  -        });
                                  -    },
                                  -
                                  -    panelBuild: function() {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildFullSource(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    panelBuildSkin: function()
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildSkin(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    build: function() {
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBDev.buildFullSource(function(source){
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -            //out.appendChild(document.createTextNode(source));
                                  -            
                                  -            out.value = source;
                                  -            document.body.appendChild(out);
                                  -        });
                                  -    },
                                  -    
                                  -    buildFullSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        
                                  -        // remove the boot.js from the list of modules to be included
                                  -        // because it will be generated bellow
                                  -        var modules = FBDev.modules.slice(0,FBDev.modules.length-1);
                                  -        var last = modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -        
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "\n\nFBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.Skin = \n" +
                                  -                    "{\n" +
                                  -                    "    CSS: '" + css + "',\n" +
                                  -                    "    HTML: '" + html + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    
                                  -                    // this is the bootstrap.js file
                                  -                    "FBL.initialize();\n" +
                                  -                    
                                  -                    "// ************************************************************************************************\n";
                                  -            }
                                  -        });
                                  -        
                                  -        for (var i=0, module; module=modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            if (module.indexOf("chromeSkin") != -1) continue;
                                  -            
                                  -            FBL.Ajax.request({
                                  -                url: moduleURL, 
                                  -                i: i, 
                                  -                onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        //alert("ok")
                                  -                        source.push(injected);
                                  -                        
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }
                                  -    },
                                  -    
                                  -    buildSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        var last = FBDev.modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -    
                                  -        for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }        
                                  -    },
                                  -    
                                  -    buildSkin: function(callback)
                                  -    {
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "/* See license.txt for terms of usage */\n\n" +
                                  -                    "FBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.Skin = \n" +
                                  -                    "{\n" +
                                  -                    "    HTML: '" + html + "',\n" +
                                  -                    "    CSS: '" + css + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});";
                                  -                
                                  -                callback(injected);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinHTML: function()
                                  -    {
                                  -        var url = skinURL + "firebug.html";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressHTML(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinCSS: function()
                                  -    {
                                  -        var url = skinURL + "firebug.css";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressCSS(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -        
                                  -    },
                                  -    
                                  -    compressHTML: function(html)
                                  -    {
                                  -        var reHTMLComment = /(<!--([^-]|-(?!->))*-->)/g;
                                  -        
                                  -        return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, "").
                                  -            replace(reHTMLComment, "").
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+</gm, "<").
                                  -            replace(/<\s+/gm, "<").
                                  -            replace(/\s+>/gm, ">").
                                  -            replace(/>\s+/gm, ">").
                                  -            replace(/\s+\/>/gm, "/>");
                                  -    },
                                  -
                                  -    compressCSS: function(css)
                                  -    {
                                  -        var reComment = /(\/\/.*)\n/g;
                                  -        var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -
                                  -        return css.replace(reComment, "").
                                  -            replace(reMultiComment, "").
                                  -            replace(/url\(/gi, "url("+publishedURL).
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+\{/gm, "{").
                                  -            replace(/\{\s+/gm, "{").
                                  -            replace(/\s+\}/gm, "}").
                                  -            replace(/\}\s+/gm, "}").
                                  -            replace(/\s+\:/gm, ":").            
                                  -            replace(/\:\s+/gm, ":").            
                                  -            replace(/,\s+/gm, ",");            
                                  -    },
                                  -    
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome.getPanel("Dev");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                    scriptSrc = si.src;
                                  -                
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    var m = path.match(/([^\/]+)\/$/);
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        sourceURL = path;
                                  -        baseURL = path.substr(0, path.length - m[1].length - 1);
                                  -        skinURL = baseURL + "skin/xp/";
                                  -        fullURL = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw "Firebug error: Library path not found";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function loadModules(doc) {
                                  -    
                                  -    findLocation();
                                  -    
                                  -    publishedURL = bookmarkletMode ? bookmarkletSkinURL : skinURL;
                                  -    
                                  -    var sufix = isApplicationContext ? "#app" : "";
                                  -    
                                  -    // FF4 will also load it asynchronously
                                  -    var useDocWrite = true;
                                  -    //var useDocWrite = isIE || isSafari;
                                  -    
                                  -    var moduleURL, script;
                                  -    var scriptTags = [];
                                  -    
                                  -    /*
                                  -    if (top != window)
                                  -    {
                                  -        var xhr = getXHRObject();
                                  -        var html = "";
                                  -        for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module + sufix;
                                  -            
                                  -            xhr.open("get", moduleURL, false);
                                  -            xhr.send();
                                  -            html = xhr.responseText;
                                  -            
                                  -            script = doc.createElement("script");
                                  -            script.text = html;
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -        return;
                                  -    }
                                  -    /**/
                                  -
                                  -    // new module loader
                                  -    
                                  -    var length = FBDev.modules.length;
                                  -    var loadModule = function(index){
                                  -        if (index == length) return;
                                  -    
                                  -        var module = FBDev.modules[index];
                                  -        var moduleURL = sourceURL + module + sufix;
                                  -        var script = doc.createElement("script");
                                  -        script.src = moduleURL;
                                  -        
                                  -        script.onload = function() { 
                                  -            if ( !script.onloadDone ) {
                                  -                script.onloadDone = true; 
                                  -                loadModule(index+1); 
                                  -            }
                                  -        };
                                  -        script.onreadystatechange = function() { 
                                  -            if ( ( "loaded" === script.readyState || "complete" === script.readyState ) && !script.onloadDone ) {
                                  -                script.onloadDone = true; 
                                  -                loadModule(index+1);
                                  -            }
                                  -        };
                                  -        
                                  -        doc.getElementsByTagName("head")[0].appendChild(script);
                                  -    };
                                  -    loadModule(0);
                                  -    /**/
                                  -
                                  -    /*
                                  -    for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -    {
                                  -        var moduleURL = sourceURL + module + sufix;
                                  -        
                                  -        if(useDocWrite)
                                  -        {
                                  -            scriptTags.push("<script src='", moduleURL, "'><\/script>");
                                  -        }
                                  -        else
                                  -        {
                                  -            script = doc.createElement("script");
                                  -            script.src = moduleURL;
                                  -            
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -            //doc.getElementsByTagName("body")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    
                                  -    if(useDocWrite)
                                  -    {
                                  -        doc.write(scriptTags.join(""));
                                  -    }
                                  -    /**/
                                  -    
                                  -    waitFirebugLoad();
                                  -};
                                  -
                                  -var waitFirebugLoad = function()
                                  -{
                                  -    if (window && "Firebug" in window)
                                  -    {
                                  -        try
                                  -        {
                                  -            loadDevPanel();
                                  -        }
                                  -        catch (E)
                                  -        {
                                  -        }
                                  -    }
                                  -    else
                                  -        setTimeout(waitFirebugLoad, 0);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var loadDevPanel = function() { with(FBL) { 
                                  -
                                  -    // ********************************************************************************************
                                  -    // FBTrace Panel
                                  -    
                                  -    function DevPanel(){};
                                  -    
                                  -    DevPanel.prototype = extend(Firebug.Panel,
                                  -    {
                                  -        name: "Dev",
                                  -        title: "Dev",
                                  -        
                                  -        options: {
                                  -            hasToolButtons: true,
                                  -            innerHTMLSync: true
                                  -        },
                                  -        
                                  -        create: function(){
                                  -            Firebug.Panel.create.apply(this, arguments);
                                  -            
                                  -            var doc = Firebug.chrome.getPanelDocument(DevPanel);
                                  -            var out = doc.createElement("textarea");
                                  -            out.id = "fbDevOutput";
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; padding: 0;";
                                  -            
                                  -            this.panelNode.appendChild(out);
                                  -            this.outputNode = out;
                                  -            
                                  -            this.buildSourceButton = new Button({
                                  -                caption: "Build Source",
                                  -                title: "Build full source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuild
                                  -            });
                                  -            
                                  -            this.buildSkinButton = new Button({
                                  -                caption: "Build Skin",
                                  -                title: "Build skin source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuildSkin
                                  -            });
                                  -            
                                  -            this.selfDebugButton = new Button({
                                  -                caption: "Self debug",
                                  -                title: "Run Firebug Lite inside Firebug Lite",
                                  -                owner: FBDev,
                                  -                onClick: function()
                                  -                {
                                  -                    //Firebug.chrome.window.location = "javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','content/firebug-lite-dev.js','skin/xp/sprite.png','" +
                                  -                    //    FBL.Env.Location.baseDir + "','#startOpened');";
                                  -                    Firebug.chrome.eval( "(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','build/firebug-lite-debug.js','skin/xp/sprite.png','" +
                                  -                        FBL.Env.Location.baseDir + "','#startOpened,startInNewWindow,showIconWhenHidden=false');" );
                                  -                    
                                  -                    Firebug.chrome.eval( "setTimeout(function(){console.info('Have fun!')},2000)" );
                                  -                }
                                  -            });
                                  -            
                                  -            
                                  -        },
                                  -        
                                  -        updateOutput: function(output)
                                  -        {
                                  -            var doc = Firebug.chrome.document;
                                  -            
                                  -            if (isIE)
                                  -                this.outputNode.innerText = output;
                                  -            else
                                  -                this.outputNode.textContent = output;
                                  -        },
                                  -        
                                  -        initialize: function(){
                                  -            Firebug.Panel.initialize.apply(this, arguments);
                                  -            
                                  -            this.containerNode.style.overflow = "hidden";
                                  -            this.outputNode = this.panelNode.firstChild;                
                                  -            
                                  -            this.buildSourceButton.initialize();
                                  -            this.buildSkinButton.initialize();
                                  -            this.selfDebugButton.initialize();
                                  -        },
                                  -        
                                  -        shutdown: function()
                                  -        {
                                  -            this.containerNode.style.overflow = "";
                                  -        }
                                  -        
                                  -    });
                                  -    
                                  -    // ********************************************************************************************
                                  -    Firebug.registerPanel(DevPanel);
                                  -}};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -var publishedURL = "";
                                  -var baseURL = "";
                                  -var sourceURL = "";
                                  -var skinURL = "";
                                  -var fullURL = "";
                                  -var isApplicationContext = false;
                                  -
                                  -var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
                                  -var isIE = navigator.userAgent.indexOf("MSIE") != -1;
                                  -var isOpera = navigator.userAgent.indexOf("Opera") != -1;
                                  -var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
                                  -
                                  -loadModules(document);
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firebug/console.js b/branches/flexBox/content/firebug/console.js
                                  deleted file mode 100644
                                  index 9af26e71..00000000
                                  --- a/branches/flexBox/content/firebug/console.js
                                  +++ /dev/null
                                  @@ -1,1194 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -/*
                                  -
                                  -// new offline message handler
                                  -o = {x:1,y:2};
                                  -
                                  -r = Firebug.getRep(o);
                                  -
                                  -r.tag.tag.compile();
                                  -
                                  -outputs = [];
                                  -html = r.tag.renderHTML({object:o}, outputs);
                                  -
                                  -
                                  -// finish rendering the template (the DOM part)
                                  -target = $("build");
                                  -target.innerHTML = html;
                                  -root = target.firstChild;
                                  -
                                  -domArgs = [root, r.tag.context, 0];
                                  -domArgs.push.apply(domArgs, r.tag.domArgs);
                                  -domArgs.push.apply(domArgs, outputs);
                                  -r.tag.tag.renderDOM.apply(self ? self : r.tag.subject, domArgs);
                                  -
                                  -
                                  - */
                                  -var consoleQueue = [];
                                  -var lastHighlightedObject;
                                  -var FirebugContext = Env.browser;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -            else
                                  -            {
                                  -                consoleQueue.push([appender, objects, context, className, rep, sourceLink, noThrottle, noRow]);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            //context = FirebugContext;
                                  -            context = Firebug.context;
                                  -
                                  -        /*
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -        /**/
                                  -        
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -        {
                                  -            panel.clear();
                                  -        }
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -    
                                  -    flush: function()
                                  -    {
                                  -        dispatch(this.fbListeners,"flush",[]);
                                  -        
                                  -        for (var i=0, length=consoleQueue.length; i<length; i++)
                                  -        {
                                  -            var args = consoleQueue[i];
                                  -            this.logRow.apply(this, args);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {}; // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // TODO: xxxpedro console2
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        if (!Firebug.Inspector) return;
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -    
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        var repObject = object ? object.repObject : null;
                                  -        
                                  -        if (!repObject)
                                  -        {
                                  -            return;
                                  -        }
                                  -        
                                  -        if (hasClass(object, "objectLink-object"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(repObject, true);
                                  -        }
                                  -        else if (hasClass(object, "objectLink-element"))
                                  -        {
                                  -            Firebug.chrome.selectPanel("HTML");
                                  -            Firebug.chrome.getPanel("HTML").select(repObject, true);
                                  -        }
                                  -        
                                  -        /*
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        /**/
                                  -        
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    //searchable: true,
                                  -    //breakable: true,
                                  -    //editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: false
                                  -    },
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.getPanelDocument(Firebug.ConsolePanel);
                                  -        this.onMouseMove = bind(this.onMouseMove, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            caption: "Clear",
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //Firebug.Console.injector.install(Firebug.browser.window);
                                  -        
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseMove);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        //consolex.trace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        Firebug.Console.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        //removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/consoleInjector.js b/branches/flexBox/content/firebug/consoleInjector.js
                                  deleted file mode 100644
                                  index 9ad9973b..00000000
                                  --- a/branches/flexBox/content/firebug/consoleInjector.js
                                  +++ /dev/null
                                  @@ -1,841 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -    
                                  -var frameCounters = {};
                                  -var traceRecursion = 0;
                                  -
                                  -Firebug.Console.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupCollapsed",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments);};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -                c.firebuglite = Firebug.version;
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox;
                                  -        
                                  -        if (win.console)
                                  -        {
                                  -            if (Env.Options.overrideConsole)
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            else
                                  -                // if there's a console object and overrideConsole is false we should just quit
                                  -                return;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                // try overriding the console object
                                  -                sandbox = new win.Function("arguments.callee.install(window.console={})");
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                // if something goes wrong create the firebug object instead
                                  -                sandbox = new win.Function("arguments.callee.install(window.firebug={})");
                                  -            }
                                  -        }
                                  -        
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebuglite = Firebug.version;    
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        //TODO: xxxpedro console error
                                  -        //if (arguments.length == 1)
                                  -        //{
                                  -        //    logAssert("error", arguments);  // add more info based on stack trace
                                  -        //}
                                  -        //else
                                  -        //{
                                  -            //Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        //}
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        logFormatted(["console.profile() not supported."], "warn", true);
                                  -        
                                  -        //Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        // TODO: xxxpedro console2: is there a better way to find a unique ID for the coun() call?
                                  -        var frameId = "0";
                                  -        //var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!frameCounters)
                                  -                frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -            {
                                  -                return f.getName();
                                  -            }
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -            {
                                  -                return f.name;
                                  -            }
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        traceRecursion++;
                                  -        
                                  -        if (traceRecursion > 1)
                                  -        {
                                  -            traceRecursion--;
                                  -            return;
                                  -        }
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        
                                  -        // ****************************************************************************************
                                  -        
                                  -        try
                                  -        {
                                  -            (0)();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var result = e;
                                  -            
                                  -            var stack = 
                                  -                result.stack || // Firefox / Google Chrome 
                                  -                result.stacktrace || // Opera
                                  -                "";
                                  -            
                                  -            stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -            var items = stack.split(/[\n\r]/);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Google Chrome
                                  -            if (FBL.isSafari)
                                  -            {
                                  -                //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -                //var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -                
                                  -                var reChromeStackItemName = /\s*\($/;
                                  -                var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=4, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos];
                                  -                    var item = items[i];
                                  -                    var match = item.match(reChromeStackItem);
                                  -                    
                                  -                    //Firebug.Console.log("["+ framePos +"]--------------------------");
                                  -                    //Firebug.Console.log(item);
                                  -                    //Firebug.Console.log("................");
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        if (name)
                                  -                        {
                                  -                            name = name.replace(reChromeStackItemName, "");
                                  -                            frame.name = name; 
                                  -                        }
                                  -                        
                                  -                        //Firebug.Console.log("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reChromeStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("url: "+value[1]);
                                  -                            //Firebug.Console.log("line: "+value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            else if (FBL.isFirefox)
                                  -            {
                                  -                // Firefox
                                  -                var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -                var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -                
                                  -                var framePos = 0;
                                  -                for (var i=2, length=items.length; i<length; i++, framePos++)
                                  -                {
                                  -                    var frame = frames[framePos] || {};
                                  -                    var item = items[i];
                                  -                    var match = item.match(reFirefoxStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        var name = match[1];
                                  -                        
                                  -                        //Firebug.Console.logFormatted("name: "+name);
                                  -                        
                                  -                        var value = match[2].match(reFirefoxStackItemValue);
                                  -                        if (value)
                                  -                        {
                                  -                            frame.href = value[1];
                                  -                            frame.lineNo = value[2];
                                  -                            
                                  -                            //Firebug.Console.log("href: "+ value[1]);
                                  -                            //Firebug.Console.log("line: " + value[2]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.logFormatted([match[2]]);
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            /*
                                  -            else if (FBL.isOpera)
                                  -            {
                                  -                // Opera
                                  -                var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -                var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -                
                                  -                for (var i=0, length=items.length; i<length; i+=2)
                                  -                {
                                  -                    var item = items[i];
                                  -                    
                                  -                    var match = item.match(reOperaStackItem);
                                  -                    
                                  -                    if (match)
                                  -                    {
                                  -                        //Firebug.Console.log(match[1]);
                                  -                        
                                  -                        var value = match[2].match(reOperaStackItemValue);
                                  -                        
                                  -                        if (value)
                                  -                        {
                                  -                            //Firebug.Console.log(value[1]);
                                  -                        }
                                  -                        //else
                                  -                        //    Firebug.Console.log(match[2]);
                                  -                        
                                  -                        //Firebug.Console.log("--------------------------");
                                  -                    }                
                                  -                }
                                  -            }
                                  -            /**/
                                  -        }
                                  -        
                                  -        //console.log(stack);
                                  -        //console.dir(frames);
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -        
                                  -        traceRecursion--;
                                  -    };
                                  -    
                                  -    this.trace_ok = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=frames.length; i<l; i++)
                                  -            {
                                  -                if (frames[i].fn == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var frames = [];
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            var args = [];
                                  -            
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                args.push({value: fn.arguments[i]});
                                  -            }
                                  -
                                  -            frames.push({fn: fn, name: getFuncName(fn), args: args});
                                  -        }
                                  -        
                                  -        Firebug.Console.log({frames: frames}, context, "stackTrace", FirebugReps.StackTrace);
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return;
                                  -        //return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    var win = Env.browser.window;
                                  -    Firebug.Console.injector.install(win);
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/css.js b/branches/flexBox/content/firebug/css.js
                                  deleted file mode 100644
                                  index b5f22f6b..00000000
                                  --- a/branches/flexBox/content/firebug/css.js
                                  +++ /dev/null
                                  @@ -1,2492 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// move to FBL
                                  -(function() { 
                                  -
                                  -// ************************************************************************************************
                                  -// XPath
                                  -
                                  -/**
                                  - * Gets an XPath for an element which describes its hierarchical location.
                                  - */
                                  -this.getElementXPath = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        if (element && element.id)
                                  -            return '//*[@id="' + element.id + '"]';
                                  -        else
                                  -            return this.getElementTreeXPath(element);
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        // xxxpedro: trying to detect the mysterious error:
                                  -        // Security error" code: "1000
                                  -        // This error happens when rendering the StorageList object in the DOM panel
                                  -        //debugger;
                                  -    }
                                  -};
                                  -
                                  -this.getElementTreeXPath = function(element)
                                  -{
                                  -    var paths = [];
                                  -
                                  -    for (; element && element.nodeType == 1; element = element.parentNode)
                                  -    {
                                  -        var index = 0;
                                  -        var nodeName = element.nodeName;
                                  -        
                                  -        for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling)
                                  -        {
                                  -            if (sibling.nodeType != 1) continue;
                                  -            
                                  -            if (sibling.nodeName == nodeName)
                                  -                ++index;
                                  -        }
                                  -
                                  -        var tagName = element.nodeName.toLowerCase();
                                  -        var pathIndex = (index ? "[" + (index+1) + "]" : "");
                                  -        paths.splice(0, 0, tagName + pathIndex);
                                  -    }
                                  -
                                  -    return paths.length ? "/" + paths.join("/") : null;
                                  -};
                                  -
                                  -this.getElementsByXPath = function(doc, xpath)
                                  -{
                                  -    var nodes = [];
                                  -
                                  -    try {
                                  -        var result = doc.evaluate(xpath, doc, null, XPathResult.ANY_TYPE, null);
                                  -        for (var item = result.iterateNext(); item; item = result.iterateNext())
                                  -            nodes.push(item);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Invalid xpath expressions make their way here sometimes.  If that happens,
                                  -        // we still want to return an empty set without an exception.
                                  -    }
                                  -
                                  -    return nodes;
                                  -};
                                  -
                                  -this.getRuleMatchingElements = function(rule, doc)
                                  -{
                                  -    var css = rule.selectorText;
                                  -    var xpath = this.cssToXPath(css);
                                  -    return this.getElementsByXPath(doc, xpath);
                                  -};
                                  -
                                  -
                                  -}).call(FBL);
                                  -
                                  -
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -};
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -};
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDOMCSSStyleRule = Ci.nsIDOMCSSStyleRule;
                                  -//const nsIInterfaceRequestor = Ci.nsIInterfaceRequestor;
                                  -//const nsISelectionDisplay = Ci.nsISelectionDisplay;
                                  -//const nsISelectionController = Ci.nsISelectionController;
                                  -
                                  -// See: http://mxr.mozilla.org/mozilla1.9.2/source/content/events/public/nsIEventStateManager.h#153
                                  -//const STATE_ACTIVE  = 0x01;
                                  -//const STATE_FOCUS   = 0x02;
                                  -//const STATE_HOVER   = 0x04;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -Firebug.SourceBoxPanel = Firebug.Panel;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -
                                  -var domUtils = null;
                                  -
                                  -var textContent = isIE ? "innerText" : "textContent";
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var CSSDomplateBase = {
                                  -    isEditable: function(rule)
                                  -    {
                                  -        return !rule.isSystemSheet;
                                  -    },
                                  -    isSelectorEditable: function(rule)
                                  -    {
                                  -        return rule.isSelectorEditable && this.isEditable(rule);
                                  -    }
                                  -};
                                  -
                                  -var CSSPropTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssProp focusRow", $disabledStyle: "$prop.disabled",
                                  -          $editGroup: "$rule|isEditable",
                                  -          $cssOverridden: "$prop.overridden", role : "option"},
                                  -        A({"class": "cssPropDisable"}, "&nbsp;&nbsp;"),
                                  -        SPAN({"class": "cssPropName", $editable: "$rule|isEditable"}, "$prop.name"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue", $editable: "$rule|isEditable"}, "$prop.value$prop.important"),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )
                                  -});
                                  -
                                  -var CSSRuleTag =
                                  -    TAG("$rule.tag", {rule: "$rule"});
                                  -
                                  -var CSSImportRuleTag = domplate({
                                  -    tag: DIV({"class": "cssRule insertInto focusRow importRule", _repObject: "$rule.rule"},
                                  -        "@import &quot;",
                                  -        A({"class": "objectLink", _repObject: "$rule.rule.styleSheet"}, "$rule.rule.href"),
                                  -        "&quot;;"
                                  -    )
                                  -});
                                  -
                                  -var CSSStyleRuleTag = domplate(CSSDomplateBase, {
                                  -    tag: DIV({"class": "cssRule insertInto",
                                  -            $cssEditableRule: "$rule|isEditable",
                                  -            $editGroup: "$rule|isSelectorEditable",
                                  -            _repObject: "$rule.rule",
                                  -            "ruleId": "$rule.id", role : 'presentation'},
                                  -        DIV({"class": "cssHead focusRow", role : 'listitem'},
                                  -            SPAN({"class": "cssSelector", $editable: "$rule|isSelectorEditable"}, "$rule.selector"), " {"
                                  -        ),
                                  -        DIV({role : 'group'},
                                  -            DIV({"class": "cssPropertyListBox", role : 'listbox'},
                                  -                FOR("prop", "$rule.props",
                                  -                    TAG(CSSPropTag.tag, {rule: "$rule", prop: "$prop"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        DIV({"class": "editable insertBefore", role:"presentation"}, "}")
                                  -    )
                                  -});
                                  -
                                  -var reSplitCSS =  /(url\("?[^"\)]+?"?\))|(rgb\(.*?\))|(#[\dA-Fa-f]+)|(-?\d+(\.\d+)?(%|[a-z]{1,2})?)|([^,\s]+)|"(.*?)"/;
                                  -
                                  -var reURL = /url\("?([^"\)]+)?"?\)/;
                                  -
                                  -var reRepeat = /no-repeat|repeat-x|repeat-y|repeat/;
                                  -
                                  -//const sothinkInstalled = !!$("swfcatcherKey_sidebar");
                                  -var sothinkInstalled = false;
                                  -var styleGroups =
                                  -{
                                  -    text: [
                                  -        "font-family",
                                  -        "font-size",
                                  -        "font-weight",
                                  -        "font-style",
                                  -        "color",
                                  -        "text-transform",
                                  -        "text-decoration",
                                  -        "letter-spacing",
                                  -        "word-spacing",
                                  -        "line-height",
                                  -        "text-align",
                                  -        "vertical-align",
                                  -        "direction",
                                  -        "column-count",
                                  -        "column-gap",
                                  -        "column-width"
                                  -    ],
                                  -
                                  -    background: [
                                  -        "background-color",
                                  -        "background-image",
                                  -        "background-repeat",
                                  -        "background-position",
                                  -        "background-attachment",
                                  -        "opacity"
                                  -    ],
                                  -
                                  -    box: [
                                  -        "width",
                                  -        "height",
                                  -        "top",
                                  -        "right",
                                  -        "bottom",
                                  -        "left",
                                  -        "margin-top",
                                  -        "margin-right",
                                  -        "margin-bottom",
                                  -        "margin-left",
                                  -        "padding-top",
                                  -        "padding-right",
                                  -        "padding-bottom",
                                  -        "padding-left",
                                  -        "border-top-width",
                                  -        "border-right-width",
                                  -        "border-bottom-width",
                                  -        "border-left-width",
                                  -        "border-top-color",
                                  -        "border-right-color",
                                  -        "border-bottom-color",
                                  -        "border-left-color",
                                  -        "border-top-style",
                                  -        "border-right-style",
                                  -        "border-bottom-style",
                                  -        "border-left-style",
                                  -        "-moz-border-top-radius",
                                  -        "-moz-border-right-radius",
                                  -        "-moz-border-bottom-radius",
                                  -        "-moz-border-left-radius",
                                  -        "outline-top-width",
                                  -        "outline-right-width",
                                  -        "outline-bottom-width",
                                  -        "outline-left-width",
                                  -        "outline-top-color",
                                  -        "outline-right-color",
                                  -        "outline-bottom-color",
                                  -        "outline-left-color",
                                  -        "outline-top-style",
                                  -        "outline-right-style",
                                  -        "outline-bottom-style",
                                  -        "outline-left-style"
                                  -    ],
                                  -
                                  -    layout: [
                                  -        "position",
                                  -        "display",
                                  -        "visibility",
                                  -        "z-index",
                                  -        "overflow-x",  // http://www.w3.org/TR/2002/WD-css3-box-20021024/#overflow
                                  -        "overflow-y",
                                  -        "overflow-clip",
                                  -        "white-space",
                                  -        "clip",
                                  -        "float",
                                  -        "clear",
                                  -        "-moz-box-sizing"
                                  -    ],
                                  -
                                  -    other: [
                                  -        "cursor",
                                  -        "list-style-image",
                                  -        "list-style-position",
                                  -        "list-style-type",
                                  -        "marker-offset",
                                  -        "user-focus",
                                  -        "user-select",
                                  -        "user-modify",
                                  -        "user-input"
                                  -    ]
                                  -};
                                  -
                                  -var styleGroupTitles =
                                  -{
                                  -    text: "Text",
                                  -    background: "Background",
                                  -    box: "Box Model",
                                  -    layout: "Layout",
                                  -    other: "Other"
                                  -};
                                  -
                                  -Firebug.CSSModule = extend(Firebug.Module,
                                  -{
                                  -    freeEdit: function(styleSheet, value)
                                  -    {
                                  -        if (!styleSheet.editStyleSheet)
                                  -        {
                                  -            var ownerNode = getStyleSheetOwnerNode(styleSheet);
                                  -            styleSheet.disabled = true;
                                  -
                                  -            var url = CCSV("@mozilla.org/network/standard-url;1", Components.interfaces.nsIURL);
                                  -            url.spec = styleSheet.href;
                                  -
                                  -            var editStyleSheet = ownerNode.ownerDocument.createElementNS(
                                  -                "http://www.w3.org/1999/xhtml",
                                  -                "style");
                                  -            unwrapObject(editStyleSheet).firebugIgnore = true;
                                  -            editStyleSheet.setAttribute("type", "text/css");
                                  -            editStyleSheet.setAttributeNS(
                                  -                "http://www.w3.org/XML/1998/namespace",
                                  -                "base",
                                  -                url.directory);
                                  -            if (ownerNode.hasAttribute("media"))
                                  -            {
                                  -              editStyleSheet.setAttribute("media", ownerNode.getAttribute("media"));
                                  -            }
                                  -
                                  -            // Insert the edited stylesheet directly after the old one to ensure the styles
                                  -            // cascade properly.
                                  -            ownerNode.parentNode.insertBefore(editStyleSheet, ownerNode.nextSibling);
                                  -
                                  -            styleSheet.editStyleSheet = editStyleSheet;
                                  -        }
                                  -
                                  -        styleSheet.editStyleSheet.innerHTML = value;
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("css.saveEdit styleSheet.href:"+styleSheet.href+" got innerHTML:"+value+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "onCSSFreeEdit", [styleSheet, value]);
                                  -    },
                                  -
                                  -    insertRule: function(styleSheet, cssText, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("Insert: " + ruleIndex + " " + cssText);
                                  -        var insertIndex = styleSheet.insertRule(cssText, ruleIndex);
                                  -
                                  -        dispatch(this.fbListeners, "onCSSInsertRule", [styleSheet, cssText, ruleIndex]);
                                  -
                                  -        return insertIndex;
                                  -    },
                                  -
                                  -    deleteRule: function(styleSheet, ruleIndex)
                                  -    {
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("deleteRule: " + ruleIndex + " " + styleSheet.cssRules.length, styleSheet.cssRules);
                                  -        dispatch(this.fbListeners, "onCSSDeleteRule", [styleSheet, ruleIndex]);
                                  -
                                  -        styleSheet.deleteRule(ruleIndex);
                                  -    },
                                  -
                                  -    setProperty: function(rule, propName, propValue, propPriority)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        // good browsers
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            // XXXjoe Gecko bug workaround: Just changing priority doesn't have any effect
                                  -            // unless we remove the property first
                                  -            style.removeProperty(propName);
                                  -    
                                  -            style.setProperty(propName, propValue, propPriority);
                                  -        }
                                  -        // sad browsers
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro parse CSS rule to find property priority in IE?
                                  -            //console.log(propName, propValue);
                                  -            style[toCamelCase(propName)] = propValue;
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSSetProperty", [style, propName, propValue, propPriority, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    },
                                  -
                                  -    removeProperty: function(rule, propName, parent)
                                  -    {
                                  -        var style = rule.style || rule;
                                  -
                                  -        // Record the original CSS text for the inline case so we can reconstruct at a later
                                  -        // point for diffing purposes
                                  -        var baseText = style.cssText;
                                  -        
                                  -        if (style.getPropertyValue)
                                  -        {
                                  -    
                                  -            var prevValue = style.getPropertyValue(propName);
                                  -            var prevPriority = style.getPropertyPriority(propName);
                                  -    
                                  -            style.removeProperty(propName);
                                  -        }
                                  -        else
                                  -        {
                                  -            style[toCamelCase(propName)] = "";
                                  -        }
                                  -
                                  -        if (propName) {
                                  -            dispatch(this.fbListeners, "onCSSRemoveProperty", [style, propName, prevValue, prevPriority, rule, baseText]);
                                  -        }
                                  -    }/*,
                                  -
                                  -    cleanupSheets: function(doc, context)
                                  -    {
                                  -        // Due to the manner in which the layout engine handles multiple
                                  -        // references to the same sheet we need to kick it a little bit.
                                  -        // The injecting a simple stylesheet then removing it will force
                                  -        // Firefox to regenerate it's CSS hierarchy.
                                  -        //
                                  -        // WARN: This behavior was determined anecdotally.
                                  -        // See http://code.google.com/p/fbug/issues/detail?id=2440
                                  -        var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -        style.setAttribute("charset","utf-8");
                                  -        unwrapObject(style).firebugIgnore = true;
                                  -        style.setAttribute("type", "text/css");
                                  -        style.innerHTML = "#fbIgnoreStyleDO_NOT_USE {}";
                                  -        addStyleSheet(doc, style);
                                  -        style.parentNode.removeChild(style);
                                  -
                                  -        // https://bugzilla.mozilla.org/show_bug.cgi?id=500365
                                  -        // This voodoo touches each style sheet to force some Firefox internal change to allow edits.
                                  -        var styleSheets = getAllStyleSheets(context);
                                  -        for(var i = 0; i < styleSheets.length; i++)
                                  -        {
                                  -            try
                                  -            {
                                  -                var rules = styleSheets[i].cssRules;
                                  -                if (rules.length > 0)
                                  -                    var touch = rules[0];
                                  -                if (FBTrace.DBG_CSS && touch)
                                  -                    FBTrace.sysout("css.show() touch "+typeof(touch)+" in "+(styleSheets[i].href?styleSheets[i].href:context.getName()));
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("css.show: sheet.cssRules FAILS for "+(styleSheets[i]?styleSheets[i].href:"null sheet")+e, e);
                                  -            }
                                  -        }
                                  -    },
                                  -    cleanupSheetHandler: function(event, context)
                                  -    {
                                  -        var target = event.target || event.srcElement,
                                  -            tagName = (target.tagName || "").toLowerCase();
                                  -        if (tagName == "link")
                                  -        {
                                  -            this.cleanupSheets(target.ownerDocument, context);
                                  -        }
                                  -    },
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        var cleanupSheets = bind(this.cleanupSheets, this),
                                  -            cleanupSheetHandler = bind(this.cleanupSheetHandler, this, context),
                                  -            doc = win.document;
                                  -
                                  -        //doc.addEventListener("DOMAttrModified", cleanupSheetHandler, false);
                                  -        //doc.addEventListener("DOMNodeInserted", cleanupSheetHandler, false);
                                  -    },
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var self = this;
                                  -        iterateWindows(context.browser.contentWindow, function(subwin)
                                  -        {
                                  -            self.cleanupSheets(subwin.document, context);
                                  -        });
                                  -    }
                                  -    /**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CSSStyleSheetPanel = function() {};
                                  -
                                  -Firebug.CSSStyleSheetPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        tag:
                                  -            DIV({"class": "cssSheet insertInto a11yCSSView"},
                                  -                FOR("rule", "$rules",
                                  -                    CSSRuleTag
                                  -                ),
                                  -                DIV({"class": "cssSheet editable insertBefore"}, "")
                                  -                )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        if (this.location)
                                  -            this.updateLocation(this.location);
                                  -        else if (this.selection)
                                  -            this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (!this.stylesheetEditor)
                                  -            this.stylesheetEditor = new StyleSheetEditor(this.document);
                                  -
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -        {
                                  -            if (!this.location)
                                  -                return;
                                  -
                                  -            var styleSheet = this.location.editStyleSheet
                                  -                ? this.location.editStyleSheet.sheet
                                  -                : this.location;
                                  -
                                  -            var css = getStyleSheetCSS(styleSheet, this.context);
                                  -            //var topmost = getTopmostRuleLine(this.panelNode);
                                  -
                                  -            this.stylesheetEditor.styleSheet = this.location;
                                  -            Firebug.Editor.startEditing(this.panelNode, css, this.stylesheetEditor);
                                  -            //this.stylesheetEditor.scrollToLine(topmost.line, topmost.offset);
                                  -        }
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        if (this.location.href)
                                  -            return this.location.href;
                                  -        else
                                  -            return this.context.window.location.href;
                                  -    },
                                  -
                                  -    getRuleByLine: function(styleSheet, line)
                                  -    {
                                  -        if (!domUtils)
                                  -            return null;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        for (var i = 0; i < cssRules.length; ++i)
                                  -        {
                                  -            var rule = cssRules[i];
                                  -            if (rule instanceof CSSStyleRule)
                                  -            {
                                  -                var ruleLine = domUtils.getRuleLine(rule);
                                  -                if (ruleLine >= line)
                                  -                    return rule;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightRule: function(rule)
                                  -    {
                                  -        var ruleElement = Firebug.getElementByRepObject(this.panelNode.firstChild, rule);
                                  -        if (ruleElement)
                                  -        {
                                  -            scrollIntoCenterView(ruleElement, this.panelNode);
                                  -            setClassTimed(ruleElement, "jumpHighlight", this.context);
                                  -        }
                                  -    },
                                  -
                                  -    getStyleSheetRules: function(context, styleSheet)
                                  -    {
                                  -        var isSystemSheet = isSystemStyleSheet(styleSheet);
                                  -
                                  -        function appendRules(cssRules)
                                  -        {
                                  -            for (var i = 0; i < cssRules.length; ++i)
                                  -            {
                                  -                var rule = cssRules[i];
                                  -                
                                  -                // TODO: xxxpedro opera instanceof stylesheet remove the following comments when 
                                  -                // the issue with opera and style sheet Classes has been solved.
                                  -                
                                  -                //if (rule instanceof CSSStyleRule)
                                  -                if (instanceOf(rule, "CSSStyleRule"))
                                  -                {
                                  -                    var props = this.getRuleProperties(context, rule);
                                  -                    //var line = domUtils.getRuleLine(rule);
                                  -                    var line = null;
                                  -                    
                                  -                    var selector = rule.selectorText;
                                  -                    
                                  -                    if (isIE)
                                  -                    {
                                  -                        selector = selector.replace(reSelectorTag, 
                                  -                                function(s){return s.toLowerCase();});
                                  -                    }
                                  -                    
                                  -                    var ruleId = rule.selectorText+"/"+line;
                                  -                    rules.push({tag: CSSStyleRuleTag.tag, rule: rule, id: ruleId,
                                  -                                selector: selector, props: props,
                                  -                                isSystemSheet: isSystemSheet,
                                  -                                isSelectorEditable: true});
                                  -                }
                                  -                //else if (rule instanceof CSSImportRule)
                                  -                else if (instanceOf(rule, "CSSImportRule"))
                                  -                    rules.push({tag: CSSImportRuleTag.tag, rule: rule});
                                  -                //else if (rule instanceof CSSMediaRule)
                                  -                else if (instanceOf(rule, "CSSMediaRule"))
                                  -                    appendRules.apply(this, [rule.cssRules]);
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS || FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("css getStyleSheetRules failed to classify a rule ", rule);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var rules = [];
                                  -        appendRules.apply(this, [styleSheet.cssRules || styleSheet.rules]);
                                  -        return rules;
                                  -    },
                                  -
                                  -    parseCSSProps: function(style, inheritMode)
                                  -    {
                                  -        var props = [];
                                  -
                                  -        if (Firebug.expandShorthandProps)
                                  -        {
                                  -            var count = style.length-1,
                                  -                index = style.length;
                                  -            while (index--)
                                  -            {
                                  -                var propName = style.item(count - index);
                                  -                this.addProperty(propName, style.getPropertyValue(propName), !!style.getPropertyPriority(propName), false, inheritMode, props);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var lines = style.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -            var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -            var line,i=0;
                                  -            // TODO: xxxpedro port to firebug: variable leaked into global namespace
                                  -            var m;
                                  -            
                                  -            while(line=lines[i++]){
                                  -                m = propRE.exec(line);
                                  -                if(!m)
                                  -                    continue;
                                  -                //var name = m[1], value = m[2], important = !!m[3];
                                  -                if (m[2])
                                  -                    this.addProperty(m[1], m[2], !!m[3], false, inheritMode, props);
                                  -            };
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    getRuleProperties: function(context, rule, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(rule.style, inheritMode);
                                  -
                                  -        // TODO: xxxpedro port to firebug: variable leaked into global namespace 
                                  -        //var line = domUtils.getRuleLine(rule);
                                  -        var line;
                                  -        var ruleId = rule.selectorText+"/"+line;
                                  -        this.addOldProperties(context, ruleId, inheritMode, props);
                                  -        sortProperties(props);
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    addOldProperties: function(context, ruleId, inheritMode, props)
                                  -    {
                                  -        if (context.selectorMap && context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var moreProps = context.selectorMap[ruleId];
                                  -            for (var i = 0; i < moreProps.length; ++i)
                                  -            {
                                  -                var prop = moreProps[i];
                                  -                this.addProperty(prop.name, prop.value, prop.important, true, inheritMode, props);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    addProperty: function(name, value, important, disabled, inheritMode, props)
                                  -    {
                                  -        name = name.toLowerCase();
                                  -        
                                  -        if (inheritMode && !inheritedStyleNames[name])
                                  -            return;
                                  -
                                  -        name = this.translateName(name, value);
                                  -        if (name)
                                  -        {
                                  -            value = stripUnits(rgbToHex(value));
                                  -            important = important ? " !important" : "";
                                  -
                                  -            var prop = {name: name, value: value, important: important, disabled: disabled};
                                  -            props.push(prop);
                                  -        }
                                  -    },
                                  -
                                  -    translateName: function(name, value)
                                  -    {
                                  -        // Don't show these proprietary Mozilla properties
                                  -        if ((value == "-moz-initial"
                                  -            && (name == "-moz-background-clip" || name == "-moz-background-origin"
                                  -                || name == "-moz-background-inline-policy"))
                                  -        || (value == "physical"
                                  -            && (name == "margin-left-ltr-source" || name == "margin-left-rtl-source"
                                  -                || name == "margin-right-ltr-source" || name == "margin-right-rtl-source"))
                                  -        || (value == "physical"
                                  -            && (name == "padding-left-ltr-source" || name == "padding-left-rtl-source"
                                  -                || name == "padding-right-ltr-source" || name == "padding-right-rtl-source")))
                                  -            return null;
                                  -
                                  -        // Translate these back to the form the user probably expects
                                  -        if (name == "margin-left-value")
                                  -            return "margin-left";
                                  -        else if (name == "margin-right-value")
                                  -            return "margin-right";
                                  -        else if (name == "margin-top-value")
                                  -            return "margin-top";
                                  -        else if (name == "margin-bottom-value")
                                  -            return "margin-bottom";
                                  -        else if (name == "padding-left-value")
                                  -            return "padding-left";
                                  -        else if (name == "padding-right-value")
                                  -            return "padding-right";
                                  -        else if (name == "padding-top-value")
                                  -            return "padding-top";
                                  -        else if (name == "padding-bottom-value")
                                  -            return "padding-bottom";
                                  -        // XXXjoe What about border!
                                  -        else
                                  -            return name;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editElementStyle: function()
                                  -    {
                                  -        ///var rulesBox = this.panelNode.getElementsByClassName("cssElementRuleContainer")[0];
                                  -        var rulesBox = $$(".cssElementRuleContainer", this.panelNode)[0];
                                  -        var styleRuleBox = rulesBox && Firebug.getElementByRepObject(rulesBox, this.selection);
                                  -        if (!styleRuleBox)
                                  -        {
                                  -            var rule = {rule: this.selection, inherited: false, selector: "element.style", props: []};
                                  -            if (!rulesBox)
                                  -            {
                                  -                // The element did not have any displayed styles. We need to create the whole tree and remove
                                  -                // the no styles message
                                  -                styleRuleBox = this.template.cascadedTag.replace({
                                  -                    rules: [rule], inherited: [], inheritLabel: "Inherited from" // $STR("InheritedFrom")
                                  -                }, this.panelNode);
                                  -
                                  -                ///styleRuleBox = styleRuleBox.getElementsByClassName("cssElementRuleContainer")[0];
                                  -                styleRuleBox = $$(".cssElementRuleContainer", styleRuleBox)[0];
                                  -            }
                                  -            else
                                  -                styleRuleBox = this.template.ruleTag.insertBefore({rule: rule}, rulesBox);
                                  -
                                  -            ///styleRuleBox = styleRuleBox.getElementsByClassName("insertInto")[0];
                                  -            styleRuleBox = $$(".insertInto", styleRuleBox)[0];
                                  -        }
                                  -
                                  -        Firebug.Editor.insertRowForObject(styleRuleBox);
                                  -    },
                                  -
                                  -    insertPropertyRow: function(row)
                                  -    {
                                  -        Firebug.Editor.insertRowForObject(row);
                                  -    },
                                  -
                                  -    insertRule: function(row)
                                  -    {
                                  -        var location = getAncestorByClass(row, "cssRule");
                                  -        if (!location)
                                  -        {
                                  -            location = getChildByClass(this.panelNode, "cssSheet");
                                  -            Firebug.Editor.insertRowForObject(location);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Editor.insertRow(location, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editPropertyRow: function(row)
                                  -    {
                                  -        var propValueBox = getChildByClass(row, "cssPropValue");
                                  -        Firebug.Editor.startEditing(propValueBox);
                                  -    },
                                  -
                                  -    deletePropertyRow: function(row)
                                  -    {
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -        Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -        // Remove the property from the selector map, if it was disabled
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if ( this.context.selectorMap && this.context.selectorMap.hasOwnProperty(ruleId) )
                                  -        {
                                  -            var map = this.context.selectorMap[ruleId];
                                  -            for (var i = 0; i < map.length; ++i)
                                  -            {
                                  -                if (map[i].name == propName)
                                  -                {
                                  -                    map.splice(i, 1);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (this.name == "stylesheet")
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [this, row.firstChild, true]);
                                  -        row.parentNode.removeChild(row);
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    disablePropertyRow: function(row)
                                  -    {
                                  -        toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(row);
                                  -        var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -
                                  -        if (!this.context.selectorMap)
                                  -            this.context.selectorMap = {};
                                  -
                                  -        // XXXjoe Generate unique key for elements too
                                  -        var ruleId = Firebug.getRepNode(row).getAttribute("ruleId");
                                  -        if (!(this.context.selectorMap.hasOwnProperty(ruleId)))
                                  -            this.context.selectorMap[ruleId] = [];
                                  -
                                  -        var map = this.context.selectorMap[ruleId];
                                  -        var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -        var parsedValue = parsePriority(propValue);
                                  -        if (hasClass(row, "disabledStyle"))
                                  -        {
                                  -            Firebug.CSSModule.removeProperty(rule, propName);
                                  -
                                  -            map.push({"name": propName, "value": parsedValue.value,
                                  -                "important": parsedValue.priority});
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -
                                  -            var index = findPropByName(map, propName);
                                  -            map.splice(index, 1);
                                  -        }
                                  -
                                  -        this.markChange(this.name == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        //console.log("onMouseDown", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        // XXjoe Hack to only allow clicking on the checkbox
                                  -        if (!isLeftClick(event) || offset > 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        if (hasClass(target, "textEditor"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (row && hasClass(row, "editGroup"))
                                  -        {
                                  -            this.disablePropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onDoubleClick: function(event)
                                  -    {
                                  -        //console.log("onDoubleClick", event.target || event.srcElement, event);
                                  -        
                                  -        // xxxpedro adjusting coordinates because the panel isn't a window yet
                                  -        var offset = event.clientX - this.panelNode.parentNode.offsetLeft;
                                  -        
                                  -        if (!isLeftClick(event) || offset <= 20)
                                  -            return;
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        //console.log("ok", target, hasClass(target, "textEditorInner"), !isLeftClick(event), offset <= 20);
                                  -        
                                  -        // if the inline editor was clicked, don't insert a new rule
                                  -        if (hasClass(target, "textEditorInner"))
                                  -            return;
                                  -            
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        if (row && !getAncestorByClass(target, "cssPropName")
                                  -            && !getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            this.insertPropertyRow(row);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "stylesheet",
                                  -    title: "CSS",
                                  -    parentPanel: null,
                                  -    searchable: true,
                                  -    dependents: ["css", "stylesheet", "dom", "domSide", "layout"],
                                  -    
                                  -    options:
                                  -    {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onDoubleClick = bind(this.onDoubleClick, this);
                                  -
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var selectNode = this.selectNode = createElement("select");
                                  -            
                                  -            CssAnalyzer.processAllStyleSheets(doc, function(doc, styleSheet)
                                  -            {
                                  -                var key = StyleSheetCache.key(styleSheet);
                                  -                var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -                var option = createElement("option", {value: key});
                                  -                
                                  -                option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -                selectNode.appendChild(option);
                                  -            });
                                  -            
                                  -            this.toolButtonsNode.appendChild(selectNode);
                                  -        }
                                  -        /**/
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var key = target.value;
                                  -        var styleSheet = StyleSheetCache.get(key);
                                  -        
                                  -        this.updateLocation(styleSheet);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //if (!domUtils)
                                  -        //{
                                  -        //    try {
                                  -        //        domUtils = CCSV("@mozilla.org/inspector/dom-utils;1", "inIDOMUtils");
                                  -        //    } catch (exc) {
                                  -        //        if (FBTrace.DBG_ERRORS)
                                  -        //            FBTrace.sysout("@mozilla.org/inspector/dom-utils;1 FAILED to load: "+exc, exc);
                                  -        //    }
                                  -        //}
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        this.initializeNode();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            var styleSheets = Firebug.browser.document.styleSheets;
                                  -            
                                  -            if (styleSheets.length > 0)
                                  -            {
                                  -                addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -                
                                  -                this.updateLocation(styleSheets[0]);
                                  -            }
                                  -        }
                                  -        
                                  -        //Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // must destroy the editor when we leave the panel to avoid problems (Issue 2981)
                                  -        Firebug.Editor.stopEditing();
                                  -        
                                  -        if (this.name == "stylesheet")
                                  -        {
                                  -            removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        }
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        //state.scrollTop = this.panelNode.scrollTop ? this.panelNode.scrollTop : this.lastScrollTop;
                                  -
                                  -        //persistObjects(this, state);
                                  -
                                  -        // xxxpedro we are stopping the editor in the shutdown method already
                                  -        //Firebug.Editor.stopEditing();
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'css']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "dblclick", this.onDoubleClick);
                                  -        //Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'css']);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        Firebug.Inspector.stopInspecting(true);
                                  -
                                  -        this.showToolbarButtons("fbCSSButtons", true);
                                  -
                                  -        if (this.context.loaded && !this.location) // wait for loadedContext to restore the panel
                                  -        {
                                  -            restoreObjects(this, state);
                                  -
                                  -            if (!this.location)
                                  -                this.location = this.getDefaultLocation();
                                  -
                                  -            if (state && state.scrollTop)
                                  -                this.panelNode.scrollTop = state.scrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbCSSButtons", false);
                                  -
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof CSSStyleSheet)
                                  -            return 1;
                                  -        else if (object instanceof CSSStyleRule)
                                  -            return 2;
                                  -        else if (object instanceof CSSStyleDeclaration)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateLocation: function(styleSheet)
                                  -    {
                                  -        if (!styleSheet)
                                  -            return;
                                  -        if (styleSheet.editStyleSheet)
                                  -            styleSheet = styleSheet.editStyleSheet.sheet;
                                  -        
                                  -        // if it is a restricted stylesheet, show the warning message and abort the update process
                                  -        if (styleSheet.restricted)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, this.panelNode);
                                  -
                                  -            // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The stylesheet could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22Access_to_restricted_URI_denied.22"
                                  -            }, this.panelNode);
                                  -            
                                  -            return;
                                  -        }
                                  -
                                  -        var rules = this.getStyleSheetRules(this.context, styleSheet);
                                  -
                                  -        var result;
                                  -        if (rules.length)
                                  -            // FIXME xxxpedro chromenew this is making iPad's Safari to crash
                                  -            result = this.template.tag.replace({rules: rules}, this.panelNode);
                                  -        else
                                  -            result = FirebugReps.Warning.tag.replace({object: "EmptyStyleSheet"}, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro need to fix showToolbarButtons function
                                  -        //this.showToolbarButtons("fbCSSButtons", !isSystemStyleSheet(this.location));
                                  -
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, this.panelNode]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        this.selection = null;
                                  -
                                  -        if (object instanceof CSSStyleDeclaration) {
                                  -            object = object.parentRule;
                                  -        }
                                  -
                                  -        if (object instanceof CSSStyleRule)
                                  -        {
                                  -            this.navigate(object.parentStyleSheet);
                                  -            this.highlightRule(object);
                                  -        }
                                  -        else if (object instanceof CSSStyleSheet)
                                  -        {
                                  -            this.navigate(object);
                                  -        }
                                  -        else if (object instanceof SourceLink)
                                  -        {
                                  -            try
                                  -            {
                                  -                var sourceLink = object;
                                  -
                                  -                var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -                if (sourceFile)
                                  -                {
                                  -                    clearNode(this.panelNode);  // replace rendered stylesheets
                                  -                    this.showSourceFile(sourceFile);
                                  -
                                  -                    var lineNo = object.line;
                                  -                    if (lineNo)
                                  -                        this.scrollToLine(lineNo, this.jumpHighlightFactory(lineNo, this.context));
                                  -                }
                                  -                else // XXXjjb we should not be taking this path
                                  -                {
                                  -                    var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -                    if (stylesheet)
                                  -                        this.navigate(stylesheet);
                                  -                    else
                                  -                    {
                                  -                        if (FBTrace.DBG_CSS)
                                  -                            FBTrace.sysout("css.updateSelection no sourceFile for "+sourceLink.href, sourceLink);
                                  -                    }
                                  -                }
                                  -            }
                                  -            catch(exc) {
                                  -                if (FBTrace.DBG_CSS)
                                  -                    FBTrace.sysout("css.upDateSelection FAILS "+exc, exc);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var styleSheets = getAllStyleSheets(this.context);
                                  -        return styleSheets;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") },
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(style, target)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        if (this.infoTipType == "color")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyColor",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -        else if (this.infoTipType == "image")
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyImageLocation",
                                  -                    command: bindFixed(copyToClipboard, FBL, this.infoTipObject) },
                                  -                {label: "OpenImageInNewTab",
                                  -                    command: bindFixed(openNewTab, FBL, this.infoTipObject) }
                                  -            );
                                  -        }
                                  -
                                  -        ///if (this.selection instanceof Element)
                                  -        if (isElement(this.selection))
                                  -        {
                                  -            items.push(
                                  -                //"-",
                                  -                {label: "EditStyle",
                                  -                    command: bindFixed(this.editElementStyle, this) }
                                  -            );
                                  -        }
                                  -        else if (!isSystemStyleSheet(this.selection))
                                  -        {
                                  -            items.push(
                                  -                    //"-",
                                  -                    {label: "NewRule",
                                  -                        command: bindFixed(this.insertRule, this, target) }
                                  -                );
                                  -        }
                                  -
                                  -        var cssRule = getAncestorByClass(target, "cssRule");
                                  -        if (cssRule && hasClass(cssRule, "cssEditableRule"))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewProp",
                                  -                    command: bindFixed(this.insertPropertyRow, this, target) }
                                  -            );
                                  -
                                  -            var propRow = getAncestorByClass(target, "cssProp");
                                  -            if (propRow)
                                  -            {
                                  -                var propName = getChildByClass(propRow, "cssPropName")[textContent];
                                  -                var isDisabled = hasClass(propRow, "disabledStyle");
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.editPropertyRow, this, propRow) },
                                  -                    {label: $STRF("DeleteProp", [propName]), nol10n: true,
                                  -                        command: bindFixed(this.deletePropertyRow, this, propRow) },
                                  -                    {label: $STRF("DisableProp", [propName]), nol10n: true,
                                  -                        type: "checkbox", checked: isDisabled,
                                  -                        command: bindFixed(this.disablePropertyRow, this, propRow) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -        if (this.infoTipType == "image")
                                  -        {
                                  -            openNewTab(this.infoTipObject);
                                  -            return true;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        var propValue = getAncestorByClass(target, "cssPropValue");
                                  -        if (propValue)
                                  -        {
                                  -            var offset = getClientOffset(propValue);
                                  -            var offsetX = x-offset.x;
                                  -
                                  -            var text = propValue[textContent];
                                  -            var charWidth = propValue.offsetWidth/text.length;
                                  -            var charOffset = Math.floor(offsetX/charWidth);
                                  -
                                  -            var cssValue = parseCSSValue(text, charOffset);
                                  -            if (cssValue)
                                  -            {
                                  -                if (cssValue.value == this.infoTipValue)
                                  -                    return true;
                                  -
                                  -                this.infoTipValue = cssValue.value;
                                  -
                                  -                if (cssValue.type == "rgb" || (!cssValue.type && isColorKeyword(cssValue.value)))
                                  -                {
                                  -                    this.infoTipType = "color";
                                  -                    this.infoTipObject = cssValue.value;
                                  -
                                  -                    return Firebug.InfoTip.populateColorInfoTip(infoTip, cssValue.value);
                                  -                }
                                  -                else if (cssValue.type == "url")
                                  -                {
                                  -                    ///var propNameNode = target.parentNode.getElementsByClassName("cssPropName").item(0);
                                  -                    var propNameNode = getElementByClass(target.parentNode, "cssPropName");
                                  -                    if (propNameNode && isImageRule(propNameNode[textContent]))
                                  -                    {
                                  -                        var rule = Firebug.getRepObject(target);
                                  -                        var baseURL = this.getStylesheetURL(rule);
                                  -                        var relURL = parseURLValue(cssValue.value);
                                  -                        var absURL = isDataURL(relURL) ? relURL:absoluteURL(relURL, baseURL);
                                  -                        var repeat = parseRepeatValue(text);
                                  -
                                  -                        this.infoTipType = "image";
                                  -                        this.infoTipObject = absURL;
                                  -
                                  -                        return Firebug.InfoTip.populateImageInfoTip(infoTip, absURL, repeat);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        delete this.infoTipType;
                                  -        delete this.infoTipValue;
                                  -        delete this.infoTipObject;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (target == this.panelNode
                                  -            || hasClass(target, "cssSelector") || hasClass(target, "cssRule")
                                  -            || hasClass(target, "cssSheet"))
                                  -        {
                                  -            if (!this.ruleEditor)
                                  -                this.ruleEditor = new CSSRuleEditor(this.document);
                                  -
                                  -            return this.ruleEditor;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!this.editor)
                                  -                this.editor = new CSSEditor(this.document);
                                  -
                                  -            return this.editor;
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheets = this.context.window.document.styleSheets;
                                  -            if (styleSheets.length)
                                  -            {
                                  -                var sheet = styleSheets[0];
                                  -                return (Firebug.filterSystemURLs && isSystemURL(getURLForStyleSheet(sheet))) ? null : sheet;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_LOCATIONS)
                                  -                FBTrace.sysout("css.getDefaultLocation FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectDescription: function(styleSheet)
                                  -    {
                                  -        var url = getURLForStyleSheet(styleSheet);
                                  -        var instance = getInstanceForStyleSheet(styleSheet);
                                  -
                                  -        var baseDescription = splitURLBase(url);
                                  -        if (instance) {
                                  -          baseDescription.name = baseDescription.name + " #" + (instance + 1);
                                  -        }
                                  -        return baseDescription;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -        function scanDoc(styleSheet) {
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < styleSheet.cssRules.length; i++)
                                  -            {
                                  -                if (scanRE.test(styleSheet.cssRules[i].cssText))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -        {
                                  -            row = this.currentSearch.findNext(wrapSearch, false, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.editing)
                                  -            {
                                  -                this.currentSearch = new TextSearch(this.stylesheetEditor.box);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -
                                  -                if (row)
                                  -                {
                                  -                    var sel = this.document.defaultView.getSelection();
                                  -                    sel.removeAllRanges();
                                  -                    sel.addRange(this.currentSearch.range);
                                  -                    scrollSelectionIntoView(this);
                                  -                    return true;
                                  -                }
                                  -                else
                                  -                    return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -                this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -                row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -            }
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            this.document.defaultView.getSelection().selectAllChildren(row);
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onCSSSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple_Files", "searchGlobal")
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -
                                  -function CSSElementPanel() {}
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        cascadedTag:
                                  -            DIV({"class": "a11yCSSView",  role : 'presentation'},
                                  -                DIV({role : 'list', 'aria-label' : $STR('aria.labels.style rules') },
                                  -                    FOR("rule", "$rules",
                                  -                        TAG("$ruleTag", {rule: "$rule"})
                                  -                    )
                                  -                ),
                                  -                DIV({role : "list", 'aria-label' :$STR('aria.labels.inherited style rules')},
                                  -                    FOR("section", "$inherited",
                                  -                        H1({"class": "cssInheritHeader groupHeader focusRow", role : 'listitem' },
                                  -                            SPAN({"class": "cssInheritLabel"}, "$inheritLabel"),
                                  -                            TAG(FirebugReps.Element.shortTag, {object: "$section.element"})
                                  -                        ),
                                  -                        DIV({role : 'group'},
                                  -                            FOR("rule", "$section.rules",
                                  -                                TAG("$ruleTag", {rule: "$rule"})
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                 )
                                  -            ),
                                  -
                                  -        ruleTag:
                                  -            isIE ?
                                  -            // IE needs the sourceLink first, otherwise it will be rendered outside the panel
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"}),
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"})                
                                  -            )
                                  -            :
                                  -            // other browsers need the sourceLink last, otherwise it will cause an extra space
                                  -            // before the rule representation
                                  -            DIV({"class": "cssElementRuleContainer"},
                                  -                TAG(CSSStyleRuleTag.tag, {rule: "$rule"}),
                                  -                TAG(FirebugReps.SourceLink.tag, {object: "$rule.sourceLink"})
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateCascadeView: function(element)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeCSSRulesAdded', [this]);
                                  -        var rules = [], sections = [], usedProps = {};
                                  -        this.getInheritedRules(element, sections, usedProps);
                                  -        this.getElementRules(element, rules, usedProps);
                                  -
                                  -        if (rules.length || sections.length)
                                  -        {
                                  -            var inheritLabel = "Inherited from"; // $STR("InheritedFrom");
                                  -            var result = this.template.cascadedTag.replace({rules: rules, inherited: sections,
                                  -                inheritLabel: inheritLabel}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -        else
                                  -        {
                                  -            var result = FirebugReps.Warning.tag.replace({object: "EmptyElementCSS"}, this.panelNode);
                                  -            //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -        }
                                  -
                                  -        // TODO: xxxpedro remove when there the external resource problem is fixed
                                  -        if (CssAnalyzer.hasExternalStyleSheet())
                                  -            CssAnalyzer.externalStyleSheetWarning.tag.append({
                                  -                object: "The results here may be inaccurate because some " +
                                  -                        "stylesheets could not be loaded due to access restrictions. ",
                                  -                link: "more...",
                                  -                href: "http://getfirebug.com/wiki/index.php/Firebug_Lite_FAQ#I_keep_seeing_.22This_element_has_no_style_rules.22"
                                  -            }, this.panelNode);
                                  -    },
                                  -
                                  -    getStylesheetURL: function(rule)
                                  -    {
                                  -        // if the parentStyleSheet.href is null, CSS std says its inline style.
                                  -        // TODO: xxxpedro IE doesn't have rule.parentStyleSheet so we must fall back to the doc.location
                                  -        if (rule && rule.parentStyleSheet && rule.parentStyleSheet.href)
                                  -            return rule.parentStyleSheet.href;
                                  -        else
                                  -            return this.selection.ownerDocument.location.href;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getInheritedRules: function(element, sections, usedProps)
                                  -    {
                                  -        var parent = element.parentNode;
                                  -        if (parent && parent.nodeType == 1)
                                  -        {
                                  -            this.getInheritedRules(parent, sections, usedProps);
                                  -
                                  -            var rules = [];
                                  -            this.getElementRules(parent, rules, usedProps, true);
                                  -
                                  -            if (rules.length)
                                  -                sections.splice(0, 0, {element: parent, rules: rules});
                                  -        }
                                  -    },
                                  -
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        
                                  -        inspectedRules = CssAnalyzer.getElementCSSRules(element);
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0, length=inspectedRules.length; i < length; ++i)
                                  -            {
                                  -                var ruleId = inspectedRules[i];
                                  -                var ruleData = CssAnalyzer.getRuleData(ruleId);
                                  -                var rule = ruleData.rule;
                                  -                
                                  -                var ssid = ruleData.styleSheetId;
                                  -                var parentStyleSheet = StyleSheetCache.get(ssid); 
                                  -
                                  -                var href = parentStyleSheet.externalURL ? parentStyleSheet.externalURL : parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = null;
                                  -                //var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = false;
                                  -                //var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                //
                                  -                //var line = domUtils.getRuleLine(rule);
                                  -                // TODO: xxxpedro CSS line number 
                                  -                var line = ruleData.lineNo;
                                  -                
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: ruleData.selector, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /*
                                  -    getElementRules: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var inspectedRules, displayedRules = {};
                                  -        try
                                  -        {
                                  -            inspectedRules = domUtils ? domUtils.getCSSStyleRules(element) : null;
                                  -        } catch (exc) {}
                                  -
                                  -        if (inspectedRules)
                                  -        {
                                  -            for (var i = 0; i < inspectedRules.Count(); ++i)
                                  -            {
                                  -                var rule = QI(inspectedRules.GetElementAt(i), nsIDOMCSSStyleRule);
                                  -
                                  -                var href = rule.parentStyleSheet.href;  // Null means inline
                                  -
                                  -                var instance = getInstanceForStyleSheet(rule.parentStyleSheet, element.ownerDocument);
                                  -
                                  -                var isSystemSheet = isSystemStyleSheet(rule.parentStyleSheet);
                                  -                if (!Firebug.showUserAgentCSS && isSystemSheet) // This removes user agent rules
                                  -                    continue;
                                  -                if (!href)
                                  -                    href = element.ownerDocument.location.href; // http://code.google.com/p/fbug/issues/detail?id=452
                                  -
                                  -                var props = this.getRuleProperties(this.context, rule, inheritMode);
                                  -                if (inheritMode && !props.length)
                                  -                    continue;
                                  -
                                  -                var line = domUtils.getRuleLine(rule);
                                  -                var ruleId = rule.selectorText+"/"+line;
                                  -                var sourceLink = new SourceLink(href, line, "css", rule, instance);
                                  -
                                  -                this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -                rules.splice(0, 0, {rule: rule, id: ruleId,
                                  -                        selector: rule.selectorText, sourceLink: sourceLink,
                                  -                        props: props, inherited: inheritMode,
                                  -                        isSystemSheet: isSystemSheet});
                                  -            }
                                  -        }
                                  -
                                  -        if (element.style)
                                  -            this.getStyleProperties(element, rules, usedProps, inheritMode);
                                  -
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("getElementRules "+rules.length+" rules for "+getElementXPath(element), rules);
                                  -    },
                                  -    /**/
                                  -    markOverridenProps: function(props, usedProps, inheritMode)
                                  -    {
                                  -        for (var i = 0; i < props.length; ++i)
                                  -        {
                                  -            var prop = props[i];
                                  -            if ( usedProps.hasOwnProperty(prop.name) )
                                  -            {
                                  -                var deadProps = usedProps[prop.name]; // all previous occurrences of this property
                                  -                for (var j = 0; j < deadProps.length; ++j)
                                  -                {
                                  -                    var deadProp = deadProps[j];
                                  -                    if (!deadProp.disabled && !deadProp.wasInherited && deadProp.important && !prop.important)
                                  -                        prop.overridden = true;  // new occurrence overridden
                                  -                    else if (!prop.disabled)
                                  -                        deadProp.overridden = true;  // previous occurrences overridden
                                  -                }
                                  -            }
                                  -            else
                                  -                usedProps[prop.name] = [];
                                  -
                                  -            prop.wasInherited = inheritMode ? true : false;
                                  -            usedProps[prop.name].push(prop);  // all occurrences of a property seen so far, by name
                                  -        }
                                  -    },
                                  -
                                  -    getStyleProperties: function(element, rules, usedProps, inheritMode)
                                  -    {
                                  -        var props = this.parseCSSProps(element.style, inheritMode);
                                  -        this.addOldProperties(this.context, getElementXPath(element), inheritMode, props);
                                  -
                                  -        sortProperties(props);
                                  -        this.markOverridenProps(props, usedProps, inheritMode);
                                  -
                                  -        if (props.length)
                                  -            rules.splice(0, 0,
                                  -                    {rule: element, id: getElementXPath(element),
                                  -                        selector: "element.style", props: props, inherited: inheritMode});
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "css",
                                  -    title: "Style",
                                  -    parentPanel: "HTML",
                                  -    order: 0,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.chrome; // TODO: xxxpedro css2
                                  -        this.document = Firebug.chrome.document; // TODO: xxxpedro css2
                                  -        
                                  -        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -        
                                  -        //this.updateCascadeView(document.getElementsByTagName("h1")[0]);
                                  -        //this.updateCascadeView(document.getElementById("build"));
                                  -        
                                  -        /*
                                  -        this.onStateChange = bindFixed(this.contentStateCheck, this);
                                  -        this.onHoverChange = bindFixed(this.contentStateCheck, this, STATE_HOVER);
                                  -        this.onActiveChange = bindFixed(this.contentStateCheck, this, STATE_ACTIVE);
                                  -        /**/
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (domUtils)
                                  -        {
                                  -            // Normally these would not be required, but in order to update after the state is set
                                  -            // using the options menu we need to monitor these global events as well
                                  -            var doc = win.document;
                                  -            ///addEvent(doc, "mouseover", this.onHoverChange);
                                  -            ///addEvent(doc, "mousedown", this.onActiveChange);
                                  -        }
                                  -    },
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var doc = win.document;
                                  -        ///removeEvent(doc, "mouseover", this.onHoverChange);
                                  -        ///removeEvent(doc, "mousedown", this.onActiveChange);
                                  -
                                  -        if (isAncestor(this.stateChangeEl, doc))
                                  -        {
                                  -            this.removeStateChangeHandlers();
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Element ? 1 : 0;
                                  -    },
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateCascadeView(element);
                                  -        if (domUtils)
                                  -        {
                                  -            this.contentState = safeGetContentState(element);
                                  -            this.addStateChangeHandlers(element);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(element)
                                  -    {
                                  -        if ( !instanceOf(element , "Element") ) // html supports SourceLink
                                  -            return;
                                  -
                                  -        if (sothinkInstalled)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "SothinkWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -
                                  -        /*
                                  -        if (!domUtils)
                                  -        {
                                  -            FirebugReps.Warning.tag.replace({object: "DOMInspectorWarning"}, this.panelNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        this.updateView(element);
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "showUserAgentCSS" || name == "expandShorthandProps")
                                  -            this.refresh();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var ret = [
                                  -            {label: "Show User Agent CSS", type: "checkbox", checked: Firebug.showUserAgentCSS,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "showUserAgentCSS") },
                                  -            {label: "Expand Shorthand Properties", type: "checkbox", checked: Firebug.expandShorthandProps,
                                  -                    command: bindFixed(Firebug.togglePref, Firebug, "expandShorthandProps") }
                                  -        ];
                                  -        if (domUtils && this.selection)
                                  -        {
                                  -            var state = safeGetContentState(this.selection);
                                  -
                                  -            ret.push("-");
                                  -            ret.push({label: ":active", type: "checkbox", checked: state & STATE_ACTIVE,
                                  -              command: bindFixed(this.updateContentState, this, STATE_ACTIVE, state & STATE_ACTIVE)});
                                  -            ret.push({label: ":hover", type: "checkbox", checked: state & STATE_HOVER,
                                  -              command: bindFixed(this.updateContentState, this, STATE_HOVER, state & STATE_HOVER)});
                                  -        }
                                  -        return ret;
                                  -    },
                                  -
                                  -    updateContentState: function(state, remove)
                                  -    {
                                  -        domUtils.setContentState(remove ? this.selection.ownerDocument.documentElement : this.selection, state);
                                  -        this.refresh();
                                  -    },
                                  -
                                  -    addStateChangeHandlers: function(el)
                                  -    {
                                  -      this.removeStateChangeHandlers();
                                  -
                                  -      /*
                                  -      addEvent(el, "focus", this.onStateChange);
                                  -      addEvent(el, "blur", this.onStateChange);
                                  -      addEvent(el, "mouseup", this.onStateChange);
                                  -      addEvent(el, "mousedown", this.onStateChange);
                                  -      addEvent(el, "mouseover", this.onStateChange);
                                  -      addEvent(el, "mouseout", this.onStateChange);
                                  -      /**/
                                  -
                                  -      this.stateChangeEl = el;
                                  -    },
                                  -
                                  -    removeStateChangeHandlers: function()
                                  -    {
                                  -        var sel = this.stateChangeEl;
                                  -        if (sel)
                                  -        {
                                  -            /*
                                  -            removeEvent(sel, "focus", this.onStateChange);
                                  -            removeEvent(sel, "blur", this.onStateChange);
                                  -            removeEvent(sel, "mouseup", this.onStateChange);
                                  -            removeEvent(sel, "mousedown", this.onStateChange);
                                  -            removeEvent(sel, "mouseover", this.onStateChange);
                                  -            removeEvent(sel, "mouseout", this.onStateChange);
                                  -            /**/
                                  -        }
                                  -    },
                                  -
                                  -    contentStateCheck: function(state)
                                  -    {
                                  -        if (!state || this.contentState & state)
                                  -        {
                                  -            var timeoutRunner = bindFixed(function()
                                  -            {
                                  -                var newState = safeGetContentState(this.selection);
                                  -                if (newState != this.contentState)
                                  -                {
                                  -                    this.context.invalidatePanels(this.name);
                                  -                }
                                  -            }, this);
                                  -
                                  -            // Delay exec until after the event has processed and the state has been updated
                                  -            setTimeout(timeoutRunner, 0);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -function safeGetContentState(selection)
                                  -{
                                  -    try
                                  -    {
                                  -        return domUtils.getContentState(selection);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("css.safeGetContentState; EXCEPTION", e);
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function CSSComputedElementPanel() {}
                                  -
                                  -CSSComputedElementPanel.prototype = extend(CSSElementPanel.prototype,
                                  -{
                                  -    template: domplate(
                                  -    {
                                  -        computedTag:
                                  -            DIV({"class": "a11yCSSView", role : "list", "aria-label" : $STR('aria.labels.computed styles')},
                                  -                FOR("group", "$groups",
                                  -                    H1({"class": "cssInheritHeader groupHeader focusRow", role : "listitem"},
                                  -                        SPAN({"class": "cssInheritLabel"}, "$group.title")
                                  -                    ),
                                  -                    TABLE({width: "100%", role : 'group'},
                                  -                        TBODY({role : 'presentation'},
                                  -                            FOR("prop", "$group.props",
                                  -                                TR({"class": 'focusRow computedStyleRow', role : 'listitem'},
                                  -                                    TD({"class": "stylePropName", role : 'presentation'}, "$prop.name"),
                                  -                                    TD({"class": "stylePropValue", role : 'presentation'}, "$prop.value")
                                  -                                )
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -    }),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateComputedView: function(element)
                                  -    {
                                  -        var win = isIE ?
                                  -                element.ownerDocument.parentWindow :
                                  -                element.ownerDocument.defaultView;
                                  -        
                                  -        var style = isIE ?
                                  -                element.currentStyle :
                                  -                win.getComputedStyle(element, "");
                                  -
                                  -        var groups = [];
                                  -
                                  -        for (var groupName in styleGroups)
                                  -        {
                                  -            // TODO: xxxpedro i18n $STR
                                  -            //var title = $STR("StyleGroup-" + groupName);
                                  -            var title = styleGroupTitles[groupName];
                                  -            var group = {title: title, props: []};
                                  -            groups.push(group);
                                  -
                                  -            var props = styleGroups[groupName];
                                  -            for (var i = 0; i < props.length; ++i)
                                  -            {
                                  -                var propName = props[i];
                                  -                var propValue = style.getPropertyValue ?
                                  -                        style.getPropertyValue(propName) :
                                  -                        ""+style[toCamelCase(propName)];
                                  -                
                                  -                if (propValue === undefined || propValue === null) 
                                  -                    continue;
                                  -                
                                  -                propValue = stripUnits(rgbToHex(propValue));
                                  -                if (propValue)
                                  -                    group.props.push({name: propName, value: propValue});
                                  -            }
                                  -        }
                                  -
                                  -        var result = this.template.computedTag.replace({groups: groups}, this.panelNode);
                                  -        //dispatch([Firebug.A11yModel], 'onCSSRulesAdded', [this, result]);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "computed",
                                  -    title: "Computed",
                                  -    parentPanel: "HTML",
                                  -    order: 1,
                                  -
                                  -    updateView: function(element)
                                  -    {
                                  -        this.updateComputedView(element);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            {label: "Refresh", command: bind(this.refresh, this) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSSEditor
                                  -
                                  -function CSSEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -CSSEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var rule = Firebug.getRepObject(target);
                                  -        var emptyProp = 
                                  -        {
                                  -            // TODO: xxxpedro - uses charCode(255) to force the element being rendered, 
                                  -            // allowing webkit to get the correct position of the property name "span",
                                  -            // when inserting a new CSS rule?
                                  -            name: "",
                                  -            value: "",
                                  -            important: ""
                                  -        };
                                  -
                                  -        if (insertWhere == "before")
                                  -            return CSSPropTag.tag.insertBefore({prop: emptyProp, rule: rule}, target);
                                  -        else
                                  -            return CSSPropTag.tag.insertAfter({prop: emptyProp, rule: rule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // We need to check the value first in order to avoid a problem in IE8 
                                  -        // See Issue 3038: Empty (null) styles when adding CSS styles in Firebug Lite 
                                  -        if (!value) return;
                                  -        
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        var row = getAncestorByClass(target, "cssProp");
                                  -        if (hasClass(row, "disabledStyle"))
                                  -            toggleClass(row, "disabledStyle");
                                  -
                                  -        var rule = Firebug.getRepObject(target);
                                  -
                                  -        if (hasClass(target, "cssPropName"))
                                  -        {
                                  -            if (value && previousValue != value)  // name of property has changed.
                                  -            {
                                  -                var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -                var parsedValue = parsePriority(propValue);
                                  -
                                  -                if (propValue && propValue != "undefined") {
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("CSSEditor.saveEdit : "+previousValue+"->"+value+" = "+propValue+"\n");
                                  -                    if (previousValue)
                                  -                        Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -                    Firebug.CSSModule.setProperty(rule, value, parsedValue.value, parsedValue.priority);
                                  -                }
                                  -            }
                                  -            else if (!value) // name of the property has been deleted, so remove the property.
                                  -                Firebug.CSSModule.removeProperty(rule, previousValue);
                                  -        }
                                  -        else if (getAncestorByClass(target, "cssPropValue"))
                                  -        {
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            var propValue = getChildByClass(row, "cssPropValue")[textContent];
                                  -
                                  -            if (FBTrace.DBG_CSS)
                                  -            {
                                  -                FBTrace.sysout("CSSEditor.saveEdit propName=propValue: "+propName +" = "+propValue+"\n");
                                  -               // FBTrace.sysout("CSSEditor.saveEdit BEFORE style:",style);
                                  -            }
                                  -
                                  -            if (value && value != "null")
                                  -            {
                                  -                var parsedValue = parsePriority(value);
                                  -                Firebug.CSSModule.setProperty(rule, propName, parsedValue.value, parsedValue.priority);
                                  -            }
                                  -            else if (previousValue && previousValue != "null")
                                  -                Firebug.CSSModule.removeProperty(rule, propName);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 58 /*":"*/ && hasClass(target, "cssPropName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -            return {start: 0, end: value.length-1};
                                  -        else
                                  -            return parseCSSValue(value, offset);
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -        if (hasClass(this.target, "cssPropName"))
                                  -        {
                                  -            return getCSSPropertyNames();
                                  -        }
                                  -        else
                                  -        {
                                  -            var row = getAncestorByClass(this.target, "cssProp");
                                  -            var propName = getChildByClass(row, "cssPropName")[textContent];
                                  -            return getCSSKeywordsByProperty(propName);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//CSSRuleEditor
                                  -
                                  -function CSSRuleEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -    this.completeAsYouType = false;
                                  -}
                                  -CSSRuleEditor.uniquifier = 0;
                                  -CSSRuleEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -         var emptyRule = {
                                  -                 selector: "",
                                  -                 id: "",
                                  -                 props: [],
                                  -                 isSelectorEditable: true
                                  -         };
                                  -
                                  -         if (insertWhere == "before")
                                  -             return CSSStyleRuleTag.tag.insertBefore({rule: emptyRule}, target);
                                  -         else
                                  -             return CSSStyleRuleTag.tag.insertAfter({rule: emptyRule}, target);
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        if (FBTrace.DBG_CSS)
                                  -            FBTrace.sysout("CSSRuleEditor.saveEdit: '" + value + "'  '" + previousValue + "'", target);
                                  -
                                  -        target.innerHTML = escapeForCss(value);
                                  -
                                  -        if (value === previousValue)     return;
                                  -
                                  -        var row = getAncestorByClass(target, "cssRule");
                                  -        var styleSheet = this.panel.location;
                                  -        styleSheet = styleSheet.editStyleSheet ? styleSheet.editStyleSheet.sheet : styleSheet;
                                  -
                                  -        var cssRules = styleSheet.cssRules;
                                  -        var rule = Firebug.getRepObject(target), oldRule = rule;
                                  -        var ruleIndex = cssRules.length;
                                  -        if (rule || Firebug.getRepObject(row.nextSibling))
                                  -        {
                                  -            var searchRule = rule || Firebug.getRepObject(row.nextSibling);
                                  -            for (ruleIndex=0; ruleIndex<cssRules.length && searchRule!=cssRules[ruleIndex]; ruleIndex++) {}
                                  -        }
                                  -
                                  -        // Delete in all cases except for new add
                                  -        // We want to do this before the insert to ease change tracking
                                  -        if (oldRule)
                                  -        {
                                  -            Firebug.CSSModule.deleteRule(styleSheet, ruleIndex);
                                  -        }
                                  -
                                  -        // Firefox does not follow the spec for the update selector text case.
                                  -        // When attempting to update the value, firefox will silently fail.
                                  -        // See https://bugzilla.mozilla.org/show_bug.cgi?id=37468 for the quite
                                  -        // old discussion of this bug.
                                  -        // As a result we need to recreate the style every time the selector
                                  -        // changes.
                                  -        if (value)
                                  -        {
                                  -            var cssText = [ value, "{" ];
                                  -            var props = row.getElementsByClassName("cssProp");
                                  -            for (var i = 0; i < props.length; i++) {
                                  -                var propEl = props[i];
                                  -                if (!hasClass(propEl, "disabledStyle")) {
                                  -                    cssText.push(getChildByClass(propEl, "cssPropName")[textContent]);
                                  -                    cssText.push(":");
                                  -                    cssText.push(getChildByClass(propEl, "cssPropValue")[textContent]);
                                  -                    cssText.push(";");
                                  -                }
                                  -            }
                                  -            cssText.push("}");
                                  -            cssText = cssText.join("");
                                  -
                                  -            try
                                  -            {
                                  -                var insertLoc = Firebug.CSSModule.insertRule(styleSheet, cssText, ruleIndex);
                                  -                rule = cssRules[insertLoc];
                                  -                ruleIndex++;
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_CSS || FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("CSS Insert Error: "+err, err);
                                  -
                                  -                target.innerHTML = escapeForCss(previousValue);
                                  -                row.repObject = undefined;
                                  -                return;
                                  -            }
                                  -        } else {
                                  -            rule = undefined;
                                  -        }
                                  -
                                  -        // Update the rep object
                                  -        row.repObject = rule;
                                  -        if (!oldRule)
                                  -        {
                                  -            // Who knows what the domutils will return for rule line
                                  -            // for a recently created rule. To be safe we just generate
                                  -            // a unique value as this is only used as an internal key.
                                  -            var ruleId = "new/"+value+"/"+(++CSSRuleEditor.uniquifier);
                                  -            row.setAttribute("ruleId", ruleId);
                                  -        }
                                  -
                                  -        this.panel.markChange(this.panel.name == "stylesheet");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheetEditor
                                  -
                                  -function StyleSheetEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -}
                                  -
                                  -StyleSheetEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    multiLine: true,
                                  -
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "styleSheetEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleCSSEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        if (this.box.parentNode == this.panel.panelNode)
                                  -            this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -        delete this.styleSheet;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        Firebug.CSSModule.freeEdit(this.styleSheet, value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        this.panel.refresh();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    },
                                  -
                                  -    scrollToLine: function(line, offset)
                                  -    {
                                  -        this.startMeasuring(this.input);
                                  -        var lineHeight = this.measureText().height;
                                  -        this.stopMeasuring();
                                  -
                                  -        this.input.scrollTop = (line * lineHeight) + offset;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var rgbToHex = function rgbToHex(value)
                                  -{
                                  -    return value.replace(/\brgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)/gi, rgbToHexReplacer);
                                  -};
                                  -
                                  -var rgbToHexReplacer = function(_, r, g, b) {
                                  -    return '#' + ((1 << 24) + (r << 16) + (g << 8) + (b << 0)).toString(16).substr(-6).toUpperCase();
                                  -};
                                  -
                                  -var stripUnits = function stripUnits(value)
                                  -{
                                  -    // remove units from '0px', '0em' etc. leave non-zero units in-tact.
                                  -    return value.replace(/(url\(.*?\)|[^0]\S*\s*)|0(%|em|ex|px|in|cm|mm|pt|pc)(\s|$)/gi, stripUnitsReplacer);
                                  -};
                                  -
                                  -var stripUnitsReplacer = function(_, skip, remove, whitespace) {
                                  -    return skip || ('0' + whitespace);
                                  -};
                                  -
                                  -function parsePriority(value)
                                  -{
                                  -    var rePriority = /(.*?)\s*(!important)?$/;
                                  -    var m = rePriority.exec(value);
                                  -    var propValue = m ? m[1] : "";
                                  -    var priority = m && m[2] ? "important" : "";
                                  -    return {value: propValue, priority: priority};
                                  -}
                                  -
                                  -function parseURLValue(value)
                                  -{
                                  -    var m = reURL.exec(value);
                                  -    return m ? m[1] : "";
                                  -}
                                  -
                                  -function parseRepeatValue(value)
                                  -{
                                  -    var m = reRepeat.exec(value);
                                  -    return m ? m[0] : "";
                                  -}
                                  -
                                  -function parseCSSValue(value, offset)
                                  -{
                                  -    var start = 0;
                                  -    var m;
                                  -    while (1)
                                  -    {
                                  -        m = reSplitCSS.exec(value);
                                  -        if (m && m.index+m[0].length < offset)
                                  -        {
                                  -            value = value.substr(m.index+m[0].length);
                                  -            start += m.index+m[0].length;
                                  -            offset -= m.index+m[0].length;
                                  -        }
                                  -        else
                                  -            break;
                                  -    }
                                  -
                                  -    if (m)
                                  -    {
                                  -        var type;
                                  -        if (m[1])
                                  -            type = "url";
                                  -        else if (m[2] || m[3])
                                  -            type = "rgb";
                                  -        else if (m[4])
                                  -            type = "int";
                                  -
                                  -        return {value: m[0], start: start+m.index, end: start+m.index+(m[0].length-1), type: type};
                                  -    }
                                  -}
                                  -
                                  -function findPropByName(props, name)
                                  -{
                                  -    for (var i = 0; i < props.length; ++i)
                                  -    {
                                  -        if (props[i].name == name)
                                  -            return i;
                                  -    }
                                  -}
                                  -
                                  -function sortProperties(props)
                                  -{
                                  -    props.sort(function(a, b)
                                  -    {
                                  -        return a.name > b.name ? 1 : -1;
                                  -    });
                                  -}
                                  -
                                  -function getTopmostRuleLine(panelNode)
                                  -{
                                  -    for (var child = panelNode.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (child.offsetTop+child.offsetHeight > panelNode.scrollTop)
                                  -        {
                                  -            var rule = child.repObject;
                                  -            if (rule)
                                  -                return {
                                  -                    line: domUtils.getRuleLine(rule),
                                  -                    offset: panelNode.scrollTop-child.offsetTop
                                  -                };
                                  -        }
                                  -    }
                                  -    return 0;
                                  -}
                                  -
                                  -function getStyleSheetCSS(sheet, context)
                                  -{
                                  -    if (sheet.ownerNode instanceof HTMLStyleElement)
                                  -        return sheet.ownerNode.innerHTML;
                                  -    else
                                  -        return context.sourceCache.load(sheet.href).join("");
                                  -}
                                  -
                                  -function getStyleSheetOwnerNode(sheet) {
                                  -    for (; sheet && !sheet.ownerNode; sheet = sheet.parentStyleSheet);
                                  -
                                  -    return sheet.ownerNode;
                                  -}
                                  -
                                  -function scrollSelectionIntoView(panel)
                                  -{
                                  -    var selCon = getSelectionController(panel);
                                  -    selCon.scrollSelectionIntoView(
                                  -            nsISelectionController.SELECTION_NORMAL,
                                  -            nsISelectionController.SELECTION_FOCUS_REGION, true);
                                  -}
                                  -
                                  -function getSelectionController(panel)
                                  -{
                                  -    var browser = Firebug.chrome.getPanelBrowser(panel);
                                  -    return browser.docShell.QueryInterface(nsIInterfaceRequestor)
                                  -        .getInterface(nsISelectionDisplay)
                                  -        .QueryInterface(nsISelectionController);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.CSSModule);
                                  -Firebug.registerPanel(Firebug.CSSStyleSheetPanel);
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -Firebug.registerPanel(CSSComputedElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/debugger.js b/branches/flexBox/content/firebug/debugger.js
                                  deleted file mode 100644
                                  index cbde2add..00000000
                                  --- a/branches/flexBox/content/firebug/debugger.js
                                  +++ /dev/null
                                  @@ -1,4138 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -///const Cc = Components.classes;
                                  -///const Ci = Components.interfaces;
                                  -///const jsdIScript = Ci.jsdIScript;
                                  -///const jsdIStackFrame = Ci.jsdIStackFrame;
                                  -///const jsdIExecutionHook = Ci.jsdIExecutionHook;
                                  -///const nsISupports = Ci.nsISupports;
                                  -///const nsICryptoHash = Ci.nsICryptoHash;
                                  -///const nsIURI = Ci.nsIURI;
                                  -
                                  -///const PCMAP_SOURCETEXT = jsdIScript.PCMAP_SOURCETEXT;
                                  -///const PCMAP_PRETTYPRINT = jsdIScript.PCMAP_PRETTYPRINT;
                                  -
                                  -///const RETURN_VALUE = jsdIExecutionHook.RETURN_RET_WITH_VAL;
                                  -///const RETURN_THROW_WITH_VAL = jsdIExecutionHook.RETURN_THROW_WITH_VAL;
                                  -///const RETURN_CONTINUE = jsdIExecutionHook.RETURN_CONTINUE;
                                  -///const RETURN_CONTINUE_THROW = jsdIExecutionHook.RETURN_CONTINUE_THROW;
                                  -///const RETURN_ABORT = jsdIExecutionHook.RETURN_ABORT;
                                  -///const RETURN_HOOK_ERROR = jsdIExecutionHook.RETURN_HOOK_ERROR;
                                  -
                                  -///const TYPE_THROW = jsdIExecutionHook.TYPE_THROW;
                                  -///const TYPE_DEBUGGER_KEYWORD = jsdIExecutionHook.TYPE_DEBUGGER_KEYWORD;
                                  -
                                  -    
                                  -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -/// TODO: xxxpedro debugger hack
                                  -var fbs = {
                                  -    registerClient: function(){},
                                  -    unregisterClient: function(){},
                                  -    unregisterDebugger: function(){}
                                  -};
                                  -
                                  -FBL.getUniqueId = function(){};
                                  -FBL.persistObjects = function(){};
                                  -FBL.sourceFilesAsArray = function(){return [];};
                                  -
                                  -Firebug.ActivableModule.isAlwaysEnabled = function(){return true;};
                                  -Firebug.ActivablePanel.destroyNode = function(){};
                                  -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -
                                  -
                                  -var STEP_OVER = 1;
                                  -var STEP_INTO = 2;
                                  -var STEP_OUT = 3;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var tooltipTimeout = 300;
                                  -
                                  -var reLineNumber = /^[^\\]?#(\d*)$/;
                                  -
                                  -var reEval =  /\s*eval\s*\(([^)]*)\)/m;        // eval ( $1 )
                                  -var reHTM = /\.[hH][tT][mM]/;
                                  -var reFunction = /\s*Function\s*\(([^)]*)\)/m;
                                  -var reTooMuchRecursion = /too\smuch\srecursion/;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Debugger = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "debugger",
                                  -    fbs: fbs, // access to firebug-service in chromebug under browser.xul.DOM.Firebug.Debugger.fbs /*@explore*/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Debugging
                                  -
                                  -    hasValidStack: function(context)
                                  -    {
                                  -        return context.stopped && context.currentFrame.isValid;
                                  -    },
                                  -
                                  -    evaluate: function(js, context, scope)  // TODO remote: move to backend, proxy to front
                                  -    {
                                  -        var frame = context.currentFrame;
                                  -        if (!frame)
                                  -            return;
                                  -
                                  -        frame.scope.refresh(); // XXX what's this do?
                                  -
                                  -        var result = {};
                                  -        var scriptToEval = js;
                                  -
                                  -        // This seem to be safe; eval'ing a getter property in content that tries to
                                  -        // be evil and get Components.classes results in a permission denied error.
                                  -        var ok = frame.eval(scriptToEval, "", 1, result);
                                  -
                                  -        var value = unwrapIValue(result.value);
                                  -        if (ok)
                                  -            return value;
                                  -        else
                                  -            throw value;
                                  -    },
                                  -
                                  -    evaluateInCallingFrame: function(js, fileName, lineNo)
                                  -    {
                                  -        return this.halt(function evalInFrame(frame)
                                  -        {
                                  -            window.dump("evaluateInCallingFrame "+frame.script.fileName+" stack: "+getJSDStackDump(frame)+"\n");
                                  -            var result = {};
                                  -            var ok = frame.eval(js, fileName, lineNo, result);
                                  -            var value = unwrapIValue(result.value);
                                  -            if (ok)
                                  -                return value;
                                  -            else
                                  -                throw value;
                                  -        });
                                  -    },
                                  -
                                  -    /*
                                  -     * Used by autocomplete in commandLine
                                  -     * @return array of global property names
                                  -     */
                                  -
                                  -    getCurrentFrameKeys: function(context)  // TODO remote
                                  -    {
                                  -        var globals = keys(context.getGlobalScope().wrappedJSObject);  // return is safe
                                  -
                                  -        if (context.currentFrame)
                                  -            return this.getFrameKeys(context.currentFrame, globals);
                                  -
                                  -        return globals;
                                  -    },
                                  -
                                  -    /*
                                  -     * private to Debugger, returns list of strings
                                  -     */
                                  -    getFrameKeys: function(frame, names)  // TODO backend
                                  -    {
                                  -        var listValue = {value: null}, lengthValue = {value: 0};
                                  -        frame.scope.getProperties(listValue, lengthValue);
                                  -
                                  -        for (var i = 0; i < lengthValue.value; ++i)
                                  -        {
                                  -            var prop = listValue.value[i];
                                  -            var name = unwrapIValue(prop.name);
                                  -            names.push(name);
                                  -        }
                                  -        return names;
                                  -    },
                                  -
                                  -    /* @Deprecated  see chrome.js */
                                  -    focusWatch: function(context)  // TODO moved
                                  -    {
                                  -        return Firebug.chrome.focusWatch(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Private to Debugger
                                  -
                                  -    beginInternalOperation: function() // stop debugger operations like breakOnErrors
                                  -    {
                                  -        var state = {breakOnErrors: Firebug.breakOnErrors};
                                  -        Firebug.breakOnErrors = false;
                                  -        return state;
                                  -    },
                                  -
                                  -    endInternalOperation: function(state)  // pass back the object given by beginInternalOperation
                                  -    {
                                  -        Firebug.breakOnErrors = state.breakOnErrors;
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    halt: function(fnOfFrame)
                                  -    {
                                  -        if(FBTrace.DBG_BP)
                                  -            FBTrace.sysout('debugger.halt '+fnOfFrame);
                                  -
                                  -        return fbs.halt(this, fnOfFrame);
                                  -    },
                                  -
                                  -    breakAsIfDebugger: function(frame)
                                  -    {
                                  -        var debuggr = fbs.findDebugger(frame); // should return 'this' but also sets this.breakContext
                                  -        fbs.breakIntoDebugger(debuggr, frame, 3);
                                  -    },
                                  -
                                  -    // This URL prefix is used to skip frames from chrome URLs. Note that sometimes chrome URLs
                                  -    // are used even in web pages, but only in rare cases so don't worry about it.
                                  -    // Don't be specific like: chrome://firebug/ since frames coming from extensions e.g.
                                  -    // chrome://firecookie/ wouldn't be skipped then.
                                  -    breakNowURLPrefix: "chrome://",
                                  -
                                  -    breakNow: function(context)
                                  -    {
                                  -        Firebug.Debugger.halt(function haltAnalysis(frame)
                                  -        {
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("debugger.breakNow: frame "+frame.script.fileName+" context "+context.getName(), getJSDStackDump(frame) );
                                  -
                                  -            for (; frame && frame.isValid; frame = frame.callingFrame)
                                  -            {
                                  -                var fileName = frame.script.fileName;
                                  -                if (!fileName)
                                  -                    continue;
                                  -                else if (fileName.indexOf(Firebug.Debugger.breakNowURLPrefix) == 0)
                                  -                    continue;
                                  -                else if (fileName.indexOf("/modules/firebug-") != -1)
                                  -                    continue;
                                  -                else
                                  -                    break;
                                  -            }
                                  -
                                  -            if (frame)
                                  -            {
                                  -                Firebug.Debugger.breakContext = context;
                                  -                Firebug.Debugger.onBreak(frame, "halt"); // I just made up a type that won't match TYPE_DEBUGGER_KEYWORD
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                    FBTrace.sysout("debugger.breakNow: no frame that not starting with "+Firebug.Debugger.breakNowURLPrefix);
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    stop: function(context, frame, type, rv)
                                  -    {
                                  -        if (context.stopped)
                                  -            return RETURN_CONTINUE;
                                  -
                                  -        if (!this.isAlwaysEnabled())
                                  -            return RETURN_CONTINUE;
                                  -
                                  -        if (FBTrace.DBG_UI_LOOP)
                                  -            FBTrace.sysout("debugger.stop "+context.getName()+" frame",frame);
                                  -
                                  -        context.stoppedFrame = frame;  // the frame we stopped in, don't change this elsewhere.
                                  -        context.currentFrame = frame;  // the frame we show to user, depends on selection
                                  -        context.stopped = true;
                                  -
                                  -        var hookReturn = dispatch2(this.fbListeners,"onStop",[context,frame, type,rv]);
                                  -        if ( hookReturn && hookReturn >= 0 )
                                  -        {
                                  -            delete context.stopped;
                                  -            delete context.stoppedFrame;
                                  -            delete context.currentFrame;
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("debugger.stop extension vetoed stop with hookReturn "+hookReturn);
                                  -
                                  -            return hookReturn;
                                  -        }
                                  -
                                  -        try
                                  -        {
                                  -             this.freeze(context);
                                  -            // We will pause here until resume is called
                                  -            var depth = fbs.enterNestedEventLoop({onNest: bindFixed(this.startDebugging, this, context)});
                                  -            // For some reason we don't always end up here
                                  -            if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("debugger.stop, depth:"+depth+" context:"+context.getName());
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Just ignore exceptions that happened while in the nested loop
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger exception in nested event loop: "+exc, exc);
                                  -            else     // else /*@explore*/
                                  -                ERROR("debugger exception in nested event loop: "+exc+"\n");
                                  -        }
                                  -        finally
                                  -        {
                                  -            this.thaw(context);
                                  -        }
                                  -
                                  -        this.stopDebugging(context);
                                  -
                                  -        dispatch(this.fbListeners,"onResume",[context]);
                                  -
                                  -        if (context.aborted)
                                  -        {
                                  -            delete context.aborted;
                                  -            return RETURN_ABORT;
                                  -        }
                                  -        else if (Firebug.rerun)
                                  -        {
                                  -            setTimeout(function reExecute()
                                  -            {
                                  -                var rerun = context.savedRerun = Firebug.rerun;
                                  -                delete Firebug.rerun;
                                  -
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                    FBTrace.sysout("Firebug.debugger.reExecute ", {rerun: rerun});
                                  -                // fire the prestored script
                                  -
                                  -                function successConsoleFunction(result, context)
                                  -                {
                                  -                    if (FBTrace.DBG_UI_LOOP)
                                  -                        FBTrace.sysout("Firebug.debugger.reExecute success", result);
                                  -                    dispatch(Firebug.Debugger.fbListeners, "onRerunComplete", [true, result]);
                                  -                }
                                  -                function exceptionFunction(result, context)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("Firebug.debugger.reExecute FAILED "+result, result);
                                  -                    dispatch(Firebug.Debugger.fbListeners, "onRerunComplete", [failed, result]);
                                  -                }
                                  -                Firebug.CommandLine.evaluate("window._firebug.rerunFunction()", context, null, context.window, successConsoleFunction, exceptionFunction);
                                  -
                                  -            });
                                  -
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("Firebug.debugger.reExecute return "+RETURN_HOOK_ERROR);
                                  -
                                  -            return RETURN_HOOK_ERROR;
                                  -        }
                                  -        else
                                  -            return RETURN_CONTINUE;
                                  -    },
                                  -
                                  -    rerun: function(context)
                                  -    {
                                  -        if(!context.stopped)
                                  -        {
                                  -            FBTrace.sysout("debugger.rerun FAILS: not stopped");
                                  -            return;
                                  -        }
                                  -
                                  -        if (Firebug.rerun)
                                  -        {
                                  -            FBTrace.sysout("debugger.rerun FAILS: Firebug.rerun in progress");
                                  -            return;
                                  -        }
                                  -
                                  -        Firebug.rerun = this.getRerun(context);
                                  -
                                  -        // now continue but abort the current call stack.
                                  -        this.resume(context);  // the Firebug.rerun will signal abort stack
                                  -    },
                                  -
                                  -    getRerun: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("debugger.rerun for "+context.getName());
                                  -        try
                                  -        {
                                  -            // walk back to the oldest frame, but not top level
                                  -            var frame = context.stoppedFrame;
                                  -            while (frame.callingFrame && frame.callingFrame.script.functionName)
                                  -            {
                                  -                frame = frame.callingFrame;
                                  -
                                  -                if (frame.script.functionName == "_firebugRerun") // re-reRun
                                  -                {
                                  -                    if (FBTrace.DBG_UI_LOOP)
                                  -                        FBTrace.sysout("getRerun re-rerun ", context.savedRerun);
                                  -                    return context.savedRerun;
                                  -                }
                                  -            }
                                  -
                                  -            // In this oldest frame we have element.onclick(event) or window.foo()
                                  -            // We want to cause the page to run this again after we abort this call stack.
                                  -            //
                                  -            function getStoreRerunInfoScript(fnName)
                                  -            {
                                  -                var str = "if (!window._firebug)window._firebug={};\n";
                                  -                str += "window._firebug.rerunThis = this;\n";
                                  -                str += "window._firebug.rerunArgs = [];\n";
                                  -                str += "if (arguments && arguments.length) for (var i = 0; i < arguments.length; i++) window._firebug.rerunArgs.push(arguments[i]);\n";
                                  -                str += "window._firebug.rerunFunctionName = "+fnName+";\n";
                                  -                str +="window._firebug.rerunFunction = function _firebugRerun() { "+fnName+".apply(window._firebug.rerunThis, window._firebug.rerunArgs); }";
                                  -                return str;
                                  -            }
                                  -
                                  -            var rerun = {};
                                  -
                                  -            var fnName = getFunctionName(frame.script, context, frame, true);
                                  -            rerun.script = getStoreRerunInfoScript(fnName);
                                  -            var jsdFunctionName = frame.script.functionName;
                                  -
                                  -            // now run the script that stores the rerun info in the page
                                  -            var result = {};
                                  -            var ok = frame.eval(rerun.script, context.window.location + "/RerunScript", 1, result);
                                  -
                                  -            // If the eval goes off somewhere wacky, the frame may be invalid by this point.
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("debugger.rerun "+ok+" and result: "+result+" for "+context.getName(), {result: result, rerun: rerun, functionName: jsdFunctionName});
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger.rerun FAILS for "+context.getName()+" because "+exc, {exc:exc, rerun: rerun});
                                  -        }
                                  -
                                  -        return rerun;
                                  -    },
                                  -
                                  -    resume: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_UI_LOOP)
                                  -            FBTrace.sysout("debugger.resume, context.stopped:"+context.stopped+"\n");
                                  -
                                  -        // this will cause us to return to just after the enterNestedEventLoop call
                                  -        var depth = fbs.exitNestedEventLoop();
                                  -        if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("debugger.resume, depth:"+depth+"\n");
                                  -    },
                                  -
                                  -    abort: function(context)
                                  -    {
                                  -        if (context.stopped)
                                  -        {
                                  -            context.aborted = true;
                                  -            this.thaw(context);
                                  -            this.resume(context);
                                  -            fbs.unPause(true);
                                  -        }
                                  -    },
                                  -
                                  -    stepOver: function(context)
                                  -    {
                                  -        if (!context.stoppedFrame || !context.stoppedFrame.isValid)
                                  -            return;
                                  -
                                  -        fbs.step(STEP_OVER, context.stoppedFrame, this);
                                  -        this.resume(context);
                                  -    },
                                  -
                                  -    stepInto: function(context)
                                  -    {
                                  -        if (!context.stoppedFrame || !context.stoppedFrame.isValid)
                                  -            return;
                                  -
                                  -        fbs.step(STEP_INTO, context.stoppedFrame, this);
                                  -        this.resume(context);
                                  -    },
                                  -
                                  -    stepOut: function(context)
                                  -    {
                                  -        if (!context.stoppedFrame || !context.stoppedFrame.isValid)
                                  -            return;
                                  -
                                  -        fbs.step(STEP_OUT, context.stoppedFrame);
                                  -        this.resume(context);
                                  -    },
                                  -
                                  -    suspend: function(context)
                                  -    {
                                  -        if (context.stopped)
                                  -            return;
                                  -        fbs.suspend(this, context);
                                  -    },
                                  -
                                  -    unSuspend: function(context)
                                  -    {
                                  -        fbs.stopStepping();  // TODO per context
                                  -    },
                                  -
                                  -    runUntil: function(context, sourceFile, lineNo)
                                  -    {
                                  -        if (FBTrace.DBG_UI_LOOP)
                                  -            FBTrace.sysout("runUntil "+lineNo+" @"+sourceFile);
                                  -
                                  -        if (!context.stoppedFrame || !context.stoppedFrame.isValid)
                                  -            return;
                                  -
                                  -        fbs.runUntil(sourceFile, lineNo, context.stoppedFrame, this);
                                  -        this.resume(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    freeze: function(context)
                                  -    {
                                  -        var executionContext = context.stoppedFrame.executionContext;
                                  -        try {
                                  -            executionContext.scriptsEnabled = false;
                                  -            this.suppressEventHandling(context);
                                  -            context.isFrozen = true;
                                  -
                                  -            // https://developer.mozilla.org/en/XUL_Tutorial/Focus_and_Selection#Getting_the_currently_focused_element
                                  -            if (context.window.document.commandDispatcher)
                                  -            {
                                  -                context.saveFocus = context.window.document.commandDispatcher.focusedElement;
                                  -                if (context.saveFocus)
                                  -                {
                                  -                    context.discardBlurEvents = function(event)
                                  -                    {
                                  -                        if (FBTrace.DBG_UI_LOOP)
                                  -                            FBTrace.sysout("debugger.freeze discard blur event "+context.discardOneMore+" while focus is "+context.window.document.commandDispatcher.focusedElement, event);
                                  -                        event.preventDefault();
                                  -                        event.stopPropagation();
                                  -                        if (context.discardOneMore)
                                  -                        {
                                  -                            context.window.removeEventListener('blur', context.discardBlurEvents, true);
                                  -                            delete context.discardOneMore;
                                  -                            delete context.saveFocus;
                                  -                        }
                                  -                    },
                                  -
                                  -                    context.window.addEventListener('blur', context.discardBlurEvents, true);
                                  -                }
                                  -
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -            {
                                  -                FBTrace.sysout("debugger.freeze context.saveFocus "+context.saveFocus, context.saveFocus);
                                  -                FBTrace.sysout("debugger.freeze try to disable scripts "+(context.eventSuppressor?"and events":"but not events")+" in "+context.getName()+" executionContext.tag "+executionContext.tag+".scriptsEnabled: "+executionContext.scriptsEnabled);
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // This attribute is only valid for contexts which implement nsIScriptContext.
                                  -            if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("debugger.freeze, freeze exception "+exc+" in "+context.getName(), exc);
                                  -        }
                                  -    },
                                  -
                                  -    suppressEventHandling: function(context)
                                  -    {
                                  -        if (context.window instanceof Ci.nsIInterfaceRequestor)
                                  -        {
                                  -            context.eventSuppressor = context.window.getInterface(Ci.nsIDOMWindowUtils);
                                  -            if (context.eventSuppressor)
                                  -                context.eventSuppressor.suppressEventHandling(true);
                                  -        }
                                  -    },
                                  -
                                  -    thaw: function(context)
                                  -    {
                                  -        try {
                                  -            if (context.isFrozen)
                                  -                delete context.isFrozen;
                                  -            else
                                  -                return; // bail, we did not freeze this context
                                  -
                                  -                var executionContext = context.stoppedFrame.executionContext;
                                  -            if (executionContext.isValid)
                                  -            {
                                  -                this.unsuppressEventHandling(context);
                                  -
                                  -                // Before we release JS, put the focus back
                                  -                if (context.saveFocus)
                                  -                {
                                  -                    context.window.focus();
                                  -                    context.saveFocus.focus();
                                  -                    context.discardOneMore = true;
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                {
                                  -                    var nowFocused = context.window.document.commandDispatcher ? context.window.document.commandDispatcher.focusedElement : null;
                                  -                    FBTrace.sysout("debugger.thaw context.saveFocus "+context.saveFocus+" vs "+nowFocused, context.saveFocus);
                                  -            }
                                  -
                                  -                executionContext.scriptsEnabled = true;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                    FBTrace.sysout("debugger.thaw "+executionContext.tag+" executionContext is not valid");
                                  -            }
                                  -            if (FBTrace.DBG_UI_LOOP)
                                  -                FBTrace.sysout("debugger.thaw try to enable scripts "+(context.eventSuppressor?"with events suppressed":"events enabled")+" in "+context.getName()+" executionContext.tag "+executionContext.tag+".scriptsEnabled: "+executionContext.scriptsEnabled);
                                  -        } catch (exc) {
                                  -            if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("debugger.stop, scriptsEnabled = true exception:", exc);
                                  -        }
                                  -    },
                                  -
                                  -    unsuppressEventHandling: function(context)
                                  -    {
                                  -        if (context.eventSuppressor)
                                  -        {
                                  -            context.eventSuppressor.suppressEventHandling(false);
                                  -            delete context.eventSuppressor;
                                  -        }
                                  -    },
                                  -
                                  -    toggleFreezeWindow: function(context)
                                  -    {
                                  -        if (!context.stopped) // then we need to break into debugger to get the executionContext
                                  -        {
                                  -            Firebug.Debugger.halt(function grabContext(frame)
                                  -            {
                                  -                context.stoppedFrame = frame;
                                  -                Firebug.Debugger.doToggleFreezeWindow(context);
                                  -                delete context.stoppedFrame;
                                  -            });
                                  -
                                  -            Firebug.Debugger.toggleReportTopLevel(context);
                                  -            Firebug.Debugger.suspend(context);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Debugger.doToggleFreezeWindow(context);
                                  -        }
                                  -    },
                                  -
                                  -    doToggleFreezeWindow: function(context)
                                  -    {
                                  -        if (context.isFrozen)
                                  -            Firebug.Debugger.unsuppressEventHandling(context);
                                  -        else
                                  -            Firebug.Debugger.suppressEventHandling(context);
                                  -    },
                                  -
                                  -    toggleReportTopLevel: function(context)
                                  -    {
                                  -        if (context.reportTopLevel)
                                  -            fbs.setTopLevelHook(null);
                                  -        else
                                  -        {
                                  -            fbs.setTopLevelHook(Firebug.Debugger, function reportTopLevel(frame)
                                  -            {
                                  -                Firebug.Console.logFormatted(["Javascript entered", frame.script.fileName, frame.line], context, "info");
                                  -            });
                                  -        }
                                  -    },
                                  -    setBreakOnNextCause: function(context, frame)  // TODO this should be in the panel (front end)
                                  -    {
                                  -        var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
                                  -        var analyzer = sourceFile.getScriptAnalyzer(frame.script);
                                  -        var lineNo = analyzer.getSourceLineFromFrame(context, frame);
                                  -
                                  -        context.breakingCause = {
                                  -                title: $STR("Break On Next"),
                                  -                message: $STR("Disable converts pause to disabled breakpoint"), //xxxHonza localization
                                  -                skipAction: function addSkipperAndGo()
                                  -                {
                                  -                    // a breakpoint that never hits, but prevents debugger keyword (see fbs.onDebugger as well)
                                  -                    var bp = fbs.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
                                  -                    fbs.disableBreakpoint(sourceFile.href, lineNo);
                                  -                    if (FBTrace.DBG_BP)
                                  -                        FBTrace.sysout("debugger.setBreakOnNextCause converted to disabled bp "+sourceFile.href+"@"+lineNo+" tag: "+frame.script.tag, bp);
                                  -
                                  -                    Firebug.Debugger.resume(context);
                                  -                },
                                  -                okAction: function justGo()
                                  -                {
                                  -                    Firebug.Debugger.resume(context);
                                  -                }
                                  -        };
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Breakpoints
                                  -
                                  -    setBreakpoint: function(sourceFile, lineNo)
                                  -    {
                                  -        fbs.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
                                  -    },
                                  -
                                  -    clearBreakpoint: function(sourceFile, lineNo)
                                  -    {
                                  -        fbs.clearBreakpoint(sourceFile.href, lineNo);
                                  -    },
                                  -
                                  -    setErrorBreakpoint: function(sourceFile, line)
                                  -    {
                                  -        fbs.setErrorBreakpoint(sourceFile, line, Firebug.Debugger);
                                  -    },
                                  -
                                  -    clearErrorBreakpoint: function(sourceFile, line)
                                  -    {
                                  -        fbs.clearErrorBreakpoint(sourceFile.href, line, Firebug.Debugger);
                                  -    },
                                  -
                                  -    clearAllBreakpoints: function(context)
                                  -    {
                                  -        if (context)
                                  -        {
                                  -            var sourceFiles = sourceFilesAsArray(context.sourceFileMap);
                                  -            fbs.clearAllBreakpoints(sourceFiles, Firebug.Debugger);
                                  -        }
                                  -        else
                                  -        {
                                  -            fbs.enumerateBreakpoints(null, {call: function(url, lineNo, bp) // null means all urls
                                  -            {
                                  -                if (bp.debuggerName !== Firebug.Debugger.debuggerName) // skip breakpoints of other debuggers.
                                  -                    return;
                                  -
                                  -                if (Firebug.filterSystemURLs) // then there are not system urls, clear all
                                  -                    fbs.clearBreakpoint(url, lineNo);
                                  -                else
                                  -                {
                                  -                    if (!isSystemURL(url))  // if there are system urls, leave them
                                  -                        fbs.clearBreakpoint(url, lineNo);
                                  -                }
                                  -            }});
                                  -        }
                                  -    },
                                  -
                                  -    enableAllBreakpoints: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_BP)
                                  -            FBTrace.sysout("enableAllBreakpoints sourceFileMap:", context.sourceFileMap);
                                  -        for (var url in context.sourceFileMap)
                                  -        {
                                  -            fbs.enumerateBreakpoints(url, {call: function(url, lineNo)
                                  -            {
                                  -                fbs.enableBreakpoint(url, lineNo);
                                  -            }});
                                  -        }
                                  -    },
                                  -
                                  -    disableAllBreakpoints: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -        {
                                  -            fbs.enumerateBreakpoints(url, {call: function(url, lineNo)
                                  -            {
                                  -                fbs.disableBreakpoint(url, lineNo);
                                  -            }});
                                  -        }
                                  -    },
                                  -
                                  -    getBreakpointCount: function(context)
                                  -    {
                                  -        var count = 0;
                                  -        for (var url in context.sourceFileMap)
                                  -        {
                                  -            fbs.enumerateBreakpoints(url,
                                  -            {
                                  -                call: function(url, lineNo)
                                  -                {
                                  -                    ++count;
                                  -                }
                                  -            });
                                  -
                                  -            fbs.enumerateErrorBreakpoints(url,
                                  -            {
                                  -                call: function(url, lineNo)
                                  -                {
                                  -                    ++count;
                                  -                }
                                  -            });
                                  -        }
                                  -        return count;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Debugging and monitoring
                                  -
                                  -    traceAll: function(context)
                                  -    {
                                  -        fbs.traceAll(sourceURLsAsArray(context), this);
                                  -    },
                                  -
                                  -    untraceAll: function(context)
                                  -    {
                                  -        fbs.untraceAll(this);
                                  -    },
                                  -
                                  -    monitorFunction: function(fn, mode)
                                  -    {
                                  -        if (typeof(fn) == "function" || fn instanceof Function)
                                  -        {
                                  -            var script = findScriptForFunctionInContext(Firebug.currentContext, fn);
                                  -            if (script)
                                  -                this.monitorScript(fn, script, mode);
                                  -            else
                                  -                Firebug.Console.logFormatted(["Firebug unable to locate jsdIScript for function", fn], Firebug.currentContext, "info");
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Console.logFormatted(["Firebug.Debugger.monitorFunction requires a function", fn], Firebug.currentContext, "info");
                                  -        }
                                  -    },
                                  -
                                  -    unmonitorFunction: function(fn, mode)
                                  -    {
                                  -        if (typeof(fn) == "function" || fn instanceof Function)
                                  -        {
                                  -            var script = findScriptForFunctionInContext(Firebug.currentContext, fn);
                                  -            if (script)
                                  -                this.unmonitorScript(fn, script, mode);
                                  -        }
                                  -    },
                                  -
                                  -    monitorScript: function(fn, script, mode)
                                  -    {
                                  -        var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(Firebug.currentContext, script);
                                  -        if (scriptInfo)
                                  -        {
                                  -            if (mode == "debug")
                                  -                this.setBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
                                  -            else if (mode == "monitor")
                                  -                fbs.monitor(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
                                  -        }
                                  -    },
                                  -
                                  -    unmonitorScript: function(fn, script, mode)
                                  -    {
                                  -        var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(Firebug.currentContext, script);
                                  -        if (scriptInfo)
                                  -        {
                                  -            if (mode == "debug")
                                  -                this.clearBreakpoint(scriptInfo.sourceFile, scriptInfo.lineNo);
                                  -            else if (mode == "monitor")
                                  -                fbs.unmonitor(scriptInfo.sourceFile.href, scriptInfo.lineNo);
                                  -        }
                                  -    },
                                  -
                                  -    traceCalls: function(context, fn)
                                  -    {
                                  -        if (typeof(fn) == "function" || fn instanceof Function)
                                  -        {
                                  -            var script = findScriptForFunctionInContext(context, fn);
                                  -            if (script)
                                  -                this.traceScriptCalls(context, script);
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("debugger.traceCalls no script found for "+fn, fn);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    untraceCalls: function(context, fn)
                                  -    {
                                  -        if (typeof(fn) == "function" || fn instanceof Function)
                                  -        {
                                  -            var script = findScriptForFunctionInContext(context, fn);
                                  -            if (script)
                                  -                this.untraceScriptCalls(context, script);
                                  -        }
                                  -    },
                                  -
                                  -    traceScriptCalls: function(context, script)
                                  -    {
                                  -        var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
                                  -        if (scriptInfo)
                                  -            fbs.traceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
                                  -    },
                                  -
                                  -    untraceScriptCalls: function(context, script)
                                  -    {
                                  -        var scriptInfo = Firebug.SourceFile.getSourceFileAndLineByScript(context, script);
                                  -        if (scriptInfo)
                                  -            fbs.untraceCalls(scriptInfo.sourceFile, scriptInfo.lineNo, Firebug.Debugger);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // UI Stuff
                                  -
                                  -    /*
                                  -     * Called when a nestedEventLoop begins
                                  -     */
                                  -    startDebugging: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("startDebugging enter context.stopped:"+context.stopped+" for context: "+context.getName()+"\n");
                                  -        try {
                                  -
                                  -            fbs.lockDebugger();
                                  -
                                  -            context.executingSourceFile = Firebug.SourceFile.getSourceFileByScript(context, context.stoppedFrame.script);
                                  -
                                  -            if (!context.executingSourceFile)  // bail out, we don't want the user stuck in debug with out source.
                                  -            {
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                    FBTrace.sysout("startDebugging resuming, no sourceFile for "+context.stoppedFrame.script.fileName, context.stoppedFrame.script.functionSource);
                                  -                this.resume(context);
                                  -                return;
                                  -            }
                                  -
                                  -            var currentBreakable = Firebug.chrome.getGlobalAttribute("cmd_breakOnNext", "breakable");
                                  -
                                  -            if (FBTrace.DBG_BP)
                                  -                FBTrace.sysout("debugger.startDebugging; currentBreakable "+currentBreakable+" in " + context.getName());
                                  -
                                  -            if (currentBreakable == "false") // then we are armed but we broke
                                  -                Firebug.chrome.setGlobalAttribute("cmd_breakOnNext", "breakable", "true");
                                  -
                                  -            if (context != Firebug.currentContext || Firebug.isDetached())
                                  -                Firebug.selectContext(context);  // Make Firebug.currentContext = context and sync the UI
                                  -
                                  -            if (Firebug.isMinimized()) // then open the UI to show we are stopped
                                  -                Firebug.unMinimize();
                                  -
                                  -            this.syncCommands(context);
                                  -            this.syncListeners(context);
                                  -
                                  -            // Update Break on Next lightning.
                                  -            var panel = context.getPanel("script", true);
                                  -            Firebug.Breakpoint.updatePanelTab(panel, false);
                                  -            Firebug.chrome.syncPanel("script");  // issue 3463
                                  -            Firebug.chrome.select(context.stoppedFrame, "script", null, true);
                                  -            Firebug.chrome.focus();
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("Resuming debugger: error during debugging loop: "+exc, exc);
                                  -            Firebug.Console.log("Resuming debugger: error during debugging loop: "+exc);
                                  -            this.resume(context);
                                  -        }
                                  -
                                  -        dispatch(this.fbListeners, "onStartDebugging", [context]);
                                  -
                                  -        if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("startDebugging exit context.stopped:"+context.stopped+" for context: "+context.getName()+"\n");
                                  -    },
                                  -
                                  -    /*
                                  -     * Called in the main event loop, from jsd, after we have exited the nested event loop
                                  -     */
                                  -
                                  -    stopDebugging: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("stopDebugging enter context: "+context.getName()+"\n");
                                  -        try
                                  -        {
                                  -            fbs.unlockDebugger();
                                  -
                                  -            // If the user reloads the page while the debugger is stopped, then
                                  -            // the current context will be destroyed just before
                                  -            if (context && context.window && !context.aborted)
                                  -            {
                                  -                delete context.stopped;
                                  -                delete context.stoppedFrame;
                                  -                delete context.currentFrame;
                                  -                context.executingSourceFile = null;
                                  -                delete context.breakLineNumber;
                                  -
                                  -                var chrome = Firebug.chrome;
                                  -
                                  -                this.syncCommands(context);
                                  -                this.syncListeners(context);
                                  -
                                  -                var panel = context.getPanel("script", true);
                                  -                if (panel && panel == Firebug.chrome.getSelectedPanel())
                                  -                    panel.showNoStackFrame(); // unhighlight and remove toolbar-status line
                                  -
                                  -                if (panel)
                                  -                    panel.highlight(false);
                                  -
                                  -                chrome.syncSidePanels();  // after main panel is all updated.
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_UI_LOOP)
                                  -                    FBTrace.sysout("debugger.stopDebugging else "+context.getName()+" "+safeGetWindowLocation(context.window));
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_UI_LOOP) FBTrace.sysout("debugger.stopDebugging FAILS", exc);
                                  -            // If the window is closed while the debugger is stopped,
                                  -            // then all hell will break loose here
                                  -            ERROR(exc);
                                  -        }
                                  -    },
                                  -
                                  -    syncCommands: function(context)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        if (!chrome)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger.syncCommand, context with no chrome: "+context.getGlobalScope());
                                  -            return;
                                  -        }
                                  -
                                  -        if (context.stopped)
                                  -        {
                                  -            chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "true");
                                  -            chrome.setGlobalAttribute("cmd_rerun", "disabled", "false");
                                  -            chrome.setGlobalAttribute("cmd_resumeExecution", "disabled", "false");
                                  -            chrome.setGlobalAttribute("cmd_stepOver", "disabled", "false");
                                  -            chrome.setGlobalAttribute("cmd_stepInto", "disabled", "false");
                                  -            chrome.setGlobalAttribute("cmd_stepOut", "disabled", "false");
                                  -        }
                                  -        else
                                  -        {
                                  -            chrome.setGlobalAttribute("fbDebuggerButtons", "stopped", "false");
                                  -            chrome.setGlobalAttribute("cmd_rerun", "disabled", "true");
                                  -            chrome.setGlobalAttribute("cmd_stepOver", "disabled", "true");
                                  -            chrome.setGlobalAttribute("cmd_stepInto", "disabled", "true");
                                  -            chrome.setGlobalAttribute("cmd_stepOut", "disabled", "true");
                                  -            chrome.setGlobalAttribute("cmd_resumeExecution", "disabled", "true");
                                  -        }
                                  -    },
                                  -
                                  -    syncListeners: function(context)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        if (context.stopped)
                                  -            this.attachListeners(context, chrome);
                                  -        else
                                  -            this.detachListeners(context, chrome);
                                  -    },
                                  -
                                  -    attachListeners: function(context, chrome)
                                  -    {
                                  -        this.keyListeners =
                                  -        [
                                  -            chrome.keyCodeListen("F8", null, bind(this.resume, this, context), true),
                                  -            chrome.keyListen("/", isControl, bind(this.resume, this, context)),
                                  -            chrome.keyCodeListen("F10", null, bind(this.stepOver, this, context), true),
                                  -            chrome.keyListen("'", isControl, bind(this.stepOver, this, context)),
                                  -            chrome.keyCodeListen("F11", null, bind(this.stepInto, this, context)),
                                  -            chrome.keyListen(";", isControl, bind(this.stepInto, this, context)),
                                  -            chrome.keyCodeListen("F11", isShift, bind(this.stepOut, this, context)),
                                  -            chrome.keyListen(",", isControlShift, bind(this.stepOut, this, context))
                                  -        ];
                                  -    },
                                  -
                                  -    detachListeners: function(context, chrome)
                                  -    {
                                  -        if (this.keyListeners)
                                  -        {
                                  -            for (var i = 0; i < this.keyListeners.length; ++i)
                                  -                chrome.keyIgnore(this.keyListeners[i]);
                                  -            delete this.keyListeners;
                                  -        }
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel && panel.name == "script") // this test on name is a sign that this code belongs in panel.show()
                                  -        {
                                  -            this.syncCommands(panel.context);
                                  -            this.ableWatchSidePanel(panel.context);
                                  -            if (FBTrace.DBG_PANELS) FBTrace.sysout("debugger.showPanel this.location:"+this.location);
                                  -        }
                                  -    },
                                  -
                                  -    suspendFirebug: function()
                                  -    {
                                  -        Firebug.suspendFirebug();
                                  -    },
                                  -
                                  -    resumeFirebug: function()
                                  -    {
                                  -        Firebug.resumeFirebug();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsWindow: function(win)
                                  -    {
                                  -        if (!this.isAlwaysEnabled())
                                  -            return false;
                                  -
                                  -        var context = ( (win && TabWatcher) ? TabWatcher.getContextByWindow(win) : null);
                                  -
                                  -        this.breakContext = context;
                                  -        return !!context;
                                  -    },
                                  -
                                  -    supportsGlobal: function(frameWin) // This is call from fbs for almost all fbs operations
                                  -    {
                                  -        var context = ( (frameWin && TabWatcher) ? TabWatcher.getContextByWindow(frameWin) : null);
                                  -        if (!context)
                                  -            return false;
                                  -
                                  -        context.jsDebuggerActive = true;
                                  -
                                  -        if (!Firebug.Console.injector.isAttached(context, frameWin))
                                  -        {
                                  -            var win = frameWin.wrappedJSObject ? frameWin.wrappedJSObject : frameWin;
                                  -            this.injectConsole(context, win);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("debugger.supportsGlobal console isAttached to "+safeGetWindowLocation(frameWin)+" in  "+context.getName());
                                  -        }
                                  -
                                  -        this.breakContext = context;
                                  -        //FBTrace.sysout("debugger.js this.breakContext "+this.breakContext.getName());
                                  -        return true;
                                  -    },
                                  -
                                  -    injectConsole: function(context, frameWin)
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            // This is how the console is injected ahead of JS running on the page
                                  -            fbs.filterConsoleInjections = true;
                                  -            try
                                  -            {
                                  -                var consoleReady = Firebug.Console.isReadyElsePreparing(context, frameWin);
                                  -            }
                                  -            catch(exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("debugger.supportsGlobal injectConsole FAILS: "+exc, exc);
                                  -            }
                                  -            finally
                                  -            {
                                  -                fbs.filterConsoleInjections = false;
                                  -            }
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("debugger.supportsGlobal injectConsole consoleReady:"+consoleReady+" jsDebuggerActive: "+context.jsDebuggerActive, frameWin);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("debugger.supportsGlobal injectConsole console NOT enabled ", frameWin);
                                  -        }
                                  -    },
                                  -
                                  -    onLock: function(state)
                                  -    {
                                  -        // XXXjoe For now, trying to see if it's ok to have multiple contexts
                                  -        // debugging simultaneously - otherwise we need this
                                  -        //if (this.context != this.debugContext)
                                  -        {
                                  -            // XXXjoe Disable step/continue buttons
                                  -        }
                                  -    },
                                  -
                                  -    onBreak: function(frame, type)
                                  -    {
                                  -        try {
                                  -            var context = this.breakContext;
                                  -
                                  -            if (FBTrace.DBG_BP || (!context && FBTrace.DBG_FBS_ERRORS) )
                                  -                FBTrace.sysout("debugger.onBreak breakContext: " + (context ? context.getName() : " none!"), getJSDStackDump(frame) );
                                  -
                                  -            delete this.breakContext;
                                  -
                                  -            if (!context)
                                  -                return RETURN_CONTINUE;
                                  -
                                  -            if (type == TYPE_DEBUGGER_KEYWORD)
                                  -            {
                                  -                if (frame.functionName === 'firebugDebuggerTracer')
                                  -                    return this.debuggerTracer(context, frame);
                                  -                else
                                  -                    this.setDebuggerKeywordCause(context, frame);
                                  -            }
                                  -
                                  -            return this.stop(context, frame, type);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_BP)
                                  -                FBTrace.sysout("debugger.onBreak FAILS", exc);
                                  -            throw exc;
                                  -        }
                                  -    },
                                  -
                                  -    debuggerTracer: function(context, frame)
                                  -    {
                                  -        var trace = FBL.getCorrectedStackTrace(frame, context);
                                  -        if (FBTrace.DBG_ERRORLOG)
                                  -            FBTrace.sysout("debugger.firebugDebuggerTracer corrected trace.frames "+trace.frames.length, trace.frames);
                                  -        if (trace)
                                  -        {
                                  -            trace.frames = trace.frames.slice(1); // drop the firebugDebuggerTracer and reorder
                                  -            if (FBTrace.DBG_ERRORLOG)
                                  -                FBTrace.sysout("debugger.firebugDebuggerTracer dropped tracer trace.frames "+trace.frames.length, trace.frames);
                                  -
                                  -            if (context.window.wrappedJSObject._firebugStackTrace == "requested")
                                  -            {
                                  -                trace.frames = trace.frames.slice(1);  // drop console.error() see consoleInjected.js
                                  -                if (FBTrace.DBG_ERRORLOG)
                                  -                    FBTrace.sysout("debugger.firebugDebuggerTracer requested trace.frames "+trace.frames.length, trace.frames);
                                  -                context.stackTrace = trace;
                                  -            }
                                  -            else
                                  -                Firebug.Console.log(trace, context, "stackTrace");
                                  -        }
                                  -
                                  -        if(FBTrace.DBG_BP)
                                  -            FBTrace.sysout("debugger.onBreak "+(trace?"debugger trace":" debugger no trace!"));
                                  -
                                  -        return RETURN_CONTINUE;
                                  -    },
                                  -    /*
                                  -     * for |debugger;| keyword offer the skip/continue dialog (optionally?)
                                  -     */
                                  -    setDebuggerKeywordCause: function(context, frame)
                                  -    {
                                  -        var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
                                  -        if (!sourceFile)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger.setDebuggerKeywordCause FAILS, no sourceFile for "+frame.script.tag+"@"+frame.script.fileName+" in "+context.getName());
                                  -            return;
                                  -        }
                                  -
                                  -        var analyzer = sourceFile.getScriptAnalyzer(frame.script);
                                  -        var lineNo = analyzer.getSourceLineFromFrame(context, frame);
                                  -
                                  -        context.breakingCause = {
                                  -                title: $STR("debugger keyword"),
                                  -                message: $STR("Disable converts keyword to disabled breakpoint"), //xxxHonza localization
                                  -                skipAction: function addSkipperAndGo()
                                  -                {
                                  -                    // a breakpoint that never hits, but prevents debugger keyword (see fbs.onDebugger as well)
                                  -                    var bp = fbs.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
                                  -                    fbs.disableBreakpoint(sourceFile.href, lineNo);
                                  -                    if (FBTrace.DBG_BP)
                                  -                        FBTrace.sysout("debugger.onBreak converted to disabled bp "+sourceFile.href+"@"+lineNo+" tag: "+frame.script.tag, bp);
                                  -
                                  -                    Firebug.Debugger.resume(context);
                                  -                },
                                  -                okAction: function justGo()
                                  -                {
                                  -                    Firebug.Debugger.resume(context);
                                  -                }
                                  -        };
                                  -    },
                                  -
                                  -    onThrow: function(frame, rv)
                                  -    {
                                  -        // onThrow is called for throw and for any catch that does not succeed.
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        if (!context)
                                  -        {
                                  -            FBTrace.sysout("debugger.onThrow, no context, try to get from frame\n");
                                  -            context = this.getContextByFrame(frame);
                                  -        }
                                  -        if (FBTrace.DBG_BP) FBTrace.sysout("debugger.onThrow context:"+(context?context.getName():"undefined")+"\n");
                                  -        if (!context)
                                  -            return RETURN_CONTINUE_THROW;
                                  -
                                  -        if (!fbs.trackThrowCatch)
                                  -            return RETURN_CONTINUE_THROW;
                                  -
                                  -        try
                                  -        {
                                  -            var isCatch = this.isCatchFromPreviousThrow(frame, context);
                                  -            if (!isCatch)
                                  -            {
                                  -                context.thrownStackTrace = getCorrectedStackTrace(frame, context);
                                  -                if (FBTrace.DBG_BP) FBTrace.sysout("debugger.onThrow reset context.thrownStackTrace", context.thrownStackTrace.frames);
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_BP) FBTrace.sysout("debugger.onThrow isCatch\n");
                                  -            }
                                  -        }
                                  -        catch  (exc)
                                  -        {
                                  -            FBTrace.sysout("onThrow FAILS: "+exc+"\n");
                                  -        }
                                  -
                                  -        if (dispatch2(this.fbListeners,"onThrow",[context, frame, rv]))
                                  -            return this.stop(context, frame, TYPE_THROW, rv);
                                  -        return RETURN_CONTINUE_THROW;
                                  -    },
                                  -
                                  -    isCatchFromPreviousThrow: function(frame, context)
                                  -    {
                                  -        if (context.thrownStackTrace)
                                  -        {
                                  -            var trace = context.thrownStackTrace.frames;
                                  -            if (trace.length > 1)  // top of stack is [0]
                                  -            {
                                  -                var curFrame = frame;
                                  -                var curFrameSig = curFrame.script.tag +"."+curFrame.pc;
                                  -                for (var i = 1; i < trace.length; i++)
                                  -                {
                                  -                    var preFrameSig = trace[i].signature();
                                  -                    if (FBTrace.DBG_ERRORS && FBTrace.DBG_STACK) FBTrace.sysout("debugger.isCatchFromPreviousThrow "+curFrameSig+"=="+preFrameSig+"\n");
                                  -                    if (curFrameSig == preFrameSig)
                                  -                    {
                                  -                        return true;  // catch from previous throw (or do we need to compare whole stack?
                                  -                    }
                                  -                }
                                  -                // We looked at the previous stack and did not match the current frame
                                  -            }
                                  -        }
                                  -       return false;
                                  -    },
                                  -
                                  -    onMonitorScript: function(frame)
                                  -    {
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        if (!context)
                                  -            context = this.getContextByFrame(frame);
                                  -        if (!context)
                                  -            return RETURN_CONTINUE;
                                  -
                                  -        frame = getStackFrame(frame, context);
                                  -
                                  -        dispatch(this.fbListeners,"onMonitorScript",[context, frame]);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (!context)
                                  -            context = this.getContextByFrame(frame);
                                  -        if (!context)
                                  -            return RETURN_CONTINUE;
                                  -
                                  -        frame = getStackFrame(frame, context);
                                  -
                                  -        dispatch(this.fbListeners,"onFunctionCall",[context, frame, depth, calling]);
                                  -
                                  -        return context;  // returned as first arg on next call from same trace
                                  -    },
                                  -
                                  -    onError: function(frame, error)
                                  -    {
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        try
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("debugger.onError: "+error.errorMessage+" in "+(context?context.getName():"no context"), error);
                                  -
                                  -            if (reTooMuchRecursion.test(error.errorMessage))
                                  -                frame = fbs.discardRecursionFrames(frame);
                                  -
                                  -            Firebug.errorStackTrace = getCorrectedStackTrace(frame, context);
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger.onError errorStackTrace ", Firebug.errorStackTrace);
                                  -
                                  -            delete context.breakingCause;
                                  -
                                  -            if (Firebug.breakOnErrors)
                                  -            {
                                  -                var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, frame.script);
                                  -                if (!sourceFile)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("debugger.breakon Errors no sourceFile for "+frame.script.tag+"@"+frame.script.fileName);
                                  -                    return;
                                  -                }
                                  -                var analyzer = sourceFile.getScriptAnalyzer(frame.script);
                                  -                var lineNo = analyzer.getSourceLineFromFrame(context, frame);
                                  -
                                  -                var doBreak = true;
                                  -                fbs.enumerateBreakpoints(sourceFile.href, {call: function(url, line, props, scripts) {
                                  -                    if (FBTrace.DBG_FBS_BP)
                                  -                        FBTrace.sysout("debugger.breakon Errors bp "+url+"@"+line+" scripts "+(scripts?scripts.length:"none"));
                                  -                    if(line === lineNo)
                                  -                        doBreak = false;
                                  -                }});
                                  -
                                  -                if (FBTrace.DBG_BP)
                                  -                    FBTrace.sysout("debugger.breakon Errors "+doBreak+" for "+sourceFile.href+"@"+lineNo);
                                  -
                                  -                if (doBreak)
                                  -                {
                                  -                    context.breakingCause = {
                                  -                        title: $STR("Break on Error"),
                                  -                        message: error.message,
                                  -                        copyAction: bindFixed(FirebugReps.ErrorMessage.copyError,
                                  -                            FirebugReps.ErrorMessage, error),
                                  -                        skipAction: function addSkipperAndGo()
                                  -                        {
                                  -                            // a breakpoint that never hits, but prevents BON for errors
                                  -                            var bp = fbs.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
                                  -                            fbs.disableBreakpoint(sourceFile.href, lineNo);
                                  -                            if (FBTrace.DBG_BP)
                                  -                                FBTrace.sysout("debugger.breakon Errors set "+sourceFile.href+"@"+lineNo+" tag: "+frame.script.tag, bp);
                                  -
                                  -                            Firebug.Debugger.resume(context);
                                  -                        },
                                  -                        okAction: function justGo()
                                  -                        {
                                  -                            Firebug.Debugger.resume(context);
                                  -                        }
                                  -                    };
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("debugger.onError getCorrectedStackTrace FAILED: "+exc, exc);
                                  -        }
                                  -
                                  -        var hookReturn = dispatch2(this.fbListeners,"onError",[context, frame, error]);
                                  -
                                  -        if (!context.breakingCause)
                                  -            return 0;
                                  -
                                  -        if (Firebug.breakOnErrors)
                                  -        {
                                  -            // Switch of Break on Next tab lightning.
                                  -            var panel = context.getPanel("console", true);
                                  -            //Firebug.Breakpoint.updatePanelTab(panel, false);
                                  -
                                  -            return -1;  // break
                                  -        }
                                  -
                                  -        if (hookReturn)
                                  -            return hookReturn;
                                  -
                                  -        return -2; /* let firebug service decide to break or not */
                                  -    },
                                  -
                                  -    onUncaughtException: function(errorInfo)
                                  -    {
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        Firebug.Errors.logScriptError(context, errorInfo, false);
                                  -        return -2;
                                  -    },
                                  -
                                  -    onXULScriptCreated: function(frame, outerScript, innerScriptEnumerator)
                                  -    {
                                  -        try
                                  -        {
                                  -            var context = this.breakContext;
                                  -            delete this.breakContext;
                                  -
                                  -            var sourceFile = context.sourceFileMap[outerScript.fileName];
                                  -            if (sourceFile)
                                  -            {
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("debugger.onXULScriptCreated reuse sourcefile="+sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")"+"\n");
                                  -                Firebug.SourceFile.addScriptsToSourceFile(sourceFile, null, innerScriptEnumerator);
                                  -            }
                                  -            else
                                  -            {
                                  -                sourceFile = new Firebug.XULSourceFile(outerScript.fileName, outerScript, innerScriptEnumerator);
                                  -                this.watchSourceFile(context, sourceFile);
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("debugger.onXULScriptCreated script.fileName="+outerScript.fileName+" in "+context.getName()+" "+sourceFile);
                                  -
                                  -            dispatch(this.fbListeners,"onXULScriptCreated",[context, frame, sourceFile.href]);
                                  -            return sourceFile;
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_TOPLEVEL || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("onXULScriptCreated FaILS "+e, e);
                                  -        }
                                  -    },
                                  -
                                  -    onEvalScriptCreated: function(frame, outerScript, innerScripts)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (FBTrace.DBG_EVAL) FBTrace.sysout("debugger.onEvalLevelScript script.fileName="+outerScript.fileName+"\n");
                                  -            var context = this.breakContext;
                                  -            delete this.breakContext;
                                  -
                                  -            var sourceFile = this.getEvalLevelSourceFile(frame, context, innerScripts);
                                  -
                                  -            if (FBTrace.DBG_EVAL)
                                  -                FBTrace.sysout("debugger.onEvalScriptCreated url="+sourceFile.href, FBL.getCorrectedStackTrace(frame, context));
                                  -
                                  -            dispatch(this.fbListeners,"onEvalScriptCreated",[context, frame, sourceFile.href]);
                                  -            return sourceFile;
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_EVAL || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("onEvalScriptCreated FaILS ", e);
                                  -        }
                                  -    },
                                  -
                                  -    onEventScriptCreated: function(frame, outerScript, innerScripts)
                                  -    {
                                  -        if (FBTrace.DBG_EVENTS) FBTrace.sysout("debugger.onEventScriptCreated script.fileName="+outerScript.fileName+"\n");
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        var script = frame.script;
                                  -        var creatorURL = normalizeURL(frame.script.fileName);
                                  -        var innerScriptArray = [];
                                  -        try {
                                  -            var source = script.functionSource;
                                  -
                                  -            while (innerScripts.hasMoreElements())
                                  -            {
                                  -                var inner = innerScripts.getNext();
                                  -                source += "\n"+inner.functionSource;
                                  -                innerScriptArray.push(inner);
                                  -            }
                                  -
                                  -        } catch (exc) {
                                  -            /*Bug 426692 */
                                  -            var source = creatorURL + "/"+getUniqueId();
                                  -        }
                                  -
                                  -        var lines = splitLines(source);
                                  -
                                  -        var urlDescribed = this.getDynamicURL(context, normalizeURL(frame.script.fileName), lines, "event");
                                  -        var url = urlDescribed.href;
                                  -
                                  -        context.sourceCache.invalidate(url);
                                  -        context.sourceCache.storeSplitLines(url, lines);
                                  -
                                  -        var sourceFile = new Firebug.EventSourceFile(url, frame.script, "event:"+script.functionName+"."+script.tag, lines, new ArrayEnumerator(innerScriptArray));
                                  -        this.watchSourceFile(context, sourceFile);
                                  -
                                  -        if (FBTrace.DBG_EVENTS)
                                  -            FBTrace.sysout("debugger.onEventScriptCreated url="+sourceFile.href+"\n");
                                  -
                                  -        if (FBTrace.DBG_EVENTS)
                                  -             FBTrace.sysout("debugger.onEventScriptCreated sourceFileMap:", context.sourceFileMap);
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger.onEventScriptCreated sourcefile="+sourceFile.toString()+" -> "+context.getName()+"\n");
                                  -
                                  -        dispatch(this.fbListeners,"onEventScriptCreated",[context, frame, url]);
                                  -        return sourceFile;
                                  -    },
                                  -
                                  -    // We just compiled a bunch of JS, eg a script tag in HTML.  We are about to run the outerScript.
                                  -    onTopLevelScriptCreated: function(frame, outerScript, innerScripts)
                                  -    {
                                  -        if (FBTrace.DBG_TOPLEVEL) FBTrace.sysout("debugger("+this.debuggerName+").onTopLevelScriptCreated script.fileName="+outerScript.fileName+"\n");
                                  -        var context = this.breakContext;
                                  -        delete this.breakContext;
                                  -
                                  -        // This is our only chance to get the linetable for the outerScript since it will run and be GC next.
                                  -        var script = frame.script;
                                  -        var url = normalizeURL(script.fileName);
                                  -
                                  -        if (FBTrace.DBG_TOPLEVEL) FBTrace.sysout("debugger.onTopLevelScriptCreated frame.script.tag="+frame.script.tag+" has url="+url);
                                  -
                                  -        var isInline = false;
                                  -        /* The primary purpose here was to deal with http://code.google.com/p/fbug/issues/detail?id=2912
                                  -         * This approach could be applied to inline scripts, so I'll leave the code here until we decide.
                                  -        iterateWindows(context.window, function isInlineScriptTag(win)
                                  -        {
                                  -            var location = safeGetWindowLocation(win);
                                  -            if (location === url)
                                  -            {
                                  -                isInline = true;
                                  -                return isInline;
                                  -            }
                                  -        });
                                  -    */
                                  -        if (FBTrace.DBG_TOPLEVEL) FBTrace.sysout("debugger.onTopLevelScriptCreated has inLine:"+isInline+" url="+url);
                                  -
                                  -        if (isInline) // never true see above
                                  -        {
                                  -            var href = url +"/"+context.dynamicURLIndex++;
                                  -            sourceFile = new Firebug.ScriptTagAppendSourceFile(href, script, script.lineExtent, innerScripts);
                                  -            this.watchSourceFile(context, sourceFile);
                                  -            context.pendingScriptTagSourceFile = sourceFile;
                                  -        }
                                  -        else
                                  -        {
                                  -            var sourceFile = context.sourceFileMap[url];
                                  -            if (sourceFile && (sourceFile instanceof Firebug.TopLevelSourceFile) )  // Multiple script tags in HTML or duplicate .js file names.
                                  -            {
                                  -                    if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("debugger.onTopLevelScriptCreated reuse sourcefile="+sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")"+"\n");
                                  -                    if (!sourceFile.outerScript || !sourceFile.outerScript.isValid)
                                  -                        sourceFile.outerScript = outerScript;
                                  -                    Firebug.SourceFile.addScriptsToSourceFile(sourceFile, outerScript, innerScripts);
                                  -            }
                                  -            else
                                  -            {
                                  -                sourceFile = new Firebug.TopLevelSourceFile(url, script, script.lineExtent, innerScripts);
                                  -                this.watchSourceFile(context, sourceFile);
                                  -                if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("debugger.onTopLevelScriptCreated create sourcefile="+sourceFile.toString()+" -> "+context.getName()+" ("+context.uid+")"+"\n");
                                  -            }
                                  -        }
                                  -
                                  -        dispatch(this.fbListeners,"onTopLevelScriptCreated",[context, frame, sourceFile.href]);
                                  -        return sourceFile;
                                  -    },
                                  -
                                  -    getContextByFrame: function(frame)
                                  -    {
                                  -        if (FBTrace.DBG_BP)
                                  -            FBTrace.sysout("debugger.getContextByFrame");
                                  -        var win = fbs.getOutermostScope(frame);
                                  -        return win ? TabWatcher.getContextByWindow(win) : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    watchSourceFile: function(context, sourceFile)
                                  -    {
                                  -        context.addSourceFile(sourceFile);  // store in the context and notify listeners
                                  -        //fbs.watchSourceFile(sourceFile);    // tell the service to watch this file
                                  -    },
                                  -
                                  -    unwatchSourceFile: function(context, sourceFile)
                                  -    {
                                  -        //fbs.unwatchSourceFile(sourceFile);
                                  -        context.removeSourceFile(sourceFile);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onToggleBreakpoint: function(url, lineNo, isSet, props)
                                  -    {
                                  -        if (props.debuggerName != this.debuggerName) // then not for us
                                  -        {
                                  -            if (FBTrace.DBG_BP) FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint ignoring toggle for "+props.debuggerName+" target "+lineNo+"@"+url+"\n");
                                  -            return;
                                  -        }
                                  -
                                  -        var found = false;
                                  -        for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -        {
                                  -            var context = TabWatcher.contexts[i];
                                  -            var sourceFile = context.sourceFileMap[url];
                                  -            if (sourceFile) {
                                  -                if (FBTrace.DBG_BP)
                                  -                    FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint found context "+context.getName());
                                  -
                                  -                if (!isSet && context.dynamicURLhasBP)
                                  -                    this.checkDynamicURLhasBP(context);
                                  -
                                  -                var panel = context.getPanel("script", true);
                                  -                if (!panel)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("onToggleBreakpoint no panel in context "+context.getName());
                                  -                    continue;
                                  -                }
                                  -
                                  -                panel.context.invalidatePanels("breakpoints");
                                  -
                                  -                var sourceBox = panel.getSourceBoxByURL(url);
                                  -                if (!sourceBox)
                                  -                {
                                  -                    if (FBTrace.DBG_BP)
                                  -                        FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint context "+i+" script panel no sourcebox for url: "+url, panel.sourceBoxes);
                                  -                    continue;
                                  -                }
                                  -
                                  -                var row = sourceBox.getLineNode(lineNo);
                                  -                if (FBTrace.DBG_BP)
                                  -                    FBTrace.sysout(i+") onToggleBreakpoint getLineNode="+row+" lineNo="+lineNo+" context:"+context.getName()+"\n");
                                  -                if (!row)
                                  -                    continue;  // we *should* only be called for lines in the viewport...
                                  -
                                  -                row.setAttribute("breakpoint", isSet);
                                  -                if (isSet && props)
                                  -                {
                                  -                    row.setAttribute("condition", props.condition ? "true" : "false");
                                  -                    if (props.condition)  // issue 1371
                                  -                    {
                                  -                        var watchPanel = this.ableWatchSidePanel(context);
                                  -
                                  -                        if (watchPanel)
                                  -                        {
                                  -                            watchPanel.addWatch(props.condition);
                                  -                        }
                                  -                        else
                                  -                        {
                                  -                            if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("onToggleBreakpoint no watch panel in context "+context.getName());
                                  -                        }
                                  -                    }
                                  -                    row.setAttribute("disabledBreakpoint", new Boolean(props.disabled).toString());
                                  -                }
                                  -                else
                                  -                {
                                  -                    row.removeAttribute("condition");
                                  -                    if (props.condition)
                                  -                    {
                                  -                        var watchPanel = this.ableWatchSidePanel(context);
                                  -                        watchPanel.removeWatch(props.condition);
                                  -                        watchPanel.rebuild();
                                  -                    }
                                  -                    row.removeAttribute("disabledBreakpoint");
                                  -                }
                                  -                dispatch(this.fbListeners, "onToggleBreakpoint", [context, url, lineNo, isSet]);
                                  -                found = true;
                                  -                continue;
                                  -            }
                                  -        }
                                  -        if (FBTrace.DBG_BP && !found)
                                  -            FBTrace.sysout("debugger("+this.debuggerName+").onToggleBreakpoint no find context");
                                  -    },
                                  -
                                  -    onToggleErrorBreakpoint: function(url, lineNo, isSet)
                                  -    {
                                  -        for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -        {
                                  -            var context = TabWatcher.contexts[i];
                                  -            var panel = context.getPanel("console", true);
                                  -            if (panel)
                                  -            {
                                  -                panel.context.invalidatePanels("breakpoints");
                                  -
                                  -                for (var row = panel.panelNode.firstChild; row; row = row.nextSibling)
                                  -                {
                                  -                    var error = row.firstChild.repObject;
                                  -                    if (error instanceof ErrorMessage && error.href == url && error.lineNo == lineNo)
                                  -                    {
                                  -                        if (isSet)
                                  -                            setClass(row.firstChild, "breakForError");
                                  -                        else
                                  -                            removeClass(row.firstChild, "breakForError");
                                  -
                                  -                        dispatch(this.fbListeners, "onToggleErrorBreakpoint", [context, url, lineNo, isSet]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onToggleMonitor: function(url, lineNo, isSet)
                                  -    {
                                  -        for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -        {
                                  -            var panel = TabWatcher.contexts[i].getPanel("console", true);
                                  -            if (panel)
                                  -                panel.context.invalidatePanels("breakpoints");
                                  -        }
                                  -    },
                                  -
                                  -    checkDynamicURLhasBP: function (context)
                                  -    {
                                  -        context.dynamicURLhasBP = false;
                                  -        for (var url in context.sourceFileMap)
                                  -        {
                                  -             var sourceFile = context.sourceFileMap[url];
                                  -               if (sourceFile.isEval() || sourceFile.isEvent())
                                  -               {
                                  -                   fbs.enumerateBreakpoints(url, {call: function setDynamicIfSet(url, lineNo)
                                  -                   {
                                  -                       context.dynamicURLhasBP = true;
                                  -                   }});
                                  -               }
                                  -               if (context.dynamicURLhasBP)
                                  -                   break;
                                  -        }
                                  -        if (FBTrace.DBG_SOURCEFILES || FBTrace.DBG_BP)
                                  -            FBTrace.sysout("debugger.checkDynamicURLhasBP "+context.dynamicURLhasBP);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XXXjjb this code is not called, because I found the scheme for detecting Function too complex.
                                  -    // I'm leaving it here to remind us that we need to support new Function().
                                  -    onFunctionConstructor: function(frame, ctor_script)
                                  -    {
                                  -       try
                                  -        {
                                  -            var context = this.breakContext;
                                  -            delete this.breakContext;
                                  -
                                  -            var sourceFile = this.createSourceFileForFunctionConstructor(frame, ctor_script, context);
                                  -
                                  -            if (FBTrace.DBG_EVAL)
                                  -            {
                                  -                FBTrace.sysout("debugger.onFunctionConstructor tag="+ctor_script.tag+" url="+sourceFile.href+"\n");
                                  -                FBTrace.sysout( traceToString(FBL.getCorrectedStackTrace(frame, context))+"\n" );
                                  -            }
                                  -
                                  -            dispatch(this.fbListeners,"onFunctionConstructor",[context, frame, ctor_script, sourceFile.href]);
                                  -            return sourceFile.href;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            ERROR("debugger.onFunctionConstructor failed: "+exc);
                                  -            if (FBTrace.DBG_EVAL)
                                  -                FBTrace.sysout("debugger.onFunctionConstructor failed: ",exc);
                                  -            return null;
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    createSourceFileForFunctionConstructor: function(caller_frame, ctor_script, context)
                                  -    {
                                  -        var ctor_expr = null; // this.getConstructorExpression(caller_frame, context);
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("createSourceFileForFunctionConstructor ctor_expr:"+ctor_expr+"\n");
                                  -        if (ctor_expr)
                                  -            var source  = this.getEvalBody(caller_frame, "lib.createSourceFileForFunctionConstructor ctor_expr", 1, ctor_expr);
                                  -        else
                                  -            var source = " bah createSourceFileForFunctionConstructor"; //ctor_script.functionSource;
                                  -
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("createSourceFileForFunctionConstructor source:"+source+"\n");
                                  -        var url = this.getDynamicURL(context, normalizeURL(caller_frame.script.fileName), source, "Function");
                                  -
                                  -        var lines = context.sourceCache.store(url.href, source);
                                  -        var sourceFile = new Firebug.FunctionConstructorSourceFile(url, caller_frame.script, ctor_expr, lines.length);
                                  -        this.watchSourceFile(context, sourceFile);
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("debugger.onNewFunction sourcefile="+sourceFile.toString()+" -> "+context.getName()+"\n");
                                  -
                                  -        return sourceFile;
                                  -    },
                                  -
                                  -    getConstructorExpression: function(caller_frame, context)
                                  -    {
                                  -        // We believe we are just after the ctor call.
                                  -        var decompiled_lineno = getLineAtPC(caller_frame, context);
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("debugger.getConstructoreExpression decompiled_lineno:"+decompiled_lineno+"\n");
                                  -
                                  -        var decompiled_lines = splitLines(caller_frame.script.functionSource);  // TODO place in sourceCache?
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("debugger.getConstructoreExpression decompiled_lines:",decompiled_lines);
                                  -
                                  -        var candidate_line = decompiled_lines[decompiled_lineno - 1]; // zero origin
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("debugger.getConstructoreExpression candidate_line:"+candidate_line+"\n");
                                  -
                                  -        if (candidate_line && candidate_line != null)
                                  -            {
                                  -                var m = reFunction.exec(candidate_line);
                                  -                if (m)
                                  -                    var arguments =  m[1];     // TODO Lame: need to count parens, with escapes and quotes
                                  -            }
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("debugger.getConstructoreExpression arguments:"+arguments+"\n");
                                  -        if (arguments) // need to break down commas and get last arg.
                                  -        {
                                  -                var lastComma = arguments.lastIndexOf(',');
                                  -                return arguments.substring(lastComma+1);  // if -1 then 0
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    // end of guilt trip
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called by debugger.onEval() to store eval() source.
                                  -    // The frame has the blank-function-name script and it is not the top frame.
                                  -    // The frame.script.fileName is given by spidermonkey as file of the first eval().
                                  -    // The frame.script.baseLineNumber is given by spidermonkey as the line of the first eval() call
                                  -    // The source that contains the eval() call is the source of our caller.
                                  -    // If our caller is a file, the source of our caller is at frame.script.baseLineNumber
                                  -    // If our caller is an eval, the source of our caller is TODO Check Test Case
                                  -    getEvalLevelSourceFile: function(frame, context, innerScripts)
                                  -    {
                                  -        var eval_expr = this.getEvalExpression(frame, context);
                                  -        if (FBTrace.DBG_EVAL) FBTrace.sysout("getEvalLevelSourceFile eval_expr:"+eval_expr+"\n");
                                  -
                                  -        if (eval_expr && !Firebug.decompileEvals)
                                  -        {
                                  -            var source  = this.getEvalBody(frame, "lib.getEvalLevelSourceFile.getEvalBody", 1, eval_expr);
                                  -            var mapType = PCMAP_SOURCETEXT;
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = frame.script.functionSource; // XXXms - possible crash on OSX FF2
                                  -            var mapType = PCMAP_PRETTYPRINT;
                                  -        }
                                  -
                                  -        var lines = splitLines(source);
                                  -
                                  -        if (FBTrace.DBG_EVAL)
                                  -            FBTrace.sysout("getEvalLevelSourceFile "+lines.length+ "lines, mapType:"+((mapType==PCMAP_SOURCETEXT)?"SOURCE":"PRETTY")+" source:"+source+"\n");
                                  -
                                  -        var url = this.getDynamicURL(context, normalizeURL(frame.script.fileName), lines, "eval");
                                  -
                                  -        context.sourceCache.invalidate(url.href);
                                  -        context.sourceCache.storeSplitLines(url.href, lines);
                                  -
                                  -        var sourceFile = new Firebug.EvalLevelSourceFile(url, frame.script, eval_expr, lines, mapType, innerScripts);
                                  -        this.watchSourceFile(context, sourceFile);
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger.getEvalLevelSourceFile sourcefile="+sourceFile.toString()+" -> "+context.getName()+"\n");
                                  -
                                  -        return sourceFile;
                                  -    },
                                  -
                                  -    getDynamicURL: function(context, callerURL, lines, kind)
                                  -    {
                                  -        var url = this.getURLFromLastLine(context, lines);
                                  -        if (url)
                                  -            return url;
                                  -
                                  -        var url = this.getSequentialURL(context, callerURL, kind);
                                  -        if (url)
                                  -            return url;
                                  -
                                  -        var url = this.getURLFromMD5(callerURL, lines, kind);
                                  -        if (url)
                                  -            return url;
                                  -
                                  -        var url = this.getDataURLForScript(callerURL, lines);
                                  -        if (url)
                                  -            return url;
                                  -
                                  -        return url;
                                  -    },
                                  -
                                  -    getURLFromLastLine: function(context, lines)
                                  -    {
                                  -        var url = null;
                                  -        // Ignores any trailing whitespace in |source|
                                  -        var reURIinComment = /\/\/@\ssourceURL=\s*(\S*?)\s*$/m;
                                  -        var m = reURIinComment.exec(lines[lines.length - 1]);
                                  -        if (m)
                                  -        {
                                  -            // add context info to the sourceURL so eval'd sources are grouped correctly in the source file list
                                  -            if (m[1] && m[1].indexOf('://') == -1) {
                                  -                var loc = context.window.location;
                                  -                if (m[1].charAt(0) != '/') m[1] = '/'+m[1]; // prepend leading slash if necessary
                                  -                m[1] = loc.protocol + '//' + loc.host + m[1]; // prepend protocol and host
                                  -            }
                                  -
                                  -            var href = new String(m[1]);
                                  -
                                  -            url = {href: href, kind: "source"};
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("debugger.getURLFromLastLine "+url.href, url);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("debugger.getURLFromLastLine no match"+lines[lines.length - 1]);
                                  -        }
                                  -        return url;
                                  -    },
                                  -
                                  -    getSequentialURL: function(context, callerURL, kind)
                                  -    {
                                  -        var url = null;
                                  -        if (!context.dynamicURLhasBP)
                                  -        {
                                  -            // If no breakpoints live in dynamic code then we don't need to compare
                                  -            // the previous and reloaded source. In that case let's use a cheap URL.
                                  -            var href = new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"seq/" +(context.dynamicURLIndex++));
                                  -            url = {href: href, kind: "seq"};
                                  -            if (FBTrace.DBG_SOURCEFILES || isNaN(context.dynamicURLIndex) )
                                  -                FBTrace.sysout("debugger.getSequentialURL context:"+context.getName()+" url:"+url.href+" index: "+context.dynamicURLIndex, url);
                                  -        }
                                  -        return url;
                                  -    },
                                  -
                                  -    getURLFromMD5: function(callerURL, lines, kind)
                                  -    {
                                  -        this.hash_service.init(this.nsICryptoHash.MD5);
                                  -        var source = lines.join('\n'); // we could double loop, would that be any faster?
                                  -        byteArray = [];
                                  -        for (var j = 0; j < source.length; j++)
                                  -        {
                                  -            byteArray.push( source.charCodeAt(j) );
                                  -        }
                                  -        this.hash_service.update(byteArray, byteArray.length);
                                  -        var hash = this.hash_service.finish(true);
                                  -
                                  -        // encoding the hash should be ok, it should be information-preserving? Or at least reversable?
                                  -        var href= new String(callerURL + (kind ? "/"+kind+"/" : "/nokind/")+"MD5/" + encodeURIComponent(hash));
                                  -        url = {href: href, kind: "MD5"};
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger.getURLFromMD5 "+url.href, url);
                                  -        return url;
                                  -    },
                                  -
                                  -    getDataURLForScript: function(callerURL, lines)
                                  -    {
                                  -        var url = null;
                                  -        var href = null;
                                  -        if (!source)
                                  -            href = "eval."+script.tag;
                                  -        else
                                  -        {
                                  -            // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -            href = new String("data:text/javascript;");
                                  -            href += "fileName="+encodeURIComponent(callerURL);
                                  -            var source = lines.join('\n');
                                  -            //url +=  ";"+ "baseLineNumber="+encodeURIComponent(script.baseLineNumber) +
                                  -            href +="," + encodeURIComponent(source);
                                  -        }
                                  -        url = {href:href, kind:"data"};
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger.getDataURLForScript "+url.href, url);
                                  -        return url;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getEvalExpression: function(frame, context)
                                  -    {
                                  -        var expr = this.getEvalExpressionFromEval(frame, context);  // eval in eval
                                  -
                                  -        return (expr) ? expr : this.getEvalExpressionFromFile(normalizeURL(frame.script.fileName), frame.script.baseLineNumber, context);
                                  -    },
                                  -
                                  -    getEvalExpressionFromFile: function(url, lineNo, context)
                                  -    {
                                  -        if (context && context.sourceCache)
                                  -        {
                                  -            var in_url = FBL.reJavascript.exec(url);
                                  -            if (in_url)
                                  -            {
                                  -                var m = reEval.exec(in_url[1]);
                                  -                if (m)
                                  -                    return m[1];
                                  -                else
                                  -                    return null;
                                  -            }
                                  -
                                  -            var htm = reHTM.exec(url);
                                  -            if (htm) {
                                  -                lineNo = lineNo + 1; // embedded scripts seem to be off by one?  XXXjjb heuristic
                                  -            }
                                  -            // Walk backwards from the first line in the function until we find the line which
                                  -            // matches the pattern above, which is the eval call
                                  -            var line = "";
                                  -            for (var i = 0; i < 3; ++i)
                                  -            {
                                  -                line = context.sourceCache.getLine(url, lineNo-i) + line;
                                  -                if (line && line != null)
                                  -                {
                                  -                    var m = reEval.exec(line);
                                  -                    if (m)
                                  -                        return m[1];
                                  -                }
                                  -            }
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    getEvalExpressionFromEval: function(frame, context)
                                  -    {
                                  -        var callingFrame = frame.callingFrame;
                                  -        var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, callingFrame.script);
                                  -        if (sourceFile)
                                  -        {
                                  -            if (FBTrace.DBG_EVAL) {
                                  -                FBTrace.sysout("debugger.getEvalExpressionFromEval sourceFile.href="+sourceFile.href+"\n");
                                  -                FBTrace.sysout("debugger.getEvalExpressionFromEval callingFrame.pc="+callingFrame.pc
                                  -                    +" callingFrame.script.baseLineNumber="+callingFrame.script.baseLineNumber+"\n");
                                  -            }
                                  -            var lineNo = callingFrame.script.pcToLine(callingFrame.pc, PCMAP_SOURCETEXT);
                                  -            lineNo = lineNo - callingFrame.script.baseLineNumber + 1;
                                  -            var url  = sourceFile.href;
                                  -
                                  -            if (FBTrace.DBG_EVAL && !context.sourceCache)
                                  -                FBTrace.sysout("debugger.getEvalExpressionFromEval context.sourceCache null??\n");
                                  -
                                  -            // Walk backwards from the first line in the function until we find the line which
                                  -            // matches the pattern above, which is the eval call
                                  -            var line = "";
                                  -            for (var i = 0; i < 3; ++i)
                                  -            {
                                  -                line = context.sourceCache.getLine(url, lineNo-i) + line;
                                  -                if (FBTrace.DBG_EVAL)
                                  -                    FBTrace.sysout("debugger.getEvalExpressionFromEval lineNo-i="+lineNo+"-"+i+"="+(lineNo-i)+" line:"+line+"\n");
                                  -                if (line && line != null)
                                  -                {
                                  -                    var m = reEval.exec(line);
                                  -                    if (m)
                                  -                        return m[1];     // TODO Lame: need to count parens, with escapes and quotes
                                  -                }
                                  -            }
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    getEvalBody: function(frame, asName, asLine, evalExpr)
                                  -    {
                                  -        if (evalExpr  && !Firebug.decompileEvals)
                                  -        {
                                  -            var result_src = {};
                                  -            var evalThis = "new String("+evalExpr+");";
                                  -            var evaled = frame.eval(evalThis, asName, asLine, result_src);
                                  -
                                  -            if (evaled)
                                  -            {
                                  -                var src = unwrapIValue(result_src.value);
                                  -                return src;
                                  -            }
                                  -            else
                                  -            {
                                  -                var source;
                                  -                if(evalExpr == "function(p,a,c,k,e,r")
                                  -                    source = "/packer/ JS compressor detected";
                                  -                else
                                  -                    source = frame.script.functionSource;
                                  -                return source+" /* !eval("+evalThis+")) */";
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            return frame.script.functionSource; // XXXms - possible crash on OSX FF2
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.clientID = this.registerClient(Firebug);
                                  -        ///this.nsICryptoHash = Components.interfaces["nsICryptoHash"];
                                  -
                                  -        this.debuggerName =  window.location.href +"-@-"+FBL.getUniqueId();
                                  -        this.toString = function() { return this.debuggerName; };
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("debugger.initialize "+ this.debuggerName);
                                  -
                                  -        ///this.hash_service = CCSV("@mozilla.org/security/hash;1", "nsICryptoHash");
                                  -
                                  -        ///$("cmd_breakOnErrors").setAttribute("checked", Firebug.breakOnErrors);
                                  -        ///$("cmd_decompileEvals").setAttribute("checked", Firebug.decompileEvals);
                                  -
                                  -        this.wrappedJSObject = this;  // how we communicate with fbs
                                  -
                                  -        // This is a service operation, a way of encapsulating fbs which is in turn implementing this
                                  -        // simple service. We could implment a whole component for this service, but it hardly makes sense.
                                  -        Firebug.broadcast = function encapsulateFBSBroadcast(message, args)
                                  -        {
                                  -            fbs.broadcast(message, args);
                                  -        };
                                  -
                                  -        this.onFunctionCall = bind(this.onFunctionCall, this);
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    internationalizeUI: function(doc)
                                  -    {
                                  -        var elements = ["fbRerunButton", "fbContinueButton", "fbStepIntoButton", "fbStepOverButton",
                                  -            "fbStepOutButton"];
                                  -
                                  -        for (var i=0; i<elements.length; i++)
                                  -        {
                                  -            var element = doc.getElementById(elements[i]);
                                  -            if (element.hasAttribute("label"))
                                  -                FBL.internationalize(element, "label");
                                  -
                                  -            if (element.hasAttribute("tooltiptext"))
                                  -                FBL.internationalize(element, "tooltiptext");
                                  -        }
                                  -    },
                                  -
                                  -    /*
                                  -     * per-XUL window registration; this method just allows us to keep fbs in this file.
                                  -     * @param clientAPI an object that implements functions called by fbs for clients.
                                  -     */
                                  -    registerClient: function(clientAPI)
                                  -    {
                                  -        return fbs.registerClient(clientAPI);
                                  -    },
                                  -
                                  -    unregisterClient: function(clientAPI)
                                  -    {
                                  -        fbs.unregisterClient(clientAPI);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.Firebug.Debugger.enable; " + this.enabled);
                                  -
                                  -        //if (this.isAlwaysEnabled())
                                  -        //    this.registerDebugger(); // allow callbacks for jsd
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.Firebug.Debugger.disable; " + this.enabled);
                                  -
                                  -        //this.unregisterDebugger();
                                  -    },
                                  -
                                  -    initializeUI: function()
                                  -    {
                                  -        Firebug.ActivableModule.initializeUI.apply(this, arguments);
                                  -        this.filterButton = $("fbScriptFilterMenu");
                                  -        this.filterMenuUpdate();
                                  -        Firebug.setIsJSDActive(fbs.isJSDActive()); // jsd may be active before this XUL window was opened
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        if (persistedState)
                                  -            context.dynamicURLhasBP = persistedState.dynamicURLhasBP;
                                  -
                                  -        context.dynamicURLIndex = 1; // any dynamic urls need to be unique to the context.
                                  -
                                  -        context.jsDebuggerActive = false;
                                  -
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -        this.filterButton = Firebug.chrome.$("fbScriptFilterMenu");  // connect to the button in the new window, not 'window'
                                  -        this.filterMenuUpdate();
                                  -        Firebug.ActivableModule.reattachContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        var watchPanel = this.ableWatchSidePanel(context);
                                  -        var needNow = watchPanel && watchPanel.watches;
                                  -        var watchPanelState = Firebug.getPanelState({name: "watches", context: context});
                                  -        var needPersistent = watchPanelState && watchPanelState.watches;
                                  -        if (needNow || needPersistent)
                                  -        {
                                  -            Firebug.CommandLine.isReadyElsePreparing(context);
                                  -            if (watchPanel)
                                  -            {
                                  -                context.setTimeout(function refreshWatchesAfterCommandLineReady()
                                  -                {
                                  -                    watchPanel.refresh();
                                  -                });
                                  -            }
                                  -        }
                                  -
                                  -        // context.watchScriptAdditions = bind(this.watchScriptAdditions, this, context);
                                  -
                                  -        // context.window.document.addEventListener("DOMNodeInserted", context.watchScriptAdditions, false);
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger("+this.debuggerName+").loadedContext enabled on load: "+context.onLoadWindowContent+" context.sourceFileMap", context.sourceFileMap);
                                  -    },
                                  -
                                  -    /*
                                  -     * A DOM Mutation Event handler for script tag additions
                                  -     * FAILS see http://code.google.com/p/fbug/issues/detail?id=2912
                                  -     */
                                  -    watchScriptAdditions: function(event, context)
                                  -    {
                                  -        if (event.type !== "DOMNodeInserted")
                                  -            return;
                                  -        if (event.target.tagName.toLowerCase() !== "script")
                                  -            return;
                                  -        FBTrace.sysout("debugger.watchScriptAdditions ", event.target.innerHTML);
                                  -        var location = safeGetWindowLocation(context.window);
                                  -
                                  -        FBL.jsd.enumerateScripts({enumerateScript: function(script)
                                  -        {
                                  -            if (normalizeURL(script.fileName) === location)
                                  -            {
                                  -                var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
                                  -                FBTrace.sysout('debugger.watchScriptAdditions '+script.tag+" in "+(sourceFile?sourceFile.href:"NONE")+" "+script.functionSource, script.functionSource);
                                  -                // The dynamically added script tags via element.appendChild do not show up.
                                  -            }
                                  -        }});
                                  -
                                  -        if (context.pendingScriptTagSourceFile)
                                  -        {
                                  -            var sourceFile = context.pendingScriptTagSourceFile;
                                  -            sourceFile.scriptTag = event.target;
                                  -            sourceFile.source = splitLines(event.target.innerHTML);
                                  -
                                  -            var panel = context.getPanel("script", true);
                                  -            if (panel)
                                  -                panel.removeSourceBoxBySourceFile(sourceFile);
                                  -
                                  -            FBTrace.sysout("debugger.watchScriptAdditions connected tag to sourcefile", sourceFile);
                                  -
                                  -            delete context.pendingScriptTagSourceFile;
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)  // clean up the source file map in case the frame is being reloaded.
                                  -    {
                                  -        var scriptTags = win.document.getElementsByTagName("script");
                                  -        for (var i = 0; i < scriptTags.length; i++)
                                  -        {
                                  -            var src = scriptTags[i].getAttribute("src");
                                  -            src = src ? src : safeGetWindowLocation(win);
                                  -
                                  -            // If the src is not in the source map, try to use absolute url.
                                  -            if (!context.sourceFileMap[src])
                                  -                src = absoluteURL(src, win.location.href);
                                  -
                                  -            delete context.sourceFileMap[src];
                                  -
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("debugger.unWatchWindow; delete sourceFileMap entry for " + src);
                                  -        }
                                  -        if (scriptTags.length > 0)
                                  -            context.invalidatePanels('script');
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.destroyContext.apply(this, arguments);
                                  -
                                  -        context.window.document.removeEventListener("DOMNodeInserted", context.watchScriptAdditions, false);
                                  -
                                  -        if (context.stopped)
                                  -        {
                                  -            // the abort will call resume, but the nestedEventLoop would continue the load...
                                  -            this.abort(context);
                                  -        }
                                  -
                                  -        if(persistedState)
                                  -        {
                                  -            if (context.dynamicURLhasBP)
                                  -                persistedState.dynamicURLhasBP = context.dynamicURLhasBP;
                                  -            else
                                  -                delete persistedState.dynamicURLhasBP;
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "breakOnErrors")
                                  -            $("cmd_breakOnErrors").setAttribute("checked", value);
                                  -        else if (name == "decompileEvals")
                                  -            $("cmd_decompileEvals").setAttribute("checked", value);
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -        var sourceFile = getSourceFileByHref(url, context);
                                  -        if (sourceFile)
                                  -            return new SourceLink(sourceFile.href, 0, "js");
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.unregisterClient(Firebug);
                                  -        fbs.unregisterDebugger(this);
                                  -    },
                                  -
                                  -    registerDebugger: function() // 1.3.1 safe for multiple calls
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("registerDebugger this.registered: "+this.registered);
                                  -
                                  -        if (this.registered)
                                  -            return;
                                  -
                                  -        this.registered = true;
                                  -
                                  -        var check = fbs.registerDebugger(this);  //  this will eventually set 'jsd' on the statusIcon
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("debugger.registerDebugger "+check+" debuggers");
                                  -    },
                                  -
                                  -    unregisterDebugger: function() // 1.3.1 safe for multiple calls
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("debugger.unregisterDebugger this.registered: "+this.registered);
                                  -
                                  -        if (!this.registered)
                                  -            return;
                                  -
                                  -        // stay registered if we are profiling across a reload.
                                  -        if (Firebug.Profiler.isProfiling())
                                  -            return;
                                  -
                                  -        var check = fbs.unregisterDebugger(this);
                                  -
                                  -        this.registered = false;
                                  -
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.unregisterDebugger: "+check+" debuggers");
                                  -    },
                                  -
                                  -    onSourceFileCreated: function(context, sourceFile)
                                  -    {
                                  -        // This event can come at any time, eg by frame reloads or ajax,
                                  -        // so we need to update the display.
                                  -        context.invalidatePanels("script", "breakpoints");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    onObserverChange: function(observer)
                                  -    {
                                  -        if (this.hasObservers())
                                  -            this.activateDebugger();
                                  -        else
                                  -            this.deactivateDebugger();
                                  -    },
                                  -
                                  -    activateDebugger: function()
                                  -    {
                                  -        this.registerDebugger();
                                  -
                                  -        if (Firebug.currentContext && !fbs.isJSDActive())
                                  -            fbs.unPause();
                                  -
                                  -        if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.activate;");
                                  -    },
                                  -
                                  -    deactivateDebugger: function()
                                  -    {
                                  -        if (this.dependents && this.dependents.length > 0)
                                  -        {
                                  -            for(var i = 0; i < this.dependents.length; i++)
                                  -            {
                                  -                if (this.dependents[i].isAlwaysEnabled())
                                  -                {
                                  -                    // TODO getName() for modules required.
                                  -                    var name = this.dependents[0].dispatchName;
                                  -
                                  -                    // Log message into the console to inform the user
                                  -                    if (Firebug.currentContext)
                                  -                        Firebug.Console.log("Cannot disable the script panel, " + name +
                                  -                            " panel requires it", Firebug.currentContext);
                                  -
                                  -                    if (FBTrace.DBG_PANELS)
                                  -                        FBTrace.sysout("debugger.onPanelDisable rejected: " + name +
                                  -                            " dependent, with panelName: " + panelName);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // else no dependents enabled:
                                  -        this.unregisterDebugger();
                                  -
                                  -        if (FBTrace.DBG_PANELS || FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.deactivate");
                                  -
                                  -        // this.clearAllBreakpoints();  //XXXjjb I don't think we want to clear breakpoints here, just turn off jsd if no registered debuggers
                                  -    },
                                  -
                                  -    onDependentModuleChange: function(dependentAddedOrRemoved)
                                  -    {
                                  -        if (this.dependents.length > 0) // then we have dependents now
                                  -        {
                                  -            if (!this.isAlwaysEnabled()) // then we need to enable
                                  -            {
                                  -                this.activateDebugger();
                                  -                if (Firebug.currentContext)
                                  -                    Firebug.Console.log("enabling javascript debugger to support "+dependentAddedOrRemoved.dispatchName, Firebug.currentContext);
                                  -            }
                                  -        }
                                  -
                                  -        // xxxHonza, XXXjjb: what about else? In case there are no dependants we could perhaps
                                  -        // disable again...
                                  -    },
                                  -
                                  -    onSuspendingFirebug: function()
                                  -    {
                                  -        var anyStopped = TabWatcher.iterateContexts(function isAnyStopped(context)
                                  -        {
                                  -            return context.stopped;
                                  -        });
                                  -
                                  -        return anyStopped;
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (!Firebug.Debugger.isAlwaysEnabled())
                                  -            return;
                                  -
                                  -        var paused = fbs.pause();  // can be called multiple times.
                                  -
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.onSuspendFirebug paused: "+paused+" isAlwaysEnabled " +
                                  -                Firebug.Debugger.isAlwaysEnabled()+"\n");
                                  -
                                  -        if (!paused)  // then we failed to suspend, undo
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (!Firebug.Debugger.isAlwaysEnabled())
                                  -            return;
                                  -
                                  -        var unpaused = fbs.unPause();
                                  -
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("debugger.onResumeFirebug unpaused: "+unpaused+" isAlwaysEnabled " +
                                  -                Firebug.Debugger.isAlwaysEnabled());
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !this.registered && Firebug.Debugger.isAlwaysEnabled())
                                  -            FBTrace.sysout("debugger.onResumeFirebug but debugger " +
                                  -                Firebug.Debugger.debuggerName+" not registered! *** ");
                                  -    },
                                  -
                                  -    ableWatchSidePanel: function(context)
                                  -    {
                                  -        if (Firebug.Console.isAlwaysEnabled())
                                  -        {
                                  -            var watchPanel = context.getPanel("watches", true);
                                  -            if (watchPanel)
                                  -                return watchPanel;
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Menu in toolbar.
                                  -
                                  -    onScriptFilterMenuTooltipShowing: function(tooltip, context)
                                  -    {
                                  -        if (FBTrace.DBG_OPTIONS)
                                  -            FBTrace.sysout("onScriptFilterMenuTooltipShowing not implemented");
                                  -    },
                                  -
                                  -    onScriptFilterMenuCommand: function(event, context)
                                  -    {
                                  -        var menu = event.target;
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "scriptsFilter", menu.value);
                                  -        Firebug.Debugger.filterMenuUpdate();
                                  -    },
                                  -
                                  -    menuFullLabel:
                                  -    {
                                  -        /// TODO: xxxpedro should use quotes to avoid error when compressing with YUICompressor
                                  -        "static": $STR("ScriptsFilterStatic"),
                                  -        evals: $STR("ScriptsFilterEval"),
                                  -        events: $STR("ScriptsFilterEvent"),
                                  -        all: $STR("ScriptsFilterAll")
                                  -    },
                                  -
                                  -    menuShortLabel:
                                  -    {
                                  -        /// TODO: xxxpedro should use quotes to avoid error when compressing with YUICompressor
                                  -        "static": $STR("ScriptsFilterStaticShort"),
                                  -        evals: $STR("ScriptsFilterEvalShort"),
                                  -        events: $STR("ScriptsFilterEventShort"),
                                  -        all: $STR("ScriptsFilterAllShort")
                                  -    },
                                  -
                                  -    onScriptFilterMenuPopupShowing: function(menu, context)
                                  -    {
                                  -        if (this.menuTooltip)
                                  -            this.menuTooltip.fbEnabled = false;
                                  -
                                  -        var items = menu.getElementsByTagName("menuitem");
                                  -        var value = this.filterButton.value;
                                  -
                                  -        for (var i=0; i<items.length; i++)
                                  -        {
                                  -            var option = items[i].value;
                                  -            if (!option)
                                  -                continue;
                                  -
                                  -            if (option == value)
                                  -                items[i].setAttribute("checked", "true");
                                  -
                                  -            items[i].label = Firebug.Debugger.menuFullLabel[option];
                                  -        }
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    onScriptFilterMenuPopupHiding: function(tooltip, context)
                                  -    {
                                  -        if (this.menuTooltip)
                                  -            this.menuTooltip.fbEnabled = true;
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    filterMenuUpdate: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.servicePrefDomain, "scriptsFilter");
                                  -        this.filterButton.value = value;
                                  -        this.filterButton.label = this.menuShortLabel[value];
                                  -        this.filterButton.removeAttribute("disabled");
                                  -        this.filterButton.setAttribute("value", value);
                                  -        if (FBTrace.DBG_OPTIONS)
                                  -            FBTrace.sysout("debugger.filterMenuUpdate value: "+value+" label:"+this.filterButton.label+'\n');
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ScriptPanel = function() {};
                                  -
                                  -/*
                                  - * object used to markup Javascript source lines.
                                  - * In the namespace Firebug.ScriptPanel.
                                  - */
                                  -Firebug.ScriptPanel.decorator = extend(new Firebug.SourceBoxDecorator,
                                  -{
                                  -    decorate: function(sourceBox, sourceFile)
                                  -    {
                                  -        this.markExecutableLines(sourceBox);
                                  -        this.setLineBreakpoints(sourceBox.repObject, sourceBox);
                                  -    },
                                  -
                                  -    markExecutableLines: function(sourceBox)
                                  -    {
                                  -        var sourceFile = sourceBox.repObject;
                                  -        if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
                                  -            FBTrace.sysout("debugger.markExecutableLines START: "+sourceFile.toString(), sourceFile.getLineRanges());
                                  -
                                  -        var lineNo = sourceBox.firstViewableLine;
                                  -        while( lineNode = sourceBox.getLineNode(lineNo) )
                                  -        {
                                  -            if (lineNode.alreadyMarked)
                                  -            {
                                  -                lineNo++;
                                  -                continue;
                                  -            }
                                  -
                                  -            var script = sourceFile.isExecutableLine(lineNo, true);
                                  -
                                  -            if (FBTrace.DBG_LINETABLE) FBTrace.sysout("debugger.markExecutableLines ["+lineNo+"]="+(script?script.tag:"X")+"\n");
                                  -            if (script)
                                  -                lineNode.setAttribute("executable", "true");
                                  -            else
                                  -                lineNode.removeAttribute("executable");
                                  -
                                  -            lineNode.alreadyMarked = true;
                                  -
                                  -            if (lineNo > sourceBox.lastViewableLine)
                                  -                break;
                                  -
                                  -            lineNo++;
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_BP || FBTrace.DBG_LINETABLE)
                                  -            FBTrace.sysout("debugger.markExecutableLines DONE: "+sourceFile.toString()+"\n");
                                  -    },
                                  -
                                  -    setLineBreakpoints: function(sourceFile, sourceBox)
                                  -    {
                                  -        /// TODO: xxxpedro debugger.js
                                  -        return;
                                  -        
                                  -        fbs.enumerateBreakpoints(sourceFile.href, {call: function(url, line, props, scripts)
                                  -        {
                                  -            var scriptRow = sourceBox.getLineNode(line);
                                  -            if (scriptRow)
                                  -            {
                                  -                scriptRow.setAttribute("breakpoint", "true");
                                  -                if (props.disabled)
                                  -                    scriptRow.setAttribute("disabledBreakpoint", "true");
                                  -                if (props.condition)
                                  -                    scriptRow.setAttribute("condition", "true");
                                  -            }
                                  -            if (FBTrace.DBG_LINETABLE)
                                  -                FBTrace.sysout("debugger.setLineBreakpoints found "+scriptRow+" for "+line+"@"+sourceFile.href+"\n");
                                  -        }});
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ScriptPanel.prototype = extend(Firebug.SourceBoxPanel,
                                  -{
                                  -    /*
                                  -    * Framework connection
                                  -    */
                                  -    updateSourceBox: function(sourceBox)
                                  -    {
                                  -        if (this.scrollInfo && (this.scrollInfo.location == this.location))
                                  -            this.scrollToLine(this.location, this.scrollInfo.previousCenterLine);
                                  -        delete this.scrollInfo;
                                  -    },
                                  -
                                  -    /*
                                  -    * Framework connection
                                  -    */
                                  -    getSourceType: function()
                                  -    {
                                  -        return "js";
                                  -    },
                                  -
                                  -    /*
                                  -     * Framework connection
                                  -     */
                                  -    getDecorator: function(sourceBox)
                                  -    {
                                  -        return Firebug.ScriptPanel.decorator;
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        /// TODO: xxxpedro hack
                                  -        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -        var doc = Firebug.chrome.document;
                                  -        var styleSheet = createStyleSheet(doc, Env.Location.skinDir + "debugger.css");
                                  -        addStyleSheet(doc, styleSheet);
                                  -        
                                  -        var tempContext = new Firebug.TabContext(window, Firebug.browser, Firebug.chrome, {});
                                  -        this.context = extend(Firebug.browser, tempContext);
                                  -        
                                  -        // TODO: xxxpedro IE portability of the following methods
                                  -        this.context.setTimeout = Firebug.browser.setTimeout; 
                                  -        this.context.clearTimeout = Firebug.browser.clearTimeout; 
                                  -        this.context.setInterval = Firebug.browser.setInterval; 
                                  -        this.context.clearInterval = Firebug.browser.clearInterval; 
                                  -        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -        
                                  -        Firebug.SourceBoxPanel.create.apply(this, arguments);
                                  -    },
                                  -    
                                  -    initialize: function(context, doc)
                                  -    {
                                  -        this.location = null;
                                  -        Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showFunction: function(fn)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, this.context);
                                  -        if (sourceLink)
                                  -        {
                                  -            this.showSourceLink(sourceLink);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("no sourcelink for function"); // want to avoid the debugger panel if possible
                                  -        }
                                  -    },
                                  -
                                  -    showSourceLink: function(sourceLink)
                                  -    {
                                  -        var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -        if (sourceFile)
                                  -        {
                                  -            this.navigate(sourceFile);
                                  -            if (sourceLink.line)
                                  -            {
                                  -                this.scrollToLine(sourceLink.href, sourceLink.line, this.jumpHighlightFactory(sourceLink.line, this.context));
                                  -                dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
                                  -            }
                                  -            if (sourceLink == this.selection)  // then clear it so the next link will scroll and highlight.
                                  -                delete this.selection;
                                  -        }
                                  -    },
                                  -
                                  -    highlightExecutionLine: function()
                                  -    {
                                  -        var highlightingAttribute = "exe_line";
                                  -        if (this.executionLine)  // could point to any node in any sourcebox, private to this function
                                  -            this.executionLine.removeAttribute(highlightingAttribute);
                                  -
                                  -        var sourceBox = this.selectedSourceBox;
                                  -        var lineNode = sourceBox.getLineNode(this.executionLineNo);
                                  -        this.executionLine = lineNode;  // if null, clears
                                  -
                                  -        if (sourceBox.breakCauseBox)
                                  -        {
                                  -            sourceBox.breakCauseBox.hide();
                                  -            delete sourceBox.breakCauseBox;
                                  -        }
                                  -
                                  -        if (this.executionLine)
                                  -        {
                                  -            lineNode.setAttribute(highlightingAttribute, "true");
                                  -            if (this.context.breakingCause && !this.context.breakingCause.shown)
                                  -            {
                                  -                this.context.breakingCause.shown = true;
                                  -                var cause = this.context.breakingCause;
                                  -                if (cause)
                                  -                {
                                  -                    var sourceLine = getChildByClass(lineNode, "sourceLine");
                                  -                    sourceBox.breakCauseBox = new Firebug.Breakpoint.BreakNotification(this.document, cause);
                                  -                    sourceBox.breakCauseBox.show(sourceLine, this, "not an editor, yet?");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_BP || FBTrace.DBG_STACK || FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("sourceBox.highlightExecutionLine lineNo: "+this.executionLineNo+" lineNode="+lineNode+" in "+sourceBox.repObject.href);
                                  -
                                  -        return (this.executionLineNo > 0); // sticky if we have a valid line
                                  -    },
                                  -
                                  -    showStackFrameXB: function(frameXB)
                                  -    {
                                  -        if (this.context.stopped)
                                  -        {
                                  -            this.setCurrentStackFrame(frameXB);
                                  -            this.showExecutingSourceFile(frameXB.sourceFile, frameXB);
                                  -        }
                                  -        else
                                  -            this.showNoStackFrame();
                                  -    },
                                  -
                                  -    showStackFrame: function(frame)
                                  -    {
                                  -        if (!frame || (frame && !frame.isValid))
                                  -        {
                                  -            if (FBTrace.DBG_STACK) FBTrace.sysout("showStackFrame no valid frame\n");
                                  -            this.showNoStackFrame();
                                  -            return;
                                  -        }
                                  -
                                  -        var sourceFile = Firebug.SourceFile.getSourceFileByScript(this.context, frame.script);
                                  -        if (!sourceFile)
                                  -        {
                                  -            if (FBTrace.DBG_STACK) FBTrace.sysout("showStackFrame no sourceFile in context "+this.context.getName()+"for frame.script: "+frame.script.fileName);
                                  -            this.showNoStackFrame();
                                  -            return;
                                  -        }
                                  -
                                  -        this.setCurrentStackFrame(frame);
                                  -
                                  -        this.showExecutingSourceFile(sourceFile, frame);
                                  -    },
                                  -
                                  -    showExecutingSourceFile: function(sourceFile, frame)
                                  -    {
                                  -        this.context.executingSourceFile = sourceFile;
                                  -        this.executionFile = sourceFile;
                                  -        if (this.executionFile)
                                  -        {
                                  -            var url = this.executionFile.href;
                                  -            var analyzer = this.executionFile.getScriptAnalyzer(frame.script);
                                  -            this.executionLineNo = analyzer.getSourceLineFromFrame(this.context, frame);  // TODo implement for each type
                                  -
                                  -            if (FBTrace.DBG_STACK)
                                  -                FBTrace.sysout("showStackFrame executionFile:"+this.executionFile+"@"+this.executionLineNo+"\n");
                                  -
                                  -            if (this.context.breakingCause)
                                  -                this.context.breakingCause.lineNo = this.executionLineNo;
                                  -
                                  -            this.scrollToLine(url, this.executionLineNo, bind(this.highlightExecutionLine, this) );
                                  -            this.context.throttle(this.updateInfoTip, this);
                                  -            return;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_STACK) FBTrace.sysout("showStackFrame no getSourceFileByScript for tag="+frame.script.tag+"\n");
                                  -            this.showNoStackFrame();
                                  -        }
                                  -    },
                                  -
                                  -    showNoStackFrame: function()
                                  -    {
                                  -        this.executionFile = null;
                                  -        this.executionLineNo = -1;
                                  -
                                  -        if (this.selectedSourceBox)
                                  -            this.highlightExecutionLine();  // clear highlight
                                  -
                                  -        var panelStatus = Firebug.chrome.getPanelStatusElements();
                                  -        panelStatus.clear(); // clear stack on status bar
                                  -        this.updateInfoTip();
                                  -
                                  -        var watchPanel = this.context.getPanel("watches", true);
                                  -        if (watchPanel)
                                  -            watchPanel.showEmptyMembers();
                                  -    },
                                  -
                                  -    /*
                                  -     * set the UI's current selected frame from any type of frame. This is the frame to use for evals
                                  -     * @param frame: native or XB frame
                                  -     */
                                  -
                                  -    setCurrentStackFrame: function(frame)
                                  -    {
                                  -        if (frame instanceof Ci.jsdIStackFrame)
                                  -            this.context.currentFrame = frame;  // TODO XB reverse this so the XB frame is current
                                  -        else if (frame instanceof StackFrame)
                                  -            this.context.currentFrame = frame.getNativeFrame();
                                  -    },
                                  -
                                  -    toggleBreakpoint: function(lineNo)
                                  -    {
                                  -        var sourceFile = this.getSourceFileBySourceBox(this.selectedSourceBox);
                                  -        var lineNode = this.selectedSourceBox.getLineNode(lineNo);
                                  -
                                  -        if (!sourceFile && FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("toggleBreakpoint no sourceFile! ", this);
                                  -        if (FBTrace.DBG_BP)
                                  -            FBTrace.sysout("debugger.toggleBreakpoint lineNo="+lineNo+" sourceFile.href:"+sourceFile.href+" lineNode.breakpoint:"+(lineNode?lineNode.getAttribute("breakpoint"):"(no lineNode)")+"\n", this.selectedSourceBox);
                                  -
                                  -        if (lineNode.getAttribute("breakpoint") == "true")
                                  -            fbs.clearBreakpoint(sourceFile.href, lineNo);
                                  -        else
                                  -            fbs.setBreakpoint(sourceFile, lineNo, null, Firebug.Debugger);
                                  -    },
                                  -
                                  -    toggleDisableBreakpoint: function(lineNo)
                                  -    {
                                  -        var sourceFile = this.getSourceFileBySourceBox(this.selectedSourceBox);
                                  -        var lineNode = this.selectedSourceBox.getLineNode(lineNo);
                                  -        if (lineNode.getAttribute("disabledBreakpoint") == "true")
                                  -            fbs.enableBreakpoint(sourceFile.href, lineNo);
                                  -        else
                                  -            fbs.disableBreakpoint(sourceFile.href, lineNo);
                                  -    },
                                  -
                                  -    editBreakpointCondition: function(lineNo)
                                  -    {
                                  -        var sourceRow = this.selectedSourceBox.getLineNode(lineNo);
                                  -        var sourceLine = getChildByClass(sourceRow, "sourceLine");
                                  -        var condition = fbs.getBreakpointCondition(this.location.href, lineNo);
                                  -
                                  -        if (condition)
                                  -        {
                                  -            var watchPanel = this.context.getPanel("watches", true);
                                  -            watchPanel.removeWatch(condition);
                                  -            watchPanel.rebuild();
                                  -        }
                                  -
                                  -        Firebug.Editor.startEditing(sourceLine, condition);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addSelectionWatch: function()
                                  -    {
                                  -        var watchPanel = this.context.getPanel("watches", true);
                                  -        if (watchPanel)
                                  -        {
                                  -            var selection = this.document.defaultView.getSelection();
                                  -            var source = this.getSourceLinesFrom(selection);
                                  -            watchPanel.addWatch(source);
                                  -        }
                                  -    },
                                  -
                                  -    copySource: function()
                                  -    {
                                  -        var selection = this.document.defaultView.getSelection();
                                  -        var source = this.getSourceLinesFrom(selection);
                                  -        copyToClipboard(source);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateInfoTip: function()
                                  -    {
                                  -        var infoTip = this.panelBrowser.infoTip;
                                  -        if (infoTip && this.infoTipExpr)
                                  -            this.populateInfoTip(infoTip, this.infoTipExpr);
                                  -    },
                                  -
                                  -    populateInfoTip: function(infoTip, expr)
                                  -    {
                                  -        if (!expr || isJavaScriptKeyword(expr))
                                  -            return false;
                                  -
                                  -        var self = this;
                                  -        // If the evaluate fails, then we report an error and don't show the infoTip
                                  -        Firebug.CommandLine.evaluate(expr, this.context, null, this.context.getGlobalScope(),
                                  -            function success(result, context)
                                  -            {
                                  -                var rep = Firebug.getRep(result, context);
                                  -                var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -                if (FBTrace.DBG_STACK)
                                  -                    FBTrace.sysout("populateInfoTip result is "+result, result);
                                  -
                                  -                tag.replace({object: result}, infoTip);
                                  -
                                  -                Firebug.chrome.contextMenuObject = result;  // for context menu select()
                                  -
                                  -                self.infoTipExpr = expr;
                                  -            },
                                  -            function failed(result, context)
                                  -            {
                                  -                self.infoTipExpr = "";
                                  -            }
                                  -        );
                                  -        return (self.infoTipExpr == expr);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // UI event listeners
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        // Don't interfere with clicks made into a notification editor.
                                  -        if (getAncestorByClass(target, "breakNotification"))
                                  -            return;
                                  -
                                  -        var sourceLine = getAncestorByClass(target, "sourceLine");
                                  -        if (!sourceLine)
                                  -            return;
                                  -
                                  -        var sourceRow = sourceLine.parentNode;
                                  -        var sourceFile = sourceRow.parentNode.repObject;
                                  -        var lineNo = parseInt(sourceLine.textContent);
                                  -
                                  -        if (isLeftClick(event))
                                  -            this.toggleBreakpoint(lineNo);
                                  -        else if (isShiftClick(event))
                                  -            this.toggleDisableBreakpoint(lineNo);
                                  -        else if (isControlClick(event) || isMiddleClick(event))
                                  -        {
                                  -            Firebug.Debugger.runUntil(this.context, sourceFile, lineNo, Firebug.Debugger);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        var sourceLine = getAncestorByClass(event.target || event.srcElement, "sourceLine");
                                  -        if (!sourceLine)
                                  -            return;
                                  -
                                  -        var lineNo = parseInt(sourceLine.textContent);
                                  -        this.editBreakpointCondition(lineNo);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onMouseOver: function(event)
                                  -    {
                                  -        var sourceLine = getAncestorByClass(event.target || event.srcElement, "sourceLine");
                                  -        if (sourceLine)
                                  -        {
                                  -            if (this.hoveredLine)
                                  -                removeClass(this.hoveredLine.parentNode, "hovered");
                                  -
                                  -            this.hoveredLine = sourceLine;
                                  -
                                  -            if (sourceLine)
                                  -                setClass(sourceLine.parentNode, "hovered");
                                  -        }
                                  -    },
                                  -
                                  -    onMouseOut: function(event)
                                  -    {
                                  -        var sourceLine = getAncestorByClass(event.relatedTarget, "sourceLine");
                                  -        if (!sourceLine)
                                  -        {
                                  -            if (this.hoveredLine)
                                  -                removeClass(this.hoveredLine.parentNode, "hovered");
                                  -
                                  -            delete this.hoveredLine;
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        ///var scrollingElement = event.target || event.srcElement;
                                  -        this.reView(this.selectedSourceBox);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "script2",
                                  -    title: "New Script",
                                  -    
                                  -    searchable: true,
                                  -    breakable: true,
                                  -    enableA11y: true,
                                  -    order: 40,
                                  -
                                  -    initialize: function(context, doc)
                                  -    {
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        this.onMouseOver = bind(this.onMouseOver, this);
                                  -        this.onMouseOut = bind(this.onMouseOut, this);
                                  -        this.onScroll = bind(this.onScroll, this);
                                  -
                                  -        this.panelSplitter = $("fbPanelSplitter");
                                  -        this.sidePanelDeck = $("fbSidePanelDeck");
                                  -
                                  -        Firebug.SourceBoxPanel.initialize.apply(this, arguments);
                                  -        
                                  -        
                                  -        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -        // TODO: xxxpedro hack
                                  -        //debugger;
                                  -        this.panelNode.style.fontFamily = "monospace";
                                  -        Firebug.chrome.$ = function(id){return $(id, Firebug.chrome.document); };
                                  -        Firebug.uiListeners = Firebug.uiListeners || [];
                                  -        Firebug.ActivablePanel.initializeNode = function(){};
                                  -        Firebug.Panel.initializeNode = function(){};
                                  -        
                                  -        this.document = Firebug.chrome.document;
                                  -        this.initializeNode();
                                  -        
                                  -        var url = Env.Location.app;
                                  -        var source = new Firebug.ScriptTagSourceFile(this.context, url, 0);
                                  -        this.showSourceFile(source);
                                  -        //this.updateLocation(source);
                                  -        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -        
                                  -    },
                                  -    
                                  -    /// TODO: xxxpedro refactor Firebug Lite initialization
                                  -    shutdown: function()
                                  -    {
                                  -        if (this.selectedSourceBox)
                                  -            this.clearSourceBox(this.selectedSourceBox);
                                  -        
                                  -        this.destroyNode();
                                  -        
                                  -        Firebug.SourceBoxPanel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        /// TODO: xxxpedro debugger persists
                                  -        state = state || {};
                                  -        
                                  -        delete this.selection; // We want the location (sourcefile) to persist, not the selection (eg stackFrame).
                                  -        persistObjects(this, state);
                                  -
                                  -        /// TODO: xxxpedro debugger persists
                                  -        ///state.location = this.location;
                                  -
                                  -        var sourceBox = this.selectedSourceBox;
                                  -        if (sourceBox)
                                  -        {
                                  -            state.previousCenterLine = sourceBox.centerLine;
                                  -            delete this.selectedSourceBox;
                                  -        }
                                  -
                                  -        Firebug.SourceBoxPanel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (this.selectedSourceBox)
                                  -            this.lastSourceScrollTop = this.selectedSourceBox.scrollTop;
                                  -
                                  -        if (this.context.stopped)
                                  -        {
                                  -            Firebug.Debugger.detachListeners(this.context, oldChrome);
                                  -            Firebug.Debugger.attachListeners(this.context, newChrome);
                                  -        }
                                  -
                                  -        Firebug.Debugger.syncCommands(this.context);
                                  -
                                  -        Firebug.SourceBoxPanel.detach.apply(this, arguments);
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        Firebug.SourceBoxPanel.reattach.apply(this, arguments);
                                  -
                                  -        setTimeout(bind(function delayScrollToLastTop()
                                  -        {
                                  -            if (this.lastSourceScrollTop)
                                  -            {
                                  -                this.selectedSourceBox.scrollTop = this.lastSourceScrollTop;
                                  -                delete this.lastSourceScrollTop;
                                  -            }
                                  -        }, this));
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.tooltip = this.document.createElement("div");
                                  -        setClass(this.tooltip, "scriptTooltip");
                                  -        this.tooltip.setAttribute('aria-live', 'polite');
                                  -        obscure(this.tooltip, true);
                                  -        this.panelNode.appendChild(this.tooltip);
                                  -
                                  -        ///this.panelNode.addEventListener("mousedown", this.onMouseDown, true);
                                  -        ///this.panelNode.addEventListener("contextmenu", this.onContextMenu, false);
                                  -        ///this.panelNode.addEventListener("mouseover", this.onMouseOver, false);
                                  -        ///this.panelNode.addEventListener("mouseout", this.onMouseOut, false);
                                  -        ///this.panelNode.addEventListener("scroll", this.onScroll, true);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        addEvent(this.panelNode, "contextmenu", this.onContextMenu);
                                  -        addEvent(this.panelNode, "mouseover", this.onMouseOver);
                                  -        addEvent(this.panelNode, "mouseout", this.onMouseOut);
                                  -        //addEvent(this.panelNode, "scroll", this.onScroll, true);
                                  -        addEvent(this.scrollingElement, "scroll", this.onScroll, true);
                                  -        
                                  -        Firebug.SourceBoxPanel.initializeNode.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        if (this.tooltipTimeout)
                                  -            clearTimeout(this.tooltipTimeout);
                                  -
                                  -        ///this.panelNode.removeEventListener("mousedown", this.onMouseDown, true);
                                  -        ///this.panelNode.removeEventListener("contextmenu", this.onContextMenu, false);
                                  -        ///this.panelNode.removeEventListener("mouseover", this.onMouseOver, false);
                                  -        ///this.panelNode.removeEventListener("mouseout", this.onMouseOut, false);
                                  -        ///this.panelNode.removeEventListener("scroll", this.onScroll, true);
                                  -        removeEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -        removeEvent(this.panelNode, "contextmenu", this.onContextMenu);
                                  -        removeEvent(this.panelNode, "mouseover", this.onMouseOver);
                                  -        removeEvent(this.panelNode, "mouseout", this.onMouseOut);
                                  -        removeEvent(this.scrollingElement, "scroll", this.onScroll, true);
                                  -
                                  -        Firebug.SourceBoxPanel.destroyNode.apply(this, arguments);
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        clearNode(this.panelNode);
                                  -    },
                                  -
                                  -    showWarning: function()
                                  -    {
                                  -        // Fill the panel node with a warning if needed
                                  -        var aLocation = this.getDefaultLocation();
                                  -        var jsEnabled = Firebug.getPref("javascript", "enabled");
                                  -        if (FBL.fbs.activitySuspended && !this.context.stopped)
                                  -        {
                                  -            // Make sure that the content of the panel is restored as soon as
                                  -            // the debugger is resumed.
                                  -            this.restored = false;
                                  -            this.activeWarningTag = WarningRep.showActivitySuspended(this.panelNode);
                                  -        }
                                  -        else if (!jsEnabled)
                                  -            this.activeWarningTag = WarningRep.showNotEnabled(this.panelNode);
                                  -        else if (this.context.allScriptsWereFiltered)
                                  -            this.activeWarningTag = WarningRep.showFiltered(this.panelNode);
                                  -        else if (aLocation && !this.context.jsDebuggerActive)
                                  -            this.activeWarningTag = WarningRep.showInactive(this.panelNode);
                                  -        else if (!aLocation) // they were not filtered, we just had none
                                  -            this.activeWarningTag = WarningRep.showNoScript(this.panelNode);
                                  -        else
                                  -            return false;
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    /// TODO: xxxpedro debugger 
                                  -    ishow: function(state)
                                  -    {
                                  -        var enabled = Firebug.Debugger.isAlwaysEnabled();
                                  -
                                  -        if (!enabled)
                                  -            return;
                                  -
                                  -        var active = !this.showWarning();
                                  -
                                  -        if (active)
                                  -        {
                                  -            this.location = this.getDefaultLocation();
                                  -
                                  -            if (this.context.loaded)
                                  -            {
                                  -                if (!this.restored)
                                  -                {
                                  -                    delete this.location;  // remove the default location if any
                                  -                    restoreLocation(this, state);
                                  -                    this.restored = true;
                                  -                }
                                  -                else // we already restored
                                  -                {
                                  -                    if (!this.selectedSourceBox)  // but somehow we did not make a sourcebox?
                                  -                        this.navigate(this.location);
                                  -                    else  // then we can sync the location to the sourcebox
                                  -                        this.location = this.selectedSourceBox.repObject;
                                  -                }
                                  -
                                  -                if (state && this.location)  // then we are restoring and we have a location, so scroll when we can
                                  -                    this.scrollInfo = { location: this.location, previousCenterLine: state.previousCenterLine};
                                  -            }
                                  -            else // show default
                                  -            {
                                  -                this.navigate(this.location);
                                  -            }
                                  -
                                  -            this.highlight(this.context.stopped);
                                  -
                                  -            var breakpointPanel = this.context.getPanel("breakpoints", true);
                                  -            if (breakpointPanel)
                                  -                breakpointPanel.refresh();
                                  -        }
                                  -
                                  -        collapse(Firebug.chrome.$("fbToolbar"), !active);
                                  -
                                  -        // These buttons are visible only if debugger is enabled.
                                  -        this.showToolbarButtons("fbLocationSeparator", active);
                                  -        this.showToolbarButtons("fbDebuggerButtons", active);
                                  -        this.showToolbarButtons("fbLocationButtons", active);
                                  -        this.showToolbarButtons("fbScriptButtons", active);
                                  -        this.showToolbarButtons("fbStatusButtons", active);
                                  -
                                  -        // Additional debugger panels are visible only if debugger
                                  -        // is active.
                                  -        this.panelSplitter.collapsed = !active;
                                  -        this.sidePanelDeck.collapsed = !active;
                                  -    },
                                  -
                                  -    /// TODO: xxxpedro debugger 
                                  -    ihide: function(state)
                                  -    {
                                  -        this.highlight(this.context.stopped);
                                  -
                                  -        var panelStatus = Firebug.chrome.getPanelStatusElements();
                                  -        FBL.hide(panelStatus, false);
                                  -
                                  -        delete this.infoTipExpr;
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        var sourceBox = this.selectedSourceBox;
                                  -        if (!text || !sourceBox)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            return false;
                                  -        }
                                  -
                                  -        // Check if the search is for a line number
                                  -        var m = reLineNumber.exec(text);
                                  -        if (m)
                                  -        {
                                  -            if (!m[1])
                                  -                return true; // Don't beep if only a # has been typed
                                  -
                                  -            var lineNo = parseInt(m[1]);
                                  -            if (!isNaN(lineNo) && (lineNo > 0) && (lineNo < sourceBox.lines.length) )
                                  -            {
                                  -                this.scrollToLine(sourceBox.repObject.href, lineNo,  this.jumpHighlightFactory(lineNo, this.context));
                                  -                return true;
                                  -            }
                                  -        }
                                  -
                                  -        var curDoc = this.searchCurrentDoc(!Firebug.searchGlobal, text, reverse);
                                  -        if (!curDoc && Firebug.searchGlobal)
                                  -        {
                                  -            return this.searchOtherDocs(text, reverse);
                                  -        }
                                  -        return curDoc;
                                  -    },
                                  -
                                  -    searchOtherDocs: function(text, reverse)
                                  -    {
                                  -        var scanRE = Firebug.Search.getTestingRegex(text);
                                  -
                                  -        var self = this;
                                  -
                                  -        function scanDoc(sourceFile) {
                                  -            var lines = sourceFile.loadScriptLines(self.context);
                                  -            if (!lines)
                                  -                return;
                                  -            // we don't care about reverse here as we are just looking for existence,
                                  -            // if we do have a result we will handle the reverse logic on display
                                  -            for (var i = 0; i < lines.length; i++) {
                                  -                if (scanRE.test(lines[i]))
                                  -                {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        if (this.navigateToNextDocument(scanDoc, reverse))
                                  -        {
                                  -            return this.searchCurrentDoc(true, text, reverse);
                                  -        }
                                  -    },
                                  -
                                  -    searchCurrentDoc: function(wrapSearch, text, reverse)
                                  -    {
                                  -        var sourceBox = this.selectedSourceBox;
                                  -
                                  -        var lineNo = null;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            lineNo = this.currentSearch.findNext(wrapSearch, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        else
                                  -        {
                                  -            this.currentSearch = new SourceBoxTextSearch(sourceBox);
                                  -            lineNo = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -
                                  -        if (lineNo || lineNo === 0)
                                  -        {
                                  -            // this lineNo is an zero-based index into sourceBox.lines. Add one for user line numbers
                                  -            this.scrollToLine(sourceBox.repObject.href, lineNo, this.jumpHighlightFactory(lineNo+1, this.context));
                                  -            dispatch(this.fbListeners, 'onScriptSearchMatchFound', [this, text, sourceBox.repObject, lineNo]);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch(this.fbListeners, 'onScriptSearchMatchFound', [this, text, null, null]);
                                  -            return false;
                                  -        }
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive"),
                                  -            Firebug.Search.searchOptionMenu("search.Multiple Files", "searchGlobal"),
                                  -            Firebug.Search.searchOptionMenu("search.Use Regular Expression", "searchUseRegularExpression")
                                  -        ];
                                  -    },
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if( object instanceof jsdIStackFrame
                                  -            || object instanceof Firebug.SourceFile
                                  -            || (object instanceof SourceLink && object.type == "js")
                                  -            || typeof(object) == "function"
                                  -            || object instanceof StackFrame)
                                  -            return 1;
                                  -        else return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)
                                  -    {
                                  -        FBTrace.sysout("debugger.hasObject in "+this.context.getName()+" SourceLink: "+(object instanceof SourceLink), object);
                                  -        if (object instanceof Firebug.SourceFile)
                                  -            return (object.href in this.context.sourceFileMap);
                                  -        else if (object instanceof SourceLink)
                                  -            return (object.href in this.context.sourceFileMap);
                                  -        else if (object instanceof jsdIStackFrame)
                                  -            return (normalizeURL(object.script.fileName) in this.context.sourceFileMap);
                                  -        else if (object instanceof "function")
                                  -            return false; //TODO
                                  -    },
                                  -
                                  -    refresh: function()  // delete any sourceBox-es that are not in sync with sourceFiles
                                  -    {
                                  -        for(var url in this.sourceBoxes)
                                  -        {
                                  -            if (this.sourceBoxes.hasOwnProperty(url))
                                  -            {
                                  -                var sourceBox = this.sourceBoxes[url];
                                  -                var sourceFile = this.context.sourceFileMap[url];
                                  -                if (!sourceFile || sourceFile != sourceBox.repObject) // then out of sync
                                  -                {
                                  -                   var victim = this.sourceBoxes[url];
                                  -                   delete this.sourceBoxes[url];
                                  -                   if (this.selectedSourceBox == victim)
                                  -                   {
                                  -                        collapse(this.selectedSourceBox, true);
                                  -                        delete this.selectedSourceBox;
                                  -                   }
                                  -                   if (FBTrace.DBG_SOURCEFILES)
                                  -                       FBTrace.sysout("debugger.refresh deleted sourceBox for "+url);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // then show() has not run, but we have to refresh, so do the default.
                                  -        if (!this.selectedSourceBox)
                                  -            this.navigate();
                                  -    },
                                  -
                                  -    updateLocation: function(sourceFile)
                                  -    {
                                  -        if (!sourceFile)
                                  -            return;  // XXXjjb do we need to show a blank?
                                  -
                                  -        // Since our last use of the sourceFile we may have compiled or recompiled the source
                                  -        var updatedSourceFile = this.context.sourceFileMap[sourceFile.href];
                                  -        if (!updatedSourceFile)
                                  -            updatedSourceFile = this.getDefaultLocation();
                                  -        if (!updatedSourceFile)
                                  -            return;
                                  -
                                  -        if (this.activeWarningTag)
                                  -        {
                                  -            clearNode(this.panelNode);
                                  -            delete this.activeWarningTag;
                                  -
                                  -            // The user was seeing the warning, but selected a file to show in the script panel.
                                  -            // The removal of the warning leaves the panel without a clientHeight, so
                                  -            //  the old sourcebox will be out of sync. Just remove it and start over.
                                  -            this.removeAllSourceBoxes();
                                  -        }
                                  -
                                  -        this.showSourceFile(updatedSourceFile);
                                  -        dispatch(this.fbListeners, "onUpdateScriptLocation", [this, updatedSourceFile]);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_PANELS)
                                  -        {
                                  -            FBTrace.sysout("debugger updateSelection object:"+object+" of type "+typeof(object)+"\n");
                                  -            if (object instanceof jsdIStackFrame)
                                  -                FBTrace.sysout("debugger updateSelection this.showStackFrame(object)", object);
                                  -            else if (object instanceof Firebug.SourceFile)
                                  -                FBTrace.sysout("debugger updateSelection this.navigate(object)", object);
                                  -            else if (object instanceof SourceLink)
                                  -                FBTrace.sysout("debugger updateSelection this.showSourceLink(object)", object);
                                  -            else if (typeof(object) == "function")
                                  -                FBTrace.sysout("debugger updateSelection this.showFunction(object)", object);
                                  -            else if (object instanceof StackFrame)
                                  -                FBTrace.sysout("debugger updateSelection this.showStackFrameXB(object)", object);
                                  -            else
                                  -                FBTrace.sysout("debugger updateSelection this.showStackFrame(null)", object);
                                  -        }
                                  -
                                  -        if (object instanceof jsdIStackFrame)
                                  -            this.showStackFrame(object);
                                  -        else if (object instanceof Firebug.SourceFile)
                                  -            this.navigate(object);
                                  -        else if (object instanceof SourceLink)
                                  -            this.showSourceLink(object);
                                  -        else if (typeof(object) == "function")
                                  -            this.showFunction(object);
                                  -        else if (object instanceof StackFrame)
                                  -            this.showStackFrameXB(object);
                                  -        else
                                  -            this.showStackFrame(null);
                                  -    },
                                  -
                                  -    showThisSourceFile: function(sourceFile)
                                  -    {
                                  -        //-----------------------------------123456789
                                  -        if (sourceFile.href.substr(0, 9) == "chrome://")
                                  -            return false;
                                  -
                                  -           if (sourceFile.isEval() && !this.showEvals)
                                  -               return false;
                                  -
                                  -        if (sourceFile.isEvent() && !this.showEvents)
                                  -            return false;
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    getLocationList: function()
                                  -    {
                                  -        var context = this.context;
                                  -
                                  -        if (!context.onLoadWindowContent) // then context was not active during load
                                  -            this.updateScriptFiles(context);
                                  -
                                  -        var allSources = sourceFilesAsArray(context.sourceFileMap);
                                  -
                                  -        if (!allSources.length)
                                  -            return [];
                                  -
                                  -        if (Firebug.showAllSourceFiles)
                                  -        {
                                  -            if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("debugger getLocationList "+context.getName()+" allSources", allSources);
                                  -            return allSources;
                                  -        }
                                  -
                                  -        var filter = Firebug.getPref(Firebug.servicePrefDomain, "scriptsFilter");
                                  -        this.showEvents = (filter == "all" || filter == "events");
                                  -        this.showEvals = (filter == "all" || filter == "evals");
                                  -
                                  -        var list = [];
                                  -        for (var i = 0; i < allSources.length; i++)
                                  -        {
                                  -            if (this.showThisSourceFile(allSources[i]))
                                  -                list.push(allSources[i]);
                                  -        }
                                  -
                                  -        if (!list.length && allSources.length)
                                  -            this.context.allScriptsWereFiltered = true;
                                  -        else
                                  -            delete this.context.allScriptsWereFiltered;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("debugger.getLocationList enabledOnLoad:"+context.onLoadWindowContent+" all:"+allSources.length+" filtered:"+list.length, list);
                                  -        return list;
                                  -    },
                                  -
                                  -    updateScriptFiles: function(context, eraseSourceFileMap)  // scan windows for 'script' tags (only if debugger is not enabled)
                                  -    {
                                  -        var oldMap = eraseSourceFileMap ? null : context.sourceFileMap;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("updateScriptFiles oldMap "+oldMap);
                                  -
                                  -        function addFile(url, scriptTagNumber, dependentURL)
                                  -        {
                                  -            if (oldMap && url in oldMap)
                                  -            {
                                  -                var sourceFile = oldMap[url];
                                  -                sourceFile.dependentURL = dependentURL;
                                  -                context.addSourceFile(sourceFile);
                                  -                return false;
                                  -            }
                                  -            else
                                  -            {
                                  -                var sourceFile = new Firebug.ScriptTagSourceFile(context, url, scriptTagNumber);
                                  -                sourceFile.dependentURL = dependentURL;
                                  -                context.addSourceFile(sourceFile);
                                  -                return true;
                                  -            }
                                  -        }
                                  -
                                  -        iterateWindows(context.window, function updateEachWin(win)
                                  -        {
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("updateScriptFiles iterateWindows: "+win.location.href, " documentElement: "+win.document.documentElement);
                                  -            if (!win.document.documentElement)
                                  -                return;
                                  -
                                  -            var url = normalizeURL(win.location.href);
                                  -
                                  -            if (url)
                                  -            {
                                  -                if (!context.sourceFileMap.hasOwnProperty(url))
                                  -                {
                                  -                    var URLOnly = new Firebug.NoScriptSourceFile(context, url);
                                  -                    context.addSourceFile(URLOnly);
                                  -                    if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("updateScriptFiles created NoScriptSourceFile for URL:"+url, URLOnly);
                                  -                }
                                  -            }
                                  -
                                  -            var baseUrl = win.location.href;
                                  -            var bases = win.document.documentElement.getElementsByTagName("base");
                                  -            if (bases && bases[0])
                                  -            {
                                  -                baseUrl = bases[0].href;
                                  -            }
                                  -
                                  -            var scripts = win.document.documentElement.getElementsByTagName("script");
                                  -            for (var i = 0; i < scripts.length; ++i)
                                  -            {
                                  -                var scriptSrc = scripts[i].getAttribute('src'); // for XUL use attribute
                                  -                var url = scriptSrc ? absoluteURL(scriptSrc, baseUrl) : win.location.href;
                                  -                url = normalizeURL(url ? url : win.location.href);
                                  -                var added = addFile(url, i, (scriptSrc?win.location.href:null));
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("updateScriptFiles "+(scriptSrc?"inclusion":"inline")+" script #"+i+"/"+scripts.length+(added?" adding ":" readded ")+url+" to context="+context.getName()+"\n");
                                  -            }
                                  -        });
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -        {
                                  -            FBTrace.sysout("updateScriptFiles sourcefiles:", sourceFilesAsArray(context.sourceFileMap));
                                  -        }
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        var sourceFiles = this.getLocationList();
                                  -        if (!sourceFiles.length)
                                  -            return null;
                                  -
                                  -        if (this.context)
                                  -        {
                                  -            var url = this.context.getWindowLocation();
                                  -            for (var i = 0; i < sourceFiles.length; i++)
                                  -            {
                                  -                if (url == sourceFiles[i].href)
                                  -                    return sourceFiles[i];
                                  -            }
                                  -            return sourceFiles[0];
                                  -        }
                                  -        else
                                  -            return sourceFiles[0];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return this.getDefaultLocation();
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        // Target should be A element with class = sourceLine
                                  -        if ( hasClass(target, 'sourceLine') )
                                  -        {
                                  -            var lineNo = parseInt(target.innerHTML);
                                  -
                                  -            if ( isNaN(lineNo) )
                                  -                return;
                                  -            var scripts = this.location.scriptsIfLineCouldBeExecutable(lineNo);
                                  -            if (scripts)
                                  -            {
                                  -                var str = "scripts ";
                                  -                for(var i = 0; i < scripts.length; i++)
                                  -                    str += scripts[i].tag +" ";
                                  -                return str;
                                  -            }
                                  -            else
                                  -                return new String("no executable script at "+lineNo);
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        // Don't show popup over the line numbers, we show the conditional breakpoint
                                  -        // editor there instead
                                  -        var sourceLine = getAncestorByClass(target, "sourceLine");
                                  -        if (sourceLine)
                                  -            return;
                                  -
                                  -        var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -        if (!sourceRow)
                                  -            return;
                                  -
                                  -        var lineNo = parseInt(sourceRow.firstChild.textContent);
                                  -        var scripts = findScripts(this.context, this.location.href, lineNo);
                                  -        return scripts; // gee I wonder what will happen?
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        var frame = this.context.currentFrame;
                                  -        if (!frame)
                                  -            return;
                                  -
                                  -        var sourceRowText = getAncestorByClass(target, "sourceRowText");
                                  -        if (!sourceRowText)
                                  -            return;
                                  -
                                  -        // see http://code.google.com/p/fbug/issues/detail?id=889
                                  -        // idea from: Jonathan Zarate's rikaichan extension (http://www.polarcloud.com/rikaichan/)
                                  -        if (!rangeParent)
                                  -            return;
                                  -        rangeOffset = rangeOffset || 0;
                                  -        var expr = getExpressionAt(rangeParent.data, rangeOffset);
                                  -        if (!expr || !expr.expr)
                                  -            return;
                                  -
                                  -        if (expr.expr == this.infoTipExpr)
                                  -            return true;
                                  -        else
                                  -            return this.populateInfoTip(infoTip, expr.expr);
                                  -    },
                                  -
                                  -    getObjectPath: function(frame)
                                  -    {
                                  -        frame = this.context.currentFrame;
                                  -
                                  -        if (FBTrace.DBG_STACK)
                                  -            FBTrace.sysout("debugger.getObjectPath "+((frame && frame.isValid)?("frame is good:"+frame.script.fileName+"@"+frame.line):(frame?"frame invalid":"no frame")), this.selection);
                                  -
                                  -        var frames = [];
                                  -        for (; frame; frame = getCallingFrame(frame))
                                  -            frames.push(frame);
                                  -
                                  -        return frames;
                                  -    },
                                  -
                                  -    getObjectLocation: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    },
                                  -
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(sourceFile)
                                  -    {
                                  -        return sourceFile.getObjectDescription();
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        var context = this.context;
                                  -
                                  -        return [
                                  -            optionMenu("DecompileEvals", "decompileEvals"),
                                  -            serviceOptionMenu("ShowAllSourceFiles", "showAllSourceFiles"),
                                  -            // 1.2: always check last line; optionMenu("UseLastLineForEvalName", "useLastLineForEvalName"),
                                  -            // 1.2: always use MD5 optionMenu("UseMD5ForEvalName", "useMD5ForEvalName")
                                  -            serviceOptionMenu("TrackThrowCatch", "trackThrowCatch")//,
                                  -            //"-",
                                  -            //1.2 option on toolbar this.optionMenu("DebuggerEnableAlways", enableAlwaysPref)
                                  -        ];
                                  -    },
                                  -
                                  -    optionMenu: function(label, option)
                                  -    {
                                  -        var checked = Firebug.getPref(prefDomain, option);
                                  -        return {label: label, type: "checkbox", checked: checked,
                                  -            command: bindFixed(Firebug.setPref, Firebug, prefDomain, option, !checked) };
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target)
                                  -    {
                                  -        if (getAncestorByClass(target, "sourceLine"))
                                  -            return;
                                  -
                                  -        var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -        if (!sourceRow)
                                  -            return;
                                  -
                                  -        var sourceLine = getChildByClass(sourceRow, "sourceLine");
                                  -        var lineNo = parseInt(sourceLine.textContent);
                                  -
                                  -        var items = [];
                                  -
                                  -        var selection = this.document.defaultView.getSelection();
                                  -        if (selection.toString())
                                  -        {
                                  -            items.push(
                                  -                {label: "CopySourceCode", command: bind(this.copySource, this) },
                                  -                "-",
                                  -                {label: "AddWatch", command: bind(this.addSelectionWatch, this) }
                                  -            );
                                  -        }
                                  -
                                  -        var hasBreakpoint = sourceRow.getAttribute("breakpoint") == "true";
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "SetBreakpoint", type: "checkbox", checked: hasBreakpoint,
                                  -                command: bindFixed(this.toggleBreakpoint, this, lineNo) }
                                  -        );
                                  -        if (hasBreakpoint)
                                  -        {
                                  -            var isDisabled = fbs.isBreakpointDisabled(this.location.href, lineNo);
                                  -            items.push(
                                  -                {label: "DisableBreakpoint", type: "checkbox", checked: isDisabled,
                                  -                    command: bindFixed(this.toggleDisableBreakpoint, this, lineNo) }
                                  -            );
                                  -        }
                                  -        items.push(
                                  -            {label: "EditBreakpointCondition",
                                  -                command: bindFixed(this.editBreakpointCondition, this, lineNo) }
                                  -        );
                                  -
                                  -        if (this.context.stopped)
                                  -        {
                                  -            var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -            if (sourceRow)
                                  -            {
                                  -                var sourceFile = getAncestorByClass(sourceRow, "sourceBox").repObject;
                                  -                var lineNo = parseInt(sourceRow.firstChild.textContent);
                                  -
                                  -                var debuggr = Firebug.Debugger;
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "Continue",
                                  -                        command: bindFixed(debuggr.resume, debuggr, this.context) },
                                  -                    {label: "StepOver",
                                  -                        command: bindFixed(debuggr.stepOver, debuggr, this.context) },
                                  -                    {label: "StepInto",
                                  -                        command: bindFixed(debuggr.stepInto, debuggr, this.context) },
                                  -                    {label: "StepOut",
                                  -                        command: bindFixed(debuggr.stepOut, debuggr, this.context) },
                                  -                    {label: "RunUntil",
                                  -                        command: bindFixed(debuggr.runUntil, debuggr, this.context,
                                  -                        sourceFile, lineNo) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.conditionEditor)
                                  -            this.conditionEditor = new Firebug.Breakpoint.ConditionEditor(this.document);
                                  -
                                  -        return this.conditionEditor;
                                  -    },
                                  -
                                  -    breakOnNext: function(enabled)
                                  -    {
                                  -        if (enabled)
                                  -            Firebug.Debugger.suspend(this.context);
                                  -        else
                                  -            Firebug.Debugger.unSuspend(this.context);
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(armed)
                                  -    {
                                  -        return (armed ? $STR("script.Disable Break On Next") : $STR("script.Break On Next"));
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        var stepMode = fbs.getStepMode();
                                  -        return stepMode && (stepMode == "STEP_SUSPEND");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivablePanel
                                  -
                                  -    /**
                                  -     * Support for panel activation.
                                  -     */
                                  -    onActivationChanged: function(enable)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE || FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("console.ScriptPanel.onActivationChanged; " + enable);
                                  -
                                  -        if (enable)
                                  -            Firebug.Debugger.addObserver(this);
                                  -        else
                                  -            Firebug.Debugger.removeObserver(this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Displays various warning messages within the Script panel.
                                  - */
                                  -Firebug.ScriptPanel.WarningRep = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "disabledPanelBox"},
                                  -            H1({"class": "disabledPanelHead"},
                                  -                SPAN("$pageTitle")
                                  -            ),
                                  -            P({"class": "disabledPanelDescription", style: "margin-top: 15px;"},
                                  -                SPAN("$suggestion")
                                  -            )
                                  -        ),
                                  -
                                  -    enableScriptTag:
                                  -        SPAN({"class": "objectLink", onclick: "$onEnableScript", style: "color: blue"},
                                  -            $STR("script.button.enable_javascript")
                                  -        ),
                                  -
                                  -    focusDebuggerTag:
                                  -        SPAN({"class": "objectLink", onclick: "$onFocusDebugger", style: "color: blue"},
                                  -            $STR("script.button.Go to that page")
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onEnableScript: function(event)
                                  -    {
                                  -        Firebug.setPref("javascript", "enabled", true);
                                  -
                                  -        var panel = Firebug.getElementPanel(event.target);
                                  -        panel.context.window.location.reload();
                                  -    },
                                  -
                                  -    onFocusDebugger: function(event)
                                  -    {
                                  -        iterateBrowserWindows("navigator:browser", function(win)
                                  -        {
                                  -            return win.TabWatcher.iterateContexts(function(context)
                                  -            {
                                  -                if (context.stopped)
                                  -                {
                                  -                     win.Firebug.focusBrowserTab(context.window);
                                  -                     return true;
                                  -                }
                                  -            });
                                  -        });
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showInactive: function(parentNode)
                                  -    {
                                  -        var args = {
                                  -            pageTitle: $STR("script.warning.inactive_during_page_load"),
                                  -            suggestion: $STR("script.suggestion.inactive_during_page_load")
                                  -        };
                                  -        return this.tag.replace(args, parentNode, this);
                                  -    },
                                  -
                                  -    showNotEnabled: function(parentNode)
                                  -    {
                                  -        var args = {
                                  -            pageTitle: $STR("script.warning.javascript_not_enabled"),
                                  -            suggestion: $STR("script.suggestion.javascript_not_enabled")
                                  -        };
                                  -
                                  -        var box = this.tag.replace(args, parentNode, this);
                                  -        this.enableScriptTag.append({}, box, this);
                                  -
                                  -        return box;
                                  -    },
                                  -
                                  -    showFiltered: function(parentNode)
                                  -    {
                                  -        var args = {
                                  -            pageTitle: $STR("script.warning.all_scripts_filtered"),
                                  -            suggestion: $STR("script.suggestion.all_scripts_filtered")
                                  -        };
                                  -        return this.tag.replace(args, parentNode, this);
                                  -    },
                                  -
                                  -    showNoScript: function(parentNode)
                                  -    {
                                  -        var args = {
                                  -            pageTitle: $STR("script.warning.no_javascript"),
                                  -            suggestion: $STR("script.suggestion.no_javascript")
                                  -        };
                                  -        return this.tag.replace(args, parentNode, this);
                                  -    },
                                  -
                                  -    showActivitySuspended: function(parentNode)
                                  -    {
                                  -        var args = {
                                  -            pageTitle: $STR("script.warning.debugger_active"),
                                  -            suggestion: $STR("script.suggestion.debugger_active")
                                  -        };
                                  -
                                  -        var box = this.tag.replace(args, parentNode, this);
                                  -        this.focusDebuggerTag.append({}, box, this);
                                  -
                                  -        return box;
                                  -    }
                                  -});
                                  -
                                  -var WarningRep = Firebug.ScriptPanel.WarningRep;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Debugger.Breakpoint = function(name, href, lineNumber, checked, sourceLine, isFuture)
                                  -{
                                  -    this.name = name;
                                  -    this.href = href;
                                  -    this.lineNumber = lineNumber;
                                  -    this.checked = checked;
                                  -    this.sourceLine = sourceLine;
                                  -    this.isFuture = isFuture;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DebuggerListener =
                                  -{
                                  -    /*
                                  -     * Called before pausing JSD to allow listeners to prevent the pause
                                  -     * @param rejection an array, push boolean true to cause rejection.
                                  -     */
                                  -    onPauseJSDRequested: function(rejection)
                                  -    {
                                  -    },
                                  -
                                  -    /*
                                  -     * @param active the current value of  (jsd && jsd.isOn && (jsd.pauseDepth == 0) )
                                  -     * @param why a string explaining the change
                                  -     */
                                  -    onJSDActivate: function(active, why)  // start or unPause
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    /*
                                  -     * @param active the current value of  (jsd && jsd.isOn && (jsd.pauseDepth == 0) )
                                  -     * @param why a string explaining the change
                                  -     */
                                  -    onJSDDeactivate: function(active, why) // stop or pause
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    onStop: function(context, frame, type, rv)
                                  -    {
                                  -    },
                                  -
                                  -    onResume: function(context)
                                  -    {
                                  -    },
                                  -
                                  -    onThrow: function(context, frame, rv)
                                  -    {
                                  -        return false; /* continue throw */
                                  -    },
                                  -
                                  -    onError: function(context, frame, error)
                                  -    {
                                  -    },
                                  -
                                  -    onEventScriptCreated: function(context, frame, url, sourceFile)
                                  -    {
                                  -    },
                                  -
                                  -    onTopLevelScriptCreated: function(context, frame, url, sourceFile)
                                  -    {
                                  -    },
                                  -
                                  -    onEvalScriptCreated: function(context, frame, url, sourceFile)
                                  -    {
                                  -    },
                                  -
                                  -    onFunctionConstructor: function(context, frame, ctor_script, url, sourceFile)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// Recursively look for obj in container using array of visited objects
                                  -function findObjectPropertyPath(containerName, container, obj, visited)
                                  -{
                                  -    if (!container || !obj || !visited)
                                  -        return false;
                                  -
                                  -    var referents = [];
                                  -    visited.push(container);
                                  -    for (var p in container)
                                  -    {
                                  -        if (container.hasOwnProperty(p))
                                  -        {
                                  -            var candidate = null;
                                  -            try
                                  -            {
                                  -                candidate = container[p];
                                  -            }
                                  -            catch(exc)
                                  -            {
                                  -                // eg sessionStorage
                                  -            }
                                  -
                                  -            if (candidate === obj) // then we found a property pointing to our obj
                                  -            {
                                  -                referents.push(new Referent(containerName, container, p, obj));
                                  -            }
                                  -            else // recurse
                                  -            {
                                  -                var candidateType = typeof (candidate);
                                  -                if (candidateType === 'object' || candidateType === 'function')
                                  -                {
                                  -                    if (visited.indexOf(candidate) === -1)
                                  -                    {
                                  -                        var refsInChildren = findObjectPropertyPath(p, candidate, obj, visited);
                                  -                        if (refsInChildren.length)
                                  -                        {
                                  -                            // As we unwind the recursion we tack on layers of the path.
                                  -                            for (var i = 0; i < refsInChildren.length; i++)
                                  -                            {
                                  -                                var refInChildren = refsInChildren[i];
                                  -                                refInChildren.prependPath(containerName, container);
                                  -                                referents.push(refInChildren);
                                  -                                FBTrace.sysout(" Did prependPath with p "+p+" gave "+referents[referents.length - 1].getObjectPathExpression(), referents[referents.length - 1]);
                                  -
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                    //else we already looked at that object.
                                  -                } // else the object has no properties
                                  -            }
                                  -        }
                                  -    }
                                  -    FBTrace.sysout(" Returning "+referents.length+ " referents", referents);
                                  -
                                  -    return referents;
                                  -}
                                  -// ************************************************************************************************
                                  -
                                  -function getCallingFrame(frame)
                                  -{
                                  -    try
                                  -    {
                                  -        do
                                  -        {
                                  -            frame = frame.callingFrame;
                                  -            if (!(Firebug.filterSystemURLs && isSystemURL(normalizeURL(frame.script.fileName))))
                                  -                return frame;
                                  -        }
                                  -        while (frame);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -function getFrameWindow(frame)
                                  -{
                                  -    var result = {};
                                  -    if (frame.eval("window", "", 1, result))
                                  -    {
                                  -        var win = unwrapIValue(result.value);
                                  -        return getRootWindow(win);
                                  -    }
                                  -}
                                  -
                                  -function ArrayEnumerator(array)
                                  -{
                                  -    this.index = 0;
                                  -    this.array = array;
                                  -    this.hasMoreElements = function()
                                  -    {
                                  -        return (this.index < array.length);
                                  -    };
                                  -    this.getNext = function()
                                  -    {
                                  -        return this.array[++this.index];
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerActivableModule(Firebug.Debugger);
                                  -Firebug.registerPanel(Firebug.ScriptPanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/dom.js b/branches/flexBox/content/firebug/dom.js
                                  deleted file mode 100644
                                  index 819a6581..00000000
                                  --- a/branches/flexBox/content/firebug/dom.js
                                  +++ /dev/null
                                  @@ -1,1692 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[Firebug.Lite.Cache.ID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {};
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    /*
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    /**/
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var defaultObject = this.getDefaultSelection(this.context);
                                  -            var selectObject = defaultObject; 
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro dom 
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val) && !(name in domMembers))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers && !(name in domConstantMap))
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -};
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -// FIXME: xxxpedro This function is already defined in Lib. If we keep this definition here, it
                                  -// will crash IE9 when not running the IE Developer Tool with JavaScript Debugging enabled!!!
                                  -// Check if this function is in fact defined in Firebug for Firefox. If so, we should remove
                                  -// this from here. The only difference of this function is the IE hack to show up the prototype
                                  -// of functions, but Firebug no longer shows the prototype for simple functions.
                                  -//var hasProperties = function hasProperties(ob)
                                  -//{
                                  -//    try
                                  -//    {
                                  -//        for (var name in ob)
                                  -//            return true;
                                  -//    } catch (exc) {}
                                  -//    
                                  -//    // IE function prototype is not listed in (for..in)
                                  -//    if (isFunction(ob)) return true;
                                  -//    
                                  -//    return false;
                                  -//};
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -};
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -};
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -};
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -};
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -};
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -};
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element"))
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(ElementCache(object));
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        // TODO: xxxpedro css2
                                  -        var selection = ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        if (selection)
                                  -            this.select(selection, true);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firebug/domplate.js b/branches/flexBox/content/firebug/domplate.js
                                  deleted file mode 100644
                                  index 945dbb88..00000000
                                  --- a/branches/flexBox/content/firebug/domplate.js
                                  +++ /dev/null
                                  @@ -1,1147 +0,0 @@
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -( /** @scope s_domplate */ function() {
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -FBL.DomplateTag = function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateEmbed = function DomplateEmbed()
                                  -{
                                  -};
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.DomplateTag
                                  - */
                                  -FBL.DomplateLoop = function DomplateLoop()
                                  -{
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var DomplateTag = FBL.DomplateTag;
                                  -var DomplateEmbed = FBL.DomplateEmbed;
                                  -var DomplateLoop = FBL.DomplateLoop;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var womb = null;
                                  -
                                  -FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -var domplate = FBL.domplate;
                                  -
                                  -FBL.domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -FBL.DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); };
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js);
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateEmbed.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateEmbed.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.DomplateLoop.prototype = copyObject(FBL.DomplateTag.prototype,
                                  -/** @lends FBL.DomplateLoop.prototype */
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -/** @class */
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/** @class */
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -/** @class */
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** @namespace */
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild;
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertBefore: function(args, before, self)
                                  -    {
                                  -        return this.insertNode(args, before.ownerDocument, before, false, self);
                                  -    },
                                  -
                                  -    insertAfter: function(args, after, self)
                                  -    {
                                  -        return this.insertNode(args, after.ownerDocument, after, true, self);
                                  -    },
                                  -
                                  -    insertNode: function(args, doc, element, isAfter, self)
                                  -    {
                                  -        if (!args)
                                  -            args = {};
                                  -
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode html: "+html+"\n");
                                  -
                                  -        var doc = element.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        if (isAfter)
                                  -        {
                                  -            while (womb.firstChild)
                                  -                if (element.nextSibling)
                                  -                    element.parentNode.insertBefore(womb.firstChild, element.nextSibling);
                                  -                else
                                  -                    element.parentNode.appendChild(womb.firstChild);
                                  -        }
                                  -        else
                                  -        {
                                  -            while (womb.lastChild)
                                  -                element.parentNode.insertBefore(womb.lastChild, element);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        //if (FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("domplate.insertNode domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -
                                  -    /*
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -    /**/
                                  -    
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/branches/flexBox/content/firebug/editor.js b/branches/flexBox/content/firebug/editor.js
                                  deleted file mode 100644
                                  index 346c093c..00000000
                                  --- a/branches/flexBox/content/firebug/editor.js
                                  +++ /dev/null
                                  @@ -1,1395 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var saveTimeout = 400;
                                  -var pageAmount = 10;
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var currentTarget = null;
                                  -var currentGroup = null;
                                  -var currentPanel = null;
                                  -var currentEditor = null;
                                  -
                                  -var defaultEditor = null;
                                  -
                                  -var originalClassName = null;
                                  -
                                  -var originalValue = null;
                                  -var defaultValue = null;
                                  -var previousValue = null;
                                  -
                                  -var invalidEditor = false;
                                  -var ignoreNextInput = false;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Editor = extend(Firebug.Module,
                                  -{
                                  -    supportsStopEvent: true,
                                  -
                                  -    dispatchName: "editor",
                                  -    tabCharacter: "    ",
                                  -
                                  -    startEditing: function(target, value, editor)
                                  -    {
                                  -        this.stopEditing();
                                  -
                                  -        if (hasClass(target, "insertBefore") || hasClass(target, "insertAfter"))
                                  -            return;
                                  -
                                  -        var panel = Firebug.getElementPanel(target);
                                  -        if (!panel.editable)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.startEditing " + value, target);
                                  -
                                  -        defaultValue = target.getAttribute("defaultValue");
                                  -        if (value == undefined)
                                  -        {
                                  -            var textContent = isIE ? "innerText" : "textContent";
                                  -            value = target[textContent];
                                  -            if (value == defaultValue)
                                  -                value = "";
                                  -        }
                                  -
                                  -        originalValue = previousValue = value;
                                  -
                                  -        invalidEditor = false;
                                  -        currentTarget = target;
                                  -        currentPanel = panel;
                                  -        currentGroup = getAncestorByClass(target, "editGroup");
                                  -
                                  -        currentPanel.editing = true;
                                  -
                                  -        var panelEditor = currentPanel.getEditor(target, value);
                                  -        currentEditor = editor ? editor : panelEditor;
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        var inlineParent = getInlineParent(target);
                                  -        var targetSize = getOffsetSize(inlineParent);
                                  -
                                  -        setClass(panel.panelNode, "editing");
                                  -        setClass(target, "editing");
                                  -        if (currentGroup)
                                  -            setClass(currentGroup, "editing");
                                  -
                                  -        currentEditor.show(target, currentPanel, value, targetSize);
                                  -        //dispatch(this.fbListeners, "onBeginEditing", [currentPanel, currentEditor, target, value]);
                                  -        currentEditor.beginEditing(target, value);
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Editor start panel "+currentPanel.name);
                                  -        this.attachListeners(currentEditor, panel.context);
                                  -    },
                                  -
                                  -    stopEditing: function(cancel)
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.stopEditing cancel:" + cancel+" saveTimeout: "+this.saveTimeout);
                                  -
                                  -        clearTimeout(this.saveTimeout);
                                  -        delete this.saveTimeout;
                                  -
                                  -        this.detachListeners(currentEditor, currentPanel.context);
                                  -
                                  -        removeClass(currentPanel.panelNode, "editing");
                                  -        removeClass(currentTarget, "editing");
                                  -        if (currentGroup)
                                  -            removeClass(currentGroup, "editing");
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        if (value == defaultValue)
                                  -            value = "";
                                  -
                                  -        var removeGroup = currentEditor.endEditing(currentTarget, value, cancel);
                                  -
                                  -        try
                                  -        {
                                  -            if (cancel)
                                  -            {
                                  -                //dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, removeGroup && !originalValue]);
                                  -                if (value != originalValue)
                                  -                    this.saveEditAndNotifyListeners(currentTarget, originalValue, previousValue);
                                  -
                                  -                if (removeGroup && !originalValue && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else if (!value)
                                  -            {
                                  -                this.saveEditAndNotifyListeners(currentTarget, null, previousValue);
                                  -
                                  -                if (removeGroup && currentGroup)
                                  -                    currentGroup.parentNode.removeChild(currentGroup);
                                  -            }
                                  -            else
                                  -                this.save(value);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            //throw exc.message;
                                  -            //ERROR(exc);
                                  -        }
                                  -
                                  -        currentEditor.hide();
                                  -        currentPanel.editing = false;
                                  -
                                  -        //dispatch(this.fbListeners, "onStopEdit", [currentPanel, currentEditor, currentTarget]);
                                  -        //if (FBTrace.DBG_EDITOR)
                                  -        //    FBTrace.sysout("Editor stop panel "+currentPanel.name);
                                  -        
                                  -        currentTarget = null;
                                  -        currentGroup = null;
                                  -        currentPanel = null;
                                  -        currentEditor = null;
                                  -        originalValue = null;
                                  -        invalidEditor = false;
                                  -
                                  -        return value;
                                  -    },
                                  -
                                  -    cancelEditing: function()
                                  -    {
                                  -        return this.stopEditing(true);
                                  -    },
                                  -
                                  -    update: function(saveNow)
                                  -    {
                                  -        if (this.saveTimeout)
                                  -            clearTimeout(this.saveTimeout);
                                  -
                                  -        invalidEditor = true;
                                  -
                                  -        currentEditor.layout();
                                  -
                                  -        if (saveNow)
                                  -            this.save();
                                  -        else
                                  -        {
                                  -            var context = currentPanel.context;
                                  -            this.saveTimeout = context.setTimeout(bindFixed(this.save, this), saveTimeout);
                                  -            if (FBTrace.DBG_EDITOR)
                                  -                FBTrace.sysout("editor.update saveTimeout: "+this.saveTimeout);
                                  -        }
                                  -    },
                                  -
                                  -    save: function(value)
                                  -    {
                                  -        if (!invalidEditor)
                                  -            return;
                                  -
                                  -        if (value == undefined)
                                  -            value = currentEditor.getValue();
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("editor.save saveTimeout: "+this.saveTimeout+" currentPanel: "+(currentPanel?currentPanel.name:"null"));
                                  -        try
                                  -        {
                                  -            this.saveEditAndNotifyListeners(currentTarget, value, previousValue);
                                  -
                                  -            previousValue = value;
                                  -            invalidEditor = false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("editor.save FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    saveEditAndNotifyListeners: function(currentTarget, value, previousValue)
                                  -    {
                                  -        currentEditor.saveEdit(currentTarget, value, previousValue);
                                  -        //dispatch(this.fbListeners, "onSaveEdit", [currentPanel, currentEditor, currentTarget, value, previousValue]);
                                  -    },
                                  -
                                  -    setEditTarget: function(element)
                                  -    {
                                  -        if (!element)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onInlineEditorClose', [currentPanel, currentTarget, true]);
                                  -            this.stopEditing();
                                  -        }
                                  -        else if (hasClass(element, "insertBefore"))
                                  -            this.insertRow(element, "before");
                                  -        else if (hasClass(element, "insertAfter"))
                                  -            this.insertRow(element, "after");
                                  -        else
                                  -            this.startEditing(element);
                                  -    },
                                  -
                                  -    tabNextEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var nextEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            nextEditable = !value && currentGroup
                                  -                ? getNextOutsider(nextEditable, currentGroup)
                                  -                : getNextByClass(nextEditable, "editable");
                                  -        }
                                  -        while (nextEditable && !nextEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(nextEditable);
                                  -    },
                                  -
                                  -    tabPreviousEditor: function()
                                  -    {
                                  -        if (!currentTarget)
                                  -            return;
                                  -
                                  -        var value = currentEditor.getValue();
                                  -        var prevEditable = currentTarget;
                                  -        do
                                  -        {
                                  -            prevEditable = !value && currentGroup
                                  -                ? getPreviousOutsider(prevEditable, currentGroup)
                                  -                : getPreviousByClass(prevEditable, "editable");
                                  -        }
                                  -        while (prevEditable && !prevEditable.offsetHeight);
                                  -
                                  -        this.setEditTarget(prevEditable);
                                  -    },
                                  -
                                  -    insertRow: function(relative, insertWhere)
                                  -    {
                                  -        var group =
                                  -            relative || getAncestorByClass(currentTarget, "editGroup") || currentTarget;
                                  -        var value = this.stopEditing();
                                  -
                                  -        currentPanel = Firebug.getElementPanel(group);
                                  -
                                  -        currentEditor = currentPanel.getEditor(group, value);
                                  -        if (!currentEditor)
                                  -            currentEditor = getDefaultEditor(currentPanel);
                                  -
                                  -        currentGroup = currentEditor.insertNewRow(group, insertWhere);
                                  -        if (!currentGroup)
                                  -            return;
                                  -
                                  -        var editable = hasClass(currentGroup, "editable")
                                  -            ? currentGroup
                                  -            : getNextByClass(currentGroup, "editable");
                                  -
                                  -        if (editable)
                                  -            this.setEditTarget(editable);
                                  -    },
                                  -
                                  -    insertRowForObject: function(relative)
                                  -    {
                                  -        var container = getAncestorByClass(relative, "insertInto");
                                  -        if (container)
                                  -        {
                                  -            relative = getChildByClass(container, "insertBefore");
                                  -            if (relative)
                                  -                this.insertRow(relative, "before");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachListeners: function(editor, context)
                                  -    {
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        addEvent(win, "resize", this.onResize);
                                  -        addEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        this.listeners = [
                                  -            chrome.keyCodeListen("ESCAPE", null, bind(this.cancelEditing, this))
                                  -        ];
                                  -
                                  -        if (editor.arrowCompletion)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("UP", null, bindFixed(editor.completeValue, editor, -1)),
                                  -                chrome.keyCodeListen("DOWN", null, bindFixed(editor.completeValue, editor, 1)),
                                  -                chrome.keyCodeListen("PAGE_UP", null, bindFixed(editor.completeValue, editor, -pageAmount)),
                                  -                chrome.keyCodeListen("PAGE_DOWN", null, bindFixed(editor.completeValue, editor, pageAmount))
                                  -            );
                                  -        }
                                  -
                                  -        if (currentEditor.tabNavigation)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("RETURN", isControl, bind(this.insertRow, this, null, "after")),
                                  -                chrome.keyCodeListen("TAB", null, bind(this.tabNextEditor, this)),
                                  -                chrome.keyCodeListen("TAB", isShift, bind(this.tabPreviousEditor, this))
                                  -            );
                                  -        }
                                  -        else if (currentEditor.multiLine)
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("TAB", null, insertTab)
                                  -            );
                                  -        }
                                  -        else
                                  -        {
                                  -            this.listeners.push(
                                  -                chrome.keyCodeListen("RETURN", null, bindFixed(this.stopEditing, this))
                                  -            );
                                  -
                                  -            if (currentEditor.tabCompletion)
                                  -            {
                                  -                this.listeners.push(
                                  -                    chrome.keyCodeListen("TAB", null, bind(editor.completeValue, editor, 1)),
                                  -                    chrome.keyCodeListen("TAB", isShift, bind(editor.completeValue, editor, -1))
                                  -                );
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    detachListeners: function(editor, context)
                                  -    {
                                  -        if (!this.listeners)
                                  -            return;
                                  -
                                  -        var win = isIE ?
                                  -                currentTarget.ownerDocument.parentWindow :
                                  -                currentTarget.ownerDocument.defaultView;
                                  -        
                                  -        removeEvent(win, "resize", this.onResize);
                                  -        removeEvent(win, "blur", this.onBlur);
                                  -
                                  -        var chrome = Firebug.chrome;
                                  -        if (chrome)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; ++i)
                                  -                chrome.keyIgnore(this.listeners[i]);
                                  -        }
                                  -
                                  -        delete this.listeners;
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        currentEditor.layout(true);
                                  -    },
                                  -
                                  -    onBlur: function(event)
                                  -    {
                                  -        if (currentEditor.enterOnBlur && isAncestor(event.target, currentEditor.box))
                                  -            this.stopEditing();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -
                                  -        this.onResize = bindFixed(this.onResize, this);
                                  -        this.onBlur = bind(this.onBlur, this);
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        this.stopEditing();
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        this.stopEditing();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// BaseEditor
                                  -
                                  -Firebug.BaseEditor = extend(Firebug.MeasureBox,
                                  -{
                                  -    getValue: function()
                                  -    {
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for context menus within inline editors.
                                  -
                                  -    getContextMenuItems: function(target)
                                  -    {
                                  -        var items = [];
                                  -        items.push({label: "Cut", commandID: "cmd_cut"});
                                  -        items.push({label: "Copy", commandID: "cmd_copy"});
                                  -        items.push({label: "Paste", commandID: "cmd_paste"});
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Editor Module listeners will get "onBeginEditing" just before this call
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // Editor Module listeners will get "onSaveEdit" just after this call
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// InlineEditor
                                  -
                                  -// basic inline editor attributes
                                  -var inlineEditorAttributes = {
                                  -    "class": "textEditorInner",
                                  -    
                                  -    type: "text", 
                                  -    spellcheck: "false",
                                  -    
                                  -    onkeypress: "$onKeyPress",
                                  -    
                                  -    onoverflow: "$onOverflow",
                                  -    oncontextmenu: "$onContextMenu"
                                  -};
                                  -
                                  -// IE does not support the oninput event, so we're using the onkeydown to signalize
                                  -// the relevant keyboard events, and the onpropertychange to actually handle the
                                  -// input event, which should happen after the onkeydown event is fired and after the 
                                  -// value of the input is updated, but before the onkeyup and before the input (with the 
                                  -// new value) is rendered
                                  -if (isIE)
                                  -{
                                  -    inlineEditorAttributes.onpropertychange = "$onInput";
                                  -    inlineEditorAttributes.onkeydown = "$onKeyDown";
                                  -}
                                  -// for other browsers we use the oninput event
                                  -else
                                  -{
                                  -    inlineEditorAttributes.oninput = "$onInput";
                                  -}
                                  -
                                  -Firebug.InlineEditor = function(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -};
                                  -
                                  -Firebug.InlineEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    enterOnBlur: true,
                                  -    outerMargin: 8,
                                  -    shadowExpand: 7,
                                  -
                                  -    tag:
                                  -        DIV({"class": "inlineEditor"},
                                  -            DIV({"class": "textEditorTop1"},
                                  -                DIV({"class": "textEditorTop2"})
                                  -            ),
                                  -            DIV({"class": "textEditorInner1"},
                                  -                DIV({"class": "textEditorInner2"},
                                  -                    INPUT(
                                  -                        inlineEditorAttributes
                                  -                    )
                                  -                )
                                  -            ),
                                  -            DIV({"class": "textEditorBottom1"},
                                  -                DIV({"class": "textEditorBottom2"})
                                  -            )
                                  -        ),
                                  -
                                  -    inputTag :
                                  -        INPUT({"class": "textEditorInner", type: "text",
                                  -            /*oninput: "$onInput",*/ onkeypress: "$onKeyPress", onoverflow: "$onOverflow"}
                                  -        ),
                                  -
                                  -    expanderTag:
                                  -        IMG({"class": "inlineExpander", src: "blank.gif"}),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.fixedWidth = false;
                                  -        this.completeAsYouType = true;
                                  -        this.tabNavigation = true;
                                  -        this.multiLine = false;
                                  -        this.tabCompletion = false;
                                  -        this.arrowCompletion = true;
                                  -        this.noWrap = true;
                                  -        this.numeric = false;
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        this.destroyInput();
                                  -    },
                                  -
                                  -    initializeInline: function(doc)
                                  -    {
                                  -        if (FBTrace.DBG_EDITOR)
                                  -            FBTrace.sysout("Firebug.InlineEditor initializeInline()");
                                  -        
                                  -        //this.box = this.tag.replace({}, doc, this);
                                  -        this.box = this.tag.append({}, doc.body, this);
                                  -        
                                  -        //this.input = this.box.childNodes[1].firstChild.firstChild;  // XXXjjb childNode[1] required
                                  -        this.input = this.box.getElementsByTagName("input")[0];
                                  -        
                                  -        if (isIElt8)
                                  -        {
                                  -            this.input.style.top = "-8px";
                                  -        }
                                  -        
                                  -        this.expander = this.expanderTag.replace({}, doc, this);
                                  -        this.initialize();
                                  -    },
                                  -
                                  -    destroyInput: function()
                                  -    {
                                  -        // XXXjoe Need to remove input/keypress handlers to avoid leaks
                                  -    },
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        // It's only a one-line editor, so new lines shouldn't be allowed
                                  -        return this.input.value = stripNewLines(value);
                                  -    },
                                  -
                                  -    show: function(target, panel, value, targetSize)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], "onInlineEditorShow", [panel, this]);
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -
                                  -        this.targetSize = targetSize;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        //this.targetOffset = getClientOffset(target);
                                  -        
                                  -        // Some browsers (IE, Google Chrome and Safari) will have problem trying to get the 
                                  -        // offset values of invisible elements, or empty elements. So, in order to get the 
                                  -        // correct values, we temporary inject a character in the innerHTML of the empty element, 
                                  -        // then we get the offset values, and next, we restore the original innerHTML value.
                                  -        var innerHTML = target.innerHTML;
                                  -        var isEmptyElement = !innerHTML;
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = ".";
                                  -        
                                  -        // Get the position of the target element (that is about to be edited)
                                  -        this.targetOffset = 
                                  -        {
                                  -            x: target.offsetLeft,
                                  -            y: target.offsetTop
                                  -        };
                                  -        
                                  -        // Restore the original innerHTML value of the empty element
                                  -        if (isEmptyElement)
                                  -            target.innerHTML = innerHTML;
                                  -        
                                  -        this.originalClassName = this.box.className;
                                  -
                                  -        var classNames = target.className.split(" ");
                                  -        for (var i = 0; i < classNames.length; ++i)
                                  -            setClass(this.box, "editor-" + classNames[i]);
                                  -
                                  -        // Make the editor match the target's font style
                                  -        copyTextStyles(target, this.box);
                                  -
                                  -        this.setValue(value);
                                  -
                                  -        if (this.fixedWidth)
                                  -            this.updateLayout(true);
                                  -        else
                                  -        {
                                  -            this.startMeasuring(target);
                                  -            this.textSize = this.measureInputText(value);
                                  -
                                  -            // Correct the height of the box to make the funky CSS drop-shadow line up
                                  -            var parent = this.input.parentNode;
                                  -            if (hasClass(parent, "textEditorInner2"))
                                  -            {
                                  -                var yDiff = this.textSize.height - this.shadowExpand;
                                  -                
                                  -                // IE6 height offset
                                  -                if (isIE6)
                                  -                    yDiff -= 2;
                                  -                
                                  -                parent.style.height = yDiff + "px";
                                  -                parent.parentNode.style.height = yDiff + "px";
                                  -            }
                                  -
                                  -            this.updateLayout(true);
                                  -        }
                                  -
                                  -        this.getAutoCompleter().reset();
                                  -
                                  -        if (isIElt8)
                                  -            panel.panelNode.appendChild(this.box);
                                  -        else
                                  -            target.offsetParent.appendChild(this.box);        
                                  -        
                                  -        //console.log(target);
                                  -        //this.input.select(); // it's called bellow, with setTimeout
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            // reset input style
                                  -            this.input.style.fontFamily = "Monospace";
                                  -            this.input.style.fontSize = "11px";
                                  -        }
                                  -
                                  -        // Insert the "expander" to cover the target element with white space
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            copyBoxStyles(target, this.expander);
                                  -
                                  -            target.parentNode.replaceChild(this.expander, target);
                                  -            collapse(target, true);
                                  -            this.expander.parentNode.insertBefore(target, this.expander);
                                  -        }
                                  -
                                  -        //TODO: xxxpedro
                                  -        //scrollIntoCenterView(this.box, null, true);
                                  -        
                                  -        // Display the editor after change its size and position to avoid flickering
                                  -        this.box.style.display = "block";
                                  -        
                                  -        // we need to call input.focus() and input.select() with a timeout, 
                                  -        // otherwise it won't work on all browsers due to timing issues 
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.input.focus();
                                  -            self.input.select();
                                  -        },0);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.box.className = this.originalClassName;
                                  -        
                                  -        if (!this.fixedWidth)
                                  -        {
                                  -            this.stopMeasuring();
                                  -
                                  -            collapse(this.target, false);
                                  -
                                  -            if (this.expander.parentNode)
                                  -                this.expander.parentNode.removeChild(this.expander);
                                  -        }
                                  -
                                  -        if (this.box.parentNode)
                                  -        {
                                  -            ///setSelectionRange(this.input, 0, 0);
                                  -            this.input.blur();
                                  -            
                                  -            this.box.parentNode.removeChild(this.box);
                                  -        }
                                  -
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    layout: function(forceAll)
                                  -    {
                                  -        if (!this.fixedWidth)
                                  -            this.textSize = this.measureInputText(this.input.value);
                                  -
                                  -        if (forceAll)
                                  -            this.targetOffset = getClientOffset(this.expander);
                                  -
                                  -        this.updateLayout(false, forceAll);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleter: function()
                                  -    {
                                  -        if (!this.autoCompleter)
                                  -        {
                                  -            this.autoCompleter = new Firebug.AutoCompleter(null,
                                  -                bind(this.getAutoCompleteRange, this), bind(this.getAutoCompleteList, this),
                                  -                true, false);
                                  -        }
                                  -
                                  -        return this.autoCompleter;
                                  -    },
                                  -
                                  -    completeValue: function(amt)
                                  -    {
                                  -        //console.log("completeValue");
                                  -        
                                  -        var selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, true, amt < 0); 
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            Firebug.Editor.update(true);
                                  -            
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -        else
                                  -            this.incrementValue(amt);
                                  -    },
                                  -
                                  -    incrementValue: function(amt)
                                  -    {
                                  -        var value = this.input.value;
                                  -        
                                  -        // TODO: xxxpedro editor
                                  -        if (isIE)
                                  -            var start = getInputSelectionStart(this.input), end = start;
                                  -        else
                                  -            var start = this.input.selectionStart, end = this.input.selectionEnd;
                                  -
                                  -        //debugger;
                                  -        var range = this.getAutoCompleteRange(value, start);
                                  -        if (!range || range.type != "int")
                                  -            range = {start: 0, end: value.length-1};
                                  -
                                  -        var expr = value.substr(range.start, range.end-range.start+1);
                                  -        preExpr = value.substr(0, range.start);
                                  -        postExpr = value.substr(range.end+1);
                                  -
                                  -        // See if the value is an integer, and if so increment it
                                  -        var intValue = parseInt(expr);
                                  -        if (!!intValue || intValue == 0)
                                  -        {
                                  -            var m = /\d+/.exec(expr);
                                  -            var digitPost = expr.substr(m.index+m[0].length);
                                  -
                                  -            var completion = intValue-amt;
                                  -            this.input.value = preExpr + completion + digitPost + postExpr;
                                  -            
                                  -            setSelectionRange(this.input, start, end);
                                  -
                                  -            Firebug.Editor.update(true);
                                  -
                                  -            return true;
                                  -        }
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        //console.log("onKeyPress", event);
                                  -        if (event.keyCode == 27 && !this.completeAsYouType)
                                  -        {
                                  -            var reverted = this.getAutoCompleter().revert(this.input);
                                  -            if (reverted)
                                  -                cancelEvent(event);
                                  -        }
                                  -        else if (event.charCode && this.advanceToNext(this.target, event.charCode))
                                  -        {
                                  -            Firebug.Editor.tabNextEditor();
                                  -            cancelEvent(event);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.numeric && event.charCode && (event.charCode < 48 || event.charCode > 57)
                                  -                && event.charCode != 45 && event.charCode != 46)
                                  -                FBL.cancelEvent(event);
                                  -            else
                                  -            {
                                  -                // If the user backspaces, don't autocomplete after the upcoming input event
                                  -                this.ignoreNextInput = event.keyCode == 8;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onOverflow: function()
                                  -    {
                                  -        this.updateLayout(false, false, 3);
                                  -    },
                                  -
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        //console.log("onKeyDown", event.keyCode);
                                  -        if (event.keyCode > 46 || event.keyCode == 32 || event.keyCode == 8)
                                  -        {
                                  -            this.keyDownPressed = true;
                                  -        }
                                  -    },
                                  -    
                                  -    onInput: function(event)
                                  -    {
                                  -        //debugger;
                                  -        
                                  -        // skip not relevant onpropertychange calls on IE
                                  -        if (isIE)
                                  -        {
                                  -            if (event.propertyName != "value" || !isVisible(this.input) || !this.keyDownPressed) 
                                  -                return;
                                  -            
                                  -            this.keyDownPressed = false;
                                  -        }
                                  -        
                                  -        //console.log("onInput", event);
                                  -        //console.trace();
                                  -        
                                  -        var selectRangeCallback;
                                  -        
                                  -        if (this.ignoreNextInput)
                                  -        {
                                  -            this.ignoreNextInput = false;
                                  -            this.getAutoCompleter().reset();
                                  -        }
                                  -        else if (this.completeAsYouType)
                                  -            selectRangeCallback = this.getAutoCompleter().complete(currentPanel.context, this.input, false);
                                  -        else
                                  -            this.getAutoCompleter().reset();
                                  -
                                  -        Firebug.Editor.update();
                                  -        
                                  -        if (selectRangeCallback)
                                  -        {
                                  -            // We need to select the editor text after calling update in Safari/Chrome,
                                  -            // otherwise the text won't be selected
                                  -            if (isSafari)
                                  -                setTimeout(selectRangeCallback,0);
                                  -            else
                                  -                selectRangeCallback();
                                  -        }
                                  -    },
                                  -
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var popup = $("fbInlineEditorPopup");
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        var menu = this.getContextMenuItems(target);
                                  -        if (menu)
                                  -        {
                                  -            for (var i = 0; i < menu.length; ++i)
                                  -                FBL.createMenuItem(popup, menu[i]);
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -
                                  -        popup.openPopupAtScreen(event.screenX, event.screenY, true);
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateLayout: function(initial, forceAll, extraWidth)
                                  -    {
                                  -        if (this.fixedWidth)
                                  -        {
                                  -            this.box.style.left = (this.targetOffset.x) + "px";
                                  -            this.box.style.top = (this.targetOffset.y) + "px";
                                  -
                                  -            var w = this.target.offsetWidth;
                                  -            var h = this.target.offsetHeight;
                                  -            this.input.style.width = w + "px";
                                  -            this.input.style.height = (h-3) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            if (initial || forceAll)
                                  -            {
                                  -                this.box.style.left = this.targetOffset.x + "px";
                                  -                this.box.style.top = this.targetOffset.y + "px";
                                  -            }
                                  -
                                  -            var approxTextWidth = this.textSize.width;
                                  -            var maxWidth = (currentPanel.panelNode.scrollWidth - this.targetOffset.x)
                                  -                - this.outerMargin;
                                  -
                                  -            var wrapped = initial
                                  -                ? this.noWrap && this.targetSize.height > this.textSize.height+3
                                  -                : this.noWrap && approxTextWidth > maxWidth;
                                  -
                                  -            if (wrapped)
                                  -            {
                                  -                var style = isIE ?
                                  -                        this.target.currentStyle :
                                  -                        this.target.ownerDocument.defaultView.getComputedStyle(this.target, "");
                                  -                
                                  -                targetMargin = parseInt(style.marginLeft) + parseInt(style.marginRight);
                                  -
                                  -                // Make the width fit the remaining x-space from the offset to the far right
                                  -                approxTextWidth = maxWidth - targetMargin;
                                  -
                                  -                this.input.style.width = "100%";
                                  -                this.box.style.width = approxTextWidth + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                // Make the input one character wider than the text value so that
                                  -                // typing does not ever cause the textbox to scroll
                                  -                var charWidth = this.measureInputText('m').width;
                                  -
                                  -                // Sometimes we need to make the editor a little wider, specifically when
                                  -                // an overflow happens, otherwise it will scroll off some text on the left
                                  -                if (extraWidth)
                                  -                    charWidth *= extraWidth;
                                  -
                                  -                var inputWidth = approxTextWidth + charWidth;
                                  -
                                  -                if (initial)
                                  -                {
                                  -                    if (isIE)
                                  -                    {
                                  -                        // TODO: xxxpedro
                                  -                        var xDiff = 13;
                                  -                        this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                    }
                                  -                    else
                                  -                        this.box.style.width = "auto";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // TODO: xxxpedro
                                  -                    var xDiff = isIE ? 13: this.box.scrollWidth - this.input.offsetWidth;
                                  -                    this.box.style.width = (inputWidth + xDiff) + "px";
                                  -                }
                                  -
                                  -                this.input.style.width = inputWidth + "px";
                                  -            }
                                  -
                                  -            this.expander.style.width = approxTextWidth + "px";
                                  -            this.expander.style.height = Math.max(this.textSize.height-3,0) + "px";
                                  -        }
                                  -
                                  -        if (forceAll)
                                  -            scrollIntoCenterView(this.box, null, true);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Autocompletion
                                  -
                                  -Firebug.AutoCompleter = function(getExprOffset, getRange, evaluator, selectMode, caseSensitive)
                                  -{
                                  -    var candidates = null;
                                  -    var originalValue = null;
                                  -    var originalOffset = -1;
                                  -    var lastExpr = null;
                                  -    var lastOffset = -1;
                                  -    var exprOffset = 0;
                                  -    var lastIndex = 0;
                                  -    var preParsed = null;
                                  -    var preExpr = null;
                                  -    var postExpr = null;
                                  -
                                  -    this.revert = function(textBox)
                                  -    {
                                  -        if (originalOffset != -1)
                                  -        {
                                  -            textBox.value = originalValue;
                                  -            
                                  -            setSelectionRange(textBox, originalOffset, originalOffset);
                                  -
                                  -            this.reset();
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            this.reset();
                                  -            return false;
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        candidates = null;
                                  -        originalValue = null;
                                  -        originalOffset = -1;
                                  -        lastExpr = null;
                                  -        lastOffset = 0;
                                  -        exprOffset = 0;
                                  -    };
                                  -
                                  -    this.complete = function(context, textBox, cycle, reverse)
                                  -    {
                                  -        //console.log("complete", context, textBox, cycle, reverse);
                                  -        // TODO: xxxpedro important port to firebug (variable leak)
                                  -        //var value = lastValue = textBox.value;
                                  -        var value = textBox.value;
                                  -        
                                  -        //var offset = textBox.selectionStart;
                                  -        var offset = getInputSelectionStart(textBox);
                                  -        
                                  -        // The result of selectionStart() in Safari/Chrome is 1 unit less than the result
                                  -        // in Firefox. Therefore, we need to manually adjust the value here.
                                  -        if (isSafari && !cycle && offset >= 0) offset++;
                                  -        
                                  -        if (!selectMode && originalOffset != -1)
                                  -            offset = originalOffset;
                                  -
                                  -        if (!candidates || !cycle || offset != lastOffset)
                                  -        {
                                  -            originalOffset = offset;
                                  -            originalValue = value;
                                  -
                                  -            // Find the part of the string that will be parsed
                                  -            var parseStart = getExprOffset ? getExprOffset(value, offset, context) : 0;
                                  -            preParsed = value.substr(0, parseStart);
                                  -            var parsed = value.substr(parseStart);
                                  -
                                  -            // Find the part of the string that is being completed
                                  -            var range = getRange ? getRange(parsed, offset-parseStart, context) : null;
                                  -            if (!range)
                                  -                range = {start: 0, end: parsed.length-1 };
                                  -
                                  -            var expr = parsed.substr(range.start, range.end-range.start+1);
                                  -            preExpr = parsed.substr(0, range.start);
                                  -            postExpr = parsed.substr(range.end+1);
                                  -            exprOffset = parseStart + range.start;
                                  -
                                  -            if (!cycle)
                                  -            {
                                  -                if (!expr)
                                  -                    return;
                                  -                else if (lastExpr && lastExpr.indexOf(expr) != 0)
                                  -                {
                                  -                    candidates = null;
                                  -                }
                                  -                else if (lastExpr && lastExpr.length >= expr.length)
                                  -                {
                                  -                    candidates = null;
                                  -                    lastExpr = expr;
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            lastExpr = expr;
                                  -            lastOffset = offset;
                                  -
                                  -            var searchExpr;
                                  -
                                  -            // Check if the cursor is at the very right edge of the expression, or
                                  -            // somewhere in the middle of it
                                  -            if (expr && offset != parseStart+range.end+1)
                                  -            {
                                  -                if (cycle)
                                  -                {
                                  -                    // We are in the middle of the expression, but we can
                                  -                    // complete by cycling to the next item in the values
                                  -                    // list after the expression
                                  -                    offset = range.start;
                                  -                    searchExpr = expr;
                                  -                    expr = "";
                                  -                }
                                  -                else
                                  -                {
                                  -                    // We can't complete unless we are at the ridge edge
                                  -                    return;
                                  -                }
                                  -            }
                                  -
                                  -            var values = evaluator(preExpr, expr, postExpr, context);
                                  -            if (!values)
                                  -                return;
                                  -
                                  -            if (expr)
                                  -            {
                                  -                // Filter the list of values to those which begin with expr. We
                                  -                // will then go on to complete the first value in the resulting list
                                  -                candidates = [];
                                  -
                                  -                if (caseSensitive)
                                  -                {
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.indexOf(expr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = caseSensitive ? expr : expr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name.indexOf && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                            candidates.push(name);
                                  -                    }
                                  -                }
                                  -
                                  -                lastIndex = reverse ? candidates.length-1 : 0;
                                  -            }
                                  -            else if (searchExpr)
                                  -            {
                                  -                var searchIndex = -1;
                                  -
                                  -                // Find the first instance of searchExpr in the values list. We
                                  -                // will then complete the string that is found
                                  -                if (caseSensitive)
                                  -                {
                                  -                    searchIndex = values.indexOf(expr);
                                  -                }
                                  -                else
                                  -                {
                                  -                    var lowerExpr = searchExpr.toLowerCase();
                                  -                    for (var i = 0; i < values.length; ++i)
                                  -                    {
                                  -                        var name = values[i];
                                  -                        if (name && name.toLowerCase().indexOf(lowerExpr) == 0)
                                  -                        {
                                  -                            searchIndex = i;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                // Nothing found, so there's nothing to complete to
                                  -                if (searchIndex == -1)
                                  -                    return this.reset();
                                  -
                                  -                expr = searchExpr;
                                  -                candidates = cloneArray(values);
                                  -                lastIndex = searchIndex;
                                  -            }
                                  -            else
                                  -            {
                                  -                expr = "";
                                  -                candidates = [];
                                  -                for (var i = 0; i < values.length; ++i)
                                  -                {
                                  -                    if (values[i].substr)
                                  -                        candidates.push(values[i]);
                                  -                }
                                  -                lastIndex = -1;
                                  -            }
                                  -        }
                                  -
                                  -        if (cycle)
                                  -        {
                                  -            expr = lastExpr;
                                  -            lastIndex += reverse ? -1 : 1;
                                  -        }
                                  -
                                  -        if (!candidates.length)
                                  -            return;
                                  -
                                  -        if (lastIndex >= candidates.length)
                                  -            lastIndex = 0;
                                  -        else if (lastIndex < 0)
                                  -            lastIndex = candidates.length-1;
                                  -
                                  -        var completion = candidates[lastIndex];
                                  -        var preCompletion = expr.substr(0, offset-exprOffset);
                                  -        var postCompletion = completion.substr(offset-exprOffset);
                                  -
                                  -        textBox.value = preParsed + preExpr + preCompletion + postCompletion + postExpr;
                                  -        var offsetEnd = preParsed.length + preExpr.length + completion.length;
                                  -        
                                  -        // TODO: xxxpedro remove the following commented code, if the lib.setSelectionRange()
                                  -        // is working well.
                                  -        /*
                                  -        if (textBox.setSelectionRange)
                                  -        {
                                  -            // we must select the range with a timeout, otherwise the text won't
                                  -            // be properly selected (because after this function executes, the editor's
                                  -            // input will be resized to fit the whole text)
                                  -            setTimeout(function(){
                                  -                if (selectMode)
                                  -                    textBox.setSelectionRange(offset, offsetEnd);
                                  -                else
                                  -                    textBox.setSelectionRange(offsetEnd, offsetEnd);
                                  -            },0);
                                  -        }
                                  -        /**/
                                  -        
                                  -        // we must select the range with a timeout, otherwise the text won't
                                  -        // be properly selected (because after this function executes, the editor's
                                  -        // input will be resized to fit the whole text)
                                  -        /*
                                  -        setTimeout(function(){
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        },0);
                                  -                
                                  -        return true;
                                  -        /**/
                                  -        
                                  -        // The editor text should be selected only after calling the editor.update() 
                                  -        // in Safari/Chrome, otherwise the text won't be selected. So, we're returning
                                  -        // a function to be called later (in the proper time for all browsers).
                                  -        //
                                  -        // TODO: xxxpedro see if we can move the editor.update() calls to here, and avoid
                                  -        // returning a closure. the complete() function seems to be called only twice in
                                  -        // editor.js. See if this function is called anywhere else (like css.js for example).
                                  -        return function(){
                                  -            //console.log("autocomplete ", textBox, offset, offsetEnd);
                                  -            
                                  -            if (selectMode)
                                  -                setSelectionRange(textBox, offset, offsetEnd);
                                  -            else
                                  -                setSelectionRange(textBox, offsetEnd, offsetEnd);
                                  -        };
                                  -        /**/
                                  -    };
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getDefaultEditor = function getDefaultEditor(panel)
                                  -{
                                  -    if (!defaultEditor)
                                  -    {
                                  -        var doc = panel.document;
                                  -        defaultEditor = new Firebug.InlineEditor(doc);
                                  -    }
                                  -
                                  -    return defaultEditor;
                                  -}
                                  -
                                  -/**
                                  - * An outsider is the first element matching the stepper element that
                                  - * is not an child of group. Elements tagged with insertBefore or insertAfter
                                  - * classes are also excluded from these results unless they are the sibling
                                  - * of group, relative to group's parent editGroup. This allows for the proper insertion
                                  - * rows when groups are nested.
                                  - */
                                  -var getOutsider = function getOutsider(element, group, stepper)
                                  -{
                                  -    var parentGroup = getAncestorByClass(group.parentNode, "editGroup");
                                  -    var next;
                                  -    do
                                  -    {
                                  -        next = stepper(next || element);
                                  -    }
                                  -    while (isAncestor(next, group) || isGroupInsert(next, parentGroup));
                                  -
                                  -    return next;
                                  -}
                                  -
                                  -var isGroupInsert = function isGroupInsert(next, group)
                                  -{
                                  -    return (!group || isAncestor(next, group))
                                  -        && (hasClass(next, "insertBefore") || hasClass(next, "insertAfter"));
                                  -}
                                  -
                                  -var getNextOutsider = function getNextOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getNextByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getPreviousOutsider = function getPreviousOutsider(element, group)
                                  -{
                                  -    return getOutsider(element, group, bind(getPreviousByClass, FBL, "editable"));
                                  -}
                                  -
                                  -var getInlineParent = function getInlineParent(element)
                                  -{
                                  -    var lastInline = element;
                                  -    for (; element; element = element.parentNode)
                                  -    {
                                  -        //var s = element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        var s = isIE ?
                                  -                element.currentStyle :
                                  -                element.ownerDocument.defaultView.getComputedStyle(element, "");
                                  -        
                                  -        if (s.display != "inline")
                                  -            return lastInline;
                                  -        else
                                  -            lastInline = element;
                                  -    }
                                  -    return null;
                                  -}
                                  -
                                  -var insertTab = function insertTab()
                                  -{
                                  -    insertTextIntoElement(currentEditor.input, Firebug.Editor.tabCharacter);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Editor);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/highlighter.css b/branches/flexBox/content/firebug/highlighter.css
                                  deleted file mode 100644
                                  index df55b1f6..00000000
                                  --- a/branches/flexBox/content/firebug/highlighter.css
                                  +++ /dev/null
                                  @@ -1,117 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.firebugHighlight {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: #3875d7;
                                  -}
                                  -
                                  -.firebugLayoutBoxParent {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: transparent;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.firebugRulerH {
                                  -    position: absolute;
                                  -    top: -15px;
                                  -    left: 0;
                                  -    width: 100%;
                                  -    height: 14px;
                                  -    background: url(chrome://firebug/skin/rulerH.png) repeat-x;
                                  -    border-top: 1px solid #BBBBBB;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px solid #000000;
                                  -}
                                  -
                                  -.firebugRulerV {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: -15px;
                                  -    width: 14px;
                                  -    height: 100%;
                                  -    background: url(chrome://firebug/skin/rulerV.png) repeat-y;
                                  -    border-left: 1px solid #BBBBBB;
                                  -    border-right: 1px solid #000000;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.overflowRulerX > .firebugRulerV {
                                  -    left: 0;
                                  -}
                                  -
                                  -.overflowRulerY > .firebugRulerH {
                                  -    top: 0;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.firebugLayoutBoxOffset {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    opacity: 0.8;
                                  -}
                                  -
                                  -.firebugLayoutBoxMargin {
                                  -    background-color: #EDFF64;
                                  -}
                                  -
                                  -.firebugLayoutBoxBorder {
                                  -    background-color: #666666;
                                  -}
                                  -
                                  -.firebugLayoutBoxPadding {
                                  -    background-color: SlateBlue;
                                  -}
                                  -
                                  -.firebugLayoutBoxContent {
                                  -    background-color: SkyBlue;
                                  -}
                                  -
                                  -/*.firebugHighlightGroup .firebugLayoutBox {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.firebugHighlightBox {
                                  -    background-color: Blue !important;
                                  -}*/
                                  -
                                  -.firebugLayoutLine {
                                  -    z-index: 2147483647;
                                  -    background-color: #000000;
                                  -    opacity: 0.4;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft,
                                  -.firebugLayoutLineRight {
                                  -    position: fixed;
                                  -    width: 1px;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.firebugLayoutLineTop,
                                  -.firebugLayoutLineBottom {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 1px;
                                  -}
                                  -
                                  -.firebugLayoutLineTop {
                                  -    margin-top: -1px;
                                  -    border-top: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineRight {
                                  -    border-right: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineBottom {
                                  -    border-bottom: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft {
                                  -    margin-left: -1px;
                                  -    border-left: 1px solid #999999;
                                  -}
                                  diff --git a/branches/flexBox/content/firebug/infotip.js b/branches/flexBox/content/firebug/infotip.js
                                  deleted file mode 100644
                                  index 680efd9f..00000000
                                  --- a/branches/flexBox/content/firebug/infotip.js
                                  +++ /dev/null
                                  @@ -1,369 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -
                                  -Hack:
                                  -Firebug.chrome.currentPanel = Firebug.chrome.selectedPanel; 
                                  -Firebug.showInfoTips = true; 
                                  -Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -
                                  -/**/
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var maxWidth = 100, maxHeight = 80;
                                  -var infoTipMargin = 10;
                                  -var infoTipWindowPadding = 25;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.InfoTip = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "infoTip",
                                  -    tags: domplate(
                                  -    {
                                  -        infoTipTag: DIV({"class": "infoTip"}),
                                  -
                                  -        colorTag:
                                  -            DIV({style: "background: $rgbValue; width: 100px; height: 40px"}, "&nbsp;"),
                                  -
                                  -        imgTag:
                                  -            DIV({"class": "infoTipImageBox infoTipLoading"},
                                  -                IMG({"class": "infoTipImage", src: "$urlValue", repeat: "$repeat",
                                  -                    onload: "$onLoadImage"}),
                                  -                IMG({"class": "infoTipBgImage", collapsed: true, src: "blank.gif"}),
                                  -                DIV({"class": "infoTipCaption"})
                                  -            ),
                                  -
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget || event.srcElement;
                                  -            ///var bgImg = img.nextSibling;
                                  -            ///if (!bgImg)
                                  -            ///    return; // Sometimes gets called after element is dead
                                  -
                                  -            ///var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -            
                                  -            /// TODO: xxxpedro infoTip hack
                                  -            var caption = getElementByClass(innerBox, "infoTipCaption");
                                  -            var bgImg = getElementByClass(innerBox, "infoTipBgImage");
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -            
                                  -            // TODO: xxxpedro infoTip IE and timing issue
                                  -            // TODO: use offline document to avoid flickering
                                  -            if (isIE)
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            
                                  -            var updateInfoTip = function(){
                                  -            
                                  -            var w = img.naturalWidth || img.width || 10, 
                                  -                h = img.naturalHeight || img.height || 10;
                                  -            
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -            caption.innerHTML = $STRF(w + " x " + h);
                                  -            
                                  -            
                                  -            };
                                  -            
                                  -            if (isIE) 
                                  -                setTimeout(updateInfoTip, 0);
                                  -            else
                                  -            {
                                  -                updateInfoTip();
                                  -                removeClass(innerBox, "infoTipLoading");
                                  -            }
                                  -
                                  -            ///
                                  -        }
                                  -        
                                  -        /*
                                  -        /// onLoadImage original
                                  -        onLoadImage: function(event)
                                  -        {
                                  -            var img = event.currentTarget;
                                  -            var bgImg = img.nextSibling;
                                  -            if (!bgImg)
                                  -                return; // Sometimes gets called after element is dead
                                  -
                                  -            var caption = bgImg.nextSibling;
                                  -            var innerBox = img.parentNode;
                                  -
                                  -            var w = img.naturalWidth, h = img.naturalHeight;
                                  -            var repeat = img.getAttribute("repeat");
                                  -
                                  -            if (repeat == "repeat-x" || (w == 1 && h > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-x";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                if (h > maxHeight)
                                  -                    bgImg.style.height = maxHeight + "px";
                                  -                else
                                  -                    bgImg.style.height = h + "px";
                                  -            }
                                  -            else if (repeat == "repeat-y" || (h == 1 && w > 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat-y";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -                if (w > maxWidth)
                                  -                    bgImg.style.width = maxWidth + "px";
                                  -                else
                                  -                    bgImg.style.width = w + "px";
                                  -            }
                                  -            else if (repeat == "repeat" || (w == 1 && h == 1))
                                  -            {
                                  -                collapse(img, true);
                                  -                collapse(bgImg, false);
                                  -                bgImg.style.background = "url(" + img.src + ") repeat";
                                  -                bgImg.style.width = maxWidth + "px";
                                  -                bgImg.style.height = maxHeight + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                if (w > maxWidth || h > maxHeight)
                                  -                {
                                  -                    if (w > h)
                                  -                    {
                                  -                        img.style.width = maxWidth + "px";
                                  -                        img.style.height = Math.round((h / w) * maxWidth) + "px";
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        img.style.width = Math.round((w / h) * maxHeight) + "px";
                                  -                        img.style.height = maxHeight + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            caption.innerHTML = $STRF("Dimensions", [w, h]);
                                  -
                                  -            removeClass(innerBox, "infoTipLoading");
                                  -        }
                                  -        /**/
                                  -        
                                  -    }),
                                  -
                                  -    initializeBrowser: function(browser)
                                  -    {
                                  -        browser.onInfoTipMouseOut = bind(this.onMouseOut, this, browser);
                                  -        browser.onInfoTipMouseMove = bind(this.onMouseMove, this, browser);
                                  -
                                  -        ///var doc = browser.contentDocument;
                                  -        var doc = browser.document;
                                  -        if (!doc)
                                  -            return;
                                  -
                                  -        ///doc.addEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -        ///doc.addEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -        ///doc.addEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -        addEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -        addEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -        addEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -        
                                  -        return browser.infoTip = this.tags.infoTipTag.append({}, getBody(doc));
                                  -    },
                                  -
                                  -    uninitializeBrowser: function(browser)
                                  -    {
                                  -        if (browser.infoTip)
                                  -        {
                                  -            ///var doc = browser.contentDocument;
                                  -            var doc = browser.document;
                                  -            ///doc.removeEventListener("mouseover", browser.onInfoTipMouseMove, true);
                                  -            ///doc.removeEventListener("mouseout", browser.onInfoTipMouseOut, true);
                                  -            ///doc.removeEventListener("mousemove", browser.onInfoTipMouseMove, true);
                                  -            removeEvent(doc, "mouseover", browser.onInfoTipMouseMove);
                                  -            removeEvent(doc, "mouseout", browser.onInfoTipMouseOut);
                                  -            removeEvent(doc, "mousemove", browser.onInfoTipMouseMove);
                                  -
                                  -            browser.infoTip.parentNode.removeChild(browser.infoTip);
                                  -            delete browser.infoTip;
                                  -            delete browser.onInfoTipMouseMove;
                                  -        }
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, panel, target, x, y, rangeParent, rangeOffset)
                                  -    {
                                  -        if (!Firebug.showInfoTips)
                                  -            return;
                                  -
                                  -        var scrollParent = getOverflowParent(target);
                                  -        var scrollX = x + (scrollParent ? scrollParent.scrollLeft : 0);
                                  -
                                  -        if (panel.showInfoTip(infoTip, target, scrollX, y, rangeParent, rangeOffset))
                                  -        {
                                  -            var htmlElt = infoTip.ownerDocument.documentElement;
                                  -            var panelWidth = htmlElt.clientWidth;
                                  -            var panelHeight = htmlElt.clientHeight;
                                  -
                                  -            if (x+infoTip.offsetWidth+infoTipMargin > panelWidth)
                                  -            {
                                  -                infoTip.style.left = Math.max(0, panelWidth-(infoTip.offsetWidth+infoTipMargin)) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.left = (x+infoTipMargin) + "px";
                                  -                infoTip.style.right = "auto";
                                  -            }
                                  -
                                  -            if (y+infoTip.offsetHeight+infoTipMargin > panelHeight)
                                  -            {
                                  -                infoTip.style.top = Math.max(0, panelHeight-(infoTip.offsetHeight+infoTipMargin)) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -            else
                                  -            {
                                  -                infoTip.style.top = (y+infoTipMargin) + "px";
                                  -                infoTip.style.bottom = "auto";
                                  -            }
                                  -
                                  -            if (FBTrace.DBG_INFOTIP)
                                  -                FBTrace.sysout("infotip.showInfoTip; top: " + infoTip.style.top +
                                  -                    ", left: " + infoTip.style.left + ", bottom: " + infoTip.style.bottom +
                                  -                    ", right:" + infoTip.style.right + ", offsetHeight: " + infoTip.offsetHeight +
                                  -                    ", offsetWidth: " + infoTip.offsetWidth +
                                  -                    ", x: " + x + ", panelWidth: " + panelWidth +
                                  -                    ", y: " + y + ", panelHeight: " + panelHeight);
                                  -
                                  -            infoTip.setAttribute("active", "true");
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(infoTip);
                                  -    },
                                  -
                                  -    hideInfoTip: function(infoTip)
                                  -    {
                                  -        if (infoTip)
                                  -            infoTip.removeAttribute("active");
                                  -    },
                                  -
                                  -    onMouseOut: function(event, browser)
                                  -    {
                                  -        if (!event.relatedTarget)
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    onMouseMove: function(event, browser)
                                  -    {
                                  -        // Ignore if the mouse is moving over the existing info tip.
                                  -        if (getAncestorByClass(event.target, "infoTip"))
                                  -            return;
                                  -
                                  -        if (browser.currentPanel)
                                  -        {
                                  -            var x = event.clientX, y = event.clientY, target = event.target || event.srcElement;
                                  -            this.showInfoTip(browser.infoTip, browser.currentPanel, target, x, y, event.rangeParent, event.rangeOffset);
                                  -        }
                                  -        else
                                  -            this.hideInfoTip(browser.infoTip);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    populateColorInfoTip: function(infoTip, color)
                                  -    {
                                  -        this.tags.colorTag.replace({rgbValue: color}, infoTip);
                                  -        return true;
                                  -    },
                                  -
                                  -    populateImageInfoTip: function(infoTip, url, repeat)
                                  -    {
                                  -        if (!repeat)
                                  -            repeat = "no-repeat";
                                  -
                                  -        this.tags.imgTag.replace({urlValue: url, repeat: repeat}, infoTip);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    disable: function()
                                  -    {
                                  -        // XXXjoe For each browser, call uninitializeBrowser
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        if (panel)
                                  -        {
                                  -            var infoTip = panel.panelBrowser.infoTip;
                                  -            if (!infoTip)
                                  -                infoTip = this.initializeBrowser(panel.panelBrowser);
                                  -            this.hideInfoTip(infoTip);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -        this.showPanel(browser, panel);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.InfoTip);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/insideOutBox.js b/branches/flexBox/content/firebug/insideOutBox.js
                                  deleted file mode 100644
                                  index 5f865d59..00000000
                                  --- a/branches/flexBox/content/firebug/insideOutBox.js
                                  +++ /dev/null
                                  @@ -1,561 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -/**
                                  - * View interface used to populate an InsideOutBox object.
                                  - *
                                  - * All views must implement this interface (directly or via duck typing).
                                  - */
                                  -FBL.InsideOutBoxView = {
                                  -    /**
                                  -     * Retrieves the parent object for a given child object.
                                  -     */
                                  -    getParentObject: function(child) {},
                                  -
                                  -    /**
                                  -     * Retrieves a given child node.
                                  -     *
                                  -     * If both index and previousSibling are passed, the implementation
                                  -     * may assume that previousSibling will be the return for getChildObject
                                  -     * with index-1.
                                  -     */
                                  -    getChildObject: function(parent, index, previousSibling) {},
                                  -
                                  -    /**
                                  -     * Renders the HTML representation of the object. Should return an HTML
                                  -     * object which will be displayed to the user.
                                  -     */
                                  -    createObjectBox: function(object, isRoot) {}
                                  -};
                                  -
                                  -/**
                                  - * Creates a tree based on objects provided by a separate "view" object.
                                  - *
                                  - * Construction uses an "inside-out" algorithm, meaning that the view's job is first
                                  - * to tell us the ancestry of each object, and secondarily its descendants.
                                  - */
                                  -FBL.InsideOutBox = function(view, box)
                                  -{
                                  -    this.view = view;
                                  -    this.box = box;
                                  -
                                  -    this.rootObject = null;
                                  -
                                  -    this.rootObjectBox = null;
                                  -    this.selectedObjectBox = null;
                                  -    this.highlightedObjectBox = null;
                                  -
                                  -    this.onMouseDown = bind(this.onMouseDown, this);
                                  -    
                                  -    addEvent(box, "mousedown", this.onMouseDown);
                                  -    // TODO: xxxpedro event
                                  -    //box.addEventListener("mousedown", this.onMouseDown, false);
                                  -};
                                  -
                                  -InsideOutBox.prototype =
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(box, "mousedown", this.onMouseDown);
                                  -        // TODO: xxxpedro event
                                  -        //this.box.removeEventListener("mousedown", this.onMouseDown, false);
                                  -    },
                                  -
                                  -    highlight: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.highlightObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openObject: function(object)
                                  -    {
                                  -        var firstChild = this.view.getChildObject(object, 0);
                                  -        if (firstChild)
                                  -            object = firstChild;
                                  -
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openToObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    select: function(object, makeBoxVisible, forceOpen, noScrollIntoView)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.select object:", object);
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.selectObjectBox(objectBox, forceOpen);
                                  -        if (makeBoxVisible)
                                  -        {
                                  -            this.openObjectBox(objectBox);
                                  -            if (!noScrollIntoView)
                                  -                scrollIntoCenterView(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    expandObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    contractObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.contractObjectBox(objectBox);
                                  -    },
                                  -
                                  -    highlightObjectBox: function(objectBox)
                                  -    {
                                  -        if (this.highlightedObjectBox)
                                  -        {
                                  -            removeClass(this.highlightedObjectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                removeClass(highlightedBox, "highlightOpen");
                                  -        }
                                  -
                                  -        this.highlightedObjectBox = objectBox;
                                  -
                                  -        if (objectBox)
                                  -        {
                                  -            setClass(objectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(objectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                setClass(highlightedBox, "highlightOpen");
                                  -
                                  -           scrollIntoCenterView(objectBox);
                                  -        }
                                  -    },
                                  -
                                  -    selectObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox;
                                  -        if (!isSelected)
                                  -        {
                                  -            removeClass(this.selectedObjectBox, "selected");
                                  -            dispatch([Firebug.A11yModel], 'onObjectBoxUnselected', [this.selectedObjectBox]);
                                  -            this.selectedObjectBox = objectBox;
                                  -
                                  -            if (objectBox)
                                  -            {
                                  -                setClass(objectBox, "selected");
                                  -
                                  -                // Force it open the first time it is selected
                                  -                if (forceOpen)
                                  -                    this.toggleObjectBox(objectBox, true);
                                  -            }
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onObjectBoxSelected', [objectBox]);
                                  -    },
                                  -
                                  -    openObjectBox: function(objectBox)
                                  -    {
                                  -        if (objectBox)
                                  -        {
                                  -            // Set all of the node's ancestors to be permanently open
                                  -            var parentBox = this.getParentObjectBox(objectBox);
                                  -            var labelBox;
                                  -            for (; parentBox; parentBox = this.getParentObjectBox(parentBox))
                                  -            {
                                  -                setClass(parentBox, "open");
                                  -                labelBox = getElementByClass(parentBox, 'nodeLabelBox');
                                  -                if (labelBox)
                                  -                    labelBox.setAttribute('aria-expanded', 'true')
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    expandObjectBox: function(objectBox)
                                  -    {
                                  -        var nodeChildBox = this.getChildObjectBox(objectBox);
                                  -        if (!nodeChildBox)
                                  -            return;
                                  -
                                  -        if (!objectBox.populated)
                                  -        {
                                  -            var firstChild = this.view.getChildObject(objectBox.repObject, 0);
                                  -            this.populateChildBox(firstChild, nodeChildBox);
                                  -        }
                                  -        var labelBox = getElementByClass(objectBox, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'true');
                                  -        setClass(objectBox, "open");
                                  -    },
                                  -
                                  -    contractObjectBox: function(objectBox)
                                  -    {
                                  -        removeClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'false');
                                  -    },
                                  -
                                  -    toggleObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isOpen = hasClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', isOpen);
                                  -        if (!forceOpen && isOpen)
                                  -            this.contractObjectBox(objectBox);
                                  -
                                  -        else if (!isOpen)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    getNextObjectBox: function(objectBox)
                                  -    {
                                  -        return findNext(objectBox, isVisibleTarget, false, this.box);
                                  -    },
                                  -
                                  -    getPreviousObjectBox: function(objectBox)
                                  -    {
                                  -        return findPrevious(objectBox, isVisibleTarget, true, this.box);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings.
                                  -     */
                                  -    createObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        this.rootObject = this.getRootNode(object);
                                  -
                                  -        // Get or create all of the boxes for the target and its ancestors
                                  -        var objectBox = this.createObjectBoxes(object, this.rootObject);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBox for object="+formatNode(object)+" got objectBox="+formatNode(objectBox), objectBox);
                                  -        if (!objectBox)
                                  -            return null;
                                  -        else if (object == this.rootObject)
                                  -            return objectBox;
                                  -        else
                                  -            return this.populateChildBox(object, objectBox.parentNode);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings up to a root.
                                  -     */
                                  -    createObjectBoxes: function(object, rootObject)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBoxes("+formatNode(object)+", "+formatNode(rootObject)+")\n");
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == rootObject)
                                  -        {
                                  -            if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject)
                                  -            {
                                  -                if (this.rootObjectBox)
                                  -                {
                                  -                    try {
                                  -                        this.box.removeChild(this.rootObjectBox);
                                  -                    } catch (exc) {
                                  -                        if (FBTrace.DBG_HTML)
                                  -                            FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+this.box+" must not contain "+this.rootObjectBox+"\n");
                                  -                    }
                                  -                }
                                  -
                                  -                this.highlightedObjectBox = null;
                                  -                this.selectedObjectBox = null;
                                  -                this.rootObjectBox = this.view.createObjectBox(object, true);
                                  -                this.box.appendChild(this.rootObjectBox);
                                  -            }
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+formatNode(rootObject)+") rootObjectBox: "
                                  -                                            +this.rootObjectBox, object);
                                  -            }
                                  -            return this.rootObjectBox;
                                  -        }
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getObjectPath(object) ", getObjectPath(object, this.view))
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes view.getParentObject("+formatNode(object)+")=parentNode: "+formatNode(parentNode), parentNode);
                                  -            }
                                  -
                                  -            var parentObjectBox = this.createObjectBoxes(parentNode, rootObject);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+formatNode(parentObjectBox), parentObjectBox);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+formatNode(parentObjectBox)+")= parentChildBox: "+formatNode(parentChildBox)+"\n");
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            var childObjectBox = this.findChildObjectBox(parentChildBox, object);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+formatNode(parentChildBox)+","+formatNode(object)+"): childObjectBox: "+formatNode(childObjectBox), childObjectBox);
                                  -            return childObjectBox
                                  -                ? childObjectBox
                                  -                : this.populateChildBox(object, parentChildBox);
                                  -        }
                                  -    },
                                  -
                                  -    findObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == this.rootObject)
                                  -            return this.rootObjectBox;
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -            var parentObjectBox = this.findObjectBox(parentNode);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            return this.findChildObjectBox(parentChildBox, object);
                                  -        }
                                  -    },
                                  -
                                  -    appendChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var childBox = this.getChildObjectBox(parentNodeBox);
                                  -            childBox.appendChild(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var siblingBox = this.findChildObjectBox(childBox, nextSibling);
                                  -            childBox.insertBefore(objectBox, siblingBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    removeChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            childBox.removeChild(objectBox);
                                  -    },
                                  -
                                  -    populateChildBox: function(repObject, nodeChildBox)  // We want all children of the parent of repObject.
                                  -    {
                                  -        if (!repObject)
                                  -            return null;
                                  -
                                  -        var parentObjectBox = getAncestorByClass(nodeChildBox, "nodeBox");
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("+++insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") parentObjectBox.populated "+parentObjectBox.populated+"\n");
                                  -        if (parentObjectBox.populated)
                                  -            return this.findChildObjectBox(nodeChildBox, repObject);
                                  -
                                  -        var lastSiblingBox = this.getChildObjectBox(nodeChildBox);
                                  -        var siblingBox = nodeChildBox.firstChild;
                                  -        var targetBox = null;
                                  -
                                  -        var view = this.view;
                                  -
                                  -        var targetSibling = null;
                                  -        var parentNode = view.getParentObject(repObject);
                                  -        for (var i = 0; 1; ++i)
                                  -        {
                                  -            targetSibling = view.getChildObject(parentNode, i, targetSibling);
                                  -            if (!targetSibling)
                                  -                break;
                                  -
                                  -            // Check if we need to start appending, or continue to insert before
                                  -            if (lastSiblingBox && lastSiblingBox.repObject == targetSibling)
                                  -                lastSiblingBox = null;
                                  -
                                  -            if (!siblingBox || siblingBox.repObject != targetSibling)
                                  -            {
                                  -                var newBox = view.createObjectBox(targetSibling);
                                  -                if (newBox)
                                  -                {
                                  -                    if (lastSiblingBox)
                                  -                        nodeChildBox.insertBefore(newBox, lastSiblingBox);
                                  -                    else
                                  -                        nodeChildBox.appendChild(newBox);
                                  -                }
                                  -
                                  -                siblingBox = newBox;
                                  -            }
                                  -
                                  -            if (targetSibling == repObject)
                                  -                targetBox = siblingBox;
                                  -
                                  -            if (siblingBox && siblingBox.repObject == targetSibling)
                                  -                siblingBox = siblingBox.nextSibling;
                                  -        }
                                  -
                                  -        if (targetBox)
                                  -            parentObjectBox.populated = true;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("---insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox+"\n");
                                  -
                                  -        return targetBox;
                                  -    },
                                  -
                                  -    getParentObjectBox: function(objectBox)
                                  -    {
                                  -        var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null;
                                  -        return parent && parent.repObject ? parent : null;
                                  -    },
                                  -
                                  -    getChildObjectBox: function(objectBox)
                                  -    {
                                  -        return getElementByClass(objectBox, "nodeChildBox");
                                  -    },
                                  -
                                  -    findChildObjectBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(
                                  -                    "insideOutBox.findChildObjectBox "
                                  -                    +(childBox.repObject == repObject?"match ":"no match ")
                                  -                    +" childBox.repObject: " + (childBox.repObject && (childBox.repObject.localName || childBox.repObject))
                                  -                    +" repObject: " +(repObject && (repObject.localName || repObject))+"\n", childBox);
                                  -            if (childBox.repObject == repObject)
                                  -                return childBox;
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if the given node is an ancestor of the current root.
                                  -     */
                                  -    isInExistingRoot: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -          FBTrace.sysout("insideOutBox.isInExistingRoot for ", node);
                                  -        var parentNode = node;
                                  -        while (parentNode && parentNode != this.rootObject)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(parentNode.localName+" < ", parentNode);
                                  -            var parentNode = this.view.getParentObject(parentNode);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -        }
                                  -        return parentNode == this.rootObject;
                                  -    },
                                  -
                                  -    getRootNode: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.getRootNode for ", node);
                                  -        while (1)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(node.localName+" < ", node);
                                  -            var parentNode = this.view.getParentObject(node);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -
                                  -            if (!parentNode)
                                  -                return node;
                                  -            else
                                  -                node = parentNode;
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    // ********************************************************************************************
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var hitTwisty = false;
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "twisty"))
                                  -                hitTwisty = true;
                                  -            else if (child.repObject)
                                  -            {
                                  -                if (hitTwisty)
                                  -                    this.toggleObjectBox(child);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function isVisibleTarget(node)
                                  -{
                                  -    if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE)
                                  -    {
                                  -        for (var parent = node.parentNode; parent; parent = parent.parentNode)
                                  -        {
                                  -            if (hasClass(parent, "nodeChildBox")
                                  -                && !hasClass(parent.parentNode, "open")
                                  -                && !hasClass(parent.parentNode, "highlightOpen"))
                                  -                return false;
                                  -        }
                                  -        return true;
                                  -    }
                                  -}
                                  -
                                  -function formatNode(object)
                                  -{
                                  -    if (object)
                                  -        return (object.localName ? object.localName : object);
                                  -    else
                                  -        return "(null object)";
                                  -}
                                  -
                                  -function getObjectPath(element, aView)
                                  -{
                                  -    var path = [];
                                  -    for (; element; element = aView.getParentObject(element))
                                  -        path.push(element);
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/jsonViewer.js b/branches/flexBox/content/firebug/jsonViewer.js
                                  deleted file mode 100644
                                  index d23186fe..00000000
                                  --- a/branches/flexBox/content/firebug/jsonViewer.js
                                  +++ /dev/null
                                  @@ -1,127 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// List of JSON content types.
                                  -var contentTypes =
                                  -{
                                  -    // TODO: create issue: jsonViewer will not try to evaluate the contents of the requested file 
                                  -    // if the content-type is set to "text/plain"
                                  -    //"text/plain": 1,
                                  -    "text/javascript": 1,
                                  -    "text/x-javascript": 1,
                                  -    "text/json": 1,
                                  -    "text/x-json": 1,
                                  -    "application/json": 1,
                                  -    "application/x-json": 1,
                                  -    "application/javascript": 1,
                                  -    "application/x-javascript": 1,
                                  -    "application/json-rpc": 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -Firebug.JSONViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "jsonViewer",
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -
                                  -        // Used by Firebug.DOMPanel.DirTable domplate.
                                  -        this.toggles = {};
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_JSONVIEWER)
                                  -            FBTrace.sysout("jsonviewer.initTabBody", infoBox);
                                  -
                                  -        // Let listeners to parse the JSON.
                                  -        dispatch(this.fbListeners, "onParseJSON", [file]);
                                  -
                                  -        // The JSON is still no there, try to parse most common cases.
                                  -        if (!file.jsonObject)
                                  -        {
                                  -            ///if (this.isJSON(safeGetContentType(file.request), file.responseText))
                                  -            if (this.isJSON(file.mimeType, file.responseText))
                                  -                file.jsonObject = this.parseJSON(file);
                                  -        }
                                  -
                                  -        // The jsonObject is created so, the JSON tab can be displayed.
                                  -        if (file.jsonObject && hasProperties(file.jsonObject))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "JSON",
                                  -                ///$STR("jsonviewer.tab.JSON"));
                                  -                $STR("JSON"));
                                  -
                                  -            if (FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.initTabBody; JSON object available " +
                                  -                    (typeof(file.jsonObject) != "undefined"), file.jsonObject);
                                  -        }
                                  -    },
                                  -
                                  -    isJSON: function(contentType, data)
                                  -    {
                                  -        // Workaround for JSON responses without proper content type
                                  -        // Let's consider all responses starting with "{" as JSON. In the worst
                                  -        // case there will be an exception when parsing. This means that no-JSON
                                  -        // responses (and post data) (with "{") can be parsed unnecessarily,
                                  -        // which represents a little overhead, but this happens only if the request
                                  -        // is actually expanded by the user in the UI (Net & Console panels).
                                  -        
                                  -        ///var responseText = data ? trimLeft(data) : null;
                                  -        ///if (responseText && responseText.indexOf("{") == 0)
                                  -        ///    return true;
                                  -        var responseText = data ? trim(data) : null;
                                  -        if (responseText && responseText.indexOf("{") == 0)
                                  -            return true;
                                  -
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        contentType = contentType.split(";")[0];
                                  -        contentType = trim(contentType);
                                  -        return contentTypes[contentType];
                                  -    },
                                  -
                                  -    // Update listener for TabView
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoJSONText").item(0);
                                  -        var tabBody = $$(".netInfoJSONText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoJSONTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        if (file.jsonObject) {
                                  -            Firebug.DOMPanel.DirTable.tag.replace(
                                  -                 {object: file.jsonObject, toggles: this.toggles}, tabBody);
                                  -        }
                                  -    },
                                  -
                                  -    parseJSON: function(file)
                                  -    {
                                  -        var jsonString = new String(file.responseText);
                                  -        ///return parseJSONString(jsonString, "http://" + file.request.originalURI.host);
                                  -        return parseJSONString(jsonString);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.JSONViewerModel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/lib/htmlLib.js b/branches/flexBox/content/firebug/lib/htmlLib.js
                                  deleted file mode 100644
                                  index f3c0c8c8..00000000
                                  --- a/branches/flexBox/content/firebug/lib/htmlLib.js
                                  +++ /dev/null
                                  @@ -1,753 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -//const Ci = Components.interfaces;
                                  -//const SHOW_ALL = Ci.nsIDOMNodeFilter.SHOW_ALL;
                                  -
                                  -/**
                                  - * @class Static utility class. Contains utilities used for displaying and
                                  - *        searching a HTML tree.
                                  - */
                                  -Firebug.HTMLLib =
                                  -{
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Node Search Utilities
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    /**
                                  -     * Constructs a NodeSearch instance.
                                  -     *
                                  -     * @class Class used to search a DOM tree for the given text. Will display
                                  -     *        the search results in a IO Box.
                                  -     *
                                  -     * @constructor
                                  -     * @param {String} text Text to search for
                                  -     * @param {Object} root Root of search. This may be an element or a document
                                  -     * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
                                  -     * @param {Object} ioBox IO Box to display the search results in
                                  -     * @param {Object} walker Optional walker parameter.
                                  -     */
                                  -    NodeSearch: function(text, root, panelNode, ioBox, walker)
                                  -    {
                                  -        root = root.documentElement || root;
                                  -        walker = walker || new Firebug.HTMLLib.DOMWalker(root);
                                  -        var re = new ReversibleRegExp(text, "m");
                                  -        var matchCount = 0;
                                  -
                                  -        /**
                                  -         * Finds the first match within the document.
                                  -         *
                                  -         * @param {boolean} revert true to search backward, false to search forward
                                  -         * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -         * @return true if no more matches were found, but matches were found previously.
                                  -         */
                                  -        this.find = function(reverse, caseSensitive)
                                  -        {
                                  -            var match = this.findNextMatch(reverse, caseSensitive);
                                  -            if (match)
                                  -            {
                                  -                this.lastMatch = match;
                                  -                ++matchCount;
                                  -
                                  -                var node = match.node;
                                  -                var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -                this.selectMatched(nodeBox, node, match, reverse);
                                  -            }
                                  -            else if (matchCount)
                                  -                return true;
                                  -            else
                                  -            {
                                  -                this.noMatch = true;
                                  -                dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Resets the search to the beginning of the document.
                                  -         */
                                  -        this.reset = function()
                                  -        {
                                  -            delete this.lastMatch;
                                  -        };
                                  -
                                  -        /**
                                  -         * Finds the next match in the document.
                                  -         *
                                  -         * The return value is an object with the fields
                                  -         * - node: Node that contains the match
                                  -         * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
                                  -         * - match: Regular expression result from the match
                                  -         *
                                  -         * @param {boolean} revert true to search backward, false to search forward
                                  -         * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -         * @return Match object if found
                                  -         */
                                  -        this.findNextMatch = function(reverse, caseSensitive)
                                  -        {
                                  -            var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -            if (innerMatch)
                                  -                return innerMatch;
                                  -            else
                                  -                this.reset();
                                  -
                                  -            function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -            var node;
                                  -            while (node = walkNode())
                                  -            {
                                  -                if (node.nodeType == Node.TEXT_NODE)
                                  -                {
                                  -                    if (Firebug.HTMLLib.isSourceElement(node.parentNode))
                                  -                        continue;
                                  -                }
                                  -
                                  -                var m = this.checkNode(node, reverse, caseSensitive);
                                  -                if (m)
                                  -                    return m;
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Helper util used to scan the current search result for more results
                                  -         * in the same object.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -        {
                                  -            if (this.lastMatch)
                                  -            {
                                  -                var lastMatchNode = this.lastMatch.node;
                                  -                var lastReMatch = this.lastMatch.match;
                                  -                var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -                if (m)
                                  -                {
                                  -                    return {
                                  -                        node: lastMatchNode,
                                  -                        isValue: this.lastMatch.isValue,
                                  -                        match: m
                                  -                    };
                                  -                }
                                  -
                                  -                // May need to check the pair for attributes
                                  -                if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                        && this.lastMatch.isValue == !!reverse)
                                  -                {
                                  -                    return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -                }
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Checks a given node for a search match.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -        {
                                  -            var checkOrder;
                                  -            if (node.nodeType != Node.TEXT_NODE)
                                  -            {
                                  -                var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -                var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -                checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -            }
                                  -            else
                                  -            {
                                  -                checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -            }
                                  -
                                  -            for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -                var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -                if (m)
                                  -                    return {
                                  -                        node: node,
                                  -                        isValue: checkOrder[i].isValue,
                                  -                        match: m
                                  -                    };
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Opens the given node in the associated IO Box.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.openToNode = function(node, isValue)
                                  -        {
                                  -            if (node.nodeType == Node.ELEMENT_NODE)
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node);
                                  -                return nodeBox.getElementsByClassName("nodeTag")[0];
                                  -            }
                                  -            else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -                if (nodeBox)
                                  -                {
                                  -                    var attrNodeBox = Firebug.HTMLLib.findNodeAttrBox(nodeBox, node.nodeName);
                                  -                    if (isValue)
                                  -                        return getChildByClass(attrNodeBox, "nodeValue");
                                  -                    else
                                  -                        return getChildByClass(attrNodeBox, "nodeName");
                                  -                }
                                  -            }
                                  -            else if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node);
                                  -                if (nodeBox)
                                  -                    return nodeBox;
                                  -                else
                                  -                {
                                  -                    var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                    if (hasClass(nodeBox, "textNodeBox"))
                                  -                        nodeBox = Firebug.HTMLLib.getTextElementTextBox(nodeBox);
                                  -                    return nodeBox;
                                  -                }
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Selects the search results.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.selectMatched = function(nodeBox, node, match, reverse)
                                  -        {
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                var reMatch = match.match;
                                  -                this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -                dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -            }, this));
                                  -        };
                                  -
                                  -        /**
                                  -         * Select text node search results.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -        {
                                  -            var row;
                                  -
                                  -            // If we are still inside the same node as the last search, advance the range
                                  -            // to the next substring within that node
                                  -            if (nodeBox == this.lastNodeBox)
                                  -            {
                                  -                row = this.textSearch.findNext(false, true, reverse, caseSensitive);
                                  -            }
                                  -
                                  -            if (!row)
                                  -            {
                                  -                // Search for the first instance of the string inside the node
                                  -                function findRow(node) { return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode; }
                                  -                this.textSearch = new TextSearch(nodeBox, findRow);
                                  -                row = this.textSearch.find(text, reverse, caseSensitive);
                                  -                this.lastNodeBox = nodeBox;
                                  -            }
                                  -
                                  -            if (row)
                                  -            {
                                  -                var trueNodeBox = getAncestorByClass(nodeBox, "nodeBox");
                                  -                setClass(trueNodeBox,'search-selection');
                                  -
                                  -                scrollIntoCenterView(row, panelNode);
                                  -                var sel = panelNode.ownerDocument.defaultView.getSelection(); 
                                  -                sel.removeAllRanges();
                                  -                sel.addRange(this.textSearch.range);
                                  -
                                  -                removeClass(trueNodeBox,'search-selection'); 
                                  -                return true;
                                  -            }
                                  -        };
                                  -    },
                                  -
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**  XXXjjb this code is no longer called and won't be in 1.5; if FireFinder works out we can delete this.
                                  -     * Constructs a SelectorSearch instance.
                                  -     *
                                  -     * @class Class used to search a DOM tree for elements matching the given
                                  -     *        CSS selector.
                                  -     *
                                  -     * @constructor
                                  -     * @param {String} text CSS selector to search for
                                  -     * @param {Document} doc Document to search
                                  -     * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
                                  -     * @param {Object} ioBox IO Box to display the search results in
                                  -     */
                                  -    SelectorSearch: function(text, doc, panelNode, ioBox)
                                  -    {
                                  -        this.parent = new Firebug.HTMLLib.NodeSearch(text, doc, panelNode, ioBox);
                                  -
                                  -        /**
                                  -         * Finds the first match within the document.
                                  -         *
                                  -         * @param {boolean} revert true to search backward, false to search forward
                                  -         * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -         * @return true if no more matches were found, but matches were found previously.
                                  -         */
                                  -        this.find = this.parent.find;
                                  -
                                  -        /**
                                  -         * Resets the search to the beginning of the document.
                                  -         */
                                  -        this.reset = this.parent.reset;
                                  -
                                  -        /**
                                  -         * Opens the given node in the associated IO Box.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.openToNode = this.parent.openToNode;
                                  -
                                  -        try
                                  -        {
                                  -            // http://dev.w3.org/2006/webapi/selectors-api/
                                  -            this.matchingNodes = doc.querySelectorAll(text);
                                  -            this.matchIndex = 0;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
                                  -        }
                                  -
                                  -        /**
                                  -         * Finds the next match in the document.
                                  -         *
                                  -         * The return value is an object with the fields
                                  -         * - node: Node that contains the match
                                  -         * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
                                  -         * - match: Regular expression result from the match
                                  -         *
                                  -         * @param {boolean} revert true to search backward, false to search forward
                                  -         * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -         * @return Match object if found
                                  -         */
                                  -        this.findNextMatch = function(reverse, caseSensitive)
                                  -        {
                                  -            if (!this.matchingNodes || !this.matchingNodes.length)
                                  -                return undefined;
                                  -
                                  -            if (reverse)
                                  -            {
                                  -                if (this.matchIndex > 0)
                                  -                    return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
                                  -                else
                                  -                    return undefined;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (this.matchIndex < this.matchingNodes.length)
                                  -                    return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
                                  -                else
                                  -                    return undefined;
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Selects the search results.
                                  -         *
                                  -         * @private
                                  -         */
                                  -        this.selectMatched = function(nodeBox, node, match, reverse)
                                  -        {
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                ioBox.select(node, true, true);
                                  -                dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -            }, this));
                                  -        };
                                  -    },
                                  -
                                  -
                                  -    /**
                                  -     * Constructs a DOMWalker instance.
                                  -     *
                                  -     * @constructor
                                  -     * @class Implements an ordered traveral of the document, including attributes and
                                  -     *        iframe contents within the results.
                                  -     *
                                  -     *        Note that the order for attributes is not defined. This will follow the
                                  -     *        same order as the Element.attributes accessor.
                                  -     * @param {Element} root Element to traverse
                                  -     */
                                  -    DOMWalker: function(root)
                                  -    {
                                  -        var walker;
                                  -        var currentNode, attrIndex;
                                  -        var pastStart, pastEnd;
                                  -        var doc = root.ownerDocument;
                                  -
                                  -        function createWalker(docElement) {
                                  -            var walk = doc.createTreeWalker(docElement, SHOW_ALL, null, true);
                                  -            walker.unshift(walk);
                                  -        }
                                  -        function getLastAncestor() {
                                  -            while (walker[0].lastChild()) {}
                                  -            return walker[0].currentNode;
                                  -        }
                                  -
                                  -        /**
                                  -         * Move to the previous node.
                                  -         *
                                  -         * @return The previous node if one exists, undefined otherwise.
                                  -         */
                                  -        this.previousNode = function() {
                                  -            if (pastStart) {
                                  -                return undefined;
                                  -            }
                                  -
                                  -            if (attrIndex) {
                                  -                attrIndex--;
                                  -            } else {
                                  -                var prevNode;
                                  -                if (currentNode == walker[0].root) {
                                  -                    if (walker.length > 1) {
                                  -                        walker.shift();
                                  -                        prevNode = walker[0].currentNode;
                                  -                    } else {
                                  -                        prevNode = undefined;
                                  -                    }
                                  -                } else {
                                  -                    if (!currentNode) {
                                  -                        prevNode = getLastAncestor();
                                  -                    } else {
                                  -                        prevNode = walker[0].previousNode();
                                  -                    }
                                  -                    if (!prevNode) {    // Really shouldn't occur, but to be safe
                                  -                        prevNode = walker[0].root;
                                  -                    }
                                  -                    while ((prevNode.nodeName || "").toUpperCase() == "IFRAME") {
                                  -                        createWalker(prevNode.contentDocument.documentElement);
                                  -                        prevNode = getLastAncestor();
                                  -                    }
                                  -                }
                                  -                currentNode = prevNode;
                                  -                attrIndex = ((prevNode || {}).attributes || []).length;
                                  -            }
                                  -
                                  -            if (!currentNode) {
                                  -                pastStart = true;
                                  -            } else {
                                  -                pastEnd = false;
                                  -            }
                                  -
                                  -            return this.currentNode();
                                  -        };
                                  -
                                  -        /**
                                  -         * Move to the next node.
                                  -         *
                                  -         * @return The next node if one exists, otherwise undefined.
                                  -         */
                                  -        this.nextNode = function() {
                                  -            if (pastEnd) {
                                  -                return undefined;
                                  -            }
                                  -
                                  -            if (!currentNode) {
                                  -                // We are working with a new tree walker
                                  -                currentNode = walker[0].root;
                                  -                attrIndex = 0;
                                  -            } else {
                                  -                // First check attributes
                                  -                var attrs = currentNode.attributes || [];
                                  -                if (attrIndex < attrs.length) {
                                  -                    attrIndex++;
                                  -                } else if ((currentNode.nodeName || "").toUpperCase() == "IFRAME") {
                                  -                    // Attributes have completed, check for iframe contents
                                  -                    createWalker(currentNode.contentDocument.documentElement);
                                  -                    currentNode = walker[0].root;
                                  -                    attrIndex = 0;
                                  -                } else {
                                  -                    // Next node
                                  -                    var nextNode = walker[0].nextNode();
                                  -                    while (!nextNode && walker.length > 1) {
                                  -                        walker.shift();
                                  -                        nextNode = walker[0].nextNode();
                                  -                    }
                                  -                    currentNode = nextNode;
                                  -                    attrIndex = 0;
                                  -                }
                                  -            }
                                  -
                                  -            if (!currentNode) {
                                  -                pastEnd = true;
                                  -            } else {
                                  -                pastStart = false;
                                  -            }
                                  -
                                  -            return this.currentNode();
                                  -        };
                                  -
                                  -        /**
                                  -         * Retrieves the current node.
                                  -         *
                                  -         * @return The current node, if not past the beginning or end of the iteration.
                                  -         */
                                  -        this.currentNode = function() {
                                  -            if (!attrIndex) {
                                  -                return currentNode;
                                  -            } else {
                                  -                return currentNode.attributes[attrIndex-1];
                                  -            }
                                  -        };
                                  -
                                  -        /**
                                  -         * Resets the walker position back to the initial position.
                                  -         */
                                  -        this.reset = function() {
                                  -            pastStart = false;
                                  -            pastEnd = false;
                                  -            walker = [];
                                  -            currentNode = undefined;
                                  -            attrIndex = 0;
                                  -
                                  -            createWalker(root);
                                  -        };
                                  -
                                  -        this.reset();
                                  -    },
                                  -
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Node/Element Utilities
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Determines if the given element is the source for a non-DOM resource such
                                  -     * as Javascript source or CSS definition.
                                  -     *
                                  -     * @param {Element} element Element to test
                                  -     * @return true if the element is a source element
                                  -     */
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        return tag == "script" || tag == "link" || tag == "style"
                                  -            || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the source URL for any external resource associated with a node.
                                  -     *
                                  -     * @param {Element} element Element to examine
                                  -     * @return URL of the external resouce.
                                  -     */
                                  -    getSourceHref: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        if (tag == "script" && element.src)
                                  -            return element.src;
                                  -        else if (tag == "link")
                                  -            return element.href;
                                  -        else
                                  -            return null;
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the source text for inline script and style elements.
                                  -     *
                                  -     * @param {Element} element Script or style element
                                  -     * @return Source text
                                  -     */
                                  -    getSourceText: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        if (tag == "script" && !element.src)
                                  -            return element.textContent;
                                  -        else if (tag == "style")
                                  -            return element.textContent;
                                  -        else
                                  -            return null;
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if the given element is a container element.
                                  -     *
                                  -     * @param {Element} element Element to test
                                  -     * @return True if the element is a container element.
                                  -     */
                                  -    isContainerElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        switch (tag)
                                  -        {
                                  -            case "script":
                                  -            case "style":
                                  -            case "iframe":
                                  -            case "frame":
                                  -            case "tabbrowser":
                                  -            case "browser":
                                  -                return true;
                                  -            case "link":
                                  -                return element.getAttribute("rel") == "stylesheet";
                                  -            case "embed":
                                  -                return element.getSVGDocument();
                                  -        }
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if the given node has any children which are elements.
                                  -     *
                                  -     * @param {Element} element Element to test.
                                  -     * @return true if immediate children of type Element exist, false otherwise
                                  -     */
                                  -    hasNoElementChildren: function(element)
                                  -    {
                                  -        if (element.childElementCount != 0)  // FF 3.5+
                                  -            return false;
                                  -
                                  -        // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
                                  -        /*
                                  -        if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
                                  -        {
                                  -            var anonChildren = element.ownerDocument.getAnonymousNodes(element);
                                  -            if (anonChildren)
                                  -            {
                                  -                for (var i = 0; i < anonChildren.length; i++)
                                  -                {
                                  -                    if (anonChildren[i].nodeType == Node.ELEMENT_NODE)
                                  -                        return false;
                                  -                }
                                  -            }
                                  -        }
                                  -        /**/
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element);
                                  -        return true;
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Determines if the given node has any children which are comments.
                                  -     *
                                  -     * @param {Element} element Element to test.
                                  -     * @return true if immediate children of type Comment exist, false otherwise
                                  -     */
                                  -    hasCommentChildren: function(element)
                                  -    {
                                  -        if (element.hasChildNodes())
                                  -        {
                                  -            var children = element.childNodes;
                                  -            for (var i = 0; i < children.length; i++) 
                                  -            {
                                  -              if (children[i] instanceof Comment)
                                  -                 return true;
                                  -            }
                                  -        };
                                  -        return false;
                                  -    },
                                  -
                                  -
                                  -    /**
                                  -     * Determines if the given node consists solely of whitespace text.
                                  -     *
                                  -     * @param {Node} node Node to test.
                                  -     * @return true if the node is a whitespace text node
                                  -     */
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return false;
                                  -        return node.nodeType == Node.TEXT_NODE && isWhitespace(node.nodeValue);
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if a given element is empty. When the
                                  -     * {@link Firebug#showTextNodesWithWhitespace} parameter is true, an element is
                                  -     * considered empty if it has no child elements and is self closing. When
                                  -     * false, an element is considered empty if the only children are whitespace
                                  -     * nodes.
                                  -     *
                                  -     * @param {Element} element Element to test
                                  -     * @return true if the element is empty, false otherwise
                                  -     */
                                  -    isEmptyElement: function(element)
                                  -    {
                                  -        // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
                                  -        // If the DOM has whitespace children, then the element is not empty even if
                                  -        // we decide not to show the whitespace in the UI.
                                  -
                                  -        // XXXsroussey reverted above but added a check for self closing tags
                                  -        if (Firebug.showTextNodesWithWhitespace)
                                  -        {
                                  -            return !element.firstChild && isSelfClosing(element);
                                  -        }
                                  -        else
                                  -        {
                                  -            for (var child = element.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (!Firebug.HTMLLib.isWhitespaceText(child))
                                  -                    return false;
                                  -            }
                                  -        }
                                  -        return isSelfClosing(element);
                                  -    },
                                  -
                                  -    /**
                                  -     * Finds the next sibling of the given node. If the
                                  -     * {@link Firebug#showTextNodesWithWhitespace} parameter is set to true, the next
                                  -     * sibling may be a whitespace, otherwise the next is the first adjacent
                                  -     * non-whitespace node.
                                  -     *
                                  -     * @param {Node} node Node to analyze.
                                  -     * @return Next sibling node, if one exists
                                  -     */
                                  -    findNextSibling: function(node)
                                  -    {
                                  -        if (Firebug.showTextNodesWithWhitespace)
                                  -            return node.nextSibling;
                                  -        else
                                  -        {
                                  -            // only return a non-whitespace node
                                  -            for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -            {
                                  -                if (!Firebug.HTMLLib.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Domplate Utilities
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Locates the attribute domplate node for a given element domplate. This method will
                                  -     * only examine notes marked with the "nodeAttr" class that are the direct
                                  -     * children of the given element.
                                  -     *
                                  -     * @param {Object} objectNodeBox The domplate element to look up the attribute for.
                                  -     * @param {String} attrName Attribute name
                                  -     * @return Attribute's domplate node
                                  -     */
                                  -    findNodeAttrBox: function(objectNodeBox, attrName)
                                  -    {
                                  -        var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -                && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -            {
                                  -                return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Locates the text domplate node for a given text element domplate.
                                  -     * @param {Object} nodeBox Text element domplate
                                  -     * @return Element's domplate text node
                                  -     */
                                  -    getTextElementTextBox: function(nodeBox)
                                  -    {
                                  -        var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -        return getChildByClass(nodeLabelBox, "nodeText");
                                  -    }
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firebug/net.js b/branches/flexBox/content/firebug/net.js
                                  deleted file mode 100644
                                  index 90f74fce..00000000
                                  --- a/branches/flexBox/content/firebug/net.js
                                  +++ /dev/null
                                  @@ -1,1311 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        ///this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        ///this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -        this.customTab.append(args, $$(".netInfoTabs", netInfoBox)[0]);
                                  -        this.customBody.append(args, $$(".netInfoBodies", netInfoBox)[0]);
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                //var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                var postText = $$(".netInfoPostText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                //var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                var putText = $$(".netInfoPutText", netInfoBox)[0];
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            ///var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else ///if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            
                                  -            ///var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            var iframe = $$(".netInfoHtmlPreview", netInfoBox)[0];
                                  -            
                                  -            ///iframe.contentWindow.document.body.innerHTML = text;
                                  -            
                                  -            // TODO: xxxpedro net - remove scripts
                                  -            var reScript = /<script(.|\s)*?\/script>/gi;
                                  -            
                                  -            text = text.replace(reScript, "");
                                  -                
                                  -            iframe.contentWindow.document.write(text);
                                  -            iframe.contentWindow.document.close();
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = $$(".netInfo"+tableName+"Table", netInfoBox)[0];
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        ///var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var tbody = $$(".netInfo" + rowName + "Body", netInfoBox)[0];
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        ///var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        var sourceNode = $$(".source", node)[0];
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents posted data within request info (the info, which is visible when
                                  - * a request entry is expanded. This template renders content of the Post tab.
                                  - */
                                  -Firebug.NetMonitor.NetInfoPostData = domplate(Firebug.Rep, /*new Firebug.Listener(),*/
                                  -{
                                  -    // application/x-www-form-urlencoded
                                  -    paramsTable:
                                  -        TABLE({"class": "netInfoPostParamsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parameters")},
                                  -                TR({"class": "netInfoPostParamsTitle", "role": "presentation"},
                                  -                    TD({colspan: 3, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parameters"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "application/x-www-form-urlencoded"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // multipart/form-data
                                  -    partsTable:
                                  -        TABLE({"class": "netInfoPostPartsTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Parts")},
                                  -                TR({"class": "netInfoPostPartsTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role":"presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("net.label.Parts"),
                                  -                            SPAN({"class": "netInfoPostContentType"},
                                  -                                "multipart/form-data"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/json
                                  -    jsonTable:
                                  -        TABLE({"class": "netInfoPostJSONTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            ///TBODY({"role": "list", "aria-label": $STR("jsonviewer.tab.JSON")},
                                  -            TBODY({"role": "list", "aria-label": $STR("JSON")},
                                  -                TR({"class": "netInfoPostJSONTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            ///$STR("jsonviewer.tab.JSON")
                                  -                            $STR("JSON")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostJSONBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    // application/xml
                                  -    xmlTable:
                                  -        TABLE({"class": "netInfoPostXMLTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("xmlviewer.tab.XML")},
                                  -                TR({"class": "netInfoPostXMLTitle", "role": "presentation"},
                                  -                    TD({"role": "presentation" },
                                  -                        DIV({"class": "netInfoPostParams"},
                                  -                            $STR("xmlviewer.tab.XML")
                                  -                        )
                                  -                    )
                                  -                ),
                                  -                TR(
                                  -                    TD({"class": "netInfoPostXMLBody"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTable:
                                  -        TABLE({"class": "netInfoPostSourceTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -            TBODY({"role": "list", "aria-label": $STR("net.label.Source")},
                                  -                TR({"class": "netInfoPostSourceTitle", "role": "presentation"},
                                  -                    TD({colspan: 2, "role": "presentation"},
                                  -                        DIV({"class": "netInfoPostSource"},
                                  -                            $STR("net.label.Source")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    sourceBodyTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                FOR("line", "$param|getParamValueIterator",
                                  -                    CODE({"class":"focusRow subFocusRow" , "role": "listitem"},"$line")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        return NetInfoBody.getParamValueIterator(param);
                                  -    },
                                  -
                                  -    render: function(context, parentNode, file)
                                  -    {
                                  -        //debugger;
                                  -        var spy = getAncestorByClass(parentNode, "spyHead");
                                  -        var spyObject = spy.repObject;
                                  -        var data = spyObject.data;
                                  -        
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        var contentType = file.mimeType;
                                  -        
                                  -        ///var text = Utils.getPostText(file, context, true);
                                  -        ///if (text == undefined)
                                  -        ///    return;
                                  -
                                  -        ///if (Utils.isURLEncodedRequest(file, context))
                                  -        // fake Utils.isURLEncodedRequest identification
                                  -        if (contentType && contentType == "application/x-www-form-urlencoded" ||
                                  -            data && data.indexOf("=") != -1) 
                                  -        {
                                  -            ///var lines = text.split("\n");
                                  -            ///var params = parseURLEncodedText(lines[lines.length-1]);
                                  -            var params = parseURLEncodedTextArray(data);
                                  -            if (params)
                                  -                this.insertParameters(parentNode, params);
                                  -        }
                                  -
                                  -        ///if (Utils.isMultiPartRequest(file, context))
                                  -        ///{
                                  -        ///    var data = this.parseMultiPartText(file, context);
                                  -        ///    if (data)
                                  -        ///        this.insertParts(parentNode, data);
                                  -        ///}
                                  -
                                  -        // moved to the top
                                  -        ///var contentType = Utils.findHeader(file.requestHeaders, "content-type");
                                  -
                                  -        ///if (Firebug.JSONViewerModel.isJSON(contentType))
                                  -        var jsonData = {
                                  -            responseText: data
                                  -        };
                                  -        
                                  -        if (Firebug.JSONViewerModel.isJSON(contentType, data))
                                  -            ///this.insertJSON(parentNode, file, context);
                                  -            this.insertJSON(parentNode, jsonData, context);
                                  -
                                  -        ///if (Firebug.XMLViewerModel.isXML(contentType))
                                  -        ///    this.insertXML(parentNode, file, context);
                                  -
                                  -        ///var postText = Utils.getPostText(file, context);
                                  -        ///postText = Utils.formatPostText(postText);
                                  -        var postText = data;
                                  -        if (postText)
                                  -            this.insertSource(parentNode, postText);
                                  -    },
                                  -
                                  -    insertParameters: function(parentNode, params)
                                  -    {
                                  -        if (!params || !params.length)
                                  -            return;
                                  -
                                  -        var paramTable = this.paramsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostParamsTitle", paramTable)[0];
                                  -        //var paramTable = this.paramsTable.append(null, parentNode);
                                  -        //var row = paramTable.getElementsByClassName("netInfoPostParamsTitle").item(0);
                                  -        
                                  -        var tbody = paramTable.getElementsByTagName("tbody")[0];
                                  -        
                                  -        NetInfoBody.headerDataTag.insertRows({headers: params}, row);
                                  -    },
                                  -
                                  -    insertParts: function(parentNode, data)
                                  -    {
                                  -        if (!data.params || !data.params.length)
                                  -            return;
                                  -
                                  -        var partsTable = this.partsTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostPartsTitle", paramTable)[0];
                                  -        //var partsTable = this.partsTable.append(null, parentNode);
                                  -        //var row = partsTable.getElementsByClassName("netInfoPostPartsTitle").item(0);
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: data.params}, row);
                                  -    },
                                  -
                                  -    insertJSON: function(parentNode, file, context)
                                  -    {
                                  -        ///var text = Utils.getPostText(file, context);
                                  -        var text = file.responseText;
                                  -        ///var data = parseJSONString(text, "http://" + file.request.originalURI.host);
                                  -        var data = parseJSONString(text);
                                  -        if (!data)
                                  -            return;
                                  -
                                  -        ///var jsonTable = this.jsonTable.append(null, parentNode);
                                  -        var jsonTable = this.jsonTable.append({}, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostJSONBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostJSONBody", jsonTable)[0];
                                  -
                                  -        if (!this.toggles)
                                  -            this.toggles = {};
                                  -
                                  -        Firebug.DOMPanel.DirTable.tag.replace(
                                  -            {object: data, toggles: this.toggles}, jsonBody);
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -
                                  -        var jsonTable = this.xmlTable.append(null, parentNode);
                                  -        ///var jsonBody = jsonTable.getElementsByClassName("netInfoPostXMLBody").item(0);
                                  -        var jsonBody = $$(".netInfoPostXMLBody", jsonTable)[0];
                                  -
                                  -        Firebug.XMLViewerModel.insertXML(jsonBody, text);
                                  -    },
                                  -
                                  -    insertSource: function(parentNode, text)
                                  -    {
                                  -        var sourceTable = this.sourceTable.append({object:{}}, parentNode);
                                  -        var row = $$(".netInfoPostSourceTitle", sourceTable)[0];
                                  -        //var sourceTable = this.sourceTable.append(null, parentNode);
                                  -        //var row = sourceTable.getElementsByClassName("netInfoPostSourceTitle").item(0);
                                  -
                                  -        var param = {value: [text]};
                                  -        this.sourceBodyTag.insertRows({param: param}, row);
                                  -    },
                                  -
                                  -    parseMultiPartText: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text == undefined)
                                  -            return null;
                                  -
                                  -        FBTrace.sysout("net.parseMultiPartText; boundary: ", text);
                                  -
                                  -        var boundary = text.match(/\s*boundary=\s*(.*)/)[1];
                                  -
                                  -        var divider = "\r\n\r\n";
                                  -        var bodyStart = text.indexOf(divider);
                                  -        var body = text.substr(bodyStart + divider.length);
                                  -
                                  -        var postData = {};
                                  -        postData.mimeType = "multipart/form-data";
                                  -        postData.params = [];
                                  -
                                  -        var parts = body.split("--" + boundary);
                                  -        for (var i=0; i<parts.length; i++)
                                  -        {
                                  -            var part = parts[i].split(divider);
                                  -            if (part.length != 2)
                                  -                continue;
                                  -
                                  -            var m = part[0].match(/\s*name=\"(.*)\"(;|$)/);
                                  -            postData.params.push({
                                  -                name: (m && m.length > 1) ? m[1] : "",
                                  -                value: trim(part[1])
                                  -            });
                                  -        }
                                  -
                                  -        return postData;
                                  -    }
                                  -});
                                  -
                                  -var NetInfoPostData = Firebug.NetMonitor.NetInfoPostData;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a;};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/reps.js b/branches/flexBox/content/firebug/reps.js
                                  deleted file mode 100644
                                  index 7ff1874f..00000000
                                  --- a/branches/flexBox/content/firebug/reps.js
                                  +++ /dev/null
                                  @@ -1,1934 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        // workaround to show XPath (a better approach would use the tooltip on mouseover,
                                  -        // so the XPath information would be calculated dynamically, but we need to create
                                  -        // a tooltip class/wrapper around Menu or InfoTip)
                                  -        title: "$object|FBL.getElementXPath",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle "),
                                  -            
                                  -            SPAN({"class": "objectProps"}, 
                                  -                SPAN({"class": "objectLeftBrace", role: "presentation"}, "{"),
                                  -                FOR("prop", "$object|propIterator",
                                  -                    SPAN({"class": "objectPropName", role: "presentation"}, "$prop.name"),
                                  -                    SPAN({"class": "objectEqual", role: "presentation"}, "$prop.equal"),
                                  -                    TAG("$prop.tag", {object: "$prop.object"}),
                                  -                    SPAN({"class": "objectComma", role: "presentation"}, "$prop.delim")
                                  -                ),
                                  -                SPAN({"class": "objectRightBrace"}, "}")
                                  -            )
                                  -        ),
                                  -
                                  -    propNumberTag:
                                  -        SPAN({"class": "objectProp-number"}, "$object"),
                                  -
                                  -    propStringTag:
                                  -        SPAN({"class": "objectProp-string"}, "&quot;$object&quot;"),
                                  -
                                  -    propObjectTag:
                                  -        SPAN({"class": "objectProp-object"}, "$object"),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        ///Firebug.ObjectShortIteratorMax;
                                  -        var maxLength = 55; // default max length for long representation
                                  -        
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var length = 0;
                                  -        
                                  -        var numProperties = 0;
                                  -        var numPropertiesShown = 0;
                                  -        var maxLengthReached = false;
                                  -        
                                  -        var lib = this;
                                  -        
                                  -        var propRepsMap = 
                                  -        {
                                  -            "boolean": this.propNumberTag,
                                  -            "number": this.propNumberTag,
                                  -            "string": this.propStringTag,
                                  -            "object": this.propObjectTag
                                  -        };
                                  -
                                  -        try
                                  -        {
                                  -            var title = Firebug.Rep.getTitle(object);
                                  -            length += title.length;
                                  -
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                
                                  -                var type = typeof(value);
                                  -                if (type == "boolean" || 
                                  -                    type == "number" || 
                                  -                    (type == "string" && value) || 
                                  -                    (type == "object" && value && value.toString))
                                  -                {
                                  -                    var tag = propRepsMap[type];
                                  -                    
                                  -                    var value = (type == "object") ?
                                  -                        Firebug.getRep(value).getTitle(value) :
                                  -                        value + "";
                                  -                        
                                  -                    length += name.length + value.length + 4;
                                  -                    
                                  -                    if (length <= maxLength)
                                  -                    {
                                  -                        props.push({
                                  -                            tag: tag, 
                                  -                            name: name, 
                                  -                            object: value, 
                                  -                            equal: "=", 
                                  -                            delim: ", "
                                  -                        });
                                  -                        
                                  -                        numPropertiesShown++;
                                  -                    }
                                  -                    else
                                  -                        maxLengthReached = true;
                                  -
                                  -                }
                                  -                
                                  -                numProperties++;
                                  -                
                                  -                if (maxLengthReached && numProperties > numPropertiesShown)
                                  -                    break;
                                  -            }
                                  -            
                                  -            if (numProperties > numPropertiesShown)
                                  -            {
                                  -                props.push({
                                  -                    object: "...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                });
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    fb_1_6_propIterator: function (object, max)
                                  -    {
                                  -        max = max || 3;
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0, count = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var value;
                                  -                try
                                  -                {
                                  -                    value = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(value);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && value)
                                  -                    || (t == "object" && value && value.toString))
                                  -                {
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag || rep.tag;
                                  -                    if (t == "object")
                                  -                    {
                                  -                        value = rep.getTitle(value);
                                  -                        tag = rep.titleTag;
                                  -                    }
                                  -                    count++;
                                  -                    if (count <= max)
                                  -                        props.push({tag: tag, name: name, object: value, equal: "=", delim: ", "});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -            if (count > max)
                                  -            {
                                  -                props[Math.max(1,max-1)] = {
                                  -                    object: "more...", //xxxHonza localization
                                  -                    tag: FirebugReps.Caption.tag,
                                  -                    name: "",
                                  -                    equal:"",
                                  -                    delim:""
                                  -                };
                                  -            }
                                  -            else if (props.length > 0)
                                  -            {
                                  -                props[props.length-1].delim = '';
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -        return props;
                                  -    },
                                  -    
                                  -    /*
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -    /**/
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.nodeName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.nodeName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 
                                  -                 // we must check if the attribute is specified otherwise IE will show them
                                  -                 if (!attr.specified || attr.nodeName && attr.nodeName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.nodeName == "id")
                                  -                    idAttr = attr;
                                  -                 else if (attr.nodeName == "class")
                                  -                    classAttr = attr;
                                  -                 else if (attr.nodeName == "style")
                                  -                    attrs.push({
                                  -                        nodeName: attr.nodeName,
                                  -                        nodeValue: attr.nodeValue ||
                                  -                        // IE won't recognize the attr.nodeValue of <style> nodes ...
                                  -                        // and will return CSS property names in upper case, so we need to convert them
                                  -                        elt.style.cssText.replace(/([^\s]+)\s*:/g, 
                                  -                                function(m,g){return g.toLowerCase()+":"})                         
                                  -                    });
                                  -                 else
                                  -                    attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.nodeName == "id" || attr.nodeName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -     
                                  -     // TODO: xxxpedro remove this?
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -     /**/
                                  -
                                  -     getNodeTextGroups: function(element)
                                  -     {
                                  -         var text =  element.textContent;
                                  -         if (!Firebug.showFullTextNodes)
                                  -         {
                                  -             text=cropString(text,50);
                                  -         }
                                  -
                                  -         var escapeGroups=[];
                                  -
                                  -         if (Firebug.showTextNodesWithWhitespace)
                                  -             escapeGroups.push({
                                  -                'group': 'whitespace',
                                  -                'class': 'nodeWhiteSpace',
                                  -                'extra': {
                                  -                    '\t': '_Tab',
                                  -                    '\n': '_Para',
                                  -                    ' ' : '_Space'
                                  -                }
                                  -             });
                                  -         if (Firebug.showTextNodesWithEntities)
                                  -             escapeGroups.push({
                                  -                 'group':'text',
                                  -                 'class':'nodeTextEntity',
                                  -                 'extra':{}
                                  -             });
                                  -
                                  -         if (escapeGroups.length)
                                  -             return escapeGroupsForEntities(text, escapeGroups);
                                  -         else
                                  -             return [{str:text,'class':'',extra:''}];
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.nodeName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink objectLink-function focusRow a11yFocus", _repObject: "$object.fn"}, "$object|getCallName"),
                                  -            " ( ",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            " )",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        return frame.name || "anonymous";
                                  -        
                                  -        //return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        //TODO: xxxpedro reps StackFrame
                                  -        var fileName = cropString(getFileName(frame.href), 20);
                                  -        return fileName + (frame.lineNo ? " (line " + frame.lineNo + ")" : "");
                                  -        
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  diff --git a/branches/flexBox/content/firebug/sourceBox.js b/branches/flexBox/content/firebug/sourceBox.js
                                  deleted file mode 100644
                                  index 07577ddb..00000000
                                  --- a/branches/flexBox/content/firebug/sourceBox.js
                                  +++ /dev/null
                                  @@ -1,1070 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -/// TODO: xxxpedro debugger hack
                                  -/// TODO: xxxpedro port to Firebug Lite
                                  -Firebug.ActivableModule = Firebug.Module;
                                  -Firebug.registerActivableModule = Firebug.registerModule;
                                  -Firebug.Panel.isEnabled = function(){return true;};
                                  -Firebug.ActivablePanel = Firebug.Panel;
                                  -///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class Defines the API for SourceBoxDecorator and provides the default implementation.
                                  - * Decorators are passed the source box on construction, called to create the HTML,
                                  - * and called whenever the user scrolls the view.
                                  - */
                                  -Firebug.SourceBoxDecorator = function(sourceBox){};
                                  -
                                  -Firebug.SourceBoxDecorator.sourceBoxCounter = 0;
                                  -
                                  -Firebug.SourceBoxDecorator.prototype =
                                  -/** @lends Firebug.SourceBoxDecorator */
                                  -{
                                  -    onSourceBoxCreation: function(sourceBox)
                                  -    {
                                  -        // allow panel-document unique ids to be generated for lines.
                                  -        sourceBox.uniqueId = ++Firebug.SourceBoxDecorator.sourceBoxCounter;
                                  -    },
                                  -    /* called on a delay after the view port is updated, eg vertical scroll
                                  -     * The sourceBox will contain lines from firstRenderedLine to lastRenderedLine
                                  -     * The user will be able to see sourceBox.firstViewableLine to sourceBox.lastViewableLine
                                  -     */
                                  -    decorate: function(sourceBox, sourceFile)
                                  -    {
                                  -        return;
                                  -    },
                                  -
                                  -    /* called once as each line is being rendered.
                                  -    * @param lineNo integer 1-maxLineNumbers
                                  -    */
                                  -    getUserVisibleLineNumber: function(sourceBox, lineNo)
                                  -    {
                                  -        return lineNo;
                                  -    },
                                  -
                                  -    /* call once as each line is being rendered.
                                  -    * @param lineNo integer 1-maxLineNumbers
                                  -    */
                                  -    getLineHTML: function(sourceBox, lineNo)
                                  -    {
                                  -        var html = escapeForSourceLine(sourceBox.lines[lineNo-1]);
                                  -
                                  -        // If the pref says so, replace tabs by corresponding number of spaces.
                                  -        if (Firebug.replaceTabs > 0)
                                  -        {
                                  -            var space = new Array(Firebug.replaceTabs + 1).join(" ");
                                  -            html = html.replace(/\t/g, space);
                                  -        }
                                  -
                                  -        return html;
                                  -    },
                                  -
                                  -    /*
                                  -     * @return a string unique to the sourcebox and line number, valid in getElementById()
                                  -     */
                                  -    getLineId: function(sourceBox, lineNo)
                                  -    {
                                  -        return 'sb' + sourceBox.uniqueId + '-L' + lineNo;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @panel Firebug.SourceBoxPanel: Intermediate level class for showing lines of source, eg Script Panel
                                  - * Implements a 'viewport' to render only the lines the user is viewing or has recently viewed.
                                  - * Scroll events or scrollToLine calls are converted to viewableRange line number range.
                                  - * The range of lines is rendered, skipping any that have already been rendered. Then if the
                                  - * new line range overlaps the old line range, done; else delete the old range.
                                  - * That way the lines kept contiguous.
                                  - * The rendering details are delegated to SourceBoxDecorator; each source line may be expanded into
                                  - * more rendered lines.
                                  - */
                                  -Firebug.SourceBoxPanel = function() {};
                                  -
                                  -var SourceBoxPanelBase = extend(Firebug.MeasureBox, Firebug.ActivablePanel);
                                  -Firebug.SourceBoxPanel = extend(SourceBoxPanelBase,
                                  -/** @lends Firebug.SourceBoxPanel */
                                  -{
                                  -    ///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -    /// TODO: xxxpedro debugger hack
                                  -    /// need to refactor the Firebug Lite initialization create/destroy, intitialize/shutodown, initializeUI order of calls
                                  -    create: function()
                                  -    {
                                  -        /// TODO: xxxpedro
                                  -        this.onResize =  bind(this.resizer, this);
                                  -        this.sourceBoxes = {};
                                  -        this.decorator = this.getDecorator();
                                  -        
                                  -        Firebug.ActivablePanel.create.apply(this, arguments);
                                  -        
                                  -        /// TODO: xxxpedro containerNode is not part of Firebug API
                                  -        this.scrollingElement = this.containerNode;
                                  -    },
                                  -    
                                  -    initialize: function(context, doc)
                                  -    {
                                  -        /// TODO: xxxpedro - need to refactor the Firebug Lite initialization create/destroy, intitialize/shutodown, initializeUI order of calls
                                  -        ///this.onResize =  bind(this.resizer, this);
                                  -        ///this.sourceBoxes = {};
                                  -        ///this.decorator = this.getDecorator();
                                  -
                                  -        Firebug.ActivablePanel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(panelNode)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        // since in Firebug Lite each Panel does not have an unique window for its
                                  -        // content, we must listen to the Firebug.chrome.window instead in order to
                                  -        // handle the resizing of the Panel's UI
                                  -        this.resizeEventTarget = Firebug.chrome.window;
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResize);
                                  -        ///this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        ///this.resizeEventTarget.addEventListener("resize", this.onResize, true);
                                  -        this.attachToCache();
                                  -
                                  -        Firebug.ActivablePanel.initializeNode.apply(this, arguments);
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        var oldEventTarget = this.resizeEventTarget;
                                  -        oldEventTarget.removeEventListener("resize", this.onResize, true);
                                  -        Firebug.Panel.reattach.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro
                                  -        this.resizeEventTarget = Firebug.chrome.window;
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResize);
                                  -        ///this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        ///this.resizeEventTarget.addEventListener("resize", this.onResize, true);
                                  -        this.attachToCache();
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        Firebug.ActivablePanel.destroyNode.apply(this, arguments);
                                  -        
                                  -        removeEvent(this.resizeEventTarget, "resize", this.onResize);
                                  -        ///this.resizeEventTarget.removeEventListener("resize", this.onResize, true);
                                  -        this.detachFromCache();
                                  -    },
                                  -
                                  -    attachToCache: function()
                                  -    {
                                  -        this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detachFromCache: function()
                                  -    {
                                  -        this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    onTextSizeChange: function(zoom)
                                  -    {
                                  -        this.removeAllSourceBoxes();  // clear so we start fresh with new text sizes
                                  -    },
                                  -
                                  -    removeAllSourceBoxes: function()
                                  -    {
                                  -          this.sourceBoxes = {};
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    //  TabCache listener implementation
                                  -
                                  -    onStartRequest: function(context, request)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (context === this.context)
                                  -        {
                                  -            var url = request.URI.spec;
                                  -            var sourceFile = getSourceFileByHref(url, context);
                                  -            if (sourceFile)
                                  -                this.removeSourceBoxBySourceFile(sourceFile);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Panel extension point.
                                  -     * Called just before box is shown
                                  -     */
                                  -    updateSourceBox: function(sourceBox)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    /* Panel extension point. Called on panel initialization
                                  -     * @return Must implement SourceBoxDecorator API.
                                  -     */
                                  -    getDecorator: function()
                                  -    {
                                  -        return new Firebug.SourceBoxDecorator();
                                  -    },
                                  -
                                  -     /* Panel extension point
                                  -      * @return string eg "js" or "css"
                                  -      */
                                  -    getSourceType: function()
                                  -    {
                                  -        throw "SourceBox.getSourceType: Need to override in extender ";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        this.sourceBoxes = {};  // clear so we start fresh if enabled
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -    },
                                  -
                                  -    getSourceLinesFrom: function(selection)
                                  -    {
                                  -        // https://developer.mozilla.org/en/DOM/Selection
                                  -        if (selection.isCollapsed)
                                  -            return "";
                                  -
                                  -        var anchorSourceRow = getAncestorByClass(selection.anchorNode, "sourceRow");
                                  -        var focusSourceRow = getAncestorByClass(selection.focusNode, "sourceRow");
                                  -        if (anchorSourceRow == focusSourceRow)
                                  -        {
                                  -            return selection.toString();// trivial case
                                  -        }
                                  -        var buf = this.getSourceLine(anchorSourceRow, selection.anchorOffset);
                                  -
                                  -        var currentSourceRow = anchorSourceRow.nextSibling;
                                  -        while(currentSourceRow && (currentSourceRow != focusSourceRow) && hasClass(currentSourceRow, "sourceRow"))
                                  -        {
                                  -            buf += this.getSourceLine(currentSourceRow);
                                  -            currentSourceRow = currentSourceRow.nextSibling;
                                  -        }
                                  -        buf += this.getSourceLine(focusSourceRow, 0, selection.focusOffset);
                                  -        return buf;
                                  -    },
                                  -
                                  -    getSourceLine: function(sourceRow, beginOffset, endOffset)
                                  -    {
                                  -        var source = getChildByClass(sourceRow, "sourceRowText").textContent;
                                  -        if (endOffset)
                                  -            source = source.substring(beginOffset, endOffset);
                                  -        else if (beginOffset)
                                  -            source = source.substring(beginOffset);
                                  -        else
                                  -            source = source;
                                  -
                                  -        return source;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getSourceBoxBySourceFile: function(sourceFile)
                                  -    {
                                  -        if (sourceFile.href)
                                  -        {
                                  -            var sourceBox = this.getSourceBoxByURL(sourceFile.href);
                                  -            if (sourceBox && sourceBox.repObject == sourceFile)
                                  -                return sourceBox;
                                  -            else
                                  -                return null;  // cause a new one to be created
                                  -        }
                                  -    },
                                  -
                                  -    getSourceBoxByURL: function(url)
                                  -    {
                                  -        return url ? this.sourceBoxes[url] : null;
                                  -    },
                                  -
                                  -    removeSourceBoxBySourceFile: function(sourceFile)
                                  -    {
                                  -        var sourceBox = this.getSourceBoxBySourceFile(sourceFile);
                                  -        if (sourceBox)  // else we did not create one for this sourceFile
                                  -        {
                                  -            delete this.sourceBoxes[sourceFile.href];
                                  -
                                  -            if (sourceBox.parentNode === this.panelNode)
                                  -                this.panelNode.removeChild(sourceBox);
                                  -
                                  -            if (this.selectedSourceBox === sourceBox) // need to update the view
                                  -            {
                                  -                delete this.selectedSourceBox;
                                  -                delete this.location;
                                  -                this.showSourceFile(sourceFile);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    renameSourceBox: function(oldURL, newURL)
                                  -    {
                                  -        var sourceBox = this.sourceBoxes[oldURL];
                                  -        if (sourceBox)
                                  -        {
                                  -            delete this.sourceBoxes[oldURL];
                                  -            this.sourceBoxes[newURL] = sourceBox;
                                  -        }
                                  -    },
                                  -
                                  -    showSourceFile: function(sourceFile)
                                  -    {
                                  -        var sourceBox = this.getSourceBoxBySourceFile(sourceFile);
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("firebug.showSourceFile: "+sourceFile, sourceBox);
                                  -        if (!sourceBox)
                                  -        {
                                  -            // Has the script tag mutation event arrived?
                                  -            if (sourceFile.compilation_unit_type === "scriptTagAppend" && !sourceFile.source)
                                  -            {
                                  -                // prevent recursion, just give message if it does not arrive
                                  -                sourceFile.source = ["script tag mutation event has not arrived"];
                                  -                return;
                                  -            }
                                  -            sourceBox = this.createSourceBox(sourceFile);
                                  -        }
                                  -
                                  -
                                  -        this.showSourceBox(sourceBox);
                                  -    },
                                  -
                                  -    /*
                                  -     * Assumes that locations are sourceFiles, TODO lower class
                                  -     */
                                  -    showSourceLink: function(sourceLink)
                                  -    {
                                  -        var sourceFile = getSourceFileByHref(sourceLink.href, this.context);
                                  -        if (sourceFile)
                                  -        {
                                  -            this.navigate(sourceFile);
                                  -            if (sourceLink.line)
                                  -            {
                                  -                this.scrollToLine(sourceLink.href, sourceLink.line, this.jumpHighlightFactory(sourceLink.line, this.context));
                                  -                dispatch(this.fbListeners, "onShowSourceLink", [this, sourceLink.line]);
                                  -            }
                                  -            if (sourceLink == this.selection)  // then clear it so the next link will scroll and highlight.
                                  -                delete this.selection;
                                  -        }
                                  -    },
                                  -
                                  -    showSourceBox: function(sourceBox)
                                  -    {
                                  -        if (this.selectedSourceBox)
                                  -            collapse(this.selectedSourceBox, true);
                                  -
                                  -        this.selectedSourceBox = sourceBox;
                                  -        delete this.currentSearch;
                                  -
                                  -        if (sourceBox)
                                  -        {
                                  -            this.reView(sourceBox);
                                  -            this.updateSourceBox(sourceBox);
                                  -            collapse(sourceBox, false);
                                  -        }
                                  -    },
                                  -
                                  -    /* Private, do not call outside of this object
                                  -    * A sourceBox is a div with additional operations and state.
                                  -    * @param sourceFile there is at most one sourceBox for each sourceFile
                                  -    */
                                  -    createSourceBox: function(sourceFile)  // decorator(sourceFile, sourceBox)
                                  -    {
                                  -        var sourceBox = this.initializeSourceBox(sourceFile);
                                  -
                                  -        sourceBox.decorator = this.decorator;
                                  -
                                  -        // Framework connection
                                  -        sourceBox.decorator.onSourceBoxCreation(sourceBox);
                                  -
                                  -        this.sourceBoxes[sourceFile.href] = sourceBox;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("firebug.createSourceBox with "+sourceBox.maximumLineNumber+" lines for "+sourceFile+(sourceFile.href?" sourceBoxes":" anon "), sourceBox);
                                  -
                                  -        this.panelNode.appendChild(sourceBox);
                                  -        this.setSourceBoxLineSizes(sourceBox);
                                  -
                                  -        return sourceBox;
                                  -    },
                                  -
                                  -    getSourceFileBySourceBox: function(sourceBox)
                                  -    {
                                  -        return sourceBox.repObject;
                                  -    },
                                  -
                                  -    initializeSourceBox: function(sourceFile)
                                  -    {
                                  -        var sourceBox = this.document.createElement("div");
                                  -        setClass(sourceBox, "sourceBox");
                                  -        collapse(sourceBox, true);
                                  -
                                  -        var lines = sourceFile.loadScriptLines(this.context);
                                  -        if (!lines)
                                  -        {
                                  -            lines = ["Failed to load source for sourceFile "+sourceFile];
                                  -        }
                                  -
                                  -        sourceBox.lines = lines;
                                  -        sourceBox.repObject = sourceFile;
                                  -
                                  -        sourceBox.maximumLineNumber = lines.length;
                                  -        sourceBox.maxLineNoChars = (sourceBox.maximumLineNumber + "").length;
                                  -
                                  -        sourceBox.getLineNode =  function(lineNo)
                                  -        {
                                  -            // XXXjjb this method is supposed to return null if the lineNo is not in the viewport
                                  -            return $(this.decorator.getLineId(this, lineNo), this.ownerDocument);
                                  -        };
                                  -
                                  -        var paddedSource =
                                  -            "<div class='topSourcePadding'>" +
                                  -                "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
                                  -            "</div>"+
                                  -            "<div class='sourceViewport'></div>"+
                                  -            "<div class='bottomSourcePadding'>"+
                                  -                "<div class='sourceRow'><div class='sourceLine'></div><div class='sourceRowText'></div></div>"+
                                  -            "</div>";
                                  -
                                  -        appendInnerHTML(sourceBox, paddedSource);
                                  -
                                  -        sourceBox.viewport = getChildByClass(sourceBox, 'sourceViewport');
                                  -        return sourceBox;
                                  -    },
                                  -
                                  -    setSourceBoxLineSizes: function(sourceBox)
                                  -    {
                                  -        var view = sourceBox.viewport;
                                  -
                                  -        var lineNoCharsSpacer = "";
                                  -        for (var i = 0; i < sourceBox.maxLineNoChars; i++)
                                  -              lineNoCharsSpacer += "0";
                                  -
                                  -        this.startMeasuring(view);
                                  -        var size = this.measureText(lineNoCharsSpacer);
                                  -        this.stopMeasuring();
                                  -
                                  -        sourceBox.lineHeight = size.height + 1;
                                  -        sourceBox.lineNoWidth = size.width;
                                  -
                                  -        var view = sourceBox.viewport; // TODO some cleaner way
                                  -        view.previousSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth + "px";
                                  -        view.nextSibling.firstChild.firstChild.style.width = sourceBox.lineNoWidth +"px";
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -        {
                                  -            FBTrace.sysout("setSourceBoxLineSizes size for lineNoCharsSpacer "+lineNoCharsSpacer, size);
                                  -            FBTrace.sysout("firebug.setSourceBoxLineSizes, this.scrollingElement.scrollTop "+this.scrollingElement.scrollTop+ " sourceBox.lineHeight: "+sourceBox.lineHeight+" sourceBox.lineNoWidth:"+sourceBox.lineNoWidth+"\n");
                                  -        }
                                  -    },
                                  -
                                  -    /*
                                  -     * @return SourceLink to currently selected source file
                                  -     */
                                  -    getSourceLink: function(lineNo)
                                  -    {
                                  -        if (!this.selectedSourceBox)
                                  -            return;
                                  -        if (!lineNo)
                                  -            lineNo = this.getCentralLine(this.selectedSourceBox);
                                  -        return new SourceLink(this.selectedSourceBox.repObject.href, lineNo, this.getSourceType());
                                  -    },
                                  -
                                  -    /* Select sourcebox with href, scroll lineNo into center, highlight lineNo with highlighter given
                                  -     * @param href a URL, null means the selected sourcefile
                                  -     * @param lineNo integer 1-maximumLineNumber
                                  -     * @param highlighter callback, a function(sourceBox). sourceBox.centralLine will be lineNo
                                  -     */
                                  -    scrollToLine: function(href, lineNo, highlighter)
                                  -    {
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("SourceBoxPanel.scrollToLine: "+lineNo+"@"+href+" with highlighter "+highlighter, highlighter);
                                  -
                                  -        if (this.context.scrollTimeout)
                                  -        {
                                  -            this.context.clearTimeout(this.context.scrollTimeout);
                                  -            delete this.context.scrollTimeout;
                                  -        }
                                  -
                                  -        if (href)
                                  -        {
                                  -            if (!this.selectedSourceBox || this.selectedSourceBox.repObject.href != href)
                                  -            {
                                  -                var sourceFile = this.context.sourceFileMap[href];
                                  -                if (!sourceFile)
                                  -                {
                                  -                    if(FBTrace.DBG_SOURCEFILES)
                                  -                        FBTrace.sysout("scrollToLine FAILS, no sourceFile for href "+href, this.context.sourceFileMap);
                                  -                    return;
                                  -                }
                                  -                this.navigate(sourceFile);
                                  -            }
                                  -        }
                                  -
                                  -        this.context.scrollTimeout = this.context.setTimeout(bindFixed(function()
                                  -        {
                                  -            if (!this.selectedSourceBox)
                                  -            {
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("SourceBoxPanel.scrollTimeout no selectedSourceBox");
                                  -                return;
                                  -            }
                                  -
                                  -            this.selectedSourceBox.targetedLine = lineNo;
                                  -
                                  -            // At this time we know which sourcebox is selected but the viewport is not selected.
                                  -            // We need to scroll, let the scroll handler set the viewport, then highlight any lines visible.
                                  -            var skipScrolling = false;
                                  -            if (this.selectedSourceBox.firstViewableLine && this.selectedSourceBox.lastViewableLine)
                                  -            {
                                  -                var linesFromTop = lineNo - this.selectedSourceBox.firstViewableLine;
                                  -                var linesFromBot = this.selectedSourceBox.lastViewableLine - lineNo;
                                  -                skipScrolling = (linesFromTop > 3 && linesFromBot > 3);
                                  -                if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: skipScrolling: "+skipScrolling+" fromTop:"+linesFromTop+" fromBot:"+linesFromBot);
                                  -            }
                                  -            else  // the selectedSourceBox has not been built
                                  -            {
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("SourceBoxPanel.scrollTimeout, no viewable lines", this.selectedSourceBox);
                                  -            }
                                  -
                                  -            if (!skipScrolling)
                                  -            {
                                  -                var viewRange = this.getViewRangeFromTargetLine(this.selectedSourceBox, lineNo);
                                  -                this.selectedSourceBox.newScrollTop = this.getScrollTopFromViewRange(this.selectedSourceBox, viewRange);
                                  -                if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: newScrollTop "+this.selectedSourceBox.newScrollTop+" vs old "+this.selectedSourceBox.scrollTop+" for "+this.selectedSourceBox.repObject.href);
                                  -                this.selectedSourceBox.scrollTop = this.selectedSourceBox.newScrollTop; // *may* cause scrolling
                                  -                if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("SourceBoxPanel.scrollTimeout: scrollTo "+lineNo+" scrollTop:"+this.selectedSourceBox.scrollTop+ " lineHeight: "+this.selectedSourceBox.lineHeight);
                                  -            }
                                  -
                                  -            if (this.selectedSourceBox.highlighter)
                                  -                this.applyDecorator(this.selectedSourceBox); // may need to highlight even if we don't scroll
                                  -
                                  -        }, this));
                                  -
                                  -        this.selectedSourceBox.highlighter = highlighter;  // clears if null
                                  -    },
                                  -
                                  -    /*
                                  -     * @return a highlighter function(sourceBox) that puts a class on the line for a time slice
                                  -     */
                                  -    jumpHighlightFactory: function(lineNo, context)
                                  -    {
                                  -        return function jumpHighlightIfInView(sourceBox)
                                  -        {
                                  -            var  lineNode = sourceBox.getLineNode(lineNo);
                                  -            if (lineNode)
                                  -            {
                                  -                setClassTimed(lineNode, "jumpHighlight", context);
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("jumpHighlightFactory on line "+lineNo+" lineNode:"+lineNode.innerHTML+"\n");
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("jumpHighlightFactory no node at line "+lineNo, sourceBox);
                                  -            }
                                  -
                                  -            return false; // not sticky
                                  -        };
                                  -    },
                                  -
                                  -    /*
                                  -     * resize and scroll event handler
                                  -     */
                                  -    resizer: function(event)
                                  -    {
                                  -        // The resize target is Firebug as a whole. But most of the UI needs no special code for resize.
                                  -        // But our SourceBoxPanel has viewport that will change size.
                                  -        if (this.selectedSourceBox && this.visible)
                                  -        {
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("resizer event: "+event.type, event);
                                  -
                                  -            this.reView(this.selectedSourceBox);
                                  -        }
                                  -    },
                                  -
                                  -    reView: function(sourceBox, clearCache)  // called for all scroll events, including any time this.scrollingElement.scrollTop is set
                                  -    {
                                  -        if (sourceBox.targetedLine)
                                  -        {
                                  -            sourceBox.targetLineNumber = sourceBox.targetedLine;
                                  -            var viewRange = this.getViewRangeFromTargetLine(sourceBox, sourceBox.targetedLine);
                                  -            delete sourceBox.targetedLine;
                                  -        }
                                  -        else
                                  -        {
                                  -            var viewRange = this.getViewRangeFromScrollTop(sourceBox, this.scrollingElement.scrollTop);
                                  -        }
                                  -
                                  -        if (clearCache)
                                  -        {
                                  -            this.clearSourceBox(sourceBox);
                                  -        }
                                  -        else if (this.scrollingElement.scrollTop === sourceBox.lastScrollTop && sourceBox.clientHeight && sourceBox.clientHeight === sourceBox.lastClientHeight)
                                  -        {
                                  -            if (sourceBox.firstRenderedLine <= viewRange.firstLine && sourceBox.lastRenderedLine >= viewRange.lastLine)
                                  -            {
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("reView skipping sourceBox "+this.scrollingElement.scrollTop+"=scrollTop="+sourceBox.lastScrollTop+", "+ sourceBox.clientHeight+"=clientHeight="+sourceBox.lastClientHeight, sourceBox);
                                  -                // skip work if nothing changes.
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        dispatch(this.fbListeners, "onBeforeViewportChange", [this]);  // XXXjjb TODO where should this be?
                                  -        this.buildViewAround(sourceBox, viewRange);
                                  -
                                  -        if (Firebug.uiListeners.length > 0)
                                  -        {
                                  -            var link = new SourceLink(sourceBox.repObject.href, sourceBox.centralLine, this.getSourceType());
                                  -            dispatch(Firebug.uiListeners, "onViewportChange", [link]);
                                  -        }
                                  -
                                  -        sourceBox.lastScrollTop = this.scrollingElement.scrollTop;
                                  -        sourceBox.lastClientHeight = sourceBox.clientHeight;
                                  -    },
                                  -
                                  -    buildViewAround: function(sourceBox, viewRange)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.updateViewportCache(sourceBox, viewRange);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if(FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("buildViewAround updateViewportCache FAILS "+exc, exc);
                                  -        }
                                  -
                                  -        this.setViewportPadding(sourceBox, viewRange);
                                  -
                                  -        sourceBox.centralLine = Math.floor( (viewRange.lastLine + viewRange.firstLine)/2 );
                                  -
                                  -        this.applyDecorator(sourceBox);
                                  -
                                  -        return;
                                  -    },
                                  -
                                  -    updateViewportCache: function(sourceBox, viewRange)
                                  -    {
                                  -        var cacheHit = this.insertedLinesOverlapCache(sourceBox, viewRange);
                                  -
                                  -        if (!cacheHit)
                                  -        {
                                  -            this.clearSourceBox(sourceBox);  // no overlap, remove old range
                                  -            sourceBox.firstRenderedLine = viewRange.firstLine; // reset cached range
                                  -            sourceBox.lastRenderedLine = viewRange.lastLine;
                                  -        }
                                  -        else  // cache overlap, expand range of cache
                                  -        {
                                  -            sourceBox.firstRenderedLine = Math.min(viewRange.firstLine, sourceBox.firstRenderedLine);
                                  -            sourceBox.lastRenderedLine = Math.max(viewRange.lastLine, sourceBox.lastRenderedLine);
                                  -        }
                                  -        sourceBox.firstViewableLine = viewRange.firstLine;  // todo actually check that these are viewable
                                  -        sourceBox.lastViewableLine = viewRange.lastLine;
                                  -        sourceBox.numberOfRenderedLines = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("buildViewAround viewRange: "+viewRange.firstLine+"-"+viewRange.lastLine+" rendered: "+sourceBox.firstRenderedLine+"-"+sourceBox.lastRenderedLine, sourceBox);
                                  -    },
                                  -
                                  -    /*
                                  -     * Add lines from viewRange, but do not adjust first/lastRenderedLine.
                                  -     * @return true if viewRange overlaps first/lastRenderedLine
                                  -     */
                                  -    insertedLinesOverlapCache: function(sourceBox, viewRange)
                                  -    {
                                  -        var cacheHit = false;
                                  -        
                                  -        var linesBefore = []; // lines to be prepended
                                  -        var linesAfter = []; // lines to be appended
                                  -    
                                  -        for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
                                  -        {
                                  -            if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine )
                                  -            {
                                  -                cacheHit = true;
                                  -                continue;
                                  -            }
                                  -
                                  -            var lineHTML = this.getSourceLineHTML(sourceBox, line);
                                  -
                                  -            if (line < sourceBox.firstRenderedLine)
                                  -            {
                                  -                // if we are above the cache, queue lines to be prepended
                                  -                linesBefore.push(lineHTML);
                                  -            }
                                  -            else
                                  -            {
                                  -                // if we are below the cache, queue lines to be appended
                                  -                linesAfter.push(lineHTML);
                                  -            }
                                  -        }
                                  -        
                                  -        if (linesBefore.length > 0)
                                  -        {
                                  -            var topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine);
                                  -            
                                  -            // prepend all lines at once
                                  -            appendInnerHTML(sourceBox.viewport, linesBefore.join(""), topCacheLine);
                                  -        }
                                  -        
                                  -        if (linesAfter.length > 0)
                                  -        {
                                  -            // append all lines at once
                                  -            appendInnerHTML(sourceBox.viewport, linesAfter.join(""), null);
                                  -        }
                                  -        
                                  -        return cacheHit;
                                  -    },
                                  -
                                  -    old_insertedLinesOverlapCache: function(sourceBox, viewRange)
                                  -    {
                                  -        var topCacheLine = null;
                                  -        var cacheHit = false;
                                  -        for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
                                  -        {
                                  -            if (line >= sourceBox.firstRenderedLine && line <= sourceBox.lastRenderedLine )
                                  -            {
                                  -                cacheHit = true;
                                  -                continue;
                                  -            }
                                  -
                                  -            var lineHTML = this.getSourceLineHTML(sourceBox, line);
                                  -
                                  -            var ref = null;
                                  -            if (line < sourceBox.firstRenderedLine)   // prepend if we are above the cache
                                  -            {
                                  -                if (!topCacheLine)
                                  -                    topCacheLine = sourceBox.getLineNode(sourceBox.firstRenderedLine);
                                  -                ref = topCacheLine;
                                  -            }
                                  -
                                  -            var newElement = appendInnerHTML(sourceBox.viewport, lineHTML, ref);
                                  -        }
                                  -        return cacheHit;
                                  -    },
                                  -
                                  -    clearSourceBox: function(sourceBox)
                                  -    {
                                  -        if (sourceBox.firstRenderedLine)
                                  -        {
                                  -            var topMostCachedElement = sourceBox.getLineNode(sourceBox.firstRenderedLine);  // eg 1
                                  -            var totalCached = sourceBox.lastRenderedLine - sourceBox.firstRenderedLine + 1;   // eg 20 - 1 + 1 = 19
                                  -            if (topMostCachedElement && totalCached)
                                  -                this.removeLines(sourceBox, topMostCachedElement, totalCached);
                                  -        }
                                  -        sourceBox.lastRenderedLine = 0;
                                  -        sourceBox.firstRenderedLine = 0;
                                  -        sourceBox.numberOfRenderedLines = 0;
                                  -    },
                                  -
                                  -    getSourceLineHTML: function(sourceBox, i)
                                  -    {
                                  -        var lineNo = sourceBox.decorator.getUserVisibleLineNumber(sourceBox, i);
                                  -        var lineHTML = sourceBox.decorator.getLineHTML(sourceBox, i);
                                  -        var lineId = sourceBox.decorator.getLineId(sourceBox, i);    // decorator lines may not have ids
                                  -
                                  -        var lineNoText = this.getTextForLineNo(lineNo, sourceBox.maxLineNoChars);
                                  -
                                  -        var theHTML =
                                  -            '<div '
                                  -               + (lineId ? ('id="' + lineId + '"') : "")
                                  -               + ' class="sourceRow" role="presentation"><a class="'
                                  -               +  'sourceLine' + '" role="presentation">'
                                  -               + lineNoText
                                  -               + '</a><span class="sourceRowText" role="presentation">'
                                  -               + lineHTML
                                  -               + '</span></div>';
                                  -
                                  -        return theHTML;
                                  -    },
                                  -
                                  -    getTextForLineNo: function(lineNo, maxLineNoChars)
                                  -    {
                                  -        // Make sure all line numbers are the same width (with a fixed-width font)
                                  -        var lineNoText = lineNo + "";
                                  -        while (lineNoText.length < maxLineNoChars)
                                  -            lineNoText = " " + lineNoText;
                                  -
                                  -        return lineNoText;
                                  -    },
                                  -
                                  -    removeLines: function(sourceBox, firstRemoval, totalRemovals)
                                  -    {
                                  -        for(var i = 1; i <= totalRemovals; i++)
                                  -        {
                                  -            var nextSourceLine = firstRemoval;
                                  -            firstRemoval = firstRemoval.nextSibling;
                                  -            sourceBox.viewport.removeChild(nextSourceLine);
                                  -        }
                                  -    },
                                  -
                                  -    getCentralLine: function(sourceBox)
                                  -    {
                                  -        return sourceBox.centralLine;
                                  -    },
                                  -
                                  -    getViewRangeFromTargetLine: function(sourceBox, targetLineNumber)
                                  -    {
                                  -        var viewRange = {firstLine: 1, centralLine: targetLineNumber, lastLine: 1};
                                  -
                                  -        var averageLineHeight = this.getAverageLineHeight(sourceBox);
                                  -        var panelHeight = this.panelNode.clientHeight;
                                  -        var linesPerViewport = Math.round((panelHeight / averageLineHeight) + 1);
                                  -
                                  -        viewRange.firstLine = Math.round(targetLineNumber - linesPerViewport / 2);
                                  -
                                  -        if (viewRange.firstLine <= 0)
                                  -            viewRange.firstLine = 1;
                                  -
                                  -        viewRange.lastLine = viewRange.firstLine + linesPerViewport;
                                  -
                                  -        if (viewRange.lastLine > sourceBox.maximumLineNumber)
                                  -            viewRange.lastLine = sourceBox.maximumLineNumber;
                                  -
                                  -        return viewRange;
                                  -    },
                                  -
                                  -    /*
                                  -     * Use the average height of source lines in the cache to estimate where the scroll bar points based on scrollTop
                                  -     */
                                  -    getViewRangeFromScrollTop: function(sourceBox, scrollTop)
                                  -    {
                                  -        var viewRange = {};
                                  -        var averageLineHeight = this.getAverageLineHeight(sourceBox);
                                  -        viewRange.firstLine = Math.floor(scrollTop / averageLineHeight + 1);
                                  -
                                  -        /// TODO: xxxpedro
                                  -        // In Firebug Lite the "scroll container" is not the panelNode, but its parent.
                                  -        var panelHeight = this.panelNode.parentNode.clientHeight;
                                  -        ///var panelHeight = this.panelNode.clientHeight;
                                  -        var viewableLines = Math.ceil((panelHeight / averageLineHeight) + 1);
                                  -        viewRange.lastLine = viewRange.firstLine + viewableLines;
                                  -        if (viewRange.lastLine > sourceBox.maximumLineNumber)
                                  -            viewRange.lastLine = sourceBox.maximumLineNumber;
                                  -
                                  -        viewRange.centralLine = Math.floor((viewRange.lastLine - viewRange.firstLine)/2);
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -        {
                                  -            FBTrace.sysout("getViewRangeFromScrollTop scrollTop:"+scrollTop+" viewRange: "+viewRange.firstLine+"-"+viewRange.lastLine);
                                  -            if (!this.noRecurse)
                                  -            {
                                  -                this.noRecurse = true;
                                  -                var testScrollTop = this.getScrollTopFromViewRange(sourceBox, viewRange);
                                  -                delete this.noRecurse;
                                  -                FBTrace.sysout("getViewRangeFromScrollTop "+((scrollTop==testScrollTop)?"checks":(scrollTop+"=!scrollTop!="+testScrollTop)));
                                  -            }
                                  -        }
                                  -
                                  -        return viewRange;
                                  -    },
                                  -
                                  -    /*
                                  -     * inverse of the getViewRangeFromScrollTop.
                                  -     * If the viewRange was set by targetLineNumber, then this value become the new scroll top
                                  -     *    else the value will be the same as the scrollbar's given value of scrollTop.
                                  -     */
                                  -    getScrollTopFromViewRange: function(sourceBox, viewRange)
                                  -    {
                                  -        var averageLineHeight = this.getAverageLineHeight(sourceBox);
                                  -        var scrollTop = Math.floor(averageLineHeight * (viewRange.firstLine - 1));
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -        {
                                  -            FBTrace.sysout("getScrollTopFromViewRange viewRange:"+viewRange.firstLine+"-"+viewRange.lastLine+" averageLineHeight: "+averageLineHeight+" scrollTop "+scrollTop);
                                  -            if (!this.noRecurse)
                                  -            {
                                  -                this.noRecurse = true;
                                  -                var testViewRange = this.getViewRangeFromScrollTop(sourceBox, scrollTop);
                                  -                delete this.noRecurse;
                                  -                var vrStr = viewRange.firstLine+"-"+viewRange.lastLine;
                                  -                var tvrStr = testViewRange.firstLine+"-"+testViewRange.lastLine;
                                  -                FBTrace.sysout("getScrollTopFromCenterLine "+((vrStr==tvrStr)? "checks" : vrStr+"=!viewRange!="+tvrStr));
                                  -            }
                                  -        }
                                  -
                                  -        return scrollTop;
                                  -    },
                                  -
                                  -    /*
                                  -     * The virtual sourceBox height is the averageLineHeight * max lines
                                  -     * @return float
                                  -     */
                                  -    getAverageLineHeight: function(sourceBox)
                                  -    {
                                  -        var averageLineHeight = sourceBox.lineHeight;  // fall back to single line height
                                  -
                                  -        var renderedViewportHeight = sourceBox.viewport.clientHeight;
                                  -        var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
                                  -        if (renderedViewportHeight && numberOfRenderedLines)
                                  -            averageLineHeight = renderedViewportHeight / numberOfRenderedLines;
                                  -
                                  -        return averageLineHeight;
                                  -    },
                                  -
                                  -    /*
                                  -     * The virtual sourceBox = topPadding + sourceBox.viewport + bottomPadding
                                  -     * The viewport grows as more lines are added to the cache
                                  -     * The virtual sourceBox height is estimated from the average height lines in the viewport cache
                                  -     */
                                  -    getTotalPadding: function(sourceBox)
                                  -    {
                                  -        var numberOfRenderedLines = sourceBox.numberOfRenderedLines;
                                  -        if (!numberOfRenderedLines)
                                  -            return 0;
                                  -
                                  -        var max = sourceBox.maximumLineNumber;
                                  -        var averageLineHeight = this.getAverageLineHeight(sourceBox);
                                  -        // total box will be the average line height times total lines
                                  -        var virtualSourceBoxHeight = Math.floor(max * averageLineHeight);
                                  -        if (virtualSourceBoxHeight < sourceBox.clientHeight)
                                  -        {
                                  -            var scrollBarHeight = sourceBox.offsetHeight - sourceBox.clientHeight;
                                  -            // the total - view-taken-up - scrollbar
                                  -            var totalPadding = sourceBox.clientHeight - sourceBox.viewport.clientHeight - 1;
                                  -        }
                                  -        else
                                  -            var totalPadding = virtualSourceBoxHeight - sourceBox.viewport.clientHeight;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("getTotalPadding clientHeight:"+sourceBox.viewport.clientHeight+"  max: "+max+" gives total padding "+totalPadding);
                                  -
                                  -        return totalPadding;
                                  -    },
                                  -
                                  -    setViewportPadding: function(sourceBox, viewRange)
                                  -    {
                                  -        var firstRenderedLineElement = sourceBox.getLineNode(sourceBox.firstRenderedLine);
                                  -        if (!firstRenderedLineElement)
                                  -        {
                                  -            // It's not an error if the panel is disabled.
                                  -            if (FBTrace.DBG_ERRORS && this.isEnabled())
                                  -                FBTrace.sysout("setViewportPadding FAILS, no line at "+sourceBox.firstRenderedLine, sourceBox);
                                  -            return;
                                  -        }
                                  -
                                  -        var firstRenderedLineOffset = firstRenderedLineElement.offsetTop;
                                  -        var firstViewRangeElement = sourceBox.getLineNode(viewRange.firstLine);
                                  -        var firstViewRangeOffset = firstViewRangeElement.offsetTop;
                                  -        var topPadding = this.scrollingElement.scrollTop - (firstViewRangeOffset - firstRenderedLineOffset);
                                  -        // Because of rounding when converting from pixels to lines, topPadding can be +/- lineHeight/2, round up
                                  -        var averageLineHeight = this.getAverageLineHeight(sourceBox);
                                  -        var linesOfPadding = Math.floor( (topPadding + averageLineHeight)/ averageLineHeight);
                                  -        var topPadding = (linesOfPadding - 1)* averageLineHeight;
                                  -
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("setViewportPadding this.scrollingElement.scrollTop - (firstViewRangeOffset - firstRenderedLineOffset): "+this.scrollingElement.scrollTop+"-"+"("+firstViewRangeOffset+"-"+firstRenderedLineOffset+")="+topPadding);
                                  -        // we want the bottomPadding to take up the rest
                                  -        var totalPadding = this.getTotalPadding(sourceBox);
                                  -        if (totalPadding < 0)
                                  -            var bottomPadding = Math.abs(totalPadding);
                                  -        else
                                  -            var bottomPadding = Math.floor(totalPadding - topPadding);
                                  -
                                  -        if (bottomPadding < 0)
                                  -            bottomPadding = 0;
                                  -
                                  -        if(FBTrace.DBG_SOURCEFILES)
                                  -        {
                                  -            FBTrace.sysout("setViewportPadding viewport.offsetHeight: "+sourceBox.viewport.offsetHeight+" viewport.clientHeight "+sourceBox.viewport.clientHeight);
                                  -            FBTrace.sysout("setViewportPadding sourceBox.offsetHeight: "+sourceBox.offsetHeight+" sourceBox.clientHeight "+sourceBox.clientHeight);
                                  -            FBTrace.sysout("setViewportPadding scrollTop: "+this.scrollingElement.scrollTop+" firstRenderedLine "+sourceBox.firstRenderedLine+" bottom: "+bottomPadding+" top: "+topPadding);
                                  -        }
                                  -        var view = sourceBox.viewport;
                                  -
                                  -        // Set the size on the line number field so the padding is filled with same style as source lines.
                                  -        view.previousSibling.style.height = topPadding + "px";
                                  -        view.nextSibling.style.height = bottomPadding + "px";
                                  -
                                  -        //sourceRow
                                  -        view.previousSibling.firstChild.style.height = topPadding + "px";
                                  -        view.nextSibling.firstChild.style.height = bottomPadding + "px";
                                  -
                                  -        //sourceLine
                                  -        view.previousSibling.firstChild.firstChild.style.height = topPadding + "px";
                                  -        view.nextSibling.firstChild.firstChild.style.height = bottomPadding + "px";
                                  -    },
                                  -
                                  -    applyDecorator: function(sourceBox)
                                  -    {
                                  -        if (this.context.sourceBoxDecoratorTimeout)
                                  -        {
                                  -            this.context.clearTimeout(this.context.sourceBoxDecoratorTimeout);
                                  -            delete this.context.sourceBoxDecoratorTimeout;
                                  -        }
                                  -
                                  -        // Run source code decorating on 150ms timeout, which is bigger than
                                  -        // the period in which scroll events are fired. So, if the user is moving
                                  -        // scroll-bar thumb (or quickly clicking on scroll-arrows), the source code is
                                  -        // not decorated (the timeout cleared by the code above) and the scrolling is fast.
                                  -        this.context.sourceBoxDecoratorTimeout = this.context.setTimeout(
                                  -            bindFixed(this.asyncDecorating, this, sourceBox), 150);
                                  -
                                  -        if (this.context.sourceBoxHighlighterTimeout)
                                  -        {
                                  -            this.context.clearTimeout(this.context.sourceBoxHighlighterTimeout);
                                  -            delete this.context.sourceBoxHighlighterTimeout;
                                  -        }
                                  -
                                  -        // Source code highlighting is using different timeout: 0ms. When searching
                                  -        // within the Script panel, the user expects immediate response.
                                  -        this.context.sourceBoxHighlighterTimeout = this.context.setTimeout(
                                  -            bindFixed(this.asyncHighlighting, this, sourceBox));
                                  -    },
                                  -
                                  -    asyncDecorating: function(sourceBox)
                                  -    {
                                  -        try
                                  -        {
                                  -            sourceBox.decorator.decorate(sourceBox, sourceBox.repObject);
                                  -
                                  -            if (Firebug.uiListeners.length > 0)
                                  -                dispatch(Firebug.uiListeners, "onApplyDecorator", [sourceBox]);
                                  -
                                  -            if (FBTrace.DBG_SOURCEFILES)
                                  -                FBTrace.sysout("sourceBoxDecoratorTimeout "+sourceBox.repObject, sourceBox);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("sourcebox applyDecorator FAILS "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    asyncHighlighting: function(sourceBox)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (sourceBox.highlighter)
                                  -            {
                                  -                var sticky = sourceBox.highlighter(sourceBox);
                                  -                if (FBTrace.DBG_SOURCEFILES)
                                  -                    FBTrace.sysout("asyncHighlighting highlighter sticky:"+sticky,
                                  -                        sourceBox.highlighter);
                                  -
                                  -                if (!sticky)
                                  -                    delete sourceBox.highlighter;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("sourcebox highlighter FAILS "+exc, exc);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/sourceCache.js b/branches/flexBox/content/firebug/sourceCache.js
                                  deleted file mode 100644
                                  index 27d4b43c..00000000
                                  --- a/branches/flexBox/content/firebug/sourceCache.js
                                  +++ /dev/null
                                  @@ -1,372 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -///const Cc = Components.classes;
                                  -///const Ci = Components.interfaces;
                                  -///const nsIIOService = Ci.nsIIOService;
                                  -///const nsIRequest = Ci.nsIRequest;
                                  -///const nsICachingChannel = Ci.nsICachingChannel;
                                  -///const nsIScriptableInputStream = Ci.nsIScriptableInputStream;
                                  -///const nsIUploadChannel = Ci.nsIUploadChannel;
                                  -///const nsIHttpChannel = Ci.nsIHttpChannel;
                                  -
                                  -///const IOService = Cc["@mozilla.org/network/io-service;1"];
                                  -///const ioService = IOService.getService(nsIIOService);
                                  -///const ScriptableInputStream = Cc["@mozilla.org/scriptableinputstream;1"];
                                  -///const chromeReg = CCSV("@mozilla.org/chrome/chrome-registry;1", "nsIToolkitChromeRegistry");
                                  -
                                  -///const LOAD_FROM_CACHE = nsIRequest.LOAD_FROM_CACHE;
                                  -///const LOAD_BYPASS_LOCAL_CACHE_IF_BUSY = nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
                                  -
                                  -///const NS_BINDING_ABORTED = 0x804b0002;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.SourceCache = function(context)
                                  -{
                                  -    this.context = context;
                                  -    this.cache = {};
                                  -};
                                  -
                                  -Firebug.SourceCache.prototype = extend(new Firebug.Listener(),
                                  -{
                                  -    isCached: function(url)
                                  -    {
                                  -        return (this.cache[url] ? true : false);
                                  -    },
                                  -
                                  -    loadText: function(url, method, file)
                                  -    {
                                  -        var lines = this.load(url, method, file);
                                  -        return lines ? lines.join("") : null;
                                  -    },
                                  -
                                  -    load: function(url, method, file)
                                  -    {
                                  -        if (FBTrace.DBG_CACHE)
                                  -        {
                                  -            FBTrace.sysout("sourceCache.load: " + url);
                                  -
                                  -            if (!this.cache.hasOwnProperty(url) && this.cache[url])
                                  -                FBTrace.sysout("sourceCache.load; ERROR - hasOwnProperty returns false, " +
                                  -                    "but the URL is cached: " + url, this.cache[url]);
                                  -        }
                                  -
                                  -        // xxxHonza: sometimes hasOwnProperty return false even if the URL is obviously there.
                                  -        //if (this.cache.hasOwnProperty(url))
                                  -        var response = this.cache[this.removeAnchor(url)];
                                  -        if (response)
                                  -            return response;
                                  -
                                  -        if (FBTrace.DBG_CACHE)
                                  -        {
                                  -            var urls = [];
                                  -            for (var prop in this.cache)
                                  -                urls.push(prop);
                                  -
                                  -            FBTrace.sysout("sourceCache.load: Not in the Firebug internal cache", urls);
                                  -        }
                                  -
                                  -        var d = FBL.splitDataURL(url);  //TODO the RE should not have baseLine
                                  -        if (d)
                                  -        {
                                  -            var src = d.encodedContent;
                                  -            var data = decodeURIComponent(src);
                                  -            var lines = splitLines(data);
                                  -            this.cache[url] = lines;
                                  -
                                  -            return lines;
                                  -        }
                                  -
                                  -        var j = FBL.reJavascript.exec(url);
                                  -        if (j)
                                  -        {
                                  -            var src = url.substring(FBL.reJavascript.lastIndex);
                                  -            var lines = splitLines(src);
                                  -            this.cache[url] = lines;
                                  -
                                  -            return lines;
                                  -        }
                                  -
                                  -        var c = FBL.reChrome.test(url);
                                  -        if (c)
                                  -        {
                                  -            if (Firebug.filterSystemURLs)
                                  -                return ["Filtered chrome url "+url];  // ignore chrome
                                  -
                                  -            // If the chrome.manifest has  xpcnativewrappers=no, platform munges the url
                                  -            var reWrapperMunge = /(\S*)\s*->\s*(\S*)/;
                                  -            var m = reWrapperMunge.exec(url);
                                  -            if (m)
                                  -            {
                                  -                url = m[2];
                                  -                if (FBTrace.DBG_CACHE)
                                  -                    FBTrace.sysout("sourceCache found munged xpcnativewrapper url and set it to "+url+" m "+m+" m[0]:"+m[0]+" [1]"+m[1], m);
                                  -            }
                                  -
                                  -            var chromeURI = makeURI(url);
                                  -            if (!chromeURI)
                                  -            {
                                  -                if (FBTrace.DBG_CACHE)
                                  -                    FBTrace.sysout("sourceCache.load failed to convert chrome to local: "+url);
                                  -                return ["sourceCache failed to make URI from "+url];
                                  -            }
                                  -
                                  -            var localURI = chromeReg.convertChromeURL(chromeURI);
                                  -            if (FBTrace.DBG_CACHE)
                                  -                FBTrace.sysout("sourceCache.load converting chrome to local: "+url, " -> "+localURI.spec);
                                  -            return this.loadFromLocal(localURI.spec);
                                  -        }
                                  -
                                  -        c = FBL.reFile.test(url);
                                  -        if (c)
                                  -        {
                                  -            return this.loadFromLocal(url);
                                  -        }
                                  -
                                  -        // Unfortunately, the URL isn't available so, let's try to use FF cache.
                                  -        // Notice that additional network request to the server can be made in
                                  -        // this method (double-load).
                                  -        return this.loadFromCache(url, method, file);
                                  -    },
                                  -
                                  -    store: function(url, text)
                                  -    {
                                  -        var tempURL = this.removeAnchor(url);
                                  -
                                  -        if (FBTrace.DBG_CACHE)
                                  -            FBTrace.sysout("sourceCache for " + this.context.getName() + " store url=" +
                                  -                url + ((tempURL != url) ? " -> " + tempURL : ""), text);
                                  -
                                  -        var lines = splitLines(text);
                                  -        return this.storeSplitLines(tempURL, lines);
                                  -    },
                                  -
                                  -    removeAnchor: function(url)
                                  -    {
                                  -        var index = url.indexOf("#");
                                  -        if (index < 0)
                                  -            return url;
                                  -
                                  -        return url.substr(0, index);
                                  -    },
                                  -
                                  -    loadFromLocal: function(url)
                                  -    {
                                  -        // if we get this far then we have either a file: or chrome: url converted to file:
                                  -        var src = getResource(url);
                                  -        if (src)
                                  -        {
                                  -            var lines = splitLines(src);
                                  -            this.cache[url] = lines;
                                  -
                                  -            return lines;
                                  -        }
                                  -    },
                                  -
                                  -    loadFromCache: function(url, method, file)
                                  -    {
                                  -        if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.loadFromCache url:"+url);
                                  -
                                  -        var doc = this.context.window.document;
                                  -        if (doc)
                                  -            var charset = doc.characterSet;
                                  -        else
                                  -            var charset = "UTF-8";
                                  -
                                  -        /// TODO: xxxpedro XPCOM
                                  -        /*
                                  -        var channel;
                                  -        try
                                  -        {
                                  -            channel = ioService.newChannel(url, null, null);
                                  -            channel.loadFlags |= LOAD_FROM_CACHE | LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
                                  -
                                  -            if (method && (channel instanceof nsIHttpChannel))
                                  -            {
                                  -                var httpChannel = QI(channel, nsIHttpChannel);
                                  -                httpChannel.requestMethod = method;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_CACHE)
                                  -                FBTrace.sysout("sourceCache for url:"+url+" window="+this.context.window.location.href+" FAILS:", exc);
                                  -            return;
                                  -        }
                                  -
                                  -        if (url == this.context.browser.contentWindow.location.href)
                                  -        {
                                  -            if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load content window href\n");
                                  -            if (channel instanceof nsIUploadChannel)
                                  -            {
                                  -                var postData = getPostStream(this.context);
                                  -                if (postData)
                                  -                {
                                  -                    var uploadChannel = QI(channel, nsIUploadChannel);
                                  -                    uploadChannel.setUploadStream(postData, "", -1);
                                  -                    if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load uploadChannel set\n");
                                  -                }
                                  -            }
                                  -
                                  -            if (channel instanceof nsICachingChannel)
                                  -            {
                                  -                var cacheChannel = QI(channel, nsICachingChannel);
                                  -                cacheChannel.cacheKey = getCacheKey(this.context);
                                  -                if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load cacheChannel key"+cacheChannel.cacheKey+"\n");
                                  -            }
                                  -        }
                                  -        else if ((method == "PUT" || method == "POST") && file)
                                  -        {
                                  -            if (channel instanceof nsIUploadChannel)
                                  -            {
                                  -                // In case of PUT and POST, don't forget to use the original body.
                                  -                var postData = getPostText(file, this.context);
                                  -                if (postData)
                                  -                {
                                  -                    var postDataStream = getInputStreamFromString(postData);
                                  -                    var uploadChannel = QI(channel, nsIUploadChannel);
                                  -                    uploadChannel.setUploadStream(postDataStream, "application/x-www-form-urlencoded", -1);
                                  -                    if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load uploadChannel set\n");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var stream;
                                  -        try
                                  -        {
                                  -            if (FBTrace.DBG_CACHE) FBTrace.sysout("sourceCache.load url:"+url+" with charset"+charset+"\n");
                                  -            stream = channel.open();
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                var isCache = (channel instanceof nsICachingChannel)?"nsICachingChannel":"NOT caching channel";
                                  -                var isUp = (channel instanceof nsIUploadChannel)?"nsIUploadChannel":"NOT nsIUploadChannel";
                                  -                FBTrace.sysout(url+" vs "+this.context.browser.contentWindow.location.href+" and "+isCache+" "+isUp+"\n");
                                  -                FBTrace.sysout("sourceCache.load fails channel.open for url="+url+ " cause:", exc);
                                  -                FBTrace.sysout("sourceCache.load fails channel=", channel);
                                  -            }
                                  -            return ["sourceCache.load FAILS for url="+url, exc.toString()];
                                  -        }
                                  -        /**/
                                  -
                                  -        try
                                  -        {
                                  -            ///var data = readFromStream(stream, charset);
                                  -            var data = Firebug.Lite.Proxy.load(url);
                                  -            var lines = splitLines(data);
                                  -            this.cache[url] = lines;
                                  -            return lines;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("sourceCache.load FAILS, url="+url, exc);
                                  -            return ["sourceCache.load FAILS for url="+url, exc.toString()];
                                  -        }
                                  -        finally
                                  -        {
                                  -            ///stream.close();
                                  -        }
                                  -    },
                                  -
                                  -    storeSplitLines: function(url, lines)
                                  -    {
                                  -        if (FBTrace.DBG_CACHE)
                                  -            FBTrace.sysout("sourceCache for window="+this.context.getName()+" store url="+url+"\n");
                                  -        return this.cache[url] = lines;
                                  -    },
                                  -
                                  -    invalidate: function(url)
                                  -    {
                                  -        url = this.removeAnchor(url);
                                  -
                                  -        if (FBTrace.DBG_CACHE)
                                  -            FBTrace.sysout("sourceCache.invalidate; " + url);
                                  -
                                  -        delete this.cache[url];
                                  -    },
                                  -
                                  -    getLine: function(url, lineNo)
                                  -    {
                                  -        var lines = this.load(url);
                                  -        if (lines)
                                  -        {
                                  -            if (lineNo <= lines.length)
                                  -                return lines[lineNo-1];
                                  -            else
                                  -                return (lines.length == 1) ? lines[0] : "("+lineNo+" out of range "+lines.length+")";
                                  -        }
                                  -        else
                                  -            return "(no source for "+url+")";
                                  -    }
                                  -});
                                  -
                                  -var readWithXHR = function(url)
                                  -{
                                  -    Ajax.request({url: url, async: false});
                                  -    return Ajax.transport.responseText;
                                  -};
                                  -
                                  -/// TODO: xxxpedro XPCOM
                                  -/*
                                  -// xxxHonza getPostText and readPostTextFromRequest are copied from
                                  -// net.js. These functions should be removed when this cache is
                                  -// refactored due to the double-load problem.
                                  -function getPostText(file, context)
                                  -{
                                  -    if (!file.postText)
                                  -        file.postText = readPostTextFromPage(file.href, context);
                                  -
                                  -    if (!file.postText)
                                  -        file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -    return file.postText;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getPostStream(context)
                                  -{
                                  -    try
                                  -    {
                                  -        var webNav = context.browser.webNavigation;
                                  -        var descriptor = QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
                                  -        var entry = QI(descriptor, Ci.nsISHEntry);
                                  -
                                  -        if (entry.postData)
                                  -        {
                                  -            // Seek to the beginning, or it will probably start reading at the end
                                  -            var postStream = QI(entry.postData, Ci.nsISeekableStream);
                                  -            postStream.seek(0, 0);
                                  -            return postStream;
                                  -        }
                                  -     }
                                  -     catch (exc)
                                  -     {
                                  -     }
                                  -}
                                  -
                                  -function getCacheKey(context)
                                  -{
                                  -    try
                                  -    {
                                  -        var webNav = context.browser.webNavigation;
                                  -        var descriptor = QI(webNav, Ci.nsIWebPageDescriptor).currentDescriptor;
                                  -        var entry = QI(descriptor, Ci.nsISHEntry);
                                  -        return entry.cacheKey;
                                  -     }
                                  -     catch (exc)
                                  -     {
                                  -     }
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/sourceFile.js b/branches/flexBox/content/firebug/sourceFile.js
                                  deleted file mode 100644
                                  index 7a4c77cc..00000000
                                  --- a/branches/flexBox/content/firebug/sourceFile.js
                                  +++ /dev/null
                                  @@ -1,804 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -///    const Cc = Components.classes;
                                  -///    const Ci = Components.interfaces;
                                  -
                                  -///    const PCMAP_SOURCETEXT = Ci.jsdIScript.PCMAP_SOURCETEXT;
                                  -///    const PCMAP_PRETTYPRINT = Ci.jsdIScript.PCMAP_PRETTYPRINT;
                                  -
                                  -var PCMAP_SOURCETEXT = -1;
                                  -var PCMAP_PRETTYPRINT = -2;
                                  -
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -/*
                                  - * SourceFile one for every compilation unit.
                                  - * Unique URL for each. (href)
                                  - * Unique outerScript, the statements outside of any function defintion
                                  - * sourceCache keyed by href has source for this compilation unit
                                  - * Stored by href in context.
                                  - * Contains array of jsdIScript for functions (scripts) defined in this unit
                                  - * May contain line table (for sources viewed)
                                  - */
                                  -
                                  -Firebug.SourceFile = function (compilation_unit_type)
                                  -{
                                  -    this.compilation_unit_type = compilation_unit_type; /*@explore*/
                                  -};
                                  -
                                  -Firebug.SourceFile.prototype =
                                  -{
                                  -    getBaseLineOffset: function()
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    toString: function()
                                  -    {
                                  -        var str = (this.compilation_unit_type?this.compilation_unit_type+" ":"")+this.href+" script.tags( ";
                                  -        if (this.outerScript)
                                  -            str += (this.outerScript.isValid?this.outerScript.tag:"X") +"| ";
                                  -        if (this.innerScripts)
                                  -        {
                                  -            var numberInvalid = 0;
                                  -            for (var p in this.innerScripts)
                                  -            {
                                  -                var script = this.innerScripts[p];
                                  -                if (script.isValid)
                                  -                    str += p+" ";
                                  -                else
                                  -                    numberInvalid++;
                                  -            }
                                  -        }
                                  -        str += ")"+(numberInvalid ? "("+numberInvalid+" invalid)" : "");
                                  -        return str;
                                  -    },
                                  -
                                  -    /*
                                  -    forEachScript: function(callback)
                                  -     {
                                  -         if (this.outerScript)
                                  -             callback(this.outerScript);
                                  -         if (this.innerScripts)
                                  -         {
                                  -             for (var p in this.innerScripts)
                                  -             {
                                  -                 var script = this.innerScripts[p];
                                  -                 var rc = callback(script);
                                  -                 if (rc)
                                  -                     return rc;
                                  -             }
                                  -         }
                                  -     },
                                  -
                                  -     getLineRanges: function()
                                  -     {
                                  -         var str = "";
                                  -         this.forEachScript(function appendARange(script)
                                  -         {
                                  -             var endLineNumber = script.baseLineNumber + script.lineExtent;
                                  -             str += " "+script.baseLineNumber +"-("+script.tag+")-"+endLineNumber;
                                  -         });
                                  -         return str;
                                  -     },
                                  -
                                  -     getSourceLength: function()
                                  -     {
                                  -             return this.sourceLength;
                                  -     },
                                  -
                                  -     getLine: function(context, lineNo)
                                  -     {
                                  -         return context.sourceCache.getLine(this.href, lineNo);
                                  -     },
                                  -
                                  -     addToLineTable: function(script)
                                  -     {
                                  -         if (!script || !script.isValid)
                                  -         {
                                  -             if (FBTrace.DBG_ERRORS)
                                  -                 FBTrace.sysout("addToLineTable got invalid script "+(script?script.tag:"null")+"\n");
                                  -             return;
                                  -         }
                                  -
                                  -         // For outer scripts, a better algorithm would loop over PC, use pcToLine to mark the lines.
                                  -         // This assumes there are fewer PCs in an outer script than lines, probably true for large systems.
                                  -         // And now addToLineTable is only used for outerScripts (eval and top-level).
                                  -         // But since we can't know the range of PC values we cannot use that approach.
                                  -
                                  -         if (!this.outerScriptLineMap)
                                  -             this.outerScriptLineMap = [];
                                  -
                                  -         var lineCount = script.lineExtent + 1;
                                  -         var offset = this.getBaseLineOffset();
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -         {
                                  -             FBTrace.sysout("lib.SourceFile.addToLineTable script.tag:"+script.tag+" lineExtent="+lineCount+" baseLineNumber="+script.baseLineNumber+" offset="+offset+" for "+this.compilation_unit_type+"\n");
                                  -             var startTime = new Date().getTime();
                                  -         }
                                  -         if (lineCount > 100)
                                  -             lineCount = 100; // isLineExecutable requires about 1ms per line, so it can only be called for toy programs
                                  -
                                  -         for (var i = 0; i <= lineCount; i++)
                                  -         {
                                  -             var scriptLineNo = i + script.baseLineNumber;  // the max is (i + script.baseLineNumber + script.lineExtent)
                                  -             var mapLineNo = scriptLineNo - offset;
                                  -             try
                                  -             {
                                  -                 if (script.isLineExecutable(scriptLineNo, this.pcmap_type))
                                  -                     this.outerScriptLineMap.push(mapLineNo);
                                  -             }
                                  -             catch (e)
                                  -             {
                                  -                 // I guess not...
                                  -             }
                                  -
                                  -             if (FBTrace.DBG_LINETABLE)
                                  -             {
                                  -                 var pcFromLine = script.lineToPc(scriptLineNo, this.pcmap_type);
                                  -                 var lineFromPC = script.pcToLine(pcFromLine, this.pcmap_type);
                                  -                 if (this.outerScriptLineMap.indexOf(mapLineNo) != -1)
                                  -                     FBTrace.sysout("lib.SourceFile.addToLineTable ["+mapLineNo+"]="+script.tag+" for scriptLineNo="+scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine+" with map="+(this.pcmap_type==PCMAP_PRETTYPRINT?"PP":"SOURCE")+"\n");
                                  -                 else
                                  -                     FBTrace.sysout("lib.SourceFile.addToLineTable not executable scriptLineNo="+scriptLineNo+" vs "+lineFromPC+"=lineFromPC; lineToPc="+pcFromLine+"\n");
                                  -             }
                                  -         }
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -         {
                                  -             var endTime = new Date().getTime();
                                  -             var delta = endTime - startTime ;
                                  -             if (delta > 0) FBTrace.sysout("SourceFile.addToLineTable processed "+lineCount+" lines in "+delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond\n");
                                  -             FBTrace.sysout("SourceFile.addToLineTable: "+this.toString()+"\n");
                                  -         }
                                  -     },
                                  -
                                  -     addToLineTableByPCLoop: function(script)
                                  -     {
                                  -         // This code is not called; it crashes FF3pre https://bugzilla.mozilla.org/show_bug.cgi?id=430205
                                  -         if (!this.outerScriptLineMap)
                                  -             this.outerScriptLineMap = {};
                                  -
                                  -         var lineCount = script.lineExtent;
                                  -         var offset = this.getBaseLineOffset();
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -         {
                                  -             FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop script.tag:"+script.tag+" lineCount="+lineCount+" offset="+offset+" for "+this.compilation_unit_type+"\n");
                                  -             var startTime = new Date().getTime();
                                  -         }
                                  -
                                  -         for (var i = 0; i <= 10*lineCount; i++)
                                  -         {
                                  -             var lineFromPC = script.pcToLine(i, this.pcmap_type);
                                  -             //FBTrace.sysout("lib.SourceFile.addToLineTableByPCLoop pc="+i+" line: "+lineFromPC+"\n");
                                  -             this.outerScriptLineMap[lineFromPC] = script;
                                  -             if (lineFromPC >= lineCount) break;
                                  -         }
                                  -
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -         {
                                  -             FBTrace.sysout("SourceFile.addToLineTableByPCLoop: "+this.toString()+"\n");
                                  -             var endTime = new Date().getTime();
                                  -             var delta = endTime - startTime ;
                                  -             if (delta > 0) FBTrace.sysout("SourceFileaddToLineTableByPCLoop processed "+lineCount+" lines in "+delta+" millisecs "+Math.round(lineCount/delta)+" lines per millisecond\n");
                                  -         }
                                  -     },
                                  -
                                  -     hasScriptAtLineNumber: function(lineNo, mustBeExecutableLine)
                                  -     {
                                  -         var offset = this.getBaseLineOffset();
                                  -
                                  -         if (!this.innerScripts)
                                  -             return; // eg URLOnly
                                  -
                                  -         var targetLineNo = lineNo + offset;  // lineNo is user-viewed number, targetLineNo is jsd number
                                  -
                                  -         var scripts = [];
                                  -         for (var p in this.innerScripts)
                                  -         {
                                  -             var script = this.innerScripts[p];
                                  -             if (mustBeExecutableLine && !script.isValid)
                                  -                continue;
                                  -
                                  -             this.addScriptAtLineNumber(scripts, script, targetLineNo, mustBeExecutableLine, offset);
                                  -
                                  -             if (scripts.length)
                                  -                return true;
                                  -         }
                                  -
                                  -         if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid) )
                                  -             this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo, mustBeExecutableLine, offset);
                                  -
                                  -         return (scripts.length > 0);
                                  -     },
                                  -
                                  -     getScriptsAtLineNumber: function(lineNo, mustBeExecutableLine)
                                  -     {
                                  -         var offset = this.getBaseLineOffset();
                                  -
                                  -         if (!this.innerScripts)
                                  -             return; // eg URLOnly
                                  -
                                  -         var targetLineNo = lineNo + offset;  // lineNo is user-viewed number, targetLineNo is jsd number
                                  -
                                  -         var scripts = [];
                                  -         for (var p in this.innerScripts)
                                  -         {
                                  -             var script = this.innerScripts[p];
                                  -             if (mustBeExecutableLine && !script.isValid) continue;
                                  -             this.addScriptAtLineNumber(scripts, script, targetLineNo, mustBeExecutableLine, offset);
                                  -         }
                                  -
                                  -         if (this.outerScript && !(mustBeExecutableLine && !this.outerScript.isValid) )
                                  -             this.addScriptAtLineNumber(scripts, this.outerScript, targetLineNo, mustBeExecutableLine, offset);
                                  -
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -         {
                                  -             if (scripts.length < 1)
                                  -             {
                                  -                 FBTrace.sysout("lib.getScriptsAtLineNumber no targetScript at "+lineNo," for sourceFile:"+this.toString());
                                  -                 return false;
                                  -             }
                                  -             else
                                  -             {
                                  -                 FBTrace.sysout("getScriptsAtLineNumber offset "+offset+" for sourcefile: "+this.toString()+"\n");
                                  -             }
                                  -         }
                                  -
                                  -         return (scripts.length > 0) ? scripts : false;
                                  -     },
                                  -
                                  -     addScriptAtLineNumber: function(scripts, script, targetLineNo, mustBeExecutableLine, offset)
                                  -     {
                                  -         // script.isValid will be true.
                                  -         if (FBTrace.DBG_LINETABLE)
                                  -             FBTrace.sysout("addScriptAtLineNumber trying "+script.tag+", is "+script.baseLineNumber+" <= "+targetLineNo +" <= "+ (script.baseLineNumber + script.lineExtent)+"? using offset = "+offset+"\n");
                                  -
                                  -         if (targetLineNo >= script.baseLineNumber)
                                  -         {
                                  -             if ( (script.baseLineNumber + script.lineExtent) >= targetLineNo)
                                  -             {
                                  -                 if (mustBeExecutableLine)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (!script.isLineExecutable(targetLineNo, this.pcmap_type) )
                                  -                         {
                                  -                             if (FBTrace.DBG_LINETABLE)
                                  -                                 FBTrace.sysout("getScriptsAtLineNumber tried "+script.tag+", not executable at targetLineNo:"+targetLineNo+" pcmap:"+this.pcmap_type+"\n");
                                  -                             return;
                                  -                         }
                                  -                     }
                                  -                     catch (e)
                                  -                     {
                                  -                         // Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [jsdIScript.isLineExecutable]
                                  -                         return;
                                  -                     }
                                  -                 }
                                  -                 scripts.push(script);
                                  -                 if (FBTrace.DBG_LINETABLE)
                                  -                 {
                                  -                     var checkExecutable = "";
                                  -                     if (mustBeExecutableLine)
                                  -                         var checkExecutable = " isLineExecutable: "+script.isLineExecutable(targetLineNo, this.pcmap_type)+"@pc:"+script.lineToPc(targetLineNo, this.pcmap_type);
                                  -                     FBTrace.sysout("getScriptsAtLineNumber found "+script.tag+", isValid: "+script.isValid+" targetLineNo:"+targetLineNo+checkExecutable+"\n");
                                  -                 }
                                  -             }
                                  -         }
                                  -     },
                                  -
                                  -     scriptsIfLineCouldBeExecutable: function(lineNo)  // script may not be valid
                                  -     {
                                  -         var scripts = this.getScriptsAtLineNumber(lineNo, true);
                                  -         if (FBTrace.DBG_LINETABLE && !scripts) FBTrace.sysout("lib.scriptsIfLineCouldBeExecutable this.outerScriptLineMap", this.outerScriptLineMap);
                                  -         if (!scripts && this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1) )
                                  -             return [this.outerScript];
                                  -         return scripts;
                                  -     },
                                  -
                                  -     /**/
                                  -     isExecutableLine: function(lineNo)  // script may not be valid
                                  -     {
                                  -        /// TODO: xxxpedro sourceFile
                                  -        return false;
                                  -        
                                  -         if (this.hasScriptAtLineNumber(lineNo, true))
                                  -            return true;
                                  -
                                  -         if (this.outerScriptLineMap && (this.outerScriptLineMap.indexOf(lineNo) != -1))
                                  -             return true;
                                  -
                                  -         return false;
                                  -     },
                                  -
                                  -     /*hasScript: function(script)
                                  -     {
                                  -         if (this.outerScript && (this.outerScript.tag == script.tag) )
                                  -             return true;
                                  -         // XXXjjb Don't use indexOf or similar tests that rely on ===, since we are really working with
                                  -         // wrappers around jsdIScript, not script themselves.  I guess.
                                  -
                                  -        return ( this.innerScripts && this.innerScripts.hasOwnProperty(script.tag) );
                                  -     },
                                  -
                                  -     // these objects map JSD's values to correct values
                                  -     getScriptAnalyzer: function(script)
                                  -     {
                                  -         if (script && this.outerScript && (script.tag == this.outerScript.tag) )
                                  -             return this.getOuterScriptAnalyzer();
                                  -         return new Firebug.SourceFile.NestedScriptAnalyzer(this);
                                  -     },
                                  -
                                  -     // return.path: group/category label, return.name: item label
                                  -     getObjectDescription: function()
                                  -     {
                                  -         return FBL.splitURLBase(this.href);
                                  -     },
                                  -
                                  -     isEval: function()
                                  -     {
                                  -         return (this.compilation_unit_type == "eval-level") || (this.compilation_unit_type == "newFunction");
                                  -     },
                                  -
                                  -     isEvent: function()
                                  -     {
                                  -         return (this.compilation_unit_type == "event");
                                  -     },
                                  -
                                  -     /**/
                                  -     loadScriptLines: function(context)  // array of lines
                                  -     {
                                  -         if (this.source)
                                  -             return this.source;
                                  -         else
                                  -             return context.sourceCache.load(this.href);
                                  -     }/*,
                                  -
                                  -     getOuterScriptAnalyzer: function()
                                  -     {
                                  -         FBTrace.sysout("getOuterScriptAnalyzer not overridden for "+sourceFile, this);
                                  -     }
                                  -     /**/
                                  -
                                  -};
                                  -
                                  -Firebug.SourceFile.summarizeSourceLineArray = function(sourceLines, size)
                                  -{
                                  -    var buf  = "";
                                  -    for (var i = 0; i < sourceLines.length; i++)
                                  -     {
                                  -         var aLine = sourceLines[i].substr(0,240);  // avoid huge lines
                                  -         buf += aLine.replace(/\s/, " ", "g");
                                  -         if (buf.length > size || aLine.length > 240)
                                  -             break;
                                  -     }
                                  -     return buf.substr(0, size);
                                  -};
                                  -
                                  -
                                  -Firebug.SourceFile.NestedScriptAnalyzer = function(sourceFile)
                                  -{
                                  -    this.sourceFile = sourceFile;
                                  -};
                                  -
                                  -Firebug.SourceFile.NestedScriptAnalyzer.prototype =
                                  -{
                                  -    // Adjust JSD line numbers based on origin of script
                                  -    getSourceLineFromFrame: function(context, frame)
                                  -    {
                                  -        if (FBTrace.DBG_SOURCEFILES) FBTrace.sysout("NestedScriptAnalyzer in "+this.sourceFile.compilation_unit_type+": frame.line  - this.sourceFile.getBaseLineOffset()",
                                  -             frame.line +" - "+this.sourceFile.getBaseLineOffset());
                                  -
                                  -        return frame.line - (this.sourceFile.getBaseLineOffset());
                                  -    },
                                  -    // Interpret frame to give fn(args)
                                  -    getFunctionDescription: function(script, context, frame)
                                  -    {
                                  -        if (frame)
                                  -        {
                                  -            var name = frame.name;
                                  -            var args = FBL.getFunctionArgValues(frame);
                                  -        }
                                  -        else
                                  -        {
                                  -            var name = script.functionName;
                                  -            var args = [];
                                  -        }
                                  -
                                  -        if (name ==  "anonymous")
                                  -        {
                                  -            name = FBL.guessFunctionName(this.sourceFile.href, this.getBaseLineNumberByScript(script), context);
                                  -        }
                                  -
                                  -        return {name: name, args: args};
                                  -    },
                                  -
                                  -    // link to source for this script.
                                  -    getSourceLinkForScript: function (script)
                                  -    {
                                  -        var line = this.getBaseLineNumberByScript(script);
                                  -        return new FBL.SourceLink(this.sourceFile.href, line, "js");
                                  -    },
                                  -
                                  -    getBaseLineNumberByScript: function(script)
                                  -    {
                                  -        return script.baseLineNumber - (this.sourceFile.getBaseLineOffset() - 1);
                                  -    }
                                  -};
                                  -
                                  -Firebug.SourceFile.addScriptsToSourceFile = function(sourceFile, outerScript, innerScripts)
                                  -{
                                  -    // Attach the innerScripts for use later
                                  -    if (!sourceFile.innerScripts)
                                  -         sourceFile.innerScripts = {};
                                  -
                                  -     var total = 0;
                                  -     while (innerScripts.hasMoreElements())
                                  -     {
                                  -         var script = innerScripts.getNext();
                                  -         ///if (!script || ( (script instanceof Ci.jsdIScript) && !script.tag) )
                                  -         if (!script)
                                  -         {
                                  -             if (FBTrace.DBG_SOURCEFILES)
                                  -                 FBTrace.sysout("addScriptsToSourceFile innerScripts.getNext FAILS "+sourceFile, script);
                                  -             continue;
                                  -         }
                                  -         sourceFile.innerScripts[script.tag] = script;
                                  -         if (FBTrace.DBG_SOURCEFILES)
                                  -             total++;
                                  -     }
                                  -     if (FBTrace.DBG_SOURCEFILES)
                                  -         FBTrace.sysout("addScriptsToSourceFile "+ total +" scripts, sourcefile="+sourceFile.toString(), sourceFile);
                                  -};
                                  -
                                  -/*
                                  -//------------
                                  -Firebug.EvalLevelSourceFile = function(url, script, eval_expr, source, mapType, innerScriptEnumerator) // ctor
                                  -{
                                  -    this.href = url.href;
                                  -    this.hrefKind = url.kind;
                                  -     this.outerScript = script;
                                  -     this.containingURL = script.fileName;
                                  -     this.evalExpression = eval_expr;
                                  -     this.sourceLength = source.length;
                                  -     this.source = source;
                                  -     this.pcmap_type = mapType;
                                  -     Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
                                  -};
                                  -
                                  -Firebug.EvalLevelSourceFile.prototype =
                                  -    descend(new Firebug.SourceFile("eval-level"), // shared prototype
                                  -{
                                  -    getLine: function(context, lineNo)
                                  -    {
                                  -        return this.source[lineNo - 1];
                                  -    },
                                  -
                                  -    getBaseLineOffset: function()
                                  -    {
                                  -        return this.outerScript.baseLineNumber - 1; // baseLineNumber always valid even after jsdIscript isValid false
                                  -    },
                                  -
                                  -    getObjectDescription: function()
                                  -    {
                                  -         if (this.hrefKind == "source" || this.hrefKind == "data")
                                  -             return FBL.splitURLBase(this.href);
                                  -
                                  -         if (!this.summary)
                                  -         {
                                  -             if (this.evalExpression)
                                  -                 this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.evalExpression.substr(0, 240), 120);
                                  -             if (!this.summary)
                                  -                 this.summary = "";
                                  -             if (this.summary.length < 120)
                                  -                 this.summary = "eval("+this.summary + "...)=" + Firebug.SourceFile.summarizeSourceLineArray(this.source, 120 - this.summary.length);
                                  -         }
                                  -         var containingFileDescription = FBL.splitURLBase(this.containingURL);
                                  -         if (FBTrace.DBG_SOURCEFILES)
                                  -             FBTrace.sysout("EvalLevelSourceFile this.evalExpression.substr(0, 240):"+(this.evalExpression?this.evalExpression.substr(0, 240):"null")+" summary", this.summary);
                                  -         return {path: containingFileDescription.path, name: containingFileDescription.name+"/eval: "+this.summary };
                                  -    },
                                  -
                                  -    getOuterScriptAnalyzer: function()
                                  -    {
                                  -        return new Firebug.EvalLevelSourceFile.OuterScriptAnalyzer(this);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.EvalLevelSourceFile.OuterScriptAnalyzer = function(sourceFile)
                                  -{
                                  -    this.sourceFile = sourceFile;
                                  -};
                                  -
                                  -Firebug.EvalLevelSourceFile.OuterScriptAnalyzer.prototype =
                                  -{
                                  -    // Adjust JSD line numbers based on origin of script
                                  -    getSourceLineFromFrame: function(context, frame)
                                  -    {
                                  -        return frame.line - this.sourceFile.getBaseLineOffset();
                                  -    },
                                  -    // Interpret frame to give fn(args)
                                  -    getFunctionDescription: function(script, context, frame)
                                  -    {
                                  -        return {name: "eval", args: [this.evalExpression] };
                                  -    },
                                  -    getSourceLinkForScript: function (script)
                                  -    {
                                  -        return new FBL.SourceLink(this.sourceFile.href, 1, "js");
                                  -    }
                                  -};
                                  -
                                  -//------------
                                  -Firebug.EventSourceFile = function(url, script, title, source, innerScriptEnumerator)
                                  -{
                                  -     this.href = url;
                                  -     this.outerScript = script;
                                  -     this.containingURL = script.fileName;
                                  -     this.title = title;
                                  -     this.source = source; // points to the sourceCache lines
                                  -     this.sourceLength = source.length;
                                  -     this.pcmap_type = PCMAP_PRETTYPRINT;
                                  -
                                  -     Firebug.SourceFile.addScriptsToSourceFile(this, script, innerScriptEnumerator);
                                  -};
                                  -
                                  -Firebug.EventSourceFile.prototype =    descend(new Firebug.SourceFile("event"),  // prototypical inheritance
                                  -{
                                  -    getLine: function(context, lineNo)
                                  -    {
                                  -        return this.source[lineNo - 1];
                                  -    },
                                  -
                                  -    getBaseLineOffset: function()
                                  -    {
                                  -        return 1;
                                  -    },
                                  -
                                  -    getObjectDescription: function()
                                  -    {
                                  -        if (!this.summary)
                                  -             this.summary = Firebug.SourceFile.summarizeSourceLineArray(this.source, 120);
                                  -
                                  -        var containingFileDescription = FBL.splitURLBase(this.containingURL);
                                  -
                                  -        return {path: containingFileDescription.path, name: containingFileDescription.name+"/event: "+this.summary };
                                  -    },
                                  -
                                  -    getOuterScriptAnalyzer: function()
                                  -    {
                                  -        return new Firebug.EventSourceFile.OuterScriptAnalyzer(this);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.EventSourceFile.OuterScriptAnalyzer = function(sourceFile)
                                  -{
                                  -    this.sourceFile = sourceFile;
                                  -};
                                  -
                                  -Firebug.EventSourceFile.OuterScriptAnalyzer.prototype =
                                  -{
                                  -    // Adjust JSD line numbers based on origin of script
                                  -    getSourceLineFromFrame: function(context, frame)
                                  -    {
                                  -        var script = frame.script;
                                  -        var line = script.pcToLine(frame.pc, PCMAP_PRETTYPRINT);
                                  -        return line - 1;
                                  -    },
                                  -    // Interpret frame to give fn(args)
                                  -    getFunctionDescription: function(script, context, frame)
                                  -    {
                                  -        if (frame)
                                  -        {
                                  -            var args = FBL.getFunctionArgValues(frame);
                                  -            var name = getFunctionName(script, context, frame, true);
                                  -        }
                                  -        else
                                  -        {
                                  -            var args = [];
                                  -            var name = getFunctionName(script, context);
                                  -        }
                                  -        return {name: name, args: args};
                                  -    },
                                  -    getSourceLinkForScript: function (script)
                                  -    {
                                  -        return new FBL.SourceLink(this.sourceFile.href, 1, "js");  // XXXjjb why do we need FBL.??
                                  -    }
                                  -};
                                  -
                                  -//------------
                                  -Firebug.SourceFile.CommonBase =
                                  -{
                                  -    getSourceLength: function()
                                  -    {
                                  -        if (!this.sourceLength)
                                  -            this.sourceLength = this.context.sourceCache.load(this.href).length;
                                  -        return this.sourceLength;
                                  -    },
                                  -
                                  -    getOuterScriptAnalyzer: function()
                                  -    {
                                  -        return Firebug.TopLevelSourceFile.OuterScriptAnalyzer;
                                  -    }
                                  -
                                  -};
                                  -//-----------
                                  -Firebug.TopLevelSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator)
                                  -{
                                  -    this.href = url;
                                  -    this.outerScript = outerScript;  // Beware may not be valid after we return!!
                                  -    this.sourceLength = sourceLength;
                                  -    this.pcmap_type = PCMAP_SOURCETEXT;
                                  -
                                  -    Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
                                  -};
                                  -
                                  -Firebug.TopLevelSourceFile.prototype = descend(new Firebug.SourceFile("top-level"), Firebug.SourceFile.CommonBase);
                                  -
                                  -
                                  -Firebug.TopLevelSourceFile.OuterScriptAnalyzer = {
                                  -    // Adjust JSD line numbers based on origin of script
                                  -    getSourceLineFromFrame: function(context, frame)
                                  -    {
                                  -        return frame.line;
                                  -    },
                                  -    // Interpret frame to give fn(args)
                                  -    getFunctionDescription: function(script, context, frame)
                                  -    {
                                  -        var file_name = FBL.getFileName(FBL.normalizeURL(script.fileName)); // this is more useful that just "top_level"
                                  -        file_name = file_name ? file_name: "__top_level__";
                                  -        return {name: file_name, args: []};
                                  -    },
                                  -    getSourceLinkForScript: function (script)
                                  -    {
                                  -        return FBL.SourceLink(FBL.normalizeURL(script.fileName), script.baseLineNumber, "js");
                                  -    }
                                  -};
                                  -
                                  -//-------
                                  -
                                  -Firebug.EnumeratedSourceFile = function(url) // we don't have the outer script and we delay source load.
                                  -{
                                  -    this.href = new String(url);  // may not be outerScript file name, eg this could be an enumerated eval
                                  -    this.innerScripts = {};
                                  -    this.pcmap_type = PCMAP_SOURCETEXT;
                                  -};
                                  -
                                  -Firebug.EnumeratedSourceFile.prototype = descend(
                                  -        new Firebug.SourceFile("enumerated"),
                                  -        Firebug.SourceFile.CommonBase);
                                  -
                                  -//---------
                                  -Firebug.NoScriptSourceFile = function(context, url) // Somehow we got the URL, but not the script
                                  -{
                                  -    this.href = url;  // we know this much
                                  -    this.innerScripts = {};
                                  -};
                                  -
                                  -Firebug.NoScriptSourceFile.prototype = descend(
                                  -        new Firebug.SourceFile("URLOnly"),
                                  -        Firebug.SourceFile.CommonBase);
                                  -
                                  -//---------// javascript in a .xul or .xml file, no outerScript
                                  -Firebug.XULSourceFile = function(url, outerScript, innerScriptEnumerator)
                                  -{
                                  -    this.href = url;
                                  -    this.pcmap_type = PCMAP_SOURCETEXT;
                                  -    this.outerScript = outerScript;  // Beware may not be valid after we return!!
                                  -
                                  -    Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
                                  -};
                                  -
                                  -Firebug.XULSourceFile.prototype = descend(
                                  -        new Firebug.SourceFile("xul"),
                                  -        Firebug.SourceFile.CommonBase);
                                  -
                                  -//---------
                                  -Firebug.ScriptTagAppendSourceFile = function(url, outerScript, sourceLength, innerScriptEnumerator) // element.appendChild(scriptTag)
                                  -{
                                  -    this.href = url;
                                  -    this.outerScript = outerScript;  // Beware may not be valid after we return!!
                                  -    this.sourceLength = sourceLength;
                                  -    this.pcmap_type = PCMAP_SOURCETEXT;
                                  -
                                  -    Firebug.SourceFile.addScriptsToSourceFile(this, outerScript, innerScriptEnumerator);
                                  -};
                                  -
                                  -Firebug.ScriptTagAppendSourceFile.prototype = descend(
                                  -        new Firebug.SourceFile("scriptTagAppend"),
                                  -        Firebug.SourceFile.CommonBase);
                                  -
                                  -/**/
                                  -//-------------------
                                  -
                                  -Firebug.ScriptTagSourceFile = function(context, url, scriptTagNumber) // we don't have the outer script and we delay source load
                                  -{
                                  -    this.context = context;
                                  -    this.href = url;  // we know this is not an eval
                                  -    this.scriptTagNumber = scriptTagNumber;
                                  -    this.innerScripts = {};
                                  -    this.pcmap_type = PCMAP_SOURCETEXT;
                                  -};
                                  -
                                  -Firebug.ScriptTagSourceFile.prototype = descend(
                                  -        new Firebug.SourceFile("scriptTag"),
                                  -        Firebug.SourceFile.CommonBase);
                                  -
                                  -//-------------------
                                  -Firebug.SourceFile.getSourceFileByScript = function(context, script)
                                  -{
                                  -    if (!context.sourceFileMap)
                                  -         return null;
                                  -
                                  -    // Other algorithms are possible:
                                  -    //   We could store an index, context.sourceFileByTag
                                  -    //   Or we could build a tree keyed by url, with SpiderMonkey script.fileNames at the top and our urls below
                                  -    var lucky = context.sourceFileMap[script.fileName];  // we won't be lucky for file:/ urls, no normalizeURL applied
                                  -    if (FBTrace.DBG_SOURCEFILES && lucky)
                                  -        FBTrace.sysout("getSourceFileByScript trying to be lucky for "+
                                  -            script.tag + " in "+lucky, script);
                                  -
                                  -    if (lucky && lucky.hasScript(script))
                                  -        return lucky;
                                  -
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("getSourceFileByScript looking for "+script.tag+"@"+script.fileName+" in "+
                                  -            context.getName()+": ", context.sourceFileMap);
                                  -
                                  -    for (var url in context.sourceFileMap)
                                  -    {
                                  -        var sourceFile = context.sourceFileMap[url];
                                  -        if (sourceFile.hasScript(script))
                                  -            return sourceFile;
                                  -    }
                                  -};
                                  -
                                  -Firebug.SourceFile.getScriptAnalyzer = function(context, script)
                                  -{
                                  -    var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
                                  -    if (FBTrace.DBG_STACK)
                                  -         FBTrace.sysout("getScriptAnalyzer "+ (sourceFile?"finds sourceFile: ":"FAILS to find sourceFile"), sourceFile);
                                  -     if (sourceFile)
                                  -     {
                                  -         var analyzer = sourceFile.getScriptAnalyzer(script);
                                  -         if (FBTrace.DBG_STACK)
                                  -             FBTrace.sysout("getScriptAnalyzer finds analyzer: ", analyzer);
                                  -
                                  -         return analyzer;
                                  -     }
                                  -     return undefined;
                                  -};
                                  -
                                  -Firebug.SourceFile.getSourceFileAndLineByScript= function(context, script, frame)
                                  -{
                                  -    var sourceFile = Firebug.SourceFile.getSourceFileByScript(context, script);
                                  -    if (sourceFile)
                                  -    {
                                  -        if (sourceFile.pcmap_type)
                                  -            var line = script.pcToLine(1, sourceFile.pcmap_type);
                                  -        else
                                  -            var line = 1;
                                  -
                                  -        return { sourceFile: sourceFile, lineNo: line };
                                  -    }
                                  -};
                                  -
                                  -Firebug.SourceFile.guessEnclosingFunctionName = function(url, line, context)
                                  -{
                                  -    var sourceFile = context.sourceFileMap[url];
                                  -    if (sourceFile)
                                  -    {
                                  -        var scripts = sourceFile.getScriptsAtLineNumber(line);
                                  -        if (scripts)
                                  -        {
                                  -            var script = scripts[0]; // TODO try others?
                                  -            var analyzer = sourceFile.getScriptAnalyzer(script);
                                  -            line = analyzer.getBaseLineNumberByScript(script);
                                  -        }
                                  -    }
                                  -    return FBL.guessFunctionName(url, line-1, context);
                                  -};
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/spy.js b/branches/flexBox/content/firebug/spy.js
                                  deleted file mode 100644
                                  index 999f1324..00000000
                                  --- a/branches/flexBox/content/firebug/spy.js
                                  +++ /dev/null
                                  @@ -1,763 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy, logRow);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy, logRow)
                                  -{
                                  -    if (!spy.logRow && logRow)
                                  -        spy.logRow = logRow;
                                  -    
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/tabContext.js b/branches/flexBox/content/firebug/tabContext.js
                                  deleted file mode 100644
                                  index 5d748cd0..00000000
                                  --- a/branches/flexBox/content/firebug/tabContext.js
                                  +++ /dev/null
                                  @@ -1,543 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -var throttleTimeWindow = 200;
                                  -var throttleMessageLimit = 30;
                                  -var throttleInterval = 30;
                                  -var throttleFlushCount = 20;
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.TabContext = function(win, browser, chrome, persistedState)
                                  -{
                                  -    this.window = win;
                                  -    this.browser = browser;
                                  -    this.persistedState = persistedState;
                                  -
                                  -    /// TODO: xxxpedro context
                                  -    ///browser.__defineGetter__("chrome", function() { return Firebug.chrome; }); // backward compat
                                  -
                                  -    this.name = normalizeURL(this.getWindowLocation().toString());
                                  -
                                  -    this.windows = [];
                                  -    this.panelMap = {};
                                  -    this.sidePanelNames = {};
                                  -    this.sourceFileMap = {};
                                  -
                                  -    // New nsITraceableChannel interface (introduced in FF3.0.4) makes possible
                                  -    // to re-implement source-cache so, it solves the double-load problem.
                                  -    // Anyway, keep the previous cache implementation for backward compatibility
                                  -    // (with Firefox 3.0.3 and lower)
                                  -    
                                  -    /// TODO: xxxpedro context cache tabcache
                                  -    this.sourceCache = new Firebug.SourceCache(this);
                                  -    ///if (Components.interfaces.nsITraceableChannel)
                                  -    ///    this.sourceCache = new Firebug.TabCache(this);
                                  -    ///else
                                  -    ///    this.sourceCache = new Firebug.SourceCache(this);
                                  -
                                  -    this.global = win;  // used by chromebug
                                  -};
                                  -
                                  -Firebug.TabContext.prototype =
                                  -{
                                  -    getWindowLocation: function()
                                  -    {
                                  -        return safeGetWindowLocation(this.window);
                                  -    },
                                  -
                                  -    getTitle: function()
                                  -    {
                                  -        if (this.window && this.window.document)
                                  -            return this.window.document.title;
                                  -        else
                                  -            return "";
                                  -    },
                                  -
                                  -    getName: function()
                                  -    {
                                  -        if (!this.name || this.name === "about:blank")
                                  -        {
                                  -            var url = this.getWindowLocation().toString();
                                  -            if (isDataURL(url))
                                  -            {
                                  -                var props = splitDataURL(url);
                                  -                if (props.fileName)
                                  -                     this.name = "data url from "+props.fileName;
                                  -            }
                                  -            else
                                  -            {
                                  -                this.name = normalizeURL(url);
                                  -                if (this.name === "about:blank" && this.window.frameElement)
                                  -                    this.name += " in "+getElementCSSSelector(this.window.frameElement);
                                  -            }
                                  -        }
                                  -        return this.name;
                                  -    },
                                  -
                                  -    getGlobalScope: function()
                                  -    {
                                  -        return this.window;
                                  -    },
                                  -
                                  -    addSourceFile: function(sourceFile)
                                  -    {
                                  -        this.sourceFileMap[sourceFile.href] = sourceFile;
                                  -        sourceFile.context = this;
                                  -
                                  -        Firebug.onSourceFileCreated(this, sourceFile);
                                  -    },
                                  -
                                  -    removeSourceFile: function(sourceFile)
                                  -    {
                                  -        if (FBTrace.DBG_SOURCEFILES)
                                  -            FBTrace.sysout("tabContext.removeSourceFile "+sourceFile.href+" in context "+sourceFile.context.getName());
                                  -
                                  -        delete this.sourceFileMap[sourceFile.href];
                                  -        delete sourceFile.context;
                                  -
                                  -        // ?? Firebug.onSourceFileDestroyed(this, sourceFile);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /// TODO: xxxpedro context
                                  -    ///get chrome()  // backward compat
                                  -    ///{
                                  -    ///    return Firebug.chrome;
                                  -    ///},
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        for (var panelName in this.panelMap)
                                  -        {
                                  -            var panel = this.panelMap[panelName];
                                  -            panel.detach(oldChrome, newChrome);
                                  -            panel.invalid = true;// this will cause reattach on next use
                                  -
                                  -            var panelNode = panel.panelNode;  // delete panel content
                                  -            if (panelNode && panelNode.parentNode)
                                  -                panelNode.parentNode.removeChild(panelNode);
                                  -        }
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        // All existing timeouts need to be cleared
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var timeout in this.timeouts)
                                  -                clearTimeout(timeout);
                                  -        }
                                  -
                                  -        // Also all waiting intervals must be cleared.
                                  -        if (this.intervals)
                                  -        {
                                  -            for (var timeout in this.intervals)
                                  -                clearInterval(timeout);
                                  -        }
                                  -
                                  -        if (this.throttleTimeout)
                                  -            clearTimeout(this.throttleTimeout);
                                  -
                                  -        state.panelState = {};
                                  -
                                  -        // Inherit panelStates that have not been restored yet
                                  -        if (this.persistedState)
                                  -        {
                                  -            for (var panelName in this.persistedState.panelState)
                                  -                state.panelState[panelName] = this.persistedState.panelState[panelName];
                                  -        }
                                  -
                                  -        // Destroy all panels in this context.
                                  -        for (var panelName in this.panelMap)
                                  -        {
                                  -            var panelType = Firebug.getPanelType(panelName);
                                  -            this.destroyPanel(panelType, state);
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("tabContext.destroy "+this.getName()+" set state ", state);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    initPanelTypes: function()
                                  -    {
                                  -        if (!this.panelTypes)
                                  -        {
                                  -            this.panelTypes = [];
                                  -            this.panelTypeMap = {};
                                  -        }
                                  -    },
                                  -
                                  -    addPanelType: function(url, title, parentPanel)
                                  -    {
                                  -        url = absoluteURL(url, this.window.location.href);
                                  -        if (!url)
                                  -        {
                                  -            // XXXjoe Need some kind of notification to console that URL is invalid
                                  -            throw("addPanelType: url is invalid!");
                                  -            return;
                                  -        }
                                  -
                                  -        this.initPanelTypes();
                                  -
                                  -        var name = createPanelName(url);
                                  -        while (name in this.panelTypeMap)
                                  -            name += "_";
                                  -
                                  -        var panelType = createPanelType(name, url, title, parentPanel);
                                  -
                                  -        this.panelTypes.push(panelType);
                                  -        this.panelTypeMap[name] = panelType;
                                  -
                                  -        return panelType;
                                  -    },
                                  -
                                  -    addPanelTypeConstructor: function(panelType)
                                  -    {
                                  -        this.initPanelTypes();
                                  -        this.panelTypes.push(panelType);
                                  -        var name = panelType.prototype.name;
                                  -        this.panelTypeMap[name] = panelType;
                                  -    },
                                  -
                                  -    removePanelType: function(url)
                                  -    {
                                  -        // NYI
                                  -    },
                                  -
                                  -    getPanel: function(panelName, noCreate)
                                  -    {
                                  -        // Get "global" panelType, registered using Firebug.registerPanel
                                  -        var panelType = Firebug.getPanelType(panelName);
                                  -
                                  -        // The panelType cane be "local", available only within the context.
                                  -        if (!panelType && this.panelTypeMap)
                                  -            panelType = this.panelTypeMap[panelName];
                                  -
                                  -        if (!panelType)
                                  -            return null;
                                  -
                                  -        var enabled = panelType.prototype.isEnabled ? panelType.prototype.isEnabled() : true;
                                  -
                                  -        // Create instance of the panelType only if it's enabled.
                                  -        if (enabled)
                                  -            return this.getPanelByType(panelType, noCreate);
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    getPanelByType: function(panelType, noCreate)
                                  -    {
                                  -        if (!panelType || !this.panelMap)
                                  -            return null;
                                  -
                                  -        var panelName = panelType.prototype.name;
                                  -        if ( this.panelMap.hasOwnProperty(panelName) )
                                  -        {
                                  -            var panel = this.panelMap[panelName];
                                  -            //if (FBTrace.DBG_PANELS)
                                  -            //    FBTrace.sysout("tabContext.getPanelByType panel in panelMap, .invalid="+panel.invalid+"\n");
                                  -            if (panel.invalid)
                                  -            {
                                  -                var doc = this.chrome.getPanelDocument(panelType);
                                  -                panel.reattach(doc);
                                  -                delete panel.invalid;
                                  -            }
                                  -
                                  -            return panel;
                                  -        }
                                  -        else if (!noCreate)
                                  -        {
                                  -            return this.createPanel(panelType);
                                  -        }
                                  -    },
                                  -
                                  -    eachPanelInContext: function(callback)
                                  -    {
                                  -        for (var panelName in this.panelMap)
                                  -        {
                                  -            if (this.panelMap.hasOwnProperty(panelName))
                                  -            {
                                  -                var panel = this.panelMap[panelName];
                                  -                var rc = callback(panel);
                                  -                if (rc)
                                  -                    return rc;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    createPanel: function(panelType)
                                  -    {
                                  -        // Instantiate a panel object. This is why panels are defined by prototype inheritance
                                  -        var panel = new panelType();
                                  -        this.panelMap[panel.name] = panel;
                                  -
                                  -        if (FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("tabContext.createPanel; Panel created: " + panel.name, panel);
                                  -
                                  -        dispatch(Firebug.modules, "onCreatePanel", [this, panel, panelType]);
                                  -
                                  -        // Initialize panel and associate with a document.
                                  -        if (panel.parentPanel) // then this new panel is a side panel
                                  -        {
                                  -            panel.mainPanel = this.panelMap[panel.parentPanel];
                                  -            panel.mainPanel.addListener(panel); // wire the side panel to get UI events from the main panel
                                  -        }
                                  -            
                                  -        var doc = this.chrome.getPanelDocument(panelType);
                                  -        panel.initialize(this, doc);
                                  -
                                  -        return panel;
                                  -    },
                                  -
                                  -    destroyPanel: function(panelType, state)
                                  -    {
                                  -        var panelName = panelType.prototype.name;
                                  -        var panel = this.panelMap[panelName];
                                  -        if (!panel)
                                  -            return;
                                  -
                                  -        // Create an object to persist state, re-using old one if it was never restored
                                  -        var panelState = panelName in state.panelState ? state.panelState[panelName] : {};
                                  -        state.panelState[panelName] = panelState;
                                  -
                                  -        try
                                  -        {
                                  -            // Destroy the panel and allow it to persist extra info to the state object
                                  -            var dontRemove = panel.destroy(panelState);
                                  -            delete this.panelMap[panelName];
                                  -
                                  -            if (dontRemove)
                                  -                return;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("tabContext.destroy FAILS "+exc, exc);
                                  -
                                  -            // the destroy failed, don't keep the bad state
                                  -            delete state.panelState[panelName];
                                  -        }
                                  -
                                  -        // Remove the panel node from the DOM and so delet its content.
                                  -        var panelNode = panel.panelNode;
                                  -        if (panelNode && panelNode.parentNode)
                                  -            panelNode.parentNode.removeChild(panelNode);
                                  -    },
                                  -
                                  -    setPanel: function(panelName, panel)  // allows a panel from one context to be used in other contexts.
                                  -    {
                                  -        if (panel)
                                  -            this.panelMap[panelName] = panel;
                                  -        else
                                  -            delete this.panelMap[panelName];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            var panel = this.getPanel(panelName, true);
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                var panel = this.getPanel(panelName, true);
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    setTimeout: function()
                                  -    {
                                  -        if (setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        var timeout = setTimeout.apply(top, arguments);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function()
                                  -    {
                                  -        var timeout = setInterval.apply(top, arguments);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    delay: function(message, object)
                                  -    {
                                  -        this.throttle(message, object, null, true);
                                  -    },
                                  -
                                  -    // queue the call |object.message(arg)| or just delay it if forceDelay
                                  -    throttle: function(message, object, args, forceDelay)
                                  -    {
                                  -        if (!this.throttleInit)
                                  -        {
                                  -            this.throttleBuildup = 0;
                                  -            this.throttleQueue = [];
                                  -            this.throttleTimeout = 0;
                                  -            this.lastMessageTime = 0;
                                  -            this.throttleInit = true;
                                  -        }
                                  -
                                  -        if (!forceDelay)
                                  -        {
                                  -            if (!Firebug.throttleMessages)
                                  -            {
                                  -                message.apply(object, args);
                                  -                return false;
                                  -            }
                                  -
                                  -            // Count how many messages have been logged during the throttle period
                                  -            var logTime = new Date().getTime();
                                  -            if (logTime - this.lastMessageTime < throttleTimeWindow)
                                  -                ++this.throttleBuildup;
                                  -            else
                                  -                this.throttleBuildup = 0;
                                  -
                                  -            this.lastMessageTime = logTime;
                                  -
                                  -            // If the throttle limit has been passed, enqueue the message to be logged later on a timer,
                                  -            // otherwise just execute it now
                                  -            if (!this.throttleQueue.length && this.throttleBuildup <= throttleMessageLimit)
                                  -            {
                                  -                message.apply(object, args);
                                  -                return false;
                                  -            }
                                  -        }
                                  -
                                  -        this.throttleQueue.push(message, object, args);
                                  -
                                  -        if (this.throttleTimeout)
                                  -            this.clearTimeout(this.throttleTimeout);
                                  -
                                  -        var self = this;
                                  -        this.throttleTimeout =
                                  -            this.setTimeout(function() { self.flushThrottleQueue(); }, throttleInterval);
                                  -        return true;
                                  -    },
                                  -
                                  -    flushThrottleQueue: function()
                                  -    {
                                  -        var queue = this.throttleQueue;
                                  -
                                  -        if (!queue[0])
                                  -            FBTrace.sysout("tabContext.flushThrottleQueue no queue[0]", queue);
                                  -
                                  -        var max = throttleFlushCount * 3;
                                  -        if (max > queue.length)
                                  -            max = queue.length;
                                  -
                                  -        for (var i = 0; i < max; i += 3)
                                  -            queue[i].apply(queue[i+1], queue[i+2]);
                                  -
                                  -        queue.splice(0, throttleFlushCount*3);
                                  -
                                  -        if (queue.length)
                                  -        {
                                  -            var self = this;
                                  -            this.throttleTimeout =
                                  -                this.setTimeout(function f() { self.flushThrottleQueue(); }, throttleInterval);
                                  -        }
                                  -        else
                                  -            this.throttleTimeout = 0;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function createPanelType(name, url, title, parentPanel)
                                  -{
                                  -    var panelType = new Function("");
                                  -    panelType.prototype = extend(new Firebug.PluginPanel(),
                                  -    {
                                  -        name: name,
                                  -        url: url,
                                  -        title: title ? title : "...",
                                  -        parentPanel: parentPanel
                                  -    });
                                  -
                                  -    return panelType;
                                  -}
                                  -
                                  -function createPanelName(url)
                                  -{
                                  -    return url.replace(/[:\\\/\s\.\?\=\&\~]/g, "_");
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/tabWatcher.js b/branches/flexBox/content/firebug/tabWatcher.js
                                  deleted file mode 100644
                                  index bad3a82c..00000000
                                  --- a/branches/flexBox/content/firebug/tabWatcher.js
                                  +++ /dev/null
                                  @@ -1,1030 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -///const Cc = Components.classes;
                                  -///const Ci = Components.interfaces;
                                  -///const nsIWebNavigation = Ci.nsIWebNavigation;
                                  -///const nsIWebProgressListener = Ci.nsIWebProgressListener;
                                  -///const nsIWebProgress = Ci.nsIWebProgress;
                                  -///const nsISupportsWeakReference = Ci.nsISupportsWeakReference;
                                  -///const nsISupports = Ci.nsISupports;
                                  -///const nsIURI = Ci.nsIURI;
                                  -
                                  -///const NOTIFY_STATE_DOCUMENT = nsIWebProgress.NOTIFY_STATE_DOCUMENT;
                                  -
                                  -///const STATE_IS_WINDOW = nsIWebProgressListener.STATE_IS_WINDOW;
                                  -///const STATE_IS_DOCUMENT = nsIWebProgressListener.STATE_IS_DOCUMENT;
                                  -///const STATE_IS_REQUEST = nsIWebProgressListener.STATE_IS_REQUEST;
                                  -
                                  -///const STATE_START = nsIWebProgressListener.STATE_START;
                                  -///const STATE_STOP = nsIWebProgressListener.STATE_STOP;
                                  -///const STATE_TRANSFERRING = nsIWebProgressListener.STATE_TRANSFERRING;
                                  -
                                  -///const STOP_ALL = nsIWebNavigation.STOP_ALL;
                                  -
                                  -var dummyURI = "about:layout-dummy-request";
                                  -var aboutBlank = "about:blank";
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element (where the "tabs" resides)
                                  -var tabBrowser = null;
                                  -///var tabBrowser = $("content");
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -top.TabWatcher = extend(new Firebug.Listener(),
                                  -{
                                  -    // Store contexts where they can be accessed externally
                                  -    contexts: contexts,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(TraceListener);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("-> tabWatcher initialize "+tabBrowser);
                                  -
                                  -        /// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element
                                  -        ///if (tabBrowser)
                                  -        ///    tabBrowser.addProgressListener(TabProgressListener, NOTIFY_STATE_DOCUMENT);
                                  -
                                  -        httpObserver.addObserver(TabWatcherHttpObserver, "firebug-http-event", false);
                                  -    },
                                  -
                                  -    destroy: function()
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher destroy\n");
                                  -
                                  -        this.shuttingDown = true;
                                  -
                                  -        httpObserver.removeObserver(TabWatcherHttpObserver, "firebug-http-event");
                                  -
                                  -        /// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element
                                  -        /*
                                  -        if (tabBrowser)
                                  -        {
                                  -            tabBrowser.removeProgressListener(TabProgressListener);
                                  -
                                  -            var browsers = Firebug.chrome.getBrowsers();
                                  -            for (var i = 0; i < browsers.length; ++i)
                                  -            {
                                  -                var browser = browsers[i];
                                  -                this.unwatchTopWindow(browser.contentWindow);
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(TraceListener);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Called when tabBrowser browsers get a new location OR when we get a explicit user op to open firebug
                                  -     * Attaches to a top-level window. Creates context unless we just re-activated on an existing context
                                  -     */
                                  -    watchTopWindow: function(win, uri, userCommands)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.watchTopWindow for: "+(uri instanceof nsIURI?uri.spec:uri)+
                                  -                ", tab: "+Firebug.getTabIdForWindow(win)+"\n");
                                  -
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("-> tabWatcher.watchTopWindow should not have a null window!");
                                  -            return false;
                                  -        }
                                  -
                                  -        var selectedBrowser = Firebug.chrome.getCurrentBrowser();
                                  -
                                  -        var context = this.getContextByWindow(win);
                                  -        if (context) // then we've looked at this window before in this FF session...
                                  -        {
                                  -            if (FBTrace.DBG_ACTIVATION)
                                  -                FBTrace.sysout("-> tabWatcher.watchTopWindow context exists "+context.getName());
                                  -            if (!this.shouldShowContext(context))
                                  -            {
                                  -                // ...but now it is not wanted.
                                  -                if (context.browser)
                                  -                    delete context.browser.showFirebug;
                                  -                this.unwatchContext(win, context);
                                  -
                                  -                return;  // did not create a context
                                  -            }
                                  -            // else we should show
                                  -        }
                                  -        else // then we've not looked this window in this session
                                  -        {
                                  -            // decide whether this window will be debugged or not
                                  -            var url = (uri instanceof nsIURI) ? uri.spec : uri;
                                  -            if (!this.shouldCreateContext(selectedBrowser, url, userCommands))
                                  -            {
                                  -                if (FBTrace.DBG_ACTIVATION)
                                  -                    FBTrace.sysout("-> tabWatcher will not create context ");
                                  -
                                  -                delete selectedBrowser.showFirebug;
                                  -                this.watchContext(win, null);
                                  -
                                  -                return false;  // we did not create a context
                                  -            }
                                  -
                                  -            var browser = this.getBrowserByWindow(win);
                                  -
                                  -            context = this.createContext(win, browser, Firebug.getContextType());
                                  -       }
                                  -
                                  -        if (win instanceof Ci.nsIDOMWindow && win.parent == win)
                                  -        {
                                  -            win.addEventListener("pageshow", onLoadWindowContent, onLoadWindowContent.capturing);
                                  -            win.addEventListener("DOMContentLoaded", onLoadWindowContent, onLoadWindowContent.capturing);
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> tabWatcher.watchTopWindow addEventListener for pageshow, DomContentLoaded "+safeGetWindowLocation(win));
                                  -        }
                                  -
                                  -        // Dispatch watchWindow for the outer most DOM window
                                  -        this.watchWindow(win, context);
                                  -
                                  -        // This is one of two places that loaded is set. The other is in watchLoadedTopWindow
                                  -        if (context && !context.loaded)
                                  -        {
                                  -            context.loaded = !context.browser.webProgress.isLoadingDocument;
                                  -
                                  -            // If the loaded flag is set, the proper event should be dispatched.
                                  -            if (context.loaded)
                                  -                dispatch(this.fbListeners, "loadedContext", [context]);
                                  -
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> tabWatcher context "+(context.loaded ? '*** LOADED ***' : 'isLoadingDocument')+" in watchTopWindow, id: "+context.uid+", uri: "+
                                  -                    (uri instanceof nsIURI ? uri.spec : uri)+"\n");
                                  -        }
                                  -
                                  -        if (context && !context.loaded && !context.showContextTimeout)
                                  -        {
                                  -            // still loading, we want to showContext one time but not too agressively
                                  -            context.showContextTimeout = setTimeout(bindFixed( function delayShowContext()
                                  -            {
                                  -                if (FBTrace.DBG_WINDOWS)
                                  -                    FBTrace.sysout("-> watchTopWindow delayShowContext id:"+context.showContextTimeout, context);
                                  -                if (context.window)   // Sometimes context.window is not defined ?
                                  -                    this.rushShowContext(win, context);  // calls showContext
                                  -                else
                                  -                {
                                  -                    if(FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("tabWatcher watchTopWindow no context.window "+(context.browser? context.browser.currentURI.spec : " and no context.browser")+"\n");
                                  -                }
                                  -            }, this), 400);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> watchTopWindow context.loaded:"+context.loaded+ " for "+context.getName());
                                  -            this.rushShowContext(win, context);
                                  -        }
                                  -
                                  -        return context;  // we did create or find a context
                                  -    },
                                  -
                                  -    rushShowContext: function(win, context)
                                  -    {
                                  -        if (context.showContextTimeout) // then the timeout even has not run, we'll not need it after all.
                                  -            clearTimeout(context.showContextTimeout);
                                  -        delete context.showContextTimeout;
                                  -
                                  -        // Call showContext only for currently active tab.
                                  -        var currentURI = Firebug.chrome.getCurrentURI();
                                  -        if (!currentURI || currentURI.spec != context.browser.currentURI.spec)
                                  -        {
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> rushShowContext: Do not show context as it's not the active tab: " +
                                  -                    context.browser.currentURI.spec + "\n");
                                  -            return;
                                  -        }
                                  -
                                  -        this.watchContext(win, context);  // calls showContext
                                  -    },
                                  -
                                  -    // Listeners decide to show or not
                                  -    shouldShowContext: function(context)
                                  -    {
                                  -        if ( dispatch2(this.fbListeners, "shouldShowContext", [context]))
                                  -            return true;
                                  -        else
                                  -            return false;
                                  -    },
                                  -
                                  -    // Listeners given force-in and veto on URIs/Window.
                                  -
                                  -    shouldCreateContext: function(browser, url, userCommands)
                                  -    {
                                  -        // called when win has no context, answers the question: create one, true or false?
                                  -
                                  -        if (!this.fbListeners)
                                  -            return userCommands;
                                  -
                                  -        // Create if any listener says true to showCreateContext
                                  -        if (dispatch2(this.fbListeners, "shouldCreateContext", [browser, url, userCommands]))
                                  -        {
                                  -             if (FBTrace.DBG_ACTIVATION)
                                  -                 FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+ " one listener says yes to "+ url, this.fbListeners);
                                  -            return true;
                                  -        }
                                  -
                                  -
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("-> shouldCreateContext with user: "+userCommands+ " no opinion for: "+ url);
                                  -
                                  -        // Do not Create if any Listener says true to shouldNotCreateContext
                                  -        if (dispatch2(this.fbListeners, "shouldNotCreateContext", [browser, url, userCommands]))
                                  -            return false;
                                  -
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("-> shouldNotCreateContext no opinion for: "+ url);
                                  -
                                  -        // create if user said so and no one else has an opinion.
                                  -        return userCommands;
                                  -    },
                                  -
                                  -    createContext: function(win, browser, contextType)
                                  -    {
                                  -        if (contexts.length == 0)
                                  -            Firebug.broadcast('enableXULWindow', []);
                                  -
                                  -        // If the page is reloaded, store the persisted state from the previous
                                  -        // page on the new context
                                  -        var persistedState = browser.persistedState;
                                  -        delete browser.persistedState;
                                  -        var location = safeGetWindowLocation(win).toString();
                                  -        //if (!persistedState || persistedState.location != location)
                                  -        //    persistedState = null;
                                  -
                                  -        // xxxHonza, xxxJJB: web application detection. Based on domain check.
                                  -        var prevDomain = persistedState ? getDomain(persistedState.location) : null;
                                  -        var domain = getDomain(location);
                                  -        // Remove this, see 3484
                                  -        //if (!persistedState || prevDomain != domain)
                                  -        //    persistedState = null;
                                  -
                                  -        // The proper instance of FirebugChrome object (different for detached Firebug and
                                  -        // accessible as Firebug.chrome property) must be used for the context object.
                                  -        // (the global context object Firebug.currentContext is also different for detached firebug).
                                  -        var context = new contextType(win, browser, Firebug.chrome, persistedState);
                                  -        contexts.push(context);
                                  -
                                  -        context.uid =  FBL.getUniqueId();
                                  -
                                  -        browser.showFirebug = true; // this is the only place we should set showFirebug.
                                  -
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION) {
                                  -            FBTrace.sysout("-> tabWatcher *** INIT *** context, id: "+context.uid+
                                  -                ", "+context.getName()+" browser "+browser.currentURI.spec+" Firebug.chrome.window: "+Firebug.chrome.window.location+" context.window: "+safeGetWindowLocation(context.window));
                                  -        }
                                  -
                                  -        dispatch(this.fbListeners, "initContext", [context, persistedState]);
                                  -
                                  -        return context;
                                  -    },
                                  -
                                  -    /**
                                  -     * Called once the document within a tab is completely loaded.
                                  -     */
                                  -    watchLoadedTopWindow: function(win)
                                  -    {
                                  -        var isSystem = isSystemPage(win);
                                  -
                                  -        var context = this.getContextByWindow(win);
                                  -        if ((context && !context.window))
                                  -        {
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> tabWatcher.watchLoadedTopWindow bailing !!!, context.window: "+
                                  -                    context.window+", isSystem: "+isSystem+"\n");
                                  -
                                  -            this.unwatchTopWindow(win);
                                  -            this.watchContext(win, null, isSystem);
                                  -            return;
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> watchLoadedTopWindow context: "+
                                  -                (context?(context.uid+", loaded="+context.loaded):'undefined')+
                                  -                ", "+safeGetWindowLocation(win)+"\n");
                                  -
                                  -        if (context && !context.loaded)
                                  -        {
                                  -            context.loaded = true;
                                  -
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> Context *** LOADED *** in watchLoadedTopWindow, id: "+context.uid+
                                  -                    ", uri: "+safeGetWindowLocation(win)+"\n");
                                  -
                                  -            dispatch(this.fbListeners, "loadedContext", [context]);
                                  -
                                  -            // DOMContentLoaded arrived. Whether or not we did showContext at 400ms, do it now.
                                  -            this.rushShowContext(win, context);
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Attaches to a window that may be either top-level or a frame within the page.
                                  -     */
                                  -    watchWindow: function(win, context)
                                  -    {
                                  -        if (!context)
                                  -            context = this.getContextByWindow(getRootWindow(win));
                                  -
                                  -        var location = safeGetWindowLocation(win);
                                  -
                                  -        // For every window we watch, prepare for unwatch. It's OK if this is called
                                  -        // more times (see 2695).
                                  -        if (context && location != aboutBlank)
                                  -            TabWatcherUnloader.registerWindow(win);
                                  -
                                  -        // Unfortunately, dummy requests that trigger the call to watchWindow
                                  -        // are called several times, so we have to avoid dispatching watchWindow
                                  -        // more than once
                                  -        if (context && context.windows.indexOf(win) == -1)
                                  -        {
                                  -            context.windows.push(win);
                                  -
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -                FBTrace.sysout("-> watchWindow register *** FRAME *** to context for win.location: "+location+"\n");
                                  -
                                  -            dispatch(this.fbListeners, "watchWindow", [context, win]);
                                  -
                                  -            if (FBTrace.DBG_WINDOWS)
                                  -            {
                                  -                FBTrace.sysout("-> watchWindow for: "+location+", context: "+context.uid+"\n");
                                  -                if (context)
                                  -                    for (var i = 0; i < context.windows.length; i++)
                                  -                        FBTrace.sysout("   context: "+context.uid+", window in context: "+context.windows[i].location.href+"\n");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Detaches from a top-level window. Destroys context
                                  -     * Called when windows are closed, or user closes firebug
                                  -     */
                                  -    unwatchTopWindow: function(win)
                                  -    {
                                  -        var context = this.getContextByWindow(win);
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.unwatchTopWindow for: " +
                                  -                (context ? context.getWindowLocation() : "NULL Context") +
                                  -                ", context: " + context);
                                  -
                                  -        this.unwatchContext(win, context);
                                  -
                                  -        return true; // we might later allow extensions to reject unwatch
                                  -    },
                                  -
                                  -    /**
                                  -     * Detaches from a window, top-level or frame (interior)
                                  -     */
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        var context = this.getContextByWindow(win);
                                  -
                                  -        if (!context)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("unwatchWindow: no context for win "+safeGetWindowLocation(win));
                                  -            return;
                                  -        }
                                  -
                                  -        var index = context.windows.indexOf(win);
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.unwatchWindow context: "+context.getName()+" index of win: "+index+"/"+context.windows.length, context.windows);
                                  -        if (index != -1)
                                  -        {
                                  -            context.windows.splice(index, 1);
                                  -            dispatch(this.fbListeners, "unwatchWindow", [context, win]);
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Attaches to the window inside a browser because of user-activation
                                  -     * returns false if no context was created by the attach attempt, eg extension rejected page
                                  -     */
                                  -    watchBrowser: function(browser)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -        {
                                  -            var uri = safeGetURI(browser);
                                  -            FBTrace.sysout("-> tabWatcher.watchBrowser for: " + (uri instanceof nsIURI?uri.spec:uri) + "\n");
                                  -        }
                                  -
                                  -        registerFrameListener(browser);
                                  -
                                  -        var shouldDispatch = this.watchTopWindow(browser.contentWindow, safeGetURI(browser), true);
                                  -
                                  -        if (shouldDispatch)
                                  -        {
                                  -            dispatch(this.fbListeners, "watchBrowser", [browser]);
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    },
                                  -
                                  -    /*
                                  -     * User closes Firebug
                                  -     */
                                  -
                                  -    unwatchBrowser: function(browser, userCommands)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -        {
                                  -            var uri = safeGetURI(browser);
                                  -            FBTrace.sysout("-> tabWatcher.unwatchBrowser for: " + (uri instanceof nsIURI?uri.spec:uri) + " user commands: "+userCommands+(browser?"":"NULL BROWSER"));
                                  -        }
                                  -        if (!browser)
                                  -            return;
                                  -
                                  -        delete browser.showFirebug;
                                  -
                                  -        var shouldDispatch = this.unwatchTopWindow(browser.contentWindow);
                                  -
                                  -        if (shouldDispatch)
                                  -        {
                                  -            dispatch(this.fbListeners, "unwatchBrowser", [browser, userCommands]);
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    },
                                  -
                                  -    watchContext: function(win, context, isSystem)  // called when tabs change in firefox
                                  -    {
                                  -        if (this.shuttingDown)
                                  -            return;
                                  -
                                  -        var browser = context ? context.browser : this.getBrowserByWindow(win);
                                  -        if (browser)
                                  -            browser.isSystemPage = isSystem;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher context *** SHOW *** (watchContext), id: " +
                                  -                (context?context.uid:"null")+", uri: "+win.location.href+"\n");
                                  -
                                  -        dispatch(this.fbListeners, "showContext", [browser, context]); // context is null if we don't want to debug this browser
                                  -    },
                                  -
                                  -    unwatchContext: function(win, context)
                                  -    {
                                  -        if (!context)
                                  -        {
                                  -            var browser = this.getBrowserByWindow(win);
                                  -            if (browser)
                                  -            {
                                  -                browser.persistedState = {};
                                  -                delete browser.showFirebug;
                                  -                dispatch(this.fbListeners, "showContext", [browser, null]); // context is null if we don't want to debug this browser
                                  -            }
                                  -            dispatch(this.fbListeners, "destroyContext", [null, (browser?browser.persistedState:null), browser]);
                                  -            return;
                                  -        }
                                  -
                                  -        var persistedState = {location: context.getWindowLocation()};
                                  -        context.browser.persistedState = persistedState;  // store our state on FF browser elt
                                  -
                                  -        iterateWindows(context.window, function(win)
                                  -        {
                                  -            dispatch(TabWatcher.fbListeners, "unwatchWindow", [context, win]);
                                  -        });
                                  -
                                  -        dispatch(this.fbListeners, "destroyContext", [context, persistedState, context.browser]);
                                  -
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("-> tabWatcher.unwatchContext *** DESTROY *** context "+context.uid+" for: "+
                                  -                (context.window && !context.window.closed?context.window.location:"no window or closed ")+" aborted: "+context.aborted);
                                  -
                                  -        context.destroy(persistedState);
                                  -        remove(contexts, context);
                                  -
                                  -        for (var name in context)
                                  -            delete context[name];
                                  -
                                  -        var currentBrowser = Firebug.chrome.getCurrentBrowser();
                                  -        if (!currentBrowser.showFirebug)  // unwatchContext can be called on an unload event after another tab is selected
                                  -            dispatch(this.fbListeners, "showContext", [browser, null]); // context is null if we don't want to debug this browser
                                  -
                                  -        if (contexts.length == 0)
                                  -            Firebug.broadcast("disableXULWindow", []);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getContextByWindow: function(winIn)
                                  -    {
                                  -        if (!winIn)
                                  -            return;
                                  -
                                  -        var rootWindow = getRootWindow(winIn);
                                  -
                                  -        //if (FBTrace.DBG_INITIALIZE)
                                  -        //    FBTrace.sysout("winIn: "+safeGetWindowLocation(winIn).substr(0,50)+" rootWindow: "+safeGetWindowLocation(rootWindow));
                                  -
                                  -        if (rootWindow)
                                  -        {
                                  -            for (var i = 0; i < contexts.length; ++i)
                                  -            {
                                  -                var context = contexts[i];
                                  -                if (context.window == rootWindow)
                                  -                    return context;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getContextBySandbox: function(sandbox)
                                  -    {
                                  -        for (var i = 0; i < contexts.length; ++i)
                                  -        {
                                  -            var context = contexts[i];
                                  -            if (context.sandboxes)
                                  -            {
                                  -                for (var iframe = 0; iframe < context.sandboxes.length; iframe++)
                                  -                {
                                  -                    if (context.sandboxes[iframe] == sandbox)
                                  -                        return context;
                                  -                }
                                  -            }
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    getBrowserByWindow: function(win)
                                  -    {
                                  -        var browsers = Firebug.chrome.getBrowsers();
                                  -        for (var i = 0; i < browsers.length; ++i)
                                  -        {
                                  -            var browser = browsers[i];
                                  -            if (browser.contentWindow == win)
                                  -            {
                                  -                registerFrameListener(browser);
                                  -                return browser;
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    iterateContexts: function(fn)
                                  -    {
                                  -        for (var i = 0; i < contexts.length; ++i)
                                  -        {
                                  -            var rc = fn(contexts[i]);
                                  -            if (rc)
                                  -                return rc;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var TabWatcherUnloader =
                                  -{
                                  -    listeners: [],
                                  -
                                  -    registerWindow: function(win)
                                  -    {
                                  -        var root = (win.parent == win);
                                  -        var eventName = root ? "pagehide" : "unload";
                                  -        var listener = bind(root ? this.onPageHide : this.onUnload, this);
                                  -        win.addEventListener(eventName, listener, false);
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.watchWindow addEventListener for " + eventName);
                                  -
                                  -        this.listeners.push({
                                  -            window: win,
                                  -            listener: listener,
                                  -            eventName: eventName
                                  -        });
                                  -    },
                                  -
                                  -    unregisterWindow: function(win)
                                  -    {
                                  -        var newListeners = [];
                                  -        for (var i=0; i<this.listeners.length; i++)
                                  -        {
                                  -            var listener = this.listeners[i];
                                  -            if (listener.window != win)
                                  -                newListeners.push(listener);
                                  -            else
                                  -                win.removeEventListener(listener.eventName, listener.listener, false);
                                  -        }
                                  -        this.listeners = newListeners;
                                  -    },
                                  -
                                  -    onPageHide: function(event)
                                  -    {
                                  -        var win = event.currentTarget;
                                  -        this.unregisterWindow(win);
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.Unloader; PAGE HIDE (" +
                                  -                this.listeners.length + ") " + win.location, event);
                                  -
                                  -        onPageHideTopWindow(event);
                                  -    },
                                  -
                                  -    onUnload: function(event)
                                  -    {
                                  -        var win = event.currentTarget;
                                  -        this.unregisterWindow(win);
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.Unloader; PAGE UNLOAD (" +
                                  -                this.listeners.length + ") " + win.location, event);
                                  -
                                  -        onUnloadWindow(event);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/// TODO: xxxpedro tabWatcher - tabBrowser is a XUL element 
                                  -/*
                                  -var TabProgressListener = extend(BaseProgressListener,
                                  -{
                                  -    onLocationChange: function(progress, request, uri)
                                  -    {
                                  -        // Only watch windows that are their own parent - e.g. not frames
                                  -        if (progress.DOMWindow.parent == progress.DOMWindow)
                                  -        {
                                  -            var srcWindow = getWindowForRequest(request);
                                  -            var browser = srcWindow ? TabWatcher.getBrowserByWindow(srcWindow) : null;
                                  -            var requestFromFirebuggedWindow = browser && browser.showFirebug;
                                  -
                                  -            if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ACTIVATION)
                                  -            {
                                  -                FBTrace.sysout("-> TabProgressListener.onLocationChange "+
                                  -                    progress.DOMWindow.location+" to: "+
                                  -                    (uri?uri.spec:"null location")+
                                  -                    (requestFromFirebuggedWindow?" from firebugged window":" no firebug"));
                                  -            }
                                  -
                                  -            if (uri && uri.spec === "about:blank") // the onStateChange will deal with this troublesome case
                                  -                return;
                                  -
                                  -            if (uri && uri.scheme === "wyciwyg")  // document.open() was called, the document was cleared.
                                  -                evictTopWindow(progress.DOMWindow, uri);
                                  -
                                  -            if (uri)
                                  -                TabWatcher.watchTopWindow(progress.DOMWindow, uri);
                                  -            else // the location change to a non-uri means we need to hide
                                  -                TabWatcher.watchContext(progress.DOMWindow, null, true);
                                  -        }
                                  -    },
                                  -
                                  -    onStateChange: function(progress, request, flag, status)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -        {
                                  -            var win = progress.DOMWindow;
                                  -            FBTrace.sysout("-> TabProgressListener.onStateChanged for: " +
                                  -                safeGetName(request) + ", win: " + win.location.href +
                                  -                ", content URL: " + (win.document ? win.document.URL : "no content URL") +
                                  -                " " + getStateDescription(flag));
                                  -        }
                                  -    }
                                  -});
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/// TODO: xxxpedro tabWatcher - BaseProgressListener relies on XPCOM component 
                                  -/*
                                  -var FrameProgressListener = extend(BaseProgressListener,
                                  -{
                                  -    onStateChange: function(progress, request, flag, status)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -        {
                                  -            var win = progress.DOMWindow;
                                  -            FBTrace.sysout("-> FrameProgressListener.onStateChanged for: " +
                                  -                safeGetName(request) + ", win: " + win.location.href +
                                  -                ", content URL: " + (win.document ? win.document.URL : "no content URL") +
                                  -                " " + getStateDescription(flag));
                                  -        }
                                  -
                                  -        if (flag & STATE_IS_REQUEST && flag & STATE_START)
                                  -        {
                                  -            // We need to get the hook in as soon as the new DOMWindow is created, but before
                                  -            // it starts executing any scripts in the page.  After lengthy analysis, it seems
                                  -            // that the start of these "dummy" requests is the only state that works.
                                  -
                                  -            var safeName = safeGetName(request);
                                  -            if (safeName && ((safeName == dummyURI) || safeName == "about:document-onload-blocker") )
                                  -            {
                                  -                var win = progress.DOMWindow;
                                  -                // Another weird edge case here - when opening a new tab with about:blank,
                                  -                // "unload" is dispatched to the document, but onLocationChange is not called
                                  -                // again, so we have to call watchTopWindow here
                                  -
                                  -                if (win.parent == win && (win.location.href == "about:blank"))
                                  -                {
                                  -                    TabWatcher.watchTopWindow(win, win.location.href);
                                  -                    return;
                                  -                }
                                  -                else
                                  -                    TabWatcher.watchWindow(win);
                                  -            }
                                  -        }
                                  -
                                  -        // Later I discovered that XHTML documents don't dispatch the dummy requests, so this
                                  -        // is our best shot here at hooking them.
                                  -        if (flag & STATE_IS_DOCUMENT && flag & STATE_TRANSFERRING)
                                  -        {
                                  -            TabWatcher.watchWindow(progress.DOMWindow);
                                  -            return;
                                  -        }
                                  -
                                  -    }
                                  -});
                                  -
                                  -// Registers frame listener for specified tab browser.
                                  -function registerFrameListener(browser)
                                  -{
                                  -    if (browser.frameListener)
                                  -        return;
                                  -
                                  -    browser.frameListener = FrameProgressListener;  // just a mark saying we've registered. TODO remove!
                                  -    browser.addProgressListener(FrameProgressListener, NOTIFY_STATE_DOCUMENT);
                                  -
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -    {
                                  -        var win = browser.contentWindow;
                                  -        FBTrace.sysout("-> tabWatcher register FrameProgressListener for: "+
                                  -            safeGetWindowLocation(win)+", tab: "+Firebug.getTabIdForWindow(win)+"\n");
                                  -    }
                                  -}
                                  -/**/
                                  -
                                  -function getRefererHeader(request)
                                  -{
                                  -    var http = QI(request, Ci.nsIHttpChannel);
                                  -    var referer = null;
                                  -    http.visitRequestHeaders({
                                  -        visitHeader: function(name, value)
                                  -        {
                                  -            if (name == 'referer')
                                  -                referer = value;
                                  -        }
                                  -    });
                                  -    return referer;
                                  -}
                                  -
                                  -var TabWatcherHttpObserver = extend(Object,
                                  -{
                                  -    // nsIObserver
                                  -    observe: function(aSubject, aTopic, aData)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (aTopic == "http-on-modify-request")
                                  -            {
                                  -                aSubject = aSubject.QueryInterface(Ci.nsIHttpChannel);
                                  -                this.onModifyRequest(aSubject);
                                  -            }
                                  -        }
                                  -        catch (err)
                                  -        {
                                  -            ERROR(err);
                                  -        }
                                  -    },
                                  -
                                  -    onModifyRequest: function(request)
                                  -    {
                                  -        var win = getWindowForRequest(request);
                                  -        var tabId = Firebug.getTabIdForWindow(win);
                                  -
                                  -        // Tab watcher is only interested in tab related requests.
                                  -        if (!tabId)
                                  -            return;
                                  -
                                  -        // Ignore redirects
                                  -        if (request.URI.spec != request.originalURI.spec)
                                  -            return;
                                  -
                                  -        // A document request for the specified tab is here. It can be a top window
                                  -        // request (win == win.parent) or embedded iframe request.
                                  -        if (request.loadFlags & Ci.nsIHttpChannel.LOAD_DOCUMENT_URI)
                                  -        {
                                  -            if ( (FBTrace.DBG_ACTIVATION || FBTrace.DBG_WINDOWS) && win == win.parent)
                                  -            {
                                  -                FBTrace.sysout("-> tabWatcher TabWatcherHttpObserver *** START *** " +
                                  -                    "document request for: " + request.URI.spec + " window for request is "+safeGetWindowLocation(win)+"\n");
                                  -            }
                                  -
                                  -            if (win == win.parent)
                                  -            {
                                  -                // Make sure the frame listener is registered for top level window so,
                                  -                // we can get all onStateChange events and init context for all opened tabs.
                                  -                var browser = TabWatcher.getBrowserByWindow(win);
                                  -
                                  -                if (!browser)
                                  -                    return;
                                  -
                                  -                delete browser.FirebugLink;
                                  -
                                  -                if (safeGetWindowLocation(win).toString() == "about:blank") // then this page is opened in new tab or window
                                  -                {
                                  -                    var referer = getRefererHeader(request);
                                  -                    if (referer)
                                  -                    {
                                  -                        try
                                  -                        {
                                  -                            var srcURI = makeURI(referer);
                                  -                            browser.FirebugLink = {src: srcURI, dst: request.URI};
                                  -                        }
                                  -                        catch(e)
                                  -                        {
                                  -                            if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("tabWatcher.onModifyRequest failed to make URI from "+referer+" because "+exc, exc);
                                  -                        }
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    // Here we know the source of the request is 'win'. For viral activation and web app tracking
                                  -                    browser.FirebugLink = {src: browser.currentURI, dst: request.URI};
                                  -                }
                                  -                if (FBTrace.DBG_ACTIVATION && browser.FirebugLink)
                                  -                    FBTrace.sysout("tabWatcher.onModifyRequest created FirebugLink from "+browser.FirebugLink.src.spec + " to "+browser.FirebugLink.dst.spec);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    QueryInterface : function (aIID)
                                  -    {
                                  -        if (aIID.equals(Ci.nsIObserver) ||
                                  -            aIID.equals(Ci.nsISupportsWeakReference) ||
                                  -            aIID.equals(Ci.nsISupports))
                                  -        {
                                  -            return this;
                                  -        }
                                  -
                                  -        throw Components.results.NS_NOINTERFACE;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function onPageHideTopWindow(event)
                                  -{
                                  -    var win = event.currentTarget;  // we set the handler on a window
                                  -    var doc = event.target; // the pagehide is sent to the document.
                                  -    if (doc.defaultView != win)
                                  -        return; // ignore page hides on interior windows
                                  -
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -        FBTrace.sysout("-> tabWatcher pagehide event.currentTarget "+safeGetWindowLocation(win), event);
                                  -
                                  -    // http://developer.mozilla.org/en/docs/Using_Firefox_1.5_caching#pagehide_event
                                  -    if (event.persisted) // then the page is cached and there cannot be an unload handler
                                  -    {
                                  -        //  see Bug 484710 -  add pageIgnore event for pages that are ejected from the bfcache
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher onPageHideTopWindow for: "+safeGetWindowLocation(win)+"\n");
                                  -        TabWatcher.unwatchTopWindow(win);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Page is not cached, there may be an unload
                                  -        win.addEventListener("unload", onUnloadTopWindow, true);
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher onPageHideTopWindow set unload handler "+safeGetWindowLocation(win)+"\n");
                                  -    }
                                  -}
                                  -
                                  -function evictTopWindow(win, uri)
                                  -{
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -        FBTrace.sysout("-> tabWatcher evictTopWindow win "+safeGetWindowLocation(win)+" uri "+uri.spec);
                                  -    TabWatcher.unwatchTopWindow(win);
                                  -}
                                  -
                                  -function onUnloadTopWindow(event)
                                  -{
                                  -    var win = event.currentTarget;
                                  -    win.removeEventListener("unload", onUnloadTopWindow, true);
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -        FBTrace.sysout("-> tabWatcher onUnloadTopWindow for: "+safeGetWindowLocation(win)+" typeof :"+typeof(win)+"\n");
                                  -    TabWatcher.unwatchTopWindow(win);
                                  -}
                                  -
                                  -function onLoadWindowContent(event)
                                  -{
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -        FBTrace.sysout("-> tabWatcher.onLoadWindowContent event.type: "+event.type+"\n");
                                  -
                                  -    var win = event.currentTarget;
                                  -    try
                                  -    {
                                  -        win.removeEventListener("pageshow", onLoadWindowContent, onLoadWindowContent.capturing);
                                  -        if (FBTrace.DBG_WINDOWS) FBTrace.sysout("-> tabWatcher.onLoadWindowContent pageshow removeEventListener "+safeGetWindowLocation(win));
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener pageshow fails", exc);
                                  -    }
                                  -
                                  -    try
                                  -    {
                                  -        win.removeEventListener("DOMContentLoaded", onLoadWindowContent, onLoadWindowContent.capturing);
                                  -        if (FBTrace.DBG_WINDOWS) FBTrace.sysout("-> tabWatcher.onLoadWindowContent DOMContentLoaded removeEventListener "+safeGetWindowLocation(win));
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("-> tabWatcher.onLoadWindowContent removeEventListener DOMContentLoaded fails", exc);
                                  -    }
                                  -
                                  -    // Signal that we got the onLoadWindowContent event. This prevents the FrameProgressListener from sending it.
                                  -    var context = TabWatcher.getContextByWindow(win);
                                  -    if (context)
                                  -        context.onLoadWindowContent = true;
                                  -
                                  -    try
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("-> tabWatcher.onLoadWindowContent:"+safeGetWindowLocation(win), win);
                                  -        TabWatcher.watchLoadedTopWindow(win);
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("-> tabWatchter onLoadWindowContent FAILS: "+exc, exc);
                                  -    }
                                  -
                                  -}
                                  -onLoadWindowContent.capturing = false;
                                  -
                                  -function onUnloadWindow(event)
                                  -{
                                  -    var win = event.currentTarget;
                                  -    var eventType = "unload";
                                  -    if (FBTrace.DBG_WINDOWS)
                                  -        FBTrace.sysout("-> tabWatcher.onUnloadWindow for: "+safeGetWindowLocation(win) +" removeEventListener: "+ eventType+"\n");
                                  -    TabWatcher.unwatchWindow(win);
                                  -}
                                  -
                                  -function safeGetName(request)
                                  -{
                                  -    try
                                  -    {
                                  -        return request.name;
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -}
                                  -
                                  -function safeGetURI(browser)
                                  -{
                                  -    try
                                  -    {
                                  -        return browser.currentURI;
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var TraceListener =
                                  -{
                                  -    onDump: function(message)
                                  -    {
                                  -        var prefix = "->";
                                  -        if (message.text.indexOf(prefix) == 0)
                                  -        {
                                  -            message.text = message.text.substr(prefix.length);
                                  -            message.text = trim(message.text);
                                  -            message.type = "DBG_WINDOWS";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firebug/xmlViewer.js b/branches/flexBox/content/firebug/xmlViewer.js
                                  deleted file mode 100644
                                  index 80e2ecbb..00000000
                                  --- a/branches/flexBox/content/firebug/xmlViewer.js
                                  +++ /dev/null
                                  @@ -1,205 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -// List of XML related content types.
                                  -var xmlContentTypes =
                                  -[
                                  -    "text/xml",
                                  -    "application/xml",
                                  -    "application/xhtml+xml",
                                  -    "application/rss+xml",
                                  -    "application/atom+xml",,
                                  -    "application/vnd.mozilla.maybe.feed",
                                  -    "application/rdf+xml",
                                  -    "application/vnd.mozilla.xul+xml"
                                  -];
                                  -
                                  -// ************************************************************************************************
                                  -// Model implementation
                                  -
                                  -/**
                                  - * @module Implements viewer for XML based network responses. In order to create a new
                                  - * tab wihin network request detail, a listener is registered into
                                  - * <code>Firebug.NetMonitor.NetInfoBody</code> object.
                                  - */
                                  -Firebug.XMLViewerModel = extend(Firebug.Module,
                                  -{
                                  -    dispatchName: "xmlViewer",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.addListener(this);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        ///Firebug.ActivableModule.shutdown.apply(this, arguments);
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.NetMonitor.NetInfoBody.removeListener(this);
                                  -    },
                                  -
                                  -    /**
                                  -     * Check response's content-type and if it's a XML, create a new tab with XML preview.
                                  -     */
                                  -    initTabBody: function(infoBox, file)
                                  -    {
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.initTabBody", infoBox);
                                  -
                                  -        // If the response is XML let's display a pretty preview.
                                  -        ///if (this.isXML(safeGetContentType(file.request)))
                                  -        if (this.isXML(file.mimeType, file.responseText))
                                  -        {
                                  -            Firebug.NetMonitor.NetInfoBody.appendTab(infoBox, "XML",
                                  -                ///$STR("xmlviewer.tab.XML"));
                                  -                $STR("XML"));
                                  -
                                  -            if (FBTrace.DBG_XMLVIEWER)
                                  -                FBTrace.sysout("xmlviewer.initTabBody; XML response available");
                                  -        }
                                  -    },
                                  -
                                  -    isXML: function(contentType)
                                  -    {
                                  -        if (!contentType)
                                  -            return false;
                                  -
                                  -        // Look if the response is XML based.
                                  -        for (var i=0; i<xmlContentTypes.length; i++)
                                  -        {
                                  -            if (contentType.indexOf(xmlContentTypes[i]) == 0)
                                  -                return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Parse XML response and render pretty printed preview.
                                  -     */
                                  -    updateTabBody: function(infoBox, file, context)
                                  -    {
                                  -        var tab = infoBox.selectedTab;
                                  -        ///var tabBody = infoBox.getElementsByClassName("netInfoXMLText").item(0);
                                  -        var tabBody = $$(".netInfoXMLText", infoBox)[0];
                                  -        if (!hasClass(tab, "netInfoXMLTab") || tabBody.updated)
                                  -            return;
                                  -
                                  -        tabBody.updated = true;
                                  -
                                  -        this.insertXML(tabBody, Firebug.NetMonitor.Utils.getResponseText(file, context));
                                  -    },
                                  -
                                  -    insertXML: function(parentNode, text)
                                  -    {
                                  -        var xmlText = text.replace(/^\s*<?.+?>\s*/, "");
                                  -        
                                  -        var div = parentNode.ownerDocument.createElement("div");
                                  -        div.innerHTML = xmlText;
                                  -        
                                  -        var root = div.getElementsByTagName("*")[0];
                                  -    
                                  -        /***
                                  -        var parser = CCIN("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
                                  -        var doc = parser.parseFromString(text, "text/xml");
                                  -        var root = doc.documentElement;
                                  -
                                  -        // Error handling
                                  -        var nsURI = "http://www.mozilla.org/newlayout/xml/parsererror.xml";
                                  -        if (root.namespaceURI == nsURI && root.nodeName == "parsererror")
                                  -        {
                                  -            this.ParseError.tag.replace({error: {
                                  -                message: root.firstChild.nodeValue,
                                  -                source: root.lastChild.textContent
                                  -            }}, parentNode);
                                  -            return;
                                  -        }
                                  -        /**/
                                  -
                                  -        if (FBTrace.DBG_XMLVIEWER)
                                  -            FBTrace.sysout("xmlviewer.updateTabBody; XML response parsed", doc);
                                  -
                                  -        // Override getHidden in these templates. The parsed XML documen is
                                  -        // hidden, but we want to display it using 'visible' styling.
                                  -        /*
                                  -        var templates = [
                                  -            Firebug.HTMLPanel.CompleteElement,
                                  -            Firebug.HTMLPanel.Element,
                                  -            Firebug.HTMLPanel.TextElement,
                                  -            Firebug.HTMLPanel.EmptyElement,
                                  -            Firebug.HTMLPanel.XEmptyElement,
                                  -        ];
                                  -
                                  -        var originals = [];
                                  -        for (var i=0; i<templates.length; i++)
                                  -        {
                                  -            originals[i] = templates[i].getHidden;
                                  -            templates[i].getHidden = function() {
                                  -                return "";
                                  -            }
                                  -        }
                                  -        /**/
                                  -
                                  -        // Generate XML preview.
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: doc.documentElement}, parentNode);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        ///Firebug.HTMLPanel.CompleteElement.tag.replace({object: root}, parentNode);
                                  -        var html = [];
                                  -        Firebug.Reps.appendNode(root, html);
                                  -        parentNode.innerHTML = html.join("");
                                  -        
                                  -
                                  -        /*
                                  -        for (var i=0; i<originals.length; i++)
                                  -            templates[i].getHidden = originals[i];/**/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Domplate
                                  -
                                  -/**
                                  - * @domplate Represents a template for displaying XML parser errors. Used by
                                  - * <code>Firebug.XMLViewerModel</code>.
                                  - */
                                  -Firebug.XMLViewerModel.ParseError = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "xmlInfoError"},
                                  -            DIV({"class": "xmlInfoErrorMsg"}, "$error.message"),
                                  -            PRE({"class": "xmlInfoErrorSource"}, "$error|getSource")
                                  -        ),
                                  -
                                  -    getSource: function(error)
                                  -    {
                                  -        var parts = error.source.split("\n");
                                  -        if (parts.length != 2)
                                  -            return error.source;
                                  -
                                  -        var limit = 50;
                                  -        var column = parts[1].length;
                                  -        if (column >= limit) {
                                  -            parts[0] = "..." + parts[0].substr(column - limit);
                                  -            parts[1] = "..." + parts[1].substr(column - limit);
                                  -        }
                                  -
                                  -        if (parts[0].length > 80)
                                  -            parts[0] = parts[0].substr(0, 80) + "...";
                                  -
                                  -        return parts.join("\n");
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.XMLViewerModel);
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/cssEvents.js b/branches/flexBox/content/firediff/content/firediff-original/cssEvents.js
                                  deleted file mode 100644
                                  index 3153ec12..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/cssEvents.js
                                  +++ /dev/null
                                  @@ -1,386 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -var Path = FireDiff.Path,
                                  -  Reps = FireDiff.reps,
                                  -  CSSModel = FireDiff.CSSModel,
                                  -  ChangeEvent = FireDiff.events.ChangeEvent,
                                  -  
                                  -  CHANGES = FireDiff.events.AnnotateAttrs.CHANGES,
                                  -  REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES;
                                  -
                                  -function CSSChangeEvent(style, changeSource, xpath) {
                                  -    ChangeEvent.call(this, changeSource);
                                  -    
                                  -    this.style = style;
                                  -    this.xpath = xpath || Path.getStylePath(style);
                                  -}
                                  -CSSChangeEvent.prototype = extend(ChangeEvent.prototype, {
                                  -    changeType: "CSS",
                                  -
                                  -    isPropSet: function() {},
                                  -    isPropRemoval: function() {},
                                  -
                                  -    getXpath: function(target) { return Path.getStylePath(target); },
                                  -    xpathLookup: function(xpath, root) {
                                  -      return Path.evaluateStylePath(xpath, root);
                                  -    },
                                  -    sameFile: function(target) {
                                  -      var targetXpath = target && (target.xpath || this.getXpath(target));
                                  -      return targetXpath && Path.getTopPath(targetXpath) == Path.getTopPath(this.xpath);
                                  -    },
                                  -    getSnapshot: function(context) {
                                  -      return new Reps.CSSSnapshot(this, context);
                                  -    },
                                  -    getBaseSnapshot: function(context) {
                                  -      var rootPath = Path.getTopPath(this.xpath);
                                  -      var sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -      return new Reps.CSSSnapshot(sheet, context);
                                  -    },
                                  -    getDocumentName: function(context) {
                                  -      var rootPath = Path.getTopPath(this.xpath);
                                  -      var sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -
                                  -      return sheet.href;
                                  -    }
                                  -});
                                  -
                                  -function CSSRuleEvent(style, changeSource, xpath, clone) {
                                  -  CSSChangeEvent.call(this, style, changeSource, xpath);
                                  -  
                                  -  this.clone = clone || CSSModel.cloneCSSObject(style);
                                  -}
                                  -CSSRuleEvent.prototype = extend(CSSChangeEvent.prototype, {
                                  -  // This is a little bit of a hack. The rule editor does not always have a
                                  -  // valid rep object and as a consequence we can't key on the target.
                                  -  //
                                  -  // Since rule insert and remove events always come from Firebug we assume
                                  -  // that this change applies to the current editor
                                  -  appliesTo: function(target) { return target; },
                                  -
                                  -  mergeRevert: function(candidate) {
                                  -    if (Path.isChildOrSelf(this.xpath, candidate.xpath)
                                  -        && this.subType != candidate.subType) {
                                  -      return this.merge(candidate);
                                  -    }
                                  -  }
                                  -});
                                  -
                                  -function CSSInsertRuleEvent(style, changeSource, xpath, clone) {
                                  -  CSSRuleEvent.call(this, style, changeSource, xpath, clone);
                                  -}
                                  -CSSInsertRuleEvent.prototype = extend(CSSRuleEvent.prototype, {
                                  -  subType: "insertRule",
                                  -  getSummary: function() {
                                  -    return i18n.getString("summary.CSSInsertRule");
                                  -  },
                                  -  isElementAdded: function() { return true; },
                                  -
                                  -  annotateTree: function(tree, root) {
                                  -    var parent = this.getInsertActionNode(tree, root).parent;
                                  -    var identifier = Path.getIdentifier(this.xpath);
                                  -    
                                  -    if (!parent && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath + " " + root, tree);
                                  -    }
                                  -    var rule = parent.cssRules[identifier.index-1];
                                  -    if (!rule && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup rule: " + identifier.index + " " + parent, unwrapObject(parent));
                                  -    }
                                  -    rule[CHANGES] = this;
                                  -    rule.xpath = this.xpath;
                                  -    return rule;
                                  -  },
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    if (candidate.isElementRemoved() && this.xpath == candidate.xpath) {
                                  -      return;
                                  -    }
                                  -    
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    } else if (Path.isChildOrSelf(this.xpath, candidate.xpath)
                                  -        && (candidate.isPropSet() || candidate.isPropRemoval())){
                                  -      // TODO : Handle @media nested changes?
                                  -      var clone = this.clone.clone();
                                  -      candidate.apply(clone, this.xpath);
                                  -      
                                  -      return [ new CSSInsertRuleEvent(this.style, this.changeSource, this.xpath, clone) ];
                                  -    }
                                  -  },
                                  -  isCancellation: function(candidate) {
                                  -    return candidate.isElementRemoved()
                                  -        && this.xpath == candidate.xpath
                                  -        && this.clone.equals(candidate.clone);
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return Path.isChildOrSelf(this.xpath, candidate.xpath);
                                  -  },
                                  -  cloneOnXPath: function(xpath) {
                                  -    return new CSSInsertRuleEvent(this.style, this.changeSource, xpath, this.clone);
                                  -  },
                                  -  
                                  -  apply: function(style, xpath) {
                                  -    Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -        function() {
                                  -          var actionNode = this.getInsertActionNode(style, xpath);
                                  -          var identifier = Path.getIdentifier(this.xpath);
                                  -          identifier.index--;
                                  -          
                                  -          if (actionNode.parent instanceof CSSStyleSheet
                                  -              || actionNode.parent instanceof CSSMediaRule) {
                                  -            Firebug.CSSModule.insertRule(actionNode.parent, this.clone.cssText, identifier.index);
                                  -          } else {
                                  -            actionNode.parent.cssRules.splice(identifier.index, 0, CSSModel.cloneCSSObject(this.clone));
                                  -          }
                                  -        }, this));
                                  -  },
                                  -  revert: function(style, xpath) {
                                  -    Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -        function() {
                                  -          var actionNode = this.getInsertActionNode(style, xpath);
                                  -          var identifier = Path.getIdentifier(this.xpath);
                                  -          identifier.index--;
                                  -          
                                  -          if (actionNode.parent instanceof CSSStyleSheet
                                  -              || actionNode.parent instanceof CSSMediaRule) {
                                  -            Firebug.CSSModule.deleteRule(actionNode.parent, identifier.index);
                                  -          } else {
                                  -            actionNode.parent.cssRules.splice(identifier.index, 1);
                                  -          }
                                  -        }, this));
                                  -  }
                                  -});
                                  -
                                  -function CSSRemoveRuleEvent(style, changeSource, xpath, clone, styleSheet) {
                                  -  CSSRuleEvent.call(this, style, changeSource, xpath, clone);
                                  -  this.styleSheet = styleSheet || style.parentStyleSheet;
                                  -}
                                  -CSSRemoveRuleEvent.prototype = extend(CSSRuleEvent.prototype, {
                                  -  subType: "removeRule",
                                  -  getSummary: function() {
                                  -    return i18n.getString("summary.CSSRemoveRule");
                                  -  },
                                  -  isElementRemoved: function() { return true; },
                                  -
                                  -  annotateTree: function(tree, root) {
                                  -    var actionNode = this.getInsertActionNode(tree, root).parent;
                                  -    var list = actionNode[REMOVE_CHANGES] || [];
                                  -    list.push(this);
                                  -    actionNode[REMOVE_CHANGES] = list;
                                  -    // TODO : Verify this is UTed
                                  -    actionNode.xpath = this.xpath;
                                  -    
                                  -    return this;
                                  -  },
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    if (candidate.isElementAdded() && this.xpath == candidate.xpath) {
                                  -      return;
                                  -    }
                                  -    
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    }
                                  -  },
                                  -  mergeRevert: function(candidate) {
                                  -    if (this.isCancellation(candidate)) {
                                  -      return [];
                                  -    }
                                  -  },
                                  -  overridesChange: function(prior) {
                                  -    return !prior.isElementRemoved() && this.xpath == prior.xpath;
                                  -  },
                                  -  isCancellation: function(candidate) {
                                  -    return this.xpath == candidate.xpath
                                  -        && candidate.isElementAdded()
                                  -        && this.clone.equals(candidate.clone);
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return this.isCancellation(candidate);
                                  -  },
                                  -  cloneOnXPath: function(xpath) {
                                  -    return new CSSRemoveRuleEvent(this.style, this.changeSource, xpath, this.clone, this.styleSheet);
                                  -  },
                                  -  
                                  -  apply: CSSInsertRuleEvent.prototype.revert,
                                  -  revert: CSSInsertRuleEvent.prototype.apply
                                  -});
                                  -
                                  -function CSSPropChangeEvent(style, propName, changeSource, xpath) {
                                  -  CSSChangeEvent.call(this, style, changeSource, xpath);
                                  -  
                                  -  this.propName = propName;
                                  -}
                                  -CSSPropChangeEvent.prototype = extend(CSSChangeEvent.prototype, {
                                  -  annotateTree: function(tree, root) {
                                  -    var parent = this.getActionNode(tree, root);
                                  -    
                                  -    if (!parent && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath, tree);
                                  -    }
                                  -    var changes = parent.propChanges || [];
                                  -    changes.push(this);
                                  -    parent.propChanges = changes;
                                  -    parent.xpath = this.xpath;
                                  -    return parent;
                                  -  },
                                  -  
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    }
                                  -    if (this.xpath != candidate.xpath
                                  -        || this.propName != candidate.propName) {
                                  -      return;
                                  -    }
                                  -
                                  -    if (candidate.isPropSet()) {
                                  -      return [
                                  -        new CSSSetPropertyEvent(
                                  -              this.style, this.propName,
                                  -              candidate.propValue, candidate.propPriority,
                                  -              this.prevValue, this.prevPriority, this.changeSource,
                                  -              this.xpath)
                                  -      ];
                                  -    } else {
                                  -      return [
                                  -        new CSSRemovePropertyEvent(
                                  -              this.style, this.propName,
                                  -              this.prevValue, this.prevPriority,
                                  -              this.changeSource, this.xpath)
                                  -      ];
                                  -    }
                                  -  },
                                  -  mergeRevert: function(candidate) {
                                  -    if (this.xpath == candidate.xpath
                                  -        && this.propName == candidate.propName) {
                                  -      return this.merge(candidate);
                                  -    }
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return this.xpath == candidate.xpath
                                  -        && this.propName == candidate.propName;
                                  -  }
                                  -});
                                  -
                                  -function CSSSetPropertyEvent(style, propName, propValue, propPriority, prevValue, prevPriority, changeSource, xpath) {
                                  -  CSSPropChangeEvent.call(this, style, propName, changeSource, xpath);
                                  -  
                                  -  this.propValue = propValue;
                                  -  this.propPriority = propPriority;
                                  -  this.prevValue = prevValue;
                                  -  this.prevPriority = prevPriority;
                                  -}
                                  -CSSSetPropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, {
                                  -    subType: "setProp",
                                  -    
                                  -    getSummary: function() {
                                  -        return i18n.getString("summary.CSSSetProperty");
                                  -    },
                                  -    isPropSet: function() { return true; },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.propName == candidate.propName
                                  -          && this.prevValue == candidate.propValue
                                  -          && this.prevPriority == candidate.propPriority;
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new CSSSetPropertyEvent(
                                  -          this.style, this.propName,
                                  -          this.propValue, this.propPriority,
                                  -          this.prevValue, this.prevPriority,
                                  -          this.changeSource,
                                  -          xpath);
                                  -    },
                                  -    
                                  -    apply: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.propValue, this.propPriority);
                                  -          }, this));
                                  -    },
                                  -    revert: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            if (this.prevValue) {
                                  -              Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority);
                                  -            } else {
                                  -              Firebug.CSSModule.removeProperty(actionNode.style, this.propName);
                                  -            }
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -function CSSRemovePropertyEvent(style, propName, prevValue, prevPriority, changeSource, xpath) {
                                  -  CSSPropChangeEvent.call(this, style, propName, changeSource, xpath);
                                  -
                                  -  // Seed empty values for the current state. This makes the domplate
                                  -  // display much easier
                                  -  this.propValue = "";
                                  -  this.propPriority = "";
                                  -  
                                  -  this.prevValue = prevValue;
                                  -  this.prevPriority = prevPriority;
                                  -}
                                  -CSSRemovePropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, {
                                  -    subType: "removeProp",
                                  -    
                                  -    getSummary: function() {
                                  -        return i18n.getString("summary.CSSRemoveProperty");
                                  -    },
                                  -    isPropRemoval: function() { return true; },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType != candidate.subType
                                  -          && this.propName == candidate.propName
                                  -          && this.prevValue == candidate.propValue
                                  -          && this.prevPriority == candidate.propPriority;
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new CSSRemovePropertyEvent(
                                  -          this.style, this.propName,
                                  -          this.prevValue, this.prevPriority,
                                  -          this.changeSource,
                                  -          xpath);
                                  -    },
                                  -    apply: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.removeProperty(actionNode.style, this.propName);
                                  -          }, this));
                                  -    },
                                  -    revert: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority);
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -FireDiff.events.css = {
                                  -  CSSInsertRuleEvent: CSSInsertRuleEvent,
                                  -  CSSRemoveRuleEvent: CSSRemoveRuleEvent,
                                  -  CSSSetPropertyEvent: CSSSetPropertyEvent,
                                  -  CSSRemovePropertyEvent: CSSRemovePropertyEvent
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/cssModel.js b/branches/flexBox/content/firediff/content/firediff-original/cssModel.js
                                  deleted file mode 100644
                                  index f7031696..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/cssModel.js
                                  +++ /dev/null
                                  @@ -1,280 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -/*
                                  - * Implements the logic necessary to deep clone as CSS object.
                                  - * 
                                  - * Note that this does not clone the CSS value types, so this could
                                  - * introduce some inconsistencies with the stored data model
                                  - */
                                  -FireDiff.CSSModel = FBL.ns(function() { with (FBL) {
                                  -  function elementEquals(left, right, i) {
                                  -    if (left && left.equals) {
                                  -      if (!left.equals(right)) {
                                  -        if (FBTrace.DBG_FIREDIFF) {
                                  -          FBTrace.sysout("Not Equal equals: " + i + " '" + left + "' '" + right + "'");
                                  -          FBTrace.sysout("Not Equal", left);
                                  -          FBTrace.sysout("Not Equal", right);
                                  -        }
                                  -        return false;
                                  -      }
                                  -    } else {
                                  -      if (left != right) {
                                  -        if (FBTrace.DBG_FIREBUG) {
                                  -          FBTrace.sysout("Not Equal ==: " + i + " '" + left + "' '" + right + "'", left);
                                  -          FBTrace.sysout("Not Equal", left);
                                  -          FBTrace.sysout("Not Equal", right);
                                  -        }
                                  -        return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  }
                                  -  
                                  -  function CloneObject() {}
                                  -  CloneObject.prototype = {
                                  -    equals: function(test) {
                                  -      if (!test)    return false;
                                  -      
                                  -      var tested = { cssText: true },
                                  -          i;
                                  -      for (i in this) {
                                  -        if (this.hasOwnProperty(i) && !tested[i]) {
                                  -          var left = this[i], right = test[i];
                                  -          if (!elementEquals(this[i], test[i], i))    return false;
                                  -          tested[i] = true;
                                  -        }
                                  -      }
                                  -      for (i in test) {
                                  -        if (test.hasOwnProperty(i) && !tested[i]) {
                                  -          // We haven't seen it before, so it must not equal
                                  -          return false;
                                  -        }
                                  -      }
                                  -      return true;
                                  -    },
                                  -    isEqualNode: function(node) {
                                  -      return this.equals(node);
                                  -    },
                                  -    clone: function() {
                                  -      return cloneCSSObject(this);
                                  -    },
                                  -    cloneNode: function() {
                                  -      return this.clone();
                                  -    }
                                  -  }
                                  -  function ArrayCloneObject(array) {
                                  -    this.length = 0;
                                  -    for (var i = 0; i < array.length; i++) {
                                  -      this.push(cloneCSSObject(array[i]));
                                  -    }
                                  -  }
                                  -  ArrayCloneObject.prototype = {
                                  -    // for in interation does not work on built in types, thus we have to
                                  -    // selectively extend the array prototype
                                  -    push: Array.prototype.push,
                                  -    splice: Array.prototype.splice,
                                  -    equals: function arrayEquals(right) {
                                  -      if (!right || this.length != right.length)    return false;
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        if (!elementEquals(this[i], right[i], i))    return false;
                                  -      }
                                  -      return true;
                                  -    }
                                  -  };
                                  -  
                                  -  function StyleDeclarationClone(style) {
                                  -    this.cssText = style.cssText;
                                  -    this.properties = {};
                                  -    this.length = 0;
                                  -
                                  -    // Copied from CSS Panel's getRuleProperties implementation
                                  -    // TODO : Attempt to unify these as a lib method?
                                  -    var lines = this.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -    var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -    var line,i=0;
                                  -    while(line=lines[i++]){
                                  -      m = propRE.exec(line);
                                  -      if(!m)    continue;
                                  -      //var name = m[1], value = m[2], important = !!m[3];
                                  -      if (m[2]) {
                                  -        this.setProperty(m[1], m[2], m[3]);
                                  -      }
                                  -    }
                                  -    
                                  -    this.__defineGetter__("cssText", this.generateCSSText);
                                  -  }
                                  -  StyleDeclarationClone.prototype = extend(CloneObject.prototype, {
                                  -    push: Array.prototype.push,
                                  -    splice: Array.prototype.splice,
                                  -    
                                  -    getPropertyValue: function(propertyName) {
                                  -      var prop = this.properties[propertyName];
                                  -      return prop && prop.value;
                                  -    },
                                  -    getPropertyPriority: function(propertyName) {
                                  -      var prop = this.properties[propertyName];
                                  -      return prop && prop.priority;
                                  -    },
                                  -    setProperty: function(propertyName, value, priority) {
                                  -      this.properties[propertyName] = {
                                  -          value: value,
                                  -          priority: priority || "",
                                  -          
                                  -          equals: function(right) {
                                  -            return right && this.value == right.value && this.priority == right.priority;
                                  -          }
                                  -      };
                                  -      if (this.getPropIndex(propertyName) < 0) {
                                  -        this.push(propertyName);
                                  -      }
                                  -    },
                                  -    removeProperty: function(propertyName) {
                                  -      var propIndex = this.getPropIndex(propertyName);
                                  -      if (propIndex >= 0) {
                                  -        this.splice(propIndex, 1);
                                  -        delete this.properties[propertyName];
                                  -      }
                                  -    },
                                  -    equals: function(test) {
                                  -      return CloneObject.prototype.equals.call(this.properties, test.properties);
                                  -    },
                                  -    
                                  -    generateCSSText: function() {
                                  -      var out = [];
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        out.push(this[i]);
                                  -        out.push(": ");
                                  -        out.push(this.getPropertyValue(this[i]));
                                  -        
                                  -        var priority = this.getPropertyPriority(this[i]);
                                  -        if (priority) {
                                  -          out.push(" ");
                                  -          out.push(priority);
                                  -        }
                                  -        out.push("; ");
                                  -      }
                                  -      return out.join("");
                                  -    },
                                  -    getPropIndex: function(propName) {
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        if (this[i] == propName) {
                                  -          return i;
                                  -        }
                                  -      }
                                  -      return -1;
                                  -    }
                                  -  });
                                  -
                                  -  function MediaListClone(media) {
                                  -    ArrayCloneObject.call(this, []);
                                  -    
                                  -    // To comment on my own confusion, even though my expected is not really spec:
                                  -    // https://bugzilla.mozilla.org/show_bug.cgi?id=492925
                                  -    for (var i = 0; i < media.length; i++) {
                                  -      this.push(media.item(i));
                                  -    }
                                  -    this.mediaText = media.mediaText;
                                  -  }
                                  -  MediaListClone.prototype = ArrayCloneObject.prototype;
                                  -  
                                  -  var RulesClone = ArrayCloneObject;
                                  -  
                                  -  function StyleSheetClone(sheet) {
                                  -    this.type = sheet.type;
                                  -    this.disabled = sheet.disabled;
                                  -    this.href = sheet.href;
                                  -    this.title = sheet.title;
                                  -    this.media = new MediaListClone(sheet.media);
                                  -    
                                  -    this.cssRules = new RulesClone(sheet.cssRules);
                                  -  }
                                  -  StyleSheetClone.prototype = extend(CloneObject.prototype, {
                                  -    insertRule: function(rule, index) {
                                  -      // Note: This does not match the CSS object API. Parsing of this will
                                  -      //    be overly complicated, so this function differs from the CSS spec
                                  -      //    in that it will only accept a pre-parsed CSS clone object
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("StyleSheetClone.insertRule: " + index + " " + rule, this.cssRules);
                                  -      this.cssRules.splice(index, 0, rule);
                                  -    },
                                  -    deleteRule: function(index) {
                                  -      this.cssRules.splice(index, 1);
                                  -    }
                                  -  });
                                  -  
                                  -  function CSSRuleClone(rule) {
                                  -    this.type = rule.type;
                                  -    this.cssText = rule.cssText;
                                  -  }
                                  -  CSSRuleClone.prototype = CloneObject.prototype;
                                  -  
                                  -  function CSSStyleRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.selectorText = rule.selectorText;
                                  -    this.style = new StyleDeclarationClone(rule.style);
                                  -
                                  -    this.__defineGetter__("cssText", function() { return this.selectorText + " { " + this.style.cssText + "}" });
                                  -  }
                                  -  CSSStyleRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSMediaRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.cssRules = new RulesClone(rule.cssRules);
                                  -    this.media = new MediaListClone(rule.media);
                                  -  }
                                  -  CSSMediaRuleClone.prototype = extend(CSSRuleClone.prototype, {
                                  -    insertRule: StyleSheetClone.prototype.insertRule,
                                  -    deleteRule: StyleSheetClone.prototype.deleteRule
                                  -  });
                                  -  function CSSFontFaceRuleClone(rule) {
                                  -    CSSStyleRuleClone.call(this, rule);
                                  -    this.selectorText = "@font-face";
                                  -  }
                                  -  CSSFontFaceRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSImportRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    
                                  -    this.href = rule.href;
                                  -    this.media = new MediaListClone(rule.media);
                                  -    this.styleSheet = new StyleSheetClone(rule.styleSheet);
                                  -  }
                                  -  CSSImportRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSCharsetRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.encoding = rule.encoding;
                                  -  }
                                  -  CSSCharsetRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -
                                  -  function cloneCSSObject(cssRule) {
                                  -    if (cssRule instanceof CSSStyleSheet || cssRule instanceof StyleSheetClone) {
                                  -      return new StyleSheetClone(cssRule);
                                  -    } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSStyleRuleClone) {
                                  -      return new CSSStyleRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSMediaRuleClone) {
                                  -      return new CSSMediaRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSFontFaceRuleClone) {
                                  -      return new CSSFontFaceRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSImportRuleClone) {
                                  -      return new CSSImportRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSCharsetRuleClone) {
                                  -      return new CSSCharsetRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSUnknownRule || cssRule instanceof CSSRuleClone) {
                                  -      return new CSSRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSStyleDeclaration || cssRule instanceof StyleDeclarationClone) {
                                  -      return new StyleDeclarationClone(cssRule);
                                  -    }
                                  -  }
                                  -  
                                  -  this.StyleSheetClone = StyleSheetClone;
                                  -  this.CSSStyleRuleClone = CSSStyleRuleClone;
                                  -  this.CSSMediaRuleClone = CSSMediaRuleClone;
                                  -  this.CSSFontFaceRuleClone = CSSFontFaceRuleClone;
                                  -  this.CSSImportRuleClone = CSSImportRuleClone;
                                  -  this.CSSCharsetRuleClone = CSSCharsetRuleClone;
                                  -  this.CSSRuleClone = CSSRuleClone;
                                  -  this.StyleDeclarationClone = StyleDeclarationClone;
                                  -  this.cloneCSSObject = cloneCSSObject;
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/diff.js b/branches/flexBox/content/firediff/content/firediff-original/diff.js
                                  deleted file mode 100644
                                  index 9ae1c23c..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/diff.js
                                  +++ /dev/null
                                  @@ -1,271 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  - * Text diff implementation.
                                  - * 
                                  - * This library supports the following APIS:
                                  - * JsDiff.diffChars: Character by character diff
                                  - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
                                  - * JsDiff.diffLines: Line based diff
                                  - * 
                                  - * JsDiff.diffCss: Diff targeted at CSS content
                                  - * 
                                  - * These methods are based on the implementation proposed in
                                  - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
                                  - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
                                  - */
                                  -var JsDiff = (function() {
                                  -  function clonePath(path) {
                                  -    return { newPos: path.newPos, components: path.components.slice(0) };
                                  -  }
                                  -  function removeEmpty(array) {
                                  -    var ret = [];
                                  -    for (var i = 0; i < array.length; i++) {
                                  -      if (array[i]) {
                                  -        ret.push(array[i]);
                                  -      }
                                  -    }
                                  -    return ret;
                                  -  }
                                  -  function escapeHTML(s) {
                                  -    var n = s;
                                  -    n = n.replace(/&/g, "&amp;");
                                  -    n = n.replace(/</g, "&lt;");
                                  -    n = n.replace(/>/g, "&gt;");
                                  -    n = n.replace(/"/g, "&quot;");
                                  -
                                  -    return n;
                                  -  }
                                  -
                                  -
                                  -  var fbDiff = function(ignoreWhitespace) {
                                  -    this.ignoreWhitespace = ignoreWhitespace;
                                  -  };
                                  -  fbDiff.prototype = {
                                  -      diff: function(oldString, newString) {
                                  -        // Handle the identity case (this is due to unrolling editLength == 0
                                  -        if (newString == oldString) {
                                  -          return [{ value: newString }];
                                  -        }
                                  -        if (!newString) {
                                  -          return [{ value: oldString, removed: true }];
                                  -        }
                                  -        if (!oldString) {
                                  -          return [{ value: newString, added: true }];
                                  -        }
                                  -
                                  -        newString = this.tokenize(newString);
                                  -        oldString = this.tokenize(oldString);
                                  -
                                  -        var newLen = newString.length, oldLen = oldString.length;
                                  -        var maxEditLength = newLen + oldLen;
                                  -        var bestPath = [{ newPos: -1, components: [] }];
                                  -
                                  -        // Seed editLength = 0
                                  -        var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
                                  -        if (bestPath[0].newPos+1 >= newLen && oldPos+1 >= oldLen) {
                                  -          return bestPath[0].components;
                                  -        }
                                  -
                                  -        for (var editLength = 1; editLength <= maxEditLength; editLength++) {
                                  -          for (var diagonalPath = -1*editLength; diagonalPath <= editLength; diagonalPath+=2) {
                                  -            var basePath;
                                  -            var addPath = bestPath[diagonalPath-1],
                                  -                removePath = bestPath[diagonalPath+1];
                                  -            oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
                                  -            if (addPath) {
                                  -              // No one else is going to attempt to use this value, clear it
                                  -              bestPath[diagonalPath-1] = undefined;
                                  -            }
                                  -
                                  -            var canAdd = addPath && addPath.newPos+1 < newLen;
                                  -            var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
                                  -            if (!canAdd && !canRemove) {
                                  -              bestPath[diagonalPath] = undefined;
                                  -              continue;
                                  -            }
                                  -
                                  -            // Select the diagonal that we want to branch from. We select the prior
                                  -            // path whose position in the new string is the farthest from the origin
                                  -            // and does not pass the bounds of the diff graph
                                  -            if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
                                  -              basePath = clonePath(removePath);
                                  -              this.pushComponent(basePath.components, oldString[oldPos], undefined, true);
                                  -            } else {
                                  -              basePath = clonePath(addPath);
                                  -              basePath.newPos++;
                                  -              this.pushComponent(basePath.components, newString[basePath.newPos], true, undefined);
                                  -            }
                                  -
                                  -            var oldPos = this.extractCommon(basePath, newString, oldString, diagonalPath);
                                  -
                                  -            if (basePath.newPos+1 >= newLen && oldPos+1 >= oldLen) {
                                  -              return basePath.components;
                                  -            } else {
                                  -              bestPath[diagonalPath] = basePath;
                                  -            }
                                  -          }
                                  -        }
                                  -      },
                                  -
                                  -      pushComponent: function(components, value, added, removed) {
                                  -        var last = components[components.length-1];
                                  -        if (last && last.added === added && last.removed === removed) {
                                  -          // We need to clone here as the component clone operation is just
                                  -          // as shallow array clone
                                  -          components[components.length-1] =
                                  -            {value: this.join(last.value, value), added: added, removed: removed };
                                  -        } else {
                                  -          components.push({value: value, added: added, removed: removed });
                                  -        }
                                  -      },
                                  -      extractCommon: function(basePath, newString, oldString, diagonalPath) {
                                  -        var newLen = newString.length,
                                  -            oldLen = oldString.length,
                                  -            newPos = basePath.newPos,
                                  -            oldPos = newPos - diagonalPath;
                                  -        while (newPos+1 < newLen && oldPos+1 < oldLen && this.equals(newString[newPos+1], oldString[oldPos+1])) {
                                  -          newPos++;
                                  -          oldPos++;
                                  -          
                                  -          this.pushComponent(basePath.components, newString[newPos], undefined, undefined);
                                  -        }
                                  -        basePath.newPos = newPos;
                                  -        return oldPos;
                                  -      },
                                  -
                                  -      equals: function(left, right) {
                                  -        var reWhitespace = /\S/;
                                  -        if (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)) {
                                  -          return true;
                                  -        } else {
                                  -          return left == right;
                                  -        }
                                  -      },
                                  -      join: function(left, right) {
                                  -        return left + right;
                                  -      },
                                  -      tokenize: function(value) {
                                  -        return value;
                                  -      }
                                  -  };
                                  -  
                                  -  var CharDiff = new fbDiff();
                                  -  
                                  -  var WordDiff = new fbDiff(true);
                                  -  WordDiff.tokenize = function(value) {
                                  -    return removeEmpty(value.split(/(\s+|\b)/g));
                                  -  };
                                  -  
                                  -  var CssDiff = new fbDiff(true);
                                  -  CssDiff.tokenize = function(value) {
                                  -    return removeEmpty(value.split(/([{}:;,]|\s+)/g));
                                  -  };
                                  -  
                                  -  var LineDiff = new fbDiff();
                                  -  LineDiff.tokenize = function(value) {
                                  -    var values = value.split(/\n/g),
                                  -        ret = [];
                                  -    for (var i = 0; i < values.length-1; i++) {
                                  -      ret.push(values[i] + "\n");
                                  -    }
                                  -    if (values.length) {
                                  -      ret.push(values[values.length-1]);
                                  -    }
                                  -    return ret;
                                  -  };
                                  -  
                                  -  return {
                                  -    diffChars: function(oldStr, newStr) { return CharDiff.diff(oldStr, newStr); },
                                  -    diffWords: function(oldStr, newStr) { return WordDiff.diff(oldStr, newStr); },
                                  -    diffLines: function(oldStr, newStr) { return LineDiff.diff(oldStr, newStr); },
                                  -
                                  -    diffCss: function(oldStr, newStr) { return CssDiff.diff(oldStr, newStr); },
                                  -
                                  -    createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) {
                                  -      var ret = [];
                                  -      
                                  -      ret.push("Index: " + fileName);
                                  -      ret.push("===================================================================");
                                  -      ret.push("--- " + fileName + "\t" + oldHeader);
                                  -      ret.push("+++ " + fileName + "\t" + newHeader);
                                  -      
                                  -      var diff = LineDiff.diff(oldStr, newStr);
                                  -      diff.push({value: "", lines: []});   // Append an empty value to make cleanup easier
                                  -      
                                  -      var oldRangeStart = 0, newRangeStart = 0, curRange = [],
                                  -          oldLine = 1, newLine = 1;
                                  -      for (var i = 0; i < diff.length; i++) {
                                  -        var current = diff[i],
                                  -            lines = current.lines || current.value.replace(/\n$/, "").split("\n");
                                  -        current.lines = lines;
                                  -        
                                  -        if (current.added || current.removed) {
                                  -          if (!oldRangeStart) {
                                  -            var prev = diff[i-1];
                                  -            oldRangeStart = oldLine;
                                  -            newRangeStart = newLine;
                                  -            
                                  -            if (prev) {
                                  -              curRange.push.apply(curRange, prev.lines.slice(-4).map(function(entry) { return " " + entry; }));
                                  -              oldRangeStart -= 4;
                                  -              newRangeStart -= 4;
                                  -            }
                                  -          }
                                  -          curRange.push.apply(curRange, lines.map(function(entry) { return (current.added?"+":"-") + entry; }));
                                  -          if (current.added) {
                                  -            newLine += lines.length;
                                  -          } else {
                                  -            oldLine += lines.length;
                                  -          }
                                  -        } else {
                                  -          if (oldRangeStart) {
                                  -            if (lines.length <= 8 && i < diff.length-1) {
                                  -              // Overlapping 
                                  -              curRange.push.apply(curRange, lines.map(function(entry) { return " " + entry; }));
                                  -            } else {
                                  -              // end the range and output
                                  -              var contextSize = Math.min(lines.length, 4);
                                  -              ret.push(
                                  -                  "@@ -" + oldRangeStart + "," + (oldLine-oldRangeStart+contextSize)
                                  -                  + " +" + newRangeStart + "," + (newLine-newRangeStart+contextSize)
                                  -                  + " @@");
                                  -              ret.push.apply(ret, curRange);
                                  -              ret.push.apply(ret, lines.slice(0, contextSize).map(function(entry) { return " " + entry; }));
                                  -
                                  -              oldRangeStart = 0;  newRangeStart = 0; curRange = [];
                                  -            }
                                  -          }
                                  -          oldLine += lines.length;
                                  -          newLine += lines.length;
                                  -        }
                                  -      }
                                  -      if (diff.length > 1 && !/\n$/.test(diff[diff.length-2].value)) {
                                  -        ret.push("\\ No newline at end of file\n");
                                  -      }
                                  -      
                                  -      return ret.join("\n");
                                  -    },
                                  -
                                  -    convertChangesToXML: function(changes){
                                  -      var ret = [];
                                  -      for ( var i = 0; i < changes.length; i++) {
                                  -        var change = changes[i];
                                  -        if (change.added) {
                                  -          ret.push("<ins>");
                                  -        } else if (change.removed) {
                                  -          ret.push("<del>");
                                  -        }
                                  -
                                  -        ret.push(escapeHTML(change.value));
                                  -
                                  -        if (change.added) {
                                  -          ret.push("</ins>");
                                  -        } else if (change.removed) {
                                  -          ret.push("</del>");
                                  -        }
                                  -      }
                                  -      return ret.join("");
                                  -    }
                                  -  };
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/diffModule.js b/branches/flexBox/content/firediff/content/firediff-original/diffModule.js
                                  deleted file mode 100644
                                  index 6dceed1b..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/diffModule.js
                                  +++ /dev/null
                                  @@ -1,392 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path;
                                  -
                                  -function revertChange(curChange, context) {
                                  -  var ownerDoc, rootPath;
                                  -  if (curChange.changeType == "CSS") {
                                  -    rootPath = Path.getTopPath(curChange.xpath);
                                  -    ownerDoc = Path.evaluateStylePath(rootPath, context.window.document);
                                  -  } else {
                                  -    ownerDoc = context.window.document.documentElement;
                                  -    rootPath = Path.getElementPath(ownerDoc);
                                  -  }
                                  -
                                  -  if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Revert change", curChange);
                                  -  curChange.revert(ownerDoc, rootPath);
                                  -}
                                  -
                                  -Firebug.DiffModule = extend(Firebug.ActivableModule, {
                                  -    panelName: "firediff",
                                  -    
                                  -    supportsFirebugEdits: Firebug.Editor.supportsStopEvent,
                                  -    
                                  -    initialize: function() {
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        
                                  -        if (Firebug.CSSModule) {
                                  -            // Maintain support for older versions of firebug that do not
                                  -            // have the CSS change event implementation
                                  -            Firebug.CSSModule.addListener(this);
                                  -        }
                                  -        if (Firebug.HTMLModule) {
                                  -          Firebug.HTMLModule.addListener(this);
                                  -        }
                                  -        if (Firebug.Editor.supportsStopEvent) {
                                  -          Firebug.Editor.addListener(this);
                                  -        }
                                  -    },
                                  -
                                  -    loadedContext: function(context) {
                                  -      if (this.isAlwaysEnabled()) {
                                  -        this.monitorContext(context);
                                  -      }
                                  -    },
                                  -    onEnabled: function(context) {
                                  -      this.monitorContext(context);
                                  -    },
                                  -    onDisabled: function(context) {
                                  -      this.unmonitorContext(context);
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Actions
                                  -    revertAllChanges: function(change, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      var changes = diffContext.changes;
                                  -
                                  -      // Revert means everything, not just those that are filtered.
                                  -      // Keeping the change model in sync for arbitrary changes is
                                  -      // currently out of scope
                                  -      //
                                  -      // We also rely on filter to be designed such that the model's
                                  -      // integrity remains.
                                  -      for (var i = changes.length; i > 0; i--) {
                                  -        var curChange = changes[i-1];
                                  -
                                  -        revertChange(curChange, context);
                                  -        changes.splice(i-1, 1);
                                  -
                                  -        if (change == curChange) {
                                  -          break;
                                  -        }
                                  -      }
                                  -    },
                                  -    revertChange: function(change, context, force) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      var changes = diffContext.changes;
                                  -      
                                  -      var tempChanges = changes.slice();
                                  -      var revert = Events.mergeRevert(change, tempChanges);
                                  -      if ((revert.length > 1 || changes.length - tempChanges.length > 1) && !force) {
                                  -        return false; 
                                  -      }
                                  -      
                                  -      // Perform the revert
                                  -      for (var i = revert.length; i > 0; i--) {
                                  -        var curChange = revert[i-1];
                                  -
                                  -        revertChange(curChange, context);
                                  -      }
                                  -      
                                  -      diffContext.changes = tempChanges;
                                  -      return revert;
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Editor Listener
                                  -    onBeginEditing: function(panel, editor, target, value) {
                                  -      this.onBeginFirebugChange(target);
                                  -      this.onSaveEdit(panel, editor, target, value);
                                  -    },
                                  -    onSaveEdit: function(panel, editor, target, value, previousValue) {
                                  -      // Update the data store used for the HTML editor monitoring
                                  -      var diffContext = this.getDiffContext();
                                  -      diffContext.htmlEditPath = this.getHtmlEditorPaths(editor);
                                  -    },
                                  -    onStopEdit: function(panel, editor, target) {
                                  -      this.onEndFirebugChange(target);
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // CSSModule Listener
                                  -    onCSSInsertRule: function(styleSheet, cssText, ruleIndex) {
                                  -      styleSheet.source = "dispatch";
                                  -      this.recordChange(
                                  -          new Events.css.CSSInsertRuleEvent(
                                  -              styleSheet.cssRules[ruleIndex],
                                  -              Events.ChangeSource.FIREBUG_CHANGE));
                                  -    },
                                  -    onCSSDeleteRule: function(styleSheet, ruleIndex) {
                                  -      styleSheet.source = "dispatch";
                                  -      this.recordChange(
                                  -          new Events.css.CSSRemoveRuleEvent(
                                  -              styleSheet.cssRules[ruleIndex],
                                  -              Events.ChangeSource.FIREBUG_CHANGE));
                                  -    },
                                  -    onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue, prevPriority, parent, baseText) {
                                  -      if (!style.parentRule) {
                                  -        // If we are dealing with an older version of firebug, protect ourselves from this failure and
                                  -        // just drop the change completely
                                  -        if (!parent)
                                  -          return;
                                  -        
                                  -        // This is a change to the inline style of a particular element, handle this.
                                  -        // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679
                                  -        this.recordChange(
                                  -            new Events.dom.DOMAttrChangedEvent(
                                  -                parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText,
                                  -                undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      } else {
                                  -        this.recordChange(
                                  -            new Events.css.CSSSetPropertyEvent(
                                  -                style.parentRule, propName, propValue, propPriority, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      }
                                  -    },
                                  -    
                                  -    onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, parent, baseText) {
                                  -      if (!style.parentRule) {
                                  -        // If we are dealing with an older version of firebug, protect ourselves from this failure and
                                  -        // just drop the change completely
                                  -        if (!parent)
                                  -          return;
                                  -        
                                  -        // This is a change to the inline style of a particular element, handle this.
                                  -        // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679
                                  -        this.recordChange(
                                  -            new Events.dom.DOMAttrChangedEvent(
                                  -                parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText,
                                  -                undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      } else {
                                  -        this.recordChange(
                                  -            new Events.css.CSSRemovePropertyEvent(
                                  -                style.parentRule, propName, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      }
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // HTMLModule Listener
                                  -    onBeginFirebugChange: function(node, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      
                                  -      diffContext.editTarget = node;
                                  -      
                                  -      var rep = Firebug.getRepObject(node) || node;
                                  -      if (rep instanceof Node) {
                                  -        diffContext.editTargetXpath = Path.getElementPath(rep);
                                  -      } else if (rep instanceof CSSRule || rep instanceof StyleSheet) {
                                  -        diffContext.editTargetXpath = Path.getStylePath(rep);
                                  -      } else {
                                  -        diffContext.editTargetXpath = undefined;
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.onBeginFirebugChange", diffContext.editTarget);
                                  -      
                                  -      diffContext.editEvents = [];
                                  -    },
                                  -    
                                  -    onEndFirebugChange: function(node, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModile.onEndFirebugChange: " + node, diffContext.editEvents);
                                  -      
                                  -      var editEvents = diffContext.editEvents;
                                  -      if (editEvents.length) {
                                  -        editEvents = Events.merge(editEvents, true);
                                  -        
                                  -        for (var i = 0; i < editEvents.length; i++) {
                                  -          var change = editEvents[i];
                                  -          // Special case for HTML free edit. It's not pretty but it gets the
                                  -          // job done. In the future we may want to consider executing changes
                                  -          // in the Firebug editors within ignore blocks, and generating events
                                  -          // for the final states, but for now we want to keep the coupling
                                  -          // low
                                  -          function htmlEditChange() {
                                  -            return diffContext.htmlEditPath
                                  -                && diffContext.htmlEditPath[0] <= change.xpath
                                  -                && change.xpath <= diffContext.htmlEditPath[1];
                                  -          }
                                  -          function changeApplies() {
                                  -            return change.appliesTo(Firebug.getRepObject(diffContext.editTarget) || diffContext.editTarget, diffContext.editTargetXpath);
                                  -          }
                                  -          if (htmlEditChange() || changeApplies()) {
                                  -            change.changeSource = Events.ChangeSource.FIREBUG_CHANGE;
                                  -          }
                                  -          this.dispatchChange(change);
                                  -        }
                                  -      }
                                  -      
                                  -      delete diffContext.editTarget;
                                  -      delete diffContext.editTargetXpath;
                                  -      delete diffContext.editEvents;
                                  -      delete diffContext.htmlEditPath;
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Self
                                  -    domEventLogger: function(ev, context) {
                                  -      if (!this.ignoreNode(ev.target)) {
                                  -        var diffContext = this.getDiffContext(context);
                                  -        this.recordChange(
                                  -            Events.dom.createDOMChange(ev, diffContext.changeSource),
                                  -            context);
                                  -      }
                                  -    },
                                  -    charDataChangedEventLogger: function(ev, context) {
                                  -      // Filter out char data events whose parents are a firebug object
                                  -      var filterNode = ev.target.parentNode;
                                  -      if (!this.ignoreNode(ev.target.parentNode)) {
                                  -        this.domEventLogger(ev, context);
                                  -      }
                                  -    },
                                  -    attributeChangedEventLogger: function(ev, context) {
                                  -        // We only care about attributes that actually change or are created or deleted
                                  -        if (ev.attrChange != MutationEvent.MODIFICATION
                                  -                || ev.newValue != ev.prevValue) {
                                  -            this.domEventLogger(ev, context);
                                  -        }
                                  -    },
                                  -    
                                  -    monitorContext: function(context) {
                                  -      if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.monitorContext", context); }
                                  -      var diffContext = this.getDiffContext(context);
                                  -      if (diffContext.eventLogger)    return;
                                  -
                                  -      diffContext.eventLogger = bind(this.domEventLogger, this, context);
                                  -      diffContext.attrEventLogger = bind(this.attributeChangedEventLogger, this, context);
                                  -      diffContext.charDataEventLogger = bind(this.charDataChangedEventLogger, this, context);
                                  -      
                                  -      context.window.addEventListener("DOMNodeInserted", diffContext.eventLogger, true);
                                  -      context.window.addEventListener("DOMNodeRemoved", diffContext.eventLogger, true);
                                  -      context.window.addEventListener("DOMAttrModified", diffContext.attrEventLogger, true);
                                  -      context.window.addEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true);
                                  -    },
                                  -    unmonitorContext: function(context) {
                                  -        if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.unmonitorContext", context); }
                                  -        var diffContext = this.getDiffContext(context);
                                  -        if (!diffContext.eventLogger)    return;
                                  -        
                                  -        context.window.removeEventListener("DOMNodeInserted", diffContext.eventLogger, true);
                                  -        context.window.removeEventListener("DOMNodeRemoved", diffContext.eventLogger, true);
                                  -        context.window.removeEventListener("DOMAttrModified", diffContext.attrEventLogger, true);
                                  -        context.window.removeEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true);
                                  -        
                                  -        delete diffContext.eventLogger;
                                  -        delete diffContext.attrEventLogger;
                                  -        delete diffContext.charDataEventLogger;
                                  -    },
                                  -    
                                  -    ignoreNode: function(node) {
                                  -      // Ignore firebug elements and any top level elements that are not the doc element
                                  -      return node.firebugIgnore
                                  -          || unwrapObject(node).firebugIgnore
                                  -          || (node.className || "").indexOf("firebug") > -1
                                  -          ||        (node.id || "").indexOf("firebug") > -1
                                  -          || (node.hasAttribute && node.hasAttribute("firebugIgnore"));
                                  -    },
                                  -    
                                  -    getHtmlEditorPaths: function(editor) {
                                  -      // Select the xpath update range. This is from the first to after the
                                  -      // last element in the range (or '}' if there is no sibling after that
                                  -      // to simplify the match test)
                                  -      //
                                  -      // This is not 100%, erroring on the side marking app changes as Firebug changes
                                  -      // To fully resolve this, deeper integration with Firebug will be required,
                                  -      // most likely in the form of changes to the editors to use diff ignore
                                  -      // blocks and generate custom events.
                                  -      var elements = editor.editingElements;
                                  -      if (elements) {
                                  -        var nextEl = getNextElement((elements[1] || elements[0]).nextSibling);
                                  -        return [
                                  -                Path.getElementPath(elements[0]),
                                  -                Path.getElementPath(nextEl) || '}'
                                  -            ];
                                  -      }
                                  -    },
                                  -    
                                  -    clearChanges: function(context) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.clearChanges", context);
                                  -      
                                  -      var diffContext = this.getDiffContext(context);
                                  -      diffContext.changes = [];
                                  -      
                                  -      dispatch(this.fbListeners, "onClearChanges", [context || FirebugContext]);
                                  -    },
                                  -    
                                  -    navNextChange: function(context) {
                                  -      dispatch(this.fbListeners, "onNavNextChange", [context || FirebugContext]);
                                  -    },
                                  -    navPrevChange: function(context) {
                                  -      dispatch(this.fbListeners, "onNavPrevChange", [context || FirebugContext]);
                                  -    },
                                  -    
                                  -    ignoreChanges: function(worker, context) {
                                  -      // If no context is available failover. This failover is mostly for testing merges.
                                  -      var diffContext = this.getDiffContext(context) || {};
                                  -      try {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Set ignore changes", context);
                                  -        diffContext.ignore = true;
                                  -        
                                  -        worker();
                                  -      } finally {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Reset ignore changes", context);
                                  -        diffContext.ignore = false;
                                  -      }
                                  -    },
                                  -    firebugChanges: function(worker, context) {
                                  -      // If no context is available failover. This failover is mostly for testing merges.
                                  -      var diffContext = this.getDiffContext(context) || {};
                                  -      try {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Set firebug changes", context);
                                  -        diffContext.changeSource = Events.ChangeSource.FIREBUG_CHANGE;
                                  -        
                                  -        worker();
                                  -      } finally {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Reset firebug changes", context);
                                  -        delete diffContext.changeSource;
                                  -      }
                                  -    },
                                  -    
                                  -    recordChange: function(change, context) {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.recordChange", change);
                                  -        var diffContext = this.getDiffContext(context);
                                  -        
                                  -        // Ignore if a context does not exist, we are in ignore mode, or the context is not attached
                                  -        if (!diffContext || diffContext.ignore || !diffContext.eventLogger)   return;
                                  -        
                                  -        if (!diffContext.editTarget) {
                                  -          this.dispatchChange(change, context);
                                  -        } else {
                                  -          diffContext.editEvents.push(change);
                                  -        }
                                  -    },
                                  -    dispatchChange: function(change, context) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.dispatchChange", change);
                                  -      
                                  -      var diffContext = this.getDiffContext(context);
                                  -      diffContext.changes.push(change);
                                  -      
                                  -      dispatch(this.fbListeners, "onDiffChange", [change, context || FirebugContext]);
                                  -    },
                                  -    
                                  -    getChanges: function(context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      return (diffContext && diffContext.changes) || [];
                                  -    },
                                  -    
                                  -    getDiffContext: function(context) {
                                  -      context = context || FirebugContext;
                                  -      if (!context) {
                                  -        return null;
                                  -      }
                                  -      
                                  -      context.diffContext = context.diffContext || { changes: [] };
                                  -      return context.diffContext;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerActivableModule(Firebug.DiffModule);
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/diffMonitor.js b/branches/flexBox/content/firediff/content/firediff-original/diffMonitor.js
                                  deleted file mode 100644
                                  index 26f6d0dc..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/diffMonitor.js
                                  +++ /dev/null
                                  @@ -1,365 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIDocumentEncoder = Ci.nsIDocumentEncoder;
                                  -const nsIFile = Ci.nsIFile;
                                  -const nsIFileOutputStream = Ci.nsIFileOutputStream;
                                  -const nsIFilePicker = Ci.nsIFilePicker;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const EncoderService = Cc["@mozilla.org/layout/documentEncoder;1?type=text/plain"];
                                  -const FileOutputService = Cc["@mozilla.org/network/file-output-stream;1"];
                                  -const PickerService = Cc["@mozilla.org/filepicker;1"];
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -const PromptService = Cc["@mozilla.org/embedcomp/prompt-service;1"];
                                  -const prompt = PromptService.getService(Ci.nsIPromptService);
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    Reps = FireDiff.reps,
                                  -    Fireformat = {};
                                  -
                                  -try {
                                  -  Components.utils.import("resource://fireformat/formatters.jsm", Fireformat);
                                  -} catch (err) {
                                  -}
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -var Panel = Firebug.ActivablePanel || Firebug.Panel;
                                  -
                                  -function DiffMonitor() {}
                                  -DiffMonitor.prototype = extend(Panel, {
                                  -    name: "firediff",
                                  -    title: i18n.getString("title.diffMonitor"),
                                  -    statusSeparator: ">",
                                  -    searchable: true,
                                  -    
                                  -    initializeNode: function(panelNode) {
                                  -      if (Firebug.DiffModule.addListener) {
                                  -        Firebug.DiffModule.addListener(this);
                                  -      }
                                  -      
                                  -      this.addStyleSheet(this.document, "chrome://firediff/skin/firediff.css", "fireDiffCss");
                                  -      this.applyDisplayPrefs();
                                  -      
                                  -      if (Firebug.DiffModule.supportsFirebugEdits) {
                                  -        prefs.addObserver(Firebug.prefDomain, this, false);
                                  -      }
                                  -    },
                                  -    
                                  -    show: function(state) {
                                  -      if (Firebug.version < "1.4") {
                                  -        this.panelNode.innerHTML = i18n.getString("warning.firebugVersion");
                                  -        return;
                                  -      }
                                  -      
                                  -      var enabled = Firebug.DiffModule.isAlwaysEnabled();
                                  -      if (enabled) {
                                  -           Firebug.DiffModule.disabledPanelPage.hide(this);
                                  -
                                  -           this.showToolbarButtons("fbDiffMonitorButtons", true);
                                  -           $("cmd_copy").setAttribute("disabled", true);
                                  -
                                  -           if (!this.selection) {
                                  -             this.select(this.getDefaultSelection());
                                  -           }
                                  -      } else {
                                  -          this.hide();
                                  -          Firebug.DiffModule.disabledPanelPage.show(this);
                                  -      }
                                  -    },
                                  -    enablePanel: function(module) {
                                  -      Panel.enablePanel.apply(this, arguments);
                                  -      this.show();
                                  -    },
                                  -    disablePanel: function(module) {
                                  -      Panel.disablePanel.apply(this, arguments);
                                  -      this.hide();
                                  -    },
                                  -    hide: function(state) {
                                  -      this.showToolbarButtons("fbDiffMonitorButtons", false);
                                  -      $("cmd_copy").removeAttribute("disabled");
                                  -
                                  -      var panelStatus = Firebug.chrome.getPanelStatusElements();
                                  -      panelStatus.clear(); // clear stack on status bar
                                  -      this.selection = undefined;
                                  -    },
                                  -
                                  -    addStyleSheet: function(doc, uri, id) {
                                  -        // Make sure the stylesheet isn't appended twice. 
                                  -        if ($(id, doc))   return;
                                  -
                                  -        var styleSheet = createStyleSheet(doc, uri);
                                  -        styleSheet.setAttribute("id", id);
                                  -        addStyleSheet(doc, styleSheet);
                                  -    },
                                  -    getOptionsMenuItems: function(context) {
                                  -      var ret = [];
                                  -      if (Firebug.DiffModule.supportsFirebugEdits) {
                                  -        ret.push(
                                  -            this.optionsMenu("option.showAppChanges", "firediff.displayAppChanges"),
                                  -            this.optionsMenu("option.showFirebugChanges", "firediff.displayFirebugChanges"),
                                  -            "-"
                                  -        );
                                  -      }
                                  -      ret.push({
                                  -          label: i18n.getString("option.formatterOptions"),
                                  -          nol10n: true,
                                  -          command: bindFixed(this.showFormatterOptions, this)
                                  -      });
                                  -      
                                  -      return ret;
                                  -    },
                                  -    optionsMenu: function(label, option) {
                                  -      var value = Firebug.getPref(Firebug.prefDomain, option);
                                  -      return {
                                  -          label: i18n.getString(label),
                                  -          nol10n: true,
                                  -          type: "checkbox",
                                  -          checked: value,
                                  -          command: bindFixed(Firebug.setPref, this, Firebug.prefDomain, option, !value)
                                  -      };
                                  -    },
                                  -    showFormatterOptions: function() {
                                  -      // See cmd_options in extensions.js
                                  -      var features= "chrome,titlebar,toolbar,centerscreen,";
                                  -      try {
                                  -        var instantApply = gPref.getBoolPref("browser.preferences.instantApply");
                                  -        features += (instantApply ? "dialog=no" : "modal");
                                  -      } catch (e) {
                                  -        features += "modal";
                                  -      }
                                  -      window.openDialog("chrome://fireformat/content/options.xul", "", features);
                                  -    },
                                  -    
                                  -    selectSnapshot: function(change) {
                                  -      try {
                                  -        // We run this here to defer change processing
                                  -        this.select(change.getSnapshot(this.context));
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    revertAllChanges: function(change) {
                                  -      try {
                                  -        Firebug.DiffModule.revertAllChanges(change, this.context);
                                  -        this.updateSelection(this.lastSel);
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    revertChange: function(change) {
                                  -      try {
                                  -        var dontPrompt = this.isDontPromptOnMultipleRevert();
                                  -        var ret = Firebug.DiffModule.revertChange(change, this.context, dontPrompt);
                                  -        if (!ret) {
                                  -          var checked = { value: false };
                                  -          var button = prompt.confirmCheck(
                                  -              null,
                                  -              i18n.getString("prompt.title.MultipleRevert"),
                                  -              i18n.getString("prompt.text.MultipleRevert"),
                                  -              i18n.getString("prompt.dontAskAgain"),
                                  -              checked);
                                  -          if (!button) {
                                  -            return;
                                  -          }
                                  -
                                  -          // Save the pref value
                                  -          Firebug.setPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt", checked.value);
                                  -
                                  -          // Perform a forced revert
                                  -          Firebug.DiffModule.revertChange(change, this.context, true);
                                  -        }
                                  -
                                  -        this.updateSelection(this.lastSel);
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    saveSnapshot: function(change) {
                                  -      var file = this.promptForFileName(i18n.getString("menu.SaveSnapshot"), change.changeType);
                                  -      if (file) {
                                  -        var snapshot = change.getSnapshot(this.context);
                                  -        this.writeString(file, snapshot.getText());
                                  -      }
                                  -    },
                                  -    saveDiff: function(change) {
                                  -      try {
                                  -        var file = this.promptForFileName(i18n.getString("menu.SaveDiff"), "diff");
                                  -        if (file) {
                                  -          var snapshot = change.getSnapshot(this.context),
                                  -              base = change.getBaseSnapshot(this.context),
                                  -              snapshotText = snapshot.getText(),
                                  -              baseText = base.getText(),
                                  -              diff = JsDiff.createPatch(
                                  -                  change.getDocumentName(this.context),
                                  -                  baseText, snapshotText,
                                  -                  i18n.getString("diff.baseFile"), i18n.getString("diff.snapshot"));
                                  -  
                                  -          this.writeString(file, diff);
                                  -        }
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err, err);
                                  -      }
                                  -    },
                                  -
                                  -
                                  -    promptForFileName: function(caption, mode) {
                                  -      var picker = PickerService.createInstance(nsIFilePicker);
                                  -      picker.init(window, caption, nsIFilePicker.modeSave);
                                  -      if (mode == "DOM") {
                                  -        picker.appendFilters(nsIFilePicker.filterHTML);
                                  -        picker.defaultExtension = "html";
                                  -      } else if (mode == "CSS") {
                                  -        picker.appendFilter(i18n.getString("prompt.cssFiles"), "*.css");
                                  -        picker.defaultExtension = "css";
                                  -      } else if (mode == "diff") {
                                  -        picker.appendFilter(i18n.getString("prompt.diffFiles"), "*.diff");
                                  -        picker.defaultExtension = "diff";
                                  -      }
                                  -      picker.appendFilters(nsIFilePicker.filterText);
                                  -      picker.appendFilters(nsIFilePicker.filterAll);
                                  -      var ret = picker.show();
                                  -      if ((ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) && picker.file) {
                                  -        return picker.file;
                                  -      }
                                  -    },
                                  -    writeString: function(file, string) {
                                  -      var outputStream = FileOutputService.createInstance(nsIFileOutputStream);
                                  -      outputStream.init(file, -1, -1, 0);   // Default mode and permissions
                                  -
                                  -      // The Document encoder handles all of the heavy lifting here: encoding and line break conversion
                                  -      var serializer = EncoderService.createInstance(nsIDocumentEncoder);
                                  -      serializer.init(document, "text/plain", nsIDocumentEncoder.OutputPreformatted);
                                  -      serializer.setCharset("UTF-8");
                                  -      serializer.setNode(document.createTextNode(string));
                                  -      serializer.encodeToStream(outputStream);
                                  -
                                  -      outputStream.close();
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target) {
                                  -      if (this.selection == Reps.Monitor) {
                                  -        var ret = [
                                  -           { label: i18n.getString("menu.ChangeSnapshot"), command: bindFixed(this.selectSnapshot, this, object), nol10n: true },
                                  -           "-"
                                  -        ];
                                  -
                                  -        if (Fireformat.Formatters) {
                                  -          ret.push({ label: i18n.getString("menu.SaveSnapshot"), command: bindFixed(this.saveSnapshot, this, object), nol10n: true });
                                  -          ret.push({ label: i18n.getString("menu.SaveDiff"), command: bindFixed(this.saveDiff, this, object), nol10n: true });
                                  -          ret.push("-");
                                  -        }
                                  -
                                  -        ret.push({ label: i18n.getString("menu.RevertChange"), command: bindFixed(this.revertChange, this, object), nol10n: true });
                                  -        ret.push({ label: i18n.getString("menu.RevertAllChanges"), command: bindFixed(this.revertAllChanges, this, object), nol10n: true });
                                  -        return ret;
                                  -      }
                                  -    },
                                  -    
                                  -    getDefaultSelection: function(object) {
                                  -      return Reps.Monitor;
                                  -    },
                                  -    updateSelection: function(object) {
                                  -      clearNode(this.panelNode);
                                  -      
                                  -      if (this.lastSel && this.lastSel.hide) {
                                  -        this.lastSel.hide(this);
                                  -      }
                                  -      
                                  -      object.show(this);
                                  -      this.showToolbarButtons("fbDiffSnapshotNav", !!object.showNext);
                                  -      this.lastSel = object;
                                  -    },
                                  -    
                                  -    getObjectPath: function(object) {
                                  -      var ret = [ Reps.Monitor ];
                                  -      if (Reps.DOMSnapshotRep.supportsObject(object)
                                  -          || Reps.CSSSnapshotRep.supportsObject(object)) {
                                  -        ret.push(object);
                                  -      }
                                  -      return ret;
                                  -    },
                                  -    supportsObject: function(object) {
                                  -      if (Reps.MonitorRep.supportsObject(object)
                                  -          || Reps.DOMSnapshotRep.supportsObject(object)
                                  -          || Reps.CSSSnapshotRep.supportsObject(object))
                                  -        return 1000;
                                  -      return 0;
                                  -    },
                                  -
                                  -    search: function(text, reverse) {
                                  -      if (this.selection.search) {
                                  -        return this.selection.search(text, reverse, this);
                                  -      }
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -      // We're observing preferences only.
                                  -      if (topic != "nsPref:changed")
                                  -        return;
                                  -
                                  -      var prefName = data.substr(Firebug.prefDomain.length + 1);
                                  -      if (prefName == "firediff.displayAppChanges"
                                  -          || prefName == "firediff.displayFirebugChanges") {
                                  -        this.applyDisplayPrefs();
                                  -      }
                                  -    },
                                  -    
                                  -    applyDisplayPrefs: function() {
                                  -      this.applyDisplayPref("firediff.displayAppChanges", "showAppChanges", !Firebug.DiffModule.supportsFirebugEdits);
                                  -      this.applyDisplayPref("firediff.displayFirebugChanges", "showFirebugChanges");
                                  -    },
                                  -    applyDisplayPref: function(prefName, cssName, force) {
                                  -      if (force || Firebug.getPref(Firebug.prefDomain, prefName)) {
                                  -        setClass(this.panelNode, cssName);
                                  -      } else {
                                  -        removeClass(this.panelNode, cssName);
                                  -      }
                                  -    },
                                  -    isDisplayAppChanges: function() {
                                  -      return Firebug.getPref(Firebug.prefDomain, "firediff.displayAppChanges");
                                  -    },
                                  -    isDisplayFirebugChanges: function() {
                                  -      return Firebug.getPref(Firebug.prefDomain, "firediff.displayFirebugChanges");
                                  -    },
                                  -    isDontPromptOnMultipleRevert: function() {
                                  -      return !!Firebug.getPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt");
                                  -    },
                                  -    
                                  -    onDiffChange: function(change, context) {
                                  -      if (this.context != context || !this.selection)    return;
                                  -      
                                  -      // this.selection could be null if an event occurs before we are displayed
                                  -      if (this.selection.onChange) {
                                  -        this.selection.onChange(change, this);
                                  -      }
                                  -    },
                                  -    onClearChanges: function(context) {
                                  -      if (this.context != context)    return;
                                  -      
                                  -      if (this.panelNode) {
                                  -        clearNode(this.panelNode);
                                  -      }
                                  -    },
                                  -    onNavNextChange: function(context) {
                                  -      if (this.selection.showNext) {
                                  -        this.selection.showNext();
                                  -      }
                                  -    },
                                  -    onNavPrevChange: function(context) {
                                  -      if (this.selection.showPrev) {
                                  -        this.selection.showPrev();
                                  -      }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(DiffMonitor);
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/domEvents.js b/branches/flexBox/content/firediff/content/firediff-original/domEvents.js
                                  deleted file mode 100644
                                  index f089550d..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/domEvents.js
                                  +++ /dev/null
                                  @@ -1,446 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -var Path = FireDiff.Path,
                                  -  Reps = FireDiff.reps,
                                  -  ChangeEvent = FireDiff.events.ChangeEvent,
                                  -  
                                  -  CHANGES = FireDiff.events.AnnotateAttrs.CHANGES,
                                  -  ATTR_CHANGES = FireDiff.events.AnnotateAttrs.ATTR_CHANGES,
                                  -  REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES;
                                  -
                                  -function DOMChangeEvent(target, xpath, displayXPath, changeSource) {
                                  -  ChangeEvent.call(this, changeSource);
                                  -  this.changeType = "DOM";
                                  -  this.xpath = xpath || Path.getElementPath(target);
                                  -  this.displayXPath = displayXPath || Path.getElementPath(target, true);
                                  -  
                                  -  // Store this just to create a mostly accurate repobject link. This shouldn't be used otherwise
                                  -  this.target = target;
                                  -}
                                  -DOMChangeEvent.prototype = extend(ChangeEvent.prototype, {
                                  -    sameFile: function(target) {
                                  -      return this.target.ownerDocument == target.ownerDocument
                                  -          || (target.target && this.target.ownerDocument == target.target.ownerDocument);
                                  -    },
                                  -    getSnapshot: function(context) {
                                  -      return new Reps.DOMSnapshot(this, context.window.document);
                                  -    },
                                  -    getBaseSnapshot: function(context) {
                                  -      return new Reps.DOMSnapshot(null, context.window.document);
                                  -    },
                                  -    getDocumentName: function() {
                                  -      return this.target.ownerDocument.URL;
                                  -    },
                                  -    
                                  -    getXpath: function(target) { return Path.getElementPath(target); },
                                  -    xpathLookup: function(xpath, root) {
                                  -      var iterate = (root.ownerDocument || root).evaluate(xpath, root, null, XPathResult.ANY_TYPE, null);
                                  -      return iterate.iterateNext();
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getActionNode(tree, root);
                                  -      if (!actionNode) {
                                  -        if (FBTrace.DBG_ERRORS) {
                                  -          FBTrace.sysout("ERROR: annotateTree: actionNode is undefined tree: " + root, tree);
                                  -          FBTrace.sysout("annotateTree: change", this);
                                  -        }
                                  -      }
                                  -      actionNode[CHANGES] = this;
                                  -
                                  -      if (actionNode.nodeType == Node.TEXT_NODE) {
                                  -        return this;
                                  -      } else {
                                  -        return actionNode;
                                  -      }
                                  -    }
                                  -});
                                  -
                                  -function DOMInsertedEvent(target, clone, xpath, displayXPath, changeSource) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  this.clone = clone || target.cloneNode(true);
                                  -
                                  -  if (target instanceof Text) {
                                  -    this.previousValue = "";
                                  -    this.value = target.data;
                                  -  }
                                  -}
                                  -DOMInsertedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "dom_inserted",
                                  -    
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMInserted");
                                  -    },
                                  -    isElementAdded: function() { return true; },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getInsertActionNode(target, xpath);
                                  -            
                                  -            actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (actionNode) {
                                  -              actionNode.parentNode.removeChild(actionNode);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      // Only changes that affect us are:
                                  -      // - Remove on same xpath (Overrides)
                                  -      // - Modification of self (by attr or char data change)
                                  -      // - Any modification of children
                                  -      // - XPath updates
                                  -      
                                  -      var updateXPath = candidate.getMergedXPath(this);
                                  -      
                                  -      // Self and Child modification
                                  -      if (Path.isChild(this.xpath, candidate.xpath)
                                  -          || (!updateXPath && this.xpath == candidate.xpath)) {
                                  -        // Something changed without our own tree, apply those changes and call
                                  -        // it a day
                                  -        var clone = this.clone.cloneNode(true);   // Yeah..... <Clone, Clone, Clone, ...>
                                  -        candidate.apply(clone, this.xpath);
                                  -        
                                  -        return [new DOMInsertedEvent(this.target, clone, this.xpath, this.displayXPath, this.changeSource)];
                                  -      }
                                  -      
                                  -      // XPath modification
                                  -      if (!simplifyOnly && updateXPath) {
                                  -        return [
                                  -                this.cloneOnXPath(updateXPath),
                                  -                candidate
                                  -            ];
                                  -      }
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // On revert we want to
                                  -      //  - Revert any changes made on this object or a child
                                  -      if (Path.isChildOrSelf(this.xpath, candidate.xpath)) {
                                  -        var ret = this.merge(candidate);
                                  -        if (ret) {
                                  -          return ret;
                                  -        }
                                  -        
                                  -        // XPath modification
                                  -        var updateXPath = candidate.getMergedXPath(this);
                                  -        if (updateXPath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXPath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return candidate.overridesChange(this) && this.xpath == candidate.xpath;
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return Path.isChildOrSelf(this.xpath, candidate.xpath);
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMInsertedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource);
                                  -    }
                                  -});
                                  -function DOMRemovedEvent(target, clone, xpath, displayXPath, changeSource) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  this.clone = clone || target.cloneNode(true);
                                  -
                                  -  if (target instanceof Text) {
                                  -    this.value = "";
                                  -    this.previousValue = target.data;
                                  -  }
                                  -}
                                  -DOMRemovedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "dom_removed",
                                  -    
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMRemoved");
                                  -    },
                                  -    isElementRemoved: function() { return true; },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.parentNode.removeChild(actionNode);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getInsertActionNode(target, xpath);
                                  -            
                                  -            actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling);
                                  -          }, this));
                                  -    },
                                  -    
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (Path.isChild(this.xpath, candidate.xpath)) {
                                  -        // If this is a child WRT to xpath, we don't touch it.
                                  -        return undefined;
                                  -      }
                                  -      
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // The only thing that a delete might revert is an insert operation
                                  -      // of its identity
                                  -      if (this.isCancellation(candidate)) {
                                  -        return [];
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && candidate.isElementAdded()
                                  -          && this.clone.isEqualNode(candidate.clone);
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.isCancellation(candidate);
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMRemovedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource);
                                  -    },
                                  -
                                  -    overridesChange: function(prior) {
                                  -      return (!prior.isElementRemoved() && this.xpath == prior.xpath)
                                  -          || Path.isChild(this.xpath, prior.xpath);
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getInsertActionNode(tree, root).parent;
                                  -      var list = actionNode[REMOVE_CHANGES] || [],
                                  -          i = list.length;
                                  -      while (i > 0 && Path.compareXPaths(this.xpath, list[i-1].xpath) < 0) {
                                  -        i--;
                                  -      }
                                  -      list.splice(i, 0, this);
                                  -      actionNode[REMOVE_CHANGES] = list;
                                  -      
                                  -      this.clone.change = this;
                                  -      
                                  -      return this;
                                  -    }
                                  -});
                                  -
                                  -
                                  -function DOMAttrChangedEvent(target, attrChange, attrName, newValue, prevValue, xpath, displayXPath, changeSource, clone) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  
                                  -  this.attrChange = attrChange;
                                  -  this.attrName = attrName;
                                  -  this.previousValue = prevValue;
                                  -  this.value = newValue;
                                  -  
                                  -  this.clone = clone || target.cloneNode(false);
                                  -}
                                  -DOMAttrChangedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "attr_changed",
                                  -    getSummary: function() {
                                  -      if (this.attrChange == MutationEvent.MODIFICATION) {
                                  -        return i18n.getString("summary.DOMAttrChanged");
                                  -      } else if (this.attrChange == MutationEvent.ADDITION) {
                                  -        return i18n.getString("summary.DOMAttrAddition");
                                  -      } else if (this.attrChange == MutationEvent.REMOVAL) {
                                  -        return i18n.getString("summary.DOMAttrRemoval");
                                  -      }
                                  -    },
                                  -    isAddition: function() { return this.attrChange == MutationEvent.ADDITION; },
                                  -    isRemoval: function() { return this.attrChange == MutationEvent.REMOVAL; },
                                  -    
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (this.subType != candidate.subType
                                  -              || this.xpath != candidate.xpath
                                  -              || this.attrName != candidate.attrName) {
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -        return;
                                  -      }
                                  -
                                  -      var attrChange = this.attrChange;
                                  -      if (candidate.attrChange == MutationEvent.REMOVAL) {
                                  -        attrChange = candidate.attrChange;
                                  -      } else if (this.attrChange == MutationEvent.REMOVAL) {
                                  -        attrChange = MutationEvent.MODIFICATION;
                                  -      }
                                  -      return [
                                  -        new DOMAttrChangedEvent(
                                  -            this.target,
                                  -            attrChange, this.attrName,
                                  -            candidate.value, this.previousValue,
                                  -            this.xpath, this.displayXPath, this.changeSource, this.clone)
                                  -      ];
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMAttrChangedEvent(
                                  -          this.target,
                                  -          this.attrChange, this.attrName,
                                  -          this.value, this.previousValue,
                                  -          xpath, this.displayXPath, this.changeSource, this.clone);
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // On revert we want to
                                  -      //  - Revert any changes made on this exact attr
                                  -      if (this.xpath == candidate.xpath && this.attrName == candidate.attrName) {
                                  -        return this.merge(candidate);
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.attrName == candidate.attrName
                                  -          && (this.previousValue == candidate.value
                                  -              || (this.attrChange == MutationEvent.ADDITION
                                  -                  && candidate.attrChange == MutationEvent.REMOVAL));
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.attrName == candidate.attrName;
                                  -    },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (this.attrChange == MutationEvent.REMOVAL) {
                                  -              actionNode.removeAttribute(this.attrName);
                                  -            } else if (this.attrChange == MutationEvent.ADDITION
                                  -                || this.attrChange == MutationEvent.MODIFICATION) {
                                  -              actionNode.setAttribute(this.attrName, this.value);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (this.attrChange == MutationEvent.ADDITION) {
                                  -              actionNode.removeAttribute(this.attrName);
                                  -            } else if (this.attrChange == MutationEvent.REMOVAL
                                  -                || this.attrChange == MutationEvent.MODIFICATION) {
                                  -              actionNode.setAttribute(this.attrName, this.previousValue);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getActionNode(tree, root);
                                  -      var list = actionNode[ATTR_CHANGES] || {};
                                  -      list[this.attrName] = this;
                                  -      actionNode[ATTR_CHANGES] = list;
                                  -      
                                  -      return actionNode;
                                  -    }
                                  -});
                                  -
                                  -function DOMCharDataModifiedEvent(target, newValue, prevValue, xpath, displayXPath, changeSource, clone) {
                                  -    DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -    
                                  -    this.previousValue = prevValue;
                                  -    this.value = newValue;
                                  -    
                                  -    this.clone = clone || target.cloneNode(false);
                                  -}
                                  -DOMCharDataModifiedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "char_data_modified",
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMCharDataModified");
                                  -    },
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (this.subType != candidate.subType
                                  -              || this.xpath != candidate.xpath) {
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -        return undefined;
                                  -      }
                                  -      
                                  -      return [ new DOMCharDataModifiedEvent(this.target, candidate.value, this.previousValue, this.xpath, this.displayXPath, this.changeSource, this.clone) ];
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      if (this.xpath == candidate.xpath) {
                                  -        return this.merge(candidate);
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType == candidate.subType
                                  -          && this.previousValue == candidate.value;
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType == candidate.subType;
                                  -    },
                                  -
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMCharDataModifiedEvent(
                                  -          this.target, this.value, this.previousValue, xpath, this.displayXPath, this.changeSource, this.clone);
                                  -    },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.replaceData(0, actionNode.length, this.value);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.replaceData(0, actionNode.length, this.previousValue);
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -FireDiff.events.dom = {
                                  -    DOMInsertedEvent: DOMInsertedEvent,
                                  -    DOMRemovedEvent: DOMRemovedEvent,
                                  -    DOMAttrChangedEvent: DOMAttrChangedEvent,
                                  -    DOMCharDataModifiedEvent: DOMCharDataModifiedEvent,
                                  -    
                                  -    createDOMChange: function(ev, changeSource) {
                                  -      switch (ev.type) {
                                  -      case "DOMNodeInserted":
                                  -      case "DOMNodeInsertedInfoDocument":
                                  -        return new DOMInsertedEvent(ev.target, undefined, undefined, undefined, changeSource);
                                  -      case "DOMNodeRemoved":
                                  -      case "DOMNodeRemovedFromDocument":
                                  -        return new DOMRemovedEvent(ev.target, undefined, undefined, undefined, changeSource);
                                  -      case "DOMAttrModified":
                                  -        return new DOMAttrChangedEvent(ev.target, ev.attrChange, ev.attrName, ev.newValue, ev.prevValue, undefined, undefined, changeSource);
                                  -      case "DOMCharacterDataModified":
                                  -        return new DOMCharDataModifiedEvent(ev.target, ev.newValue, ev.prevValue, undefined, undefined, changeSource);
                                  -      }
                                  -    }
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/domplate.js b/branches/flexBox/content/firediff/content/firediff-original/domplate.js
                                  deleted file mode 100644
                                  index 042ac1c0..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/domplate.js
                                  +++ /dev/null
                                  @@ -1,654 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -FireDiff.domplate = {};
                                  -
                                  -FBL.ns(function() {
                                  -(function () { with(FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -const Events = FireDiff.events,
                                  -      Path = FireDiff.Path,
                                  -      CSSModel = FireDiff.CSSModel,
                                  -      VersionCompat = FireDiff.VersionCompat,
                                  -      Search = FireDiff.search;
                                  -
                                  -var DomUtil = {
                                  -  diffText: function(change) {
                                  -    function getText(value) {
                                  -      return Firebug.showWhitespaceNodes ? value : value.replace(/(?:^\s+)|(?:\s+$)/g, "");
                                  -    }
                                  -
                                  -    var diffChanges = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    if (diffChanges.changeType) {
                                  -      return JsDiff.diffWords(getText(diffChanges.previousValue), getText(diffChanges.value));
                                  -    } else {
                                  -      return [{ value: getText(change.nodeValue) }];
                                  -    }
                                  -  },
                                  -  diffAttr: function(attr) {
                                  -    if (attr.change) {
                                  -      if (attr.localName == "style") {
                                  -        return JsDiff.diffCss(attr.change.previousValue, attr.change.value);
                                  -      } else {
                                  -        return JsDiff.diffWords(attr.change.previousValue, attr.change.value);
                                  -      }
                                  -    } else {
                                  -        return [ { value: attr.nodeValue } ];
                                  -    }
                                  -  },
                                  -  isEmptyElement: function(element) {
                                  -    return !element.firstChild && !element[Events.AnnotateAttrs.REMOVE_CHANGES];
                                  -  },
                                  -
                                  -  isPureText: function(element) {
                                  -    for (var child = element.firstChild; child; child = child.nextSibling) {
                                  -      if (child.nodeType == Node.ELEMENT_NODE) {
                                  -        return false;
                                  -      }
                                  -    }
                                  -    var removeChanges = element[Events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -    for (var i = 0; i < removeChanges.length; i++) {
                                  -      if (removeChanges[i].clone.nodeType == Node.ELEMENT_NODE) {
                                  -        return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  },
                                  -
                                  -  isWhitespaceText: function(node) {
                                  -    return VersionCompat.isWhitespaceText(node.clone || node);
                                  -  },
                                  -
                                  -  isSourceElement: VersionCompat.isSourceElement
                                  -};
                                  -this.DomUtil = DomUtil;
                                  -
                                  -// Common Domplates
                                  -/**
                                  - * Pretty print attribute list.
                                  - * 
                                  - * Represents a list of attributes as well as any changes that have been applies
                                  - * to these attributes.
                                  - * 
                                  - * Parameter:
                                  - *   change: Change object that we are displaying
                                  - */
                                  -var attributeList = domplate({
                                  -  tag: FOR("attr", "$change|attrIterator", TAG("$attr|getAttrTag", {attr: "$attr"})),
                                  -  attributeDiff:
                                  -      SPAN({class: "nodeAttr", $removedClass: "$attr|isAttrRemoved", $addedClass: "$attr|isAttrAdded",
                                  -        $firebugDiff: "$attr|isFirebugDiff", $appDiff: "$attr|isAppDiff"},
                                  -          "&nbsp;",
                                  -          SPAN({class: "nodeName"}, "$attr.localName"), "=&quot;",
                                  -          SPAN({class: "nodeValue"}, 
                                  -              FOR("block", "$attr|diffAttr",
                                  -                      SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value"))
                                  -          ),
                                  -          "&quot;"
                                  -     ),
                                  -  
                                  -  getAttrTag: function(attr) {
                                  -      return this.attributeDiff;
                                  -  },
                                  -
                                  -  attrIterator: function(change) {
                                  -    return Search.getAttributes(change);
                                  -  },
                                  -
                                  -  isAttrAdded: function(attr) {
                                  -      return attr.change && attr.change.isAddition();
                                  -  },
                                  -  isAttrRemoved: function(attr) {
                                  -      return attr.change && attr.change.isRemoval();
                                  -  },
                                  -  isFirebugDiff: function(attr) {
                                  -    return attr.change && attr.change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(attr) {
                                  -    return attr.change && attr.change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  },
                                  -  diffAttr: function(attr) {
                                  -    return DomUtil.diffAttr(attr);
                                  -  }
                                  -});
                                  -
                                  -var propertyDefinition = domplate({
                                  -  tag: 
                                  -    DIV({class: "cssPropDiff"},
                                  -      SPAN({$removedClass: "$change|isPropRemoved", $addedClass: "$change|isPropAdded"},
                                  -        SPAN({class: "cssPropName"}, "$change.propName"),
                                  -        SPAN({class: "cssColon"}, ":"),
                                  -        SPAN({class: "cssPropValue"},
                                  -          FOR("block", "$change|diffProp",
                                  -            SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")),
                                  -          SPAN({$removedClass: "$change|isPriorityRemoved", $addedClass: "$change|isPriorityAdded"},
                                  -            "$change|getPriorityText")
                                  -        ),
                                  -        SPAN({class: "cssSemi"}, ";")
                                  -    )),
                                  -  
                                  -  diffProp: function(change) {
                                  -      return JsDiff.diffCss(change.prevValue, change.propValue);
                                  -  },
                                  -  isPropAdded: function(change) { return !change.prevValue; },
                                  -  isPropRemoved: function(change) { return !change.propValue; },
                                  -  
                                  -  getPriorityText: function(change) {
                                  -    var important = change.propPriority || change.prevPriority;
                                  -    return important ? (" !" + important) : "";
                                  -  },
                                  -  isPriorityAdded: function(change) { return !change.prevPriority; },
                                  -  isPriorityRemoved: function(change) { return !change.propPriority; }
                                  -});
                                  -
                                  -// Diff Monitor Domplates
                                  -// TODO : Allow replink in the monitor case
                                  -var textChanged = domplate(FirebugReps.TextNode, {
                                  -  tag: SPAN(
                                  -      {class: "textDiff", $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"},
                                  -        FOR("block", "$change|diffText",
                                  -            SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")
                                  -        )),
                                  -  diffText: function(change) {
                                  -    return DomUtil.diffText(change);
                                  -  },
                                  -  isElementAdded: function(change) {
                                  -    change = change || change[FireDiff.events.AnnotateAttrs.CHANGES];
                                  -    return change && change.isElementAdded && change.isElementAdded();
                                  -  },
                                  -  isElementRemoved: function(change) {
                                  -    change = change || change[FireDiff.events.AnnotateAttrs.CHANGES];
                                  -    return change && change.isElementRemoved && change.isElementRemoved();
                                  -  }
                                  -});
                                  -
                                  -this.TextChanged = textChanged;
                                  -
                                  -// Displays a rep link to an element that has changed.
                                  -// 
                                  -// These changes are primarily attribute and insertion changes
                                  -// TODO : Attempt to merge this with the domplate defined below
                                  -this.ElementChanged = domplate(FirebugReps.Element, {
                                  -    tag: FirebugReps.OBJECTLINK(
                                  -        {$removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"},
                                  -        "&lt;",
                                  -        SPAN({class: "nodeTag"}, "$change.clone.localName|toLowerCase"),
                                  -        TAG(attributeList.tag, {change: "$change"}),
                                  -        "&gt;"
                                  -    ),
                                  -    isElementAdded: function(change) {
                                  -        return change.isElementAdded();
                                  -    },
                                  -    isElementRemoved: function(change) {
                                  -        return change.isElementRemoved();
                                  -    }
                                  -});
                                  -
                                  -// All Changes Domplates
                                  -var ChangeElement = extend(FirebugReps.Element, {
                                  -  removedChanges: function(node) {
                                  -    return node[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -  },
                                  -  
                                  -  getElementName: function(change) {
                                  -    // TODO : XML Handling
                                  -    change = change.clone || change;
                                  -    return (change.localName || "").toLowerCase();
                                  -  },
                                  -  isElementAdded: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change && change.isElementAdded && change.isElementAdded();
                                  -  },
                                  -  isElementRemoved: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change && change.isElementRemoved && change.isElementRemoved();
                                  -  },
                                  -  isFirebugDiff: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  }
                                  -});
                                  -
                                  -var ParentChangeElement = extend(ChangeElement, {
                                  -  childIterator: function(node) {
                                  -    node = node.clone || node;
                                  -    if (node.contentDocument)
                                  -      // TODO : Should this use contentDocument.childNodes?
                                  -      return [node.contentDocument.documentElement];
                                  -    
                                  -    function includeChild(child) {
                                  -      return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child);
                                  -    }
                                  -    return new Search.RemovedIterator(new Search.DOMIterator(node), this.removedChanges(node), includeChild);
                                  -  }
                                  -});
                                  -
                                  -var allChanges = {
                                  -    getNodeTag: function(node, inline) {
                                  -      if (node instanceof Element) {
                                  -        if (node instanceof HTMLAppletElement)
                                  -          return allChanges.EmptyElement.tag;
                                  -        else if (node.firebugIgnore)
                                  -          return null;
                                  -        else if (DomUtil.isEmptyElement(node))
                                  -          return allChanges.EmptyElement.tag;
                                  -        else if (!DomUtil.isSourceElement(node) && DomUtil.isPureText(node))
                                  -          return allChanges.TextElement.tag;
                                  -        else
                                  -          return allChanges.Element.tag;
                                  -      }
                                  -      else if (node instanceof CDATASection)  // Must occur before instanceof Text
                                  -        return allChanges.CDATANode.tag;
                                  -      else if (node instanceof Text)
                                  -        return inline ? allChanges.InlineTextNode.tag : allChanges.TextNode.tag;
                                  -      else if (node instanceof ProcessingInstruction)
                                  -        return allChanges.ProcessingInstruction.tag;
                                  -      else if (node instanceof Comment && Firebug.showCommentNodes)
                                  -        return allChanges.CommentNode.tag;
                                  -      else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -      else if (node instanceof Document)
                                  -        return allChanges.Document.tag;
                                  -      else if (node instanceof DocumentType)
                                  -        return allChanges.DocType.tag;
                                  -      else if (node instanceof DocumentFragment)
                                  -        return allChanges.Document.tag;
                                  -      else
                                  -        return FirebugReps.Nada.tag;
                                  -    },
                                  -
                                  -    Document: domplate(ParentChangeElement, {
                                  -      tag:
                                  -        DIV({class: "nodeBox containerNodeBox repIgnore", _repObject: "$change" }, DIV({class: "nodeChildBox"}))
                                  -    }),
                                  -
                                  -    DocType: domplate(ChangeElement, {
                                  -      tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -        $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -        $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -      DIV({class: "nodeLabel"},
                                  -        SPAN({class: "nodeLabelBox repTarget"},
                                  -          "&lt;!DOCTYPE&nbsp;",
                                  -          SPAN({class: "nodeTag"}, "$change|getDocTypeName"),
                                  -
                                  -          SPAN({$collapsed: "$change|hidePublicId"}, "&nbsp;PUBLIC&nbsp;"),
                                  -          SPAN({class: "nodeValue", $collapsed: "$change|hidePublicId"}, "&quot;", "$change|getPublicId", "&quot;"),
                                  -
                                  -          SPAN({$collapsed: "$change|hideSystemIdTag"}, "&nbsp;SYSTEM&nbsp;"),
                                  -          SPAN({class: "nodeValue", $collapsed: "$change|hideSystemId"}, "&quot;", "$change|getSystemId", "&quot;"),
                                  -
                                  -          SPAN({class: "nodeInternalSubset", $collapsed: "$change|hideInternalSubset"},
                                  -              "&nbsp;[", "$change|getInternalSubset", "]"),
                                  -          SPAN({class: "nodeBracket"}, "&gt;")
                                  -          )
                                  -        )
                                  -      ),
                                  -
                                  -      getDocTypeName: function(change) {
                                  -        // TODO : XML Handling
                                  -        var docType = change.clone || change;
                                  -        return (docType.name || docType).toLowerCase();
                                  -      },
                                  -
                                  -      hidePublicId: function(change) {
                                  -        return !this.getPublicId(change);
                                  -      },
                                  -      getPublicId: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.publicId;
                                  -      },
                                  -
                                  -      hideSystemId: function(change) {
                                  -        return !this.getSystemId(change);
                                  -      },
                                  -      hideSystemIdTag: function(change) {
                                  -        return this.hideSystemId(change) || !this.hidePublicId(change);
                                  -      },
                                  -      getSystemId: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.systemId;
                                  -      },
                                  -
                                  -      hideInternalSubset: function(change) {
                                  -        return !this.getInternalSubset(change);
                                  -      },
                                  -      getInternalSubset: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.internalSubset;
                                  -      }
                                  -    }),
                                  -
                                  -    ProcessingInstruction: domplate(ChangeElement, {
                                  -      tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -        $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -        $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -      DIV({class: "nodeLabel"},
                                  -        SPAN({class: "nodeLabelBox repTarget"},
                                  -          "&lt;?",
                                  -          SPAN({class: "nodeTag"}, "xslt-param"),
                                  -          SPAN({class: "nodeValue", $collapsed: "$change|hideContent"}, "&nbsp;", "$change|getContent"),
                                  -          SPAN({class: "nodeBracket"}, "?&gt;")
                                  -          )
                                  -        )
                                  -      ),
                                  -
                                  -      hideContent: function(change) {
                                  -        return !this.getContent(change);
                                  -      },
                                  -      getContent: function(change) {
                                  -        var instruct = change.clone || change;
                                  -        return instruct.nodeValue;
                                  -      }
                                  -    }),
                                  -
                                  -    Element: domplate(ChangeElement, {
                                  -      tag:
                                  -        DIV({class: "nodeBox containerNodeBox repIgnore", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          DIV({class: "nodeLabel nodeContainerLabel"},
                                  -            IMG({class: "twisty"}),
                                  -            SPAN({class: "nodeLabelBox repTarget"},
                                  -              "&lt;",
                                  -              SPAN({class: "nodeTag"}, "$change|getElementName"),
                                  -              TAG(attributeList.tag, {change: "$change"}),
                                  -              SPAN({class: "nodeBracket"}, "&gt;")
                                  -            )
                                  -          ),
                                  -          DIV({class: "nodeChildBox"}),
                                  -          DIV({class: "nodeCloseLabel"},
                                  -            SPAN({class: "nodeCloseLabelBox repTarget"},
                                  -              "&lt;/", SPAN({class: "nodeTag"}, "$change|getElementName"), "&gt;"
                                  -            )
                                  -          )
                                  -        )
                                  -    }),
                                  -
                                  -    TextElement: domplate(ParentChangeElement, {
                                  -      tag:
                                  -        DIV({class: "nodeBox textNodeBox open repIgnore", _repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({class: "nodeLabel"},
                                  -            SPAN({class: "nodeLabelBox repTarget"},
                                  -              "&lt;",
                                  -              SPAN({class: "nodeTag"}, "$change|getElementName"),
                                  -              TAG(attributeList.tag, {change: "$change"}),
                                  -              SPAN({class: "nodeBracket"}, "&gt;"))),
                                  -          SPAN({class: "nodeChildBox"},
                                  -            FOR("child", "$change|childIterator",
                                  -              TAG("$child|getNodeTag", {change: "$child"})
                                  -            )),
                                  -          SPAN(
                                  -            "&lt;/",
                                  -            SPAN({class: "nodeTag"}, "$change|getElementName"),
                                  -            "&gt;"
                                  -          )
                                  -        ),
                                  -        getNodeTag: function(node) {
                                  -          return allChanges.getNodeTag(node.clone || node, true);
                                  -        }
                                  -    }),
                                  -
                                  -    EmptyElement: domplate(ChangeElement, {
                                  -      tag: DIV({class: "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        DIV({class: "nodeLabel"},
                                  -          SPAN({class: "nodeLabelBox repTarget"},
                                  -            "&lt;",
                                  -            SPAN({class: "nodeTag"}, "$change|getElementName"),
                                  -            TAG(attributeList.tag, {change: "$change"}),
                                  -            SPAN({class: "nodeBracket"}, "/&gt;")
                                  -            )
                                  -          )
                                  -        )
                                  -    }),
                                  -
                                  -    TextNode: domplate(ChangeElement, {
                                  -      tag:
                                  -        DIV({class: "nodeBox", _repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"}))
                                  -        )
                                  -    }),
                                  -    InlineTextNode: domplate(ChangeElement, {
                                  -      tag:
                                  -        SPAN({_repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"}))
                                  -        )
                                  -    }),
                                  -
                                  -    CDATANode: domplate(ChangeElement, {
                                  -      tag: DIV({class: "nodeBox", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        "&lt;![CDATA[",
                                  -        SPAN({class: "nodeText"}, TAG(textChanged.tag, {change: "$change"})),
                                  -        "]]&gt;"
                                  -        )
                                  -    }),
                                  -
                                  -    CommentNode: domplate(ChangeElement, {
                                  -      tag: DIV({class: "nodeBox", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        DIV({class: "nodeComment"},
                                  -          "&lt;!--", TAG(textChanged.tag, {change: "$change"}), "--&gt;"
                                  -          )
                                  -        )
                                  -    })
                                  -};
                                  -
                                  -this.HtmlSnapshotView = function(tree, rootXPath, panelNode) {
                                  -  this.tree = tree;
                                  -  this.rootXPath = rootXPath;
                                  -  this.panelNode = panelNode;
                                  -}
                                  -this.HtmlSnapshotView.prototype = {
                                  -  childIterator: function(parent) {
                                  -    return new Search.RemovedIterator(
                                  -        new Search.DOMIterator(parent.clone || parent),
                                  -        parent[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES],
                                  -        this.includeChild);
                                  -  },
                                  -  includeChild: function(child) {
                                  -    return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child);
                                  -  },
                                  -  
                                  -  /* InsideOutBox View Interface */
                                  -  getParentObject: function(child) {
                                  -    if (child.parentNode) {
                                  -      return child.parentNode.change || child.parentNode;
                                  -    }
                                  -    if (child.change) {
                                  -      return child.change;
                                  -    }
                                  -    
                                  -    if (child.xpath) {
                                  -      var components = Path.getRelativeComponents(Path.getParentPath(child.xpath), this.rootXPath);
                                  -      if (!components.right) {
                                  -        var iterate = (this.tree.ownerDocument || this.tree).evaluate(components.left, this.tree, null, XPathResult.ANY_TYPE, null);
                                  -        var ret = iterate.iterateNext();
                                  -        return ret;
                                  -      }
                                  -    }
                                  -  },
                                  -  getChildObject: function(parent, index, prevSibling) {
                                  -    if (!parent)    return;
                                  -
                                  -    var iter = parent._diffIter || this.childIterator(parent.clone || parent);
                                  -    var diffCache = parent._diffCache || [];
                                  -    // Read in more elements if the this is a cache miss
                                  -    while (diffCache.length <= index && !parent._diffIterExhausted) {
                                  -      try {
                                  -        diffCache.push(iter.next());
                                  -      } catch (err) {
                                  -        // Assume this is StopIterator
                                  -        parent._diffIterExhausted = true;
                                  -      }
                                  -    }
                                  -    
                                  -    parent._diffIter = iter;
                                  -    parent._diffCache = diffCache;
                                  -    
                                  -    return diffCache[index];
                                  -  },
                                  -  createObjectBox: function(object, isRoot) {
                                  -    var tag = allChanges.getNodeTag(object.clone || object, false);
                                  -    return tag.replace({change: object}, this.panelNode.document);
                                  -  }
                                  -};
                                  -
                                  -var CSSChangeElement = {
                                  -  getCSSRules: function(change) {
                                  -    var removed = change[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -    return new Search.RemovedIterator(new Search.ArrayIterator(change.cssRules), removed);
                                  -  },
                                  -  
                                  -  getNodeTag: function(cssRule) {
                                  -    var CSSChanges = FireDiff.domplate.CSSChanges;
                                  -    
                                  -    cssRule = cssRule.changeType ? cssRule.clone : cssRule;
                                  -    if (cssRule instanceof CSSStyleSheet || cssRule instanceof CSSModel.StyleSheetClone) {
                                  -      return CSSChanges.CSSList.tag;
                                  -    } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSModel.CSSStyleRuleClone
                                  -        || cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSModel.CSSFontFaceRuleClone) {
                                  -      return CSSChanges.CSSStyleRule.tag;
                                  -    } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSModel.CSSMediaRuleClone) {
                                  -      return CSSChanges.CSSMediaRule.tag;
                                  -    } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSModel.CSSImportRuleClone) {
                                  -      return CSSChanges.CSSImportRule.tag;
                                  -    } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSModel.CSSCharsetRuleClone) {
                                  -      return CSSChanges.CSSCharsetRule.tag;
                                  -    }
                                  -  }
                                  -};
                                  -this.CSSChanges = {
                                  -  CSSList: domplate(CSSChangeElement, {
                                  -    tag: FOR("rule", "$change|getCSSRules",
                                  -      TAG("$rule|getNodeTag", {change: "$rule"})
                                  -    )
                                  -  }),
                                  -  CSSImportRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          class: "cssRuleDiff firebugDiff",
                                  -          _repObject: "$change"},
                                  -      "@import &quot;$change.href&quot;;")
                                  -  }),
                                  -  CSSCharsetRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          class: "cssRuleDiff firebugDiff",
                                  -          _repObject: "$change"
                                  -        }, "@charset &quot;$change.encoding&quot;;")
                                  -  }),
                                  -  CSSMediaRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          class: "cssMediaRuleDiff firebugDiff",
                                  -          _repObject: "$change"
                                  -        },
                                  -        DIV({class: "cssSelector"}, "@media $change|getMediaList {"),
                                  -        DIV({class: "cssMediaRuleContent"},
                                  -          FOR("rule", "$change|getCSSRules",
                                  -              TAG("$rule|getNodeTag", {change: "$rule"}))),
                                  -        DIV("}")
                                  -    ),
                                  -    getMediaList: function(change) {
                                  -      var content = [],
                                  -          media = change.media;
                                  -      for (var i = 0; i < media.length; i++) {
                                  -        content.push(media.item ? media.item(i) : media[i]);
                                  -      }
                                  -      return content.join(", ");
                                  -    }
                                  -  }),
                                  -  CSSStyleRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -        class: "cssRuleDiff firebugDiff",
                                  -        _repObject: "$change",
                                  -        $removedClass: "$change|isRemoved", $addedClass: "$change|isAdded"
                                  -      },
                                  -      DIV({class: "cssHead"},
                                  -        SPAN({class: "cssSelector"}, "$change|getSelectorText"), " {"),
                                  -          FOR("prop", "$change|getRemovedProps",
                                  -            TAG(propertyDefinition.tag, {change: "$prop"})),
                                  -          FOR("prop", "$change|getCurrentProps",
                                  -            TAG(propertyDefinition.tag, {change: "$prop"})),
                                  -        DIV("}")
                                  -      ),
                                  -    getSelectorText: function(change) {
                                  -      return change.selectorText || (change.clone || change.style).selectorText;
                                  -    },
                                  -    isAdded: function(change) {
                                  -      change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -      return change.subType == "insertRule";
                                  -    },
                                  -    isRemoved: function(change) {
                                  -      change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -      return change.subType == "removeRule";
                                  -    },
                                  -    getRemovedProps: function(change) {
                                  -      if (!change.propChanges) {
                                  -        if (change.subType == "removeProp") {
                                  -          return [change];
                                  -        } else {
                                  -          return [];
                                  -        }
                                  -      }
                                  -      
                                  -      var ret = [];
                                  -      for (var i = 0; i < change.propChanges.length; i++) {
                                  -        var prop = change.propChanges[i];
                                  -        if (prop.subType == "removeProp") {
                                  -          ret.push(prop);
                                  -        }
                                  -      }
                                  -      return ret;
                                  -    },
                                  -    getCurrentProps: function(change) {
                                  -      if (change.subType == "setProp") {
                                  -        return [change];
                                  -      } else if (change.subType == "removeProp") {
                                  -        return [];
                                  -      }
                                  -      
                                  -      var propList = {},
                                  -          i = 0, index = 0,
                                  -          style = (change.clone || change.style).style || change.style;
                                  -      for (i = 0; i < style.length; i++) {
                                  -        var propName = style[i],
                                  -            propValue = style.getPropertyValue(propName),
                                  -            propPriority = style.getPropertyPriority(propName);
                                  -        propList[propName] = {
                                  -          propName: propName,
                                  -          propValue: propValue, propPriority: propPriority,
                                  -          prevValue: propValue, prevPriority: propPriority
                                  -        };
                                  -      }
                                  -      if (change.propChanges) {
                                  -        for (i = 0; i < change.propChanges.length; i++) {
                                  -          var prop = change.propChanges[i];
                                  -          if (prop.subType == "setProp") {
                                  -            propList[prop.propName] = prop;
                                  -          }
                                  -        }
                                  -      }
                                  -      return {
                                  -        next: function() {
                                  -          if (index >= style.length)   $break();
                                  -          return propList[style[index++]];
                                  -        }
                                  -      }
                                  -    }
                                  -  })
                                  -};
                                  -
                                  -}}).apply(FireDiff.domplate);
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/events.js b/branches/flexBox/content/firediff/content/firediff-original/events.js
                                  deleted file mode 100644
                                  index aa376c20..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/events.js
                                  +++ /dev/null
                                  @@ -1,392 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    Reps = FireDiff.reps,
                                  -    CSSModel = FireDiff.CSSModel;
                                  -
                                  -const CHANGES = "firebug-firediff-changes";
                                  -const ATTR_CHANGES = "firebug-firediff-attrChanges";
                                  -const REMOVE_CHANGES = "firebug-firediff-removeChanges";
                                  -
                                  -var ChangeSource = {
                                  -    APP_CHANGE: "APP_CHANGE",
                                  -    FIREBUG_CHANGE: "FIREBUG_CHANGE"
                                  -};
                                  -
                                  -function ChangeEvent(changeSource) {
                                  -  this.date = new Date();
                                  -  this.changeSource = changeSource || ChangeSource.APP_CHANGE;
                                  -}
                                  -ChangeEvent.prototype = {
                                  -    getChangeType: function() { return this.changeType; },
                                  -    getSummary: function() {},
                                  -    merge: function(candidate, simplifyOnly) {},
                                  -    
                                  -    /**
                                  -     * Determines if a candidate change needs to be reverted or
                                  -     * restored in order to revert or restore this change. The implementation
                                  -     * should assume that the reverted field has already been set to the correct
                                  -     * value for this event when called.
                                  -     */
                                  -    mergeRevert: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if a candidate change cancels the effects of this change.
                                  -     */
                                  -    isCancellation: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if this change affects the cancellation of another change.
                                  -     * 
                                  -     * I.e. this change must be reverted to revert the candidate change.
                                  -     */
                                  -    affectsCancellation: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if this change negates any effect of a prior change.
                                  -     */
                                  -    overridesChange: function(prior) {},
                                  -    cloneOnXPath: function(xpath) {},
                                  -    appliesTo: function(target, cachedXpath) {
                                  -      // Any change that is made to the target or a child
                                  -      return target && Path.isChildOrSelf(cachedXpath || this.getXpath(target), this.xpath);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Determines if a given change is in the same file as this change.
                                  -     * The definition of file is up to the implementation, but may mean CSS
                                  -     * style sheet, DOM document, etc.
                                  -     */
                                  -    sameFile: function(otherChange) {},
                                  -    getSnapshot: function(context) {},
                                  -    getBaseSnapshot: function(context) {},
                                  -    getDocumentName: function(context) {},
                                  -    
                                  -    apply: function() {},
                                  -    revert: function() {},
                                  -
                                  -    getMergedXPath: function(prior) {
                                  -      var updatedPath;
                                  -      if (!prior.isElementRemoved() || this.xpath != prior.xpath) {
                                  -        if (this.isElementAdded()) {
                                  -          updatedPath = Path.updateForInsert(prior.xpath, this.xpath);
                                  -        } else if (this.isElementRemoved()) {
                                  -          updatedPath = Path.updateForRemove(prior.xpath, this.xpath);
                                  -        }
                                  -      }
                                  -
                                  -      if (updatedPath && updatedPath != prior.xpath) {
                                  -        return updatedPath;
                                  -      }
                                  -    },
                                  -    getRevertXPath: function(prior) {
                                  -      var updatedPath;
                                  -      if (this.isElementAdded()) {
                                  -        updatedPath = Path.updateForRevertRemove(prior.xpath, this.xpath);
                                  -      } else if (this.isElementRemoved()) {
                                  -        updatedPath = Path.updateForInsert(prior.xpath, this.xpath);
                                  -      }
                                  -
                                  -      if (updatedPath && updatedPath != prior.xpath) {
                                  -        return updatedPath;
                                  -      }
                                  -    },
                                  -    
                                  -    getXpath: function(target) {},
                                  -    xpathLookup: function(xpath, root) {},
                                  -    getActionNode: function(target, xpath) {
                                  -      try {
                                  -        xpath = xpath || this.getXpath(target);
                                  -        if (xpath == this.xpath) {
                                  -          // Empty string passed to evaluate is bad. 
                                  -          return target;
                                  -        }
                                  -        
                                  -        var components = Path.getRelativeComponents(this.xpath, xpath);
                                  -        if (!components.right) {
                                  -          return this.xpathLookup(components.left, target);
                                  -        }
                                  -      } catch (err) {
                                  -        if (FBTrace.DBG_ERRORS) {
                                  -          FBTrace.sysout("getActionNode Error: " + err, err);
                                  -          FBTrace.sysout(" - getActionNode: " + this.xpath + " " + xpath, components);
                                  -        }
                                  -        throw err;
                                  -      }
                                  -    },
                                  -    getInsertActionNode: function(target, xpath) {
                                  -      xpath = xpath || this.getXpath(target);
                                  -      
                                  -      var parentPath = Path.getParentPath(this.xpath);
                                  -      var selfId = Path.getIdentifier(this.xpath);
                                  -      
                                  -      var components = Path.getRelativeComponents(parentPath, xpath);
                                  -      var parentEl;
                                  -      if (components.left) {
                                  -        parentEl = this.xpathLookup(components.left, target);
                                  -      } else {
                                  -        parentEl = target;
                                  -      }
                                  -      
                                  -      var siblingEl = this.xpathLookup(selfId.tag + "[" + selfId.index + "]", parentEl);
                                  -      return {
                                  -        parent: parentEl,
                                  -        sibling: siblingEl
                                  -      };
                                  -    },
                                  -    
                                  -    isElementAdded: function() { return false; },
                                  -    isElementRemoved: function() { return false; },
                                  -    
                                  -    toString: function() {
                                  -      return "[object ChangeEvent-" + this.changeType + "-" + this.subType + " " + this.xpath + "]";
                                  -    }
                                  -};
                                  -
                                  -// Global API
                                  -FireDiff.events = {
                                  -    ChangeEvent: ChangeEvent,
                                  -    
                                  -    ChangeSource: ChangeSource,
                                  -    AnnotateAttrs: {
                                  -      CHANGES: CHANGES,
                                  -      ATTR_CHANGES: ATTR_CHANGES,
                                  -      REMOVE_CHANGES: REMOVE_CHANGES
                                  -    },
                                  -
                                  -    /**
                                  -     * Simplifies the given change set to a reduced form, optionally updating
                                  -     * all changes to the current point in time.
                                  -     * 
                                  -     * simplifyOnly:
                                  -     *    truthy: Do not merge change xpaths. Change sets merged in this mode can be integrated with
                                  -     *        other change sets without xpath corruption.
                                  -     *    falsy: Merge change xpaths. This will update all changes so their xpaths reflect the current
                                  -     *        state of the document. Change sets merged in this mode can not be merged with other
                                  -     *        change sets.
                                  -     */
                                  -    merge: function(changes, simplifyOnly) {
                                  -      if (!changes.length) {
                                  -        return changes;
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge prior simplifyOnly: " + simplifyOnly, changes);
                                  -      changes = changes.slice();
                                  -
                                  -      var ret = [];
                                  -      for (var i = 0; i < changes.length; i++) {
                                  -        var changeMerge = mergeChange(changes, changes[i], i, simplifyOnly);
                                  -        if (changeMerge) {
                                  -          ret.push(changeMerge);
                                  -        }
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge result", ret);
                                  -      return ret;
                                  -    },
                                  -    
                                  -    /**
                                  -     * Determines the changes necessary to revert a given change.
                                  -     * 
                                  -     * Returns an array of events that need to be reverted in order to
                                  -     * restore the associated object to the state prior to the given change.
                                  -     * These events are defined in reverse order, with change n being dependent
                                  -     * upon change n+1. These events will be merged where possible.
                                  -     * 
                                  -     * The changes array will be modified to remove the reverted events as well
                                  -     * as update the xpath of the remaining events to reflect the state of the
                                  -     * system after the reverts occur.
                                  -     */
                                  -    mergeRevert: function(change, changes) {
                                  -      var changeIndex = getChangeIndex(changes, change);
                                  -
                                  -      // Merge all relevant changes into this change.
                                  -      var reverts = [];
                                  -      change = revertChange(changes, change, changeIndex, reverts);
                                  -
                                  -      if (change) {
                                  -        reverts.splice(0, 0, change);
                                  -      }
                                  -
                                  -      changes[changeIndex] = undefined;
                                  -      for (var i = changes.length; i > 0; i--) {
                                  -        if (!changes[i-1]) {
                                  -          changes.splice(i-1, 1);
                                  -        }
                                  -      }
                                  -
                                  -      reverts.sort(function(a, b) { return b.xpath.localeCompare(a.xpath); });
                                  -      return reverts;
                                  -    }
                                  -};
                                  -
                                  -function mergeChange(changes, change, changeIndex, simplifyOnly) {
                                  -  if (!change) {
                                  -    return;
                                  -  }
                                  -
                                  -  for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) {
                                  -    var candidate = changes[outerIter],
                                  -        mergeValue;
                                  -    if (!candidate || candidate.changeType != change.changeType) {
                                  -      continue;
                                  -    }
                                  -
                                  -    if (change.isCancellation(candidate)) {
                                  -      mergeValue = [];
                                  -    } else if (candidate.overridesChange(change)) {
                                  -      mergeValue = [undefined, candidate];
                                  -    } else {
                                  -      mergeValue = change.merge(changes[outerIter], simplifyOnly);
                                  -    }
                                  -    if (!mergeValue) {
                                  -      continue;
                                  -    }
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge change " + changeIndex + " " + outerIter, mergeValue);
                                  -
                                  -    if (mergeValue.length == 0 && !mergeValue[0]) {
                                  -      // Cancellation special case:
                                  -      updateXPathFromCancellation(changes, change, changeIndex, outerIter);
                                  -    }
                                  -
                                  -    change = mergeValue[0];
                                  -    changes[outerIter] = mergeValue[1];
                                  -  }
                                  -
                                  -  return change;
                                  -}
                                  -
                                  -function revertChange(changes, change, changeIndex, parentDeletes) {
                                  -  if (!change) {
                                  -    return;
                                  -  }
                                  -
                                  -  for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) {
                                  -    var candidate = changes[outerIter],
                                  -        mergeValue = undefined,
                                  -        updateXPath;
                                  -
                                  -    if (change.isCancellation(candidate)) {
                                  -      mergeValue = [];
                                  -    } else if (candidate.isElementRemoved()
                                  -        && (Path.isChild(candidate.xpath, change.xpath)
                                  -          || (!change.isElementRemoved() && change.xpath == candidate.xpath))) {
                                  -      changes[outerIter] = undefined;
                                  -      parentDeletes.push(candidate);
                                  -    } else if (Path.isChildOrSelf(change.xpath, candidate.xpath)) {
                                  -      mergeValue = change.mergeRevert(candidate);
                                  -    }
                                  -    
                                  -    if (mergeValue) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge revert change " + changeIndex + " " + outerIter, mergeValue);
                                  -      changes[outerIter] = mergeValue[1];
                                  -
                                  -      if (!mergeValue[0]) {
                                  -        // Cancellation special case:
                                  -        updateXPathFromCancellation(changes, change, changeIndex, outerIter);
                                  -
                                  -        changeIndex = processRevertCancel(changes, candidate, outerIter, parentDeletes);
                                  -        if (changeIndex) {
                                  -          outerIter = changeIndex;
                                  -          change = changes[changeIndex];
                                  -          changes[changeIndex] = undefined;
                                  -          continue;
                                  -        } else {
                                  -          return;
                                  -        }
                                  -      }
                                  -
                                  -      change = mergeValue[0];
                                  -    } else {
                                  -      // We are only merging a particular change and do not need to do a full 
                                  -      // merge outside of this path, but we do need to make sure that xpaths
                                  -      // are up to date
                                  -      // Check to see if we update the candidate
                                  -      updatedXPath = change.getRevertXPath(candidate);
                                  -      
                                  -      // Check to see if the candidate updates us
                                  -      if (!updatedXPath) {
                                  -        updatedXPath = candidate.getMergedXPath(change);
                                  -        if (updatedXPath) {
                                  -          change = change.cloneOnXPath(updatedXPath);
                                  -          changes[changeIndex] = change;
                                  -        }
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  for (outerIter = changeIndex + 1; outerIter < changes.length; outerIter++) {
                                  -    candidate = changes[outerIter];
                                  -    if (!candidate) {
                                  -      continue;
                                  -    }
                                  -    updatedXPath = change.getRevertXPath(candidate);
                                  -    if (updatedXPath) {
                                  -      changes[outerIter] = candidate.cloneOnXPath(updatedXPath);
                                  -    }
                                  -  }
                                  -
                                  -  return change;
                                  -}
                                  -
                                  -/**
                                  - * Lookup the next change that we may have to revert to fully revert the
                                  - * element in question to the previous state.
                                  - */
                                  -function processRevertCancel(changes, change, curIndex, parentDeletes) {
                                  -  for (; curIndex < changes.length; curIndex++) {
                                  -    var candidate = changes[curIndex];
                                  -    if (!candidate) {
                                  -      continue;
                                  -    }
                                  -    
                                  -    // Check for the applies to case
                                  -    if (change.affectsCancellation(candidate)) {
                                  -      return curIndex;
                                  -    }
                                  -    
                                  -    // Check for the parent delete case
                                  -    if (candidate.isElementRemoved()
                                  -        && Path.isChild(candidate.xpath, change.xpath)) {
                                  -      changes[curIndex] = undefined;
                                  -      parentDeletes.push(candidate);
                                  -    }
                                  -    
                                  -    // Update xpaths as necessary
                                  -    var updatedXPath = candidate.getMergedXPath(change);
                                  -    if (updatedXPath) {
                                  -      change = change.cloneOnXPath(updatedXPath);
                                  -    }
                                  -  }
                                  -};
                                  -
                                  -function updateXPathFromCancellation(changes, change, changeIndex, outerIter) {
                                  -  // Update any changes that happened between the current change and the
                                  -  // cancellation change so their xpath acts as though these changes
                                  -  // never existed
                                  -  for (var cancelIter = changeIndex + 1; cancelIter < outerIter; cancelIter++) {
                                  -    if (changes[cancelIter]) {
                                  -      var updatedXPath = change.getRevertXPath(changes[cancelIter]);
                                  -      if (updatedXPath) {
                                  -        changes[cancelIter] = changes[cancelIter].cloneOnXPath(updatedXPath);
                                  -      }
                                  -    }
                                  -  }
                                  -}
                                  -function getChangeIndex(changes, change) {
                                  -  if (!change) {
                                  -    return 0;
                                  -  }
                                  -  for (var i = 0; i < changes.length && changes[i] != change; i++) {
                                  -    /* NOP */
                                  -  }
                                  -  return i;
                                  -}
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/firediff.xul b/branches/flexBox/content/firediff/content/firediff-original/firediff.xul
                                  deleted file mode 100644
                                  index d7690835..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/firediff.xul
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<?xml version="1.0"?>
                                  -<!-- See license.txt for terms of usage -->
                                  -
                                  -<?xml-stylesheet href="chrome://firediff/skin/firediff.css"?>
                                  -
                                  -<!DOCTYPE window [
                                  -  <!ENTITY % firebugDTD SYSTEM "chrome://firebug/locale/firebug.dtd">
                                  -  %firebugDTD;
                                  -  <!ENTITY % firediffDTD SYSTEM "chrome://firediff/locale/firediff.dtd">
                                  -  %firediffDTD;
                                  -]>
                                  -
                                  -
                                  -<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                                  -  <stringbundleset id="stringbundleset">
                                  -    <stringbundle id="strings_firediff" src="chrome://firediff/locale/firediff.properties"/>
                                  -  </stringbundleset>
                                  -  
                                  -  <script src="chrome://firediff/content/versionCompat.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diff.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/path.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/cssModel.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/events.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/domEvents.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/cssEvents.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/domplate.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/search.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/pages.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diffModule.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diffMonitor.js" type="application/x-javascript"/>
                                  -  
                                  -  <commandset id="mainCommandSet">
                                  -    <command id="cmd_clearDiffMonitor" oncommand="Firebug.DiffModule.clearChanges(FirebugContext)"/>
                                  -    <command id="cmd_prevChange" oncommand="Firebug.DiffModule.navPrevChange(FirebugContext)"/>
                                  -    <command id="cmd_nextChange" oncommand="Firebug.DiffModule.navNextChange(FirebugContext)"/>
                                  -  </commandset>
                                  -  
                                  -  <toolbar id="fbToolbar" align="center">
                                  -    <hbox id="fbToolbarInner" insertbefore="fbDetachButton" flex="1" align="center">
                                  -      <hbox id="fbDiffMonitorButtons" insertafter="fbNetButtons" collapsed="true">
                                  -        <toolbarseparator/>
                                  -        <toolbarbutton label="&firebug.Clear;" class="toolbar-text-button"
                                  -                       tooltiptext="&firebug.ClearTooltip;" command="cmd_clearDiffMonitor"/>
                                  -        <hbox id="fbDiffSnapshotNav" collapsed="true">
                                  -          <toolbarseparator/>
                                  -          <toolbarbutton label="&firediff.PrevChange;" command="cmd_prevChange" class="toolbar-text-button"/>
                                  -          <toolbarbutton label="&firediff.NextChange;" command="cmd_nextChange" class="toolbar-text-button"/>
                                  -        </hbox>
                                  -      </hbox>
                                  -    </hbox>
                                  -  </toolbar>
                                  -</overlay>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/pages.js b/branches/flexBox/content/firediff/content/firediff-original/pages.js
                                  deleted file mode 100644
                                  index b8a3209d..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/pages.js
                                  +++ /dev/null
                                  @@ -1,404 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -FireDiff.reps = FBL.ns(function() { with (FBL) {
                                  -
                                  -var Fireformat = {};
                                  -
                                  -try {
                                  -  Components.utils.import("resource://fireformat/formatters.jsm", Fireformat);
                                  -} catch (err) {
                                  -}
                                  -
                                  -const dateFormat = CCSV("@mozilla.org/intl/scriptabledateformat;1", "nsIScriptableDateFormat");
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    CSSModel = FireDiff.CSSModel,
                                  -    DiffDomplate = FireDiff.domplate,
                                  -    Search = FireDiff.search;
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -// Object used to define the monitor view
                                  -this.Monitor = domplate({
                                  -  entry: DIV(
                                  -      {class: "diffMonitorElement", $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff", _repObject: "$change"},
                                  -      SPAN({class: "diffSummary"}, "$change|getSummary"),
                                  -      SPAN({class: "diffSep"}, ":"),
                                  -      SPAN({class: "diffSource"}, "$change|getDiffSource"),
                                  -      SPAN({class: "diffDate"}, "$change|getDate"),
                                  -      DIV({class: "diffXPath"}, "$change|getXPath"),
                                  -      DIV({class: "logEntry"}, TAG("$change|getChangeTag", {change: "$change", object: "$change.target"}))
                                  -      ),
                                  -  
                                  -  getChangeTag: function(change) {
                                  -    if (change.changeType == "CSS") {
                                  -      return DiffDomplate.CSSChanges.CSSStyleRule.tag;
                                  -    } else if (change.clone instanceof Text) {
                                  -      return DiffDomplate.TextChanged.tag;
                                  -    } else {
                                  -      return DiffDomplate.ElementChanged.tag;
                                  -    }
                                  -  },
                                  -  getSummary: function(change) {
                                  -    return change.getSummary();
                                  -  },
                                  -  getDiffSource: function(change) {
                                  -    if (this.isFirebugDiff(change)) {
                                  -      return i18n.getString("source.firebug");
                                  -    } else {
                                  -      return i18n.getString("source.application");
                                  -    }
                                  -  },
                                  -  getDate: function(change) {
                                  -    var date = change.date;
                                  -    return dateFormat.FormatDateTime(
                                  -        "", dateFormat.dateFormatLong, dateFormat.timeFormatSeconds,
                                  -        date.getFullYear(), date.getMonth() + 1, date.getDate(),
                                  -        date.getHours(), date.getMinutes(), date.getSeconds()); 
                                  -  },
                                  -  getXPath: function(change) {
                                  -    return change.displayXPath || change.xpath || "";
                                  -  },
                                  -  isFirebugDiff: function(change) {
                                  -    return change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(change) {
                                  -    return change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  },
                                  -  
                                  -  getChanges: function() {
                                  -    return Firebug.DiffModule.getChanges();
                                  -  },
                                  -  getTag: function(object) {
                                  -    return this.entry;
                                  -  },
                                  -  
                                  -  show: function(panel) {
                                  -    var changes = Firebug.DiffModule.getChanges();
                                  -    for (var i = 0; i < changes.length; i++) {
                                  -      this.onChange(changes[i], panel);
                                  -    }
                                  -  },
                                  -  onChange: function(change, panel) {
                                  -    try {
                                  -      this.entry.append({change: change}, panel.panelNode);
                                  -    } catch (err) {
                                  -      FBTrace.sysout("ERROR: onChange", err);
                                  -    }
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    this.searchHelper = this.searchHelper || new Search.PageSearch();
                                  -    return this.searchHelper.search(text, reverse, panel);
                                  -  }
                                  -});
                                  -this.MonitorRep = domplate(Firebug.Rep,{
                                  -  supportsObject: function(object, type) {
                                  -    return object == FireDiff.reps.Monitor;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.ChangeLog");
                                  -  }
                                  -});
                                  -
                                  -/**
                                  - * Initializes the base snapshot datastructures. The passed parameter may be a
                                  - * change event to generate a snapshot for a single document at a given point in
                                  - * time or it may be a document to generate the base snapshot for that document.
                                  - * 
                                  - * @constructor
                                  - * @class Base class for snapshots of a document state at a given point of time.
                                  - * @param {Object} change The change event of document to create a snapshot for.
                                  - */
                                  -function Snapshot(change) {
                                  -  var changes = Firebug.DiffModule.getChanges();
                                  -  var displayChanges = [], revertChanges = [];
                                  -  var foundChange = false;
                                  -  for (var i = 0; i < changes.length; i++) {
                                  -    if (changes[i] == change) {
                                  -      displayChanges.push(changes[i]);
                                  -      foundChange = true;
                                  -    } else if (changes[i].sameFile(change)) {
                                  -      (foundChange ? revertChanges : displayChanges).push(changes[i]);
                                  -    }
                                  -  }
                                  -  if (!foundChange) {
                                  -    // If the change was not in the list then we assume that this is the revert
                                  -    // to base case
                                  -    revertChanges = displayChanges;
                                  -    displayChanges = [];
                                  -  }
                                  -  displayChanges = Events.merge(displayChanges);
                                  -  
                                  -  this.displayChanges = displayChanges;
                                  -  this.revertChanges = revertChanges;
                                  -}
                                  -Snapshot.prototype = {
                                  -  updateCloneToChange: function(clone, cloneXPath) {
                                  -    this.changeNodeList = [];
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Revert changes", this.revertChanges);
                                  -    
                                  -    var i = this.revertChanges.length;
                                  -    while (i--) {
                                  -      try {
                                  -        this.revertChanges[i].revert(clone, cloneXPath);
                                  -      } catch (err) {
                                  -        FBTrace.sysout("Snapshot.updateCloneToChane: revert " + i + " " + err, this.revertChanges[i]);
                                  -        throw err;
                                  -      }
                                  -    }
                                  -    for (var i = 0; i < this.displayChanges.length; i++) {
                                  -      try {
                                  -        this.changeNodeList.push(this.displayChanges[i].annotateTree(clone, cloneXPath));
                                  -      } catch (err) {
                                  -        FBTrace.sysout("ERROR: Failed to annotate tree: " + i, this.displayChanges[i]);
                                  -        throw err;
                                  -      }
                                  -    }
                                  -    this.normalizeChangeNodes();
                                  -  },
                                  -  
                                  -  navigableChange: function(changeNode) {},
                                  -  iterateChanges: function(stepper) {
                                  -    var change = stepper(this.curChange);
                                  -
                                  -    for (var i = 0; i < this.changeNodeList.length+1; i++) {
                                  -      if (change >= this.changeNodeList.length) {
                                  -        change = 0;
                                  -      } else if (change < 0) {
                                  -        change = this.changeNodeList.length - 1;
                                  -      }
                                  -
                                  -      if (this.navigableChange(this.changeNodeList[change])) {
                                  -        return change;
                                  -      }
                                  -      
                                  -      change = stepper(change);
                                  -    }
                                  -    return -1;
                                  -  },
                                  -  
                                  -  showNext: function() {
                                  -    this.curChange = this.iterateChanges(
                                  -        function(change) { return change + 1; });
                                  -    
                                  -    this.showCurNode();
                                  -  },
                                  -  showPrev: function() {
                                  -    this.curChange = this.iterateChanges(
                                  -        function(change) { return change - 1; });
                                  -    
                                  -    this.showCurNode();
                                  -  },
                                  -  getCurNode: function() {},
                                  -  showCurNode: function() {
                                  -    if (this.curChange < 0) {
                                  -      return;
                                  -    }
                                  -
                                  -    var objectBox = this.getCurNode();
                                  -    if (objectBox) {
                                  -      scrollIntoCenterView(objectBox);
                                  -      setClassTimed(objectBox, "jumpHighlight", this.panel.context);
                                  -    }
                                  -    return objectBox;
                                  -  },
                                  -  getChangeNodePath: function(changeNode) {},
                                  -  normalizeChangeNodes: function() {
                                  -    // Reduce to one element per xpath
                                  -    var pathList = {};
                                  -    var ret = [];
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Snapshot.normalizeChangeNodes prior", this.changeNodeList);
                                  -    
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      var change = this.changeNodeList[i];
                                  -      var path = change.xpath || Path.getElementPath(change, false, this.cloneXPath);
                                  -      
                                  -      if (!change.normalized) {
                                  -        change.lookupXPath = path;
                                  -        change.normalized = true;
                                  -        ret.push(change);
                                  -      }
                                  -    }
                                  -    
                                  -    ret.sort(function(a, b) { return Path.compareXPaths(a.lookupXPath, b.lookupXPath); });
                                  -
                                  -    // Since we are operating on a shared object we need to revert our tracking
                                  -    // var for future operations.
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      var change = this.changeNodeList[i];
                                  -      change.normalized = undefined;
                                  -    }
                                  -
                                  -    this.changeNodeList = ret;
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Snapshot.normalizeChangeNodes post", this.changeNodeList);
                                  -  }
                                  -};
                                  -
                                  -this.DOMSnapshot = function(change, document){
                                  -  Snapshot.call(this, change || document.documentElement);
                                  -  
                                  -  // This requires Firefox 3.5
                                  -  this.displayTree = document.cloneNode(true);
                                  -  this.cloneXPath = Path.getElementPath(document);
                                  -  this.updateCloneToChange(this.displayTree, this.cloneXPath);
                                  -  
                                  -  this.onMouseDown = bind(this.onMouseDown, this);
                                  -};
                                  -this.DOMSnapshot.prototype = extend(Snapshot.prototype, {
                                  -  show: function(panel) {
                                  -    this.panel = panel;
                                  -    
                                  -    this.ioBox = new InsideOutBox(
                                  -        new DiffDomplate.HtmlSnapshotView(this.displayTree, this.cloneXPath, panel),
                                  -        panel.panelNode);
                                  -    this.ioBox.openObject(this.displayTree);
                                  -    
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      this.ioBox.openToObject(this.changeNodeList[i]);
                                  -    }
                                  -    this.curChange = -1;
                                  -    panel.panelNode.scrollTop = 0;
                                  -
                                  -    panel.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -  },
                                  -  hide: function(panel) {
                                  -    if (this.ioBox) {
                                  -      this.ioBox.destroy();
                                  -      delete this.ioBox;
                                  -    }
                                  -
                                  -    panel.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -    
                                  -    delete this.panel;
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    if (!text)  { return; }
                                  -
                                  -    var search;
                                  -    if (text == this.searchText && this.lastSearch) {
                                  -      search = this.lastSearch;
                                  -    } else {
                                  -      search = this.lastSearch = new Search.DOMDiffNodeSearch(text, this.displayTree, panel.panelNode, this.ioBox);
                                  -      this.searchText = text;
                                  -    }
                                  -
                                  -    var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -    if (loopAround) {
                                  -      delete this.lastSearch;
                                  -      return this.search(text, reverse, panel);
                                  -    }
                                  -
                                  -    return !search.noMatch;
                                  -  },
                                  -
                                  -  getText: function() {
                                  -    return Fireformat.Formatters.getHTMLFormatter().format(this.displayTree);
                                  -  },
                                  -
                                  -  navigableChange: function(changeNode) {
                                  -    var displayedTypes = {};
                                  -    displayedTypes[Events.ChangeSource.APP_CHANGE] = this.panel.isDisplayAppChanges();
                                  -    displayedTypes[Events.ChangeSource.FIREBUG_CHANGE] = this.panel.isDisplayFirebugChanges();
                                  -
                                  -    // Accept the change if
                                  -    //  - Is not whitespace only or we are displaying whitespace
                                  -    //  - Is an app change and we are displaying app changes
                                  -    //  - Is a firebug change and we are displaying firebug changes
                                  -    if (!Firebug.showWhitespaceNodes && DiffDomplate.DomUtil.isWhitespaceText(changeNode)) {
                                  -      return false;
                                  -    }
                                  -
                                  -    var change = changeNode[Events.AnnotateAttrs.CHANGES] || changeNode;
                                  -    if (displayedTypes[change.changeSource]) {
                                  -      return true;
                                  -    }
                                  -    var changes = changeNode[Events.AnnotateAttrs.ATTR_CHANGES] || {};
                                  -    for (var i in changes) {
                                  -      if (displayedTypes[changes[i].changeSource]) {
                                  -        return true;
                                  -      }
                                  -    }
                                  -  },
                                  -  getCurNode: function() {
                                  -    var change = this.changeNodeList[this.curChange];
                                  -    var objectBox = this.ioBox.openToObject(change);
                                  -
                                  -    if (objectBox) {
                                  -      // For dom removed and events that register themselves as the elements
                                  -      // sole change, highlight the entire element, otherwise
                                  -      // highlight the label only (this should only be the attr case)
                                  -      if (change.subType == "dom_removed" || change[FireDiff.events.AnnotateAttrs.CHANGES]) {
                                  -        return objectBox;
                                  -      } else {
                                  -        return getChildByClass(objectBox.firstChild, 'nodeLabelBox') || objectBox;
                                  -      }
                                  -    }
                                  -  },
                                  -  
                                  -  onMouseDown: function(event) {
                                  -    if (isLeftClick(event) && getAncestorByClass(event.target, "nodeContainerLabel")) {
                                  -      this.ioBox.expandObject(Firebug.getRepObject(event.target));
                                  -    }
                                  -  }
                                  -});
                                  -this.DOMSnapshotRep = domplate(Firebug.Rep, {
                                  -  supportsObject: function(object, type) {
                                  -    return object instanceof FireDiff.reps.DOMSnapshot;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.DOMSnapshot");
                                  -  }
                                  -});
                                  -
                                  -this.CSSSnapshot = function(change, context){
                                  -  Snapshot.call(this, change);
                                  -
                                  -  var rootPath = Path.getTopPath(change.xpath || Path.getStylePath(change));
                                  -  this.sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -  this.displayTree = CSSModel.cloneCSSObject(this.sheet);
                                  -  this.updateCloneToChange(this.displayTree, rootPath);
                                  -};
                                  -this.CSSSnapshot.prototype = extend(Snapshot.prototype, {
                                  -  show: function(panel) {
                                  -    this.panel = panel;
                                  -    DiffDomplate.CSSChanges.CSSList.tag.append({change: this.displayTree}, panel.panelNode);
                                  -
                                  -    this.curChange = -1;
                                  -    panel.panelNode.scrollTop = 0;
                                  -  },
                                  -  hide: function() {
                                  -    delete this.panel;
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    this.searchHelper = this.searchHelper || new Search.PageSearch();
                                  -    return this.searchHelper.search(text, reverse, panel);
                                  -  },
                                  -  
                                  -  getText: function() {
                                  -    return Fireformat.Formatters.getCSSFormatter().format(this.displayTree);
                                  -  },
                                  -  
                                  -  navigableChange: function(change) {
                                  -    return this.panel.isDisplayFirebugChanges();
                                  -  },
                                  -  getCurNode: function() {
                                  -    var change = this.changeNodeList[this.curChange];
                                  -    return Firebug.getElementByRepObject(this.panel.panelNode, change);
                                  -  }
                                  -});
                                  -this.CSSSnapshotRep = domplate(Firebug.Rep, {
                                  -  supportsObject: function(object, type) {
                                  -    return object instanceof FireDiff.reps.CSSSnapshot;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.CSSSnapshot");
                                  -  }
                                  -});
                                  -
                                  -Firebug.registerRep(
                                  -    this.MonitorRep,
                                  -    this.DOMSnapshotRep,
                                  -    this.CSSSnapshotRep);
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/path.js b/branches/flexBox/content/firediff/content/firediff-original/path.js
                                  deleted file mode 100644
                                  index 17c21f8c..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/path.js
                                  +++ /dev/null
                                  @@ -1,295 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -var Path = {};
                                  -FireDiff.Path = Path;
                                  -
                                  -const PATH_COMPONENT = /\/?([^\/\[\]]*(?:\[(?:\d+|@.+?='.*?')\]))/g;
                                  -
                                  -function getSheetId(sheet) {
                                  -  if (sheet.href) {
                                  -    return "@href='" + sheet.href + "'";
                                  -  }
                                  -  if (sheet.ownerNode && sheet.ownerNode.id) {
                                  -    return "@id='" + sheet.ownerNode.id + "'"
                                  -  }
                                  -  return getSheetIndex(sheet);
                                  -}
                                  -function getSheetIndex(sheet) {
                                  -  if (!sheet || !sheet.ownerNode)     return;
                                  -  var styleSheets = sheet.ownerNode.ownerDocument.styleSheets;
                                  -  for (var i = 0; i < styleSheets.length; i++) {
                                  -    if (styleSheets[i] == sheet) {
                                  -      return i+1;
                                  -    }
                                  -  }
                                  -}
                                  -function getRuleIndex(style, parent) {
                                  -  if (!style)     return;
                                  -  for (var i = 0; i < parent.cssRules.length; i++) {
                                  -    if (parent.cssRules[i] == style
                                  -        || parent.cssRules[i].styleSheet == style) {
                                  -      return i+1;
                                  -    }
                                  -  }
                                  -}
                                  -var styleLookups = {
                                  -  "style()" : function(current, index) {
                                  -    var fieldLookup = /@(.*?)='(.*?)'/;
                                  -    var match = fieldLookup.exec(index);
                                  -    if (match) {
                                  -      function checkSheet(sheet) {
                                  -        if (sheet[match[1]] == match[2]
                                  -            || (sheet.ownerNode && sheet.ownerNode[match[1]] == match[2])) {
                                  -          return sheet;
                                  -        }
                                  -        for (var i = 0; i < sheet.cssRules.length; i++) {
                                  -          if (sheet.cssRules[i] instanceof CSSImportRule) {
                                  -            var ret = checkSheet(sheet.cssRules[i].styleSheet);
                                  -            if (ret) {
                                  -              return ret;
                                  -            }
                                  -          }
                                  -        }
                                  -      }
                                  -      for (var i = current.styleSheets.length; i > 0; i--) {
                                  -        var ret = checkSheet(current.styleSheets[i-1]);
                                  -        if (ret) {
                                  -          return ret;
                                  -        }
                                  -      }
                                  -    } else {
                                  -      return current.styleSheets[index-1];
                                  -    }
                                  -  },
                                  -  "rule()" : function(current, index) {
                                  -    return current.cssRules[index-1];
                                  -  }
                                  -};
                                  -
                                  -function extractComponents(path) {
                                  -  var ret = path.indexOf("/") === 0 ? [""] : [],
                                  -      match;
                                  -  while ((match = PATH_COMPONENT.exec(path))) {
                                  -    ret.push(match[1]);
                                  -  }
                                  -  return ret;
                                  -}
                                  -
                                  -function updateForMutate(pathUpdate, pathChanged, offset, destroyAncestor) {
                                  -  var components = Path.getRelativeComponents(pathUpdate, pathChanged);
                                  -  var changeParent = Path.getParentPath(pathChanged);
                                  -  
                                  -  if (destroyAncestor && components.common == pathChanged) {
                                  -    // Path to update is the same or child of the one being removed
                                  -    return undefined;
                                  -  } else if (components.common == pathChanged) {
                                  -    // Parent or identity case
                                  -    return components.common.replace(
                                  -            /([^\/]+?)\[(\d+)\]$/,
                                  -            function(total, tag, index) {
                                  -              return tag + "[" + (parseInt(index)+offset) + "]";
                                  -            })
                                  -        + (components.left ? "/" : "")
                                  -        + components.left;
                                  -  } else if (components.left && components.common == changeParent) {
                                  -    // The removed path was the child of the common path element.
                                  -    // If the modified element was of the same type as our ancestor
                                  -    // at this level, then we will need to update our path
                                  -    var pathExtract = /^([^\/]+?)\[(\d+|@.+?='.*?')\]/;
                                  -    var ancestor = pathExtract.exec(components.left);
                                  -    var changed = pathExtract.exec(components.right);
                                  -
                                  -    if (ancestor[1] == changed[1]
                                  -        && parseInt(ancestor[2]) > parseInt(changed[2])) {
                                  -      return components.common
                                  -          + (components.common != "/" ? "/" : "")
                                  -          + components.left.replace(
                                  -              pathExtract,
                                  -              function(total, tag, index) {
                                  -                return tag + "[" + (parseInt(index)+offset) + "]";
                                  -              })
                                  -    }
                                  -  }
                                  -  
                                  -  // No effect on the path
                                  -  return pathUpdate;
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathInserted was just inserted into the
                                  - * document.
                                  - */
                                  -FireDiff.Path.updateForInsert = function(pathUpdate, pathInsert) {
                                  -  return updateForMutate(pathUpdate, pathInsert, 1, false);
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathRemoved was just removed from the
                                  - * document.
                                  - */
                                  -FireDiff.Path.updateForRemove = function(pathUpdate, pathRemoved) {
                                  -  return updateForMutate(pathUpdate, pathRemoved, -1, true);
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathRemoved was just removed from the
                                  - * document due to a revert.
                                  - */
                                  -FireDiff.Path.updateForRevertRemove = function(pathUpdate, pathRemoved) {
                                  -  return updateForMutate(pathUpdate, pathRemoved, -1, false);
                                  -};
                                  -
                                  -FireDiff.Path.getIdentifier = function(path) {
                                  -  var match = path.match(/^.*\/([^/\[\]]+?)(?:\[(\d+|@.+?='.*?')\])?$/);
                                  -  if (match) {
                                  -    var index = parseInt(match[2]);
                                  -    return { tag: match[1], index: isNaN(index) ? match[2] : index };
                                  -  }
                                  -};
                                  -FireDiff.Path.getParentPath = function(path) {
                                  -  return (path.match(/^(.+)\/([^\/\[\]]+?)(?:\[(\d+|@.+?='.*?')\])?$/) || ["", "/"])[1];
                                  -};
                                  -FireDiff.Path.getTopPath = function(path) {
                                  -  return (path.match(/^\/?[^\/\[\]]*(?:\[(?:\d+|@.+?='.*?')\])?/) || ["", ""])[0];
                                  -};
                                  -FireDiff.Path.isNextSibling = function(first, second) {
                                  -  var parent = Path.getParentPath(first);
                                  -  var identifier = Path.getIdentifier(first);
                                  -  
                                  -  return (parent + "/" + identifier.tag + "[" + (parseInt(identifier.index)+1) + "]") == second;
                                  -};
                                  -
                                  -FireDiff.Path.isChildOrSelf = function(parent, child) {
                                  -  return parent == child || Path.isChild(parent, child);
                                  -};
                                  -FireDiff.Path.isChild = function(parent, child) {
                                  -  return child.indexOf(parent + "/") === 0;
                                  -};
                                  -
                                  -FireDiff.Path.getRelativeComponents = function(path1, path2) {
                                  -  path1 = extractComponents(path1);
                                  -  path2 = extractComponents(path2);
                                  -  
                                  -  var common = [];
                                  -  for (var i = 0; i < path1.length && i < path2.length && path1[i] == path2[i]; i++) {
                                  -    common.push(path1[i]);
                                  -  }
                                  -  
                                  -  path1.splice(0, common.length);
                                  -  path2.splice(0, common.length);
                                  -  
                                  -  return {
                                  -    common: common.join("/") || (common.length == 1 ? "/" : ""),
                                  -    left: path1.join("/"),
                                  -    right: path2.join("/")
                                  -  };
                                  -};
                                  -
                                  -FireDiff.Path.compareXPaths = function(path1, path2) {
                                  -  var components = Path.getRelativeComponents(path1, path2);
                                  -  var leftTop = Path.getIdentifier("/" + Path.getTopPath(components.left));
                                  -  var rightTop = Path.getIdentifier("/" + Path.getTopPath(components.right));
                                  -  if (!leftTop) {
                                  -    return rightTop ? -1 : 0;
                                  -  }
                                  -  if (!rightTop) {
                                  -    return 1;
                                  -  }
                                  -  
                                  -  var tagCompare = leftTop.tag.localeCompare(rightTop.tag);
                                  -  if (tagCompare) {
                                  -    return tagCompare;
                                  -  }
                                  -  
                                  -  if (leftTop.index < rightTop.index) {
                                  -    return -1;
                                  -  } else if (leftTop.index == rightTop.index) {
                                  -    return 0;
                                  -  } else {
                                  -    return 1;
                                  -  }
                                  -};
                                  -
                                  -FireDiff.Path.getElementPath = function(element, useTagNames, rootPath) {
                                  -  var nameLookup = [];
                                  -  nameLookup[Node.COMMENT_NODE] = "comment()";
                                  -  nameLookup[Node.TEXT_NODE] = "text()";
                                  -  nameLookup[Node.PROCESSING_INSTRUCTION_NODE] = "processing-instruction()";
                                  -
                                  -  var paths = [];
                                  -  for (; element && element.nodeType != Node.DOCUMENT_NODE; element = element.parentNode) {
                                  -    var tagName = element.localName || nameLookup[element.nodeType];
                                  -    var index = 0;
                                  -    for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) {
                                  -      var siblingTagName = sibling.localName || nameLookup[sibling.nodeType];
                                  -      if (!useTagNames || tagName == siblingTagName || !tagName) {
                                  -        ++index;
                                  -      }
                                  -    }
                                  -
                                  -    var pathIndex = "[" + (index+1) + "]";
                                  -    paths.splice(0, 0, (useTagNames && tagName ? tagName.toLowerCase() : "node()") + pathIndex);
                                  -  }
                                  -
                                  -  var prefix = "/";
                                  -  if (rootPath && paths.length) {
                                  -    prefix = "";
                                  -    paths[0] = rootPath;
                                  -  }
                                  -
                                  -  return prefix + paths.join("/");
                                  -};
                                  -
                                  -FireDiff.Path.getStylePath = function(style) {
                                  -  var paths = [];
                                  -  
                                  -  // Style declarations are not part of the path
                                  -  if (style instanceof CSSStyleDeclaration)     style = style.parentRule;
                                  -  if (!style)     return undefined;
                                  -  
                                  -  var parent = style;
                                  -  while ((parent = style.parentRule || style.parentStyleSheet)) {
                                  -    if (style instanceof CSSStyleSheet)    break;
                                  -    
                                  -    var index = getRuleIndex(style, parent);
                                  -    if (!index)    break;
                                  -    
                                  -    paths.splice(0, 0, "rule()[" + index + "]");
                                  -    style = parent;
                                  -  }
                                  -  
                                  -  // At this point we should be at the sheet object, if we aren't, the style
                                  -  // isn't in the doc
                                  -  var sheetId = getSheetId(style);
                                  -  if (!sheetId)     return undefined;
                                  -  
                                  -  paths.splice(0, 0, "/style()[" + sheetId+ "]");
                                  -  return paths.join("/");
                                  -};
                                  -
                                  -FireDiff.Path.evaluateStylePath = function(path, document) {
                                  -  var parser = /\/?(.*?)\[(.*?)\]/g;
                                  -  var component, current;
                                  -  
                                  -  // The regex appears to maintain state (due to an optimizer?) meaning that
                                  -  // any situation where the entire string is not processed, such as an error
                                  -  // case, could cause future calls to fail.
                                  -  parser.lastIndex = 0;
                                  -  while (component = parser.exec(path)) {
                                  -    var lookup = styleLookups[component[1]];
                                  -    if (!lookup) {
                                  -      return undefined;
                                  -    }
                                  -    
                                  -    current = lookup(current || document, component[2]);
                                  -    if (!current) {
                                  -      return undefined;
                                  -    }
                                  -  }
                                  -  
                                  -  return current;
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/search.js b/branches/flexBox/content/firediff/content/firediff-original/search.js
                                  deleted file mode 100644
                                  index f44f8e08..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/search.js
                                  +++ /dev/null
                                  @@ -1,452 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -/**
                                  - * Classes used to iterate over DOM content and search Firediff pages.
                                  - */
                                  -FireDiff.search = FBL.ns(function() { with (FBL) {
                                  -
                                  -const Events = FireDiff.events,
                                  -      VersionCompat = FireDiff.VersionCompat,
                                  -      DiffDomplate = FireDiff.domplate,
                                  -      Search = this;
                                  -
                                  -/**
                                  - * @class Search for use in pages where all content is available and visible at all times.
                                  - */
                                  -this.PageSearch = function() {
                                  -  var currentSearch;
                                  -
                                  -  /**
                                  -   * Execute the search
                                  -   *
                                  -   * @param {String} text Search text
                                  -   * @param {boolean} reverse true to perform a reverse search
                                  -   * @param {Element} panel Panel to search
                                  -   */
                                  -  this.search = function(text, reverse, panel) {
                                  -    var panelNode = panel.panelNode;
                                  -    if (!text) {
                                  -      currentSearch = undefined;
                                  -      return false;
                                  -    }
                                  -
                                  -    var row;
                                  -    if (currentSearch && text == currentSearch.text) {
                                  -      row = currentSearch.findNext(true, false, reverse, Firebug.searchCaseSensitive);
                                  -    } else {
                                  -      function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -      currentSearch = new TextSearch(panelNode, findRow);
                                  -      row = currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -    }
                                  -
                                  -    // TODO : What a11y events should this produce?
                                  -    if (row) {
                                  -      panel.document.defaultView.getSelection().selectAllChildren(row);
                                  -      scrollIntoCenterView(row, panelNode);
                                  -      return true;
                                  -    } else {
                                  -      return false;
                                  -    }
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Constructs a NodeSearch instance.
                                  - *
                                  - * @class Class used to search a DOM tree for the given text. Will display
                                  - *        the search results in a IO Box.
                                  - *
                                  - * @constructor
                                  - * @param {String} text Text to search for
                                  - * @param {Object} root Root of search. This may be an element or a document
                                  - * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
                                  - * @param {Object} ioBox IO Box to display the search results in
                                  - */
                                  -this.DOMDiffNodeSearch = function(text, root, panelNode, ioBox) {
                                  -  VersionCompat.NodeSearch.call(
                                  -      this, text, root, panelNode, ioBox, new Search.DOMDiffWalker(root));
                                  -  var re = new ReversibleRegExp(text, "m");
                                  -
                                  -  /**
                                  -   * Checks a given node for a search match.
                                  -   *
                                  -   * @private
                                  -   */
                                  -  this.checkNode = function(node, reverse, caseSensitive, firstStep) {
                                  -    var originalNode = node;
                                  -    node = node.clone || node;
                                  -
                                  -    var checkOrder, checkValues = [];
                                  -    if (originalNode.attrNode) {
                                  -      originalNode = node.attrNode;
                                  -
                                  -      var diff = DiffDomplate.DomUtil.diffAttr(node);
                                  -      diff = diff.reduce(function(prev, current) { return prev + current.value; }, "");
                                  -
                                  -      var nameCheck = { value: originalNode.nodeName, isValue: false, caseSensitive: false };
                                  -      var valueCheck = { value: diff, isValue: true, caseSensitive: caseSensitive };
                                  -      checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -    } else if (originalNode.subType == "char_data_modified") {
                                  -      var diff = DiffDomplate.DomUtil.diffText(originalNode);
                                  -      diff = diff.reduce(function(prev, current) { return prev + current.value; }, "");
                                  -
                                  -      checkOrder = [{value: diff, isValue: false, caseSensitive: caseSensitive }];
                                  -    } else if (node.nodeType != Node.TEXT_NODE) {
                                  -      var nameCheck = { value: node.nodeName, isValue: false, caseSensitive: false };
                                  -      var valueCheck = { value: node.nodeValue, isValue: true, caseSensitive: caseSensitive };
                                  -      checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -    } else {
                                  -      checkOrder = [{value: node.nodeValue, isValue: false, caseSensitive: caseSensitive }];
                                  -    }
                                  -
                                  -    for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -      var m = re.exec(checkOrder[i].value, reverse, checkOrder[i].caseSensitive);
                                  -      if (m) {
                                  -        return {
                                  -            node: originalNode,
                                  -            isValue: checkOrder[i].isValue,
                                  -            match: m
                                  -        };
                                  -      }
                                  -    }
                                  -  };
                                  -
                                  -  var super_openToNode = this.openToNode;
                                  -  this.openToNode = function(node, isValue) {
                                  -    var ret = super_openToNode.call(this, node, isValue);
                                  -    if (!ret) {
                                  -      // Fail over to the node if it's not supported by the base impl
                                  -      ret = ioBox.openToObject(node);
                                  -    }
                                  -    return ret;
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Constructs a DOMDiffWalker instance.
                                  - *
                                  - * @constructor
                                  - * @class Implements an ordered traveral of the document, including diff events,
                                  - *        attributes and iframe contents within the results.
                                  - *
                                  - *        Note that the order for attributes is not defined. This will follow the
                                  - *        same order as the Element.attributes accessor.
                                  - * @param {Element} root Element to traverse
                                  - */
                                  -this.DOMDiffWalker = function(root) {
                                  -  var stack = [];
                                  -  var pastStart, pastEnd;
                                  -
                                  -  function pushStack(currentNode, reverse) {
                                  -    if (currentNode) {
                                  -      var attrs = Search.getAttributes(currentNode),
                                  -          children = [];
                                  -
                                  -      // Precache the child elements to make the logic easier. If this becomes
                                  -      // a performance issue then this can be revisited using an inline selection
                                  -      // algorithm
                                  -      try {
                                  -        var baseIter;
                                  -        var removeIter = new Search.RemovedIterator(
                                  -            new Search.DOMIterator(currentNode.clone || currentNode),
                                  -            currentNode[Events.AnnotateAttrs.REMOVE_CHANGES]);
                                  -        while (1) {
                                  -          children.push(removeIter.next());
                                  -        }
                                  -      } catch (err) {
                                  -        /* NOP */
                                  -      }
                                  -
                                  -      stack.unshift({
                                  -        node: currentNode,
                                  -        attrs: attrs,
                                  -        attrIndex: reverse ? attrs.length-1 : -1,
                                  -        children: children,
                                  -        childIndex: reverse ? children.length-1 : -1
                                  -      });
                                  -      return stack[0];
                                  -    }
                                  -  }
                                  -
                                  -  function pushDescendents(el) {
                                  -    while (el) {
                                  -      pushStack(el, true);
                                  -      if (((el.nodeName || "").toUpperCase() == "IFRAME")) {
                                  -        el = el.contentDocument.documentElement;
                                  -      } else {
                                  -        el = stack[0].children[stack[0].children.length-1];
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  /**
                                  -   * Move to the next node.
                                  -   *
                                  -   * @return The next node if one exists, otherwise undefined.
                                  -   */
                                  -  this.nextNode = function() {
                                  -    if (pastEnd) {
                                  -      return undefined;
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      // We are working with a new tree walker
                                  -      pushStack(root);
                                  -    } else {
                                  -      var stackEl = stack[0];
                                  -
                                  -      // First check attributes
                                  -      if (stackEl.attrIndex < stackEl.attrs.length-1) {
                                  -        stackEl.attrIndex++;
                                  -      } else if ((stackEl.node.nodeName || "").toUpperCase() == "IFRAME"
                                  -          && stackEl.node.contentDocument) {
                                  -        // Attributes have completed, check for iframe contents
                                  -        pushStack(stackEl.node.contentDocument.documentElement);
                                  -      } else {
                                  -        while (stack.length) {
                                  -          stackEl = stack[0];
                                  -          stackEl.childIndex++;
                                  -          if (stackEl.childIndex < stackEl.children.length) {
                                  -            pushStack(stackEl.children[stackEl.childIndex]);
                                  -            break;
                                  -          } else {
                                  -            // The end, pop
                                  -            stack.shift();
                                  -          }
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      pastEnd = true;
                                  -    } else {
                                  -      pastStart = false;
                                  -    }
                                  -
                                  -    return this.currentNode();
                                  -  };
                                  -
                                  -  /**
                                  -   * Move to the previous node.
                                  -   *
                                  -   * @return The previous node if one exists, undefined otherwise.
                                  -   */
                                  -  this.previousNode = function() {
                                  -    if (pastStart) {
                                  -      return undefined;
                                  -    }
                                  -
                                  -    var stackEl = stack[0];
                                  -    if (!stackEl) {
                                  -      // Generate the stack up to the last element
                                  -      pushDescendents(root);
                                  -    } else if (stackEl.childIndex >= 0) {
                                  -      stackEl.childIndex--;
                                  -      pushDescendents(stackEl.children[stackEl.childIndex]);
                                  -    } else if (stackEl.attrIndex >= 0) {
                                  -      stackEl.attrIndex--;
                                  -    } else {
                                  -      stack.shift();
                                  -      stackEl = stack[0];
                                  -      if (stackEl && stackEl.childIndex >= 0) {
                                  -        stackEl.childIndex--;
                                  -        pushDescendents(stackEl.children[stackEl.childIndex]);
                                  -      }
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      pastStart = true;
                                  -    } else {
                                  -      pastEnd = false;
                                  -    }
                                  -
                                  -    return this.currentNode();
                                  -  };
                                  -
                                  -  /**
                                  -   * Retrieves the current node.
                                  -   *
                                  -   * @return The current node, if not past the beginning or end of the iteration.
                                  -   */
                                  -  this.currentNode = function() {
                                  -    var stackEl = stack[0];
                                  -    if (stackEl) {
                                  -      if (stackEl.attrIndex >= 0) {
                                  -        return stackEl.attrs[stackEl.attrIndex];
                                  -      } else {
                                  -        return stackEl.node;
                                  -      }
                                  -    }
                                  -  };
                                  -
                                  -  /**
                                  -   * Resets the walker position back to the initial position.
                                  -   */
                                  -  this.reset = function() {
                                  -    pastStart = false;
                                  -    pastEnd = false;
                                  -    stack = [];
                                  -  };
                                  -
                                  -  this.reset();
                                  -};
                                  -
                                  -/**
                                  - * @class Iterates over the contents of an array
                                  - */
                                  -this.ArrayIterator = function(array) {
                                  -  var index = -1;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    if (++index >= array.length)    $break();
                                  -    return array[index];
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * @class Iterates over the children of a given node.
                                  - */
                                  -this.DOMIterator = function(node) {
                                  -  var curNode = node.firstChild;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    var ret = curNode;
                                  -
                                  -    curNode = curNode.nextSibling;
                                  -    while (curNode && Firebug.DiffModule.ignoreNode(curNode)) {
                                  -      curNode = curNode.nextSibling;
                                  -    }
                                  -
                                  -    if (!ret)  $break();
                                  -    return ret;
                                  -  }
                                  -}
                                  -
                                  -/**
                                  - * @class Iterates over a child iterator and a set of removed events, merging
                                  - *        the remove events at the proper location in the iteration.
                                  - */
                                  -this.RemovedIterator = function(content, removed, includeFilter) {
                                  -  removed = removed || [];
                                  -
                                  -  var nodeIndex = 1, removedIndex = 0,
                                  -      lastId;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    // Check for removed at the current position
                                  -    while (true) {
                                  -      while (removedIndex < removed.length) {
                                  -        var curChange = removed[removedIndex];
                                  -        lastId = lastId || FireDiff.Path.getIdentifier(curChange.xpath);
                                  -        if (lastId.index <= nodeIndex || nodeIndex < 0) {
                                  -          removedIndex++;   lastId = undefined;
                                  -          if (!includeFilter || includeFilter(curChange)) {
                                  -            return curChange;
                                  -          }
                                  -        } else {
                                  -          break;
                                  -        }
                                  -      }
                                  -
                                  -      // Read the content list
                                  -      nodeIndex++;
                                  -      if (content) {
                                  -        try {
                                  -          var ret = content.next();
                                  -          if (ret && (!includeFilter || includeFilter(ret))) {
                                  -            if (ret.nodeType == Node.TEXT_NODE && ret[Events.AnnotateAttrs.CHANGES]) {
                                  -              return ret[Events.AnnotateAttrs.CHANGES];
                                  -            } else {
                                  -              return ret;
                                  -            }
                                  -          }
                                  -        } catch (err) {
                                  -          // Assume this is StopIteration
                                  -          content = undefined;
                                  -        }
                                  -      } else if (removedIndex >= removed.length) {
                                  -        // Content and removed exhausted
                                  -        $break();
                                  -      }
                                  -    }
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Retrieves all attributes for a given change or element. This includes all
                                  - * changes and existing attributes.
                                  - */
                                  -this.getAttributes = function(change) {
                                  -  var attrs = [], attrSeen = {};
                                  -  var idAttr, classAttr, changeAttr;
                                  -  var el = change.clone || change;
                                  -
                                  -  var changes = el[Events.AnnotateAttrs.ATTR_CHANGES] || {};
                                  -  if (change.clone && change.attrName) {
                                  -    changes = {};
                                  -    changes[change.attrName] = change;
                                  -  }
                                  -
                                  -  if (el.attributes) {
                                  -    for (var i = 0; i < el.attributes.length; ++i) {
                                  -      var attr = el.attributes[i];
                                  -      if (attr.localName.indexOf("firebug-") != -1)
                                  -         continue;
                                  -
                                  -      // We need to include the change object as domplate does not have an easy way
                                  -      // to pass multiple arguments to a processing method
                                  -      var curChange = changes[attr.localName];
                                  -      if (curChange) {
                                  -          changeAttr = {
                                  -              localName: attr.localName,
                                  -              nodeValue: attr.nodeValue,
                                  -              attrNode: attr,
                                  -              change: curChange
                                  -          };
                                  -          attr = changeAttr;
                                  -      }
                                  -
                                  -      attrSeen[attr.localName] = true;
                                  -      if (attr.localName == "id") {
                                  -        idAttr = attr;
                                  -      }
                                  -      else if (attr.localName == "class") {
                                  -       classAttr = attr;
                                  -      }
                                  -      else {
                                  -        attrs.push(attr);
                                  -      }
                                  -    }
                                  -  }
                                  -  if (classAttr) {
                                  -    attrs.splice(0, 0, classAttr);
                                  -  }
                                  -  if (idAttr) {
                                  -    attrs.splice(0, 0, idAttr);
                                  -  }
                                  -
                                  -  // Handle any removed attributes
                                  -  for (var i in changes) {
                                  -    if (changes.hasOwnProperty(i) && !attrSeen.hasOwnProperty(i)) {
                                  -      attrs.push({
                                  -          localName: i,
                                  -          nodeValue: changes[i].previousValue,
                                  -          change: changes[i]
                                  -      });
                                  -    }
                                  -  }
                                  -
                                  -  return attrs;
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff-original/versionCompat.js b/branches/flexBox/content/firediff/content/firediff-original/versionCompat.js
                                  deleted file mode 100644
                                  index e27a90b6..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff-original/versionCompat.js
                                  +++ /dev/null
                                  @@ -1,310 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -const HTMLLib = Firebug.HTMLLib || {};
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function NodeSearch(text, root, panelNode, ioBox, walker)
                                  -{
                                  -    root = root.documentElement || root;
                                  -    walker = walker || new DOMWalker(root);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    /**
                                  -     * Finds the first match within the document.
                                  -     *
                                  -     * @param {boolean} revert true to search backward, false to search forward
                                  -     * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -     * @return true if no more matches were found, but matches were found previously.
                                  -     */
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Resets the search to the beginning of the document.
                                  -     */
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    /**
                                  -     * Finds the next match in the document.
                                  -     *
                                  -     * The return value is an object with the fields
                                  -     * - node: Node that contains the match
                                  -     * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
                                  -     * - match: Regular expression result from the match
                                  -     *
                                  -     * @param {boolean} revert true to search backward, false to search forward
                                  -     * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -     * @return Match object if found
                                  -     */
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper util used to scan the current search result for more results
                                  -     * in the same object.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == !!reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Checks a given node for a search match.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Opens the given node in the associated IO Box.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return nodeBox.getElementsByClassName("nodeTag")[0];
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Selects the search results.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearch.selectMatched match " + match, nodeBox); }
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    /**
                                  -     * Select text node search results.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -        if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearch.selectNodeText text: " + text + " index: " + index, nodeBox); }
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearc.selectNodeText lastRange", this.lastRange); }
                                  -
                                  -            row = this.lastRow = this.textSearch.findNext(false, undefined, reverse, caseSensitive);
                                  -
                                  -        }
                                  -
                                  -        if (!row)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode; }
                                  -            this.textSearch = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = this.textSearch.find(text, reverse, caseSensitive);
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            range = this.lastRange = this.textSearch.range;
                                  -
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function isWhitespaceText(node) {
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function isSourceElement(element) {
                                  -  var tag = element.localName.toLowerCase();
                                  -  return tag == "script" || tag == "link" || tag == "style"
                                  -      || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -/**
                                  - * Defines lib routes that are supported in one version of Firebug but not
                                  - * another. Methods defined in here should be pruned as the minimum Firebug
                                  - * version is updated.
                                  - */
                                  -FireDiff.VersionCompat = {
                                  -    /**
                                  -     * @see Firebug.HTMLLib.NodeSearch
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    NodeSearch: HTMLLib.NodeSearch || NodeSearch,
                                  -
                                  -    /**
                                  -     * @see Firebug.HTMLLib.isWhitespaceText
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    isWhitespaceText: HTMLLib.isWhitespaceText || isWhitespaceText,
                                  -    
                                  -    /**
                                  -     * @see Firebug.HTMLLib.isSourceElement
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    isSourceElement: HTMLLib.isSourceElement || isSourceElement
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/cssEvents.js b/branches/flexBox/content/firediff/content/firediff/cssEvents.js
                                  deleted file mode 100644
                                  index f863525a..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/cssEvents.js
                                  +++ /dev/null
                                  @@ -1,392 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -i18n = {
                                  -  getString: function(name)
                                  -  {
                                  -      return name;
                                  -  }
                                  -};
                                  -
                                  -var Path = FireDiff.Path,
                                  -  Reps = FireDiff.reps,
                                  -  CSSModel = FireDiff.CSSModel,
                                  -  ChangeEvent = FireDiff.events.ChangeEvent,
                                  -  
                                  -  CHANGES = FireDiff.events.AnnotateAttrs.CHANGES,
                                  -  REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES;
                                  -
                                  -function CSSChangeEvent(style, changeSource, xpath) {
                                  -    ChangeEvent.call(this, changeSource);
                                  -    
                                  -    this.style = style;
                                  -    this.xpath = xpath || Path.getStylePath(style);
                                  -}
                                  -CSSChangeEvent.prototype = extend(ChangeEvent.prototype, {
                                  -    changeType: "CSS",
                                  -
                                  -    isPropSet: function() {},
                                  -    isPropRemoval: function() {},
                                  -
                                  -    getXpath: function(target) { return Path.getStylePath(target); },
                                  -    xpathLookup: function(xpath, root) {
                                  -      return Path.evaluateStylePath(xpath, root);
                                  -    },
                                  -    sameFile: function(target) {
                                  -      var targetXpath = target && (target.xpath || this.getXpath(target));
                                  -      return targetXpath && Path.getTopPath(targetXpath) == Path.getTopPath(this.xpath);
                                  -    },
                                  -    getSnapshot: function(context) {
                                  -      return new Reps.CSSSnapshot(this, context);
                                  -    },
                                  -    getBaseSnapshot: function(context) {
                                  -      var rootPath = Path.getTopPath(this.xpath);
                                  -      var sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -      return new Reps.CSSSnapshot(sheet, context);
                                  -    },
                                  -    getDocumentName: function(context) {
                                  -      var rootPath = Path.getTopPath(this.xpath);
                                  -      var sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -
                                  -      return sheet.href;
                                  -    }
                                  -});
                                  -
                                  -function CSSRuleEvent(style, changeSource, xpath, clone) {
                                  -  CSSChangeEvent.call(this, style, changeSource, xpath);
                                  -  
                                  -  this.clone = clone || CSSModel.cloneCSSObject(style);
                                  -}
                                  -CSSRuleEvent.prototype = extend(CSSChangeEvent.prototype, {
                                  -  // This is a little bit of a hack. The rule editor does not always have a
                                  -  // valid rep object and as a consequence we can't key on the target.
                                  -  //
                                  -  // Since rule insert and remove events always come from Firebug we assume
                                  -  // that this change applies to the current editor
                                  -  appliesTo: function(target) { return target; },
                                  -
                                  -  mergeRevert: function(candidate) {
                                  -    if (Path.isChildOrSelf(this.xpath, candidate.xpath)
                                  -        && this.subType != candidate.subType) {
                                  -      return this.merge(candidate);
                                  -    }
                                  -  }
                                  -});
                                  -
                                  -function CSSInsertRuleEvent(style, changeSource, xpath, clone) {
                                  -  CSSRuleEvent.call(this, style, changeSource, xpath, clone);
                                  -}
                                  -CSSInsertRuleEvent.prototype = extend(CSSRuleEvent.prototype, {
                                  -  subType: "insertRule",
                                  -  getSummary: function() {
                                  -    return i18n.getString("summary.CSSInsertRule");
                                  -  },
                                  -  isElementAdded: function() { return true; },
                                  -
                                  -  annotateTree: function(tree, root) {
                                  -    var parent = this.getInsertActionNode(tree, root).parent;
                                  -    var identifier = Path.getIdentifier(this.xpath);
                                  -    
                                  -    if (!parent && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath + " " + root, tree);
                                  -    }
                                  -    var rule = parent.cssRules[identifier.index-1];
                                  -    if (!rule && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup rule: " + identifier.index + " " + parent, unwrapObject(parent));
                                  -    }
                                  -    rule[CHANGES] = this;
                                  -    rule.xpath = this.xpath;
                                  -    return rule;
                                  -  },
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    if (candidate.isElementRemoved() && this.xpath == candidate.xpath) {
                                  -      return;
                                  -    }
                                  -    
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    } else if (Path.isChildOrSelf(this.xpath, candidate.xpath)
                                  -        && (candidate.isPropSet() || candidate.isPropRemoval())){
                                  -      // TODO : Handle @media nested changes?
                                  -      var clone = this.clone.clone();
                                  -      candidate.apply(clone, this.xpath);
                                  -      
                                  -      return [ new CSSInsertRuleEvent(this.style, this.changeSource, this.xpath, clone) ];
                                  -    }
                                  -  },
                                  -  isCancellation: function(candidate) {
                                  -    return candidate.isElementRemoved()
                                  -        && this.xpath == candidate.xpath
                                  -        && this.clone.equals(candidate.clone);
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return Path.isChildOrSelf(this.xpath, candidate.xpath);
                                  -  },
                                  -  cloneOnXPath: function(xpath) {
                                  -    return new CSSInsertRuleEvent(this.style, this.changeSource, xpath, this.clone);
                                  -  },
                                  -  
                                  -  apply: function(style, xpath) {
                                  -    Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -        function() {
                                  -          var actionNode = this.getInsertActionNode(style, xpath);
                                  -          var identifier = Path.getIdentifier(this.xpath);
                                  -          identifier.index--;
                                  -          
                                  -          if (actionNode.parent instanceof CSSStyleSheet
                                  -              || actionNode.parent instanceof CSSMediaRule) {
                                  -            Firebug.CSSModule.insertRule(actionNode.parent, this.clone.cssText, identifier.index);
                                  -          } else {
                                  -            actionNode.parent.cssRules.splice(identifier.index, 0, CSSModel.cloneCSSObject(this.clone));
                                  -          }
                                  -        }, this));
                                  -  },
                                  -  revert: function(style, xpath) {
                                  -    Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -        function() {
                                  -          var actionNode = this.getInsertActionNode(style, xpath);
                                  -          var identifier = Path.getIdentifier(this.xpath);
                                  -          identifier.index--;
                                  -          
                                  -          if (actionNode.parent instanceof CSSStyleSheet
                                  -              || actionNode.parent instanceof CSSMediaRule) {
                                  -            Firebug.CSSModule.deleteRule(actionNode.parent, identifier.index);
                                  -          } else {
                                  -            actionNode.parent.cssRules.splice(identifier.index, 1);
                                  -          }
                                  -        }, this));
                                  -  }
                                  -});
                                  -
                                  -function CSSRemoveRuleEvent(style, changeSource, xpath, clone, styleSheet) {
                                  -  CSSRuleEvent.call(this, style, changeSource, xpath, clone);
                                  -  this.styleSheet = styleSheet || style.parentStyleSheet;
                                  -}
                                  -CSSRemoveRuleEvent.prototype = extend(CSSRuleEvent.prototype, {
                                  -  subType: "removeRule",
                                  -  getSummary: function() {
                                  -    return i18n.getString("summary.CSSRemoveRule");
                                  -  },
                                  -  isElementRemoved: function() { return true; },
                                  -
                                  -  annotateTree: function(tree, root) {
                                  -    var actionNode = this.getInsertActionNode(tree, root).parent;
                                  -    var list = actionNode[REMOVE_CHANGES] || [];
                                  -    list.push(this);
                                  -    actionNode[REMOVE_CHANGES] = list;
                                  -    // TODO : Verify this is UTed
                                  -    actionNode.xpath = this.xpath;
                                  -    
                                  -    return this;
                                  -  },
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    if (candidate.isElementAdded() && this.xpath == candidate.xpath) {
                                  -      return;
                                  -    }
                                  -    
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    }
                                  -  },
                                  -  mergeRevert: function(candidate) {
                                  -    if (this.isCancellation(candidate)) {
                                  -      return [];
                                  -    }
                                  -  },
                                  -  overridesChange: function(prior) {
                                  -    return !prior.isElementRemoved() && this.xpath == prior.xpath;
                                  -  },
                                  -  isCancellation: function(candidate) {
                                  -    return this.xpath == candidate.xpath
                                  -        && candidate.isElementAdded()
                                  -        && this.clone.equals(candidate.clone);
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return this.isCancellation(candidate);
                                  -  },
                                  -  cloneOnXPath: function(xpath) {
                                  -    return new CSSRemoveRuleEvent(this.style, this.changeSource, xpath, this.clone, this.styleSheet);
                                  -  },
                                  -  
                                  -  apply: CSSInsertRuleEvent.prototype.revert,
                                  -  revert: CSSInsertRuleEvent.prototype.apply
                                  -});
                                  -
                                  -function CSSPropChangeEvent(style, propName, changeSource, xpath) {
                                  -  CSSChangeEvent.call(this, style, changeSource, xpath);
                                  -  
                                  -  this.propName = propName;
                                  -}
                                  -CSSPropChangeEvent.prototype = extend(CSSChangeEvent.prototype, {
                                  -  annotateTree: function(tree, root) {
                                  -    var parent = this.getActionNode(tree, root);
                                  -    
                                  -    if (!parent && FBTrace.DBG_ERRORS) {
                                  -      FBTrace.sysout("CSSRuleEvent.annotateTree: Failed to lookup parent " + this.xpath, tree);
                                  -    }
                                  -    var changes = parent.propChanges || [];
                                  -    changes.push(this);
                                  -    parent.propChanges = changes;
                                  -    parent.xpath = this.xpath;
                                  -    return parent;
                                  -  },
                                  -  
                                  -  merge: function(candidate, simplifyOnly) {
                                  -    var updateXpath = candidate.getMergedXPath(this);
                                  -    if (!simplifyOnly && updateXpath) {
                                  -      return [
                                  -          this.cloneOnXPath(updateXpath),
                                  -          candidate
                                  -        ];
                                  -    }
                                  -    if (this.xpath != candidate.xpath
                                  -        || this.propName != candidate.propName) {
                                  -      return;
                                  -    }
                                  -
                                  -    if (candidate.isPropSet()) {
                                  -      return [
                                  -        new CSSSetPropertyEvent(
                                  -              this.style, this.propName,
                                  -              candidate.propValue, candidate.propPriority,
                                  -              this.prevValue, this.prevPriority, this.changeSource,
                                  -              this.xpath)
                                  -      ];
                                  -    } else {
                                  -      return [
                                  -        new CSSRemovePropertyEvent(
                                  -              this.style, this.propName,
                                  -              this.prevValue, this.prevPriority,
                                  -              this.changeSource, this.xpath)
                                  -      ];
                                  -    }
                                  -  },
                                  -  mergeRevert: function(candidate) {
                                  -    if (this.xpath == candidate.xpath
                                  -        && this.propName == candidate.propName) {
                                  -      return this.merge(candidate);
                                  -    }
                                  -  },
                                  -  affectsCancellation: function(candidate) {
                                  -    return this.xpath == candidate.xpath
                                  -        && this.propName == candidate.propName;
                                  -  }
                                  -});
                                  -
                                  -function CSSSetPropertyEvent(style, propName, propValue, propPriority, prevValue, prevPriority, changeSource, xpath) {
                                  -  CSSPropChangeEvent.call(this, style, propName, changeSource, xpath);
                                  -  
                                  -  this.propValue = propValue;
                                  -  this.propPriority = propPriority;
                                  -  this.prevValue = prevValue;
                                  -  this.prevPriority = prevPriority;
                                  -}
                                  -CSSSetPropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, {
                                  -    subType: "setProp",
                                  -    
                                  -    getSummary: function() {
                                  -        return i18n.getString("summary.CSSSetProperty");
                                  -    },
                                  -    isPropSet: function() { return true; },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.propName == candidate.propName
                                  -          && this.prevValue == candidate.propValue
                                  -          && this.prevPriority == candidate.propPriority;
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new CSSSetPropertyEvent(
                                  -          this.style, this.propName,
                                  -          this.propValue, this.propPriority,
                                  -          this.prevValue, this.prevPriority,
                                  -          this.changeSource,
                                  -          xpath);
                                  -    },
                                  -    
                                  -    apply: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.propValue, this.propPriority);
                                  -          }, this));
                                  -    },
                                  -    revert: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            if (this.prevValue) {
                                  -              Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority);
                                  -            } else {
                                  -              Firebug.CSSModule.removeProperty(actionNode.style, this.propName);
                                  -            }
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -function CSSRemovePropertyEvent(style, propName, prevValue, prevPriority, changeSource, xpath) {
                                  -  CSSPropChangeEvent.call(this, style, propName, changeSource, xpath);
                                  -
                                  -  // Seed empty values for the current state. This makes the domplate
                                  -  // display much easier
                                  -  this.propValue = "";
                                  -  this.propPriority = "";
                                  -  
                                  -  this.prevValue = prevValue;
                                  -  this.prevPriority = prevPriority;
                                  -}
                                  -CSSRemovePropertyEvent.prototype = extend(CSSPropChangeEvent.prototype, {
                                  -    subType: "removeProp",
                                  -    
                                  -    getSummary: function() {
                                  -        return i18n.getString("summary.CSSRemoveProperty");
                                  -    },
                                  -    isPropRemoval: function() { return true; },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType != candidate.subType
                                  -          && this.propName == candidate.propName
                                  -          && this.prevValue == candidate.propValue
                                  -          && this.prevPriority == candidate.propPriority;
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new CSSRemovePropertyEvent(
                                  -          this.style, this.propName,
                                  -          this.prevValue, this.prevPriority,
                                  -          this.changeSource,
                                  -          xpath);
                                  -    },
                                  -    apply: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.removeProperty(actionNode.style, this.propName);
                                  -          }, this));
                                  -    },
                                  -    revert: function(style, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(style, xpath);
                                  -            Firebug.CSSModule.setProperty(actionNode.style, this.propName, this.prevValue, this.prevPriority);
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -FireDiff.events.css = {
                                  -  CSSInsertRuleEvent: CSSInsertRuleEvent,
                                  -  CSSRemoveRuleEvent: CSSRemoveRuleEvent,
                                  -  CSSSetPropertyEvent: CSSSetPropertyEvent,
                                  -  CSSRemovePropertyEvent: CSSRemovePropertyEvent
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/cssModel.js b/branches/flexBox/content/firediff/content/firediff/cssModel.js
                                  deleted file mode 100644
                                  index f7031696..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/cssModel.js
                                  +++ /dev/null
                                  @@ -1,280 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -/*
                                  - * Implements the logic necessary to deep clone as CSS object.
                                  - * 
                                  - * Note that this does not clone the CSS value types, so this could
                                  - * introduce some inconsistencies with the stored data model
                                  - */
                                  -FireDiff.CSSModel = FBL.ns(function() { with (FBL) {
                                  -  function elementEquals(left, right, i) {
                                  -    if (left && left.equals) {
                                  -      if (!left.equals(right)) {
                                  -        if (FBTrace.DBG_FIREDIFF) {
                                  -          FBTrace.sysout("Not Equal equals: " + i + " '" + left + "' '" + right + "'");
                                  -          FBTrace.sysout("Not Equal", left);
                                  -          FBTrace.sysout("Not Equal", right);
                                  -        }
                                  -        return false;
                                  -      }
                                  -    } else {
                                  -      if (left != right) {
                                  -        if (FBTrace.DBG_FIREBUG) {
                                  -          FBTrace.sysout("Not Equal ==: " + i + " '" + left + "' '" + right + "'", left);
                                  -          FBTrace.sysout("Not Equal", left);
                                  -          FBTrace.sysout("Not Equal", right);
                                  -        }
                                  -        return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  }
                                  -  
                                  -  function CloneObject() {}
                                  -  CloneObject.prototype = {
                                  -    equals: function(test) {
                                  -      if (!test)    return false;
                                  -      
                                  -      var tested = { cssText: true },
                                  -          i;
                                  -      for (i in this) {
                                  -        if (this.hasOwnProperty(i) && !tested[i]) {
                                  -          var left = this[i], right = test[i];
                                  -          if (!elementEquals(this[i], test[i], i))    return false;
                                  -          tested[i] = true;
                                  -        }
                                  -      }
                                  -      for (i in test) {
                                  -        if (test.hasOwnProperty(i) && !tested[i]) {
                                  -          // We haven't seen it before, so it must not equal
                                  -          return false;
                                  -        }
                                  -      }
                                  -      return true;
                                  -    },
                                  -    isEqualNode: function(node) {
                                  -      return this.equals(node);
                                  -    },
                                  -    clone: function() {
                                  -      return cloneCSSObject(this);
                                  -    },
                                  -    cloneNode: function() {
                                  -      return this.clone();
                                  -    }
                                  -  }
                                  -  function ArrayCloneObject(array) {
                                  -    this.length = 0;
                                  -    for (var i = 0; i < array.length; i++) {
                                  -      this.push(cloneCSSObject(array[i]));
                                  -    }
                                  -  }
                                  -  ArrayCloneObject.prototype = {
                                  -    // for in interation does not work on built in types, thus we have to
                                  -    // selectively extend the array prototype
                                  -    push: Array.prototype.push,
                                  -    splice: Array.prototype.splice,
                                  -    equals: function arrayEquals(right) {
                                  -      if (!right || this.length != right.length)    return false;
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        if (!elementEquals(this[i], right[i], i))    return false;
                                  -      }
                                  -      return true;
                                  -    }
                                  -  };
                                  -  
                                  -  function StyleDeclarationClone(style) {
                                  -    this.cssText = style.cssText;
                                  -    this.properties = {};
                                  -    this.length = 0;
                                  -
                                  -    // Copied from CSS Panel's getRuleProperties implementation
                                  -    // TODO : Attempt to unify these as a lib method?
                                  -    var lines = this.cssText.match(/(?:[^;\(]*(?:\([^\)]*?\))?[^;\(]*)*;?/g);
                                  -    var propRE = /\s*([^:\s]*)\s*:\s*(.*?)\s*(! important)?;?$/;
                                  -    var line,i=0;
                                  -    while(line=lines[i++]){
                                  -      m = propRE.exec(line);
                                  -      if(!m)    continue;
                                  -      //var name = m[1], value = m[2], important = !!m[3];
                                  -      if (m[2]) {
                                  -        this.setProperty(m[1], m[2], m[3]);
                                  -      }
                                  -    }
                                  -    
                                  -    this.__defineGetter__("cssText", this.generateCSSText);
                                  -  }
                                  -  StyleDeclarationClone.prototype = extend(CloneObject.prototype, {
                                  -    push: Array.prototype.push,
                                  -    splice: Array.prototype.splice,
                                  -    
                                  -    getPropertyValue: function(propertyName) {
                                  -      var prop = this.properties[propertyName];
                                  -      return prop && prop.value;
                                  -    },
                                  -    getPropertyPriority: function(propertyName) {
                                  -      var prop = this.properties[propertyName];
                                  -      return prop && prop.priority;
                                  -    },
                                  -    setProperty: function(propertyName, value, priority) {
                                  -      this.properties[propertyName] = {
                                  -          value: value,
                                  -          priority: priority || "",
                                  -          
                                  -          equals: function(right) {
                                  -            return right && this.value == right.value && this.priority == right.priority;
                                  -          }
                                  -      };
                                  -      if (this.getPropIndex(propertyName) < 0) {
                                  -        this.push(propertyName);
                                  -      }
                                  -    },
                                  -    removeProperty: function(propertyName) {
                                  -      var propIndex = this.getPropIndex(propertyName);
                                  -      if (propIndex >= 0) {
                                  -        this.splice(propIndex, 1);
                                  -        delete this.properties[propertyName];
                                  -      }
                                  -    },
                                  -    equals: function(test) {
                                  -      return CloneObject.prototype.equals.call(this.properties, test.properties);
                                  -    },
                                  -    
                                  -    generateCSSText: function() {
                                  -      var out = [];
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        out.push(this[i]);
                                  -        out.push(": ");
                                  -        out.push(this.getPropertyValue(this[i]));
                                  -        
                                  -        var priority = this.getPropertyPriority(this[i]);
                                  -        if (priority) {
                                  -          out.push(" ");
                                  -          out.push(priority);
                                  -        }
                                  -        out.push("; ");
                                  -      }
                                  -      return out.join("");
                                  -    },
                                  -    getPropIndex: function(propName) {
                                  -      for (var i = 0; i < this.length; i++) {
                                  -        if (this[i] == propName) {
                                  -          return i;
                                  -        }
                                  -      }
                                  -      return -1;
                                  -    }
                                  -  });
                                  -
                                  -  function MediaListClone(media) {
                                  -    ArrayCloneObject.call(this, []);
                                  -    
                                  -    // To comment on my own confusion, even though my expected is not really spec:
                                  -    // https://bugzilla.mozilla.org/show_bug.cgi?id=492925
                                  -    for (var i = 0; i < media.length; i++) {
                                  -      this.push(media.item(i));
                                  -    }
                                  -    this.mediaText = media.mediaText;
                                  -  }
                                  -  MediaListClone.prototype = ArrayCloneObject.prototype;
                                  -  
                                  -  var RulesClone = ArrayCloneObject;
                                  -  
                                  -  function StyleSheetClone(sheet) {
                                  -    this.type = sheet.type;
                                  -    this.disabled = sheet.disabled;
                                  -    this.href = sheet.href;
                                  -    this.title = sheet.title;
                                  -    this.media = new MediaListClone(sheet.media);
                                  -    
                                  -    this.cssRules = new RulesClone(sheet.cssRules);
                                  -  }
                                  -  StyleSheetClone.prototype = extend(CloneObject.prototype, {
                                  -    insertRule: function(rule, index) {
                                  -      // Note: This does not match the CSS object API. Parsing of this will
                                  -      //    be overly complicated, so this function differs from the CSS spec
                                  -      //    in that it will only accept a pre-parsed CSS clone object
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("StyleSheetClone.insertRule: " + index + " " + rule, this.cssRules);
                                  -      this.cssRules.splice(index, 0, rule);
                                  -    },
                                  -    deleteRule: function(index) {
                                  -      this.cssRules.splice(index, 1);
                                  -    }
                                  -  });
                                  -  
                                  -  function CSSRuleClone(rule) {
                                  -    this.type = rule.type;
                                  -    this.cssText = rule.cssText;
                                  -  }
                                  -  CSSRuleClone.prototype = CloneObject.prototype;
                                  -  
                                  -  function CSSStyleRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.selectorText = rule.selectorText;
                                  -    this.style = new StyleDeclarationClone(rule.style);
                                  -
                                  -    this.__defineGetter__("cssText", function() { return this.selectorText + " { " + this.style.cssText + "}" });
                                  -  }
                                  -  CSSStyleRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSMediaRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.cssRules = new RulesClone(rule.cssRules);
                                  -    this.media = new MediaListClone(rule.media);
                                  -  }
                                  -  CSSMediaRuleClone.prototype = extend(CSSRuleClone.prototype, {
                                  -    insertRule: StyleSheetClone.prototype.insertRule,
                                  -    deleteRule: StyleSheetClone.prototype.deleteRule
                                  -  });
                                  -  function CSSFontFaceRuleClone(rule) {
                                  -    CSSStyleRuleClone.call(this, rule);
                                  -    this.selectorText = "@font-face";
                                  -  }
                                  -  CSSFontFaceRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSImportRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    
                                  -    this.href = rule.href;
                                  -    this.media = new MediaListClone(rule.media);
                                  -    this.styleSheet = new StyleSheetClone(rule.styleSheet);
                                  -  }
                                  -  CSSImportRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -  function CSSCharsetRuleClone(rule) {
                                  -    CSSRuleClone.call(this, rule);
                                  -    this.encoding = rule.encoding;
                                  -  }
                                  -  CSSCharsetRuleClone.prototype = extend(CSSRuleClone.prototype, {});
                                  -  
                                  -
                                  -  function cloneCSSObject(cssRule) {
                                  -    if (cssRule instanceof CSSStyleSheet || cssRule instanceof StyleSheetClone) {
                                  -      return new StyleSheetClone(cssRule);
                                  -    } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSStyleRuleClone) {
                                  -      return new CSSStyleRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSMediaRuleClone) {
                                  -      return new CSSMediaRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSFontFaceRuleClone) {
                                  -      return new CSSFontFaceRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSImportRuleClone) {
                                  -      return new CSSImportRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSCharsetRuleClone) {
                                  -      return new CSSCharsetRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSUnknownRule || cssRule instanceof CSSRuleClone) {
                                  -      return new CSSRuleClone(cssRule);
                                  -    } else if (cssRule instanceof CSSStyleDeclaration || cssRule instanceof StyleDeclarationClone) {
                                  -      return new StyleDeclarationClone(cssRule);
                                  -    }
                                  -  }
                                  -  
                                  -  this.StyleSheetClone = StyleSheetClone;
                                  -  this.CSSStyleRuleClone = CSSStyleRuleClone;
                                  -  this.CSSMediaRuleClone = CSSMediaRuleClone;
                                  -  this.CSSFontFaceRuleClone = CSSFontFaceRuleClone;
                                  -  this.CSSImportRuleClone = CSSImportRuleClone;
                                  -  this.CSSCharsetRuleClone = CSSCharsetRuleClone;
                                  -  this.CSSRuleClone = CSSRuleClone;
                                  -  this.StyleDeclarationClone = StyleDeclarationClone;
                                  -  this.cloneCSSObject = cloneCSSObject;
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/diff.js b/branches/flexBox/content/firediff/content/firediff/diff.js
                                  deleted file mode 100644
                                  index 9ae1c23c..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/diff.js
                                  +++ /dev/null
                                  @@ -1,271 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  - * Text diff implementation.
                                  - * 
                                  - * This library supports the following APIS:
                                  - * JsDiff.diffChars: Character by character diff
                                  - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
                                  - * JsDiff.diffLines: Line based diff
                                  - * 
                                  - * JsDiff.diffCss: Diff targeted at CSS content
                                  - * 
                                  - * These methods are based on the implementation proposed in
                                  - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
                                  - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
                                  - */
                                  -var JsDiff = (function() {
                                  -  function clonePath(path) {
                                  -    return { newPos: path.newPos, components: path.components.slice(0) };
                                  -  }
                                  -  function removeEmpty(array) {
                                  -    var ret = [];
                                  -    for (var i = 0; i < array.length; i++) {
                                  -      if (array[i]) {
                                  -        ret.push(array[i]);
                                  -      }
                                  -    }
                                  -    return ret;
                                  -  }
                                  -  function escapeHTML(s) {
                                  -    var n = s;
                                  -    n = n.replace(/&/g, "&amp;");
                                  -    n = n.replace(/</g, "&lt;");
                                  -    n = n.replace(/>/g, "&gt;");
                                  -    n = n.replace(/"/g, "&quot;");
                                  -
                                  -    return n;
                                  -  }
                                  -
                                  -
                                  -  var fbDiff = function(ignoreWhitespace) {
                                  -    this.ignoreWhitespace = ignoreWhitespace;
                                  -  };
                                  -  fbDiff.prototype = {
                                  -      diff: function(oldString, newString) {
                                  -        // Handle the identity case (this is due to unrolling editLength == 0
                                  -        if (newString == oldString) {
                                  -          return [{ value: newString }];
                                  -        }
                                  -        if (!newString) {
                                  -          return [{ value: oldString, removed: true }];
                                  -        }
                                  -        if (!oldString) {
                                  -          return [{ value: newString, added: true }];
                                  -        }
                                  -
                                  -        newString = this.tokenize(newString);
                                  -        oldString = this.tokenize(oldString);
                                  -
                                  -        var newLen = newString.length, oldLen = oldString.length;
                                  -        var maxEditLength = newLen + oldLen;
                                  -        var bestPath = [{ newPos: -1, components: [] }];
                                  -
                                  -        // Seed editLength = 0
                                  -        var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
                                  -        if (bestPath[0].newPos+1 >= newLen && oldPos+1 >= oldLen) {
                                  -          return bestPath[0].components;
                                  -        }
                                  -
                                  -        for (var editLength = 1; editLength <= maxEditLength; editLength++) {
                                  -          for (var diagonalPath = -1*editLength; diagonalPath <= editLength; diagonalPath+=2) {
                                  -            var basePath;
                                  -            var addPath = bestPath[diagonalPath-1],
                                  -                removePath = bestPath[diagonalPath+1];
                                  -            oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
                                  -            if (addPath) {
                                  -              // No one else is going to attempt to use this value, clear it
                                  -              bestPath[diagonalPath-1] = undefined;
                                  -            }
                                  -
                                  -            var canAdd = addPath && addPath.newPos+1 < newLen;
                                  -            var canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
                                  -            if (!canAdd && !canRemove) {
                                  -              bestPath[diagonalPath] = undefined;
                                  -              continue;
                                  -            }
                                  -
                                  -            // Select the diagonal that we want to branch from. We select the prior
                                  -            // path whose position in the new string is the farthest from the origin
                                  -            // and does not pass the bounds of the diff graph
                                  -            if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
                                  -              basePath = clonePath(removePath);
                                  -              this.pushComponent(basePath.components, oldString[oldPos], undefined, true);
                                  -            } else {
                                  -              basePath = clonePath(addPath);
                                  -              basePath.newPos++;
                                  -              this.pushComponent(basePath.components, newString[basePath.newPos], true, undefined);
                                  -            }
                                  -
                                  -            var oldPos = this.extractCommon(basePath, newString, oldString, diagonalPath);
                                  -
                                  -            if (basePath.newPos+1 >= newLen && oldPos+1 >= oldLen) {
                                  -              return basePath.components;
                                  -            } else {
                                  -              bestPath[diagonalPath] = basePath;
                                  -            }
                                  -          }
                                  -        }
                                  -      },
                                  -
                                  -      pushComponent: function(components, value, added, removed) {
                                  -        var last = components[components.length-1];
                                  -        if (last && last.added === added && last.removed === removed) {
                                  -          // We need to clone here as the component clone operation is just
                                  -          // as shallow array clone
                                  -          components[components.length-1] =
                                  -            {value: this.join(last.value, value), added: added, removed: removed };
                                  -        } else {
                                  -          components.push({value: value, added: added, removed: removed });
                                  -        }
                                  -      },
                                  -      extractCommon: function(basePath, newString, oldString, diagonalPath) {
                                  -        var newLen = newString.length,
                                  -            oldLen = oldString.length,
                                  -            newPos = basePath.newPos,
                                  -            oldPos = newPos - diagonalPath;
                                  -        while (newPos+1 < newLen && oldPos+1 < oldLen && this.equals(newString[newPos+1], oldString[oldPos+1])) {
                                  -          newPos++;
                                  -          oldPos++;
                                  -          
                                  -          this.pushComponent(basePath.components, newString[newPos], undefined, undefined);
                                  -        }
                                  -        basePath.newPos = newPos;
                                  -        return oldPos;
                                  -      },
                                  -
                                  -      equals: function(left, right) {
                                  -        var reWhitespace = /\S/;
                                  -        if (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)) {
                                  -          return true;
                                  -        } else {
                                  -          return left == right;
                                  -        }
                                  -      },
                                  -      join: function(left, right) {
                                  -        return left + right;
                                  -      },
                                  -      tokenize: function(value) {
                                  -        return value;
                                  -      }
                                  -  };
                                  -  
                                  -  var CharDiff = new fbDiff();
                                  -  
                                  -  var WordDiff = new fbDiff(true);
                                  -  WordDiff.tokenize = function(value) {
                                  -    return removeEmpty(value.split(/(\s+|\b)/g));
                                  -  };
                                  -  
                                  -  var CssDiff = new fbDiff(true);
                                  -  CssDiff.tokenize = function(value) {
                                  -    return removeEmpty(value.split(/([{}:;,]|\s+)/g));
                                  -  };
                                  -  
                                  -  var LineDiff = new fbDiff();
                                  -  LineDiff.tokenize = function(value) {
                                  -    var values = value.split(/\n/g),
                                  -        ret = [];
                                  -    for (var i = 0; i < values.length-1; i++) {
                                  -      ret.push(values[i] + "\n");
                                  -    }
                                  -    if (values.length) {
                                  -      ret.push(values[values.length-1]);
                                  -    }
                                  -    return ret;
                                  -  };
                                  -  
                                  -  return {
                                  -    diffChars: function(oldStr, newStr) { return CharDiff.diff(oldStr, newStr); },
                                  -    diffWords: function(oldStr, newStr) { return WordDiff.diff(oldStr, newStr); },
                                  -    diffLines: function(oldStr, newStr) { return LineDiff.diff(oldStr, newStr); },
                                  -
                                  -    diffCss: function(oldStr, newStr) { return CssDiff.diff(oldStr, newStr); },
                                  -
                                  -    createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) {
                                  -      var ret = [];
                                  -      
                                  -      ret.push("Index: " + fileName);
                                  -      ret.push("===================================================================");
                                  -      ret.push("--- " + fileName + "\t" + oldHeader);
                                  -      ret.push("+++ " + fileName + "\t" + newHeader);
                                  -      
                                  -      var diff = LineDiff.diff(oldStr, newStr);
                                  -      diff.push({value: "", lines: []});   // Append an empty value to make cleanup easier
                                  -      
                                  -      var oldRangeStart = 0, newRangeStart = 0, curRange = [],
                                  -          oldLine = 1, newLine = 1;
                                  -      for (var i = 0; i < diff.length; i++) {
                                  -        var current = diff[i],
                                  -            lines = current.lines || current.value.replace(/\n$/, "").split("\n");
                                  -        current.lines = lines;
                                  -        
                                  -        if (current.added || current.removed) {
                                  -          if (!oldRangeStart) {
                                  -            var prev = diff[i-1];
                                  -            oldRangeStart = oldLine;
                                  -            newRangeStart = newLine;
                                  -            
                                  -            if (prev) {
                                  -              curRange.push.apply(curRange, prev.lines.slice(-4).map(function(entry) { return " " + entry; }));
                                  -              oldRangeStart -= 4;
                                  -              newRangeStart -= 4;
                                  -            }
                                  -          }
                                  -          curRange.push.apply(curRange, lines.map(function(entry) { return (current.added?"+":"-") + entry; }));
                                  -          if (current.added) {
                                  -            newLine += lines.length;
                                  -          } else {
                                  -            oldLine += lines.length;
                                  -          }
                                  -        } else {
                                  -          if (oldRangeStart) {
                                  -            if (lines.length <= 8 && i < diff.length-1) {
                                  -              // Overlapping 
                                  -              curRange.push.apply(curRange, lines.map(function(entry) { return " " + entry; }));
                                  -            } else {
                                  -              // end the range and output
                                  -              var contextSize = Math.min(lines.length, 4);
                                  -              ret.push(
                                  -                  "@@ -" + oldRangeStart + "," + (oldLine-oldRangeStart+contextSize)
                                  -                  + " +" + newRangeStart + "," + (newLine-newRangeStart+contextSize)
                                  -                  + " @@");
                                  -              ret.push.apply(ret, curRange);
                                  -              ret.push.apply(ret, lines.slice(0, contextSize).map(function(entry) { return " " + entry; }));
                                  -
                                  -              oldRangeStart = 0;  newRangeStart = 0; curRange = [];
                                  -            }
                                  -          }
                                  -          oldLine += lines.length;
                                  -          newLine += lines.length;
                                  -        }
                                  -      }
                                  -      if (diff.length > 1 && !/\n$/.test(diff[diff.length-2].value)) {
                                  -        ret.push("\\ No newline at end of file\n");
                                  -      }
                                  -      
                                  -      return ret.join("\n");
                                  -    },
                                  -
                                  -    convertChangesToXML: function(changes){
                                  -      var ret = [];
                                  -      for ( var i = 0; i < changes.length; i++) {
                                  -        var change = changes[i];
                                  -        if (change.added) {
                                  -          ret.push("<ins>");
                                  -        } else if (change.removed) {
                                  -          ret.push("<del>");
                                  -        }
                                  -
                                  -        ret.push(escapeHTML(change.value));
                                  -
                                  -        if (change.added) {
                                  -          ret.push("</ins>");
                                  -        } else if (change.removed) {
                                  -          ret.push("</del>");
                                  -        }
                                  -      }
                                  -      return ret.join("");
                                  -    }
                                  -  };
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/diffModule.js b/branches/flexBox/content/firediff/content/firediff/diffModule.js
                                  deleted file mode 100644
                                  index 11d6c58d..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/diffModule.js
                                  +++ /dev/null
                                  @@ -1,396 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var FirebugContext;
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path;
                                  -
                                  -function revertChange(curChange, context) {
                                  -  var ownerDoc, rootPath;
                                  -  if (curChange.changeType == "CSS") {
                                  -    rootPath = Path.getTopPath(curChange.xpath);
                                  -    ownerDoc = Path.evaluateStylePath(rootPath, context.window.document);
                                  -  } else {
                                  -    ownerDoc = context.window.document.documentElement;
                                  -    rootPath = Path.getElementPath(ownerDoc);
                                  -  }
                                  -
                                  -  if (FBTrace.DBG_FIREDIFF) FBTrace.sysout("Revert change", curChange);
                                  -  curChange.revert(ownerDoc, rootPath);
                                  -}
                                  -
                                  -Firebug.DiffModule = extend(Firebug.Module, {
                                  -    panelName: "firediff",
                                  -    
                                  -    supportsFirebugEdits: Firebug.Editor.supportsStopEvent,
                                  -    
                                  -    initialize: function() {
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        
                                  -        if (Firebug.CSSModule) {
                                  -            // Maintain support for older versions of firebug that do not
                                  -            // have the CSS change event implementation
                                  -            Firebug.CSSModule.addListener(this);
                                  -        }
                                  -        if (Firebug.HTMLModule) {
                                  -          Firebug.HTMLModule.addListener(this);
                                  -        }
                                  -        if (Firebug.Editor.supportsStopEvent) {
                                  -          Firebug.Editor.addListener(this);
                                  -        }
                                  -    },
                                  -
                                  -    loadedContext: function(context) {
                                  -      if (this.isAlwaysEnabled()) {
                                  -        this.monitorContext(context);
                                  -      }
                                  -    },
                                  -    onEnabled: function(context) {
                                  -      this.monitorContext(context);
                                  -    },
                                  -    onDisabled: function(context) {
                                  -      this.unmonitorContext(context);
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Actions
                                  -    revertAllChanges: function(change, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      var changes = diffContext.changes;
                                  -
                                  -      // Revert means everything, not just those that are filtered.
                                  -      // Keeping the change model in sync for arbitrary changes is
                                  -      // currently out of scope
                                  -      //
                                  -      // We also rely on filter to be designed such that the model's
                                  -      // integrity remains.
                                  -      for (var i = changes.length; i > 0; i--) {
                                  -        var curChange = changes[i-1];
                                  -
                                  -        revertChange(curChange, context);
                                  -        changes.splice(i-1, 1);
                                  -
                                  -        if (change == curChange) {
                                  -          break;
                                  -        }
                                  -      }
                                  -    },
                                  -    revertChange: function(change, context, force) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      var changes = diffContext.changes;
                                  -      
                                  -      var tempChanges = changes.slice();
                                  -      var revert = Events.mergeRevert(change, tempChanges);
                                  -      if ((revert.length > 1 || changes.length - tempChanges.length > 1) && !force) {
                                  -        return false; 
                                  -      }
                                  -      
                                  -      // Perform the revert
                                  -      for (var i = revert.length; i > 0; i--) {
                                  -        var curChange = revert[i-1];
                                  -
                                  -        revertChange(curChange, context);
                                  -      }
                                  -      
                                  -      diffContext.changes = tempChanges;
                                  -      return revert;
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Editor Listener
                                  -    onBeginEditing: function(panel, editor, target, value) {
                                  -      this.onBeginFirebugChange(target);
                                  -      this.onSaveEdit(panel, editor, target, value);
                                  -    },
                                  -    onSaveEdit: function(panel, editor, target, value, previousValue) {
                                  -      // Update the data store used for the HTML editor monitoring
                                  -      var diffContext = this.getDiffContext();
                                  -      diffContext.htmlEditPath = this.getHtmlEditorPaths(editor);
                                  -    },
                                  -    onStopEdit: function(panel, editor, target) {
                                  -      this.onEndFirebugChange(target);
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // CSSModule Listener
                                  -    onCSSInsertRule: function(styleSheet, cssText, ruleIndex) {
                                  -      styleSheet.source = "dispatch";
                                  -      this.recordChange(
                                  -          new Events.css.CSSInsertRuleEvent(
                                  -              styleSheet.cssRules[ruleIndex],
                                  -              Events.ChangeSource.FIREBUG_CHANGE));
                                  -    },
                                  -    onCSSDeleteRule: function(styleSheet, ruleIndex) {
                                  -      styleSheet.source = "dispatch";
                                  -      this.recordChange(
                                  -          new Events.css.CSSRemoveRuleEvent(
                                  -              styleSheet.cssRules[ruleIndex],
                                  -              Events.ChangeSource.FIREBUG_CHANGE));
                                  -    },
                                  -    onCSSSetProperty: function(style, propName, propValue, propPriority, prevValue, prevPriority, parent, baseText) {
                                  -      if (!style.parentRule) {
                                  -        // If we are dealing with an older version of firebug, protect ourselves from this failure and
                                  -        // just drop the change completely
                                  -        if (!parent)
                                  -          return;
                                  -        
                                  -        // This is a change to the inline style of a particular element, handle this.
                                  -        // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679
                                  -        this.recordChange(
                                  -            new Events.dom.DOMAttrChangedEvent(
                                  -                parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText,
                                  -                undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      } else {
                                  -        this.recordChange(
                                  -            new Events.css.CSSSetPropertyEvent(
                                  -                style.parentRule, propName, propValue, propPriority, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      }
                                  -    },
                                  -    
                                  -    onCSSRemoveProperty: function(style, propName, prevValue, prevPriority, parent, baseText) {
                                  -      if (!style.parentRule) {
                                  -        // If we are dealing with an older version of firebug, protect ourselves from this failure and
                                  -        // just drop the change completely
                                  -        if (!parent)
                                  -          return;
                                  -        
                                  -        // This is a change to the inline style of a particular element, handle this.
                                  -        // See: https://bugzilla.mozilla.org/show_bug.cgi?id=338679
                                  -        this.recordChange(
                                  -            new Events.dom.DOMAttrChangedEvent(
                                  -                parent, MutationEvent.MODIFICATION, "style", style.cssText, baseText,
                                  -                undefined, undefined, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      } else {
                                  -        this.recordChange(
                                  -            new Events.css.CSSRemovePropertyEvent(
                                  -                style.parentRule, propName, prevValue, prevPriority, Events.ChangeSource.FIREBUG_CHANGE));
                                  -      }
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // HTMLModule Listener
                                  -    onBeginFirebugChange: function(node, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      
                                  -      diffContext.editTarget = node;
                                  -      
                                  -      var rep = Firebug.getRepObject(node) || node;
                                  -      if (rep instanceof Node) {
                                  -        diffContext.editTargetXpath = Path.getElementPath(rep);
                                  -      } else if (rep instanceof CSSRule || rep instanceof StyleSheet) {
                                  -        diffContext.editTargetXpath = Path.getStylePath(rep);
                                  -      } else {
                                  -        diffContext.editTargetXpath = undefined;
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.onBeginFirebugChange", diffContext.editTarget);
                                  -      
                                  -      diffContext.editEvents = [];
                                  -    },
                                  -    
                                  -    onEndFirebugChange: function(node, context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModile.onEndFirebugChange: " + node, diffContext.editEvents);
                                  -      
                                  -      var editEvents = diffContext.editEvents;
                                  -      if (editEvents.length) {
                                  -        editEvents = Events.merge(editEvents, true);
                                  -        
                                  -        for (var i = 0; i < editEvents.length; i++) {
                                  -          var change = editEvents[i];
                                  -          // Special case for HTML free edit. It's not pretty but it gets the
                                  -          // job done. In the future we may want to consider executing changes
                                  -          // in the Firebug editors within ignore blocks, and generating events
                                  -          // for the final states, but for now we want to keep the coupling
                                  -          // low
                                  -          function htmlEditChange() {
                                  -            return diffContext.htmlEditPath
                                  -                && diffContext.htmlEditPath[0] <= change.xpath
                                  -                && change.xpath <= diffContext.htmlEditPath[1];
                                  -          }
                                  -          function changeApplies() {
                                  -            return change.appliesTo(Firebug.getRepObject(diffContext.editTarget) || diffContext.editTarget, diffContext.editTargetXpath);
                                  -          }
                                  -          if (htmlEditChange() || changeApplies()) {
                                  -            change.changeSource = Events.ChangeSource.FIREBUG_CHANGE;
                                  -          }
                                  -          this.dispatchChange(change);
                                  -        }
                                  -      }
                                  -      
                                  -      delete diffContext.editTarget;
                                  -      delete diffContext.editTargetXpath;
                                  -      delete diffContext.editEvents;
                                  -      delete diffContext.htmlEditPath;
                                  -    },
                                  -    
                                  -    //////////////////////////////////////////////
                                  -    // Self
                                  -    domEventLogger: function(ev, context) {
                                  -      if (!this.ignoreNode(ev.target)) {
                                  -        var diffContext = this.getDiffContext(context);
                                  -        this.recordChange(
                                  -            Events.dom.createDOMChange(ev, diffContext.changeSource),
                                  -            context);
                                  -      }
                                  -    },
                                  -    charDataChangedEventLogger: function(ev, context) {
                                  -      // Filter out char data events whose parents are a firebug object
                                  -      var filterNode = ev.target.parentNode;
                                  -      if (!this.ignoreNode(ev.target.parentNode)) {
                                  -        this.domEventLogger(ev, context);
                                  -      }
                                  -    },
                                  -    attributeChangedEventLogger: function(ev, context) {
                                  -        // We only care about attributes that actually change or are created or deleted
                                  -        if (ev.attrChange != MutationEvent.MODIFICATION
                                  -                || ev.newValue != ev.prevValue) {
                                  -            this.domEventLogger(ev, context);
                                  -        }
                                  -    },
                                  -    
                                  -    monitorContext: function(context) {
                                  -      if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.monitorContext", context); }
                                  -      var diffContext = this.getDiffContext(context);
                                  -      if (diffContext.eventLogger)    return;
                                  -
                                  -      diffContext.eventLogger = bind(this.domEventLogger, this, context);
                                  -      diffContext.attrEventLogger = bind(this.attributeChangedEventLogger, this, context);
                                  -      diffContext.charDataEventLogger = bind(this.charDataChangedEventLogger, this, context);
                                  -      
                                  -      context.window.addEventListener("DOMNodeInserted", diffContext.eventLogger, true);
                                  -      context.window.addEventListener("DOMNodeRemoved", diffContext.eventLogger, true);
                                  -      context.window.addEventListener("DOMAttrModified", diffContext.attrEventLogger, true);
                                  -      context.window.addEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true);
                                  -    },
                                  -    unmonitorContext: function(context) {
                                  -        if (FBTrace.DBG_ACTIVATION || FBTrace.DBG_FIREDIFF) { FBTrace.sysout("DiffModule.unmonitorContext", context); }
                                  -        var diffContext = this.getDiffContext(context);
                                  -        if (!diffContext.eventLogger)    return;
                                  -        
                                  -        context.window.removeEventListener("DOMNodeInserted", diffContext.eventLogger, true);
                                  -        context.window.removeEventListener("DOMNodeRemoved", diffContext.eventLogger, true);
                                  -        context.window.removeEventListener("DOMAttrModified", diffContext.attrEventLogger, true);
                                  -        context.window.removeEventListener("DOMCharacterDataModified", diffContext.charDataEventLogger, true);
                                  -        
                                  -        delete diffContext.eventLogger;
                                  -        delete diffContext.attrEventLogger;
                                  -        delete diffContext.charDataEventLogger;
                                  -    },
                                  -    
                                  -    ignoreNode: function(node) {
                                  -      // Ignore firebug elements and any top level elements that are not the doc element
                                  -      return node.firebugIgnore
                                  -          || unwrapObject(node).firebugIgnore
                                  -          || (node.className || "").indexOf("firebug") > -1
                                  -          ||        (node.id || "").indexOf("firebug") > -1
                                  -          || (node.hasAttribute && node.hasAttribute("firebugIgnore"));
                                  -    },
                                  -    
                                  -    getHtmlEditorPaths: function(editor) {
                                  -      // Select the xpath update range. This is from the first to after the
                                  -      // last element in the range (or '}' if there is no sibling after that
                                  -      // to simplify the match test)
                                  -      //
                                  -      // This is not 100%, erroring on the side marking app changes as Firebug changes
                                  -      // To fully resolve this, deeper integration with Firebug will be required,
                                  -      // most likely in the form of changes to the editors to use diff ignore
                                  -      // blocks and generate custom events.
                                  -      var elements = editor.editingElements;
                                  -      if (elements) {
                                  -        var nextEl = getNextElement((elements[1] || elements[0]).nextSibling);
                                  -        return [
                                  -                Path.getElementPath(elements[0]),
                                  -                Path.getElementPath(nextEl) || '}'
                                  -            ];
                                  -      }
                                  -    },
                                  -    
                                  -    clearChanges: function(context) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.clearChanges", context);
                                  -      
                                  -      var diffContext = this.getDiffContext(context);
                                  -      diffContext.changes = [];
                                  -      
                                  -      dispatch(this.fbListeners, "onClearChanges", [context || Firebug.context]);
                                  -    },
                                  -    
                                  -    navNextChange: function(context) {
                                  -      dispatch(this.fbListeners, "onNavNextChange", [context || Firebug.context]);
                                  -    },
                                  -    navPrevChange: function(context) {
                                  -      dispatch(this.fbListeners, "onNavPrevChange", [context || Firebug.context]);
                                  -    },
                                  -    
                                  -    ignoreChanges: function(worker, context) {
                                  -      // If no context is available failover. This failover is mostly for testing merges.
                                  -      var diffContext = this.getDiffContext(context) || {};
                                  -      try {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Set ignore changes", context);
                                  -        diffContext.ignore = true;
                                  -        
                                  -        worker();
                                  -      } finally {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Reset ignore changes", context);
                                  -        diffContext.ignore = false;
                                  -      }
                                  -    },
                                  -    firebugChanges: function(worker, context) {
                                  -      // If no context is available failover. This failover is mostly for testing merges.
                                  -      var diffContext = this.getDiffContext(context) || {};
                                  -      try {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Set firebug changes", context);
                                  -        diffContext.changeSource = Events.ChangeSource.FIREBUG_CHANGE;
                                  -        
                                  -        worker();
                                  -      } finally {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule: Reset firebug changes", context);
                                  -        delete diffContext.changeSource;
                                  -      }
                                  -    },
                                  -    
                                  -    recordChange: function(change, context) {
                                  -        if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.recordChange", change);
                                  -        var diffContext = this.getDiffContext(context);
                                  -        diffContext.eventLogger = true;
                                  -        
                                  -        // Ignore if a context does not exist, we are in ignore mode, or the context is not attached
                                  -        if (!diffContext || diffContext.ignore || !diffContext.eventLogger)   return;
                                  -        
                                  -        if (!diffContext.editTarget) {
                                  -          this.dispatchChange(change, context);
                                  -        } else {
                                  -          diffContext.editEvents.push(change);
                                  -        }
                                  -    },
                                  -    dispatchChange: function(change, context) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("DiffModule.dispatchChange", change);
                                  -      
                                  -      var diffContext = this.getDiffContext(context);
                                  -      diffContext.changes.push(change);
                                  -      
                                  -      dispatch(this.fbListeners, "onDiffChange", [change, context || Firebug.context]);
                                  -    },
                                  -    
                                  -    getChanges: function(context) {
                                  -      var diffContext = this.getDiffContext(context);
                                  -      return (diffContext && diffContext.changes) || [];
                                  -    },
                                  -    
                                  -    getDiffContext: function(context) {
                                  -      context = context || Firebug.context;
                                  -      if (!context) {
                                  -        return null;
                                  -      }
                                  -      
                                  -      context.diffContext = context.diffContext || { changes: [] };
                                  -      return context.diffContext;
                                  -    }
                                  -});
                                  -
                                  -//Firebug.registerActivableModule(Firebug.DiffModule);
                                  -Firebug.registerModule(Firebug.DiffModule);
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/diffMonitor.js b/branches/flexBox/content/firediff/content/firediff/diffMonitor.js
                                  deleted file mode 100644
                                  index ea3d2d41..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/diffMonitor.js
                                  +++ /dev/null
                                  @@ -1,378 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -//const nsIDocumentEncoder = Ci.nsIDocumentEncoder;
                                  -//const nsIFile = Ci.nsIFile;
                                  -//const nsIFileOutputStream = Ci.nsIFileOutputStream;
                                  -//const nsIFilePicker = Ci.nsIFilePicker;
                                  -//const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -//const EncoderService = Cc["@mozilla.org/layout/documentEncoder;1?type=text/plain"];
                                  -//const FileOutputService = Cc["@mozilla.org/network/file-output-stream;1"];
                                  -//const PickerService = Cc["@mozilla.org/filepicker;1"];
                                  -//const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -//const prefs = PrefService.getService(nsIPrefBranch2);
                                  -//const PromptService = Cc["@mozilla.org/embedcomp/prompt-service;1"];
                                  -//const prompt = PromptService.getService(Ci.nsIPromptService);
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    Reps = FireDiff.reps,
                                  -    Fireformat = {};
                                  -
                                  -try {
                                  -  //Components.utils.import("resource://fireformat/formatters.jsm", Fireformat);
                                  -} catch (err) {
                                  -}
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -i18n = {
                                  -  getString: function(name)
                                  -  {
                                  -      return name;
                                  -  }
                                  -};
                                  -
                                  -var Panel = Firebug.ActivablePanel || Firebug.Panel;
                                  -
                                  -function DiffMonitor() {}
                                  -DiffMonitor.prototype = extend(Panel, {
                                  -    name: "firediff",
                                  -    title: "Changes", //i18n.getString("title.diffMonitor"),
                                  -    statusSeparator: ">",
                                  -    searchable: true,
                                  -    
                                  -    create: function(panelNode) {
                                  -      Firebug.Panel.create.apply(this, arguments);
                                  -      
                                  -      this.context = Firebug.context;
                                  -      this.document = Firebug.chrome.document;
                                  -      this.selection = this.getDefaultSelection();
                                  -      
                                  -      if (Firebug.DiffModule.addListener) {
                                  -        Firebug.DiffModule.addListener(this);
                                  -      }
                                  -      
                                  -      this.addStyleSheet(this.document, "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/content/firediff/skin/classic/firediff.css", "fireDiffCss");
                                  -      this.applyDisplayPrefs();
                                  -      
                                  -      if (Firebug.DiffModule.supportsFirebugEdits) {
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -      }
                                  -    },
                                  -    
                                  -    ishow: function(state) {
                                  -      if (Firebug.version < "1.4") {
                                  -        this.panelNode.innerHTML = i18n.getString("warning.firebugVersion");
                                  -        return;
                                  -      }
                                  -      
                                  -      var enabled = Firebug.DiffModule.isAlwaysEnabled();
                                  -      if (enabled) {
                                  -           Firebug.DiffModule.disabledPanelPage.hide(this);
                                  -
                                  -           this.showToolbarButtons("fbDiffMonitorButtons", true);
                                  -           $("cmd_copy").setAttribute("disabled", true);
                                  -
                                  -           if (!this.selection) {
                                  -             this.select(this.getDefaultSelection());
                                  -           }
                                  -      } else {
                                  -          this.hide();
                                  -          Firebug.DiffModule.disabledPanelPage.show(this);
                                  -      }
                                  -    },
                                  -    enablePanel: function(module) {
                                  -      Panel.enablePanel.apply(this, arguments);
                                  -      this.show();
                                  -    },
                                  -    disablePanel: function(module) {
                                  -      Panel.disablePanel.apply(this, arguments);
                                  -      this.hide();
                                  -    },
                                  -    ihide: function(state) {
                                  -      this.showToolbarButtons("fbDiffMonitorButtons", false);
                                  -      $("cmd_copy").removeAttribute("disabled");
                                  -
                                  -      var panelStatus = Firebug.chrome.getPanelStatusElements();
                                  -      panelStatus.clear(); // clear stack on status bar
                                  -      this.selection = undefined;
                                  -    },
                                  -
                                  -    addStyleSheet: function(doc, uri, id) {
                                  -        // Make sure the stylesheet isn't appended twice. 
                                  -        if ($(id, doc))   return;
                                  -
                                  -        var styleSheet = createStyleSheet(doc, uri);
                                  -        styleSheet.setAttribute("id", id);
                                  -        addStyleSheet(doc, styleSheet);
                                  -    },
                                  -    getOptionsMenuItems: function(context) {
                                  -      var ret = [];
                                  -      if (Firebug.DiffModule.supportsFirebugEdits) {
                                  -        ret.push(
                                  -            this.optionsMenu("option.showAppChanges", "firediff.displayAppChanges"),
                                  -            this.optionsMenu("option.showFirebugChanges", "firediff.displayFirebugChanges"),
                                  -            "-"
                                  -        );
                                  -      }
                                  -      ret.push({
                                  -          label: i18n.getString("option.formatterOptions"),
                                  -          nol10n: true,
                                  -          command: bindFixed(this.showFormatterOptions, this)
                                  -      });
                                  -      
                                  -      return ret;
                                  -    },
                                  -    optionsMenu: function(label, option) {
                                  -      var value = Firebug.getPref(Firebug.prefDomain, option);
                                  -      return {
                                  -          label: i18n.getString(label),
                                  -          nol10n: true,
                                  -          type: "checkbox",
                                  -          checked: value,
                                  -          command: bindFixed(Firebug.setPref, this, Firebug.prefDomain, option, !value)
                                  -      };
                                  -    },
                                  -    showFormatterOptions: function() {
                                  -      // See cmd_options in extensions.js
                                  -      var features= "chrome,titlebar,toolbar,centerscreen,";
                                  -      try {
                                  -        var instantApply = gPref.getBoolPref("browser.preferences.instantApply");
                                  -        features += (instantApply ? "dialog=no" : "modal");
                                  -      } catch (e) {
                                  -        features += "modal";
                                  -      }
                                  -      window.openDialog("chrome://fireformat/content/options.xul", "", features);
                                  -    },
                                  -    
                                  -    selectSnapshot: function(change) {
                                  -      try {
                                  -        // We run this here to defer change processing
                                  -        this.select(change.getSnapshot(this.context));
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    revertAllChanges: function(change) {
                                  -      try {
                                  -        Firebug.DiffModule.revertAllChanges(change, this.context);
                                  -        this.updateSelection(this.lastSel);
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    revertChange: function(change) {
                                  -      try {
                                  -        var dontPrompt = this.isDontPromptOnMultipleRevert();
                                  -        var ret = Firebug.DiffModule.revertChange(change, this.context, dontPrompt);
                                  -        if (!ret) {
                                  -          var checked = { value: false };
                                  -          var button = prompt.confirmCheck(
                                  -              null,
                                  -              i18n.getString("prompt.title.MultipleRevert"),
                                  -              i18n.getString("prompt.text.MultipleRevert"),
                                  -              i18n.getString("prompt.dontAskAgain"),
                                  -              checked);
                                  -          if (!button) {
                                  -            return;
                                  -          }
                                  -
                                  -          // Save the pref value
                                  -          Firebug.setPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt", checked.value);
                                  -
                                  -          // Perform a forced revert
                                  -          Firebug.DiffModule.revertChange(change, this.context, true);
                                  -        }
                                  -
                                  -        this.updateSelection(this.lastSel);
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err,err);
                                  -      }
                                  -    },
                                  -    saveSnapshot: function(change) {
                                  -      var file = this.promptForFileName(i18n.getString("menu.SaveSnapshot"), change.changeType);
                                  -      if (file) {
                                  -        var snapshot = change.getSnapshot(this.context);
                                  -        this.writeString(file, snapshot.getText());
                                  -      }
                                  -    },
                                  -    saveDiff: function(change) {
                                  -      try {
                                  -        var file = this.promptForFileName(i18n.getString("menu.SaveDiff"), "diff");
                                  -        if (file) {
                                  -          var snapshot = change.getSnapshot(this.context),
                                  -              base = change.getBaseSnapshot(this.context),
                                  -              snapshotText = snapshot.getText(),
                                  -              baseText = base.getText(),
                                  -              diff = JsDiff.createPatch(
                                  -                  change.getDocumentName(this.context),
                                  -                  baseText, snapshotText,
                                  -                  i18n.getString("diff.baseFile"), i18n.getString("diff.snapshot"));
                                  -  
                                  -          this.writeString(file, diff);
                                  -        }
                                  -      } catch (err) {
                                  -        FBTrace.sysout(err, err);
                                  -      }
                                  -    },
                                  -
                                  -
                                  -    promptForFileName: function(caption, mode) {
                                  -      var picker = PickerService.createInstance(nsIFilePicker);
                                  -      picker.init(window, caption, nsIFilePicker.modeSave);
                                  -      if (mode == "DOM") {
                                  -        picker.appendFilters(nsIFilePicker.filterHTML);
                                  -        picker.defaultExtension = "html";
                                  -      } else if (mode == "CSS") {
                                  -        picker.appendFilter(i18n.getString("prompt.cssFiles"), "*.css");
                                  -        picker.defaultExtension = "css";
                                  -      } else if (mode == "diff") {
                                  -        picker.appendFilter(i18n.getString("prompt.diffFiles"), "*.diff");
                                  -        picker.defaultExtension = "diff";
                                  -      }
                                  -      picker.appendFilters(nsIFilePicker.filterText);
                                  -      picker.appendFilters(nsIFilePicker.filterAll);
                                  -      var ret = picker.show();
                                  -      if ((ret == nsIFilePicker.returnOK || ret == nsIFilePicker.returnReplace) && picker.file) {
                                  -        return picker.file;
                                  -      }
                                  -    },
                                  -    writeString: function(file, string) {
                                  -      var outputStream = FileOutputService.createInstance(nsIFileOutputStream);
                                  -      outputStream.init(file, -1, -1, 0);   // Default mode and permissions
                                  -
                                  -      // The Document encoder handles all of the heavy lifting here: encoding and line break conversion
                                  -      var serializer = EncoderService.createInstance(nsIDocumentEncoder);
                                  -      serializer.init(document, "text/plain", nsIDocumentEncoder.OutputPreformatted);
                                  -      serializer.setCharset("UTF-8");
                                  -      serializer.setNode(document.createTextNode(string));
                                  -      serializer.encodeToStream(outputStream);
                                  -
                                  -      outputStream.close();
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target) {
                                  -      if (this.selection == Reps.Monitor) {
                                  -        var ret = [
                                  -           { label: i18n.getString("menu.ChangeSnapshot"), command: bindFixed(this.selectSnapshot, this, object), nol10n: true },
                                  -           "-"
                                  -        ];
                                  -
                                  -        if (Fireformat.Formatters) {
                                  -          ret.push({ label: i18n.getString("menu.SaveSnapshot"), command: bindFixed(this.saveSnapshot, this, object), nol10n: true });
                                  -          ret.push({ label: i18n.getString("menu.SaveDiff"), command: bindFixed(this.saveDiff, this, object), nol10n: true });
                                  -          ret.push("-");
                                  -        }
                                  -
                                  -        ret.push({ label: i18n.getString("menu.RevertChange"), command: bindFixed(this.revertChange, this, object), nol10n: true });
                                  -        ret.push({ label: i18n.getString("menu.RevertAllChanges"), command: bindFixed(this.revertAllChanges, this, object), nol10n: true });
                                  -        return ret;
                                  -      }
                                  -    },
                                  -    
                                  -    getDefaultSelection: function(object) {
                                  -      return Reps.Monitor;
                                  -    },
                                  -    updateSelection: function(object) {
                                  -      clearNode(this.panelNode);
                                  -      
                                  -      if (this.lastSel && this.lastSel.hide) {
                                  -        this.lastSel.hide(this);
                                  -      }
                                  -      
                                  -      object.show(this);
                                  -      //this.showToolbarButtons("fbDiffSnapshotNav", !!object.showNext);
                                  -      this.lastSel = object;
                                  -    },
                                  -    
                                  -    getObjectPath: function(object) {
                                  -      var ret = [ Reps.Monitor ];
                                  -      if (Reps.DOMSnapshotRep.supportsObject(object)
                                  -          || Reps.CSSSnapshotRep.supportsObject(object)) {
                                  -        ret.push(object);
                                  -      }
                                  -      return ret;
                                  -    },
                                  -    supportsObject: function(object) {
                                  -      if (Reps.MonitorRep.supportsObject(object)
                                  -          || Reps.DOMSnapshotRep.supportsObject(object)
                                  -          || Reps.CSSSnapshotRep.supportsObject(object))
                                  -        return 1000;
                                  -      return 0;
                                  -    },
                                  -
                                  -    search: function(text, reverse) {
                                  -      if (this.selection.search) {
                                  -        return this.selection.search(text, reverse, this);
                                  -      }
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -      // We're observing preferences only.
                                  -      if (topic != "nsPref:changed")
                                  -        return;
                                  -
                                  -      var prefName = data.substr(Firebug.prefDomain.length + 1);
                                  -      if (prefName == "firediff.displayAppChanges"
                                  -          || prefName == "firediff.displayFirebugChanges") {
                                  -        this.applyDisplayPrefs();
                                  -      }
                                  -    },
                                  -    
                                  -    applyDisplayPrefs: function() {
                                  -      this.applyDisplayPref("firediff.displayAppChanges", "showAppChanges", !Firebug.DiffModule.supportsFirebugEdits);
                                  -      this.applyDisplayPref("firediff.displayFirebugChanges", "showFirebugChanges");
                                  -    },
                                  -    applyDisplayPref: function(prefName, cssName, force) {
                                  -      if (force || Firebug.getPref(Firebug.prefDomain, prefName)) {
                                  -        setClass(this.panelNode, cssName);
                                  -      } else {
                                  -        removeClass(this.panelNode, cssName);
                                  -      }
                                  -    },
                                  -    isDisplayAppChanges: function() {
                                  -      return Firebug.getPref(Firebug.prefDomain, "firediff.displayAppChanges");
                                  -    },
                                  -    isDisplayFirebugChanges: function() {
                                  -      return Firebug.getPref(Firebug.prefDomain, "firediff.displayFirebugChanges");
                                  -    },
                                  -    isDontPromptOnMultipleRevert: function() {
                                  -      return !!Firebug.getPref(Firebug.prefDomain, "firediff.revertMultiple.dontPrompt");
                                  -    },
                                  -    
                                  -    onDiffChange: function(change, context) {
                                  -      if (this.context != context || !this.selection)    return;
                                  -      
                                  -      // this.selection could be null if an event occurs before we are displayed
                                  -      if (this.selection.onChange) {
                                  -        this.selection.onChange(change, this);
                                  -      }
                                  -    },
                                  -    onClearChanges: function(context) {
                                  -      if (this.context != context)    return;
                                  -      
                                  -      if (this.panelNode) {
                                  -        clearNode(this.panelNode);
                                  -      }
                                  -    },
                                  -    onNavNextChange: function(context) {
                                  -      if (this.selection.showNext) {
                                  -        this.selection.showNext();
                                  -      }
                                  -    },
                                  -    onNavPrevChange: function(context) {
                                  -      if (this.selection.showPrev) {
                                  -        this.selection.showPrev();
                                  -      }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(DiffMonitor);
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/domEvents.js b/branches/flexBox/content/firediff/content/firediff/domEvents.js
                                  deleted file mode 100644
                                  index f089550d..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/domEvents.js
                                  +++ /dev/null
                                  @@ -1,446 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -var Path = FireDiff.Path,
                                  -  Reps = FireDiff.reps,
                                  -  ChangeEvent = FireDiff.events.ChangeEvent,
                                  -  
                                  -  CHANGES = FireDiff.events.AnnotateAttrs.CHANGES,
                                  -  ATTR_CHANGES = FireDiff.events.AnnotateAttrs.ATTR_CHANGES,
                                  -  REMOVE_CHANGES = FireDiff.events.AnnotateAttrs.REMOVE_CHANGES;
                                  -
                                  -function DOMChangeEvent(target, xpath, displayXPath, changeSource) {
                                  -  ChangeEvent.call(this, changeSource);
                                  -  this.changeType = "DOM";
                                  -  this.xpath = xpath || Path.getElementPath(target);
                                  -  this.displayXPath = displayXPath || Path.getElementPath(target, true);
                                  -  
                                  -  // Store this just to create a mostly accurate repobject link. This shouldn't be used otherwise
                                  -  this.target = target;
                                  -}
                                  -DOMChangeEvent.prototype = extend(ChangeEvent.prototype, {
                                  -    sameFile: function(target) {
                                  -      return this.target.ownerDocument == target.ownerDocument
                                  -          || (target.target && this.target.ownerDocument == target.target.ownerDocument);
                                  -    },
                                  -    getSnapshot: function(context) {
                                  -      return new Reps.DOMSnapshot(this, context.window.document);
                                  -    },
                                  -    getBaseSnapshot: function(context) {
                                  -      return new Reps.DOMSnapshot(null, context.window.document);
                                  -    },
                                  -    getDocumentName: function() {
                                  -      return this.target.ownerDocument.URL;
                                  -    },
                                  -    
                                  -    getXpath: function(target) { return Path.getElementPath(target); },
                                  -    xpathLookup: function(xpath, root) {
                                  -      var iterate = (root.ownerDocument || root).evaluate(xpath, root, null, XPathResult.ANY_TYPE, null);
                                  -      return iterate.iterateNext();
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getActionNode(tree, root);
                                  -      if (!actionNode) {
                                  -        if (FBTrace.DBG_ERRORS) {
                                  -          FBTrace.sysout("ERROR: annotateTree: actionNode is undefined tree: " + root, tree);
                                  -          FBTrace.sysout("annotateTree: change", this);
                                  -        }
                                  -      }
                                  -      actionNode[CHANGES] = this;
                                  -
                                  -      if (actionNode.nodeType == Node.TEXT_NODE) {
                                  -        return this;
                                  -      } else {
                                  -        return actionNode;
                                  -      }
                                  -    }
                                  -});
                                  -
                                  -function DOMInsertedEvent(target, clone, xpath, displayXPath, changeSource) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  this.clone = clone || target.cloneNode(true);
                                  -
                                  -  if (target instanceof Text) {
                                  -    this.previousValue = "";
                                  -    this.value = target.data;
                                  -  }
                                  -}
                                  -DOMInsertedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "dom_inserted",
                                  -    
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMInserted");
                                  -    },
                                  -    isElementAdded: function() { return true; },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getInsertActionNode(target, xpath);
                                  -            
                                  -            actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (actionNode) {
                                  -              actionNode.parentNode.removeChild(actionNode);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      // Only changes that affect us are:
                                  -      // - Remove on same xpath (Overrides)
                                  -      // - Modification of self (by attr or char data change)
                                  -      // - Any modification of children
                                  -      // - XPath updates
                                  -      
                                  -      var updateXPath = candidate.getMergedXPath(this);
                                  -      
                                  -      // Self and Child modification
                                  -      if (Path.isChild(this.xpath, candidate.xpath)
                                  -          || (!updateXPath && this.xpath == candidate.xpath)) {
                                  -        // Something changed without our own tree, apply those changes and call
                                  -        // it a day
                                  -        var clone = this.clone.cloneNode(true);   // Yeah..... <Clone, Clone, Clone, ...>
                                  -        candidate.apply(clone, this.xpath);
                                  -        
                                  -        return [new DOMInsertedEvent(this.target, clone, this.xpath, this.displayXPath, this.changeSource)];
                                  -      }
                                  -      
                                  -      // XPath modification
                                  -      if (!simplifyOnly && updateXPath) {
                                  -        return [
                                  -                this.cloneOnXPath(updateXPath),
                                  -                candidate
                                  -            ];
                                  -      }
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // On revert we want to
                                  -      //  - Revert any changes made on this object or a child
                                  -      if (Path.isChildOrSelf(this.xpath, candidate.xpath)) {
                                  -        var ret = this.merge(candidate);
                                  -        if (ret) {
                                  -          return ret;
                                  -        }
                                  -        
                                  -        // XPath modification
                                  -        var updateXPath = candidate.getMergedXPath(this);
                                  -        if (updateXPath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXPath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return candidate.overridesChange(this) && this.xpath == candidate.xpath;
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return Path.isChildOrSelf(this.xpath, candidate.xpath);
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMInsertedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource);
                                  -    }
                                  -});
                                  -function DOMRemovedEvent(target, clone, xpath, displayXPath, changeSource) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  this.clone = clone || target.cloneNode(true);
                                  -
                                  -  if (target instanceof Text) {
                                  -    this.value = "";
                                  -    this.previousValue = target.data;
                                  -  }
                                  -}
                                  -DOMRemovedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "dom_removed",
                                  -    
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMRemoved");
                                  -    },
                                  -    isElementRemoved: function() { return true; },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.parentNode.removeChild(actionNode);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getInsertActionNode(target, xpath);
                                  -            
                                  -            actionNode.parent.insertBefore(this.clone.cloneNode(true), actionNode.sibling);
                                  -          }, this));
                                  -    },
                                  -    
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (Path.isChild(this.xpath, candidate.xpath)) {
                                  -        // If this is a child WRT to xpath, we don't touch it.
                                  -        return undefined;
                                  -      }
                                  -      
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // The only thing that a delete might revert is an insert operation
                                  -      // of its identity
                                  -      if (this.isCancellation(candidate)) {
                                  -        return [];
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && candidate.isElementAdded()
                                  -          && this.clone.isEqualNode(candidate.clone);
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.isCancellation(candidate);
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMRemovedEvent(this.target, this.clone, xpath, this.displayXPath, this.changeSource);
                                  -    },
                                  -
                                  -    overridesChange: function(prior) {
                                  -      return (!prior.isElementRemoved() && this.xpath == prior.xpath)
                                  -          || Path.isChild(this.xpath, prior.xpath);
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getInsertActionNode(tree, root).parent;
                                  -      var list = actionNode[REMOVE_CHANGES] || [],
                                  -          i = list.length;
                                  -      while (i > 0 && Path.compareXPaths(this.xpath, list[i-1].xpath) < 0) {
                                  -        i--;
                                  -      }
                                  -      list.splice(i, 0, this);
                                  -      actionNode[REMOVE_CHANGES] = list;
                                  -      
                                  -      this.clone.change = this;
                                  -      
                                  -      return this;
                                  -    }
                                  -});
                                  -
                                  -
                                  -function DOMAttrChangedEvent(target, attrChange, attrName, newValue, prevValue, xpath, displayXPath, changeSource, clone) {
                                  -  DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -  
                                  -  this.attrChange = attrChange;
                                  -  this.attrName = attrName;
                                  -  this.previousValue = prevValue;
                                  -  this.value = newValue;
                                  -  
                                  -  this.clone = clone || target.cloneNode(false);
                                  -}
                                  -DOMAttrChangedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "attr_changed",
                                  -    getSummary: function() {
                                  -      if (this.attrChange == MutationEvent.MODIFICATION) {
                                  -        return i18n.getString("summary.DOMAttrChanged");
                                  -      } else if (this.attrChange == MutationEvent.ADDITION) {
                                  -        return i18n.getString("summary.DOMAttrAddition");
                                  -      } else if (this.attrChange == MutationEvent.REMOVAL) {
                                  -        return i18n.getString("summary.DOMAttrRemoval");
                                  -      }
                                  -    },
                                  -    isAddition: function() { return this.attrChange == MutationEvent.ADDITION; },
                                  -    isRemoval: function() { return this.attrChange == MutationEvent.REMOVAL; },
                                  -    
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (this.subType != candidate.subType
                                  -              || this.xpath != candidate.xpath
                                  -              || this.attrName != candidate.attrName) {
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -        return;
                                  -      }
                                  -
                                  -      var attrChange = this.attrChange;
                                  -      if (candidate.attrChange == MutationEvent.REMOVAL) {
                                  -        attrChange = candidate.attrChange;
                                  -      } else if (this.attrChange == MutationEvent.REMOVAL) {
                                  -        attrChange = MutationEvent.MODIFICATION;
                                  -      }
                                  -      return [
                                  -        new DOMAttrChangedEvent(
                                  -            this.target,
                                  -            attrChange, this.attrName,
                                  -            candidate.value, this.previousValue,
                                  -            this.xpath, this.displayXPath, this.changeSource, this.clone)
                                  -      ];
                                  -    },
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMAttrChangedEvent(
                                  -          this.target,
                                  -          this.attrChange, this.attrName,
                                  -          this.value, this.previousValue,
                                  -          xpath, this.displayXPath, this.changeSource, this.clone);
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      // On revert we want to
                                  -      //  - Revert any changes made on this exact attr
                                  -      if (this.xpath == candidate.xpath && this.attrName == candidate.attrName) {
                                  -        return this.merge(candidate);
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.attrName == candidate.attrName
                                  -          && (this.previousValue == candidate.value
                                  -              || (this.attrChange == MutationEvent.ADDITION
                                  -                  && candidate.attrChange == MutationEvent.REMOVAL));
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.attrName == candidate.attrName;
                                  -    },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (this.attrChange == MutationEvent.REMOVAL) {
                                  -              actionNode.removeAttribute(this.attrName);
                                  -            } else if (this.attrChange == MutationEvent.ADDITION
                                  -                || this.attrChange == MutationEvent.MODIFICATION) {
                                  -              actionNode.setAttribute(this.attrName, this.value);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            if (this.attrChange == MutationEvent.ADDITION) {
                                  -              actionNode.removeAttribute(this.attrName);
                                  -            } else if (this.attrChange == MutationEvent.REMOVAL
                                  -                || this.attrChange == MutationEvent.MODIFICATION) {
                                  -              actionNode.setAttribute(this.attrName, this.previousValue);
                                  -            }
                                  -          }, this));
                                  -    },
                                  -    
                                  -    annotateTree: function(tree, root) {
                                  -      var actionNode = this.getActionNode(tree, root);
                                  -      var list = actionNode[ATTR_CHANGES] || {};
                                  -      list[this.attrName] = this;
                                  -      actionNode[ATTR_CHANGES] = list;
                                  -      
                                  -      return actionNode;
                                  -    }
                                  -});
                                  -
                                  -function DOMCharDataModifiedEvent(target, newValue, prevValue, xpath, displayXPath, changeSource, clone) {
                                  -    DOMChangeEvent.call(this, target, xpath, displayXPath, changeSource);
                                  -    
                                  -    this.previousValue = prevValue;
                                  -    this.value = newValue;
                                  -    
                                  -    this.clone = clone || target.cloneNode(false);
                                  -}
                                  -DOMCharDataModifiedEvent.prototype = extend(DOMChangeEvent.prototype, {
                                  -    subType: "char_data_modified",
                                  -    getSummary: function() {
                                  -      return i18n.getString("summary.DOMCharDataModified");
                                  -    },
                                  -    merge: function(candidate, simplifyOnly) {
                                  -      if (this.subType != candidate.subType
                                  -              || this.xpath != candidate.xpath) {
                                  -        // Check for xpath modifications
                                  -        var updateXpath = candidate.getMergedXPath(this);
                                  -        if (!simplifyOnly && updateXpath) {
                                  -          return [
                                  -              this.cloneOnXPath(updateXpath),
                                  -              candidate
                                  -          ];
                                  -        }
                                  -        return undefined;
                                  -      }
                                  -      
                                  -      return [ new DOMCharDataModifiedEvent(this.target, candidate.value, this.previousValue, this.xpath, this.displayXPath, this.changeSource, this.clone) ];
                                  -    },
                                  -    mergeRevert: function(candidate) {
                                  -      if (this.xpath == candidate.xpath) {
                                  -        return this.merge(candidate);
                                  -      }
                                  -    },
                                  -    isCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType == candidate.subType
                                  -          && this.previousValue == candidate.value;
                                  -    },
                                  -    affectsCancellation: function(candidate) {
                                  -      return this.xpath == candidate.xpath
                                  -          && this.subType == candidate.subType;
                                  -    },
                                  -
                                  -    cloneOnXPath: function(xpath) {
                                  -      return new DOMCharDataModifiedEvent(
                                  -          this.target, this.value, this.previousValue, xpath, this.displayXPath, this.changeSource, this.clone);
                                  -    },
                                  -    
                                  -    apply: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.replaceData(0, actionNode.length, this.value);
                                  -          }, this));
                                  -    },
                                  -    revert: function(target, xpath) {
                                  -      Firebug.DiffModule.ignoreChanges(bindFixed(
                                  -          function() {
                                  -            var actionNode = this.getActionNode(target, xpath);
                                  -            actionNode.replaceData(0, actionNode.length, this.previousValue);
                                  -          }, this));
                                  -    }
                                  -});
                                  -
                                  -FireDiff.events.dom = {
                                  -    DOMInsertedEvent: DOMInsertedEvent,
                                  -    DOMRemovedEvent: DOMRemovedEvent,
                                  -    DOMAttrChangedEvent: DOMAttrChangedEvent,
                                  -    DOMCharDataModifiedEvent: DOMCharDataModifiedEvent,
                                  -    
                                  -    createDOMChange: function(ev, changeSource) {
                                  -      switch (ev.type) {
                                  -      case "DOMNodeInserted":
                                  -      case "DOMNodeInsertedInfoDocument":
                                  -        return new DOMInsertedEvent(ev.target, undefined, undefined, undefined, changeSource);
                                  -      case "DOMNodeRemoved":
                                  -      case "DOMNodeRemovedFromDocument":
                                  -        return new DOMRemovedEvent(ev.target, undefined, undefined, undefined, changeSource);
                                  -      case "DOMAttrModified":
                                  -        return new DOMAttrChangedEvent(ev.target, ev.attrChange, ev.attrName, ev.newValue, ev.prevValue, undefined, undefined, changeSource);
                                  -      case "DOMCharacterDataModified":
                                  -        return new DOMCharDataModifiedEvent(ev.target, ev.newValue, ev.prevValue, undefined, undefined, changeSource);
                                  -      }
                                  -    }
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/domplate.js b/branches/flexBox/content/firediff/content/firediff/domplate.js
                                  deleted file mode 100644
                                  index d7889cc9..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/domplate.js
                                  +++ /dev/null
                                  @@ -1,654 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -FireDiff.domplate = {};
                                  -
                                  -FBL.ns(function() {
                                  -(function () { with(FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -const Events = FireDiff.events,
                                  -      Path = FireDiff.Path,
                                  -      CSSModel = FireDiff.CSSModel,
                                  -      VersionCompat = FireDiff.VersionCompat,
                                  -      Search = FireDiff.search;
                                  -
                                  -var DomUtil = {
                                  -  diffText: function(change) {
                                  -    function getText(value) {
                                  -      return Firebug.showWhitespaceNodes ? value : value.replace(/(?:^\s+)|(?:\s+$)/g, "");
                                  -    }
                                  -
                                  -    var diffChanges = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    if (diffChanges.changeType) {
                                  -      return JsDiff.diffWords(getText(diffChanges.previousValue), getText(diffChanges.value));
                                  -    } else {
                                  -      return [{ value: getText(change.nodeValue) }];
                                  -    }
                                  -  },
                                  -  diffAttr: function(attr) {
                                  -    if (attr.change) {
                                  -      if (attr.localName == "style") {
                                  -        return JsDiff.diffCss(attr.change.previousValue, attr.change.value);
                                  -      } else {
                                  -        return JsDiff.diffWords(attr.change.previousValue, attr.change.value);
                                  -      }
                                  -    } else {
                                  -        return [ { value: attr.nodeValue } ];
                                  -    }
                                  -  },
                                  -  isEmptyElement: function(element) {
                                  -    return !element.firstChild && !element[Events.AnnotateAttrs.REMOVE_CHANGES];
                                  -  },
                                  -
                                  -  isPureText: function(element) {
                                  -    for (var child = element.firstChild; child; child = child.nextSibling) {
                                  -      if (child.nodeType == Node.ELEMENT_NODE) {
                                  -        return false;
                                  -      }
                                  -    }
                                  -    var removeChanges = element[Events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -    for (var i = 0; i < removeChanges.length; i++) {
                                  -      if (removeChanges[i].clone.nodeType == Node.ELEMENT_NODE) {
                                  -        return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  },
                                  -
                                  -  isWhitespaceText: function(node) {
                                  -    return VersionCompat.isWhitespaceText(node.clone || node);
                                  -  },
                                  -
                                  -  isSourceElement: VersionCompat.isSourceElement
                                  -};
                                  -this.DomUtil = DomUtil;
                                  -
                                  -// Common Domplates
                                  -/**
                                  - * Pretty print attribute list.
                                  - * 
                                  - * Represents a list of attributes as well as any changes that have been applies
                                  - * to these attributes.
                                  - * 
                                  - * Parameter:
                                  - *   change: Change object that we are displaying
                                  - */
                                  -var attributeList = domplate({
                                  -  tag: FOR("attr", "$change|attrIterator", TAG("$attr|getAttrTag", {attr: "$attr"})),
                                  -  attributeDiff:
                                  -      SPAN({"class": "nodeAttr", $removedClass: "$attr|isAttrRemoved", $addedClass: "$attr|isAttrAdded",
                                  -        $firebugDiff: "$attr|isFirebugDiff", $appDiff: "$attr|isAppDiff"},
                                  -          "&nbsp;",
                                  -          SPAN({"class": "nodeName"}, "$attr.localName"), "=&quot;",
                                  -          SPAN({"class": "nodeValue"}, 
                                  -              FOR("block", "$attr|diffAttr",
                                  -                      SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value"))
                                  -          ),
                                  -          "&quot;"
                                  -     ),
                                  -  
                                  -  getAttrTag: function(attr) {
                                  -      return this.attributeDiff;
                                  -  },
                                  -
                                  -  attrIterator: function(change) {
                                  -    return Search.getAttributes(change);
                                  -  },
                                  -
                                  -  isAttrAdded: function(attr) {
                                  -      return attr.change && attr.change.isAddition();
                                  -  },
                                  -  isAttrRemoved: function(attr) {
                                  -      return attr.change && attr.change.isRemoval();
                                  -  },
                                  -  isFirebugDiff: function(attr) {
                                  -    return attr.change && attr.change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(attr) {
                                  -    return attr.change && attr.change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  },
                                  -  diffAttr: function(attr) {
                                  -    return DomUtil.diffAttr(attr);
                                  -  }
                                  -});
                                  -
                                  -var propertyDefinition = domplate({
                                  -  tag: 
                                  -    DIV({"class": "cssPropDiff"},
                                  -      SPAN({$removedClass: "$change|isPropRemoved", $addedClass: "$change|isPropAdded"},
                                  -        SPAN({"class": "cssPropName"}, "$change.propName"),
                                  -        SPAN({"class": "cssColon"}, ":"),
                                  -        SPAN({"class": "cssPropValue"},
                                  -          FOR("block", "$change|diffProp",
                                  -            SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")),
                                  -          SPAN({$removedClass: "$change|isPriorityRemoved", $addedClass: "$change|isPriorityAdded"},
                                  -            "$change|getPriorityText")
                                  -        ),
                                  -        SPAN({"class": "cssSemi"}, ";")
                                  -    )),
                                  -  
                                  -  diffProp: function(change) {
                                  -      return JsDiff.diffCss(change.prevValue, change.propValue);
                                  -  },
                                  -  isPropAdded: function(change) { return !change.prevValue; },
                                  -  isPropRemoved: function(change) { return !change.propValue; },
                                  -  
                                  -  getPriorityText: function(change) {
                                  -    var important = change.propPriority || change.prevPriority;
                                  -    return important ? (" !" + important) : "";
                                  -  },
                                  -  isPriorityAdded: function(change) { return !change.prevPriority; },
                                  -  isPriorityRemoved: function(change) { return !change.propPriority; }
                                  -});
                                  -
                                  -// Diff Monitor Domplates
                                  -// TODO : Allow replink in the monitor case
                                  -var textChanged = domplate(FirebugReps.TextNode, {
                                  -  tag: SPAN(
                                  -      {"class": "textDiff", $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"},
                                  -        FOR("block", "$change|diffText",
                                  -            SPAN({$removedClass: "$block.removed", $addedClass: "$block.added"}, "$block.value")
                                  -        )),
                                  -  diffText: function(change) {
                                  -    return DomUtil.diffText(change);
                                  -  },
                                  -  isElementAdded: function(change) {
                                  -    change = change || change[FireDiff.events.AnnotateAttrs.CHANGES];
                                  -    return change && change.isElementAdded && change.isElementAdded();
                                  -  },
                                  -  isElementRemoved: function(change) {
                                  -    change = change || change[FireDiff.events.AnnotateAttrs.CHANGES];
                                  -    return change && change.isElementRemoved && change.isElementRemoved();
                                  -  }
                                  -});
                                  -
                                  -this.TextChanged = textChanged;
                                  -
                                  -// Displays a rep link to an element that has changed.
                                  -// 
                                  -// These changes are primarily attribute and insertion changes
                                  -// TODO : Attempt to merge this with the domplate defined below
                                  -this.ElementChanged = domplate(FirebugReps.Element, {
                                  -    tag: FirebugReps.OBJECTLINK(
                                  -        {$removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded"},
                                  -        "&lt;",
                                  -        SPAN({"class": "nodeTag"}, "$change.clone.localName|toLowerCase"),
                                  -        TAG(attributeList.tag, {change: "$change"}),
                                  -        "&gt;"
                                  -    ),
                                  -    isElementAdded: function(change) {
                                  -        return change.isElementAdded();
                                  -    },
                                  -    isElementRemoved: function(change) {
                                  -        return change.isElementRemoved();
                                  -    }
                                  -});
                                  -
                                  -// All Changes Domplates
                                  -var ChangeElement = extend(FirebugReps.Element, {
                                  -  removedChanges: function(node) {
                                  -    return node[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -  },
                                  -  
                                  -  getElementName: function(change) {
                                  -    // TODO : XML Handling
                                  -    change = change.clone || change;
                                  -    return (change.localName || "").toLowerCase();
                                  -  },
                                  -  isElementAdded: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change && change.isElementAdded && change.isElementAdded();
                                  -  },
                                  -  isElementRemoved: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change && change.isElementRemoved && change.isElementRemoved();
                                  -  },
                                  -  isFirebugDiff: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(change) {
                                  -    change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -    return change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  }
                                  -});
                                  -
                                  -var ParentChangeElement = extend(ChangeElement, {
                                  -  childIterator: function(node) {
                                  -    node = node.clone || node;
                                  -    if (node.contentDocument)
                                  -      // TODO : Should this use contentDocument.childNodes?
                                  -      return [node.contentDocument.documentElement];
                                  -    
                                  -    function includeChild(child) {
                                  -      return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child);
                                  -    }
                                  -    return new Search.RemovedIterator(new Search.DOMIterator(node), this.removedChanges(node), includeChild);
                                  -  }
                                  -});
                                  -
                                  -var allChanges = {
                                  -    getNodeTag: function(node, inline) {
                                  -      if (node instanceof Element) {
                                  -        if (node instanceof HTMLAppletElement)
                                  -          return allChanges.EmptyElement.tag;
                                  -        else if (node.firebugIgnore)
                                  -          return null;
                                  -        else if (DomUtil.isEmptyElement(node))
                                  -          return allChanges.EmptyElement.tag;
                                  -        else if (!DomUtil.isSourceElement(node) && DomUtil.isPureText(node))
                                  -          return allChanges.TextElement.tag;
                                  -        else
                                  -          return allChanges.Element.tag;
                                  -      }
                                  -      else if (node instanceof CDATASection)  // Must occur before instanceof Text
                                  -        return allChanges.CDATANode.tag;
                                  -      else if (node instanceof Text)
                                  -        return inline ? allChanges.InlineTextNode.tag : allChanges.TextNode.tag;
                                  -      else if (node instanceof ProcessingInstruction)
                                  -        return allChanges.ProcessingInstruction.tag;
                                  -      else if (node instanceof Comment && Firebug.showCommentNodes)
                                  -        return allChanges.CommentNode.tag;
                                  -      else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -      else if (node instanceof Document)
                                  -        return allChanges.Document.tag;
                                  -      else if (node instanceof DocumentType)
                                  -        return allChanges.DocType.tag;
                                  -      else if (node instanceof DocumentFragment)
                                  -        return allChanges.Document.tag;
                                  -      else
                                  -        return FirebugReps.Nada.tag;
                                  -    },
                                  -
                                  -    Document: domplate(ParentChangeElement, {
                                  -      tag:
                                  -        DIV({"class": "nodeBox containerNodeBox repIgnore", _repObject: "$change" }, DIV({"class": "nodeChildBox"}))
                                  -    }),
                                  -
                                  -    DocType: domplate(ChangeElement, {
                                  -      tag: DIV({"class": "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -        $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -        $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -      DIV({"class": "nodeLabel"},
                                  -        SPAN({"class": "nodeLabelBox repTarget"},
                                  -          "&lt;!DOCTYPE&nbsp;",
                                  -          SPAN({"class": "nodeTag"}, "$change|getDocTypeName"),
                                  -
                                  -          SPAN({$collapsed: "$change|hidePublicId"}, "&nbsp;PUBLIC&nbsp;"),
                                  -          SPAN({"class": "nodeValue", $collapsed: "$change|hidePublicId"}, "&quot;", "$change|getPublicId", "&quot;"),
                                  -
                                  -          SPAN({$collapsed: "$change|hideSystemIdTag"}, "&nbsp;SYSTEM&nbsp;"),
                                  -          SPAN({"class": "nodeValue", $collapsed: "$change|hideSystemId"}, "&quot;", "$change|getSystemId", "&quot;"),
                                  -
                                  -          SPAN({"class": "nodeInternalSubset", $collapsed: "$change|hideInternalSubset"},
                                  -              "&nbsp;[", "$change|getInternalSubset", "]"),
                                  -          SPAN({"class": "nodeBracket"}, "&gt;")
                                  -          )
                                  -        )
                                  -      ),
                                  -
                                  -      getDocTypeName: function(change) {
                                  -        // TODO : XML Handling
                                  -        var docType = change.clone || change;
                                  -        return (docType.name || docType).toLowerCase();
                                  -      },
                                  -
                                  -      hidePublicId: function(change) {
                                  -        return !this.getPublicId(change);
                                  -      },
                                  -      getPublicId: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.publicId;
                                  -      },
                                  -
                                  -      hideSystemId: function(change) {
                                  -        return !this.getSystemId(change);
                                  -      },
                                  -      hideSystemIdTag: function(change) {
                                  -        return this.hideSystemId(change) || !this.hidePublicId(change);
                                  -      },
                                  -      getSystemId: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.systemId;
                                  -      },
                                  -
                                  -      hideInternalSubset: function(change) {
                                  -        return !this.getInternalSubset(change);
                                  -      },
                                  -      getInternalSubset: function(change) {
                                  -        var docType = change.clone || change;
                                  -        return docType.internalSubset;
                                  -      }
                                  -    }),
                                  -
                                  -    ProcessingInstruction: domplate(ChangeElement, {
                                  -      tag: DIV({"class": "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -        $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -        $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -      DIV({"class": "nodeLabel"},
                                  -        SPAN({"class": "nodeLabelBox repTarget"},
                                  -          "&lt;?",
                                  -          SPAN({"class": "nodeTag"}, "xslt-param"),
                                  -          SPAN({"class": "nodeValue", $collapsed: "$change|hideContent"}, "&nbsp;", "$change|getContent"),
                                  -          SPAN({"class": "nodeBracket"}, "?&gt;")
                                  -          )
                                  -        )
                                  -      ),
                                  -
                                  -      hideContent: function(change) {
                                  -        return !this.getContent(change);
                                  -      },
                                  -      getContent: function(change) {
                                  -        var instruct = change.clone || change;
                                  -        return instruct.nodeValue;
                                  -      }
                                  -    }),
                                  -
                                  -    Element: domplate(ChangeElement, {
                                  -      tag:
                                  -        DIV({"class": "nodeBox containerNodeBox repIgnore", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          DIV({"class": "nodeLabel nodeContainerLabel"},
                                  -            IMG({"class": "twisty"}),
                                  -            SPAN({"class": "nodeLabelBox repTarget"},
                                  -              "&lt;",
                                  -              SPAN({"class": "nodeTag"}, "$change|getElementName"),
                                  -              TAG(attributeList.tag, {change: "$change"}),
                                  -              SPAN({"class": "nodeBracket"}, "&gt;")
                                  -            )
                                  -          ),
                                  -          DIV({"class": "nodeChildBox"}),
                                  -          DIV({"class": "nodeCloseLabel"},
                                  -            SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -              "&lt;/", SPAN({"class": "nodeTag"}, "$change|getElementName"), "&gt;"
                                  -            )
                                  -          )
                                  -        )
                                  -    }),
                                  -
                                  -    TextElement: domplate(ParentChangeElement, {
                                  -      tag:
                                  -        DIV({"class": "nodeBox textNodeBox open repIgnore", _repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({"class": "nodeLabel"},
                                  -            SPAN({"class": "nodeLabelBox repTarget"},
                                  -              "&lt;",
                                  -              SPAN({"class": "nodeTag"}, "$change|getElementName"),
                                  -              TAG(attributeList.tag, {change: "$change"}),
                                  -              SPAN({"class": "nodeBracket"}, "&gt;"))),
                                  -          SPAN({"class": "nodeChildBox"},
                                  -            FOR("child", "$change|childIterator",
                                  -              TAG("$child|getNodeTag", {change: "$child"})
                                  -            )),
                                  -          SPAN(
                                  -            "&lt;/",
                                  -            SPAN({"class": "nodeTag"}, "$change|getElementName"),
                                  -            "&gt;"
                                  -          )
                                  -        ),
                                  -        getNodeTag: function(node) {
                                  -          return allChanges.getNodeTag(node.clone || node, true);
                                  -        }
                                  -    }),
                                  -
                                  -    EmptyElement: domplate(ChangeElement, {
                                  -      tag: DIV({"class": "nodeBox emptyNodeBox repIgnore", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        DIV({"class": "nodeLabel"},
                                  -          SPAN({"class": "nodeLabelBox repTarget"},
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$change|getElementName"),
                                  -            TAG(attributeList.tag, {change: "$change"}),
                                  -            SPAN({"class": "nodeBracket"}, "/&gt;")
                                  -            )
                                  -          )
                                  -        )
                                  -    }),
                                  -
                                  -    TextNode: domplate(ChangeElement, {
                                  -      tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({"class": "nodeText"}, TAG(textChanged.tag, {change: "$change"}))
                                  -        )
                                  -    }),
                                  -    InlineTextNode: domplate(ChangeElement, {
                                  -      tag:
                                  -        SPAN({_repObject: "$change",
                                  -            $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -            $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -          SPAN({"class": "nodeText"}, TAG(textChanged.tag, {change: "$change"}))
                                  -        )
                                  -    }),
                                  -
                                  -    CDATANode: domplate(ChangeElement, {
                                  -      tag: DIV({"class": "nodeBox", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        "&lt;![CDATA[",
                                  -        SPAN({"class": "nodeText"}, TAG(textChanged.tag, {change: "$change"})),
                                  -        "]]&gt;"
                                  -        )
                                  -    }),
                                  -
                                  -    CommentNode: domplate(ChangeElement, {
                                  -      tag: DIV({"class": "nodeBox", _repObject: "$change",
                                  -          $removedClass: "$change|isElementRemoved", $addedClass: "$change|isElementAdded",
                                  -          $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff"},
                                  -        DIV({"class": "nodeComment"},
                                  -          "&lt;!--", TAG(textChanged.tag, {change: "$change"}), "--&gt;"
                                  -          )
                                  -        )
                                  -    })
                                  -};
                                  -
                                  -this.HtmlSnapshotView = function(tree, rootXPath, panelNode) {
                                  -  this.tree = tree;
                                  -  this.rootXPath = rootXPath;
                                  -  this.panelNode = panelNode;
                                  -}
                                  -this.HtmlSnapshotView.prototype = {
                                  -  childIterator: function(parent) {
                                  -    return new Search.RemovedIterator(
                                  -        new Search.DOMIterator(parent.clone || parent),
                                  -        parent[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES],
                                  -        this.includeChild);
                                  -  },
                                  -  includeChild: function(child) {
                                  -    return Firebug.showWhitespaceNodes || !DomUtil.isWhitespaceText(child);
                                  -  },
                                  -  
                                  -  /* InsideOutBox View Interface */
                                  -  getParentObject: function(child) {
                                  -    if (child.parentNode) {
                                  -      return child.parentNode.change || child.parentNode;
                                  -    }
                                  -    if (child.change) {
                                  -      return child.change;
                                  -    }
                                  -    
                                  -    if (child.xpath) {
                                  -      var components = Path.getRelativeComponents(Path.getParentPath(child.xpath), this.rootXPath);
                                  -      if (!components.right) {
                                  -        var iterate = (this.tree.ownerDocument || this.tree).evaluate(components.left, this.tree, null, XPathResult.ANY_TYPE, null);
                                  -        var ret = iterate.iterateNext();
                                  -        return ret;
                                  -      }
                                  -    }
                                  -  },
                                  -  getChildObject: function(parent, index, prevSibling) {
                                  -    if (!parent)    return;
                                  -
                                  -    var iter = parent._diffIter || this.childIterator(parent.clone || parent);
                                  -    var diffCache = parent._diffCache || [];
                                  -    // Read in more elements if the this is a cache miss
                                  -    while (diffCache.length <= index && !parent._diffIterExhausted) {
                                  -      try {
                                  -        diffCache.push(iter.next());
                                  -      } catch (err) {
                                  -        // Assume this is StopIterator
                                  -        parent._diffIterExhausted = true;
                                  -      }
                                  -    }
                                  -    
                                  -    parent._diffIter = iter;
                                  -    parent._diffCache = diffCache;
                                  -    
                                  -    return diffCache[index];
                                  -  },
                                  -  createObjectBox: function(object, isRoot) {
                                  -    var tag = allChanges.getNodeTag(object.clone || object, false);
                                  -    return tag.replace({change: object}, this.panelNode.document);
                                  -  }
                                  -};
                                  -
                                  -var CSSChangeElement = {
                                  -  getCSSRules: function(change) {
                                  -    var removed = change[FireDiff.events.AnnotateAttrs.REMOVE_CHANGES] || [];
                                  -    return new Search.RemovedIterator(new Search.ArrayIterator(change.cssRules), removed);
                                  -  },
                                  -  
                                  -  getNodeTag: function(cssRule) {
                                  -    var CSSChanges = FireDiff.domplate.CSSChanges;
                                  -    
                                  -    cssRule = cssRule.changeType ? cssRule.clone : cssRule;
                                  -    if (cssRule instanceof CSSStyleSheet || cssRule instanceof CSSModel.StyleSheetClone) {
                                  -      return CSSChanges.CSSList.tag;
                                  -    } else if (cssRule instanceof CSSStyleRule || cssRule instanceof CSSModel.CSSStyleRuleClone
                                  -        || cssRule instanceof CSSFontFaceRule || cssRule instanceof CSSModel.CSSFontFaceRuleClone) {
                                  -      return CSSChanges.CSSStyleRule.tag;
                                  -    } else if (cssRule instanceof CSSMediaRule || cssRule instanceof CSSModel.CSSMediaRuleClone) {
                                  -      return CSSChanges.CSSMediaRule.tag;
                                  -    } else if (cssRule instanceof CSSImportRule || cssRule instanceof CSSModel.CSSImportRuleClone) {
                                  -      return CSSChanges.CSSImportRule.tag;
                                  -    } else if (cssRule instanceof CSSCharsetRule || cssRule instanceof CSSModel.CSSCharsetRuleClone) {
                                  -      return CSSChanges.CSSCharsetRule.tag;
                                  -    }
                                  -  }
                                  -};
                                  -this.CSSChanges = {
                                  -  CSSList: domplate(CSSChangeElement, {
                                  -    tag: FOR("rule", "$change|getCSSRules",
                                  -      TAG("$rule|getNodeTag", {change: "$rule"})
                                  -    )
                                  -  }),
                                  -  CSSImportRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          "class": "cssRuleDiff firebugDiff",
                                  -          _repObject: "$change"},
                                  -      "@import &quot;$change.href&quot;;")
                                  -  }),
                                  -  CSSCharsetRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          "class": "cssRuleDiff firebugDiff",
                                  -          _repObject: "$change"
                                  -        }, "@charset &quot;$change.encoding&quot;;")
                                  -  }),
                                  -  CSSMediaRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -          "class": "cssMediaRuleDiff firebugDiff",
                                  -          _repObject: "$change"
                                  -        },
                                  -        DIV({"class": "cssSelector"}, "@media $change|getMediaList {"),
                                  -        DIV({"class": "cssMediaRuleContent"},
                                  -          FOR("rule", "$change|getCSSRules",
                                  -              TAG("$rule|getNodeTag", {change: "$rule"}))),
                                  -        DIV("}")
                                  -    ),
                                  -    getMediaList: function(change) {
                                  -      var content = [],
                                  -          media = change.media;
                                  -      for (var i = 0; i < media.length; i++) {
                                  -        content.push(media.item ? media.item(i) : media[i]);
                                  -      }
                                  -      return content.join(", ");
                                  -    }
                                  -  }),
                                  -  CSSStyleRule: domplate(CSSChangeElement, {
                                  -    tag: DIV({
                                  -        "class": "cssRuleDiff firebugDiff",
                                  -        _repObject: "$change",
                                  -        $removedClass: "$change|isRemoved", $addedClass: "$change|isAdded"
                                  -      },
                                  -      DIV({"class": "cssHead"},
                                  -        SPAN({"class": "cssSelector"}, "$change|getSelectorText"), " {"),
                                  -          FOR("prop", "$change|getRemovedProps",
                                  -            TAG(propertyDefinition.tag, {change: "$prop"})),
                                  -          FOR("prop", "$change|getCurrentProps",
                                  -            TAG(propertyDefinition.tag, {change: "$prop"})),
                                  -        DIV("}")
                                  -      ),
                                  -    getSelectorText: function(change) {
                                  -      return change.selectorText || (change.clone || change.style).selectorText;
                                  -    },
                                  -    isAdded: function(change) {
                                  -      change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -      return change.subType == "insertRule";
                                  -    },
                                  -    isRemoved: function(change) {
                                  -      change = change[FireDiff.events.AnnotateAttrs.CHANGES] || change;
                                  -      return change.subType == "removeRule";
                                  -    },
                                  -    getRemovedProps: function(change) {
                                  -      if (!change.propChanges) {
                                  -        if (change.subType == "removeProp") {
                                  -          return [change];
                                  -        } else {
                                  -          return [];
                                  -        }
                                  -      }
                                  -      
                                  -      var ret = [];
                                  -      for (var i = 0; i < change.propChanges.length; i++) {
                                  -        var prop = change.propChanges[i];
                                  -        if (prop.subType == "removeProp") {
                                  -          ret.push(prop);
                                  -        }
                                  -      }
                                  -      return ret;
                                  -    },
                                  -    getCurrentProps: function(change) {
                                  -      if (change.subType == "setProp") {
                                  -        return [change];
                                  -      } else if (change.subType == "removeProp") {
                                  -        return [];
                                  -      }
                                  -      
                                  -      var propList = {},
                                  -          i = 0, index = 0,
                                  -          style = (change.clone || change.style).style || change.style;
                                  -      for (i = 0; i < style.length; i++) {
                                  -        var propName = style[i],
                                  -            propValue = style.getPropertyValue(propName),
                                  -            propPriority = style.getPropertyPriority(propName);
                                  -        propList[propName] = {
                                  -          propName: propName,
                                  -          propValue: propValue, propPriority: propPriority,
                                  -          prevValue: propValue, prevPriority: propPriority
                                  -        };
                                  -      }
                                  -      if (change.propChanges) {
                                  -        for (i = 0; i < change.propChanges.length; i++) {
                                  -          var prop = change.propChanges[i];
                                  -          if (prop.subType == "setProp") {
                                  -            propList[prop.propName] = prop;
                                  -          }
                                  -        }
                                  -      }
                                  -      return {
                                  -        next: function() {
                                  -          if (index >= style.length)   $break();
                                  -          return propList[style[index++]];
                                  -        }
                                  -      }
                                  -    }
                                  -  })
                                  -};
                                  -
                                  -}}).apply(FireDiff.domplate);
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/events.js b/branches/flexBox/content/firediff/content/firediff/events.js
                                  deleted file mode 100644
                                  index aa376c20..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/events.js
                                  +++ /dev/null
                                  @@ -1,392 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    Reps = FireDiff.reps,
                                  -    CSSModel = FireDiff.CSSModel;
                                  -
                                  -const CHANGES = "firebug-firediff-changes";
                                  -const ATTR_CHANGES = "firebug-firediff-attrChanges";
                                  -const REMOVE_CHANGES = "firebug-firediff-removeChanges";
                                  -
                                  -var ChangeSource = {
                                  -    APP_CHANGE: "APP_CHANGE",
                                  -    FIREBUG_CHANGE: "FIREBUG_CHANGE"
                                  -};
                                  -
                                  -function ChangeEvent(changeSource) {
                                  -  this.date = new Date();
                                  -  this.changeSource = changeSource || ChangeSource.APP_CHANGE;
                                  -}
                                  -ChangeEvent.prototype = {
                                  -    getChangeType: function() { return this.changeType; },
                                  -    getSummary: function() {},
                                  -    merge: function(candidate, simplifyOnly) {},
                                  -    
                                  -    /**
                                  -     * Determines if a candidate change needs to be reverted or
                                  -     * restored in order to revert or restore this change. The implementation
                                  -     * should assume that the reverted field has already been set to the correct
                                  -     * value for this event when called.
                                  -     */
                                  -    mergeRevert: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if a candidate change cancels the effects of this change.
                                  -     */
                                  -    isCancellation: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if this change affects the cancellation of another change.
                                  -     * 
                                  -     * I.e. this change must be reverted to revert the candidate change.
                                  -     */
                                  -    affectsCancellation: function(candidate) {},
                                  -    
                                  -    /**
                                  -     * Determines if this change negates any effect of a prior change.
                                  -     */
                                  -    overridesChange: function(prior) {},
                                  -    cloneOnXPath: function(xpath) {},
                                  -    appliesTo: function(target, cachedXpath) {
                                  -      // Any change that is made to the target or a child
                                  -      return target && Path.isChildOrSelf(cachedXpath || this.getXpath(target), this.xpath);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Determines if a given change is in the same file as this change.
                                  -     * The definition of file is up to the implementation, but may mean CSS
                                  -     * style sheet, DOM document, etc.
                                  -     */
                                  -    sameFile: function(otherChange) {},
                                  -    getSnapshot: function(context) {},
                                  -    getBaseSnapshot: function(context) {},
                                  -    getDocumentName: function(context) {},
                                  -    
                                  -    apply: function() {},
                                  -    revert: function() {},
                                  -
                                  -    getMergedXPath: function(prior) {
                                  -      var updatedPath;
                                  -      if (!prior.isElementRemoved() || this.xpath != prior.xpath) {
                                  -        if (this.isElementAdded()) {
                                  -          updatedPath = Path.updateForInsert(prior.xpath, this.xpath);
                                  -        } else if (this.isElementRemoved()) {
                                  -          updatedPath = Path.updateForRemove(prior.xpath, this.xpath);
                                  -        }
                                  -      }
                                  -
                                  -      if (updatedPath && updatedPath != prior.xpath) {
                                  -        return updatedPath;
                                  -      }
                                  -    },
                                  -    getRevertXPath: function(prior) {
                                  -      var updatedPath;
                                  -      if (this.isElementAdded()) {
                                  -        updatedPath = Path.updateForRevertRemove(prior.xpath, this.xpath);
                                  -      } else if (this.isElementRemoved()) {
                                  -        updatedPath = Path.updateForInsert(prior.xpath, this.xpath);
                                  -      }
                                  -
                                  -      if (updatedPath && updatedPath != prior.xpath) {
                                  -        return updatedPath;
                                  -      }
                                  -    },
                                  -    
                                  -    getXpath: function(target) {},
                                  -    xpathLookup: function(xpath, root) {},
                                  -    getActionNode: function(target, xpath) {
                                  -      try {
                                  -        xpath = xpath || this.getXpath(target);
                                  -        if (xpath == this.xpath) {
                                  -          // Empty string passed to evaluate is bad. 
                                  -          return target;
                                  -        }
                                  -        
                                  -        var components = Path.getRelativeComponents(this.xpath, xpath);
                                  -        if (!components.right) {
                                  -          return this.xpathLookup(components.left, target);
                                  -        }
                                  -      } catch (err) {
                                  -        if (FBTrace.DBG_ERRORS) {
                                  -          FBTrace.sysout("getActionNode Error: " + err, err);
                                  -          FBTrace.sysout(" - getActionNode: " + this.xpath + " " + xpath, components);
                                  -        }
                                  -        throw err;
                                  -      }
                                  -    },
                                  -    getInsertActionNode: function(target, xpath) {
                                  -      xpath = xpath || this.getXpath(target);
                                  -      
                                  -      var parentPath = Path.getParentPath(this.xpath);
                                  -      var selfId = Path.getIdentifier(this.xpath);
                                  -      
                                  -      var components = Path.getRelativeComponents(parentPath, xpath);
                                  -      var parentEl;
                                  -      if (components.left) {
                                  -        parentEl = this.xpathLookup(components.left, target);
                                  -      } else {
                                  -        parentEl = target;
                                  -      }
                                  -      
                                  -      var siblingEl = this.xpathLookup(selfId.tag + "[" + selfId.index + "]", parentEl);
                                  -      return {
                                  -        parent: parentEl,
                                  -        sibling: siblingEl
                                  -      };
                                  -    },
                                  -    
                                  -    isElementAdded: function() { return false; },
                                  -    isElementRemoved: function() { return false; },
                                  -    
                                  -    toString: function() {
                                  -      return "[object ChangeEvent-" + this.changeType + "-" + this.subType + " " + this.xpath + "]";
                                  -    }
                                  -};
                                  -
                                  -// Global API
                                  -FireDiff.events = {
                                  -    ChangeEvent: ChangeEvent,
                                  -    
                                  -    ChangeSource: ChangeSource,
                                  -    AnnotateAttrs: {
                                  -      CHANGES: CHANGES,
                                  -      ATTR_CHANGES: ATTR_CHANGES,
                                  -      REMOVE_CHANGES: REMOVE_CHANGES
                                  -    },
                                  -
                                  -    /**
                                  -     * Simplifies the given change set to a reduced form, optionally updating
                                  -     * all changes to the current point in time.
                                  -     * 
                                  -     * simplifyOnly:
                                  -     *    truthy: Do not merge change xpaths. Change sets merged in this mode can be integrated with
                                  -     *        other change sets without xpath corruption.
                                  -     *    falsy: Merge change xpaths. This will update all changes so their xpaths reflect the current
                                  -     *        state of the document. Change sets merged in this mode can not be merged with other
                                  -     *        change sets.
                                  -     */
                                  -    merge: function(changes, simplifyOnly) {
                                  -      if (!changes.length) {
                                  -        return changes;
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge prior simplifyOnly: " + simplifyOnly, changes);
                                  -      changes = changes.slice();
                                  -
                                  -      var ret = [];
                                  -      for (var i = 0; i < changes.length; i++) {
                                  -        var changeMerge = mergeChange(changes, changes[i], i, simplifyOnly);
                                  -        if (changeMerge) {
                                  -          ret.push(changeMerge);
                                  -        }
                                  -      }
                                  -
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge result", ret);
                                  -      return ret;
                                  -    },
                                  -    
                                  -    /**
                                  -     * Determines the changes necessary to revert a given change.
                                  -     * 
                                  -     * Returns an array of events that need to be reverted in order to
                                  -     * restore the associated object to the state prior to the given change.
                                  -     * These events are defined in reverse order, with change n being dependent
                                  -     * upon change n+1. These events will be merged where possible.
                                  -     * 
                                  -     * The changes array will be modified to remove the reverted events as well
                                  -     * as update the xpath of the remaining events to reflect the state of the
                                  -     * system after the reverts occur.
                                  -     */
                                  -    mergeRevert: function(change, changes) {
                                  -      var changeIndex = getChangeIndex(changes, change);
                                  -
                                  -      // Merge all relevant changes into this change.
                                  -      var reverts = [];
                                  -      change = revertChange(changes, change, changeIndex, reverts);
                                  -
                                  -      if (change) {
                                  -        reverts.splice(0, 0, change);
                                  -      }
                                  -
                                  -      changes[changeIndex] = undefined;
                                  -      for (var i = changes.length; i > 0; i--) {
                                  -        if (!changes[i-1]) {
                                  -          changes.splice(i-1, 1);
                                  -        }
                                  -      }
                                  -
                                  -      reverts.sort(function(a, b) { return b.xpath.localeCompare(a.xpath); });
                                  -      return reverts;
                                  -    }
                                  -};
                                  -
                                  -function mergeChange(changes, change, changeIndex, simplifyOnly) {
                                  -  if (!change) {
                                  -    return;
                                  -  }
                                  -
                                  -  for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) {
                                  -    var candidate = changes[outerIter],
                                  -        mergeValue;
                                  -    if (!candidate || candidate.changeType != change.changeType) {
                                  -      continue;
                                  -    }
                                  -
                                  -    if (change.isCancellation(candidate)) {
                                  -      mergeValue = [];
                                  -    } else if (candidate.overridesChange(change)) {
                                  -      mergeValue = [undefined, candidate];
                                  -    } else {
                                  -      mergeValue = change.merge(changes[outerIter], simplifyOnly);
                                  -    }
                                  -    if (!mergeValue) {
                                  -      continue;
                                  -    }
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge change " + changeIndex + " " + outerIter, mergeValue);
                                  -
                                  -    if (mergeValue.length == 0 && !mergeValue[0]) {
                                  -      // Cancellation special case:
                                  -      updateXPathFromCancellation(changes, change, changeIndex, outerIter);
                                  -    }
                                  -
                                  -    change = mergeValue[0];
                                  -    changes[outerIter] = mergeValue[1];
                                  -  }
                                  -
                                  -  return change;
                                  -}
                                  -
                                  -function revertChange(changes, change, changeIndex, parentDeletes) {
                                  -  if (!change) {
                                  -    return;
                                  -  }
                                  -
                                  -  for (var outerIter = changeIndex + 1; change && outerIter < changes.length; outerIter++) {
                                  -    var candidate = changes[outerIter],
                                  -        mergeValue = undefined,
                                  -        updateXPath;
                                  -
                                  -    if (change.isCancellation(candidate)) {
                                  -      mergeValue = [];
                                  -    } else if (candidate.isElementRemoved()
                                  -        && (Path.isChild(candidate.xpath, change.xpath)
                                  -          || (!change.isElementRemoved() && change.xpath == candidate.xpath))) {
                                  -      changes[outerIter] = undefined;
                                  -      parentDeletes.push(candidate);
                                  -    } else if (Path.isChildOrSelf(change.xpath, candidate.xpath)) {
                                  -      mergeValue = change.mergeRevert(candidate);
                                  -    }
                                  -    
                                  -    if (mergeValue) {
                                  -      if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Merge revert change " + changeIndex + " " + outerIter, mergeValue);
                                  -      changes[outerIter] = mergeValue[1];
                                  -
                                  -      if (!mergeValue[0]) {
                                  -        // Cancellation special case:
                                  -        updateXPathFromCancellation(changes, change, changeIndex, outerIter);
                                  -
                                  -        changeIndex = processRevertCancel(changes, candidate, outerIter, parentDeletes);
                                  -        if (changeIndex) {
                                  -          outerIter = changeIndex;
                                  -          change = changes[changeIndex];
                                  -          changes[changeIndex] = undefined;
                                  -          continue;
                                  -        } else {
                                  -          return;
                                  -        }
                                  -      }
                                  -
                                  -      change = mergeValue[0];
                                  -    } else {
                                  -      // We are only merging a particular change and do not need to do a full 
                                  -      // merge outside of this path, but we do need to make sure that xpaths
                                  -      // are up to date
                                  -      // Check to see if we update the candidate
                                  -      updatedXPath = change.getRevertXPath(candidate);
                                  -      
                                  -      // Check to see if the candidate updates us
                                  -      if (!updatedXPath) {
                                  -        updatedXPath = candidate.getMergedXPath(change);
                                  -        if (updatedXPath) {
                                  -          change = change.cloneOnXPath(updatedXPath);
                                  -          changes[changeIndex] = change;
                                  -        }
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  for (outerIter = changeIndex + 1; outerIter < changes.length; outerIter++) {
                                  -    candidate = changes[outerIter];
                                  -    if (!candidate) {
                                  -      continue;
                                  -    }
                                  -    updatedXPath = change.getRevertXPath(candidate);
                                  -    if (updatedXPath) {
                                  -      changes[outerIter] = candidate.cloneOnXPath(updatedXPath);
                                  -    }
                                  -  }
                                  -
                                  -  return change;
                                  -}
                                  -
                                  -/**
                                  - * Lookup the next change that we may have to revert to fully revert the
                                  - * element in question to the previous state.
                                  - */
                                  -function processRevertCancel(changes, change, curIndex, parentDeletes) {
                                  -  for (; curIndex < changes.length; curIndex++) {
                                  -    var candidate = changes[curIndex];
                                  -    if (!candidate) {
                                  -      continue;
                                  -    }
                                  -    
                                  -    // Check for the applies to case
                                  -    if (change.affectsCancellation(candidate)) {
                                  -      return curIndex;
                                  -    }
                                  -    
                                  -    // Check for the parent delete case
                                  -    if (candidate.isElementRemoved()
                                  -        && Path.isChild(candidate.xpath, change.xpath)) {
                                  -      changes[curIndex] = undefined;
                                  -      parentDeletes.push(candidate);
                                  -    }
                                  -    
                                  -    // Update xpaths as necessary
                                  -    var updatedXPath = candidate.getMergedXPath(change);
                                  -    if (updatedXPath) {
                                  -      change = change.cloneOnXPath(updatedXPath);
                                  -    }
                                  -  }
                                  -};
                                  -
                                  -function updateXPathFromCancellation(changes, change, changeIndex, outerIter) {
                                  -  // Update any changes that happened between the current change and the
                                  -  // cancellation change so their xpath acts as though these changes
                                  -  // never existed
                                  -  for (var cancelIter = changeIndex + 1; cancelIter < outerIter; cancelIter++) {
                                  -    if (changes[cancelIter]) {
                                  -      var updatedXPath = change.getRevertXPath(changes[cancelIter]);
                                  -      if (updatedXPath) {
                                  -        changes[cancelIter] = changes[cancelIter].cloneOnXPath(updatedXPath);
                                  -      }
                                  -    }
                                  -  }
                                  -}
                                  -function getChangeIndex(changes, change) {
                                  -  if (!change) {
                                  -    return 0;
                                  -  }
                                  -  for (var i = 0; i < changes.length && changes[i] != change; i++) {
                                  -    /* NOP */
                                  -  }
                                  -  return i;
                                  -}
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/firediff.xul b/branches/flexBox/content/firediff/content/firediff/firediff.xul
                                  deleted file mode 100644
                                  index d7690835..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/firediff.xul
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<?xml version="1.0"?>
                                  -<!-- See license.txt for terms of usage -->
                                  -
                                  -<?xml-stylesheet href="chrome://firediff/skin/firediff.css"?>
                                  -
                                  -<!DOCTYPE window [
                                  -  <!ENTITY % firebugDTD SYSTEM "chrome://firebug/locale/firebug.dtd">
                                  -  %firebugDTD;
                                  -  <!ENTITY % firediffDTD SYSTEM "chrome://firediff/locale/firediff.dtd">
                                  -  %firediffDTD;
                                  -]>
                                  -
                                  -
                                  -<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                                  -  <stringbundleset id="stringbundleset">
                                  -    <stringbundle id="strings_firediff" src="chrome://firediff/locale/firediff.properties"/>
                                  -  </stringbundleset>
                                  -  
                                  -  <script src="chrome://firediff/content/versionCompat.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diff.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/path.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/cssModel.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/events.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/domEvents.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/cssEvents.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/domplate.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/search.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/pages.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diffModule.js" type="application/x-javascript"/>
                                  -  <script src="chrome://firediff/content/diffMonitor.js" type="application/x-javascript"/>
                                  -  
                                  -  <commandset id="mainCommandSet">
                                  -    <command id="cmd_clearDiffMonitor" oncommand="Firebug.DiffModule.clearChanges(FirebugContext)"/>
                                  -    <command id="cmd_prevChange" oncommand="Firebug.DiffModule.navPrevChange(FirebugContext)"/>
                                  -    <command id="cmd_nextChange" oncommand="Firebug.DiffModule.navNextChange(FirebugContext)"/>
                                  -  </commandset>
                                  -  
                                  -  <toolbar id="fbToolbar" align="center">
                                  -    <hbox id="fbToolbarInner" insertbefore="fbDetachButton" flex="1" align="center">
                                  -      <hbox id="fbDiffMonitorButtons" insertafter="fbNetButtons" collapsed="true">
                                  -        <toolbarseparator/>
                                  -        <toolbarbutton label="&firebug.Clear;" class="toolbar-text-button"
                                  -                       tooltiptext="&firebug.ClearTooltip;" command="cmd_clearDiffMonitor"/>
                                  -        <hbox id="fbDiffSnapshotNav" collapsed="true">
                                  -          <toolbarseparator/>
                                  -          <toolbarbutton label="&firediff.PrevChange;" command="cmd_prevChange" class="toolbar-text-button"/>
                                  -          <toolbarbutton label="&firediff.NextChange;" command="cmd_nextChange" class="toolbar-text-button"/>
                                  -        </hbox>
                                  -      </hbox>
                                  -    </hbox>
                                  -  </toolbar>
                                  -</overlay>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/pages.js b/branches/flexBox/content/firediff/content/firediff/pages.js
                                  deleted file mode 100644
                                  index be913352..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/pages.js
                                  +++ /dev/null
                                  @@ -1,411 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -FireDiff.reps = FBL.ns(function() { with (FBL) {
                                  -
                                  -var Fireformat = {};
                                  -
                                  -try {
                                  -  //Components.utils.import("resource://fireformat/formatters.jsm", Fireformat);
                                  -} catch (err) {
                                  -}
                                  -
                                  -//const dateFormat = CCSV("@mozilla.org/intl/scriptabledateformat;1", "nsIScriptableDateFormat");
                                  -
                                  -var Events = FireDiff.events,
                                  -    Path = FireDiff.Path,
                                  -    CSSModel = FireDiff.CSSModel,
                                  -    DiffDomplate = FireDiff.domplate,
                                  -    Search = FireDiff.search;
                                  -
                                  -var i18n = document.getElementById("strings_firediff");
                                  -i18n = {
                                  -  getString: function(name)
                                  -  {
                                  -      return name;
                                  -  }
                                  -};
                                  -
                                  -// Object used to define the monitor view
                                  -this.Monitor = domplate({
                                  -  entry: DIV(
                                  -      {"class": "diffMonitorElement", $firebugDiff: "$change|isFirebugDiff", $appDiff: "$change|isAppDiff", _repObject: "$change"},
                                  -      SPAN({"class": "diffSummary"}, "$change|getSummary"),
                                  -      SPAN({"class": "diffSep"}, ":"),
                                  -      SPAN({"class": "diffSource"}, "$change|getDiffSource"),
                                  -      SPAN({"class": "diffDate"}, "$change|getDate"),
                                  -      DIV({"class": "diffXPath"}, "$change|getXPath"),
                                  -      DIV({"class": "logEntry"}, TAG("$change|getChangeTag", {change: "$change", object: "$change.target"}))
                                  -      ),
                                  -  
                                  -  getChangeTag: function(change) {
                                  -    if (change.changeType == "CSS") {
                                  -      return DiffDomplate.CSSChanges.CSSStyleRule.tag;
                                  -    } else if (change.clone instanceof Text) {
                                  -      return DiffDomplate.TextChanged.tag;
                                  -    } else {
                                  -      return DiffDomplate.ElementChanged.tag;
                                  -    }
                                  -  },
                                  -  getSummary: function(change) {
                                  -    return change.getSummary();
                                  -  },
                                  -  getDiffSource: function(change) {
                                  -    if (this.isFirebugDiff(change)) {
                                  -      return i18n.getString("source.firebug");
                                  -    } else {
                                  -      return i18n.getString("source.application");
                                  -    }
                                  -  },
                                  -  getDate: function(change) {
                                  -    var date = change.date;
                                  -    return date+"";
                                  -    return dateFormat.FormatDateTime(
                                  -        "", dateFormat.dateFormatLong, dateFormat.timeFormatSeconds,
                                  -        date.getFullYear(), date.getMonth() + 1, date.getDate(),
                                  -        date.getHours(), date.getMinutes(), date.getSeconds()); 
                                  -  },
                                  -  getXPath: function(change) {
                                  -    return change.displayXPath || change.xpath || "";
                                  -  },
                                  -  isFirebugDiff: function(change) {
                                  -    return change.changeSource == Events.ChangeSource.FIREBUG_CHANGE;
                                  -  },
                                  -  isAppDiff: function(change) {
                                  -    return change.changeSource == Events.ChangeSource.APP_CHANGE;
                                  -  },
                                  -  
                                  -  getChanges: function() {
                                  -    return Firebug.DiffModule.getChanges();
                                  -  },
                                  -  getTag: function(object) {
                                  -    return this.entry;
                                  -  },
                                  -  
                                  -  show: function(panel) {
                                  -    var changes = Firebug.DiffModule.getChanges();
                                  -    for (var i = 0; i < changes.length; i++) {
                                  -      this.onChange(changes[i], panel);
                                  -    }
                                  -  },
                                  -  onChange: function(change, panel) {
                                  -    try {
                                  -      this.entry.append({change: change}, panel.panelNode);
                                  -    } catch (err) {
                                  -      FBTrace.sysout("ERROR: onChange", err);
                                  -    }
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    this.searchHelper = this.searchHelper || new Search.PageSearch();
                                  -    return this.searchHelper.search(text, reverse, panel);
                                  -  }
                                  -});
                                  -this.MonitorRep = domplate(Firebug.Rep,{
                                  -  supportsObject: function(object, type) {
                                  -    return object == FireDiff.reps.Monitor;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.ChangeLog");
                                  -  }
                                  -});
                                  -
                                  -/**
                                  - * Initializes the base snapshot datastructures. The passed parameter may be a
                                  - * change event to generate a snapshot for a single document at a given point in
                                  - * time or it may be a document to generate the base snapshot for that document.
                                  - * 
                                  - * @constructor
                                  - * @class Base class for snapshots of a document state at a given point of time.
                                  - * @param {Object} change The change event of document to create a snapshot for.
                                  - */
                                  -function Snapshot(change) {
                                  -  var changes = Firebug.DiffModule.getChanges();
                                  -  var displayChanges = [], revertChanges = [];
                                  -  var foundChange = false;
                                  -  for (var i = 0; i < changes.length; i++) {
                                  -    if (changes[i] == change) {
                                  -      displayChanges.push(changes[i]);
                                  -      foundChange = true;
                                  -    } else if (changes[i].sameFile(change)) {
                                  -      (foundChange ? revertChanges : displayChanges).push(changes[i]);
                                  -    }
                                  -  }
                                  -  if (!foundChange) {
                                  -    // If the change was not in the list then we assume that this is the revert
                                  -    // to base case
                                  -    revertChanges = displayChanges;
                                  -    displayChanges = [];
                                  -  }
                                  -  displayChanges = Events.merge(displayChanges);
                                  -  
                                  -  this.displayChanges = displayChanges;
                                  -  this.revertChanges = revertChanges;
                                  -}
                                  -Snapshot.prototype = {
                                  -  updateCloneToChange: function(clone, cloneXPath) {
                                  -    this.changeNodeList = [];
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Revert changes", this.revertChanges);
                                  -    
                                  -    var i = this.revertChanges.length;
                                  -    while (i--) {
                                  -      try {
                                  -        this.revertChanges[i].revert(clone, cloneXPath);
                                  -      } catch (err) {
                                  -        FBTrace.sysout("Snapshot.updateCloneToChane: revert " + i + " " + err, this.revertChanges[i]);
                                  -        throw err;
                                  -      }
                                  -    }
                                  -    for (var i = 0; i < this.displayChanges.length; i++) {
                                  -      try {
                                  -        this.changeNodeList.push(this.displayChanges[i].annotateTree(clone, cloneXPath));
                                  -      } catch (err) {
                                  -        FBTrace.sysout("ERROR: Failed to annotate tree: " + i, this.displayChanges[i]);
                                  -        throw err;
                                  -      }
                                  -    }
                                  -    this.normalizeChangeNodes();
                                  -  },
                                  -  
                                  -  navigableChange: function(changeNode) {},
                                  -  iterateChanges: function(stepper) {
                                  -    var change = stepper(this.curChange);
                                  -
                                  -    for (var i = 0; i < this.changeNodeList.length+1; i++) {
                                  -      if (change >= this.changeNodeList.length) {
                                  -        change = 0;
                                  -      } else if (change < 0) {
                                  -        change = this.changeNodeList.length - 1;
                                  -      }
                                  -
                                  -      if (this.navigableChange(this.changeNodeList[change])) {
                                  -        return change;
                                  -      }
                                  -      
                                  -      change = stepper(change);
                                  -    }
                                  -    return -1;
                                  -  },
                                  -  
                                  -  showNext: function() {
                                  -    this.curChange = this.iterateChanges(
                                  -        function(change) { return change + 1; });
                                  -    
                                  -    this.showCurNode();
                                  -  },
                                  -  showPrev: function() {
                                  -    this.curChange = this.iterateChanges(
                                  -        function(change) { return change - 1; });
                                  -    
                                  -    this.showCurNode();
                                  -  },
                                  -  getCurNode: function() {},
                                  -  showCurNode: function() {
                                  -    if (this.curChange < 0) {
                                  -      return;
                                  -    }
                                  -
                                  -    var objectBox = this.getCurNode();
                                  -    if (objectBox) {
                                  -      scrollIntoCenterView(objectBox);
                                  -      setClassTimed(objectBox, "jumpHighlight", this.panel.context);
                                  -    }
                                  -    return objectBox;
                                  -  },
                                  -  getChangeNodePath: function(changeNode) {},
                                  -  normalizeChangeNodes: function() {
                                  -    // Reduce to one element per xpath
                                  -    var pathList = {};
                                  -    var ret = [];
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Snapshot.normalizeChangeNodes prior", this.changeNodeList);
                                  -    
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      var change = this.changeNodeList[i];
                                  -      var path = change.xpath || Path.getElementPath(change, false, this.cloneXPath);
                                  -      
                                  -      if (!change.normalized) {
                                  -        change.lookupXPath = path;
                                  -        change.normalized = true;
                                  -        ret.push(change);
                                  -      }
                                  -    }
                                  -    
                                  -    ret.sort(function(a, b) { return Path.compareXPaths(a.lookupXPath, b.lookupXPath); });
                                  -
                                  -    // Since we are operating on a shared object we need to revert our tracking
                                  -    // var for future operations.
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      var change = this.changeNodeList[i];
                                  -      change.normalized = undefined;
                                  -    }
                                  -
                                  -    this.changeNodeList = ret;
                                  -    if (FBTrace.DBG_FIREDIFF)   FBTrace.sysout("Snapshot.normalizeChangeNodes post", this.changeNodeList);
                                  -  }
                                  -};
                                  -
                                  -this.DOMSnapshot = function(change, document){
                                  -  Snapshot.call(this, change || document.documentElement);
                                  -  
                                  -  // This requires Firefox 3.5
                                  -  this.displayTree = document.cloneNode(true);
                                  -  this.cloneXPath = Path.getElementPath(document);
                                  -  this.updateCloneToChange(this.displayTree, this.cloneXPath);
                                  -  
                                  -  this.onMouseDown = bind(this.onMouseDown, this);
                                  -};
                                  -this.DOMSnapshot.prototype = extend(Snapshot.prototype, {
                                  -  show: function(panel) {
                                  -    this.panel = panel;
                                  -    
                                  -    this.ioBox = new InsideOutBox(
                                  -        new DiffDomplate.HtmlSnapshotView(this.displayTree, this.cloneXPath, panel),
                                  -        panel.panelNode);
                                  -    this.ioBox.openObject(this.displayTree);
                                  -    
                                  -    for (var i = 0; i < this.changeNodeList.length; i++) {
                                  -      this.ioBox.openToObject(this.changeNodeList[i]);
                                  -    }
                                  -    this.curChange = -1;
                                  -    panel.panelNode.scrollTop = 0;
                                  -
                                  -    panel.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -  },
                                  -  hide: function(panel) {
                                  -    if (this.ioBox) {
                                  -      this.ioBox.destroy();
                                  -      delete this.ioBox;
                                  -    }
                                  -
                                  -    panel.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -    
                                  -    delete this.panel;
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    if (!text)  { return; }
                                  -
                                  -    var search;
                                  -    if (text == this.searchText && this.lastSearch) {
                                  -      search = this.lastSearch;
                                  -    } else {
                                  -      search = this.lastSearch = new Search.DOMDiffNodeSearch(text, this.displayTree, panel.panelNode, this.ioBox);
                                  -      this.searchText = text;
                                  -    }
                                  -
                                  -    var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -    if (loopAround) {
                                  -      delete this.lastSearch;
                                  -      return this.search(text, reverse, panel);
                                  -    }
                                  -
                                  -    return !search.noMatch;
                                  -  },
                                  -
                                  -  getText: function() {
                                  -    return Fireformat.Formatters.getHTMLFormatter().format(this.displayTree);
                                  -  },
                                  -
                                  -  navigableChange: function(changeNode) {
                                  -    var displayedTypes = {};
                                  -    displayedTypes[Events.ChangeSource.APP_CHANGE] = this.panel.isDisplayAppChanges();
                                  -    displayedTypes[Events.ChangeSource.FIREBUG_CHANGE] = this.panel.isDisplayFirebugChanges();
                                  -
                                  -    // Accept the change if
                                  -    //  - Is not whitespace only or we are displaying whitespace
                                  -    //  - Is an app change and we are displaying app changes
                                  -    //  - Is a firebug change and we are displaying firebug changes
                                  -    if (!Firebug.showWhitespaceNodes && DiffDomplate.DomUtil.isWhitespaceText(changeNode)) {
                                  -      return false;
                                  -    }
                                  -
                                  -    var change = changeNode[Events.AnnotateAttrs.CHANGES] || changeNode;
                                  -    if (displayedTypes[change.changeSource]) {
                                  -      return true;
                                  -    }
                                  -    var changes = changeNode[Events.AnnotateAttrs.ATTR_CHANGES] || {};
                                  -    for (var i in changes) {
                                  -      if (displayedTypes[changes[i].changeSource]) {
                                  -        return true;
                                  -      }
                                  -    }
                                  -  },
                                  -  getCurNode: function() {
                                  -    var change = this.changeNodeList[this.curChange];
                                  -    var objectBox = this.ioBox.openToObject(change);
                                  -
                                  -    if (objectBox) {
                                  -      // For dom removed and events that register themselves as the elements
                                  -      // sole change, highlight the entire element, otherwise
                                  -      // highlight the label only (this should only be the attr case)
                                  -      if (change.subType == "dom_removed" || change[FireDiff.events.AnnotateAttrs.CHANGES]) {
                                  -        return objectBox;
                                  -      } else {
                                  -        return getChildByClass(objectBox.firstChild, 'nodeLabelBox') || objectBox;
                                  -      }
                                  -    }
                                  -  },
                                  -  
                                  -  onMouseDown: function(event) {
                                  -    if (isLeftClick(event) && getAncestorByClass(event.target, "nodeContainerLabel")) {
                                  -      this.ioBox.expandObject(Firebug.getRepObject(event.target));
                                  -    }
                                  -  }
                                  -});
                                  -this.DOMSnapshotRep = domplate(Firebug.Rep, {
                                  -  supportsObject: function(object, type) {
                                  -    return object instanceof FireDiff.reps.DOMSnapshot;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.DOMSnapshot");
                                  -  }
                                  -});
                                  -
                                  -this.CSSSnapshot = function(change, context){
                                  -  Snapshot.call(this, change);
                                  -
                                  -  var rootPath = Path.getTopPath(change.xpath || Path.getStylePath(change));
                                  -  this.sheet = Path.evaluateStylePath(rootPath, context.window.document);
                                  -  this.displayTree = CSSModel.cloneCSSObject(this.sheet);
                                  -  this.updateCloneToChange(this.displayTree, rootPath);
                                  -};
                                  -this.CSSSnapshot.prototype = extend(Snapshot.prototype, {
                                  -  show: function(panel) {
                                  -    this.panel = panel;
                                  -    DiffDomplate.CSSChanges.CSSList.tag.append({change: this.displayTree}, panel.panelNode);
                                  -
                                  -    this.curChange = -1;
                                  -    panel.panelNode.scrollTop = 0;
                                  -  },
                                  -  hide: function() {
                                  -    delete this.panel;
                                  -  },
                                  -  search: function(text, reverse, panel) {
                                  -    this.searchHelper = this.searchHelper || new Search.PageSearch();
                                  -    return this.searchHelper.search(text, reverse, panel);
                                  -  },
                                  -  
                                  -  getText: function() {
                                  -    return Fireformat.Formatters.getCSSFormatter().format(this.displayTree);
                                  -  },
                                  -  
                                  -  navigableChange: function(change) {
                                  -    return this.panel.isDisplayFirebugChanges();
                                  -  },
                                  -  getCurNode: function() {
                                  -    var change = this.changeNodeList[this.curChange];
                                  -    return Firebug.getElementByRepObject(this.panel.panelNode, change);
                                  -  }
                                  -});
                                  -this.CSSSnapshotRep = domplate(Firebug.Rep, {
                                  -  supportsObject: function(object, type) {
                                  -    return object instanceof FireDiff.reps.CSSSnapshot;
                                  -  },
                                  -  getTitle: function(object) {
                                  -    return i18n.getString("page.CSSSnapshot");
                                  -  }
                                  -});
                                  -
                                  -Firebug.registerRep(
                                  -    this.MonitorRep,
                                  -    this.DOMSnapshotRep,
                                  -    this.CSSSnapshotRep);
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/path.js b/branches/flexBox/content/firediff/content/firediff/path.js
                                  deleted file mode 100644
                                  index 17c21f8c..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/path.js
                                  +++ /dev/null
                                  @@ -1,295 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -var Path = {};
                                  -FireDiff.Path = Path;
                                  -
                                  -const PATH_COMPONENT = /\/?([^\/\[\]]*(?:\[(?:\d+|@.+?='.*?')\]))/g;
                                  -
                                  -function getSheetId(sheet) {
                                  -  if (sheet.href) {
                                  -    return "@href='" + sheet.href + "'";
                                  -  }
                                  -  if (sheet.ownerNode && sheet.ownerNode.id) {
                                  -    return "@id='" + sheet.ownerNode.id + "'"
                                  -  }
                                  -  return getSheetIndex(sheet);
                                  -}
                                  -function getSheetIndex(sheet) {
                                  -  if (!sheet || !sheet.ownerNode)     return;
                                  -  var styleSheets = sheet.ownerNode.ownerDocument.styleSheets;
                                  -  for (var i = 0; i < styleSheets.length; i++) {
                                  -    if (styleSheets[i] == sheet) {
                                  -      return i+1;
                                  -    }
                                  -  }
                                  -}
                                  -function getRuleIndex(style, parent) {
                                  -  if (!style)     return;
                                  -  for (var i = 0; i < parent.cssRules.length; i++) {
                                  -    if (parent.cssRules[i] == style
                                  -        || parent.cssRules[i].styleSheet == style) {
                                  -      return i+1;
                                  -    }
                                  -  }
                                  -}
                                  -var styleLookups = {
                                  -  "style()" : function(current, index) {
                                  -    var fieldLookup = /@(.*?)='(.*?)'/;
                                  -    var match = fieldLookup.exec(index);
                                  -    if (match) {
                                  -      function checkSheet(sheet) {
                                  -        if (sheet[match[1]] == match[2]
                                  -            || (sheet.ownerNode && sheet.ownerNode[match[1]] == match[2])) {
                                  -          return sheet;
                                  -        }
                                  -        for (var i = 0; i < sheet.cssRules.length; i++) {
                                  -          if (sheet.cssRules[i] instanceof CSSImportRule) {
                                  -            var ret = checkSheet(sheet.cssRules[i].styleSheet);
                                  -            if (ret) {
                                  -              return ret;
                                  -            }
                                  -          }
                                  -        }
                                  -      }
                                  -      for (var i = current.styleSheets.length; i > 0; i--) {
                                  -        var ret = checkSheet(current.styleSheets[i-1]);
                                  -        if (ret) {
                                  -          return ret;
                                  -        }
                                  -      }
                                  -    } else {
                                  -      return current.styleSheets[index-1];
                                  -    }
                                  -  },
                                  -  "rule()" : function(current, index) {
                                  -    return current.cssRules[index-1];
                                  -  }
                                  -};
                                  -
                                  -function extractComponents(path) {
                                  -  var ret = path.indexOf("/") === 0 ? [""] : [],
                                  -      match;
                                  -  while ((match = PATH_COMPONENT.exec(path))) {
                                  -    ret.push(match[1]);
                                  -  }
                                  -  return ret;
                                  -}
                                  -
                                  -function updateForMutate(pathUpdate, pathChanged, offset, destroyAncestor) {
                                  -  var components = Path.getRelativeComponents(pathUpdate, pathChanged);
                                  -  var changeParent = Path.getParentPath(pathChanged);
                                  -  
                                  -  if (destroyAncestor && components.common == pathChanged) {
                                  -    // Path to update is the same or child of the one being removed
                                  -    return undefined;
                                  -  } else if (components.common == pathChanged) {
                                  -    // Parent or identity case
                                  -    return components.common.replace(
                                  -            /([^\/]+?)\[(\d+)\]$/,
                                  -            function(total, tag, index) {
                                  -              return tag + "[" + (parseInt(index)+offset) + "]";
                                  -            })
                                  -        + (components.left ? "/" : "")
                                  -        + components.left;
                                  -  } else if (components.left && components.common == changeParent) {
                                  -    // The removed path was the child of the common path element.
                                  -    // If the modified element was of the same type as our ancestor
                                  -    // at this level, then we will need to update our path
                                  -    var pathExtract = /^([^\/]+?)\[(\d+|@.+?='.*?')\]/;
                                  -    var ancestor = pathExtract.exec(components.left);
                                  -    var changed = pathExtract.exec(components.right);
                                  -
                                  -    if (ancestor[1] == changed[1]
                                  -        && parseInt(ancestor[2]) > parseInt(changed[2])) {
                                  -      return components.common
                                  -          + (components.common != "/" ? "/" : "")
                                  -          + components.left.replace(
                                  -              pathExtract,
                                  -              function(total, tag, index) {
                                  -                return tag + "[" + (parseInt(index)+offset) + "]";
                                  -              })
                                  -    }
                                  -  }
                                  -  
                                  -  // No effect on the path
                                  -  return pathUpdate;
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathInserted was just inserted into the
                                  - * document.
                                  - */
                                  -FireDiff.Path.updateForInsert = function(pathUpdate, pathInsert) {
                                  -  return updateForMutate(pathUpdate, pathInsert, 1, false);
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathRemoved was just removed from the
                                  - * document.
                                  - */
                                  -FireDiff.Path.updateForRemove = function(pathUpdate, pathRemoved) {
                                  -  return updateForMutate(pathUpdate, pathRemoved, -1, true);
                                  -};
                                  -
                                  -/**
                                  - * Updates pathUpdate as if pathRemoved was just removed from the
                                  - * document due to a revert.
                                  - */
                                  -FireDiff.Path.updateForRevertRemove = function(pathUpdate, pathRemoved) {
                                  -  return updateForMutate(pathUpdate, pathRemoved, -1, false);
                                  -};
                                  -
                                  -FireDiff.Path.getIdentifier = function(path) {
                                  -  var match = path.match(/^.*\/([^/\[\]]+?)(?:\[(\d+|@.+?='.*?')\])?$/);
                                  -  if (match) {
                                  -    var index = parseInt(match[2]);
                                  -    return { tag: match[1], index: isNaN(index) ? match[2] : index };
                                  -  }
                                  -};
                                  -FireDiff.Path.getParentPath = function(path) {
                                  -  return (path.match(/^(.+)\/([^\/\[\]]+?)(?:\[(\d+|@.+?='.*?')\])?$/) || ["", "/"])[1];
                                  -};
                                  -FireDiff.Path.getTopPath = function(path) {
                                  -  return (path.match(/^\/?[^\/\[\]]*(?:\[(?:\d+|@.+?='.*?')\])?/) || ["", ""])[0];
                                  -};
                                  -FireDiff.Path.isNextSibling = function(first, second) {
                                  -  var parent = Path.getParentPath(first);
                                  -  var identifier = Path.getIdentifier(first);
                                  -  
                                  -  return (parent + "/" + identifier.tag + "[" + (parseInt(identifier.index)+1) + "]") == second;
                                  -};
                                  -
                                  -FireDiff.Path.isChildOrSelf = function(parent, child) {
                                  -  return parent == child || Path.isChild(parent, child);
                                  -};
                                  -FireDiff.Path.isChild = function(parent, child) {
                                  -  return child.indexOf(parent + "/") === 0;
                                  -};
                                  -
                                  -FireDiff.Path.getRelativeComponents = function(path1, path2) {
                                  -  path1 = extractComponents(path1);
                                  -  path2 = extractComponents(path2);
                                  -  
                                  -  var common = [];
                                  -  for (var i = 0; i < path1.length && i < path2.length && path1[i] == path2[i]; i++) {
                                  -    common.push(path1[i]);
                                  -  }
                                  -  
                                  -  path1.splice(0, common.length);
                                  -  path2.splice(0, common.length);
                                  -  
                                  -  return {
                                  -    common: common.join("/") || (common.length == 1 ? "/" : ""),
                                  -    left: path1.join("/"),
                                  -    right: path2.join("/")
                                  -  };
                                  -};
                                  -
                                  -FireDiff.Path.compareXPaths = function(path1, path2) {
                                  -  var components = Path.getRelativeComponents(path1, path2);
                                  -  var leftTop = Path.getIdentifier("/" + Path.getTopPath(components.left));
                                  -  var rightTop = Path.getIdentifier("/" + Path.getTopPath(components.right));
                                  -  if (!leftTop) {
                                  -    return rightTop ? -1 : 0;
                                  -  }
                                  -  if (!rightTop) {
                                  -    return 1;
                                  -  }
                                  -  
                                  -  var tagCompare = leftTop.tag.localeCompare(rightTop.tag);
                                  -  if (tagCompare) {
                                  -    return tagCompare;
                                  -  }
                                  -  
                                  -  if (leftTop.index < rightTop.index) {
                                  -    return -1;
                                  -  } else if (leftTop.index == rightTop.index) {
                                  -    return 0;
                                  -  } else {
                                  -    return 1;
                                  -  }
                                  -};
                                  -
                                  -FireDiff.Path.getElementPath = function(element, useTagNames, rootPath) {
                                  -  var nameLookup = [];
                                  -  nameLookup[Node.COMMENT_NODE] = "comment()";
                                  -  nameLookup[Node.TEXT_NODE] = "text()";
                                  -  nameLookup[Node.PROCESSING_INSTRUCTION_NODE] = "processing-instruction()";
                                  -
                                  -  var paths = [];
                                  -  for (; element && element.nodeType != Node.DOCUMENT_NODE; element = element.parentNode) {
                                  -    var tagName = element.localName || nameLookup[element.nodeType];
                                  -    var index = 0;
                                  -    for (var sibling = element.previousSibling; sibling; sibling = sibling.previousSibling) {
                                  -      var siblingTagName = sibling.localName || nameLookup[sibling.nodeType];
                                  -      if (!useTagNames || tagName == siblingTagName || !tagName) {
                                  -        ++index;
                                  -      }
                                  -    }
                                  -
                                  -    var pathIndex = "[" + (index+1) + "]";
                                  -    paths.splice(0, 0, (useTagNames && tagName ? tagName.toLowerCase() : "node()") + pathIndex);
                                  -  }
                                  -
                                  -  var prefix = "/";
                                  -  if (rootPath && paths.length) {
                                  -    prefix = "";
                                  -    paths[0] = rootPath;
                                  -  }
                                  -
                                  -  return prefix + paths.join("/");
                                  -};
                                  -
                                  -FireDiff.Path.getStylePath = function(style) {
                                  -  var paths = [];
                                  -  
                                  -  // Style declarations are not part of the path
                                  -  if (style instanceof CSSStyleDeclaration)     style = style.parentRule;
                                  -  if (!style)     return undefined;
                                  -  
                                  -  var parent = style;
                                  -  while ((parent = style.parentRule || style.parentStyleSheet)) {
                                  -    if (style instanceof CSSStyleSheet)    break;
                                  -    
                                  -    var index = getRuleIndex(style, parent);
                                  -    if (!index)    break;
                                  -    
                                  -    paths.splice(0, 0, "rule()[" + index + "]");
                                  -    style = parent;
                                  -  }
                                  -  
                                  -  // At this point we should be at the sheet object, if we aren't, the style
                                  -  // isn't in the doc
                                  -  var sheetId = getSheetId(style);
                                  -  if (!sheetId)     return undefined;
                                  -  
                                  -  paths.splice(0, 0, "/style()[" + sheetId+ "]");
                                  -  return paths.join("/");
                                  -};
                                  -
                                  -FireDiff.Path.evaluateStylePath = function(path, document) {
                                  -  var parser = /\/?(.*?)\[(.*?)\]/g;
                                  -  var component, current;
                                  -  
                                  -  // The regex appears to maintain state (due to an optimizer?) meaning that
                                  -  // any situation where the entire string is not processed, such as an error
                                  -  // case, could cause future calls to fail.
                                  -  parser.lastIndex = 0;
                                  -  while (component = parser.exec(path)) {
                                  -    var lookup = styleLookups[component[1]];
                                  -    if (!lookup) {
                                  -      return undefined;
                                  -    }
                                  -    
                                  -    current = lookup(current || document, component[2]);
                                  -    if (!current) {
                                  -      return undefined;
                                  -    }
                                  -  }
                                  -  
                                  -  return current;
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/search.js b/branches/flexBox/content/firediff/content/firediff/search.js
                                  deleted file mode 100644
                                  index f44f8e08..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/search.js
                                  +++ /dev/null
                                  @@ -1,452 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -/**
                                  - * Classes used to iterate over DOM content and search Firediff pages.
                                  - */
                                  -FireDiff.search = FBL.ns(function() { with (FBL) {
                                  -
                                  -const Events = FireDiff.events,
                                  -      VersionCompat = FireDiff.VersionCompat,
                                  -      DiffDomplate = FireDiff.domplate,
                                  -      Search = this;
                                  -
                                  -/**
                                  - * @class Search for use in pages where all content is available and visible at all times.
                                  - */
                                  -this.PageSearch = function() {
                                  -  var currentSearch;
                                  -
                                  -  /**
                                  -   * Execute the search
                                  -   *
                                  -   * @param {String} text Search text
                                  -   * @param {boolean} reverse true to perform a reverse search
                                  -   * @param {Element} panel Panel to search
                                  -   */
                                  -  this.search = function(text, reverse, panel) {
                                  -    var panelNode = panel.panelNode;
                                  -    if (!text) {
                                  -      currentSearch = undefined;
                                  -      return false;
                                  -    }
                                  -
                                  -    var row;
                                  -    if (currentSearch && text == currentSearch.text) {
                                  -      row = currentSearch.findNext(true, false, reverse, Firebug.searchCaseSensitive);
                                  -    } else {
                                  -      function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -      currentSearch = new TextSearch(panelNode, findRow);
                                  -      row = currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -    }
                                  -
                                  -    // TODO : What a11y events should this produce?
                                  -    if (row) {
                                  -      panel.document.defaultView.getSelection().selectAllChildren(row);
                                  -      scrollIntoCenterView(row, panelNode);
                                  -      return true;
                                  -    } else {
                                  -      return false;
                                  -    }
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Constructs a NodeSearch instance.
                                  - *
                                  - * @class Class used to search a DOM tree for the given text. Will display
                                  - *        the search results in a IO Box.
                                  - *
                                  - * @constructor
                                  - * @param {String} text Text to search for
                                  - * @param {Object} root Root of search. This may be an element or a document
                                  - * @param {Object} panelNode Panel node containing the IO Box representing the DOM tree.
                                  - * @param {Object} ioBox IO Box to display the search results in
                                  - */
                                  -this.DOMDiffNodeSearch = function(text, root, panelNode, ioBox) {
                                  -  VersionCompat.NodeSearch.call(
                                  -      this, text, root, panelNode, ioBox, new Search.DOMDiffWalker(root));
                                  -  var re = new ReversibleRegExp(text, "m");
                                  -
                                  -  /**
                                  -   * Checks a given node for a search match.
                                  -   *
                                  -   * @private
                                  -   */
                                  -  this.checkNode = function(node, reverse, caseSensitive, firstStep) {
                                  -    var originalNode = node;
                                  -    node = node.clone || node;
                                  -
                                  -    var checkOrder, checkValues = [];
                                  -    if (originalNode.attrNode) {
                                  -      originalNode = node.attrNode;
                                  -
                                  -      var diff = DiffDomplate.DomUtil.diffAttr(node);
                                  -      diff = diff.reduce(function(prev, current) { return prev + current.value; }, "");
                                  -
                                  -      var nameCheck = { value: originalNode.nodeName, isValue: false, caseSensitive: false };
                                  -      var valueCheck = { value: diff, isValue: true, caseSensitive: caseSensitive };
                                  -      checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -    } else if (originalNode.subType == "char_data_modified") {
                                  -      var diff = DiffDomplate.DomUtil.diffText(originalNode);
                                  -      diff = diff.reduce(function(prev, current) { return prev + current.value; }, "");
                                  -
                                  -      checkOrder = [{value: diff, isValue: false, caseSensitive: caseSensitive }];
                                  -    } else if (node.nodeType != Node.TEXT_NODE) {
                                  -      var nameCheck = { value: node.nodeName, isValue: false, caseSensitive: false };
                                  -      var valueCheck = { value: node.nodeValue, isValue: true, caseSensitive: caseSensitive };
                                  -      checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -    } else {
                                  -      checkOrder = [{value: node.nodeValue, isValue: false, caseSensitive: caseSensitive }];
                                  -    }
                                  -
                                  -    for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -      var m = re.exec(checkOrder[i].value, reverse, checkOrder[i].caseSensitive);
                                  -      if (m) {
                                  -        return {
                                  -            node: originalNode,
                                  -            isValue: checkOrder[i].isValue,
                                  -            match: m
                                  -        };
                                  -      }
                                  -    }
                                  -  };
                                  -
                                  -  var super_openToNode = this.openToNode;
                                  -  this.openToNode = function(node, isValue) {
                                  -    var ret = super_openToNode.call(this, node, isValue);
                                  -    if (!ret) {
                                  -      // Fail over to the node if it's not supported by the base impl
                                  -      ret = ioBox.openToObject(node);
                                  -    }
                                  -    return ret;
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Constructs a DOMDiffWalker instance.
                                  - *
                                  - * @constructor
                                  - * @class Implements an ordered traveral of the document, including diff events,
                                  - *        attributes and iframe contents within the results.
                                  - *
                                  - *        Note that the order for attributes is not defined. This will follow the
                                  - *        same order as the Element.attributes accessor.
                                  - * @param {Element} root Element to traverse
                                  - */
                                  -this.DOMDiffWalker = function(root) {
                                  -  var stack = [];
                                  -  var pastStart, pastEnd;
                                  -
                                  -  function pushStack(currentNode, reverse) {
                                  -    if (currentNode) {
                                  -      var attrs = Search.getAttributes(currentNode),
                                  -          children = [];
                                  -
                                  -      // Precache the child elements to make the logic easier. If this becomes
                                  -      // a performance issue then this can be revisited using an inline selection
                                  -      // algorithm
                                  -      try {
                                  -        var baseIter;
                                  -        var removeIter = new Search.RemovedIterator(
                                  -            new Search.DOMIterator(currentNode.clone || currentNode),
                                  -            currentNode[Events.AnnotateAttrs.REMOVE_CHANGES]);
                                  -        while (1) {
                                  -          children.push(removeIter.next());
                                  -        }
                                  -      } catch (err) {
                                  -        /* NOP */
                                  -      }
                                  -
                                  -      stack.unshift({
                                  -        node: currentNode,
                                  -        attrs: attrs,
                                  -        attrIndex: reverse ? attrs.length-1 : -1,
                                  -        children: children,
                                  -        childIndex: reverse ? children.length-1 : -1
                                  -      });
                                  -      return stack[0];
                                  -    }
                                  -  }
                                  -
                                  -  function pushDescendents(el) {
                                  -    while (el) {
                                  -      pushStack(el, true);
                                  -      if (((el.nodeName || "").toUpperCase() == "IFRAME")) {
                                  -        el = el.contentDocument.documentElement;
                                  -      } else {
                                  -        el = stack[0].children[stack[0].children.length-1];
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  /**
                                  -   * Move to the next node.
                                  -   *
                                  -   * @return The next node if one exists, otherwise undefined.
                                  -   */
                                  -  this.nextNode = function() {
                                  -    if (pastEnd) {
                                  -      return undefined;
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      // We are working with a new tree walker
                                  -      pushStack(root);
                                  -    } else {
                                  -      var stackEl = stack[0];
                                  -
                                  -      // First check attributes
                                  -      if (stackEl.attrIndex < stackEl.attrs.length-1) {
                                  -        stackEl.attrIndex++;
                                  -      } else if ((stackEl.node.nodeName || "").toUpperCase() == "IFRAME"
                                  -          && stackEl.node.contentDocument) {
                                  -        // Attributes have completed, check for iframe contents
                                  -        pushStack(stackEl.node.contentDocument.documentElement);
                                  -      } else {
                                  -        while (stack.length) {
                                  -          stackEl = stack[0];
                                  -          stackEl.childIndex++;
                                  -          if (stackEl.childIndex < stackEl.children.length) {
                                  -            pushStack(stackEl.children[stackEl.childIndex]);
                                  -            break;
                                  -          } else {
                                  -            // The end, pop
                                  -            stack.shift();
                                  -          }
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      pastEnd = true;
                                  -    } else {
                                  -      pastStart = false;
                                  -    }
                                  -
                                  -    return this.currentNode();
                                  -  };
                                  -
                                  -  /**
                                  -   * Move to the previous node.
                                  -   *
                                  -   * @return The previous node if one exists, undefined otherwise.
                                  -   */
                                  -  this.previousNode = function() {
                                  -    if (pastStart) {
                                  -      return undefined;
                                  -    }
                                  -
                                  -    var stackEl = stack[0];
                                  -    if (!stackEl) {
                                  -      // Generate the stack up to the last element
                                  -      pushDescendents(root);
                                  -    } else if (stackEl.childIndex >= 0) {
                                  -      stackEl.childIndex--;
                                  -      pushDescendents(stackEl.children[stackEl.childIndex]);
                                  -    } else if (stackEl.attrIndex >= 0) {
                                  -      stackEl.attrIndex--;
                                  -    } else {
                                  -      stack.shift();
                                  -      stackEl = stack[0];
                                  -      if (stackEl && stackEl.childIndex >= 0) {
                                  -        stackEl.childIndex--;
                                  -        pushDescendents(stackEl.children[stackEl.childIndex]);
                                  -      }
                                  -    }
                                  -
                                  -    if (!stack.length) {
                                  -      pastStart = true;
                                  -    } else {
                                  -      pastEnd = false;
                                  -    }
                                  -
                                  -    return this.currentNode();
                                  -  };
                                  -
                                  -  /**
                                  -   * Retrieves the current node.
                                  -   *
                                  -   * @return The current node, if not past the beginning or end of the iteration.
                                  -   */
                                  -  this.currentNode = function() {
                                  -    var stackEl = stack[0];
                                  -    if (stackEl) {
                                  -      if (stackEl.attrIndex >= 0) {
                                  -        return stackEl.attrs[stackEl.attrIndex];
                                  -      } else {
                                  -        return stackEl.node;
                                  -      }
                                  -    }
                                  -  };
                                  -
                                  -  /**
                                  -   * Resets the walker position back to the initial position.
                                  -   */
                                  -  this.reset = function() {
                                  -    pastStart = false;
                                  -    pastEnd = false;
                                  -    stack = [];
                                  -  };
                                  -
                                  -  this.reset();
                                  -};
                                  -
                                  -/**
                                  - * @class Iterates over the contents of an array
                                  - */
                                  -this.ArrayIterator = function(array) {
                                  -  var index = -1;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    if (++index >= array.length)    $break();
                                  -    return array[index];
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * @class Iterates over the children of a given node.
                                  - */
                                  -this.DOMIterator = function(node) {
                                  -  var curNode = node.firstChild;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    var ret = curNode;
                                  -
                                  -    curNode = curNode.nextSibling;
                                  -    while (curNode && Firebug.DiffModule.ignoreNode(curNode)) {
                                  -      curNode = curNode.nextSibling;
                                  -    }
                                  -
                                  -    if (!ret)  $break();
                                  -    return ret;
                                  -  }
                                  -}
                                  -
                                  -/**
                                  - * @class Iterates over a child iterator and a set of removed events, merging
                                  - *        the remove events at the proper location in the iteration.
                                  - */
                                  -this.RemovedIterator = function(content, removed, includeFilter) {
                                  -  removed = removed || [];
                                  -
                                  -  var nodeIndex = 1, removedIndex = 0,
                                  -      lastId;
                                  -
                                  -  /**
                                  -   * Retrieves the next element in the iteration.
                                  -   */
                                  -  this.next = function() {
                                  -    // Check for removed at the current position
                                  -    while (true) {
                                  -      while (removedIndex < removed.length) {
                                  -        var curChange = removed[removedIndex];
                                  -        lastId = lastId || FireDiff.Path.getIdentifier(curChange.xpath);
                                  -        if (lastId.index <= nodeIndex || nodeIndex < 0) {
                                  -          removedIndex++;   lastId = undefined;
                                  -          if (!includeFilter || includeFilter(curChange)) {
                                  -            return curChange;
                                  -          }
                                  -        } else {
                                  -          break;
                                  -        }
                                  -      }
                                  -
                                  -      // Read the content list
                                  -      nodeIndex++;
                                  -      if (content) {
                                  -        try {
                                  -          var ret = content.next();
                                  -          if (ret && (!includeFilter || includeFilter(ret))) {
                                  -            if (ret.nodeType == Node.TEXT_NODE && ret[Events.AnnotateAttrs.CHANGES]) {
                                  -              return ret[Events.AnnotateAttrs.CHANGES];
                                  -            } else {
                                  -              return ret;
                                  -            }
                                  -          }
                                  -        } catch (err) {
                                  -          // Assume this is StopIteration
                                  -          content = undefined;
                                  -        }
                                  -      } else if (removedIndex >= removed.length) {
                                  -        // Content and removed exhausted
                                  -        $break();
                                  -      }
                                  -    }
                                  -  };
                                  -};
                                  -
                                  -/**
                                  - * Retrieves all attributes for a given change or element. This includes all
                                  - * changes and existing attributes.
                                  - */
                                  -this.getAttributes = function(change) {
                                  -  var attrs = [], attrSeen = {};
                                  -  var idAttr, classAttr, changeAttr;
                                  -  var el = change.clone || change;
                                  -
                                  -  var changes = el[Events.AnnotateAttrs.ATTR_CHANGES] || {};
                                  -  if (change.clone && change.attrName) {
                                  -    changes = {};
                                  -    changes[change.attrName] = change;
                                  -  }
                                  -
                                  -  if (el.attributes) {
                                  -    for (var i = 0; i < el.attributes.length; ++i) {
                                  -      var attr = el.attributes[i];
                                  -      if (attr.localName.indexOf("firebug-") != -1)
                                  -         continue;
                                  -
                                  -      // We need to include the change object as domplate does not have an easy way
                                  -      // to pass multiple arguments to a processing method
                                  -      var curChange = changes[attr.localName];
                                  -      if (curChange) {
                                  -          changeAttr = {
                                  -              localName: attr.localName,
                                  -              nodeValue: attr.nodeValue,
                                  -              attrNode: attr,
                                  -              change: curChange
                                  -          };
                                  -          attr = changeAttr;
                                  -      }
                                  -
                                  -      attrSeen[attr.localName] = true;
                                  -      if (attr.localName == "id") {
                                  -        idAttr = attr;
                                  -      }
                                  -      else if (attr.localName == "class") {
                                  -       classAttr = attr;
                                  -      }
                                  -      else {
                                  -        attrs.push(attr);
                                  -      }
                                  -    }
                                  -  }
                                  -  if (classAttr) {
                                  -    attrs.splice(0, 0, classAttr);
                                  -  }
                                  -  if (idAttr) {
                                  -    attrs.splice(0, 0, idAttr);
                                  -  }
                                  -
                                  -  // Handle any removed attributes
                                  -  for (var i in changes) {
                                  -    if (changes.hasOwnProperty(i) && !attrSeen.hasOwnProperty(i)) {
                                  -      attrs.push({
                                  -          localName: i,
                                  -          nodeValue: changes[i].previousValue,
                                  -          change: changes[i]
                                  -      });
                                  -    }
                                  -  }
                                  -
                                  -  return attrs;
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/content/firediff/versionCompat.js b/branches/flexBox/content/firediff/content/firediff/versionCompat.js
                                  deleted file mode 100644
                                  index e27a90b6..00000000
                                  --- a/branches/flexBox/content/firediff/content/firediff/versionCompat.js
                                  +++ /dev/null
                                  @@ -1,310 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -var FireDiff  = FireDiff || {};
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -const HTMLLib = Firebug.HTMLLib || {};
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function NodeSearch(text, root, panelNode, ioBox, walker)
                                  -{
                                  -    root = root.documentElement || root;
                                  -    walker = walker || new DOMWalker(root);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    /**
                                  -     * Finds the first match within the document.
                                  -     *
                                  -     * @param {boolean} revert true to search backward, false to search forward
                                  -     * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -     * @return true if no more matches were found, but matches were found previously.
                                  -     */
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Resets the search to the beginning of the document.
                                  -     */
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    /**
                                  -     * Finds the next match in the document.
                                  -     *
                                  -     * The return value is an object with the fields
                                  -     * - node: Node that contains the match
                                  -     * - isValue: true if the match is a match due to the value of the node, false if it is due to the name
                                  -     * - match: Regular expression result from the match
                                  -     *
                                  -     * @param {boolean} revert true to search backward, false to search forward
                                  -     * @param {boolean} caseSensitive true to match exact case, false to ignore case
                                  -     * @return Match object if found
                                  -     */
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper util used to scan the current search result for more results
                                  -     * in the same object.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == !!reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Checks a given node for a search match.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Opens the given node in the associated IO Box.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return nodeBox.getElementsByClassName("nodeTag")[0];
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Selects the search results.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearch.selectMatched match " + match, nodeBox); }
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    /**
                                  -     * Select text node search results.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -        if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearch.selectNodeText text: " + text + " index: " + index, nodeBox); }
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            if (FBTrace.DBG_SEARCH) { FBTrace.sysout("NodeSearc.selectNodeText lastRange", this.lastRange); }
                                  -
                                  -            row = this.lastRow = this.textSearch.findNext(false, undefined, reverse, caseSensitive);
                                  -
                                  -        }
                                  -
                                  -        if (!row)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == Node.ELEMENT_NODE ? node : node.parentNode; }
                                  -            this.textSearch = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = this.textSearch.find(text, reverse, caseSensitive);
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            range = this.lastRange = this.textSearch.range;
                                  -
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function isWhitespaceText(node) {
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -}
                                  -
                                  -//From Firebug.HTMLLib, Firebug version 1.5
                                  -function isSourceElement(element) {
                                  -  var tag = element.localName.toLowerCase();
                                  -  return tag == "script" || tag == "link" || tag == "style"
                                  -      || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -/**
                                  - * Defines lib routes that are supported in one version of Firebug but not
                                  - * another. Methods defined in here should be pruned as the minimum Firebug
                                  - * version is updated.
                                  - */
                                  -FireDiff.VersionCompat = {
                                  -    /**
                                  -     * @see Firebug.HTMLLib.NodeSearch
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    NodeSearch: HTMLLib.NodeSearch || NodeSearch,
                                  -
                                  -    /**
                                  -     * @see Firebug.HTMLLib.isWhitespaceText
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    isWhitespaceText: HTMLLib.isWhitespaceText || isWhitespaceText,
                                  -    
                                  -    /**
                                  -     * @see Firebug.HTMLLib.isSourceElement
                                  -     * @version Firebug 1.5
                                  -     */
                                  -    isSourceElement: HTMLLib.isSourceElement || isSourceElement
                                  -};
                                  -
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/license.txt b/branches/flexBox/content/firediff/license.txt
                                  deleted file mode 100644
                                  index d5d3cd65..00000000
                                  --- a/branches/flexBox/content/firediff/license.txt
                                  +++ /dev/null
                                  @@ -1,31 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2009, Kevin Decker <kpdecker@gmail.com>
                                  -
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Kevin Decker nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firediff/skin/classic/firediff.css b/branches/flexBox/content/firediff/skin/classic/firediff.css
                                  deleted file mode 100644
                                  index af374097..00000000
                                  --- a/branches/flexBox/content/firediff/skin/classic/firediff.css
                                  +++ /dev/null
                                  @@ -1,154 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.logEntry {
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -.diffMonitorElement {
                                  -    display: none;
                                  -    
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -/* Removed Changes should not be displayed at all if the change source is filtered */
                                  -.removedClass {
                                  -  display: none;
                                  -}
                                  -
                                  -.showFirebugChanges div.firebugDiff,
                                  -.showFirebugChanges .firebugDiff div,
                                  -.showAppChanges div.appDiff,
                                  -.showAppChanges .appDiff div {
                                  -  display: block;
                                  -}
                                  -.showFirebugChanges span.firebugDiff,
                                  -.showFirebugChanges .firebugDiff span,
                                  -.showFirebugChanges .firebugDiff a,
                                  -.showAppChanges span.appDiff,
                                  -.showAppChanges .appDiff span,
                                  -.showAppChanges .appDiff a {
                                  -  display: inline;
                                  -}
                                  -
                                  -.firebugDiff div.nodeChildBox,
                                  -.firebugDiff div.nodeCloseLabel,
                                  -.appDiff div.nodeChildBox,
                                  -.appDiff div.nodeCloseLabel {
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -.showFirebugChanges .firebugDiff .addedClass,
                                  -.showFirebugChanges .firebugDiff.addedClass,
                                  -.showAppChanges .appDiff .addedClass,
                                  -.showAppChanges .appDiff.addedClass {
                                  -  background: green;
                                  -  color: white;
                                  -}
                                  -.showFirebugChanges .firebugDiff .removedClass,
                                  -.showFirebugChanges .firebugDiff.removedClass,
                                  -.showAppChanges .appDiff .removedClass,
                                  -.showAppChanges .appDiff.removedClass {
                                  -  background: red;
                                  -  color: black;
                                  -}
                                  -
                                  -/* Ugh: There has to be a better way... */
                                  -.showFirebugChanges .jumpHighlight.firebugDiff .addedClass,
                                  -.showFirebugChanges .jumpHighlight.firebugDiff.addedClass,
                                  -.showFirebugChanges .jumpHighlight .firebugDiff .addedClass,
                                  -.showFirebugChanges .jumpHighlight .firebugDiff.addedClass,
                                  -.showAppChanges .jumpHighlight.appDiff .addedClass,
                                  -.showAppChanges .jumpHighlight.appDiff.addedClass,
                                  -.showAppChanges .jumpHighlight .appDiff .addedClass,
                                  -.showAppChanges .jumpHighlight .appDiff.addedClass {
                                  -  background: #66FF66;
                                  -}
                                  -.showFirebugChanges .jumpHighlight.firebugDiff .removedClass,
                                  -.showFirebugChanges .jumpHighlight.firebugDiff.removedClass,
                                  -.showFirebugChanges .jumpHighlight .firebugDiff .removedClass,
                                  -.showFirebugChanges .jumpHighlight .firebugDiff.removedClass,
                                  -.showAppChanges .jumpHighlight.appDiff .removedClass,
                                  -.showAppChanges .jumpHighlight.appDiff.removedClass,
                                  -.showAppChanges .jumpHighlight .appDiff .removedClass,
                                  -.showAppChanges .jumpHighlight .appDiff.removedClass {
                                  -  background: salmon;
                                  -}
                                  -
                                  -.addedClass *,
                                  -.removedClass * {
                                  -  color: inherit;
                                  -}
                                  -
                                  -.nodeContainerLabel {
                                  -  cursor: pointer;
                                  -}
                                  -
                                  -.diffSep {
                                  -    margin: 0 .5em;
                                  -}
                                  -.diffDate {
                                  -    position: absolute;
                                  -    right: 0px;
                                  -}
                                  -.diffSummary {
                                  -    font-weight: bold;
                                  -}
                                  -.diffSource, .diffDate, .diffXPath {
                                  -    color: gray;
                                  -}
                                  -.diffXPath {
                                  -    padding-bottom: 1em;
                                  -}
                                  -
                                  -.textDiff {
                                  -  white-space: pre;
                                  -}
                                  -
                                  -.nodeInternalSubset {
                                  -  white-space: pre;
                                  -}
                                  -
                                  -/* Customized Rules for CSS Display. All others reuse the standard CSS styles */
                                  -.cssRuleDiff, .cssMediaRuleDiff {
                                  -  position: relative;
                                  -  margin: 0;
                                  -  padding: 1em 0 0 6px;
                                  -  font-family: Monaco, monospace;
                                  -  color: #000000;
                                  -}
                                  -.cssRuleDiff:first-child, .cssMediaRuleDiff:first-child {
                                  -    padding-top: 6px;
                                  - }
                                  -.cssMediaRuleDiff .cssRuleDiff:first-child {
                                  -    padding-top: 0px;
                                  - }
                                  -.cssPropDiff, .cssMediaRuleContent {
                                  -    padding-left: 2em;
                                  -}
                                  -
                                  -.nodeBox.textNodeBox.open > .nodeChildBox {
                                  -  display: inline;
                                  -  margin-left: 0px;
                                  -  padding-left: 0px;
                                  -}
                                  -
                                  -
                                  -/* Firebug Lite extension hacks */
                                  -.diffMonitorElement {
                                  -    display: block;
                                  -}
                                  -
                                  -.addedClass {
                                  -    color: #fff;
                                  -    background: #080;
                                  -}
                                  -.removedClass {
                                  -    background: red;
                                  -    color: #000;
                                  -    display: inline;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/.gitignore b/branches/flexBox/content/firerainbow/.gitignore
                                  deleted file mode 100644
                                  index 8955a1ca..00000000
                                  --- a/branches/flexBox/content/firerainbow/.gitignore
                                  +++ /dev/null
                                  @@ -1,8 +0,0 @@
                                  -.gitignore
                                  -_layouts
                                  -shared
                                  -build
                                  -tmp
                                  -.DS_Store
                                  -Thumbs.db
                                  -_site
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome.manifest b/branches/flexBox/content/firerainbow/chrome.manifest
                                  deleted file mode 100644
                                  index bf07a125..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome.manifest
                                  +++ /dev/null
                                  @@ -1,5 +0,0 @@
                                  -content firerainbow chrome/content/
                                  -skin firerainbow classic/1.0 chrome/skin/
                                  -locale firerainbow en-US chrome/locale/
                                  -
                                  -overlay chrome://firebug/content/browserOverlay.xul chrome://firerainbow/content/firerainbow.xul
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror.js
                                  deleted file mode 100644
                                  index 6889ee73..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror.js
                                  +++ /dev/null
                                  @@ -1,1451 +0,0 @@
                                  -// !!! DO NOT EDIT THIS FILE (GENERATED) !!!
                                  -// this file was generated from codemirror subdirectory by `rake sandbox` task
                                  -
                                  -
                                  -//  Copyright (c) 2007-2010 Marijn Haverbeke
                                  -// 
                                  -//  This software is provided 'as-is', without any express or implied
                                  -//  warranty. In no event will the authors be held liable for any
                                  -//  damages arising from the use of this software.
                                  -// 
                                  -//  Permission is granted to anyone to use this software for any
                                  -//  purpose, including commercial applications, and to alter it and
                                  -//  redistribute it freely, subject to the following restrictions:
                                  -// 
                                  -//  1. The origin of this software must not be misrepresented; you must
                                  -//     not claim that you wrote the original software. If you use this
                                  -//     software in a product, an acknowledgment in the product
                                  -//     documentation would be appreciated but is not required.
                                  -// 
                                  -//  2. Altered source versions must be plainly marked as such, and must
                                  -//     not be misrepresented as being the original software.
                                  -// 
                                  -//  3. This notice may not be removed or altered from any source
                                  -//     distribution.
                                  -// 
                                  -//  Marijn Haverbeke
                                  -//  marijnh@gmail.com
                                  -
                                  -
                                  -var codemirror = (function() {
                                  -var Editor = {};var indentUnit = 2;var window=this;
                                  -/* A few useful utility functions. */
                                  -
                                  -// Capture a method on an object.
                                  -function method(obj, name) {
                                  -  return function() {obj[name].apply(obj, arguments);};
                                  -}
                                  -
                                  -// The value used to signal the end of a sequence in iterators.
                                  -this.StopIteration = {toString: function() {return "StopIteration"}};
                                  -
                                  -// Apply a function to each element in a sequence.
                                  -this.forEach = function(iter, f) {
                                  -  if (iter.next) {
                                  -    try {while (true) f(iter.next());}
                                  -    catch (e) {if (e != StopIteration) throw e;}
                                  -  }
                                  -  else {
                                  -    for (var i = 0; i < iter.length; i++)
                                  -      f(iter[i]);
                                  -  }
                                  -}
                                  -
                                  -// Map a function over a sequence, producing an array of results.
                                  -function map(iter, f) {
                                  -  var accum = [];
                                  -  forEach(iter, function(val) {accum.push(f(val));});
                                  -  return accum;
                                  -}
                                  -
                                  -// Create a predicate function that tests a string againsts a given
                                  -// regular expression. No longer used but might be used by 3rd party
                                  -// parsers.
                                  -function matcher(regexp){
                                  -  return function(value){return regexp.test(value);};
                                  -}
                                  -
                                  -// Test whether a DOM node has a certain CSS class. Much faster than
                                  -// the MochiKit equivalent, for some reason.
                                  -function hasClass(element, className){
                                  -  var classes = element.className;
                                  -  return classes && new RegExp("(^| )" + className + "($| )").test(classes);
                                  -}
                                  -
                                  -// Insert a DOM node after another node.
                                  -function insertAfter(newNode, oldNode) {
                                  -  var parent = oldNode.parentNode;
                                  -  parent.insertBefore(newNode, oldNode.nextSibling);
                                  -  return newNode;
                                  -}
                                  -
                                  -function removeElement(node) {
                                  -  if (node.parentNode)
                                  -    node.parentNode.removeChild(node);
                                  -}
                                  -
                                  -function clearElement(node) {
                                  -  while (node.firstChild)
                                  -    node.removeChild(node.firstChild);
                                  -}
                                  -
                                  -// Check whether a node is contained in another one.
                                  -function isAncestor(node, child) {
                                  -  while (child = child.parentNode) {
                                  -    if (node == child)
                                  -      return true;
                                  -  }
                                  -  return false;
                                  -}
                                  -
                                  -// The non-breaking space character.
                                  -var nbsp = "\u00a0";
                                  -var matching = {"{": "}", "[": "]", "(": ")",
                                  -                "}": "{", "]": "[", ")": "("};
                                  -
                                  -// Standardize a few unportable event properties.
                                  -function normalizeEvent(event) {
                                  -  if (!event.stopPropagation) {
                                  -    event.stopPropagation = function() {this.cancelBubble = true;};
                                  -    event.preventDefault = function() {this.returnValue = false;};
                                  -  }
                                  -  if (!event.stop) {
                                  -    event.stop = function() {
                                  -      this.stopPropagation();
                                  -      this.preventDefault();
                                  -    };
                                  -  }
                                  -
                                  -  if (event.type == "keypress") {
                                  -    event.code = (event.charCode == null) ? event.keyCode : event.charCode;
                                  -    event.character = String.fromCharCode(event.code);
                                  -  }
                                  -  return event;
                                  -}
                                  -
                                  -// Portably register event handlers.
                                  -function addEventHandler(node, type, handler, removeFunc) {
                                  -  function wrapHandler(event) {
                                  -    handler(normalizeEvent(event || window.event));
                                  -  }
                                  -  if (typeof node.addEventListener == "function") {
                                  -    node.addEventListener(type, wrapHandler, false);
                                  -    if (removeFunc) return function() {node.removeEventListener(type, wrapHandler, false);};
                                  -  }
                                  -  else {
                                  -    node.attachEvent("on" + type, wrapHandler);
                                  -    if (removeFunc) return function() {node.detachEvent("on" + type, wrapHandler);};
                                  -  }
                                  -}
                                  -
                                  -function nodeText(node) {
                                  -  return node.textContent || node.innerText || node.nodeValue || "";
                                  -}
                                  -
                                  -function nodeTop(node) {
                                  -  var top = 0;
                                  -  while (node.offsetParent) {
                                  -    top += node.offsetTop;
                                  -    node = node.offsetParent;
                                  -  }
                                  -  return top;
                                  -}
                                  -
                                  -function isBR(node) {
                                  -  var nn = node.nodeName;
                                  -  return nn == "BR" || nn == "br";
                                  -}
                                  -function isSpan(node) {
                                  -  var nn = node.nodeName;
                                  -  return nn == "SPAN" || nn == "span";
                                  -}
                                  -
                                  -// A framework for simple tokenizers. Takes care of newlines and
                                  -// white-space, and of getting the text from the source stream into
                                  -// the token object. A state is a function of two arguments -- a
                                  -// string stream and a setState function. The second can be used to
                                  -// change the tokenizer's state, and can be ignored for stateless
                                  -// tokenizers. This function should advance the stream over a token
                                  -// and return a string or object containing information about the next
                                  -// token, or null to pass and have the (new) state be called to finish
                                  -// the token. When a string is given, it is wrapped in a {style, type}
                                  -// object. In the resulting object, the characters consumed are stored
                                  -// under the content property. Any whitespace following them is also
                                  -// automatically consumed, and added to the value property. (Thus,
                                  -// content is the actual meaningful part of the token, while value
                                  -// contains all the text it spans.)
                                  -
                                  -function tokenizer(source, state) {
                                  -  // Newlines are always a separate token.
                                  -  function isWhiteSpace(ch) {
                                  -    // The messy regexp is because IE's regexp matcher is of the
                                  -    // opinion that non-breaking spaces are no whitespace.
                                  -    return ch != "\n" && /^[\s\u00a0]*$/.test(ch);
                                  -  }
                                  -
                                  -  var tokenizer = {
                                  -    state: state,
                                  -
                                  -    take: function(type) {
                                  -      if (typeof(type) == "string")
                                  -        type = {style: type, type: type};
                                  -
                                  -      type.content = (type.content || "") + source.get();
                                  -      if (!/\n$/.test(type.content))
                                  -        source.nextWhile(isWhiteSpace);
                                  -      type.value = type.content + source.get();
                                  -      return type;
                                  -    },
                                  -
                                  -    next: function () {
                                  -      if (!source.more()) throw StopIteration;
                                  -
                                  -      var type;
                                  -      if (source.equals("\n")) {
                                  -        source.next();
                                  -        return this.take("whitespace");
                                  -      }
                                  -      
                                  -      if (source.applies(isWhiteSpace))
                                  -        type = "whitespace";
                                  -      else
                                  -        while (!type)
                                  -          type = this.state(source, function(s) {tokenizer.state = s;});
                                  -
                                  -      return this.take(type);
                                  -    }
                                  -  };
                                  -  return tokenizer;
                                  -}
                                  -
                                  -/* Tokenizer for JavaScript code */
                                  -
                                  -var tokenizeJavaScript = (function() {
                                  -  // Advance the stream until the given character (not preceded by a
                                  -  // backslash) is encountered, or the end of the line is reached.
                                  -  function nextUntilUnescaped(source, end) {
                                  -    var escaped = false;
                                  -    while (!source.endOfLine()) {
                                  -      var next = source.next();
                                  -      if (next == end && !escaped)
                                  -        return false;
                                  -      escaped = !escaped && next == "\\";
                                  -    }
                                  -    return escaped;
                                  -  }
                                  -
                                  -  // A map of JavaScript's keywords. The a/b/c keyword distinction is
                                  -  // very rough, but it gives the parser enough information to parse
                                  -  // correct code correctly (we don't care that much how we parse
                                  -  // incorrect code). The style information included in these objects
                                  -  // is used by the highlighter to pick the correct CSS style for a
                                  -  // token.
                                  -  var keywords = function(){
                                  -    function result(type, style){
                                  -      return {type: type, style: "js-" + style};
                                  -    }
                                  -    // keywords that take a parenthised expression, and then a
                                  -    // statement (if)
                                  -    var keywordA = result("keyword a", "keyword");
                                  -    // keywords that take just a statement (else)
                                  -    var keywordB = result("keyword b", "keyword");
                                  -    // keywords that optionally take an expression, and form a
                                  -    // statement (return)
                                  -    var keywordC = result("keyword c", "keyword");
                                  -    var operator = result("operator", "keyword");
                                  -    var atom = result("atom", "atom");
                                  -    return {
                                  -      "if": keywordA, "while": keywordA, "with": keywordA,
                                  -      "else": keywordB, "do": keywordB, "try": keywordB, "finally": keywordB,
                                  -      "return": keywordC, "break": keywordC, "continue": keywordC, "new": keywordC, "delete": keywordC, "throw": keywordC,
                                  -      "in": operator, "typeof": operator, "instanceof": operator,
                                  -      "var": result("var", "keyword"), "function": result("function", "keyword"), "catch": result("catch", "keyword"),
                                  -      "for": result("for", "keyword"), "switch": result("switch", "keyword"),
                                  -      "case": result("case", "keyword"), "default": result("default", "keyword"),
                                  -      "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom
                                  -    };
                                  -  }();
                                  -
                                  -  // Some helper regexps
                                  -  var isOperatorChar = /[+\-*&%=<>!?|]/;
                                  -  var isHexDigit = /[0-9A-Fa-f]/;
                                  -  var isWordChar = /[\w\$_]/;
                                  -
                                  -  // Wrapper around jsToken that helps maintain parser state (whether
                                  -  // we are inside of a multi-line comment and whether the next token
                                  -  // could be a regular expression).
                                  -  function jsTokenState(inside, regexp) {
                                  -    return function(source, setState) {
                                  -      var newInside = inside;
                                  -      var type = jsToken(inside, regexp, source, function(c) {newInside = c;});
                                  -      var newRegexp = type.type == "operator" || type.type == "keyword c" || type.type.match(/^[\[{}\(,;:]$/);
                                  -      if (newRegexp != regexp || newInside != inside)
                                  -        setState(jsTokenState(newInside, newRegexp));
                                  -      return type;
                                  -    };
                                  -  }
                                  -
                                  -  // The token reader, intended to be used by the tokenizer from
                                  -  // tokenize.js (through jsTokenState). Advances the source stream
                                  -  // over a token, and returns an object containing the type and style
                                  -  // of that token.
                                  -  function jsToken(inside, regexp, source, setInside) {
                                  -    function readHexNumber(){
                                  -      source.next(); // skip the 'x'
                                  -      source.nextWhileMatches(isHexDigit);
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -
                                  -    function readNumber() {
                                  -      source.nextWhileMatches(/[0-9]/);
                                  -      if (source.equals(".")){
                                  -        source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      if (source.equals("e") || source.equals("E")){
                                  -        source.next();
                                  -        if (source.equals("-"))
                                  -          source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -    // Read a word, look it up in keywords. If not found, it is a
                                  -    // variable, otherwise it is a keyword of the type found.
                                  -    function readWord() {
                                  -      source.nextWhileMatches(isWordChar);
                                  -      var word = source.get();
                                  -      var known = keywords.hasOwnProperty(word) && keywords.propertyIsEnumerable(word) && keywords[word];
                                  -      return known ? {type: known.type, style: known.style, content: word} :
                                  -      {type: "variable", style: "js-variable", content: word};
                                  -    }
                                  -    function readRegexp() {
                                  -      nextUntilUnescaped(source, "/");
                                  -      source.nextWhileMatches(/[gi]/);
                                  -      return {type: "regexp", style: "js-string"};
                                  -    }
                                  -    // Mutli-line comments are tricky. We want to return the newlines
                                  -    // embedded in them as regular newline tokens, and then continue
                                  -    // returning a comment token for every line of the comment. So
                                  -    // some state has to be saved (inside) to indicate whether we are
                                  -    // inside a /* */ sequence.
                                  -    function readMultilineComment(start){
                                  -      var newInside = "/*";
                                  -      var maybeEnd = (start == "*");
                                  -      while (true) {
                                  -        if (source.endOfLine())
                                  -          break;
                                  -        var next = source.next();
                                  -        if (next == "/" && maybeEnd){
                                  -          newInside = null;
                                  -          break;
                                  -        }
                                  -        maybeEnd = (next == "*");
                                  -      }
                                  -      setInside(newInside);
                                  -      return {type: "comment", style: "js-comment"};
                                  -    }
                                  -    function readOperator() {
                                  -      source.nextWhileMatches(isOperatorChar);
                                  -      return {type: "operator", style: "js-operator"};
                                  -    }
                                  -    function readString(quote) {
                                  -      var endBackSlash = nextUntilUnescaped(source, quote);
                                  -      setInside(endBackSlash ? quote : null);
                                  -      return {type: "string", style: "js-string"};
                                  -    }
                                  -
                                  -    // Fetch the next token. Dispatches on first character in the
                                  -    // stream, or first two characters when the first is a slash.
                                  -    if (inside == "\"" || inside == "'")
                                  -      return readString(inside);
                                  -    var ch = source.next();
                                  -    if (inside == "/*")
                                  -      return readMultilineComment(ch);
                                  -    else if (ch == "\"" || ch == "'")
                                  -      return readString(ch);
                                  -    // with punctuation, the type of the token is the symbol itself
                                  -    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
                                  -      return {type: ch, style: "js-punctuation"};
                                  -    else if (ch == "0" && (source.equals("x") || source.equals("X")))
                                  -      return readHexNumber();
                                  -    else if (/[0-9]/.test(ch))
                                  -      return readNumber();
                                  -    else if (ch == "/"){
                                  -      if (source.equals("*"))
                                  -      { source.next(); return readMultilineComment(ch); }
                                  -      else if (source.equals("/"))
                                  -      { nextUntilUnescaped(source, null); return {type: "comment", style: "js-comment"};}
                                  -      else if (regexp)
                                  -        return readRegexp();
                                  -      else
                                  -        return readOperator();
                                  -    }
                                  -    else if (isOperatorChar.test(ch))
                                  -      return readOperator();
                                  -    else
                                  -      return readWord();
                                  -  }
                                  -
                                  -  // The external interface to the tokenizer.
                                  -  return function(source, startState) {
                                  -    return tokenizer(source, startState || jsTokenState(false, true));
                                  -  };
                                  -})();
                                  -
                                  -/* Parse function for JavaScript. Makes use of the tokenizer from
                                  - * tokenizejavascript.js. Note that your parsers do not have to be
                                  - * this complicated -- if you don't want to recognize local variables,
                                  - * in many languages it is enough to just look for braces, semicolons,
                                  - * parentheses, etc, and know when you are inside a string or comment.
                                  - *
                                  - * See manual.html for more info about the parser interface.
                                  - */
                                  -
                                  -this.JSParser = Editor.Parser = (function() {
                                  -  // Token types that can be considered to be atoms.
                                  -  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true};
                                  -  // Setting that can be used to have JSON data indent properly.
                                  -  var json = false;
                                  -  // Constructor for the lexical context objects.
                                  -  function JSLexical(indented, column, type, align, prev, info) {
                                  -    // indentation at start of this line
                                  -    this.indented = indented;
                                  -    // column at which this scope was opened
                                  -    this.column = column;
                                  -    // type of scope ('vardef', 'stat' (statement), 'form' (special form), '[', '{', or '(')
                                  -    this.type = type;
                                  -    // '[', '{', or '(' blocks that have any text after their opening
                                  -    // character are said to be 'aligned' -- any lines below are
                                  -    // indented all the way to the opening character.
                                  -    if (align != null)
                                  -      this.align = align;
                                  -    // Parent scope, if any.
                                  -    this.prev = prev;
                                  -    this.info = info;
                                  -  }
                                  -
                                  -  // My favourite JavaScript indentation rules.
                                  -  function indentJS(lexical) {
                                  -    return function(firstChars) {
                                  -      var firstChar = firstChars && firstChars.charAt(0), type = lexical.type;
                                  -      var closing = firstChar == type;
                                  -      if (type == "vardef")
                                  -        return lexical.indented + 4;
                                  -      else if (type == "form" && firstChar == "{")
                                  -        return lexical.indented;
                                  -      else if (type == "stat" || type == "form")
                                  -        return lexical.indented + indentUnit;
                                  -      else if (lexical.info == "switch" && !closing)
                                  -        return lexical.indented + (/^(?:case|default)\b/.test(firstChars) ? indentUnit : 2 * indentUnit);
                                  -      else if (lexical.align)
                                  -        return lexical.column - (closing ? 1 : 0);
                                  -      else
                                  -        return lexical.indented + (closing ? 0 : indentUnit);
                                  -    };
                                  -  }
                                  -
                                  -  // The parser-iterator-producing function itself.
                                  -  function parseJS(input, basecolumn) {
                                  -    // Wrap the input in a token stream
                                  -    var tokens = tokenizeJavaScript(input);
                                  -    // The parser state. cc is a stack of actions that have to be
                                  -    // performed to finish the current statement. For example we might
                                  -    // know that we still need to find a closing parenthesis and a
                                  -    // semicolon. Actions at the end of the stack go first. It is
                                  -    // initialized with an infinitely looping action that consumes
                                  -    // whole statements.
                                  -    var cc = [json ? expressions : statements];
                                  -    // Context contains information about the current local scope, the
                                  -    // variables defined in that, and the scopes above it.
                                  -    var context = null;
                                  -    // The lexical scope, used mostly for indentation.
                                  -    var lexical = new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false);
                                  -    // Current column, and the indentation at the start of the current
                                  -    // line. Used to create lexical scope objects.
                                  -    var column = 0;
                                  -    var indented = 0;
                                  -    // Variables which are used by the mark, cont, and pass functions
                                  -    // below to communicate with the driver loop in the 'next'
                                  -    // function.
                                  -    var consume, marked;
                                  -  
                                  -    // The iterator object.
                                  -    var parser = {next: next, copy: copy};
                                  -
                                  -    function next(){
                                  -      // Start by performing any 'lexical' actions (adjusting the
                                  -      // lexical variable), or the operations below will be working
                                  -      // with the wrong lexical state.
                                  -      while(cc[cc.length - 1].lex)
                                  -        cc.pop()();
                                  -
                                  -      // Fetch a token.
                                  -      var token = tokens.next();
                                  -
                                  -      // Adjust column and indented.
                                  -      if (token.type == "whitespace" && column == 0)
                                  -        indented = token.value.length;
                                  -      column += token.value.length;
                                  -      if (token.content == "\n"){
                                  -        indented = column = 0;
                                  -        // If the lexical scope's align property is still undefined at
                                  -        // the end of the line, it is an un-aligned scope.
                                  -        if (!("align" in lexical))
                                  -          lexical.align = false;
                                  -        // Newline tokens get an indentation function associated with
                                  -        // them.
                                  -        token.indentation = indentJS(lexical);
                                  -      }
                                  -      // No more processing for meaningless tokens.
                                  -      if (token.type == "whitespace" || token.type == "comment")
                                  -        return token;
                                  -      // When a meaningful token is found and the lexical scope's
                                  -      // align is undefined, it is an aligned scope.
                                  -      if (!("align" in lexical))
                                  -        lexical.align = true;
                                  -
                                  -      // Execute actions until one 'consumes' the token and we can
                                  -      // return it.
                                  -      while(true) {
                                  -        consume = marked = false;
                                  -        // Take and execute the topmost action.
                                  -        cc.pop()(token.type, token.content);
                                  -        if (consume){
                                  -          // Marked is used to change the style of the current token.
                                  -          if (marked)
                                  -            token.style = marked;
                                  -          // Here we differentiate between local and global variables.
                                  -          else if (token.type == "variable" && inScope(token.content))
                                  -            token.style = "js-localvariable";
                                  -          return token;
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    // This makes a copy of the parser state. It stores all the
                                  -    // stateful variables in a closure, and returns a function that
                                  -    // will restore them when called with a new input stream. Note
                                  -    // that the cc array has to be copied, because it is contantly
                                  -    // being modified. Lexical objects are not mutated, and context
                                  -    // objects are not mutated in a harmful way, so they can be shared
                                  -    // between runs of the parser.
                                  -    function copy(){
                                  -      var _context = context, _lexical = lexical, _cc = cc.concat([]), _tokenState = tokens.state;
                                  -  
                                  -      return function copyParser(input){
                                  -        context = _context;
                                  -        lexical = _lexical;
                                  -        cc = _cc.concat([]); // copies the array
                                  -        column = indented = 0;
                                  -        tokens = tokenizeJavaScript(input, _tokenState);
                                  -        return parser;
                                  -      };
                                  -    }
                                  -
                                  -    // Helper function for pushing a number of actions onto the cc
                                  -    // stack in reverse order.
                                  -    function push(fs){
                                  -      for (var i = fs.length - 1; i >= 0; i--)
                                  -        cc.push(fs[i]);
                                  -    }
                                  -    // cont and pass are used by the action functions to add other
                                  -    // actions to the stack. cont will cause the current token to be
                                  -    // consumed, pass will leave it for the next action.
                                  -    function cont(){
                                  -      push(arguments);
                                  -      consume = true;
                                  -    }
                                  -    function pass(){
                                  -      push(arguments);
                                  -      consume = false;
                                  -    }
                                  -    // Used to change the style of the current token.
                                  -    function mark(style){
                                  -      marked = style;
                                  -    }
                                  -
                                  -    // Push a new scope. Will automatically link the current scope.
                                  -    function pushcontext(){
                                  -      context = {prev: context, vars: {"this": true, "arguments": true}};
                                  -    }
                                  -    // Pop off the current scope.
                                  -    function popcontext(){
                                  -      context = context.prev;
                                  -    }
                                  -    // Register a variable in the current scope.
                                  -    function register(varname){
                                  -      if (context){
                                  -        mark("js-variabledef");
                                  -        context.vars[varname] = true;
                                  -      }
                                  -    }
                                  -    // Check whether a variable is defined in the current scope.
                                  -    function inScope(varname){
                                  -      var cursor = context;
                                  -      while (cursor) {
                                  -        if (cursor.vars[varname])
                                  -          return true;
                                  -        cursor = cursor.prev;
                                  -      }
                                  -      return false;
                                  -    }
                                  -  
                                  -    // Push a new lexical context of the given type.
                                  -    function pushlex(type, info) {
                                  -      var result = function(){
                                  -        lexical = new JSLexical(indented, column, type, null, lexical, info)
                                  -      };
                                  -      result.lex = true;
                                  -      return result;
                                  -    }
                                  -    // Pop off the current lexical context.
                                  -    function poplex(){
                                  -      if (lexical.type == ")")
                                  -        indented = lexical.indented;
                                  -      lexical = lexical.prev;
                                  -    }
                                  -    poplex.lex = true;
                                  -    // The 'lex' flag on these actions is used by the 'next' function
                                  -    // to know they can (and have to) be ran before moving on to the
                                  -    // next token.
                                  -  
                                  -    // Creates an action that discards tokens until it finds one of
                                  -    // the given type.
                                  -    function expect(wanted){
                                  -      return function expecting(type){
                                  -        if (type == wanted) cont();
                                  -        else if (wanted == ";") pass();
                                  -        else cont(arguments.callee);
                                  -      };
                                  -    }
                                  -
                                  -    // Looks for a statement, and then calls itself.
                                  -    function statements(type){
                                  -      return pass(statement, statements);
                                  -    }
                                  -    function expressions(type){
                                  -      return pass(expression, expressions);
                                  -    }
                                  -    // Dispatches various types of statements based on the type of the
                                  -    // current token.
                                  -    function statement(type){
                                  -      if (type == "var") cont(pushlex("vardef"), vardef1, expect(";"), poplex);
                                  -      else if (type == "keyword a") cont(pushlex("form"), expression, statement, poplex);
                                  -      else if (type == "keyword b") cont(pushlex("form"), statement, poplex);
                                  -      else if (type == "{") cont(pushlex("}"), block, poplex);
                                  -      else if (type == ";") cont();
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "for") cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex);
                                  -      else if (type == "variable") cont(pushlex("stat"), maybelabel);
                                  -      else if (type == "switch") cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex);
                                  -      else if (type == "case") cont(expression, expect(":"));
                                  -      else if (type == "default") cont(expect(":"));
                                  -      else if (type == "catch") cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext);
                                  -      else pass(pushlex("stat"), expression, expect(";"), poplex);
                                  -    }
                                  -    // Dispatch expression types.
                                  -    function expression(type){
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(maybeoperator);
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "keyword c") cont(expression);
                                  -      else if (type == "(") cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == "[") cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator);
                                  -      else if (type == "{") cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator);
                                  -      else cont();
                                  -    }
                                  -    // Called for places where operators, function calls, or
                                  -    // subscripts are valid. Will skip on to the next action if none
                                  -    // is found.
                                  -    function maybeoperator(type, value){
                                  -      if (type == "operator" && /\+\+|--/.test(value)) cont(maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == ";") pass();
                                  -      else if (type == "(") cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator);
                                  -      else if (type == ".") cont(property, maybeoperator);
                                  -      else if (type == "[") cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator);
                                  -    }
                                  -    // When a statement starts with a variable name, it might be a
                                  -    // label. If no colon follows, it's a regular statement.
                                  -    function maybelabel(type){
                                  -      if (type == ":") cont(poplex, statement);
                                  -      else pass(maybeoperator, expect(";"), poplex);
                                  -    }
                                  -    // Property names need to have their style adjusted -- the
                                  -    // tokenizer thinks they are variables.
                                  -    function property(type){
                                  -      if (type == "variable") {mark("js-property"); cont();}
                                  -    }
                                  -    // This parses a property and its value in an object literal.
                                  -    function objprop(type){
                                  -      if (type == "variable") mark("js-property");
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(expect(":"), expression);
                                  -    }
                                  -    // Parses a comma-separated list of the things that are recognized
                                  -    // by the 'what' argument.
                                  -    function commasep(what, end){
                                  -      function proceed(type) {
                                  -        if (type == ",") cont(what, proceed);
                                  -        else if (type == end) cont();
                                  -        else cont(expect(end));
                                  -      }
                                  -      return function commaSeparated(type) {
                                  -        if (type == end) cont();
                                  -        else pass(what, proceed);
                                  -      };
                                  -    }
                                  -    // Look for statements until a closing brace is found.
                                  -    function block(type){
                                  -      if (type == "}") cont();
                                  -      else pass(statement, block);
                                  -    }
                                  -    // Variable definitions are split into two actions -- 1 looks for
                                  -    // a name or the end of the definition, 2 looks for an '=' sign or
                                  -    // a comma.
                                  -    function vardef1(type, value){
                                  -      if (type == "variable"){register(value); cont(vardef2);}
                                  -      else cont();
                                  -    }
                                  -    function vardef2(type, value){
                                  -      if (value == "=") cont(expression, vardef2);
                                  -      else if (type == ",") cont(vardef1);
                                  -    }
                                  -    // For loops.
                                  -    function forspec1(type){
                                  -      if (type == "var") cont(vardef1, forspec2);
                                  -      else if (type == ";") pass(forspec2);
                                  -      else if (type == "variable") cont(formaybein);
                                  -      else pass(forspec2);
                                  -    }
                                  -    function formaybein(type, value){
                                  -      if (value == "in") cont(expression);
                                  -      else cont(maybeoperator, forspec2);
                                  -    }
                                  -    function forspec2(type, value){
                                  -      if (type == ";") cont(forspec3);
                                  -      else if (value == "in") cont(expression);
                                  -      else cont(expression, expect(";"), forspec3);
                                  -    }
                                  -    function forspec3(type) {
                                  -      if (type == ")") pass();
                                  -      else cont(expression);
                                  -    }
                                  -    // A function definition creates a new context, and the variables
                                  -    // in its argument list have to be added to this context.
                                  -    function functiondef(type, value){
                                  -      if (type == "variable"){register(value); cont(functiondef);}
                                  -      else if (type == "(") cont(pushcontext, commasep(funarg, ")"), statement, popcontext);
                                  -    }
                                  -    function funarg(type, value){
                                  -      if (type == "variable"){register(value); cont();}
                                  -    }
                                  -  
                                  -    return parser;
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseJS,
                                  -    electricChars: "{}:",
                                  -    configure: function(obj) {
                                  -      if (obj.json != null) json = obj.json;
                                  -    }
                                  -  };
                                  -})();
                                  -
                                  -/* Simple parser for CSS */
                                  -
                                  -this.CSSParser = Editor.Parser = (function() {
                                  -  var tokenizeCSS = (function() {
                                  -    function normal(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == "@") {
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-at";
                                  -      }
                                  -      else if (ch == "/" && source.equals("*")) {
                                  -        setState(inCComment);
                                  -        return null;
                                  -      }
                                  -      else if (ch == "<" && source.equals("!")) {
                                  -        setState(inSGMLComment);
                                  -        return null;
                                  -      }
                                  -      else if (ch == "=") {
                                  -        return "css-compare";
                                  -      }
                                  -      else if (source.equals("=") && (ch == "~" || ch == "|")) {
                                  -        source.next();
                                  -        return "css-compare";
                                  -      }
                                  -      else if (ch == "\"" || ch == "'") {
                                  -        setState(inString(ch));
                                  -        return null;
                                  -      }
                                  -      else if (ch == "#") {
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-hash";
                                  -      }
                                  -      else if (ch == "!") {
                                  -        source.nextWhileMatches(/[ \t]/);
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-important";
                                  -      }
                                  -      else if (/\d/.test(ch)) {
                                  -        source.nextWhileMatches(/[\w.%]/);
                                  -        return "css-unit";
                                  -      }
                                  -      else if (/[,.+>*\/]/.test(ch)) {
                                  -        return "css-select-op";
                                  -      }
                                  -      else if (/[;{}:\[\]]/.test(ch)) {
                                  -        return "css-punctuation";
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[\w\\\-_]/);
                                  -        return "css-identifier";
                                  -      }
                                  -    }
                                  -
                                  -    function inCComment(source, setState) {
                                  -      var maybeEnd = false;
                                  -      while (!source.endOfLine()) {
                                  -        var ch = source.next();
                                  -        if (maybeEnd && ch == "/") {
                                  -          setState(normal);
                                  -          break;
                                  -        }
                                  -        maybeEnd = (ch == "*");
                                  -      }
                                  -      return "css-comment";
                                  -    }
                                  -
                                  -    function inSGMLComment(source, setState) {
                                  -      var dashes = 0;
                                  -      while (!source.endOfLine()) {
                                  -        var ch = source.next();
                                  -        if (dashes >= 2 && ch == ">") {
                                  -          setState(normal);
                                  -          break;
                                  -        }
                                  -        dashes = (ch == "-") ? dashes + 1 : 0;
                                  -      }
                                  -      return "css-comment";
                                  -    }
                                  -
                                  -    function inString(quote) {
                                  -      return function(source, setState) {
                                  -        var escaped = false;
                                  -        while (!source.endOfLine()) {
                                  -          var ch = source.next();
                                  -          if (ch == quote && !escaped)
                                  -            break;
                                  -          escaped = !escaped && ch == "\\";
                                  -        }
                                  -        if (!escaped)
                                  -          setState(normal);
                                  -        return "css-string";
                                  -      };
                                  -    }
                                  -
                                  -    return function(source, startState) {
                                  -      return tokenizer(source, startState || normal);
                                  -    };
                                  -  })();
                                  -
                                  -  function indentCSS(inBraces, inRule, base) {
                                  -    return function(nextChars) {
                                  -      if (!inBraces || /^\}/.test(nextChars)) return base;
                                  -      else if (inRule) return base + indentUnit * 2;
                                  -      else return base + indentUnit;
                                  -    };
                                  -  }
                                  -
                                  -  // This is a very simplistic parser -- since CSS does not really
                                  -  // nest, it works acceptably well, but some nicer colouroing could
                                  -  // be provided with a more complicated parser.
                                  -  function parseCSS(source, basecolumn) {
                                  -    basecolumn = basecolumn || 0;
                                  -    var tokens = tokenizeCSS(source);
                                  -    var inBraces = false, inRule = false, inDecl = false;;
                                  -
                                  -    var iter = {
                                  -      next: function() {
                                  -        var token = tokens.next(), style = token.style, content = token.content;
                                  -
                                  -        if (style == "css-hash")
                                  -          style = token.style =  inRule ? "css-colorcode" : "css-identifier";
                                  -        if (style == "css-identifier") {
                                  -          if (inRule) token.style = "css-value";
                                  -          else if (!inBraces && !inDecl) token.style = "css-selector";
                                  -        }
                                  -
                                  -        if (content == "\n")
                                  -          token.indentation = indentCSS(inBraces, inRule, basecolumn);
                                  -
                                  -        if (content == "{" && inDecl == "@media")
                                  -          inDecl = false;
                                  -        else if (content == "{")
                                  -          inBraces = true;
                                  -        else if (content == "}")
                                  -          inBraces = inRule = inDecl = false;
                                  -        else if (content == ";")
                                  -          inRule = inDecl = false;
                                  -        else if (inBraces && style != "css-comment" && style != "whitespace")
                                  -          inRule = true;
                                  -        else if (!inBraces && style == "css-at")
                                  -          inDecl = content;
                                  -
                                  -        return token;
                                  -      },
                                  -
                                  -      copy: function() {
                                  -        var _inBraces = inBraces, _inRule = inRule, _tokenState = tokens.state;
                                  -        return function(source) {
                                  -          tokens = tokenizeCSS(source, _tokenState);
                                  -          inBraces = _inBraces;
                                  -          inRule = _inRule;
                                  -          return iter;
                                  -        };
                                  -      }
                                  -    };
                                  -    return iter;
                                  -  }
                                  -
                                  -  return {make: parseCSS, electricChars: "}"};
                                  -})();
                                  -
                                  -/* This file defines an XML parser, with a few kludges to make it
                                  - * useable for HTML. autoSelfClosers defines a set of tag names that
                                  - * are expected to not have a closing tag, and doNotIndent specifies
                                  - * the tags inside of which no indentation should happen (see Config
                                  - * object). These can be disabled by passing the editor an object like
                                  - * {useHTMLKludges: false} as parserConfig option.
                                  - */
                                  -
                                  -this.XMLParser = Editor.Parser = (function() {
                                  -  var Kludges = {
                                  -    autoSelfClosers: {"br": true, "img": true, "hr": true, "link": true, "input": true,
                                  -                      "meta": true, "col": true, "frame": true, "base": true, "area": true},
                                  -    doNotIndent: {"pre": true, "!cdata": true}
                                  -  };
                                  -  var NoKludges = {autoSelfClosers: {}, doNotIndent: {"!cdata": true}};
                                  -  var UseKludges = Kludges;
                                  -  var alignCDATA = false;
                                  -
                                  -  // Simple stateful tokenizer for XML documents. Returns a
                                  -  // MochiKit-style iterator, with a state property that contains a
                                  -  // function encapsulating the current state. See tokenize.js.
                                  -  var tokenizeXML = (function() {
                                  -    function inText(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == "<") {
                                  -        if (source.equals("!")) {
                                  -          source.next();
                                  -          if (source.equals("[")) {
                                  -            if (source.lookAhead("[CDATA[", true)) {
                                  -              setState(inBlock("xml-cdata", "]]>"));
                                  -              return null;
                                  -            }
                                  -            else {
                                  -              return "xml-text";
                                  -            }
                                  -          }
                                  -          else if (source.lookAhead("--", true)) {
                                  -            setState(inBlock("xml-comment", "-->"));
                                  -            return null;
                                  -          }
                                  -          else if (source.lookAhead("DOCTYPE", true)) {
                                  -            source.nextWhileMatches(/[\w\._\-]/);
                                  -            setState(inBlock("xml-doctype", ">"));
                                  -            return "xml-doctype";
                                  -          }
                                  -          else {
                                  -            return "xml-text";
                                  -          }
                                  -        }
                                  -        else if (source.equals("?")) {
                                  -          source.next();
                                  -          source.nextWhileMatches(/[\w\._\-]/);
                                  -          setState(inBlock("xml-processing", "?>"));
                                  -          return "xml-processing";
                                  -        }
                                  -        else {
                                  -          if (source.equals("/")) source.next();
                                  -          setState(inTag);
                                  -          return "xml-punctuation";
                                  -        }
                                  -      }
                                  -      else if (ch == "&") {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.next() == ";")
                                  -            break;
                                  -        }
                                  -        return "xml-entity";
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[^&<\n]/);
                                  -        return "xml-text";
                                  -      }
                                  -    }
                                  -
                                  -    function inTag(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == ">") {
                                  -        setState(inText);
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (/[?\/]/.test(ch) && source.equals(">")) {
                                  -        source.next();
                                  -        setState(inText);
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (ch == "=") {
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (/[\'\"]/.test(ch)) {
                                  -        setState(inAttribute(ch));
                                  -        return null;
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[^\s\u00a0=<>\"\'\/?]/);
                                  -        return "xml-name";
                                  -      }
                                  -    }
                                  -
                                  -    function inAttribute(quote) {
                                  -      return function(source, setState) {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.next() == quote) {
                                  -            setState(inTag);
                                  -            break;
                                  -          }
                                  -        }
                                  -        return "xml-attribute";
                                  -      };
                                  -    }
                                  -
                                  -    function inBlock(style, terminator) {
                                  -      return function(source, setState) {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.lookAhead(terminator, true)) {
                                  -            setState(inText);
                                  -            break;
                                  -          }
                                  -          source.next();
                                  -        }
                                  -        return style;
                                  -      };
                                  -    }
                                  -
                                  -    return function(source, startState) {
                                  -      return tokenizer(source, startState || inText);
                                  -    };
                                  -  })();
                                  -
                                  -  // The parser. The structure of this function largely follows that of
                                  -  // parseJavaScript in parsejavascript.js (there is actually a bit more
                                  -  // shared code than I'd like), but it is quite a bit simpler.
                                  -  function parseXML(source) {
                                  -    var tokens = tokenizeXML(source), token;
                                  -    var cc = [base];
                                  -    var tokenNr = 0, indented = 0;
                                  -    var currentTag = null, context = null;
                                  -    var consume;
                                  -    
                                  -    function push(fs) {
                                  -      for (var i = fs.length - 1; i >= 0; i--)
                                  -        cc.push(fs[i]);
                                  -    }
                                  -    function cont() {
                                  -      push(arguments);
                                  -      consume = true;
                                  -    }
                                  -    function pass() {
                                  -      push(arguments);
                                  -      consume = false;
                                  -    }
                                  -
                                  -    function markErr() {
                                  -      token.style += " xml-error";
                                  -    }
                                  -    function expect(text) {
                                  -      return function(style, content) {
                                  -        if (content == text) cont();
                                  -        else {markErr(); cont(arguments.callee);}
                                  -      };
                                  -    }
                                  -
                                  -    function pushContext(tagname, startOfLine) {
                                  -      var noIndent = UseKludges.doNotIndent.hasOwnProperty(tagname) || (context && context.noIndent);
                                  -      context = {prev: context, name: tagname, indent: indented, startOfLine: startOfLine, noIndent: noIndent};
                                  -    }
                                  -    function popContext() {
                                  -      context = context.prev;
                                  -    }
                                  -    function computeIndentation(baseContext) {
                                  -      return function(nextChars, current) {
                                  -        var context = baseContext;
                                  -        if (context && context.noIndent)
                                  -          return current;
                                  -        if (alignCDATA && /<!\[CDATA\[/.test(nextChars))
                                  -          return 0;
                                  -        if (context && /^<\//.test(nextChars))
                                  -          context = context.prev;
                                  -        while (context && !context.startOfLine)
                                  -          context = context.prev;
                                  -        if (context)
                                  -          return context.indent + indentUnit;
                                  -        else
                                  -          return 0;
                                  -      };
                                  -    }
                                  -
                                  -    function base() {
                                  -      return pass(element, base);
                                  -    }
                                  -    var harmlessTokens = {"xml-text": true, "xml-entity": true, "xml-comment": true, "xml-processing": true, "xml-doctype": true};
                                  -    function element(style, content) {
                                  -      if (content == "<") cont(tagname, attributes, endtag(tokenNr == 1));
                                  -      else if (content == "</") cont(closetagname, expect(">"));
                                  -      else if (style == "xml-cdata") {
                                  -        if (!context || context.name != "!cdata") pushContext("!cdata");
                                  -        if (/\]\]>$/.test(content)) popContext();
                                  -        cont();
                                  -      }
                                  -      else if (harmlessTokens.hasOwnProperty(style)) cont();
                                  -      else {markErr(); cont();}
                                  -    }
                                  -    function tagname(style, content) {
                                  -      if (style == "xml-name") {
                                  -        currentTag = content.toLowerCase();
                                  -        token.style = "xml-tagname";
                                  -        cont();
                                  -      }
                                  -      else {
                                  -        currentTag = null;
                                  -        pass();
                                  -      }
                                  -    }
                                  -    function closetagname(style, content) {
                                  -      if (style == "xml-name") {
                                  -        token.style = "xml-tagname";
                                  -        if (context && content.toLowerCase() == context.name) popContext();
                                  -        else markErr();
                                  -      }
                                  -      cont();
                                  -    }
                                  -    function endtag(startOfLine) {
                                  -      return function(style, content) {
                                  -        if (content == "/>" || (content == ">" && UseKludges.autoSelfClosers.hasOwnProperty(currentTag))) cont();
                                  -        else if (content == ">") {pushContext(currentTag, startOfLine); cont();}
                                  -        else {markErr(); cont(arguments.callee);}
                                  -      };
                                  -    }
                                  -    function attributes(style) {
                                  -      if (style == "xml-name") {token.style = "xml-attname"; cont(attribute, attributes);}
                                  -      else pass();
                                  -    }
                                  -    function attribute(style, content) {
                                  -      if (content == "=") cont(value);
                                  -      else if (content == ">" || content == "/>") pass(endtag);
                                  -      else pass();
                                  -    }
                                  -    function value(style) {
                                  -      if (style == "xml-attribute") cont(value);
                                  -      else pass();
                                  -    }
                                  -
                                  -    return {
                                  -      indentation: function() {return indented;},
                                  -
                                  -      next: function(){
                                  -        token = tokens.next();
                                  -        if (token.style == "whitespace" && tokenNr == 0)
                                  -          indented = token.value.length;
                                  -        else
                                  -          tokenNr++;
                                  -        if (token.content == "\n") {
                                  -          indented = tokenNr = 0;
                                  -          token.indentation = computeIndentation(context);
                                  -        }
                                  -
                                  -        if (token.style == "whitespace" || token.type == "xml-comment")
                                  -          return token;
                                  -
                                  -        while(true){
                                  -          consume = false;
                                  -          cc.pop()(token.style, token.content);
                                  -          if (consume) return token;
                                  -        }
                                  -      },
                                  -
                                  -      copy: function(){
                                  -        var _cc = cc.concat([]), _tokenState = tokens.state, _context = context;
                                  -        var parser = this;
                                  -        
                                  -        return function(input){
                                  -          cc = _cc.concat([]);
                                  -          tokenNr = indented = 0;
                                  -          context = _context;
                                  -          tokens = tokenizeXML(input, _tokenState);
                                  -          return parser;
                                  -        };
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseXML,
                                  -    electricChars: "/",
                                  -    configure: function(config) {
                                  -      if (config.useHTMLKludges != null)
                                  -        UseKludges = config.useHTMLKludges ? Kludges : NoKludges;
                                  -      if (config.alignCDATA)
                                  -        alignCDATA = config.alignCDATA;
                                  -    }
                                  -  };
                                  -})();
                                  -
                                  -this.HTMLMixedParser = Editor.Parser = (function() {
                                  -
                                  -  // tags that trigger seperate parsers
                                  -  var triggers = {
                                  -    "script": "JSParser",
                                  -    "style":  "CSSParser"
                                  -  };
                                  -
                                  -  function checkDependencies() {
                                  -    var parsers = ['XMLParser'];
                                  -    for (var p in triggers) parsers.push(triggers[p]);
                                  -    for (var i in parsers) {
                                  -      if (!window[parsers[i]]) throw new Error(parsers[i] + " parser must be loaded for HTML mixed mode to work.");
                                  -    }
                                  -    XMLParser.configure({useHTMLKludges: true});
                                  -  }
                                  -
                                  -  function parseMixed(stream) {
                                  -    checkDependencies();
                                  -    var htmlParser = XMLParser.make(stream), localParser = null, inTag = false;
                                  -    var iter = {next: top, copy: copy};
                                  -
                                  -    function top() {
                                  -      var token = htmlParser.next();
                                  -      if (token.content == "<")
                                  -        inTag = true;
                                  -      else if (token.style == "xml-tagname" && inTag === true)
                                  -        inTag = token.content.toLowerCase();
                                  -      else if (token.content == ">") {
                                  -        if (triggers[inTag]) {
                                  -          var parser = window[triggers[inTag]];
                                  -          iter.next = local(parser, "</" + inTag);
                                  -        }
                                  -        inTag = false;
                                  -      }
                                  -      return token;
                                  -    }
                                  -    function local(parser, tag) {
                                  -      var baseIndent = htmlParser.indentation();
                                  -      localParser = parser.make(stream, baseIndent + indentUnit);
                                  -      return function() {
                                  -        if (stream.lookAhead(tag, false, false, true)) {
                                  -          localParser = null;
                                  -          iter.next = top;
                                  -          return top();
                                  -        }
                                  -
                                  -        var token = localParser.next();
                                  -        var lt = token.value.lastIndexOf("<"), sz = Math.min(token.value.length - lt, tag.length);
                                  -        if (lt != -1 && token.value.slice(lt, lt + sz).toLowerCase() == tag.slice(0, sz) &&
                                  -            stream.lookAhead(tag.slice(sz), false, false, true)) {
                                  -          stream.push(token.value.slice(lt));
                                  -          token.value = token.value.slice(0, lt);
                                  -        }
                                  -
                                  -        if (token.indentation) {
                                  -          var oldIndent = token.indentation;
                                  -          token.indentation = function(chars) {
                                  -            if (chars == "</")
                                  -              return baseIndent;
                                  -            else
                                  -              return oldIndent(chars);
                                  -          };
                                  -        }
                                  -
                                  -        return token;
                                  -      };
                                  -    }
                                  -
                                  -    function copy() {
                                  -      var _html = htmlParser.copy(), _local = localParser && localParser.copy(),
                                  -          _next = iter.next, _inTag = inTag;
                                  -      return function(_stream) {
                                  -        stream = _stream;
                                  -        htmlParser = _html(_stream);
                                  -        localParser = _local && _local(_stream);
                                  -        iter.next = _next;
                                  -        inTag = _inTag;
                                  -        return iter;
                                  -      };
                                  -    }
                                  -    return iter;
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseMixed,
                                  -    electricChars: "{}/:",
                                  -    configure: function(obj) {
                                  -      if (obj.triggers) triggers = obj.triggers;
                                  -    }
                                  -  };
                                  -
                                  -})();
                                  -
                                  -/* String streams are the things fed to parsers (which can feed them
                                  - * to a tokenizer if they want). They provide peek and next methods
                                  - * for looking at the current character (next 'consumes' this
                                  - * character, peek does not), and a get method for retrieving all the
                                  - * text that was consumed since the last time get was called.
                                  - *
                                  - * An easy mistake to make is to let a StopIteration exception finish
                                  - * the token stream while there are still characters pending in the
                                  - * string stream (hitting the end of the buffer while parsing a
                                  - * token). To make it easier to detect such errors, the stringstreams
                                  - * throw an exception when this happens.
                                  - */
                                  -
                                  -// Make a stringstream stream out of an iterator that returns strings.
                                  -// This is applied to the result of traverseDOM (see codemirror.js),
                                  -// and the resulting stream is fed to the parser.
                                  -this.stringStream = function(source){
                                  -  // String that's currently being iterated over.
                                  -  var current = "";
                                  -  // Position in that string.
                                  -  var pos = 0;
                                  -  // Accumulator for strings that have been iterated over but not
                                  -  // get()-ed yet.
                                  -  var accum = "";
                                  -  // Make sure there are more characters ready, or throw
                                  -  // StopIteration.
                                  -  function ensureChars() {
                                  -    while (pos == current.length) {
                                  -      accum += current;
                                  -      current = ""; // In case source.next() throws
                                  -      pos = 0;
                                  -      try {current = source.next();}
                                  -      catch (e) {
                                  -        if (e != StopIteration) throw e;
                                  -        else return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  }
                                  -
                                  -  return {
                                  -    // peek: -> character
                                  -    // Return the next character in the stream.
                                  -    peek: function() {
                                  -      if (!ensureChars()) return null;
                                  -      return current.charAt(pos);
                                  -    },
                                  -    // next: -> character
                                  -    // Get the next character, throw StopIteration if at end, check
                                  -    // for unused content.
                                  -    next: function() {
                                  -      if (!ensureChars()) {
                                  -        if (accum.length > 0)
                                  -          throw "End of stringstream reached without emptying buffer ('" + accum + "').";
                                  -        else
                                  -          throw StopIteration;
                                  -      }
                                  -      return current.charAt(pos++);
                                  -    },
                                  -    // get(): -> string
                                  -    // Return the characters iterated over since the last call to
                                  -    // .get().
                                  -    get: function() {
                                  -      var temp = accum;
                                  -      accum = "";
                                  -      if (pos > 0){
                                  -        temp += current.slice(0, pos);
                                  -        current = current.slice(pos);
                                  -        pos = 0;
                                  -      }
                                  -      return temp;
                                  -    },
                                  -    // Push a string back into the stream.
                                  -    push: function(str) {
                                  -      current = current.slice(0, pos) + str + current.slice(pos);
                                  -    },
                                  -    lookAhead: function(str, consume, skipSpaces, caseInsensitive) {
                                  -      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
                                  -      str = cased(str);
                                  -      var found = false;
                                  -
                                  -      var _accum = accum, _pos = pos;
                                  -      if (skipSpaces) this.nextWhileMatches(/[\s\u00a0]/);
                                  -
                                  -      while (true) {
                                  -        var end = pos + str.length, left = current.length - pos;
                                  -        if (end <= current.length) {
                                  -          found = str == cased(current.slice(pos, end));
                                  -          pos = end;
                                  -          break;
                                  -        }
                                  -        else if (str.slice(0, left) == cased(current.slice(pos))) {
                                  -          accum += current; current = "";
                                  -          try {current = source.next();}
                                  -          catch (e) {break;}
                                  -          pos = 0;
                                  -          str = str.slice(left);
                                  -        }
                                  -        else {
                                  -          break;
                                  -        }
                                  -      }
                                  -
                                  -      if (!(found && consume)) {
                                  -        current = accum.slice(_accum.length) + current;
                                  -        pos = _pos;
                                  -        accum = _accum;
                                  -      }
                                  -
                                  -      return found;
                                  -    },
                                  -
                                  -    // Utils built on top of the above
                                  -    // more: -> boolean
                                  -    // Produce true if the stream isn't empty.
                                  -    more: function() {
                                  -      return this.peek() !== null;
                                  -    },
                                  -    applies: function(test) {
                                  -      var next = this.peek();
                                  -      return (next !== null && test(next));
                                  -    },
                                  -    nextWhile: function(test) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && test(next))
                                  -        this.next();
                                  -    },
                                  -    matches: function(re) {
                                  -      var next = this.peek();
                                  -      return (next !== null && re.test(next));
                                  -    },
                                  -    nextWhileMatches: function(re) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && re.test(next))
                                  -        this.next();
                                  -    },
                                  -    equals: function(ch) {
                                  -      return ch === this.peek();
                                  -    },
                                  -    endOfLine: function() {
                                  -      var next = this.peek();
                                  -      return next == null || next == "\n";
                                  -    }
                                  -  };
                                  -};
                                  -
                                  -   return this;
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/LICENSE b/branches/flexBox/content/firerainbow/chrome/content/codemirror/LICENSE
                                  deleted file mode 100644
                                  index aab5d221..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/LICENSE
                                  +++ /dev/null
                                  @@ -1,23 +0,0 @@
                                  - Copyright (c) 2007-2010 Marijn Haverbeke
                                  -
                                  - This software is provided 'as-is', without any express or implied
                                  - warranty. In no event will the authors be held liable for any
                                  - damages arising from the use of this software.
                                  -
                                  - Permission is granted to anyone to use this software for any
                                  - purpose, including commercial applications, and to alter it and
                                  - redistribute it freely, subject to the following restrictions:
                                  -
                                  - 1. The origin of this software must not be misrepresented; you must
                                  -    not claim that you wrote the original software. If you use this
                                  -    software in a product, an acknowledgment in the product
                                  -    documentation would be appreciated but is not required.
                                  -
                                  - 2. Altered source versions must be plainly marked as such, and must
                                  -    not be misrepresented as being the original software.
                                  -
                                  - 3. This notice may not be removed or altered from any source
                                  -    distribution.
                                  -
                                  - Marijn Haverbeke
                                  - marijnh@gmail.com
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsecss.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsecss.js
                                  deleted file mode 100644
                                  index 21c958cc..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsecss.js
                                  +++ /dev/null
                                  @@ -1,161 +0,0 @@
                                  -/* Simple parser for CSS */
                                  -
                                  -var CSSParser = Editor.Parser = (function() {
                                  -  var tokenizeCSS = (function() {
                                  -    function normal(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == "@") {
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-at";
                                  -      }
                                  -      else if (ch == "/" && source.equals("*")) {
                                  -        setState(inCComment);
                                  -        return null;
                                  -      }
                                  -      else if (ch == "<" && source.equals("!")) {
                                  -        setState(inSGMLComment);
                                  -        return null;
                                  -      }
                                  -      else if (ch == "=") {
                                  -        return "css-compare";
                                  -      }
                                  -      else if (source.equals("=") && (ch == "~" || ch == "|")) {
                                  -        source.next();
                                  -        return "css-compare";
                                  -      }
                                  -      else if (ch == "\"" || ch == "'") {
                                  -        setState(inString(ch));
                                  -        return null;
                                  -      }
                                  -      else if (ch == "#") {
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-hash";
                                  -      }
                                  -      else if (ch == "!") {
                                  -        source.nextWhileMatches(/[ \t]/);
                                  -        source.nextWhileMatches(/\w/);
                                  -        return "css-important";
                                  -      }
                                  -      else if (/\d/.test(ch)) {
                                  -        source.nextWhileMatches(/[\w.%]/);
                                  -        return "css-unit";
                                  -      }
                                  -      else if (/[,.+>*\/]/.test(ch)) {
                                  -        return "css-select-op";
                                  -      }
                                  -      else if (/[;{}:\[\]]/.test(ch)) {
                                  -        return "css-punctuation";
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[\w\\\-_]/);
                                  -        return "css-identifier";
                                  -      }
                                  -    }
                                  -
                                  -    function inCComment(source, setState) {
                                  -      var maybeEnd = false;
                                  -      while (!source.endOfLine()) {
                                  -        var ch = source.next();
                                  -        if (maybeEnd && ch == "/") {
                                  -          setState(normal);
                                  -          break;
                                  -        }
                                  -        maybeEnd = (ch == "*");
                                  -      }
                                  -      return "css-comment";
                                  -    }
                                  -
                                  -    function inSGMLComment(source, setState) {
                                  -      var dashes = 0;
                                  -      while (!source.endOfLine()) {
                                  -        var ch = source.next();
                                  -        if (dashes >= 2 && ch == ">") {
                                  -          setState(normal);
                                  -          break;
                                  -        }
                                  -        dashes = (ch == "-") ? dashes + 1 : 0;
                                  -      }
                                  -      return "css-comment";
                                  -    }
                                  -
                                  -    function inString(quote) {
                                  -      return function(source, setState) {
                                  -        var escaped = false;
                                  -        while (!source.endOfLine()) {
                                  -          var ch = source.next();
                                  -          if (ch == quote && !escaped)
                                  -            break;
                                  -          escaped = !escaped && ch == "\\";
                                  -        }
                                  -        if (!escaped)
                                  -          setState(normal);
                                  -        return "css-string";
                                  -      };
                                  -    }
                                  -
                                  -    return function(source, startState) {
                                  -      return tokenizer(source, startState || normal);
                                  -    };
                                  -  })();
                                  -
                                  -  function indentCSS(inBraces, inRule, base) {
                                  -    return function(nextChars) {
                                  -      if (!inBraces || /^\}/.test(nextChars)) return base;
                                  -      else if (inRule) return base + indentUnit * 2;
                                  -      else return base + indentUnit;
                                  -    };
                                  -  }
                                  -
                                  -  // This is a very simplistic parser -- since CSS does not really
                                  -  // nest, it works acceptably well, but some nicer colouroing could
                                  -  // be provided with a more complicated parser.
                                  -  function parseCSS(source, basecolumn) {
                                  -    basecolumn = basecolumn || 0;
                                  -    var tokens = tokenizeCSS(source);
                                  -    var inBraces = false, inRule = false, inDecl = false;;
                                  -
                                  -    var iter = {
                                  -      next: function() {
                                  -        var token = tokens.next(), style = token.style, content = token.content;
                                  -
                                  -        if (style == "css-hash")
                                  -          style = token.style =  inRule ? "css-colorcode" : "css-identifier";
                                  -        if (style == "css-identifier") {
                                  -          if (inRule) token.style = "css-value";
                                  -          else if (!inBraces && !inDecl) token.style = "css-selector";
                                  -        }
                                  -
                                  -        if (content == "\n")
                                  -          token.indentation = indentCSS(inBraces, inRule, basecolumn);
                                  -
                                  -        if (content == "{" && inDecl == "@media")
                                  -          inDecl = false;
                                  -        else if (content == "{")
                                  -          inBraces = true;
                                  -        else if (content == "}")
                                  -          inBraces = inRule = inDecl = false;
                                  -        else if (content == ";")
                                  -          inRule = inDecl = false;
                                  -        else if (inBraces && style != "css-comment" && style != "whitespace")
                                  -          inRule = true;
                                  -        else if (!inBraces && style == "css-at")
                                  -          inDecl = content;
                                  -
                                  -        return token;
                                  -      },
                                  -
                                  -      copy: function() {
                                  -        var _inBraces = inBraces, _inRule = inRule, _tokenState = tokens.state;
                                  -        return function(source) {
                                  -          tokens = tokenizeCSS(source, _tokenState);
                                  -          inBraces = _inBraces;
                                  -          inRule = _inRule;
                                  -          return iter;
                                  -        };
                                  -      }
                                  -    };
                                  -    return iter;
                                  -  }
                                  -
                                  -  return {make: parseCSS, electricChars: "}"};
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js
                                  deleted file mode 100644
                                  index bf7e02eb..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js
                                  +++ /dev/null
                                  @@ -1,93 +0,0 @@
                                  -var HTMLMixedParser = Editor.Parser = (function() {
                                  -
                                  -  // tags that trigger seperate parsers
                                  -  var triggers = {
                                  -    "script": "JSParser",
                                  -    "style":  "CSSParser"
                                  -  };
                                  -
                                  -  function checkDependencies() {
                                  -    var parsers = ['XMLParser'];
                                  -    for (var p in triggers) parsers.push(triggers[p]);
                                  -    for (var i in parsers) {
                                  -      if (!window[parsers[i]]) throw new Error(parsers[i] + " parser must be loaded for HTML mixed mode to work.");
                                  -    }
                                  -    XMLParser.configure({useHTMLKludges: true});
                                  -  }
                                  -
                                  -  function parseMixed(stream) {
                                  -    checkDependencies();
                                  -    var htmlParser = XMLParser.make(stream), localParser = null, inTag = false;
                                  -    var iter = {next: top, copy: copy};
                                  -
                                  -    function top() {
                                  -      var token = htmlParser.next();
                                  -      if (token.content == "<")
                                  -        inTag = true;
                                  -      else if (token.style == "xml-tagname" && inTag === true)
                                  -        inTag = token.content.toLowerCase();
                                  -      else if (token.content == ">") {
                                  -        if (triggers[inTag]) {
                                  -          var parser = window[triggers[inTag]];
                                  -          iter.next = local(parser, "</" + inTag);
                                  -        }
                                  -        inTag = false;
                                  -      }
                                  -      return token;
                                  -    }
                                  -    function local(parser, tag) {
                                  -      var baseIndent = htmlParser.indentation();
                                  -      localParser = parser.make(stream, baseIndent + indentUnit);
                                  -      return function() {
                                  -        if (stream.lookAhead(tag, false, false, true)) {
                                  -          localParser = null;
                                  -          iter.next = top;
                                  -          return top();
                                  -        }
                                  -
                                  -        var token = localParser.next();
                                  -        var lt = token.value.lastIndexOf("<"), sz = Math.min(token.value.length - lt, tag.length);
                                  -        if (lt != -1 && token.value.slice(lt, lt + sz).toLowerCase() == tag.slice(0, sz) &&
                                  -            stream.lookAhead(tag.slice(sz), false, false, true)) {
                                  -          stream.push(token.value.slice(lt));
                                  -          token.value = token.value.slice(0, lt);
                                  -        }
                                  -
                                  -        if (token.indentation) {
                                  -          var oldIndent = token.indentation;
                                  -          token.indentation = function(chars) {
                                  -            if (chars == "</")
                                  -              return baseIndent;
                                  -            else
                                  -              return oldIndent(chars);
                                  -          };
                                  -        }
                                  -
                                  -        return token;
                                  -      };
                                  -    }
                                  -
                                  -    function copy() {
                                  -      var _html = htmlParser.copy(), _local = localParser && localParser.copy(),
                                  -          _next = iter.next, _inTag = inTag;
                                  -      return function(_stream) {
                                  -        stream = _stream;
                                  -        htmlParser = _html(_stream);
                                  -        localParser = _local && _local(_stream);
                                  -        iter.next = _next;
                                  -        inTag = _inTag;
                                  -        return iter;
                                  -      };
                                  -    }
                                  -    return iter;
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseMixed,
                                  -    electricChars: "{}/:",
                                  -    configure: function(obj) {
                                  -      if (obj.triggers) triggers = obj.triggers;
                                  -    }
                                  -  };
                                  -
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsejavascript.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsejavascript.js
                                  deleted file mode 100644
                                  index 3aa20697..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsejavascript.js
                                  +++ /dev/null
                                  @@ -1,359 +0,0 @@
                                  -/* Parse function for JavaScript. Makes use of the tokenizer from
                                  - * tokenizejavascript.js. Note that your parsers do not have to be
                                  - * this complicated -- if you don't want to recognize local variables,
                                  - * in many languages it is enough to just look for braces, semicolons,
                                  - * parentheses, etc, and know when you are inside a string or comment.
                                  - *
                                  - * See manual.html for more info about the parser interface.
                                  - */
                                  -
                                  -var JSParser = Editor.Parser = (function() {
                                  -  // Token types that can be considered to be atoms.
                                  -  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true};
                                  -  // Setting that can be used to have JSON data indent properly.
                                  -  var json = false;
                                  -  // Constructor for the lexical context objects.
                                  -  function JSLexical(indented, column, type, align, prev, info) {
                                  -    // indentation at start of this line
                                  -    this.indented = indented;
                                  -    // column at which this scope was opened
                                  -    this.column = column;
                                  -    // type of scope ('vardef', 'stat' (statement), 'form' (special form), '[', '{', or '(')
                                  -    this.type = type;
                                  -    // '[', '{', or '(' blocks that have any text after their opening
                                  -    // character are said to be 'aligned' -- any lines below are
                                  -    // indented all the way to the opening character.
                                  -    if (align != null)
                                  -      this.align = align;
                                  -    // Parent scope, if any.
                                  -    this.prev = prev;
                                  -    this.info = info;
                                  -  }
                                  -
                                  -  // My favourite JavaScript indentation rules.
                                  -  function indentJS(lexical) {
                                  -    return function(firstChars) {
                                  -      var firstChar = firstChars && firstChars.charAt(0), type = lexical.type;
                                  -      var closing = firstChar == type;
                                  -      if (type == "vardef")
                                  -        return lexical.indented + 4;
                                  -      else if (type == "form" && firstChar == "{")
                                  -        return lexical.indented;
                                  -      else if (type == "stat" || type == "form")
                                  -        return lexical.indented + indentUnit;
                                  -      else if (lexical.info == "switch" && !closing)
                                  -        return lexical.indented + (/^(?:case|default)\b/.test(firstChars) ? indentUnit : 2 * indentUnit);
                                  -      else if (lexical.align)
                                  -        return lexical.column - (closing ? 1 : 0);
                                  -      else
                                  -        return lexical.indented + (closing ? 0 : indentUnit);
                                  -    };
                                  -  }
                                  -
                                  -  // The parser-iterator-producing function itself.
                                  -  function parseJS(input, basecolumn) {
                                  -    // Wrap the input in a token stream
                                  -    var tokens = tokenizeJavaScript(input);
                                  -    // The parser state. cc is a stack of actions that have to be
                                  -    // performed to finish the current statement. For example we might
                                  -    // know that we still need to find a closing parenthesis and a
                                  -    // semicolon. Actions at the end of the stack go first. It is
                                  -    // initialized with an infinitely looping action that consumes
                                  -    // whole statements.
                                  -    var cc = [json ? expressions : statements];
                                  -    // Context contains information about the current local scope, the
                                  -    // variables defined in that, and the scopes above it.
                                  -    var context = null;
                                  -    // The lexical scope, used mostly for indentation.
                                  -    var lexical = new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false);
                                  -    // Current column, and the indentation at the start of the current
                                  -    // line. Used to create lexical scope objects.
                                  -    var column = 0;
                                  -    var indented = 0;
                                  -    // Variables which are used by the mark, cont, and pass functions
                                  -    // below to communicate with the driver loop in the 'next'
                                  -    // function.
                                  -    var consume, marked;
                                  -  
                                  -    // The iterator object.
                                  -    var parser = {next: next, copy: copy};
                                  -
                                  -    function next(){
                                  -      // Start by performing any 'lexical' actions (adjusting the
                                  -      // lexical variable), or the operations below will be working
                                  -      // with the wrong lexical state.
                                  -      while(cc[cc.length - 1].lex)
                                  -        cc.pop()();
                                  -
                                  -      // Fetch a token.
                                  -      var token = tokens.next();
                                  -
                                  -      // Adjust column and indented.
                                  -      if (token.type == "whitespace" && column == 0)
                                  -        indented = token.value.length;
                                  -      column += token.value.length;
                                  -      if (token.content == "\n"){
                                  -        indented = column = 0;
                                  -        // If the lexical scope's align property is still undefined at
                                  -        // the end of the line, it is an un-aligned scope.
                                  -        if (!("align" in lexical))
                                  -          lexical.align = false;
                                  -        // Newline tokens get an indentation function associated with
                                  -        // them.
                                  -        token.indentation = indentJS(lexical);
                                  -      }
                                  -      // No more processing for meaningless tokens.
                                  -      if (token.type == "whitespace" || token.type == "comment")
                                  -        return token;
                                  -      // When a meaningful token is found and the lexical scope's
                                  -      // align is undefined, it is an aligned scope.
                                  -      if (!("align" in lexical))
                                  -        lexical.align = true;
                                  -
                                  -      // Execute actions until one 'consumes' the token and we can
                                  -      // return it.
                                  -      while(true) {
                                  -        consume = marked = false;
                                  -        // Take and execute the topmost action.
                                  -        cc.pop()(token.type, token.content);
                                  -        if (consume){
                                  -          // Marked is used to change the style of the current token.
                                  -          if (marked)
                                  -            token.style = marked;
                                  -          // Here we differentiate between local and global variables.
                                  -          else if (token.type == "variable" && inScope(token.content))
                                  -            token.style = "js-localvariable";
                                  -          return token;
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    // This makes a copy of the parser state. It stores all the
                                  -    // stateful variables in a closure, and returns a function that
                                  -    // will restore them when called with a new input stream. Note
                                  -    // that the cc array has to be copied, because it is contantly
                                  -    // being modified. Lexical objects are not mutated, and context
                                  -    // objects are not mutated in a harmful way, so they can be shared
                                  -    // between runs of the parser.
                                  -    function copy(){
                                  -      var _context = context, _lexical = lexical, _cc = cc.concat([]), _tokenState = tokens.state;
                                  -  
                                  -      return function copyParser(input){
                                  -        context = _context;
                                  -        lexical = _lexical;
                                  -        cc = _cc.concat([]); // copies the array
                                  -        column = indented = 0;
                                  -        tokens = tokenizeJavaScript(input, _tokenState);
                                  -        return parser;
                                  -      };
                                  -    }
                                  -
                                  -    // Helper function for pushing a number of actions onto the cc
                                  -    // stack in reverse order.
                                  -    function push(fs){
                                  -      for (var i = fs.length - 1; i >= 0; i--)
                                  -        cc.push(fs[i]);
                                  -    }
                                  -    // cont and pass are used by the action functions to add other
                                  -    // actions to the stack. cont will cause the current token to be
                                  -    // consumed, pass will leave it for the next action.
                                  -    function cont(){
                                  -      push(arguments);
                                  -      consume = true;
                                  -    }
                                  -    function pass(){
                                  -      push(arguments);
                                  -      consume = false;
                                  -    }
                                  -    // Used to change the style of the current token.
                                  -    function mark(style){
                                  -      marked = style;
                                  -    }
                                  -
                                  -    // Push a new scope. Will automatically link the current scope.
                                  -    function pushcontext(){
                                  -      context = {prev: context, vars: {"this": true, "arguments": true}};
                                  -    }
                                  -    // Pop off the current scope.
                                  -    function popcontext(){
                                  -      context = context.prev;
                                  -    }
                                  -    // Register a variable in the current scope.
                                  -    function register(varname){
                                  -      if (context){
                                  -        mark("js-variabledef");
                                  -        context.vars[varname] = true;
                                  -      }
                                  -    }
                                  -    // Check whether a variable is defined in the current scope.
                                  -    function inScope(varname){
                                  -      var cursor = context;
                                  -      while (cursor) {
                                  -        if (cursor.vars[varname])
                                  -          return true;
                                  -        cursor = cursor.prev;
                                  -      }
                                  -      return false;
                                  -    }
                                  -  
                                  -    // Push a new lexical context of the given type.
                                  -    function pushlex(type, info) {
                                  -      var result = function(){
                                  -        lexical = new JSLexical(indented, column, type, null, lexical, info)
                                  -      };
                                  -      result.lex = true;
                                  -      return result;
                                  -    }
                                  -    // Pop off the current lexical context.
                                  -    function poplex(){
                                  -      if (lexical.type == ")")
                                  -        indented = lexical.indented;
                                  -      lexical = lexical.prev;
                                  -    }
                                  -    poplex.lex = true;
                                  -    // The 'lex' flag on these actions is used by the 'next' function
                                  -    // to know they can (and have to) be ran before moving on to the
                                  -    // next token.
                                  -  
                                  -    // Creates an action that discards tokens until it finds one of
                                  -    // the given type.
                                  -    function expect(wanted){
                                  -      return function expecting(type){
                                  -        if (type == wanted) cont();
                                  -        else if (wanted == ";") pass();
                                  -        else cont(arguments.callee);
                                  -      };
                                  -    }
                                  -
                                  -    // Looks for a statement, and then calls itself.
                                  -    function statements(type){
                                  -      return pass(statement, statements);
                                  -    }
                                  -    function expressions(type){
                                  -      return pass(expression, expressions);
                                  -    }
                                  -    // Dispatches various types of statements based on the type of the
                                  -    // current token.
                                  -    function statement(type){
                                  -      if (type == "var") cont(pushlex("vardef"), vardef1, expect(";"), poplex);
                                  -      else if (type == "keyword a") cont(pushlex("form"), expression, statement, poplex);
                                  -      else if (type == "keyword b") cont(pushlex("form"), statement, poplex);
                                  -      else if (type == "{") cont(pushlex("}"), block, poplex);
                                  -      else if (type == ";") cont();
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "for") cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex);
                                  -      else if (type == "variable") cont(pushlex("stat"), maybelabel);
                                  -      else if (type == "switch") cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex);
                                  -      else if (type == "case") cont(expression, expect(":"));
                                  -      else if (type == "default") cont(expect(":"));
                                  -      else if (type == "catch") cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext);
                                  -      else pass(pushlex("stat"), expression, expect(";"), poplex);
                                  -    }
                                  -    // Dispatch expression types.
                                  -    function expression(type){
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(maybeoperator);
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "keyword c") cont(expression);
                                  -      else if (type == "(") cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == "[") cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator);
                                  -      else if (type == "{") cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator);
                                  -      else cont();
                                  -    }
                                  -    // Called for places where operators, function calls, or
                                  -    // subscripts are valid. Will skip on to the next action if none
                                  -    // is found.
                                  -    function maybeoperator(type, value){
                                  -      if (type == "operator" && /\+\+|--/.test(value)) cont(maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == ";") pass();
                                  -      else if (type == "(") cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator);
                                  -      else if (type == ".") cont(property, maybeoperator);
                                  -      else if (type == "[") cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator);
                                  -    }
                                  -    // When a statement starts with a variable name, it might be a
                                  -    // label. If no colon follows, it's a regular statement.
                                  -    function maybelabel(type){
                                  -      if (type == ":") cont(poplex, statement);
                                  -      else pass(maybeoperator, expect(";"), poplex);
                                  -    }
                                  -    // Property names need to have their style adjusted -- the
                                  -    // tokenizer thinks they are variables.
                                  -    function property(type){
                                  -      if (type == "variable") {mark("js-property"); cont();}
                                  -    }
                                  -    // This parses a property and its value in an object literal.
                                  -    function objprop(type){
                                  -      if (type == "variable") mark("js-property");
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(expect(":"), expression);
                                  -    }
                                  -    // Parses a comma-separated list of the things that are recognized
                                  -    // by the 'what' argument.
                                  -    function commasep(what, end){
                                  -      function proceed(type) {
                                  -        if (type == ",") cont(what, proceed);
                                  -        else if (type == end) cont();
                                  -        else cont(expect(end));
                                  -      }
                                  -      return function commaSeparated(type) {
                                  -        if (type == end) cont();
                                  -        else pass(what, proceed);
                                  -      };
                                  -    }
                                  -    // Look for statements until a closing brace is found.
                                  -    function block(type){
                                  -      if (type == "}") cont();
                                  -      else pass(statement, block);
                                  -    }
                                  -    // Variable definitions are split into two actions -- 1 looks for
                                  -    // a name or the end of the definition, 2 looks for an '=' sign or
                                  -    // a comma.
                                  -    function vardef1(type, value){
                                  -      if (type == "variable"){register(value); cont(vardef2);}
                                  -      else cont();
                                  -    }
                                  -    function vardef2(type, value){
                                  -      if (value == "=") cont(expression, vardef2);
                                  -      else if (type == ",") cont(vardef1);
                                  -    }
                                  -    // For loops.
                                  -    function forspec1(type){
                                  -      if (type == "var") cont(vardef1, forspec2);
                                  -      else if (type == ";") pass(forspec2);
                                  -      else if (type == "variable") cont(formaybein);
                                  -      else pass(forspec2);
                                  -    }
                                  -    function formaybein(type, value){
                                  -      if (value == "in") cont(expression);
                                  -      else cont(maybeoperator, forspec2);
                                  -    }
                                  -    function forspec2(type, value){
                                  -      if (type == ";") cont(forspec3);
                                  -      else if (value == "in") cont(expression);
                                  -      else cont(expression, expect(";"), forspec3);
                                  -    }
                                  -    function forspec3(type) {
                                  -      if (type == ")") pass();
                                  -      else cont(expression);
                                  -    }
                                  -    // A function definition creates a new context, and the variables
                                  -    // in its argument list have to be added to this context.
                                  -    function functiondef(type, value){
                                  -      if (type == "variable"){register(value); cont(functiondef);}
                                  -      else if (type == "(") cont(pushcontext, commasep(funarg, ")"), statement, popcontext);
                                  -    }
                                  -    function funarg(type, value){
                                  -      if (type == "variable"){register(value); cont();}
                                  -    }
                                  -  
                                  -    return parser;
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseJS,
                                  -    electricChars: "{}:",
                                  -    configure: function(obj) {
                                  -      if (obj.json != null) json = obj.json;
                                  -    }
                                  -  };
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsexml.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsexml.js
                                  deleted file mode 100644
                                  index 33d8a59e..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/parsexml.js
                                  +++ /dev/null
                                  @@ -1,291 +0,0 @@
                                  -/* This file defines an XML parser, with a few kludges to make it
                                  - * useable for HTML. autoSelfClosers defines a set of tag names that
                                  - * are expected to not have a closing tag, and doNotIndent specifies
                                  - * the tags inside of which no indentation should happen (see Config
                                  - * object). These can be disabled by passing the editor an object like
                                  - * {useHTMLKludges: false} as parserConfig option.
                                  - */
                                  -
                                  -var XMLParser = Editor.Parser = (function() {
                                  -  var Kludges = {
                                  -    autoSelfClosers: {"br": true, "img": true, "hr": true, "link": true, "input": true,
                                  -                      "meta": true, "col": true, "frame": true, "base": true, "area": true},
                                  -    doNotIndent: {"pre": true, "!cdata": true}
                                  -  };
                                  -  var NoKludges = {autoSelfClosers: {}, doNotIndent: {"!cdata": true}};
                                  -  var UseKludges = Kludges;
                                  -  var alignCDATA = false;
                                  -
                                  -  // Simple stateful tokenizer for XML documents. Returns a
                                  -  // MochiKit-style iterator, with a state property that contains a
                                  -  // function encapsulating the current state. See tokenize.js.
                                  -  var tokenizeXML = (function() {
                                  -    function inText(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == "<") {
                                  -        if (source.equals("!")) {
                                  -          source.next();
                                  -          if (source.equals("[")) {
                                  -            if (source.lookAhead("[CDATA[", true)) {
                                  -              setState(inBlock("xml-cdata", "]]>"));
                                  -              return null;
                                  -            }
                                  -            else {
                                  -              return "xml-text";
                                  -            }
                                  -          }
                                  -          else if (source.lookAhead("--", true)) {
                                  -            setState(inBlock("xml-comment", "-->"));
                                  -            return null;
                                  -          }
                                  -          else if (source.lookAhead("DOCTYPE", true)) {
                                  -            source.nextWhileMatches(/[\w\._\-]/);
                                  -            setState(inBlock("xml-doctype", ">"));
                                  -            return "xml-doctype";
                                  -          }
                                  -          else {
                                  -            return "xml-text";
                                  -          }
                                  -        }
                                  -        else if (source.equals("?")) {
                                  -          source.next();
                                  -          source.nextWhileMatches(/[\w\._\-]/);
                                  -          setState(inBlock("xml-processing", "?>"));
                                  -          return "xml-processing";
                                  -        }
                                  -        else {
                                  -          if (source.equals("/")) source.next();
                                  -          setState(inTag);
                                  -          return "xml-punctuation";
                                  -        }
                                  -      }
                                  -      else if (ch == "&") {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.next() == ";")
                                  -            break;
                                  -        }
                                  -        return "xml-entity";
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[^&<\n]/);
                                  -        return "xml-text";
                                  -      }
                                  -    }
                                  -
                                  -    function inTag(source, setState) {
                                  -      var ch = source.next();
                                  -      if (ch == ">") {
                                  -        setState(inText);
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (/[?\/]/.test(ch) && source.equals(">")) {
                                  -        source.next();
                                  -        setState(inText);
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (ch == "=") {
                                  -        return "xml-punctuation";
                                  -      }
                                  -      else if (/[\'\"]/.test(ch)) {
                                  -        setState(inAttribute(ch));
                                  -        return null;
                                  -      }
                                  -      else {
                                  -        source.nextWhileMatches(/[^\s\u00a0=<>\"\'\/?]/);
                                  -        return "xml-name";
                                  -      }
                                  -    }
                                  -
                                  -    function inAttribute(quote) {
                                  -      return function(source, setState) {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.next() == quote) {
                                  -            setState(inTag);
                                  -            break;
                                  -          }
                                  -        }
                                  -        return "xml-attribute";
                                  -      };
                                  -    }
                                  -
                                  -    function inBlock(style, terminator) {
                                  -      return function(source, setState) {
                                  -        while (!source.endOfLine()) {
                                  -          if (source.lookAhead(terminator, true)) {
                                  -            setState(inText);
                                  -            break;
                                  -          }
                                  -          source.next();
                                  -        }
                                  -        return style;
                                  -      };
                                  -    }
                                  -
                                  -    return function(source, startState) {
                                  -      return tokenizer(source, startState || inText);
                                  -    };
                                  -  })();
                                  -
                                  -  // The parser. The structure of this function largely follows that of
                                  -  // parseJavaScript in parsejavascript.js (there is actually a bit more
                                  -  // shared code than I'd like), but it is quite a bit simpler.
                                  -  function parseXML(source) {
                                  -    var tokens = tokenizeXML(source), token;
                                  -    var cc = [base];
                                  -    var tokenNr = 0, indented = 0;
                                  -    var currentTag = null, context = null;
                                  -    var consume;
                                  -    
                                  -    function push(fs) {
                                  -      for (var i = fs.length - 1; i >= 0; i--)
                                  -        cc.push(fs[i]);
                                  -    }
                                  -    function cont() {
                                  -      push(arguments);
                                  -      consume = true;
                                  -    }
                                  -    function pass() {
                                  -      push(arguments);
                                  -      consume = false;
                                  -    }
                                  -
                                  -    function markErr() {
                                  -      token.style += " xml-error";
                                  -    }
                                  -    function expect(text) {
                                  -      return function(style, content) {
                                  -        if (content == text) cont();
                                  -        else {markErr(); cont(arguments.callee);}
                                  -      };
                                  -    }
                                  -
                                  -    function pushContext(tagname, startOfLine) {
                                  -      var noIndent = UseKludges.doNotIndent.hasOwnProperty(tagname) || (context && context.noIndent);
                                  -      context = {prev: context, name: tagname, indent: indented, startOfLine: startOfLine, noIndent: noIndent};
                                  -    }
                                  -    function popContext() {
                                  -      context = context.prev;
                                  -    }
                                  -    function computeIndentation(baseContext) {
                                  -      return function(nextChars, current) {
                                  -        var context = baseContext;
                                  -        if (context && context.noIndent)
                                  -          return current;
                                  -        if (alignCDATA && /<!\[CDATA\[/.test(nextChars))
                                  -          return 0;
                                  -        if (context && /^<\//.test(nextChars))
                                  -          context = context.prev;
                                  -        while (context && !context.startOfLine)
                                  -          context = context.prev;
                                  -        if (context)
                                  -          return context.indent + indentUnit;
                                  -        else
                                  -          return 0;
                                  -      };
                                  -    }
                                  -
                                  -    function base() {
                                  -      return pass(element, base);
                                  -    }
                                  -    var harmlessTokens = {"xml-text": true, "xml-entity": true, "xml-comment": true, "xml-processing": true, "xml-doctype": true};
                                  -    function element(style, content) {
                                  -      if (content == "<") cont(tagname, attributes, endtag(tokenNr == 1));
                                  -      else if (content == "</") cont(closetagname, expect(">"));
                                  -      else if (style == "xml-cdata") {
                                  -        if (!context || context.name != "!cdata") pushContext("!cdata");
                                  -        if (/\]\]>$/.test(content)) popContext();
                                  -        cont();
                                  -      }
                                  -      else if (harmlessTokens.hasOwnProperty(style)) cont();
                                  -      else {markErr(); cont();}
                                  -    }
                                  -    function tagname(style, content) {
                                  -      if (style == "xml-name") {
                                  -        currentTag = content.toLowerCase();
                                  -        token.style = "xml-tagname";
                                  -        cont();
                                  -      }
                                  -      else {
                                  -        currentTag = null;
                                  -        pass();
                                  -      }
                                  -    }
                                  -    function closetagname(style, content) {
                                  -      if (style == "xml-name") {
                                  -        token.style = "xml-tagname";
                                  -        if (context && content.toLowerCase() == context.name) popContext();
                                  -        else markErr();
                                  -      }
                                  -      cont();
                                  -    }
                                  -    function endtag(startOfLine) {
                                  -      return function(style, content) {
                                  -        if (content == "/>" || (content == ">" && UseKludges.autoSelfClosers.hasOwnProperty(currentTag))) cont();
                                  -        else if (content == ">") {pushContext(currentTag, startOfLine); cont();}
                                  -        else {markErr(); cont(arguments.callee);}
                                  -      };
                                  -    }
                                  -    function attributes(style) {
                                  -      if (style == "xml-name") {token.style = "xml-attname"; cont(attribute, attributes);}
                                  -      else pass();
                                  -    }
                                  -    function attribute(style, content) {
                                  -      if (content == "=") cont(value);
                                  -      else if (content == ">" || content == "/>") pass(endtag);
                                  -      else pass();
                                  -    }
                                  -    function value(style) {
                                  -      if (style == "xml-attribute") cont(value);
                                  -      else pass();
                                  -    }
                                  -
                                  -    return {
                                  -      indentation: function() {return indented;},
                                  -
                                  -      next: function(){
                                  -        token = tokens.next();
                                  -        if (token.style == "whitespace" && tokenNr == 0)
                                  -          indented = token.value.length;
                                  -        else
                                  -          tokenNr++;
                                  -        if (token.content == "\n") {
                                  -          indented = tokenNr = 0;
                                  -          token.indentation = computeIndentation(context);
                                  -        }
                                  -
                                  -        if (token.style == "whitespace" || token.type == "xml-comment")
                                  -          return token;
                                  -
                                  -        while(true){
                                  -          consume = false;
                                  -          cc.pop()(token.style, token.content);
                                  -          if (consume) return token;
                                  -        }
                                  -      },
                                  -
                                  -      copy: function(){
                                  -        var _cc = cc.concat([]), _tokenState = tokens.state, _context = context;
                                  -        var parser = this;
                                  -        
                                  -        return function(input){
                                  -          cc = _cc.concat([]);
                                  -          tokenNr = indented = 0;
                                  -          context = _context;
                                  -          tokens = tokenizeXML(input, _tokenState);
                                  -          return parser;
                                  -        };
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseXML,
                                  -    electricChars: "/",
                                  -    configure: function(config) {
                                  -      if (config.useHTMLKludges != null)
                                  -        UseKludges = config.useHTMLKludges ? Kludges : NoKludges;
                                  -      if (config.alignCDATA)
                                  -        alignCDATA = config.alignCDATA;
                                  -    }
                                  -  };
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/stringstream.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/stringstream.js
                                  deleted file mode 100644
                                  index b56e2f63..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/stringstream.js
                                  +++ /dev/null
                                  @@ -1,145 +0,0 @@
                                  -/* String streams are the things fed to parsers (which can feed them
                                  - * to a tokenizer if they want). They provide peek and next methods
                                  - * for looking at the current character (next 'consumes' this
                                  - * character, peek does not), and a get method for retrieving all the
                                  - * text that was consumed since the last time get was called.
                                  - *
                                  - * An easy mistake to make is to let a StopIteration exception finish
                                  - * the token stream while there are still characters pending in the
                                  - * string stream (hitting the end of the buffer while parsing a
                                  - * token). To make it easier to detect such errors, the stringstreams
                                  - * throw an exception when this happens.
                                  - */
                                  -
                                  -// Make a stringstream stream out of an iterator that returns strings.
                                  -// This is applied to the result of traverseDOM (see codemirror.js),
                                  -// and the resulting stream is fed to the parser.
                                  -var stringStream = function(source){
                                  -  // String that's currently being iterated over.
                                  -  var current = "";
                                  -  // Position in that string.
                                  -  var pos = 0;
                                  -  // Accumulator for strings that have been iterated over but not
                                  -  // get()-ed yet.
                                  -  var accum = "";
                                  -  // Make sure there are more characters ready, or throw
                                  -  // StopIteration.
                                  -  function ensureChars() {
                                  -    while (pos == current.length) {
                                  -      accum += current;
                                  -      current = ""; // In case source.next() throws
                                  -      pos = 0;
                                  -      try {current = source.next();}
                                  -      catch (e) {
                                  -        if (e != StopIteration) throw e;
                                  -        else return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  }
                                  -
                                  -  return {
                                  -    // peek: -> character
                                  -    // Return the next character in the stream.
                                  -    peek: function() {
                                  -      if (!ensureChars()) return null;
                                  -      return current.charAt(pos);
                                  -    },
                                  -    // next: -> character
                                  -    // Get the next character, throw StopIteration if at end, check
                                  -    // for unused content.
                                  -    next: function() {
                                  -      if (!ensureChars()) {
                                  -        if (accum.length > 0)
                                  -          throw "End of stringstream reached without emptying buffer ('" + accum + "').";
                                  -        else
                                  -          throw StopIteration;
                                  -      }
                                  -      return current.charAt(pos++);
                                  -    },
                                  -    // get(): -> string
                                  -    // Return the characters iterated over since the last call to
                                  -    // .get().
                                  -    get: function() {
                                  -      var temp = accum;
                                  -      accum = "";
                                  -      if (pos > 0){
                                  -        temp += current.slice(0, pos);
                                  -        current = current.slice(pos);
                                  -        pos = 0;
                                  -      }
                                  -      return temp;
                                  -    },
                                  -    // Push a string back into the stream.
                                  -    push: function(str) {
                                  -      current = current.slice(0, pos) + str + current.slice(pos);
                                  -    },
                                  -    lookAhead: function(str, consume, skipSpaces, caseInsensitive) {
                                  -      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
                                  -      str = cased(str);
                                  -      var found = false;
                                  -
                                  -      var _accum = accum, _pos = pos;
                                  -      if (skipSpaces) this.nextWhileMatches(/[\s\u00a0]/);
                                  -
                                  -      while (true) {
                                  -        var end = pos + str.length, left = current.length - pos;
                                  -        if (end <= current.length) {
                                  -          found = str == cased(current.slice(pos, end));
                                  -          pos = end;
                                  -          break;
                                  -        }
                                  -        else if (str.slice(0, left) == cased(current.slice(pos))) {
                                  -          accum += current; current = "";
                                  -          try {current = source.next();}
                                  -          catch (e) {break;}
                                  -          pos = 0;
                                  -          str = str.slice(left);
                                  -        }
                                  -        else {
                                  -          break;
                                  -        }
                                  -      }
                                  -
                                  -      if (!(found && consume)) {
                                  -        current = accum.slice(_accum.length) + current;
                                  -        pos = _pos;
                                  -        accum = _accum;
                                  -      }
                                  -
                                  -      return found;
                                  -    },
                                  -
                                  -    // Utils built on top of the above
                                  -    // more: -> boolean
                                  -    // Produce true if the stream isn't empty.
                                  -    more: function() {
                                  -      return this.peek() !== null;
                                  -    },
                                  -    applies: function(test) {
                                  -      var next = this.peek();
                                  -      return (next !== null && test(next));
                                  -    },
                                  -    nextWhile: function(test) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && test(next))
                                  -        this.next();
                                  -    },
                                  -    matches: function(re) {
                                  -      var next = this.peek();
                                  -      return (next !== null && re.test(next));
                                  -    },
                                  -    nextWhileMatches: function(re) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && re.test(next))
                                  -        this.next();
                                  -    },
                                  -    equals: function(ch) {
                                  -      return ch === this.peek();
                                  -    },
                                  -    endOfLine: function() {
                                  -      var next = this.peek();
                                  -      return next == null || next == "\n";
                                  -    }
                                  -  };
                                  -};
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenize.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenize.js
                                  deleted file mode 100644
                                  index 071970ce..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenize.js
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -// A framework for simple tokenizers. Takes care of newlines and
                                  -// white-space, and of getting the text from the source stream into
                                  -// the token object. A state is a function of two arguments -- a
                                  -// string stream and a setState function. The second can be used to
                                  -// change the tokenizer's state, and can be ignored for stateless
                                  -// tokenizers. This function should advance the stream over a token
                                  -// and return a string or object containing information about the next
                                  -// token, or null to pass and have the (new) state be called to finish
                                  -// the token. When a string is given, it is wrapped in a {style, type}
                                  -// object. In the resulting object, the characters consumed are stored
                                  -// under the content property. Any whitespace following them is also
                                  -// automatically consumed, and added to the value property. (Thus,
                                  -// content is the actual meaningful part of the token, while value
                                  -// contains all the text it spans.)
                                  -
                                  -function tokenizer(source, state) {
                                  -  // Newlines are always a separate token.
                                  -  function isWhiteSpace(ch) {
                                  -    // The messy regexp is because IE's regexp matcher is of the
                                  -    // opinion that non-breaking spaces are no whitespace.
                                  -    return ch != "\n" && /^[\s\u00a0]*$/.test(ch);
                                  -  }
                                  -
                                  -  var tokenizer = {
                                  -    state: state,
                                  -
                                  -    take: function(type) {
                                  -      if (typeof(type) == "string")
                                  -        type = {style: type, type: type};
                                  -
                                  -      type.content = (type.content || "") + source.get();
                                  -      if (!/\n$/.test(type.content))
                                  -        source.nextWhile(isWhiteSpace);
                                  -      type.value = type.content + source.get();
                                  -      return type;
                                  -    },
                                  -
                                  -    next: function () {
                                  -      if (!source.more()) throw StopIteration;
                                  -
                                  -      var type;
                                  -      if (source.equals("\n")) {
                                  -        source.next();
                                  -        return this.take("whitespace");
                                  -      }
                                  -      
                                  -      if (source.applies(isWhiteSpace))
                                  -        type = "whitespace";
                                  -      else
                                  -        while (!type)
                                  -          type = this.state(source, function(s) {tokenizer.state = s;});
                                  -
                                  -      return this.take(type);
                                  -    }
                                  -  };
                                  -  return tokenizer;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js
                                  deleted file mode 100644
                                  index 019136fc..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js
                                  +++ /dev/null
                                  @@ -1,174 +0,0 @@
                                  -/* Tokenizer for JavaScript code */
                                  -
                                  -var tokenizeJavaScript = (function() {
                                  -  // Advance the stream until the given character (not preceded by a
                                  -  // backslash) is encountered, or the end of the line is reached.
                                  -  function nextUntilUnescaped(source, end) {
                                  -    var escaped = false;
                                  -    while (!source.endOfLine()) {
                                  -      var next = source.next();
                                  -      if (next == end && !escaped)
                                  -        return false;
                                  -      escaped = !escaped && next == "\\";
                                  -    }
                                  -    return escaped;
                                  -  }
                                  -
                                  -  // A map of JavaScript's keywords. The a/b/c keyword distinction is
                                  -  // very rough, but it gives the parser enough information to parse
                                  -  // correct code correctly (we don't care that much how we parse
                                  -  // incorrect code). The style information included in these objects
                                  -  // is used by the highlighter to pick the correct CSS style for a
                                  -  // token.
                                  -  var keywords = function(){
                                  -    function result(type, style){
                                  -      return {type: type, style: "js-" + style};
                                  -    }
                                  -    // keywords that take a parenthised expression, and then a
                                  -    // statement (if)
                                  -    var keywordA = result("keyword a", "keyword");
                                  -    // keywords that take just a statement (else)
                                  -    var keywordB = result("keyword b", "keyword");
                                  -    // keywords that optionally take an expression, and form a
                                  -    // statement (return)
                                  -    var keywordC = result("keyword c", "keyword");
                                  -    var operator = result("operator", "keyword");
                                  -    var atom = result("atom", "atom");
                                  -    return {
                                  -      "if": keywordA, "while": keywordA, "with": keywordA,
                                  -      "else": keywordB, "do": keywordB, "try": keywordB, "finally": keywordB,
                                  -      "return": keywordC, "break": keywordC, "continue": keywordC, "new": keywordC, "delete": keywordC, "throw": keywordC,
                                  -      "in": operator, "typeof": operator, "instanceof": operator,
                                  -      "var": result("var", "keyword"), "function": result("function", "keyword"), "catch": result("catch", "keyword"),
                                  -      "for": result("for", "keyword"), "switch": result("switch", "keyword"),
                                  -      "case": result("case", "keyword"), "default": result("default", "keyword"),
                                  -      "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom
                                  -    };
                                  -  }();
                                  -
                                  -  // Some helper regexps
                                  -  var isOperatorChar = /[+\-*&%=<>!?|]/;
                                  -  var isHexDigit = /[0-9A-Fa-f]/;
                                  -  var isWordChar = /[\w\$_]/;
                                  -
                                  -  // Wrapper around jsToken that helps maintain parser state (whether
                                  -  // we are inside of a multi-line comment and whether the next token
                                  -  // could be a regular expression).
                                  -  function jsTokenState(inside, regexp) {
                                  -    return function(source, setState) {
                                  -      var newInside = inside;
                                  -      var type = jsToken(inside, regexp, source, function(c) {newInside = c;});
                                  -      var newRegexp = type.type == "operator" || type.type == "keyword c" || type.type.match(/^[\[{}\(,;:]$/);
                                  -      if (newRegexp != regexp || newInside != inside)
                                  -        setState(jsTokenState(newInside, newRegexp));
                                  -      return type;
                                  -    };
                                  -  }
                                  -
                                  -  // The token reader, intended to be used by the tokenizer from
                                  -  // tokenize.js (through jsTokenState). Advances the source stream
                                  -  // over a token, and returns an object containing the type and style
                                  -  // of that token.
                                  -  function jsToken(inside, regexp, source, setInside) {
                                  -    function readHexNumber(){
                                  -      source.next(); // skip the 'x'
                                  -      source.nextWhileMatches(isHexDigit);
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -
                                  -    function readNumber() {
                                  -      source.nextWhileMatches(/[0-9]/);
                                  -      if (source.equals(".")){
                                  -        source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      if (source.equals("e") || source.equals("E")){
                                  -        source.next();
                                  -        if (source.equals("-"))
                                  -          source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -    // Read a word, look it up in keywords. If not found, it is a
                                  -    // variable, otherwise it is a keyword of the type found.
                                  -    function readWord() {
                                  -      source.nextWhileMatches(isWordChar);
                                  -      var word = source.get();
                                  -      var known = keywords.hasOwnProperty(word) && keywords.propertyIsEnumerable(word) && keywords[word];
                                  -      return known ? {type: known.type, style: known.style, content: word} :
                                  -      {type: "variable", style: "js-variable", content: word};
                                  -    }
                                  -    function readRegexp() {
                                  -      nextUntilUnescaped(source, "/");
                                  -      source.nextWhileMatches(/[gi]/);
                                  -      return {type: "regexp", style: "js-string"};
                                  -    }
                                  -    // Mutli-line comments are tricky. We want to return the newlines
                                  -    // embedded in them as regular newline tokens, and then continue
                                  -    // returning a comment token for every line of the comment. So
                                  -    // some state has to be saved (inside) to indicate whether we are
                                  -    // inside a /* */ sequence.
                                  -    function readMultilineComment(start){
                                  -      var newInside = "/*";
                                  -      var maybeEnd = (start == "*");
                                  -      while (true) {
                                  -        if (source.endOfLine())
                                  -          break;
                                  -        var next = source.next();
                                  -        if (next == "/" && maybeEnd){
                                  -          newInside = null;
                                  -          break;
                                  -        }
                                  -        maybeEnd = (next == "*");
                                  -      }
                                  -      setInside(newInside);
                                  -      return {type: "comment", style: "js-comment"};
                                  -    }
                                  -    function readOperator() {
                                  -      source.nextWhileMatches(isOperatorChar);
                                  -      return {type: "operator", style: "js-operator"};
                                  -    }
                                  -    function readString(quote) {
                                  -      var endBackSlash = nextUntilUnescaped(source, quote);
                                  -      setInside(endBackSlash ? quote : null);
                                  -      return {type: "string", style: "js-string"};
                                  -    }
                                  -
                                  -    // Fetch the next token. Dispatches on first character in the
                                  -    // stream, or first two characters when the first is a slash.
                                  -    if (inside == "\"" || inside == "'")
                                  -      return readString(inside);
                                  -    var ch = source.next();
                                  -    if (inside == "/*")
                                  -      return readMultilineComment(ch);
                                  -    else if (ch == "\"" || ch == "'")
                                  -      return readString(ch);
                                  -    // with punctuation, the type of the token is the symbol itself
                                  -    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
                                  -      return {type: ch, style: "js-punctuation"};
                                  -    else if (ch == "0" && (source.equals("x") || source.equals("X")))
                                  -      return readHexNumber();
                                  -    else if (/[0-9]/.test(ch))
                                  -      return readNumber();
                                  -    else if (ch == "/"){
                                  -      if (source.equals("*"))
                                  -      { source.next(); return readMultilineComment(ch); }
                                  -      else if (source.equals("/"))
                                  -      { nextUntilUnescaped(source, null); return {type: "comment", style: "js-comment"};}
                                  -      else if (regexp)
                                  -        return readRegexp();
                                  -      else
                                  -        return readOperator();
                                  -    }
                                  -    else if (isOperatorChar.test(ch))
                                  -      return readOperator();
                                  -    else
                                  -      return readWord();
                                  -  }
                                  -
                                  -  // The external interface to the tokenizer.
                                  -  return function(source, startState) {
                                  -    return tokenizer(source, startState || jsTokenState(false, true));
                                  -  };
                                  -})();
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/codemirror/util.js b/branches/flexBox/content/firerainbow/chrome/content/codemirror/util.js
                                  deleted file mode 100644
                                  index c7021c24..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/codemirror/util.js
                                  +++ /dev/null
                                  @@ -1,130 +0,0 @@
                                  -/* A few useful utility functions. */
                                  -
                                  -// Capture a method on an object.
                                  -function method(obj, name) {
                                  -  return function() {obj[name].apply(obj, arguments);};
                                  -}
                                  -
                                  -// The value used to signal the end of a sequence in iterators.
                                  -var StopIteration = {toString: function() {return "StopIteration"}};
                                  -
                                  -// Apply a function to each element in a sequence.
                                  -function forEach(iter, f) {
                                  -  if (iter.next) {
                                  -    try {while (true) f(iter.next());}
                                  -    catch (e) {if (e != StopIteration) throw e;}
                                  -  }
                                  -  else {
                                  -    for (var i = 0; i < iter.length; i++)
                                  -      f(iter[i]);
                                  -  }
                                  -}
                                  -
                                  -// Map a function over a sequence, producing an array of results.
                                  -function map(iter, f) {
                                  -  var accum = [];
                                  -  forEach(iter, function(val) {accum.push(f(val));});
                                  -  return accum;
                                  -}
                                  -
                                  -// Create a predicate function that tests a string againsts a given
                                  -// regular expression. No longer used but might be used by 3rd party
                                  -// parsers.
                                  -function matcher(regexp){
                                  -  return function(value){return regexp.test(value);};
                                  -}
                                  -
                                  -// Test whether a DOM node has a certain CSS class. Much faster than
                                  -// the MochiKit equivalent, for some reason.
                                  -function hasClass(element, className){
                                  -  var classes = element.className;
                                  -  return classes && new RegExp("(^| )" + className + "($| )").test(classes);
                                  -}
                                  -
                                  -// Insert a DOM node after another node.
                                  -function insertAfter(newNode, oldNode) {
                                  -  var parent = oldNode.parentNode;
                                  -  parent.insertBefore(newNode, oldNode.nextSibling);
                                  -  return newNode;
                                  -}
                                  -
                                  -function removeElement(node) {
                                  -  if (node.parentNode)
                                  -    node.parentNode.removeChild(node);
                                  -}
                                  -
                                  -function clearElement(node) {
                                  -  while (node.firstChild)
                                  -    node.removeChild(node.firstChild);
                                  -}
                                  -
                                  -// Check whether a node is contained in another one.
                                  -function isAncestor(node, child) {
                                  -  while (child = child.parentNode) {
                                  -    if (node == child)
                                  -      return true;
                                  -  }
                                  -  return false;
                                  -}
                                  -
                                  -// The non-breaking space character.
                                  -var nbsp = "\u00a0";
                                  -var matching = {"{": "}", "[": "]", "(": ")",
                                  -                "}": "{", "]": "[", ")": "("};
                                  -
                                  -// Standardize a few unportable event properties.
                                  -function normalizeEvent(event) {
                                  -  if (!event.stopPropagation) {
                                  -    event.stopPropagation = function() {this.cancelBubble = true;};
                                  -    event.preventDefault = function() {this.returnValue = false;};
                                  -  }
                                  -  if (!event.stop) {
                                  -    event.stop = function() {
                                  -      this.stopPropagation();
                                  -      this.preventDefault();
                                  -    };
                                  -  }
                                  -
                                  -  if (event.type == "keypress") {
                                  -    event.code = (event.charCode == null) ? event.keyCode : event.charCode;
                                  -    event.character = String.fromCharCode(event.code);
                                  -  }
                                  -  return event;
                                  -}
                                  -
                                  -// Portably register event handlers.
                                  -function addEventHandler(node, type, handler, removeFunc) {
                                  -  function wrapHandler(event) {
                                  -    handler(normalizeEvent(event || window.event));
                                  -  }
                                  -  if (typeof node.addEventListener == "function") {
                                  -    node.addEventListener(type, wrapHandler, false);
                                  -    if (removeFunc) return function() {node.removeEventListener(type, wrapHandler, false);};
                                  -  }
                                  -  else {
                                  -    node.attachEvent("on" + type, wrapHandler);
                                  -    if (removeFunc) return function() {node.detachEvent("on" + type, wrapHandler);};
                                  -  }
                                  -}
                                  -
                                  -function nodeText(node) {
                                  -  return node.textContent || node.innerText || node.nodeValue || "";
                                  -}
                                  -
                                  -function nodeTop(node) {
                                  -  var top = 0;
                                  -  while (node.offsetParent) {
                                  -    top += node.offsetTop;
                                  -    node = node.offsetParent;
                                  -  }
                                  -  return top;
                                  -}
                                  -
                                  -function isBR(node) {
                                  -  var nn = node.nodeName;
                                  -  return nn == "BR" || nn == "br";
                                  -}
                                  -function isSpan(node) {
                                  -  var nn = node.nodeName;
                                  -  return nn == "SPAN" || nn == "span";
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/firerainbow-original.js b/branches/flexBox/content/firerainbow/chrome/content/firerainbow-original.js
                                  deleted file mode 100644
                                  index a43e8849..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/firerainbow-original.js
                                  +++ /dev/null
                                  @@ -1,685 +0,0 @@
                                  -FBL.ns(function() {
                                  -    with (FBL) {
                                  -        // some people reported that rainbow was initialised twice
                                  -        // see http://getsatisfaction.com/xrefresh/topics/too_many_recursions_problem_with_rainbow
                                  -        // this is a hack how to prevent it
                                  -        if (!FBL.rainbowInitialised) {
                                  -            FBL.rainbowInitialised = true;
                                  -            
                                  -            const MAX_LINE_LENGTH = 500;
                                  -
                                  -            const Cc = Components.classes;
                                  -            const Ci = Components.interfaces;
                                  -
                                  -            // test for feature added in r686 (http://code.google.com/p/fbug/source/detail?r=686)
                                  -            // note: previous rainbow did break firebug without this test
                                  -            var cssPanelAvailable = !!Firebug.CSSStyleSheetPanel;
                                  -            if (!cssPanelAvailable) {
                                  -                var consoleService = Cc['@mozilla.org/consoleservice;1'].getService(Components.interfaces.nsIConsoleService);
                                  -                consoleService.logStringMessage("FireRainbow requires Firebug 1.3+ (your have "+Firebug.getVersion()+").");
                                  -                consoleService.logStringMessage('Please update your Firebug extension to the latest version (http://getfirebug.com).');
                                  -            } else {
                                  -                const nsIPrefBranch = Ci.nsIPrefBranch;
                                  -                const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -
                                  -                const rainbowPrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -                const rainbowPrefs = rainbowPrefService.getService(nsIPrefBranch2);
                                  -
                                  -                const rainbowWebsite = "http://firerainbow.binaryage.com";
                                  -                const rainbowPrefDomain = "extensions.rainbow";
                                  -
                                  -                const currentCodeVersion = 2;
                                  -
                                  -                if (Firebug.TraceModule) {
                                  -                    Firebug.TraceModule.DBG_FIRERAINBOW = false;
                                  -                    var type = rainbowPrefs.getPrefType('extensions.firebug.DBG_FIRERAINBOW');
                                  -                    if (type!=nsIPrefBranch.PREF_BOOL) try {
                                  -                        rainbowPrefs.setBoolPref('extensions.firebug.DBG_FIRERAINBOW', false);
                                  -                    } catch(e) {}
                                  -                }
                                  -
                                  -                var dbg = function() {
                                  -                    if (FBTrace && FBTrace.DBG_FIRERAINBOW) { 
                                  -                        FBTrace.sysout.apply(this, arguments);
                                  -                    }
                                  -                };
                                  -                
                                  -                var buildToken = function(style, val) {
                                  -                    return '<span class="' + style + '">' + escapeForSourceLine(val) + '</span>';
                                  -                };
                                  -                
                                  -                var processTokenStream = function(stream) {
                                  -                    // stream is array of pairs
                                  -                    // apply coloring to the line
                                  -                    var pieces = [];
                                  -                    for(var i=0; i<stream.length; i++) {
                                  -                        var token = stream[i];
                                  -                        pieces.push(buildToken(token[0], token[1]));
                                  -                    }
                                  -                    
                                  -                    var output = pieces.join('').replace(/\n/g, '');
                                  -                    // if the pref says so, replace tabs by corresponding number of spaces.
                                  -                    if (Firebug.replaceTabs > 0) {
                                  -                        var space = new Array(Firebug.replaceTabs + 1).join(" ");
                                  -                        output = output.replace(/\t/g, space);
                                  -                    }
                                  -                    
                                  -                    return output;
                                  -                };
                                  -
                                  -                ////////////////////////////////////////////////////////////////////////
                                  -                // Firebug.FireRainbowExtension
                                  -                //
                                  -                Firebug.FireRainbowExtension = extend(Firebug.Extension, {
                                  -                    // this is called whenever script viewport is about to be rendered
                                  -                    onApplyDecorator: function(sourceBox) {
                                  -                        // patch sourcebox render functionality
                                  -                        if (!sourceBox.rainbowPatched) {
                                  -                            sourceBox.rainbowPatched = true;
                                  -                            
                                  -                            if (sourceBox.getLineAsHTML) { // Firebug 1.3 and 1.4 path
                                  -                                // 1. I use Firebug.Extension.onApplyDecorator mechanism to get called
                                  -                                // for every sourceBox which is about be displayed
                                  -                                // 2. first time a source box is seen, I patch sourceBox.getLineAsHTML
                                  -                                // with my "slightly smarter" version
                                  -                                // 3. for given sourceBox I trigger "daemon process", which starts
                                  -                                // coloring off-screen buffer of all lines (not just visible ones) =>
                                  -                                // sourceBox.colorizedLines
                                  -                                // 
                                  -                                // Every time Firebug needs to render lines, it calls getLineAsHTML on
                                  -                                // sourceBox, so it calls my version of that function and I return
                                  -                                // colorized line in case I have it ready.
                                  -                                // 
                                  -                                // Note: In the case daemon just crossed actual viewport, I'm trying to
                                  -                                // force source panel to refresh it's content calling
                                  -                                // scriptPanel.reView(sourceBox);.
                                  -                                // This is tricky, because reView has implemented several layers of
                                  -                                // caching, continuously being added with newer versions, which makes my
                                  -                                // life harder :-)
                                  -                                // If anyone knows better a function to call, I would be happy to make
                                  -                                // this more robust.
                                  -                                if (!sourceBox._rainbowOriginalGetLineAsHTML) {
                                  -                                    sourceBox._rainbowOriginalGetLineAsHTML = sourceBox.getLineAsHTML;
                                  -                                    sourceBox.getLineAsHTML = function(lineNo) {
                                  -                                        if (this.colorizedLines) {
                                  -                                            var line = this.colorizedLines[lineNo];
                                  -                                            if (line!==undefined) return line;
                                  -                                        }
                                  -                                        return this._rainbowOriginalGetLineAsHTML(lineNo);
                                  -                                    };
                                  -                                }
                                  -                            }
                                  -                            
                                  -                            if (sourceBox.decorator) { // Firebug 1.5 path
                                  -                                // here I patch getLineHTML and using similar technique like for Firebug 1.3 and 1.4
                                  -                                // when firebug needs to render lines it asks getLineHTML to provide HTML version of every line
                                  -                                // this is quite fast and reasonably smooth when scrolling
                                  -                                
                                  -                                // Note: In Firebug 1.5 call to scriptPanel.reView(sourceBox, true) invalidates cache, so it is guaranteed to redraw the view
                                  -                                if (!sourceBox.decorator._rainbowOriginalGetLineHTML) {
                                  -                                    sourceBox.decorator._rainbowOriginalGetLineHTML = sourceBox.decorator.getLineHTML;
                                  -                                    sourceBox.decorator.getLineHTML = function(sourceBox, lineNo) {
                                  -                                        if (sourceBox.colorizedLines) {
                                  -                                            var line = sourceBox.colorizedLines[lineNo-1];
                                  -                                            if (line!==undefined) return line;
                                  -                                        }
                                  -                                        return this._rainbowOriginalGetLineHTML(sourceBox, lineNo);
                                  -                                    };
                                  -                                }
                                  -                            }
                                  -                        }
                                  -                        // prevent recursion in case we call reView
                                  -                        if (sourceBox.preventRainbowRecursion) {
                                  -                            sourceBox.preventRainbowRecursion = undefined;
                                  -                            return;
                                  -                        }
                                  -                        // start coloring (if not already in progress or done)
                                  -                        Firebug.FireRainbowModule.colorizeSourceBox(sourceBox);
                                  -                    }
                                  -                });
                                  -                
                                  -                ////////////////////////////////////////////////////////////////////////
                                  -                // Firebug.FireRainbowModule
                                  -                //
                                  -                Firebug.FireRainbowModule = extend(Firebug.Module, {
                                  -                    valid: false,
                                  -                    pings: 0,
                                  -                    styleLibrary: {},
                                  -                    defaultTheme: ".panelNode-script{background-color:#FFFFFF;color:black;font-family:Monaco,Monospace,Courier New !important;font-size:11px;} .sourceRow.hovered{background-color:#EEEEEE;} .sourceLine{background:#EEEEEE none no-repeat scroll 2px 0;border-bottom:1px solid #EEEEEE;border-right:1px solid #CCCCCC;color:#888888;} .sourceLine:hover{text-decoration:none;} .scriptTooltip{background:LightYellow none repeat scroll 0 0;border:1px solid #CBE087;color:#000000;} .sourceRow[exeline=\"true\"]{background-color:lightgoldenrodyellow;outline-color:#D9D9B6;outline-style:solid;outline-width:1px;} .xml-text{color:black;} .whitespace{color:black;} .xml-punctuation{color:gray;} .xml-tagname{color:blue;} .xml-attname{color:darkred;} .xml-attribute{color:darkgreen;} .css-at{color:darkred;} .css-string{color:red;} .css-punctuation{color:midnightblue;} .js-keyword{color:blue;} .js-variable{color:black;} .js-operator{color:black;} .js-punctuation{color:darkBlue;} .js-variabledef{color:darkslategray;} .js-localvariable{color:darkslateBlue;} .js-property{color:teal;} .js-string{color:darkgreen;} .js-atom{color:saddleBrown;} .xml-comment{color:gray;} .css-identifier{color:midnightBlue;} .css-select-op{color:cadetblue;} .css-unit{color:orangered;} .css-value{color:black;} .css-colorcode{color:magenta;} .js-comment{color:gray;} .js-regexp{color:magenta;} .xml-entity{color:darkgoldenrod;} .xml-error{color:orangered;} .css-comment{color:gray;}",
                                  -
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initialize: function() {
                                  -                        return Firebug.Module.initialize.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    showPanel: function(browser, panel) {
                                  -                        if (!this.valid) return;
                                  -                        dbg("Rainbow: showPanel", panel);
                                  -                        var isScriptPanel = panel && panel.name == "script";
                                  -                        this.actualScriptPanel = isScriptPanel?panel:undefined;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initContext: function(context) {
                                  -                        dbg("Rainbow: initContext", context);
                                  -                        Firebug.Module.initContext.apply(this, arguments);
                                  -                        this.hookPanel(context);
                                  -                        this.valid = true;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    reattachContext: function(browser, context) {
                                  -                        Firebug.Module.reattachContext.apply(this, arguments);
                                  -                        this.hookPanel(context);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // convert old code to be compatible with current rainbow
                                  -                    convertOldCode: function(code, version) {
                                  -                        switch (version) {
                                  -                            case 1: return code.replace(/\.(\w+)\s*\{/g, ".js-$1 {"); // conversion for mixed html coloring
                                  -                        }
                                  -                        return code;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getCodeVersion: function(code) {
                                  -                        var vc = code.match(/\/\* version:(.*) \*\//);
                                  -                        if (!vc) return 1;
                                  -                        return parseInt(vc[1], 10);
                                  -                    },
                                  -                    colorizeSourceBox: function(sourceBox) {
                                  -                        dbg("Rainbow: colorizeSourceBox", sourceBox);
                                  -                        this.pingDaemon(sourceBox);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    hookPanel: function(context) {
                                  -                        dbg("Rainbow: hookPanel", context);
                                  -                        var chrome = context ? context.chrome : FirebugChrome;
                                  -                        var code = this.getPref('coloring');
                                  -                        var version = this.getCodeVersion(code);
                                  -                        if (version<currentCodeVersion) {
                                  -                            // backward compatibility with old rainbow versions
                                  -                            code = this.convertOldCode(code, version);
                                  -                            this.storeCode(code);
                                  -                        }
                                  -                        this.panelBar1 = chrome.$("fbPanelBar1");
                                  -                        this.initSyntaxColoring(this.panelBar1);
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    storeCode: function(code) {
                                  -                        code = "/* version:"+currentCodeVersion+" */\n"+code;
                                  -                        this.setPref('coloring', code);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemon: function(sourceBox) {
                                  -                        dbg("Rainbow: startDaemon", sourceBox);
                                  -                        var webWorkersEnabled = !this.getPref('disableWebWorkers', false);
                                  -                        if (webWorkersEnabled && typeof Worker !== "undefined") {
                                  -                            this.startDaemonAsWorkerThread(sourceBox);
                                  -                        } else {
                                  -                            this.startDaemonOnUIThread(sourceBox);
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    stopDaemon: function() {
                                  -                        dbg("Rainbow: stopDaemon");
                                  -                        if (this.parserWorker) {
                                  -                            dbg("Rainbow: stopDaemonAsWorkerThread");
                                  -                            this.parserWorker.terminate();
                                  -                            this.parserWorker = undefined;
                                  -                        }
                                  -                        if (this.daemonTimer) {
                                  -                            dbg("Rainbow: stopDaemonOnUIThread");
                                  -                            clearInterval(this.daemonTimer);
                                  -                            this.daemonTimer = undefined;
                                  -                            this.currentSourceBox = undefined;
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemonAsWorkerThread: function(sourceBox) {
                                  -                        // daemon is here to perform colorization in background
                                  -                        // this is origianl daemon rewrite using web workers
                                  -                        if (this.currentSourceBox===sourceBox) return;
                                  -
                                  -                        this.stopDaemon(); // never let run two or more daemons concruently!
                                  -
                                  -                        // find active source box - here we will keep daemon state (parser state)
                                  -                        if (!sourceBox) return;
                                  -                        if (!sourceBox.lines) return;
                                  -                        if (sourceBox.colorized) return; // already colorized
                                  -                        
                                  -                        dbg("Rainbow: startDaemonAsWorkerThread", sourceBox);
                                  -                        
                                  -                        this.currentSourceBox = sourceBox;
                                  -                        if (sourceBox.lineToBeColorized==undefined) sourceBox.lineToBeColorized = 0;
                                  -                        if (!sourceBox.colorizedLines) sourceBox.colorizedLines = [];
                                  -                        
                                  -                        var refresh = function() {
                                  -                            // do review to be sure actual view gets finaly colorized
                                  -                            if (that.actualScriptPanel) {
                                  -                                sourceBox.preventRainbowRecursion = true;
                                  -                                dbg("Rainbow: reView!", sourceBox);
                                  -                                that.actualScriptPanel.lastScrollTop = that.actualScriptPanel.lastScrollTop || 0;
                                  -                                that.actualScriptPanel.lastScrollTop -= 1; // fight reView's "reView no change to scrollTop" optimization
                                  -                                sourceBox.firstViewableLine = -1; // overcome another layer of reView optimization added in Firebug 1.4
                                  -                                that.actualScriptPanel.reView(sourceBox, true);
                                  -                            }
                                  -                        };
                                  -                        
                                  -                        var that = this;
                                  -                        var worker = new Worker('chrome://firerainbow/content/worker.js');
                                  -                        worker.onmessage = function(e) {
                                  -                            dbg("Rainbow: got worker message "+e.data.msg, e.data);
                                  -                            switch (e.data.msg) {
                                  -                                case 'progress':
                                  -                                    sourceBox.colorizedLines[e.data.line] = processTokenStream(e.data.stream);
                                  -                                    if (e.data.line==sourceBox.lastViewableLine) {
                                  -                                        // just crossed actual view, force refresh!
                                  -                                        refresh();
                                  -                                    }
                                  -                                    break;
                                  -                                case 'done': 
                                  -                                    that.parserWorker = undefined;
                                  -                                    sourceBox.colorized = true;
                                  -                                    that.styleLibrary = e.data.styleLibrary;
                                  -                                    refresh();
                                  -                                    break;
                                  -                            }
                                  -                        };
                                  -                        worker.onerror = function(e) {
                                  -                            dbg("Rainbow: worker error", e);
                                  -                            // stop daemon in this exceptional case
                                  -                            that.stopDaemon();
                                  -                            sourceBox.colorized = true;
                                  -                            sourceBox.colorizationFailed = true;
                                  -                            return;
                                  -                        };
                                  -                        worker.postMessage({
                                  -                            command: 'run',
                                  -                            lines: sourceBox.lines
                                  -                        });
                                  -                        this.parserWorker = worker;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemonOnUIThread: function(sourceBox) {
                                  -                        // daemon is here to perform colorization in background
                                  -                        // the goal is not to block Firebug functionality and don't hog CPU for too long
                                  -                        // daemonInterval and tokensPerCall properties define how intensive this background process should be
                                  -                        if (this.currentSourceBox===sourceBox) return;
                                  -
                                  -                        this.stopDaemon(); // never let run two or more daemons concruently!
                                  -
                                  -                        // find active source box - here we will keep daemon state (parser state)
                                  -                        if (!sourceBox) return;
                                  -                        if (!sourceBox.lines) return;
                                  -                        if (sourceBox.colorized) return; // already colorized
                                  -
                                  -                        dbg("Rainbow: startDaemonOnUIThread", sourceBox);
                                  -                        var that = this;
                                  -                        
                                  -                        this.currentSourceBox = sourceBox;
                                  -                        if (sourceBox.lineToBeColorized==undefined) sourceBox.lineToBeColorized = 0;
                                  -                        if (!sourceBox.colorizedLines) sourceBox.colorizedLines = [];
                                  -
                                  -                        // init daemon state
                                  -                        var nextLine = null;
                                  -
                                  -                        if (!sourceBox.parser) {
                                  -                            var firstLine = "";
                                  -                            var lineNo = 0;
                                  -                            while (lineNo<sourceBox.lines.length) {
                                  -                                firstLine = sourceBox.lines[lineNo];
                                  -                                firstLine = firstLine.replace(/^\s*|\s*$/g,"");
                                  -                                if (firstLine!="") break;
                                  -                                lineNo++;
                                  -                            }
                                  -                            // determine what parser to use
                                  -                            var parser = codemirror.JSParser;
                                  -                            // use HTML mixed parser if you encounter these substrings on first line
                                  -                            if (firstLine.indexOf('<!DOCTYPE')!=-1 || firstLine.indexOf("<html")!=-1 || 
                                  -                                firstLine.indexOf("<body")!=-1 || firstLine.indexOf("<head")!=-1) parser = codemirror.HTMLMixedParser;
                                  -                            sourceBox.parser = parser.make(codemirror.stringStream({
                                  -                                next: function() {
                                  -                                    if (nextLine===null) throw codemirror.StopIteration;
                                  -                                    var result = nextLine;
                                  -                                    nextLine = null;
                                  -                                    return result;
                                  -                                }
                                  -                            }));
                                  -                        }
                                  -
                                  -                        var tokensPerCall = this.getPref('tokensPerCall', 500);
                                  -                        var daemonInterval = this.getPref('daemonInterval', 100);
                                  -                        
                                  -                        var refresh = function() {
                                  -                            // do review to be sure actual view gets finaly colorized
                                  -                            if (that.actualScriptPanel) {
                                  -                                sourceBox.preventRainbowRecursion = true;
                                  -                                dbg("Rainbow: reView!", sourceBox);
                                  -                                that.actualScriptPanel.lastScrollTop = that.actualScriptPanel.lastScrollTop || 0;
                                  -                                that.actualScriptPanel.lastScrollTop -= 1; // fight reView's "reView no change to scrollTop" optimization
                                  -                                sourceBox.firstViewableLine = -1; // overcome another layer of reView optimization added in Firebug 1.4
                                  -                                that.actualScriptPanel.reView(sourceBox, true);
                                  -                            }
                                  -                        };
                                  -
                                  -                        var finish = function() {
                                  -                            refresh();
                                  -                            that.stopDaemon();
                                  -                            sourceBox.colorized = true;
                                  -                            // free up memory
                                  -                            sourceBox.parser = undefined;
                                  -                        };
                                  -
                                  -                        // run daemon
                                  -                        this.daemonTimer = setInterval(
                                  -                            function() {
                                  -                                try {
                                  -                                    var tokenQuota = tokensPerCall;
                                  -                                    var startLine = sourceBox.lineToBeColorized;
                                  -                                    while (true) {
                                  -                                        if (!sourceBox.hasLine) {
                                  -                                            // finish if no more lines
                                  -                                            if (sourceBox.lineToBeColorized >= sourceBox.lines.length) {
                                  -                                                return finish();
                                  -                                            }
                                  -                                            
                                  -                                            // extract line code from node
                                  -                                            // note: \n is important to simulate multi line text in stream (for example multi-line comments depend on this)
                                  -                                            nextLine = sourceBox.lines[sourceBox.lineToBeColorized]+"\n";
                                  -
                                  -                                            sourceBox.parsedLine = [];
                                  -                                            sourceBox.hasLine = true;
                                  -                                        }
                                  -                                        
                                  -                                        codemirror.forEach(sourceBox.parser,
                                  -                                            function(token) {
                                  -                                                // colorize token
                                  -                                                var val = token.value;
                                  -                                                sourceBox.parsedLine.push([token.style, val]);
                                  -                                                that.styleLibrary[token.style] = true;
                                  -                                                if (--tokenQuota==0) {
                                  -                                                    throw StopIteration;
                                  -                                                }
                                  -                                            }
                                  -                                        );
                                  -                                        
                                  -                                        if (!tokenQuota) {
                                  -                                            return;
                                  -                                        }
                                  -                                    
                                  -                                        sourceBox.colorizedLines.push(processTokenStream(sourceBox.parsedLine));
                                  -
                                  -                                        if (sourceBox.lineToBeColorized==sourceBox.lastViewableLine) {
                                  -                                            // just crossed actual view, force refresh!
                                  -                                            refresh();
                                  -                                            startLine = null;
                                  -                                        }
                                  -    
                                  -                                        // move for next line
                                  -                                        sourceBox.lineToBeColorized++;
                                  -                                        sourceBox.hasLine = false;
                                  -                                    }
                                  -                                } catch (ex) {
                                  -                                    dbg("Rainbow: exception", ex);
                                  -                                    // stop daemon in this exceptional case
                                  -                                    that.stopDaemon();
                                  -                                    sourceBox.colorized = true;
                                  -                                    sourceBox.colorizationFailed = true;
                                  -                                    // free up memory
                                  -                                    sourceBox.parser = undefined;
                                  -                                    return;
                                  -                                }
                                  -                            },
                                  -                        daemonInterval);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    pingDaemon: function(sourceBox) {
                                  -                        if (!this.valid) return;
                                  -                        
                                  -                        // trivial implementation of buffered deferred triggering of daemon
                                  -                        this.pings++;
                                  -                        var pingMarker = this.pings;
                                  -                        var that = this;
                                  -                        setTimeout(function(){
                                  -                            if (that.pings!=pingMarker) return;
                                  -                            that.startDaemon(sourceBox);
                                  -                        }, 200);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // initializes syntax coloring helpers for panel
                                  -                    initSyntaxColoring: function(panelBar) {
                                  -                        // here we append <style id='rainbow-style-sheet' type='text/css'>/* Syntax coloring */</style> into head element
                                  -                        // this style element we will use to apply coloring rules to all script boxes in the panel
                                  -                        if (this.lookupStyleElement(panelBar)) return; // already done
                                  -
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -
                                  -                        var styleElement = doc.createElement("style");
                                  -                        styleElement.setAttribute("id", "rainbow-style-sheet");
                                  -                        styleElement.setAttribute("type", "text/css");
                                  -                        styleElement.appendChild(doc.createTextNode('/* Syntax coloring */'));
                                  -
                                  -                        var headElement;
                                  -                        var headElementList = doc.getElementsByTagName("head");
                                  -                        if (headElementList.length) headElement = headElementList[0]; else headElement = doc.documentElement;
                                  -                        headElement.appendChild(styleElement);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // returns our rainbow-style-sheet element from given panel
                                  -                    lookupStyleElement: function(panelBar) {
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -                        var styleElement = doc.getElementById('rainbow-style-sheet');
                                  -                        return styleElement;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // applies new coloring rules to given panel
                                  -                    applySyntaxColoring: function(code, panelBar) {
                                  -                        var styleElement = this.lookupStyleElement(panelBar);
                                  -                        if (!styleElement) return;
                                  -                        styleElement.innerHTML = '';
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -                        styleElement.appendChild(doc.createTextNode(code));
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // serializes CSS rules and stores them into coloring property (save)
                                  -                    saveSyntaxColoring: function(rules) {
                                  -                        var code = rules;
                                  -                        if (typeof code != 'string') {
                                  -                            var s = [];
                                  -                            for (var i=0; i<rules.length; i++) {
                                  -                                var rule = rules[i];
                                  -                                s.push(rule.selector);
                                  -                                s.push('{');
                                  -                                for (var j=0; j<rule.props.length; j++) {
                                  -                                    var prop = rule.props[j];
                                  -                                    if (prop.disabled) continue;
                                  -                                    s.push(prop.name);
                                  -                                    s.push(':');
                                  -                                    s.push(prop.value);
                                  -                                    if (prop.important) s.push(' !important');
                                  -                                    s.push(';');
                                  -                                }
                                  -                                s.push('}');
                                  -                            }
                                  -                            code = s.join('');
                                  -                        }
                                  -                        this.storeCode(code);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // opens dialog to import color theme (color theme is just a piece of CSS)
                                  -                    importTheme: function() {
                                  -                        var params = {
                                  -                            out:null
                                  -                        };
                                  -                        window.openDialog("chrome://firerainbow/content/import.xul", "", "chrome, dialog, modal, resizable=yes", params).focus();
                                  -                        if (params.out) {
                                  -                            var code = params.out.code;
                                  -                            this.applySyntaxColoring(code, this.panelBar1);
                                  -                            this.saveSyntaxColoring(code);
                                  -                            this.invalidatePanels();
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    generateCodeFromLibrary: function() {
                                  -                        var niceColors = ["red", "blue", "magenta", "brown", "black", 
                                  -                                          "darkgreen", "blueviolet", "cadetblue", "crimson", "darkgoldenrod",
                                  -                                          "darkgrey", "darkslateblue", "firebrick", "midnightblue", "orangered", "navy"];
                                  -                        var code = ".panelNode-script { font-family: Monaco, Monospace, Courier New !important; font-size: 11px; background-color: #fff; color: black; }";
                                  -                        code += " .sourceRow.hovered { background-color: #EEEEEE; }";
                                  -                        code += " .sourceLine { border-bottom: 1px solid #EEEEEE; border-right: 1px solid #CCCCCC; background: #EEEEEE no-repeat 2px 0px; color: #888888; }";
                                  -                        code += " .sourceLine:hover { text-decoration: none; }";
                                  -                        code += " .scriptTooltip { border: 1px solid #CBE087; background: LightYellow; color: #000000; }";
                                  -                        code += " .sourceRow[exeLine=\"true\"] { outline: 1px solid #D9D9B6; background-color: lightgoldenrodyellow; }";
                                  -
                                  -                        for (var x in this.styleLibrary) {
                                  -                            if (this.styleLibrary.hasOwnProperty(x)) {
                                  -                                var color = niceColors[Math.floor(Math.random()*niceColors.length)];
                                  -                                code += " ."+x+" { color: "+color+"; }";
                                  -                            }
                                  -                        }
                                  -                        return code;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // generates template color theme based on visited scripts
                                  -                    randomizeTheme: function() {
                                  -                        var code = this.generateCodeFromLibrary();
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                        this.saveSyntaxColoring(code);
                                  -                        this.invalidatePanels();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // resets to default rainbow coloring theme
                                  -                    resetToDefaultTheme: function() {
                                  -                        var code = this.defaultTheme;
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                        this.saveSyntaxColoring(code);
                                  -                        this.invalidatePanels();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // opens rainbow website in a new tab
                                  -                    visitWebsite: function() {
                                  -                        openNewTab(rainbowWebsite);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getPref: function(name, def) {
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -
                                  -                        var type = rainbowPrefs.getPrefType(prefName);
                                  -                        if (type == nsIPrefBranch.PREF_STRING)
                                  -                            return rainbowPrefs.getCharPref(prefName);
                                  -                        else if (type == nsIPrefBranch.PREF_INT)
                                  -                            return rainbowPrefs.getIntPref(prefName);
                                  -                        else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                            return rainbowPrefs.getBoolPref(prefName);
                                  -                        return def;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    setPref: function(name, value) {
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -
                                  -                        var type = rainbowPrefs.getPrefType(prefName);
                                  -                        if (type == nsIPrefBranch.PREF_STRING)
                                  -                            rainbowPrefs.setCharPref(prefName, value);
                                  -                        else if (type == nsIPrefBranch.PREF_INT)
                                  -                            rainbowPrefs.setIntPref(prefName, value);
                                  -                        else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                            rainbowPrefs.setBoolPref(prefName, value);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    clearPref: function(name) {
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -                        return rainbowPrefs.clearUserPref(prefName);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    invalidatePanels: function() {
                                  -                        for (var i = 0; i < TabWatcher.contexts.length; ++i) {
                                  -                            var panel = TabWatcher.contexts[i].getPanel("script", true);
                                  -                            if (!panel) continue;
                                  -                            panel.context.invalidatePanels("rainbow");
                                  -                            panel.refresh();
                                  -                        }
                                  -                    }
                                  -                });
                                  -
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -
                                  -                Firebug.FireRainbowSyntaxColoringEditorPanel = function() {};
                                  -                Firebug.FireRainbowSyntaxColoringEditorPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,{
                                  -                    name: "rainbow",
                                  -                    title: "Colors",
                                  -                    parentPanel: "script",
                                  -                    order: 1000,
                                  -
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initialize: function() {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    destroy: function(state) {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.destroy.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    lookupStyleSheet: function(browser) {
                                  -                        var doc = browser.contentDocument;
                                  -                        var styleElement = doc.getElementById('rainbow-style-sheet');
                                  -                        if (!styleElement) return;
                                  -                        return styleElement.sheet;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    markChange: function() {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.markChange.apply(this, arguments);
                                  -                        var that = this;
                                  -                        setTimeout(function () {
                                  -                            var browser = that.context.chrome.getPanelBrowser(that.parentPanel);
                                  -                            var sheet = that.lookupStyleSheet(browser);
                                  -                            if (!sheet) return;
                                  -                            var rules = that.getStyleSheetRules(that.context, sheet);
                                  -                            Firebug.FireRainbowModule.saveSyntaxColoring(rules);
                                  -                        }, 1000);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    refresh: function() {
                                  -                        this.show();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    show: function() {
                                  -                        var browser = this.context.chrome.getPanelBrowser(this.parentPanel);
                                  -                        var sheet = this.lookupStyleSheet(browser);
                                  -                        if (!sheet) return;
                                  -                        this.updateLocation(sheet);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getOptionsMenuItems: function() {
                                  -                        return [
                                  -                            {
                                  -                                label: 'Import Color Theme ...',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.importTheme, Firebug.FireRainbowModule)
                                  -                            },{
                                  -                                label: 'Randomize Color Theme',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.randomizeTheme, Firebug.FireRainbowModule)
                                  -                            },{
                                  -                                label: 'Reset to default Color Theme',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.resetToDefaultTheme, Firebug.FireRainbowModule)
                                  -                            },'-',{
                                  -                                label: 'Visit FireRainbow Website ...',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.visitWebsite, Firebug.FireRainbowModule)
                                  -                            }
                                  -                        ];
                                  -                    }
                                  -                });
                                  -
                                  -                Firebug.registerModule(Firebug.FireRainbowModule);
                                  -                Firebug.registerExtension(Firebug.FireRainbowExtension);
                                  -                Firebug.registerPanel(Firebug.FireRainbowSyntaxColoringEditorPanel);
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/firerainbow.js b/branches/flexBox/content/firerainbow/chrome/content/firerainbow.js
                                  deleted file mode 100644
                                  index 46906d7c..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/firerainbow.js
                                  +++ /dev/null
                                  @@ -1,746 +0,0 @@
                                  -FBL.ns(function() {
                                  -    with (FBL) {
                                  -    
                                  -Firebug.uiListeners = [];
                                  -var extensions = [];
                                  -append(Firebug, {
                                  -    registerExtension: function()  // TODO remove
                                  -    {
                                  -        extensions.push.apply(extensions, arguments);
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            TabWatcher.addListener(arguments[i]);
                                  -
                                  -        for (var j = 0; j < arguments.length; j++)
                                  -            Firebug.uiListeners.push(arguments[j]);
                                  -    },
                                  -
                                  -    unregisterExtension: function()  // TODO remove
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            TabWatcher.removeListener(arguments[i]);
                                  -            remove(Firebug.uiListeners, arguments[i]);
                                  -            remove(extensions, arguments[i])
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -        // some people reported that rainbow was initialised twice
                                  -        // see http://getsatisfaction.com/xrefresh/topics/too_many_recursions_problem_with_rainbow
                                  -        // this is a hack how to prevent it
                                  -        if (!FBL.rainbowInitialised) {
                                  -            FBL.rainbowInitialised = true;
                                  -            
                                  -            var rainbowPrefService = {getService:function(){}};
                                  -            var Components = {};
                                  -            
                                  -            var MAX_LINE_LENGTH = 500;
                                  -
                                  -            var Cc = {};
                                  -            var Ci = {};
                                  -
                                  -            // test for feature added in r686 (http://code.google.com/p/fbug/source/detail?r=686)
                                  -            // note: previous rainbow did break firebug without this test
                                  -            var cssPanelAvailable = !!Firebug.CSSStyleSheetPanel;
                                  -            if (!cssPanelAvailable) {
                                  -                var consoleService = Cc['@mozilla.org/consoleservice;1'].getService(Components.interfaces.nsIConsoleService);
                                  -                consoleService.logStringMessage("FireRainbow requires Firebug 1.3+ (your have "+Firebug.getVersion()+").");
                                  -                consoleService.logStringMessage('Please update your Firebug extension to the latest version (http://getfirebug.com).');
                                  -            } else {
                                  -//                 const nsIPrefBranch = Ci.nsIPrefBranch;
                                  -//                 const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -// 
                                  -//                 const rainbowPrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -//                 const rainbowPrefs = rainbowPrefService.getService(nsIPrefBranch2);
                                  -// 
                                  -//                 const rainbowWebsite = "http://firerainbow.binaryage.com";
                                  -//                 const rainbowPrefDomain = "extensions.rainbow";
                                  -
                                  -                var currentCodeVersion = 2;
                                  -
                                  -                if (Firebug.TraceModule) {
                                  -                    Firebug.TraceModule.DBG_FIRERAINBOW = false;
                                  -                    var type = rainbowPrefs.getPrefType('extensions.firebug.DBG_FIRERAINBOW');
                                  -                    if (type!=nsIPrefBranch.PREF_BOOL) try {
                                  -                        rainbowPrefs.setBoolPref('extensions.firebug.DBG_FIRERAINBOW', false);
                                  -                    } catch(e) {}
                                  -                }
                                  -
                                  -                var dbg = function() {
                                  -                    if (FBTrace && FBTrace.DBG_FIRERAINBOW) { 
                                  -                        FBTrace.sysout.apply(this, arguments);
                                  -                    }
                                  -                };
                                  -                
                                  -                var buildToken = function(style, val) {
                                  -                    return '<span class="' + style + '">' + escapeForSourceLine(val) + '</span>';
                                  -                };
                                  -                
                                  -                var processTokenStream = function(stream) {
                                  -                    // stream is array of pairs
                                  -                    // apply coloring to the line
                                  -                    var pieces = [];
                                  -                    for(var i=0; i<stream.length; i++) {
                                  -                        var token = stream[i];
                                  -                        pieces.push(buildToken(token[0], token[1]));
                                  -                    }
                                  -                    
                                  -                    var output = pieces.join('').replace(/\n/g, '');
                                  -                    // if the pref says so, replace tabs by corresponding number of spaces.
                                  -                    if (Firebug.replaceTabs > 0) {
                                  -                        var space = new Array(Firebug.replaceTabs + 1).join(" ");
                                  -                        output = output.replace(/\t/g, space);
                                  -                    }
                                  -                    
                                  -                    return output;
                                  -                };
                                  -
                                  -                ////////////////////////////////////////////////////////////////////////
                                  -                // Firebug.FireRainbowExtension
                                  -                //
                                  -                Firebug.FireRainbowExtension = extend(Firebug.Extension, {
                                  -                    // this is called whenever script viewport is about to be rendered
                                  -                    onApplyDecorator: function(sourceBox) {
                                  -                        // patch sourcebox render functionality
                                  -                        if (!sourceBox.rainbowPatched) {
                                  -                            sourceBox.rainbowPatched = true;
                                  -                            
                                  -                            if (sourceBox.getLineAsHTML) { // Firebug 1.3 and 1.4 path
                                  -                                // 1. I use Firebug.Extension.onApplyDecorator mechanism to get called
                                  -                                // for every sourceBox which is about be displayed
                                  -                                // 2. first time a source box is seen, I patch sourceBox.getLineAsHTML
                                  -                                // with my "slightly smarter" version
                                  -                                // 3. for given sourceBox I trigger "daemon process", which starts
                                  -                                // coloring off-screen buffer of all lines (not just visible ones) =>
                                  -                                // sourceBox.colorizedLines
                                  -                                // 
                                  -                                // Every time Firebug needs to render lines, it calls getLineAsHTML on
                                  -                                // sourceBox, so it calls my version of that function and I return
                                  -                                // colorized line in case I have it ready.
                                  -                                // 
                                  -                                // Note: In the case daemon just crossed actual viewport, I'm trying to
                                  -                                // force source panel to refresh it's content calling
                                  -                                // scriptPanel.reView(sourceBox);.
                                  -                                // This is tricky, because reView has implemented several layers of
                                  -                                // caching, continuously being added with newer versions, which makes my
                                  -                                // life harder :-)
                                  -                                // If anyone knows better a function to call, I would be happy to make
                                  -                                // this more robust.
                                  -                                if (!sourceBox._rainbowOriginalGetLineAsHTML) {
                                  -                                    sourceBox._rainbowOriginalGetLineAsHTML = sourceBox.getLineAsHTML;
                                  -                                    sourceBox.getLineAsHTML = function(lineNo) {
                                  -                                        if (this.colorizedLines) {
                                  -                                            var line = this.colorizedLines[lineNo];
                                  -                                            if (line!==undefined) return line;
                                  -                                        }
                                  -                                        return this._rainbowOriginalGetLineAsHTML(lineNo);
                                  -                                    };
                                  -                                }
                                  -                            }
                                  -                            
                                  -                            if (sourceBox.decorator) { // Firebug 1.5 path
                                  -                                // here I patch getLineHTML and using similar technique like for Firebug 1.3 and 1.4
                                  -                                // when firebug needs to render lines it asks getLineHTML to provide HTML version of every line
                                  -                                // this is quite fast and reasonably smooth when scrolling
                                  -                                
                                  -                                // Note: In Firebug 1.5 call to scriptPanel.reView(sourceBox, true) invalidates cache, so it is guaranteed to redraw the view
                                  -                                if (!sourceBox.decorator._rainbowOriginalGetLineHTML) {
                                  -                                    sourceBox.decorator._rainbowOriginalGetLineHTML = sourceBox.decorator.getLineHTML;
                                  -                                    sourceBox.decorator.getLineHTML = function(sourceBox, lineNo) {
                                  -                                        if (sourceBox.colorizedLines) {
                                  -                                            var line = sourceBox.colorizedLines[lineNo-1];
                                  -                                            if (line!==undefined) return line;
                                  -                                        }
                                  -                                        return this._rainbowOriginalGetLineHTML(sourceBox, lineNo);
                                  -                                    };
                                  -                                }
                                  -                            }
                                  -                        }
                                  -                        // prevent recursion in case we call reView
                                  -                        if (sourceBox.preventRainbowRecursion) {
                                  -                            sourceBox.preventRainbowRecursion = undefined;
                                  -                            return;
                                  -                        }
                                  -                        // start coloring (if not already in progress or done)
                                  -                        Firebug.FireRainbowModule.colorizeSourceBox(sourceBox);
                                  -                    }
                                  -                });
                                  -                
                                  -                ////////////////////////////////////////////////////////////////////////
                                  -                // Firebug.FireRainbowModule
                                  -                //
                                  -                Firebug.FireRainbowModule = extend(Firebug.Module, {
                                  -                    valid: false,
                                  -                    pings: 0,
                                  -                    styleLibrary: {},
                                  -                    defaultTheme: ".panelNode-script{background-color:#FFFFFF;color:black;font-family:Monaco,Monospace,Courier New !important;font-size:11px;} .sourceRow.hovered{background-color:#EEEEEE;} .sourceLine{background:#EEEEEE none no-repeat scroll 2px 0;border-bottom:1px solid #EEEEEE;border-right:1px solid #CCCCCC;color:#888888;} .sourceLine:hover{text-decoration:none;} .scriptTooltip{background:LightYellow none repeat scroll 0 0;border:1px solid #CBE087;color:#000000;} .sourceRow[exeline=\"true\"]{background-color:lightgoldenrodyellow;outline-color:#D9D9B6;outline-style:solid;outline-width:1px;} .xml-text{color:black;} .whitespace{color:black;} .xml-punctuation{color:gray;} .xml-tagname{color:blue;} .xml-attname{color:darkred;} .xml-attribute{color:darkgreen;} .css-at{color:darkred;} .css-string{color:red;} .css-punctuation{color:midnightblue;} .js-keyword{color:blue;} .js-variable{color:black;} .js-operator{color:black;} .js-punctuation{color:darkBlue;} .js-variabledef{color:darkslategray;} .js-localvariable{color:darkslateBlue;} .js-property{color:teal;} .js-string{color:darkgreen;} .js-atom{color:saddleBrown;} .xml-comment{color:gray;} .css-identifier{color:midnightBlue;} .css-select-op{color:cadetblue;} .css-unit{color:orangered;} .css-value{color:black;} .css-colorcode{color:magenta;} .js-comment{color:gray;} .js-regexp{color:magenta;} .xml-entity{color:darkgoldenrod;} .xml-error{color:orangered;} .css-comment{color:gray;}",
                                  -
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initialize: function() {
                                  -                        
                                  -                        this.actualScriptPanel = Firebug.chrome.getPanel("script2");
                                  -                        
                                  -                        /*
                                  -                        var doc = Firebug.chrome.document;
                                  -                        //var url = Env.Location.baseDir + "content/firerainbow/chrome/skin/rainbow.css";
                                  -                        var url = Env.Location.baseDir + "content/firerainbow/themes/codemirror.css";
                                  -                        var style = createStyleSheet(doc, url);
                                  -                        addStyleSheet(doc, style);
                                  -                        /**/
                                  -                        
                                  -                        var doc = Firebug.chrome.document;
                                  -                        var style = createElement("style");
                                  -                        var rules = document.createTextNode(this.defaultTheme);
                                  -
                                  -                        style.type = "text/css";
                                  -                        if(style.styleSheet)
                                  -                        {
                                  -                            style.styleSheet.cssText = rules.nodeValue;
                                  -                        }
                                  -                        else
                                  -                        {
                                  -                            style.appendChild(rules);
                                  -                        }
                                  -                        addStyleSheet(doc, style);
                                  -                        /**/
                                  -                        
                                  -                        return Firebug.Module.initialize.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    showPanel: function(browser, panel) {
                                  -                        if (!this.valid) return;
                                  -                        dbg("Rainbow: showPanel", panel);
                                  -                        var isScriptPanel = panel && panel.name == "script";
                                  -                        this.actualScriptPanel = isScriptPanel?panel:undefined;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initContext: function(context) {
                                  -                        dbg("Rainbow: initContext", context);
                                  -                        Firebug.Module.initContext.apply(this, arguments);
                                  -                        this.hookPanel(context);
                                  -                        this.valid = true;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    reattachContext: function(browser, context) {
                                  -                        Firebug.Module.reattachContext.apply(this, arguments);
                                  -                        this.hookPanel(context);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // convert old code to be compatible with current rainbow
                                  -                    convertOldCode: function(code, version) {
                                  -                        switch (version) {
                                  -                            case 1: return code.replace(/\.(\w+)\s*\{/g, ".js-$1 {"); // conversion for mixed html coloring
                                  -                        }
                                  -                        return code;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getCodeVersion: function(code) {
                                  -                        var vc = code.match(/\/\* version:(.*) \*\//);
                                  -                        if (!vc) return 1;
                                  -                        return parseInt(vc[1], 10);
                                  -                    },
                                  -                    colorizeSourceBox: function(sourceBox) {
                                  -                        dbg("Rainbow: colorizeSourceBox", sourceBox);
                                  -                        this.pingDaemon(sourceBox);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    hookPanel: function(context) {
                                  -                        dbg("Rainbow: hookPanel", context);
                                  -                        var chrome = context ? context.chrome : FirebugChrome;
                                  -                        var code = this.getPref('coloring');
                                  -                        var version = this.getCodeVersion(code);
                                  -                        if (version<currentCodeVersion) {
                                  -                            // backward compatibility with old rainbow versions
                                  -                            code = this.convertOldCode(code, version);
                                  -                            this.storeCode(code);
                                  -                        }
                                  -                        this.panelBar1 = chrome.$("fbPanelBar1");
                                  -                        this.initSyntaxColoring(this.panelBar1);
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    storeCode: function(code) {
                                  -                        code = "/* version:"+currentCodeVersion+" */\n"+code;
                                  -                        this.setPref('coloring', code);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemon: function(sourceBox) {
                                  -                        dbg("Rainbow: startDaemon", sourceBox);
                                  -                        //var webWorkersEnabled = !this.getPref('disableWebWorkers', false);
                                  -                        var webWorkersEnabled = false;
                                  -                        if (webWorkersEnabled && typeof Worker !== "undefined") {
                                  -                            this.startDaemonAsWorkerThread(sourceBox);
                                  -                        } else {
                                  -                            this.startDaemonOnUIThread(sourceBox);
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    stopDaemon: function() {
                                  -                        dbg("Rainbow: stopDaemon");
                                  -                        if (this.parserWorker) {
                                  -                            dbg("Rainbow: stopDaemonAsWorkerThread");
                                  -                            this.parserWorker.terminate();
                                  -                            this.parserWorker = undefined;
                                  -                        }
                                  -                        if (this.daemonTimer) {
                                  -                            dbg("Rainbow: stopDaemonOnUIThread");
                                  -                            clearInterval(this.daemonTimer);
                                  -                            this.daemonTimer = undefined;
                                  -                            this.currentSourceBox = undefined;
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemonAsWorkerThread: function(sourceBox) {
                                  -                        // daemon is here to perform colorization in background
                                  -                        // this is origianl daemon rewrite using web workers
                                  -                        if (this.currentSourceBox===sourceBox) return;
                                  -
                                  -                        this.stopDaemon(); // never let run two or more daemons concruently!
                                  -
                                  -                        // find active source box - here we will keep daemon state (parser state)
                                  -                        if (!sourceBox) return;
                                  -                        if (!sourceBox.lines) return;
                                  -                        if (sourceBox.colorized) return; // already colorized
                                  -                        
                                  -                        dbg("Rainbow: startDaemonAsWorkerThread", sourceBox);
                                  -                        
                                  -                        this.currentSourceBox = sourceBox;
                                  -                        if (sourceBox.lineToBeColorized==undefined) sourceBox.lineToBeColorized = 0;
                                  -                        if (!sourceBox.colorizedLines) sourceBox.colorizedLines = [];
                                  -                        
                                  -                        var refresh = function() {
                                  -                            // do review to be sure actual view gets finaly colorized
                                  -                            if (that.actualScriptPanel) {
                                  -                                sourceBox.preventRainbowRecursion = true;
                                  -                                dbg("Rainbow: reView!", sourceBox);
                                  -                                that.actualScriptPanel.lastScrollTop = that.actualScriptPanel.lastScrollTop || 0;
                                  -                                that.actualScriptPanel.lastScrollTop -= 1; // fight reView's "reView no change to scrollTop" optimization
                                  -                                sourceBox.firstViewableLine = -1; // overcome another layer of reView optimization added in Firebug 1.4
                                  -                                that.actualScriptPanel.reView(sourceBox, true);
                                  -                            }
                                  -                        };
                                  -                        
                                  -                        var that = this;
                                  -                        var worker = new Worker('chrome://firerainbow/content/worker.js');
                                  -                        worker.onmessage = function(e) {
                                  -                            dbg("Rainbow: got worker message "+e.data.msg, e.data);
                                  -                            switch (e.data.msg) {
                                  -                                case 'progress':
                                  -                                    sourceBox.colorizedLines[e.data.line] = processTokenStream(e.data.stream);
                                  -                                    if (e.data.line==sourceBox.lastViewableLine) {
                                  -                                        // just crossed actual view, force refresh!
                                  -                                        refresh();
                                  -                                    }
                                  -                                    break;
                                  -                                case 'done': 
                                  -                                    that.parserWorker = undefined;
                                  -                                    sourceBox.colorized = true;
                                  -                                    that.styleLibrary = e.data.styleLibrary;
                                  -                                    refresh();
                                  -                                    break;
                                  -                            }
                                  -                        };
                                  -                        worker.onerror = function(e) {
                                  -                            dbg("Rainbow: worker error", e);
                                  -                            // stop daemon in this exceptional case
                                  -                            that.stopDaemon();
                                  -                            sourceBox.colorized = true;
                                  -                            sourceBox.colorizationFailed = true;
                                  -                            return;
                                  -                        };
                                  -                        worker.postMessage({
                                  -                            command: 'run',
                                  -                            lines: sourceBox.lines
                                  -                        });
                                  -                        this.parserWorker = worker;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    startDaemonOnUIThread: function(sourceBox) {
                                  -                        // daemon is here to perform colorization in background
                                  -                        // the goal is not to block Firebug functionality and don't hog CPU for too long
                                  -                        // daemonInterval and tokensPerCall properties define how intensive this background process should be
                                  -                        if (this.currentSourceBox===sourceBox) return;
                                  -
                                  -                        this.stopDaemon(); // never let run two or more daemons concruently!
                                  -
                                  -                        // find active source box - here we will keep daemon state (parser state)
                                  -                        if (!sourceBox) return;
                                  -                        if (!sourceBox.lines) return;
                                  -                        if (sourceBox.colorized) return; // already colorized
                                  -
                                  -                        dbg("Rainbow: startDaemonOnUIThread", sourceBox);
                                  -                        var that = this;
                                  -                        
                                  -                        this.currentSourceBox = sourceBox;
                                  -                        if (sourceBox.lineToBeColorized==undefined) sourceBox.lineToBeColorized = 0;
                                  -                        if (!sourceBox.colorizedLines) sourceBox.colorizedLines = [];
                                  -
                                  -                        // init daemon state
                                  -                        var nextLine = null;
                                  -
                                  -                        if (!sourceBox.parser) {
                                  -                            var firstLine = "";
                                  -                            var lineNo = 0;
                                  -                            while (lineNo<sourceBox.lines.length) {
                                  -                                firstLine = sourceBox.lines[lineNo];
                                  -                                firstLine = firstLine.replace(/^\s*|\s*$/g,"");
                                  -                                if (firstLine!="") break;
                                  -                                lineNo++;
                                  -                            }
                                  -                            // determine what parser to use
                                  -                            var parser = codemirror.JSParser;
                                  -                            // use HTML mixed parser if you encounter these substrings on first line
                                  -                            if (firstLine.indexOf('<!DOCTYPE')!=-1 || firstLine.indexOf("<html")!=-1 || 
                                  -                                firstLine.indexOf("<body")!=-1 || firstLine.indexOf("<head")!=-1) parser = codemirror.HTMLMixedParser;
                                  -                            sourceBox.parser = parser.make(codemirror.stringStream({
                                  -                                next: function() {
                                  -                                    if (nextLine===null) throw codemirror.StopIteration;
                                  -                                    var result = nextLine;
                                  -                                    nextLine = null;
                                  -                                    return result;
                                  -                                }
                                  -                            }));
                                  -                        }
                                  -
                                  -                        var tokensPerCall = this.getPref('tokensPerCall', 500);
                                  -                        var daemonInterval = this.getPref('daemonInterval', 100);
                                  -                        
                                  -                        var refresh = function() {
                                  -                            // do review to be sure actual view gets finaly colorized
                                  -                            if (that.actualScriptPanel) {
                                  -                                sourceBox.preventRainbowRecursion = true;
                                  -                                dbg("Rainbow: reView!", sourceBox);
                                  -                                that.actualScriptPanel.lastScrollTop = that.actualScriptPanel.lastScrollTop || 0;
                                  -                                that.actualScriptPanel.lastScrollTop -= 1; // fight reView's "reView no change to scrollTop" optimization
                                  -                                sourceBox.firstViewableLine = -1; // overcome another layer of reView optimization added in Firebug 1.4
                                  -                                that.actualScriptPanel.reView(sourceBox, true);
                                  -                            }
                                  -                        };
                                  -
                                  -                        var finish = function() {
                                  -                            refresh();
                                  -                            that.stopDaemon();
                                  -                            sourceBox.colorized = true;
                                  -                            // free up memory
                                  -                            sourceBox.parser = undefined;
                                  -                        };
                                  -
                                  -                        // run daemon
                                  -                        this.daemonTimer = setInterval(
                                  -                            function() {
                                  -                                try {
                                  -                                    var tokenQuota = tokensPerCall;
                                  -                                    var startLine = sourceBox.lineToBeColorized;
                                  -                                    while (true) {
                                  -                                        if (!sourceBox.hasLine) {
                                  -                                            // finish if no more lines
                                  -                                            if (sourceBox.lineToBeColorized >= sourceBox.lines.length) {
                                  -                                                return finish();
                                  -                                            }
                                  -                                            
                                  -                                            // extract line code from node
                                  -                                            // note: \n is important to simulate multi line text in stream (for example multi-line comments depend on this)
                                  -                                            nextLine = sourceBox.lines[sourceBox.lineToBeColorized]+"\n";
                                  -
                                  -                                            sourceBox.parsedLine = [];
                                  -                                            sourceBox.hasLine = true;
                                  -                                        }
                                  -                                        
                                  -                                        codemirror.forEach(sourceBox.parser,
                                  -                                            function(token) {
                                  -                                                // colorize token
                                  -                                                var val = token.value;
                                  -                                                sourceBox.parsedLine.push([token.style, val]);
                                  -                                                that.styleLibrary[token.style] = true;
                                  -                                                if (--tokenQuota==0) {
                                  -                                                    throw StopIteration;
                                  -                                                }
                                  -                                            }
                                  -                                        );
                                  -                                        
                                  -                                        if (!tokenQuota) {
                                  -                                            return;
                                  -                                        }
                                  -                                    
                                  -                                        sourceBox.colorizedLines.push(processTokenStream(sourceBox.parsedLine));
                                  -
                                  -                                        if (sourceBox.lineToBeColorized==sourceBox.lastViewableLine) {
                                  -                                            // just crossed actual view, force refresh!
                                  -                                            refresh();
                                  -                                            startLine = null;
                                  -                                        }
                                  -    
                                  -                                        // move for next line
                                  -                                        sourceBox.lineToBeColorized++;
                                  -                                        sourceBox.hasLine = false;
                                  -                                    }
                                  -                                } catch (ex) {
                                  -                                    dbg("Rainbow: exception", ex);
                                  -                                    // stop daemon in this exceptional case
                                  -                                    that.stopDaemon();
                                  -                                    sourceBox.colorized = true;
                                  -                                    sourceBox.colorizationFailed = true;
                                  -                                    // free up memory
                                  -                                    sourceBox.parser = undefined;
                                  -                                    return;
                                  -                                }
                                  -                            },
                                  -                        daemonInterval);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    pingDaemon: function(sourceBox) {
                                  -                        this.valid = true;
                                  -                        
                                  -                        if (!this.valid) return;
                                  -                        
                                  -                        // trivial implementation of buffered deferred triggering of daemon
                                  -                        this.pings++;
                                  -                        var pingMarker = this.pings;
                                  -                        var that = this;
                                  -                        setTimeout(function(){
                                  -                            if (that.pings!=pingMarker) return;
                                  -                            that.startDaemon(sourceBox);
                                  -                        }, 200);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // initializes syntax coloring helpers for panel
                                  -                    initSyntaxColoring: function(panelBar) {
                                  -                        // here we append <style id='rainbow-style-sheet' type='text/css'>/* Syntax coloring */</style> into head element
                                  -                        // this style element we will use to apply coloring rules to all script boxes in the panel
                                  -                        if (this.lookupStyleElement(panelBar)) return; // already done
                                  -
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -
                                  -                        var styleElement = doc.createElement("style");
                                  -                        styleElement.setAttribute("id", "rainbow-style-sheet");
                                  -                        styleElement.setAttribute("type", "text/css");
                                  -                        styleElement.appendChild(doc.createTextNode('/* Syntax coloring */'));
                                  -
                                  -                        var headElement;
                                  -                        var headElementList = doc.getElementsByTagName("head");
                                  -                        if (headElementList.length) headElement = headElementList[0]; else headElement = doc.documentElement;
                                  -                        headElement.appendChild(styleElement);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // returns our rainbow-style-sheet element from given panel
                                  -                    lookupStyleElement: function(panelBar) {
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -                        var styleElement = doc.getElementById('rainbow-style-sheet');
                                  -                        return styleElement;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // applies new coloring rules to given panel
                                  -                    applySyntaxColoring: function(code, panelBar) {
                                  -                        var styleElement = this.lookupStyleElement(panelBar);
                                  -                        if (!styleElement) return;
                                  -                        styleElement.innerHTML = '';
                                  -                        var browser = panelBar.browser;
                                  -                        var doc = browser.contentDocument;
                                  -                        styleElement.appendChild(doc.createTextNode(code));
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // serializes CSS rules and stores them into coloring property (save)
                                  -                    saveSyntaxColoring: function(rules) {
                                  -                        var code = rules;
                                  -                        if (typeof code != 'string') {
                                  -                            var s = [];
                                  -                            for (var i=0; i<rules.length; i++) {
                                  -                                var rule = rules[i];
                                  -                                s.push(rule.selector);
                                  -                                s.push('{');
                                  -                                for (var j=0; j<rule.props.length; j++) {
                                  -                                    var prop = rule.props[j];
                                  -                                    if (prop.disabled) continue;
                                  -                                    s.push(prop.name);
                                  -                                    s.push(':');
                                  -                                    s.push(prop.value);
                                  -                                    if (prop.important) s.push(' !important');
                                  -                                    s.push(';');
                                  -                                }
                                  -                                s.push('}');
                                  -                            }
                                  -                            code = s.join('');
                                  -                        }
                                  -                        this.storeCode(code);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // opens dialog to import color theme (color theme is just a piece of CSS)
                                  -                    importTheme: function() {
                                  -                        var params = {
                                  -                            out:null
                                  -                        };
                                  -                        window.openDialog("chrome://firerainbow/content/import.xul", "", "chrome, dialog, modal, resizable=yes", params).focus();
                                  -                        if (params.out) {
                                  -                            var code = params.out.code;
                                  -                            this.applySyntaxColoring(code, this.panelBar1);
                                  -                            this.saveSyntaxColoring(code);
                                  -                            this.invalidatePanels();
                                  -                        }
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    generateCodeFromLibrary: function() {
                                  -                        var niceColors = ["red", "blue", "magenta", "brown", "black", 
                                  -                                          "darkgreen", "blueviolet", "cadetblue", "crimson", "darkgoldenrod",
                                  -                                          "darkgrey", "darkslateblue", "firebrick", "midnightblue", "orangered", "navy"];
                                  -                        var code = ".panelNode-script { font-family: Monaco, Monospace, Courier New !important; font-size: 11px; background-color: #fff; color: black; }";
                                  -                        code += " .sourceRow.hovered { background-color: #EEEEEE; }";
                                  -                        code += " .sourceLine { border-bottom: 1px solid #EEEEEE; border-right: 1px solid #CCCCCC; background: #EEEEEE no-repeat 2px 0px; color: #888888; }";
                                  -                        code += " .sourceLine:hover { text-decoration: none; }";
                                  -                        code += " .scriptTooltip { border: 1px solid #CBE087; background: LightYellow; color: #000000; }";
                                  -                        code += " .sourceRow[exeLine=\"true\"] { outline: 1px solid #D9D9B6; background-color: lightgoldenrodyellow; }";
                                  -
                                  -                        for (var x in this.styleLibrary) {
                                  -                            if (this.styleLibrary.hasOwnProperty(x)) {
                                  -                                var color = niceColors[Math.floor(Math.random()*niceColors.length)];
                                  -                                code += " ."+x+" { color: "+color+"; }";
                                  -                            }
                                  -                        }
                                  -                        return code;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // generates template color theme based on visited scripts
                                  -                    randomizeTheme: function() {
                                  -                        var code = this.generateCodeFromLibrary();
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                        this.saveSyntaxColoring(code);
                                  -                        this.invalidatePanels();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // resets to default rainbow coloring theme
                                  -                    resetToDefaultTheme: function() {
                                  -                        var code = this.defaultTheme;
                                  -                        this.applySyntaxColoring(code, this.panelBar1);
                                  -                        this.saveSyntaxColoring(code);
                                  -                        this.invalidatePanels();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    // opens rainbow website in a new tab
                                  -                    visitWebsite: function() {
                                  -                        openNewTab(rainbowWebsite);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getPref: function(name, def) {
                                  -                        return def || 0;
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -
                                  -                        var type = rainbowPrefs.getPrefType(prefName);
                                  -                        if (type == nsIPrefBranch.PREF_STRING)
                                  -                            return rainbowPrefs.getCharPref(prefName);
                                  -                        else if (type == nsIPrefBranch.PREF_INT)
                                  -                            return rainbowPrefs.getIntPref(prefName);
                                  -                        else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                            return rainbowPrefs.getBoolPref(prefName);
                                  -                        return def;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    setPref: function(name, value) {
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -
                                  -                        var type = rainbowPrefs.getPrefType(prefName);
                                  -                        if (type == nsIPrefBranch.PREF_STRING)
                                  -                            rainbowPrefs.setCharPref(prefName, value);
                                  -                        else if (type == nsIPrefBranch.PREF_INT)
                                  -                            rainbowPrefs.setIntPref(prefName, value);
                                  -                        else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                            rainbowPrefs.setBoolPref(prefName, value);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    clearPref: function(name) {
                                  -                        var prefName = rainbowPrefDomain + "." + name;
                                  -                        return rainbowPrefs.clearUserPref(prefName);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    invalidatePanels: function() {
                                  -                        for (var i = 0; i < TabWatcher.contexts.length; ++i) {
                                  -                            var panel = TabWatcher.contexts[i].getPanel("script", true);
                                  -                            if (!panel) continue;
                                  -                            panel.context.invalidatePanels("rainbow");
                                  -                            panel.refresh();
                                  -                        }
                                  -                    }
                                  -                });
                                  -
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -                /////////////////////////////////////////////////////////////////////////////////////////
                                  -
                                  -                Firebug.FireRainbowSyntaxColoringEditorPanel = function() {};
                                  -                Firebug.FireRainbowSyntaxColoringEditorPanel.prototype = extend(Firebug.CSSStyleSheetPanel.prototype,{
                                  -                    name: "rainbow",
                                  -                    title: "Colors",
                                  -                    parentPanel: "script",
                                  -                    order: 1000,
                                  -
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    initialize: function() {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.initialize.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    destroy: function(state) {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.destroy.apply(this, arguments);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    lookupStyleSheet: function(browser) {
                                  -                        var doc = browser.contentDocument;
                                  -                        var styleElement = doc.getElementById('rainbow-style-sheet');
                                  -                        if (!styleElement) return;
                                  -                        return styleElement.sheet;
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    markChange: function() {
                                  -                        Firebug.CSSStyleSheetPanel.prototype.markChange.apply(this, arguments);
                                  -                        var that = this;
                                  -                        setTimeout(function () {
                                  -                            var browser = that.context.chrome.getPanelBrowser(that.parentPanel);
                                  -                            var sheet = that.lookupStyleSheet(browser);
                                  -                            if (!sheet) return;
                                  -                            var rules = that.getStyleSheetRules(that.context, sheet);
                                  -                            Firebug.FireRainbowModule.saveSyntaxColoring(rules);
                                  -                        }, 1000);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    refresh: function() {
                                  -                        this.show();
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    show: function() {
                                  -                        var browser = this.context.chrome.getPanelBrowser(this.parentPanel);
                                  -                        var sheet = this.lookupStyleSheet(browser);
                                  -                        if (!sheet) return;
                                  -                        this.updateLocation(sheet);
                                  -                    },
                                  -                    /////////////////////////////////////////////////////////////////////////////////////////
                                  -                    getOptionsMenuItems: function() {
                                  -                        return [
                                  -                            {
                                  -                                label: 'Import Color Theme ...',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.importTheme, Firebug.FireRainbowModule)
                                  -                            },{
                                  -                                label: 'Randomize Color Theme',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.randomizeTheme, Firebug.FireRainbowModule)
                                  -                            },{
                                  -                                label: 'Reset to default Color Theme',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.resetToDefaultTheme, Firebug.FireRainbowModule)
                                  -                            },'-',{
                                  -                                label: 'Visit FireRainbow Website ...',
                                  -                                nol10n: true,
                                  -                                command: bind(Firebug.FireRainbowModule.visitWebsite, Firebug.FireRainbowModule)
                                  -                            }
                                  -                        ];
                                  -                    }
                                  -                });
                                  -
                                  -                Firebug.registerModule(Firebug.FireRainbowModule);
                                  -                Firebug.registerExtension(Firebug.FireRainbowExtension);
                                  -                Firebug.registerPanel(Firebug.FireRainbowSyntaxColoringEditorPanel);
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/firerainbow.xul b/branches/flexBox/content/firerainbow/chrome/content/firerainbow.xul
                                  deleted file mode 100644
                                  index 56d2e9c3..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/firerainbow.xul
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -<?xml version="1.0"?> 
                                  -<?xml-stylesheet href="chrome://global/skin/global.css"?>
                                  -<?xml-stylesheet href="chrome://firebug/content/firebug.css"?>
                                  -<?xml-stylesheet href="chrome://firebug/skin/window.css"?>
                                  -<?xml-stylesheet href="chrome://firerainbow/skin/rainbow.css"?>
                                  -<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                                  -    <script type="application/x-javascript" src="chrome://firerainbow/content/codemirror.js"/>
                                  -    <script type="application/x-javascript" src="chrome://firerainbow/content/firerainbow.js"/>
                                  -</overlay>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/import.xul b/branches/flexBox/content/firerainbow/chrome/content/import.xul
                                  deleted file mode 100644
                                  index 386b3b8e..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/import.xul
                                  +++ /dev/null
                                  @@ -1,16 +0,0 @@
                                  -<?xml-stylesheet href="chrome://firerainbow/skin/import.css"?>
                                  -<dialog
                                  -  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
                                  -  id="import-dialog"
                                  -  title="Import Color Theme"
                                  -  ondialogaccept="window.arguments[0].out = {code:document.getElementById('code').value}; return true;"
                                  -  persist="screenX screenY width height"
                                  -  windowtype="myDialogWindowType">
                                  -    <script type="application/x-javascript" src="chrome://firerainbow/content/import.js"/>
                                  -    <hbox>
                                  -        <label value="Please visit "/>
                                  -        <label value="FireRainbow Website" href="http://firerainbow.binaryage.com/#themes" class="text-link"/>
                                  -        <label value=" and copy&amp;paste some color theme code here"/>
                                  -    </hbox>
                                  -    <textbox flex="1" id="code" multiline="true" emptytext="Paste CSS code here" cols="80" rows="30"/>
                                  -</dialog>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/content/worker.js b/branches/flexBox/content/firerainbow/chrome/content/worker.js
                                  deleted file mode 100644
                                  index f553c2d7..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/content/worker.js
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -// import codemirror
                                  -importScripts("chrome://firerainbow/content/codemirror.js");
                                  -
                                  -function run(lines) {
                                  -    var nextLine = null;
                                  -
                                  -    var firstLine = "";
                                  -    var lineNo = 0;
                                  -    while (lineNo<lines.length) {
                                  -        firstLine = lines[lineNo];
                                  -        firstLine = firstLine.replace(/^\s*|\s*$/g,"");
                                  -        if (firstLine!="") break;
                                  -        lineNo++;
                                  -    }
                                  -    // determine what parser to use
                                  -    var parserClass = codemirror.JSParser;
                                  -    // use HTML mixed parser if you encounter these substrings on first line
                                  -    if (firstLine.indexOf('<!DOCTYPE')!=-1 || firstLine.indexOf("<html")!=-1 || firstLine.indexOf("<body")!=-1 || firstLine.indexOf("<head")!=-1) {
                                  -        parserClass = codemirror.HTMLMixedParser;
                                  -    }
                                  -    var parser = parserClass.make(codemirror.stringStream({
                                  -        next: function() {
                                  -            if (nextLine===null) throw codemirror.StopIteration;
                                  -            var result = nextLine;
                                  -            nextLine = null;
                                  -            return result;
                                  -        }
                                  -    }));
                                  -
                                  -    var styleLibrary = {};
                                  -
                                  -    var lineToBeColorized = 0;
                                  -    while (lineToBeColorized < lines.length) {
                                  -        // extract line code from node
                                  -        // note: \n is important to simulate multi line text in stream (for example multi-line comments depend on this)
                                  -        nextLine = lines[lineToBeColorized]+"\n";
                                  -
                                  -        parsedLine = [];
                                  -
                                  -        codemirror.forEach(parser,
                                  -            function(token) {
                                  -                // colorize token
                                  -                var val = token.value;
                                  -                parsedLine.push([token.style, val]);
                                  -                styleLibrary[token.style] = true;
                                  -            }
                                  -        );
                                  -
                                  -        // apply coloring to the line
                                  -        postMessage({msg: 'progress', line: lineToBeColorized, stream: parsedLine});
                                  -
                                  -        // move for next line
                                  -        lineToBeColorized++;
                                  -    }    
                                  -    postMessage({msg: 'done', styleLibrary: styleLibrary});
                                  -}
                                  -
                                  -onmessage = function(e) {
                                  -    switch (e.data.command) {
                                  -        case 'run': run(e.data.lines); break;
                                  -        default: throw "Unkwnown command for worker!";
                                  -    }
                                  -};
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/skin/import.css b/branches/flexBox/content/firerainbow/chrome/skin/import.css
                                  deleted file mode 100644
                                  index 1054a397..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/skin/import.css
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -.text-link {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -    color: blue;
                                  -}
                                  -
                                  -* {
                                  -    font-size: 9pt;
                                  -	font-family: Helvetica, Arial;
                                  -}
                                  -
                                  -#code {
                                  -    font-family: Courier New;
                                  -    font-size: 9pt;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/skin/rainbow.css b/branches/flexBox/content/firerainbow/chrome/skin/rainbow.css
                                  deleted file mode 100644
                                  index b008d309..00000000
                                  --- a/branches/flexBox/content/firerainbow/chrome/skin/rainbow.css
                                  +++ /dev/null
                                  @@ -1,369 +0,0 @@
                                  -/*****************************************************************************************/
                                  -#fbFirebugLightMenu {
                                  -    margin: 0 4px 0 0;
                                  -    padding: 0 0 0 4px;
                                  -    list-style-image: url(chrome://firebuglight/skin/firebuglight.png);
                                  -    -moz-opacity: 0.8;
                                  -}
                                  -
                                  -#fbFirebugLightMenu:hover,
                                  -#fbFirebugLightMenu[open="true"] {
                                  -    -moz-opacity: 1.0;
                                  -}
                                  -
                                  -#fbFirebugLightMenu > .toolbarbutton-text,
                                  -#fbFirebugLightMenu > .toolbarbutton-menu-dropmarker {
                                  -    display: none;
                                  -}
                                  -
                                  -.toolbar-text-label {
                                  -    padding: 3px 8px 3px 4px;
                                  -    background-color: #f00;
                                  -}
                                  -
                                  -.toolbar-text-button > .toolbarbutton-icon {
                                  -    display: block !important;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderStatusLabel 
                                  -{
                                  -    padding-left: 20px;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderStart,
                                  -#fbFirebugLightExtensionRecorderStop,
                                  -#fbFirebugLightExtensionRecorderPause,
                                  -#fbFirebugLightExtensionRecorderReplay 
                                  -{
                                  -    -moz-image-region: rect(auto,auto,auto,auto) !important;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderStart 
                                  -{
                                  -    list-style-image: url(control_rec.png);
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderStop
                                  -{
                                  -    list-style-image: url(control_stop.png);
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderPause
                                  -{
                                  -    list-style-image: url(control_pause.png);
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderPause.paused
                                  -{
                                  -    list-style-image: url(control_play.png) !important;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRecorderReplay
                                  -{
                                  -    list-style-image: url(control_repeat.png);
                                  -}
                                  -
                                  -.toolbar-recorder-status 
                                  -{
                                  -    margin-top: 6px;
                                  -}
                                  -
                                  -.toolbar-recorder-invalid 
                                  -{
                                  -    background: url(status-gray.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-recorder-recording {
                                  -    background: url(status-red.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-recorder-stopped {
                                  -    background: url(status-gray.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-recorder-paused {
                                  -    background: url(status-green.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-recorder-replaying {
                                  -    background: url(status-blue.png) no-repeat;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionConnectionStatusLabel 
                                  -{
                                  -    padding-left: 20px;
                                  -}
                                  -
                                  -.toolbar-status-connected {
                                  -    background: url(connect.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-status-disconnected {
                                  -    background: url(disconnect.png) no-repeat;
                                  -}
                                  -
                                  -.toolbar-connection-status 
                                  -{
                                  -    margin-top: 6px;
                                  -}
                                  -
                                  -#fbFirebugLightExtensionButtonConnect
                                  -{
                                  -    list-style-image: url(connect_btn.png);
                                  -}
                                  -
                                  -#fbFirebugLightExtensionButtonDisconnect
                                  -{
                                  -    list-style-image: url(disconnect_btn.png);
                                  -}
                                  -
                                  -#fbFirebugLightExtensionRefresh
                                  -{
                                  -    list-style-image: url(refresh.png);
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead > .blinkTitle
                                  -{
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.closed > .blinkTitle
                                  -{
                                  -    background-image: url(twistyClosed.png);
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.opened > .blinkTitle
                                  -{
                                  -    background-image: url(twistyOpen.png);
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead > .blinkTitle {
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-blink 
                                  -{
                                  -    cursor:default;
                                  -}
                                  -
                                  -.refresh > .blinkTitle {
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.logRow-blink {
                                  -    padding: 2px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-blink,
                                  -.logRow-blink .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.logRow-blink.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;    
                                  -}
                                  -
                                  -.blinkTitle {
                                  -    padding-top: 1px;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.refresh > .blinkTitle {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.refresh > .blinkTitle:hover {
                                  -    color: blue;
                                  -    text-decoration: none !important;
                                  -}
                                  -
                                  -.refresh > .blinkTitle:hover > .blinkURI {
                                  -    text-decoration: underline !important;
                                  -}
                                  -
                                  -.blinkDate {
                                  -    font-family: Tahoma;
                                  -    font-size: 8pt;
                                  -    color: gray;
                                  -    font-weight: normal;
                                  -    margin-right: 6px;
                                  -}
                                  -
                                  -.blinkInfo {
                                  -    padding-left: 6px;
                                  -    font-family: Tahoma;
                                  -    font-size: 8pt;
                                  -    color: black;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.blinkIcon {
                                  -    margin-right: 2px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.blinkProgress {
                                  -    margin-right: 6px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.refresh > .blinkTitle > .blinkIcon {
                                  -    background-image: url(refresh.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.fastcss > .blinkTitle > .blinkIcon {
                                  -    background-image: url(fastcss.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.info > .blinkTitle > .blinkIcon {
                                  -    background-image: url(info.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.error > .blinkTitle > .blinkIcon {
                                  -    background-image: url(error.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.connect > .blinkTitle > .blinkIcon {
                                  -    background-image: url(connect.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.disconnect > .blinkTitle > .blinkIcon {
                                  -    background-image: url(disconnect.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.connect_btn > .blinkTitle > .blinkIcon {
                                  -    background-image: url(connect_btn.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.disconnect_btn > .blinkTitle > .blinkIcon {
                                  -    background-image: url(disconnect_btn.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.connect > .blinkTitle > .blinkIcon {
                                  -    background-image: url(connect.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.rreq > .blinkTitle > .blinkIcon {
                                  -    background-image: url(refresh.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.rstop > .blinkTitle > .blinkIcon {
                                  -    background-image: url(control_stop.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.rstart > .blinkTitle > .blinkIcon {
                                  -    background-image: url(control_rec.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.rpause > .blinkTitle > .blinkIcon {
                                  -    background-image: url(control_pause.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.rreplay > .blinkTitle > .blinkIcon {
                                  -    background-image: url(control_repeat.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.warn > .blinkTitle > .blinkIcon {
                                  -    background-image: url(warn.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.bulb > .blinkTitle > .blinkIcon {
                                  -    background-image: url(lightbulb.png);
                                  -    background-position: right;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead > .details {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-blink > .blinkHead.opened > .details {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.ftable {
                                  -    margin: -10px 0 0 40px;
                                  -    padding: 0px 0px 3px 0px;
                                  -}
                                  -
                                  -.ftable td {
                                  -    font-family: tahoma;
                                  -    font-size: 8pt;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.froot {
                                  -    color: black;
                                  -    padding-bottom: 3px;
                                  -    padding-left: 20px;
                                  -    font-weight: bold;
                                  -    color: #008800;
                                  -    background-image: url(folder_activity.png);
                                  -    background-repeat:no-repeat;
                                  -    background-position: left;
                                  -}
                                  -
                                  -.froot b {
                                  -    color: black;
                                  -}
                                  -
                                  -.ffa1, .ffb1 {
                                  -    font-weight: bold;
                                  -    color: #888;
                                  -}
                                  -
                                  -.ffa2, .ffb2 {
                                  -    font-weight: bold;
                                  -    color: #444;
                                  -}
                                  -
                                  -.faction {
                                  -    width: 36px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: right;
                                  -}
                                  -
                                  -.faction.changed {
                                  -    background-image: url(mini_changed.png);
                                  -}
                                  -
                                  -.faction.created {
                                  -    background-image: url(mini_created.png);
                                  -}
                                  -
                                  -.faction.deleted {
                                  -    background-image: url(mini_deleted.png);
                                  -}
                                  -
                                  -.faction.renamed {
                                  -    background-image: url(mini_renamed.png);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/chrome/skin/rainbow.png b/branches/flexBox/content/firerainbow/chrome/skin/rainbow.png
                                  deleted file mode 100644
                                  index 36d5c31b..00000000
                                  Binary files a/branches/flexBox/content/firerainbow/chrome/skin/rainbow.png and /dev/null differ
                                  diff --git a/branches/flexBox/content/firerainbow/defaults/preferences/firerainbow.js b/branches/flexBox/content/firerainbow/defaults/preferences/firerainbow.js
                                  deleted file mode 100644
                                  index 9ca58c84..00000000
                                  --- a/branches/flexBox/content/firerainbow/defaults/preferences/firerainbow.js
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -pref("extensions.rainbow.daemonInterval", 100);
                                  -pref("extensions.rainbow.tokensPerCall", 500);
                                  -pref("extensions.rainbow.disableWebWorkers", false);
                                  -
                                  -// !!! there is copy of this in firerainbow.js !!!
                                  -pref("extensions.rainbow.coloring", ".panelNode-script{background-color:#FFFFFF;color:black;font-family:Monaco,Monospace,Courier New !important;font-size:11px;} .sourceRow.hovered{background-color:#EEEEEE;} .sourceLine{background:#EEEEEE none no-repeat scroll 2px 0;border-bottom:1px solid #EEEEEE;border-right:1px solid #CCCCCC;color:#888888;} .sourceLine:hover{text-decoration:none;} .scriptTooltip{background:LightYellow none repeat scroll 0 0;border:1px solid #CBE087;color:#000000;} .sourceRow[exeline=\"true\"]{background-color:lightgoldenrodyellow;outline-color:#D9D9B6;outline-style:solid;outline-width:1px;} .xml-text{color:black;} .whitespace{color:black;} .xml-punctuation{color:gray;} .xml-tagname{color:blue;} .xml-attname{color:darkred;} .xml-attribute{color:darkgreen;} .css-at{color:darkred;} .css-string{color:red;} .css-punctuation{color:midnightblue;} .js-keyword{color:blue;} .js-variable{color:black;} .js-operator{color:black;} .js-punctuation{color:darkBlue;} .js-variabledef{color:darkslategray;} .js-localvariable{color:darkslateBlue;} .js-property{color:teal;} .js-string{color:darkgreen;} .js-atom{color:saddleBrown;} .xml-comment{color:gray;} .css-identifier{color:midnightBlue;} .css-select-op{color:cadetblue;} .css-unit{color:orangered;} .css-value{color:black;} .css-colorcode{color:magenta;} .js-comment{color:gray;} .js-regexp{color:magenta;} .xml-entity{color:darkgoldenrod;} .xml-error{color:orangered;} .css-comment{color:gray;}");
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/install.rdf b/branches/flexBox/content/firerainbow/install.rdf
                                  deleted file mode 100644
                                  index 28fc832f..00000000
                                  --- a/branches/flexBox/content/firerainbow/install.rdf
                                  +++ /dev/null
                                  @@ -1,31 +0,0 @@
                                  -<?xml version="1.0"?>
                                  -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                                  -         xmlns:em="http://www.mozilla.org/2004/em-rdf#">
                                  -    <Description about="urn:mozilla:install-manifest">
                                  -        <em:id>firerainbow@hildebrand.cz</em:id>
                                  -        <em:version>1.2</em:version>
                                  -        <em:type>2</em:type>
                                  -        <!-- Firefox -->
                                  -        <em:targetApplication>
                                  -            <Description>
                                  -                <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                                  -                <em:minVersion>2.0</em:minVersion>
                                  -                <em:maxVersion>4.0b8pre</em:maxVersion>
                                  -            </Description>
                                  -        </em:targetApplication>
                                  -        <!-- Firebug extension -->
                                  -        <em:requires>
                                  -          <Description>
                                  -            <em:id>firebug@software.joehewitt.com</em:id>
                                  -            <em:minVersion>1.3</em:minVersion>
                                  -            <em:maxVersion>1.7</em:maxVersion>
                                  -          </Description>
                                  -        </em:requires>
                                  -        <em:name>FireRainbow</em:name>
                                  -        <em:description>Javascript syntax highlighting for Firebug</em:description>
                                  -        <em:creator>Antonin Hildebrand</em:creator>
                                  -        <em:contributor>Marijn Haverbeke</em:contributor>
                                  -        <em:homepageURL>http://firerainbow.binaryage.com</em:homepageURL>
                                  -        <em:iconURL>chrome://firerainbow/skin/rainbow.png</em:iconURL>
                                  -    </Description>
                                  -</RDF>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/license.txt b/branches/flexBox/content/firerainbow/license.txt
                                  deleted file mode 100644
                                  index c1247d1d..00000000
                                  --- a/branches/flexBox/content/firerainbow/license.txt
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2008-2010, Antonin Hildebrand
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Antonin Hildebrand nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Antonin Hildebrand.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  diff --git a/branches/flexBox/content/firerainbow/rakefile b/branches/flexBox/content/firerainbow/rakefile
                                  deleted file mode 100644
                                  index f43f2951..00000000
                                  --- a/branches/flexBox/content/firerainbow/rakefile
                                  +++ /dev/null
                                  @@ -1,156 +0,0 @@
                                  -require 'rake'
                                  -require 'rubygems'
                                  -
                                  -ROOT = File.expand_path('.')
                                  -SRC = ROOT
                                  -CONTENT = File.join(SRC, 'chrome', 'content')
                                  -DST = File.join(ROOT, 'build')
                                  -TMP = File.join(ROOT, 'tmp')
                                  -
                                  -unless defined? OSX then
                                  -  OSX = PLATFORM =~ /darwin/
                                  -  WIN = PLATFORM =~ /win32/
                                  -  NIX = !(OSX || WIN)
                                  -end
                                  -
                                  -begin
                                  -  require 'term/ansicolor'
                                  -  include Term::ANSIColor
                                  -rescue LoadError
                                  -  raise 'Run "gem install term-ansicolor"'
                                  -end
                                  -# http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/
                                  -if WIN then
                                  -  begin
                                  -    require 'win32console'
                                  -    include Win32::Console::ANSI
                                  -  rescue LoadError
                                  -    raise 'Run "gem install win32console" to use terminal colors on Windows'
                                  -  end
                                  -end
                                  -
                                  -#
                                  -# you can use FileUtils: http://corelib.rubyonrails.org/classes/FileUtils.html
                                  -#
                                  -require 'find'
                                  -
                                  -def file_color(text); yellow(text); end
                                  -def dir_color(text); blue(text); end
                                  -def cmd_color(text); green(text); end
                                  -
                                  -# copies directory tree without .svn, .git and other temporary files
                                  -def cp_dir(src, dst)
                                  -  puts "#{cmd_color('copying')} #{dir_color(src)}"
                                  -  puts "     -> #{dir_color(dst)}"
                                  -  Find.find(src) do |fn|
                                  -    next if fn =~ /\/\./
                                  -    r = fn[src.size..-1]
                                  -    if File.directory? fn
                                  -      mkdir File.join(dst,r) unless File.exist? File.join(dst,r)
                                  -    else
                                  -      cp(fn, File.join(dst,r))
                                  -    end
                                  -  end
                                  -end
                                  -
                                  -def cp_file(src, dst)
                                  -  puts "#{cmd_color('copying')} #{file_color(src)}"
                                  -  puts "     -> #{file_color(dst)}"
                                  -  cp(src, dst)
                                  -end
                                  -
                                  -def dep(src)
                                  -  s = File.expand_path src
                                  -  rs = s[SRC.size..-1]
                                  -  d = File.join(TMP, rs)
                                  -  puts "#{cmd_color('copying')} #{file_color(s)}"
                                  -  puts "     -> #{file_color(d)}"
                                  -  cp(s, d)
                                  -end
                                  -
                                  -def my_mkdir(dir)
                                  -  puts "#{cmd_color('creating directory')} #{dir_color(dir)}"
                                  -  mkdir dir
                                  -end
                                  -
                                  -def parse_version()
                                  -  f = File.new(File.join(SRC, 'install.rdf'))
                                  -  text = f.read
                                  -  unless text=~/<em:version>([^<]*)<\/em:version>/
                                  -    puts "#{red('Version not found')}"
                                  -    exit
                                  -  end
                                  -  $1
                                  -end
                                  -
                                  -################################################################################
                                  -
                                  -desc "prepare release XPI"
                                  -task :release do
                                  -  version = parse_version()
                                  -  $stderr = File.new('/dev/null', 'w') unless ENV["verbose"]
                                  -
                                  -  remove_dir(TMP) if File.exists?(TMP) # recursive!
                                  -  mkdir(TMP)
                                  -  cp_dir(File.join(SRC, 'chrome'), File.join(TMP, "chrome"))
                                  -  cp_dir(File.join(SRC, 'defaults'), File.join(TMP, "defaults"))
                                  -  dep(File.join(SRC, 'chrome.manifest'))
                                  -  dep(File.join(SRC, 'install.rdf'))
                                  -  dep(File.join(SRC, 'license.txt'))
                                  -  `rm -rf "#{File.join(TMP, "chrome", "content", "codemirror")}"` # codemirror files are not needed, scripts should include generated codemirror.js
                                  -  my_mkdir(DST) unless File.exist?(DST)
                                  -
                                  -  res = "#{DST}/firerainbow-#{version}.xpi"
                                  -  File.unlink(res) if File.exists?(res)
                                  -  puts "#{cmd_color('zipping')} #{file_color(res)}"
                                  -  Dir.chdir(TMP) do
                                  -    puts red('need zip on command line (download http://www.info-zip.org/Zip.html)') unless system("zip -r \"#{res}\" *");
                                  -  end
                                  -  remove_dir(TMP) if File.exist?(TMP) # recursive!
                                  -end
                                  -
                                  -desc "generate sandboxed codemirror source"
                                  -task :sandbox do
                                  -    sources = ["util.js", "tokenize.js", "tokenizejavascript.js", "parsejavascript.js", "parsecss.js", "parsexml.js", "parsehtmlmixed.js","stringstream.js"]
                                  -    output = File.join(CONTENT, "codemirror.js")
                                  -    
                                  -    text = "// !!! DO NOT EDIT THIS FILE (GENERATED) !!!\n"
                                  -    text += "// this file was generated from codemirror subdirectory by `rake sandbox` task\n"
                                  -    text += "\n"
                                  -    text += "\n"
                                  -
                                  -    license_lines = File.new(File.join(CONTENT, 'codemirror', 'LICENSE')).readlines
                                  -    license_lines.map! do |line| 
                                  -        "// " + line
                                  -    end
                                  -    text += license_lines.join
                                  -
                                  -    text += "\n"
                                  -    text += "\n"
                                  -    
                                  -    # isolate codemirror into separate namespace
                                  -    text += "var codemirror = (function() {\n"
                                  -    text += "var Editor = {};var indentUnit = 2;var window=this;\n"
                                  -    
                                  -    sources.each do |source|
                                  -        text += File.new(File.join(CONTENT, 'codemirror', source)).read + "\n"
                                  -    end
                                  -
                                  -    text += "   return this;\n"
                                  -    text += "})();\n"
                                  -
                                  -    # do some souce code hacks
                                  -    text.gsub!("var JSParser", "this.JSParser")
                                  -    text.gsub!("var HTMLMixedParser", "this.HTMLMixedParser")
                                  -    text.gsub!("var XMLParser", "this.XMLParser")
                                  -    text.gsub!("var CSSParser", "this.CSSParser")
                                  -    text.gsub!("var stringStream", "this.stringStream")
                                  -    text.gsub!("var StopIteration", "this.StopIteration")
                                  -    text.gsub!("function forEach", "this.forEach = function")
                                  -    
                                  -    File.open(output, 'w') do |f| 
                                  -        f.write(text)
                                  -    end
                                  -end
                                  -
                                  -task :default => :release
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/readme.md b/branches/flexBox/content/firerainbow/readme.md
                                  deleted file mode 100644
                                  index 7adb628e..00000000
                                  --- a/branches/flexBox/content/firerainbow/readme.md
                                  +++ /dev/null
                                  @@ -1,11 +0,0 @@
                                  -FireRainbow
                                  -===========
                                  -
                                  -FireRainbow brings javascript syntax highlighting to Firebug
                                  -
                                  -<a href="http://firerainbow.binaryage.com"><img src="http://firerainbow.binaryage.com/shared/img/firerainbow-mainshot.png"></a>
                                  -
                                  -Visit [firerainbow.binaryage.com](http://firerainbow.binaryage.com)
                                  -----------
                                  -
                                  -
                                  diff --git a/branches/flexBox/content/firerainbow/support/example.html b/branches/flexBox/content/firerainbow/support/example.html
                                  deleted file mode 100644
                                  index 5918fe48..00000000
                                  --- a/branches/flexBox/content/firerainbow/support/example.html
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -<html>
                                  -  <head>
                                  -    <title>Example for mixed HTML/JS/CSS coloring</title>
                                  -    <script type="text/javascript">
                                  -      /* javascript comment */
                                  -      function foo(bar, baz) {
                                  -        alert("codemirror rulez!");
                                  -        return bar + baz + 1; // returns magic number
                                  -      }
                                  -    </script>
                                  -    <style type="text/css">
                                  -      /* css comment */
                                  -      div.border {
                                  -        border: 1px solid black;
                                  -        padding: 3px;
                                  -      }
                                  -      #foo code {
                                  -        font-family: courier, monospace;
                                  -        font-size: 80%;
                                  -        color: #448888;
                                  -      }
                                  -    </style>
                                  -  </head>
                                  -  <body id="page1">
                                  -    <div class="center">
                                  -      <!-- HTML comment -->
                                  -      <p>I'll tell you a secret ...</p>
                                  -    </div>
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/content/firerainbow/support/screenshot.png b/branches/flexBox/content/firerainbow/support/screenshot.png
                                  deleted file mode 100644
                                  index 79dfa375..00000000
                                  Binary files a/branches/flexBox/content/firerainbow/support/screenshot.png and /dev/null differ
                                  diff --git a/branches/flexBox/content/firerainbow/themes/active4d.css b/branches/flexBox/content/firerainbow/themes/active4d.css
                                  deleted file mode 100644
                                  index 802bd174..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/active4d.css
                                  +++ /dev/null
                                  @@ -1,50 +0,0 @@
                                  -/* Active4D, converted from TextMate theme (Active4D.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #BAD6FD;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #666666;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #A8017E;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #A535AE;
                                  -}
                                  -
                                  -.js-variable {
                                  -    font-weight: bold;
                                  -    color: #0053FF;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    font-weight: bold;
                                  -    color: #006699;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #7A7A7A;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #016CFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #963DFF;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/all_hallows_eve.css b/branches/flexBox/content/firerainbow/themes/all_hallows_eve.css
                                  deleted file mode 100644
                                  index 41374242..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/all_hallows_eve.css
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -/* All Hallows Eve by David Heinemeier Hansson, converted from TextMate theme (All Hallows Eve.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #000000;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #333300;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #73597E;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #9933CC;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #3387CC;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #CC7833;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #66CC33;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #CCCC33;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/themes/amy.css b/branches/flexBox/content/firerainbow/themes/amy.css
                                  deleted file mode 100644
                                  index 0083ee16..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/amy.css
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -/* Amy by William D. Neumann, converted from TextMate theme (Amy.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #200020;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #D0D0FF;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #800000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #800000;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #999999;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #707090;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #7090B0;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #008080;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #A080FF;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #009090;
                                  -}
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #200020;
                                  -    font-family: Monaco, Courier New;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/blackboard.css b/branches/flexBox/content/firerainbow/themes/blackboard.css
                                  deleted file mode 100644
                                  index 0ae20cd9..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/blackboard.css
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -/* Blackboard by Domenico Carbotta, converted from TextMate theme (Blackboard.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #0C1021;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #F8F8F8;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #253B76;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #AEAEAE;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #D8FA3C;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #FBDE2D;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #61CE3C;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #7F90AA;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/brilliance_black.css b/branches/flexBox/content/firerainbow/themes/brilliance_black.css
                                  deleted file mode 100644
                                  index a58f9d2c..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/brilliance_black.css
                                  +++ /dev/null
                                  @@ -1,70 +0,0 @@
                                  -/* Brilliance Black by Thomas Aylott, converted from TextMate theme (Brilliance Black.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #0D0D0D;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #EEEEEE;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000080;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #0010B4;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    background-color: #438000;
                                  -    color: #FFF800;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #C6FF00;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #07FF00;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #31A6FF;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #4F00FF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #7900FF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #F800FF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #FF0086;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    font-weight: bold;
                                  -    color: #FF7900;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #C25A00;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/brilliance_dull.css b/branches/flexBox/content/firerainbow/themes/brilliance_dull.css
                                  deleted file mode 100644
                                  index e7a6f094..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/brilliance_dull.css
                                  +++ /dev/null
                                  @@ -1,79 +0,0 @@
                                  -/* Brilliance Dull by Thomas Aylott, converted from TextMate theme (Brilliance Dull.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #050505;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #CDCDCD;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000080;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #2E2EE6;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    background-color: #438000;
                                  -    color: #A6A458;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #95A658;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #59A559;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #5E6B6B;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #5780A6;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #A459A5;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    background-color: #800004;
                                  -    color: #A7595A;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #7C58A5;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #A459A5;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #A75980;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    font-weight: bold;
                                  -    color: #A77D58;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #333333;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/cobalt.css b/branches/flexBox/content/firerainbow/themes/cobalt.css
                                  deleted file mode 100644
                                  index 8fc604d0..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/cobalt.css
                                  +++ /dev/null
                                  @@ -1,68 +0,0 @@
                                  -/* Cobalt by Jacob Rus, converted from TextMate theme (Cobalt.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #002240;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #B36539;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #FF628C;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #FF9D00;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #0088FF;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #FF80E1;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #80FFC2;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #9EFFFF;
                                  -}
                                  -
                                  -.css-identifier {
                                  -    color: #9EFFFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #FFB454;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #5FE461;
                                  -}
                                  -
                                  -.css-colorcode {
                                  -    color: #9DF39F;
                                  -}
                                  -
                                  -.css-value {
                                  -    color: #F6F080;
                                  -}
                                  -
                                  -.css-at {
                                  -    color: #F6AA11;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/codemirror.css b/branches/flexBox/content/firerainbow/themes/codemirror.css
                                  deleted file mode 100644
                                  index 0e056d94..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/codemirror.css
                                  +++ /dev/null
                                  @@ -1,29 +0,0 @@
                                  -.panelNode-script {
                                  -    font-family: Courier New;
                                  -    font-size: 9pt;
                                  -    overflow: hidden;
                                  -}
                                  -.js-keyword {
                                  -    color: #770088;
                                  -}
                                  -.js-atom {
                                  -    color: #228811;
                                  -}
                                  -.js-variable {
                                  -    color: black;
                                  -}
                                  -.js-variabledef {
                                  -    color: #0000FF;
                                  -}
                                  -.js-localvariable {
                                  -    color: #004499;
                                  -}
                                  -.js-property {
                                  -    color: black;
                                  -}
                                  -.js-comment {
                                  -    color: #AA7700;
                                  -}
                                  -.js-string {
                                  -    color: #AA2222;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/cowtown.css b/branches/flexBox/content/firerainbow/themes/cowtown.css
                                  deleted file mode 100644
                                  index b51f9ee2..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/cowtown.css
                                  +++ /dev/null
                                  @@ -1,44 +0,0 @@
                                  -/*  cowtown by psylux  */
                                  -.panelNode-script {
                                  -    background:#3F2B18 none repeat scroll 0 0;
                                  -    color:#7C4B00;
                                  -    font-family:consolas,Monospaced,Courier New;
                                  -    font-size:12px;
                                  -    overflow:hidden;
                                  -}
                                  -.js-keyword {
                                  -    color:#FF9D00;
                                  -}
                                  -.js-atom {
                                  -    color:#FFFF33;
                                  -}
                                  -.js-variable {
                                  -    color:#B0B9F2;
                                  -}
                                  -.js-variabledef {
                                  -    color:#FFFFFF;
                                  -}
                                  -.js-localvariable {
                                  -    color:#DDD87B;
                                  -}
                                  -.js-property {
                                  -    color:#44FFFF;
                                  -}
                                  -.js-comment {
                                  -    color:#9A4690;
                                  -}
                                  -.js-string {
                                  -    color:#7EDC0F;
                                  -}
                                  -.js-regexp {
                                  -    color:#FFA1AC;
                                  -}
                                  -.js-punctuation {
                                  -    color:#E1EFFF;
                                  -}
                                  -.js-operator {
                                  -    color:#FF6633;
                                  -}
                                  -.js-whitespace {
                                  -    color:#EEFFEE;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/dawn.css b/branches/flexBox/content/firerainbow/themes/dawn.css
                                  deleted file mode 100644
                                  index b697721b..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/dawn.css
                                  +++ /dev/null
                                  @@ -1,37 +0,0 @@
                                  -/* Dawn by David Powers, converted from TextMate theme (Dawn.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #F9F9F9;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #080808;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #2463B4;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #275FFF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #5A525F;
                                  -}
                                  -
                                  -.js-atom {
                                  -    font-weight: bold;
                                  -    color: #811F24;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #794938;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #234A97;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #CF5628;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/eclipse.css b/branches/flexBox/content/firerainbow/themes/eclipse.css
                                  deleted file mode 100644
                                  index 8875ac07..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/eclipse.css
                                  +++ /dev/null
                                  @@ -1,29 +0,0 @@
                                  -.panelNode-script {
                                  -    font-family: Courier New;
                                  -    font-size: 9pt;
                                  -    overflow: hidden;
                                  -}
                                  -.js-keyword {
                                  -    color: #7F0055;
                                  -}
                                  -.js-atom {
                                  -    color: #7F0055;
                                  -}
                                  -.js-variable {
                                  -    color: black;
                                  -}
                                  -.js-variabledef {
                                  -    color: black;
                                  -}
                                  -.js-localvariable {
                                  -    color: black;
                                  -}
                                  -.js-property {
                                  -    color: black;
                                  -}
                                  -.js-comment {
                                  -    color: #3F5FBF;
                                  -}
                                  -.js-string {
                                  -    color: #8E00FF;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/eiffel.css b/branches/flexBox/content/firerainbow/themes/eiffel.css
                                  deleted file mode 100644
                                  index f37a8e18..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/eiffel.css
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -/* Eiffel by Ian Joyner, converted from TextMate theme (Eiffel.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #C3DCFF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #00B418;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #0206FF;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    font-weight: bold;
                                  -    color: #0100B6;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #CD0000;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #C5060B;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #585CF6;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #D80800;
                                  -}
                                  -
                                  -.js-operator {
                                  -    color: #687687;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #1C02FF;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    font-weight: bold;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/espresso_libre.css b/branches/flexBox/content/firerainbow/themes/espresso_libre.css
                                  deleted file mode 100644
                                  index f707231d..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/espresso_libre.css
                                  +++ /dev/null
                                  @@ -1,67 +0,0 @@
                                  -/* Espresso Libre by Chris Thomas, converted from TextMate theme (Espresso Libre.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #2A211C;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #BDAE9D;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #3A312C;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #C3DCFF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #0066FF;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    font-weight: bold;
                                  -    color: #43A8ED;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #44AA43;
                                  -}
                                  -
                                  -.js-atom {
                                  -    font-weight: bold;
                                  -    color: #C5656B;
                                  -}
                                  -
                                  -.js-variable {
                                  -    font-weight: bold;
                                  -    color: #585CF6;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #318495;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #049B0A;
                                  -}
                                  -
                                  -.js-operator {
                                  -    color: #687687;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #8F7E65;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #43A8ED;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    font-weight: bold;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/idle.css b/branches/flexBox/content/firerainbow/themes/idle.css
                                  deleted file mode 100644
                                  index 65bf3101..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/idle.css
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/* IDLE by Domenico Carbotta, converted from TextMate theme (IDLE.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #BAD6FD;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #919191;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #00A33F;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #A535AE;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #FF5600;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/iplastic.css b/branches/flexBox/content/firerainbow/themes/iplastic.css
                                  deleted file mode 100644
                                  index 8044b5a8..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/iplastic.css
                                  +++ /dev/null
                                  @@ -1,60 +0,0 @@
                                  -/* iPlastic by Jeroen van der Ham, converted from TextMate theme (iPlastic.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #EEEEEE;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #BAD6FD;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #009933;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #0066FF;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #FF0080;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #9700CC;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #0066FF;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #0033CC;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #6782D3;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #3366CC;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    font-weight: bold;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/ir_black.css b/branches/flexBox/content/firerainbow/themes/ir_black.css
                                  deleted file mode 100644
                                  index 0dcb6c07..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/ir_black.css
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -/* IR_Black, converted from TextMate theme (IR_Black.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #141414;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #EDEDED;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #333333;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #7C7C7C;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #96CBFE;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #99CC99;
                                  -}
                                  -
                                  -.js-string {
                                  -    font-weight: bold;
                                  -    color: #A8FF60;
                                  -}
                                  -
                                  -.js-atom {
                                  -    font-weight: bold;
                                  -    color: #FF73FD;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #C6C5FE;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #E9C062;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    font-weight: bold;
                                  -    color: #96CBFE;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #96CBFE;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #FFD7B1;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #E18964;
                                  -}
                                  -
                                  -.css-identifier {
                                  -    color: #96CBFE;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8F9D6A;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8B98AB;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #62B1FE;
                                  -}
                                  -
                                  -.css-colorcode {
                                  -    color: #EDEDED;
                                  -}
                                  -
                                  -.css-value {
                                  -    color: #F9EE98;
                                  -}
                                  -
                                  -.css-at {
                                  -    color: #8693A5;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/lazy.css b/branches/flexBox/content/firerainbow/themes/lazy.css
                                  deleted file mode 100644
                                  index 3e3effff..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/lazy.css
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -/* LAZY by Domenico Carbotta, converted from TextMate theme (LAZY.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #EFFCA6;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #E3FC8D;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #8C868F;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #3B5BB5;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #FF7800;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #409B1C;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #3A4A64;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/mac_classic.css b/branches/flexBox/content/firerainbow/themes/mac_classic.css
                                  deleted file mode 100644
                                  index 2ec2eb59..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/mac_classic.css
                                  +++ /dev/null
                                  @@ -1,68 +0,0 @@
                                  -/* Mac Classic by Chris Thomas, converted from TextMate theme (Mac Classic.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #4D97FF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #808080;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #0000CD;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #C5060B;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #585CF6;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #318495;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #036A07;
                                  -}
                                  -
                                  -.js-operator {
                                  -    color: #687687;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #68685B;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #9C0202;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/magicwb_amiga.css b/branches/flexBox/content/firerainbow/themes/magicwb_amiga.css
                                  deleted file mode 100644
                                  index 430f8311..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/magicwb_amiga.css
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -/* MagicWB (Amiga) by Allan Odgaard, converted from TextMate theme (MagicWB (Amiga).tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #969696;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #B1B1B1;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #8D2E75;
                                  -}
                                  -
                                  -.js-string {
                                  -    background-color: #FF0000;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.js-variable {
                                  -    font-weight: bold;
                                  -    color: #FFA995;
                                  -}
                                  -
                                  -.js-variabledef {
                                  -    color: #FFA995;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #3A68A3;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/pastels_on_dark.css b/branches/flexBox/content/firerainbow/themes/pastels_on_dark.css
                                  deleted file mode 100644
                                  index 5a6c62c6..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/pastels_on_dark.css
                                  +++ /dev/null
                                  @@ -1,96 +0,0 @@
                                  -/* Pastels on Dark by Mats Persson, converted from TextMate theme (Pastels on Dark.tmTheme) */
                                  -
                                  -/* 
                                  -CHANGELOG
                                  -
                                  -1) 2010-06-18 cbalz Fixed issue where stopped line on breakpoint has background color that makes text almost invisible. 
                                  -
                                  -*/
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #211E1E;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #DADADA;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #353030;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #73597E;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #555555;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #AD9361;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #A1A1FF;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #666666;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #C1C144;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #6782D3;
                                  -}
                                  -
                                  -.js-variable {
                                  -    font-weight: bold;
                                  -    color: #DE8E30;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #9B456F;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #68685B;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #9B456F;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #EC9E00;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #EDCA06;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #2E759C;
                                  -}
                                  -
                                  -.css-value {
                                  -    color: #9B2E4D;
                                  -}
                                  -
                                  -.css-colorcode {
                                  -    color: #E1C96B;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] {  
                                  -    outline: 1px solid #D9D9B6; margin-right: 1px; background-color: purple; 
                                  -} 
                                  diff --git a/branches/flexBox/content/firerainbow/themes/rainbow.css b/branches/flexBox/content/firerainbow/themes/rainbow.css
                                  deleted file mode 100644
                                  index 78067714..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/rainbow.css
                                  +++ /dev/null
                                  @@ -1,116 +0,0 @@
                                  -.panelNode-script {
                                  -    background-color: #FFFFFF;
                                  -    color: black;
                                  -    font-family: Monaco,Monospace,Courier New !important;
                                  -    font-size: 11px;
                                  -}
                                  -.sourceRow.hovered {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -.sourceLine {
                                  -    background: #EEEEEE none no-repeat scroll 2px 0;
                                  -    border-bottom: 1px solid #EEEEEE;
                                  -    border-right: 1px solid #CCCCCC;
                                  -    color: #888888;
                                  -}
                                  -.sourceLine:hover {
                                  -    text-decoration: none;
                                  -}
                                  -.scriptTooltip {
                                  -    background: LightYellow none repeat scroll 0 0;
                                  -    border: 1px solid #CBE087;
                                  -    color: #000000;
                                  -}
                                  -.sourceRow[exeline="true"] {
                                  -    background-color: lightgoldenrodyellow;
                                  -    outline-color: #D9D9B6;
                                  -    outline-style: solid;
                                  -    outline-width: 1px;
                                  -}
                                  -.xml-text {
                                  -    color: black;
                                  -}
                                  -.whitespace {
                                  -    color: black;
                                  -}
                                  -.xml-punctuation {
                                  -    color: gray;
                                  -}
                                  -.xml-tagname {
                                  -    color: blue;
                                  -}
                                  -.xml-attname {
                                  -    color: darkred;
                                  -}
                                  -.xml-attribute {
                                  -    color: darkgreen;
                                  -}
                                  -.css-at {
                                  -    color: darkred;
                                  -}
                                  -.css-string {
                                  -    color: red;
                                  -}
                                  -.css-punctuation {
                                  -    color: midnightblue;
                                  -}
                                  -.js-keyword {
                                  -    color: blue;
                                  -}
                                  -.js-variable {
                                  -    color: black;
                                  -}
                                  -.js-operator {
                                  -    color: black;
                                  -}
                                  -.js-punctuation {
                                  -    color: darkBlue;
                                  -}
                                  -.js-variabledef {
                                  -    color: darkslategray;
                                  -}
                                  -.js-localvariable {
                                  -    color: darkslateBlue;
                                  -}
                                  -.js-property {
                                  -    color: teal;
                                  -}
                                  -.js-string {
                                  -    color: darkgreen;
                                  -}
                                  -.js-atom {
                                  -    color: saddleBrown;
                                  -}
                                  -.xml-comment {
                                  -    color: gray;
                                  -}
                                  -.css-identifier {
                                  -    color: midnightBlue;
                                  -}
                                  -.css-select-op {
                                  -    color: cadetblue;
                                  -}
                                  -.css-unit {
                                  -    color: orangered;
                                  -}
                                  -.css-value {
                                  -    color: black;
                                  -}
                                  -.css-colorcode {
                                  -    color: magenta;
                                  -}
                                  -.js-comment {
                                  -    color: gray;
                                  -}
                                  -.js-regexp {
                                  -    color: magenta;
                                  -}
                                  -.xml-entity {
                                  -    color: darkgoldenrod;
                                  -}
                                  -.xml-error {
                                  -    color: orangered;
                                  -}
                                  -.css-comment {
                                  -    color: gray;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/firerainbow/themes/slush_poppies.css b/branches/flexBox/content/firerainbow/themes/slush_poppies.css
                                  deleted file mode 100644
                                  index 80466d4a..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/slush_poppies.css
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/* Slush & Poppies by William D. Neumann, converted from TextMate theme (Slush & Poppies.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #F1F1F1;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #B0B0FF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #406040;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #C03030;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #0080A0;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #2060A0;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/spacecadet.css b/branches/flexBox/content/firerainbow/themes/spacecadet.css
                                  deleted file mode 100644
                                  index 77109cd6..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/spacecadet.css
                                  +++ /dev/null
                                  @@ -1,28 +0,0 @@
                                  -/* SpaceCadet by Alex Ross, converted from TextMate theme (SpaceCadet.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #0D0D0D;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #DDE6CF;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #000000;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #40002F;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #473C45;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #805978;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #A8885A;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/sunburst.css b/branches/flexBox/content/firerainbow/themes/sunburst.css
                                  deleted file mode 100644
                                  index 77fdb5f5..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/sunburst.css
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -/* Sunburst by Stanley Rost, converted from TextMate theme (Sunburst.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #000000;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #F8F8F8;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #DDF0FF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #AEAEAE;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #3387CC;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #E28964;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #65B042;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #3E87E3;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #E9C062;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #89BDFF;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #E0C589;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #E18964;
                                  -}
                                  -
                                  -.css-identifier {
                                  -    color: #CDA869;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8F9D6A;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8B98AB;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #9B703F;
                                  -}
                                  -
                                  -.css-colorcode {
                                  -    color: #C5AF75;
                                  -}
                                  -
                                  -.css-value {
                                  -    color: #F9EE98;
                                  -}
                                  -
                                  -.css-at {
                                  -    color: #8693A5;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/twilight.css b/branches/flexBox/content/firerainbow/themes/twilight.css
                                  deleted file mode 100644
                                  index 4f7e3a29..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/twilight.css
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -/* Twilight by Michael Sheets, converted from TextMate theme (Twilight.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #141414;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #F8F8F8;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #DDF0FF;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #5F5A60;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #CF6A4C;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #CDA869;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #8F9D6A;
                                  -}
                                  -
                                  -.js-variable {
                                  -    color: #7587A6;
                                  -}
                                  -
                                  -.js-regexp {
                                  -    color: #E9C062;
                                  -}
                                  -
                                  -.xml-processing {
                                  -    color: #494949;
                                  -}
                                  -
                                  -.xml-tagname {
                                  -    color: #AC885B;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #E0C589;
                                  -}
                                  -
                                  -.css-identifier {
                                  -    color: #CDA869;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8F9D6A;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #8B98AB;
                                  -}
                                  -
                                  -.xml-attname {
                                  -    color: #9B703F;
                                  -}
                                  -
                                  -.css-colorcode {
                                  -    color: #C5AF75;
                                  -}
                                  -
                                  -.css-value {
                                  -    color: #F9EE98;
                                  -}
                                  -
                                  -.css-at {
                                  -    color: #8693A5;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/themes/zenburnesque.css b/branches/flexBox/content/firerainbow/themes/zenburnesque.css
                                  deleted file mode 100644
                                  index ac566e8e..00000000
                                  --- a/branches/flexBox/content/firerainbow/themes/zenburnesque.css
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/* Zenburnesque by William D. Neumann, converted from TextMate theme (Zenburnesque.tmTheme) */
                                  -
                                  -.panelNode-script {
                                  -    font-size: 11px;
                                  -    background-color: #404040;
                                  -    font-family: Monaco, Courier New;
                                  -    color: #DEDEDE;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #A08040;
                                  -}
                                  -
                                  -.sourceRow[exeLine="true"] {
                                  -    background-color: #A0A0C0;
                                  -}
                                  -
                                  -.js-comment, .xml-comment, .css-comment {
                                  -    color: #709070;
                                  -}
                                  -
                                  -.js-string {
                                  -    color: #FF2020;
                                  -}
                                  -
                                  -.js-atom {
                                  -    color: #22C0FF;
                                  -}
                                  -
                                  -.js-keyword {
                                  -    color: #FFFFA0;
                                  -}
                                  diff --git a/branches/flexBox/content/firerainbow/utils/Rakefile b/branches/flexBox/content/firerainbow/utils/Rakefile
                                  deleted file mode 100644
                                  index 19719667..00000000
                                  --- a/branches/flexBox/content/firerainbow/utils/Rakefile
                                  +++ /dev/null
                                  @@ -1,222 +0,0 @@
                                  -begin
                                  -  require 'Plist'
                                  -rescue LoadError
                                  -  raise 'You must "gem install plist" to get plist parser'
                                  -end
                                  -
                                  -ROOT = File.expand_path('..')
                                  -SRC = ROOT
                                  -DST = File.join(ROOT, 'build')
                                  -DST_THEMES = File.join(DST, 'themes')
                                  -TMP = File.join(ROOT, 'tmp')
                                  -
                                  -THEMES_DIR = File.expand_path("~/Library/Application\\ Support/TextMate/Themes")
                                  -
                                  -# http://kpumuk.info/ruby-on-rails/colorizing-console-ruby-script-output/
                                  -begin
                                  -  require 'Win32/Console/ANSI' if PLATFORM =~ /win32/
                                  -rescue LoadError
                                  -  raise 'You must "gem install win32console" to use terminal colors on Windows'
                                  -end
                                  -
                                  -def colorize(text, color_code)
                                  -  "#{color_code}#{text}\e[0m"
                                  -end
                                  -
                                  -def red(text); colorize(text, "\e[31m"); end
                                  -def green(text); colorize(text, "\e[32m"); end
                                  -def yellow(text); colorize(text, "\e[33m"); end
                                  -def blue(text); colorize(text, "\e[34m"); end
                                  -def magenta(text); colorize(text, "\e[35m"); end
                                  -def azure(text); colorize(text, "\e[36m"); end
                                  -def white(text); colorize(text, "\e[37m"); end
                                  -def black(text); colorize(text, "\e[30m"); end
                                  -
                                  -def file_color(text); yellow(text); end
                                  -def dir_color(text); blue(text); end
                                  -def cmd_color(text); azure(text); end
                                  -
                                  -def detect_selector_from_scope(scope)
                                  -  return ".panelNode-script" unless scope
                                  -  parts = scope.split(',')
                                  -  parts.each do |part|
                                  -    case part
                                  -    when "comment"
                                  -      return ".js-comment, .xml-comment, .css-comment"
                                  -    when "keyword"
                                  -      return ".js-keyword"
                                  -    when "variable", "constant.language"
                                  -      return ".js-variable"
                                  -    when "variable.language", "variable.other"
                                  -      return ".js-variabledef"
                                  -    when "string", "css.string"
                                  -      return ".js-string"
                                  -    when "string.regexp"
                                  -      return ".js-regexp"
                                  -    when "constant", "constant.numeric"
                                  -      return ".js-atom"
                                  -    when "keyword.operator.js"
                                  -      return ".js-operator"
                                  -    when "string.quoted.docinfo.doctype.DTD", "meta.tag.preprocessor.xml", "meta.tag.sgml.doctype", "meta.tag.sgml.doctype entity", "meta.tag.sgml.doctype string", "meta.tag.preprocessor.xml", "meta.tag.preprocessor.xml entity", "meta.tag.preprocessor.xml string"
                                  -      return ".xml-processing"
                                  -    when "entity.name.tag", "meta.tag", "declaration.tag"
                                  -      return ".xml-tagname"
                                  -    when /attribute-name/
                                  -      return ".xml-attname"
                                  -    when "???"
                                  -      return ".xml-text"
                                  -    when "???"
                                  -      return ".xml-entity"
                                  -    when "???"
                                  -      return ".xml-cdata"
                                  -    when /property-value.css/
                                  -      return ".css-value"
                                  -    when "meta.selector.css entity.name.tag"
                                  -      return ".css-identifier"
                                  -    when /property-name.css/
                                  -      return ".css-colorcode"
                                  -    when "???"
                                  -      return ".css-string"
                                  -    when "???"
                                  -      return ".css-unit"
                                  -    when "???"
                                  -      return ".css-important"
                                  -    when "???"
                                  -      return ".css-select-op"
                                  -    when "???"
                                  -      return ".css-punctuation"
                                  -    when "???"
                                  -      return ".css-compare"
                                  -    when /at-rule/
                                  -      return ".css-at"
                                  -    end
                                  -  end
                                  -  
                                  -  nil
                                  -end
                                  -
                                  -def color(val)
                                  -  return "???" unless val =~ /#([0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])/
                                  -  "\##{$1}"
                                  -end
                                  -
                                  -def font_style(val)
                                  -  return nil unless val=="italic"
                                  -  "italic"
                                  -end
                                  -
                                  -def font_weight(val)
                                  -  return nil unless val=="bold"
                                  -  "bold"
                                  -end
                                  -
                                  -KNOWN_ATTRIBUTES = {
                                  -  "foreground" => ["color", method(:color)],
                                  -  "background" => ["background-color", method(:color)],
                                  -  "fontStyle" => ["font-style", method(:font_style)],
                                  -  "fontStyle" => ["font-weight", method(:font_weight)],
                                  -}
                                  -
                                  -def gen_rule(dict)
                                  -  scope = dict["scope"]
                                  -  selector = detect_selector_from_scope(scope)
                                  -  return "" unless selector
                                  -  settings = dict["settings"]
                                  -  return "" unless settings
                                  -  
                                  -  rule = {}
                                  -  KNOWN_ATTRIBUTES.each do |attr, spec|
                                  -    next unless settings[attr]
                                  -    spec = [spec] unless spec.is_a?(Array)
                                  -    
                                  -    val = settings[attr]
                                  -    val = spec[1].call(val) if spec[1]
                                  -    rule[spec[0]] = val if val
                                  -  end
                                  -  
                                  -  return "" unless rule.keys.size>0
                                  -  
                                  -  if (selector==".panelNode-script") then
                                  -    rule["font-family"] = "Monaco, Courier New"
                                  -    rule["font-size"] = "11px"
                                  -    
                                  -    additional = ""
                                  -    highlight = color(settings["lineHighlight"]) if settings["lineHighlight"]
                                  -    additional += ".sourceRow.hovered { background-color: #{highlight}; }\n\n" if highlight
                                  -    selection = color(settings["selection"]) if settings["selection"]
                                  -    additional += ".sourceRow[exeLine=\"true\"] { background-color: #{selection}; }\n\n" if selection
                                  -  end
                                  -  
                                  -  res = "#{selector} {\n"
                                  -  rule.each do |key, value| 
                                  -    res += "  #{key}: #{value};\n"
                                  -  end
                                  -  res += "}\n\n"
                                  -
                                  -  res += additional if additional
                                  -  res
                                  -end
                                  -
                                  -def gen_css(data, source)
                                  -  desc  = "#{data["name"]}"
                                  -  desc += " by #{data["author"]}" if data["author"]
                                  -  desc += ", converted from TextMate theme (#{source})"
                                  -  
                                  -  res = "/* #{desc} */\n\n"
                                  -  
                                  -  data["settings"].each do |dict|
                                  -    res += gen_rule(dict)
                                  -  end
                                  -  
                                  -  {
                                  -    "css" => res,
                                  -    "name" => data["name"],
                                  -    "author" => data["author"],
                                  -    "description" => desc
                                  -  }
                                  -end
                                  -
                                  -def my_mkdir(dir)
                                  -  puts "#{cmd_color('creating directory')} #{dir_color(dir)}"
                                  -  mkdir dir
                                  -end
                                  -
                                  -def process(dir)
                                  -  files = Dir.glob(File.join(dir, "**", "*.tmTheme"))
                                  -  files.each do |filename|
                                  -    basename = File.basename(filename)
                                  -    puts "  Converting #{file_color(basename)}"
                                  -    data = Plist::parse_xml(filename)
                                  -    preset = gen_css(data, basename)
                                  -    preset["basename"] = basename
                                  -    yield preset
                                  -  end
                                  -end
                                  -
                                  -task :convert do 
                                  -  my_mkdir(DST_THEMES) unless File.exist?(DST_THEMES)
                                  -  puts "Scanning #{dir_color(THEMES_DIR)} ..."
                                  -  process(THEMES_DIR) do |preset|
                                  -    res = File.join(DST_THEMES, preset["basename"] + ".css")
                                  -    File.open(res, "w") do |file|
                                  -      file.write preset["css"]
                                  -    end
                                  -  end
                                  -end
                                  -
                                  -task :sql do
                                  -  puts "Generating sql ..."
                                  -  
                                  -  res = ""
                                  -  process(THEMES_DIR) do |preset|
                                  -    name = preset["name"].downcase.gsub(/[\(\)&]/, "").gsub(/[ \t]/, "_").gsub(/'/, "''")
                                  -    title = preset["name"].gsub(/'/, "''")
                                  -    desc = preset["description"].gsub(/'/, "''")
                                  -    code = preset["css"].gsub(/\n/, "\\r\\n").gsub(/'/, "''").gsub(/"/, "&quot;")
                                  -    res += "('#{name}', '#{title}', '#{desc}', '#{code}', '2008-06-14 18:19:36', '2008-06-14 18:24:04'),\n"
                                  -  end
                                  -  
                                  -  puts res
                                  -end
                                  -
                                  -task :default => :convert
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/boot.js b/branches/flexBox/content/lite/boot.js
                                  deleted file mode 100644
                                  index 4a529401..00000000
                                  --- a/branches/flexBox/content/lite/boot.js
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.initialize();
                                  diff --git a/branches/flexBox/content/lite/chrome.js b/branches/flexBox/content/lite/chrome.js
                                  deleted file mode 100644
                                  index fb6bd585..00000000
                                  --- a/branches/flexBox/content/lite/chrome.js
                                  +++ /dev/null
                                  @@ -1,2367 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbTop,
                                  -    fbContent,
                                  -    fbContentStyle,
                                  -    fbBottom,
                                  -    fbBtnInspect,
                                  -
                                  -    fbToolbar,
                                  -
                                  -    fbPanelBox1,
                                  -    fbPanelBox1Style,
                                  -    fbPanelBox2,
                                  -    fbPanelBox2Style,
                                  -    fbPanelBar2Box,
                                  -    fbPanelBar2BoxStyle,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -    fbVSplitterStyle,
                                  -
                                  -    fbPanel1,
                                  -    fbPanel1Style,
                                  -    fbPanel2,
                                  -    fbPanel2Style,
                                  -
                                  -    fbConsole,
                                  -    fbConsoleStyle,
                                  -    fbHTML,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.addController(
                                  -            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        /*
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            }
                                  -    
                                  -            addEvent(Firebug.chrome.document, "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -        
                                  -        this.addController(
                                  -                [fbPanel1, "mousedown", onPanelMouseDown],
                                  -                [fbPanel2, "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = this.getSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), 
                                  -            
                                  -            height = heightValue + "px",
                                  -            
                                  -            // Width related values
                                  -            sideWidthValue = Firebug.chrome.sidePanelVisible ? Firebug.context.persistedState.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidthValue = Math.max(sideWidthValue - 6, 0);
                                  -            
                                  -            var sideWidth = sideWidthValue + "px";
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -            
                                  -            if (Firebug.chrome.largeCommandLineVisible)
                                  -            {
                                  -                fbLargeCommandLine = $("fbLargeCommandLine");
                                  -                
                                  -                fbLargeCommandLine.style.height = heightValue - 4 + "px";
                                  -                fbLargeCommandLine.style.width = sideWidthValue - 2 + "px";
                                  -                
                                  -                fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -                fbLargeCommandButtons.style.width = sideWidth;
                                  -            }
                                  -            else
                                  -            {
                                  -                fbPanel2Style.height = height;
                                  -                fbPanel2Style.width = sideWidth;
                                  -                
                                  -                fbPanelBar2BoxStyle.width = sideWidth;
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            fbBottom.className = "";
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            fbBottom.className = "hide";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/chromeNew.js b/branches/flexBox/content/lite/chromeNew.js
                                  deleted file mode 100644
                                  index 300d88c6..00000000
                                  --- a/branches/flexBox/content/lite/chromeNew.js
                                  +++ /dev/null
                                  @@ -1,2308 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope ns-chrome*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI"
                                  -        //height: 350 // obsolete
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbBtnInspect,
                                  -
                                  -    fbMainToolbarBox,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -
                                  -var panelBar1, panelBar2, panelContainer, sidePanelContainer, panelDocument, sidePanelDocument;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -// xxxpedro chromenew hack
                                  -Firebug.framesLoaded = 0;
                                  -var numberOfFramesToLoad = 3;
                                  -
                                  -FBL.defaultPersistedState = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    isOpen: false,
                                  -    height: 300,
                                  -    sidePanelWidth: 350,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: []
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -/**@namespace*/
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    //isOpen: false,
                                  -    //height: 300,
                                  -    //sidePanelWidth: 350,
                                  -    
                                  -    //selectedPanelName: "Console",
                                  -    //selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    // FIXME xxxpedro chromenew: is this the right place to reset the framesLoaded?
                                  -    Firebug.framesLoaded = 0;
                                  -    
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -
                                  -    var browserWin = Env.browser.window;
                                  -    var browserContext = new Context(browserWin);
                                  -    var prefs = Store.get("FirebugLite");
                                  -    var persistedState = prefs && prefs.persistedState || defaultPersistedState;
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            if (!Env.isDebugMode)
                                  -            {
                                  -                node.firebugIgnore = true;
                                  -            }
                                  -            
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            var height = persistedState.height || 300;
                                  -            
                                  -            height = Math.min(browserWinSize.height, height);
                                  -            height = Math.max(200, height);
                                  -            
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            //if (isFirefox)
                                  -            //    node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            //Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.Skin.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                node.firstChild.style.height = "1px";
                                  -                node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarklet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = persistedState.popupHeight || 300;
                                  -            var browserWinSize = browserContext.getWindowSize();
                                  -            
                                  -            var browserWinLeft = typeof browserWin.screenX == "number" ? 
                                  -                    browserWin.screenX : browserWin.screenLeft;
                                  -            
                                  -            var popupLeft = typeof persistedState.popupLeft == "number" ?
                                  -                    persistedState.popupLeft : browserWinLeft;
                                  -            
                                  -            var browserWinTop = typeof browserWin.screenY == "number" ? 
                                  -                    browserWin.screenY : browserWin.screenTop;
                                  -
                                  -            var popupTop = typeof persistedState.popupTop == "number" ?
                                  -                    persistedState.popupTop :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinTop + browserWinSize.height - height,
                                  -                                    // Google Chrome bug
                                  -                                    screen.availHeight - height - 61
                                  -                                ) 
                                  -                            );
                                  -            
                                  -            var popupWidth = typeof persistedState.popupWidth == "number" ? 
                                  -                    persistedState.popupWidth :
                                  -                    Math.max(
                                  -                            0,
                                  -                            Math.min(
                                  -                                    browserWinSize.width,
                                  -                                    // Opera opens popup in a new tab if it's too big!
                                  -                                    screen.availWidth-10 
                                  -                                ) 
                                  -                            );
                                  -
                                  -            var popupHeight = typeof persistedState.popupHeight == "number" ?
                                  -                    persistedState.popupHeight : 300;
                                  -            
                                  -            var options = [
                                  -                    "true,top=", popupTop,
                                  -                    ",left=", popupLeft, 
                                  -                    ",height=", popupHeight,
                                  -                    ",width=", popupWidth, 
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     Firebug.framesLoaded == numberOfFramesToLoad && 
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    }, useLocalSkin ? 200 : 0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarklet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.Skin.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.Skin; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -/**@class*/
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit from base class (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, new Context(chrome.window)); // inherit from Context class
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller 
                                  - * @extends FBL.PanelBar 
                                  - **/
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase,
                                  -/**@extend ns-chrome-ChromeBase*/
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getPanelContainer: function()
                                  -    {
                                  -        return panelContainer;
                                  -    },
                                  -    
                                  -    getSidePanelContainer: function()
                                  -    {
                                  -        return sidePanelContainer;
                                  -    },
                                  -    
                                  -    getPanelDocument: function(panelType)
                                  -    {
                                  -        if (panelType.prototype.parentPanel)
                                  -            return sidePanelDocument;
                                  -        else
                                  -            return panelDocument;
                                  -    },
                                  -    
                                  -    // xxxpedro
                                  -    getSidePanelDocument: function()
                                  -    {
                                  -        return sidePanelDocument;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {   
                                  -        panelBar1 = $("fbPanelBar1-content");
                                  -        panelBar2 = $("fbPanelBar2-content");
                                  -        
                                  -        panelContainer = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document.body : 
                                  -                panelBar1;
                                  -        
                                  -        sidePanelContainer = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document.body : 
                                  -                panelBar2;
                                  -        
                                  -        panelDocument = panelBar1.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar1.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        sidePanelDocument = panelBar2.nodeName.toLowerCase() == "iframe" ? 
                                  -                panelBar2.contentWindow.document : 
                                  -                Firebug.chrome.document;
                                  -        
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new IconButton({
                                  -                type: "toggle",
                                  -                element: $("fbInspectButton"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        /**@private*/
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable XHR Listener",
                                  -                        type: "checkbox",
                                  -                        value: "disableXHRListener",
                                  -                        checked: Firebug.disableXHRListener,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable Resource Fetching",
                                  -                        type: "checkbox",
                                  -                        value: "disableResourceFetching",
                                  -                        checked: Firebug.disableResourceFetching,
                                  -                        disabled: cookiesDisabled
                                  -                    },                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Reset All Firebug Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew  
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.activate();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Env.bookmarkletOutdated)
                                  -            Firebug.Console.logFormatted([
                                  -                  "A new bookmarklet version is available. " +
                                  -                  "Please visit http://getfirebug.com/firebuglite#Install and update it."
                                  -                ], Firebug.context, "warn");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        // FIXME xxxpedro is this being used?
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbMainToolbarBox = $("fbMainToolbarBox");
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        //topHeight = fbTop.offsetHeight;
                                  -        //topPartialHeight = fbMainToolbarBox.offsetHeight;
                                  -        topHeight = 0;
                                  -        topPartialHeight = 0;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        //disableTextSelection($("fbMainToolbarBox"));
                                  -        //disableTextSelection($("fbPanelBarBox"));
                                  -        //disableTextSelection($("fbPanelBar1"));
                                  -        //disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -//        this.addController(
                                  -//            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -//        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(Firebug.context.persistedState.selectedPanelName);
                                  -            
                                  -            if (Firebug.context.persistedState.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -        
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -        var onPanelMouseDown = function onPanelMouseDown(event)
                                  -        {
                                  -            //console.log("onPanelMouseDown", event.target || event.srcElement, event);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (FBL.isLeftClick(event))
                                  -            {
                                  -                var editable = FBL.getAncestorByClass(target, "editable");
                                  -                
                                  -                // if an editable element has been clicked then start editing
                                  -                if (editable)
                                  -                {
                                  -                    Firebug.Editor.startEditing(editable);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -                // if any other element has been clicked then stop editing
                                  -                else
                                  -                {
                                  -                    if (!hasClass(target, "textEditorInner"))
                                  -                        Firebug.Editor.stopEditing();
                                  -                }
                                  -            }
                                  -            else if (FBL.isMiddleClick(event) && Firebug.getRepNode(target))
                                  -            {
                                  -                // Prevent auto-scroll when middle-clicking a rep object
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        };
                                  -        
                                  -        Firebug.getElementPanel = function(element)
                                  -        {
                                  -            var panelNode = getAncestorByClass(element, "fbPanel");
                                  -            var id = panelNode.id.substr(2);
                                  -            
                                  -            var panel = Firebug.chrome.panelMap[id];
                                  -            
                                  -            if (!panel)
                                  -            {
                                  -                if (Firebug.chrome.selectedPanel.sidePanelBar)
                                  -                    panel = Firebug.chrome.selectedPanel.sidePanelBar.panelMap[id];
                                  -            }
                                  -            
                                  -            return panel;
                                  -        };
                                  -        
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // TODO: xxxpedro port to Firebug
                                  -        
                                  -        // Improved window key code event listener. Only one "keydown" event will be attached
                                  -        // to the window, and the onKeyCodeListen() function will delegate which listeners
                                  -        // should be called according to the event.keyCode fired.
                                  -        var onKeyCodeListenersMap = [];
                                  -        var onKeyCodeListen = function(event)
                                  -        {
                                  -            for (var keyCode in onKeyCodeListenersMap)
                                  -            {
                                  -                var listeners = onKeyCodeListenersMap[keyCode];
                                  -                
                                  -                for (var i = 0, listener; listener = listeners[i]; i++)
                                  -                {
                                  -                    var filter = listener.filter || FBL.noKeyModifiers;
                                  -        
                                  -                    if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                    {
                                  -                        listener.listener();
                                  -                        FBL.cancelEvent(event, true);
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        addEvent(Firebug.chrome.document, "keydown", onKeyCodeListen);
                                  -
                                  -        /**
                                  -         * @name keyCodeListen
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -            
                                  -            if (!onKeyCodeListenersMap[keyCode])
                                  -                onKeyCodeListenersMap[keyCode] = [];
                                  -            
                                  -            onKeyCodeListenersMap[keyCode].push({
                                  -                filter: filter,
                                  -                listener: listener
                                  -            });
                                  -    
                                  -            return keyCode;
                                  -        };
                                  -        
                                  -        /**
                                  -         * @name keyIgnore
                                  -         * @memberOf FBL.FirebugChrome
                                  -         */
                                  -        Firebug.chrome.keyIgnore = function(keyCode)
                                  -        {
                                  -            onKeyCodeListenersMap[keyCode] = null;
                                  -            delete onKeyCodeListenersMap[keyCode];
                                  -        };
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        /**/
                                  -        // move to shutdown 
                                  -        //removeEvent(Firebug.chrome.document, "keydown", listener[0]);
                                  -
                                  -
                                  -        
                                  -        Firebug.chrome.keyCodeListen = function(key, filter, listener, capture)
                                  -        {
                                  -            if (!filter)
                                  -                filter = FBL.noKeyModifiers;
                                  -    
                                  -            var keyCode = KeyEvent["DOM_VK_"+key];
                                  -    
                                  -            var fn = function fn(event)
                                  -            {
                                  -                if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -                {
                                  -                    listener();
                                  -                    FBL.cancelEvent(event, true);
                                  -                    return false;
                                  -                }
                                  -            };
                                  -    
                                  -            addEvent(this.getSidePanelDocument(), "keydown", fn);
                                  -            
                                  -            return [fn, capture];
                                  -        };
                                  -        
                                  -        Firebug.chrome.keyIgnore = function(listener)
                                  -        {
                                  -            removeEvent(this.getSidePanelDocument(), "keydown", listener[0]);
                                  -        };
                                  -        /**/
                                  -        
                                  -
                                  -        this.addController(
                                  -                [this.getPanelContainer(), "mousedown", onPanelMouseDown],
                                  -                [this.getSidePanelContainer(), "mousedown", onPanelMouseDown]
                                  -             );
                                  -/**/
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.CommandLine) Firebug.CommandLine.deactivate();
                                  -
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        //restoreTextSelection($("fbMainToolbarBox"));
                                  -        //restoreTextSelection($("fbPanelBarBox"));
                                  -        //restoreTextSelection($("fbPanelBar1"));
                                  -        //restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache (this must happen after calling 
                                  -        // the shutdown method of all dependent components to avoid errors)
                                  -
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbMainToolbarBox = null;
                                  -
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !Firebug.context.persistedState.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {
                                  -            this.close();
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.panelNode.innerHTML = oldPanelMap[name].panelNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            Firebug.context.persistedState.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            // FIXME xxxpedro chromenew
                                  -            //self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -//        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase 
                                  - */ 
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromeFrameBase*/
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.height = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach],       
                                  -            [$("fbWindow_btDeactivate"), "click", this.deactivate]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -//        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -//        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // FIXME xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = null;
                                  -        ///fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            Firebug.context.persistedState.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,1");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbContentBox");
                                  -            
                                  -            // IE6 throws an error when setting this property! why?
                                  -            //main.style.display = "table";
                                  -            main.style.display = "";
                                  -            
                                  -            var self = this;
                                  -                /// TODO: xxxpedro FOUC
                                  -                node.style.visibility = "visible";
                                  -            setTimeout(function(){
                                  -                ///node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -//                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.isOpen)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            Firebug.context.persistedState.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("Firebug", "1,0");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbContentBox", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        // if it is running as a Chrome extension, dispatch a message to the extension signaling
                                  -        // that Firebug should be deactivated for the current tab
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            localStorage.removeItem("Firebug");
                                  -            Firebug.GoogleChrome.dispatch("FB_deactivate");
                                  -
                                  -            // xxxpedro problem here regarding Chrome extension. We can't deactivate the whole
                                  -            // app, otherwise it won't be able to be reactivated without reloading the page.
                                  -            // but we need to stop listening global keys, otherwise the key activation won't work.
                                  -            Firebug.chrome.close();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.shutdown();
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        // FIXME xxxpedro chromenew
                                  -        ///if (fbVSplitterStyle)
                                  -        ///    fbVSplitterStyle.right = Firebug.context.persistedState.sidePanelWidth + "px";
                                  -        
                                  -        ///this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends FBL.Controller
                                  - */  
                                  -var ChromeMini = extend(Controller,
                                  -/**@extend ns-chrome-ChromeMini*/ 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = Firebug.context.persistedState.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -/**
                                  - * @namespace
                                  - * @extends ns-chrome-ChromeBase
                                  - */  
                                  -var ChromePopupBase = extend(ChromeBase,
                                  -/**@extend ns-chrome-ChromePopupBase*/
                                  -{
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -            //[Firebug.chrome.window, "beforeunload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        /// xxxpedro chromenew
                                  -        ///fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        var chromeWin = Firebug.chrome.window; 
                                  -        var left = chromeWin.screenX || chromeWin.screenLeft;
                                  -        var top = chromeWin.screenY || chromeWin.screenTop;
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        Firebug.context.persistedState.popupTop = top;
                                  -        Firebug.context.persistedState.popupLeft = left;
                                  -        Firebug.context.persistedState.popupWidth = size.width;
                                  -        Firebug.context.persistedState.popupHeight = size.height;
                                  -        
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        // exposes the FBL to the global namespace when in debug mode
                                  -                        if (Env.isDebugMode)
                                  -                        {
                                  -                            window.FBL = FBL;
                                  -                        }
                                  -                        
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                        Firebug.loadPrefs();                        
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        // the delay time should be calculated right after registering the 
                                  -                        // console, once right after the console registration, call log messages
                                  -                        // will be properly handled
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist);
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        Firebug.Console.logFormatted(
                                  -                            ["Firebug could not capture console calls during " +
                                  -                            persistDelay + "ms"],
                                  -                            Firebug.context,
                                  -                            "info"
                                  -                        );
                                  -                        
                                  -                        setTimeout(function(){
                                  -                            var htmlPanel = chrome.getPanel("HTML");
                                  -                            htmlPanel.createUI();
                                  -                        },50);
                                  -                        
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    // FIXME: xxxpedro chromenew
                                  -    return;
                                  -    
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            removeClass($("fbContentBox"), "hideCommandLine");
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            setClass($("fbContentBox"), "hideCommandLine");
                                  -        }
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -            removeClass($("fbContentBox"), "hideSidePanelBar");
                                  -        else
                                  -            setClass($("fbContentBox"), "hideSidePanelBar");
                                  -        
                                  -        Firebug.chrome.window.flexBox.invalidate();
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -
                                  -        // TODO: xxxpedro replace with a better solution. we're doing this
                                  -        // to allow reactivating with the F12 key after being deactivated
                                  -        if (Env.isChromeExtension)
                                  -        {
                                  -            Firebug.GoogleChrome.dispatch("FB_enableIcon");
                                  -        }
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.defaultView || event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    Firebug.context.persistedState.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            Firebug.context.persistedState.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/chromeSkin.js b/branches/flexBox/content/lite/chromeSkin.js
                                  deleted file mode 100644
                                  index c108a612..00000000
                                  --- a/branches/flexBox/content/lite/chromeSkin.js
                                  +++ /dev/null
                                  @@ -1,13 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.Skin = 
                                  -{
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors"></span></span></span>',
                                  -    CSS: '.obscured{left:-999999px !important;}.collapsed{display:none;}[collapsed="true"]{display:none;}#fbCSS{padding:0 !important;}.cssPropDisable{float:left;display:block;width:2em;cursor:default;}.infoTip{z-index:2147483647;position:fixed;padding:2px 3px;border:1px solid #CBE087;background:LightYellow;font-family:Monaco,monospace;color:#000000;display:none;white-space:nowrap;pointer-events:none;}.infoTip[active="true"]{display:block;}.infoTipLoading{width:16px;height:16px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif) no-repeat;}.infoTipImageBox{font-size:11px;min-width:100px;text-align:center;}.infoTipCaption{font-size:11px;font:Monaco,monospace;}.infoTipLoading > .infoTipImage,.infoTipLoading > .infoTipCaption{display:none;}h1.groupHeader{padding:2px 4px;margin:0 0 4px 0;border-top:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;background:#eee url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x;font-size:11px;font-weight:bold;_position:relative;}.inlineEditor,.fixedWidthEditor{z-index:2147483647;position:absolute;display:none;}.inlineEditor{margin-left:-6px;margin-top:-3px;}.textEditorInner,.fixedWidthEditor{margin:0 0 0 0 !important;padding:0;border:none !important;font:inherit;text-decoration:inherit;background-color:#FFFFFF;}.fixedWidthEditor{border-top:1px solid #888888 !important;border-bottom:1px solid #888888 !important;}.textEditorInner{position:relative;top:-7px;left:-5px;outline:none;resize:none;}.textEditorInner1{padding-left:11px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y;_overflow:hidden;}.textEditorInner2{position:relative;padding-right:2px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.png) repeat-y 100% 0;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorBorders.gif) repeat-y 100% 0;_position:fixed;}.textEditorTop1{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 0;margin-left:11px;height:10px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 0;_overflow:hidden;}.textEditorTop2{position:relative;left:-11px;width:11px;height:10px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat;}.textEditorBottom1{position:relative;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 100% 100%;margin-left:11px;height:12px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 100% 100%;}.textEditorBottom2{position:relative;left:-11px;width:11px;height:12px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.png) no-repeat 0 100%;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/textEditorCorners.gif) no-repeat 0 100%;}.panelNode-css{overflow-x:hidden;}.cssSheet > .insertBefore{height:1.5em;}.cssRule{position:relative;margin:0;padding:1em 0 0 6px;font-family:Monaco,monospace;color:#000000;}.cssRule:first-child{padding-top:6px;}.cssElementRuleContainer{position:relative;}.cssHead{padding-right:150px;}.cssProp{}.cssPropName{color:DarkGreen;}.cssPropValue{margin-left:8px;color:DarkBlue;}.cssOverridden span{text-decoration:line-through;}.cssInheritedRule{}.cssInheritLabel{margin-right:0.5em;font-weight:bold;}.cssRule .objectLink-sourceLink{top:0;}.cssProp.editGroup:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disable.gif) no-repeat 2px 1px;}.cssProp.editGroup.editing{background:none;}.cssProp.disabledStyle{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.png) no-repeat 2px 1px;_background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/disableHover.gif) no-repeat 2px 1px;opacity:1;color:#CCCCCC;}.disabledStyle .cssPropName,.disabledStyle .cssPropValue{color:#CCCCCC;}.cssPropValue.editing + .cssSemi,.inlineExpander + .cssSemi{display:none;}.cssPropValue.editing{white-space:nowrap;}.stylePropName{font-weight:bold;padding:0 4px 4px 4px;width:50%;}.stylePropValue{width:50%;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;white-space:pre-wrap;}.netInfoTextSelected{display:block;}.netInfoParamName{padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoPostText .netInfoParamName{width:1px;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-log > .objectBox-array.hasTwisty,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel,.netPageRow > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;min-height:12px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-log > .objectBox-array.hasTwisty.opened,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel,.netPageRow.opened > .netCol > .netPageTitle{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}.twisty{background-position:4px 4px;}* html .logRow-spy .spyHead .spyTitle,* html .logGroup .logGroupLabel,* html .hasChildren .memberLabelCell .memberLabel,* html .hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}* html .opened .spyHead .spyTitle,* html .opened .logGroupLabel,* html .opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);background-repeat:no-repeat;background-position:2px 2px;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#f8f8f8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectProp-object{color:DarkGreen;}.objectProps{color:#000;font-weight:normal;}.objectPropName{color:#777;}.objectProps .objectProp-string{color:#f55;}.objectProps .objectProp-number{color:#55a;}.objectProps .objectProp-object{color:#585;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.objectLeftBrace,.objectRightBrace,.objectEqual,.objectComma,.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.objectLeftBrace,.objectRightBrace,.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.objectLeftBrace,.arrayLeftBracket{margin-right:4px;}.objectRightBrace,.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbstylesheetButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;outline:none;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;line-height:13px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;_position:static;top:0;left:0;height:100%;width:100%;border-collapse:collapse;border-spacing:0;background:#fff;overflow:hidden;}#fbChrome > tbody > tr > td{padding:0;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;line-height:13px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:48px;padding:5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:fixed;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;}#fbWindow_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/min.png);}#fbWindow_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/minHover.png);}#fbWindow_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detach.png);}#fbWindow_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/detachHover.png);}#fbWindow_btDeactivate{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/off.png);}#fbWindow_btDeactivate:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/offHover.png);}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;line-height:13px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em/1.4545em Monaco,monospace;position:relative;float:left;top:0;left:0;margin:0 5px 0 0;padding:0 5px 0 10px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warn{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/infoIcon.gif);}.logRow-warn{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/flexBox/skin/flexBox/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/commandLine.js b/branches/flexBox/content/lite/commandLine.js
                                  deleted file mode 100644
                                  index e9119365..00000000
                                  --- a/branches/flexBox/content/lite/commandLine.js
                                  +++ /dev/null
                                  @@ -1,554 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    Firebug.context.persistedState.commandHistory.push(command);
                                  -    Firebug.context.persistedState.commandPointer = 
                                  -        Firebug.context.persistedState.commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        defineCommandLineAPI();
                                  -        
                                  -         Firebug.context.persistedState.commandHistory =  
                                  -             Firebug.context.persistedState.commandHistory || [];
                                  -
                                  -         Firebug.context.persistedState.commandPointer =  
                                  -             Firebug.context.persistedState.commandPointer || -1;
                                  -        
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null;
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API";
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        Firebug.Console.log(commandPrefix + " " + stripNewLines(command), 
                                  -                Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        Firebug.Console.log(result);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (Firebug.context.persistedState.commandPointer > 0 && 
                                  -            Firebug.context.persistedState.commandHistory.length > 0)
                                  -        {
                                  -            this.element.value = Firebug.context.persistedState.commandHistory
                                  -                                    [--Firebug.context.persistedState.commandPointer];
                                  -        }
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = Firebug.context.persistedState.commandHistory.length -1;
                                  -        var i = Firebug.context.persistedState.commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = Firebug.context.persistedState.commandHistory
                                  -                              [++Firebug.context.persistedState.commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++Firebug.context.persistedState.commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        href = href || "";
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        var html = [
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          ];
                                  -        
                                  -        // TODO: xxxpedro ajust to Console2
                                  -        //Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id);
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: function(o)
                                  -    {
                                  -        Firebug.Console.log(o, Firebug.context, "dir", Firebug.DOMPanel.DirTable);
                                  -    },
                                  -
                                  -    dirxml: function(o)
                                  -    {
                                  -        ///if (o instanceof Window)
                                  -        if (instanceOf(o, "Window"))
                                  -            o = o.document.documentElement;
                                  -        ///else if (o instanceof Document)
                                  -        else if (instanceOf(o, "Document"))
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console.log(o, Firebug.context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var defineCommandLineAPI = function defineCommandLineAPI()
                                  -{
                                  -    Firebug.CommandLine.API = {};
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -    
                                  -    var stack = FirebugChrome.htmlSelectionStack;
                                  -    if (stack)
                                  -    {
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/context.js b/branches/flexBox/content/lite/context.js
                                  deleted file mode 100644
                                  index d2ca541e..00000000
                                  --- a/branches/flexBox/content/lite/context.js
                                  +++ /dev/null
                                  @@ -1,647 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_context*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var refreshDelay = 300;
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -
                                  -/** @class */
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    this.browser = Env.browser;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // partial-port of Firebug tabContext.js
                                  -    
                                  -    browser: null,
                                  -    loaded: true,
                                  -    
                                  -    setTimeout: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        if (win.setTimeout == this.setTimeout)
                                  -            throw new Error("setTimeout recursion");
                                  -        
                                  -        var timeout = win.setTimeout.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setTimeout.apply(win, arguments) :
                                  -                win.setTimeout(fn, delay);
                                  -
                                  -        if (!this.timeouts)
                                  -            this.timeouts = {};
                                  -
                                  -        this.timeouts[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearTimeout: function(timeout)
                                  -    {
                                  -        clearTimeout(timeout);
                                  -
                                  -        if (this.timeouts)
                                  -            delete this.timeouts[timeout];
                                  -    },
                                  -
                                  -    setInterval: function(fn, delay)
                                  -    {
                                  -        var win = this.window;
                                  -        
                                  -        var timeout = win.setInterval.apply ? // IE doesn't have apply method on setTimeout
                                  -                win.setInterval.apply(win, arguments) :
                                  -                win.setInterval(fn, delay);
                                  -
                                  -        if (!this.intervals)
                                  -            this.intervals = {};
                                  -
                                  -        this.intervals[timeout] = 1;
                                  -
                                  -        return timeout;
                                  -    },
                                  -
                                  -    clearInterval: function(timeout)
                                  -    {
                                  -        clearInterval(timeout);
                                  -
                                  -        if (this.intervals)
                                  -            delete this.intervals[timeout];
                                  -    },
                                  -
                                  -    invalidatePanels: function()
                                  -    {
                                  -        if (!this.invalidPanels)
                                  -            this.invalidPanels = {};
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -        {
                                  -            var panelName = arguments[i];
                                  -            
                                  -            // avoid error. need to create a better getPanel() function as explained below
                                  -            if (!Firebug.chrome || !Firebug.chrome.selectedPanel)
                                  -                return;
                                  -            
                                  -            //var panel = this.getPanel(panelName, true);
                                  -            //TODO: xxxpedro context how to get all panels using a single function?
                                  -            // the current workaround to make the invalidation works is invalidating
                                  -            // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -            var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                    Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                    null;
                                  -            
                                  -            if (panel && !panel.noRefresh)
                                  -                this.invalidPanels[panelName] = 1;
                                  -        }
                                  -
                                  -        if (this.refreshTimeout)
                                  -        {
                                  -            this.clearTimeout(this.refreshTimeout);
                                  -            delete this.refreshTimeout;
                                  -        }
                                  -
                                  -        this.refreshTimeout = this.setTimeout(bindFixed(function()
                                  -        {
                                  -            var invalids = [];
                                  -
                                  -            for (var panelName in this.invalidPanels)
                                  -            {
                                  -                //var panel = this.getPanel(panelName, true);
                                  -                //TODO: xxxpedro context how to get all panels using a single function?
                                  -                // the current workaround to make the invalidation works is invalidating
                                  -                // only sidePanels. There's also a problem with panel name (LowerCase in Firebug Lite)
                                  -                var panel = Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                        Firebug.chrome.selectedPanel.sidePanelBar.getPanel(panelName, true) :
                                  -                        null;
                                  -
                                  -                if (panel)
                                  -                {
                                  -                    if (panel.visible && !panel.editing)
                                  -                        panel.refresh();
                                  -                    else
                                  -                        panel.needsRefresh = true;
                                  -
                                  -                    // If the panel is being edited, we'll keep trying to
                                  -                    // refresh it until editing is done
                                  -                    if (panel.editing)
                                  -                        invalids.push(panelName);
                                  -                }
                                  -            }
                                  -
                                  -            delete this.invalidPanels;
                                  -            delete this.refreshTimeout;
                                  -
                                  -            // Keep looping until every tab is valid
                                  -            if (invalids.length)
                                  -                this.invalidatePanels.apply(this, invalids);
                                  -        }, this), refreshDelay);
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var isObjectLiteral = trim(expr).indexOf("{") == 0,
                                  -            cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // If it is an object literal, then wrap the expression with parenthesis so we can 
                                  -            // capture the return value
                                  -            if (isObjectLiteral)
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ ("+expr+") }" :
                                  -                    "(" + expr + ")";
                                  -            }
                                  -            else
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            cmd = api ?
                                  -                // with API and context, no return value
                                  -                "(function(arguments){ with(" + api + "){ " +
                                  -                    expr + 
                                  -                " } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, no return value
                                  -                "(function(arguments){ " + 
                                  -                    expr + 
                                  -                " }).call(" + context + ",undefined)";
                                  -        }
                                  -        
                                  -        result = this.eval(cmd);
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg);
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        else if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -        
                                  -        else if (unit == "ex")
                                  -            return this.exToPixels(el, value);
                                  -        
                                  -        // TODO: add other units. Maybe create a better general way
                                  -        // to calculate measurements in different units.    
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        };
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getStyle: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/css/cssAnalyzer.js b/branches/flexBox/content/lite/css/cssAnalyzer.js
                                  deleted file mode 100644
                                  index 21df30ac..00000000
                                  --- a/branches/flexBox/content/lite/css/cssAnalyzer.js
                                  +++ /dev/null
                                  @@ -1,623 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet Parser
                                  -
                                  -var CssAnalyzer = {};
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var CSSRuleMap = {};
                                  -var ElementCSSRulesMap = {};
                                  -
                                  -var internalStyleSheetIndex = -1;
                                  -
                                  -var reSelectorTag = /(^|\s)(?:\w+)/g;
                                  -var reSelectorClass = /\.[\w\d_-]+/g;
                                  -var reSelectorId = /#[\w\d_-]+/g;
                                  -
                                  -var globalCSSRuleIndex;
                                  -
                                  -var processAllStyleSheetsTimeout = null;
                                  -
                                  -var externalStyleSheetURLs = [];
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var StyleSheetCache = Firebug.Lite.Cache.StyleSheet;
                                  -
                                  -//************************************************************************************************
                                  -// CSS Analyzer templates
                                  -
                                  -CssAnalyzer.externalStyleSheetWarning = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "warning focusRow", style: "font-weight:normal;", role: 'listitem'},
                                  -            SPAN("$object|STR"),
                                  -            A({"href": "$href", target:"_blank"}, "$link|STR")
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Analyzer methods
                                  -
                                  -CssAnalyzer.processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    try
                                  -    {
                                  -        processAllStyleSheets(doc, styleSheetIterator);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.processAllStyleSheets fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * 
                                  - * @param element
                                  - * @returns {String[]} Array of IDs of CSS Rules
                                  - */
                                  -CssAnalyzer.getElementCSSRules = function(element)
                                  -{
                                  -    try
                                  -    {
                                  -        return getElementCSSRules(element);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        // TODO: FBTrace condition
                                  -        FBTrace.sysout("CssAnalyzer.getElementCSSRules fails: ", e);
                                  -    }
                                  -};
                                  -
                                  -CssAnalyzer.getRuleData = function(ruleId)
                                  -{
                                  -    return CSSRuleMap[ruleId];
                                  -};
                                  -
                                  -// TODO: do we need this?
                                  -CssAnalyzer.getRuleLine = function()
                                  -{
                                  -};
                                  -
                                  -CssAnalyzer.hasExternalStyleSheet = function()
                                  -{
                                  -    return externalStyleSheetURLs.length > 0;
                                  -};
                                  -
                                  -CssAnalyzer.parseStyleSheet = function(href)
                                  -{
                                  -    var sourceData = extractSourceData(href);
                                  -    var parsedObj = CssParser.read(sourceData.source, sourceData.startLine);
                                  -    var parsedRules = parsedObj.children;
                                  -    
                                  -    // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -    //
                                  -    // Ignore all special selectors like @media and @page
                                  -    for(var i=0; i < parsedRules.length; )
                                  -    {
                                  -        if (parsedRules[i].selector.indexOf("@") != -1)
                                  -        {
                                  -            parsedRules.splice(i, 1);
                                  -        }
                                  -        else
                                  -            i++;
                                  -    }
                                  -    
                                  -    return parsedRules;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Internals
                                  -//************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet processing
                                  -
                                  -var processAllStyleSheets = function(doc, styleSheetIterator)
                                  -{
                                  -    styleSheetIterator = styleSheetIterator || processStyleSheet;
                                  -    
                                  -    globalCSSRuleIndex = -1;
                                  -    
                                  -    var styleSheets = doc.styleSheets;
                                  -    var importedStyleSheets = [];
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -        var start = new Date().getTime();
                                  -    
                                  -    for(var i=0, length=styleSheets.length; i<length; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            
                                  -            if ("firebugIgnore" in styleSheet) continue;
                                  -            
                                  -            // we must read the length to make sure we have permission to read 
                                  -            // the stylesheet's content. If an error occurs here, we cannot 
                                  -            // read the stylesheet due to access restriction policy
                                  -            var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -            rules.length;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            externalStyleSheetURLs.push(styleSheet.href);
                                  -            styleSheet.restricted = true;
                                  -            var ssid = StyleSheetCache(styleSheet);
                                  -            
                                  -            /// TODO: xxxpedro external css
                                  -            //loadExternalStylesheet(doc, styleSheetIterator, styleSheet);
                                  -        }
                                  -        
                                  -        // process internal and external styleSheets
                                  -        styleSheetIterator(doc, styleSheet);
                                  -        
                                  -        var importedStyleSheet, importedRules;
                                  -        
                                  -        // process imported styleSheets in IE
                                  -        if (isIE)
                                  -        {
                                  -            var imports = styleSheet.imports;
                                  -            
                                  -            for(var j=0, importsLength=imports.length; j<importsLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    importedStyleSheet = imports[j];
                                  -                    // we must read the length to make sure we have permission
                                  -                    // to read the imported stylesheet's content. 
                                  -                    importedRules = importedStyleSheet.rules;
                                  -                    importedRules.length;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -                
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -        // process imported styleSheets in other browsers
                                  -        else if (rules)
                                  -        {
                                  -            for(var j=0, rulesLength=rules.length; j<rulesLength; j++)
                                  -            {
                                  -                try
                                  -                {
                                  -                    var rule = rules[j];
                                  -                    
                                  -                    importedStyleSheet = rule.styleSheet;
                                  -                    
                                  -                    if (importedStyleSheet)
                                  -                    {
                                  -                        // we must read the length to make sure we have permission
                                  -                        // to read the imported stylesheet's content. 
                                  -                        importedRules = importedStyleSheet.cssRules;
                                  -                        importedRules.length;
                                  -                    }
                                  -                    else
                                  -                        break;
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    externalStyleSheetURLs.push(styleSheet.href);
                                  -                    importedStyleSheet.restricted = true;
                                  -                    var ssid = StyleSheetCache(importedStyleSheet);
                                  -                }
                                  -
                                  -                styleSheetIterator(doc, importedStyleSheet);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    if (FBTrace.DBG_CSS)
                                  -    {
                                  -        FBTrace.sysout("FBL.processAllStyleSheets", "all stylesheet rules processed in " + (new Date().getTime() - start) + "ms");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var processStyleSheet = function(doc, styleSheet)
                                  -{
                                  -    if (styleSheet.restricted)
                                  -        return;
                                  -    
                                  -    var rules = isIE ? styleSheet.rules : styleSheet.cssRules;
                                  -    
                                  -    var ssid = StyleSheetCache(styleSheet);
                                  -    
                                  -    var href = styleSheet.href;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // CSS Parser
                                  -    var shouldParseCSS = typeof CssParser != "undefined" && !Firebug.disableResourceFetching;
                                  -    if (shouldParseCSS)
                                  -    {
                                  -        try
                                  -        {
                                  -            var parsedRules = CssAnalyzer.parseStyleSheet(href); 
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS) FBTrace.sysout("processStyleSheet FAILS", e.message || e);
                                  -            shouldParseCSS = false;
                                  -        }
                                  -        finally
                                  -        {
                                  -            var parsedRulesIndex = 0;
                                  -            
                                  -            var dontSupportGroupedRules = isIE && browserVersion < 9;
                                  -            var group = [];
                                  -            var groupItem;
                                  -        }
                                  -    }
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    for (var i=0, length=rules.length; i<length; i++)
                                  -    {
                                  -        // TODO: xxxpedro is there a better way to cache CSS Rules? The problem is that
                                  -        // we cannot add expando properties in the rule object in IE
                                  -        var rid = ssid + ":" + i;
                                  -        var rule = rules[i];
                                  -        var selector = rule.selectorText || "";
                                  -        var lineNo = null;
                                  -        
                                  -        // See: Issue 4776: [Firebug lite] CSS Media Types
                                  -        //
                                  -        // Ignore all special selectors like @media and @page
                                  -        if (!selector || selector.indexOf("@") != -1)
                                  -            continue;
                                  -        
                                  -        if (isIE)
                                  -            selector = selector.replace(reSelectorTag, function(s){return s.toLowerCase();});
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // CSS Parser
                                  -        if (shouldParseCSS)
                                  -        {
                                  -            var parsedRule = parsedRules[parsedRulesIndex];
                                  -            var parsedSelector = parsedRule.selector;
                                  -
                                  -            if (dontSupportGroupedRules && parsedSelector.indexOf(",") != -1 && group.length == 0)
                                  -                group = parsedSelector.split(",");
                                  -            
                                  -            if (dontSupportGroupedRules && group.length > 0)
                                  -            {
                                  -                groupItem = group.shift();
                                  -                
                                  -                if (CssParser.normalizeSelector(selector) == groupItem)
                                  -                    lineNo = parsedRule.line;
                                  -                
                                  -                if (group.length == 0)
                                  -                    parsedRulesIndex++;
                                  -            }
                                  -            else if (CssParser.normalizeSelector(selector) == parsedRule.selector)
                                  -            {
                                  -                lineNo = parsedRule.line;
                                  -                parsedRulesIndex++;
                                  -            }
                                  -        }
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        CSSRuleMap[rid] =
                                  -        {
                                  -            styleSheetId: ssid,
                                  -            styleSheetIndex: i,
                                  -            order: ++globalCSSRuleIndex,
                                  -            specificity: 
                                  -                // See: Issue 4777: [Firebug lite] Specificity of CSS Rules
                                  -                //
                                  -                // if it is a normal selector then calculate the specificity
                                  -                selector && selector.indexOf(",") == -1 ? 
                                  -                getCSSRuleSpecificity(selector) : 
                                  -                // See: Issue 3262: [Firebug lite] Specificity of grouped CSS Rules
                                  -                //
                                  -                // if it is a grouped selector, do not calculate the specificity
                                  -                // because the correct value will depend of the matched element.
                                  -                // The proper specificity value for grouped selectors are calculated
                                  -                // via getElementCSSRules(element)
                                  -                0,
                                  -            
                                  -            rule: rule,
                                  -            lineNo: lineNo,
                                  -            selector: selector,
                                  -            cssText: rule.style ? rule.style.cssText : rule.cssText ? rule.cssText : ""        
                                  -        };
                                  -        
                                  -        // TODO: what happens with elements added after this? Need to create a test case.
                                  -        // Maybe we should place this at getElementCSSRules() but it will make the function
                                  -        // a lot more expensive.
                                  -        // 
                                  -        // Maybe add a "refresh" button?
                                  -        var elements = Firebug.Selector(selector, doc);
                                  -        
                                  -        for (var j=0, elementsLength=elements.length; j<elementsLength; j++)
                                  -        {
                                  -            var element = elements[j];
                                  -            var eid = ElementCache(element);
                                  -            
                                  -            if (!ElementCSSRulesMap[eid])
                                  -                ElementCSSRulesMap[eid] = [];
                                  -            
                                  -            ElementCSSRulesMap[eid].push(rid);
                                  -        }
                                  -        
                                  -        //console.log(selector, elements);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// External StyleSheet Loader
                                  -
                                  -var loadExternalStylesheet = function(doc, styleSheetIterator, styleSheet)
                                  -{
                                  -    var url = styleSheet.href;
                                  -    styleSheet.firebugIgnore = true;
                                  -    
                                  -    var source = Firebug.Lite.Proxy.load(url);
                                  -    
                                  -    // TODO: check for null and error responses
                                  -    
                                  -    // remove comments
                                  -    //var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -    //source = source.replace(reMultiComment, "");
                                  -    
                                  -    // convert relative addresses to absolute ones  
                                  -    source = source.replace(/url\(([^\)]+)\)/g, function(a,name){
                                  -    
                                  -        var hasDomain = /\w+:\/\/./.test(name);
                                  -        
                                  -        if (!hasDomain)
                                  -        {
                                  -            name = name.replace(/^(["'])(.+)\1$/, "$2");
                                  -            var first = name.charAt(0);
                                  -            
                                  -            // relative path, based on root
                                  -            if (first == "/")
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLRoot
                                  -                var m = /^([^:]+:\/{1,3}[^\/]+)/.exec(url);
                                  -                
                                  -                return m ? 
                                  -                    "url(" + m[1] + name + ")" :
                                  -                    "url(" + name + ")";
                                  -            }
                                  -            // relative path, based on current location
                                  -            else
                                  -            {
                                  -                // TODO: xxxpedro move to lib or Firebug.Lite.something
                                  -                // getURLPath
                                  -                var path = url.replace(/[^\/]+\.[\w\d]+(\?.+|#.+)?$/g, "");
                                  -                
                                  -                path = path + name;
                                  -                
                                  -                var reBack = /[^\/]+\/\.\.\//;
                                  -                while(reBack.test(path))
                                  -                {
                                  -                    path = path.replace(reBack, "");
                                  -                }
                                  -                
                                  -                //console.log("url(" + path + ")");
                                  -                
                                  -                return "url(" + path + ")";
                                  -            }
                                  -        }
                                  -        
                                  -        // if it is an absolute path, there is nothing to do
                                  -        return a;
                                  -    });
                                  -    
                                  -    var oldStyle = styleSheet.ownerNode;
                                  -    
                                  -    if (!oldStyle) return;
                                  -    
                                  -    if (!oldStyle.parentNode) return;
                                  -    
                                  -    var style = createGlobalElement("style");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.innerHTML = source;
                                  -
                                  -    //debugger;
                                  -    oldStyle.parentNode.insertBefore(style, oldStyle.nextSibling);
                                  -    oldStyle.parentNode.removeChild(oldStyle);
                                  -    
                                  -    doc.styleSheets[doc.styleSheets.length-1].externalURL = url;
                                  -    
                                  -    console.log(url, "call " + externalStyleSheetURLs.length, source);
                                  -    
                                  -    externalStyleSheetURLs.pop();
                                  -    
                                  -    if (processAllStyleSheetsTimeout)
                                  -    {
                                  -        clearTimeout(processAllStyleSheetsTimeout);
                                  -    }
                                  -    
                                  -    processAllStyleSheetsTimeout = setTimeout(function(){
                                  -        console.log("processing");
                                  -        FBL.processAllStyleSheets(doc, styleSheetIterator);
                                  -        processAllStyleSheetsTimeout = null;
                                  -    },200);
                                  -    
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// getElementCSSRules
                                  -
                                  -var getElementCSSRules = function(element)
                                  -{
                                  -    var eid = ElementCache(element);
                                  -    var rules = ElementCSSRulesMap[eid];
                                  -    
                                  -    if (!rules) return;
                                  -    
                                  -    var arr = [element];
                                  -    var Selector = Firebug.Selector;
                                  -    var ruleId, rule;
                                  -    
                                  -    // for the case of grouped selectors, we need to calculate the highest
                                  -    // specificity within the selectors of the group that matches the element,
                                  -    // so we can sort the rules properly without over estimating the specificity
                                  -    // of grouped selectors
                                  -    for (var i = 0, length = rules.length; i < length; i++)
                                  -    {
                                  -        ruleId = rules[i];
                                  -        rule = CSSRuleMap[ruleId];
                                  -        
                                  -        // check if it is a grouped selector
                                  -        if (rule.selector.indexOf(",") != -1)
                                  -        {
                                  -            var selectors = rule.selector.split(",");
                                  -            var maxSpecificity = -1;
                                  -            var sel, spec, mostSpecificSelector;
                                  -            
                                  -            // loop over all selectors in the group
                                  -            for (var j, len = selectors.length; j < len; j++)
                                  -            {
                                  -                sel = selectors[j];
                                  -                
                                  -                // find if the selector matches the element
                                  -                if (Selector.matches(sel, arr).length == 1)
                                  -                {
                                  -                    spec = getCSSRuleSpecificity(sel);
                                  -                    
                                  -                    // find the most specific selector that macthes the element
                                  -                    if (spec > maxSpecificity)
                                  -                    {
                                  -                        maxSpecificity = spec;
                                  -                        mostSpecificSelector = sel;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            rule.specificity = maxSpecificity;
                                  -        }
                                  -    }
                                  -    
                                  -    rules.sort(sortElementRules);
                                  -    //rules.sort(solveRulesTied);
                                  -    
                                  -    return rules;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Rule Specificity
                                  -
                                  -var sortElementRules = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    var specificityA = ruleA.specificity;
                                  -    var specificityB = ruleB.specificity;
                                  -    
                                  -    if (specificityA > specificityB)
                                  -        return 1;
                                  -    
                                  -    else if (specificityA < specificityB)
                                  -        return -1;
                                  -    
                                  -    else
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -};
                                  -
                                  -var solveRulesTied = function(a, b)
                                  -{
                                  -    var ruleA = CSSRuleMap[a];
                                  -    var ruleB = CSSRuleMap[b];
                                  -    
                                  -    if (ruleA.specificity == ruleB.specificity)
                                  -        return ruleA.order > ruleB.order ? 1 : -1;
                                  -        
                                  -    return null;
                                  -};
                                  -
                                  -var getCSSRuleSpecificity = function(selector)
                                  -{
                                  -    var match = selector.match(reSelectorTag);
                                  -    var tagCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorClass);
                                  -    var classCount = match ? match.length : 0;
                                  -    
                                  -    match = selector.match(reSelectorId);
                                  -    var idCount = match ? match.length : 0;
                                  -    
                                  -    return tagCount + 10*classCount + 100*idCount;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// StyleSheet data
                                  -
                                  -var extractSourceData = function(href)
                                  -{
                                  -    var sourceData = 
                                  -    {
                                  -        source: null,
                                  -        startLine: 0
                                  -    };
                                  -    
                                  -    if (href)
                                  -    {
                                  -        sourceData.source = Firebug.Lite.Proxy.load(href);
                                  -    }
                                  -    else
                                  -    {
                                  -        // TODO: create extractInternalSourceData(index)
                                  -        // TODO: pre process the position of the inline styles so this will happen only once
                                  -        // in case of having multiple inline styles
                                  -        var index = 0;
                                  -        var ssIndex = ++internalStyleSheetIndex;
                                  -        var reStyleTag = /\<\s*style.*\>/gi;
                                  -        var reEndStyleTag = /\<\/\s*style.*\>/gi;
                                  -        
                                  -        var source = Firebug.Lite.Proxy.load(Env.browser.location.href);
                                  -        source = source.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        
                                  -        var startLine = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            var matchStyleTag = source.match(reStyleTag); 
                                  -            var i0 = source.indexOf(matchStyleTag[0]) + matchStyleTag[0].length;
                                  -            
                                  -            for (var i=0; i < i0; i++)
                                  -            {
                                  -                if (source.charAt(i) == "\n")
                                  -                    startLine++;
                                  -            }
                                  -            
                                  -            source = source.substr(i0);
                                  -            
                                  -            index++;
                                  -        }
                                  -        while (index <= ssIndex);
                                  -    
                                  -        var matchEndStyleTag = source.match(reEndStyleTag);
                                  -        var i1 = source.indexOf(matchEndStyleTag[0]);
                                  -        
                                  -        var extractedSource = source.substr(0, i1);
                                  -        
                                  -        sourceData.source = extractedSource;
                                  -        sourceData.startLine = startLine;
                                  -    }
                                  -    
                                  -    return sourceData;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -FBL.CssAnalyzer = CssAnalyzer;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/css/cssParser.js b/branches/flexBox/content/lite/css/cssParser.js
                                  deleted file mode 100644
                                  index 96f288e5..00000000
                                  --- a/branches/flexBox/content/lite/css/cssParser.js
                                  +++ /dev/null
                                  @@ -1,312 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var CssParser = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Simple CSS stylesheet parser from:
                                  -// https://github.com/sergeche/webkit-css
                                  -
                                  -/**
                                  - * Simple CSS stylesheet parser that remembers rule's lines in file
                                  - * @author Sergey Chikuyonok (serge.che@gmail.com)
                                  - * @link http://chikuyonok.ru
                                  - */
                                  -CssParser = (function(){
                                  -    /**
                                  -     * Returns rule object
                                  -     * @param {Number} start Character index where CSS rule definition starts
                                  -     * @param {Number} body_start Character index where CSS rule's body starts
                                  -     * @param {Number} end Character index where CSS rule definition ends
                                  -     */
                                  -    function rule(start, body_start, end) {
                                  -        return {
                                  -            start: start || 0,
                                  -            body_start: body_start || 0,
                                  -            end: end || 0,
                                  -            line: -1,
                                  -            selector: null,
                                  -            parent: null,
                                  -            
                                  -            /** @type {rule[]} */
                                  -            children: [],
                                  -            
                                  -            addChild: function(start, body_start, end) {
                                  -                var r = rule(start, body_start, end);
                                  -                r.parent = this;
                                  -                this.children.push(r);
                                  -                return r;
                                  -            },
                                  -            /**
                                  -             * Returns last child element
                                  -             * @return {rule}
                                  -             */
                                  -            lastChild: function() {
                                  -                return this.children[this.children.length - 1];
                                  -            }
                                  -        };
                                  -    }
                                  -    
                                  -    /**
                                  -     * Replaces all occurances of substring defined by regexp
                                  -     * @param {String} str
                                  -     * @return {RegExp} re
                                  -     * @return {String}
                                  -     */
                                  -    function removeAll(str, re) {
                                  -        var m;
                                  -        while (m = str.match(re)) {
                                  -            str = str.substring(m[0].length);
                                  -        }
                                  -        
                                  -        return str;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Trims whitespace from the beginning and the end of string
                                  -     * @param {String} str
                                  -     * @return {String}
                                  -     */
                                  -    function trim(str) {
                                  -        return str.replace(/^\s+|\s+$/g, '');
                                  -    }
                                  -    
                                  -    /**
                                  -     * Normalizes CSS rules selector
                                  -     * @param {String} selector
                                  -     */
                                  -    function normalizeSelector(selector) {
                                  -        // remove newlines
                                  -        selector = selector.replace(/[\n\r]/g, ' ');
                                  -        
                                  -        selector = trim(selector);
                                  -        
                                  -        // remove spaces after commas
                                  -        selector = selector.replace(/\s*,\s*/g, ',');
                                  -        
                                  -        return selector;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Preprocesses parsed rules: adjusts char indexes, skipping whitespace and
                                  -     * newlines, saves rule selector, removes comments, etc.
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node CSS rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function preprocessRules(text, rule_node) {
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i],
                                  -                rule_start = text.substring(r.start, r.body_start),
                                  -                cur_len = rule_start.length;
                                  -            
                                  -            // remove newlines for better regexp matching
                                  -            rule_start = rule_start.replace(/[\n\r]/g, ' ');
                                  -            
                                  -            // remove @import rules
                                  -//            rule_start = removeAll(rule_start, /^\s*@import\s*url\((['"])?.+?\1?\)\;?/g);
                                  -            
                                  -            // remove comments
                                  -            rule_start = removeAll(rule_start, /^\s*\/\*.*?\*\/[\s\t]*/);
                                  -            
                                  -            // remove whitespace
                                  -            rule_start = rule_start.replace(/^[\s\t]+/, '');
                                  -            
                                  -            r.start += (cur_len - rule_start.length);
                                  -            r.selector = normalizeSelector(rule_start);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves all lise starting indexes for faster search
                                  -     * @param {String} text CSS stylesheet
                                  -     * @return {Number[]}
                                  -     */
                                  -    function saveLineIndexes(text) {
                                  -        var result = [0],
                                  -            i = 0,
                                  -            il = text.length,
                                  -            ch, ch2;
                                  -            
                                  -        while (i < il) {
                                  -            ch = text.charAt(i);
                                  -            
                                  -            if (ch == '\n' || ch == '\r') {
                                  -                if (ch == '\r' && i < il - 1 && text.charAt(i + 1) == '\n') {
                                  -                    // windows line ending: CRLF. Skip next character 
                                  -                    i++;
                                  -                }
                                  -                
                                  -                result.push(i + 1);
                                  -            }
                                  -            
                                  -            i++;
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -    
                                  -    /**
                                  -     * Saves line number for parsed rules
                                  -     * @param {String} text CSS stylesheet
                                  -     * @param {rule} rule_node Rule node
                                  -     * @return {rule[]}
                                  -     */
                                  -    function saveLineNumbers(text, rule_node, line_indexes, startLine) {
                                  -        preprocessRules(text, rule_node);
                                  -        
                                  -        startLine = startLine || 0;
                                  -        
                                  -        // remember lines start indexes, preserving line ending characters
                                  -        if (!line_indexes)
                                  -            var line_indexes = saveLineIndexes(text);
                                  -
                                  -        // now find each rule's line
                                  -        for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -            var r = rule_node.children[i];
                                  -            r.line = line_indexes.length + startLine;
                                  -            for (var j = 0, jl = line_indexes.length - 1; j < jl; j++) {
                                  -                var line_ix = line_indexes[j];
                                  -                if (r.start >=  line_indexes[j] && r.start <  line_indexes[j + 1]) {
                                  -                    r.line = j + 1 + startLine;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            
                                  -            saveLineNumbers(text, r, line_indexes);
                                  -        }
                                  -        
                                  -        return rule_node;
                                  -    }
                                  -    
                                  -    return {
                                  -        /**
                                  -         * Parses text as CSS stylesheet, remembring each rule position inside 
                                  -         * text
                                  -         * @param {String} text CSS stylesheet to parse
                                  -         */
                                  -        read: function(text, startLine) {
                                  -            var rule_start = [],
                                  -                rule_body_start = [],
                                  -                rules = [],
                                  -                in_comment = 0,
                                  -                root = rule(),
                                  -                cur_parent = root,
                                  -                last_rule = null,
                                  -                stack = [],
                                  -                ch, ch2;
                                  -                
                                  -            stack.last = function() {
                                  -                return this[this.length - 1];
                                  -            };
                                  -            
                                  -            function hasStr(pos, substr) {
                                  -                return text.substr(pos, substr.length) == substr;
                                  -            }
                                  -                
                                  -            for (var i = 0, il = text.length; i < il; i++) {
                                  -                ch = text.charAt(i);
                                  -                ch2 = i < il - 1 ? text.charAt(i + 1) : '';
                                  -                
                                  -                if (!rule_start.length)
                                  -                    rule_start.push(i);
                                  -                    
                                  -                switch (ch) {
                                  -                    case '@':
                                  -                        if (!in_comment) {
                                  -                            if (hasStr(i, '@import')) {
                                  -                                var m = text.substr(i).match(/^@import\s*url\((['"])?.+?\1?\)\;?/);
                                  -                                if (m) {
                                  -                                    cur_parent.addChild(i, i + 7, i + m[0].length);
                                  -                                    i += m[0].length;
                                  -                                    rule_start.pop();
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                        }
                                  -                    case '/':
                                  -                        // xxxpedro allowing comment inside comment
                                  -                        if (!in_comment && ch2 == '*') { // comment start
                                  -                            in_comment++;
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '*':
                                  -                        if (ch2 == '/') { // comment end
                                  -                            in_comment--;
                                  -                        }
                                  -                        break;
                                  -                    
                                  -                    case '{':
                                  -                        if (!in_comment) {
                                  -                            rule_body_start.push(i);
                                  -                            
                                  -                            cur_parent = cur_parent.addChild(rule_start.pop());
                                  -                            stack.push(cur_parent);
                                  -                        }
                                  -                        break;
                                  -                        
                                  -                    case '}':
                                  -                        // found the end of the rule
                                  -                        if (!in_comment) {
                                  -                            /** @type {rule} */
                                  -                            var last_rule = stack.pop();
                                  -                            rule_start.pop();
                                  -                            last_rule.body_start = rule_body_start.pop();
                                  -                            last_rule.end = i;
                                  -                            cur_parent = last_rule.parent || root;
                                  -                        }
                                  -                        break;
                                  -                }
                                  -                
                                  -            }
                                  -            
                                  -            return saveLineNumbers(text, root, null, startLine);
                                  -        },
                                  -        
                                  -        normalizeSelector: normalizeSelector,
                                  -        
                                  -        /**
                                  -         * Find matched rule by selector.
                                  -         * @param {rule} rule_node Parsed rule node
                                  -         * @param {String} selector CSS selector
                                  -         * @param {String} source CSS stylesheet source code
                                  -         * 
                                  -         * @return {rule[]|null} Array of matched rules, sorted by priority (most 
                                  -         * recent on top)
                                  -         */
                                  -        findBySelector: function(rule_node, selector, source) {
                                  -            var selector = normalizeSelector(selector),
                                  -                result = [];
                                  -                
                                  -            if (rule_node) {
                                  -                for (var i = 0, il = rule_node.children.length; i < il; i++) {
                                  -                    /** @type {rule} */
                                  -                    var r = rule_node.children[i];
                                  -                    if (r.selector == selector) {
                                  -                        result.push(r);
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            if (result.length) {
                                  -                return result;
                                  -            } else {
                                  -                return null;
                                  -            }
                                  -        }
                                  -    };
                                  -})();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.CssParser = CssParser;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/eventDelegator.js b/branches/flexBox/content/lite/eventDelegator.js
                                  deleted file mode 100644
                                  index 79052de3..00000000
                                  --- a/branches/flexBox/content/lite/eventDelegator.js
                                  +++ /dev/null
                                  @@ -1,676 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope _eventDelegator_ */ function() {
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var EventCache = new Cache();
                                  -
                                  -/**
                                  - * @namespace 
                                  - * @exports _eventDelegator_-Event as Event
                                  - */
                                  -var Event = {};
                                  -
                                  -Event.add = function(element, type, callback, capture, owner, validator, data, bubble)
                                  -{
                                  -    var id = EventCache.set(element);
                                  -    
                                  -    if (!id) return;
                                  -    
                                  -    // the "owner" is which object means "this" inside the callback function
                                  -    owner = owner || element;
                                  -    
                                  -    // read type and namespaces
                                  -    var info = readEventNamespace(type);
                                  -    var namespaces = info.namespaces;
                                  -    type = info.type;
                                  -
                                  -    // read eventMap, which will hold data for all types of event
                                  -    var eventMap = EventCache.data(element, "eventMap");
                                  -
                                  -    // if there's no eventMap, create one
                                  -    if (!eventMap)
                                  -    {
                                  -        eventMap = EventCache.data(element, "eventMap", {});
                                  -    }
                                  -
                                  -    // read eventData
                                  -    var eventData = eventMap[type];
                                  -
                                  -    // if there's no eventData, create one
                                  -    if (!eventData)
                                  -    {
                                  -        eventData = eventMap[type] = {
                                  -            listeners: [],
                                  -            handler: null
                                  -        };
                                  -    }
                                  -    
                                  -    // callback queue
                                  -    var eventListeners = eventData.listeners;
                                  -
                                  -    // event handler
                                  -    var eventHandler = eventData.handler;
                                  -
                                  -    // if there's no handler, create one
                                  -    if (!eventHandler)
                                  -    {
                                  -        eventHandler = /** @ignore */ eventData.handler = function(event)
                                  -        {
                                  -            //console.time("handling "+type);
                                  -
                                  -            event = fixEvent(event);
                                  -
                                  -            var target = event.target;
                                  -
                                  -            do
                                  -            {
                                  -                for (var i = 0, length = eventListeners.length; i < length; i++)
                                  -                {
                                  -                    var listener = eventListeners[i];
                                  -                    
                                  -                    if (validator && validator.call(owner, event, listener) || !validator)
                                  -                        listener.callback.call(owner, event);
                                  -                }
                                  -                
                                  -                target = event.target = bubble && // if should bubble up
                                  -                        !event.isPropagationStopped() && // and propagation is not stopped  
                                  -                        target.parentNode; // then we must look for the parent node
                                  -                        // otherwise target variable will be set to null
                                  -            }
                                  -            while(target);
                                  -
                                  -            //console.timeEnd("handling "+type);
                                  -        };
                                  -    }
                                  -    
                                  -    // add event to the queue
                                  -    eventListeners.push({
                                  -        //type: type, // redundant.... remove this?
                                  -        callback: callback,
                                  -        capture: capture,
                                  -        namespaces: namespaces,
                                  -        data: data
                                  -    });
                                  -
                                  -    if (eventListeners.length == 1)
                                  -    {
                                  -        if (element.addEventListener)
                                  -            element.addEventListener(type, eventHandler, capture);
                                  -        else
                                  -            element.attachEvent("on"+type, eventHandler);
                                  -    }
                                  -};
                                  -
                                  -Event.remove = function(element, type, callback, capture, owner, validator)
                                  -{
                                  -    var id = EventCache.key(element);
                                  -
                                  -    if (!id) return;
                                  -
                                  -    // read namespaces
                                  -    var info = readEventNamespace(type);
                                  -    var namespaces = info.namespaces;
                                  -    type = info.type;
                                  -
                                  -    // event map data
                                  -    var eventMap = EventCache.data(element, "eventMap");
                                  -    if (!eventMap) return;
                                  -    
                                  -    var eventData;
                                  -    
                                  -    var types = [];
                                  -    
                                  -    if (type)
                                  -    {
                                  -        types = [type];
                                  -    }
                                  -    else
                                  -    {
                                  -        for (var name in eventMap)
                                  -        {
                                  -            types.push(name);
                                  -        }
                                  -    }
                                  -    
                                  -    for (var t = 0, tlength = types.length; t < tlength; t++)
                                  -    {
                                  -        type = types[t];
                                  -        
                                  -        // event data
                                  -        var eventData = eventMap[type];
                                  -
                                  -        // callback queue
                                  -        var eventListeners = eventData.listeners;
                                  -        if (!eventListeners) return;
                                  -
                                  -        // event handler
                                  -        var eventHandler = eventData.handler;
                                  -
                                  -
                                  -        for (var i = 0;
                                  -            // we cannot store the length as a way to improve the performance because
                                  -            // we're removing elements from the array, so we need to actually read
                                  -            // the length in every loop iteration to make sure we have reached the end
                                  -            i < eventListeners.length;
                                  -            )
                                  -        {
                                  -            var listener = eventListeners[i];
                                  -
                                  -            /*
                                  -            cases
                                  -                - click
                                  -                - click.namespace
                                  -                - click.namespace.plus
                                  -                - .namespace
                                  -
                                  -            has type --> look for 1 type
                                  -            has no type --> look for all types
                                  -
                                  -                has namespace --> compare
                                  -                has callback --> compare
                                  -                no namespace, no callback (case removeEvent(el, "click")) --> remove all events with the given type
                                  -            */
                                  -
                                  -            if (
                                  -              (callback && listener.callback == callback || !callback) &&
                                  -              (namespaces && compareEventNamespace(namespaces, listener.namespaces) || !namespaces) &&
                                  -              (validator && validator.call(owner, listener) || !validator)
                                  -            )
                                  -            {
                                  -                listener.callback = null;
                                  -                eventListeners.splice(i, 1);
                                  -                EventCache.free(element);
                                  -            }
                                  -            else
                                  -            {
                                  -                // we must advance the cursor only if current listener wasn't removed
                                  -                i++;
                                  -            }
                                  -        }
                                  -
                                  -        if (eventListeners.length == 0)
                                  -        {
                                  -            if (element.removeEventListener)
                                  -                element.removeEventListener(type, eventHandler, capture);
                                  -            else
                                  -                element.detachEvent("on"+type, eventHandler);
                                  -        }
                                  -
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var readEventNamespace = function(type)
                                  -{
                                  -    var info = {};
                                  -
                                  -    if (type.indexOf(".") != -1)
                                  -    {
                                  -        var parts = type.split(".");
                                  -
                                  -        // type is the first name
                                  -        info.type = parts.shift();
                                  -        // namespaces are all remaining parts (eg: click.MyPanel.MyPanelAction)
                                  -        info.namespaces = parts.length > 0 ? parts : null;
                                  -    }
                                  -    else
                                  -    {
                                  -        info.type = type;
                                  -    }
                                  -
                                  -    return info;
                                  -};
                                  -
                                  -
                                  -var compareEventNamespace = function(namespaces, baseNamespaces)
                                  -{
                                  -    if (!namespaces || !baseNamespaces) return false;
                                  -    
                                  -    var base = " " + baseNamespaces.join(" ") + " ";
                                  -    var count = 0;
                                  -    var ns;
                                  -    
                                  -    for (var i = 0, length = namespaces.length; i < length; i++)
                                  -    {
                                  -        ns = namespaces[i];
                                  -        
                                  -        if ( base.indexOf(" " + ns + " ") != -1 )
                                  -        {
                                  -            count++;
                                  -        }
                                  -    }
                                  -    
                                  -    return count == length;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * Support for cross-browser compatible event.
                                  - */
                                  -var expando = "helloModule";
                                  -var fixEvent = function(event)
                                  -{
                                  -    if ( event[expando] == true )
                                  -        return event;
                                  -
                                  -    // store a copy of the original event object
                                  -    // and "clone" to set read-only properties
                                  -    var originalEvent = event;
                                  -    event = { originalEvent: originalEvent };
                                  -    // TODO: xxxpedro any particular reason to not use "for var name in originalEvent"?
                                  -    var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
                                  -    for ( var i=props.length; i; i-- )
                                  -        event[ props[i] ] = originalEvent[ props[i] ];
                                  -
                                  -    var isPropagationStopped = false;
                                  -
                                  -    // Mark it as fixed
                                  -    event[expando] = true;
                                  -
                                  -    // add preventDefault and stopPropagation since
                                  -    // they will not work on the clone
                                  -    /** @ignore */
                                  -    event.preventDefault = function() {
                                  -        // if preventDefault exists run it on the original event
                                  -        if (originalEvent.preventDefault)
                                  -            originalEvent.preventDefault();
                                  -        // otherwise set the returnValue property of the original event to false (IE)
                                  -        originalEvent.returnValue = false;
                                  -    };
                                  -    /** @ignore */
                                  -    event.stopPropagation = function() {
                                  -        // if stopPropagation exists run it on the original event
                                  -        if (originalEvent.stopPropagation)
                                  -            originalEvent.stopPropagation();
                                  -        // otherwise set the cancelBubble property of the original event to true (IE)
                                  -        originalEvent.cancelBubble = true;
                                  -        
                                  -        isPropagationStopped = true;
                                  -    };
                                  -    /** @ignore */
                                  -    event.isPropagationStopped = function()
                                  -    {
                                  -        return isPropagationStopped;
                                  -    };
                                  -
                                  -    // Fix timeStamp
                                  -    //event.timeStamp = event.timeStamp || this.now();
                                  -    // TODO: xxxpedro what is this now() function? ask honza where this fixEvent function came from
                                  -    event.timeStamp = event.timeStamp || new Date().getTime();
                                  -
                                  -    // Fix target property, if necessary
                                  -    if ( !event.target )
                                  -        event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
                                  -
                                  -    // check if target is a textnode (safari)
                                  -    if ( event.target.nodeType == 3 )
                                  -        event.target = event.target.parentNode;
                                  -
                                  -    // Add relatedTarget, if necessary
                                  -    if ( !event.relatedTarget && event.fromElement )
                                  -        event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
                                  -
                                  -    // Calculate pageX/Y if missing and clientX/Y available
                                  -    if ( event.pageX == null && event.clientX != null ) {
                                  -        var doc = document.documentElement, body = document.body;
                                  -        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
                                  -        event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
                                  -    }
                                  -
                                  -    // Add which for key events
                                  -    if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
                                  -        event.which = event.charCode || event.keyCode;
                                  -
                                  -    // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
                                  -    if ( !event.metaKey && event.ctrlKey )
                                  -        event.metaKey = event.ctrlKey;
                                  -
                                  -    // Add which for click: 1 == left; 2 == middle; 3 == right
                                  -    // Note: button is not normalized, so don't use it
                                  -    if ( !event.which && event.button )
                                  -        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
                                  -
                                  -    return event;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** 
                                  - * @class A "Control" is a visual component that responds to user actions
                                  - * 
                                  - * @exports _eventDelegator_-Control as Control
                                  - */
                                  -function Control(element)
                                  -{
                                  -    this._controlElement = element;
                                  -}
                                  -
                                  -Control.prototype =
                                  -{
                                  -    addEvent: function(type, callback, capture){
                                  -        Event.add(this._controlElement, getControlType(type), callback, capture, this);
                                  -    },
                                  -    removeEvent: function(type, callback, capture){
                                  -        Event.remove(this._controlElement, getControlType(type), callback, capture);
                                  -    },
                                  -    removeEvents: function(){
                                  -        Event.remove(this._controlElement, getControlType(""));
                                  -    }
                                  -};
                                  -
                                  -function getControlType(type)
                                  -{
                                  -    return type + ".{Control}";
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** 
                                  - * @class A "Controller" is a special kind of "Control" that can delegate events to its 
                                  - * descendants.
                                  - * 
                                  - * @augments Control
                                  - * @exports _eventDelegator_-Controller as Controller
                                  - */
                                  -function Controller(element)
                                  -{
                                  -    this._controlElement = element;
                                  -}
                                  -
                                  -Controller.prototype = FBL.extend(Control.prototype, /** @lends Controller.prototype */
                                  -{
                                  -
                                  -    /**
                                  -     * Adds a "Controller" listener.
                                  -     * 
                                  -     * *Example*
                                  -     * ~~
                                  -     * var controller = new Controller(root); // create an instance
                                  -     *      
                                  -     * controller.onclick = function(){}; // define the handler
                                  -     *      
                                  -     * controller.addController("div > .someClass", "click.namespace", controller.onclick);
                                  -     * ~~
                                  -     * 
                                  -     * @param {String} selector   A CSS selector representing the target Elements.
                                  -     * @param {String} type       A string representing the event type/namespace to listen for.
                                  -     * @param {Function} callback The controller handler function.
                                  -     * @param {Boolean} capture   If "true", all events of the specified type/namespace 
                                  -     *                            will be captured. 
                                  -     * @see Event.add()
                                  -     */
                                  -    addController: function(selector, type, callback, capture)
                                  -    {
                                  -        function addControllerValidator(e, listener)
                                  -        {
                                  -            return Firebug.Selector.matches(listener.data.selector, [e.target]).length > 0;
                                  -        }
                                  -        
                                  -        Event.add(this._controlElement, getControllerType(selector, type), callback, null, 
                                  -                this, addControllerValidator, {selector: selector}, true);
                                  -    },
                                  -
                                  -    /**
                                  -     * Removes one or more "Controller" listeners.
                                  -     *      
                                  -     * *Example*
                                  -     * ~~
                                  -     * // removes a particular controller
                                  -     * controller.removeController("div > .someClass", "click.namespace", controller.onclick);
                                  -     * 
                                  -     * // removes all controllers that match the selector, 
                                  -     * // have the "click" type and the "namespace" namespace
                                  -     * controller.removeController("div > .someClass", "click.namespace");
                                  -     *
                                  -     * // removes all controllers that match the selector and have the "click" type
                                  -     * controller.removeController("div > .someClass", "click");
                                  -     *
                                  -     * // removes all controllers that match the selector and have the "namespace" namespace
                                  -     * controller.removeController("div > .someClass", ".namespace");
                                  -     *
                                  -     * // removes all controllers that match the selector
                                  -     * controller.removeController("div > .someClass");
                                  -     *
                                  -     * // removes all controllers that have the same type/namespace, you got the idea...
                                  -     * controller.removeController(null, "click.namespace");
                                  -     * ~~
                                  -     * 
                                  -     * @param {String} selector   A CSS selector representing the target Elements.
                                  -     * @param {String} type       A string representing the event type/namespace to listen for.
                                  -     * @param {Function} callback The controller handler function.
                                  -     * @param {Boolean} capture   If "true", all events of the specified type/namespace 
                                  -     *                            will be captured. 
                                  -     * @see Event.remove()
                                  -     */
                                  -    removeController: function(selector, type, callback, capture)
                                  -    {
                                  -        function removeControllerValidator(listener)
                                  -        {
                                  -            return listener.data.selector == selector/* && listener.callback == callback*/;
                                  -        }
                                  -        
                                  -        Event.remove(this._controlElement, getControllerType(selector, type), callback, null,
                                  -                this, removeControllerValidator);
                                  -    },
                                  -
                                  -    /**
                                  -     * Removes all Controller listeners.
                                  -     */
                                  -    removeControllers: function()
                                  -    {
                                  -        Event.remove(this._controlElement, getControllerType("", ""));
                                  -    }
                                  -});
                                  -
                                  -function getControllerType(selector, type)
                                  -{
                                  -    return (type||"")+".Controller"+(selector ? ".Selector_"+selector.replace(/\s|\./g, "_") : "");
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/** 
                                  - * @class
                                  - * @augments Controller
                                  - * @exports _eventDelegator_-WindowController as WindowController
                                  - */
                                  -function WindowController(win)
                                  -{
                                  -    this._controlElement = win;
                                  -}
                                  -
                                  -WindowController.prototype = FBL.extend(Controller.prototype, /**@lends WindowController.prototype */
                                  -{
                                  -    addKeyController: function(key, filter, listener, capture /*, priority?*/)
                                  -    {
                                  -    },
                                  -    
                                  -    removeKeyController: function(key)
                                  -    {
                                  -    },
                                  -    
                                  -    removeKeyControllers: function()
                                  -    {
                                  -    },
                                  -
                                  -    addCharController: function(character, filter, listener, capture /*, priority? */ )
                                  -    {
                                  -    },
                                  -    
                                  -    removeCharController: function(character)
                                  -    {
                                  -    },
                                  -    
                                  -    removeCharControllers: function()
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -// TODO: remove test stuff
                                  -window.Control = Control;
                                  -window.Controller = Controller;
                                  -
                                  -h1 = function(){ console.log("t1"); };
                                  -h2 = function(){ console.log("t2"); };
                                  -
                                  -c = new Controller( document.body );
                                  -
                                  -c.addController("#main", "click", function(){ console.log("main"); });
                                  -c.addController("h1", "click", function(e){ e.stopPropagation();console.log("h1"); });
                                  -
                                  -c.addController("h1", "mouseover", h1);
                                  -c.addController("h1", "mouseover", h2);
                                  -c.addController("h2", "mouseover", h2);
                                  -
                                  -window.c = c;
                                  -*/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -/*
                                  -
                                  -  TODO:
                                  -    - API
                                  -            Event.add versus Event.addEvent
                                  -
                                  -    - do not store objects in cache variables, use key instead
                                  -
                                  -    - priority?
                                  -    - sort controller callbacks based on rule specificity?
                                  -    - cancel propagation for controllers? 
                                  -    
                                  -    - use it for internal events?
                                  -        - need to attach "key" attribute to individual objects 
                                  -
                                  -*/
                                  -
                                  -
                                  -/*
                                  -
                                  -Problems
                                  -    - cross-browser compatibily (addEventListener versus attachEvent, event object differences)
                                  -    - performance (we need to reduce the number of events attached to elements --> event delegation)
                                  -    
                                  -Related-problems
                                  -    - memory leak (we need to avoid circular references between DOM and JS worlds --> cache)
                                  -    - remote object identification (we can't use XPATH for JavaScript objects)
                                  -
                                  -Goals
                                  -    - Define an API to handle event-related problems (event handling, event delegation, key listening)
                                  -
                                  -
                                  -Tips for avoiding problem with events
                                  -    - avoid adding events to elements. Use controls/controllers instead.
                                  -
                                  -    - Chrome controller
                                  -        - all mouse events should be delegated
                                  -        - all keyboard events should be delegated
                                  -        - all resize events should be delegated
                                  -        - all scroll events should be delegated
                                  -
                                  -~~~~~~~~~
                                  -
                                  -Questions
                                  -
                                  -Using expando property to cache elements
                                  -  - we need this to optimize cache lookup time and avoid attaching JavaScript objects into DOM Elements (no circular references problem, less prone to memory leaks)
                                  -  - Is this ok in Firebug code? Firebug Lite currently uses this
                                  -
                                  -Controller definition using CSS selectors or classes-only
                                  -  - How to verify if a particular element matches a CSS selector in FF?
                                  -
                                  -
                                  -~~~~~~~~~
                                  -
                                  -Control is a visual component that responds to user actions
                                  -
                                  -Controller is a special kind of Control that operates several sub-components (internal Controls)
                                  -using a single Control component
                                  -
                                  -http://docwiki.embarcadero.com/VCL/en/Controls.TControl
                                  -
                                  -~~~~~~~~~
                                  -
                                  -API - draft
                                  -
                                  -----------------------------------------------------------------------------------------------------
                                  -Lib/Event Module
                                  -----------------------------------------------------------------------------------------------------
                                  -    Lib.addEvent(element, namespace-type, callback, capture)
                                  -    Lib.removeEvent(element, namespace-type, callback, capture)
                                  -    Lib.removeEvents(namespace)
                                  -
                                  -    Lib.cancelEvent(event, preventDefault) ?
                                  -
                                  -    // KeyEvent object for non-FF browsers
                                  -    Lib.KeyEvent = window.KeyEvent ||
                                  -    {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        ...
                                  -    }
                                  -
                                  -----------------------------------------------------------------------------------------------------
                                  -Lib/Event Module (currently in Lib)
                                  -----------------------------------------------------------------------------------------------------
                                  -    Lib.noKeyModifiers(event)
                                  -
                                  -    Lib.isControl(event)
                                  -    Lib.isShift(event)
                                  -    Lib.isAlt(event)
                                  -    Lib.isControlShift(event)
                                  -
                                  -    Lib.isLeftClick(event)
                                  -    Lib.isMiddleClick(event)
                                  -    Lib.isRightClick(event)
                                  -    Lib.isControlClick(event)
                                  -    Lib.isShiftClick(event)
                                  -    Lib.isAltClick(event)
                                  -
                                  -----------------------------------------------------------------------------------------------------
                                  -Firebug.Control(context?, element)
                                  -----------------------------------------------------------------------------------------------------
                                  -    addEvent(namespace-type, callback, capture)
                                  -    removeEvent(namespace-type, callback, capture)
                                  -    removeEvents(namespace)
                                  -
                                  -
                                  -----------------------------------------------------------------------------------------------------
                                  -Firebug.Controller(context?, element)
                                  -----------------------------------------------------------------------------------------------------
                                  -    addController(selector, namespace-type, callback, capture)
                                  -    removeController(selector, namespace-type, callback, capture)
                                  -    removeControllers(namespace)
                                  -
                                  -    addKeyController(key, filter, listener, capture, priority?)
                                  -    removeKeyController(key)
                                  -    removeKeyControllers()
                                  -
                                  -    addCharController(character, filter, listener, capture, priority?)
                                  -    removeCharController(character)
                                  -    removeCharControllers()
                                  -
                                  -*/
                                  -
                                  -
                                  -
                                  diff --git a/branches/flexBox/content/lite/example/helloWorld.js b/branches/flexBox/content/lite/example/helloWorld.js
                                  deleted file mode 100644
                                  index 723e50e8..00000000
                                  --- a/branches/flexBox/content/lite/example/helloWorld.js
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// HelloWorld Panel
                                  -
                                  -function HelloWorldPanel() {}
                                  -
                                  -HelloWorldPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    initialize: function() {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HelloWorldPanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/example/pluginSample.js b/branches/flexBox/content/lite/example/pluginSample.js
                                  deleted file mode 100644
                                  index e21fe8d5..00000000
                                  --- a/branches/flexBox/content/lite/example/pluginSample.js
                                  +++ /dev/null
                                  @@ -1,62 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -Firebug.extend(function(FBL) { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Plugin Module
                                  -
                                  -Firebug.Plugin = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Plugin") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        alert("clear button clicked");
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Plugin Panel
                                  -
                                  -function PluginPanel(){};
                                  -
                                  -PluginPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Plugin",
                                  -    title: "Plugin",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Plugin,
                                  -            onClick: Firebug.Plugin.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(PluginPanel);
                                  -Firebug.registerModule(Firebug.Plugin);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/firebug.js b/branches/flexBox/content/lite/firebug.js
                                  deleted file mode 100644
                                  index 41d2a8cc..00000000
                                  --- a/branches/flexBox/content/lite/firebug.js
                                  +++ /dev/null
                                  @@ -1,1347 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.5.0-flex-a2",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        Firebug.loadPrefs();
                                  -        Firebug.context.persistedState.isOpen = false;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        if (FBL.CssAnalyzer && FBL.CssAnalyzer.processAllStyleSheets)
                                  -            FBL.CssAnalyzer.processAllStyleSheets(Firebug.browser.document);
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Firebug.disableResourceFetching)
                                  -            Firebug.Console.logFormatted(["Some Firebug Lite features are not working because " +
                                  -            		"resource fetching is disabled. To enabled it set the Firebug Lite option " +
                                  -            		"\"disableResourceFetching\" to \"false\". More info at " +
                                  -            		"http://getfirebug.com/firebuglite#Options"], 
                                  -            		Firebug.context, "warn");
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.saveCookies)
                                  -            Firebug.savePrefs();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        Firebug.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.DefaultOptions;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function()
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        var prefs = Store.get("FirebugLite") || {};
                                  -        var options = prefs.options;
                                  -        var persistedState = prefs.persistedState || FBL.defaultPersistedState;
                                  -        
                                  -        for (var name in options)
                                  -        {
                                  -            if (options.hasOwnProperty(name))
                                  -                Firebug[name] = options[name];
                                  -        }
                                  -        
                                  -        if (Firebug.context && persistedState)
                                  -            Firebug.context.persistedState = persistedState;
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var prefs = {
                                  -            options: {}
                                  -        };
                                  -        
                                  -        var EnvOptions = Env.Options;
                                  -        var options = prefs.options;
                                  -        for (var name in EnvOptions)
                                  -        {
                                  -            if (EnvOptions.hasOwnProperty(name))
                                  -            {
                                  -                options[name] = Firebug[name];
                                  -            }
                                  -        }
                                  -        
                                  -        var persistedState = Firebug.context.persistedState;
                                  -        if (!persistedState)
                                  -        {
                                  -            persistedState = Firebug.context.persistedState = FBL.defaultPersistedState;
                                  -        }
                                  -        
                                  -        prefs.persistedState = persistedState;
                                  -        
                                  -        Store.set("FirebugLite", prefs);
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        Store.remove("FirebugLite");
                                  -        this.restorePrefs();
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *  
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener 
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarContainer: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1-panelTabs");
                                  -        this.sidePanelBarContainer = $("fbPanelBar2-panelTabs");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel
                                  -        var container = this.parentPanel ? 
                                  -                Firebug.chrome.getSidePanelContainer() :
                                  -                Firebug.chrome.getPanelContainer(); 
                                  -        
                                  -        var panelNode = this.panelNode = createElement("div", {
                                  -            id: panelId,
                                  -            className: "fbPanel",
                                  -            document: container.ownerDocument
                                  -        });
                                  -
                                  -        container.appendChild(panelNode);            
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Create Panel Tab
                                  -        var tabNode = this.tabNode = createElement("span", {
                                  -            id: panelId + "Tab",
                                  -            className: "panelTab",
                                  -            innerHTML: this.title + '<span class="panelOptions">â–¼</span>'
                                  -        });
                                  -        
                                  -        /*
                                  -        var tabHTML = '<span class="panelTab">' + this.title + 
                                  -                '<span class="panelOptions">â–¼</span></span>';            
                                  -        
                                  -        var tabNode = this.tabNode = createElement("a", {
                                  -            id: panelId + "Tab",
                                  -            className: "fbTab fbHover",
                                  -            innerHTML: tabHTML
                                  -        });
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            tabNode.href = "javascript:void(0)";
                                  -        }
                                  -        /**/
                                  -        
                                  -        var panelBarNode = this.parentPanel ? 
                                  -                Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                this.panelBarNode;
                                  -        
                                  -        panelBarNode.appendChild(tabNode);
                                  -        tabNode.style.display = "block";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create ToolButtons
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = createElement("span", {
                                  -                id: panelId + "Buttons",
                                  -                className: "fbToolbarButtons"
                                  -            });
                                  -            
                                  -            $("fbMainToolbar").appendChild(this.toolButtonsNode);
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create StatusBar
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox")
                                  -                // FIXME xxxpedro chromenew
                                  -                || $("fbMainToolbar");
                                  -            
                                  -            this.statusBarNode = createElement("span", {
                                  -                id: panelId + "StatusBar",
                                  -                className: "fbToolbarButtons fbStatusBar"
                                  -            });
                                  -            
                                  -            this.statusBarBox.appendChild(this.statusBarNode);
                                  -        }
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        ///this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -        
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel = 
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel : 
                                  -                Firebug.chrome.selectedPanel;
                                  -        
                                  -        Firebug.showInfoTips = true;
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        if (Firebug.InfoTip)
                                  -            Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome && oldChrome.selectedPanel && oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        this.visible = true;
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -        
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -        
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu) 
                                  -            return;
                                  -        
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -            
                                  -            items: menu
                                  -        });
                                  -        
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -        
                                  -        return true;
                                  -        
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -        
                                  -        var screenY = 0;
                                  -        
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY; 
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -        
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *  
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        
                                  -        ///return m ? m[1] : label;
                                  -        
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE && 
                                  -                // safeToString() returns "[object]" for some objects like window.Image 
                                  -                (label == "[object]" || 
                                  -                // safeToString() returns undefined for some objects like window.clientInformation 
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/gui.js b/branches/flexBox/content/lite/gui.js
                                  deleted file mode 100644
                                  index e4cc69fa..00000000
                                  --- a/branches/flexBox/content/lite/gui.js
                                  +++ /dev/null
                                  @@ -1,976 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_gui */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -/**@namespace*/
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -/**@namespace*/
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarContainer.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.shutdown();
                                  -                selectedPanel.hide();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                Firebug.context.persistedState.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.show();
                                  -            panel.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller 
                                  - *  
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -/**@extend FBL.Button.prototype*/
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * @class
                                  - * @extends FBL.Button 
                                  - */
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype,
                                  -/**@extend FBL.IconButton.prototype*/ 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        _command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            item.label = $STR(item.label);
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - * 
                                  - * 
                                  - * @class
                                  - * @extends FBL.Controller
                                  - *   
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                Firebug.chrome.document.body,
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -/**@extend FBL.Menu.prototype*/
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked);
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var handler = null;
                                  -             
                                  -            // target.command can be a function or a string. 
                                  -            var cmd = target.command;
                                  -            
                                  -            // If it is a function it will be used as the handler
                                  -            if (isFunction(cmd))
                                  -                handler = cmd;
                                  -            // If it is a string it the property of the current menu object 
                                  -            // will be used as the handler
                                  -            else if (typeof cmd == "string")
                                  -                handler = this[cmd];
                                  -            
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -append(Menu,
                                  -/**@extend FBL.Menu*/
                                  -{
                                  -    register: function(object)
                                  -    {
                                  -        menuMap[object.id] = object;
                                  -    },
                                  -    
                                  -    check: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "true");
                                  -    },
                                  -    
                                  -    uncheck: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuChecked");
                                  -        element.setAttribute("checked", "");
                                  -    },
                                  -    
                                  -    disable: function(element)
                                  -    {
                                  -        setClass(element, "fbMenuDisabled");
                                  -    },
                                  -    
                                  -    enable: function(element)
                                  -    {
                                  -        removeClass(element, "fbMenuDisabled");
                                  -    }
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -/**@class*/
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/html.js b/branches/flexBox/content/lite/html.js
                                  deleted file mode 100644
                                  index 1b7b81bb..00000000
                                  --- a/branches/flexBox/content/lite/html.js
                                  +++ /dev/null
                                  @@ -1,803 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -var cacheID = Firebug.Lite.Cache.ID;
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    // ignores also the cache property injected by firebug
                                  -    ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = ElementCache(node);
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                // FIXME xxxpedro remove this
                                  -                //var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || 
                                  -                        // Issue 4432:  Firebug Lite: HTML is mixed-up with functions
                                  -                        // The problem here is that expando properties added to DOM elements in 
                                  -                        // IE < 9 will behave like DOM attributes and so they'll show up when
                                  -                        // looking at element.attributes list. 
                                  -                        isIE && (browserVersion-0<9) && typeof attr.nodeValue != "string" ||
                                  -                        Firebug.ignoreFirebugElements && ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;');
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="sourceCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.getPanelDocument(HTMLPanel);
                                  -        var uid = treeNode.id;
                                  -        var parentNode = ElementCache.get(uid);
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>';
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && ElementCache(el);
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = ElementCache.get(id).parentNode;
                                  -
                                  -            if (node)
                                  -                id = ElementCache(node);
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id, Firebug.chrome.getPanelDocument(HTMLPanel));
                                  -            
                                  -            if (stack.length > 0 && ElementCache.get(id).childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        // FIXME: xxxpedro chromenew - this isn't working after detaching the UI
                                  -        if (fbPanel1)
                                  -            fbPanel1.parentNode.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -        
                                  -        // FIXME: IE6 - create chrome.getPanelScrollElement()?
                                  -        // fbPanel1.ownerDocument.documentElement.scrollTop = Math.round(node.offsetTop - fbPanel1.ownerDocument.documentElement.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        this.panelNode.style.minWidth = "500px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(this.sidePanelBar && !this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("css");
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null;
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        this.panelNode.innerHTML = html.join("");
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = Firebug.chrome.getPanelContainer();
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.context.persistedState.selectedHTMLElementId =
                                  -                Firebug.context.persistedState.selectedHTMLElementId &&
                                  -                ElementCache.get(Firebug.context.persistedState.selectedHTMLElementId) ?
                                  -                Firebug.context.persistedState.selectedHTMLElementId :
                                  -                ElementCache(Firebug.browser.document.body);
                                  -            
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        /// FIXME xxxpedro chromenew
                                  -        ///addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        // FIXME xxxpedro chromenew
                                  -        ///removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(Firebug.context.persistedState.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(Firebug.context.persistedState.selectedHTMLElementId);
                                  -    },
                                  -    
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var id = ElementCache(object);
                                  -        
                                  -        if (id)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(id);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":";}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null;
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        Firebug.context.persistedState.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = ElementCache.get(e.id);
                                  -        var sidePanelBar = Firebug.chrome.getPanel("HTML").sidePanelBar;
                                  -        var selectedSidePanel = sidePanelBar ? sidePanelBar.selectedPanel : null;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            if (selectedSidePanel)
                                  -                selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0);
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        // FIXME xxxpedro remove this
                                  -        //var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = ElementCache.get(uid.value);
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>');
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = ElementCache(object);
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = ElementCache(node);
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;');
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            var value = trim(node.nodeValue);
                                  -            if (value)
                                  -                html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/i18n.js b/branches/flexBox/content/lite/i18n.js
                                  deleted file mode 100644
                                  index 1feef84e..00000000
                                  --- a/branches/flexBox/content/lite/i18n.js
                                  +++ /dev/null
                                  @@ -1,126 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_i18n */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    "NoMembersWarning": "There are no properties to show for this object.",
                                  -    
                                  -    "EmptyStyleSheet": "There are no rules in this stylesheet.",
                                  -    "EmptyElementCSS": "This element has no style rules.",
                                  -    "AccessRestricted": "Access to restricted URI denied.",
                                  -    
                                  -    "net.label.Parameters": "Parameters",
                                  -    "net.label.Source": "Source",
                                  -    "URLParameters": "Params",
                                  -    
                                  -    "EditStyle": "Edit Element Style...",
                                  -    "NewRule": "New Rule...",
                                  -    
                                  -    "NewProp": "New Property...",
                                  -    "EditProp": 'Edit "%s"',
                                  -    "DeleteProp": 'Delete "%s"',
                                  -    "DisableProp": 'Disable "%s"'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -
                                  -FBL.$STRF = function(name, args)
                                  -{
                                  -    if (!oSTR.hasOwnProperty(name)) return name;
                                  -    
                                  -    var format = oSTR[name];
                                  -    var objIndex = 0;
                                  -    
                                  -    var parts = parseFormat(format);
                                  -    var trialIndex = objIndex;
                                  -    var objects = args;
                                  -    
                                  -    for (var i= 0; i < parts.length; i++)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -            {
                                  -                format = "";
                                  -                objIndex = -1;
                                  -                parts.length = 0;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -    }
                                  -    
                                  -    var result = [];
                                  -    for (var i = 0; i < parts.length; ++i)
                                  -    {
                                  -        var part = parts[i];
                                  -        if (part && typeof(part) == "object")
                                  -        {
                                  -            result.push(""+args.shift());
                                  -        }
                                  -        else
                                  -            result.push(part);
                                  -    }
                                  -    
                                  -    return result.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var parseFormat = function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/inspector.js b/branches/flexBox/content/lite/inspector.js
                                  deleted file mode 100644
                                  index e2b2f251..00000000
                                  --- a/branches/flexBox/content/lite/inspector.js
                                  +++ /dev/null
                                  @@ -1,516 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var ElementCache = Firebug.Lite.Cache.Element;
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache(targ))
                                  -            {
                                  -                var target = ""+ElementCache.key(targ);
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    if (Firebug.HTML)
                                  -                        Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0);
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (ElementCache.has(targ))
                                  -                FBL.Firebug.HTML.selectTreeNode(""+ElementCache.key(targ));
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        // avoid error when the element is not attached a document
                                  -        if (!el || !el.parentNode)
                                  -            return;
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? Firebug.context.persistedState.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/lib.js b/branches/flexBox/content/lite/lib.js
                                  deleted file mode 100644
                                  index 5757ab18..00000000
                                  --- a/branches/flexBox/content/lite/lib.js
                                  +++ /dev/null
                                  @@ -1,6100 +0,0 @@
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.5.0-flex-a2
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/firebuglite
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -/** @namespace describe lib */
                                  -
                                  -// FIXME: xxxpedro if we use "var FBL = {}" the FBL won't appear in the DOM Panel in IE 
                                  -window.FBL = {};
                                  -
                                  -( /** @scope s_lib @this FBL */ function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -var bookmarkletVersion = 4;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// Globals
                                  -this.reJavascript = /\s*javascript:\s*(.*)/;
                                  -this.reChrome = /chrome:\/\/([^\/]*)\//;
                                  -this.reFile = /file:\/\/([^\/]*)\//;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // Firebug Lite is already running in persistent mode so we just quit
                                  -    if (window.firebug && firebug.firebuglite || window.console && console.firebuglite)
                                  -        return;
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyEnvironment;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        // The problem is that we don't have the Firebug object yet, so we can't use 
                                  -        // Firebug.loadPrefs. We're using the Store module directly instead.
                                  -        var prefs = FBL.Store.get("FirebugLite") || {};
                                  -        FBL.Env.DefaultOptions = FBL.Env.Options;
                                  -        FBL.Env.Options = FBL.extend(FBL.Env.Options, prefs.options || {});
                                  -        
                                  -        if (FBL.isFirefox && 
                                  -            typeof FBL.Env.browser.console == "object" && 
                                  -            FBL.Env.browser.console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -                return;
                                  -    }
                                  -    
                                  -    // exposes the FBL to the global namespace when in debug mode
                                  -    if (FBL.Env.isDebugMode)
                                  -    {
                                  -        FBL.Env.browser.FBL = FBL;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -    FBL.Firebug.loadPrefs();
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // wait document load
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: true,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        disableXHRListener: false,
                                  -        disableResourceFetching: false,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "flexBox",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isDebugMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyEnvironment = function destroyEnvironment()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug-lite(?:-\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var reGetFirebugSite = /(?:http|https):\/\/getfirebug.com\//;
                                  -    var isGetFirebugSite;
                                  -    
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    // Firebug Lite 1.3.0 bookmarklet identification
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    var scriptSrc;
                                  -    var hasSrcAttribute = true;
                                  -    
                                  -    // If the script was loaded via bookmarklet, we already have the script tag
                                  -    if (script)
                                  -    {
                                  -        scriptSrc = script.src;
                                  -        file = reFirebugFile.exec(scriptSrc);
                                  -        
                                  -        var version = script.getAttribute("FirebugLite");
                                  -        var number = version ? parseInt(version) : 0; 
                                  -        
                                  -        if (!version || !number || number < bookmarkletVersion)
                                  -        {
                                  -            FBL.Env.bookmarkletOutdated = true;
                                  -        }
                                  -    }
                                  -    // otherwise we must search for the correct script tag
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" )
                                  -            {
                                  -                if (file = reFirebugFile.exec(si.getAttribute("firebugSrc")))
                                  -                {
                                  -                    scriptSrc = si.getAttribute("firebugSrc");
                                  -                    hasSrcAttribute = false;
                                  -                }
                                  -                else if (file = reFirebugFile.exec(si.src))
                                  -                {
                                  -                    scriptSrc = si.src;
                                  -                }
                                  -                else
                                  -                    continue;
                                  -                
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    // mark the script tag to be ignored by Firebug Lite
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(scriptSrc)) {
                                  -            path = rePath.exec(scriptSrc)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(scriptSrc);
                                  -            var src = r ? r[1] : scriptSrc;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        path = productionDir;
                                  -        FBL.Env.bookmarkletOutdated = false;
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    isGetFirebugSite = reGetFirebugSite.test(path);
                                  -    
                                  -    if (isGetFirebugSite && path.indexOf("/releases/lite/") == -1)
                                  -    {
                                  -        // See Issue 4587 - If we are loading the script from getfirebug.com shortcut, like 
                                  -        // https://getfirebug.com/firebug-lite.js, then we must manually add the full path,
                                  -        // otherwise the Env.Location will hold the wrong path, which will in turn lead to
                                  -        // undesirable effects like the problem in Issue 4587
                                  -        path += "releases/lite/" + (fileName == "firebug-lite-beta.js" ? "beta/" : "latest/");
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        // Always use the local skin when running in the same domain
                                  -        // See Issue 3554: Firebug Lite should use local images when loaded locally
                                  -        Env.useLocalSkin = path.indexOf(location.protocol + "//" + location.host + "/") == 0 &&
                                  -                // but we cannot use the locan skin when loaded from getfirebug.com, otherwise
                                  -                // the bookmarklet won't work when visiting getfirebug.com
                                  -                !isGetFirebugSite;
                                  -        
                                  -        // detecting development and debug modes via file name
                                  -        if (fileName == "firebug-lite-dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        else if (fileName == "firebug-lite-debug.js")
                                  -        {
                                  -            Env.isDebugMode = true;
                                  -        }
                                  -        
                                  -        // process the <html debug="true">
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -        }
                                  -        
                                  -        // process the Script URL Options
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name == "debug")
                                  -                {
                                  -                    Env.isDebugMode = !!value;
                                  -                }
                                  -                else if (name in Env.Options)
                                  -                {
                                  -                    Env.Options[name] = value;
                                  -                }
                                  -                else
                                  -                {
                                  -                    Env[name] = value;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        // process the Script JSON Options
                                  -        if (hasSrcAttribute)
                                  -        {
                                  -            var innerOptions = FBL.trim(script.innerHTML);
                                  -            if (innerOptions)
                                  -            {
                                  -                var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -                
                                  -                for (var name in innerOptionsObject)
                                  -                {
                                  -                    var value = innerOptionsObject[name];
                                  -                    
                                  -                    if (name == "debug")
                                  -                    {
                                  -                        Env.isDebugMode = !!value;
                                  -                    }
                                  -                    else if (name in Env.Options)
                                  -                    {
                                  -                        Env.Options[name] = value;
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        Env[name] = value;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (!Env.Options.saveCookies)
                                  -            FBL.Store.remove("FirebugLite");
                                  -        
                                  -        // process the Debug Mode
                                  -        if (Env.isDebugMode)
                                  -        {
                                  -            Env.Options.startOpened = true;
                                  -            Env.Options.enableTrace = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); };
                                  -};
                                  -
                                  -this.bindFixed = function() // fn, thisObject, args => thisObject.fn(args);
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.descend = function(prototypeParent, childProperties)
                                  -{
                                  -    function protoSetter() {};
                                  -    protoSetter.prototype = prototypeParent;
                                  -    var newOb = new protoSetter();
                                  -    for (var n in childProperties)
                                  -        newOb[n] = childProperties[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = this.createElement("link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -};
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -this.appendStylesheet = function(doc, uri)
                                  -{
                                  -    // Make sure the stylesheet is not appended twice.
                                  -    if (this.$(uri, doc))
                                  -        return;
                                  -
                                  -    var styleSheet = this.createStyleSheet(doc, uri);
                                  -    styleSheet.setAttribute("id", uri);
                                  -    this.addStyleSheet(doc, styleSheet);
                                  -};
                                  -
                                  -this.addScript = function(doc, id, src)
                                  -{
                                  -    var element = doc.createElementNS("http://www.w3.org/1999/xhtml", "html:script");
                                  -    element.setAttribute("type", "text/javascript");
                                  -    element.setAttribute("id", id);
                                  -    if (!FBTrace.DBG_CONSOLE)
                                  -        FBL.unwrapObject(element).firebugIgnore = true;
                                  -
                                  -    element.innerHTML = src;
                                  -    if (doc.documentElement)
                                  -        doc.documentElement.appendChild(element);
                                  -    else
                                  -    {
                                  -        // See issue 1079, the svg test case gives this error
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.addScript doc has no documentElement:", doc);
                                  -    }
                                  -    return element;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getStyle = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Whitespace and Entity conversions
                                  -
                                  -var entityConversionLists = this.entityConversionLists = {
                                  -    normal : {
                                  -        whitespace : {
                                  -            '\t' : '\u200c\u2192',
                                  -            '\n' : '\u200c\u00b6',
                                  -            '\r' : '\u200c\u00ac',
                                  -            ' '  : '\u200c\u00b7'
                                  -        }
                                  -    },
                                  -    reverse : {
                                  -        whitespace : {
                                  -            '&Tab;' : '\t',
                                  -            '&NewLine;' : '\n',
                                  -            '\u200c\u2192' : '\t',
                                  -            '\u200c\u00b6' : '\n',
                                  -            '\u200c\u00ac' : '\r',
                                  -            '\u200c\u00b7' : ' '
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var normal = entityConversionLists.normal,
                                  -    reverse = entityConversionLists.reverse;
                                  -
                                  -function addEntityMapToList(ccode, entity)
                                  -{
                                  -    var lists = Array.prototype.slice.call(arguments, 2),
                                  -        len = lists.length,
                                  -        ch = String.fromCharCode(ccode);
                                  -    for (var i = 0; i < len; i++)
                                  -    {
                                  -        var list = lists[i];
                                  -        normal[list]=normal[list] || {};
                                  -        normal[list][ch] = '&' + entity + ';';
                                  -        reverse[list]=reverse[list] || {};
                                  -        reverse[list]['&' + entity + ';'] = ch;
                                  -    }
                                  -};
                                  -
                                  -var e = addEntityMapToList,
                                  -    white = 'whitespace',
                                  -    text = 'text',
                                  -    attr = 'attributes',
                                  -    css = 'css',
                                  -    editor = 'editor';
                                  -
                                  -e(0x0022, 'quot', attr, css);
                                  -e(0x0026, 'amp', attr, text, css);
                                  -e(0x0027, 'apos', css);
                                  -e(0x003c, 'lt', attr, text, css);
                                  -e(0x003e, 'gt', attr, text, css);
                                  -e(0xa9, 'copy', text, editor);
                                  -e(0xae, 'reg', text, editor);
                                  -e(0x2122, 'trade', text, editor);
                                  -
                                  -// See http://en.wikipedia.org/wiki/Dash
                                  -e(0x2012, '#8210', attr, text, editor); // figure dash
                                  -e(0x2013, 'ndash', attr, text, editor); // en dash
                                  -e(0x2014, 'mdash', attr, text, editor); // em dash
                                  -e(0x2015, '#8213', attr, text, editor); // horizontal bar
                                  -
                                  -e(0x00a0, 'nbsp', attr, text, white, editor);
                                  -e(0x2002, 'ensp', attr, text, white, editor);
                                  -e(0x2003, 'emsp', attr, text, white, editor);
                                  -e(0x2009, 'thinsp', attr, text, white, editor);
                                  -e(0x200c, 'zwnj', attr, text, white, editor);
                                  -e(0x200d, 'zwj', attr, text, white, editor);
                                  -e(0x200e, 'lrm', attr, text, white, editor);
                                  -e(0x200f, 'rlm', attr, text, white, editor);
                                  -e(0x200b, '#8203', attr, text, white, editor); // zero-width space (ZWSP)
                                  -
                                  -//************************************************************************************************
                                  -// Entity escaping
                                  -
                                  -var entityConversionRegexes = {
                                  -        normal : {},
                                  -        reverse : {}
                                  -    };
                                  -
                                  -var escapeEntitiesRegEx = {
                                  -    normal : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('([' + chars.join('') + '])', 'gm');
                                  -    },
                                  -    reverse : function(list)
                                  -    {
                                  -        var chars = [];
                                  -        for ( var ch in list)
                                  -        {
                                  -            chars.push(ch);
                                  -        }
                                  -        return new RegExp('(' + chars.join('|') + ')', 'gm');
                                  -    }
                                  -};
                                  -
                                  -function getEscapeRegexp(direction, lists)
                                  -{
                                  -    var name = '', re;
                                  -    var groups = [].concat(lists);
                                  -    for (i = 0; i < groups.length; i++)
                                  -    {
                                  -        name += groups[i].group;
                                  -    }
                                  -    re = entityConversionRegexes[direction][name];
                                  -    if (!re)
                                  -    {
                                  -        var list = {};
                                  -        if (groups.length > 1)
                                  -        {
                                  -            for ( var i = 0; i < groups.length; i++)
                                  -            {
                                  -                var aList = entityConversionLists[direction][groups[i].group];
                                  -                for ( var item in aList)
                                  -                    list[item] = aList[item];
                                  -            }
                                  -        } else if (groups.length==1)
                                  -        {
                                  -            list = entityConversionLists[direction][groups[0].group]; // faster for special case
                                  -        } else {
                                  -            list = {}; // perhaps should print out an error here?
                                  -        }
                                  -        re = entityConversionRegexes[direction][name] = escapeEntitiesRegEx[direction](list);
                                  -    }
                                  -    return re;
                                  -};
                                  -
                                  -function createSimpleEscape(name, direction)
                                  -{
                                  -    return function(value)
                                  -    {
                                  -        var list = entityConversionLists[direction][name];
                                  -        return String(value).replace(
                                  -                getEscapeRegexp(direction, {
                                  -                    group : name,
                                  -                    list : list
                                  -                }),
                                  -                function(ch)
                                  -                {
                                  -                    return list[ch];
                                  -                }
                                  -               );
                                  -    };
                                  -};
                                  -
                                  -function escapeGroupsForEntities(str, lists)
                                  -{
                                  -    lists = [].concat(lists);
                                  -    var re = getEscapeRegexp('normal', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list, last = '';
                                  -    if (!len)
                                  -        return [ {
                                  -            str : String(str),
                                  -            group : '',
                                  -            name : ''
                                  -        } ];
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.normal[list.group][cur];
                                  -            // if (cur == ' ' && list.group == 'whitespace' && last == ' ') // only show for runs of more than one space
                                  -            //     r = ' ';
                                  -            if (r)
                                  -            {
                                  -                results[ri] = {
                                  -                    'str' : r,
                                  -                    'class' : list['class'],
                                  -                    'extra' : list.extra[cur] ? list['class']
                                  -                            + list.extra[cur] : ''
                                  -                };
                                  -                break;
                                  -            }
                                  -        }
                                  -        // last=cur;
                                  -        if (!r)
                                  -            results[ri] = {
                                  -                'str' : cur,
                                  -                'class' : '',
                                  -                'extra' : ''
                                  -            };
                                  -        ri++;
                                  -    }
                                  -    return results;
                                  -};
                                  -
                                  -this.escapeGroupsForEntities = escapeGroupsForEntities;
                                  -
                                  -
                                  -function unescapeEntities(str, lists)
                                  -{
                                  -    var re = getEscapeRegexp('reverse', lists),
                                  -        split = String(str).split(re),
                                  -        len = split.length,
                                  -        results = [],
                                  -        cur, r, i, ri = 0, l, list;
                                  -    if (!len)
                                  -        return str;
                                  -    lists = [].concat(lists);
                                  -    for (i = 0; i < len; i++)
                                  -    {
                                  -        cur = split[i];
                                  -        if (cur == '')
                                  -            continue;
                                  -        for (l = 0; l < lists.length; l++)
                                  -        {
                                  -            list = lists[l];
                                  -            r = entityConversionLists.reverse[list.group][cur];
                                  -            if (r)
                                  -            {
                                  -                results[ri] = r;
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (!r)
                                  -            results[ri] = cur;
                                  -        ri++;
                                  -    }
                                  -    return results.join('') || '';
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -var escapeForTextNode = this.escapeForTextNode = createSimpleEscape('text', 'normal');
                                  -var escapeForHtmlEditor = this.escapeForHtmlEditor = createSimpleEscape('editor', 'normal');
                                  -var escapeForElementAttribute = this.escapeForElementAttribute = createSimpleEscape('attributes', 'normal');
                                  -var escapeForCss = this.escapeForCss = createSimpleEscape('css', 'normal');
                                  -
                                  -// deprecated compatibility functions
                                  -//this.deprecateEscapeHTML = createSimpleEscape('text', 'normal');
                                  -//this.deprecatedUnescapeHTML = createSimpleEscape('text', 'reverse');
                                  -//this.escapeHTML = deprecated("use appropriate escapeFor... function", this.deprecateEscapeHTML);
                                  -//this.unescapeHTML = deprecated("use appropriate unescapeFor... function", this.deprecatedUnescapeHTML);
                                  -
                                  -var escapeForSourceLine = this.escapeForSourceLine = createSimpleEscape('text', 'normal');
                                  -
                                  -var unescapeWhitespace = createSimpleEscape('whitespace', 'reverse');
                                  -
                                  -this.unescapeForTextNode = function(str)
                                  -{
                                  -    if (Firebug.showTextNodesWithWhitespace)
                                  -        str = unescapeWhitespace(str);
                                  -    if (!Firebug.showTextNodesWithEntities)
                                  -        str = escapeForElementAttribute(str);
                                  -    return str;
                                  -};
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -this.splitLines = function(text)
                                  -{
                                  -    var reSplitLines2 = /.*(:?\r\n|\n|\r)?/mg;
                                  -    var lines;
                                  -    if (text.match)
                                  -    {
                                  -        lines = text.match(reSplitLines2);
                                  -    }
                                  -    else
                                  -    {
                                  -        var str = text+"";
                                  -        lines = str.match(reSplitLines2);
                                  -    }
                                  -    lines.pop();
                                  -    return lines;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -    {
                                  -        try
                                  -        {
                                  -            // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -            return ob + "";
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            FBTrace.sysout("Lib.safeToString() failed for ", ob);
                                  -            return "";
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // xxxpedro it is not safe to use ob+""?
                                  -        return ob + "";
                                  -        ///return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.hasProperties = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getStyle(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    // IE6 doesn't support the [collapsed] CSS selector. IE7 does support the selector, 
                                  -    // but it is causing a bug (the element disappears when you set the "collapsed" 
                                  -    // attribute, but it doesn't appear when you remove the attribute. So, for those
                                  -    // cases, we need to use the class attribute.
                                  -    if (this.isIElt8)
                                  -    {
                                  -        if (collapsed)
                                  -            this.setClass(elt, "collapsed");
                                  -        else
                                  -            this.removeClass(elt, "collapsed");
                                  -    }
                                  -    else
                                  -        elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    var addOffset = function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        ///var style = isIE ? elt.currentStyle : view.getComputedStyle(elt, "");
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (elt.offsetLeft)
                                  -            ///coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -            coords.x += elt.offsetLeft + chrome.getMeasurementInPixels(elt, "borderLeft");
                                  -        if (elt.offsetTop)
                                  -            ///coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -            coords.y += elt.offsetTop + chrome.getMeasurementInPixels(elt, "borderTop");
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else
                                  -        {
                                  -            var otherView = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -            // IE will fail when reading the frameElement property of a popup window.
                                  -            // We don't need it anyway once it is outside the (popup) viewport, so we're
                                  -            // ignoring the frameElement check when the window is a popup
                                  -            if (!otherView.opener && otherView.frameElement)
                                  -                addOffset(otherView.frameElement, coords, otherView);
                                  -        }
                                  -    };
                                  -
                                  -    var isIE = this.isIE;
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = isIE ? elt.ownerDocument.parentWindow : elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) };
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS
                                  -
                                  -var cssKeywordMap = null;
                                  -var cssPropNames = null;
                                  -var cssColorNames = null;
                                  -var imageRules = null;
                                  -
                                  -this.getCSSKeywordsByProperty = function(propName)
                                  -{
                                  -    if (!cssKeywordMap)
                                  -    {
                                  -        cssKeywordMap = {};
                                  -
                                  -        for (var name in this.cssInfo)
                                  -        {
                                  -            var list = [];
                                  -
                                  -            var types = this.cssInfo[name];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -            {
                                  -                var keywords = this.cssKeywords[types[i]];
                                  -                if (keywords)
                                  -                    list.push.apply(list, keywords);
                                  -            }
                                  -
                                  -            cssKeywordMap[name] = list;
                                  -        }
                                  -    }
                                  -
                                  -    return propName in cssKeywordMap ? cssKeywordMap[propName] : [];
                                  -};
                                  -
                                  -this.getCSSPropertyNames = function()
                                  -{
                                  -    if (!cssPropNames)
                                  -    {
                                  -        cssPropNames = [];
                                  -
                                  -        for (var name in this.cssInfo)
                                  -            cssPropNames.push(name);
                                  -    }
                                  -
                                  -    return cssPropNames;
                                  -};
                                  -
                                  -this.isColorKeyword = function(keyword)
                                  -{
                                  -    if (keyword == "transparent")
                                  -        return false;
                                  -
                                  -    if (!cssColorNames)
                                  -    {
                                  -        cssColorNames = [];
                                  -
                                  -        var colors = this.cssKeywords["color"];
                                  -        for (var i = 0; i < colors.length; ++i)
                                  -            cssColorNames.push(colors[i].toLowerCase());
                                  -
                                  -        var systemColors = this.cssKeywords["systemColor"];
                                  -        for (var i = 0; i < systemColors.length; ++i)
                                  -            cssColorNames.push(systemColors[i].toLowerCase());
                                  -    }
                                  -
                                  -    return cssColorNames.indexOf ? // Array.indexOf is not available in IE
                                  -            cssColorNames.indexOf(keyword.toLowerCase()) != -1 :
                                  -            (" " + cssColorNames.join(" ") + " ").indexOf(" " + keyword.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.isImageRule = function(rule)
                                  -{
                                  -    if (!imageRules)
                                  -    {
                                  -        imageRules = [];
                                  -
                                  -        for (var i in this.cssInfo)
                                  -        {
                                  -            var r = i.toLowerCase();
                                  -            var suffix = "image";
                                  -            if (r.match(suffix + "$") == suffix || r == "background")
                                  -                imageRules.push(r);
                                  -        }
                                  -    }
                                  -
                                  -    return imageRules.indexOf ? // Array.indexOf is not available in IE
                                  -            imageRules.indexOf(rule.toLowerCase()) != -1 :
                                  -            (" " + imageRules.join(" ") + " ").indexOf(" " + rule.toLowerCase() + " ") != -1;
                                  -};
                                  -
                                  -this.copyTextStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.fontFamily = style.fontFamily;
                                  -        
                                  -        // TODO: xxxpedro need to create a FBL.getComputedStyle() because IE
                                  -        // returns wrong computed styles for inherited properties (like font-*)
                                  -        //
                                  -        // Also would be good to create a FBL.getStyle() 
                                  -        toNode.style.fontSize = style.fontSize;
                                  -        toNode.style.fontWeight = style.fontWeight;
                                  -        toNode.style.fontStyle = style.fontStyle;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.copyBoxStyles = function(fromNode, toNode, style)
                                  -{
                                  -    var view = this.isIE ?
                                  -            fromNode.ownerDocument.parentWindow :
                                  -            fromNode.ownerDocument.defaultView;
                                  -    
                                  -    if (view)
                                  -    {
                                  -        if (!style)
                                  -            style = this.isIE ? fromNode.currentStyle : view.getComputedStyle(fromNode, "");
                                  -
                                  -        toNode.style.marginTop = style.marginTop;
                                  -        toNode.style.marginRight = style.marginRight;
                                  -        toNode.style.marginBottom = style.marginBottom;
                                  -        toNode.style.marginLeft = style.marginLeft;
                                  -        toNode.style.borderTopWidth = style.borderTopWidth;
                                  -        toNode.style.borderRightWidth = style.borderRightWidth;
                                  -        toNode.style.borderBottomWidth = style.borderBottomWidth;
                                  -        toNode.style.borderLeftWidth = style.borderLeftWidth;
                                  -
                                  -        return style;
                                  -    }
                                  -};
                                  -
                                  -this.readBoxStyles = function(style)
                                  -{
                                  -    var styleNames = {
                                  -        "margin-top": "marginTop", "margin-right": "marginRight",
                                  -        "margin-left": "marginLeft", "margin-bottom": "marginBottom",
                                  -        "border-top-width": "borderTop", "border-right-width": "borderRight",
                                  -        "border-left-width": "borderLeft", "border-bottom-width": "borderBottom",
                                  -        "padding-top": "paddingTop", "padding-right": "paddingRight",
                                  -        "padding-left": "paddingLeft", "padding-bottom": "paddingBottom",
                                  -        "z-index": "zIndex"
                                  -    };
                                  -
                                  -    var styles = {};
                                  -    for (var styleName in styleNames)
                                  -        styles[styleNames[styleName]] = parseInt(style.getPropertyCSSValue(styleName).cssText) || 0;
                                  -    if (FBTrace.DBG_INSPECT)
                                  -        FBTrace.sysout("readBoxStyles ", styles);
                                  -    return styles;
                                  -};
                                  -
                                  -this.getBoxFromStyles = function(style, element)
                                  -{
                                  -    var args = this.readBoxStyles(style);
                                  -    args.width = element.offsetWidth
                                  -        - (args.paddingLeft+args.paddingRight+args.borderLeft+args.borderRight);
                                  -    args.height = element.offsetHeight
                                  -        - (args.paddingTop+args.paddingBottom+args.borderTop+args.borderBottom);
                                  -    return args;
                                  -};
                                  -
                                  -this.getElementCSSSelector = function(element)
                                  -{
                                  -    var label = element.localName.toLowerCase();
                                  -    if (element.id)
                                  -        label += "#" + element.id;
                                  -    if (element.hasAttribute("class"))
                                  -        label += "." + element.getAttribute("class").split(" ")[0];
                                  -
                                  -    return label;
                                  -};
                                  -
                                  -this.getURLForStyleSheet= function(styleSheet)
                                  -{
                                  -    //http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-StyleSheet. For inline style sheets, the value of this attribute is null.
                                  -    return (styleSheet.href ? styleSheet.href : styleSheet.ownerNode.ownerDocument.URL);
                                  -};
                                  -
                                  -this.getDocumentForStyleSheet = function(styleSheet)
                                  -{
                                  -    while (styleSheet.parentStyleSheet && !styleSheet.ownerNode)
                                  -    {
                                  -        styleSheet = styleSheet.parentStyleSheet;
                                  -    }
                                  -    if (styleSheet.ownerNode)
                                  -      return styleSheet.ownerNode.ownerDocument;
                                  -};
                                  -
                                  -/**
                                  - * Retrieves the instance number for a given style sheet. The instance number
                                  - * is sheet's index within the set of all other sheets whose URL is the same.
                                  - */
                                  -this.getInstanceForStyleSheet = function(styleSheet, ownerDocument)
                                  -{
                                  -    // System URLs are always unique (or at least we are making this assumption)
                                  -    if (FBL.isSystemStyleSheet(styleSheet))
                                  -        return 0;
                                  -
                                  -    // ownerDocument is an optional hint for performance
                                  -    if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: " + styleSheet.href + " " + styleSheet.media.mediaText + " " + (styleSheet.ownerNode && FBL.getElementXPath(styleSheet.ownerNode)), ownerDocument);
                                  -    ownerDocument = ownerDocument || FBL.getDocumentForStyleSheet(styleSheet);
                                  -
                                  -    var ret = 0,
                                  -        styleSheets = ownerDocument.styleSheets,
                                  -        href = styleSheet.href;
                                  -    for (var i = 0; i < styleSheets.length; i++)
                                  -    {
                                  -        var curSheet = styleSheets[i];
                                  -        if (FBTrace.DBG_CSS) FBTrace.sysout("getInstanceForStyleSheet: compare href " + i + " " + curSheet.href + " " + curSheet.media.mediaText + " " + (curSheet.ownerNode && FBL.getElementXPath(curSheet.ownerNode)));
                                  -        if (curSheet == styleSheet)
                                  -            break;
                                  -        if (curSheet.href == href)
                                  -            ret++;
                                  -    }
                                  -    return ret;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// HTML and XML Serialization
                                  -
                                  -
                                  -var getElementType = this.getElementType = function(node)
                                  -{
                                  -    if (isElementXUL(node))
                                  -        return 'xul';
                                  -    else if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else if (isElementXHTML(node))
                                  -        return 'xhtml';
                                  -    else if (isElementHTML(node))
                                  -        return 'html';
                                  -};
                                  -
                                  -var getElementSimpleType = this.getElementSimpleType = function(node)
                                  -{
                                  -    if (isElementSVG(node))
                                  -        return 'svg';
                                  -    else if (isElementMathML(node))
                                  -        return 'mathml';
                                  -    else
                                  -        return 'html';
                                  -};
                                  -
                                  -var isElementHTML = this.isElementHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toUpperCase();
                                  -};
                                  -
                                  -var isElementXHTML = this.isElementXHTML = function(node)
                                  -{
                                  -    return node.nodeName == node.nodeName.toLowerCase();
                                  -};
                                  -
                                  -var isElementMathML = this.isElementMathML = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/1998/Math/MathML';
                                  -};
                                  -
                                  -var isElementSVG = this.isElementSVG = function(node)
                                  -{
                                  -    return node.namespaceURI == 'http://www.w3.org/2000/svg';
                                  -};
                                  -
                                  -var isElementXUL = this.isElementXUL = function(node)
                                  -{
                                  -    return node instanceof XULElement;
                                  -};
                                  -
                                  -this.isSelfClosing = function(element)
                                  -{
                                  -    if (isElementSVG(element) || isElementMathML(element))
                                  -        return true;
                                  -    var tag = element.localName.toLowerCase();
                                  -    return (this.selfClosingTags.hasOwnProperty(tag));
                                  -};
                                  -
                                  -this.getElementHTML = function(element)
                                  -{
                                  -    var self=this;
                                  -    function toHTML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            html.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                html.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                html.push('>');
                                  -
                                  -                var pureText=true;
                                  -                for (var child = element.firstChild; child; child = child.nextSibling)
                                  -                    pureText=pureText && (child.nodeType == Node.TEXT_NODE);
                                  -
                                  -                if (pureText)
                                  -                    html.push(escapeForHtmlEditor(elt.textContent));
                                  -                else {
                                  -                    for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                        toHTML(child);
                                  -                }
                                  -
                                  -                html.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else if (isElementSVG(elt) || isElementMathML(elt))
                                  -            {
                                  -                html.push('/>');
                                  -            }
                                  -            else if (self.isSelfClosing(elt))
                                  -            {
                                  -                html.push((isElementXHTML(elt))?'/>':'>');
                                  -            }
                                  -            else
                                  -            {
                                  -                html.push('></', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            html.push(escapeForTextNode(elt.textContent));
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            html.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            html.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var html = [];
                                  -    toHTML(element);
                                  -    return html.join("");
                                  -};
                                  -
                                  -this.getElementXML = function(element)
                                  -{
                                  -    function toXML(elt)
                                  -    {
                                  -        if (elt.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            if (unwrapObject(elt).firebugIgnore)
                                  -                return;
                                  -
                                  -            xml.push('<', elt.nodeName.toLowerCase());
                                  -
                                  -            for (var i = 0; i < elt.attributes.length; ++i)
                                  -            {
                                  -                var attr = elt.attributes[i];
                                  -
                                  -                // Hide attributes set by Firebug
                                  -                if (attr.localName.indexOf("firebug-") == 0)
                                  -                    continue;
                                  -
                                  -                // MathML
                                  -                if (attr.localName.indexOf("-moz-math") == 0)
                                  -                {
                                  -                    // just hide for now
                                  -                    continue;
                                  -                }
                                  -
                                  -                xml.push(' ', attr.nodeName, '="', escapeForElementAttribute(attr.nodeValue),'"');
                                  -            }
                                  -
                                  -            if (elt.firstChild)
                                  -            {
                                  -                xml.push('>');
                                  -
                                  -                for (var child = elt.firstChild; child; child = child.nextSibling)
                                  -                    toXML(child);
                                  -
                                  -                xml.push('</', elt.nodeName.toLowerCase(), '>');
                                  -            }
                                  -            else
                                  -                xml.push('/>');
                                  -        }
                                  -        else if (elt.nodeType == Node.TEXT_NODE)
                                  -            xml.push(elt.nodeValue);
                                  -        else if (elt.nodeType == Node.CDATA_SECTION_NODE)
                                  -            xml.push('<![CDATA[', elt.nodeValue, ']]>');
                                  -        else if (elt.nodeType == Node.COMMENT_NODE)
                                  -            xml.push('<!--', elt.nodeValue, '-->');
                                  -    }
                                  -
                                  -    var xml = [];
                                  -    toXML(element);
                                  -    return xml.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.old_hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document);
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.isAncestor = function(node, potentialAncestor)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (parent == potentialAncestor)
                                  -            return true;
                                  -    }
                                  -
                                  -    return false;
                                  -};
                                  -
                                  -this.getNextElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.nextSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getPreviousElement = function(node)
                                  -{
                                  -    while (node && node.nodeType != 1)
                                  -        node = node.previousSibling;
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.findNextDown = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (criteria(child))
                                  -            return child;
                                  -
                                  -        var next = this.findNextDown(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -};
                                  -
                                  -this.findPreviousUp = function(node, criteria)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var child = node.lastChild; child; child = child.previousSibling)
                                  -    {
                                  -        var next = this.findPreviousUp(child, criteria);
                                  -        if (next)
                                  -            return next;
                                  -
                                  -        if (criteria(child))
                                  -            return child;
                                  -    }
                                  -};
                                  -
                                  -this.findNext = function(node, criteria, upOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    if (!upOnly)
                                  -    {
                                  -        var next = this.findNextDown(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    for (var sib = node.nextSibling; sib; sib = sib.nextSibling)
                                  -    {
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -
                                  -        var next = this.findNextDown(sib, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -        return this.findNext(node.parentNode, criteria, true);
                                  -};
                                  -
                                  -this.findPrevious = function(node, criteria, downOnly, maxRoot)
                                  -{
                                  -    if (!node)
                                  -        return null;
                                  -
                                  -    for (var sib = node.previousSibling; sib; sib = sib.previousSibling)
                                  -    {
                                  -        var prev = this.findPreviousUp(sib, criteria);
                                  -        if (prev)
                                  -            return prev;
                                  -
                                  -        if (criteria(sib))
                                  -            return sib;
                                  -    }
                                  -
                                  -    if (!downOnly)
                                  -    {
                                  -        var next = this.findPreviousUp(node, criteria);
                                  -        if (next)
                                  -            return next;
                                  -    }
                                  -
                                  -    if (node.parentNode && node.parentNode != maxRoot)
                                  -    {
                                  -        if (criteria(node.parentNode))
                                  -            return node.parentNode;
                                  -
                                  -        return this.findPrevious(node.parentNode, criteria, true);
                                  -    }
                                  -};
                                  -
                                  -this.getNextByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findNext(root, iter);
                                  -};
                                  -
                                  -this.getPreviousByClass = function(root, state)
                                  -{
                                  -    var iter = function iter(node) { return node.nodeType == 1 && FBL.hasClass(node, state); };
                                  -    return this.findPrevious(root, iter);
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Modification
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API 
                                  -var appendFragment = null;
                                  -
                                  -this.appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE 
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -    
                                  -    var doc = element.ownerDocument;
                                  -    
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -    
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -        
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -        
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -        
                                  -        div = null;
                                  -    }
                                  -    
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.safeGetWindowLocation = function(window)
                                  -{
                                  -    try
                                  -    {
                                  -        if (window)
                                  -        {
                                  -            if (window.closed)
                                  -                return "(window.closed)";
                                  -            if ("location" in window)
                                  -                return window.location+"";
                                  -            else
                                  -                return "(no window.location)";
                                  -        }
                                  -        else
                                  -            return "(no context.window)";
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed "+exc, exc);
                                  -            FBTrace.sysout("TabContext.getWindowLocation failed window:", window);
                                  -        return "(getWindowLocation: "+exc+")";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && // others
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 4 : // IE "click" and "dblclick" button model
                                  -            event.button == 1) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 2 : // IE "click" and "dblclick" button model
                                  -            event.button == 2) && 
                                  -        this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isAlt = function(event)
                                  -{
                                  -    return event.altKey && !event.ctrlKey && !event.shiftKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isAltClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" && event.type != "dblclick" ? 
                                  -            event.button == 1 : // IE "click" and "dblclick" button model
                                  -            event.button == 0) && 
                                  -        this.isAlt(event);
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler, useCapture)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, useCapture);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    if (!listeners) return;
                                  -    
                                  -    try
                                  -    {/**/
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -    }
                                  -    /**/
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;";
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    if (!url)
                                  -        return null;
                                  -
                                  -    // Remove query string from the URL if any.
                                  -    var queryString = url.indexOf("?");
                                  -    if (queryString != -1)
                                  -        url = url.substr(0, queryString);
                                  -
                                  -    // Now get the file extension.
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.isSystemStyleSheet = function(sheet)
                                  -{
                                  -    var href = sheet && sheet.href;
                                  -    return href && FBL.isSystemURL(href);
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ",";
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^\/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^\/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -// TODO: xxxpedro lib. why loops in domplate are requiring array in parameters
                                  -// as in response/request headers and get/post parameters in Net module?
                                  -this.parseURLParamsArray = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedTextArray(search);
                                  -};
                                  -
                                  -this.parseURLEncodedTextArray = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [decodeURIComponent(parts[1])]});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: [""]});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL = function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    ///var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        ///jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -        
                                  -        //jsonObject = Firebug.context.eval(jsonString);
                                  -        jsonObject = Firebug.context.evaluate(jsonString, null, null, function(){return null;});
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        /***
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {/**/
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        ///}
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Caret Position
                                  -
                                  -this.setSelectionRange = function(input, start, length)
                                  -{
                                  -    if (input.createTextRange)
                                  -    {
                                  -        var range = input.createTextRange(); 
                                  -        range.moveStart("character", start); 
                                  -        range.moveEnd("character", length - input.value.length); 
                                  -        range.select();
                                  -    }
                                  -    else if (input.setSelectionRange)
                                  -    {
                                  -        input.setSelectionRange(start, length);
                                  -        input.focus();
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Input Selection Start / Caret Position
                                  -
                                  -this.getInputSelectionStart = function(input)
                                  -{
                                  -    if (document.selection)
                                  -    {
                                  -        var range = input.ownerDocument.selection.createRange();
                                  -        var text = range.text;
                                  -        
                                  -        //console.log("range", range.text);
                                  -        
                                  -        // if there is a selection, find the start position
                                  -        if (text)
                                  -        {
                                  -            return input.value.indexOf(text);
                                  -        }
                                  -        // if there is no selection, find the caret position
                                  -        else
                                  -        {
                                  -            range.moveStart("character", -input.value.length);
                                  -            
                                  -            return range.text.length;
                                  -        }
                                  -    }
                                  -    else if (typeof input.selectionStart != "undefined")
                                  -        return input.selectionStart;
                                  -    
                                  -    return 0;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    try
                                  -    {
                                  -        // FIXME: xxxpedro this is failing in IE for the global "external" object
                                  -        return toString.call(object) === "[object Function]" || 
                                  -                this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -        FBTrace.sysout("Lib.isFunction() failed for ", object);
                                  -        return false;
                                  -    }
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is accessible in the window, uses the native instanceof operator
                                  -        // if the instanceof evaluates to "true" we can assume it is a instance, but if it
                                  -        // evaluates to "false" we must continue with the duck type detection below because
                                  -        // the native object may be extended, thus breaking the instanceof result 
                                  -        // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -        if (className in win && object instanceof win[className])
                                  -            return true;
                                  -    }
                                  -    // If the object doesn't have the ownerDocument property, we'll try to look at
                                  -    // the current context's window
                                  -    else
                                  -    {
                                  -        // TODO: xxxpedro context
                                  -        // Since we're not using yet a Firebug.context, we'll just use the top window
                                  -        // (browser) as a reference
                                  -        var win = Firebug.browser.window;
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    // get the duck type model from the cache 
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    // starts the hacky duck type detection
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            // avoid problems with extended native objects
                                  -            // See Issue 3524: Firebug Lite Style Panel doesn't work if the native Element is extended
                                  -            if (!obj.hasOwnProperty(name))
                                  -                continue;
                                  -            
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    CSSStyleRule:
                                  -    {
                                  -        property: ["selectorText", "style"]
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -/*
                                  -
                                  -Problems:
                                  -
                                  -  - IE does not have window.Node, window.Element, etc
                                  -  - for (var name in Node.prototype) return nothing on FF
                                  -
                                  -*/
                                  -
                                  -
                                  -var domMemberMap2 = {};
                                  -
                                  -var domMemberMap2Sandbox = null;
                                  -
                                  -var getDomMemberMap2 = function(name)
                                  -{
                                  -    if (!domMemberMap2Sandbox)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var frame = doc.createElement("iframe");
                                  -        
                                  -        frame.id = "FirebugSandbox";
                                  -        frame.style.display = "none";
                                  -        frame.src = "about:blank";
                                  -        
                                  -        doc.body.appendChild(frame);
                                  -        
                                  -        domMemberMap2Sandbox = frame.window || frame.contentWindow;
                                  -    }
                                  -    
                                  -    var props = [];
                                  -    
                                  -    //var object = domMemberMap2Sandbox[name];
                                  -    //object = object.prototype || object;
                                  -    
                                  -    var object = null;
                                  -    
                                  -    if (name == "Window")
                                  -        object = domMemberMap2Sandbox.window;
                                  -    
                                  -    else if (name == "Document")
                                  -        object = domMemberMap2Sandbox.document;
                                  -        
                                  -    else if (name == "HTMLScriptElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("script");
                                  -    
                                  -    else if (name == "HTMLAnchorElement")
                                  -        object = domMemberMap2Sandbox.document.createElement("a");
                                  -    
                                  -    else if (name.indexOf("Element") != -1)
                                  -    {
                                  -        object = domMemberMap2Sandbox.document.createElement("div");
                                  -    }
                                  -    
                                  -    if (object)
                                  -    {
                                  -        //object = object.prototype || object;
                                  -        
                                  -        //props  = 'addEventListener,document,location,navigator,window'.split(',');
                                  -        
                                  -        for (var n in object)
                                  -          props.push(n);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return props;
                                  -    return extendArray(props, domMemberMap[name]);
                                  -};
                                  -
                                  -// xxxpedro experimental get DOM members
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        FBL.domMemberCache = domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = getDomMemberMap2(name);
                                  -            var cache = domMemberCache[name] = {};
                                  -            
                                  -            /*
                                  -            if (name.indexOf("Element") != -1)
                                  -            {
                                  -                this.append(cache, this.getDOMMembers("Node"));
                                  -                this.append(cache, this.getDOMMembers("Element"));
                                  -            }
                                  -            /**/
                                  -            
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (this.instanceOf(object, "Document") || this.instanceOf(object, "XMLDocument"))
                                  -            { return domMemberCache.Document; }
                                  -        else if (this.instanceOf(object, "Location"))
                                  -            { return domMemberCache.Location; }
                                  -        else if (this.instanceOf(object, "HTMLImageElement"))
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (this.instanceOf(object, "HTMLAnchorElement"))
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (this.instanceOf(object, "HTMLInputElement"))
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (this.instanceOf(object, "HTMLButtonElement"))
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (this.instanceOf(object, "HTMLFormElement"))
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (this.instanceOf(object, "HTMLBodyElement"))
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (this.instanceOf(object, "HTMLHtmlElement"))
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (this.instanceOf(object, "HTMLScriptElement"))
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableElement"))
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableRowElement"))
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (this.instanceOf(object, "HTMLTableCellElement"))
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (this.instanceOf(object, "HTMLIFrameElement"))
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (this.instanceOf(object, "SVGSVGElement"))
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (this.instanceOf(object, "SVGElement"))
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (this.instanceOf(object, "Element"))
                                  -            { return domMemberCache.Element; }
                                  -        else if (this.instanceOf(object, "Text") || this.instanceOf(object, "CDATASection"))
                                  -            { return domMemberCache.Text; }
                                  -        else if (this.instanceOf(object, "Attr"))
                                  -            { return domMemberCache.Attr; }
                                  -        else if (this.instanceOf(object, "Node"))
                                  -            { return domMemberCache.Node; }
                                  -        else if (this.instanceOf(object, "Event") || this.instanceOf(object, "EventCopy"))
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getDOMMembers FAILED ", E);
                                  -        
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -
                                  -/*
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap"
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -this.selfClosingTags =
                                  -{ // End tags for void elements are forbidden http://wiki.whatwg.org/wiki/HTML_vs._XHTML
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "area": 1,
                                  -    "base": 1,
                                  -    "col": 1,
                                  -    "input": 1,
                                  -    "img": 1,
                                  -    "br": 1,
                                  -    "hr": 1,
                                  -    "param":1,
                                  -    "embed":1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -    "PARAM": 1,
                                  -    "COL": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1,
                                  -    "param": 1,
                                  -    "col": 1
                                  -    /*
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -if (typeof KeyEvent == "undefined") {
                                  -    this.KeyEvent = {
                                  -        DOM_VK_CANCEL: 3,
                                  -        DOM_VK_HELP: 6,
                                  -        DOM_VK_BACK_SPACE: 8,
                                  -        DOM_VK_TAB: 9,
                                  -        DOM_VK_CLEAR: 12,
                                  -        DOM_VK_RETURN: 13,
                                  -        DOM_VK_ENTER: 14,
                                  -        DOM_VK_SHIFT: 16,
                                  -        DOM_VK_CONTROL: 17,
                                  -        DOM_VK_ALT: 18,
                                  -        DOM_VK_PAUSE: 19,
                                  -        DOM_VK_CAPS_LOCK: 20,
                                  -        DOM_VK_ESCAPE: 27,
                                  -        DOM_VK_SPACE: 32,
                                  -        DOM_VK_PAGE_UP: 33,
                                  -        DOM_VK_PAGE_DOWN: 34,
                                  -        DOM_VK_END: 35,
                                  -        DOM_VK_HOME: 36,
                                  -        DOM_VK_LEFT: 37,
                                  -        DOM_VK_UP: 38,
                                  -        DOM_VK_RIGHT: 39,
                                  -        DOM_VK_DOWN: 40,
                                  -        DOM_VK_PRINTSCREEN: 44,
                                  -        DOM_VK_INSERT: 45,
                                  -        DOM_VK_DELETE: 46,
                                  -        DOM_VK_0: 48,
                                  -        DOM_VK_1: 49,
                                  -        DOM_VK_2: 50,
                                  -        DOM_VK_3: 51,
                                  -        DOM_VK_4: 52,
                                  -        DOM_VK_5: 53,
                                  -        DOM_VK_6: 54,
                                  -        DOM_VK_7: 55,
                                  -        DOM_VK_8: 56,
                                  -        DOM_VK_9: 57,
                                  -        DOM_VK_SEMICOLON: 59,
                                  -        DOM_VK_EQUALS: 61,
                                  -        DOM_VK_A: 65,
                                  -        DOM_VK_B: 66,
                                  -        DOM_VK_C: 67,
                                  -        DOM_VK_D: 68,
                                  -        DOM_VK_E: 69,
                                  -        DOM_VK_F: 70,
                                  -        DOM_VK_G: 71,
                                  -        DOM_VK_H: 72,
                                  -        DOM_VK_I: 73,
                                  -        DOM_VK_J: 74,
                                  -        DOM_VK_K: 75,
                                  -        DOM_VK_L: 76,
                                  -        DOM_VK_M: 77,
                                  -        DOM_VK_N: 78,
                                  -        DOM_VK_O: 79,
                                  -        DOM_VK_P: 80,
                                  -        DOM_VK_Q: 81,
                                  -        DOM_VK_R: 82,
                                  -        DOM_VK_S: 83,
                                  -        DOM_VK_T: 84,
                                  -        DOM_VK_U: 85,
                                  -        DOM_VK_V: 86,
                                  -        DOM_VK_W: 87,
                                  -        DOM_VK_X: 88,
                                  -        DOM_VK_Y: 89,
                                  -        DOM_VK_Z: 90,
                                  -        DOM_VK_CONTEXT_MENU: 93,
                                  -        DOM_VK_NUMPAD0: 96,
                                  -        DOM_VK_NUMPAD1: 97,
                                  -        DOM_VK_NUMPAD2: 98,
                                  -        DOM_VK_NUMPAD3: 99,
                                  -        DOM_VK_NUMPAD4: 100,
                                  -        DOM_VK_NUMPAD5: 101,
                                  -        DOM_VK_NUMPAD6: 102,
                                  -        DOM_VK_NUMPAD7: 103,
                                  -        DOM_VK_NUMPAD8: 104,
                                  -        DOM_VK_NUMPAD9: 105,
                                  -        DOM_VK_MULTIPLY: 106,
                                  -        DOM_VK_ADD: 107,
                                  -        DOM_VK_SEPARATOR: 108,
                                  -        DOM_VK_SUBTRACT: 109,
                                  -        DOM_VK_DECIMAL: 110,
                                  -        DOM_VK_DIVIDE: 111,
                                  -        DOM_VK_F1: 112,
                                  -        DOM_VK_F2: 113,
                                  -        DOM_VK_F3: 114,
                                  -        DOM_VK_F4: 115,
                                  -        DOM_VK_F5: 116,
                                  -        DOM_VK_F6: 117,
                                  -        DOM_VK_F7: 118,
                                  -        DOM_VK_F8: 119,
                                  -        DOM_VK_F9: 120,
                                  -        DOM_VK_F10: 121,
                                  -        DOM_VK_F11: 122,
                                  -        DOM_VK_F12: 123,
                                  -        DOM_VK_F13: 124,
                                  -        DOM_VK_F14: 125,
                                  -        DOM_VK_F15: 126,
                                  -        DOM_VK_F16: 127,
                                  -        DOM_VK_F17: 128,
                                  -        DOM_VK_F18: 129,
                                  -        DOM_VK_F19: 130,
                                  -        DOM_VK_F20: 131,
                                  -        DOM_VK_F21: 132,
                                  -        DOM_VK_F22: 133,
                                  -        DOM_VK_F23: 134,
                                  -        DOM_VK_F24: 135,
                                  -        DOM_VK_NUM_LOCK: 144,
                                  -        DOM_VK_SCROLL_LOCK: 145,
                                  -        DOM_VK_COMMA: 188,
                                  -        DOM_VK_PERIOD: 190,
                                  -        DOM_VK_SLASH: 191,
                                  -        DOM_VK_BACK_QUOTE: 192,
                                  -        DOM_VK_OPEN_BRACKET: 219,
                                  -        DOM_VK_BACK_SLASH: 220,
                                  -        DOM_VK_CLOSE_BRACKET: 221,
                                  -        DOM_VK_QUOTE: 222,
                                  -        DOM_VK_META: 224
                                  -    };
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -/**
                                  - * @namespace
                                  - */
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = FBL.getNativeXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Create a AJAX request.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Asynchronous flag. Default is "true".   
                                  -     * @param {String}   options.dataType      Data type ("text", "html", "xml" or "json"). Default is "text".
                                  -     * @param {String}   options.contentType   Content-type of the data being sent. Default is "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     onLoading callback
                                  -     * @param {Function} options.onLoaded      onLoaded callback
                                  -     * @param {Function} options.onInteractive onInteractive callback
                                  -     * @param {Function} options.onComplete    onComplete callback
                                  -     * @param {Function} options.onUpdate      onUpdate callback
                                  -     * @param {Function} options.onSuccess     onSuccess callback
                                  -     * @param {Function} options.onFailure     onFailure callback
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        // process options
                                  -        var o = FBL.extend(
                                  -                {
                                  -                    // default values
                                  -                    type: "get",
                                  -                    async: true,
                                  -                    dataType: "text",
                                  -                    contentType: "application/x-www-form-urlencoded"
                                  -                }, 
                                  -                options || {}
                                  -            );
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data;
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(var param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // open XHR object
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // indicates that it is a XHR request to the server
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // if data is being sent, sets the appropriate content-type
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -            t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // onreadystatechange handler
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // send the request
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Handles the state change
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * gets the appropriate response value according the type
                                  -     */
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText;
                                  -        else if (type == "text")  return t.responseText;
                                  -        else if (type == "html")  return t.responseText;
                                  -        else if (type == "xml")   return t.responseXML;
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * returns the current state of the XHR object
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        if (days)
                                  -        {
                                  -            var date = new Date();
                                  -            date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -            var expires = "; expires="+date.toGMTString();
                                  -        }
                                  -        else 
                                  -            var expires = "";
                                  -        
                                  -        document.cookie = name+"="+value+expires+"; path=/";
                                  -    }
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    if ('cookie' in document)
                                  -    {
                                  -        var nameEQ = name + "=";
                                  -        var ca = document.cookie.split(';');
                                  -        
                                  -        for(var i=0; i < ca.length; i++)
                                  -        {
                                  -            var c = ca[i];
                                  -            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -        }
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/lib/cache.js b/branches/flexBox/content/lite/lib/cache.js
                                  deleted file mode 100644
                                  index 7fa3f4cc..00000000
                                  --- a/branches/flexBox/content/lite/lib/cache.js
                                  +++ /dev/null
                                  @@ -1,203 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - */
                                  - 
                                  -var id = "firebug" + new Date().getTime();
                                  -var uniqueKey = 0;
                                  -var cacheMap = {};
                                  -
                                  -function Cache()
                                  -{
                                  -    this._ref = {};
                                  -}
                                  -
                                  -Cache.id = id;
                                  -
                                  -Cache.prototype =
                                  -{
                                  -    // load    
                                  -    get: function(key)
                                  -    {
                                  -        return this._ref.hasOwnProperty(key) ?
                                  -                cacheMap[key].object :
                                  -                null;
                                  -    },
                                  -    
                                  -    // save
                                  -    set: function(object)
                                  -    {
                                  -        var key = this._getValidatedKey(object);
                                  -        
                                  -        if (!key)
                                  -        {
                                  -            key = ++uniqueKey;
                                  -            object[id] = key;
                                  -        }
                                  -        
                                  -        if (this._ref.hasOwnProperty(key))
                                  -            this._ref[key]++;
                                  -        else
                                  -            this._ref[key] = 1;
                                  -
                                  -        if (cacheMap.hasOwnProperty(key))
                                  -            cacheMap[key].ref++;
                                  -        else
                                  -            cacheMap[key] = {object: object, data: {}, ref: 1};
                                  -        
                                  -        return key;
                                  -    },
                                  -    
                                  -    // delete?
                                  -    unset: function(object)
                                  -    {
                                  -        var key = this._getValidatedKey(object);
                                  -        
                                  -        if (!key) return;
                                  -        
                                  -        var amount = this._ref[key];
                                  -        
                                  -        this._ref[key] -= amount;
                                  -        cacheMap[key].ref -= amount;
                                  -        
                                  -        this.free(object);
                                  -    },
                                  -    
                                  -    free: function(object)
                                  -    {
                                  -        var key = this._getValidatedKey(object);
                                  -        
                                  -        if (!key) return;
                                  -        
                                  -        if (!this._ref.hasOwnProperty(key)) return;
                                  -        
                                  -        if (--this._ref[key] <= 0)
                                  -            delete this._ref[key];
                                  -        
                                  -        var cache = cacheMap[key];
                                  -        if (--cache.ref <= 0)
                                  -        {
                                  -            unmarkObject(object);
                                  -            
                                  -            cache = cache.object = cache.data = cacheMap[key] = null;
                                  -            delete cacheMap[key];
                                  -        }
                                  -    },
                                  -    
                                  -    key: function(object)
                                  -    {
                                  -        return this._getValidatedKey(object);
                                  -    },
                                  -    
                                  -    has: function(object)
                                  -    {
                                  -        var key = this._getValidatedKey(object);
                                  -        return key && this._ref.hasOwnProperty(key);
                                  -    },
                                  -    
                                  -    each: function(callback)
                                  -    {
                                  -        var map = this._ref;
                                  -        
                                  -        for (var key in map)
                                  -        {
                                  -            if (map.hasOwnProperty(key))
                                  -            {
                                  -                callback.call(this, key, this.get(key));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    data: function(object, name, value)
                                  -    {
                                  -        var key, data;
                                  -        
                                  -        if (!name) return null;
                                  -        
                                  -        // set data
                                  -        if (value)
                                  -        {
                                  -            key = this.key(object);
                                  -            
                                  -            if (!key) return null;
                                  -            
                                  -            return cacheMap[key].data[name] = value;
                                  -        }
                                  -        // get data
                                  -        else
                                  -        {
                                  -            key = this.key(object);
                                  -            
                                  -            if (!key) return null;
                                  -            
                                  -            data = cacheMap[key].data;
                                  -
                                  -            return data.hasOwnProperty(name) ? data[name] : null;
                                  -        }
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.each(function(key, object){
                                  -            this.unset(object);
                                  -        });
                                  -    },
                                  -    
                                  -    _getValidatedKey: function(object)
                                  -    {
                                  -        var key = object[id];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property id will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            //!supportsDeleteExpando &&  // the problem happens when supportsDeleteExpando is false
                                  -            key &&                           // the element has the expando property 
                                  -            cacheMap.hasOwnProperty(key) && // there is a cached element with the same key
                                  -            cacheMap[key].object !== object // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            unmarkObject(object);
                                  -    
                                  -            key = null;
                                  -        }
                                  -        
                                  -        return key;
                                  -    }
                                  -};
                                  -
                                  -
                                  -function unmarkObject(object)
                                  -{
                                  -    try
                                  -    {
                                  -        delete object[id];
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (object.removeAttribute)
                                  -            object.removeAttribute(id);
                                  -        else
                                  -            object[id] = null;
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// xxxpedro exposing variables for debugging
                                  -window.cacheMap = cacheMap ;
                                  -window.Cache = Cache;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite.js b/branches/flexBox/content/lite/lite.js
                                  deleted file mode 100644
                                  index df748f03..00000000
                                  --- a/branches/flexBox/content/lite/lite.js
                                  +++ /dev/null
                                  @@ -1,11 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite =
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite/browser.js b/branches/flexBox/content/lite/lite/browser.js
                                  deleted file mode 100644
                                  index e519576b..00000000
                                  --- a/branches/flexBox/content/lite/lite/browser.js
                                  +++ /dev/null
                                  @@ -1,27 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -Firebug.Lite.Browser = function(window)
                                  -{
                                  -    this.contentWindow = window;
                                  -    this.contentDocument = window.document;
                                  -    this.currentURI = 
                                  -    {
                                  -        spec: window.location.href
                                  -    };
                                  -};
                                  -
                                  -Firebug.Lite.Browser.prototype = 
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Browser";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite/cache.js b/branches/flexBox/content/lite/lite/cache.js
                                  deleted file mode 100644
                                  index f4d8ffc7..00000000
                                  --- a/branches/flexBox/content/lite/lite/cache.js
                                  +++ /dev/null
                                  @@ -1,180 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Cache = 
                                  -{
                                  -    ID: "firebug-" + new Date().getTime()
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * TODO: if a cached element is cloned, the expando property will be cloned too in IE
                                  - * which will result in a bug. Firebug Lite will think the new cloned node is the old
                                  - * one.
                                  - * 
                                  - * TODO: Investigate a possibility of cache validation, to be customized by each 
                                  - * kind of cache. For ElementCache it should validate if the element still is 
                                  - * inserted at the DOM.
                                  - */ 
                                  -var cacheUID = 0;
                                  -var createCache = function()
                                  -{
                                  -    var map = {};
                                  -    var data = {};
                                  -    
                                  -    var CID = Firebug.Lite.Cache.ID;
                                  -    
                                  -    // better detection
                                  -    var supportsDeleteExpando = !document.all;
                                  -    
                                  -    var cacheFunction = function(element)
                                  -    {
                                  -        return cacheAPI.set(element);
                                  -    };
                                  -    
                                  -    var cacheAPI =  
                                  -    {
                                  -        get: function(key)
                                  -        {
                                  -            return map.hasOwnProperty(key) ?
                                  -                    map[key] :
                                  -                    null;
                                  -        },
                                  -        
                                  -        set: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id)
                                  -            {
                                  -                id = ++cacheUID;
                                  -                element[CID] = id;
                                  -            }
                                  -            
                                  -            if (!map.hasOwnProperty(id))
                                  -            {
                                  -                map[id] = element;
                                  -                data[id] = {};
                                  -            }
                                  -            
                                  -            return id;
                                  -        },
                                  -        
                                  -        unset: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            
                                  -            if (!id) return;
                                  -            
                                  -            if (supportsDeleteExpando)
                                  -            {
                                  -                delete element[CID];
                                  -            }
                                  -            else if (element.removeAttribute)
                                  -            {
                                  -                element.removeAttribute(CID);
                                  -            }
                                  -
                                  -            delete map[id];
                                  -            delete data[id];
                                  -            
                                  -        },
                                  -        
                                  -        key: function(element)
                                  -        {
                                  -            return getValidatedKey(element);
                                  -        },
                                  -        
                                  -        has: function(element)
                                  -        {
                                  -            var id = getValidatedKey(element);
                                  -            return id && map.hasOwnProperty(id);
                                  -        },
                                  -        
                                  -        each: function(callback)
                                  -        {
                                  -            for (var key in map)
                                  -            {
                                  -                if (map.hasOwnProperty(key))
                                  -                {
                                  -                    callback(key, map[key]);
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        data: function(element, name, value)
                                  -        {
                                  -            // set data
                                  -            if (value)
                                  -            {
                                  -                if (!name) return null;
                                  -                
                                  -                var id = cacheAPI.set(element);
                                  -                
                                  -                return data[id][name] = value;
                                  -            }
                                  -            // get data
                                  -            else
                                  -            {
                                  -                var id = cacheAPI.key(element);
                                  -
                                  -                return data.hasOwnProperty(id) && data[id].hasOwnProperty(name) ?
                                  -                        data[id][name] :
                                  -                        null;
                                  -            }
                                  -        },
                                  -        
                                  -        clear: function()
                                  -        {
                                  -            for (var id in map)
                                  -            {
                                  -                var element = map[id];
                                  -                cacheAPI.unset(element);                
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var getValidatedKey = function(element)
                                  -    {
                                  -        var id = element[CID];
                                  -        
                                  -        // If a cached element is cloned in IE, the expando property CID will be also 
                                  -        // cloned (differently than other browsers) resulting in a bug: Firebug Lite 
                                  -        // will think the new cloned node is the old one. To prevent this problem we're 
                                  -        // checking if the cached element matches the given element.
                                  -        if (
                                  -            !supportsDeleteExpando &&   // the problem happens when supportsDeleteExpando is false
                                  -            id &&                       // the element has the expando property 
                                  -            map.hasOwnProperty(id) &&   // there is a cached element with the same id
                                  -            map[id] != element          // but it is a different element than the current one
                                  -            )
                                  -        {
                                  -            // remove the problematic property
                                  -            element.removeAttribute(CID);
                                  -
                                  -            id = null;
                                  -        }
                                  -        
                                  -        return id;
                                  -    };
                                  -    
                                  -    FBL.append(cacheFunction, cacheAPI);
                                  -    
                                  -    return cacheFunction;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro : check if we need really this on FBL scope
                                  -Firebug.Lite.Cache.StyleSheet = createCache();
                                  -Firebug.Lite.Cache.Element = createCache();
                                  -
                                  -// TODO: xxxpedro
                                  -Firebug.Lite.Cache.Event = createCache();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite/proxy.js b/branches/flexBox/content/lite/lite/proxy.js
                                  deleted file mode 100644
                                  index a7487e01..00000000
                                  --- a/branches/flexBox/content/lite/lite/proxy.js
                                  +++ /dev/null
                                  @@ -1,134 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -var sourceMap = {};
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.Lite.Proxy = 
                                  -{
                                  -    // jsonp callbacks
                                  -    _callbacks: {},
                                  -    
                                  -    /**
                                  -     * Load a resource, either locally (directly) or externally (via proxy) using 
                                  -     * synchronous XHR calls. Loading external resources requires the proxy plugin to
                                  -     * be installed and configured (see /plugin/proxy/proxy.php).
                                  -     */
                                  -    load: function(url)
                                  -    {
                                  -        var resourceDomain = getDomain(url);
                                  -        var isLocalResource =
                                  -            // empty domain means local URL
                                  -            !resourceDomain ||
                                  -            // same domain means local too
                                  -            resourceDomain ==  Firebug.context.window.location.host; // TODO: xxxpedro context
                                  -        
                                  -        return isLocalResource ? fetchResource(url) : fetchProxyResource(url);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using JSONP technique.
                                  -     */
                                  -    loadJSONP: function(url, callback)
                                  -    {
                                  -        var script = createGlobalElement("script"),
                                  -            doc = Firebug.context.document,
                                  -            
                                  -            uid = "" + new Date().getTime(),
                                  -            callbackName = "callback=Firebug.Lite.Proxy._callbacks." + uid,
                                  -            
                                  -            jsonpURL = url.indexOf("?") != -1 ? 
                                  -                    url + "&" + callbackName :
                                  -                    url + "?" + callbackName;
                                  -            
                                  -        Firebug.Lite.Proxy._callbacks[uid] = function(data)
                                  -        {
                                  -            if (callback)
                                  -                callback(data);
                                  -            
                                  -            script.parentNode.removeChild(script);
                                  -            delete Firebug.Lite.Proxy._callbacks[uid];
                                  -        };
                                  -        
                                  -        script.src = jsonpURL;
                                  -        
                                  -        if (doc.documentElement)
                                  -            doc.documentElement.appendChild(script);
                                  -    },
                                  -    
                                  -    /**
                                  -     * Load a resource using YQL (not reliable).
                                  -     */
                                  -    YQL: function(url, callback)
                                  -    {
                                  -        var yql = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22" +
                                  -                encodeURIComponent(url) + "%22&format=xml";
                                  -        
                                  -        this.loadJSONP(yql, function(data)
                                  -        {
                                  -            var source = data.results[0];
                                  -            
                                  -            // clean up YQL bogus elements
                                  -            var match = /<body>\s+<p>([\s\S]+)<\/p>\s+<\/body>$/.exec(source);
                                  -            if (match)
                                  -                source = match[1];
                                  -            
                                  -            console.log(source);
                                  -        });
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Proxy.fetchResourceDisabledMessage = 
                                  -    "/* Firebug Lite resource fetching is disabled.\n" +
                                  -    "To enabled it set the Firebug Lite option \"disableResourceFetching\" to \"false\".\n" +
                                  -    "More info at http://getfirebug.com/firebuglite#Options */";
                                  -
                                  -var fetchResource = function(url)
                                  -{
                                  -    if (Firebug.disableResourceFetching)
                                  -    {
                                  -        var source = sourceMap[url] = Firebug.Lite.Proxy.fetchResourceDisabledMessage;
                                  -        return source;
                                  -    }
                                  -
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    // Getting the native XHR object so our calls won't be logged in the Console Panel
                                  -    var xhr = FBL.getNativeXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    var source = sourceMap[url] = xhr.responseText; 
                                  -    return source;
                                  -};
                                  -
                                  -var fetchProxyResource = function(url)
                                  -{
                                  -    if (sourceMap.hasOwnProperty(url))
                                  -        return sourceMap[url];
                                  -
                                  -    var proxyURL = Env.Location.baseDir + "plugin/proxy/proxy.php?url=" + encodeURIComponent(url);
                                  -    var response = fetchResource(proxyURL);
                                  -    
                                  -    try
                                  -    {
                                  -        var data = eval("(" + response + ")");
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return "ERROR: Firebug Lite Proxy plugin returned an invalid response.";
                                  -    }
                                  -    
                                  -    var source = data ? data.contents : ""; 
                                  -    return source;
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite/script.js b/branches/flexBox/content/lite/lite/script.js
                                  deleted file mode 100644
                                  index e756c271..00000000
                                  --- a/branches/flexBox/content/lite/lite/script.js
                                  +++ /dev/null
                                  @@ -1,31 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Script = function(window)
                                  -{
                                  -    this.fileName = null;
                                  -    this.isValid = null;
                                  -    this.baseLineNumber = null;
                                  -    this.lineExtent = null;
                                  -    this.tag = null;
                                  -    
                                  -    this.functionName = null;
                                  -    this.functionSource = null;
                                  -};
                                  -
                                  -Firebug.Lite.Script.prototype = 
                                  -{
                                  -    isLineExecutable: function(){},
                                  -    pcToLine: function(){},
                                  -    lineToPc: function(){},
                                  -    
                                  -    toString: function()
                                  -    {
                                  -        return "Firebug.Lite.Script";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/lite/style.js b/branches/flexBox/content/lite/lite/style.js
                                  deleted file mode 100644
                                  index 06f723e7..00000000
                                  --- a/branches/flexBox/content/lite/lite/style.js
                                  +++ /dev/null
                                  @@ -1,11 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Lite.Style = 
                                  -{
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/plugin.js b/branches/flexBox/content/lite/plugin.js
                                  deleted file mode 100644
                                  index a3c8c93b..00000000
                                  --- a/branches/flexBox/content/lite/plugin.js
                                  +++ /dev/null
                                  @@ -1,95 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -var registerModule = Firebug.registerModule;
                                  -var registerPanel = Firebug.registerPanel;
                                  -
                                  -// ************************************************************************************************
                                  -append(Firebug,
                                  -{
                                  -    extend: function(fn)
                                  -    {
                                  -        if (Firebug.chrome && Firebug.chrome.addPanel)
                                  -        {
                                  -            var namespace = ns(fn);
                                  -            fn.call(namespace, FBL);
                                  -        }
                                  -        else
                                  -        {
                                  -            setTimeout(function(){Firebug.extend(fn);},100);
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        registerModule.apply(Firebug, arguments);
                                  -        
                                  -        modules.push.apply(modules, arguments);
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        registerPanel.apply(Firebug, arguments);
                                  -        
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            // TODO: xxxpedro investigate why Dev Panel throws an error
                                  -            if (panelType.prototype.name == "Dev") continue;
                                  -            
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            var parentPanelName = panelType.prototype.parentPanel;
                                  -            if (parentPanelName)
                                  -            {
                                  -                parentPanelMap[parentPanelName] = 1;
                                  -            }
                                  -            else
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -                var chrome = Firebug.chrome;
                                  -                chrome.addPanel(panelName);
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    chrome.selectPanel(panelName);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                chrome.addController([chrome.panelMap[panelName].tabNode, "mousedown", onTabClick]);                
                                  -            }
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/script.js b/branches/flexBox/content/lite/script.js
                                  deleted file mode 100644
                                  index 192f08c2..00000000
                                  --- a/branches/flexBox/content/lite/script.js
                                  +++ /dev/null
                                  @@ -1,301 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    selectIndex: 0, // index of the current selectNode's option
                                  -    sourceIndex: -1, // index of the script node, based in doc.getElementsByTagName("script")
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            // Don't show Firebug Lite source code in the list of options
                                  -            if (Firebug.ignoreFirebugElements && script.getAttribute("firebugIgnore"))
                                  -                continue;
                                  -            
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // we must render the code first, so the persistent state can be restore
                                  -        this.selectSourceCode(this.selectIndex);
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.selectIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.selectIndex = index;
                                  -        this.sourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        var select = this.selectNode;
                                  -        
                                  -        this.selectIndex = select.selectedIndex;
                                  -        
                                  -        var option = select.options[select.selectedIndex];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        var select = this.selectNode; 
                                  -        select.selectedIndex = index;
                                  -        
                                  -        var option = select.options[index];
                                  -        if (!option)
                                  -            return;
                                  -        
                                  -        var selectedSourceIndex = parseInt(option.value);
                                  -        
                                  -        this.renderSourceCode(selectedSourceIndex);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.sourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.panelNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                FirebugReps.Warning.tag.replace({object: "AccessRestricted"}, self.panelNode);
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (Firebug.disableResourceFetching)
                                  -                {
                                  -                    renderProcess(Firebug.Lite.Proxy.fetchResourceDisabledMessage);
                                  -                }
                                  -                else if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                onFailure();
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/selector.js b/branches/flexBox/content/lite/selector.js
                                  deleted file mode 100644
                                  index 97f86272..00000000
                                  --- a/branches/flexBox/content/lite/selector.js
                                  +++ /dev/null
                                  @@ -1,1031 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /**@scope s_selector*/ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -/**
                                  - * @name Firebug.Selector 
                                  - * @namespace
                                  - */
                                  -
                                  -/**
                                  - * @exports Sizzle as Firebug.Selector
                                  - */ 
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -/**#@+ @ignore */
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -/**#@-*/
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/store/json.js b/branches/flexBox/content/lite/store/json.js
                                  deleted file mode 100644
                                  index 6f3862ae..00000000
                                  --- a/branches/flexBox/content/lite/store/json.js
                                  +++ /dev/null
                                  @@ -1,493 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/*
                                  -    http://www.JSON.org/json2.js
                                  -    2010-03-20
                                  -
                                  -    Public Domain.
                                  -
                                  -    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
                                  -
                                  -    See http://www.JSON.org/js.html
                                  -
                                  -
                                  -    This code should be minified before deployment.
                                  -    See http://javascript.crockford.com/jsmin.html
                                  -
                                  -    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
                                  -    NOT CONTROL.
                                  -
                                  -
                                  -    This file creates a global JSON object containing two methods: stringify
                                  -    and parse.
                                  -
                                  -        JSON.stringify(value, replacer, space)
                                  -            value       any JavaScript value, usually an object or array.
                                  -
                                  -            replacer    an optional parameter that determines how object
                                  -                        values are stringified for objects. It can be a
                                  -                        function or an array of strings.
                                  -
                                  -            space       an optional parameter that specifies the indentation
                                  -                        of nested structures. If it is omitted, the text will
                                  -                        be packed without extra whitespace. If it is a number,
                                  -                        it will specify the number of spaces to indent at each
                                  -                        level. If it is a string (such as '\t' or '&nbsp;'),
                                  -                        it contains the characters used to indent at each level.
                                  -
                                  -            This method produces a JSON text from a JavaScript value.
                                  -
                                  -            When an object value is found, if the object contains a toJSON
                                  -            method, its toJSON method will be called and the result will be
                                  -            stringified. A toJSON method does not serialize: it returns the
                                  -            value represented by the name/value pair that should be serialized,
                                  -            or undefined if nothing should be serialized. The toJSON method
                                  -            will be passed the key associated with the value, and this will be
                                  -            bound to the value
                                  -
                                  -            For example, this would serialize Dates as ISO strings.
                                  -
                                  -                Date.prototype.toJSON = function (key) {
                                  -                    function f(n) {
                                  -                        // Format integers to have at least two digits.
                                  -                        return n < 10 ? '0' + n : n;
                                  -                    }
                                  -
                                  -                    return this.getUTCFullYear()   + '-' +
                                  -                         f(this.getUTCMonth() + 1) + '-' +
                                  -                         f(this.getUTCDate())      + 'T' +
                                  -                         f(this.getUTCHours())     + ':' +
                                  -                         f(this.getUTCMinutes())   + ':' +
                                  -                         f(this.getUTCSeconds())   + 'Z';
                                  -                };
                                  -
                                  -            You can provide an optional replacer method. It will be passed the
                                  -            key and value of each member, with this bound to the containing
                                  -            object. The value that is returned from your method will be
                                  -            serialized. If your method returns undefined, then the member will
                                  -            be excluded from the serialization.
                                  -
                                  -            If the replacer parameter is an array of strings, then it will be
                                  -            used to select the members to be serialized. It filters the results
                                  -            such that only members with keys listed in the replacer array are
                                  -            stringified.
                                  -
                                  -            Values that do not have JSON representations, such as undefined or
                                  -            functions, will not be serialized. Such values in objects will be
                                  -            dropped; in arrays they will be replaced with null. You can use
                                  -            a replacer function to replace those with JSON values.
                                  -            JSON.stringify(undefined) returns undefined.
                                  -
                                  -            The optional space parameter produces a stringification of the
                                  -            value that is filled with line breaks and indentation to make it
                                  -            easier to read.
                                  -
                                  -            If the space parameter is a non-empty string, then that string will
                                  -            be used for indentation. If the space parameter is a number, then
                                  -            the indentation will be that many spaces.
                                  -
                                  -            Example:
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}]);
                                  -            // text is '["e",{"pluribus":"unum"}]'
                                  -
                                  -
                                  -            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
                                  -            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
                                  -
                                  -            text = JSON.stringify([new Date()], function (key, value) {
                                  -                return this[key] instanceof Date ?
                                  -                    'Date(' + this[key] + ')' : value;
                                  -            });
                                  -            // text is '["Date(---current time---)"]'
                                  -
                                  -
                                  -        JSON.parse(text, reviver)
                                  -            This method parses a JSON text to produce an object or array.
                                  -            It can throw a SyntaxError exception.
                                  -
                                  -            The optional reviver parameter is a function that can filter and
                                  -            transform the results. It receives each of the keys and values,
                                  -            and its return value is used instead of the original value.
                                  -            If it returns what it received, then the structure is not modified.
                                  -            If it returns undefined then the member is deleted.
                                  -
                                  -            Example:
                                  -
                                  -            // Parse the text. Values that look like ISO date strings will
                                  -            // be converted to Date objects.
                                  -
                                  -            myData = JSON.parse(text, function (key, value) {
                                  -                var a;
                                  -                if (typeof value === 'string') {
                                  -                    a =
                                  -/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                                  -                    if (a) {
                                  -                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                                  -                            +a[5], +a[6]));
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                                  -                var d;
                                  -                if (typeof value === 'string' &&
                                  -                        value.slice(0, 5) === 'Date(' &&
                                  -                        value.slice(-1) === ')') {
                                  -                    d = new Date(value.slice(5, -1));
                                  -                    if (d) {
                                  -                        return d;
                                  -                    }
                                  -                }
                                  -                return value;
                                  -            });
                                  -
                                  -
                                  -    This is a reference implementation. You are free to copy, modify, or
                                  -    redistribute.
                                  -*/
                                  -
                                  -/*jslint evil: true, strict: false */
                                  -
                                  -/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
                                  -    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
                                  -    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
                                  -    lastIndex, length, parse, prototype, push, replace, slice, stringify,
                                  -    test, toJSON, toString, valueOf
                                  -*/
                                  -
                                  -
                                  -// Create a JSON object only if one does not already exist. We create the
                                  -// methods in a closure to avoid creating global variables.
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var JSON = window.JSON || {};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -(function () {
                                  -
                                  -    function f(n) {
                                  -        // Format integers to have at least two digits.
                                  -        return n < 10 ? '0' + n : n;
                                  -    }
                                  -
                                  -    if (typeof Date.prototype.toJSON !== 'function') {
                                  -
                                  -        Date.prototype.toJSON = function (key) {
                                  -
                                  -            return isFinite(this.valueOf()) ?
                                  -                   this.getUTCFullYear()   + '-' +
                                  -                 f(this.getUTCMonth() + 1) + '-' +
                                  -                 f(this.getUTCDate())      + 'T' +
                                  -                 f(this.getUTCHours())     + ':' +
                                  -                 f(this.getUTCMinutes())   + ':' +
                                  -                 f(this.getUTCSeconds())   + 'Z' : null;
                                  -        };
                                  -
                                  -        String.prototype.toJSON =
                                  -        Number.prototype.toJSON =
                                  -        Boolean.prototype.toJSON = function (key) {
                                  -            return this.valueOf();
                                  -        };
                                  -    }
                                  -
                                  -    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -        gap,
                                  -        indent,
                                  -        meta = {    // table of character substitutions
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '\\': '\\\\'
                                  -        },
                                  -        rep;
                                  -
                                  -
                                  -    function quote(string) {
                                  -
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can safely slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe escape
                                  -// sequences.
                                  -
                                  -        escapable.lastIndex = 0;
                                  -        return escapable.test(string) ?
                                  -            '"' + string.replace(escapable, function (a) {
                                  -                var c = meta[a];
                                  -                return typeof c === 'string' ? c :
                                  -                    '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -            }) + '"' :
                                  -            '"' + string + '"';
                                  -    }
                                  -
                                  -
                                  -    function str(key, holder) {
                                  -
                                  -// Produce a string from holder[key].
                                  -
                                  -        var i,          // The loop counter.
                                  -            k,          // The member key.
                                  -            v,          // The member value.
                                  -            length,
                                  -            mind = gap,
                                  -            partial,
                                  -            value = holder[key];
                                  -
                                  -// If the value has a toJSON method, call it to obtain a replacement value.
                                  -
                                  -        if (value && typeof value === 'object' &&
                                  -                typeof value.toJSON === 'function') {
                                  -            value = value.toJSON(key);
                                  -        }
                                  -
                                  -// If we were called with a replacer function, then call the replacer to
                                  -// obtain a replacement value.
                                  -
                                  -        if (typeof rep === 'function') {
                                  -            value = rep.call(holder, key, value);
                                  -        }
                                  -
                                  -// What happens next depends on the value's type.
                                  -
                                  -        switch (typeof value) {
                                  -        case 'string':
                                  -            return quote(value);
                                  -
                                  -        case 'number':
                                  -
                                  -// JSON numbers must be finite. Encode non-finite numbers as null.
                                  -
                                  -            return isFinite(value) ? String(value) : 'null';
                                  -
                                  -        case 'boolean':
                                  -        case 'null':
                                  -
                                  -// If the value is a boolean or null, convert it to a string. Note:
                                  -// typeof null does not produce 'null'. The case is included here in
                                  -// the remote chance that this gets fixed someday.
                                  -
                                  -            return String(value);
                                  -
                                  -// If the type is 'object', we might be dealing with an object or an array or
                                  -// null.
                                  -
                                  -        case 'object':
                                  -
                                  -// Due to a specification blunder in ECMAScript, typeof null is 'object',
                                  -// so watch out for that case.
                                  -
                                  -            if (!value) {
                                  -                return 'null';
                                  -            }
                                  -
                                  -// Make an array to hold the partial results of stringifying this object value.
                                  -
                                  -            gap += indent;
                                  -            partial = [];
                                  -
                                  -// Is the value an array?
                                  -
                                  -            if (Object.prototype.toString.apply(value) === '[object Array]') {
                                  -
                                  -// The value is an array. Stringify every element. Use null as a placeholder
                                  -// for non-JSON values.
                                  -
                                  -                length = value.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    partial[i] = str(i, value) || 'null';
                                  -                }
                                  -
                                  -// Join all of the elements together, separated with commas, and wrap them in
                                  -// brackets.
                                  -
                                  -                v = partial.length === 0 ? '[]' :
                                  -                    gap ? '[\n' + gap +
                                  -                            partial.join(',\n' + gap) + '\n' +
                                  -                                mind + ']' :
                                  -                          '[' + partial.join(',') + ']';
                                  -                gap = mind;
                                  -                return v;
                                  -            }
                                  -
                                  -// If the replacer is an array, use it to select the members to be stringified.
                                  -
                                  -            if (rep && typeof rep === 'object') {
                                  -                length = rep.length;
                                  -                for (i = 0; i < length; i += 1) {
                                  -                    k = rep[i];
                                  -                    if (typeof k === 'string') {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -
                                  -// Otherwise, iterate through all of the keys in the object.
                                  -
                                  -                for (k in value) {
                                  -                    if (Object.hasOwnProperty.call(value, k)) {
                                  -                        v = str(k, value);
                                  -                        if (v) {
                                  -                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -// Join all of the member texts together, separated with commas,
                                  -// and wrap them in braces.
                                  -
                                  -            v = partial.length === 0 ? '{}' :
                                  -                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
                                  -                        mind + '}' : '{' + partial.join(',') + '}';
                                  -            gap = mind;
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -// If the JSON object does not yet have a stringify method, give it one.
                                  -
                                  -    if (typeof JSON.stringify !== 'function') {
                                  -        JSON.stringify = function (value, replacer, space) {
                                  -
                                  -// The stringify method takes a value and an optional replacer, and an optional
                                  -// space parameter, and returns a JSON text. The replacer can be a function
                                  -// that can replace values, or an array of strings that will select the keys.
                                  -// A default replacer method can be provided. Use of the space parameter can
                                  -// produce text that is more easily readable.
                                  -
                                  -            var i;
                                  -            gap = '';
                                  -            indent = '';
                                  -
                                  -// If the space parameter is a number, make an indent string containing that
                                  -// many spaces.
                                  -
                                  -            if (typeof space === 'number') {
                                  -                for (i = 0; i < space; i += 1) {
                                  -                    indent += ' ';
                                  -                }
                                  -
                                  -// If the space parameter is a string, it will be used as the indent string.
                                  -
                                  -            } else if (typeof space === 'string') {
                                  -                indent = space;
                                  -            }
                                  -
                                  -// If there is a replacer, it must be a function or an array.
                                  -// Otherwise, throw an error.
                                  -
                                  -            rep = replacer;
                                  -            if (replacer && typeof replacer !== 'function' &&
                                  -                    (typeof replacer !== 'object' ||
                                  -                     typeof replacer.length !== 'number')) {
                                  -                throw new Error('JSON.stringify');
                                  -            }
                                  -
                                  -// Make a fake root object containing our value under the key of ''.
                                  -// Return the result of stringifying the value.
                                  -
                                  -            return str('', {'': value});
                                  -        };
                                  -    }
                                  -
                                  -
                                  -// If the JSON object does not yet have a parse method, give it one.
                                  -
                                  -    if (typeof JSON.parse !== 'function') {
                                  -        JSON.parse = function (text, reviver) {
                                  -
                                  -// The parse method takes a text and an optional reviver function, and returns
                                  -// a JavaScript value if the text is a valid JSON text.
                                  -
                                  -            var j;
                                  -
                                  -            function walk(holder, key) {
                                  -
                                  -// The walk method is used to recursively walk the resulting structure so
                                  -// that modifications can be made.
                                  -
                                  -                var k, v, value = holder[key];
                                  -                if (value && typeof value === 'object') {
                                  -                    for (k in value) {
                                  -                        if (Object.hasOwnProperty.call(value, k)) {
                                  -                            v = walk(value, k);
                                  -                            if (v !== undefined) {
                                  -                                value[k] = v;
                                  -                            } else {
                                  -                                delete value[k];
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                return reviver.call(holder, key, value);
                                  -            }
                                  -
                                  -
                                  -// Parsing happens in four stages. In the first stage, we replace certain
                                  -// Unicode characters with escape sequences. JavaScript handles many characters
                                  -// incorrectly, either silently deleting them, or treating them as line endings.
                                  -
                                  -            text = String(text);
                                  -            cx.lastIndex = 0;
                                  -            if (cx.test(text)) {
                                  -                text = text.replace(cx, function (a) {
                                  -                    return '\\u' +
                                  -                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                                  -                });
                                  -            }
                                  -
                                  -// In the second stage, we run the text against regular expressions that look
                                  -// for non-JSON patterns. We are especially concerned with '()' and 'new'
                                  -// because they can cause invocation, and '=' because it can cause mutation.
                                  -// But just to be safe, we want to reject all unexpected forms.
                                  -
                                  -// We split the second stage into 4 regexp operations in order to work around
                                  -// crippling inefficiencies in IE's and Safari's regexp engines. First we
                                  -// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
                                  -// replace all simple value tokens with ']' characters. Third, we delete all
                                  -// open brackets that follow a colon or comma or that begin the text. Finally,
                                  -// we look to see that the remaining characters are only whitespace or ']' or
                                  -// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
                                  -
                                  -            if (/^[\],:{}\s]*$/.
                                  -test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
                                  -replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
                                  -replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
                                  -
                                  -// In the third stage we use the eval function to compile the text into a
                                  -// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
                                  -// in JavaScript: it can begin a block or an object literal. We wrap the text
                                  -// in parens to eliminate the ambiguity.
                                  -
                                  -                j = eval('(' + text + ')');
                                  -
                                  -// In the optional fourth stage, we recursively walk the new structure, passing
                                  -// each name/value pair to a reviver function for possible transformation.
                                  -
                                  -                return typeof reviver === 'function' ?
                                  -                    walk({'': j}, '') : j;
                                  -            }
                                  -
                                  -// If the text is not JSON parseable, then a SyntaxError is thrown.
                                  -
                                  -            throw new SyntaxError('JSON.parse');
                                  -        };
                                  -    }
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.JSON = JSON;
                                  -
                                  -// ************************************************************************************************
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/store/package.json b/branches/flexBox/content/lite/store/package.json
                                  deleted file mode 100644
                                  index d26db7bc..00000000
                                  --- a/branches/flexBox/content/lite/store/package.json
                                  +++ /dev/null
                                  @@ -1,40 +0,0 @@
                                  -{
                                  -  "name": "store",
                                  -  "description": "A localStorage wrapper for all browsers without using cookies or flash. Uses localStorage, globalStorage, and userData behavior under the hood",
                                  -  "version": "1.1.1",
                                  -  "homepage": "https://github.com/marcuswestin/store.js",
                                  -  "author": "Marcus Westin <narcvs@gmail.com> (http://marcuswest.in)",
                                  -  "contributors": [
                                  -    "Matt Pizzimenti <mjpizz+github@gmail.com> (http://mjpizz.com)",
                                  -    "Long Ouyang (https://github.com/longouyang)",
                                  -    "Paul Irish (http://paulirish.com)",
                                  -    "Guillermo Rauch <rauchg@gmail.com> (https://github.com/guille)",
                                  -    "whitmer (https://github.com/whitmer)",
                                  -    "Steven Black <steveb@stevenblack.com> (https://github.com/StevenBlack)",
                                  -    "Marcus Tucker <info@marcustucker.com> (https://github.com/MarcusJT)"
                                  -  ],
                                  -  "repository": {
                                  -    "type": "git",
                                  -    "url": "git://github.com/marcuswestin/store.js.git"
                                  -  },
                                  -  "bugs": {
                                  -    "url": "http://github.com/marcuswestin/store.js/issues"
                                  -  },
                                  -  "engines": {
                                  -    "browser": "*",
                                  -    "node": "*"
                                  -  },
                                  -  "licenses": [
                                  -    {
                                  -      "type": "MIT",
                                  -      "url": "http://github.com/marcuswestin/store.js/raw/master/LICENSE"
                                  -    }
                                  -  ],
                                  -  "main": "store",
                                  -  "directories": {
                                  -    "lib": "."
                                  -  },
                                  -  "files": [
                                  -    ""
                                  -  ]
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/store/store.js b/branches/flexBox/content/lite/store/store.js
                                  deleted file mode 100644
                                  index f17571fa..00000000
                                  --- a/branches/flexBox/content/lite/store/store.js
                                  +++ /dev/null
                                  @@ -1,142 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -/* Copyright (c) 2010-2011 Marcus Westin
                                  - *
                                  - * Permission is hereby granted, free of charge, to any person obtaining a copy
                                  - * of this software and associated documentation files (the "Software"), to deal
                                  - * in the Software without restriction, including without limitation the rights
                                  - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  - * copies of the Software, and to permit persons to whom the Software is
                                  - * furnished to do so, subject to the following conditions:
                                  - *
                                  - * The above copyright notice and this permission notice shall be included in
                                  - * all copies or substantial portions of the Software.
                                  - *
                                  - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  - * THE SOFTWARE.
                                  - */
                                  -
                                  -var store = (function(){
                                  -	var api = {},
                                  -		win = window,
                                  -		doc = win.document,
                                  -		localStorageName = 'localStorage',
                                  -		globalStorageName = 'globalStorage',
                                  -		namespace = '__firebug__storejs__',
                                  -		storage
                                  -
                                  -	api.disabled = false
                                  -	api.set = function(key, value) {}
                                  -	api.get = function(key) {}
                                  -	api.remove = function(key) {}
                                  -	api.clear = function() {}
                                  -	api.transact = function(key, transactionFn) {
                                  -		var val = api.get(key)
                                  -		if (typeof val == 'undefined') { val = {} }
                                  -		transactionFn(val)
                                  -		api.set(key, val)
                                  -	}
                                  -
                                  -	api.serialize = function(value) {
                                  -		return JSON.stringify(value)
                                  -	}
                                  -	api.deserialize = function(value) {
                                  -		if (typeof value != 'string') { return undefined }
                                  -		return JSON.parse(value)
                                  -	}
                                  -
                                  -	// Functions to encapsulate questionable FireFox 3.6.13 behavior 
                                  -	// when about.config::dom.storage.enabled === false
                                  -	// See https://github.com/marcuswestin/store.js/issues#issue/13
                                  -	function isLocalStorageNameSupported() {
                                  -		try { return (localStorageName in win && win[localStorageName]) }
                                  -		catch(err) { return false }
                                  -	}
                                  -	
                                  -	function isGlobalStorageNameSupported() {
                                  -		try { return (globalStorageName in win && win[globalStorageName] && win[globalStorageName][win.location.hostname]) }
                                  -		catch(err) { return false }
                                  -	}	
                                  -
                                  -	if (isLocalStorageNameSupported()) {
                                  -		storage = win[localStorageName]
                                  -		api.set = function(key, val) { storage.setItem(key, api.serialize(val)) }
                                  -		api.get = function(key) { return api.deserialize(storage.getItem(key)) }
                                  -		api.remove = function(key) { storage.removeItem(key) }
                                  -		api.clear = function() { storage.clear() }
                                  -
                                  -	} else if (isGlobalStorageNameSupported()) {
                                  -		storage = win[globalStorageName][win.location.hostname]
                                  -		api.set = function(key, val) { storage[key] = api.serialize(val) }
                                  -		api.get = function(key) { return api.deserialize(storage[key] && storage[key].value) }
                                  -		api.remove = function(key) { delete storage[key] }
                                  -		api.clear = function() { for (var key in storage ) { delete storage[key] } }
                                  -
                                  -	} else if (doc.documentElement.addBehavior) {
                                  -		var storage = doc.createElement('div')
                                  -		function withIEStorage(storeFunction) {
                                  -			return function() {
                                  -				var args = Array.prototype.slice.call(arguments, 0)
                                  -				args.unshift(storage)
                                  -				// See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
                                  -				// and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
                                  -				// TODO: xxxpedro doc.body is not always available so we must use doc.documentElement.
                                  -				// We need to make sure this change won't affect the behavior of this library.
                                  -				doc.documentElement.appendChild(storage)
                                  -				storage.addBehavior('#default#userData')
                                  -				storage.load(localStorageName)
                                  -				var result = storeFunction.apply(api, args)
                                  -				doc.documentElement.removeChild(storage)
                                  -				return result
                                  -			}
                                  -		}
                                  -		api.set = withIEStorage(function(storage, key, val) {
                                  -			storage.setAttribute(key, api.serialize(val))
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.get = withIEStorage(function(storage, key) {
                                  -			return api.deserialize(storage.getAttribute(key))
                                  -		})
                                  -		api.remove = withIEStorage(function(storage, key) {
                                  -			storage.removeAttribute(key)
                                  -			storage.save(localStorageName)
                                  -		})
                                  -		api.clear = withIEStorage(function(storage) {
                                  -			var attributes = storage.XMLDocument.documentElement.attributes
                                  -			storage.load(localStorageName)
                                  -			for (var i=0, attr; attr = attributes[i]; i++) {
                                  -				storage.removeAttribute(attr.name)
                                  -			}
                                  -			storage.save(localStorageName)
                                  -		})
                                  -	}
                                  -	
                                  -	try {
                                  -		api.set(namespace, namespace)
                                  -		if (api.get(namespace) != namespace) { api.disabled = true }
                                  -		api.remove(namespace)
                                  -	} catch(e) {
                                  -		api.disabled = true
                                  -	}
                                  -	
                                  -	return api
                                  -})();
                                  -
                                  -if (typeof module != 'undefined') { module.exports = store }
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// registration
                                  -
                                  -FBL.Store = store;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/temp/chrome2.js b/branches/flexBox/content/lite/temp/chrome2.js
                                  deleted file mode 100644
                                  index 05828529..00000000
                                  --- a/branches/flexBox/content/lite/temp/chrome2.js
                                  +++ /dev/null
                                  @@ -1,1747 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var Firebug = null;
                                  -
                                  -/* The 'context' in this file is always 'Firebug.currentContext' */
                                  -
                                  -(function() {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -///const Cc = Components.classes;
                                  -///const Ci = Components.interfaces;
                                  -///const nsIWebNavigation = Ci.nsIWebNavigation;
                                  -
                                  -///const observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
                                  -///const wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
                                  -
                                  -///const LOAD_FLAGS_BYPASS_PROXY = nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY;
                                  -///const LOAD_FLAGS_BYPASS_CACHE = nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE;
                                  -///const LOAD_FLAGS_NONE = nsIWebNavigation.LOAD_FLAGS_NONE;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -///const panelURL = "chrome://firebug/content/panel.html";
                                  -
                                  -var statusCropSize = 20;
                                  -
                                  -var positiveZoomFactors = [1, 1.1, 1.2, 1.3, 1.5, 2, 3];
                                  -var negativeZoomFactors = [1, 0.95, 0.8, 0.7, 0.5, 0.2, 0.1];
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var panelBox, panelSplitter, sidePanelDeck, panelBar1, panelBar2, locationList, locationButtons,
                                  -    panelStatus, panelStatusSeparator, cmdPreview, cmdPreviewBrowser;
                                  -
                                  -var waitingPanelBarCount = 2;
                                  -
                                  -var inDetachedScope = (window.location == "chrome://firebug/content/firebug.xul");
                                  -
                                  -var disabledHead = null;
                                  -var disabledCaption = null;
                                  -var enableSiteLink = null;
                                  -var enableSystemPagesLink = null;
                                  -var enableAlwaysLink = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -top.FirebugChrome =
                                  -{
                                  -    window: window,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -
                                  -    panelBarReady: function(panelBar)
                                  -    {
                                  -        try
                                  -        {
                                  -            // Wait until all panelBar bindings are ready before initializing
                                  -            if (--waitingPanelBarCount == 0)
                                  -                this.initialize();
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Disaster!
                                  -            window.dump("getStackDump:"+FBL.getStackDump()+"\n");
                                  -            Components.utils.reportError("Firebug initialization FAILS "+exc);
                                  -            if (FBTrace.sysout)
                                  -                FBTrace.sysout("chrome.panelBarReady FAILS: "+exc, exc);
                                  -            return false;
                                  -        }
                                  -        return true; // the panel bar is ready
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        panelBox = $("fbPanelBox");
                                  -        panelSplitter = $("fbPanelSplitter");
                                  -        sidePanelDeck = $("fbSidePanelDeck");
                                  -        panelBar1 = $("fbPanelBar1");
                                  -        panelBar2 = $("fbPanelBar2");
                                  -        locationList = $("fbLocationList");
                                  -        locationButtons = $("fbLocationButtons");
                                  -        panelStatus = $("fbPanelStatus");
                                  -        panelStatusSeparator = $("fbStatusSeparator");
                                  -
                                  -        cmdPreview = $("fbCommandPreview");
                                  -        cmdPreviewBrowser = $("fbCommandPreviewBrowser");
                                  -
                                  -        if (window.arguments)
                                  -            var detachArgs = window.arguments[0];
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("chrome.initialize w/detachArgs=", detachArgs);
                                  -
                                  -        if (detachArgs && detachArgs.Firebug)
                                  -        {
                                  -            // we've been opened in a new window by an already initialized Firebug
                                  -            top.FBL = detachArgs.FBL;
                                  -            Firebug = detachArgs.Firebug;
                                  -            Firebug.currentContext = detachArgs.Firebug.currentContext;
                                  -        }
                                  -        else
                                  -        {
                                  -            // Firebug has not been initialized yet
                                  -            if (!Firebug.isInitialized)
                                  -                Firebug.initialize();
                                  -        }
                                  -
                                  -        // FBL should be available
                                  -        if (FBTrace.sysout && (!FBL || !FBL.initialize) )
                                  -            FBTrace.sysout("Firebug is broken, FBL incomplete, if the last function is QI, check lib.js:", FBL);
                                  -
                                  -        Firebug.internationalizeUI(window.document);
                                  -
                                  -        var browser1 = panelBar1.browser;
                                  -        browser1.addEventListener("load", browser1Loaded, true);
                                  -        browser1.droppedLinkHandler = function()
                                  -        {
                                  -            return false;
                                  -        };
                                  -
                                  -        var browser2 = panelBar2.browser;
                                  -        browser2.addEventListener("load", browser2Loaded, true);
                                  -        browser2.droppedLinkHandler = function()
                                  -        {
                                  -            return false;
                                  -        };
                                  -
                                  -        window.addEventListener("blur", onBlur, true);
                                  -
                                  -        // Initialize Firebug Tools & Firebug Icon menus.
                                  -        var firebugMenuPopup = $("fbFirebugMenuPopup");
                                  -        this.initializeMenu($("menu_firebug"), firebugMenuPopup);
                                  -        this.initializeMenu($("fbFirebugMenu"), firebugMenuPopup);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("chrome.initialized ", window);
                                  -    },
                                  -
                                  -    initializeMenu: function(parentMenu, popupMenu)
                                  -    {
                                  -        if (!parentMenu)
                                  -            return;
                                  -
                                  -        if (parentMenu.getAttribute("initialized"))
                                  -            return;
                                  -
                                  -        parentMenu.appendChild(popupMenu.cloneNode(true));
                                  -        parentMenu.setAttribute("initialized", "true");
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when the UI is ready to be initialized, once the panel browsers are loaded.
                                  -     */
                                  -    initializeUI: function()
                                  -    {
                                  -        // we listen for panel update
                                  -        Firebug.registerUIListener(this);
                                  -
                                  -        try
                                  -        {
                                  -            if (window.arguments)
                                  -                var detachArgs = window.arguments[0];
                                  -
                                  -            this.applyTextSize(Firebug.textSize);
                                  -
                                  -            var doc1 = panelBar1.browser.contentDocument;
                                  -            doc1.addEventListener("mouseover", onPanelMouseOver, false);
                                  -            doc1.addEventListener("mouseout", onPanelMouseOut, false);
                                  -            doc1.addEventListener("mousedown", onPanelMouseDown, false);
                                  -            doc1.addEventListener("click", onPanelClick, false);
                                  -            panelBar1.addEventListener("selectingPanel", onSelectingPanel, false);
                                  -
                                  -            var doc2 = panelBar2.browser.contentDocument;
                                  -            doc2.addEventListener("mouseover", onPanelMouseOver, false);
                                  -            doc2.addEventListener("mouseout", onPanelMouseOut, false);
                                  -            doc2.addEventListener("click", onPanelClick, false);
                                  -            doc2.addEventListener("mousedown", onPanelMouseDown, false);
                                  -            panelBar2.addEventListener("selectPanel", onSelectedSidePanel, false);
                                  -
                                  -            var doc3 = cmdPreviewBrowser.contentDocument;
                                  -            doc3.addEventListener("mouseover", onPanelMouseOver, false);
                                  -            doc3.addEventListener("mouseout", onPanelMouseOut, false);
                                  -            doc3.addEventListener("mousedown", onPanelMouseDown, false);
                                  -            doc3.addEventListener("click", onPanelClick, false);
                                  -
                                  -            var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
                                  -            mainTabBox.addEventListener("mousedown", onMainTabBoxMouseDown, false);
                                  -
                                  -            // The side panel bar doesn't care about this event.  It must, however,
                                  -            // prevent it from bubbling now that we allow the side panel bar to be
                                  -            // *inside* the main panel bar.
                                  -            function stopBubble(event) { event.stopPropagation(); }
                                  -            panelBar2.addEventListener("selectingPanel", stopBubble, false);
                                  -
                                  -            locationList.addEventListener("selectObject", onSelectLocation, false);
                                  -
                                  -            this.updatePanelBar1(Firebug.panelTypes);
                                  -
                                  -            if (inDetachedScope)
                                  -                this.attachBrowser(Firebug.currentContext);
                                  -            else
                                  -                Firebug.initializeUI(detachArgs);
                                  -
                                  -            // Append all registered styleesheets into Firebug UI.
                                  -            for (var uri in Firebug.stylesheets)
                                  -            {
                                  -                FBL.appendStylesheet(doc1, Firebug.stylesheets[uri]);
                                  -                FBL.appendStylesheet(doc2, Firebug.stylesheets[uri]);
                                  -                FBL.appendStylesheet(doc3, Firebug.stylesheets[uri]);
                                  -            }
                                  -
                                  -            FirstRunPage.initializeUI();
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            FBTrace.sysout("chrome.initializeUI fails "+exc, exc);
                                  -        }
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE || !panelBar1)
                                  -            FBTrace.sysout("chrome.shutdown entered for "+window.location+"\n");
                                  -
                                  -        var doc1 = panelBar1.browser.contentDocument;
                                  -        doc1.removeEventListener("mouseover", onPanelMouseOver, false);
                                  -        doc1.removeEventListener("mouseout", onPanelMouseOut, false);
                                  -        doc1.removeEventListener("mousedown", onPanelMouseDown, false);
                                  -        doc1.removeEventListener("click", onPanelClick, false);
                                  -
                                  -        var doc2 = panelBar2.browser.contentDocument;
                                  -        doc2.removeEventListener("mouseover", onPanelMouseOver, false);
                                  -        doc2.removeEventListener("mouseout", onPanelMouseOut, false);
                                  -        doc2.removeEventListener("mousedown", onPanelMouseDown, false);
                                  -        doc2.removeEventListener("click", onPanelClick, false);
                                  -
                                  -        var doc3 = cmdPreviewBrowser.contentDocument;
                                  -        doc3.removeEventListener("mouseover", onPanelMouseOver, false);
                                  -        doc3.removeEventListener("mouseout", onPanelMouseOut, false);
                                  -        doc3.removeEventListener("mousedown", onPanelMouseDown, false);
                                  -        doc3.removeEventListener("click", onPanelClick, false);
                                  -
                                  -        var mainTabBox = panelBar1.ownerDocument.getElementById("fbPanelBar1-tabBox");
                                  -        mainTabBox.removeEventListener("mousedown", onMainTabBoxMouseDown, false);
                                  -
                                  -        locationList.removeEventListener("selectObject", onSelectLocation, false);
                                  -
                                  -        window.removeEventListener("blur", onBlur, true);
                                  -
                                  -        Firebug.unregisterUIListener(this);
                                  -
                                  -        if (inDetachedScope)
                                  -            this.undetach();
                                  -        else
                                  -            Firebug.shutdown();
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (panelBar1.selectedPanel)
                                  -            panelBar1.selectedPanel.updateOption(name, value);
                                  -        if (panelBar2.selectedPanel)
                                  -            panelBar2.selectedPanel.updateOption(name, value);
                                  -
                                  -        if (name == "textSize")
                                  -            this.applyTextSize(value);
                                  -        if (name =="omitObjectPathStack")
                                  -            this.obeyOmitObjectPathStack(value);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachBrowser: function(context)  // XXXjjb context == (Firebug.currentContext || null)  and inDetachedScope == true
                                  -    {
                                  -        if (FBTrace.DBG_ACTIVATION)
                                  -            FBTrace.sysout("chrome.attachBrowser with inDetachedScope="+inDetachedScope +
                                  -                " context="+context+" context==Firebug.currentContext: "+(context==Firebug.currentContext)+
                                  -                " in window: "+window.location);
                                  -
                                  -        if (inDetachedScope)  // then we are initializing in external window
                                  -        {
                                  -            Firebug.setChrome(this, "detached"); // 1.4
                                  -
                                  -            Firebug.selectContext(context);
                                  -
                                  -            if (FBTrace.DBG_ACTIVATION)
                                  -                FBTrace.sysout("attachBrowser inDetachedScope in Firebug.chrome.window: "+
                                  -                    Firebug.chrome.window.location);
                                  -        }
                                  -    },
                                  -
                                  -    undetach: function()
                                  -    {
                                  -        var detachedChrome = Firebug.chrome;
                                  -        Firebug.setChrome(Firebug.originalChrome, "minimized");
                                  -
                                  -        Firebug.showBar(false);
                                  -        Firebug.resetTooltip();
                                  -
                                  -        // when we are done here the window.closed will be true so we don't want to hang on to the ref.
                                  -        detachedChrome.window = "This is detached chrome!";
                                  -    },
                                  -
                                  -    disableOff: function(collapse)
                                  -    {
                                  -        FBL.collapse($("fbCloseButton"), collapse);  // disable/enable this button in the Firebug.chrome window.
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getBrowsers: function()
                                  -    {
                                  -          return Firebug.tabBrowser.browsers;
                                  -    },
                                  -
                                  -    getCurrentBrowser: function()
                                  -    {
                                  -        return Firebug.tabBrowser.selectedBrowser;
                                  -    },
                                  -
                                  -    getCurrentURI: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            return Firebug.tabBrowser.currentURI;
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getPanelDocument: function(panelType)
                                  -    {
                                  -        // Console panel can be displayed for all the other panels
                                  -        // (except of the console panel itself)
                                  -        // XXXjjb, xxxHonza: this should be somehow betterm, more generic and extensible...
                                  -        var consolePanelType = Firebug.getPanelType("console");
                                  -        if (consolePanelType == panelType)
                                  -        {
                                  -            if (!FBL.isCollapsed(cmdPreview))
                                  -                return cmdPreviewBrowser.contentDocument;
                                  -        }
                                  -
                                  -        // Standard panel and side panel documents.
                                  -        if (!panelType.prototype.parentPanel)
                                  -            return panelBar1.browser.contentDocument;
                                  -        else
                                  -            return panelBar2.browser.contentDocument;
                                  -    },
                                  -
                                  -    getPanelBrowser: function(panel)
                                  -    {
                                  -        if (!panel.parentPanel)
                                  -            return panelBar1.browser;
                                  -        else
                                  -            return panelBar2.browser;
                                  -    },
                                  -
                                  -    savePanels: function()
                                  -    {
                                  -        var path = this.writePanels(panelBar1.browser.contentDocument);
                                  -        $("fbStatusText").setAttribute("value", path);
                                  -        if (FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("Wrote panels to "+path+"\n");
                                  -    },
                                  -
                                  -    writePanels: function(doc)
                                  -    {
                                  -        var serializer = new XMLSerializer();
                                  -        var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
                                  -               .createInstance(Components.interfaces.nsIFileOutputStream);
                                  -        var file = Components.classes["@mozilla.org/file/directory_service;1"]
                                  -           .getService(Components.interfaces.nsIProperties)
                                  -           .get("TmpD", Components.interfaces.nsIFile);
                                  -
                                  -        file.append("firebug");   // extensions sub-directory
                                  -        file.append("panelSave.html");
                                  -        file.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 0666);
                                  -        foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);   // write, create, truncate
                                  -        serializer.serializeToStream(doc, foStream, "");   // rememeber, doc is the DOM tree
                                  -        foStream.close();
                                  -        return file.path;
                                  -    },
                                  -
                                  -    updatePanelBar1: function(panelTypes)  // part of initializeUI
                                  -    {
                                  -        var mainPanelTypes = [];
                                  -        for (var i = 0; i < panelTypes.length; ++i)
                                  -        {
                                  -            var panelType = panelTypes[i];
                                  -            if (!panelType.prototype.parentPanel && !panelType.hidden)
                                  -                mainPanelTypes.push(panelType);
                                  -        }
                                  -        panelBar1.updatePanels(mainPanelTypes);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getName: function()
                                  -    {
                                  -        return window ? window.location.href : null;
                                  -    },
                                  -
                                  -    close: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("chrome.close closing window "+window.location);
                                  -        window.close();
                                  -    },
                                  -
                                  -    focus: function()
                                  -    {
                                  -        window.focus();
                                  -        panelBar1.browser.contentWindow.focus();
                                  -    },
                                  -
                                  -    isFocused: function()
                                  -    {
                                  -        return wm.getMostRecentWindow(null) == window;
                                  -    },
                                  -
                                  -    focusWatch: function(context)
                                  -    {
                                  -        if (Firebug.isDetached())
                                  -            Firebug.chrome.focus();
                                  -        else
                                  -            Firebug.toggleBar(true);
                                  -
                                  -        Firebug.chrome.selectPanel("script");
                                  -
                                  -        var watchPanel = context.getPanel("watches", true);
                                  -        if (watchPanel)
                                  -        {
                                  -            Firebug.CommandLine.isReadyElsePreparing(context);
                                  -            watchPanel.editNewWatch();
                                  -        }
                                  -    },
                                  -
                                  -    isOpen: function()
                                  -    {
                                  -        return !($("fbContentBox").collapsed);
                                  -    },
                                  -
                                  -    reload: function(skipCache)
                                  -    {
                                  -        var reloadFlags = skipCache
                                  -            ? LOAD_FLAGS_BYPASS_PROXY | LOAD_FLAGS_BYPASS_CACHE
                                  -            : LOAD_FLAGS_NONE;
                                  -
                                  -        // Make sure the selected tab in the attached browser window is refreshed.
                                  -        var browser = Firebug.chrome.getCurrentBrowser();
                                  -        browser.firebugReload = true;
                                  -        browser.webNavigation.reload(reloadFlags);
                                  -
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("chrome.reload; " + skipCache + ", " + browser.currentURI.spec);
                                  -    },
                                  -
                                  -    gotoPreviousTab: function()
                                  -    {
                                  -        if (Firebug.currentContext.previousPanelName)
                                  -            this.selectPanel(Firebug.currentContext.previousPanelName);
                                  -    },
                                  -
                                  -    gotoSiblingTab : function(goRight)
                                  -    {
                                  -        if ($('fbContentBox').collapsed)
                                  -            return;
                                  -        var i, currentIndex = newIndex = -1, currentPanel = this.getSelectedPanel(), newPanel;
                                  -        var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
                                  -
                                  -        /*get current panel's index (is there a simpler way for this?*/
                                  -        for (i = 0; i < panelTypes.length; i++)
                                  -        {
                                  -            if (panelTypes[i].prototype.name === currentPanel.name)
                                  -            {
                                  -                currentIndex = i;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        if (currentIndex != -1)
                                  -        {
                                  -            newIndex = goRight ? (currentIndex == panelTypes.length - 1 ? 0 : ++currentIndex) : (currentIndex == 0 ? panelTypes.length - 1 : --currentIndex);
                                  -            newPanel = panelTypes[newIndex].prototype;
                                  -            if (newPanel && newPanel.name)
                                  -            {
                                  -                this.selectPanel(newPanel.name);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getNextObject: function(reverse)
                                  -    {
                                  -        var panel = Firebug.currentContext.getPanel(Firebug.currentContext.panelName);
                                  -        if (panel)
                                  -        {
                                  -            var item = panelStatus.getItemByObject(panel.selection);
                                  -            if (item)
                                  -            {
                                  -                if (reverse)
                                  -                    item = item.previousSibling ? item.previousSibling.previousSibling : null;
                                  -                else
                                  -                    item = item.nextSibling ? item.nextSibling.nextSibling : null;
                                  -
                                  -                if (item)
                                  -                    return item.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    gotoNextObject: function(reverse)
                                  -    {
                                  -        var nextObject = this.getNextObject(reverse);
                                  -        if (nextObject)
                                  -            this.select(nextObject);
                                  -        else
                                  -            beep();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Panels
                                  -
                                  -    /*
                                  -     * Set this.location on the current panel or one given by name.
                                  -     * The location object should be known to the caller to be of the correct type for the panel,
                                  -     * eg SourceFile for Script panel
                                  -     * @param object the location object, null selects default location
                                  -     * @param panelName the .name field for the desired panel, null means current panel
                                  -     * @param sidePanelName I don't know how this affects the outcome
                                  -     */
                                  -    navigate: function(object, panelName, sidePanelName)
                                  -    {
                                  -        var panel;
                                  -        if (panelName || sidePanelName)
                                  -            panel = this.selectPanel(panelName, sidePanelName);
                                  -        else
                                  -            panel = this.getSelectedPanel();
                                  -
                                  -        if (panel)
                                  -            panel.navigate(object);
                                  -    },
                                  -
                                  -    /*
                                  -     *  Set this.selection by object type analysis, passing the object to all panels to find the best match
                                  -     *  @param object the new this.selection object
                                  -     *  @param panelName matching panel.name will be used if its supportsObject returns true value
                                  -     *  @param sidePanelName default side panel name, used if its supportObject returns true value
                                  -     *  @param forceUpdate if true, then (object === this.selection) is ignored and updateSelection is called
                                  -     */
                                  -    select: function(object, panelName, sidePanelName, forceUpdate)
                                  -    {
                                  -        if (FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("chrome.select object:"+object+" panelName:"+panelName+" sidePanelName:"+sidePanelName+" forceUpdate:"+forceUpdate+"\n");
                                  -        var bestPanelName = getBestPanelName(object, Firebug.currentContext, panelName);
                                  -        var panel = this.selectPanel(bestPanelName, sidePanelName, true);
                                  -        if (panel)
                                  -            panel.select(object, forceUpdate);
                                  -    },
                                  -
                                  -    selectPanel: function(panelName, sidePanelName, noRefresh)
                                  -    {
                                  -        if (panelName && sidePanelName)
                                  -            Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
                                  -
                                  -        return panelBar1.selectPanel(panelName, false, noRefresh);  // cause panel visibility changes and events
                                  -    },
                                  -
                                  -    selectSidePanel: function(panelName)
                                  -    {
                                  -        return panelBar2.selectPanel(panelName);
                                  -    },
                                  -
                                  -    selectSupportingPanel: function(object, context, forceUpdate)
                                  -    {
                                  -        var bestPanelName = getBestPanelSupportingObject(object, context);
                                  -        var panel = this.selectPanel(bestPanelName, false, true);
                                  -        if (panel)
                                  -            panel.select(object, forceUpdate);
                                  -    },
                                  -
                                  -    clearPanels: function()
                                  -    {
                                  -        panelBar1.hideSelectedPanel();
                                  -        panelBar1.selectedPanel = null;
                                  -        panelBar2.selectedPanel = null;
                                  -    },
                                  -
                                  -    getSelectedPanel: function()
                                  -    {
                                  -        return panelBar1.selectedPanel;
                                  -    },
                                  -
                                  -    getSelectedSidePanel: function()
                                  -    {
                                  -        return panelBar2.selectedPanel;
                                  -    },
                                  -
                                  -    switchToPanel: function(context, switchToPanelName)
                                  -    {
                                  -        // Remember the previous panel and bar state so we can revert if the user cancels
                                  -        this.previousPanelName = context.panelName;
                                  -        this.previousSidePanelName = context.sidePanelName;
                                  -        this.previouslyCollapsed = $("fbContentBox").collapsed;
                                  -        this.previouslyFocused = Firebug.isDetached() && this.isFocused();  // TODO previouslyMinimized
                                  -
                                  -        var switchPanel = this.selectPanel(switchToPanelName);
                                  -        if (switchPanel)
                                  -            this.previousObject = switchPanel.selection;
                                  -
                                  -        return switchPanel;
                                  -    },
                                  -
                                  -    unswitchToPanel: function(context, switchToPanelName, cancelled)
                                  -    {
                                  -        var switchToPanel = context.getPanel(switchToPanelName);
                                  -
                                  -        if (this.previouslyFocused)
                                  -            this.focus();
                                  -
                                  -        if (cancelled && this.previousPanelName)  // revert
                                  -        {
                                  -            if (this.previouslyCollapsed)
                                  -                Firebug.showBar(false);
                                  -
                                  -            if (this.previousPanelName == switchToPanelName)
                                  -                this.select(this.previousObject);
                                  -            else
                                  -                this.selectPanel(this.previousPanelName, this.previousSidePanelName);
                                  -        }
                                  -        else // else stay on the switchToPanel
                                  -        {
                                  -            this.selectPanel(switchToPanelName);
                                  -            if (switchToPanel.selection)
                                  -                this.select(switchToPanel.selection);
                                  -            this.getSelectedPanel().panelNode.focus();
                                  -        }
                                  -
                                  -        delete this.previousObject;
                                  -        delete this.previousPanelName;
                                  -        delete this.previousSidePanelName;
                                  -        delete this.inspectingChrome;
                                  -
                                  -        return switchToPanel;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Location interface provider for binding.xml panelFileList
                                  -
                                  -    getLocationProvider: function()
                                  -    {
                                  -        // a function that returns an object with .getObjectDescription() and .getLocationList()
                                  -        return function getSelectedPanelFromCurrentContext()
                                  -        {
                                  -            return Firebug.chrome.getSelectedPanel();  // panels provide location, use the selected panel
                                  -        };
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // UI Synchronization
                                  -
                                  -    setFirebugContext: function(context)
                                  -    {
                                  -         // This sets the global value of Firebug.currentContext in the window that this chrome is compiled into.
                                  -         // Note that for firebug.xul, the Firebug object is shared across windows, but not FirebugChrome and Firebug.currentContext
                                  -         FirebugContext = context;
                                  -         Firebug.currentContext = context;
                                  -
                                  -         if (FBTrace.DBG_WINDOWS || FBTrace.DBG_DISPATCH)
                                  -             FBTrace.sysout("setFirebugContext "+(Firebug.currentContext?Firebug.currentContext.getName():" **> NULL <** ") + " in "+window.location);
                                  -    },
                                  -
                                  -    hidePanel: function()
                                  -    {
                                  -        if (panelBar1.selectedPanel)
                                  -            panelBar1.hideSelectedPanel();
                                  -
                                  -        if (panelBar2.selectedPanel)
                                  -            panelBar2.hideSelectedPanel();
                                  -    },
                                  -
                                  -    syncPanel: function(panelName)
                                  -    {
                                  -        var context = Firebug.currentContext;
                                  -
                                  -        if (FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("chrome.syncPanel Firebug.currentContext=" +
                                  -                (context ? context.getName() : "undefined"));
                                  -
                                  -        panelStatus.clear();
                                  -
                                  -        if (context)
                                  -        {
                                  -            if (!panelName)
                                  -                panelName = context.panelName? context.panelName : Firebug.defaultPanelName;
                                  -
                                  -            // Make HTML panel the default panel, which is displayed
                                  -            // to the user the very first time.
                                  -            if (!panelName || !Firebug.getPanelType(panelName))
                                  -                panelName = "html";
                                  -
                                  -            this.syncMainPanels();
                                  -            panelBar1.selectPanel(panelName, true);
                                  -        }
                                  -        else
                                  -        {
                                  -            panelBar1.selectPanel(null, true);
                                  -        }
                                  -
                                  -        if (Firebug.isDetached())
                                  -            this.syncTitle();
                                  -    },
                                  -
                                  -    syncMainPanels: function()
                                  -    {
                                  -        var panelTypes = Firebug.getMainPanelTypes(Firebug.currentContext);
                                  -        panelBar1.updatePanels(panelTypes);
                                  -    },
                                  -
                                  -    syncSidePanels: function()
                                  -    {
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("syncSidePanels "+panelBar1.selectedPanel);
                                  -        if (!panelBar1.selectedPanel)
                                  -            return;
                                  -
                                  -        var panelTypes = Firebug.getSidePanelTypes(Firebug.currentContext, panelBar1.selectedPanel);
                                  -        panelBar2.updatePanels(panelTypes);
                                  -
                                  -        if (Firebug.currentContext && Firebug.currentContext.sidePanelNames)
                                  -        {
                                  -            if ( !panelBar2.selectedPanel || (panelBar2.selectedPanel.parentPanel !== panelBar1.selectedPanel.name) )
                                  -            {
                                  -                var sidePanelName = Firebug.currentContext.sidePanelNames[Firebug.currentContext.panelName];
                                  -                sidePanelName = getBestSidePanelName(sidePanelName, panelTypes);
                                  -                panelBar2.selectPanel(sidePanelName, true);
                                  -            }
                                  -            else
                                  -            {
                                  -                // if the context changes we need to refresh the panel
                                  -                panelBar2.selectPanel(panelBar2.selectedPanel.name, true);
                                  -            }
                                  -        }
                                  -        else
                                  -            panelBar2.selectPanel(null);
                                  -
                                  -        sidePanelDeck.selectedPanel = panelBar2;
                                  -        FBL.collapse(sidePanelDeck, !panelBar2.selectedPanel);
                                  -        FBL.collapse(panelSplitter, !panelBar2.selectedPanel);
                                  -    },
                                  -
                                  -    syncTitle: function()
                                  -    {
                                  -        if (Firebug.currentContext)
                                  -        {
                                  -            var title = Firebug.currentContext.getTitle();
                                  -            window.document.title = FBL.$STRF("WindowTitle", [title]);
                                  -        }
                                  -        else
                                  -            window.document.title = FBL.$STR("Firebug");
                                  -    },
                                  -
                                  -    focusLocationList: function()
                                  -    {
                                  -        locationList.popup.showPopup(locationList, -1, -1, "popup", "bottomleft", "topleft");
                                  -    },
                                  -
                                  -    syncLocationList: function()
                                  -    {
                                  -        var panel = panelBar1.selectedPanel;
                                  -        if (panel && panel.location)
                                  -        {
                                  -            locationList.location = panel.location;
                                  -            FBL.collapse(locationButtons, false);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.collapse(locationButtons, true);
                                  -        }
                                  -    },
                                  -
                                  -    clearStatusPath: function()
                                  -    {
                                  -        panelStatus.clear();
                                  -    },
                                  -
                                  -    syncStatusPath: function()
                                  -    {
                                  -        var panel = panelBar1.selectedPanel;
                                  -        if (!panel || (panel && !panel.selection))
                                  -        {
                                  -            panelStatus.clear();
                                  -        }
                                  -        else
                                  -        {
                                  -            var path = panel.getObjectPath(panel.selection);
                                  -            if (!path || !path.length)
                                  -            {
                                  -                FBL.hide(panelStatusSeparator, true);
                                  -                panelStatus.clear();
                                  -            }
                                  -            else
                                  -            {
                                  -                // Alright, let's update visibility of the separator. The separator
                                  -                // is displayed only if there are some other buttons on the left side.
                                  -                // Before showing the status separator let's see whethere there are any other
                                  -                // button on the left.
                                  -                var hide = true;
                                  -                var sibling = panelStatusSeparator.parentNode.previousSibling;
                                  -                while (sibling)
                                  -                {
                                  -                    if (!FBL.isCollapsed(sibling))
                                  -                    {
                                  -                        hide = false;
                                  -                        break;
                                  -                    }
                                  -                    sibling = sibling.previousSibling;
                                  -                }
                                  -                FBL.hide(panelStatusSeparator, hide);
                                  -
                                  -                if (panel.name != panelStatus.lastPanelName)
                                  -                    panelStatus.clear();
                                  -
                                  -                panelStatus.lastPanelName = panel.name;
                                  -
                                  -                // If the object already exists in the list, just select it and keep the path
                                  -                var selection = panel.selection;
                                  -                var existingItem = panelStatus.getItemByObject(panel.selection);
                                  -                if (existingItem)
                                  -                    panelStatus.selectItem(existingItem);
                                  -                else
                                  -                {
                                  -                    panelStatus.clear();
                                  -
                                  -                    for (var i = 0; i < path.length; ++i)
                                  -                    {
                                  -                        var object = path[i];
                                  -
                                  -                        var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -                        var objectTitle = rep.getTitle(object, Firebug.currentContext);
                                  -
                                  -                        var title = FBL.cropMultipleLines(objectTitle, statusCropSize);
                                  -                        panelStatus.addItem(title, object, rep, panel.statusSeparator);
                                  -                    }
                                  -
                                  -                    panelStatus.selectObject(panel.selection);
                                  -                    if (FBTrace.DBG_PANELS)
                                  -                        FBTrace.sysout("syncStatusPath "+path.length+" items ", path);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    toggleOrient: function()
                                  -    {
                                  -        var panelPane = $("fbPanelPane");
                                  -        panelSplitter.orient = panelPane.orient
                                  -            = panelPane.orient == "vertical" ? "horizontal" : "vertical";
                                  -        var option = $('menu_toggleOrient').getAttribute("option");
                                  -        Firebug.setPref(Firebug.prefDomain, option, panelPane.orient != "vertical");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addTab: function(context, url, title, parentPanel)
                                  -    {
                                  -        context.addPanelType(url, title, parentPanel);
                                  -        if (context == Firebug.currentContext)
                                  -        {
                                  -            if (parentPanel)
                                  -            {
                                  -                var currentPanel = this.getSelectedPanel();
                                  -                if (currentPanel && parentPanel == currentPanel.name)
                                  -                    this.syncSidePanels();
                                  -            }
                                  -            else
                                  -            {
                                  -                this.syncMainPanels();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    removeTab: function(context, url)
                                  -    {
                                  -        context.removePanelType(url);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getGlobalAttribute: function(id, name)
                                  -    {
                                  -        var elt = $(id);
                                  -        return elt.getAttribute(name);
                                  -    },
                                  -
                                  -    setGlobalAttribute: function(id, name, value)
                                  -    {
                                  -        var elt = $(id);
                                  -        if (elt)
                                  -        {
                                  -            if (value == null)
                                  -                elt.removeAttribute(name);
                                  -            else
                                  -                elt.setAttribute(name, value);
                                  -        }
                                  -
                                  -        if (Firebug.externalChrome)
                                  -            Firebug.externalChrome.setGlobalAttribute(id, name, value);
                                  -    },
                                  -
                                  -
                                  -    setChromeDocumentAttribute: function(id, name, value)
                                  -    {
                                  -        // Call as  Firebug.chrome.setChromeDocumentAttribute() to set attributes in another window.
                                  -        var elt = $(id);
                                  -        if (elt)
                                  -            elt.setAttribute(name, value);
                                  -    },
                                  -
                                  -    keyCodeListen: function(key, filter, listener, capture)
                                  -    {
                                  -        if (!filter)
                                  -            filter = FBL.noKeyModifiers;
                                  -
                                  -        var keyCode = KeyEvent["DOM_VK_"+key];
                                  -
                                  -        function fn(event)
                                  -        {
                                  -            if (event.keyCode == keyCode && (!filter || filter(event)))
                                  -            {
                                  -                listener();
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        }
                                  -
                                  -        window.addEventListener("keypress", fn, capture);
                                  -
                                  -        return [fn, capture];
                                  -    },
                                  -
                                  -    keyListen: function(ch, filter, listener, capture)
                                  -    {
                                  -        if (!filter)
                                  -            filter = FBL.noKeyModifiers;
                                  -
                                  -        var charCode = ch.charCodeAt(0);
                                  -
                                  -        function fn(event)
                                  -        {
                                  -            if (event.charCode == charCode && (!filter || filter(event)))
                                  -            {
                                  -                listener();
                                  -                FBL.cancelEvent(event);
                                  -            }
                                  -        }
                                  -
                                  -        window.addEventListener("keypress", fn, capture);
                                  -
                                  -        return [fn, capture];
                                  -    },
                                  -
                                  -    keyIgnore: function(listener)
                                  -    {
                                  -        window.removeEventListener("keypress", listener[0], listener[1]);
                                  -    },
                                  -
                                  -    $: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    applyTextSize: function(value)
                                  -    {
                                  -        var zoom = value >= 0 ? positiveZoomFactors[value] : negativeZoomFactors[Math.abs(value)];
                                  -
                                  -        panelBar1.browser.markupDocumentViewer.textZoom = zoom;
                                  -        panelBar2.browser.markupDocumentViewer.textZoom = zoom;
                                  -
                                  -
                                  -        var aNode = panelBar1.selectedPanel ? panelBar1.selectedPanel.panelNode : null ;
                                  -        if (aNode)
                                  -        {
                                  -            Firebug.MeasureBox.startMeasuring(aNode);
                                  -            var size = Firebug.MeasureBox.measureText();
                                  -            Firebug.MeasureBox.stopMeasuring();
                                  -            var box = $("fbCommandBox");
                                  -            box.style.height = size.height;
                                  -            box.style.fontSize = (zoom * 100)+"%";
                                  -        }
                                  -
                                  -        $("fbLargeCommandLine").style.fontSize = (zoom * 100)+"%";
                                  -
                                  -        Firebug.dispatchToPanels("onTextSizeChange", [zoom]);
                                  -    },
                                  -
                                  -    obeyOmitObjectPathStack: function(value)
                                  -    {
                                  -        FBL.hide(panelStatus, (value?true:false));
                                  -    },
                                  -
                                  -    getPanelStatusElements: function()
                                  -    {
                                  -        return panelStatus;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // UI Event Listeners uilisteners  or "panelListeners"
                                  -
                                  -    onPanelNavigate: function(object, panel)
                                  -    {
                                  -        this.syncLocationList();
                                  -    },
                                  -
                                  -    onObjectSelected: function(object, panel)
                                  -    {
                                  -        if (panel == panelBar1.selectedPanel)
                                  -        {
                                  -            this.syncStatusPath();
                                  -
                                  -            var sidePanel = panelBar2.selectedPanel;
                                  -            if (sidePanel)
                                  -                sidePanel.select(object);
                                  -        }
                                  -    },
                                  -
                                  -    onApplyDecorator: function(sourceBox) // called on setTimeout after sourceBox viewport has been repainted
                                  -    {
                                  -    },
                                  -
                                  -    onViewportChange: function(sourceLink) // called on scrollTo, passing in the selected line
                                  -    {
                                  -    },
                                  -
                                  -    showUI: function(browser, context) // called when the Firebug UI comes up in browser or detached
                                  -    {
                                  -    },
                                  -
                                  -    hideUI: function(browser, context)  // called when the Firebug UI comes down; context may be null
                                  -    {
                                  -    },
                                  -
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMenuShowing: function(popup)
                                  -    {
                                  -        var detachFirebug = FBL.getElementsByAttribute(popup, "id", "menu_detachFirebug")[0];
                                  -        if (detachFirebug)
                                  -        {
                                  -            detachFirebug.setAttribute("label", (Firebug.isDetached() ?
                                  -                FBL.$STR("firebug.AttachFirebug") : FBL.$STR("firebug.DetachFirebug")));
                                  -        }
                                  -    },
                                  -
                                  -    onOptionsShowing: function(popup)
                                  -    {
                                  -        for (var child = popup.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.localName == "menuitem")
                                  -            {
                                  -                var option = child.getAttribute("option");
                                  -                if (option)
                                  -                {
                                  -                    var checked = false;
                                  -                    if (option == "profiling")
                                  -                        checked = fbs.profiling;
                                  -                    else
                                  -                        checked = Firebug.getPref(Firebug.prefDomain, option);
                                  -
                                  -                    child.setAttribute("checked", checked);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onToggleOption: function(menuitem)
                                  -    {
                                  -        var option = menuitem.getAttribute("option");
                                  -        var checked = menuitem.getAttribute("checked") == "true";
                                  -
                                  -        Firebug.setPref(Firebug.prefDomain, option, checked);
                                  -    },
                                  -
                                  -    onContextShowing: function(event)
                                  -    {
                                  -        // xxxHonza: This context-menu support can be used even in separate window, which
                                  -        // doesn't contain the FBUI (panels).
                                  -        //if (!panelBar1.selectedPanel)
                                  -        //    return false;
                                  -
                                  -        var popup = $("fbContextMenu");
                                  -        var target = document.popupNode;
                                  -        var panel = target ? Firebug.getElementPanel(target) : null;
                                  -
                                  -        if (!panel)
                                  -            panel = panelBar1 ? panelBar1.selectedPanel : null; // the event must be on our chrome not inside the panel
                                  -
                                  -        FBL.eraseNode(popup);
                                  -
                                  -        // Make sure the Copy action is only available if there is actually someting
                                  -        // selected in the panel.
                                  -        var sel = target.ownerDocument.defaultView.getSelection();
                                  -        if (!this.contextMenuObject && !$("cmd_copy").getAttribute("disabled") && !sel.isCollapsed)
                                  -        {
                                  -            var menuitem = FBL.createMenuItem(popup, {label: "Copy"});
                                  -            menuitem.setAttribute("command", "cmd_copy");
                                  -        }
                                  -
                                  -        var object;
                                  -        if (this.contextMenuObject)
                                  -            object = this.contextMenuObject;
                                  -        else if (target && target.ownerDocument == document)
                                  -            object = Firebug.getRepObject(target);
                                  -        else if (target && panel)
                                  -            object = panel.getPopupObject(target);
                                  -        else if (target)
                                  -            object = Firebug.getRepObject(target); // xxxHonza: What about a node from different document? Is that OK?
                                  -
                                  -        this.contextMenuObject = null;
                                  -
                                  -        var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -        var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
                                  -        var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : null;
                                  -
                                  -        if (FBTrace.DBG_OPTIONS)
                                  -            FBTrace.sysout("chrome.onContextShowing object:"+object+" rep: "+rep+" realObject: "+realObject+" realRep:"+realRep+"\n");
                                  -
                                  -        if (realObject && realRep)
                                  -        {
                                  -            // 1. Add the custom menu items from the realRep
                                  -            var menu = realRep.getContextMenuItems(realObject, target, Firebug.currentContext);
                                  -            if (menu)
                                  -            {
                                  -                for (var i = 0; i < menu.length; ++i)
                                  -                    FBL.createMenuItem(popup, menu[i]);
                                  -            }
                                  -        }
                                  -
                                  -        if (object && rep && rep != realRep)
                                  -        {
                                  -            // 1. Add the custom menu items from the original rep
                                  -            var items = rep.getContextMenuItems(object, target, Firebug.currentContext);
                                  -            if (items)
                                  -            {
                                  -                for (var i = 0; i < items.length; ++i)
                                  -                    FBL.createMenuItem(popup, items[i]);
                                  -            }
                                  -        }
                                  -
                                  -        // 1. Add the custom menu items from the panel
                                  -        if (panel)
                                  -        {
                                  -            var items = panel.getContextMenuItems(realObject, target);
                                  -            if (items)
                                  -            {
                                  -                for (var i = 0; i < items.length; ++i)
                                  -                    FBL.createMenuItem(popup, items[i]);
                                  -            }
                                  -        }
                                  -
                                  -        // 2. Add the inspect menu items
                                  -        if (realObject && rep && rep.inspectable)
                                  -        {
                                  -            var separator = null;
                                  -
                                  -            var items = this.getInspectMenuItems(realObject);
                                  -            for (var i = 0; i < items.length; ++i)
                                  -            {
                                  -                if (popup.firstChild && !separator)
                                  -                    separator = FBL.createMenuSeparator(popup);
                                  -
                                  -                FBL.createMenuItem(popup, items[i]);
                                  -            }
                                  -        }
                                  -
                                  -        if (!popup.firstChild)
                                  -            return false;
                                  -    },
                                  -
                                  -    onEditorsShowing: function(popup)  // TODO move to Firebug.Editors module in editors.js
                                  -    {
                                  -        var editors = Firebug.registeredEditors;
                                  -        if ( editors.length > 0 )
                                  -        {
                                  -            var lastChild = popup.lastChild;
                                  -            FBL.eraseNode(popup);
                                  -            var disabled = (!Firebug.currentContext);
                                  -            for( var i = 0; i < editors.length; ++i )
                                  -            {
                                  -                if (editors[i] == "-")
                                  -                {
                                  -                    FBL.createMenuItem(popup, "-");
                                  -                    continue;
                                  -                }
                                  -                var item = {label: editors[i].label, image: editors[i].image,
                                  -                                nol10n: true, disabled: disabled };
                                  -                var menuitem = FBL.createMenuItem(popup, item);
                                  -                menuitem.setAttribute("command", "cmd_openInEditor");
                                  -                menuitem.value = editors[i].id;
                                  -            }
                                  -            FBL.createMenuItem(popup, "-");
                                  -            popup.appendChild(lastChild);
                                  -        }
                                  -    },
                                  -
                                  -    getInspectMenuItems: function(object)
                                  -    {
                                  -        var items = [];
                                  -
                                  -        // Domplate (+ support for context menus) can be used even in separate
                                  -        // windows when Firebug.currentContext doesn't have to be defined.
                                  -        if (!Firebug.currentContext)
                                  -            return items;
                                  -
                                  -        for (var i = 0; i < Firebug.panelTypes.length; ++i)
                                  -        {
                                  -            var panelType = Firebug.panelTypes[i];
                                  -            if (!panelType.prototype.parentPanel
                                  -                && panelType.prototype.name != Firebug.currentContext.panelName
                                  -                && panelSupportsObject(panelType, object, Firebug.currentContext))
                                  -            {
                                  -                var panelName = panelType.prototype.name;
                                  -
                                  -                var title = Firebug.getPanelTitle(panelType);
                                  -                var label = FBL.$STRF("InspectInTab", [title]);
                                  -
                                  -                var command = bindFixed(this.select, this, object, panelName);
                                  -                items.push({label: label, command: command, nol10n: true});
                                  -            }
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    onTooltipShowing: function(event)
                                  -    {
                                  -        // xxxHonza: This tooltip support can be used even in separate window, which
                                  -        // doesn't contain the FBUI (panels).
                                  -        //if (!panelBar1.selectedPanel)
                                  -        //    return false;
                                  -
                                  -        var tooltip = $("fbTooltip");
                                  -        var target = document.tooltipNode;
                                  -
                                  -        var panel = target ? Firebug.getElementPanel(target) : null;
                                  -
                                  -        var object;
                                  -        /* XXXjjb This causes the Script panel to show the function body over and over. We need to clear it at least,
                                  -         * but really we need to understand why the tooltip should show the context menu object at all.
                                  -         * One thing the contextMenuObject supports is peeking at function bodies when stopped a breakpoint.
                                  -         * That case could be supported with clearing the contextMenuObject, but we don't know if that breaks
                                  -         * something else. So maybe a popupMenuObject should be set on the context if that is what we want to support
                                  -         * The other complication is that there seems to be another tooltip.
                                  -        if (this.contextMenuObject)
                                  -        {
                                  -            object = this.contextMenuObject;
                                  -            FBTrace.sysout("tooltip by contextMenuObject");
                                  -        }
                                  -        else*/
                                  -        if (target && target.ownerDocument == document)
                                  -            object = Firebug.getRepObject(target);
                                  -        else if (panel)
                                  -            object = panel.getTooltipObject(target);
                                  -
                                  -        var rep = object ? Firebug.getRep(object, Firebug.currentContext) : null;
                                  -        object = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
                                  -        rep = object ? Firebug.getRep(object) : null;
                                  -
                                  -        if (object && rep)
                                  -        {
                                  -            var label = rep.getTooltip(object, Firebug.currentContext);
                                  -            if (label)
                                  -            {
                                  -                tooltip.setAttribute("label", label);
                                  -                return true;
                                  -            }
                                  -        }
                                  -
                                  -        if (FBL.hasClass(target, 'noteInToolTip'))
                                  -            FBL.setClass(tooltip, 'noteInToolTip');
                                  -        else
                                  -            FBL.removeClass(tooltip, 'noteInToolTip');
                                  -
                                  -        if (target && target.hasAttribute("title"))
                                  -        {
                                  -            tooltip.setAttribute("label", target.getAttribute("title"));
                                  -            return true;
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    openAboutDialog: function()
                                  -    {
                                  -        if (FBTrace.DBG_WINDOWS)
                                  -            FBTrace.sysout("Firebug.openAboutDialog");
                                  -
                                  -        try
                                  -        {
                                  -            // Firefox 4.0 implements new AddonManager. In case of Firefox 3.6 the module
                                  -            // is not avaialble and there is an exception.
                                  -            Components.utils.import("resource://gre/modules/AddonManager.jsm");
                                  -        }
                                  -        catch (err)
                                  -        {
                                  -        }
                                  -
                                  -        if (typeof(AddonManager) != "undefined")
                                  -        {
                                  -            AddonManager.getAddonByID("firebug@software.joehewitt.com", function(addon) {
                                  -                openDialog("chrome://mozapps/content/extensions/about.xul", "",
                                  -                "chrome,centerscreen,modal", addon);
                                  -            });
                                  -        }
                                  -        else
                                  -        {
                                  -            var extensionManager = FBL.CCSV("@mozilla.org/extensions/manager;1",
                                  -                "nsIExtensionManager");
                                  -
                                  -            openDialog("chrome://mozapps/content/extensions/about.xul", "",
                                  -                "chrome,centerscreen,modal", "urn:mozilla:item:firebug@software.joehewitt.com",
                                  -                extensionManager.datasource);
                                  -        }
                                  -    },
                                  -
                                  -    breakOnNext: function(context, event)
                                  -    {
                                  -        // Avoid bubbling from associated options.
                                  -        if (event.target.id != "cmd_breakOnNext")
                                  -            return;
                                  -
                                  -        if (!context)
                                  -        {
                                  -            if (FBTrace.DBG_BP)
                                  -                FBTrace.sysout("Firebug chrome: breakOnNext with no context??");
                                  -            return;
                                  -        }
                                  -
                                  -        var panel = panelBar1.selectedPanel;
                                  -
                                  -        if (FBTrace.DBG_BP)
                                  -            FBTrace.sysout("Firebug chrome: breakOnNext for panel " +
                                  -                (panel ? panel.name : "NO panel"), panel);
                                  -
                                  -        if (panel && panel.breakable)
                                  -            Firebug.Breakpoint.toggleBreakOnNext(panel);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Welcome Page (first run)
                                  -
                                  -var FirstRunPage =
                                  -{
                                  -    initializeUI: function()
                                  -    {
                                  -        // If the version in preferences is smaller than the current version
                                  -        // display the welcome page.
                                  -        if (FBL.checkFirebugVersion(Firebug.currentVersion) > 0)
                                  -        {
                                  -            FBTrace.sysout("FirstRunPage.initializeUI; current: " + Firebug.getVersion() +
                                  -                "preferences: " + Firebug.currentVersion);
                                  -
                                  -            // Wait for session restore and display the welcome page.
                                  -            observerService.addObserver(this, "sessionstore-windows-restored" , false);
                                  -        }
                                  -    },
                                  -
                                  -    observe: function(subjet, topic, data)
                                  -    {
                                  -        if (topic != "sessionstore-windows-restored")
                                  -            return;
                                  -
                                  -        setTimeout(function()
                                  -        {
                                  -            // Open the page in the top most window so, the user can see it immediately.
                                  -            if (wm.getMostRecentWindow("navigator:browser") != window)
                                  -                return;
                                  -
                                  -            // Avoid opening of the page in a second browser window.
                                  -            if (FBL.checkFirebugVersion(Firebug.currentVersion) > 0)
                                  -            {
                                  -                // Don't forget to update the preference so, the page is not displayed again
                                  -                var version = Firebug.getVersion();
                                  -                Firebug.setPref(Firebug.prefDomain, "currentVersion", version);
                                  -                version = version.replace('X', '', "g");
                                  -
                                  -                // xxxHonza: put the URL in firebugURLs as soon as it's in chrome.js
                                  -                FBL.openNewTab("http://getfirebug.com/firstrun#Firebug " + version);
                                  -            }
                                  -        }, 500);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function panelSupportsObject(panelType, object, context)
                                  -{
                                  -    if (panelType)
                                  -    {
                                  -        try {
                                  -            // This tends to throw exceptions often because some objects are weird
                                  -            return panelType.prototype.supportsObject(object, typeof object, context);
                                  -        } catch (exc) {}
                                  -    }
                                  -
                                  -    return 0;
                                  -}
                                  -
                                  -function getBestPanelName(object, context, panelName)
                                  -{
                                  -    if (!panelName)
                                  -        panelName = context.panelName;
                                  -
                                  -    // Check if the suggested panel name supports the object, and if so, go with it
                                  -    if (panelName)
                                  -    {
                                  -        panelType = Firebug.getPanelType(panelName);
                                  -        if (panelSupportsObject(panelType, object, context))
                                  -            return panelType.prototype.name;
                                  -    }
                                  -
                                  -    // The suggested name didn't pan out, so search for the panel type with the
                                  -    // most specific level of support
                                  -    return getBestPanelSupportingObject(object, context);
                                  -}
                                  -
                                  -function getBestPanelSupportingObject(object, context)
                                  -{
                                  -    var bestLevel = 0;
                                  -    var bestPanel = null;
                                  -
                                  -    for (var i = 0; i < Firebug.panelTypes.length; ++i)
                                  -    {
                                  -        var panelType = Firebug.panelTypes[i];
                                  -        if (!panelType.prototype.parentPanel)
                                  -        {
                                  -            var level = panelSupportsObject(panelType, object, context);
                                  -            if (!bestLevel || (level && (level > bestLevel) ))
                                  -            {
                                  -                bestLevel = level;
                                  -                bestPanel = panelType;
                                  -            }
                                  -            if (FBTrace.DBG_PANELS)
                                  -                FBTrace.sysout("chrome.getBestPanelName panelType: "+panelType.prototype.name+" level: "+level+" bestPanel: "+ (bestPanel ? bestPanel.prototype.name : "null")+" bestLevel: "+bestLevel+"\n");
                                  -        }
                                  -    }
                                  -
                                  -    return bestPanel ? bestPanel.prototype.name : null;
                                  -}
                                  -
                                  -function getBestSidePanelName(sidePanelName, panelTypes)
                                  -{
                                  -    if (sidePanelName)
                                  -    {
                                  -        // Verify that the suggested panel name is in the acceptable list
                                  -        for (var i = 0; i < panelTypes.length; ++i)
                                  -        {
                                  -            if (panelTypes[i].prototype.name == sidePanelName)
                                  -                return sidePanelName;
                                  -        }
                                  -    }
                                  -
                                  -    // Default to the first panel type in the list
                                  -    return panelTypes.length ? panelTypes[0].prototype.name : null;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Event listeners
                                  -
                                  -function browser1Loaded()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE)
                                  -        FBTrace.sysout("browse1Loaded\n");
                                  -    var browser1 = panelBar1.browser;
                                  -    browser1.removeEventListener("load", browser1Loaded, true);
                                  -
                                  -    browser1.contentDocument.title = "Firebug Main Panel";
                                  -    browser1Loaded.complete = true;
                                  -
                                  -    if (browser1Loaded.complete && browser2Loaded.complete)
                                  -        FirebugChrome.initializeUI();
                                  -}
                                  -
                                  -function browser2Loaded()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE)
                                  -        FBTrace.sysout("browse2Loaded\n");
                                  -    var browser2 = panelBar2.browser;
                                  -    browser2.removeEventListener("load", browser2Loaded, true);
                                  -
                                  -    browser2.contentDocument.title = "Firebug Side Panel";
                                  -    browser2Loaded.complete = true;
                                  -
                                  -    if (browser1Loaded.complete && browser2Loaded.complete)
                                  -        FirebugChrome.initializeUI();  // the chrome bound into this scope
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE)
                                  -        FBTrace.sysout("browse2Loaded complete\n");
                                  -}
                                  -
                                  -function onBlur(event)
                                  -{
                                  -    // XXXjjb this seems like a waste: called continuously to clear possible highlight I guess.
                                  -    // XXXhh Is this really necessary? I disabled it for now as this was preventing me to show highlights on focus
                                  -    //Firebug.Inspector.highlightObject(null, Firebug.currentContext);
                                  -}
                                  -
                                  -function onSelectLocation(event)
                                  -{
                                  -    var location = locationList.repObject;
                                  -    FirebugChrome.navigate(location);
                                  -}
                                  -
                                  -function onSelectingPanel(event)
                                  -{
                                  -    var panel = panelBar1.selectedPanel;
                                  -    var panelName = panel ? panel.name : null;
                                  -
                                  -    if (FBTrace.DBG_PANELS)
                                  -        FBTrace.sysout("chrome.onSelectingPanel="+panelName+" Firebug.currentContext=" +
                                  -            (Firebug.currentContext?Firebug.currentContext.getName():"undefined"));
                                  -
                                  -    if (Firebug.currentContext)
                                  -    {
                                  -        Firebug.currentContext.previousPanelName = Firebug.currentContext.panelName;
                                  -        Firebug.currentContext.panelName = panelName;
                                  -
                                  -        Firebug.currentContext.sidePanelName =
                                  -            Firebug.currentContext.sidePanelNames && panelName in Firebug.currentContext.sidePanelNames
                                  -            ? Firebug.currentContext.sidePanelNames[panelName]
                                  -            : null;
                                  -    }
                                  -
                                  -    if (panel)
                                  -        panel.navigate(panel.location);
                                  -
                                  -    // Hide all toolbars now. It's a responsibility of the new selected panel to show
                                  -    // those toolbars that are necessary. This avoids the situation when naughty panel
                                  -    // doesn't clean up its toolbars. This must be done before showPanel where visibility
                                  -    // of the BON buttons is managed.
                                  -    var toolbar = $("fbToolbarInner");
                                  -    var child = toolbar.firstChild;
                                  -    while (child)
                                  -    {
                                  -        FBL.collapse(child, true);
                                  -        child = child.nextSibling;
                                  -    }
                                  -
                                  -    // Calling Firebug.showPanel causes dispatching "showPanel" to all modules.
                                  -    var browser = panel ? panel.context.browser : FirebugChrome.getCurrentBrowser();
                                  -    Firebug.showPanel(browser, panel);
                                  -
                                  -    // Synchronize UI around panels. Execute the sync after showPanel so the logic
                                  -    // can decide whether to display separators or not.
                                  -    // xxxHonza: The command line should be synced here as well.
                                  -    Firebug.chrome.syncLocationList();
                                  -    Firebug.chrome.syncStatusPath();
                                  -
                                  -    //xxxjjb unfortunately the callstack side panel depends on the status path (sync after.)
                                  -    Firebug.chrome.syncSidePanels();
                                  -}
                                  -
                                  -function onSelectedSidePanel(event)
                                  -{
                                  -    var sidePanel = panelBar2.selectedPanel;
                                  -    if (Firebug.currentContext)
                                  -    {
                                  -        var panelName = Firebug.currentContext.panelName;
                                  -        if (panelName)
                                  -        {
                                  -            var sidePanelName = sidePanel ? sidePanel.name : null;
                                  -            Firebug.currentContext.sidePanelNames[panelName] = sidePanelName;
                                  -        }
                                  -    }
                                  -
                                  -    if (FBTrace.DBG_PANELS)
                                  -        FBTrace.sysout("chrome.onSelectedSidePanel name="+(sidePanel?sidePanel.name:"undefined")+"\n");
                                  -
                                  -    var panel = panelBar1.selectedPanel;
                                  -    if (panel && sidePanel)
                                  -        sidePanel.select(panel.selection);
                                  -
                                  -    var browser = sidePanel ? sidePanel.context.browser : FirebugChrome.getCurrentBrowser();
                                  -    Firebug.showSidePanel(browser, sidePanel);  // dispatch to modules
                                  -}
                                  -
                                  -function onPanelMouseOver(event)
                                  -{
                                  -    var object = Firebug.getRepObject(event.target);
                                  -    if(!object)
                                  -        return;
                                  -
                                  -    var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -    if(rep)
                                  -        rep.highlightObject(object, Firebug.currentContext);
                                  -}
                                  -
                                  -function onPanelMouseOut(event)
                                  -{
                                  -    var object = Firebug.getRepObject(event.target);
                                  -    if(!object)
                                  -        return;
                                  -
                                  -    var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -    if(rep)
                                  -        rep.unhighlightObject(object, Firebug.currentContext);
                                  -}
                                  -
                                  -function onPanelClick(event)
                                  -{
                                  -    var repNode = Firebug.getRepNode(event.target);
                                  -    if (repNode)
                                  -    {
                                  -        var object = repNode.repObject;
                                  -        var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -        var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
                                  -        var realRep = realObject ? Firebug.getRep(realObject, Firebug.currentContext) : rep;
                                  -        if (!realObject)
                                  -            realObject = object;
                                  -
                                  -        if (FBL.isLeftClick(event))
                                  -        {
                                  -            if (FBL.hasClass(repNode, "objectLink"))
                                  -            {
                                  -                if (realRep)
                                  -                {
                                  -                    realRep.inspectObject(realObject, Firebug.currentContext);
                                  -                    FBL.cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (FBL.isControlClick(event) || FBL.isMiddleClick(event))
                                  -        {
                                  -            if (!realRep || !realRep.browseObject(realObject, Firebug.currentContext))
                                  -            {
                                  -                if (rep && !(rep != realRep && rep.browseObject(object, Firebug.currentContext)))
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    if (!panel || !panel.browseObject(realObject))
                                  -                        return;
                                  -                }
                                  -            }
                                  -            FBL.cancelEvent(event);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function onPanelMouseDown(event)
                                  -{
                                  -    if (FBL.isLeftClick(event))
                                  -    {
                                  -        var editable = FBL.getAncestorByClass(event.target, "editable");
                                  -        if (editable)
                                  -        {
                                  -            Firebug.Editor.startEditing(editable);
                                  -            FBL.cancelEvent(event);
                                  -        }
                                  -    }
                                  -    else if (FBL.isMiddleClick(event) && Firebug.getRepNode(event.target))
                                  -    {
                                  -        // Prevent auto-scroll when middle-clicking a rep object
                                  -        FBL.cancelEvent(event);
                                  -    }
                                  -}
                                  -
                                  -function onMainTabBoxMouseDown(event)
                                  -{
                                  -    if (Firebug.isInBrowser())
                                  -    {
                                  -        var contentSplitter = Firebug.chrome.$("fbContentSplitter");
                                  -        // TODO: grab the splitter here.
                                  -    }
                                  -}
                                  -
                                  -function getRealObject(object)
                                  -{
                                  -    var rep = Firebug.getRep(object, Firebug.currentContext);
                                  -    var realObject = rep ? rep.getRealObject(object, Firebug.currentContext) : null;
                                  -    return realObject ? realObject : object;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Utils (duplicated from lib.js)
                                  -
                                  -function $(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -        return document.getElementById(id);
                                  -}
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   for (var i = 0; i < array.length; ++i)
                                  -       newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function bindFixed()
                                  -{
                                  -    var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -    return function() { return fn.apply(object, args); };
                                  -}
                                  -
                                  -})();
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// XXXjoe This horrible hack works around a focus bug in Firefox which is caused when
                                  -// the HTML Validator extension and Firebug are installed.  It causes the keyboard to
                                  -// behave erratically when typing, and the only solution I've found is to delay
                                  -// the initialization of HTML Validator by overriding this function with a timeout.
                                  -// XXXrobc Do we still need this? Does this extension even exist anymore?
                                  -if (top.hasOwnProperty('TidyBrowser'))
                                  -{
                                  -    var prev = TidyBrowser.prototype.updateStatusBar;
                                  -    TidyBrowser.prototype.updateStatusBar = function()
                                  -    {
                                  -        var self = this, args = arguments;
                                  -        setTimeout(function()
                                  -        {
                                  -            prev.apply(self, args);
                                  -        });
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function dddx()
                                  -{
                                  -    Firebug.Console.logFormatted(arguments);
                                  -}
                                  -
                                  diff --git a/branches/flexBox/content/lite/temp/html2.js b/branches/flexBox/content/lite/temp/html2.js
                                  deleted file mode 100644
                                  index e3fd4884..00000000
                                  --- a/branches/flexBox/content/lite/temp/html2.js
                                  +++ /dev/null
                                  @@ -1,1906 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -
                                  -const MODIFICATION = MutationEvent.MODIFICATION;
                                  -const ADDITION = MutationEvent.ADDITION;
                                  -const REMOVAL = MutationEvent.REMOVAL;
                                  -/**/
                                  -
                                  -var AttrTag =
                                  -    SPAN({"class": "nodeAttr editGroup"},
                                  -        "&nbsp;", SPAN({"class": "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -        SPAN({"class": "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -    );
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLModule = extend(Firebug.Module,
                                  -{
                                  -    deleteNode: function(node, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.parentNode.removeChild(node);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    },
                                  -    deleteAttribute: function(node, attr, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.removeAttribute(attr);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel = function() {};
                                  -
                                  -Firebug.HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -            this.editNode(this.selection);
                                  -    },
                                  -
                                  -    resetSearch: function()
                                  -    {
                                  -        delete this.lastSearch;
                                  -    },
                                  -
                                  -    selectNext: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var next = this.ioBox.getNextObjectBox(objectBox);
                                  -        if (next)
                                  -        {
                                  -            this.select(next.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(next.repObject);
                                  -
                                  -        }
                                  -    },
                                  -
                                  -    selectPrevious: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var previous = this.ioBox.getPreviousObjectBox(objectBox);
                                  -        if (previous)
                                  -        {
                                  -            this.select(previous.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(previous.repObject);
                                  -        }
                                  -    },
                                  -
                                  -    selectNodeBy: function(dir)
                                  -    {
                                  -        if (dir == "up")
                                  -            this.selectPrevious();
                                  -        else if (dir == "down")
                                  -            this.selectNext();
                                  -        else if (dir == "left")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.select(this.ioBox.getParentObjectBox(box).repObject);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -        else if (dir == "right")
                                  -            this.ioBox.expandObject(this.selection);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editNewAttribute: function(elt)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var labelBox = objectNodeBox.firstChild.lastChild;
                                  -            var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -            Firebug.Editor.insertRow(bracketBox, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editAttribute: function(elt, attrName)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var attrBox = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (attrBox)
                                  -            {
                                  -                var attrValueBox = attrBox.childNodes[3];
                                  -                var value = elt.getAttribute(attrName);
                                  -                Firebug.Editor.startEditing(attrValueBox, value);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    deleteAttribute: function(elt, attrName)
                                  -    {
                                  -        Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
                                  -    },
                                  -
                                  -    editNode: function(node)
                                  -    {
                                  -        if ( nonEditableTags.hasOwnProperty(node.localName) )
                                  -            return;
                                  -
                                  -        var objectNodeBox = this.ioBox.findObjectBox(node);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            if (!this.htmlEditor)
                                  -                this.htmlEditor = new HTMLEditor(this.document);
                                  -
                                  -            this.htmlEditor.innerEditMode = node.localName in innerEditableTags;
                                  -
                                  -            var html = this.htmlEditor.innerEditMode ? node.innerHTML : getElementHTML(node);
                                  -            Firebug.Editor.startEditing(objectNodeBox, html, this.htmlEditor);
                                  -        }
                                  -    },
                                  -
                                  -    deleteNode: function(node)
                                  -    {
                                  -        Firebug.HTMLModule.deleteNode(node, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getElementSourceText: function(node)
                                  -    {
                                  -        if (this.sourceElements)
                                  -        {
                                  -            var index = this.sourceElementNodes.indexOf(node);
                                  -            if (index != -1)
                                  -                return this.sourceElements[index];
                                  -        }
                                  -
                                  -        var lines;
                                  -
                                  -        var url = getSourceHref(node);
                                  -        if (url)
                                  -            lines = this.context.sourceCache.load(url);
                                  -        else
                                  -        {
                                  -            var text = getSourceText(node);
                                  -            lines = splitLines(text);
                                  -        }
                                  -
                                  -        var sourceElt = new SourceText(lines, node);
                                  -
                                  -        if (!this.sourceElements)
                                  -        {
                                  -            this.sourceElements =  [sourceElt];
                                  -            this.sourceElementNodes = [node];
                                  -        }
                                  -        else
                                  -        {
                                  -            this.sourceElements.push(sourceElt);
                                  -            this.sourceElementNodes.push(node);
                                  -        }
                                  -
                                  -        return sourceElt;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    mutateAttr: function(target, attrChange, attrName, attrValue)
                                  -    {
                                  -        // Every time the user scrolls we get this pointless mutation event, which
                                  -        // is only bad for performance
                                  -        if (attrName == "curpos")
                                  -            return;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName, target);
                                  -
                                  -        this.markChange();
                                  -
                                  -        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(target)
                                  -            : this.ioBox.findObjectBox(target);
                                  -
                                  -        if (!objectNodeBox)
                                  -            return;
                                  -
                                  -        if (isVisible(objectNodeBox.repObject))
                                  -            removeClass(objectNodeBox, "nodeHidden");
                                  -        else
                                  -            setClass(objectNodeBox, "nodeHidden");
                                  -
                                  -        if (attrChange == MODIFICATION || attrChange == ADDITION)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
                                  -            if (nodeAttr && nodeAttr.childNodes.length > 3)
                                  -            {
                                  -                var attrValueBox = nodeAttr.childNodes[3];
                                  -                var attrValueText = nodeAttr.childNodes[3].firstChild;
                                  -                if (attrValueText)
                                  -                    attrValueText.nodeValue = attrValue;
                                  -
                                  -                this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
                                  -            }
                                  -            else
                                  -            {
                                  -                var attr = target.getAttributeNode(attrName);
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
                                  -                if (attr)
                                  -                {
                                  -                    var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
                                  -                            this.document);
                                  -
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -                    labelBox.insertBefore(nodeAttr, bracketBox);
                                  -
                                  -                    this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (attrChange == REMOVAL)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (nodeAttr)
                                  -            {
                                  -                nodeAttr.parentNode.removeChild(nodeAttr);
                                  -
                                  -                this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateText: function(target, parent, textValue)
                                  -    {
                                  -        this.markChange();
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showFullTextNodes)
                                  -            textValue = cropMultipleLines(textValue, 50);
                                  -
                                  -        var parentTag = getNodeBoxTag(parentNodeBox);
                                  -        if (parentTag == Firebug.HTMLPanel.TextElement.tag)
                                  -        {
                                  -            var nodeText = getTextElementTextBox(parentNodeBox);
                                  -            if (!nodeText.firstChild)
                                  -                return;
                                  -
                                  -            nodeText.firstChild.nodeValue = textValue;
                                  -
                                  -            this.highlightMutation(nodeText, parentNodeBox, "mutated");
                                  -        }
                                  -        else
                                  -        {
                                  -            var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
                                  -            if (!childBox)
                                  -                return;
                                  -
                                  -            var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
                                  -            if (textNodeBox)
                                  -            {
                                  -                textNodeBox.firstChild.lastChild.nodeValue = textValue;
                                  -
                                  -                this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateNode: function(target, parent, nextSibling, removal)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\nhtml.mutateNode target:"+target+" parent:"+parent+(removal?"REMOVE":"")+"\n");
                                  -
                                  -        this.markChange();  // This invalidates the panels for every mutate
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateNode parent:"+parent+" parentNodeBox:"+parentNodeBox+"\n");
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showWhitespaceNodes && this.isWhitespaceText(target))
                                  -            return;
                                  -
                                  -        // target is only whitespace
                                  -
                                  -        var newParentTag = getNodeTag(parent);
                                  -        var oldParentTag = getNodeBoxTag(parentNodeBox);
                                  -
                                  -        if (newParentTag == oldParentTag)
                                  -        {
                                  -            if (parentNodeBox.populated)
                                  -            {
                                  -                if (removal)
                                  -                {
                                  -                    this.ioBox.removeChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
                                  -                }
                                  -                else
                                  -                {
                                  -                    var objectBox = nextSibling
                                  -                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
                                  -                        : this.ioBox.appendChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -                this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -                if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -                {
                                  -                    var objectBox = this.ioBox.createObjectBox(target);
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -            if (parentNodeBox.parentNode)
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -            if (hasClass(parentNodeBox, "open"))
                                  -                this.ioBox.toggleObjectBox(newParentNodeBox, true);
                                  -
                                  -            if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                this.ioBox.select(parent, true);
                                  -
                                  -            this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -        }
                                  -    },
                                  -
                                  -    highlightMutation: function(elt, objectBox, type)
                                  -    {
                                  -        if (!elt)
                                  -            return;
                                  -
                                  -        if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -        {
                                  -            if (this.context.mutationTimeout)
                                  -            {
                                  -                this.context.clearTimeout(this.context.mutationTimeout);
                                  -                delete this.context.mutationTimeout;
                                  -            }
                                  -
                                  -            var ioBox = this.ioBox;
                                  -            var panelNode = this.panelNode;
                                  -
                                  -            this.context.mutationTimeout = this.context.setTimeout(function()
                                  -            {
                                  -                ioBox.openObjectBox(objectBox);
                                  -
                                  -                if (Firebug.scrollToMutations)
                                  -                    scrollIntoCenterView(objectBox, panelNode);
                                  -            }, 200);
                                  -        }
                                  -
                                  -        if (Firebug.highlightMutations)
                                  -            setClassTimed(elt, type, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // SourceBox proxy
                                  -
                                  -    createObjectBox: function(object, isRoot)
                                  -    {
                                  -        if (FBTrace.DBG_HTML) FBTrace.sysout("html.createObjectBox("+(object.tagName?object.tagName:object)+", isRoot:"+(isRoot?"true":"false")+")\n");
                                  -        var tag = getNodeTag(object);
                                  -        if (tag)
                                  -            return tag.replace({object: object}, this.document);
                                  -    },
                                  -
                                  -    getParentObject: function(node)
                                  -    {
                                  -        if (node instanceof SourceText)
                                  -            return node.owner;
                                  -
                                  -        if (this.rootElement && node == this.rootElement)  // this.rootElement is never set
                                  -            return null;
                                  -
                                  -        var parentNode = node ? node.parentNode : null;
                                  -        if (parentNode)
                                  -            if (parentNode.nodeType == 9)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.getParentObject parentNode.nodeType 9\n");
                                  -                if (parentNode.defaultView)
                                  -                    return parentNode.defaultView.frameElement;
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_HTML || FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("html.getParentObject parentNode.nodeType 9 but no defaultView?", parentNode);
                                  -                }
                                  -            }
                                  -            else
                                  -                return parentNode;
                                  -        else
                                  -            if (node && node.nodeType == 9) // document type
                                  -            {
                                  -                var embeddingFrame = node.defaultView.frameElement;
                                  -                if (embeddingFrame)
                                  -                    return embeddingFrame.parentNode;
                                  -                else
                                  -                    return null;  // top level has no parent
                                  -            }
                                  -
                                  -    },
                                  -
                                  -    getChildObject: function(node, index, previousSibling)
                                  -    {
                                  -        if (isSourceElement(node))
                                  -        {
                                  -            if (index == 0)
                                  -                return this.getElementSourceText(node);
                                  -        }
                                  -        else if (previousSibling)
                                  -        {
                                  -            return this.findNextSibling(previousSibling);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (index == 0 && node.contentDocument)
                                  -                return node.contentDocument.documentElement;
                                  -            else if (Firebug.showWhitespaceNodes)
                                  -                return node.childNodes[index];
                                  -            else
                                  -            {
                                  -                var childIndex = 0;
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                {
                                  -                    if (!this.isWhitespaceText(child) && childIndex++ == index)
                                  -                        return child;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return false;
                                  -        return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -    },
                                  -
                                  -    findNextSibling: function (node)
                                  -    {
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return node.nextSibling;
                                  -        else
                                  -        {
                                  -            for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -            {
                                  -                if (!this.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        return tag == "script" || tag == "link" || tag == "style"
                                  -            || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Events
                                  -
                                  -    onMutateAttr: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var attrChange = event.attrChange;
                                  -        var attrName = event.attrName;
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateAttr(target, attrChange, attrName, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateText: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var parent = target.parentNode;
                                  -
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateText(target, parent, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateNode: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var parent = event.relatedNode;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -        var nextSibling = removal ? null : this.findNextSibling(target);
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            try
                                  -            {
                                  -                 this.mutateNode(target, parent, nextSibling, removal);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.onMutateNode FAILS:", exc);
                                  -            }
                                  -        }, this);
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (isLeftClick(event) && event.detail == 2)
                                  -        {
                                  -            if (getAncestorByClass(event.target, "nodeTag"))
                                  -            {
                                  -                var node = Firebug.getRepObject(event.target);
                                  -                this.editNode(node);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        if (getAncestorByClass(event.target, "nodeTag"))
                                  -        {
                                  -            var node = Firebug.getRepObject(event.target);
                                  -            this.noScrollIntoView = true;
                                  -            this.select(node);
                                  -            delete this.noScrollIntoView;
                                  -            var box = this.ioBox.createObjectBox(node);
                                  -            if (!hasClass(box, "open"))
                                  -                this.ioBox.expandObject(node);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -    },
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        if (this.editing || isControl(event) || isShift(event))
                                  -            return;
                                  -
                                  -        if (event.keyCode == KeyEvent.DOM_VK_UP)
                                  -            this.selectNodeBy("up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
                                  -            this.selectNodeBy("down");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
                                  -            this.selectNodeBy("left");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
                                  -            this.selectNodeBy("right");
                                  -        else
                                  -            return;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -    
                                  -    name: "HTML2",
                                  -    title: "HTML2",
                                  -    
                                  -    options: {},
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.panelNode.style;
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -        style.padding = "0 1px";
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);        
                                  -        
                                  -        //var object = Firebug.browser.document.documentElement;
                                  -        //Firebug.HTMLPanel.Element.tag.replace({object: object}, this.panelNode);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.document = Firebug.chrome.document; 
                                  -        
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -        
                                  -        var object = Firebug.browser.document.documentElement;
                                  -        this.select(object);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -    },    
                                  -
                                  -    /*
                                  -    name: "html",
                                  -    searchable: true,
                                  -    dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
                                  -    inspectorHistory: new Array(5),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMutateText = bind(this.onMutateText, this);
                                  -        this.onMutateAttr = bind(this.onMutateAttr, this);
                                  -        this.onMutateNode = bind(this.onMutateNode, this);
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        persistObjects(this, state);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this]);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.ioBox)
                                  -        {
                                  -            this.ioBox.destroy();
                                  -            delete this.ioBox;
                                  -        }
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this]);
                                  -    },
                                  -    /**/
                                  -    /*
                                  -    show: function(state)
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", true);
                                  -
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -
                                  -        this.panelNode.ownerDocument.addEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.context.loaded)
                                  -        {
                                  -            if (!this.context.attachedMutation)
                                  -            {
                                  -                this.context.attachedMutation = true;
                                  -
                                  -                iterateWindows(this.context.window, bind(function(win)
                                  -                {
                                  -                    var doc = win.document;
                                  -                    doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -                    doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -                    doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -                    doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -                }, this));
                                  -            }
                                  -
                                  -            restoreObjects(this, state);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", false);
                                  -        delete this.infoTipURL;  // clear the state that is tracking the infotip so it is reset after next show()
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.watchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, false);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        if (this.context.attachedMutation)
                                  -        {
                                  -            var doc = win.document;
                                  -            doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -            doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -            doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -            doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.unwatchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, true);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        var doc = win.document;
                                  -        doc.removeEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -        doc.removeEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -        doc.removeEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -        doc.removeEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -    },
                                  -    /**/
                                  -
                                  -    mutateDocumentEmbedded: function(win, remove)
                                  -    {
                                  -        // document.documentElement    Returns the Element that is a direct child of document. For HTML documents, this normally the HTML element.
                                  -        var target = win.document.documentElement;
                                  -        var parent = win.frameElement;
                                  -        var nextSibling = this.findNextSibling(target);
                                  -        this.mutateNode(target, parent, nextSibling, remove);
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof Element || object instanceof Text || object instanceof CDATASection)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && !reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        var viewOptionNames = {showCommentNodes:1, showWhitespaceNodes:1 , showFullTextNodes:1};
                                  -        if (name in viewOptionNames)
                                  -        {
                                  -            this.resetSearch();
                                  -            clearNode(this.panelNode);
                                  -            if (this.ioBox)
                                  -                this.ioBox.destroy();
                                  -
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -            this.ioBox.select(this.selection, true, true);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.updateSelection "+object);
                                  -        if (this.ioBox.sourceRow)
                                  -            this.ioBox.sourceRow.removeAttribute("exeLine");
                                  -
                                  -        if (object instanceof SourceLink) // && object.type == "css" and !reCSS(object.href) by supports
                                  -         {
                                  -             var sourceLink = object;
                                  -             var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -             if (stylesheet)
                                  -             {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection stylesheet.ownerNode="+stylesheet.ownerNode
                                  -                                          +" href:"+sourceLink.href+"\n");
                                  -                if (ownerNode)
                                  -                {
                                  -                    var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
                                  -
                                  -                    // XXXjjb seems like this could be bad for errors at the end of long files
                                  -                    //
                                  -                    var sourceRow = FBL.getElementByClass(objectbox, "sourceRow"); // first source row in style
                                  -                    for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
                                  -                    {
                                  -                        if (!sourceRow) break;
                                  -                        sourceRow = FBL.getNextByClass(sourceRow,  "sourceRow");
                                  -                    }
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection sourceLink.line="+sourceLink.line
                                  -                                          +" sourceRow="+(sourceRow?sourceRow.innerHTML:"undefined")+"\n");
                                  -                    if (sourceRow)
                                  -                    {
                                  -                        this.ioBox.sourceRow = sourceRow;
                                  -                        this.ioBox.sourceRow.setAttribute("exeLine", "true");
                                  -                        scrollIntoCenterView(sourceRow);
                                  -                        this.ioBox.selectObjectBox(sourceRow, false);  // sourceRow isn't an objectBox, but the function should work anyway...
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (Firebug.Inspector.inspecting)
                                  -        {
                                  -            this.ioBox.highlight(object);
                                  -        }
                                  -        else
                                  -        {
                                  -            this.ioBox.select(object, true, false, this.noScrollIntoView);
                                  -            
                                  -            // TODO: xxxpedro
                                  -            //this.inspectorHistory.unshift(object);
                                  -            //if (this.inspectorHistory.length > 5)
                                  -            //    this.inspectorHistory.pop();
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -        if (object != this.inspectorHistory)
                                  -        {
                                  -            // Manage history of selection for later access in the command line.
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.stopInspecting: inspectoryHistory updated", this.inspectorHistory);
                                  -        }
                                  -
                                  -        this.ioBox.highlight(null);
                                  -
                                  -        if (!cancelled)
                                  -            this.ioBox.select(object, true);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var search;
                                  -        if (text == this.searchText && this.lastSearch)
                                  -            search = this.lastSearch;
                                  -        else
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            if (Firebug.searchSelector)
                                  -                search = this.lastSearch = new SelectorSearch(text, doc, this.panelNode, this.ioBox);
                                  -            else
                                  -                search = this.lastSearch = new NodeSearch(text, doc, this.panelNode, this.ioBox);
                                  -        }
                                  -
                                  -        var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -        if (loopAround)
                                  -        {
                                  -            this.resetSearch();
                                  -            this.search(text, reverse);
                                  -        }
                                  -
                                  -        return !search.noMatch;
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("search.html.CSS_Selector", "searchSelector")
                                  -        ];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            return doc.body ? doc.body : getPreviousElement(doc.documentElement.lastChild);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(element)
                                  -    {
                                  -        var path = [];
                                  -        for (; element; element = this.getParentObject(element))
                                  -            path.push(element);
                                  -
                                  -        return path;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowFullText", "showFullTextNodes"),
                                  -            optionMenu("ShowWhitespace", "showWhitespaceNodes"),
                                  -            optionMenu("ShowComments", "showCommentNodes"),
                                  -            "-",
                                  -            optionMenu("HighlightMutations", "highlightMutations"),
                                  -            optionMenu("ExpandMutations", "expandMutations"),
                                  -            optionMenu("ScrollToMutations", "scrollToMutations")
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(node, target)
                                  -    {
                                  -        if (!node)
                                  -            return null;
                                  -
                                  -        var items = [];
                                  -
                                  -        if (node && node.nodeType == 1)
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewAttribute", command: bindFixed(this.editNewAttribute, this, node) }
                                  -            );
                                  -
                                  -            var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -            if (getAncestorByClass(target, "nodeAttr"))
                                  -            {
                                  -                var attrName = attrBox.childNodes[1].textContent;
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.editAttribute, this, node, attrName) },
                                  -                    {label: $STRF("DeleteAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.deleteAttribute, this, node, attrName) }
                                  -                );
                                  -            }
                                  -
                                  -            if (!( nonEditableTags.hasOwnProperty(node.localName) ))
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "EditElement", command: bindFixed(this.editNode, this, node) },
                                  -                    {label: "DeleteElement", command: bindFixed(this.deleteNode, this, node) }
                                  -                );
                                  -            }
                                  -
                                  -        }
                                  -        else
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "EditNode", command: bindFixed(this.editNode, this, node) },
                                  -                {label: "DeleteNode", command: bindFixed(this.deleteNode, this, node) }
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        if (!hasClass(target, "nodeValue"))
                                  -            return;
                                  -
                                  -        var targetNode = Firebug.getRepObject(target);
                                  -        if (targetNode && targetNode.nodeType == 1 && targetNode.localName.toUpperCase() == "IMG")
                                  -        {
                                  -            var url = targetNode.src;
                                  -            if (url == this.infoTipURL) // This state cleared in hide()
                                  -                return true;
                                  -
                                  -            this.infoTipURL = url;
                                  -            return Firebug.InfoTip.populateImageInfoTip(infoTip, url);
                                  -        }
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (hasClass(target, "nodeName") || hasClass(target, "nodeValue") || hasClass(target, "nodeBracket"))
                                  -        {
                                  -            if (!this.attrEditor)
                                  -                this.attrEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.attrEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            // XXXjoe Implement special text node editor
                                  -            if (!this.textEditor)
                                  -                this.textEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.textEditor;
                                  -        }
                                  -    },
                                  -
                                  -    getInspectorVars: function()
                                  -    {
                                  -        var vars = {};
                                  -        for (var i=0; i<2; i++)
                                  -            vars["$"+i] = this.inspectorHistory[i];
                                  -
                                  -        return vars;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"},
                                  -                FOR("child", "$object|childIterator",
                                  -                    TAG("$child|getNodeTag", {object: "$child"})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeCloseLabel", role:"presentation"},
                                  -                "&lt;/",
                                  -                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                "&gt;"
                                  -             )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        return getNodeTag(node, true);
                                  -    },
                                  -
                                  -    childIterator: function(node)
                                  -    {
                                  -        if (node.contentDocument)
                                  -            return [node.contentDocument.documentElement];
                                  -
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return cloneArray(node.childNodes);
                                  -        else
                                  -        {
                                  -            var nodes = [];
                                  -            for (var child = node.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                    nodes.push(child);
                                  -            }
                                  -            return nodes;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
                                  -            Firebug.HTMLPanel.CompleteElement.tag
                                  -        ),
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -            {
                                  -                var panel = Firebug.getElementPanel(child);
                                  -                Firebug.chrome.select(child.repObject);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                IMG({"class": "twisty", role: "presentation"}),
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"}),
                                  -            DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -             )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                    SPAN({"class": "nodeText editable"}, "$object|getNodeText"),
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag: AttrTag
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue")
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.WhitespaceNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            FOR("char", "$object|charIterator",
                                  -                    SPAN({"class": "nodeText nodeWhiteSpace editable"}, "$char")
                                  -                    )
                                  -        ),
                                  -    charIterator: function(node)
                                  -    {
                                  -        var str = node.nodeValue;
                                  -        var arr = [];
                                  -        for(var i = 0; i < str.length; i++)
                                  -        {
                                  -            // http://www.w3.org/TR/html401/struct/text.html
                                  -            var char = str[i];
                                  -            switch(char)
                                  -            {
                                  -            case ' ': arr[i] = ' ';break;
                                  -            case '\t': arr[i] = '\\t';break;
                                  -            case '\n': arr[i] = '\\n';break;
                                  -            case '\u200B': arr[i] = '\\u200B';break;  // Zero width space http://www.fileformat.info/info/unicode/char/200b/index.htm
                                  -            default: arr[i] = '?'; break;
                                  -            }
                                  -        }
                                  -        return arr;
                                  -    }
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            "&lt;![CDATA[",
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue"),
                                  -            "]]&gt;"
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            DIV({"class": "nodeComment editable"},
                                  -                "&lt;!--$object.nodeValue--&gt;"
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// AttributeEditor
                                  -
                                  -function AttributeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -/*
                                  -AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var element = Firebug.getRepObject(target);
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        target.innerHTML = escapeHTML(value);
                                  -
                                  -        if (hasClass(target, "nodeName"))
                                  -        {
                                  -            if (value != previousValue)
                                  -                element.removeAttribute(previousValue);
                                  -
                                  -            if (value)
                                  -            {
                                  -                var attrValue = getNextByClass(target, "nodeValue").textContent;
                                  -                element.setAttribute(value, attrValue);
                                  -            }
                                  -            else
                                  -                element.removeAttribute(value);
                                  -        }
                                  -        else if (hasClass(target, "nodeValue"))
                                  -        {
                                  -            var attrName = getPreviousByClass(target, "nodeName").textContent;
                                  -            element.setAttribute(attrName, value);
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            if (element instanceof Element)
                                  -                element.innerHTML = value;
                                  -            else
                                  -                element.nodeValue = value;
                                  -        }
                                  -
                                  -        //this.panel.markChange();
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 61 && hasClass(target, "nodeName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var emptyAttr = {nodeName: "", nodeValue: ""};
                                  -        var sibling = insertWhere == "before" ? target.previousSibling : target;
                                  -
                                  -        return AttrTag.insertAfter({attr: emptyAttr}, sibling);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -// HTMLEditor
                                  -
                                  -function HTMLEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -
                                  -    this.multiLine = true;
                                  -    this.tabNavigation = false;
                                  -    this.arrowCompletion = false;
                                  -}
                                  -
                                  -HTMLEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -        this.editingElements = [target.repObject, null];
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.editingElements;
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // Remove all of the nodes in the last range we created, except for
                                  -        // the first one, because setOuterHTML will replace it
                                  -        var first = this.editingElements[0], last = this.editingElements[1];
                                  -        if (last && last != first)
                                  -        {
                                  -            for (var child = first.nextSibling; child;)
                                  -            {
                                  -                var next = child.nextSibling;
                                  -                child.parentNode.removeChild(child);
                                  -                if (child == last)
                                  -                    break;
                                  -                else
                                  -                    child = next;
                                  -            }
                                  -        }
                                  -
                                  -        // Make sure that we create at least one node here, even if it's just
                                  -        // an empty space, because this code depends on having something to replace
                                  -        if (!value)
                                  -            value = " ";
                                  -
                                  -        if (this.innerEditMode)
                                  -            this.editingElements[0].innerHTML = value;
                                  -        else
                                  -            this.editingElements = setOuterHTML(this.editingElements[0], value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        //this.panel.markChange();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getEmptyElementTag(node)
                                  -{
                                  -    if (node.ownerDocument.documentElement.namespaceURI == "http://www.w3.org/1999/xhtml")
                                  -        return Firebug.HTMLPanel.XEmptyElement.tag;
                                  -    else
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getNodeTag(node, expandAll)
                                  -{
                                  -    if (node instanceof Element)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return getEmptyElementTag(node);
                                  -        else if (node.firebugIgnore)
                                  -            return null;
                                  -        else if (isContainerElement(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (isEmptyElement(node))
                                  -            return getEmptyElementTag(node);
                                  -        else if (hasNoElementChildren(node))
                                  -            return Firebug.HTMLPanel.TextElement.tag;
                                  -        else
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -    }
                                  -    else if (node instanceof Text)
                                  -        return Firebug.showWhitespaceNodes ? Firebug.HTMLPanel.WhitespaceNode.tag : Firebug.HTMLPanel.TextNode.tag;
                                  -    else if (node instanceof CDATASection)
                                  -        return Firebug.HTMLPanel.CDATANode.tag;
                                  -    else if (node instanceof Comment && (Firebug.showCommentNodes || expandAll))
                                  -        return Firebug.HTMLPanel.CommentNode.tag;
                                  -    else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -    else
                                  -        return FirebugReps.Nada.tag;
                                  -}
                                  -
                                  -function getNodeBoxTag(nodeBox)
                                  -{
                                  -    var re = /([^\s]+)NodeBox/;
                                  -    var m = re.exec(nodeBox.className);
                                  -    if (!m)
                                  -        return null;
                                  -
                                  -    var nodeBoxType = m[1];
                                  -    if (nodeBoxType == "container")
                                  -        return Firebug.HTMLPanel.Element.tag;
                                  -    else if (nodeBoxType == "text")
                                  -        return Firebug.HTMLPanel.TextElement.tag;
                                  -    else if (nodeBoxType == "empty")
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getSourceHref(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && element.src)
                                  -        return element.src;
                                  -    else if (tag == "link")
                                  -        return element.href;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function getSourceText(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && !element.src)
                                  -        return element.textContent;
                                  -    else if (tag == "style")
                                  -        return element.textContent;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function isContainerElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    switch (tag)
                                  -    {
                                  -        case "script":
                                  -        case "style":
                                  -        case "iframe":
                                  -        case "frame":
                                  -        case "tabbrowser":
                                  -        case "browser":
                                  -            return true;
                                  -        case "link":
                                  -            return element.getAttribute("rel") == "stylesheet";
                                  -    }
                                  -    return false;
                                  -}
                                  -
                                  -var hasNoElementChildren = function hasNoElementChildren(element)
                                  -{
                                  -    if (element.childElementCount != 0)  // FF 3.5+
                                  -        return false;
                                  -
                                  -    // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
                                  -    // TODO: xxxpedro
                                  -    /*
                                  -    if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
                                  -    {
                                  -        var anonChildren = element.ownerDocument.getAnonymousNodes(element);
                                  -        if (anonChildren)
                                  -        {
                                  -            for (var i = 0; i < anonChildren.length; i++)
                                  -            {
                                  -                if (anonChildren[i].nodeType == 1)
                                  -                    return false;
                                  -            }
                                  -        }
                                  -    }
                                  -    /**/
                                  -    if (FBTrace.DBG_HTML)
                                  -        FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element);
                                  -    return true;
                                  -};
                                  -
                                  -// Duplicate of HTMLPanel.prototype isWhitespaceText
                                  -var isWhitespaceText = function isWhitespaceText(node)
                                  -{
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -};
                                  -
                                  -// Duplicate of HTMLPanel.prototype TODO: create a namespace for all of these functions so
                                  -// they can be called outside of this file.
                                  -function isSourceElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    return tag == "script" || tag == "link" || tag == "style"
                                  -        || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -function isEmptyElement(element)
                                  -{
                                  -    // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
                                  -    // If the DOM has whitespace children, then the element is not empty even if
                                  -    // we decide not to show the whitespace in the UI.
                                  -
                                  -    // XXXsroussey reverted above but added a check for self closing tags
                                  -    if (Firebug.showWhitespaceNodes)
                                  -    {
                                  -        return !element.firstChild && isSelfClosing(element);
                                  -    }
                                  -    else
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return false;
                                  -        }
                                  -    }
                                  -    return isSelfClosing(element);
                                  -}
                                  -
                                  -function findNextSibling(node)
                                  -{
                                  -    if (Firebug.showWhitespaceNodes)
                                  -        return node.nextSibling;
                                  -    else
                                  -    {
                                  -        // only return a non-whitespace node
                                  -        for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -function findElementNameBox(objectNodeBox)
                                  -{
                                  -    return objectNodeBox.getElementsByClassName("nodeTag")[0];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function NodeSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    var walker = new DOMWalker(doc, doc.documentElement);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return findElementNameBox(nodeBox);
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            var target = this.lastRange.startContainer;
                                  -            range = this.lastRange = panelNode.ownerDocument.createRange();
                                  -            range.setStart(target, index);
                                  -            range.setEnd(target, index+text.length);
                                  -
                                  -            row = this.lastRow;
                                  -        }
                                  -
                                  -        if (!range)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -            var search = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = search.find(text, reverse, caseSensitive);
                                  -            range = this.lastRange = search.range;
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function SelectorSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    this.parent = new NodeSearch(text, doc, panelNode, ioBox);
                                  -
                                  -    this.find = this.parent.find;
                                  -    this.reset = this.parent.reset;
                                  -    this.openToNode = this.parent.openToNode;
                                  -
                                  -    try
                                  -    {
                                  -        // http://dev.w3.org/2006/webapi/selectors-api/
                                  -        this.matchingNodes = doc.querySelectorAll(text);
                                  -        this.matchIndex = 0;
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
                                  -    }
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (!this.matchingNodes || !this.matchingNodes.length)
                                  -            return undefined;
                                  -
                                  -        if (reverse)
                                  -        {
                                  -            if (this.matchIndex > 0)
                                  -                return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.matchIndex < this.matchingNodes.length)
                                  -                return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            ioBox.select(node, true, true);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -}
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerPanel(Firebug.HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/temp/html3.js b/branches/flexBox/content/lite/temp/html3.js
                                  deleted file mode 100644
                                  index 9cae535c..00000000
                                  --- a/branches/flexBox/content/lite/temp/html3.js
                                  +++ /dev/null
                                  @@ -1,2200 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -
                                  -const MODIFICATION = MutationEvent.MODIFICATION;
                                  -const ADDITION = MutationEvent.ADDITION;
                                  -const REMOVAL = MutationEvent.REMOVAL;
                                  -
                                  -const BP_BREAKONATTRCHANGE = 1;
                                  -const BP_BREAKONCHILDCHANGE = 2;
                                  -const BP_BREAKONREMOVE = 3;
                                  -const BP_BREAKONTEXT = 4;
                                  -/**/
                                  -
                                  -/// TODO: xxxpedro hack
                                  -Firebug.A11yModel = {};
                                  -
                                  -var HTMLLib = Firebug.HTMLLib;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLModule = extend(Firebug.Module,
                                  -{
                                  -    initialize: function(prefDomain, prefNames)
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.initContext.apply(this, arguments);
                                  -        context.mutationBreakpoints = new MutationBreakpointGroup();
                                  -    },
                                  -
                                  -    loadedContext: function(context, persistedState)
                                  -    {
                                  -        context.mutationBreakpoints.load(context);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.destroyContext.apply(this, arguments);
                                  -
                                  -        context.mutationBreakpoints.store(context);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    deleteNode: function(node, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.parentNode.removeChild(node);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    },
                                  -
                                  -    deleteAttribute: function(node, attr, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.removeAttribute(attr);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel = function() {};
                                  -
                                  -Firebug.HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -            this.editNode(this.selection);
                                  -    },
                                  -
                                  -    resetSearch: function()
                                  -    {
                                  -        delete this.lastSearch;
                                  -    },
                                  -
                                  -    selectNext: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var next = this.ioBox.getNextObjectBox(objectBox);
                                  -        if (next)
                                  -        {
                                  -            this.select(next.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(next.repObject);
                                  -
                                  -        }
                                  -    },
                                  -
                                  -    selectPrevious: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var previous = this.ioBox.getPreviousObjectBox(objectBox);
                                  -        if (previous)
                                  -        {
                                  -            this.select(previous.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(previous.repObject);
                                  -        }
                                  -    },
                                  -
                                  -    selectNodeBy: function(dir)
                                  -    {
                                  -        if (dir == "up")
                                  -            this.selectPrevious();
                                  -        else if (dir == "down")
                                  -            this.selectNext();
                                  -        else if (dir == "left")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.select(this.ioBox.getParentObjectBox(box).repObject);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -        else if (dir == "right")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.ioBox.expandObject(this.selection);
                                  -            else
                                  -                this.selectNext();
                                  -        }
                                  -        Firebug.Inspector.highlightObject(this.selection, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editNewAttribute: function(elt)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var labelBox = objectNodeBox.firstChild.lastChild;
                                  -            var bracketBox = labelBox.getElementsByClassName("nodeBracket").item(0);
                                  -            Firebug.Editor.insertRow(bracketBox, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editAttribute: function(elt, attrName)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var attrBox = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (attrBox)
                                  -            {
                                  -                var attrValueBox = attrBox.childNodes[3];
                                  -                var value = elt.getAttribute(attrName);
                                  -                Firebug.Editor.startEditing(attrValueBox, value);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    deleteAttribute: function(elt, attrName)
                                  -    {
                                  -        Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
                                  -    },
                                  -
                                  -    localEditors:{}, // instantiated editor cache
                                  -    editNode: function(node)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(node);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var type = getElementType(node);
                                  -            var editor = this.localEditors[type];
                                  -            if (!editor)
                                  -            {
                                  -             // look for special purpose editor (inserted by an extension), otherwise use our html editor
                                  -                var specializedEditor = Firebug.HTMLPanel.Editors[type] || Firebug.HTMLPanel.Editors['html'];
                                  -                editor = this.localEditors[type] = new specializedEditor(this.document);
                                  -            }
                                  -            this.startEditingNode(node, objectNodeBox, editor, type);
                                  -        }
                                  -    },
                                  -
                                  -    startEditingNode: function(node, box, editor, type)
                                  -    {
                                  -        switch (type)
                                  -        {
                                  -            case 'html':
                                  -            case 'xhtml':
                                  -                this.startEditingHTMLNode(node, box, editor);
                                  -                break;
                                  -            default:
                                  -                this.startEditingXMLNode(node, box, editor);
                                  -        }
                                  -    },
                                  -
                                  -    startEditingXMLNode: function(node, box, editor)
                                  -    {
                                  -        var xml = getElementXML(node);
                                  -        Firebug.Editor.startEditing(box, xml, editor);
                                  -    },
                                  -
                                  -    startEditingHTMLNode: function(node, box, editor)
                                  -    {
                                  -        if ( nonEditableTags.hasOwnProperty(node.localName) )
                                  -            return;
                                  -        editor.innerEditMode = node.localName in innerEditableTags;
                                  -
                                  -        var html = editor.innerEditMode ? node.innerHTML : getElementHTML(node);
                                  -        Firebug.Editor.startEditing(box, html, editor);
                                  -    },
                                  -
                                  -    deleteNode: function(node, dir)
                                  -    {
                                  -        dir = dir || 'up';
                                  -        var box = this.ioBox.createObjectBox(node);
                                  -        if (hasClass(box, "open"))
                                  -            this.ioBox.contractObject(this.selection);
                                  -        this.selectNodeBy(dir);
                                  -        Firebug.HTMLModule.deleteNode(node, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getElementSourceText: function(node)
                                  -    {
                                  -        if (this.sourceElements)
                                  -        {
                                  -            var index = this.sourceElementNodes.indexOf(node);
                                  -            if (index != -1)
                                  -                return this.sourceElements[index];
                                  -        }
                                  -
                                  -        var lines;
                                  -
                                  -        var url = HTMLLib.getSourceHref(node);
                                  -        if (url)
                                  -            lines = this.context.sourceCache.load(url);
                                  -        else
                                  -        {
                                  -            var text = HTMLLib.getSourceText(node);
                                  -            lines = splitLines(text);
                                  -        }
                                  -
                                  -        var sourceElt = new SourceText(lines, node);
                                  -
                                  -        if (!this.sourceElements)
                                  -        {
                                  -            this.sourceElements =  [sourceElt];
                                  -            this.sourceElementNodes = [node];
                                  -        }
                                  -        else
                                  -        {
                                  -            this.sourceElements.push(sourceElt);
                                  -            this.sourceElementNodes.push(node);
                                  -        }
                                  -
                                  -        return sourceElt;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    mutateAttr: function(target, attrChange, attrName, attrValue)
                                  -    {
                                  -        // Every time the user scrolls we get this pointless mutation event, which
                                  -        // is only bad for performance
                                  -        if (attrName == "curpos")
                                  -            return;
                                  -
                                  -        // Due to the delay call this may or may not exist in the tree anymore
                                  -        if (!this.ioBox.isInExistingRoot(target))
                                  -        {
                                  -            if (FBTrace.DBG_HTML)   FBTrace.sysout("mutateAttr: different tree " + target, target);
                                  -            return;
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName+" attrValue: "+attrValue, target);
                                  -
                                  -        this.markChange();
                                  -
                                  -        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(target)
                                  -            : this.ioBox.findObjectBox(target);
                                  -
                                  -        if (!objectNodeBox)
                                  -            return;
                                  -
                                  -        if (isVisible(objectNodeBox.repObject))
                                  -            removeClass(objectNodeBox, "nodeHidden");
                                  -        else
                                  -            setClass(objectNodeBox, "nodeHidden");
                                  -
                                  -        if (attrChange == MODIFICATION || attrChange == ADDITION)
                                  -        {
                                  -            var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
                                  -            if (nodeAttr && nodeAttr.childNodes.length > 3)
                                  -            {
                                  -                var attrValueBox = nodeAttr.childNodes[3];
                                  -                var attrValueText = nodeAttr.childNodes[3].firstChild;
                                  -                if (attrValueText)
                                  -                    attrValueText.nodeValue = attrValue;
                                  -
                                  -                this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
                                  -            }
                                  -            else
                                  -            {
                                  -                var attr = target.getAttributeNode(attrName);
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
                                  -                if (attr)
                                  -                {
                                  -                    var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
                                  -                            this.document);
                                  -
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    var bracketBox = labelBox.getElementsByClassName("nodeBracket").item(0);
                                  -                    labelBox.insertBefore(nodeAttr, bracketBox);
                                  -
                                  -                    this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (attrChange == REMOVAL)
                                  -        {
                                  -            var nodeAttr = HTMLLib.findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (nodeAttr)
                                  -            {
                                  -                nodeAttr.parentNode.removeChild(nodeAttr);
                                  -            }
                                  -
                                  -            // We want to highlight regardless as the domplate may have been
                                  -            // generated after the attribute was removed from the node
                                  -            this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -        }
                                  -    },
                                  -
                                  -    mutateText: function(target, parent, textValue)
                                  -    {
                                  -        // Due to the delay call this may or may not exist in the tree anymore
                                  -        if (!this.ioBox.isInExistingRoot(target))
                                  -        {
                                  -            if (FBTrace.DBG_HTML)   FBTrace.sysout("mutateText: different tree " + target, target);
                                  -            return;
                                  -        }
                                  -
                                  -        this.markChange();
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (!parentNodeBox)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, parent node box does not exist");
                                  -            return;
                                  -        }
                                  -
                                  -        if (!Firebug.showFullTextNodes)
                                  -            textValue = cropMultipleLines(textValue);
                                  -
                                  -        var parentTag = getNodeBoxTag(parentNodeBox);
                                  -        if (parentTag == Firebug.HTMLPanel.TextElement.tag)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.mutateText target: " + target + " parent: " + parent);
                                  -
                                  -            var nodeText = HTMLLib.getTextElementTextBox(parentNodeBox);
                                  -            if (!nodeText.firstChild)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, TextElement firstChild does not exist");
                                  -                return;
                                  -            }
                                  -
                                  -            nodeText.firstChild.nodeValue = textValue;
                                  -
                                  -            this.highlightMutation(nodeText, parentNodeBox, "mutated");
                                  -        }
                                  -        else
                                  -        {
                                  -            var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
                                  -            if (!childBox)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)   FBTrace.sysout("html.mutateText failed to update text, no child object box found");
                                  -                return;
                                  -            }
                                  -
                                  -            var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
                                  -            if (textNodeBox)
                                  -            {
                                  -                // structure for comment and cdata. Are there others?
                                  -                textNodeBox.children[0].firstChild.nodeValue = textValue;
                                  -
                                  -                this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
                                  -            }
                                  -            else if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -            {
                                  -                // We are not currently rendered but we are set to highlight
                                  -                var objectBox = this.ioBox.createObjectBox(target);
                                  -                this.highlightMutation(objectBox, objectBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateNode: function(target, parent, nextSibling, removal)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\nhtml.mutateNode target:"+target+" parent:"+parent+(removal?"REMOVE":"")+"\n");
                                  -
                                  -        // Due to the delay call this may or may not exist in the tree anymore
                                  -        if (!removal && !this.ioBox.isInExistingRoot(target))
                                  -        {
                                  -            if (FBTrace.DBG_HTML)   FBTrace.sysout("mutateNode: different tree " + target, target);
                                  -            return;
                                  -        }
                                  -
                                  -        this.markChange();  // This invalidates the panels for every mutate
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateNode parent:"+parent+" parentNodeBox:"+parentNodeBox+"\n");
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showTextNodesWithWhitespace && this.isWhitespaceText(target))
                                  -            return;
                                  -
                                  -        // target is only whitespace
                                  -
                                  -        var newParentTag = getNodeTag(parent);
                                  -        var oldParentTag = getNodeBoxTag(parentNodeBox);
                                  -
                                  -        if (newParentTag == oldParentTag)
                                  -        {
                                  -            if (parentNodeBox.populated)
                                  -            {
                                  -                if (removal)
                                  -                {
                                  -                    this.ioBox.removeChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
                                  -                }
                                  -                else
                                  -                {
                                  -                    if (nextSibling)
                                  -                    {
                                  -                        while (
                                  -                                (!Firebug.showTextNodesWithWhitespace && Firebug.HTMLLib.isWhitespaceText(nextSibling)) ||
                                  -                                (!Firebug.showCommentNodes && nextSibling instanceof Comment)
                                  -                              )
                                  -                        {
                                  -                            nextSibling = this.findNextSibling(nextSibling);
                                  -                        }
                                  -                    }
                                  -
                                  -                    var objectBox = nextSibling
                                  -                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
                                  -                        : this.ioBox.appendChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -            else // !parentNodeBox.populated
                                  -            {
                                  -                var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -                if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                    this.ioBox.select(parent, true);
                                  -
                                  -                this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -                if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
                                  -                {
                                  -                    var objectBox = this.ioBox.createObjectBox(target);
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else // newParentTag != oldParentTag
                                  -        {
                                  -            var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -            if (parentNodeBox.parentNode)
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -            if (hasClass(parentNodeBox, "open"))
                                  -                this.ioBox.toggleObjectBox(newParentNodeBox, true);
                                  -
                                  -            if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                this.ioBox.select(parent, true);
                                  -
                                  -            this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -            if (!removal && (Firebug.scrollToMutations || Firebug.expandMutations))
                                  -            {
                                  -                var objectBox = this.ioBox.createObjectBox(target);
                                  -                this.highlightMutation(objectBox, objectBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    highlightMutation: function(elt, objectBox, type)
                                  -    {
                                  -        if (!elt)
                                  -            return;
                                  -
                                  -        if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -        {
                                  -            if (this.context.mutationTimeout)
                                  -            {
                                  -                this.context.clearTimeout(this.context.mutationTimeout);
                                  -                delete this.context.mutationTimeout;
                                  -            }
                                  -
                                  -            var ioBox = this.ioBox;
                                  -            var panelNode = this.panelNode;
                                  -
                                  -            this.context.mutationTimeout = this.context.setTimeout(function()
                                  -            {
                                  -                ioBox.openObjectBox(objectBox);
                                  -
                                  -                if (Firebug.scrollToMutations)
                                  -                    scrollIntoCenterView(objectBox, panelNode);
                                  -            }, 200);
                                  -        }
                                  -
                                  -        if (Firebug.highlightMutations)
                                  -            setClassTimed(elt, type, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // SourceBox proxy
                                  -
                                  -    createObjectBox: function(object, isRoot)
                                  -    {
                                  -        if (FBTrace.DBG_HTML) FBTrace.sysout("html.createObjectBox("+(object.tagName?object.tagName:object)+", isRoot:"+(isRoot?"true":"false")+")\n");
                                  -        var tag = getNodeTag(object);
                                  -        if (tag)
                                  -            return tag.replace({object: object}, this.document);
                                  -    },
                                  -
                                  -    getParentObject: function(node)
                                  -    {
                                  -        if (node instanceof SourceText)
                                  -            return node.owner;
                                  -
                                  -        var parentNode = node ? node.parentNode : null;
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("ChromeBugPanel.getParentObject for "+node.nodeName+" parentNode:"+(parentNode?parentNode.nodeName:"null-or-false")+"\n");
                                  -
                                  -        if (parentNode)
                                  -        {
                                  -
                                  -            if (parentNode.nodeType == 9) // then parentNode is Document element
                                  -            {
                                  -                if (parentNode.defaultView)
                                  -                {
                                  -                    if (parentNode.defaultView == this.context.window) // for chromebug to avoid climbing put to browser.xul
                                  -                        return null;
                                  -
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("getParentObject parentNode.nodeType 9, frameElement:"+parentNode.defaultView.frameElement+"\n");                  /*@explore*/
                                  -                    return parentNode.defaultView.frameElement;
                                  -                }
                                  -                else if (this.embeddedBrowserParents)
                                  -                {
                                  -                    var skipParent = this.embeddedBrowserParents[node];  // better be HTML element, could be iframe
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("getParentObject skipParent:"+(skipParent?skipParent.nodeName:"none")+"\n");                  /*@explore*/
                                  -                    if (skipParent)
                                  -                        return skipParent;
                                  -                }
                                  -                else // parent is document element, but no window at defaultView.
                                  -                    return null;
                                  -            }
                                  -            else if (!parentNode.localName)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("getParentObject: null localName must be window, no parentObject");
                                  -                return null;
                                  -            }
                                  -            else
                                  -                return parentNode;
                                  -        }
                                  -        else  // Documents have no parentNode; Attr, Document, DocumentFragment, Entity, and Notation. top level windows have no parentNode
                                  -        {
                                  -            if (node && node.nodeType == 9) // document type
                                  -            {
                                  -                if (node.defaultView) // generally a reference to the window object for the document, however that is not defined in the specification
                                  -                {
                                  -                    var embeddingFrame = node.defaultView.frameElement;
                                  -                    if (embeddingFrame)
                                  -                        return embeddingFrame.parentNode;
                                  -                }
                                  -                else // a Document object without a parentNode or window
                                  -                    return null;  // top level has no parent
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getChildObject: function(node, index, previousSibling)
                                  -    {
                                  -        if (!node)
                                  -        {
                                  -            FBTrace.sysout("getChildObject: null node");
                                  -            return;
                                  -        }
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("getChildObject "+node.tagName+" index "+index+" previousSibling: "+previousSibling, {node: node, previousSibling:previousSibling});
                                  -
                                  -        if (this.isSourceElement(node))
                                  -        {
                                  -            if (index == 0)
                                  -                return this.getElementSourceText(node);
                                  -            else
                                  -                return null;  // no siblings of source elements
                                  -        }
                                  -        else if (node.contentDocument)  // then the node is a frame
                                  -        {
                                  -            if (index == 0)
                                  -            {
                                  -                if (!this.embeddedBrowserParents)
                                  -                    this.embeddedBrowserParents = {};
                                  -                var skipChild = node.contentDocument.documentElement; // unwrap
                                  -                this.embeddedBrowserParents[skipChild] = node;
                                  -
                                  -                return skipChild;  // (the node's).(type 9 document).(HTMLElement)
                                  -            }
                                  -            else
                                  -                return null;
                                  -        }
                                  -        else if (node.getSVGDocument && node.getSVGDocument())  // then the node is a frame
                                  -        {
                                  -            if (index == 0)
                                  -            {
                                  -                if (!this.embeddedBrowserParents)
                                  -                    this.embeddedBrowserParents = {};
                                  -                var skipChild = node.getSVGDocument().documentElement; // unwrap
                                  -                this.embeddedBrowserParents[skipChild] = node;
                                  -
                                  -                return skipChild;  // (the node's).(type 9 document).(SVGElement)
                                  -            }
                                  -            else
                                  -                return null;
                                  -        }
                                  -
                                  -        if (previousSibling)  // then we are walking
                                  -            var child = this.getNextSibling(previousSibling);  // may return null, meaning done with iteration.
                                  -        else
                                  -            var child = this.getFirstChild(node); // child is set to at the beginning of an iteration.
                                  -
                                  -        if (Firebug.showTextNodesWithWhitespace)  // then the index is true to the node list
                                  -            return child;
                                  -        else
                                  -        {
                                  -            for (; child; child = this.getNextSibling(child))
                                  -            {
                                  -                if (!this.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -        return null;  // we have no children worth showing.
                                  -    },
                                  -
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        return HTMLLib.isWhitespaceText(node);
                                  -    },
                                  -
                                  -    getFirstChild: function(node)
                                  -    {
                                  -        this.treeWalker = node.ownerDocument.createTreeWalker(
                                  -                 node, NodeFilter.SHOW_ALL, null, false);
                                  -        return this.treeWalker.firstChild();
                                  -    },
                                  -
                                  -    getNextSibling: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML || FBTrace.DBG_ERRORS)
                                  -        {
                                  -            if (node != this.treeWalker.currentNode)
                                  -                FBTrace.sysout("getNextSibling FAILS treeWalker "+this.treeWalker.currentNode+" out of sync with node "+node, this.treeWalker);
                                  -        }
                                  -        var next = this.treeWalker.nextSibling();
                                  -
                                  -        if (!next)
                                  -            delete this.treeWalker;
                                  -
                                  -        return next;
                                  -    },
                                  -
                                  -    findNextSibling: function (node)
                                  -    {
                                  -        return HTMLLib.findNextSibling(node);
                                  -    },
                                  -
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        return HTMLLib.isSourceElement(element);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Events
                                  -
                                  -    onMutateAttr: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (unwrapObject(target).firebugIgnore)
                                  -            return;
                                  -
                                  -        var attrChange = event.attrChange;
                                  -        var attrName = event.attrName;
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateAttr(target, attrChange, attrName, newValue);
                                  -        }, this);
                                  -
                                  -        Firebug.HTMLModule.MutationBreakpoints.onMutateAttr(event, this.context);
                                  -    },
                                  -
                                  -    onMutateText: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.onMutateText; ", event);
                                  -
                                  -        var target = event.target;
                                  -        var parent = target.parentNode;
                                  -
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateText(target, parent, newValue);
                                  -        }, this);
                                  -
                                  -        Firebug.HTMLModule.MutationBreakpoints.onMutateText(event, this.context);
                                  -    },
                                  -
                                  -    onMutateNode: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (unwrapObject(target).firebugIgnore)
                                  -            return;
                                  -
                                  -        var parent = event.relatedNode;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -        var nextSibling = removal ? null : this.findNextSibling(target);
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            try
                                  -            {
                                  -                 this.mutateNode(target, parent, nextSibling, removal);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.onMutateNode FAILS:", exc);
                                  -            }
                                  -        }, this);
                                  -
                                  -        Firebug.HTMLModule.MutationBreakpoints.onMutateNode(event, this.context);
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (isLeftClick(event) && event.detail == 2)
                                  -        {
                                  -            this.toggleNode(event);
                                  -        }
                                  -        else if (isAltClick(event) && event.detail == 2 && !this.editing)
                                  -        {
                                  -            this.editNode(this.selection);
                                  -        }
                                  -    },
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        if (getAncestorByClass(event.target, "nodeTag"))
                                  -        {
                                  -            var node = Firebug.getRepObject(event.target);
                                  -            this.noScrollIntoView = true;
                                  -            this.select(node);
                                  -            delete this.noScrollIntoView;
                                  -            if (hasClass(event.target, "twisty"))
                                  -                this.toggleNode(event);
                                  -        }
                                  -    },
                                  -
                                  -    toggleNode: function(event)
                                  -    {
                                  -        var node = Firebug.getRepObject(event.target);
                                  -        var box = this.ioBox.createObjectBox(node);
                                  -        if (!hasClass(box, "open"))
                                  -            this.ioBox.expandObject(node);
                                  -        else
                                  -            this.ioBox.contractObject(this.selection);
                                  -    },
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        if (this.editing || isControl(event) || isShift(event))
                                  -            return;
                                  -
                                  -        var node = this.selection;
                                  -        if (!node)
                                  -            return;
                                  -        if (event.keyCode == KeyEvent.DOM_VK_UP)
                                  -            this.selectNodeBy("up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
                                  -            this.selectNodeBy("down");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
                                  -            this.selectNodeBy("left");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
                                  -            this.selectNodeBy("right");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_BACK_SPACE && !(node.localName in innerEditableTags) && !(nonEditableTags.hasOwnProperty(node.localName)))
                                  -            this.deleteNode(node, "up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DELETE && !(node.localName in innerEditableTags) && !(nonEditableTags.hasOwnProperty(node.localName)))
                                  -            this.deleteNode(node, "down");
                                  -        else
                                  -            return;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "HTML3",
                                  -    title: "HTML3",
                                  -    
                                  -    searchable: true,
                                  -    breakable: true,
                                  -    dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
                                  -    inspectorHistory: new Array(5),
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var doc = Firebug.chrome.document;
                                  -        var styleSheet = createStyleSheet(doc, Env.Location.skinDir + "html.css");
                                  -        addStyleSheet(doc, styleSheet);
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMutateText = bind(this.onMutateText, this);
                                  -        this.onMutateAttr = bind(this.onMutateAttr, this);
                                  -        this.onMutateNode = bind(this.onMutateNode, this);
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        // TODO: xxxpedro html3
                                  -        this.panelNode.style.padding = "4px 0";
                                  -        this.context = Firebug.browser;
                                  -        this.document = Firebug.chrome.document;
                                  -        this.initializeNode();
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        // TODO: xxxpedro html html3
                                  -        //persistObjects(this, state);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -
                                  -        // TODO: xxxpedro html3
                                  -        var object = Firebug.browser.document.documentElement;
                                  -        this.select(object);
                                  -        // END: xxxpedro html3
                                  -        
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this]);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.ioBox)
                                  -        {
                                  -            this.ioBox.destroy();
                                  -            delete this.ioBox;
                                  -        }
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this]);
                                  -    },
                                  -
                                  -    // TODO: xxxpedro html3
                                  -    ishow: function(state)
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", true);
                                  -
                                  -        this.panelNode.ownerDocument.addEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.context.loaded)
                                  -        {
                                  -            if (!this.context.attachedMutation)
                                  -            {
                                  -                this.context.attachedMutation = true;
                                  -
                                  -                iterateWindows(this.context.window, bind(function(win)
                                  -                {
                                  -                    var doc = win.document;
                                  -                    doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -                    doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -                    doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -                    doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -                }, this));
                                  -            }
                                  -
                                  -            restoreObjects(this, state);
                                  -        }
                                  -    },
                                  -
                                  -    // TODO: xxxpedro html3
                                  -    ihide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", false);
                                  -        delete this.infoTipURL;  // clear the state that is tracking the infotip so it is reset after next show()
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.watchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, false);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        if (this.context.attachedMutation)
                                  -        {
                                  -            var doc = win.document;
                                  -            doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -            doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -            doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -            doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.unwatchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, true);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        var doc = win.document;
                                  -        doc.removeEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -        doc.removeEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -        doc.removeEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -        doc.removeEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -    },
                                  -
                                  -    mutateDocumentEmbedded: function(win, remove)
                                  -    {
                                  -        // document.documentElement    Returns the Element that is a direct child of document. For HTML documents, this normally the HTML element.
                                  -        var target = win.document.documentElement;
                                  -        var parent = win.frameElement;
                                  -        var nextSibling = this.findNextSibling(target || parent);
                                  -        this.mutateNode(target, parent, nextSibling, remove);
                                  -    },
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (object instanceof Element || object instanceof Text || object instanceof CDATASection)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && !reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        var viewOptionNames = {
                                  -                showCommentNodes:1,
                                  -                showTextNodesWithEntities:1,
                                  -                showTextNodesWithWhitespace:1,
                                  -                showFullTextNodes:1
                                  -        };
                                  -        if (name in viewOptionNames)
                                  -        {
                                  -            this.resetSearch();
                                  -            clearNode(this.panelNode);
                                  -            if (this.ioBox)
                                  -                this.ioBox.destroy();
                                  -
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -            this.ioBox.select(this.selection, true, true);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.updateSelection "+object);
                                  -        if (this.ioBox.sourceRow)
                                  -            this.ioBox.sourceRow.removeAttribute("exe_line");
                                  -
                                  -        if (object instanceof SourceLink) // && object.type == "css" and !reCSS(object.href) by supports
                                  -        {
                                  -            var sourceLink = object;
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection stylesheet.ownerNode="+stylesheet.ownerNode
                                  -                                          +" href:"+sourceLink.href+"\n");
                                  -                if (ownerNode)
                                  -                {
                                  -                    var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
                                  -
                                  -                    // XXXjjb seems like this could be bad for errors at the end of long files
                                  -                    //
                                  -                    var sourceRow = objectbox.getElementsByClassName("sourceRow").item(0); // first source row in style
                                  -                    for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
                                  -                    {
                                  -                        if (!sourceRow) break;
                                  -                        sourceRow = FBL.getNextByClass(sourceRow,  "sourceRow");
                                  -                    }
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection sourceLink.line="+sourceLink.line
                                  -                                          +" sourceRow="+(sourceRow?sourceRow.innerHTML:"undefined")+"\n");
                                  -                    if (sourceRow)
                                  -                    {
                                  -                        this.ioBox.sourceRow = sourceRow;
                                  -                        this.ioBox.sourceRow.setAttribute("exe_line", "true");
                                  -                        scrollIntoCenterView(sourceRow);
                                  -                        this.ioBox.selectObjectBox(sourceRow, false);  // sourceRow isn't an objectBox, but the function should work anyway...
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (Firebug.Inspector.inspecting)
                                  -        {
                                  -            this.ioBox.highlight(object);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro html3
                                  -            //Firebug.chrome.getSelectedSidePanel().panelNode.scrollTop = 0;
                                  -            this.ioBox.select(object, true, false, this.noScrollIntoView);
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -        if (object != this.inspectorHistory)
                                  -        {
                                  -            // Manage history of selection for later access in the command line.
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.stopInspecting: inspectoryHistory updated", this.inspectorHistory);
                                  -        }
                                  -
                                  -        this.ioBox.highlight(null);
                                  -
                                  -        if (!cancelled)
                                  -            this.ioBox.select(object, true);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var search;
                                  -        if (text == this.searchText && this.lastSearch)
                                  -            search = this.lastSearch;
                                  -        else
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            search = this.lastSearch = new HTMLLib.NodeSearch(text, doc, this.panelNode, this.ioBox);
                                  -        }
                                  -
                                  -        var loopAround = search.find(reverse, Firebug.Search.isCaseSensitive(text));
                                  -        if (loopAround)
                                  -        {
                                  -            this.resetSearch();
                                  -            this.search(text, reverse);
                                  -        }
                                  -
                                  -        return !search.noMatch;
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case_Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            return doc.body ? doc.body : getPreviousElement(doc.documentElement.lastChild);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(element)
                                  -    {
                                  -        var path = [];
                                  -        for (; element; element = this.getParentObject(element))
                                  -            path.push(element);
                                  -
                                  -        return path;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowFullText", "showFullTextNodes"),
                                  -            optionMenu("ShowWhitespace", "showTextNodesWithWhitespace"),
                                  -            optionMenu("ShowComments", "showCommentNodes"),
                                  -            optionMenu("ShowTextNodesWithEntities", "showTextNodesWithEntities"),
                                  -            "-",
                                  -            optionMenu("HighlightMutations", "highlightMutations"),
                                  -            optionMenu("ExpandMutations", "expandMutations"),
                                  -            optionMenu("ScrollToMutations", "scrollToMutations"),
                                  -            "-",
                                  -            optionMenu("ShadeBoxModel", "shadeBoxModel"),
                                  -            optionMenu("ShowQuickInfoBox","showQuickInfoBox")
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(node, target)
                                  -    {
                                  -        if (!node)
                                  -            return null;
                                  -
                                  -        var items = [];
                                  -
                                  -        if (node && node.nodeType == 1)
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewAttribute", command: bindFixed(this.editNewAttribute, this, node) }
                                  -            );
                                  -
                                  -            var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -            if (getAncestorByClass(target, "nodeAttr"))
                                  -            {
                                  -                var attrName = attrBox.childNodes[1].textContent;
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.editAttribute, this, node, attrName) },
                                  -                    {label: $STRF("DeleteAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.deleteAttribute, this, node, attrName) }
                                  -                );
                                  -            }
                                  -
                                  -            if (!( nonEditableTags.hasOwnProperty(node.localName) ))
                                  -            {
                                  -                var EditElement = "EditHTMLElement";
                                  -
                                  -                if (isElementMathML(node))
                                  -                    EditElement = "EditMathMLElement";
                                  -                else if (isElementSVG(node))
                                  -                    EditElement = "EditSVGElement";
                                  -
                                  -                items.push("-", { label: EditElement, command: bindFixed(this.editNode, this, node)},
                                  -                            { label: "DeleteElement", command: bindFixed(this.deleteNode, this, node), disabled:(node.localName in innerEditableTags)}
                                  -                           );
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "EditNode", command: bindFixed(this.editNode, this, node) },
                                  -                {label: "DeleteNode", command: bindFixed(this.deleteNode, this, node) }
                                  -            );
                                  -        }
                                  -
                                  -        Firebug.HTMLModule.MutationBreakpoints.getContextMenuItems(
                                  -            this.context,node, target, items);
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        if (!hasClass(target, "nodeValue"))
                                  -            return;
                                  -
                                  -        var targetNode = Firebug.getRepObject(target);
                                  -        if (targetNode && targetNode.nodeType == 1 && targetNode.localName.toUpperCase() == "IMG")
                                  -        {
                                  -            var url = targetNode.src;
                                  -            if (url == this.infoTipURL) // This state cleared in hide()
                                  -                return true;
                                  -
                                  -            this.infoTipURL = url;
                                  -            return Firebug.InfoTip.populateImageInfoTip(infoTip, url);
                                  -        }
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (hasClass(target, "nodeName") || hasClass(target, "nodeValue") || hasClass(target, "nodeBracket"))
                                  -        {
                                  -            if (!this.attrEditor)
                                  -                this.attrEditor = new Firebug.HTMLPanel.Editors.Attribute(this.document);
                                  -
                                  -            return this.attrEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeComment") || hasClass(target, "nodeCDATA"))
                                  -        {
                                  -            if (!this.textDataEditor)
                                  -                this.textDataEditor = new Firebug.HTMLPanel.Editors.TextData(this.document);
                                  -
                                  -            return this.textDataEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            if (!this.textNodeEditor)
                                  -                this.textNodeEditor = new Firebug.HTMLPanel.Editors.TextNode(this.document);
                                  -
                                  -            return this.textNodeEditor;
                                  -        }
                                  -    },
                                  -
                                  -    getInspectorVars: function()
                                  -    {
                                  -        var vars = {};
                                  -        for (var i=0; i<2; i++)
                                  -            vars["$"+i] = this.inspectorHistory[i];
                                  -
                                  -        return vars;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Break on Mutate
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.HTMLModule.MutationBreakpoints.breakOnNext(this.context, breaking);
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return this.context.breakOnNextMutate;
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("html.Disable Break On Mutate") : $STR("html.Break On Mutate"));
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var AttrTag = Firebug.HTMLPanel.AttrTag =
                                  -    SPAN({"class": "nodeAttr editGroup"},
                                  -        "&nbsp;", SPAN({"class": "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -        SPAN({"class": "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -    );
                                  -
                                  -var TextTag = Firebug.HTMLPanel.TextTag =
                                  -    SPAN({"class": "nodeText editable"},
                                  -        FOR("char", "$object|getNodeTextGroups",
                                  -            SPAN({"class": "$char.class $char.extra"}, "$char.str")
                                  -        )
                                  -    );
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"},
                                  -                FOR("child", "$object|childIterator",
                                  -                    TAG("$child|getNodeTag", {object: "$child"})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeCloseLabel", role:"presentation"},
                                  -                "&lt;/",
                                  -                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                "&gt;"
                                  -             )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        return getNodeTag(node, true);
                                  -    },
                                  -
                                  -    childIterator: function(node)
                                  -    {
                                  -        if (node.contentDocument)
                                  -            return [node.contentDocument.documentElement];
                                  -
                                  -        if (Firebug.showTextNodesWithWhitespace)
                                  -            return cloneArray(node.childNodes);
                                  -        else
                                  -        {
                                  -            var nodes = [];
                                  -            for (var child = node.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (child.nodeType != Node.TEXT_NODE || !HTMLLib.isWhitespaceText(child))
                                  -                    nodes.push(child);
                                  -            }
                                  -            return nodes;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
                                  -            Firebug.HTMLPanel.CompleteElement.tag
                                  -        ),
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -            {
                                  -                var panel = Firebug.getElementPanel(child);
                                  -                Firebug.chrome.select(child.repObject);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                IMG({"class": "twisty", role: "presentation"}),
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"}), /* nodeChildBox is special signal in insideOutBox */
                                  -            DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                    TextTag,
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag: AttrTag
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
                                  -            TextTag
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object", role : 'presentation'},
                                  -            "&lt;![CDATA[",
                                  -            SPAN({"class": "nodeText nodeCDATA editable"}, "$object.nodeValue"),
                                  -            "]]&gt;"
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox nodeComment", _repObject: "$object", role : 'presentation'},
                                  -            "&lt;!--",
                                  -            SPAN({"class": "nodeComment editable"}, "$object.nodeValue"),
                                  -            "--&gt;"
                                  -        )
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// TextDataEditor
                                  -
                                  -/*
                                  - * TextDataEditor deals with text of comments and cdata nodes
                                  - */
                                  -
                                  -function TextDataEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -TextDataEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var node = Firebug.getRepObject(target);
                                  -        if (!node)
                                  -            return;
                                  -        target.data = value;
                                  -        node.data = value;
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -// TextNodeEditor
                                  -
                                  -/*
                                  - * TextNodeEditor deals with text nodes that do and do not have sibling elements. If
                                  - * there are no sibling elements, the parent is known as a TextElement. In other cases
                                  - * we keep track of their position via a range (this is in part because as people type
                                  - * html, the range will keep track of the text nodes and elements that the user
                                  - * is creating as they type, and this range could be in the middle of the parent
                                  - * elements children).
                                  - */
                                  -
                                  -function TextNodeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -TextNodeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -
                                  -    beginEditing: function(target, value)
                                  -    {
                                  -        var node = Firebug.getRepObject(target);
                                  -        if (!node || node instanceof Element)
                                  -            return;
                                  -        var document = node.ownerDocument;
                                  -        this.range = document.createRange();
                                  -        this.range.setStartBefore(node);
                                  -        this.range.setEndAfter(node);
                                  -    },
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        if (this.range)
                                  -        {
                                  -            this.range.detach();
                                  -            delete this.range;
                                  -        }
                                  -        // Remove empty groups by default
                                  -        return true;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var node = Firebug.getRepObject(target);
                                  -        if (!node)
                                  -            return;
                                  -        value = unescapeForTextNode(value || '');
                                  -        target.innerHTML = escapeForTextNode(value);
                                  -        if (node instanceof Element)
                                  -        {
                                  -            if (isElementMathML(node) || isElementSVG(node))
                                  -                node.textContent=value;
                                  -            else
                                  -                node.innerHTML=value;
                                  -        }
                                  -        else
                                  -        {
                                  -            try
                                  -            {
                                  -                var documentFragment = this.range.createContextualFragment(value);
                                  -                var cnl=documentFragment.childNodes.length;
                                  -                this.range.deleteContents();
                                  -                this.range.insertNode(documentFragment);
                                  -                var r = this.range, sc = r.startContainer, so = r.startOffset;
                                  -                this.range.setEnd(sc,so+cnl);
                                  -            } catch (e) {}
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//AttributeEditor
                                  -
                                  -function AttributeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -
                                  -AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var element = Firebug.getRepObject(target);
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        // XXXstr unescape value
                                  -
                                  -        target.innerHTML = escapeForElementAttribute(value);
                                  -
                                  -        if (hasClass(target, "nodeName"))
                                  -        {
                                  -            if (value != previousValue)
                                  -                element.removeAttribute(previousValue);
                                  -            if (value)
                                  -            {
                                  -                var attrValue = getNextByClass(target, "nodeValue").textContent;
                                  -                element.setAttribute(value, attrValue);
                                  -            }
                                  -            else
                                  -                element.removeAttribute(value);
                                  -        }
                                  -        else if (hasClass(target, "nodeValue"))
                                  -        {
                                  -            var attrName = getPreviousByClass(target, "nodeName").textContent;
                                  -            element.setAttribute(attrName, value);
                                  -        }
                                  -        //this.panel.markChange();
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 61 && hasClass(target, "nodeName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var emptyAttr = {nodeName: "", nodeValue: ""};
                                  -        var sibling = insertWhere == "before" ? target.previousSibling : target;
                                  -        return AttrTag.insertAfter({attr: emptyAttr}, sibling);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -//HTMLEditor
                                  -
                                  -function HTMLEditor(doc)
                                  -{
                                  - this.box = this.tag.replace({}, doc, this);
                                  - this.input = this.box.firstChild;
                                  -
                                  - this.multiLine = true;
                                  - this.tabNavigation = false;
                                  - this.arrowCompletion = false;
                                  -}
                                  -
                                  -HTMLEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  - tag: DIV(
                                  -     TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
                                  - ),
                                  -
                                  - getValue: function()
                                  - {
                                  -     return this.input.value;
                                  - },
                                  -
                                  - setValue: function(value)
                                  - {
                                  -     return this.input.value = value;
                                  - },
                                  -
                                  - show: function(target, panel, value, textSize, targetSize)
                                  - {
                                  -     this.target = target;
                                  -     this.panel = panel;
                                  -     this.editingElements = [target.repObject, null];
                                  -
                                  -     this.panel.panelNode.appendChild(this.box);
                                  -
                                  -     this.input.value = value;
                                  -     this.input.focus();
                                  -
                                  -     var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -     command.setAttribute("checked", true);
                                  - },
                                  -
                                  - hide: function()
                                  - {
                                  -     var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -     command.setAttribute("checked", false);
                                  -
                                  -     this.panel.panelNode.removeChild(this.box);
                                  -
                                  -     delete this.editingElements;
                                  -     delete this.target;
                                  -     delete this.panel;
                                  - },
                                  -
                                  - saveEdit: function(target, value, previousValue)
                                  - {
                                  -     // Remove all of the nodes in the last range we created, except for
                                  -     // the first one, because setOuterHTML will replace it
                                  -     var first = this.editingElements[0], last = this.editingElements[1];
                                  -     if (last && last != first)
                                  -     {
                                  -         for (var child = first.nextSibling; child;)
                                  -         {
                                  -             var next = child.nextSibling;
                                  -             child.parentNode.removeChild(child);
                                  -             if (child == last)
                                  -                 break;
                                  -             else
                                  -                 child = next;
                                  -         }
                                  -     }
                                  -
                                  -     // Make sure that we create at least one node here, even if it's just
                                  -     // an empty space, because this code depends on having something to replace
                                  -     if (!value)
                                  -         value = " ";
                                  -
                                  -     if (this.innerEditMode)
                                  -         this.editingElements[0].innerHTML = value;
                                  -     else
                                  -         this.editingElements = setOuterHTML(this.editingElements[0], value);
                                  - },
                                  -
                                  - endEditing: function()
                                  - {
                                  -     //this.panel.markChange();
                                  -     return true;
                                  - },
                                  -
                                  - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  - onInput: function()
                                  - {
                                  -     Firebug.Editor.update();
                                  - }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Editors
                                  -
                                  -Firebug.HTMLPanel.Editors = {
                                  -    html : HTMLEditor,
                                  -    Attribute : AttributeEditor,
                                  -    TextNode: TextNodeEditor,
                                  -    TextData: TextDataEditor
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getEmptyElementTag = function getEmptyElementTag(node)
                                  -{
                                  -    var isXhtml= isElementXHTML(node);
                                  -    if (isXhtml)
                                  -        return Firebug.HTMLPanel.XEmptyElement.tag;
                                  -    else
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -};
                                  -
                                  -// xxxpedro HTML3
                                  -var getNodeTag = function getNodeTag(node, expandAll)
                                  -{
                                  -    // TODO: xxxpedro html3 instanceof problem with different windows
                                  -    //if (node instanceof Element)
                                  -    if (instanceOf(node, "Element"))
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return getEmptyElementTag(node);
                                  -        // TODO: xxxpedro html3
                                  -        //else if (unwrapObject(node).firebugIgnore)
                                  -        else if (node.firebugIgnore)
                                  -            return null;
                                  -        else if (HTMLLib.isContainerElement(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (HTMLLib.isEmptyElement(node))
                                  -            return getEmptyElementTag(node);
                                  -        else if (Firebug.showCommentNodes && HTMLLib.hasCommentChildren(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (HTMLLib.hasNoElementChildren(node))
                                  -            return Firebug.HTMLPanel.TextElement.tag;
                                  -        else
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -    }
                                  -    else if (node instanceof Text)
                                  -        return Firebug.HTMLPanel.TextNode.tag;
                                  -    else if (node instanceof CDATASection)
                                  -        return Firebug.HTMLPanel.CDATANode.tag;
                                  -    else if (node instanceof Comment && (Firebug.showCommentNodes || expandAll))
                                  -        return Firebug.HTMLPanel.CommentNode.tag;
                                  -    else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -    else
                                  -        return FirebugReps.Nada.tag;
                                  -};
                                  -
                                  -var getNodeBoxTag = function getNodeBoxTag(nodeBox)
                                  -{
                                  -    var re = /([^\s]+)NodeBox/;
                                  -    var m = re.exec(nodeBox.className);
                                  -    if (!m)
                                  -        return null;
                                  -
                                  -    var nodeBoxType = m[1];
                                  -    if (nodeBoxType == "container")
                                  -        return Firebug.HTMLPanel.Element.tag;
                                  -    else if (nodeBoxType == "text")
                                  -        return Firebug.HTMLPanel.TextElement.tag;
                                  -    else if (nodeBoxType == "empty")
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Mutation Breakpoints
                                  -
                                  -/**
                                  - * @class Represents {@link Firebug.Debugger} listener. This listener is reponsible for
                                  - * providing a list of mutation-breakpoints into the Breakpoints side-panel.
                                  - */
                                  -Firebug.HTMLModule.DebuggerListener =
                                  -{
                                  -    getBreakpoints: function(context, groups)
                                  -    {
                                  -        if (!context.mutationBreakpoints.isEmpty())
                                  -            groups.push(context.mutationBreakpoints);
                                  -    }
                                  -};
                                  -
                                  -Firebug.HTMLModule.MutationBreakpoints =
                                  -{
                                  -    breakOnNext: function(context, breaking)
                                  -    {
                                  -        context.breakOnNextMutate = breaking;
                                  -    },
                                  -
                                  -    breakOnNextMutate: function(event, context, type)
                                  -    {
                                  -        if (!context.breakOnNextMutate)
                                  -            return false;
                                  -
                                  -        // Ignore changes in trees marked with firebugIgnore.
                                  -        if (isAncestorIgnored(event.target))
                                  -            return false;
                                  -
                                  -        context.breakOnNextMutate = false;
                                  -
                                  -        this.breakWithCause(event, context, type);
                                  -    },
                                  -
                                  -    breakWithCause: function(event, context, type)
                                  -    {
                                  -        var changeLabel = Firebug.HTMLModule.BreakpointRep.getChangeLabel({type: type});
                                  -        context.breakingCause = {
                                  -            title: $STR("net.Break On Mutate"),
                                  -            message: changeLabel,
                                  -            type: event.type,
                                  -            target: event.target,
                                  -            relatedNode: event.relatedNode, // http://www.w3.org/TR/DOM-Level-2-Events/events.html
                                  -            prevValue: event.prevValue,
                                  -            newValue: event.newValue,
                                  -            attrName: event.attrName,
                                  -            attrChange: event.attrChange
                                  -        };
                                  -
                                  -        Firebug.Breakpoint.breakNow(context.getPanel("html", true));
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Mutation event handlers.
                                  -
                                  -    onMutateAttr: function(event, context)
                                  -    {
                                  -        if (this.breakOnNextMutate(event, context, BP_BREAKONATTRCHANGE))
                                  -            return;
                                  -
                                  -        var breakpoints = context.mutationBreakpoints;
                                  -        var self = this;
                                  -        breakpoints.enumerateBreakpoints(function(bp) {
                                  -            if (bp.checked && bp.node == event.target && bp.type == BP_BREAKONATTRCHANGE) {
                                  -                self.breakWithCause(event, context, BP_BREAKONATTRCHANGE);
                                  -                return true;
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    onMutateText: function(event, context)
                                  -    {
                                  -        if (this.breakOnNextMutate(event, context, BP_BREAKONTEXT))
                                  -            return;
                                  -    },
                                  -
                                  -    onMutateNode: function(event, context)
                                  -    {
                                  -        var node = event.target;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -
                                  -        if (this.breakOnNextMutate(event, context, removal ? BP_BREAKONREMOVE : BP_BREAKONCHILDCHANGE))
                                  -            return;
                                  -
                                  -        var breakpoints = context.mutationBreakpoints;
                                  -        var breaked = false;
                                  -
                                  -        if (removal)
                                  -        {
                                  -            var self = this;
                                  -            breaked = breakpoints.enumerateBreakpoints(function(bp) {
                                  -                if (bp.checked && bp.node == node && bp.type == BP_BREAKONREMOVE) {
                                  -                    self.breakWithCause(event, context, BP_BREAKONREMOVE);
                                  -                    return true;
                                  -                }
                                  -            });
                                  -        }
                                  -
                                  -        if (!breaked)
                                  -        {
                                  -            // Collect all parents of the mutated node.
                                  -            var parents = [];
                                  -            for (var parent = node.parentNode; parent; parent = parent.parentNode)
                                  -                parents.push(parent);
                                  -
                                  -            // Iterate over all parents and see if some of them has a breakpoint.
                                  -            var self = this;
                                  -            breakpoints.enumerateBreakpoints(function(bp) {
                                  -                for (var i=0; i<parents.length; i++) {
                                  -                    if (bp.checked && bp.node == parents[i] && bp.type == BP_BREAKONCHILDCHANGE) {
                                  -                        self.breakWithCause(event, context, BP_BREAKONCHILDCHANGE);
                                  -                        return true;
                                  -                    }
                                  -                }
                                  -            });
                                  -        }
                                  -
                                  -        if (removal)
                                  -        {
                                  -            // Remove all breakpoints assocaited with removed node.
                                  -            var invalidate = false;
                                  -            breakpoints.enumerateBreakpoints(function(bp) {
                                  -                if (bp.node == node) {
                                  -                    breakpoints.removeBreakpoint(bp);
                                  -                    invalidate = true;
                                  -                }
                                  -            });
                                  -
                                  -            if (invalidate)
                                  -                context.invalidatePanels("breakpoints");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Context menu items
                                  -
                                  -    getContextMenuItems: function(context, node, target, items)
                                  -    {
                                  -        if (!(node && node.nodeType == 1))
                                  -            return;
                                  -
                                  -        var breakpoints = context.mutationBreakpoints;
                                  -
                                  -        var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -        if (getAncestorByClass(target, "nodeAttr"))
                                  -        {
                                  -        }
                                  -
                                  -        if (!(nonEditableTags.hasOwnProperty(node.localName)))
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "html.label.Break On Attribute Change",
                                  -                    type: "checkbox",
                                  -                    checked: breakpoints.findBreakpoint(node, BP_BREAKONATTRCHANGE),
                                  -                    command: bindFixed(this.onModifyBreakpoint, this, context, node,
                                  -                        BP_BREAKONATTRCHANGE)},
                                  -                {label: "html.label.Break On Child Addition or Removal",
                                  -                    type: "checkbox",
                                  -                    checked: breakpoints.findBreakpoint(node, BP_BREAKONCHILDCHANGE),
                                  -                    command: bindFixed(this.onModifyBreakpoint, this, context, node,
                                  -                        BP_BREAKONCHILDCHANGE)},
                                  -                {label: "html.label.Break On Element Removal",
                                  -                    type: "checkbox",
                                  -                    checked: breakpoints.findBreakpoint(node, BP_BREAKONREMOVE),
                                  -                    command: bindFixed(this.onModifyBreakpoint, this, context, node,
                                  -                        BP_BREAKONREMOVE)}
                                  -            );
                                  -        }
                                  -    },
                                  -
                                  -    onModifyBreakpoint: function(context, node, type)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.onModifyBreakpoint " + getElementXPath(node));
                                  -
                                  -        var breakpoints = context.mutationBreakpoints;
                                  -        var bp = breakpoints.findBreakpoint(node, type);
                                  -
                                  -        // Remove an existing or create new breakpoint.
                                  -        if (bp)
                                  -            breakpoints.removeBreakpoint(bp);
                                  -        else
                                  -            context.mutationBreakpoints.addBreakpoint(node, type);
                                  -    }
                                  -};
                                  -
                                  -Firebug.HTMLModule.Breakpoint = function(node, type)
                                  -{
                                  -    this.node = node;
                                  -    this.xpath = getElementXPath(node);
                                  -    this.checked = true;
                                  -    this.type = type;
                                  -};
                                  -
                                  -Firebug.HTMLModule.BreakpointRep = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    tag:
                                  -        DIV({"class": "breakpointRow focusRow", _repObject: "$bp",
                                  -            role: "option", "aria-checked": "$bp.checked"},
                                  -            DIV({"class": "breakpointBlockHead", onclick: "$onEnable"},
                                  -                INPUT({"class": "breakpointCheckbox", type: "checkbox",
                                  -                    _checked: "$bp.checked", tabindex : "-1"}),
                                  -                TAG("$bp.node|getNodeTag", {object: "$bp.node"}),
                                  -                DIV({"class": "breakpointMutationType"}, "$bp|getChangeLabel"),
                                  -                IMG({"class": "closeButton", src: "blank.gif", onclick: "$onRemove"})
                                  -            ),
                                  -            DIV({"class": "breakpointCode"},
                                  -                TAG("$bp.node|getSourceLine", {object: "$bp.node"})
                                  -            )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        var rep = Firebug.getRep(node);
                                  -        return rep.shortTag ? rep.shortTag : rep.tag;
                                  -    },
                                  -
                                  -    getSourceLine: function(node)
                                  -    {
                                  -        return getNodeTag(node, false);
                                  -    },
                                  -
                                  -    getChangeLabel: function(bp)
                                  -    {
                                  -        switch (bp.type)
                                  -        {
                                  -        case BP_BREAKONATTRCHANGE:
                                  -            return $STR("html.label.Break On Attribute Change");
                                  -        case BP_BREAKONCHILDCHANGE:
                                  -            return $STR("html.label.Break On Child Addition or Removal");
                                  -        case BP_BREAKONREMOVE:
                                  -            return $STR("html.label.Break On Element Removal");
                                  -        case BP_BREAKONTEXT:
                                  -            return $STR("html.label.Break On Text Change");
                                  -        }
                                  -
                                  -        return "";
                                  -    },
                                  -
                                  -    onRemove: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var bpPanel = Firebug.getElementPanel(event.target);
                                  -        var context = bpPanel.context;
                                  -        var htmlPanel = context.getPanel("html");
                                  -
                                  -        if (hasClass(event.target, "closeButton"))
                                  -        {
                                  -            // Remove from list of breakpoints.
                                  -            var row = getAncestorByClass(event.target, "breakpointRow");
                                  -            context.mutationBreakpoints.removeBreakpoint(row.repObject);
                                  -
                                  -            // Remove from the UI.
                                  -            bpPanel.noRefresh = true;
                                  -            bpPanel.removeRow(row);
                                  -            bpPanel.noRefresh = false;
                                  -        }
                                  -    },
                                  -
                                  -    onEnable: function(event)
                                  -    {
                                  -        var checkBox = event.target;
                                  -        if (hasClass(checkBox, "breakpointCheckbox"))
                                  -        {
                                  -            var bp = getAncestorByClass(checkBox, "breakpointRow").repObject;
                                  -            bp.checked = checkBox.checked;
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof Firebug.HTMLModule.Breakpoint;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -function MutationBreakpointGroup()
                                  -{
                                  -    this.breakpoints = [];
                                  -}
                                  -
                                  -MutationBreakpointGroup.prototype = extend(new Firebug.Breakpoint.BreakpointGroup(),
                                  -{
                                  -    name: "mutationBreakpoints",
                                  -    title: $STR("html.label.HTML Breakpoints"),
                                  -
                                  -    addBreakpoint: function(node, type)
                                  -    {
                                  -        this.breakpoints.push(new Firebug.HTMLModule.Breakpoint(node, type));
                                  -    },
                                  -
                                  -    matchBreakpoint: function(bp, args)
                                  -    {
                                  -        var node = args[0];
                                  -        var type = args[1];
                                  -        return (bp.node == node) && (!bp.type || bp.type == type);
                                  -    },
                                  -
                                  -    removeBreakpoint: function(bp)
                                  -    {
                                  -        remove(this.breakpoints, bp);
                                  -    },
                                  -
                                  -    // Persistence
                                  -    load: function(context)
                                  -    {
                                  -        var panelState = getPersistedState(context, "html");
                                  -        if (panelState.breakpoints)
                                  -            this.breakpoints = panelState.breakpoints;
                                  -
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            var elts = getElementsByXPath(context.window.document, bp.xpath);
                                  -            bp.node = elts && elts.length ? elts[0] : null;
                                  -        });
                                  -    },
                                  -
                                  -    store: function(context)
                                  -    {
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            bp.node = null;
                                  -        });
                                  -
                                  -        var panelState = getPersistedState(context, "html");
                                  -        panelState.breakpoints = this.breakpoints;
                                  -    },
                                  -});
                                  -/**/
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerPanel(Firebug.HTMLPanel);
                                  -Firebug.registerModule(Firebug.HTMLModule);
                                  -// TODO: xxxpedro html3
                                  -//Firebug.registerRep(Firebug.HTMLModule.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/temp/inspector2.js b/branches/flexBox/content/lite/temp/inspector2.js
                                  deleted file mode 100644
                                  index 1ad2b0b6..00000000
                                  --- a/branches/flexBox/content/lite/temp/inspector2.js
                                  +++ /dev/null
                                  @@ -1,825 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -const inspectDelay = 100;
                                  -
                                  -const edgeSize = 2;
                                  -
                                  -const defaultPrimaryPanel = "html";
                                  -const defaultSecondaryPanel = "dom";
                                  -
                                  -var highlightCSS = "chrome://firebug/content/highlighter.css";
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var boxModelHighlighter = null;
                                  -var frameHighlighter = null;
                                  -var popupHighlighter = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Inspector = extend(Firebug.Module,
                                  -{
                                  -    inspecting: false,
                                  -
                                  -    highlightObject: function(element, context, highlightType, boxFrame)
                                  -    {
                                  -        if (!element || !isElement(element) || !isVisible(element))
                                  -            element = null;
                                  -
                                  -        if (element && context && context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        var highlighter = highlightType ? getHighlighter(highlightType) : this.defaultHighlighter;
                                  -
                                  -        var oldContext = this.highlightedContext;
                                  -        if (oldContext && highlighter != this.highlighter)
                                  -        {
                                  -            if (oldContext.window)
                                  -                this.highlighter.unhighlight(oldContext);
                                  -        }
                                  -
                                  -        this.highlighter = highlighter;
                                  -        this.highlightedElement = element;
                                  -        this.highlightedContext = context;
                                  -
                                  -        if (element)
                                  -        {
                                  -            if (context && context.window && context.window.document)
                                  -                highlighter.highlight(context, element, boxFrame);
                                  -        }
                                  -        else if (oldContext)
                                  -        {
                                  -            oldContext.highlightTimeout = oldContext.setTimeout(function()
                                  -            {
                                  -                delete oldContext.highlightTimeout;
                                  -                if (oldContext.window && oldContext.window.document)
                                  -                    highlighter.unhighlight(oldContext);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    toggleInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -        else
                                  -            this.startInspecting(context);
                                  -    },
                                  -
                                  -    startInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting || !context || !context.loaded)
                                  -            return;
                                  -
                                  -        this.inspecting = true;
                                  -        this.inspectingContext = context;
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "true");
                                  -        this.attachInspectListeners(context);
                                  -
                                  -        // Remember the previous panel and bar state so we can revert if the user cancels
                                  -        this.previousPanelName = context.panelName;
                                  -        this.previousSidePanelName = context.sidePanelName;
                                  -        this.previouslyCollapsed = $("fbContentBox").collapsed;
                                  -        this.previouslyFocused = context.detached && context.chrome.isFocused();
                                  -
                                  -        var htmlPanel = context.chrome.selectPanel("html");
                                  -        this.previousObject = htmlPanel.selection;
                                  -
                                  -        if (context.detached)
                                  -            FirebugChrome.focus();
                                  -        else
                                  -            Firebug.showBar(true);
                                  -
                                  -        htmlPanel.panelNode.focus();
                                  -        htmlPanel.startInspecting();
                                  -
                                  -        if (context.hoverNode)
                                  -            this.inspectNode(context.hoverNode);
                                  -    },
                                  -
                                  -    inspectNode: function(node)
                                  -    {
                                  -        if (node && node.nodeType != 1)
                                  -            node = node.parentNode;
                                  -
                                  -        if (node && node.firebugIgnore)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.highlightObject(node, context, "frame");
                                  -
                                  -        this.inspectingNode = node;
                                  -
                                  -        if (node)
                                  -        {
                                  -            this.inspectTimeout = context.setTimeout(function()
                                  -            {
                                  -                // TODO: xxxpedro
                                  -                //if (context.chrome)
                                  -                //    context.chrome.select(node);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(cancelled, waitForClick)
                                  -    {
                                  -        if (!this.inspecting)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.detachInspectListeners(context);
                                  -        if (!waitForClick)
                                  -            this.detachClickInspectListeners(context.window);
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "false");
                                  -
                                  -        this.inspecting = false;
                                  -
                                  -        var htmlPanel = context.getPanel("html");
                                  -
                                  -        if (this.previouslyFocused)
                                  -            context.chrome.focus();
                                  -
                                  -        if (cancelled)
                                  -        {
                                  -            if (this.previouslyCollapsed)
                                  -                Firebug.showBar(false);
                                  -
                                  -            if (this.previousPanelName == "html")
                                  -                context.chrome.select(this.previousObject);
                                  -            else
                                  -                context.chrome.selectPanel(this.previousPanelName, this.previousSidePanelName);
                                  -        }
                                  -        else
                                  -        {
                                  -            context.chrome.select(htmlPanel.selection);
                                  -            context.chrome.getSelectedPanel().panelNode.focus();
                                  -        }
                                  -
                                  -        htmlPanel.stopInspecting(htmlPanel.selection, cancelled);
                                  -
                                  -        this.inspectNode(null);
                                  -
                                  -        delete this.previousObject;
                                  -        delete this.previousPanelName;
                                  -        delete this.previousSidePanelName;
                                  -        delete this.inspectingContext;
                                  -    },
                                  -
                                  -    inspectNodeBy: function(dir)
                                  -    {
                                  -        var target;
                                  -        var node = this.inspectingNode;
                                  -
                                  -        if (dir == "up")
                                  -            target = this.inspectingContext.chrome.getNextObject();
                                  -        else if (dir == "down")
                                  -        {
                                  -            target = this.inspectingContext.chrome.getNextObject(true);
                                  -            if (node && !target)
                                  -            {
                                  -                if (node.contentDocument)
                                  -                    target = node.contentDocument.documentElement;
                                  -                else
                                  -                    target = getNextElement(node.firstChild);
                                  -            }
                                  -        }
                                  -
                                  -        if (target && isElement(target))
                                  -            this.inspectNode(target);
                                  -        else
                                  -            beep();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        this.keyListeners =
                                  -        [
                                  -            chrome.keyCodeListen("RETURN", null, bindFixed(this.stopInspecting, this)),
                                  -            chrome.keyCodeListen("ESCAPE", null, bindFixed(this.stopInspecting, this, true)),
                                  -            chrome.keyCodeListen("UP", isControl, bindFixed(this.inspectNodeBy, this, "up"), true),
                                  -            chrome.keyCodeListen("DOWN", isControl, bindFixed(this.inspectNodeBy, this, "down"), true),
                                  -        ];
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.addEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.addEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -            subWin.document.addEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        if (this.keyListeners)  // XXXjjb for some reason this is null some times.
                                  -        {
                                  -            for (var i = 0; i < this.keyListeners.length; ++i)
                                  -                chrome.keyIgnore(this.keyListeners[i]);
                                  -            delete this.keyListeners;
                                  -        }
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.removeEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachClickInspectListeners: function(win)
                                  -    {
                                  -        // We have to remove the click listener in a second phase because if we remove it
                                  -        // after the mousedown, we won't be able to cancel clicked links
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInspectingMouseOver: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.inspectNode(event.target);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingMouseDown: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.stopInspecting(false, true);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingClick: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.dumpEvent("onInspecting event", event);
                                  -        var win = event.currentTarget.defaultView;
                                  -        if (win)
                                  -        {
                                  -            win = getRootWindow(win);
                                  -            this.detachClickInspectListeners(win);
                                  -        }
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onInspectingMouseOver = bind(this.onInspectingMouseOver, this);
                                  -        this.onInspectingMouseDown = bind(this.onInspectingMouseDown, this);
                                  -        this.onInspectingClick = bind(this.onInspectingClick, this);
                                  -
                                  -        highlightCSS = Env.Location.sourceDir + "firebug/highlighter.css"; 
                                  -        this.inspectingContext = Firebug.browser.window;
                                  -        //this.updateOption("shadeBoxModel", Firebug.shadeBoxModel);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.onPreInspectMouseOver = function(event) { context.hoverNode = event.target; };
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        if (context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        win.addEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try {
                                  -            win.removeEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -        } catch (ex) {
                                  -            // Get unfortunate errors here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -        }
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -
                                  -        if (browser)
                                  -        {
                                  -            var disabled = !context || !context.loaded;
                                  -            browser.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -        }
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        var chrome = browser.chrome;
                                  -        var disabled = !panel || !panel.context.loaded;
                                  -        chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", disabled);
                                  -        chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", "false");
                                  -        context.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", "false");
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "shadeBoxModel")
                                  -        {
                                  -            this.highlightObject(null);
                                  -            this.defaultHighlighter = value ? getHighlighter("boxModel") : getHighlighter("frame");
                                  -        }
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -        var styleSheet = getStyleSheetByHref(url, context);
                                  -        if (styleSheet)
                                  -            return styleSheet;
                                  -
                                  -        /*var path = getURLPath(url);
                                  -        var xpath = "//*[contains(@src, '" + path + "')]";
                                  -        var elements = getElementsByXPath(context.window.document, xpath);
                                  -        if (elements.length)
                                  -            return elements[0];*/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getHighlighter(type)
                                  -{
                                  -    if (type == "boxModel")
                                  -    {
                                  -        if (!boxModelHighlighter)
                                  -            boxModelHighlighter = new BoxModelHighlighter();
                                  -
                                  -        return boxModelHighlighter;
                                  -    }
                                  -    else if (type == "frame")
                                  -    {
                                  -        if (!frameHighlighter)
                                  -            frameHighlighter = new FrameHighlighter();
                                  -
                                  -        return frameHighlighter;
                                  -    }
                                  -    else if (type == "popup")
                                  -    {
                                  -        if (!popupHighlighter)
                                  -            popupHighlighter = new PopupHighlighter();
                                  -
                                  -        return popupHighlighter;
                                  -    }
                                  -}
                                  -
                                  -function pad(element, t, r, b, l)
                                  -{
                                  -    element.style.padding = Math.abs(t) + "px " + Math.abs(r) + "px "
                                  -        + Math.abs(b) + "px " + Math.abs(l) + "px";
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function FrameHighlighter()
                                  -{
                                  -}
                                  -
                                  -FrameHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        //if (element instanceof XULElement)
                                  -        //    return;
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x, y = offset.y;
                                  -        var w = element.offsetWidth, h = element.offsetHeight;
                                  -        if (FBTrace.DBG_INSPECT)
                                  -                FBTrace.sysout("FrameHighlighter HTML tag:"+element.tagName,"x:"+x+" y:"+y+" w:"+w+" h:"+h);
                                  -
                                  -        var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
                                  -        if (FBTrace.DBG_INSPECT && wacked)
                                  -            FBTrace.sysout("FrameHighlighter.highlight has bad boxObject for ", element.tagName);
                                  -        if (wacked)
                                  -            return;
                                  -
                                  -        var nodes = this.getNodes(context, element);
                                  -
                                  -        move(nodes.top, x, y-edgeSize);
                                  -        resize(nodes.top, w, edgeSize);
                                  -
                                  -        move(nodes.right, x+w, y-edgeSize);
                                  -        resize(nodes.right, edgeSize, h+edgeSize*2);
                                  -
                                  -        move(nodes.bottom, x, y+h);
                                  -        resize(nodes.bottom, w, edgeSize);
                                  -
                                  -        move(nodes.left, x-edgeSize, y-edgeSize);
                                  -        resize(nodes.left, edgeSize, h+edgeSize*2);
                                  -        if (FBTrace.DBG_INSPECT)                                                                            /*@explore*/
                                  -            FBTrace.sysout("FrameHighlighter ", element.tagName);                                            /*@explore*/
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument;
                                  -        if (needsAppend)
                                  -        {
                                  -            if (FBTrace.DBG_INSPECT)                                                                        /*@explore*/
                                  -                FBTrace.sysout("FrameHighlighter needsAppend", nodes.top.ownerDocument.documentURI+" !?= "+body.ownerDocument.documentURI); /*@explore*/
                                  -            attachStyles(context, body);
                                  -            for (var edge in nodes)
                                  -            {
                                  -                try
                                  -                {
                                  -                    body.appendChild(nodes[edge]);
                                  -                }
                                  -                catch(exc)
                                  -                {
                                  -                    if (FBTrace.DBG_INSPECT)                                                                              /*@explore*/
                                  -                        FBTrace.dumpProperties("inspector.FrameHighlighter.highlight FAILS", exc);                     /*@explore*/
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.sysout("FrameHighlighter unhightlight", context.window.location);
                                  -        var nodes = this.getNodes(context);
                                  -        var body = nodes.top.parentNode;
                                  -        if (body)
                                  -        {
                                  -            for (var edge in nodes)
                                  -                body.removeChild(nodes[edge]);
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.frameHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -
                                  -            function createEdge(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugHighlight";
                                  -                return div;
                                  -            }
                                  -
                                  -            context.frameHighlighter =
                                  -            {
                                  -                top: createEdge("Top"),
                                  -                right: createEdge("Right"),
                                  -                bottom: createEdge("Bottom"),
                                  -                left: createEdge("Left")
                                  -            };
                                  -        }
                                  -
                                  -        return context.frameHighlighter;
                                  -    }
                                  -};
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function PopupHighlighter()
                                  -{
                                  -}
                                  -
                                  -PopupHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        var doc = context.window.document;
                                  -        var popup = doc.getElementById("inspectorPopup");
                                  -        popup.style.width = "200px";
                                  -        popup.style.height = "100px";
                                  -        popup.showPopup(element, element.boxObject.screenX,
                                  -            element.boxObject.screenY, "popup", "none", "none");
                                  -        if (FBTrace.DBG_INSPECT)
                                  -        {
                                  -            FBTrace.sysout("PopupHighlighter for "+element.tagName, " at ("+element.boxObject.screenX+","+element.boxObject.screenY+")");
                                  -            FBTrace.dumpProperties("PopupHighlighter popup=", popup);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -    }
                                  -};
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function BoxModelHighlighter()
                                  -{
                                  -}
                                  -
                                  -BoxModelHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element, boxFrame)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        var highlightFrame = boxFrame ? nodes[boxFrame] : null;
                                  -
                                  -        if (context.highlightFrame)
                                  -            removeClass(context.highlightFrame, "firebugHighlightBox");
                                  -
                                  -        context.highlightFrame = highlightFrame;
                                  -
                                  -        if (highlightFrame)
                                  -        {
                                  -            setClass(nodes.offset, "firebugHighlightGroup");
                                  -            setClass(highlightFrame, "firebugHighlightBox");
                                  -        }
                                  -        else
                                  -            removeClass(nodes.offset, "firebugHighlightGroup");
                                  -
                                  -        var win = element.ownerDocument.defaultView;
                                  -        if (!win)
                                  -            return;
                                  -
                                  -        var offsetParent = element.offsetParent;
                                  -        if (!offsetParent)
                                  -            return;
                                  -
                                  -        var parentStyle = win.getComputedStyle(offsetParent, "");
                                  -        var parentOffset = getViewOffset(offsetParent, true);
                                  -        var parentX = parentOffset.x + parseInt(parentStyle.borderLeftWidth);
                                  -        var parentY = parentOffset.y + parseInt(parentStyle.borderTopWidth);
                                  -        var parentW = offsetParent.offsetWidth-1;
                                  -        var parentH = offsetParent.offsetHeight-1;
                                  -
                                  -        var style = win.getComputedStyle(element, "");
                                  -        var styles = readBoxStyles(style);
                                  -
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x - Math.abs(styles.marginLeft);
                                  -        var y = offset.y - Math.abs(styles.marginTop);
                                  -        var w = element.offsetWidth - (styles.paddingLeft + styles.paddingRight
                                  -                + styles.borderLeft + styles.borderRight);
                                  -        var h = element.offsetHeight - (styles.paddingTop + styles.paddingBottom
                                  -                + styles.borderTop + styles.borderBottom);
                                  -
                                  -        move(nodes.offset, x, y);
                                  -        pad(nodes.margin, styles.marginTop, styles.marginRight, styles.marginBottom,
                                  -                styles.marginLeft);
                                  -        pad(nodes.border, styles.borderTop, styles.borderRight, styles.borderBottom,
                                  -                styles.borderLeft);
                                  -        pad(nodes.padding, styles.paddingTop, styles.paddingRight, styles.paddingBottom,
                                  -                styles.paddingLeft);
                                  -        resize(nodes.content, w, h);
                                  -
                                  -        var showLines = Firebug.showRulers && boxFrame;
                                  -        if (showLines)
                                  -        {
                                  -            move(nodes.parent, parentX, parentY);
                                  -            resize(nodes.parent, parentW, parentH);
                                  -
                                  -            if (parentX < 14)
                                  -                setClass(nodes.parent, "overflowRulerX");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerX");
                                  -
                                  -            if (parentY < 14)
                                  -                setClass(nodes.parent, "overflowRulerY");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerY");
                                  -
                                  -            var left = x;
                                  -            var top = y;
                                  -            var width = w-1;
                                  -            var height = h-1;
                                  -
                                  -            if (boxFrame == "content")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft)
                                  -                    + Math.abs(styles.paddingLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop)
                                  -                    + Math.abs(styles.paddingTop);
                                  -            }
                                  -            else if (boxFrame == "padding")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom);
                                  -            }
                                  -            else if (boxFrame == "border")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft);
                                  -                top += Math.abs(styles.marginTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom);
                                  -            }
                                  -            else if (boxFrame == "margin")
                                  -            {
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight)
                                  -                     + Math.abs(styles.marginLeft) + Math.abs(styles.marginRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom)
                                  -                    + Math.abs(styles.marginTop) + Math.abs(styles.marginBottom);
                                  -            }
                                  -
                                  -            move(nodes.lines.top, 0, top);
                                  -            move(nodes.lines.right, left+width, 0);
                                  -            move(nodes.lines.bottom, 0, top+height);
                                  -            move(nodes.lines.left, left, 0)
                                  -        }
                                  -
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.offset.parentNode
                                  -            || nodes.offset.parentNode.ownerDocument != body.ownerDocument;
                                  -
                                  -        if (needsAppend)
                                  -        {
                                  -            attachStyles(context, body);
                                  -            body.appendChild(nodes.offset);
                                  -        }
                                  -
                                  -        if (showLines)
                                  -        {
                                  -            if (!nodes.lines.top.parentNode)
                                  -            {
                                  -                body.appendChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.appendChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -        else if (nodes.lines.top.parentNode)
                                  -        {
                                  -            body.removeChild(nodes.parent);
                                  -
                                  -            for (var line in nodes.lines)
                                  -                body.removeChild(nodes.lines[line]);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        if (nodes.offset.parentNode)
                                  -        {
                                  -            var body = nodes.offset.parentNode;
                                  -            body.removeChild(nodes.offset);
                                  -
                                  -            if (nodes.lines.top.parentNode)
                                  -            {
                                  -                body.removeChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.removeChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.boxModelHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -            if (FBTrace.DBG_ERRORS && !doc) FBTrace.dumpStack("inspector getNodes no document for window:"+window.location);
                                  -
                                  -            function createRuler(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugRuler firebugRuler"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createBox(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutBox firebugLayoutBox"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createLine(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutLine firebugLayoutLine"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            var nodes = context.boxModelHighlighter =
                                  -            {
                                  -                parent: createBox("Parent"),
                                  -                rulerH: createRuler("H"),
                                  -                rulerV: createRuler("V"),
                                  -                offset: createBox("Offset"),
                                  -                margin: createBox("Margin"),
                                  -                border: createBox("Border"),
                                  -                padding: createBox("Padding"),
                                  -                content: createBox("Content"),
                                  -                lines: {
                                  -                    top: createLine("Top"),
                                  -                    right: createLine("Right"),
                                  -                    bottom: createLine("Bottom"),
                                  -                    left: createLine("Left")
                                  -                }
                                  -            };
                                  -
                                  -            nodes.parent.appendChild(nodes.rulerH);
                                  -            nodes.parent.appendChild(nodes.rulerV);
                                  -            nodes.offset.appendChild(nodes.margin);
                                  -            nodes.margin.appendChild(nodes.border);
                                  -            nodes.border.appendChild(nodes.padding);
                                  -            nodes.padding.appendChild(nodes.content);
                                  -        }
                                  -
                                  -        return context.boxModelHighlighter;
                                  -    }
                                  -};
                                  -
                                  -var getNonFrameBody = function getNonFrameBody(elt)
                                  -{
                                  -    var body = getBody(elt.ownerDocument);
                                  -    return body.localName.toUpperCase() == "FRAMESET" ? null : body;
                                  -}
                                  -
                                  -var attachStyles = function attachStyles(context, body)
                                  -{
                                  -    var doc = body.ownerDocument;
                                  -    if (!context.highlightStyle)
                                  -        context.highlightStyle = createStyleSheet(doc, highlightCSS);
                                  -
                                  -    if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc)
                                  -        addStyleSheet(body.ownerDocument, context.highlightStyle);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Inspector);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/branches/flexBox/content/lite/trace.js b/branches/flexBox/content/lite/trace.js
                                  deleted file mode 100644
                                  index f081373b..00000000
                                  --- a/branches/flexBox/content/lite/trace.js
                                  +++ /dev/null
                                  @@ -1,180 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1,
                                  -    DBG_CSS: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.panelNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().panelNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/tracePanel.js b/branches/flexBox/content/lite/tracePanel.js
                                  deleted file mode 100644
                                  index 560f475d..00000000
                                  --- a/branches/flexBox/content/lite/tracePanel.js
                                  +++ /dev/null
                                  @@ -1,72 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        this.clearButton.shutdown();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/content/lite/xhr.js b/branches/flexBox/content/lite/xhr.js
                                  deleted file mode 100644
                                  index 681a6a3b..00000000
                                  --- a/branches/flexBox/content/lite/xhr.js
                                  +++ /dev/null
                                  @@ -1,543 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -if (Env.Options.disableXHRListener)
                                  -    return;
                                  -
                                  -// ************************************************************************************************
                                  -// XHRSpy
                                  -    
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// XMLHttpRequestWrapper
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal variables
                                  -    
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper internal methods
                                  -    
                                  -    var updateSelfPropertiesIgnore = {
                                  -        abort: 1,
                                  -        channel: 1,
                                  -        getAllResponseHeaders: 1,
                                  -        getInterface: 1,
                                  -        getResponseHeader: 1,
                                  -        mozBackgroundRequest: 1,
                                  -        multipart: 1,
                                  -        onreadystatechange: 1,
                                  -        open: 1,
                                  -        send: 1,
                                  -        setRequestHeader: 1
                                  -    };
                                  -    
                                  -    var updateSelfProperties = function()
                                  -    {
                                  -        if (supportsXHRIterator)
                                  -        {
                                  -            for (var propName in xhrRequest)
                                  -            {
                                  -                if (propName in updateSelfPropertiesIgnore)
                                  -                    continue;
                                  -                
                                  -                try
                                  -                {
                                  -                    var propValue = xhrRequest[propName];
                                  -                    
                                  -                    if (propValue && !isFunction(propValue))
                                  -                        self[propName] = propValue;
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    //console.log(propName, E.message);
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // will fail to read these xhrRequest properties if the request is not completed
                                  -            if (xhrRequest.readyState == 4)
                                  -            {
                                  -                self.status = xhrRequest.status;
                                  -                self.statusText = xhrRequest.statusText;
                                  -                self.responseText = xhrRequest.responseText;
                                  -                self.responseXML = xhrRequest.responseXML;
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var updateXHRPropertiesIgnore = {
                                  -        channel: 1,
                                  -        onreadystatechange: 1,
                                  -        readyState: 1,
                                  -        responseBody: 1,
                                  -        responseText: 1,
                                  -        responseXML: 1,
                                  -        status: 1,
                                  -        statusText: 1,
                                  -        upload: 1
                                  -    };
                                  -    
                                  -    var updateXHRProperties = function()
                                  -    {
                                  -        for (var propName in self)
                                  -        {
                                  -            if (propName in updateXHRPropertiesIgnore)
                                  -                continue;
                                  -            
                                  -            try
                                  -            {
                                  -                var propValue = self[propName];
                                  -                
                                  -                if (propValue && !xhrRequest[propName])
                                  -                {
                                  -                    xhrRequest[propName] = propValue;
                                  -                }
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                //console.log(propName, E.message);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var logXHR = function() 
                                  -    {
                                  -        var row = Firebug.Console.log(spy, null, "spy", Firebug.Spy.XHR);
                                  -        
                                  -        if (row)
                                  -        {
                                  -            setClass(row, "loading");
                                  -            spy.logRow = row;
                                  -        }
                                  -    };
                                  -    
                                  -    var finishXHR = function() 
                                  -    {
                                  -        var duration = new Date().getTime() - reqStartTS;
                                  -        var success = xhrRequest.status == 200;
                                  -        
                                  -        var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -        var responses = responseHeadersText ? responseHeadersText.split(/[\n\r]/) : [];
                                  -        var reHeader = /^(\S+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, l=responses.length; i<l; i++)
                                  -        {
                                  -            var text = responses[i];
                                  -            var match = text.match(reHeader);
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var name = match[1];
                                  -                var value = match[2];
                                  -                
                                  -                // update the spy mimeType property so we can detect when to show 
                                  -                // custom response viewers (such as HTML, XML or JSON viewer)
                                  -                if (name == "Content-Type")
                                  -                    spy.mimeType = value;
                                  -                
                                  -                /*
                                  -                if (name == "Last Modified")
                                  -                {
                                  -                    if (!spy.cacheEntry)
                                  -                        spy.cacheEntry = [];
                                  -                    
                                  -                    spy.cacheEntry.push({
                                  -                       name: [name],
                                  -                       value: [value]
                                  -                    });
                                  -                }
                                  -                /**/
                                  -                
                                  -                spy.responseHeaders.push({
                                  -                   name: [name],
                                  -                   value: [value]
                                  -                });
                                  -            }
                                  -        }
                                  -            
                                  -        with({
                                  -            row: spy.logRow, 
                                  -            status: xhrRequest.status == 0 ? 
                                  -                        // if xhrRequest.status == 0 then accessing xhrRequest.statusText
                                  -                        // will cause an error, so we must handle this case (Issue 3504)
                                  -                        "" : xhrRequest.status + " " + xhrRequest.statusText, 
                                  -            time: duration,
                                  -            success: success
                                  -        })
                                  -        {
                                  -            setTimeout(function(){
                                  -                
                                  -                spy.responseText = xhrRequest.responseText;
                                  -                
                                  -                // update row information to avoid "ethernal spinning gif" bug in IE 
                                  -                row = row || spy.logRow;
                                  -                
                                  -                // if chrome document is not loaded, there will be no row yet, so just ignore
                                  -                if (!row) return;
                                  -                
                                  -                // update the XHR representation data
                                  -                handleRequestStatus(success, status, time);
                                  -                
                                  -            },200);
                                  -        }
                                  -        
                                  -        spy.loaded = true;
                                  -        /*
                                  -        // commented because they are being updated by the updateSelfProperties() function
                                  -        self.status = xhrRequest.status;
                                  -        self.statusText = xhrRequest.statusText;
                                  -        self.responseText = xhrRequest.responseText;
                                  -        self.responseXML = xhrRequest.responseXML;
                                  -        /**/
                                  -        updateSelfProperties();
                                  -    };
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log(["onreadystatechange", xhrRequest.readyState, xhrRequest.readyState == 4 && xhrRequest.status]);
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            finishXHR();
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    // update the XHR representation data
                                  -    var handleRequestStatus = function(success, status, time)
                                  -    {
                                  -        var row = spy.logRow;
                                  -        FBL.removeClass(row, "loading");
                                  -        
                                  -        if (!success)
                                  -            FBL.setClass(row, "error");
                                  -        
                                  -        var item = FBL.$$(".spyStatus", row)[0];
                                  -        item.innerHTML = status;
                                  -        
                                  -        if (time)
                                  -        {
                                  -            var item = FBL.$$(".spyTime", row)[0];
                                  -            item.innerHTML = time + "ms";
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public properties and handlers
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // XMLHttpRequestWrapper public methods
                                  -    
                                  -    this.open = function(method, url, async, user, password)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        updateSelfProperties();
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        spy.urlParams = parseURLParamsArray(url);
                                  -        
                                  -        try
                                  -        {
                                  -            // xhrRequest.open.apply may not be available in IE
                                  -            if (supportsApply)
                                  -                xhrRequest.open.apply(xhrRequest, arguments);
                                  -            else
                                  -                xhrRequest.open(method, url, async, user, password);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        spy.data = data;
                                  -        
                                  -        reqStartTS = new Date().getTime();
                                  -        
                                  -        updateXHRProperties();
                                  -        
                                  -        try
                                  -        {
                                  -            xhrRequest.send(data);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            // TODO: xxxpedro XHR throws or not?
                                  -            //throw e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            logXHR();
                                  -            
                                  -            if (!spy.async)
                                  -            {
                                  -                self.readyState = xhrRequest.readyState;
                                  -                
                                  -                // sometimes an error happens when calling finishXHR()
                                  -                // Issue 3422: Firebug Lite breaks Google Instant Search
                                  -                try
                                  -                {
                                  -                    finishXHR();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        return xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        xhrRequest.abort();
                                  -        updateSelfProperties();
                                  -        handleRequestStatus(false, "Aborted");
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    /**/
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Clone XHR object
                                  -
                                  -    // xhrRequest.open.apply not available in IE and will throw an error in 
                                  -    // IE6 by simply reading xhrRequest.open so we must sniff it
                                  -    var supportsApply = !isIE6 &&
                                  -            xhrRequest && 
                                  -            xhrRequest.open && 
                                  -            typeof xhrRequest.open.apply != "undefined";
                                  -    
                                  -    var numberOfXHRProperties = 0;
                                  -    for (var propName in xhrRequest)
                                  -    {
                                  -        numberOfXHRProperties++;
                                  -        
                                  -        if (propName in updateSelfPropertiesIgnore)
                                  -            continue;
                                  -        
                                  -        try
                                  -        {
                                  -            var propValue = xhrRequest[propName];
                                  -            
                                  -            if (isFunction(propValue))
                                  -            {
                                  -                if (typeof self[propName] == "undefined")
                                  -                {
                                  -                    this[propName] = (function(name, xhr){
                                  -                    
                                  -                        return supportsApply ?
                                  -                            // if the browser supports apply 
                                  -                            function()
                                  -                            {
                                  -                                return xhr[name].apply(xhr, arguments);
                                  -                            }
                                  -                            :
                                  -                            function(a,b,c,d,e)
                                  -                            {
                                  -                                return xhr[name](a,b,c,d,e);
                                  -                            };
                                  -                    
                                  -                    })(propName, xhrRequest);
                                  -                } 
                                  -            }
                                  -            else
                                  -                this[propName] = propValue;
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            //console.log(propName, E.message);
                                  -        }
                                  -    }
                                  -    
                                  -    // IE6 does not support for (var prop in XHR)
                                  -    var supportsXHRIterator = numberOfXHRProperties > 0;
                                  -    
                                  -    /**/
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ActiveXObject Wrapper (IE6 only)
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    _ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new _ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// Register the XMLHttpRequestWrapper for non-IE6 browsers
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    };
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -
                                  -FBL.getNativeXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new _XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new _ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/content/notes.txt b/branches/flexBox/content/notes.txt
                                  deleted file mode 100644
                                  index ca79ab99..00000000
                                  --- a/branches/flexBox/content/notes.txt
                                  +++ /dev/null
                                  @@ -1,789 +0,0 @@
                                  -###################################################################################################
                                  - Versions
                                  -###################################################################################################
                                  -
                                  -    Firebug Lite 1.3.1   - 2010-09-07 - Revision: 7759
                                  -    Firebug Lite 1.3.1b1 - 2010-06-29 - Revision: 7198
                                  -    Firebug Lite 1.3.1a2 - 2010-06-24 - Revision: 7125
                                  -    Firebug Lite 1.3.0   - 2009-05-23 - Revision: 6854
                                  -    Firebug Lite 1.3.0b2 - 2009-05-06 - Revision: 6695
                                  -    Firebug Lite 1.3.0b1 - 2009-02-05 - Revision: 6012
                                  -    Firebug Lite 1.3.0a5 - 2009-01-16 - Revision: 5719
                                  -    Firebug Lite 1.3.0a4 - 2009-12-31 - Revision: 5505 
                                  -    Firebug Lite 1.3.0a3 - 2009-09-13 - Revision: 4882
                                  -    Firebug Lite 1.3.0a2 - 2009-08-03 - Revision: 3847
                                  -    Firebug Lite 1.3.0a1 - 2009-05-03 - Revision: 2729
                                  -    Firebug Lite 1.3.0a0 - 2009-01-24 - Revision: 1765
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -sourceFile dependencies
                                  -###################################################################################################
                                  -
                                  -Firebug.SourceFile is both a class and a namespace, like Firebug.SourceFile.getSourceFileByScript()
                                  -Wouldn't be better to have two different files/modules: Firebug.SourceFile class, and 
                                  -Firebug.SourceFileManager namespace?
                                  -
                                  -Firebug.SourceFile class properties/methods used by sourceBox.js
                                  -    - href
                                  -    - source (array of lines)
                                  -    - compilation_unit_type
                                  -    - loadScriptLines()
                                  -
                                  -Firebug.SourceFile class properties/methods used by debugger.js    
                                  -    - scriptTag
                                  -    - outerScript?
                                  -    - dependentURL
                                  -    - getScriptAnalyzer()
                                  -    - toString()
                                  -    - isEval()
                                  -    - isEvent()
                                  -    - isExecutableLine()
                                  -    - loadScriptLines()
                                  -    - getObjectDescription()
                                  -
                                  -Firebug.SourceFile namespace methods used by debugger.js
                                  -    - Firebug.SourceFile.getSourceFileByScript()
                                  -    - Firebug.SourceFile.getSourceFileAndLineByScript()
                                  -
                                  -
                                  -###################################################################################################
                                  -sourceCache dependencies
                                  -###################################################################################################
                                  -
                                  -Firebug.SourceCache class properties/methods used by sourceBox.js
                                  -    - addListener()
                                  -    - removeListener()
                                  -
                                  -Firebug.SourceCache class properties/methods used by sourceFile.js
                                  -    - load()
                                  -    - getLine()
                                  -
                                  -
                                  -###################################################################################################
                                  -New Script Panel
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -debugger.js dependencies
                                  ----------------------------------------------------------------------------------------------------
                                  -    - jsd
                                  -    - Ci.jsdIScript;
                                  -    - Ci.jsdIStackFrame;
                                  -    - Ci.jsdIExecutionHook;
                                  -    - Ci.nsISupports;
                                  -    - Ci.nsICryptoHash;
                                  -    - Ci.nsIURI
                                  -    
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -debugger.js changes
                                  ----------------------------------------------------------------------------------------------------
                                  -    - const --> var
                                  -    - addEventListener --> adEvent
                                  -    - element.getElementsByClassName(name) --> FBL.getElementsByClass(element, name)
                                  -    - named functions --> variables
                                  -    - target = event.target || event.srcElement
                                  -    - Array.indexOf --> (" " + str + " ").indexOf trick
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -debugger.js Lite's missing pieces
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -...................................................................................................
                                  -items to port (low to high-level modules)
                                  -
                                  -    - Chrome
                                  -    - browser (XUL-browser[1] abstraction)
                                  -    - script (jsdIScript[2] abstraction)
                                  -    
                                  -    - tabContext
                                  -    - tabWatcher
                                  -    
                                  -    - sourceBox
                                  -    - sourceFile?
                                  -    - sourceCache?
                                  -    
                                  -    - FBL.getUniqueId
                                  -    - FBL.persistObjects
                                  -    - FBL.sourceFilesAsArray
                                  -    - FBL.appendInnerHTML
                                  -    
                                  -    - Firebug.registerActivableModule
                                  -    - Firebug.ActivableModule
                                  -    - Firebug.ActivablePanel
                                  -    
                                  -    - GUI.ToolButton (panel buttons)
                                  -    - GUI.OptionsMenu (panel options)
                                  -    - GUI.ScrollableMenu (file selection)
                                  -    - GUI.StatusBar (call stack)
                                  -    
                                  -    - UI tabs on top*
                                  -    - commandLine available at all panels*
                                  -
                                  -...................................................................................................
                                  -items to change
                                  -
                                  -    - infoTip
                                  -    
                                  -    - Panel create/destroy methods
                                  -    - Panel initialize/shutdown methods
                                  -    - Panel show/hide methods
                                  -    - Panel initializeUI method
                                  -    
                                  -    - Firebug getPref/setPref
                                  -    
                                  -    - SidePanel API
                                  -    
                                  -    - GUI.Menu
                                  -
                                  -[1] https://developer.mozilla.org/En/XUL/browser
                                  -[2] http://dxr.proximity.on.ca/dxr/mozilla-central/js/jsd/idl/jsdIDebuggerService.idl.html#l864
                                  -
                                  -
                                  -###################################################################################################
                                  - Important TODOs
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Migration
                                  ----------------------------------------------------------------------------------------------------
                                  -    - link at getfirebug.com/firebuglite
                                  -    - bookmarlet update system
                                  -    - "new beta version available" message in 1.2
                                  -    - detect new version?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Organization
                                  ----------------------------------------------------------------------------------------------------
                                  -    - stop using old cache system at reps+html
                                  -    - remove old cache system from lib
                                  -    - move cache system (currently in css2) to lib
                                  -    
                                  - OK - move reps code to html module
                                  - OK - remove obsolete modules from repository (moved new stuff to 1.4)
                                  -            - console
                                  -            - chrome.injected
                                  -            - css
                                  -            - maybe reps
                                  -            - maybe html2
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Cache
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Data Sharing / Cache
                                  -    - remove old cache and the use of element[cacheID] property
                                  -    - refactoring use of cache and inspector highlight detection in the HTML panel
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Panel Interfaces - initialize / initializeNode / show / hide
                                  -    - Contexts - TabWatcher and TabContext - what exactly are they?
                                  -    - Panel as Controller?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Use "offline" mode when switching panels (to avoid loose any message)?    
                                  -    - one function to get a panel (no matter if it is a sidepanel or not)
                                  -      currently, we must know where the sidepanel is, or look in each main
                                  -      panel.
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Editor
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Slow in IE8?
                                  -    - onInput in Firefox - the behavior is different. Specially when autocompleting font-family
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -New issues
                                  ----------------------------------------------------------------------------------------------------
                                  -    - editor.updateLayout() in IE, when element has a "auto" margin
                                  -    
                                  -    - console panel scrollToBottom if was scrolledToBottom
                                  -    
                                  -    - click and onmousemove inspect at Style panel. it isn't highlighting
                                  -      the box model of the element (as shown in the "inherited from" section)
                                  -      
                                  -    - ID conflicts. If you click in the console in a Firebug UI element,
                                  -      it will lead you to a different element in a HTML panel, using the
                                  -      same ID. The ID must be unique across all frames.
                                  -      
                                  -    - Opera 9 and 10 - should ignore the tab event properly in the inline editor
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Offline messages
                                  ----------------------------------------------------------------------------------------------------
                                  -...................................................................................................
                                  -    - Approach #1: currently being used
                                  -        just lazy the console.log call
                                  -        
                                  -        pro: simple
                                  -        cons: it won't represent the "snapshot" of the object at the point when it was called
                                  -    
                                  -...................................................................................................
                                  -    - Approach #2:
                                  -        append to div
                                  -        adoptNode // won't work on IE
                                  -    
                                  -...................................................................................................
                                  -    - Approach #3:
                                  -        create OfflineRep class with 2 basic methods:
                                  -            OfflineRep.render()
                                  -            OfflineRep.append()
                                  -            OfflineRep.args // console.log arguments
                                  -
                                  -...................................................................................................
                                  -    - Approach #4:
                                  -        This approach is not possible because when you move the iframe from the documentElement
                                  -        to body, it will loose all children nodes.
                                  -        
                                  -        algorithm: confirm: if you can do this on all browsers:
                                  -            - create an iframe at startup (before main doc load)
                                  -            - append it to the documentElement
                                  -            - create a Fragment
                                  -            - create iframe doc element 
                                  -            - attach event to it
                                  -            - append it to fragment
                                  -            - later, when iframe doc is loaded, append all fragment elements to it
                                  -            - check if the event still attached to the element 
                                  -...................................................................................................
                                  -        
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Memory leaks
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Menu
                                  -    - XHRSpy
                                  -    - extension content script
                                  -
                                  -
                                  -###################################################################################################
                                  - Bugs
                                  -###################################################################################################
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Console2 problems
                                  ----------------------------------------------------------------------------------------------------
                                  -    - console.profile / console.profileEnd
                                  -    - console.assert
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -BUGS
                                  ----------------------------------------------------------------------------------------------------
                                  -    - some times (very rare, generally the first time only) when you open a popup, the UI is 
                                  -      misplaced (you can't see most of the "console" tab).
                                  -    
                                  -    - Inspector stays visible after the mouse leave the panel content
                                  -
                                  -    - When loading the bookmarlet in IE it shows a security warning
                                  -        https://www.google.com/accounts/ServiceLogin?service=adwords&cd=null&hl=en-US&ltmpl=adwords&passive=true&ifr=false&alwf=true&continue=https%3A%2F%2Fadwords.google.com%2Fselect%2Fgaiaauth%3Fapt%3DNone%26ugl%3Dtrue&sourceid=awo&subid=ww-en-et-ads-0-adsC-all
                                  -        
                                  -    - console should be installed in each Chrome window
                                  -    
                                  -    - "close tag" node (</div>) should not be selectable, instead, when clicked it should select
                                  -      the "open tag" node (<div>).
                                  -    
                                  -    - remove events added in disableTextSelection
                                  -
                                  -    - window.onerror is being turned off when UI is minimized (and should not)
                                  -
                                  -
                                  -###################################################################################################
                                  -Shared Code
                                  -###################################################################################################
                                  -
                                  -    Code needed to be rewritten:
                                  -        - dev
                                  -        - gui
                                  -        - xhr
                                  -        - trace
                                  -        - chrome
                                  -        - context
                                  -
                                  -    Successfully ported modules:
                                  -        - lib
                                  -        - domplate
                                  -        - reps
                                  -        - console
                                  -        - consoleInjector
                                  -        - dom
                                  -        - css (required a few additions)
                                  -        - editor (required a lot of changes)
                                  -    
                                  -    Partially ported modules:
                                  -        - spy
                                  -        - net (only a few reps)
                                  -    
                                  -    Next modules to port scheduled to 1.3.x version:
                                  -        - insideOutBox 
                                  -        - html
                                  -        - infotip
                                  -    
                                  -    Next modules to port scheduled to 1.4 version:
                                  -        - FirebugChrome (will require a lot of changes)
                                  -        - TabContext (will require a lot of changes)
                                  -        - TabWatcher (will require a lot of changes)
                                  -        - Inspector
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.4 features
                                  -###################################################################################################
                                  -    persistent popups
                                  -    inherited styles
                                  -    live edit
                                  -    cross-iframe
                                  -    live highlight dom changes?
                                  -    unit tests
                                  -    Panel options menu
                                  -    Context menu
                                  -    tooltips (CSS color, images)
                                  -    Layout Ruler
                                  -    code Parser
                                  -        - proxy/plugin (cross-domain issue)?    
                                  -        - line number
                                  -        - correct CSS rules
                                  -     
                                  -    1.4 - divide .css files? so new skins can be easier to write, and changes in UI can be easily 
                                  -          ported across skins 
                                  -        
                                  -    1.4 - each skin has in his own folder a file called "firebug.json" (or similar)
                                  -    1.4 - improve the build skin methods in FBDev
                                  -    1.4 - loadJSON method
                                  -    1.4 - loadSkin method
                                  -    
                                  -    - Tests
                                  -        - Unit Tests
                                  -        - Manual Tests
                                  -        - Test generation?
                                  -
                                  -
                                  -###################################################################################################
                                  - TODOs
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Domplate/Reps
                                  ----------------------------------------------------------------------------------------------------
                                  -    Opera:
                                  -        - native function: "prototype" in fn == true && listed in for..in
                                  -        - user function: "prototype" in fn == true && not listed in for..in
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Statistics
                                  ----------------------------------------------------------------------------------------------------
                                  -    Use Google Analytics to track Firebug Lite statistics.
                                  -    It could run inside the Chrome iframe (no global pollution).
                                  -    Not called when used locally, included when in development mode.
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -XML + XSL
                                  ----------------------------------------------------------------------------------------------------
                                  -Opera doesn't have document.elementFromPoint in XML documents
                                  -
                                  -revise the use of createElement and createGlobalElement
                                  -    createElement --> createChromeElement
                                  -    createGlobalElement --> createElement
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Popup
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Frame/Popup settings
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Loading
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Firebug.initialize should create console namespace
                                  -    - window onerror - wrong time? 
                                  -    - Check the initializing order. 
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Tool Buttons
                                  ----------------------------------------------------------------------------------------------------
                                  -    - button location: Fixed buttons (inspect) and Panel buttons 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -ScrollArea Class
                                  ----------------------------------------------------------------------------------------------------
                                  -    - isScrolled
                                  -    - isVerticalScrolled
                                  -    - isHorizontalScrolled
                                  -    - isScrolledToBottom
                                  -    - scrollToElement(el)
                                  -    - isElementVisible(el)
                                  -    - interceptMouseWheel
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Interface
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Where exactly the errors indicator should be placed in the UI?
                                  -    
                                  -    - Highlighted nodes in HTML tree with round corners (with OS color)
                                  -        - current implementation isn't good (it uses both CSS hack and JS)
                                  -        - Opera round corner SVG trick
                                  -        - best way to go is dynamically create a CSS rule according each browser 
                                  -    
                                  -    - UI styling
                                  -        - (?) detect Windows theme (XP or classic?)
                                  -        - (?) detect OS (windows or mac?)
                                  -    
                                  -    - error UI indications (like FB in status bar)
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Panel event delegation?
                                  -    - Opera problem with onunload and popups (context is not being destroyed)
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Controllers
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) add option to skip frames
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) how to auto-load FirebugLite + Extension in a single bookmarlet?
                                  -    - custom Errors = throw new FirebugError("message")
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Problem with id conflits. The same attribute is being used in the document
                                  -      elements and in the HTML Tree, in the user interface.
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Events
                                  ----------------------------------------------------------------------------------------------------
                                  -    - handle disble mouse wheel in Chrome, when in frame mode?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Context
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -Panel
                                  -    - document (should link to Firebug.chrome.document)
                                  -    - context (should link to Firebug.chrome)
                                  -    - show
                                  -    - hide
                                  -    - select
                                  -    - rebuild
                                  -
                                  -Context
                                  -    - getName()
                                  -    - browser = ex: iterateWindows(context.browser.contentWindow, function(subwin)
                                  -    - window
                                  -    - selectorMap (css)
                                  -    - sourceCache (css) = ex: context.sourceCache.load(sheet.href).join("")
                                  -
                                  -    - loaded (must be set to true, when the doc is ready)
                                  -    - setTimeout
                                  -    - invalidatePanels
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - References and notes
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Using YQL as a proxy to read cross-domain CSS and JS files
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -Example: 
                                  -
                                  -To request the following file:
                                  -http://getfirebug.com/css/master.css
                                  -
                                  -Use the following query:
                                  -http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D'http://getfirebug.com/css/master.css'%0A&format=xml&diagnostics=false&callback=foo 
                                  -
                                  -~~~~~~~~~~
                                  -
                                  -    Using YQL as a proxy for cross-domain Ajax
                                  -    http://ajaxian.com/archives/using-yql-as-a-proxy-for-cross-domain-ajax
                                  -    
                                  -    Using YQL with JSONP
                                  -    http://james.padolsey.com/javascript/using-yql-with-jsonp/
                                  -    
                                  -    Cross-domain requests with JSONP? safe?
                                  -    http://james.padolsey.com/javascript/cross-domain-requests-with-jsonp-safe/
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Ranges and Selections
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Creating an Autosuggest Textbox with JavaScript, Part 1
                                  -    http://www.webreference.com/programming/javascript/ncz/
                                  -    http://www.webreference.com/programming/javascript/ncz/example.htm
                                  -    
                                  -    Introduction to Range
                                  -    http://www.quirksmode.org/dom/range_intro.html
                                  -    
                                  -    W3C DOM Compatibility - Range
                                  -    http://www.quirksmode.org/dom/w3c_range.html
                                  -    
                                  -    Get/Set Caret Code for IE and Mozilla
                                  -    http://www.webdeveloper.com/forum/showpost.php?s=bfd315ad0f2b3f0e324e60a485611f4e&p=423545&postcount=3
                                  -    
                                  -    Working with the Cursor Position
                                  -    http://parentnode.org/javascript/working-with-the-cursor-position/
                                  -    http://pastebin.parentnode.org/78
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -CSS Cascading and Inheritance
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Cascading Order and Inheritance in CSS
                                  -    http://monc.se/kitchen/38/cascading-order-and-inheritance-in-css
                                  -    
                                  -    Cascading Order Specification
                                  -    http://www.w3.org/TR/REC-CSS1/#cascading-order
                                  -    
                                  -    Assigning property values, Cascading, and Inheritance
                                  -    http://www.w3.org/TR/CSS21/cascade.html
                                  -    
                                  -    Table of CSS properties with initial values - Appendix F. Full property table
                                  -    http://www.w3.org/TR/CSS21/propidx.html
                                  -
                                  -
                                  -
                                  -CSS imported styles
                                  -
                                  -      @import-rule as first rule in the first stylesheet:
                                  -      
                                  -      document.styleSheets[0].cssRules[0].styleSheet.cssRules;
                                  -      
                                  -      IE:
                                  -            
                                  -      document.styleSheets[0].imports[0].rules;
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Java Applet Vulnerability
                                  -    http://www.cert.org/blogs/vuls/2008/06/signed_java_security_worse_tha.html
                                  -    
                                  -    Mutation Events
                                  -    http://tobiasz123.wordpress.com/2009/01/19/utilizing-mutation-events-for-automatic-and-persistent-event-attaching/#comments
                                  -    
                                  -    Revise FBLite issues
                                  -        http://code.google.com/p/fbug/issues/list?can=1&q=owner:pedrosimonetti&sort=-owner+-status&colspec=ID+Type+Status+Owner+Test+Summary&cells=tiles
                                  -    
                                  -    Reopen issues
                                  -        Console Trace: http://code.google.com/p/fbug/issues/detail?id=394
                                  -        appendNode IE: http://code.google.com/p/fbug/issues/detail?id=225
                                  -    
                                  -    Stack Trace improvements
                                  -        http://github.com/lsmith/javascript-stack-trace/blob/master/getStackTrace.js
                                  -        http://eriwen.com/javascript/js-stack-trace/
                                  -    
                                  -
                                  -
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -BRAINSTORMING SECTION
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -getPixelValue
                                  ----------------------------------------------------------------------------------------------------
                                  -Dean Edwards:
                                  -http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value) {
                                  -if (PIXEL.test(value)) return parseInt(value);
                                  -var style = element.style.left;
                                  -var runtimeStyle = element.runtimeStyle.left;
                                  -element.runtimeStyle.left = element.currentStyle.left;
                                  -element.style.left = value || 0;
                                  -value = element.style.pixelLeft;
                                  -element.style.left = style;
                                  -element.runtimeStyle.left = runtimeStyle;
                                  -return value;
                                  -};
                                  -
                                  -
                                  -window.PIXEL=/^\d+(px)?$/i, window.getPixelValue=function (element, value) {if (PIXEL.test(value)) return parseInt(value);var style = element.style.left;var runtimeStyle = element.runtimeStyle.left;element.runtimeStyle.left = element.currentStyle.left;element.style.left = value || 0;value = element.style.pixelLeft;element.style.left = style;element.runtimeStyle.left = runtimeStyle;return value;};
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Library Expose
                                  ----------------------------------------------------------------------------------------------------
                                  -    - if a FBLite extension can be dynamically loaded, the FBL namespace should be exposed 
                                  -    - if the FBL is exposed inside the iframe, it is less visible, and less conflictable 
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -FB vs FBLite
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -FB
                                  -    - Each Panel has its own window
                                  -    - A single Firebug application run across all browser tabs
                                  -    - The Firebug application is persistent, that is, it can live after page change, or reload 
                                  -
                                  -FBLite
                                  -    - All Chrome Panels runs in the same window, the chrome window
                                  -    - The FirebugLite application run in a single browser tab
                                  -    - The Firebug application isn't persistent 
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Persistent Mode
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Loading Process
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -1st Stage - Load the application in "offscreen mode", with only the console 
                                  -            functions available.
                                  -
                                  -2nd Stage - Wait the page load, and then create the chrome window
                                  -            (frame or popup, based on preferences).
                                  -
                                  -3rd Stage - Wait the chrome page load, and the install the application
                                  -            in the chrome window context.
                                  -
                                  -4th Stage - Load the full application in chrome window, synchronizes it with
                                  -            the first application loaded, and transfer the console
                                  -            functions to the new "screen mode" application.
                                  -
                                  -----------------------------------
                                  -Pros
                                  ----------------------------------------------------------------------------------------------------
                                  -    More safe
                                  -        - no global namespace pollution, except for the "console" variable
                                  -        - no internal code exposure
                                  -    
                                  -    Allows persistent popups
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Cons
                                  ----------------------------------------------------------------------------------------------------
                                  -    More complex
                                  -    More difficult to debug low level functions
                                  -    less stable?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -DOMPLATE
                                  ----------------------------------------------------------------------------------------------------
                                  -IE problems with templates
                                  -
                                  -1 - class name attributes of objects
                                  -
                                  -2 - colon after the last property of a object
                                  -
                                  -3 - event handlers  
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Opera tab 
                                  ----------------------------------------------------------------------------------------------------
                                  -http://www.webdeveloper.com/forum/showpost.php?p=806588&postcount=8
                                  -
                                  -  function handleBlur(e) {
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -  }
                                  -  
                                  -  function handleKeyDown(e) {
                                  -    this.lastKey = e.keyCode;
                                  -  }
                                  -  
                                  -  function handleFocus(e) {
                                  -    this.lastKey = null;
                                  -  }
                                  -
                                  -  window.onload = function() {
                                  -    var elm = document.getElementById('myTextarea');
                                  -    elm.onfocus = handleFocus;
                                  -    elm.onblur = handleBlur;
                                  -    elm.onkeydown = handleKeyDown;
                                  -  };
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Disable Text Selection
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -<script language="JavaScript1.2">
                                  -
                                  -function disabletext(e){
                                  -return false
                                  -}
                                  -
                                  -function reEnable(){
                                  -return true
                                  -}
                                  -
                                  -//if the browser is IE4+
                                  -document.onselectstart=new Function ("return false")
                                  -
                                  -//if the browser is NS6
                                  -if (window.sidebar){
                                  -document.onmousedown=disabletext
                                  -document.onclick=reEnable
                                  -}
                                  -</script>
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -XPATH
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -function getXPath(node, path) {
                                  -  path = path || [];
                                  -  if(node.parentNode) {
                                  -    path = getXPath(node.parentNode, path);
                                  -  }
                                  -
                                  -  if(node.previousSibling) {
                                  -    var count = 1;
                                  -    var sibling = node.previousSibling
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;}
                                  -      sibling = sibling.previousSibling;
                                  -    } while(sibling);
                                  -    if(count == 1) {count = null;}
                                  -  } else if(node.nextSibling) {
                                  -    var sibling = node.nextSibling;
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {
                                  -        var count = 1;
                                  -        sibling = null;
                                  -      } else {
                                  -        var count = null;
                                  -        sibling = sibling.previousSibling;
                                  -      }
                                  -    } while(sibling);
                                  -  }
                                  -
                                  -  if(node.nodeType == 1) {
                                  -    path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : ''));
                                  -  }
                                  -  return path;
                                  -};
                                  -
                                  -
                                  -// Getting result
                                  -document.evaluate("/html/body/div/ul/li[2]", document, null, XPathResult.ANY_TYPE, null ).iterateNext()
                                  -
                                  diff --git a/branches/flexBox/docs/beta/changelog.txt b/branches/flexBox/docs/beta/changelog.txt
                                  deleted file mode 100644
                                  index 7aa1e81c..00000000
                                  --- a/branches/flexBox/docs/beta/changelog.txt
                                  +++ /dev/null
                                  @@ -1,485 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0b1 - 2009-02-05 - Revision: 6012
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented a more robust stylesheet scanner (will scan imported stylesheets)
                                  -    - Implemented a cascading styles analyser (will detect which CSS rules are applied
                                  -      to a particular element, in the proper cascading order)
                                  -      
                                  -    - Ported css.js file from Firebug, including the following features:
                                  -        - live edit of CSS properties
                                  -        - enable/disable CSS properties on-the-fly
                                  -        - Cascading visualization
                                  -        - Inheritance visualization (with overriden properties marked)
                                  -    
                                  -    - Ported the CSS Panel
                                  -    - Ported the Style Panel
                                  -    - Ported the Computed Panel divided in categories (in a separated tab)
                                  -    - Fixed the problem with external stylesheets (now shows a "Access restricted" message). 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - Autocomplete feature with UP/DOWN keys
                                  -    - "Complete as you type" feature in most browsers (not working in Opera yet)
                                  -    - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN
                                  -    - Navigation with TAB/SHIFT+TAB
                                  -    - Fixed the CSS of editor to work in all browsers
                                  -    - Pretty inline editor support in IE6
                                  -    - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't 
                                  -      trigger the onkeypress event, making some changes in the editor not apply 
                                  -      to the CSS property.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Strings are properly rendered in console.* calls
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Don't show the Firebug Lite source code in the script list
                                  -    - Refactored Script panel
                                  -    - Fixed potential memory leak
                                  -    - Using the Warning template in the Script panel when failing to load external scripts.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - When running as Chrome extension, all images used in the interface are
                                  -      stored in the extension directory, hugely improving the perceived loading
                                  -      time for GUI operations, specially in the startup.
                                  -      
                                  -    - Implemented the chrome.deactivate() method
                                  -
                                  --------------------------------------------------------------------------------
                                  -GUI
                                  --------------------------------------------------------------------------------
                                  -    - Added the "off" button to the UI
                                  -    - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+
                                  -    - Fixed problem with panel initialization that was breaking the scroll 
                                  -      position persistence of the panels.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Added domplate tag.insertBefore method
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Added KeyEvent constants
                                  -    - Added bindFixed method
                                  -    - Added Whitespace and Entity conversions methods
                                  -    - Added String escaping methods
                                  -    - Added CSS methods
                                  -    - Added DOM queries methods
                                  -    
                                  -    - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" 
                                  -      CSS selector that was used to match the element)
                                  -     
                                  -    - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition()
                                  -      to support text selection and caret position detection in editor module
                                  -      
                                  -    - Making instanceOf() work also for non HTML elements (elements without ownerDocument 
                                  -      property), to avoid the use of the instanceof operator, that may cause error in other 
                                  -      browsers when the Class is not defined in the global namespace.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Ported editor.js module from Firebug
                                  -    - Ported a simplified version of tabContext.js
                                  -    - Implemented a more robust Cache system that will be used internally
                                  -    - Implemented a message dispatching method to communicate with the Chrome extension
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a5 - 2009-01-16 - Revision: 5719
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Large Command Line
                                  -    - Refactoring CommandLine module for better readability and encapsulation (commandHistory
                                  -        is now a private variable in CommandLine module)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Fix problem in iframe creation that was blocking the UI creation via
                                  -      bookmarlet in IE, for some pages.
                                  -      
                                  -    - Allow Firebug Lite UI to load in "windowless mode", without creating an
                                  -      iframe. This is necessary to make the bookmarlet run in cases where it
                                  -      is not possible to create an iframe.
                                  -      
                                  -    - Refactoring Chrome module for better readability
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - refined the layout of buttons (added an image background)
                                  -    - refined the layout of log groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -Context
                                  --------------------------------------------------------------------------------
                                  -    - Better context evaluation (commands with multiple lines are now properly evaluated)
                                  -    - context.evaluate() properly executes and returns the value of expressions with 
                                  -      multiple commands (be it multilined or not).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Style
                                  --------------------------------------------------------------------------------
                                  -    - Basic editing feature of inline styles (Style panel)
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - properly format inline style of elements in IE to lower-case in HTML panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - fixed visibility detection and visibility representation of elements
                                  -    - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), 
                                  -      and others. IE has a different pattern for identifying mouse buttons.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc).
                                  -    - ported the consoleInjetor.js file that will be used with the new console (console2.js)
                                  -    - ported the console.js file from Firebug codebase (not enabled yet). This will replace 
                                  -      the current implementation of the Console panel in the 1.3 final version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - new XHR watcher (with response and headers tabs) 
                                  -    - fixed variable "root" leaking to global namespace (domplate.js) 
                                  -    - improved development build functions
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4 - 2009-12-31 - Revision: 5505 
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Implemented synchronization of the persistent popup
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - Moved all UI components to a separated gui.js file.
                                  -    - Implemented the Menu class (with normal, checkbox, radiobutton, group
                                  -      and separator items), that will be used in options menus at 1.3 verson
                                  -      and in contexts menus at 1.4 version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -    - Implemented the console.trace (thanks dongryphon for the contribution!)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the border in the BoxModel Highlight
                                  -    
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Internet Explorer and inline styles representation (thanks christophe.blin 
                                  -      for the contribution!)
                                  -
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3 - 2009-09-13 - Revision: 4882
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2 - 2009-08-03 - Revision: 3847
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1 - 2009-05-03 - Revision: 2729
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0 - 2009-01-24 - Revision: 1765
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/beta/index.html b/branches/flexBox/docs/beta/index.html
                                  deleted file mode 100644
                                  index 13ae5ed4..00000000
                                  --- a/branches/flexBox/docs/beta/index.html
                                  +++ /dev/null
                                  @@ -1,791 +0,0 @@
                                  - 
                                  -<!DOCTYPE html> 
                                  -<html> 
                                  -<head> 
                                  -<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
                                  - 
                                  -<title>Firebug Lite 1.3.0 beta</title> 
                                  - 
                                  -<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico"> 
                                  -
                                  -<script src="https://getfirebug.com/releases/lite/beta/firebug.jgz">
                                  -{
                                  -    startOpened: true,
                                  -    
                                  -    disableWhenFirebugActive: false,
                                  -    
                                  -    //skin: (window.firebugSkin = ["xp","classic","light"][Math.floor(Math.random()*3)]),
                                  -    
                                  -    onLoad: function()
                                  -    {
                                  -    
                                  -        var getXHRObject = function()
                                  -        {
                                  -            var xhrObj = false;
                                  -            try
                                  -            {
                                  -                xhrObj = new XMLHttpRequest();
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                var progid = [
                                  -                        "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                        "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                    ];
                                  -                  
                                  -                for ( var i=0; i < progid.length; ++i ) {
                                  -                    try
                                  -                    {
                                  -                        xhrObj = new ActiveXObject(progid[i]);
                                  -                    }
                                  -                    catch(e)
                                  -                    {
                                  -                        continue;
                                  -                    }
                                  -                    break;
                                  -                }
                                  -            }
                                  -            finally
                                  -            {
                                  -                console.count("Counting the XHR calls with console.count(): ");
                                  -                return xhrObj;
                                  -            }
                                  -        };
                                  -
                                  -        var console = window.firebug || window.console;
                                  -        
                                  -        console.info("Hello World, I'm " + Firebug.version + "!");
                                  -        /*
                                  -        console.warn('This is the "' + firebugSkin + 
                                  -            '" skin, press Ctrl+F5 to reload with a random skin.');/**/
                                  -        
                                  -        var els = $("div").toArray();
                                  -        els = els.slice(0, 12);
                                  -        console.log("Move your mouse over or click the following elements: ", els);
                                  -        
                                  -        console.info("Don't forget to check the XHR requests, now supporting HTTP parameters:");
                                  -        
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("POST", "changelog.txt", true);
                                  -        xhr.send("param1=post&param2=data");
                                  -        
                                  -        var xhr2 = getXHRObject();
                                  -        xhr2.open("GET", "error.txt?param1=hello&param2=world", true);
                                  -        xhr2.send();
                                  -        
                                  -        console.dir(Firebug);
                                  -        
                                  -        var random = function(i){return Math.floor(Math.random()*i)};
                                  -        var randomPanel = ["Console", "HTML", "DOM"][random(3)];
                                  -        
                                  -        Firebug.chrome.selectPanel(randomPanel);
                                  -        
                                  -        if (randomPanel == "HTML")
                                  -        {
                                  -            var randomElement = ["h1", "h2", "p"][random(3)];
                                  -            var element = document.getElementsByTagName(randomElement)[0];
                                  -            
                                  -            setTimeout(function(){
                                  -                Firebug.HTML.select(element);
                                  -                Firebug.Inspector.drawBoxModel(element);
                                  -            },0);
                                  -            
                                  -            setTimeout(Firebug.Inspector.hideBoxModel, 2500);
                                  -            
                                  -        }
                                  -        else if (randomPanel == "DOM")
                                  -        {
                                  -            var randomElement = [null, "Firebug", "console", "document"][random(4)];
                                  -            var element = Firebug.browser.window[randomElement];
                                  -            
                                  -            setTimeout(function(){
                                  -                Firebug.chrome.getPanel("DOM").select(element);
                                  -            },0);
                                  -        }
                                  -    }
                                  -}
                                  -</script>
                                  -<script src="retweet.js"></script>
                                  -<script type="text/javascript" src="http://getfirebug.com/js/main.js"></script> 
                                  -<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> 
                                  -<script type="text/javascript" src="http://getfirebug.com/js/jquery.mousewheel-3.0.2.js"></script> 
                                  -<script type="text/javascript" src="http://getfirebug.com/js/fancybox.js"></script> 
                                  -<script type="text/javascript"> 
                                  -$(document).ready(function()
                                  -{
                                  -    $('a.view').fancybox({
                                  -        autoScale: false,
                                  -        centerOnScroll: true,
                                  -        overlayShow: true,
                                  -        overlayOpacity: 0.7,
                                  -        overlayColor: '#EAF1FB',
                                  -        
                                  -        callbackOnStart: function()
                                  -        {
                                  -            alert(0);
                                  -        },
                                  -        
                                  -        callbackOnClose: function()
                                  -        {
                                  -        alert(0);
                                  -        }
                                  -    });
                                  -    
                                  -    var firstScreenshot = $('.view').first();
                                  -    $('.moreinfo').click(function(e){
                                  -    
                                  -        if (window.Firebug)
                                  -            Firebug.chrome.close();
                                  -
                                  -        firstScreenshot.trigger('click');
                                  -        
                                  -        var ev = jQuery.Event(e);
                                  -        ev.preventDefault();
                                  -        ev.stopPropagation();
                                  -        
                                  -        return false;        
                                  -    });
                                  -    
                                  -    firstScreenshot.click(function(){
                                  -        if (window.Firebug)
                                  -            Firebug.chrome.close();
                                  -    });
                                  -    
                                  -});
                                  -</script>
                                  -
                                  -<link rel="stylesheet" type="text/css" media="screen,projection" href="/styles/screen.css">
                                  -<style>
                                  -
                                  -#install p {
                                  -    margin: 15px 0 0 30px;
                                  -    width: 250px;
                                  -}
                                  -
                                  -#install p a {
                                  -    width: 250px;
                                  -}
                                  -
                                  -.moreinfo {
                                  -    width: 100%;
                                  -    font-size: 11px important!;
                                  -}
                                  -
                                  -.intro {
                                  -    margin: 2.5em 0;
                                  -    font-size: 11px important!;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.postDate {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.post h2 {
                                  -    margin: 1em 0 0;
                                  -}
                                  -
                                  -.post h3 {
                                  -    font-size: 1.25em;
                                  -    margin: 1em 0 0;
                                  -}
                                  -
                                  -
                                  -#links .sidebar-title {
                                  -    margin: 2em 0 0;
                                  -}
                                  -
                                  -#links a {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -#screencast a {
                                  -    text-decoration: none !important;
                                  -    display: block;
                                  -}
                                  -
                                  -#screencast img {
                                  -    margin: 0 !important;
                                  -}
                                  -
                                  -textarea {
                                  -    border: none;
                                  -    width: 100%;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.spread {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 140px;
                                  -    background: #F6F9FE;
                                  -    padding: 5px 5px 10px;
                                  -    margin-right: 10px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.spread a {
                                  -    font-size: 1px;
                                  -    color: #eee;
                                  -}
                                  -
                                  -.spread .spreadText {
                                  -    display: block;
                                  -    margin-bottom: 10px;
                                  -}
                                  -
                                  -.hidden {
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -</style>
                                  -
                                  -</head> 
                                  - 
                                  -<body id="home"> 
                                  -<div id="wrap" class="group"> 
                                  - 
                                  -<div id="header" class="group"> 
                                  - 
                                  -<ul id="nav"> 
                                  -<li><a href="/whatisfirebug">What is Firebug?</a> 
                                  -<span>Introduction and Features</span></li> 
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a> 
                                  -<span>Documentation wiki, FAQ, and other Firebug lore</span></li> 
                                  -<li><a href="/community">Community</a><span>Discussion forums and lists</span></li> 
                                  -<li><a href="/getinvolved">Get Involved</a><span>Hack the code, create plugins</span></li> 
                                  -</ul> 
                                  - 
                                  -<div id="logo-install" class="group"> 
                                  - 
                                  -<div id="logo"> 
                                  -<a href="/"></a> 
                                  -<h1>Firebug</h1> 
                                  -<h2>Web Development Evolved.</h2> 
                                  -</div> 
                                  - 
                                  -<div id="install" class="group"> 
                                  -<p><a href="#Install">Install Firebug Lite 1.3.0b</a><span>100% free and open source</span></p> 
                                  -</div> 
                                  - 
                                  -</div> <!-- /END logo-install --> 
                                  - 
                                  - 
                                  -    <div id="promo" class="group"> 
                                  -    
                                  -    <div id="boasting"> 
                                  -        <h2>Firebug Lite: doing the Firebug way, anywhere.</h2> 
                                  -        <ul> 
                                  -            <li>Compatible with all major browsers: IE6+, Firefox, Opera, Safari and Chrome</li> 
                                  -            <li>Same look and feel as Firebug</li> 
                                  -            <li>Inspect <span class="caps">HTML</span> and modify style in real-time</li> 
                                  -            <li>Powerful console logging functions</li> 
                                  -            <li>Rich representation of DOM elements</li> 
                                  -            <li>Extend Firebug Lite and add features to make it even more powerful</li> 
                                  -        </ul>
                                  -        <p class="moreinfo"><a href="#">tour &raquo;</a></p>
                                  -    </div> 
                                  -    
                                  -    <div id="screencast">
                                  -        <a class="view group" rel="group" href="../beta/screenshots/firebug1.3-img01.png" title="Powerful console logging functions"><img src="./screenshots/firebug1.3-small.png" width="275" height="155" alt="Firebug Lite 1.3 screenshots" title="Firebug Lite 1.3 screenshots"  /></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img02.png" title="Don't forget to click the Firebug menu for options"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img03.png" title="Large command line"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img04.png" title="Easy inspect elements in your page"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img05.png" title="Visualize box model shading"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img06.png" title="Edit css properties in real-time"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img07.png" title="Autocomplete as you type feature"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img08.png" title="Computed styles divided in categories"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img09.png" title="Explore the DOM of the inspected element"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img10.png" title="Visualize and edit CSS rules"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img11.png" title="Visualize scripts"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img12.png" title="Rich representation of DOM elements"></a>
                                  -        <a class="view group hidden" rel="group" href="../beta/screenshots/firebug1.3-img13.png" title="Nested selection of DOM elements"></a>
                                  -    </div> 
                                  -    
                                  -    </div> <!-- END promo --> 
                                  - 
                                  -    <div class="bigfirebug"></div> 
                                  -    
                                  - 
                                  -</div> <!-- /END header --> 
                                  - 
                                  -<div id="secondary" class="group"> 
                                  - 
                                  -<div id="contentarea" class="group"> 
                                  - 
                                  -<div id="content" class="group"> 
                                  -<h2 class="heading">Firebug Lite 1.3.0 beta release notes</h2> 
                                  -<div id="blog">
                                  -
                                  -<div class="intro"> 
                                  -    <p>
                                  -        <span class="spread">
                                  -            <strong class="spreadText">Spread the word:</strong>
                                  -            <a class="retweet" href="http://getfirebug.com/releases/lite/beta/">Firebug Lite 1.3.0 beta released</a>
                                  -        </span>
                                  -        The next generation of Firebug Lite graduated to beta! This version
                                  -        is pretty stable but we need your help to make sure it is stable enough 
                                  -        to make a wider release.
                                  -    </p>
                                  -</div> 
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Overview" rel="bookmark">Overview</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            This version was conceived to put the Firebug Lite in a new level,
                                  -            by allowing code reuse from Firebug's original source. A new core
                                  -            was created to accomplish the following goals:
                                  -        </p>
                                  -        <p>
                                  -            <b>Performance</b> - the core of Firebug Lite 1.3 was rewritten from scratch
                                  -            taking the performance into account in the first place.
                                  -        </p>
                                  -        <p>
                                  -            <b>Modularity</b> - the code is now more modular, making easier the process
                                  -            of adding new features and UI components such as panels, buttons, menus etc.
                                  -            The modularity also helps the development process. Once the modules can
                                  -            be isolated it is easier to detect the cause of complicated problems like 
                                  -            memory leaks.
                                  -        </p>
                                  -        <p>
                                  -            <b>Shared code</b> - the core was designed to make it possible 
                                  -            to port some code directly from the Firebug source, with as few as possible 
                                  -            modifications. As a result, some features and UI elements behave exactly
                                  -            as in Firebug.                 
                                  -        </p>
                                  -        <p>
                                  -            <b>Compatibility</b> - the new core is compatible with XHTML and XML+XSL 
                                  -            documents. Thanks to the new context-independent approach, it supports 
                                  -            now the experimental persistent popups feature (popups that "live" across 
                                  -            different page loads of the same domain), and will support cross-iframe 
                                  -            inspection in the next version.
                                  -        </p>
                                  -    </div> 
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="WhatsNew" rel="bookmark">What's New?</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            <b>User Interface</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>Port of Firebug's Visual Object Representation (aka Reps)</li>
                                  -            <li>Recreation of Firebug 1.3 User Interface with pixel precision</li>
                                  -            <li>Menu options</li>
                                  -            <li>Resizable sidePanel</li>
                                  -            <li>Skinnable Interface</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>CSS</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>CSS cascading view</li>
                                  -            <li>CSS inheritance view</li>
                                  -            <li>Live editing CSS rules and properties</li>
                                  -            <li>Smart autocomplete (you'll get only the suggestions you need for each property)</li>
                                  -            <li>Autocomplete as you type feature</li>
                                  -            <li>Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Inspector</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>Full BoxModel Highlight including margin, border, padding and content boxes</li>
                                  -            <li>The BoxModel is highlighted when you move your mouse over a representation
                                  -            of a HTML element, in any of the place of the User Interface</li>
                                  -            <li>Elements are selected on-the-fly while using the Inspect tool</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Console</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>console.group() and console.groupEnd()</li>
                                  -            <li>
                                  -                console.trace() (thanks 
                                  -                <a href="http://code.google.com/p/fbug/issues/detail?id=394&q=label:lite&colspec=ID%20Type%20Status%20Owner%20Test%20Summary">dongryphon</a> 
                                  -                for the contribution!)
                                  -            </li>
                                  -            <li>command line API functions $(), $$(), and dir()</li>
                                  -            <li>command line shortcuts $0 and $1 for recent selected elements</li>
                                  -            <li>autocomplete (tab, shift+tab)</li>
                                  -            <li>can capture console messages before DOM document creation 
                                  -            (when installed at the HTML header)</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Core</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>XHR watcher (works better when you load the script in the HEAD of your document)</li>
                                  -            <li>Port most of the Firebug Library (aka Lib, FBL)</li>
                                  -            <li>Port the Firebug DOM Templates Engine (aka Domplate), the magic behind Reps</li>
                                  -            <li>Plugin system like Firebug</li>
                                  -            <li>Context-independent (will allow cross-iframe debugging, and persistent popups)</li>
                                  -            <li>Persistent popups</li>
                                  -            <li>Synchronization across different windows (iframe, popup)</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>And more...</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>
                                  -                Fixed problem with Internet Explorer and inline styles representation (thanks
                                  -                <a href="http://code.google.com/p/fbug/issues/detail?id=225&q=label:lite&colspec=ID%20Type%20Status%20Owner%20Test%20Summary">christophe.blin</a> 
                                  -                for the contribution!)
                                  -            </li>
                                  -            <li>
                                  -                For a complete list of changes, check the 
                                  -                <a href="changelog.txt">changelog</a>.
                                  -            </li>
                                  -        </ul>
                                  -        
                                  -        <h3 id="WhatsMissing">1.2. What's missing in Firebug Lite 1.3?</h3>
                                  -        <p>
                                  -            Here are the features that are still missing, but should be available in the
                                  -            final Firebug Lite 1.3 release:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Object links in console should be clickable</li>
                                  -            <li>XHR watching need to work with synchronous requests</li>
                                  -            <li>Some internal code need to be refactored (Chrome and Panels API)</li>
                                  -            <li>Make sure the code is stable enough</li>
                                  -        </ul>
                                  -        
                                  -        <h3 id="WhatsNot">1.3. What's Not in Lite?</h3>
                                  -        <p>
                                  -            Some features are not included in Firebug Lite 1.3, but due the new core that
                                  -            supports code sharing from Firebug, are likely to be included in the 
                                  -            Firebug Lite 1.4 version:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Live editing for all panels</li>
                                  -            <li>Layout Panel</li>
                                  -            <li>Context menu options</li>
                                  -            <li>Tooltips (to show colors and images)</li>
                                  -            <li>Search feature</li>
                                  -        </ul>
                                  -        <p>
                                  -            Other features though are too dependent in browser internals and will not be
                                  -            supported (at least in a near future*), such as:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Javascript debugger / Javascript profiler</li>
                                  -            <li>Net panel / HTTP and XHR monitor</li>
                                  -            <li>Access to restricted URI resources</li>
                                  -            <li>Highlight HTML changes</li>
                                  -        </ul>
                                  -        <p>
                                  -            <i>*Recent <a href="http://groups.google.com/group/webdebugprotocol?hl=en">discussions about remote debugging</a>
                                  -            indicates that should be possible to support JavaScript debugging in browsers 
                                  -            like Google Chrome and Opera in a not so distant future, but the 
                                  -            <a href="http://spreadsheets.google.com/ccc?key=tHjhsEJWVzXUR_Ix7wvTNBQ">differences in the protocols</a>
                                  -            may slow down this process (hey browser developers, what about adopting a standard?).
                                  -            </i>
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Install" rel="bookmark">Install</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <h3>a) Bookmarlet</h3>
                                  -        <p>
                                  -            Bookmark the following links:
                                  -        </p>
                                  -        <ul>
                                  -            <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.2','firebug.jgz','skin/xp/sprite.png','https://getfirebug.com/releases/lite/beta/','#startOpened');">Firebug Lite 1.3b</a></li>
                                  -            <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.2','firebug.jgz','skin/xp/sprite.png','https://getfirebug.com/releases/lite/beta/','#startOpened');">Firebug Lite 1.3Xb</a> (with trace enabled**)</li>
                                  -        </ul>
                                  -        <p>
                                  -            <i>**The trace enabled bookmarlet is intended to help identify error in Firebug Lite.
                                  -            If you find a bug, run the trace enabled bookmarlet and look for something
                                  -            strange in the logs.</i>
                                  -        </p>
                                  -        <h3>b) Live link</h3>
                                  -        <p>
                                  -            You can also link directly to the hosted version at getfirebug.com. Copy the
                                  -            following code, and paste it in the TOP of the HEAD of your document:
                                  -        </p>
                                  -<textarea rows="3">
                                  -&lt;script type="text/javascript" src="https://getfirebug.com/releases/lite/beta/firebug.jgz"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        <h3>c) Local link (offline)</h3>
                                  -        <p>
                                  -            If you need using Firebug Lite while offline, 
                                  -            <a href="firebug.tar.tgz">download the code</a>, 
                                  -            copy to a local destination, and link the <em>firebug.jgz</em> in the TOP
                                  -            of the HEAD of your document.
                                  -        </p>
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="/local/path/to/firebug.jgz"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        <h3>d) Development mode:</h3>
                                  -        <p>
                                  -            If you want to debug Firebug Lite, fix a bug, or add a new feature, you will want
                                  -            to run the Firebug Lite in development mode. To do so, first
                                  -            <a href="http://fbug.googlecode.com/svn/lite/branches/firebug1.3/">checkout the latest version</a>
                                  -            in our repository, and then insert a script at the TOP of the HEAD of your document.
                                  -        </p>
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="/local/path/to/firebug-lite-dev.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        <p>
                                  -            When in development mode, some things behave quite differently to make the
                                  -            development process easier, such as:
                                  -        </p>
                                  -        <ul>
                                  -            <li>All script files are loaded separately, without compression.</li>
                                  -            <li>The internal library that Firebug Lite uses (aka FBL) is exposed to the 
                                  -            global namespace, allowing you to inspect its content. It is also exposed
                                  -            the domplate and its classes, and the FBTrace object</li>
                                  -            <li>The skin is loaded in a separated file, allowing you to rapidly change
                                  -            the style and/or markup of the User Interface.</li>
                                  -            <li>It will force to open Firebug Lite even when Firebug is active (which is
                                  -            not the default behavior), so you can use Firebug to debug it.</li>
                                  -            <li>A new panel "Dev" will be available with tools to compress the skin,
                                  -            and the source code of the application in a single file.</li>
                                  -        </ul>
                                  -    </div>
                                  -</div>
                                  -
                                  - 
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Options" rel="bookmark">Options</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            The properties you can change include (with respective default values):
                                  -        </p>
                                  -        <ul>
                                  -            <li><code>saveCookies</code> - false</li>
                                  -            <li><code>startOpened</code> - false</li>
                                  -            <li><code>startInNewWindow</code> - false</li>
                                  -            <li><code>showIconWhenHidden</code> - true</li>
                                  -            <li><code>overrideConsole</code> - true</li>
                                  -            <li><code>ignoreFirebugElements</code> - true</li>
                                  -            <li><code>disableWhenFirebugActive</code> - true</li>
                                  -            <li><code>enableTrace</code> - false</li>
                                  -            <li><code>enablePersistent</code> - false</li>
                                  -        </ul>
                                  -        <p>
                                  -            You can change the options using any of the following methods 
                                  -            (in ascendant order of priority):
                                  -        </p>
                                  -        <h3>a) debug="true"</h3>
                                  -        <p>
                                  -            For backwards compatibility you can still use the debug="true" attribute
                                  -            in the &lt;html&gt; tag to make Firebug Lite starts opened, like:
                                  -        </p>
                                  -        <pre>&lt;html <em>debug="true"</em>&gt;</pre>
                                  -        
                                  -        <h3>b) Script URL options</h3>
                                  -        <p>
                                  -            You can also set the options using URL fragment, specially handy to tweak 
                                  -            options in your bookmarlet.
                                  -        </p>
                                  -<pre>
                                  -https://getfirebug.com/releases/lite/beta/firebug.jgz<em>#enableTrace</em>
                                  -</pre>
                                  -        <p>
                                  -            Options are separated by commas (<code>,</code>), and values are informed using
                                  -            the equals to (<code>=</code>) symbol. If no value is informed, it is
                                  -            assumed "<code>true</code>".
                                  -        </p>
                                  -<pre>
                                  -path/to/firebug.jgz<em>#enableTrace,overrideConsole=false</em>
                                  -</pre>
                                  -        <p>is equivalent to:</p>
                                  -<pre>
                                  -path/to/firebug.jgz<em>#enableTrace=true,overrideConsole=false</em>
                                  -</pre>
                                  -<br/>
                                  -        <h3>c) Script JSON options</h3>
                                  -        <p>
                                  -            It is possible to set options using a JSON object inside
                                  -            the linked script:
                                  -        </p>
                                  -<pre>
                                  -&lt;script type="text/javascript" 
                                  -src="https://getfirebug.com/releases/lite/beta/firebug.jgz"&gt;
                                  -<em>{
                                  -    overrideConsole: false,
                                  -    startInNewWindow: true,
                                  -    startOpened: true,
                                  -    enableTrace: true
                                  -}</em>
                                  -&lt;/script&gt;
                                  -</pre>
                                  -        <h3>d) Cookies</h3>
                                  -        <p>
                                  -            Finally, you can override the options using cookies, via User Interface,
                                  -            by clicking in the Firebug icon in the upper-left corner.
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  - 
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="WhatToTest" rel="bookmark">What to test?</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            That's a lot of things to test, but we're particularly interested in
                                  -            make sure the core of the application is working well before we move on
                                  -            to the beta stage. Here are the list of the most important things to test:
                                  -        </p>
                                  -        
                                  -        <h3>5.1. Loading</h3>
                                  -        <p>
                                  -            Firebug Lite should run fine no matter how it was loaded. 
                                  -        </p>
                                  -        <p>
                                  -            <b>Bookmarlet</b> - the current bookmarlet used in both Firebug Lite 1.2 and
                                  -            1.3 versions contains some problems and limitations (it won't load
                                  -            for example in XHTML and/or XML+XSL documents). We're particularly
                                  -            insterested in find such problems in the bookmarlet now we're in
                                  -            beta stage, because updating bookmarlets is a boring task, and
                                  -            should be done by the user individually, in each browser. 
                                  -        </p>
                                  -        <p>
                                  -            <b>Local include</b> - Firebug Lite should load fine when using relative
                                  -            paths in the URL (when loaded locally).
                                  -        </p>
                                  -        <p>
                                  -            <b>Live include</b> - Firebug Lite should load fine when loaded directly
                                  -            from getfirebug.com.  
                                  -        </p>
                                  -        
                                  -        <h3>5.2. Rendering</h3>
                                  -        <p>
                                  -            Please report us if you see some weird behavior in the User Interface, such
                                  -            as misplaced elements, elements not rendered, abnormal flickering, partial 
                                  -            rendered panels, or any other visual weirdness.  
                                  -        </p>
                                  -        
                                  -        <h3>5.4. Document Types</h3>
                                  -        <p>
                                  -            Firebug Lite should work in different types of documents such as
                                  -            XHTML and/or XML+XSL documents.
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Contributing" rel="bookmark">Contributing</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            Your contribution is very important. Found a bug? Have a suggestion? Please
                                  -            <a href="http://code.google.com/p/fbug/issues/list">report us</a>. 
                                  -        </p>
                                  -        <p>
                                  -            Found a fix for a particular issue? 
                                  -            <a href="http://code.google.com/p/fbug/issues/list">Patches are welcome</a>.
                                  -            Also, if you are willing to help more deeply with coding,
                                  -            <a href="http://groups.google.com/group/firebug-working-group">join our team</a>.
                                  -        </p>
                                  -        <p>
                                  -            <span class="spread">
                                  -                <strong class="spreadText">Spread the word:</strong>
                                  -                <a class="retweet" href="http://getfirebug.com/releases/lite/beta/">Firebug Lite 1.3.0 beta released</a>
                                  -            </span>
                                  -            Last, but not least, you can also helping us by spreading the word, inviting
                                  -            more people to test this new version. Feel free to post about it in your
                                  -            blog, social network, or use the retweet button on the left. 
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -</div> <!-- /END blog --> 
                                  - 
                                  -</div> <!-- /END content --> 
                                  - 
                                  -<div id="links"> 
                                  -<h2 class="heading">Links and Stuff</h2> 
                                  -
                                  -<!-- Delicious --> 
                                  -<h2 class="delicious-banner sidebar-title">Release notes content</h2> 
                                  -<ul> 
                                  -    <li><a href="#Overview">1. Overview</a></li> 
                                  -    <li><a href="#WhatsNew">2. What's New?</a></li> 
                                  -    <li><a href="#Install">3. Install</a></li> 
                                  -    <li><a href="#Options">4. Options</a></li> 
                                  -    <li><a href="#WhatToTest">5. What to test?</a></li> 
                                  -    <li><a href="#Contributing">6. Contributing</a></li> 
                                  -</ul> 
                                  -
                                  -<!-- Delicious --> 
                                  -<h2 class="delicious-banner sidebar-title">Bookmarlets</h2> 
                                  -<ul>
                                  -    <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.2','firebug.jgz','skin/xp/sprite.png','https://getfirebug.com/releases/lite/beta/','#startOpened');">Firebug Lite 1.3b</a></li>
                                  -    <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.2','firebug.jgz','skin/xp/sprite.png','https://getfirebug.com/releases/lite/beta/','#startOpened');">Firebug Lite 1.3Xb</a> (with trace enabled**)</li>
                                  -</ul>
                                  -
                                  -<!-- Delicious --> 
                                  -<!--[!IE]>
                                  -<div id="delicious-posts-firebug" class="delicious-posts"> 
                                  -<h2 class="delicious-banner sidebar-title">Firebug around the web</h2> 
                                  -<script type="text/javascript" src="http://feeds.delicious.com/v2/js/firebugnews?count=5&amp;title=&amp;sort=date&amp;extended"></script> 
                                  -</div>
                                  -<![endif]-->
                                  - 
                                  -</div> <!-- /END links --> 
                                  - 
                                  -</div> <!-- /END contentarea --> 
                                  - 
                                  -</div> <!-- /END secondary --> 
                                  - 
                                  -<div id="footer" class="group"> 
                                  - 
                                  -<div class="nav"> 
                                  -<h3>Firebug</h3> 
                                  -<ul> 
                                  -<li><a href="/">Home</a></li> 
                                  -<li><a href="/downloads">Downloads</a></li> 
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a></li> 
                                  -<li><a href="/whatisfirebug">What is Firebug</a> 
                                  -</li> 
                                  -<li><a href="/community">Community</a></li> 
                                  -<li><a href="/getinvolved">Get Involved</a></li> 
                                  -<li><a href="http://blog.getfirebug.com/">Blog</a></li> 
                                  -</ul> 
                                  -</div> 
                                  - 
                                  -<div id="legal"> 
                                  -<div id="copyright"> 
                                  -<img src="http://getfirebug.com/img/mozilla-logo.png" width="41" height="31" alt="Firefox Logo" /> 
                                  -<p><span>Copyright &copy; 2005-2010 Mozilla.</span> All rights reserved.</p> 
                                  -</div> 
                                  - 
                                  -<ul> 
                                  -<li><a href="http://www.mozilla.com/en-US/privacy-policy.html">Privacy Policy</a></li> 
                                  -<li><a href="http://www.mozilla.com/en-US/about/legal.html">Legal Notices</a></li> 
                                  - 
                                  -</ul> 
                                  -</div> 
                                  -<div class="bigfirebug"></div> 
                                  - 
                                  - 
                                  -</div> <!-- /END footer --> 
                                  -</div> <!-- /END wrap --> 
                                  - 
                                  -</body> 
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/beta/retweet.js b/branches/flexBox/docs/beta/retweet.js
                                  deleted file mode 100644
                                  index dd8eb372..00000000
                                  --- a/branches/flexBox/docs/beta/retweet.js
                                  +++ /dev/null
                                  @@ -1,168 +0,0 @@
                                  -/*
                                  - * Easy Retweet Button
                                  - * http://ejohn.org/blog/retweet/
                                  - *   by John Resig (ejohn.org)
                                  - *
                                  - * Licensed under the MIT License:
                                  - * http://www.opensource.org/licenses/mit-license.php
                                  - */
                                  -
                                  -(function(){
                                  -
                                  -window.RetweetJS = {
                                  -	// Your Bit.ly Username
                                  -	bitly_user: "retweetjs",
                                  -
                                  -	// Your Bit.ly API Key
                                  -	// Found here: http://bit.ly/account
                                  -	bitly_key: "R_6287c92ecaf9efc6f39e4f33bdbf80b1",
                                  -
                                  -	// The text to replace the links with
                                  -	link_text: (/windows/i.test( navigator.userAgent) ? "&#9658;" : "&#9851;") +
                                  -		"&nbsp;Retweet",
                                  -
                                  -	// What # to show (Use "clicks" for # of clicks or "none" for nothing)
                                  -	count_type: "clicks",
                                  -
                                  -	// Tweet Prefix text
                                  -	// "RT @jeresig " would result in: "RT @jeresig Link Title http://bit.ly/asdf"
                                  -	prefix: "",
                                  -
                                  -	// Style information
                                  -	styling: "a.retweet { font: 12px Helvetica,Arial; color: #000; text-decoration: none; border: 0px; }" +
                                  -		"a.retweet span { color: #FFF; background: #94CC3D; margin-left: 2px; border: 1px solid #43A52A; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
                                  -		"a.vert { display: block; text-align: center; font-size: 16px; float: left; margin: 4px; }" +
                                  -		"a.retweet strong.vert { display: block; margin-bottom: 4px; background: #F5F5F5; border: 1px solid #EEE; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; }" +
                                  -		"a.retweet span.vert { display: block; font-size: 12px; margin-left: 0px; }"
                                  -};
                                  -
                                  -//////////////// No Need to Configure Below Here ////////////////
                                  -
                                  -var loadCount = 1;
                                  -
                                  -// Asynchronously load the Bit.ly JavaScript API
                                  -// If it hasn't been loaded already
                                  -if ( typeof BitlyClient === "undefined" ) {
                                  -	var head = document.getElementsByTagName("head")[0] ||
                                  -		document.documentElement;
                                  -	var script = document.createElement("script");
                                  -	script.src = "http://bit.ly/javascript-api.js?version=latest&login=" +
                                  -		RetweetJS.bitly_user + "&apiKey=" + RetweetJS.bitly_key;
                                  -	script.charSet = "utf-8";
                                  -	head.appendChild( script );
                                  -
                                  -	var check = setInterval(function(){
                                  -		if ( typeof BitlyCB !== "undefined" ) {
                                  -			clearInterval( check );
                                  -			head.removeChild( script );
                                  -			loaded();
                                  -		}
                                  -	}, 10);
                                  -
                                  -	loadCount = 0;
                                  -}
                                  -
                                  -if ( document.addEventListener ) {
                                  -	document.addEventListener("DOMContentLoaded", loaded, false);
                                  -
                                  -} else if ( window.attachEvent ) {
                                  -	window.attachEvent("onload", loaded);
                                  -}
                                  -
                                  -function loaded(){
                                  -	// Need to wait for doc ready and js ready
                                  -	if ( ++loadCount < 2 ) {
                                  -		return;
                                  -	}
                                  -
                                  -	var elems = [], urlElem = {}, hashURL = {};
                                  -
                                  -	BitlyCB.shortenResponse = function(data) {
                                  -		for ( var url in data.results ) {
                                  -			var hash = data.results[url].userHash;
                                  -			hashURL[hash] = url;
                                  -
                                  -			var elems = urlElem[ url ];
                                  -
                                  -			for ( var i = 0; i < elems.length; i++ ) {
                                  -				elems[i].href += hash;
                                  -			}
                                  -
                                  -			if ( RetweetJS.count_type === "clicks" ) {
                                  -				BitlyClient.stats(hash, 'BitlyCB.statsResponse');
                                  -			}
                                  -		}
                                  -	};
                                  -
                                  -	BitlyCB.statsResponse = function(data) {
                                  -		var clicks = data.results.clicks, hash = data.results.userHash;
                                  -		var url = hashURL[ hash ], elems = urlElem[ url ];
                                  -
                                  -		if ( clicks > 0 ) {
                                  -			for ( var i = 0; i < elems.length; i++ ) {
                                  -				var strong = document.createElement("strong");
                                  -				strong.appendChild( document.createTextNode( clicks + " " ) );
                                  -				elems[i].insertBefore(strong, elems[i].firstChild);
                                  -
                                  -				if ( /(^|\s)vert(\s|$)/.test( elems[i].className ) ) {
                                  -					elems[i].firstChild.className = elems[i].lastChild.className = "vert";
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		hashURL[ hash ] = urlElem[ url ] = null;
                                  -	};
                                  -
                                  -	if ( document.getElementsByClassName ) {
                                  -		elems = document.getElementsByClassName("retweet");
                                  -	} else {
                                  -		var tmp = document.getElementsByTagName("a");
                                  -		for ( var i = 0; i < tmp.length; i++ ) {
                                  -			if ( /(^|\s)retweet(\s|$)/.test( tmp[i].className ) ) {
                                  -				elems.push( tmp[i] );
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	if ( elems.length && RetweetJS.styling ) {
                                  -		var style = document.createElement("style");
                                  -		style.type = "text/css";
                                  -
                                  -		try {
                                  -			style.appendChild( document.createTextNode( RetweetJS.styling ) );
                                  -		} catch (e) {
                                  -			if ( style.styleSheet ) {
                                  -				style.styleSheet.cssText = RetweetJS.styling;
                                  -			}
                                  -		}
                                  -
                                  -		document.body.appendChild( style );
                                  -	}
                                  -
                                  -	for ( var i = 0; i < elems.length; i++ ) {
                                  -		var elem = elems[i];
                                  -
                                  -		if ( /(^|\s)self(\s|$)/.test( elem.className ) ) {
                                  -			elem.href = window.location;
                                  -			elem.title = document.title;
                                  -		}
                                  -
                                  -		var origText = elem.title || elem.textContent || elem.innerText,
                                  -			href = elem.href;
                                  -
                                  -		elem.innerHTML = "<span>" + RetweetJS.link_text + "</span>";
                                  -		elem.title = "";
                                  -		elem.href = "http://twitter.com/home?status=" +
                                  -			encodeURIComponent(RetweetJS.prefix + origText + " http://bit.ly/");
                                  -
                                  -		if ( urlElem[ href ] ) {
                                  -			urlElem[ href ].push( elem );
                                  -		} else {
                                  -			urlElem[ href ] = [ elem ];
                                  -			BitlyClient.shorten(href, 'BitlyCB.shortenResponse');
                                  -		}
                                  -	}
                                  -
                                  -}
                                  -
                                  -})();
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img01.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img01.png
                                  deleted file mode 100644
                                  index 5e0c9dde..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img01.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img02.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img02.png
                                  deleted file mode 100644
                                  index d47d47f3..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img02.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img03.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img03.png
                                  deleted file mode 100644
                                  index aeadf4e8..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img03.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img04.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img04.png
                                  deleted file mode 100644
                                  index 641027d6..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img04.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img05.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img05.png
                                  deleted file mode 100644
                                  index 1828933b..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img05.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img06.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img06.png
                                  deleted file mode 100644
                                  index 07534179..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img06.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img07.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img07.png
                                  deleted file mode 100644
                                  index 5a705cd4..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img07.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img08.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img08.png
                                  deleted file mode 100644
                                  index 3b368ec3..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img08.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img09.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img09.png
                                  deleted file mode 100644
                                  index 65f37559..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img09.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img10.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img10.png
                                  deleted file mode 100644
                                  index e420131d..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img10.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img11.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img11.png
                                  deleted file mode 100644
                                  index 8454dd7c..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img11.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img12.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img12.png
                                  deleted file mode 100644
                                  index 1e818684..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img12.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-img13.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-img13.png
                                  deleted file mode 100644
                                  index 850d7846..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-img13.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/beta/screenshots/firebug1.3-small.png b/branches/flexBox/docs/beta/screenshots/firebug1.3-small.png
                                  deleted file mode 100644
                                  index d66f197b..00000000
                                  Binary files a/branches/flexBox/docs/beta/screenshots/firebug1.3-small.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/chrome/changelog.txt b/branches/flexBox/docs/chrome/changelog.txt
                                  deleted file mode 100644
                                  index 7aa1e81c..00000000
                                  --- a/branches/flexBox/docs/chrome/changelog.txt
                                  +++ /dev/null
                                  @@ -1,485 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0b1 - 2009-02-05 - Revision: 6012
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented a more robust stylesheet scanner (will scan imported stylesheets)
                                  -    - Implemented a cascading styles analyser (will detect which CSS rules are applied
                                  -      to a particular element, in the proper cascading order)
                                  -      
                                  -    - Ported css.js file from Firebug, including the following features:
                                  -        - live edit of CSS properties
                                  -        - enable/disable CSS properties on-the-fly
                                  -        - Cascading visualization
                                  -        - Inheritance visualization (with overriden properties marked)
                                  -    
                                  -    - Ported the CSS Panel
                                  -    - Ported the Style Panel
                                  -    - Ported the Computed Panel divided in categories (in a separated tab)
                                  -    - Fixed the problem with external stylesheets (now shows a "Access restricted" message). 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - Autocomplete feature with UP/DOWN keys
                                  -    - "Complete as you type" feature in most browsers (not working in Opera yet)
                                  -    - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN
                                  -    - Navigation with TAB/SHIFT+TAB
                                  -    - Fixed the CSS of editor to work in all browsers
                                  -    - Pretty inline editor support in IE6
                                  -    - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't 
                                  -      trigger the onkeypress event, making some changes in the editor not apply 
                                  -      to the CSS property.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Strings are properly rendered in console.* calls
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Don't show the Firebug Lite source code in the script list
                                  -    - Refactored Script panel
                                  -    - Fixed potential memory leak
                                  -    - Using the Warning template in the Script panel when failing to load external scripts.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - When running as Chrome extension, all images used in the interface are
                                  -      stored in the extension directory, hugely improving the perceived loading
                                  -      time for GUI operations, specially in the startup.
                                  -      
                                  -    - Implemented the chrome.deactivate() method
                                  -
                                  --------------------------------------------------------------------------------
                                  -GUI
                                  --------------------------------------------------------------------------------
                                  -    - Added the "off" button to the UI
                                  -    - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+
                                  -    - Fixed problem with panel initialization that was breaking the scroll 
                                  -      position persistence of the panels.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Added domplate tag.insertBefore method
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Added KeyEvent constants
                                  -    - Added bindFixed method
                                  -    - Added Whitespace and Entity conversions methods
                                  -    - Added String escaping methods
                                  -    - Added CSS methods
                                  -    - Added DOM queries methods
                                  -    
                                  -    - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" 
                                  -      CSS selector that was used to match the element)
                                  -     
                                  -    - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition()
                                  -      to support text selection and caret position detection in editor module
                                  -      
                                  -    - Making instanceOf() work also for non HTML elements (elements without ownerDocument 
                                  -      property), to avoid the use of the instanceof operator, that may cause error in other 
                                  -      browsers when the Class is not defined in the global namespace.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Ported editor.js module from Firebug
                                  -    - Ported a simplified version of tabContext.js
                                  -    - Implemented a more robust Cache system that will be used internally
                                  -    - Implemented a message dispatching method to communicate with the Chrome extension
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a5 - 2009-01-16 - Revision: 5719
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Large Command Line
                                  -    - Refactoring CommandLine module for better readability and encapsulation (commandHistory
                                  -        is now a private variable in CommandLine module)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Fix problem in iframe creation that was blocking the UI creation via
                                  -      bookmarlet in IE, for some pages.
                                  -      
                                  -    - Allow Firebug Lite UI to load in "windowless mode", without creating an
                                  -      iframe. This is necessary to make the bookmarlet run in cases where it
                                  -      is not possible to create an iframe.
                                  -      
                                  -    - Refactoring Chrome module for better readability
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - refined the layout of buttons (added an image background)
                                  -    - refined the layout of log groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -Context
                                  --------------------------------------------------------------------------------
                                  -    - Better context evaluation (commands with multiple lines are now properly evaluated)
                                  -    - context.evaluate() properly executes and returns the value of expressions with 
                                  -      multiple commands (be it multilined or not).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Style
                                  --------------------------------------------------------------------------------
                                  -    - Basic editing feature of inline styles (Style panel)
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - properly format inline style of elements in IE to lower-case in HTML panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - fixed visibility detection and visibility representation of elements
                                  -    - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), 
                                  -      and others. IE has a different pattern for identifying mouse buttons.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc).
                                  -    - ported the consoleInjetor.js file that will be used with the new console (console2.js)
                                  -    - ported the console.js file from Firebug codebase (not enabled yet). This will replace 
                                  -      the current implementation of the Console panel in the 1.3 final version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - new XHR watcher (with response and headers tabs) 
                                  -    - fixed variable "root" leaking to global namespace (domplate.js) 
                                  -    - improved development build functions
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4 - 2009-12-31 - Revision: 5505 
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Implemented synchronization of the persistent popup
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - Moved all UI components to a separated gui.js file.
                                  -    - Implemented the Menu class (with normal, checkbox, radiobutton, group
                                  -      and separator items), that will be used in options menus at 1.3 verson
                                  -      and in contexts menus at 1.4 version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -    - Implemented the console.trace (thanks dongryphon for the contribution!)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the border in the BoxModel Highlight
                                  -    
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Internet Explorer and inline styles representation (thanks christophe.blin 
                                  -      for the contribution!)
                                  -
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3 - 2009-09-13 - Revision: 4882
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2 - 2009-08-03 - Revision: 3847
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1 - 2009-05-03 - Revision: 2729
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0 - 2009-01-24 - Revision: 1765
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/chrome/index.html b/branches/flexBox/docs/chrome/index.html
                                  deleted file mode 100644
                                  index adff58ba..00000000
                                  --- a/branches/flexBox/docs/chrome/index.html
                                  +++ /dev/null
                                  @@ -1,349 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
                                  -
                                  -<title>Firebug Lite for Google Chrome : Firebug</title>
                                  -
                                  -<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico">
                                  -
                                  -<!--[if gte IE 7]>
                                  -<link rel="stylesheet" type="text/css" media="screen,projection" href="/styles/screen.css?v2">
                                  -<![endif]-->
                                  -
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" type="text/css" media="screen,projection" href="/styles/ie.css?v1">
                                  -<![endif]-->
                                  -
                                  -<script type="text/javascript" src="/js/main.js"></script>
                                  -<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -<script type="text/javascript" src="/js/jquery.mousewheel-3.0.2.js"></script>
                                  -<script type="text/javascript" src="/js/fancybox.js"></script>
                                  -<script type="text/javascript">
                                  -  $(document).ready(function() {
                                  -			$('a.view').fancybox({
                                  -			 'transitionIn' : 'elastic',
                                  -			 'transitionOut' : 'elastic',
                                  -			 'autoScale' : false,
                                  -			 'centerOnScroll' : true
                                  -			});
                                  -			$('a.lightbox').fancybox({
                                  -			 'transitionIn' : 'elastic',
                                  -			 'transitionOut' : 'elastic',
                                  -			 'hideOnContentClick' : true
                                  -			});
                                  -			$('a#whatsnew-show').click(function() {
                                  -                $('#whatsnew15').toggle('slow');
                                  -                return false;
                                  -            });
                                  -});
                                  -</script>
                                  -<link rel="stylesheet" type="text/css" media="screen,projection" href="/styles/screen.css?v2">
                                  -<style>
                                  -
                                  -#install p {
                                  -    margin: 15px 0 0 30px;
                                  -    width: 250px;
                                  -}
                                  -
                                  -#install p a {
                                  -    width: 250px;
                                  -}
                                  -
                                  -.moreinfo {
                                  -    width: 100%;
                                  -    font-size: 11px important!;
                                  -}
                                  -
                                  -.intro {
                                  -    margin: 2.5em 0;
                                  -    font-size: 11px important!;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.postDate {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.post h2 {
                                  -    margin: 1em 0 0;
                                  -}
                                  -
                                  -.post h3 {
                                  -    font-size: 1.25em;
                                  -    margin: 1em 0 0;
                                  -}
                                  -
                                  -
                                  -#links .sidebar-title {
                                  -    margin: 2em 0 0;
                                  -}
                                  -
                                  -#links a {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -#screencast a {
                                  -    text-decoration: none !important;
                                  -    display: block;
                                  -}
                                  -
                                  -#screencast img {
                                  -    margin: 0 !important;
                                  -}
                                  -
                                  -textarea {
                                  -    border: none;
                                  -    width: 100%;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.spread {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 140px;
                                  -    background: #F6F9FE;
                                  -    padding: 5px 5px 10px;
                                  -    margin-right: 10px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.spread a {
                                  -    font-size: 1px;
                                  -    color: #eee;
                                  -}
                                  -
                                  -.spread .spreadText {
                                  -    display: block;
                                  -    margin-bottom: 10px;
                                  -}
                                  -
                                  -.bottomSpacer {
                                  -    height: 220px;
                                  -}
                                  -</style>
                                  -
                                  -
                                  -</head>
                                  -
                                  -<body id="article">
                                  -<div id="wrap" class="group">
                                  -
                                  -<div id="header" class="group">
                                  -
                                  -<ul id="nav">
                                  -<li><a href="/whatisfirebug">What is Firebug?</a>
                                  -<span>Introduction and Features</span></li>
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a>
                                  -<span>Documentation wiki, FAQ, and other Firebug lore</span></li>
                                  -<li><a href="/community">Community</a><span>Discussion forums and lists</span></li>
                                  -<li><a href="/getinvolved">Get Involved</a><span>Hack the code, create plugins</span></li>
                                  -</ul>
                                  -
                                  -<div id="logo-install" class="group">
                                  -
                                  -<div id="logo">
                                  -<a href="/"></a>
                                  -<h1>Firebug</h1>
                                  -<h2>Web Development Evolved.</h2>
                                  -</div>
                                  -
                                  -<div id="install" class="group"> 
                                  -<p>
                                  -  <a href="https://chrome.google.com/extensions/detail/bmagokdooijbeehmkpknfglimnifench">Install Firebug Lite</a>
                                  -  <span>100% free and open source</span>
                                  -</p> 
                                  -<ul>
                                  -  <li><a href="/firebuglite">Cross-browser Version</a></li>
                                  -  <li><a href="/releases/lite/">Other Versions</a></li>
                                  -</ul>
                                  -</div>
                                  -
                                  -
                                  -</div> <!-- /END logo-install -->
                                  -
                                  -
                                  -</div> <!-- /END header -->
                                  -
                                  -<div id="articleheader">
                                  -<!-- Undefined content: article_img --></div>
                                  -
                                  -<div id="secondary" class="group">
                                  -
                                  -<div id="contentarea" class="group">
                                  -
                                  -<div id="content" class="group"> 
                                  -<h2 class="heading">Firebug Lite for Google Chrome</h2> 
                                  -<div id="blog">
                                  -
                                  -<div class="intro"> 
                                  -    <p>
                                  -    </p>
                                  -</div> 
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Overview" rel="bookmark">Overview</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            Firebug Lite for Google Chrome is not a substitute for Firebug, 
                                  -            or Chrome Developer Tools. It is a tool to be used in conjunction 
                                  -            with these tools. Firebug Lite provides the rich visual representation 
                                  -            we are used to see in Firebug when it comes to HTML elements, 
                                  -            DOM elements, and Box Model shading. It provides also some cool 
                                  -            features like inspecting HTML elemements with your mouse, 
                                  -            and live editing CSS properties.
                                  -        </p>
                                  -        <p>
                                  -            To get more information about 
                                  -            <a href="http://getfirebug.com/firebuglite#WhatsNew">what's new</a> 
                                  -            in Firebug Lite (which is compatible with all major browsers) please visit the
                                  -            <a href="http://getfirebug.com/firebuglite">Firebug Lite page</a>.
                                  -        </p>
                                  -        
                                  -        <h3 name="Benefits">Benefits over Firebug Lite</h3> 
                                  -        <p>
                                  -            Firebug Lite for Google Chrome is basically the same you'll see 
                                  -            when using the bookmarklet, or including a <code>script</code> tag
                                  -            in your page. There are, though, some benefits by using the extension 
                                  -            for Google Chrome, including:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Browser toolbar integration, providing a quick access to Firebug Lite</li>
                                  -            <li>It works without internet connection</li>
                                  -            <li>Faster loading and no FOUC (Flash of Unstyled Content), once resources 
                                  -            will be stored in the extension's directory on your machine</li>
                                  -            <li>Firebug Lite will be loaded before all other scripts, allowing it
                                  -            to capture all console calls and all XHR requests for that page</li>
                                  -            <li>It is possible to activate the Firebug Lite for a particular domain, so next
                                  -            time you visit a page in that domain it will be automatically active.</li>
                                  -        </ul>
                                  -        
                                  -        <h3 name="Limitations">Limitations</h3> 
                                  -        <p>
                                  -            The main limitations of the Firebug Lite version are: 
                                  -        </p>
                                  -        <ul>
                                  -            <li>Cannot read external resources</li>
                                  -            <li>Won't work well on pages with frames</li>
                                  -            <li>JavaScript debugger isn't available</li>
                                  -            <li>Net Panel isn't available</li>
                                  -        </ul>
                                  -    </div>
                                  -</div>
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Activation" rel="bookmark">Activation</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            The Firebug Lite activation scheme is very simple. When you first visit
                                  -            a web page Firebug Lite icon will be gray, indicating that it is deactivated.
                                  -            Clicking on it will activate Firebug Lite for all pages in that domain and the
                                  -            icon will become orange.
                                  -        </p>
                                  -        <p>
                                  -            Next time you visit a page in that domain, Firebug Lite will be automatically
                                  -            active, and the UI will be open or minimized according to the last time
                                  -            you used it.
                                  -        </p>
                                  -        <p>
                                  -            To deactivate Firebug Lite for a particular domain, go to a page in that domain 
                                  -            and click on the "off" button. Since Firebug Lite uses localStorage to store
                                  -            the activation info when you clear your browser's cache, Firebug Lite
                                  -            will be deactivated for all pages.
                                  -        </p>
                                  -    </div> 
                                  -</div>
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Contributing" rel="bookmark">Contributing</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            Your contribution is very important. 
                                  -            If you have a specific issue, like a bug or feature request, please 
                                  -            <a href="http://code.google.com/p/fbug/issues/list">post a detailed description</a> 
                                  -            of the issue, and we will do our best to make it happen. 
                                  -            If you have a more general issue or have something to say, 
                                  -            <a href="http://groups.google.com/group/firebug">let us know</a>.
                                  -            Found a fix for a particular issue? 
                                  -            <a href="http://code.google.com/p/fbug/issues/list">Patches are welcome</a>.
                                  -            If you would like to help with some code or would like to develop
                                  -            an extension for Firebug Lite, don't hesitate: 
                                  -            <a href="http://groups.google.com/group/firebug-working-group">join our team</a>.
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -</div> <!-- /END blog --> 
                                  - 
                                  -</div> <!-- /END content --> 
                                  - 
                                  -<div id="links"> 
                                  -<h2 class="heading">Links and Stuff</h2> 
                                  -
                                  -<!-- Delicious --> 
                                  -<h2 class="delicious-banner sidebar-title">Release notes content</h2> 
                                  -<ul> 
                                  -    <li><a href="#Overview">1. Overview</a></li> 
                                  -    <li><a href="#Activation">2. Activation</a></li> 
                                  -    <li><a href="#Contributing">3. Contributing</a></li> 
                                  -</ul> 
                                  -  
                                  -<!-- Delicious --> 
                                  -<div id="delicious-posts-firebug" class="delicious-posts"> 
                                  -<h2 class="delicious-banner sidebar-title">Firebug around the web</h2> 
                                  -<script type="text/javascript" src="http://feeds.delicious.com/v2/js/firebugnews?count=5&amp;title=&amp;sort=date&amp;extended"></script> 
                                  -</div> 
                                  - 
                                  -</div> <!-- /END links --> 
                                  - 
                                  -</div> <!-- /END contentarea --> 
                                  - 
                                  -</div> <!-- /END secondary --> 
                                  - 
                                  -<div id="footer" class="group"> 
                                  - 
                                  -<div class="nav"> 
                                  -<h3>Firebug</h3> 
                                  -<ul> 
                                  -<li><a href="/">Home</a></li> 
                                  -<li><a href="/downloads">Downloads</a></li> 
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a></li> 
                                  -<li><a href="/whatisfirebug">What is Firebug</a> 
                                  -</li> 
                                  -<li><a href="/community">Community</a></li> 
                                  -<li><a href="/getinvolved">Get Involved</a></li> 
                                  -<li><a href="http://blog.getfirebug.com/">Blog</a></li> 
                                  -</ul> 
                                  -</div> 
                                  - 
                                  -<div id="legal"> 
                                  -<div id="copyright"> 
                                  -<img src="http://getfirebug.com/img/mozilla-logo.png" width="41" height="31" alt="Firefox Logo" /> 
                                  -<p><span>Copyright &copy; 2005-2010 Mozilla.</span> All rights reserved.</p> 
                                  -</div> 
                                  - 
                                  -<ul> 
                                  -<li><a href="http://www.mozilla.com/en-US/privacy-policy.html">Privacy Policy</a></li> 
                                  -<li><a href="http://www.mozilla.com/en-US/about/legal.html">Legal Notices</a></li> 
                                  - 
                                  -</ul> 
                                  -</div> 
                                  -<div class="bigfirebug"></div> 
                                  - 
                                  - 
                                  -</div> <!-- /END footer --> 
                                  -</div> <!-- /END wrap --> 
                                  - 
                                  -</body> 
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/chrome/info.txt b/branches/flexBox/docs/chrome/info.txt
                                  deleted file mode 100644
                                  index c7799536..00000000
                                  --- a/branches/flexBox/docs/chrome/info.txt
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -Overview
                                  --------------
                                  -
                                  -Firebug Lite is not a substitute for Firebug, or Chrome Developer Tools. It is a tool to be used in conjunction with these tools. Firebug Lite provides the rich visual representation we are used to see in Firebug when it comes to HTML elements, DOM elements, and Box Model shading. It provides also some cool features like inspecting HTML elemements with your mouse, and live editing CSS properties.
                                  -
                                  -For more detailed information, visit:
                                  -http://getfirebug.com/releases/lite/chrome/
                                  -
                                  -
                                  -Benefits over Firebug Lite bookmarlet
                                  ------------------------------------------------------
                                  -
                                  -  * Browser toolbar integration
                                  -  * Able to activate Firebug Lite for a particular domain
                                  -  * Firebug Lite will be loaded before all other scripts, allowing it to capture all console calls, and all XHR requests for that page
                                  -  * It is faster to load, because all code and images will be store in the extension's directory in your machine
                                  -  * Will be able to read external resources in the next version
                                  -
                                  -
                                  -Limitations
                                  -----------------
                                  -
                                  - * Cannot read external resources
                                  - * Won't work well on pages with frames
                                  - * JavaScript debugger isn't available
                                  - * Net Panel isn't available
                                  -
                                  -
                                  -Activation
                                  ---------------
                                  -
                                  -The Firebug Lite activation scheme is very simple. When you first visit a web page, Firebug icon will be gray, indicating that it is deactivated. Clicking on it will activate Firebug for all pages in that domain, and the icon will become orange.
                                  -
                                  -To deactivate for a particular domain, go to a page in that domain, and click on the "off" button.
                                  -
                                  -
                                  -Contributing
                                  ------------------
                                  -
                                  -Your contribution is very important. Found a bug? Have a suggestion? Please 
                                  -report us: http://code.google.com/p/fbug/issues/list
                                  -
                                  -If you would like to help with some code, or would like to develop an extension for Firebug Lite, don't hesitate, join our team: http://groups.google.com/group/firebug-working-group
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/latest/changelog.txt b/branches/flexBox/docs/latest/changelog.txt
                                  deleted file mode 100644
                                  index 7aa1e81c..00000000
                                  --- a/branches/flexBox/docs/latest/changelog.txt
                                  +++ /dev/null
                                  @@ -1,485 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0b1 - 2009-02-05 - Revision: 6012
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented a more robust stylesheet scanner (will scan imported stylesheets)
                                  -    - Implemented a cascading styles analyser (will detect which CSS rules are applied
                                  -      to a particular element, in the proper cascading order)
                                  -      
                                  -    - Ported css.js file from Firebug, including the following features:
                                  -        - live edit of CSS properties
                                  -        - enable/disable CSS properties on-the-fly
                                  -        - Cascading visualization
                                  -        - Inheritance visualization (with overriden properties marked)
                                  -    
                                  -    - Ported the CSS Panel
                                  -    - Ported the Style Panel
                                  -    - Ported the Computed Panel divided in categories (in a separated tab)
                                  -    - Fixed the problem with external stylesheets (now shows a "Access restricted" message). 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Editor
                                  --------------------------------------------------------------------------------
                                  -    - Autocomplete feature with UP/DOWN keys
                                  -    - "Complete as you type" feature in most browsers (not working in Opera yet)
                                  -    - Increment/decrement with UP/DOWN, PAGE-UP/PAGE-DOWN
                                  -    - Navigation with TAB/SHIFT+TAB
                                  -    - Fixed the CSS of editor to work in all browsers
                                  -    - Pretty inline editor support in IE6
                                  -    - Fixed problem with inline editor in Safari/Chrome/IE: special keys doesn't 
                                  -      trigger the onkeypress event, making some changes in the editor not apply 
                                  -      to the CSS property.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Strings are properly rendered in console.* calls
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Fixed Issue 2764: Fix problem with commandLine API and jQuery's $ shortcut.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Don't show the Firebug Lite source code in the script list
                                  -    - Refactored Script panel
                                  -    - Fixed potential memory leak
                                  -    - Using the Warning template in the Script panel when failing to load external scripts.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - When running as Chrome extension, all images used in the interface are
                                  -      stored in the extension directory, hugely improving the perceived loading
                                  -      time for GUI operations, specially in the startup.
                                  -      
                                  -    - Implemented the chrome.deactivate() method
                                  -
                                  --------------------------------------------------------------------------------
                                  -GUI
                                  --------------------------------------------------------------------------------
                                  -    - Added the "off" button to the UI
                                  -    - Updated "minimize" and "detach" buttons with new images used in Firebug 1.4+
                                  -    - Fixed problem with panel initialization that was breaking the scroll 
                                  -      position persistence of the panels.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Added domplate tag.insertBefore method
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - Added KeyEvent constants
                                  -    - Added bindFixed method
                                  -    - Added Whitespace and Entity conversions methods
                                  -    - Added String escaping methods
                                  -    - Added CSS methods
                                  -    - Added DOM queries methods
                                  -    
                                  -    - Fixed lib.collapse() method to work in IE6 (that doesn't support the "[collapsed]" 
                                  -      CSS selector that was used to match the element)
                                  -     
                                  -    - Implemented a cross-browser lib.selectInputRange() and lib.getInputCaretPosition()
                                  -      to support text selection and caret position detection in editor module
                                  -      
                                  -    - Making instanceOf() work also for non HTML elements (elements without ownerDocument 
                                  -      property), to avoid the use of the instanceof operator, that may cause error in other 
                                  -      browsers when the Class is not defined in the global namespace.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Ported editor.js module from Firebug
                                  -    - Ported a simplified version of tabContext.js
                                  -    - Implemented a more robust Cache system that will be used internally
                                  -    - Implemented a message dispatching method to communicate with the Chrome extension
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a5 - 2009-01-16 - Revision: 5719
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Large Command Line
                                  -    - Refactoring CommandLine module for better readability and encapsulation (commandHistory
                                  -        is now a private variable in CommandLine module)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Fix problem in iframe creation that was blocking the UI creation via
                                  -      bookmarlet in IE, for some pages.
                                  -      
                                  -    - Allow Firebug Lite UI to load in "windowless mode", without creating an
                                  -      iframe. This is necessary to make the bookmarlet run in cases where it
                                  -      is not possible to create an iframe.
                                  -      
                                  -    - Refactoring Chrome module for better readability
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - refined the layout of buttons (added an image background)
                                  -    - refined the layout of log groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -Context
                                  --------------------------------------------------------------------------------
                                  -    - Better context evaluation (commands with multiple lines are now properly evaluated)
                                  -    - context.evaluate() properly executes and returns the value of expressions with 
                                  -      multiple commands (be it multilined or not).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Style
                                  --------------------------------------------------------------------------------
                                  -    - Basic editing feature of inline styles (Style panel)
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - properly format inline style of elements in IE to lower-case in HTML panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - fixed visibility detection and visibility representation of elements
                                  -    - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), 
                                  -      and others. IE has a different pattern for identifying mouse buttons.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc).
                                  -    - ported the consoleInjetor.js file that will be used with the new console (console2.js)
                                  -    - ported the console.js file from Firebug codebase (not enabled yet). This will replace 
                                  -      the current implementation of the Console panel in the 1.3 final version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - new XHR watcher (with response and headers tabs) 
                                  -    - fixed variable "root" leaking to global namespace (domplate.js) 
                                  -    - improved development build functions
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4 - 2009-12-31 - Revision: 5505 
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Implemented synchronization of the persistent popup
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - Moved all UI components to a separated gui.js file.
                                  -    - Implemented the Menu class (with normal, checkbox, radiobutton, group
                                  -      and separator items), that will be used in options menus at 1.3 verson
                                  -      and in contexts menus at 1.4 version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -    - Implemented the console.trace (thanks dongryphon for the contribution!)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the border in the BoxModel Highlight
                                  -    
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Internet Explorer and inline styles representation (thanks christophe.blin 
                                  -      for the contribution!)
                                  -
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3 - 2009-09-13 - Revision: 4882
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2 - 2009-08-03 - Revision: 3847
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1 - 2009-05-03 - Revision: 2729
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0 - 2009-01-24 - Revision: 1765
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/latest/index.html b/branches/flexBox/docs/latest/index.html
                                  deleted file mode 100644
                                  index c7216f4a..00000000
                                  --- a/branches/flexBox/docs/latest/index.html
                                  +++ /dev/null
                                  @@ -1,919 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
                                  - 
                                  -<title>Firebug Lite : Firebug</title> 
                                  - 
                                  -<link rel="shortcut icon" type="image/x-icon" href="/img/favicon.ico"> 
                                  -
                                  -<script src="/releases/lite/latest/firebug-lite.js">
                                  -{
                                  -    startOpened: true,
                                  -    
                                  -    disableWhenFirebugActive: false,
                                  -    
                                  -    onLoad: function()
                                  -    {
                                  -        var getXHRObject = function()
                                  -        {
                                  -            var xhrObj = false;
                                  -            try
                                  -            {
                                  -                xhrObj = new XMLHttpRequest();
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                var progid = [
                                  -                        "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                        "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                    ];
                                  -                  
                                  -                for ( var i=0; i < progid.length; ++i ) {
                                  -                    try
                                  -                    {
                                  -                        xhrObj = new ActiveXObject(progid[i]);
                                  -                    }
                                  -                    catch(e)
                                  -                    {
                                  -                        continue;
                                  -                    }
                                  -                    break;
                                  -                }
                                  -            }
                                  -            finally
                                  -            {
                                  -                console.count("Counting the XHR calls with console.count(): ");
                                  -                return xhrObj;
                                  -            }
                                  -        };
                                  -
                                  -        var extensionCode = document.getElementById("extension-code");
                                  -        var extensionLoaded = false;
                                  -        document.getElementById("run-extension").onclick = function()
                                  -        {
                                  -            if (!extensionLoaded)
                                  -            {
                                  -                extensionLoaded = true;
                                  -                eval(extensionCode.innerHTML);
                                  -            }
                                  -        };
                                  -        
                                  -        var console = window.firebug || window.console;
                                  -        
                                  -        console.info("Hello World, I'm " + Firebug.version + "!");
                                  -        
                                  -        var els = $("div").toArray();
                                  -        els = els.slice(0, 11);
                                  -        console.log("Move your mouse over or click the following elements: ", els);
                                  -        
                                  -        var xhr = getXHRObject();
                                  -        console.info("Don't forget to check the XHR requests, now supporting HTTP parameters:");
                                  -        
                                  -        xhr.open("POST", "/releases/lite/latest/changelog.txt", true);
                                  -        xhr.send("param1=post&param2=data");
                                  -        
                                  -        var xhr2 = getXHRObject();
                                  -        xhr2.open("GET", "error.txt?param1=hello&param2=world", true);
                                  -        xhr2.send();
                                  -        
                                  -        console.log("Calling console.dir(Firebug)");
                                  -        console.dir(Firebug);
                                  -        
                                  -        var random = function(i){return Math.floor(Math.random()*i)};
                                  -        var randomPanel = ["Console", "HTML", "DOM"][random(3)];
                                  -        
                                  -        Firebug.chrome.selectPanel(randomPanel);
                                  -        
                                  -        if (randomPanel == "HTML")
                                  -        {
                                  -            var randomElement = ["h1", "h2", "p"][random(3)];
                                  -            var element = document.getElementsByTagName(randomElement)[0];
                                  -            
                                  -            setTimeout(function(){
                                  -                Firebug.HTML.select(element);
                                  -                Firebug.Inspector.drawBoxModel(element);
                                  -            },0);
                                  -            
                                  -            setTimeout(Firebug.Inspector.hideBoxModel, 2500);
                                  -            
                                  -        }
                                  -        else if (randomPanel == "DOM")
                                  -        {
                                  -            var randomElement = [null, "Firebug", "console", "document"][random(4)];
                                  -            var element = Firebug.browser.window[randomElement];
                                  -            
                                  -            setTimeout(function(){
                                  -                Firebug.chrome.getPanel("DOM").select(element);
                                  -            },0);
                                  -        }
                                  -    }
                                  -}
                                  -</script>
                                  -<script type="text/javascript" src="http://getfirebug.com/js/main.js"></script> 
                                  -<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> 
                                  -<script type="text/javascript" src="http://getfirebug.com/js/jquery.mousewheel-3.0.2.js"></script> 
                                  -<script type="text/javascript" src="http://getfirebug.com/js/fancybox.js"></script> 
                                  -<script type="text/javascript">
                                  -$(document).ready(function()
                                  -{
                                  -    $('a.view').fancybox({
                                  -        autoScale: false,
                                  -        centerOnScroll: true,
                                  -        overlayShow: true,
                                  -        overlayOpacity: 0.7,
                                  -        overlayColor: '#EAF1FB',
                                  -        
                                  -        callbackOnStart: function()
                                  -        {
                                  -            alert(0);
                                  -        },
                                  -        
                                  -        callbackOnClose: function()
                                  -        {
                                  -        alert(0);
                                  -        }
                                  -    });
                                  -    
                                  -    var firstScreenshot = $('.view').first();
                                  -    $('.moreinfo').click(function(e){
                                  -    
                                  -        if (window.Firebug)
                                  -            Firebug.chrome.close();
                                  -
                                  -        firstScreenshot.trigger('click');
                                  -        
                                  -        var ev = jQuery.Event(e);
                                  -        ev.preventDefault();
                                  -        ev.stopPropagation();
                                  -        
                                  -        return false;        
                                  -    });
                                  -    
                                  -    firstScreenshot.click(function(){
                                  -        if (window.Firebug)
                                  -            Firebug.chrome.close();
                                  -    });
                                  -    
                                  -});
                                  -</script>
                                  -
                                  -<link rel="stylesheet" type="text/css" media="screen,projection" href="/styles/screen.css">
                                  -<style>
                                  -
                                  -#install p {
                                  -    margin: 15px 0 0 30px;
                                  -    width: 250px;
                                  -}
                                  -
                                  -#install p a {
                                  -    width: 250px;
                                  -}
                                  -
                                  -#install ul {
                                  -    margin: 4px 0 0 26px;
                                  -}
                                  -
                                  -.moreinfo {
                                  -    width: 100%;
                                  -    font-size: 11px important!;
                                  -}
                                  -
                                  -.intro {
                                  -    margin: 2.5em 0;
                                  -    font-size: 11px important!;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.postDate {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.post h2 {
                                  -    margin: 2em 0 0;
                                  -}
                                  -
                                  -.post h2 a {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.post h3 {
                                  -    font-size: 1.5em;
                                  -    margin: 1.5em 0 0;
                                  -}
                                  -
                                  -.post h4 {
                                  -    font-size: 1.15em;
                                  -    margin: 1.5em 0 0;
                                  -}
                                  -
                                  -
                                  -#links .sidebar-title {
                                  -    margin: 2em 0 0;
                                  -}
                                  -
                                  -#links a {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -#screencast a {
                                  -    text-decoration: none !important;
                                  -    display: block;
                                  -}
                                  -
                                  -#screencast img {
                                  -    margin: 0 !important;
                                  -}
                                  -
                                  -textarea {
                                  -    width: 100%;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -pre, textarea {
                                  -    background: #fbfafa;
                                  -    border: 1px solid #eee;
                                  -}
                                  -
                                  -pre em, textarea em
                                  -{
                                  -    font-weight: bold;
                                  -    font-style: normal;
                                  -} 
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.spread {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 140px;
                                  -    background: #F6F9FE;
                                  -    padding: 5px 5px 10px;
                                  -    margin-right: 10px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.spread a {
                                  -    font-size: 1px;
                                  -    color: #eee;
                                  -}
                                  -
                                  -.spread .spreadText {
                                  -    display: block;
                                  -    margin-bottom: 10px;
                                  -}
                                  -
                                  -.hidden {
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -.navlist li {
                                  -    padding-top: 7px;
                                  -}
                                  -.navlistsub {
                                  -    padding-left: 20px;
                                  -    padding-top: 2px;
                                  -    font-size: 88%;
                                  -}
                                  -.navlistsub li {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -</style>
                                  -
                                  -</head> 
                                  - 
                                  -<body id="home"> 
                                  -<div id="wrap" class="group"> 
                                  - 
                                  -<div id="header" class="group"> 
                                  - 
                                  -<ul id="nav"> 
                                  -<li><a href="/whatisfirebug">What is Firebug?</a> 
                                  -<span>Introduction and Features</span></li> 
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a> 
                                  -<span>Documentation wiki, FAQ, and other Firebug lore</span></li> 
                                  -<li><a href="/community">Community</a><span>Discussion forums and lists</span></li> 
                                  -<li><a href="/getinvolved">Get Involved</a><span>Hack the code, create plugins</span></li> 
                                  -</ul> 
                                  - 
                                  -<div id="logo-install" class="group"> 
                                  - 
                                  -<div id="logo"> 
                                  -<a href="/"></a> 
                                  -<h1>Firebug</h1> 
                                  -<h2>Web Development Evolved.</h2> 
                                  -</div> 
                                  - 
                                  -<div id="install" class="group"> 
                                  -<p>
                                  -  <a href="#Install">Install Firebug Lite</a>
                                  -  <span>100% free and open source</span>
                                  -</p> 
                                  -<ul>
                                  -  <li><a href="/releases/lite/">Other Versions</a></li>
                                  -  <li><a href="/releases/lite/chrome/">Google Chrome Extension</a></li>
                                  -</ul>
                                  -</div>
                                  -
                                  -</div> <!-- /END logo-install --> 
                                  - 
                                  - 
                                  -    <div id="promo" class="group"> 
                                  -    
                                  -    <div id="boasting"> 
                                  -        <h2>Firebug Lite: doing the Firebug way, anywhere.</h2> 
                                  -        <ul> 
                                  -            <li>Compatible with all major browsers: IE6+, Firefox, Opera, Safari and Chrome</li> 
                                  -            <li>Same look and feel as Firebug</li> 
                                  -            <li>Inspect <span class="caps">HTML</span> and modify style in real-time</li> 
                                  -            <li>Powerful console logging functions</li> 
                                  -            <li>Rich representation of DOM elements</li> 
                                  -            <li>Extend Firebug Lite and add features to make it even more powerful</li> 
                                  -        </ul>
                                  -        <p class="moreinfo"><a href="javascript:void(0)" title="Click here to take a tour of Firebug Lite features">Tour &raquo;</a></p>
                                  -    </div> 
                                  -    
                                  -    <div id="screencast">
                                  -        <a class="view group" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img01.png" title="Powerful console logging functions"><img src="/releases/lite/latest/screenshots/firebug1.3-small.png" width="275" height="155" alt="Firebug Lite 1.3 screenshots" title="Firebug Lite 1.3 screenshots"  /></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img02.png" title="Don't forget to click the Firebug menu for options"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img03.png" title="Large command line"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img04.png" title="Easy inspect elements in your page"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img05.png" title="Visualize box model shading"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img06.png" title="Edit css properties in real-time"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img07.png" title="Autocomplete as you type feature"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img08.png" title="Computed styles divided in categories"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img09.png" title="Explore the DOM of the inspected element"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img10.png" title="Visualize and edit CSS rules"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img11.png" title="Visualize scripts"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img12.png" title="Rich representation of DOM elements"></a>
                                  -        <a class="view group hidden" rel="group" href="/releases/lite/latest/screenshots/firebug1.3-img13.png" title="Nested selection of DOM elements"></a>
                                  -    </div> 
                                  -    
                                  -    </div> <!-- END promo --> 
                                  - 
                                  -    <div class="bigfirebug"></div> 
                                  -    
                                  - 
                                  -</div> <!-- /END header --> 
                                  - 
                                  -<div id="secondary" class="group"> 
                                  - 
                                  -<div id="contentarea" class="group"> 
                                  - 
                                  -<div id="content" class="group"> 
                                  -<h2 class="heading">Firebug Lite 1.3.0 release notes</h2> 
                                  -<div id="blog">
                                  -
                                  -<div class="intro"> 
                                  -    <p>
                                  -        The next generation of Firebug Lite is out!
                                  -    </p>
                                  -</div> 
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Overview" rel="bookmark">Overview</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            This version was conceived to put the Firebug Lite in a new level,
                                  -            by allowing code reuse from Firebug's original source. A new core
                                  -            was created to accomplish the following goals:
                                  -        </p>
                                  -        <p>
                                  -            <b>Performance</b> - the core of Firebug Lite 1.3 was rewritten from scratch
                                  -            taking the performance into account in the first place.
                                  -        </p>
                                  -        <p>
                                  -            <b>Modularity</b> - the code is now more modular, making it easier to add
                                  -            new features and UI components such as panels, buttons, menus etc.
                                  -            The modularity also helps the development process. Once the modules can
                                  -            be isolated it is easier to detect the cause of complicated problems like 
                                  -            memory leaks.
                                  -        </p>
                                  -        <p>
                                  -            <b>Shared code</b> - the core was designed to make it possible 
                                  -            to port some code directly from the Firebug source with as few as possible 
                                  -            modifications. As a result some features and UI elements behave exactly
                                  -            as in Firebug.
                                  -        </p>
                                  -        <p>
                                  -            <b>Compatibility</b> - the new core is compatible with XHTML and XML+XSLT 
                                  -            documents. Thanks to the new context-independent approach it supports 
                                  -            now the experimental persistent popups feature (popups that "live" across 
                                  -            different page loads of the same domain).
                                  -        </p>
                                  -    </div> 
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="WhatsNew" rel="bookmark">What's New?</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            <b>User Interface</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>Port of Firebug's Visual Object Representation (aka Reps)</li>
                                  -            <li>Recreation of Firebug 1.3 User Interface with pixel precision</li>
                                  -            <li>Menu options</li>
                                  -            <li>Resizable Side Panel</li>
                                  -            <li>Skinnable Interface</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>CSS</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>CSS cascading view</li>
                                  -            <li>CSS inheritance view</li>
                                  -            <li>Live editing CSS rules and properties</li>
                                  -            <li>Autocomplete as you type feature, with smart suggestions (you'll get only the suggestions you need for each property)</li>
                                  -            <li>Increment/decrement with UP/DOWN and PAGE UP/PAGE DOWN keys</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Inspector</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>Full BoxModel Highlight including margin, border, padding and content boxes</li>
                                  -            <li>The BoxModel is highlighted when you move your mouse over a representation
                                  -            of a HTML element, in any of the place of the User Interface</li>
                                  -            <li>Elements are selected on-the-fly while using the Inspect tool</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Console</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li><code>console.group()</code>, console.groupCollapsed() and console.groupEnd()</li>
                                  -            <li><code>console.trace()</code> (now with file name and line numbers for some browsers)</li>
                                  -            <li>Command line API functions <code>$()</code>, <code>$$()</code>, and <code>dir()</code></li>
                                  -            <li>Command line shortcuts <code>$0</code> and <code>$1</code> for recent selected elements</li>
                                  -            <li>Autocomplete (tab, shift+tab)</li>
                                  -            <li>can capture console messages before DOM document creation 
                                  -            (when installed at the HTML header)</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>Core</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>XHR watcher (with Headers, Response, Post and Params tabs)</li>
                                  -            <li>Port of Firebug Library (aka Lib, FBL)</li>
                                  -            <li>Port of Firebug DOM Templates Engine (aka Domplate), the magic behind Reps</li>
                                  -            <li>Plugin system like Firebug</li>
                                  -            <li>Context-independent (will allow cross-iframe debugging, and persistent popups)</li>
                                  -            <li>Persistent popups</li>
                                  -            <li>Synchronization across different windows (iframe, popup)</li>
                                  -        </ul>
                                  -        <p>
                                  -            <b>And more...</b>
                                  -        </p>
                                  -        <ul>
                                  -            <li>
                                  -                For a complete list of changes, check the 
                                  -                <a href="/releases/lite/latest/changelog.txt">changelog</a>.
                                  -            </li>
                                  -        </ul>
                                  -        
                                  -        <h3><a name="WhatsNot"></a>1.3. What's Not in Lite?</h3>
                                  -        <p>
                                  -            Some features are not included in Firebug Lite 1.3, but due the new core that
                                  -            supports code sharing from Firebug, are likely to be included in the 
                                  -            Firebug Lite 1.4 version:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Live editing for all panels</li>
                                  -            <li>Layout Side Panel</li>
                                  -            <li>Context menu options</li>
                                  -            <li>Tooltips (to show colors and images)</li>
                                  -            <li>Search feature</li>
                                  -        </ul>
                                  -        <p>
                                  -            Other features though are too dependent in browser internals and will not be
                                  -            supported (at least in a near future*), such as:
                                  -        </p>
                                  -        <ul>
                                  -            <li>Javascript debugger / Javascript profiler</li>
                                  -            <li>Net panel / HTTP and XHR monitor</li>
                                  -            <li>Access to restricted URI resources</li>
                                  -            <li>Highlight HTML changes</li>
                                  -        </ul>
                                  -        <p>
                                  -            <i>*<a href="http://groups.google.com/group/webdebugprotocol?hl=en">Discussions about remote debugging</a>
                                  -            indicates that should be possible to support JavaScript debugging in browsers 
                                  -            like Google Chrome and Opera in the future.
                                  -            </i>
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Install" rel="bookmark">Install</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <h3><a name="Bookmarklet" rel="bookmark"></a>Bookmarklet</h3>
                                  -        <p>
                                  -            Bookmark the following links:
                                  -        </p>
                                  -        <h4>Stable channel</h3>
                                  -        <ul>
                                  -            <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');">Firebug Lite</a></li>
                                  -            <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-debug.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#debug');">Firebug Lite debug</a></li>
                                  -        </ul>
                                  -        <h4>Beta channel</h3>
                                  -        <ul>
                                  -            <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-beta.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');">Firebug Lite beta</a></li>
                                  -        </ul>
                                  -        
                                  -        <h3><a name="LiveLink" rel="bookmark"></a>Live link</h3>
                                  -        
                                  -        <p>
                                  -            You can also link directly to the hosted version at getfirebug.com. Copy the
                                  -            following code, and paste it in the TOP of the HEAD of your document:
                                  -        </p>
                                  -        
                                  -        <h4>Stable channel</h3>
                                  -        <p>
                                  -            Firebug Lite:
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        </p>
                                  -        <p>
                                  -            Firebug Lite debug:
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        </p>
                                  -
                                  -        <h4>Beta channel</h3>
                                  -        <p>
                                  -            Firebug Lite beta:
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="https://getfirebug.com/firebug-lite-beta.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        </p>
                                  -        
                                  -        <h3><a name="LocalLink" rel="bookmark"></a>Local link (offline)</h3>
                                  -        <p>
                                  -            If you need using Firebug Lite while offline, 
                                  -            <a href="/releases/lite/latest/firebug-lite.tar.tgz">download the code</a>, 
                                  -            copy it to a local destination, and link the <code>firebug-lite.js</code> in the TOP
                                  -            of the HEAD of your document:
                                  -        </p>
                                  -        <p>
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="/local/path/to/firebug-lite.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        </p>
                                  -        <p>
                                  -            If you want to debug the local installation, use the  
                                  -            <code>firebug-lite-debug.js</code> file instead:
                                  -        </p>
                                  -        <p>
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="/local/path/to/firebug-lite-debug.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        </p>
                                  -
                                  -    </div>
                                  -</div>
                                  -
                                  - 
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Options" rel="bookmark">Options</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry"> 
                                  -        <p>
                                  -            The properties you can change include (with respective default values):
                                  -        </p>
                                  -        <ul>
                                  -            <li><code>saveCookies</code> - false</li>
                                  -            <li><code>startOpened</code> - false</li>
                                  -            <li><code>startInNewWindow</code> - false</li>
                                  -            <li><code>showIconWhenHidden</code> - true</li>
                                  -            <li><code>overrideConsole</code> - true</li>
                                  -            <li><code>ignoreFirebugElements</code> - true</li>
                                  -            <li><code>disableWhenFirebugActive</code> - true</li>
                                  -            <li><code>enableTrace</code> - false</li>
                                  -            <li><code>enablePersistent</code> - false</li>
                                  -        </ul>
                                  -        <p>
                                  -            Here is the list of methods you can use to change the options,  
                                  -            in ascendant order of priority, that is, a particular method
                                  -            will override the options of preceding methods:
                                  -        </p>
                                  -        <h3><a name="DebugTrue" rel="bookmark"></a>&lt;html debug="true"&gt;</h3>
                                  -        <p>
                                  -            For backwards compatibility you can still use the debug="true" attribute
                                  -            in the &lt;html&gt; tag to make Firebug Lite starts opened, like:
                                  -        </p>
                                  -        <pre>&lt;html <em>debug="true"</em>&gt;</pre>
                                  -        
                                  -        <h3><a name="ScriptURLOptions" rel="bookmark"></a>Script URL options</h3>
                                  -        <p>
                                  -            You can also set the options using URL fragments, specially handy to tweak 
                                  -            options in your bookmarklet.
                                  -        </p>
                                  -<pre>
                                  -https://getfirebug.com/firebug-lite.js<em>#enableTrace</em>
                                  -</pre>
                                  -        <p>
                                  -            Options are separated by commas (<code>,</code>), and values are informed using
                                  -            the equals to (<code>=</code>) symbol. If no value is informed, 
                                  -            "<code>true</code>" is assumed.
                                  -        </p>
                                  -<pre>
                                  -path/to/firebug-lite.js<em>#enableTrace,overrideConsole=false</em>
                                  -</pre>
                                  -        <p>is equivalent to:</p>
                                  -<pre>
                                  -path/to/firebug-lite.js<em>#enableTrace=true,overrideConsole=false</em>
                                  -</pre>
                                  -        <h3><a name="ScriptJSONOptions" rel="bookmark"></a>Script JSON options</h3>
                                  -        <p>
                                  -            It is possible to set options using a JSON object inside
                                  -            the linked script:
                                  -        </p>
                                  -<pre>
                                  -&lt;script type="text/javascript" 
                                  -src="https://getfirebug.com/firebug-lite.js"&gt;
                                  -<em>{
                                  -    overrideConsole: false,
                                  -    startInNewWindow: true,
                                  -    startOpened: true,
                                  -    enableTrace: true
                                  -}</em>
                                  -&lt;/script&gt;
                                  -</pre>
                                  -        <h3><a name="Cookies" rel="bookmark"></a>Cookies</h3>
                                  -        <p>
                                  -            Finally, you can override the options using cookies, via User 
                                  -            Interface, by clicking in the Firebug icon in the upper-left corner.
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Extensions" rel="bookmark">Extensions</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            If you are familiar with Firebug extension development, you will
                                  -            see that developing an extension for Firebug Lite is very similar.
                                  -            In a Firebug extension all code is encapsulated in a strange at 
                                  -            first glance but very clever way: 
                                  -        </p>
                                  -<pre>
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// extension code
                                  -
                                  -}});
                                  -</pre>
                                  -        <p>
                                  -            In a Firebug Lite extension the code is encapsulated in a 
                                  -            similar way but using <code>Firebug.extend</code> instead, once
                                  -            the <code>FBL</code> module (Firebug internal's library) is not
                                  -            exposed to the global namespace:
                                  -        </p>
                                  -<pre>
                                  -<em>Firebug.extend(function(FBL)</em> { with (FBL) {
                                  -
                                  -// extension code
                                  -
                                  -}});
                                  -</pre>
                                  -        <p>
                                  -            If you are not familiar with Firebug extension development,
                                  -            I suggest looking at Honza's series of tutorials, including 
                                  -            <a href="http://www.softwareishard.com/blog/firebug-tutorial/extending-firebug-hello-world-part-i/">Firebug Tutorial</a> 
                                  -            and <a href="http://www.softwareishard.com/blog/planet-mozilla/domplate-examples-part-i/">Domplate Tutorial</a>.
                                  -        </p>
                                  -        <p>
                                  -            Here's a sample of how to create a new panel in Firebug Lite:
                                  -            <input id="run-extension" type="button" value="Run the extension">
                                  -        </p>
                                  -<pre id="extension-code">
                                  -Firebug.extend(function(FBL) { with (FBL) {
                                  -// ***********************************************************************
                                  -
                                  -function PluginPanel(){};
                                  -
                                  -PluginPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Plugin",
                                  -    title: "Plugin",
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.panelNode.innerHTML = "Hello World!";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(PluginPanel);
                                  -
                                  -// ***********************************************************************
                                  -}});
                                  -</pre>
                                  -
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="DebugMode" rel="bookmark">Debug mode</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        
                                  -        <p>
                                  -            The debug mode helps detecting errors in Firebug Lite. When in 
                                  -            debug mode, Firebug Lite will behave as explained below:
                                  -        </p>
                                  -        
                                  -        <ul>
                                  -            <li>Firebug Lite starts opened.</li>
                                  -            <li>The internal library used by Firebug Lite (aka <code>FBL</code>) 
                                  -            is exposed to the global namespace allowing the inspection of its content.</li>
                                  -            <li>Firebug Lite will be forced to open even when Firebug is active 
                                  -            (which is not the default behavior), so you can use Firebug to debug it.</li>
                                  -            <li>The "Trace Panel" is enabled (in which internal log messages of 
                                  -            Firebug Lite are printed).</li>
                                  -        </ul>
                                  -        
                                  -        <p>
                                  -            The debug mode will be activated when you run the 
                                  -            <a href="#Bookmarklet">Firebug Lite debug</a> bookmarklet, and
                                  -            when you the load the <code>"firebug-lite-debug.js"</code> or 
                                  -            <code>"firebug-lite-dev.js"</code> files. You can also activate 
                                  -            it manually by setting a special option <code>"debug"</code> 
                                  -            to <code>"true"</code>, using the 
                                  -            <a href="#ScriptURLOptions">Script URL</a> or 
                                  -            <a href="#ScriptJSONOptions">Script JSON</a> methods.
                                  -        </p>
                                  -        
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="DevelopmentMode" rel="bookmark">Development mode</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        
                                  -        <p>
                                  -            If you want to debug Firebug Lite, fix a bug or add a new feature, you will want
                                  -            to run Firebug Lite in development mode. To do so, first
                                  -            <a href="http://fbug.googlecode.com/svn/lite/branches/firebug1.3/">checkout the latest version</a>
                                  -            in our repository, and then insert a script at the TOP of the HEAD of your document.
                                  -        </p>
                                  -<textarea rows="2">
                                  -&lt;script type="text/javascript" src="/local/path/to/firebug-lite-dev.js"&gt;&lt;/script&gt;
                                  -</textarea>
                                  -        <p>
                                  -            When in development mode, some things behave quite differently to make the
                                  -            development process easier, such as:
                                  -        </p>
                                  -        <ul>
                                  -            <li>All script files are loaded separately, without compression.</li>
                                  -            <li>The internal library used by Firebug Lite (aka <code>FBL</code>) is exposed to the 
                                  -            global namespace allowing you to inspect its content. It is also exposed
                                  -            the <code>domplate</code> and its classes, and the <code>FBTrace</code> object</li>
                                  -            <li>The skin is loaded in a separated file allowing you to rapidly change
                                  -            the style and/or markup of the User Interface.</li>
                                  -            <li>Firebug Lite will be forced to open even when Firebug is active 
                                  -            (which is not the default behavior), so you can use Firebug to debug it.</li>
                                  -            <li>The "Trace Panel" is enabled (in which internal log messages of 
                                  -            Firebug Lite are printed).</li>
                                  -            <li>A new "Dev Panel" will be available with tools to compress the skin
                                  -            and the source code of the application in a single file.</li>
                                  -        </ul>
                                  -
                                  -        
                                  -    </div>
                                  -</div>
                                  -
                                  -<!-- ========================================================================================== --> 
                                  -<div class="post"> 
                                  -    <h2><a name="Contributing" rel="bookmark">Contributing</a></h2> 
                                  -    <div class="postDate"></div> 
                                  -    <div class="entry">
                                  -        <p>
                                  -            Your contribution is very important. Found a bug? Have a suggestion? Please
                                  -            <a href="http://code.google.com/p/fbug/issues/list">report us</a>. 
                                  -        </p>
                                  -        <p>
                                  -            Found a fix for a particular issue? 
                                  -            <a href="http://code.google.com/p/fbug/issues/list">Patches are welcome</a>.
                                  -            Also, if you are willing to help more deeply with coding,
                                  -            <a href="http://groups.google.com/group/firebug-working-group">join our team</a>.
                                  -        </p>
                                  -    </div>
                                  -</div>
                                  -
                                  -
                                  -</div> <!-- /END blog --> 
                                  - 
                                  -</div> <!-- /END content --> 
                                  - 
                                  -<div id="links"> 
                                  -<h2 class="heading">Links and Stuff</h2> 
                                  -
                                  -<!-- Delicious --> 
                                  -<h2 class="delicious-banner sidebar-title">Release notes content</h2> 
                                  -<ul class="navlist">
                                  -    <li><a href="#Overview">1. Overview</a></li> 
                                  -    <li><a href="#WhatsNew">2. What's New?</a></li> 
                                  -    <ul class="navlistsub"> 
                                  -        <li><a href="#WhatsNot">What's Not in Lite?</a></li> 
                                  -    </ul> 
                                  -    <li><a href="#Install">3. Install</a></li> 
                                  -    <ul class="navlistsub"> 
                                  -        <li><a href="#Bookmarklet">Bookmarklet</a></li> 
                                  -        <li><a href="#LiveLink">Live Link</a></li> 
                                  -        <li><a href="#LocalLink">Local Link</a></li> 
                                  -    </ul> 
                                  -    <li><a href="#Options">4. Options</a></li> 
                                  -    <ul class="navlistsub"> 
                                  -        <li><a href="#DebugTrue">&lt;html debug="true"&gt;</a></li> 
                                  -        <li><a href="#ScriptURLOptions">Script URL options</a></li> 
                                  -        <li><a href="#ScriptJSONOptions">Script JSON options</a></li> 
                                  -        <li><a href="#Cookies">Cookies</a></li> 
                                  -    </ul> 
                                  -    <li><a href="#Extensions">5. Extensions</a></li> 
                                  -    <li><a href="#DebugMode">6. Debug mode</a></li> 
                                  -    <li><a href="#DevelopmentMode">7. Development mode</a></li> 
                                  -    <li><a href="#Contributing">8. Contributing</a></li> 
                                  -</ul> 
                                  -
                                  -<!-- Delicious --> 
                                  -<h2 class="delicious-banner sidebar-title">Bookmarklets</h2> 
                                  -<ul>
                                  -    <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');">Firebug Lite</a></li>
                                  -    <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-debug.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#debug');">Firebug Lite debug</a></li>
                                  -    <li><a href="javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E=F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','1.3.0.3','firebug-lite-beta.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');">Firebug Lite beta</a></li>
                                  -</ul>
                                  -
                                  -
                                  -<!-- Delicious --> 
                                  -<!--[!IE]>
                                  -<div id="delicious-posts-firebug" class="delicious-posts"> 
                                  -<h2 class="delicious-banner sidebar-title">Firebug around the web</h2> 
                                  -<script type="text/javascript" src="http://feeds.delicious.com/v2/js/firebugnews?count=5&amp;title=&amp;sort=date&amp;extended"></script> 
                                  -</div>
                                  -<![endif]-->
                                  - 
                                  -</div> <!-- /END links --> 
                                  - 
                                  -</div> <!-- /END contentarea --> 
                                  - 
                                  -</div> <!-- /END secondary --> 
                                  - 
                                  -<div id="footer" class="group"> 
                                  - 
                                  -<div class="nav"> 
                                  -<h3>Firebug</h3> 
                                  -<ul> 
                                  -<li><a href="/">Home</a></li> 
                                  -<li><a href="/downloads">Downloads</a></li> 
                                  -<li><a href="http://getfirebug.com/wiki/">Resources</a></li> 
                                  -<li><a href="/whatisfirebug">What is Firebug</a> 
                                  -</li> 
                                  -<li><a href="/community">Community</a></li> 
                                  -<li><a href="/getinvolved">Get Involved</a></li> 
                                  -<li><a href="http://blog.getfirebug.com/">Blog</a></li> 
                                  -</ul> 
                                  -</div> 
                                  - 
                                  -<div id="legal"> 
                                  -<div id="copyright"> 
                                  -<img src="http://getfirebug.com/img/mozilla-logo.png" width="41" height="31" alt="Firefox Logo" /> 
                                  -<p><span>Copyright &copy; 2005-2010 Mozilla.</span> All rights reserved.</p> 
                                  -</div> 
                                  - 
                                  -<ul> 
                                  -<li><a href="http://www.mozilla.com/en-US/privacy-policy.html">Privacy Policy</a></li> 
                                  -<li><a href="http://www.mozilla.com/en-US/about/legal.html">Legal Notices</a></li> 
                                  - 
                                  -</ul> 
                                  -</div> 
                                  -<div class="bigfirebug"></div> 
                                  - 
                                  - 
                                  -</div> <!-- /END footer --> 
                                  -</div> <!-- /END wrap --> 
                                  - 
                                  -</body> 
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img01.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img01.png
                                  deleted file mode 100644
                                  index 5e0c9dde..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img01.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img02.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img02.png
                                  deleted file mode 100644
                                  index d47d47f3..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img02.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img03.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img03.png
                                  deleted file mode 100644
                                  index aeadf4e8..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img03.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img04.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img04.png
                                  deleted file mode 100644
                                  index 641027d6..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img04.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img05.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img05.png
                                  deleted file mode 100644
                                  index 1828933b..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img05.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img06.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img06.png
                                  deleted file mode 100644
                                  index 07534179..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img06.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img07.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img07.png
                                  deleted file mode 100644
                                  index 5a705cd4..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img07.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img08.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img08.png
                                  deleted file mode 100644
                                  index 3b368ec3..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img08.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img09.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img09.png
                                  deleted file mode 100644
                                  index 65f37559..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img09.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img10.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img10.png
                                  deleted file mode 100644
                                  index e420131d..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img10.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img11.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img11.png
                                  deleted file mode 100644
                                  index 8454dd7c..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img11.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img12.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img12.png
                                  deleted file mode 100644
                                  index 1e818684..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img12.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-img13.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-img13.png
                                  deleted file mode 100644
                                  index 850d7846..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-img13.png and /dev/null differ
                                  diff --git a/branches/flexBox/docs/latest/screenshots/firebug1.3-small.png b/branches/flexBox/docs/latest/screenshots/firebug1.3-small.png
                                  deleted file mode 100644
                                  index d66f197b..00000000
                                  Binary files a/branches/flexBox/docs/latest/screenshots/firebug1.3-small.png and /dev/null differ
                                  diff --git a/branches/flexBox/license.txt b/branches/flexBox/license.txt
                                  deleted file mode 100644
                                  index ba43b751..00000000
                                  --- a/branches/flexBox/license.txt
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2007, Parakey Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Parakey Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Parakey Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  diff --git a/branches/flexBox/plugin/proxy/proxy.php b/branches/flexBox/plugin/proxy/proxy.php
                                  deleted file mode 100644
                                  index 3bf3f92a..00000000
                                  --- a/branches/flexBox/plugin/proxy/proxy.php
                                  +++ /dev/null
                                  @@ -1,258 +0,0 @@
                                  -<?PHP
                                  -
                                  -// COMMENT THE FOLLOWING LINE TO ENABLE FIREBUG LITE PROXY PLUGIN
                                  -die('{"contents":"ERROR: Firebug Lite Proxy plugin is not enabled."}');
                                  -
                                  -// Script: Simple PHP Proxy: Get external HTML, JSON and more!
                                  -//
                                  -// *Version: 1.6, Last updated: 1/24/2009*
                                  -// 
                                  -// Project Home - http://benalman.com/projects/php-simple-proxy/
                                  -// GitHub       - http://github.com/cowboy/php-simple-proxy/
                                  -// Source       - http://github.com/cowboy/php-simple-proxy/raw/master/ba-simple-proxy.php
                                  -// 
                                  -// About: License
                                  -// 
                                  -// Copyright (c) 2010 "Cowboy" Ben Alman,
                                  -// Dual licensed under the MIT and GPL licenses.
                                  -// http://benalman.com/about/license/
                                  -// 
                                  -// About: Examples
                                  -// 
                                  -// This working example, complete with fully commented code, illustrates one way
                                  -// in which this PHP script can be used.
                                  -// 
                                  -// Simple - http://benalman.com/code/projects/php-simple-proxy/examples/simple/
                                  -// 
                                  -// About: Release History
                                  -// 
                                  -// 1.6 - (1/24/2009) Now defaults to JSON mode, which can now be changed to
                                  -//       native mode by specifying ?mode=native. Native and JSONP modes are
                                  -//       disabled by default because of possible XSS vulnerability issues, but
                                  -//       are configurable in the PHP script along with a url validation regex.
                                  -// 1.5 - (12/27/2009) Initial release
                                  -// 
                                  -// Topic: GET Parameters
                                  -// 
                                  -// Certain GET (query string) parameters may be passed into ba-simple-proxy.php
                                  -// to control its behavior, this is a list of these parameters. 
                                  -// 
                                  -//   url - The remote URL resource to fetch. Any GET parameters to be passed
                                  -//     through to the remote URL resource must be urlencoded in this parameter.
                                  -//   mode - If mode=native, the response will be sent using the same content
                                  -//     type and headers that the remote URL resource returned. If omitted, the
                                  -//     response will be JSON (or JSONP). <Native requests> and <JSONP requests>
                                  -//     are disabled by default, see <Configuration Options> for more information.
                                  -//   callback - If specified, the response JSON will be wrapped in this named
                                  -//     function call. This parameter and <JSONP requests> are disabled by
                                  -//     default, see <Configuration Options> for more information.
                                  -//   user_agent - This value will be sent to the remote URL request as the
                                  -//     `User-Agent:` HTTP request header. If omitted, the browser user agent
                                  -//     will be passed through.
                                  -//   send_cookies - If send_cookies=1, all cookies will be forwarded through to
                                  -//     the remote URL request.
                                  -//   send_session - If send_session=1 and send_cookies=1, the SID cookie will be
                                  -//     forwarded through to the remote URL request.
                                  -//   full_headers - If a JSON request and full_headers=1, the JSON response will
                                  -//     contain detailed header information.
                                  -//   full_status - If a JSON request and full_status=1, the JSON response will
                                  -//     contain detailed cURL status information, otherwise it will just contain
                                  -//     the `http_code` property.
                                  -// 
                                  -// Topic: POST Parameters
                                  -// 
                                  -// All POST parameters are automatically passed through to the remote URL
                                  -// request.
                                  -// 
                                  -// Topic: JSON requests
                                  -// 
                                  -// This request will return the contents of the specified url in JSON format.
                                  -// 
                                  -// Request:
                                  -// 
                                  -// > ba-simple-proxy.php?url=http://example.com/
                                  -// 
                                  -// Response:
                                  -// 
                                  -// > { "contents": "<html>...</html>", "headers": {...}, "status": {...} }
                                  -// 
                                  -// JSON object properties:
                                  -// 
                                  -//   contents - (String) The contents of the remote URL resource.
                                  -//   headers - (Object) A hash of HTTP headers returned by the remote URL
                                  -//     resource.
                                  -//   status - (Object) A hash of status codes returned by cURL.
                                  -// 
                                  -// Topic: JSONP requests
                                  -// 
                                  -// This request will return the contents of the specified url in JSONP format
                                  -// (but only if $enable_jsonp is enabled in the PHP script).
                                  -// 
                                  -// Request:
                                  -// 
                                  -// > ba-simple-proxy.php?url=http://example.com/&callback=foo
                                  -// 
                                  -// Response:
                                  -// 
                                  -// > foo({ "contents": "<html>...</html>", "headers": {...}, "status": {...} })
                                  -// 
                                  -// JSON object properties:
                                  -// 
                                  -//   contents - (String) The contents of the remote URL resource.
                                  -//   headers - (Object) A hash of HTTP headers returned by the remote URL
                                  -//     resource.
                                  -//   status - (Object) A hash of status codes returned by cURL.
                                  -// 
                                  -// Topic: Native requests
                                  -// 
                                  -// This request will return the contents of the specified url in the format it
                                  -// was received in, including the same content-type and other headers (but only
                                  -// if $enable_native is enabled in the PHP script).
                                  -// 
                                  -// Request:
                                  -// 
                                  -// > ba-simple-proxy.php?url=http://example.com/&mode=native
                                  -// 
                                  -// Response:
                                  -// 
                                  -// > <html>...</html>
                                  -// 
                                  -// Topic: Notes
                                  -// 
                                  -// * Assumes magic_quotes_gpc = Off in php.ini
                                  -// 
                                  -// Topic: Configuration Options
                                  -// 
                                  -// These variables can be manually edited in the PHP file if necessary.
                                  -// 
                                  -//   $enable_jsonp - Only enable <JSONP requests> if you really need to. If you
                                  -//     install this script on the same server as the page you're calling it
                                  -//     from, plain JSON will work. Defaults to false.
                                  -//   $enable_native - You can enable <Native requests>, but you should only do
                                  -//     this if you also whitelist specific URLs using $valid_url_regex, to avoid
                                  -//     possible XSS vulnerabilities. Defaults to false.
                                  -//   $valid_url_regex - This regex is matched against the url parameter to
                                  -//     ensure that it is valid. This setting only needs to be used if either
                                  -//     $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which
                                  -//     validates all URLs.
                                  -// 
                                  -// ############################################################################
                                  -
                                  -// Change these configuration options if needed, see above descriptions for info.
                                  -$enable_jsonp    = false;
                                  -$enable_native   = false;
                                  -$valid_url_regex = '/.*/';
                                  -
                                  -// ############################################################################
                                  -
                                  -$url = $_GET['url'];
                                  -
                                  -if ( !$url ) {
                                  -  
                                  -  // Passed url not specified.
                                  -  $contents = 'ERROR: url not specified';
                                  -  $status = array( 'http_code' => 'ERROR' );
                                  -  
                                  -} else if ( !preg_match( $valid_url_regex, $url ) ) {
                                  -  
                                  -  // Passed url doesn't match $valid_url_regex.
                                  -  $contents = 'ERROR: invalid url';
                                  -  $status = array( 'http_code' => 'ERROR' );
                                  -  
                                  -} else {
                                  -  $ch = curl_init( $url );
                                  -  
                                  -  if ( strtolower($_SERVER['REQUEST_METHOD']) == 'post' ) {
                                  -    curl_setopt( $ch, CURLOPT_POST, true );
                                  -    curl_setopt( $ch, CURLOPT_POSTFIELDS, $_POST );
                                  -  }
                                  -  
                                  -  if ( $_GET['send_cookies'] ) {
                                  -    $cookie = array();
                                  -    foreach ( $_COOKIE as $key => $value ) {
                                  -      $cookie[] = $key . '=' . $value;
                                  -    }
                                  -    if ( $_GET['send_session'] ) {
                                  -      $cookie[] = SID;
                                  -    }
                                  -    $cookie = implode( '; ', $cookie );
                                  -    
                                  -    curl_setopt( $ch, CURLOPT_COOKIE, $cookie );
                                  -  }
                                  -  
                                  -  curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
                                  -  curl_setopt( $ch, CURLOPT_HEADER, true );
                                  -  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
                                  -  
                                  -  curl_setopt( $ch, CURLOPT_USERAGENT, $_GET['user_agent'] ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] );
                                  -  
                                  -  list( $header, $contents ) = preg_split( '/([\r\n][\r\n])\\1/', curl_exec( $ch ), 2 );
                                  -  
                                  -  $status = curl_getinfo( $ch );
                                  -  
                                  -  curl_close( $ch );
                                  -}
                                  -
                                  -// Split header text into an array.
                                  -$header_text = preg_split( '/[\r\n]+/', $header );
                                  -
                                  -if ( $_GET['mode'] == 'native' ) {
                                  -  if ( !$enable_native ) {
                                  -    $contents = 'ERROR: invalid mode';
                                  -    $status = array( 'http_code' => 'ERROR' );
                                  -  }
                                  -  
                                  -  // Propagate headers to response.
                                  -  foreach ( $header_text as $header ) {
                                  -    if ( preg_match( '/^(?:Content-Type|Content-Language|Set-Cookie):/i', $header ) ) {
                                  -      header( $header );
                                  -    }
                                  -  }
                                  -  
                                  -  print $contents;
                                  -  
                                  -} else {
                                  -  
                                  -  // $data will be serialized into JSON data.
                                  -  $data = array();
                                  -  
                                  -  // Propagate all HTTP headers into the JSON data object.
                                  -  if ( $_GET['full_headers'] ) {
                                  -    $data['headers'] = array();
                                  -    
                                  -    foreach ( $header_text as $header ) {
                                  -      preg_match( '/^(.+?):\s+(.*)$/', $header, $matches );
                                  -      if ( $matches ) {
                                  -        $data['headers'][ $matches[1] ] = $matches[2];
                                  -      }
                                  -    }
                                  -  }
                                  -  
                                  -  // Propagate all cURL request / response info to the JSON data object.
                                  -  if ( $_GET['full_status'] ) {
                                  -    $data['status'] = $status;
                                  -  } else {
                                  -    $data['status'] = array();
                                  -    $data['status']['http_code'] = $status['http_code'];
                                  -  }
                                  -  
                                  -  // Set the JSON data object contents, decoding it from JSON if possible.
                                  -  $decoded_json = json_decode( $contents );
                                  -  $data['contents'] = $decoded_json ? $decoded_json : $contents;
                                  -  
                                  -  // Generate appropriate content-type header.
                                  -  $is_xhr = strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
                                  -  header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) );
                                  -  header('Access-Control-Allow-Origin: *');
                                  -  
                                  -  // Get JSONP callback.
                                  -  $jsonp_callback = $enable_jsonp && isset($_GET['callback']) ? $_GET['callback'] : null;
                                  -  
                                  -  // Generate JSON/JSONP string
                                  -  $json = json_encode( $data );
                                  -  
                                  -  print $jsonp_callback ? "$jsonp_callback($json)" : $json;
                                  -  
                                  -}
                                  -
                                  -?>
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/chrome.manifest b/branches/flexBox/sandbox/HelloModule/app/chrome.manifest
                                  deleted file mode 100644
                                  index 1b5407a2..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/chrome.manifest
                                  +++ /dev/null
                                  @@ -1,7 +0,0 @@
                                  -content  hellomodule  content/
                                  -skin     hellomodule  classsic/1.0   skin/classic/
                                  -
                                  -resource hellomodule  modules/
                                  -
                                  -overlay  chrome://firebug/content/start-button/startButtonOverlay.xul  chrome://hellomodule/content/helloModule.xul
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/content/helloModule.js b/branches/flexBox/sandbox/HelloModule/app/content/helloModule.js
                                  deleted file mode 100644
                                  index da5ee941..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/content/helloModule.js
                                  +++ /dev/null
                                  @@ -1,88 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Constants
                                  -
                                  -var Ci = Components.interfaces;
                                  -var Cc = Components.classes;
                                  -var Cu = Components.utils;
                                  -
                                  -// Get ModuleLoader implementation (it's Mozilla JS code module)
                                  -Components.utils["import"]("resource://firebug/moduleLoader.js");
                                  -
                                  -// ********************************************************************************************* //
                                  -// Firebug Panel
                                  -
                                  -var panelName = "HelloModule";
                                  -
                                  -/**
                                  - * Panel implementation
                                  - */
                                  -function HelloModulePanel() {}
                                  -HelloModulePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: panelName,
                                  -    title: "Hello Module!",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -
                                  -        this.require = (new ModuleLoader(null, {
                                  -            context:"resource://hellomodule/",
                                  -            baseUrl:"resource://hellomodule/"}
                                  -        )).loadDepsThenCallback;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var self = this;
                                  -        this.require(["dom-tree.js"], function(module)
                                  -        {
                                  -            var domTree = new module.DomTree(FBL.unwrapObject(self.context.window));
                                  -            domTree.append(self.panelNode);
                                  -        });
                                  -    }
                                  -});
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -Firebug.HelloModuleModel = extend(Firebug.Module,
                                  -{
                                  -    onLoadModules: function(context)
                                  -    {
                                  -        // Create Module Loader implementation for specific path.
                                  -        var require = (new ModuleLoader(null, {
                                  -            context:"resource://hellomodule/",
                                  -            baseUrl:"resource://hellomodule/"}
                                  -        )).loadDepsThenCallback;
                                  -
                                  -        require(["dom-tree.js", "add.js", "subtract.js"],
                                  -            function(DomTree, AddModule, SubtractModule)
                                  -            {
                                  -                try
                                  -                {
                                  -                    FBTrace.sysout("helloModule; All modules loaded using relative URLs!");
                                  -                    FBTrace.sysout("1 + 2 = " + AddModule.add(1, 2));
                                  -                    FBTrace.sysout("3 - 1 = " + SubtractModule.subtract(3, 1));
                                  -                }
                                  -                catch (err)
                                  -                {
                                  -                    FBTrace.sysout("helloModule; EXCEPTION " + err, err);
                                  -                }
                                  -            }
                                  -        );
                                  -    }
                                  -});
                                  -
                                  -// ********************************************************************************************* //
                                  -// Registration
                                  -
                                  -Firebug.registerPanel(HelloModulePanel);
                                  -Firebug.registerModule(Firebug.HelloModuleModel);
                                  -Firebug.registerStylesheet("chrome://hellomodule/skin/domTree.css");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/content/helloModule.xul b/branches/flexBox/sandbox/HelloModule/app/content/helloModule.xul
                                  deleted file mode 100644
                                  index 3b672326..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/content/helloModule.xul
                                  +++ /dev/null
                                  @@ -1,19 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<overlay id="helloModule" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
                                  -    <!-- <script src="chrome://hellomodule/content/securable-module-requirejs.js" type="application/x-javascript"/>
                                  -    <script src="chrome://hellomodule/content/ModuleLoader.js" type="application/x-javascript"/> -->
                                  -    <script src="chrome://hellomodule/content/helloModule.js" type="application/x-javascript"/>
                                  -
                                  -    <commandset id="mainCommandSet">
                                  -        <command id="cmd_loadModules" oncommand="Firebug.HelloModuleModel.onLoadModules(FirebugContext)"/>
                                  -    </commandset>
                                  -
                                  -    <!-- Extend Firebug's status bar context menu -->
                                  -    <popupset id="mainPopupSet">
                                  -        <menupopup id="fbStatusContextMenu">
                                  -            <menuseparator/>
                                  -            <menuitem id="menu_LoadModules" label="Load Modules" command="cmd_loadModules"/>
                                  -        </menupopup>
                                  -    </popupset>
                                  -
                                  -</overlay>
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/install.rdf b/branches/flexBox/sandbox/HelloModule/app/install.rdf
                                  deleted file mode 100644
                                  index 4b662daf..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/install.rdf
                                  +++ /dev/null
                                  @@ -1,22 +0,0 @@
                                  -<?xml version="1.0"?>
                                  -
                                  -<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                                  -     xmlns:em="http://www.mozilla.org/2004/em-rdf#">
                                  -
                                  -  <Description about="urn:mozilla:install-manifest">
                                  -    <em:id>hellomodule@janodvarko.cz</em:id>
                                  -    <em:name>Hello Module</em:name>
                                  -    <em:version>1.0</em:version>
                                  -    <em:creator>Jan Odvarko</em:creator>
                                  -    <em:description>Example usage of CommonJS/RequireJS syntax in a Firefox/Firebug extension.</em:description>
                                  -
                                  -    <em:targetApplication>
                                  -      <Description>
                                  -        <em:id>toolkit@mozilla.org</em:id>
                                  -        <em:minVersion>1.9.0.11</em:minVersion>
                                  -        <em:maxVersion>2.0.0.*</em:maxVersion>
                                  -      </Description>
                                  -    </em:targetApplication>
                                  -
                                  -  </Description>
                                  -</RDF>
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/Core/Base.js b/branches/flexBox/sandbox/HelloModule/app/modules/Core/Base.js
                                  deleted file mode 100644
                                  index dd3eeeea..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/Core/Base.js
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Core/Base", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -FBL.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -FBL.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -
                                  -    return l;
                                  -};
                                  -
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/Core/CSS.js b/branches/flexBox/sandbox/HelloModule/app/modules/Core/CSS.js
                                  deleted file mode 100644
                                  index 561defae..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/Core/CSS.js
                                  +++ /dev/null
                                  @@ -1,68 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Core/CSS", ["FBL"], function(FBL) {
                                  -
                                  -//***********************************************************************************************//
                                  -// CSS
                                  -
                                  -FBL.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            //var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            //if (!re.exec(node.getAttribute("class")))
                                  -            //    return false;
                                  -            var className = node.className;//node.getAttribute("class");
                                  -            if (!className || className.indexOf(name + " ") == -1)
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -FBL.setClass = function(node, name)
                                  -{
                                  -    if (node && !FBL.hasClass(node, name))
                                  -        node.className += " " + name + " ";
                                  -};
                                  -
                                  -FBL.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -FBL.toggleClass = function(elt, name)
                                  -{
                                  -    if (FBL.hasClass(elt, name))
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        return false;
                                  -    }
                                  -    else
                                  -    {
                                  -        FBL.setClass(elt, name);
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/Core/DOM.js b/branches/flexBox/sandbox/HelloModule/app/modules/Core/DOM.js
                                  deleted file mode 100644
                                  index ec7e00fd..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/Core/DOM.js
                                  +++ /dev/null
                                  @@ -1,25 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Core/DOM", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// DOM
                                  -
                                  -FBL.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (FBL.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/Core/Event.js b/branches/flexBox/sandbox/HelloModule/app/modules/Core/Event.js
                                  deleted file mode 100644
                                  index ba7551fa..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/Core/Event.js
                                  +++ /dev/null
                                  @@ -1,170 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Core/Event", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Events
                                  -
                                  -FBL.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && FBL.noKeyModifiers(event);
                                  -};
                                  -
                                  -FBL.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -/**
                                  - * Support for cross-browser compatible event.
                                  - */
                                  -var expando = "helloModule";
                                  -FBL.eventFix = function(event)
                                  -{
                                  -    if ( event[expando] == true )
                                  -        return event;
                                  -
                                  -    // store a copy of the original event object
                                  -    // and "clone" to set read-only properties
                                  -    var originalEvent = event;
                                  -    event = { originalEvent: originalEvent };
                                  -    var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
                                  -    for ( var i=props.length; i; i-- )
                                  -        event[ props[i] ] = originalEvent[ props[i] ];
                                  -
                                  -    // Mark it as fixed
                                  -    event[expando] = true;
                                  -
                                  -    // add preventDefault and stopPropagation since
                                  -    // they will not work on the clone
                                  -    event.preventDefault = function() {
                                  -        // if preventDefault exists run it on the original event
                                  -        if (originalEvent.preventDefault)
                                  -            originalEvent.preventDefault();
                                  -        // otherwise set the returnValue property of the original event to false (IE)
                                  -        originalEvent.returnValue = false;
                                  -    };
                                  -    event.stopPropagation = function() {
                                  -        // if stopPropagation exists run it on the original event
                                  -        if (originalEvent.stopPropagation)
                                  -            originalEvent.stopPropagation();
                                  -        // otherwise set the cancelBubble property of the original event to true (IE)
                                  -        originalEvent.cancelBubble = true;
                                  -    };
                                  -
                                  -    // Fix timeStamp
                                  -    event.timeStamp = event.timeStamp || this.now();
                                  -
                                  -    // Fix target property, if necessary
                                  -    if ( !event.target )
                                  -        event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
                                  -
                                  -    // check if target is a textnode (safari)
                                  -    if ( event.target.nodeType == 3 )
                                  -        event.target = event.target.parentNode;
                                  -
                                  -    // Add relatedTarget, if necessary
                                  -    if ( !event.relatedTarget && event.fromElement )
                                  -        event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
                                  -
                                  -    // Calculate pageX/Y if missing and clientX/Y available
                                  -    if ( event.pageX == null && event.clientX != null ) {
                                  -        var doc = document.documentElement, body = document.body;
                                  -        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
                                  -        event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
                                  -    }
                                  -
                                  -    // Add which for key events
                                  -    if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
                                  -        event.which = event.charCode || event.keyCode;
                                  -
                                  -    // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
                                  -    if ( !event.metaKey && event.ctrlKey )
                                  -        event.metaKey = event.ctrlKey;
                                  -
                                  -    // Add which for click: 1 == left; 2 == middle; 3 == right
                                  -    // Note: button is not normalized, so don't use it
                                  -    if ( !event.which && event.button )
                                  -        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
                                  -
                                  -    return event;
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -// DOM
                                  -
                                  -FBL.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (FBL.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -//***********************************************************************************************//
                                  -// CSS
                                  -
                                  -FBL.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            //var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            //if (!re.exec(node.getAttribute("class")))
                                  -            //    return false;
                                  -            var className = node.className;//node.getAttribute("class");
                                  -            if (!className || className.indexOf(name + " ") == -1)
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -FBL.setClass = function(node, name)
                                  -{
                                  -    if (node && !FBL.hasClass(node, name))
                                  -        node.className += " " + name + " ";
                                  -};
                                  -
                                  -FBL.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -FBL.toggleClass = function(elt, name)
                                  -{
                                  -    if (FBL.hasClass(elt, name))
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        return false;
                                  -    }
                                  -    else
                                  -    {
                                  -        FBL.setClass(elt, name);
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/Core/FBTrace.js b/branches/flexBox/sandbox/HelloModule/app/modules/Core/FBTrace.js
                                  deleted file mode 100644
                                  index b9209a50..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/Core/FBTrace.js
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Core/FBTrace", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Module Implementation
                                  -
                                  -// We need to use the console object in case of the web page that doesn't have proper
                                  -// privileges to use Components.utils
                                  -
                                  -var FBTrace = FBL.FBTrace =
                                  -{
                                  -    sysout: function()
                                  -    {
                                  -        if (typeof(console.log) == "function")
                                  -            console.log.apply(console, arguments);
                                  -    }
                                  -};
                                  -
                                  -try
                                  -{
                                  -    var FirebugTrace = {};
                                  -    Components.utils["import"]("resource://firebug/firebug-trace-service.js", FirebugTrace);
                                  -    FBTrace = FBL.FBTrace = FirebugTrace.traceConsoleService.getTracer("extensions.firebug");
                                  -}
                                  -catch (e)
                                  -{
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -// Exported Symbols
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/FBL.js b/branches/flexBox/sandbox/HelloModule/app/modules/FBL.js
                                  deleted file mode 100644
                                  index c23c666a..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/FBL.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("FBL",
                                  -[
                                  -    "exports", // comment this line and it will throw "FBL is undefined" error
                                  -    "Core/Base",
                                  -    "Core/FBTrace",
                                  -    "Core/CSS",
                                  -    "Core/DOM",
                                  -    "Core/Event"
                                  -],
                                  -function(exports, FBL){
                                  -// ********************************************************************************************* //
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate.js b/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate.js
                                  deleted file mode 100644
                                  index 380ea3c8..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate.js
                                  +++ /dev/null
                                  @@ -1,1118 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("FBL/Domplate", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Cross browser support
                                  -
                                  -var msie = false;
                                  -
                                  -// If we are in the browser scope.
                                  -if (typeof(navigator) != "undefined")
                                  -{
                                  -    var userAgent = navigator.userAgent.toLowerCase();
                                  -    msie = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -FBL.DomplateTag = DomplateTag;
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.domplate = domplate;
                                  -
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = msie ? name : name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && name in this.attrs)
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //ddd(this.renderMarkup);
                                  -        //ddd(this.renderDOM);
                                  -        //ddd(this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -        //this.addLocals(blocks);
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {\n');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {\n');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {\n');
                                  -        fnBlock.push('with (__in__) {\n');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}\n');
                                  -        if (this.context)
                                  -            fnBlock.push('}\n');
                                  -
                                  -        fnBlock.push('}})\n');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            function isArray(it) {
                                  -                return Object.prototype.toString.call(it) === "[object Array]";
                                  -            }
                                  -
                                  -            if (iter instanceof Array || isArray(iter))
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = msie ? 'var f = ' + fnBlock.join("") + ';f' : fnBlock.join("");
                                  -        this.renderMarkup = eval(js);
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ("class" in this.attrs || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if ("class" in this.attrs)
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');\n');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');\n');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';\n');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {\n');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;\n');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;\n');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {\n');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {\n');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}\n');
                                  -        if (this.context)
                                  -            fnBlock.push('}\n');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';\n');
                                  -        fnBlock.push('})\n');
                                  -
                                  -        function __prop__(object, prop, value)
                                  -        {
                                  -            object[prop] = value;
                                  -        }
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //ddd("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //ddd("offset", arguments[2])
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //ddd(arguments[2], root, parent);
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = msie ? 'var f = ' + fnBlock.join("") + ';f' : fnBlock.join("");
                                  -        //ddd(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        this.renderDOM = eval(js);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                if (msie)
                                  -                    blocks.push('node.attachEvent("', this.listeners[i], '", __bind__(this, ', arg, '));\n');
                                  -                else
                                  -                    blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);\n');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push("__prop__(node, '" + name + "', " + arg + ");\n");
                                  -                //blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");\n");
                                  -        //blocks.push("try {ddd(l0,l1,l2); } catch (exc) {}");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {\n');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});\n');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');\n');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.isLoop = true;
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {\n');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);\n');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        //blocks.push("console.group('", loopName, "');");
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {\n');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';\n');
                                  -        blocks.push('}]);\n');
                                  -        //blocks.push("console.groupEnd();");
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function isDomplate(obj)
                                  -{
                                  -    return (typeof(obj) == "object") && !!obj.render;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var tableParent = doc.createElement("div"); // Workaround: IE doesn't allow to set TABLE.innerHTML
                                  -        tableParent.innerHTML = "<table>" + html + "</table>";
                                  -
                                  -        var tbody = tableParent.firstChild.firstChild;
                                  -        var parent = before.tagName.toLowerCase() == "tr" ? before.parentNode : before;
                                  -        var after = before.tagName.toLowerCase() == "tr" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (this.tag.isLoop)
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var range = doc.createRange();
                                  -        range.selectNode(doc.body);
                                  -        var frag = range.createContextualFragment(html);
                                  -
                                  -        var root = frag.firstChild;
                                  -        if (before.nextSibling)
                                  -            before.parentNode.insertBefore(frag, before.nextSibling);
                                  -        else
                                  -            before.parentNode.appendChild(frag);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document; //xxxHonza: There are no globals.
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    insertCols: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        // This doesn't work in IE.
                                  -        //var table = parent.ownerDocument.createElement("table");
                                  -        //var womb = parent.ownerDocument.createElement("tr");
                                  -        //table.appendChild(womb);
                                  -        //womb.innerHTML = html;
                                  -
                                  -        var womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = "<table><tbody><tr>" + html + "</tr></tbody></table>";
                                  -        womb = womb.firstChild.firstChild.firstChild;
                                  -
                                  -        var firstCol = womb.firstChild;
                                  -        if (!firstCol)
                                  -            return null;
                                  -
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // See insertRows for comment.
                                  -        var offset = 0;
                                  -        if (this.tag.isLoop)
                                  -        {
                                  -            var node = firstCol.parentNode.firstChild;
                                  -            for (; node && node != firstCol; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstCol, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return firstCol;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        ///var fn = new Function("var newTag = new Domplate.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "code",
                                  -    "iframe", "canvas"
                                  -);
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -// namespace to handle Domplate components
                                  -var Domplate = FBL.Domplate = {};
                                  -
                                  -return Domplate;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js b/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js
                                  deleted file mode 100644
                                  index 36fd1616..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js
                                  +++ /dev/null
                                  @@ -1,203 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("FBL/Domplate/DomTree", ["FBL", "FBL/Domplate"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -function DomTree(input)
                                  -{
                                  -    this.input = input;
                                  -}
                                  -
                                  -/**
                                  - * @domplate Represents a tree of properties/objects
                                  - */
                                  -DomTree.prototype = domplate(
                                  -/** @lends DomTree */
                                  -{
                                  -    tag:
                                  -        TABLE({"class": "hmDomTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick"},
                                  -            TBODY(
                                  -                FOR("member", "$object|memberIterator", 
                                  -                    TAG("$member|getRowTag", {member: "$member"}))
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        TR({"class": "hmMemberRow $member.open $member.type\\Row",
                                  -            $hasChildren: "$member|hasChildren",
                                  -            _repObject: "$member", level: "$member.level"},
                                  -            TD({"class": "hmMemberLabelCell", style: "padding-left: $member.indent\\px"},
                                  -                SPAN({"class": "hmMemberLabel $member.type\\Label"}, "$member.name")
                                  -            ),
                                  -            TD({"class": "hmMemberValueCell"},
                                  -                TAG("$member.tag", {object: "$member.value"})
                                  -            )
                                  -        ),
                                  -
                                  -    valueTag:
                                  -        SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -
                                  -    loop:
                                  -        FOR("member", "$members", 
                                  -            TAG("$member|getRowTag", {member: "$member"})),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -    hasChildren: function(object)
                                  -    {
                                  -        return object.hasChildren ? "hasChildren" : "";
                                  -    },
                                  -
                                  -    memberIterator: function(object)
                                  -    {
                                  -        return this.getMembers(object);
                                  -    },
                                  -
                                  -    getRowTag: function(member)
                                  -    {
                                  -        return this.rowTag;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var e = eventFix(event || window.event);
                                  -        if (!isLeftClick(e))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(e.target, "hmMemberRow");
                                  -        var label = getAncestorByClass(e.target, "hmMemberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -            this.toggleRow(row);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            var tbody = row.parentNode;
                                  -            for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -            {
                                  -                if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                    break;
                                  -                tbody.removeChild(firstRow);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            var repObject = row.repObject;
                                  -            if (repObject)
                                  -            {
                                  -                var members = this.getMembers(repObject.value, level+1);
                                  -                if (members && members.length)
                                  -                    this.loop.insertRows({members: members}, row);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getMembers: function(object, level)
                                  -    {
                                  -        if (!level)
                                  -            level = 0;
                                  -
                                  -        var members = [];
                                  -        for (var p in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                var propObj = object[p];
                                  -                if (typeof(propObj) != "function"/* && typeof(propObj) != "number"*/)
                                  -                    members.push(this.createMember("dom", p, propObj, level));
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -            }
                                  -        }
                                  -
                                  -        FBTrace.sysout("DomTree.getMembers; " + (members ? members.length : -1));
                                  -
                                  -        return members;
                                  -    },
                                  -
                                  -    createMember: function(type, name, value, level)
                                  -    {
                                  -        var valueType = typeof(value);
                                  -        var hasChildren = this.hasProperties(value) && (valueType == "object");
                                  -
                                  -        return {
                                  -            name: name,
                                  -            value: value,
                                  -            type: type,
                                  -            rowClass: "hmMemberRow-" + type,
                                  -            open: "",
                                  -            level: level,
                                  -            indent: level*16,
                                  -            hasChildren: hasChildren,
                                  -            tag: this.valueTag
                                  -        };
                                  -    },
                                  -
                                  -    hasProperties: function(ob)
                                  -    {
                                  -        try
                                  -        {
                                  -            for (var p in ob)
                                  -            {
                                  -                var propObj = ob[p];
                                  -                if (typeof(propObj) != "function")
                                  -                    return true;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -    // Public
                                  -
                                  -    append: function(parentNode)
                                  -    {
                                  -        return this.tag.append({object: this.input}, parentNode);
                                  -    }
                                  -});
                                  -
                                  -// ********************************************************************************************* //
                                  -// Helpers
                                  -
                                  -function safeToString(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -Domplate.DomTree = DomTree;
                                  -return DomTree;
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Firebug.js b/branches/flexBox/sandbox/HelloModule/app/modules/FBL/Firebug.js
                                  deleted file mode 100644
                                  index e69de29b..00000000
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules/FBL_old.js b/branches/flexBox/sandbox/HelloModule/app/modules/FBL_old.js
                                  deleted file mode 100644
                                  index a8500eba..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules/FBL_old.js
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(function(require, exports, object) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Lib components
                                  -
                                  -var FBL = require("Core/Base");
                                  -require("Core/FBTrace");
                                  -require("Core/CSS");
                                  -require("Core/DOM");
                                  -require("Core/Event");
                                  -
                                  -// ********************************************************************************************* //
                                  -// public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate.js
                                  deleted file mode 100644
                                  index c0c32b4f..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate.js
                                  +++ /dev/null
                                  @@ -1,1118 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Domplate", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Cross browser support
                                  -
                                  -var msie = false;
                                  -
                                  -// If we are in the browser scope.
                                  -if (typeof(navigator) != "undefined")
                                  -{
                                  -    var userAgent = navigator.userAgent.toLowerCase();
                                  -    msie = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -FBL.DomplateTag = DomplateTag;
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.domplate = domplate;
                                  -
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = msie ? name : name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && name in this.attrs)
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //ddd(this.renderMarkup);
                                  -        //ddd(this.renderDOM);
                                  -        //ddd(this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -        //this.addLocals(blocks);
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {\n');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {\n');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {\n');
                                  -        fnBlock.push('with (__in__) {\n');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}\n');
                                  -        if (this.context)
                                  -            fnBlock.push('}\n');
                                  -
                                  -        fnBlock.push('}})\n');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            function isArray(it) {
                                  -                return Object.prototype.toString.call(it) === "[object Array]";
                                  -            }
                                  -
                                  -            if (iter instanceof Array || isArray(iter))
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = msie ? 'var f = ' + fnBlock.join("") + ';f' : fnBlock.join("");
                                  -        this.renderMarkup = eval(js);
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ("class" in this.attrs || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if ("class" in this.attrs)
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');\n');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');\n');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';\n');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {\n');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;\n');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;\n');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {\n');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {\n');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}\n');
                                  -        if (this.context)
                                  -            fnBlock.push('}\n');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';\n');
                                  -        fnBlock.push('})\n');
                                  -
                                  -        function __prop__(object, prop, value)
                                  -        {
                                  -            object[prop] = value;
                                  -        }
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //ddd("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //ddd("offset", arguments[2])
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //ddd(arguments[2], root, parent);
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = msie ? 'var f = ' + fnBlock.join("") + ';f' : fnBlock.join("");
                                  -        //ddd(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        this.renderDOM = eval(js);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                if (msie)
                                  -                    blocks.push('node.attachEvent("', this.listeners[i], '", __bind__(this, ', arg, '));\n');
                                  -                else
                                  -                    blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);\n');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push("__prop__(node, '" + name + "', " + arg + ");\n");
                                  -                //blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");\n");
                                  -        //blocks.push("try {ddd(l0,l1,l2); } catch (exc) {}");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {\n');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});\n');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');\n');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.isLoop = true;
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {\n');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);\n');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        //blocks.push("console.group('", loopName, "');");
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {\n');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';\n');
                                  -        blocks.push('}]);\n');
                                  -        //blocks.push("console.groupEnd();");
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function isDomplate(obj)
                                  -{
                                  -    return (typeof(obj) == "object") && !!obj.render;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var tableParent = doc.createElement("div"); // Workaround: IE doesn't allow to set TABLE.innerHTML
                                  -        tableParent.innerHTML = "<table>" + html + "</table>";
                                  -
                                  -        var tbody = tableParent.firstChild.firstChild;
                                  -        var parent = before.tagName.toLowerCase() == "tr" ? before.parentNode : before;
                                  -        var after = before.tagName.toLowerCase() == "tr" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (this.tag.isLoop)
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var range = doc.createRange();
                                  -        range.selectNode(doc.body);
                                  -        var frag = range.createContextualFragment(html);
                                  -
                                  -        var root = frag.firstChild;
                                  -        if (before.nextSibling)
                                  -            before.parentNode.insertBefore(frag, before.nextSibling);
                                  -        else
                                  -            before.parentNode.appendChild(frag);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document; //xxxHonza: There are no globals.
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    insertCols: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        // This doesn't work in IE.
                                  -        //var table = parent.ownerDocument.createElement("table");
                                  -        //var womb = parent.ownerDocument.createElement("tr");
                                  -        //table.appendChild(womb);
                                  -        //womb.innerHTML = html;
                                  -
                                  -        var womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = "<table><tbody><tr>" + html + "</tr></tbody></table>";
                                  -        womb = womb.firstChild.firstChild.firstChild;
                                  -
                                  -        var firstCol = womb.firstChild;
                                  -        if (!firstCol)
                                  -            return null;
                                  -
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // See insertRows for comment.
                                  -        var offset = 0;
                                  -        if (this.tag.isLoop)
                                  -        {
                                  -            var node = firstCol.parentNode.firstChild;
                                  -            for (; node && node != firstCol; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstCol, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return firstCol;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        ///var fn = new Function("var newTag = new Domplate.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "code",
                                  -    "iframe", "canvas"
                                  -);
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -// namespace to handle Domplate components
                                  -var Domplate = FBL.Domplate = {};
                                  -
                                  -return Domplate;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js
                                  deleted file mode 100644
                                  index 169d5558..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js
                                  +++ /dev/null
                                  @@ -1,203 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Domplate/DomTree", ["FBL", "Domplate"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -function DomTree(input)
                                  -{
                                  -    this.input = input;
                                  -}
                                  -
                                  -/**
                                  - * @domplate Represents a tree of properties/objects
                                  - */
                                  -DomTree.prototype = domplate(
                                  -/** @lends DomTree */
                                  -{
                                  -    tag:
                                  -        TABLE({"class": "hmDomTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick"},
                                  -            TBODY(
                                  -                FOR("member", "$object|memberIterator", 
                                  -                    TAG("$member|getRowTag", {member: "$member"}))
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        TR({"class": "hmMemberRow $member.open $member.type\\Row",
                                  -            $hasChildren: "$member|hasChildren",
                                  -            _repObject: "$member", level: "$member.level"},
                                  -            TD({"class": "hmMemberLabelCell", style: "padding-left: $member.indent\\px"},
                                  -                SPAN({"class": "hmMemberLabel $member.type\\Label"}, "$member.name")
                                  -            ),
                                  -            TD({"class": "hmMemberValueCell"},
                                  -                TAG("$member.tag", {object: "$member.value"})
                                  -            )
                                  -        ),
                                  -
                                  -    valueTag:
                                  -        SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -
                                  -    loop:
                                  -        FOR("member", "$members", 
                                  -            TAG("$member|getRowTag", {member: "$member"})),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -    hasChildren: function(object)
                                  -    {
                                  -        return object.hasChildren ? "hasChildren" : "";
                                  -    },
                                  -
                                  -    memberIterator: function(object)
                                  -    {
                                  -        return this.getMembers(object);
                                  -    },
                                  -
                                  -    getRowTag: function(member)
                                  -    {
                                  -        return this.rowTag;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var e = eventFix(event || window.event);
                                  -        if (!isLeftClick(e))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(e.target, "hmMemberRow");
                                  -        var label = getAncestorByClass(e.target, "hmMemberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -            this.toggleRow(row);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            var tbody = row.parentNode;
                                  -            for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -            {
                                  -                if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                    break;
                                  -                tbody.removeChild(firstRow);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            var repObject = row.repObject;
                                  -            if (repObject)
                                  -            {
                                  -                var members = this.getMembers(repObject.value, level+1);
                                  -                if (members && members.length)
                                  -                    this.loop.insertRows({members: members}, row);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getMembers: function(object, level)
                                  -    {
                                  -        if (!level)
                                  -            level = 0;
                                  -
                                  -        var members = [];
                                  -        for (var p in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                var propObj = object[p];
                                  -                if (typeof(propObj) != "function"/* && typeof(propObj) != "number"*/)
                                  -                    members.push(this.createMember("dom", p, propObj, level));
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -            }
                                  -        }
                                  -
                                  -        FBTrace.sysout("DomTree.getMembers; " + (members ? members.length : -1));
                                  -
                                  -        return members;
                                  -    },
                                  -
                                  -    createMember: function(type, name, value, level)
                                  -    {
                                  -        var valueType = typeof(value);
                                  -        var hasChildren = this.hasProperties(value) && (valueType == "object");
                                  -
                                  -        return {
                                  -            name: name,
                                  -            value: value,
                                  -            type: type,
                                  -            rowClass: "hmMemberRow-" + type,
                                  -            open: "",
                                  -            level: level,
                                  -            indent: level*16,
                                  -            hasChildren: hasChildren,
                                  -            tag: this.valueTag
                                  -        };
                                  -    },
                                  -
                                  -    hasProperties: function(ob)
                                  -    {
                                  -        try
                                  -        {
                                  -            for (var p in ob)
                                  -            {
                                  -                var propObj = ob[p];
                                  -                if (typeof(propObj) != "function")
                                  -                    return true;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        return false;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
                                  -    // Public
                                  -
                                  -    append: function(parentNode)
                                  -    {
                                  -        return this.tag.append({object: this.input}, parentNode);
                                  -    }
                                  -});
                                  -
                                  -// ********************************************************************************************* //
                                  -// Helpers
                                  -
                                  -function safeToString(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -Domplate.DomTree = DomTree;
                                  -return DomTree;
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/FBL.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/FBL.js
                                  deleted file mode 100644
                                  index 867152a4..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/FBL.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("FBL",
                                  -[
                                  -    "exports", // comment this line and it will throw "FBL is undefined" error
                                  -    "Lib/Base",
                                  -    "Lib/FBTrace",
                                  -    "Lib/CSS",
                                  -    "Lib/DOM",
                                  -    "Lib/Event"
                                  -],
                                  -function(exports, Lib){
                                  -// ********************************************************************************************* //
                                  -
                                  -return Lib;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug.js
                                  deleted file mode 100644
                                  index 6f84260e..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug.js
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug",
                                  -[
                                  -    "exports", // comment this line and it will throw "Firebug is undefined" error
                                  -    "Firebug/CSS",
                                  -    "Firebug/DOM"
                                  -],
                                  -function(exports, Firebug){
                                  -// ********************************************************************************************* //
                                  -
                                  -return Firebug;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js
                                  deleted file mode 100644
                                  index c22a9d68..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/CSS", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Common::Firebug.CSS module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js
                                  deleted file mode 100644
                                  index 9dd4bb6d..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/DOM", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Common::Firebug.DOM module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js
                                  deleted file mode 100644
                                  index 43ee6647..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Lib/Base", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -FBL.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -FBL.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -
                                  -    return l;
                                  -};
                                  -
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js
                                  deleted file mode 100644
                                  index 4756fd69..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js
                                  +++ /dev/null
                                  @@ -1,68 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Lib/CSS", ["FBL"], function(FBL) {
                                  -
                                  -//***********************************************************************************************//
                                  -// CSS
                                  -
                                  -FBL.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            //var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            //if (!re.exec(node.getAttribute("class")))
                                  -            //    return false;
                                  -            var className = node.className;//node.getAttribute("class");
                                  -            if (!className || className.indexOf(name + " ") == -1)
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -FBL.setClass = function(node, name)
                                  -{
                                  -    if (node && !FBL.hasClass(node, name))
                                  -        node.className += " " + name + " ";
                                  -};
                                  -
                                  -FBL.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -FBL.toggleClass = function(elt, name)
                                  -{
                                  -    if (FBL.hasClass(elt, name))
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        return false;
                                  -    }
                                  -    else
                                  -    {
                                  -        FBL.setClass(elt, name);
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js
                                  deleted file mode 100644
                                  index b58655d2..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js
                                  +++ /dev/null
                                  @@ -1,25 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Lib/DOM", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// DOM
                                  -
                                  -FBL.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (FBL.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js
                                  deleted file mode 100644
                                  index ce10e5d6..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js
                                  +++ /dev/null
                                  @@ -1,170 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Lib/Event", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Events
                                  -
                                  -FBL.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && FBL.noKeyModifiers(event);
                                  -};
                                  -
                                  -FBL.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -/**
                                  - * Support for cross-browser compatible event.
                                  - */
                                  -var expando = "helloModule";
                                  -FBL.eventFix = function(event)
                                  -{
                                  -    if ( event[expando] == true )
                                  -        return event;
                                  -
                                  -    // store a copy of the original event object
                                  -    // and "clone" to set read-only properties
                                  -    var originalEvent = event;
                                  -    event = { originalEvent: originalEvent };
                                  -    var props = "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");
                                  -    for ( var i=props.length; i; i-- )
                                  -        event[ props[i] ] = originalEvent[ props[i] ];
                                  -
                                  -    // Mark it as fixed
                                  -    event[expando] = true;
                                  -
                                  -    // add preventDefault and stopPropagation since
                                  -    // they will not work on the clone
                                  -    event.preventDefault = function() {
                                  -        // if preventDefault exists run it on the original event
                                  -        if (originalEvent.preventDefault)
                                  -            originalEvent.preventDefault();
                                  -        // otherwise set the returnValue property of the original event to false (IE)
                                  -        originalEvent.returnValue = false;
                                  -    };
                                  -    event.stopPropagation = function() {
                                  -        // if stopPropagation exists run it on the original event
                                  -        if (originalEvent.stopPropagation)
                                  -            originalEvent.stopPropagation();
                                  -        // otherwise set the cancelBubble property of the original event to true (IE)
                                  -        originalEvent.cancelBubble = true;
                                  -    };
                                  -
                                  -    // Fix timeStamp
                                  -    event.timeStamp = event.timeStamp || this.now();
                                  -
                                  -    // Fix target property, if necessary
                                  -    if ( !event.target )
                                  -        event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
                                  -
                                  -    // check if target is a textnode (safari)
                                  -    if ( event.target.nodeType == 3 )
                                  -        event.target = event.target.parentNode;
                                  -
                                  -    // Add relatedTarget, if necessary
                                  -    if ( !event.relatedTarget && event.fromElement )
                                  -        event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
                                  -
                                  -    // Calculate pageX/Y if missing and clientX/Y available
                                  -    if ( event.pageX == null && event.clientX != null ) {
                                  -        var doc = document.documentElement, body = document.body;
                                  -        event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
                                  -        event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
                                  -    }
                                  -
                                  -    // Add which for key events
                                  -    if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
                                  -        event.which = event.charCode || event.keyCode;
                                  -
                                  -    // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
                                  -    if ( !event.metaKey && event.ctrlKey )
                                  -        event.metaKey = event.ctrlKey;
                                  -
                                  -    // Add which for click: 1 == left; 2 == middle; 3 == right
                                  -    // Note: button is not normalized, so don't use it
                                  -    if ( !event.which && event.button )
                                  -        event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
                                  -
                                  -    return event;
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -// DOM
                                  -
                                  -FBL.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (FBL.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -//***********************************************************************************************//
                                  -// CSS
                                  -
                                  -FBL.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            //var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            //if (!re.exec(node.getAttribute("class")))
                                  -            //    return false;
                                  -            var className = node.className;//node.getAttribute("class");
                                  -            if (!className || className.indexOf(name + " ") == -1)
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -FBL.setClass = function(node, name)
                                  -{
                                  -    if (node && !FBL.hasClass(node, name))
                                  -        node.className += " " + name + " ";
                                  -};
                                  -
                                  -FBL.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -FBL.toggleClass = function(elt, name)
                                  -{
                                  -    if (FBL.hasClass(elt, name))
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        return false;
                                  -    }
                                  -    else
                                  -    {
                                  -        FBL.setClass(elt, name);
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -// ********************************************************************************************* //
                                  -// Public
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js
                                  deleted file mode 100644
                                  index 6e2d7d60..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js
                                  +++ /dev/null
                                  @@ -1,36 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Lib/FBTrace", ["FBL"], function(FBL) {
                                  -
                                  -// ********************************************************************************************* //
                                  -// Module Implementation
                                  -
                                  -// We need to use the console object in case of the web page that doesn't have proper
                                  -// privileges to use Components.utils
                                  -
                                  -var FBTrace = FBL.FBTrace =
                                  -{
                                  -    sysout: function()
                                  -    {
                                  -        if (typeof(console.log) == "function")
                                  -            console.log.apply(console, arguments);
                                  -    }
                                  -};
                                  -
                                  -try
                                  -{
                                  -    var FirebugTrace = {};
                                  -    Components.utils["import"]("resource://firebug/firebug-trace-service.js", FirebugTrace);
                                  -    FBTrace = FBL.FBTrace = FirebugTrace.traceConsoleService.getTracer("extensions.firebug");
                                  -}
                                  -catch (e)
                                  -{
                                  -}
                                  -
                                  -// ********************************************************************************************* //
                                  -// Exported Symbols
                                  -
                                  -return FBL;
                                  -
                                  -// ********************************************************************************************* //
                                  -});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js
                                  deleted file mode 100644
                                  index e04cfc1e..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/CSS", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Lite::Firebug.CSS module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js
                                  deleted file mode 100644
                                  index e55bb2eb..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/DOM", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Lite::Firebug.DOM module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js
                                  deleted file mode 100644
                                  index 07c58382..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/CSS", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Mozilla::Firebug.CSS module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js b/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js
                                  deleted file mode 100644
                                  index ef76d10a..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js
                                  +++ /dev/null
                                  @@ -1,9 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define("Firebug/DOM", ["FBL"], function(FBL) { with(FBL) {
                                  -// ********************************************************************************************* //
                                  -
                                  -FBTrace.sysout("loading Mozilla::Firebug.DOM module");
                                  -
                                  -// ********************************************************************************************* //
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/server.js b/branches/flexBox/sandbox/HelloModule/app/server.js
                                  deleted file mode 100644
                                  index a934e198..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/server.js
                                  +++ /dev/null
                                  @@ -1,49 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var sys = require("sys");
                                  -var http = require("http");
                                  -var url = require("url");
                                  -var path = require("path");
                                  -var fs = require("fs");
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -/**
                                  - * A simple static file web server.
                                  - */
                                  -http.createServer(function(request, response)
                                  -{
                                  -    var uri = url.parse(request.url).pathname;
                                  -    var filename = path.join(process.cwd(), uri);
                                  -    path.exists(filename, function(exists)
                                  -    {
                                  -        if (!exists)
                                  -        {
                                  -            response.sendHeader(404, {"Content-Type": "text/plain"});
                                  -            response.write("404 Not Found\n");
                                  -            response.close();
                                  -            return;
                                  -        }
                                  -
                                  -        fs.readFile(filename, "binary", function(err, file)
                                  -        {
                                  -            if (err)
                                  -            {
                                  -                response.sendHeader(500, {"Content-Type": "text/plain"});
                                  -                response.write(err + "\n");
                                  -                response.close();
                                  -                return;
                                  -            }
                                  -
                                  -            response.sendHeader(200);
                                  -            response.write(file, "binary");
                                  -            response.close();
                                  -        });
                                  -    });
                                  -}).listen(8070);
                                  -
                                  -// ********************************************************************************************* //
                                  -
                                  -sys.puts("Server running at http://localhost:8070/");
                                  -
                                  -// ********************************************************************************************* //
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/skin/classic/domTree.css b/branches/flexBox/sandbox/HelloModule/app/skin/classic/domTree.css
                                  deleted file mode 100644
                                  index 9b0a189f..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/skin/classic/domTree.css
                                  +++ /dev/null
                                  @@ -1,49 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.hmDomTable {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 13px;
                                  -}
                                  -
                                  -.hmMemberLabelCell {
                                  -    padding: 2px 50px 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.hmMemberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -    color: gray;
                                  -}
                                  -
                                  -.hmMemberLabel {
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    padding-left: 18px;
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.hmMemberRow.hasChildren.opened > .hmMemberLabelCell > .hmMemberLabel {
                                  -    background-image: url(images/twistyOpen.png);
                                  -    /*background-image: url(chrome://firebug/skin/win/twistyOpen.png);*/
                                  -}
                                  -
                                  -.hmMemberRow.hasChildren > .hmMemberLabelCell > .hmMemberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.hmMemberRow.hasChildren > .hmMemberLabelCell > .hmMemberLabel {
                                  -    background-image: url(images/twistyClosed.png);
                                  -    /*background-image: url(chrome://firebug/skin/win/twistyClosed.png);*/
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.hmMemberRow.hasChildren > .hmMemberLabelCell > .hmMemberLabel {
                                  -    background-position: 2px 3px;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/skin/classic/helloModule.css b/branches/flexBox/sandbox/HelloModule/app/skin/classic/helloModule.css
                                  deleted file mode 100644
                                  index 668410f6..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/skin/classic/helloModule.css
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -@import url("domTree.css");
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png b/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png b/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/webapp/allplugins-require.js b/branches/flexBox/sandbox/HelloModule/app/webapp/allplugins-require.js
                                  deleted file mode 100644
                                  index 10fc2113..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/webapp/allplugins-require.js
                                  +++ /dev/null
                                  @@ -1,2424 +0,0 @@
                                  -/** vim: et:ts=4:sw=4:sts=4
                                  - * @license RequireJS 0.15.0 Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -//laxbreak is true to allow build pragmas to change some statements.
                                  -/*jslint white: false, plusplus: false, nomen: false, laxbreak: true, regexp: false */
                                  -/*global window: false, document: false, navigator: false,
                                  -setTimeout: false, traceDeps: true, clearInterval: false, self: false,
                                  -setInterval: false, importScripts: false, jQuery: false */
                                  -
                                  -
                                  -var require, define;
                                  -(function () {
                                  -    //Change this version number for each release.
                                  -    var version = "0.15.0",
                                  -            empty = {}, s,
                                  -            i, defContextName = "_", contextLoads = [],
                                  -            scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState,
                                  -            commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -            cjsRequireRegExp = /require\(["']([\w\!\-_\.\/]+)["']\)/g,
                                  -            main,
                                  -            isBrowser = !!(typeof window !== "undefined" && navigator && document),
                                  -            isWebWorker = !isBrowser && typeof importScripts !== "undefined",
                                  -            //PS3 indicates loaded and complete, but need to wait for complete
                                  -            //specifically. Sequence is "loading", "loaded", execution,
                                  -            // then "complete". The UA check is unfortunate, but not sure how
                                  -            //to feature test w/o causing perf issues.
                                  -            readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? /^complete$/ : /^(complete|loaded)$/,
                                  -            ostring = Object.prototype.toString,
                                  -            ap = Array.prototype,
                                  -            aps = ap.slice, scrollIntervalId, req, baseElement,
                                  -            defQueue = [], useInteractive = false, currentlyAddingScript;
                                  -
                                  -    function isFunction(it) {
                                  -        return ostring.call(it) === "[object Function]";
                                  -    }
                                  -
                                  -    //Check for an existing version of require. If so, then exit out. Only allow
                                  -    //one version of require to be active in a page. However, allow for a require
                                  -    //config object, just exit quickly if require is an actual function.
                                  -    if (typeof require !== "undefined") {
                                  -        if (isFunction(require)) {
                                  -            return;
                                  -        } else {
                                  -            //assume it is a config object.
                                  -            cfg = require;
                                  -        }
                                  -    }
                                  -    
                                  -        /**
                                  -     * Calls a method on a plugin. The obj object should have two property,
                                  -     * name: the name of the method to call on the plugin
                                  -     * args: the arguments to pass to the plugin method.
                                  -     */
                                  -    function callPlugin(prefix, context, obj) {
                                  -        //Call the plugin, or load it.
                                  -        var plugin = s.plugins.defined[prefix], waiting;
                                  -        if (plugin) {
                                  -            plugin[obj.name].apply(null, obj.args);
                                  -        } else {
                                  -            //Put the call in the waiting call BEFORE requiring the module,
                                  -            //since the require could be synchronous in some environments,
                                  -            //like builds
                                  -            waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []);
                                  -            waiting.push(obj);
                                  -
                                  -            //Load the module
                                  -            req(["require/" + prefix], context.contextName);
                                  -        }
                                  -    }
                                  -    
                                  -    /**
                                  -     * Convenience method to call main for a require.def call that was put on
                                  -     * hold in the defQueue.
                                  -     */
                                  -    function callDefMain(args, context) {
                                  -        main.apply(req, args);
                                  -        //Mark the module loaded. Must do it here in addition
                                  -        //to doing it in require.def in case a script does
                                  -        //not call require.def
                                  -        context.loaded[args[0]] = true;
                                  -    }
                                  -
                                  -    /**
                                  -     * Used to set up package paths from a packagePaths or packages config object.
                                  -     * @param {Object} packages the object to store the new package config
                                  -     * @param {Array} currentPackages an array of packages to configure
                                  -     * @param {String} [dir] a prefix dir to use.
                                  -     */
                                  -    function configurePackageDir(packages, currentPackages, dir) {
                                  -        var i, location, pkgObj;
                                  -        for (i = 0; (pkgObj = currentPackages[i]); i++) {
                                  -            pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
                                  -            location = pkgObj.location;
                                  -
                                  -            //Add dir to the path, but avoid paths that start with a slash
                                  -            //or have a colon (indicates a protocol)
                                  -            if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
                                  -                pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name);
                                  -            }
                                  -
                                  -            //Normalize package paths.
                                  -            pkgObj.location = pkgObj.location || pkgObj.name;
                                  -            pkgObj.lib = pkgObj.lib || "lib";
                                  -            pkgObj.main = pkgObj.main || "main";
                                  -
                                  -            packages[pkgObj.name] = pkgObj;
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Determine if priority loading is done. If so clear the priorityWait
                                  -     */
                                  -    function isPriorityDone(context) {
                                  -        var priorityDone = true,
                                  -            priorityWait = context.config.priorityWait,
                                  -            priorityName, i;
                                  -        if (priorityWait) {
                                  -            for (i = 0; (priorityName = priorityWait[i]); i++) {
                                  -                if (!context.loaded[priorityName]) {
                                  -                    priorityDone = false;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (priorityDone) {
                                  -                delete context.config.priorityWait;
                                  -            }
                                  -        }
                                  -        return priorityDone;
                                  -    }
                                  -
                                  -    /**
                                  -     * Resumes tracing of dependencies and then checks if everything is loaded.
                                  -     */
                                  -    function resume(context) {
                                  -        var args, i, paused = s.paused;
                                  -        if (context.scriptCount <= 0) {
                                  -            //Synchronous envs will push the number below zero with the
                                  -            //decrement above, be sure to set it back to zero for good measure.
                                  -            //require() calls that also do not end up loading scripts could
                                  -            //push the number negative too.
                                  -            context.scriptCount = 0;
                                  -
                                  -            //Make sure any remaining defQueue items get properly processed.
                                  -            while (defQueue.length) {
                                  -                args = defQueue.shift();
                                  -                if (args[0] === null) {
                                  -                    req.onError(new Error('Mismatched anonymous require.def modules'));
                                  -                } else {
                                  -                    callDefMain(args, context);
                                  -                }
                                  -            }
                                  -
                                  -            //Skip the resume if current context is in priority wait.
                                  -            if (context.config.priorityWait && !isPriorityDone(context)) {
                                  -                return;
                                  -            }
                                  -
                                  -            if (paused.length) {
                                  -                //Reset paused since this loop will process current set.
                                  -                s.paused = [];
                                  -
                                  -                for (i = 0; (args = paused[i]); i++) {
                                  -                    req.checkDeps.apply(req, args);
                                  -                }
                                  -            }
                                  -
                                  -            if (isWebWorker) {
                                  -                //In a web worker, since importScripts is synchronous,
                                  -                //it may think all dependencies are loaded, but still
                                  -                //in the middle of a list of dependency fetches, so
                                  -                //delay the checkLoaded in a timeout for the items to complete.
                                  -                //This is really hacky though, time for a rewrite.
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(s.ctxName);
                                  -                }, 30);
                                  -            } else {
                                  -                req.checkLoaded(s.ctxName);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Main entry point.
                                  -     *
                                  -     * If the only argument to require is a string, then the module that
                                  -     * is represented by that string is fetched for the appropriate context.
                                  -     *
                                  -     * If the first argument is an array, then it will be treated as an array
                                  -     * of dependency string names to fetch. An optional function callback can
                                  -     * be specified to execute when all of those dependencies are available.
                                  -     */
                                  -    require = function (deps, callback, contextName, relModuleName) {
                                  -        var context, config;
                                  -        if (typeof deps === "string" && !isFunction(callback)) {
                                  -            //Just return the module wanted. In this scenario, the
                                  -            //second arg (if passed) is just the contextName.
                                  -            return require.get(deps, callback, contextName, relModuleName);
                                  -        }
                                  -        // Dependencies first
                                  -        if (!require.isArray(deps)) {
                                  -            // deps is a config object
                                  -            config = deps;
                                  -            if (require.isArray(callback)) {
                                  -                // Adjust args if there are dependencies
                                  -                deps = callback;
                                  -                callback = contextName;
                                  -                contextName = relModuleName;
                                  -                relModuleName = arguments[4];
                                  -            } else {
                                  -                deps = [];
                                  -            }
                                  -        }
                                  -
                                  -        main(null, deps, callback, config, contextName, relModuleName);
                                  -
                                  -        //If the require call does not trigger anything new to load,
                                  -        //then resume the dependency processing. Context will be undefined
                                  -        //on first run of require.
                                  -        context = s.contexts[(contextName || (config && config.context) || s.ctxName)];
                                  -        if (context && context.scriptCount === 0) {
                                  -            resume(context);
                                  -        }
                                  -        //Returning undefined for Spidermonky strict checking in Komodo
                                  -        return undefined;
                                  -    };
                                  -
                                  -    //Alias for caja compliance internally -
                                  -    //specifically: "Dynamically computed names should use require.async()"
                                  -    //even though this spec isn't really decided on.
                                  -    //Since it is here, use this alias to make typing shorter.
                                  -    req = require;
                                  -
                                  -    /**
                                  -     * Any errors that require explicitly generates will be passed to this
                                  -     * function. Intercept/override it if you want custom error handling.
                                  -     * If you do override it, this method should *always* throw an error
                                  -     * to stop the execution flow correctly. Otherwise, other weird errors
                                  -     * will occur.
                                  -     * @param {Error} err the error object.
                                  -     */
                                  -    req.onError = function (err) {
                                  -        throw err;
                                  -    };
                                  -
                                  -    /**
                                  -     * The function that handles definitions of modules. Differs from
                                  -     * require() in that a string for the module should be the first argument,
                                  -     * and the function to execute after dependencies are loaded should
                                  -     * return a value to define the module corresponding to the first argument's
                                  -     * name.
                                  -     */
                                  -    define = req.def = function (name, deps, callback, contextName) {
                                  -        var i, scripts, script, node = currentlyAddingScript;
                                  -
                                  -        //Allow for anonymous functions
                                  -        if (typeof name !== 'string') {
                                  -            //Adjust args appropriately
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = name;
                                  -            name = null;
                                  -        }
                                  -
                                  -        //This module may not have dependencies
                                  -        if (!req.isArray(deps)) {
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = [];
                                  -        }
                                  -
                                  -        //If no name, and callback is a function, then figure out if it a
                                  -        //CommonJS thing with dependencies.
                                  -        if (!name && !deps.length && req.isFunction(callback)) {
                                  -            //Remove comments from the callback string,
                                  -            //look for require calls, and pull them into the dependencies.
                                  -            callback
                                  -                .toString()
                                  -                .replace(commentRegExp, "")
                                  -                .replace(cjsRequireRegExp, function (match, dep) {
                                  -                    deps.push(dep);
                                  -                });
                                  -
                                  -            //May be a CommonJS thing even without require calls, but still
                                  -            //could use exports, and such, so always add those as dependencies.
                                  -            //This is a bit wasteful for RequireJS modules that do not need
                                  -            //an exports or module object, but erring on side of safety.
                                  -            //REQUIRES the function to expect the CommonJS variables in the
                                  -            //order listed below.
                                  -            deps = ["require", "exports", "module"].concat(deps);
                                  -        }
                                  -
                                  -        //If in IE 6-8 and hit an anonymous require.def call, do the interactive/
                                  -        //currentlyAddingScript scripts stuff.
                                  -        if (!name && useInteractive) {
                                  -            scripts = document.getElementsByTagName('script');
                                  -            for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -                if (script.readyState === 'interactive') {
                                  -                    node = script;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (!node) {
                                  -                req.onError(new Error("ERROR: No matching script interactive for " + callback));
                                  -            }
                                  -
                                  -            name = node.getAttribute("data-requiremodule");
                                  -        }
                                  -
                                  -        if (typeof name === 'string') {
                                  -            //Do not try to auto-register a jquery later.
                                  -            //Do this work here and in main, since for IE/useInteractive, this function
                                  -            //is the earliest touch-point.
                                  -            s.contexts[s.ctxName].jQueryDef = (name === "jquery");
                                  -        }
                                  -
                                  -        //Always save off evaluating the def call until the script onload handler.
                                  -        //This allows multiple modules to be in a file without prematurely
                                  -        //tracing dependencies, and allows for anonymous module support,
                                  -        //where the module name is not known until the script onload event
                                  -        //occurs.
                                  -        defQueue.push([name, deps, callback, null, contextName]);
                                  -    };
                                  -
                                  -    main = function (name, deps, callback, config, contextName, relModuleName) {
                                  -        //Grab the context, or create a new one for the given context name.
                                  -        var context, newContext, loaded, pluginPrefix,
                                  -            canSetContext, prop, newLength, outDeps, mods, paths, index, i,
                                  -            deferMods, deferModArgs, lastModArg, waitingName, packages,
                                  -            packagePaths;
                                  -
                                  -        contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName);
                                  -        context = s.contexts[contextName];
                                  -
                                  -        if (name) {
                                  -                        // Pull off any plugin prefix.
                                  -            index = name.indexOf("!");
                                  -            if (index !== -1) {
                                  -                pluginPrefix = name.substring(0, index);
                                  -                name = name.substring(index + 1, name.length);
                                  -            } else {
                                  -                //Could be that the plugin name should be auto-applied.
                                  -                //Used by i18n plugin to enable anonymous i18n modules, but
                                  -                //still associating the auto-generated name with the i18n plugin.
                                  -                pluginPrefix = context.defPlugin[name];
                                  -            }
                                  -
                                  -            
                                  -            //If module already defined for context, or already waiting to be
                                  -            //evaluated, leave.
                                  -            waitingName = context.waiting[name];
                                  -            if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //If nothing is waiting on being loaded in the current context,
                                  -            //then switch s.ctxName to current contextName.
                                  -            loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded);
                                  -            canSetContext = true;
                                  -            if (loaded) {
                                  -                for (prop in loaded) {
                                  -                    if (!(prop in empty)) {
                                  -                        if (!loaded[prop]) {
                                  -                            canSetContext = false;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (canSetContext) {
                                  -                s.ctxName = contextName;
                                  -            }
                                  -        }
                                  -
                                  -        if (!context) {
                                  -            newContext = {
                                  -                contextName: contextName,
                                  -                config: {
                                  -                    waitSeconds: 7,
                                  -                    baseUrl: s.baseUrl || "./",
                                  -                    paths: {},
                                  -                    packages: {}
                                  -                },
                                  -                waiting: [],
                                  -                specified: {
                                  -                    "require": true,
                                  -                    "exports": true,
                                  -                    "module": true
                                  -                },
                                  -                loaded: {},
                                  -                scriptCount: 0,
                                  -                urlFetched: {},
                                  -                defPlugin: {},
                                  -                defined: {},
                                  -                modifiers: {}
                                  -            };
                                  -
                                  -                        if (s.plugins.newContext) {
                                  -                s.plugins.newContext(newContext);
                                  -            }
                                  -            
                                  -            context = s.contexts[contextName] = newContext;
                                  -        }
                                  -
                                  -        //If have a config object, update the context's config object with
                                  -        //the config values.
                                  -        if (config) {
                                  -            //Make sure the baseUrl ends in a slash.
                                  -            if (config.baseUrl) {
                                  -                if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") {
                                  -                    config.baseUrl += "/";
                                  -                }
                                  -            }
                                  -
                                  -            //Save off the paths and packages since they require special processing,
                                  -            //they are additive.
                                  -            paths = context.config.paths;
                                  -            packages = context.config.packages;
                                  -
                                  -            //Mix in the config values, favoring the new values over
                                  -            //existing ones in context.config.
                                  -            req.mixin(context.config, config, true);
                                  -
                                  -            //Adjust paths if necessary.
                                  -            if (config.paths) {
                                  -                for (prop in config.paths) {
                                  -                    if (!(prop in empty)) {
                                  -                        paths[prop] = config.paths[prop];
                                  -                    }
                                  -                }
                                  -                context.config.paths = paths;
                                  -            }
                                  -
                                  -            packagePaths = config.packagePaths;
                                  -            if (packagePaths || config.packages) {
                                  -                //Convert packagePaths into a packages config.
                                  -                if (packagePaths) {
                                  -                    for (prop in packagePaths) {
                                  -                        if (!(prop in empty)) {
                                  -                            configurePackageDir(packages, packagePaths[prop], prop);
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Adjust packages if necessary.
                                  -                if (config.packages) {
                                  -                    configurePackageDir(packages, config.packages);
                                  -                }
                                  -
                                  -                //Done with modifications, assing packages back to context config
                                  -                context.config.packages = packages;
                                  -            }
                                  -
                                  -            //If priority loading is in effect, trigger the loads now
                                  -            if (config.priority) {
                                  -                //Create a separate config property that can be
                                  -                //easily tested for config priority completion.
                                  -                //Do this instead of wiping out the config.priority
                                  -                //in case it needs to be inspected for debug purposes later.
                                  -                req(config.priority);
                                  -                context.config.priorityWait = config.priority;
                                  -            }
                                  -
                                  -            //If a deps array or a config callback is specified, then call
                                  -            //require with those args. This is useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.deps || config.callback) {
                                  -                req(config.deps || [], config.callback);
                                  -            }
                                  -
                                  -                        //Set up ready callback, if asked. Useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.ready) {
                                  -                req.ready(config.ready);
                                  -            }
                                  -            
                                  -            //If it is just a config block, nothing else,
                                  -            //then return.
                                  -            if (!deps) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Normalize dependency strings: need to determine if they have
                                  -        //prefixes and to also normalize any relative paths. Replace the deps
                                  -        //array of strings with an array of objects.
                                  -        if (deps) {
                                  -            outDeps = deps;
                                  -            deps = [];
                                  -            for (i = 0; i < outDeps.length; i++) {
                                  -                deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context);
                                  -            }
                                  -        }
                                  -
                                  -        //Store the module for later evaluation
                                  -        newLength = context.waiting.push({
                                  -            name: name,
                                  -            deps: deps,
                                  -            callback: callback
                                  -        });
                                  -
                                  -        if (name) {
                                  -            //Store index of insertion for quick lookup
                                  -            context.waiting[name] = newLength - 1;
                                  -
                                  -            //Mark the module as specified so no need to fetch it again.
                                  -            //Important to set specified here for the
                                  -            //pause/resume case where there are multiple modules in a file.
                                  -            context.specified[name] = true;
                                  -
                                  -                        //Load any modifiers for the module.
                                  -            mods = context.modifiers[name];
                                  -            if (mods) {
                                  -                req(mods, contextName);
                                  -                deferMods = mods.__deferMods;
                                  -                if (deferMods) {
                                  -                    for (i = 0; i < deferMods.length; i++) {
                                  -                        deferModArgs = deferMods[i];
                                  -
                                  -                        //Add the context name to the def call.
                                  -                        lastModArg = deferModArgs[deferModArgs.length - 1];
                                  -                        if (lastModArg === undefined) {
                                  -                            deferModArgs[deferModArgs.length - 1] = contextName;
                                  -                        } else if (typeof lastModArg === "string") {
                                  -                            deferMods.push(contextName);
                                  -                        }
                                  -
                                  -                        require.def.apply(require, deferModArgs);
                                  -                    }
                                  -                }
                                  -            }
                                  -                    }
                                  -
                                  -        //If the callback is not an actual function, it means it already
                                  -        //has the definition of the module as a literal value.
                                  -        if (name && callback && !req.isFunction(callback)) {
                                  -            context.defined[name] = callback;
                                  -        }
                                  -
                                  -        //If a pluginPrefix is available, call the plugin, or load it.
                                  -                if (pluginPrefix) {
                                  -            callPlugin(pluginPrefix, context, {
                                  -                name: "require",
                                  -                args: [name, deps, callback, context]
                                  -            });
                                  -        }
                                  -        
                                  -        //Hold on to the module until a script load or other adapter has finished
                                  -        //evaluating the whole file. This helps when a file has more than one
                                  -        //module in it -- dependencies are not traced and fetched until the whole
                                  -        //file is processed.
                                  -        s.paused.push([pluginPrefix, name, deps, context]);
                                  -
                                  -        //Set loaded here for modules that are also loaded
                                  -        //as part of a layer, where onScriptLoad is not fired
                                  -        //for those cases. Do this after the inline define and
                                  -        //dependency tracing is done.
                                  -        //Also check if auto-registry of jQuery needs to be skipped.
                                  -        if (name) {
                                  -            context.loaded[name] = true;
                                  -            context.jQueryDef = (name === "jquery");
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Simple function to mix in properties from source into target,
                                  -     * but only if target does not already have a property of the same name.
                                  -     */
                                  -    req.mixin = function (target, source, force) {
                                  -        for (var prop in source) {
                                  -            if (!(prop in empty) && (!(prop in target) || force)) {
                                  -                target[prop] = source[prop];
                                  -            }
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    req.version = version;
                                  -
                                  -    //Set up page state.
                                  -    s = req.s = {
                                  -        ctxName: defContextName,
                                  -        contexts: {},
                                  -        paused: [],
                                  -                plugins: {
                                  -            defined: {},
                                  -            callbacks: {},
                                  -            waiting: {}
                                  -        },
                                  -                //Stores a list of URLs that should not get async script tag treatment.
                                  -        skipAsync: {},
                                  -        isBrowser: isBrowser,
                                  -        isPageLoaded: !isBrowser,
                                  -        readyCalls: [],
                                  -        doc: isBrowser ? document : null
                                  -    };
                                  -
                                  -    req.isBrowser = s.isBrowser;
                                  -    if (isBrowser) {
                                  -        s.head = document.getElementsByTagName("head")[0];
                                  -        //If BASE tag is in play, using appendChild is a problem for IE6.
                                  -        //When that browser dies, this can be removed. Details in this jQuery bug:
                                  -        //http://dev.jquery.com/ticket/2709
                                  -        baseElement = document.getElementsByTagName("base")[0];
                                  -        if (baseElement) {
                                  -            s.head = baseElement.parentNode;
                                  -        }
                                  -    }
                                  -
                                  -        /**
                                  -     * Sets up a plugin callback name. Want to make it easy to test if a plugin
                                  -     * needs to be called for a certain lifecycle event by testing for
                                  -     * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event
                                  -     * if there is a real plugin that registers for it.
                                  -     */
                                  -    function makePluginCallback(name, returnOnTrue) {
                                  -        var cbs = s.plugins.callbacks[name] = [];
                                  -        s.plugins[name] = function () {
                                  -            for (var i = 0, cb; (cb = cbs[i]); i++) {
                                  -                if (cb.apply(null, arguments) === true && returnOnTrue) {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            return false;
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Registers a new plugin for require.
                                  -     */
                                  -    req.plugin = function (obj) {
                                  -        var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks,
                                  -            waiting = s.plugins.waiting[prefix], generics,
                                  -            defined = s.plugins.defined, contexts = s.contexts, context;
                                  -
                                  -        //Do not allow redefinition of a plugin, there may be internal
                                  -        //state in the plugin that could be lost.
                                  -        if (defined[prefix]) {
                                  -            return req;
                                  -        }
                                  -
                                  -        //Save the plugin.
                                  -        defined[prefix] = obj;
                                  -
                                  -        //Set up plugin callbacks for methods that need to be generic to
                                  -        //require, for lifecycle cases where it does not care about a particular
                                  -        //plugin, but just that some plugin work needs to be done.
                                  -        generics = ["newContext", "isWaiting", "orderDeps"];
                                  -        for (i = 0; (prop = generics[i]); i++) {
                                  -            if (!s.plugins[prop]) {
                                  -                makePluginCallback(prop, prop === "isWaiting");
                                  -            }
                                  -            cbs[prop].push(obj[prop]);
                                  -        }
                                  -
                                  -        //Call newContext for any contexts that were already created.
                                  -        if (obj.newContext) {
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    obj.newContext(context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If there are waiting requests for a plugin, execute them now.
                                  -        if (waiting) {
                                  -            for (i = 0; (call = waiting[i]); i++) {
                                  -                if (obj[call.name]) {
                                  -                    obj[call.name].apply(null, call.args);
                                  -                }
                                  -            }
                                  -            delete s.plugins.waiting[prefix];
                                  -        }
                                  -
                                  -        return req;
                                  -    };
                                  -    
                                  -    /**
                                  -     * As of jQuery 1.4.3, it supports a readyWait property that will hold off
                                  -     * calling jQuery ready callbacks until all scripts are loaded. Be sure
                                  -     * to track it if readyWait is available. Also, since jQuery 1.4.3 does
                                  -     * not register as a module, need to do some global inference checking.
                                  -     * Even if it does register as a module, not guaranteed to be the precise
                                  -     * name of the global. If a jQuery is tracked for this context, then go
                                  -     * ahead and register it as a module too, if not already in process.
                                  -     */
                                  -    function jQueryCheck(context, jqCandidate) {
                                  -        if (!context.jQuery) {
                                  -            var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
                                  -            if ($ && "readyWait" in $) {
                                  -                context.jQuery = $;
                                  -
                                  -                //Manually create a "jquery" module entry if not one already
                                  -                //or in process.
                                  -                if (!context.defined.jquery && !context.jQueryDef) {
                                  -                    context.defined.jquery = $;
                                  -                }
                                  -
                                  -                //Make sure 
                                  -                if (context.scriptCount) {
                                  -                    $.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Internal method used by environment adapters to complete a load event.
                                  -     * A load event could be a script load or just a load pass from a synchronous
                                  -     * load call.
                                  -     * @param {String} moduleName the name of the module to potentially complete.
                                  -     * @param {Object} context the context object
                                  -     */
                                  -    req.completeLoad = function (moduleName, context) {
                                  -        //If there is a waiting require.def call
                                  -        var args;
                                  -        while (defQueue.length) {
                                  -            args = defQueue.shift();
                                  -            if (args[0] === null) {
                                  -                args[0] = moduleName;
                                  -                break;
                                  -            } else if (args[0] === moduleName) {
                                  -                //Found matching require.def call for this script!
                                  -                break;
                                  -            } else {
                                  -                //Some other named require.def call, most likely the result
                                  -                //of a build layer that included many require.def calls.
                                  -                callDefMain(args, context);
                                  -            }
                                  -        }
                                  -        if (args) {
                                  -            callDefMain(args, context);
                                  -        }
                                  -
                                  -        //Mark the script as loaded. Note that this can be different from a
                                  -        //moduleName that maps to a require.def call. This line is important
                                  -        //for traditional browser scripts.
                                  -        context.loaded[moduleName] = true;
                                  -
                                  -        //If a global jQuery is defined, check for it. Need to do it here
                                  -        //instead of main() since stock jQuery does not register as
                                  -        //a module via define.
                                  -        jQueryCheck(context);
                                  -
                                  -        context.scriptCount -= 1;
                                  -        resume(context);
                                  -    };
                                  -
                                  -    /**
                                  -     * Legacy function, remove at some point
                                  -     */
                                  -    req.pause = req.resume = function () {};
                                  -
                                  -    /**
                                  -     * Trace down the dependencies to see if they are loaded. If not, trigger
                                  -     * the load.
                                  -     * @param {String} pluginPrefix the plugin prefix, if any associated with the name.
                                  -     *
                                  -     * @param {String} name: the name of the module that has the dependencies.
                                  -     *
                                  -     * @param {Array} deps array of dependencies.
                                  -     *
                                  -     * @param {Object} context: the loading context.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkDeps = function (pluginPrefix, name, deps, context) {
                                  -        //Figure out if all the modules are loaded. If the module is not
                                  -        //being loaded or already loaded, add it to the "to load" list,
                                  -        //and request it to be loaded.
                                  -        var i, dep;
                                  -
                                  -        if (pluginPrefix) {
                                  -                        callPlugin(pluginPrefix, context, {
                                  -                name: "checkDeps",
                                  -                args: [name, deps, context]
                                  -            });
                                  -                    } else {
                                  -            for (i = 0; (dep = deps[i]); i++) {
                                  -                if (!context.specified[dep.fullName]) {
                                  -                    context.specified[dep.fullName] = true;
                                  -
                                  -                    //Reset the start time to use for timeouts
                                  -                    context.startTime = (new Date()).getTime();
                                  -
                                  -                    //If a plugin, call its load method.
                                  -                    if (dep.prefix) {
                                  -                                                callPlugin(dep.prefix, context, {
                                  -                            name: "load",
                                  -                            args: [dep.name, context.contextName]
                                  -                        });
                                  -                                            } else {
                                  -                        req.load(dep.name, context.contextName);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -        /**
                                  -     * Register a module that modifies another module. The modifier will
                                  -     * only be called once the target module has been loaded.
                                  -     *
                                  -     * First syntax:
                                  -     *
                                  -     * require.modify({
                                  -     *     "some/target1": "my/modifier1",
                                  -     *     "some/target2": "my/modifier2",
                                  -     * });
                                  -     *
                                  -     * With this syntax, the my/modifier1 will only be loaded when
                                  -     * "some/target1" is loaded.
                                  -     *
                                  -     * Second syntax, defining a modifier.
                                  -     *
                                  -     * require.modify("some/target1", "my/modifier",
                                  -     *                        ["some/target1", "some/other"],
                                  -     *                        function (target, other) {
                                  -     *                            //Modify properties of target here.
                                  -     *                            Only properties of target can be modified, but
                                  -     *                            target cannot be replaced.
                                  -     *                        }
                                  -     * );
                                  -     */
                                  -    req.modify = function (target, name, deps, callback, contextName) {
                                  -        var prop, modifier, list,
                                  -                cName = (typeof target === "string" ? contextName : name) || s.ctxName,
                                  -                context = s.contexts[cName],
                                  -                mods = context.modifiers;
                                  -
                                  -        if (typeof target === "string") {
                                  -            //A modifier module.
                                  -            //First store that it is a modifier.
                                  -            list = mods[target] || (mods[target] = []);
                                  -            if (!list[name]) {
                                  -                list.push(name);
                                  -                list[name] = true;
                                  -            }
                                  -
                                  -            //Trigger the normal module definition logic if the target
                                  -            //is already in the system.
                                  -            if (context.specified[target]) {
                                  -                req.def(name, deps, callback, contextName);
                                  -            } else {
                                  -                //Hold on to the execution/dependency checks for the modifier
                                  -                //until the target is fetched.
                                  -                (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]);
                                  -            }
                                  -        } else {
                                  -            //A list of modifiers. Save them for future reference.
                                  -            for (prop in target) {
                                  -                if (!(prop in empty)) {
                                  -                    //Store the modifier for future use.
                                  -                    modifier = target[prop];
                                  -                    list = mods[prop] || (context.modifiers[prop] = []);
                                  -                    if (!list[modifier]) {
                                  -                        list.push(modifier);
                                  -                        list[modifier] = true;
                                  -
                                  -                        if (context.specified[prop]) {
                                  -                            //Load the modifier right away.
                                  -                            req([modifier], cName);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    req.isArray = function (it) {
                                  -        return ostring.call(it) === "[object Array]";
                                  -    };
                                  -
                                  -    req.isFunction = isFunction;
                                  -
                                  -    /**
                                  -     * Gets one module's exported value. This method is used by require().
                                  -     * It is broken out as a separate function to allow a host environment
                                  -     * shim to overwrite this function with something appropriate for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} [contextName] the name of the context to use. Uses
                                  -     * default context if no contextName is provided. You should never
                                  -     * pass the contextName explicitly -- it is handled by the require() code.
                                  -     * @param {String} [relModuleName] a module name to use for relative
                                  -     * module name lookups. You should never pass this argument explicitly --
                                  -     * it is handled by the require() code.
                                  -     *
                                  -     * @returns {Object} the exported module value.
                                  -     */
                                  -    req.get = function (moduleName, contextName, relModuleName) {
                                  -        if (moduleName === "require" || moduleName === "exports" || moduleName === "module") {
                                  -            req.onError(new Error("Explicit require of " + moduleName + " is not allowed."));
                                  -        }
                                  -        contextName = contextName || s.ctxName;
                                  -
                                  -        var ret, context = s.contexts[contextName], nameProps;
                                  -
                                  -        //Normalize module name, if it contains . or ..
                                  -        nameProps = req.splitPrefix(moduleName, relModuleName, context);
                                  -
                                  -        ret = context.defined[nameProps.name];
                                  -        if (ret === undefined) {
                                  -            req.onError(new Error("require: module name '" +
                                  -                        moduleName +
                                  -                        "' has not been loaded yet for context: " +
                                  -                        contextName));
                                  -        }
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Makes the request to load a module. May be an async load depending on
                                  -     * the environment and the circumstance of the load call. Override this
                                  -     * method in a host environment shim to do something specific for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} contextName the name of the context to use.
                                  -     */
                                  -    req.load = function (moduleName, contextName) {
                                  -        var context = s.contexts[contextName],
                                  -            urlFetched = context.urlFetched,
                                  -            loaded = context.loaded, url;
                                  -        s.isDone = false;
                                  -
                                  -        //Only set loaded to false for tracking if it has not already been set.
                                  -        if (!loaded[moduleName]) {
                                  -            loaded[moduleName] = false;
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //Not in the right context now, hold on to it until
                                  -            //the current context finishes all its loading.
                                  -            contextLoads.push(arguments);
                                  -        } else {
                                  -            //First derive the path name for the module.
                                  -            url = req.nameToUrl(moduleName, null, contextName);
                                  -            if (!urlFetched[url]) {
                                  -                context.scriptCount += 1;
                                  -                req.attach(url, contextName, moduleName);
                                  -                urlFetched[url] = true;
                                  -
                                  -                //If tracking a jQuery, then make sure its readyWait
                                  -                //is incremented to prevent its ready callbacks from
                                  -                //triggering too soon.
                                  -                if (context.jQuery && !context.jQueryIncremented) {
                                  -                    context.jQuery.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    req.jsExtRegExp = /^\/|:|\?|\.js$/;
                                  -
                                  -    /**
                                  -     * Given a relative module name, like ./something, normalize it to
                                  -     * a real name that can be mapped to a path.
                                  -     * @param {String} name the relative name
                                  -     * @param {String} baseName a real name that the name arg is relative
                                  -     * to.
                                  -     * @param {Object} context
                                  -     * @returns {String} normalized name
                                  -     */
                                  -    req.normalizeName = function (name, baseName, context) {
                                  -        //Adjust any relative paths.
                                  -        var part;
                                  -        if (name.charAt(0) === ".") {
                                  -            //If have a base name, try to normalize against it,
                                  -            //otherwise, assume it is a top-level require that will
                                  -            //be relative to baseUrl in the end.
                                  -            if (baseName) {
                                  -                if (context.config.packages[baseName]) {
                                  -                    //If the baseName is a package name, then just treat it as one
                                  -                    //name to concat the name with.
                                  -                    baseName = [baseName];
                                  -                } else {
                                  -                    //Convert baseName to array, and lop off the last part,
                                  -                    //so that . matches that "directory" and not name of the baseName's
                                  -                    //module. For instance, baseName of "one/two/three", maps to
                                  -                    //"one/two/three.js", but we want the directory, "one/two" for
                                  -                    //this normalization.
                                  -                    baseName = baseName.split("/");
                                  -                    baseName = baseName.slice(0, baseName.length - 1);
                                  -                }
                                  -
                                  -                name = baseName.concat(name.split("/"));
                                  -                for (i = 0; (part = name[i]); i++) {
                                  -                    if (part === ".") {
                                  -                        name.splice(i, 1);
                                  -                        i -= 1;
                                  -                    } else if (part === "..") {
                                  -                        if (i === 1) {
                                  -                            //End of the line. Keep at least one non-dot
                                  -                            //path segment at the front so it can be mapped
                                  -                            //correctly to disk. Otherwise, there is likely
                                  -                            //no path mapping for '..'.
                                  -                            break;
                                  -                        } else if (i > 1) {
                                  -                            name.splice(i - 1, 2);
                                  -                            i -= 2;
                                  -                        }
                                  -                    }
                                  -                }
                                  -                name = name.join("/");
                                  -            }
                                  -        }
                                  -        return name;
                                  -    };
                                  -
                                  -    /**
                                  -     * Splits a name into a possible plugin prefix and
                                  -     * the module name. If baseName is provided it will
                                  -     * also normalize the name via require.normalizeName()
                                  -     * 
                                  -     * @param {String} name the module name
                                  -     * @param {String} [baseName] base name that name is
                                  -     * relative to.
                                  -     * @param {Object} context
                                  -     *
                                  -     * @returns {Object} with properties, 'prefix' (which
                                  -     * may be null), 'name' and 'fullName', which is a combination
                                  -     * of the prefix (if it exists) and the name.
                                  -     */
                                  -    req.splitPrefix = function (name, baseName, context) {
                                  -        var index = name.indexOf("!"), prefix = null;
                                  -        if (index !== -1) {
                                  -            prefix = name.substring(0, index);
                                  -            name = name.substring(index + 1, name.length);
                                  -        }
                                  -
                                  -        //Account for relative paths if there is a base name.
                                  -        name = req.normalizeName(name, baseName, context);
                                  -
                                  -        return {
                                  -            prefix: prefix,
                                  -            name: name,
                                  -            fullName: prefix ? prefix + "!" + name : name
                                  -        };
                                  -    };
                                  -
                                  -    /**
                                  -     * Start of a public API replacement for nameToUrl. For now, just leverage
                                  -     * nameToUrl, but know that nameToUrl will go away in the future.
                                  -     * moduleNamePlusExt is of format "some/module/thing.html". It only works
                                  -     * for module-like names and will not work with any dependency name in the
                                  -     * future (for instance, passing "http://a.com/some/thing.html" will not
                                  -     * make any sense)
                                  -     */
                                  -    //TODO: what does requ.toUrl("packageName") resolve to? base package
                                  -    //dir or lib? Probably base package dir.
                                  -    /*
                                  -    req.toUrl = function (moduleNamePlusExt, contextName, relModuleName) {
                                  -        var index = moduleNamePlusExt.lastIndexOf('.'),
                                  -            ext = null;
                                  -
                                  -        if (index !== -1) {
                                  -            ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);
                                  -            moduleNamePlusExt = moduleNamePlusExt.substring(0, index);
                                  -        }
                                  -
                                  -        return req.nameToUrl(moduleNamePlusExt, ext, contextName, relModuleName);
                                  -    };
                                  -    */
                                  -
                                  -    /**
                                  -     * Converts a module name to a file path.
                                  -     */
                                  -    req.nameToUrl = function (moduleName, ext, contextName, relModuleName) {
                                  -        var paths, packages, pkg, pkgPath, syms, i, parentModule, url,
                                  -            context = s.contexts[contextName],
                                  -            config = context.config;
                                  -
                                  -        //Normalize module name if have a base relative module name to work from.
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        //If a colon is in the URL, it indicates a protocol is used and it is just
                                  -        //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
                                  -        //The slash is important for protocol-less URLs as well as full paths.
                                  -        if (req.jsExtRegExp.test(moduleName)) {
                                  -            //Just a plain path, not module name lookup, so just return it.
                                  -            //Add extension if it is included. This is a bit wonky, only non-.js things pass
                                  -            //an extension, this method probably needs to be reworked.
                                  -            url = moduleName + (ext ? ext : "");
                                  -        } else {
                                  -            //A module that needs to be converted to a path.
                                  -            paths = config.paths;
                                  -            packages = config.packages;
                                  -
                                  -            syms = moduleName.split("/");
                                  -            //For each module name segment, see if there is a path
                                  -            //registered for it. Start with most specific name
                                  -            //and work up from it.
                                  -            for (i = syms.length; i > 0; i--) {
                                  -                parentModule = syms.slice(0, i).join("/");
                                  -                if (paths[parentModule]) {
                                  -                    syms.splice(0, i, paths[parentModule]);
                                  -                    break;
                                  -                } else if ((pkg = packages[parentModule])) {
                                  -                    //pkg can have just a string value to the path
                                  -                    //or can be an object with props:
                                  -                    //main, lib, name, location.
                                  -                    pkgPath = pkg.location + '/' + pkg.lib;
                                  -                    //If module name is just the package name, then looking
                                  -                    //for the main module.
                                  -                    if (moduleName === pkg.name) {
                                  -                        pkgPath += '/' + pkg.main;
                                  -                    }
                                  -                    syms.splice(0, i, pkgPath);
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -            //Join the path parts together, then figure out if baseUrl is needed.
                                  -            url = syms.join("/") + (ext || ".js");
                                  -            url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
                                  -        }
                                  -        return config.urlArgs ? url +
                                  -                                ((url.indexOf('?') === -1 ? '?' : '&') +
                                  -                                 config.urlArgs) : url;
                                  -    };
                                  -
                                  -    //In async environments, checkLoaded can get called a few times in the same
                                  -    //call stack. Allow only one to do the finishing work. Set to false
                                  -    //for sync environments.
                                  -    req.blockCheckLoaded = true;
                                  -
                                  -    /**
                                  -     * Checks if all modules for a context are loaded, and if so, evaluates the
                                  -     * new ones in right dependency order.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkLoaded = function (contextName) {
                                  -        var context = s.contexts[contextName || s.ctxName],
                                  -                waitInterval = context.config.waitSeconds * 1000,
                                  -                //It is possible to disable the wait interval by using waitSeconds of 0.
                                  -                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
                                  -                loaded, defined = context.defined,
                                  -                modifiers = context.modifiers, waiting, noLoads = "",
                                  -                hasLoadedProp = false, stillLoading = false, prop,
                                  -
                                  -                                pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps,
                                  -                
                                  -                i, module, allDone, loads, loadArgs, err;
                                  -
                                  -        //If already doing a checkLoaded call,
                                  -        //then do not bother checking loaded state.
                                  -        if (context.isCheckLoaded) {
                                  -            return;
                                  -        }
                                  -
                                  -        //Determine if priority loading is done. If so clear the priority. If
                                  -        //not, then do not check
                                  -        if (context.config.priorityWait) {
                                  -            if (isPriorityDone(context)) {
                                  -                //Call resume, since it could have
                                  -                //some waiting dependencies to trace.
                                  -                resume(context);
                                  -            } else {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Signal that checkLoaded is being require, so other calls that could be triggered
                                  -        //by calling a waiting callback that then calls require and then this function
                                  -        //should not proceed. At the end of this function, if there are still things
                                  -        //waiting, then checkLoaded will be called again.
                                  -        context.isCheckLoaded = req.blockCheckLoaded;
                                  -
                                  -        //Grab waiting and loaded lists here, since it could have changed since
                                  -        //this function was first called.
                                  -        waiting = context.waiting;
                                  -        loaded = context.loaded;
                                  -
                                  -        //See if anything is still in flight.
                                  -        for (prop in loaded) {
                                  -            if (!(prop in empty)) {
                                  -                hasLoadedProp = true;
                                  -                if (!loaded[prop]) {
                                  -                    if (expired) {
                                  -                        noLoads += prop + " ";
                                  -                    } else {
                                  -                        stillLoading = true;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Check for exit conditions.
                                  -        if (!hasLoadedProp && !waiting.length
                                  -                        && (!pIsWaiting || !pIsWaiting(context))
                                  -                       ) {
                                  -            //If the loaded object had no items, then the rest of
                                  -            //the work below does not need to be done.
                                  -            context.isCheckLoaded = false;
                                  -            return;
                                  -        }
                                  -        if (expired && noLoads) {
                                  -            //If wait time expired, throw error of unloaded modules.
                                  -            err = new Error("require.js load timeout for modules: " + noLoads);
                                  -            err.requireType = "timeout";
                                  -            err.requireModules = noLoads;
                                  -            req.onError(err);
                                  -        }
                                  -        if (stillLoading) {
                                  -            //Something is still waiting to load. Wait for it.
                                  -            context.isCheckLoaded = false;
                                  -            if (isBrowser || isWebWorker) {
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(contextName);
                                  -                }, 50);
                                  -            }
                                  -            return;
                                  -        }
                                  -
                                  -        //Order the dependencies. Also clean up state because the evaluation
                                  -        //of modules might create new loading tasks, so need to reset.
                                  -        //Be sure to call plugins too.
                                  -        context.waiting = [];
                                  -        context.loaded = {};
                                  -
                                  -                //Call plugins to order their dependencies, do their
                                  -        //module definitions.
                                  -        if (pOrderDeps) {
                                  -            pOrderDeps(context);
                                  -        }
                                  -        
                                  -                //Before defining the modules, give priority treatment to any modifiers
                                  -        //for modules that are already defined.
                                  -        for (prop in modifiers) {
                                  -            if (!(prop in empty)) {
                                  -                if (defined[prop]) {
                                  -                    req.execModifiers(prop, {}, waiting, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        //Define the modules, doing a depth first search.
                                  -        for (i = 0; (module = waiting[i]); i++) {
                                  -            req.exec(module, {}, waiting, context);
                                  -        }
                                  -
                                  -        //Indicate checkLoaded is now done.
                                  -        context.isCheckLoaded = false;
                                  -
                                  -        if (context.waiting.length
                                  -                        || (pIsWaiting && pIsWaiting(context))
                                  -                       ) {
                                  -            //More things in this context are waiting to load. They were probably
                                  -            //added while doing the work above in checkLoaded, calling module
                                  -            //callbacks that triggered other require calls.
                                  -            req.checkLoaded(contextName);
                                  -        } else if (contextLoads.length) {
                                  -            //Check for other contexts that need to load things.
                                  -            //First, make sure current context has no more things to
                                  -            //load. After defining the modules above, new require calls
                                  -            //could have been made.
                                  -            loaded = context.loaded;
                                  -            allDone = true;
                                  -            for (prop in loaded) {
                                  -                if (!(prop in empty)) {
                                  -                    if (!loaded[prop]) {
                                  -                        allDone = false;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            if (allDone) {
                                  -                s.ctxName = contextLoads[0][1];
                                  -                loads = contextLoads;
                                  -                //Reset contextLoads in case some of the waiting loads
                                  -                //are for yet another context.
                                  -                contextLoads = [];
                                  -                for (i = 0; (loadArgs = loads[i]); i++) {
                                  -                    req.load.apply(req, loadArgs);
                                  -                }
                                  -            }
                                  -        } else {
                                  -            //Make sure we reset to default context.
                                  -            s.ctxName = defContextName;
                                  -            s.isDone = true;
                                  -            if (req.callReady) {
                                  -                req.callReady();
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper function that creates a setExports function for a "module"
                                  -     * CommonJS dependency. Do this here to avoid creating a closure that
                                  -     * is part of a loop in require.exec.
                                  -     */
                                  -    function makeSetExports(moduleObj) {
                                  -        return function (exports) {
                                  -            moduleObj.exports = exports;
                                  -        };
                                  -    }
                                  -
                                  -    function makeContextModuleFunc(name, contextName, moduleName) {
                                  -        return function () {
                                  -            //A version of a require function that forces a contextName value
                                  -            //and also passes a moduleName value for items that may need to
                                  -            //look up paths relative to the moduleName
                                  -            var args = [].concat(aps.call(arguments, 0));
                                  -            args.push(contextName, moduleName);
                                  -            return (name ? require[name] : require).apply(null, args);
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Helper function that creates a require function object to give to
                                  -     * modules that ask for it as a dependency. It needs to be specific
                                  -     * per module because of the implication of path mappings that may
                                  -     * need to be relative to the module name.
                                  -     */
                                  -    function makeRequire(context, moduleName) {
                                  -        var contextName = context.contextName,
                                  -            modRequire = makeContextModuleFunc(null, contextName, moduleName);
                                  -
                                  -        req.mixin(modRequire, {
                                  -                        modify: makeContextModuleFunc("modify", contextName, moduleName),
                                  -                        def: makeContextModuleFunc("def", contextName, moduleName),
                                  -            get: makeContextModuleFunc("get", contextName, moduleName),
                                  -            nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName),
                                  -            toUrl: makeContextModuleFunc("toUrl", contextName, moduleName),
                                  -            ready: req.ready,
                                  -            context: context,
                                  -            config: context.config,
                                  -            isBrowser: s.isBrowser
                                  -        });
                                  -        return modRequire;
                                  -    }
                                  -
                                  -    /**
                                  -     * Executes the modules in the correct order.
                                  -     * 
                                  -     * @private
                                  -     */
                                  -    req.exec = function (module, traced, waiting, context) {
                                  -        //Some modules are just plain script files, abddo not have a formal
                                  -        //module definition, 
                                  -        if (!module) {
                                  -            //Returning undefined for Spidermonky strict checking in Komodo
                                  -            return undefined;
                                  -        }
                                  -
                                  -        var name = module.name, cb = module.callback, deps = module.deps, j, dep,
                                  -            defined = context.defined, ret, args = [], depModule, cjsModule,
                                  -            usingExports = false, depName;
                                  -
                                  -        //If already traced or defined, do not bother a second time.
                                  -        if (name) {
                                  -            if (traced[name] || name in defined) {
                                  -                return defined[name];
                                  -            }
                                  -
                                  -            //Mark this module as being traced, so that it is not retraced (as in a circular
                                  -            //dependency)
                                  -            traced[name] = true;
                                  -        }
                                  -
                                  -        if (deps) {
                                  -            for (j = 0; (dep = deps[j]); j++) {
                                  -                depName = dep.name;
                                  -                if (depName === "require") {
                                  -                    depModule = makeRequire(context, name);
                                  -                } else if (depName === "exports") {
                                  -                    //CommonJS module spec 1.1
                                  -                    depModule = defined[name] = {};
                                  -                    usingExports = true;
                                  -                } else if (depName === "module") {
                                  -                    //CommonJS module spec 1.1
                                  -                    cjsModule = depModule = {
                                  -                        id: name,
                                  -                        uri: name ? req.nameToUrl(name, null, context.contextName) : undefined
                                  -                    };
                                  -                    cjsModule.setExports = makeSetExports(cjsModule);
                                  -                } else {
                                  -                    //Get dependent module. It could not exist, for a circular
                                  -                    //dependency or if the loaded dependency does not actually call
                                  -                    //require. Favor not throwing an error here if undefined because
                                  -                    //we want to allow code that does not use require as a module
                                  -                    //definition framework to still work -- allow a web site to
                                  -                    //gradually update to contained modules. That is more
                                  -                    //important than forcing a throw for the circular dependency case.
                                  -                    depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context));
                                  -                }
                                  -
                                  -                args.push(depModule);
                                  -            }
                                  -        }
                                  -
                                  -        //Call the callback to define the module, if necessary.
                                  -        cb = module.callback;
                                  -        if (cb && req.isFunction(cb)) {
                                  -            ret = req.execCb(name, cb, args);
                                  -            if (name) {
                                  -                //If using exports and the function did not return a value,
                                  -                //and the "module" object for this definition function did not
                                  -                //define an exported value, then use the exports object.
                                  -                if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) {
                                  -                    ret = defined[name];
                                  -                } else {
                                  -                    if (cjsModule && "exports" in cjsModule) {
                                  -                        ret = defined[name] = cjsModule.exports;
                                  -                    } else {
                                  -                        if (name in defined && !usingExports) {
                                  -                            req.onError(new Error(name + " has already been defined"));
                                  -                        }
                                  -                        defined[name] = ret;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -                //Execute modifiers, if they exist.
                                  -        req.execModifiers(name, traced, waiting, context);
                                  -        
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Executes a module callack function. Broken out as a separate function
                                  -     * solely to allow the build system to sequence the files in the built
                                  -     * layer in the right sequence.
                                  -     * @param {String} name the module name.
                                  -     * @param {Function} cb the module callback/definition function.
                                  -     * @param {Array} args The arguments (dependent modules) to pass to callback.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execCb = function (name, cb, args) {
                                  -        return cb.apply(null, args);
                                  -    };
                                  -
                                  -        /**
                                  -     * Executes modifiers for the given module name.
                                  -     * @param {String} target
                                  -     * @param {Object} traced
                                  -     * @param {Object} context
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execModifiers = function (target, traced, waiting, context) {
                                  -        var modifiers = context.modifiers, mods = modifiers[target], mod, i;
                                  -        if (mods) {
                                  -            for (i = 0; i < mods.length; i++) {
                                  -                mod = mods[i];
                                  -                //Not all modifiers define a module, they might collect other modules.
                                  -                //If it is just a collection it will not be in waiting.
                                  -                if (mod in waiting) {
                                  -                    req.exec(waiting[waiting[mod]], traced, waiting, context);
                                  -                }
                                  -            }
                                  -            delete modifiers[target];
                                  -        }
                                  -    };
                                  -    
                                  -    /**
                                  -     * callback for script loads, used to check status of loading.
                                  -     *
                                  -     * @param {Event} evt the event from the browser for the script
                                  -     * that was loaded.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.onScriptLoad = function (evt) {
                                  -        //Using currentTarget instead of target for Firefox 2.0's sake. Not
                                  -        //all old browsers will be supported, but this one was easy enough
                                  -        //to support and still makes sense.
                                  -        var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
                                  -            context;
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = s.contexts[contextName];
                                  -
                                  -            req.completeLoad(moduleName, context);
                                  -
                                  -            //Clean up script binding.
                                  -            if (node.removeEventListener) {
                                  -                node.removeEventListener("load", req.onScriptLoad, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know.
                                  -                node.detachEvent("onreadystatechange", req.onScriptLoad);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Attaches the script represented by the URL to the current
                                  -     * environment. Right now only supports browser loading,
                                  -     * but can be redefined in other environments to do the right thing.
                                  -     * @param {String} url the url of the script to attach.
                                  -     * @param {String} contextName the name of the context that wants the script.
                                  -     * @param {moduleName} the name of the module that is associated with the script.
                                  -     * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
                                  -     * @param {String} [type] optional type, defaults to text/javascript
                                  -     */
                                  -    req.attach = function (url, contextName, moduleName, callback, type) {
                                  -        var node, loaded, context;
                                  -        if (isBrowser) {
                                  -            //In the browser so use a script tag
                                  -            callback = callback || req.onScriptLoad;
                                  -            node = document.createElement("script");
                                  -            node.type = type || "text/javascript";
                                  -            node.charset = "utf-8";
                                  -            //Use async so Gecko does not block on executing the script if something
                                  -            //like a long-polling comet tag is being run first. Gecko likes
                                  -            //to evaluate scripts in DOM order, even for dynamic scripts.
                                  -            //It will fetch them async, but only evaluate the contents in DOM
                                  -            //order, so a long-polling script tag can delay execution of scripts
                                  -            //after it. But telling Gecko we expect async gets us the behavior
                                  -            //we want -- execute it whenever it is finished downloading. Only
                                  -            //Helps Firefox 3.6+
                                  -            //Allow some URLs to not be fetched async. Mostly helps the order!
                                  -            //plugin
                                  -            node.async = !s.skipAsync[url];
                                  -
                                  -            node.setAttribute("data-requirecontext", contextName);
                                  -            node.setAttribute("data-requiremodule", moduleName);
                                  -
                                  -            //Set up load listener.
                                  -            if (node.addEventListener) {
                                  -                node.addEventListener("load", callback, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know. IE (at least 6-8) do not fire
                                  -                //script onload right after executing the script, so
                                  -                //we cannot tie the anonymous require.def call to a name.
                                  -                //However, IE reports the script as being in "interactive"
                                  -                //readyState at the time of the require.def call.
                                  -                useInteractive = true;
                                  -                node.attachEvent("onreadystatechange", callback);
                                  -            }
                                  -            node.src = url;
                                  -
                                  -            //For some cache cases in IE 6-8, the script executes before the end
                                  -            //of the appendChild execution, so to tie an anonymous require.def
                                  -            //call to the module name (which is stored on the node), hold on
                                  -            //to a reference to this node, but clear after the DOM insertion.
                                  -            currentlyAddingScript = node;
                                  -            if (baseElement) {
                                  -                s.head.insertBefore(node, baseElement);
                                  -            } else {
                                  -                s.head.appendChild(node);
                                  -            }
                                  -            currentlyAddingScript = null;
                                  -            return node;
                                  -        } else if (isWebWorker) {
                                  -            //In a web worker, use importScripts. This is not a very
                                  -            //efficient use of importScripts, importScripts will block until
                                  -            //its script is downloaded and evaluated. However, if web workers
                                  -            //are in play, the expectation that a build has been done so that
                                  -            //only one script needs to be loaded anyway. This may need to be
                                  -            //reevaluated if other use cases become common.
                                  -            context = s.contexts[contextName];
                                  -            loaded = context.loaded;
                                  -            loaded[moduleName] = false;
                                  -
                                  -            importScripts(url);
                                  -
                                  -            //Account for anonymous modules
                                  -            req.completeLoad(moduleName, context);
                                  -        }
                                  -        return null;
                                  -    };
                                  -
                                  -    //Determine what baseUrl should be if not already defined via a require config object
                                  -    s.baseUrl = cfg.baseUrl;
                                  -    if (isBrowser && (!s.baseUrl || !s.head)) {
                                  -        //Figure out baseUrl. Get it from the script tag with require.js in it.
                                  -        scripts = document.getElementsByTagName("script");
                                  -        if (cfg.baseUrlMatch) {
                                  -            rePkg = cfg.baseUrlMatch;
                                  -        } else {
                                  -            
                                  -            
                                  -            
                                  -                        rePkg = /(allplugins-)?require\.js(\W|$)/i;
                                  -            
                                  -                    }
                                  -
                                  -        for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -            //Set the "head" where we can append children by
                                  -            //using the script's parent.
                                  -            if (!s.head) {
                                  -                s.head = script.parentNode;
                                  -            }
                                  -
                                  -            //Look for a data-main attribute to set main script for the page
                                  -            //to load.
                                  -            if (!dataMain && (dataMain = script.getAttribute('data-main'))) {
                                  -                cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];
                                  -
                                  -                //Favor using data-main tag as the base URL instead of
                                  -                //trying to pattern-match src values.
                                  -                if (!cfg.baseUrl && (src = script.src)) {
                                  -                    src = src.split('/');
                                  -                    src.pop();
                                  -                    //Make sure current config gets the value.
                                  -                    s.baseUrl = cfg.baseUrl = src.length ? src.join('/') : './';
                                  -                }
                                  -            }
                                  -
                                  -            //Using .src instead of getAttribute to get an absolute URL.
                                  -            //While using a relative URL will be fine for script tags, other
                                  -            //URLs used for text! resources that use XHR calls might benefit
                                  -            //from an absolute URL.
                                  -            if (!s.baseUrl && (src = script.src)) {
                                  -                m = src.match(rePkg);
                                  -                if (m) {
                                  -                    s.baseUrl = src.substring(0, m.index);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -        //****** START page load functionality ****************
                                  -    /**
                                  -     * Sets the page as loaded and triggers check for all modules loaded.
                                  -     */
                                  -    req.pageLoaded = function () {
                                  -        if (!s.isPageLoaded) {
                                  -            s.isPageLoaded = true;
                                  -            if (scrollIntervalId) {
                                  -                clearInterval(scrollIntervalId);
                                  -            }
                                  -
                                  -            //Part of a fix for FF < 3.6 where readyState was not set to
                                  -            //complete so libraries like jQuery that check for readyState
                                  -            //after page load where not getting initialized correctly.
                                  -            //Original approach suggested by Andrea Giammarchi:
                                  -            //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
                                  -            //see other setReadyState reference for the rest of the fix.
                                  -            if (setReadyState) {
                                  -                document.readyState = "complete";
                                  -            }
                                  -
                                  -            req.callReady();
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Internal function that calls back any ready functions. If you are
                                  -     * integrating RequireJS with another library without require.ready support,
                                  -     * you can define this method to call your page ready code instead.
                                  -     */
                                  -    req.callReady = function () {
                                  -        var callbacks = s.readyCalls, i, callback, contexts, context, prop;
                                  -
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            if (callbacks.length) {
                                  -                s.readyCalls = [];
                                  -                for (i = 0; (callback = callbacks[i]); i++) {
                                  -                    callback();
                                  -                }
                                  -            }
                                  -
                                  -            //If jQuery with readyWait is being tracked, updated its
                                  -            //readyWait count.
                                  -            contexts = s.contexts;
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    if (context.jQueryIncremented) {
                                  -                        context.jQuery.readyWait -= 1;
                                  -                        context.jQueryIncremented = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Registers functions to call when the page is loaded
                                  -     */
                                  -    req.ready = function (callback) {
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            callback();
                                  -        } else {
                                  -            s.readyCalls.push(callback);
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    if (isBrowser) {
                                  -        if (document.addEventListener) {
                                  -            //Standards. Hooray! Assumption here that if standards based,
                                  -            //it knows about DOMContentLoaded.
                                  -            document.addEventListener("DOMContentLoaded", req.pageLoaded, false);
                                  -            window.addEventListener("load", req.pageLoaded, false);
                                  -            //Part of FF < 3.6 readystate fix (see setReadyState refs for more info)
                                  -            if (!document.readyState) {
                                  -                setReadyState = true;
                                  -                document.readyState = "loading";
                                  -            }
                                  -        } else if (window.attachEvent) {
                                  -            window.attachEvent("onload", req.pageLoaded);
                                  -
                                  -            //DOMContentLoaded approximation, as found by Diego Perini:
                                  -            //http://javascript.nwbox.com/IEContentLoaded/
                                  -            if (self === self.top) {
                                  -                scrollIntervalId = setInterval(function () {
                                  -                    try {
                                  -                        //From this ticket:
                                  -                        //http://bugs.dojotoolkit.org/ticket/11106,
                                  -                        //In IE HTML Application (HTA), such as in a selenium test,
                                  -                        //javascript in the iframe can't see anything outside
                                  -                        //of it, so self===self.top is true, but the iframe is
                                  -                        //not the top window and doScroll will be available
                                  -                        //before document.body is set. Test document.body
                                  -                        //before trying the doScroll trick.
                                  -                        if (document.body) {
                                  -                            document.documentElement.doScroll("left");
                                  -                            req.pageLoaded();
                                  -                        }
                                  -                    } catch (e) {}
                                  -                }, 30);
                                  -            }
                                  -        }
                                  -
                                  -        //Check if document already complete, and if so, just trigger page load
                                  -        //listeners. NOTE: does not work with Firefox before 3.6. To support
                                  -        //those browsers, manually call require.pageLoaded().
                                  -        if (document.readyState === "complete") {
                                  -            req.pageLoaded();
                                  -        }
                                  -    }
                                  -    //****** END page load functionality ****************
                                  -    
                                  -    //Set up default context. If require was a configuration object, use that as base config.
                                  -    req(cfg);
                                  -
                                  -    //If modules are built into require.js, then need to make sure dependencies are
                                  -    //traced. Use a setTimeout in the browser world, to allow all the modules to register
                                  -    //themselves. In a non-browser env, assume that modules are not built into require.js,
                                  -    //which seems odd to do on the server.
                                  -    if (typeof setTimeout !== "undefined") {
                                  -        setTimeout(function () {
                                  -            var ctx = s.contexts[(cfg.context || defContextName)];
                                  -            //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
                                  -            //make sure to hold onto it for readyWait triggering.
                                  -            jQueryCheck(ctx);
                                  -            resume(ctx);
                                  -        }, 0);
                                  -    }
                                  -}());
                                  -
                                  -/**
                                  - * @license RequireJS i18n Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint white: false, regexp: false, nomen: false, plusplus: false */
                                  -/*global require: false, navigator: false */
                                  -
                                  -
                                  -/**
                                  - * This plugin handles i18n! prefixed modules. It does the following:
                                  - *
                                  - * 1) A regular module can have a dependency on an i18n bundle, but the regular
                                  - * module does not want to specify what locale to load. So it just specifies
                                  - * the top-level bundle, like "i18n!nls/colors".
                                  - *
                                  - * This plugin will load the i18n bundle at nls/colors, see that it is a root/master
                                  - * bundle since it does not have a locale in its name. It will then try to find
                                  - * the best match locale available in that master bundle, then request all the
                                  - * locale pieces for that best match locale. For instance, if the locale is "en-us",
                                  - * then the plugin will ask for the "en-us", "en" and "root" bundles to be loaded
                                  - * (but only if they are specified on the master bundle).
                                  - *
                                  - * Once all the bundles for the locale pieces load, then it mixes in all those
                                  - * locale pieces into each other, then finally sets the context.defined value
                                  - * for the nls/colors bundle to be that mixed in locale.
                                  - *
                                  - * 2) A regular module specifies a specific locale to load. For instance,
                                  - * i18n!nls/fr-fr/colors. In this case, the plugin needs to load the master bundle
                                  - * first, at nls/colors, then figure out what the best match locale is for fr-fr,
                                  - * since maybe only fr or just root is defined for that locale. Once that best
                                  - * fit is found, all of its locale pieces need to have their bundles loaded.
                                  - *
                                  - * Once all the bundles for the locale pieces load, then it mixes in all those
                                  - * locale pieces into each other, then finally sets the context.defined value
                                  - * for the nls/fr-fr/colors bundle to be that mixed in locale.
                                  - */
                                  -(function () {
                                  -    //regexp for reconstructing the master bundle name from parts of the regexp match
                                  -    //nlsRegExp.exec("foo/bar/baz/nls/en-ca/foo") gives:
                                  -    //["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"]
                                  -    //nlsRegExp.exec("foo/bar/baz/nls/foo") gives:
                                  -    //["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""]
                                  -    //so, if match[5] is blank, it means this is the top bundle definition.
                                  -    var nlsRegExp = /(^.*(^|\/)nls(\/|$))([^\/]*)\/?([^\/]*)/,
                                  -        empty = {};
                                  -
                                  -    function getWaiting(name, context) {
                                  -        var nlswAry = context.nlsWaiting;
                                  -        return nlswAry[name] ||
                                  -               //Push a new waiting object on the nlsWaiting array, but also put
                                  -               //a shortcut lookup by name to the object on the array.
                                  -               (nlswAry[name] = nlswAry[(nlswAry.push({ _name: name}) - 1)]);
                                  -    }
                                  -
                                  -    /**
                                  -     * Makes sure all the locale pieces are loaded, and finds the best match
                                  -     * for the requested locale.
                                  -     */
                                  -    function resolveLocale(masterName, bundle, locale, context) {
                                  -        //Break apart the locale to get the parts.
                                  -        var i, parts, toLoad, nlsw, loc, val, bestLoc = "root";
                                  -
                                  -        parts = locale.split("-");
                                  -
                                  -        //Now see what bundles exist for each country/locale.
                                  -        //Want to walk up the chain, so if locale is en-us-foo,
                                  -        //look for en-us-foo, en-us, en, then root.
                                  -        toLoad = [];
                                  -
                                  -        nlsw = getWaiting(masterName, context);
                                  -
                                  -        for (i = parts.length; i > -1; i--) {
                                  -            loc = i ? parts.slice(0, i).join("-") : "root";
                                  -            val = bundle[loc];
                                  -            if (val) {
                                  -                //Store which bundle to use for the default bundle definition.
                                  -                if (locale === context.config.locale && !nlsw._match) {
                                  -                    nlsw._match = loc;
                                  -                }
                                  -
                                  -                //Store the best match for the target locale
                                  -                if (bestLoc === "root") {
                                  -                    bestLoc = loc;
                                  -                }
                                  -
                                  -                //Track that the locale needs to be resolved with its parts.
                                  -                //Mark what locale should be used when resolving.
                                  -                nlsw[loc] = loc;
                                  -
                                  -                //If locale value is true, it means it is a resource that
                                  -                //needs to be loaded. Track it to load if it has not already
                                  -                //been asked for.
                                  -                if (val === true) {
                                  -                    //split off the bundl name from master name and insert the
                                  -                    //locale before the bundle name. So, if masterName is
                                  -                    //some/path/nls/colors, then the locale fr-fr's bundle name should
                                  -                    //be some/path/nls/fr-fr/colors
                                  -                    val = masterName.split("/");
                                  -                    val.splice(-1, 0, loc);
                                  -                    val = val.join("/");
                                  -
                                  -                    if (!context.specified[val] && !(val in context.loaded) && !context.defined[val]) {
                                  -                        context.defPlugin[val] = 'i18n';
                                  -                        toLoad.push(val);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If locale was not an exact match, store the closest match for it.
                                  -        if (bestLoc !== locale) {
                                  -            if (context.defined[bestLoc]) {
                                  -                //Already got it. Easy peasy lemon squeezy.
                                  -                context.defined[locale] = context.defined[bestLoc];
                                  -            } else {
                                  -                //Need to wait for things to load then define it.
                                  -                nlsw[locale] = bestLoc;
                                  -            }
                                  -        }
                                  -
                                  -        //Load any bundles that are still needed.
                                  -        if (toLoad.length) {
                                  -            require(toLoad, context.contextName);
                                  -        }
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "i18n",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            var i, match, nlsw, bundle, master, toLoad, obj = context.defined[name];
                                  -
                                  -            //All i18n modules must match the nls module name structure.
                                  -            match = nlsRegExp.exec(name);
                                  -            //If match[5] is blank, it means this is the top bundle definition,
                                  -            //so it does not have to be handled. Only deal with ones that have a locale
                                  -            //(a match[4] value but no match[5])
                                  -            if (match[5]) {
                                  -                master = match[1] + match[5];
                                  -
                                  -                //Track what locale bundle need to be generated once all the modules load.
                                  -                nlsw = getWaiting(master, context);
                                  -                nlsw[match[4]] = match[4];
                                  -
                                  -                bundle = context.nls[master];
                                  -                if (!bundle) {
                                  -                    //No master bundle yet, ask for it.
                                  -                    context.defPlugin[master] = 'i18n';
                                  -                    require([master], context.contextName);
                                  -                    bundle = context.nls[master] = {};
                                  -                }
                                  -                //For nls modules, the callback is just a regular object,
                                  -                //so save it off in the bundle now.
                                  -                bundle[match[4]] = callback;
                                  -            } else {
                                  -                //Integrate bundle into the nls area.
                                  -                bundle = context.nls[name];
                                  -                if (bundle) {
                                  -                    //A specific locale already started the bundle object.
                                  -                    //Do a mixin (which will not overwrite the locale property
                                  -                    //on the bundle that has the previously loaded locale's info)
                                  -                    require.mixin(bundle, obj);
                                  -                } else {
                                  -                    bundle = context.nls[name] = obj;
                                  -                }
                                  -                context.nlsRootLoaded[name] = true;
                                  -
                                  -                //Make sure there are no locales waiting to be resolved.
                                  -                toLoad = context.nlsToLoad[name];
                                  -                if (toLoad) {
                                  -                    delete context.nlsToLoad[name];
                                  -                    for (i = 0; i < toLoad.length; i++) {
                                  -                        resolveLocale(name, bundle, toLoad[i], context);
                                  -                    }
                                  -                }
                                  -
                                  -                resolveLocale(name, bundle, context.config.locale, context);
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                nlsWaiting: [],
                                  -                nls: {},
                                  -                nlsRootLoaded: {},
                                  -                nlsToLoad: {}
                                  -            });
                                  -            if (!context.config.locale) {
                                  -                context.config.locale = typeof navigator === "undefined" ? "root" :
                                  -                        (navigator.language || navigator.userLanguage || "root").toLowerCase();
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            //Make sure the root bundle is loaded, to check if we can support
                                  -            //loading the requested locale, or if a different one needs
                                  -            //to be chosen.
                                  -            var masterName, context = require.s.contexts[contextName], bundle,
                                  -                match = nlsRegExp.exec(name), locale = match[4];
                                  -
                                  -            //If match[5] is blank, it means this is the top bundle definition,
                                  -            //so it does not have to be handled. Only deal with ones that have a locale
                                  -            //(a match[4] value but no match[5])
                                  -            if (match[5]) {
                                  -                //locale-specific bundle
                                  -                masterName = match[1] + match[5];
                                  -                bundle = context.nls[masterName];
                                  -                if (context.nlsRootLoaded[masterName] && bundle) {
                                  -                    resolveLocale(masterName, bundle, locale, context);
                                  -                } else {
                                  -                    //Store this locale to figure out after masterName is loaded and load masterName.
                                  -                    (context.nlsToLoad[masterName] || (context.nlsToLoad[masterName] = [])).push(locale);
                                  -                    context.defPlugin[masterName] = 'i18n';
                                  -                    require([masterName], contextName);
                                  -                }
                                  -            } else {
                                  -                //Top-level bundle. Just call regular load, if not already loaded
                                  -                if (!context.nlsRootLoaded[name]) {
                                  -                    context.defPlugin[name] = 'i18n';
                                  -                    require.load(name, contextName);
                                  -                }
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //i18n bundles are always defined as objects for their "dependencies",
                                  -            //and that object is already processed in the require method, no need to
                                  -            //do work in here.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.nlsWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded.
                                  -         */
                                  -        orderDeps: function (context) {
                                  -            //Clear up state since further processing could
                                  -            //add more things to fetch.
                                  -            var i, j, master, msWaiting, bundle, parts, moduleSuffix, mixed,
                                  -                modulePrefix, loc, defLoc, locPart, nlsWaiting = context.nlsWaiting,
                                  -                bestFit;
                                  -            context.nlsWaiting = [];
                                  -            context.nlsToLoad = {};
                                  -
                                  -            //First, properly mix in any nls bundles waiting to happen.
                                  -            for (i = 0; (msWaiting = nlsWaiting[i]); i++) {
                                  -                //Each property is a master bundle name.
                                  -                master = msWaiting._name;
                                  -                bundle = context.nls[master];
                                  -                defLoc = null;
                                  -
                                  -                //Create the module name parts from the master name. So, if master
                                  -                //is foo/nls/bar, then the parts should be prefix: "foo/nls",
                                  -                // suffix: "bar", and the final locale's module name will be foo/nls/locale/bar
                                  -                parts = master.split("/");
                                  -                modulePrefix = parts.slice(0, parts.length - 1).join("/");
                                  -                moduleSuffix = parts[parts.length - 1];
                                  -                //Cycle through the locale props on the waiting object and combine
                                  -                //the locales together.
                                  -                for (loc in msWaiting) {
                                  -                    if (loc !== "_name" && !(loc in empty)) {
                                  -                        if (loc === "_match") {
                                  -                            //Found default locale to use for the top-level bundle name.
                                  -                            defLoc = msWaiting[loc];
                                  -                        
                                  -                        } else if (msWaiting[loc] !== loc) {
                                  -                            //A "best fit" locale, store it off to the end and handle
                                  -                            //it at the end by just assigning the best fit value, since
                                  -                            //after this for loop, the best fit locale will be defined.
                                  -                            (bestFit || (bestFit = {}))[loc] = msWaiting[loc];
                                  -                        } else {
                                  -                            //Mix in the properties of this locale together.
                                  -                            //Split the locale into pieces.
                                  -                            mixed = {};
                                  -                            parts = loc.split("-");
                                  -                            for (j = parts.length; j > 0; j--) {
                                  -                                locPart = parts.slice(0, j).join("-");
                                  -                                if (locPart !== "root" && bundle[locPart]) {
                                  -                                    require.mixin(mixed, bundle[locPart]);
                                  -                                }
                                  -                            }
                                  -                            if (bundle.root) {
                                  -                                require.mixin(mixed, bundle.root);
                                  -                            }
                                  -
                                  -                            context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = mixed;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Finally define the default locale. Wait to the end of the property
                                  -                //loop above so that the default locale bundle has been properly mixed
                                  -                //together.
                                  -                context.defined[master] = context.defined[modulePrefix + "/" + defLoc + "/" + moduleSuffix];
                                  -                
                                  -                //Handle any best fit locale definitions.
                                  -                if (bestFit) {
                                  -                    for (loc in bestFit) {
                                  -                        if (!(loc in empty)) {
                                  -                            context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = context.defined[modulePrefix + "/" + bestFit[loc] + "/" + moduleSuffix];
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    });
                                  -}());
                                  -/**
                                  - * @license RequireJS text Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint white: false, regexp: false, nomen: false, plusplus: false */
                                  -/*global require: false, XMLHttpRequest: false, ActiveXObject: false */
                                  -
                                  -
                                  -(function () {
                                  -    var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
                                  -        xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
                                  -        bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im;
                                  -
                                  -    if (!require.textStrip) {
                                  -        require.textStrip = function (text) {
                                  -            //Strips <?xml ...?> declarations so that external SVG and XML
                                  -            //documents can be added to a document without worry. Also, if the string
                                  -            //is an HTML document, only the part inside the body tag is returned.
                                  -            if (text) {
                                  -                text = text.replace(xmlRegExp, "");
                                  -                var matches = text.match(bodyRegExp);
                                  -                if (matches) {
                                  -                    text = matches[1];
                                  -                }
                                  -            } else {
                                  -                text = "";
                                  -            }
                                  -            return text;
                                  -        };
                                  -    }
                                  -
                                  -    //Upgrade require to add some methods for XHR handling. But it could be that
                                  -    //this require is used in a non-browser env, so detect for existing method
                                  -    //before attaching one.
                                  -    if (!require.getXhr) {
                                  -        require.getXhr = function () {
                                  -            //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
                                  -            var xhr, i, progId;
                                  -            if (typeof XMLHttpRequest !== "undefined") {
                                  -                return new XMLHttpRequest();
                                  -            } else {
                                  -                for (i = 0; i < 3; i++) {
                                  -                    progId = progIds[i];
                                  -                    try {
                                  -                        xhr = new ActiveXObject(progId);
                                  -                    } catch (e) {}
                                  -
                                  -                    if (xhr) {
                                  -                        progIds = [progId];  // so faster next time
                                  -                        break;
                                  -                    }
                                  -                }   
                                  -            }
                                  -
                                  -            if (!xhr) {
                                  -                throw new Error("require.getXhr(): XMLHttpRequest not available");
                                  -            }
                                  -
                                  -            return xhr;
                                  -        };
                                  -    }
                                  -    
                                  -    if (!require.fetchText) {
                                  -        require.fetchText = function (url, callback) {
                                  -            var xhr = require.getXhr();
                                  -            xhr.open('GET', url, true);
                                  -            xhr.onreadystatechange = function (evt) {
                                  -                //Do not explicitly handle errors, those should be
                                  -                //visible via console output in the browser.
                                  -                if (xhr.readyState === 4) {
                                  -                    callback(xhr.responseText);
                                  -                }
                                  -            };
                                  -            xhr.send(null);
                                  -        };
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "text",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            //No-op, require never gets these text items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                text: {},
                                  -                textWaiting: []
                                  -            });
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            //Name has format: some.module!filext!strip!text
                                  -            //The strip and text parts are optional.
                                  -            //if strip is present, then that means only get the string contents
                                  -            //inside a body tag in an HTML string. For XML/SVG content it means
                                  -            //removing the <?xml ...?> declarations so the content can be inserted
                                  -            //into the current doc without problems.
                                  -            //If text is present, it is the actual text of the file.
                                  -            var strip = false, text = null, key, url, index = name.indexOf("."),
                                  -                modName = name.substring(0, index), fullKey,
                                  -                ext = name.substring(index + 1, name.length),
                                  -                context = require.s.contexts[contextName],
                                  -                tWaitAry = context.textWaiting;
                                  -
                                  -            index = ext.indexOf("!");
                                  -            if (index !== -1) {
                                  -                //Pull off the strip arg.
                                  -                strip = ext.substring(index + 1, ext.length);
                                  -                ext = ext.substring(0, index);
                                  -                index = strip.indexOf("!");
                                  -                if (index !== -1 && strip.substring(0, index) === "strip") {
                                  -                    //Pull off the text.
                                  -                    text = strip.substring(index + 1, strip.length);
                                  -                    strip = "strip";
                                  -                } else if (strip !== "strip") {
                                  -                    //strip is actually the inlined text.
                                  -                    text = strip;
                                  -                    strip = null;
                                  -                }
                                  -            }
                                  -            key = modName + "!" + ext;
                                  -            fullKey = strip ? key + "!" + strip : key;
                                  -
                                  -            //Store off text if it is available for the given key and be done.
                                  -            if (text !== null && !context.text[key]) {
                                  -                context.defined[name] = context.text[key] = text;
                                  -                return;
                                  -            }
                                  -
                                  -            //If text is not available, load it.
                                  -            if (!context.text[key] && !context.textWaiting[key] && !context.textWaiting[fullKey]) {
                                  -                //Keep track that the fullKey needs to be resolved, during the
                                  -                //orderDeps stage.
                                  -                if (!tWaitAry[fullKey]) {
                                  -                    tWaitAry[fullKey] = tWaitAry[(tWaitAry.push({
                                  -                        name: name,
                                  -                        key: key,
                                  -                        fullKey: fullKey,
                                  -                        strip: !!strip
                                  -                    }) - 1)];
                                  -                }
                                  -
                                  -                //Load the text.
                                  -                url = require.nameToUrl(modName, "." + ext, contextName);
                                  -                context.loaded[name] = false;
                                  -                require.fetchText(url, function (text) {
                                  -                    context.text[key] = text;
                                  -                    context.loaded[name] = true;
                                  -                });
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //No-op, checkDeps never gets these text items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.textWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded.
                                  -         */
                                  -        orderDeps: function (context) {
                                  -            //Clear up state since further processing could
                                  -            //add more things to fetch.
                                  -            var i, dep, text, tWaitAry = context.textWaiting;
                                  -            context.textWaiting = [];
                                  -            for (i = 0; (dep = tWaitAry[i]); i++) {
                                  -                text = context.text[dep.key];
                                  -                context.defined[dep.name] = dep.strip ? require.textStrip(text) : text;
                                  -            }
                                  -        }
                                  -    });
                                  -}());
                                  -/**
                                  - * @license RequireJS order Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint white: false, nomen: false, plusplus: false */
                                  -/*global require: false, window: false, document: false, setTimeout: false */
                                  -
                                  -
                                  -(function () {
                                  -    //Sadly necessary browser inference due to differences in the way
                                  -    //that browsers load and execute dynamically inserted javascript
                                  -    //and whether the script/cache method works.
                                  -    //Currently, Gecko and Opera do not load/fire onload for scripts with
                                  -    //type="script/cache" but they execute injected scripts in order
                                  -    //unless the 'async' flag is present.
                                  -    //However, this is all changing in latest browsers implementing HTML5
                                  -    //spec. Firefox nightly supports using the .async true by default, and
                                  -    //if false, then it will execute in order. Favor that test first for forward
                                  -    //compatibility. However, it is unclear if webkit/IE will follow suit.
                                  -    //Latest webkit breaks the script/cache trick.
                                  -    var supportsInOrderExecution = (document.createElement("script").async ||
                                  -                               (window.opera && Object.prototype.toString.call(window.opera) === "[object Opera]") ||
                                  -                               //If Firefox 2 does not have to be supported, then
                                  -                               //a better check may be:
                                  -                               //('mozIsLocallyAvailable' in window.navigator)
                                  -                               ("MozAppearance" in document.documentElement.style)),
                                  -        readyRegExp = /^(complete|loaded)$/;
                                  -
                                  -    //Callback used by the type="script/cache" callback that indicates a script
                                  -    //has finished downloading.
                                  -    function scriptCacheCallback(evt) {
                                  -        var node = evt.currentTarget || evt.srcElement, i,
                                  -            context, contextName, moduleName, waiting, cached;
                                  -
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = require.s.contexts[contextName];
                                  -            waiting = context.orderWaiting;
                                  -            cached = context.orderCached;
                                  -
                                  -            //Mark this cache request as loaded
                                  -            cached[moduleName] = true;
                                  -
                                  -            //Find out how many ordered modules have loaded
                                  -            for (i = 0; cached[waiting[i]]; i++) {}
                                  -            if (i > 0) {
                                  -                require(waiting.splice(0, i), contextName);
                                  -            }
                                  -
                                  -            //If no other order cache items are in the queue, do some cleanup.
                                  -            if (!waiting.length) {
                                  -                context.orderCached = {};
                                  -            }
                                  -
                                  -            //Remove this script tag from the DOM
                                  -            //Use a setTimeout for cleanup because some older IE versions vomit
                                  -            //if removing a script node while it is being evaluated.
                                  -            setTimeout(function () {
                                  -                node.parentNode.removeChild(node);
                                  -            }, 15);
                                  -        }
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "order",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            //No-op, require never gets these order items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                orderWaiting: [],
                                  -                orderCached: {}
                                  -            });
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            var context = require.s.contexts[contextName],
                                  -                url = require.nameToUrl(name, null, contextName);
                                  -
                                  -            //Make sure the async attribute is not set for any pathway involving
                                  -            //this script.
                                  -            require.s.skipAsync[url] = true;
                                  -            if (supportsInOrderExecution) {
                                  -                //Just a normal script tag append, but without async attribute
                                  -                //on the script.
                                  -                require([name], contextName);
                                  -            } else {
                                  -                //Credit to LABjs author Kyle Simpson for finding that scripts
                                  -                //with type="script/cache" allow scripts to be downloaded into
                                  -                //browser cache but not executed. Use that
                                  -                //so that subsequent addition of a real type="text/javascript"
                                  -                //tag will cause the scripts to be executed immediately in the
                                  -                //correct order.
                                  -                context.orderWaiting.push(name);
                                  -                context.loaded[name] = false;
                                  -                require.attach(url, contextName, name, scriptCacheCallback, "script/cache");
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //No-op, checkDeps never gets these order items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.orderWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded. Not needed for this plugin.
                                  -         * State is reset as part of scriptCacheCallback. 
                                  -         */
                                  -        orderDeps: function (context) {
                                  -        }
                                  -    });
                                  -}());
                                  -
                                  -//Target build file for a require.js that has all of require's functionality,
                                  -//and includes specific plugins: i18n and text.
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.html b/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.html
                                  deleted file mode 100644
                                  index e46473e6..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.html
                                  +++ /dev/null
                                  @@ -1,23 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html xmlns="http://www.w3.org/1999/xhtml">
                                  -<head>
                                  -    <title>Hello Module</title>
                                  -</head>
                                  -<body class="harBody">
                                  -    <div id="content"></div>
                                  -    <link rel="stylesheet" href="../skin/classic/helloModule.css" type="text/css"/>
                                  -    <script src="allplugins-require.js"></script>
                                  -    <script>
                                  -        require(
                                  -            {
                                  -                baseUrl: "../modules",
                                  -                paths:
                                  -                {
                                  -                    "FBL/Plugin/Test": "https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min"
                                  -                }
                                  -            },
                                  -            ["../webapp/helloModule"]
                                  -        );
                                  -    </script>
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.js b/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.js
                                  deleted file mode 100644
                                  index 4033c2e6..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule.js
                                  +++ /dev/null
                                  @@ -1,33 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["FBL", "FBL/Domplate/DomTree" /*,"FBL/Plugin/Test"*/], function(FBL) { with (FBL) {
                                  -
                                  -//*************************************************************************************************
                                  -// The Application
                                  -
                                  -function HelloModuleApp()
                                  -{
                                  -}
                                  -
                                  -/**
                                  - * The main application object.
                                  - */
                                  -HelloModuleApp.prototype =
                                  -/** @lends HelloModuleApp */
                                  -{
                                  -    initialize: function()
                                  -    {
                                  -        var content = document.getElementById("content");
                                  -        this.domTree = new Domplate.DomTree(window);
                                  -        this.domTree.append(content);
                                  -    }
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -// Initialization
                                  -
                                  -var theApp = new HelloModuleApp();
                                  -theApp.initialize();
                                  -
                                  -//*************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.html b/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.html
                                  deleted file mode 100644
                                  index 7c93a20a..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.html
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html xmlns="http://www.w3.org/1999/xhtml">
                                  -<head>
                                  -    <title>Hello Module</title>
                                  -</head>
                                  -<body class="harBody">
                                  -    <div id="content"></div>
                                  -    <link rel="stylesheet" href="../skin/classic/helloModule.css" type="text/css"/>
                                  -    <script src="allplugins-require.js"></script>
                                  -    <script>
                                  -        require(
                                  -            {
                                  -                baseUrl: "../modules_v2/Common",
                                  -                paths:
                                  -                {
                                  -                    // mapping non-common modules here to platform-specific implementations
                                  -                    "Firebug/CSS": "../Mozilla/Firebug/CSS"
                                  -                }
                                  -            },
                                  -            ["../../webapp/helloModule2"]
                                  -        );
                                  -    </script>
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.js b/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.js
                                  deleted file mode 100644
                                  index 7e84c469..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/app/webapp/helloModule2.js
                                  +++ /dev/null
                                  @@ -1,33 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["FBL", "Firebug", "Domplate/DomTree"], function(FBL) { with (FBL) {
                                  -
                                  -//*************************************************************************************************
                                  -// The Application
                                  -
                                  -function HelloModuleApp()
                                  -{
                                  -}
                                  -
                                  -/**
                                  - * The main application object.
                                  - */
                                  -HelloModuleApp.prototype =
                                  -/** @lends HelloModuleApp */
                                  -{
                                  -    initialize: function()
                                  -    {
                                  -        var content = document.getElementById("content");
                                  -        this.domTree = new Domplate.DomTree(window);
                                  -        this.domTree.append(content);
                                  -    }
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -// Initialization
                                  -
                                  -var theApp = new HelloModuleApp();
                                  -theApp.initialize();
                                  -
                                  -//*************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/HelloModule/build-config.js b/branches/flexBox/sandbox/HelloModule/build-config.js
                                  deleted file mode 100644
                                  index 1802bdf8..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/build-config.js
                                  +++ /dev/null
                                  @@ -1,21 +0,0 @@
                                  -({
                                  -    appDir: "app",
                                  -    baseUrl: "modules",
                                  -    dir: "app-build",
                                  -
                                  -    // Comment out the optimize line if you want
                                  -    // the code minified by Closure Compiler using
                                  -    // the "simple" optimizations mode
                                  -    //optimize: "simple",
                                  -    optimize: "none",
                                  -
                                  -    optimizeCss: "standard",
                                  -
                                  -    modules: [
                                  -        {
                                  -            name: "dom-tree",
                                  -            include: [
                                  -            ]
                                  -        }
                                  -    ]
                                  -})
                                  diff --git a/branches/flexBox/sandbox/HelloModule/build.bat b/branches/flexBox/sandbox/HelloModule/build.bat
                                  deleted file mode 100644
                                  index 25754e9b..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/build.bat
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -requirejs\build\build.bat build-config.js
                                  diff --git a/branches/flexBox/sandbox/HelloModule/readme.txt b/branches/flexBox/sandbox/HelloModule/readme.txt
                                  deleted file mode 100644
                                  index 74303c64..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/readme.txt
                                  +++ /dev/null
                                  @@ -1,8 +0,0 @@
                                  -
                                  -In order to test the web part of this application run node server (within the app directory)
                                  -as follows:
                                  -$node server.js
                                  -
                                  -Then navigate your browser to:
                                  -http://localhost:8070/webapp/helloModule.html
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/LICENSE b/branches/flexBox/sandbox/HelloModule/requirejs/LICENSE
                                  deleted file mode 100644
                                  index 895df9f3..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/LICENSE
                                  +++ /dev/null
                                  @@ -1,58 +0,0 @@
                                  -RequireJS is released under two licenses: new BSD, and MIT. You may pick the
                                  -license that best suits your development needs. The text of both licenses are
                                  -provided below.
                                  -
                                  -
                                  -The "New" BSD License:
                                  -----------------------
                                  -
                                  -Copyright (c) 2010, The Dojo Foundation
                                  -All rights reserved.
                                  -
                                  -Redistribution and use in source and binary forms, with or without
                                  -modification, are permitted provided that the following conditions are met:
                                  -
                                  -  * Redistributions of source code must retain the above copyright notice, this
                                  -    list of conditions and the following disclaimer.
                                  -  * Redistributions in binary form must reproduce the above copyright notice,
                                  -    this list of conditions and the following disclaimer in the documentation
                                  -    and/or other materials provided with the distribution.
                                  -  * Neither the name of the Dojo Foundation nor the names of its contributors
                                  -    may be used to endorse or promote products derived from this software
                                  -    without specific prior written permission.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
                                  -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                                  -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                                  -DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
                                  -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                                  -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
                                  -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
                                  -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
                                  -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  -
                                  -
                                  -
                                  -MIT License
                                  ------------
                                  -
                                  -Copyright (c) 2010, The Dojo Foundation
                                  -
                                  -Permission is hereby granted, free of charge, to any person obtaining a copy
                                  -of this software and associated documentation files (the "Software"), to deal
                                  -in the Software without restriction, including without limitation the rights
                                  -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
                                  -copies of the Software, and to permit persons to whom the Software is
                                  -furnished to do so, subject to the following conditions:
                                  -
                                  -The above copyright notice and this permission notice shall be included in
                                  -all copies or substantial portions of the Software.
                                  -
                                  -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
                                  -THE SOFTWARE.
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.bat b/branches/flexBox/sandbox/HelloModule/requirejs/build/build.bat
                                  deleted file mode 100644
                                  index 3d7effc7..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.bat
                                  +++ /dev/null
                                  @@ -1,2 +0,0 @@
                                  -set MYDIR=%~dp0
                                  -java -classpath %MYDIR%/lib/rhino/js.jar;%MYDIR%/lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main %MYDIR%/build.js %MYDIR% %*
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/build.js
                                  deleted file mode 100644
                                  index 0baf5cf2..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.js
                                  +++ /dev/null
                                  @@ -1,37 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*
                                  - * This file will optimize files that can be loaded via require.js into one file.
                                  - * This file needs Rhino to require, and if the Closure compiler is used to minify
                                  - * files, Java 6 is required.
                                  - *
                                  - * Call this file like so:
                                  - * java -jar path/to/js.jar build.js directory/containing/build.js/ build.js
                                  - *
                                  - * General use:
                                  - *
                                  - * Create a build.js file that has the build options you want and pass that
                                  - * build file to this file to do the build. See example.build.js for more information.
                                  - */
                                  -
                                  -/*jslint regexp: false, nomen: false, plusplus: false */
                                  -/*global load: false, print: false, quit: false, logger: false,
                                  -  fileUtil: false, lang: false, pragma: false, optimize: false, build: false,
                                  -  java: false, Packages: false */
                                  -
                                  -"use strict";
                                  -var require;
                                  -
                                  -(function (args) {
                                  -    var requireBuildPath = args[0];
                                  -    if (requireBuildPath.charAt(requireBuildPath.length - 1) !== "/") {
                                  -        requireBuildPath += "/";
                                  -    }
                                  -    load(requireBuildPath + "jslib/build.js");
                                  -    build(args);
                                  -
                                  -}(Array.prototype.slice.call(arguments)));
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.sh b/branches/flexBox/sandbox/HelloModule/requirejs/build/build.sh
                                  deleted file mode 100644
                                  index b40ff49d..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/build.sh
                                  +++ /dev/null
                                  @@ -1,4 +0,0 @@
                                  -#!/bin/sh
                                  -
                                  -MYDIR=`cd \`dirname "$0"\`; pwd`
                                  -java -classpath $MYDIR/lib/rhino/js.jar:$MYDIR/lib/closure/compiler.jar org.mozilla.javascript.tools.shell.Main $MYDIR/build.js $MYDIR "$@"
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.bat b/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.bat
                                  deleted file mode 100644
                                  index 63ed769e..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.bat
                                  +++ /dev/null
                                  @@ -1,2 +0,0 @@
                                  -set MYDIR=%~dp0
                                  -java -classpath %MYDIR%/lib/rhino/js.jar;%MYDIR%/lib/closure/compiler.jar org.mozilla.javascript.tools.debugger.Main %MYDIR%/build.js %MYDIR% %*
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.sh b/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.sh
                                  deleted file mode 100644
                                  index 257513cb..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/buildebug.sh
                                  +++ /dev/null
                                  @@ -1,4 +0,0 @@
                                  -#!/bin/sh
                                  -
                                  -MYDIR=`cd \`dirname "$0"\`; pwd`
                                  -java -classpath $MYDIR/lib/rhino/js.jar:$MYDIR/lib/closure/compiler.jar org.mozilla.javascript.tools.debugger.Main $MYDIR/build.js $MYDIR "$@"
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/example.build.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/example.build.js
                                  deleted file mode 100644
                                  index fed1ac64..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/example.build.js
                                  +++ /dev/null
                                  @@ -1,178 +0,0 @@
                                  -/*
                                  - * This is an example build file that demonstrates how to use the build system for
                                  - * require.js.
                                  - *
                                  - * THIS BUILD FILE WILL NOT WORK. It is referencing paths that probably
                                  - * do not exist on your machine. Just use it as a guide.
                                  - *
                                  - * 
                                  - */
                                  -
                                  -({
                                  -    //The top level directory that contains your app. If this option is used
                                  -    //then it assumed your scripts are in a subdirectory under this path.
                                  -    //This option is not required. If it is not specified, then baseUrl
                                  -    //below is the anchor point for finding things. If this option is specified,
                                  -    //then all the files from the app directory will be copied to the dir:
                                  -    //output area, and baseUrl will assume to be a relative path under
                                  -    //this directory.
                                  -    appDir: "some/path/",
                                  -
                                  -    //By default, all modules are located relative to this path. If baseUrl
                                  -    //is not explicitly set, then all modules are loaded relative to
                                  -    //the directory that holds the build file.
                                  -    baseUrl: "./",
                                  -
                                  -    //Set paths for modules. If relative paths, set relative to baseUrl above.
                                  -    paths: {
                                  -        "foo.bar": "../scripts/foo/bar",
                                  -        "baz": "../another/path/baz"
                                  -    },
                                  -
                                  -    //The directory path to save the output. If not specified, then
                                  -    //the path will default to be a directory called "build" as a sibling
                                  -    //to the build file. All relative paths are relative to the build file.
                                  -    dir: "../some/path",
                                  -
                                  -    //Used to inline i18n resources into the built file. If no locale
                                  -    //is specified, i18n resources will not be inlined. Only one locale
                                  -    //can be inlined for a build. Root bundles referenced by a build layer
                                  -    //will be included in a build layer regardless of locale being set.
                                  -    locale: "en-us",
                                  -
                                  -    //How to optimize all the JS files in the build output directory.
                                  -    //Right now only the following values
                                  -    //are supported (default is to not do any optimization):
                                  -    //- "closure": uses Google's Closure Compiler in simple optimization
                                  -    //mode to minify the code.
                                  -    //- "closure.keepLines": Same as closure option, but keeps line returns
                                  -    //in the minified files.
                                  -    //- "none": no minification will be done.
                                  -    optimize: "closure",
                                  -
                                  -    //Allow CSS optimizations. Allowed values:
                                  -    //- "standard": @import inlining, comment removal and line returns.
                                  -    //Removing line returns may have problems in IE, depending on the type
                                  -    //of CSS.
                                  -    //- "standard.keepLines": like "standard" but keeps line returns.
                                  -    //- "none": skip CSS optimizations.
                                  -    optimizeCss: "standard.keepLines",
                                  -
                                  -    //If optimizeCss is in use, a list of of files to ignore for the @import
                                  -    //inlining. The value of this option should be a comma separated list
                                  -    //of CSS file names to ignore. The file names should match whatever
                                  -    //strings are used in the @import calls.
                                  -    cssImportIgnore: null,
                                  -
                                  -    //Inlines the text for any text! dependencies, to avoid the separate
                                  -    //async XMLHttpRequest calls to load those dependencies.
                                  -    inlineText: true,
                                  -
                                  -    //Allow "use strict"; be included in the RequireJS files.
                                  -    //Default is false because there are not many browsers that can properly
                                  -    //process and give errors on code for ES5 strict mode,
                                  -    //and there is a lot of legacy code that will not work in strict mode.
                                  -    useStrict: false,
                                  -
                                  -    //Specify build pragmas. If the source files contain comments like so:
                                  -    //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -    //>>excludeEnd("requireExcludeModify");
                                  -    //Then the comments that start with //>> are the build pragmas.
                                  -    //excludeStart/excludeEnd and includeStart/includeEnd work, and the
                                  -    //the pragmas value to the includeStart or excludeStart lines
                                  -    //is evaluated to see if the code between the Start and End pragma
                                  -    //lines should be included or excluded.
                                  -    pragmas: {
                                  -        //Indicates require will be included with jquery.
                                  -        jquery: true,
                                  -        //Remove require.modify() code
                                  -        requireExcludeModify: true,
                                  -        //Remove plugin support from require. The i18n! order! and
                                  -        //text! extensions will not work.
                                  -        requireExcludePlugin: true,
                                  -        //Remove the page loaded detection.
                                  -        requireExcludePageLoad: true
                                  -    },
                                  -
                                  -    //Skip processing for pragmas.
                                  -    skipPragmas: false,
                                  -
                                  -    //If execModules is true, each script is execute in
                                  -    //full to find the require calls/dependencies, but the code is executed
                                  -    //in the Rhino JavaScript environment. Set this value to true only
                                  -    //if the code follows the strict require pattern of wrapping all
                                  -    //code in a require callback. If you are using jQuery, Prototype or MooTools
                                  -    //you should not set this value to true. Default is false.
                                  -    execModules: false,
                                  -
                                  -    //If skipModuleInsertion is false, then files that do not use require.def
                                  -    //to define modules will get a require.def() placeholder inserted for them.
                                  -    //Also, require.pause/resume calls will be inserted.
                                  -    //Set it to true to avoid this. This is useful if you are building code that
                                  -    //does not use require() in the built project or in the JS files, but you
                                  -    //still want to use the optimization tool from RequireJS to concatenate modules
                                  -    //together.
                                  -    skipModuleInsertion: false,
                                  -
                                  -    //List the modules that will be optimized. All their immediate and deep
                                  -    //dependencies will be included in the module's file when the build is
                                  -    //done. If that module or any of its dependencies includes i18n bundles,
                                  -    //only the root bundles will be included unless the locale: section is set above.
                                  -    modules: [
                                  -        //Just specifying a module name means that module will be converted into
                                  -        //a built file that contains all of its dependencies. If that module or any
                                  -        //of its dependencies includes i18n bundles, they may not be included in the
                                  -        //built file unless the locale: section is set above.
                                  -        {
                                  -            name: "foo/bar/bop",
                                  -            
                                  -            //Should the contents of require.js be included in the optimized module.
                                  -            //Defaults to false.
                                  -            includeRequire: true,
                                  -
                                  -            //For build profiles that contain more than one modules entry,
                                  -            //allow overrides for the properties that set for the whole build,
                                  -            //for example a different set of pragmas for this module.
                                  -            //The override's value is an object that can
                                  -            //contain any of the other build options in this file.
                                  -            override: {
                                  -                pragmas: {
                                  -                    requireExcludeModify: true
                                  -                }
                                  -            }
                                  -        },
                                  -
                                  -        //This module entry combines all the dependencies of foo/bar/bop and foo/bar/bee
                                  -        //and any of their dependencies into one file.
                                  -        {
                                  -            name: "foo/bar/bop",
                                  -            include: ["foo/bar/bee"]
                                  -        },
                                  -
                                  -        //This module entry combines all the dependencies of foo/bar/bip into one file,
                                  -        //but excludes foo/bar/bop and its dependencies from the built file. If you want
                                  -        //to exclude a module that is also another module being optimized, it is more
                                  -        //efficient if you define that module optimization entry before using it
                                  -        //in an exclude array.
                                  -        {
                                  -            name: "foo/bar/bip",
                                  -            exclude: [
                                  -                "foo/bar/bop"
                                  -            ]
                                  -        },
                                  -
                                  -        //This module entry shows how to specify a specific module be excluded
                                  -        //from the built module file. excludeShallow means just exclude that
                                  -        //specific module, but if that module has nested dependencies that are
                                  -        //part of the built file, keep them in there. This is useful during
                                  -        //development when you want to have a fast bundled set of modules, but
                                  -        //just develop/debug one or two modules at a time.
                                  -        {
                                  -            name: "foo/bar/bin",
                                  -            excludeShallow: [
                                  -                "foo/bar/bot"
                                  -            ]
                                  -        }
                                  -    ]
                                  -})
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/build.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/build.js
                                  deleted file mode 100644
                                  index ada1ef50..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/build.js
                                  +++ /dev/null
                                  @@ -1,698 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint regexp: false, plusplus: false, nomen: false */
                                  -/*global java: false, lang: false, fileUtil: false, optimize: false,
                                  -  load: false, quit: false, print: false, logger: false, require: false,
                                  -  pragma: false */
                                  -
                                  -"use strict";
                                  -
                                  -var build, buildBaseConfig;
                                  -(function () {
                                  -    buildBaseConfig = {
                                  -            requireBuildPath: "../",
                                  -            appDir: "",
                                  -            pragmas: {},
                                  -            paths: {},
                                  -            optimize: "closure",
                                  -            optimizeCss: "standard.keepLines",
                                  -            inlineText: true,
                                  -            execModules: false
                                  -        };
                                  -
                                  -    build = function (args) {
                                  -        var requireBuildPath, buildFile, baseUrlFile, buildPaths, deps, fileName, fileNames,
                                  -            prop, props, paths, path, i, fileContents, buildFileContents = "",
                                  -            doClosure, requireContents, pluginContents, pluginBuildFileContents,
                                  -            baseConfig, override, builtRequirePath, cmdConfig, config,
                                  -            modules, module, moduleName, builtModule, srcPath;
                                  -    
                                  -        if (!args || args.length < 2) {
                                  -            print("java -jar path/to/js.jar build.js directory/containing/build.js/ build.js\n" +
                                  -                  "where build.js is the name of the build file (see example.build.js for hints on how to make a build file.");
                                  -            quit();
                                  -        }
                                  -
                                  -        //First argument to this script should be the directory on where to find this script.
                                  -        //This path should end in a slash.
                                  -        requireBuildPath = args[0];
                                  -        if (requireBuildPath.charAt(requireBuildPath.length - 1) !== "/") {
                                  -            requireBuildPath += "/";
                                  -        }
                                  -    
                                  -        ["lang", "logger", "fileUtil", "parse", "optimize", "pragma", "build"].forEach(function (path) {
                                  -            load(requireBuildPath + "jslib/" + path + ".js");
                                  -        });
                                  -    
                                  -        //Next args can include a build file path as well as other build args.
                                  -        //build file path comes first. If it does not contain an = then it is
                                  -        //a build file path. Otherwise, just all build args.
                                  -        if (args[1].indexOf("=") === -1) {
                                  -            buildFile = args[1];
                                  -            args.splice(0, 2);
                                  -        } else {
                                  -            args.splice(0, 1);
                                  -        }
                                  -    
                                  -        //Remaining args are options to the build
                                  -        cmdConfig = build.convertArrayToObject(args);
                                  -        cmdConfig.buildFile = buildFile;
                                  -        cmdConfig.requireBuildPath = requireBuildPath;
                                  -    
                                  -        config = build.createConfig(cmdConfig);
                                  -        paths = config.paths;
                                  -
                                  -        //Load require.js with the build patches.
                                  -        load(config.requireUrl);
                                  -        load(requireBuildPath + "jslib/requirePatch.js");
                                  -
                                  -        if (!config.out && !config.cssIn) {
                                  -            //This is not just a one-off file build but a full build profile, with
                                  -            //lots of files to process.
                                  -    
                                  -            //First copy all the baseUrl content
                                  -            fileUtil.copyDir((config.appDir || config.baseUrl), config.dir, /\w/, true);
                                  -        
                                  -            //Adjust baseUrl if config.appDir is in play, and set up build output paths.
                                  -            buildPaths = {};
                                  -            if (config.appDir) {
                                  -                //All the paths should be inside the appDir
                                  -                buildPaths = paths;
                                  -            } else {
                                  -                //If no appDir, then make sure to copy the other paths to this directory.
                                  -                for (prop in paths) {
                                  -                    if (paths.hasOwnProperty(prop)) {
                                  -                        //Set up build path for each path prefix.
                                  -                        buildPaths[prop] = prop.replace(/\./g, "/");
                                  -
                                  -                        //Make sure source path is fully formed with baseUrl,
                                  -                        //if it is a relative URL.
                                  -                        srcPath = paths[prop];
                                  -                        if (srcPath.indexOf('/') !== 0 && srcPath.indexOf(':') === -1) {
                                  -                            srcPath = config.baseUrl + srcPath;
                                  -                        }
                                  -
                                  -                        //Copy files to build area. Copy all files (the /\w/ regexp)
                                  -                        fileUtil.copyDir(srcPath, config.dirBaseUrl + buildPaths[prop], /\w/, true);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Figure out source file location for each module layer. Do this by seeding require
                                  -        //with source area configuration. This is needed so that later the module layers
                                  -        //can be manually copied over to the source area, since the build may be
                                  -        //require multiple times and the above copyDir call only copies newer files.
                                  -        require({
                                  -            baseUrl: config.baseUrl,
                                  -            paths: paths
                                  -        });
                                  -        modules = config.modules;
                                  -
                                  -        if (modules) {
                                  -            modules.forEach(function (module) {
                                  -                if (module.name) {
                                  -                    module._sourcePath = require.nameToUrl(module.name, null, require.s.ctxName);
                                  -                    //If the module does not exist, and this is not a "new" module layer,
                                  -                    //as indicated by a true "create" property on the module, then throw an error.
                                  -                    if (!(new java.io.File(module._sourcePath)).exists() && !module.create) {
                                  -                        throw new Error("ERROR: module path does not exist: " +
                                  -                                        module._sourcePath + " for module named: " + module.name +
                                  -                                        ". Path is relative to: " + (new java.io.File('.')).getAbsolutePath());
                                  -                    }
                                  -                }
                                  -            });
                                  -        }
                                  -
                                  -        if (config.out) {
                                  -            //Just set up the _buildPath for the module layer.
                                  -            require(config);
                                  -            if (!config.cssIn) {
                                  -                config.modules[0]._buildPath = config.out;
                                  -            }
                                  -        } else if (!config.cssIn) {
                                  -            //Now set up the config for require to use the build area, and calculate the
                                  -            //build file locations. Pass along any config info too.
                                  -            baseConfig = {
                                  -                baseUrl: config.dirBaseUrl,
                                  -                paths: buildPaths
                                  -            };
                                  -            lang.mixin(baseConfig, config);
                                  -            require(baseConfig);
                                  -    
                                  -            if (modules) {
                                  -                modules.forEach(function (module) {
                                  -                    if (module.name) {
                                  -                        module._buildPath = require.nameToUrl(module.name, null, require.s.ctxName);
                                  -                        if (!module.create) {
                                  -                            fileUtil.copyFile(module._sourcePath, module._buildPath);
                                  -                        }
                                  -                    }
                                  -                });
                                  -            }
                                  -        }
                                  -
                                  -        if (modules) {
                                  -            //For each module layer, call require to calculate dependencies.
                                  -            modules.forEach(function (module) {
                                  -                module.layer = build.traceDependencies(module, config);
                                  -            });
                                  -
                                  -            //Now build up shadow layers for anything that should be excluded.
                                  -            //Do this after tracing dependencies for each module, in case one
                                  -            //of those modules end up being one of the excluded values.
                                  -            modules.forEach(function (module) {
                                  -                if (module.exclude) {
                                  -                    module.excludeLayers = [];
                                  -                    module.exclude.forEach(function (exclude, i) {
                                  -                        //See if it is already in the list of modules.
                                  -                        //If not trace dependencies for it.
                                  -                        module.excludeLayers[i] = build.findBuildModule(exclude, modules) ||
                                  -                                                 {layer: build.traceDependencies({name: exclude}, config)};
                                  -                    });
                                  -                }
                                  -            });
                                  -
                                  -            modules.forEach(function (module) {
                                  -                if (module.exclude) {
                                  -                    //module.exclude is an array of module names. For each one,
                                  -                    //get the nested dependencies for it via a matching entry
                                  -                    //in the module.excludeLayers array.
                                  -                    module.exclude.forEach(function (excludeModule, i) {
                                  -                        var excludeLayer = module.excludeLayers[i].layer, map = excludeLayer.buildPathMap, prop;
                                  -                        for (prop in map) {
                                  -                            if (map.hasOwnProperty(prop)) {
                                  -                                build.removeModulePath(prop, map[prop], module.layer);
                                  -                            }
                                  -                        }
                                  -                    });
                                  -                }
                                  -                if (module.excludeShallow) {
                                  -                    //module.excludeShallow is an array of module names.
                                  -                    //shallow exclusions are just that module itself, and not
                                  -                    //its nested dependencies.
                                  -                    module.excludeShallow.forEach(function (excludeShallowModule) {
                                  -                        var path = module.layer.buildPathMap[excludeShallowModule];
                                  -                        if (path) {
                                  -                            build.removeModulePath(excludeShallowModule, path, module.layer);
                                  -                        }
                                  -                    });
                                  -                }
                                  -
                                  -                //Flatten them and collect the build output for each module.
                                  -                builtModule = build.flattenModule(module, module.layer, config);
                                  -                fileUtil.saveUtf8File(module._buildPath, builtModule.text);
                                  -                buildFileContents += builtModule.buildText;
                                  -            });
                                  -        }
                                  -
                                  -        //Do other optimizations.
                                  -        if (config.out && !config.cssIn) {
                                  -            //Just need to worry about one JS file.
                                  -            fileName = config.modules[0]._buildPath;
                                  -            optimize.jsFile(fileName, fileName, config);
                                  -        } else if (!config.cssIn) {
                                  -            //Normal optimizations across modules.
                                  -
                                  -            //JS optimizations.
                                  -            fileNames = fileUtil.getFilteredFileList(config.dir, /\.js$/, true);    
                                  -            for (i = 0; (fileName = fileNames[i]); i++) {
                                  -                optimize.jsFile(fileName, fileName, config);
                                  -            }
                                  -    
                                  -            //CSS optimizations
                                  -            if (config.optimizeCss && config.optimizeCss !== "none") {
                                  -                optimize.css(config.dir, config);
                                  -            }
                                  -    
                                  -            //All module layers are done, write out the build.txt file.
                                  -            fileUtil.saveUtf8File(config.dir + "build.txt", buildFileContents);
                                  -        }
                                  -
                                  -        //If just have one CSS file to optimize, do that here.
                                  -        if (config.cssIn) {
                                  -            optimize.cssFile(config.cssIn, config.out, config);
                                  -        }
                                  -
                                  -        //Print out what was built into which layers.
                                  -        if (buildFileContents) {
                                  -            print(buildFileContents);
                                  -        }
                                  -        
                                  -    };
                                  -
                                  -    /**
                                  -     * Converts an array that has String members of "name=value"
                                  -     * into an object, where the properties on the object are the names in the array.
                                  -     * Also converts the strings "true" and "false" to booleans for the values.
                                  -     * member name/value pairs, and converts some comma-separated lists into
                                  -     * arrays.
                                  -     * @param {Array} ary
                                  -     */
                                  -    build.convertArrayToObject = function (ary) {
                                  -        var result = {}, i, separatorIndex, prop, value,
                                  -            needArray = {
                                  -                "include": true,
                                  -                "exclude": true,
                                  -                "excludeShallow": true
                                  -            };
                                  -
                                  -        for (i = 0; i < ary.length; i++) {
                                  -            separatorIndex = ary[i].indexOf("=");
                                  -            if (separatorIndex === -1) {
                                  -                throw "Malformed name/value pair: [" + ary[i] + "]. Format should be name=value";
                                  -            }
                                  -
                                  -            value = ary[i].substring(separatorIndex + 1, ary[i].length);
                                  -            if (value === "true") {
                                  -                value = true;
                                  -            } else if (value === "false") {
                                  -                value = false;
                                  -            }
                                  -
                                  -            prop = ary[i].substring(0, separatorIndex);
                                  -
                                  -            //Convert to array if necessary
                                  -            if (needArray[prop]) {
                                  -                value = value.split(",");
                                  -            }
                                  -
                                  -            result[prop] = value;
                                  -        }
                                  -        return result; //Object
                                  -    };
                                  -
                                  -    build.makeAbsPath = function (path, absFilePath) {
                                  -        //Add abspath if necessary. If path starts with a slash or has a colon,
                                  -        //then already is an abolute path.
                                  -        if (path.indexOf('/') !== 0 && path.indexOf(':') === -1) {
                                  -            path = absFilePath +
                                  -                   (absFilePath.charAt(absFilePath.length - 1) === '/' ? '' : '/') +
                                  -                   path;
                                  -        }
                                  -        return path;
                                  -    };
                                  -
                                  -    /**
                                  -     * Creates a config object for an optimization build.
                                  -     * It will also read the build profile if it is available, to create
                                  -     * the configuration.
                                  -     *
                                  -     * @param {Object} cfg config options that take priority
                                  -     * over defaults and ones in the build file. These options could
                                  -     * be from a command line, for instance.
                                  -     *
                                  -     * @param {Object} the created config object.
                                  -     */
                                  -    build.createConfig = function (cfg) {
                                  -        /*jslint evil: true */
                                  -        var config = {}, baseUrl, buildFileContents, buildFileConfig,
                                  -            paths, props, i, prop, buildFile, absFilePath, originalBaseUrl;
                                  -
                                  -        lang.mixin(config, buildBaseConfig);
                                  -        lang.mixin(config, cfg, true);
                                  -
                                  -        //Normalize build directory location, and set up path to require.js
                                  -        if (config.requireBuildPath.charAt(config.requireBuildPath.length - 1) !== "/") {
                                  -            config.requireBuildPath += "/";
                                  -            //Also adjust the override config params, since it
                                  -            //may be re-applied later after reading the build file.
                                  -            if (cfg.requireBuildPath) {
                                  -                cfg.requireBuildPath = config.requireBuildPath;
                                  -            }
                                  -        }
                                  -        config.requireUrl = fileUtil.absPath(java.io.File(cfg.requireBuildPath + "../require.js"));
                                  -
                                  -        if (config.buildFile) {
                                  -            //A build file exists, load it to get more config.
                                  -            buildFile = new java.io.File(config.buildFile).getAbsoluteFile();
                                  -
                                  -            //Find the build file, and make sure it exists, if this is a build
                                  -            //that has a build profile, and not just command line args with an in=path
                                  -            if (!buildFile.exists()) {
                                  -                throw new Error("ERROR: build file does not exist: " + buildFile.getAbsolutePath());
                                  -            }
                                  -
                                  -            absFilePath = config.baseUrl = fileUtil.absPath(buildFile.getParentFile()).replace(lang.backSlashRegExp, '/');
                                  -            config.dir = config.baseUrl + "/build/";
                                  -
                                  -            //Load build file options.
                                  -            buildFileContents = fileUtil.readFile(buildFile);
                                  -            buildFileConfig = eval("(" + buildFileContents + ")");
                                  -            lang.mixin(config, buildFileConfig, true);
                                  -
                                  -            //Re-apply the override config values, things like command line
                                  -            //args should take precedence over build file values.
                                  -            lang.mixin(config, cfg, true);
                                  -        } else {
                                  -            if (!config.out && !config.cssIn) {
                                  -                throw new Error("ERROR: 'out' or 'cssIn' option missing.");
                                  -            }
                                  -            if (!config.out) {
                                  -                throw new Error("ERROR: 'out' option missing.");
                                  -            } else {
                                  -                config.out = config.out.replace(lang.backSlashRegExp, "/");
                                  -            }
                                  -
                                  -            if (!config.cssIn && !cfg.baseUrl) {
                                  -                throw new Error("ERROR: 'baseUrl' option missing.");
                                  -            }
                                  -
                                  -            //In this scenario, the absFile path is current directory
                                  -            absFilePath = (String((new java.io.File('.')).getAbsolutePath())).replace(lang.backSlashRegExp, '/');
                                  -        }
                                  -
                                  -        if (config.out && !config.cssIn) {
                                  -            //Just one file to optimize.
                                  -
                                  -            //Set up dummy module layer to build.
                                  -            config.modules = [
                                  -                {
                                  -                    name: config.name,
                                  -                    out: config.out,
                                  -                    include: config.include,
                                  -                    exclude: config.exclude,
                                  -                    excludeShallow: config.excludeShallow
                                  -                }
                                  -            ];
                                  -
                                  -            if (config.includeRequire) {
                                  -                config.modules[0].includeRequire = true;
                                  -            }
                                  -
                                  -            //Does not have a build file, so set up some defaults.
                                  -            //Optimizing CSS should not be allowed, unless explicitly
                                  -            //asked for on command line. In that case the only task is
                                  -            //to optimize a CSS file.
                                  -            if (!cfg.optimizeCss) {
                                  -                config.optimizeCss = "none";
                                  -            }
                                  -        }
                                  -
                                  -        //Adjust the path properties as appropriate.
                                  -        //First make sure build paths use front slashes and end in a slash,
                                  -        //and make sure they are aboslute paths.
                                  -        props = ["appDir", "dir", "baseUrl"];
                                  -        for (i = 0; (prop = props[i]); i++) {
                                  -            if (config[prop]) {
                                  -                config[prop] = config[prop].replace(lang.backSlashRegExp, "/");
                                  -                if (config[prop].charAt(config[prop].length - 1) !== "/") {
                                  -                    config[prop] += "/";
                                  -                }
                                  -
                                  -                //Add abspath if necessary.
                                  -                if (prop === "baseUrl") {
                                  -                    originalBaseUrl = config.baseUrl;
                                  -                    if (config.appDir) {
                                  -                        //If baseUrl with an appDir, the baseUrl is relative to
                                  -                        //the appDir, *not* the absFilePath. appDir and dir are
                                  -                        //made absolute before baseUrl, so this will work.
                                  -                        config.baseUrl = build.makeAbsPath(originalBaseUrl, config.appDir);
                                  -                        //Set up dir output baseUrl.
                                  -                        config.dirBaseUrl = build.makeAbsPath(originalBaseUrl, config.dir);
                                  -                    } else {
                                  -                        //The dir output baseUrl is same as regular baseUrl, both
                                  -                        //relative to the absFilePath.
                                  -                        config.baseUrl = build.makeAbsPath(config[prop], absFilePath);
                                  -                        config.dirBaseUrl = config.dir;
                                  -                    }
                                  -                } else {
                                  -                    config[prop] = build.makeAbsPath(config[prop], absFilePath);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Make sure some other paths are absolute.
                                  -        props = ["out", "cssIn"];
                                  -        for (i = 0; (prop = props[i]); i++) {
                                  -            if (config[prop]) {
                                  -                config[prop] = build.makeAbsPath(config[prop], absFilePath);
                                  -            }
                                  -        }
                                  -
                                  -        //Make sure paths has a setting for require, so support plugins
                                  -        //can be loaded for the build.
                                  -        paths = config.paths;
                                  -        if (!paths.require) {
                                  -            paths.require = config.requireUrl.substring(0, config.requireUrl.lastIndexOf("/")) + "/require";
                                  -        }
                                  -
                                  -        return config;
                                  -    };
                                  -
                                  -    /**
                                  -     * finds the module being built/optimized with the given moduleName,
                                  -     * or returns null.
                                  -     * @param {String} moduleName
                                  -     * @param {Array} modules
                                  -     * @returns {Object} the module object from the build profile, or null.
                                  -     */
                                  -    build.findBuildModule = function (moduleName, modules) {
                                  -        var i, module;
                                  -        for (i = 0; (module = modules[i]); i++) {
                                  -            if (module.name === moduleName) {
                                  -                return module;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -
                                  -    /**
                                  -     * Removes a module name and path from a layer, if it is supposed to be
                                  -     * excluded from the layer.
                                  -     * @param {String} moduleName the name of the module
                                  -     * @param {String} path the file path for the module
                                  -     * @param {Object} layer the layer to remove the module/path from
                                  -     */
                                  -    build.removeModulePath = function (module, path, layer) {
                                  -        var index = layer.buildFilePaths.indexOf(path);
                                  -        if (index !== -1) {
                                  -            layer.buildFilePaths.splice(index, 1);
                                  -        }
                                  -
                                  -        //Take it out of the specified modules. Specified modules are mostly
                                  -        //used to find require modifiers.
                                  -        delete layer.specified[module];
                                  -    };
                                  -
                                  -    /**
                                  -     * Uses the module build config object to trace the dependencies for the
                                  -     * given module.
                                  -     * 
                                  -     * @param {Object} module the module object from the build config info.
                                  -     * @param {Object} the build config object.
                                  -     *
                                  -     * @returns {Object} layer information about what paths and modules should
                                  -     * be in the flattened module.
                                  -     */
                                  -    build.traceDependencies = function (module, config) {
                                  -        var include, override, url, layer, prop,
                                  -            context = require.s.contexts[require.s.ctxName],
                                  -            baseConfig = context.config;
                                  -
                                  -        //Reset some state set up in requirePatch.js, and clean up require's
                                  -        //current context.
                                  -        require._buildReset();
                                  -
                                  -        //Put back basic config
                                  -        require(baseConfig);
                                  -
                                  -        logger.trace("\nTracing dependencies for: " + (module.name || module.out));
                                  -        include = module.name && !module.create ? [module.name] : [];
                                  -        if (module.include) {
                                  -            include = include.concat(module.include);
                                  -        }
                                  -
                                  -        //If there are overrides to basic config, set that up now.;
                                  -        if (module.override) {
                                  -            override = lang.delegate(baseConfig);
                                  -            lang.mixin(override, module.override, true);
                                  -            require(override);
                                  -        }
                                  -
                                  -        //Figure out module layer dependencies by calling require to do the work.
                                  -        require(include);
                                  -
                                  -        //Pull out the layer dependencies. Do not use the old context
                                  -        //but grab the latest value from inside require() since it was reset
                                  -        //since our last context reference.
                                  -        layer = require._layer;
                                  -        layer.specified = require.s.contexts[require.s.ctxName].specified;
                                  -
                                  -        //Add any other files that did not have an explicit name on them.
                                  -        //These are files that do not call back into require when loaded.
                                  -        for (prop in layer.buildPathMap) {
                                  -            if (layer.buildPathMap.hasOwnProperty(prop)) {
                                  -                url = layer.buildPathMap[prop];
                                  -                //Always store the url to module name mapping for use later,
                                  -                //particularly for anonymous modules and tracking down files that
                                  -                //did not call require.def to define a module
                                  -                layer.buildFileToModule[url] = prop;
                                  -
                                  -                if (!layer.loadedFiles[url]) {
                                  -                    //Do not add plugins to build file paths since they will
                                  -                    //be added later, near the top of the module layer.
                                  -                    if (prop.indexOf("require/") !== 0) {
                                  -                        layer.buildFilePaths.push(url);
                                  -                    }
                                  -                    layer.loadedFiles[url] = true;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Reset config
                                  -        if (module.override) {
                                  -            require(baseConfig);
                                  -        }
                                  -        
                                  -        return layer;
                                  -    };
                                  -
                                  -    /**
                                  -     * Uses the module build config object to create an flattened version
                                  -     * of the module, with deep dependencies included.
                                  -     * 
                                  -     * @param {Object} module the module object from the build config info.
                                  -     *
                                  -     * @param {Object} layer the layer object returned from build.traceDependencies.
                                  -     * 
                                  -     * @param {Object} the build config object.
                                  -     *
                                  -     * @returns {Object} with two properties: "text", the text of the flattened
                                  -     * module, and "buildText", a string of text representing which files were
                                  -     * included in the flattened module text.
                                  -     */
                                  -    build.flattenModule = function (module, layer, config) {
                                  -        var buildFileContents = "", requireContents = "",
                                  -            pluginContents = "", pluginBuildFileContents = "", includeRequire,
                                  -            anonDefRegExp = /(require\s*\.\s*def|define)\s*\(\s*(\[|f|\{)/,
                                  -            prop, path, reqIndex, fileContents, currContents,
                                  -            i, moduleName, specified, deps;
                                  -
                                  -        //Use override settings, particularly for pragmas
                                  -        if (module.override) {
                                  -            config = lang.delegate(config);
                                  -            lang.mixin(config, module.override, true);
                                  -        }
                                  -
                                  -        //Start build output for the module.
                                  -        buildFileContents += "\n" +
                                  -                             (config.dir ? module._buildPath.replace(config.dir, "") : module._buildPath) +
                                  -                             "\n----------------\n";
                                  -
                                  -        //If the file wants require.js added to the module, add it now
                                  -        requireContents = "";
                                  -        pluginContents = "";
                                  -        pluginBuildFileContents = "";
                                  -        includeRequire = false;
                                  -        if ("includeRequire" in module) {
                                  -            includeRequire = module.includeRequire;
                                  -        }
                                  -        if (includeRequire) {
                                  -            requireContents = pragma.process(config.requireUrl, fileUtil.readFile(config.requireUrl), config);
                                  -            buildFileContents += "require.js\n";
                                  -        }
                                  -
                                  -        //Check for any plugins loaded, and hoist to the top, but below
                                  -        //the require() definition.
                                  -        specified = layer.specified;
                                  -        for (prop in specified) {
                                  -            if (specified.hasOwnProperty(prop)) {
                                  -                if (prop.indexOf("require/") === 0) {
                                  -                    path = layer.buildPathMap[prop];
                                  -                    if (path) {
                                  -                        pluginBuildFileContents += path.replace(config.dir, "") + "\n";
                                  -                        pluginContents += pragma.process(path, fileUtil.readFile(path), config);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        if (includeRequire) {
                                  -            //require.js will be included so the plugins will appear right after it.
                                  -            buildFileContents += pluginBuildFileContents;
                                  -        }
                                  -
                                  -        //If there was an existing file with require in it, hoist to the top.
                                  -        if (!includeRequire && layer.existingRequireUrl) {
                                  -            reqIndex = layer.buildFilePaths.indexOf(layer.existingRequireUrl);
                                  -            if (reqIndex !== -1) {
                                  -                layer.buildFilePaths.splice(reqIndex, 1);
                                  -                layer.buildFilePaths.unshift(layer.existingRequireUrl);
                                  -            }
                                  -        }
                                  -
                                  -        //Write the built module to disk, and build up the build output.
                                  -        fileContents = "";
                                  -        for (i = 0; (path = layer.buildFilePaths[i]); i++) {
                                  -            moduleName = layer.buildFileToModule[path];
                                  -
                                  -            //Add the contents but remove any pragmas.
                                  -            currContents = pragma.process(path, fileUtil.readFile(path), config);
                                  -
                                  -            //If anonymous module, insert the module name.
                                  -            currContents = currContents.replace(anonDefRegExp, function (match, callName, suffix) {
                                  -                layer.modulesWithNames[moduleName] = true;
                                  -
                                  -                //Look for CommonJS require calls inside the function if this is
                                  -                //an anonymous define/require.def call that just has a function registered.
                                  -                deps = null;
                                  -                if (suffix.indexOf('f') !== -1) {
                                  -                    deps = parse.getAnonDeps(path, currContents);
                                  -                    if (deps.length) {
                                  -                        deps = deps.map(function (dep) {
                                  -                            return "'" + dep + "'";
                                  -                        });
                                  -                    } else {
                                  -                        deps = null;
                                  -                    }
                                  -                }
                                  -
                                  -                //Adust module name if it is for a plugin
                                  -                if (require.s.contexts._.defPlugin[moduleName]) {
                                  -                    moduleName = require.s.contexts._.defPlugin[moduleName] + '!' + moduleName;
                                  -                    //Mark that it is a module with a name so do not need
                                  -                    //a stub name insertion for it later.
                                  -                    layer.modulesWithNames[moduleName] = true;
                                  -                }
                                  -
                                  -                return "define('" + moduleName + "'," +
                                  -                       (deps ? ('[' + deps.toString() + '],') : '') +
                                  -                       suffix;
                                  -            });
                                  -
                                  -            fileContents += currContents;
                                  -
                                  -            buildFileContents += path.replace(config.dir, "") + "\n";
                                  -            //Some files may not have declared a require module, and if so,
                                  -            //put in a placeholder call so the require does not try to load them
                                  -            //after the module is processed.
                                  -            //If we have a name, but no defined module, then add in the placeholder.
                                  -            if (moduleName && !layer.modulesWithNames[moduleName] && !config.skipModuleInsertion) {
                                  -                fileContents += 'define("' + moduleName + '", function(){});\n';
                                  -            }
                                  -
                                  -            //If we have plugins but are not injecting require.js,
                                  -            //then need to place the plugins after the require definition,
                                  -            //if it was found.
                                  -            if (layer.existingRequireUrl === path && !includeRequire) {
                                  -                fileContents += pluginContents;
                                  -                buildFileContents += pluginBuildFileContents;
                                  -                pluginContents = "";
                                  -            }
                                  -        }
                                  -
                                  -        //Add the require file contents to the head of the file.
                                  -        fileContents = (requireContents ? requireContents + "\n" : "") +
                                  -                       (pluginContents ? pluginContents + "\n" : "") +
                                  -                       fileContents;
                                  -
                                  -        return {
                                  -            text: fileContents,
                                  -            buildText: buildFileContents
                                  -        };
                                  -    };
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commandLine.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commandLine.js
                                  deleted file mode 100644
                                  index e40f93e5..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commandLine.js
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -/**
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint */
                                  -/*global Packages: false */
                                  -"use strict";
                                  -
                                  -var commandLine = {};
                                  -(function () {
                                  -    var runtime = Packages.java.lang.Runtime.getRuntime();
                                  -
                                  -    /**
                                  -     * Executes a command on the command line. May not work right in
                                  -     * Windows environments, except maybe via something like cygwin.
                                  -     * @param {String} command the command to run on the command line.
                                  -     */
                                  -    commandLine.exec = function (command) {
                                  -        var process = runtime.exec(["/bin/sh", "-c", command]);
                                  -        process.waitFor();
                                  -    };
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commonJs.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commonJs.js
                                  deleted file mode 100644
                                  index 7e6c99fb..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/commonJs.js
                                  +++ /dev/null
                                  @@ -1,180 +0,0 @@
                                  -/**
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint plusplus: false, regexp: false */
                                  -/*global Packages: false, logger: false, fileUtil: false */
                                  -"use strict";
                                  -
                                  -var commonJs = {
                                  -    depRegExp: /require\s*\(\s*["']([\w-_\.\/]+)["']\s*\)/g,
                                  -
                                  -    //Set this to false in non-rhino environments. If rhino, then it uses
                                  -    //rhino's decompiler to remove comments before looking for require() calls,
                                  -    //otherwise, it will use a crude regexp approach to remove comments. The
                                  -    //rhino way is more robust, but he regexp is more portable across environments.
                                  -    useRhino: true,
                                  -
                                  -    //Set to false if you do not want this file to log. Useful in environments
                                  -    //like node where you want the work to happen without noise.
                                  -    useLog: true,
                                  -
                                  -    //Set to true to see full converted module contents logged to output.
                                  -    logConverted: false,
                                  -
                                  -    convertDir: function (commonJsPath, savePath, prefix) {
                                  -        //Normalize prefix
                                  -        prefix = prefix ? prefix + "/" : "";
                                  -
                                  -        var fileList, i,
                                  -            jsFileRegExp = /\.js$/,
                                  -            fileName, moduleName, convertedFileName, fileContents;
                                  -
                                  -        //Get list of files to convert.
                                  -        fileList = fileUtil.getFilteredFileList(commonJsPath, /\w/, true);
                                  -        
                                  -        //Normalize on front slashes and make sure the paths do not end in a slash.
                                  -        commonJsPath = commonJsPath.replace(/\\/g, "/");
                                  -        savePath = savePath.replace(/\\/g, "/");
                                  -        if (commonJsPath.charAt(commonJsPath.length - 1) === "/") {
                                  -            commonJsPath = commonJsPath.substring(0, commonJsPath.length - 1);
                                  -        }
                                  -        if (savePath.charAt(savePath.length - 1) === "/") {
                                  -            savePath = savePath.substring(0, savePath.length - 1);
                                  -        }
                                  -
                                  -        //Cycle through all the JS files and convert them.
                                  -        if (!fileList || !fileList.length) {
                                  -            if (commonJsPath === "convert") {
                                  -                //A request just to convert one file.
                                  -                logger.trace('\n\n' + commonJs.convert(savePath, fileUtil.readFile(savePath)));
                                  -            } else {
                                  -                logger.error("No files to convert in directory: " + commonJsPath);
                                  -            }
                                  -        } else {
                                  -            for (i = 0; (fileName = fileList[i]); i++) {
                                  -                convertedFileName = fileName.replace(commonJsPath, savePath);
                                  -
                                  -                //Handle JS files.
                                  -                if (jsFileRegExp.test(fileName)) {
                                  -                    moduleName = fileName.replace(commonJsPath + "/", "").replace(/\.js$/, "");
                                  -        
                                  -                    fileContents = fileUtil.readFile(fileName);
                                  -                    fileContents = commonJs.convert(prefix + moduleName, fileName, fileContents);
                                  -                    fileUtil.saveUtf8File(convertedFileName, fileContents);
                                  -                } else {
                                  -                    //Just copy the file over.
                                  -                    fileUtil.copyFile(fileName, convertedFileName, true);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Removes the comments from a string. Uses a more robust method if
                                  -     * Rhino is available, otherwise a cruder regexp is used. If the regexp
                                  -     * is used, then the contents may not be executable, but hopefully good
                                  -     * enough to use to find require() calls.
                                  -     * 
                                  -     * @param {String} fileContents
                                  -     * @param {String} fileName mostly used for informative reasons if an error.
                                  -     * 
                                  -     * @returns {String} a string of JS with comments removed.
                                  -     */
                                  -    removeComments: function (fileContents, fileName) {
                                  -        var context, script;
                                  -        if (commonJs.useRhino) {
                                  -            context = Packages.org.mozilla.javascript.Context.enter();
                                  -            script = context.compileString(fileContents, fileName, 1, null);
                                  -            return String(context.decompileScript(script, 0));
                                  -        } else {
                                  -            return fileContents.replace(/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg, "");
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Regexp for testing if there is already a require.def call in the file,
                                  -     * in which case do not try to convert it.
                                  -     */
                                  -    defRegExp: /(require\s*\.\s*def|define)\s*\(/,
                                  -
                                  -    /**
                                  -     * Regexp for testing if there is a require([]) or require(function(){})
                                  -     * call, indicating the file is already in requirejs syntax.
                                  -     */
                                  -    rjsRegExp: /require\s*\(\s*(\[|function)/,
                                  -
                                  -    /**
                                  -     * Does the actual file conversion.
                                  -     *
                                  -     * @param {String} moduleName the name of the module to use for the
                                  -     * define() call.
                                  -     * 
                                  -     * @param {String} fileName the name of the file.
                                  -     * 
                                  -     * @param {String} fileContents the contents of a file :)
                                  -     *
                                  -     * @param {Boolean} skipDeps if true, require("") dependencies
                                  -     * will not be searched, but the contents will just be wrapped in the
                                  -     * standard require, exports, module dependencies. Only usable in sync
                                  -     * environments like Node where the require("") calls can be resolved on
                                  -     * the fly.
                                  -     * 
                                  -     * @returns {String} the converted contents
                                  -     */
                                  -    convert: function (moduleName, fileName, fileContents, skipDeps) {
                                  -        //Strip out comments.
                                  -        if (commonJs.useLog) {
                                  -            logger.trace("fileName: " + fileName);
                                  -        }
                                  -        try {
                                  -            var deps = [], depName, match,
                                  -                //Remove comments
                                  -                tempContents = commonJs.removeComments(fileContents, fileName),
                                  -                baseName = moduleName.split("/");
                                  -
                                  -            //First see if the module is not already RequireJS-formatted.
                                  -            if (commonJs.defRegExp.test(tempContents) || commonJs.rjsRegExp.test(tempContents)) {
                                  -                return fileContents;
                                  -            }
                                  -
                                  -            //Set baseName to be one directory higher than moduleName.
                                  -            baseName.pop();
                                  -    
                                  -            //Reset the regexp to start at beginning of file. Do this
                                  -            //since the regexp is reused across files.
                                  -            commonJs.depRegExp.lastIndex = 0;
                                  -
                                  -            if (!skipDeps) {
                                  -                //Find dependencies in the code that was not in comments.
                                  -                while ((match = commonJs.depRegExp.exec(tempContents))) {
                                  -                    depName = match[1];
                                  -                    if (commonJs.useLog) {
                                  -                        logger.trace("  " + depName);
                                  -                    }
                                  -                    if (depName) {
                                  -                        deps.push('"' + depName + '"');
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            //Construct the wrapper boilerplate.
                                  -            fileContents = 'define(["require", "exports", "module"' +
                                  -                   (deps.length ? ', ' + deps.join(",") : '') + '], ' +
                                  -                   'function(require, exports, module) {\n' +
                                  -                   (commonJs.logConverted ? 'global._requirejs_logger.trace("Evaluating module: ' + moduleName + '");\n' : "") +
                                  -                   fileContents +
                                  -                   '\n});\n';
                                  -        } catch (e) {
                                  -            logger.error("COULD NOT CONVERT: " + fileName + ", so skipping it. Error was: " + e);
                                  -            return fileContents;
                                  -        }
                                  -
                                  -        if (commonJs.logConverted) {
                                  -            logger.trace("\nREQUIREJS CONVERTED MODULE: " + moduleName + "\n\n" + fileContents + "\n");
                                  -        }
                                  -        return fileContents;
                                  -    }
                                  -};
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js
                                  deleted file mode 100644
                                  index 5a746eaa..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -/**
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -//Helper functions to deal with file I/O.
                                  -
                                  -/*jslint plusplus: false */
                                  -/*global java: false */
                                  -"use strict";
                                  -
                                  -var fileUtil = {
                                  -    backSlashRegExp: /\\/g,
                                  -
                                  -    getLineSeparator: function () {
                                  -        return java.lang.System.getProperty("line.separator"); //Java String
                                  -    }
                                  -};
                                  -
                                  -/**
                                  - * Gets the absolute file path as a string, normalized
                                  - * to using front slashes for path separators.
                                  - * @param {java.io.File} file
                                  - */
                                  -fileUtil.absPath = function (file) {
                                  -    return (file.getAbsolutePath() + "").replace(fileUtil.backSlashRegExp, "/");
                                  -};
                                  -
                                  -fileUtil.getFilteredFileList = function (/*String*/startDir, /*RegExp*/regExpFilters, /*boolean?*/makeUnixPaths, /*boolean?*/startDirIsJavaObject) {
                                  -	//summary: Recurses startDir and finds matches to the files that match regExpFilters.include
                                  -	//and do not match regExpFilters.exclude. Or just one regexp can be passed in for regExpFilters,
                                  -	//and it will be treated as the "include" case.
                                  -	//Ignores files/directories that start with a period (.).
                                  -	var files = [], topDir, regExpInclude, regExpExclude, dirFileArray,
                                  -            i, file, filePath, ok, dirFiles;
                                  -
                                  -	topDir = startDir;
                                  -	if (!startDirIsJavaObject) {
                                  -		topDir = new java.io.File(startDir);
                                  -	}
                                  -
                                  -	regExpInclude = regExpFilters.include || regExpFilters;
                                  -	regExpExclude = regExpFilters.exclude || null;
                                  -
                                  -	if (topDir.exists()) {
                                  -		dirFileArray = topDir.listFiles();
                                  -		for (i = 0; i < dirFileArray.length; i++) {
                                  -			file = dirFileArray[i];
                                  -			if (file.isFile()) {
                                  -				filePath = file.getPath();
                                  -				if (makeUnixPaths) {
                                  -					//Make sure we have a JS string.
                                  -					filePath = String(filePath);
                                  -					if (filePath.indexOf("/") === -1) {
                                  -						filePath = filePath.replace(/\\/g, "/");
                                  -					}
                                  -				}
                                  -				
                                  -				ok = true;
                                  -				if (regExpInclude) {
                                  -					ok = filePath.match(regExpInclude);
                                  -				}
                                  -				if (ok && regExpExclude) {
                                  -					ok = !filePath.match(regExpExclude);
                                  -				}
                                  -
                                  -				if (ok && !file.getName().match(/^\./)) {
                                  -					files.push(filePath);
                                  -				}
                                  -			} else if (file.isDirectory() && !file.getName().match(/^\./)) {
                                  -				dirFiles = this.getFilteredFileList(file, regExpFilters, makeUnixPaths, true);
                                  -				files.push.apply(files, dirFiles);
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	return files; //Array
                                  -};
                                  -
                                  -
                                  -fileUtil.copyDir = function (/*String*/srcDir, /*String*/destDir, /*RegExp?*/regExpFilter, /*boolean?*/onlyCopyNew) {
                                  -	//summary: copies files from srcDir to destDir using the regExpFilter to determine if the
                                  -	//file should be copied. Returns a list file name strings of the destinations that were copied.
                                  -        regExpFilter |= /\w/;
                                  -
                                  -	var fileNames = fileUtil.getFilteredFileList(srcDir, regExpFilter, true),
                                  -            copiedFiles = [], i, srcFileName, destFileName;
                                  -
                                  -	for (i = 0; i < fileNames.length; i++) {
                                  -		srcFileName = fileNames[i];
                                  -		destFileName = srcFileName.replace(srcDir, destDir);
                                  -
                                  -		if (fileUtil.copyFile(srcFileName, destFileName, onlyCopyNew)) {
                                  -			copiedFiles.push(destFileName);
                                  -		}
                                  -	}
                                  -
                                  -	return copiedFiles.length ? copiedFiles : null; //Array or null
                                  -};
                                  -
                                  -fileUtil.copyFile = function (/*String*/srcFileName, /*String*/destFileName, /*boolean?*/onlyCopyNew) {
                                  -	//summary: copies srcFileName to destFileName. If onlyCopyNew is set, it only copies the file if
                                  -	//srcFileName is newer than destFileName. Returns a boolean indicating if the copy occurred.
                                  -	var destFile = new java.io.File(destFileName), srcFile, parentDir,
                                  -            srcChannel, destChannel;
                                  -
                                  -	//logger.trace("Src filename: " + srcFileName);
                                  -	//logger.trace("Dest filename: " + destFileName);
                                  -
                                  -	//If onlyCopyNew is true, then compare dates and only copy if the src is newer
                                  -	//than dest.
                                  -	if (onlyCopyNew) {
                                  -		srcFile = new java.io.File(srcFileName);
                                  -		if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified()) {
                                  -			return false; //Boolean
                                  -		}
                                  -	}
                                  -
                                  -	//Make sure destination dir exists.
                                  -	parentDir = destFile.getParentFile();
                                  -	if (!parentDir.exists()) {
                                  -		if (!parentDir.mkdirs()) {
                                  -			throw "Could not create directory: " + parentDir.getAbsolutePath();
                                  -		}
                                  -	}
                                  -
                                  -	//Java's version of copy file.
                                  -	srcChannel = new java.io.FileInputStream(srcFileName).getChannel();
                                  -	destChannel = new java.io.FileOutputStream(destFileName).getChannel();
                                  -	destChannel.transferFrom(srcChannel, 0, srcChannel.size());
                                  -	srcChannel.close();
                                  -	destChannel.close();
                                  -	
                                  -	return true; //Boolean
                                  -};
                                  -
                                  -fileUtil.readFile = function (/*String*/path, /*String?*/encoding) {
                                  -	//summary: reads a file and returns a string
                                  -	encoding = encoding || "utf-8";
                                  -	var file = new java.io.File(path),
                                  -            lineSeparator = fileUtil.getLineSeparator(),
                                  -            input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
                                  -            stringBuffer, line;
                                  -	try {
                                  -		stringBuffer = new java.lang.StringBuffer();
                                  -		line = input.readLine();
                                  -
                                  -		// Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
                                  -		// http://www.unicode.org/faq/utf_bom.html
                                  -		
                                  -		// Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
                                  -		// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
                                  -		if (line && line.length() && line.charAt(0) === 0xfeff) {
                                  -			// Eat the BOM, since we've already found the encoding on this file,
                                  -			// and we plan to concatenating this buffer with others; the BOM should
                                  -			// only appear at the top of a file.
                                  -			line = line.substring(1);
                                  -		}
                                  -		while (line !== null) {
                                  -			stringBuffer.append(line);
                                  -			stringBuffer.append(lineSeparator);
                                  -			line = input.readLine();
                                  -		}
                                  -		//Make sure we return a JavaScript string and not a Java string.
                                  -		return String(stringBuffer.toString()); //String
                                  -	} finally {
                                  -		input.close();
                                  -	}
                                  -};
                                  -
                                  -fileUtil.saveUtf8File = function (/*String*/fileName, /*String*/fileContents) {
                                  -	//summary: saves a file using UTF-8 encoding.
                                  -	fileUtil.saveFile(fileName, fileContents, "utf-8");
                                  -};
                                  -
                                  -fileUtil.saveFile = function (/*String*/fileName, /*String*/fileContents, /*String?*/encoding) {
                                  -	//summary: saves a file.
                                  -	var outFile = new java.io.File(fileName), outWriter, parentDir, os;
                                  -	
                                  -	parentDir = outFile.getAbsoluteFile().getParentFile();
                                  -	if (!parentDir.exists()) {
                                  -		if (!parentDir.mkdirs()) {
                                  -			throw "Could not create directory: " + parentDir.getAbsolutePath();
                                  -		}
                                  -	}
                                  -	
                                  -	if (encoding) {
                                  -		outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile), encoding);
                                  -	} else {
                                  -		outWriter = new java.io.OutputStreamWriter(new java.io.FileOutputStream(outFile));
                                  -	}
                                  -
                                  -	os = new java.io.BufferedWriter(outWriter);
                                  -	try {
                                  -	    os.write(fileContents);
                                  -	} finally {
                                  -		os.close();
                                  -	}
                                  -};
                                  -
                                  -fileUtil.deleteFile = function (/*String*/fileName) {
                                  -	//summary: deletes a file or directory if it exists.
                                  -	var file = new java.io.File(fileName), files, i;
                                  -	if (file.exists()) {
                                  -		if (file.isDirectory()) {
                                  -			files = file.listFiles();
                                  -			for (i = 0; i < files.length; i++) {
                                  -				this.deleteFile(files[i]);
                                  -			}
                                  -		}
                                  -		file["delete"]();
                                  -	}
                                  -};
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/lang.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/lang.js
                                  deleted file mode 100644
                                  index 5fe26c61..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/lang.js
                                  +++ /dev/null
                                  @@ -1,44 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint plusplus: false */
                                  -/*global */
                                  -
                                  -"use strict";
                                  -
                                  -var lang = {
                                  -    backSlashRegExp: /\\/g,
                                  -
                                  -    /**
                                  -     * Simple function to mix in properties from source into target,
                                  -     * but only if target does not already have a property of the same name.
                                  -     */
                                  -    mixin: function (target, source, override) {
                                  -        //Use an empty object to avoid other bad JS code that modifies
                                  -        //Object.prototype.
                                  -        var empty = {}, prop;
                                  -        for (prop in source) {
                                  -            if (override || !(prop in target)) {
                                  -                target[prop] = source[prop];
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    delegate: (function () {
                                  -        // boodman/crockford delegation w/ cornford optimization
                                  -        function TMP() {}
                                  -        return function (obj, props) {
                                  -            TMP.prototype = obj;
                                  -            var tmp = new TMP();
                                  -            TMP.prototype = null;
                                  -            if (props) {
                                  -                lang.mixin(tmp, props);
                                  -            }
                                  -            return tmp; // Object
                                  -        };
                                  -    }())
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/logger.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/logger.js
                                  deleted file mode 100644
                                  index e74a7ac5..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/logger.js
                                  +++ /dev/null
                                  @@ -1,45 +0,0 @@
                                  -/**
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -var logger = {
                                  -	TRACE: 0,
                                  -	INFO: 1,
                                  -	WARN: 2,
                                  -	ERROR: 3,
                                  -	level: 0,
                                  -	logPrefix: "",
                                  -
                                  -	trace: function(message){
                                  -		if(this.level <= this.TRACE){
                                  -			this._print(message);
                                  -		}
                                  -	},
                                  -
                                  -	info: function(message){
                                  -		if(this.level <= this.INFO){
                                  -			this._print(message);
                                  -		}
                                  -	},
                                  -
                                  -	warn: function(message){
                                  -		if(this.level <= this.WARN){
                                  -			this._print(message);
                                  -		}
                                  -	},
                                  -
                                  -	error: function(message){
                                  -		if(this.level <= this.ERROR){
                                  -			this._print(message);
                                  -		}
                                  -	},
                                  -
                                  -	_print: function(message){
                                  -		this._sysPrint((this.logPrefix ? (this.logPrefix + " ") : "") + message);
                                  -	},
                                  -
                                  -        _sysPrint: function(message){
                                  -            print(message);
                                  -        }
                                  -}
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/optimize.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/optimize.js
                                  deleted file mode 100644
                                  index 69eee0ef..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/optimize.js
                                  +++ /dev/null
                                  @@ -1,377 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint plusplus: false, nomen: false, regexp: false */
                                  -/*global require: false, java: false, Packages: false, logger: false, fileUtil: false,
                                  -  readFile: false, lang: false */
                                  -
                                  -"use strict";
                                  -
                                  -var optimize;
                                  -
                                  -(function () {
                                  -    var JSSourceFilefromCode,
                                  -        textDepRegExp = /["'](text)\!([^"']+)["']/g,
                                  -        relativeDefRegExp = /(require\s*\.\s*def|define)\s*\(\s*['"]([^'"]+)['"]/g,
                                  -        cssImportRegExp = /\@import\s+(url\()?\s*([^);]+)\s*(\))?([\w, ]*)(;)?/g,
                                  -        cjsRequireRegExp = /require\s*\(\s*$/,
                                  -        cssUrlRegExp = /\url\(\s*([^\)]+)\s*\)?/g;
                                  -
                                  -
                                  -    //Bind to Closure compiler, but if it is not available, do not sweat it.
                                  -    try {
                                  -        JSSourceFilefromCode = java.lang.Class.forName('com.google.javascript.jscomp.JSSourceFile').getMethod('fromCode', [java.lang.String, java.lang.String]);
                                  -    } catch (e) {}
                                  -
                                  -    //Helper for closure compiler, because of weird Java-JavaScript interactions.
                                  -    function closurefromCode(filename, content) {
                                  -        return JSSourceFilefromCode.invoke(null, [filename, content]);
                                  -    }
                                  -
                                  -    //Adds escape sequences for non-visual characters, double quote and backslash
                                  -    //and surrounds with double quotes to form a valid string literal.
                                  -    //Assumes the string will be in a single quote string value.
                                  -    function jsEscape(text) {
                                  -        return text.replace(/(['\\])/g, '\\$1')
                                  -            .replace(/[\f]/g, "\\f")
                                  -            .replace(/[\b]/g, "\\b")
                                  -            .replace(/[\n]/g, "\\n")
                                  -            .replace(/[\t]/g, "\\t")
                                  -            .replace(/[\r]/g, "\\r");
                                  -    }
                                  -
                                  -    /**
                                  -     * If an URL from a CSS url value contains start/end quotes, remove them.
                                  -     * This is not done in the regexp, since my regexp fu is not that strong,
                                  -     * and the CSS spec allows for ' and " in the URL if they are backslash escaped.
                                  -     * @param {String} url
                                  -     */
                                  -    function cleanCssUrlQuotes(url) {
                                  -        //Make sure we are not ending in whitespace.
                                  -        //Not very confident of the css regexps above that there will not be ending
                                  -        //whitespace.
                                  -        url = url.replace(/\s+$/, "");
                                  -
                                  -        if (url.charAt(0) === "'" || url.charAt(0) === "\"") {
                                  -            url = url.substring(1, url.length - 1);
                                  -        }
                                  -
                                  -        return url;
                                  -    }
                                  -
                                  -    /**
                                  -     * Inlines nested stylesheets that have @import calls in them.
                                  -     * @param {String} fileName
                                  -     * @param {String} fileContents
                                  -     * @param {String} [cssImportIgnore]
                                  -     */
                                  -    function flattenCss(fileName, fileContents, cssImportIgnore) {
                                  -        //Find the last slash in the name.
                                  -        fileName = fileName.replace(lang.backSlashRegExp, "/");
                                  -        var endIndex = fileName.lastIndexOf("/"),
                                  -            //Make a file path based on the last slash.
                                  -            //If no slash, so must be just a file name. Use empty string then.
                                  -            filePath = (endIndex !== -1) ? fileName.substring(0, endIndex + 1) : "";
                                  -
                                  -        //Make sure we have a delimited ignore list to make matching faster
                                  -        if (cssImportIgnore && cssImportIgnore.charAt(cssImportIgnore.length - 1) !== ",") {
                                  -            cssImportIgnore += ",";
                                  -        }
                                  -
                                  -        return fileContents.replace(cssImportRegExp, function (fullMatch, urlStart, importFileName, urlEnd, mediaTypes) {
                                  -            //Only process media type "all" or empty media type rules.
                                  -            if (mediaTypes && ((mediaTypes.replace(/^\s\s*/, '').replace(/\s\s*$/, '')) !== "all")) {
                                  -                return fullMatch;
                                  -            }
                                  -    
                                  -            importFileName = cleanCssUrlQuotes(importFileName);
                                  -            
                                  -            //Ignore the file import if it is part of an ignore list.
                                  -            if (cssImportIgnore && cssImportIgnore.indexOf(importFileName + ",") !== -1) {
                                  -                return fullMatch;
                                  -            }
                                  -
                                  -            //Make sure we have a unix path for the rest of the operation.
                                  -            importFileName = importFileName.replace(lang.backSlashRegExp, "/");
                                  -    
                                  -            try {
                                  -                //if a relative path, then tack on the filePath.
                                  -                //If it is not a relative path, then the readFile below will fail,
                                  -                //and we will just skip that import.
                                  -                var fullImportFileName = importFileName.charAt(0) === "/" ? importFileName : filePath + importFileName,
                                  -                    importContents = fileUtil.readFile(fullImportFileName), i,
                                  -                    importEndIndex, importPath, fixedUrlMatch, colonIndex, parts;
                                  -
                                  -                //Make sure to flatten any nested imports.
                                  -                importContents = flattenCss(fullImportFileName, importContents);
                                  -
                                  -                //Make the full import path
                                  -                importEndIndex = importFileName.lastIndexOf("/");
                                  -
                                  -                //Make a file path based on the last slash.
                                  -                //If no slash, so must be just a file name. Use empty string then.
                                  -                importPath = (importEndIndex !== -1) ? importFileName.substring(0, importEndIndex + 1) : "";
                                  -
                                  -                //Modify URL paths to match the path represented by this file.
                                  -                importContents = importContents.replace(cssUrlRegExp, function (fullMatch, urlMatch) {
                                  -                    fixedUrlMatch = cleanCssUrlQuotes(urlMatch);
                                  -                    fixedUrlMatch = fixedUrlMatch.replace(lang.backSlashRegExp, "/");
                                  -    
                                  -                    //Only do the work for relative URLs. Skip things that start with / or have
                                  -                    //a protocol.
                                  -                    colonIndex = fixedUrlMatch.indexOf(":");
                                  -                    if (fixedUrlMatch.charAt(0) !== "/" && (colonIndex === -1 || colonIndex > fixedUrlMatch.indexOf("/"))) {
                                  -                        //It is a relative URL, tack on the path prefix
                                  -                        urlMatch = importPath + fixedUrlMatch;
                                  -                    } else {
                                  -                        logger.trace(importFileName + "\n  URL not a relative URL, skipping: " + urlMatch);
                                  -                    }
                                  -
                                  -                    //Collapse .. and .
                                  -                    parts = urlMatch.split("/");
                                  -                    for (i = parts.length - 1; i > 0; i--) {
                                  -                        if (parts[i] === ".") {
                                  -                            parts.splice(i, 1);
                                  -                        } else if (parts[i] === "..") {
                                  -                            if (i !== 0 && parts[i - 1] !== "..") {
                                  -                                parts.splice(i - 1, 2);
                                  -                                i -= 1;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -    
                                  -                    return "url(" + parts.join("/") + ")";
                                  -                });
                                  -    
                                  -                return importContents;
                                  -            } catch (e) {
                                  -                logger.trace(fileName + "\n  Cannot inline css import, skipping: " + importFileName);
                                  -                return fullMatch;
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    optimize = {
                                  -        closure: function (fileName, fileContents, keepLines) {
                                  -            var jscomp = Packages.com.google.javascript.jscomp,
                                  -                flags = Packages.com.google.common.flags,
                                  -                //Fake extern
                                  -                externSourceFile = closurefromCode("fakeextern.js", " "),
                                  -                //Set up source input
                                  -                jsSourceFile = closurefromCode(String(fileName), String(fileContents)),
                                  -                options, FLAG_compilation_level, compiler,
                                  -                Compiler = Packages.com.google.javascript.jscomp.Compiler;
                                  -
                                  -            logger.trace("Minifying file: " + fileName);
                                  -
                                  -            //Set up options
                                  -            options = new jscomp.CompilerOptions();
                                  -            options.prettyPrint = keepLines;
                                  -
                                  -            FLAG_compilation_level = flags.Flag.value(jscomp.CompilationLevel.SIMPLE_OPTIMIZATIONS);
                                  -            FLAG_compilation_level.get().setOptionsForCompilationLevel(options);
                                  -
                                  -            //Trigger the compiler
                                  -            Compiler.setLoggingLevel(Packages.java.util.logging.Level.WARNING);
                                  -            compiler = new Compiler();
                                  -            compiler.compile(externSourceFile, jsSourceFile, options);
                                  -            return compiler.toSource();  
                                  -        },
                                  -    
                                  -        //Inlines text! dependencies.
                                  -        inlineText: function (fileName, fileContents) {
                                  -            return fileContents.replace(textDepRegExp, function (match, prefix, dep, offset) {
                                  -                var parts, modName, ext, strip, content, normalizedName, index,
                                  -                    defSegment, defStart, defMatch, tempMatch, defName, textPath;
                                  -
                                  -                //Ignore inlining of text plugin calls that are inside the
                                  -                //CommonJS convenience wrapper define(function (require,..))
                                  -                //In those cases it will be require("text!..."), so look to see
                                  -                //if that text precedes the match.
                                  -                defStart = offset - 20;
                                  -                if (defStart < 0) {
                                  -                    defStart = 0;
                                  -                }
                                  -
                                  -                defSegment = fileContents.substring(defStart, offset);
                                  -                if (cjsRequireRegExp.test(defSegment)) {
                                  -                    return match;
                                  -                }
                                  -
                                  -                parts = dep.split("!");
                                  -                modName = parts[0];
                                  -                ext = "";
                                  -                strip = parts[1];
                                  -                content = parts[2];
                                  -
                                  -                //Extension is part of modName
                                  -                index = modName.lastIndexOf(".");
                                  -                if (index !== -1) {
                                  -                    ext = modName.substring(index + 1, modName.length);
                                  -                    modName = modName.substring(0, index);
                                  -                }
                                  -
                                  -                //Adjust the text path to be a full name, not a relative
                                  -                //one, if needed.
                                  -                normalizedName = modName;
                                  -                if (modName.charAt(0) === ".") {
                                  -                    //Need to backtrack an arbitrary amount in the file
                                  -                    //to find the require.def call
                                  -                    //that includes this relative name, to find what path to use
                                  -                    //for the relative part.
                                  -                    defStart = offset - 1000;
                                  -                    if (defStart < 0) {
                                  -                        defStart = 0;
                                  -                    }
                                  -                    defSegment = fileContents.substring(defStart, offset);
                                  -
                                  -                    //Take the last match, the one closest to current text! string.
                                  -                    relativeDefRegExp.lastIndex = 0;
                                  -                    while ((tempMatch = relativeDefRegExp.exec(defSegment)) !== null) {
                                  -                        defMatch = tempMatch;
                                  -                    }
                                  -
                                  -                    if (defMatch) {
                                  -                        //Take the last match, the one closest to current text! string.
                                  -                        defName = defMatch[2];
                                  -
                                  -                        normalizedName = require.normalizeName(modName, defName, require.s.contexts._);
                                  -                        textPath = require.nameToUrl(normalizedName, "." + ext, require.s.ctxName);
                                  -                    } else {
                                  -                        //An anonymous module, and not part of a built layer
                                  -                        //that already has injected names. Use the fileName instead.
                                  -                        textPath = fileName.split('/');
                                  -                        //Pop off the file name, so that there are just directories.
                                  -                        textPath.pop();
                                  -                        textPath = textPath.join('/') + '/' + modName + "." + ext;
                                  -                    }
                                  -                }
                                  -
                                  -                if (strip !== "strip") {
                                  -                    content = strip;
                                  -                    strip = null;
                                  -                }
                                  -
                                  -                if (content) {
                                  -                    //Already an inlined resource, return.
                                  -                    return match;
                                  -                } else {
                                  -                    content = readFile(textPath);
                                  -                    if (strip) {
                                  -                        content = require.textStrip(content);
                                  -                    }
                                  -                    return "'" + prefix  +
                                  -                           "!" + modName +
                                  -                           (ext ? "." + ext : "") +
                                  -                           (strip ? "!strip" : "") +
                                  -                           "!" + jsEscape(content) + "'";
                                  -                }
                                  -            });
                                  -        },
                                  -
                                  -        /**
                                  -         * Optimizes a file that contains JavaScript content. It will inline
                                  -         * text plugin files and run it through Google Closure Compiler
                                  -         * minification, if the config options specify it.
                                  -         *
                                  -         * @param {String} fileName the name of the file to optimize
                                  -         * @param {String} outFileName the name of the file to use for the
                                  -         * saved optimized content.
                                  -         * @param {Object} config the build config object.
                                  -         */
                                  -        jsFile: function (fileName, outFileName, config) {
                                  -            var doClosure = (config.optimize + "").indexOf("closure") === 0,
                                  -                fileContents;
                                  -
                                  -            if (config.inlineText && !optimize.textLoaded) {
                                  -                //Make sure text extension is loaded.
                                  -                require(["require/text"]);
                                  -                optimize.textLoaded = true;
                                  -            }
                                  -
                                  -            fileContents = fileUtil.readFile(fileName);
                                  -
                                  -            //Inline text files.
                                  -            if (config.inlineText) {
                                  -                fileContents = optimize.inlineText(fileName, fileContents);
                                  -            }
                                  -
                                  -            //Optimize the JS files if asked.
                                  -            if (doClosure) {
                                  -                fileContents = optimize.closure(fileName,
                                  -                                               fileContents,
                                  -                                               (config.optimize.indexOf(".keepLines") !== -1));
                                  -            }
                                  -
                                  -            fileUtil.saveUtf8File(outFileName, fileContents);
                                  -        },
                                  -
                                  -        /**
                                  -         * Optimizes one CSS file, inlining @import calls, stripping comments, and
                                  -         * optionally removes line returns.
                                  -         * @param {String} fileName the path to the CSS file to optimize
                                  -         * @param {String} outFileName the path to save the optimized file.
                                  -         * @param {Object} config the config object with the optimizeCss and
                                  -         * cssImportIgnore options.
                                  -         */
                                  -        cssFile: function (fileName, outFileName, config) {
                                  -            //Read in the file. Make sure we have a JS string.
                                  -            var originalFileContents = fileUtil.readFile(fileName),
                                  -                fileContents = flattenCss(fileName, originalFileContents, config.cssImportIgnore),
                                  -                startIndex, endIndex;
                                  -
                                  -            //Do comment removal.
                                  -            try {
                                  -                startIndex = -1;
                                  -                //Get rid of comments.
                                  -                while ((startIndex = fileContents.indexOf("/*")) !== -1) {
                                  -                    endIndex = fileContents.indexOf("*/", startIndex + 2);
                                  -                    if (endIndex === -1) {
                                  -                        throw "Improper comment in CSS file: " + fileName;
                                  -                    }
                                  -                    fileContents = fileContents.substring(0, startIndex) + fileContents.substring(endIndex + 2, fileContents.length);
                                  -                }
                                  -                //Get rid of newlines.
                                  -                if (config.optimizeCss.indexOf(".keepLines") === -1) {
                                  -                    fileContents = fileContents.replace(/[\r\n]/g, "");
                                  -                    fileContents = fileContents.replace(/\s+/g, " ");
                                  -                    fileContents = fileContents.replace(/\{\s/g, "{");
                                  -                    fileContents = fileContents.replace(/\s\}/g, "}");
                                  -                } else {
                                  -                    //Remove multiple empty lines.
                                  -                    fileContents = fileContents.replace(/(\r\n)+/g, "\r\n");
                                  -                    fileContents = fileContents.replace(/(\n)+/g, "\n");
                                  -                }
                                  -            } catch (e) {
                                  -                fileContents = originalFileContents;
                                  -                logger.error("Could not optimized CSS file: " + fileName + ", error: " + e);
                                  -            }
                                  -
                                  -            fileUtil.saveUtf8File(outFileName, fileContents);
                                  -        },
                                  -
                                  -        /**
                                  -         * Optimizes CSS files, inlining @import calls, stripping comments, and
                                  -         * optionally removes line returns.
                                  -         * @param {String} startDir the path to the top level directory
                                  -         * @param {Object} config the config object with the optimizeCss and
                                  -         * cssImportIgnore options.
                                  -         */
                                  -        css: function (startDir, config) {
                                  -            if (config.optimizeCss.indexOf("standard") !== -1) {
                                  -                var i, fileName, startIndex, endIndex, originalFileContents, fileContents,
                                  -                    fileList = fileUtil.getFilteredFileList(startDir, /\.css$/, true);
                                  -                if (fileList) {
                                  -                    for (i = 0; i < fileList.length; i++) {
                                  -                        fileName = fileList[i];
                                  -                        logger.trace("Optimizing (" + config.optimizeCss + ") CSS file: " + fileName);
                                  -                        optimize.cssFile(fileName, fileName, config);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/parse.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/parse.js
                                  deleted file mode 100644
                                  index d06e013e..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/parse.js
                                  +++ /dev/null
                                  @@ -1,399 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*
                                  - * Java 6 is required.
                                  - */
                                  -
                                  -/*jslint plusplus: false */
                                  -/*global java: false, Packages: false, load: false */
                                  -
                                  -"use strict";
                                  -
                                  -var parse;
                                  -(function () {
                                  -    //fileContents = 'require.def("foo", ["one", \n//This is a comment\n"two",\n/*Another comment*/"three"], {});',
                                  -    //fileContents = 'require.def("foo", {one: "two"});',
                                  -    var jscomp = Packages.com.google.javascript.jscomp,
                                  -        compiler = new jscomp.Compiler(),
                                  -
                                  -        //Values taken from com.google.javascript.rhino.Token,
                                  -        //but duplicated here to avoid weird Java-to-JS transforms.
                                  -        GETPROP = 33,
                                  -        CALL = 37,
                                  -        NAME = 38,
                                  -        STRING = 40,
                                  -        ARRAYLIT = 63,
                                  -        OBJECTLIT = 64,
                                  -        ASSIGN = 86,
                                  -        FUNCTION = 105,
                                  -        EXPR_RESULT = 130,
                                  -
                                  -        //Oh Java, you rascal.
                                  -        JSSourceFilefromCode = java.lang.Class.forName('com.google.javascript.jscomp.JSSourceFile').getMethod('fromCode', [java.lang.String, java.lang.String]);
                                  -
                                  -    //Helper for closureOptimize, because of weird Java-JavaScript interactions.
                                  -    function closurefromCode(filename, content) {
                                  -        return JSSourceFilefromCode.invoke(null, [filename, content]);
                                  -    }
                                  -
                                  -    /**
                                  -     * Calls node.getString() but makes sure a JS string is returned
                                  -     */
                                  -    function nodeString(node) {
                                  -        return String(node.getString());
                                  -    }
                                  -
                                  -    /**
                                  -     * Calls compiler.parse, and if any errors, throws.
                                  -     */
                                  -    function compilerParse(jsSourceFile, fileName) {
                                  -        var result = compiler.parse(jsSourceFile),
                                  -            errorManager = compiler.getErrorManager(),
                                  -            errorMsg = '', errors, i;
                                  -
                                  -        if (errorManager.getErrorCount() > 0) {
                                  -            errorMsg += 'ERROR(S) in file: ' + fileName + ':\n';
                                  -            errors = errorManager.getErrors();
                                  -            for (i = 0; i < errors.length; i++) {
                                  -                errorMsg += errors[i].toString() + '\n';
                                  -            }
                                  -            throw new Error(errorMsg);
                                  -        }
                                  -
                                  -        return result;
                                  -    }
                                  -
                                  -    /**
                                  -     * Validates a node as being an object literal (like for i18n bundles)
                                  -     * or an array literal with just string members.
                                  -     * This function does not need to worry about comments, they are not
                                  -     * present in this AST.
                                  -     */
                                  -    function validateDeps(node) {
                                  -        var type = node.getType(), i, dep;
                                  -
                                  -        if (type === OBJECTLIT || type === FUNCTION) {
                                  -            return true;
                                  -        }
                                  -
                                  -        //Dependencies can be an object literal or an array. 
                                  -        if (type !== ARRAYLIT) {
                                  -            return false;
                                  -        }
                                  -
                                  -        for (i = 0; (dep = node.getChildAtIndex(i)); i++) {
                                  -            if (dep.getType() !== STRING) {
                                  -                return false;
                                  -            }
                                  -        }
                                  -        return true;
                                  -    }
                                  -
                                  -    /**
                                  -     * Main parse function. Returns a string of any valid require or define/require.def
                                  -     * calls as part of one JavaScript source string.
                                  -     * @param {String} fileName
                                  -     * @param {String} fileContents
                                  -     * @returns {String} JS source string or null, if no require or define/require.def
                                  -     * calls are found.
                                  -     */
                                  -    parse = function (fileName, fileContents) {
                                  -        //Set up source input
                                  -        var matches = [], result = null,
                                  -            jsSourceFile = closurefromCode(String(fileName), String(fileContents)),
                                  -            astRoot = compilerParse(jsSourceFile, fileName);
                                  -
                                  -        parse.recurse(astRoot, matches);
                                  -
                                  -        if (matches.length) {
                                  -            result = matches.join("\n");
                                  -        }
                                  -
                                  -        return result;
                                  -    };
                                  -
                                  -    /**
                                  -     * Handles parsing a file recursively for require calls.
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * @param {Array} matches where to store the string matches
                                  -     */
                                  -    parse.recurse = function (parentNode, matches) {
                                  -        var i, node, parsed;
                                  -        for (i = 0; (node = parentNode.getChildAtIndex(i)); i++) {
                                  -            parsed = parse.parseNode(node);
                                  -            if (parsed) {
                                  -                matches.push(parsed);
                                  -            }
                                  -            parse.recurse(node, matches);
                                  -        }        
                                  -    };
                                  -
                                  -    /**
                                  -     * Determines if the file defines require().
                                  -     * @param {String} fileName
                                  -     * @param {String} fileContents
                                  -     * @returns {Boolean}
                                  -     */
                                  -    parse.definesRequire = function (fileName, fileContents) {
                                  -        var jsSourceFile = closurefromCode(String(fileName), String(fileContents)),
                                  -            astRoot = compilerParse(jsSourceFile, fileName);
                                  -
                                  -        return parse.nodeHasRequire(astRoot);
                                  -    };
                                  -
                                  -    /**
                                  -     * Finds require("") calls inside a CommonJS anonymous module wrapped in a
                                  -     * define/require.def(function(require, exports, module){}) wrapper. These dependencies
                                  -     * will be added to a modified define() call that lists the dependencies
                                  -     * on the outside of the function.
                                  -     * @param {String} fileName
                                  -     * @param {String} fileContents
                                  -     * @returns {Array} an array of module names that are dependencies. Always
                                  -     * returns an array, but could be of length zero.
                                  -     */
                                  -    parse.getAnonDeps = function (fileName, fileContents) {
                                  -        var jsSourceFile = closurefromCode(String(fileName), String(fileContents)),
                                  -            astRoot = compilerParse(jsSourceFile, fileName),
                                  -            deps = [],
                                  -            defFunc = parse.findAnonRequireDefCallback(astRoot);
                                  -        
                                  -        //Now look inside the def call's function for require calls.
                                  -        if (defFunc) {
                                  -            parse.findRequireDepNames(defFunc, deps);
                                  -
                                  -            //If no deps, still add the standard CommonJS require, exports, module,
                                  -            //in that order, to the deps.
                                  -            deps = ["require", "exports", "module"].concat(deps);
                                  -        }
                                  -
                                  -        return deps;
                                  -    };
                                  -
                                  -    /**
                                  -     * Finds the function in require.def(function (require, exports, module){});
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * @returns {Boolean}
                                  -     */
                                  -
                                  -    parse.findAnonRequireDefCallback = function (node) {
                                  -        var methodName, func, callback, i, n;
                                  -
                                  -        if (node.getType() === GETPROP &&
                                  -            node.getFirstChild().getType() === NAME &&
                                  -            nodeString(node.getFirstChild()) === "require") {
                                  -
                                  -            methodName = nodeString(node.getChildAtIndex(1));
                                  -            if (methodName === "def") {
                                  -                func = node.getLastSibling();
                                  -                if (func.getType() === FUNCTION) {
                                  -                    //Bingo.
                                  -                    return func;
                                  -                }
                                  -            }
                                  -        } else if (node.getType() === EXPR_RESULT &&
                                  -            node.getFirstChild().getType() === CALL &&
                                  -            node.getFirstChild().getFirstChild().getType() === NAME &&
                                  -            nodeString(node.getFirstChild().getFirstChild()) === "define") {
                                  -
                                  -            func = node.getFirstChild().getFirstChild().getLastSibling();
                                  -            if (func.getType() === FUNCTION) {
                                  -                //Bingo.
                                  -                return func;
                                  -            }
                                  -        }
                                  -
                                  -        //Check child nodes
                                  -        for (i = 0; (n = node.getChildAtIndex(i)); i++) {
                                  -            if ((callback = parse.findAnonRequireDefCallback(n))) {
                                  -                return callback;
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    };
                                  -
                                  -    parse.findRequireDepNames = function (node, deps) {
                                  -        var moduleName, i, n;
                                  -
                                  -        if (node.getType() === CALL) {
                                  -            if (node.getFirstChild().getType() === NAME &&
                                  -                nodeString(node.getFirstChild()) === "require") {
                                  -
                                  -                //It is a plain require() call.
                                  -                moduleName = node.getChildAtIndex(1);
                                  -                if (moduleName.getType() === STRING) {
                                  -                    deps.push(nodeString(moduleName));
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Check child nodes
                                  -        for (i = 0; (n = node.getChildAtIndex(i)); i++) {
                                  -            parse.findRequireDepNames(n, deps);
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Determines if a given node contains a require() definition.
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * @returns {Boolean}
                                  -     */
                                  -    parse.nodeHasRequire = function (node) {
                                  -        if (parse.isRequireNode(node)) {
                                  -            return true;
                                  -        }
                                  -
                                  -        for (var i = 0, n; (n = node.getChildAtIndex(i)); i++) {
                                  -            if (parse.nodeHasRequire(n)) {
                                  -                return true;
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    };
                                  -
                                  -    /**
                                  -     * Is the given node the actual definition of require()
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * @returns {Boolean}
                                  -     */
                                  -    parse.isRequireNode = function (node) {
                                  -        //Actually look for the require.s = assignment, since
                                  -        //that is more indicative of RequireJS vs a plain require definition.
                                  -        var prop, name, s;
                                  -        if (node.getType() === ASSIGN) {
                                  -            prop = node.getFirstChild();
                                  -            if (prop.getType() === GETPROP) {
                                  -                name = prop.getFirstChild();
                                  -                if (name.getType() === NAME) {
                                  -                    if (nodeString(name) === "require") {
                                  -                        s = prop.getChildAtIndex(1);
                                  -                        if (s && s.getType() === STRING &&
                                  -                            nodeString(s) === "s") {
                                  -                            return true;
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        return false;
                                  -    };
                                  -
                                  -    /**
                                  -     * Convert a require/require.def/define call to a string if it is a valid
                                  -     * call via static analysis of dependencies.
                                  -     * @param {Packages.com.google.javascript.rhino.Node} the call node
                                  -     * @param {Packages.com.google.javascript.rhino.Node} the name node inside the call
                                  -     * @param {Packages.com.google.javascript.rhino.Node} the deps node inside the call
                                  -     */
                                  -    parse.callToString = function (call, name, deps) {
                                  -        //If name is an array, it means it is an anonymous module,
                                  -        //so adjust args appropriately. An anonymous module could
                                  -        //have a FUNCTION as the name type, but just ignore those
                                  -        //since we just want to find dependencies.
                                  -        //TODO: CHANGE THIS if/when support using a tostring
                                  -        //on function to find CommonJS dependencies.
                                  -        if (name.getType() === ARRAYLIT) {
                                  -            deps = name;
                                  -        }
                                  -
                                  -        if (deps && !validateDeps(deps)) {
                                  -            return null;
                                  -        }
                                  -
                                  -        return parse.nodeToString(call);
                                  -    };
                                  -
                                  -    /**
                                  -     * Determines if a specific node is a valid require or define/require.def call.
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * 
                                  -     * @returns {String} a JS source string with the valid require/define call.
                                  -     * Otherwise null.
                                  -     */
                                  -    parse.parseNode = function (node) {
                                  -        var call, methodName, targetName, name, deps, callChildCount;
                                  -
                                  -        if (node.getType() === EXPR_RESULT && node.getFirstChild().getType() === CALL) {
                                  -            call = node.getFirstChild();
                                  -            
                                  -            if (call.getFirstChild().getType() === NAME &&
                                  -                nodeString(call.getFirstChild()) === "require") {
                                  -
                                  -                //It is a plain require() call.
                                  -                deps = call.getChildAtIndex(1);
                                  -                if (!validateDeps(deps)) {
                                  -                    return null;
                                  -                }
                                  -                return parse.nodeToString(call);
                                  -
                                  -            } else if (call.getType() === CALL &&
                                  -                call.getFirstChild().getType() === NAME &&
                                  -                nodeString(call.getFirstChild()) === "define") {
                                  -
                                  -                //A define call
                                  -                name = call.getChildAtIndex(1);
                                  -                deps = call.getChildAtIndex(2);
                                  -                return parse.callToString(call, name, deps);
                                  -
                                  -            } else if (call.getFirstChild().getType() === GETPROP &&
                                  -                call.getFirstChild().getFirstChild().getType() === NAME &&
                                  -                nodeString(call.getFirstChild().getFirstChild()) === "require") {
                                  -
                                  -                //Possibly a require.def/require.modify call
                                  -
                                  -                methodName = nodeString(call.getChildAtIndex(0).getChildAtIndex(1));
                                  -                if (methodName === "def") {
                                  -
                                  -                    //A require.def() call
                                  -                    name = call.getChildAtIndex(1);
                                  -                    deps = call.getChildAtIndex(2);
                                  -
                                  -                    return parse.callToString(call, name, deps);
                                  -                } else if (methodName === "modify") {
                                  -
                                  -                    //A require.modify() call
                                  -                    callChildCount = call.getChildCount();
                                  -                    if (callChildCount > 0) {
                                  -                        targetName = call.getChildAtIndex(1);
                                  -                    }
                                  -                    if (callChildCount > 1) {
                                  -                        name = call.getChildAtIndex(2);
                                  -                    }
                                  -                    if (callChildCount > 2) {
                                  -                        deps = call.getChildAtIndex(3);
                                  -                    }
                                  -
                                  -                    //Validate def name as a string
                                  -                    if (!targetName || targetName.getType() !== STRING || !name || name.getType() !== STRING) {
                                  -                        return null;
                                  -                    }
                                  -                    if (!validateDeps(deps)) {
                                  -                        return null;
                                  -                    }
                                  -
                                  -                    return parse.nodeToString(call);
                                  -
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    };
                                  -
                                  -    /**
                                  -     * Converts an AST node into a JS source string. Does not maintain formatting
                                  -     * or even comments from original source, just returns valid JS source.
                                  -     * @param {Packages.com.google.javascript.rhino.Node} node
                                  -     * @returns {String} a JS source string.
                                  -     */
                                  -    parse.nodeToString = function (node) {
                                  -        var codeBuilder = new jscomp.Compiler.CodeBuilder();
                                  -        compiler.toSource(codeBuilder, 1, node);
                                  -        return String(codeBuilder.toString());
                                  -    };
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/pragma.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/pragma.js
                                  deleted file mode 100644
                                  index ec6f827b..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/pragma.js
                                  +++ /dev/null
                                  @@ -1,107 +0,0 @@
                                  -/**
                                  - * @license Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -
                                  -/*jslint regexp: false */
                                  -/*global  */
                                  -
                                  -"use strict";
                                  -
                                  -var pragma = {
                                  -    conditionalRegExp: /(exclude|include)Start\s*\(\s*["'](\w+)["']\s*,(.*)\)/,
                                  -    useStrictRegExp: /['"]use strict['"];/g,
                                  -
                                  -    removeStrict: function (contents, config) {
                                  -        return config.useStrict ? contents : contents.replace(pragma.useStrictRegExp, '');
                                  -    },
                                  -
                                  -    /**
                                  -     * processes the fileContents for some //>> conditional statements
                                  -     */
                                  -    process: function (fileName, fileContents, config) {
                                  -        /*jslint evil: true */
                                  -        var foundIndex = -1, startIndex = 0, lineEndIndex, conditionLine,
                                  -            matches, type, marker, condition, isTrue, endRegExp, endMatches,
                                  -            endMarkerIndex, shouldInclude, startLength, pragmas = config.pragmas,
                                  -            //Legacy arg defined to help in dojo conversion script. Remove later
                                  -            //when dojo no longer needs conversion:
                                  -            kwArgs = {
                                  -                profileProperties: {
                                  -                    hostenvType: "browser"
                                  -                }
                                  -            };
                                  -
                                  -        //If pragma work is not desired, skip it.
                                  -        if (config.skipPragmas) {
                                  -            return pragma.removeStrict(fileContents, config);
                                  -        }
                                  -
                                  -        while ((foundIndex = fileContents.indexOf("//>>", startIndex)) !== -1) {
                                  -            //Found a conditional. Get the conditional line.
                                  -            lineEndIndex = fileContents.indexOf("\n", foundIndex);
                                  -            if (lineEndIndex === -1) {
                                  -                lineEndIndex = fileContents.length - 1;
                                  -            }
                                  -    
                                  -            //Increment startIndex past the line so the next conditional search can be done.
                                  -            startIndex = lineEndIndex + 1;
                                  -    
                                  -            //Break apart the conditional.
                                  -            conditionLine = fileContents.substring(foundIndex, lineEndIndex + 1);
                                  -            matches = conditionLine.match(pragma.conditionalRegExp);
                                  -            if (matches) {
                                  -                type = matches[1];
                                  -                marker = matches[2];
                                  -                condition = matches[3];
                                  -                isTrue = false;
                                  -                //See if the condition is true.
                                  -                try {
                                  -                    isTrue = !!eval("(" + condition + ")");
                                  -                } catch (e) {
                                  -                    throw "Error in file: " +
                                  -                           fileName +
                                  -                           ". Conditional comment: " +
                                  -                           conditionLine +
                                  -                           " failed with this error: " + e;
                                  -                }
                                  -            
                                  -                //Find the endpoint marker.
                                  -                endRegExp = new RegExp('\\/\\/\\>\\>\\s*' + type + 'End\\(\\s*[\'"]' + marker + '[\'"]\\s*\\)', "g");
                                  -                endMatches = endRegExp.exec(fileContents.substring(startIndex, fileContents.length));
                                  -                if (endMatches) {
                                  -                    endMarkerIndex = startIndex + endRegExp.lastIndex - endMatches[0].length;
                                  -                    
                                  -                    //Find the next line return based on the match position.
                                  -                    lineEndIndex = fileContents.indexOf("\n", endMarkerIndex);
                                  -                    if (lineEndIndex === -1) {
                                  -                        lineEndIndex = fileContents.length - 1;
                                  -                    }
                                  -    
                                  -                    //Should we include the segment?
                                  -                    shouldInclude = ((type === "exclude" && !isTrue) || (type === "include" && isTrue));
                                  -                    
                                  -                    //Remove the conditional comments, and optionally remove the content inside
                                  -                    //the conditional comments.
                                  -                    startLength = startIndex - foundIndex;
                                  -                    fileContents = fileContents.substring(0, foundIndex) +
                                  -                        (shouldInclude ? fileContents.substring(startIndex, endMarkerIndex) : "") +
                                  -                        fileContents.substring(lineEndIndex + 1, fileContents.length);
                                  -                    
                                  -                    //Move startIndex to foundIndex, since that is the new position in the file
                                  -                    //where we need to look for more conditionals in the next while loop pass.
                                  -                    startIndex = foundIndex;
                                  -                } else {
                                  -                    throw "Error in file: " +
                                  -                          fileName +
                                  -                          ". Cannot find end marker for conditional comment: " +
                                  -                          conditionLine;
                                  -                    
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return pragma.removeStrict(fileContents, config);
                                  -    }
                                  -};
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js b/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js
                                  deleted file mode 100644
                                  index 2ff8797d..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js
                                  +++ /dev/null
                                  @@ -1,173 +0,0 @@
                                  -/**
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*
                                  - * This file patches require.js to communicate with the build system.
                                  - */
                                  -
                                  -/*jslint nomen: false, plusplus: false, regexp: false */
                                  -/*global load: false, require: false, logger: false, setTimeout: true,
                                  - pragma: false, Packages: false, parse: false, java: true */
                                  -"use strict";
                                  -
                                  -(function () {
                                  -    var layer,
                                  -        lineSeparator = java.lang.System.getProperty("line.separator"),
                                  -        oldDef;
                                  -
                                  -    //A file read function that can deal with BOMs
                                  -    function _readFile(path, encoding) {
                                  -        encoding = encoding || "utf-8";
                                  -        var file = new java.io.File(path),
                                  -                input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
                                  -                stringBuffer, line;
                                  -        try {
                                  -            stringBuffer = new java.lang.StringBuffer();
                                  -            line = input.readLine();
                                  -    
                                  -            // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
                                  -            // http://www.unicode.org/faq/utf_bom.html
                                  -            
                                  -            // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
                                  -            // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
                                  -            if (line && line.length() && line.charAt(0) === 0xfeff) {
                                  -                // Eat the BOM, since we've already found the encoding on this file,
                                  -                // and we plan to concatenating this buffer with others; the BOM should
                                  -                // only appear at the top of a file.
                                  -                line = line.substring(1);
                                  -            }
                                  -            while (line !== null) {
                                  -                stringBuffer.append(line);
                                  -                stringBuffer.append(lineSeparator);
                                  -                line = input.readLine();
                                  -            }
                                  -            //Make sure we return a JavaScript string and not a Java string.
                                  -            return String(stringBuffer.toString()); //String
                                  -        } finally {
                                  -            input.close();
                                  -        }
                                  -    }
                                  -
                                  -    /** Reset state for each build layer pass. */
                                  -    require._buildReset = function () {
                                  -        //Clear up the existing context.
                                  -        delete require.s.contexts[require.s.ctxName];
                                  -
                                  -        //These variables are not contextName-aware since the build should
                                  -        //only have one context.
                                  -        layer = require._layer = {
                                  -            buildPathMap: {},
                                  -            buildFileToModule: {},
                                  -            buildFilePaths: [],
                                  -            loadedFiles: {},
                                  -            modulesWithNames: {},
                                  -            existingRequireUrl: ""
                                  -        };
                                  -    };
                                  -
                                  -    require._buildReset();
                                  -
                                  -    /**
                                  -     * Makes sure the URL is something that can be supported by the
                                  -     * optimization tool.
                                  -     * @param {String} url
                                  -     * @returns {Boolean}
                                  -     */
                                  -    require._isSupportedBuildUrl = function (url) {
                                  -        //Ignore URLs with protocols or question marks, means either network
                                  -        //access is needed to fetch it or it is too dynamic. Note that
                                  -        //on Windows, full paths are used for some urls, which include
                                  -        //the drive, like c:/something, so need to test for something other
                                  -        //than just a colon.
                                  -        return url.indexOf("://") === -1 && url.indexOf("?") === -1;
                                  -    };
                                  -
                                  -    //Override require.def to catch modules that just define an object, so that
                                  -    //a dummy require.def call is not put in the build file for them. They do
                                  -    //not end up getting defined via require.execCb, so we need to catch them
                                  -    //at the require.def call.
                                  -    oldDef = require.def;
                                  -
                                  -    //This function signature does not have to be exact, just match what we
                                  -    //are looking for.
                                  -    define = require.def = function (name, obj) {
                                  -        if (typeof name === "string" && !require.isArray(obj) && !require.isFunction(obj)) {
                                  -            layer.modulesWithNames[name] = true;
                                  -        }
                                  -        return oldDef.apply(require, arguments);
                                  -    };
                                  -
                                  -    //Override load so that the file paths can be collected.
                                  -    require.load = function (moduleName, contextName) {
                                  -        /*jslint evil: true */
                                  -        var url = require.nameToUrl(moduleName, null, contextName), map,
                                  -            contents,
                                  -            context = require.s.contexts[contextName];
                                  -        context.loaded[moduleName] = false;
                                  -
                                  -        //Only handle urls that can be inlined, so that means avoiding some
                                  -        //URLs like ones that require network access or may be too dynamic,
                                  -        //like JSONP
                                  -        if (require._isSupportedBuildUrl(url)) {
                                  -            //Save the module name to path mapping.
                                  -            map = layer.buildPathMap[moduleName] = url;
                                  -    
                                  -            //Load the file contents, process for conditionals, then
                                  -            //evaluate it.
                                  -            contents = _readFile(url);
                                  -            contents = pragma.process(url, contents, context.config);
                                  -    
                                  -            //Find out if the file contains a require() definition. Need to know
                                  -            //this so we can inject plugins right after it, but before they are needed,
                                  -            //and to make sure this file is first, so that require.def calls work.
                                  -            //This situation mainly occurs when the build is done on top of the output
                                  -            //of another build, where the first build may include require somewhere in it.
                                  -            if (!layer.existingRequireUrl && parse.definesRequire(url, contents)) {
                                  -                layer.existingRequireUrl = url;
                                  -            }
                                  -    
                                  -            //Only eval complete contents if asked, or if it is a require extension.
                                  -            //Otherwise, treat the module as not safe for execution and parse out
                                  -            //the require calls.
                                  -            if (!context.config.execModules && moduleName !== "require/text" && moduleName !== "require/i18n") {
                                  -                //Only find the require parts with [] dependencies and
                                  -                //evaluate those. This path is useful when the code
                                  -                //does not follow the strict require pattern of wrapping all
                                  -                //code in a require callback.
                                  -                contents = parse(url, contents);
                                  -            }
                                  -    
                                  -            if (contents) {
                                  -                eval(contents);
                                  -
                                  -                //Support anonymous modules.
                                  -                require.completeLoad(moduleName, context);
                                  -            }
                                  -        }
                                  -
                                  -        //Mark the module loaded.
                                  -        context.loaded[moduleName] = true;
                                  -        require.checkLoaded(contextName);
                                  -    };
                                  -
                                  -    //Override a method provided by require/text.js for loading text files as
                                  -    //dependencies.
                                  -    require.fetchText = function (url, callback) {
                                  -        callback(_readFile(url));
                                  -    };
                                  -
                                  -    //Marks the module as part of the loaded set, and puts
                                  -    //it in the right position for output in the build layer,
                                  -    //since require() already did the dependency checks and should have
                                  -    //called this method already for those dependencies.
                                  -    require.execCb = function (name, cb, args) {
                                  -        var url = name && layer.buildPathMap[name];
                                  -        if (url && !layer.loadedFiles[url]) {
                                  -            layer.buildFilePaths.push(url);
                                  -            layer.loadedFiles[url] = true;
                                  -            layer.modulesWithNames[name] = true;
                                  -        }
                                  -    };
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/COPYING b/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/COPYING
                                  deleted file mode 100644
                                  index d6456956..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/COPYING
                                  +++ /dev/null
                                  @@ -1,202 +0,0 @@
                                  -
                                  -                                 Apache License
                                  -                           Version 2.0, January 2004
                                  -                        http://www.apache.org/licenses/
                                  -
                                  -   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
                                  -
                                  -   1. Definitions.
                                  -
                                  -      "License" shall mean the terms and conditions for use, reproduction,
                                  -      and distribution as defined by Sections 1 through 9 of this document.
                                  -
                                  -      "Licensor" shall mean the copyright owner or entity authorized by
                                  -      the copyright owner that is granting the License.
                                  -
                                  -      "Legal Entity" shall mean the union of the acting entity and all
                                  -      other entities that control, are controlled by, or are under common
                                  -      control with that entity. For the purposes of this definition,
                                  -      "control" means (i) the power, direct or indirect, to cause the
                                  -      direction or management of such entity, whether by contract or
                                  -      otherwise, or (ii) ownership of fifty percent (50%) or more of the
                                  -      outstanding shares, or (iii) beneficial ownership of such entity.
                                  -
                                  -      "You" (or "Your") shall mean an individual or Legal Entity
                                  -      exercising permissions granted by this License.
                                  -
                                  -      "Source" form shall mean the preferred form for making modifications,
                                  -      including but not limited to software source code, documentation
                                  -      source, and configuration files.
                                  -
                                  -      "Object" form shall mean any form resulting from mechanical
                                  -      transformation or translation of a Source form, including but
                                  -      not limited to compiled object code, generated documentation,
                                  -      and conversions to other media types.
                                  -
                                  -      "Work" shall mean the work of authorship, whether in Source or
                                  -      Object form, made available under the License, as indicated by a
                                  -      copyright notice that is included in or attached to the work
                                  -      (an example is provided in the Appendix below).
                                  -
                                  -      "Derivative Works" shall mean any work, whether in Source or Object
                                  -      form, that is based on (or derived from) the Work and for which the
                                  -      editorial revisions, annotations, elaborations, or other modifications
                                  -      represent, as a whole, an original work of authorship. For the purposes
                                  -      of this License, Derivative Works shall not include works that remain
                                  -      separable from, or merely link (or bind by name) to the interfaces of,
                                  -      the Work and Derivative Works thereof.
                                  -
                                  -      "Contribution" shall mean any work of authorship, including
                                  -      the original version of the Work and any modifications or additions
                                  -      to that Work or Derivative Works thereof, that is intentionally
                                  -      submitted to Licensor for inclusion in the Work by the copyright owner
                                  -      or by an individual or Legal Entity authorized to submit on behalf of
                                  -      the copyright owner. For the purposes of this definition, "submitted"
                                  -      means any form of electronic, verbal, or written communication sent
                                  -      to the Licensor or its representatives, including but not limited to
                                  -      communication on electronic mailing lists, source code control systems,
                                  -      and issue tracking systems that are managed by, or on behalf of, the
                                  -      Licensor for the purpose of discussing and improving the Work, but
                                  -      excluding communication that is conspicuously marked or otherwise
                                  -      designated in writing by the copyright owner as "Not a Contribution."
                                  -
                                  -      "Contributor" shall mean Licensor and any individual or Legal Entity
                                  -      on behalf of whom a Contribution has been received by Licensor and
                                  -      subsequently incorporated within the Work.
                                  -
                                  -   2. Grant of Copyright License. Subject to the terms and conditions of
                                  -      this License, each Contributor hereby grants to You a perpetual,
                                  -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                                  -      copyright license to reproduce, prepare Derivative Works of,
                                  -      publicly display, publicly perform, sublicense, and distribute the
                                  -      Work and such Derivative Works in Source or Object form.
                                  -
                                  -   3. Grant of Patent License. Subject to the terms and conditions of
                                  -      this License, each Contributor hereby grants to You a perpetual,
                                  -      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
                                  -      (except as stated in this section) patent license to make, have made,
                                  -      use, offer to sell, sell, import, and otherwise transfer the Work,
                                  -      where such license applies only to those patent claims licensable
                                  -      by such Contributor that are necessarily infringed by their
                                  -      Contribution(s) alone or by combination of their Contribution(s)
                                  -      with the Work to which such Contribution(s) was submitted. If You
                                  -      institute patent litigation against any entity (including a
                                  -      cross-claim or counterclaim in a lawsuit) alleging that the Work
                                  -      or a Contribution incorporated within the Work constitutes direct
                                  -      or contributory patent infringement, then any patent licenses
                                  -      granted to You under this License for that Work shall terminate
                                  -      as of the date such litigation is filed.
                                  -
                                  -   4. Redistribution. You may reproduce and distribute copies of the
                                  -      Work or Derivative Works thereof in any medium, with or without
                                  -      modifications, and in Source or Object form, provided that You
                                  -      meet the following conditions:
                                  -
                                  -      (a) You must give any other recipients of the Work or
                                  -          Derivative Works a copy of this License; and
                                  -
                                  -      (b) You must cause any modified files to carry prominent notices
                                  -          stating that You changed the files; and
                                  -
                                  -      (c) You must retain, in the Source form of any Derivative Works
                                  -          that You distribute, all copyright, patent, trademark, and
                                  -          attribution notices from the Source form of the Work,
                                  -          excluding those notices that do not pertain to any part of
                                  -          the Derivative Works; and
                                  -
                                  -      (d) If the Work includes a "NOTICE" text file as part of its
                                  -          distribution, then any Derivative Works that You distribute must
                                  -          include a readable copy of the attribution notices contained
                                  -          within such NOTICE file, excluding those notices that do not
                                  -          pertain to any part of the Derivative Works, in at least one
                                  -          of the following places: within a NOTICE text file distributed
                                  -          as part of the Derivative Works; within the Source form or
                                  -          documentation, if provided along with the Derivative Works; or,
                                  -          within a display generated by the Derivative Works, if and
                                  -          wherever such third-party notices normally appear. The contents
                                  -          of the NOTICE file are for informational purposes only and
                                  -          do not modify the License. You may add Your own attribution
                                  -          notices within Derivative Works that You distribute, alongside
                                  -          or as an addendum to the NOTICE text from the Work, provided
                                  -          that such additional attribution notices cannot be construed
                                  -          as modifying the License.
                                  -
                                  -      You may add Your own copyright statement to Your modifications and
                                  -      may provide additional or different license terms and conditions
                                  -      for use, reproduction, or distribution of Your modifications, or
                                  -      for any such Derivative Works as a whole, provided Your use,
                                  -      reproduction, and distribution of the Work otherwise complies with
                                  -      the conditions stated in this License.
                                  -
                                  -   5. Submission of Contributions. Unless You explicitly state otherwise,
                                  -      any Contribution intentionally submitted for inclusion in the Work
                                  -      by You to the Licensor shall be under the terms and conditions of
                                  -      this License, without any additional terms or conditions.
                                  -      Notwithstanding the above, nothing herein shall supersede or modify
                                  -      the terms of any separate license agreement you may have executed
                                  -      with Licensor regarding such Contributions.
                                  -
                                  -   6. Trademarks. This License does not grant permission to use the trade
                                  -      names, trademarks, service marks, or product names of the Licensor,
                                  -      except as required for reasonable and customary use in describing the
                                  -      origin of the Work and reproducing the content of the NOTICE file.
                                  -
                                  -   7. Disclaimer of Warranty. Unless required by applicable law or
                                  -      agreed to in writing, Licensor provides the Work (and each
                                  -      Contributor provides its Contributions) on an "AS IS" BASIS,
                                  -      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
                                  -      implied, including, without limitation, any warranties or conditions
                                  -      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
                                  -      PARTICULAR PURPOSE. You are solely responsible for determining the
                                  -      appropriateness of using or redistributing the Work and assume any
                                  -      risks associated with Your exercise of permissions under this License.
                                  -
                                  -   8. Limitation of Liability. In no event and under no legal theory,
                                  -      whether in tort (including negligence), contract, or otherwise,
                                  -      unless required by applicable law (such as deliberate and grossly
                                  -      negligent acts) or agreed to in writing, shall any Contributor be
                                  -      liable to You for damages, including any direct, indirect, special,
                                  -      incidental, or consequential damages of any character arising as a
                                  -      result of this License or out of the use or inability to use the
                                  -      Work (including but not limited to damages for loss of goodwill,
                                  -      work stoppage, computer failure or malfunction, or any and all
                                  -      other commercial damages or losses), even if such Contributor
                                  -      has been advised of the possibility of such damages.
                                  -
                                  -   9. Accepting Warranty or Additional Liability. While redistributing
                                  -      the Work or Derivative Works thereof, You may choose to offer,
                                  -      and charge a fee for, acceptance of support, warranty, indemnity,
                                  -      or other liability obligations and/or rights consistent with this
                                  -      License. However, in accepting such obligations, You may act only
                                  -      on Your own behalf and on Your sole responsibility, not on behalf
                                  -      of any other Contributor, and only if You agree to indemnify,
                                  -      defend, and hold each Contributor harmless for any liability
                                  -      incurred by, or claims asserted against, such Contributor by reason
                                  -      of your accepting any such warranty or additional liability.
                                  -
                                  -   END OF TERMS AND CONDITIONS
                                  -
                                  -   APPENDIX: How to apply the Apache License to your work.
                                  -
                                  -      To apply the Apache License to your work, attach the following
                                  -      boilerplate notice, with the fields enclosed by brackets "[]"
                                  -      replaced with your own identifying information. (Don't include
                                  -      the brackets!)  The text should be enclosed in the appropriate
                                  -      comment syntax for the file format. We also recommend that a
                                  -      file or class name and description of purpose be included on the
                                  -      same "printed page" as the copyright notice for easier
                                  -      identification within third-party archives.
                                  -
                                  -   Copyright [yyyy] [name of copyright owner]
                                  -
                                  -   Licensed under the Apache License, Version 2.0 (the "License");
                                  -   you may not use this file except in compliance with the License.
                                  -   You may obtain a copy of the License at
                                  -
                                  -       http://www.apache.org/licenses/LICENSE-2.0
                                  -
                                  -   Unless required by applicable law or agreed to in writing, software
                                  -   distributed under the License is distributed on an "AS IS" BASIS,
                                  -   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                                  -   See the License for the specific language governing permissions and
                                  -   limitations under the License.
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/README b/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/README
                                  deleted file mode 100644
                                  index 8718f5b5..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/README
                                  +++ /dev/null
                                  @@ -1,261 +0,0 @@
                                  -/*
                                  - * Copyright 2009 Google Inc.
                                  - *
                                  - * Licensed under the Apache License, Version 2.0 (the "License");
                                  - * you may not use this file except in compliance with the License.
                                  - * You may obtain a copy of the License at
                                  - *
                                  - *     http://www.apache.org/licenses/LICENSE-2.0
                                  - *
                                  - * Unless required by applicable law or agreed to in writing, software
                                  - * distributed under the License is distributed on an "AS IS" BASIS,
                                  - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                                  - * See the License for the specific language governing permissions and
                                  - * limitations under the License.
                                  - */
                                  -
                                  -//
                                  -// Contents
                                  -//
                                  -
                                  -The Closure Compiler performs checking, instrumentation, and
                                  -optimizations on JavaScript code. The purpose of this README is to
                                  -explain how to build and run the Closure Compiler.
                                  -
                                  -The Closure Compiler requires Java 6 or higher.
                                  -http://www.java.com/
                                  -
                                  -
                                  -//
                                  -// Building The Closure Compiler
                                  -//
                                  -
                                  -There are three ways to get a Closure Compiler executable.
                                  -
                                  -1) Use one we built for you.
                                  -
                                  -Pre-built Closure binaries can be found at
                                  -http://code.google.com/p/closure-compiler/downloads/list
                                  -
                                  -
                                  -2) Check out the source and build it with Apache Ant.
                                  -
                                  -First, check out the full source tree of the Closure Compiler. There
                                  -are instructions on how to do this at the project site.
                                  -http://code.google.com/p/closure-compiler/source/checkout
                                  -
                                  -Apache Ant is a cross-platform build tool.
                                  -http://ant.apache.org/
                                  -
                                  -At the root of the source tree, there is an Ant file named
                                  -build.xml. To use it, navigate to the same directory and type the
                                  -command
                                  -
                                  -ant jar
                                  -
                                  -This will produce a jar file called "build/compiler.jar".
                                  -
                                  -
                                  -3) Check out the source and build it with Eclipse.
                                  -
                                  -Eclipse is a cross-platform IDE.
                                  -http://www.eclipse.org/
                                  -
                                  -Under Eclipse's File menu, click "New > Project ..." and create a
                                  -"Java Project."  You will see an options screen. Give the project a
                                  -name, select "Create project from existing source," and choose the
                                  -root of the checked-out source tree as the existing directory. Verify
                                  -that you are using JRE version 6 or higher.
                                  -
                                  -Eclipse can use the build.xml file to discover rules. When you
                                  -navigate to the build.xml file, you will see all the build rules in
                                  -the "Outline" pane. Run the "jar" rule to build the compiler in
                                  -build/compiler.jar.
                                  -
                                  -
                                  -//
                                  -// Running The Closure Compiler
                                  -//
                                  -
                                  -Once you have the jar binary, running the Closure Compiler is straightforward.
                                  -
                                  -On the command line, type
                                  -
                                  -java -jar compiler.jar
                                  -
                                  -This starts the compiler in interactive mode. Type
                                  -
                                  -var x = 17 + 25;
                                  -
                                  -then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
                                  -and "Enter" again. The Compiler will respond:
                                  -
                                  -var x=42;
                                  -
                                  -The Closure Compiler has many options for reading input from a file,
                                  -writing output to a file, checking your code, and running
                                  -optimizations. To learn more, type
                                  -
                                  -java -jar compiler.jar --help
                                  -
                                  -You can read more detailed documentation about the many flags at
                                  -http://code.google.com/closure/compiler/docs/gettingstarted_app.html
                                  -
                                  -
                                  -//
                                  -// Compiling Multiple Scripts
                                  -//
                                  -
                                  -If you have multiple scripts, you should compile them all together with
                                  -one compile command.
                                  -
                                  -java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
                                  -
                                  -The Closure Compiler will concatenate the files in the order they're
                                  -passed at the command line.
                                  -
                                  -If you need to compile many, many scripts together, you may start to
                                  -run into problems with managing dependencies between scripts. You
                                  -should check out the Closure Library. It contains functions for
                                  -enforcing dependencies between scripts, and a tool called calcdeps.py
                                  -that knows how to give scripts to the Closure Compiler in the right
                                  -order.
                                  -
                                  -http://code.google.com/p/closure-library/
                                  -
                                  -//
                                  -// Licensing
                                  -//
                                  -
                                  -Unless otherwise stated, all source files are licensed under
                                  -the Apache License, Version 2.0.
                                  -
                                  -
                                  ------
                                  -Code under:
                                  -src/com/google/javascript/rhino
                                  -test/com/google/javascript/rhino
                                  -
                                  -URL: http://www.mozilla.org/rhino
                                  -Version:  1.5R3, with heavy modifications
                                  -License:  Netscape Public License and MPL / GPL dual license
                                  -
                                  -Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
                                  -implementation of JavaScript for the JVM.  The JavaScript parser and
                                  -the parse tree data structures were extracted and modified
                                  -significantly for use by Google's JavaScript compiler.
                                  -
                                  -Local Modifications: The packages have been renamespaced. All code not
                                  -relavant to parsing has been removed. A JSDoc parser and static typing
                                  -system have been added.
                                  -
                                  -
                                  ------
                                  -Code in:
                                  -lib/libtrunk_rhino_parser_jarjared.jar
                                  -
                                  -Rhino
                                  -URL: http://www.mozilla.org/rhino
                                  -Version:  Trunk
                                  -License:  Netscape Public License and MPL / GPL dual license
                                  -
                                  -Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
                                  -
                                  -Local Modifications: None. We've used JarJar to renamespace the code
                                  -post-compilation. See:
                                  -http://code.google.com/p/jarjar/
                                  -
                                  -
                                  ------
                                  -Code in:
                                  -lib/args4j_deploy.jar
                                  -
                                  -Args4j
                                  -URL: https://args4j.dev.java.net/
                                  -Version: 2.0.9
                                  -License: MIT
                                  -
                                  -Description:
                                  -args4j is a small Java class library that makes it easy to parse command line
                                  -options/arguments in your CUI application.
                                  -
                                  -Local Modifications: None.
                                  -
                                  -
                                  ------
                                  -Code in:
                                  -lib/google_common_deploy.jar
                                  -
                                  -Guava Libraries
                                  -URL: http://code.google.com/p/guava-libraries/
                                  -Version:  Trunk
                                  -License: Apache License 2.0
                                  -
                                  -Description: Google's core Java libraries.
                                  -
                                  -Local Modifications: None.
                                  -
                                  -
                                  ------
                                  -Code in:
                                  -lib/hamcrest-core-1.1.jar
                                  -
                                  -Hamcrest
                                  -URL: http://code.google.com/p/hamcrest
                                  -License: BSD
                                  -License File: LICENSE
                                  -
                                  -Description:
                                  -Provides a library of matcher objects (also known as constraints or
                                  -predicates) allowing 'match' rules to be defined declaratively, to be used in
                                  -other frameworks. Typical scenarios include testing frameworks, mocking
                                  -libraries and UI validation rules.
                                  -
                                  -Local modifications:
                                  -The original jars contained both source code and compiled classes.
                                  -
                                  -hamcrest-core-1.1.jar just contains the compiled classes.
                                  -
                                  -
                                  -----
                                  -Code in:
                                  -lib/junit.jar
                                  -
                                  -JUnit
                                  -URL:  http://sourceforge.net/projects/junit/
                                  -Version:  4.5
                                  -License:  Common Public License 1.0
                                  -
                                  -Description: A framework for writing and running automated tests in Java.
                                  -
                                  -Local Modifications: None.
                                  -
                                  -
                                  ----
                                  -Code in:
                                  -lib/protobuf_deploy.jar
                                  -
                                  -Protocol Buffers
                                  -URL: http://code.google.com/p/protobuf/
                                  -Version: 2.2.0a
                                  -License: New BSD License
                                  -
                                  -Description: Supporting libraries for protocol buffers,
                                  -an encoding of structured data.
                                  -
                                  -Local Modifications: None
                                  -
                                  -
                                  ----
                                  -Code in:
                                  -lib/ant_deploy.jar
                                  -
                                  -URL: http://ant.apache.org/bindownload.cgi
                                  -Version: 1.6.5
                                  -License: Apache License 2.0
                                  -Description:
                                  -  Ant is a Java based build tool. In theory it is kind of like "make"
                                  -  without make's wrinkles and with the full portability of pure java code.
                                  -
                                  -Local Modifications:
                                  -  Modified apache-ant-1.6.5/bin/ant to look in the ant.runfiles directory
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar b/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar
                                  deleted file mode 100644
                                  index c087e922..00000000
                                  Binary files a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE b/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE
                                  deleted file mode 100644
                                  index b2db4c54..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE
                                  +++ /dev/null
                                  @@ -1,4 +0,0 @@
                                  -Mozilla Rhino (js.jar from http://www.mozilla.org/rhino/) was
                                  -initially developed by Netscape Communications Corporation and is
                                  -provided by the Dojo Foundation "as is" under the MPL 1.1 license,
                                  -available at http://www.mozilla.org/MPL
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar b/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar
                                  deleted file mode 100644
                                  index 2369f99a..00000000
                                  Binary files a/branches/flexBox/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require.js b/branches/flexBox/sandbox/HelloModule/requirejs/require.js
                                  deleted file mode 100644
                                  index ff4e0f9a..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require.js
                                  +++ /dev/null
                                  @@ -1,1811 +0,0 @@
                                  -/** vim: et:ts=4:sw=4:sts=4
                                  - * @license RequireJS 0.15.0 Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -//laxbreak is true to allow build pragmas to change some statements.
                                  -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */
                                  -/*global window: false, document: false, navigator: false,
                                  -setTimeout: false, traceDeps: true, clearInterval: false, self: false,
                                  -setInterval: false, importScripts: false, jQuery: false */
                                  -"use strict";
                                  -
                                  -var require, define;
                                  -(function () {
                                  -    //Change this version number for each release.
                                  -    var version = "0.15.0",
                                  -            empty = {}, s,
                                  -            i, defContextName = "_", contextLoads = [],
                                  -            scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState,
                                  -            commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -            cjsRequireRegExp = /require\(["']([\w\!\-_\.\/]+)["']\)/g,
                                  -            main,
                                  -            isBrowser = !!(typeof window !== "undefined" && navigator && document),
                                  -            isWebWorker = !isBrowser && typeof importScripts !== "undefined",
                                  -            //PS3 indicates loaded and complete, but need to wait for complete
                                  -            //specifically. Sequence is "loading", "loaded", execution,
                                  -            // then "complete". The UA check is unfortunate, but not sure how
                                  -            //to feature test w/o causing perf issues.
                                  -            readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ? /^complete$/ : /^(complete|loaded)$/,
                                  -            ostring = Object.prototype.toString,
                                  -            ap = Array.prototype,
                                  -            aps = ap.slice, scrollIntervalId, req, baseElement,
                                  -            defQueue = [], useInteractive = false, currentlyAddingScript;
                                  -
                                  -    function isFunction(it) {
                                  -        return ostring.call(it) === "[object Function]";
                                  -    }
                                  -
                                  -    //Check for an existing version of require. If so, then exit out. Only allow
                                  -    //one version of require to be active in a page. However, allow for a require
                                  -    //config object, just exit quickly if require is an actual function.
                                  -    if (typeof require !== "undefined") {
                                  -        if (isFunction(require)) {
                                  -            return;
                                  -        } else {
                                  -            //assume it is a config object.
                                  -            cfg = require;
                                  -        }
                                  -    }
                                  -    
                                  -    //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -    /**
                                  -     * Calls a method on a plugin. The obj object should have two property,
                                  -     * name: the name of the method to call on the plugin
                                  -     * args: the arguments to pass to the plugin method.
                                  -     */
                                  -    function callPlugin(prefix, context, obj) {
                                  -        //Call the plugin, or load it.
                                  -        var plugin = s.plugins.defined[prefix], waiting;
                                  -        if (plugin) {
                                  -            plugin[obj.name].apply(null, obj.args);
                                  -        } else {
                                  -            //Put the call in the waiting call BEFORE requiring the module,
                                  -            //since the require could be synchronous in some environments,
                                  -            //like builds
                                  -            waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []);
                                  -            waiting.push(obj);
                                  -
                                  -            //Load the module
                                  -            req(["require/" + prefix], context.contextName);
                                  -        }
                                  -    }
                                  -    //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -    /**
                                  -     * Convenience method to call main for a require.def call that was put on
                                  -     * hold in the defQueue.
                                  -     */
                                  -    function callDefMain(args, context) {
                                  -        main.apply(req, args);
                                  -        //Mark the module loaded. Must do it here in addition
                                  -        //to doing it in require.def in case a script does
                                  -        //not call require.def
                                  -        context.loaded[args[0]] = true;
                                  -    }
                                  -
                                  -    /**
                                  -     * Used to set up package paths from a packagePaths or packages config object.
                                  -     * @param {Object} packages the object to store the new package config
                                  -     * @param {Array} currentPackages an array of packages to configure
                                  -     * @param {String} [dir] a prefix dir to use.
                                  -     */
                                  -    function configurePackageDir(packages, currentPackages, dir) {
                                  -        var i, location, pkgObj;
                                  -        for (i = 0; (pkgObj = currentPackages[i]); i++) {
                                  -            pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
                                  -            location = pkgObj.location;
                                  -
                                  -            //Add dir to the path, but avoid paths that start with a slash
                                  -            //or have a colon (indicates a protocol)
                                  -            if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
                                  -                pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name);
                                  -            }
                                  -
                                  -            //Normalize package paths.
                                  -            pkgObj.location = pkgObj.location || pkgObj.name;
                                  -            pkgObj.lib = pkgObj.lib || "lib";
                                  -            pkgObj.main = pkgObj.main || "main";
                                  -
                                  -            packages[pkgObj.name] = pkgObj;
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Determine if priority loading is done. If so clear the priorityWait
                                  -     */
                                  -    function isPriorityDone(context) {
                                  -        var priorityDone = true,
                                  -            priorityWait = context.config.priorityWait,
                                  -            priorityName, i;
                                  -        if (priorityWait) {
                                  -            for (i = 0; (priorityName = priorityWait[i]); i++) {
                                  -                if (!context.loaded[priorityName]) {
                                  -                    priorityDone = false;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (priorityDone) {
                                  -                delete context.config.priorityWait;
                                  -            }
                                  -        }
                                  -        return priorityDone;
                                  -    }
                                  -
                                  -    /**
                                  -     * Resumes tracing of dependencies and then checks if everything is loaded.
                                  -     */
                                  -    function resume(context) {
                                  -        var args, i, paused = s.paused;
                                  -        if (context.scriptCount <= 0) {
                                  -            //Synchronous envs will push the number below zero with the
                                  -            //decrement above, be sure to set it back to zero for good measure.
                                  -            //require() calls that also do not end up loading scripts could
                                  -            //push the number negative too.
                                  -            context.scriptCount = 0;
                                  -
                                  -            //Make sure any remaining defQueue items get properly processed.
                                  -            while (defQueue.length) {
                                  -                args = defQueue.shift();
                                  -                if (args[0] === null) {
                                  -                    req.onError(new Error('Mismatched anonymous require.def modules'));
                                  -                } else {
                                  -                    callDefMain(args, context);
                                  -                }
                                  -            }
                                  -
                                  -            //Skip the resume if current context is in priority wait.
                                  -            if (context.config.priorityWait && !isPriorityDone(context)) {
                                  -                return;
                                  -            }
                                  -
                                  -            if (paused.length) {
                                  -                //Reset paused since this loop will process current set.
                                  -                s.paused = [];
                                  -
                                  -                for (i = 0; (args = paused[i]); i++) {
                                  -                    req.checkDeps.apply(req, args);
                                  -                }
                                  -            }
                                  -
                                  -            if (isWebWorker) {
                                  -                //In a web worker, since importScripts is synchronous,
                                  -                //it may think all dependencies are loaded, but still
                                  -                //in the middle of a list of dependency fetches, so
                                  -                //delay the checkLoaded in a timeout for the items to complete.
                                  -                //This is really hacky though, time for a rewrite.
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(s.ctxName);
                                  -                }, 30);
                                  -            } else {
                                  -                req.checkLoaded(s.ctxName);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Main entry point.
                                  -     *
                                  -     * If the only argument to require is a string, then the module that
                                  -     * is represented by that string is fetched for the appropriate context.
                                  -     *
                                  -     * If the first argument is an array, then it will be treated as an array
                                  -     * of dependency string names to fetch. An optional function callback can
                                  -     * be specified to execute when all of those dependencies are available.
                                  -     */
                                  -    require = function (deps, callback, contextName, relModuleName) {
                                  -        var context, config;
                                  -        if (typeof deps === "string" && !isFunction(callback)) {
                                  -            //Just return the module wanted. In this scenario, the
                                  -            //second arg (if passed) is just the contextName.
                                  -            return require.get(deps, callback, contextName, relModuleName);
                                  -        }
                                  -        // Dependencies first
                                  -        if (!require.isArray(deps)) {
                                  -            // deps is a config object
                                  -            config = deps;
                                  -            if (require.isArray(callback)) {
                                  -                // Adjust args if there are dependencies
                                  -                deps = callback;
                                  -                callback = contextName;
                                  -                contextName = relModuleName;
                                  -                relModuleName = arguments[4];
                                  -            } else {
                                  -                deps = [];
                                  -            }
                                  -        }
                                  -
                                  -        main(null, deps, callback, config, contextName, relModuleName);
                                  -
                                  -        //If the require call does not trigger anything new to load,
                                  -        //then resume the dependency processing. Context will be undefined
                                  -        //on first run of require.
                                  -        context = s.contexts[(contextName || (config && config.context) || s.ctxName)];
                                  -        if (context && context.scriptCount === 0) {
                                  -            resume(context);
                                  -        }
                                  -        //Returning undefined for Spidermonky strict checking in Komodo
                                  -        return undefined;
                                  -    };
                                  -
                                  -    //Alias for caja compliance internally -
                                  -    //specifically: "Dynamically computed names should use require.async()"
                                  -    //even though this spec isn't really decided on.
                                  -    //Since it is here, use this alias to make typing shorter.
                                  -    req = require;
                                  -
                                  -    /**
                                  -     * Any errors that require explicitly generates will be passed to this
                                  -     * function. Intercept/override it if you want custom error handling.
                                  -     * If you do override it, this method should *always* throw an error
                                  -     * to stop the execution flow correctly. Otherwise, other weird errors
                                  -     * will occur.
                                  -     * @param {Error} err the error object.
                                  -     */
                                  -    req.onError = function (err) {
                                  -        throw err;
                                  -    };
                                  -
                                  -    /**
                                  -     * The function that handles definitions of modules. Differs from
                                  -     * require() in that a string for the module should be the first argument,
                                  -     * and the function to execute after dependencies are loaded should
                                  -     * return a value to define the module corresponding to the first argument's
                                  -     * name.
                                  -     */
                                  -    define = req.def = function (name, deps, callback, contextName) {
                                  -        var i, scripts, script, node = currentlyAddingScript;
                                  -
                                  -        //Allow for anonymous functions
                                  -        if (typeof name !== 'string') {
                                  -            //Adjust args appropriately
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = name;
                                  -            name = null;
                                  -        }
                                  -
                                  -        //This module may not have dependencies
                                  -        if (!req.isArray(deps)) {
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = [];
                                  -        }
                                  -
                                  -        //If no name, and callback is a function, then figure out if it a
                                  -        //CommonJS thing with dependencies.
                                  -        if (!name && !deps.length && req.isFunction(callback)) {
                                  -            //Remove comments from the callback string,
                                  -            //look for require calls, and pull them into the dependencies.
                                  -            callback
                                  -                .toString()
                                  -                .replace(commentRegExp, "")
                                  -                .replace(cjsRequireRegExp, function (match, dep) {
                                  -                    deps.push(dep);
                                  -                });
                                  -
                                  -            //May be a CommonJS thing even without require calls, but still
                                  -            //could use exports, and such, so always add those as dependencies.
                                  -            //This is a bit wasteful for RequireJS modules that do not need
                                  -            //an exports or module object, but erring on side of safety.
                                  -            //REQUIRES the function to expect the CommonJS variables in the
                                  -            //order listed below.
                                  -            deps = ["require", "exports", "module"].concat(deps);
                                  -        }
                                  -
                                  -        //If in IE 6-8 and hit an anonymous require.def call, do the interactive/
                                  -        //currentlyAddingScript scripts stuff.
                                  -        if (!name && useInteractive) {
                                  -            scripts = document.getElementsByTagName('script');
                                  -            for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -                if (script.readyState === 'interactive') {
                                  -                    node = script;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (!node) {
                                  -                req.onError(new Error("ERROR: No matching script interactive for " + callback));
                                  -            }
                                  -
                                  -            name = node.getAttribute("data-requiremodule");
                                  -        }
                                  -
                                  -        if (typeof name === 'string') {
                                  -            //Do not try to auto-register a jquery later.
                                  -            //Do this work here and in main, since for IE/useInteractive, this function
                                  -            //is the earliest touch-point.
                                  -            s.contexts[s.ctxName].jQueryDef = (name === "jquery");
                                  -        }
                                  -
                                  -        //Always save off evaluating the def call until the script onload handler.
                                  -        //This allows multiple modules to be in a file without prematurely
                                  -        //tracing dependencies, and allows for anonymous module support,
                                  -        //where the module name is not known until the script onload event
                                  -        //occurs.
                                  -        defQueue.push([name, deps, callback, null, contextName]);
                                  -    };
                                  -
                                  -    main = function (name, deps, callback, config, contextName, relModuleName) {
                                  -        //Grab the context, or create a new one for the given context name.
                                  -        var context, newContext, loaded, pluginPrefix,
                                  -            canSetContext, prop, newLength, outDeps, mods, paths, index, i,
                                  -            deferMods, deferModArgs, lastModArg, waitingName, packages,
                                  -            packagePaths;
                                  -
                                  -        contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName);
                                  -        context = s.contexts[contextName];
                                  -
                                  -        if (name) {
                                  -            //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -            // Pull off any plugin prefix.
                                  -            index = name.indexOf("!");
                                  -            if (index !== -1) {
                                  -                pluginPrefix = name.substring(0, index);
                                  -                name = name.substring(index + 1, name.length);
                                  -            } else {
                                  -                //Could be that the plugin name should be auto-applied.
                                  -                //Used by i18n plugin to enable anonymous i18n modules, but
                                  -                //still associating the auto-generated name with the i18n plugin.
                                  -                pluginPrefix = context.defPlugin[name];
                                  -            }
                                  -
                                  -            //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -            //If module already defined for context, or already waiting to be
                                  -            //evaluated, leave.
                                  -            waitingName = context.waiting[name];
                                  -            if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //If nothing is waiting on being loaded in the current context,
                                  -            //then switch s.ctxName to current contextName.
                                  -            loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded);
                                  -            canSetContext = true;
                                  -            if (loaded) {
                                  -                for (prop in loaded) {
                                  -                    if (!(prop in empty)) {
                                  -                        if (!loaded[prop]) {
                                  -                            canSetContext = false;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (canSetContext) {
                                  -                s.ctxName = contextName;
                                  -            }
                                  -        }
                                  -
                                  -        if (!context) {
                                  -            newContext = {
                                  -                contextName: contextName,
                                  -                config: {
                                  -                    waitSeconds: 7,
                                  -                    baseUrl: s.baseUrl || "./",
                                  -                    paths: {},
                                  -                    packages: {}
                                  -                },
                                  -                waiting: [],
                                  -                specified: {
                                  -                    "require": true,
                                  -                    "exports": true,
                                  -                    "module": true
                                  -                },
                                  -                loaded: {},
                                  -                scriptCount: 0,
                                  -                urlFetched: {},
                                  -                defPlugin: {},
                                  -                defined: {},
                                  -                modifiers: {}
                                  -            };
                                  -
                                  -            //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -            if (s.plugins.newContext) {
                                  -                s.plugins.newContext(newContext);
                                  -            }
                                  -            //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -            context = s.contexts[contextName] = newContext;
                                  -        }
                                  -
                                  -        //If have a config object, update the context's config object with
                                  -        //the config values.
                                  -        if (config) {
                                  -            //Make sure the baseUrl ends in a slash.
                                  -            if (config.baseUrl) {
                                  -                if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") {
                                  -                    config.baseUrl += "/";
                                  -                }
                                  -            }
                                  -
                                  -            //Save off the paths and packages since they require special processing,
                                  -            //they are additive.
                                  -            paths = context.config.paths;
                                  -            packages = context.config.packages;
                                  -
                                  -            //Mix in the config values, favoring the new values over
                                  -            //existing ones in context.config.
                                  -            req.mixin(context.config, config, true);
                                  -
                                  -            //Adjust paths if necessary.
                                  -            if (config.paths) {
                                  -                for (prop in config.paths) {
                                  -                    if (!(prop in empty)) {
                                  -                        paths[prop] = config.paths[prop];
                                  -                    }
                                  -                }
                                  -                context.config.paths = paths;
                                  -            }
                                  -
                                  -            packagePaths = config.packagePaths;
                                  -            if (packagePaths || config.packages) {
                                  -                //Convert packagePaths into a packages config.
                                  -                if (packagePaths) {
                                  -                    for (prop in packagePaths) {
                                  -                        if (!(prop in empty)) {
                                  -                            configurePackageDir(packages, packagePaths[prop], prop);
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Adjust packages if necessary.
                                  -                if (config.packages) {
                                  -                    configurePackageDir(packages, config.packages);
                                  -                }
                                  -
                                  -                //Done with modifications, assing packages back to context config
                                  -                context.config.packages = packages;
                                  -            }
                                  -
                                  -            //If priority loading is in effect, trigger the loads now
                                  -            if (config.priority) {
                                  -                //Create a separate config property that can be
                                  -                //easily tested for config priority completion.
                                  -                //Do this instead of wiping out the config.priority
                                  -                //in case it needs to be inspected for debug purposes later.
                                  -                req(config.priority);
                                  -                context.config.priorityWait = config.priority;
                                  -            }
                                  -
                                  -            //If a deps array or a config callback is specified, then call
                                  -            //require with those args. This is useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.deps || config.callback) {
                                  -                req(config.deps || [], config.callback);
                                  -            }
                                  -
                                  -            //>>excludeStart("requireExcludePageLoad", pragmas.requireExcludePageLoad);
                                  -            //Set up ready callback, if asked. Useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.ready) {
                                  -                req.ready(config.ready);
                                  -            }
                                  -            //>>excludeEnd("requireExcludePageLoad");
                                  -
                                  -            //If it is just a config block, nothing else,
                                  -            //then return.
                                  -            if (!deps) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Normalize dependency strings: need to determine if they have
                                  -        //prefixes and to also normalize any relative paths. Replace the deps
                                  -        //array of strings with an array of objects.
                                  -        if (deps) {
                                  -            outDeps = deps;
                                  -            deps = [];
                                  -            for (i = 0; i < outDeps.length; i++) {
                                  -                deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context);
                                  -            }
                                  -        }
                                  -
                                  -        //Store the module for later evaluation
                                  -        newLength = context.waiting.push({
                                  -            name: name,
                                  -            deps: deps,
                                  -            callback: callback
                                  -        });
                                  -
                                  -        if (name) {
                                  -            //Store index of insertion for quick lookup
                                  -            context.waiting[name] = newLength - 1;
                                  -
                                  -            //Mark the module as specified so no need to fetch it again.
                                  -            //Important to set specified here for the
                                  -            //pause/resume case where there are multiple modules in a file.
                                  -            context.specified[name] = true;
                                  -
                                  -            //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -            //Load any modifiers for the module.
                                  -            mods = context.modifiers[name];
                                  -            if (mods) {
                                  -                req(mods, contextName);
                                  -                deferMods = mods.__deferMods;
                                  -                if (deferMods) {
                                  -                    for (i = 0; i < deferMods.length; i++) {
                                  -                        deferModArgs = deferMods[i];
                                  -
                                  -                        //Add the context name to the def call.
                                  -                        lastModArg = deferModArgs[deferModArgs.length - 1];
                                  -                        if (lastModArg === undefined) {
                                  -                            deferModArgs[deferModArgs.length - 1] = contextName;
                                  -                        } else if (typeof lastModArg === "string") {
                                  -                            deferMods.push(contextName);
                                  -                        }
                                  -
                                  -                        require.def.apply(require, deferModArgs);
                                  -                    }
                                  -                }
                                  -            }
                                  -            //>>excludeEnd("requireExcludeModify");
                                  -        }
                                  -
                                  -        //If the callback is not an actual function, it means it already
                                  -        //has the definition of the module as a literal value.
                                  -        if (name && callback && !req.isFunction(callback)) {
                                  -            context.defined[name] = callback;
                                  -        }
                                  -
                                  -        //If a pluginPrefix is available, call the plugin, or load it.
                                  -        //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -        if (pluginPrefix) {
                                  -            callPlugin(pluginPrefix, context, {
                                  -                name: "require",
                                  -                args: [name, deps, callback, context]
                                  -            });
                                  -        }
                                  -        //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -        //Hold on to the module until a script load or other adapter has finished
                                  -        //evaluating the whole file. This helps when a file has more than one
                                  -        //module in it -- dependencies are not traced and fetched until the whole
                                  -        //file is processed.
                                  -        s.paused.push([pluginPrefix, name, deps, context]);
                                  -
                                  -        //Set loaded here for modules that are also loaded
                                  -        //as part of a layer, where onScriptLoad is not fired
                                  -        //for those cases. Do this after the inline define and
                                  -        //dependency tracing is done.
                                  -        //Also check if auto-registry of jQuery needs to be skipped.
                                  -        if (name) {
                                  -            context.loaded[name] = true;
                                  -            context.jQueryDef = (name === "jquery");
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Simple function to mix in properties from source into target,
                                  -     * but only if target does not already have a property of the same name.
                                  -     */
                                  -    req.mixin = function (target, source, force) {
                                  -        for (var prop in source) {
                                  -            if (!(prop in empty) && (!(prop in target) || force)) {
                                  -                target[prop] = source[prop];
                                  -            }
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    req.version = version;
                                  -
                                  -    //Set up page state.
                                  -    s = req.s = {
                                  -        ctxName: defContextName,
                                  -        contexts: {},
                                  -        paused: [],
                                  -        //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -        plugins: {
                                  -            defined: {},
                                  -            callbacks: {},
                                  -            waiting: {}
                                  -        },
                                  -        //>>excludeEnd("requireExcludePlugin");
                                  -        //Stores a list of URLs that should not get async script tag treatment.
                                  -        skipAsync: {},
                                  -        isBrowser: isBrowser,
                                  -        isPageLoaded: !isBrowser,
                                  -        readyCalls: [],
                                  -        doc: isBrowser ? document : null
                                  -    };
                                  -
                                  -    req.isBrowser = s.isBrowser;
                                  -    if (isBrowser) {
                                  -        s.head = document.getElementsByTagName("head")[0];
                                  -        //If BASE tag is in play, using appendChild is a problem for IE6.
                                  -        //When that browser dies, this can be removed. Details in this jQuery bug:
                                  -        //http://dev.jquery.com/ticket/2709
                                  -        baseElement = document.getElementsByTagName("base")[0];
                                  -        if (baseElement) {
                                  -            s.head = baseElement.parentNode;
                                  -        }
                                  -    }
                                  -
                                  -    //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -    /**
                                  -     * Sets up a plugin callback name. Want to make it easy to test if a plugin
                                  -     * needs to be called for a certain lifecycle event by testing for
                                  -     * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event
                                  -     * if there is a real plugin that registers for it.
                                  -     */
                                  -    function makePluginCallback(name, returnOnTrue) {
                                  -        var cbs = s.plugins.callbacks[name] = [];
                                  -        s.plugins[name] = function () {
                                  -            for (var i = 0, cb; (cb = cbs[i]); i++) {
                                  -                if (cb.apply(null, arguments) === true && returnOnTrue) {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            return false;
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Registers a new plugin for require.
                                  -     */
                                  -    req.plugin = function (obj) {
                                  -        var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks,
                                  -            waiting = s.plugins.waiting[prefix], generics,
                                  -            defined = s.plugins.defined, contexts = s.contexts, context;
                                  -
                                  -        //Do not allow redefinition of a plugin, there may be internal
                                  -        //state in the plugin that could be lost.
                                  -        if (defined[prefix]) {
                                  -            return req;
                                  -        }
                                  -
                                  -        //Save the plugin.
                                  -        defined[prefix] = obj;
                                  -
                                  -        //Set up plugin callbacks for methods that need to be generic to
                                  -        //require, for lifecycle cases where it does not care about a particular
                                  -        //plugin, but just that some plugin work needs to be done.
                                  -        generics = ["newContext", "isWaiting", "orderDeps"];
                                  -        for (i = 0; (prop = generics[i]); i++) {
                                  -            if (!s.plugins[prop]) {
                                  -                makePluginCallback(prop, prop === "isWaiting");
                                  -            }
                                  -            cbs[prop].push(obj[prop]);
                                  -        }
                                  -
                                  -        //Call newContext for any contexts that were already created.
                                  -        if (obj.newContext) {
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    obj.newContext(context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If there are waiting requests for a plugin, execute them now.
                                  -        if (waiting) {
                                  -            for (i = 0; (call = waiting[i]); i++) {
                                  -                if (obj[call.name]) {
                                  -                    obj[call.name].apply(null, call.args);
                                  -                }
                                  -            }
                                  -            delete s.plugins.waiting[prefix];
                                  -        }
                                  -
                                  -        return req;
                                  -    };
                                  -    //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -    /**
                                  -     * As of jQuery 1.4.3, it supports a readyWait property that will hold off
                                  -     * calling jQuery ready callbacks until all scripts are loaded. Be sure
                                  -     * to track it if readyWait is available. Also, since jQuery 1.4.3 does
                                  -     * not register as a module, need to do some global inference checking.
                                  -     * Even if it does register as a module, not guaranteed to be the precise
                                  -     * name of the global. If a jQuery is tracked for this context, then go
                                  -     * ahead and register it as a module too, if not already in process.
                                  -     */
                                  -    function jQueryCheck(context, jqCandidate) {
                                  -        if (!context.jQuery) {
                                  -            var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
                                  -            if ($ && "readyWait" in $) {
                                  -                context.jQuery = $;
                                  -
                                  -                //Manually create a "jquery" module entry if not one already
                                  -                //or in process.
                                  -                if (!context.defined.jquery && !context.jQueryDef) {
                                  -                    context.defined.jquery = $;
                                  -                }
                                  -
                                  -                //Make sure 
                                  -                if (context.scriptCount) {
                                  -                    $.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Internal method used by environment adapters to complete a load event.
                                  -     * A load event could be a script load or just a load pass from a synchronous
                                  -     * load call.
                                  -     * @param {String} moduleName the name of the module to potentially complete.
                                  -     * @param {Object} context the context object
                                  -     */
                                  -    req.completeLoad = function (moduleName, context) {
                                  -        //If there is a waiting require.def call
                                  -        var args;
                                  -        while (defQueue.length) {
                                  -            args = defQueue.shift();
                                  -            if (args[0] === null) {
                                  -                args[0] = moduleName;
                                  -                break;
                                  -            } else if (args[0] === moduleName) {
                                  -                //Found matching require.def call for this script!
                                  -                break;
                                  -            } else {
                                  -                //Some other named require.def call, most likely the result
                                  -                //of a build layer that included many require.def calls.
                                  -                callDefMain(args, context);
                                  -            }
                                  -        }
                                  -        if (args) {
                                  -            callDefMain(args, context);
                                  -        }
                                  -
                                  -        //Mark the script as loaded. Note that this can be different from a
                                  -        //moduleName that maps to a require.def call. This line is important
                                  -        //for traditional browser scripts.
                                  -        context.loaded[moduleName] = true;
                                  -
                                  -        //If a global jQuery is defined, check for it. Need to do it here
                                  -        //instead of main() since stock jQuery does not register as
                                  -        //a module via define.
                                  -        jQueryCheck(context);
                                  -
                                  -        context.scriptCount -= 1;
                                  -        resume(context);
                                  -    };
                                  -
                                  -    /**
                                  -     * Legacy function, remove at some point
                                  -     */
                                  -    req.pause = req.resume = function () {};
                                  -
                                  -    /**
                                  -     * Trace down the dependencies to see if they are loaded. If not, trigger
                                  -     * the load.
                                  -     * @param {String} pluginPrefix the plugin prefix, if any associated with the name.
                                  -     *
                                  -     * @param {String} name: the name of the module that has the dependencies.
                                  -     *
                                  -     * @param {Array} deps array of dependencies.
                                  -     *
                                  -     * @param {Object} context: the loading context.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkDeps = function (pluginPrefix, name, deps, context) {
                                  -        //Figure out if all the modules are loaded. If the module is not
                                  -        //being loaded or already loaded, add it to the "to load" list,
                                  -        //and request it to be loaded.
                                  -        var i, dep;
                                  -
                                  -        if (pluginPrefix) {
                                  -            //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -            callPlugin(pluginPrefix, context, {
                                  -                name: "checkDeps",
                                  -                args: [name, deps, context]
                                  -            });
                                  -            //>>excludeEnd("requireExcludePlugin");
                                  -        } else {
                                  -            for (i = 0; (dep = deps[i]); i++) {
                                  -                if (!context.specified[dep.fullName]) {
                                  -                    context.specified[dep.fullName] = true;
                                  -
                                  -                    //Reset the start time to use for timeouts
                                  -                    context.startTime = (new Date()).getTime();
                                  -
                                  -                    //If a plugin, call its load method.
                                  -                    if (dep.prefix) {
                                  -                        //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -                        callPlugin(dep.prefix, context, {
                                  -                            name: "load",
                                  -                            args: [dep.name, context.contextName]
                                  -                        });
                                  -                        //>>excludeEnd("requireExcludePlugin");
                                  -                    } else {
                                  -                        req.load(dep.name, context.contextName);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -    /**
                                  -     * Register a module that modifies another module. The modifier will
                                  -     * only be called once the target module has been loaded.
                                  -     *
                                  -     * First syntax:
                                  -     *
                                  -     * require.modify({
                                  -     *     "some/target1": "my/modifier1",
                                  -     *     "some/target2": "my/modifier2",
                                  -     * });
                                  -     *
                                  -     * With this syntax, the my/modifier1 will only be loaded when
                                  -     * "some/target1" is loaded.
                                  -     *
                                  -     * Second syntax, defining a modifier.
                                  -     *
                                  -     * require.modify("some/target1", "my/modifier",
                                  -     *                        ["some/target1", "some/other"],
                                  -     *                        function (target, other) {
                                  -     *                            //Modify properties of target here.
                                  -     *                            Only properties of target can be modified, but
                                  -     *                            target cannot be replaced.
                                  -     *                        }
                                  -     * );
                                  -     */
                                  -    req.modify = function (target, name, deps, callback, contextName) {
                                  -        var prop, modifier, list,
                                  -                cName = (typeof target === "string" ? contextName : name) || s.ctxName,
                                  -                context = s.contexts[cName],
                                  -                mods = context.modifiers;
                                  -
                                  -        if (typeof target === "string") {
                                  -            //A modifier module.
                                  -            //First store that it is a modifier.
                                  -            list = mods[target] || (mods[target] = []);
                                  -            if (!list[name]) {
                                  -                list.push(name);
                                  -                list[name] = true;
                                  -            }
                                  -
                                  -            //Trigger the normal module definition logic if the target
                                  -            //is already in the system.
                                  -            if (context.specified[target]) {
                                  -                req.def(name, deps, callback, contextName);
                                  -            } else {
                                  -                //Hold on to the execution/dependency checks for the modifier
                                  -                //until the target is fetched.
                                  -                (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]);
                                  -            }
                                  -        } else {
                                  -            //A list of modifiers. Save them for future reference.
                                  -            for (prop in target) {
                                  -                if (!(prop in empty)) {
                                  -                    //Store the modifier for future use.
                                  -                    modifier = target[prop];
                                  -                    list = mods[prop] || (context.modifiers[prop] = []);
                                  -                    if (!list[modifier]) {
                                  -                        list.push(modifier);
                                  -                        list[modifier] = true;
                                  -
                                  -                        if (context.specified[prop]) {
                                  -                            //Load the modifier right away.
                                  -                            req([modifier], cName);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    //>>excludeEnd("requireExcludeModify");
                                  -
                                  -    req.isArray = function (it) {
                                  -        return ostring.call(it) === "[object Array]";
                                  -    };
                                  -
                                  -    req.isFunction = isFunction;
                                  -
                                  -    /**
                                  -     * Gets one module's exported value. This method is used by require().
                                  -     * It is broken out as a separate function to allow a host environment
                                  -     * shim to overwrite this function with something appropriate for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} [contextName] the name of the context to use. Uses
                                  -     * default context if no contextName is provided. You should never
                                  -     * pass the contextName explicitly -- it is handled by the require() code.
                                  -     * @param {String} [relModuleName] a module name to use for relative
                                  -     * module name lookups. You should never pass this argument explicitly --
                                  -     * it is handled by the require() code.
                                  -     *
                                  -     * @returns {Object} the exported module value.
                                  -     */
                                  -    req.get = function (moduleName, contextName, relModuleName) {
                                  -        if (moduleName === "require" || moduleName === "exports" || moduleName === "module") {
                                  -            req.onError(new Error("Explicit require of " + moduleName + " is not allowed."));
                                  -        }
                                  -        contextName = contextName || s.ctxName;
                                  -
                                  -        var ret, context = s.contexts[contextName], nameProps;
                                  -
                                  -        //Normalize module name, if it contains . or ..
                                  -        nameProps = req.splitPrefix(moduleName, relModuleName, context);
                                  -
                                  -        ret = context.defined[nameProps.name];
                                  -        if (ret === undefined) {
                                  -            req.onError(new Error("require: module name '" +
                                  -                        moduleName +
                                  -                        "' has not been loaded yet for context: " +
                                  -                        contextName));
                                  -        }
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Makes the request to load a module. May be an async load depending on
                                  -     * the environment and the circumstance of the load call. Override this
                                  -     * method in a host environment shim to do something specific for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} contextName the name of the context to use.
                                  -     */
                                  -    req.load = function (moduleName, contextName) {
                                  -        var context = s.contexts[contextName],
                                  -            urlFetched = context.urlFetched,
                                  -            loaded = context.loaded, url;
                                  -        s.isDone = false;
                                  -
                                  -        //Only set loaded to false for tracking if it has not already been set.
                                  -        if (!loaded[moduleName]) {
                                  -            loaded[moduleName] = false;
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //Not in the right context now, hold on to it until
                                  -            //the current context finishes all its loading.
                                  -            contextLoads.push(arguments);
                                  -        } else {
                                  -            //First derive the path name for the module.
                                  -            url = req.nameToUrl(moduleName, null, contextName);
                                  -            if (!urlFetched[url]) {
                                  -                context.scriptCount += 1;
                                  -                req.attach(url, contextName, moduleName);
                                  -                urlFetched[url] = true;
                                  -
                                  -                //If tracking a jQuery, then make sure its readyWait
                                  -                //is incremented to prevent its ready callbacks from
                                  -                //triggering too soon.
                                  -                if (context.jQuery && !context.jQueryIncremented) {
                                  -                    context.jQuery.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    req.jsExtRegExp = /^\/|:|\?|\.js$/;
                                  -
                                  -    /**
                                  -     * Given a relative module name, like ./something, normalize it to
                                  -     * a real name that can be mapped to a path.
                                  -     * @param {String} name the relative name
                                  -     * @param {String} baseName a real name that the name arg is relative
                                  -     * to.
                                  -     * @param {Object} context
                                  -     * @returns {String} normalized name
                                  -     */
                                  -    req.normalizeName = function (name, baseName, context) {
                                  -        //Adjust any relative paths.
                                  -        var part;
                                  -        if (name.charAt(0) === ".") {
                                  -            //If have a base name, try to normalize against it,
                                  -            //otherwise, assume it is a top-level require that will
                                  -            //be relative to baseUrl in the end.
                                  -            if (baseName) {
                                  -                if (context.config.packages[baseName]) {
                                  -                    //If the baseName is a package name, then just treat it as one
                                  -                    //name to concat the name with.
                                  -                    baseName = [baseName];
                                  -                } else {
                                  -                    //Convert baseName to array, and lop off the last part,
                                  -                    //so that . matches that "directory" and not name of the baseName's
                                  -                    //module. For instance, baseName of "one/two/three", maps to
                                  -                    //"one/two/three.js", but we want the directory, "one/two" for
                                  -                    //this normalization.
                                  -                    baseName = baseName.split("/");
                                  -                    baseName = baseName.slice(0, baseName.length - 1);
                                  -                }
                                  -
                                  -                name = baseName.concat(name.split("/"));
                                  -                for (i = 0; (part = name[i]); i++) {
                                  -                    if (part === ".") {
                                  -                        name.splice(i, 1);
                                  -                        i -= 1;
                                  -                    } else if (part === "..") {
                                  -                        if (i === 1) {
                                  -                            //End of the line. Keep at least one non-dot
                                  -                            //path segment at the front so it can be mapped
                                  -                            //correctly to disk. Otherwise, there is likely
                                  -                            //no path mapping for '..'.
                                  -                            break;
                                  -                        } else if (i > 1) {
                                  -                            name.splice(i - 1, 2);
                                  -                            i -= 2;
                                  -                        }
                                  -                    }
                                  -                }
                                  -                name = name.join("/");
                                  -            }
                                  -        }
                                  -        return name;
                                  -    };
                                  -
                                  -    /**
                                  -     * Splits a name into a possible plugin prefix and
                                  -     * the module name. If baseName is provided it will
                                  -     * also normalize the name via require.normalizeName()
                                  -     * 
                                  -     * @param {String} name the module name
                                  -     * @param {String} [baseName] base name that name is
                                  -     * relative to.
                                  -     * @param {Object} context
                                  -     *
                                  -     * @returns {Object} with properties, 'prefix' (which
                                  -     * may be null), 'name' and 'fullName', which is a combination
                                  -     * of the prefix (if it exists) and the name.
                                  -     */
                                  -    req.splitPrefix = function (name, baseName, context) {
                                  -        var index = name.indexOf("!"), prefix = null;
                                  -        if (index !== -1) {
                                  -            prefix = name.substring(0, index);
                                  -            name = name.substring(index + 1, name.length);
                                  -        }
                                  -
                                  -        //Account for relative paths if there is a base name.
                                  -        name = req.normalizeName(name, baseName, context);
                                  -
                                  -        return {
                                  -            prefix: prefix,
                                  -            name: name,
                                  -            fullName: prefix ? prefix + "!" + name : name
                                  -        };
                                  -    };
                                  -
                                  -    /**
                                  -     * Start of a public API replacement for nameToUrl. For now, just leverage
                                  -     * nameToUrl, but know that nameToUrl will go away in the future.
                                  -     * moduleNamePlusExt is of format "some/module/thing.html". It only works
                                  -     * for module-like names and will not work with any dependency name in the
                                  -     * future (for instance, passing "http://a.com/some/thing.html" will not
                                  -     * make any sense)
                                  -     */
                                  -    //TODO: what does requ.toUrl("packageName") resolve to? base package
                                  -    //dir or lib? Probably base package dir.
                                  -    /*
                                  -    req.toUrl = function (moduleNamePlusExt, contextName, relModuleName) {
                                  -        var index = moduleNamePlusExt.lastIndexOf('.'),
                                  -            ext = null;
                                  -
                                  -        if (index !== -1) {
                                  -            ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);
                                  -            moduleNamePlusExt = moduleNamePlusExt.substring(0, index);
                                  -        }
                                  -
                                  -        return req.nameToUrl(moduleNamePlusExt, ext, contextName, relModuleName);
                                  -    };
                                  -    */
                                  -
                                  -    /**
                                  -     * Converts a module name to a file path.
                                  -     */
                                  -    req.nameToUrl = function (moduleName, ext, contextName, relModuleName) {
                                  -        var paths, packages, pkg, pkgPath, syms, i, parentModule, url,
                                  -            context = s.contexts[contextName],
                                  -            config = context.config;
                                  -
                                  -        //Normalize module name if have a base relative module name to work from.
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        //If a colon is in the URL, it indicates a protocol is used and it is just
                                  -        //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
                                  -        //The slash is important for protocol-less URLs as well as full paths.
                                  -        if (req.jsExtRegExp.test(moduleName)) {
                                  -            //Just a plain path, not module name lookup, so just return it.
                                  -            //Add extension if it is included. This is a bit wonky, only non-.js things pass
                                  -            //an extension, this method probably needs to be reworked.
                                  -            url = moduleName + (ext ? ext : "");
                                  -        } else {
                                  -            //A module that needs to be converted to a path.
                                  -            paths = config.paths;
                                  -            packages = config.packages;
                                  -
                                  -            syms = moduleName.split("/");
                                  -            //For each module name segment, see if there is a path
                                  -            //registered for it. Start with most specific name
                                  -            //and work up from it.
                                  -            for (i = syms.length; i > 0; i--) {
                                  -                parentModule = syms.slice(0, i).join("/");
                                  -                if (paths[parentModule]) {
                                  -                    syms.splice(0, i, paths[parentModule]);
                                  -                    break;
                                  -                } else if ((pkg = packages[parentModule])) {
                                  -                    //pkg can have just a string value to the path
                                  -                    //or can be an object with props:
                                  -                    //main, lib, name, location.
                                  -                    pkgPath = pkg.location + '/' + pkg.lib;
                                  -                    //If module name is just the package name, then looking
                                  -                    //for the main module.
                                  -                    if (moduleName === pkg.name) {
                                  -                        pkgPath += '/' + pkg.main;
                                  -                    }
                                  -                    syms.splice(0, i, pkgPath);
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -            //Join the path parts together, then figure out if baseUrl is needed.
                                  -            url = syms.join("/") + (ext || ".js");
                                  -            url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
                                  -        }
                                  -        return config.urlArgs ? url +
                                  -                                ((url.indexOf('?') === -1 ? '?' : '&') +
                                  -                                 config.urlArgs) : url;
                                  -    };
                                  -
                                  -    //In async environments, checkLoaded can get called a few times in the same
                                  -    //call stack. Allow only one to do the finishing work. Set to false
                                  -    //for sync environments.
                                  -    req.blockCheckLoaded = true;
                                  -
                                  -    /**
                                  -     * Checks if all modules for a context are loaded, and if so, evaluates the
                                  -     * new ones in right dependency order.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkLoaded = function (contextName) {
                                  -        var context = s.contexts[contextName || s.ctxName],
                                  -                waitInterval = context.config.waitSeconds * 1000,
                                  -                //It is possible to disable the wait interval by using waitSeconds of 0.
                                  -                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
                                  -                loaded, defined = context.defined,
                                  -                modifiers = context.modifiers, waiting, noLoads = "",
                                  -                hasLoadedProp = false, stillLoading = false, prop,
                                  -
                                  -                //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -                pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps,
                                  -                //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -                i, module, allDone, loads, loadArgs, err;
                                  -
                                  -        //If already doing a checkLoaded call,
                                  -        //then do not bother checking loaded state.
                                  -        if (context.isCheckLoaded) {
                                  -            return;
                                  -        }
                                  -
                                  -        //Determine if priority loading is done. If so clear the priority. If
                                  -        //not, then do not check
                                  -        if (context.config.priorityWait) {
                                  -            if (isPriorityDone(context)) {
                                  -                //Call resume, since it could have
                                  -                //some waiting dependencies to trace.
                                  -                resume(context);
                                  -            } else {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Signal that checkLoaded is being require, so other calls that could be triggered
                                  -        //by calling a waiting callback that then calls require and then this function
                                  -        //should not proceed. At the end of this function, if there are still things
                                  -        //waiting, then checkLoaded will be called again.
                                  -        context.isCheckLoaded = req.blockCheckLoaded;
                                  -
                                  -        //Grab waiting and loaded lists here, since it could have changed since
                                  -        //this function was first called.
                                  -        waiting = context.waiting;
                                  -        loaded = context.loaded;
                                  -
                                  -        //See if anything is still in flight.
                                  -        for (prop in loaded) {
                                  -            if (!(prop in empty)) {
                                  -                hasLoadedProp = true;
                                  -                if (!loaded[prop]) {
                                  -                    if (expired) {
                                  -                        noLoads += prop + " ";
                                  -                    } else {
                                  -                        stillLoading = true;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Check for exit conditions.
                                  -        if (!hasLoadedProp && !waiting.length
                                  -            //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -            && (!pIsWaiting || !pIsWaiting(context))
                                  -            //>>excludeEnd("requireExcludePlugin");
                                  -           ) {
                                  -            //If the loaded object had no items, then the rest of
                                  -            //the work below does not need to be done.
                                  -            context.isCheckLoaded = false;
                                  -            return;
                                  -        }
                                  -        if (expired && noLoads) {
                                  -            //If wait time expired, throw error of unloaded modules.
                                  -            err = new Error("require.js load timeout for modules: " + noLoads);
                                  -            err.requireType = "timeout";
                                  -            err.requireModules = noLoads;
                                  -            req.onError(err);
                                  -        }
                                  -        if (stillLoading) {
                                  -            //Something is still waiting to load. Wait for it.
                                  -            context.isCheckLoaded = false;
                                  -            if (isBrowser || isWebWorker) {
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(contextName);
                                  -                }, 50);
                                  -            }
                                  -            return;
                                  -        }
                                  -
                                  -        //Order the dependencies. Also clean up state because the evaluation
                                  -        //of modules might create new loading tasks, so need to reset.
                                  -        //Be sure to call plugins too.
                                  -        context.waiting = [];
                                  -        context.loaded = {};
                                  -
                                  -        //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -        //Call plugins to order their dependencies, do their
                                  -        //module definitions.
                                  -        if (pOrderDeps) {
                                  -            pOrderDeps(context);
                                  -        }
                                  -        //>>excludeEnd("requireExcludePlugin");
                                  -
                                  -        //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -        //Before defining the modules, give priority treatment to any modifiers
                                  -        //for modules that are already defined.
                                  -        for (prop in modifiers) {
                                  -            if (!(prop in empty)) {
                                  -                if (defined[prop]) {
                                  -                    req.execModifiers(prop, {}, waiting, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        //>>excludeEnd("requireExcludeModify");
                                  -
                                  -        //Define the modules, doing a depth first search.
                                  -        for (i = 0; (module = waiting[i]); i++) {
                                  -            req.exec(module, {}, waiting, context);
                                  -        }
                                  -
                                  -        //Indicate checkLoaded is now done.
                                  -        context.isCheckLoaded = false;
                                  -
                                  -        if (context.waiting.length
                                  -            //>>excludeStart("requireExcludePlugin", pragmas.requireExcludePlugin);
                                  -            || (pIsWaiting && pIsWaiting(context))
                                  -            //>>excludeEnd("requireExcludePlugin");
                                  -           ) {
                                  -            //More things in this context are waiting to load. They were probably
                                  -            //added while doing the work above in checkLoaded, calling module
                                  -            //callbacks that triggered other require calls.
                                  -            req.checkLoaded(contextName);
                                  -        } else if (contextLoads.length) {
                                  -            //Check for other contexts that need to load things.
                                  -            //First, make sure current context has no more things to
                                  -            //load. After defining the modules above, new require calls
                                  -            //could have been made.
                                  -            loaded = context.loaded;
                                  -            allDone = true;
                                  -            for (prop in loaded) {
                                  -                if (!(prop in empty)) {
                                  -                    if (!loaded[prop]) {
                                  -                        allDone = false;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            if (allDone) {
                                  -                s.ctxName = contextLoads[0][1];
                                  -                loads = contextLoads;
                                  -                //Reset contextLoads in case some of the waiting loads
                                  -                //are for yet another context.
                                  -                contextLoads = [];
                                  -                for (i = 0; (loadArgs = loads[i]); i++) {
                                  -                    req.load.apply(req, loadArgs);
                                  -                }
                                  -            }
                                  -        } else {
                                  -            //Make sure we reset to default context.
                                  -            s.ctxName = defContextName;
                                  -            s.isDone = true;
                                  -            if (req.callReady) {
                                  -                req.callReady();
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper function that creates a setExports function for a "module"
                                  -     * CommonJS dependency. Do this here to avoid creating a closure that
                                  -     * is part of a loop in require.exec.
                                  -     */
                                  -    function makeSetExports(moduleObj) {
                                  -        return function (exports) {
                                  -            moduleObj.exports = exports;
                                  -        };
                                  -    }
                                  -
                                  -    function makeContextModuleFunc(name, contextName, moduleName) {
                                  -        return function () {
                                  -            //A version of a require function that forces a contextName value
                                  -            //and also passes a moduleName value for items that may need to
                                  -            //look up paths relative to the moduleName
                                  -            var args = [].concat(aps.call(arguments, 0));
                                  -            args.push(contextName, moduleName);
                                  -            return (name ? require[name] : require).apply(null, args);
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Helper function that creates a require function object to give to
                                  -     * modules that ask for it as a dependency. It needs to be specific
                                  -     * per module because of the implication of path mappings that may
                                  -     * need to be relative to the module name.
                                  -     */
                                  -    function makeRequire(context, moduleName) {
                                  -        var contextName = context.contextName,
                                  -            modRequire = makeContextModuleFunc(null, contextName, moduleName);
                                  -
                                  -        req.mixin(modRequire, {
                                  -            //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -            modify: makeContextModuleFunc("modify", contextName, moduleName),
                                  -            //>>excludeEnd("requireExcludeModify");
                                  -            def: makeContextModuleFunc("def", contextName, moduleName),
                                  -            get: makeContextModuleFunc("get", contextName, moduleName),
                                  -            nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName),
                                  -            toUrl: makeContextModuleFunc("toUrl", contextName, moduleName),
                                  -            ready: req.ready,
                                  -            context: context,
                                  -            config: context.config,
                                  -            isBrowser: s.isBrowser
                                  -        });
                                  -        return modRequire;
                                  -    }
                                  -
                                  -    /**
                                  -     * Executes the modules in the correct order.
                                  -     * 
                                  -     * @private
                                  -     */
                                  -    req.exec = function (module, traced, waiting, context) {
                                  -        //Some modules are just plain script files, abddo not have a formal
                                  -        //module definition, 
                                  -        if (!module) {
                                  -            //Returning undefined for Spidermonky strict checking in Komodo
                                  -            return undefined;
                                  -        }
                                  -
                                  -        var name = module.name, cb = module.callback, deps = module.deps, j, dep,
                                  -            defined = context.defined, ret, args = [], depModule, cjsModule,
                                  -            usingExports = false, depName;
                                  -
                                  -        //If already traced or defined, do not bother a second time.
                                  -        if (name) {
                                  -            if (traced[name] || name in defined) {
                                  -                return defined[name];
                                  -            }
                                  -
                                  -            //Mark this module as being traced, so that it is not retraced (as in a circular
                                  -            //dependency)
                                  -            traced[name] = true;
                                  -        }
                                  -
                                  -        if (deps) {
                                  -            for (j = 0; (dep = deps[j]); j++) {
                                  -                depName = dep.name;
                                  -                if (depName === "require") {
                                  -                    depModule = makeRequire(context, name);
                                  -                } else if (depName === "exports") {
                                  -                    //CommonJS module spec 1.1
                                  -                    depModule = defined[name] = {};
                                  -                    usingExports = true;
                                  -                } else if (depName === "module") {
                                  -                    //CommonJS module spec 1.1
                                  -                    cjsModule = depModule = {
                                  -                        id: name,
                                  -                        uri: name ? req.nameToUrl(name, null, context.contextName) : undefined
                                  -                    };
                                  -                    cjsModule.setExports = makeSetExports(cjsModule);
                                  -                } else {
                                  -                    //Get dependent module. It could not exist, for a circular
                                  -                    //dependency or if the loaded dependency does not actually call
                                  -                    //require. Favor not throwing an error here if undefined because
                                  -                    //we want to allow code that does not use require as a module
                                  -                    //definition framework to still work -- allow a web site to
                                  -                    //gradually update to contained modules. That is more
                                  -                    //important than forcing a throw for the circular dependency case.
                                  -                    depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context));
                                  -                }
                                  -
                                  -                args.push(depModule);
                                  -            }
                                  -        }
                                  -
                                  -        //Call the callback to define the module, if necessary.
                                  -        cb = module.callback;
                                  -        if (cb && req.isFunction(cb)) {
                                  -            ret = req.execCb(name, cb, args);
                                  -            if (name) {
                                  -                //If using exports and the function did not return a value,
                                  -                //and the "module" object for this definition function did not
                                  -                //define an exported value, then use the exports object.
                                  -                if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) {
                                  -                    ret = defined[name];
                                  -                } else {
                                  -                    if (cjsModule && "exports" in cjsModule) {
                                  -                        ret = defined[name] = cjsModule.exports;
                                  -                    } else {
                                  -                        if (name in defined && !usingExports) {
                                  -                            req.onError(new Error(name + " has already been defined"));
                                  -                        }
                                  -                        defined[name] = ret;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -        //Execute modifiers, if they exist.
                                  -        req.execModifiers(name, traced, waiting, context);
                                  -        //>>excludeEnd("requireExcludeModify");
                                  -
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Executes a module callack function. Broken out as a separate function
                                  -     * solely to allow the build system to sequence the files in the built
                                  -     * layer in the right sequence.
                                  -     * @param {String} name the module name.
                                  -     * @param {Function} cb the module callback/definition function.
                                  -     * @param {Array} args The arguments (dependent modules) to pass to callback.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execCb = function (name, cb, args) {
                                  -        return cb.apply(null, args);
                                  -    };
                                  -
                                  -    //>>excludeStart("requireExcludeModify", pragmas.requireExcludeModify);
                                  -    /**
                                  -     * Executes modifiers for the given module name.
                                  -     * @param {String} target
                                  -     * @param {Object} traced
                                  -     * @param {Object} context
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execModifiers = function (target, traced, waiting, context) {
                                  -        var modifiers = context.modifiers, mods = modifiers[target], mod, i;
                                  -        if (mods) {
                                  -            for (i = 0; i < mods.length; i++) {
                                  -                mod = mods[i];
                                  -                //Not all modifiers define a module, they might collect other modules.
                                  -                //If it is just a collection it will not be in waiting.
                                  -                if (mod in waiting) {
                                  -                    req.exec(waiting[waiting[mod]], traced, waiting, context);
                                  -                }
                                  -            }
                                  -            delete modifiers[target];
                                  -        }
                                  -    };
                                  -    //>>excludeEnd("requireExcludeModify");
                                  -
                                  -    /**
                                  -     * callback for script loads, used to check status of loading.
                                  -     *
                                  -     * @param {Event} evt the event from the browser for the script
                                  -     * that was loaded.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.onScriptLoad = function (evt) {
                                  -        //Using currentTarget instead of target for Firefox 2.0's sake. Not
                                  -        //all old browsers will be supported, but this one was easy enough
                                  -        //to support and still makes sense.
                                  -        var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
                                  -            context;
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = s.contexts[contextName];
                                  -
                                  -            req.completeLoad(moduleName, context);
                                  -
                                  -            //Clean up script binding.
                                  -            if (node.removeEventListener) {
                                  -                node.removeEventListener("load", req.onScriptLoad, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know.
                                  -                node.detachEvent("onreadystatechange", req.onScriptLoad);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Attaches the script represented by the URL to the current
                                  -     * environment. Right now only supports browser loading,
                                  -     * but can be redefined in other environments to do the right thing.
                                  -     * @param {String} url the url of the script to attach.
                                  -     * @param {String} contextName the name of the context that wants the script.
                                  -     * @param {moduleName} the name of the module that is associated with the script.
                                  -     * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
                                  -     * @param {String} [type] optional type, defaults to text/javascript
                                  -     */
                                  -    req.attach = function (url, contextName, moduleName, callback, type) {
                                  -        var node, loaded, context;
                                  -        if (isBrowser) {
                                  -            //In the browser so use a script tag
                                  -            callback = callback || req.onScriptLoad;
                                  -            node = document.createElement("script");
                                  -            node.type = type || "text/javascript";
                                  -            node.charset = "utf-8";
                                  -            //Use async so Gecko does not block on executing the script if something
                                  -            //like a long-polling comet tag is being run first. Gecko likes
                                  -            //to evaluate scripts in DOM order, even for dynamic scripts.
                                  -            //It will fetch them async, but only evaluate the contents in DOM
                                  -            //order, so a long-polling script tag can delay execution of scripts
                                  -            //after it. But telling Gecko we expect async gets us the behavior
                                  -            //we want -- execute it whenever it is finished downloading. Only
                                  -            //Helps Firefox 3.6+
                                  -            //Allow some URLs to not be fetched async. Mostly helps the order!
                                  -            //plugin
                                  -            node.async = !s.skipAsync[url];
                                  -
                                  -            node.setAttribute("data-requirecontext", contextName);
                                  -            node.setAttribute("data-requiremodule", moduleName);
                                  -
                                  -            //Set up load listener.
                                  -            if (node.addEventListener) {
                                  -                node.addEventListener("load", callback, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know. IE (at least 6-8) do not fire
                                  -                //script onload right after executing the script, so
                                  -                //we cannot tie the anonymous require.def call to a name.
                                  -                //However, IE reports the script as being in "interactive"
                                  -                //readyState at the time of the require.def call.
                                  -                useInteractive = true;
                                  -                node.attachEvent("onreadystatechange", callback);
                                  -            }
                                  -            node.src = url;
                                  -
                                  -            //For some cache cases in IE 6-8, the script executes before the end
                                  -            //of the appendChild execution, so to tie an anonymous require.def
                                  -            //call to the module name (which is stored on the node), hold on
                                  -            //to a reference to this node, but clear after the DOM insertion.
                                  -            currentlyAddingScript = node;
                                  -            if (baseElement) {
                                  -                s.head.insertBefore(node, baseElement);
                                  -            } else {
                                  -                s.head.appendChild(node);
                                  -            }
                                  -            currentlyAddingScript = null;
                                  -            return node;
                                  -        } else if (isWebWorker) {
                                  -            //In a web worker, use importScripts. This is not a very
                                  -            //efficient use of importScripts, importScripts will block until
                                  -            //its script is downloaded and evaluated. However, if web workers
                                  -            //are in play, the expectation that a build has been done so that
                                  -            //only one script needs to be loaded anyway. This may need to be
                                  -            //reevaluated if other use cases become common.
                                  -            context = s.contexts[contextName];
                                  -            loaded = context.loaded;
                                  -            loaded[moduleName] = false;
                                  -
                                  -            importScripts(url);
                                  -
                                  -            //Account for anonymous modules
                                  -            req.completeLoad(moduleName, context);
                                  -        }
                                  -        return null;
                                  -    };
                                  -
                                  -    //Determine what baseUrl should be if not already defined via a require config object
                                  -    s.baseUrl = cfg.baseUrl;
                                  -    if (isBrowser && (!s.baseUrl || !s.head)) {
                                  -        //Figure out baseUrl. Get it from the script tag with require.js in it.
                                  -        scripts = document.getElementsByTagName("script");
                                  -        if (cfg.baseUrlMatch) {
                                  -            rePkg = cfg.baseUrlMatch;
                                  -        } else {
                                  -            //>>includeStart("jquery", pragmas.jquery);
                                  -            rePkg = /(requireplugins-|require-)?jquery[\-\d\.]*(min)?\.js(\W|$)/i;
                                  -            //>>includeEnd("jquery");
                                  -
                                  -            //>>includeStart("dojoConvert", pragmas.dojoConvert);
                                  -            rePkg = /dojo\.js(\W|$)/i;
                                  -            //>>includeEnd("dojoConvert");
                                  -
                                  -            //>>excludeStart("dojoConvert", pragmas.dojoConvert);
                                  -
                                  -            //>>excludeStart("jquery", pragmas.jquery);
                                  -            rePkg = /(allplugins-)?require\.js(\W|$)/i;
                                  -            //>>excludeEnd("jquery");
                                  -
                                  -            //>>excludeEnd("dojoConvert");
                                  -        }
                                  -
                                  -        for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -            //Set the "head" where we can append children by
                                  -            //using the script's parent.
                                  -            if (!s.head) {
                                  -                s.head = script.parentNode;
                                  -            }
                                  -
                                  -            //Look for a data-main attribute to set main script for the page
                                  -            //to load.
                                  -            if (!dataMain && (dataMain = script.getAttribute('data-main'))) {
                                  -                cfg.deps = cfg.deps ? cfg.deps.concat(dataMain) : [dataMain];
                                  -
                                  -                //Favor using data-main tag as the base URL instead of
                                  -                //trying to pattern-match src values.
                                  -                if (!cfg.baseUrl && (src = script.src)) {
                                  -                    src = src.split('/');
                                  -                    src.pop();
                                  -                    //Make sure current config gets the value.
                                  -                    s.baseUrl = cfg.baseUrl = src.length ? src.join('/') : './';
                                  -                }
                                  -            }
                                  -
                                  -            //Using .src instead of getAttribute to get an absolute URL.
                                  -            //While using a relative URL will be fine for script tags, other
                                  -            //URLs used for text! resources that use XHR calls might benefit
                                  -            //from an absolute URL.
                                  -            if (!s.baseUrl && (src = script.src)) {
                                  -                m = src.match(rePkg);
                                  -                if (m) {
                                  -                    s.baseUrl = src.substring(0, m.index);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    //>>excludeStart("requireExcludePageLoad", pragmas.requireExcludePageLoad);
                                  -    //****** START page load functionality ****************
                                  -    /**
                                  -     * Sets the page as loaded and triggers check for all modules loaded.
                                  -     */
                                  -    req.pageLoaded = function () {
                                  -        if (!s.isPageLoaded) {
                                  -            s.isPageLoaded = true;
                                  -            if (scrollIntervalId) {
                                  -                clearInterval(scrollIntervalId);
                                  -            }
                                  -
                                  -            //Part of a fix for FF < 3.6 where readyState was not set to
                                  -            //complete so libraries like jQuery that check for readyState
                                  -            //after page load where not getting initialized correctly.
                                  -            //Original approach suggested by Andrea Giammarchi:
                                  -            //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
                                  -            //see other setReadyState reference for the rest of the fix.
                                  -            if (setReadyState) {
                                  -                document.readyState = "complete";
                                  -            }
                                  -
                                  -            req.callReady();
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Internal function that calls back any ready functions. If you are
                                  -     * integrating RequireJS with another library without require.ready support,
                                  -     * you can define this method to call your page ready code instead.
                                  -     */
                                  -    req.callReady = function () {
                                  -        var callbacks = s.readyCalls, i, callback, contexts, context, prop;
                                  -
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            if (callbacks.length) {
                                  -                s.readyCalls = [];
                                  -                for (i = 0; (callback = callbacks[i]); i++) {
                                  -                    callback();
                                  -                }
                                  -            }
                                  -
                                  -            //If jQuery with readyWait is being tracked, updated its
                                  -            //readyWait count.
                                  -            contexts = s.contexts;
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    if (context.jQueryIncremented) {
                                  -                        context.jQuery.readyWait -= 1;
                                  -                        context.jQueryIncremented = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Registers functions to call when the page is loaded
                                  -     */
                                  -    req.ready = function (callback) {
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            callback();
                                  -        } else {
                                  -            s.readyCalls.push(callback);
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    if (isBrowser) {
                                  -        if (document.addEventListener) {
                                  -            //Standards. Hooray! Assumption here that if standards based,
                                  -            //it knows about DOMContentLoaded.
                                  -            document.addEventListener("DOMContentLoaded", req.pageLoaded, false);
                                  -            window.addEventListener("load", req.pageLoaded, false);
                                  -            //Part of FF < 3.6 readystate fix (see setReadyState refs for more info)
                                  -            if (!document.readyState) {
                                  -                setReadyState = true;
                                  -                document.readyState = "loading";
                                  -            }
                                  -        } else if (window.attachEvent) {
                                  -            window.attachEvent("onload", req.pageLoaded);
                                  -
                                  -            //DOMContentLoaded approximation, as found by Diego Perini:
                                  -            //http://javascript.nwbox.com/IEContentLoaded/
                                  -            if (self === self.top) {
                                  -                scrollIntervalId = setInterval(function () {
                                  -                    try {
                                  -                        //From this ticket:
                                  -                        //http://bugs.dojotoolkit.org/ticket/11106,
                                  -                        //In IE HTML Application (HTA), such as in a selenium test,
                                  -                        //javascript in the iframe can't see anything outside
                                  -                        //of it, so self===self.top is true, but the iframe is
                                  -                        //not the top window and doScroll will be available
                                  -                        //before document.body is set. Test document.body
                                  -                        //before trying the doScroll trick.
                                  -                        if (document.body) {
                                  -                            document.documentElement.doScroll("left");
                                  -                            req.pageLoaded();
                                  -                        }
                                  -                    } catch (e) {}
                                  -                }, 30);
                                  -            }
                                  -        }
                                  -
                                  -        //Check if document already complete, and if so, just trigger page load
                                  -        //listeners. NOTE: does not work with Firefox before 3.6. To support
                                  -        //those browsers, manually call require.pageLoaded().
                                  -        if (document.readyState === "complete") {
                                  -            req.pageLoaded();
                                  -        }
                                  -    }
                                  -    //****** END page load functionality ****************
                                  -    //>>excludeEnd("requireExcludePageLoad");
                                  -
                                  -    //Set up default context. If require was a configuration object, use that as base config.
                                  -    req(cfg);
                                  -
                                  -    //If modules are built into require.js, then need to make sure dependencies are
                                  -    //traced. Use a setTimeout in the browser world, to allow all the modules to register
                                  -    //themselves. In a non-browser env, assume that modules are not built into require.js,
                                  -    //which seems odd to do on the server.
                                  -    if (typeof setTimeout !== "undefined") {
                                  -        setTimeout(function () {
                                  -            var ctx = s.contexts[(cfg.context || defContextName)];
                                  -            //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
                                  -            //make sure to hold onto it for readyWait triggering.
                                  -            jQueryCheck(ctx);
                                  -            resume(ctx);
                                  -        }, 0);
                                  -    }
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require/i18n.js b/branches/flexBox/sandbox/HelloModule/requirejs/require/i18n.js
                                  deleted file mode 100644
                                  index 8e5a65fd..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require/i18n.js
                                  +++ /dev/null
                                  @@ -1,326 +0,0 @@
                                  -/**
                                  - * @license RequireJS i18n Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint regexp: false, nomen: false, plusplus: false */
                                  -/*global require: false, navigator: false */
                                  -"use strict";
                                  -
                                  -/**
                                  - * This plugin handles i18n! prefixed modules. It does the following:
                                  - *
                                  - * 1) A regular module can have a dependency on an i18n bundle, but the regular
                                  - * module does not want to specify what locale to load. So it just specifies
                                  - * the top-level bundle, like "i18n!nls/colors".
                                  - *
                                  - * This plugin will load the i18n bundle at nls/colors, see that it is a root/master
                                  - * bundle since it does not have a locale in its name. It will then try to find
                                  - * the best match locale available in that master bundle, then request all the
                                  - * locale pieces for that best match locale. For instance, if the locale is "en-us",
                                  - * then the plugin will ask for the "en-us", "en" and "root" bundles to be loaded
                                  - * (but only if they are specified on the master bundle).
                                  - *
                                  - * Once all the bundles for the locale pieces load, then it mixes in all those
                                  - * locale pieces into each other, then finally sets the context.defined value
                                  - * for the nls/colors bundle to be that mixed in locale.
                                  - *
                                  - * 2) A regular module specifies a specific locale to load. For instance,
                                  - * i18n!nls/fr-fr/colors. In this case, the plugin needs to load the master bundle
                                  - * first, at nls/colors, then figure out what the best match locale is for fr-fr,
                                  - * since maybe only fr or just root is defined for that locale. Once that best
                                  - * fit is found, all of its locale pieces need to have their bundles loaded.
                                  - *
                                  - * Once all the bundles for the locale pieces load, then it mixes in all those
                                  - * locale pieces into each other, then finally sets the context.defined value
                                  - * for the nls/fr-fr/colors bundle to be that mixed in locale.
                                  - */
                                  -(function () {
                                  -    //regexp for reconstructing the master bundle name from parts of the regexp match
                                  -    //nlsRegExp.exec("foo/bar/baz/nls/en-ca/foo") gives:
                                  -    //["foo/bar/baz/nls/en-ca/foo", "foo/bar/baz/nls/", "/", "/", "en-ca", "foo"]
                                  -    //nlsRegExp.exec("foo/bar/baz/nls/foo") gives:
                                  -    //["foo/bar/baz/nls/foo", "foo/bar/baz/nls/", "/", "/", "foo", ""]
                                  -    //so, if match[5] is blank, it means this is the top bundle definition.
                                  -    var nlsRegExp = /(^.*(^|\/)nls(\/|$))([^\/]*)\/?([^\/]*)/,
                                  -        empty = {};
                                  -
                                  -    function getWaiting(name, context) {
                                  -        var nlswAry = context.nlsWaiting;
                                  -        return nlswAry[name] ||
                                  -               //Push a new waiting object on the nlsWaiting array, but also put
                                  -               //a shortcut lookup by name to the object on the array.
                                  -               (nlswAry[name] = nlswAry[(nlswAry.push({ _name: name}) - 1)]);
                                  -    }
                                  -
                                  -    /**
                                  -     * Makes sure all the locale pieces are loaded, and finds the best match
                                  -     * for the requested locale.
                                  -     */
                                  -    function resolveLocale(masterName, bundle, locale, context) {
                                  -        //Break apart the locale to get the parts.
                                  -        var i, parts, toLoad, nlsw, loc, val, bestLoc = "root";
                                  -
                                  -        parts = locale.split("-");
                                  -
                                  -        //Now see what bundles exist for each country/locale.
                                  -        //Want to walk up the chain, so if locale is en-us-foo,
                                  -        //look for en-us-foo, en-us, en, then root.
                                  -        toLoad = [];
                                  -
                                  -        nlsw = getWaiting(masterName, context);
                                  -
                                  -        for (i = parts.length; i > -1; i--) {
                                  -            loc = i ? parts.slice(0, i).join("-") : "root";
                                  -            val = bundle[loc];
                                  -            if (val) {
                                  -                //Store which bundle to use for the default bundle definition.
                                  -                if (locale === context.config.locale && !nlsw._match) {
                                  -                    nlsw._match = loc;
                                  -                }
                                  -
                                  -                //Store the best match for the target locale
                                  -                if (bestLoc === "root") {
                                  -                    bestLoc = loc;
                                  -                }
                                  -
                                  -                //Track that the locale needs to be resolved with its parts.
                                  -                //Mark what locale should be used when resolving.
                                  -                nlsw[loc] = loc;
                                  -
                                  -                //If locale value is true, it means it is a resource that
                                  -                //needs to be loaded. Track it to load if it has not already
                                  -                //been asked for.
                                  -                if (val === true) {
                                  -                    //split off the bundl name from master name and insert the
                                  -                    //locale before the bundle name. So, if masterName is
                                  -                    //some/path/nls/colors, then the locale fr-fr's bundle name should
                                  -                    //be some/path/nls/fr-fr/colors
                                  -                    val = masterName.split("/");
                                  -                    val.splice(-1, 0, loc);
                                  -                    val = val.join("/");
                                  -
                                  -                    if (!context.specified[val] && !(val in context.loaded) && !context.defined[val]) {
                                  -                        context.defPlugin[val] = 'i18n';
                                  -                        toLoad.push(val);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If locale was not an exact match, store the closest match for it.
                                  -        if (bestLoc !== locale) {
                                  -            if (context.defined[bestLoc]) {
                                  -                //Already got it. Easy peasy lemon squeezy.
                                  -                context.defined[locale] = context.defined[bestLoc];
                                  -            } else {
                                  -                //Need to wait for things to load then define it.
                                  -                nlsw[locale] = bestLoc;
                                  -            }
                                  -        }
                                  -
                                  -        //Load any bundles that are still needed.
                                  -        if (toLoad.length) {
                                  -            require(toLoad, context.contextName);
                                  -        }
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "i18n",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            var i, match, nlsw, bundle, master, toLoad, obj = context.defined[name];
                                  -
                                  -            //All i18n modules must match the nls module name structure.
                                  -            match = nlsRegExp.exec(name);
                                  -            //If match[5] is blank, it means this is the top bundle definition,
                                  -            //so it does not have to be handled. Only deal with ones that have a locale
                                  -            //(a match[4] value but no match[5])
                                  -            if (match[5]) {
                                  -                master = match[1] + match[5];
                                  -
                                  -                //Track what locale bundle need to be generated once all the modules load.
                                  -                nlsw = getWaiting(master, context);
                                  -                nlsw[match[4]] = match[4];
                                  -
                                  -                bundle = context.nls[master];
                                  -                if (!bundle) {
                                  -                    //No master bundle yet, ask for it.
                                  -                    context.defPlugin[master] = 'i18n';
                                  -                    require([master], context.contextName);
                                  -                    bundle = context.nls[master] = {};
                                  -                }
                                  -                //For nls modules, the callback is just a regular object,
                                  -                //so save it off in the bundle now.
                                  -                bundle[match[4]] = callback;
                                  -            } else {
                                  -                //Integrate bundle into the nls area.
                                  -                bundle = context.nls[name];
                                  -                if (bundle) {
                                  -                    //A specific locale already started the bundle object.
                                  -                    //Do a mixin (which will not overwrite the locale property
                                  -                    //on the bundle that has the previously loaded locale's info)
                                  -                    require.mixin(bundle, obj);
                                  -                } else {
                                  -                    bundle = context.nls[name] = obj;
                                  -                }
                                  -                context.nlsRootLoaded[name] = true;
                                  -
                                  -                //Make sure there are no locales waiting to be resolved.
                                  -                toLoad = context.nlsToLoad[name];
                                  -                if (toLoad) {
                                  -                    delete context.nlsToLoad[name];
                                  -                    for (i = 0; i < toLoad.length; i++) {
                                  -                        resolveLocale(name, bundle, toLoad[i], context);
                                  -                    }
                                  -                }
                                  -
                                  -                resolveLocale(name, bundle, context.config.locale, context);
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                nlsWaiting: [],
                                  -                nls: {},
                                  -                nlsRootLoaded: {},
                                  -                nlsToLoad: {}
                                  -            });
                                  -            if (!context.config.locale) {
                                  -                context.config.locale = typeof navigator === "undefined" ? "root" :
                                  -                        (navigator.language || navigator.userLanguage || "root").toLowerCase();
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            //Make sure the root bundle is loaded, to check if we can support
                                  -            //loading the requested locale, or if a different one needs
                                  -            //to be chosen.
                                  -            var masterName, context = require.s.contexts[contextName], bundle,
                                  -                match = nlsRegExp.exec(name), locale = match[4];
                                  -
                                  -            //If match[5] is blank, it means this is the top bundle definition,
                                  -            //so it does not have to be handled. Only deal with ones that have a locale
                                  -            //(a match[4] value but no match[5])
                                  -            if (match[5]) {
                                  -                //locale-specific bundle
                                  -                masterName = match[1] + match[5];
                                  -                bundle = context.nls[masterName];
                                  -                if (context.nlsRootLoaded[masterName] && bundle) {
                                  -                    resolveLocale(masterName, bundle, locale, context);
                                  -                } else {
                                  -                    //Store this locale to figure out after masterName is loaded and load masterName.
                                  -                    (context.nlsToLoad[masterName] || (context.nlsToLoad[masterName] = [])).push(locale);
                                  -                    context.defPlugin[masterName] = 'i18n';
                                  -                    require([masterName], contextName);
                                  -                }
                                  -            } else {
                                  -                //Top-level bundle. Just call regular load, if not already loaded
                                  -                if (!context.nlsRootLoaded[name]) {
                                  -                    context.defPlugin[name] = 'i18n';
                                  -                    require.load(name, contextName);
                                  -                }
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //i18n bundles are always defined as objects for their "dependencies",
                                  -            //and that object is already processed in the require method, no need to
                                  -            //do work in here.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.nlsWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded.
                                  -         */
                                  -        orderDeps: function (context) {
                                  -            //Clear up state since further processing could
                                  -            //add more things to fetch.
                                  -            var i, j, master, msWaiting, bundle, parts, moduleSuffix, mixed,
                                  -                modulePrefix, loc, defLoc, locPart, nlsWaiting = context.nlsWaiting,
                                  -                bestFit;
                                  -            context.nlsWaiting = [];
                                  -            context.nlsToLoad = {};
                                  -
                                  -            //First, properly mix in any nls bundles waiting to happen.
                                  -            for (i = 0; (msWaiting = nlsWaiting[i]); i++) {
                                  -                //Each property is a master bundle name.
                                  -                master = msWaiting._name;
                                  -                bundle = context.nls[master];
                                  -                defLoc = null;
                                  -
                                  -                //Create the module name parts from the master name. So, if master
                                  -                //is foo/nls/bar, then the parts should be prefix: "foo/nls",
                                  -                // suffix: "bar", and the final locale's module name will be foo/nls/locale/bar
                                  -                parts = master.split("/");
                                  -                modulePrefix = parts.slice(0, parts.length - 1).join("/");
                                  -                moduleSuffix = parts[parts.length - 1];
                                  -                //Cycle through the locale props on the waiting object and combine
                                  -                //the locales together.
                                  -                for (loc in msWaiting) {
                                  -                    if (loc !== "_name" && !(loc in empty)) {
                                  -                        if (loc === "_match") {
                                  -                            //Found default locale to use for the top-level bundle name.
                                  -                            defLoc = msWaiting[loc];
                                  -                        
                                  -                        } else if (msWaiting[loc] !== loc) {
                                  -                            //A "best fit" locale, store it off to the end and handle
                                  -                            //it at the end by just assigning the best fit value, since
                                  -                            //after this for loop, the best fit locale will be defined.
                                  -                            (bestFit || (bestFit = {}))[loc] = msWaiting[loc];
                                  -                        } else {
                                  -                            //Mix in the properties of this locale together.
                                  -                            //Split the locale into pieces.
                                  -                            mixed = {};
                                  -                            parts = loc.split("-");
                                  -                            for (j = parts.length; j > 0; j--) {
                                  -                                locPart = parts.slice(0, j).join("-");
                                  -                                if (locPart !== "root" && bundle[locPart]) {
                                  -                                    require.mixin(mixed, bundle[locPart]);
                                  -                                }
                                  -                            }
                                  -                            if (bundle.root) {
                                  -                                require.mixin(mixed, bundle.root);
                                  -                            }
                                  -
                                  -                            context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = mixed;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Finally define the default locale. Wait to the end of the property
                                  -                //loop above so that the default locale bundle has been properly mixed
                                  -                //together.
                                  -                context.defined[master] = context.defined[modulePrefix + "/" + defLoc + "/" + moduleSuffix];
                                  -                
                                  -                //Handle any best fit locale definitions.
                                  -                if (bestFit) {
                                  -                    for (loc in bestFit) {
                                  -                        if (!(loc in empty)) {
                                  -                            context.defined[modulePrefix + "/" + loc + "/" + moduleSuffix] = context.defined[modulePrefix + "/" + bestFit[loc] + "/" + moduleSuffix];
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    });
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require/order.js b/branches/flexBox/sandbox/HelloModule/requirejs/require/order.js
                                  deleted file mode 100644
                                  index 61876412..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require/order.js
                                  +++ /dev/null
                                  @@ -1,138 +0,0 @@
                                  -/**
                                  - * @license RequireJS order Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint nomen: false, plusplus: false */
                                  -/*global require: false, window: false, document: false, setTimeout: false */
                                  -"use strict";
                                  -
                                  -(function () {
                                  -    //Sadly necessary browser inference due to differences in the way
                                  -    //that browsers load and execute dynamically inserted javascript
                                  -    //and whether the script/cache method works.
                                  -    //Currently, Gecko and Opera do not load/fire onload for scripts with
                                  -    //type="script/cache" but they execute injected scripts in order
                                  -    //unless the 'async' flag is present.
                                  -    //However, this is all changing in latest browsers implementing HTML5
                                  -    //spec. Firefox nightly supports using the .async true by default, and
                                  -    //if false, then it will execute in order. Favor that test first for forward
                                  -    //compatibility. However, it is unclear if webkit/IE will follow suit.
                                  -    //Latest webkit breaks the script/cache trick.
                                  -    var supportsInOrderExecution = (document.createElement("script").async ||
                                  -                               (window.opera && Object.prototype.toString.call(window.opera) === "[object Opera]") ||
                                  -                               //If Firefox 2 does not have to be supported, then
                                  -                               //a better check may be:
                                  -                               //('mozIsLocallyAvailable' in window.navigator)
                                  -                               ("MozAppearance" in document.documentElement.style)),
                                  -        readyRegExp = /^(complete|loaded)$/;
                                  -
                                  -    //Callback used by the type="script/cache" callback that indicates a script
                                  -    //has finished downloading.
                                  -    function scriptCacheCallback(evt) {
                                  -        var node = evt.currentTarget || evt.srcElement, i,
                                  -            context, contextName, moduleName, waiting, cached;
                                  -
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = require.s.contexts[contextName];
                                  -            waiting = context.orderWaiting;
                                  -            cached = context.orderCached;
                                  -
                                  -            //Mark this cache request as loaded
                                  -            cached[moduleName] = true;
                                  -
                                  -            //Find out how many ordered modules have loaded
                                  -            for (i = 0; cached[waiting[i]]; i++) {}
                                  -            if (i > 0) {
                                  -                require(waiting.splice(0, i), contextName);
                                  -            }
                                  -
                                  -            //If no other order cache items are in the queue, do some cleanup.
                                  -            if (!waiting.length) {
                                  -                context.orderCached = {};
                                  -            }
                                  -
                                  -            //Remove this script tag from the DOM
                                  -            //Use a setTimeout for cleanup because some older IE versions vomit
                                  -            //if removing a script node while it is being evaluated.
                                  -            setTimeout(function () {
                                  -                node.parentNode.removeChild(node);
                                  -            }, 15);
                                  -        }
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "order",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            //No-op, require never gets these order items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                orderWaiting: [],
                                  -                orderCached: {}
                                  -            });
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            var context = require.s.contexts[contextName],
                                  -                url = require.nameToUrl(name, null, contextName);
                                  -
                                  -            //Make sure the async attribute is not set for any pathway involving
                                  -            //this script.
                                  -            require.s.skipAsync[url] = true;
                                  -            if (supportsInOrderExecution) {
                                  -                //Just a normal script tag append, but without async attribute
                                  -                //on the script.
                                  -                require([name], contextName);
                                  -            } else {
                                  -                //Credit to LABjs author Kyle Simpson for finding that scripts
                                  -                //with type="script/cache" allow scripts to be downloaded into
                                  -                //browser cache but not executed. Use that
                                  -                //so that subsequent addition of a real type="text/javascript"
                                  -                //tag will cause the scripts to be executed immediately in the
                                  -                //correct order.
                                  -                context.orderWaiting.push(name);
                                  -                context.loaded[name] = false;
                                  -                require.attach(url, contextName, name, scriptCacheCallback, "script/cache");
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //No-op, checkDeps never gets these order items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.orderWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded. Not needed for this plugin.
                                  -         * State is reset as part of scriptCacheCallback. 
                                  -         */
                                  -        orderDeps: function (context) {
                                  -        }
                                  -    });
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require/rhino.js b/branches/flexBox/sandbox/HelloModule/requirejs/require/rhino.js
                                  deleted file mode 100644
                                  index a99d6d25..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require/rhino.js
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -/**
                                  - * @license RequireJS rhino Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*global require: false, readFile: false */
                                  -
                                  -/*
                                  -TODO: Work out relative paths, that use ./ and such, and allow loading normal
                                  -CommonJS modules, by overriding require.get().
                                  -*/
                                  -
                                  -/*globals load: false, java: false */
                                  -"use strict";
                                  -
                                  -(function () {
                                  -
                                  -    var fileUtil = {
                                  -        backSlashRegExp: /\\/g,
                                  -    
                                  -        getLineSeparator: function () {
                                  -            return java.lang.System.getProperty("line.separator"); //Java String
                                  -        }
                                  -    };
                                  -
                                  -    require.load = function (moduleName, contextName) {
                                  -        var url = require.nameToUrl(moduleName, null, contextName),
                                  -            context = require.s.contexts[contextName];
                                  -    
                                  -        //isDone is used by require.ready()
                                  -        require.s.isDone = false;
                                  -    
                                  -        //Indicate a the module is in process of loading.
                                  -        context.loaded[moduleName] = false;
                                  -    
                                  -        load(url);
                                  -    
                                  -        //Support anonymous modules.
                                  -        require.completeLoad(moduleName, context);
                                  -    };
                                  -    
                                  -    //Adapter to get text plugin to work.    
                                  -    require.fetchText = function (url, callback) {
                                  -        var encoding = "utf-8",
                                  -            file = new java.io.File(url),
                                  -            lineSeparator = fileUtil.getLineSeparator(),
                                  -            input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
                                  -            stringBuffer, line,
                                  -            content = '';
                                  -        try {
                                  -            stringBuffer = new java.lang.StringBuffer();
                                  -            line = input.readLine();
                                  -
                                  -            // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
                                  -            // http://www.unicode.org/faq/utf_bom.html
                                  -            
                                  -            // Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
                                  -            // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
                                  -            if (line && line.length() && line.charAt(0) === 0xfeff) {
                                  -                // Eat the BOM, since we've already found the encoding on this file,
                                  -                // and we plan to concatenating this buffer with others; the BOM should
                                  -                // only appear at the top of a file.
                                  -                line = line.substring(1);
                                  -            }
                                  -
                                  -            stringBuffer.append(line);
                                  -
                                  -            while ((line = input.readLine()) !== null) {
                                  -                stringBuffer.append(lineSeparator);
                                  -                stringBuffer.append(line);
                                  -            }
                                  -            //Make sure we return a JavaScript string and not a Java string.
                                  -            content = String(stringBuffer.toString()); //String
                                  -        } finally {
                                  -            input.close();
                                  -        }
                                  -        callback(content);
                                  -    };
                                  -
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require/text.js b/branches/flexBox/sandbox/HelloModule/requirejs/require/text.js
                                  deleted file mode 100644
                                  index 85bf06c3..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require/text.js
                                  +++ /dev/null
                                  @@ -1,195 +0,0 @@
                                  -/**
                                  - * @license RequireJS text Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint regexp: false, nomen: false, plusplus: false */
                                  -/*global require: false, XMLHttpRequest: false, ActiveXObject: false */
                                  -"use strict";
                                  -
                                  -(function () {
                                  -    var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
                                  -        xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
                                  -        bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im;
                                  -
                                  -    if (!require.textStrip) {
                                  -        require.textStrip = function (text) {
                                  -            //Strips <?xml ...?> declarations so that external SVG and XML
                                  -            //documents can be added to a document without worry. Also, if the string
                                  -            //is an HTML document, only the part inside the body tag is returned.
                                  -            if (text) {
                                  -                text = text.replace(xmlRegExp, "");
                                  -                var matches = text.match(bodyRegExp);
                                  -                if (matches) {
                                  -                    text = matches[1];
                                  -                }
                                  -            } else {
                                  -                text = "";
                                  -            }
                                  -            return text;
                                  -        };
                                  -    }
                                  -
                                  -    //Upgrade require to add some methods for XHR handling. But it could be that
                                  -    //this require is used in a non-browser env, so detect for existing method
                                  -    //before attaching one.
                                  -    if (!require.getXhr) {
                                  -        require.getXhr = function () {
                                  -            //Would love to dump the ActiveX crap in here. Need IE 6 to die first.
                                  -            var xhr, i, progId;
                                  -            if (typeof XMLHttpRequest !== "undefined") {
                                  -                return new XMLHttpRequest();
                                  -            } else {
                                  -                for (i = 0; i < 3; i++) {
                                  -                    progId = progIds[i];
                                  -                    try {
                                  -                        xhr = new ActiveXObject(progId);
                                  -                    } catch (e) {}
                                  -
                                  -                    if (xhr) {
                                  -                        progIds = [progId];  // so faster next time
                                  -                        break;
                                  -                    }
                                  -                }   
                                  -            }
                                  -
                                  -            if (!xhr) {
                                  -                throw new Error("require.getXhr(): XMLHttpRequest not available");
                                  -            }
                                  -
                                  -            return xhr;
                                  -        };
                                  -    }
                                  -    
                                  -    if (!require.fetchText) {
                                  -        require.fetchText = function (url, callback) {
                                  -            var xhr = require.getXhr();
                                  -            xhr.open('GET', url, true);
                                  -            xhr.onreadystatechange = function (evt) {
                                  -                //Do not explicitly handle errors, those should be
                                  -                //visible via console output in the browser.
                                  -                if (xhr.readyState === 4) {
                                  -                    callback(xhr.responseText);
                                  -                }
                                  -            };
                                  -            xhr.send(null);
                                  -        };
                                  -    }
                                  -
                                  -    require.plugin({
                                  -        prefix: "text",
                                  -
                                  -        /**
                                  -         * This callback is prefix-specific, only gets called for this prefix
                                  -         */
                                  -        require: function (name, deps, callback, context) {
                                  -            //No-op, require never gets these text items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a new context is defined. Use this to store
                                  -         * context-specific info on it.
                                  -         */
                                  -        newContext: function (context) {
                                  -            require.mixin(context, {
                                  -                text: {},
                                  -                textWaiting: []
                                  -            });
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when a dependency needs to be loaded.
                                  -         */
                                  -        load: function (name, contextName) {
                                  -            //Name has format: some.module!filext!strip!text
                                  -            //The strip and text parts are optional.
                                  -            //if strip is present, then that means only get the string contents
                                  -            //inside a body tag in an HTML string. For XML/SVG content it means
                                  -            //removing the <?xml ...?> declarations so the content can be inserted
                                  -            //into the current doc without problems.
                                  -            //If text is present, it is the actual text of the file.
                                  -            var strip = false, text = null, key, url, index = name.indexOf("."),
                                  -                modName = name.substring(0, index), fullKey,
                                  -                ext = name.substring(index + 1, name.length),
                                  -                context = require.s.contexts[contextName],
                                  -                tWaitAry = context.textWaiting;
                                  -
                                  -            index = ext.indexOf("!");
                                  -            if (index !== -1) {
                                  -                //Pull off the strip arg.
                                  -                strip = ext.substring(index + 1, ext.length);
                                  -                ext = ext.substring(0, index);
                                  -                index = strip.indexOf("!");
                                  -                if (index !== -1 && strip.substring(0, index) === "strip") {
                                  -                    //Pull off the text.
                                  -                    text = strip.substring(index + 1, strip.length);
                                  -                    strip = "strip";
                                  -                } else if (strip !== "strip") {
                                  -                    //strip is actually the inlined text.
                                  -                    text = strip;
                                  -                    strip = null;
                                  -                }
                                  -            }
                                  -            key = modName + "!" + ext;
                                  -            fullKey = strip ? key + "!" + strip : key;
                                  -
                                  -            //Store off text if it is available for the given key and be done.
                                  -            if (text !== null && !context.text[key]) {
                                  -                context.defined[name] = context.text[key] = text;
                                  -                return;
                                  -            }
                                  -
                                  -            //If text is not available, load it.
                                  -            if (!context.text[key] && !context.textWaiting[key] && !context.textWaiting[fullKey]) {
                                  -                //Keep track that the fullKey needs to be resolved, during the
                                  -                //orderDeps stage.
                                  -                if (!tWaitAry[fullKey]) {
                                  -                    tWaitAry[fullKey] = tWaitAry[(tWaitAry.push({
                                  -                        name: name,
                                  -                        key: key,
                                  -                        fullKey: fullKey,
                                  -                        strip: !!strip
                                  -                    }) - 1)];
                                  -                }
                                  -
                                  -                //Load the text.
                                  -                url = require.nameToUrl(modName, "." + ext, contextName);
                                  -                context.loaded[name] = false;
                                  -                require.fetchText(url, function (text) {
                                  -                    context.text[key] = text;
                                  -                    context.loaded[name] = true;
                                  -                });
                                  -            }
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when the dependencies of a module are checked.
                                  -         */
                                  -        checkDeps: function (name, deps, context) {
                                  -            //No-op, checkDeps never gets these text items, they are always
                                  -            //a dependency, see load for the action.
                                  -        },
                                  -
                                  -        /**
                                  -         * Called to determine if a module is waiting to load.
                                  -         */
                                  -        isWaiting: function (context) {
                                  -            return !!context.textWaiting.length;
                                  -        },
                                  -
                                  -        /**
                                  -         * Called when all modules have been loaded.
                                  -         */
                                  -        orderDeps: function (context) {
                                  -            //Clear up state since further processing could
                                  -            //add more things to fetch.
                                  -            var i, dep, text, tWaitAry = context.textWaiting;
                                  -            context.textWaiting = [];
                                  -            for (i = 0; (dep = tWaitAry[i]); i++) {
                                  -                text = context.text[dep.key];
                                  -                context.defined[dep.name] = dep.strip ? require.textStrip(text) : text;
                                  -            }
                                  -        }
                                  -    });
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/HelloModule/requirejs/require/transportD.js b/branches/flexBox/sandbox/HelloModule/requirejs/require/transportD.js
                                  deleted file mode 100644
                                  index 0ad9b32c..00000000
                                  --- a/branches/flexBox/sandbox/HelloModule/requirejs/require/transportD.js
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -/**
                                  - * @license RequireJS transportD Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -/*jslint  */
                                  -/*global require: false */
                                  -"use strict";
                                  -
                                  -/**
                                  - * An adapter for the CommonJS Transport/D proposal:
                                  - * http://wiki.commonjs.org/wiki/Modules/Transport/D
                                  - * NOTE: this integration does NOT support contexts, so only one version in the page.
                                  - * @param {Object} modules a dictionary of module names with module descriptors
                                  - * @param [Array] dependencies a list of module names that are dependencies for
                                  - * all the modules listed in the modules argument.
                                  - */
                                  -require.define = function (modules, dependencies) {
                                  -    var moduleName, descriptor;
                                  -    for (moduleName in modules) {
                                  -        if (modules.hasOwnProperty(moduleName)) {
                                  -            descriptor = modules[moduleName];
                                  -            require.def(
                                  -                moduleName,
                                  -                (descriptor.injects || ["require", "exports", "module"]).concat(dependencies || []),
                                  -                typeof descriptor === "function" ? descriptor : descriptor.factory
                                  -            );
                                  -        }
                                  -    }
                                  -};
                                  diff --git a/branches/flexBox/sandbox/beta.html b/branches/flexBox/sandbox/beta.html
                                  deleted file mode 100644
                                  index d1f70cba..00000000
                                  --- a/branches/flexBox/sandbox/beta.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>Firebug Lite 1.5 Beta Testing</title>
                                  -<script type="text/javascript" src="../build/firebug-lite-beta.js#debug"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = window.firebug || window.console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Beta Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Hello World</h2>
                                  -      <ul>
                                  -        <li><a href="#">One</a></li>
                                  -        <li><a href="#">Two</a></li>
                                  -        <li><a href="#">Three</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Just a test note
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/css/css.css b/branches/flexBox/sandbox/css/css.css
                                  deleted file mode 100644
                                  index 448a20d1..00000000
                                  --- a/branches/flexBox/sandbox/css/css.css
                                  +++ /dev/null
                                  @@ -1,4 +0,0 @@
                                  -div #build {
                                  -    position: absolute;
                                  -    height: 200px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/css/css.imported.css b/branches/flexBox/sandbox/css/css.imported.css
                                  deleted file mode 100644
                                  index d4eb7797..00000000
                                  --- a/branches/flexBox/sandbox/css/css.imported.css
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -div#build {
                                  -    color: red;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/css/test.html b/branches/flexBox/sandbox/css/test.html
                                  deleted file mode 100644
                                  index dbc3bfe6..00000000
                                  --- a/branches/flexBox/sandbox/css/test.html
                                  +++ /dev/null
                                  @@ -1,110 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../../content/firebug-lite-dev.js"></script>
                                  -<style type="text/css">
                                  -@import url("css.imported.css");
                                  -
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -ul li { 
                                  -  color: #333;
                                  -  padding: 2px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  height: 100px;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -<style type="text/css">
                                  -#dummy {
                                  -    color: yellow;
                                  -}
                                  -</style>
                                  -<link href="css.css" rel="stylesheet" type="text/css" />
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul style="padding-top:10px; padding-left:2px; padding-right:7px; padding-bottom: 20px; margin-top: 12px; margin-right: 22px; margin-left: 2px; margin-bottom: 7px; color: gray; overflow: auto;">
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/dom.html b/branches/flexBox/sandbox/dom.html
                                  deleted file mode 100644
                                  index 9707c1df..00000000
                                  --- a/branches/flexBox/sandbox/dom.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.5 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug-lite.js"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote,trace');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/domplate.html b/branches/flexBox/sandbox/domplate.html
                                  deleted file mode 100644
                                  index 0b651050..00000000
                                  --- a/branches/flexBox/sandbox/domplate.html
                                  +++ /dev/null
                                  @@ -1,125 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  
                                  -  <script type="text/javascript">
                                  -    var testDomplate = function()
                                  -    {
                                  -      test3();
                                  -    }
                                  -      
                                  -    window.ssonload = function()
                                  -    {
                                  -        var x = "local";
                                  -        eval("x=function(){alert(0)}");
                                  -        alert(x)
                                  -        alert(window.x)
                                  -        x();
                                  -    }    
                                  -    
                                  -    var test1 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.append({}, document.body, template);
                                  -        }    
                                  -    }    
                                  -    
                                  -    var test2 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.append({object: inputObject}, document.body, template);
                                  -        }    
                                  -    }
                                  -    
                                  -    
                                  -    var test3 = function()
                                  -    {
                                  -        var el = document.getElementById("d2");
                                  -        //el = document.body;
                                  -        
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                   BUTTON({"class": "green",
                                  -                          checked: "true",
                                  -                          type: "checkbox",
                                  -                          onclick: "$onButtonClick"},
                                  -                       "$object.label"
                                  -                    ),
                                  -            
                                  -                onButtonClick: function(event)
                                  -                {
                                  -                    alert("Hello World!");
                                  -                }
                                  -            });
                                  -            
                                  -            template.tag.insertAfter({object: inputObject}, el, template);
                                  -        }
                                  -    }
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -  </script>
                                  -  <script type="text/javascript" src="../content/firebug-lite-dev.js"></script>
                                  -  
                                  -  <!-- 
                                  -  <script src="../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <script src="zdomplate-1.1a.js" type="text/javascript"></script>
                                  -   -->
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <div id="d1">1</div>
                                  -  <div id="d2">2</div>
                                  -  <div id="d3">3</div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/dom-attributes.html b/branches/flexBox/sandbox/domplate/dom-attributes.html
                                  deleted file mode 100644
                                  index 907c535f..00000000
                                  --- a/branches/flexBox/sandbox/domplate/dom-attributes.html
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -                        
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                       BUTTON({"class": "green",
                                  -                              checked: "true",
                                  -                              type: "checkbox",
                                  -                              onclick: "$onButtonClick"},
                                  -                           "$object.label"
                                  -                        ),
                                  -
                                  -                    onButtonClick: function(event)
                                  -                    {
                                  -                        alert("Hello World!");
                                  -                    }
                                  -                });
                                  -
                                  -
                                  -            template.tag.replace({object: inputObject}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }  
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/dom-event.html b/branches/flexBox/sandbox/domplate/dom-event.html
                                  deleted file mode 100644
                                  index 9fb1a940..00000000
                                  --- a/branches/flexBox/sandbox/domplate/dom-event.html
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                            DIV({onclick: "$handleClick"},
                                  -
                                  -                               "$item"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    handleClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        alert(target.innerHTML);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/dom-properties.html b/branches/flexBox/sandbox/domplate/dom-properties.html
                                  deleted file mode 100644
                                  index 59649351..00000000
                                  --- a/branches/flexBox/sandbox/domplate/dom-properties.html
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var cars = [
                                  -              {name: "Honda Pilot", price: " $36,820 - $49,920"},
                                  -              {name: "Chevrolet Aveo", price: "$13,270 - $15,770"},
                                  -              {name: "Toyota Corolla", price: " $14,835 - $23,480"}
                                  -            ];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "array",
                                  -                            DIV({_myprop: "$item", onclick: "$onClick"},
                                  -                                "$item.name"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    onClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        var car = target.myprop;
                                  -                        alert(car.price);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: cars}, parentNode, template);
                                  -                            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/dynamic-class-attribute.html b/branches/flexBox/sandbox/domplate/dynamic-class-attribute.html
                                  deleted file mode 100644
                                  index 76030fda..00000000
                                  --- a/branches/flexBox/sandbox/domplate/dynamic-class-attribute.html
                                  +++ /dev/null
                                  @@ -1,71 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputData = ["Honda", "Chevrolet", "Toyota", "Ford", "Pontiac",
                                  -                "Dodge", "Mazda", "Nissan", "Volkswagen", "Hyundai"];
                                  -
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                DIV(
                                  -                  FOR("brand", "$carBrands",
                                  -                    DIV({"class": "carBrand $brand|getBrandClass",
                                  -                         $myFaforite: "$brand|isMyFavorite"},
                                  -                      "$brand"
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              isMyFavorite: function(brand) {
                                  -                return (brand == "Nissan");
                                  -              },
                                  -            
                                  -              getBrandClass: function(brand) {
                                  -                return "brand-" + brand;
                                  -              }
                                  -            });
                                  -            
                                  -            template.tag.replace({carBrands: inputData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .carBrand {
                                  -      font-weight: bold;
                                  -    }
                                  -    
                                  -    .myFaforite {
                                  -      color: red;
                                  -    }
                                  -    
                                  -    .brand-Ford {
                                  -      color: green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/for-loop-custom-iterator.html b/branches/flexBox/sandbox/domplate/for-loop-custom-iterator.html
                                  deleted file mode 100644
                                  index a1c28c9d..00000000
                                  --- a/branches/flexBox/sandbox/domplate/for-loop-custom-iterator.html
                                  +++ /dev/null
                                  @@ -1,64 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            var searchResult = {
                                  -              title: "corvete.jpg",
                                  -              summary: "Chevrolet Corvette",
                                  -              url: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              clickUrl: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              RefererUrl: "http://www.neiu.edu/~ssalas/FramePage.htm",
                                  -              FileSize: 103936,
                                  -              FileFormat: "jpeg",
                                  -              Height: 768,
                                  -              Width: 1024
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE(
                                  -                  FOR("member", "$object|getMembers",
                                  -                    TR(
                                  -                      TD("$member.label"),
                                  -                      TD("$member.value")
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              getMembers: function(object) {
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push({label: p, value: object[p]})
                                  -                return members;
                                  -              }
                                  -            });
                                  -
                                  -            template.tag.replace({object: searchResult}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/for-loop.html b/branches/flexBox/sandbox/domplate/for-loop.html
                                  deleted file mode 100644
                                  index 1ae3601a..00000000
                                  --- a/branches/flexBox/sandbox/domplate/for-loop.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                           DIV("$item")
                                  -                        )
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/hello-world.html b/branches/flexBox/sandbox/domplate/hello-world.html
                                  deleted file mode 100644
                                  index b59fb8aa..00000000
                                  --- a/branches/flexBox/sandbox/domplate/hello-world.html
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.replace({}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/input-data.html b/branches/flexBox/sandbox/domplate/input-data.html
                                  deleted file mode 100644
                                  index 78b3d3c6..00000000
                                  --- a/branches/flexBox/sandbox/domplate/input-data.html
                                  +++ /dev/null
                                  @@ -1,53 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var element = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.replace({object: inputObject}, element, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/pass-data.html b/branches/flexBox/sandbox/domplate/pass-data.html
                                  deleted file mode 100644
                                  index ea7ed232..00000000
                                  --- a/branches/flexBox/sandbox/domplate/pass-data.html
                                  +++ /dev/null
                                  @@ -1,51 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["Honza", "Radek", "John", "Mike"];
                                  -                        
                                  -            var template = domplate(
                                  -            {
                                  -                table:
                                  -                    TABLE({border: "1", width: "100px"},
                                  -                        FOR("item", "array",
                                  -                            TAG("$row", {name: "$item"})
                                  -                        )
                                  -                    ),
                                  -            
                                  -                row:
                                  -                    TR({align: "center"},
                                  -                        TD("$name")
                                  -                    )
                                  -            });
                                  -
                                  -            template.table.replace({array: inputArray}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/reuse-tag.html b/branches/flexBox/sandbox/domplate/reuse-tag.html
                                  deleted file mode 100644
                                  index 4063c8e6..00000000
                                  --- a/branches/flexBox/sandbox/domplate/reuse-tag.html
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        TAG("$anotherTag")
                                  -                    ),
                                  -            
                                  -                anotherTag:
                                  -                    SPAN("Embedded Tag")
                                  -            });
                                  -            
                                  -            template.tag.replace({}, parentNode, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/table-2d-array.html b/branches/flexBox/sandbox/domplate/table-2d-array.html
                                  deleted file mode 100644
                                  index 093a480b..00000000
                                  --- a/branches/flexBox/sandbox/domplate/table-2d-array.html
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var tableData = {
                                  -              rows: [
                                  -                {values: [1,2,3,4]},
                                  -                {values: [11,22,33,44]},
                                  -                {values: [111,222,333,444]}
                                  -              ]
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              table:
                                  -                  TABLE({border: "1"},
                                  -                      FOR("row", "$data.rows",
                                  -                          TR(
                                  -                              FOR("value", "$row.values",
                                  -                                  TD({"class": "myTableCell"},
                                  -                                      "$value")
                                  -                              )
                                  -                          )
                                  -                      )
                                  -                  )
                                  -            });
                                  -            
                                  -            template.table.replace({data: tableData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .myTableCell {
                                  -        padding: 5px;
                                  -        text-align: center;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/domplate/tree.html b/branches/flexBox/sandbox/domplate/tree.html
                                  deleted file mode 100644
                                  index f32659f0..00000000
                                  --- a/branches/flexBox/sandbox/domplate/tree.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    function isLeftClick(){return true};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var treeData = {"menu":{"appetizers":[{"name":"some yummy appetizer","prize":{"ammount":8,"currency":"EUR"}},{"name":"a not so yummy soup","prize":{"ammount":5,"currency":"EUR"}}],"main-meals":[{"name":"bunny leg with fries and ketchup","prize":{"ammount":13,"currency":"EUR"}},{"name":"bunny stew","prize":{"ammount":12,"currency":"EUR"}}]},"owners":[{"last-name":"Hunter","first-name":"Bunny"}],"name":"Le lupin","cooks":[{"last-name":"Pits","first-name":"Sweaty"}],"address":{"street":"some french street","zip-code":"123456","city":"some french city","country":"some french country"},"waiters":[{"last-name":"Cheeks","first-name":"Rosy"}]};
                                  -                        
                                  -            var tree = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE({onclick: "$onClick"},
                                  -                  TBODY(
                                  -                    FOR("member", "$object|memberIterator",
                                  -                      TAG("$row", {member: "$member"}))
                                  -                  )
                                  -                ),
                                  -            
                                  -              row:
                                  -                TR({"class": "treeRow", $hasChildren: "$member.hasChildren",
                                  -                    _repObject: "$member", level: "$member.level"},
                                  -                  TD({style: "padding-left: $member.indent\\px"},
                                  -                    DIV({"class": "treeLabel"},
                                  -                        "$member.name")
                                  -                  ),
                                  -                  TD(
                                  -                    DIV("$member.label")
                                  -                  )
                                  -                ),
                                  -            
                                  -              loop:
                                  -                FOR("member", "$members",
                                  -                  TAG("$row", {member: "$member"})),
                                  -            
                                  -              memberIterator: function(object)
                                  -              {
                                  -                return this.getMembers(object);
                                  -              },
                                  -            
                                  -              onClick: function(event)
                                  -              {
                                  -                if (!isLeftClick(event))
                                  -                  return;
                                  -            
                                  -                var row = getAncestorByClass(event.target, "treeRow");
                                  -                var label = getAncestorByClass(event.target, "treeLabel");
                                  -                if (label && hasClass(row, "hasChildren"))
                                  -                  this.toggleRow(row);
                                  -              },
                                  -            
                                  -              toggleRow: function(row)
                                  -              {
                                  -                var level = parseInt(row.getAttribute("level"));
                                  -            
                                  -                if (hasClass(row, "opened"))
                                  -                {
                                  -                  removeClass(row, "opened");
                                  -            
                                  -                  var tbody = row.parentNode;
                                  -                  for (var firstRow = row.nextSibling; firstRow;
                                  -                       firstRow = row.nextSibling)
                                  -                  {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                      break;
                                  -                    tbody.removeChild(firstRow);
                                  -                  }
                                  -                }
                                  -                else
                                  -                {
                                  -                  setClass(row, "opened");
                                  -            
                                  -                  var repObject = row.repObject;
                                  -                  if (repObject) {
                                  -                    var members = this.getMembers(repObject.value, level+1);
                                  -                    if (members)
                                  -                      this.loop.insertRows({members: members}, row);
                                  -                  }
                                  -                }
                                  -              },
                                  -            
                                  -              getMembers: function(object, level)
                                  -              {
                                  -                if (!level)
                                  -                  level = 0;
                                  -            
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push(this.createMember(p, object[p], level));
                                  -            
                                  -                return members;
                                  -              },
                                  -            
                                  -              createMember: function(name, value, level)
                                  -              {
                                  -                var hasChildren = (typeof(value) == "object");
                                  -                return {
                                  -                  name: name,
                                  -                  label: hasChildren ? "" : value,
                                  -                  value: value,
                                  -                  level: level,
                                  -                  indent: level*16,
                                  -                  hasChildren: hasChildren
                                  -                };
                                  -              }
                                  -            });
                                  -            
                                  -            tree.tag.replace({object: treeData}, parentNode, tree);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .treeRow.hasChildren .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_open.gif);
                                  -        background-repeat: no-repeat;
                                  -        background-position: 2px 2px;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren.opened .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_close.gif);
                                  -    }
                                  -    
                                  -    .treeRow .treeLabel {
                                  -        padding-left: 18px;
                                  -        padding-right: 10px;
                                  -        white-space: nowrap;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren .treeLabel:hover {
                                  -        color: blue;
                                  -        cursor: pointer;
                                  -        text-decoration: underline;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/firebugLite.html b/branches/flexBox/sandbox/firebugLite.html
                                  deleted file mode 100644
                                  index cbdbc673..00000000
                                  --- a/branches/flexBox/sandbox/firebugLite.html
                                  +++ /dev/null
                                  @@ -1,164 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.5 Testing</title>
                                  -
                                  -<script type="text/javascript" src="../content/firebug-lite-dev.js"></script>
                                  -<!-- 
                                  -<script type="text/javascript" src="../build/firebug-lite.jgz#disableWhenFirebugActive=false" />
                                  -/*
                                  -    {
                                  -        startOpened: true,
                                  -        skin: (window.firebugSkin = ["xp","classic","light"][Math.floor(Math.random()*3)]),
                                  -        
                                  -        onLoad: function()
                                  -        {
                                  -            var console = Firebug.Console;
                                  -            
                                  -            console.info("Hello World, I'm " + Firebug.version + "!");
                                  -            console.warn('This is the "' + firebugSkin + '" skin');
                                  -            
                                  -            //console.log("move your mouse over here: ", document.getElementsByTagName("div"));
                                  -        
                                  -            var random = function(i){return Math.floor(Math.random()*i)};
                                  -            var randomPanel = ["Console", "HTML", "CSS", "Script", "DOM"][random(5)];
                                  -            
                                  -            randomPanel = "HTML"
                                  -            Firebug.chrome.selectPanel(randomPanel);
                                  -            if (randomPanel == "HTML")
                                  -            {
                                  -                var randomElement = ["h1", "h3", "p"][random(3)];
                                  -                randomElement = "h1";
                                  -                var element = document.getElementsByTagName(randomElement)[0];
                                  -                
                                  -                //setTimeout(function(){
                                  -                    Firebug.HTML.select(element);
                                  -                    Firebug.Inspector.drawBoxModel(element);
                                  -                //},0);
                                  -                
                                  -                setTimeout(Firebug.Inspector.hideBoxModel, 2500);
                                  -                
                                  -            }
                                  -            else if (randomPanel == "DOM")
                                  -            {
                                  -                var randomElement = [null, "Firebug", "console", "document"][random(4)];
                                  -                var element = Firebug.browser.window[randomElement];
                                  -                
                                  -                setTimeout(function(){
                                  -                    Firebug.chrome.getPanel("DOM").select(element);
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -    /**/
                                  -</script>
                                  - -->
                                  -<script type="text/javascript">
                                  -/*
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -/**/
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  /*margin: 0;/**/
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  /*border: 10px solid #efd;*/
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -#lorem {
                                  -  /*display: none;/**/
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/injected.chrome.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div id="lorem" class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/firebugLite2.html b/branches/flexBox/sandbox/firebugLite2.html
                                  deleted file mode 100644
                                  index c1d8dd50..00000000
                                  --- a/branches/flexBox/sandbox/firebugLite2.html
                                  +++ /dev/null
                                  @@ -1,145 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.5 Testing</title>
                                  -<script type="text/javascript" src="../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript">
                                  -
                                  -(function(){
                                  -var console = window.firebug || window.console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -})();
                                  -/**/
                                  -</script>
                                  -<style type="text/css">
                                  -
                                  -/* test specificity problem */
                                  -/*
                                  -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td {
                                  -	margin: 0;
                                  -	padding: 0;
                                  -	font-size: 100%;
                                  -	vertical-align: baseline;
                                  -	border: 0;
                                  -	outline: 0;
                                  -	background: transparent;
                                  -	}
                                  -	
                                  -ol, ul {
                                  -	list-style: none;
                                  -	}
                                  -
                                  -blockquote, q {
                                  -	quotes: none;
                                  -	}
                                  -
                                  -:focus {
                                  -	outline: 0;
                                  -	}
                                  -
                                  -table {
                                  -	border-collapse: collapse;
                                  -	border-spacing: 0;
                                  -	}
                                  -/**/
                                  -
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -<style type="text/css">
                                  -#dummy {
                                  -    color: yellow;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul style="padding-top:10px; padding-left:2px; padding-right:7px; padding-bottom: 20px; margin-top: 12px; margin-right: 22px; margin-left: 2px; margin-bottom: 7px; color: gray; overflow: auto;">
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/firequery/firequery.css b/branches/flexBox/sandbox/firequery/firequery.css
                                  deleted file mode 100644
                                  index 0964d660..00000000
                                  --- a/branches/flexBox/sandbox/firequery/firequery.css
                                  +++ /dev/null
                                  @@ -1,34 +0,0 @@
                                  -.objectLink-jquery-data {
                                  -    color: #4B0082;
                                  -    padding-left: 2px;
                                  -}
                                  -
                                  -.objectLink-jquery-sign {
                                  -    color: #4B0082;
                                  -}
                                  -
                                  -.nodeData {
                                  -    font-size: 90%;
                                  -    color: #4B0082;
                                  -    background-color: #ddd;
                                  -    margin-left: 3px;
                                  -    margin-right: 3px;
                                  -    padding: 0px 4px;
                                  -    -moz-border-radius-bottomleft: 2px;
                                  -    -moz-border-radius-bottomright: 2px;
                                  -    -moz-border-radius-topright: 2px;
                                  -    -moz-border-radius-topleft: 2px;
                                  -}
                                  -
                                  -.nodeData.mutated
                                  -{
                                  -    background-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeData.mutated > *,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeData > .nodeValue.mutated {
                                  -    background-color: #EFFF79;
                                  -    border-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/firequery/firequery.js b/branches/flexBox/sandbox/firequery/firequery.js
                                  deleted file mode 100644
                                  index 0be5b4bc..00000000
                                  --- a/branches/flexBox/sandbox/firequery/firequery.js
                                  +++ /dev/null
                                  @@ -1,1094 +0,0 @@
                                  -// This source contains copy&pasted various bits from Firebug sources.
                                  -FBL.ns(function() {
                                  -    with(FBL) {
                                  -        
                                  -        function checkFirebugVersion(minMajor, minMinor, minPatch) {
                                  -            if (!minPatch) minPatch = 0;
                                  -            if (!minMinor) minMinor = 0;
                                  -            if (!minMajor) minMajor = 0;
                                  -            var version = Firebug.getVersion();
                                  -            if (!version) return false;
                                  -            var a = version.split('.');
                                  -            if (a.length<2) return false;
                                  -            // we want Firebug version 1.3+ (including alphas/betas and other weird stuff)
                                  -            var major = parseInt(a[0], 10);
                                  -            var minor = parseInt(a[1], 10);
                                  -            if (!a[2]) a[2] = "0";
                                  -            var patch = parseInt(a[2], 10);
                                  -            return (major>minMajor) ||
                                  -                   (major==minMajor && minor>minMinor) ||
                                  -                   (major==minMajor && minor==minMinor && patch>=minPatch);
                                  -        };
                                  -        
                                  -        if (!Firebug.CommandLine.evaluateInWebPage) {
                                  -            // backport from FB1.4
                                  -            Firebug.CommandLine.evaluateInWebPage = function(expr, context, targetWindow) {
                                  -                var win = targetWindow ? targetWindow : context.window;
                                  -                var doc = (win.wrappedJSObject ? win.wrappedJSObject.document : win.document);
                                  -                var element = addScript(doc, "_firebugInWebPage", expr);
                                  -                element.parentNode.removeChild(element);  // we don't need the script element, result is in DOM object
                                  -                return "true";
                                  -            };
                                  -        }
                                  -
                                  -        const fireQueryHomepage = "http://firequery.binaryage.com";
                                  -
                                  -        const Cc = Components.classes;
                                  -        const Ci = Components.interfaces;
                                  -
                                  -        const nsIPrefBranch = Ci.nsIPrefBranch;
                                  -        const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -        const nsIWindowMediator = Ci.nsIWindowMediator;
                                  -
                                  -        const highlightCSS = "chrome://firebug/content/highlighter.css";
                                  -
                                  -        const firequeryPrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -        const firequeryPrefs = firequeryPrefService.getService(nsIPrefBranch2);
                                  -
                                  -        const MODIFICATION = MutationEvent.MODIFICATION;
                                  -        const ADDITION = MutationEvent.ADDITION;
                                  -        const REMOVAL = MutationEvent.REMOVAL;
                                  -
                                  -        // jQuerify by Karl Swedberg, taken from http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet and slightly modified styles
                                  -        const jQuerifyCode = "\
                                  -        (function() {\
                                  -            var el = document.createElement('div');\
                                  -            var b = document.getElementsByTagName('body')[0];\
                                  -            var otherlib = false;\
                                  -            var msg = '';\
                                  -            el.style.fontFamily = 'Arial, Verdana';\
                                  -            el.style.position = 'fixed';\
                                  -            el.style.padding = '5px 10px 5px 10px';\
                                  -            el.style.margin = '0';\
                                  -            el.style.zIndex = 1001;\
                                  -            el.style.lineHeight = '46px';\
                                  -            el.style.fontSize = '40px';\
                                  -            el.style.fontWeight = 'bold';\
                                  -            el.style.color = '#444';\
                                  -            el.style.backgroundColor = '#FFFB00';\
                                  -            el.style.MozBorderRadius = '8px';\
                                  -            el.style.opacity = '0.8';\
                                  -            el.style.textAlign = 'center';\
                                  -            if (typeof jQuery != 'undefined') {\
                                  -                msg = 'This page already using jQuery v' + jQuery.fn.jquery;\
                                  -                if (typeof $jq == 'function') {\
                                  -                    msg += ' and noConflict().<br/>Use $jq(), not $().';\
                                  -                }\
                                  -                return showMsg();\
                                  -            } else if (typeof $ == 'function') {\
                                  -                otherlib = true;\
                                  -            }\
                                  -            function getScript(url, success, failure) {\
                                  -                var script = document.createElement('script');\
                                  -                script.src = url;\
                                  -                var head = document.getElementsByTagName('head')[0],\
                                  -                done = false;\
                                  -                var timeout = setTimeout(function() { failure(); }, {{jQueryURLTimeout}});\
                                  -                script.onload = script.onreadystatechange = function() {\
                                  -                    if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\
                                  -                        done = true;\
                                  -                        clearTimeout(timeout);\
                                  -                        success();\
                                  -                    }\
                                  -                };\
                                  -                head.appendChild(script);\
                                  -            }\
                                  -            getScript('{{jQueryURL}}', \
                                  -            function() {\
                                  -                if (typeof jQuery == 'undefined') {\
                                  -                    msg = 'Sorry, but jQuery wasn\\'t able to load';\
                                  -                    return showMsg(true);\
                                  -                } else {\
                                  -                    msg = 'This page is now jQuerified with v' + jQuery.fn.jquery;\
                                  -                    if (otherlib) {\
                                  -                        msg += ' and noConflict().<br/>Use $jq(), not $().';\
                                  -                    }\
                                  -                }\
                                  -                return showMsg();\
                                  -            }, function() {\
                                  -                msg = 'Unable to load jQuery from:<br/>{{jQueryURL}}';\
                                  -                return showMsg(true);\
                                  -            });\
                                  -            function showMsg(isError) {\
                                  -                el.innerHTML = msg;\
                                  -                if (isError) el.style.backgroundColor = '#FF4444';\
                                  -                b.appendChild(el);\
                                  -                el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\
                                  -                el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\
                                  -                window.setTimeout(function() {\
                                  -                    if (typeof jQuery == 'undefined') {\
                                  -                        b.removeChild(el);\
                                  -                    } else {\
                                  -                        b.removeChild(el);\
                                  -                        if (otherlib) {\
                                  -                            $jq = jQuery.noConflict();\
                                  -                        }\
                                  -                    }\
                                  -                },\
                                  -                2500);\
                                  -            }\
                                  -        })();\
                                  -        ";
                                  -
                                  -        const jQueryWatcherCode = "\
                                  -        (function() {\
                                  -            var timerId = setInterval(function() {\
                                  -                if (window.jQuery) {\
                                  -                    clearInterval(timerId);\
                                  -                    var event = document.createEvent('Events');\
                                  -                    event.initEvent('jQueryDetected', true, false);\
                                  -                    document.dispatchEvent(event);\
                                  -                }\
                                  -            }, {{watcherInterval}});\
                                  -        })();\
                                  -        ";
                                  -
                                  -        const jQueryLintInjectorCode = "\
                                  -        (function() {\
                                  -            var el = document.createElement('div');\
                                  -            var b = document.getElementsByTagName('body')[0];\
                                  -            var otherlib = false;\
                                  -            var msg = '';\
                                  -            el.style.fontFamily = 'Arial, Verdana';\
                                  -            el.style.position = 'fixed';\
                                  -            el.style.padding = '5px 10px 5px 10px';\
                                  -            el.style.margin = '0';\
                                  -            el.style.zIndex = 1001;\
                                  -            el.style.lineHeight = '46px';\
                                  -            el.style.fontSize = '40px';\
                                  -            el.style.fontWeight = 'bold';\
                                  -            el.style.color = '#444';\
                                  -            el.style.backgroundColor = '#FFFB00';\
                                  -            el.style.MozBorderRadius = '8px';\
                                  -            el.style.opacity = '0.8';\
                                  -            el.style.textAlign = 'center';\
                                  -            if (typeof jQuery == 'undefined') {\
                                  -                msg = 'No jQuery detected!';\
                                  -                return showMsg();\
                                  -            }\
                                  -            function getScript(url, success, failure) {\
                                  -                var script = document.createElement('script');\
                                  -                script.src = url;\
                                  -                var head = document.getElementsByTagName('head')[0],\
                                  -                done = false;\
                                  -                var timeout = setTimeout(function() { failure(); }, {{jQueryLintURLTimeout}});\
                                  -                script.onload = script.onreadystatechange = function() {\
                                  -                    if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\
                                  -                        done = true;\
                                  -                        clearTimeout(timeout);\
                                  -                        success();\
                                  -                    }\
                                  -                };\
                                  -                head.appendChild(script);\
                                  -            }\
                                  -            getScript('{{jQueryLintURL}}', \
                                  -            function() {\
                                  -                if (!jQuery.LINT) {\
                                  -                    msg = 'Sorry, but jQuery Lint wasn\\'t able to load';\
                                  -                    return showMsg(true);\
                                  -                }\
                                  -            }, function() {\
                                  -                msg = 'Unable to load jQuery Lint from:<br/>{{jQueryLintURL}}';\
                                  -                return showMsg(true);\
                                  -            });\
                                  -            function showMsg(isError) {\
                                  -                el.innerHTML = msg;\
                                  -                if (isError) el.style.backgroundColor = '#FF4444';\
                                  -                b.appendChild(el);\
                                  -                el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\
                                  -                el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\
                                  -                window.setTimeout(function() {\
                                  -                    if (typeof jQuery == 'undefined') {\
                                  -                        b.removeChild(el);\
                                  -                    } else {\
                                  -                        b.removeChild(el);\
                                  -                        if (otherlib) {\
                                  -                            $jq = jQuery.noConflict();\
                                  -                        }\
                                  -                    }\
                                  -                },\
                                  -                2500);\
                                  -            }\
                                  -        })();\
                                  -        ";
                                  -
                                  -        if (Firebug.TraceModule) {
                                  -            Firebug.TraceModule.DBG_FIREQUERY = false;
                                  -            var type = firequeryPrefs.getPrefType('extensions.firebug.DBG_FIREQUERY');
                                  -            if (type != nsIPrefBranch.PREF_BOOL) try {
                                  -                firequeryPrefs.setBoolPref('extensions.firebug.DBG_FIREQUERY', false);
                                  -            } catch(e) {}
                                  -        }
                                  -    
                                  -        function dbg() {
                                  -            if (FBTrace && FBTrace.DBG_FIREQUERY) { 
                                  -                FBTrace.sysout.apply(this, arguments);
                                  -            }
                                  -        }
                                  -        
                                  -        var OBJECTBOX = this.OBJECTBOX =
                                  -            SPAN({'class': "objectBox objectBox-$className"});
                                  -
                                  -        var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -            DIV({'class': "objectBox objectBox-$className"});
                                  -
                                  -        var OBJECTLINK = this.OBJECTLINK =
                                  -            A({
                                  -                'class': "objectLink objectLink-$className a11yFocus",
                                  -                _repObject: "$object"
                                  -            });
                                  -
                                  -        const edgeSize = 1;
                                  -
                                  -        var generateGuid = function() {
                                  -            var S4 = function() {
                                  -               return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
                                  -            };
                                  -            return S4()+S4();
                                  -        };
                                  -
                                  -        function getNonFrameBody(elt) {
                                  -            var body = getBody(elt.ownerDocument);
                                  -            return body.localName.toUpperCase() == "FRAMESET" ? null : body;
                                  -        }
                                  -
                                  -        function attachStyles(context, body) {
                                  -            var doc = body.ownerDocument;
                                  -            if (!context.highlightStyle)
                                  -                context.highlightStyle = createStyleSheet(doc, highlightCSS);
                                  -
                                  -            if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc)
                                  -                addStyleSheet(body.ownerDocument, context.highlightStyle);
                                  -        }
                                  -        
                                  -        function evalJQueryCache(object, context) {
                                  -            try {
                                  -                var win = object.ownerDocument.defaultView;
                                  -                var wrapper = win.wrappedJSObject || win;
                                  -                var jQuery = wrapper.jQuery;
                                  -                // jQuery 1.4 breaking changes (http://jquery14.com/day-01/jquery-14):
                                  -                // jQuery.data(elem) no longer returns an id, it returns the element’s object cache instead.
                                  -                var idOrCache = jQuery.data(object.wrappedJSObject || object);
                                  -                if (typeof idOrCache == "object") return idOrCache; // jQuery 1.4+ path
                                  -                return jQuery.cache[idOrCache]; // jQuery 1.3- path 
                                  -            } catch (ex) {}
                                  -        }
                                  -
                                  -        function hasJQueryCache(object, context) {
                                  -            var cache = evalJQueryCache(object, context);
                                  -            for (var x in cache) {
                                  -                if (cache.hasOwnProperty(x)) return true;
                                  -            }
                                  -        }
                                  -
                                  -        function findNodeDataBox(objectNodeBox, attrName)
                                  -        {
                                  -            var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -            for (; child; child = child.nextSibling)
                                  -            {
                                  -                if (hasClass(child, "nodeData") && child.childNodes[0].firstChild && child.childNodes[0].firstChild.nodeValue == attrName)
                                  -                {
                                  -                    return child;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        function dataDescriptor(name, data, tag) {
                                  -            var rep = {};
                                  -            rep[name] = data;
                                  -            return {
                                  -                name: name,
                                  -                data: data,
                                  -                tag: tag,
                                  -                rep: rep
                                  -            };
                                  -        }
                                  -
                                  -        function mutateData(target, attrChange, attrName, attrValue)  {
                                  -            this.markChange();
                                  -
                                  -            var createBox = Firebug.scrollToMutations || Firebug.expandMutations;
                                  -            var objectNodeBox = createBox ? this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target);
                                  -            if (!objectNodeBox) return;
                                  -
                                  -            if (isVisible(objectNodeBox.repObject))
                                  -                removeClass(objectNodeBox, "nodeHidden");
                                  -            else
                                  -                setClass(objectNodeBox, "nodeHidden");
                                  -            var nodeAttr;
                                  -            if (attrChange == MODIFICATION || attrChange == ADDITION) {
                                  -                var rep = Firebug.getRep(attrValue);
                                  -                var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                var valRep = Firebug.HTMLPanel.DataNode.tag.replace({
                                  -                    attr: dataDescriptor(attrName, attrValue, tag)
                                  -                }, this.document);
                                  -
                                  -                nodeAttr = findNodeDataBox(objectNodeBox, attrName);
                                  -                if (nodeAttr) {
                                  -                    nodeAttr.parentNode.replaceChild(valRep, nodeAttr);
                                  -                    this.highlightMutation(valRep, objectNodeBox, "mutated");
                                  -                } else {
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    labelBox.insertBefore(valRep, null);
                                  -                    this.highlightMutation(valRep, objectNodeBox, "mutated");
                                  -                }
                                  -            } else if (attrChange == REMOVAL) {
                                  -                nodeAttr = findNodeDataBox(objectNodeBox, attrName);
                                  -                if (nodeAttr) {
                                  -                    nodeAttr.parentNode.removeChild(nodeAttr);
                                  -                    this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -    
                                  -        function patchJQuery(jQuery, context) {
                                  -            if (jQuery.wrappedJSObject) jQuery = jQuery.wrappedJSObject;
                                  -            if (jQuery._patchedByFireQuery) return;
                                  -            jQuery._patchedByFireQuery = true;
                                  -            jQuery.data_originalReplacedByFireQuery = jQuery.data;
                                  -            jQuery.data = function(elem, name, data) {
                                  -                var res = this.data_originalReplacedByFireQuery.apply(this, arguments);
                                  -                try {
                                  -                    if (name && data!==undefined) {
                                  -                        mutateData.call(context.getPanel('html'), elem, MODIFICATION, name, data);
                                  -                    }
                                  -                } catch (ex) {
                                  -                    // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason)
                                  -                }
                                  -                return res;
                                  -            };
                                  -            jQuery.removeData_originalReplacedByFireQuery = jQuery.removeData;
                                  -            jQuery.removeData = function(elem, name) {
                                  -                var res = this.removeData_originalReplacedByFireQuery.apply(this, arguments);
                                  -                try {
                                  -                    if (name) {
                                  -                        mutateData.call(context.getPanel('html'), elem, REMOVAL, name);
                                  -                    }
                                  -                } catch (ex) {
                                  -                    // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason)
                                  -                }
                                  -                return res;
                                  -            };
                                  -
                                  -            // apply jquery lint if requested
                                  -            if (Firebug.FireQuery.getPref('useLint')) {
                                  -                try {
                                  -                    var code = Firebug.FireQuery.prepareJQueryLintCode();
                                  -                    Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -                } catch (ex) {
                                  -                    dbg("   ! "+ex, context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        function installJQueryWatcher(win, context) {
                                  -            try {
                                  -                var code = jQueryWatcherCode.replace(/\{\{watcherInterval\}\}/g, Firebug.FireQuery.getPref('watcherInterval'));
                                  -                Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -            } catch (ex) {
                                  -                dbg("   ! "+ex, context);
                                  -            }
                                  -        }
                                  -        
                                  -        function patchWindow(win, context) {
                                  -            try {
                                  -                var wrapper = win.wrappedJSObject;
                                  -                var jQuery = wrapper.jQuery;
                                  -                patchJQuery(jQuery, context);
                                  -                dbg(">>>FireQuery: successfully found and patched jQuery in the window ", win);
                                  -            } catch (ex) {
                                  -                dbg('>>>FireQuery: jQuery not found in the window, running watcher ...', win);
                                  -                win.document.wrappedJSObject.addEventListener('jQueryDetected', function() {
                                  -                    try {
                                  -                        var wrapper = win.wrappedJSObject;
                                  -                        var jQuery = wrapper.jQuery;
                                  -                        patchJQuery(jQuery, context);
                                  -                        dbg(">>>FireQuery: successfully notified and patched late jQuery in the window ", win);
                                  -                    } catch (ex) {
                                  -                        dbg(">>>FireQuery: fatal error patching late jQuery in the window ", win);
                                  -                    }
                                  -                }, true);
                                  -                installJQueryWatcher(win, context);
                                  -            }
                                  -        }
                                  -        
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery
                                  -        //
                                  -        Firebug.FireQuery = extend(Firebug.ActivableModule, {
                                  -            version: '0.6',
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            start: function() {
                                  -                dbg(">>>FireQuery.start");
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            stop: function() {
                                  -                dbg(">>>FireQuery.stop");
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            initialize: function() {
                                  -                dbg(">>>FireQuery.initialize");
                                  -                this.panelName = 'FireQuery';
                                  -                this.description = "jQuery related enhancements for Firebug.";
                                  -                Firebug.Module.initialize.apply(this, arguments);
                                  -                this.augumentConsolePanelContextMenu();
                                  -                this.start();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            shutdown: function() {
                                  -                dbg(">>>FireQuery.shutdown");
                                  -                this.stop();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            augumentConsolePanelContextMenu: function() {
                                  -                dbg(">>>FireQuery.augumentConsolePanelContextMenu");
                                  -                if (!Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery) {
                                  -                    Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery = Firebug.ConsolePanel.prototype.getOptionsMenuItems;
                                  -                    Firebug.ConsolePanel.prototype.getOptionsMenuItems = function() {
                                  -                        var items = this.getOptionsMenuItemsOriginalBeforePatchedByFireQuery.apply(this, arguments);
                                  -                        if (!items) items = [];
                                  -                        items = items.concat(Firebug.FireQuery.getOptionsMenuItems());
                                  -                        return items;
                                  -                    };
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            initializeUI: function() {
                                  -                dbg(">>>FireQuery.initializeUI");
                                  -                Firebug.Module.initializeUI.apply(this, arguments);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            onSuspendFirebug: function(context) {
                                  -                dbg(">>>FireQuery.onSuspendFirebug");
                                  -                this.stop();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            onResumeFirebug: function(context) {
                                  -                dbg(">>>FireQuery.onResumeFirebug");
                                  -                this.start();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            showPanel: function(browser, panel) {
                                  -                dbg(">>>FireQuery.showPanel "+panel.name, panel);
                                  -                var isConsole = panel.name == "console";
                                  -                var isHTML = panel.name == "html";
                                  -                if (isConsole || isHTML) {
                                  -                    this.applyPanelCSS("chrome://firequery/skin/firequery.css", panel);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            loadedContext: function(context) {
                                  -                dbg(">>>FireQuery.loadedContext ", context);
                                  -                patchWindow(context.browser.contentWindow, context);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            prepareJQuerifyCode: function() {
                                  -                var jQueryURL = this.getPref('jQueryURL') || 'chrome://firequery-resources/content/jquery.js';
                                  -                var jQueryURLTimeout = this.getPref('jQueryURLTimeout') || 5000;
                                  -
                                  -                var code = jQuerifyCode;
                                  -                code = code.replace(/\{\{jQueryURL\}\}/g, jQueryURL.replace("'", "\\'"));
                                  -                code = code.replace(/\{\{jQueryURLTimeout\}\}/g, jQueryURLTimeout+'');
                                  -                return code;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            prepareJQueryLintCode: function() {
                                  -                var jQueryLintURL = this.getPref('jQueryLintURL') || 'chrome://firequery-resources/content/jquery.lint.js';
                                  -                var jQueryLintURLTimeout = this.getPref('jQueryLintURLTimeout') || 5000;
                                  -
                                  -                var code = jQueryLintInjectorCode;
                                  -                code = code.replace(/\{\{jQueryLintURL\}\}/g, jQueryLintURL.replace("'", "\\'"));
                                  -                code = code.replace(/\{\{jQueryLintURLTimeout\}\}/g, jQueryLintURLTimeout+'');
                                  -                return code;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            buttonJQuerify: function(context) {
                                  -                dbg(">>>FireQuery.buttonJQuerify ", context);
                                  -                try {
                                  -                    var code = this.prepareJQuerifyCode();
                                  -                    Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -                } catch (ex) {
                                  -                    dbg("   ! "+ex, context);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getPref: function(name) {
                                  -                var prefName = this.getPrefDomain().toLowerCase() + "." + name;
                                  -                var type = firequeryPrefs.getPrefType(prefName);
                                  -                if (type == nsIPrefBranch.PREF_STRING)
                                  -                return firequeryPrefs.getCharPref(prefName);
                                  -                else if (type == nsIPrefBranch.PREF_INT)
                                  -                return firequeryPrefs.getIntPref(prefName);
                                  -                else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                return firequeryPrefs.getBoolPref(prefName);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            setPref: function(name, value) {
                                  -                var prefName = this.getPrefDomain().toLowerCase() + "." + name;
                                  -                var type = firequeryPrefs.getPrefType(prefName);
                                  -                if (type == nsIPrefBranch.PREF_STRING)
                                  -                firequeryPrefs.setCharPref(prefName, value);
                                  -                else if (type == nsIPrefBranch.PREF_INT)
                                  -                firequeryPrefs.setIntPref(prefName, value);
                                  -                else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                firequeryPrefs.setBoolPref(prefName, value);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            applyPanelCSS: function(url, panel) {
                                  -                dbg(">>>FireQuery.applyPanelCSS "+url, panel);
                                  -                var links = FBL.getElementsBySelector(panel.document, "link");
                                  -                for (var i=0; i < links.length; i++) {
                                  -                    var link = links[i];
                                  -                    if (link.getAttribute('href')==url) return; // already applied
                                  -                }
                                  -                var styleElement = panel.document.createElement("link");
                                  -                styleElement.setAttribute("type", "text/css");
                                  -                styleElement.setAttribute("href", url);
                                  -                styleElement.setAttribute("rel", "stylesheet");
                                  -                var head = this.getHeadElement(panel.document);
                                  -                if (head) head.appendChild(styleElement);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            visitWebsite: function() {
                                  -                dbg(">>>FireQuery.visitWebsite", arguments);
                                  -                openNewTab(fireQueryHomepage);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            updateOption: function(name, value) {
                                  -                dbg(">>>FireQuery.updateOption: "+name+" -> "+value);
                                  -                if (name=='firequery.useLint') {
                                  -                    if (value) {
                                  -                        Firebug.Console.logFormatted(["jQuery Lint will be available after next refresh"], FirebugContext, "info");
                                  -                    } else {
                                  -                        Firebug.Console.logFormatted(["jQuery Lint won't be loaded after next refresh"], FirebugContext, "info");
                                  -                    }
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getOptionsMenuItems: function() {
                                  -                var optionMenu = function(label, option) {
                                  -                    return {
                                  -                        label: label, 
                                  -                        nol10n: true,
                                  -                        type: "checkbox", 
                                  -                        checked: Firebug.FireQuery.getPref(option), 
                                  -                        option: option,
                                  -                        command: function() {
                                  -                            Firebug.FireQuery.setPref(option, !Firebug.FireQuery.getPref(option)); // toggle
                                  -                        }
                                  -                    };
                                  -                };
                                  -                dbg(">>>FireQuery.getOptionsMenuItems", arguments);
                                  -                return [
                                  -                    '-',
                                  -                    optionMenu("Use jQuery Lint", "useLint"),
                                  -                    {
                                  -                        label: "Visit FireQuery Website...",
                                  -                        nol10n: true,
                                  -                        command: function() {
                                  -                            Firebug.FireQuery.visitWebsite();
                                  -                        }
                                  -                    }
                                  -                ];
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getHeadElement: function(doc) {
                                  -                var heads = doc.getElementsByTagName("head");
                                  -                if (heads.length == 0) return doc.documentElement;
                                  -                return heads[0];
                                  -            }
                                  -        });
                                  -    
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryHighlighter
                                  -        //
                                  -        Firebug.FireQuery.JQueryHighlighter = function() {
                                  -            this.seed = "highlighter-"+generateGuid();
                                  -        };
                                  -
                                  -        Firebug.FireQuery.JQueryHighlighter.prototype = {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            highlight: function(context, element) {
                                  -                if (!element) return;
                                  -                if (element instanceof XULElement) return;
                                  -                var dims, x, y, w, h;
                                  -                try {
                                  -                    // Firebug 1.3 path
                                  -                    dims = getViewOffset(element, true);
                                  -                    x = dims.x; y = dims.y;
                                  -                    w = element.offsetWidth; h = element.offsetHeight;                
                                  -                } catch (ex) {
                                  -                    try {
                                  -                        // Firebug 1.4 path
                                  -                        dims = getRectTRBLWH(element, context);
                                  -                        x = dims.left; y = dims.top;
                                  -                        w = dims.width; h = dims.height;
                                  -                    } catch (ex) {
                                  -                        try {
                                  -                            // Firebug 1.5+ path
                                  -                            dims = getLTRBWH(element, context);
                                  -                            x = dims.left; y = dims.top;
                                  -                            w = dims.width; h = dims.height;
                                  -                        } catch (ex) {
                                  -                            dbg(' getLTRBWH failed: '+ex, element);
                                  -                            return;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
                                  -                if (wacked) return;
                                  -
                                  -                var nodes = this.getNodes(context, element);
                                  -
                                  -                move(nodes.top, x, y-edgeSize);
                                  -                resize(nodes.top, w, edgeSize);
                                  -
                                  -                move(nodes.right, x+w, y-edgeSize);
                                  -                resize(nodes.right, edgeSize, h+edgeSize*2);
                                  -
                                  -                move(nodes.bottom, x, y+h);
                                  -                resize(nodes.bottom, w, edgeSize);
                                  -
                                  -                move(nodes.left, x-edgeSize, y-edgeSize);
                                  -                resize(nodes.left, edgeSize, h+edgeSize*2);
                                  -                
                                  -                move(nodes.content, x, y);
                                  -                resize(nodes.content, w, h);
                                  -                
                                  -                var body = getNonFrameBody(element);
                                  -                if (!body)
                                  -                    return this.unhighlight(context);
                                  -
                                  -                var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument;
                                  -                if (needsAppend) {
                                  -                    attachStyles(context, body);
                                  -                    for (var edge in nodes) {
                                  -                        try {
                                  -                            body.appendChild(nodes[edge]);
                                  -                        }
                                  -                        catch(exc) {
                                  -                        }
                                  -                    }
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            unhighlight: function(context) {
                                  -                var nodes = this.getNodes(context);
                                  -                var body = nodes.top.parentNode;
                                  -                if (body) {
                                  -                    for (var edge in nodes)
                                  -                        body.removeChild(nodes[edge]);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getNodes: function(context) {
                                  -                if (!context[this.seed]) {
                                  -                    var doc = context.window.document;
                                  -                    function createEdge(name) {
                                  -                        var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                        div.firebugIgnore = true;
                                  -                        div.className = "firebugHighlight";
                                  -                        return div;
                                  -                    }
                                  -                    function createBox(name) {
                                  -                        var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                        div.firebugIgnore = true;
                                  -                        div.className = "firebugHighlight";
                                  -                        div.style.backgroundColor = "SkyBlue";
                                  -                        div.style.opacity="0.4";
                                  -                        return div;
                                  -                    }
                                  -                    context[this.seed] = {
                                  -                        content: createBox("Content"),
                                  -                        top: createEdge("Top"),
                                  -                        right: createEdge("Right"),
                                  -                        bottom: createEdge("Bottom"),
                                  -                        left: createEdge("Left")
                                  -                    };
                                  -                }
                                  -                return context[this.seed];
                                  -            }
                                  -        };
                                  -
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // monkey-patching of Firebug.Inspector.highlightObject
                                  -        //
                                  -        Firebug.Inspector.originalHighlightObject = Firebug.Inspector.highlightObject;
                                  -        Firebug.Inspector.highlightObject = function(element, context, highlightType, boxFrame) {
                                  -            if (!this.jQueryHighlighters) this.jQueryHighlighters = [];
                                  -            var i, highlighter;
                                  -            for (i=0; i<this.jQueryHighlighters.length; i++) {
                                  -                highlighter = this.jQueryHighlighters[i];
                                  -                highlighter.unhighlight(this.jQueryHighlighterContext);
                                  -            }
                                  -            this.jQueryHighlighters = [];
                                  -            
                                  -            if (!element || !element.length) {
                                  -                return Firebug.Inspector.originalHighlightObject.call(this, element, context, highlightType, boxFrame);
                                  -            } else {
                                  -                Firebug.Inspector.originalHighlightObject.call(this, null, context, highlightType, boxFrame);
                                  -            }
                                  -
                                  -            if (context && context.window && context.window.document) {
                                  -                this.jQueryHighlighterContext = context;
                                  -                for (i=0; i<element.length; i++) {
                                  -                    highlighter = new Firebug.FireQuery.JQueryHighlighter();
                                  -                    highlighter.highlight(context, element[i]);
                                  -                    this.jQueryHighlighters.push(highlighter);
                                  -                }
                                  -            }
                                  -        };
                                  -
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryExpression
                                  -        //
                                  -        Firebug.FireQuery.JQueryExpression = domplate(Firebug.Rep, {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            tag:
                                  -                OBJECTBOX({},
                                  -                    A({
                                  -                        'class': "objectLink objectLink-jquery-sign",
                                  -                        _repObject: "$object"
                                  -                    }, "jQuery"),
                                  -                    SPAN({'class': "arrayLeftBracket"}, "("),
                                  -                    FOR("item", "$object|arrayIterator",
                                  -                        TAG("$item.tag", {object: "$item.object"}),
                                  -                        SPAN({'class': "arrayComma"}, "$item.delim")
                                  -                    ),
                                  -                    SPAN({'class': "arrayRightBracket"}, ")")
                                  -                ),
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            arrayIterator: function(array) {
                                  -                var items = [];
                                  -                for (var i = 0; i < array.length; ++i) {
                                  -                    var value = array[i];
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                    var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -                    items.push({object: value, tag: tag, delim: delim});
                                  -                }
                                  -                return items;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            className: "jquery-expression",
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            supportsObject: function(object) {
                                  -                if (!object) return;
                                  -                return !!object.jquery;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getRealObject: function(event, context) {
                                  -                return null;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getContextMenuItems: function(event) {
                                  -                return null;
                                  -            }
                                  -        });
                                  -    
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryElement
                                  -        //
                                  -        Firebug.FireQuery.JQueryElement = domplate(FirebugReps.Element, {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            tag:
                                  -                OBJECTLINK(
                                  -                    "&lt;",
                                  -                    SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator",
                                  -                        "&nbsp;$attr.localName=&quot;", SPAN({'class': "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -                    ),
                                  -                    "&gt;"
                                  -                 ),
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            shortTag:
                                  -                SPAN(
                                  -                    OBJECTLINK(
                                  -                        SPAN({'class': "$object|getVisible"},
                                  -                            SPAN({'class': "selectorTag"}, "$object|getSelectorTag"),
                                  -                            SPAN({'class': "selectorId"}, "$object|getSelectorId"),
                                  -                            SPAN({'class': "selectorClass"}, "$object|getSelectorClass"),
                                  -                            SPAN({'class': "selectorValue"}, "$object|getValue")
                                  -                        )
                                  -                     ),
                                  -                     A({'class': "objectLink objectLink-jquery-data", onclick: "$onDataClick", _objData: "$object" }, "&#9993;") // envelope sign
                                  -                ),
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            onDataClick: function(event) {
                                  -                var object = event.currentTarget.objData;
                                  -                var cache = evalJQueryCache(object);
                                  -                if (!cache) return;
                                  -                var rep = Firebug.getRep(cache);
                                  -                rep.inspectObject(cache, FirebugContext);
                                  -            },
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            dataIterator: function(object) {
                                  -                if (!object) return [];
                                  -                var cache = evalJQueryCache(object);
                                  -                if (!cache) return [];
                                  -                var res = [];
                                  -                for (var data in cache) {
                                  -                    if (cache.hasOwnProperty(data)) {
                                  -                        var rep = Firebug.getRep(cache[data]);
                                  -                        var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                        res.push(dataDescriptor(data, cache[data], tag));
                                  -                    }
                                  -                }
                                  -                return res;
                                  -            },
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            supportsObject: function(object, type) {
                                  -                if (!FirebugReps.Element.supportsObject.call(this, object, type)) return false;
                                  -                return hasJQueryCache(object);
                                  -            }
                                  -        });
                                  -        
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // patch Firebug.HTMLPanel.*Element
                                  -        //
                                  -        
                                  -        if (checkFirebugVersion(1, 5)) {
                                  -            // Firebug 1.5 and later
                                  -            
                                  -            var AttrTag = Firebug.HTMLPanel.AttrTag;
                                  -            var TextTag = Firebug.HTMLPanel.TextTag;
                                  -            var DataTag =
                                  -                SPAN({"class": "nodeData", _repObject: "$attr.rep"},
                                  -                    SPAN({"class": "nodeName"}, "$attr.name"), "=",
                                  -                    TAG("$attr.tag", {object: "$attr.data"})
                                  -                );
                                  -
                                  -            Firebug.HTMLPanel.DataNode = domplate(FirebugReps.Element, {
                                  -                tag: DataTag
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.Element = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            IMG({"class": "twisty", role: "presentation"}),
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeChildBox", role :"group"}), /* nodeChildBox is special signal in insideOutBox */
                                  -                        DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                            SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                                "&lt;/",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                "&gt;"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.CompleteElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({"class": "nodeLabel"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeChildBox"},
                                  -                            FOR("child", "$object|childIterator",
                                  -                                TAG("$child|getNodeTag", {object: "$child"})
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeCloseLabel"},
                                  -                            "&lt;/",
                                  -                            SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                            "&gt;"
                                  -                         )
                                  -                    ),
                                  -
                                  -                getNodeTag: Firebug.HTMLPanel.CompleteElement.getNodeTag,
                                  -
                                  -                childIterator: Firebug.HTMLPanel.CompleteElement.childIterator
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.EmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.XEmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.TextElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                TextTag,
                                  -                                "&lt;/",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                "&gt;",
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -        } else {
                                  -            // Firebug 1.4 and older
                                  -            AttrTag =
                                  -                SPAN({'class': "nodeAttr editGroup"},
                                  -                    "&nbsp;", SPAN({'class': "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -                    SPAN({'class': "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -                );
                                  -
                                  -            DataTag =
                                  -                SPAN({'class': "nodeData", _repObject: "$attr.rep"},
                                  -                    SPAN({'class': "nodeName"}, "$attr.name"), "=",
                                  -                    TAG("$attr.tag", {object: "$attr.data"})
                                  -                );
                                  -
                                  -            Firebug.HTMLPanel.DataNode = domplate(FirebugReps.Element, {
                                  -                tag: DataTag
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.Element = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            IMG({'class': "twisty"}),
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeChildBox"}),
                                  -                        DIV({'class': "nodeCloseLabel"},
                                  -                            SPAN({'class': "nodeCloseLabelBox repTarget"},
                                  -                                "&lt;/",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                "&gt;"
                                  -                            )
                                  -                         )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.CompleteElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox open $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeChildBox"},
                                  -                            FOR("child", "$object|childIterator",
                                  -                                TAG("$child|getNodeTag", {object: "$child"})
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeCloseLabel"},
                                  -                            "&lt;/",
                                  -                            SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                            "&gt;"
                                  -                         )
                                  -                    ),
                                  -
                                  -                getNodeTag: function(node) {
                                  -                    return getNodeTag(node, true);
                                  -                },
                                  -
                                  -                childIterator: function(node) {
                                  -                    if (node.contentDocument)
                                  -                        return [node.contentDocument.documentElement];
                                  -
                                  -                    if (Firebug.showWhitespaceNodes)
                                  -                        return cloneArray(node.childNodes);
                                  -                    else {
                                  -                        var nodes = [];
                                  -                        for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -                            if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                                nodes.push(child);
                                  -                        }
                                  -                        return nodes;
                                  -                    }
                                  -                }
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.EmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "/&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.TextElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                SPAN({'class': "nodeText editable"}, "$object|getNodeText"),
                                  -                                "&lt;/",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                "&gt;",
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -        }
                                  -        
                                  -        Firebug.registerModule(Firebug.FireQuery);
                                  -        Firebug.reps.splice(0, 0, Firebug.FireQuery.JQueryExpression); // need to get this before array rep (jQuery expression behaves like array from JQuery 1.3)
                                  -        Firebug.reps.splice(0, 0, Firebug.FireQuery.JQueryElement); // need to get this before old Element rep
                                  -    }
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/firequery/firequerylite.js b/branches/flexBox/sandbox/firequery/firequerylite.js
                                  deleted file mode 100644
                                  index 0f980fd1..00000000
                                  --- a/branches/flexBox/sandbox/firequery/firequerylite.js
                                  +++ /dev/null
                                  @@ -1,1103 +0,0 @@
                                  -// This source contains copy&pasted various bits from Firebug sources.
                                  -Firebug.extend(function(FBL) {
                                  -    with(FBL) {
                                  -        
                                  -        function checkFirebugVersion(minMajor, minMinor, minPatch) {
                                  -            if (!minPatch) minPatch = 0;
                                  -            if (!minMinor) minMinor = 0;
                                  -            if (!minMajor) minMajor = 0;
                                  -            var version = Firebug.version;
                                  -            if (!version) return false;
                                  -            var a = version.split('.');
                                  -            if (a.length<2) return false;
                                  -            // we want Firebug version 1.3+ (including alphas/betas and other weird stuff)
                                  -            var major = parseInt(a[0], 10);
                                  -            var minor = parseInt(a[1], 10);
                                  -            if (!a[2]) a[2] = "0";
                                  -            var patch = parseInt(a[2], 10);
                                  -            return (major>minMajor) ||
                                  -                   (major==minMajor && minor>minMinor) ||
                                  -                   (major==minMajor && minor==minMinor && patch>=minPatch);
                                  -        };
                                  -        
                                  -        if (!Firebug.CommandLine.evaluateInWebPage) {
                                  -            // backport from FB1.4
                                  -            Firebug.CommandLine.evaluateInWebPage = function(expr, context, targetWindow) {
                                  -                var win = targetWindow ? targetWindow : context.window;
                                  -                var doc = (win.wrappedJSObject ? win.wrappedJSObject.document : win.document);
                                  -                var element = addScript(doc, "_firebugInWebPage", expr);
                                  -                element.parentNode.removeChild(element);  // we don't need the script element, result is in DOM object
                                  -                return "true";
                                  -            };
                                  -        }
                                  -
                                  -        //const fireQueryHomepage = "http://firequery.binaryage.com";
                                  -
                                  -        //const Cc = Components.classes;
                                  -        //const Ci = Components.interfaces;
                                  -
                                  -        //const nsIPrefBranch = Ci.nsIPrefBranch;
                                  -        //const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -        //const nsIWindowMediator = Ci.nsIWindowMediator;
                                  -
                                  -        //const highlightCSS = "chrome://firebug/content/highlighter.css";
                                  -
                                  -        //const firequeryPrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -        //const firequeryPrefs = firequeryPrefService.getService(nsIPrefBranch2);
                                  -
                                  -        //const MODIFICATION = MutationEvent.MODIFICATION;
                                  -        //const ADDITION = MutationEvent.ADDITION;
                                  -        //const REMOVAL = MutationEvent.REMOVAL;
                                  -
                                  -        // jQuerify by Karl Swedberg, taken from http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet and slightly modified styles
                                  -        const jQuerifyCode = "\
                                  -        (function() {\
                                  -            var el = document.createElement('div');\
                                  -            var b = document.getElementsByTagName('body')[0];\
                                  -            var otherlib = false;\
                                  -            var msg = '';\
                                  -            el.style.fontFamily = 'Arial, Verdana';\
                                  -            el.style.position = 'fixed';\
                                  -            el.style.padding = '5px 10px 5px 10px';\
                                  -            el.style.margin = '0';\
                                  -            el.style.zIndex = 1001;\
                                  -            el.style.lineHeight = '46px';\
                                  -            el.style.fontSize = '40px';\
                                  -            el.style.fontWeight = 'bold';\
                                  -            el.style.color = '#444';\
                                  -            el.style.backgroundColor = '#FFFB00';\
                                  -            el.style.MozBorderRadius = '8px';\
                                  -            el.style.opacity = '0.8';\
                                  -            el.style.textAlign = 'center';\
                                  -            if (typeof jQuery != 'undefined') {\
                                  -                msg = 'This page already using jQuery v' + jQuery.fn.jquery;\
                                  -                if (typeof $jq == 'function') {\
                                  -                    msg += ' and noConflict().<br/>Use $jq(), not $().';\
                                  -                }\
                                  -                return showMsg();\
                                  -            } else if (typeof $ == 'function') {\
                                  -                otherlib = true;\
                                  -            }\
                                  -            function getScript(url, success, failure) {\
                                  -                var script = document.createElement('script');\
                                  -                script.src = url;\
                                  -                var head = document.getElementsByTagName('head')[0],\
                                  -                done = false;\
                                  -                var timeout = setTimeout(function() { failure(); }, {{jQueryURLTimeout}});\
                                  -                script.onload = script.onreadystatechange = function() {\
                                  -                    if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\
                                  -                        done = true;\
                                  -                        clearTimeout(timeout);\
                                  -                        success();\
                                  -                    }\
                                  -                };\
                                  -                head.appendChild(script);\
                                  -            }\
                                  -            getScript('{{jQueryURL}}', \
                                  -            function() {\
                                  -                if (typeof jQuery == 'undefined') {\
                                  -                    msg = 'Sorry, but jQuery wasn\\'t able to load';\
                                  -                    return showMsg(true);\
                                  -                } else {\
                                  -                    msg = 'This page is now jQuerified with v' + jQuery.fn.jquery;\
                                  -                    if (otherlib) {\
                                  -                        msg += ' and noConflict().<br/>Use $jq(), not $().';\
                                  -                    }\
                                  -                }\
                                  -                return showMsg();\
                                  -            }, function() {\
                                  -                msg = 'Unable to load jQuery from:<br/>{{jQueryURL}}';\
                                  -                return showMsg(true);\
                                  -            });\
                                  -            function showMsg(isError) {\
                                  -                el.innerHTML = msg;\
                                  -                if (isError) el.style.backgroundColor = '#FF4444';\
                                  -                b.appendChild(el);\
                                  -                el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\
                                  -                el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\
                                  -                window.setTimeout(function() {\
                                  -                    if (typeof jQuery == 'undefined') {\
                                  -                        b.removeChild(el);\
                                  -                    } else {\
                                  -                        b.removeChild(el);\
                                  -                        if (otherlib) {\
                                  -                            $jq = jQuery.noConflict();\
                                  -                        }\
                                  -                    }\
                                  -                },\
                                  -                2500);\
                                  -            }\
                                  -        })();\
                                  -        ";
                                  -
                                  -        const jQueryWatcherCode = "\
                                  -        (function() {\
                                  -            var timerId = setInterval(function() {\
                                  -                if (window.jQuery) {\
                                  -                    clearInterval(timerId);\
                                  -                    var event = document.createEvent('Events');\
                                  -                    event.initEvent('jQueryDetected', true, false);\
                                  -                    document.dispatchEvent(event);\
                                  -                }\
                                  -            }, {{watcherInterval}});\
                                  -        })();\
                                  -        ";
                                  -
                                  -        const jQueryLintInjectorCode = "\
                                  -        (function() {\
                                  -            var el = document.createElement('div');\
                                  -            var b = document.getElementsByTagName('body')[0];\
                                  -            var otherlib = false;\
                                  -            var msg = '';\
                                  -            el.style.fontFamily = 'Arial, Verdana';\
                                  -            el.style.position = 'fixed';\
                                  -            el.style.padding = '5px 10px 5px 10px';\
                                  -            el.style.margin = '0';\
                                  -            el.style.zIndex = 1001;\
                                  -            el.style.lineHeight = '46px';\
                                  -            el.style.fontSize = '40px';\
                                  -            el.style.fontWeight = 'bold';\
                                  -            el.style.color = '#444';\
                                  -            el.style.backgroundColor = '#FFFB00';\
                                  -            el.style.MozBorderRadius = '8px';\
                                  -            el.style.opacity = '0.8';\
                                  -            el.style.textAlign = 'center';\
                                  -            if (typeof jQuery == 'undefined') {\
                                  -                msg = 'No jQuery detected!';\
                                  -                return showMsg();\
                                  -            }\
                                  -            function getScript(url, success, failure) {\
                                  -                var script = document.createElement('script');\
                                  -                script.src = url;\
                                  -                var head = document.getElementsByTagName('head')[0],\
                                  -                done = false;\
                                  -                var timeout = setTimeout(function() { failure(); }, {{jQueryLintURLTimeout}});\
                                  -                script.onload = script.onreadystatechange = function() {\
                                  -                    if (!done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')) {\
                                  -                        done = true;\
                                  -                        clearTimeout(timeout);\
                                  -                        success();\
                                  -                    }\
                                  -                };\
                                  -                head.appendChild(script);\
                                  -            }\
                                  -            getScript('{{jQueryLintURL}}', \
                                  -            function() {\
                                  -                if (!jQuery.LINT) {\
                                  -                    msg = 'Sorry, but jQuery Lint wasn\\'t able to load';\
                                  -                    return showMsg(true);\
                                  -                }\
                                  -            }, function() {\
                                  -                msg = 'Unable to load jQuery Lint from:<br/>{{jQueryLintURL}}';\
                                  -                return showMsg(true);\
                                  -            });\
                                  -            function showMsg(isError) {\
                                  -                el.innerHTML = msg;\
                                  -                if (isError) el.style.backgroundColor = '#FF4444';\
                                  -                b.appendChild(el);\
                                  -                el.style.left = Math.floor((window.innerWidth - el.clientWidth) / 2) + 'px';\
                                  -                el.style.top = Math.floor((window.innerHeight - el.clientHeight) / 2) + 'px';\
                                  -                window.setTimeout(function() {\
                                  -                    if (typeof jQuery == 'undefined') {\
                                  -                        b.removeChild(el);\
                                  -                    } else {\
                                  -                        b.removeChild(el);\
                                  -                        if (otherlib) {\
                                  -                            $jq = jQuery.noConflict();\
                                  -                        }\
                                  -                    }\
                                  -                },\
                                  -                2500);\
                                  -            }\
                                  -        })();\
                                  -        ";
                                  -
                                  -        if (Firebug.TraceModule) {
                                  -            Firebug.TraceModule.DBG_FIREQUERY = false;
                                  -            var type = firequeryPrefs.getPrefType('extensions.firebug.DBG_FIREQUERY');
                                  -            if (type != nsIPrefBranch.PREF_BOOL) try {
                                  -                firequeryPrefs.setBoolPref('extensions.firebug.DBG_FIREQUERY', false);
                                  -            } catch(e) {}
                                  -        }
                                  -    
                                  -        function dbg() {
                                  -            if (FBTrace && FBTrace.DBG_FIREQUERY) { 
                                  -                FBTrace.sysout.apply(this, arguments);
                                  -            }
                                  -        }
                                  -        
                                  -        var OBJECTBOX = this.OBJECTBOX =
                                  -            SPAN({'class': "objectBox objectBox-$className"});
                                  -
                                  -        var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -            DIV({'class': "objectBox objectBox-$className"});
                                  -
                                  -        var OBJECTLINK = this.OBJECTLINK =
                                  -            A({
                                  -                'class': "objectLink objectLink-$className a11yFocus",
                                  -                _repObject: "$object"
                                  -            });
                                  -
                                  -        const edgeSize = 1;
                                  -
                                  -        var generateGuid = function() {
                                  -            var S4 = function() {
                                  -               return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
                                  -            };
                                  -            return S4()+S4();
                                  -        };
                                  -
                                  -        function getNonFrameBody(elt) {
                                  -            var body = getBody(elt.ownerDocument);
                                  -            return body.localName.toUpperCase() == "FRAMESET" ? null : body;
                                  -        }
                                  -
                                  -        function attachStyles(context, body) {
                                  -            var doc = body.ownerDocument;
                                  -            if (!context.highlightStyle)
                                  -                context.highlightStyle = createStyleSheet(doc, highlightCSS);
                                  -
                                  -            if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc)
                                  -                addStyleSheet(body.ownerDocument, context.highlightStyle);
                                  -        }
                                  -        
                                  -        function evalJQueryCache(object, context) {
                                  -            try {
                                  -                var win = object.ownerDocument.defaultView;
                                  -                var wrapper = win.wrappedJSObject || win;
                                  -                var jQuery = wrapper.jQuery;
                                  -                // jQuery 1.4 breaking changes (http://jquery14.com/day-01/jquery-14):
                                  -                // jQuery.data(elem) no longer returns an id, it returns the element’s object cache instead.
                                  -                var idOrCache = jQuery.data(object.wrappedJSObject || object);
                                  -                if (typeof idOrCache == "object") return idOrCache; // jQuery 1.4+ path
                                  -                return jQuery.cache[idOrCache]; // jQuery 1.3- path 
                                  -            } catch (ex) {}
                                  -        }
                                  -
                                  -        function hasJQueryCache(object, context) {
                                  -            var cache = evalJQueryCache(object, context);
                                  -            for (var x in cache) {
                                  -                if (cache.hasOwnProperty(x)) return true;
                                  -            }
                                  -        }
                                  -
                                  -        function findNodeDataBox(objectNodeBox, attrName)
                                  -        {
                                  -            var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -            for (; child; child = child.nextSibling)
                                  -            {
                                  -                if (hasClass(child, "nodeData") && child.childNodes[0].firstChild && child.childNodes[0].firstChild.nodeValue == attrName)
                                  -                {
                                  -                    return child;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        function dataDescriptor(name, data, tag) {
                                  -            var rep = {};
                                  -            rep[name] = data;
                                  -            return {
                                  -                name: name,
                                  -                data: data,
                                  -                tag: tag,
                                  -                rep: rep
                                  -            };
                                  -        }
                                  -
                                  -        function mutateData(target, attrChange, attrName, attrValue)  {
                                  -            this.markChange();
                                  -
                                  -            var createBox = Firebug.scrollToMutations || Firebug.expandMutations;
                                  -            var objectNodeBox = createBox ? this.ioBox.createObjectBox(target) : this.ioBox.findObjectBox(target);
                                  -            if (!objectNodeBox) return;
                                  -
                                  -            if (isVisible(objectNodeBox.repObject))
                                  -                removeClass(objectNodeBox, "nodeHidden");
                                  -            else
                                  -                setClass(objectNodeBox, "nodeHidden");
                                  -            var nodeAttr;
                                  -            if (attrChange == MODIFICATION || attrChange == ADDITION) {
                                  -                var rep = Firebug.getRep(attrValue);
                                  -                var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                var valRep = Firebug.HTMLPanel.DataNode.tag.replace({
                                  -                    attr: dataDescriptor(attrName, attrValue, tag)
                                  -                }, this.document);
                                  -
                                  -                nodeAttr = findNodeDataBox(objectNodeBox, attrName);
                                  -                if (nodeAttr) {
                                  -                    nodeAttr.parentNode.replaceChild(valRep, nodeAttr);
                                  -                    this.highlightMutation(valRep, objectNodeBox, "mutated");
                                  -                } else {
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    labelBox.insertBefore(valRep, null);
                                  -                    this.highlightMutation(valRep, objectNodeBox, "mutated");
                                  -                }
                                  -            } else if (attrChange == REMOVAL) {
                                  -                nodeAttr = findNodeDataBox(objectNodeBox, attrName);
                                  -                if (nodeAttr) {
                                  -                    nodeAttr.parentNode.removeChild(nodeAttr);
                                  -                    this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -    
                                  -        function patchJQuery(jQuery, context) {
                                  -            if (jQuery.wrappedJSObject) jQuery = jQuery.wrappedJSObject;
                                  -            if (jQuery._patchedByFireQuery) return;
                                  -            jQuery._patchedByFireQuery = true;
                                  -            jQuery.data_originalReplacedByFireQuery = jQuery.data;
                                  -            jQuery.data = function(elem, name, data) {
                                  -                var res = this.data_originalReplacedByFireQuery.apply(this, arguments);
                                  -                try {
                                  -                    if (name && data!==undefined) {
                                  -                        mutateData.call(context.getPanel('html'), elem, MODIFICATION, name, data);
                                  -                    }
                                  -                } catch (ex) {
                                  -                    // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason)
                                  -                }
                                  -                return res;
                                  -            };
                                  -            jQuery.removeData_originalReplacedByFireQuery = jQuery.removeData;
                                  -            jQuery.removeData = function(elem, name) {
                                  -                var res = this.removeData_originalReplacedByFireQuery.apply(this, arguments);
                                  -                try {
                                  -                    if (name) {
                                  -                        mutateData.call(context.getPanel('html'), elem, REMOVAL, name);
                                  -                    }
                                  -                } catch (ex) {
                                  -                    // html panel may not exist yet (also want to be safe, when our highlighter throws for any reason)
                                  -                }
                                  -                return res;
                                  -            };
                                  -
                                  -            // apply jquery lint if requested
                                  -            if (Firebug.FireQuery.getPref('useLint')) {
                                  -                try {
                                  -                    var code = Firebug.FireQuery.prepareJQueryLintCode();
                                  -                    Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -                } catch (ex) {
                                  -                    dbg("   ! "+ex, context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        function installJQueryWatcher(win, context) {
                                  -            try {
                                  -                var code = jQueryWatcherCode.replace(/\{\{watcherInterval\}\}/g, Firebug.FireQuery.getPref('watcherInterval'));
                                  -                Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -            } catch (ex) {
                                  -                dbg("   ! "+ex, context);
                                  -            }
                                  -        }
                                  -        
                                  -        function patchWindow(win, context) {
                                  -            try {
                                  -                var wrapper = win.wrappedJSObject;
                                  -                var jQuery = wrapper.jQuery;
                                  -                patchJQuery(jQuery, context);
                                  -                dbg(">>>FireQuery: successfully found and patched jQuery in the window ", win);
                                  -            } catch (ex) {
                                  -                dbg('>>>FireQuery: jQuery not found in the window, running watcher ...', win);
                                  -                win.document.wrappedJSObject.addEventListener('jQueryDetected', function() {
                                  -                    try {
                                  -                        var wrapper = win.wrappedJSObject;
                                  -                        var jQuery = wrapper.jQuery;
                                  -                        patchJQuery(jQuery, context);
                                  -                        dbg(">>>FireQuery: successfully notified and patched late jQuery in the window ", win);
                                  -                    } catch (ex) {
                                  -                        dbg(">>>FireQuery: fatal error patching late jQuery in the window ", win);
                                  -                    }
                                  -                }, true);
                                  -                installJQueryWatcher(win, context);
                                  -            }
                                  -        }
                                  -        
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery
                                  -        //
                                  -        Firebug.FireQuery = extend(Firebug.ActivableModule, {
                                  -            version: '0.6',
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            start: function() {
                                  -                dbg(">>>FireQuery.start");
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            stop: function() {
                                  -                dbg(">>>FireQuery.stop");
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            initialize: function() {
                                  -            
                                  -                setTimeout(function(){
                                  -                    var doc = Firebug.chrome.document;
                                  -                    var styleSheet = createStyleSheet(doc, Env.Location.baseDir + "test/firequery/firequery.css");
                                  -                    addStyleSheet(doc, styleSheet);
                                  -                },0);
                                  -        
                                  -                dbg(">>>FireQuery.initialize");
                                  -                this.panelName = 'FireQuery';
                                  -                this.description = "jQuery related enhancements for Firebug.";
                                  -                Firebug.Module.initialize.apply(this, arguments);
                                  -                this.augumentConsolePanelContextMenu();
                                  -                this.start();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            shutdown: function() {
                                  -                dbg(">>>FireQuery.shutdown");
                                  -                this.stop();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            augumentConsolePanelContextMenu: function() {
                                  -                dbg(">>>FireQuery.augumentConsolePanelContextMenu");
                                  -                if (!Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery) {
                                  -                    Firebug.ConsolePanel.prototype.getOptionsMenuItemsOriginalBeforePatchedByFireQuery = Firebug.ConsolePanel.prototype.getOptionsMenuItems;
                                  -                    Firebug.ConsolePanel.prototype.getOptionsMenuItems = function() {
                                  -                        var items = this.getOptionsMenuItemsOriginalBeforePatchedByFireQuery.apply(this, arguments);
                                  -                        if (!items) items = [];
                                  -                        items = items.concat(Firebug.FireQuery.getOptionsMenuItems());
                                  -                        return items;
                                  -                    };
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            initializeUI: function() {
                                  -                dbg(">>>FireQuery.initializeUI");
                                  -                Firebug.Module.initializeUI.apply(this, arguments);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            onSuspendFirebug: function(context) {
                                  -                dbg(">>>FireQuery.onSuspendFirebug");
                                  -                this.stop();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            onResumeFirebug: function(context) {
                                  -                dbg(">>>FireQuery.onResumeFirebug");
                                  -                this.start();
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            showPanel: function(browser, panel) {
                                  -                dbg(">>>FireQuery.showPanel "+panel.name, panel);
                                  -                var isConsole = panel.name == "console";
                                  -                var isHTML = panel.name == "html";
                                  -                if (isConsole || isHTML) {
                                  -                    this.applyPanelCSS("chrome://firequery/skin/firequery.css", panel);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            loadedContext: function(context) {
                                  -                dbg(">>>FireQuery.loadedContext ", context);
                                  -                patchWindow(context.browser.contentWindow, context);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            prepareJQuerifyCode: function() {
                                  -                var jQueryURL = this.getPref('jQueryURL') || 'chrome://firequery-resources/content/jquery.js';
                                  -                var jQueryURLTimeout = this.getPref('jQueryURLTimeout') || 5000;
                                  -
                                  -                var code = jQuerifyCode;
                                  -                code = code.replace(/\{\{jQueryURL\}\}/g, jQueryURL.replace("'", "\\'"));
                                  -                code = code.replace(/\{\{jQueryURLTimeout\}\}/g, jQueryURLTimeout+'');
                                  -                return code;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            prepareJQueryLintCode: function() {
                                  -                var jQueryLintURL = this.getPref('jQueryLintURL') || 'chrome://firequery-resources/content/jquery.lint.js';
                                  -                var jQueryLintURLTimeout = this.getPref('jQueryLintURLTimeout') || 5000;
                                  -
                                  -                var code = jQueryLintInjectorCode;
                                  -                code = code.replace(/\{\{jQueryLintURL\}\}/g, jQueryLintURL.replace("'", "\\'"));
                                  -                code = code.replace(/\{\{jQueryLintURLTimeout\}\}/g, jQueryLintURLTimeout+'');
                                  -                return code;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            buttonJQuerify: function(context) {
                                  -                dbg(">>>FireQuery.buttonJQuerify ", context);
                                  -                try {
                                  -                    var code = this.prepareJQuerifyCode();
                                  -                    Firebug.CommandLine.evaluateInWebPage(code, context);
                                  -                } catch (ex) {
                                  -                    dbg("   ! "+ex, context);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getPref: function(name) {
                                  -                var prefName = this.getPrefDomain().toLowerCase() + "." + name;
                                  -                var type = firequeryPrefs.getPrefType(prefName);
                                  -                if (type == nsIPrefBranch.PREF_STRING)
                                  -                return firequeryPrefs.getCharPref(prefName);
                                  -                else if (type == nsIPrefBranch.PREF_INT)
                                  -                return firequeryPrefs.getIntPref(prefName);
                                  -                else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                return firequeryPrefs.getBoolPref(prefName);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            setPref: function(name, value) {
                                  -                var prefName = this.getPrefDomain().toLowerCase() + "." + name;
                                  -                var type = firequeryPrefs.getPrefType(prefName);
                                  -                if (type == nsIPrefBranch.PREF_STRING)
                                  -                firequeryPrefs.setCharPref(prefName, value);
                                  -                else if (type == nsIPrefBranch.PREF_INT)
                                  -                firequeryPrefs.setIntPref(prefName, value);
                                  -                else if (type == nsIPrefBranch.PREF_BOOL)
                                  -                firequeryPrefs.setBoolPref(prefName, value);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            applyPanelCSS: function(url, panel) {
                                  -                dbg(">>>FireQuery.applyPanelCSS "+url, panel);
                                  -                var links = FBL.getElementsBySelector(panel.document, "link");
                                  -                for (var i=0; i < links.length; i++) {
                                  -                    var link = links[i];
                                  -                    if (link.getAttribute('href')==url) return; // already applied
                                  -                }
                                  -                var styleElement = panel.document.createElement("link");
                                  -                styleElement.setAttribute("type", "text/css");
                                  -                styleElement.setAttribute("href", url);
                                  -                styleElement.setAttribute("rel", "stylesheet");
                                  -                var head = this.getHeadElement(panel.document);
                                  -                if (head) head.appendChild(styleElement);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            visitWebsite: function() {
                                  -                dbg(">>>FireQuery.visitWebsite", arguments);
                                  -                openNewTab(fireQueryHomepage);
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            updateOption: function(name, value) {
                                  -                dbg(">>>FireQuery.updateOption: "+name+" -> "+value);
                                  -                if (name=='firequery.useLint') {
                                  -                    if (value) {
                                  -                        Firebug.Console.logFormatted(["jQuery Lint will be available after next refresh"], FirebugContext, "info");
                                  -                    } else {
                                  -                        Firebug.Console.logFormatted(["jQuery Lint won't be loaded after next refresh"], FirebugContext, "info");
                                  -                    }
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getOptionsMenuItems: function() {
                                  -                var optionMenu = function(label, option) {
                                  -                    return {
                                  -                        label: label, 
                                  -                        nol10n: true,
                                  -                        type: "checkbox", 
                                  -                        checked: Firebug.FireQuery.getPref(option), 
                                  -                        option: option,
                                  -                        command: function() {
                                  -                            Firebug.FireQuery.setPref(option, !Firebug.FireQuery.getPref(option)); // toggle
                                  -                        }
                                  -                    };
                                  -                };
                                  -                dbg(">>>FireQuery.getOptionsMenuItems", arguments);
                                  -                return [
                                  -                    '-',
                                  -                    optionMenu("Use jQuery Lint", "useLint"),
                                  -                    {
                                  -                        label: "Visit FireQuery Website...",
                                  -                        nol10n: true,
                                  -                        command: function() {
                                  -                            Firebug.FireQuery.visitWebsite();
                                  -                        }
                                  -                    }
                                  -                ];
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getHeadElement: function(doc) {
                                  -                var heads = doc.getElementsByTagName("head");
                                  -                if (heads.length == 0) return doc.documentElement;
                                  -                return heads[0];
                                  -            }
                                  -        });
                                  -    
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryHighlighter
                                  -        //
                                  -        Firebug.FireQuery.JQueryHighlighter = function() {
                                  -            this.seed = "highlighter-"+generateGuid();
                                  -        };
                                  -
                                  -        Firebug.FireQuery.JQueryHighlighter.prototype = {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            highlight: function(context, element) {
                                  -                if (!element) return;
                                  -                if (element instanceof XULElement) return;
                                  -                var dims, x, y, w, h;
                                  -                try {
                                  -                    // Firebug 1.3 path
                                  -                    dims = getViewOffset(element, true);
                                  -                    x = dims.x; y = dims.y;
                                  -                    w = element.offsetWidth; h = element.offsetHeight;                
                                  -                } catch (ex) {
                                  -                    try {
                                  -                        // Firebug 1.4 path
                                  -                        dims = getRectTRBLWH(element, context);
                                  -                        x = dims.left; y = dims.top;
                                  -                        w = dims.width; h = dims.height;
                                  -                    } catch (ex) {
                                  -                        try {
                                  -                            // Firebug 1.5+ path
                                  -                            dims = getLTRBWH(element, context);
                                  -                            x = dims.left; y = dims.top;
                                  -                            w = dims.width; h = dims.height;
                                  -                        } catch (ex) {
                                  -                            dbg(' getLTRBWH failed: '+ex, element);
                                  -                            return;
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
                                  -                if (wacked) return;
                                  -
                                  -                var nodes = this.getNodes(context, element);
                                  -
                                  -                move(nodes.top, x, y-edgeSize);
                                  -                resize(nodes.top, w, edgeSize);
                                  -
                                  -                move(nodes.right, x+w, y-edgeSize);
                                  -                resize(nodes.right, edgeSize, h+edgeSize*2);
                                  -
                                  -                move(nodes.bottom, x, y+h);
                                  -                resize(nodes.bottom, w, edgeSize);
                                  -
                                  -                move(nodes.left, x-edgeSize, y-edgeSize);
                                  -                resize(nodes.left, edgeSize, h+edgeSize*2);
                                  -                
                                  -                move(nodes.content, x, y);
                                  -                resize(nodes.content, w, h);
                                  -                
                                  -                var body = getNonFrameBody(element);
                                  -                if (!body)
                                  -                    return this.unhighlight(context);
                                  -
                                  -                var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument;
                                  -                if (needsAppend) {
                                  -                    attachStyles(context, body);
                                  -                    for (var edge in nodes) {
                                  -                        try {
                                  -                            body.appendChild(nodes[edge]);
                                  -                        }
                                  -                        catch(exc) {
                                  -                        }
                                  -                    }
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            unhighlight: function(context) {
                                  -                var nodes = this.getNodes(context);
                                  -                var body = nodes.top.parentNode;
                                  -                if (body) {
                                  -                    for (var edge in nodes)
                                  -                        body.removeChild(nodes[edge]);
                                  -                }
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getNodes: function(context) {
                                  -                if (!context[this.seed]) {
                                  -                    var doc = context.window.document;
                                  -                    function createEdge(name) {
                                  -                        var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                        div.firebugIgnore = true;
                                  -                        div.className = "firebugHighlight";
                                  -                        return div;
                                  -                    }
                                  -                    function createBox(name) {
                                  -                        var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                        div.firebugIgnore = true;
                                  -                        div.className = "firebugHighlight";
                                  -                        div.style.backgroundColor = "SkyBlue";
                                  -                        div.style.opacity="0.4";
                                  -                        return div;
                                  -                    }
                                  -                    context[this.seed] = {
                                  -                        content: createBox("Content"),
                                  -                        top: createEdge("Top"),
                                  -                        right: createEdge("Right"),
                                  -                        bottom: createEdge("Bottom"),
                                  -                        left: createEdge("Left")
                                  -                    };
                                  -                }
                                  -                return context[this.seed];
                                  -            }
                                  -        };
                                  -
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // monkey-patching of Firebug.Inspector.highlightObject
                                  -        //
                                  -        Firebug.Inspector.originalHighlightObject = Firebug.Inspector.highlightObject;
                                  -        Firebug.Inspector.highlightObject = function(element, context, highlightType, boxFrame) {
                                  -            if (!this.jQueryHighlighters) this.jQueryHighlighters = [];
                                  -            var i, highlighter;
                                  -            for (i=0; i<this.jQueryHighlighters.length; i++) {
                                  -                highlighter = this.jQueryHighlighters[i];
                                  -                highlighter.unhighlight(this.jQueryHighlighterContext);
                                  -            }
                                  -            this.jQueryHighlighters = [];
                                  -            
                                  -            if (!element || !element.length) {
                                  -                return Firebug.Inspector.originalHighlightObject.call(this, element, context, highlightType, boxFrame);
                                  -            } else {
                                  -                Firebug.Inspector.originalHighlightObject.call(this, null, context, highlightType, boxFrame);
                                  -            }
                                  -
                                  -            if (context && context.window && context.window.document) {
                                  -                this.jQueryHighlighterContext = context;
                                  -                for (i=0; i<element.length; i++) {
                                  -                    highlighter = new Firebug.FireQuery.JQueryHighlighter();
                                  -                    highlighter.highlight(context, element[i]);
                                  -                    this.jQueryHighlighters.push(highlighter);
                                  -                }
                                  -            }
                                  -        };
                                  -
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryExpression
                                  -        //
                                  -        Firebug.FireQuery.JQueryExpression = domplate(Firebug.Rep, {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            tag:
                                  -                OBJECTBOX({},
                                  -                    A({
                                  -                        'class': "objectLink objectLink-jquery-sign",
                                  -                        _repObject: "$object"
                                  -                    }, "jQuery"),
                                  -                    SPAN({'class': "arrayLeftBracket"}, "("),
                                  -                    FOR("item", "$object|arrayIterator",
                                  -                        TAG("$item.tag", {object: "$item.object"}),
                                  -                        SPAN({'class': "arrayComma"}, "$item.delim")
                                  -                    ),
                                  -                    SPAN({'class': "arrayRightBracket"}, ")")
                                  -                ),
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            arrayIterator: function(array) {
                                  -                var items = [];
                                  -                for (var i = 0; i < array.length; ++i) {
                                  -                    var value = array[i];
                                  -                    var rep = Firebug.getRep(value);
                                  -                    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                    var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -                    items.push({object: value, tag: tag, delim: delim});
                                  -                }
                                  -                return items;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            className: "jquery-expression",
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            supportsObject: function(object) {
                                  -                if (!object) return;
                                  -                return !!object.jquery;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getRealObject: function(event, context) {
                                  -                return null;
                                  -            },
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            getContextMenuItems: function(event) {
                                  -                return null;
                                  -            }
                                  -        });
                                  -    
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // Firebug.FireQuery.JQueryElement
                                  -        //
                                  -        Firebug.FireQuery.JQueryElement = domplate(FirebugReps.Element, {
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            tag:
                                  -                OBJECTLINK(
                                  -                    "&lt;",
                                  -                    SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator",
                                  -                        "&nbsp;$attr.localName=&quot;", SPAN({'class': "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -                    ),
                                  -                    "&gt;"
                                  -                 ),
                                  -            /////////////////////////////////////////////////////////////////////////////////////////
                                  -            shortTag:
                                  -                SPAN(
                                  -                    OBJECTLINK(
                                  -                        SPAN({'class': "$object|getVisible"},
                                  -                            SPAN({'class': "selectorTag"}, "$object|getSelectorTag"),
                                  -                            SPAN({'class': "selectorId"}, "$object|getSelectorId"),
                                  -                            SPAN({'class': "selectorClass"}, "$object|getSelectorClass"),
                                  -                            SPAN({'class': "selectorValue"}, "$object|getValue")
                                  -                        )
                                  -                     ),
                                  -                     A({'class': "objectLink objectLink-jquery-data", onclick: "$onDataClick", _objData: "$object" }, "&#9993;") // envelope sign
                                  -                ),
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            onDataClick: function(event) {
                                  -                var object = event.currentTarget.objData;
                                  -                var cache = evalJQueryCache(object);
                                  -                if (!cache) return;
                                  -                var rep = Firebug.getRep(cache);
                                  -                //rep.inspectObject(cache, Firebug.context);
                                  -                Firebug.chrome.selectPanel("DOM");
                                  -                Firebug.chrome.getPanel("DOM").select(cache);
                                  -            },
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            dataIterator: function(object) {
                                  -                if (!object) return [];
                                  -                var cache = evalJQueryCache(object);
                                  -                if (!cache) return [];
                                  -                var res = [];
                                  -                for (var data in cache) {
                                  -                    if (cache.hasOwnProperty(data)) {
                                  -                        var rep = Firebug.getRep(cache[data]);
                                  -                        var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -                        res.push(dataDescriptor(data, cache[data], tag));
                                  -                    }
                                  -                }
                                  -                return res;
                                  -            },
                                  -            ///////////////////////////////////////////////////////////////////////////////////////////
                                  -            supportsObject: function(object, type) {
                                  -                if (!FirebugReps.Element.supportsObject.call(this, object, type)) return false;
                                  -                return hasJQueryCache(object);
                                  -            }
                                  -        });
                                  -        
                                  -        ////////////////////////////////////////////////////////////////////////
                                  -        // patch Firebug.HTMLPanel.*Element
                                  -        //
                                  -        
                                  -        if (checkFirebugVersion(1, 5)) {
                                  -            // Firebug 1.5 and later
                                  -            
                                  -            var AttrTag = Firebug.HTMLPanel.AttrTag;
                                  -            var TextTag = Firebug.HTMLPanel.TextTag;
                                  -            var DataTag =
                                  -                SPAN({"class": "nodeData", _repObject: "$attr.rep"},
                                  -                    SPAN({"class": "nodeName"}, "$attr.name"), "=",
                                  -                    TAG("$attr.tag", {object: "$attr.data"})
                                  -                );
                                  -
                                  -            Firebug.HTMLPanel.DataNode = domplate(FirebugReps.Element, {
                                  -                tag: DataTag
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.Element = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            IMG({"class": "twisty", role: "presentation"}),
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeChildBox", role :"group"}), /* nodeChildBox is special signal in insideOutBox */
                                  -                        DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                            SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                                "&lt;/",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                "&gt;"
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.CompleteElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({"class": "nodeLabel"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeChildBox"},
                                  -                            FOR("child", "$object|childIterator",
                                  -                                TAG("$child|getNodeTag", {object: "$child"})
                                  -                            )
                                  -                        ),
                                  -                        DIV({"class": "nodeCloseLabel"},
                                  -                            "&lt;/",
                                  -                            SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                            "&gt;"
                                  -                         )
                                  -                    ),
                                  -
                                  -                getNodeTag: Firebug.HTMLPanel.CompleteElement.getNodeTag,
                                  -
                                  -                childIterator: Firebug.HTMLPanel.CompleteElement.childIterator
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.EmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.XEmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.TextElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -                        DIV({"class": "nodeLabel", role: "presentation"},
                                  -                            SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                                "&lt;",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                TextTag,
                                  -                                "&lt;/",
                                  -                                SPAN({"class": "nodeTag"}, "$object.nodeName|toLowerCase"),
                                  -                                "&gt;",
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -        } else {
                                  -            // Firebug 1.4 and older
                                  -            AttrTag =
                                  -                SPAN({'class': "nodeAttr editGroup"},
                                  -                    "&nbsp;", SPAN({'class': "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -                    SPAN({'class': "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -                );
                                  -
                                  -            DataTag =
                                  -                SPAN({'class': "nodeData", _repObject: "$attr.rep"},
                                  -                    SPAN({'class': "nodeName"}, "$attr.name"), "=",
                                  -                    TAG("$attr.tag", {object: "$attr.data"})
                                  -                );
                                  -
                                  -            Firebug.HTMLPanel.DataNode = domplate(FirebugReps.Element, {
                                  -                tag: DataTag
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.Element = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            IMG({'class': "twisty"}),
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeChildBox"}),
                                  -                        DIV({'class': "nodeCloseLabel"},
                                  -                            SPAN({'class': "nodeCloseLabelBox repTarget"},
                                  -                                "&lt;/",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                "&gt;"
                                  -                            )
                                  -                         )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.CompleteElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox open $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket"}, "&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeChildBox"},
                                  -                            FOR("child", "$object|childIterator",
                                  -                                TAG("$child|getNodeTag", {object: "$child"})
                                  -                            )
                                  -                        ),
                                  -                        DIV({'class': "nodeCloseLabel"},
                                  -                            "&lt;/",
                                  -                            SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                            "&gt;"
                                  -                         )
                                  -                    ),
                                  -
                                  -                getNodeTag: function(node) {
                                  -                    return getNodeTag(node, true);
                                  -                },
                                  -
                                  -                childIterator: function(node) {
                                  -                    if (node.contentDocument)
                                  -                        return [node.contentDocument.documentElement];
                                  -
                                  -                    if (Firebug.showWhitespaceNodes)
                                  -                        return cloneArray(node.childNodes);
                                  -                    else {
                                  -                        var nodes = [];
                                  -                        for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -                            if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                                nodes.push(child);
                                  -                        }
                                  -                        return nodes;
                                  -                    }
                                  -                }
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.EmptyElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "/&gt;"),
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -
                                  -            Firebug.HTMLPanel.TextElement = domplate(Firebug.FireQuery.JQueryElement, {
                                  -                tag:
                                  -                    DIV({'class': "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object"},
                                  -                        DIV({'class': "nodeLabel"},
                                  -                            SPAN({'class': "nodeLabelBox repTarget"},
                                  -                                "&lt;",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                FOR("attr", "$object|attrIterator", AttrTag),
                                  -                                SPAN({'class': "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                                SPAN({'class': "nodeText editable"}, "$object|getNodeText"),
                                  -                                "&lt;/",
                                  -                                SPAN({'class': "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                                "&gt;",
                                  -                                FOR("attr", "$object|dataIterator", DataTag)
                                  -                            )
                                  -                        )
                                  -                    )
                                  -            });
                                  -        }
                                  -        
                                  -        Firebug.registerModule(Firebug.FireQuery);
                                  -        Firebug.reps.splice(0, 0, Firebug.FireQuery.JQueryExpression); // need to get this before array rep (jQuery expression behaves like array from JQuery 1.3)
                                  -        Firebug.reps.splice(0, 0, Firebug.FireQuery.JQueryElement); // need to get this before old Element rep
                                  -    }
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/firequery/index.html b/branches/flexBox/sandbox/firequery/index.html
                                  deleted file mode 100644
                                  index b439d5d6..00000000
                                  --- a/branches/flexBox/sandbox/firequery/index.html
                                  +++ /dev/null
                                  @@ -1,113 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.4 Testing</title>
                                  -<script type="text/javascript" src="../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -<script type="text/javascript" src="firequerylite.js"></script>
                                  -<script type="text/javascript">
                                  -$(document).ready(function(){
                                  -    $("div").data("value", 10);
                                  -    setTimeout(function(){
                                  -        var console = window.firebug || window.console;
                                  -        console.log('Executing $("div"):', $("div"));
                                  -    },1000);
                                  -});
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -<style type="text/css">
                                  -#dummy {
                                  -    color: yellow;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.4 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul style="padding-top:10px; padding-left:2px; padding-right:7px; padding-bottom: 20px; margin-top: 12px; margin-right: 22px; margin-left: 2px; margin-bottom: 7px; color: gray; overflow: auto;">
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/full.html b/branches/flexBox/sandbox/full.html
                                  deleted file mode 100644
                                  index 5b730363..00000000
                                  --- a/branches/flexBox/sandbox/full.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.5 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug-lite.js"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = window.firebug || window.console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Hello World</h2>
                                  -      <ul>
                                  -        <li><a href="#">One</a></li>
                                  -        <li><a href="#">Two</a></li>
                                  -        <li><a href="#">Three</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Just a test note
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/head/xhtml/xhml-strict.html b/branches/flexBox/sandbox/head/xhtml/xhml-strict.html
                                  deleted file mode 100644
                                  index ca52b133..00000000
                                  --- a/branches/flexBox/sandbox/head/xhtml/xhml-strict.html
                                  +++ /dev/null
                                  @@ -1,10 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                                  -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                                  -<html>
                                  -<body>
                                  -<p>Test HEAD</p>
                                  -<script type="text/javascript">
                                  -alert(document.getElementsByTagName('head').length);
                                  -</script>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/head/xhtml/xhml-transitional.html b/branches/flexBox/sandbox/head/xhtml/xhml-transitional.html
                                  deleted file mode 100644
                                  index 97a7b0ee..00000000
                                  --- a/branches/flexBox/sandbox/head/xhtml/xhml-transitional.html
                                  +++ /dev/null
                                  @@ -1,10 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                                  -"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                                  -<html>
                                  -<body>
                                  -<p>Test HEAD</p>
                                  -<script type="text/javascript">
                                  -alert(document.getElementsByTagName('head').length);
                                  -</script>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/head/xsl/xml-xsl.xml b/branches/flexBox/sandbox/head/xsl/xml-xsl.xml
                                  deleted file mode 100644
                                  index ceb78ee6..00000000
                                  --- a/branches/flexBox/sandbox/head/xsl/xml-xsl.xml
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<?xml-stylesheet type="text/xsl" href="xml-xsl.xsl"?>
                                  -<testXml />
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/head/xsl/xml-xsl.xsl b/branches/flexBox/sandbox/head/xsl/xml-xsl.xsl
                                  deleted file mode 100644
                                  index cfb0c526..00000000
                                  --- a/branches/flexBox/sandbox/head/xsl/xml-xsl.xsl
                                  +++ /dev/null
                                  @@ -1,19 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                                  -xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://www.w3.org/1999/xhtml">
                                  -<!--
                                  -<xsl:output method="html" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
                                  -doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
                                  --->
                                  -<xsl:template match="/">
                                  -<html>
                                  -<body>
                                  -<p>Test HEAD</p>
                                  -<script type="text/javascript">
                                  -alert(document.getElementsByTagName('head').length);
                                  -</script>
                                  -</body>
                                  -</html> 
                                  -</xsl:template>
                                  -
                                  -</xsl:stylesheet>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/i18n/firebug.properties b/branches/flexBox/sandbox/i18n/firebug.properties
                                  deleted file mode 100644
                                  index 8668b820..00000000
                                  --- a/branches/flexBox/sandbox/i18n/firebug.properties
                                  +++ /dev/null
                                  @@ -1,790 +0,0 @@
                                  -Firebug=Firebug
                                  -# LOCALIZATION NOTE (WindowTitle): Title of detached Firebug window.
                                  -# %S Title of the associated web page.
                                  -# examples: Firebug - Google
                                  -WindowTitle=Firebug - %S
                                  -# Panel titles
                                  -Panel-console=Console
                                  -Panel-net=Rede
                                  -Panel-html=HTML
                                  -Panel-stylesheet=CSS
                                  -Panel-script=Script
                                  -Panel-dom=DOM
                                  -Panel-css=Estilo
                                  -Panel-computed=Executado
                                  -Panel-layout=Exibição
                                  -Panel-domSide=DOM
                                  -Panel-watches=Observar
                                  -Panel-breakpoints=Pontos de Interrupção
                                  -Panel-callstack=Pilha
                                  -Panel-scopes=Escopos
                                  -firebug.DetachFirebug=Abrir Firebug em Nova Janela
                                  -firebug.AttachFirebug=Adicionar o Firebug em uma janela do Browser
                                  -# LOCALIZATION NOTE (pluralRuleFirebugs): Custom plural rule for this locale.
                                  -# If there is no Firebug translation for the current browser locale, this value
                                  -# will be used instead of the one in chrome://global/locale/intl.properties
                                  -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
                                  -pluralRule=1
                                  -# LOCALIZATION NOTE (plural.Total_Firebugs): Semi-colon list of plural forms.
                                  -# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
                                  -# Used in a tooltip that is displayed for Firebug icon located within Firefox status bar.
                                  -# Displays number of pages with Firebug activated.
                                  -# %S number of Firebugs activated
                                  -# example: 2 Total Firebugs
                                  -plural.Total_Firebugs=%S de total de Firebugs;%S de total de Firebugs
                                  -inBrowser=No Navegador
                                  -detached=Destacado
                                  -minimized=Minimizado
                                  -enablement.for_all_pages=para todas as páginas
                                  -enablement.on=Ativo
                                  -enablement.off=Inativo
                                  -none=Fechado
                                  -Detached=Destacado
                                  -Firebug_-_inactive_for_selected_Firefox_tab=Firebug - desativado para a aba selecionada do Firefox
                                  -Activate_Firebug_for_the_selected_Firefox_tab=Ativar Firebug para a aba selecionada do Firefox
                                  -Minimized=Minimizado
                                  -Minimize_Firebug=Minimize Firebug
                                  -On_for_all_web_pages=Desativado para todas as páginas da Web
                                  -firebug.menu.Clear_Activation_List=Limpar lista de ativação
                                  -firebug_options=Opções do Firebug
                                  -firebug_options_showQuickInfoBox=Mostrar caixa de informação rápida
                                  -# LOCALIZATION NOTE (firebug.Show_All_Panels): Menu item label used in 'list of all panels'
                                  -# menu (available on Firebug's tab bar).
                                  -firebug.Show_All_Panels=Mostrar todos os painéis
                                  -# Console panel options.
                                  -ShowJavaScriptErrors=Exibir Erros do JavaScript
                                  -ShowJavaScriptWarnings=Exibir Avisos do JavaScript
                                  -ShowCSSErrors=Exibir Erros das CSS
                                  -ShowXMLErrors=Exibir Erros do XML
                                  -ShowStackTrace=Exibir Pilha Traçada Com Erros
                                  -ShowXULErrors=Exibir Erros do XUL
                                  -ShowXULMessages=Exibir Mensagens do XUL
                                  -ShowXMLHttpRequests=Exibir XMLHttpRequests
                                  -ShowChromeErrors=Exibir Erros do Chrome
                                  -ShowChromeMessages=Exibir Mensagens do Chrome
                                  -ShowExternalErrors=Exibir Erros Externos
                                  -ShowNetworkErrors=Mostrar erros de Rede
                                  -JavascriptOptionsStrict=Avisos Severos (desvantagem no desempenho)
                                  -LargeCommandLine=Linha de Comando Grande
                                  -commandLineShowCompleterPopup=Mostrar Popup de lista de complementos
                                  -console_command_line=linha de comando de console
                                  -Assertion=Falha na Confirmação
                                  -# LOCALIZATION NOTE (Line): Used at many places in the UI. Displays location of an error,
                                  -# message, etc. within a source of a web page.
                                  -# #1 File name, #2 Line number
                                  -# examples: somePage.htm (line 64)
                                  -Line=%S (linha %S)
                                  -InstanceLine=%S #%S (linha %S)
                                  -StackItem=%S (%S linha %S)
                                  -SystemItem=<Sistema>
                                  -# LOCALIZATION NOTE (InspectInTab): Menu item label used in a various context menus.
                                  -# For example, right clicking on an element in the HTML panel offers an action to inspect
                                  -# clicked element in the DOM panel (tab).
                                  -# #1 Target panel title
                                  -# examples: Inspect in DOM Tab
                                  -InspectInTab=Inspecionar na Aba %S
                                  -NoName=(sem nome)
                                  -# LOCALIZATION NOTE (jsdIScript): an internal Firefox object used for debugging Firebug
                                  -# do not translate.
                                  -# #1 jsdIScript.tag
                                  -jsdIScript=jsdIScript %S
                                  -# HTML panel context menu items.
                                  -ShowFullText=Exibir Texto Completo
                                  -ShowWhitespace=Exibir Espaço em Branco
                                  -ShowTextNodesWithEntities=Mostrar Entidades Básicas
                                  -ShowComments=Exibir Comentários
                                  -HighlightMutations=Destacar Mudanças
                                  -ExpandMutations=Expandir Mudanças
                                  -ScrollToMutations=Rolar Mudanças na Visualização
                                  -ScrollIntoView=Rolar na Visualização
                                  -NewAttribute=Novo Atributo...
                                  -EditHTMLElement=Editar HTML...
                                  -EditSVGElement=Editar SVG...
                                  -EditMathMLElement=Editar MathML...
                                  -DeleteElement=Excluir Elemento
                                  -EditNode=Editar HTML...
                                  -DeleteNode=Excluir Nó
                                  -ShowQuickInfoBox=Mostrar caixa rápida de informações
                                  -ShadeBoxModel=Sombrear modelo de Caixa
                                  -# Quick Info Box
                                  -quickInfo=Informação Rápida
                                  -computedStyle=Style executado
                                  -# LOCALIZATION NOTE (html.Break_On_Mutate, html.Disable_Break_On_Mutate): Tooltips for resume
                                  -# button that are used when the HTML panel is currently selected. The button allows stopping
                                  -# JS execution when DOM of the current page is modified.
                                  -html.Break_On_Mutate=Parar em uma alteração
                                  -html.Disable_Break_On_Mutate=Desabilitar parada em uma alteração
                                  -html.label.Break_On_Text_Change=Parar na troca de texto
                                  -html.label.HTML_Breakpoints=Pontos de parada no HTML
                                  -html.label.Break_On_Attribute_Change=Parar na troca de Atributos
                                  -html.label.Break_On_Child_Addition_or_Removal=Parar na inserção ou remoção de Filho
                                  -html.label.Break_On_Element_Removal=Parar na remoção de elemento
                                  -dom.label.DOM_Breakpoints=Pontos de Parada DOM
                                  -# LOCALIZATION NOTE (EditAttribute): Menu Item label used in HTML panel context menu. Allows
                                  -# editing an existing HTML element attribute.
                                  -# #1 Name of the clicked attribute.
                                  -# examples: Edit Attribute "onclick"...
                                  -EditAttribute=Editar Attributo "%S"...
                                  -# LOCALIZATION NOTE (DeleteAttribute): Menu Item label used in HTML panel context menu. Allows
                                  -# deleting an existing HTML element attribute.
                                  -# #1 Name of the clicked attribute.
                                  -# examples: Delete Attribute "onclick"...
                                  -DeleteAttribute=Excluir Atributo "%S"
                                  -# LOCALIZATION NOTE (InheritedFrom): Displaying a HTML element name + an applied CSS rule.
                                  -# that has been inherited. Used in the Style side panel (under HTML panel).
                                  -# examples: Inherited from table.tabView
                                  -InheritedFrom=Herdado de
                                  -SothinkWarning=A extensão Sothink SWF Catcher está impedindo o Firebug de funcionar adequadamente.<br><br>Por favor, leia <a href="http://www.getfirebug.com/faq.html#Sothink" target="_new">este item na FAQ do Firebug</a> para ajuda.
                                  -EmptyStyleSheet=Não há regras nesta folha de estilo.
                                  -EmptyElementCSS=Este elemento não possui regras de estilo.
                                  -EditStyle=Editar Estilo do Elemento...
                                  -NewRule=Nova Regra...
                                  -NewProp=Nova Propriedade...
                                  -# LOCALIZATION NOTE (EditProp): Menu item label used in the CSS panel context menu.
                                  -# Allows to edit an existing CSS rule property.
                                  -# %S Name of the clicked property
                                  -# examples: Edit "background-color"...
                                  -EditProp=Editar "%S"...
                                  -# LOCALIZATION NOTE (DisableProp): Menu item label used in the CSS panel context menu.
                                  -# Allows to disable an existing CSS rule property.
                                  -# %S Name of the clicked property
                                  -# examples: Disable "background-color"
                                  -DisableProp=Desabilitar "%S"
                                  -# LOCALIZATION NOTE (DeleteProp): Menu item label used in the CSS panel context menu.
                                  -# Allows to delete an existing CSS rule property.
                                  -# %S Name of the clicked property
                                  -# examples: Delete "background-color"
                                  -DeleteProp=Excluir "%S"
                                  -# Console context menu labels.
                                  -BreakOnThisError=Interromper Neste Erro
                                  -BreakOnAllErrors=Interromper em Todos os Erros
                                  -DisableBreakOnNext=Desabilitar Parada no Próximo
                                  -DecompileEvals=Descompilar para código eval()
                                  -ShowAllSourceFiles=Exibir fontes do chrome
                                  -TrackThrowCatch=Acompanhar Throw/Catch
                                  -UseLastLineForEvalName=Usar Última Linha do Fonte para nomes de eval()
                                  -UseMD5ForEvalName=Usar MD5 para nomes de eval()
                                  -# LOCALIZATION NOTE do not translate, no longer used(?)
                                  -DBG_FBS_CREATION=Cuidado! DBG_FBS_CREATION
                                  -DBG_FBS_BP=Cuidado! DBG_BP
                                  -DBG_FBS_ERRORS=Cuidado! DBG_ERRORS
                                  -DBG_FBS_STEP=Cuidado! DBG_STEP
                                  -# Breakpoints side panel
                                  -Breakpoints=Pontos de Interrupção
                                  -ErrorBreakpoints=Pontos de Interrupção de Erro
                                  -LoggedFunctions=Funções Registradas
                                  -EnableAllBreakpoints=Habilitar Todos os Pontos de Interrupção
                                  -DisableAllBreakpoints=Desabilitar Todos os Pontos de Interrupção
                                  -ClearAllBreakpoints=Remover Todos os Pontos de Interrupção
                                  -# LOCALIZATION NOTE (script.balloon.Continue, script.balloon.Disable): Labels used for buttons
                                  -# within balloon popup dialog. This dialog appears when debugger halts at a breakpoint or at
                                  -# a 'debugger' keyword.
                                  -# Continue: allows to resume the debugger
                                  -# Disable: allows to disable the current 'debugger;' keyword used in the Javascript source.
                                  -script.balloon.Continue=Continuar
                                  -script.balloon.Disable=Desabilitar
                                  -# Script panel
                                  -StepOver=Passo Sobre
                                  -StepInto=Passo Dentro
                                  -StepOut=Passo Fora
                                  -RunUntil=Executar Até Esta Linha
                                  -ScriptsFilterStatic=Exibir Scripts Estáticos
                                  -ScriptsFilterEval=Exibir Scripts Estáticos e de eval
                                  -ScriptsFilterEvent=Exibir Scripts Estáticos e de eventos
                                  -ScriptsFilterAll=Exibir Scripts Estáticos, de eval e eventos
                                  -ScriptsFilterStaticShort=estático
                                  -ScriptsFilterEvalShort=evals
                                  -ScriptsFilterEventShort=eventos
                                  -ScriptsFilterAllShort=tudo
                                  -ShowUserProps=Exibir Propriedades Definidas pelo Usuário
                                  -ShowUserFuncs=Exibir Funções Definidas pelo Usuário
                                  -ShowDOMProps=Exibir Propriedades do DOM
                                  -ShowDOMFuncs=Exibir Funções do DOM
                                  -ShowDOMConstants=Exibir Constantes do DOM
                                  -NoMembersWarning=Não há propriedades a exibir para este objeto.
                                  -NewWatch=Nova expressão observadora...
                                  -AddWatch=Adicionar Observador
                                  -CopySourceCode=Copiar Código Fonte
                                  -CopyValue=Copiar Valor
                                  -Copy_Name=Copiar nome
                                  -Copy_Path=Copiar caminho
                                  -NewProperty=Nova Propriedade...
                                  -EditProperty=Editar Propriedade...
                                  -EditVariable=Editar Variável...
                                  -EditWatch=Editar Observador...
                                  -DeleteProperty=Excluir Propriedade
                                  -DeleteWatch=Excluir Observador
                                  -ConditionInput=Este ponto de interrupção vai parar apenas se esta expressão for verdadeira:
                                  -SetBreakpoint=Definir Ponto de Interrupção
                                  -DisableBreakpoint=Desabilitar Ponto de Interrupção
                                  -EditBreakpointCondition=Editar Condição do Ponto de Interrupção
                                  -NoBreakpointsWarning=Não há pontos de interrupção definidos nesta página.
                                  -Show_User_Agent_CSS=Mostrar User Agent CSS
                                  -Expand_Shorthand_Properties=Mostar as propriedades de "Shorthand"
                                  -script.Type_any_key_to_filter_list=Digitar qualquer tecla para filtrar na lista
                                  -# LOCALIZATION NOTE (LayoutPadding, LayoutBorder, LayoutMargin, LayoutPosition, LayoutAdjacent):
                                  -# Labels used to describe layout properties a the selected HTML element.
                                  -# Used in the Layout side panel under HMTL panel.
                                  -LayoutPadding=enchimento
                                  -LayoutBorder=borda
                                  -LayoutMargin=margem
                                  -LayoutPosition=posição
                                  -LayoutAdjacent=adjacente
                                  -position=posição
                                  -# LOCALIZATION NOTE (ShowRulers): Label for context menu item. Used in the Layout side panel
                                  -# under HTML panel.
                                  -ShowRulers=Exibir Regras e Guias
                                  -# Net panel
                                  -Loading=Carregando...
                                  -Headers=Cabeçalhos
                                  -# LOCALIZATION NOTE (net.header.Reset_Header) Label for header context menu (within the net panel)
                                  -net.header.Reset_Header=Reiniciar cabeçalho
                                  -# LOCALIZATION NOTE (net.header.URL, net.header.URL_Tooltip, net.header.Status,
                                  -# net.header.Status_Tooltip, net.header.Domain, net.header.Domain_Tooltip,
                                  -# net.header.Size, net.header.Size_Tooltip, net.header.Timeline, net.header.Timeline_Tooltip):
                                  -# Labels and tooltips for a headers displayed on top of the Net panel.
                                  -net.header.URL=URL
                                  -net.header.URL_Tooltip=URL requisitada e usando método HTTP.
                                  -net.header.Status=Status
                                  -net.header.Status_Tooltip=Status do resultado recebido.
                                  -net.header.Domain=Domínio
                                  -net.header.Domain_Tooltip=Domínio da solicitação executada.
                                  -net.header.Size=Tamanho
                                  -net.header.Size_Tooltip=Tamanho da resposta recebida.
                                  -net.header.Timeline=Linha de tempo
                                  -net.header.Timeline_Tooltip=Informação detalhada de tempo sobre a resposta solicitada.
                                  -# LOCALIZATION NOTE (net.label.Network_Breakpoints): Label for network breakpoints group.
                                  -net.label.XHR_Breakpoints=Pontos de parada de XHR
                                  -# LOCALIZATION NOTE (net.label.Break_On_Request): Label used in the Net panel's context
                                  -# menu for breaking on a XHR.
                                  -net.label.Break_On_XHR=Parar no XHR
                                  -# LOCALIZATION NOTE (net.headers.view_source, net.headers.pretty_print): Labels used in the
                                  -# Net panel's Headers tab (displayed if you expand a network request). The label is used
                                  -# for a button that switches the view between "show raw source code" and "pretty formated header
                                  -# values".
                                  -net.headers.view_source=ver fonte
                                  -net.headers.pretty_print=boa impressão
                                  -# LOCALIZATION NOTE (net.filter.Media): Label for net panel filter (used on the Net panel toolbar)
                                  -net.filter.Media=Media
                                  -# LOCALIZATION NOTE (Post, Put): Label (verb) used in the Net panel for detailed info about
                                  -# a network request (displayed when a net panel entry is expanded). The content of
                                  -# this tab displays sent data (related to a HTTP send method).
                                  -Post=Postar
                                  -Put=Colocar
                                  -# LOCALIZATION NOTE (Response, URLParameters, Cache, HTML, jsonviewer.tab.JSON, xmlviewer.tab.XML):
                                  -# Label used in the Net panel for detailed info about a network request (displayed
                                  -# when a net panel entry is expanded)
                                  -Response=Resposta
                                  -URLParameters=Parâmetros
                                  -Cache=Cache
                                  -HTML=HTML
                                  -jsonviewer.tab.JSON=JSON
                                  -xmlviewer.tab.XML=XML
                                  -svgviewer.tab.SVG=SVG
                                  -# LOCALIZATION NOTE (RequestHeaders, ResponseHeaders): Label (noun) used in the Net panel
                                  -# (expand an entry in the panel and select Headers tab).
                                  -RequestHeaders=Cabeçalhos de Solicitação
                                  -ResponseHeaders=Cabeçalhos de Resposta
                                  -# LOCALIZATION NOTE (plural.Limit_Exceeded): Semi-colon list of plural forms.
                                  -# A message displayed in the Net panel when some entries must be removed since maximum number
                                  -# of entries has been reached.
                                  -# %S the number of entries removed
                                  -# example: Firebug's log limit has been reached. 150 entries not shown.
                                  -plural.Limit_Exceeded=O limite de log do Firebug foi alcançado. %S entradas não mostradas.;O limite de log do Firebug foi alcançado. %S entradas não mostradas.
                                  -LimitPrefs=Preferências
                                  -# LOCALIZATION NOTE (LimitPrefsTitle): A message displayed in the Net panel when log limit
                                  -# has been reached. Informing the user what preferencee should be changed to modify the limit.
                                  -# %S Name of a preference.
                                  -# examples: In order to change the limit modify: firebug.extensions.console.logLimit
                                  -LimitPrefsTitle=A fim de alterar o limite modifique: %S
                                  -Refresh=Atualizar
                                  -OpenInTab=Abrir em Nova Aba
                                  -Open_Response_In_New_Tab=Abrir Resultado em uma Nova Aba
                                  -# LOCALIZATION NOTE (Profile): Used as a caption for reported profile info.
                                  -# (result of javascript profiler tool). Represents a verb.
                                  -Profile=Perfil
                                  -ProfilerStarted=O perfilador está em execução. Clique em 'Perfil' novamente para ver seu relatório.
                                  -# LOCALIZATION NOTE (plural.Profile_Time): Semi-colon list of plural forms.
                                  -# Used as a caption for reported profile info (result of javascript profiler tool).
                                  -# #1 number of milliseconds
                                  -# #2 number of calls (plural)
                                  -# example: (#1ms, #2 calls)
                                  -plural.Profile_Time=(%Sms, %S chamadas);(%Sms, %S chamadas)
                                  -NothingToProfile=Sem atividade ao perfil.
                                  -PercentTooltip=Percentual de tempo gasto nesta função.
                                  -CallsHeaderTooltip=Número de vezes em que a função foi chamada.
                                  -OwnTimeHeaderTooltip=Tempo gasto na função, excluindo chamadas aninhadas.
                                  -TimeHeaderTooltip=Tempo gasto na função, incluindo chamadas aninhadas.
                                  -AvgHeaderTooltip=Média de tempo, incluindo chamadas a funções.
                                  -MinHeaderTooltip=Tempo mínimo, incluindo chamadas a funções.
                                  -MaxHeaderTooltip=Tempo máximo, incluindo chamadas a funções.
                                  -ProfileButton.Enabled.Tooltip=Perfil do tempo de execução do JavaScript.
                                  -ProfileButton.Disabled.Tooltip=Perfil do tempo de execução do JavaScript (O painel Script precisa estar habilitado).
                                  -Function=Função
                                  -Percent=Por cento
                                  -# LOCALIZATION NOTE (Calls, OwnTime, Time, Avg, Min, Max, File): Used in profiler report header
                                  -# (name of a report column). In order to see this, select the Console panel start profiling
                                  -# by clicking the Profile button and stop it by clicking again. The report is logged into the
                                  -# console panel. Make sure Script panel is enabled.
                                  -Calls=Chamadas
                                  -OwnTime=Tempo Próprio
                                  -Time=Tempo
                                  -Avg=Méd
                                  -Min=Min
                                  -Max=Máx
                                  -File=Arquivo
                                  -# Support for clipboard actions.
                                  -Copy=Copiar
                                  -Cut=Recortar
                                  -Remove=Remover
                                  -CopyHTML=Copiar HTML
                                  -CopySVG=Copiar SVG
                                  -CopyMathML=Copiar MathML
                                  -CopyInnerHTML=Copiar innerHTML
                                  -CopyXPath=Copiar XPath
                                  -Copy_CSS_Path=Copiar o caminho do CSS
                                  -CopyLocation=Copiar Localização
                                  -CopyLocationParameters=Copiar Localização com Parâmetros
                                  -CopyRequestHeaders=Copiar Cabeçalhos de Solicitação
                                  -CopyResponseHeaders=Copiar Cabeçalhos de Resposta
                                  -CopyResponse=Copiar Corpo de Resposta
                                  -CopyError=Copiar Erro
                                  -CopySource=Copiar Função
                                  -# LOCALIZATION NOTE (ShowCallsInConsole): Label for context menu item. Used in the Script
                                  -# panel when clicking a function object.
                                  -# %S Name of the function
                                  -# Log Calls to "getData"
                                  -ShowCallsInConsole=Registrar Chamadas a "%S"
                                  -ShowEventsInConsole=Registrar Eventos
                                  -panel.Enabled=Habilitado
                                  -panel.Disabled=Desabilitado
                                  -panel.Enable=Habilitar
                                  -panel.Disable=Desabilitar
                                  -# LOCALIZATION NOTE (anel.tooltip.Show_Command_Line): A tooltip used for a button on main
                                  -# Firebug toolbar. This button allows to open the command line even within other panels.
                                  -panel.tooltip.Show_Command_Line=Mostrar linha de comando
                                  -# LOCALIZATION NOTE (console.MethodNotSupported): A message displayed in the Console panel
                                  -# if specific method is not supported.
                                  -# %S Name of a not supported method.
                                  -console.MethodNotSupported=O console do Firebug não suporta '%S'
                                  -# LOCALIZATION NOTE (commandline.MethodNotSupported): A message displayed in the Console panel
                                  -# when a not supported method is used on the command line.
                                  -# %S Name of a not supported method.
                                  -commandline.MethodNotSupported=A linha de comando do Firefox não suporta '%S'
                                  -# LOCALIZATION NOTE (console.Disable_Break_On_All_Errors, console.Break_On_All_Errors):
                                  -# Tooltip for the "Break on... " button used when the Console panel is selected.
                                  -console.Disable_Break_On_All_Errors=Desabilitar paradas em todos os erros
                                  -console.Break_On_All_Errors=Parar em todos os erros
                                  -console.Break_On_This_Error=Parar neste erro
                                  -# LOCALIZATION NOTE (console.Use_TAB_and_arrow_keys) 
                                  -# Top of the completion popup in the command line
                                  -console.Use_TAB_and_arrow_keys=Use TAB e setas do teclado
                                  -# Console strings used when JavaScript is not available
                                  -console.JSDisabledInFirefoxPrefs=Javascript está desabilitado nas suas preferências do Firefox. Se você deseja utilizar essa janela de console, então por favor habilite essa opção através de 'Ferramentas'->'Opções'->'Conteúdo'->'Habilitar Javascript'
                                  -# LOCALIZATION NOTE (net.sizeinfo.Response_Body, net.sizeinfo.Post_Body, net.sizeinfo.Total_Sent,
                                  -# net.sizeinfo.Total_Received):
                                  -# Labels used for detailed size info tooltip. The tooltip is displayed if you hover mouse
                                  -# over a Size displayed within the Net panel. 'Total Sent' and 'Total Received' info includes
                                  -# even sent and received heades size.
                                  -net.sizeinfo.Response_Body=Corpo de resposta
                                  -net.sizeinfo.Post_Body=Corpo de envio
                                  -net.sizeinfo.Total_Sent=Total Enviado
                                  -net.sizeinfo.Total_Received=Total Recebido
                                  -net.ActivationMessage=Painel de Rede ativado. Qualquer requisição efetuada enquanto o Painel de Rede estiver ativo não será mostrada.
                                  -net.responseSizeLimitMessage=O limite de tamanho de resposta do Firebug foi atingido. Clique <a>aqui</a> para abrir o resultado em uma nova aba do Firefox.
                                  -# LOCALIZATION NOTE (net.postDataSizeLimitMessage): A warning message displayed within the Net
                                  -# panel (inside the Post tab of an expanded request entry). The message informs the user that
                                  -# posted data reached Firebug's size limit and only part of it is displayed in the UI.
                                  -net.postDataSizeLimitMessage=limite de tamanho máximo do Firebug foi atingido pelo Firebug.
                                  -net.Break_On_XHR=Parar no XHR
                                  -net.label.Parameters=Parâmetros
                                  -net.label.Parts=Partes
                                  -net.label.Source=Fonte
                                  -# LOCALIZATION NOTE (net.option.Disable_Browser_Cache, net.option.Show_Paint_Events):
                                  -# Labels for Net panel's options.
                                  -net.option.Disable_Browser_Cache=Desabilitar Cache do Browser
                                  -net.option.Show_Paint_Events=Mostrar eventos de pintura
                                  -# LOCALIZATION NOTE (net.option.Show_BF_Cache_Responses, net.option.tip.Show_BF_Cache_Responses):
                                  -# Net panels's option. If set to true, the net panel displays also response coming from
                                  -# BF (back-forward) cache. See also: https://developer.mozilla.org/En/Working_with_BFCache
                                  -net.option.Show_BF_Cache_Responses=Mostrar respostas de Cache BF
                                  -net.option.tip.Show_BF_Cache_Responses=O painel de rede pode também mostrar respostas vindas do Cache BF
                                  -script.Break_On_Next=Parar na Próxima
                                  -ShowHttpHeaders=Exibir Cabeçalhos HTTP
                                  -# LOCALIZATION NOTE (plural.Request_Count): Semi-colon list of plural forms.
                                  -# A label used in the Net panel. Displays number of HTTP requests executed by the current page.
                                  -# %S number of requests
                                  -# example: 21 requests
                                  -plural.Request_Count=%S requisição;%S requisições
                                  -FromCache=do cache
                                  -StopLoading=Parar Carregamento
                                  -LargeData=(Dado Muito Grande)
                                  -ShowComputedStyle=Exibir Estilo Computado
                                  -StyleGroup-text=Texto
                                  -StyleGroup-background=Fundo
                                  -StyleGroup-box=Modelo de Caixa
                                  -StyleGroup-layout=Exibição
                                  -StyleGroup-other=Outro
                                  -Dimensions=%S x %S
                                  -CopyColor=Copiar Cor
                                  -CopyImageLocation=Copiar Localização da Imagem
                                  -OpenImageInNewTab=Abrir Imagem em Nova Aba
                                  -OmitObjectPathStack=Omitir Barra de Ferramentas Pilha
                                  -Copy_Rule_Declaration=Copiar declaração de regra
                                  -Copy_Style_Declaration=Copiar declaração de estilo
                                  -# LOCALIZATION NOTE (plural.Error_Count): Semi-colon list of plural forms.
                                  -# A label used in Firefox status bar. Displays number of JavaScript errors found by Firebug.
                                  -# %S number of errors
                                  -# example: 111 Errors
                                  -plural.Error_Count=%S erro;%S Erros
                                  -moduleManager.title=O painel %S está desabilitado
                                  -moduleManager.desc3=Use o menu do ícone do Firebug na Barra de Status para habilitar ou desabilitar todos os painéis. Use as abas do menu menor para controle individual do painel.
                                  -Suspend_Firebug=Suspender o Firebug
                                  -Resume_Firebug=Resultado do Firebug.
                                  -Reset_Panels_To_Disabled=Reinicie os painéis para desabilitar.
                                  -Open_Console=Abrir Console
                                  -Open_Console_Tooltip=Abrir terminal de rastreio para Firebug.
                                  -Scope_Chain=Sequencia de Escopo
                                  -# LOCALIZATION NOTE names of kinds of scopes. Probably best left in English.
                                  -# With: the scope inside of the with(obj) {} statement
                                  -With_Scope=Com
                                  -# Call: the scope inside of a function eg function foo() { XXX here XXX var f = function() {} };
                                  -Call_Scope=Chamada
                                  -# Window: the scope inside of a Javascript window object.
                                  -Window_Scope=Janela
                                  -Logs=Logs
                                  -Options=Opções
                                  -Copy_Stack=Copiar Pilha
                                  -Copy Exception=Copiar Exceção
                                  -# Net panel timing info labels
                                  -requestinfo.Blocking=Bloquear
                                  -requestinfo.Resolving=Procura do DNS
                                  -requestinfo.Connecting=Conectando
                                  -requestinfo.Sending=Enviando
                                  -requestinfo.Waiting=Aguardando
                                  -requestinfo.Receiving=Recebendo
                                  -requestinfo.ContentLoad='Conteúdo DOM Carregado' (evento)
                                  -requestinfo.WindowLoad='carregar' (evento)
                                  -requestinfo.Started=Iniciado
                                  -editors.Editor_Configuration=Editor de Configurações
                                  -search.Firebug_Search=Pesquisa do Firebug
                                  -search.Next=Próximo
                                  -search.Previous=Anterior
                                  -search.Case_Sensitive=Forçar diferencial entre Maiúsculas e Minúsculas
                                  -search.Multiple_Files=Multiplos Arquivos
                                  -search.Use_Regular_Expression=Usar Expressões Regulares
                                  -search.html.CSS_Selector=Seletor CSS
                                  -search.net.Headers=Cabeçalhos
                                  -search.net.Parameters=Parâmetros
                                  -search.net.Response_Bodies=Corpo de Respostas
                                  -search.script.Multiple_Files=Arquivos Multiplos
                                  -firebug.console.Persist=Pesistente
                                  -firebug.console.Do_Not_Clear_On_Reload=Não limpar no Reload
                                  -firebug.console.Show_All_Log_Entries=Mostrar todas as entradas do Log
                                  -firebug.console.Errors=Erros
                                  -firebug.console.Filter_by_Errors=Filtrar por Erros
                                  -firebug.console.Warnings=Avisos
                                  -firebug.console.Filter_by_Warnings=Filtrar por Avisos
                                  -firebug.console.Info=Informações
                                  -firebug.console.Filter_by_Info=Filtrar por Informações
                                  -firebug.console.Debug_Info=Informação de Depuração
                                  -firebug.console.Filter_by_Debug_Info=Filtrar por Informações de Depuração
                                  -firebug.menu.Clear_Console=Limpar Console
                                  -firebug.menu.Reset_All_Options=Resetar todas as opções
                                  -firebug.menu.Enable_All_Panels=Ativar todos painéis
                                  -firebug.menu.Disable_All_Panels=Desativar todos painéis
                                  -firebug.menu.Customize_shortcuts=Customizar Atalhos
                                  -firebug.menu.Enable_Accessibility_Enhancements=Habilitar Acessórios de Acessibilidade
                                  -firebug.menu.Activate_Same_Origin_URLs=Ativar as mesmas URLs Originais
                                  -firebug.menu.Reset_All_Firebug_Options=Reiniciar todas as opções do Firebug
                                  -firebug.menu.Firebug_Online=Firebug Online
                                  -firebug.shortcut.reenterCommand.label=Repetir Comando
                                  -firebug.shortcut.toggleInspecting.label=Alternar para Inspeção
                                  -firebug.shortcut.toggleQuickInfoBox.label=Alternar para Caixa de Informação Rápida
                                  -firebug.shortcut.toggleProfiling.label=Alternar para Desempenho
                                  -firebug.shortcut.focusCommandLine.label=Selecionar Linha de Comando
                                  -firebug.shortcut.focusFirebugSearch.label=Selecionar Busca do Firebug
                                  -firebug.shortcut.focusWatchEditor.label=Selecionar Editor de Vista
                                  -firebug.shortcut.focusLocation.label=Selecionar Localização
                                  -firebug.shortcut.focusFbMenu.label=Selecionar Menu do Firebug
                                  -firebug.shortcut.nextObject.label=Próximo Objeto
                                  -firebug.shortcut.previousObject.label=Objeto Anterior
                                  -firebug.shortcut.customizeFBKeys.label=Customizar Teclas do Firebug
                                  -firebug.shortcut.detachFirebug.label=Abrir Firebug em uma Nova Janela
                                  -firebug.shortcut.leftFirebugTab.label=Trocar para painel do firebug à esquerda
                                  -firebug.shortcut.rightFirebugTab.label=Alterar para Painel do Firebug à Direita
                                  -firebug.shortcut.toggleFirebug.label=Abrir Firebug
                                  -firebug.shortcut.previousFirebugTab.label=Aba anterior do Firebug
                                  -firebug.shortcut.clearConsole.label=Limpar Console
                                  -firebug.shortcut.openTraceConsole.label=Abrir terminal de rastreamento
                                  -firebug.shortcut.navBack.label=Voltar
                                  -firebug.shortcut.navForward.label=Avançar
                                  -firebug.panel_selector=Seletor de painéis
                                  -customizeShortcuts=Atribuição de teclas de atalho para o Firebug
                                  -keybindConfirmMsg=Você deseja salvar suas novas teclas de atalhos? As novas alterarações entrarão em vigor após o Firefox ser reiniciado.
                                  -#A11y Chrome Labels (not visible, spoken by screen readers)
                                  -a11y.labels.panel_tools=painel de ferramentas
                                  -a11y.labels.firebug_panels=painéis do Firebug
                                  -a11y.labels.firebug_side_panels=painéis laterais do Firebug
                                  -a11y.labels.firebug_window=janela do Firebug
                                  -a11y.labels.firebug_status=status do Firebug
                                  -a11y.labels.reset=reiniciar
                                  -a11y.labels.reset_shortcut=reiniciar o atalho %S
                                  -aria.labels.inactive_panel=painel inativo
                                  -#A11y panelNode labels (not visible, spoken by screen readers)
                                  -a11y.labels.log_rows=monitorar linhas
                                  -a11y.labels.call_stack=chamar pilha
                                  -a11y.labels.document_structure=Estrutura do documento
                                  -a11y.labels.title_panel=painel %S
                                  -a11y.labels.title_side_panel=painel lateral %S
                                  -a11y.labels.cached=cacheado
                                  -aria.labels.stack_trace=percurso da pilha
                                  -#A11y Domplate labels  (not visible, spoken by screen readers)
                                  -a11y.layout.padding=padding
                                  -a11y.layout.border=borda
                                  -a11y.layout.margin=margem
                                  -a11y.layout.position=posição
                                  -a11y.layout.position_top=posicionamento acima
                                  -a11y.layout.position_right=posicionamento a direita
                                  -a11y.layout.position_bottom=posicionamento a baixo
                                  -a11y.layout.position_left=posicionamento a esquerda
                                  -a11y.layout.margin_top=topo da margem
                                  -a11y.layout.margin_right=margem direita
                                  -a11y.layout.margin_bottom=margem da base
                                  -a11y.layout.margin_left=margem esquerda
                                  -a11y.layout.border_top=topo da borda
                                  -a11y.layout.border_right=borda direita
                                  -a11y.layout.border_bottom=borda de base
                                  -a11y.layout.border_left=borda esquerda
                                  -a11y.layout.padding_top=espaçamento superior
                                  -a11y.layout.padding_right=espaçamento direito
                                  -a11y.layout.padding_bottom=espaçamento base
                                  -a11y.layout.padding_left=espaçamento esquerdo
                                  -a11y.layout.top=topo
                                  -a11y.layout.right=direita
                                  -a11y.layout.bottom=base
                                  -a11y.layout.left=esquerda
                                  -a11y.layout.width=largura
                                  -a11y.layout.height=altura
                                  -a11y.layout.size=tamanho
                                  -a11y.layout.z-index=index-z
                                  -a11y.layout.clientBoundingRect=extensão do quadrado cliente
                                  -a11y.descriptions.press_enter_to_edit_values=pressione Enter seguifo de TAB para editar valores individuais
                                  -a11y.labels.style_rules=regras de estilo
                                  -aria.labels.inherited_style_rules=regras de estilo herdadas
                                  -a11y.labels.computed_styles=estilos processados
                                  -a11y.labels.dom_properties=propriedades DOM
                                  -# LOCALIZATION NOTE
                                  -# Used by a11y. Not directly visible in the UI, intended for screen readers.
                                  -# Describe contents of inline editor fields
                                  -a11y.labels.inline_editor=editor inine
                                  -a11y.labels.value_for_attribute_in_element=valor para o atributo %S no elemento %S
                                  -a11y.labels.attribute_for_element=atributo para elemento %S
                                  -a11y.labels.text_contents_for_element=conteudo de texto para o elemento %S
                                  -a11y.labels.defined_in_file=definido em %S
                                  -a11y.labels.declarations_for_selector=declarações de estilo para o seletor "%S"
                                  -a11y.labels.property_for_selector=propriedade CSS para o seletor: %S
                                  -a11y.labels.value_property_in_selector=valor da propriendade %S para o seletor %S
                                  -a11y.labels.css_selector=seletor CSS
                                  -a11y.labels.source_code_for_file=código fonte para o arquivo %S
                                  -# LOCALIZATION NOTE (a11y.labels.overridden):
                                  -# Used by a11y. Not directly visible in the UI, intended for screen readers.
                                  -# indicates style property is overridden by selector with higher specificity
                                  -a11y.labels.overridden=sobrescrito
                                  -a11y.labels.press_enter_to_add_new_watch_expression=pressione enter para adicionar uma nova expressão de vistoria
                                  -# LOCALIZATION NOTE (a11y.hasConditionalBreakpoint, a11y.hasDisabledBreakpoint):
                                  -# Used by a11y. Not directly visible in the UI, intended for screen readers.
                                  -# Existence and state of a breakpoint
                                  -a11y.updates.has_conditional_break_point=tem ponto de parada condicional
                                  -a11y.updates.has_disabled_break_point=tem ponto de parada desabilitado
                                  -# LOCALIZATION NOTE (a11y.updates.script_suspended_on_line_in_file): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# #1 Line number, #2 Function name, #3 File name
                                  -a11y.updates.script_suspended_on_line_in_file=Script suspendido na linha %S em %S, arquivo %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_logrows): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a console panel search 
                                  -# #1 %S String key the use is looking for. #2 number of rows that contain the matched text
                                  -# examples: Match found for "test" in 17 log rows
                                  -a11y.updates.match_found_in_logrows=resultado encontrado para "%S" na linha %S de log
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_for_on_line): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a script panel search 
                                  -# #1 %S String key the use is looking for. #2 line number the match was found on. #3 file name the match was found in
                                  -# examples: Match found for "window.alert" on line 322 in utilities.js
                                  -a11y.updates.match_found_for_on_line=resultado encontrado para "%S" na linha %S em %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_element): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing an HTML panel search (if it is found in an element node) 
                                  -# #1 Search string that was matched. #2 the HTML element name containing the matched string. #3 XPATH string specifying  the matched element
                                  -# examples: Match found for "obj" in object element at /html/body/object[2]
                                  -a11y.updates.match_found_in_element=resultado encontrado para "%S" no elemento %S no caminho %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_attribute): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing an HTML  panel search (if it is found in an attribute node) 
                                  -# #1 Search string that was matched. #2 Attribute name #3 attribute value 
                                  -# #4 the HTML element name containing. #5 XPATH string specifying  the matched element
                                  -# examples: Match found for "abindex" in tabindex="0" in span element at /html/body/span[2]
                                  -a11y.updates.match_found_in_attribute=resultado encontrado para "%S" no atributo %S=%S para o elemento %S no caminho %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_text_content): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing an HTML panel search (if it is found in a text element's contents) 
                                  -# #1 Search string that was matched. #2 element's text content  
                                  -# #3 the HTML element name containing. #4 XPATH string specifying  the matched element
                                  -# examples: Match found for "Firebug Rocks!" in h2 element at /html/body/h2[2]
                                  -a11y.updates.match_found_in_text_content=resultado encontrado para "%S" no texto contendo: %S no elemento %S no caminho %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_selector): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a CSS panel search (if it is found in a selector) 
                                  -# #1 Search string that was matched. #2 selector in which the match was found  
                                  -# examples: Match found for "main" in #mainContent h2 {
                                  -a11y.updates.match_found_in_selector=encontrada busca por "%S" no seletor %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_style_property): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a CSS panel search (if it is found in a style declaration) 
                                  -# #1 Search string that was matched. #2 style property in which the match was found #3 selector the style declaration applies to  
                                  -# examples: Match found for background in style declaration background-repeat: "repeat-x"; in selector #mainContent {
                                  -a11y.updates.match_found_in_style_declaration=encontrada busca por "%S" na declaração de estilo %S no seletor %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_dom_property): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a DOM panel search  
                                  -# #1 Search string that was matched. #2 DOM property in which the match was found   
                                  -# examples: Match found for "time" in _starttime : 1257324992232 (Number)
                                  -a11y.updates.match_found_in_dom_property=encontrada busca por "%S" na propriedade DOM %S
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_net_row): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a Net panel search  
                                  -# #1 Search string that was matched. #2 File name associated to the row in which the match was found. 
                                  -# #3 Column in which the match was found #4. Column value   
                                  -# examples: Match found for "792" in GET loading_animation.gif, timeline: 792 ms
                                  -a11y.updates.match_found_in_net_row=encontrada busca por "%S" em %S, %s:%S;
                                  -# LOCALIZATION NOTE (a11y.updates.match_found_in_net_summary_row): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Describes the match found when performing a Net panel search (if it is found in the Net summary row)
                                  -# #1 Search string that was matched. #2 Column value in which the match was found 
                                  -# examples: Match found for "05" in net summary row: 4.05s
                                  -a11y.updates.match_found_in_net_summary_row=encontrada busca por "%S" no sumario de rede na linha: %S
                                  -# LOCALIZATION NOTE (a11y.updates.no_matches_found): Used by a11y. Not directly
                                  -# visible in the UI, intended for screen readers.
                                  -# Indicates that the searched string was not matched  
                                  -# %S Search string that was matched.   
                                  -# examples: No matched found for "wefkhwefkgwekhjgjh"
                                  -a11y.updates.no_matches_found=sem busca por "%S" no seletor %S
                                  -confirmation.Reset_All_Firebug_Options=Você tem certeza que deseja voltar todas as opções do Firebug para o estado inicial?
                                  -# Console messages.
                                  -warning.Console_must_be_enabled=O Terminal deve estar habilitado
                                  -warning.Command_line_blocked?=Linha de comando bloqueada?
                                  -message.Reload_to_activate_window_console=Reinicie para ativar a janela do terminal
                                  -# LOCALIZATION NOTE (message.knownIssues40): A message displayed for Firefox 40 users showing
                                  -# a link to known issues (with Firefox 4.0) page.
                                  -# examples: See Firefox 4.0 known issues page: http://getfirebug.com/knownissues
                                  -message.knownIssues40=Problemas com versão do Firefox para o Firebug:
                                  -# LOCALIZATION NOTE (label.Activate_Firebug_for_the_selected_Firefox_tab):
                                  -# If Firebug is displayed in an external window (detached), but not active for the
                                  -# currently selected Firefox tab, the following button label is used for an
                                  -# activation button.
                                  -label.Activate_Firebug_for_the_selected_Firefox_tab=Ativar Firebug para a aba do Firefox selecionada
                                  -# LOCALIZATION NOTE (message.Failed_to_load_source_for, message.The_resource_from_this_URL_is_not_text):
                                  -# An error message displayed in the Script panel when a source can't be displayed
                                  -# for specific URL.
                                  -# examples: Failed to load source for: http://www.example.com/script.js
                                  -# examples: The resource from this URL is not text: http://www.example.com/script.js
                                  -message.Failed_to_load_source_for=Falha em carregar fonte para
                                  -message.The_resource_from_this_URL_is_not_text=A base para essa URL não está no texto
                                  -# LOCALIZATION NOTE (firebug.history.Go_back_to_this_script, firebug.history.Go_forward_to_this_script,
                                  -# firebug.history.Stay_on_this_page): Tooltips for menu items in Scipt history popup menu.
                                  -firebug.history.Go_back_to_this_panel=voltar para este painel
                                  -firebug.history.Stay_on_this_panel=Ficar neste painel
                                  -firebug.history.Go_forward_to_this_panel=Voltar para este painel
                                  -# LOCALIZATION NOTE (firebug.history.Go_back_one_script, firebug.history.Go_forward_one_script):
                                  -# Tooltips for back/forward buttons on the Script panel toolbar.
                                  -firebug.history.Go_back=Voltar
                                  -firebug.history.Go_forward=Avançar
                                  -# LOCALIZATION NOTE (script.warning.inactive_during_page_load, script.suggestion.inactive_during_page_load):
                                  -# This message is displayed within the Script panel if debugger is inactive during page load.
                                  -# The suggestion message represents an advice how to solve the problem.
                                  -script.warning.inactive_during_page_load=Painel de Script ficou inativo durante o carregamento da página
                                  -script.suggestion.inactive_during_page_load=Recarregue para ver todos os códigos
                                  -# LOCALIZATION NOTE (script.warning.javascript_not_enabled, script.suggestion.javascript_not_enabled):
                                  -# This message is displayed within the Script panel if javascript is not enabled.
                                  -# The suggestion message represents an advice how to solve the problem.
                                  -script.warning.javascript_not_enabled=O Javascript está desabilitado
                                  -script.suggestion.javascript_not_enabled=Veja Firefox > Ferramentas > Opções > Conteúdo > Habilitar Javascript
                                  -# LOCALIZATION NOTE (script.button.enable_javascript): Title for a button that is displayed on
                                  -# the Script panel if Javascript is disabled. This button allows to enable it.
                                  -script.button.enable_javascript=Habilite o Javascript e recarregue
                                  -# LOCALIZATION NOTE (script.warning.all_scripts_filtered, script.suggestion.all_scripts_filtered):
                                  -# This message is displayed within the Script panel if javascript is not enabled for the current page.
                                  -# The suggestion message represents an advice how to solve the problem.
                                  -script.warning.all_scripts_filtered=Todos os scripts foram filtrados
                                  -script.suggestion.all_scripts_filtered=Veja a filtragem de Script na barra de tarefas "Mostrar Opções de Código Chrome"
                                  -# LOCALIZATION NOTE (script.warning.no_javascript, script.suggestion.no_javascript):
                                  -# This message is displayed within the Script panel if javascript is not enabled for the current page.
                                  -# The suggestion message represents an advice how to solve the problem.
                                  -script.warning.no_javascript=Sem Javascript nesta página
                                  -script.suggestion.no_javascript=Se as tags do <script>  tem um atributo "type", ele deve ser igual a "text/javascript" ou "application/javascript"
                                  -#firebug.dtd
                                  -firebug.Firebug=Firebug
                                  -firebug.Close=Fechar
                                  -firebug.View=Visualizar
                                  -firebug.Help=Ajuda
                                  -firebug.Vertical=Painéis Verticais
                                  -firebug.Run=Executar
                                  -firebug.Copy=Copiar
                                  -firebug.CopyBookmarklet=Copiar o script como um bookmarklet.
                                  -firebug.Options=Opções
                                  -firebug.TextSize=Tamanho do Texto
                                  -firebug.IncreaseTextSize=Aumentar o Tamanho do Texto
                                  -firebug.DecreaseTextSize=Diminuir o Tamanho do Texto
                                  -firebug.NormalTextSize=Tamanho do Texto Normal
                                  -firebug.ShowTooltips=Exibir Dicas de Pré-visualização
                                  -firebug.ShadeBoxModel=Sombrear Modelo de Caixa
                                  -firebug.Website=Website do Firebug...
                                  -firebug.Documentation=Documentação...
                                  -firebug.KeyShortcuts=Atalhos de Teclado...
                                  -firebug.Forums=Grupo de Discussão...
                                  -firebug.Issues=Acompanhador de Questões...
                                  -firebug.Donate=Contribuir...
                                  -firebug.About=Sobre...
                                  -firebug.AlwaysOpenInWindow=Sempre Abrir em Nova Janela
                                  -firebug.ShowFirebug=Abrir Firebug
                                  -firebug.OpenWith=Abrir Com Editor
                                  -firebug.CloseFirebug=Fechar Firebug
                                  -firebug.Permissions=Sites...
                                  -firebug.ConfigureEditors=Configurar Editores
                                  -firebug.CommandLine=Linha de Comando
                                  -firebug.Search=Busca
                                  -firebug.Continue=Continuar (F8)
                                  -firebug.StepOver=Passo Sobre (F10)
                                  -firebug.StepInto=Passo Dentro (F11)
                                  -firebug.StepOut=Passo Fora
                                  -firebug.BreakOnErrors=Interromper em Erros
                                  -firebug.Inspect=Inspecionar
                                  -firebug.InspectElement=Inspecionar Elemento
                                  -firebug.InspectTooltip=Clique em um elemento na página para inspecionar
                                  -firebug.Edit=Editar
                                  -firebug.EditHTMLTooltip=Editar este HTML
                                  -firebug.EditCSSTooltip=Editar esta folha de estilo
                                  -firebug.Profile=Perfil
                                  -firebug.ProfileScript=Perfil do JavaScript
                                  -firebug.Clear=Limpar
                                  -firebug.ClearConsole=Limpar Console
                                  -firebug.ClearTooltip=Limpar o Console
                                  -firebug.All=Tudo
                                  -firebug.Images=Imagens
                                  -firebug.Flash=Flash
                                  -#editors.dtd
                                  -editors.Description=Editores Configurados no Firebug:
                                  -editors.NameColumn=Editor
                                  -editors.ExecutableColumn=Executável
                                  -editors.ParamsColumn=Exibir argumentos
                                  -add.label=Adicionar
                                  -remove.label=Remover
                                  -change.label=Alterar
                                  -close.label=Fechar
                                  -browse.label=Procurar...
                                  -changeEditor.Name=Nome:
                                  -changeEditor.Executable=Executável:
                                  -changeEditor.CmdLine=Argumentos:
                                  -changeEditor.Invalid_Application_Path=Caminho inválido de aplicação
                                  -changeEditor.Application_does_not_exist=A aplicação especificada não existe!
                                  diff --git a/branches/flexBox/sandbox/i18n/test.html b/branches/flexBox/sandbox/i18n/test.html
                                  deleted file mode 100644
                                  index f732bdcf..00000000
                                  --- a/branches/flexBox/sandbox/i18n/test.html
                                  +++ /dev/null
                                  @@ -1,54 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=windows-1250">
                                  -<meta name="generator" content="PSPad editor, www.pspad.com">
                                  -<title></title>
                                  -<script>
                                  -window.onload = function()
                                  -{
                                  -    process();
                                  -};
                                  -
                                  -function process()
                                  -{
                                  -    var xhr = new XMLHttpRequest();
                                  -    xhr.open("get", "firebug.properties", false);
                                  -    xhr.send();
                                  -    
                                  -    var text = xhr.responseText;
                                  -    text = text.replace(/\r\n/g, "\n");
                                  -    
                                  -    var lines = text.split("\n");
                                  -    var length = lines.length;
                                  -    
                                  -    var i18n = {};
                                  -    
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        var line = lines[i];
                                  -        
                                  -        // comment
                                  -        if (line.charAt(0) == "#") continue;
                                  -        
                                  -        var pos = line.indexOf("=");
                                  -        
                                  -        if (pos == -1) continue;
                                  -        
                                  -        var name = line.substr(0,pos);
                                  -        var value = line.substr(pos+1);
                                  -        
                                  -        i18n[name] = value;
                                  -        
                                  -        //console.log("name: %s  value: %s", name, value);
                                  -    }
                                  -    
                                  -    console.log(i18n);
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/1145-xsl/firebug.xml b/branches/flexBox/sandbox/issues/1145-xsl/firebug.xml
                                  deleted file mode 100644
                                  index c535c614..00000000
                                  --- a/branches/flexBox/sandbox/issues/1145-xsl/firebug.xml
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<?xml-stylesheet type="text/xsl" href="firebug.xsl"?>
                                  -<testXml />
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/1145-xsl/firebug.xsl b/branches/flexBox/sandbox/issues/1145-xsl/firebug.xsl
                                  deleted file mode 100644
                                  index c509b394..00000000
                                  --- a/branches/flexBox/sandbox/issues/1145-xsl/firebug.xsl
                                  +++ /dev/null
                                  @@ -1,33 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                                  -xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://www.w3.org/1999/xhtml">
                                  -
                                  -<xsl:template match="/">
                                  -<html>
                                  -  <body>
                                  -    <h1>Test console...</h1>
                                  -    <!-- Change the location of the Firebug Lite source below if needed -->
                                  -    <script type="text/javascript" src="../../../build/firebug-lite-debug.js#startOpened"></script>
                                  -    
                                  -    <!--
                                  -    <script type="text/javascript">
                                  -    var script = document.createElementNS(document.documentElement.namespaceURI, "script");
                                  -    script.setAttribute("type", "text/javascript");
                                  -    script.setAttribute("src", "../../../build/firebug.uncompressed.js#startOpened");
                                  -    var body = document.getElementsByTagName("body")[0];
                                  -    body.appendChild(script);
                                  -    //body.insertBefore(script, body.firstChild);
                                  -    </script>
                                  -    -->
                                  -    <script type="text/javascript">
                                  -    /*
                                  -    setTimeout(function(){
                                  -        console.log("Hello, World.");
                                  -    },500);
                                  -    /**/
                                  -    </script>
                                  -  </body>
                                  -</html>   
                                  -</xsl:template>
                                  -
                                  -</xsl:stylesheet>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/2756-local-XHR/test.html b/branches/flexBox/sandbox/issues/2756-local-XHR/test.html
                                  deleted file mode 100644
                                  index 1f94be0b..00000000
                                  --- a/branches/flexBox/sandbox/issues/2756-local-XHR/test.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -        window.onload = function()
                                  -        {
                                  -            setTimeout(function(){
                                  -            
                                  -                xhr = new XMLHttpRequest();
                                  -                xhr.open("GET", "test.txt", true);
                                  -                xhr.send();
                                  -                /**/
                                  -                
                                  -                /*
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    success: function(text) {
                                  -                        console.log(text);
                                  -                    }
                                  -                });
                                  -                /**/
                                  -                
                                  -                /*
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    complete: function(req, status) {
                                  -                        if (status == "success") {
                                  -                            console.log(req.responseText);
                                  -                        }
                                  -                    }
                                  -                });
                                  -                /**/
                                  -                
                                  -            },1000);
                                  -        }
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/2756-local-XHR/test.txt b/branches/flexBox/sandbox/issues/2756-local-XHR/test.txt
                                  deleted file mode 100644
                                  index 232b7072..00000000
                                  --- a/branches/flexBox/sandbox/issues/2756-local-XHR/test.txt
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -testing...
                                  -testing...
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.html b/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.html
                                  deleted file mode 100644
                                  index bdc2ca28..00000000
                                  --- a/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.html
                                  +++ /dev/null
                                  @@ -1,25 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -        setTimeout(function(){
                                  -            
                                  -            $.ajax({
                                  -                async: false,
                                  -                url: "test.txt",
                                  -                complete: function(req, status) {
                                  -                    if (status == "success") {
                                  -                        alert("hi there!");
                                  -                    }
                                  -                }
                                  -            });
                                  -            
                                  -        },1000);
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.txt b/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.txt
                                  deleted file mode 100644
                                  index 232b7072..00000000
                                  --- a/branches/flexBox/sandbox/issues/2840-synchronous-XHR/test.txt
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -testing...
                                  -testing...
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/2846-offline-XHR/test.html b/branches/flexBox/sandbox/issues/2846-offline-XHR/test.html
                                  deleted file mode 100644
                                  index 67dce90b..00000000
                                  --- a/branches/flexBox/sandbox/issues/2846-offline-XHR/test.html
                                  +++ /dev/null
                                  @@ -1,22 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -            
                                  -        $.ajax({
                                  -            url: "test.txt",
                                  -            complete: function(req, status) {
                                  -                if (status == "success") {
                                  -                    alert("hi there!");
                                  -                }
                                  -            }
                                  -        });
                                  -            
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/2846-offline-XHR/test.txt b/branches/flexBox/sandbox/issues/2846-offline-XHR/test.txt
                                  deleted file mode 100644
                                  index 232b7072..00000000
                                  --- a/branches/flexBox/sandbox/issues/2846-offline-XHR/test.txt
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -testing...
                                  -testing...
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/2977-XHR-params/post.php b/branches/flexBox/sandbox/issues/2977-XHR-params/post.php
                                  deleted file mode 100644
                                  index 1eceae12..00000000
                                  --- a/branches/flexBox/sandbox/issues/2977-XHR-params/post.php
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -<?php
                                  -echo $_POST['name']; 
                                  -?>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/2977-XHR-params/test.html b/branches/flexBox/sandbox/issues/2977-XHR-params/test.html
                                  deleted file mode 100644
                                  index ef0488d5..00000000
                                  --- a/branches/flexBox/sandbox/issues/2977-XHR-params/test.html
                                  +++ /dev/null
                                  @@ -1,21 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -        setTimeout(function(){
                                  -            
                                  -            $.post("post.php?id=1", "name=hi", function(req, status) {
                                  -                if (status == "success") {
                                  -                    //consolex.log("hi there!");
                                  -                }
                                  -            });
                                  -            
                                  -        },1000);
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/2977-XHR-params/test.txt b/branches/flexBox/sandbox/issues/2977-XHR-params/test.txt
                                  deleted file mode 100644
                                  index 232b7072..00000000
                                  --- a/branches/flexBox/sandbox/issues/2977-XHR-params/test.txt
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -testing...
                                  -testing...
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.html b/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.html
                                  deleted file mode 100644
                                  index 1f94be0b..00000000
                                  --- a/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -        window.onload = function()
                                  -        {
                                  -            setTimeout(function(){
                                  -            
                                  -                xhr = new XMLHttpRequest();
                                  -                xhr.open("GET", "test.txt", true);
                                  -                xhr.send();
                                  -                /**/
                                  -                
                                  -                /*
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    success: function(text) {
                                  -                        console.log(text);
                                  -                    }
                                  -                });
                                  -                /**/
                                  -                
                                  -                /*
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    complete: function(req, status) {
                                  -                        if (status == "success") {
                                  -                            console.log(req.responseText);
                                  -                        }
                                  -                    }
                                  -                });
                                  -                /**/
                                  -                
                                  -            },1000);
                                  -        }
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.txt b/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.txt
                                  deleted file mode 100644
                                  index d3ae6e72..00000000
                                  --- a/branches/flexBox/sandbox/issues/3118-XHR-long-lines/test.txt
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -testing long line with no spaces...
                                  -0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0CANYOUSEEME
                                  -...
                                  -testing long line...
                                  -This is a very long line Lorem ipsum dolor sit amet consectetuer ac enim interdum Nam Nullam. Vitae volutpat ut laoreet justo libero netus risus Nam feugiat et. Felis at Morbi tellus Mauris tincidunt Curabitur pharetra Vestibulum Pellentesque fringilla. Libero dolor lobortis Nullam est odio faucibus Curabitur et Nulla neque. Justo lacinia eget nec eros augue facilisis sem nulla.
                                  -...
                                  diff --git a/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xml b/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xml
                                  deleted file mode 100644
                                  index c535c614..00000000
                                  --- a/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xml
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<?xml-stylesheet type="text/xsl" href="firebug.xsl"?>
                                  -<testXml />
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl b/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl
                                  deleted file mode 100644
                                  index fbb872c2..00000000
                                  --- a/branches/flexBox/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                                  -xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://www.w3.org/1999/xhtml">
                                  -
                                  -<xsl:template match="/">
                                  -<html>
                                  -  <body>
                                  -    <h1>Test console...</h1>
                                  -    <!-- Change the location of the Firebug Lite source below if needed -->
                                  -    <script type="text/javascript">
                                  -    (function(F,i,r,e,b,u,g,L,I,T,E){
                                  -        if(F.getElementById(b))return;
                                  -        E=F.documentElement.namespaceURI;
                                  -        E=E?F[i+'NS'](E,'script'):F[i]('script');
                                  -        //E=F[i]('script');
                                  -        E[r]('id',b);
                                  -        E[r]('src',I+g+T);
                                  -        E[r](b,u);
                                  -        (F[e]('head')[0]||F[e]('body')[0]).appendChild(E);
                                  -        E=new Image;
                                  -        E[r]('src',I+L);
                                  -    })(
                                  -        document,
                                  -        'createElement',
                                  -        'setAttribute',
                                  -        'getElementsByTagName',
                                  -        'FirebugLite',
                                  -        '1.3.0.3',
                                  -        'firebug-lite-beta.js',
                                  -        'releases/lite/latest/skin/xp/sprite.png',
                                  -        'https://getfirebug.com/',
                                  -        '#startOpened'
                                  -    );
                                  -    </script>
                                  -  </body>
                                  -</html>   
                                  -</xsl:template>
                                  -
                                  -</xsl:stylesheet>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3224-IE-external-CSS/test.html b/branches/flexBox/sandbox/issues/3224-IE-external-CSS/test.html
                                  deleted file mode 100644
                                  index 28381b6b..00000000
                                  --- a/branches/flexBox/sandbox/issues/3224-IE-external-CSS/test.html
                                  +++ /dev/null
                                  @@ -1,87 +0,0 @@
                                  -<html>
                                  - <head>
                                  -   <script type="text/javascript" src="../../../content/firebug-lite-dev.js"></script>
                                  -   <script type="text/javascript" src="http://www.google.com/jsapi"></script>
                                  -   <script src="http://code.jquery.com/jquery-1.4.2.min.js"
                                  -language="javascript" type="text/javascript"></script>
                                  -   <script type="text/javascript">
                                  -     var data;
                                  -     google.load("visualization", "1", {packages:["linechart"]});
                                  -     google.load('visualization', '1', {packages:['table']});
                                  -     google.setOnLoadCallback(drawChart);
                                  -
                                  -     //google.setOnLoadCallback(drawTable);
                                  -
                                  -     function drawChart() {
                                  -
                                  -       var ccdata = getCData();
                                  -       data = ccdata;
                                  -       var chart = new
                                  -google.visualization.LineChart(document.getElementById('chart_div'));
                                  -
                                  -       var options = new Object();
                                  -               options.width = 500;
                                  -               options.height = 250;
                                  -               options.legend = 'none';
                                  -               options.colors = ['#ff7f00', '#339999', '#cc9966'];
                                  -               options.lineWidth=3;
                                  -               options.pointSize = 5;
                                  -
                                  -       chart.draw(ccdata, options);
                                  -
                                  -       var table = new
                                  -google.visualization.Table(document.getElementById('table_div'));
                                  -       table.draw(ccdata, {showRowNumber: true});
                                  -
                                  - }
                                  -       function getCData(){
                                  -               data = new google.visualization.DataTable();
                                  -
                                  -       data.addColumn('string', 'Log');
                                  -       data.addColumn('number', 'Req');
                                  -       data.addColumn('number', 'Ser');
                                  -       data.addColumn('number', 'Loa');
                                  -
                                  -       data.addRows(5);
                                  -
                                  -
                                  -       data.setValue(0, 0, '1 amn');
                                  -       data.setValue(1, 0, '2 am');
                                  -       data.setValue(2, 0, '3 am');
                                  -       data.setValue(3, 0, '4 am');
                                  -       data.setValue(4, 0, '5 am');
                                  -
                                  -       data.setValue(0, 1, 1000); // for req line
                                  -       data.setValue(1, 1, 1170);
                                  -       data.setValue(2, 1, 860);
                                  -       data.setValue(3, 1, 1030);
                                  -       data.setValue(4, 1, 1030);
                                  -
                                  -       data.setValue(0, 2, 400); // for served line
                                  -       data.setValue(1, 2, 460);
                                  -       data.setValue(2, 2, 580);
                                  -       data.setValue(3, 2, 540);
                                  -       data.setValue(4, 2, 540);
                                  -
                                  -       data.setValue(0, 3, 300); // for Loaded line
                                  -       data.setValue(1, 3, 200);
                                  -       data.setValue(2, 3, 400);
                                  -       data.setValue(3, 3, 59);
                                  -       data.setValue(4, 3, 600);
                                  -
                                  -       return data;
                                  -       }
                                  -</script>
                                  -</head>
                                  -<body>
                                  -       <div id="chartselector" class="chartselector"
                                  -style="position:relative;left:25px">
                                  -               <form id='fform'>
                                  -                       <input type="checkbox" value="1" checked onclick="call_me()"/>Req
                                  -                       <input type="checkbox" value="2" checked onclick="call_me()"/>Ser
                                  -                       <input type="checkbox" value="3" checked onclick="call_me()"/>Loa
                                  -               </form>
                                  -       </div>
                                  -       <div id="chart_div" style="top:50px;position:absolute;"></div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/bookmarklet.html b/branches/flexBox/sandbox/issues/3482-google-chrome-frame/bookmarklet.html
                                  deleted file mode 100644
                                  index c334956d..00000000
                                  --- a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/bookmarklet.html
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
                                  -    </head>
                                  -    <body>
                                  -        <h1>GFC Bookmarklet Test</h1>
                                  -        
                                  -        <p>Follow the instructions</p>
                                  -        <ol>
                                  -            <li>Open this page using IE7 with Google Chrome Frame installed</li>
                                  -            <li>Add the following bookmarklet: <a href="javascript:alert('OK')">test</a></li>
                                  -            <li>Run the bookmarklet</li>
                                  -            <li>You should see an alert box with a message "OK"</li>
                                  -        </ol>
                                  -        <p><i>OBS: Please note that if you click the link it will work, 
                                  -        but if you load it via bookmarklet it won't.</i></p>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html b/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html
                                  deleted file mode 100644
                                  index b8ecf5a9..00000000
                                  --- a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
                                  -    </head>
                                  -    <body>
                                  -        <h1>GFC Firebug Lite Bookmarklet Test</h1>
                                  -        
                                  -        <p>Follow the instructions</p>
                                  -        <ol>
                                  -            <li>Open this page using IE7 with Google Chrome Frame installed</li>
                                  -            <li>Visit: <a href="http://getfirebug.com/firebuglite#Stable">http://getfirebug.com/firebuglite#Stable</a></li>
                                  -            <li>Add Firebug Lite bookmarklet</li>
                                  -            <li>Run the bookmarklet</li>
                                  -            <li>Firebug Lite should load</li>
                                  -        </ol>
                                  -        
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-link.html b/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-link.html
                                  deleted file mode 100644
                                  index ba331f3c..00000000
                                  --- a/branches/flexBox/sandbox/issues/3482-google-chrome-frame/fblite-link.html
                                  +++ /dev/null
                                  @@ -1,14 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
                                  -        <script type="text/javascript" src="http://fbug.googlecode.com/svn/!svn/bc/7839/lite/branches/firebug1.3/content/firebug-lite-dev.js"></script>
                                  -    </head>
                                  -    <body>
                                  -        <h1>GFC Test</h1>
                                  -        <p>Follow the instructions</p>
                                  -        <ol>
                                  -            <li>Open this page using IE7 with Google Chrome Frame installed</li>
                                  -            <li>You should see Firebug Lite opening without problems</li>
                                  -        </ol>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html b/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html
                                  deleted file mode 100644
                                  index a872c0e7..00000000
                                  --- a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html
                                  +++ /dev/null
                                  @@ -1,25 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -            
                                  -            $(function () {
                                  -                var success = false;
                                  -            
                                  -                $.ajax({
                                  -                    url: "http://www.google.com",
                                  -                    success: function() {
                                  -                        success = true;
                                  -                    },
                                  -                    complete: function() {
                                  -                        alert(success); //false
                                  -                    }
                                  -                });
                                  -            });
                                  -            
                                  -            
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external.html b/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external.html
                                  deleted file mode 100644
                                  index de1d6bfe..00000000
                                  --- a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/external.html
                                  +++ /dev/null
                                  @@ -1,28 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
                                  -        <script type="text/javascript">
                                  -            
                                  -            $(function () {
                                  -                var success = false;
                                  -            
                                  -                $.ajax({
                                  -                    url: "http://www.google.com",
                                  -                    success: function() {
                                  -                        success = true;
                                  -                    },
                                  -                    complete: function() {
                                  -                        alert(success); //false
                                  -                    }
                                  -                });
                                  -            });
                                  -            
                                  -            
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/jquery.js b/branches/flexBox/sandbox/issues/3504-jQuery-XHR/jquery.js
                                  deleted file mode 100644
                                  index fff67764..00000000
                                  --- a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/jquery.js
                                  +++ /dev/null
                                  @@ -1,6240 +0,0 @@
                                  -/*!
                                  - * jQuery JavaScript Library v1.4.2
                                  - * http://jquery.com/
                                  - *
                                  - * Copyright 2010, John Resig
                                  - * Dual licensed under the MIT or GPL Version 2 licenses.
                                  - * http://jquery.org/license
                                  - *
                                  - * Includes Sizzle.js
                                  - * http://sizzlejs.com/
                                  - * Copyright 2010, The Dojo Foundation
                                  - * Released under the MIT, BSD, and GPL Licenses.
                                  - *
                                  - * Date: Sat Feb 13 22:33:48 2010 -0500
                                  - */
                                  -(function( window, undefined ) {
                                  -
                                  -// Define a local copy of jQuery
                                  -var jQuery = function( selector, context ) {
                                  -		// The jQuery object is actually just the init constructor 'enhanced'
                                  -		return new jQuery.fn.init( selector, context );
                                  -	},
                                  -
                                  -	// Map over jQuery in case of overwrite
                                  -	_jQuery = window.jQuery,
                                  -
                                  -	// Map over the $ in case of overwrite
                                  -	_$ = window.$,
                                  -
                                  -	// Use the correct document accordingly with window argument (sandbox)
                                  -	document = window.document,
                                  -
                                  -	// A central reference to the root jQuery(document)
                                  -	rootjQuery,
                                  -
                                  -	// A simple way to check for HTML strings or ID strings
                                  -	// (both of which we optimize for)
                                  -	quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
                                  -
                                  -	// Is it a simple selector
                                  -	isSimple = /^.[^:#\[\.,]*$/,
                                  -
                                  -	// Check if a string has a non-whitespace character in it
                                  -	rnotwhite = /\S/,
                                  -
                                  -	// Used for trimming whitespace
                                  -	rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
                                  -
                                  -	// Match a standalone tag
                                  -	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
                                  -
                                  -	// Keep a UserAgent string for use with jQuery.browser
                                  -	userAgent = navigator.userAgent,
                                  -
                                  -	// For matching the engine and version of the browser
                                  -	browserMatch,
                                  -	
                                  -	// Has the ready events already been bound?
                                  -	readyBound = false,
                                  -	
                                  -	// The functions to execute on DOM ready
                                  -	readyList = [],
                                  -
                                  -	// The ready event handler
                                  -	DOMContentLoaded,
                                  -
                                  -	// Save a reference to some core methods
                                  -	toString = Object.prototype.toString,
                                  -	hasOwnProperty = Object.prototype.hasOwnProperty,
                                  -	push = Array.prototype.push,
                                  -	slice = Array.prototype.slice,
                                  -	indexOf = Array.prototype.indexOf;
                                  -
                                  -jQuery.fn = jQuery.prototype = {
                                  -	init: function( selector, context ) {
                                  -		var match, elem, ret, doc;
                                  -
                                  -		// Handle $(""), $(null), or $(undefined)
                                  -		if ( !selector ) {
                                  -			return this;
                                  -		}
                                  -
                                  -		// Handle $(DOMElement)
                                  -		if ( selector.nodeType ) {
                                  -			this.context = this[0] = selector;
                                  -			this.length = 1;
                                  -			return this;
                                  -		}
                                  -		
                                  -		// The body element only exists once, optimize finding it
                                  -		if ( selector === "body" && !context ) {
                                  -			this.context = document;
                                  -			this[0] = document.body;
                                  -			this.selector = "body";
                                  -			this.length = 1;
                                  -			return this;
                                  -		}
                                  -
                                  -		// Handle HTML strings
                                  -		if ( typeof selector === "string" ) {
                                  -			// Are we dealing with HTML string or an ID?
                                  -			match = quickExpr.exec( selector );
                                  -
                                  -			// Verify a match, and that no context was specified for #id
                                  -			if ( match && (match[1] || !context) ) {
                                  -
                                  -				// HANDLE: $(html) -> $(array)
                                  -				if ( match[1] ) {
                                  -					doc = (context ? context.ownerDocument || context : document);
                                  -
                                  -					// If a single string is passed in and it's a single tag
                                  -					// just do a createElement and skip the rest
                                  -					ret = rsingleTag.exec( selector );
                                  -
                                  -					if ( ret ) {
                                  -						if ( jQuery.isPlainObject( context ) ) {
                                  -							selector = [ document.createElement( ret[1] ) ];
                                  -							jQuery.fn.attr.call( selector, context, true );
                                  -
                                  -						} else {
                                  -							selector = [ doc.createElement( ret[1] ) ];
                                  -						}
                                  -
                                  -					} else {
                                  -						ret = buildFragment( [ match[1] ], [ doc ] );
                                  -						selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
                                  -					}
                                  -					
                                  -					return jQuery.merge( this, selector );
                                  -					
                                  -				// HANDLE: $("#id")
                                  -				} else {
                                  -					elem = document.getElementById( match[2] );
                                  -
                                  -					if ( elem ) {
                                  -						// Handle the case where IE and Opera return items
                                  -						// by name instead of ID
                                  -						if ( elem.id !== match[2] ) {
                                  -							return rootjQuery.find( selector );
                                  -						}
                                  -
                                  -						// Otherwise, we inject the element directly into the jQuery object
                                  -						this.length = 1;
                                  -						this[0] = elem;
                                  -					}
                                  -
                                  -					this.context = document;
                                  -					this.selector = selector;
                                  -					return this;
                                  -				}
                                  -
                                  -			// HANDLE: $("TAG")
                                  -			} else if ( !context && /^\w+$/.test( selector ) ) {
                                  -				this.selector = selector;
                                  -				this.context = document;
                                  -				selector = document.getElementsByTagName( selector );
                                  -				return jQuery.merge( this, selector );
                                  -
                                  -			// HANDLE: $(expr, $(...))
                                  -			} else if ( !context || context.jquery ) {
                                  -				return (context || rootjQuery).find( selector );
                                  -
                                  -			// HANDLE: $(expr, context)
                                  -			// (which is just equivalent to: $(context).find(expr)
                                  -			} else {
                                  -				return jQuery( context ).find( selector );
                                  -			}
                                  -
                                  -		// HANDLE: $(function)
                                  -		// Shortcut for document ready
                                  -		} else if ( jQuery.isFunction( selector ) ) {
                                  -			return rootjQuery.ready( selector );
                                  -		}
                                  -
                                  -		if (selector.selector !== undefined) {
                                  -			this.selector = selector.selector;
                                  -			this.context = selector.context;
                                  -		}
                                  -
                                  -		return jQuery.makeArray( selector, this );
                                  -	},
                                  -
                                  -	// Start with an empty selector
                                  -	selector: "",
                                  -
                                  -	// The current version of jQuery being used
                                  -	jquery: "1.4.2",
                                  -
                                  -	// The default length of a jQuery object is 0
                                  -	length: 0,
                                  -
                                  -	// The number of elements contained in the matched element set
                                  -	size: function() {
                                  -		return this.length;
                                  -	},
                                  -
                                  -	toArray: function() {
                                  -		return slice.call( this, 0 );
                                  -	},
                                  -
                                  -	// Get the Nth element in the matched element set OR
                                  -	// Get the whole matched element set as a clean array
                                  -	get: function( num ) {
                                  -		return num == null ?
                                  -
                                  -			// Return a 'clean' array
                                  -			this.toArray() :
                                  -
                                  -			// Return just the object
                                  -			( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
                                  -	},
                                  -
                                  -	// Take an array of elements and push it onto the stack
                                  -	// (returning the new matched element set)
                                  -	pushStack: function( elems, name, selector ) {
                                  -		// Build a new jQuery matched element set
                                  -		var ret = jQuery();
                                  -
                                  -		if ( jQuery.isArray( elems ) ) {
                                  -			push.apply( ret, elems );
                                  -		
                                  -		} else {
                                  -			jQuery.merge( ret, elems );
                                  -		}
                                  -
                                  -		// Add the old object onto the stack (as a reference)
                                  -		ret.prevObject = this;
                                  -
                                  -		ret.context = this.context;
                                  -
                                  -		if ( name === "find" ) {
                                  -			ret.selector = this.selector + (this.selector ? " " : "") + selector;
                                  -		} else if ( name ) {
                                  -			ret.selector = this.selector + "." + name + "(" + selector + ")";
                                  -		}
                                  -
                                  -		// Return the newly-formed element set
                                  -		return ret;
                                  -	},
                                  -
                                  -	// Execute a callback for every element in the matched set.
                                  -	// (You can seed the arguments with an array of args, but this is
                                  -	// only used internally.)
                                  -	each: function( callback, args ) {
                                  -		return jQuery.each( this, callback, args );
                                  -	},
                                  -	
                                  -	ready: function( fn ) {
                                  -		// Attach the listeners
                                  -		jQuery.bindReady();
                                  -
                                  -		// If the DOM is already ready
                                  -		if ( jQuery.isReady ) {
                                  -			// Execute the function immediately
                                  -			fn.call( document, jQuery );
                                  -
                                  -		// Otherwise, remember the function for later
                                  -		} else if ( readyList ) {
                                  -			// Add the function to the wait list
                                  -			readyList.push( fn );
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -	
                                  -	eq: function( i ) {
                                  -		return i === -1 ?
                                  -			this.slice( i ) :
                                  -			this.slice( i, +i + 1 );
                                  -	},
                                  -
                                  -	first: function() {
                                  -		return this.eq( 0 );
                                  -	},
                                  -
                                  -	last: function() {
                                  -		return this.eq( -1 );
                                  -	},
                                  -
                                  -	slice: function() {
                                  -		return this.pushStack( slice.apply( this, arguments ),
                                  -			"slice", slice.call(arguments).join(",") );
                                  -	},
                                  -
                                  -	map: function( callback ) {
                                  -		return this.pushStack( jQuery.map(this, function( elem, i ) {
                                  -			return callback.call( elem, i, elem );
                                  -		}));
                                  -	},
                                  -	
                                  -	end: function() {
                                  -		return this.prevObject || jQuery(null);
                                  -	},
                                  -
                                  -	// For internal use only.
                                  -	// Behaves like an Array's method, not like a jQuery method.
                                  -	push: push,
                                  -	sort: [].sort,
                                  -	splice: [].splice
                                  -};
                                  -
                                  -// Give the init function the jQuery prototype for later instantiation
                                  -jQuery.fn.init.prototype = jQuery.fn;
                                  -
                                  -jQuery.extend = jQuery.fn.extend = function() {
                                  -	// copy reference to target object
                                  -	var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
                                  -
                                  -	// Handle a deep copy situation
                                  -	if ( typeof target === "boolean" ) {
                                  -		deep = target;
                                  -		target = arguments[1] || {};
                                  -		// skip the boolean and the target
                                  -		i = 2;
                                  -	}
                                  -
                                  -	// Handle case when target is a string or something (possible in deep copy)
                                  -	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
                                  -		target = {};
                                  -	}
                                  -
                                  -	// extend jQuery itself if only one argument is passed
                                  -	if ( length === i ) {
                                  -		target = this;
                                  -		--i;
                                  -	}
                                  -
                                  -	for ( ; i < length; i++ ) {
                                  -		// Only deal with non-null/undefined values
                                  -		if ( (options = arguments[ i ]) != null ) {
                                  -			// Extend the base object
                                  -			for ( name in options ) {
                                  -				src = target[ name ];
                                  -				copy = options[ name ];
                                  -
                                  -				// Prevent never-ending loop
                                  -				if ( target === copy ) {
                                  -					continue;
                                  -				}
                                  -
                                  -				// Recurse if we're merging object literal values or arrays
                                  -				if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
                                  -					var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
                                  -						: jQuery.isArray(copy) ? [] : {};
                                  -
                                  -					// Never move original objects, clone them
                                  -					target[ name ] = jQuery.extend( deep, clone, copy );
                                  -
                                  -				// Don't bring in undefined values
                                  -				} else if ( copy !== undefined ) {
                                  -					target[ name ] = copy;
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	// Return the modified object
                                  -	return target;
                                  -};
                                  -
                                  -jQuery.extend({
                                  -	noConflict: function( deep ) {
                                  -		window.$ = _$;
                                  -
                                  -		if ( deep ) {
                                  -			window.jQuery = _jQuery;
                                  -		}
                                  -
                                  -		return jQuery;
                                  -	},
                                  -	
                                  -	// Is the DOM ready to be used? Set to true once it occurs.
                                  -	isReady: false,
                                  -	
                                  -	// Handle when the DOM is ready
                                  -	ready: function() {
                                  -		// Make sure that the DOM is not already loaded
                                  -		if ( !jQuery.isReady ) {
                                  -			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
                                  -			if ( !document.body ) {
                                  -				return setTimeout( jQuery.ready, 13 );
                                  -			}
                                  -
                                  -			// Remember that the DOM is ready
                                  -			jQuery.isReady = true;
                                  -
                                  -			// If there are functions bound, to execute
                                  -			if ( readyList ) {
                                  -				// Execute all of them
                                  -				var fn, i = 0;
                                  -				while ( (fn = readyList[ i++ ]) ) {
                                  -					fn.call( document, jQuery );
                                  -				}
                                  -
                                  -				// Reset the list of functions
                                  -				readyList = null;
                                  -			}
                                  -
                                  -			// Trigger any bound ready events
                                  -			if ( jQuery.fn.triggerHandler ) {
                                  -				jQuery( document ).triggerHandler( "ready" );
                                  -			}
                                  -		}
                                  -	},
                                  -	
                                  -	bindReady: function() {
                                  -		if ( readyBound ) {
                                  -			return;
                                  -		}
                                  -
                                  -		readyBound = true;
                                  -
                                  -		// Catch cases where $(document).ready() is called after the
                                  -		// browser event has already occurred.
                                  -		if ( document.readyState === "complete" ) {
                                  -			return jQuery.ready();
                                  -		}
                                  -
                                  -		// Mozilla, Opera and webkit nightlies currently support this event
                                  -		if ( document.addEventListener ) {
                                  -			// Use the handy event callback
                                  -			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
                                  -			
                                  -			// A fallback to window.onload, that will always work
                                  -			window.addEventListener( "load", jQuery.ready, false );
                                  -
                                  -		// If IE event model is used
                                  -		} else if ( document.attachEvent ) {
                                  -			// ensure firing before onload,
                                  -			// maybe late but safe also for iframes
                                  -			document.attachEvent("onreadystatechange", DOMContentLoaded);
                                  -			
                                  -			// A fallback to window.onload, that will always work
                                  -			window.attachEvent( "onload", jQuery.ready );
                                  -
                                  -			// If IE and not a frame
                                  -			// continually check to see if the document is ready
                                  -			var toplevel = false;
                                  -
                                  -			try {
                                  -				toplevel = window.frameElement == null;
                                  -			} catch(e) {}
                                  -
                                  -			if ( document.documentElement.doScroll && toplevel ) {
                                  -				doScrollCheck();
                                  -			}
                                  -		}
                                  -	},
                                  -
                                  -	// See test/unit/core.js for details concerning isFunction.
                                  -	// Since version 1.3, DOM methods and functions like alert
                                  -	// aren't supported. They return false on IE (#2968).
                                  -	isFunction: function( obj ) {
                                  -		return toString.call(obj) === "[object Function]";
                                  -	},
                                  -
                                  -	isArray: function( obj ) {
                                  -		return toString.call(obj) === "[object Array]";
                                  -	},
                                  -
                                  -	isPlainObject: function( obj ) {
                                  -		// Must be an Object.
                                  -		// Because of IE, we also have to check the presence of the constructor property.
                                  -		// Make sure that DOM nodes and window objects don't pass through, as well
                                  -		if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
                                  -			return false;
                                  -		}
                                  -		
                                  -		// Not own constructor property must be Object
                                  -		if ( obj.constructor
                                  -			&& !hasOwnProperty.call(obj, "constructor")
                                  -			&& !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
                                  -			return false;
                                  -		}
                                  -		
                                  -		// Own properties are enumerated firstly, so to speed up,
                                  -		// if last one is own, then all properties are own.
                                  -	
                                  -		var key;
                                  -		for ( key in obj ) {}
                                  -		
                                  -		return key === undefined || hasOwnProperty.call( obj, key );
                                  -	},
                                  -
                                  -	isEmptyObject: function( obj ) {
                                  -		for ( var name in obj ) {
                                  -			return false;
                                  -		}
                                  -		return true;
                                  -	},
                                  -	
                                  -	error: function( msg ) {
                                  -		throw msg;
                                  -	},
                                  -	
                                  -	parseJSON: function( data ) {
                                  -		if ( typeof data !== "string" || !data ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		// Make sure leading/trailing whitespace is removed (IE can't handle it)
                                  -		data = jQuery.trim( data );
                                  -		
                                  -		// Make sure the incoming data is actual JSON
                                  -		// Logic borrowed from http://json.org/json2.js
                                  -		if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
                                  -			.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
                                  -			.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
                                  -
                                  -			// Try to use the native JSON parser first
                                  -			return window.JSON && window.JSON.parse ?
                                  -				window.JSON.parse( data ) :
                                  -				(new Function("return " + data))();
                                  -
                                  -		} else {
                                  -			jQuery.error( "Invalid JSON: " + data );
                                  -		}
                                  -	},
                                  -
                                  -	noop: function() {},
                                  -
                                  -	// Evalulates a script in a global context
                                  -	globalEval: function( data ) {
                                  -		if ( data && rnotwhite.test(data) ) {
                                  -			// Inspired by code by Andrea Giammarchi
                                  -			// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
                                  -			var head = document.getElementsByTagName("head")[0] || document.documentElement,
                                  -				script = document.createElement("script");
                                  -
                                  -			script.type = "text/javascript";
                                  -
                                  -			if ( jQuery.support.scriptEval ) {
                                  -				script.appendChild( document.createTextNode( data ) );
                                  -			} else {
                                  -				script.text = data;
                                  -			}
                                  -
                                  -			// Use insertBefore instead of appendChild to circumvent an IE6 bug.
                                  -			// This arises when a base node is used (#2709).
                                  -			head.insertBefore( script, head.firstChild );
                                  -			head.removeChild( script );
                                  -		}
                                  -	},
                                  -
                                  -	nodeName: function( elem, name ) {
                                  -		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
                                  -	},
                                  -
                                  -	// args is for internal usage only
                                  -	each: function( object, callback, args ) {
                                  -		var name, i = 0,
                                  -			length = object.length,
                                  -			isObj = length === undefined || jQuery.isFunction(object);
                                  -
                                  -		if ( args ) {
                                  -			if ( isObj ) {
                                  -				for ( name in object ) {
                                  -					if ( callback.apply( object[ name ], args ) === false ) {
                                  -						break;
                                  -					}
                                  -				}
                                  -			} else {
                                  -				for ( ; i < length; ) {
                                  -					if ( callback.apply( object[ i++ ], args ) === false ) {
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -		// A special, fast, case for the most common use of each
                                  -		} else {
                                  -			if ( isObj ) {
                                  -				for ( name in object ) {
                                  -					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
                                  -						break;
                                  -					}
                                  -				}
                                  -			} else {
                                  -				for ( var value = object[0];
                                  -					i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
                                  -			}
                                  -		}
                                  -
                                  -		return object;
                                  -	},
                                  -
                                  -	trim: function( text ) {
                                  -		return (text || "").replace( rtrim, "" );
                                  -	},
                                  -
                                  -	// results is for internal usage only
                                  -	makeArray: function( array, results ) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( array != null ) {
                                  -			// The window, strings (and functions) also have 'length'
                                  -			// The extra typeof function check is to prevent crashes
                                  -			// in Safari 2 (See: #3039)
                                  -			if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
                                  -				push.call( ret, array );
                                  -			} else {
                                  -				jQuery.merge( ret, array );
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	},
                                  -
                                  -	inArray: function( elem, array ) {
                                  -		if ( array.indexOf ) {
                                  -			return array.indexOf( elem );
                                  -		}
                                  -
                                  -		for ( var i = 0, length = array.length; i < length; i++ ) {
                                  -			if ( array[ i ] === elem ) {
                                  -				return i;
                                  -			}
                                  -		}
                                  -
                                  -		return -1;
                                  -	},
                                  -
                                  -	merge: function( first, second ) {
                                  -		var i = first.length, j = 0;
                                  -
                                  -		if ( typeof second.length === "number" ) {
                                  -			for ( var l = second.length; j < l; j++ ) {
                                  -				first[ i++ ] = second[ j ];
                                  -			}
                                  -		
                                  -		} else {
                                  -			while ( second[j] !== undefined ) {
                                  -				first[ i++ ] = second[ j++ ];
                                  -			}
                                  -		}
                                  -
                                  -		first.length = i;
                                  -
                                  -		return first;
                                  -	},
                                  -
                                  -	grep: function( elems, callback, inv ) {
                                  -		var ret = [];
                                  -
                                  -		// Go through the array, only saving the items
                                  -		// that pass the validator function
                                  -		for ( var i = 0, length = elems.length; i < length; i++ ) {
                                  -			if ( !inv !== !callback( elems[ i ], i ) ) {
                                  -				ret.push( elems[ i ] );
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	},
                                  -
                                  -	// arg is for internal usage only
                                  -	map: function( elems, callback, arg ) {
                                  -		var ret = [], value;
                                  -
                                  -		// Go through the array, translating each of the items to their
                                  -		// new value (or values).
                                  -		for ( var i = 0, length = elems.length; i < length; i++ ) {
                                  -			value = callback( elems[ i ], i, arg );
                                  -
                                  -			if ( value != null ) {
                                  -				ret[ ret.length ] = value;
                                  -			}
                                  -		}
                                  -
                                  -		return ret.concat.apply( [], ret );
                                  -	},
                                  -
                                  -	// A global GUID counter for objects
                                  -	guid: 1,
                                  -
                                  -	proxy: function( fn, proxy, thisObject ) {
                                  -		if ( arguments.length === 2 ) {
                                  -			if ( typeof proxy === "string" ) {
                                  -				thisObject = fn;
                                  -				fn = thisObject[ proxy ];
                                  -				proxy = undefined;
                                  -
                                  -			} else if ( proxy && !jQuery.isFunction( proxy ) ) {
                                  -				thisObject = proxy;
                                  -				proxy = undefined;
                                  -			}
                                  -		}
                                  -
                                  -		if ( !proxy && fn ) {
                                  -			proxy = function() {
                                  -				return fn.apply( thisObject || this, arguments );
                                  -			};
                                  -		}
                                  -
                                  -		// Set the guid of unique handler to the same of original handler, so it can be removed
                                  -		if ( fn ) {
                                  -			proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
                                  -		}
                                  -
                                  -		// So proxy can be declared as an argument
                                  -		return proxy;
                                  -	},
                                  -
                                  -	// Use of jQuery.browser is frowned upon.
                                  -	// More details: http://docs.jquery.com/Utilities/jQuery.browser
                                  -	uaMatch: function( ua ) {
                                  -		ua = ua.toLowerCase();
                                  -
                                  -		var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
                                  -			/(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
                                  -			/(msie) ([\w.]+)/.exec( ua ) ||
                                  -			!/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
                                  -		  	[];
                                  -
                                  -		return { browser: match[1] || "", version: match[2] || "0" };
                                  -	},
                                  -
                                  -	browser: {}
                                  -});
                                  -
                                  -browserMatch = jQuery.uaMatch( userAgent );
                                  -if ( browserMatch.browser ) {
                                  -	jQuery.browser[ browserMatch.browser ] = true;
                                  -	jQuery.browser.version = browserMatch.version;
                                  -}
                                  -
                                  -// Deprecated, use jQuery.browser.webkit instead
                                  -if ( jQuery.browser.webkit ) {
                                  -	jQuery.browser.safari = true;
                                  -}
                                  -
                                  -if ( indexOf ) {
                                  -	jQuery.inArray = function( elem, array ) {
                                  -		return indexOf.call( array, elem );
                                  -	};
                                  -}
                                  -
                                  -// All jQuery objects should point back to these
                                  -rootjQuery = jQuery(document);
                                  -
                                  -// Cleanup functions for the document ready method
                                  -if ( document.addEventListener ) {
                                  -	DOMContentLoaded = function() {
                                  -		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
                                  -		jQuery.ready();
                                  -	};
                                  -
                                  -} else if ( document.attachEvent ) {
                                  -	DOMContentLoaded = function() {
                                  -		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
                                  -		if ( document.readyState === "complete" ) {
                                  -			document.detachEvent( "onreadystatechange", DOMContentLoaded );
                                  -			jQuery.ready();
                                  -		}
                                  -	};
                                  -}
                                  -
                                  -// The DOM ready check for Internet Explorer
                                  -function doScrollCheck() {
                                  -	if ( jQuery.isReady ) {
                                  -		return;
                                  -	}
                                  -
                                  -	try {
                                  -		// If IE is used, use the trick by Diego Perini
                                  -		// http://javascript.nwbox.com/IEContentLoaded/
                                  -		document.documentElement.doScroll("left");
                                  -	} catch( error ) {
                                  -		setTimeout( doScrollCheck, 1 );
                                  -		return;
                                  -	}
                                  -
                                  -	// and execute any waiting functions
                                  -	jQuery.ready();
                                  -}
                                  -
                                  -function evalScript( i, elem ) {
                                  -	if ( elem.src ) {
                                  -		jQuery.ajax({
                                  -			url: elem.src,
                                  -			async: false,
                                  -			dataType: "script"
                                  -		});
                                  -	} else {
                                  -		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
                                  -	}
                                  -
                                  -	if ( elem.parentNode ) {
                                  -		elem.parentNode.removeChild( elem );
                                  -	}
                                  -}
                                  -
                                  -// Mutifunctional method to get and set values to a collection
                                  -// The value/s can be optionally by executed if its a function
                                  -function access( elems, key, value, exec, fn, pass ) {
                                  -	var length = elems.length;
                                  -	
                                  -	// Setting many attributes
                                  -	if ( typeof key === "object" ) {
                                  -		for ( var k in key ) {
                                  -			access( elems, k, key[k], exec, fn, value );
                                  -		}
                                  -		return elems;
                                  -	}
                                  -	
                                  -	// Setting one attribute
                                  -	if ( value !== undefined ) {
                                  -		// Optionally, function values get executed if exec is true
                                  -		exec = !pass && exec && jQuery.isFunction(value);
                                  -		
                                  -		for ( var i = 0; i < length; i++ ) {
                                  -			fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
                                  -		}
                                  -		
                                  -		return elems;
                                  -	}
                                  -	
                                  -	// Getting an attribute
                                  -	return length ? fn( elems[0], key ) : undefined;
                                  -}
                                  -
                                  -function now() {
                                  -	return (new Date).getTime();
                                  -}
                                  -(function() {
                                  -
                                  -	jQuery.support = {};
                                  -
                                  -	var root = document.documentElement,
                                  -		script = document.createElement("script"),
                                  -		div = document.createElement("div"),
                                  -		id = "script" + now();
                                  -
                                  -	div.style.display = "none";
                                  -	div.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
                                  -
                                  -	var all = div.getElementsByTagName("*"),
                                  -		a = div.getElementsByTagName("a")[0];
                                  -
                                  -	// Can't get basic test support
                                  -	if ( !all || !all.length || !a ) {
                                  -		return;
                                  -	}
                                  -
                                  -	jQuery.support = {
                                  -		// IE strips leading whitespace when .innerHTML is used
                                  -		leadingWhitespace: div.firstChild.nodeType === 3,
                                  -
                                  -		// Make sure that tbody elements aren't automatically inserted
                                  -		// IE will insert them into empty tables
                                  -		tbody: !div.getElementsByTagName("tbody").length,
                                  -
                                  -		// Make sure that link elements get serialized correctly by innerHTML
                                  -		// This requires a wrapper element in IE
                                  -		htmlSerialize: !!div.getElementsByTagName("link").length,
                                  -
                                  -		// Get the style information from getAttribute
                                  -		// (IE uses .cssText insted)
                                  -		style: /red/.test( a.getAttribute("style") ),
                                  -
                                  -		// Make sure that URLs aren't manipulated
                                  -		// (IE normalizes it by default)
                                  -		hrefNormalized: a.getAttribute("href") === "/a",
                                  -
                                  -		// Make sure that element opacity exists
                                  -		// (IE uses filter instead)
                                  -		// Use a regex to work around a WebKit issue. See #5145
                                  -		opacity: /^0.55$/.test( a.style.opacity ),
                                  -
                                  -		// Verify style float existence
                                  -		// (IE uses styleFloat instead of cssFloat)
                                  -		cssFloat: !!a.style.cssFloat,
                                  -
                                  -		// Make sure that if no value is specified for a checkbox
                                  -		// that it defaults to "on".
                                  -		// (WebKit defaults to "" instead)
                                  -		checkOn: div.getElementsByTagName("input")[0].value === "on",
                                  -
                                  -		// Make sure that a selected-by-default option has a working selected property.
                                  -		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
                                  -		optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
                                  -
                                  -		parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
                                  -
                                  -		// Will be defined later
                                  -		deleteExpando: true,
                                  -		checkClone: false,
                                  -		scriptEval: false,
                                  -		noCloneEvent: true,
                                  -		boxModel: null
                                  -	};
                                  -
                                  -	script.type = "text/javascript";
                                  -	try {
                                  -		script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
                                  -	} catch(e) {}
                                  -
                                  -	root.insertBefore( script, root.firstChild );
                                  -
                                  -	// Make sure that the execution of code works by injecting a script
                                  -	// tag with appendChild/createTextNode
                                  -	// (IE doesn't support this, fails, and uses .text instead)
                                  -	if ( window[ id ] ) {
                                  -		jQuery.support.scriptEval = true;
                                  -		delete window[ id ];
                                  -	}
                                  -
                                  -	// Test to see if it's possible to delete an expando from an element
                                  -	// Fails in Internet Explorer
                                  -	try {
                                  -		delete script.test;
                                  -	
                                  -	} catch(e) {
                                  -		jQuery.support.deleteExpando = false;
                                  -	}
                                  -
                                  -	root.removeChild( script );
                                  -
                                  -	if ( div.attachEvent && div.fireEvent ) {
                                  -		div.attachEvent("onclick", function click() {
                                  -			// Cloning a node shouldn't copy over any
                                  -			// bound event handlers (IE does this)
                                  -			jQuery.support.noCloneEvent = false;
                                  -			div.detachEvent("onclick", click);
                                  -		});
                                  -		div.cloneNode(true).fireEvent("onclick");
                                  -	}
                                  -
                                  -	div = document.createElement("div");
                                  -	div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
                                  -
                                  -	var fragment = document.createDocumentFragment();
                                  -	fragment.appendChild( div.firstChild );
                                  -
                                  -	// WebKit doesn't clone checked state correctly in fragments
                                  -	jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
                                  -
                                  -	// Figure out if the W3C box model works as expected
                                  -	// document.body must exist before we can do this
                                  -	jQuery(function() {
                                  -		var div = document.createElement("div");
                                  -		div.style.width = div.style.paddingLeft = "1px";
                                  -
                                  -		document.body.appendChild( div );
                                  -		jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
                                  -		document.body.removeChild( div ).style.display = 'none';
                                  -
                                  -		div = null;
                                  -	});
                                  -
                                  -	// Technique from Juriy Zaytsev
                                  -	// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
                                  -	var eventSupported = function( eventName ) { 
                                  -		var el = document.createElement("div"); 
                                  -		eventName = "on" + eventName; 
                                  -
                                  -		var isSupported = (eventName in el); 
                                  -		if ( !isSupported ) { 
                                  -			el.setAttribute(eventName, "return;"); 
                                  -			isSupported = typeof el[eventName] === "function"; 
                                  -		} 
                                  -		el = null; 
                                  -
                                  -		return isSupported; 
                                  -	};
                                  -	
                                  -	jQuery.support.submitBubbles = eventSupported("submit");
                                  -	jQuery.support.changeBubbles = eventSupported("change");
                                  -
                                  -	// release memory in IE
                                  -	root = script = div = all = a = null;
                                  -})();
                                  -
                                  -jQuery.props = {
                                  -	"for": "htmlFor",
                                  -	"class": "className",
                                  -	readonly: "readOnly",
                                  -	maxlength: "maxLength",
                                  -	cellspacing: "cellSpacing",
                                  -	rowspan: "rowSpan",
                                  -	colspan: "colSpan",
                                  -	tabindex: "tabIndex",
                                  -	usemap: "useMap",
                                  -	frameborder: "frameBorder"
                                  -};
                                  -var expando = "jQuery" + now(), uuid = 0, windowData = {};
                                  -
                                  -jQuery.extend({
                                  -	cache: {},
                                  -	
                                  -	expando:expando,
                                  -
                                  -	// The following elements throw uncatchable exceptions if you
                                  -	// attempt to add expando properties to them.
                                  -	noData: {
                                  -		"embed": true,
                                  -		"object": true,
                                  -		"applet": true
                                  -	},
                                  -
                                  -	data: function( elem, name, data ) {
                                  -		if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
                                  -			return;
                                  -		}
                                  -
                                  -		elem = elem == window ?
                                  -			windowData :
                                  -			elem;
                                  -
                                  -		var id = elem[ expando ], cache = jQuery.cache, thisCache;
                                  -
                                  -		if ( !id && typeof name === "string" && data === undefined ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		// Compute a unique ID for the element
                                  -		if ( !id ) { 
                                  -			id = ++uuid;
                                  -		}
                                  -
                                  -		// Avoid generating a new cache unless none exists and we
                                  -		// want to manipulate it.
                                  -		if ( typeof name === "object" ) {
                                  -			elem[ expando ] = id;
                                  -			thisCache = cache[ id ] = jQuery.extend(true, {}, name);
                                  -
                                  -		} else if ( !cache[ id ] ) {
                                  -			elem[ expando ] = id;
                                  -			cache[ id ] = {};
                                  -		}
                                  -
                                  -		thisCache = cache[ id ];
                                  -
                                  -		// Prevent overriding the named cache with undefined values
                                  -		if ( data !== undefined ) {
                                  -			thisCache[ name ] = data;
                                  -		}
                                  -
                                  -		return typeof name === "string" ? thisCache[ name ] : thisCache;
                                  -	},
                                  -
                                  -	removeData: function( elem, name ) {
                                  -		if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
                                  -			return;
                                  -		}
                                  -
                                  -		elem = elem == window ?
                                  -			windowData :
                                  -			elem;
                                  -
                                  -		var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
                                  -
                                  -		// If we want to remove a specific section of the element's data
                                  -		if ( name ) {
                                  -			if ( thisCache ) {
                                  -				// Remove the section of cache data
                                  -				delete thisCache[ name ];
                                  -
                                  -				// If we've removed all the data, remove the element's cache
                                  -				if ( jQuery.isEmptyObject(thisCache) ) {
                                  -					jQuery.removeData( elem );
                                  -				}
                                  -			}
                                  -
                                  -		// Otherwise, we want to remove all of the element's data
                                  -		} else {
                                  -			if ( jQuery.support.deleteExpando ) {
                                  -				delete elem[ jQuery.expando ];
                                  -
                                  -			} else if ( elem.removeAttribute ) {
                                  -				elem.removeAttribute( jQuery.expando );
                                  -			}
                                  -
                                  -			// Completely remove the data cache
                                  -			delete cache[ id ];
                                  -		}
                                  -	}
                                  -});
                                  -
                                  -jQuery.fn.extend({
                                  -	data: function( key, value ) {
                                  -		if ( typeof key === "undefined" && this.length ) {
                                  -			return jQuery.data( this[0] );
                                  -
                                  -		} else if ( typeof key === "object" ) {
                                  -			return this.each(function() {
                                  -				jQuery.data( this, key );
                                  -			});
                                  -		}
                                  -
                                  -		var parts = key.split(".");
                                  -		parts[1] = parts[1] ? "." + parts[1] : "";
                                  -
                                  -		if ( value === undefined ) {
                                  -			var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
                                  -
                                  -			if ( data === undefined && this.length ) {
                                  -				data = jQuery.data( this[0], key );
                                  -			}
                                  -			return data === undefined && parts[1] ?
                                  -				this.data( parts[0] ) :
                                  -				data;
                                  -		} else {
                                  -			return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
                                  -				jQuery.data( this, key, value );
                                  -			});
                                  -		}
                                  -	},
                                  -
                                  -	removeData: function( key ) {
                                  -		return this.each(function() {
                                  -			jQuery.removeData( this, key );
                                  -		});
                                  -	}
                                  -});
                                  -jQuery.extend({
                                  -	queue: function( elem, type, data ) {
                                  -		if ( !elem ) {
                                  -			return;
                                  -		}
                                  -
                                  -		type = (type || "fx") + "queue";
                                  -		var q = jQuery.data( elem, type );
                                  -
                                  -		// Speed up dequeue by getting out quickly if this is just a lookup
                                  -		if ( !data ) {
                                  -			return q || [];
                                  -		}
                                  -
                                  -		if ( !q || jQuery.isArray(data) ) {
                                  -			q = jQuery.data( elem, type, jQuery.makeArray(data) );
                                  -
                                  -		} else {
                                  -			q.push( data );
                                  -		}
                                  -
                                  -		return q;
                                  -	},
                                  -
                                  -	dequeue: function( elem, type ) {
                                  -		type = type || "fx";
                                  -
                                  -		var queue = jQuery.queue( elem, type ), fn = queue.shift();
                                  -
                                  -		// If the fx queue is dequeued, always remove the progress sentinel
                                  -		if ( fn === "inprogress" ) {
                                  -			fn = queue.shift();
                                  -		}
                                  -
                                  -		if ( fn ) {
                                  -			// Add a progress sentinel to prevent the fx queue from being
                                  -			// automatically dequeued
                                  -			if ( type === "fx" ) {
                                  -				queue.unshift("inprogress");
                                  -			}
                                  -
                                  -			fn.call(elem, function() {
                                  -				jQuery.dequeue(elem, type);
                                  -			});
                                  -		}
                                  -	}
                                  -});
                                  -
                                  -jQuery.fn.extend({
                                  -	queue: function( type, data ) {
                                  -		if ( typeof type !== "string" ) {
                                  -			data = type;
                                  -			type = "fx";
                                  -		}
                                  -
                                  -		if ( data === undefined ) {
                                  -			return jQuery.queue( this[0], type );
                                  -		}
                                  -		return this.each(function( i, elem ) {
                                  -			var queue = jQuery.queue( this, type, data );
                                  -
                                  -			if ( type === "fx" && queue[0] !== "inprogress" ) {
                                  -				jQuery.dequeue( this, type );
                                  -			}
                                  -		});
                                  -	},
                                  -	dequeue: function( type ) {
                                  -		return this.each(function() {
                                  -			jQuery.dequeue( this, type );
                                  -		});
                                  -	},
                                  -
                                  -	// Based off of the plugin by Clint Helfers, with permission.
                                  -	// http://blindsignals.com/index.php/2009/07/jquery-delay/
                                  -	delay: function( time, type ) {
                                  -		time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
                                  -		type = type || "fx";
                                  -
                                  -		return this.queue( type, function() {
                                  -			var elem = this;
                                  -			setTimeout(function() {
                                  -				jQuery.dequeue( elem, type );
                                  -			}, time );
                                  -		});
                                  -	},
                                  -
                                  -	clearQueue: function( type ) {
                                  -		return this.queue( type || "fx", [] );
                                  -	}
                                  -});
                                  -var rclass = /[\n\t]/g,
                                  -	rspace = /\s+/,
                                  -	rreturn = /\r/g,
                                  -	rspecialurl = /href|src|style/,
                                  -	rtype = /(button|input)/i,
                                  -	rfocusable = /(button|input|object|select|textarea)/i,
                                  -	rclickable = /^(a|area)$/i,
                                  -	rradiocheck = /radio|checkbox/;
                                  -
                                  -jQuery.fn.extend({
                                  -	attr: function( name, value ) {
                                  -		return access( this, name, value, true, jQuery.attr );
                                  -	},
                                  -
                                  -	removeAttr: function( name, fn ) {
                                  -		return this.each(function(){
                                  -			jQuery.attr( this, name, "" );
                                  -			if ( this.nodeType === 1 ) {
                                  -				this.removeAttribute( name );
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	addClass: function( value ) {
                                  -		if ( jQuery.isFunction(value) ) {
                                  -			return this.each(function(i) {
                                  -				var self = jQuery(this);
                                  -				self.addClass( value.call(this, i, self.attr("class")) );
                                  -			});
                                  -		}
                                  -
                                  -		if ( value && typeof value === "string" ) {
                                  -			var classNames = (value || "").split( rspace );
                                  -
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				var elem = this[i];
                                  -
                                  -				if ( elem.nodeType === 1 ) {
                                  -					if ( !elem.className ) {
                                  -						elem.className = value;
                                  -
                                  -					} else {
                                  -						var className = " " + elem.className + " ", setClass = elem.className;
                                  -						for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
                                  -							if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
                                  -								setClass += " " + classNames[c];
                                  -							}
                                  -						}
                                  -						elem.className = jQuery.trim( setClass );
                                  -					}
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	removeClass: function( value ) {
                                  -		if ( jQuery.isFunction(value) ) {
                                  -			return this.each(function(i) {
                                  -				var self = jQuery(this);
                                  -				self.removeClass( value.call(this, i, self.attr("class")) );
                                  -			});
                                  -		}
                                  -
                                  -		if ( (value && typeof value === "string") || value === undefined ) {
                                  -			var classNames = (value || "").split(rspace);
                                  -
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				var elem = this[i];
                                  -
                                  -				if ( elem.nodeType === 1 && elem.className ) {
                                  -					if ( value ) {
                                  -						var className = (" " + elem.className + " ").replace(rclass, " ");
                                  -						for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
                                  -							className = className.replace(" " + classNames[c] + " ", " ");
                                  -						}
                                  -						elem.className = jQuery.trim( className );
                                  -
                                  -					} else {
                                  -						elem.className = "";
                                  -					}
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	toggleClass: function( value, stateVal ) {
                                  -		var type = typeof value, isBool = typeof stateVal === "boolean";
                                  -
                                  -		if ( jQuery.isFunction( value ) ) {
                                  -			return this.each(function(i) {
                                  -				var self = jQuery(this);
                                  -				self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
                                  -			});
                                  -		}
                                  -
                                  -		return this.each(function() {
                                  -			if ( type === "string" ) {
                                  -				// toggle individual class names
                                  -				var className, i = 0, self = jQuery(this),
                                  -					state = stateVal,
                                  -					classNames = value.split( rspace );
                                  -
                                  -				while ( (className = classNames[ i++ ]) ) {
                                  -					// check each className given, space seperated list
                                  -					state = isBool ? state : !self.hasClass( className );
                                  -					self[ state ? "addClass" : "removeClass" ]( className );
                                  -				}
                                  -
                                  -			} else if ( type === "undefined" || type === "boolean" ) {
                                  -				if ( this.className ) {
                                  -					// store className if set
                                  -					jQuery.data( this, "__className__", this.className );
                                  -				}
                                  -
                                  -				// toggle whole className
                                  -				this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	hasClass: function( selector ) {
                                  -		var className = " " + selector + " ";
                                  -		for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -			if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
                                  -				return true;
                                  -			}
                                  -		}
                                  -
                                  -		return false;
                                  -	},
                                  -
                                  -	val: function( value ) {
                                  -		if ( value === undefined ) {
                                  -			var elem = this[0];
                                  -
                                  -			if ( elem ) {
                                  -				if ( jQuery.nodeName( elem, "option" ) ) {
                                  -					return (elem.attributes.value || {}).specified ? elem.value : elem.text;
                                  -				}
                                  -
                                  -				// We need to handle select boxes special
                                  -				if ( jQuery.nodeName( elem, "select" ) ) {
                                  -					var index = elem.selectedIndex,
                                  -						values = [],
                                  -						options = elem.options,
                                  -						one = elem.type === "select-one";
                                  -
                                  -					// Nothing was selected
                                  -					if ( index < 0 ) {
                                  -						return null;
                                  -					}
                                  -
                                  -					// Loop through all the selected options
                                  -					for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
                                  -						var option = options[ i ];
                                  -
                                  -						if ( option.selected ) {
                                  -							// Get the specifc value for the option
                                  -							value = jQuery(option).val();
                                  -
                                  -							// We don't need an array for one selects
                                  -							if ( one ) {
                                  -								return value;
                                  -							}
                                  -
                                  -							// Multi-Selects return an array
                                  -							values.push( value );
                                  -						}
                                  -					}
                                  -
                                  -					return values;
                                  -				}
                                  -
                                  -				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
                                  -				if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
                                  -					return elem.getAttribute("value") === null ? "on" : elem.value;
                                  -				}
                                  -				
                                  -
                                  -				// Everything else, we just grab the value
                                  -				return (elem.value || "").replace(rreturn, "");
                                  -
                                  -			}
                                  -
                                  -			return undefined;
                                  -		}
                                  -
                                  -		var isFunction = jQuery.isFunction(value);
                                  -
                                  -		return this.each(function(i) {
                                  -			var self = jQuery(this), val = value;
                                  -
                                  -			if ( this.nodeType !== 1 ) {
                                  -				return;
                                  -			}
                                  -
                                  -			if ( isFunction ) {
                                  -				val = value.call(this, i, self.val());
                                  -			}
                                  -
                                  -			// Typecast each time if the value is a Function and the appended
                                  -			// value is therefore different each time.
                                  -			if ( typeof val === "number" ) {
                                  -				val += "";
                                  -			}
                                  -
                                  -			if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
                                  -				this.checked = jQuery.inArray( self.val(), val ) >= 0;
                                  -
                                  -			} else if ( jQuery.nodeName( this, "select" ) ) {
                                  -				var values = jQuery.makeArray(val);
                                  -
                                  -				jQuery( "option", this ).each(function() {
                                  -					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
                                  -				});
                                  -
                                  -				if ( !values.length ) {
                                  -					this.selectedIndex = -1;
                                  -				}
                                  -
                                  -			} else {
                                  -				this.value = val;
                                  -			}
                                  -		});
                                  -	}
                                  -});
                                  -
                                  -jQuery.extend({
                                  -	attrFn: {
                                  -		val: true,
                                  -		css: true,
                                  -		html: true,
                                  -		text: true,
                                  -		data: true,
                                  -		width: true,
                                  -		height: true,
                                  -		offset: true
                                  -	},
                                  -		
                                  -	attr: function( elem, name, value, pass ) {
                                  -		// don't set attributes on text and comment nodes
                                  -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
                                  -			return undefined;
                                  -		}
                                  -
                                  -		if ( pass && name in jQuery.attrFn ) {
                                  -			return jQuery(elem)[name](value);
                                  -		}
                                  -
                                  -		var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
                                  -			// Whether we are setting (or getting)
                                  -			set = value !== undefined;
                                  -
                                  -		// Try to normalize/fix the name
                                  -		name = notxml && jQuery.props[ name ] || name;
                                  -
                                  -		// Only do all the following if this is a node (faster for style)
                                  -		if ( elem.nodeType === 1 ) {
                                  -			// These attributes require special treatment
                                  -			var special = rspecialurl.test( name );
                                  -
                                  -			// Safari mis-reports the default selected property of an option
                                  -			// Accessing the parent's selectedIndex property fixes it
                                  -			if ( name === "selected" && !jQuery.support.optSelected ) {
                                  -				var parent = elem.parentNode;
                                  -				if ( parent ) {
                                  -					parent.selectedIndex;
                                  -	
                                  -					// Make sure that it also works with optgroups, see #5701
                                  -					if ( parent.parentNode ) {
                                  -						parent.parentNode.selectedIndex;
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			// If applicable, access the attribute via the DOM 0 way
                                  -			if ( name in elem && notxml && !special ) {
                                  -				if ( set ) {
                                  -					// We can't allow the type property to be changed (since it causes problems in IE)
                                  -					if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
                                  -						jQuery.error( "type property can't be changed" );
                                  -					}
                                  -
                                  -					elem[ name ] = value;
                                  -				}
                                  -
                                  -				// browsers index elements by id/name on forms, give priority to attributes.
                                  -				if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
                                  -					return elem.getAttributeNode( name ).nodeValue;
                                  -				}
                                  -
                                  -				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
                                  -				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
                                  -				if ( name === "tabIndex" ) {
                                  -					var attributeNode = elem.getAttributeNode( "tabIndex" );
                                  -
                                  -					return attributeNode && attributeNode.specified ?
                                  -						attributeNode.value :
                                  -						rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
                                  -							0 :
                                  -							undefined;
                                  -				}
                                  -
                                  -				return elem[ name ];
                                  -			}
                                  -
                                  -			if ( !jQuery.support.style && notxml && name === "style" ) {
                                  -				if ( set ) {
                                  -					elem.style.cssText = "" + value;
                                  -				}
                                  -
                                  -				return elem.style.cssText;
                                  -			}
                                  -
                                  -			if ( set ) {
                                  -				// convert the value to a string (all browsers do this but IE) see #1070
                                  -				elem.setAttribute( name, "" + value );
                                  -			}
                                  -
                                  -			var attr = !jQuery.support.hrefNormalized && notxml && special ?
                                  -					// Some attributes require a special call on IE
                                  -					elem.getAttribute( name, 2 ) :
                                  -					elem.getAttribute( name );
                                  -
                                  -			// Non-existent attributes return null, we normalize to undefined
                                  -			return attr === null ? undefined : attr;
                                  -		}
                                  -
                                  -		// elem is actually elem.style ... set the style
                                  -		// Using attr for specific style information is now deprecated. Use style instead.
                                  -		return jQuery.style( elem, name, value );
                                  -	}
                                  -});
                                  -var rnamespaces = /\.(.*)$/,
                                  -	fcleanup = function( nm ) {
                                  -		return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
                                  -			return "\\" + ch;
                                  -		});
                                  -	};
                                  -
                                  -/*
                                  - * A number of helper functions used for managing events.
                                  - * Many of the ideas behind this code originated from
                                  - * Dean Edwards' addEvent library.
                                  - */
                                  -jQuery.event = {
                                  -
                                  -	// Bind an event to an element
                                  -	// Original by Dean Edwards
                                  -	add: function( elem, types, handler, data ) {
                                  -		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
                                  -			return;
                                  -		}
                                  -
                                  -		// For whatever reason, IE has trouble passing the window object
                                  -		// around, causing it to be cloned in the process
                                  -		if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
                                  -			elem = window;
                                  -		}
                                  -
                                  -		var handleObjIn, handleObj;
                                  -
                                  -		if ( handler.handler ) {
                                  -			handleObjIn = handler;
                                  -			handler = handleObjIn.handler;
                                  -		}
                                  -
                                  -		// Make sure that the function being executed has a unique ID
                                  -		if ( !handler.guid ) {
                                  -			handler.guid = jQuery.guid++;
                                  -		}
                                  -
                                  -		// Init the element's event structure
                                  -		var elemData = jQuery.data( elem );
                                  -
                                  -		// If no elemData is found then we must be trying to bind to one of the
                                  -		// banned noData elements
                                  -		if ( !elemData ) {
                                  -			return;
                                  -		}
                                  -
                                  -		var events = elemData.events = elemData.events || {},
                                  -			eventHandle = elemData.handle, eventHandle;
                                  -
                                  -		if ( !eventHandle ) {
                                  -			elemData.handle = eventHandle = function() {
                                  -				// Handle the second event of a trigger and when
                                  -				// an event is called after a page has unloaded
                                  -				return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
                                  -					jQuery.event.handle.apply( eventHandle.elem, arguments ) :
                                  -					undefined;
                                  -			};
                                  -		}
                                  -
                                  -		// Add elem as a property of the handle function
                                  -		// This is to prevent a memory leak with non-native events in IE.
                                  -		eventHandle.elem = elem;
                                  -
                                  -		// Handle multiple events separated by a space
                                  -		// jQuery(...).bind("mouseover mouseout", fn);
                                  -		types = types.split(" ");
                                  -
                                  -		var type, i = 0, namespaces;
                                  -
                                  -		while ( (type = types[ i++ ]) ) {
                                  -			handleObj = handleObjIn ?
                                  -				jQuery.extend({}, handleObjIn) :
                                  -				{ handler: handler, data: data };
                                  -
                                  -			// Namespaced event handlers
                                  -			if ( type.indexOf(".") > -1 ) {
                                  -				namespaces = type.split(".");
                                  -				type = namespaces.shift();
                                  -				handleObj.namespace = namespaces.slice(0).sort().join(".");
                                  -
                                  -			} else {
                                  -				namespaces = [];
                                  -				handleObj.namespace = "";
                                  -			}
                                  -
                                  -			handleObj.type = type;
                                  -			handleObj.guid = handler.guid;
                                  -
                                  -			// Get the current list of functions bound to this event
                                  -			var handlers = events[ type ],
                                  -				special = jQuery.event.special[ type ] || {};
                                  -
                                  -			// Init the event handler queue
                                  -			if ( !handlers ) {
                                  -				handlers = events[ type ] = [];
                                  -
                                  -				// Check for a special event handler
                                  -				// Only use addEventListener/attachEvent if the special
                                  -				// events handler returns false
                                  -				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
                                  -					// Bind the global event handler to the element
                                  -					if ( elem.addEventListener ) {
                                  -						elem.addEventListener( type, eventHandle, false );
                                  -
                                  -					} else if ( elem.attachEvent ) {
                                  -						elem.attachEvent( "on" + type, eventHandle );
                                  -					}
                                  -				}
                                  -			}
                                  -			
                                  -			if ( special.add ) { 
                                  -				special.add.call( elem, handleObj ); 
                                  -
                                  -				if ( !handleObj.handler.guid ) {
                                  -					handleObj.handler.guid = handler.guid;
                                  -				}
                                  -			}
                                  -
                                  -			// Add the function to the element's handler list
                                  -			handlers.push( handleObj );
                                  -
                                  -			// Keep track of which events have been used, for global triggering
                                  -			jQuery.event.global[ type ] = true;
                                  -		}
                                  -
                                  -		// Nullify elem to prevent memory leaks in IE
                                  -		elem = null;
                                  -	},
                                  -
                                  -	global: {},
                                  -
                                  -	// Detach an event or set of events from an element
                                  -	remove: function( elem, types, handler, pos ) {
                                  -		// don't do events on text and comment nodes
                                  -		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
                                  -			return;
                                  -		}
                                  -
                                  -		var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
                                  -			elemData = jQuery.data( elem ),
                                  -			events = elemData && elemData.events;
                                  -
                                  -		if ( !elemData || !events ) {
                                  -			return;
                                  -		}
                                  -
                                  -		// types is actually an event object here
                                  -		if ( types && types.type ) {
                                  -			handler = types.handler;
                                  -			types = types.type;
                                  -		}
                                  -
                                  -		// Unbind all events for the element
                                  -		if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
                                  -			types = types || "";
                                  -
                                  -			for ( type in events ) {
                                  -				jQuery.event.remove( elem, type + types );
                                  -			}
                                  -
                                  -			return;
                                  -		}
                                  -
                                  -		// Handle multiple events separated by a space
                                  -		// jQuery(...).unbind("mouseover mouseout", fn);
                                  -		types = types.split(" ");
                                  -
                                  -		while ( (type = types[ i++ ]) ) {
                                  -			origType = type;
                                  -			handleObj = null;
                                  -			all = type.indexOf(".") < 0;
                                  -			namespaces = [];
                                  -
                                  -			if ( !all ) {
                                  -				// Namespaced event handlers
                                  -				namespaces = type.split(".");
                                  -				type = namespaces.shift();
                                  -
                                  -				namespace = new RegExp("(^|\\.)" + 
                                  -					jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
                                  -			}
                                  -
                                  -			eventType = events[ type ];
                                  -
                                  -			if ( !eventType ) {
                                  -				continue;
                                  -			}
                                  -
                                  -			if ( !handler ) {
                                  -				for ( var j = 0; j < eventType.length; j++ ) {
                                  -					handleObj = eventType[ j ];
                                  -
                                  -					if ( all || namespace.test( handleObj.namespace ) ) {
                                  -						jQuery.event.remove( elem, origType, handleObj.handler, j );
                                  -						eventType.splice( j--, 1 );
                                  -					}
                                  -				}
                                  -
                                  -				continue;
                                  -			}
                                  -
                                  -			special = jQuery.event.special[ type ] || {};
                                  -
                                  -			for ( var j = pos || 0; j < eventType.length; j++ ) {
                                  -				handleObj = eventType[ j ];
                                  -
                                  -				if ( handler.guid === handleObj.guid ) {
                                  -					// remove the given handler for the given type
                                  -					if ( all || namespace.test( handleObj.namespace ) ) {
                                  -						if ( pos == null ) {
                                  -							eventType.splice( j--, 1 );
                                  -						}
                                  -
                                  -						if ( special.remove ) {
                                  -							special.remove.call( elem, handleObj );
                                  -						}
                                  -					}
                                  -
                                  -					if ( pos != null ) {
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			// remove generic event handler if no more handlers exist
                                  -			if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
                                  -				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
                                  -					removeEvent( elem, type, elemData.handle );
                                  -				}
                                  -
                                  -				ret = null;
                                  -				delete events[ type ];
                                  -			}
                                  -		}
                                  -
                                  -		// Remove the expando if it's no longer used
                                  -		if ( jQuery.isEmptyObject( events ) ) {
                                  -			var handle = elemData.handle;
                                  -			if ( handle ) {
                                  -				handle.elem = null;
                                  -			}
                                  -
                                  -			delete elemData.events;
                                  -			delete elemData.handle;
                                  -
                                  -			if ( jQuery.isEmptyObject( elemData ) ) {
                                  -				jQuery.removeData( elem );
                                  -			}
                                  -		}
                                  -	},
                                  -
                                  -	// bubbling is internal
                                  -	trigger: function( event, data, elem /*, bubbling */ ) {
                                  -		// Event object or event type
                                  -		var type = event.type || event,
                                  -			bubbling = arguments[3];
                                  -
                                  -		if ( !bubbling ) {
                                  -			event = typeof event === "object" ?
                                  -				// jQuery.Event object
                                  -				event[expando] ? event :
                                  -				// Object literal
                                  -				jQuery.extend( jQuery.Event(type), event ) :
                                  -				// Just the event type (string)
                                  -				jQuery.Event(type);
                                  -
                                  -			if ( type.indexOf("!") >= 0 ) {
                                  -				event.type = type = type.slice(0, -1);
                                  -				event.exclusive = true;
                                  -			}
                                  -
                                  -			// Handle a global trigger
                                  -			if ( !elem ) {
                                  -				// Don't bubble custom events when global (to avoid too much overhead)
                                  -				event.stopPropagation();
                                  -
                                  -				// Only trigger if we've ever bound an event for it
                                  -				if ( jQuery.event.global[ type ] ) {
                                  -					jQuery.each( jQuery.cache, function() {
                                  -						if ( this.events && this.events[type] ) {
                                  -							jQuery.event.trigger( event, data, this.handle.elem );
                                  -						}
                                  -					});
                                  -				}
                                  -			}
                                  -
                                  -			// Handle triggering a single element
                                  -
                                  -			// don't do events on text and comment nodes
                                  -			if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
                                  -				return undefined;
                                  -			}
                                  -
                                  -			// Clean up in case it is reused
                                  -			event.result = undefined;
                                  -			event.target = elem;
                                  -
                                  -			// Clone the incoming data, if any
                                  -			data = jQuery.makeArray( data );
                                  -			data.unshift( event );
                                  -		}
                                  -
                                  -		event.currentTarget = elem;
                                  -
                                  -		// Trigger the event, it is assumed that "handle" is a function
                                  -		var handle = jQuery.data( elem, "handle" );
                                  -		if ( handle ) {
                                  -			handle.apply( elem, data );
                                  -		}
                                  -
                                  -		var parent = elem.parentNode || elem.ownerDocument;
                                  -
                                  -		// Trigger an inline bound script
                                  -		try {
                                  -			if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
                                  -				if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
                                  -					event.result = false;
                                  -				}
                                  -			}
                                  -
                                  -		// prevent IE from throwing an error for some elements with some event types, see #3533
                                  -		} catch (e) {}
                                  -
                                  -		if ( !event.isPropagationStopped() && parent ) {
                                  -			jQuery.event.trigger( event, data, parent, true );
                                  -
                                  -		} else if ( !event.isDefaultPrevented() ) {
                                  -			var target = event.target, old,
                                  -				isClick = jQuery.nodeName(target, "a") && type === "click",
                                  -				special = jQuery.event.special[ type ] || {};
                                  -
                                  -			if ( (!special._default || special._default.call( elem, event ) === false) && 
                                  -				!isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
                                  -
                                  -				try {
                                  -					if ( target[ type ] ) {
                                  -						// Make sure that we don't accidentally re-trigger the onFOO events
                                  -						old = target[ "on" + type ];
                                  -
                                  -						if ( old ) {
                                  -							target[ "on" + type ] = null;
                                  -						}
                                  -
                                  -						jQuery.event.triggered = true;
                                  -						target[ type ]();
                                  -					}
                                  -
                                  -				// prevent IE from throwing an error for some elements with some event types, see #3533
                                  -				} catch (e) {}
                                  -
                                  -				if ( old ) {
                                  -					target[ "on" + type ] = old;
                                  -				}
                                  -
                                  -				jQuery.event.triggered = false;
                                  -			}
                                  -		}
                                  -	},
                                  -
                                  -	handle: function( event ) {
                                  -		var all, handlers, namespaces, namespace, events;
                                  -
                                  -		event = arguments[0] = jQuery.event.fix( event || window.event );
                                  -		event.currentTarget = this;
                                  -
                                  -		// Namespaced event handlers
                                  -		all = event.type.indexOf(".") < 0 && !event.exclusive;
                                  -
                                  -		if ( !all ) {
                                  -			namespaces = event.type.split(".");
                                  -			event.type = namespaces.shift();
                                  -			namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
                                  -		}
                                  -
                                  -		var events = jQuery.data(this, "events"), handlers = events[ event.type ];
                                  -
                                  -		if ( events && handlers ) {
                                  -			// Clone the handlers to prevent manipulation
                                  -			handlers = handlers.slice(0);
                                  -
                                  -			for ( var j = 0, l = handlers.length; j < l; j++ ) {
                                  -				var handleObj = handlers[ j ];
                                  -
                                  -				// Filter the functions by class
                                  -				if ( all || namespace.test( handleObj.namespace ) ) {
                                  -					// Pass in a reference to the handler function itself
                                  -					// So that we can later remove it
                                  -					event.handler = handleObj.handler;
                                  -					event.data = handleObj.data;
                                  -					event.handleObj = handleObj;
                                  -	
                                  -					var ret = handleObj.handler.apply( this, arguments );
                                  -
                                  -					if ( ret !== undefined ) {
                                  -						event.result = ret;
                                  -						if ( ret === false ) {
                                  -							event.preventDefault();
                                  -							event.stopPropagation();
                                  -						}
                                  -					}
                                  -
                                  -					if ( event.isImmediatePropagationStopped() ) {
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return event.result;
                                  -	},
                                  -
                                  -	props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
                                  -
                                  -	fix: function( event ) {
                                  -		if ( event[ expando ] ) {
                                  -			return event;
                                  -		}
                                  -
                                  -		// store a copy of the original event object
                                  -		// and "clone" to set read-only properties
                                  -		var originalEvent = event;
                                  -		event = jQuery.Event( originalEvent );
                                  -
                                  -		for ( var i = this.props.length, prop; i; ) {
                                  -			prop = this.props[ --i ];
                                  -			event[ prop ] = originalEvent[ prop ];
                                  -		}
                                  -
                                  -		// Fix target property, if necessary
                                  -		if ( !event.target ) {
                                  -			event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
                                  -		}
                                  -
                                  -		// check if target is a textnode (safari)
                                  -		if ( event.target.nodeType === 3 ) {
                                  -			event.target = event.target.parentNode;
                                  -		}
                                  -
                                  -		// Add relatedTarget, if necessary
                                  -		if ( !event.relatedTarget && event.fromElement ) {
                                  -			event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
                                  -		}
                                  -
                                  -		// Calculate pageX/Y if missing and clientX/Y available
                                  -		if ( event.pageX == null && event.clientX != null ) {
                                  -			var doc = document.documentElement, body = document.body;
                                  -			event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
                                  -			event.pageY = event.clientY + (doc && doc.scrollTop  || body && body.scrollTop  || 0) - (doc && doc.clientTop  || body && body.clientTop  || 0);
                                  -		}
                                  -
                                  -		// Add which for key events
                                  -		if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
                                  -			event.which = event.charCode || event.keyCode;
                                  -		}
                                  -
                                  -		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
                                  -		if ( !event.metaKey && event.ctrlKey ) {
                                  -			event.metaKey = event.ctrlKey;
                                  -		}
                                  -
                                  -		// Add which for click: 1 === left; 2 === middle; 3 === right
                                  -		// Note: button is not normalized, so don't use it
                                  -		if ( !event.which && event.button !== undefined ) {
                                  -			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
                                  -		}
                                  -
                                  -		return event;
                                  -	},
                                  -
                                  -	// Deprecated, use jQuery.guid instead
                                  -	guid: 1E8,
                                  -
                                  -	// Deprecated, use jQuery.proxy instead
                                  -	proxy: jQuery.proxy,
                                  -
                                  -	special: {
                                  -		ready: {
                                  -			// Make sure the ready event is setup
                                  -			setup: jQuery.bindReady,
                                  -			teardown: jQuery.noop
                                  -		},
                                  -
                                  -		live: {
                                  -			add: function( handleObj ) {
                                  -				jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) ); 
                                  -			},
                                  -
                                  -			remove: function( handleObj ) {
                                  -				var remove = true,
                                  -					type = handleObj.origType.replace(rnamespaces, "");
                                  -				
                                  -				jQuery.each( jQuery.data(this, "events").live || [], function() {
                                  -					if ( type === this.origType.replace(rnamespaces, "") ) {
                                  -						remove = false;
                                  -						return false;
                                  -					}
                                  -				});
                                  -
                                  -				if ( remove ) {
                                  -					jQuery.event.remove( this, handleObj.origType, liveHandler );
                                  -				}
                                  -			}
                                  -
                                  -		},
                                  -
                                  -		beforeunload: {
                                  -			setup: function( data, namespaces, eventHandle ) {
                                  -				// We only want to do this special case on windows
                                  -				if ( this.setInterval ) {
                                  -					this.onbeforeunload = eventHandle;
                                  -				}
                                  -
                                  -				return false;
                                  -			},
                                  -			teardown: function( namespaces, eventHandle ) {
                                  -				if ( this.onbeforeunload === eventHandle ) {
                                  -					this.onbeforeunload = null;
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -};
                                  -
                                  -var removeEvent = document.removeEventListener ?
                                  -	function( elem, type, handle ) {
                                  -		elem.removeEventListener( type, handle, false );
                                  -	} : 
                                  -	function( elem, type, handle ) {
                                  -		elem.detachEvent( "on" + type, handle );
                                  -	};
                                  -
                                  -jQuery.Event = function( src ) {
                                  -	// Allow instantiation without the 'new' keyword
                                  -	if ( !this.preventDefault ) {
                                  -		return new jQuery.Event( src );
                                  -	}
                                  -
                                  -	// Event object
                                  -	if ( src && src.type ) {
                                  -		this.originalEvent = src;
                                  -		this.type = src.type;
                                  -	// Event type
                                  -	} else {
                                  -		this.type = src;
                                  -	}
                                  -
                                  -	// timeStamp is buggy for some events on Firefox(#3843)
                                  -	// So we won't rely on the native value
                                  -	this.timeStamp = now();
                                  -
                                  -	// Mark it as fixed
                                  -	this[ expando ] = true;
                                  -};
                                  -
                                  -function returnFalse() {
                                  -	return false;
                                  -}
                                  -function returnTrue() {
                                  -	return true;
                                  -}
                                  -
                                  -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
                                  -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
                                  -jQuery.Event.prototype = {
                                  -	preventDefault: function() {
                                  -		this.isDefaultPrevented = returnTrue;
                                  -
                                  -		var e = this.originalEvent;
                                  -		if ( !e ) {
                                  -			return;
                                  -		}
                                  -		
                                  -		// if preventDefault exists run it on the original event
                                  -		if ( e.preventDefault ) {
                                  -			e.preventDefault();
                                  -		}
                                  -		// otherwise set the returnValue property of the original event to false (IE)
                                  -		e.returnValue = false;
                                  -	},
                                  -	stopPropagation: function() {
                                  -		this.isPropagationStopped = returnTrue;
                                  -
                                  -		var e = this.originalEvent;
                                  -		if ( !e ) {
                                  -			return;
                                  -		}
                                  -		// if stopPropagation exists run it on the original event
                                  -		if ( e.stopPropagation ) {
                                  -			e.stopPropagation();
                                  -		}
                                  -		// otherwise set the cancelBubble property of the original event to true (IE)
                                  -		e.cancelBubble = true;
                                  -	},
                                  -	stopImmediatePropagation: function() {
                                  -		this.isImmediatePropagationStopped = returnTrue;
                                  -		this.stopPropagation();
                                  -	},
                                  -	isDefaultPrevented: returnFalse,
                                  -	isPropagationStopped: returnFalse,
                                  -	isImmediatePropagationStopped: returnFalse
                                  -};
                                  -
                                  -// Checks if an event happened on an element within another element
                                  -// Used in jQuery.event.special.mouseenter and mouseleave handlers
                                  -var withinElement = function( event ) {
                                  -	// Check if mouse(over|out) are still within the same parent element
                                  -	var parent = event.relatedTarget;
                                  -
                                  -	// Firefox sometimes assigns relatedTarget a XUL element
                                  -	// which we cannot access the parentNode property of
                                  -	try {
                                  -		// Traverse up the tree
                                  -		while ( parent && parent !== this ) {
                                  -			parent = parent.parentNode;
                                  -		}
                                  -
                                  -		if ( parent !== this ) {
                                  -			// set the correct event type
                                  -			event.type = event.data;
                                  -
                                  -			// handle event if we actually just moused on to a non sub-element
                                  -			jQuery.event.handle.apply( this, arguments );
                                  -		}
                                  -
                                  -	// assuming we've left the element since we most likely mousedover a xul element
                                  -	} catch(e) { }
                                  -},
                                  -
                                  -// In case of event delegation, we only need to rename the event.type,
                                  -// liveHandler will take care of the rest.
                                  -delegate = function( event ) {
                                  -	event.type = event.data;
                                  -	jQuery.event.handle.apply( this, arguments );
                                  -};
                                  -
                                  -// Create mouseenter and mouseleave events
                                  -jQuery.each({
                                  -	mouseenter: "mouseover",
                                  -	mouseleave: "mouseout"
                                  -}, function( orig, fix ) {
                                  -	jQuery.event.special[ orig ] = {
                                  -		setup: function( data ) {
                                  -			jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
                                  -		},
                                  -		teardown: function( data ) {
                                  -			jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
                                  -		}
                                  -	};
                                  -});
                                  -
                                  -// submit delegation
                                  -if ( !jQuery.support.submitBubbles ) {
                                  -
                                  -	jQuery.event.special.submit = {
                                  -		setup: function( data, namespaces ) {
                                  -			if ( this.nodeName.toLowerCase() !== "form" ) {
                                  -				jQuery.event.add(this, "click.specialSubmit", function( e ) {
                                  -					var elem = e.target, type = elem.type;
                                  -
                                  -					if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
                                  -						return trigger( "submit", this, arguments );
                                  -					}
                                  -				});
                                  -	 
                                  -				jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
                                  -					var elem = e.target, type = elem.type;
                                  -
                                  -					if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
                                  -						return trigger( "submit", this, arguments );
                                  -					}
                                  -				});
                                  -
                                  -			} else {
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		teardown: function( namespaces ) {
                                  -			jQuery.event.remove( this, ".specialSubmit" );
                                  -		}
                                  -	};
                                  -
                                  -}
                                  -
                                  -// change delegation, happens here so we have bind.
                                  -if ( !jQuery.support.changeBubbles ) {
                                  -
                                  -	var formElems = /textarea|input|select/i,
                                  -
                                  -	changeFilters,
                                  -
                                  -	getVal = function( elem ) {
                                  -		var type = elem.type, val = elem.value;
                                  -
                                  -		if ( type === "radio" || type === "checkbox" ) {
                                  -			val = elem.checked;
                                  -
                                  -		} else if ( type === "select-multiple" ) {
                                  -			val = elem.selectedIndex > -1 ?
                                  -				jQuery.map( elem.options, function( elem ) {
                                  -					return elem.selected;
                                  -				}).join("-") :
                                  -				"";
                                  -
                                  -		} else if ( elem.nodeName.toLowerCase() === "select" ) {
                                  -			val = elem.selectedIndex;
                                  -		}
                                  -
                                  -		return val;
                                  -	},
                                  -
                                  -	testChange = function testChange( e ) {
                                  -		var elem = e.target, data, val;
                                  -
                                  -		if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
                                  -			return;
                                  -		}
                                  -
                                  -		data = jQuery.data( elem, "_change_data" );
                                  -		val = getVal(elem);
                                  -
                                  -		// the current data will be also retrieved by beforeactivate
                                  -		if ( e.type !== "focusout" || elem.type !== "radio" ) {
                                  -			jQuery.data( elem, "_change_data", val );
                                  -		}
                                  -		
                                  -		if ( data === undefined || val === data ) {
                                  -			return;
                                  -		}
                                  -
                                  -		if ( data != null || val ) {
                                  -			e.type = "change";
                                  -			return jQuery.event.trigger( e, arguments[1], elem );
                                  -		}
                                  -	};
                                  -
                                  -	jQuery.event.special.change = {
                                  -		filters: {
                                  -			focusout: testChange, 
                                  -
                                  -			click: function( e ) {
                                  -				var elem = e.target, type = elem.type;
                                  -
                                  -				if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
                                  -					return testChange.call( this, e );
                                  -				}
                                  -			},
                                  -
                                  -			// Change has to be called before submit
                                  -			// Keydown will be called before keypress, which is used in submit-event delegation
                                  -			keydown: function( e ) {
                                  -				var elem = e.target, type = elem.type;
                                  -
                                  -				if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
                                  -					(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
                                  -					type === "select-multiple" ) {
                                  -					return testChange.call( this, e );
                                  -				}
                                  -			},
                                  -
                                  -			// Beforeactivate happens also before the previous element is blurred
                                  -			// with this event you can't trigger a change event, but you can store
                                  -			// information/focus[in] is not needed anymore
                                  -			beforeactivate: function( e ) {
                                  -				var elem = e.target;
                                  -				jQuery.data( elem, "_change_data", getVal(elem) );
                                  -			}
                                  -		},
                                  -
                                  -		setup: function( data, namespaces ) {
                                  -			if ( this.type === "file" ) {
                                  -				return false;
                                  -			}
                                  -
                                  -			for ( var type in changeFilters ) {
                                  -				jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
                                  -			}
                                  -
                                  -			return formElems.test( this.nodeName );
                                  -		},
                                  -
                                  -		teardown: function( namespaces ) {
                                  -			jQuery.event.remove( this, ".specialChange" );
                                  -
                                  -			return formElems.test( this.nodeName );
                                  -		}
                                  -	};
                                  -
                                  -	changeFilters = jQuery.event.special.change.filters;
                                  -}
                                  -
                                  -function trigger( type, elem, args ) {
                                  -	args[0].type = type;
                                  -	return jQuery.event.handle.apply( elem, args );
                                  -}
                                  -
                                  -// Create "bubbling" focus and blur events
                                  -if ( document.addEventListener ) {
                                  -	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
                                  -		jQuery.event.special[ fix ] = {
                                  -			setup: function() {
                                  -				this.addEventListener( orig, handler, true );
                                  -			}, 
                                  -			teardown: function() { 
                                  -				this.removeEventListener( orig, handler, true );
                                  -			}
                                  -		};
                                  -
                                  -		function handler( e ) { 
                                  -			e = jQuery.event.fix( e );
                                  -			e.type = fix;
                                  -			return jQuery.event.handle.call( this, e );
                                  -		}
                                  -	});
                                  -}
                                  -
                                  -jQuery.each(["bind", "one"], function( i, name ) {
                                  -	jQuery.fn[ name ] = function( type, data, fn ) {
                                  -		// Handle object literals
                                  -		if ( typeof type === "object" ) {
                                  -			for ( var key in type ) {
                                  -				this[ name ](key, data, type[key], fn);
                                  -			}
                                  -			return this;
                                  -		}
                                  -		
                                  -		if ( jQuery.isFunction( data ) ) {
                                  -			fn = data;
                                  -			data = undefined;
                                  -		}
                                  -
                                  -		var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
                                  -			jQuery( this ).unbind( event, handler );
                                  -			return fn.apply( this, arguments );
                                  -		}) : fn;
                                  -
                                  -		if ( type === "unload" && name !== "one" ) {
                                  -			this.one( type, data, fn );
                                  -
                                  -		} else {
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				jQuery.event.add( this[i], type, handler, data );
                                  -			}
                                  -		}
                                  -
                                  -		return this;
                                  -	};
                                  -});
                                  -
                                  -jQuery.fn.extend({
                                  -	unbind: function( type, fn ) {
                                  -		// Handle object literals
                                  -		if ( typeof type === "object" && !type.preventDefault ) {
                                  -			for ( var key in type ) {
                                  -				this.unbind(key, type[key]);
                                  -			}
                                  -
                                  -		} else {
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				jQuery.event.remove( this[i], type, fn );
                                  -			}
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -	
                                  -	delegate: function( selector, types, data, fn ) {
                                  -		return this.live( types, data, fn, selector );
                                  -	},
                                  -	
                                  -	undelegate: function( selector, types, fn ) {
                                  -		if ( arguments.length === 0 ) {
                                  -				return this.unbind( "live" );
                                  -		
                                  -		} else {
                                  -			return this.die( types, null, fn, selector );
                                  -		}
                                  -	},
                                  -	
                                  -	trigger: function( type, data ) {
                                  -		return this.each(function() {
                                  -			jQuery.event.trigger( type, data, this );
                                  -		});
                                  -	},
                                  -
                                  -	triggerHandler: function( type, data ) {
                                  -		if ( this[0] ) {
                                  -			var event = jQuery.Event( type );
                                  -			event.preventDefault();
                                  -			event.stopPropagation();
                                  -			jQuery.event.trigger( event, data, this[0] );
                                  -			return event.result;
                                  -		}
                                  -	},
                                  -
                                  -	toggle: function( fn ) {
                                  -		// Save reference to arguments for access in closure
                                  -		var args = arguments, i = 1;
                                  -
                                  -		// link all the functions, so any of them can unbind this click handler
                                  -		while ( i < args.length ) {
                                  -			jQuery.proxy( fn, args[ i++ ] );
                                  -		}
                                  -
                                  -		return this.click( jQuery.proxy( fn, function( event ) {
                                  -			// Figure out which function to execute
                                  -			var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
                                  -			jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
                                  -
                                  -			// Make sure that clicks stop
                                  -			event.preventDefault();
                                  -
                                  -			// and execute the function
                                  -			return args[ lastToggle ].apply( this, arguments ) || false;
                                  -		}));
                                  -	},
                                  -
                                  -	hover: function( fnOver, fnOut ) {
                                  -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
                                  -	}
                                  -});
                                  -
                                  -var liveMap = {
                                  -	focus: "focusin",
                                  -	blur: "focusout",
                                  -	mouseenter: "mouseover",
                                  -	mouseleave: "mouseout"
                                  -};
                                  -
                                  -jQuery.each(["live", "die"], function( i, name ) {
                                  -	jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
                                  -		var type, i = 0, match, namespaces, preType,
                                  -			selector = origSelector || this.selector,
                                  -			context = origSelector ? this : jQuery( this.context );
                                  -
                                  -		if ( jQuery.isFunction( data ) ) {
                                  -			fn = data;
                                  -			data = undefined;
                                  -		}
                                  -
                                  -		types = (types || "").split(" ");
                                  -
                                  -		while ( (type = types[ i++ ]) != null ) {
                                  -			match = rnamespaces.exec( type );
                                  -			namespaces = "";
                                  -
                                  -			if ( match )  {
                                  -				namespaces = match[0];
                                  -				type = type.replace( rnamespaces, "" );
                                  -			}
                                  -
                                  -			if ( type === "hover" ) {
                                  -				types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
                                  -				continue;
                                  -			}
                                  -
                                  -			preType = type;
                                  -
                                  -			if ( type === "focus" || type === "blur" ) {
                                  -				types.push( liveMap[ type ] + namespaces );
                                  -				type = type + namespaces;
                                  -
                                  -			} else {
                                  -				type = (liveMap[ type ] || type) + namespaces;
                                  -			}
                                  -
                                  -			if ( name === "live" ) {
                                  -				// bind live handler
                                  -				context.each(function(){
                                  -					jQuery.event.add( this, liveConvert( type, selector ),
                                  -						{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
                                  -				});
                                  -
                                  -			} else {
                                  -				// unbind live handler
                                  -				context.unbind( liveConvert( type, selector ), fn );
                                  -			}
                                  -		}
                                  -		
                                  -		return this;
                                  -	}
                                  -});
                                  -
                                  -function liveHandler( event ) {
                                  -	var stop, elems = [], selectors = [], args = arguments,
                                  -		related, match, handleObj, elem, j, i, l, data,
                                  -		events = jQuery.data( this, "events" );
                                  -
                                  -	// Make sure we avoid non-left-click bubbling in Firefox (#3861)
                                  -	if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
                                  -		return;
                                  -	}
                                  -
                                  -	event.liveFired = this;
                                  -
                                  -	var live = events.live.slice(0);
                                  -
                                  -	for ( j = 0; j < live.length; j++ ) {
                                  -		handleObj = live[j];
                                  -
                                  -		if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
                                  -			selectors.push( handleObj.selector );
                                  -
                                  -		} else {
                                  -			live.splice( j--, 1 );
                                  -		}
                                  -	}
                                  -
                                  -	match = jQuery( event.target ).closest( selectors, event.currentTarget );
                                  -
                                  -	for ( i = 0, l = match.length; i < l; i++ ) {
                                  -		for ( j = 0; j < live.length; j++ ) {
                                  -			handleObj = live[j];
                                  -
                                  -			if ( match[i].selector === handleObj.selector ) {
                                  -				elem = match[i].elem;
                                  -				related = null;
                                  -
                                  -				// Those two events require additional checking
                                  -				if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
                                  -					related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
                                  -				}
                                  -
                                  -				if ( !related || related !== elem ) {
                                  -					elems.push({ elem: elem, handleObj: handleObj });
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	for ( i = 0, l = elems.length; i < l; i++ ) {
                                  -		match = elems[i];
                                  -		event.currentTarget = match.elem;
                                  -		event.data = match.handleObj.data;
                                  -		event.handleObj = match.handleObj;
                                  -
                                  -		if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
                                  -			stop = false;
                                  -			break;
                                  -		}
                                  -	}
                                  -
                                  -	return stop;
                                  -}
                                  -
                                  -function liveConvert( type, selector ) {
                                  -	return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
                                  -}
                                  -
                                  -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
                                  -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
                                  -	"change select submit keydown keypress keyup error").split(" "), function( i, name ) {
                                  -
                                  -	// Handle event binding
                                  -	jQuery.fn[ name ] = function( fn ) {
                                  -		return fn ? this.bind( name, fn ) : this.trigger( name );
                                  -	};
                                  -
                                  -	if ( jQuery.attrFn ) {
                                  -		jQuery.attrFn[ name ] = true;
                                  -	}
                                  -});
                                  -
                                  -// Prevent memory leaks in IE
                                  -// Window isn't included so as not to unbind existing unload events
                                  -// More info:
                                  -//  - http://isaacschlueter.com/2006/10/msie-memory-leaks/
                                  -if ( window.attachEvent && !window.addEventListener ) {
                                  -	window.attachEvent("onunload", function() {
                                  -		for ( var id in jQuery.cache ) {
                                  -			if ( jQuery.cache[ id ].handle ) {
                                  -				// Try/Catch is to handle iframes being unloaded, see #4280
                                  -				try {
                                  -					jQuery.event.remove( jQuery.cache[ id ].handle.elem );
                                  -				} catch(e) {}
                                  -			}
                                  -		}
                                  -	});
                                  -}
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -(function(){
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -	done = 0,
                                  -	toString = Object.prototype.toString,
                                  -	hasDuplicate = false,
                                  -	baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -	baseHasDuplicate = false;
                                  -	return 0;
                                  -});
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -	results = results || [];
                                  -	var origContext = context = context || document;
                                  -
                                  -	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -		return [];
                                  -	}
                                  -	
                                  -	if ( !selector || typeof selector !== "string" ) {
                                  -		return results;
                                  -	}
                                  -
                                  -	var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
                                  -		soFar = selector;
                                  -	
                                  -	// Reset the position of the chunker regexp (start from head)
                                  -	while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -		soFar = m[3];
                                  -		
                                  -		parts.push( m[1] );
                                  -		
                                  -		if ( m[2] ) {
                                  -			extra = m[3];
                                  -			break;
                                  -		}
                                  -	}
                                  -
                                  -	if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -			set = posProcess( parts[0] + parts[1], context );
                                  -		} else {
                                  -			set = Expr.relative[ parts[0] ] ?
                                  -				[ context ] :
                                  -				Sizzle( parts.shift(), context );
                                  -
                                  -			while ( parts.length ) {
                                  -				selector = parts.shift();
                                  -
                                  -				if ( Expr.relative[ selector ] ) {
                                  -					selector += parts.shift();
                                  -				}
                                  -				
                                  -				set = posProcess( selector, set );
                                  -			}
                                  -		}
                                  -	} else {
                                  -		// Take a shortcut and set the context if the root selector is an ID
                                  -		// (but not if it'll be faster if the inner selector is an ID)
                                  -		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -			var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -			context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -		}
                                  -
                                  -		if ( context ) {
                                  -			var ret = seed ?
                                  -				{ expr: parts.pop(), set: makeArray(seed) } :
                                  -				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -			set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -			if ( parts.length > 0 ) {
                                  -				checkSet = makeArray(set);
                                  -			} else {
                                  -				prune = false;
                                  -			}
                                  -
                                  -			while ( parts.length ) {
                                  -				var cur = parts.pop(), pop = cur;
                                  -
                                  -				if ( !Expr.relative[ cur ] ) {
                                  -					cur = "";
                                  -				} else {
                                  -					pop = parts.pop();
                                  -				}
                                  -
                                  -				if ( pop == null ) {
                                  -					pop = context;
                                  -				}
                                  -
                                  -				Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -			}
                                  -		} else {
                                  -			checkSet = parts = [];
                                  -		}
                                  -	}
                                  -
                                  -	if ( !checkSet ) {
                                  -		checkSet = set;
                                  -	}
                                  -
                                  -	if ( !checkSet ) {
                                  -		Sizzle.error( cur || selector );
                                  -	}
                                  -
                                  -	if ( toString.call(checkSet) === "[object Array]" ) {
                                  -		if ( !prune ) {
                                  -			results.push.apply( results, checkSet );
                                  -		} else if ( context && context.nodeType === 1 ) {
                                  -			for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -					results.push( set[i] );
                                  -				}
                                  -			}
                                  -		} else {
                                  -			for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -					results.push( set[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -	} else {
                                  -		makeArray( checkSet, results );
                                  -	}
                                  -
                                  -	if ( extra ) {
                                  -		Sizzle( extra, origContext, results, seed );
                                  -		Sizzle.uniqueSort( results );
                                  -	}
                                  -
                                  -	return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -	if ( sortOrder ) {
                                  -		hasDuplicate = baseHasDuplicate;
                                  -		results.sort(sortOrder);
                                  -
                                  -		if ( hasDuplicate ) {
                                  -			for ( var i = 1; i < results.length; i++ ) {
                                  -				if ( results[i] === results[i-1] ) {
                                  -					results.splice(i--, 1);
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -	return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -	var set, match;
                                  -
                                  -	if ( !expr ) {
                                  -		return [];
                                  -	}
                                  -
                                  -	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -		var type = Expr.order[i], match;
                                  -		
                                  -		if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -			var left = match[1];
                                  -			match.splice(1,1);
                                  -
                                  -			if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -				match[1] = (match[1] || "").replace(/\\/g, "");
                                  -				set = Expr.find[ type ]( match, context, isXML );
                                  -				if ( set != null ) {
                                  -					expr = expr.replace( Expr.match[ type ], "" );
                                  -					break;
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	if ( !set ) {
                                  -		set = context.getElementsByTagName("*");
                                  -	}
                                  -
                                  -	return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -	var old = expr, result = [], curLoop = set, match, anyFound,
                                  -		isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -	while ( expr && set.length ) {
                                  -		for ( var type in Expr.filter ) {
                                  -			if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
                                  -				var filter = Expr.filter[ type ], found, item, left = match[1];
                                  -				anyFound = false;
                                  -
                                  -				match.splice(1,1);
                                  -
                                  -				if ( left.substr( left.length - 1 ) === "\\" ) {
                                  -					continue;
                                  -				}
                                  -
                                  -				if ( curLoop === result ) {
                                  -					result = [];
                                  -				}
                                  -
                                  -				if ( Expr.preFilter[ type ] ) {
                                  -					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -					if ( !match ) {
                                  -						anyFound = found = true;
                                  -					} else if ( match === true ) {
                                  -						continue;
                                  -					}
                                  -				}
                                  -
                                  -				if ( match ) {
                                  -					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -						if ( item ) {
                                  -							found = filter( item, match, i, curLoop );
                                  -							var pass = not ^ !!found;
                                  -
                                  -							if ( inplace && found != null ) {
                                  -								if ( pass ) {
                                  -									anyFound = true;
                                  -								} else {
                                  -									curLoop[i] = false;
                                  -								}
                                  -							} else if ( pass ) {
                                  -								result.push( item );
                                  -								anyFound = true;
                                  -							}
                                  -						}
                                  -					}
                                  -				}
                                  -
                                  -				if ( found !== undefined ) {
                                  -					if ( !inplace ) {
                                  -						curLoop = result;
                                  -					}
                                  -
                                  -					expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -					if ( !anyFound ) {
                                  -						return [];
                                  -					}
                                  -
                                  -					break;
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		// Improper expression
                                  -		if ( expr === old ) {
                                  -			if ( anyFound == null ) {
                                  -				Sizzle.error( expr );
                                  -			} else {
                                  -				break;
                                  -			}
                                  -		}
                                  -
                                  -		old = expr;
                                  -	}
                                  -
                                  -	return curLoop;
                                  -};
                                  -
                                  -Sizzle.error = function( msg ) {
                                  -	throw "Syntax error, unrecognized expression: " + msg;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -	order: [ "ID", "NAME", "TAG" ],
                                  -	match: {
                                  -		ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -		CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -		TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -		PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
                                  -	},
                                  -	leftMatch: {},
                                  -	attrMap: {
                                  -		"class": "className",
                                  -		"for": "htmlFor"
                                  -	},
                                  -	attrHandle: {
                                  -		href: function(elem){
                                  -			return elem.getAttribute("href");
                                  -		}
                                  -	},
                                  -	relative: {
                                  -		"+": function(checkSet, part){
                                  -			var isPartStr = typeof part === "string",
                                  -				isTag = isPartStr && !/\W/.test(part),
                                  -				isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -			if ( isTag ) {
                                  -				part = part.toLowerCase();
                                  -			}
                                  -
                                  -			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -				if ( (elem = checkSet[i]) ) {
                                  -					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -					checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
                                  -						elem || false :
                                  -						elem === part;
                                  -				}
                                  -			}
                                  -
                                  -			if ( isPartStrNotTag ) {
                                  -				Sizzle.filter( part, checkSet, true );
                                  -			}
                                  -		},
                                  -		">": function(checkSet, part){
                                  -			var isPartStr = typeof part === "string";
                                  -
                                  -			if ( isPartStr && !/\W/.test(part) ) {
                                  -				part = part.toLowerCase();
                                  -
                                  -				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -					var elem = checkSet[i];
                                  -					if ( elem ) {
                                  -						var parent = elem.parentNode;
                                  -						checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
                                  -					}
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -					var elem = checkSet[i];
                                  -					if ( elem ) {
                                  -						checkSet[i] = isPartStr ?
                                  -							elem.parentNode :
                                  -							elem.parentNode === part;
                                  -					}
                                  -				}
                                  -
                                  -				if ( isPartStr ) {
                                  -					Sizzle.filter( part, checkSet, true );
                                  -				}
                                  -			}
                                  -		},
                                  -		"": function(checkSet, part, isXML){
                                  -			var doneName = done++, checkFn = dirCheck;
                                  -
                                  -			if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -				var nodeCheck = part = part.toLowerCase();
                                  -				checkFn = dirNodeCheck;
                                  -			}
                                  -
                                  -			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -		},
                                  -		"~": function(checkSet, part, isXML){
                                  -			var doneName = done++, checkFn = dirCheck;
                                  -
                                  -			if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -				var nodeCheck = part = part.toLowerCase();
                                  -				checkFn = dirNodeCheck;
                                  -			}
                                  -
                                  -			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -		}
                                  -	},
                                  -	find: {
                                  -		ID: function(match, context, isXML){
                                  -			if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -				var m = context.getElementById(match[1]);
                                  -				return m ? [m] : [];
                                  -			}
                                  -		},
                                  -		NAME: function(match, context){
                                  -			if ( typeof context.getElementsByName !== "undefined" ) {
                                  -				var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -				for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -					if ( results[i].getAttribute("name") === match[1] ) {
                                  -						ret.push( results[i] );
                                  -					}
                                  -				}
                                  -
                                  -				return ret.length === 0 ? null : ret;
                                  -			}
                                  -		},
                                  -		TAG: function(match, context){
                                  -			return context.getElementsByTagName(match[1]);
                                  -		}
                                  -	},
                                  -	preFilter: {
                                  -		CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -			match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -			if ( isXML ) {
                                  -				return match;
                                  -			}
                                  -
                                  -			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -				if ( elem ) {
                                  -					if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
                                  -						if ( !inplace ) {
                                  -							result.push( elem );
                                  -						}
                                  -					} else if ( inplace ) {
                                  -						curLoop[i] = false;
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			return false;
                                  -		},
                                  -		ID: function(match){
                                  -			return match[1].replace(/\\/g, "");
                                  -		},
                                  -		TAG: function(match, curLoop){
                                  -			return match[1].toLowerCase();
                                  -		},
                                  -		CHILD: function(match){
                                  -			if ( match[1] === "nth" ) {
                                  -				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -					match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
                                  -					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -				// calculate the numbers (first)n+(last) including if they are negative
                                  -				match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -				match[3] = test[3] - 0;
                                  -			}
                                  -
                                  -			// TODO: Move to normal caching system
                                  -			match[0] = done++;
                                  -
                                  -			return match;
                                  -		},
                                  -		ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -			var name = match[1].replace(/\\/g, "");
                                  -			
                                  -			if ( !isXML && Expr.attrMap[name] ) {
                                  -				match[1] = Expr.attrMap[name];
                                  -			}
                                  -
                                  -			if ( match[2] === "~=" ) {
                                  -				match[4] = " " + match[4] + " ";
                                  -			}
                                  -
                                  -			return match;
                                  -		},
                                  -		PSEUDO: function(match, curLoop, inplace, result, not){
                                  -			if ( match[1] === "not" ) {
                                  -				// If we're dealing with a complex expression, or a simple one
                                  -				if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -					match[3] = Sizzle(match[3], null, null, curLoop);
                                  -				} else {
                                  -					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -					if ( !inplace ) {
                                  -						result.push.apply( result, ret );
                                  -					}
                                  -					return false;
                                  -				}
                                  -			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -				return true;
                                  -			}
                                  -			
                                  -			return match;
                                  -		},
                                  -		POS: function(match){
                                  -			match.unshift( true );
                                  -			return match;
                                  -		}
                                  -	},
                                  -	filters: {
                                  -		enabled: function(elem){
                                  -			return elem.disabled === false && elem.type !== "hidden";
                                  -		},
                                  -		disabled: function(elem){
                                  -			return elem.disabled === true;
                                  -		},
                                  -		checked: function(elem){
                                  -			return elem.checked === true;
                                  -		},
                                  -		selected: function(elem){
                                  -			// Accessing this property makes selected-by-default
                                  -			// options in Safari work properly
                                  -			elem.parentNode.selectedIndex;
                                  -			return elem.selected === true;
                                  -		},
                                  -		parent: function(elem){
                                  -			return !!elem.firstChild;
                                  -		},
                                  -		empty: function(elem){
                                  -			return !elem.firstChild;
                                  -		},
                                  -		has: function(elem, i, match){
                                  -			return !!Sizzle( match[3], elem ).length;
                                  -		},
                                  -		header: function(elem){
                                  -			return /h\d/i.test( elem.nodeName );
                                  -		},
                                  -		text: function(elem){
                                  -			return "text" === elem.type;
                                  -		},
                                  -		radio: function(elem){
                                  -			return "radio" === elem.type;
                                  -		},
                                  -		checkbox: function(elem){
                                  -			return "checkbox" === elem.type;
                                  -		},
                                  -		file: function(elem){
                                  -			return "file" === elem.type;
                                  -		},
                                  -		password: function(elem){
                                  -			return "password" === elem.type;
                                  -		},
                                  -		submit: function(elem){
                                  -			return "submit" === elem.type;
                                  -		},
                                  -		image: function(elem){
                                  -			return "image" === elem.type;
                                  -		},
                                  -		reset: function(elem){
                                  -			return "reset" === elem.type;
                                  -		},
                                  -		button: function(elem){
                                  -			return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
                                  -		},
                                  -		input: function(elem){
                                  -			return /input|select|textarea|button/i.test(elem.nodeName);
                                  -		}
                                  -	},
                                  -	setFilters: {
                                  -		first: function(elem, i){
                                  -			return i === 0;
                                  -		},
                                  -		last: function(elem, i, match, array){
                                  -			return i === array.length - 1;
                                  -		},
                                  -		even: function(elem, i){
                                  -			return i % 2 === 0;
                                  -		},
                                  -		odd: function(elem, i){
                                  -			return i % 2 === 1;
                                  -		},
                                  -		lt: function(elem, i, match){
                                  -			return i < match[3] - 0;
                                  -		},
                                  -		gt: function(elem, i, match){
                                  -			return i > match[3] - 0;
                                  -		},
                                  -		nth: function(elem, i, match){
                                  -			return match[3] - 0 === i;
                                  -		},
                                  -		eq: function(elem, i, match){
                                  -			return match[3] - 0 === i;
                                  -		}
                                  -	},
                                  -	filter: {
                                  -		PSEUDO: function(elem, match, i, array){
                                  -			var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -			if ( filter ) {
                                  -				return filter( elem, i, match, array );
                                  -			} else if ( name === "contains" ) {
                                  -				return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
                                  -			} else if ( name === "not" ) {
                                  -				var not = match[3];
                                  -
                                  -				for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -					if ( not[i] === elem ) {
                                  -						return false;
                                  -					}
                                  -				}
                                  -
                                  -				return true;
                                  -			} else {
                                  -				Sizzle.error( "Syntax error, unrecognized expression: " + name );
                                  -			}
                                  -		},
                                  -		CHILD: function(elem, match){
                                  -			var type = match[1], node = elem;
                                  -			switch (type) {
                                  -				case 'only':
                                  -				case 'first':
                                  -					while ( (node = node.previousSibling) )	 {
                                  -						if ( node.nodeType === 1 ) { 
                                  -							return false; 
                                  -						}
                                  -					}
                                  -					if ( type === "first" ) { 
                                  -						return true; 
                                  -					}
                                  -					node = elem;
                                  -				case 'last':
                                  -					while ( (node = node.nextSibling) )	 {
                                  -						if ( node.nodeType === 1 ) { 
                                  -							return false; 
                                  -						}
                                  -					}
                                  -					return true;
                                  -				case 'nth':
                                  -					var first = match[2], last = match[3];
                                  -
                                  -					if ( first === 1 && last === 0 ) {
                                  -						return true;
                                  -					}
                                  -					
                                  -					var doneName = match[0],
                                  -						parent = elem.parentNode;
                                  -	
                                  -					if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -						var count = 0;
                                  -						for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -							if ( node.nodeType === 1 ) {
                                  -								node.nodeIndex = ++count;
                                  -							}
                                  -						} 
                                  -						parent.sizcache = doneName;
                                  -					}
                                  -					
                                  -					var diff = elem.nodeIndex - last;
                                  -					if ( first === 0 ) {
                                  -						return diff === 0;
                                  -					} else {
                                  -						return ( diff % first === 0 && diff / first >= 0 );
                                  -					}
                                  -			}
                                  -		},
                                  -		ID: function(elem, match){
                                  -			return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -		},
                                  -		TAG: function(elem, match){
                                  -			return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
                                  -		},
                                  -		CLASS: function(elem, match){
                                  -			return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -				.indexOf( match ) > -1;
                                  -		},
                                  -		ATTR: function(elem, match){
                                  -			var name = match[1],
                                  -				result = Expr.attrHandle[ name ] ?
                                  -					Expr.attrHandle[ name ]( elem ) :
                                  -					elem[ name ] != null ?
                                  -						elem[ name ] :
                                  -						elem.getAttribute( name ),
                                  -				value = result + "",
                                  -				type = match[2],
                                  -				check = match[4];
                                  -
                                  -			return result == null ?
                                  -				type === "!=" :
                                  -				type === "=" ?
                                  -				value === check :
                                  -				type === "*=" ?
                                  -				value.indexOf(check) >= 0 :
                                  -				type === "~=" ?
                                  -				(" " + value + " ").indexOf(check) >= 0 :
                                  -				!check ?
                                  -				value && result !== false :
                                  -				type === "!=" ?
                                  -				value !== check :
                                  -				type === "^=" ?
                                  -				value.indexOf(check) === 0 :
                                  -				type === "$=" ?
                                  -				value.substr(value.length - check.length) === check :
                                  -				type === "|=" ?
                                  -				value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -				false;
                                  -		},
                                  -		POS: function(elem, match, i, array){
                                  -			var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -			if ( filter ) {
                                  -				return filter( elem, i, match, array );
                                  -			}
                                  -		}
                                  -	}
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -	Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
                                  -		return "\\" + (num - 0 + 1);
                                  -	}));
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -	sortOrder = function( a, b ) {
                                  -		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -			if ( a == b ) {
                                  -				hasDuplicate = true;
                                  -			}
                                  -			return a.compareDocumentPosition ? -1 : 1;
                                  -		}
                                  -
                                  -		var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -		if ( ret === 0 ) {
                                  -			hasDuplicate = true;
                                  -		}
                                  -		return ret;
                                  -	};
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -	sortOrder = function( a, b ) {
                                  -		if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -			if ( a == b ) {
                                  -				hasDuplicate = true;
                                  -			}
                                  -			return a.sourceIndex ? -1 : 1;
                                  -		}
                                  -
                                  -		var ret = a.sourceIndex - b.sourceIndex;
                                  -		if ( ret === 0 ) {
                                  -			hasDuplicate = true;
                                  -		}
                                  -		return ret;
                                  -	};
                                  -} else if ( document.createRange ) {
                                  -	sortOrder = function( a, b ) {
                                  -		if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -			if ( a == b ) {
                                  -				hasDuplicate = true;
                                  -			}
                                  -			return a.ownerDocument ? -1 : 1;
                                  -		}
                                  -
                                  -		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -		aRange.setStart(a, 0);
                                  -		aRange.setEnd(a, 0);
                                  -		bRange.setStart(b, 0);
                                  -		bRange.setEnd(b, 0);
                                  -		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -		if ( ret === 0 ) {
                                  -			hasDuplicate = true;
                                  -		}
                                  -		return ret;
                                  -	};
                                  -}
                                  -
                                  -// Utility function for retreiving the text value of an array of DOM nodes
                                  -function getText( elems ) {
                                  -	var ret = "", elem;
                                  -
                                  -	for ( var i = 0; elems[i]; i++ ) {
                                  -		elem = elems[i];
                                  -
                                  -		// Get the text from text nodes and CDATA nodes
                                  -		if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
                                  -			ret += elem.nodeValue;
                                  -
                                  -		// Traverse everything else, except comment nodes
                                  -		} else if ( elem.nodeType !== 8 ) {
                                  -			ret += getText( elem.childNodes );
                                  -		}
                                  -	}
                                  -
                                  -	return ret;
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -	// We're going to inject a fake input element with a specified name
                                  -	var form = document.createElement("div"),
                                  -		id = "script" + (new Date).getTime();
                                  -	form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -	// Inject it into the root element, check its status, and remove it quickly
                                  -	var root = document.documentElement;
                                  -	root.insertBefore( form, root.firstChild );
                                  -
                                  -	// The workaround has to do additional checks after a getElementById
                                  -	// Which slows things down for other browsers (hence the branching)
                                  -	if ( document.getElementById( id ) ) {
                                  -		Expr.find.ID = function(match, context, isXML){
                                  -			if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -				var m = context.getElementById(match[1]);
                                  -				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -			}
                                  -		};
                                  -
                                  -		Expr.filter.ID = function(elem, match){
                                  -			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -			return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -		};
                                  -	}
                                  -
                                  -	root.removeChild( form );
                                  -	root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -	// Check to see if the browser returns only elements
                                  -	// when doing getElementsByTagName("*")
                                  -
                                  -	// Create a fake element
                                  -	var div = document.createElement("div");
                                  -	div.appendChild( document.createComment("") );
                                  -
                                  -	// Make sure no comments are found
                                  -	if ( div.getElementsByTagName("*").length > 0 ) {
                                  -		Expr.find.TAG = function(match, context){
                                  -			var results = context.getElementsByTagName(match[1]);
                                  -
                                  -			// Filter out possible comments
                                  -			if ( match[1] === "*" ) {
                                  -				var tmp = [];
                                  -
                                  -				for ( var i = 0; results[i]; i++ ) {
                                  -					if ( results[i].nodeType === 1 ) {
                                  -						tmp.push( results[i] );
                                  -					}
                                  -				}
                                  -
                                  -				results = tmp;
                                  -			}
                                  -
                                  -			return results;
                                  -		};
                                  -	}
                                  -
                                  -	// Check to see if an attribute returns normalized href attributes
                                  -	div.innerHTML = "<a href='#'></a>";
                                  -	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -			div.firstChild.getAttribute("href") !== "#" ) {
                                  -		Expr.attrHandle.href = function(elem){
                                  -			return elem.getAttribute("href", 2);
                                  -		};
                                  -	}
                                  -
                                  -	div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) {
                                  -	(function(){
                                  -		var oldSizzle = Sizzle, div = document.createElement("div");
                                  -		div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -		// Safari can't handle uppercase or unicode characters when
                                  -		// in quirks mode.
                                  -		if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -			return;
                                  -		}
                                  -	
                                  -		Sizzle = function(query, context, extra, seed){
                                  -			context = context || document;
                                  -
                                  -			// Only use querySelectorAll on non-XML documents
                                  -			// (ID selectors don't work in non-HTML documents)
                                  -			if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -				try {
                                  -					return makeArray( context.querySelectorAll(query), extra );
                                  -				} catch(e){}
                                  -			}
                                  -		
                                  -			return oldSizzle(query, context, extra, seed);
                                  -		};
                                  -
                                  -		for ( var prop in oldSizzle ) {
                                  -			Sizzle[ prop ] = oldSizzle[ prop ];
                                  -		}
                                  -
                                  -		div = null; // release memory in IE
                                  -	})();
                                  -}
                                  -
                                  -(function(){
                                  -	var div = document.createElement("div");
                                  -
                                  -	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -	// Opera can't find a second classname (in 9.6)
                                  -	// Also, make sure that getElementsByClassName actually exists
                                  -	if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
                                  -		return;
                                  -	}
                                  -
                                  -	// Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -	div.lastChild.className = "e";
                                  -
                                  -	if ( div.getElementsByClassName("e").length === 1 ) {
                                  -		return;
                                  -	}
                                  -	
                                  -	Expr.order.splice(1, 0, "CLASS");
                                  -	Expr.find.CLASS = function(match, context, isXML) {
                                  -		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -			return context.getElementsByClassName(match[1]);
                                  -		}
                                  -	};
                                  -
                                  -	div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -		var elem = checkSet[i];
                                  -		if ( elem ) {
                                  -			elem = elem[dir];
                                  -			var match = false;
                                  -
                                  -			while ( elem ) {
                                  -				if ( elem.sizcache === doneName ) {
                                  -					match = checkSet[elem.sizset];
                                  -					break;
                                  -				}
                                  -
                                  -				if ( elem.nodeType === 1 && !isXML ){
                                  -					elem.sizcache = doneName;
                                  -					elem.sizset = i;
                                  -				}
                                  -
                                  -				if ( elem.nodeName.toLowerCase() === cur ) {
                                  -					match = elem;
                                  -					break;
                                  -				}
                                  -
                                  -				elem = elem[dir];
                                  -			}
                                  -
                                  -			checkSet[i] = match;
                                  -		}
                                  -	}
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -		var elem = checkSet[i];
                                  -		if ( elem ) {
                                  -			elem = elem[dir];
                                  -			var match = false;
                                  -
                                  -			while ( elem ) {
                                  -				if ( elem.sizcache === doneName ) {
                                  -					match = checkSet[elem.sizset];
                                  -					break;
                                  -				}
                                  -
                                  -				if ( elem.nodeType === 1 ) {
                                  -					if ( !isXML ) {
                                  -						elem.sizcache = doneName;
                                  -						elem.sizset = i;
                                  -					}
                                  -					if ( typeof cur !== "string" ) {
                                  -						if ( elem === cur ) {
                                  -							match = true;
                                  -							break;
                                  -						}
                                  -
                                  -					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -						match = elem;
                                  -						break;
                                  -					}
                                  -				}
                                  -
                                  -				elem = elem[dir];
                                  -			}
                                  -
                                  -			checkSet[i] = match;
                                  -		}
                                  -	}
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ? function(a, b){
                                  -	return !!(a.compareDocumentPosition(b) & 16);
                                  -} : function(a, b){
                                  -	return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -	// documentElement is verified for cases where it doesn't yet exist
                                  -	// (such as loading iframes in IE - #4833) 
                                  -	var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
                                  -	return documentElement ? documentElement.nodeName !== "HTML" : false;
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -	var tmpSet = [], later = "", match,
                                  -		root = context.nodeType ? [context] : context;
                                  -
                                  -	// Position selectors must be done after the filter
                                  -	// And so must :not(positional) so we move all PSEUDOs to the end
                                  -	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -		later += match[0];
                                  -		selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -	}
                                  -
                                  -	selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -	for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -		Sizzle( selector, root[i], tmpSet );
                                  -	}
                                  -
                                  -	return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -jQuery.find = Sizzle;
                                  -jQuery.expr = Sizzle.selectors;
                                  -jQuery.expr[":"] = jQuery.expr.filters;
                                  -jQuery.unique = Sizzle.uniqueSort;
                                  -jQuery.text = getText;
                                  -jQuery.isXMLDoc = isXML;
                                  -jQuery.contains = contains;
                                  -
                                  -return;
                                  -
                                  -window.Sizzle = Sizzle;
                                  -
                                  -})();
                                  -var runtil = /Until$/,
                                  -	rparentsprev = /^(?:parents|prevUntil|prevAll)/,
                                  -	// Note: This RegExp should be improved, or likely pulled from Sizzle
                                  -	rmultiselector = /,/,
                                  -	slice = Array.prototype.slice;
                                  -
                                  -// Implement the identical functionality for filter and not
                                  -var winnow = function( elements, qualifier, keep ) {
                                  -	if ( jQuery.isFunction( qualifier ) ) {
                                  -		return jQuery.grep(elements, function( elem, i ) {
                                  -			return !!qualifier.call( elem, i, elem ) === keep;
                                  -		});
                                  -
                                  -	} else if ( qualifier.nodeType ) {
                                  -		return jQuery.grep(elements, function( elem, i ) {
                                  -			return (elem === qualifier) === keep;
                                  -		});
                                  -
                                  -	} else if ( typeof qualifier === "string" ) {
                                  -		var filtered = jQuery.grep(elements, function( elem ) {
                                  -			return elem.nodeType === 1;
                                  -		});
                                  -
                                  -		if ( isSimple.test( qualifier ) ) {
                                  -			return jQuery.filter(qualifier, filtered, !keep);
                                  -		} else {
                                  -			qualifier = jQuery.filter( qualifier, filtered );
                                  -		}
                                  -	}
                                  -
                                  -	return jQuery.grep(elements, function( elem, i ) {
                                  -		return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
                                  -	});
                                  -};
                                  -
                                  -jQuery.fn.extend({
                                  -	find: function( selector ) {
                                  -		var ret = this.pushStack( "", "find", selector ), length = 0;
                                  -
                                  -		for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -			length = ret.length;
                                  -			jQuery.find( selector, this[i], ret );
                                  -
                                  -			if ( i > 0 ) {
                                  -				// Make sure that the results are unique
                                  -				for ( var n = length; n < ret.length; n++ ) {
                                  -					for ( var r = 0; r < length; r++ ) {
                                  -						if ( ret[r] === ret[n] ) {
                                  -							ret.splice(n--, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	},
                                  -
                                  -	has: function( target ) {
                                  -		var targets = jQuery( target );
                                  -		return this.filter(function() {
                                  -			for ( var i = 0, l = targets.length; i < l; i++ ) {
                                  -				if ( jQuery.contains( this, targets[i] ) ) {
                                  -					return true;
                                  -				}
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	not: function( selector ) {
                                  -		return this.pushStack( winnow(this, selector, false), "not", selector);
                                  -	},
                                  -
                                  -	filter: function( selector ) {
                                  -		return this.pushStack( winnow(this, selector, true), "filter", selector );
                                  -	},
                                  -	
                                  -	is: function( selector ) {
                                  -		return !!selector && jQuery.filter( selector, this ).length > 0;
                                  -	},
                                  -
                                  -	closest: function( selectors, context ) {
                                  -		if ( jQuery.isArray( selectors ) ) {
                                  -			var ret = [], cur = this[0], match, matches = {}, selector;
                                  -
                                  -			if ( cur && selectors.length ) {
                                  -				for ( var i = 0, l = selectors.length; i < l; i++ ) {
                                  -					selector = selectors[i];
                                  -
                                  -					if ( !matches[selector] ) {
                                  -						matches[selector] = jQuery.expr.match.POS.test( selector ) ? 
                                  -							jQuery( selector, context || this.context ) :
                                  -							selector;
                                  -					}
                                  -				}
                                  -
                                  -				while ( cur && cur.ownerDocument && cur !== context ) {
                                  -					for ( selector in matches ) {
                                  -						match = matches[selector];
                                  -
                                  -						if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
                                  -							ret.push({ selector: selector, elem: cur });
                                  -							delete matches[selector];
                                  -						}
                                  -					}
                                  -					cur = cur.parentNode;
                                  -				}
                                  -			}
                                  -
                                  -			return ret;
                                  -		}
                                  -
                                  -		var pos = jQuery.expr.match.POS.test( selectors ) ? 
                                  -			jQuery( selectors, context || this.context ) : null;
                                  -
                                  -		return this.map(function( i, cur ) {
                                  -			while ( cur && cur.ownerDocument && cur !== context ) {
                                  -				if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
                                  -					return cur;
                                  -				}
                                  -				cur = cur.parentNode;
                                  -			}
                                  -			return null;
                                  -		});
                                  -	},
                                  -	
                                  -	// Determine the position of an element within
                                  -	// the matched set of elements
                                  -	index: function( elem ) {
                                  -		if ( !elem || typeof elem === "string" ) {
                                  -			return jQuery.inArray( this[0],
                                  -				// If it receives a string, the selector is used
                                  -				// If it receives nothing, the siblings are used
                                  -				elem ? jQuery( elem ) : this.parent().children() );
                                  -		}
                                  -		// Locate the position of the desired element
                                  -		return jQuery.inArray(
                                  -			// If it receives a jQuery object, the first element is used
                                  -			elem.jquery ? elem[0] : elem, this );
                                  -	},
                                  -
                                  -	add: function( selector, context ) {
                                  -		var set = typeof selector === "string" ?
                                  -				jQuery( selector, context || this.context ) :
                                  -				jQuery.makeArray( selector ),
                                  -			all = jQuery.merge( this.get(), set );
                                  -
                                  -		return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
                                  -			all :
                                  -			jQuery.unique( all ) );
                                  -	},
                                  -
                                  -	andSelf: function() {
                                  -		return this.add( this.prevObject );
                                  -	}
                                  -});
                                  -
                                  -// A painfully simple check to see if an element is disconnected
                                  -// from a document (should be improved, where feasible).
                                  -function isDisconnected( node ) {
                                  -	return !node || !node.parentNode || node.parentNode.nodeType === 11;
                                  -}
                                  -
                                  -jQuery.each({
                                  -	parent: function( elem ) {
                                  -		var parent = elem.parentNode;
                                  -		return parent && parent.nodeType !== 11 ? parent : null;
                                  -	},
                                  -	parents: function( elem ) {
                                  -		return jQuery.dir( elem, "parentNode" );
                                  -	},
                                  -	parentsUntil: function( elem, i, until ) {
                                  -		return jQuery.dir( elem, "parentNode", until );
                                  -	},
                                  -	next: function( elem ) {
                                  -		return jQuery.nth( elem, 2, "nextSibling" );
                                  -	},
                                  -	prev: function( elem ) {
                                  -		return jQuery.nth( elem, 2, "previousSibling" );
                                  -	},
                                  -	nextAll: function( elem ) {
                                  -		return jQuery.dir( elem, "nextSibling" );
                                  -	},
                                  -	prevAll: function( elem ) {
                                  -		return jQuery.dir( elem, "previousSibling" );
                                  -	},
                                  -	nextUntil: function( elem, i, until ) {
                                  -		return jQuery.dir( elem, "nextSibling", until );
                                  -	},
                                  -	prevUntil: function( elem, i, until ) {
                                  -		return jQuery.dir( elem, "previousSibling", until );
                                  -	},
                                  -	siblings: function( elem ) {
                                  -		return jQuery.sibling( elem.parentNode.firstChild, elem );
                                  -	},
                                  -	children: function( elem ) {
                                  -		return jQuery.sibling( elem.firstChild );
                                  -	},
                                  -	contents: function( elem ) {
                                  -		return jQuery.nodeName( elem, "iframe" ) ?
                                  -			elem.contentDocument || elem.contentWindow.document :
                                  -			jQuery.makeArray( elem.childNodes );
                                  -	}
                                  -}, function( name, fn ) {
                                  -	jQuery.fn[ name ] = function( until, selector ) {
                                  -		var ret = jQuery.map( this, fn, until );
                                  -		
                                  -		if ( !runtil.test( name ) ) {
                                  -			selector = until;
                                  -		}
                                  -
                                  -		if ( selector && typeof selector === "string" ) {
                                  -			ret = jQuery.filter( selector, ret );
                                  -		}
                                  -
                                  -		ret = this.length > 1 ? jQuery.unique( ret ) : ret;
                                  -
                                  -		if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
                                  -			ret = ret.reverse();
                                  -		}
                                  -
                                  -		return this.pushStack( ret, name, slice.call(arguments).join(",") );
                                  -	};
                                  -});
                                  -
                                  -jQuery.extend({
                                  -	filter: function( expr, elems, not ) {
                                  -		if ( not ) {
                                  -			expr = ":not(" + expr + ")";
                                  -		}
                                  -
                                  -		return jQuery.find.matches(expr, elems);
                                  -	},
                                  -	
                                  -	dir: function( elem, dir, until ) {
                                  -		var matched = [], cur = elem[dir];
                                  -		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
                                  -			if ( cur.nodeType === 1 ) {
                                  -				matched.push( cur );
                                  -			}
                                  -			cur = cur[dir];
                                  -		}
                                  -		return matched;
                                  -	},
                                  -
                                  -	nth: function( cur, result, dir, elem ) {
                                  -		result = result || 1;
                                  -		var num = 0;
                                  -
                                  -		for ( ; cur; cur = cur[dir] ) {
                                  -			if ( cur.nodeType === 1 && ++num === result ) {
                                  -				break;
                                  -			}
                                  -		}
                                  -
                                  -		return cur;
                                  -	},
                                  -
                                  -	sibling: function( n, elem ) {
                                  -		var r = [];
                                  -
                                  -		for ( ; n; n = n.nextSibling ) {
                                  -			if ( n.nodeType === 1 && n !== elem ) {
                                  -				r.push( n );
                                  -			}
                                  -		}
                                  -
                                  -		return r;
                                  -	}
                                  -});
                                  -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
                                  -	rleadingWhitespace = /^\s+/,
                                  -	rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
                                  -	rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
                                  -	rtagName = /<([\w:]+)/,
                                  -	rtbody = /<tbody/i,
                                  -	rhtml = /<|&#?\w+;/,
                                  -	rnocache = /<script|<object|<embed|<option|<style/i,
                                  -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,  // checked="checked" or checked (html5)
                                  -	fcloseTag = function( all, front, tag ) {
                                  -		return rselfClosing.test( tag ) ?
                                  -			all :
                                  -			front + "></" + tag + ">";
                                  -	},
                                  -	wrapMap = {
                                  -		option: [ 1, "<select multiple='multiple'>", "</select>" ],
                                  -		legend: [ 1, "<fieldset>", "</fieldset>" ],
                                  -		thead: [ 1, "<table>", "</table>" ],
                                  -		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
                                  -		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
                                  -		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
                                  -		area: [ 1, "<map>", "</map>" ],
                                  -		_default: [ 0, "", "" ]
                                  -	};
                                  -
                                  -wrapMap.optgroup = wrapMap.option;
                                  -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
                                  -wrapMap.th = wrapMap.td;
                                  -
                                  -// IE can't serialize <link> and <script> tags normally
                                  -if ( !jQuery.support.htmlSerialize ) {
                                  -	wrapMap._default = [ 1, "div<div>", "</div>" ];
                                  -}
                                  -
                                  -jQuery.fn.extend({
                                  -	text: function( text ) {
                                  -		if ( jQuery.isFunction(text) ) {
                                  -			return this.each(function(i) {
                                  -				var self = jQuery(this);
                                  -				self.text( text.call(this, i, self.text()) );
                                  -			});
                                  -		}
                                  -
                                  -		if ( typeof text !== "object" && text !== undefined ) {
                                  -			return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
                                  -		}
                                  -
                                  -		return jQuery.text( this );
                                  -	},
                                  -
                                  -	wrapAll: function( html ) {
                                  -		if ( jQuery.isFunction( html ) ) {
                                  -			return this.each(function(i) {
                                  -				jQuery(this).wrapAll( html.call(this, i) );
                                  -			});
                                  -		}
                                  -
                                  -		if ( this[0] ) {
                                  -			// The elements to wrap the target around
                                  -			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
                                  -
                                  -			if ( this[0].parentNode ) {
                                  -				wrap.insertBefore( this[0] );
                                  -			}
                                  -
                                  -			wrap.map(function() {
                                  -				var elem = this;
                                  -
                                  -				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
                                  -					elem = elem.firstChild;
                                  -				}
                                  -
                                  -				return elem;
                                  -			}).append(this);
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	wrapInner: function( html ) {
                                  -		if ( jQuery.isFunction( html ) ) {
                                  -			return this.each(function(i) {
                                  -				jQuery(this).wrapInner( html.call(this, i) );
                                  -			});
                                  -		}
                                  -
                                  -		return this.each(function() {
                                  -			var self = jQuery( this ), contents = self.contents();
                                  -
                                  -			if ( contents.length ) {
                                  -				contents.wrapAll( html );
                                  -
                                  -			} else {
                                  -				self.append( html );
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	wrap: function( html ) {
                                  -		return this.each(function() {
                                  -			jQuery( this ).wrapAll( html );
                                  -		});
                                  -	},
                                  -
                                  -	unwrap: function() {
                                  -		return this.parent().each(function() {
                                  -			if ( !jQuery.nodeName( this, "body" ) ) {
                                  -				jQuery( this ).replaceWith( this.childNodes );
                                  -			}
                                  -		}).end();
                                  -	},
                                  -
                                  -	append: function() {
                                  -		return this.domManip(arguments, true, function( elem ) {
                                  -			if ( this.nodeType === 1 ) {
                                  -				this.appendChild( elem );
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	prepend: function() {
                                  -		return this.domManip(arguments, true, function( elem ) {
                                  -			if ( this.nodeType === 1 ) {
                                  -				this.insertBefore( elem, this.firstChild );
                                  -			}
                                  -		});
                                  -	},
                                  -
                                  -	before: function() {
                                  -		if ( this[0] && this[0].parentNode ) {
                                  -			return this.domManip(arguments, false, function( elem ) {
                                  -				this.parentNode.insertBefore( elem, this );
                                  -			});
                                  -		} else if ( arguments.length ) {
                                  -			var set = jQuery(arguments[0]);
                                  -			set.push.apply( set, this.toArray() );
                                  -			return this.pushStack( set, "before", arguments );
                                  -		}
                                  -	},
                                  -
                                  -	after: function() {
                                  -		if ( this[0] && this[0].parentNode ) {
                                  -			return this.domManip(arguments, false, function( elem ) {
                                  -				this.parentNode.insertBefore( elem, this.nextSibling );
                                  -			});
                                  -		} else if ( arguments.length ) {
                                  -			var set = this.pushStack( this, "after", arguments );
                                  -			set.push.apply( set, jQuery(arguments[0]).toArray() );
                                  -			return set;
                                  -		}
                                  -	},
                                  -	
                                  -	// keepData is for internal use only--do not document
                                  -	remove: function( selector, keepData ) {
                                  -		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
                                  -			if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
                                  -				if ( !keepData && elem.nodeType === 1 ) {
                                  -					jQuery.cleanData( elem.getElementsByTagName("*") );
                                  -					jQuery.cleanData( [ elem ] );
                                  -				}
                                  -
                                  -				if ( elem.parentNode ) {
                                  -					 elem.parentNode.removeChild( elem );
                                  -				}
                                  -			}
                                  -		}
                                  -		
                                  -		return this;
                                  -	},
                                  -
                                  -	empty: function() {
                                  -		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
                                  -			// Remove element nodes and prevent memory leaks
                                  -			if ( elem.nodeType === 1 ) {
                                  -				jQuery.cleanData( elem.getElementsByTagName("*") );
                                  -			}
                                  -
                                  -			// Remove any remaining nodes
                                  -			while ( elem.firstChild ) {
                                  -				elem.removeChild( elem.firstChild );
                                  -			}
                                  -		}
                                  -		
                                  -		return this;
                                  -	},
                                  -
                                  -	clone: function( events ) {
                                  -		// Do the clone
                                  -		var ret = this.map(function() {
                                  -			if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
                                  -				// IE copies events bound via attachEvent when
                                  -				// using cloneNode. Calling detachEvent on the
                                  -				// clone will also remove the events from the orignal
                                  -				// In order to get around this, we use innerHTML.
                                  -				// Unfortunately, this means some modifications to
                                  -				// attributes in IE that are actually only stored
                                  -				// as properties will not be copied (such as the
                                  -				// the name attribute on an input).
                                  -				var html = this.outerHTML, ownerDocument = this.ownerDocument;
                                  -				if ( !html ) {
                                  -					var div = ownerDocument.createElement("div");
                                  -					div.appendChild( this.cloneNode(true) );
                                  -					html = div.innerHTML;
                                  -				}
                                  -
                                  -				return jQuery.clean([html.replace(rinlinejQuery, "")
                                  -					// Handle the case in IE 8 where action=/test/> self-closes a tag
                                  -					.replace(/=([^="'>\s]+\/)>/g, '="$1">')
                                  -					.replace(rleadingWhitespace, "")], ownerDocument)[0];
                                  -			} else {
                                  -				return this.cloneNode(true);
                                  -			}
                                  -		});
                                  -
                                  -		// Copy the events from the original to the clone
                                  -		if ( events === true ) {
                                  -			cloneCopyEvent( this, ret );
                                  -			cloneCopyEvent( this.find("*"), ret.find("*") );
                                  -		}
                                  -
                                  -		// Return the cloned set
                                  -		return ret;
                                  -	},
                                  -
                                  -	html: function( value ) {
                                  -		if ( value === undefined ) {
                                  -			return this[0] && this[0].nodeType === 1 ?
                                  -				this[0].innerHTML.replace(rinlinejQuery, "") :
                                  -				null;
                                  -
                                  -		// See if we can take a shortcut and just use innerHTML
                                  -		} else if ( typeof value === "string" && !rnocache.test( value ) &&
                                  -			(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
                                  -			!wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
                                  -
                                  -			value = value.replace(rxhtmlTag, fcloseTag);
                                  -
                                  -			try {
                                  -				for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -					// Remove element nodes and prevent memory leaks
                                  -					if ( this[i].nodeType === 1 ) {
                                  -						jQuery.cleanData( this[i].getElementsByTagName("*") );
                                  -						this[i].innerHTML = value;
                                  -					}
                                  -				}
                                  -
                                  -			// If using innerHTML throws an exception, use the fallback method
                                  -			} catch(e) {
                                  -				this.empty().append( value );
                                  -			}
                                  -
                                  -		} else if ( jQuery.isFunction( value ) ) {
                                  -			this.each(function(i){
                                  -				var self = jQuery(this), old = self.html();
                                  -				self.empty().append(function(){
                                  -					return value.call( this, i, old );
                                  -				});
                                  -			});
                                  -
                                  -		} else {
                                  -			this.empty().append( value );
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	replaceWith: function( value ) {
                                  -		if ( this[0] && this[0].parentNode ) {
                                  -			// Make sure that the elements are removed from the DOM before they are inserted
                                  -			// this can help fix replacing a parent with child elements
                                  -			if ( jQuery.isFunction( value ) ) {
                                  -				return this.each(function(i) {
                                  -					var self = jQuery(this), old = self.html();
                                  -					self.replaceWith( value.call( this, i, old ) );
                                  -				});
                                  -			}
                                  -
                                  -			if ( typeof value !== "string" ) {
                                  -				value = jQuery(value).detach();
                                  -			}
                                  -
                                  -			return this.each(function() {
                                  -				var next = this.nextSibling, parent = this.parentNode;
                                  -
                                  -				jQuery(this).remove();
                                  -
                                  -				if ( next ) {
                                  -					jQuery(next).before( value );
                                  -				} else {
                                  -					jQuery(parent).append( value );
                                  -				}
                                  -			});
                                  -		} else {
                                  -			return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
                                  -		}
                                  -	},
                                  -
                                  -	detach: function( selector ) {
                                  -		return this.remove( selector, true );
                                  -	},
                                  -
                                  -	domManip: function( args, table, callback ) {
                                  -		var results, first, value = args[0], scripts = [], fragment, parent;
                                  -
                                  -		// We can't cloneNode fragments that contain checked, in WebKit
                                  -		if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
                                  -			return this.each(function() {
                                  -				jQuery(this).domManip( args, table, callback, true );
                                  -			});
                                  -		}
                                  -
                                  -		if ( jQuery.isFunction(value) ) {
                                  -			return this.each(function(i) {
                                  -				var self = jQuery(this);
                                  -				args[0] = value.call(this, i, table ? self.html() : undefined);
                                  -				self.domManip( args, table, callback );
                                  -			});
                                  -		}
                                  -
                                  -		if ( this[0] ) {
                                  -			parent = value && value.parentNode;
                                  -
                                  -			// If we're in a fragment, just use that instead of building a new one
                                  -			if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
                                  -				results = { fragment: parent };
                                  -
                                  -			} else {
                                  -				results = buildFragment( args, this, scripts );
                                  -			}
                                  -			
                                  -			fragment = results.fragment;
                                  -			
                                  -			if ( fragment.childNodes.length === 1 ) {
                                  -				first = fragment = fragment.firstChild;
                                  -			} else {
                                  -				first = fragment.firstChild;
                                  -			}
                                  -
                                  -			if ( first ) {
                                  -				table = table && jQuery.nodeName( first, "tr" );
                                  -
                                  -				for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -					callback.call(
                                  -						table ?
                                  -							root(this[i], first) :
                                  -							this[i],
                                  -						i > 0 || results.cacheable || this.length > 1  ?
                                  -							fragment.cloneNode(true) :
                                  -							fragment
                                  -					);
                                  -				}
                                  -			}
                                  -
                                  -			if ( scripts.length ) {
                                  -				jQuery.each( scripts, evalScript );
                                  -			}
                                  -		}
                                  -
                                  -		return this;
                                  -
                                  -		function root( elem, cur ) {
                                  -			return jQuery.nodeName(elem, "table") ?
                                  -				(elem.getElementsByTagName("tbody")[0] ||
                                  -				elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
                                  -				elem;
                                  -		}
                                  -	}
                                  -});
                                  -
                                  -function cloneCopyEvent(orig, ret) {
                                  -	var i = 0;
                                  -
                                  -	ret.each(function() {
                                  -		if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
                                  -			return;
                                  -		}
                                  -
                                  -		var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
                                  -
                                  -		if ( events ) {
                                  -			delete curData.handle;
                                  -			curData.events = {};
                                  -
                                  -			for ( var type in events ) {
                                  -				for ( var handler in events[ type ] ) {
                                  -					jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
                                  -				}
                                  -			}
                                  -		}
                                  -	});
                                  -}
                                  -
                                  -function buildFragment( args, nodes, scripts ) {
                                  -	var fragment, cacheable, cacheresults,
                                  -		doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
                                  -
                                  -	// Only cache "small" (1/2 KB) strings that are associated with the main document
                                  -	// Cloning options loses the selected state, so don't cache them
                                  -	// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
                                  -	// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
                                  -	if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
                                  -		!rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
                                  -
                                  -		cacheable = true;
                                  -		cacheresults = jQuery.fragments[ args[0] ];
                                  -		if ( cacheresults ) {
                                  -			if ( cacheresults !== 1 ) {
                                  -				fragment = cacheresults;
                                  -			}
                                  -		}
                                  -	}
                                  -
                                  -	if ( !fragment ) {
                                  -		fragment = doc.createDocumentFragment();
                                  -		jQuery.clean( args, doc, fragment, scripts );
                                  -	}
                                  -
                                  -	if ( cacheable ) {
                                  -		jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
                                  -	}
                                  -
                                  -	return { fragment: fragment, cacheable: cacheable };
                                  -}
                                  -
                                  -jQuery.fragments = {};
                                  -
                                  -jQuery.each({
                                  -	appendTo: "append",
                                  -	prependTo: "prepend",
                                  -	insertBefore: "before",
                                  -	insertAfter: "after",
                                  -	replaceAll: "replaceWith"
                                  -}, function( name, original ) {
                                  -	jQuery.fn[ name ] = function( selector ) {
                                  -		var ret = [], insert = jQuery( selector ),
                                  -			parent = this.length === 1 && this[0].parentNode;
                                  -		
                                  -		if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
                                  -			insert[ original ]( this[0] );
                                  -			return this;
                                  -			
                                  -		} else {
                                  -			for ( var i = 0, l = insert.length; i < l; i++ ) {
                                  -				var elems = (i > 0 ? this.clone(true) : this).get();
                                  -				jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
                                  -				ret = ret.concat( elems );
                                  -			}
                                  -		
                                  -			return this.pushStack( ret, name, insert.selector );
                                  -		}
                                  -	};
                                  -});
                                  -
                                  -jQuery.extend({
                                  -	clean: function( elems, context, fragment, scripts ) {
                                  -		context = context || document;
                                  -
                                  -		// !context.createElement fails in IE with an error but returns typeof 'object'
                                  -		if ( typeof context.createElement === "undefined" ) {
                                  -			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
                                  -		}
                                  -
                                  -		var ret = [];
                                  -
                                  -		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
                                  -			if ( typeof elem === "number" ) {
                                  -				elem += "";
                                  -			}
                                  -
                                  -			if ( !elem ) {
                                  -				continue;
                                  -			}
                                  -
                                  -			// Convert html string into DOM nodes
                                  -			if ( typeof elem === "string" && !rhtml.test( elem ) ) {
                                  -				elem = context.createTextNode( elem );
                                  -
                                  -			} else if ( typeof elem === "string" ) {
                                  -				// Fix "XHTML"-style tags in all browsers
                                  -				elem = elem.replace(rxhtmlTag, fcloseTag);
                                  -
                                  -				// Trim whitespace, otherwise indexOf won't work as expected
                                  -				var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
                                  -					wrap = wrapMap[ tag ] || wrapMap._default,
                                  -					depth = wrap[0],
                                  -					div = context.createElement("div");
                                  -
                                  -				// Go to html and back, then peel off extra wrappers
                                  -				div.innerHTML = wrap[1] + elem + wrap[2];
                                  -
                                  -				// Move to the right depth
                                  -				while ( depth-- ) {
                                  -					div = div.lastChild;
                                  -				}
                                  -
                                  -				// Remove IE's autoinserted <tbody> from table fragments
                                  -				if ( !jQuery.support.tbody ) {
                                  -
                                  -					// String was a <table>, *may* have spurious <tbody>
                                  -					var hasBody = rtbody.test(elem),
                                  -						tbody = tag === "table" && !hasBody ?
                                  -							div.firstChild && div.firstChild.childNodes :
                                  -
                                  -							// String was a bare <thead> or <tfoot>
                                  -							wrap[1] === "<table>" && !hasBody ?
                                  -								div.childNodes :
                                  -								[];
                                  -
                                  -					for ( var j = tbody.length - 1; j >= 0 ; --j ) {
                                  -						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
                                  -							tbody[ j ].parentNode.removeChild( tbody[ j ] );
                                  -						}
                                  -					}
                                  -
                                  -				}
                                  -
                                  -				// IE completely kills leading whitespace when innerHTML is used
                                  -				if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
                                  -					div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
                                  -				}
                                  -
                                  -				elem = div.childNodes;
                                  -			}
                                  -
                                  -			if ( elem.nodeType ) {
                                  -				ret.push( elem );
                                  -			} else {
                                  -				ret = jQuery.merge( ret, elem );
                                  -			}
                                  -		}
                                  -
                                  -		if ( fragment ) {
                                  -			for ( var i = 0; ret[i]; i++ ) {
                                  -				if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
                                  -					scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
                                  -				
                                  -				} else {
                                  -					if ( ret[i].nodeType === 1 ) {
                                  -						ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
                                  -					}
                                  -					fragment.appendChild( ret[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	},
                                  -	
                                  -	cleanData: function( elems ) {
                                  -		var data, id, cache = jQuery.cache,
                                  -			special = jQuery.event.special,
                                  -			deleteExpando = jQuery.support.deleteExpando;
                                  -		
                                  -		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
                                  -			id = elem[ jQuery.expando ];
                                  -			
                                  -			if ( id ) {
                                  -				data = cache[ id ];
                                  -				
                                  -				if ( data.events ) {
                                  -					for ( var type in data.events ) {
                                  -						if ( special[ type ] ) {
                                  -							jQuery.event.remove( elem, type );
                                  -
                                  -						} else {
                                  -							removeEvent( elem, type, data.handle );
                                  -						}
                                  -					}
                                  -				}
                                  -				
                                  -				if ( deleteExpando ) {
                                  -					delete elem[ jQuery.expando ];
                                  -
                                  -				} else if ( elem.removeAttribute ) {
                                  -					elem.removeAttribute( jQuery.expando );
                                  -				}
                                  -				
                                  -				delete cache[ id ];
                                  -			}
                                  -		}
                                  -	}
                                  -});
                                  -// exclude the following css properties to add px
                                  -var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
                                  -	ralpha = /alpha\([^)]*\)/,
                                  -	ropacity = /opacity=([^)]*)/,
                                  -	rfloat = /float/i,
                                  -	rdashAlpha = /-([a-z])/ig,
                                  -	rupper = /([A-Z])/g,
                                  -	rnumpx = /^-?\d+(?:px)?$/i,
                                  -	rnum = /^-?\d/,
                                  -
                                  -	cssShow = { position: "absolute", visibility: "hidden", display:"block" },
                                  -	cssWidth = [ "Left", "Right" ],
                                  -	cssHeight = [ "Top", "Bottom" ],
                                  -
                                  -	// cache check for defaultView.getComputedStyle
                                  -	getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
                                  -	// normalize float css property
                                  -	styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
                                  -	fcamelCase = function( all, letter ) {
                                  -		return letter.toUpperCase();
                                  -	};
                                  -
                                  -jQuery.fn.css = function( name, value ) {
                                  -	return access( this, name, value, true, function( elem, name, value ) {
                                  -		if ( value === undefined ) {
                                  -			return jQuery.curCSS( elem, name );
                                  -		}
                                  -		
                                  -		if ( typeof value === "number" && !rexclude.test(name) ) {
                                  -			value += "px";
                                  -		}
                                  -
                                  -		jQuery.style( elem, name, value );
                                  -	});
                                  -};
                                  -
                                  -jQuery.extend({
                                  -	style: function( elem, name, value ) {
                                  -		// don't set styles on text and comment nodes
                                  -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
                                  -			return undefined;
                                  -		}
                                  -
                                  -		// ignore negative width and height values #1599
                                  -		if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
                                  -			value = undefined;
                                  -		}
                                  -
                                  -		var style = elem.style || elem, set = value !== undefined;
                                  -
                                  -		// IE uses filters for opacity
                                  -		if ( !jQuery.support.opacity && name === "opacity" ) {
                                  -			if ( set ) {
                                  -				// IE has trouble with opacity if it does not have layout
                                  -				// Force it by setting the zoom level
                                  -				style.zoom = 1;
                                  -
                                  -				// Set the alpha filter to set the opacity
                                  -				var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
                                  -				var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
                                  -				style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
                                  -			}
                                  -
                                  -			return style.filter && style.filter.indexOf("opacity=") >= 0 ?
                                  -				(parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
                                  -				"";
                                  -		}
                                  -
                                  -		// Make sure we're using the right name for getting the float value
                                  -		if ( rfloat.test( name ) ) {
                                  -			name = styleFloat;
                                  -		}
                                  -
                                  -		name = name.replace(rdashAlpha, fcamelCase);
                                  -
                                  -		if ( set ) {
                                  -			style[ name ] = value;
                                  -		}
                                  -
                                  -		return style[ name ];
                                  -	},
                                  -
                                  -	css: function( elem, name, force, extra ) {
                                  -		if ( name === "width" || name === "height" ) {
                                  -			var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
                                  -
                                  -			function getWH() {
                                  -				val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
                                  -
                                  -				if ( extra === "border" ) {
                                  -					return;
                                  -				}
                                  -
                                  -				jQuery.each( which, function() {
                                  -					if ( !extra ) {
                                  -						val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
                                  -					}
                                  -
                                  -					if ( extra === "margin" ) {
                                  -						val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
                                  -					} else {
                                  -						val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
                                  -					}
                                  -				});
                                  -			}
                                  -
                                  -			if ( elem.offsetWidth !== 0 ) {
                                  -				getWH();
                                  -			} else {
                                  -				jQuery.swap( elem, props, getWH );
                                  -			}
                                  -
                                  -			return Math.max(0, Math.round(val));
                                  -		}
                                  -
                                  -		return jQuery.curCSS( elem, name, force );
                                  -	},
                                  -
                                  -	curCSS: function( elem, name, force ) {
                                  -		var ret, style = elem.style, filter;
                                  -
                                  -		// IE uses filters for opacity
                                  -		if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
                                  -			ret = ropacity.test(elem.currentStyle.filter || "") ?
                                  -				(parseFloat(RegExp.$1) / 100) + "" :
                                  -				"";
                                  -
                                  -			return ret === "" ?
                                  -				"1" :
                                  -				ret;
                                  -		}
                                  -
                                  -		// Make sure we're using the right name for getting the float value
                                  -		if ( rfloat.test( name ) ) {
                                  -			name = styleFloat;
                                  -		}
                                  -
                                  -		if ( !force && style && style[ name ] ) {
                                  -			ret = style[ name ];
                                  -
                                  -		} else if ( getComputedStyle ) {
                                  -
                                  -			// Only "float" is needed here
                                  -			if ( rfloat.test( name ) ) {
                                  -				name = "float";
                                  -			}
                                  -
                                  -			name = name.replace( rupper, "-$1" ).toLowerCase();
                                  -
                                  -			var defaultView = elem.ownerDocument.defaultView;
                                  -
                                  -			if ( !defaultView ) {
                                  -				return null;
                                  -			}
                                  -
                                  -			var computedStyle = defaultView.getComputedStyle( elem, null );
                                  -
                                  -			if ( computedStyle ) {
                                  -				ret = computedStyle.getPropertyValue( name );
                                  -			}
                                  -
                                  -			// We should always get a number back from opacity
                                  -			if ( name === "opacity" && ret === "" ) {
                                  -				ret = "1";
                                  -			}
                                  -
                                  -		} else if ( elem.currentStyle ) {
                                  -			var camelCase = name.replace(rdashAlpha, fcamelCase);
                                  -
                                  -			ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
                                  -
                                  -			// From the awesome hack by Dean Edwards
                                  -			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -			// If we're not dealing with a regular pixel number
                                  -			// but a number that has a weird ending, we need to convert it to pixels
                                  -			if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
                                  -				// Remember the original values
                                  -				var left = style.left, rsLeft = elem.runtimeStyle.left;
                                  -
                                  -				// Put in the new values to get a computed value out
                                  -				elem.runtimeStyle.left = elem.currentStyle.left;
                                  -				style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
                                  -				ret = style.pixelLeft + "px";
                                  -
                                  -				// Revert the changed values
                                  -				style.left = left;
                                  -				elem.runtimeStyle.left = rsLeft;
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	},
                                  -
                                  -	// A method for quickly swapping in/out CSS properties to get correct calculations
                                  -	swap: function( elem, options, callback ) {
                                  -		var old = {};
                                  -
                                  -		// Remember the old values, and insert the new ones
                                  -		for ( var name in options ) {
                                  -			old[ name ] = elem.style[ name ];
                                  -			elem.style[ name ] = options[ name ];
                                  -		}
                                  -
                                  -		callback.call( elem );
                                  -
                                  -		// Revert the old values
                                  -		for ( var name in options ) {
                                  -			elem.style[ name ] = old[ name ];
                                  -		}
                                  -	}
                                  -});
                                  -
                                  -if ( jQuery.expr && jQuery.expr.filters ) {
                                  -	jQuery.expr.filters.hidden = function( elem ) {
                                  -		var width = elem.offsetWidth, height = elem.offsetHeight,
                                  -			skip = elem.nodeName.toLowerCase() === "tr";
                                  -
                                  -		return width === 0 && height === 0 && !skip ?
                                  -			true :
                                  -			width > 0 && height > 0 && !skip ?
                                  -				false :
                                  -				jQuery.curCSS(elem, "display") === "none";
                                  -	};
                                  -
                                  -	jQuery.expr.filters.visible = function( elem ) {
                                  -		return !jQuery.expr.filters.hidden( elem );
                                  -	};
                                  -}
                                  -var jsc = now(),
                                  -	rscript = /<script(.|\s)*?\/script>/gi,
                                  -	rselectTextarea = /select|textarea/i,
                                  -	rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
                                  -	jsre = /=\?(&|$)/,
                                  -	rquery = /\?/,
                                  -	rts = /(\?|&)_=.*?(&|$)/,
                                  -	rurl = /^(\w+:)?\/\/([^\/?#]+)/,
                                  -	r20 = /%20/g,
                                  -
                                  -	// Keep a copy of the old load method
                                  -	_load = jQuery.fn.load;
                                  -
                                  -jQuery.fn.extend({
                                  -	load: function( url, params, callback ) {
                                  -		if ( typeof url !== "string" ) {
                                  -			return _load.call( this, url );
                                  -
                                  -		// Don't do a request if no elements are being requested
                                  -		} else if ( !this.length ) {
                                  -			return this;
                                  -		}
                                  -
                                  -		var off = url.indexOf(" ");
                                  -		if ( off >= 0 ) {
                                  -			var selector = url.slice(off, url.length);
                                  -			url = url.slice(0, off);
                                  -		}
                                  -
                                  -		// Default to a GET request
                                  -		var type = "GET";
                                  -
                                  -		// If the second parameter was provided
                                  -		if ( params ) {
                                  -			// If it's a function
                                  -			if ( jQuery.isFunction( params ) ) {
                                  -				// We assume that it's the callback
                                  -				callback = params;
                                  -				params = null;
                                  -
                                  -			// Otherwise, build a param string
                                  -			} else if ( typeof params === "object" ) {
                                  -				params = jQuery.param( params, jQuery.ajaxSettings.traditional );
                                  -				type = "POST";
                                  -			}
                                  -		}
                                  -
                                  -		var self = this;
                                  -
                                  -		// Request the remote document
                                  -		jQuery.ajax({
                                  -			url: url,
                                  -			type: type,
                                  -			dataType: "html",
                                  -			data: params,
                                  -			complete: function( res, status ) {
                                  -				// If successful, inject the HTML into all the matched elements
                                  -				if ( status === "success" || status === "notmodified" ) {
                                  -					// See if a selector was specified
                                  -					self.html( selector ?
                                  -						// Create a dummy div to hold the results
                                  -						jQuery("<div />")
                                  -							// inject the contents of the document in, removing the scripts
                                  -							// to avoid any 'Permission Denied' errors in IE
                                  -							.append(res.responseText.replace(rscript, ""))
                                  -
                                  -							// Locate the specified elements
                                  -							.find(selector) :
                                  -
                                  -						// If not, just inject the full result
                                  -						res.responseText );
                                  -				}
                                  -
                                  -				if ( callback ) {
                                  -					self.each( callback, [res.responseText, status, res] );
                                  -				}
                                  -			}
                                  -		});
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	serialize: function() {
                                  -		return jQuery.param(this.serializeArray());
                                  -	},
                                  -	serializeArray: function() {
                                  -		return this.map(function() {
                                  -			return this.elements ? jQuery.makeArray(this.elements) : this;
                                  -		})
                                  -		.filter(function() {
                                  -			return this.name && !this.disabled &&
                                  -				(this.checked || rselectTextarea.test(this.nodeName) ||
                                  -					rinput.test(this.type));
                                  -		})
                                  -		.map(function( i, elem ) {
                                  -			var val = jQuery(this).val();
                                  -
                                  -			return val == null ?
                                  -				null :
                                  -				jQuery.isArray(val) ?
                                  -					jQuery.map( val, function( val, i ) {
                                  -						return { name: elem.name, value: val };
                                  -					}) :
                                  -					{ name: elem.name, value: val };
                                  -		}).get();
                                  -	}
                                  -});
                                  -
                                  -// Attach a bunch of functions for handling common AJAX events
                                  -jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
                                  -	jQuery.fn[o] = function( f ) {
                                  -		return this.bind(o, f);
                                  -	};
                                  -});
                                  -
                                  -jQuery.extend({
                                  -
                                  -	get: function( url, data, callback, type ) {
                                  -		// shift arguments if data argument was omited
                                  -		if ( jQuery.isFunction( data ) ) {
                                  -			type = type || callback;
                                  -			callback = data;
                                  -			data = null;
                                  -		}
                                  -
                                  -		return jQuery.ajax({
                                  -			type: "GET",
                                  -			url: url,
                                  -			data: data,
                                  -			success: callback,
                                  -			dataType: type
                                  -		});
                                  -	},
                                  -
                                  -	getScript: function( url, callback ) {
                                  -		return jQuery.get(url, null, callback, "script");
                                  -	},
                                  -
                                  -	getJSON: function( url, data, callback ) {
                                  -		return jQuery.get(url, data, callback, "json");
                                  -	},
                                  -
                                  -	post: function( url, data, callback, type ) {
                                  -		// shift arguments if data argument was omited
                                  -		if ( jQuery.isFunction( data ) ) {
                                  -			type = type || callback;
                                  -			callback = data;
                                  -			data = {};
                                  -		}
                                  -
                                  -		return jQuery.ajax({
                                  -			type: "POST",
                                  -			url: url,
                                  -			data: data,
                                  -			success: callback,
                                  -			dataType: type
                                  -		});
                                  -	},
                                  -
                                  -	ajaxSetup: function( settings ) {
                                  -		jQuery.extend( jQuery.ajaxSettings, settings );
                                  -	},
                                  -
                                  -	ajaxSettings: {
                                  -		url: location.href,
                                  -		global: true,
                                  -		type: "GET",
                                  -		contentType: "application/x-www-form-urlencoded",
                                  -		processData: true,
                                  -		async: true,
                                  -		/*
                                  -		timeout: 0,
                                  -		data: null,
                                  -		username: null,
                                  -		password: null,
                                  -		traditional: false,
                                  -		*/
                                  -		// Create the request object; Microsoft failed to properly
                                  -		// implement the XMLHttpRequest in IE7 (can't request local files),
                                  -		// so we use the ActiveXObject when it is available
                                  -		// This function can be overriden by calling jQuery.ajaxSetup
                                  -		xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
                                  -			function() {
                                  -				return new window.XMLHttpRequest();
                                  -			} :
                                  -			function() {
                                  -				try {
                                  -					return new window.ActiveXObject("Microsoft.XMLHTTP");
                                  -				} catch(e) {}
                                  -			},
                                  -		accepts: {
                                  -			xml: "application/xml, text/xml",
                                  -			html: "text/html",
                                  -			script: "text/javascript, application/javascript",
                                  -			json: "application/json, text/javascript",
                                  -			text: "text/plain",
                                  -			_default: "*/*"
                                  -		}
                                  -	},
                                  -
                                  -	// Last-Modified header cache for next request
                                  -	lastModified: {},
                                  -	etag: {},
                                  -
                                  -	ajax: function( origSettings ) {
                                  -		var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
                                  -		
                                  -		var jsonp, status, data,
                                  -			callbackContext = origSettings && origSettings.context || s,
                                  -			type = s.type.toUpperCase();
                                  -
                                  -		// convert data if not already a string
                                  -		if ( s.data && s.processData && typeof s.data !== "string" ) {
                                  -			s.data = jQuery.param( s.data, s.traditional );
                                  -		}
                                  -
                                  -		// Handle JSONP Parameter Callbacks
                                  -		if ( s.dataType === "jsonp" ) {
                                  -			if ( type === "GET" ) {
                                  -				if ( !jsre.test( s.url ) ) {
                                  -					s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
                                  -				}
                                  -			} else if ( !s.data || !jsre.test(s.data) ) {
                                  -				s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
                                  -			}
                                  -			s.dataType = "json";
                                  -		}
                                  -
                                  -		// Build temporary JSONP function
                                  -		if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
                                  -			jsonp = s.jsonpCallback || ("jsonp" + jsc++);
                                  -
                                  -			// Replace the =? sequence both in the query string and the data
                                  -			if ( s.data ) {
                                  -				s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
                                  -			}
                                  -
                                  -			s.url = s.url.replace(jsre, "=" + jsonp + "$1");
                                  -
                                  -			// We need to make sure
                                  -			// that a JSONP style response is executed properly
                                  -			s.dataType = "script";
                                  -
                                  -			// Handle JSONP-style loading
                                  -			window[ jsonp ] = window[ jsonp ] || function( tmp ) {
                                  -				data = tmp;
                                  -				success();
                                  -				complete();
                                  -				// Garbage collect
                                  -				window[ jsonp ] = undefined;
                                  -
                                  -				try {
                                  -					delete window[ jsonp ];
                                  -				} catch(e) {}
                                  -
                                  -				if ( head ) {
                                  -					head.removeChild( script );
                                  -				}
                                  -			};
                                  -		}
                                  -
                                  -		if ( s.dataType === "script" && s.cache === null ) {
                                  -			s.cache = false;
                                  -		}
                                  -
                                  -		if ( s.cache === false && type === "GET" ) {
                                  -			var ts = now();
                                  -
                                  -			// try replacing _= if it is there
                                  -			var ret = s.url.replace(rts, "$1_=" + ts + "$2");
                                  -
                                  -			// if nothing was replaced, add timestamp to the end
                                  -			s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
                                  -		}
                                  -
                                  -		// If data is available, append data to url for get requests
                                  -		if ( s.data && type === "GET" ) {
                                  -			s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
                                  -		}
                                  -
                                  -		// Watch for a new set of requests
                                  -		if ( s.global && ! jQuery.active++ ) {
                                  -			jQuery.event.trigger( "ajaxStart" );
                                  -		}
                                  -
                                  -		// Matches an absolute URL, and saves the domain
                                  -		var parts = rurl.exec( s.url ),
                                  -			remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
                                  -
                                  -		// If we're requesting a remote document
                                  -		// and trying to load JSON or Script with a GET
                                  -		if ( s.dataType === "script" && type === "GET" && remote ) {
                                  -			var head = document.getElementsByTagName("head")[0] || document.documentElement;
                                  -			var script = document.createElement("script");
                                  -			script.src = s.url;
                                  -			if ( s.scriptCharset ) {
                                  -				script.charset = s.scriptCharset;
                                  -			}
                                  -
                                  -			// Handle Script loading
                                  -			if ( !jsonp ) {
                                  -				var done = false;
                                  -
                                  -				// Attach handlers for all browsers
                                  -				script.onload = script.onreadystatechange = function() {
                                  -					if ( !done && (!this.readyState ||
                                  -							this.readyState === "loaded" || this.readyState === "complete") ) {
                                  -						done = true;
                                  -						success();
                                  -						complete();
                                  -
                                  -						// Handle memory leak in IE
                                  -						script.onload = script.onreadystatechange = null;
                                  -						if ( head && script.parentNode ) {
                                  -							head.removeChild( script );
                                  -						}
                                  -					}
                                  -				};
                                  -			}
                                  -
                                  -			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
                                  -			// This arises when a base node is used (#2709 and #4378).
                                  -			head.insertBefore( script, head.firstChild );
                                  -
                                  -			// We handle everything using the script element injection
                                  -			return undefined;
                                  -		}
                                  -
                                  -		var requestDone = false;
                                  -
                                  -		// Create the request object
                                  -		var xhr = s.xhr();
                                  -
                                  -		if ( !xhr ) {
                                  -			return;
                                  -		}
                                  -
                                  -		// Open the socket
                                  -		// Passing null username, generates a login popup on Opera (#2865)
                                  -		if ( s.username ) {
                                  -			xhr.open(type, s.url, s.async, s.username, s.password);
                                  -		} else {
                                  -			xhr.open(type, s.url, s.async);
                                  -		}
                                  -
                                  -		// Need an extra try/catch for cross domain requests in Firefox 3
                                  -		try {
                                  -			// Set the correct header, if data is being sent
                                  -			if ( s.data || origSettings && origSettings.contentType ) {
                                  -				xhr.setRequestHeader("Content-Type", s.contentType);
                                  -			}
                                  -
                                  -			// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
                                  -			if ( s.ifModified ) {
                                  -				if ( jQuery.lastModified[s.url] ) {
                                  -					xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
                                  -				}
                                  -
                                  -				if ( jQuery.etag[s.url] ) {
                                  -					xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
                                  -				}
                                  -			}
                                  -
                                  -			// Set header so the called script knows that it's an XMLHttpRequest
                                  -			// Only send the header if it's not a remote XHR
                                  -			if ( !remote ) {
                                  -				xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -			}
                                  -
                                  -			// Set the Accepts header for the server, depending on the dataType
                                  -			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
                                  -				s.accepts[ s.dataType ] + ", */*" :
                                  -				s.accepts._default );
                                  -		} catch(e) {}
                                  -
                                  -		// Allow custom headers/mimetypes and early abort
                                  -		if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
                                  -			// Handle the global AJAX counter
                                  -			if ( s.global && ! --jQuery.active ) {
                                  -				jQuery.event.trigger( "ajaxStop" );
                                  -			}
                                  -
                                  -			// close opended socket
                                  -			xhr.abort();
                                  -			return false;
                                  -		}
                                  -
                                  -		if ( s.global ) {
                                  -			trigger("ajaxSend", [xhr, s]);
                                  -		}
                                  -
                                  -		// Wait for a response to come back
                                  -		var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
                                  -			// The request was aborted
                                  -			if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
                                  -				// Opera doesn't call onreadystatechange before this point
                                  -				// so we simulate the call
                                  -				if ( !requestDone ) {
                                  -					complete();
                                  -				}
                                  -
                                  -				requestDone = true;
                                  -				if ( xhr ) {
                                  -					xhr.onreadystatechange = jQuery.noop;
                                  -				}
                                  -
                                  -			// The transfer is complete and the data is available, or the request timed out
                                  -			} else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
                                  -				requestDone = true;
                                  -				xhr.onreadystatechange = jQuery.noop;
                                  -
                                  -				status = isTimeout === "timeout" ?
                                  -					"timeout" :
                                  -					!jQuery.httpSuccess( xhr ) ?
                                  -						"error" :
                                  -						s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
                                  -							"notmodified" :
                                  -							"success";
                                  -
                                  -				var errMsg;
                                  -
                                  -				if ( status === "success" ) {
                                  -					// Watch for, and catch, XML document parse errors
                                  -					try {
                                  -						// process the data (runs the xml through httpData regardless of callback)
                                  -						data = jQuery.httpData( xhr, s.dataType, s );
                                  -					} catch(err) {
                                  -						status = "parsererror";
                                  -						errMsg = err;
                                  -					}
                                  -				}
                                  -
                                  -				// Make sure that the request was successful or notmodified
                                  -				if ( status === "success" || status === "notmodified" ) {
                                  -					// JSONP handles its own success callback
                                  -					if ( !jsonp ) {
                                  -						success();
                                  -					}
                                  -				} else {
                                  -					jQuery.handleError(s, xhr, status, errMsg);
                                  -				}
                                  -
                                  -				// Fire the complete handlers
                                  -				complete();
                                  -
                                  -				if ( isTimeout === "timeout" ) {
                                  -					xhr.abort();
                                  -				}
                                  -
                                  -				// Stop memory leaks
                                  -				if ( s.async ) {
                                  -					xhr = null;
                                  -				}
                                  -			}
                                  -		};
                                  -
                                  -		// Override the abort handler, if we can (IE doesn't allow it, but that's OK)
                                  -		// Opera doesn't fire onreadystatechange at all on abort
                                  -		try {
                                  -			var oldAbort = xhr.abort;
                                  -			xhr.abort = function() {
                                  -				if ( xhr ) {
                                  -					oldAbort.call( xhr );
                                  -				}
                                  -
                                  -				onreadystatechange( "abort" );
                                  -			};
                                  -		} catch(e) { }
                                  -
                                  -		// Timeout checker
                                  -		if ( s.async && s.timeout > 0 ) {
                                  -			setTimeout(function() {
                                  -				// Check to see if the request is still happening
                                  -				if ( xhr && !requestDone ) {
                                  -					onreadystatechange( "timeout" );
                                  -				}
                                  -			}, s.timeout);
                                  -		}
                                  -
                                  -		// Send the data
                                  -		try {
                                  -			xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
                                  -		} catch(e) {
                                  -			jQuery.handleError(s, xhr, null, e);
                                  -			// Fire the complete handlers
                                  -			complete();
                                  -		}
                                  -
                                  -		// firefox 1.5 doesn't fire statechange for sync requests
                                  -		if ( !s.async ) {
                                  -			onreadystatechange();
                                  -		}
                                  -
                                  -		function success() {
                                  -			// If a local callback was specified, fire it and pass it the data
                                  -			if ( s.success ) {
                                  -				s.success.call( callbackContext, data, status, xhr );
                                  -			}
                                  -
                                  -			// Fire the global callback
                                  -			if ( s.global ) {
                                  -				trigger( "ajaxSuccess", [xhr, s] );
                                  -			}
                                  -		}
                                  -
                                  -		function complete() {
                                  -			// Process result
                                  -			if ( s.complete ) {
                                  -				s.complete.call( callbackContext, xhr, status);
                                  -			}
                                  -
                                  -			// The request was completed
                                  -			if ( s.global ) {
                                  -				trigger( "ajaxComplete", [xhr, s] );
                                  -			}
                                  -
                                  -			// Handle the global AJAX counter
                                  -			if ( s.global && ! --jQuery.active ) {
                                  -				jQuery.event.trigger( "ajaxStop" );
                                  -			}
                                  -		}
                                  -		
                                  -		function trigger(type, args) {
                                  -			(s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
                                  -		}
                                  -
                                  -		// return XMLHttpRequest to allow aborting the request etc.
                                  -		return xhr;
                                  -	},
                                  -
                                  -	handleError: function( s, xhr, status, e ) {
                                  -		// If a local callback was specified, fire it
                                  -		if ( s.error ) {
                                  -			s.error.call( s.context || s, xhr, status, e );
                                  -		}
                                  -
                                  -		// Fire the global callback
                                  -		if ( s.global ) {
                                  -			(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
                                  -		}
                                  -	},
                                  -
                                  -	// Counter for holding the number of active queries
                                  -	active: 0,
                                  -
                                  -	// Determines if an XMLHttpRequest was successful or not
                                  -	httpSuccess: function( xhr ) {
                                  -		try {
                                  -			// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
                                  -			return !xhr.status && location.protocol === "file:" ||
                                  -				// Opera returns 0 when status is 304
                                  -				( xhr.status >= 200 && xhr.status < 300 ) ||
                                  -				xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
                                  -		} catch(e) {}
                                  -
                                  -		return false;
                                  -	},
                                  -
                                  -	// Determines if an XMLHttpRequest returns NotModified
                                  -	httpNotModified: function( xhr, url ) {
                                  -		var lastModified = xhr.getResponseHeader("Last-Modified"),
                                  -			etag = xhr.getResponseHeader("Etag");
                                  -
                                  -		if ( lastModified ) {
                                  -			jQuery.lastModified[url] = lastModified;
                                  -		}
                                  -
                                  -		if ( etag ) {
                                  -			jQuery.etag[url] = etag;
                                  -		}
                                  -
                                  -		// Opera returns 0 when status is 304
                                  -		return xhr.status === 304 || xhr.status === 0;
                                  -	},
                                  -
                                  -	httpData: function( xhr, type, s ) {
                                  -		var ct = xhr.getResponseHeader("content-type") || "",
                                  -			xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
                                  -			data = xml ? xhr.responseXML : xhr.responseText;
                                  -
                                  -		if ( xml && data.documentElement.nodeName === "parsererror" ) {
                                  -			jQuery.error( "parsererror" );
                                  -		}
                                  -
                                  -		// Allow a pre-filtering function to sanitize the response
                                  -		// s is checked to keep backwards compatibility
                                  -		if ( s && s.dataFilter ) {
                                  -			data = s.dataFilter( data, type );
                                  -		}
                                  -
                                  -		// The filter can actually parse the response
                                  -		if ( typeof data === "string" ) {
                                  -			// Get the JavaScript object, if JSON is used.
                                  -			if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
                                  -				data = jQuery.parseJSON( data );
                                  -
                                  -			// If the type is "script", eval it in global context
                                  -			} else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
                                  -				jQuery.globalEval( data );
                                  -			}
                                  -		}
                                  -
                                  -		return data;
                                  -	},
                                  -
                                  -	// Serialize an array of form elements or a set of
                                  -	// key/values into a query string
                                  -	param: function( a, traditional ) {
                                  -		var s = [];
                                  -		
                                  -		// Set traditional to true for jQuery <= 1.3.2 behavior.
                                  -		if ( traditional === undefined ) {
                                  -			traditional = jQuery.ajaxSettings.traditional;
                                  -		}
                                  -		
                                  -		// If an array was passed in, assume that it is an array of form elements.
                                  -		if ( jQuery.isArray(a) || a.jquery ) {
                                  -			// Serialize the form elements
                                  -			jQuery.each( a, function() {
                                  -				add( this.name, this.value );
                                  -			});
                                  -			
                                  -		} else {
                                  -			// If traditional, encode the "old" way (the way 1.3.2 or older
                                  -			// did it), otherwise encode params recursively.
                                  -			for ( var prefix in a ) {
                                  -				buildParams( prefix, a[prefix] );
                                  -			}
                                  -		}
                                  -
                                  -		// Return the resulting serialization
                                  -		return s.join("&").replace(r20, "+");
                                  -
                                  -		function buildParams( prefix, obj ) {
                                  -			if ( jQuery.isArray(obj) ) {
                                  -				// Serialize array item.
                                  -				jQuery.each( obj, function( i, v ) {
                                  -					if ( traditional || /\[\]$/.test( prefix ) ) {
                                  -						// Treat each array item as a scalar.
                                  -						add( prefix, v );
                                  -					} else {
                                  -						// If array item is non-scalar (array or object), encode its
                                  -						// numeric index to resolve deserialization ambiguity issues.
                                  -						// Note that rack (as of 1.0.0) can't currently deserialize
                                  -						// nested arrays properly, and attempting to do so may cause
                                  -						// a server error. Possible fixes are to modify rack's
                                  -						// deserialization algorithm or to provide an option or flag
                                  -						// to force array serialization to be shallow.
                                  -						buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
                                  -					}
                                  -				});
                                  -					
                                  -			} else if ( !traditional && obj != null && typeof obj === "object" ) {
                                  -				// Serialize object item.
                                  -				jQuery.each( obj, function( k, v ) {
                                  -					buildParams( prefix + "[" + k + "]", v );
                                  -				});
                                  -					
                                  -			} else {
                                  -				// Serialize scalar item.
                                  -				add( prefix, obj );
                                  -			}
                                  -		}
                                  -
                                  -		function add( key, value ) {
                                  -			// If value is a function, invoke it and return its value
                                  -			value = jQuery.isFunction(value) ? value() : value;
                                  -			s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
                                  -		}
                                  -	}
                                  -});
                                  -var elemdisplay = {},
                                  -	rfxtypes = /toggle|show|hide/,
                                  -	rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
                                  -	timerId,
                                  -	fxAttrs = [
                                  -		// height animations
                                  -		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
                                  -		// width animations
                                  -		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
                                  -		// opacity animations
                                  -		[ "opacity" ]
                                  -	];
                                  -
                                  -jQuery.fn.extend({
                                  -	show: function( speed, callback ) {
                                  -		if ( speed || speed === 0) {
                                  -			return this.animate( genFx("show", 3), speed, callback);
                                  -
                                  -		} else {
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				var old = jQuery.data(this[i], "olddisplay");
                                  -
                                  -				this[i].style.display = old || "";
                                  -
                                  -				if ( jQuery.css(this[i], "display") === "none" ) {
                                  -					var nodeName = this[i].nodeName, display;
                                  -
                                  -					if ( elemdisplay[ nodeName ] ) {
                                  -						display = elemdisplay[ nodeName ];
                                  -
                                  -					} else {
                                  -						var elem = jQuery("<" + nodeName + " />").appendTo("body");
                                  -
                                  -						display = elem.css("display");
                                  -
                                  -						if ( display === "none" ) {
                                  -							display = "block";
                                  -						}
                                  -
                                  -						elem.remove();
                                  -
                                  -						elemdisplay[ nodeName ] = display;
                                  -					}
                                  -
                                  -					jQuery.data(this[i], "olddisplay", display);
                                  -				}
                                  -			}
                                  -
                                  -			// Set the display of the elements in a second loop
                                  -			// to avoid the constant reflow
                                  -			for ( var j = 0, k = this.length; j < k; j++ ) {
                                  -				this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
                                  -			}
                                  -
                                  -			return this;
                                  -		}
                                  -	},
                                  -
                                  -	hide: function( speed, callback ) {
                                  -		if ( speed || speed === 0 ) {
                                  -			return this.animate( genFx("hide", 3), speed, callback);
                                  -
                                  -		} else {
                                  -			for ( var i = 0, l = this.length; i < l; i++ ) {
                                  -				var old = jQuery.data(this[i], "olddisplay");
                                  -				if ( !old && old !== "none" ) {
                                  -					jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
                                  -				}
                                  -			}
                                  -
                                  -			// Set the display of the elements in a second loop
                                  -			// to avoid the constant reflow
                                  -			for ( var j = 0, k = this.length; j < k; j++ ) {
                                  -				this[j].style.display = "none";
                                  -			}
                                  -
                                  -			return this;
                                  -		}
                                  -	},
                                  -
                                  -	// Save the old toggle function
                                  -	_toggle: jQuery.fn.toggle,
                                  -
                                  -	toggle: function( fn, fn2 ) {
                                  -		var bool = typeof fn === "boolean";
                                  -
                                  -		if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
                                  -			this._toggle.apply( this, arguments );
                                  -
                                  -		} else if ( fn == null || bool ) {
                                  -			this.each(function() {
                                  -				var state = bool ? fn : jQuery(this).is(":hidden");
                                  -				jQuery(this)[ state ? "show" : "hide" ]();
                                  -			});
                                  -
                                  -		} else {
                                  -			this.animate(genFx("toggle", 3), fn, fn2);
                                  -		}
                                  -
                                  -		return this;
                                  -	},
                                  -
                                  -	fadeTo: function( speed, to, callback ) {
                                  -		return this.filter(":hidden").css("opacity", 0).show().end()
                                  -					.animate({opacity: to}, speed, callback);
                                  -	},
                                  -
                                  -	animate: function( prop, speed, easing, callback ) {
                                  -		var optall = jQuery.speed(speed, easing, callback);
                                  -
                                  -		if ( jQuery.isEmptyObject( prop ) ) {
                                  -			return this.each( optall.complete );
                                  -		}
                                  -
                                  -		return this[ optall.queue === false ? "each" : "queue" ](function() {
                                  -			var opt = jQuery.extend({}, optall), p,
                                  -				hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
                                  -				self = this;
                                  -
                                  -			for ( p in prop ) {
                                  -				var name = p.replace(rdashAlpha, fcamelCase);
                                  -
                                  -				if ( p !== name ) {
                                  -					prop[ name ] = prop[ p ];
                                  -					delete prop[ p ];
                                  -					p = name;
                                  -				}
                                  -
                                  -				if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
                                  -					return opt.complete.call(this);
                                  -				}
                                  -
                                  -				if ( ( p === "height" || p === "width" ) && this.style ) {
                                  -					// Store display property
                                  -					opt.display = jQuery.css(this, "display");
                                  -
                                  -					// Make sure that nothing sneaks out
                                  -					opt.overflow = this.style.overflow;
                                  -				}
                                  -
                                  -				if ( jQuery.isArray( prop[p] ) ) {
                                  -					// Create (if needed) and add to specialEasing
                                  -					(opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
                                  -					prop[p] = prop[p][0];
                                  -				}
                                  -			}
                                  -
                                  -			if ( opt.overflow != null ) {
                                  -				this.style.overflow = "hidden";
                                  -			}
                                  -
                                  -			opt.curAnim = jQuery.extend({}, prop);
                                  -
                                  -			jQuery.each( prop, function( name, val ) {
                                  -				var e = new jQuery.fx( self, opt, name );
                                  -
                                  -				if ( rfxtypes.test(val) ) {
                                  -					e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
                                  -
                                  -				} else {
                                  -					var parts = rfxnum.exec(val),
                                  -						start = e.cur(true) || 0;
                                  -
                                  -					if ( parts ) {
                                  -						var end = parseFloat( parts[2] ),
                                  -							unit = parts[3] || "px";
                                  -
                                  -						// We need to compute starting value
                                  -						if ( unit !== "px" ) {
                                  -							self.style[ name ] = (end || 1) + unit;
                                  -							start = ((end || 1) / e.cur(true)) * start;
                                  -							self.style[ name ] = start + unit;
                                  -						}
                                  -
                                  -						// If a +=/-= token was provided, we're doing a relative animation
                                  -						if ( parts[1] ) {
                                  -							end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
                                  -						}
                                  -
                                  -						e.custom( start, end, unit );
                                  -
                                  -					} else {
                                  -						e.custom( start, val, "" );
                                  -					}
                                  -				}
                                  -			});
                                  -
                                  -			// For JS strict compliance
                                  -			return true;
                                  -		});
                                  -	},
                                  -
                                  -	stop: function( clearQueue, gotoEnd ) {
                                  -		var timers = jQuery.timers;
                                  -
                                  -		if ( clearQueue ) {
                                  -			this.queue([]);
                                  -		}
                                  -
                                  -		this.each(function() {
                                  -			// go in reverse order so anything added to the queue during the loop is ignored
                                  -			for ( var i = timers.length - 1; i >= 0; i-- ) {
                                  -				if ( timers[i].elem === this ) {
                                  -					if (gotoEnd) {
                                  -						// force the next step to be the last
                                  -						timers[i](true);
                                  -					}
                                  -
                                  -					timers.splice(i, 1);
                                  -				}
                                  -			}
                                  -		});
                                  -
                                  -		// start the next in the queue if the last step wasn't forced
                                  -		if ( !gotoEnd ) {
                                  -			this.dequeue();
                                  -		}
                                  -
                                  -		return this;
                                  -	}
                                  -
                                  -});
                                  -
                                  -// Generate shortcuts for custom animations
                                  -jQuery.each({
                                  -	slideDown: genFx("show", 1),
                                  -	slideUp: genFx("hide", 1),
                                  -	slideToggle: genFx("toggle", 1),
                                  -	fadeIn: { opacity: "show" },
                                  -	fadeOut: { opacity: "hide" }
                                  -}, function( name, props ) {
                                  -	jQuery.fn[ name ] = function( speed, callback ) {
                                  -		return this.animate( props, speed, callback );
                                  -	};
                                  -});
                                  -
                                  -jQuery.extend({
                                  -	speed: function( speed, easing, fn ) {
                                  -		var opt = speed && typeof speed === "object" ? speed : {
                                  -			complete: fn || !fn && easing ||
                                  -				jQuery.isFunction( speed ) && speed,
                                  -			duration: speed,
                                  -			easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
                                  -		};
                                  -
                                  -		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
                                  -			jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
                                  -
                                  -		// Queueing
                                  -		opt.old = opt.complete;
                                  -		opt.complete = function() {
                                  -			if ( opt.queue !== false ) {
                                  -				jQuery(this).dequeue();
                                  -			}
                                  -			if ( jQuery.isFunction( opt.old ) ) {
                                  -				opt.old.call( this );
                                  -			}
                                  -		};
                                  -
                                  -		return opt;
                                  -	},
                                  -
                                  -	easing: {
                                  -		linear: function( p, n, firstNum, diff ) {
                                  -			return firstNum + diff * p;
                                  -		},
                                  -		swing: function( p, n, firstNum, diff ) {
                                  -			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
                                  -		}
                                  -	},
                                  -
                                  -	timers: [],
                                  -
                                  -	fx: function( elem, options, prop ) {
                                  -		this.options = options;
                                  -		this.elem = elem;
                                  -		this.prop = prop;
                                  -
                                  -		if ( !options.orig ) {
                                  -			options.orig = {};
                                  -		}
                                  -	}
                                  -
                                  -});
                                  -
                                  -jQuery.fx.prototype = {
                                  -	// Simple function for setting a style value
                                  -	update: function() {
                                  -		if ( this.options.step ) {
                                  -			this.options.step.call( this.elem, this.now, this );
                                  -		}
                                  -
                                  -		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
                                  -
                                  -		// Set display property to block for height/width animations
                                  -		if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
                                  -			this.elem.style.display = "block";
                                  -		}
                                  -	},
                                  -
                                  -	// Get the current size
                                  -	cur: function( force ) {
                                  -		if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
                                  -			return this.elem[ this.prop ];
                                  -		}
                                  -
                                  -		var r = parseFloat(jQuery.css(this.elem, this.prop, force));
                                  -		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
                                  -	},
                                  -
                                  -	// Start an animation from one number to another
                                  -	custom: function( from, to, unit ) {
                                  -		this.startTime = now();
                                  -		this.start = from;
                                  -		this.end = to;
                                  -		this.unit = unit || this.unit || "px";
                                  -		this.now = this.start;
                                  -		this.pos = this.state = 0;
                                  -
                                  -		var self = this;
                                  -		function t( gotoEnd ) {
                                  -			return self.step(gotoEnd);
                                  -		}
                                  -
                                  -		t.elem = this.elem;
                                  -
                                  -		if ( t() && jQuery.timers.push(t) && !timerId ) {
                                  -			timerId = setInterval(jQuery.fx.tick, 13);
                                  -		}
                                  -	},
                                  -
                                  -	// Simple 'show' function
                                  -	show: function() {
                                  -		// Remember where we started, so that we can go back to it later
                                  -		this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
                                  -		this.options.show = true;
                                  -
                                  -		// Begin the animation
                                  -		// Make sure that we start at a small width/height to avoid any
                                  -		// flash of content
                                  -		this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
                                  -
                                  -		// Start by showing the element
                                  -		jQuery( this.elem ).show();
                                  -	},
                                  -
                                  -	// Simple 'hide' function
                                  -	hide: function() {
                                  -		// Remember where we started, so that we can go back to it later
                                  -		this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
                                  -		this.options.hide = true;
                                  -
                                  -		// Begin the animation
                                  -		this.custom(this.cur(), 0);
                                  -	},
                                  -
                                  -	// Each step of an animation
                                  -	step: function( gotoEnd ) {
                                  -		var t = now(), done = true;
                                  -
                                  -		if ( gotoEnd || t >= this.options.duration + this.startTime ) {
                                  -			this.now = this.end;
                                  -			this.pos = this.state = 1;
                                  -			this.update();
                                  -
                                  -			this.options.curAnim[ this.prop ] = true;
                                  -
                                  -			for ( var i in this.options.curAnim ) {
                                  -				if ( this.options.curAnim[i] !== true ) {
                                  -					done = false;
                                  -				}
                                  -			}
                                  -
                                  -			if ( done ) {
                                  -				if ( this.options.display != null ) {
                                  -					// Reset the overflow
                                  -					this.elem.style.overflow = this.options.overflow;
                                  -
                                  -					// Reset the display
                                  -					var old = jQuery.data(this.elem, "olddisplay");
                                  -					this.elem.style.display = old ? old : this.options.display;
                                  -
                                  -					if ( jQuery.css(this.elem, "display") === "none" ) {
                                  -						this.elem.style.display = "block";
                                  -					}
                                  -				}
                                  -
                                  -				// Hide the element if the "hide" operation was done
                                  -				if ( this.options.hide ) {
                                  -					jQuery(this.elem).hide();
                                  -				}
                                  -
                                  -				// Reset the properties, if the item has been hidden or shown
                                  -				if ( this.options.hide || this.options.show ) {
                                  -					for ( var p in this.options.curAnim ) {
                                  -						jQuery.style(this.elem, p, this.options.orig[p]);
                                  -					}
                                  -				}
                                  -
                                  -				// Execute the complete function
                                  -				this.options.complete.call( this.elem );
                                  -			}
                                  -
                                  -			return false;
                                  -
                                  -		} else {
                                  -			var n = t - this.startTime;
                                  -			this.state = n / this.options.duration;
                                  -
                                  -			// Perform the easing function, defaults to swing
                                  -			var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
                                  -			var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
                                  -			this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
                                  -			this.now = this.start + ((this.end - this.start) * this.pos);
                                  -
                                  -			// Perform the next step of the animation
                                  -			this.update();
                                  -		}
                                  -
                                  -		return true;
                                  -	}
                                  -};
                                  -
                                  -jQuery.extend( jQuery.fx, {
                                  -	tick: function() {
                                  -		var timers = jQuery.timers;
                                  -
                                  -		for ( var i = 0; i < timers.length; i++ ) {
                                  -			if ( !timers[i]() ) {
                                  -				timers.splice(i--, 1);
                                  -			}
                                  -		}
                                  -
                                  -		if ( !timers.length ) {
                                  -			jQuery.fx.stop();
                                  -		}
                                  -	},
                                  -		
                                  -	stop: function() {
                                  -		clearInterval( timerId );
                                  -		timerId = null;
                                  -	},
                                  -	
                                  -	speeds: {
                                  -		slow: 600,
                                  - 		fast: 200,
                                  - 		// Default speed
                                  - 		_default: 400
                                  -	},
                                  -
                                  -	step: {
                                  -		opacity: function( fx ) {
                                  -			jQuery.style(fx.elem, "opacity", fx.now);
                                  -		},
                                  -
                                  -		_default: function( fx ) {
                                  -			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
                                  -				fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
                                  -			} else {
                                  -				fx.elem[ fx.prop ] = fx.now;
                                  -			}
                                  -		}
                                  -	}
                                  -});
                                  -
                                  -if ( jQuery.expr && jQuery.expr.filters ) {
                                  -	jQuery.expr.filters.animated = function( elem ) {
                                  -		return jQuery.grep(jQuery.timers, function( fn ) {
                                  -			return elem === fn.elem;
                                  -		}).length;
                                  -	};
                                  -}
                                  -
                                  -function genFx( type, num ) {
                                  -	var obj = {};
                                  -
                                  -	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
                                  -		obj[ this ] = type;
                                  -	});
                                  -
                                  -	return obj;
                                  -}
                                  -if ( "getBoundingClientRect" in document.documentElement ) {
                                  -	jQuery.fn.offset = function( options ) {
                                  -		var elem = this[0];
                                  -
                                  -		if ( options ) { 
                                  -			return this.each(function( i ) {
                                  -				jQuery.offset.setOffset( this, options, i );
                                  -			});
                                  -		}
                                  -
                                  -		if ( !elem || !elem.ownerDocument ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		if ( elem === elem.ownerDocument.body ) {
                                  -			return jQuery.offset.bodyOffset( elem );
                                  -		}
                                  -
                                  -		var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
                                  -			clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
                                  -			top  = box.top  + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop ) - clientTop,
                                  -			left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
                                  -
                                  -		return { top: top, left: left };
                                  -	};
                                  -
                                  -} else {
                                  -	jQuery.fn.offset = function( options ) {
                                  -		var elem = this[0];
                                  -
                                  -		if ( options ) { 
                                  -			return this.each(function( i ) {
                                  -				jQuery.offset.setOffset( this, options, i );
                                  -			});
                                  -		}
                                  -
                                  -		if ( !elem || !elem.ownerDocument ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		if ( elem === elem.ownerDocument.body ) {
                                  -			return jQuery.offset.bodyOffset( elem );
                                  -		}
                                  -
                                  -		jQuery.offset.initialize();
                                  -
                                  -		var offsetParent = elem.offsetParent, prevOffsetParent = elem,
                                  -			doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
                                  -			body = doc.body, defaultView = doc.defaultView,
                                  -			prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
                                  -			top = elem.offsetTop, left = elem.offsetLeft;
                                  -
                                  -		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
                                  -			if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
                                  -				break;
                                  -			}
                                  -
                                  -			computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
                                  -			top  -= elem.scrollTop;
                                  -			left -= elem.scrollLeft;
                                  -
                                  -			if ( elem === offsetParent ) {
                                  -				top  += elem.offsetTop;
                                  -				left += elem.offsetLeft;
                                  -
                                  -				if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
                                  -					top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
                                  -					left += parseFloat( computedStyle.borderLeftWidth ) || 0;
                                  -				}
                                  -
                                  -				prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
                                  -			}
                                  -
                                  -			if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
                                  -				top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
                                  -				left += parseFloat( computedStyle.borderLeftWidth ) || 0;
                                  -			}
                                  -
                                  -			prevComputedStyle = computedStyle;
                                  -		}
                                  -
                                  -		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
                                  -			top  += body.offsetTop;
                                  -			left += body.offsetLeft;
                                  -		}
                                  -
                                  -		if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
                                  -			top  += Math.max( docElem.scrollTop, body.scrollTop );
                                  -			left += Math.max( docElem.scrollLeft, body.scrollLeft );
                                  -		}
                                  -
                                  -		return { top: top, left: left };
                                  -	};
                                  -}
                                  -
                                  -jQuery.offset = {
                                  -	initialize: function() {
                                  -		var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
                                  -			html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
                                  -
                                  -		jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
                                  -
                                  -		container.innerHTML = html;
                                  -		body.insertBefore( container, body.firstChild );
                                  -		innerDiv = container.firstChild;
                                  -		checkDiv = innerDiv.firstChild;
                                  -		td = innerDiv.nextSibling.firstChild.firstChild;
                                  -
                                  -		this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
                                  -		this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
                                  -
                                  -		checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
                                  -		// safari subtracts parent border width here which is 5px
                                  -		this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
                                  -		checkDiv.style.position = checkDiv.style.top = "";
                                  -
                                  -		innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
                                  -		this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
                                  -
                                  -		this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
                                  -
                                  -		body.removeChild( container );
                                  -		body = container = innerDiv = checkDiv = table = td = null;
                                  -		jQuery.offset.initialize = jQuery.noop;
                                  -	},
                                  -
                                  -	bodyOffset: function( body ) {
                                  -		var top = body.offsetTop, left = body.offsetLeft;
                                  -
                                  -		jQuery.offset.initialize();
                                  -
                                  -		if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
                                  -			top  += parseFloat( jQuery.curCSS(body, "marginTop",  true) ) || 0;
                                  -			left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
                                  -		}
                                  -
                                  -		return { top: top, left: left };
                                  -	},
                                  -	
                                  -	setOffset: function( elem, options, i ) {
                                  -		// set position first, in-case top/left are set even on static elem
                                  -		if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
                                  -			elem.style.position = "relative";
                                  -		}
                                  -		var curElem   = jQuery( elem ),
                                  -			curOffset = curElem.offset(),
                                  -			curTop    = parseInt( jQuery.curCSS( elem, "top",  true ), 10 ) || 0,
                                  -			curLeft   = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
                                  -
                                  -		if ( jQuery.isFunction( options ) ) {
                                  -			options = options.call( elem, i, curOffset );
                                  -		}
                                  -
                                  -		var props = {
                                  -			top:  (options.top  - curOffset.top)  + curTop,
                                  -			left: (options.left - curOffset.left) + curLeft
                                  -		};
                                  -		
                                  -		if ( "using" in options ) {
                                  -			options.using.call( elem, props );
                                  -		} else {
                                  -			curElem.css( props );
                                  -		}
                                  -	}
                                  -};
                                  -
                                  -
                                  -jQuery.fn.extend({
                                  -	position: function() {
                                  -		if ( !this[0] ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		var elem = this[0],
                                  -
                                  -		// Get *real* offsetParent
                                  -		offsetParent = this.offsetParent(),
                                  -
                                  -		// Get correct offsets
                                  -		offset       = this.offset(),
                                  -		parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
                                  -
                                  -		// Subtract element margins
                                  -		// note: when an element has margin: auto the offsetLeft and marginLeft
                                  -		// are the same in Safari causing offset.left to incorrectly be 0
                                  -		offset.top  -= parseFloat( jQuery.curCSS(elem, "marginTop",  true) ) || 0;
                                  -		offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
                                  -
                                  -		// Add offsetParent borders
                                  -		parentOffset.top  += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth",  true) ) || 0;
                                  -		parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
                                  -
                                  -		// Subtract the two offsets
                                  -		return {
                                  -			top:  offset.top  - parentOffset.top,
                                  -			left: offset.left - parentOffset.left
                                  -		};
                                  -	},
                                  -
                                  -	offsetParent: function() {
                                  -		return this.map(function() {
                                  -			var offsetParent = this.offsetParent || document.body;
                                  -			while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
                                  -				offsetParent = offsetParent.offsetParent;
                                  -			}
                                  -			return offsetParent;
                                  -		});
                                  -	}
                                  -});
                                  -
                                  -
                                  -// Create scrollLeft and scrollTop methods
                                  -jQuery.each( ["Left", "Top"], function( i, name ) {
                                  -	var method = "scroll" + name;
                                  -
                                  -	jQuery.fn[ method ] = function(val) {
                                  -		var elem = this[0], win;
                                  -		
                                  -		if ( !elem ) {
                                  -			return null;
                                  -		}
                                  -
                                  -		if ( val !== undefined ) {
                                  -			// Set the scroll offset
                                  -			return this.each(function() {
                                  -				win = getWindow( this );
                                  -
                                  -				if ( win ) {
                                  -					win.scrollTo(
                                  -						!i ? val : jQuery(win).scrollLeft(),
                                  -						 i ? val : jQuery(win).scrollTop()
                                  -					);
                                  -
                                  -				} else {
                                  -					this[ method ] = val;
                                  -				}
                                  -			});
                                  -		} else {
                                  -			win = getWindow( elem );
                                  -
                                  -			// Return the scroll offset
                                  -			return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
                                  -				jQuery.support.boxModel && win.document.documentElement[ method ] ||
                                  -					win.document.body[ method ] :
                                  -				elem[ method ];
                                  -		}
                                  -	};
                                  -});
                                  -
                                  -function getWindow( elem ) {
                                  -	return ("scrollTo" in elem && elem.document) ?
                                  -		elem :
                                  -		elem.nodeType === 9 ?
                                  -			elem.defaultView || elem.parentWindow :
                                  -			false;
                                  -}
                                  -// Create innerHeight, innerWidth, outerHeight and outerWidth methods
                                  -jQuery.each([ "Height", "Width" ], function( i, name ) {
                                  -
                                  -	var type = name.toLowerCase();
                                  -
                                  -	// innerHeight and innerWidth
                                  -	jQuery.fn["inner" + name] = function() {
                                  -		return this[0] ?
                                  -			jQuery.css( this[0], type, false, "padding" ) :
                                  -			null;
                                  -	};
                                  -
                                  -	// outerHeight and outerWidth
                                  -	jQuery.fn["outer" + name] = function( margin ) {
                                  -		return this[0] ?
                                  -			jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
                                  -			null;
                                  -	};
                                  -
                                  -	jQuery.fn[ type ] = function( size ) {
                                  -		// Get window width or height
                                  -		var elem = this[0];
                                  -		if ( !elem ) {
                                  -			return size == null ? null : this;
                                  -		}
                                  -		
                                  -		if ( jQuery.isFunction( size ) ) {
                                  -			return this.each(function( i ) {
                                  -				var self = jQuery( this );
                                  -				self[ type ]( size.call( this, i, self[ type ]() ) );
                                  -			});
                                  -		}
                                  -
                                  -		return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
                                  -			// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
                                  -			elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
                                  -			elem.document.body[ "client" + name ] :
                                  -
                                  -			// Get document width or height
                                  -			(elem.nodeType === 9) ? // is it a document
                                  -				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
                                  -				Math.max(
                                  -					elem.documentElement["client" + name],
                                  -					elem.body["scroll" + name], elem.documentElement["scroll" + name],
                                  -					elem.body["offset" + name], elem.documentElement["offset" + name]
                                  -				) :
                                  -
                                  -				// Get or set width or height on the element
                                  -				size === undefined ?
                                  -					// Get width or height on the element
                                  -					jQuery.css( elem, type ) :
                                  -
                                  -					// Set the width or height on the element (default to pixels if value is unitless)
                                  -					this.css( type, typeof size === "string" ? size : size + "px" );
                                  -	};
                                  -
                                  -});
                                  -// Expose jQuery to the global object
                                  -window.jQuery = window.$ = jQuery;
                                  -
                                  -})(window);
                                  diff --git a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.html b/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.html
                                  deleted file mode 100644
                                  index df62579b..00000000
                                  --- a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.html
                                  +++ /dev/null
                                  @@ -1,27 +0,0 @@
                                  -<html>
                                  -    <head>
                                  -        <!-- Change the location of the Firebug Lite source below if needed -->
                                  -        <script type="text/javascript" src="../../../content/firebug-lite-dev.js#startOpened"></script>
                                  -        
                                  -        <script type="text/javascript" src="jquery.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            $(function () {
                                  -                var success = false;
                                  -            
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    success: function() {
                                  -                        success = true;
                                  -                    },
                                  -                    complete: function() {
                                  -                        alert(success); //false
                                  -                    }
                                  -                });
                                  -            });
                                  -        
                                  -        </script>
                                  -    </head>
                                  -    <body>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.txt b/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.txt
                                  deleted file mode 100644
                                  index 232b7072..00000000
                                  --- a/branches/flexBox/sandbox/issues/3504-jQuery-XHR/test.txt
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -testing...
                                  -testing...
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/measure.js b/branches/flexBox/sandbox/measure.js
                                  deleted file mode 100644
                                  index 9b6ddd17..00000000
                                  --- a/branches/flexBox/sandbox/measure.js
                                  +++ /dev/null
                                  @@ -1,342 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function() { 
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// ************************************************************************************************
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -var isOpera   = /opera/.test(userAgent);
                                  -var isSafari  = /webkit/.test(userAgent);
                                  -var isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -var browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = isOpera || isSafari && browserVersion < "532";
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Measure
                                  -
                                  -function Measure(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -};
                                  -
                                  -Measure.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Measure methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measure Methods
                                  -    
                                  -    getMeasure: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasureInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasure(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -        {
                                  -            return value;
                                  -        }
                                  -        else
                                  -        {
                                  -            return getPixelValue(el.parentNode, value + unit);
                                  -        }
                                  -    },
                                  -
                                  -    getMeasureBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasureInPixels(el, propName);
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasureInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    } 
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -function getCSSAutoMarginBox(el)
                                  -{
                                  -    /*
                                  -    // the following elements will fail
                                  -    if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -        return {top:0, left:0, bottom:0, right:0};
                                  -        /**/
                                  -
                                  -    // the following elements are safe
                                  -    // which other elements may have auto margin?
                                  -    if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -        return {top:0, left:0, bottom:0, right:0};
                                  -        /**/
                                  -
                                  -    var offsetTop = 0;
                                  -    if (false && isIEStantandMode)
                                  -    {
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        offsetTop = scrollSize.height;
                                  -    }
                                  -    
                                  -    var box = this.document.createElement("div");
                                  -    //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -    box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -    
                                  -    var clone = el.cloneNode(false);
                                  -    var text = this.document.createTextNode("&nbsp;");
                                  -    clone.appendChild(text);
                                  -    
                                  -    box.appendChild(clone);
                                  -
                                  -    this.document.body.appendChild(box);
                                  -    
                                  -    var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -    var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -    
                                  -    var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -    var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -    
                                  -    this.document.body.removeChild(box);
                                  -    
                                  -    return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getStyle = isIE ? function(el, name)
                                  -{
                                  -    return el.currentStyle[name] || el.style[name] || undefined;
                                  -}
                                  -: function(el, name)
                                  -{
                                  -    return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -        || el.style[name] || undefined;
                                  -};
                                  -
                                  -// From Dean Edwards:
                                  -// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value)
                                  -{
                                  -    if (!element || !element.runtimeStyle) return 0;
                                  -    
                                  -    if (PIXEL.test(value))
                                  -        return parseInt(value);
                                  -    
                                  -    var style = element.style.left;
                                  -    var runtimeStyle = element.runtimeStyle.left;
                                  -    
                                  -    element.runtimeStyle.left = element.currentStyle.left;
                                  -    element.style.left = value || 0;
                                  -    
                                  -    value = element.style.pixelLeft;
                                  -    
                                  -    element.style.left = style;
                                  -    element.runtimeStyle.left = runtimeStyle;
                                  -    
                                  -    return value;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -window.Measure = Measure;
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/plugin/index.html b/branches/flexBox/sandbox/plugin/index.html
                                  deleted file mode 100644
                                  index 945d94aa..00000000
                                  --- a/branches/flexBox/sandbox/plugin/index.html
                                  +++ /dev/null
                                  @@ -1,83 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="plugin.js"></script>
                                  -
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Hello World</h2>
                                  -      <ul>
                                  -        <li><a href="#">One</a></li>
                                  -        <li><a href="#">Two</a></li>
                                  -        <li><a href="#">Three</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Just a test note
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/plugin/plugin.js b/branches/flexBox/sandbox/plugin/plugin.js
                                  deleted file mode 100644
                                  index 3dcfc4c5..00000000
                                  --- a/branches/flexBox/sandbox/plugin/plugin.js
                                  +++ /dev/null
                                  @@ -1,64 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -Firebug.extend(function(FBL) { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Plugin Module
                                  -
                                  -Firebug.Plugin = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Plugin") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        alert("clear button clicked");
                                  -        this.getPanel().panelNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Plugin Panel
                                  -
                                  -function PluginPanel(){};
                                  -
                                  -PluginPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Plugin",
                                  -    title: "Plugin",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear Panel",            
                                  -            owner: Firebug.Plugin,
                                  -            onClick: Firebug.Plugin.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        this.panelNode.innerHTML = "Hello World!";
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(PluginPanel);
                                  -Firebug.registerModule(Firebug.Plugin);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/relative.html b/branches/flexBox/sandbox/relative.html
                                  deleted file mode 100644
                                  index 44f81886..00000000
                                  --- a/branches/flexBox/sandbox/relative.html
                                  +++ /dev/null
                                  @@ -1,123 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.5 Testing</title>
                                  -
                                  -<script type="text/javascript" src="../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="measure.js"></script>
                                  -<script type="text/javascript">
                                  -
                                  -window.measure = new Measure(window);
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -window.getPixelValue = function getPixelValue(element, value) {
                                  -    if (PIXEL.test(value)) return parseInt(value);
                                  -    var style = element.style.left;
                                  -    var runtimeStyle = element.runtimeStyle.left;
                                  -    element.runtimeStyle.left = element.currentStyle.left;
                                  -    element.style.left = value || 0;
                                  -    value = element.style.pixelLeft;
                                  -    element.style.left = style;
                                  -    element.runtimeStyle.left = runtimeStyle;
                                  -    return value;
                                  -    };
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  /*margin: 0;/**/
                                  -  font-size: 10px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -  border: 1em solid red;
                                  -  font-size: 5em;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  /*border: 10px solid #efd;*/
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -#lorem {
                                  -  /*display: none;/**/
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>Firebug Lite 1.5 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/injected.chrome.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div id="lorem" class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/event/cache.html b/branches/flexBox/sandbox/sandbox/event/cache.html
                                  deleted file mode 100644
                                  index 6f33e0cc..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/event/cache.html
                                  +++ /dev/null
                                  @@ -1,48 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.4 Cache Testing</title>
                                  -
                                  -<script type="text/javascript" src="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript">
                                  -
                                  -function clone()
                                  -{
                                  -    var div = document.getElementsByTagName("div")[1];
                                  -    var clone = div.cloneNode(true)
                                  -    
                                  -    clone.innerHTML += "<span>, I'm a <strong>clone</strong>!</span>"
                                  -    div.parentNode.insertBefore(clone, div);
                                  -    
                                  -};
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -    <div>
                                  -        <h1>Issue: Dynamic Cache problem with cloneNode in IE</h1>
                                  -        
                                  -        <input type="button" value="clone" onclick="clone();">
                                  -        <div><strong>Hello</strong> <i>World</i></div>
                                  -        
                                  -        <ol>
                                  -            <li>Open this page in IE</li>
                                  -            <li>Inspect the "Hello" element</li>
                                  -            <li>Click the "clone" button</li>
                                  -            <li>You'll see a clone of the "Hello World" message with the additional ", I'm a clone!"</li>
                                  -            <li>Inspect the <strong>"clone"</strong> element</li>
                                  -            <li>Firebug Lite should update the HTML tree and select the proper 
                                  -            cloned "Hello". If Firebug Lite does not show or select the proper
                                  -            element, it means that this test has failed.</li>
                                  -        </ol>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/event/test.html b/branches/flexBox/sandbox/sandbox/event/test.html
                                  deleted file mode 100644
                                  index 08531499..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/event/test.html
                                  +++ /dev/null
                                  @@ -1,107 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.4 Event Testing</title>
                                  -
                                  -<script type="text/javascript" src="../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript">
                                  -
                                  -// http://therealcrisp.xs4all.nl/upload/addEvent_dean.html
                                  -
                                  -// written by Dean Edwards, 2005
                                  -// with input from Tino Zijdel - crisp@xs4all.nl
                                  -// http://dean.edwards.name/weblog/2005/10/add-event/
                                  -function addEvent(element, type, handler)
                                  -{
                                  -	if (element.addEventListener)
                                  -		element.addEventListener(type, handler, false);
                                  -	else
                                  -	{
                                  -		if (!handler.$$guid) handler.$$guid = addEvent.guid++;
                                  -		if (!element.events) element.events = {};
                                  -		var handlers = element.events[type];
                                  -		if (!handlers)
                                  -		{
                                  -			handlers = element.events[type] = {};
                                  -			if (element['on' + type]) handlers[0] = element['on' + type];
                                  -			element['on' + type] = handleEvent;
                                  -		}
                                  -	
                                  -		handlers[handler.$$guid] = handler;
                                  -	}
                                  -}
                                  -addEvent.guid = 1;
                                  -
                                  -function removeEvent(element, type, handler)
                                  -{
                                  -	if (element.removeEventListener)
                                  -		element.removeEventListener(type, handler, false);
                                  -	else if (element.events && element.events[type] && handler.$$guid)
                                  -		delete element.events[type][handler.$$guid];
                                  -}
                                  -
                                  -function handleEvent(event)
                                  -{
                                  -	event = event || fixEvent(window.event);
                                  -	var returnValue = true;
                                  -	var handlers = this.events[event.type];
                                  -
                                  -	for (var i in handlers)
                                  -	{
                                  -		if (!Object.prototype[i])
                                  -		{
                                  -			this.$$handler = handlers[i];
                                  -			if (this.$$handler(event) === false) returnValue = false;
                                  -		}
                                  -	}
                                  -
                                  -	if (this.$$handler) this.$$handler = null;
                                  -
                                  -	return returnValue;
                                  -}
                                  -
                                  -function fixEvent(event)
                                  -{
                                  -	event.preventDefault = fixEvent.preventDefault;
                                  -	event.stopPropagation = fixEvent.stopPropagation;
                                  -	return event;
                                  -}
                                  -fixEvent.preventDefault = function()
                                  -{
                                  -	this.returnValue = false;
                                  -}
                                  -fixEvent.stopPropagation = function()
                                  -{
                                  -	this.cancelBubble = true;
                                  -}
                                  -
                                  -// This little snippet fixes the problem that the onload attribute on the body-element will overwrite
                                  -// previous attached events on the window object for the onload event
                                  -if (!window.addEventListener)
                                  -{
                                  -	document.onreadystatechange = function()
                                  -	{
                                  -		if (window.onload && window.onload != handleEvent)
                                  -		{
                                  -			addEvent(window, 'load', window.onload);
                                  -			window.onload = handleEvent;
                                  -		}
                                  -	}
                                  -}
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.4 Event Testing</h1>
                                  -  </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype1.html b/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype1.html
                                  deleted file mode 100644
                                  index 80316d56..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype1.html
                                  +++ /dev/null
                                  @@ -1,598 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #1</title>
                                  -<script type="text/javascript">
                                  -// **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************hi
                                  -
                                  -/**
                                  - * TODO: allow multiple sourceBoxes instances
                                  - *      - use CSS classes instead of ID
                                  - *      - link the node and metadata via UID
                                  - *
                                  - * DONE: calculate automatically the character width and height
                                  - * DONE: cut and paste friendly (line numbers ouside the line divs)
                                  - */
                                  -
                                  -// *************************************************************************************************
                                  -// Options
                                  -
                                  -var viewFirebugSource = true;
                                  -var sourceLocation = "../../../build/firebug-lite-beta.js";
                                  -var sourceText;
                                  -
                                  -// If "viewFirebugSource" is true and "numberOfLinesRendered" is zero it will show
                                  -// all lines of the "sourceLocation" file. If "viewFirebugSource" is true and
                                  -// "numberOfLinesRendered" is greater than zero it will show the specified
                                  -// number of lines of the "sourceLocation" file. If "viewFirebugSource" is false
                                  -// it will show "numberOfLinesRendered" lines of this file itself repeatedly
                                  -var numberOfLinesRendered = 0;
                                  -var buffer = 24; // number of rendered lines after/before the viewable lines
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var isIE = document.all; // yeah browser detection sucks, but IE sucks way more...
                                  -
                                  -var lineNumberHorizontalPadding;
                                  -var charHeight;
                                  -var charWidth;
                                  -
                                  -var spacerHeight = numberOfLinesRendered * charHeight;
                                  -var spacerWidth;
                                  -var lineNumberWidth;
                                  -
                                  -var sourceBox;
                                  -var sourceSpacer;
                                  -var sourceBuffer;
                                  -var lineCache;
                                  -var maximumLineLength;
                                  -
                                  -var viewRange;
                                  -var sourceBoxData;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var loading = document.getElementById("loading");
                                  -        loading.innerHTML = "requesting file...";
                                  -        loading.style.display = "block";
                                  -
                                  -        setTimeout(function(){
                                  -            var xhr = getXHRObject();
                                  -            xhr.open("get", sourceLocation, true);
                                  -            xhr.onreadystatechange = function()
                                  -            {
                                  -                if (xhr.readyState == 4 && xhr.status == 200)
                                  -                {
                                  -                    runButton.disabled = false;
                                  -                    loading.style.display = "none";
                                  -                    loading.innerHTML = "";
                                  -                    sourceText = xhr.responseText;
                                  -                }
                                  -            };
                                  -            xhr.send();
                                  -        },100);
                                  -    }
                                  -    else
                                  -    {
                                  -        runButton.disabled = false;
                                  -    }
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    sourceBox = document.getElementById("sourceBox");
                                  -    sourceSpacer = document.getElementById("sourceSpacer");
                                  -    sourceBuffer = document.getElementById("sourceBuffer");
                                  -
                                  -    calculateSizes();
                                  -
                                  -    generateLines();
                                  -
                                  -    var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -
                                  -    lineNumberWidth = maximumLineNumberDigits * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    spacerWidth = maximumLineLength * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    sourceSpacer.style.borderLeftWidth = lineNumberWidth + "px";
                                  -    sourceSpacer.style.height = spacerHeight + "px";
                                  -    sourceSpacer.style.width = spacerWidth + "px";
                                  -
                                  -    // TODO: resize also the sourceBuffer
                                  -    sourceBuffer.style.width = spacerWidth + "px";
                                  -    //sourceBuffer.style.paddingLeft = lineNumberWidth + "px";
                                  -
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -
                                  -    sourceBoxData =
                                  -    {
                                  -        viewport: sourceBuffer,
                                  -        firstRenderedLine: firstLine,
                                  -        lastRenderedLine: -1
                                  -    };
                                  -
                                  -    sourceBox.onscroll = onScroll;
                                  -
                                  -    onScroll();
                                  -}
                                  -
                                  -var calculateSizes = function()
                                  -{
                                  -    var doc = sourceBuffer.ownerDocument;
                                  -    var lineNode = doc.createElement("div");
                                  -    var charNode;
                                  -    var lineNumberNode;
                                  -
                                  -    lineNode.style.visibility = "hidden";
                                  -    lineNode.className = "sourceRow";
                                  -
                                  -    lineNode.innerHTML = "<div class='sourceLine'><span>0</span></div>";
                                  -
                                  -    sourceBuffer.appendChild(lineNode);
                                  -
                                  -    lineNumberNode = lineNode.firstChild;
                                  -    charNode = lineNumberNode.firstChild;
                                  -    charWidth = charNode.offsetWidth;
                                  -    charHeight = charNode.offsetHeight;
                                  -
                                  -    lineNumberHorizontalPadding = lineNumberNode.offsetWidth - charWidth;
                                  -
                                  -    sourceBuffer.removeChild(lineNode);
                                  -}
                                  -
                                  -var generateLines = function(source)
                                  -{
                                  -    lineCache = [];
                                  -    maximumLineLength = 0;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var html = sourceText;
                                  -    }
                                  -    else
                                  -    {
                                  -        var html = document.documentElement.innerHTML;
                                  -    }
                                  -
                                  -    html = html.replace(/\r\n/g, "\n");
                                  -    var lines = ("\n"+html).split("\n");
                                  -
                                  -    var numberOfLinesAvailable = lines.length;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        numberOfLinesRendered = numberOfLinesRendered || numberOfLinesAvailable-1;
                                  -        spacerHeight = numberOfLinesRendered * charHeight;
                                  -    }
                                  -
                                  -    var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -
                                  -    for (var i = 0; i <= numberOfLinesRendered; i++)
                                  -    {
                                  -        var lineDigits = (""+i).length;
                                  -        var numberOfSpaces = maximumLineNumberDigits - lineDigits;
                                  -        var padding = new Array(numberOfSpaces+1).join(" ");
                                  -
                                  -        var strNumber = padding + i;
                                  -
                                  -        var line = lines[i % numberOfLinesAvailable];
                                  -
                                  -        var sourceRowText = line ? line.replace(/</g, "&lt;").replace(/>/g, "&gt;") : "<br/>";
                                  -        var lineHTML = '<div class="sourceRow" id="L'+i+'"><pre class="sourceLine">'+strNumber+'</pre><pre class="sourceRowText">'+sourceRowText+'</pre></div>';
                                  -
                                  -        if (line.length > maximumLineLength)
                                  -            maximumLineLength = line.length;
                                  -
                                  -        lineCache.push(lineHTML);
                                  -    }
                                  -
                                  -    return lineCache.join("");
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -var lastScroll = 0;
                                  -var scrollTimer = 0;
                                  -var delay = 300;
                                  -
                                  -var handleScroll = function()
                                  -{
                                  -    if (new Date().getTime() - lastScroll > delay)
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        onScroll();
                                  -        lastScroll = new Date().getTime();
                                  -    }
                                  -    else
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        scrollTimer = setTimeout(onScroll, delay);
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -var onScroll = function(event)
                                  -{
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var viewportHeight = sourceBox.offsetHeight;
                                  -
                                  -    var numberOfVisibleLines = Math.floor(viewportHeight/charHeight);
                                  -
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -    var lastLine = firstLine + numberOfVisibleLines - 1;
                                  -
                                  -    firstLine = Math.max(firstLine - buffer, 1);
                                  -    lastLine = Math.min(lastLine + buffer, numberOfLinesRendered);
                                  -
                                  -    viewRange =
                                  -    {
                                  -        firstLine: firstLine,
                                  -        lastLine: lastLine
                                  -    };
                                  -
                                  -    var bufferHit = insertedLinesOverlapCache(sourceBoxData, viewRange);
                                  -
                                  -    if (bufferHit)
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = Math.min(firstLine, sourceBoxData.firstRenderedLine);
                                  -        sourceBoxData.lastRenderedLine = Math.max(lastLine, sourceBoxData.lastRenderedLine);
                                  -    }
                                  -    else
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = firstLine;
                                  -        sourceBoxData.lastRenderedLine = lastLine;
                                  -    }
                                  -
                                  -    var offset = (sourceBoxData.firstRenderedLine-1) * charHeight;
                                  -    sourceBuffer.style.top = offset + "px";
                                  -}
                                  -
                                  -
                                  -var getSourceLineHTML = function(line)
                                  -{
                                  -    return lineCache[line];
                                  -};
                                  -
                                  -var getLineNode = function(no)
                                  -{
                                  -    return document.getElementById("L"+no);
                                  -};
                                  -
                                  -var getLineNumberNode = function(no)
                                  -{
                                  -    return document.getElementById("LNO"+no);
                                  -};
                                  -
                                  -var insertedLinesOverlapCache = function(sourceBoxData, viewRange)
                                  -{
                                  -    var bufferHit = false;
                                  -
                                  -    var linesBefore = []; // lines to be prepended
                                  -    var linesAfter = []; // lines to be appended
                                  -
                                  -
                                  -    if ( sourceBoxData.lastRenderedLine > 0 && // there is something in the buffer
                                  -            ( viewRange.lastLine < sourceBoxData.firstRenderedLine || // whole range before the buffer
                                  -              viewRange.firstLine > sourceBoxData.lastRenderedLine)) // whole range after the buffer
                                  -    {
                                  -        // if we are here there is no intersection between the range and the buffer,
                                  -        // so the buffer must be cleared
                                  -        if (sourceBuffer.parentNode)
                                  -        {
                                  -            ////var timeStart = new Date().getTime();
                                  -
                                  -            // fast way to clear the buffer. first, we create a non-recursive copy of the buffer
                                  -            var newSourceLineBuffer = sourceBuffer.cloneNode(false);
                                  -            // then replace the old buffer with the new one, removing all buffered lines at once
                                  -            sourceBuffer.parentNode.replaceChild(newSourceLineBuffer, sourceBuffer);
                                  -            // update the references
                                  -            sourceBuffer = newSourceLineBuffer;
                                  -            // TODO: xxxpedro remove this extra reference
                                  -            sourceBoxData.viewport = newSourceLineBuffer;
                                  -
                                  -            ////var totalTime = new Date().getTime() - timeStart;
                                  -            ////if (totalTime > 0)
                                  -            ////alert(totalTime);
                                  -
                                  -            // IE will loose the focus of the element when replacing the childs,
                                  -            // canceling the keyboard navigability. To work around this problem,
                                  -            // we're forcing the scrollable element (sourceBox) to be focused.
                                  -            // Focusing the element will cause an undesirable border to be rendered
                                  -            // around the element in other browsers, so we're only doing it for IE.
                                  -            if (isIE)
                                  -            {
                                  -                setTimeout(function(){
                                  -                    sourceBox.focus()
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -    else
                                  -        // there is an intersection between the range and the buffer
                                  -        bufferHit = true;
                                  -
                                  -    for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
                                  -    {
                                  -        // if the line is inside the buffer
                                  -        if (line >= sourceBoxData.firstRenderedLine && line <= sourceBoxData.lastRenderedLine )
                                  -        {
                                  -            // skip, because it is already rendered
                                  -            continue;
                                  -        }
                                  -
                                  -        // if we are here, the line is not buffered therefore it must be rendered
                                  -
                                  -        // get the pre-rendered line and line number markup
                                  -        var lineHTML = lineCache[line];
                                  -
                                  -        if (line < sourceBoxData.firstRenderedLine)
                                  -        {
                                  -            // if we are before the buffer, queue lines to be prepended
                                  -            linesBefore.push(lineHTML);
                                  -        }
                                  -        else
                                  -        {
                                  -            // if we are after the buffer, queue lines to be appended
                                  -            linesAfter.push(lineHTML);
                                  -        }
                                  -    }
                                  -
                                  -    // there are lines to be prepended
                                  -    if (linesBefore.length > 0)
                                  -    {
                                  -        var topCacheLine = getLineNode(sourceBoxData.firstRenderedLine);
                                  -
                                  -        // prepend all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesBefore.join(""), topCacheLine);
                                  -    }
                                  -
                                  -    // there are lines to be appended
                                  -    if (linesAfter.length > 0)
                                  -    {
                                  -        // append all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesAfter.join(""), null);
                                  -    }
                                  -
                                  -    /*
                                  -    if (lookForCorruption())
                                  -    {
                                  -        debugger;
                                  -    }
                                  -    /**/
                                  -
                                  -    return bufferHit;
                                  -};
                                  -
                                  -var lookForCorruption = function()
                                  -{
                                  -    var childs = sourceBuffer.childNodes;
                                  -    var length = childs.length;
                                  -    var lineNumber;
                                  -    var lastLineNumber;
                                  -    var corrupted = false;
                                  -
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        lastLineNumber = lineNumber;
                                  -
                                  -        var child = childs[i];
                                  -
                                  -        lineNumber = child.id.substr(1)-0;
                                  -
                                  -        console.log(lineNumber);
                                  -
                                  -        if (lastLineNumber && lastLineNumber != (lineNumber - 1))
                                  -        {
                                  -            corrupted = true;
                                  -            break;
                                  -        }
                                  -    }
                                  -    return corrupted;
                                  -};
                                  -
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API
                                  -var appendFragment = null;
                                  -
                                  -var appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -
                                  -    //console.log("appendInnerHTML ", !!referenceElement);
                                  -
                                  -    var doc = element.ownerDocument;
                                  -
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -
                                  -        //console.log("Appending "+fragment.childNodes.length);
                                  -
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -
                                  -        //console.log("Appending "+div.childNodes.length);
                                  -
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -
                                  -        div = null;
                                  -    }
                                  -
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#sourceBox {
                                  -    position: relative;
                                  -    width: 100%;
                                  -    height: 300px;
                                  -    overflow: auto;
                                  -
                                  -    font-family: monospace;
                                  -    font-size: 12px;
                                  -}
                                  -
                                  -#sourceBuffer {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -
                                  -.sourceRowText {
                                  -    margin: 0;
                                  -    padding: 0 0 0 70px;
                                  -}
                                  -
                                  -
                                  -.sourceLine {
                                  -    position: absolute;
                                  -    background: #eee;
                                  -
                                  -    color: #777;
                                  -
                                  -    margin: 0;
                                  -    padding: 0 4px 0 15px;
                                  -    border-right: 1px solid #ccc;
                                  -}
                                  -
                                  -lineNo-effects {
                                  -
                                  -    /*
                                  -    border-right: 2px solid #ccc;
                                  -    font-style: normal;
                                  -    padding: 2px 5px;
                                  -    color: #777;
                                  -    /**/
                                  -
                                  -    background-image: -moz-linear-gradient(right, #ddd, #bbb); /* FF3.6 */
                                  -    background-image: -webkit-gradient(linear,right top,left top,color-stop(0, #ddd),color-stop(1, #bbb)); /* Saf4+, Chrome */
                                  -            filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1'); /* IE6,IE7 */
                                  -        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1')"; /* IE8 */
                                  -
                                  -}
                                  -
                                  -
                                  -#sourceSpacer {
                                  -    position: relative;
                                  -    border-left: 1px solid #eee; /* reduces perceived flickering */
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -}
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -
                                  -  <div id="sourceBox">
                                  -      <div id="sourceBuffer">
                                  -      </div>
                                  -      <div id="sourceSpacer">
                                  -      </div>
                                  -  </div>
                                  -
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ improved sourceBox prototype #1</i>
                                  -
                                  -  <ul>
                                  -    <li>Buffered viewport (reduces flickering when scrolling to near locations)</li>
                                  -    <li>Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)</li>
                                  -    <li>Fast line insertion/deletion (documentFragment and element.replaceChild)</li>
                                  -    <li>Faster rendering</li>
                                  -    <ul>
                                  -      <li>
                                  -          Now we are repositioning/resizing elements much less frequently.
                                  -          Only the sourceBuffer needs to be positioned (there are no padding
                                  -          elements), and it needs to be repositioned only when scrolling up.
                                  -      </li>
                                  -      <li>
                                  -          Elements are resized only when the size of the viewport changes (when
                                  -          Firebug's UI is resized), but not when it is scrolling.
                                  -      </li>
                                  -      <li>
                                  -          The width of the "line number bar" (the gray stuff) is being computed
                                  -          via CSS which reduces a lot the reflow when scrolling.
                                  -      </li>
                                  -    </ul>
                                  -  </ul>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2.html b/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2.html
                                  deleted file mode 100644
                                  index 7702347f..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2.html
                                  +++ /dev/null
                                  @@ -1,655 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************hi
                                  -
                                  -/**
                                  - * TODO: allow multiple sourceBoxes instances
                                  - *      - use CSS classes instead of ID
                                  - *      - link the node and metadata via UID
                                  - *
                                  - * DONE: calculate automatically the character width and height
                                  - * DONE: cut and paste friendly (line numbers ouside the line divs)
                                  - */
                                  -
                                  -// *************************************************************************************************
                                  -// Options
                                  -
                                  -var viewFirebugSource = true;
                                  -var sourceLocation = "../../../build/firebug-lite-beta.js";
                                  -var sourceText;
                                  -
                                  -// If "viewFirebugSource" is true and "numberOfLinesRendered" is zero it will show
                                  -// all lines of the "sourceLocation" file. If "viewFirebugSource" is true and
                                  -// "numberOfLinesRendered" is greater than zero it will show the specified
                                  -// number of lines of the "sourceLocation" file. If "viewFirebugSource" is false
                                  -// it will show "numberOfLinesRendered" lines of this file itself repeatedly
                                  -var numberOfLinesRendered = 0;
                                  -var buffer = 24; // number of rendered lines after/before the viewable lines
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var isIE = document.all; // yeah browser detection sucks, but IE sucks way more...
                                  -
                                  -var lineNumberHorizontalPadding;
                                  -var charHeight;
                                  -var charWidth;
                                  -
                                  -var spacerHeight = numberOfLinesRendered * charHeight;
                                  -var spacerWidth;
                                  -var lineNumberWidth;
                                  -
                                  -var sourceBox;
                                  -var sourceSpacer;
                                  -var sourceBuffer;
                                  -var sourceLineBuffer;
                                  -var sourceLineNoBuffer;
                                  -var lineCache;
                                  -var lineNumberCache;
                                  -var maximumLineLength;
                                  -
                                  -var viewRange;
                                  -var sourceBoxData;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var loading = document.getElementById("loading");
                                  -        loading.innerHTML = "requesting file...";
                                  -        loading.style.display = "block";
                                  -
                                  -        setTimeout(function(){
                                  -            var xhr = getXHRObject();
                                  -            xhr.open("get", sourceLocation, true);
                                  -            xhr.onreadystatechange = function()
                                  -            {
                                  -                if (xhr.readyState == 4 && xhr.status == 200)
                                  -                {
                                  -                    runButton.disabled = false;
                                  -                    loading.style.display = "none";
                                  -                    loading.innerHTML = "";
                                  -                    sourceText = xhr.responseText;
                                  -                }
                                  -            };
                                  -            xhr.send();
                                  -        },100);
                                  -    }
                                  -    else
                                  -    {
                                  -        runButton.disabled = false;
                                  -    }
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    sourceBox = document.getElementById("sourceBox");
                                  -    sourceSpacer = document.getElementById("sourceSpacer");
                                  -    sourceBuffer = document.getElementById("sourceBuffer");
                                  -
                                  -    sourceLineBuffer = document.getElementById("sourceLineBuffer");
                                  -    sourceLineNoBuffer = document.getElementById("sourceLineNoBuffer");
                                  -
                                  -    calculateSizes();
                                  -
                                  -    generateLines();
                                  -
                                  -    var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -
                                  -    lineNumberWidth = maximumLineNumberDigits * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    spacerWidth = maximumLineLength * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    sourceSpacer.style.borderLeftWidth = lineNumberWidth + "px";
                                  -    sourceSpacer.style.height = spacerHeight + "px";
                                  -    sourceSpacer.style.width = spacerWidth + "px";
                                  -
                                  -    // TODO: resize also the sourceLineBuffer
                                  -    sourceLineBuffer.style.width = spacerWidth + "px";
                                  -    sourceLineBuffer.style.paddingLeft = lineNumberWidth + "px";
                                  -
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -
                                  -    sourceBoxData =
                                  -    {
                                  -        viewport: sourceLineBuffer,
                                  -        firstRenderedLine: firstLine,
                                  -        lastRenderedLine: -1
                                  -    };
                                  -
                                  -    sourceBox.onscroll = onScroll;
                                  -
                                  -    onScroll();
                                  -}
                                  -
                                  -var calculateSizes = function()
                                  -{
                                  -    var doc = sourceLineBuffer.ownerDocument;
                                  -    var lineNumberNode = doc.createElement("div");
                                  -    var charNode;
                                  -
                                  -    lineNumberNode.style.visibility = "hidden";
                                  -    lineNumberNode.className = "sourceLine";
                                  -
                                  -    lineNumberNode.innerHTML = "<span>0</span>";
                                  -
                                  -    sourceLineNoBuffer.appendChild(lineNumberNode);
                                  -
                                  -    charNode = lineNumberNode.firstChild;
                                  -    charWidth = charNode.offsetWidth;
                                  -    charHeight = charNode.offsetHeight;
                                  -
                                  -    lineNumberHorizontalPadding = lineNumberNode.offsetWidth - charWidth;
                                  -
                                  -    sourceLineNoBuffer.removeChild(lineNumberNode);
                                  -}
                                  -
                                  -var generateLines = function()
                                  -{
                                  -    var generateTime = new Date().getTime();
                                  -    
                                  -    lineCache = [];
                                  -    lineNumberCache = [];
                                  -    maximumLineLength = 0;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var html = sourceText;
                                  -    }
                                  -    else
                                  -    {
                                  -        var html = document.documentElement.innerHTML;
                                  -    }
                                  -
                                  -    html = html.replace(/\r\n/g, "\n");
                                  -    var lines = ("\n"+html).split("\n");
                                  -
                                  -    var numberOfLinesAvailable = lines.length;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        numberOfLinesRendered = numberOfLinesRendered || numberOfLinesAvailable-1;
                                  -        spacerHeight = numberOfLinesRendered * charHeight;
                                  -    }
                                  -
                                  -    var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -
                                  -    for (var i = 0; i <= numberOfLinesRendered; i++)
                                  -    {
                                  -        var lineDigits = (""+i).length;
                                  -        var numberOfSpaces = maximumLineNumberDigits - lineDigits;
                                  -        var padding = new Array(numberOfSpaces+1).join(" ");
                                  -
                                  -        var strNumber = padding + i;
                                  -
                                  -        var line = lines[i % numberOfLinesAvailable];
                                  -
                                  -        var sourceRowText = line ?
                                  -                line.replace(/</g, "&lt;").replace(/>/g, "&gt;") :
                                  -                // if it is an empty line we must add a <br/> tag so the line break will be
                                  -                // properly copied to clipboard (cut-and-paste friendly). Also the line tag
                                  -                // needs to contain a node inside of it otherwise it will be hidden.
                                  -                "<br/>";
                                  -
                                  -        // we need to use <pre> tag to make sure the spacing will work in all browsers
                                  -        // (remember that the lines will be rendered using element.innerHTML).
                                  -        var lineHTML = '<pre class="sourceRow" id="L'+i+'">'+sourceRowText+'</pre>';
                                  -        var lineNumberHTML = '<pre class="sourceLine" id="LNO'+i+'">'+strNumber+'</pre>';
                                  -
                                  -        if (line.length > maximumLineLength)
                                  -            maximumLineLength = line.length;
                                  -
                                  -        lineCache.push(lineHTML);
                                  -        lineNumberCache.push(lineNumberHTML);
                                  -    }
                                  -
                                  -    window.console && console.log(new Date().getTime()-generateTime + " ms to generate all lines.");
                                  -    //return lineCache.join("");
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -var lastScroll = 0;
                                  -var scrollTimer = 0;
                                  -var delay = 300;
                                  -
                                  -var handleScroll = function()
                                  -{
                                  -    if (new Date().getTime() - lastScroll > delay)
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        onScroll();
                                  -        lastScroll = new Date().getTime();
                                  -    }
                                  -    else
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        scrollTimer = setTimeout(onScroll, delay);
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -var onScroll = function(event)
                                  -{
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var viewportHeight = sourceBox.offsetHeight;
                                  -
                                  -    var numberOfVisibleLines = Math.floor(viewportHeight/charHeight);
                                  -
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -    var lastLine = firstLine + numberOfVisibleLines - 1;
                                  -
                                  -    firstLine = Math.max(firstLine - buffer, 1);
                                  -    lastLine = Math.min(lastLine + buffer, numberOfLinesRendered);
                                  -
                                  -    viewRange =
                                  -    {
                                  -        firstLine: firstLine,
                                  -        lastLine: lastLine
                                  -    };
                                  -
                                  -    var bufferHit = insertedLinesOverlapCache(sourceBoxData, viewRange);
                                  -
                                  -    if (bufferHit)
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = Math.min(firstLine, sourceBoxData.firstRenderedLine);
                                  -        sourceBoxData.lastRenderedLine = Math.max(lastLine, sourceBoxData.lastRenderedLine);
                                  -    }
                                  -    else
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = firstLine;
                                  -        sourceBoxData.lastRenderedLine = lastLine;
                                  -    }
                                  -
                                  -    var offset = (sourceBoxData.firstRenderedLine-1) * charHeight;
                                  -    sourceBuffer.style.top = offset + "px";
                                  -}
                                  -
                                  -
                                  -var getSourceLineHTML = function(line)
                                  -{
                                  -    return lineCache[line];
                                  -};
                                  -
                                  -var getLineNode = function(no)
                                  -{
                                  -    return document.getElementById("L"+no);
                                  -};
                                  -
                                  -var getLineNumberNode = function(no)
                                  -{
                                  -    return document.getElementById("LNO"+no);
                                  -};
                                  -
                                  -var insertedLinesOverlapCache = function(sourceBoxData, viewRange)
                                  -{
                                  -    var bufferHit = false;
                                  -
                                  -    var linesBefore = []; // lines to be prepended
                                  -    var linesAfter = []; // lines to be appended
                                  -
                                  -    var lineNumbersBefore = []; // lines to be prepended
                                  -    var lineNumbersAfter = []; // lines to be appended
                                  -
                                  -    if ( sourceBoxData.lastRenderedLine > 0 && // there is something in the buffer
                                  -            ( viewRange.lastLine < sourceBoxData.firstRenderedLine || // whole range before the buffer
                                  -              viewRange.firstLine > sourceBoxData.lastRenderedLine)) // whole range after the buffer
                                  -    {
                                  -        // if we are here there is no intersection between the range and the buffer,
                                  -        // so the buffer must be cleared
                                  -        if (sourceBuffer.parentNode)
                                  -        {
                                  -            ////var timeStart = new Date().getTime();
                                  -
                                  -            // fast way to clear the buffer. first, we create a non-recursive copy of the buffer
                                  -            var newSourceLineBuffer = sourceLineBuffer.cloneNode(false);
                                  -            var newSourceLineNoBuffer = sourceLineNoBuffer.cloneNode(false);
                                  -            // then replace the old buffer with the new one, removing all buffered lines at once
                                  -            sourceLineBuffer.parentNode.replaceChild(newSourceLineBuffer, sourceLineBuffer);
                                  -            sourceLineNoBuffer.parentNode.replaceChild(newSourceLineNoBuffer, sourceLineNoBuffer);
                                  -            // update the references
                                  -            sourceLineBuffer = newSourceLineBuffer;
                                  -            sourceLineNoBuffer = newSourceLineNoBuffer;
                                  -            // TODO: xxxpedro remove this extra reference
                                  -            sourceBoxData.viewport = newSourceLineBuffer;
                                  -            /**/
                                  -
                                  -            /*
                                  -            // fast way to clear the buffer. first, we create a non-recursive copy of the buffer
                                  -            var newSourceBuffer = sourceBuffer.cloneNode(false);
                                  -            // then we add its containers for the source lines and line numbers
                                  -            newSourceBuffer.innerHTML = '<div id="sourceLineNoBuffer"></div><pre id="sourceLineBuffer"></pre>';
                                  -            // then replace the old buffer with the new one, removing all buffered lines at once
                                  -            sourceBuffer.parentNode.replaceChild(newSourceBuffer, sourceBuffer);
                                  -
                                  -            sourceBuffer = newSourceBuffer;
                                  -
                                  -            sourceLineNoBuffer = document.getElementById("sourceLineNoBuffer");
                                  -            sourceLineBuffer = document.getElementById("sourceLineBuffer");
                                  -
                                  -            sourceBoxData.viewport = sourceLineBuffer;
                                  -
                                  -            sourceLineBuffer.style.width = spacerWidth + "px";
                                  -            sourceLineBuffer.style.paddingLeft = lineNumberWidth + "px";
                                  -            /**/
                                  -
                                  -            ////var totalTime = new Date().getTime() - timeStart;
                                  -            ////if (totalTime > 0)
                                  -            ////alert(totalTime);
                                  -
                                  -            // IE will loose the focus of the element when replacing the childs,
                                  -            // canceling the keyboard navigability. To work around this problem,
                                  -            // we're forcing the scrollable element (sourceBox) to be focused.
                                  -            // Focusing the element will cause an undesirable border to be rendered
                                  -            // around the element in other browsers, so we're only doing it for IE.
                                  -            if (isIE)
                                  -            {
                                  -                setTimeout(function(){
                                  -                    sourceBox.focus()
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -    else
                                  -        // there is an intersection between the range and the buffer
                                  -        bufferHit = true;
                                  -
                                  -    for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
                                  -    {
                                  -        // if the line is inside the buffer
                                  -        if (line >= sourceBoxData.firstRenderedLine && line <= sourceBoxData.lastRenderedLine )
                                  -        {
                                  -            // skip, because it is already rendered
                                  -            continue;
                                  -        }
                                  -
                                  -        // if we are here, the line is not buffered therefore it must be rendered
                                  -
                                  -        // get the pre-rendered line and line number markup
                                  -        var lineHTML = lineCache[line];
                                  -        var lineNumberHTML = lineNumberCache[line];
                                  -
                                  -        if (line < sourceBoxData.firstRenderedLine)
                                  -        {
                                  -            // if we are before the buffer, queue lines to be prepended
                                  -            linesBefore.push(lineHTML);
                                  -            lineNumbersBefore.push(lineNumberHTML);
                                  -        }
                                  -        else
                                  -        {
                                  -            // if we are after the buffer, queue lines to be appended
                                  -            linesAfter.push(lineHTML);
                                  -            lineNumbersAfter.push(lineNumberHTML);
                                  -        }
                                  -    }
                                  -
                                  -    // there are lines to be prepended
                                  -    if (linesBefore.length > 0)
                                  -    {
                                  -        var topCacheLine = getLineNode(sourceBoxData.firstRenderedLine);
                                  -        var topCacheLineNumber = getLineNumberNode(sourceBoxData.firstRenderedLine);
                                  -
                                  -        // prepend all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesBefore.join(""), topCacheLine);
                                  -        appendInnerHTML(sourceLineNoBuffer, lineNumbersBefore.join(""), topCacheLineNumber);
                                  -    }
                                  -
                                  -    // there are lines to be appended
                                  -    if (linesAfter.length > 0)
                                  -    {
                                  -        // append all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesAfter.join(""), null);
                                  -        appendInnerHTML(sourceLineNoBuffer, lineNumbersAfter.join(""), topCacheLineNumber);
                                  -    }
                                  -
                                  -    /*
                                  -    if (lookForCorruption())
                                  -    {
                                  -        debugger;
                                  -    }
                                  -    /**/
                                  -
                                  -    return bufferHit;
                                  -};
                                  -
                                  -var lookForCorruption = function()
                                  -{
                                  -    var childs = sourceLineBuffer.childNodes;
                                  -    var length = childs.length;
                                  -    var lineNumber;
                                  -    var lastLineNumber;
                                  -    var corrupted = false;
                                  -
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        lastLineNumber = lineNumber;
                                  -
                                  -        var child = childs[i];
                                  -
                                  -        lineNumber = child.id.substr(1)-0;
                                  -
                                  -        console.log(lineNumber);
                                  -
                                  -        if (lastLineNumber && lastLineNumber != (lineNumber - 1))
                                  -        {
                                  -            corrupted = true;
                                  -            break;
                                  -        }
                                  -    }
                                  -    return corrupted;
                                  -};
                                  -
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API
                                  -var appendFragment = null;
                                  -
                                  -var appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -
                                  -    //console.log("appendInnerHTML ", !!referenceElement);
                                  -
                                  -    var doc = element.ownerDocument;
                                  -
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -
                                  -        //console.log("Appending "+fragment.childNodes.length);
                                  -
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -
                                  -        //console.log("Appending "+div.childNodes.length);
                                  -
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -
                                  -        div = null;
                                  -    }
                                  -
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#sourceBox {
                                  -    position: relative;
                                  -    width: 100%;
                                  -    height: 300px;
                                  -    overflow: auto;
                                  -
                                  -    font-family: monospace;
                                  -    font-size: 12px;
                                  -}
                                  -
                                  -#sourceBuffer {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#sourceLineBuffer {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -}
                                  -
                                  -#sourceLineNoBuffer {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -
                                  -    background: #eee;
                                  -    -moz-user-select: none;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    padding: 0 0 0 10px;
                                  -    margin: 0;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceLine {
                                  -    color: #777;
                                  -    margin: 0;
                                  -    padding: 0 4px 0 15px;
                                  -    border-right: 1px solid #ccc;
                                  -}
                                  -
                                  -lineNo-effects {
                                  -
                                  -    /*
                                  -    border-right: 2px solid #ccc;
                                  -    font-style: normal;
                                  -    padding: 2px 5px;
                                  -    color: #777;
                                  -    /**/
                                  -
                                  -    background-image: -moz-linear-gradient(right, #ddd, #bbb); /* FF3.6 */
                                  -    background-image: -webkit-gradient(linear,right top,left top,color-stop(0, #ddd),color-stop(1, #bbb)); /* Saf4+, Chrome */
                                  -            filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1'); /* IE6,IE7 */
                                  -        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1')"; /* IE8 */
                                  -
                                  -}
                                  -
                                  -
                                  -#sourceSpacer {
                                  -    position: relative;
                                  -    border-left: 1px solid #eee; /* reduces perceived flickering */
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -}
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -
                                  -  <div id="sourceBox">
                                  -      <div id="sourceBuffer">
                                  -          <div id="sourceLineNoBuffer"></div>
                                  -          <pre id="sourceLineBuffer"></pre>
                                  -      </div>
                                  -      <div id="sourceSpacer">
                                  -      </div>
                                  -  </div>
                                  -
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ improved sourceBox prototype #2</i>
                                  -
                                  -  <ul>
                                  -    <li><u>Cut-and-paste friendly (version #2)</u></li>
                                  -    <li>Buffered viewport (reduces flickering when scrolling to near locations)</li>
                                  -    <li>Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)</li>
                                  -    <li>Fast line insertion/deletion (documentFragment and element.replaceChild)</li>
                                  -    <li>Faster rendering</li>
                                  -    <ul>
                                  -      <li>
                                  -          Now we are repositioning/resizing elements much less frequently.
                                  -          Only the sourceBuffer needs to be positioned (there are no padding
                                  -          elements), and it needs to be repositioned only when scrolling up.
                                  -      </li>
                                  -      <li>
                                  -          Elements are resized only when the size of the viewport changes (when
                                  -          Firebug's UI is resized), but not when it is scrolling.
                                  -      </li>
                                  -      <li>
                                  -          The width of the "line number bar" (the gray stuff) is being computed
                                  -          via CSS which reduces a lot the reflow when scrolling.
                                  -      </li>
                                  -    </ul>
                                  -  </ul>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2b.html b/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2b.html
                                  deleted file mode 100644
                                  index 3c9c46ee..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/fastSourceBox/prototype2b.html
                                  +++ /dev/null
                                  @@ -1,711 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2b</title>
                                  -<script type="text/javascript">
                                  -// **********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************hi
                                  -
                                  -/**
                                  - * IMPORTANT: This file is basically the same code as in prototype2.html, but with
                                  - *            more function calls to generate HTML of each line (similar to what
                                  - *            Firebug currently does) in order to test the performance impact. 
                                  - *            The generation of all lines takes ~20% time using this approach.
                                  - * 
                                  - * TODO: allow multiple sourceBoxes instances
                                  - *      - use CSS classes instead of ID
                                  - *      - link the node and metadata via UID
                                  - *
                                  - * DONE: calculate automatically the character width and height
                                  - * DONE: cut and paste friendly (line numbers ouside the line divs)
                                  - */
                                  -
                                  -// *************************************************************************************************
                                  -// Options
                                  -
                                  -var viewFirebugSource = true;
                                  -var sourceLocation = "../../../build/firebug-lite-beta.js";
                                  -var sourceText;
                                  -
                                  -// If "viewFirebugSource" is true and "numberOfLinesRendered" is zero it will show
                                  -// all lines of the "sourceLocation" file. If "viewFirebugSource" is true and
                                  -// "numberOfLinesRendered" is greater than zero it will show the specified
                                  -// number of lines of the "sourceLocation" file. If "viewFirebugSource" is false
                                  -// it will show "numberOfLinesRendered" lines of this file itself repeatedly
                                  -var numberOfLinesRendered = 0;
                                  -var buffer = 24; // number of rendered lines after/before the viewable lines
                                  -
                                  -// *************************************************************************************************
                                  -
                                  -var isIE = document.all; // yeah browser detection sucks, but IE sucks way more...
                                  -
                                  -var lineNumberHorizontalPadding;
                                  -var charHeight;
                                  -var charWidth;
                                  -
                                  -var spacerHeight = numberOfLinesRendered * charHeight;
                                  -var spacerWidth;
                                  -var lineNumberWidth;
                                  -
                                  -var sourceBox;
                                  -var sourceSpacer;
                                  -var sourceBuffer;
                                  -var sourceLineBuffer;
                                  -var sourceLineNoBuffer;
                                  -var lineCache;
                                  -var lineNumberCache;
                                  -var maximumLineLength;
                                  -
                                  -var viewRange;
                                  -var sourceBoxData;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var loading = document.getElementById("loading");
                                  -        loading.innerHTML = "requesting file...";
                                  -        loading.style.display = "block";
                                  -
                                  -        setTimeout(function(){
                                  -            var xhr = getXHRObject();
                                  -            xhr.open("get", sourceLocation, true);
                                  -            xhr.onreadystatechange = function()
                                  -            {
                                  -                if (xhr.readyState == 4 && xhr.status == 200)
                                  -                {
                                  -                    runButton.disabled = false;
                                  -                    loading.style.display = "none";
                                  -                    loading.innerHTML = "";
                                  -                    sourceText = xhr.responseText;
                                  -                }
                                  -            };
                                  -            xhr.send();
                                  -        },100);
                                  -    }
                                  -    else
                                  -    {
                                  -        runButton.disabled = false;
                                  -    }
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    sourceBox = document.getElementById("sourceBox");
                                  -    sourceSpacer = document.getElementById("sourceSpacer");
                                  -    sourceBuffer = document.getElementById("sourceBuffer");
                                  -
                                  -    sourceLineBuffer = document.getElementById("sourceLineBuffer");
                                  -    sourceLineNoBuffer = document.getElementById("sourceLineNoBuffer");
                                  -
                                  -    calculateSizes();
                                  -
                                  -    generateLines();
                                  -
                                  -    var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -
                                  -    lineNumberWidth = maximumLineNumberDigits * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    spacerWidth = maximumLineLength * charWidth + lineNumberHorizontalPadding;
                                  -
                                  -    sourceSpacer.style.borderLeftWidth = lineNumberWidth + "px";
                                  -    sourceSpacer.style.height = spacerHeight + "px";
                                  -    sourceSpacer.style.width = spacerWidth + "px";
                                  -
                                  -    // TODO: resize also the sourceLineBuffer
                                  -    sourceLineBuffer.style.width = spacerWidth + "px";
                                  -    sourceLineBuffer.style.paddingLeft = lineNumberWidth + "px";
                                  -
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -
                                  -    sourceBoxData =
                                  -    {
                                  -        viewport: sourceLineBuffer,
                                  -        firstRenderedLine: firstLine,
                                  -        lastRenderedLine: -1
                                  -    };
                                  -
                                  -    sourceBox.onscroll = onScroll;
                                  -
                                  -    onScroll();
                                  -}
                                  -
                                  -var calculateSizes = function()
                                  -{
                                  -    var doc = sourceLineBuffer.ownerDocument;
                                  -    var lineNumberNode = doc.createElement("div");
                                  -    var charNode;
                                  -
                                  -    lineNumberNode.style.visibility = "hidden";
                                  -    lineNumberNode.className = "sourceLine";
                                  -
                                  -    lineNumberNode.innerHTML = "<span>0</span>";
                                  -
                                  -    sourceLineNoBuffer.appendChild(lineNumberNode);
                                  -
                                  -    charNode = lineNumberNode.firstChild;
                                  -    charWidth = charNode.offsetWidth;
                                  -    charHeight = charNode.offsetHeight;
                                  -
                                  -    lineNumberHorizontalPadding = lineNumberNode.offsetWidth - charWidth;
                                  -
                                  -    sourceLineNoBuffer.removeChild(lineNumberNode);
                                  -}
                                  -
                                  -
                                  -var getSourceLineHTML = function(sourceBox, i)
                                  -{
                                  -    var lineHTML = getLineHTML(sourceBox, i);
                                  -    var lineId = getLineId(sourceBox, i);    // decorator lines may not have ids
                                  -
                                  -    var theHTML =
                                  -        '<pre class="sourceRow" id="L'+lineId+'">'+lineHTML+'</pre>';
                                  -    
                                  -    return theHTML;
                                  -};
                                  -
                                  -var getSourceLineNumberHTML = function(sourceBox, i)
                                  -{
                                  -    var lineNo = getUserVisibleLineNumber(sourceBox, i);
                                  -    var lineId = getLineId(sourceBox, i);    // decorator lines may not have ids
                                  -
                                  -    var maxLineNoChars = (""+numberOfLinesRendered).length;
                                  -    var lineNoText = getTextForLineNo(lineNo, maxLineNoChars);
                                  -
                                  -    var theHTML =
                                  -        '<pre class="sourceLine" id="LNO'+lineId+'">'+lineNoText+'</pre>';
                                  -
                                  -    return theHTML;
                                  -};
                                  -
                                  -var getLineHTML =  function(sourceBox, lineNo)
                                  -{
                                  -    var line = lines[lineNo];
                                  -
                                  -    var sourceRowText = line ?
                                  -            line.replace(/</g, "&lt;").replace(/>/g, "&gt;") :
                                  -            // if it is an empty line we must add a <br/> tag so the line break will be
                                  -            // properly copied to clipboard (cut-and-paste friendly). Also the line tag
                                  -            // needs to contain a node inside of it otherwise it will be hidden.
                                  -            "<br/>";
                                  -    
                                  -    return sourceRowText;
                                  -};
                                  -
                                  -var getTextForLineNo = function(lineNo, maxLineNoChars)
                                  -{
                                  -    // Make sure all line numbers are the same width (with a fixed-width font)
                                  -    var lineNoText = lineNo + "";
                                  -    while (lineNoText.length < maxLineNoChars)
                                  -        lineNoText = " " + lineNoText;
                                  -
                                  -    return lineNoText;
                                  -};
                                  -
                                  -var getUserVisibleLineNumber = function(sourceBox, lineNo)
                                  -{
                                  -    return lineNo;
                                  -};
                                  -
                                  -var getLineId = function(sourceBox, lineNo)
                                  -{
                                  -    return 'sb' + 1 + '-L' + lineNo;
                                  -};
                                  -
                                  -
                                  -var generateLines = function()
                                  -{
                                  -    var generateTime = new Date().getTime();
                                  -    
                                  -    lineCache = [];
                                  -    lineNumberCache = [];
                                  -    maximumLineLength = 0;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        var html = sourceText;
                                  -    }
                                  -    else
                                  -    {
                                  -        var html = document.documentElement.innerHTML;
                                  -    }
                                  -
                                  -    html = html.replace(/\r\n/g, "\n");
                                  -    window.lines = ("\n"+html).split("\n");
                                  -
                                  -    var numberOfLinesAvailable = lines.length;
                                  -
                                  -    if (viewFirebugSource)
                                  -    {
                                  -        numberOfLinesRendered = numberOfLinesRendered || numberOfLinesAvailable-1;
                                  -        spacerHeight = numberOfLinesRendered * charHeight;
                                  -    }
                                  -
                                  -    //var maximumLineNumberDigits = (""+numberOfLinesRendered).length;
                                  -    for (var i = 0; i <= numberOfLinesRendered; i++)
                                  -    {
                                  -        var line = lines[i % numberOfLinesAvailable];
                                  -
                                  -        // we need to use <pre> tag to make sure the spacing will work in all browsers
                                  -        // (remember that the lines will be rendered using element.innerHTML).
                                  -        var lineHTML = getSourceLineHTML(null, i);
                                  -        var lineNumberHTML = getSourceLineNumberHTML(null, i);
                                  -
                                  -        if (line.length > maximumLineLength)
                                  -            maximumLineLength = line.length;
                                  -
                                  -        lineCache.push(lineHTML);
                                  -        lineNumberCache.push(lineNumberHTML);
                                  -    }
                                  -
                                  -    window.console && console.log(new Date().getTime()-generateTime + " ms to generate all lines.");
                                  -    //return lineCache.join("");
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -var lastScroll = 0;
                                  -var scrollTimer = 0;
                                  -var delay = 300;
                                  -
                                  -var handleScroll = function()
                                  -{
                                  -    if (new Date().getTime() - lastScroll > delay)
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        onScroll();
                                  -        lastScroll = new Date().getTime();
                                  -    }
                                  -    else
                                  -    {
                                  -        if (scrollTimer)
                                  -            clearTimeout(scrollTimer);
                                  -
                                  -        scrollTimer = setTimeout(onScroll, delay);
                                  -    }
                                  -};
                                  -/**/
                                  -
                                  -var onScroll = function(event)
                                  -{
                                  -    var scrollTop = sourceBox.scrollTop;
                                  -    var viewportHeight = sourceBox.offsetHeight;
                                  -
                                  -    var numberOfVisibleLines = Math.floor(viewportHeight/charHeight);
                                  -
                                  -    var firstLine = Math.floor(scrollTop/charHeight) + 1;
                                  -    var lastLine = firstLine + numberOfVisibleLines - 1;
                                  -
                                  -    firstLine = Math.max(firstLine - buffer, 1);
                                  -    lastLine = Math.min(lastLine + buffer, numberOfLinesRendered);
                                  -
                                  -    viewRange =
                                  -    {
                                  -        firstLine: firstLine,
                                  -        lastLine: lastLine
                                  -    };
                                  -
                                  -    var bufferHit = insertedLinesOverlapCache(sourceBoxData, viewRange);
                                  -
                                  -    if (bufferHit)
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = Math.min(firstLine, sourceBoxData.firstRenderedLine);
                                  -        sourceBoxData.lastRenderedLine = Math.max(lastLine, sourceBoxData.lastRenderedLine);
                                  -    }
                                  -    else
                                  -    {
                                  -        sourceBoxData.firstRenderedLine = firstLine;
                                  -        sourceBoxData.lastRenderedLine = lastLine;
                                  -    }
                                  -
                                  -    var offset = (sourceBoxData.firstRenderedLine-1) * charHeight;
                                  -    sourceBuffer.style.top = offset + "px";
                                  -}
                                  -
                                  -
                                  -var getLineNode = function(no)
                                  -{
                                  -    return document.getElementById("L"+no);
                                  -};
                                  -
                                  -var getLineNumberNode = function(no)
                                  -{
                                  -    return document.getElementById("LNO"+no);
                                  -};
                                  -
                                  -var insertedLinesOverlapCache = function(sourceBoxData, viewRange)
                                  -{
                                  -    var bufferHit = false;
                                  -
                                  -    var linesBefore = []; // lines to be prepended
                                  -    var linesAfter = []; // lines to be appended
                                  -
                                  -    var lineNumbersBefore = []; // lines to be prepended
                                  -    var lineNumbersAfter = []; // lines to be appended
                                  -
                                  -    if ( sourceBoxData.lastRenderedLine > 0 && // there is something in the buffer
                                  -            ( viewRange.lastLine < sourceBoxData.firstRenderedLine || // whole range before the buffer
                                  -              viewRange.firstLine > sourceBoxData.lastRenderedLine)) // whole range after the buffer
                                  -    {
                                  -        // if we are here there is no intersection between the range and the buffer,
                                  -        // so the buffer must be cleared
                                  -        if (sourceBuffer.parentNode)
                                  -        {
                                  -            ////var timeStart = new Date().getTime();
                                  -
                                  -            // fast way to clear the buffer. first, we create a non-recursive copy of the buffer
                                  -            var newSourceLineBuffer = sourceLineBuffer.cloneNode(false);
                                  -            var newSourceLineNoBuffer = sourceLineNoBuffer.cloneNode(false);
                                  -            // then replace the old buffer with the new one, removing all buffered lines at once
                                  -            sourceLineBuffer.parentNode.replaceChild(newSourceLineBuffer, sourceLineBuffer);
                                  -            sourceLineNoBuffer.parentNode.replaceChild(newSourceLineNoBuffer, sourceLineNoBuffer);
                                  -            // update the references
                                  -            sourceLineBuffer = newSourceLineBuffer;
                                  -            sourceLineNoBuffer = newSourceLineNoBuffer;
                                  -            // TODO: xxxpedro remove this extra reference
                                  -            sourceBoxData.viewport = newSourceLineBuffer;
                                  -            /**/
                                  -
                                  -            /*
                                  -            // fast way to clear the buffer. first, we create a non-recursive copy of the buffer
                                  -            var newSourceBuffer = sourceBuffer.cloneNode(false);
                                  -            // then we add its containers for the source lines and line numbers
                                  -            newSourceBuffer.innerHTML = '<div id="sourceLineNoBuffer"></div><pre id="sourceLineBuffer"></pre>';
                                  -            // then replace the old buffer with the new one, removing all buffered lines at once
                                  -            sourceBuffer.parentNode.replaceChild(newSourceBuffer, sourceBuffer);
                                  -
                                  -            sourceBuffer = newSourceBuffer;
                                  -
                                  -            sourceLineNoBuffer = document.getElementById("sourceLineNoBuffer");
                                  -            sourceLineBuffer = document.getElementById("sourceLineBuffer");
                                  -
                                  -            sourceBoxData.viewport = sourceLineBuffer;
                                  -
                                  -            sourceLineBuffer.style.width = spacerWidth + "px";
                                  -            sourceLineBuffer.style.paddingLeft = lineNumberWidth + "px";
                                  -            /**/
                                  -
                                  -            ////var totalTime = new Date().getTime() - timeStart;
                                  -            ////if (totalTime > 0)
                                  -            ////alert(totalTime);
                                  -
                                  -            // IE will loose the focus of the element when replacing the childs,
                                  -            // canceling the keyboard navigability. To work around this problem,
                                  -            // we're forcing the scrollable element (sourceBox) to be focused.
                                  -            // Focusing the element will cause an undesirable border to be rendered
                                  -            // around the element in other browsers, so we're only doing it for IE.
                                  -            if (isIE)
                                  -            {
                                  -                setTimeout(function(){
                                  -                    sourceBox.focus()
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -    else
                                  -        // there is an intersection between the range and the buffer
                                  -        bufferHit = true;
                                  -
                                  -    for (var line = viewRange.firstLine; line <= viewRange.lastLine; line++)
                                  -    {
                                  -        // if the line is inside the buffer
                                  -        if (line >= sourceBoxData.firstRenderedLine && line <= sourceBoxData.lastRenderedLine )
                                  -        {
                                  -            // skip, because it is already rendered
                                  -            continue;
                                  -        }
                                  -
                                  -        // if we are here, the line is not buffered therefore it must be rendered
                                  -
                                  -        // get the pre-rendered line and line number markup
                                  -        var lineHTML = lineCache[line];
                                  -        var lineNumberHTML = lineNumberCache[line];
                                  -
                                  -        if (line < sourceBoxData.firstRenderedLine)
                                  -        {
                                  -            // if we are before the buffer, queue lines to be prepended
                                  -            linesBefore.push(lineHTML);
                                  -            lineNumbersBefore.push(lineNumberHTML);
                                  -        }
                                  -        else
                                  -        {
                                  -            // if we are after the buffer, queue lines to be appended
                                  -            linesAfter.push(lineHTML);
                                  -            lineNumbersAfter.push(lineNumberHTML);
                                  -        }
                                  -    }
                                  -
                                  -    // there are lines to be prepended
                                  -    if (linesBefore.length > 0)
                                  -    {
                                  -        var topCacheLine = getLineNode(sourceBoxData.firstRenderedLine);
                                  -        var topCacheLineNumber = getLineNumberNode(sourceBoxData.firstRenderedLine);
                                  -
                                  -        // prepend all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesBefore.join(""), topCacheLine);
                                  -        appendInnerHTML(sourceLineNoBuffer, lineNumbersBefore.join(""), topCacheLineNumber);
                                  -    }
                                  -
                                  -    // there are lines to be appended
                                  -    if (linesAfter.length > 0)
                                  -    {
                                  -        // append all lines at once
                                  -        appendInnerHTML(sourceBoxData.viewport, linesAfter.join(""), null);
                                  -        appendInnerHTML(sourceLineNoBuffer, lineNumbersAfter.join(""), topCacheLineNumber);
                                  -    }
                                  -
                                  -    /*
                                  -    if (lookForCorruption())
                                  -    {
                                  -        debugger;
                                  -    }
                                  -    /**/
                                  -
                                  -    return bufferHit;
                                  -};
                                  -
                                  -var lookForCorruption = function()
                                  -{
                                  -    var childs = sourceLineBuffer.childNodes;
                                  -    var length = childs.length;
                                  -    var lineNumber;
                                  -    var lastLineNumber;
                                  -    var corrupted = false;
                                  -
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        lastLineNumber = lineNumber;
                                  -
                                  -        var child = childs[i];
                                  -
                                  -        lineNumber = child.id.substr(1)-0;
                                  -
                                  -        console.log(lineNumber);
                                  -
                                  -        if (lastLineNumber && lastLineNumber != (lineNumber - 1))
                                  -        {
                                  -            corrupted = true;
                                  -            break;
                                  -        }
                                  -    }
                                  -    return corrupted;
                                  -};
                                  -
                                  -
                                  -// TODO: xxxpedro use doc fragments in Context API
                                  -var appendFragment = null;
                                  -
                                  -var appendInnerHTML = function(element, html, referenceElement)
                                  -{
                                  -    // if undefined, we must convert it to null otherwise it will throw an error in IE
                                  -    // when executing element.insertBefore(firstChild, referenceElement)
                                  -    referenceElement = referenceElement || null;
                                  -
                                  -    //console.log("appendInnerHTML ", !!referenceElement);
                                  -
                                  -    var doc = element.ownerDocument;
                                  -
                                  -    // doc.createRange not available in IE
                                  -    if (doc.createRange)
                                  -    {
                                  -        var range = doc.createRange();  // a helper object
                                  -        range.selectNodeContents(element); // the environment to interpret the html
                                  -
                                  -        var fragment = range.createContextualFragment(html);  // parse
                                  -
                                  -        //console.log("Appending "+fragment.childNodes.length);
                                  -
                                  -        var firstChild = fragment.firstChild;
                                  -        element.insertBefore(fragment, referenceElement);
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!appendFragment || appendFragment.ownerDocument != doc)
                                  -            appendFragment = doc.createDocumentFragment();
                                  -
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = html;
                                  -
                                  -        //console.log("Appending "+div.childNodes.length);
                                  -
                                  -        var firstChild = div.firstChild;
                                  -        while (div.firstChild)
                                  -            appendFragment.appendChild(div.firstChild);
                                  -
                                  -        element.insertBefore(appendFragment, referenceElement);
                                  -
                                  -        div = null;
                                  -    }
                                  -
                                  -    return firstChild;
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#sourceBox {
                                  -    position: relative;
                                  -    width: 100%;
                                  -    height: 300px;
                                  -    overflow: auto;
                                  -
                                  -    font-family: monospace;
                                  -    font-size: 12px;
                                  -}
                                  -
                                  -#sourceBuffer {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#sourceLineBuffer {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -}
                                  -
                                  -#sourceLineNoBuffer {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -
                                  -    background: #eee;
                                  -    -moz-user-select: none;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    padding: 0 0 0 10px;
                                  -    margin: 0;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceLine {
                                  -    color: #777;
                                  -    margin: 0;
                                  -    padding: 0 4px 0 15px;
                                  -    border-right: 1px solid #ccc;
                                  -}
                                  -
                                  -lineNo-effects {
                                  -
                                  -    /*
                                  -    border-right: 2px solid #ccc;
                                  -    font-style: normal;
                                  -    padding: 2px 5px;
                                  -    color: #777;
                                  -    /**/
                                  -
                                  -    background-image: -moz-linear-gradient(right, #ddd, #bbb); /* FF3.6 */
                                  -    background-image: -webkit-gradient(linear,right top,left top,color-stop(0, #ddd),color-stop(1, #bbb)); /* Saf4+, Chrome */
                                  -            filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1'); /* IE6,IE7 */
                                  -        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#bbbbbb', EndColorStr='#dddddd', GradientType='1')"; /* IE8 */
                                  -
                                  -}
                                  -
                                  -
                                  -#sourceSpacer {
                                  -    position: relative;
                                  -    border-left: 1px solid #eee; /* reduces perceived flickering */
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -}
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -
                                  -  <div id="sourceBox">
                                  -      <div id="sourceBuffer">
                                  -          <div id="sourceLineNoBuffer"></div>
                                  -          <pre id="sourceLineBuffer"></pre>
                                  -      </div>
                                  -      <div id="sourceSpacer">
                                  -      </div>
                                  -  </div>
                                  -
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ improved sourceBox prototype #2</i>
                                  -
                                  -  <p>
                                  -    <i>
                                  -        This file is basically the same code as in prototype2.html, but with
                                  -        more function calls to generate HTML of each line (similar to what
                                  -        Firebug currently does) in order to test the performance impact. 
                                  -        The generation of all lines takes ~20% time using this approach.
                                  -    </i>
                                  -  </p>
                                  -
                                  -  <ul>
                                  -    <li><u>Cut-and-paste friendly (version #2b)</u></li>
                                  -    <li>Buffered viewport (reduces flickering when scrolling to near locations)</li>
                                  -    <li>Viewport spacer (eliminitates scrollbar flickering, allows scrolling horizontally)</li>
                                  -    <li>Fast line insertion/deletion (documentFragment and element.replaceChild)</li>
                                  -    <li>Faster rendering</li>
                                  -    <ul>
                                  -      <li>
                                  -          Now we are repositioning/resizing elements much less frequently.
                                  -          Only the sourceBuffer needs to be positioned (there are no padding
                                  -          elements), and it needs to be repositioned only when scrolling up.
                                  -      </li>
                                  -      <li>
                                  -          Elements are resized only when the size of the viewport changes (when
                                  -          Firebug's UI is resized), but not when it is scrolling.
                                  -      </li>
                                  -      <li>
                                  -          The width of the "line number bar" (the gray stuff) is being computed
                                  -          via CSS which reduces a lot the reflow when scrolling.
                                  -      </li>
                                  -    </ul>
                                  -  </ul>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/Templarian_inspector.png b/branches/flexBox/sandbox/sandbox/flexBox/Templarian_inspector.png
                                  deleted file mode 100644
                                  index 166a9bad..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/Templarian_inspector.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/buttonBg.png b/branches/flexBox/sandbox/sandbox/flexBox/buttonBg.png
                                  deleted file mode 100644
                                  index 025a2314..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/buttonBgHover.png b/branches/flexBox/sandbox/sandbox/flexBox/buttonBgHover.png
                                  deleted file mode 100644
                                  index 816e433d..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/detach.png b/branches/flexBox/sandbox/sandbox/flexBox/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/detachHover.png b/branches/flexBox/sandbox/sandbox/flexBox/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/firebug.css b/branches/flexBox/sandbox/sandbox/flexBox/firebug.css
                                  deleted file mode 100644
                                  index 7c1a2242..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/firebug.css
                                  +++ /dev/null
                                  @@ -1,406 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - General classes
                                  -************************************************************************************************* */
                                  -
                                  -.inlineBlockLeft {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.inlineBlockRight {
                                  -    display: block;
                                  -    float: right;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Main box
                                  -************************************************************************************************* */
                                  -
                                  -#fbContentBox {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Top TabBar box
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-tabBox {
                                  -    height: 28px;
                                  -    white-space: nowrap;
                                  -    
                                  -    background: url("tabBgTop.png") repeat-x scroll 0 0 #ddd;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png');
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Toolbar and SidePanel Tabs Boxes
                                  -************************************************************************************************* */
                                  -
                                  -#fbToolbar,
                                  -#fbPanelBar2-panelTabsBox {
                                  -    height: 28px;
                                  -    
                                  -    position: relative;
                                  -    
                                  -    background: url("tabBg.png") repeat-x scroll 0 3px #FBFDFF;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png');
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    white-space: nowrap;
                                  -    padding: 3px 2px 2px;
                                  -}
                                  -
                                  -#fbPanelBar2-panelTabs {
                                  -    white-space: nowrap;
                                  -    padding: 3px 2px 2px;
                                  -    /* avoid tabs wrapping to the next line when the space is too small */
                                  -    clip: rect(0pt, 1024px, 25px, 0pt);
                                  -    /* Firefox needs position:absolute so the clip:rect works as expected */
                                  -    position: absolute;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Panel Container boxes
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelPane {
                                  -}
                                  -
                                  -#fbPanelDeck {
                                  -}
                                  -
                                  -#fbSidePanelDeck {
                                  -    width: 300px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Panel Content boxes
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-content, 
                                  -#fbPanelBar2-content {
                                  -    background: #fff;
                                  -    
                                  -    border-top: 1px solid #999;
                                  -    border-bottom: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbPanelBar1-content {
                                  -    border-right: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbPanelBar2-content {
                                  -    border-left: 1px solid #999;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Command Popup box
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandPopup {
                                  -    height: 50px;
                                  -    background: #fff;
                                  -    border-top: 1px solid #999;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Commandline box
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandBox {
                                  -    border-top: 1px solid #ccc;
                                  -    background: #fff;
                                  -    height: 18px;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Splitters
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelSplitter {
                                  -    background: #E5E7E9;
                                  -    cursor: e-resize;
                                  -    width: 4px;
                                  -}
                                  -
                                  -#fbPanelSplitterContent {
                                  -    height: 28px;
                                  -    position: relative;
                                  -}
                                  -
                                  -#fbPanelSplitterTop {
                                  -    width: 4px;
                                  -    height: 28px;
                                  -    
                                  -    background: url("tabBg.png") repeat-x scroll center 3px #FBFDFF;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png');
                                  -}
                                  -
                                  -#fbPanelSplitterHandler {
                                  -    width: 4px;
                                  -    height: 24px;
                                  -    top: 4px;
                                  -    left: 1px;
                                  -    position: absolute;
                                  -    
                                  -    background: url("splitter.gif") no-repeat;
                                  -}
                                  -
                                  -#fbCommandPopupSplitter,
                                  -#fbCommandPopupSplitterContent {
                                  -    background: #E5E7E9;
                                  -    cursor: n-resize;
                                  -    height: 4px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Window Controls
                                  -************************************************************************************************* */
                                  -
                                  -.fbWindowControls {
                                  -    /* height + padding top + padding bottom == 28px (#fbPanelBar1-tabBox's height) */
                                  -    padding: 2px 7px 0 2px;
                                  -    height: 26px;
                                  -    position: absolute;
                                  -    clear: both;
                                  -    white-space: nowrap;
                                  -    
                                  -    background: url("tabBgTop.png") repeat-x scroll 0 0 #ddd;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png');
                                  -}
                                  -
                                  -#fbWindowLeftControls {
                                  -    left: 0;
                                  -    width: 1024px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    clear: both;
                                  -}
                                  -
                                  -#fbWindowRightControls {
                                  -    right: 0;
                                  -    /*width: 190px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    width: 50px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    clear: both;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Main Buttons 
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-innerToolbar {
                                  -    padding: 2px 0 0 2px;
                                  -}
                                  -
                                  -#fbFirebugButton {
                                  -    background: url(firebugX.png) no-repeat;
                                  -}
                                  -
                                  -#fbInspectButton {
                                  -    background: url(Templarian_inspector.png) no-repeat 2px 2px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Search 
                                  -************************************************************************************************* */
                                  -
                                  -#fbSearch {
                                  -    padding: 2px 7px 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -#fbSearch input {
                                  -    -moz-border-radius: 5px;
                                  -    border: 1px solid #999;
                                  -    padding: 2px 4px;
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    width: 100px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Window butons 
                                  -************************************************************************************************* */
                                  -
                                  -#fbWindowButtons {
                                  -    padding: 3px 0 0;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Tabs
                                  -************************************************************************************************* */
                                  -
                                  -.panelTab {
                                  -    display: block;
                                  -    float: left;
                                  -    padding: 6px 7px 6px;
                                  -    margin: 0;
                                  -    font-weight: bold;
                                  -    color: #888;
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    line-height: 14px;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    border-radius: 4px 4px 0 0;
                                  -}
                                  -.sel {
                                  -    color: #000;
                                  -    background: #FBFDFF;
                                  -    border: 1px solid #aaa;
                                  -    border-bottom-width: 0;
                                  -}
                                  -
                                  -.panelOptions {
                                  -    display: none;
                                  -}
                                  -
                                  -.sel .panelOptions {
                                  -    display: inline;
                                  -    font-family: monospace;
                                  -    padding-left: 20px;
                                  -    background: url(panelOptions.png) no-repeat 4px 0;
                                  -    cursor: default;
                                  -    line-height: 12px;
                                  -    position: relative;
                                  -    top: -1px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - SidePanel Tabs
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar2-panelTabs .panelTab {
                                  -    color: #aaa;
                                  -    border-bottom-width: 1px;
                                  -    padding: 2px 5px 3px;
                                  -    -moz-border-radius: 4px;
                                  -    border-radius: 4px;
                                  -}
                                  -#fbPanelBar2-panelTabs .sel {
                                  -    background: #fff;
                                  -    color: #000;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - CommandLine
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandArrow {
                                  -    position: absolute;
                                  -    font: 11px Monaco,monospace;
                                  -    color: #00f;
                                  -    padding: 2px 2px 2px 4px;
                                  -    z-index: 2;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    _top: 2px; /* IE6 */
                                  -    left: 0;
                                  -	width: 100%;
                                  -    border: 0;
                                  -    height: 16px;
                                  -    line-height: 16px;
                                  -    padding: 0 0 0 28px;
                                  -    margin: 0;
                                  -    font: 12px Monaco,monospace;
                                  -    z-index: 1;
                                  -    outline: none;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE
                                  -************************************************************************************************* */
                                  -
                                  -.hideSidePanelBar #fbPanelSplitter,
                                  -.hideSidePanelBar #fbSidePanelDeck {
                                  -    display: none;
                                  -}
                                  -
                                  -.hideCommandPopup #fbCommandPopupSplitter,
                                  -.hideCommandPopup #fbCommandPopup {
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - webkit hack
                                  -************************************************************************************************* */
                                  -
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -
                                  -    /* The min-height will cause a problem in IE, making the Side Panel PanelTabs 
                                  -    (#fbPanelBar2-panelTabs) disappears when maximizing then mizimixing the 
                                  -    window so we must apply this rule only to wekbit */
                                  -    #fbPanelPane {
                                  -        min-height: 28px; /* avoid problem in webkit with small height */
                                  -    }
                                  -    
                                  -    #fbPanelDeck {
                                  -        min-width: 1px; /* avoid problem in webkit with small width */
                                  -    }
                                  -
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/firebug.html b/branches/flexBox/sandbox/sandbox/flexBox/firebug.html
                                  deleted file mode 100644
                                  index 9be8317e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/firebug.html
                                  +++ /dev/null
                                  @@ -1,188 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<!-- See license.txt for terms of usage -->
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="include/FlexBox.css" rel="stylesheet" type="text/css" />
                                  -<link href="gui.css" rel="stylesheet" type="text/css" />
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -
                                  -<script type="text/javascript" src="../../../zcontent/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="include/require.js"></script>
                                  -<script>
                                  -
                                  -require({baseUrl: "include"},
                                  -["FlexBox"], 
                                  -function(FlexBox)
                                  -{
                                  -    var useIFrame = /\biframe\b/.test(document.location.hash);
                                  -
                                  -    if (useIFrame)
                                  -    {
                                  -        var panels = [
                                  -                "fbPanelBar1-content",
                                  -                "fbPanelBar2-content",
                                  -                "fbCommandPopup"
                                  -            ];
                                  -        
                                  -        for (var i=0, length = panels.length; i<length; i++)
                                  -        {
                                  -            var panelID = panels[i];
                                  -            var panel = document.getElementById(panelID);
                                  -            var iframe = document.createElement("iframe");
                                  -            var id = panel.id;
                                  -            var className = panel.className;
                                  -            iframe.id = id;
                                  -            iframe.className = className; 
                                  -            iframe.setAttribute("src", "panel.html");
                                  -            iframe.setAttribute("frameBorder", 0);
                                  -            panel.parentNode.replaceChild(iframe, panel);
                                  -        }
                                  -    }
                                  -    
                                  -    var root = document.getElementById("fbContentBox");
                                  -    var flexBox = window.flexBox = new FlexBox(root, true);
                                  -    
                                  -    // avoid FOUC
                                  -    root.style.visibility = "visible";
                                  -
                                  -});
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="fbContentBox" class="vbox xhideSidePanelBar xhideCommandPopup">
                                  -
                                  -        <div id="fbPanelBar1-tabBox" class="panelTabBox">
                                  -        
                                  -            <div class="boxContent">
                                  -            
                                  -                <div id="fbWindowLeftControls" class="fbWindowControls">
                                  -                
                                  -                    <div id="fbPanelBar1-innerToolbar" class="inlineBlockLeft">
                                  -                        <a id="fbFirebugButton" class="fbIconButton inlineBlockLeft fbHover">&nbsp;</a>
                                  -                        <a id="fbInspectButton" class="fbIconButton inlineBlockLeft fbHover">&nbsp;</a>
                                  -                    </div>
                                  -                    
                                  -                    <div id="fbPanelBar1-panelTabs" class="panelTabs inlineBlockLeft">
                                  -                        <span class="panelTab sel">Console<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">HTML<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">CSS<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Script<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Net<span class="panelOptions">â–¼</span></span>
                                  -                    </div>
                                  -                    
                                  -                </div>
                                  -                
                                  -                <div id="fbWindowRightControls" class="fbWindowControls">
                                  -                
                                  -                    <div id="fbWindowButtons" class="inlineBlockRight">
                                  -                        <a id="fbWindow_btDeactivate" class="fbSmallButton inlineBlockRight fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -                        <a id="fbWindow_btDetach" class="fbSmallButton inlineBlockRight fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -                        <a id="fbWindow_btClose" class="fbSmallButton inlineBlockRight fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -                    </div>
                                  -                    
                                  -                    <div id="fbSearch" class="inlineBlockRight">
                                  -                        <input />
                                  -                    </div>
                                  -                    
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -        </div>
                                  -
                                  -        <div id="fbPanelPane" class="hbox boxFlex">
                                  -        
                                  -            <div id="fbPanelDeck" class="vbox boxFlex">
                                  -            
                                  -                <div id="fbToolbar">
                                  -                	<div id="fbToolbarContent" class="boxContent">
                                  -                    	<a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -                    </div>
                                  -                </div>
                                  -                
                                  -                <div id="fbPanelBar1-content" class="boxFlex boxScroll">
                                  -                
                                  -                    <div>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                    </div>
                                  -                    
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -            <div id="fbPanelSplitter" class="fbSplitter" data-target="fbSidePanelDeck" data-spacer="fbPanelDeck">
                                  -                <div id="fbPanelSplitterContent" class="boxContent">
                                  -                    <div id="fbPanelSplitterHandler">&nbsp;</div>
                                  -                    <div id="fbPanelSplitterTop">&nbsp;</div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -            <div id="fbSidePanelDeck" class="vbox">
                                  -            
                                  -                <div id="fbPanelBar2-panelTabsBox">
                                  -                    <div id="fbPanelBar2-panelTabs" class="boxContent">
                                  -                        <span class="panelTab sel">Style<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Layout<span class="panelOptions">â–¼</span></span>
                                  -                    </div>
                                  -                </div>
                                  -                
                                  -                <div id="fbPanelBar2-content" class="boxFlex boxScroll">
                                  -                
                                  -                    <div>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                    </div>
                                  -                
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        
                                  -        <div id="fbCommandPopupSplitter" class="fbSplitter" data-target="fbCommandPopup" data-spacer="fbPanelPane">
                                  -            <div id="fbCommandPopupSplitterContent" class="boxContent"></div>
                                  -        </div>
                                  -        
                                  -        <div id="fbCommandPopup" class="boxScroll">
                                  -            <div>
                                  -                <p>command popup</p>
                                  -                <p>command popup</p>
                                  -                <p>command popup</p>
                                  -                <p>command popup</p>
                                  -                <p>command popup</p>
                                  -            </div>
                                  -        </div>
                                  -        
                                  -        <div id="fbCommandBox">
                                  -            <span id="fbCommandArrow">&gt;&gt;&gt;</span>
                                  -            <input id="fbCommandLine" />
                                  -        </div>
                                  -        
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/firebugX.png b/branches/flexBox/sandbox/sandbox/flexBox/firebugX.png
                                  deleted file mode 100644
                                  index 904bee7f..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/firebugX.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/gui.css b/branches/flexBox/sandbox/sandbox/flexBox/gui.css
                                  deleted file mode 100644
                                  index 01f92278..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/gui.css
                                  +++ /dev/null
                                  @@ -1,87 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -    font-size: 11px;
                                  -    line-height: 14px;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Icon Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbIconButton {
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #888 !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #eee !important;
                                  -    background-color: #ccc !important;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Small Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/include/BrowserDetection.js b/branches/flexBox/sandbox/sandbox/flexBox/include/BrowserDetection.js
                                  deleted file mode 100644
                                  index 4a9ebc0a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/include/BrowserDetection.js
                                  +++ /dev/null
                                  @@ -1,31 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(function() { 
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -var version = (userAgent.match( /.+(?:ox|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -var versionNumber = parseInt(version);
                                  -
                                  -//************************************************************************************************
                                  -// BrowserDetection
                                  -
                                  -var BrowserDetection =
                                  -{
                                  -    version : version,
                                  -    Firefox : /firefox/.test(userAgent) && versionNumber,
                                  -    Opera   : /opera/.test(userAgent) && versionNumber,
                                  -    Safari  : /webkit/.test(userAgent) && versionNumber,
                                  -    IE      : /msie/.test(userAgent) && !/opera/.test(userAgent) && versionNumber,
                                  -    IE6     : /msie 6/i.test(navigator.appVersion)
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -return BrowserDetection;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.css b/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.css
                                  deleted file mode 100644
                                  index 1e5a6894..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.css
                                  +++ /dev/null
                                  @@ -1,115 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Helpers
                                  -************************************************************************************************* */
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    display: block;  /* Google Chrome needs this in case of an iframe element. */
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to avoid problems */
                                  -    min-width: 1px;  /* with the minimum dimensions of flexible elements. */
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -    display: block;
                                  -}
                                  -
                                  -.boxFix .boxFixPos,
                                  -.boxFix .boxContent {
                                  -    position: absolute;
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.boxFixIgnoreContents .boxFlex,
                                  -.boxFixIgnoreContents .boxFlex1,
                                  -.boxFixIgnoreContents .boxFlex2 {
                                  -    position: absolute;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - splitter frame
                                  -************************************************************************************************* */
                                  -
                                  -.splitterFrame {
                                  -    position: absolute;
                                  -    display: block;
                                  -	top: 0;
                                  -	left: 0;
                                  -    z-index: 2147483550;
                                  -    
                                  -    /* IE needs a transparent background otherwise it won't capture mouse events properly */
                                  -    background-image: url(transparentPixel.gif);
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - iframe box fix
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix iframe.boxScroll {
                                  -    /* IE need this to properly resize the iframe using flexBox */
                                  -    display: block;
                                  -    
                                  -    /* IE needs height and width properties to fix iframe dimension, otherwise 
                                  -    the the iframe won't fit the proper space and the horizontal scrollbar 
                                  -    will be visible when not needed */
                                  -    height: 100%; width: 100%;
                                  -    
                                  -    /*
                                  -    border-left: 0 !important;
                                  -    border-right: 0 !important;/**/
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.js b/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.js
                                  deleted file mode 100644
                                  index b4a9305e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/include/FlexBox.js
                                  +++ /dev/null
                                  @@ -1,834 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["BrowserDetection", "Measure"], function(BrowserDetection, Measure){
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -  xxxpedro notes:
                                  -  
                                  -    - flexBox dependencies
                                  -        - className
                                  -        - event (onresize, onunload)
                                  -        - BrowserDetection
                                  -        - lazyExecution
                                  -        - Measure
                                  -            - BrowserDetection
                                  -        
                                  -    - move to chrome/context?
                                  -        - lazy
                                  -        - event
                                  -        - cache?
                                  -    
                                  -    
                                  -    - scrolling
                                  -        - getPosition - relative to what?
                                  -        - scrolling in-browser iframe Chrome different computation than Splitter
                                  -
                                  -*/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// turning debugging on makes CSS3-flexBox-supported browsers to use FlexBox class to resize
                                  -// the elements via JavaScript instead of CSS, allowing the FlexBox functions to be debugabe
                                  -var debug = false;
                                  -
                                  -// setting debugSplitterFrame to true will make the SplitterFrame element to be visible
                                  -// (the invisible element used to cover the whole UI when dragging the splitter in 
                                  -// order to capture mouse events)
                                  -var debugSplitterFrame = false;
                                  -
                                  -//************************************************************************************************
                                  -
                                  -// debug can also be enabled via URL hash like #debug or #iframe,debug
                                  -debug = debug === true ? true : /\bdebug\b/.test(document.location.hash);
                                  -
                                  -//************************************************************************************************
                                  -
                                  -// FIXME: xxxpedro: better browser detection? always use flexBox?
                                  -var supportsFlexBox = !document.all && !window.opera;
                                  -var isIE6 = BrowserDetection.IE6;
                                  -
                                  -// ************************************************************************************************
                                  -// FlexBox Class constructor
                                  -
                                  -function FlexBox(root, listenWindowResize)
                                  -{
                                  -    var win = root.contentWindow || window;
                                  -
                                  -    this.measure = new Measure(win);
                                  -
                                  -    this.boxObjects = [];
                                  -
                                  -    this.root = root;
                                  -
                                  -    initializeSplitters(this);
                                  -
                                  -    if (supportsFlexBox && !debug)
                                  -    {
                                  -        this.reflow();
                                  -        return;
                                  -    }
                                  -
                                  -    setClass(root, "boxFix");
                                  -
                                  -    var self = this;
                                  -
                                  -    this.render = function()
                                  -    {
                                  -        renderBoxes(this);
                                  -    };
                                  -
                                  -    var resizeHandler = this.resizeHandler = isIE6 ?
                                  -            // IE6 requires an special resizeHandler to make the rendering smoother
                                  -            lazyExecution(self.render, self) :
                                  -            // Other browsers can handle
                                  -            (function(){ self.render(); });
                                  -
                                  -    if (listenWindowResize)
                                  -    {
                                  -        var onunload = function()
                                  -        {
                                  -            removeEvent(win, "resize", resizeHandler);
                                  -            removeEvent(win, "unload", onunload);
                                  -
                                  -            self.destroy();
                                  -        };
                                  -
                                  -        addEvent(win, "resize", resizeHandler);
                                  -        addEvent(win, "unload", onunload);
                                  -    }
                                  -
                                  -    self.invalidate();
                                  -
                                  -    if (isIE6)
                                  -    {
                                  -        fixIE6BackgroundImageCache();
                                  -        setTimeout(function delayedFlexBoxReflow(){
                                  -            self.invalidate();
                                  -        }, 50);
                                  -    }
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -//FlexBox Class members
                                  -
                                  -FlexBox.prototype.boxObjects = null;
                                  -
                                  -FlexBox.prototype.reflow = function()
                                  -{
                                  -    var root = this.root;
                                  -
                                  -    var object =
                                  -    {
                                  -        element : root,
                                  -        flex : null,
                                  -        extra : {}
                                  -    };
                                  -
                                  -    this.boxObjects = [ object ];
                                  -
                                  -    reflowBoxes(this);
                                  -};
                                  -
                                  -FlexBox.prototype.render = function()
                                  -{
                                  -
                                  -};
                                  -
                                  -FlexBox.prototype.invalidate = function()
                                  -{
                                  -    this.reflow();
                                  -    this.render();
                                  -};
                                  -
                                  -FlexBox.prototype.resizeHandler = function()
                                  -{
                                  -};
                                  -
                                  -FlexBox.prototype.destroy = function()
                                  -{
                                  -    function cleanObject(object)
                                  -    {
                                  -        delete object.element;
                                  -        delete object.extra;
                                  -        delete object.orientation;
                                  -        delete object.children;
                                  -        delete object.layout;
                                  -    }
                                  -    
                                  -    this.root = null;
                                  -
                                  -    var boxObjects = this.boxObjects;
                                  -    var boxObject;
                                  -
                                  -    while (boxObject = boxObjects.pop())
                                  -    {
                                  -        var childBoxObject;
                                  -        var children = boxObject.children;
                                  -        
                                  -        while (childBoxObject = children.pop())
                                  -        {
                                  -            cleanObject(childBoxObject);
                                  -            childBoxObject = null;
                                  -        }
                                  -        
                                  -        cleanObject(boxObject);
                                  -        boxObject = null;
                                  -        children = null;
                                  -    }
                                  -
                                  -    this.boxObjects = null;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// FlexBox helpers
                                  -
                                  -FlexBox.prototype.getBoxOrientation = function(element)
                                  -{
                                  -    var orient = (element.className.match(/\b(v|h)box\b/) || [ 0, 0 ])[1];
                                  -
                                  -    var type = orient == "v" ? "vertical" : orient == "h" ? "horizontal" : null;
                                  -
                                  -    var orientation = null;
                                  -
                                  -    if (type == "vertical")
                                  -    {
                                  -        orientation =
                                  -        {
                                  -            isVertical: true,
                                  -            dimension: "height",
                                  -            offset: "offsetHeight",
                                  -            before: "top",
                                  -            after: "bottom",
                                  -            mousePosition: "clientY"
                                  -        };
                                  -    }
                                  -    else if (type == "horizontal")
                                  -    {
                                  -        orientation =
                                  -        {
                                  -            isHorizontal: true,
                                  -            dimension: "width",
                                  -            offset: "offsetWidth",
                                  -            before: "left",
                                  -            after: "right",
                                  -            mousePosition: "clientX"
                                  -        };
                                  -    }
                                  -
                                  -    return orientation;
                                  -};
                                  -
                                  -FlexBox.prototype.getBoxObject = function(element)
                                  -{
                                  -    var boxObject;
                                  -    var boxObjects = this.boxObjects;
                                  -    
                                  -    for (var i = 0; boxObject = boxObjects[i]; i++)
                                  -    {
                                  -        if (boxObject.element == element)
                                  -            return boxObject;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -FlexBox.prototype.getParentBoxObject = function(element)
                                  -{
                                  -    do
                                  -    {
                                  -        element = element.parentNode;
                                  -    }
                                  -    while (element && element.nodeType == 1 && !this.getBoxOrientation(element));
                                  -    
                                  -    return this.getBoxObject(element);
                                  -};
                                  -
                                  -FlexBox.prototype.getChildObject = function(element, boxObject)
                                  -{
                                  -    var childObject;
                                  -    var boxObjectFound = false;
                                  -    
                                  -    if (this.getBoxOrientation(element))
                                  -    {
                                  -        return this.getBoxObject(element);
                                  -    }
                                  -    
                                  -    if (!boxObject)
                                  -    {
                                  -        boxObject = this.getBoxObject(element, true);
                                  -    }
                                  -    
                                  -    if (!boxObject) return null;
                                  -
                                  -    for (var i = 0, children = boxObject.children; childObject = children[i]; i++)
                                  -    {
                                  -        if (childObject.element == element)
                                  -        {
                                  -            boxObjectFound = true;
                                  -            break;
                                  -        }
                                  -    }
                                  -    
                                  -    return boxObjectFound ? childObject : null;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Splitter
                                  -
                                  -var splitters = [];
                                  -
                                  -function initializeSplitters(flexBox)
                                  -{
                                  -    var doc = flexBox.root.ownerDocument;
                                  -    var elements = flexBox.root.getElementsByTagName("div");
                                  -    var element;
                                  -
                                  -    for (var i = 0, l = elements.length; i < l; i++)
                                  -    {
                                  -        element = elements[i];
                                  -        if (hasClass(element, "fbSplitter"))
                                  -        {
                                  -            var targetId = element.getAttribute("data-target");
                                  -            var spacerId = element.getAttribute("data-spacer");
                                  -
                                  -            var target = doc.getElementById(targetId);
                                  -            var spacer = doc.getElementById(spacerId);
                                  -
                                  -            splitters.push(new Splitter(flexBox, element, target, spacer));
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function Splitter(flexBox, splitter, target, spacer)
                                  -{
                                  -    this.flexBox = flexBox;
                                  -
                                  -    this.splitter = splitter;
                                  -    this.target = target;
                                  -    this.spacer = spacer;
                                  -
                                  -    this.document = splitter.ownerDocument;
                                  -    this.window = this.document.parentWindow || this.document.defaultView;
                                  -
                                  -    this.splitterFrame = this.document.createElement("div");
                                  -    this.splitterFrame.className = "splitterFrame";
                                  -
                                  -    var self = this;
                                  -
                                  -    splitter.onmousedown = function(event)
                                  -    {
                                  -        self.onSplitterMouseDown(event);
                                  -    };
                                  -};
                                  -
                                  -Splitter.prototype.onSplitterMouseDown = function(e)
                                  -{
                                  -    cancelEvent(e, true);
                                  -
                                  -    var flexBox = this.flexBox;
                                  -    var splitterFrame = this.splitterFrame;
                                  -
                                  -    var root = flexBox.root;
                                  -    var measure = flexBox.measure;
                                  -
                                  -    var winSize = measure.getWindowSize();
                                  -    var target = this.target;
                                  -    var self = this;
                                  -    
                                  -    var orientation = flexBox.getParentBoxObject(target).orientation;
                                  -    var halfSplitterSize = Math.floor(this.splitter[orientation.offset]/2);
                                  -
                                  -    openSplitterFrame(this, orientation);
                                  -
                                  -    this.splitterFrame.onmousemove = function(event)
                                  -    {
                                  -        event = window.event || event;
                                  -        cancelEvent(event, true);
                                  -
                                  -        var boxObject = flexBox.getParentBoxObject(target);
                                  -        var orientation = boxObject.orientation;
                                  -        
                                  -        var fixedSpace = boxObject.layout.fixedSpace;
                                  -        var targetSize = target[orientation.offset];
                                  -        var maxSize = boxObject.element[orientation.offset] + targetSize - fixedSpace;
                                  -        
                                  -        var mousePosition = event[orientation.mousePosition];
                                  -
                                  -        var targetPosition = flexBox.measure.getElementPosition(target);
                                  -        var positionDiff = mousePosition - targetPosition[orientation.before] + halfSplitterSize;
                                  -        
                                  -        var size = targetSize - positionDiff;
                                  -        size = Math.min(maxSize, size);
                                  -        size = Math.max(0, size);
                                  -        target.style[orientation.dimension] = size + "px";
                                  -
                                  -        if (isIE6)
                                  -        {
                                  -            var className = target.className;
                                  -            target.className = className + " boxFixIgnoreContents";
                                  -            flexBox.invalidate();
                                  -            target.className = className;
                                  -        }
                                  -        else
                                  -            flexBox.invalidate();
                                  -    };
                                  -
                                  -    this.splitterFrame.onmouseup = function(event)
                                  -    {
                                  -        event = window.event || event;
                                  -        cancelEvent(event, true);
                                  -
                                  -        // IE9 need this timeout otherwise the mouse cursor image will freeze 
                                  -        // until the document is clicked again
                                  -        setTimeout(function(){
                                  -            try
                                  -            {
                                  -                self.splitter.focus();
                                  -            }
                                  -            catch (E) {}
                                  -            
                                  -            closeSplitterFrame(self);
                                  -        },0);
                                  -    };
                                  -};
                                  -
                                  -function openSplitterFrame(splitter, orientation)
                                  -{
                                  -    var flexBox = splitter.flexBox;
                                  -    var root = flexBox.root;
                                  -    var splitterFrame = splitter.splitterFrame;
                                  -    
                                  -    var box = flexBox.measure.getElementBox(root);
                                  -    for (var prop in box)
                                  -    {
                                  -        splitterFrame.style[prop] = box[prop] + "px";
                                  -    }
                                  -
                                  -    if (debugSplitterFrame)
                                  -    {
                                  -        splitterFrame.style.background = "#def";
                                  -        splitterFrame.style.opacity = 0.5;
                                  -        
                                  -        if (isIE6)
                                  -            splitterFrame.style.filter = "alpha(opacity=50)";
                                  -    }
                                  -
                                  -    splitterFrame.style.cursor = orientation.isVertical ? "n-resize" : "e-resize";
                                  -
                                  -    root.parentNode.insertBefore(splitterFrame, root);
                                  -}
                                  -
                                  -function closeSplitterFrame(splitter)
                                  -{
                                  -    var root = splitter.flexBox.root;
                                  -    var splitterFrame = splitter.splitterFrame;
                                  -
                                  -    splitterFrame.style.cursor = "inherit";
                                  -
                                  -    root.parentNode.removeChild(splitterFrame);
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -// lazy execution
                                  -
                                  -function lazyExecution(_function, _this, _arguments)
                                  -{
                                  -    var executionTimer;
                                  -    var lastExecution = 0;
                                  -    var thisObject = _this ? _this : _function.prototype ? _function.prototype : _function;
                                  -    
                                  -    _arguments = _arguments || [];
                                  -
                                  -    return function()
                                  -    {
                                  -        if (new Date().getTime() - lastExecution > 50)
                                  -        {
                                  -            if (executionTimer)
                                  -            {
                                  -                clearTimeout(executionTimer);
                                  -                executionTimer = null;
                                  -            }
                                  -
                                  -            _function.apply(thisObject, _arguments);
                                  -
                                  -            lastExecution = new Date().getTime();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (executionTimer)
                                  -            {
                                  -                clearTimeout(executionTimer);
                                  -                executionTimer = null;
                                  -            }
                                  -
                                  -            executionTimer = setTimeout(function delayedExecution()
                                  -            {
                                  -                _function.apply(thisObject, _arguments);
                                  -            }, 50);
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function reflowBoxes(flexBox)
                                  -{
                                  -    var boxObject;
                                  -    var childBoxObject;
                                  -    var childElement;
                                  -
                                  -    var flex;
                                  -    var space;
                                  -    var boxSpace;
                                  -    var extraSpace;
                                  -    var padding;
                                  -    var border;
                                  -
                                  -    var match;
                                  -
                                  -    var measure = flexBox.measure;
                                  -    var boxObjects = flexBox.boxObjects;
                                  -
                                  -    for (var index = 0; boxObject = boxObjects[index]; index++)
                                  -    {
                                  -        var parentElement = boxObject.element;
                                  -
                                  -        var orientation = flexBox.getBoxOrientation(parentElement);
                                  -        if (!orientation)
                                  -            continue;
                                  -
                                  -        var children = [];
                                  -        var layout = {};
                                  -
                                  -        var flexSum = 0;
                                  -        var fixedSpace = 0;
                                  -        var minimumSpace = 0;
                                  -
                                  -        for (var i = 0, childs = parentElement.childNodes, length = childs.length; i < length; i++)
                                  -        {
                                  -            childElement = childs[i];
                                  -
                                  -            // ignore non-element nodes
                                  -            if (childElement.nodeType != 1)
                                  -                continue;
                                  -
                                  -            padding = measure.getMeasureBox(childElement, "padding");
                                  -            border = measure.getMeasureBox(childElement, "border");
                                  -
                                  -            extraSpace = padding[orientation.before] + padding[orientation.after] + 
                                  -                    border[orientation.before] + border[orientation.after];
                                  -
                                  -            if (match = /\bboxFlex(\d?)\b/.exec(childElement.className))
                                  -            {
                                  -                flex = match[1] - 0 || 1;
                                  -                space = null;
                                  -
                                  -                flexSum += flex;
                                  -                minimumSpace += extraSpace;
                                  -            }
                                  -            else
                                  -            {
                                  -                boxSpace = childElement[orientation.offset];
                                  -
                                  -                space = boxSpace - extraSpace;
                                  -                space = Math.max(space, 0);
                                  -
                                  -                flex = null;
                                  -
                                  -                fixedSpace += boxSpace;
                                  -                minimumSpace += boxSpace;
                                  -            }
                                  -
                                  -            childBoxObject =
                                  -            {
                                  -                element : childElement,
                                  -                flex : flex,
                                  -                extra : {},
                                  -                layout : layout
                                  -            };
                                  -
                                  -            childBoxObject[orientation.dimension] = space;
                                  -            childBoxObject.extra[orientation.dimension] = extraSpace;
                                  -
                                  -            children.push(childBoxObject);
                                  -
                                  -            // if it is a box, then we need to layout it
                                  -            if (flexBox.getBoxOrientation(childElement))
                                  -            {
                                  -                boxObjects.push(childBoxObject);
                                  -            }
                                  -        }
                                  -
                                  -        layout.flexSum = flexSum;
                                  -        layout.minimumSpace = minimumSpace;
                                  -        layout.fixedSpace = fixedSpace;
                                  -
                                  -        boxObject.orientation = orientation;
                                  -        boxObject.children = children;
                                  -        boxObject.layout = layout;
                                  -    }
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function renderBoxes(flexBox)
                                  -{
                                  -    var boxObject;
                                  -    var childBoxObject;
                                  -    var childElement;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var boxSpace;
                                  -    var extraSpace;
                                  -    var padding;
                                  -    var border;
                                  -
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -
                                  -    var _isIE6 = isIE6;
                                  -    var measure = flexBox.measure;
                                  -    var boxObjects = flexBox.boxObjects;
                                  -
                                  -    // render each box, followed by its children
                                  -    for (var index = 0; boxObject = boxObjects[index]; index++)
                                  -    {
                                  -        var computedSpace = 0;
                                  -        var remainingPixels = 0;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore data from the boxObjects cache
                                  -
                                  -        var parentElement = boxObject.element;
                                  -        var children = boxObject.children;
                                  -        var orientation = flexBox.getBoxOrientation(parentElement);
                                  -        
                                  -        var flexSum = boxObject.layout.flexSum;
                                  -        var fixedSpace = boxObject.layout.fixedSpace;
                                  -        var minimumSpace = boxObject.layout.minimumSpace;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // calculating the total space
                                  -
                                  -        extraSpace = boxObject.extra[orientation.dimension];
                                  -        if (!extraSpace)
                                  -        {
                                  -            padding = measure.getMeasureBox(parentElement, "padding");
                                  -            border = measure.getMeasureBox(parentElement, "border");
                                  -
                                  -            extraSpace = padding[orientation.before] + padding[orientation.after] + 
                                  -                    border[orientation.before] + border[orientation.after];
                                  -        }
                                  -
                                  -        // We are setting the height of horizontal boxes in IE6, so we need to 
                                  -        // temporary hide the elements otherwise we will get the wrong measures
                                  -        if (_isIE6)
                                  -        {
                                  -            var className = parentElement.className;
                                  -            parentElement.className = className + " boxFixIgnoreContents";
                                  -            space = parentElement[orientation.offset];
                                  -            parentElement.className = className;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = parentElement[orientation.offset];
                                  -        }
                                  -
                                  -        totalSpace = space - extraSpace;
                                  -
                                  -        freeSpace = totalSpace - fixedSpace;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // processing box children
                                  -
                                  -        for (var i = 0, length = children.length; i < length; i++)
                                  -        {
                                  -            childBoxObject = children[i];
                                  -
                                  -            childElement = childBoxObject.element;
                                  -            flex = childBoxObject.flex;
                                  -            extraSpace = childBoxObject.extra[orientation.dimension];
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // calculating child size
                                  -
                                  -            // if it is a flexible child, then we need to calculate its space
                                  -            if (flex)
                                  -            {
                                  -                // calculate the base flexible space
                                  -                space = Math.floor(freeSpace * flex / flexSum);
                                  -                space -= extraSpace;
                                  -                space = Math.max(space, 0);
                                  -
                                  -                // calculate the remaining pixels
                                  -                remainingPixels = freeSpace * flex % flexSum;
                                  -
                                  -                // distribute remaining pixels
                                  -                if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -                {
                                  -                    // distribute a proportion of the remaining pixels, or a minimum of 1 pixel
                                  -                    space += Math.floor(remainingPixels * flex / flexSum) || 1;
                                  -                }
                                  -
                                  -                // save the value
                                  -                childBoxObject[orientation.dimension] = space;
                                  -            }
                                  -            // if it is not a flexible child, then we already have its dimension calculated
                                  -            else
                                  -            {
                                  -                // use the value calculated at the last reflow() operation
                                  -                space = childBoxObject[orientation.dimension];
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // resizing child if necessary
                                  -
                                  -            if (orientation.isHorizontal || flex)
                                  -            {
                                  -                if (orientation.isVertical)
                                  -                {
                                  -                    // if it's a child of a vertical box, then we only need to adjust the height...
                                  -                    childElement.style.height = space + "px";
                                  -
                                  -                    // unless...
                                  -
                                  -                    // xxxpedro 100% width of an iframe with border will exceed the width of 
                                  -                    // its offsetParent... don't ask me why. not sure though if this 
                                  -                    // is the best way to solve it
                                  -                    if (childElement.nodeName.toLowerCase() == "iframe")
                                  -                    {
                                  -                        border = measure.getMeasureBox(childElement, "border");
                                  -
                                  -                        // in IE6 we need to hide the iframe in order to get the correct 
                                  -                        // width of its parentNode
                                  -                        if (_isIE6)
                                  -                        {
                                  -                            childElement.style.display = "none";
                                  -                            boxSpace = childElement.parentNode.offsetWidth;
                                  -                            childElement.style.display = "block";
                                  -                        }
                                  -                        else
                                  -                        {
                                  -                            boxSpace = childElement.parentNode.offsetWidth;
                                  -                        }
                                  -
                                  -                        // remove the border space
                                  -                        childElement.style.width = 
                                  -                                Math.max(0, boxSpace - border.left - border.right) + "px";
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(childElement, "boxFixPos");
                                  -
                                  -                    childElement.style.left = computedSpace + "px";
                                  -                    childElement.style.width = space + "px";
                                  -
                                  -                    // boxObject.height IE6 only
                                  -                    if (_isIE6)
                                  -                    {
                                  -                        // TODO: figure out how to solve the problem with minimumSpace
                                  -                        childBoxObject.height = boxObject.height || parentElement.offsetHeight;
                                  -                        childElement.style.height = childBoxObject.height + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // update the computed space sum
                                  -
                                  -            computedSpace += space;
                                  -        }
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Ensuring minimum space
                                  -
                                  -        if (parentElement != flexBox.root && orientation.isVertical)
                                  -        {
                                  -            // TODO: check for "deeper" parents
                                  -            // here we are enforcing that the parent box dimension (height or width) 
                                  -            // won't be smaller than the minimum space required, which is the sum 
                                  -            // of fixed dimension child boxes
                                  -            parentElement.parentNode.style[orientation.dimension] = 
                                  -                    Math.max(parentElement.parentNode[orientation.offset], minimumSpace) + "px";
                                  -        }
                                  -    }
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// helper functions
                                  -
                                  -function hasClass(node, name)
                                  -{
                                  -    return (' ' + node.className + ' ').indexOf(' ' + name + ' ') != -1;
                                  -}
                                  -
                                  -function setClass(node, name)
                                  -{
                                  -    if (node && (' ' + node.className + ' ').indexOf(' ' + name + ' ') == -1)
                                  -        node.className += " " + name;
                                  -}
                                  -
                                  -function addEvent(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on" + name, handler);
                                  -}
                                  -
                                  -function removeEvent(object, name, handler, useCapture)
                                  -{
                                  -    if (object.removeEventListener)
                                  -        object.removeEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.detachEvent("on" + name, handler);
                                  -}
                                  -
                                  -function cancelEvent(e, preventDefault)
                                  -{
                                  -    if (!e)
                                  -        return;
                                  -
                                  -    if (preventDefault)
                                  -    {
                                  -        if (e.preventDefault)
                                  -            e.preventDefault();
                                  -        else
                                  -            e.returnValue = false;
                                  -    }
                                  -
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// IE6 background glitch fix
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -return FlexBox;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/include/Measure.js b/branches/flexBox/sandbox/sandbox/flexBox/include/Measure.js
                                  deleted file mode 100644
                                  index dcb015b3..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/include/Measure.js
                                  +++ /dev/null
                                  @@ -1,340 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["BrowserDetection"], function(BrowserDetection) { 
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = BrowserDetection.Safari || 
                                  -        BrowserDetection.Safari && BrowserDetection.version < "532";
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Measure
                                  -
                                  -function Measure(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -};
                                  -
                                  -Measure.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Measure methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = BrowserDetection.IE ? 
                                  -                    this.document.body.clientTop || 
                                  -                    this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measure Methods
                                  -    
                                  -    getMeasure: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasureInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasure(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -        {
                                  -            return value;
                                  -        }
                                  -        else
                                  -        {
                                  -            return getPixelValue(el.parentNode, value + unit);
                                  -        }
                                  -    },
                                  -
                                  -    getMeasureBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (BrowserDetection.IE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasureInPixels(el, propName);
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasureInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    } 
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -function getCSSAutoMarginBox(el)
                                  -{
                                  -    /*
                                  -    // the following elements will fail
                                  -    if (BrowserDetection.IE && 
                                  -            " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -                return {top:0, left:0, bottom:0, right:0};
                                  -    /**/
                                  -
                                  -    // the following elements are safe
                                  -    // which other elements may have auto margin?
                                  -    if (BrowserDetection.IE && 
                                  -            " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -                return {top:0, left:0, bottom:0, right:0};
                                  -    /**/
                                  -
                                  -    var offsetTop = 0;
                                  -    if (false && isIEStantandMode)
                                  -    {
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        offsetTop = scrollSize.height;
                                  -    }
                                  -    
                                  -    var box = this.document.createElement("div");
                                  -    //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -    box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -    
                                  -    var clone = el.cloneNode(false);
                                  -    var text = this.document.createTextNode("&nbsp;");
                                  -    clone.appendChild(text);
                                  -    
                                  -    box.appendChild(clone);
                                  -
                                  -    this.document.body.appendChild(box);
                                  -    
                                  -    var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -    var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -    
                                  -    var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -    var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -    
                                  -    this.document.body.removeChild(box);
                                  -    
                                  -    return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getStyle = BrowserDetection.IE ? function(el, name)
                                  -{
                                  -    return el.currentStyle[name] || el.style[name] || undefined;
                                  -}
                                  -: function(el, name)
                                  -{
                                  -    return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -        || el.style[name] || undefined;
                                  -};
                                  -
                                  -// From Dean Edwards:
                                  -// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value)
                                  -{
                                  -    if (!element || !element.runtimeStyle) return 0;
                                  -    
                                  -    if (PIXEL.test(value))
                                  -        return parseInt(value);
                                  -    
                                  -    var style = element.style.left;
                                  -    var runtimeStyle = element.runtimeStyle.left;
                                  -    
                                  -    element.runtimeStyle.left = element.currentStyle.left;
                                  -    element.style.left = value || 0;
                                  -    
                                  -    value = element.style.pixelLeft;
                                  -    
                                  -    element.style.left = style;
                                  -    element.runtimeStyle.left = runtimeStyle;
                                  -    
                                  -    return value;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -return Measure;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/include/require.js b/branches/flexBox/sandbox/sandbox/flexBox/include/require.js
                                  deleted file mode 100644
                                  index f6195cc9..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/include/require.js
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/*
                                  - RequireJS 0.24.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
                                  - Available via the MIT or new BSD license.
                                  - see: http://github.com/jrburke/requirejs for details
                                  -*/
                                  -var require,define;
                                  -(function(){function Q(e){return da.call(e)==="[object Function]"}function V(e){return da.call(e)==="[object Array]"}function W(e,g,l){for(var k in g)if(!(k in F)&&(!(k in e)||l))e[k]=g[k];return h}function ea(e,g,l){var k,p,n;for(k=0;n=g[k];k++){n=typeof n==="string"?{name:n}:n;p=n.location;if(l&&(!p||p.indexOf("/")!==0&&p.indexOf(":")===-1))p=l+"/"+(p||n.name);e[n.name]={name:n.name,location:p||n.name,lib:n.lib||"lib",main:(n.main||"lib/main").replace(qa,"").replace(fa,"")}}}function ra(e){function g(a){var b,
                                  -c;for(b=0;c=a[b];b++)if(c==="."){a.splice(b,1);b-=1}else if(c==="..")if(b===1&&(a[2]===".."||a[0]===".."))break;else if(b>0){a.splice(b-1,2);b-=2}}function l(a,b){var c;if(a.charAt(0)===".")if(b){if(t.pkgs[b])b=[b];else{b=b.split("/");b=b.slice(0,b.length-1)}a=b.concat(a.split("/"));g(a);c=t.pkgs[b=a[0]];a=a.join("/");if(c&&a===b+"/"+c.main)a=b}return a}function k(a,b){var c=a?a.indexOf("!"):-1,d=null,f=b?b.name:null,j=a,o,m;if(c!==-1){d=a.substring(0,c);a=a.substring(c+1,a.length)}if(d)d=l(d,f);
                                  -if(a){if(d)o=(c=q[d])?c.normalize?c.normalize(a,function(u){return l(u,f)}):l(a,f):"__$p"+f+"@"+a;else o=l(a,f);m=X[o];if(!m){m=h.toModuleUrl?h.toModuleUrl(i,a,b):i.nameToUrl(a,null,b);X[o]=m}}return{prefix:d,name:o,parentMap:b,url:m,originalName:j,fullName:d?d+"!"+o:o}}function p(){var a=true,b=t.priorityWait,c,d;if(b){for(d=0;c=b[d];d++)if(!v[c]){a=false;break}a&&delete t.priorityWait}return a}function n(a){return function(b){a.exports=b}}function R(a,b,c){return function(){var d=[].concat(sa.call(arguments,
                                  -0)),f;if(c&&Q(f=d[d.length-1]))f.__requireJsBuild=true;d.push(b);return a.apply(null,d)}}function ga(a,b){b=R(i.require,a,b);W(b,{nameToUrl:R(i.nameToUrl,a),toUrl:R(i.toUrl,a),isDefined:R(i.isDefined,a),ready:h.ready,isBrowser:h.isBrowser});if(h.paths)b.paths=h.paths;return b}function ta(a){var b,c,d,f,j,o,m,u=S[a];if(u)for(f=0;c=u[f];f++){b=c.fullName;c=k(c.originalName,c.parentMap);c=c.fullName;d=w[b]||[];j=w[c];if(c!==b){if(b in z){delete z[b];z[c]=true}w[c]=j?j.concat(d):d;delete w[b];for(j=0;j<
                                  -d.length;j++){m=d[j].depArray;for(o=0;o<m.length;o++)if(m[o]===b)m[o]=c}}}delete S[a]}function ha(a){var b=a.prefix,c=a.fullName;if(!(z[c]||c in q)){if(b&&!G[b]){G[b]=undefined;(S[b]||(S[b]=[])).push(a);(w[b]||(w[b]=[])).push({onDep:function(d){d===b&&ta(b)}});ha(k(b))}i.paused.push(a)}}function Y(a){var b,c,d;b=a.callback;var f=a.fullName;d=[];var j=a.depArray;if(b&&Q(b)){if(j)for(b=0;b<j.length;b++)d.push(a.deps[j[b]]);c=h.execCb(f,a.callback,d);if(f)if(a.usingExports&&c===undefined&&(!a.cjsModule||
                                  -!("exports"in a.cjsModule)))c=q[f];else if(a.cjsModule&&"exports"in a.cjsModule)c=q[f]=a.cjsModule.exports;else{if(f in q&&!a.usingExports)return h.onError(new Error(f+" has already been defined"));q[f]=c}}else if(f)c=q[f]=b;if(f)if(d=w[f]){for(b=0;b<d.length;b++)d[b].onDep(f,c);delete w[f]}if(B[a.waitId]){delete B[a.waitId];a.isDone=true;i.waitCount-=1;if(i.waitCount===0)Z=[]}}function ia(a,b,c,d){a=k(a,d);var f=a.name,j=a.fullName,o={},m={waitId:f||ua+va++,depCount:0,depMax:0,prefix:a.prefix,name:f,
                                  -fullName:j,deps:{},depArray:b,callback:c,onDep:function(ja,wa){if(!(ja in m.deps)){m.deps[ja]=wa;m.depCount+=1;m.depCount===m.depMax&&Y(m)}}},u,s;if(j){if(j in q||v[j]===true)return;z[j]=true;v[j]=true;i.jQueryDef=j==="jquery"}for(c=0;c<b.length;c++)if(u=b[c]){u=k(u,f?a:d);s=u.fullName;b[c]=s;if(s==="require")m.deps[s]=ga(a);else if(s==="exports"){m.deps[s]=q[j]={};m.usingExports=true}else if(s==="module"){m.cjsModule=u=m.deps[s]={id:f,uri:f?i.nameToUrl(f,null,d):undefined};u.setExports=n(u)}else if(s in
                                  -q&&!(s in B))m.deps[s]=q[s];else if(!o[s]){m.depMax+=1;ha(u);(w[s]||(w[s]=[])).push(m);o[s]=true}}if(m.depCount===m.depMax)Y(m);else{B[m.waitId]=m;Z.push(m);i.waitCount+=1}}function J(a){ia.apply(null,a);v[a[0]]=true}function ka(a){if(!i.jQuery)if((a=a||(typeof jQuery!=="undefined"?jQuery:null))&&"readyWait"in a){i.jQuery=a;J(["jquery",[],function(){return jQuery}]);if(i.scriptCount){a.readyWait+=1;i.jQueryIncremented=true}}}function la(a,b){if(!a.isDone){var c=a.fullName,d=a.depArray,f,j;if(c){if(b[c])return q[c];
                                  -b[c]=true}for(j=0;j<d.length;j++)(f=d[j])&&!a.deps[f]&&B[f]&&a.onDep(f,la(B[f],b));return c?q[c]:undefined}}function $(){var a=t.waitSeconds*1E3,b=a&&i.startTime+a<(new Date).getTime();a="";var c=false,d=false,f;if(!(i.pausedCount>0)){if(t.priorityWait)if(p())C();else return;for(f in v)if(!(f in F)){c=true;if(!v[f])if(b)a+=f+" ";else{d=true;break}}if(c||i.waitCount){if(b&&a){f=new Error("require.js load timeout for modules: "+a);f.requireType="timeout";f.requireModules=a;return h.onError(f)}if(d||
                                  -i.scriptCount){if(A||ma)setTimeout($,50)}else if(i.waitCount){for(D=0;a=Z[D];D++)la(a,{});$()}else h.checkReadyState()}}}function na(a,b){var c=b.name,d=b.fullName,f;if(!(d in q||d in v)){G[a]||(G[a]=q[a]);v[d]||(v[d]=false);f=function(j){require.onPluginLoad&&require.onPluginLoad(i,a,c,j);Y({prefix:b.prefix,name:b.name,fullName:b.fullName,callback:function(){return j}});v[d]=true};f.fromText=function(j,o){var m=K;i.loaded[j]=false;i.scriptCount+=1;if(m)K=false;eval(o);if(m)K=true;i.completeLoad(j)};
                                  -G[a].load(c,ga(b.parentMap,true),f,t)}}function xa(a){if(a.prefix&&a.name.indexOf("__$p")===0&&q[a.prefix])a=k(a.originalName,a.parentMap);var b=a.prefix,c=a.fullName;if(!(z[c]||v[c])){z[c]=true;if(b)if(q[b])na(b,a);else{if(!L[b]){L[b]=[];(w[b]||(w[b]=[])).push({onDep:function(d){if(d===b){var f,j=L[b];for(d=0;d<j.length;d++){f=j[d];na(b,k(f.originalName,f.parentMap))}delete L[b]}}})}L[b].push(a)}else h.load(i,c,a.url)}}var i,C,t={waitSeconds:7,baseUrl:r.baseUrl||"./",paths:{},pkgs:{}},M=[],z={require:true,
                                  -exports:true,module:true},X={},q={},v={},B={},Z=[],va=0,w={},G={},L={},aa=0,S={};C=function(){var a,b,c;aa+=1;if(i.scriptCount<=0)i.scriptCount=0;for(;M.length;){a=M.shift();if(a[0]===null)return h.onError(new Error("Mismatched anonymous require.def modules"));else J(a)}if(!t.priorityWait||p())for(;i.paused.length;){c=i.paused;i.pausedCount+=c.length;i.paused=[];for(b=0;a=c[b];b++)xa(a);i.startTime=(new Date).getTime();i.pausedCount-=c.length}aa===1&&$();aa-=1};i={contextName:e,config:t,defQueue:M,
                                  -waiting:B,waitCount:0,specified:z,loaded:v,urlMap:X,scriptCount:0,urlFetched:{},defined:q,paused:[],pausedCount:0,plugins:G,managerCallbacks:w,makeModuleMap:k,normalize:l,configure:function(a){var b,c,d;if(a.baseUrl)if(a.baseUrl.charAt(a.baseUrl.length-1)!=="/")a.baseUrl+="/";b=t.paths;d=t.pkgs;W(t,a,true);if(a.paths){for(c in a.paths)c in F||(b[c]=a.paths[c]);t.paths=b}if((b=a.packagePaths)||a.packages){if(b)for(c in b)c in F||ea(d,b[c],c);a.packages&&ea(d,a.packages);t.pkgs=d}if(a.priority){c=i.requireWait;
                                  -i.requireWait=false;i.takeGlobalQueue();C();i.require(a.priority);C();i.requireWait=c;t.priorityWait=a.priority}if(a.deps||a.callback)i.require(a.deps||[],a.callback);a.ready&&h.ready(a.ready)},isDefined:function(a,b){return k(a,b).fullName in q},require:function(a,b,c){if(typeof a==="string"){if(h.get)return h.get(i,a,b);c=b;b=k(a,c);a=q[b.fullName];if(a===undefined)return h.onError(new Error("require: module name '"+b.fullName+"' has not been loaded yet for context: "+e));return a}ia(null,a,b,c);
                                  -if(!i.requireWait)for(;!i.scriptCount&&i.paused.length;)C()},takeGlobalQueue:function(){if(T.length){ya.apply(i.defQueue,[i.defQueue.length-1,0].concat(T));T=[]}},completeLoad:function(a){var b;for(i.takeGlobalQueue();M.length;){b=M.shift();if(b[0]===null){b[0]=a;break}else if(b[0]===a)break;else{J(b);b=null}}b?J(b):J([a,[],a==="jquery"&&typeof jQuery!=="undefined"?function(){return jQuery}:null]);v[a]=true;ka();if(h.isAsync)i.scriptCount-=1;C();h.isAsync||(i.scriptCount-=1)},toUrl:function(a,b){var c=
                                  -a.lastIndexOf("."),d=null;if(c!==-1){d=a.substring(c,a.length);a=a.substring(0,c)}return i.nameToUrl(a,d,b)},nameToUrl:function(a,b,c){var d,f,j,o,m=i.config;if(a.indexOf("./")===0||a.indexOf("../")===0){c=c&&c.url?c.url.split("/"):[];c.length&&c.pop();c=c.concat(a.split("/"));g(c);b=c.join("/")+(b?b:h.jsExtRegExp.test(a)?"":".js")}else{a=l(a,c);if(h.jsExtRegExp.test(a))b=a+(b?b:"");else{d=m.paths;f=m.pkgs;c=a.split("/");for(o=c.length;o>0;o--){j=c.slice(0,o).join("/");if(d[j]){c.splice(0,o,d[j]);
                                  -break}else if(j=f[j]){a=a===j.name?j.location+"/"+j.main:j.location+"/"+j.lib;c.splice(0,o,a);break}}b=c.join("/")+(b||".js");b=(b.charAt(0)==="/"||b.match(/^\w+:/)?"":m.baseUrl)+b}}return m.urlArgs?b+((b.indexOf("?")===-1?"?":"&")+m.urlArgs):b}};i.jQueryCheck=ka;i.resume=C;return i}function za(){var e,g,l;if(N&&N.readyState==="interactive")return N;e=document.getElementsByTagName("script");for(g=e.length-1;g>-1&&(l=e[g]);g--)if(l.readyState==="interactive")return N=l;return null}var Aa=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -Ba=/require\(["']([^'"\s]+)["']\)/g,qa=/^\.\//,fa=/\.js$/,da=Object.prototype.toString,x=Array.prototype,sa=x.slice,ya=x.splice,A=!!(typeof window!=="undefined"&&navigator&&document),ma=!A&&typeof importScripts!=="undefined",Ca=A&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,oa=typeof opera!=="undefined"&&opera.toString()==="[object Opera]",ua="_r@@",F={},H={},T=[],N=null,Da=false,K=false,h;x={};var ba,r,I,U,y,O,P,D,ca,pa,E;if(typeof require!=="undefined")if(Q(require))return;
                                  -else x=require;h=require=function(e,g,l){var k="_",p;if(!V(e)&&typeof e!=="string"){p=e;if(V(g)){e=g;g=l}else e=[]}if(p&&p.context)k=p.context;l=H[k]||(H[k]=ra(k));p&&l.configure(p);return l.require(e,g)};h.version="0.24.0";h.isArray=V;h.isFunction=Q;h.mixin=W;h.jsExtRegExp=/^\/|:|\?|\.js$/;r=h.s={contexts:H,skipAsync:{},isPageLoaded:!A,readyCalls:[]};if(h.isAsync=h.isBrowser=A){I=r.head=document.getElementsByTagName("head")[0];if(U=document.getElementsByTagName("base")[0])I=r.head=U.parentNode}h.onError=
                                  -function(e){throw e;};h.load=function(e,g,l){var k=e.contextName,p=e.urlFetched,n=e.loaded;Da=false;n[g]||(n[g]=false);if(!p[l]){e.scriptCount+=1;h.attach(l,k,g);p[l]=true;if(e.jQuery&&!e.jQueryIncremented){e.jQuery.readyWait+=1;e.jQueryIncremented=true}}};define=h.def=function(e,g,l){var k;if(typeof e!=="string"){l=g;g=e;e=null}if(!h.isArray(g)){l=g;g=[]}if(!e&&!g.length&&h.isFunction(l))if(l.length){l.toString().replace(Aa,"").replace(Ba,function(p,n){g.push(n)});g=["require","exports","module"].concat(g)}if(K){k=
                                  -ba||za();if(!k)return h.onError(new Error("ERROR: No matching script interactive for "+l));e||(e=k.getAttribute("data-requiremodule"));k=H[k.getAttribute("data-requirecontext")]}(k?k.defQueue:T).push([e,g,l])};define.amd={multiversion:true,plugins:true};h.execCb=function(e,g,l){return g.apply(null,l)};h.onScriptLoad=function(e){var g=e.currentTarget||e.srcElement,l;if(e.type==="load"||Ca.test(g.readyState)){N=null;e=g.getAttribute("data-requirecontext");l=g.getAttribute("data-requiremodule");H[e].completeLoad(l);
                                  -g.detachEvent&&!oa?g.detachEvent("onreadystatechange",h.onScriptLoad):g.removeEventListener("load",h.onScriptLoad,false)}};h.attach=function(e,g,l,k,p){var n;if(A){k=k||h.onScriptLoad;n=document.createElement("script");n.type=p||"text/javascript";n.charset="utf-8";n.async=!r.skipAsync[e];n.setAttribute("data-requirecontext",g);n.setAttribute("data-requiremodule",l);if(n.attachEvent&&!oa){K=true;n.attachEvent("onreadystatechange",k)}else n.addEventListener("load",k,false);n.src=e;ba=n;U?I.insertBefore(n,
                                  -U):I.appendChild(n);ba=null;return n}else if(ma){k=H[g];g=k.loaded;g[l]=false;importScripts(e);k.completeLoad(l)}return null};if(A){y=document.getElementsByTagName("script");for(D=y.length-1;D>-1&&(O=y[D]);D--){if(!I)I=O.parentNode;if(P=O.getAttribute("data-main")){if(!x.baseUrl){y=P.split("/");O=y.pop();y=y.length?y.join("/")+"/":"./";x.baseUrl=y;P=O.replace(fa,"")}x.deps=x.deps?x.deps.concat(P):[P];break}}}r.baseUrl=x.baseUrl;h.pageLoaded=function(){if(!r.isPageLoaded){r.isPageLoaded=true;ca&&clearInterval(ca);
                                  -if(pa)document.readyState="complete";h.callReady()}};h.checkReadyState=function(){var e=r.contexts,g;for(g in e)if(!(g in F))if(e[g].waitCount)return;r.isDone=true;h.callReady()};h.callReady=function(){var e=r.readyCalls,g,l,k;if(r.isPageLoaded&&r.isDone){if(e.length){r.readyCalls=[];for(g=0;l=e[g];g++)l()}e=r.contexts;for(k in e)if(!(k in F)){g=e[k];if(g.jQueryIncremented){g.jQuery.ready(true);g.jQueryIncremented=false}}}};h.ready=function(e){r.isPageLoaded&&r.isDone?e():r.readyCalls.push(e);return h};
                                  -if(A){if(document.addEventListener){document.addEventListener("DOMContentLoaded",h.pageLoaded,false);window.addEventListener("load",h.pageLoaded,false);if(!document.readyState){pa=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload",h.pageLoaded);if(self===self.top)ca=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");h.pageLoaded()}}catch(e){}},30)}document.readyState==="complete"&&h.pageLoaded()}h(x);if(h.isAsync&&typeof setTimeout!==
                                  -"undefined"){E=r.contexts[x.context||"_"];E.requireWait=true;setTimeout(function(){E.requireWait=false;E.takeGlobalQueue();E.jQueryCheck();E.scriptCount||E.resume();h.checkReadyState()},0)}})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/min.png b/branches/flexBox/sandbox/sandbox/flexBox/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/minHover.png b/branches/flexBox/sandbox/sandbox/flexBox/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/off.png b/branches/flexBox/sandbox/sandbox/flexBox/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/offHover.png b/branches/flexBox/sandbox/sandbox/flexBox/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/panel.html b/branches/flexBox/sandbox/sandbox/flexBox/panel.html
                                  deleted file mode 100644
                                  index 2e3582d0..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBox/panel.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<!-- See license.txt for terms of usage -->
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title></title>
                                  -<style>
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    margin: 0; padding: 0; /* remove margin and padding */
                                  -    border: 0; /* remove border too (IE6 need this) */
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    overflow: auto;
                                  -}
                                  -
                                  -p {
                                  -	margin: 0 0 1em;
                                  -}
                                  -
                                  -.panelContent {
                                  -	padding: 10px;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -<div class="panelContent">
                                  -<p>Lorem ipsum dolor sit amet consectetuer volutpat tortor nisl eu dolor. Vitae Nam sodales tempus tristique metus mus vestibulum orci nibh et. Adipiscing tincidunt vitae ac tristique Integer wisi iaculis mauris neque augue. Massa Vestibulum enim tempus neque et augue et condimentum Curabitur Sed. Feugiat urna interdum morbi Sed quis quis urna id orci.</p>
                                  -<p>Sed Curabitur neque tincidunt tellus dis sit vitae ligula congue euismod. Aenean tincidunt libero mattis Donec sed congue Nullam laoreet Phasellus et. Non platea gravida metus Phasellus ut justo vitae fringilla Nullam sed. Integer purus habitasse et sem sit Nam et Phasellus eget Curabitur. Nonummy dolor vitae Curabitur nunc wisi sit mauris et condimentum tempus. Eros tortor.</p>
                                  -<p>Tincidunt a sem penatibus pretium Sed Proin egestas sit at enim. Nec nec porta Phasellus laoreet pretium sed tellus felis Integer elit. Nulla laoreet Nam rhoncus nonummy dis cursus ipsum condimentum aliquam condimentum. Sapien elit suscipit orci libero interdum vitae condimentum eros orci a. Sapien tincidunt consectetuer Aliquam penatibus in ligula sodales sed.</p>
                                  -<p>Ac parturient metus dapibus vitae nec ac pharetra condimentum Integer dolor. Et justo wisi pretium euismod nunc quis at sed tincidunt tellus. Interdum et eros velit convallis eros leo et Proin ligula interdum. Vel risus id sem Aenean laoreet venenatis Vivamus tempus sem diam. Ante Aenean eu condimentum leo faucibus amet aliquam justo pede nibh. Nibh felis augue consequat et id.</p>
                                  -</div>
                                  -
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/panelOptions.png b/branches/flexBox/sandbox/sandbox/flexBox/panelOptions.png
                                  deleted file mode 100644
                                  index 6aa876cc..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/panelOptions.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/splitter.gif b/branches/flexBox/sandbox/sandbox/flexBox/splitter.gif
                                  deleted file mode 100644
                                  index 09c00bd7..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/splitter.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/tabBg.png b/branches/flexBox/sandbox/sandbox/flexBox/tabBg.png
                                  deleted file mode 100644
                                  index 8f936dcc..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/tabBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/tabBgTop.png b/branches/flexBox/sandbox/sandbox/flexBox/tabBgTop.png
                                  deleted file mode 100644
                                  index abce17cf..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/tabBgTop.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBox/transparentPixel.gif b/branches/flexBox/sandbox/sandbox/flexBox/transparentPixel.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBox/transparentPixel.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt b/branches/flexBox/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt
                                  deleted file mode 100644
                                  index 787ad4ef..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt	
                                  +++ /dev/null
                                  @@ -1,5 +0,0 @@
                                  -use table-fixed
                                  -
                                  -set height of both row and row's div spacer
                                  -
                                  -td > div.relative > div.absolute.overflow
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box.html
                                  deleted file mode 100644
                                  index fc9aabec..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box.html
                                  +++ /dev/null
                                  @@ -1,416 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Master Layout
                                  -************************************************************************************************* */
                                  -/*
                                  -.box-vertical {
                                  -    display: -moz-box;
                                  -    display: box;
                                  -    -moz-box-orient: vertical;
                                  -}
                                  -
                                  -.box-horizontal {
                                  -    display: -moz-box;
                                  -    display: box;
                                  -    -moz-box-orient: horizontal;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -moz-box-flex: 1;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -moz-box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.box-vertical,
                                  -.box-horizontal {
                                  -    position: relative;
                                  -}
                                  -.box-horizontal-item {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.box-item {
                                  -    display: block;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -}
                                  -
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #eee;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #eee;
                                  -}
                                  -
                                  -#right {
                                  -    width: 300px;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #eee;
                                  -}
                                  -
                                  -#righttool {
                                  -    height: 22px;
                                  -    background: #aaa;
                                  -}
                                  -
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -</style>
                                  -<script>
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    var elements = [root];
                                  -    var element;
                                  -    var result;
                                  -    
                                  -    while (element = elements.shift())
                                  -    {
                                  -        result = layoutBox(root, element);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            elements = elements.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, element)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    var isVertical = hasClass(element, "box-vertical");
                                  -    var isHorizontal;
                                  -    
                                  -    var flexItems = [];
                                  -    var fixedSpace = 0;
                                  -    
                                  -    var elements = [];
                                  -    var spaces = [];
                                  -    
                                  -    var totalFlex = 0;
                                  -    var reFlex = /box-flex-(\d)/;
                                  -    var reBox = /box-(vertical|horizontal)/;
                                  -    var match;
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        var spaceProperty = "offsetHeight";
                                  -        var styleProperty = "height";
                                  -    }
                                  -    else
                                  -    {
                                  -        var isHorizontal = hasClass(element, "box-horizontal");
                                  -        
                                  -        if (isHorizontal)
                                  -        {
                                  -            var spaceProperty = "offsetWidth";
                                  -            var styleProperty = "width";
                                  -        }
                                  -        else
                                  -            return result;
                                  -    }
                                  -    
                                  -    for (var i = 0, childs = element.childNodes, length = childs.length, child; i < length; i++)
                                  -    {
                                  -        child = childs[i];
                                  -        
                                  -        if (child.nodeType != 1) continue;
                                  -        
                                  -        elements.push(child);
                                  -        
                                  -        if (reBox.test(child.className))
                                  -        {
                                  -            result.push(child);
                                  -        }
                                  -            
                                  -        if (match = reFlex.exec(child.className))
                                  -        {
                                  -            spaces.push("flex");
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var flex = match[1]-0;
                                  -                totalFlex += flex;
                                  -                flexItems.push({element: child, flex: flex});
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var space = child[spaceProperty];
                                  -            
                                  -            spaces.push(space);
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -    }
                                  -    
                                  -    var totalSpace = element == root ? getWindowSize(window).height : element[spaceProperty];
                                  -    //var totalSpace = element[spaceProperty];
                                  -    var availableSpace = totalSpace - fixedSpace;
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        for (var i = 0, length = flexItems.length, item; i < length; i++)
                                  -        {
                                  -            item = flexItems[i];
                                  -            
                                  -            var el = item.element;
                                  -            var space = Math.round(availableSpace * flex / totalFlex);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            el.style[styleProperty] = space + "px";
                                  -            el.xops = space;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var processingSpace = 0;
                                  -        //alert(element.xops);
                                  -        
                                  -        for (var i = 0, length = spaces.length, item; i < length; i++)
                                  -        {
                                  -            item = spaces[i];
                                  -            
                                  -            var el = elements[i];
                                  -            var space;
                                  -            
                                  -            if (item == "flex")
                                  -            {
                                  -                space = Math.round(availableSpace * flex / totalFlex);
                                  -                space = Math.max(space, 0);
                                  -            }
                                  -            else
                                  -            {
                                  -                space = item;
                                  -            }
                                  -            
                                  -            setClass(el, "box-horizontal-item")
                                  -            
                                  -            el.style[styleProperty] = space + "px";
                                  -            el.style.top = 0;
                                  -            el.style.left = processingSpace + "px";
                                  -            
                                  -            
                                  -            var parentHeight = element.xops || element.offsetHeight;
                                  -            el.style.height = parentHeight + "px";
                                  -            /**/
                                  -            
                                  -            processingSpace += space;
                                  -        }
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -
                                  -var hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="box-vertical">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="box-horizontal box-flex-1">
                                  -        
                                  -            <div id="left" class="box-flex-1">
                                  -                left
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="box-vertical">
                                  -                <div id="righttool">
                                  -                    right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="box-flex-1">
                                  -                
                                  -                    <div>
                                  -                    right
                                  -
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box1.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box1.html
                                  deleted file mode 100644
                                  index 5c8cc48e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box1.html
                                  +++ /dev/null
                                  @@ -1,419 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Master Layout
                                  -************************************************************************************************* */
                                  -/*
                                  -.box-vertical {
                                  -    display: -moz-box;
                                  -    display: box;
                                  -    -moz-box-orient: vertical;
                                  -}
                                  -
                                  -.box-horizontal {
                                  -    display: -moz-box;
                                  -    display: box;
                                  -    -moz-box-orient: horizontal;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -moz-box-flex: 1;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -moz-box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.box-vertical,
                                  -.box-horizontal {
                                  -    position: relative;
                                  -}
                                  -.box-horizontal-item {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.box-item {
                                  -    display: block;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -}
                                  -
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #eee;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #eee;
                                  -}
                                  -
                                  -#right {
                                  -    width: 300px;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #eee;
                                  -}
                                  -
                                  -#righttool {
                                  -    height: 22px;
                                  -    background: #aaa;
                                  -}
                                  -
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -</style>
                                  -<script>
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    var elements = [[root, root, 0]];
                                  -    var args;
                                  -    var result;
                                  -    
                                  -    while (args = elements.shift())
                                  -    {
                                  -        result = layoutBox.apply(this, args);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            elements = elements.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, element, hackSpace)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    var isVertical = hasClass(element, "box-vertical");
                                  -    var isHorizontal;
                                  -    
                                  -    var flexItems = [];
                                  -    var fixedSpace = 0;
                                  -    
                                  -    var elements = [];
                                  -    var spaces = [];
                                  -    
                                  -    var totalFlex = 0;
                                  -    var reFlex = /box-flex-(\d)/;
                                  -    var reBox = /box-(vertical|horizontal)/;
                                  -    var match;
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        var spaceProperty = "offsetHeight";
                                  -        var styleProperty = "height";
                                  -    }
                                  -    else
                                  -    {
                                  -        var isHorizontal = hasClass(element, "box-horizontal");
                                  -        
                                  -        if (isHorizontal)
                                  -        {
                                  -            var spaceProperty = "offsetWidth";
                                  -            var styleProperty = "width";
                                  -        }
                                  -        else
                                  -            return result;
                                  -    }
                                  -    
                                  -    for (var i = 0, childs = element.childNodes, length = childs.length, child; i < length; i++)
                                  -    {
                                  -        child = childs[i];
                                  -        
                                  -        if (child.nodeType != 1) continue;
                                  -        
                                  -        elements.push(child);
                                  -        
                                  -        if (match = reFlex.exec(child.className))
                                  -        {
                                  -            spaces.push("flex");
                                  -            
                                  -            if (match)
                                  -            {
                                  -                var flex = match[1]-0;
                                  -                totalFlex += flex;
                                  -                flexItems.push({element: child, flex: flex});
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var space = child[spaceProperty];
                                  -            
                                  -            spaces.push(space);
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        if (reBox.test(child.className))
                                  -        {
                                  -            alert(space);
                                  -            result.push([root, child, space]);
                                  -        }
                                  -            
                                  -    }
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        var totalSpace = element == root ? getWindowSize(window).height : hackSpace ? hackSpace : element[spaceProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        for (var i = 0, length = flexItems.length, item; i < length; i++)
                                  -        {
                                  -            item = flexItems[i];
                                  -            
                                  -            var el = item.element;
                                  -            var space = Math.round(availableSpace * flex / totalFlex);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            el.style[styleProperty] = space + "px";
                                  -            el.xops = space;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var totalSpace = element == root ? getWindowSize(window).width : element[spaceProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var processingSpace = 0;
                                  -        //alert(element.xops);
                                  -        
                                  -        for (var i = 0, length = spaces.length, item; i < length; i++)
                                  -        {
                                  -            item = spaces[i];
                                  -            
                                  -            var el = elements[i];
                                  -            var space;
                                  -            
                                  -            if (item == "flex")
                                  -            {
                                  -                space = Math.round(availableSpace * flex / totalFlex);
                                  -                space = Math.max(space, 0);
                                  -            }
                                  -            else
                                  -            {
                                  -                space = item;
                                  -            }
                                  -            
                                  -            setClass(el, "box-horizontal-item")
                                  -            
                                  -            el.style[styleProperty] = space + "px";
                                  -            el.style.top = 0;
                                  -            el.style.left = processingSpace + "px";
                                  -            
                                  -            
                                  -            var parentHeight = element.xops || element.offsetHeight;
                                  -            el.style.height = parentHeight + "px";
                                  -            /**/
                                  -            
                                  -            processingSpace += space;
                                  -        }
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -
                                  -var hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="box-vertical">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="box-horizontal box-flex-1">
                                  -        
                                  -            <div id="left" class="box-flex-1">
                                  -                left
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="box-vertical">
                                  -                <div id="righttool">
                                  -                    right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="box-flex-1">
                                  -                
                                  -                    <div>
                                  -                    right
                                  -
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box2.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box2.html
                                  deleted file mode 100644
                                  index 845cfedf..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box2.html
                                  +++ /dev/null
                                  @@ -1,516 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Supports Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.box-vertical {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-horizontal {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.box-flex-2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Does not support Flexible Box
                                  -************************************************************************************************* */
                                  -.box-fix,
                                  -.box-fix .box-vertical,
                                  -.box-fix .box-horizontal {
                                  -    position: relative;
                                  -}
                                  -
                                  -.box-horizontal-fix {
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    min-height: 1px;
                                  -}
                                  -</style>
                                  -<script>
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    if (!document.all) return;
                                  -    
                                  -    setClass(root, "box-fix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                space: 0,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var element;
                                  -    
                                  -    var object;
                                  -    var objects = [];
                                  -    var flexibleObjects = [];
                                  -    
                                  -    var fixedSpace = 0;
                                  -    var flexSum = 0;
                                  -    
                                  -    var reFlex = /(?:^|\s)box-flex-(\d)/;
                                  -    var reBox = /(?:^|\s)box-(vertical|horizontal)/;
                                  -    var match;
                                  -    
                                  -    var horizontalItemStyle = "display: block; float: left; position: absolute; ";
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "box-vertical"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "box-horizontal"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        if (match = reFlex.exec(element.className))
                                  -        {
                                  -            flex = match[1]-0;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -            flexibleObjects.push({element: element, flex: flex});
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -        if (isVertical && flex || isHorizontal)
                                  -        {
                                  -            objects.push(object);
                                  -        }
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(element.className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        // TODO: IE6 only
                                  -        //var totalSpace = box[measureProperty];
                                  -        var totalSpace = box == root ? getWindowSize(window).height : boxObject.height ? boxObject.height : box[measureProperty];
                                  -        
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var rest = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            space = Math.floor(availableSpace * flex / flexSum); 
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            rest = availableSpace * flex % flexSum;
                                  -            if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -                
                                  -            object.height = space;
                                  -            
                                  -            //alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            element.style.height = space + "px";
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var totalSpace = box[measureProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var processingSpace = 0;
                                  -        var rest = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                space = Math.floor(availableSpace * flex / flexSum);
                                  -                space = Math.max(space, 0);
                                  -                
                                  -                // distribute remaining pixels
                                  -                rest = availableSpace * flex % flexSum;
                                  -                if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -                {
                                  -                    space++;
                                  -                }
                                  -                
                                  -                object.width = space;
                                  -            }
                                  -            else
                                  -            {
                                  -                space = object.width;
                                  -            }
                                  -            
                                  -            
                                  -            setClass(element, "box-horizontal-fix")
                                  -            
                                  -            element.style.top = 0;
                                  -            element.style.left = processingSpace + "px";
                                  -            element.style.width = space + "px";
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            
                                  -            var parentHeight = object.height = boxObject.height || box.offsetHeight;
                                  -            element.style.height = parentHeight + "px";
                                  -            /**/
                                  -            
                                  -            /*
                                  -            var parentHeight = object.height = boxObject.height || box.offsetHeight;
                                  -            var style = horizontalItemStyle + "top: 0; left: " + processingSpace + 
                                  -                    "px; width: " + space + "px; height: " + parentHeight + "px";
                                  -            element.style.cssText = style;
                                  -            /**/
                                  -            
                                  -            processingSpace += space;
                                  -        }
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -
                                  -var hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    // TODO: xxxpedro when lib.hasClass is called with more than 2 arguments?
                                  -    // this function can be optimized a lot if assumed 2 arguments only,
                                  -    // which seems to be what happens 99% of the time
                                  -    if (arguments.length == 2)
                                  -        return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -    
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -    ///if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var toggleClass = function(elt, name)
                                  -{
                                  -    if ((' '+elt.className+' ').indexOf(' '+name+' ') != -1)
                                  -    ///if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="box-vertical">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="box-horizontal box-flex-1">
                                  -        
                                  -            <div id="left" class="box-flex-1">
                                  -                left
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="box-vertical">
                                  -                <div id="righttool">
                                  -                    right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="box-flex-1">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    right
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box3.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box3.html
                                  deleted file mode 100644
                                  index c9e3539d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box3.html
                                  +++ /dev/null
                                  @@ -1,464 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Supports Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.box-vertical {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-horizontal {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.box-flex-2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Does not support Flexible Box
                                  -************************************************************************************************* */
                                  -.box-fix,
                                  -.box-fix .box-vertical,
                                  -.box-fix .box-horizontal {
                                  -    position: relative;
                                  -}
                                  -
                                  -.box-horizontal-fix {
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -/* change to box-scrollable class */
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -</style>
                                  -<script>
                                  -/**
                                  - * TODO: unify loops
                                  - * TODO: IE optimization (use margin trick) 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    window.zonresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "box-fix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                space: 0,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var element;
                                  -    
                                  -    var object;
                                  -    var objects = [];
                                  -    
                                  -    var fixedSpace = 0;
                                  -    var flexSum = 0;
                                  -    var flexCount = 0;
                                  -    
                                  -    var reFlex = /(?:^|\s)box-flex-(\d)/;
                                  -    var reBox = /(?:^|\s)box-(vertical|horizontal)/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "box-vertical"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "box-horizontal"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        if (match = reFlex.exec(element.className))
                                  -        {
                                  -            flex = match[1]-0;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -            flexCount++;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -        if (isVertical && flex || isHorizontal)
                                  -        {
                                  -            objects.push(object);
                                  -        }
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(element.className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        // TODO: IE6 only
                                  -        //var totalSpace = box[measureProperty];
                                  -        var totalSpace = box == root ? getWindowSize(window).height : boxObject.height ? boxObject.height : box[measureProperty];
                                  -        
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var rest = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            space = Math.floor(availableSpace * flex / flexSum); 
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            rest = availableSpace * flex % flexSum;
                                  -            if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -                
                                  -            object.height = space;
                                  -            
                                  -            //alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            element.style.height = space + "px";
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var totalSpace = box[measureProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var processingSpace = 0;
                                  -        var rest = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                space = Math.floor(availableSpace * flex / flexSum);
                                  -                space = Math.max(space, 0);
                                  -                
                                  -                // distribute remaining pixels
                                  -                rest = availableSpace * flex % flexSum;
                                  -                if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -                {
                                  -                    space++;
                                  -                }
                                  -                
                                  -                object.width = space;
                                  -            }
                                  -            else
                                  -            {
                                  -                space = object.width;
                                  -            }
                                  -            
                                  -            
                                  -            setClass(element, "box-horizontal-fix")
                                  -            
                                  -            element.style.top = 0;
                                  -            element.style.left = processingSpace + "px";
                                  -            element.style.width = space + "px";
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            
                                  -            var parentHeight = object.height = boxObject.height || box.offsetHeight;
                                  -            element.style.height = parentHeight + "px";
                                  -            /**/
                                  -            
                                  -            processingSpace += space;
                                  -        }
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="box-vertical">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="box-horizontal box-flex-1">
                                  -        
                                  -            <iframe src="panel.html" frameborder=0 style="display:block" class="box-flex-1"></iframe>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="box-vertical">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="box-flex-1">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html
                                  deleted file mode 100644
                                  index 480dd980..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html
                                  +++ /dev/null
                                  @@ -1,847 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Supports Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Does not support Flexible Box
                                  -************************************************************************************************* */
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -
                                  -</style>
                                  -<script>
                                  -/**
                                  - * TODO: unify loops
                                  - * TODO: IE optimization (use margin trick) 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var element;
                                  -    
                                  -    var object;
                                  -    var objects = [];
                                  -    
                                  -    var fixedSpace = 0;
                                  -    var flexSum = 0;
                                  -    var flexCount = 0;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -            flexCount++;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -//         if (isVertical && flex || isHorizontal)
                                  -//         {
                                  -            objects.push(object);
                                  -//         }
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    
                                  -    var totalSpace;
                                  -    
                                  -    if (isIE6)
                                  -    {
                                  -        // TODO: move the window piece to outside this function
                                  -        totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -            root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -            root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -            ?
                                  -            getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -            :
                                  -            boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -            ?
                                  -            boxObject[measureProperty] // if so, use the parent box measure
                                  -            :
                                  -            box[measureProperty]; // otherwise read it from the DOM and pray IE6 will get it right
                                  -    }
                                  -    else
                                  -    {
                                  -        totalSpace = box[measureProperty];
                                  -    }
                                  -    
                                  -    var availableSpace = totalSpace - fixedSpace;
                                  -    
                                  -    var remainingPixels = 0;
                                  -    var computedSpace = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    ///var isSafeToUseTranslation = flexCount == 1;
                                  -    var isSafeToUseTranslation = false;
                                  -    
                                  -    
                                  -    var postFlexClassName;
                                  -    var preFlexMeasure;
                                  -    var postFlexMeasure;
                                  -    
                                  -    if (isHorizontal)
                                  -    {
                                  -        preFlexMeasure = "left";
                                  -        postFlexMeasure = "right";
                                  -        postFlexClassName = "boxFixRight";
                                  -    }
                                  -    else
                                  -    {
                                  -        preFlexMeasure = "top";
                                  -        postFlexMeasure = "bottom";
                                  -        postFlexClassName = "boxFixPos";
                                  -    }
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(availableSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = availableSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -        
                                  -        
                                  -        
                                  -        if (isSafeToUseTranslation)
                                  -        {
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                if (isHorizontal)
                                  -                {
                                  -                    element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -                                        "px  0 " + computedSpace + "px";
                                  -                }
                                  -                else
                                  -                {
                                  -                    element.style.margin = computedSpace + "px 0 " + 
                                  -                                        (totalSpace - computedSpace - space) + "px 0";
                                  -                }
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, postFlexClassName);
                                  -                
                                  -                element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -        }
                                  -        
                                  -        computedSpace += space;
                                  -    }
                                  -    
                                  -    
                                  -    /*
                                  -    if (isVertical)
                                  -    {
                                  -        // TODO: IE6 only
                                  -        //var totalSpace = box[measureProperty];
                                  -        var totalSpace = box == root ? getWindowSize(window).height : boxObject.height ? boxObject.height : box[measureProperty];
                                  -        
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var remainingPixels = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            space = Math.floor(availableSpace * flex / flexSum); 
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = availableSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -                
                                  -            object.height = space;
                                  -            
                                  -            //alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            element.style.height = space + "px";
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var totalSpace = box[measureProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var computedSpace = 0;
                                  -        var remainingPixels = 0;
                                  -        
                                  -        
                                  -        var flexRendered = false;
                                  -        
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                space = Math.floor(availableSpace * flex / flexSum);
                                  -                space = Math.max(space, 0);
                                  -                
                                  -                // distribute remaining pixels
                                  -                remainingPixels = availableSpace * flex % flexSum;
                                  -                if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -                {
                                  -                    space++;
                                  -                }
                                  -                
                                  -                object.width = space;
                                  -                flexRendered = true;
                                  -            }
                                  -            else
                                  -            {
                                  -                space = object.width;
                                  -            }
                                  -            
                                  -            
                                  -            
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                element.style.margin = "0 " + (totalSpace - computedSpace - space) + "px " +
                                  -                        "0 " + computedSpace + "px";
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, "boxFixRight");
                                  -                
                                  -                element.style.right = totalSpace - computedSpace - space + "px";
                                  -                element.style.width = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -            }
                                  -            
                                  -            
                                  -//             setClass(element, "boxFixPos")
                                  -//             
                                  -//             element.style.top = 0;
                                  -//             element.style.left = computedSpace + "px";
                                  -//             element.style.width = space + "px";
                                  -//             
                                  -//             // boxObject.height IE6 only
                                  -//             
                                  -//             var parentHeight = object.height = boxObject.height || box.offsetHeight;
                                  -//             element.style.height = parentHeight + "px";
                                  -            
                                  -            computedSpace += space;
                                  -        }
                                  -    }
                                  -    /**/
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -function isSafeToUseTranslation(root)
                                  -{
                                  -    // look for a particular box in the context chain
                                  -    var lookAncestor = function(element, type, options)
                                  -    {
                                  -        for(var i = options.index, parent; i >= 0; i++)
                                  -        {
                                  -            parent = contexts[i].element;
                                  -            
                                  -            if (type == "box" && hasClass(parent, options.boxClass) || 
                                  -                reFlex.test(" " + parent.className + " "))
                                  -            {
                                  -                options.index = i;
                                  -                options.element = parent;
                                  -                
                                  -                return true;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -    
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    
                                  -    var className = " " + root.className + " ";
                                  -    var match = reBox.exec(className);
                                  -    var flex = reFlex.test(className);
                                  -    
                                  -    if (!match) return true;
                                  -    
                                  -    // initializes the first context
                                  -    var contexts = [{
                                  -            element: root, 
                                  -            index: 0, 
                                  -            orient: match[1], 
                                  -            flex: flex, 
                                  -            flexCount:0, 
                                  -            nonFlexCount:0,
                                  -            interrupted: false,
                                  -            deepFlex: false
                                  -        }];
                                  -    
                                  -    while (contexts.length > 0)
                                  -    {
                                  -        var context = contexts[contexts.length-1];
                                  -        var element = context.element;
                                  -        var index = context.index;
                                  -         
                                  -        var childs = element.childNodes;
                                  -        var child;
                                  -        
                                  -        context.interrupted = false;
                                  -        
                                  -        // examine the box container's child nodes
                                  -        for (var l = childs.length; context.index < l; context.index++)
                                  -        {
                                  -            child = childs[context.index];
                                  -            
                                  -            // ignore non-element nodes
                                  -            if (child.nodeType != 1) continue;
                                  -            
                                  -            className = " " + child.className + " ";
                                  -            
                                  -            // flexible box
                                  -            if (flex = reFlex.test(className))
                                  -            {
                                  -                context.flexCount++;
                                  -                
                                  -                if (contexts.length > 1)
                                  -                {
                                  -                    var orient = context.orient;
                                  -                    var options = {index: contexts.length-2, boxClass: orient + "box"};
                                  -                    
                                  -                    var found = lookAncestor(child, "flex", options);
                                  -                    if (found && lookAncestor(child, "box", options))
                                  -                    {
                                  -                        context.deepFlex = true;
                                  -                    }
                                  -                }
                                  -            }
                                  -            // non-flexible box
                                  -            else
                                  -            {
                                  -                context.nonFlexCount++;
                                  -            }
                                  -            
                                  -            // more than one flexible box per container
                                  -            if (context.flexCount > 1)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // we can't use the translation with a nested flex elements with the same orientation
                                  -            // when the deepest one has one or more non flexible siblings (box container's child)
                                  -            if (context.deepFlex && context.nonFlexCount > 0)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // container box
                                  -            if (match = reBox.exec(className))
                                  -            {
                                  -                contexts.push({
                                  -                        element: child, 
                                  -                        index: 0, 
                                  -                        orient: match[1], 
                                  -                        flex: flex, 
                                  -                        flexCount: 0, 
                                  -                        nonFlexCount: 0,
                                  -                        interrupted: false,
                                  -                        deepFlex: false
                                  -                    });
                                  -                
                                  -                // advance the index once the current child has been examined
                                  -                context.index++;
                                  -                
                                  -                // flag the context interruption
                                  -                context.interrupted = true;
                                  -                
                                  -                break;
                                  -            }
                                  -        }
                                  -        
                                  -        // we have finished examined all child nodes so the context must be removed from the chain
                                  -        if (!context.interrupted)
                                  -        {
                                  -            contexts.pop();
                                  -        }
                                  -    }
                                  -    
                                  -    // no restrictions found, therefore we can safely use the style translation
                                  -    return true;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html.bak b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html.bak
                                  deleted file mode 100644
                                  index d5c2ce78..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box4.html.bak
                                  +++ /dev/null
                                  @@ -1,508 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Supports Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.box-vertical {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-horizontal {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.box-flex-1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.box-flex-2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Does not support Flexible Box
                                  -************************************************************************************************* */
                                  -.box-fix,
                                  -.box-fix .box-vertical,
                                  -.box-fix .box-horizontal {
                                  -    position: relative;
                                  -}
                                  -
                                  -.box-horizontal-fix {
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.box-horizontal-fix-right {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.box-fix .box-flex-fix {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -/* change to box-scrollable class */
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -</style>
                                  -<script>
                                  -/**
                                  - * TODO: unify loops
                                  - * TODO: IE optimization (use margin trick) 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    window.zonresize = function()
                                  -    {
                                  -        draw();
                                  -        //setTimeout(draw, 0);
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "box-fix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                space: 0,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var element;
                                  -    
                                  -    var object;
                                  -    var objects = [];
                                  -    
                                  -    var fixedSpace = 0;
                                  -    var flexSum = 0;
                                  -    var flexCount = 0;
                                  -    
                                  -    var reFlex = /(?:^|\s)box-flex-(\d)/;
                                  -    var reBox = /(?:^|\s)box-(vertical|horizontal)/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "box-vertical"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "box-horizontal"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        if (match = reFlex.exec(element.className))
                                  -        {
                                  -            flex = match[1]-0;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -            flexCount++;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -        if (isVertical && flex || isHorizontal)
                                  -        {
                                  -            objects.push(object);
                                  -        }
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(element.className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (isVertical)
                                  -    {
                                  -        // TODO: IE6 only
                                  -        //var totalSpace = box[measureProperty];
                                  -        var totalSpace = box == root ? getWindowSize(window).height : boxObject.height ? boxObject.height : box[measureProperty];
                                  -        
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var rest = 0;
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            space = Math.floor(availableSpace * flex / flexSum); 
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            rest = availableSpace * flex % flexSum;
                                  -            if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -                
                                  -            object.height = space;
                                  -            
                                  -            //alert(totalSpace + " - " + fixedSpace + " = "  +  availableSpace );
                                  -            element.style.height = space + "px";
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        var totalSpace = box[measureProperty];
                                  -        var availableSpace = totalSpace - fixedSpace;
                                  -        
                                  -        var processingSpace = 0;
                                  -        var rest = 0;
                                  -        
                                  -        
                                  -        var flexRendered = false;
                                  -        
                                  -        
                                  -        for (var i = 0, length = objects.length; i < length; i++)
                                  -        {
                                  -            object = objects[i];
                                  -            
                                  -            element = object.element;
                                  -            flex = object.flex;
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                space = Math.floor(availableSpace * flex / flexSum);
                                  -                space = Math.max(space, 0);
                                  -                
                                  -                // distribute remaining pixels
                                  -                rest = availableSpace * flex % flexSum;
                                  -                if (rest > 0 && processingSpace + space + rest <= totalSpace)
                                  -                {
                                  -                    space++;
                                  -                }
                                  -                
                                  -                object.width = space;
                                  -                flexRendered = true;
                                  -            }
                                  -            else
                                  -            {
                                  -                space = object.width;
                                  -            }
                                  -            
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "box-flex-fix");
                                  -            
                                  -                element.style.margin = "0 " + (totalSpace - processingSpace - space) + "px " +
                                  -                        "0 " + processingSpace + "px";
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, "box-horizontal-fix-right");
                                  -                
                                  -                element.style.right = totalSpace - processingSpace - space + "px";
                                  -                element.style.width = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "box-horizontal-fix");
                                  -                
                                  -                element.style.left = processingSpace + "px";
                                  -                element.style.width = space + "px";
                                  -            }
                                  -            
                                  -            
                                  -            /*
                                  -            setClass(element, "box-horizontal-fix")
                                  -            
                                  -            element.style.top = 0;
                                  -            element.style.left = processingSpace + "px";
                                  -            element.style.width = space + "px";
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            
                                  -            var parentHeight = object.height = boxObject.height || box.offsetHeight;
                                  -            element.style.height = parentHeight + "px";
                                  -            /**/
                                  -            
                                  -            processingSpace += space;
                                  -        }
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="box-vertical">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="box-horizontal box-flex-1">
                                  -        
                                  -            <iframe src="panel.html" frameborder=0 style="display:block" class="box-flex-1"></iframe>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="box-vertical">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="box-flex-1">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5.html
                                  deleted file mode 100644
                                  index e6131806..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5.html
                                  +++ /dev/null
                                  @@ -1,756 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -/*
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * TODO: problem with borders (Firebug Lite will use) 
                                  - * TODO: problem with padding/margin 
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -//     var isSafeToUseTranslation = false;
                                  -//     
                                  -//     var postFlexClassName;
                                  -//     var preFlexMeasure;
                                  -//     var postFlexMeasure;
                                  -//     
                                  -//     if (isHorizontal)
                                  -//     {
                                  -//         preFlexMeasure = "left";
                                  -//         postFlexMeasure = "right";
                                  -//         postFlexClassName = "boxFixRight";
                                  -//     }
                                  -//     else
                                  -//     {
                                  -//         preFlexMeasure = "top";
                                  -//         postFlexMeasure = "bottom";
                                  -//         postFlexClassName = "boxFixPos";
                                  -//     }
                                  -
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            /*
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] +
                                  -                    padding[measureBeforeProperty] + padding[measureAfterProperty] +
                                  -                    border[measureBeforeProperty] + border[measureAfterProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (isIE6)
                                  -    {
                                  -        // TODO: move the window piece to outside this function
                                  -        totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -            root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -            root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -            ?
                                  -            getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -            :
                                  -            boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -            ?
                                  -            boxObject[measureProperty] // if so, use the parent box measure
                                  -            :
                                  -            box[measureProperty]; // otherwise read it from the DOM and pray IE6 will get it right
                                  -    }
                                  -    else
                                  -    {
                                  -        totalSpace = box[measureProperty];
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -//         if (isSafeToUseTranslation)
                                  -//         {
                                  -//             if (flex)
                                  -//             {
                                  -//                 setClass(element, "boxFixFlex");
                                  -//             
                                  -//                 if (isHorizontal)
                                  -//                 {
                                  -//                     element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -//                                         "px  0 " + computedSpace + "px";
                                  -//                 }
                                  -//                 else
                                  -//                 {
                                  -//                     element.style.margin = computedSpace + "px 0 " + 
                                  -//                                         (totalSpace - computedSpace - space) + "px 0";
                                  -//                 }
                                  -//             }
                                  -//             else if (flexRendered)
                                  -//             {
                                  -//                 setClass(element, postFlexClassName);
                                  -//                 
                                  -//                 element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -//                 element.style[dimensionProperty] = space + "px";
                                  -//             }
                                  -//             else
                                  -//             {
                                  -//                 setClass(element, "boxFixPos");
                                  -//                 
                                  -//                 element.style[preFlexMeasure] = computedSpace + "px";
                                  -//                 element.style[dimensionProperty] = space + "px";
                                  -//             }
                                  -//         }
                                  -//         else
                                  -//         {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -//         }
                                  -        
                                  -        computedSpace += space;
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -function isSafeToUseTranslation(root)
                                  -{
                                  -    // look for a particular box in the context chain
                                  -    var lookAncestor = function(element, type, options)
                                  -    {
                                  -        for(var i = options.index, parent; i >= 0; i++)
                                  -        {
                                  -            parent = contexts[i].element;
                                  -            
                                  -            if (type == "box" && hasClass(parent, options.boxClass) || 
                                  -                reFlex.test(" " + parent.className + " "))
                                  -            {
                                  -                options.index = i;
                                  -                options.element = parent;
                                  -                
                                  -                return true;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -    
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    
                                  -    var className = " " + root.className + " ";
                                  -    var match = reBox.exec(className);
                                  -    var flex = reFlex.test(className);
                                  -    
                                  -    if (!match) return true;
                                  -    
                                  -    // initializes the first context
                                  -    var contexts = [{
                                  -            element: root, 
                                  -            index: 0, 
                                  -            orient: match[1], 
                                  -            flex: flex, 
                                  -            flexBoxCount:0, 
                                  -            nonFlexCount:0,
                                  -            interrupted: false,
                                  -            deepFlex: false
                                  -        }];
                                  -    
                                  -    while (contexts.length > 0)
                                  -    {
                                  -        var context = contexts[contexts.length-1];
                                  -        var element = context.element;
                                  -        var index = context.index;
                                  -         
                                  -        var childs = element.childNodes;
                                  -        var child;
                                  -        
                                  -        context.interrupted = false;
                                  -        
                                  -        // examine the box container's child nodes
                                  -        for (var l = childs.length; context.index < l; context.index++)
                                  -        {
                                  -            child = childs[context.index];
                                  -            
                                  -            // ignore non-element nodes
                                  -            if (child.nodeType != 1) continue;
                                  -            
                                  -            className = " " + child.className + " ";
                                  -            
                                  -            // flexible box
                                  -            if (flex = reFlex.test(className))
                                  -            {
                                  -                context.flexBoxCount++;
                                  -                
                                  -                if (contexts.length > 1)
                                  -                {
                                  -                    var orient = context.orient;
                                  -                    var options = {index: contexts.length-2, boxClass: orient + "box"};
                                  -                    
                                  -                    var found = lookAncestor(child, "flex", options);
                                  -                    if (found && lookAncestor(child, "box", options))
                                  -                    {
                                  -                        context.deepFlex = true;
                                  -                    }
                                  -                }
                                  -            }
                                  -            // non-flexible box
                                  -            else
                                  -            {
                                  -                context.nonFlexCount++;
                                  -            }
                                  -            
                                  -            // more than one flexible box per container
                                  -            if (context.flexBoxCount > 1)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // we can't use the translation with a nested flex elements with the same orientation
                                  -            // when the deepest one has one or more non flexible siblings (box container's child)
                                  -            if (context.deepFlex && context.nonFlexCount > 0)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // container box
                                  -            if (match = reBox.exec(className))
                                  -            {
                                  -                contexts.push({
                                  -                        element: child, 
                                  -                        index: 0, 
                                  -                        orient: match[1], 
                                  -                        flex: flex, 
                                  -                        flexBoxCount: 0, 
                                  -                        nonFlexCount: 0,
                                  -                        interrupted: false,
                                  -                        deepFlex: false
                                  -                    });
                                  -                
                                  -                // advance the index once the current child has been examined
                                  -                context.index++;
                                  -                
                                  -                // flag the context interruption
                                  -                context.interrupted = true;
                                  -                
                                  -                break;
                                  -            }
                                  -        }
                                  -        
                                  -        // we have finished examined all child nodes so the context must be removed from the chain
                                  -        if (!context.interrupted)
                                  -        {
                                  -            contexts.pop();
                                  -        }
                                  -    }
                                  -    
                                  -    // no restrictions found, therefore we can safely use the style translation
                                  -    return true;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -                <!--
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -                -->
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5trans.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5trans.html
                                  deleted file mode 100644
                                  index be295889..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box5trans.html
                                  +++ /dev/null
                                  @@ -1,798 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -/*
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * TODO: problem with borders (Firebug Lite will use) 
                                  - * TODO: problem with padding/margin 
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    window.onresize = function()
                                  -    {
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    var isSafeToUseTranslation = true;
                                  -    
                                  -    var postFlexClassName;
                                  -    var preFlexMeasure;
                                  -    var postFlexMeasure;
                                  -    
                                  -    if (isHorizontal)
                                  -    {
                                  -        preFlexMeasure = "left";
                                  -        postFlexMeasure = "right";
                                  -        postFlexClassName = "boxFixRight";
                                  -    }
                                  -    else
                                  -    {
                                  -        preFlexMeasure = "top";
                                  -        postFlexMeasure = "bottom";
                                  -        postFlexClassName = "boxFixPos";
                                  -    }
                                  -
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = element[measureProperty];
                                  -            /*
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] +
                                  -                    padding[measureBeforeProperty] + padding[measureAfterProperty] +
                                  -                    border[measureBeforeProperty] + border[measureAfterProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += space;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -//     if (isIE6)
                                  -//     {
                                  -//         // TODO: move the window piece to outside this function
                                  -//         totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -//             root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -//             root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -//             ?
                                  -//             getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -//             :
                                  -//             boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -//             ?
                                  -//             boxObject[measureProperty] // if so, use the parent box measure
                                  -//             :
                                  -//             box[measureProperty]; // otherwise read it from the DOM and pray IE6 will get it right
                                  -//     }
                                  -
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        var boxMeasure;
                                  -        
                                  -        // IE6 will take into account the
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -            boxMeasure = box[measureProperty];
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -        else
                                  -        {
                                  -            boxMeasure = box[measureProperty];
                                  -        }
                                  -        
                                  -        totalSpace = boxMeasure -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -        if (isSafeToUseTranslation)
                                  -        {
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                if (isHorizontal)
                                  -                {
                                  -                    element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -                                        "px  0 " + computedSpace + "px";
                                  -                }
                                  -                else
                                  -                {
                                  -                    element.style.margin = computedSpace + "px 0 " + 
                                  -                                        (totalSpace - computedSpace - space) + "px 0";
                                  -                }
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, postFlexClassName);
                                  -                
                                  -                element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -        }
                                  -        
                                  -        computedSpace += space;
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -function isSafeToUseTranslation(root)
                                  -{
                                  -    // look for a particular box in the context chain
                                  -    var lookAncestor = function(element, type, options)
                                  -    {
                                  -        for(var i = options.index, parent; i >= 0; i++)
                                  -        {
                                  -            parent = contexts[i].element;
                                  -            
                                  -            if (type == "box" && hasClass(parent, options.boxClass) || 
                                  -                reFlex.test(" " + parent.className + " "))
                                  -            {
                                  -                options.index = i;
                                  -                options.element = parent;
                                  -                
                                  -                return true;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -    
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    
                                  -    var className = " " + root.className + " ";
                                  -    var match = reBox.exec(className);
                                  -    var flex = reFlex.test(className);
                                  -    
                                  -    if (!match) return true;
                                  -    
                                  -    // initializes the first context
                                  -    var contexts = [{
                                  -            element: root, 
                                  -            index: 0, 
                                  -            orient: match[1], 
                                  -            flex: flex, 
                                  -            flexBoxCount:0, 
                                  -            nonFlexCount:0,
                                  -            interrupted: false,
                                  -            deepFlex: false
                                  -        }];
                                  -    
                                  -    while (contexts.length > 0)
                                  -    {
                                  -        var context = contexts[contexts.length-1];
                                  -        var element = context.element;
                                  -        var index = context.index;
                                  -         
                                  -        var childs = element.childNodes;
                                  -        var child;
                                  -        
                                  -        context.interrupted = false;
                                  -        
                                  -        // examine the box container's child nodes
                                  -        for (var l = childs.length; context.index < l; context.index++)
                                  -        {
                                  -            child = childs[context.index];
                                  -            
                                  -            // ignore non-element nodes
                                  -            if (child.nodeType != 1) continue;
                                  -            
                                  -            className = " " + child.className + " ";
                                  -            
                                  -            // flexible box
                                  -            if (flex = reFlex.test(className))
                                  -            {
                                  -                context.flexBoxCount++;
                                  -                
                                  -                if (contexts.length > 1)
                                  -                {
                                  -                    var orient = context.orient;
                                  -                    var options = {index: contexts.length-2, boxClass: orient + "box"};
                                  -                    
                                  -                    var found = lookAncestor(child, "flex", options);
                                  -                    if (found && lookAncestor(child, "box", options))
                                  -                    {
                                  -                        context.deepFlex = true;
                                  -                    }
                                  -                }
                                  -            }
                                  -            // non-flexible box
                                  -            else
                                  -            {
                                  -                context.nonFlexCount++;
                                  -            }
                                  -            
                                  -            // more than one flexible box per container
                                  -            if (context.flexBoxCount > 1)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // we can't use the translation with a nested flex elements with the same orientation
                                  -            // when the deepest one has one or more non flexible siblings (box container's child)
                                  -            if (context.deepFlex && context.nonFlexCount > 0)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // container box
                                  -            if (match = reBox.exec(className))
                                  -            {
                                  -                contexts.push({
                                  -                        element: child, 
                                  -                        index: 0, 
                                  -                        orient: match[1], 
                                  -                        flex: flex, 
                                  -                        flexBoxCount: 0, 
                                  -                        nonFlexCount: 0,
                                  -                        interrupted: false,
                                  -                        deepFlex: false
                                  -                    });
                                  -                
                                  -                // advance the index once the current child has been examined
                                  -                context.index++;
                                  -                
                                  -                // flag the context interruption
                                  -                context.interrupted = true;
                                  -                
                                  -                break;
                                  -            }
                                  -        }
                                  -        
                                  -        // we have finished examined all child nodes so the context must be removed from the chain
                                  -        if (!context.interrupted)
                                  -        {
                                  -            contexts.pop();
                                  -        }
                                  -    }
                                  -    
                                  -    // no restrictions found, therefore we can safely use the style translation
                                  -    return true;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -                <!--
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -                -->
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6.html
                                  deleted file mode 100644
                                  index 5b6090d1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6.html
                                  +++ /dev/null
                                  @@ -1,769 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -/*
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 50%;
                                  -    height: 50%;
                                  -    zmargin: 10px;
                                  -    padding: 2px;
                                  -    border: 5px solid green;
                                  -    zvisibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -    padding: 20px;
                                  -    border: 5px solid red;
                                  -}
                                  -
                                  -#content {
                                  -    zmargin: 10px;
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -//     var isSafeToUseTranslation = false;
                                  -//     
                                  -//     var postFlexClassName;
                                  -//     var preFlexMeasure;
                                  -//     var postFlexMeasure;
                                  -//     
                                  -//     if (isHorizontal)
                                  -//     {
                                  -//         preFlexMeasure = "left";
                                  -//         postFlexMeasure = "right";
                                  -//         postFlexClassName = "boxFixRight";
                                  -//     }
                                  -//     else
                                  -//     {
                                  -//         preFlexMeasure = "top";
                                  -//         postFlexMeasure = "bottom";
                                  -//         postFlexClassName = "boxFixPos";
                                  -//     }
                                  -
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    /*
                                  -    if (isIE6)
                                  -    {
                                  -        // TODO: move the window piece to outside this function
                                  -        totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -            root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -            root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -            ?
                                  -            getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -            :
                                  -            boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -            ?
                                  -            boxObject[measureProperty] // if so, use the parent box measure
                                  -            :
                                  -            null; // otherwise let it be calculated above like in other browsers
                                  -    }
                                  -    /**/
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        // IE6 will take into account the
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -        }
                                  -        
                                  -        totalSpace = box[measureProperty] -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -//         if (isSafeToUseTranslation)
                                  -//         {
                                  -//             if (flex)
                                  -//             {
                                  -//                 setClass(element, "boxFixFlex");
                                  -//             
                                  -//                 if (isHorizontal)
                                  -//                 {
                                  -//                     element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -//                                         "px  0 " + computedSpace + "px";
                                  -//                 }
                                  -//                 else
                                  -//                 {
                                  -//                     element.style.margin = computedSpace + "px 0 " + 
                                  -//                                         (totalSpace - computedSpace - space) + "px 0";
                                  -//                 }
                                  -//             }
                                  -//             else if (flexRendered)
                                  -//             {
                                  -//                 setClass(element, postFlexClassName);
                                  -//                 
                                  -//                 element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -//                 element.style[dimensionProperty] = space + "px";
                                  -//             }
                                  -//             else
                                  -//             {
                                  -//                 setClass(element, "boxFixPos");
                                  -//                 
                                  -//                 element.style[preFlexMeasure] = computedSpace + "px";
                                  -//                 element.style[dimensionProperty] = space + "px";
                                  -//             }
                                  -//         }
                                  -//         else
                                  -//         {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -//         }
                                  -        
                                  -        computedSpace += (object.box[dimensionProperty] || space);
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -function isSafeToUseTranslation(root)
                                  -{
                                  -    // look for a particular box in the context chain
                                  -    var lookAncestor = function(element, type, options)
                                  -    {
                                  -        for(var i = options.index, parent; i >= 0; i++)
                                  -        {
                                  -            parent = contexts[i].element;
                                  -            
                                  -            if (type == "box" && hasClass(parent, options.boxClass) || 
                                  -                reFlex.test(" " + parent.className + " "))
                                  -            {
                                  -                options.index = i;
                                  -                options.element = parent;
                                  -                
                                  -                return true;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -    
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    
                                  -    var className = " " + root.className + " ";
                                  -    var match = reBox.exec(className);
                                  -    var flex = reFlex.test(className);
                                  -    
                                  -    if (!match) return true;
                                  -    
                                  -    // initializes the first context
                                  -    var contexts = [{
                                  -            element: root, 
                                  -            index: 0, 
                                  -            orient: match[1], 
                                  -            flex: flex, 
                                  -            flexBoxCount:0, 
                                  -            nonFlexCount:0,
                                  -            interrupted: false,
                                  -            deepFlex: false
                                  -        }];
                                  -    
                                  -    while (contexts.length > 0)
                                  -    {
                                  -        var context = contexts[contexts.length-1];
                                  -        var element = context.element;
                                  -        var index = context.index;
                                  -         
                                  -        var childs = element.childNodes;
                                  -        var child;
                                  -        
                                  -        context.interrupted = false;
                                  -        
                                  -        // examine the box container's child nodes
                                  -        for (var l = childs.length; context.index < l; context.index++)
                                  -        {
                                  -            child = childs[context.index];
                                  -            
                                  -            // ignore non-element nodes
                                  -            if (child.nodeType != 1) continue;
                                  -            
                                  -            className = " " + child.className + " ";
                                  -            
                                  -            // flexible box
                                  -            if (flex = reFlex.test(className))
                                  -            {
                                  -                context.flexBoxCount++;
                                  -                
                                  -                if (contexts.length > 1)
                                  -                {
                                  -                    var orient = context.orient;
                                  -                    var options = {index: contexts.length-2, boxClass: orient + "box"};
                                  -                    
                                  -                    var found = lookAncestor(child, "flex", options);
                                  -                    if (found && lookAncestor(child, "box", options))
                                  -                    {
                                  -                        context.deepFlex = true;
                                  -                    }
                                  -                }
                                  -            }
                                  -            // non-flexible box
                                  -            else
                                  -            {
                                  -                context.nonFlexCount++;
                                  -            }
                                  -            
                                  -            // more than one flexible box per container
                                  -            if (context.flexBoxCount > 1)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // we can't use the translation with a nested flex elements with the same orientation
                                  -            // when the deepest one has one or more non flexible siblings (box container's child)
                                  -            if (context.deepFlex && context.nonFlexCount > 0)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // container box
                                  -            if (match = reBox.exec(className))
                                  -            {
                                  -                contexts.push({
                                  -                        element: child, 
                                  -                        index: 0, 
                                  -                        orient: match[1], 
                                  -                        flex: flex, 
                                  -                        flexBoxCount: 0, 
                                  -                        nonFlexCount: 0,
                                  -                        interrupted: false,
                                  -                        deepFlex: false
                                  -                    });
                                  -                
                                  -                // advance the index once the current child has been examined
                                  -                context.index++;
                                  -                
                                  -                // flag the context interruption
                                  -                context.interrupted = true;
                                  -                
                                  -                break;
                                  -            }
                                  -        }
                                  -        
                                  -        // we have finished examined all child nodes so the context must be removed from the chain
                                  -        if (!context.interrupted)
                                  -        {
                                  -            contexts.pop();
                                  -        }
                                  -    }
                                  -    
                                  -    // no restrictions found, therefore we can safely use the style translation
                                  -    return true;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                right (I'm a div)
                                  -            </div>
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html
                                  deleted file mode 100644
                                  index 7c178eb2..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html
                                  +++ /dev/null
                                  @@ -1,709 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    var isSafeToUseTranslation = true;
                                  -    
                                  -    var postFlexClassName;
                                  -    var preFlexMeasure;
                                  -    var postFlexMeasure;
                                  -    
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    if (isHorizontal)
                                  -    {
                                  -        preFlexMeasure = "left";
                                  -        postFlexMeasure = "right";
                                  -        postFlexClassName = "boxFixRight";
                                  -    }
                                  -    else
                                  -    {
                                  -        preFlexMeasure = "top";
                                  -        postFlexMeasure = "bottom";
                                  -        postFlexClassName = "boxFixPos";
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    /*
                                  -    if (isIE6)
                                  -    {
                                  -        // TODO: move the window piece to outside this function
                                  -        totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -            root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -            root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -            ?
                                  -            getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -            :
                                  -            boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -            ?
                                  -            boxObject[measureProperty] // if so, use the parent box measure
                                  -            :
                                  -            null; // otherwise let it be calculated above like in other browsers
                                  -    }
                                  -    /**/
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        // IE6 will take into account the
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -        }
                                  -        
                                  -        totalSpace = box[measureProperty] -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        //if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -        if (isSafeToUseTranslation)
                                  -        {
                                  -        
                                  -        
                                  -//             if (isVertical)
                                  -//             {
                                  -//                 /*setClass(element, "boxFixFlex");
                                  -//                 element.style.height = space + "px";/**/
                                  -//                 
                                  -//                 setClass(element, "boxFixFlex");
                                  -//                 element.style.height = space  + "px"; 
                                  -//                 element.style.top = computedSpace + "px";                
                                  -//             }
                                  -//             else
                                  -//             {
                                  -//                 setClass(element, "boxFixFlex");
                                  -//                 element.style.width = space + "px"; 
                                  -//                 element.style.left = computedSpace + "px";                
                                  -//             }
                                  -            
                                  -                    
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                if (isHorizontal)
                                  -                {
                                  -                    /*
                                  -                    element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -                                        "px  0 " + computedSpace + "px";
                                  -                                        /**/
                                  -                    element.style.right = totalSpace - computedSpace - space + "px"; 
                                  -                    element.style.left = computedSpace + "px";
                                  -                }
                                  -                else
                                  -                {
                                  -                    element.style.margin = computedSpace + "px 0 " + 
                                  -                                        (totalSpace - computedSpace - space) + "px 0";
                                  -                }
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, postFlexClassName);
                                  -                
                                  -                element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -        }
                                  -        
                                  -        //computedSpace += (object.box[dimensionProperty] || space);
                                  -        computedSpace += space;
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -                <!--
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -                -->
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html.bak b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html.bak
                                  deleted file mode 100644
                                  index 68303b90..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box6trans.html.bak
                                  +++ /dev/null
                                  @@ -1,769 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -/*
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 50%;
                                  -    height: 50%;
                                  -    zmargin: 10px;
                                  -    padding: 2px;
                                  -    border: 5px solid green;
                                  -    zvisibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -    padding: 20px;
                                  -    border: 5px solid red;
                                  -}
                                  -
                                  -#content {
                                  -    zmargin: 10px;
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    var isSafeToUseTranslation = true;
                                  -    
                                  -    var postFlexClassName;
                                  -    var preFlexMeasure;
                                  -    var postFlexMeasure;
                                  -    
                                  -    if (isHorizontal)
                                  -    {
                                  -        preFlexMeasure = "left";
                                  -        postFlexMeasure = "right";
                                  -        postFlexClassName = "boxFixRight";
                                  -    }
                                  -    else
                                  -    {
                                  -        preFlexMeasure = "top";
                                  -        postFlexMeasure = "bottom";
                                  -        postFlexClassName = "boxFixPos";
                                  -    }
                                  -
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    /*
                                  -    if (isIE6)
                                  -    {
                                  -        // TODO: move the window piece to outside this function
                                  -        totalSpace = box == root &&  // if we are adjusting the layout of the root and the root
                                  -            root.parentNode == doc.getElementsByTagName("body")[0] && // is a <body> child 
                                  -            root.currentStyle[measureProperty] == "100%" // with a 100% measure property
                                  -            ?
                                  -            getWindowSize(window)[measureProperty] // then we'll use the window measure 
                                  -            :
                                  -            boxObject[measureProperty] // otherwise look if we already computed the parent measure
                                  -            ?
                                  -            boxObject[measureProperty] // if so, use the parent box measure
                                  -            :
                                  -            null; // otherwise let it be calculated above like in other browsers
                                  -    }
                                  -    /**/
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        // IE6 will take into account the
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -        }
                                  -        
                                  -        totalSpace = box[measureProperty] -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -        if (isIE6)
                                  -        {
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -        if (isSafeToUseTranslation)
                                  -        {
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                if (isHorizontal)
                                  -                {
                                  -                    element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -                                        "px  0 " + computedSpace + "px";
                                  -                }
                                  -                else
                                  -                {
                                  -                    element.style.margin = computedSpace + "px 0 " + 
                                  -                                        (totalSpace - computedSpace - space) + "px 0";
                                  -                }
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, postFlexClassName);
                                  -                
                                  -                element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -        }
                                  -        
                                  -        computedSpace += (object.box[dimensionProperty] || space);
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -
                                  -function isSafeToUseTranslation(root)
                                  -{
                                  -    // look for a particular box in the context chain
                                  -    var lookAncestor = function(element, type, options)
                                  -    {
                                  -        for(var i = options.index, parent; i >= 0; i++)
                                  -        {
                                  -            parent = contexts[i].element;
                                  -            
                                  -            if (type == "box" && hasClass(parent, options.boxClass) || 
                                  -                reFlex.test(" " + parent.className + " "))
                                  -            {
                                  -                options.index = i;
                                  -                options.element = parent;
                                  -                
                                  -                return true;
                                  -            }
                                  -        }
                                  -        return null;
                                  -    };
                                  -    
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    
                                  -    var className = " " + root.className + " ";
                                  -    var match = reBox.exec(className);
                                  -    var flex = reFlex.test(className);
                                  -    
                                  -    if (!match) return true;
                                  -    
                                  -    // initializes the first context
                                  -    var contexts = [{
                                  -            element: root, 
                                  -            index: 0, 
                                  -            orient: match[1], 
                                  -            flex: flex, 
                                  -            flexBoxCount:0, 
                                  -            nonFlexCount:0,
                                  -            interrupted: false,
                                  -            deepFlex: false
                                  -        }];
                                  -    
                                  -    while (contexts.length > 0)
                                  -    {
                                  -        var context = contexts[contexts.length-1];
                                  -        var element = context.element;
                                  -        var index = context.index;
                                  -         
                                  -        var childs = element.childNodes;
                                  -        var child;
                                  -        
                                  -        context.interrupted = false;
                                  -        
                                  -        // examine the box container's child nodes
                                  -        for (var l = childs.length; context.index < l; context.index++)
                                  -        {
                                  -            child = childs[context.index];
                                  -            
                                  -            // ignore non-element nodes
                                  -            if (child.nodeType != 1) continue;
                                  -            
                                  -            className = " " + child.className + " ";
                                  -            
                                  -            // flexible box
                                  -            if (flex = reFlex.test(className))
                                  -            {
                                  -                context.flexBoxCount++;
                                  -                
                                  -                if (contexts.length > 1)
                                  -                {
                                  -                    var orient = context.orient;
                                  -                    var options = {index: contexts.length-2, boxClass: orient + "box"};
                                  -                    
                                  -                    var found = lookAncestor(child, "flex", options);
                                  -                    if (found && lookAncestor(child, "box", options))
                                  -                    {
                                  -                        context.deepFlex = true;
                                  -                    }
                                  -                }
                                  -            }
                                  -            // non-flexible box
                                  -            else
                                  -            {
                                  -                context.nonFlexCount++;
                                  -            }
                                  -            
                                  -            // more than one flexible box per container
                                  -            if (context.flexBoxCount > 1)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // we can't use the translation with a nested flex elements with the same orientation
                                  -            // when the deepest one has one or more non flexible siblings (box container's child)
                                  -            if (context.deepFlex && context.nonFlexCount > 0)
                                  -            {
                                  -                return false;
                                  -            }
                                  -            
                                  -            // container box
                                  -            if (match = reBox.exec(className))
                                  -            {
                                  -                contexts.push({
                                  -                        element: child, 
                                  -                        index: 0, 
                                  -                        orient: match[1], 
                                  -                        flex: flex, 
                                  -                        flexBoxCount: 0, 
                                  -                        nonFlexCount: 0,
                                  -                        interrupted: false,
                                  -                        deepFlex: false
                                  -                    });
                                  -                
                                  -                // advance the index once the current child has been examined
                                  -                context.index++;
                                  -                
                                  -                // flag the context interruption
                                  -                context.interrupted = true;
                                  -                
                                  -                break;
                                  -            }
                                  -        }
                                  -        
                                  -        // we have finished examined all child nodes so the context must be removed from the chain
                                  -        if (!context.interrupted)
                                  -        {
                                  -            contexts.pop();
                                  -        }
                                  -    }
                                  -    
                                  -    // no restrictions found, therefore we can safely use the style translation
                                  -    return true;
                                  -}
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                right (I'm a div)
                                  -            </div>
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7.html
                                  deleted file mode 100644
                                  index d06d1985..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7.html
                                  +++ /dev/null
                                  @@ -1,522 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    zvisibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        var boxMeasure;
                                  -        
                                  -        // We are setting the height of horizontal boxes in IE6, so we need to 
                                  -        // temporary hide the elements otherwise we will get the wrong measures
                                  -        if (isIE6)
                                  -        {
                                  -            className = box.className;
                                  -            box.className = className + " boxFixHideContents";
                                  -            boxMeasure = box[measureProperty];
                                  -            box.className = className;
                                  -        }
                                  -        else
                                  -        {
                                  -            boxMeasure = box[measureProperty];
                                  -        }
                                  -        
                                  -        totalSpace = boxMeasure -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        if (isVertical)
                                  -        {
                                  -            element.style.height = space + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(element, "boxFixPos")
                                  -            
                                  -            element.style.left = computedSpace + "px";
                                  -            element.style.width = space + "px";
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            if (isIE6)
                                  -            {
                                  -                object.height = boxObject.height || box.offsetHeight;
                                  -                element.style.height = object.height + "px";
                                  -            }
                                  -        }
                                  -        
                                  -        computedSpace += (object.box[dimensionProperty] || space);
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -                <!--
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -                -->
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html
                                  deleted file mode 100644
                                  index 740cfb7d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html
                                  +++ /dev/null
                                  @@ -1,713 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -/*
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix .boxFixRight {
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -}
                                  -/**/
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../../firebug1.3/build/firebug-lite.js"></script>
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    //if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    var isSafeToUseTranslation = true;
                                  -    
                                  -    var postFlexClassName;
                                  -    var preFlexMeasure;
                                  -    var postFlexMeasure;
                                  -    
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    if (isHorizontal)
                                  -    {
                                  -        preFlexMeasure = "left";
                                  -        postFlexMeasure = "right";
                                  -        postFlexClassName = "boxFixRight";
                                  -    }
                                  -    else
                                  -    {
                                  -        preFlexMeasure = "top";
                                  -        postFlexMeasure = "bottom";
                                  -        postFlexClassName = "boxFixPos";
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        var boxMeasure;
                                  -        
                                  -        // We are setting the height of horizontal boxes in IE6, so we need to 
                                  -        // temporary hide the elements otherwise we will get the wrong measures
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -            boxMeasure = box[measureProperty];
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -        else
                                  -        {
                                  -            boxMeasure = box[measureProperty];
                                  -        }
                                  -        
                                  -        totalSpace = boxMeasure -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        //if (isVertical && !flex && !isSafeToUseTranslation) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        
                                  -        if (isSafeToUseTranslation)
                                  -        {
                                  -        
                                  -            /*
                                  -            if (flex)
                                  -            {
                                  -        
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[postFlexMeasure] = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                
                                  -                if (isIE6)
                                  -                {
                                  -                    var dim = dimensionProperty == "width" ? "height" : "width";
                                  -                    var dim2 = dimensionProperty == "width" ? "offsetHeight" : "offsetWidth";
                                  -                    object[dim] = boxObject[dim] || box[dim2];
                                  -                    element.style[dim] = object[dim] + "px";
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -        
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                
                                  -                if (isIE6)
                                  -                {
                                  -                    var dim = dimensionProperty == "width" ? "height" : "width";
                                  -                    var dim2 = dimensionProperty == "width" ? "offsetHeight" : "offsetWidth";
                                  -                    object[dim] = boxObject[dim] || box[dim2];
                                  -                    element.style[dim] = object[dim] + "px";
                                  -                }
                                  -            
                                  -            }
                                  -            /**/
                                  -        
                                  -        
                                  -//             if (isVertical)
                                  -//             {
                                  -//                 /*setClass(element, "boxFixFlex");
                                  -//                 element.style.height = space + "px";/**/
                                  -//                 
                                  -//                 setClass(element, "boxFixFlex");
                                  -//                 element.style.height = space  + "px"; 
                                  -//                 element.style.top = computedSpace + "px";                
                                  -//             }
                                  -//             else
                                  -//             {
                                  -//                 setClass(element, "boxFixFlex");
                                  -//                 element.style.width = space + "px"; 
                                  -//                 element.style.left = computedSpace + "px";                
                                  -//             }
                                  -            
                                  -                    
                                  -            if (flex)
                                  -            {
                                  -                setClass(element, "boxFixFlex");
                                  -            
                                  -                if (isHorizontal)
                                  -                {
                                  -                    /*
                                  -                    element.style.margin = "0 " + (totalSpace - computedSpace - space) + 
                                  -                                        "px  0 " + computedSpace + "px";
                                  -                                        /**/
                                  -                                        
                                  -                    element.style.right = totalSpace - computedSpace - space + "px"; 
                                  -                    element.style.left = computedSpace + "px";
                                  -                }
                                  -                else
                                  -                {
                                  -                    /*
                                  -                    element.style.margin = computedSpace + "px 0 " + 
                                  -                                        (totalSpace - computedSpace - space) + "px 0";
                                  -                                        /**/
                                  -
                                  -                    element.style.top = computedSpace + "px";
                                  -                    element.style.bottom = (totalSpace - computedSpace - space) + "px";
                                  -                    element.style.left = "0px";
                                  -                    element.style.right = "0px";
                                  -                }
                                  -            }
                                  -            else if (flexRendered)
                                  -            {
                                  -                setClass(element, postFlexClassName);
                                  -                
                                  -                element.style[postFlexMeasure] = totalSpace - computedSpace - space + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos");
                                  -                
                                  -                element.style[preFlexMeasure] = computedSpace + "px";
                                  -                element.style[dimensionProperty] = space + "px";
                                  -            }
                                  -            
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            if (isHorizontal && isIE6)
                                  -            {
                                  -                object.height = boxObject.height || box.offsetHeight;
                                  -                element.style.height = object.height + "px";
                                  -            }
                                  -            
                                  -            
                                  -        }
                                  -        else
                                  -        {
                                  -        
                                  -            if (isVertical)
                                  -            {
                                  -                element.style.height = space + "px";
                                  -            }
                                  -            else
                                  -            {
                                  -                setClass(element, "boxFixPos")
                                  -                
                                  -                element.style.left = computedSpace + "px";
                                  -                element.style.width = space + "px";
                                  -                
                                  -                // boxObject.height IE6 only
                                  -                if (isIE6)
                                  -                {
                                  -                    object.height = boxObject.height || box.offsetHeight;
                                  -                    element.style.height = object.height + "px";
                                  -                }
                                  -            }
                                  -            
                                  -        }
                                  -        
                                  -        //computedSpace += (object.box[dimensionProperty] || space);
                                  -        computedSpace += space;
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            content
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html.bak b/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html.bak
                                  deleted file mode 100644
                                  index 73d4779d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/box7trans.html.bak
                                  +++ /dev/null
                                  @@ -1,620 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -/**/
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to show scrollbars */
                                  -    min-width: 1px;
                                  -    height: 100%; /* IE6 needs height and width properties */
                                  -    width: 100%;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -}
                                  -
                                  -.boxFix .boxFixPos {
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFixHideContents * {
                                  -    display: none;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes for style translation
                                  -************************************************************************************************* */
                                  -/*
                                  -.boxFix .boxFixRight {
                                  -    float: right;
                                  -    display: block;
                                  -    height: 100%;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.boxFix .boxFixFlex {
                                  -    display: block;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    left: 0;
                                  -}
                                  -/**/
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    visibility: hidden; /* avoid FOUC */
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -    zmargin: 10px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -iframe {
                                  -    zposition: absolute;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#content {
                                  -}
                                  -
                                  -</style>
                                  -
                                  -<script type="text/javascript" src="../../test/measure.js"></script>
                                  -<script>
                                  -/**
                                  - * OK: unify loops
                                  - * OK: IE optimization (use margin trick) 
                                  - * OK: problem with borders (Firebug Lite will use) 
                                  - * OK: problem with padding/margin
                                  - * TODO: remove margin support 
                                  - * 
                                  - *   
                                  - * TODO: Change margin trick to top,left,bottom,right trick? 
                                  - */  
                                  -window.onload = function()
                                  -{
                                  -    var timer;
                                  -    
                                  -    window.onresize = function()
                                  -    {
                                  -        /*
                                  -        if (!timer)
                                  -        {
                                  -            timer = setTimeout(function(){
                                  -            
                                  -                if (timer)
                                  -                {
                                  -                    clearTimeout(timer);
                                  -                    timer = null;
                                  -                }
                                  -                
                                  -                draw();
                                  -                
                                  -            }, 50);
                                  -        }
                                  -        /**/
                                  -        
                                  -        draw();
                                  -    }
                                  -    
                                  -    draw();
                                  -    
                                  -    // avoid FOUC
                                  -    $("main").style.visibility = "visible";
                                  -}
                                  -
                                  -function draw()
                                  -{
                                  -    layout($("main"));
                                  -}
                                  -
                                  -function layout(root)
                                  -{
                                  -    // TODO: better browser detection
                                  -    if (!document.all) return;
                                  -    
                                  -    setClass(root, "boxFix");
                                  -    
                                  -    var objects =
                                  -        [
                                  -            {
                                  -                element: root,
                                  -                flex: null
                                  -            }
                                  -        ];
                                  -    
                                  -    var object;
                                  -    var result;
                                  -    
                                  -    while (object = objects.shift())
                                  -    {
                                  -        result = layoutBox(root, object);
                                  -        
                                  -        if (result.length > 0)
                                  -        {
                                  -            objects = objects.concat(result);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function layoutBox(root, boxObject)
                                  -{
                                  -    var win = window;
                                  -    var doc = document;
                                  -    var isIE6 = win.navigator.userAgent.indexOf("MSIE 6") != -1;
                                  -    
                                  -    var measure = new Measure(win);
                                  -    
                                  -    var result = [];
                                  -    
                                  -    var isVertical;
                                  -    var isHorizontal;
                                  -    
                                  -    var measureProperty;
                                  -    var dimensionProperty;
                                  -    
                                  -    var objects = [];
                                  -    var object;
                                  -    
                                  -    var element;
                                  -    var boxSpace;
                                  -    var space;
                                  -    var flex;
                                  -    var flexSum = 0;
                                  -    
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -    var fixedSpace = 0;
                                  -    var computedSpace = 0;
                                  -    var remainingPixels = 0;
                                  -    
                                  -    var flexRendered = false;
                                  -    
                                  -    var className;
                                  -    var reFlex = /\sboxFlex(\d?)\s/;
                                  -    var reBox = /\s(v|h)box\s/;
                                  -    var match;
                                  -    
                                  -    var box = boxObject.element;
                                  -    
                                  -    if (hasClass(box, "vbox"))
                                  -    {
                                  -        isVertical = true;
                                  -        
                                  -        measureProperty = "offsetHeight";
                                  -        dimensionProperty = "height";
                                  -    }
                                  -    else if (hasClass(box, "hbox"))
                                  -    {
                                  -        isHorizontal = true;
                                  -        
                                  -        measureProperty = "offsetWidth";
                                  -        dimensionProperty = "width";
                                  -    }
                                  -    else
                                  -    {
                                  -        return result;
                                  -    }
                                  -
                                  -    for (var i = 0, childs = box.childNodes, length = childs.length; i < length; i++)
                                  -    {
                                  -        element = childs[i];
                                  -        
                                  -        // ignore non-element nodes
                                  -        if (element.nodeType != 1) continue;
                                  -        
                                  -        className = " " + element.className + " ";
                                  -        
                                  -        if (match = reFlex.exec(className))
                                  -        {
                                  -            flex = match[1]-0 || 1;
                                  -            space = null;
                                  -        
                                  -            flexSum += flex;
                                  -        }
                                  -        else
                                  -        {
                                  -            var padding = measure.getMeasureBox(element, "padding");
                                  -            var border = measure.getMeasureBox(element, "border");
                                  -            var margin = measure.getMeasureBox(element, "margin");
                                  -            
                                  -            var measureBeforeProperty = "top";
                                  -            var measureAfterProperty = "bottom";
                                  -            
                                  -            space = element[measureProperty] -
                                  -                    padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                    border[measureBeforeProperty] - border[measureAfterProperty];
                                  -            
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            boxSpace = element[measureProperty] +
                                  -                    margin[measureBeforeProperty] + margin[measureAfterProperty];
                                  -                    /**/
                                  -            
                                  -            flex = null;
                                  -            
                                  -            fixedSpace += boxSpace;
                                  -        }
                                  -        
                                  -        object =
                                  -        {
                                  -            element: element,
                                  -            flex: flex,
                                  -            box: {}
                                  -        };
                                  -        
                                  -        object[dimensionProperty] = space;
                                  -        object.box[dimensionProperty] = boxSpace;
                                  -        
                                  -        objects.push(object);
                                  -        
                                  -        // it is a box, so we need to layout it
                                  -        if (reBox.test(className))
                                  -        {
                                  -            result.push(object);
                                  -        }
                                  -    }
                                  -    
                                  -    if (!totalSpace)
                                  -    {
                                  -        var padding = measure.getMeasureBox(box, "padding");
                                  -        var border = measure.getMeasureBox(box, "border");
                                  -        
                                  -        var measureBeforeProperty = "top";
                                  -        var measureAfterProperty = "bottom";
                                  -        
                                  -        var boxMeasure;
                                  -        
                                  -        // We are setting the height of horizontal boxes in IE6, so we need to 
                                  -        // temporary hide the elements otherwise we will get the wrong measures
                                  -        if (isIE6)
                                  -        {
                                  -            setClass(box, "boxFixHideContents");
                                  -            boxMeasure = box[measureProperty];
                                  -            removeClass(box, "boxFixHideContents");
                                  -        }
                                  -        else
                                  -        {
                                  -            boxMeasure = box[measureProperty];
                                  -        }
                                  -        
                                  -        totalSpace = boxMeasure -
                                  -                padding[measureBeforeProperty] - padding[measureAfterProperty] -
                                  -                border[measureBeforeProperty] - border[measureAfterProperty];
                                  -        
                                  -    }
                                  -    
                                  -    freeSpace = totalSpace - fixedSpace;
                                  -    
                                  -    for (var i = 0, length = objects.length; i < length; i++)
                                  -    {
                                  -        object = objects[i];
                                  -        
                                  -        element = object.element;
                                  -        flex = object.flex;
                                  -        
                                  -        if (isVertical && !flex) continue;
                                  -        
                                  -        if (flex)
                                  -        {
                                  -            space = Math.floor(freeSpace * flex / flexSum);
                                  -            space = Math.max(space, 0);
                                  -            
                                  -            // distribute remaining pixels
                                  -            remainingPixels = freeSpace * flex % flexSum;
                                  -            if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -            {
                                  -                space++;
                                  -            }
                                  -            
                                  -            object[dimensionProperty] = space;
                                  -            flexRendered = true;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = object[dimensionProperty];
                                  -        }
                                  -
                                  -        if (isVertical)
                                  -        {
                                  -            element.style.height = space + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(element, "boxFixPos")
                                  -            
                                  -            element.style.left = computedSpace + "px";
                                  -            element.style.width = space + "px";
                                  -            
                                  -            // boxObject.height IE6 only
                                  -            if (isIE6)
                                  -            {
                                  -                object.height = boxObject.height || box.offsetHeight;
                                  -                element.style.height = object.height + "px";
                                  -            }
                                  -        }
                                  -        
                                  -        computedSpace += (object.box[dimensionProperty] || space);
                                  -    }
                                  -    
                                  -    return result;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function $(id)
                                  -{
                                  -    return document.getElementById(id);
                                  -}
                                  -
                                  -function getWindowSize(win)
                                  -{
                                  -    var width=0, height=0, el;
                                  -    
                                  -    if (typeof win.innerWidth == "number")
                                  -    {
                                  -        width = win.innerWidth;
                                  -        height = win.innerHeight;
                                  -    }
                                  -    else if ((el=win.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    else if ((el=win.document.body) && (el.clientHeight || el.clientWidth))
                                  -    {
                                  -        width = el.clientWidth;
                                  -        height = el.clientHeight;
                                  -    }
                                  -    
                                  -    return {width: width, height: height};
                                  -}
                                  -
                                  -var hasClass = function(node, name)
                                  -{
                                  -    return (' '+node.className+' ').indexOf(' '+name+' ') != -1;
                                  -};
                                  -
                                  -var setClass = function(node, name)
                                  -{
                                  -    if (node && (' '+node.className+' ').indexOf(' '+name+' ') == -1)
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -var removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -/*
                                  -// from jquery
                                  -var makeArray = function(array, results) {
                                  -	array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -	if ( results ) {
                                  -		results.push.apply( results, array );
                                  -		return results;
                                  -	}
                                  -	
                                  -	return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -// Also verifies that the returned array holds DOM nodes
                                  -// (which is not the case in the Blackberry browser)
                                  -try {
                                  -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -	makeArray = function(array, results) {
                                  -		var ret = results || [];
                                  -
                                  -		if ( toString.call(array) === "[object Array]" ) {
                                  -			Array.prototype.push.apply( ret, array );
                                  -		} else {
                                  -			if ( typeof array.length === "number" ) {
                                  -				for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			} else {
                                  -				for ( var i = 0; array[i]; i++ ) {
                                  -					ret.push( array[i] );
                                  -				}
                                  -			}
                                  -		}
                                  -
                                  -		return ret;
                                  -	};
                                  -}
                                  -/**/
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        <div id="content" class="hbox boxFlex">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left (I'm a div)
                                  -                <!--
                                  -                <iframe src="panel.html" frameborder=0 style="display:block"></iframe>
                                  -                -->
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div id="righttool">
                                  -                    extra right tool
                                  -                </div>
                                  -                <div class="boxFlex boxScroll">
                                  -                
                                  -                    <div style="padding: 20px;">
                                  -                    
                                  -                    right (I'm a div)
                                  -                    
                                  -<p style="white-space:nowrap;">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------end</p>
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/boxTest.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/boxTest.html
                                  deleted file mode 100644
                                  index 1a753ca2..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/boxTest.html
                                  +++ /dev/null
                                  @@ -1,225 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* hbox and vbox classes */
                                  - 
                                  -.hbox {
                                  -	display: -webkit-box;
                                  -	-webkit-box-orient: horizontal;
                                  -	-webkit-box-align: stretch;
                                  - 
                                  -	display: -moz-box;
                                  -	-moz-box-orient: horizontal;
                                  -	-moz-box-align: stretch;
                                  - 
                                  -	display: box;
                                  -	box-orient: horizontal;
                                  -	box-align: stretch;
                                  -}
                                  - 
                                  -.hbox > * {
                                  -	-webkit-box-flex: 0;
                                  -	-moz-box-flex: 0;
                                  -	box-flex: 0;
                                  -	display: block;
                                  -}
                                  - 
                                  -.vbox {
                                  -	display: -webkit-box;
                                  -	-webkit-box-orient: vertical;
                                  -	-webkit-box-align: stretch;
                                  - 
                                  -	display: -moz-box;
                                  -	-moz-box-orient: vertical;
                                  -	-moz-box-align: stretch;
                                  - 
                                  -	display: box;
                                  -	box-orient: vertical;
                                  -	box-align: stretch;
                                  -}
                                  - 
                                  -.vbox > * {
                                  -	-webkit-box-flex: 0;
                                  -	-moz-box-flex: 0;
                                  -	box-flex: 0;
                                  -	display: block;
                                  -}
                                  - 
                                  -.spacer {
                                  -	-webkit-box-flex: 1;
                                  -	-moz-box-flex: 1;
                                  -	box-flex: 1;
                                  -}
                                  - 
                                  -.reverse {
                                  -	-webkit-box-direction: reverse;
                                  -	-moz-box-direction: reverse;
                                  -	box-direction: reverse;
                                  -}
                                  - 
                                  -.boxFlex0 {
                                  -	-webkit-box-flex: 0;
                                  -	-moz-box-flex: 0;
                                  -	box-flex: 0;
                                  -}
                                  - 
                                  -.boxFlex1, .boxFlex {
                                  -	-webkit-box-flex: 1;
                                  -	-moz-box-flex: 1;
                                  -	box-flex: 1;
                                  -}
                                  - 
                                  -.boxFlex2 {
                                  -	-webkit-box-flex: 2;
                                  -	-moz-box-flex: 2;
                                  -	box-flex: 2;
                                  -}
                                  - 
                                  -.boxGroup1 {
                                  -	-webkit-box-flex-group: 1;
                                  -	-moz-box-flex-group: 1;
                                  -	box-flex-group: 1;
                                  -}
                                  - 
                                  -.boxGroup2 {
                                  -	-webkit-box-flex-group: 2;
                                  -	-moz-box-flex-group: 2;
                                  -	box-flex-group: 2;
                                  -}
                                  - 
                                  -.start {
                                  -	-webkit-box-pack: start;
                                  -	-moz-box-pack: start;
                                  -	box-pack: start;
                                  -}
                                  - 
                                  -.end {
                                  -	-webkit-box-pack: end;
                                  -	-moz-box-pack: end;
                                  -	box-pack: end;
                                  -}
                                  - 
                                  -.center {
                                  -	-webkit-box-pack: center;
                                  -	-moz-box-pack: center;
                                  -	box-pack: center;
                                  -}
                                  -
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Styling
                                  -************************************************************************************************* */
                                  -
                                  -#main {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -#top {
                                  -    background: #ccc;
                                  -    height: 30px;
                                  -}
                                  -
                                  -#tool {
                                  -    background: #ddd;
                                  -    height: 22px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#splitter {
                                  -    width: 4px;
                                  -    background: #ddd;
                                  -}
                                  -
                                  -#left {
                                  -    background: #ffe;
                                  -}
                                  -
                                  -#right {
                                  -    background: #efe;
                                  -    width: 300px;
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -#command {
                                  -    border-top: 1px solid #ddd;
                                  -}
                                  -
                                  -#righttool {
                                  -    background: #eee;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#rightcontent {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main" class="vbox">
                                  -        <div id="top">
                                  -            top
                                  -        </div>
                                  -        <div id="tool">
                                  -            tools
                                  -        </div>
                                  -        
                                  -        <div class="boxFlex">
                                  -        <div id="content" class="hbox">
                                  -        
                                  -            <div id="left" class="boxFlex">
                                  -                left
                                  -            </div>
                                  -            <div id="splitter">
                                  -            </div>
                                  -            <div id="right" class="vbox">
                                  -                <div id="righttool">
                                  -                    right tool
                                  -                </div>
                                  -                <div id="rightcontent" class="boxFlex">
                                  -                
                                  -                    <div>
                                  -                    right
                                  -
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -
                                  -                    </div>
                                  -                </div>
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        </div>
                                  -        <div id="command">
                                  -            cmd
                                  -        </div>
                                  -    </div>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.IE6.css b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.css b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.css
                                  deleted file mode 100644
                                  index decd5917..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.css
                                  +++ /dev/null
                                  @@ -1,3056 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -    font: message-box;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding: 0 10px 0 0;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 48px;
                                  -    padding: 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.html
                                  deleted file mode 100644
                                  index 4432a325..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebug.html
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.css b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.css
                                  deleted file mode 100644
                                  index 6c0ff19e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.css
                                  +++ /dev/null
                                  @@ -1,897 +0,0 @@
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -table {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    border-collapse: collapse;
                                  -    /*table-layout: fixed; /* IE SUCKS */ 
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 48px;
                                  -    padding: 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -
                                  -.fbToolbarButtons {
                                  -    zdisplay: none;
                                  -}
                                  -
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    zdisplay: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - External Window
                                  -*************************************************************************************************/
                                  -
                                  -/*
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  -
                                  -/**/
                                  -
                                  -
                                  -
                                  -
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -
                                  -/* Components */
                                  -
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -/***********************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Button
                                  -*************************************************************************************************/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Icon Button
                                  -*************************************************************************************************/
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Menu
                                  -*************************************************************************************************/
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Status Bar
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Status Bar (previously commented)
                                  -*************************************************************************************************/
                                  -
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.html
                                  deleted file mode 100644
                                  index 02429824..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX.html
                                  +++ /dev/null
                                  @@ -1,237 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebugX.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbSelectedTab fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel" style="display: block;">
                                  -          
                                  -<p>Lorem ipsum dolor sit amet consectetuer adipiscing sagittis Vestibulum Maecenas lobortis. Leo at nulla mauris nonummy quis justo Curabitur Duis Nunc Nam. Eget non amet laoreet amet congue convallis Aliquam ac et commodo. Dictumst quam Aenean in adipiscing Sed Aenean id congue odio sed. Fermentum iaculis Nam habitasse Sed turpis tellus Nunc Quisque interdum sed. Vestibulum.</p>
                                  -<p>Est rutrum lacinia ut urna Nulla tincidunt Pellentesque semper elit lacus. Tristique Curabitur convallis urna montes elit nec Duis Nulla a id. Quisque vestibulum consequat mauris pede Aliquam non congue dictum tellus amet. Nibh pulvinar Quisque et ipsum mauris Vestibulum nec sem neque nulla. Lorem elit pretium auctor tellus ac semper sit justo et nec. Orci feugiat enim augue Cras ultrices Phasellus risus Curabitur amet Sed. Malesuada sem.</p>
                                  -<p>Hac sapien hendrerit amet Nullam tempor elit aliquam consectetuer et eget. Tincidunt nec non Lorem consectetuer Sed Maecenas venenatis Vestibulum pretium feugiat. Tortor ut adipiscing ut justo et ipsum justo nec fringilla velit. Enim ligula risus auctor ut quam porttitor adipiscing netus vel semper. Vestibulum vel facilisis mauris eget sapien at pulvinar pede dolor urna. Commodo Mauris pretium Fusce Curabitur sed augue laoreet tincidunt augue sodales. Adipiscing rutrum Morbi.</p>
                                  -<p>Cum est dictumst Pellentesque lacinia pretium turpis a nulla et justo. Tincidunt tellus augue est libero nunc ut In dui ante Nulla. Porttitor tincidunt Curabitur id risus et leo Aenean Lorem nec et. Magna consectetuer sagittis eget vel Vestibulum tortor diam Vestibulum elit amet. Et cursus Maecenas tincidunt id pulvinar quam at sem Curabitur semper. Urna tincidunt Lorem ligula feugiat sollicitudin morbi.</p>
                                  -<p>Donec Aliquam ipsum ornare Nullam lobortis sed nibh dignissim Vestibulum consequat. Sociis Vestibulum tortor mauris morbi Pellentesque adipiscing convallis tincidunt id mollis. Vestibulum Curabitur justo et pellentesque id dui justo id est sed. Nibh vitae platea consectetuer Phasellus nibh sit Quisque sed interdum congue. Turpis cursus Vestibulum urna tellus est congue lacinia ut condimentum Mauris. Curabitur nunc velit sem et quis quis mauris enim et vel. Pellentesque pede urna.</p>
                                  -<p>Ornare lacinia condimentum ac pellentesque Curabitur amet risus non est amet. Neque et ac ullamcorper non semper quis porttitor wisi amet Ut. Et Vestibulum sociis quis laoreet ut non Duis tempus cursus est. Vitae et eget cursus Vivamus semper tellus a odio orci ipsum. Volutpat risus nunc Proin vitae consequat tincidunt habitasse Vestibulum Nunc lorem. Volutpat vel sapien enim est id volutpat massa tincidunt leo nonummy. </p>
                                  -<p>Leo sagittis tempus nibh gravida vel auctor vitae vitae Sed habitant. Pede aliquet et nascetur cursus dapibus congue vitae Ut magnis mollis. Aenean montes adipiscing ridiculus pellentesque sed Nulla velit augue eget urna. Tempor lorem nibh est justo nonummy Suspendisse quis urna ligula Curabitur. Amet et facilisi justo nunc habitant Nulla congue dapibus id ac. Sit pellentesque Aenean ac id sed ut sed Integer tincidunt sed. Vestibulum at.</p>
                                  -<p>Sed Vestibulum dignissim risus velit habitasse urna morbi Curabitur Sed pede. Mauris dapibus ipsum vitae ac faucibus facilisis eleifend eget Fusce euismod. Dui nibh Vestibulum tincidunt consequat tempor est facilisi laoreet et Nam. Vel volutpat dui id non rutrum leo ac a tincidunt Proin. Enim Vestibulum id rhoncus gravida id ut laoreet Curabitur risus suscipit. Dapibus dolor eget feugiat amet at lacus lacinia.</p>
                                  -<p>Malesuada tempus Curabitur mus et Vestibulum elit amet Sed cursus velit. In eros fames Vivamus lacinia augue Curabitur massa tincidunt pretium nisl. Elit sollicitudin eu id Cum quis condimentum et Aliquam Nulla id. Metus at vel est tellus urna ut ac vel morbi Nam. Nunc at leo ligula sem lorem orci ridiculus pellentesque congue sociis. Pellentesque in adipiscing lacus dui ut Vestibulum et pellentesque sociis lobortis. </p>
                                  -<p>A venenatis tincidunt sapien enim Aenean vel auctor urna dui Nam. Adipiscing Aliquam consectetuer dui dolor justo pede Sed nibh adipiscing turpis. Elit faucibus rutrum Vestibulum adipiscing volutpat vitae Vivamus Lorem sagittis diam. Nam Vestibulum urna pede felis Curabitur id ipsum vitae justo accumsan. Vestibulum Cras pretium lacus convallis interdum Cum nec justo Vestibulum venenatis. Cursus porttitor sodales tincidunt nunc pellentesque lacus vitae elit.</p>
                                  -<p>Augue feugiat Pellentesque pretium Phasellus et et ac eros ut enim. Morbi dui id urna elit ac turpis Sed malesuada venenatis dolor. Ac In Sed mauris tempus ut nibh amet felis id eu. Orci leo wisi feugiat Quisque accumsan tellus ipsum eget turpis habitasse. Nulla vitae Vivamus et orci eget cursus montes nec arcu ut. Lorem ante Nam urna wisi id justo tellus et est lobortis. Id laoreet Vestibulum.</p>
                                  -<p>At augue turpis vel ut tortor id nunc id mauris ac. Vitae vitae Lorem nibh sit sapien urna Vivamus nibh In justo. Suspendisse sagittis felis Nam eros Nam id id ac tellus lorem. Mauris tempor convallis pede malesuada id egestas tincidunt Vivamus euismod tellus. Pretium at Curabitur metus nibh sagittis nunc amet sed Donec ante. Tincidunt purus Lorem.</p>
                                  -<p>Ullamcorper scelerisque Mauris Aliquam risus rutrum nec rhoncus enim magna Vivamus. Pellentesque Curabitur nibh magna neque congue wisi wisi libero Vestibulum Ut. Massa Sed elit lobortis mauris adipiscing Proin malesuada elit lorem nunc. Ac ac ut faucibus nibh sed enim mauris condimentum feugiat auctor. Orci interdum nulla Donec nunc Cras lorem commodo Nullam ornare iaculis. Cum ridiculus condimentum dis ut Curabitur.</p>
                                  -<p>Quis nec faucibus odio id et libero ac et neque Quisque. Et malesuada at id auctor convallis odio pede fringilla Nunc mi. Suscipit justo habitant vitae mauris pharetra massa tempor tortor volutpat habitasse. Fermentum libero In urna convallis Phasellus Aenean ante enim vitae et. Lobortis id lobortis cursus suscipit Aliquam adipiscing facilisi tellus nec euismod. Mus laoreet orci ac pretium Phasellus nunc.</p>
                                  -<p>Felis augue Vestibulum sagittis Nam et auctor Vestibulum neque Curabitur facilisis. Massa convallis diam ut gravida lacus odio Curabitur Vestibulum sem Nam. Pellentesque Phasellus porttitor dui Suspendisse semper gravida nibh a elit Cum. Odio platea congue malesuada ultrices tincidunt commodo ante lobortis Vivamus laoreet. Ac ante urna sem augue urna lacinia Morbi pretium et Suspendisse. At nec sodales ipsum sem et dolor tincidunt congue massa.</p>
                                  -<p>Sed venenatis hendrerit quis feugiat nibh egestas laoreet accumsan Nullam iaculis. Est ante quis Integer vel massa condimentum interdum leo quis pulvinar. Nulla Praesent wisi congue tellus dolor accumsan Curabitur Curabitur nisl tempor. At orci Sed metus urna rhoncus tristique laoreet dapibus nulla ante. Consectetuer convallis laoreet Phasellus lacus tincidunt Curabitur In pellentesque Integer elit. Elit fringilla interdum odio quis nec adipiscing quis Aenean nunc vel. </p>
                                  -<p>Arcu ac ligula natoque orci semper et Nulla nec et Vestibulum. Eget pretium pellentesque ut leo leo id consequat quis Aenean elit. Urna consectetuer pellentesque tellus Aenean tristique eget Nulla lorem In leo. Ut sollicitudin adipiscing consectetuer pharetra pretium fames Quisque Suspendisse laoreet mi. Tristique pede Nam sed vitae turpis Nunc Vestibulum.</p>
                                  -<p>Est a ligula ac interdum lacus netus metus neque enim id. Eget risus tincidunt lacus dolor dui semper at id feugiat dui. Sed Cum wisi felis porta id amet nec nec nec congue. Iaculis cursus Curabitur porta nec ut et enim senectus convallis condimentum. Nibh nunc ipsum Phasellus mauris orci urna condimentum lacus consectetuer orci. Nibh Ut sem In metus ridiculus Duis id Aenean eu neque. Tempus vitae.</p>
                                  -<p>Aliquam laoreet magna id malesuada pede vitae Vestibulum suscipit vel In. Id semper et wisi Curabitur augue penatibus ligula mauris Donec egestas. Tellus id Mauris Sed tellus Vestibulum accumsan id justo quis dolor. Gravida montes sem eros pretium mauris nibh tempus Phasellus In convallis. Porttitor libero leo sit nunc ante vitae nisl nibh Praesent ante. Sed Mauris congue Suspendisse odio neque pellentesque Curabitur dui metus.</p>
                                  -<p>Lacus diam vitae velit et eu convallis et sagittis libero id. Tempor Donec tempus nibh sed pretium neque quam eget risus velit. Ante Quisque vitae Aenean Cum sapien laoreet nonummy congue ut auctor. Sed metus at vitae vitae adipiscing elit Duis et facilisis Cras. Condimentum ipsum congue accumsan Maecenas commodo dictum sagittis velit risus ipsum. Consequat ipsum enim malesuada Aliquam.</p>
                                  -          
                                  -          
                                  -          </div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.css b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.css
                                  deleted file mode 100644
                                  index e2aba1f1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.css
                                  +++ /dev/null
                                  @@ -1,90 +0,0 @@
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -table {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    border-collapse: collapse;
                                  -    /*table-layout: fixed; /* IE SUCKS */ 
                                  -}
                                  -
                                  -
                                  -#fbTopRow {
                                  -    height: 28px;
                                  -}
                                  -
                                  -#fbTopRow div {
                                  -    float: left;
                                  -}
                                  -
                                  -
                                  -#fbBottom {
                                  -    height: 28px;
                                  -}
                                  -
                                  -
                                  -#fbContent, #fbPanelBox1, #fbPanelBox2, #fbPanel1, #fbPanel2 {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbPanel1, #fbPanel2 {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    zoverflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -#fbConsole {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    position: absolute;
                                  -    overflow: auto;
                                  -    top: 0;
                                  -    left: 0;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.html
                                  deleted file mode 100644
                                  index b3b804fa..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugX1.html
                                  +++ /dev/null
                                  @@ -1,237 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebugX1.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="2">
                                  -  <tbody>
                                  -    <tr id="fbTopRow" height="1">
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbSelectedTab fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent" height="*">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel">
                                  -          
                                  -<p>Lorem ipsum dolor sit amet consectetuer adipiscing sagittis Vestibulum Maecenas lobortis. Leo at nulla mauris nonummy quis justo Curabitur Duis Nunc Nam. Eget non amet laoreet amet congue convallis Aliquam ac et commodo. Dictumst quam Aenean in adipiscing Sed Aenean id congue odio sed. Fermentum iaculis Nam habitasse Sed turpis tellus Nunc Quisque interdum sed. Vestibulum.</p>
                                  -<p>Est rutrum lacinia ut urna Nulla tincidunt Pellentesque semper elit lacus. Tristique Curabitur convallis urna montes elit nec Duis Nulla a id. Quisque vestibulum consequat mauris pede Aliquam non congue dictum tellus amet. Nibh pulvinar Quisque et ipsum mauris Vestibulum nec sem neque nulla. Lorem elit pretium auctor tellus ac semper sit justo et nec. Orci feugiat enim augue Cras ultrices Phasellus risus Curabitur amet Sed. Malesuada sem.</p>
                                  -<p>Hac sapien hendrerit amet Nullam tempor elit aliquam consectetuer et eget. Tincidunt nec non Lorem consectetuer Sed Maecenas venenatis Vestibulum pretium feugiat. Tortor ut adipiscing ut justo et ipsum justo nec fringilla velit. Enim ligula risus auctor ut quam porttitor adipiscing netus vel semper. Vestibulum vel facilisis mauris eget sapien at pulvinar pede dolor urna. Commodo Mauris pretium Fusce Curabitur sed augue laoreet tincidunt augue sodales. Adipiscing rutrum Morbi.</p>
                                  -<p>Cum est dictumst Pellentesque lacinia pretium turpis a nulla et justo. Tincidunt tellus augue est libero nunc ut In dui ante Nulla. Porttitor tincidunt Curabitur id risus et leo Aenean Lorem nec et. Magna consectetuer sagittis eget vel Vestibulum tortor diam Vestibulum elit amet. Et cursus Maecenas tincidunt id pulvinar quam at sem Curabitur semper. Urna tincidunt Lorem ligula feugiat sollicitudin morbi.</p>
                                  -<p>Donec Aliquam ipsum ornare Nullam lobortis sed nibh dignissim Vestibulum consequat. Sociis Vestibulum tortor mauris morbi Pellentesque adipiscing convallis tincidunt id mollis. Vestibulum Curabitur justo et pellentesque id dui justo id est sed. Nibh vitae platea consectetuer Phasellus nibh sit Quisque sed interdum congue. Turpis cursus Vestibulum urna tellus est congue lacinia ut condimentum Mauris. Curabitur nunc velit sem et quis quis mauris enim et vel. Pellentesque pede urna.</p>
                                  -<p>Ornare lacinia condimentum ac pellentesque Curabitur amet risus non est amet. Neque et ac ullamcorper non semper quis porttitor wisi amet Ut. Et Vestibulum sociis quis laoreet ut non Duis tempus cursus est. Vitae et eget cursus Vivamus semper tellus a odio orci ipsum. Volutpat risus nunc Proin vitae consequat tincidunt habitasse Vestibulum Nunc lorem. Volutpat vel sapien enim est id volutpat massa tincidunt leo nonummy. </p>
                                  -<p>Leo sagittis tempus nibh gravida vel auctor vitae vitae Sed habitant. Pede aliquet et nascetur cursus dapibus congue vitae Ut magnis mollis. Aenean montes adipiscing ridiculus pellentesque sed Nulla velit augue eget urna. Tempor lorem nibh est justo nonummy Suspendisse quis urna ligula Curabitur. Amet et facilisi justo nunc habitant Nulla congue dapibus id ac. Sit pellentesque Aenean ac id sed ut sed Integer tincidunt sed. Vestibulum at.</p>
                                  -<p>Sed Vestibulum dignissim risus velit habitasse urna morbi Curabitur Sed pede. Mauris dapibus ipsum vitae ac faucibus facilisis eleifend eget Fusce euismod. Dui nibh Vestibulum tincidunt consequat tempor est facilisi laoreet et Nam. Vel volutpat dui id non rutrum leo ac a tincidunt Proin. Enim Vestibulum id rhoncus gravida id ut laoreet Curabitur risus suscipit. Dapibus dolor eget feugiat amet at lacus lacinia.</p>
                                  -<p>Malesuada tempus Curabitur mus et Vestibulum elit amet Sed cursus velit. In eros fames Vivamus lacinia augue Curabitur massa tincidunt pretium nisl. Elit sollicitudin eu id Cum quis condimentum et Aliquam Nulla id. Metus at vel est tellus urna ut ac vel morbi Nam. Nunc at leo ligula sem lorem orci ridiculus pellentesque congue sociis. Pellentesque in adipiscing lacus dui ut Vestibulum et pellentesque sociis lobortis. </p>
                                  -<p>A venenatis tincidunt sapien enim Aenean vel auctor urna dui Nam. Adipiscing Aliquam consectetuer dui dolor justo pede Sed nibh adipiscing turpis. Elit faucibus rutrum Vestibulum adipiscing volutpat vitae Vivamus Lorem sagittis diam. Nam Vestibulum urna pede felis Curabitur id ipsum vitae justo accumsan. Vestibulum Cras pretium lacus convallis interdum Cum nec justo Vestibulum venenatis. Cursus porttitor sodales tincidunt nunc pellentesque lacus vitae elit.</p>
                                  -<p>Augue feugiat Pellentesque pretium Phasellus et et ac eros ut enim. Morbi dui id urna elit ac turpis Sed malesuada venenatis dolor. Ac In Sed mauris tempus ut nibh amet felis id eu. Orci leo wisi feugiat Quisque accumsan tellus ipsum eget turpis habitasse. Nulla vitae Vivamus et orci eget cursus montes nec arcu ut. Lorem ante Nam urna wisi id justo tellus et est lobortis. Id laoreet Vestibulum.</p>
                                  -<p>At augue turpis vel ut tortor id nunc id mauris ac. Vitae vitae Lorem nibh sit sapien urna Vivamus nibh In justo. Suspendisse sagittis felis Nam eros Nam id id ac tellus lorem. Mauris tempor convallis pede malesuada id egestas tincidunt Vivamus euismod tellus. Pretium at Curabitur metus nibh sagittis nunc amet sed Donec ante. Tincidunt purus Lorem.</p>
                                  -<p>Ullamcorper scelerisque Mauris Aliquam risus rutrum nec rhoncus enim magna Vivamus. Pellentesque Curabitur nibh magna neque congue wisi wisi libero Vestibulum Ut. Massa Sed elit lobortis mauris adipiscing Proin malesuada elit lorem nunc. Ac ac ut faucibus nibh sed enim mauris condimentum feugiat auctor. Orci interdum nulla Donec nunc Cras lorem commodo Nullam ornare iaculis. Cum ridiculus condimentum dis ut Curabitur.</p>
                                  -<p>Quis nec faucibus odio id et libero ac et neque Quisque. Et malesuada at id auctor convallis odio pede fringilla Nunc mi. Suscipit justo habitant vitae mauris pharetra massa tempor tortor volutpat habitasse. Fermentum libero In urna convallis Phasellus Aenean ante enim vitae et. Lobortis id lobortis cursus suscipit Aliquam adipiscing facilisi tellus nec euismod. Mus laoreet orci ac pretium Phasellus nunc.</p>
                                  -<p>Felis augue Vestibulum sagittis Nam et auctor Vestibulum neque Curabitur facilisis. Massa convallis diam ut gravida lacus odio Curabitur Vestibulum sem Nam. Pellentesque Phasellus porttitor dui Suspendisse semper gravida nibh a elit Cum. Odio platea congue malesuada ultrices tincidunt commodo ante lobortis Vivamus laoreet. Ac ante urna sem augue urna lacinia Morbi pretium et Suspendisse. At nec sodales ipsum sem et dolor tincidunt congue massa.</p>
                                  -<p>Sed venenatis hendrerit quis feugiat nibh egestas laoreet accumsan Nullam iaculis. Est ante quis Integer vel massa condimentum interdum leo quis pulvinar. Nulla Praesent wisi congue tellus dolor accumsan Curabitur Curabitur nisl tempor. At orci Sed metus urna rhoncus tristique laoreet dapibus nulla ante. Consectetuer convallis laoreet Phasellus lacus tincidunt Curabitur In pellentesque Integer elit. Elit fringilla interdum odio quis nec adipiscing quis Aenean nunc vel. </p>
                                  -<p>Arcu ac ligula natoque orci semper et Nulla nec et Vestibulum. Eget pretium pellentesque ut leo leo id consequat quis Aenean elit. Urna consectetuer pellentesque tellus Aenean tristique eget Nulla lorem In leo. Ut sollicitudin adipiscing consectetuer pharetra pretium fames Quisque Suspendisse laoreet mi. Tristique pede Nam sed vitae turpis Nunc Vestibulum.</p>
                                  -<p>Est a ligula ac interdum lacus netus metus neque enim id. Eget risus tincidunt lacus dolor dui semper at id feugiat dui. Sed Cum wisi felis porta id amet nec nec nec congue. Iaculis cursus Curabitur porta nec ut et enim senectus convallis condimentum. Nibh nunc ipsum Phasellus mauris orci urna condimentum lacus consectetuer orci. Nibh Ut sem In metus ridiculus Duis id Aenean eu neque. Tempus vitae.</p>
                                  -<p>Aliquam laoreet magna id malesuada pede vitae Vestibulum suscipit vel In. Id semper et wisi Curabitur augue penatibus ligula mauris Donec egestas. Tellus id Mauris Sed tellus Vestibulum accumsan id justo quis dolor. Gravida montes sem eros pretium mauris nibh tempus Phasellus In convallis. Porttitor libero leo sit nunc ante vitae nisl nibh Praesent ante. Sed Mauris congue Suspendisse odio neque pellentesque Curabitur dui metus.</p>
                                  -<p>Lacus diam vitae velit et eu convallis et sagittis libero id. Tempor Donec tempus nibh sed pretium neque quam eget risus velit. Ante Quisque vitae Aenean Cum sapien laoreet nonummy congue ut auctor. Sed metus at vitae vitae adipiscing elit Duis et facilisis Cras. Condimentum ipsum congue accumsan Maecenas commodo dictum sagittis velit risus ipsum. Consequat ipsum enim malesuada Aliquam.</p>
                                  -          
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="" height="1">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<!-- 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugtest.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugtest.html
                                  deleted file mode 100644
                                  index 6dcfe161..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/firebugtest.html
                                  +++ /dev/null
                                  @@ -1,148 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -table {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    border-collapse: collapse;
                                  -    table-layout: fixed; /* IE SUCKS */ 
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Master Layout
                                  -************************************************************************************************* */
                                  -
                                  -#fbChrome, #inner {
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -}
                                  -
                                  -#top {
                                  -    background: #eee;
                                  -}
                                  -
                                  -#topRow , #topCell {
                                  -    height: 22px;
                                  -    max-height: 22px;
                                  -}
                                  -
                                  -#top, #topCell, #topRow {
                                  -    height: 22px;
                                  -}
                                  -
                                  -#middle {
                                  -    zheight: 200px;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    display: table;
                                  -    background: #cde;
                                  -}
                                  -
                                  -#leftcontent, #rightcontent {
                                  -    zheight: 200px;
                                  -}
                                  -
                                  -#res {
                                  -    width: 2px;
                                  -    background: red;
                                  -}
                                  -#resCell {
                                  -    width: 2px;
                                  -    vertical-align: top;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -    <table id="fbChrome" cellpadding="0" cellspacing="0" border="1">
                                  -        <tr id="topRow">
                                  -            <td id="topCell">
                                  -                <div id="top">Top</div>
                                  -            </td>
                                  -        </tr>
                                  -        <tr id="xops" height="*">
                                  -            <td>
                                  -                <div id="middle">
                                  -                
                                  -                
                                  -                    <table id="inner" cellpadding="0" cellspacing="0" border="2">
                                  -                        <tr>
                                  -                            <td>
                                  -                                
                                  -                                <div id="left">
                                  -                                
                                  -                                    <table id="inner" cellpadding="0" cellspacing="0" border="3">
                                  -                                        <tr id="lefttool">
                                  -                                            <td>
                                  -                                                left tools
                                  -                                            </td>
                                  -                                        </tr>
                                  -                                        <tr id="leftcontent">
                                  -                                            <td>
                                  -                                                left
                                  -                                            </td>
                                  -                                        </tr>
                                  -                                    </table>
                                  -                                
                                  -                                </div>
                                  -                                
                                  -                            </td>
                                  -                            <td id="resCell">
                                  -                                <div id="res">&nbsp;</div>
                                  -                            </td>
                                  -                            <td>
                                  -                                
                                  -                                <div id="right">
                                  -                                
                                  -                                    <table id="inner" cellpadding="0" cellspacing="0" border="3">
                                  -                                        <tr id="righttool">
                                  -                                            <td>
                                  -                                                right tools
                                  -                                            </td>
                                  -                                        </tr>
                                  -                                        <tr id="rightcontent">
                                  -                                            <td>
                                  -                                                right
                                  -                                            </td>
                                  -                                        </tr>
                                  -                                    </table>
                                  -                                
                                  -                                </div>
                                  -                                
                                  -                            </td>
                                  -                        </tr>
                                  -                    </table>
                                  -                
                                  -                
                                  -                </div>
                                  -            </td>
                                  -        </tr>
                                  -        <tr height="1">
                                  -            <td>
                                  -                Command
                                  -            </td>
                                  -        </tr>
                                  -    </table>
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/ieHeight.html b/branches/flexBox/sandbox/sandbox/flexBoxStudies/ieHeight.html
                                  deleted file mode 100644
                                  index df68932e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/ieHeight.html
                                  +++ /dev/null
                                  @@ -1,70 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<style>
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#main {
                                  -    height: 110px;
                                  -    position: absolute;
                                  -}
                                  -
                                  -#main z* {
                                  -    display: none;
                                  -}
                                  -
                                  -</style>
                                  -<script>
                                  -window.onload = function()
                                  -{
                                  -    var main = document.getElementById("main");
                                  -    
                                  -    alert(parseInt(main.offsetHeight));
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="main">
                                  -        
                                  -<p>Lorem ipsum dolor sit amet consectetuer dui lacinia vitae malesuada libero. Sem ac ligula Aenean quis senectus fermentum Proin dolor leo Vestibulum. Urna Cum lobortis interdum et Phasellus justo orci justo gravida urna. Urna vestibulum vitae Curabitur vel auctor venenatis sapien Nam velit eu. Aliquam leo nibh sem ut Mauris sem convallis laoreet rutrum malesuada. Cursus Curabitur consequat vitae.</p>
                                  -<p>Nam quis lacus pretium et ipsum vel Aenean nonummy tempor egestas. Pellentesque mauris et non tempus leo Sed dui ligula vitae lacus. Maecenas In et nec ac hendrerit vitae velit a justo Ut. Pulvinar Ut adipiscing sodales senectus Vivamus Aliquam lacus mus sem eu. Pellentesque orci Lorem tortor eget Aenean justo pellentesque porta hendrerit vitae. Et ipsum tellus felis urna non Aenean.</p>
                                  -<p>In mauris nibh mollis metus id Quisque in Sed orci sapien. Tellus pharetra tellus a Aliquam montes pellentesque orci fames sed sem. Magna tempor ut cursus porttitor dolor Nam tellus consequat ante gravida. Ipsum eu ac pellentesque nulla Curabitur quis platea id facilisi lorem. Id quam justo sagittis iaculis tristique elit Nulla hac elit tincidunt. At et pretium Nullam gravida metus habitasse pellentesque dolor tristique ornare. Enim nibh ut.</p>
                                  -<p>In tristique Aenean venenatis nonummy eleifend Vivamus Aenean interdum cursus commodo. Pede natoque a felis Duis congue consectetuer est Vestibulum at Donec. Hendrerit orci consequat et pretium sagittis a mattis sed cursus Suspendisse. Auctor vitae nibh semper magna Phasellus et augue dictum tempor nibh. Tellus et semper vel faucibus ligula pede auctor vitae Sed sit. Lacus penatibus Integer eget.</p>
                                  -<p>Sed condimentum malesuada Nulla elit orci urna montes porta lacinia volutpat. Et ante fringilla in venenatis dui porttitor ipsum porttitor ullamcorper Curabitur. Ut adipiscing augue vitae auctor tempus id ac congue id condimentum. Congue gravida ipsum auctor nec Nam orci vitae malesuada parturient cursus. Pretium pede wisi congue nibh tellus.</p>
                                  -<p>Lorem adipiscing Fusce eu laoreet eros dis Maecenas ut hac Integer. Tristique nisl et Ut a diam et ligula Praesent tincidunt commodo. Et faucibus et orci parturient dictumst Vivamus lacus mollis Vestibulum commodo. Nulla ligula mi et eget pellentesque tincidunt elit tellus nibh dictumst. Ipsum consectetuer Morbi Quisque Nulla neque nec rhoncus mauris Suspendisse elit. Dui sapien.</p>
                                  -<p>Vivamus id sodales nibh molestie amet leo ut Nulla Fusce ultrices. Pellentesque pretium ac ut pellentesque non Sed tellus leo et semper. Pellentesque et tortor et metus hendrerit at gravida nunc at vel. Tortor mauris consequat Nulla lorem convallis enim Sed orci ligula sem. Tellus cursus gravida consectetuer quis platea Vestibulum leo wisi Proin adipiscing. Curabitur rutrum orci malesuada ut ut ante Vivamus orci leo.</p>
                                  -<p>Platea urna sed Sed Maecenas habitasse condimentum elit turpis justo In. Dis gravida magna libero vel amet cursus condimentum orci tellus lorem. Felis nec lacinia Nullam semper laoreet semper Nulla tortor ipsum Morbi. Facilisis quis adipiscing Nam turpis montes et nunc semper interdum elit. Vitae vel a nunc pede lobortis ligula a Nulla et Vestibulum. Ut lacus semper consequat laoreet.</p>
                                  -<p>Lorem egestas dictumst interdum tempus est dapibus felis Ut tellus suscipit. Fermentum congue Pellentesque felis amet convallis adipiscing Lorem nisl tincidunt sagittis. Nulla et massa ac et Vestibulum tellus Vivamus fringilla sodales laoreet. Id quis senectus dapibus enim elit Quisque Integer pharetra congue urna. Quis lacus tincidunt lacus mus metus sapien enim porttitor metus.</p>
                                  -<p>Nam tristique enim nonummy convallis risus ut quis felis wisi congue. Porttitor semper Aliquam id Nullam at vitae leo Suspendisse Vestibulum tristique. Fames turpis Nulla metus sit lacus ligula eu Lorem laoreet amet. Vestibulum condimentum In sem wisi In auctor Vestibulum cursus tincidunt tempus. Phasellus Suspendisse vitae sollicitudin Morbi dolor orci Quisque.</p>
                                  -<p>Amet tellus enim hac Nulla elit Vestibulum mollis aliquet dictum odio. Nulla Donec elit Nullam ut vitae velit semper Nulla nibh tempor. Condimentum iaculis ullamcorper rhoncus orci nonummy Morbi tellus ac scelerisque dignissim. Nulla sed cursus et ac Aliquam Donec Phasellus Lorem quis consequat. Pellentesque justo enim interdum consequat amet orci a et tempus quis. Ut Vestibulum neque faucibus montes Suspendisse ullamcorper adipiscing a accumsan eu. </p>
                                  -<p>Pellentesque molestie urna In id Nam magnis adipiscing et Curabitur fringilla. Risus leo Sed Fusce interdum Vestibulum semper id sit pellentesque justo. Et mollis orci porta consequat Donec Pellentesque Nam quis tincidunt in. Lacinia ornare metus est et amet accumsan vitae tincidunt malesuada tellus. Sit vitae lacus iaculis lacinia Nulla velit ac non lorem elit. Phasellus.</p>
                                  -<p>Id eros porta velit Vestibulum consequat risus tortor quam scelerisque lacus. At nibh ut tristique ipsum sapien Curabitur ut dui eget iaculis. Quis non at at justo commodo diam auctor Quisque congue rutrum. Ipsum tellus sagittis ac Donec et Aenean faucibus Cras Morbi interdum. Risus Quisque nec pede nulla et lobortis ac Duis Donec vitae. Tortor et est sagittis malesuada natoque ipsum nisl leo wisi mauris. Et Nunc diam.</p>
                                  -<p>Adipiscing ac euismod metus sed Aenean ultrices orci Morbi semper semper. Non convallis consectetuer convallis pede eget quis ligula porttitor ipsum velit. Quisque Proin ut felis justo interdum Maecenas dui Curabitur libero dignissim. Quis massa Proin pede vitae Fusce Phasellus cursus faucibus Vestibulum sit. Phasellus nonummy eros pretium faucibus in mauris et interdum senectus hendrerit. Sem semper Vestibulum consequat massa dolor Nullam nisl interdum Pellentesque ac. Non.</p>
                                  -<p>Gravida lacus Mauris nec laoreet orci justo quis eu gravida Curabitur. Quis tincidunt lacus et Pellentesque laoreet Integer eget dis sem Pellentesque. Laoreet et sapien Aenean quis consequat velit congue Aenean ipsum Nunc. Id nunc tincidunt accumsan Curabitur faucibus quis rhoncus lorem suscipit felis. Suspendisse Sed eget ligula tempus eu dui porttitor eu purus Maecenas. Mauris hendrerit tortor id ipsum nec congue rutrum libero tincidunt hac. Nec egestas laoreet.</p>
                                  -<p>Quis In hac tristique eros elit pretium a sem Nulla eu. Nunc Sed eget ante quam et In volutpat diam malesuada tellus. Ante In tempor Nam congue Suspendisse pretium quis orci risus mus. Eget lacus semper elit sed elit Ut cursus lobortis dictumst id. Id dictum non felis Nulla vitae semper est in fringilla faucibus. Urna.</p>
                                  -<p>Interdum aliquet aliquet ut id mollis sed hendrerit urna tellus Nam. Eros Sed ridiculus adipiscing dui Morbi ante gravida ut eu et. Est Sed ipsum nunc eros aliquam gravida Vivamus lacus Curabitur aliquet. Risus consequat faucibus fermentum lorem lorem hendrerit Vestibulum cursus metus et. Eu eleifend cursus faucibus nunc justo adipiscing Nam eu parturient adipiscing. Non lacinia Nam et pharetra volutpat interdum.</p>
                                  -<p>At Curabitur Nulla Nulla tellus elit elit semper mattis Sed natoque. Lorem lobortis Phasellus eros Lorem Quisque montes pretium Curabitur leo mauris. Ridiculus ut Nam pede orci quis ante urna sollicitudin nunc mi. Pretium quis In id velit urna augue libero lacus Integer magna. Egestas vitae porttitor et Aenean congue augue Curabitur et Pellentesque Donec. Laoreet tempor Aenean euismod leo fames ac.</p>
                                  -<p>Non turpis Lorem et sapien elit neque netus lacinia euismod scelerisque. Metus tincidunt In Quisque laoreet Donec sit ante pretium Pellentesque consequat. Ut consequat Vivamus euismod sociis accumsan Aliquam convallis nibh tellus vel. Metus consequat orci Aenean Aliquam Phasellus eleifend tristique Morbi Curabitur et. Magna urna gravida platea tristique augue interdum congue dolor a Cum. Consectetuer velit lacus.</p>
                                  -<p>Risus nulla euismod Nulla quis amet elit elit malesuada nulla ut. Cursus Ut a ut ipsum ac condimentum Donec eget Lorem justo. Sit adipiscing convallis hendrerit adipiscing risus Nullam fringilla cursus congue elit. Lorem Aenean lorem senectus vitae dui ridiculus nunc enim faucibus tempor. Ut hendrerit nibh eget velit dignissim metus metus dolor fringilla mattis. Laoreet cursus Vivamus consectetuer nulla.</p>
                                  -
                                  -    </div>
                                  -    
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/blank.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBg.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/down.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downActive.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downHover.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/firebug.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/group.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/loading_16.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow2.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/sprite.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabLeft.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMid.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabRight.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_close.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_open.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/up.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upActive.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upHover.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.png b/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/flexBoxStudies/img/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/editor.css b/branches/flexBox/sandbox/sandbox/orion/editor.css
                                  deleted file mode 100644
                                  index 1a3a6f5a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/editor.css
                                  +++ /dev/null
                                  @@ -1,93 +0,0 @@
                                  -.editor {
                                  -	background-color: white;
                                  -}
                                  -
                                  -.editorContainer {
                                  -	font-family: monospace;
                                  -	font-size: 10pt;
                                  -}
                                  -
                                  -.editorContent {
                                  -}
                                  -
                                  -.token_comment {
                                  -	color: green;
                                  -}
                                  -
                                  -.token_javadoc {
                                  -	color: #00008F;
                                  -}
                                  -
                                  -.token_string {
                                  -	color: blue;
                                  -}
                                  -
                                  -.token_keyword {
                                  -	color: darkred;
                                  -	font-weight: bold;
                                  -}
                                  -
                                  -.token_bracket_outline {
                                  -	outline: 1px solid red;
                                  -}
                                  -
                                  -.token_bracket {
                                  -	color: white;
                                  -	background-color: grey;
                                  -}
                                  -
                                  -.token_space {
                                  -	background-image: url('/editor/samples/space.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: center center;
                                  -}
                                  -
                                  -.token_tab {
                                  -	background-image: url('/editor/samples/tab.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: left center;
                                  -}
                                  -
                                  -.line_caret {
                                  -	background-color: #EAF2FE;
                                  -}
                                  -
                                  -.ruler_annotation {
                                  -	background-color: #e1ebfb;
                                  -	width: 16px;
                                  -}
                                  -
                                  -.ruler_annotation_todo {
                                  -}
                                  -
                                  -.ruler_annotation_todo_overview {
                                  -	background-color: lightgreen;
                                  -	border: 1px solid green;
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint {
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint_overview {
                                  -	background-color: lightblue;
                                  -	border: 1px solid blue;
                                  -}
                                  -
                                  -.ruler_lines {
                                  -	background-color: #e1ebfb;
                                  -	border-right: 1px solid #b1badf;
                                  -	text-align: right;
                                  -}
                                  -
                                  -.ruler_overview {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_even {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_odd {
                                  -	background-color: white;
                                  -}
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js-tests/test-model.js b/branches/flexBox/sandbox/sandbox/orion/js-tests/test-model.js
                                  deleted file mode 100644
                                  index 7eaf8be5..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js-tests/test-model.js
                                  +++ /dev/null
                                  @@ -1,200 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global assertEquals eclipse */
                                  -
                                  -TextModelTestCase = TestCase("TextModelTestCase"); 
                                  -
                                  -TextModelTestCase.prototype = {
                                  -	test_Empty: function () {
                                  -		var content = new eclipse.TextModel();
                                  -		assertEquals(":1a:", content.getLineCount(), 1);
                                  -		assertEquals(":1b:", content.getLine(0), "");
                                  -
                                  -		content.setText("test");
                                  -		content.setText("", 0, 4);
                                  -		assertEquals(":2a:", content.getLineCount(), 1);
                                  -		assertEquals(":2b:", content.getLine(0), "");
                                  -	},
                                  -	test_Insert: function () {
                                  -		var content = new eclipse.TextModel();
                                  -		var newText;
                                  -		
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("test\n ", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":1a:", ("test\n This\nis a test\r"), newText);
                                  -		assertEquals(":1b:", 4, content.getLineCount());
                                  -		assertEquals(":1c:", ("test"), content.getLine(0));
                                  -		assertEquals(":1d:", (" This"), content.getLine(1));
                                  -		assertEquals(":1e:", ("is a test"), content.getLine(2));
                                  -		assertEquals(":1f:", (""), content.getLine(3));
                                  -
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("*** ", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":2a:", ("This\n*** is a test\r"), newText);
                                  -		assertEquals(":2b:", 3, content.getLineCount());
                                  -		assertEquals(":2c:", ("This"), content.getLine(0));
                                  -		assertEquals(":2d:", ("*** is a test"), content.getLine(1));
                                  -		assertEquals(":2e:", (""), content.getLine(2));
                                  -
                                  -		content.setText("Line 1\r\nLine 2");
                                  -		content.setText("\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":3a:", ("\rLine 1\r\nLine 2"), newText);
                                  -		assertEquals(":3b:", 3, content.getLineCount());
                                  -		assertEquals(":3c:", (""), content.getLine(0));
                                  -		assertEquals(":3d:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":3e:", ("Line 2"), content.getLine(2));
                                  -		content.setText("\r", 9, 9);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":3f:", ("\rLine 1\r\n\rLine 2"), newText);
                                  -		assertEquals(":3g:", 4, content.getLineCount());
                                  -		assertEquals(":3h:", (""), content.getLine(0));
                                  -		assertEquals(":3i:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":3j:", (""), content.getLine(2));
                                  -		assertEquals(":3k:", ("Line 2"), content.getLine(3));
                                  -
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":4a:", ("\nThis\nis a test\r"), newText);
                                  -		assertEquals(":4b:", 4, content.getLineCount());
                                  -		assertEquals(":4c:", (""), content.getLine(0));
                                  -		assertEquals(":4d:", ("This"), content.getLine(1));
                                  -		assertEquals(":4e:", ("is a test"), content.getLine(2));
                                  -		assertEquals(":4f:", (""), content.getLine(3));
                                  -		
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("\r\nnewLine", 7, 7);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":5a:", ("This\nis\r\nnewLine a test\r"), newText);
                                  -		assertEquals(":5b:", 4, content.getLineCount());
                                  -		assertEquals(":5c:", ("This"), content.getLine(0));
                                  -		assertEquals(":5d:", ("is"), content.getLine(1));
                                  -		assertEquals(":5e:", ("newLine a test"), content.getLine(2));
                                  -		assertEquals(":5f:", (""), content.getLine(3));
                                  -
                                  -		content.setText("");
                                  -		content.setText("This\nis\r\nnewLine a test\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":6a:", ("This\nis\r\nnewLine a test\r"), newText);
                                  -		assertEquals(":6b:", 4, content.getLineCount());
                                  -		assertEquals(":6c:", ("This"), content.getLine(0));
                                  -		assertEquals(":6d:", ("is"), content.getLine(1));
                                  -		assertEquals(":6e:", ("newLine a test"), content.getLine(2));
                                  -		assertEquals(":6f:", (""), content.getLine(3));
                                  -
                                  -		// insert at end
                                  -		content.setText("This");
                                  -		content.setText("\n ", 4, 4);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":7a:", ("This\n "), newText);
                                  -		assertEquals(":7b:", 2, content.getLineCount());
                                  -		assertEquals(":7c:", ("This"), content.getLine(0));
                                  -		assertEquals(":7d:", (" "), content.getLine(1));
                                  -		content.setText("This\n");
                                  -		content.setText("\n", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":7e:", ("This\n\n"), newText);
                                  -		assertEquals(":7f:", 3, content.getLineCount());
                                  -		assertEquals(":7g:", ("This"), content.getLine(0));
                                  -		assertEquals(":7h:", (""), content.getLine(1));
                                  -		assertEquals(":7i:", (""), content.getLine(2));
                                  -
                                  -		// insert at beginning
                                  -		content.setText("This");
                                  -		content.setText("\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":8a:", ("\nThis"), newText);
                                  -		assertEquals(":8b:", 2, content.getLineCount());
                                  -		assertEquals(":8c:", (""), content.getLine(0));
                                  -		assertEquals(":8d:", ("This"), content.getLine(1));
                                  -
                                  -		//insert at end
                                  -		content.setText("This");
                                  -		content.setText("\n", 4, 4);//passing 5, 5 runs into problem (text model doesn't not check range and fails)
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":8e:", "This\n", newText);
                                  -		//Note: This is different than StyledText, web editor always break line on \r \n \r\n, it uses lineDelimiter for enter key
                                  -		assertEquals(":8f:", 2, content.getLineCount());
                                  -		
                                  -		// insert text
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("*** ", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":9a:", newText, ("This\n*** is a test\r"));
                                  -		assertEquals(":9b:", 3, content.getLineCount());
                                  -		assertEquals(":9c:", ("This"), content.getLine(0));
                                  -		assertEquals(":9d:", ("*** is a test"), content.getLine(1));
                                  -		assertEquals(":9e:", (""), content.getLine(2));
                                  -		
                                  -		content.setText("This\n");
                                  -		content.setText("line", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":10a:", "This\nline", newText);
                                  -		assertEquals(":10b:", 2, content.getLineCount());
                                  -		assertEquals(":10c:", "This", content.getLine(0));
                                  -		assertEquals(":10d:", "line", content.getLine(1));
                                  -		assertEquals(":10e:", 1, content.getLineAtOffset(8));
                                  -		assertEquals(":10f:", 1, content.getLineAtOffset(9));
                                  -
                                  -		// insert at beginning 
                                  -		content.setText("This\n");
                                  -		content.setText("line\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":11a:", ("line\nThis\n"), newText);
                                  -		assertEquals(":11b:", 3, content.getLineCount());
                                  -		assertEquals(":11c:", ("line"), content.getLine(0));
                                  -		assertEquals(":11d:", ("This"), content.getLine(1));
                                  -		assertEquals(":11e:", 1, content.getLineAtOffset(5));
                                  -
                                  -		content.setText("Line 1\r\nLine 2\r\nLine 3");
                                  -		content.setText("\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":12a:", ("\rLine 1\r\nLine 2\r\nLine 3"), newText);
                                  -		assertEquals(":12b:", 4, content.getLineCount());
                                  -		assertEquals(":12c:", (""), content.getLine(0));
                                  -		assertEquals(":12d:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":12e:", ("Line 2"), content.getLine(2));
                                  -		assertEquals(":12f:", ("Line 3"), content.getLine(3));
                                  -
                                  -		content.setText("Line 1\nLine 2\nLine 3");
                                  -		content.setText("Line1a\nLine1b\n", 7, 7);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":13a:", ("Line 1\nLine1a\nLine1b\nLine 2\nLine 3"), newText);
                                  -		assertEquals(":13b:", 5, content.getLineCount());
                                  -		assertEquals(":13c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":13d:", ("Line1a"), content.getLine(1));
                                  -		assertEquals(":13e:", ("Line1b"), content.getLine(2));
                                  -		assertEquals(":13f:", ("Line 2"), content.getLine(3));
                                  -		assertEquals(":13g:", ("Line 3"), content.getLine(4));
                                  -
                                  -		content.setText("Line 1\nLine 2\nLine 3");
                                  -		content.setText("l1a", 11, 11);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":14a:", ("Line 1\nLinel1a 2\nLine 3"), newText);
                                  -		assertEquals(":14b:", 3, content.getLineCount());
                                  -		assertEquals(":14c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":14d:", ("Linel1a 2"), content.getLine(1));
                                  -		assertEquals(":14e:", ("Line 3"), content.getLine(2));
                                  -
                                  -		content.setText("Line 1\nLine 2 is a very long line that spans many words\nLine 3");
                                  -		content.setText("very, very, ", 19, 19);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":15a:", ("Line 1\nLine 2 is a very, very, very long line that spans many words\nLine 3"), newText);
                                  -		assertEquals(":15b:", 3, content.getLineCount());
                                  -		assertEquals(":15c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":15d:", ("Line 2 is a very, very, very long line that spans many words"), content.getLine(1));
                                  -		assertEquals(":15e:", ("Line 3"), content.getLine(2));
                                  -	}
                                  -		
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js-tests/test-performance.js b/branches/flexBox/sandbox/sandbox/orion/js-tests/test-performance.js
                                  deleted file mode 100644
                                  index 862f6327..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js-tests/test-performance.js
                                  +++ /dev/null
                                  @@ -1,84 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global editor setTimeout log */
                                  -
                                  -function PerformanceTestCase() {
                                  -}
                                  -
                                  -PerformanceTestCase.prototype = {
                                  -	test_pageDownScrolling: function () {
                                  -		var model = editor.getModel();
                                  -		editor.setSelection(0, 0);
                                  -		var start = new Date().getTime();
                                  -		function t() {
                                  -			var caretLine = model.getLineAtOffset(editor.getCaretOffset());
                                  -			editor.invokeAction("pageDown");
                                  -			if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine) {
                                  -				setTimeout(t, 0);
                                  -			} else {
                                  -				log("time(page down)=" + (new Date().getTime() - start));
                                  -			}
                                  -		}
                                  -		editor.focus();
                                  -		t();
                                  -	},	
                                  -	test_pageUpScrolling: function () {
                                  -		var model = editor.getModel();
                                  -		var charCount = model.getCharCount();
                                  -		editor.setSelection(charCount, charCount);
                                  -		var start = new Date().getTime();
                                  -		function t() {
                                  -			var caretLine = model.getLineAtOffset(editor.getCaretOffset());
                                  -			editor.invokeAction("pageUp");
                                  -			if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine) {
                                  -				setTimeout(t, 0);
                                  -			} else {
                                  -				log("time(page up)=" + (new Date().getTime() - start));
                                  -			}
                                  -		}
                                  -		editor.focus();
                                  -		t();
                                  -	},
                                  -	test_lineDownScrolling: function () {
                                  -		var count = 300;
                                  -		editor.setSelection(0, 0);
                                  -		var model = editor.getModel();
                                  -		var caretLine = model.getLineAtOffset(editor.getCaretOffset());
                                  -		var start = new Date().getTime();
                                  -		function t() {
                                  -			editor.invokeAction("lineDown");
                                  -			if ((model.getLineAtOffset(editor.getCaretOffset()) - caretLine) !== 300) {
                                  -				setTimeout(t, 0);
                                  -			} else {
                                  -				log("time(line down)=" + (new Date().getTime() - start));
                                  -			}
                                  -		}
                                  -		editor.focus();
                                  -		t();
                                  -	},
                                  -	test_lineUpScrolling: function () {
                                  -		var count = 300;
                                  -		var model = editor.getModel();
                                  -		var charCount = model.getCharCount();
                                  -		editor.setSelection(charCount, charCount);
                                  -		var caretLine = model.getLineAtOffset(editor.getCaretOffset());
                                  -		var start = new Date().getTime();
                                  -		function t() {
                                  -			editor.invokeAction("lineUp");
                                  -			if ((caretLine - model.getLineAtOffset(editor.getCaretOffset())) !== count) {
                                  -				setTimeout(t, 0);
                                  -			} else {
                                  -				log("time(line up)=" + (new Date().getTime() - start));
                                  -			}
                                  -		}
                                  -		editor.focus();
                                  -		t();
                                  -	}
                                  -};
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor.js b/branches/flexBox/sandbox/sandbox/orion/js/editor.js
                                  deleted file mode 100644
                                  index f7c50b43..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor.js
                                  +++ /dev/null
                                  @@ -1,4265 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._textArea = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isOpera) { this._clientDiv.blur(); }
                                  -			this._clientDiv.focus();
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			if (isIE) {
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				// Feature in IE, IE does redraw the selection background right
                                  -				// away after the selection changes because of mouse move events.
                                  -				// The fix is to call getBoundingClientRect() on the
                                  -				// body element to force the selection to be redraw. Some how
                                  -				// calling this method forces a redraw.
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset);
                                  -		},
                                  -		_getBoundsAtOffset_FF: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBoundsAtOffset_IE: function (offset) {
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = {left: 0, right: 0};
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			} else {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var range = document.body.createTextRange();
                                  -						range.moveToElementText(lineChild);
                                  -						range.collapse();
                                  -						range.moveEnd("character", offset - lineOffset + 1);
                                  -						range.moveStart("character", offset - lineOffset);
                                  -						result = range.getBoundingClientRect();
                                  -						var logicalXDPI = window.screen.logicalXDPI;
                                  -						var deviceXDPI = window.screen.deviceXDPI;
                                  -						result.left = result.left * logicalXDPI / deviceXDPI;
                                  -						result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var textArea = this._textArea;
                                  -				textArea.innerHTML = "";
                                  -				textArea.focus();
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					var text;
                                  -					if (textArea.firstChild) {
                                  -						text = "";
                                  -						var child = textArea.firstChild;
                                  -						while (child) {
                                  -							if (child.nodeType === child.TEXT_NODE) {
                                  -								text += child.data;
                                  -							} else if (child.tagName === "BR") {
                                  -								text += delimiter; 
                                  -							} 
                                  -							child = child.nextSibling;
                                  -						}
                                  -					} else {
                                  -						text = textArea.value;
                                  -					}
                                  -					return text;
                                  -				};
                                  -				
                                  -				//Try execCommand first. Works on firefox with clipboard permission,
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					var document = this._frameDocument;
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {
                                  -				}
                                  -				this._ignorePaste = false;
                                  -				
                                  -				if (!result) {
                                  -					//Try native paste in the text area, works for firefox (asynchronously) 
                                  -					//only works during the paste event
                                  -					if (event) {
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						//no event and no clipboard permission, paste can't be performed
                                  -						//suggest allow clipboard helper to the user
                                  -						this.focus();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				// Webkit (Chrome/Safari) allows getData during the paste event
                                  -				// Note: setData is not allowed, not even during copy/cut event
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === 1) {
                                  -				var textNode = lastChild.firstChild;
                                  -				if (textNode.data === " ") {
                                  -					lastChild = lastChild.previousSibling;
                                  -				}
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ?  this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction);
                                  -		},
                                  -		_getOffset_FF: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x);
                                  -		},
                                  -		_getXToOffset_FF: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				var rects = lineChild.getClientRects();
                                  -				for (var i = 0; i < rects.length; i++) {
                                  -					var rect = rects[i];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							var index = 0;
                                  -							while (index < nodeLength) {
                                  -								range.setStart(textNode, index);
                                  -								range.setEnd(textNode, index + 1);
                                  -								rect = range.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										index++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								index++;						
                                  -							}
                                  -							offset += index;
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var j = 0; j < nodeLength; j++) {
                                  -								newText.push("<span>");
                                  -								if (j === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(j));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(j, j + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getXToOffset_IE: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window
                                  -			* before using it. 
                                  -			*/
                                  -			var rects = child.getClientRects();
                                  -			var minLeft = rects[0].left;
                                  -			for (var i=1; i<rects.length; i++) {
                                  -				minLeft = Math.min(rects[i].left, minLeft);
                                  -			}
                                  -			var deltaX = minLeft - lineRect.left;
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var logicalXDPI = window.screen.logicalXDPI;
                                  -			var deviceXDPI = window.screen.deviceXDPI;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range = document.body.createTextRange();
                                  -						var high = textNode.length;
                                  -						var low = -1;
                                  -						while ((high - low) > 1) {
                                  -							var mid = Math.floor((high + low) / 2);
                                  -							range.moveToElementText(lineChild);
                                  -							range.move("character", low + 1);
                                  -							range.moveEnd("character", mid - low);
                                  -							rects = range.getClientRects();
                                  -							var found = false;
                                  -							for (var k = 0; k < rects.length; k++) {
                                  -								rect = rects[k];
                                  -								var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -								var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -								if (rangeLeft <= x && x < rangeRight) {
                                  -									found = true;
                                  -									break;
                                  -								}
                                  -							}
                                  -							if (found) {
                                  -								high = mid;
                                  -							} else {
                                  -								low = mid;
                                  -							}
                                  -						}
                                  -						if (lineChild.ignoreChars && high >= nodeLength) {
                                  -							high = nodeLength - 1;
                                  -						}
                                  -						offset += high;
                                  -						range.moveToElementText(lineChild);
                                  -						range.move("character", high);
                                  -						if (high === nodeLength - 1 && lineChild.ignoreChars) {
                                  -							range.moveEnd("character", 1 + lineChild.ignoreChars);
                                  -						} else {
                                  -							range.moveEnd("character", 1);
                                  -						}
                                  -						rect = range.getClientRects()[0];
                                  -						//TODO test for character trailing (wrong for bidi)
                                  -						if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) {
                                  -							offset++;
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var topNode = this._overlayDiv || this._clientDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var resizeNode = isIE ? this._frame : this._frameWindow;
                                  -			var focusNode = isIE ? this._clientDiv: this._frameWindow;
                                  -			this._handlers = [
                                  -				{target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}},
                                  -				{target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}},
                                  -				{target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}},
                                  -				{target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}},
                                  -				{target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}},
                                  -				{target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}},
                                  -				{target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}},
                                  -				{target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}},
                                  -				{target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}},
                                  -				{target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}},
                                  -				{target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}},
                                  -				{target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}},
                                  -				{target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}},
                                  -				{target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}},
                                  -				{target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}
                                  -			];
                                  -			if (isIE) {
                                  -				this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (isFirefox) {
                                  -				this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (!isIE && !isOpera) {
                                  -				var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -				this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -			}
                                  -			if (isFirefox && !isWindows) {
                                  -				this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -			}
                                  -			if (this._overlayDiv) {
                                  -				this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -			}
                                  -			if (!isW3CEvents) {
                                  -				this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -			}
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				addHandler(h.target, h.type, h.handler);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			var textArea = document.createElement("TEXTAREA");
                                  -			this._textArea = textArea;
                                  -			textArea.id = "textArea";
                                  -			textArea.tabIndex = -1;
                                  -			textArea.style.position = "fixed";
                                  -			textArea.style.whiteSpace = "pre";
                                  -			textArea.style.top = "-1000px";
                                  -			textArea.style.width = "100px";
                                  -			textArea.style.height = "100px";
                                  -			body.appendChild(textArea);
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -				
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			clientDiv.contentEditable = "true";
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			this._handleScroll();
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			if (isChrome || isFirefox || !event) {
                                  -				/* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */
                                  -				var document = this._frameDocument;
                                  -				var textArea = this._textArea;
                                  -				textArea.value = text;
                                  -				textArea.select();
                                  -				var result = false;
                                  -				
                                  -				//Try execCommand first, it works on firefox with clipboard permission,
                                  -				// chrome 5, safari 4.
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						if (event.type === "copy" && this._isDOMSelectionComplete()) {
                                  -							this.focus();
                                  -							return false;
                                  -						}
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -						}, 0);
                                  -						return false;
                                  -					} else {
                                  -						//no event and no permission, give up
                                  -						this.focus();
                                  -						return true;
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return result;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text);
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, lineEnd;
                                  -			lineEnd = this._model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			lineChild = endNode.firstChild;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			if (window.getSelection) {
                                  -				//FF
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -//**************************************************************************************************
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			document.body.style.width = frameWidth + "px";
                                  -			document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -//**************************************************************************************************
                                  -
                                  -var lineIndex, lineWidth, child, nextChild;
                                  -//**************************************************************************************************
                                  -(function _updatePage_removeLines(){
                                  -			lineIndex, lineWidth;
                                  -			child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -var rect;
                                  -//**************************************************************************************************
                                  -(function _updatePage_createLines(){
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					child = this._createLine(clientDiv, child, document, lineIndex, model);
                                  -					rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = rect.right - rect.left;
                                  -					child.lineWidth = lineWidth; 
                                  -					// when the maxLineIndex is known measure only the lines that have changed
                                  -					if (this._maxLineIndex !== -1) {
                                  -						if (lineWidth >= this._maxLineWidth) {
                                  -							this._maxLineWidth = lineWidth;
                                  -							this._maxLineIndex = lineIndex;
                                  -						}
                                  -					}
                                  -				}
                                  -				if (lineIndex === topIndex) { this._topChild = child; }
                                  -				if (lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				if (child.lineIndex === lineIndex) {
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateMaxLineWidth(){
                                  -			// when the maxLineIndex is not known all the visible lines need to be measured
                                  -			if (this._maxLineIndex === -1) {
                                  -				child = this._getLineNext();
                                  -				while (child) {
                                  -					lineWidth = child.lineWidth;
                                  -					if (lineWidth >= this._maxLineWidth) {
                                  -						this._maxLineWidth = lineWidth;
                                  -						this._maxLineIndex = child.lineIndex;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateRulers(){
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -var leftWidth, rightWidth, scrollDiv, scrollHeight, clientWidth, width, scrollWidth;
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateEditorDivStyle(){
                                  -			leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateScrollDivStyle(){
                                  -			scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			clientWidth = this._getClientWidth();
                                  -			width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/* Except by IE, all other browsers are not allocating enough space for the right padding 
                                  -			 * in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			 */
                                  -			scrollWidth = width;
                                  -			if (!isIE) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateDOMSelection(){
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -			
                                  -var scroll, left, clipLeft, clipTop, clipRight, clipBottom, overlayDiv;
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateViewport(){
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			scroll = this._getScroll();
                                  -			left = scroll.x;
                                  -			clipLeft = left;
                                  -			clipTop = top;
                                  -			clipRight = left + clientWidth;
                                  -			clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateRulerSize(){
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							div.insertBefore(lineDiv, child);
                                  -						}
                                  -						if (child && child.lineIndex === lineIndex) {
                                  -							child = child.nextSibling;
                                  -						}
                                  -					}
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							div.appendChild(lineDiv);
                                  -						}
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor_improved.js b/branches/flexBox/sandbox/sandbox/orion/js/editor_improved.js
                                  deleted file mode 100644
                                  index c314b27d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor_improved.js
                                  +++ /dev/null
                                  @@ -1,4276 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -window.editorDivStyleApplied = 0;
                                  -window.scrollDivStyleApplied = 0;
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._textArea = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isOpera) { this._clientDiv.blur(); }
                                  -			this._clientDiv.focus();
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			if (isIE) {
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				// Feature in IE, IE does redraw the selection background right
                                  -				// away after the selection changes because of mouse move events.
                                  -				// The fix is to call getBoundingClientRect() on the
                                  -				// body element to force the selection to be redraw. Some how
                                  -				// calling this method forces a redraw.
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset);
                                  -		},
                                  -		_getBoundsAtOffset_FF: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBoundsAtOffset_IE: function (offset) {
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = {left: 0, right: 0};
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			} else {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var range = document.body.createTextRange();
                                  -						range.moveToElementText(lineChild);
                                  -						range.collapse();
                                  -						range.moveEnd("character", offset - lineOffset + 1);
                                  -						range.moveStart("character", offset - lineOffset);
                                  -						result = range.getBoundingClientRect();
                                  -						var logicalXDPI = window.screen.logicalXDPI;
                                  -						var deviceXDPI = window.screen.deviceXDPI;
                                  -						result.left = result.left * logicalXDPI / deviceXDPI;
                                  -						result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var textArea = this._textArea;
                                  -				textArea.innerHTML = "";
                                  -				textArea.focus();
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					var text;
                                  -					if (textArea.firstChild) {
                                  -						text = "";
                                  -						var child = textArea.firstChild;
                                  -						while (child) {
                                  -							if (child.nodeType === child.TEXT_NODE) {
                                  -								text += child.data;
                                  -							} else if (child.tagName === "BR") {
                                  -								text += delimiter; 
                                  -							} 
                                  -							child = child.nextSibling;
                                  -						}
                                  -					} else {
                                  -						text = textArea.value;
                                  -					}
                                  -					return text;
                                  -				};
                                  -				
                                  -				//Try execCommand first. Works on firefox with clipboard permission,
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					var document = this._frameDocument;
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {
                                  -				}
                                  -				this._ignorePaste = false;
                                  -				
                                  -				if (!result) {
                                  -					//Try native paste in the text area, works for firefox (asynchronously) 
                                  -					//only works during the paste event
                                  -					if (event) {
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						//no event and no clipboard permission, paste can't be performed
                                  -						//suggest allow clipboard helper to the user
                                  -						this.focus();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				// Webkit (Chrome/Safari) allows getData during the paste event
                                  -				// Note: setData is not allowed, not even during copy/cut event
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === 1) {
                                  -				var textNode = lastChild.firstChild;
                                  -				if (textNode.data === " ") {
                                  -					lastChild = lastChild.previousSibling;
                                  -				}
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ?  this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction);
                                  -		},
                                  -		_getOffset_FF: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x);
                                  -		},
                                  -		_getXToOffset_FF: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				var rects = lineChild.getClientRects();
                                  -				for (var i = 0; i < rects.length; i++) {
                                  -					var rect = rects[i];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							var index = 0;
                                  -							while (index < nodeLength) {
                                  -								range.setStart(textNode, index);
                                  -								range.setEnd(textNode, index + 1);
                                  -								rect = range.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										index++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								index++;						
                                  -							}
                                  -							offset += index;
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var j = 0; j < nodeLength; j++) {
                                  -								newText.push("<span>");
                                  -								if (j === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(j));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(j, j + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getXToOffset_IE: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window
                                  -			* before using it. 
                                  -			*/
                                  -			var rects = child.getClientRects();
                                  -			var minLeft = rects[0].left;
                                  -			for (var i=1; i<rects.length; i++) {
                                  -				minLeft = Math.min(rects[i].left, minLeft);
                                  -			}
                                  -			var deltaX = minLeft - lineRect.left;
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var logicalXDPI = window.screen.logicalXDPI;
                                  -			var deviceXDPI = window.screen.deviceXDPI;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range = document.body.createTextRange();
                                  -						var high = textNode.length;
                                  -						var low = -1;
                                  -						while ((high - low) > 1) {
                                  -							var mid = Math.floor((high + low) / 2);
                                  -							range.moveToElementText(lineChild);
                                  -							range.move("character", low + 1);
                                  -							range.moveEnd("character", mid - low);
                                  -							rects = range.getClientRects();
                                  -							var found = false;
                                  -							for (var k = 0; k < rects.length; k++) {
                                  -								rect = rects[k];
                                  -								var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -								var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -								if (rangeLeft <= x && x < rangeRight) {
                                  -									found = true;
                                  -									break;
                                  -								}
                                  -							}
                                  -							if (found) {
                                  -								high = mid;
                                  -							} else {
                                  -								low = mid;
                                  -							}
                                  -						}
                                  -						if (lineChild.ignoreChars && high >= nodeLength) {
                                  -							high = nodeLength - 1;
                                  -						}
                                  -						offset += high;
                                  -						range.moveToElementText(lineChild);
                                  -						range.move("character", high);
                                  -						if (high === nodeLength - 1 && lineChild.ignoreChars) {
                                  -							range.moveEnd("character", 1 + lineChild.ignoreChars);
                                  -						} else {
                                  -							range.moveEnd("character", 1);
                                  -						}
                                  -						rect = range.getClientRects()[0];
                                  -						//TODO test for character trailing (wrong for bidi)
                                  -						if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) {
                                  -							offset++;
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var topNode = this._overlayDiv || this._clientDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var resizeNode = isIE ? this._frame : this._frameWindow;
                                  -			var focusNode = isIE ? this._clientDiv: this._frameWindow;
                                  -			this._handlers = [
                                  -				{target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}},
                                  -				{target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}},
                                  -				{target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}},
                                  -				{target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}},
                                  -				{target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}},
                                  -				{target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}},
                                  -				{target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}},
                                  -				{target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}},
                                  -				{target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}},
                                  -				{target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}},
                                  -				{target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}},
                                  -				{target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}},
                                  -				{target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}},
                                  -				{target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}},
                                  -				{target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}
                                  -			];
                                  -			if (isIE) {
                                  -				this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (isFirefox) {
                                  -				this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (!isIE && !isOpera) {
                                  -				var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -				this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -			}
                                  -			if (isFirefox && !isWindows) {
                                  -				this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -			}
                                  -			if (this._overlayDiv) {
                                  -				this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -			}
                                  -			if (!isW3CEvents) {
                                  -				this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -			}
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				addHandler(h.target, h.type, h.handler);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			var textArea = document.createElement("TEXTAREA");
                                  -			this._textArea = textArea;
                                  -			textArea.id = "textArea";
                                  -			textArea.tabIndex = -1;
                                  -			textArea.style.position = "fixed";
                                  -			textArea.style.whiteSpace = "pre";
                                  -			textArea.style.top = "-1000px";
                                  -			textArea.style.width = "100px";
                                  -			textArea.style.height = "100px";
                                  -			body.appendChild(textArea);
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -				
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (false && isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			clientDiv.contentEditable = "true";
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			this._handleScroll();
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			if (isChrome || isFirefox || !event) {
                                  -				/* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */
                                  -				var document = this._frameDocument;
                                  -				var textArea = this._textArea;
                                  -				textArea.value = text;
                                  -				textArea.select();
                                  -				var result = false;
                                  -				
                                  -				//Try execCommand first, it works on firefox with clipboard permission,
                                  -				// chrome 5, safari 4.
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						if (event.type === "copy" && this._isDOMSelectionComplete()) {
                                  -							this.focus();
                                  -							return false;
                                  -						}
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -						}, 0);
                                  -						return false;
                                  -					} else {
                                  -						//no event and no permission, give up
                                  -						this.focus();
                                  -						return true;
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return result;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text);
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, lineEnd;
                                  -			lineEnd = this._model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			lineChild = endNode.firstChild;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			if (window.getSelection) {
                                  -				//FF
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -//**************************************************************************************************
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			//document.body.style.width = frameWidth + "px";
                                  -			//document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = 16;
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = 256;
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -//**************************************************************************************************
                                  -
                                  -var lineIndex, lineWidth, child, nextChild;
                                  -//**************************************************************************************************
                                  -(function _updatePage_removeLines(){
                                  -			lineIndex, lineWidth;
                                  -			child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -this._maxLineWidth = 1000;
                                  -this._maxLineIndex = 1;
                                  -//var rect;
                                  -//**************************************************************************************************
                                  -(function _updatePage_createLines(){
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					child = this._createLine(clientDiv, child, document, lineIndex, model);
                                  -					/*
                                  -					rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = rect.right - rect.left;
                                  -					child.lineWidth = lineWidth; 
                                  -					// when the maxLineIndex is known measure only the lines that have changed
                                  -					if (this._maxLineIndex !== -1) {
                                  -						if (lineWidth >= this._maxLineWidth) {
                                  -							this._maxLineWidth = lineWidth;
                                  -							this._maxLineIndex = lineIndex;
                                  -						}
                                  -					}
                                  -					*/
                                  -				}
                                  -				if (lineIndex === topIndex) { this._topChild = child; }
                                  -				if (lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				if (child.lineIndex === lineIndex) {
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -/*
                                  -(function _updatePage_updateMaxLineWidth(){
                                  -			// when the maxLineIndex is not known all the visible lines need to be measured
                                  -			if (this._maxLineIndex === -1) {
                                  -				child = this._getLineNext();
                                  -				while (child) {
                                  -					lineWidth = child.lineWidth;
                                  -					if (lineWidth >= this._maxLineWidth) {
                                  -						this._maxLineWidth = lineWidth;
                                  -						this._maxLineIndex = child.lineIndex;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -}).call(this);
                                  -*/
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateRulers(){
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -var leftWidth, rightWidth, scrollDiv, scrollHeight, clientWidth, width, scrollWidth;
                                  -//**************************************************************************************************
                                  -if (window.editorDivStyleApplied < 3)
                                  -(function _updatePage_updateEditorDivStyle(){
                                  -window.editorDivStyleApplied++;
                                  -			leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -if (window.scrollDivStyleApplied < 3)
                                  -(function _updatePage_updateScrollDivStyle(){
                                  -window.scrollDivStyleApplied++;
                                  -			scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			clientWidth = this._getClientWidth();
                                  -			width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/* Except by IE, all other browsers are not allocating enough space for the right padding 
                                  -			 * in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			 */
                                  -			scrollWidth = width;
                                  -			if (!isIE) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateDOMSelection(){
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -			/*if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}*/
                                  -			
                                  -var scroll, left, clipLeft, clipTop, clipRight, clipBottom, overlayDiv;
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateViewport(){
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			scroll = this._getScroll();
                                  -			left = scroll.x;
                                  -			clipLeft = left;
                                  -			clipTop = top;
                                  -			clipRight = left + clientWidth;
                                  -			clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -
                                  -//**************************************************************************************************
                                  -(function _updatePage_updateRulerSize(){
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -}).call(this);
                                  -//**************************************************************************************************
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							div.insertBefore(lineDiv, child);
                                  -						}
                                  -						if (child && child.lineIndex === lineIndex) {
                                  -							child = child.nextSibling;
                                  -						}
                                  -					}
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							div.appendChild(lineDiv);
                                  -						}
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor_new.js b/branches/flexBox/sandbox/sandbox/orion/js/editor_new.js
                                  deleted file mode 100644
                                  index cb67f001..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor_new.js
                                  +++ /dev/null
                                  @@ -1,4219 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._textArea = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isOpera) { this._clientDiv.blur(); }
                                  -			this._clientDiv.focus();
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			if (isIE) {
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				// Feature in IE, IE does redraw the selection background right
                                  -				// away after the selection changes because of mouse move events.
                                  -				// The fix is to call getBoundingClientRect() on the
                                  -				// body element to force the selection to be redraw. Some how
                                  -				// calling this method forces a redraw.
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset);
                                  -		},
                                  -		_getBoundsAtOffset_FF: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBoundsAtOffset_IE: function (offset) {
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = {left: 0, right: 0};
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			} else {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var range = document.body.createTextRange();
                                  -						range.moveToElementText(lineChild);
                                  -						range.collapse();
                                  -						range.moveEnd("character", offset - lineOffset + 1);
                                  -						range.moveStart("character", offset - lineOffset);
                                  -						result = range.getBoundingClientRect();
                                  -						var logicalXDPI = window.screen.logicalXDPI;
                                  -						var deviceXDPI = window.screen.deviceXDPI;
                                  -						result.left = result.left * logicalXDPI / deviceXDPI;
                                  -						result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var textArea = this._textArea;
                                  -				textArea.innerHTML = "";
                                  -				textArea.focus();
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					var text;
                                  -					if (textArea.firstChild) {
                                  -						text = "";
                                  -						var child = textArea.firstChild;
                                  -						while (child) {
                                  -							if (child.nodeType === child.TEXT_NODE) {
                                  -								text += child.data;
                                  -							} else if (child.tagName === "BR") {
                                  -								text += delimiter; 
                                  -							} 
                                  -							child = child.nextSibling;
                                  -						}
                                  -					} else {
                                  -						text = textArea.value;
                                  -					}
                                  -					return text;
                                  -				};
                                  -				
                                  -				//Try execCommand first. Works on firefox with clipboard permission,
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					var document = this._frameDocument;
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {
                                  -				}
                                  -				this._ignorePaste = false;
                                  -				
                                  -				if (!result) {
                                  -					//Try native paste in the text area, works for firefox (asynchronously) 
                                  -					//only works during the paste event
                                  -					if (event) {
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						//no event and no clipboard permission, paste can't be performed
                                  -						//suggest allow clipboard helper to the user
                                  -						this.focus();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				// Webkit (Chrome/Safari) allows getData during the paste event
                                  -				// Note: setData is not allowed, not even during copy/cut event
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === 1) {
                                  -				var textNode = lastChild.firstChild;
                                  -				if (textNode.data === " ") {
                                  -					lastChild = lastChild.previousSibling;
                                  -				}
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ?  this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction);
                                  -		},
                                  -		_getOffset_FF: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x);
                                  -		},
                                  -		_getXToOffset_FF: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				var rects = lineChild.getClientRects();
                                  -				for (var i = 0; i < rects.length; i++) {
                                  -					var rect = rects[i];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							var index = 0;
                                  -							while (index < nodeLength) {
                                  -								range.setStart(textNode, index);
                                  -								range.setEnd(textNode, index + 1);
                                  -								rect = range.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										index++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								index++;						
                                  -							}
                                  -							offset += index;
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var j = 0; j < nodeLength; j++) {
                                  -								newText.push("<span>");
                                  -								if (j === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(j));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(j, j + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getXToOffset_IE: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window
                                  -			* before using it. 
                                  -			*/
                                  -			var rects = child.getClientRects();
                                  -			var minLeft = rects[0].left;
                                  -			for (var i=1; i<rects.length; i++) {
                                  -				minLeft = Math.min(rects[i].left, minLeft);
                                  -			}
                                  -			var deltaX = minLeft - lineRect.left;
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var logicalXDPI = window.screen.logicalXDPI;
                                  -			var deviceXDPI = window.screen.deviceXDPI;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range = document.body.createTextRange();
                                  -						var high = textNode.length;
                                  -						var low = -1;
                                  -						while ((high - low) > 1) {
                                  -							var mid = Math.floor((high + low) / 2);
                                  -							range.moveToElementText(lineChild);
                                  -							range.move("character", low + 1);
                                  -							range.moveEnd("character", mid - low);
                                  -							rects = range.getClientRects();
                                  -							var found = false;
                                  -							for (var k = 0; k < rects.length; k++) {
                                  -								rect = rects[k];
                                  -								var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -								var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -								if (rangeLeft <= x && x < rangeRight) {
                                  -									found = true;
                                  -									break;
                                  -								}
                                  -							}
                                  -							if (found) {
                                  -								high = mid;
                                  -							} else {
                                  -								low = mid;
                                  -							}
                                  -						}
                                  -						if (lineChild.ignoreChars && high >= nodeLength) {
                                  -							high = nodeLength - 1;
                                  -						}
                                  -						offset += high;
                                  -						range.moveToElementText(lineChild);
                                  -						range.move("character", high);
                                  -						if (high === nodeLength - 1 && lineChild.ignoreChars) {
                                  -							range.moveEnd("character", 1 + lineChild.ignoreChars);
                                  -						} else {
                                  -							range.moveEnd("character", 1);
                                  -						}
                                  -						rect = range.getClientRects()[0];
                                  -						//TODO test for character trailing (wrong for bidi)
                                  -						if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) {
                                  -							offset++;
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var topNode = this._overlayDiv || this._clientDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var resizeNode = isIE ? this._frame : this._frameWindow;
                                  -			var focusNode = isIE ? this._clientDiv: this._frameWindow;
                                  -			this._handlers = [
                                  -				{target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}},
                                  -				{target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}},
                                  -				{target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}},
                                  -				{target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}},
                                  -				{target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}},
                                  -				{target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}},
                                  -				{target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}},
                                  -				{target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}},
                                  -				{target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}},
                                  -				{target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}},
                                  -				{target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}},
                                  -				{target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}},
                                  -				{target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}},
                                  -				{target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}},
                                  -				{target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}
                                  -			];
                                  -			if (isIE) {
                                  -				this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (isFirefox) {
                                  -				this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (!isIE && !isOpera) {
                                  -				var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -				this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -			}
                                  -			if (isFirefox && !isWindows) {
                                  -				this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -			}
                                  -			if (this._overlayDiv) {
                                  -				this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -			}
                                  -			if (!isW3CEvents) {
                                  -				this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -			}
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				addHandler(h.target, h.type, h.handler);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			var textArea = document.createElement("TEXTAREA");
                                  -			this._textArea = textArea;
                                  -			textArea.id = "textArea";
                                  -			textArea.tabIndex = -1;
                                  -			textArea.style.position = "fixed";
                                  -			textArea.style.whiteSpace = "pre";
                                  -			textArea.style.top = "-1000px";
                                  -			textArea.style.width = "100px";
                                  -			textArea.style.height = "100px";
                                  -			body.appendChild(textArea);
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -				
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			clientDiv.contentEditable = "true";
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			this._handleScroll();
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			if (isChrome || isFirefox || !event) {
                                  -				/* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */
                                  -				var document = this._frameDocument;
                                  -				var textArea = this._textArea;
                                  -				textArea.value = text;
                                  -				textArea.select();
                                  -				var result = false;
                                  -				
                                  -				//Try execCommand first, it works on firefox with clipboard permission,
                                  -				// chrome 5, safari 4.
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						if (event.type === "copy" && this._isDOMSelectionComplete()) {
                                  -							this.focus();
                                  -							return false;
                                  -						}
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -						}, 0);
                                  -						return false;
                                  -					} else {
                                  -						//no event and no permission, give up
                                  -						this.focus();
                                  -						return true;
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return result;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text);
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, lineEnd;
                                  -			lineEnd = this._model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			lineChild = endNode.firstChild;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			if (window.getSelection) {
                                  -				//FF
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			document.body.style.width = frameWidth + "px";
                                  -			document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -			
                                  -			var lineIndex, lineWidth;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				var nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					child = this._createLine(clientDiv, child, document, lineIndex, model);
                                  -					var rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = rect.right - rect.left;
                                  -					child.lineWidth = lineWidth; 
                                  -					// when the maxLineIndex is known measure only the lines that have changed
                                  -					if (this._maxLineIndex !== -1) {
                                  -						if (lineWidth >= this._maxLineWidth) {
                                  -							this._maxLineWidth = lineWidth;
                                  -							this._maxLineIndex = lineIndex;
                                  -						}
                                  -					}
                                  -				}
                                  -				if (lineIndex === topIndex) { this._topChild = child; }
                                  -				if (lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				if (child.lineIndex === lineIndex) {
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -
                                  -			// when the maxLineIndex is not known all the visible lines need to be measured
                                  -			if (this._maxLineIndex === -1) {
                                  -				child = this._getLineNext();
                                  -				while (child) {
                                  -					lineWidth = child.lineWidth;
                                  -					if (lineWidth >= this._maxLineWidth) {
                                  -						this._maxLineWidth = lineWidth;
                                  -						this._maxLineIndex = child.lineIndex;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -			
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -			
                                  -			var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -			
                                  -			var scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			var scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			var clientWidth = this._getClientWidth();
                                  -			var width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/* Except by IE, all other browsers are not allocating enough space for the right padding 
                                  -			 * in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			 */
                                  -			var scrollWidth = width;
                                  -			if (!isIE) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			var scroll = this._getScroll();
                                  -			var left = scroll.x;
                                  -			var clipLeft = left;
                                  -			var clipTop = top;
                                  -			var clipRight = left + clientWidth;
                                  -			var clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			var overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							div.insertBefore(lineDiv, child);
                                  -						}
                                  -						if (child && child.lineIndex === lineIndex) {
                                  -							child = child.nextSibling;
                                  -						}
                                  -					}
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							div.appendChild(lineDiv);
                                  -						}
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor_nightly.js b/branches/flexBox/sandbox/sandbox/orion/js/editor_nightly.js
                                  deleted file mode 100644
                                  index 537a7c95..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor_nightly.js
                                  +++ /dev/null
                                  @@ -1,4649 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined;
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || undefined;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isPad = navigator.userAgent.indexOf("iPad") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = (!isIE || isIE >= 9) && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			if (isPad) {
                                  -				parent.removeChild(this._touchDiv);
                                  -				this._touchDiv = null;
                                  -				this._selDiv1 = null;
                                  -				this._selDiv2 = null;
                                  -				this._selDiv3 = null;
                                  -				this._textArea = null;
                                  -			}
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isPad) {
                                  -				this._textArea.focus();
                                  -			} else {
                                  -				if (isOpera) { this._clientDiv.blur(); }
                                  -				this._clientDiv.focus();
                                  -			}
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			/*
                                  -			* Bug in IE 8 and earlier. For some reason when text is deselected
                                  -			* the overflow selection at the end of some lines does not get redrawn.
                                  -			* The fix is to create a DOM element in the body to force a redraw.
                                  -			*/
                                  -			if (isIE < 9) {
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDragOver: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			e.dataTransfer.dropEffect = "none";
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDrop: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			/*
                                  -			* Feature in IE.  The selection is not restored when the
                                  -			* editor gets focus and the caret is always placed at the
                                  -			* beginning of the document.  The fix is to update the DOM
                                  -			* selection during the focus event.
                                  -			*/
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (isPad) {
                                  -				if (e.keyCode === 8) {
                                  -					this._doBackspace({});
                                  -					e.preventDefault();
                                  -				}
                                  -				return;
                                  -			}			
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				/*
                                  -				* Feature in IE. IE does redraw the selection background right
                                  -				* away after the selection changes because of mouse move events.
                                  -				* The fix is to call getBoundingClientRect() on the
                                  -				* body element to force the selection to be redraw. Some how
                                  -				* calling this method forces a redraw.
                                  -				*/
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE < 9 ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (isPad && lineIndex === undefined && ruler && ruler.getOverview() === "document") {
                                  -				var buttonHeight = 17;
                                  -				var clientHeight = this._getClientHeight ();
                                  -				var lineHeight = this._getLineHeight ();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -				var pixels = this._model.getLineCount () * lineHeight;
                                  -				this.setTopPixel(Math.floor((e.clientY - buttonHeight - lineHeight) * pixels / trackHeight));
                                  -			}
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleInput: function (e) {
                                  -			var textArea = this._textArea;
                                  -			this._doContent(textArea.value);
                                  -			textArea.selectionStart = textArea.selectionEnd = 0;
                                  -			textArea.value = "";
                                  -			e.preventDefault();
                                  -		},
                                  -		_handleTextInput: function (e) {
                                  -			this._doContent(e.data);
                                  -			e.preventDefault();
                                  -		},
                                  -		_touchConvert: function (touch) {
                                  -			var rect = this._frame.getBoundingClientRect();
                                  -			var body = this._parentDocument.body;
                                  -			return {left: touch.clientX - rect.left - body.scrollLeft, top: touch.clientY - rect.top - body.scrollTop};
                                  -		},
                                  -		_handleTouchStart: function (e) {
                                  -			var touches = e.touches, touch, pt, sel;
                                  -			this._touchMoved = false;
                                  -			this._touchStartScroll = undefined;
                                  -			if (touches.length === 1) {
                                  -				touch = touches[0];
                                  -				var pageX = touch.pageX;
                                  -				var pageY = touch.pageY;
                                  -				this._touchStartX = pageX;
                                  -				this._touchStartY = pageY;
                                  -				this._touchStartTime = e.timeStamp;
                                  -				this._touchStartScroll = this._getScroll();
                                  -				sel = this._getSelection();
                                  -				pt = this._touchConvert(touches[0]);
                                  -				this._touchGesture = "none";
                                  -				if (!sel.isEmpty()) {
                                  -					if (this._hitOffset(sel.end, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendEnd";
                                  -					} else if (this._hitOffset(sel.start, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendStart";
                                  -					}
                                  -				}
                                  -				if (this._touchGesture === "none") {
                                  -					var textArea = this._textArea;
                                  -					textArea.value = "";
                                  -					textArea.style.left = "-1000px";
                                  -					textArea.style.top = "-1000px";
                                  -					textArea.style.width = "3000px";
                                  -					textArea.style.height = "3000px";
                                  -					var self = this;
                                  -					var f = function() {
                                  -						self._touchTimeout = null;
                                  -						self._clickCount = 1;
                                  -						self._setSelectionTo(pt.left, pt.top, false);
                                  -					};
                                  -					this._touchTimeout = setTimeout(f, 200);
                                  -				}
                                  -			} else if (touches.length === 2) {
                                  -				this._touchGesture = "select";
                                  -				if (this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -				}
                                  -				pt = this._touchConvert(touches[0]);
                                  -				var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				pt = this._touchConvert(touches[1]);
                                  -				var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				sel = this._getSelection();
                                  -				sel.setCaret(offset1);
                                  -				sel.extend(offset2);
                                  -				this._setSelection(sel, true, true);
                                  -			}
                                  -			//Cannot prevent to show maginifier
                                  -//			e.preventDefault();
                                  -		},
                                  -		_handleTouchMove: function (e) {
                                  -			this._touchMoved = true;
                                  -			var touches = e.touches, pt, sel;
                                  -			if (touches.length === 1) {
                                  -				var touch = touches[0];
                                  -				var pageX = touch.pageX;
                                  -				var pageY = touch.pageY;
                                  -				var deltaX = this._touchStartX - pageX;
                                  -				var deltaY = this._touchStartY - pageY;
                                  -				pt = this._touchConvert(touch);
                                  -				sel = this._getSelection();
                                  -				if (this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -				}
                                  -				if (this._touchGesture === "none") {
                                  -					if ((e.timeStamp - this._touchStartTime) < 200 && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) {
                                  -						this._touchGesture = "scroll";
                                  -					} else {
                                  -						this._touchGesture = "caret";
                                  -					}
                                  -				}
                                  -				if (this._touchGesture === "select") {
                                  -					if (this._hitOffset(sel.end, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendEnd";
                                  -					} else if (this._hitOffset(sel.start, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendStart";
                                  -					} else {
                                  -						this._touchGesture = "caret";
                                  -					}
                                  -				}
                                  -				switch (this._touchGesture) {
                                  -					case "scroll":
                                  -						this._touchStartX = pageX;
                                  -						this._touchStartY = pageY;
                                  -						this._scrollView(deltaX, deltaY);
                                  -						break;
                                  -					case "extendStart":
                                  -					case "extendEnd":
                                  -						this._clickCount = 1;
                                  -						var lineIndex = this._getYToLine(pt.top);
                                  -						var offset = this._getXToOffset(lineIndex, pt.left);
                                  -						sel.setCaret(this._touchGesture === "extendStart" ? sel.end : sel.start);
                                  -						sel.extend(offset);
                                  -						if (offset >= sel.end && this._touchGesture === "extendStart") {
                                  -							this._touchGesture = "extendEnd";
                                  -						}
                                  -						if (offset <= sel.start && this._touchGesture === "extendEnd") {
                                  -							this._touchGesture = "extendStart";
                                  -						}
                                  -						this._setSelection(sel, true, true);
                                  -						break;
                                  -					case "caret":
                                  -						this._setSelectionTo(pt.left, pt.top, false);
                                  -						break;
                                  -				}
                                  -			} else if (touches.length === 2) {
                                  -				pt = this._touchConvert(touches[0]);
                                  -				var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				pt = this._touchConvert(touches[1]);
                                  -				var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				sel = this._getSelection();
                                  -				sel.setCaret(offset1);
                                  -				sel.extend(offset2);
                                  -				this._setSelection(sel, true, true);
                                  -			}
                                  -			e.preventDefault();
                                  -		},
                                  -		_handleTouchEnd: function (e) {
                                  -			if (!this._touchMoved) {
                                  -				if (e.touches.length === 0 && e.changedTouches.length === 1 && this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -					var touch = e.changedTouches[0];
                                  -					this._clickCount = 1;
                                  -					var pt = this._touchConvert(touch);
                                  -					this._setSelectionTo(pt.left, pt.top, false);
                                  -				}
                                  -			}
                                  -			if (e.touches.length === 0) {
                                  -				var self = this;
                                  -				setTimeout(function() {
                                  -					var selection = self._getSelection();
                                  -					var text = self._model.getText(selection.start, selection.end);
                                  -					var textArea = self._textArea;
                                  -					textArea.value = text;
                                  -					textArea.selectionStart = 0;
                                  -					textArea.selectionEnd = text.length;
                                  -					if (!selection.isEmpty()) {
                                  -						var touchRect = self._touchDiv.getBoundingClientRect();
                                  -						var bounds = self._getOffsetBounds(selection.start);
                                  -						textArea.style.left = (touchRect.width / 2) + "px";
                                  -						textArea.style.top = ((bounds.top > 40 ? bounds.top - 30 : bounds.top + 30)) + "px";
                                  -					}
                                  -				}, 0);
                                  -			}
                                  -			e.preventDefault();
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera || isIE >= 9;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						var range;
                                  -						if (isRangeRects) {
                                  -							range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else if (isIE) {
                                  -							range = document.body.createTextRange();
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", index + 1);
                                  -							range.moveStart("character", index);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						if (isIE) {
                                  -							var logicalXDPI = window.screen.logicalXDPI;
                                  -							var deviceXDPI = window.screen.deviceXDPI;
                                  -							result.left = result.left * logicalXDPI / deviceXDPI;
                                  -							result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var window = this._frameWindow;
                                  -				var document = this._frameDocument;
                                  -				var child = document.createElement("PRE");
                                  -				child.style.position = "fixed";
                                  -				child.style.left = "-1000px";
                                  -				child.appendChild(document.createTextNode(" "));
                                  -				this._clientDiv.appendChild(child);
                                  -				var range = document.createRange();
                                  -				range.selectNodeContents(child);
                                  -				var sel = window.getSelection();
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				var self = this;
                                  -				var cleanup = function() {
                                  -					self._updateDOMSelection();
                                  -					self._clientDiv.removeChild(child);
                                  -				};
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					/*
                                  -					* Use the selection anchor to determine the end of the pasted text as it is possible that
                                  -					* some browsers (like Firefox) add extra elements (<BR>) after the pasted text.
                                  -					*/
                                  -					var endNode = null;
                                  -					if (sel.anchorNode.nodeType !== child.TEXT_NODE) {
                                  -						endNode = sel.anchorNode.childNodes[sel.anchorOffset];
                                  -					}
                                  -					var text = [];
                                  -					var getNodeText = function(node) {
                                  -						var nodeChild = node.firstChild;
                                  -						while (nodeChild !== endNode) {
                                  -							if (nodeChild.nodeType === child.TEXT_NODE) {
                                  -								text.push(nodeChild !== sel.anchorNode ? nodeChild.data : nodeChild.data.substring(0, sel.anchorOffset));
                                  -							} else if (nodeChild.tagName === "BR") {
                                  -								text.push(delimiter); 
                                  -							} else {
                                  -								getNodeText(nodeChild);
                                  -							}
                                  -							nodeChild = nodeChild.nextSibling;
                                  -						}
                                  -					};
                                  -					getNodeText(child);
                                  -					cleanup();
                                  -					return text.join("");
                                  -				};
                                  -				
                                  -				/* Try execCommand first. Works on firefox with clipboard permission. */
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {}
                                  -				this._ignorePaste = false;
                                  -				if (!result) {
                                  -					/*
                                  -					* Try native paste in DOM, works for firefox during the paste event.
                                  -					*/
                                  -					if (event) {
                                  -						setTimeout(function() {
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						/* no event and no clipboard permission, paste can't be performed */
                                  -						cleanup();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				/*
                                  -				* Webkit (Chrome/Safari) allows getData during the paste event
                                  -				* Note: setData is not allowed, not even during copy/cut event
                                  -				*/
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === lastChild.firstChild.length) {
                                  -				lastChild = lastChild.previousSibling;
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_W3C(offset, word, direction);
                                  -		},
                                  -		_getOffset_W3C: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE 8 and earlier. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window before using it. 
                                  -			*/
                                  -			var deltaX = 0, rects;
                                  -			if (isIE < 9) {
                                  -				rects = child.getClientRects();
                                  -				var minLeft = rects[0].left;
                                  -				for (var i=1; i<rects.length; i++) {
                                  -					minLeft = Math.min(rects[i].left, minLeft);
                                  -				}
                                  -				deltaX = minLeft - lineRect.left;
                                  -			}
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var logicalXDPI = isIE ? window.screen.logicalXDPI : 1;
                                  -			var deviceXDPI = isIE ? window.screen.deviceXDPI : 1;
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range, start, end;
                                  -						if (isIE || isRangeRects) {
                                  -							range = isRangeRects ? document.createRange() : document.body.createTextRange();
                                  -							var high = nodeLength;
                                  -							var low = -1;
                                  -							while ((high - low) > 1) {
                                  -								var mid = Math.floor((high + low) / 2);
                                  -								start = low + 1;
                                  -								end = mid === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : mid + 1;
                                  -								if (isRangeRects) {
                                  -									range.setStart(textNode, start);
                                  -									range.setEnd(textNode, end);
                                  -								} else {
                                  -									range.moveToElementText(lineChild);
                                  -									range.move("character", start);
                                  -									range.moveEnd("character", end - start);
                                  -								}
                                  -								rects = range.getClientRects();
                                  -								var found = false;
                                  -								for (var k = 0; k < rects.length; k++) {
                                  -									rect = rects[k];
                                  -									var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -									var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -									if (rangeLeft <= x && x < rangeRight) {
                                  -										found = true;
                                  -										break;
                                  -									}
                                  -								}
                                  -								if (found) {
                                  -									high = mid;
                                  -								} else {
                                  -									low = mid;
                                  -								}
                                  -							}
                                  -							offset += high;
                                  -							start = high;
                                  -							end = high === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : high + 1;
                                  -							if (isRangeRects) {
                                  -								range.setStart(textNode, start);
                                  -								range.setEnd(textNode, end);
                                  -							} else {
                                  -								range.moveToElementText(lineChild);
                                  -								range.move("character", start);
                                  -								range.moveEnd("character", end - start);
                                  -							}
                                  -							rect = range.getClientRects()[0];
                                  -							//TODO test for character trailing (wrong for bidi)
                                  -							if (x > ((rect.left * logicalXDPI / deviceXDPI - deltaX) + ((rect.right - rect.left) * logicalXDPI / deviceXDPI / 2))) {
                                  -								offset++;
                                  -							}
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var q = 0; q < nodeLength; q++) {
                                  -								newText.push("<span>");
                                  -								if (q === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(q));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(q, q + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_getOffsetBounds: function(offset) {
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var bounds = this._getBoundsAtOffset(offset);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var top = (lineIndex * lineHeight) - scroll.y + editorRect.top + editorPad.top;
                                  -			var bottom = top + lineHeight;
                                  -			return {left: left, top: top, right: right, bottom: bottom};
                                  -		},
                                  -		_hitOffset: function (offset, x, y) {
                                  -			var bounds = this._getOffsetBounds(offset);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var top = bounds.top;
                                  -			var bottom = bounds.bottom;
                                  -			var area = 20;
                                  -			left -= area;
                                  -			top -= area;
                                  -			right += area;
                                  -			bottom += area;
                                  -			return (left <= x && x <= right && top <= y && y <= bottom);
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var handlers = this._handlers = [];
                                  -			var resizeNode = isIE < 9 ? this._frame : this._frameWindow;
                                  -			var focusNode = isPad ? this._textArea : (isIE ? this._clientDiv: this._frameWindow);
                                  -			handlers.push({target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}});
                                  -			handlers.push({target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}});
                                  -			handlers.push({target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}});
                                  -			if (isPad) {
                                  -				var touchDiv = this._touchDiv;
                                  -				var textArea = this._textArea;
                                  -				handlers.push({target: textArea, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}});
                                  -				handlers.push({target: textArea, type: "input", handler: function(e) { return self._handleInput(e); }});
                                  -				handlers.push({target: textArea, type: "textInput", handler: function(e) { return self._handleTextInput(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchstart", handler: function(e) { return self._handleTouchStart(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchmove", handler: function(e) { return self._handleTouchMove(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchend", handler: function(e) { return self._handleTouchEnd(e); }});
                                  -			} else {
                                  -				var topNode = this._overlayDiv || this._clientDiv;
                                  -				handlers.push({target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}});
                                  -				handlers.push({target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}});
                                  -				handlers.push({target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}});
                                  -				handlers.push({target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}});
                                  -				handlers.push({target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}});
                                  -				handlers.push({target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}});
                                  -				handlers.push({target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}});
                                  -				handlers.push({target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}});
                                  -				handlers.push({target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}});
                                  -				handlers.push({target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}});
                                  -				handlers.push({target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}});
                                  -				handlers.push({target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}});
                                  -				handlers.push({target: topNode, type: "dragover", handler: function(e) { return self._handleDragOver(e);}});
                                  -				handlers.push({target: topNode, type: "drop", handler: function(e) { return self._handleDrop(e);}});
                                  -				if (isIE) {
                                  -					handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -				}
                                  -				if (isFirefox) {
                                  -					handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -				}
                                  -				if (!isIE && !isOpera) {
                                  -					var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -					handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -				}
                                  -				if (isFirefox && !isWindows) {
                                  -					handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -				}
                                  -				if (this._overlayDiv) {
                                  -					handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -				}
                                  -				if (!isW3CEvents) {
                                  -					handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -				}
                                  -			}
                                  -			for (var i=0; i<handlers.length; i++) {
                                  -				var h = handlers[i];
                                  -				addHandler(h.target, h.type, h.handler, h.capture);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			if (isIE < 9) {
                                  -				html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			}
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			if (isPad) {
                                  -				var touchDiv = parentDocument.createElement("DIV");
                                  -				this._touchDiv = touchDiv;
                                  -				touchDiv.style.position = "absolute";
                                  -				touchDiv.style.border = "0px";
                                  -				touchDiv.style.padding = "0px";
                                  -				touchDiv.style.margin = "0px";
                                  -				touchDiv.style.zIndex = "2";
                                  -				touchDiv.style.overflow = "hidden";
                                  -				touchDiv.style.background="transparent";
                                  -//				touchDiv.style.background="green";
                                  -//				touchDiv.style.opacity="0.5";
                                  -				touchDiv.style.WebkitUserSelect = "none";
                                  -				parent.appendChild(touchDiv);
                                  -
                                  -				var textArea = parentDocument.createElement("TEXTAREA");
                                  -				this._textArea = textArea;
                                  -				textArea.style.position = "absolute";
                                  -				textArea.style.whiteSpace = "pre";
                                  -				textArea.style.left = "-1000px";
                                  -				textArea.tabIndex = 1;
                                  -				textArea.autocapitalize = false;
                                  -				textArea.autocorrect = false;
                                  -				textArea.className = "editorContainer";
                                  -				textArea.style.background = "transparent";
                                  -				textArea.style.color = "transparent";
                                  -				textArea.style.border = "0px";
                                  -				textArea.style.padding = "0px";
                                  -				textArea.style.margin = "0px";
                                  -				textArea.style.borderRadius = "0px";
                                  -				textArea.style.WebkitAppearance = "none";
                                  -				textArea.style.WebkitTapHighlightColor = "transparent";
                                  -				touchDiv.appendChild(textArea);
                                  -			}
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -
                                  -			if (isPad) {
                                  -				var selDiv1 = document.createElement("DIV");
                                  -				this._selDiv1 = selDiv1;
                                  -				selDiv1.id = "selDiv1";
                                  -				selDiv1.style.position = "fixed";
                                  -				selDiv1.style.borderWidth = "0px";
                                  -				selDiv1.style.margin = "0px";
                                  -				selDiv1.style.padding = "0px";
                                  -				selDiv1.style.MozOutline = "none";
                                  -				selDiv1.style.outline = "none";
                                  -				selDiv1.style.background = "lightblue";
                                  -				selDiv1.style.width="0px";
                                  -				selDiv1.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv1);
                                  -				var selDiv2 = document.createElement("DIV");
                                  -				this._selDiv2 = selDiv2;
                                  -				selDiv2.id = "selDiv2";
                                  -				selDiv2.style.position = "fixed";
                                  -				selDiv2.style.borderWidth = "0px";
                                  -				selDiv2.style.margin = "0px";
                                  -				selDiv2.style.padding = "0px";
                                  -				selDiv2.style.MozOutline = "none";
                                  -				selDiv2.style.outline = "none";
                                  -				selDiv2.style.background = "lightblue";
                                  -				selDiv2.style.width="0px";
                                  -				selDiv2.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv2);
                                  -				var selDiv3 = document.createElement("DIV");
                                  -				this._selDiv3 = selDiv3;
                                  -				selDiv3.id = "selDiv3";
                                  -				selDiv3.style.position = "fixed";
                                  -				selDiv3.style.borderWidth = "0px";
                                  -				selDiv3.style.margin = "0px";
                                  -				selDiv3.style.padding = "0px";
                                  -				selDiv3.style.MozOutline = "none";
                                  -				selDiv3.style.outline = "none";
                                  -				selDiv3.style.background = "lightblue";
                                  -				selDiv3.style.width="0px";
                                  -				selDiv3.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv3);
                                  -			}
                                  -
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			if (isPad) {
                                  -				clientDiv.style.WebkitTapHighlightColor = "transparent";
                                  -			}
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			if (!isPad) {
                                  -				clientDiv.contentEditable = "true";
                                  -			}
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_resizeTouchDiv: function() {
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var parentRect = this._frame.getBoundingClientRect();
                                  -			var temp = this._frame;
                                  -			while (temp) {
                                  -				if (temp.style && temp.style.top) { break; }
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			var parentTop = parentRect.top;
                                  -			if (temp) {
                                  -				parentTop -= temp.getBoundingClientRect().top;
                                  -			} else {
                                  -				parentTop += this._parentDocument.body.scrollTop;
                                  -			}
                                  -			temp = this._frame;
                                  -			while (temp) {
                                  -				if (temp.style && temp.style.left) { break; }
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			var parentLeft = parentRect.left;
                                  -			if (temp) {
                                  -				parentLeft -= temp.getBoundingClientRect().left;
                                  -			} else {
                                  -				parentLeft += this._parentDocument.body.scrollLeft;
                                  -			}
                                  -			var touchDiv = this._touchDiv;
                                  -			touchDiv.style.left = (parentLeft + editorRect.left) + "px";
                                  -			touchDiv.style.top = (parentTop + editorRect.top) + "px";
                                  -			touchDiv.style.width = editorRect.width + "px";
                                  -			touchDiv.style.height = editorRect.height + "px";
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			/* Feature in Chrome, clipboardData.setData is no-op on Chrome even though it returns true */
                                  -			if (isChrome || isFirefox || !event) {
                                  -				var window = this._frameWindow;
                                  -				var document = this._frameDocument;
                                  -				var child = document.createElement("PRE");
                                  -				child.style.position = "fixed";
                                  -				child.style.left = "-1000px";
                                  -				var cr = 0, lf = 0, index = 0, length = text.length;
                                  -				while (index < length) {
                                  -					if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -					if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -					var start = index, end;
                                  -					if (lf === -1 && cr === -1) {
                                  -						child.appendChild(document.createTextNode(text.substring(index)));
                                  -						break;
                                  -					}
                                  -					if (cr !== -1 && lf !== -1) {
                                  -						if (cr + 1 === lf) {
                                  -							end = cr;
                                  -							index = lf + 1;
                                  -						} else {
                                  -							end = cr < lf ? cr : lf;
                                  -							index = (cr < lf ? cr : lf) + 1;
                                  -						}
                                  -					} else if (cr !== -1) {
                                  -						end = cr;
                                  -						index = cr + 1;
                                  -					} else {
                                  -						end = lf;
                                  -						index = lf + 1;
                                  -					}
                                  -					child.appendChild(document.createTextNode(text.substring(start, end)));
                                  -					child.appendChild(document.createElement("BR"));
                                  -				}
                                  -				child.appendChild(document.createTextNode(" "));
                                  -				this._clientDiv.appendChild(child);
                                  -				var range = document.createRange();
                                  -				range.setStart(child.firstChild, 0);
                                  -				range.setEndBefore(child.lastChild);
                                  -				var sel = window.getSelection();
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				var self = this;
                                  -				var cleanup = function() {
                                  -					self._clientDiv.removeChild(child);
                                  -					self._updateDOMSelection();
                                  -				};
                                  -				var result = false;
                                  -				/* 
                                  -				* Try execCommand first, it works on firefox with clipboard permission,
                                  -				* chrome 5, safari 4.
                                  -				*/
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						setTimeout(cleanup, 0);
                                  -						return false;
                                  -					}
                                  -				}
                                  -				/* no event and no permission, copy can not be done */
                                  -				cleanup();
                                  -				return true;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text); 
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, model = this._model;
                                  -			var startLineEnd = model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= startLineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineChild = endNode.firstChild;
                                  -			var endLineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= endLineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			
                                  -			if (isPad) {
                                  -				var startLineBounds, l;
                                  -				range = document.createRange();
                                  -				startLineBounds = this._getLineBoundingClientRect(startNode);
                                  -				if (startOffset === startLineEnd) {
                                  -					l = startLineBounds.right;
                                  -				} else {
                                  -					range.setStart(startLineNode, startLineOffset);
                                  -					range.setEnd(startLineNode, startLineOffset + 1);
                                  -					l = range.getBoundingClientRect().left;
                                  -				}
                                  -				var textArea = this._textArea;
                                  -				textArea.selectionStart = textArea.selectionEnd = 0;
                                  -				var rect = this._frame.getBoundingClientRect();
                                  -				var touchRect = this._touchDiv.getBoundingClientRect();
                                  -				var editorBounds = this._editorDiv.getBoundingClientRect();
                                  -				if (!(editorBounds.left <= l && l <= editorBounds.left + editorBounds.width &&
                                  -					editorBounds.top <= startLineBounds.top && startLineBounds.top <= editorBounds.top + editorBounds.height) ||
                                  -					!(startNode === endNode && startOffset === endOffset))
                                  -				{
                                  -					textArea.style.left = "-1000px";
                                  -				} else {
                                  -					textArea.style.left = (l - 4 + rect.left - touchRect.left) + "px";
                                  -				}
                                  -				textArea.style.top = (startLineBounds.top + rect.top - touchRect.top) + "px";
                                  -				textArea.style.width = "6px";
                                  -				textArea.style.height = (startLineBounds.bottom - startLineBounds.top) + "px";
                                  -			
                                  -				var selDiv = this._selDiv1;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				selDiv = this._selDiv2;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				selDiv = this._selDiv3;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				if (!(startNode === endNode && startOffset === endOffset)) {
                                  -					var handleWidth = 2;
                                  -					var handleBorder = handleWidth + "px blue solid";
                                  -					var clientBounds = this._clientDiv.getBoundingClientRect();
                                  -					var left = clientBounds.left;
                                  -					var right = clientBounds.right;
                                  -					selDiv = this._selDiv1;
                                  -					selDiv.style.left = l + "px";
                                  -					selDiv.style.top = startLineBounds.top + "px";
                                  -					selDiv.style.width = (right - l) + "px";
                                  -					selDiv.style.height = (startLineBounds.bottom - startLineBounds.top + 1) + "px";
                                  -					selDiv.style.borderLeft = handleBorder;
                                  -					selDiv.style.borderRight = "0px";
                                  -					var r;
                                  -					var endLineBounds = this._getLineBoundingClientRect(endNode);
                                  -					if (endOffset === 0) {
                                  -						r = endLineBounds.left;
                                  -					} else {
                                  -						if (endLineOffset === 0) {
                                  -							endLineNode = endLineNode.parentNode.previousSibling.firstChild;
                                  -							endLineOffset = endLineNode.length;
                                  -						}
                                  -						range.setStart(endLineNode, endLineOffset - 1);
                                  -						range.setEnd(endLineNode, endLineOffset);
                                  -						r = range.getBoundingClientRect().right;
                                  -					}
                                  -					if (startNode === endNode) {
                                  -						selDiv.style.width = (r - l - handleWidth * 2) + "px";
                                  -						selDiv.style.borderRight = handleBorder;
                                  -					} else {
                                  -						selDiv = this._selDiv3;
                                  -						selDiv.style.left = left + "px";
                                  -						selDiv.style.top = endLineBounds.top + "px";
                                  -						selDiv.style.width = (r - left - handleWidth) + "px";
                                  -						selDiv.style.height = (endLineBounds.bottom - endLineBounds.top) + "px";
                                  -						selDiv.style.borderRight = handleBorder;
                                  -						if (endNode.lineIndex - startNode.lineIndex > 1) {
                                  -							selDiv = this._selDiv2;
                                  -							selDiv.style.left = startLineBounds.left + "px";
                                  -							selDiv.style.top = startLineBounds.bottom + "px";
                                  -							selDiv.style.width = (right - left) + "px";
                                  -							selDiv.style.height = (endLineBounds.top - startLineBounds.bottom + 1) + "px";
                                  -						}
                                  -					}
                                  -				}
                                  -				return;
                                  -			}
                                  -			if (window.getSelection) {
                                  -				//W3C
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE < 9
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			document.body.style.width = frameWidth + "px";
                                  -			document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -			
                                  -			var lineIndex, lineWidth;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				var nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			var frag = document.createDocumentFragment();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					this._createLine(frag, null, document, lineIndex, model);
                                  -				} else {
                                  -					if (frag.firstChild) {
                                  -						clientDiv.insertBefore(frag, child);
                                  -						frag = document.createDocumentFragment();
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -			if (frag.firstChild) { clientDiv.insertBefore(frag, child); }
                                  -
                                  -			child = this._getLineNext();
                                  -			while (child) {
                                  -				lineWidth = child.lineWidth;
                                  -				if (lineWidth === undefined) {
                                  -					var rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = child.lineWidth = rect.right - rect.left;
                                  -				}
                                  -				if (lineWidth >= this._maxLineWidth) {
                                  -					this._maxLineWidth = lineWidth;
                                  -					this._maxLineIndex = child.lineIndex;
                                  -				}
                                  -				if (child.lineIndex === topIndex) { this._topChild = child; }
                                  -				if (child.lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -			
                                  -			var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -			
                                  -			var scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			var scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			var clientWidth = this._getClientWidth();
                                  -			var width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/*
                                  -			* Except by IE 8 and earlier, all other browsers are not allocating enough space for the right padding 
                                  -			* in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			*/
                                  -			var scrollWidth = width;
                                  -			if (!isIE || isIE >= 9) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			if (!isPad) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			var scroll = this._getScroll();
                                  -			var left = scroll.x;
                                  -			var clipLeft = left;
                                  -			var clipTop = top;
                                  -			var clipRight = left + clientWidth;
                                  -			var clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			var overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -			if (isPad) {
                                  -				this._updateDOMSelection();
                                  -				var self = this;
                                  -				setTimeout(function() {self._resizeTouchDiv();}, 0);
                                  -			}
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv, frag;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					frag = document.createDocumentFragment();
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							frag.appendChild(lineDiv);
                                  -						} else {
                                  -							if (frag.firstChild) {
                                  -								div.insertBefore(frag, child);
                                  -								frag = document.createDocumentFragment();
                                  -							}
                                  -							if (child) {
                                  -								child = child.nextSibling;
                                  -							}
                                  -						}
                                  -					}
                                  -					if (frag.firstChild) { div.insertBefore(frag, child); }
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						frag = document.createDocumentFragment();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							frag.appendChild(lineDiv);
                                  -						}
                                  -						div.appendChild(frag);
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor_old.js b/branches/flexBox/sandbox/sandbox/orion/js/editor_old.js
                                  deleted file mode 100644
                                  index a9f630ea..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor_old.js
                                  +++ /dev/null
                                  @@ -1,4235 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._textArea = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isOpera) { this._clientDiv.blur(); }
                                  -			this._clientDiv.focus();
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			if (isIE) {
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				// Feature in IE, IE does redraw the selection background right
                                  -				// away after the selection changes because of mouse move events.
                                  -				// The fix is to call getBoundingClientRect() on the
                                  -				// body element to force the selection to be redraw. Some how
                                  -				// calling this method forces a redraw.
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset);
                                  -		},
                                  -		_getBoundsAtOffset_FF: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBoundsAtOffset_IE: function (offset) {
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = {left: 0, right: 0};
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			} else {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var range = document.body.createTextRange();
                                  -						range.moveToElementText(lineChild);
                                  -						range.collapse();
                                  -						range.moveEnd("character", offset - lineOffset + 1);
                                  -						range.moveStart("character", offset - lineOffset);
                                  -						result = range.getBoundingClientRect();
                                  -						var logicalXDPI = window.screen.logicalXDPI;
                                  -						var deviceXDPI = window.screen.deviceXDPI;
                                  -						result.left = result.left * logicalXDPI / deviceXDPI;
                                  -						result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var textArea = this._textArea;
                                  -				textArea.innerHTML = "";
                                  -				textArea.focus();
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					var text;
                                  -					if (textArea.firstChild) {
                                  -						text = "";
                                  -						var child = textArea.firstChild;
                                  -						while (child) {
                                  -							if (child.nodeType === child.TEXT_NODE) {
                                  -								text += child.data;
                                  -							} else if (child.tagName === "BR") {
                                  -								text += delimiter; 
                                  -							} 
                                  -							child = child.nextSibling;
                                  -						}
                                  -					} else {
                                  -						text = textArea.value;
                                  -					}
                                  -					return text;
                                  -				};
                                  -				
                                  -				//Try execCommand first. Works on firefox with clipboard permission,
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					var document = this._frameDocument;
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {
                                  -				}
                                  -				this._ignorePaste = false;
                                  -				
                                  -				if (!result) {
                                  -					//Try native paste in the text area, works for firefox (asynchronously) 
                                  -					//only works during the paste event
                                  -					if (event) {
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						//no event and no clipboard permission, paste can't be performed
                                  -						//suggest allow clipboard helper to the user
                                  -						this.focus();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				// Webkit (Chrome/Safari) allows getData during the paste event
                                  -				// Note: setData is not allowed, not even during copy/cut event
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === 1) {
                                  -				var textNode = lastChild.firstChild;
                                  -				if (textNode.data === " ") {
                                  -					lastChild = lastChild.previousSibling;
                                  -				}
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ?  this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction);
                                  -		},
                                  -		_getOffset_FF: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x);
                                  -		},
                                  -		_getXToOffset_FF: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				var rects = lineChild.getClientRects();
                                  -				for (var i = 0; i < rects.length; i++) {
                                  -					var rect = rects[i];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							var index = 0;
                                  -							while (index < nodeLength) {
                                  -								range.setStart(textNode, index);
                                  -								range.setEnd(textNode, index + 1);
                                  -								rect = range.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										index++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								index++;						
                                  -							}
                                  -							offset += index;
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var j = 0; j < nodeLength; j++) {
                                  -								newText.push("<span>");
                                  -								if (j === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(j));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(j, j + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getXToOffset_IE: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window
                                  -			* before using it. 
                                  -			*/
                                  -			var rects = child.getClientRects();
                                  -			var minLeft = rects[0].left;
                                  -			for (var i=1; i<rects.length; i++) {
                                  -				minLeft = Math.min(rects[i].left, minLeft);
                                  -			}
                                  -			var deltaX = minLeft - lineRect.left;
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var logicalXDPI = window.screen.logicalXDPI;
                                  -			var deviceXDPI = window.screen.deviceXDPI;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range = document.body.createTextRange();
                                  -						var high = textNode.length;
                                  -						var low = -1;
                                  -						while ((high - low) > 1) {
                                  -							var mid = Math.floor((high + low) / 2);
                                  -							range.moveToElementText(lineChild);
                                  -							range.move("character", low + 1);
                                  -							range.moveEnd("character", mid - low);
                                  -							rects = range.getClientRects();
                                  -							var found = false;
                                  -							for (var k = 0; k < rects.length; k++) {
                                  -								rect = rects[k];
                                  -								var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -								var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -								if (rangeLeft <= x && x < rangeRight) {
                                  -									found = true;
                                  -									break;
                                  -								}
                                  -							}
                                  -							if (found) {
                                  -								high = mid;
                                  -							} else {
                                  -								low = mid;
                                  -							}
                                  -						}
                                  -						if (lineChild.ignoreChars && high >= nodeLength) {
                                  -							high = nodeLength - 1;
                                  -						}
                                  -						offset += high;
                                  -						range.moveToElementText(lineChild);
                                  -						range.move("character", high);
                                  -						if (high === nodeLength - 1 && lineChild.ignoreChars) {
                                  -							range.moveEnd("character", 1 + lineChild.ignoreChars);
                                  -						} else {
                                  -							range.moveEnd("character", 1);
                                  -						}
                                  -						rect = range.getClientRects()[0];
                                  -						//TODO test for character trailing (wrong for bidi)
                                  -						if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) {
                                  -							offset++;
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var topNode = this._overlayDiv || this._clientDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var resizeNode = isIE ? this._frame : this._frameWindow;
                                  -			var focusNode = isIE ? this._clientDiv: this._frameWindow;
                                  -			this._handlers = [
                                  -				{target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}},
                                  -				{target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}},
                                  -				{target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}},
                                  -				{target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}},
                                  -				{target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}},
                                  -				{target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}},
                                  -				{target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}},
                                  -				{target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}},
                                  -				{target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}},
                                  -				{target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}},
                                  -				{target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}},
                                  -				{target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}},
                                  -				{target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}},
                                  -				{target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}},
                                  -				{target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}
                                  -			];
                                  -			if (isIE) {
                                  -				this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (isFirefox) {
                                  -				this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (!isIE && !isOpera) {
                                  -				var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -				this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -			}
                                  -			if (isFirefox && !isWindows) {
                                  -				this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -			}
                                  -			if (this._overlayDiv) {
                                  -				this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -			}
                                  -			if (!isW3CEvents) {
                                  -				this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -			}
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				addHandler(h.target, h.type, h.handler);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			var textArea = document.createElement("TEXTAREA");
                                  -			this._textArea = textArea;
                                  -			textArea.id = "textArea";
                                  -			textArea.tabIndex = -1;
                                  -			textArea.style.position = "fixed";
                                  -			textArea.style.whiteSpace = "pre";
                                  -			textArea.style.top = "-1000px";
                                  -			textArea.style.width = "100px";
                                  -			textArea.style.height = "100px";
                                  -			body.appendChild(textArea);
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -				
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			clientDiv.contentEditable = "true";
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			this._handleScroll();
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			if (isChrome || isFirefox || !event) {
                                  -				/* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */
                                  -				var document = this._frameDocument;
                                  -				var textArea = this._textArea;
                                  -				textArea.value = text;
                                  -				textArea.select();
                                  -				var result = false;
                                  -				
                                  -				//Try execCommand first, it works on firefox with clipboard permission,
                                  -				// chrome 5, safari 4.
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						if (event.type === "copy" && this._isDOMSelectionComplete()) {
                                  -							this.focus();
                                  -							return false;
                                  -						}
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -						}, 0);
                                  -						return false;
                                  -					} else {
                                  -						//no event and no permission, give up
                                  -						this.focus();
                                  -						return true;
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return result;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text);
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, lineEnd;
                                  -			lineEnd = this._model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			lineChild = endNode.firstChild;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			if (window.getSelection) {
                                  -				//FF
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			//document.body.style.width = frameWidth + "px";
                                  -			//document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -			
                                  -(function _updatePage_removeLines() {
                                  -			var lineIndex, lineWidth;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				var nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -})();
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			this._maxLineWidth = 1000;
                                  -			this._maxLineIndex = 1;
                                  -
                                  -(function _updatePage_createLines() {
                                  -			child = this._getLineNext();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					child = this._createLine(clientDiv, child, document, lineIndex, model);
                                  -					/*
                                  -					var rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = rect.right - rect.left;
                                  -					child.lineWidth = lineWidth; 
                                  -					// when the maxLineIndex is known measure only the lines that have changed
                                  -					if (this._maxLineIndex !== -1) {
                                  -						if (lineWidth >= this._maxLineWidth) {
                                  -							this._maxLineWidth = lineWidth;
                                  -							this._maxLineIndex = lineIndex;
                                  -						}
                                  -					}
                                  -					/**/
                                  -				}
                                  -				if (lineIndex === topIndex) { this._topChild = child; }
                                  -				if (lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				if (child.lineIndex === lineIndex) {
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -}).call(this);
                                  -
                                  -			// when the maxLineIndex is not known all the visible lines need to be measured
                                  -			/*
                                  -			if (this._maxLineIndex === -1) {
                                  -				child = this._getLineNext();
                                  -				while (child) {
                                  -					lineWidth = child.lineWidth;
                                  -					if (lineWidth >= this._maxLineWidth) {
                                  -						this._maxLineWidth = lineWidth;
                                  -						this._maxLineIndex = child.lineIndex;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -			*/
                                  -			
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -			
                                  -			var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -
                                  -			var scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			var scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			var clientWidth = this._getClientWidth();
                                  -			var width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/* Except by IE, all other browsers are not allocating enough space for the right padding
                                  -			 * in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			 */
                                  -			var scrollWidth = width;
                                  -			if (!isIE) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -                console.log("oops");
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -
                                  -(function _updatePage_updateViewport() {
                                  -
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			var scroll = this._getScroll();
                                  -			var left = scroll.x;
                                  -			var clipLeft = left;
                                  -			var clipTop = top;
                                  -			var clipRight = left + clientWidth;
                                  -			var clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			var overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -}).call(this);
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							div.insertBefore(lineDiv, child);
                                  -						}
                                  -						if (child && child.lineIndex === lineIndex) {
                                  -							child = child.nextSibling;
                                  -						}
                                  -					}
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							div.appendChild(lineDiv);
                                  -						}
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/editor_original.js b/branches/flexBox/sandbox/sandbox/orion/js/editor_original.js
                                  deleted file mode 100644
                                  index dec414e7..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/editor_original.js
                                  +++ /dev/null
                                  @@ -1,4218 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || 0;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = !isIE && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._textArea = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isOpera) { this._clientDiv.blur(); }
                                  -			this._clientDiv.focus();
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			if (isIE) {
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				// Feature in IE, IE does redraw the selection background right
                                  -				// away after the selection changes because of mouse move events.
                                  -				// The fix is to call getBoundingClientRect() on the
                                  -				// body element to force the selection to be redraw. Some how
                                  -				// calling this method forces a redraw.
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			return isIE ? this._getBoundsAtOffset_IE(offset) : this._getBoundsAtOffset_FF(offset);
                                  -		},
                                  -		_getBoundsAtOffset_FF: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBoundsAtOffset_IE: function (offset) {
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = {left: 0, right: 0};
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			} else {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var range = document.body.createTextRange();
                                  -						range.moveToElementText(lineChild);
                                  -						range.collapse();
                                  -						range.moveEnd("character", offset - lineOffset + 1);
                                  -						range.moveStart("character", offset - lineOffset);
                                  -						result = range.getBoundingClientRect();
                                  -						var logicalXDPI = window.screen.logicalXDPI;
                                  -						var deviceXDPI = window.screen.deviceXDPI;
                                  -						result.left = result.left * logicalXDPI / deviceXDPI;
                                  -						result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var textArea = this._textArea;
                                  -				textArea.innerHTML = "";
                                  -				textArea.focus();
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					var text;
                                  -					if (textArea.firstChild) {
                                  -						text = "";
                                  -						var child = textArea.firstChild;
                                  -						while (child) {
                                  -							if (child.nodeType === child.TEXT_NODE) {
                                  -								text += child.data;
                                  -							} else if (child.tagName === "BR") {
                                  -								text += delimiter; 
                                  -							} 
                                  -							child = child.nextSibling;
                                  -						}
                                  -					} else {
                                  -						text = textArea.value;
                                  -					}
                                  -					return text;
                                  -				};
                                  -				
                                  -				//Try execCommand first. Works on firefox with clipboard permission,
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					var document = this._frameDocument;
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {
                                  -				}
                                  -				this._ignorePaste = false;
                                  -				
                                  -				if (!result) {
                                  -					//Try native paste in the text area, works for firefox (asynchronously) 
                                  -					//only works during the paste event
                                  -					if (event) {
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						//no event and no clipboard permission, paste can't be performed
                                  -						//suggest allow clipboard helper to the user
                                  -						this.focus();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				// Webkit (Chrome/Safari) allows getData during the paste event
                                  -				// Note: setData is not allowed, not even during copy/cut event
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === 1) {
                                  -				var textNode = lastChild.firstChild;
                                  -				if (textNode.data === " ") {
                                  -					lastChild = lastChild.previousSibling;
                                  -				}
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ?  this._getOffset_IE(offset, word, direction) : this._getOffset_FF(offset, word, direction);
                                  -		},
                                  -		_getOffset_FF: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			return isIE ? this._getXToOffset_IE(lineIndex, x) : this._getXToOffset_FF(lineIndex, x);
                                  -		},
                                  -		_getXToOffset_FF: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				var rects = lineChild.getClientRects();
                                  -				for (var i = 0; i < rects.length; i++) {
                                  -					var rect = rects[i];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						if (isRangeRects) {
                                  -							var range = document.createRange();
                                  -							var index = 0;
                                  -							while (index < nodeLength) {
                                  -								range.setStart(textNode, index);
                                  -								range.setEnd(textNode, index + 1);
                                  -								rect = range.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										index++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								index++;						
                                  -							}
                                  -							offset += index;
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var j = 0; j < nodeLength; j++) {
                                  -								newText.push("<span>");
                                  -								if (j === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(j));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(j, j + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getXToOffset_IE: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window
                                  -			* before using it. 
                                  -			*/
                                  -			var rects = child.getClientRects();
                                  -			var minLeft = rects[0].left;
                                  -			for (var i=1; i<rects.length; i++) {
                                  -				minLeft = Math.min(rects[i].left, minLeft);
                                  -			}
                                  -			var deltaX = minLeft - lineRect.left;
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var logicalXDPI = window.screen.logicalXDPI;
                                  -			var deviceXDPI = window.screen.deviceXDPI;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range = document.body.createTextRange();
                                  -						var high = textNode.length;
                                  -						var low = -1;
                                  -						while ((high - low) > 1) {
                                  -							var mid = Math.floor((high + low) / 2);
                                  -							range.moveToElementText(lineChild);
                                  -							range.move("character", low + 1);
                                  -							range.moveEnd("character", mid - low);
                                  -							rects = range.getClientRects();
                                  -							var found = false;
                                  -							for (var k = 0; k < rects.length; k++) {
                                  -								rect = rects[k];
                                  -								var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -								var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -								if (rangeLeft <= x && x < rangeRight) {
                                  -									found = true;
                                  -									break;
                                  -								}
                                  -							}
                                  -							if (found) {
                                  -								high = mid;
                                  -							} else {
                                  -								low = mid;
                                  -							}
                                  -						}
                                  -						if (lineChild.ignoreChars && high >= nodeLength) {
                                  -							high = nodeLength - 1;
                                  -						}
                                  -						offset += high;
                                  -						range.moveToElementText(lineChild);
                                  -						range.move("character", high);
                                  -						if (high === nodeLength - 1 && lineChild.ignoreChars) {
                                  -							range.moveEnd("character", 1 + lineChild.ignoreChars);
                                  -						} else {
                                  -							range.moveEnd("character", 1);
                                  -						}
                                  -						rect = range.getClientRects()[0];
                                  -						//TODO test for character trailing (wrong for bidi)
                                  -						if (x > ((rect.left - deltaX) + ((rect.right - rect.left) / 2))) {
                                  -							offset++;
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var topNode = this._overlayDiv || this._clientDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var resizeNode = isIE ? this._frame : this._frameWindow;
                                  -			var focusNode = isIE ? this._clientDiv: this._frameWindow;
                                  -			this._handlers = [
                                  -				{target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}},
                                  -				{target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}},
                                  -				{target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}},
                                  -				{target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}},
                                  -				{target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}},
                                  -				{target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}},
                                  -				{target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}},
                                  -				{target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}},
                                  -				{target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}},
                                  -				{target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}},
                                  -				{target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}},
                                  -				{target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}},
                                  -				{target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}},
                                  -				{target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}},
                                  -				{target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}}
                                  -			];
                                  -			if (isIE) {
                                  -				this._handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (isFirefox) {
                                  -				this._handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -			}
                                  -			if (!isIE && !isOpera) {
                                  -				var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -				this._handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -			}
                                  -			if (isFirefox && !isWindows) {
                                  -				this._handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -			}
                                  -			if (this._overlayDiv) {
                                  -				this._handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -			}
                                  -			if (!isW3CEvents) {
                                  -				this._handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -			}
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				addHandler(h.target, h.type, h.handler);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			var textArea = document.createElement("TEXTAREA");
                                  -			this._textArea = textArea;
                                  -			textArea.id = "textArea";
                                  -			textArea.tabIndex = -1;
                                  -			textArea.style.position = "fixed";
                                  -			textArea.style.whiteSpace = "pre";
                                  -			textArea.style.top = "-1000px";
                                  -			textArea.style.width = "100px";
                                  -			textArea.style.height = "100px";
                                  -			body.appendChild(textArea);
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -				
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			clientDiv.contentEditable = "true";
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			this._handleScroll();
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			if (isChrome || isFirefox || !event) {
                                  -				/* Feature in Chrome, clipboardData.setData is no-op on chrome, the fix is to use execCommand */
                                  -				var document = this._frameDocument;
                                  -				var textArea = this._textArea;
                                  -				textArea.value = text;
                                  -				textArea.select();
                                  -				var result = false;
                                  -				
                                  -				//Try execCommand first, it works on firefox with clipboard permission,
                                  -				// chrome 5, safari 4.
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						if (event.type === "copy" && this._isDOMSelectionComplete()) {
                                  -							this.focus();
                                  -							return false;
                                  -						}
                                  -						var self = this;
                                  -						setTimeout(function() {
                                  -							self.focus();
                                  -						}, 0);
                                  -						return false;
                                  -					} else {
                                  -						//no event and no permission, give up
                                  -						this.focus();
                                  -						return true;
                                  -					}
                                  -				}
                                  -				this.focus();
                                  -				return result;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text);
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, lineEnd;
                                  -			lineEnd = this._model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= lineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			lineChild = endNode.firstChild;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= lineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			if (window.getSelection) {
                                  -				//FF
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			document.body.style.width = frameWidth + "px";
                                  -			document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -			
                                  -			var lineIndex, lineWidth;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				var nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					child = this._createLine(clientDiv, child, document, lineIndex, model);
                                  -					var rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = rect.right - rect.left;
                                  -					child.lineWidth = lineWidth; 
                                  -					// when the maxLineIndex is known measure only the lines that have changed
                                  -					if (this._maxLineIndex !== -1) {
                                  -						if (lineWidth >= this._maxLineWidth) {
                                  -							this._maxLineWidth = lineWidth;
                                  -							this._maxLineIndex = lineIndex;
                                  -						}
                                  -					}
                                  -				}
                                  -				if (lineIndex === topIndex) { this._topChild = child; }
                                  -				if (lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				if (child.lineIndex === lineIndex) {
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -
                                  -			// when the maxLineIndex is not known all the visible lines need to be measured
                                  -			if (this._maxLineIndex === -1) {
                                  -				child = this._getLineNext();
                                  -				while (child) {
                                  -					lineWidth = child.lineWidth;
                                  -					if (lineWidth >= this._maxLineWidth) {
                                  -						this._maxLineWidth = lineWidth;
                                  -						this._maxLineIndex = child.lineIndex;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -			
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -			
                                  -			var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -			
                                  -			var scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			var scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			var clientWidth = this._getClientWidth();
                                  -			var width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/* Except by IE, all other browsers are not allocating enough space for the right padding 
                                  -			 * in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			 */
                                  -			var scrollWidth = width;
                                  -			if (!isIE) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			var scroll = this._getScroll();
                                  -			var left = scroll.x;
                                  -			var clipLeft = left;
                                  -			var clipTop = top;
                                  -			var clipRight = left + clientWidth;
                                  -			var clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			var overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							div.insertBefore(lineDiv, child);
                                  -						}
                                  -						if (child && child.lineIndex === lineIndex) {
                                  -							child = child.nextSibling;
                                  -						}
                                  -					}
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							div.appendChild(lineDiv);
                                  -						}
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/model.js b/branches/flexBox/sandbox/sandbox/orion/js/model.js
                                  deleted file mode 100644
                                  index 62ed5997..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/model.js
                                  +++ /dev/null
                                  @@ -1,450 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  - 
                                  -/*global navigator */
                                  -
                                  -/**
                                  - * @namespace The global container for eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new TextModel with the given text and default line delimiter.
                                  - *
                                  - * @param {String} [text=""] the text that the model will store
                                  - * @param {String} [lineDelimiter=platform delimiter] the line delimiter used when inserting new lines to the model.
                                  - *
                                  - * @name eclipse.TextModel
                                  - * @class The TextModel is an interface that provides text for the editor. Applications may
                                  - * implement the TextModel interface to provide a custom store for the editor content. The
                                  - * editor interacts with its text model in order to access and update the text that is being
                                  - * displayed and edited in the editor. This is the default implementation.
                                  - * <p>
                                  - * <b>See:</b><br>
                                  - * {@link eclipse.Editor}<br>
                                  - * {@link eclipse.Editor#setModel}
                                  - * </p>
                                  - */
                                  -eclipse.TextModel = (function() {
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -
                                  -	/** @private */
                                  -	function TextModel(text, lineDelimiter) {
                                  -		this._listeners = [];
                                  -		this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); 
                                  -		this._lastLineIndex = -1;
                                  -		this._text = [""];
                                  -		this._lineOffsets = [0];
                                  -		this.setText(text);
                                  -	}
                                  -
                                  -	TextModel.prototype = /** @lends eclipse.TextModel.prototype */ {
                                  -		/**
                                  -		 * Adds a listener to the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to add.
                                  -		 * @param {Function} [listener.onChanged] see {@link #onChanged}.
                                  -		 * @param {Function} [listener.onChanging] see {@link #onChanging}.
                                  -		 * 
                                  -		 * @see removeListener
                                  -		 */
                                  -		addListener: function(listener) {
                                  -			this._listeners.push(listener);
                                  -		},
                                  -		/**
                                  -		 * Removes a listener from the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to remove
                                  -		 * 
                                  -		 * @see #addListener
                                  -		 */
                                  -		removeListener: function(listener) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				if (this._listeners[i] === listener) {
                                  -					this._listeners.splice(i, 1);
                                  -					return;
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the number of characters in the model.
                                  -		 *
                                  -		 * @returns {Number} the number of characters in the model.
                                  -		 */
                                  -		getCharCount: function() {
                                  -			var count = 0;
                                  -			for (var i = 0; i<this._text.length; i++) {
                                  -				count += this._text[i].length;
                                  -			}
                                  -			return count;
                                  -		},
                                  -		/**
                                  -		 * Returns the text of the line at the given index.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>null</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @returns {String} the line text or <code>null</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineAtOffset
                                  -		 */
                                  -		getLine: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return null;
                                  -			}
                                  -			var start = this._lineOffsets[lineIndex];
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var text = this.getText(start, this._lineOffsets[lineIndex + 1]);
                                  -				if (includeDelimiter) {
                                  -					return text;
                                  -				}
                                  -				var end = text.length, c;
                                  -				while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) {
                                  -					end--;
                                  -				}
                                  -				return text.substring(0, end);
                                  -			} else {
                                  -				return this.getText(start); 
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the line index at the given character offset.
                                  -		 * <p>
                                  -		 * The valid offsets are 0 to char count inclusive. The line index for
                                  -		 * char count is <code>line count - 1</code>. Returns <code>-1</code> if
                                  -		 * the offset is out of range.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset a character offset.
                                  -		 * @returns {Number} the zero based line index or <code>-1</code> if out of range.
                                  -		 */
                                  -		getLineAtOffset: function(offset) {
                                  -			if (!(0 <= offset && offset <= this.getCharCount())) {
                                  -				return -1;
                                  -			}
                                  -			var lineCount = this.getLineCount();
                                  -			var charCount = this.getCharCount();
                                  -			if (offset === charCount) {
                                  -				return lineCount - 1; 
                                  -			}
                                  -			var lineStart, lineEnd;
                                  -			var index = this._lastLineIndex;
                                  -			if (0 <= index && index < lineCount) {
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (lineStart <= offset && offset < lineEnd) {
                                  -					return index;
                                  -				}
                                  -			}
                                  -			var high = lineCount;
                                  -			var low = -1;
                                  -			while (high - low > 1) {
                                  -				index = Math.floor((high + low) / 2);
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (offset <= lineStart) {
                                  -					high = index;
                                  -				} else if (offset < lineEnd) {
                                  -					high = index;
                                  -					break;
                                  -				} else {
                                  -					low = index;
                                  -				}
                                  -			}
                                  -			this._lastLineIndex = high;
                                  -			return high;
                                  -		},
                                  -		/**
                                  -		 * Returns the number of lines in the model.
                                  -		 * <p>
                                  -		 * The model always has at least one line.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the number of lines.
                                  -		 */
                                  -		getLineCount: function() {
                                  -			return this._lineOffsets.length;
                                  -		},
                                  -		/**
                                  -		 * Returns the line delimiter that is used by the editor
                                  -		 * when inserting new lines. New lines entered using key strokes 
                                  -		 * and paste operations use this line delimiter.
                                  -		 *
                                  -		 * @return {String} the line delimiter that is used by the editor when inserting new lines.
                                  -		 */
                                  -		getLineDelimiter: function() {
                                  -			return this._lineDelimiter;
                                  -		},
                                  -		/**
                                  -		 * Returns the end character offset for the given line. 
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that when the line delimiter is included, the 
                                  -		 * offset is either the start offset of the next line or char count. When the line delimiter is
                                  -		 * not included, the offset is the offset of the line delimiter.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @return {Number} the line end offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineStart
                                  -		 */
                                  -		getLineEnd: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return -1;
                                  -			}
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var end = this._lineOffsets[lineIndex + 1];
                                  -				if (includeDelimiter) {
                                  -					return end;
                                  -				}
                                  -				var text = this.getText(Math.max(0, end - 2), end);
                                  -				var i = text.length, c;
                                  -				while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) {
                                  -					i--;
                                  -				}
                                  -				return end - (text.length - i);
                                  -			} else {
                                  -				return this.getCharCount();
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the start character offset for the given line.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @return {Number} the line start offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineEnd
                                  -		 */
                                  -		getLineStart: function(lineIndex) {
                                  -			if (!(0 <= lineIndex && lineIndex < this.getLineCount())) {
                                  -				return -1;
                                  -			}
                                  -			return this._lineOffsets[lineIndex];
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that character at the end offset
                                  -		 * is not included in the returned text.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			if (firstChunk === lastChunk) {
                                  -				return this._text[firstChunk].substring(start - firstOffset, end - lastOffset);
                                  -			}
                                  -			var beforeText = this._text[firstChunk].substring(start - firstOffset);
                                  -			var afterText = this._text[lastChunk].substring(0, end - lastOffset);
                                  -			return beforeText + this._text.slice(firstChunk+1, lastChunk).join("") + afterText; 
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text is about to change.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanging}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the text that is about to be inserted in the model.
                                  -		 * @param {Number} start the character offset in the model where the change will occur.
                                  -		 * @param {Number} removedCharCount the number of characters being removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters being added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines being removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines being added to the model.
                                  -		 */
                                  -		onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanging) { 
                                  -					l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text has changed.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanged}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} start the character offset in the model where the change occurred.
                                  -		 * @param {Number} removedCharCount the number of characters removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines added to the model.
                                  -		 */
                                  -		onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanged) { 
                                  -					l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that the character at the 
                                  -		 * end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The text model must notify the listeners before and after the
                                  -		 * the text is changed by calling {@link #onChanging} and {@link #onChanged}
                                  -		 * respectively. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} [text=""] the new text.
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function(text, start, end) {
                                  -			if (text === undefined) { text = ""; }
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var startLine = this.getLineAtOffset(start);
                                  -			var endLine = this.getLineAtOffset(end);
                                  -			var eventStart = start;
                                  -			var removedCharCount = end - start;
                                  -			var removedLineCount = endLine - startLine;
                                  -			var addedCharCount = text.length;
                                  -			var addedLineCount = 0;
                                  -			var lineCount = this.getLineCount();
                                  -			
                                  -			var cr = 0, lf = 0, index = 0;
                                  -			var newLineOffsets = [];
                                  -			while (true) {
                                  -				if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -				if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -				if (lf === -1 && cr === -1) { break; }
                                  -				if (cr !== -1 && lf !== -1) {
                                  -					if (cr + 1 === lf) {
                                  -						index = lf + 1;
                                  -					} else {
                                  -						index = (cr < lf ? cr : lf) + 1;
                                  -					}
                                  -				} else if (cr !== -1) {
                                  -					index = cr + 1;
                                  -				} else {
                                  -					index = lf + 1;
                                  -				}
                                  -				newLineOffsets.push(start + index);
                                  -				addedLineCount++;
                                  -			}
                                  -		
                                  -			this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -			
                                  -			//TODO this should be done the loops below to avoid getText()
                                  -			if (newLineOffsets.length === 0) {
                                  -				var startLineOffset = this.getLineStart(startLine), endLineOffset;
                                  -				if (endLine + 1 < lineCount) {
                                  -					endLineOffset = this.getLineStart(endLine + 1);
                                  -				} else {
                                  -					endLineOffset = this.getCharCount();
                                  -				}
                                  -				if (start !== startLineOffset) {
                                  -					text = this.getText(startLineOffset, start) + text;
                                  -					start = startLineOffset;
                                  -				}
                                  -				if (end !== endLineOffset) {
                                  -					text = text + this.getText(end, endLineOffset);
                                  -					end = endLineOffset;
                                  -				}
                                  -			}
                                  -			
                                  -			var changeCount = addedCharCount - removedCharCount;
                                  -			for (var j = startLine + removedLineCount + 1; j < lineCount; j++) {
                                  -				this._lineOffsets[j] += changeCount;
                                  -			}
                                  -			var args = [startLine + 1, removedLineCount].concat(newLineOffsets);
                                  -			Array.prototype.splice.apply(this._lineOffsets, args);
                                  -			
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			var firstText = this._text[firstChunk];
                                  -			var lastText = this._text[lastChunk];
                                  -			var beforeText = firstText.substring(0, start - firstOffset);
                                  -			var afterText = lastText.substring(end - lastOffset);
                                  -			var params = [firstChunk, lastChunk - firstChunk + 1];
                                  -			if (beforeText) { params.push(beforeText); }
                                  -			if (text) { params.push(text); }
                                  -			if (afterText) { params.push(afterText); }
                                  -			Array.prototype.splice.apply(this._text, params);
                                  -			if (this._text.length === 0) { this._text = [""]; }
                                  -			
                                  -			this.onChanged(eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -		}
                                  -	};
                                  -	
                                  -	return TextModel;
                                  -}()); 
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/js/model_nightly.js b/branches/flexBox/sandbox/sandbox/orion/js/model_nightly.js
                                  deleted file mode 100644
                                  index 62ed5997..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/js/model_nightly.js
                                  +++ /dev/null
                                  @@ -1,450 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  - 
                                  -/*global navigator */
                                  -
                                  -/**
                                  - * @namespace The global container for eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new TextModel with the given text and default line delimiter.
                                  - *
                                  - * @param {String} [text=""] the text that the model will store
                                  - * @param {String} [lineDelimiter=platform delimiter] the line delimiter used when inserting new lines to the model.
                                  - *
                                  - * @name eclipse.TextModel
                                  - * @class The TextModel is an interface that provides text for the editor. Applications may
                                  - * implement the TextModel interface to provide a custom store for the editor content. The
                                  - * editor interacts with its text model in order to access and update the text that is being
                                  - * displayed and edited in the editor. This is the default implementation.
                                  - * <p>
                                  - * <b>See:</b><br>
                                  - * {@link eclipse.Editor}<br>
                                  - * {@link eclipse.Editor#setModel}
                                  - * </p>
                                  - */
                                  -eclipse.TextModel = (function() {
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -
                                  -	/** @private */
                                  -	function TextModel(text, lineDelimiter) {
                                  -		this._listeners = [];
                                  -		this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); 
                                  -		this._lastLineIndex = -1;
                                  -		this._text = [""];
                                  -		this._lineOffsets = [0];
                                  -		this.setText(text);
                                  -	}
                                  -
                                  -	TextModel.prototype = /** @lends eclipse.TextModel.prototype */ {
                                  -		/**
                                  -		 * Adds a listener to the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to add.
                                  -		 * @param {Function} [listener.onChanged] see {@link #onChanged}.
                                  -		 * @param {Function} [listener.onChanging] see {@link #onChanging}.
                                  -		 * 
                                  -		 * @see removeListener
                                  -		 */
                                  -		addListener: function(listener) {
                                  -			this._listeners.push(listener);
                                  -		},
                                  -		/**
                                  -		 * Removes a listener from the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to remove
                                  -		 * 
                                  -		 * @see #addListener
                                  -		 */
                                  -		removeListener: function(listener) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				if (this._listeners[i] === listener) {
                                  -					this._listeners.splice(i, 1);
                                  -					return;
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the number of characters in the model.
                                  -		 *
                                  -		 * @returns {Number} the number of characters in the model.
                                  -		 */
                                  -		getCharCount: function() {
                                  -			var count = 0;
                                  -			for (var i = 0; i<this._text.length; i++) {
                                  -				count += this._text[i].length;
                                  -			}
                                  -			return count;
                                  -		},
                                  -		/**
                                  -		 * Returns the text of the line at the given index.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>null</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @returns {String} the line text or <code>null</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineAtOffset
                                  -		 */
                                  -		getLine: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return null;
                                  -			}
                                  -			var start = this._lineOffsets[lineIndex];
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var text = this.getText(start, this._lineOffsets[lineIndex + 1]);
                                  -				if (includeDelimiter) {
                                  -					return text;
                                  -				}
                                  -				var end = text.length, c;
                                  -				while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) {
                                  -					end--;
                                  -				}
                                  -				return text.substring(0, end);
                                  -			} else {
                                  -				return this.getText(start); 
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the line index at the given character offset.
                                  -		 * <p>
                                  -		 * The valid offsets are 0 to char count inclusive. The line index for
                                  -		 * char count is <code>line count - 1</code>. Returns <code>-1</code> if
                                  -		 * the offset is out of range.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset a character offset.
                                  -		 * @returns {Number} the zero based line index or <code>-1</code> if out of range.
                                  -		 */
                                  -		getLineAtOffset: function(offset) {
                                  -			if (!(0 <= offset && offset <= this.getCharCount())) {
                                  -				return -1;
                                  -			}
                                  -			var lineCount = this.getLineCount();
                                  -			var charCount = this.getCharCount();
                                  -			if (offset === charCount) {
                                  -				return lineCount - 1; 
                                  -			}
                                  -			var lineStart, lineEnd;
                                  -			var index = this._lastLineIndex;
                                  -			if (0 <= index && index < lineCount) {
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (lineStart <= offset && offset < lineEnd) {
                                  -					return index;
                                  -				}
                                  -			}
                                  -			var high = lineCount;
                                  -			var low = -1;
                                  -			while (high - low > 1) {
                                  -				index = Math.floor((high + low) / 2);
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (offset <= lineStart) {
                                  -					high = index;
                                  -				} else if (offset < lineEnd) {
                                  -					high = index;
                                  -					break;
                                  -				} else {
                                  -					low = index;
                                  -				}
                                  -			}
                                  -			this._lastLineIndex = high;
                                  -			return high;
                                  -		},
                                  -		/**
                                  -		 * Returns the number of lines in the model.
                                  -		 * <p>
                                  -		 * The model always has at least one line.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the number of lines.
                                  -		 */
                                  -		getLineCount: function() {
                                  -			return this._lineOffsets.length;
                                  -		},
                                  -		/**
                                  -		 * Returns the line delimiter that is used by the editor
                                  -		 * when inserting new lines. New lines entered using key strokes 
                                  -		 * and paste operations use this line delimiter.
                                  -		 *
                                  -		 * @return {String} the line delimiter that is used by the editor when inserting new lines.
                                  -		 */
                                  -		getLineDelimiter: function() {
                                  -			return this._lineDelimiter;
                                  -		},
                                  -		/**
                                  -		 * Returns the end character offset for the given line. 
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that when the line delimiter is included, the 
                                  -		 * offset is either the start offset of the next line or char count. When the line delimiter is
                                  -		 * not included, the offset is the offset of the line delimiter.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @return {Number} the line end offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineStart
                                  -		 */
                                  -		getLineEnd: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return -1;
                                  -			}
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var end = this._lineOffsets[lineIndex + 1];
                                  -				if (includeDelimiter) {
                                  -					return end;
                                  -				}
                                  -				var text = this.getText(Math.max(0, end - 2), end);
                                  -				var i = text.length, c;
                                  -				while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) {
                                  -					i--;
                                  -				}
                                  -				return end - (text.length - i);
                                  -			} else {
                                  -				return this.getCharCount();
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the start character offset for the given line.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @return {Number} the line start offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineEnd
                                  -		 */
                                  -		getLineStart: function(lineIndex) {
                                  -			if (!(0 <= lineIndex && lineIndex < this.getLineCount())) {
                                  -				return -1;
                                  -			}
                                  -			return this._lineOffsets[lineIndex];
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that character at the end offset
                                  -		 * is not included in the returned text.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			if (firstChunk === lastChunk) {
                                  -				return this._text[firstChunk].substring(start - firstOffset, end - lastOffset);
                                  -			}
                                  -			var beforeText = this._text[firstChunk].substring(start - firstOffset);
                                  -			var afterText = this._text[lastChunk].substring(0, end - lastOffset);
                                  -			return beforeText + this._text.slice(firstChunk+1, lastChunk).join("") + afterText; 
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text is about to change.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanging}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the text that is about to be inserted in the model.
                                  -		 * @param {Number} start the character offset in the model where the change will occur.
                                  -		 * @param {Number} removedCharCount the number of characters being removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters being added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines being removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines being added to the model.
                                  -		 */
                                  -		onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanging) { 
                                  -					l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text has changed.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanged}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} start the character offset in the model where the change occurred.
                                  -		 * @param {Number} removedCharCount the number of characters removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines added to the model.
                                  -		 */
                                  -		onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanged) { 
                                  -					l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that the character at the 
                                  -		 * end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The text model must notify the listeners before and after the
                                  -		 * the text is changed by calling {@link #onChanging} and {@link #onChanged}
                                  -		 * respectively. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} [text=""] the new text.
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function(text, start, end) {
                                  -			if (text === undefined) { text = ""; }
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var startLine = this.getLineAtOffset(start);
                                  -			var endLine = this.getLineAtOffset(end);
                                  -			var eventStart = start;
                                  -			var removedCharCount = end - start;
                                  -			var removedLineCount = endLine - startLine;
                                  -			var addedCharCount = text.length;
                                  -			var addedLineCount = 0;
                                  -			var lineCount = this.getLineCount();
                                  -			
                                  -			var cr = 0, lf = 0, index = 0;
                                  -			var newLineOffsets = [];
                                  -			while (true) {
                                  -				if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -				if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -				if (lf === -1 && cr === -1) { break; }
                                  -				if (cr !== -1 && lf !== -1) {
                                  -					if (cr + 1 === lf) {
                                  -						index = lf + 1;
                                  -					} else {
                                  -						index = (cr < lf ? cr : lf) + 1;
                                  -					}
                                  -				} else if (cr !== -1) {
                                  -					index = cr + 1;
                                  -				} else {
                                  -					index = lf + 1;
                                  -				}
                                  -				newLineOffsets.push(start + index);
                                  -				addedLineCount++;
                                  -			}
                                  -		
                                  -			this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -			
                                  -			//TODO this should be done the loops below to avoid getText()
                                  -			if (newLineOffsets.length === 0) {
                                  -				var startLineOffset = this.getLineStart(startLine), endLineOffset;
                                  -				if (endLine + 1 < lineCount) {
                                  -					endLineOffset = this.getLineStart(endLine + 1);
                                  -				} else {
                                  -					endLineOffset = this.getCharCount();
                                  -				}
                                  -				if (start !== startLineOffset) {
                                  -					text = this.getText(startLineOffset, start) + text;
                                  -					start = startLineOffset;
                                  -				}
                                  -				if (end !== endLineOffset) {
                                  -					text = text + this.getText(end, endLineOffset);
                                  -					end = endLineOffset;
                                  -				}
                                  -			}
                                  -			
                                  -			var changeCount = addedCharCount - removedCharCount;
                                  -			for (var j = startLine + removedLineCount + 1; j < lineCount; j++) {
                                  -				this._lineOffsets[j] += changeCount;
                                  -			}
                                  -			var args = [startLine + 1, removedLineCount].concat(newLineOffsets);
                                  -			Array.prototype.splice.apply(this._lineOffsets, args);
                                  -			
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			var firstText = this._text[firstChunk];
                                  -			var lastText = this._text[lastChunk];
                                  -			var beforeText = firstText.substring(0, start - firstOffset);
                                  -			var afterText = lastText.substring(end - lastOffset);
                                  -			var params = [firstChunk, lastChunk - firstChunk + 1];
                                  -			if (beforeText) { params.push(beforeText); }
                                  -			if (text) { params.push(text); }
                                  -			if (afterText) { params.push(afterText); }
                                  -			Array.prototype.splice.apply(this._text, params);
                                  -			if (this._text.length === 0) { this._text = [""]; }
                                  -			
                                  -			this.onChanged(eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -		}
                                  -	};
                                  -	
                                  -	return TextModel;
                                  -}()); 
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/orion-improved.html b/branches/flexBox/sandbox/sandbox/orion/orion-improved.html
                                  deleted file mode 100644
                                  index 83fcc461..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/orion-improved.html
                                  +++ /dev/null
                                  @@ -1,1449 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script src="js/model.js"></script>
                                  -  <script src="js/editor_improved.js"></script>
                                  -  <script src="samples/rulers.js"></script>
                                  -  <script src="samples/styler.js"></script>
                                  -  <script src="js-tests/test-performance.js"></script>
                                  -  <script>
                                  -
                                  -var editor;
                                  -var tester = new PerformanceTestCase();
                                  -
                                  -function log(msg) {
                                  -    console.log(msg);
                                  -}
                                  -
                                  -function findOrionElements(tagName) {
                                  -    var elements = [];
                                  -    var tags = document.getElementsByTagName(tagName);
                                  -    for (var i = 0; i < tags.length; i++) {
                                  -        if (tags[i].getAttribute('name') === 'orion') {
                                  -            elements.push(tags[i]);
                                  -        }
                                  -    }
                                  -    return elements;
                                  -};
                                  -
                                  -function createEditors() {
                                  -
                                  -    // find all pre elements named 'orion'
                                  -    var elements = findOrionElements('textarea');
                                  -    for (var i = 0; i < elements.length; i++) {
                                  -        var element = elements[i];
                                  -
                                  -        // extract the text from inside the pre
                                  -        var text = "";
                                  -        for (var j = 0; j < element.childNodes.length; j++) {
                                  -            var nodeName = element.childNodes[j].nodeName;
                                  -            if (nodeName === "#text") text += element.childNodes[j].nodeValue;
                                  -            else if (nodeName === "BR") text += '\n';
                                  -        }
                                  -
                                  -        /* Create the editor: - parent is the containing div element - readonly by default, but can specify class="writable" - use the given stylesheet */
                                  -        var parentNode = element.parentNode;
                                  -        var elementClass = element.getAttribute('class');
                                  -        editor = new eclipse.Editor({
                                  -            parent: parentNode,
                                  -            readonly: !(elementClass && elementClass.indexOf('writable') > -1),
                                  -            stylesheet: "editor.css"
                                  -        });
                                  -
                                  -        // use javascript styler for now, there is no html/xml syntax highlighting yet
                                  -        var styler = new eclipse.TextStyler(editor, "js");
                                  -
                                  -        // add a ruler with line numbers to the left side
                                  -        var lines = new eclipse.LineNumberRuler("left", {
                                  -            styleClass: "ruler_lines"
                                  -        }, {
                                  -            styleClass: "ruler_lines_odd"
                                  -        }, {
                                  -            styleClass: "ruler_lines_even"
                                  -        });
                                  -        
                                  -        editor.setText(text);
                                  -        editor.addRuler(lines);
                                  -
                                  -        // fix the height of the containing div
                                  -        parentNode.style.height = (editor.getLineHeight() * (editor.getModel().getLineCount() + 1)) + 2 + 'px';
                                  -    }
                                  -}
                                  -  </script>
                                  -  <style>
                                  -  html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -  }
                                  -  #orion {
                                  -    width: 100%;
                                  -    height: 100% !important;
                                  -  }
                                  -  #test {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 18px;
                                  -  }
                                  -  </style>
                                  -  </head>
                                  -  <body onload="createEditors()">
                                  -    <div id="orion">
                                  -<textarea name="orion" class="writable">
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.4.0a1",
                                  -    revision: "$Revision: 8237 $",
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -
                                  -        if (FBL.processAllStyleSheets)
                                  -            processAllStyleSheets(Firebug.browser.document);
                                  -
                                  -        FirebugChrome.initialize();
                                  -
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -
                                  -        dispatch(modules, "shutdown", []);
                                  -
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -
                                  -        this.savePrefs();
                                  -    },
                                  -
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -
                                  -        this.savePrefs();
                                  -    },
                                  -
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -
                                  -                json[++jl] = '"';
                                  -                json[++jl] = name;
                                  -
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value;
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value;
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext ||
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -
                                  -    parentPanel: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    sidePanelBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name);
                                  -
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';
                                  -
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -
                                  -            var panelBarNode = this.parentPanel ?
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -
                                  -        this.panelNode = $(panelId);
                                  -
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -
                                  -
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel =
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel :
                                  -                Firebug.chrome.selectedPanel;
                                  -
                                  -        Firebug.showInfoTips = true;
                                  -        Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -
                                  -        this.panelNode.style.display = "block";
                                  -
                                  -        this.visible = true;
                                  -
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -
                                  -        this.panelNode.style.display = "none";
                                  -
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu)
                                  -            return;
                                  -
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -
                                  -            items: menu
                                  -        });
                                  -
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -
                                  -        return true;
                                  -
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -
                                  -        var screenY = 0;
                                  -
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY;
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -
                                  -        ///return m ? m[1] : label;
                                  -
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE &&
                                  -                // safeToString() returns "[object]" for some objects like window.Image
                                  -                (label == "[object]" ||
                                  -                // safeToString() returns undefined for some objects like window.clientInformation
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -</textarea>
                                  -    </div>
                                  -    <div id="test">
                                  -        <input type="button" value="Test Line Down" onclick="tester.test_lineDownScrolling()">
                                  -    </div>
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/orion.html b/branches/flexBox/sandbox/sandbox/orion/orion.html
                                  deleted file mode 100644
                                  index c41a5668..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/orion.html
                                  +++ /dev/null
                                  @@ -1,1449 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script src="js/model.js"></script>
                                  -  <script src="js/editor.js"></script>
                                  -  <script src="samples/rulers.js"></script>
                                  -  <script src="samples/styler.js"></script>
                                  -  <script src="js-tests/test-performance.js"></script>
                                  -  <script>
                                  -
                                  -var editor;
                                  -var tester = new PerformanceTestCase();
                                  -
                                  -function log(msg) {
                                  -    console.log(msg);
                                  -}
                                  -
                                  -function findOrionElements(tagName) {
                                  -    var elements = [];
                                  -    var tags = document.getElementsByTagName(tagName);
                                  -    for (var i = 0; i < tags.length; i++) {
                                  -        if (tags[i].getAttribute('name') === 'orion') {
                                  -            elements.push(tags[i]);
                                  -        }
                                  -    }
                                  -    return elements;
                                  -};
                                  -
                                  -function createEditors() {
                                  -
                                  -    // find all pre elements named 'orion'
                                  -    var elements = findOrionElements('textarea');
                                  -    for (var i = 0; i < elements.length; i++) {
                                  -        var element = elements[i];
                                  -
                                  -        // extract the text from inside the pre
                                  -        var text = "";
                                  -        for (var j = 0; j < element.childNodes.length; j++) {
                                  -            var nodeName = element.childNodes[j].nodeName;
                                  -            if (nodeName === "#text") text += element.childNodes[j].nodeValue;
                                  -            else if (nodeName === "BR") text += '\n';
                                  -        }
                                  -
                                  -        /* Create the editor: - parent is the containing div element - readonly by default, but can specify class="writable" - use the given stylesheet */
                                  -        var parentNode = element.parentNode;
                                  -        var elementClass = element.getAttribute('class');
                                  -        editor = new eclipse.Editor({
                                  -            parent: parentNode,
                                  -            readonly: !(elementClass && elementClass.indexOf('writable') > -1),
                                  -            stylesheet: "editor.css"
                                  -        });
                                  -
                                  -        // use javascript styler for now, there is no html/xml syntax highlighting yet
                                  -        var styler = new eclipse.TextStyler(editor, "js");
                                  -
                                  -        // add a ruler with line numbers to the left side
                                  -        var lines = new eclipse.LineNumberRuler("left", {
                                  -            styleClass: "ruler_lines"
                                  -        }, {
                                  -            styleClass: "ruler_lines_odd"
                                  -        }, {
                                  -            styleClass: "ruler_lines_even"
                                  -        });
                                  -        
                                  -        editor.setText(text);
                                  -        editor.addRuler(lines);
                                  -
                                  -        // fix the height of the containing div
                                  -        parentNode.style.height = (editor.getLineHeight() * (editor.getModel().getLineCount() + 1)) + 2 + 'px';
                                  -    }
                                  -}
                                  -  </script>
                                  -  <style>
                                  -  html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -  }
                                  -  #orion {
                                  -    width: 100%;
                                  -    height: 100% !important;
                                  -  }
                                  -  #test {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 18px;
                                  -  }
                                  -  </style>
                                  -  </head>
                                  -  <body onload="createEditors()">
                                  -    <div id="orion">
                                  -<textarea name="orion" class="writable">
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns( /** @scope s_firebug */ function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -/**
                                  - * @namespace describe Firebug
                                  - * @exports FBL.Firebug as Firebug
                                  - */
                                  -FBL.Firebug =
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.4.0a1",
                                  -    revision: "$Revision: 8237 $",
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -
                                  -        if (Firebug.Inspector && Firebug.Inspector.create)
                                  -            Firebug.Inspector.create();
                                  -
                                  -        if (FBL.processAllStyleSheets)
                                  -            processAllStyleSheets(Firebug.browser.document);
                                  -
                                  -        FirebugChrome.initialize();
                                  -
                                  -        dispatch(modules, "initialize", []);
                                  -
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -
                                  -        dispatch(modules, "shutdown", []);
                                  -
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                try
                                  -                {
                                  -                    chromeMap[name].destroy();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS) FBTrace.sysout("chrome.destroy() failed to: " + name);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        Firebug.Lite.Cache.Element.clear();
                                  -        Firebug.Lite.Cache.StyleSheet.clear();
                                  -
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                    // TODO: xxxpedro add trace to FBTrace logs like in Firebug
                                  -                    //firebug.trace();
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -
                                  -        this.savePrefs();
                                  -    },
                                  -
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -
                                  -        this.savePrefs();
                                  -    },
                                  -
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -
                                  -                json[++jl] = '"';
                                  -                json[++jl] = name;
                                  -
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value;
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value;
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -// xxxpedro should we remove this?
                                  -window.Firebug = FBL.Firebug;
                                  -
                                  -if (!Env.Options.enablePersistent ||
                                  -     Env.Options.enablePersistent && Env.isChromeContext ||
                                  -     Env.isDebugMode)
                                  -        Env.browser.window.Firebug = FBL.Firebug;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var ElementCache = Firebug.Lite.Cache.Element;
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        ElementCache(el);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class
                                  - *
                                  - * Support for listeners registration. This object also extended by Firebug.Module so,
                                  - * all modules supports listening automatically. Notice that array of listeners
                                  - * is created for each intance of a module within initialize method. Thus all derived
                                  - * module classes must ensure that Firebug.Module.initialize method is called for the
                                  - * super class.
                                  - */
                                  -Firebug.Listener = function()
                                  -{
                                  -    // The array is created when the first listeners is added.
                                  -    // It can't be created here since derived objects would share
                                  -    // the same array.
                                  -    this.fbListeners = null;
                                  -};
                                  -
                                  -Firebug.Listener.prototype =
                                  -{
                                  -    addListener: function(listener)
                                  -    {
                                  -        if (!this.fbListeners)
                                  -            this.fbListeners = []; // delay the creation until the objects are created so 'this' causes new array for each module
                                  -
                                  -        this.fbListeners.push(listener);
                                  -    },
                                  -
                                  -    removeListener: function(listener)
                                  -    {
                                  -        remove(this.fbListeners, listener);  // if this.fbListeners is null, remove is being called with no add
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -/**
                                  - * @module Base class for all modules. Every derived module object must be registered using
                                  - * <code>Firebug.registerModule</code> method. There is always one instance of a module object
                                  - * per browser window.
                                  - * @extends Firebug.Listener
                                  - */
                                  -Firebug.Module = extend(new Firebug.Listener(),
                                  -/** @extend Firebug.Module */
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -/**
                                  - * @panel Base class for all panels. Every derived panel must define a constructor and
                                  - * register with "Firebug.registerPanel" method. An instance of the panel
                                  - * object is created by the framework for each browser tab where Firebug is activated.
                                  - */
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -
                                  -    parentPanel: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    sidePanelBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name);
                                  -
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';
                                  -
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -
                                  -            var panelBarNode = this.parentPanel ?
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -
                                  -        // xxxpedro contextMenu
                                  -        this.onContextMenu = bind(this.onContextMenu, this);
                                  -
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.containerNode = null;
                                  -
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -
                                  -        this.panelNode = $(panelId);
                                  -
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -
                                  -        // xxxpedro contextMenu
                                  -        addEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -
                                  -
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.chrome.currentPanel =
                                  -                Firebug.chrome.selectedPanel && Firebug.chrome.selectedPanel.sidePanelBar ?
                                  -                Firebug.chrome.selectedPanel.sidePanelBar.selectedPanel :
                                  -                Firebug.chrome.selectedPanel;
                                  -
                                  -        Firebug.showInfoTips = true;
                                  -        Firebug.InfoTip.initializeBrowser(Firebug.chrome);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -
                                  -        /// TODO: xxxpedro infoTip Hack
                                  -        Firebug.InfoTip.uninitializeBrowser(Firebug.chrome);
                                  -
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -
                                  -        // xxxpedro contextMenu
                                  -        removeEvent(this.containerNode, "contextmenu", this.onContextMenu);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -
                                  -        this.panelNode.style.display = "block";
                                  -
                                  -        this.visible = true;
                                  -
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -
                                  -        this.panelNode.style.display = "none";
                                  -
                                  -        this.visible = false;
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this);
                                  -
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    markChange: function(skipSelf)
                                  -    {
                                  -        if (this.dependents)
                                  -        {
                                  -            if (skipSelf)
                                  -            {
                                  -                for (var i = 0; i < this.dependents.length; ++i)
                                  -                {
                                  -                    var panelName = this.dependents[i];
                                  -                    if (panelName != this.name)
                                  -                        this.context.invalidatePanels(panelName);
                                  -                }
                                  -            }
                                  -            else
                                  -                this.context.invalidatePanels.apply(this.context, this.dependents);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Retrieves the search options that this modules supports.
                                  -     * This is used by the search UI to present the proper options.
                                  -     */
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            Firebug.Search.searchOptionMenu("search.Case Sensitive", "searchCaseSensitive")
                                  -        ];
                                  -    },
                                  -
                                  -    /**
                                  -     * Navigates to the next document whose match parameter returns true.
                                  -     */
                                  -    navigateToNextDocument: function(match, reverse)
                                  -    {
                                  -        // This is an approximation of the UI that is displayed by the location
                                  -        // selector. This should be close enough, although it may be better
                                  -        // to simply generate the sorted list within the module, rather than
                                  -        // sorting within the UI.
                                  -        var self = this;
                                  -        function compare(a, b) {
                                  -            var locA = self.getObjectDescription(a);
                                  -            var locB = self.getObjectDescription(b);
                                  -            if(locA.path > locB.path)
                                  -                return 1;
                                  -            if(locA.path < locB.path)
                                  -                return -1;
                                  -            if(locA.name > locB.name)
                                  -                return 1;
                                  -            if(locA.name < locB.name)
                                  -                return -1;
                                  -            return 0;
                                  -        }
                                  -        var allLocs = this.getLocationList().sort(compare);
                                  -        for (var curPos = 0; curPos < allLocs.length && allLocs[curPos] != this.location; curPos++);
                                  -
                                  -        function transformIndex(index) {
                                  -            if (reverse) {
                                  -                // For the reverse case we need to implement wrap around.
                                  -                var intermediate = curPos - index - 1;
                                  -                return (intermediate < 0 ? allLocs.length : 0) + intermediate;
                                  -            } else {
                                  -                return (curPos + index + 1) % allLocs.length;
                                  -            }
                                  -        };
                                  -
                                  -        for (var next = 0; next < allLocs.length - 1; next++)
                                  -        {
                                  -            var object = allLocs[transformIndex(next)];
                                  -
                                  -            if (match(object))
                                  -            {
                                  -                this.navigate(object);
                                  -                return object;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // Called when "Options" clicked. Return array of
                                  -    // {label: 'name', nol10n: true,  type: "checkbox", checked: <value>, command:function to set <value>}
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    /*
                                  -     * Called by chrome.onContextMenu to build the context menu when this panel has focus.
                                  -     * See also FirebugRep for a similar function also called by onContextMenu
                                  -     * Extensions may monkey patch and chain off this call
                                  -     * @param object: the 'realObject', a model value, eg a DOM property
                                  -     * @param target: the HTML element clicked on.
                                  -     * @return an array of menu items.
                                  -     */
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    browseObject: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, x, y)
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // An array of objects that can be passed to getObjectLocation.
                                  -    // The list of things a panel can show, eg sourceFiles.
                                  -    // Only shown if panel.location defined and supportsObject true
                                  -    getLocationList: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getDefaultLocation: function()
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getObjectLocation: function(object)
                                  -    {
                                  -        return "";
                                  -    },
                                  -
                                  -    // Text for the location list menu eg script panel source file list
                                  -    // return.path: group/category label, return.name: item label
                                  -    getObjectDescription: function(object)
                                  -    {
                                  -        var url = this.getObjectLocation(object);
                                  -        return FBL.splitURLBase(url);
                                  -    },
                                  -
                                  -    /*
                                  -     *  UI signal that a tab needs attention, eg Script panel is currently stopped on a breakpoint
                                  -     *  @param: show boolean, true turns on.
                                  -     */
                                  -    highlight: function(show)
                                  -    {
                                  -        var tab = this.getTab();
                                  -        if (!tab)
                                  -            return;
                                  -
                                  -        if (show)
                                  -            tab.setAttribute("highlight", "true");
                                  -        else
                                  -            tab.removeAttribute("highlight");
                                  -    },
                                  -
                                  -    getTab: function()
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -
                                  -        var tab = chrome.$("fbPanelBar2").getTab(this.name);
                                  -        if (!tab)
                                  -            tab = chrome.$("fbPanelBar1").getTab(this.name);
                                  -        return tab;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Support for Break On Next
                                  -
                                  -    /**
                                  -     * Called by the framework when the user clicks on the Break On Next button.
                                  -     * @param {Boolean} armed Set to true if the Break On Next feature is
                                  -     * to be armed for action and set to false if the Break On Next should be disarmed.
                                  -     * If 'armed' is true, then the next call to shouldBreakOnNext should be |true|.
                                  -     */
                                  -    breakOnNext: function(armed)
                                  -    {
                                  -    },
                                  -
                                  -    /**
                                  -     * Called when a panel is selected/displayed. The method should return true
                                  -     * if the Break On Next feature is currently armed for this panel.
                                  -     */
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    /**
                                  -     * Returns labels for Break On Next tooltip (one for enabled and one for disabled state).
                                  -     * @param {Boolean} enabled Set to true if the Break On Next feature is
                                  -     * currently activated for this panel.
                                  -     */
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    // xxxpedro contextMenu
                                  -    onContextMenu: function(event)
                                  -    {
                                  -        if (!this.getContextMenuItems)
                                  -            return;
                                  -
                                  -        cancelEvent(event, true);
                                  -
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var menu = this.getContextMenuItems(this.selection, target);
                                  -        if (!menu)
                                  -            return;
                                  -
                                  -        var contextMenu = new Menu(
                                  -        {
                                  -            id: "fbPanelContextMenu",
                                  -
                                  -            items: menu
                                  -        });
                                  -
                                  -        contextMenu.show(event.clientX, event.clientY);
                                  -
                                  -        return true;
                                  -
                                  -        /*
                                  -        // TODO: xxxpedro move code to somewhere. code to get cross-browser
                                  -        // window to screen coordinates
                                  -        var box = Firebug.browser.getElementPosition(Firebug.chrome.node);
                                  -
                                  -        var screenY = 0;
                                  -
                                  -        // Firefox
                                  -        if (typeof window.mozInnerScreenY != "undefined")
                                  -        {
                                  -            screenY = window.mozInnerScreenY;
                                  -        }
                                  -        // Chrome
                                  -        else if (typeof window.innerHeight != "undefined")
                                  -        {
                                  -            screenY = window.outerHeight - window.innerHeight;
                                  -        }
                                  -        // IE
                                  -        else if (typeof window.screenTop != "undefined")
                                  -        {
                                  -            screenY = window.screenTop;
                                  -        }
                                  -
                                  -        contextMenu.show(event.screenX-box.left, event.screenY-screenY-box.top);
                                  -        /**/
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * MeasureBox
                                  - * To get pixels size.width and size.height:
                                  - * <ul><li>     this.startMeasuring(view); </li>
                                  - *     <li>     var size = this.measureText(lineNoCharsSpacer); </li>
                                  - *     <li>     this.stopMeasuring(); </li>
                                  - * </ul>
                                  - *
                                  - * @namespace
                                  - */
                                  -Firebug.MeasureBox =
                                  -{
                                  -    startMeasuring: function(target)
                                  -    {
                                  -        if (!this.measureBox)
                                  -        {
                                  -            this.measureBox = target.ownerDocument.createElement("span");
                                  -            this.measureBox.className = "measureBox";
                                  -        }
                                  -
                                  -        copyTextStyles(target, this.measureBox);
                                  -        target.ownerDocument.body.appendChild(this.measureBox);
                                  -    },
                                  -
                                  -    getMeasuringElement: function()
                                  -    {
                                  -        return this.measureBox;
                                  -    },
                                  -
                                  -    measureText: function(value)
                                  -    {
                                  -        this.measureBox.innerHTML = value ? escapeForSourceLine(value) : "m";
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    measureInputText: function(value)
                                  -    {
                                  -        value = value ? escapeForTextNode(value) : "m";
                                  -        if (!Firebug.showTextNodesWithWhitespace)
                                  -            value = value.replace(/\t/g,'mmmmmm').replace(/\ /g,'m');
                                  -        this.measureBox.innerHTML = value;
                                  -        return {width: this.measureBox.offsetWidth, height: this.measureBox.offsetHeight-1};
                                  -    },
                                  -
                                  -    getBox: function(target)
                                  -    {
                                  -        var style = this.measureBox.ownerDocument.defaultView.getComputedStyle(this.measureBox, "");
                                  -        var box = getBoxFromStyles(style, this.measureBox);
                                  -        return box;
                                  -    },
                                  -
                                  -    stopMeasuring: function()
                                  -    {
                                  -        this.measureBox.parentNode.removeChild(this.measureBox);
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -
                                  -        ///return m ? m[1] : label;
                                  -
                                  -        // if the label is in the "[object TYPE]" format return its type
                                  -        if (m)
                                  -        {
                                  -            return m[1];
                                  -        }
                                  -        // if it is IE we need to handle some special cases
                                  -        else if (
                                  -                // safeToString() fails to recognize some objects in IE
                                  -                isIE &&
                                  -                // safeToString() returns "[object]" for some objects like window.Image
                                  -                (label == "[object]" ||
                                  -                // safeToString() returns undefined for some objects like window.clientInformation
                                  -                typeof object == "object" && typeof label == "undefined")
                                  -            )
                                  -        {
                                  -            return "Object";
                                  -        }
                                  -        else
                                  -        {
                                  -            return label;
                                  -        }
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -</textarea>
                                  -    </div>
                                  -    <div id="test">
                                  -        <input type="button" value="Test Line Down" onclick="tester.test_lineDownScrolling()">
                                  -    </div>
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/brkp_obj.gif b/branches/flexBox/sandbox/sandbox/orion/samples/brkp_obj.gif
                                  deleted file mode 100644
                                  index a831fe72..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion/samples/brkp_obj.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/browserEditor.html b/branches/flexBox/sandbox/sandbox/orion/samples/browserEditor.html
                                  deleted file mode 100644
                                  index 1f18d4b1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/browserEditor.html
                                  +++ /dev/null
                                  @@ -1,170 +0,0 @@
                                  -<!--
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  --->
                                  -
                                  -<html>
                                  -<head>
                                  -<title>Performance Test</title>
                                  -<script language="javascript" type="text/javascript">
                                  -
                                  -var delimiter = "\r\n";
                                  -
                                  -function getFile(file) {
                                  -	var objXml = new XMLHttpRequest();
                                  -	objXml.open("GET",file,false);
                                  -	objXml.send(null);
                                  -	return objXml.responseText;
                                  -}
                                  -
                                  -function changeDelimiter(text, delimiter) {
                                  -	var cr = 0, lf = 0, index = 0, start = 0;
                                  -	var lines = [];
                                  -	while (true) {
                                  -		if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -		if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -		if (lf === -1 && cr === -1) { break; }
                                  -		if (cr !== -1 && lf !== -1) {
                                  -			if (cr + 1 === lf) {
                                  -				end = cr;
                                  -				index = lf + 1;
                                  -			} else {
                                  -				end = cr < lf ? cr : lf;
                                  -				index = end + 1;
                                  -			}
                                  -		} else if (cr !== -1) {
                                  -			end = cr;
                                  -			index = cr + 1;
                                  -		} else {
                                  -			end = lf;
                                  -			index = lf + 1;
                                  -		}
                                  -		lines.push(text.substring(start, end));
                                  -		start = index;
                                  -	}
                                  -	if (start < text.length) {
                                  -		lines.push(text.substring(start, text.length));
                                  -	}
                                  -	return lines.join(delimiter);
                                  -}
                                  -
                                  -function test0 () {
                                  -	var text = changeDelimiter(getFile("text.txt"), delimiter);
                                  -	var styles = changeDelimiter(getFile("styles.txt"), delimiter);
                                  -	var time = new Date().getTime();
                                  -	createEditor(text, styles);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function test1 () {
                                  -	var text = changeDelimiter(getFile("text.txt"), delimiter);
                                  -	var time = new Date().getTime();
                                  -	createEditor(text);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function test2 () {
                                  -	var lines = [];
                                  -	var lineCount = 1000;
                                  -	for(var i = lines.length; i< lineCount; i++) {
                                  -		lines.push("This is the line of text number "+i);
                                  -	}
                                  -	createEditor(lines.join("\r\n"));
                                  -}
                                  -
                                  -function clean () {
                                  -	var time = new Date().getTime();
                                  -	var editor = window.document.getElementById('editor');
                                  -	var document = editor.contentWindow.document;
                                  -	var body = document.body;
                                  -	while (body.hasChildNodes()) body.removeChild(body.lastChild);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function createEditor (text, styles) {
                                  -	var editor = window.document.getElementById('editor');
                                  -
                                  -	var document = editor.contentWindow.document;
                                  -	var body = document.body;
                                  -	body.contentEditable = "true";
                                  -	body.style.whiteSpace = "pre";
                                  -	while (body.hasChildNodes()) body.removeChild(body.lastChild);
                                  -	var lineOffset = 0;
                                  -	var styleOffset = 0;
                                  -	var charCount = text.length;
                                  -	while (lineOffset < charCount) {
                                  -		var lineEnd = text.indexOf(delimiter, lineOffset);
                                  -		if (lineEnd === -1) lineEnd = charCount;
                                  -
                                  -		if (styles) {
                                  -			while (styleOffset < styles.length) {
                                  -				var lineStyleEnd = styles.indexOf(delimiter, styleOffset);
                                  -				if (lineStyleEnd === -1) lineStyleEnd = styles.length;
                                  -				var style = styles.substring(styleOffset, lineStyleEnd).split(";");
                                  -				var styleStart = parseInt(style[0]);
                                  -				var styleEnd = styleStart + parseInt(style[1]); 
                                  -				if (styleStart >= lineEnd) break;
                                  -				
                                  -				var start = Math.max(lineOffset, styleStart);
                                  -				var end = Math.min(lineEnd, styleEnd);
                                  -				var styleText = text.substring(start, end);
                                  -				var span = document.createElement("SPAN");
                                  -				if ((parseInt(style[2]) & 1)) { 
                                  -					span.style.fontWeight = "bold"; 
                                  -				}
                                  -				if ((parseInt(style[2]) & 2)) { 
                                  -					span.style.fontStyle = "italic"; 
                                  -				}
                                  -				if (style[5]) {
                                  -					var r = Number(parseInt(style[5])).toString(16);
                                  -					var g = Number(parseInt(style[6])).toString(16);
                                  -					var b = Number(parseInt(style[7])).toString(16);
                                  -					if (r.length < 2) r = "0" + r;
                                  -					if (g.length < 2) g = "0" + g;
                                  -					if (b.length < 2) b = "0" + b;
                                  -					span.style.color = "#" + r + g + b;
                                  -				}
                                  -				var textNode  = document.createTextNode(styleText);
                                  -				span.appendChild(textNode);
                                  -				body.appendChild(span);
                                  -				styleOffset = lineStyleEnd;
                                  -				if (styleOffset < styles.length) styleOffset += delimiter.length;
                                  -			}
                                  -		} else {
                                  -			var lineText = text.substring(lineOffset, lineEnd);
                                  -			var span = document.createElement("SPAN");
                                  -			var textNode  = document.createTextNode(lineText);
                                  -			span.appendChild(textNode);
                                  -			body.appendChild(span);
                                  -		}
                                  -		lineOffset = lineEnd; 
                                  -		if (lineOffset < charCount) {
                                  -			var br = document.createElement("BR");
                                  -			body.appendChild(br);
                                  -			lineOffset += delimiter.length;
                                  -		}
                                  -	}
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body >
                                  -
                                  -<h1>Performance of content editable iframe with large amount of text and styles</h1>
                                  -<iframe id='editor' style="width:100%;height:500px;"></iframe>
                                  -<br></br>
                                  -<br>
                                  -<span onclick='test0()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor</span>  
                                  -<span onclick='test1()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor (without styles)</span> 
                                  -<span onclick='test2()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor with lines (no styles)</span>
                                  -<span onclick='clean()' style='border: 2px dotted orange; padding: 0 2 0 2'>clear editor</span>
                                  -<br>
                                  -
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/console.js b/branches/flexBox/sandbox/sandbox/orion/samples/console.js
                                  deleted file mode 100644
                                  index 9f398e69..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/console.js
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window setTimeout */
                                  -
                                  -function log (text) {
                                  -	var console = window.document.getElementById('console');
                                  -	if (!console) { return; }
                                  -	for (var n = 1; n < arguments.length; n++) {
                                  -		text += " ";
                                  -		text += arguments[n];
                                  -	}
                                  -	
                                  -	var document = console.contentWindow.document;
                                  -	var t = document.createTextNode(text);
                                  -	document.body.appendChild(t);
                                  -	var br = document.createElement("br");
                                  -	document.body.appendChild(br);
                                  -	if (!console.scroll) {
                                  -		console.scroll = true;
                                  -		setTimeout(function() {
                                  -			document.body.lastChild.scrollIntoView(false);
                                  -			console.scroll = false;
                                  -		}, 0);
                                  -	}
                                  -	
                                  -	//IE (causes all kinds of weird behaviour)
                                  -//	console.log(text);
                                  -}
                                  -
                                  -function clearLog () {
                                  -	var console = window.document.getElementById('console');
                                  -	if (!console) { return; }
                                  -	var document = console.contentWindow.document;
                                  -	var body = document.body;
                                  -	while (body.hasChildNodes()) { body.removeChild(body.lastChild); }
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/cr.png b/branches/flexBox/sandbox/sandbox/orion/samples/cr.png
                                  deleted file mode 100644
                                  index e38fdc17..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion/samples/cr.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/demo.html b/branches/flexBox/sandbox/sandbox/orion/samples/demo.html
                                  deleted file mode 100644
                                  index 638d73b7..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/demo.html
                                  +++ /dev/null
                                  @@ -1,178 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -<head>
                                  -<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010."/>
                                  -<meta http-equiv="X-UA-Compatible" content="IE=8"/>
                                  -<meta http-equiv="PRAGMA" content="NO-CACHE"/>
                                  -<meta http-equiv="Expires" content="-1"/>
                                  -<title>Orion Editor Demo</title>
                                  -<script language="javascript" type="text/javascript" src="console.js"></script>
                                  -<script language="javascript" type="text/javascript" src="styler.js"></script>
                                  -<script language="javascript" type="text/javascript" src="rulers.js"></script>
                                  -<script language="javascript" type="text/javascript" src="undoStack.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js/editor.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js/model.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js-tests/test-performance.js"></script>
                                  -
                                  -<script language="javascript" type="text/javascript">
                                  -var editor = null;
                                  -var styler = null;
                                  -
                                  -var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -
                                  -function getFile(file) {
                                  -	try {
                                  -		var objXml = new XMLHttpRequest();
                                  -		objXml.open("GET",file,false);
                                  -		objXml.send(null);
                                  -		return objXml.responseText;
                                  -	} catch (e) {
                                  -		return null;
                                  -	}
                                  -}
                                  -
                                  -function checkEditor() {
                                  -	if (editor) return;
                                  -	var options = {
                                  -		parent: "divParent",
                                  -		model: new eclipse.TextModel(),
                                  -		stylesheet: "editor.css" 
                                  -	};
                                  -	editor = new eclipse.Editor(options);
                                  -	
                                  -	/* Undo stack */
                                  -	var undoStack = new eclipse.UndoStack(editor, 200);
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('z', true), "undo");
                                  -	editor.setAction("undo", function() {
                                  -		undoStack.undo();
                                  -		return true;
                                  -	});
                                  -	editor.setKeyBinding(isMac ? new eclipse.KeyBinding('z', true, true) : new eclipse.KeyBinding('y', true), "redo");
                                  -	editor.setAction("redo", function() {
                                  -		undoStack.redo();
                                  -		return true;
                                  -	});
                                  -	
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('s', true), "save");
                                  -	editor.setAction("save", function() {
                                  -		log("*****************SAVE");
                                  -		return true;
                                  -	});
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('f', true), "find");
                                  -	editor.setAction("find", function() {
                                  -		log("*****************FIND");
                                  -		return true;
                                  -	});
                                  -
                                  -	
                                  -	var breakpoint = {
                                  -		html: "<img src='brkp_obj.gif'></img>",
                                  -		style: {styleClass: "ruler_annotation_breakpoint"},
                                  -		overviewStyle: {styleClass: "ruler_annotation_breakpoint_overview"}
                                  -	};
                                  -	var todo = {
                                  -		html: "<img src='todo.gif'></img>",
                                  -		style: {styleClass: "ruler_annotation_todo"},
                                  -		overviewStyle: {styleClass: "ruler_annotation_todo_overview"}
                                  -	};
                                  -	var annotation = new eclipse.AnnotationRuler("left", {styleClass: "ruler_annotation"}, breakpoint);
                                  -	annotation.onDblClick =  function(lineIndex, e) {
                                  -		if (lineIndex === undefined) return;
                                  -		annotation.setAnnotation(lineIndex, annotation.getAnnotation(lineIndex) !== undefined ? undefined : e.ctrlKey ? todo : breakpoint);
                                  -	};
                                  -	var lines = new eclipse.LineNumberRuler("left", {styleClass: "ruler_lines"}, {styleClass: "ruler_lines_odd"}, {styleClass: "ruler_lines_even"});
                                  -	lines.onDblClick = annotation.onDblClick;
                                  -	var overview = new eclipse.OverviewRuler("right", {styleClass: "ruler_overview"}, annotation);
                                  -	editor.addRuler(annotation);
                                  -	editor.addRuler(lines);
                                  -	editor.addRuler(overview);
                                  -}
                                  -
                                  -function createJavaSample() {
                                  -	checkEditor();
                                  -	var file =  getFile("text.txt");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	styler = new eclipse.TextStyler(editor, "java");
                                  -	editor.setText(file);
                                  -}
                                  -
                                  -function createJavaScriptSample() {
                                  -	checkEditor();
                                  -	var file =  getFile("../js/editor.js");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	styler = new eclipse.TextStyler(editor, "js");
                                  -	editor.setText(file);
                                  -}
                                  -
                                  -function createPlainTextSample() {
                                  -	checkEditor();
                                  -	var lineCount = 50000;
                                  -	var lines = [];
                                  -	for(var i = 0; i < lineCount; i++) {
                                  -		lines.push("This is the line of text number "+i);
                                  -	}
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	editor.setText(lines.join("\r\n"));
                                  -}
                                  -
                                  -function createBidiTextSample() {
                                  -	checkEditor();
                                  -	var lines = [];
                                  -	lines.push("Hello \u0644\u0645\u0646\u0647");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	editor.setText(lines.join("\r\n"));
                                  -}
                                  -
                                  -function test() {
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -<h1>Orion Editor Demo</h1>
                                  -
                                  -<table width="100%">
                                  -<tr>
                                  -<th>Editor</th>
                                  -<th>Console</th>
                                  -</tr>
                                  -<tr>
                                  -<td width="100%">
                                  -<div id='divParent' style='border: 1px solid teal;width:100%;height:650px;'>
                                  -Create the editor by clicking one of the buttons at the bottom.
                                  -</div>
                                  -</td>
                                  -<td>
                                  -<div id='divParent' style='border: 1px solid teal;width:300px;height:650px;'>
                                  -<iframe id='console' frameBorder="0" style="width:100%;height:100%;"></iframe>
                                  -</div>
                                  -</td>
                                  -</tr>
                                  -</table>
                                  -<span onclick='createJavaSample()' style='border: 2px dotted orange; padding: 0 2 0 2'>Java file</span>
                                  -<span onclick='createJavaScriptSample()' style='border: 2px dotted orange; padding: 0 2 0 2'>JavaScript file</span>
                                  -<span onclick='createPlainTextSample()' style='border: 2px dotted orange; padding: 0 2 0 2'>Plain Text</span>
                                  -<span onclick='createBidiTextSample()' style='border: 2px dotted orange; padding: 0 2 0 2'>Bidi Text</span> |
                                  -<span onclick='clearLog()'>ClearConsole</span> |
                                  -<span onclick='test()'>test</span>
                                  -<span onclick='new PerformanceTestCase().test_pageDownScrolling()' style='border: 2px dotted orange; padding: 0 2 0 2'>PageDown Scroll</span>
                                  -<span onclick='new PerformanceTestCase().test_pageUpScrolling()' style='border: 2px dotted orange; padding: 0 2 0 2'>PageUp Scroll</span>
                                  -<span onclick='new PerformanceTestCase().test_lineDownScrolling()' style='border: 2px dotted orange; padding: 0 2 0 2'>LineDown Scroll</span>
                                  -<span onclick='new PerformanceTestCase().test_lineUpScrolling()' style='border: 2px dotted orange; padding: 0 2 0 2'>LineUp Scroll</span>
                                  -
                                  -<br>
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/editor.css b/branches/flexBox/sandbox/sandbox/orion/samples/editor.css
                                  deleted file mode 100644
                                  index 1a3a6f5a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/editor.css
                                  +++ /dev/null
                                  @@ -1,93 +0,0 @@
                                  -.editor {
                                  -	background-color: white;
                                  -}
                                  -
                                  -.editorContainer {
                                  -	font-family: monospace;
                                  -	font-size: 10pt;
                                  -}
                                  -
                                  -.editorContent {
                                  -}
                                  -
                                  -.token_comment {
                                  -	color: green;
                                  -}
                                  -
                                  -.token_javadoc {
                                  -	color: #00008F;
                                  -}
                                  -
                                  -.token_string {
                                  -	color: blue;
                                  -}
                                  -
                                  -.token_keyword {
                                  -	color: darkred;
                                  -	font-weight: bold;
                                  -}
                                  -
                                  -.token_bracket_outline {
                                  -	outline: 1px solid red;
                                  -}
                                  -
                                  -.token_bracket {
                                  -	color: white;
                                  -	background-color: grey;
                                  -}
                                  -
                                  -.token_space {
                                  -	background-image: url('/editor/samples/space.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: center center;
                                  -}
                                  -
                                  -.token_tab {
                                  -	background-image: url('/editor/samples/tab.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: left center;
                                  -}
                                  -
                                  -.line_caret {
                                  -	background-color: #EAF2FE;
                                  -}
                                  -
                                  -.ruler_annotation {
                                  -	background-color: #e1ebfb;
                                  -	width: 16px;
                                  -}
                                  -
                                  -.ruler_annotation_todo {
                                  -}
                                  -
                                  -.ruler_annotation_todo_overview {
                                  -	background-color: lightgreen;
                                  -	border: 1px solid green;
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint {
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint_overview {
                                  -	background-color: lightblue;
                                  -	border: 1px solid blue;
                                  -}
                                  -
                                  -.ruler_lines {
                                  -	background-color: #e1ebfb;
                                  -	border-right: 1px solid #b1badf;
                                  -	text-align: right;
                                  -}
                                  -
                                  -.ruler_overview {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_even {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_odd {
                                  -	background-color: white;
                                  -}
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/rulers.js b/branches/flexBox/sandbox/sandbox/orion/samples/rulers.js
                                  deleted file mode 100644
                                  index 1d0b86da..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/rulers.js
                                  +++ /dev/null
                                  @@ -1,208 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.Ruler = (function() {
                                  -	function Ruler (rulerLocation, rulerOverview, rulerStyle) {
                                  -		this._location = rulerLocation || "left";
                                  -		this._overview = rulerOverview || "page";
                                  -		this._rulerStyle = rulerStyle;
                                  -		this._editor = null;
                                  -	}
                                  -	Ruler.prototype = {
                                  -		setEditor: function (editor) {
                                  -			if (this._onModelChanged && this._editor) {
                                  -				this._editor.removeEventListener("ModelChanged", this, this._onModelChanged); 
                                  -			}
                                  -			this._editor = editor;
                                  -			if (this._onModelChanged && this._editor) {
                                  -				this._editor.addEventListener("ModelChanged", this, this._onModelChanged);
                                  -			}
                                  -		},
                                  -		getLocation: function() {
                                  -			return this._location;
                                  -		},
                                  -		getOverview: function(editor) {
                                  -			return this._overview;
                                  -		}
                                  -	};
                                  -	return Ruler;
                                  -}());
                                  -
                                  -eclipse.LineNumberRuler = (function() {
                                  -	function LineNumberRuler (rulerLocation, rulerStyle, oddStyle, evenStyle) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle);
                                  -		this._oddStyle = oddStyle || {style: {backgroundColor: "white"}};
                                  -		this._evenStyle = evenStyle || {style: {backgroundColor: "white"}};
                                  -		this._numOfDigits = 0;
                                  -	}
                                  -	LineNumberRuler.prototype = new eclipse.Ruler(); 
                                  -	LineNumberRuler.prototype.getStyle = function(lineIndex) {
                                  -		if (lineIndex === undefined) {
                                  -			return this._rulerStyle;
                                  -		} else {
                                  -			return lineIndex & 1 ? this._oddStyle : this._evenStyle;
                                  -		}
                                  -	};
                                  -	LineNumberRuler.prototype.getHTML = function(lineIndex) {
                                  -		if (lineIndex === -1) {
                                  -			var model = this._editor.getModel();
                                  -			return model.getLineCount();
                                  -		} else {
                                  -			return lineIndex + 1;
                                  -		}
                                  -	};
                                  -	LineNumberRuler.prototype._onModelChanged = function(e) {
                                  -		var start = e.start;
                                  -		var model = this._editor.getModel();
                                  -		var lineCount = model.getLineCount();
                                  -		var numOfDigits = (lineCount+"").length;
                                  -		if (this._numOfDigits !== numOfDigits) {
                                  -			this._numOfDigits = numOfDigits;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			this._editor.redrawLines(startLine, lineCount, this);
                                  -		}
                                  -	};
                                  -	return LineNumberRuler;
                                  -}());
                                  -
                                  -eclipse.AnnotationRuler = (function() {
                                  -	function AnnotationRuler (rulerLocation, rulerStyle, defaultAnnotation) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle);
                                  -		this._defaultAnnotation = defaultAnnotation;
                                  -		this._annotations = [];
                                  -	}
                                  -	AnnotationRuler.prototype = new eclipse.Ruler();
                                  -	AnnotationRuler.prototype.clearAnnotations = function() {
                                  -		this._annotations = [];
                                  -		var lineCount = this._editor.getModel().getLineCount();
                                  -		this._editor.redrawLines(0, lineCount, this);
                                  -		if (this._overviewRuler) {
                                  -			this._editor.redrawLines(0, lineCount, this._overviewRuler);
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.getAnnotation = function(lineIndex) {
                                  -		return this._annotations[lineIndex];
                                  -	};
                                  -	AnnotationRuler.prototype.getAnnotations = function() {
                                  -		return this._annotations;
                                  -	};
                                  -	AnnotationRuler.prototype.getStyle = function(lineIndex) {
                                  -		switch (lineIndex) {
                                  -			case undefined:
                                  -				return this._rulerStyle;
                                  -			case -1:
                                  -				return this._defaultAnnotation ? this._defaultAnnotation.style : null;
                                  -			default:
                                  -				return this._annotations[lineIndex] && this._annotations[lineIndex].style ? this._annotations[lineIndex].style : null;
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.getHTML = function(lineIndex) {
                                  -		if (lineIndex === -1) {
                                  -			return this._defaultAnnotation ? this._defaultAnnotation.html : "";
                                  -		} else {
                                  -			return this._annotations[lineIndex] && this._annotations[lineIndex].html ? this._annotations[lineIndex].html : "";
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.setAnnotation = function(lineIndex, annotation) {
                                  -		if (lineIndex === undefined) { return; }
                                  -		this._annotations[lineIndex] = annotation;
                                  -		this._editor.redrawLines(lineIndex, lineIndex + 1, this);
                                  -		if (this._overviewRuler) {
                                  -			this._editor.redrawLines(lineIndex, lineIndex + 1, this._overviewRuler);
                                  -		}
                                  -	};
                                  	AnnotationRuler.prototype._onModelChanged = function(e) {
                                  -		var start = e.start;
                                  -		var removedLineCount = e.removedLineCount;
                                  -		var addedLineCount = e.addedLineCount;
                                  -		var linesChanged = addedLineCount - removedLineCount;
                                  -		if (linesChanged) {
                                  -			var model = this._editor.getModel();
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var newLines = [], lines = this._annotations;
                                  -			var changed = false;
                                  -			for (var prop in lines) {
                                  -				var i = prop >>> 0;
                                  -				if (!(startLine < i && i < startLine + removedLineCount)) {
                                  -					var newIndex = i;
                                  -					if (i > startLine) {
                                  -						newIndex += linesChanged;
                                  -						changed = true;
                                  					}
                                  -					newLines[newIndex] = lines[i];
                                  -				} else {
                                  -					changed = true;
                                  -				}
                                  -			}
                                  -			this._annotations = newLines;
                                  -			if (changed) {
                                  -				var lineCount = model.getLineCount();
                                  -				this._editor.redrawLines(startLine, lineCount, this);
                                  -				//TODO redraw overview (batch it for performance)
                                  -				if (this._overviewRuler) {
                                  -					this._editor.redrawLines(0, lineCount, this._overviewRuler);
                                  -				}
                                  -			}
                                  -		}
                                  -	};
                                  -	return AnnotationRuler;
                                  -}());
                                  -
                                  -eclipse.OverviewRuler = (function() {
                                  -	function OverviewRuler (rulerLocation, rulerStyle, annotationRuler) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "document", rulerStyle);
                                  -		this._annotationRuler = annotationRuler;
                                  -		if (annotationRuler) {
                                  -			annotationRuler._overviewRuler = this;
                                  -		}
                                  -	}
                                  -	OverviewRuler.prototype = new eclipse.Ruler();
                                  -	OverviewRuler.prototype.getAnnotations = function() {
                                  -		var annotations = this._annotationRuler.getAnnotations();
                                  -		var lines = [];
                                  -		for (var prop in annotations) {
                                  -			var i = prop >>> 0;
                                  -			if (annotations[i] !== undefined) {
                                  -				lines.push(i);
                                  -			}
                                  -		}
                                  -		return lines;
                                  -	};
                                  -	OverviewRuler.prototype.getStyle = function(lineIndex) {
                                  -		var result, style;
                                  -		if (lineIndex === undefined) {
                                  -			result = this._rulerStyle || {};
                                  -			style = result.style || (result.style = {});
                                  -			style.lineHeight = "1px";
                                  -			style.fontSize = "1px";
                                  -			style.width = "14px";
                                  -		} else {
                                  -			if (lineIndex !== -1) {
                                  -				var annotation = this._annotationRuler.getAnnotation(lineIndex);
                                  -				result = annotation.overviewStyle || {};
                                  -			} else {
                                  -				result = {};
                                  -			}
                                  -			style = result.style || (result.style = {});
                                  -			style.cursor = "pointer";
                                  -			style.width = "8px";
                                  -			style.height = "3px";
                                  -			style.left = "2px";
                                  -		}
                                  -		return result;
                                  -	};
                                  -	OverviewRuler.prototype.getHTML = function(lineIndex) {
                                  -		return "&nbsp;";
                                  -	};
                                  -	OverviewRuler.prototype.onClick = function(lineIndex, e) {
                                  -		if (lineIndex === undefined) { return; }
                                  -		this._editor.setTopIndex(lineIndex);
                                  -	};
                                  -	return OverviewRuler;
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/space.png b/branches/flexBox/sandbox/sandbox/orion/samples/space.png
                                  deleted file mode 100644
                                  index 9cb0a47d..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion/samples/space.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/styler.js b/branches/flexBox/sandbox/sandbox/orion/samples/styler.js
                                  deleted file mode 100644
                                  index 7416af74..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/styler.js
                                  +++ /dev/null
                                  @@ -1,704 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global document window navigator */
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.TextStyler = (function() {
                                  -
                                  -	var JS_KEYWORDS =
                                  -		["break", "continue", "do", "for", /*"import",*/ "new", "this", /*"void",*/ 
                                  -		 "case", "default", "else", "function", "in", "return", "typeof", "while",
                                  -		 "comment", "delete", "export", "if", /*"label",*/ "switch", "var", "with",
                                  -		 "abstract", "implements", "protected", /*"boolean",*/ /*"instanceOf",*/ "public", 
                                  -		 /*"byte", "int", "short", "char",*/ "interface", "static", 
                                  -		 /*"double", "long",*/ "synchronized", "false", /*"native",*/ "throws", 
                                  -		 "final", "null", "transient", /*"float",*/ "package", "true", 
                                  -		 "goto", "private", "catch", "enum", "throw", "class", "extends", "try", 
                                  -		 "const", "finally", "debugger", "super", "undefined"];
                                  -
                                  -	var JAVA_KEYWORDS =
                                  -		["abstract",
                                  -		 "boolean", "break", "byte",
                                  -		 "case", "catch", "char", "class", "continue",
                                  -		 "default", "do", "double",
                                  -		 "else", "extends",
                                  -		 "false", "final", "finally", "float", "for",
                                  -		 "if", "implements", "import", "instanceof", "int", "interface",
                                  -		 "long",
                                  -		 "native", "new", "null",
                                  -		 "package", "private", "protected", "public",
                                  -		 "return",
                                  -		 "short", "static", "super", "switch", "synchronized",
                                  -		 "this", "throw", "throws", "transient", "true", "try",
                                  -		 "void", "volatile",
                                  -		 "while"];
                                  -
                                  -	var CSS_KEYWORDS =
                                  -		["color", "text-align", "text-indent", "text-decoration", 
                                  -		 "font", "font-style", "font-family", "font-weight", "font-size", "font-variant", "line-height",
                                  -		 "background", "background-color", "background-image", "background-position", "background-repeat", "background-attachment",
                                  -		 "list-style", "list-style-image", "list-style-position", "list-style-type", 
                                  -		 "outline", "outline-color", "outline-style", "outline-width",
                                  -		 "border", "border-left", "border-top", "border-bottom", "border-right", "border-color", "border-width", "border-style",
                                  -		 "border-bottom-color", "border-bottom-style", "border-bottom-width",
                                  -		 "border-left-color", "border-left-style", "border-left-width",
                                  -		 "border-top-color", "border-top-style", "border-top-width",
                                  -		 "border-right-color", "border-right-style", "border-right-width",
                                  -		 "padding", "padding-left", "padding-top", "padding-bottom", "padding-right",
                                  -		 "margin", "margin-left", "margin-top", "margin-bottom", "margin-right",
                                  -		 "width", "height", "left", "top", "right", "bottom",
                                  -		 "min-width", "max-width", "min-height", "max-height",
                                  -		 "display", "visibility",
                                  -		 "clip", "cursor", "overflow", "overflow-x", "overflow-y", "position", "z-index",
                                  -		 "vertical-align", "horizontal-align",
                                  -		 "float", "clear"
                                  -		];
                                  -
                                  -	// Scanner constants
                                  -	var UNKOWN = 1;
                                  -	var KEYWORD = 2;
                                  -	var STRING = 3;
                                  -	var COMMENT = 4;
                                  -	var WHITE = 5;
                                  -	var WHITE_TAB = 6;
                                  -	var WHITE_SPACE = 7;
                                  -
                                  -	// Styles 
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent);
                                  -	var commentStyle = {styleClass: "token_comment"};
                                  -	var javadocStyle = {styleClass: "token_javadoc"};
                                  -	var stringStyle = {styleClass: "token_string"};
                                  -	var keywordStyle = {styleClass: "token_keyword"};
                                  -	var spaceStyle = {styleClass: "token_space"};
                                  -	var tabStyle = {styleClass: "token_tab"};
                                  -	var bracketStyle = {styleClass: isIE ? "token_bracket" : "token_bracket_outline"};
                                  -	var caretLineStyle = {styleClass: "line_caret"};
                                  -	
                                  -	var Scanner = (function() {
                                  -		function Scanner (keywords, whitespacesVisible) {
                                  -			this.keywords = keywords;
                                  -			this.whitespacesVisible = whitespacesVisible;
                                  -			this.setText("");
                                  -		}
                                  -		
                                  -		Scanner.prototype = {
                                  -			getOffset: function() {
                                  -				return this.offset;
                                  -			},
                                  -			getStartOffset: function() {
                                  -				return this.startOffset;
                                  -			},
                                  -			getData: function() {
                                  -				return this.text.substring(this.startOffset, this.offset);
                                  -			},
                                  -			getDataLength: function() {
                                  -				return this.offset - this.startOffset;
                                  -			},
                                  -			_read: function() {
                                  -				if (this.offset < this.text.length) {
                                  -					return this.text.charCodeAt(this.offset++);
                                  -				}
                                  -				return -1;
                                  -			},
                                  -			_unread: function(c) {
                                  -				if (c !== -1) { this.offset--; }
                                  -			},
                                  -			nextToken: function() {
                                  -				this.startOffset = this.offset;
                                  -				while (true) {
                                  -					var c = this._read();
                                  -					switch (c) {
                                  -						case -1: return null;
                                  -						case 47:	// SLASH -> comment
                                  -							c = this._read();
                                  -							if (c === 47) {
                                  -								while (true) {
                                  -									c = this._read();
                                  -									if ((c === -1) || (c === 10)) {
                                  -										this._unread(c);
                                  -										return COMMENT;
                                  -									}
                                  -								}
                                  -							}
                                  -							this._unread(c);
                                  -							return UNKOWN;
                                  -						case 39:	// SINGLE QUOTE -> char const
                                  -							while(true) {
                                  -								c = this._read();
                                  -								switch (c) {
                                  -									case 39:
                                  -										return STRING;
                                  -									case -1:
                                  -										this._unread(c);
                                  -										return STRING;
                                  -									case 92: // BACKSLASH
                                  -										c = this._read();
                                  -										break;
                                  -								}
                                  -							}
                                  -							break;
                                  -						case 34:	// DOUBLE QUOTE -> string
                                  -							while(true) {
                                  -								c = this._read();
                                  -								switch (c) {
                                  -									case 34: // DOUBLE QUOTE
                                  -										return STRING;
                                  -									case -1:
                                  -										this._unread(c);
                                  -										return STRING;
                                  -									case 92: // BACKSLASH
                                  -										c = this._read();
                                  -										break;
                                  -								}
                                  -							}
                                  -							break;
                                  -						case 32: // SPACE
                                  -						case 9: // TAB
                                  -							if (this.whitespacesVisible) {
                                  -								return c === 32 ? WHITE_SPACE : WHITE_TAB;
                                  -							}
                                  -							do {
                                  -								c = this._read();
                                  -							} while(c === 32 || c === 9);
                                  -							this._unread(c);
                                  -							return WHITE;
                                  -						default:
                                  -							var isCSS = this.isCSS;
                                  -							if ((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)) { //LETTER OR UNDERSCORE OR NUMBER
                                  -								var off = this.offset - 1;
                                  -								do {
                                  -									c = this._read();
                                  -								} while((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS));  //LETTER OR UNDERSCORE OR NUMBER
                                  -								this._unread(c);
                                  -								var word = this.text.substring(off, this.offset);
                                  -								//TODO slow
                                  -								for (var i=0; i<this.keywords.length; i++) {
                                  -									if (this.keywords[i] === word) { return KEYWORD; }
                                  -								}
                                  -							}
                                  -							return UNKOWN;
                                  -					}
                                  -				}
                                  -			},
                                  -			setText: function(text) {
                                  -				this.text = text;
                                  -				this.offset = 0;
                                  -				this.startOffset = 0;
                                  -			}
                                  -		};
                                  -		return Scanner;
                                  -	}());
                                  -	
                                  -	var WhitespaceScanner = (function() {
                                  -		function WhitespaceScanner () {
                                  -			Scanner.call(this, null, true);
                                  -		}
                                  -		WhitespaceScanner.prototype = new Scanner(null);
                                  -		WhitespaceScanner.prototype.nextToken = function() {
                                  -			this.startOffset = this.offset;
                                  -			while (true) {
                                  -				var c = this._read();
                                  -				switch (c) {
                                  -					case -1: return null;
                                  -					case 32: // SPACE
                                  -						return WHITE_SPACE;
                                  -					case 9: // TAB
                                  -						return WHITE_TAB;
                                  -					default:
                                  -						do {
                                  -							c = this._read();
                                  -						} while(!(c === 32 || c === 9 || c === -1));
                                  -						this._unread(c);
                                  -						return UNKOWN;
                                  -				}
                                  -			}
                                  -		};
                                  -		
                                  -		return WhitespaceScanner;
                                  -	}());
                                  -	
                                  -	function TextStyler (editor, lang) {
                                  -		this.commentStart = "/*";
                                  -		this.commentEnd = "*/";
                                  -		var keywords = [];
                                  -		switch (lang) {
                                  -			case "java": keywords = JAVA_KEYWORDS; break;
                                  -			case "js": keywords = JS_KEYWORDS; break;
                                  -			case "css": keywords = CSS_KEYWORDS; break;
                                  -		}
                                  -		this.whitespacesVisible = false;
                                  -		this.highlightCaretLine = true;
                                  -		this._scanner = new Scanner(keywords, this.whitespacesVisible);
                                  -		//TODO this scanner is not the best/correct way to parse CSS
                                  -		if (lang === "css") {
                                  -			this._scanner.isCSS = true;
                                  -		}
                                  -		this._whitespaceScanner = new WhitespaceScanner();
                                  -		this.editor = editor;
                                  -		this.commentOffset = 0;
                                  -		this.commentOffsets = [];
                                  -		this._currentBracket = undefined; 
                                  -		this._matchingBracket = undefined;
                                  -		
                                  -		editor.addEventListener("Selection", this, this._onSelection);
                                  -		editor.addEventListener("ModelChanged", this, this._onModelChanged);
                                  -		editor.addEventListener("Destroy", this, this._onDestroy);
                                  -		editor.addEventListener("LineStyle", this, this._onLineStyle);
                                  -	}
                                  -	
                                  -	TextStyler.prototype = {
                                  -		destroy: function() {
                                  -			var editor = this.editor;
                                  -			if (editor) {
                                  -				editor.removeEventListener("Selection", this, this._onSelection);
                                  -				editor.removeEventListener("ModelChanged", this, this._onModelChanged);
                                  -				editor.removeEventListener("Destroy", this, this._onDestroy);
                                  -				editor.removeEventListener("LineStyle", this, this._onLineStyle);
                                  -				this.editor = null;
                                  -			}
                                  -		},
                                  -		setHighlightCaretLine: function(highlight) {
                                  -			this.highlightCaretLine = highlight;
                                  -		},
                                  -		setWhitespacesVisible: function(visible) {
                                  -			this.whitespacesVisible = visible;
                                  -			this._scanner.whitespacesVisible = visible;
                                  -		},
                                  -		_binarySearch: function(offsets, offset, low, high) {
                                  -			while (high - low > 2) {
                                  -				var index = (((high + low) >> 1) >> 1) << 1;
                                  -				var end = offsets[index + 1];
                                  -				if (end > offset) {
                                  -					high = index;
                                  -				} else {
                                  -					low = index;
                                  -				}
                                  -			}
                                  -			return high;
                                  -		},
                                  -		_computeComments: function(end) {
                                  -			// compute comments between commentOffset and end
                                  -			if (end <= this.commentOffset) { return; }
                                  -			var model = this.editor.getModel();
                                  -			var charCount = model.getCharCount();
                                  -			var e = end;
                                  -			// Uncomment to compute all comments
                                  -//			e = charCount;
                                  -			var t = /*start == this.commentOffset && e == end ? text : */model.getText(this.commentOffset, e);
                                  -			if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === charCount) {
                                  -				this.commentOffsets.length--;
                                  -			}
                                  -			var offset = 0;
                                  -			while (offset < t.length) {
                                  -				var begin = (this.commentOffsets.length & 1) === 0;
                                  -				var search = begin ? this.commentStart : this.commentEnd;
                                  -				var index = t.indexOf(search, offset);
                                  -				if (index !== -1) {
                                  -					this.commentOffsets.push(this.commentOffset + (begin ? index : index + search.length));
                                  -				} else {
                                  -					break;
                                  -				}
                                  -				offset = index + search.length;
                                  -			}
                                  -			if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); }
                                  -			this.commentOffset = e;
                                  -		},
                                  -		_getCommentRanges: function(start, end) {
                                  -			this._computeComments (end);
                                  -			var commentCount = this.commentOffsets.length;
                                  -			var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount);
                                  -			if (commentStart >= commentCount) { return []; }
                                  -			if (this.commentOffsets[commentStart] > end) { return []; }
                                  -			var commentEnd = Math.min(commentCount - 2, this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount));
                                  -			if (this.commentOffsets[commentEnd] > end) { commentEnd = Math.max(commentStart, commentEnd - 2); }
                                  -			return this.commentOffsets.slice(commentStart, commentEnd + 2);
                                  -		},
                                  -		_getLineStyle: function(lineIndex) {
                                  -			if (this.highlightCaretLine) {
                                  -				var editor = this.editor;
                                  -				var model = this.editor.getModel();
                                  -				var selection = editor.getSelection();
                                  -				if (selection.start === selection.end && model.getLineAtOffset(selection.start) === lineIndex) {
                                  -					return caretLineStyle;
                                  -				}
                                  -			}
                                  -			return null;
                                  -		},
                                  -		_getStyles: function(text, start) {
                                  -			var end = start + text.length;
                                  -			var model = this.editor.getModel();
                                  -			
                                  -			// get comment ranges that intersect with range
                                  -			var commentRanges = this._getCommentRanges (start, end);
                                  -			var styles = [];
                                  -			
                                  -			// for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc)
                                  -			var offset = start;
                                  -			for (var i = 0; i < commentRanges.length; i+= 2) {
                                  -				var commentStart = commentRanges[i];
                                  -				if (offset < commentStart) {
                                  -					this._parse(text.substring(offset - start, commentStart - start), offset, styles);
                                  -				}
                                  -				var style = commentStyle;
                                  -				if ((commentRanges[i+1] - commentStart) > (this.commentStart.length + this.commentEnd.length)) {
                                  -					var o = commentStart + this.commentStart.length;
                                  -					if (model.getText(o, o + 1) === "*") { style = javadocStyle; }
                                  -				}
                                  -				if (this.whitespacesVisible) {
                                  -					var s = Math.max(offset, commentStart);
                                  -					var e = Math.min(end, commentRanges[i+1]);
                                  -					this._parseWhitespace(text.substring(s - start, e - start), s, styles, style);
                                  -				} else {
                                  -					styles.push({start: commentRanges[i], end: commentRanges[i+1], style: style});
                                  -				}
                                  -				offset = commentRanges[i+1];
                                  -			}
                                  -			if (offset < end) {
                                  -				this._parse(text.substring(offset - start, end - start), offset, styles);
                                  -			}
                                  -			return styles;
                                  -		},
                                  -		_parse: function(text, offset, styles) {
                                  -			var scanner = this._scanner;
                                  -			scanner.setText(text);
                                  -			var token;
                                  -			while ((token = scanner.nextToken())) {
                                  -				var tokenStart = scanner.getStartOffset() + offset;
                                  -				var style = null;
                                  -				if (tokenStart === this._matchingBracket) {
                                  -					style = bracketStyle;
                                  -				} else {
                                  -					switch (token) {
                                  -						case KEYWORD: style = keywordStyle; break;
                                  -						case STRING:
                                  -							if (this.whitespacesVisible) {
                                  -								this._parseWhitespace(scanner.getData(), tokenStart, styles, stringStyle);
                                  -								continue;
                                  -							} else {
                                  -								style = stringStyle;
                                  -							}
                                  -							break;
                                  -						case COMMENT: 
                                  -							if (this.whitespacesVisible) {
                                  -								this._parseWhitespace(scanner.getData(), tokenStart, styles, commentStyle);
                                  -								continue;
                                  -							} else {
                                  -								style = commentStyle;
                                  -							}
                                  -							break;
                                  -						case WHITE_TAB:
                                  -							if (this.whitespacesVisible) {
                                  -								style = tabStyle;
                                  -							}
                                  -							break;
                                  -						case WHITE_SPACE:
                                  -							if (this.whitespacesVisible) {
                                  -								style = spaceStyle;
                                  -							}
                                  -							break;
                                  -					}
                                  -				}
                                  -				styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style});
                                  -			}
                                  -		},
                                  -		_parseWhitespace: function(text, offset, styles, s) {
                                  -			var scanner = this._whitespaceScanner;
                                  -			scanner.setText(text);
                                  -			var token;
                                  -			while ((token = scanner.nextToken())) {
                                  -				var tokenStart = scanner.getStartOffset() + offset;
                                  -				var style = s;
                                  -				switch (token) {
                                  -					case WHITE_TAB:
                                  -						style = tabStyle;
                                  -						break;
                                  -					case WHITE_SPACE:
                                  -						style = spaceStyle;
                                  -						break;
                                  -				}
                                  -				styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style});
                                  -			}
                                  -		},
                                  -		_findBrackets: function(bracket, closingBracket, text, textOffset, start, end) {
                                  -			var result = [];
                                  -			
                                  -			// get comment ranges that intersect with range
                                  -			var commentRanges = this._getCommentRanges (start, end);
                                  -			
                                  -			// for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc)
                                  -			var offset = start, scanner = this._scanner, token, tokenData;
                                  -			for (var i = 0; i < commentRanges.length; i+= 2) {
                                  -				var commentStart = commentRanges[i];
                                  -				if (offset < commentStart) {
                                  -					scanner.setText(text.substring(offset - start, commentStart - start));
                                  -					while ((token = scanner.nextToken())) {
                                  -						if (scanner.getDataLength() !== 1) { continue; }
                                  -						tokenData = scanner.getData();
                                  -						if (tokenData === bracket) {
                                  -							result.push(scanner.getStartOffset() + offset - start + textOffset);
                                  -						}
                                  -						if (tokenData === closingBracket) {
                                  -							result.push(-(scanner.getStartOffset() + offset - start + textOffset));
                                  -						}
                                  -					}
                                  -				}
                                  -				offset = commentRanges[i+1];
                                  -			}
                                  -			if (offset < end) {
                                  -				scanner.setText(text.substring(offset - start, end - start));
                                  -				while ((token = scanner.nextToken())) {
                                  -					if (scanner.getDataLength() !== 1) { continue; }
                                  -					tokenData = scanner.getData();
                                  -					if (tokenData === bracket) {
                                  -						result.push(scanner.getStartOffset() + offset - start + textOffset);
                                  -					}
                                  -					if (tokenData === closingBracket) {
                                  -						result.push(-(scanner.getStartOffset() + offset - start + textOffset));
                                  -					}
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		_onDestroy: function(e) {
                                  -			this.destroy();
                                  -		},
                                  -		_onLineStyle: function (e) {
                                  -			e.style = this._getLineStyle(e.lineIndex);
                                  -			e.ranges = this._getStyles(e.lineText, e.lineStart);
                                  -		},
                                  -		_onSelection: function(e) {
                                  -			var oldSelection = e.oldValue;
                                  -			var newSelection = e.newValue;
                                  -			var editor = this.editor;
                                  -			var model = editor.getModel();
                                  -			var lineIndex;
                                  -			if (this._matchingBracket !== undefined) {
                                  -				lineIndex = model.getLineAtOffset(this._matchingBracket);
                                  -				editor.redrawLines(lineIndex, lineIndex + 1);
                                  -				this._matchingBracket = this._currentBracket = undefined;
                                  -			}
                                  -			if (this.highlightCaretLine) {
                                  -				var oldLineIndex = model.getLineAtOffset(oldSelection.start);
                                  -				lineIndex = model.getLineAtOffset(newSelection.start);
                                  -				var newEmpty = newSelection.start === newSelection.end;
                                  -				var oldEmpty = oldSelection.start === oldSelection.end;
                                  -				if (!(oldLineIndex === lineIndex && oldEmpty && newEmpty)) {
                                  -					if (oldEmpty) {
                                  -						editor.redrawLines(oldLineIndex, oldLineIndex + 1);
                                  -					}
                                  -					if ((oldLineIndex !== lineIndex || !oldEmpty) && newEmpty) {
                                  -						editor.redrawLines(lineIndex, lineIndex + 1);
                                  -					}
                                  -				}
                                  -			}
                                  -			if (newSelection.start !== newSelection.end || newSelection.start === 0) {
                                  -				return;
                                  -			}
                                  -			var caret = editor.getCaretOffset();
                                  -			if (caret === 0) { return; }
                                  -			var brackets = "{}()[]<>";
                                  -			var bracket = model.getText(caret - 1, caret);
                                  -			var bracketIndex = brackets.indexOf(bracket, 0);
                                  -			if (bracketIndex === -1) { return; }
                                  -			var closingBracket;
                                  -			if (bracketIndex & 1) {
                                  -				closingBracket = brackets.substring(bracketIndex - 1, bracketIndex);
                                  -			} else {
                                  -				closingBracket = brackets.substring(bracketIndex + 1, bracketIndex + 2);
                                  -			}
                                  -			lineIndex = model.getLineAtOffset(caret);
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var lineEnd = model.getLineEnd(lineIndex);
                                  -			brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -			for (var i=0; i<brackets.length; i++) {
                                  -				var sign = brackets[i] >= 0 ? 1 : -1;
                                  -				if (brackets[i] * sign === caret - 1) {
                                  -					var level = 1;
                                  -					this._currentBracket = brackets[i] * sign;
                                  -					if (bracketIndex & 1) {
                                  -						i--;
                                  -						for (; i>=0; i--) {
                                  -							sign = brackets[i] >= 0 ? 1 : -1;
                                  -							level += sign;
                                  -							if (level === 0) {
                                  -								this._matchingBracket = brackets[i] * sign;
                                  -								editor.redrawLines(lineIndex, lineIndex + 1);
                                  -								return;
                                  -							}
                                  -						}
                                  -						lineIndex -= 1;
                                  -						while (lineIndex >= 0) {
                                  -							lineText = model.getLine(lineIndex);
                                  -							lineStart = model.getLineStart(lineIndex);
                                  -							lineEnd = model.getLineEnd(lineIndex);
                                  -							brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -							for (var j=brackets.length - 1; j>=0; j--) {
                                  -								sign = brackets[j] >= 0 ? 1 : -1;
                                  -								level += sign;
                                  -								if (level === 0) {
                                  -									this._matchingBracket = brackets[j] * sign;
                                  -									editor.redrawLines(lineIndex, lineIndex + 1);
                                  -									return;
                                  -								}
                                  -							}
                                  -							lineIndex--;
                                  -						}
                                  -					} else {
                                  -						i++;
                                  -						for (; i<brackets.length; i++) {
                                  -							sign = brackets[i] >= 0 ? 1 : -1;
                                  -							level += sign;
                                  -							if (level === 0) {
                                  -								this._matchingBracket = brackets[i] * sign;
                                  -								editor.redrawLines(lineIndex, lineIndex + 1);
                                  -								return;
                                  -							}
                                  -						}
                                  -						lineIndex += 1;
                                  -						var lineCount = model.getLineCount ();
                                  -						while (lineIndex < lineCount) {
                                  -							lineText = model.getLine(lineIndex);
                                  -							lineStart = model.getLineStart(lineIndex);
                                  -							lineEnd = model.getLineEnd(lineIndex);
                                  -							brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -							for (var k=0; k<brackets.length; k++) {
                                  -								sign = brackets[k] >= 0 ? 1 : -1;
                                  -								level += sign;
                                  -								if (level === 0) {
                                  -									this._matchingBracket = brackets[k] * sign;
                                  -									editor.redrawLines(lineIndex, lineIndex + 1);
                                  -									return;
                                  -								}
                                  -							}
                                  -							lineIndex++;
                                  -						}
                                  -					}
                                  -					break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_onModelChanged: function(e) {
                                  -			var start = e.start;
                                  -			var removedCharCount = e.removedCharCount;
                                  -			var addedCharCount = e.addedCharCount;
                                  -			if (this._matchingBracket && start < this._matchingBracket) { this._matchingBracket += addedCharCount + removedCharCount; }
                                  -			if (this._currentBracket && start < this._currentBracket) { this._currentBracket += addedCharCount + removedCharCount; }
                                  -			if (start >= this.commentOffset) { return; }
                                  -			var model = this.editor.getModel();
                                  -			
                                  -//			window.console.log("start=" + start + " added=" + addedCharCount + " removed=" + removedCharCount)
                                  -//			for (var i=0; i< this.commentOffsets.length; i++) {
                                  -//				window.console.log(i +"="+ this.commentOffsets[i]);
                                  -//			}
                                  -
                                  -			var commentCount = this.commentOffsets.length;
                                  -			var extra = Math.max(this.commentStart.length - 1, this.commentEnd.length - 1);
                                  -			if (commentCount === 0) {
                                  -				this.commentOffset = Math.max(0, start - extra);
                                  -				return;
                                  -			}
                                  -			var charCount = model.getCharCount();
                                  -			var oldCharCount = charCount - addedCharCount + removedCharCount;
                                  -			var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount);
                                  -			var end = start + removedCharCount;
                                  -			var commentEnd = this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount);
                                  -//			window.console.log("s=" + commentStart + " e=" + commentEnd);
                                  -			var ts;
                                  -			if (commentStart > 0) {
                                  -				ts = this.commentOffsets[--commentStart];
                                  -			} else {
                                  -				ts = Math.max(0, Math.min(this.commentOffsets[commentStart], start) - extra);
                                  -				--commentStart;
                                  -			}
                                  -			var te;
                                  -			var redrawEnd = charCount;
                                  -			if (commentEnd + 1 < this.commentOffsets.length) {
                                  -				te = this.commentOffsets[++commentEnd];
                                  -				if (end > (te - this.commentEnd.length)) {
                                  -					if (commentEnd + 2 < this.commentOffsets.length) { 
                                  -						commentEnd += 2;
                                  -						te = this.commentOffsets[commentEnd];
                                  -						redrawEnd = te + 1;
                                  -						if (redrawEnd > start) { redrawEnd += addedCharCount - removedCharCount; }
                                  -					} else {
                                  -						te = Math.min(oldCharCount, end + extra);
                                  -						this.commentOffset = te;
                                  -					}
                                  -				}
                                  -			} else {
                                  -				te = Math.min(oldCharCount, end + extra);
                                  -				this.commentOffset = te;
                                  -				if (commentEnd > 0 && commentEnd === this.commentOffsets.length) {
                                  -					commentEnd = this.commentOffsets.length - 1;
                                  -				}
                                  -			}
                                  -			if (ts > start) { ts += addedCharCount - removedCharCount; }
                                  -			if (te > start) { te += addedCharCount - removedCharCount; }
                                  -			
                                  -//			window.console.log("commentStart="+ commentStart + " commentEnd=" + commentEnd + " ts=" + ts + " te=" + te)
                                  -
                                  -			if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === oldCharCount) {
                                  -				this.commentOffsets.length--;
                                  -			}
                                  -			
                                  -			var offset = 0;
                                  -			var newComments = [];
                                  -			var t = model.getText(ts, te);
                                  -			if (this.commentOffset < te) { this.commentOffset = te; }
                                  -			while (offset < t.length) {
                                  -				var begin = ((commentStart + 1 + newComments.length) & 1) === 0;
                                  -				var search = begin ? this.commentStart : this.commentEnd;
                                  -				var index = t.indexOf(search, offset);
                                  -				if (index !== -1) {
                                  -					newComments.push(ts + (begin ? index : index + search.length));
                                  -				} else {
                                  -					break;
                                  -				}
                                  -				offset = index + search.length;
                                  -			}
                                  -//			window.console.log("lengths=" + newComments.length + " " + (commentEnd - commentStart) + " t=<" + t + ">")
                                  -//			for (var i=0; i< newComments.length; i++) {
                                  -//				window.console.log(i +"=>"+ newComments[i]);
                                  -//			}
                                  -			var redraw = (commentEnd - commentStart) !== newComments.length;
                                  -			if (!redraw) {
                                  -				for (var i=0; i<newComments.length; i++) {
                                  -					offset = this.commentOffsets[commentStart + 1 + i];
                                  -					if (offset > start) { offset += addedCharCount - removedCharCount; }
                                  -					if (offset !== newComments[i]) {
                                  -						redraw = true;
                                  -						break;
                                  -					} 
                                  -				}
                                  -			}
                                  -			
                                  -			var args = [commentStart + 1, (commentEnd - commentStart)].concat(newComments);
                                  -			Array.prototype.splice.apply(this.commentOffsets, args);
                                  -			for (var k=commentStart + 1 + newComments.length; k< this.commentOffsets.length; k++) {
                                  -				this.commentOffsets[k] += addedCharCount - removedCharCount;
                                  -			}
                                  -			
                                  -			if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); }
                                  -			
                                  -			if (redraw) {
                                  -//				window.console.log ("redraw " + (start + addedCharCount) + " " + redrawEnd);
                                  -				this.editor.redrawRange(start + addedCharCount, redrawEnd);
                                  -			}
                                  -
                                  -//			for (var i=0; i< this.commentOffsets.length; i++) {
                                  -//				window.console.log(i +"="+ this.commentOffsets[i]);
                                  -//			}
                                  -
                                  -		}
                                  -	};
                                  -	return TextStyler;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/styles.txt b/branches/flexBox/sandbox/sandbox/orion/samples/styles.txt
                                  deleted file mode 100644
                                  index 98677e34..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/styles.txt
                                  +++ /dev/null
                                  @@ -1,64602 +0,0 @@
                                  -0;80;0;false;false;63;95;191;;;
                                  -80;3;0;false;false;;;;;;
                                  -83;1;0;false;false;63;95;191;;;
                                  -84;1;0;false;false;;;;;;
                                  -85;9;0;false;false;63;95;191;;;
                                  -94;1;0;false;false;;;;;;
                                  -95;3;0;false;false;63;95;191;;;
                                  -98;1;0;false;false;;;;;;
                                  -99;5;0;false;false;63;95;191;;;
                                  -104;1;0;false;false;;;;;;
                                  -105;4;0;false;false;63;95;191;;;
                                  -109;1;0;false;false;;;;;;
                                  -110;3;0;false;false;63;95;191;;;
                                  -113;1;0;false;false;;;;;;
                                  -114;11;0;false;false;63;95;191;;;
                                  -125;1;0;false;false;;;;;;
                                  -126;3;0;false;false;63;95;191;;;
                                  -129;1;0;false;false;;;;;;
                                  -130;7;0;false;false;63;95;191;;;
                                  -137;3;0;false;false;;;;;;
                                  -140;1;0;false;false;63;95;191;;;
                                  -141;1;0;false;false;;;;;;
                                  -142;3;0;false;false;63;95;191;;;
                                  -145;1;0;false;false;;;;;;
                                  -146;6;0;false;false;63;95;191;;;
                                  -152;1;0;false;false;;;;;;
                                  -153;9;0;false;false;63;95;191;;;
                                  -162;1;0;false;false;;;;;;
                                  -163;4;0;false;false;63;95;191;;;
                                  -167;1;0;false;false;;;;;;
                                  -168;7;0;false;false;63;95;191;;;
                                  -175;1;0;false;false;;;;;;
                                  -176;3;0;false;false;63;95;191;;;
                                  -179;1;0;false;false;;;;;;
                                  -180;3;0;false;false;63;95;191;;;
                                  -183;1;0;false;false;;;;;;
                                  -184;12;0;false;false;63;95;191;;;
                                  -196;1;0;false;false;;;;;;
                                  -197;9;0;false;false;63;95;191;;;
                                  -206;3;0;false;false;;;;;;
                                  -209;1;0;false;false;63;95;191;;;
                                  -210;1;0;false;false;;;;;;
                                  -211;3;0;false;false;63;95;191;;;
                                  -214;1;0;false;false;;;;;;
                                  -215;4;0;false;false;63;95;191;;;
                                  -219;1;0;false;false;;;;;;
                                  -220;9;0;false;false;63;95;191;;;
                                  -229;1;0;false;false;;;;;;
                                  -230;5;0;false;false;63;95;191;;;
                                  -235;1;0;false;false;;;;;;
                                  -236;3;0;false;false;63;95;191;;;
                                  -239;1;0;false;false;;;;;;
                                  -240;5;0;false;false;63;95;191;;;
                                  -245;1;0;false;false;;;;;;
                                  -246;2;0;false;false;63;95;191;;;
                                  -248;1;0;false;false;;;;;;
                                  -249;3;0;false;false;63;95;191;;;
                                  -252;1;0;false;false;;;;;;
                                  -253;7;0;false;false;63;95;191;;;
                                  -260;1;0;false;false;;;;;;
                                  -261;6;0;false;false;63;95;191;;;
                                  -267;1;0;false;false;;;;;;
                                  -268;7;0;false;false;63;95;191;;;
                                  -275;1;0;false;false;;;;;;
                                  -276;4;0;false;false;63;95;191;;;
                                  -280;3;0;false;false;;;;;;
                                  -283;1;0;false;false;63;95;191;;;
                                  -284;1;0;false;false;;;;;;
                                  -285;5;0;false;false;63;95;191;;;
                                  -290;1;0;false;false;;;;;;
                                  -291;11;0;false;false;63;95;191;;;
                                  -302;1;0;false;false;;;;;;
                                  -303;4;0;false;false;63;95;191;;;
                                  -307;1;0;false;false;;;;;;
                                  -308;13;0;false;false;63;95;191;;;
                                  -321;1;0;false;false;;;;;;
                                  -322;3;0;false;false;63;95;191;;;
                                  -325;1;0;false;false;;;;;;
                                  -326;2;0;false;false;63;95;191;;;
                                  -328;1;0;false;false;;;;;;
                                  -329;9;0;false;false;63;95;191;;;
                                  -338;1;0;false;false;;;;;;
                                  -339;2;0;false;false;63;95;191;;;
                                  -341;3;0;false;false;;;;;;
                                  -344;1;0;false;false;63;95;191;;;
                                  -345;1;0;false;false;;;;;;
                                  -346;32;0;false;false;63;95;191;;;
                                  -378;1;0;false;false;127;127;159;;;
                                  -379;8;0;false;false;63;95;191;;;
                                  -387;3;0;false;false;;;;;;
                                  -390;1;0;false;false;63;95;191;;;
                                  -391;3;0;false;false;;;;;;
                                  -394;1;0;false;false;63;95;191;;;
                                  -395;1;0;false;false;;;;;;
                                  -396;13;0;false;false;63;95;191;;;
                                  -409;3;0;false;false;;;;;;
                                  -412;1;0;false;false;63;95;191;;;
                                  -413;5;0;false;false;;;;;;
                                  -418;3;0;false;false;63;95;191;;;
                                  -421;1;0;false;false;;;;;;
                                  -422;11;0;false;false;63;95;191;;;
                                  -433;1;0;false;false;;;;;;
                                  -434;1;0;false;false;127;127;159;;;
                                  -435;1;0;false;false;;;;;;
                                  -436;7;0;false;false;63;95;191;;;
                                  -443;1;0;false;false;;;;;;
                                  -444;3;0;false;false;63;95;191;;;
                                  -447;1;0;false;false;;;;;;
                                  -448;3;0;false;false;63;95;191;;;
                                  -451;1;0;false;false;;;;;;
                                  -452;14;0;false;false;63;95;191;;;
                                  -466;3;0;false;false;;;;;;
                                  -469;80;0;false;false;63;95;191;;;
                                  -549;2;0;false;false;;;;;;
                                  -551;7;1;false;false;127;0;85;;;
                                  -558;1;0;false;false;;;;;;
                                  -559;23;0;false;false;0;0;0;;;
                                  -582;6;0;false;false;;;;;;
                                  -588;6;1;false;false;127;0;85;;;
                                  -594;1;0;false;false;;;;;;
                                  -595;12;0;false;false;0;0;0;;;
                                  -607;4;0;false;false;;;;;;
                                  -611;6;1;false;false;127;0;85;;;
                                  -617;1;0;false;false;;;;;;
                                  -618;18;0;false;false;0;0;0;;;
                                  -636;2;0;false;false;;;;;;
                                  -638;6;1;false;false;127;0;85;;;
                                  -644;1;0;false;false;;;;;;
                                  -645;32;0;false;false;0;0;0;;;
                                  -677;2;0;false;false;;;;;;
                                  -679;6;1;false;false;127;0;85;;;
                                  -685;1;0;false;false;;;;;;
                                  -686;22;0;false;false;0;0;0;;;
                                  -708;2;0;false;false;;;;;;
                                  -710;6;1;false;false;127;0;85;;;
                                  -716;1;0;false;false;;;;;;
                                  -717;25;0;false;false;0;0;0;;;
                                  -742;2;0;false;false;;;;;;
                                  -744;6;1;false;false;127;0;85;;;
                                  -750;1;0;false;false;;;;;;
                                  -751;27;0;false;false;0;0;0;;;
                                  -778;2;0;false;false;;;;;;
                                  -780;6;1;false;false;127;0;85;;;
                                  -786;1;0;false;false;;;;;;
                                  -787;27;0;false;false;0;0;0;;;
                                  -814;2;0;false;false;;;;;;
                                  -816;6;1;false;false;127;0;85;;;
                                  -822;1;0;false;false;;;;;;
                                  -823;27;0;false;false;0;0;0;;;
                                  -850;2;0;false;false;;;;;;
                                  -852;6;1;false;false;127;0;85;;;
                                  -858;1;0;false;false;;;;;;
                                  -859;26;0;false;false;0;0;0;;;
                                  -885;4;0;false;false;;;;;;
                                  -889;3;0;false;false;63;95;191;;;
                                  -892;3;0;false;false;;;;;;
                                  -895;1;0;false;false;63;95;191;;;
                                  -896;1;0;false;false;;;;;;
                                  -897;1;0;false;false;63;95;191;;;
                                  -898;1;0;false;false;;;;;;
                                  -899;10;0;false;false;63;95;191;;;
                                  -909;1;0;false;false;;;;;;
                                  -910;2;0;false;false;63;95;191;;;
                                  -912;1;0;false;false;;;;;;
                                  -913;2;0;false;false;63;95;191;;;
                                  -915;1;0;false;false;;;;;;
                                  -916;8;0;false;false;63;95;191;;;
                                  -924;1;0;false;false;;;;;;
                                  -925;4;0;false;false;63;95;191;;;
                                  -929;1;0;false;false;;;;;;
                                  -930;9;0;false;false;63;95;191;;;
                                  -939;1;0;false;false;;;;;;
                                  -940;6;0;false;false;63;95;191;;;
                                  -946;1;0;false;false;;;;;;
                                  -947;4;0;false;false;63;95;191;;;
                                  -951;1;0;false;false;;;;;;
                                  -952;8;0;false;false;63;95;191;;;
                                  -960;1;0;false;false;;;;;;
                                  -961;5;0;false;false;63;95;191;;;
                                  -966;4;0;false;false;;;;;;
                                  -970;1;0;false;false;63;95;191;;;
                                  -971;1;0;false;false;;;;;;
                                  -972;2;0;false;false;63;95;191;;;
                                  -974;1;0;false;false;;;;;;
                                  -975;5;0;false;false;63;95;191;;;
                                  -980;2;0;false;false;;;;;;
                                  -982;3;0;false;false;63;95;191;;;
                                  -985;1;0;false;false;;;;;;
                                  -986;9;0;false;false;63;95;191;;;
                                  -995;1;0;false;false;;;;;;
                                  -996;5;0;false;false;63;95;191;;;
                                  -1001;1;0;false;false;;;;;;
                                  -1002;10;0;false;false;63;95;191;;;
                                  -1012;1;0;false;false;;;;;;
                                  -1013;3;0;false;false;63;95;191;;;
                                  -1016;1;0;false;false;;;;;;
                                  -1017;2;0;false;false;63;95;191;;;
                                  -1019;1;0;false;false;;;;;;
                                  -1020;7;0;false;false;63;95;191;;;
                                  -1027;1;0;false;false;;;;;;
                                  -1028;3;0;false;false;63;95;191;;;
                                  -1031;1;0;false;false;;;;;;
                                  -1032;3;0;false;false;63;95;191;;;
                                  -1035;1;0;false;false;;;;;;
                                  -1036;5;0;false;false;63;95;191;;;
                                  -1041;4;0;false;false;;;;;;
                                  -1045;1;0;false;false;63;95;191;;;
                                  -1046;1;0;false;false;;;;;;
                                  -1047;4;0;false;false;127;127;159;;;
                                  -1051;3;0;false;false;;;;;;
                                  -1054;1;0;false;false;63;95;191;;;
                                  -1055;1;0;false;false;;;;;;
                                  -1056;4;0;false;false;127;127;159;;;
                                  -1060;10;0;false;false;63;95;191;;;
                                  -1070;1;0;false;false;;;;;;
                                  -1071;5;0;false;false;63;95;191;;;
                                  -1076;4;0;false;false;;;;;;
                                  -1080;1;0;false;false;63;95;191;;;
                                  -1081;1;0;false;false;;;;;;
                                  -1082;4;0;false;false;127;127;159;;;
                                  -1086;10;0;false;false;63;95;191;;;
                                  -1096;1;0;false;false;;;;;;
                                  -1097;5;0;false;false;63;95;191;;;
                                  -1102;3;0;false;false;;;;;;
                                  -1105;1;0;false;false;63;95;191;;;
                                  -1106;1;0;false;false;;;;;;
                                  -1107;4;0;false;false;127;127;159;;;
                                  -1111;4;0;false;false;63;95;191;;;
                                  -1115;1;0;false;false;;;;;;
                                  -1116;5;0;false;false;63;95;191;;;
                                  -1121;1;0;false;false;;;;;;
                                  -1122;6;0;false;false;63;95;191;;;
                                  -1128;1;0;false;false;;;;;;
                                  -1129;7;0;false;false;63;95;191;;;
                                  -1136;1;0;false;false;;;;;;
                                  -1137;4;0;false;false;63;95;191;;;
                                  -1141;1;0;false;false;127;127;159;;;
                                  -1142;7;0;false;false;63;95;191;;;
                                  -1149;1;0;false;false;;;;;;
                                  -1150;8;0;false;false;63;95;191;;;
                                  -1158;3;0;false;false;;;;;;
                                  -1161;1;0;false;false;63;95;191;;;
                                  -1162;1;0;false;false;;;;;;
                                  -1163;4;0;false;false;127;127;159;;;
                                  -1167;9;0;false;false;63;95;191;;;
                                  -1176;3;0;false;false;;;;;;
                                  -1179;1;0;false;false;63;95;191;;;
                                  -1180;1;0;false;false;;;;;;
                                  -1181;4;0;false;false;127;127;159;;;
                                  -1185;9;0;false;false;63;95;191;;;
                                  -1194;3;0;false;false;;;;;;
                                  -1197;1;0;false;false;63;95;191;;;
                                  -1198;1;0;false;false;;;;;;
                                  -1199;5;0;false;false;127;127;159;;;
                                  -1204;3;0;false;false;;;;;;
                                  -1207;1;0;false;false;63;95;191;;;
                                  -1208;1;0;false;false;;;;;;
                                  -1209;3;0;false;false;127;127;159;;;
                                  -1212;3;0;false;false;;;;;;
                                  -1215;1;0;false;false;63;95;191;;;
                                  -1216;1;0;false;false;;;;;;
                                  -1217;2;0;false;false;63;95;191;;;
                                  -1219;1;0;false;false;;;;;;
                                  -1220;8;0;false;false;63;95;191;;;
                                  -1228;1;0;false;false;;;;;;
                                  -1229;2;0;false;false;63;95;191;;;
                                  -1231;1;0;false;false;;;;;;
                                  -1232;4;0;false;false;63;95;191;;;
                                  -1236;1;0;false;false;;;;;;
                                  -1237;5;0;false;false;63;95;191;;;
                                  -1242;1;0;false;false;;;;;;
                                  -1243;11;0;false;false;63;95;191;;;
                                  -1254;1;0;false;false;;;;;;
                                  -1255;3;0;false;false;63;95;191;;;
                                  -1258;1;0;false;false;;;;;;
                                  -1259;10;0;false;false;63;95;191;;;
                                  -1269;1;0;false;false;;;;;;
                                  -1270;5;0;false;false;63;95;191;;;
                                  -1275;1;0;false;false;;;;;;
                                  -1276;2;0;false;false;63;95;191;;;
                                  -1278;1;0;false;false;;;;;;
                                  -1279;1;0;false;false;63;95;191;;;
                                  -1280;1;0;false;false;;;;;;
                                  -1281;4;0;false;false;63;95;191;;;
                                  -1285;1;0;false;false;;;;;;
                                  -1286;3;0;false;false;63;95;191;;;
                                  -1289;4;0;false;false;;;;;;
                                  -1293;1;0;false;false;63;95;191;;;
                                  -1294;1;0;false;false;;;;;;
                                  -1295;2;0;false;false;63;95;191;;;
                                  -1297;1;0;false;false;;;;;;
                                  -1298;10;0;false;false;63;95;191;;;
                                  -1308;3;0;false;false;;;;;;
                                  -1311;1;0;false;false;63;95;191;;;
                                  -1312;1;0;false;false;;;;;;
                                  -1313;4;0;false;false;127;127;159;;;
                                  -1317;3;0;false;false;;;;;;
                                  -1320;1;0;false;false;63;95;191;;;
                                  -1321;1;0;false;false;;;;;;
                                  -1322;3;0;false;false;127;127;159;;;
                                  -1325;3;0;false;false;;;;;;
                                  -1328;1;0;false;false;63;95;191;;;
                                  -1329;1;0;false;false;;;;;;
                                  -1330;5;0;false;false;63;95;191;;;
                                  -1335;1;0;false;false;;;;;;
                                  -1336;3;0;false;false;63;95;191;;;
                                  -1339;1;0;false;false;;;;;;
                                  -1340;3;0;false;false;63;95;191;;;
                                  -1343;1;0;false;false;;;;;;
                                  -1344;4;0;false;false;63;95;191;;;
                                  -1348;1;0;false;false;;;;;;
                                  -1349;2;0;false;false;63;95;191;;;
                                  -1351;1;0;false;false;;;;;;
                                  -1352;3;0;false;false;63;95;191;;;
                                  -1355;1;0;false;false;;;;;;
                                  -1356;4;0;false;false;63;95;191;;;
                                  -1360;1;0;false;false;;;;;;
                                  -1361;6;0;false;false;63;95;191;;;
                                  -1367;1;0;false;false;;;;;;
                                  -1368;4;0;false;false;63;95;191;;;
                                  -1372;1;0;false;false;;;;;;
                                  -1373;10;0;false;false;63;95;191;;;
                                  -1383;1;0;false;false;;;;;;
                                  -1384;4;0;false;false;63;95;191;;;
                                  -1388;1;0;false;false;;;;;;
                                  -1389;5;0;false;false;63;95;191;;;
                                  -1394;1;0;false;false;;;;;;
                                  -1395;12;0;false;false;63;95;191;;;
                                  -1407;5;0;false;false;;;;;;
                                  -1412;1;0;false;false;63;95;191;;;
                                  -1413;1;0;false;false;;;;;;
                                  -1414;3;0;false;false;63;95;191;;;
                                  -1417;1;0;false;false;;;;;;
                                  -1418;3;0;false;false;63;95;191;;;
                                  -1421;1;0;false;false;;;;;;
                                  -1422;3;0;false;false;63;95;191;;;
                                  -1425;1;0;false;false;;;;;;
                                  -1426;3;0;false;false;63;95;191;;;
                                  -1429;1;0;false;false;;;;;;
                                  -1430;3;0;false;false;63;95;191;;;
                                  -1433;1;0;false;false;;;;;;
                                  -1434;4;0;false;false;63;95;191;;;
                                  -1438;1;0;false;false;;;;;;
                                  -1439;2;0;false;false;63;95;191;;;
                                  -1441;1;0;false;false;;;;;;
                                  -1442;7;0;false;false;63;95;191;;;
                                  -1449;1;0;false;false;;;;;;
                                  -1450;3;0;false;false;63;95;191;;;
                                  -1453;1;0;false;false;;;;;;
                                  -1454;10;0;false;false;63;95;191;;;
                                  -1464;1;0;false;false;;;;;;
                                  -1465;2;0;false;false;63;95;191;;;
                                  -1467;1;0;false;false;;;;;;
                                  -1468;3;0;false;false;63;95;191;;;
                                  -1471;1;0;false;false;;;;;;
                                  -1472;3;0;false;false;63;95;191;;;
                                  -1475;1;0;false;false;;;;;;
                                  -1476;6;0;false;false;63;95;191;;;
                                  -1482;1;0;false;false;;;;;;
                                  -1483;4;0;false;false;63;95;191;;;
                                  -1487;1;0;false;false;;;;;;
                                  -1488;3;0;false;false;63;95;191;;;
                                  -1491;4;0;false;false;;;;;;
                                  -1495;1;0;false;false;63;95;191;;;
                                  -1496;1;0;false;false;;;;;;
                                  -1497;18;0;false;false;63;95;191;;;
                                  -1515;2;0;false;false;;;;;;
                                  -1517;2;0;false;false;63;95;191;;;
                                  -1519;1;0;false;false;;;;;;
                                  -1520;3;0;false;false;63;95;191;;;
                                  -1523;1;0;false;false;;;;;;
                                  -1524;6;0;false;false;63;95;191;;;
                                  -1530;1;0;false;false;;;;;;
                                  -1531;4;0;false;false;63;95;191;;;
                                  -1535;1;0;false;false;;;;;;
                                  -1536;3;0;false;false;63;95;191;;;
                                  -1539;1;0;false;false;;;;;;
                                  -1540;9;0;false;false;63;95;191;;;
                                  -1549;1;0;false;false;;;;;;
                                  -1550;3;0;false;false;63;95;191;;;
                                  -1553;1;0;false;false;;;;;;
                                  -1554;4;0;false;false;63;95;191;;;
                                  -1558;1;0;false;false;;;;;;
                                  -1559;2;0;false;false;63;95;191;;;
                                  -1561;1;0;false;false;;;;;;
                                  -1562;11;0;false;false;63;95;191;;;
                                  -1573;4;0;false;false;;;;;;
                                  -1577;1;0;false;false;63;95;191;;;
                                  -1578;1;0;false;false;;;;;;
                                  -1579;3;0;false;false;63;95;191;;;
                                  -1582;1;0;false;false;;;;;;
                                  -1583;11;0;false;false;63;95;191;;;
                                  -1594;1;0;false;false;;;;;;
                                  -1595;3;0;false;false;63;95;191;;;
                                  -1598;1;0;false;false;;;;;;
                                  -1599;4;0;false;false;63;95;191;;;
                                  -1603;1;0;false;false;;;;;;
                                  -1604;5;0;false;false;63;95;191;;;
                                  -1609;1;0;false;false;;;;;;
                                  -1610;11;0;false;false;63;95;191;;;
                                  -1621;1;0;false;false;;;;;;
                                  -1622;3;0;false;false;63;95;191;;;
                                  -1625;1;0;false;false;;;;;;
                                  -1626;3;0;false;false;63;95;191;;;
                                  -1629;1;0;false;false;;;;;;
                                  -1630;7;0;false;false;63;95;191;;;
                                  -1637;2;0;false;false;;;;;;
                                  -1639;10;0;false;false;63;95;191;;;
                                  -1649;1;0;false;false;;;;;;
                                  -1650;3;0;false;false;63;95;191;;;
                                  -1653;1;0;false;false;;;;;;
                                  -1654;3;0;false;false;63;95;191;;;
                                  -1657;4;0;false;false;;;;;;
                                  -1661;1;0;false;false;63;95;191;;;
                                  -1662;1;0;false;false;;;;;;
                                  -1663;3;0;false;false;63;95;191;;;
                                  -1666;1;0;false;false;;;;;;
                                  -1667;6;0;false;false;63;95;191;;;
                                  -1673;1;0;false;false;;;;;;
                                  -1674;4;0;false;false;63;95;191;;;
                                  -1678;1;0;false;false;;;;;;
                                  -1679;3;0;false;false;63;95;191;;;
                                  -1682;1;0;false;false;;;;;;
                                  -1683;8;0;false;false;63;95;191;;;
                                  -1691;1;0;false;false;;;;;;
                                  -1692;3;0;false;false;63;95;191;;;
                                  -1695;1;0;false;false;;;;;;
                                  -1696;3;0;false;false;63;95;191;;;
                                  -1699;1;0;false;false;;;;;;
                                  -1700;3;0;false;false;63;95;191;;;
                                  -1703;1;0;false;false;;;;;;
                                  -1704;10;0;false;false;63;95;191;;;
                                  -1714;1;0;false;false;;;;;;
                                  -1715;4;0;false;false;63;95;191;;;
                                  -1719;2;0;false;false;;;;;;
                                  -1721;3;0;false;false;63;95;191;;;
                                  -1724;1;0;false;false;;;;;;
                                  -1725;9;0;false;false;63;95;191;;;
                                  -1734;3;0;false;false;;;;;;
                                  -1737;1;0;false;false;63;95;191;;;
                                  -1738;1;0;false;false;;;;;;
                                  -1739;10;0;false;false;63;95;191;;;
                                  -1749;1;0;false;false;;;;;;
                                  -1750;3;0;false;false;63;95;191;;;
                                  -1753;1;0;false;false;;;;;;
                                  -1754;2;0;false;false;63;95;191;;;
                                  -1756;1;0;false;false;;;;;;
                                  -1757;3;0;false;false;63;95;191;;;
                                  -1760;1;0;false;false;;;;;;
                                  -1761;9;0;false;false;63;95;191;;;
                                  -1770;1;0;false;false;;;;;;
                                  -1771;2;0;false;false;63;95;191;;;
                                  -1773;1;0;false;false;;;;;;
                                  -1774;3;0;false;false;63;95;191;;;
                                  -1777;1;0;false;false;;;;;;
                                  -1778;4;0;false;false;63;95;191;;;
                                  -1782;1;0;false;false;;;;;;
                                  -1783;7;0;false;false;63;95;191;;;
                                  -1790;1;0;false;false;;;;;;
                                  -1791;1;0;false;false;63;95;191;;;
                                  -1792;1;0;false;false;;;;;;
                                  -1793;18;0;false;false;63;95;191;;;
                                  -1811;3;0;false;false;;;;;;
                                  -1814;1;0;false;false;63;95;191;;;
                                  -1815;1;0;false;false;;;;;;
                                  -1816;4;0;false;false;127;127;159;;;
                                  -1820;3;0;false;false;;;;;;
                                  -1823;1;0;false;false;63;95;191;;;
                                  -1824;1;0;false;false;;;;;;
                                  -1825;4;0;false;false;127;127;159;;;
                                  -1829;26;0;false;false;63;95;191;;;
                                  -1855;3;0;false;false;;;;;;
                                  -1858;1;0;false;false;63;95;191;;;
                                  -1859;1;0;false;false;;;;;;
                                  -1860;4;0;false;false;127;127;159;;;
                                  -1864;16;0;false;false;63;95;191;;;
                                  -1880;3;0;false;false;;;;;;
                                  -1883;1;0;false;false;63;95;191;;;
                                  -1884;1;0;false;false;;;;;;
                                  -1885;4;0;false;false;127;127;159;;;
                                  -1889;40;0;false;false;63;95;191;;;
                                  -1929;3;0;false;false;;;;;;
                                  -1932;1;0;false;false;63;95;191;;;
                                  -1933;1;0;false;false;;;;;;
                                  -1934;4;0;false;false;127;127;159;;;
                                  -1938;25;0;false;false;63;95;191;;;
                                  -1963;3;0;false;false;;;;;;
                                  -1966;1;0;false;false;63;95;191;;;
                                  -1967;1;0;false;false;;;;;;
                                  -1968;4;0;false;false;127;127;159;;;
                                  -1972;28;0;false;false;63;95;191;;;
                                  -2000;3;0;false;false;;;;;;
                                  -2003;1;0;false;false;63;95;191;;;
                                  -2004;1;0;false;false;;;;;;
                                  -2005;5;0;false;false;127;127;159;;;
                                  -2010;3;0;false;false;;;;;;
                                  -2013;1;0;false;false;63;95;191;;;
                                  -2014;1;0;false;false;;;;;;
                                  -2015;4;0;false;false;127;127;159;;;
                                  -2019;3;0;false;false;;;;;;
                                  -2022;1;0;false;false;63;95;191;;;
                                  -2023;1;0;false;false;;;;;;
                                  -2024;3;0;false;false;127;127;159;;;
                                  -2027;3;0;false;false;;;;;;
                                  -2030;1;0;false;false;63;95;191;;;
                                  -2031;1;0;false;false;;;;;;
                                  -2032;5;0;false;false;63;95;191;;;
                                  -2037;1;0;false;false;;;;;;
                                  -2038;3;0;false;false;63;95;191;;;
                                  -2041;1;0;false;false;;;;;;
                                  -2042;3;0;false;false;63;95;191;;;
                                  -2045;1;0;false;false;;;;;;
                                  -2046;4;0;false;false;63;95;191;;;
                                  -2050;1;0;false;false;;;;;;
                                  -2051;2;0;false;false;63;95;191;;;
                                  -2053;1;0;false;false;;;;;;
                                  -2054;3;0;false;false;63;95;191;;;
                                  -2057;1;0;false;false;;;;;;
                                  -2058;4;0;false;false;63;95;191;;;
                                  -2062;1;0;false;false;;;;;;
                                  -2063;6;0;false;false;63;95;191;;;
                                  -2069;1;0;false;false;;;;;;
                                  -2070;4;0;false;false;63;95;191;;;
                                  -2074;1;0;false;false;;;;;;
                                  -2075;10;0;false;false;63;95;191;;;
                                  -2085;1;0;false;false;;;;;;
                                  -2086;4;0;false;false;63;95;191;;;
                                  -2090;1;0;false;false;;;;;;
                                  -2091;10;0;false;false;63;95;191;;;
                                  -2101;1;0;false;false;;;;;;
                                  -2102;7;0;false;false;63;95;191;;;
                                  -2109;3;0;false;false;;;;;;
                                  -2112;1;0;false;false;63;95;191;;;
                                  -2113;1;0;false;false;;;;;;
                                  -2114;3;0;false;false;63;95;191;;;
                                  -2117;1;0;false;false;;;;;;
                                  -2118;3;0;false;false;63;95;191;;;
                                  -2121;1;0;false;false;;;;;;
                                  -2122;3;0;false;false;63;95;191;;;
                                  -2125;1;0;false;false;;;;;;
                                  -2126;3;0;false;false;63;95;191;;;
                                  -2129;1;0;false;false;;;;;;
                                  -2130;3;0;false;false;63;95;191;;;
                                  -2133;1;0;false;false;;;;;;
                                  -2134;4;0;false;false;63;95;191;;;
                                  -2138;1;0;false;false;;;;;;
                                  -2139;2;0;false;false;63;95;191;;;
                                  -2141;1;0;false;false;;;;;;
                                  -2142;7;0;false;false;63;95;191;;;
                                  -2149;1;0;false;false;;;;;;
                                  -2150;3;0;false;false;63;95;191;;;
                                  -2153;1;0;false;false;;;;;;
                                  -2154;10;0;false;false;63;95;191;;;
                                  -2164;1;0;false;false;;;;;;
                                  -2165;2;0;false;false;63;95;191;;;
                                  -2167;1;0;false;false;;;;;;
                                  -2168;3;0;false;false;63;95;191;;;
                                  -2171;1;0;false;false;;;;;;
                                  -2172;3;0;false;false;63;95;191;;;
                                  -2175;1;0;false;false;;;;;;
                                  -2176;6;0;false;false;63;95;191;;;
                                  -2182;1;0;false;false;;;;;;
                                  -2183;4;0;false;false;63;95;191;;;
                                  -2187;1;0;false;false;;;;;;
                                  -2188;3;0;false;false;63;95;191;;;
                                  -2191;4;0;false;false;;;;;;
                                  -2195;1;0;false;false;63;95;191;;;
                                  -2196;1;0;false;false;;;;;;
                                  -2197;23;0;false;false;63;95;191;;;
                                  -2220;2;0;false;false;;;;;;
                                  -2222;2;0;false;false;63;95;191;;;
                                  -2224;1;0;false;false;;;;;;
                                  -2225;3;0;false;false;63;95;191;;;
                                  -2228;1;0;false;false;;;;;;
                                  -2229;6;0;false;false;63;95;191;;;
                                  -2235;1;0;false;false;;;;;;
                                  -2236;4;0;false;false;63;95;191;;;
                                  -2240;1;0;false;false;;;;;;
                                  -2241;3;0;false;false;63;95;191;;;
                                  -2244;1;0;false;false;;;;;;
                                  -2245;9;0;false;false;63;95;191;;;
                                  -2254;1;0;false;false;;;;;;
                                  -2255;3;0;false;false;63;95;191;;;
                                  -2258;1;0;false;false;;;;;;
                                  -2259;4;0;false;false;63;95;191;;;
                                  -2263;1;0;false;false;;;;;;
                                  -2264;2;0;false;false;63;95;191;;;
                                  -2266;1;0;false;false;;;;;;
                                  -2267;11;0;false;false;63;95;191;;;
                                  -2278;4;0;false;false;;;;;;
                                  -2282;1;0;false;false;63;95;191;;;
                                  -2283;1;0;false;false;;;;;;
                                  -2284;3;0;false;false;63;95;191;;;
                                  -2287;1;0;false;false;;;;;;
                                  -2288;11;0;false;false;63;95;191;;;
                                  -2299;1;0;false;false;;;;;;
                                  -2300;3;0;false;false;63;95;191;;;
                                  -2303;1;0;false;false;;;;;;
                                  -2304;4;0;false;false;63;95;191;;;
                                  -2308;1;0;false;false;;;;;;
                                  -2309;10;0;false;false;63;95;191;;;
                                  -2319;1;0;false;false;;;;;;
                                  -2320;5;0;false;false;63;95;191;;;
                                  -2325;1;0;false;false;;;;;;
                                  -2326;11;0;false;false;63;95;191;;;
                                  -2337;1;0;false;false;;;;;;
                                  -2338;3;0;false;false;63;95;191;;;
                                  -2341;1;0;false;false;;;;;;
                                  -2342;3;0;false;false;63;95;191;;;
                                  -2345;1;0;false;false;;;;;;
                                  -2346;7;0;false;false;63;95;191;;;
                                  -2353;5;0;false;false;;;;;;
                                  -2358;1;0;false;false;63;95;191;;;
                                  -2359;1;0;false;false;;;;;;
                                  -2360;10;0;false;false;63;95;191;;;
                                  -2370;1;0;false;false;;;;;;
                                  -2371;3;0;false;false;63;95;191;;;
                                  -2374;1;0;false;false;;;;;;
                                  -2375;3;0;false;false;63;95;191;;;
                                  -2378;1;0;false;false;;;;;;
                                  -2379;3;0;false;false;63;95;191;;;
                                  -2382;1;0;false;false;;;;;;
                                  -2383;6;0;false;false;63;95;191;;;
                                  -2389;1;0;false;false;;;;;;
                                  -2390;4;0;false;false;63;95;191;;;
                                  -2394;1;0;false;false;;;;;;
                                  -2395;3;0;false;false;63;95;191;;;
                                  -2398;1;0;false;false;;;;;;
                                  -2399;8;0;false;false;63;95;191;;;
                                  -2407;1;0;false;false;;;;;;
                                  -2408;3;0;false;false;63;95;191;;;
                                  -2411;1;0;false;false;;;;;;
                                  -2412;3;0;false;false;63;95;191;;;
                                  -2415;1;0;false;false;;;;;;
                                  -2416;3;0;false;false;63;95;191;;;
                                  -2419;1;0;false;false;;;;;;
                                  -2420;10;0;false;false;63;95;191;;;
                                  -2430;1;0;false;false;;;;;;
                                  -2431;4;0;false;false;63;95;191;;;
                                  -2435;5;0;false;false;;;;;;
                                  -2440;1;0;false;false;63;95;191;;;
                                  -2441;1;0;false;false;;;;;;
                                  -2442;3;0;false;false;63;95;191;;;
                                  -2445;1;0;false;false;;;;;;
                                  -2446;9;0;false;false;63;95;191;;;
                                  -2455;1;0;false;false;;;;;;
                                  -2456;10;0;false;false;63;95;191;;;
                                  -2466;1;0;false;false;;;;;;
                                  -2467;3;0;false;false;63;95;191;;;
                                  -2470;1;0;false;false;;;;;;
                                  -2471;2;0;false;false;63;95;191;;;
                                  -2473;1;0;false;false;;;;;;
                                  -2474;3;0;false;false;63;95;191;;;
                                  -2477;1;0;false;false;;;;;;
                                  -2478;9;0;false;false;63;95;191;;;
                                  -2487;1;0;false;false;;;;;;
                                  -2488;2;0;false;false;63;95;191;;;
                                  -2490;1;0;false;false;;;;;;
                                  -2491;3;0;false;false;63;95;191;;;
                                  -2494;1;0;false;false;;;;;;
                                  -2495;4;0;false;false;63;95;191;;;
                                  -2499;1;0;false;false;;;;;;
                                  -2500;7;0;false;false;63;95;191;;;
                                  -2507;1;0;false;false;;;;;;
                                  -2508;1;0;false;false;63;95;191;;;
                                  -2509;4;0;false;false;;;;;;
                                  -2513;1;0;false;false;63;95;191;;;
                                  -2514;1;0;false;false;;;;;;
                                  -2515;23;0;false;false;63;95;191;;;
                                  -2538;3;0;false;false;;;;;;
                                  -2541;1;0;false;false;63;95;191;;;
                                  -2542;1;0;false;false;;;;;;
                                  -2543;4;0;false;false;127;127;159;;;
                                  -2547;3;0;false;false;;;;;;
                                  -2550;1;0;false;false;63;95;191;;;
                                  -2551;1;0;false;false;;;;;;
                                  -2552;4;0;false;false;127;127;159;;;
                                  -2556;22;0;false;false;63;95;191;;;
                                  -2578;3;0;false;false;;;;;;
                                  -2581;1;0;false;false;63;95;191;;;
                                  -2582;1;0;false;false;;;;;;
                                  -2583;4;0;false;false;127;127;159;;;
                                  -2587;32;0;false;false;63;95;191;;;
                                  -2619;3;0;false;false;;;;;;
                                  -2622;1;0;false;false;63;95;191;;;
                                  -2623;1;0;false;false;;;;;;
                                  -2624;5;0;false;false;127;127;159;;;
                                  -2629;3;0;false;false;;;;;;
                                  -2632;1;0;false;false;63;95;191;;;
                                  -2633;1;0;false;false;;;;;;
                                  -2634;4;0;false;false;127;127;159;;;
                                  -2638;3;0;false;false;;;;;;
                                  -2641;1;0;false;false;63;95;191;;;
                                  -2642;1;0;false;false;;;;;;
                                  -2643;3;0;false;false;127;127;159;;;
                                  -2646;3;0;false;false;;;;;;
                                  -2649;1;0;false;false;63;95;191;;;
                                  -2650;1;0;false;false;;;;;;
                                  -2651;3;0;false;false;63;95;191;;;
                                  -2654;1;0;false;false;;;;;;
                                  -2655;7;0;false;false;63;95;191;;;
                                  -2662;1;0;false;false;;;;;;
                                  -2663;14;0;false;false;63;95;191;;;
                                  -2677;1;0;false;false;;;;;;
                                  -2678;3;0;false;false;63;95;191;;;
                                  -2681;1;0;false;false;;;;;;
                                  -2682;4;0;false;false;63;95;191;;;
                                  -2686;1;0;false;false;;;;;;
                                  -2687;6;0;false;false;63;95;191;;;
                                  -2693;1;0;false;false;;;;;;
                                  -2694;3;0;false;false;63;95;191;;;
                                  -2697;1;0;false;false;;;;;;
                                  -2698;4;0;false;false;63;95;191;;;
                                  -2702;1;0;false;false;;;;;;
                                  -2703;2;0;false;false;63;95;191;;;
                                  -2705;1;0;false;false;;;;;;
                                  -2706;4;0;false;false;63;95;191;;;
                                  -2710;1;0;false;false;127;127;159;;;
                                  -2711;8;0;false;false;63;95;191;;;
                                  -2719;2;0;false;false;;;;;;
                                  -2721;2;0;false;false;63;95;191;;;
                                  -2723;1;0;false;false;;;;;;
                                  -2724;2;0;false;false;63;95;191;;;
                                  -2726;1;0;false;false;;;;;;
                                  -2727;3;0;false;false;63;95;191;;;
                                  -2730;3;0;false;false;;;;;;
                                  -2733;1;0;false;false;63;95;191;;;
                                  -2734;1;0;false;false;;;;;;
                                  -2735;3;0;false;false;63;95;191;;;
                                  -2738;1;0;false;false;;;;;;
                                  -2739;4;0;false;false;63;95;191;;;
                                  -2743;1;0;false;false;;;;;;
                                  -2744;9;0;false;false;63;95;191;;;
                                  -2753;1;0;false;false;;;;;;
                                  -2754;3;0;false;false;63;95;191;;;
                                  -2757;1;0;false;false;;;;;;
                                  -2758;17;0;false;false;63;95;191;;;
                                  -2775;1;0;false;false;;;;;;
                                  -2776;9;0;false;false;63;95;191;;;
                                  -2785;1;0;false;false;;;;;;
                                  -2786;3;0;false;false;63;95;191;;;
                                  -2789;1;0;false;false;;;;;;
                                  -2790;3;0;false;false;63;95;191;;;
                                  -2793;1;0;false;false;;;;;;
                                  -2794;3;0;false;false;63;95;191;;;
                                  -2797;1;0;false;false;;;;;;
                                  -2798;10;0;false;false;63;95;191;;;
                                  -2808;1;0;false;false;;;;;;
                                  -2809;3;0;false;false;63;95;191;;;
                                  -2812;3;0;false;false;;;;;;
                                  -2815;1;0;false;false;63;95;191;;;
                                  -2816;1;0;false;false;;;;;;
                                  -2817;29;0;false;false;63;95;191;;;
                                  -2846;1;0;false;false;;;;;;
                                  -2847;2;0;false;false;63;95;191;;;
                                  -2849;1;0;false;false;;;;;;
                                  -2850;10;0;false;false;63;95;191;;;
                                  -2860;1;0;false;false;;;;;;
                                  -2861;3;0;false;false;63;95;191;;;
                                  -2864;1;0;false;false;;;;;;
                                  -2865;7;0;false;false;63;95;191;;;
                                  -2872;4;0;false;false;;;;;;
                                  -2876;1;0;false;false;63;95;191;;;
                                  -2877;1;0;false;false;;;;;;
                                  -2878;4;0;false;false;127;127;159;;;
                                  -2882;3;0;false;false;;;;;;
                                  -2885;1;0;false;false;63;95;191;;;
                                  -2886;1;0;false;false;;;;;;
                                  -2887;3;0;false;false;127;127;159;;;
                                  -2890;3;0;false;false;;;;;;
                                  -2893;1;0;false;false;63;95;191;;;
                                  -2894;1;0;false;false;;;;;;
                                  -2895;10;0;false;false;63;95;191;;;
                                  -2905;1;0;false;false;;;;;;
                                  -2906;4;0;false;false;63;95;191;;;
                                  -2910;1;0;false;false;;;;;;
                                  -2911;5;0;false;false;63;95;191;;;
                                  -2916;1;0;false;false;;;;;;
                                  -2917;2;0;false;false;63;95;191;;;
                                  -2919;1;0;false;false;;;;;;
                                  -2920;4;0;false;false;127;127;159;;;
                                  -2924;3;0;false;false;63;95;191;;;
                                  -2927;5;0;false;false;127;127;159;;;
                                  -2932;1;0;false;false;;;;;;
                                  -2933;8;0;false;false;63;95;191;;;
                                  -2941;1;0;false;false;;;;;;
                                  -2942;2;0;false;false;63;95;191;;;
                                  -2944;1;0;false;false;;;;;;
                                  -2945;2;0;false;false;63;95;191;;;
                                  -2947;1;0;false;false;;;;;;
                                  -2948;11;0;false;false;63;95;191;;;
                                  -2959;3;0;false;false;;;;;;
                                  -2962;1;0;false;false;63;95;191;;;
                                  -2963;1;0;false;false;;;;;;
                                  -2964;4;0;false;false;127;127;159;;;
                                  -2968;3;0;false;false;;;;;;
                                  -2971;1;0;false;false;63;95;191;;;
                                  -2972;1;0;false;false;;;;;;
                                  -2973;4;0;false;false;127;127;159;;;
                                  -2977;3;0;false;false;;;;;;
                                  -2980;1;0;false;false;63;95;191;;;
                                  -2981;1;0;false;false;;;;;;
                                  -2982;7;0;false;false;127;127;159;;;
                                  -2989;7;0;false;false;63;95;191;;;
                                  -2996;8;0;false;false;127;127;159;;;
                                  -3004;15;0;false;false;63;95;191;;;
                                  -3019;1;0;false;false;;;;;;
                                  -3020;6;0;false;false;63;95;191;;;
                                  -3026;1;0;false;false;;;;;;
                                  -3027;10;0;false;false;63;95;191;;;
                                  -3037;1;0;false;false;;;;;;
                                  -3038;7;0;false;false;63;95;191;;;
                                  -3045;1;0;false;false;;;;;;
                                  -3046;4;0;false;false;63;95;191;;;
                                  -3050;3;0;false;false;;;;;;
                                  -3053;1;0;false;false;63;95;191;;;
                                  -3054;1;0;false;false;;;;;;
                                  -3055;7;0;false;false;127;127;159;;;
                                  -3062;7;0;false;false;63;95;191;;;
                                  -3069;8;0;false;false;127;127;159;;;
                                  -3077;15;0;false;false;63;95;191;;;
                                  -3092;1;0;false;false;;;;;;
                                  -3093;18;0;false;false;63;95;191;;;
                                  -3111;1;0;false;false;;;;;;
                                  -3112;16;0;false;false;63;95;191;;;
                                  -3128;1;0;false;false;;;;;;
                                  -3129;13;0;false;false;63;95;191;;;
                                  -3142;1;0;false;false;;;;;;
                                  -3143;7;0;false;false;63;95;191;;;
                                  -3150;1;0;false;false;;;;;;
                                  -3151;10;0;false;false;63;95;191;;;
                                  -3161;1;0;false;false;;;;;;
                                  -3162;7;0;false;false;63;95;191;;;
                                  -3169;1;0;false;false;;;;;;
                                  -3170;9;0;false;false;63;95;191;;;
                                  -3179;3;0;false;false;;;;;;
                                  -3182;1;0;false;false;63;95;191;;;
                                  -3183;1;0;false;false;;;;;;
                                  -3184;5;0;false;false;127;127;159;;;
                                  -3189;3;0;false;false;;;;;;
                                  -3192;2;0;false;false;63;95;191;;;
                                  -3194;2;0;false;false;;;;;;
                                  -3196;6;1;false;false;127;0;85;;;
                                  -3202;1;0;false;false;;;;;;
                                  -3203;5;1;false;false;127;0;85;;;
                                  -3208;1;0;false;false;;;;;;
                                  -3209;10;0;false;false;0;0;0;;;
                                  -3219;1;0;false;false;;;;;;
                                  -3220;7;1;false;false;127;0;85;;;
                                  -3227;1;0;false;false;;;;;;
                                  -3228;6;0;false;false;0;0;0;;;
                                  -3234;1;0;false;false;;;;;;
                                  -3235;1;0;false;false;0;0;0;;;
                                  -3236;3;0;false;false;;;;;;
                                  -3239;6;1;false;false;127;0;85;;;
                                  -3245;1;0;false;false;;;;;;
                                  -3246;5;1;false;false;127;0;85;;;
                                  -3251;1;0;false;false;;;;;;
                                  -3252;4;1;false;false;127;0;85;;;
                                  -3256;1;0;false;false;;;;;;
                                  -3257;3;0;false;false;0;0;0;;;
                                  -3260;1;0;false;false;;;;;;
                                  -3261;1;0;false;false;0;0;0;;;
                                  -3262;1;0;false;false;;;;;;
                                  -3263;4;0;false;false;42;0;255;;;
                                  -3267;1;0;false;false;0;0;0;;;
                                  -3268;3;0;false;false;;;;;;
                                  -3271;6;1;false;false;127;0;85;;;
                                  -3277;1;0;false;false;;;;;;
                                  -3278;5;1;false;false;127;0;85;;;
                                  -3283;1;0;false;false;;;;;;
                                  -3284;6;0;false;false;0;0;0;;;
                                  -3290;1;0;false;false;;;;;;
                                  -3291;21;0;false;false;0;0;0;;;
                                  -3312;1;0;false;false;;;;;;
                                  -3313;1;0;false;false;0;0;0;;;
                                  -3314;1;0;false;false;;;;;;
                                  -3315;19;0;false;false;0;0;0;;;
                                  -3334;16;0;false;false;42;0;255;;;
                                  -3350;2;0;false;false;0;0;0;;;
                                  -3352;3;0;false;false;;;;;;
                                  -3355;6;1;false;false;127;0;85;;;
                                  -3361;1;0;false;false;;;;;;
                                  -3362;5;1;false;false;127;0;85;;;
                                  -3367;1;0;false;false;;;;;;
                                  -3368;3;1;false;false;127;0;85;;;
                                  -3371;1;0;false;false;;;;;;
                                  -3372;16;0;false;false;0;0;0;;;
                                  -3388;1;0;false;false;;;;;;
                                  -3389;1;0;false;false;0;0;0;;;
                                  -3390;1;0;false;false;;;;;;
                                  -3391;2;0;false;false;0;0;0;;;
                                  -3393;3;0;false;false;;;;;;
                                  -3396;6;1;false;false;127;0;85;;;
                                  -3402;1;0;false;false;;;;;;
                                  -3403;5;1;false;false;127;0;85;;;
                                  -3408;1;0;false;false;;;;;;
                                  -3409;3;1;false;false;127;0;85;;;
                                  -3412;1;0;false;false;;;;;;
                                  -3413;13;0;false;false;0;0;0;;;
                                  -3426;1;0;false;false;;;;;;
                                  -3427;1;0;false;false;0;0;0;;;
                                  -3428;1;0;false;false;;;;;;
                                  -3429;3;0;false;false;0;0;0;;;
                                  -3432;3;0;false;false;;;;;;
                                  -3435;6;1;false;false;127;0;85;;;
                                  -3441;1;0;false;false;;;;;;
                                  -3442;5;1;false;false;127;0;85;;;
                                  -3447;1;0;false;false;;;;;;
                                  -3448;3;1;false;false;127;0;85;;;
                                  -3451;1;0;false;false;;;;;;
                                  -3452;14;0;false;false;0;0;0;;;
                                  -3466;1;0;false;false;;;;;;
                                  -3467;1;0;false;false;0;0;0;;;
                                  -3468;1;0;false;false;;;;;;
                                  -3469;3;0;false;false;0;0;0;;;
                                  -3472;3;0;false;false;;;;;;
                                  -3475;6;1;false;false;127;0;85;;;
                                  -3481;1;0;false;false;;;;;;
                                  -3482;5;1;false;false;127;0;85;;;
                                  -3487;1;0;false;false;;;;;;
                                  -3488;3;1;false;false;127;0;85;;;
                                  -3491;1;0;false;false;;;;;;
                                  -3492;13;0;false;false;0;0;0;;;
                                  -3505;1;0;false;false;;;;;;
                                  -3506;1;0;false;false;0;0;0;;;
                                  -3507;1;0;false;false;;;;;;
                                  -3508;3;0;false;false;0;0;0;;;
                                  -3511;3;0;false;false;;;;;;
                                  -3514;6;1;false;false;127;0;85;;;
                                  -3520;1;0;false;false;;;;;;
                                  -3521;5;1;false;false;127;0;85;;;
                                  -3526;1;0;false;false;;;;;;
                                  -3527;3;1;false;false;127;0;85;;;
                                  -3530;1;0;false;false;;;;;;
                                  -3531;13;0;false;false;0;0;0;;;
                                  -3544;1;0;false;false;;;;;;
                                  -3545;1;0;false;false;0;0;0;;;
                                  -3546;1;0;false;false;;;;;;
                                  -3547;3;0;false;false;0;0;0;;;
                                  -3550;6;0;false;false;;;;;;
                                  -3556;6;1;false;false;127;0;85;;;
                                  -3562;1;0;false;false;;;;;;
                                  -3563;5;1;false;false;127;0;85;;;
                                  -3568;1;0;false;false;;;;;;
                                  -3569;3;1;false;false;127;0;85;;;
                                  -3572;1;0;false;false;;;;;;
                                  -3573;14;0;false;false;0;0;0;;;
                                  -3587;1;0;false;false;;;;;;
                                  -3588;1;0;false;false;0;0;0;;;
                                  -3589;1;0;false;false;;;;;;
                                  -3590;5;0;false;false;0;0;0;;;
                                  -3595;3;0;false;false;;;;;;
                                  -3598;6;1;false;false;127;0;85;;;
                                  -3604;1;0;false;false;;;;;;
                                  -3605;5;1;false;false;127;0;85;;;
                                  -3610;1;0;false;false;;;;;;
                                  -3611;3;1;false;false;127;0;85;;;
                                  -3614;1;0;false;false;;;;;;
                                  -3615;17;0;false;false;0;0;0;;;
                                  -3632;1;0;false;false;;;;;;
                                  -3633;1;0;false;false;0;0;0;;;
                                  -3634;1;0;false;false;;;;;;
                                  -3635;5;0;false;false;0;0;0;;;
                                  -3640;3;0;false;false;;;;;;
                                  -3643;6;1;false;false;127;0;85;;;
                                  -3649;1;0;false;false;;;;;;
                                  -3650;5;1;false;false;127;0;85;;;
                                  -3655;1;0;false;false;;;;;;
                                  -3656;3;1;false;false;127;0;85;;;
                                  -3659;1;0;false;false;;;;;;
                                  -3660;12;0;false;false;0;0;0;;;
                                  -3672;1;0;false;false;;;;;;
                                  -3673;1;0;false;false;0;0;0;;;
                                  -3674;1;0;false;false;;;;;;
                                  -3675;5;0;false;false;0;0;0;;;
                                  -3680;3;0;false;false;;;;;;
                                  -3683;6;1;false;false;127;0;85;;;
                                  -3689;1;0;false;false;;;;;;
                                  -3690;5;1;false;false;127;0;85;;;
                                  -3695;1;0;false;false;;;;;;
                                  -3696;3;1;false;false;127;0;85;;;
                                  -3699;1;0;false;false;;;;;;
                                  -3700;12;0;false;false;0;0;0;;;
                                  -3712;1;0;false;false;;;;;;
                                  -3713;1;0;false;false;0;0;0;;;
                                  -3714;1;0;false;false;;;;;;
                                  -3715;5;0;false;false;0;0;0;;;
                                  -3720;3;0;false;false;;;;;;
                                  -3723;6;1;false;false;127;0;85;;;
                                  -3729;1;0;false;false;;;;;;
                                  -3730;5;1;false;false;127;0;85;;;
                                  -3735;1;0;false;false;;;;;;
                                  -3736;3;1;false;false;127;0;85;;;
                                  -3739;1;0;false;false;;;;;;
                                  -3740;7;0;false;false;0;0;0;;;
                                  -3747;1;0;false;false;;;;;;
                                  -3748;1;0;false;false;0;0;0;;;
                                  -3749;1;0;false;false;;;;;;
                                  -3750;5;0;false;false;0;0;0;;;
                                  -3755;3;0;false;false;;;;;;
                                  -3758;6;1;false;false;127;0;85;;;
                                  -3764;1;0;false;false;;;;;;
                                  -3765;5;1;false;false;127;0;85;;;
                                  -3770;1;0;false;false;;;;;;
                                  -3771;3;1;false;false;127;0;85;;;
                                  -3774;1;0;false;false;;;;;;
                                  -3775;9;0;false;false;0;0;0;;;
                                  -3784;1;0;false;false;;;;;;
                                  -3785;1;0;false;false;0;0;0;;;
                                  -3786;1;0;false;false;;;;;;
                                  -3787;5;0;false;false;0;0;0;;;
                                  -3792;3;0;false;false;;;;;;
                                  -3795;6;1;false;false;127;0;85;;;
                                  -3801;1;0;false;false;;;;;;
                                  -3802;5;1;false;false;127;0;85;;;
                                  -3807;1;0;false;false;;;;;;
                                  -3808;3;1;false;false;127;0;85;;;
                                  -3811;1;0;false;false;;;;;;
                                  -3812;11;0;false;false;0;0;0;;;
                                  -3823;1;0;false;false;;;;;;
                                  -3824;1;0;false;false;0;0;0;;;
                                  -3825;1;0;false;false;;;;;;
                                  -3826;5;0;false;false;0;0;0;;;
                                  -3831;3;0;false;false;;;;;;
                                  -3834;6;1;false;false;127;0;85;;;
                                  -3840;1;0;false;false;;;;;;
                                  -3841;5;1;false;false;127;0;85;;;
                                  -3846;1;0;false;false;;;;;;
                                  -3847;3;1;false;false;127;0;85;;;
                                  -3850;1;0;false;false;;;;;;
                                  -3851;15;0;false;false;0;0;0;;;
                                  -3866;1;0;false;false;;;;;;
                                  -3867;1;0;false;false;0;0;0;;;
                                  -3868;1;0;false;false;;;;;;
                                  -3869;5;0;false;false;0;0;0;;;
                                  -3874;6;0;false;false;;;;;;
                                  -3880;5;0;false;false;0;0;0;;;
                                  -3885;1;0;false;false;;;;;;
                                  -3886;20;0;false;false;0;0;0;;;
                                  -3906;1;0;false;false;;;;;;
                                  -3907;31;0;false;false;63;127;95;;;
                                  -3938;1;0;false;false;;;;;;
                                  -3939;5;0;false;false;0;0;0;;;
                                  -3944;1;0;false;false;;;;;;
                                  -3945;20;0;false;false;0;0;0;;;
                                  -3965;1;0;false;false;;;;;;
                                  -3966;31;0;false;false;63;127;95;;;
                                  -3997;1;0;false;false;;;;;;
                                  -3998;17;0;false;false;0;0;0;;;
                                  -4015;1;0;false;false;;;;;;
                                  -4016;15;0;false;false;0;0;0;;;
                                  -4031;1;0;false;false;;;;;;
                                  -4032;47;0;false;false;63;127;95;;;
                                  -4079;1;0;false;false;;;;;;
                                  -4080;17;0;false;false;0;0;0;;;
                                  -4097;1;0;false;false;;;;;;
                                  -4098;8;0;false;false;0;0;0;;;
                                  -4106;3;0;false;false;;;;;;
                                  -4109;70;0;false;false;63;127;95;;;
                                  -4179;1;0;false;false;;;;;;
                                  -4180;15;0;false;false;0;0;0;;;
                                  -4195;1;0;false;false;;;;;;
                                  -4196;9;0;false;false;0;0;0;;;
                                  -4205;3;0;false;false;;;;;;
                                  -4208;8;0;false;false;0;0;0;;;
                                  -4216;1;0;false;false;;;;;;
                                  -4217;9;0;false;false;0;0;0;;;
                                  -4226;3;0;false;false;;;;;;
                                  -4229;18;0;false;false;0;0;0;;;
                                  -4247;1;0;false;false;;;;;;
                                  -4248;19;0;false;false;0;0;0;;;
                                  -4267;1;0;false;false;;;;;;
                                  -4268;85;0;false;false;63;127;95;;;
                                  -4353;1;0;false;false;;;;;;
                                  -4354;17;0;false;false;0;0;0;;;
                                  -4371;1;0;false;false;;;;;;
                                  -4372;18;0;false;false;0;0;0;;;
                                  -4390;67;0;false;false;63;127;95;;;
                                  -4457;1;0;false;false;;;;;;
                                  -4458;9;0;false;false;0;0;0;;;
                                  -4467;1;0;false;false;;;;;;
                                  -4468;10;0;false;false;0;0;0;;;
                                  -4478;3;0;false;false;;;;;;
                                  -4481;7;1;false;false;127;0;85;;;
                                  -4488;1;0;false;false;;;;;;
                                  -4489;13;0;false;false;0;0;0;;;
                                  -4502;1;0;false;false;;;;;;
                                  -4503;1;0;false;false;0;0;0;;;
                                  -4504;1;0;false;false;;;;;;
                                  -4505;5;1;false;false;127;0;85;;;
                                  -4510;1;0;false;false;0;0;0;;;
                                  -4511;2;0;false;false;;;;;;
                                  -4513;144;0;false;false;63;127;95;;;
                                  -4657;1;0;false;false;;;;;;
                                  -4658;7;1;false;false;127;0;85;;;
                                  -4665;1;0;false;false;;;;;;
                                  -4666;18;0;false;false;0;0;0;;;
                                  -4684;1;0;false;false;;;;;;
                                  -4685;1;0;false;false;0;0;0;;;
                                  -4686;1;0;false;false;;;;;;
                                  -4687;5;1;false;false;127;0;85;;;
                                  -4692;1;0;false;false;0;0;0;;;
                                  -4693;1;0;false;false;;;;;;
                                  -4694;159;0;false;false;63;127;95;;;
                                  -4853;1;0;false;false;;;;;;
                                  -4854;3;1;false;false;127;0;85;;;
                                  -4857;1;0;false;false;;;;;;
                                  -4858;20;0;false;false;0;0;0;;;
                                  -4878;1;0;false;false;;;;;;
                                  -4879;1;0;false;false;0;0;0;;;
                                  -4880;1;0;false;false;;;;;;
                                  -4881;2;0;false;false;0;0;0;;;
                                  -4883;2;0;false;false;;;;;;
                                  -4885;16;0;false;false;63;127;95;;;
                                  -4901;1;0;false;false;;;;;;
                                  -4902;3;1;false;false;127;0;85;;;
                                  -4905;1;0;false;false;;;;;;
                                  -4906;22;0;false;false;0;0;0;;;
                                  -4928;1;0;false;false;;;;;;
                                  -4929;1;0;false;false;0;0;0;;;
                                  -4930;1;0;false;false;;;;;;
                                  -4931;2;0;false;false;0;0;0;;;
                                  -4933;2;0;false;false;;;;;;
                                  -4935;16;0;false;false;63;127;95;;;
                                  -4951;1;0;false;false;;;;;;
                                  -4952;3;1;false;false;127;0;85;;;
                                  -4955;1;0;false;false;;;;;;
                                  -4956;8;0;false;false;0;0;0;;;
                                  -4964;1;0;false;false;;;;;;
                                  -4965;1;0;false;false;0;0;0;;;
                                  -4966;1;0;false;false;;;;;;
                                  -4967;2;0;false;false;0;0;0;;;
                                  -4969;5;0;false;false;;;;;;
                                  -4974;21;0;false;false;63;127;95;;;
                                  -4995;1;0;false;false;;;;;;
                                  -4996;3;1;false;false;127;0;85;;;
                                  -4999;1;0;false;false;;;;;;
                                  -5000;17;0;false;false;0;0;0;;;
                                  -5017;1;0;false;false;;;;;;
                                  -5018;1;0;false;false;0;0;0;;;
                                  -5019;1;0;false;false;;;;;;
                                  -5020;3;0;false;false;0;0;0;;;
                                  -5023;3;0;false;false;;;;;;
                                  -5026;3;1;false;false;127;0;85;;;
                                  -5029;1;0;false;false;;;;;;
                                  -5030;9;0;false;false;0;0;0;;;
                                  -5039;1;0;false;false;;;;;;
                                  -5040;1;0;false;false;0;0;0;;;
                                  -5041;1;0;false;false;;;;;;
                                  -5042;2;0;false;false;0;0;0;;;
                                  -5044;5;0;false;false;;;;;;
                                  -5049;42;0;false;false;63;127;95;;;
                                  -5091;1;0;false;false;;;;;;
                                  -5092;3;1;false;false;127;0;85;;;
                                  -5095;1;0;false;false;;;;;;
                                  -5096;16;0;false;false;0;0;0;;;
                                  -5112;1;0;false;false;;;;;;
                                  -5113;1;0;false;false;0;0;0;;;
                                  -5114;1;0;false;false;;;;;;
                                  -5115;2;0;false;false;0;0;0;;;
                                  -5117;3;0;false;false;;;;;;
                                  -5120;71;0;false;false;63;127;95;;;
                                  -5191;10;0;false;false;;;;;;
                                  -5201;41;0;false;false;63;127;95;;;
                                  -5242;1;0;false;false;;;;;;
                                  -5243;3;1;false;false;127;0;85;;;
                                  -5246;1;0;false;false;;;;;;
                                  -5247;15;0;false;false;0;0;0;;;
                                  -5262;1;0;false;false;;;;;;
                                  -5263;1;0;false;false;0;0;0;;;
                                  -5264;1;0;false;false;;;;;;
                                  -5265;2;0;false;false;0;0;0;;;
                                  -5267;3;0;false;false;;;;;;
                                  -5270;71;0;false;false;63;127;95;;;
                                  -5341;10;0;false;false;;;;;;
                                  -5351;42;0;false;false;63;127;95;;;
                                  -5393;1;0;false;false;;;;;;
                                  -5394;3;1;false;false;127;0;85;;;
                                  -5397;1;0;false;false;;;;;;
                                  -5398;11;0;false;false;0;0;0;;;
                                  -5409;6;0;false;false;;;;;;
                                  -5415;28;0;false;false;63;127;95;;;
                                  -5443;1;0;false;false;;;;;;
                                  -5444;3;1;false;false;127;0;85;;;
                                  -5447;1;0;false;false;;;;;;
                                  -5448;9;0;false;false;0;0;0;;;
                                  -5457;1;0;false;false;;;;;;
                                  -5458;1;0;false;false;0;0;0;;;
                                  -5459;1;0;false;false;;;;;;
                                  -5460;2;0;false;false;0;0;0;;;
                                  -5462;5;0;false;false;;;;;;
                                  -5467;34;0;false;false;63;127;95;;;
                                  -5501;1;0;false;false;;;;;;
                                  -5502;3;1;false;false;127;0;85;;;
                                  -5505;1;0;false;false;;;;;;
                                  -5506;11;0;false;false;0;0;0;;;
                                  -5517;3;0;false;false;;;;;;
                                  -5520;3;1;false;false;127;0;85;;;
                                  -5523;1;0;false;false;;;;;;
                                  -5524;10;0;false;false;0;0;0;;;
                                  -5534;3;0;false;false;;;;;;
                                  -5537;3;1;false;false;127;0;85;;;
                                  -5540;1;0;false;false;;;;;;
                                  -5541;12;0;false;false;0;0;0;;;
                                  -5553;3;0;false;false;;;;;;
                                  -5556;3;1;false;false;127;0;85;;;
                                  -5559;1;0;false;false;;;;;;
                                  -5560;13;0;false;false;0;0;0;;;
                                  -5573;3;0;false;false;;;;;;
                                  -5576;6;0;false;false;0;0;0;;;
                                  -5582;1;0;false;false;;;;;;
                                  -5583;12;0;false;false;0;0;0;;;
                                  -5595;5;0;false;false;;;;;;
                                  -5600;3;1;false;false;127;0;85;;;
                                  -5603;1;0;false;false;;;;;;
                                  -5604;8;0;false;false;0;0;0;;;
                                  -5612;7;0;false;false;;;;;;
                                  -5619;48;0;false;false;63;127;95;;;
                                  -5667;10;0;false;false;;;;;;
                                  -5677;46;0;false;false;63;127;95;;;
                                  -5723;1;0;false;false;;;;;;
                                  -5724;3;1;false;false;127;0;85;;;
                                  -5727;1;0;false;false;;;;;;
                                  -5728;11;0;false;false;0;0;0;;;
                                  -5739;1;0;false;false;;;;;;
                                  -5740;1;0;false;false;0;0;0;;;
                                  -5741;1;0;false;false;;;;;;
                                  -5742;2;0;false;false;0;0;0;;;
                                  -5744;3;0;false;false;;;;;;
                                  -5747;5;0;false;false;0;0;0;;;
                                  -5752;1;0;false;false;;;;;;
                                  -5753;9;0;false;false;0;0;0;;;
                                  -5762;1;0;false;false;;;;;;
                                  -5763;1;0;false;false;0;0;0;;;
                                  -5764;1;0;false;false;;;;;;
                                  -5765;3;1;false;false;127;0;85;;;
                                  -5768;1;0;false;false;;;;;;
                                  -5769;8;0;false;false;0;0;0;;;
                                  -5777;1;0;false;false;;;;;;
                                  -5778;3;0;false;false;0;0;0;;;
                                  -5781;1;0;false;false;;;;;;
                                  -5782;57;0;false;false;63;127;95;;;
                                  -5839;1;0;false;false;;;;;;
                                  -5840;5;0;false;false;0;0;0;;;
                                  -5845;1;0;false;false;;;;;;
                                  -5846;19;0;false;false;0;0;0;;;
                                  -5865;11;0;false;false;;;;;;
                                  -5876;66;0;false;false;63;127;95;;;
                                  -5942;1;0;false;false;;;;;;
                                  -5943;3;1;false;false;127;0;85;;;
                                  -5946;1;0;false;false;;;;;;
                                  -5947;16;0;false;false;0;0;0;;;
                                  -5963;4;0;false;false;;;;;;
                                  -5967;72;0;false;false;63;127;95;;;
                                  -6039;1;0;false;false;;;;;;
                                  -6040;5;0;false;false;0;0;0;;;
                                  -6045;1;0;false;false;;;;;;
                                  -6046;21;0;false;false;0;0;0;;;
                                  -6067;3;0;false;false;;;;;;
                                  -6070;44;0;false;false;63;127;95;;;
                                  -6114;1;0;false;false;;;;;;
                                  -6115;7;1;false;false;127;0;85;;;
                                  -6122;1;0;false;false;;;;;;
                                  -6123;8;0;false;false;0;0;0;;;
                                  -6131;1;0;false;false;;;;;;
                                  -6132;1;0;false;false;0;0;0;;;
                                  -6133;1;0;false;false;;;;;;
                                  -6134;4;1;false;false;127;0;85;;;
                                  -6138;1;0;false;false;0;0;0;;;
                                  -6139;3;0;false;false;;;;;;
                                  -6142;7;1;false;false;127;0;85;;;
                                  -6149;1;0;false;false;;;;;;
                                  -6150;8;0;false;false;0;0;0;;;
                                  -6158;1;0;false;false;;;;;;
                                  -6159;1;0;false;false;0;0;0;;;
                                  -6160;1;0;false;false;;;;;;
                                  -6161;5;1;false;false;127;0;85;;;
                                  -6166;1;0;false;false;0;0;0;;;
                                  -6167;3;0;false;false;;;;;;
                                  -6170;7;1;false;false;127;0;85;;;
                                  -6177;1;0;false;false;;;;;;
                                  -6178;18;0;false;false;0;0;0;;;
                                  -6196;1;0;false;false;;;;;;
                                  -6197;1;0;false;false;0;0;0;;;
                                  -6198;1;0;false;false;;;;;;
                                  -6199;4;1;false;false;127;0;85;;;
                                  -6203;1;0;false;false;0;0;0;;;
                                  -6204;1;0;false;false;;;;;;
                                  -6205;31;0;false;false;63;127;95;;;
                                  -6236;1;0;false;false;;;;;;
                                  -6237;7;1;false;false;127;0;85;;;
                                  -6244;1;0;false;false;;;;;;
                                  -6245;9;0;false;false;0;0;0;;;
                                  -6254;1;0;false;false;;;;;;
                                  -6255;1;0;false;false;0;0;0;;;
                                  -6256;1;0;false;false;;;;;;
                                  -6257;5;1;false;false;127;0;85;;;
                                  -6262;1;0;false;false;0;0;0;;;
                                  -6263;3;0;false;false;;;;;;
                                  -6266;31;0;false;false;63;127;95;;;
                                  -6297;1;0;false;false;;;;;;
                                  -6298;3;1;false;false;127;0;85;;;
                                  -6301;1;0;false;false;;;;;;
                                  -6302;9;0;false;false;0;0;0;;;
                                  -6311;1;0;false;false;;;;;;
                                  -6312;1;0;false;false;0;0;0;;;
                                  -6313;1;0;false;false;;;;;;
                                  -6314;3;0;false;false;0;0;0;;;
                                  -6317;5;0;false;false;;;;;;
                                  -6322;91;0;false;false;63;127;95;;;
                                  -6413;1;0;false;false;;;;;;
                                  -6414;9;0;false;false;0;0;0;;;
                                  -6423;1;0;false;false;;;;;;
                                  -6424;12;0;false;false;0;0;0;;;
                                  -6436;1;0;false;false;;;;;;
                                  -6437;1;0;false;false;0;0;0;;;
                                  -6438;1;0;false;false;;;;;;
                                  -6439;3;1;false;false;127;0;85;;;
                                  -6442;1;0;false;false;;;;;;
                                  -6443;12;0;false;false;0;0;0;;;
                                  -6455;3;0;false;false;;;;;;
                                  -6458;5;0;false;false;0;0;0;;;
                                  -6463;1;0;false;false;;;;;;
                                  -6464;10;0;false;false;0;0;0;;;
                                  -6474;1;0;false;false;;;;;;
                                  -6475;1;0;false;false;0;0;0;;;
                                  -6476;1;0;false;false;;;;;;
                                  -6477;4;1;false;false;127;0;85;;;
                                  -6481;1;0;false;false;0;0;0;;;
                                  -6482;3;0;false;false;;;;;;
                                  -6485;28;0;false;false;63;127;95;;;
                                  -6513;1;0;false;false;;;;;;
                                  -6514;5;0;false;false;0;0;0;;;
                                  -6519;1;0;false;false;;;;;;
                                  -6520;10;0;false;false;0;0;0;;;
                                  -6530;1;0;false;false;;;;;;
                                  -6531;1;0;false;false;0;0;0;;;
                                  -6532;1;0;false;false;;;;;;
                                  -6533;4;1;false;false;127;0;85;;;
                                  -6537;1;0;false;false;0;0;0;;;
                                  -6538;3;0;false;false;;;;;;
                                  -6541;4;0;false;false;63;127;95;;;
                                  -6545;1;0;false;false;;;;;;
                                  -6546;9;0;false;false;0;0;0;;;
                                  -6555;1;0;false;false;;;;;;
                                  -6556;10;0;false;false;0;0;0;;;
                                  -6566;3;0;false;false;;;;;;
                                  -6569;7;1;false;false;127;0;85;;;
                                  -6576;1;0;false;false;;;;;;
                                  -6577;9;0;false;false;0;0;0;;;
                                  -6586;1;0;false;false;;;;;;
                                  -6587;1;0;false;false;0;0;0;;;
                                  -6588;1;0;false;false;;;;;;
                                  -6589;5;1;false;false;127;0;85;;;
                                  -6594;1;0;false;false;0;0;0;;;
                                  -6595;3;0;false;false;;;;;;
                                  -6598;7;1;false;false;127;0;85;;;
                                  -6605;1;0;false;false;;;;;;
                                  -6606;16;0;false;false;0;0;0;;;
                                  -6622;1;0;false;false;;;;;;
                                  -6623;1;0;false;false;0;0;0;;;
                                  -6624;1;0;false;false;;;;;;
                                  -6625;5;1;false;false;127;0;85;;;
                                  -6630;1;0;false;false;0;0;0;;;
                                  -6631;1;0;false;false;;;;;;
                                  -6632;65;0;false;false;63;127;95;;;
                                  -6697;1;0;false;false;;;;;;
                                  -6698;3;1;false;false;127;0;85;;;
                                  -6701;1;0;false;false;;;;;;
                                  -6702;19;0;false;false;0;0;0;;;
                                  -6721;1;0;false;false;;;;;;
                                  -6722;1;0;false;false;0;0;0;;;
                                  -6723;1;0;false;false;;;;;;
                                  -6724;9;0;false;false;0;0;0;;;
                                  -6733;1;0;false;false;;;;;;
                                  -6734;59;0;false;false;63;127;95;;;
                                  -6793;1;0;false;false;;;;;;
                                  -6794;3;1;false;false;127;0;85;;;
                                  -6797;1;0;false;false;;;;;;
                                  -6798;18;0;false;false;0;0;0;;;
                                  -6816;1;0;false;false;;;;;;
                                  -6817;1;0;false;false;0;0;0;;;
                                  -6818;1;0;false;false;;;;;;
                                  -6819;2;0;false;false;0;0;0;;;
                                  -6821;3;0;false;false;;;;;;
                                  -6824;3;1;false;false;127;0;85;;;
                                  -6827;1;0;false;false;;;;;;
                                  -6828;20;0;false;false;0;0;0;;;
                                  -6848;3;0;false;false;;;;;;
                                  -6851;23;0;false;false;63;127;95;;;
                                  -6874;1;0;false;false;;;;;;
                                  -6875;3;1;false;false;127;0;85;;;
                                  -6878;1;0;false;false;;;;;;
                                  -6879;27;0;false;false;0;0;0;;;
                                  -6906;2;0;false;false;;;;;;
                                  -6908;24;0;false;false;63;127;95;;;
                                  -6932;1;0;false;false;;;;;;
                                  -6933;3;1;false;false;127;0;85;;;
                                  -6936;1;0;false;false;;;;;;
                                  -6937;27;0;false;false;0;0;0;;;
                                  -6964;2;0;false;false;;;;;;
                                  -6966;26;0;false;false;63;127;95;;;
                                  -6992;1;0;false;false;;;;;;
                                  -6993;3;1;false;false;127;0;85;;;
                                  -6996;1;0;false;false;;;;;;
                                  -6997;31;0;false;false;0;0;0;;;
                                  -7028;1;0;false;false;;;;;;
                                  -7029;25;0;false;false;63;127;95;;;
                                  -7054;1;0;false;false;;;;;;
                                  -7055;3;1;false;false;127;0;85;;;
                                  -7058;1;0;false;false;;;;;;
                                  -7059;31;0;false;false;0;0;0;;;
                                  -7090;4;0;false;false;;;;;;
                                  -7094;7;1;false;false;127;0;85;;;
                                  -7101;1;0;false;false;;;;;;
                                  -7102;11;0;false;false;0;0;0;;;
                                  -7113;3;0;false;false;;;;;;
                                  -7116;7;1;false;false;127;0;85;;;
                                  -7123;1;0;false;false;;;;;;
                                  -7124;12;0;false;false;0;0;0;;;
                                  -7136;1;0;false;false;;;;;;
                                  -7137;1;0;false;false;0;0;0;;;
                                  -7138;1;0;false;false;;;;;;
                                  -7139;5;1;false;false;127;0;85;;;
                                  -7144;1;0;false;false;0;0;0;;;
                                  -7145;2;0;false;false;;;;;;
                                  -7147;64;0;false;false;63;127;95;;;
                                  -7211;1;0;false;false;;;;;;
                                  -7212;5;0;false;false;0;0;0;;;
                                  -7217;1;0;false;false;;;;;;
                                  -7218;15;0;false;false;0;0;0;;;
                                  -7233;1;0;false;false;;;;;;
                                  -7234;1;0;false;false;0;0;0;;;
                                  -7235;1;0;false;false;;;;;;
                                  -7236;4;1;false;false;127;0;85;;;
                                  -7240;1;0;false;false;0;0;0;;;
                                  -7241;3;0;false;false;;;;;;
                                  -7244;5;0;false;false;0;0;0;;;
                                  -7249;1;0;false;false;;;;;;
                                  -7250;16;0;false;false;0;0;0;;;
                                  -7266;1;0;false;false;;;;;;
                                  -7267;1;0;false;false;0;0;0;;;
                                  -7268;1;0;false;false;;;;;;
                                  -7269;4;1;false;false;127;0;85;;;
                                  -7273;1;0;false;false;0;0;0;;;
                                  -7274;3;0;false;false;;;;;;
                                  -7277;3;1;false;false;127;0;85;;;
                                  -7280;1;0;false;false;;;;;;
                                  -7281;14;0;false;false;0;0;0;;;
                                  -7295;1;0;false;false;;;;;;
                                  -7296;1;0;false;false;0;0;0;;;
                                  -7297;1;0;false;false;;;;;;
                                  -7298;9;0;false;false;0;0;0;;;
                                  -7307;3;0;false;false;;;;;;
                                  -7310;7;1;false;false;127;0;85;;;
                                  -7317;1;0;false;false;;;;;;
                                  -7318;9;0;false;false;0;0;0;;;
                                  -7327;1;0;false;false;;;;;;
                                  -7328;1;0;false;false;0;0;0;;;
                                  -7329;1;0;false;false;;;;;;
                                  -7330;4;1;false;false;127;0;85;;;
                                  -7334;1;0;false;false;0;0;0;;;
                                  -7335;3;0;false;false;;;;;;
                                  -7338;5;0;false;false;0;0;0;;;
                                  -7343;1;0;false;false;;;;;;
                                  -7344;12;0;false;false;0;0;0;;;
                                  -7356;1;0;false;false;;;;;;
                                  -7357;1;0;false;false;0;0;0;;;
                                  -7358;1;0;false;false;;;;;;
                                  -7359;4;1;false;false;127;0;85;;;
                                  -7363;1;0;false;false;0;0;0;;;
                                  -7364;3;0;false;false;;;;;;
                                  -7367;7;1;false;false;127;0;85;;;
                                  -7374;1;0;false;false;;;;;;
                                  -7375;20;0;false;false;0;0;0;;;
                                  -7395;1;0;false;false;;;;;;
                                  -7396;1;0;false;false;0;0;0;;;
                                  -7397;1;0;false;false;;;;;;
                                  -7398;4;1;false;false;127;0;85;;;
                                  -7402;1;0;false;false;0;0;0;;;
                                  -7403;5;0;false;false;;;;;;
                                  -7408;5;1;false;false;127;0;85;;;
                                  -7413;1;0;false;false;;;;;;
                                  -7414;6;1;false;false;127;0;85;;;
                                  -7420;1;0;false;false;;;;;;
                                  -7421;7;1;false;false;127;0;85;;;
                                  -7428;1;0;false;false;;;;;;
                                  -7429;10;0;false;false;0;0;0;;;
                                  -7439;1;0;false;false;;;;;;
                                  -7440;7;0;false;false;0;0;0;;;
                                  -7447;1;0;false;false;;;;;;
                                  -7448;9;0;false;false;0;0;0;;;
                                  -7457;3;0;false;false;;;;;;
                                  -7460;5;1;false;false;127;0;85;;;
                                  -7465;1;0;false;false;;;;;;
                                  -7466;6;1;false;false;127;0;85;;;
                                  -7472;1;0;false;false;;;;;;
                                  -7473;7;1;false;false;127;0;85;;;
                                  -7480;1;0;false;false;;;;;;
                                  -7481;14;0;false;false;0;0;0;;;
                                  -7495;3;0;false;false;;;;;;
                                  -7498;6;1;false;false;127;0;85;;;
                                  -7504;1;0;false;false;;;;;;
                                  -7505;1;0;false;false;0;0;0;;;
                                  -7506;4;0;false;false;;;;;;
                                  -7510;6;0;false;false;0;0;0;;;
                                  -7516;1;0;false;false;;;;;;
                                  -7517;8;0;false;false;0;0;0;;;
                                  -7525;1;0;false;false;;;;;;
                                  -7526;1;0;false;false;0;0;0;;;
                                  -7527;1;0;false;false;;;;;;
                                  -7528;18;0;false;false;0;0;0;;;
                                  -7546;4;0;false;false;;;;;;
                                  -7550;9;0;false;false;0;0;0;;;
                                  -7559;1;0;false;false;;;;;;
                                  -7560;1;0;false;false;0;0;0;;;
                                  -7561;1;0;false;false;;;;;;
                                  -7562;8;0;false;false;42;0;255;;;
                                  -7570;18;0;false;false;0;0;0;;;
                                  -7588;4;0;false;false;;;;;;
                                  -7592;6;0;false;false;0;0;0;;;
                                  -7598;1;0;false;false;;;;;;
                                  -7599;1;0;false;false;0;0;0;;;
                                  -7600;1;0;false;false;;;;;;
                                  -7601;5;0;false;false;42;0;255;;;
                                  -7606;18;0;false;false;0;0;0;;;
                                  -7624;4;0;false;false;;;;;;
                                  -7628;8;0;false;false;0;0;0;;;
                                  -7636;1;0;false;false;;;;;;
                                  -7637;1;0;false;false;0;0;0;;;
                                  -7638;1;0;false;false;;;;;;
                                  -7639;7;0;false;false;42;0;255;;;
                                  -7646;18;0;false;false;0;0;0;;;
                                  -7664;4;0;false;false;;;;;;
                                  -7668;13;0;false;false;0;0;0;;;
                                  -7681;1;0;false;false;;;;;;
                                  -7682;1;0;false;false;0;0;0;;;
                                  -7683;1;0;false;false;;;;;;
                                  -7684;11;0;false;false;0;0;0;;;
                                  -7695;3;0;false;false;;;;;;
                                  -7698;1;0;false;false;0;0;0;;;
                                  -7699;5;0;false;false;;;;;;
                                  -7704;3;0;false;false;63;95;191;;;
                                  -7707;4;0;false;false;;;;;;
                                  -7711;1;0;false;false;63;95;191;;;
                                  -7712;1;0;false;false;;;;;;
                                  -7713;3;0;false;false;63;95;191;;;
                                  -7716;1;0;false;false;;;;;;
                                  -7717;8;0;false;false;63;95;191;;;
                                  -7725;1;0;false;false;;;;;;
                                  -7726;5;0;false;false;63;95;191;;;
                                  -7731;1;0;false;false;;;;;;
                                  -7732;10;0;false;false;63;95;191;;;
                                  -7742;1;0;false;false;;;;;;
                                  -7743;8;0;false;false;63;95;191;;;
                                  -7751;1;0;false;false;;;;;;
                                  -7752;2;0;false;false;63;95;191;;;
                                  -7754;1;0;false;false;;;;;;
                                  -7755;1;0;false;false;63;95;191;;;
                                  -7756;1;0;false;false;;;;;;
                                  -7757;5;0;false;false;63;95;191;;;
                                  -7762;1;0;false;false;;;;;;
                                  -7763;2;0;false;false;63;95;191;;;
                                  -7765;1;0;false;false;;;;;;
                                  -7766;5;0;false;false;63;95;191;;;
                                  -7771;4;0;false;false;;;;;;
                                  -7775;1;0;false;false;63;95;191;;;
                                  -7776;1;0;false;false;;;;;;
                                  -7777;2;0;false;false;63;95;191;;;
                                  -7779;1;0;false;false;;;;;;
                                  -7780;8;0;false;false;63;95;191;;;
                                  -7788;1;0;false;false;;;;;;
                                  -7789;2;0;false;false;63;95;191;;;
                                  -7791;1;0;false;false;;;;;;
                                  -7792;7;0;false;false;127;127;159;;;
                                  -7799;8;0;false;false;63;95;191;;;
                                  -7807;1;0;false;false;;;;;;
                                  -7808;8;0;false;false;127;127;159;;;
                                  -7816;1;0;false;false;;;;;;
                                  -7817;2;0;false;false;63;95;191;;;
                                  -7819;1;0;false;false;;;;;;
                                  -7820;8;0;false;false;63;95;191;;;
                                  -7828;1;0;false;false;;;;;;
                                  -7829;2;0;false;false;63;95;191;;;
                                  -7831;1;0;false;false;;;;;;
                                  -7832;3;0;false;false;63;95;191;;;
                                  -7835;5;0;false;false;;;;;;
                                  -7840;1;0;false;false;63;95;191;;;
                                  -7841;1;0;false;false;;;;;;
                                  -7842;25;0;false;false;63;95;191;;;
                                  -7867;1;0;false;false;;;;;;
                                  -7868;4;0;false;false;63;95;191;;;
                                  -7872;1;0;false;false;;;;;;
                                  -7873;3;0;false;false;63;95;191;;;
                                  -7876;1;0;false;false;;;;;;
                                  -7877;5;0;false;false;63;95;191;;;
                                  -7882;1;0;false;false;;;;;;
                                  -7883;6;0;false;false;63;95;191;;;
                                  -7889;1;0;false;false;;;;;;
                                  -7890;3;0;false;false;63;95;191;;;
                                  -7893;1;0;false;false;;;;;;
                                  -7894;2;0;false;false;63;95;191;;;
                                  -7896;5;0;false;false;;;;;;
                                  -7901;1;0;false;false;63;95;191;;;
                                  -7902;1;0;false;false;;;;;;
                                  -7903;7;0;false;false;63;95;191;;;
                                  -7910;1;0;false;false;;;;;;
                                  -7911;4;0;false;false;63;95;191;;;
                                  -7915;1;0;false;false;;;;;;
                                  -7916;3;0;false;false;63;95;191;;;
                                  -7919;1;0;false;false;;;;;;
                                  -7920;7;0;false;false;63;95;191;;;
                                  -7927;4;0;false;false;;;;;;
                                  -7931;2;0;false;false;63;95;191;;;
                                  -7933;3;0;false;false;;;;;;
                                  -7936;6;1;false;false;127;0;85;;;
                                  -7942;1;0;false;false;;;;;;
                                  -7943;5;1;false;false;127;0;85;;;
                                  -7948;1;0;false;false;;;;;;
                                  -7949;8;0;false;false;0;0;0;;;
                                  -7957;1;0;false;false;;;;;;
                                  -7958;10;1;false;false;127;0;85;;;
                                  -7968;1;0;false;false;;;;;;
                                  -7969;8;0;false;false;0;0;0;;;
                                  -7977;1;0;false;false;;;;;;
                                  -7978;1;0;false;false;0;0;0;;;
                                  -7979;4;0;false;false;;;;;;
                                  -7983;5;1;false;false;127;0;85;;;
                                  -7988;1;0;false;false;;;;;;
                                  -7989;6;1;false;false;127;0;85;;;
                                  -7995;1;0;false;false;;;;;;
                                  -7996;3;1;false;false;127;0;85;;;
                                  -7999;1;0;false;false;;;;;;
                                  -8000;4;0;false;false;0;0;0;;;
                                  -8004;1;0;false;false;;;;;;
                                  -8005;1;0;false;false;0;0;0;;;
                                  -8006;1;0;false;false;;;;;;
                                  -8007;2;0;false;false;0;0;0;;;
                                  -8009;6;0;false;false;;;;;;
                                  -8015;39;0;false;false;63;127;95;;;
                                  -8054;2;0;false;false;;;;;;
                                  -8056;5;1;false;false;127;0;85;;;
                                  -8061;1;0;false;false;;;;;;
                                  -8062;6;1;false;false;127;0;85;;;
                                  -8068;1;0;false;false;;;;;;
                                  -8069;3;1;false;false;127;0;85;;;
                                  -8072;1;0;false;false;;;;;;
                                  -8073;6;0;false;false;0;0;0;;;
                                  -8079;1;0;false;false;;;;;;
                                  -8080;1;0;false;false;0;0;0;;;
                                  -8081;1;0;false;false;;;;;;
                                  -8082;2;0;false;false;0;0;0;;;
                                  -8084;5;0;false;false;;;;;;
                                  -8089;35;0;false;false;63;127;95;;;
                                  -8124;2;0;false;false;;;;;;
                                  -8126;5;1;false;false;127;0;85;;;
                                  -8131;1;0;false;false;;;;;;
                                  -8132;6;1;false;false;127;0;85;;;
                                  -8138;1;0;false;false;;;;;;
                                  -8139;3;1;false;false;127;0;85;;;
                                  -8142;1;0;false;false;;;;;;
                                  -8143;5;0;false;false;0;0;0;;;
                                  -8148;1;0;false;false;;;;;;
                                  -8149;1;0;false;false;0;0;0;;;
                                  -8150;1;0;false;false;;;;;;
                                  -8151;2;0;false;false;0;0;0;;;
                                  -8153;6;0;false;false;;;;;;
                                  -8159;40;0;false;false;63;127;95;;;
                                  -8199;4;0;false;false;;;;;;
                                  -8203;10;0;false;false;0;0;0;;;
                                  -8213;1;0;false;false;;;;;;
                                  -8214;7;0;false;false;0;0;0;;;
                                  -8221;4;0;false;false;;;;;;
                                  -8225;7;0;false;false;0;0;0;;;
                                  -8232;1;0;false;false;;;;;;
                                  -8233;8;0;false;false;0;0;0;;;
                                  -8241;4;0;false;false;;;;;;
                                  -8245;13;0;false;false;0;0;0;;;
                                  -8258;1;0;false;false;;;;;;
                                  -8259;9;0;false;false;0;0;0;;;
                                  -8268;4;0;false;false;;;;;;
                                  -8272;22;0;false;false;0;0;0;;;
                                  -8294;1;0;false;false;;;;;;
                                  -8295;13;0;false;false;0;0;0;;;
                                  -8308;4;0;false;false;;;;;;
                                  -8312;17;0;false;false;0;0;0;;;
                                  -8329;1;0;false;false;;;;;;
                                  -8330;15;0;false;false;0;0;0;;;
                                  -8345;4;0;false;false;;;;;;
                                  -8349;31;0;false;false;63;127;95;;;
                                  -8380;2;0;false;false;;;;;;
                                  -8382;9;0;false;false;0;0;0;;;
                                  -8391;1;0;false;false;;;;;;
                                  -8392;11;0;false;false;0;0;0;;;
                                  -8403;7;0;false;false;;;;;;
                                  -8410;28;0;false;false;63;127;95;;;
                                  -8438;2;0;false;false;;;;;;
                                  -8440;4;0;false;false;0;0;0;;;
                                  -8444;1;0;false;false;;;;;;
                                  -8445;12;0;false;false;0;0;0;;;
                                  -8457;4;0;false;false;;;;;;
                                  -8461;8;0;false;false;0;0;0;;;
                                  -8469;1;0;false;false;;;;;;
                                  -8470;16;0;false;false;0;0;0;;;
                                  -8486;4;0;false;false;;;;;;
                                  -8490;9;0;false;false;0;0;0;;;
                                  -8499;1;0;false;false;;;;;;
                                  -8500;14;0;false;false;0;0;0;;;
                                  -8514;6;0;false;false;;;;;;
                                  -8520;55;0;false;false;63;127;95;;;
                                  -8575;2;0;false;false;;;;;;
                                  -8577;9;0;false;false;0;0;0;;;
                                  -8586;1;0;false;false;;;;;;
                                  -8587;15;0;false;false;0;0;0;;;
                                  -8602;1;0;false;false;;;;;;
                                  -8603;1;0;false;false;0;0;0;;;
                                  -8604;1;0;false;false;;;;;;
                                  -8605;3;1;false;false;127;0;85;;;
                                  -8608;1;0;false;false;;;;;;
                                  -8609;12;0;false;false;0;0;0;;;
                                  -8621;1;0;false;false;;;;;;
                                  -8622;28;0;false;false;63;127;95;;;
                                  -8650;2;0;false;false;;;;;;
                                  -8652;9;0;false;false;0;0;0;;;
                                  -8661;1;0;false;false;;;;;;
                                  -8662;10;0;false;false;0;0;0;;;
                                  -8672;1;0;false;false;;;;;;
                                  -8673;1;0;false;false;0;0;0;;;
                                  -8674;1;0;false;false;;;;;;
                                  -8675;3;1;false;false;127;0;85;;;
                                  -8678;1;0;false;false;;;;;;
                                  -8679;12;0;false;false;0;0;0;;;
                                  -8691;3;0;false;false;;;;;;
                                  -8694;23;0;false;false;63;127;95;;;
                                  -8717;2;0;false;false;;;;;;
                                  -8719;9;0;false;false;0;0;0;;;
                                  -8728;1;0;false;false;;;;;;
                                  -8729;12;0;false;false;0;0;0;;;
                                  -8741;1;0;false;false;;;;;;
                                  -8742;1;0;false;false;0;0;0;;;
                                  -8743;1;0;false;false;;;;;;
                                  -8744;3;1;false;false;127;0;85;;;
                                  -8747;1;0;false;false;;;;;;
                                  -8748;12;0;false;false;0;0;0;;;
                                  -8760;2;0;false;false;;;;;;
                                  -8762;57;0;false;false;63;127;95;;;
                                  -8819;2;0;false;false;;;;;;
                                  -8821;2;0;false;false;0;0;0;;;
                                  -8823;1;0;false;false;;;;;;
                                  -8824;3;0;false;false;0;0;0;;;
                                  -8827;11;0;false;false;;;;;;
                                  -8838;15;0;false;false;63;127;95;;;
                                  -8853;2;0;false;false;;;;;;
                                  -8855;3;1;false;false;127;0;85;;;
                                  -8858;1;0;false;false;;;;;;
                                  -8859;10;0;false;false;0;0;0;;;
                                  -8869;9;0;false;false;;;;;;
                                  -8878;38;0;false;false;63;127;95;;;
                                  -8916;2;0;false;false;;;;;;
                                  -8918;3;1;false;false;127;0;85;;;
                                  -8921;1;0;false;false;;;;;;
                                  -8922;10;0;false;false;0;0;0;;;
                                  -8932;9;0;false;false;;;;;;
                                  -8941;24;0;false;false;63;127;95;;;
                                  -8965;2;0;false;false;;;;;;
                                  -8967;3;1;false;false;127;0;85;;;
                                  -8970;1;0;false;false;;;;;;
                                  -8971;8;0;false;false;0;0;0;;;
                                  -8979;9;0;false;false;;;;;;
                                  -8988;23;0;false;false;63;127;95;;;
                                  -9011;2;0;false;false;;;;;;
                                  -9013;3;1;false;false;127;0;85;;;
                                  -9016;1;0;false;false;;;;;;
                                  -9017;9;0;false;false;0;0;0;;;
                                  -9026;9;0;false;false;;;;;;
                                  -9035;30;0;false;false;63;127;95;;;
                                  -9065;2;0;false;false;;;;;;
                                  -9067;3;1;false;false;127;0;85;;;
                                  -9070;1;0;false;false;;;;;;
                                  -9071;10;0;false;false;0;0;0;;;
                                  -9081;9;0;false;false;;;;;;
                                  -9090;34;0;false;false;63;127;95;;;
                                  -9124;2;0;false;false;;;;;;
                                  -9126;3;1;false;false;127;0;85;;;
                                  -9129;1;0;false;false;;;;;;
                                  -9130;8;0;false;false;0;0;0;;;
                                  -9138;9;0;false;false;;;;;;
                                  -9147;33;0;false;false;63;127;95;;;
                                  -9180;2;0;false;false;;;;;;
                                  -9182;7;1;false;false;127;0;85;;;
                                  -9189;1;0;false;false;;;;;;
                                  -9190;11;0;false;false;0;0;0;;;
                                  -9201;8;0;false;false;;;;;;
                                  -9209;28;0;false;false;63;127;95;;;
                                  -9237;2;0;false;false;;;;;;
                                  -9239;5;0;false;false;0;0;0;;;
                                  -9244;1;0;false;false;;;;;;
                                  -9245;9;0;false;false;0;0;0;;;
                                  -9254;1;0;false;false;;;;;;
                                  -9255;1;0;false;false;0;0;0;;;
                                  -9256;1;0;false;false;;;;;;
                                  -9257;4;1;false;false;127;0;85;;;
                                  -9261;1;0;false;false;0;0;0;;;
                                  -9262;5;0;false;false;;;;;;
                                  -9267;18;0;false;false;63;127;95;;;
                                  -9285;2;0;false;false;;;;;;
                                  -9287;7;1;false;false;127;0;85;;;
                                  -9294;1;0;false;false;;;;;;
                                  -9295;9;0;false;false;0;0;0;;;
                                  -9304;6;0;false;false;;;;;;
                                  -9310;48;0;false;false;63;127;95;;;
                                  -9358;3;0;false;false;;;;;;
                                  -9361;3;0;false;false;63;95;191;;;
                                  -9364;4;0;false;false;;;;;;
                                  -9368;1;0;false;false;63;95;191;;;
                                  -9369;1;0;false;false;;;;;;
                                  -9370;7;0;false;false;63;95;191;;;
                                  -9377;1;0;false;false;;;;;;
                                  -9378;2;0;false;false;63;95;191;;;
                                  -9380;1;0;false;false;;;;;;
                                  -9381;8;0;false;false;63;95;191;;;
                                  -9389;1;0;false;false;;;;;;
                                  -9390;2;0;false;false;63;95;191;;;
                                  -9392;1;0;false;false;;;;;;
                                  -9393;7;0;false;false;127;127;159;;;
                                  -9400;8;0;false;false;63;95;191;;;
                                  -9408;8;0;false;false;127;127;159;;;
                                  -9416;1;0;false;false;63;95;191;;;
                                  -9417;4;0;false;false;;;;;;
                                  -9421;1;0;false;false;63;95;191;;;
                                  -9422;1;0;false;false;;;;;;
                                  -9423;6;0;false;false;63;95;191;;;
                                  -9429;1;0;false;false;;;;;;
                                  -9430;3;0;false;false;63;95;191;;;
                                  -9433;1;0;false;false;;;;;;
                                  -9434;6;0;false;false;63;95;191;;;
                                  -9440;1;0;false;false;;;;;;
                                  -9441;7;0;false;false;63;95;191;;;
                                  -9448;1;0;false;false;;;;;;
                                  -9449;3;0;false;false;63;95;191;;;
                                  -9452;1;0;false;false;;;;;;
                                  -9453;9;0;false;false;63;95;191;;;
                                  -9462;1;0;false;false;;;;;;
                                  -9463;4;0;false;false;63;95;191;;;
                                  -9467;1;0;false;false;;;;;;
                                  -9468;4;0;false;false;63;95;191;;;
                                  -9472;1;0;false;false;;;;;;
                                  -9473;5;0;false;false;63;95;191;;;
                                  -9478;5;0;false;false;;;;;;
                                  -9483;1;0;false;false;63;95;191;;;
                                  -9484;1;0;false;false;;;;;;
                                  -9485;2;0;false;false;63;95;191;;;
                                  -9487;1;0;false;false;;;;;;
                                  -9488;2;0;false;false;63;95;191;;;
                                  -9490;1;0;false;false;;;;;;
                                  -9491;9;0;false;false;63;95;191;;;
                                  -9500;1;0;false;false;;;;;;
                                  -9501;4;0;false;false;63;95;191;;;
                                  -9505;1;0;false;false;;;;;;
                                  -9506;10;0;false;false;63;95;191;;;
                                  -9516;4;0;false;false;;;;;;
                                  -9520;1;0;false;false;63;95;191;;;
                                  -9521;1;0;false;false;;;;;;
                                  -9522;4;0;false;false;127;127;159;;;
                                  -9526;4;0;false;false;;;;;;
                                  -9530;1;0;false;false;63;95;191;;;
                                  -9531;1;0;false;false;;;;;;
                                  -9532;7;1;false;false;127;159;191;;;
                                  -9539;6;0;false;false;63;95;191;;;
                                  -9545;1;0;false;false;;;;;;
                                  -9546;10;0;false;false;63;95;191;;;
                                  -9556;1;0;false;false;;;;;;
                                  -9557;6;0;false;false;63;95;191;;;
                                  -9563;1;0;false;false;;;;;;
                                  -9564;2;0;false;false;63;95;191;;;
                                  -9566;1;0;false;false;;;;;;
                                  -9567;6;0;false;false;63;95;191;;;
                                  -9573;4;0;false;false;;;;;;
                                  -9577;1;0;false;false;63;95;191;;;
                                  -9578;1;0;false;false;;;;;;
                                  -9579;7;1;false;false;127;159;191;;;
                                  -9586;7;0;false;false;63;95;191;;;
                                  -9593;1;0;false;false;;;;;;
                                  -9594;7;0;false;false;63;95;191;;;
                                  -9601;1;0;false;false;;;;;;
                                  -9602;6;0;false;false;63;95;191;;;
                                  -9608;1;0;false;false;;;;;;
                                  -9609;2;0;false;false;63;95;191;;;
                                  -9611;1;0;false;false;;;;;;
                                  -9612;5;0;false;false;63;95;191;;;
                                  -9617;1;0;false;false;;;;;;
                                  -9618;3;0;false;false;63;95;191;;;
                                  -9621;4;0;false;false;;;;;;
                                  -9625;1;0;false;false;63;95;191;;;
                                  -9626;1;0;false;false;;;;;;
                                  -9627;7;1;false;false;127;159;191;;;
                                  -9634;12;0;false;false;63;95;191;;;
                                  -9646;1;0;false;false;;;;;;
                                  -9647;5;0;false;false;63;95;191;;;
                                  -9652;1;0;false;false;;;;;;
                                  -9653;7;0;false;false;63;95;191;;;
                                  -9660;4;0;false;false;;;;;;
                                  -9664;2;0;false;false;63;95;191;;;
                                  -9666;5;0;false;false;;;;;;
                                  -9671;19;0;false;false;0;0;0;;;
                                  -9690;1;0;false;false;;;;;;
                                  -9691;7;0;false;false;0;0;0;;;
                                  -9698;1;0;false;false;;;;;;
                                  -9699;7;0;false;false;0;0;0;;;
                                  -9706;1;0;false;false;;;;;;
                                  -9707;8;0;false;false;0;0;0;;;
                                  -9715;1;0;false;false;;;;;;
                                  -9716;22;0;false;false;0;0;0;;;
                                  -9738;1;0;false;false;;;;;;
                                  -9739;13;0;false;false;0;0;0;;;
                                  -9752;1;0;false;false;;;;;;
                                  -9753;1;0;false;false;0;0;0;;;
                                  -9754;4;0;false;false;;;;;;
                                  -9758;11;0;false;false;0;0;0;;;
                                  -9769;1;0;false;false;;;;;;
                                  -9770;4;0;false;false;0;0;0;;;
                                  -9774;1;0;false;false;;;;;;
                                  -9775;1;0;false;false;0;0;0;;;
                                  -9776;1;0;false;false;;;;;;
                                  -9777;25;0;false;false;0;0;0;;;
                                  -9802;6;0;false;false;;;;;;
                                  -9808;4;1;false;false;127;0;85;;;
                                  -9812;7;0;false;false;0;0;0;;;
                                  -9819;1;0;false;false;;;;;;
                                  -9820;1;0;false;false;0;0;0;;;
                                  -9821;1;0;false;false;;;;;;
                                  -9822;7;0;false;false;0;0;0;;;
                                  -9829;4;0;false;false;;;;;;
                                  -9833;4;1;false;false;127;0;85;;;
                                  -9837;8;0;false;false;0;0;0;;;
                                  -9845;1;0;false;false;;;;;;
                                  -9846;1;0;false;false;0;0;0;;;
                                  -9847;1;0;false;false;;;;;;
                                  -9848;8;0;false;false;0;0;0;;;
                                  -9856;4;0;false;false;;;;;;
                                  -9860;4;1;false;false;127;0;85;;;
                                  -9864;13;0;false;false;0;0;0;;;
                                  -9877;1;0;false;false;;;;;;
                                  -9878;1;0;false;false;0;0;0;;;
                                  -9879;1;0;false;false;;;;;;
                                  -9880;13;0;false;false;0;0;0;;;
                                  -9893;4;0;false;false;;;;;;
                                  -9897;4;1;false;false;127;0;85;;;
                                  -9901;9;0;false;false;0;0;0;;;
                                  -9910;1;0;false;false;;;;;;
                                  -9911;1;0;false;false;0;0;0;;;
                                  -9912;1;0;false;false;;;;;;
                                  -9913;18;0;false;false;0;0;0;;;
                                  -9931;1;0;false;false;;;;;;
                                  -9932;1;0;false;false;0;0;0;;;
                                  -9933;1;0;false;false;;;;;;
                                  -9934;13;0;false;false;0;0;0;;;
                                  -9947;1;0;false;false;;;;;;
                                  -9948;2;0;false;false;0;0;0;;;
                                  -9950;1;0;false;false;;;;;;
                                  -9951;2;0;false;false;0;0;0;;;
                                  -9953;4;0;false;false;;;;;;
                                  -9957;10;0;false;false;0;0;0;;;
                                  -9967;1;0;false;false;;;;;;
                                  -9968;1;0;false;false;0;0;0;;;
                                  -9969;1;0;false;false;;;;;;
                                  -9970;22;0;false;false;0;0;0;;;
                                  -9992;4;0;false;false;;;;;;
                                  -9996;9;0;false;false;0;0;0;;;
                                  -10005;1;0;false;false;;;;;;
                                  -10006;1;0;false;false;0;0;0;;;
                                  -10007;1;0;false;false;;;;;;
                                  -10008;2;0;false;false;0;0;0;;;
                                  -10010;4;0;false;false;;;;;;
                                  -10014;7;0;false;false;0;0;0;;;
                                  -10021;1;0;false;false;;;;;;
                                  -10022;1;0;false;false;0;0;0;;;
                                  -10023;1;0;false;false;;;;;;
                                  -10024;18;0;false;false;0;0;0;;;
                                  -10042;4;0;false;false;;;;;;
                                  -10046;2;1;false;false;127;0;85;;;
                                  -10048;1;0;false;false;;;;;;
                                  -10049;11;0;false;false;0;0;0;;;
                                  -10060;1;0;false;false;;;;;;
                                  -10061;2;0;false;false;0;0;0;;;
                                  -10063;1;0;false;false;;;;;;
                                  -10064;23;0;false;false;0;0;0;;;
                                  -10087;1;0;false;false;;;;;;
                                  -10088;1;0;false;false;0;0;0;;;
                                  -10089;5;0;false;false;;;;;;
                                  -10094;9;0;false;false;0;0;0;;;
                                  -10103;1;0;false;false;;;;;;
                                  -10104;1;0;false;false;0;0;0;;;
                                  -10105;1;0;false;false;;;;;;
                                  -10106;15;0;false;false;0;0;0;;;
                                  -10121;5;0;false;false;;;;;;
                                  -10126;7;0;false;false;0;0;0;;;
                                  -10133;1;0;false;false;;;;;;
                                  -10134;1;0;false;false;0;0;0;;;
                                  -10135;1;0;false;false;;;;;;
                                  -10136;13;0;false;false;0;0;0;;;
                                  -10149;5;0;false;false;;;;;;
                                  -10154;2;1;false;false;127;0;85;;;
                                  -10156;1;0;false;false;;;;;;
                                  -10157;8;0;false;false;0;0;0;;;
                                  -10165;1;0;false;false;;;;;;
                                  -10166;1;0;false;false;0;0;0;;;
                                  -10167;1;0;false;false;;;;;;
                                  -10168;10;0;false;false;0;0;0;;;
                                  -10178;1;0;false;false;;;;;;
                                  -10179;1;0;false;false;0;0;0;;;
                                  -10180;6;0;false;false;;;;;;
                                  -10186;3;1;false;false;127;0;85;;;
                                  -10189;1;0;false;false;;;;;;
                                  -10190;4;0;false;false;0;0;0;;;
                                  -10194;1;0;false;false;;;;;;
                                  -10195;1;0;false;false;0;0;0;;;
                                  -10196;1;0;false;false;;;;;;
                                  -10197;8;0;false;false;0;0;0;;;
                                  -10205;6;0;false;false;;;;;;
                                  -10211;7;0;false;false;0;0;0;;;
                                  -10218;1;0;false;false;;;;;;
                                  -10219;1;0;false;false;0;0;0;;;
                                  -10220;1;0;false;false;;;;;;
                                  -10221;10;0;false;false;0;0;0;;;
                                  -10231;6;0;false;false;;;;;;
                                  -10237;9;0;false;false;0;0;0;;;
                                  -10246;1;0;false;false;;;;;;
                                  -10247;1;0;false;false;0;0;0;;;
                                  -10248;1;0;false;false;;;;;;
                                  -10249;5;0;false;false;0;0;0;;;
                                  -10254;5;0;false;false;;;;;;
                                  -10259;1;0;false;false;0;0;0;;;
                                  -10260;7;0;false;false;;;;;;
                                  -10267;1;0;false;false;0;0;0;;;
                                  -10268;5;0;false;false;;;;;;
                                  -10273;4;1;false;false;127;0;85;;;
                                  -10277;5;0;false;false;;;;;;
                                  -10282;2;1;false;false;127;0;85;;;
                                  -10284;1;0;false;false;;;;;;
                                  -10285;11;0;false;false;0;0;0;;;
                                  -10296;1;0;false;false;;;;;;
                                  -10297;2;0;false;false;0;0;0;;;
                                  -10299;1;0;false;false;;;;;;
                                  -10300;22;0;false;false;0;0;0;;;
                                  -10322;1;0;false;false;;;;;;
                                  -10323;1;0;false;false;0;0;0;;;
                                  -10324;5;0;false;false;;;;;;
                                  -10329;9;0;false;false;0;0;0;;;
                                  -10338;1;0;false;false;;;;;;
                                  -10339;1;0;false;false;0;0;0;;;
                                  -10340;1;0;false;false;;;;;;
                                  -10341;27;0;false;false;0;0;0;;;
                                  -10368;4;0;false;false;;;;;;
                                  -10372;1;0;false;false;0;0;0;;;
                                  -10373;6;0;false;false;;;;;;
                                  -10379;15;0;false;false;0;0;0;;;
                                  -10394;1;0;false;false;;;;;;
                                  -10395;1;0;false;false;0;0;0;;;
                                  -10396;1;0;false;false;;;;;;
                                  -10397;34;0;false;false;0;0;0;;;
                                  -10431;4;0;false;false;;;;;;
                                  -10435;33;0;false;false;0;0;0;;;
                                  -10468;4;0;false;false;;;;;;
                                  -10472;30;0;false;false;0;0;0;;;
                                  -10502;3;0;false;false;;;;;;
                                  -10505;1;0;false;false;0;0;0;;;
                                  -10506;3;0;false;false;;;;;;
                                  -10509;3;0;false;false;63;95;191;;;
                                  -10512;4;0;false;false;;;;;;
                                  -10516;1;0;false;false;63;95;191;;;
                                  -10517;1;0;false;false;;;;;;
                                  -10518;6;0;false;false;63;95;191;;;
                                  -10524;1;0;false;false;;;;;;
                                  -10525;3;0;false;false;63;95;191;;;
                                  -10528;1;0;false;false;;;;;;
                                  -10529;4;0;false;false;63;95;191;;;
                                  -10533;1;0;false;false;;;;;;
                                  -10534;8;0;false;false;63;95;191;;;
                                  -10542;1;0;false;false;;;;;;
                                  -10543;2;0;false;false;63;95;191;;;
                                  -10545;1;0;false;false;;;;;;
                                  -10546;3;0;false;false;63;95;191;;;
                                  -10549;1;0;false;false;;;;;;
                                  -10550;5;0;false;false;63;95;191;;;
                                  -10555;1;0;false;false;;;;;;
                                  -10556;5;0;false;false;63;95;191;;;
                                  -10561;4;0;false;false;;;;;;
                                  -10565;1;0;false;false;63;95;191;;;
                                  -10566;1;0;false;false;;;;;;
                                  -10567;4;0;false;false;127;127;159;;;
                                  -10571;4;0;false;false;;;;;;
                                  -10575;1;0;false;false;63;95;191;;;
                                  -10576;1;0;false;false;;;;;;
                                  -10577;7;1;false;false;127;159;191;;;
                                  -10584;10;0;false;false;63;95;191;;;
                                  -10594;1;0;false;false;;;;;;
                                  -10595;6;0;false;false;63;95;191;;;
                                  -10601;1;0;false;false;;;;;;
                                  -10602;2;0;false;false;63;95;191;;;
                                  -10604;1;0;false;false;;;;;;
                                  -10605;3;0;false;false;63;95;191;;;
                                  -10608;1;0;false;false;;;;;;
                                  -10609;4;0;false;false;63;95;191;;;
                                  -10613;1;0;false;false;;;;;;
                                  -10614;2;0;false;false;63;95;191;;;
                                  -10616;1;0;false;false;;;;;;
                                  -10617;5;0;false;false;63;95;191;;;
                                  -10622;1;0;false;false;;;;;;
                                  -10623;4;0;false;false;63;95;191;;;
                                  -10627;1;0;false;false;;;;;;
                                  -10628;8;0;false;false;63;95;191;;;
                                  -10636;1;0;false;false;;;;;;
                                  -10637;4;0;false;false;63;95;191;;;
                                  -10641;5;0;false;false;;;;;;
                                  -10646;1;0;false;false;63;95;191;;;
                                  -10647;2;0;false;false;;;;;;
                                  -10649;8;0;false;false;63;95;191;;;
                                  -10657;1;0;false;false;;;;;;
                                  -10658;2;0;false;false;63;95;191;;;
                                  -10660;1;0;false;false;;;;;;
                                  -10661;3;0;false;false;63;95;191;;;
                                  -10664;1;0;false;false;;;;;;
                                  -10665;5;0;false;false;63;95;191;;;
                                  -10670;1;0;false;false;;;;;;
                                  -10671;2;0;false;false;63;95;191;;;
                                  -10673;1;0;false;false;;;;;;
                                  -10674;3;0;false;false;63;95;191;;;
                                  -10677;1;0;false;false;;;;;;
                                  -10678;9;0;false;false;63;95;191;;;
                                  -10687;4;0;false;false;;;;;;
                                  -10691;1;0;false;false;63;95;191;;;
                                  -10692;1;0;false;false;;;;;;
                                  -10693;7;1;false;false;127;159;191;;;
                                  -10700;4;0;false;false;63;95;191;;;
                                  -10704;1;0;false;false;;;;;;
                                  -10705;4;0;false;false;63;95;191;;;
                                  -10709;1;0;false;false;;;;;;
                                  -10710;2;0;false;false;63;95;191;;;
                                  -10712;1;0;false;false;;;;;;
                                  -10713;5;0;false;false;63;95;191;;;
                                  -10718;1;0;false;false;;;;;;
                                  -10719;4;0;false;false;63;95;191;;;
                                  -10723;1;0;false;false;;;;;;
                                  -10724;8;0;false;false;63;95;191;;;
                                  -10732;1;0;false;false;;;;;;
                                  -10733;4;0;false;false;63;95;191;;;
                                  -10737;5;0;false;false;;;;;;
                                  -10742;2;0;false;false;63;95;191;;;
                                  -10744;3;0;false;false;;;;;;
                                  -10747;4;1;false;false;127;0;85;;;
                                  -10751;1;0;false;false;;;;;;
                                  -10752;18;0;false;false;0;0;0;;;
                                  -10770;3;1;false;false;127;0;85;;;
                                  -10773;1;0;false;false;;;;;;
                                  -10774;11;0;false;false;0;0;0;;;
                                  -10785;1;0;false;false;;;;;;
                                  -10786;6;0;false;false;0;0;0;;;
                                  -10792;1;0;false;false;;;;;;
                                  -10793;5;0;false;false;0;0;0;;;
                                  -10798;1;0;false;false;;;;;;
                                  -10799;1;0;false;false;0;0;0;;;
                                  -10800;4;0;false;false;;;;;;
                                  -10804;3;1;false;false;127;0;85;;;
                                  -10807;2;0;false;false;0;0;0;;;
                                  -10809;1;0;false;false;;;;;;
                                  -10810;8;0;false;false;0;0;0;;;
                                  -10818;1;0;false;false;;;;;;
                                  -10819;1;0;false;false;0;0;0;;;
                                  -10820;1;0;false;false;;;;;;
                                  -10821;34;0;false;false;0;0;0;;;
                                  -10855;1;0;false;false;;;;;;
                                  -10856;6;0;false;false;0;0;0;;;
                                  -10862;8;0;false;false;;;;;;
                                  -10870;2;1;false;false;127;0;85;;;
                                  -10872;1;0;false;false;;;;;;
                                  -10873;9;0;false;false;0;0;0;;;
                                  -10882;1;0;false;false;;;;;;
                                  -10883;2;0;false;false;0;0;0;;;
                                  -10885;1;0;false;false;;;;;;
                                  -10886;4;1;false;false;127;0;85;;;
                                  -10890;1;0;false;false;0;0;0;;;
                                  -10891;1;0;false;false;;;;;;
                                  -10892;1;0;false;false;0;0;0;;;
                                  -10893;5;0;false;false;;;;;;
                                  -10898;17;0;false;false;0;0;0;;;
                                  -10915;3;1;false;false;127;0;85;;;
                                  -10918;1;0;false;false;;;;;;
                                  -10919;20;0;false;false;0;0;0;;;
                                  -10939;1;0;false;false;;;;;;
                                  -10940;10;0;false;false;0;0;0;;;
                                  -10950;4;0;false;false;;;;;;
                                  -10954;1;0;false;false;0;0;0;;;
                                  -10955;3;0;false;false;;;;;;
                                  -10958;1;0;false;false;0;0;0;;;
                                  -10959;3;0;false;false;;;;;;
                                  -10962;3;0;false;false;63;95;191;;;
                                  -10965;4;0;false;false;;;;;;
                                  -10969;1;0;false;false;63;95;191;;;
                                  -10970;1;0;false;false;;;;;;
                                  -10971;6;0;false;false;63;95;191;;;
                                  -10977;1;0;false;false;;;;;;
                                  -10978;3;0;false;false;63;95;191;;;
                                  -10981;1;0;false;false;;;;;;
                                  -10982;4;0;false;false;63;95;191;;;
                                  -10986;1;0;false;false;;;;;;
                                  -10987;10;0;false;false;63;95;191;;;
                                  -10997;1;0;false;false;;;;;;
                                  -10998;5;0;false;false;63;95;191;;;
                                  -11003;1;0;false;false;;;;;;
                                  -11004;2;0;false;false;63;95;191;;;
                                  -11006;1;0;false;false;;;;;;
                                  -11007;3;0;false;false;63;95;191;;;
                                  -11010;1;0;false;false;;;;;;
                                  -11011;5;0;false;false;63;95;191;;;
                                  -11016;1;0;false;false;;;;;;
                                  -11017;5;0;false;false;63;95;191;;;
                                  -11022;4;0;false;false;;;;;;
                                  -11026;1;0;false;false;63;95;191;;;
                                  -11027;1;0;false;false;;;;;;
                                  -11028;4;0;false;false;127;127;159;;;
                                  -11032;4;0;false;false;;;;;;
                                  -11036;1;0;false;false;63;95;191;;;
                                  -11037;1;0;false;false;;;;;;
                                  -11038;7;1;false;false;127;159;191;;;
                                  -11045;10;0;false;false;63;95;191;;;
                                  -11055;1;0;false;false;;;;;;
                                  -11056;6;0;false;false;63;95;191;;;
                                  -11062;1;0;false;false;;;;;;
                                  -11063;2;0;false;false;63;95;191;;;
                                  -11065;1;0;false;false;;;;;;
                                  -11066;3;0;false;false;63;95;191;;;
                                  -11069;1;0;false;false;;;;;;
                                  -11070;4;0;false;false;63;95;191;;;
                                  -11074;1;0;false;false;;;;;;
                                  -11075;2;0;false;false;63;95;191;;;
                                  -11077;1;0;false;false;;;;;;
                                  -11078;5;0;false;false;63;95;191;;;
                                  -11083;1;0;false;false;;;;;;
                                  -11084;3;0;false;false;63;95;191;;;
                                  -11087;1;0;false;false;;;;;;
                                  -11088;10;0;false;false;63;95;191;;;
                                  -11098;5;0;false;false;;;;;;
                                  -11103;1;0;false;false;63;95;191;;;
                                  -11104;2;0;false;false;;;;;;
                                  -11106;5;0;false;false;63;95;191;;;
                                  -11111;1;0;false;false;;;;;;
                                  -11112;4;0;false;false;63;95;191;;;
                                  -11116;1;0;false;false;;;;;;
                                  -11117;8;0;false;false;63;95;191;;;
                                  -11125;1;0;false;false;;;;;;
                                  -11126;2;0;false;false;63;95;191;;;
                                  -11128;1;0;false;false;;;;;;
                                  -11129;3;0;false;false;63;95;191;;;
                                  -11132;1;0;false;false;;;;;;
                                  -11133;5;0;false;false;63;95;191;;;
                                  -11138;1;0;false;false;;;;;;
                                  -11139;2;0;false;false;63;95;191;;;
                                  -11141;1;0;false;false;;;;;;
                                  -11142;3;0;false;false;63;95;191;;;
                                  -11145;1;0;false;false;;;;;;
                                  -11146;9;0;false;false;63;95;191;;;
                                  -11155;4;0;false;false;;;;;;
                                  -11159;1;0;false;false;63;95;191;;;
                                  -11160;1;0;false;false;;;;;;
                                  -11161;7;1;false;false;127;159;191;;;
                                  -11168;4;0;false;false;63;95;191;;;
                                  -11172;1;0;false;false;;;;;;
                                  -11173;4;0;false;false;63;95;191;;;
                                  -11177;1;0;false;false;;;;;;
                                  -11178;2;0;false;false;63;95;191;;;
                                  -11180;1;0;false;false;;;;;;
                                  -11181;5;0;false;false;63;95;191;;;
                                  -11186;1;0;false;false;;;;;;
                                  -11187;3;0;false;false;63;95;191;;;
                                  -11190;1;0;false;false;;;;;;
                                  -11191;10;0;false;false;63;95;191;;;
                                  -11201;1;0;false;false;;;;;;
                                  -11202;5;0;false;false;63;95;191;;;
                                  -11207;1;0;false;false;;;;;;
                                  -11208;3;0;false;false;63;95;191;;;
                                  -11211;4;0;false;false;;;;;;
                                  -11215;2;0;false;false;63;95;191;;;
                                  -11217;3;0;false;false;;;;;;
                                  -11220;4;1;false;false;127;0;85;;;
                                  -11224;1;0;false;false;;;;;;
                                  -11225;20;0;false;false;0;0;0;;;
                                  -11245;3;1;false;false;127;0;85;;;
                                  -11248;1;0;false;false;;;;;;
                                  -11249;11;0;false;false;0;0;0;;;
                                  -11260;1;0;false;false;;;;;;
                                  -11261;6;0;false;false;0;0;0;;;
                                  -11267;1;0;false;false;;;;;;
                                  -11268;5;0;false;false;0;0;0;;;
                                  -11273;1;0;false;false;;;;;;
                                  -11274;1;0;false;false;0;0;0;;;
                                  -11275;4;0;false;false;;;;;;
                                  -11279;15;0;false;false;0;0;0;;;
                                  -11294;1;0;false;false;;;;;;
                                  -11295;5;0;false;false;0;0;0;;;
                                  -11300;1;0;false;false;;;;;;
                                  -11301;1;0;false;false;0;0;0;;;
                                  -11302;1;0;false;false;;;;;;
                                  -11303;40;0;false;false;0;0;0;;;
                                  -11343;1;0;false;false;;;;;;
                                  -11344;6;0;false;false;0;0;0;;;
                                  -11350;8;0;false;false;;;;;;
                                  -11358;2;1;false;false;127;0;85;;;
                                  -11360;1;0;false;false;;;;;;
                                  -11361;6;0;false;false;0;0;0;;;
                                  -11367;1;0;false;false;;;;;;
                                  -11368;2;0;false;false;0;0;0;;;
                                  -11370;1;0;false;false;;;;;;
                                  -11371;4;1;false;false;127;0;85;;;
                                  -11375;1;0;false;false;0;0;0;;;
                                  -11376;1;0;false;false;;;;;;
                                  -11377;1;0;false;false;0;0;0;;;
                                  -11378;5;0;false;false;;;;;;
                                  -11383;20;0;false;false;0;0;0;;;
                                  -11403;3;1;false;false;127;0;85;;;
                                  -11406;1;0;false;false;;;;;;
                                  -11407;20;0;false;false;0;0;0;;;
                                  -11427;1;0;false;false;;;;;;
                                  -11428;7;0;false;false;0;0;0;;;
                                  -11435;4;0;false;false;;;;;;
                                  -11439;1;0;false;false;0;0;0;;;
                                  -11440;3;0;false;false;;;;;;
                                  -11443;1;0;false;false;0;0;0;;;
                                  -11444;3;0;false;false;;;;;;
                                  -11447;3;0;false;false;63;95;191;;;
                                  -11450;4;0;false;false;;;;;;
                                  -11454;1;0;false;false;63;95;191;;;
                                  -11455;1;0;false;false;;;;;;
                                  -11456;6;0;false;false;63;95;191;;;
                                  -11462;1;0;false;false;;;;;;
                                  -11463;3;0;false;false;63;95;191;;;
                                  -11466;1;0;false;false;;;;;;
                                  -11467;4;0;false;false;63;95;191;;;
                                  -11471;1;0;false;false;;;;;;
                                  -11472;4;0;false;false;63;95;191;;;
                                  -11476;1;0;false;false;;;;;;
                                  -11477;4;0;false;false;63;95;191;;;
                                  -11481;1;0;false;false;;;;;;
                                  -11482;5;0;false;false;63;95;191;;;
                                  -11487;1;0;false;false;;;;;;
                                  -11488;2;0;false;false;63;95;191;;;
                                  -11490;1;0;false;false;;;;;;
                                  -11491;2;0;false;false;63;95;191;;;
                                  -11493;1;0;false;false;;;;;;
                                  -11494;9;0;false;false;63;95;191;;;
                                  -11503;1;0;false;false;;;;;;
                                  -11504;4;0;false;false;63;95;191;;;
                                  -11508;1;0;false;false;;;;;;
                                  -11509;1;0;false;false;63;95;191;;;
                                  -11510;1;0;false;false;;;;;;
                                  -11511;9;0;false;false;63;95;191;;;
                                  -11520;4;0;false;false;;;;;;
                                  -11524;1;0;false;false;63;95;191;;;
                                  -11525;1;0;false;false;;;;;;
                                  -11526;4;0;false;false;127;127;159;;;
                                  -11530;4;0;false;false;;;;;;
                                  -11534;1;0;false;false;63;95;191;;;
                                  -11535;1;0;false;false;;;;;;
                                  -11536;7;1;false;false;127;159;191;;;
                                  -11543;14;0;false;false;63;95;191;;;
                                  -11557;1;0;false;false;;;;;;
                                  -11558;7;0;false;false;127;127;159;;;
                                  -11565;17;0;false;false;63;95;191;;;
                                  -11582;8;0;false;false;127;127;159;;;
                                  -11590;1;0;false;false;;;;;;
                                  -11591;2;0;false;false;63;95;191;;;
                                  -11593;1;0;false;false;;;;;;
                                  -11594;7;0;false;false;63;95;191;;;
                                  -11601;5;0;false;false;;;;;;
                                  -11606;1;0;false;false;63;95;191;;;
                                  -11607;2;0;false;false;;;;;;
                                  -11609;4;0;false;false;63;95;191;;;
                                  -11613;1;0;false;false;;;;;;
                                  -11614;4;0;false;false;63;95;191;;;
                                  -11618;1;0;false;false;;;;;;
                                  -11619;4;0;false;false;63;95;191;;;
                                  -11623;4;0;false;false;;;;;;
                                  -11627;2;0;false;false;63;95;191;;;
                                  -11629;3;0;false;false;;;;;;
                                  -11632;4;1;false;false;127;0;85;;;
                                  -11636;1;0;false;false;;;;;;
                                  -11637;31;0;false;false;0;0;0;;;
                                  -11668;1;0;false;false;;;;;;
                                  -11669;15;0;false;false;0;0;0;;;
                                  -11684;1;0;false;false;;;;;;
                                  -11685;1;0;false;false;0;0;0;;;
                                  -11686;5;0;false;false;;;;;;
                                  -11691;3;1;false;false;127;0;85;;;
                                  -11694;1;0;false;false;;;;;;
                                  -11695;1;0;false;false;0;0;0;;;
                                  -11696;3;1;false;false;127;0;85;;;
                                  -11699;1;0;false;false;;;;;;
                                  -11700;1;0;false;false;0;0;0;;;
                                  -11701;1;0;false;false;;;;;;
                                  -11702;1;0;false;false;0;0;0;;;
                                  -11703;1;0;false;false;;;;;;
                                  -11704;2;0;false;false;0;0;0;;;
                                  -11706;1;0;false;false;;;;;;
                                  -11707;1;0;false;false;0;0;0;;;
                                  -11708;1;0;false;false;;;;;;
                                  -11709;1;0;false;false;0;0;0;;;
                                  -11710;1;0;false;false;;;;;;
                                  -11711;30;0;false;false;0;0;0;;;
                                  -11741;1;0;false;false;;;;;;
                                  -11742;4;0;false;false;0;0;0;;;
                                  -11746;1;0;false;false;;;;;;
                                  -11747;1;0;false;false;0;0;0;;;
                                  -11748;5;0;false;false;;;;;;
                                  -11753;3;1;false;false;127;0;85;;;
                                  -11756;1;0;false;false;;;;;;
                                  -11757;10;0;false;false;0;0;0;;;
                                  -11767;1;0;false;false;;;;;;
                                  -11768;1;0;false;false;0;0;0;;;
                                  -11769;1;0;false;false;;;;;;
                                  -11770;34;0;false;false;0;0;0;;;
                                  -11804;5;0;false;false;;;;;;
                                  -11809;6;0;false;false;0;0;0;;;
                                  -11815;1;0;false;false;;;;;;
                                  -11816;4;0;false;false;0;0;0;;;
                                  -11820;1;0;false;false;;;;;;
                                  -11821;1;0;false;false;0;0;0;;;
                                  -11822;1;0;false;false;;;;;;
                                  -11823;26;0;false;false;0;0;0;;;
                                  -11849;8;0;false;false;;;;;;
                                  -11857;2;1;false;false;127;0;85;;;
                                  -11859;1;0;false;false;;;;;;
                                  -11860;34;0;false;false;0;0;0;;;
                                  -11894;1;0;false;false;;;;;;
                                  -11895;1;0;false;false;0;0;0;;;
                                  -11896;6;0;false;false;;;;;;
                                  -11902;31;0;false;false;0;0;0;;;
                                  -11933;1;0;false;false;;;;;;
                                  -11934;6;0;false;false;0;0;0;;;
                                  -11940;5;0;false;false;;;;;;
                                  -11945;1;0;false;false;0;0;0;;;
                                  -11946;5;0;false;false;;;;;;
                                  -11951;2;1;false;false;127;0;85;;;
                                  -11953;1;0;false;false;;;;;;
                                  -11954;33;0;false;false;0;0;0;;;
                                  -11987;1;0;false;false;;;;;;
                                  -11988;2;0;false;false;0;0;0;;;
                                  -11990;6;0;false;false;;;;;;
                                  -11996;32;0;false;false;0;0;0;;;
                                  -12028;1;0;false;false;;;;;;
                                  -12029;2;0;false;false;0;0;0;;;
                                  -12031;6;0;false;false;;;;;;
                                  -12037;32;0;false;false;0;0;0;;;
                                  -12069;1;0;false;false;;;;;;
                                  -12070;1;0;false;false;0;0;0;;;
                                  -12071;6;0;false;false;;;;;;
                                  -12077;26;0;false;false;0;0;0;;;
                                  -12103;1;0;false;false;;;;;;
                                  -12104;6;0;false;false;0;0;0;;;
                                  -12110;5;0;false;false;;;;;;
                                  -12115;1;0;false;false;0;0;0;;;
                                  -12116;5;0;false;false;;;;;;
                                  -12121;2;1;false;false;127;0;85;;;
                                  -12123;1;0;false;false;;;;;;
                                  -12124;17;0;false;false;0;0;0;;;
                                  -12141;1;0;false;false;;;;;;
                                  -12142;1;0;false;false;0;0;0;;;
                                  -12143;6;0;false;false;;;;;;
                                  -12149;29;0;false;false;0;0;0;;;
                                  -12178;1;0;false;false;;;;;;
                                  -12179;6;0;false;false;0;0;0;;;
                                  -12185;5;0;false;false;;;;;;
                                  -12190;1;0;false;false;0;0;0;;;
                                  -12191;4;0;false;false;;;;;;
                                  -12195;1;0;false;false;0;0;0;;;
                                  -12196;3;0;false;false;;;;;;
                                  -12199;1;0;false;false;0;0;0;;;
                                  -12200;3;0;false;false;;;;;;
                                  -12203;3;0;false;false;63;95;191;;;
                                  -12206;4;0;false;false;;;;;;
                                  -12210;1;0;false;false;63;95;191;;;
                                  -12211;1;0;false;false;;;;;;
                                  -12212;6;0;false;false;63;95;191;;;
                                  -12218;1;0;false;false;;;;;;
                                  -12219;3;0;false;false;63;95;191;;;
                                  -12222;1;0;false;false;;;;;;
                                  -12223;4;0;false;false;63;95;191;;;
                                  -12227;1;0;false;false;;;;;;
                                  -12228;6;0;false;false;63;95;191;;;
                                  -12234;1;0;false;false;;;;;;
                                  -12235;2;0;false;false;63;95;191;;;
                                  -12237;1;0;false;false;;;;;;
                                  -12238;3;0;false;false;63;95;191;;;
                                  -12241;1;0;false;false;;;;;;
                                  -12242;5;0;false;false;63;95;191;;;
                                  -12247;1;0;false;false;;;;;;
                                  -12248;5;0;false;false;63;95;191;;;
                                  -12253;4;0;false;false;;;;;;
                                  -12257;1;0;false;false;63;95;191;;;
                                  -12258;1;0;false;false;;;;;;
                                  -12259;4;0;false;false;127;127;159;;;
                                  -12263;4;0;false;false;;;;;;
                                  -12267;1;0;false;false;63;95;191;;;
                                  -12268;1;0;false;false;;;;;;
                                  -12269;7;1;false;false;127;159;191;;;
                                  -12276;10;0;false;false;63;95;191;;;
                                  -12286;1;0;false;false;;;;;;
                                  -12287;6;0;false;false;63;95;191;;;
                                  -12293;1;0;false;false;;;;;;
                                  -12294;2;0;false;false;63;95;191;;;
                                  -12296;1;0;false;false;;;;;;
                                  -12297;3;0;false;false;63;95;191;;;
                                  -12300;1;0;false;false;;;;;;
                                  -12301;4;0;false;false;63;95;191;;;
                                  -12305;1;0;false;false;;;;;;
                                  -12306;2;0;false;false;63;95;191;;;
                                  -12308;1;0;false;false;;;;;;
                                  -12309;5;0;false;false;63;95;191;;;
                                  -12314;1;0;false;false;;;;;;
                                  -12315;3;0;false;false;63;95;191;;;
                                  -12318;1;0;false;false;;;;;;
                                  -12319;6;0;false;false;63;95;191;;;
                                  -12325;1;0;false;false;;;;;;
                                  -12326;4;0;false;false;63;95;191;;;
                                  -12330;4;0;false;false;;;;;;
                                  -12334;1;0;false;false;63;95;191;;;
                                  -12335;2;0;false;false;;;;;;
                                  -12337;8;0;false;false;63;95;191;;;
                                  -12345;1;0;false;false;;;;;;
                                  -12346;2;0;false;false;63;95;191;;;
                                  -12348;1;0;false;false;;;;;;
                                  -12349;3;0;false;false;63;95;191;;;
                                  -12352;1;0;false;false;;;;;;
                                  -12353;5;0;false;false;63;95;191;;;
                                  -12358;1;0;false;false;;;;;;
                                  -12359;2;0;false;false;63;95;191;;;
                                  -12361;1;0;false;false;;;;;;
                                  -12362;3;0;false;false;63;95;191;;;
                                  -12365;1;0;false;false;;;;;;
                                  -12366;9;0;false;false;63;95;191;;;
                                  -12375;4;0;false;false;;;;;;
                                  -12379;1;0;false;false;63;95;191;;;
                                  -12380;1;0;false;false;;;;;;
                                  -12381;7;1;false;false;127;159;191;;;
                                  -12388;4;0;false;false;63;95;191;;;
                                  -12392;1;0;false;false;;;;;;
                                  -12393;4;0;false;false;63;95;191;;;
                                  -12397;1;0;false;false;;;;;;
                                  -12398;2;0;false;false;63;95;191;;;
                                  -12400;1;0;false;false;;;;;;
                                  -12401;5;0;false;false;63;95;191;;;
                                  -12406;1;0;false;false;;;;;;
                                  -12407;3;0;false;false;63;95;191;;;
                                  -12410;1;0;false;false;;;;;;
                                  -12411;6;0;false;false;63;95;191;;;
                                  -12417;1;0;false;false;;;;;;
                                  -12418;4;0;false;false;63;95;191;;;
                                  -12422;4;0;false;false;;;;;;
                                  -12426;2;0;false;false;63;95;191;;;
                                  -12428;3;0;false;false;;;;;;
                                  -12431;4;1;false;false;127;0;85;;;
                                  -12435;1;0;false;false;;;;;;
                                  -12436;15;0;false;false;0;0;0;;;
                                  -12451;3;1;false;false;127;0;85;;;
                                  -12454;1;0;false;false;;;;;;
                                  -12455;11;0;false;false;0;0;0;;;
                                  -12466;1;0;false;false;;;;;;
                                  -12467;6;0;false;false;0;0;0;;;
                                  -12473;1;0;false;false;;;;;;
                                  -12474;5;0;false;false;0;0;0;;;
                                  -12479;1;0;false;false;;;;;;
                                  -12480;1;0;false;false;0;0;0;;;
                                  -12481;4;0;false;false;;;;;;
                                  -12485;15;0;false;false;0;0;0;;;
                                  -12500;1;0;false;false;;;;;;
                                  -12501;5;0;false;false;0;0;0;;;
                                  -12506;1;0;false;false;;;;;;
                                  -12507;1;0;false;false;0;0;0;;;
                                  -12508;1;0;false;false;;;;;;
                                  -12509;35;0;false;false;0;0;0;;;
                                  -12544;1;0;false;false;;;;;;
                                  -12545;6;0;false;false;0;0;0;;;
                                  -12551;8;0;false;false;;;;;;
                                  -12559;2;1;false;false;127;0;85;;;
                                  -12561;1;0;false;false;;;;;;
                                  -12562;6;0;false;false;0;0;0;;;
                                  -12568;1;0;false;false;;;;;;
                                  -12569;2;0;false;false;0;0;0;;;
                                  -12571;1;0;false;false;;;;;;
                                  -12572;4;1;false;false;127;0;85;;;
                                  -12576;1;0;false;false;0;0;0;;;
                                  -12577;1;0;false;false;;;;;;
                                  -12578;1;0;false;false;0;0;0;;;
                                  -12579;5;0;false;false;;;;;;
                                  -12584;12;0;false;false;0;0;0;;;
                                  -12596;1;0;false;false;;;;;;
                                  -12597;6;0;false;false;0;0;0;;;
                                  -12603;1;0;false;false;;;;;;
                                  -12604;1;0;false;false;0;0;0;;;
                                  -12605;1;0;false;false;;;;;;
                                  -12606;13;0;false;false;0;0;0;;;
                                  -12619;5;0;false;false;;;;;;
                                  -12624;3;1;false;false;127;0;85;;;
                                  -12627;1;0;false;false;;;;;;
                                  -12628;1;0;false;false;0;0;0;;;
                                  -12629;3;1;false;false;127;0;85;;;
                                  -12632;1;0;false;false;;;;;;
                                  -12633;1;0;false;false;0;0;0;;;
                                  -12634;1;0;false;false;;;;;;
                                  -12635;1;0;false;false;0;0;0;;;
                                  -12636;1;0;false;false;;;;;;
                                  -12637;2;0;false;false;0;0;0;;;
                                  -12639;1;0;false;false;;;;;;
                                  -12640;1;0;false;false;0;0;0;;;
                                  -12641;1;0;false;false;;;;;;
                                  -12642;1;0;false;false;0;0;0;;;
                                  -12643;1;0;false;false;;;;;;
                                  -12644;14;0;false;false;0;0;0;;;
                                  -12658;1;0;false;false;;;;;;
                                  -12659;4;0;false;false;0;0;0;;;
                                  -12663;1;0;false;false;;;;;;
                                  -12664;1;0;false;false;0;0;0;;;
                                  -12665;6;0;false;false;;;;;;
                                  -12671;10;0;false;false;0;0;0;;;
                                  -12681;1;0;false;false;;;;;;
                                  -12682;9;0;false;false;0;0;0;;;
                                  -12691;1;0;false;false;;;;;;
                                  -12692;1;0;false;false;0;0;0;;;
                                  -12693;1;0;false;false;;;;;;
                                  -12694;4;1;false;false;127;0;85;;;
                                  -12698;1;0;false;false;0;0;0;;;
                                  -12699;6;0;false;false;;;;;;
                                  -12705;2;1;false;false;127;0;85;;;
                                  -12707;1;0;false;false;;;;;;
                                  -12708;34;0;false;false;0;0;0;;;
                                  -12742;1;0;false;false;;;;;;
                                  -12743;2;0;false;false;0;0;0;;;
                                  -12745;1;0;false;false;;;;;;
                                  -12746;20;0;false;false;0;0;0;;;
                                  -12766;1;0;false;false;;;;;;
                                  -12767;2;0;false;false;0;0;0;;;
                                  -12769;1;0;false;false;;;;;;
                                  -12770;4;1;false;false;127;0;85;;;
                                  -12774;1;0;false;false;0;0;0;;;
                                  -12775;1;0;false;false;;;;;;
                                  -12776;1;0;false;false;0;0;0;;;
                                  -12777;7;0;false;false;;;;;;
                                  -12784;9;0;false;false;0;0;0;;;
                                  -12793;1;0;false;false;;;;;;
                                  -12794;1;0;false;false;0;0;0;;;
                                  -12795;1;0;false;false;;;;;;
                                  -12796;12;0;false;false;0;0;0;;;
                                  -12808;1;0;false;false;;;;;;
                                  -12809;18;0;false;false;0;0;0;;;
                                  -12827;7;0;false;false;;;;;;
                                  -12834;20;0;false;false;0;0;0;;;
                                  -12854;1;0;false;false;;;;;;
                                  -12855;1;0;false;false;0;0;0;;;
                                  -12856;1;0;false;false;;;;;;
                                  -12857;4;1;false;false;127;0;85;;;
                                  -12861;1;0;false;false;0;0;0;;;
                                  -12862;6;0;false;false;;;;;;
                                  -12868;1;0;false;false;0;0;0;;;
                                  -12869;6;0;false;false;;;;;;
                                  -12875;2;1;false;false;127;0;85;;;
                                  -12877;1;0;false;false;;;;;;
                                  -12878;34;0;false;false;0;0;0;;;
                                  -12912;1;0;false;false;;;;;;
                                  -12913;2;0;false;false;0;0;0;;;
                                  -12915;1;0;false;false;;;;;;
                                  -12916;20;0;false;false;0;0;0;;;
                                  -12936;1;0;false;false;;;;;;
                                  -12937;2;0;false;false;0;0;0;;;
                                  -12939;1;0;false;false;;;;;;
                                  -12940;4;1;false;false;127;0;85;;;
                                  -12944;1;0;false;false;0;0;0;;;
                                  -12945;1;0;false;false;;;;;;
                                  -12946;1;0;false;false;0;0;0;;;
                                  -12947;7;0;false;false;;;;;;
                                  -12954;2;1;false;false;127;0;85;;;
                                  -12956;1;0;false;false;;;;;;
                                  -12957;10;0;false;false;0;0;0;;;
                                  -12967;1;0;false;false;;;;;;
                                  -12968;2;0;false;false;0;0;0;;;
                                  -12970;1;0;false;false;;;;;;
                                  -12971;4;1;false;false;127;0;85;;;
                                  -12975;1;0;false;false;0;0;0;;;
                                  -12976;1;0;false;false;;;;;;
                                  -12977;1;0;false;false;0;0;0;;;
                                  -12978;8;0;false;false;;;;;;
                                  -12986;9;0;false;false;0;0;0;;;
                                  -12995;1;0;false;false;;;;;;
                                  -12996;1;0;false;false;0;0;0;;;
                                  -12997;1;0;false;false;;;;;;
                                  -12998;12;0;false;false;0;0;0;;;
                                  -13010;1;0;false;false;;;;;;
                                  -13011;18;0;false;false;0;0;0;;;
                                  -13029;7;0;false;false;;;;;;
                                  -13036;1;0;false;false;0;0;0;;;
                                  -13037;7;0;false;false;;;;;;
                                  -13044;20;0;false;false;0;0;0;;;
                                  -13064;1;0;false;false;;;;;;
                                  -13065;1;0;false;false;0;0;0;;;
                                  -13066;1;0;false;false;;;;;;
                                  -13067;4;1;false;false;127;0;85;;;
                                  -13071;1;0;false;false;0;0;0;;;
                                  -13072;6;0;false;false;;;;;;
                                  -13078;1;0;false;false;0;0;0;;;
                                  -13079;6;0;false;false;;;;;;
                                  -13085;2;1;false;false;127;0;85;;;
                                  -13087;1;0;false;false;;;;;;
                                  -13088;33;0;false;false;0;0;0;;;
                                  -13121;1;0;false;false;;;;;;
                                  -13122;2;0;false;false;0;0;0;;;
                                  -13124;1;0;false;false;;;;;;
                                  -13125;19;0;false;false;0;0;0;;;
                                  -13144;1;0;false;false;;;;;;
                                  -13145;2;0;false;false;0;0;0;;;
                                  -13147;1;0;false;false;;;;;;
                                  -13148;11;0;false;false;0;0;0;;;
                                  -13159;1;0;false;false;;;;;;
                                  -13160;1;0;false;false;0;0;0;;;
                                  -13161;7;0;false;false;;;;;;
                                  -13168;2;1;false;false;127;0;85;;;
                                  -13170;1;0;false;false;;;;;;
                                  -13171;10;0;false;false;0;0;0;;;
                                  -13181;1;0;false;false;;;;;;
                                  -13182;2;0;false;false;0;0;0;;;
                                  -13184;1;0;false;false;;;;;;
                                  -13185;4;1;false;false;127;0;85;;;
                                  -13189;1;0;false;false;0;0;0;;;
                                  -13190;1;0;false;false;;;;;;
                                  -13191;1;0;false;false;0;0;0;;;
                                  -13192;8;0;false;false;;;;;;
                                  -13200;9;0;false;false;0;0;0;;;
                                  -13209;1;0;false;false;;;;;;
                                  -13210;1;0;false;false;0;0;0;;;
                                  -13211;1;0;false;false;;;;;;
                                  -13212;12;0;false;false;0;0;0;;;
                                  -13224;1;0;false;false;;;;;;
                                  -13225;18;0;false;false;0;0;0;;;
                                  -13243;7;0;false;false;;;;;;
                                  -13250;1;0;false;false;0;0;0;;;
                                  -13251;7;0;false;false;;;;;;
                                  -13258;19;0;false;false;0;0;0;;;
                                  -13277;1;0;false;false;;;;;;
                                  -13278;1;0;false;false;0;0;0;;;
                                  -13279;1;0;false;false;;;;;;
                                  -13280;11;0;false;false;0;0;0;;;
                                  -13291;6;0;false;false;;;;;;
                                  -13297;1;0;false;false;0;0;0;;;
                                  -13298;6;0;false;false;;;;;;
                                  -13304;2;1;false;false;127;0;85;;;
                                  -13306;1;0;false;false;;;;;;
                                  -13307;10;0;false;false;0;0;0;;;
                                  -13317;1;0;false;false;;;;;;
                                  -13318;2;0;false;false;0;0;0;;;
                                  -13320;1;0;false;false;;;;;;
                                  -13321;4;1;false;false;127;0;85;;;
                                  -13325;1;0;false;false;0;0;0;;;
                                  -13326;1;0;false;false;;;;;;
                                  -13327;1;0;false;false;0;0;0;;;
                                  -13328;7;0;false;false;;;;;;
                                  -13335;9;0;false;false;0;0;0;;;
                                  -13344;1;0;false;false;;;;;;
                                  -13345;1;0;false;false;0;0;0;;;
                                  -13346;1;0;false;false;;;;;;
                                  -13347;10;0;false;false;0;0;0;;;
                                  -13357;6;0;false;false;;;;;;
                                  -13363;1;0;false;false;0;0;0;;;
                                  -13364;5;0;false;false;;;;;;
                                  -13369;1;0;false;false;0;0;0;;;
                                  -13370;6;0;false;false;;;;;;
                                  -13376;15;0;false;false;0;0;0;;;
                                  -13391;3;1;false;false;127;0;85;;;
                                  -13394;1;0;false;false;;;;;;
                                  -13395;20;0;false;false;0;0;0;;;
                                  -13415;1;0;false;false;;;;;;
                                  -13416;7;0;false;false;0;0;0;;;
                                  -13423;4;0;false;false;;;;;;
                                  -13427;1;0;false;false;0;0;0;;;
                                  -13428;3;0;false;false;;;;;;
                                  -13431;1;0;false;false;0;0;0;;;
                                  -13432;3;0;false;false;;;;;;
                                  -13435;3;0;false;false;63;95;191;;;
                                  -13438;4;0;false;false;;;;;;
                                  -13442;1;0;false;false;63;95;191;;;
                                  -13443;1;0;false;false;;;;;;
                                  -13444;6;0;false;false;63;95;191;;;
                                  -13450;1;0;false;false;;;;;;
                                  -13451;3;0;false;false;63;95;191;;;
                                  -13454;1;0;false;false;;;;;;
                                  -13455;4;0;false;false;63;95;191;;;
                                  -13459;1;0;false;false;;;;;;
                                  -13460;2;0;false;false;63;95;191;;;
                                  -13462;1;0;false;false;;;;;;
                                  -13463;3;0;false;false;63;95;191;;;
                                  -13466;1;0;false;false;;;;;;
                                  -13467;9;0;false;false;63;95;191;;;
                                  -13476;1;0;false;false;;;;;;
                                  -13477;7;0;false;false;127;127;159;;;
                                  -13484;17;0;false;false;63;95;191;;;
                                  -13501;8;0;false;false;127;127;159;;;
                                  -13509;1;0;false;false;63;95;191;;;
                                  -13510;4;0;false;false;;;;;;
                                  -13514;1;0;false;false;63;95;191;;;
                                  -13515;1;0;false;false;;;;;;
                                  -13516;4;0;false;false;127;127;159;;;
                                  -13520;4;0;false;false;;;;;;
                                  -13524;1;0;false;false;63;95;191;;;
                                  -13525;1;0;false;false;;;;;;
                                  -13526;7;1;false;false;127;159;191;;;
                                  -13533;8;0;false;false;63;95;191;;;
                                  -13541;1;0;false;false;;;;;;
                                  -13542;3;0;false;false;63;95;191;;;
                                  -13545;1;0;false;false;;;;;;
                                  -13546;7;0;false;false;127;127;159;;;
                                  -13553;17;0;false;false;63;95;191;;;
                                  -13570;8;0;false;false;127;127;159;;;
                                  -13578;1;0;false;false;;;;;;
                                  -13579;2;0;false;false;63;95;191;;;
                                  -13581;1;0;false;false;;;;;;
                                  -13582;5;0;false;false;63;95;191;;;
                                  -13587;4;0;false;false;;;;;;
                                  -13591;2;0;false;false;63;95;191;;;
                                  -13593;3;0;false;false;;;;;;
                                  -13596;4;1;false;false;127;0;85;;;
                                  -13600;1;0;false;false;;;;;;
                                  -13601;29;0;false;false;0;0;0;;;
                                  -13630;1;0;false;false;;;;;;
                                  -13631;9;0;false;false;0;0;0;;;
                                  -13640;1;0;false;false;;;;;;
                                  -13641;1;0;false;false;0;0;0;;;
                                  -13642;4;0;false;false;;;;;;
                                  -13646;3;1;false;false;127;0;85;;;
                                  -13649;1;0;false;false;;;;;;
                                  -13650;12;0;false;false;0;0;0;;;
                                  -13662;1;0;false;false;;;;;;
                                  -13663;1;0;false;false;0;0;0;;;
                                  -13664;1;0;false;false;;;;;;
                                  -13665;2;0;false;false;0;0;0;;;
                                  -13667;8;0;false;false;;;;;;
                                  -13675;14;0;false;false;0;0;0;;;
                                  -13689;1;0;false;false;;;;;;
                                  -13690;1;0;false;false;0;0;0;;;
                                  -13691;1;0;false;false;;;;;;
                                  -13692;3;1;false;false;127;0;85;;;
                                  -13695;1;0;false;false;;;;;;
                                  -13696;17;0;false;false;0;0;0;;;
                                  -13713;4;0;false;false;;;;;;
                                  -13717;3;1;false;false;127;0;85;;;
                                  -13720;1;0;false;false;;;;;;
                                  -13721;1;0;false;false;0;0;0;;;
                                  -13722;3;1;false;false;127;0;85;;;
                                  -13725;1;0;false;false;;;;;;
                                  -13726;1;0;false;false;0;0;0;;;
                                  -13727;1;0;false;false;;;;;;
                                  -13728;1;0;false;false;0;0;0;;;
                                  -13729;1;0;false;false;;;;;;
                                  -13730;2;0;false;false;0;0;0;;;
                                  -13732;1;0;false;false;;;;;;
                                  -13733;1;0;false;false;0;0;0;;;
                                  -13734;1;0;false;false;;;;;;
                                  -13735;1;0;false;false;0;0;0;;;
                                  -13736;1;0;false;false;;;;;;
                                  -13737;24;0;false;false;0;0;0;;;
                                  -13761;1;0;false;false;;;;;;
                                  -13762;4;0;false;false;0;0;0;;;
                                  -13766;1;0;false;false;;;;;;
                                  -13767;1;0;false;false;0;0;0;;;
                                  -13768;5;0;false;false;;;;;;
                                  -13773;3;1;false;false;127;0;85;;;
                                  -13776;1;0;false;false;;;;;;
                                  -13777;16;0;false;false;0;0;0;;;
                                  -13793;5;0;false;false;;;;;;
                                  -13798;2;1;false;false;127;0;85;;;
                                  -13800;1;0;false;false;;;;;;
                                  -13801;2;0;false;false;0;0;0;;;
                                  -13803;1;0;false;false;;;;;;
                                  -13804;1;0;false;false;0;0;0;;;
                                  -13805;1;0;false;false;;;;;;
                                  -13806;23;0;false;false;0;0;0;;;
                                  -13829;1;0;false;false;;;;;;
                                  -13830;1;0;false;false;0;0;0;;;
                                  -13831;1;0;false;false;;;;;;
                                  -13832;2;0;false;false;0;0;0;;;
                                  -13834;1;0;false;false;;;;;;
                                  -13835;1;0;false;false;0;0;0;;;
                                  -13836;6;0;false;false;;;;;;
                                  -13842;15;0;false;false;0;0;0;;;
                                  -13857;1;0;false;false;;;;;;
                                  -13858;1;0;false;false;0;0;0;;;
                                  -13859;1;0;false;false;;;;;;
                                  -13860;26;0;false;false;0;0;0;;;
                                  -13886;1;0;false;false;;;;;;
                                  -13887;1;0;false;false;0;0;0;;;
                                  -13888;1;0;false;false;;;;;;
                                  -13889;3;0;false;false;0;0;0;;;
                                  -13892;5;0;false;false;;;;;;
                                  -13897;1;0;false;false;0;0;0;;;
                                  -13898;5;0;false;false;;;;;;
                                  -13903;4;1;false;false;127;0;85;;;
                                  -13907;1;0;false;false;;;;;;
                                  -13908;1;0;false;false;0;0;0;;;
                                  -13909;6;0;false;false;;;;;;
                                  -13915;15;0;false;false;0;0;0;;;
                                  -13930;1;0;false;false;;;;;;
                                  -13931;1;0;false;false;0;0;0;;;
                                  -13932;1;0;false;false;;;;;;
                                  -13933;24;0;false;false;0;0;0;;;
                                  -13957;5;0;false;false;;;;;;
                                  -13962;1;0;false;false;0;0;0;;;
                                  -13963;5;0;false;false;;;;;;
                                  -13968;45;0;false;false;0;0;0;;;
                                  -14013;1;0;false;false;;;;;;
                                  -14014;2;0;false;false;0;0;0;;;
                                  -14016;1;0;false;false;;;;;;
                                  -14017;35;0;false;false;0;0;0;;;
                                  -14052;1;0;false;false;;;;;;
                                  -14053;15;0;false;false;0;0;0;;;
                                  -14068;1;0;false;false;;;;;;
                                  -14069;1;0;false;false;0;0;0;;;
                                  -14070;1;0;false;false;;;;;;
                                  -14071;15;0;false;false;0;0;0;;;
                                  -14086;5;0;false;false;;;;;;
                                  -14091;12;0;false;false;0;0;0;;;
                                  -14103;1;0;false;false;;;;;;
                                  -14104;1;0;false;false;0;0;0;;;
                                  -14105;1;0;false;false;;;;;;
                                  -14106;16;0;false;false;0;0;0;;;
                                  -14122;4;0;false;false;;;;;;
                                  -14126;1;0;false;false;0;0;0;;;
                                  -14127;3;0;false;false;;;;;;
                                  -14130;1;0;false;false;0;0;0;;;
                                  -14131;3;0;false;false;;;;;;
                                  -14134;3;0;false;false;63;95;191;;;
                                  -14137;4;0;false;false;;;;;;
                                  -14141;1;0;false;false;63;95;191;;;
                                  -14142;1;0;false;false;;;;;;
                                  -14143;8;0;false;false;63;95;191;;;
                                  -14151;1;0;false;false;;;;;;
                                  -14152;3;0;false;false;63;95;191;;;
                                  -14155;1;0;false;false;;;;;;
                                  -14156;7;0;false;false;63;95;191;;;
                                  -14163;1;0;false;false;;;;;;
                                  -14164;6;0;false;false;63;95;191;;;
                                  -14170;1;0;false;false;;;;;;
                                  -14171;2;0;false;false;63;95;191;;;
                                  -14173;1;0;false;false;;;;;;
                                  -14174;3;0;false;false;63;95;191;;;
                                  -14177;1;0;false;false;;;;;;
                                  -14178;6;0;false;false;63;95;191;;;
                                  -14184;1;0;false;false;;;;;;
                                  -14185;4;0;false;false;63;95;191;;;
                                  -14189;1;0;false;false;;;;;;
                                  -14190;11;0;false;false;63;95;191;;;
                                  -14201;1;0;false;false;;;;;;
                                  -14202;3;0;false;false;63;95;191;;;
                                  -14205;5;0;false;false;;;;;;
                                  -14210;1;0;false;false;63;95;191;;;
                                  -14211;1;0;false;false;;;;;;
                                  -14212;4;0;false;false;63;95;191;;;
                                  -14216;1;0;false;false;;;;;;
                                  -14217;6;0;false;false;63;95;191;;;
                                  -14223;1;0;false;false;;;;;;
                                  -14224;4;0;false;false;63;95;191;;;
                                  -14228;1;0;false;false;;;;;;
                                  -14229;7;0;false;false;63;95;191;;;
                                  -14236;1;0;false;false;;;;;;
                                  -14237;7;0;false;false;63;95;191;;;
                                  -14244;4;0;false;false;;;;;;
                                  -14248;2;0;false;false;63;95;191;;;
                                  -14250;3;0;false;false;;;;;;
                                  -14253;4;1;false;false;127;0;85;;;
                                  -14257;1;0;false;false;;;;;;
                                  -14258;21;0;false;false;0;0;0;;;
                                  -14279;1;0;false;false;;;;;;
                                  -14280;1;0;false;false;0;0;0;;;
                                  -14281;4;0;false;false;;;;;;
                                  -14285;11;0;false;false;0;0;0;;;
                                  -14296;1;0;false;false;;;;;;
                                  -14297;6;0;false;false;0;0;0;;;
                                  -14303;1;0;false;false;;;;;;
                                  -14304;1;0;false;false;0;0;0;;;
                                  -14305;1;0;false;false;;;;;;
                                  -14306;27;0;false;false;0;0;0;;;
                                  -14333;4;0;false;false;;;;;;
                                  -14337;13;0;false;false;0;0;0;;;
                                  -14350;1;0;false;false;;;;;;
                                  -14351;1;0;false;false;0;0;0;;;
                                  -14352;1;0;false;false;;;;;;
                                  -14353;3;1;false;false;127;0;85;;;
                                  -14356;1;0;false;false;;;;;;
                                  -14357;12;0;false;false;0;0;0;;;
                                  -14369;4;0;false;false;;;;;;
                                  -14373;5;1;false;false;127;0;85;;;
                                  -14378;1;0;false;false;;;;;;
                                  -14379;26;0;false;false;0;0;0;;;
                                  -14405;1;0;false;false;;;;;;
                                  -14406;1;0;false;false;0;0;0;;;
                                  -14407;5;0;false;false;;;;;;
                                  -14412;15;0;false;false;0;0;0;;;
                                  -14427;1;0;false;false;;;;;;
                                  -14428;5;0;false;false;0;0;0;;;
                                  -14433;1;0;false;false;;;;;;
                                  -14434;1;0;false;false;0;0;0;;;
                                  -14435;1;0;false;false;;;;;;
                                  -14436;17;0;false;false;0;0;0;;;
                                  -14453;1;0;false;false;;;;;;
                                  -14454;21;0;false;false;0;0;0;;;
                                  -14475;5;0;false;false;;;;;;
                                  -14480;20;0;false;false;0;0;0;;;
                                  -14500;1;0;false;false;;;;;;
                                  -14501;1;0;false;false;0;0;0;;;
                                  -14502;1;0;false;false;;;;;;
                                  -14503;38;0;false;false;0;0;0;;;
                                  -14541;4;0;false;false;;;;;;
                                  -14545;1;0;false;false;0;0;0;;;
                                  -14546;8;0;false;false;;;;;;
                                  -14554;6;0;false;false;0;0;0;;;
                                  -14560;1;0;false;false;;;;;;
                                  -14561;1;0;false;false;0;0;0;;;
                                  -14562;1;0;false;false;;;;;;
                                  -14563;22;0;false;false;0;0;0;;;
                                  -14585;4;0;false;false;;;;;;
                                  -14589;5;1;false;false;127;0;85;;;
                                  -14594;1;0;false;false;;;;;;
                                  -14595;26;0;false;false;0;0;0;;;
                                  -14621;1;0;false;false;;;;;;
                                  -14622;1;0;false;false;0;0;0;;;
                                  -14623;5;0;false;false;;;;;;
                                  -14628;15;0;false;false;0;0;0;;;
                                  -14643;1;0;false;false;;;;;;
                                  -14644;5;0;false;false;0;0;0;;;
                                  -14649;1;0;false;false;;;;;;
                                  -14650;1;0;false;false;0;0;0;;;
                                  -14651;1;0;false;false;;;;;;
                                  -14652;17;0;false;false;0;0;0;;;
                                  -14669;1;0;false;false;;;;;;
                                  -14670;21;0;false;false;0;0;0;;;
                                  -14691;5;0;false;false;;;;;;
                                  -14696;3;1;false;false;127;0;85;;;
                                  -14699;1;0;false;false;;;;;;
                                  -14700;1;0;false;false;0;0;0;;;
                                  -14701;3;1;false;false;127;0;85;;;
                                  -14704;1;0;false;false;;;;;;
                                  -14705;1;0;false;false;0;0;0;;;
                                  -14706;1;0;false;false;;;;;;
                                  -14707;1;0;false;false;0;0;0;;;
                                  -14708;1;0;false;false;;;;;;
                                  -14709;2;0;false;false;0;0;0;;;
                                  -14711;1;0;false;false;;;;;;
                                  -14712;1;0;false;false;0;0;0;;;
                                  -14713;1;0;false;false;;;;;;
                                  -14714;1;0;false;false;0;0;0;;;
                                  -14715;1;0;false;false;;;;;;
                                  -14716;20;0;false;false;0;0;0;;;
                                  -14736;1;0;false;false;;;;;;
                                  -14737;4;0;false;false;0;0;0;;;
                                  -14741;1;0;false;false;;;;;;
                                  -14742;1;0;false;false;0;0;0;;;
                                  -14743;6;0;false;false;;;;;;
                                  -14749;10;0;false;false;0;0;0;;;
                                  -14759;1;0;false;false;;;;;;
                                  -14760;5;0;false;false;0;0;0;;;
                                  -14765;1;0;false;false;;;;;;
                                  -14766;1;0;false;false;0;0;0;;;
                                  -14767;1;0;false;false;;;;;;
                                  -14768;16;0;false;false;0;0;0;;;
                                  -14784;6;0;false;false;;;;;;
                                  -14790;5;0;false;false;0;0;0;;;
                                  -14795;1;0;false;false;;;;;;
                                  -14796;17;0;false;false;0;0;0;;;
                                  -14813;1;0;false;false;;;;;;
                                  -14814;1;0;false;false;0;0;0;;;
                                  -14815;1;0;false;false;;;;;;
                                  -14816;34;0;false;false;0;0;0;;;
                                  -14850;6;0;false;false;;;;;;
                                  -14856;5;0;false;false;0;0;0;;;
                                  -14861;1;0;false;false;;;;;;
                                  -14862;17;0;false;false;0;0;0;;;
                                  -14879;1;0;false;false;;;;;;
                                  -14880;1;0;false;false;0;0;0;;;
                                  -14881;1;0;false;false;;;;;;
                                  -14882;34;0;false;false;0;0;0;;;
                                  -14916;12;0;false;false;;;;;;
                                  -14928;2;1;false;false;127;0;85;;;
                                  -14930;1;0;false;false;;;;;;
                                  -14931;18;0;false;false;0;0;0;;;
                                  -14949;1;0;false;false;;;;;;
                                  -14950;2;0;false;false;0;0;0;;;
                                  -14952;1;0;false;false;;;;;;
                                  -14953;16;0;false;false;0;0;0;;;
                                  -14969;1;0;false;false;;;;;;
                                  -14970;2;0;false;false;0;0;0;;;
                                  -14972;8;0;false;false;;;;;;
                                  -14980;17;0;false;false;0;0;0;;;
                                  -14997;1;0;false;false;;;;;;
                                  -14998;2;0;false;false;0;0;0;;;
                                  -15000;1;0;false;false;;;;;;
                                  -15001;17;0;false;false;0;0;0;;;
                                  -15018;1;0;false;false;;;;;;
                                  -15019;1;0;false;false;0;0;0;;;
                                  -15020;7;0;false;false;;;;;;
                                  -15027;5;0;false;false;0;0;0;;;
                                  -15032;1;0;false;false;;;;;;
                                  -15033;1;0;false;false;0;0;0;;;
                                  -15034;1;0;false;false;;;;;;
                                  -15035;12;0;false;false;0;0;0;;;
                                  -15047;1;0;false;false;;;;;;
                                  -15048;14;0;false;false;0;0;0;;;
                                  -15062;7;0;false;false;;;;;;
                                  -15069;16;0;false;false;0;0;0;;;
                                  -15085;1;0;false;false;;;;;;
                                  -15086;1;0;false;false;0;0;0;;;
                                  -15087;1;0;false;false;;;;;;
                                  -15088;18;0;false;false;0;0;0;;;
                                  -15106;7;0;false;false;;;;;;
                                  -15113;16;0;false;false;0;0;0;;;
                                  -15129;1;0;false;false;;;;;;
                                  -15130;1;0;false;false;0;0;0;;;
                                  -15131;1;0;false;false;;;;;;
                                  -15132;18;0;false;false;0;0;0;;;
                                  -15150;7;0;false;false;;;;;;
                                  -15157;15;0;false;false;0;0;0;;;
                                  -15172;1;0;false;false;;;;;;
                                  -15173;1;0;false;false;0;0;0;;;
                                  -15174;1;0;false;false;;;;;;
                                  -15175;6;0;false;false;0;0;0;;;
                                  -15181;6;0;false;false;;;;;;
                                  -15187;1;0;false;false;0;0;0;;;
                                  -15188;5;0;false;false;;;;;;
                                  -15193;1;0;false;false;0;0;0;;;
                                  -15194;4;0;false;false;;;;;;
                                  -15198;1;0;false;false;0;0;0;;;
                                  -15199;5;0;false;false;;;;;;
                                  -15204;1;0;false;false;0;0;0;;;
                                  -15205;3;0;false;false;;;;;;
                                  -15208;3;0;false;false;63;95;191;;;
                                  -15211;4;0;false;false;;;;;;
                                  -15215;1;0;false;false;63;95;191;;;
                                  -15216;1;0;false;false;;;;;;
                                  -15217;8;0;false;false;63;95;191;;;
                                  -15225;1;0;false;false;;;;;;
                                  -15226;2;0;false;false;63;95;191;;;
                                  -15228;1;0;false;false;;;;;;
                                  -15229;3;0;false;false;63;95;191;;;
                                  -15232;1;0;false;false;;;;;;
                                  -15233;9;0;false;false;63;95;191;;;
                                  -15242;1;0;false;false;;;;;;
                                  -15243;3;0;false;false;63;95;191;;;
                                  -15246;1;0;false;false;;;;;;
                                  -15247;3;0;false;false;63;95;191;;;
                                  -15250;1;0;false;false;;;;;;
                                  -15251;7;0;false;false;127;127;159;;;
                                  -15258;13;0;false;false;63;95;191;;;
                                  -15271;8;0;false;false;127;127;159;;;
                                  -15279;1;0;false;false;63;95;191;;;
                                  -15280;4;0;false;false;;;;;;
                                  -15284;2;0;false;false;63;95;191;;;
                                  -15286;3;0;false;false;;;;;;
                                  -15289;4;1;false;false;127;0;85;;;
                                  -15293;1;0;false;false;;;;;;
                                  -15294;9;0;false;false;0;0;0;;;
                                  -15303;1;0;false;false;;;;;;
                                  -15304;1;0;false;false;0;0;0;;;
                                  -15305;4;0;false;false;;;;;;
                                  -15309;2;1;false;false;127;0;85;;;
                                  -15311;1;0;false;false;;;;;;
                                  -15312;14;0;false;false;0;0;0;;;
                                  -15326;1;0;false;false;;;;;;
                                  -15327;2;0;false;false;0;0;0;;;
                                  -15329;1;0;false;false;;;;;;
                                  -15330;4;1;false;false;127;0;85;;;
                                  -15334;1;0;false;false;0;0;0;;;
                                  -15335;1;0;false;false;;;;;;
                                  -15336;1;0;false;false;0;0;0;;;
                                  -15337;5;0;false;false;;;;;;
                                  -15342;11;0;false;false;0;0;0;;;
                                  -15353;1;0;false;false;;;;;;
                                  -15354;6;0;false;false;0;0;0;;;
                                  -15360;1;0;false;false;;;;;;
                                  -15361;1;0;false;false;0;0;0;;;
                                  -15362;1;0;false;false;;;;;;
                                  -15363;25;0;false;false;0;0;0;;;
                                  -15388;10;0;false;false;;;;;;
                                  -15398;5;1;false;false;127;0;85;;;
                                  -15403;1;0;false;false;;;;;;
                                  -15404;26;0;false;false;0;0;0;;;
                                  -15430;1;0;false;false;;;;;;
                                  -15431;1;0;false;false;0;0;0;;;
                                  -15432;6;0;false;false;;;;;;
                                  -15438;5;0;false;false;0;0;0;;;
                                  -15443;1;0;false;false;;;;;;
                                  -15444;5;0;false;false;0;0;0;;;
                                  -15449;1;0;false;false;;;;;;
                                  -15450;1;0;false;false;0;0;0;;;
                                  -15451;1;0;false;false;;;;;;
                                  -15452;7;0;false;false;0;0;0;;;
                                  -15459;1;0;false;false;;;;;;
                                  -15460;21;0;false;false;0;0;0;;;
                                  -15481;6;0;false;false;;;;;;
                                  -15487;16;0;false;false;0;0;0;;;
                                  -15503;5;0;false;false;;;;;;
                                  -15508;1;0;false;false;0;0;0;;;
                                  -15509;5;0;false;false;;;;;;
                                  -15514;13;0;false;false;0;0;0;;;
                                  -15527;1;0;false;false;;;;;;
                                  -15528;1;0;false;false;0;0;0;;;
                                  -15529;1;0;false;false;;;;;;
                                  -15530;4;1;false;false;127;0;85;;;
                                  -15534;1;0;false;false;0;0;0;;;
                                  -15535;4;0;false;false;;;;;;
                                  -15539;1;0;false;false;0;0;0;;;
                                  -15540;4;0;false;false;;;;;;
                                  -15544;2;1;false;false;127;0;85;;;
                                  -15546;1;0;false;false;;;;;;
                                  -15547;3;0;false;false;0;0;0;;;
                                  -15550;1;0;false;false;;;;;;
                                  -15551;2;0;false;false;0;0;0;;;
                                  -15553;1;0;false;false;;;;;;
                                  -15554;4;1;false;false;127;0;85;;;
                                  -15558;1;0;false;false;0;0;0;;;
                                  -15559;1;0;false;false;;;;;;
                                  -15560;1;0;false;false;0;0;0;;;
                                  -15561;5;0;false;false;;;;;;
                                  -15566;13;0;false;false;0;0;0;;;
                                  -15579;5;0;false;false;;;;;;
                                  -15584;2;0;false;false;0;0;0;;;
                                  -15586;1;0;false;false;;;;;;
                                  -15587;1;0;false;false;0;0;0;;;
                                  -15588;1;0;false;false;;;;;;
                                  -15589;4;1;false;false;127;0;85;;;
                                  -15593;1;0;false;false;0;0;0;;;
                                  -15594;4;0;false;false;;;;;;
                                  -15598;1;0;false;false;0;0;0;;;
                                  -15599;4;0;false;false;;;;;;
                                  -15603;2;1;false;false;127;0;85;;;
                                  -15605;1;0;false;false;;;;;;
                                  -15606;12;0;false;false;0;0;0;;;
                                  -15618;1;0;false;false;;;;;;
                                  -15619;2;0;false;false;0;0;0;;;
                                  -15621;1;0;false;false;;;;;;
                                  -15622;4;1;false;false;127;0;85;;;
                                  -15626;1;0;false;false;0;0;0;;;
                                  -15627;1;0;false;false;;;;;;
                                  -15628;1;0;false;false;0;0;0;;;
                                  -15629;5;0;false;false;;;;;;
                                  -15634;22;0;false;false;0;0;0;;;
                                  -15656;5;0;false;false;;;;;;
                                  -15661;11;0;false;false;0;0;0;;;
                                  -15672;1;0;false;false;;;;;;
                                  -15673;1;0;false;false;0;0;0;;;
                                  -15674;1;0;false;false;;;;;;
                                  -15675;4;1;false;false;127;0;85;;;
                                  -15679;1;0;false;false;0;0;0;;;
                                  -15680;4;0;false;false;;;;;;
                                  -15684;1;0;false;false;0;0;0;;;
                                  -15685;4;0;false;false;;;;;;
                                  -15689;2;1;false;false;127;0;85;;;
                                  -15691;1;0;false;false;;;;;;
                                  -15692;9;0;false;false;0;0;0;;;
                                  -15701;1;0;false;false;;;;;;
                                  -15702;2;0;false;false;0;0;0;;;
                                  -15704;1;0;false;false;;;;;;
                                  -15705;4;1;false;false;127;0;85;;;
                                  -15709;1;0;false;false;0;0;0;;;
                                  -15710;1;0;false;false;;;;;;
                                  -15711;1;0;false;false;0;0;0;;;
                                  -15712;5;0;false;false;;;;;;
                                  -15717;19;0;false;false;0;0;0;;;
                                  -15736;5;0;false;false;;;;;;
                                  -15741;8;0;false;false;0;0;0;;;
                                  -15749;1;0;false;false;;;;;;
                                  -15750;1;0;false;false;0;0;0;;;
                                  -15751;1;0;false;false;;;;;;
                                  -15752;4;1;false;false;127;0;85;;;
                                  -15756;1;0;false;false;0;0;0;;;
                                  -15757;4;0;false;false;;;;;;
                                  -15761;1;0;false;false;0;0;0;;;
                                  -15762;3;0;false;false;;;;;;
                                  -15765;1;0;false;false;0;0;0;;;
                                  -15766;3;0;false;false;;;;;;
                                  -15769;3;0;false;false;63;95;191;;;
                                  -15772;4;0;false;false;;;;;;
                                  -15776;1;0;false;false;63;95;191;;;
                                  -15777;1;0;false;false;;;;;;
                                  -15778;6;0;false;false;63;95;191;;;
                                  -15784;1;0;false;false;;;;;;
                                  -15785;8;0;false;false;63;95;191;;;
                                  -15793;1;0;false;false;;;;;;
                                  -15794;3;0;false;false;63;95;191;;;
                                  -15797;1;0;false;false;;;;;;
                                  -15798;9;0;false;false;63;95;191;;;
                                  -15807;1;0;false;false;;;;;;
                                  -15808;5;0;false;false;63;95;191;;;
                                  -15813;4;0;false;false;;;;;;
                                  -15817;1;0;false;false;63;95;191;;;
                                  -15818;5;0;false;false;;;;;;
                                  -15823;1;0;false;false;63;95;191;;;
                                  -15824;1;0;false;false;;;;;;
                                  -15825;7;1;false;false;127;159;191;;;
                                  -15832;4;0;false;false;63;95;191;;;
                                  -15836;1;0;false;false;;;;;;
                                  -15837;4;0;false;false;63;95;191;;;
                                  -15841;1;0;false;false;;;;;;
                                  -15842;4;0;false;false;63;95;191;;;
                                  -15846;1;0;false;false;;;;;;
                                  -15847;3;0;false;false;63;95;191;;;
                                  -15850;1;0;false;false;;;;;;
                                  -15851;7;0;false;false;63;95;191;;;
                                  -15858;4;0;false;false;;;;;;
                                  -15862;2;0;false;false;63;95;191;;;
                                  -15864;3;0;false;false;;;;;;
                                  -15867;4;1;false;false;127;0;85;;;
                                  -15871;1;0;false;false;;;;;;
                                  -15872;8;0;false;false;0;0;0;;;
                                  -15880;3;1;false;false;127;0;85;;;
                                  -15883;1;0;false;false;;;;;;
                                  -15884;5;0;false;false;0;0;0;;;
                                  -15889;1;0;false;false;;;;;;
                                  -15890;1;0;false;false;0;0;0;;;
                                  -15891;4;0;false;false;;;;;;
                                  -15895;21;0;false;false;0;0;0;;;
                                  -15916;1;0;false;false;;;;;;
                                  -15917;5;1;false;false;127;0;85;;;
                                  -15922;2;0;false;false;0;0;0;;;
                                  -15924;4;0;false;false;;;;;;
                                  -15928;18;0;false;false;0;0;0;;;
                                  -15946;3;0;false;false;;;;;;
                                  -15949;1;0;false;false;0;0;0;;;
                                  -15950;3;0;false;false;;;;;;
                                  -15953;3;0;false;false;63;95;191;;;
                                  -15956;4;0;false;false;;;;;;
                                  -15960;1;0;false;false;63;95;191;;;
                                  -15961;1;0;false;false;;;;;;
                                  -15962;7;0;false;false;63;95;191;;;
                                  -15969;1;0;false;false;;;;;;
                                  -15970;1;0;false;false;63;95;191;;;
                                  -15971;1;0;false;false;;;;;;
                                  -15972;7;0;false;false;127;127;159;;;
                                  -15979;13;0;false;false;63;95;191;;;
                                  -15992;8;0;false;false;127;127;159;;;
                                  -16000;1;0;false;false;;;;;;
                                  -16001;3;0;false;false;63;95;191;;;
                                  -16004;1;0;false;false;;;;;;
                                  -16005;9;0;false;false;63;95;191;;;
                                  -16014;1;0;false;false;;;;;;
                                  -16015;3;0;false;false;63;95;191;;;
                                  -16018;1;0;false;false;;;;;;
                                  -16019;4;0;false;false;63;95;191;;;
                                  -16023;1;0;false;false;;;;;;
                                  -16024;5;0;false;false;63;95;191;;;
                                  -16029;4;0;false;false;;;;;;
                                  -16033;1;0;false;false;63;95;191;;;
                                  -16034;1;0;false;false;;;;;;
                                  -16035;2;0;false;false;63;95;191;;;
                                  -16037;1;0;false;false;;;;;;
                                  -16038;6;0;false;false;63;95;191;;;
                                  -16044;4;0;false;false;;;;;;
                                  -16048;2;0;false;false;63;95;191;;;
                                  -16050;3;0;false;false;;;;;;
                                  -16053;4;1;false;false;127;0;85;;;
                                  -16057;1;0;false;false;;;;;;
                                  -16058;20;0;false;false;0;0;0;;;
                                  -16078;1;0;false;false;;;;;;
                                  -16079;1;0;false;false;0;0;0;;;
                                  -16080;4;0;false;false;;;;;;
                                  -16084;9;0;false;false;0;0;0;;;
                                  -16093;1;0;false;false;;;;;;
                                  -16094;4;0;false;false;0;0;0;;;
                                  -16098;1;0;false;false;;;;;;
                                  -16099;1;0;false;false;0;0;0;;;
                                  -16100;1;0;false;false;;;;;;
                                  -16101;22;0;false;false;0;0;0;;;
                                  -16123;1;0;false;false;;;;;;
                                  -16124;2;0;false;false;0;0;0;;;
                                  -16126;1;0;false;false;;;;;;
                                  -16127;2;0;false;false;0;0;0;;;
                                  -16129;1;0;false;false;;;;;;
                                  -16130;3;0;false;false;0;0;0;;;
                                  -16133;4;0;false;false;;;;;;
                                  -16137;5;0;false;false;0;0;0;;;
                                  -16142;1;0;false;false;;;;;;
                                  -16143;3;0;false;false;0;0;0;;;
                                  -16146;1;0;false;false;;;;;;
                                  -16147;1;0;false;false;0;0;0;;;
                                  -16148;1;0;false;false;;;;;;
                                  -16149;17;0;false;false;0;0;0;;;
                                  -16166;8;0;false;false;;;;;;
                                  -16174;11;0;false;false;0;0;0;;;
                                  -16185;1;0;false;false;;;;;;
                                  -16186;1;0;false;false;0;0;0;;;
                                  -16187;1;0;false;false;;;;;;
                                  -16188;3;1;false;false;127;0;85;;;
                                  -16191;1;0;false;false;;;;;;
                                  -16192;13;0;false;false;0;0;0;;;
                                  -16205;1;0;false;false;;;;;;
                                  -16206;26;0;false;false;0;0;0;;;
                                  -16232;1;0;false;false;;;;;;
                                  -16233;28;0;false;false;0;0;0;;;
                                  -16261;1;0;false;false;;;;;;
                                  -16262;12;0;false;false;0;0;0;;;
                                  -16274;4;0;false;false;;;;;;
                                  -16278;10;0;false;false;0;0;0;;;
                                  -16288;1;0;false;false;;;;;;
                                  -16289;1;0;false;false;0;0;0;;;
                                  -16290;1;0;false;false;;;;;;
                                  -16291;24;0;false;false;0;0;0;;;
                                  -16315;4;0;false;false;;;;;;
                                  -16319;9;0;false;false;0;0;0;;;
                                  -16328;1;0;false;false;;;;;;
                                  -16329;1;0;false;false;0;0;0;;;
                                  -16330;1;0;false;false;;;;;;
                                  -16331;17;0;false;false;0;0;0;;;
                                  -16348;4;0;false;false;;;;;;
                                  -16352;32;0;false;false;63;127;95;;;
                                  -16384;2;0;false;false;;;;;;
                                  -16386;12;0;false;false;0;0;0;;;
                                  -16398;1;0;false;false;;;;;;
                                  -16399;1;0;false;false;0;0;0;;;
                                  -16400;1;0;false;false;;;;;;
                                  -16401;5;0;false;false;0;0;0;;;
                                  -16406;1;0;false;false;;;;;;
                                  -16407;1;0;false;false;0;0;0;;;
                                  -16408;1;0;false;false;;;;;;
                                  -16409;7;0;false;false;0;0;0;;;
                                  -16416;9;0;false;false;;;;;;
                                  -16425;12;0;false;false;0;0;0;;;
                                  -16437;1;0;false;false;;;;;;
                                  -16438;1;0;false;false;0;0;0;;;
                                  -16439;1;0;false;false;;;;;;
                                  -16440;5;0;false;false;0;0;0;;;
                                  -16445;1;0;false;false;;;;;;
                                  -16446;1;0;false;false;0;0;0;;;
                                  -16447;1;0;false;false;;;;;;
                                  -16448;7;0;false;false;0;0;0;;;
                                  -16455;4;0;false;false;;;;;;
                                  -16459;16;0;false;false;0;0;0;;;
                                  -16475;1;0;false;false;;;;;;
                                  -16476;2;0;false;false;0;0;0;;;
                                  -16478;1;0;false;false;;;;;;
                                  -16479;13;0;false;false;0;0;0;;;
                                  -16492;1;0;false;false;;;;;;
                                  -16493;1;0;false;false;0;0;0;;;
                                  -16494;1;0;false;false;;;;;;
                                  -16495;12;0;false;false;0;0;0;;;
                                  -16507;4;0;false;false;;;;;;
                                  -16511;17;0;false;false;0;0;0;;;
                                  -16528;1;0;false;false;;;;;;
                                  -16529;2;0;false;false;0;0;0;;;
                                  -16531;1;0;false;false;;;;;;
                                  -16532;13;0;false;false;0;0;0;;;
                                  -16545;1;0;false;false;;;;;;
                                  -16546;1;0;false;false;0;0;0;;;
                                  -16547;1;0;false;false;;;;;;
                                  -16548;13;0;false;false;0;0;0;;;
                                  -16561;9;0;false;false;;;;;;
                                  -16570;61;0;false;false;63;127;95;;;
                                  -16631;2;0;false;false;;;;;;
                                  -16633;3;1;false;false;127;0;85;;;
                                  -16636;1;0;false;false;;;;;;
                                  -16637;5;0;false;false;0;0;0;;;
                                  -16642;1;0;false;false;;;;;;
                                  -16643;1;0;false;false;0;0;0;;;
                                  -16644;1;0;false;false;;;;;;
                                  -16645;8;0;false;false;0;0;0;;;
                                  -16653;1;0;false;false;;;;;;
                                  -16654;1;0;false;false;0;0;0;;;
                                  -16655;1;0;false;false;;;;;;
                                  -16656;17;0;false;false;0;0;0;;;
                                  -16673;1;0;false;false;;;;;;
                                  -16674;1;0;false;false;0;0;0;;;
                                  -16675;1;0;false;false;;;;;;
                                  -16676;18;0;false;false;0;0;0;;;
                                  -16694;4;0;false;false;;;;;;
                                  -16698;2;0;false;false;0;0;0;;;
                                  -16700;1;0;false;false;;;;;;
                                  -16701;1;0;false;false;0;0;0;;;
                                  -16702;1;0;false;false;;;;;;
                                  -16703;3;1;false;false;127;0;85;;;
                                  -16706;1;0;false;false;;;;;;
                                  -16707;11;0;false;false;0;0;0;;;
                                  -16718;1;0;false;false;;;;;;
                                  -16719;7;0;false;false;0;0;0;;;
                                  -16726;4;0;false;false;;;;;;
                                  -16730;24;0;false;false;0;0;0;;;
                                  -16754;4;0;false;false;;;;;;
                                  -16758;8;0;false;false;0;0;0;;;
                                  -16766;1;0;false;false;;;;;;
                                  -16767;1;0;false;false;0;0;0;;;
                                  -16768;1;0;false;false;;;;;;
                                  -16769;3;1;false;false;127;0;85;;;
                                  -16772;1;0;false;false;;;;;;
                                  -16773;14;0;false;false;0;0;0;;;
                                  -16787;5;0;false;false;;;;;;
                                  -16792;8;0;false;false;0;0;0;;;
                                  -16800;1;0;false;false;;;;;;
                                  -16801;12;0;false;false;0;0;0;;;
                                  -16813;1;0;false;false;;;;;;
                                  -16814;3;0;false;false;0;0;0;;;
                                  -16817;1;0;false;false;;;;;;
                                  -16818;15;0;false;false;0;0;0;;;
                                  -16833;5;0;false;false;;;;;;
                                  -16838;16;0;false;false;0;0;0;;;
                                  -16854;1;0;false;false;;;;;;
                                  -16855;11;0;false;false;0;0;0;;;
                                  -16866;1;0;false;false;;;;;;
                                  -16867;13;0;false;false;0;0;0;;;
                                  -16880;6;0;false;false;;;;;;
                                  -16886;17;0;false;false;0;0;0;;;
                                  -16903;1;0;false;false;;;;;;
                                  -16904;12;0;false;false;0;0;0;;;
                                  -16916;4;0;false;false;;;;;;
                                  -16920;2;1;false;false;127;0;85;;;
                                  -16922;1;0;false;false;;;;;;
                                  -16923;20;0;false;false;0;0;0;;;
                                  -16943;1;0;false;false;;;;;;
                                  -16944;2;0;false;false;0;0;0;;;
                                  -16946;1;0;false;false;;;;;;
                                  -16947;4;1;false;false;127;0;85;;;
                                  -16951;1;0;false;false;0;0;0;;;
                                  -16952;1;0;false;false;;;;;;
                                  -16953;1;0;false;false;0;0;0;;;
                                  -16954;5;0;false;false;;;;;;
                                  -16959;3;1;false;false;127;0;85;;;
                                  -16962;1;0;false;false;;;;;;
                                  -16963;10;0;false;false;0;0;0;;;
                                  -16973;1;0;false;false;;;;;;
                                  -16974;1;0;false;false;0;0;0;;;
                                  -16975;1;0;false;false;;;;;;
                                  -16976;25;0;false;false;0;0;0;;;
                                  -17001;5;0;false;false;;;;;;
                                  -17006;12;0;false;false;0;0;0;;;
                                  -17018;1;0;false;false;;;;;;
                                  -17019;2;0;false;false;0;0;0;;;
                                  -17021;1;0;false;false;;;;;;
                                  -17022;10;0;false;false;0;0;0;;;
                                  -17032;1;0;false;false;;;;;;
                                  -17033;1;0;false;false;0;0;0;;;
                                  -17034;1;0;false;false;;;;;;
                                  -17035;2;0;false;false;0;0;0;;;
                                  -17037;5;0;false;false;;;;;;
                                  -17042;17;0;false;false;0;0;0;;;
                                  -17059;1;0;false;false;;;;;;
                                  -17060;2;0;false;false;0;0;0;;;
                                  -17062;1;0;false;false;;;;;;
                                  -17063;10;0;false;false;0;0;0;;;
                                  -17073;1;0;false;false;;;;;;
                                  -17074;1;0;false;false;0;0;0;;;
                                  -17075;1;0;false;false;;;;;;
                                  -17076;2;0;false;false;0;0;0;;;
                                  -17078;4;0;false;false;;;;;;
                                  -17082;1;0;false;false;0;0;0;;;
                                  -17083;4;0;false;false;;;;;;
                                  -17087;2;1;false;false;127;0;85;;;
                                  -17089;1;0;false;false;;;;;;
                                  -17090;20;0;false;false;0;0;0;;;
                                  -17110;1;0;false;false;;;;;;
                                  -17111;2;0;false;false;0;0;0;;;
                                  -17113;1;0;false;false;;;;;;
                                  -17114;4;1;false;false;127;0;85;;;
                                  -17118;1;0;false;false;0;0;0;;;
                                  -17119;1;0;false;false;;;;;;
                                  -17120;1;0;false;false;0;0;0;;;
                                  -17121;5;0;false;false;;;;;;
                                  -17126;17;0;false;false;0;0;0;;;
                                  -17143;1;0;false;false;;;;;;
                                  -17144;2;0;false;false;0;0;0;;;
                                  -17146;1;0;false;false;;;;;;
                                  -17147;24;0;false;false;0;0;0;;;
                                  -17171;1;0;false;false;;;;;;
                                  -17172;1;0;false;false;0;0;0;;;
                                  -17173;1;0;false;false;;;;;;
                                  -17174;2;0;false;false;0;0;0;;;
                                  -17176;4;0;false;false;;;;;;
                                  -17180;1;0;false;false;0;0;0;;;
                                  -17181;4;0;false;false;;;;;;
                                  -17185;8;0;false;false;0;0;0;;;
                                  -17193;1;0;false;false;;;;;;
                                  -17194;1;0;false;false;0;0;0;;;
                                  -17195;1;0;false;false;;;;;;
                                  -17196;17;0;false;false;0;0;0;;;
                                  -17213;1;0;false;false;;;;;;
                                  -17214;1;0;false;false;0;0;0;;;
                                  -17215;1;0;false;false;;;;;;
                                  -17216;25;0;false;false;0;0;0;;;
                                  -17241;4;0;false;false;;;;;;
                                  -17245;17;0;false;false;0;0;0;;;
                                  -17262;1;0;false;false;;;;;;
                                  -17263;7;0;false;false;0;0;0;;;
                                  -17270;1;0;false;false;;;;;;
                                  -17271;1;0;false;false;0;0;0;;;
                                  -17272;1;0;false;false;;;;;;
                                  -17273;22;0;false;false;0;0;0;;;
                                  -17295;4;0;false;false;;;;;;
                                  -17299;9;0;false;false;0;0;0;;;
                                  -17308;1;0;false;false;;;;;;
                                  -17309;1;0;false;false;0;0;0;;;
                                  -17310;1;0;false;false;;;;;;
                                  -17311;2;0;false;false;0;0;0;;;
                                  -17313;4;0;false;false;;;;;;
                                  -17317;2;1;false;false;127;0;85;;;
                                  -17319;1;0;false;false;;;;;;
                                  -17320;12;0;false;false;0;0;0;;;
                                  -17332;1;0;false;false;;;;;;
                                  -17333;1;0;false;false;0;0;0;;;
                                  -17334;5;0;false;false;;;;;;
                                  -17339;7;0;false;false;0;0;0;;;
                                  -17346;1;0;false;false;;;;;;
                                  -17347;1;0;false;false;0;0;0;;;
                                  -17348;1;0;false;false;;;;;;
                                  -17349;2;0;false;false;0;0;0;;;
                                  -17351;4;0;false;false;;;;;;
                                  -17355;1;0;false;false;0;0;0;;;
                                  -17356;4;0;false;false;;;;;;
                                  -17360;4;1;false;false;127;0;85;;;
                                  -17364;1;0;false;false;;;;;;
                                  -17365;1;0;false;false;0;0;0;;;
                                  -17366;5;0;false;false;;;;;;
                                  -17371;7;0;false;false;0;0;0;;;
                                  -17378;1;0;false;false;;;;;;
                                  -17379;1;0;false;false;0;0;0;;;
                                  -17380;1;0;false;false;;;;;;
                                  -17381;22;0;false;false;0;0;0;;;
                                  -17403;1;0;false;false;;;;;;
                                  -17404;1;0;false;false;0;0;0;;;
                                  -17405;1;0;false;false;;;;;;
                                  -17406;2;0;false;false;0;0;0;;;
                                  -17408;4;0;false;false;;;;;;
                                  -17412;1;0;false;false;0;0;0;;;
                                  -17413;4;0;false;false;;;;;;
                                  -17417;11;0;false;false;0;0;0;;;
                                  -17428;1;0;false;false;;;;;;
                                  -17429;4;0;false;false;0;0;0;;;
                                  -17433;1;0;false;false;;;;;;
                                  -17434;1;0;false;false;0;0;0;;;
                                  -17435;1;0;false;false;;;;;;
                                  -17436;25;0;false;false;0;0;0;;;
                                  -17461;4;0;false;false;;;;;;
                                  -17465;2;1;false;false;127;0;85;;;
                                  -17467;1;0;false;false;;;;;;
                                  -17468;11;0;false;false;0;0;0;;;
                                  -17479;1;0;false;false;;;;;;
                                  -17480;2;0;false;false;0;0;0;;;
                                  -17482;1;0;false;false;;;;;;
                                  -17483;23;0;false;false;0;0;0;;;
                                  -17506;1;0;false;false;;;;;;
                                  -17507;1;0;false;false;0;0;0;;;
                                  -17508;5;0;false;false;;;;;;
                                  -17513;9;0;false;false;0;0;0;;;
                                  -17522;1;0;false;false;;;;;;
                                  -17523;1;0;false;false;0;0;0;;;
                                  -17524;1;0;false;false;;;;;;
                                  -17525;10;0;false;false;0;0;0;;;
                                  -17535;1;0;false;false;;;;;;
                                  -17536;1;0;false;false;0;0;0;;;
                                  -17537;1;0;false;false;;;;;;
                                  -17538;2;0;false;false;0;0;0;;;
                                  -17540;1;0;false;false;;;;;;
                                  -17541;1;0;false;false;0;0;0;;;
                                  -17542;1;0;false;false;;;;;;
                                  -17543;9;0;false;false;0;0;0;;;
                                  -17552;4;0;false;false;;;;;;
                                  -17556;1;0;false;false;0;0;0;;;
                                  -17557;5;0;false;false;;;;;;
                                  -17562;4;1;false;false;127;0;85;;;
                                  -17566;4;0;false;false;;;;;;
                                  -17570;2;1;false;false;127;0;85;;;
                                  -17572;1;0;false;false;;;;;;
                                  -17573;11;0;false;false;0;0;0;;;
                                  -17584;1;0;false;false;;;;;;
                                  -17585;2;0;false;false;0;0;0;;;
                                  -17587;1;0;false;false;;;;;;
                                  -17588;22;0;false;false;0;0;0;;;
                                  -17610;1;0;false;false;;;;;;
                                  -17611;1;0;false;false;0;0;0;;;
                                  -17612;5;0;false;false;;;;;;
                                  -17617;9;0;false;false;0;0;0;;;
                                  -17626;1;0;false;false;;;;;;
                                  -17627;1;0;false;false;0;0;0;;;
                                  -17628;1;0;false;false;;;;;;
                                  -17629;37;0;false;false;0;0;0;;;
                                  -17666;5;0;false;false;;;;;;
                                  -17671;2;1;false;false;127;0;85;;;
                                  -17673;1;0;false;false;;;;;;
                                  -17674;12;0;false;false;0;0;0;;;
                                  -17686;1;0;false;false;;;;;;
                                  -17687;1;0;false;false;0;0;0;;;
                                  -17688;1;0;false;false;;;;;;
                                  -17689;2;0;false;false;0;0;0;;;
                                  -17691;1;0;false;false;;;;;;
                                  -17692;1;0;false;false;0;0;0;;;
                                  -17693;6;0;false;false;;;;;;
                                  -17699;7;0;false;false;0;0;0;;;
                                  -17706;1;0;false;false;;;;;;
                                  -17707;1;0;false;false;0;0;0;;;
                                  -17708;1;0;false;false;;;;;;
                                  -17709;35;0;false;false;0;0;0;;;
                                  -17744;1;0;false;false;;;;;;
                                  -17745;1;0;false;false;0;0;0;;;
                                  -17746;1;0;false;false;;;;;;
                                  -17747;11;0;false;false;0;0;0;;;
                                  -17758;1;0;false;false;;;;;;
                                  -17759;1;0;false;false;0;0;0;;;
                                  -17760;1;0;false;false;;;;;;
                                  -17761;3;0;false;false;0;0;0;;;
                                  -17764;5;0;false;false;;;;;;
                                  -17769;1;0;false;false;0;0;0;;;
                                  -17770;6;0;false;false;;;;;;
                                  -17776;4;1;false;false;127;0;85;;;
                                  -17780;1;0;false;false;;;;;;
                                  -17781;1;0;false;false;0;0;0;;;
                                  -17782;6;0;false;false;;;;;;
                                  -17788;7;0;false;false;0;0;0;;;
                                  -17795;1;0;false;false;;;;;;
                                  -17796;1;0;false;false;0;0;0;;;
                                  -17797;1;0;false;false;;;;;;
                                  -17798;9;0;false;false;0;0;0;;;
                                  -17807;1;0;false;false;;;;;;
                                  -17808;1;0;false;false;0;0;0;;;
                                  -17809;1;0;false;false;;;;;;
                                  -17810;2;0;false;false;0;0;0;;;
                                  -17812;5;0;false;false;;;;;;
                                  -17817;1;0;false;false;0;0;0;;;
                                  -17818;4;0;false;false;;;;;;
                                  -17822;1;0;false;false;0;0;0;;;
                                  -17823;3;0;false;false;;;;;;
                                  -17826;1;0;false;false;0;0;0;;;
                                  -17827;3;0;false;false;;;;;;
                                  -17830;3;0;false;false;63;95;191;;;
                                  -17833;4;0;false;false;;;;;;
                                  -17837;1;0;false;false;63;95;191;;;
                                  -17838;1;0;false;false;;;;;;
                                  -17839;7;0;false;false;63;95;191;;;
                                  -17846;1;0;false;false;;;;;;
                                  -17847;3;0;false;false;63;95;191;;;
                                  -17850;1;0;false;false;;;;;;
                                  -17851;7;0;false;false;63;95;191;;;
                                  -17858;1;0;false;false;;;;;;
                                  -17859;5;0;false;false;63;95;191;;;
                                  -17864;1;0;false;false;;;;;;
                                  -17865;3;0;false;false;63;95;191;;;
                                  -17868;1;0;false;false;;;;;;
                                  -17869;3;0;false;false;63;95;191;;;
                                  -17872;1;0;false;false;;;;;;
                                  -17873;5;0;false;false;63;95;191;;;
                                  -17878;1;0;false;false;;;;;;
                                  -17879;7;0;false;false;63;95;191;;;
                                  -17886;1;0;false;false;;;;;;
                                  -17887;6;0;false;false;63;95;191;;;
                                  -17893;4;0;false;false;;;;;;
                                  -17897;1;0;false;false;63;95;191;;;
                                  -17898;1;0;false;false;;;;;;
                                  -17899;4;0;false;false;127;127;159;;;
                                  -17903;4;0;false;false;;;;;;
                                  -17907;1;0;false;false;63;95;191;;;
                                  -17908;1;0;false;false;;;;;;
                                  -17909;7;1;false;false;127;159;191;;;
                                  -17916;5;0;false;false;63;95;191;;;
                                  -17921;1;0;false;false;;;;;;
                                  -17922;7;0;false;false;63;95;191;;;
                                  -17929;1;0;false;false;;;;;;
                                  -17930;5;0;false;false;63;95;191;;;
                                  -17935;4;0;false;false;;;;;;
                                  -17939;1;0;false;false;63;95;191;;;
                                  -17940;1;0;false;false;;;;;;
                                  -17941;8;1;false;false;127;159;191;;;
                                  -17949;5;0;false;false;63;95;191;;;
                                  -17954;1;0;false;false;;;;;;
                                  -17955;6;0;false;false;63;95;191;;;
                                  -17961;1;0;false;false;;;;;;
                                  -17962;2;0;false;false;63;95;191;;;
                                  -17964;1;0;false;false;;;;;;
                                  -17965;3;0;false;false;63;95;191;;;
                                  -17968;1;0;false;false;;;;;;
                                  -17969;7;0;false;false;63;95;191;;;
                                  -17976;1;0;false;false;;;;;;
                                  -17977;4;0;false;false;63;95;191;;;
                                  -17981;1;0;false;false;;;;;;
                                  -17982;3;0;false;false;63;95;191;;;
                                  -17985;1;0;false;false;;;;;;
                                  -17986;4;0;false;false;63;95;191;;;
                                  -17990;1;0;false;false;;;;;;
                                  -17991;3;0;false;false;63;95;191;;;
                                  -17994;1;0;false;false;;;;;;
                                  -17995;6;0;false;false;63;95;191;;;
                                  -18001;5;0;false;false;;;;;;
                                  -18006;1;0;false;false;63;95;191;;;
                                  -18007;2;0;false;false;;;;;;
                                  -18009;2;0;false;false;63;95;191;;;
                                  -18011;1;0;false;false;;;;;;
                                  -18012;3;0;false;false;63;95;191;;;
                                  -18015;1;0;false;false;;;;;;
                                  -18016;7;0;false;false;63;95;191;;;
                                  -18023;1;0;false;false;;;;;;
                                  -18024;6;0;false;false;63;95;191;;;
                                  -18030;5;0;false;false;;;;;;
                                  -18035;2;0;false;false;63;95;191;;;
                                  -18037;3;0;false;false;;;;;;
                                  -18040;5;0;false;false;0;0;0;;;
                                  -18045;1;0;false;false;;;;;;
                                  -18046;21;0;false;false;0;0;0;;;
                                  -18067;1;0;false;false;;;;;;
                                  -18068;6;0;false;false;0;0;0;;;
                                  -18074;1;0;false;false;;;;;;
                                  -18075;1;0;false;false;0;0;0;;;
                                  -18076;4;0;false;false;;;;;;
                                  -18080;5;0;false;false;0;0;0;;;
                                  -18085;1;0;false;false;;;;;;
                                  -18086;12;0;false;false;0;0;0;;;
                                  -18098;1;0;false;false;;;;;;
                                  -18099;1;0;false;false;0;0;0;;;
                                  -18100;1;0;false;false;;;;;;
                                  -18101;4;1;false;false;127;0;85;;;
                                  -18105;1;0;false;false;0;0;0;;;
                                  -18106;8;0;false;false;;;;;;
                                  -18114;2;1;false;false;127;0;85;;;
                                  -18116;1;0;false;false;;;;;;
                                  -18117;6;0;false;false;0;0;0;;;
                                  -18123;1;0;false;false;;;;;;
                                  -18124;2;0;false;false;0;0;0;;;
                                  -18126;1;0;false;false;;;;;;
                                  -18127;4;1;false;false;127;0;85;;;
                                  -18131;1;0;false;false;0;0;0;;;
                                  -18132;1;0;false;false;;;;;;
                                  -18133;1;0;false;false;0;0;0;;;
                                  -18134;5;0;false;false;;;;;;
                                  -18139;12;0;false;false;0;0;0;;;
                                  -18151;1;0;false;false;;;;;;
                                  -18152;1;0;false;false;0;0;0;;;
                                  -18153;1;0;false;false;;;;;;
                                  -18154;7;0;false;false;0;0;0;;;
                                  -18161;1;0;false;false;;;;;;
                                  -18162;25;0;false;false;0;0;0;;;
                                  -18187;7;0;false;false;;;;;;
                                  -18194;2;1;false;false;127;0;85;;;
                                  -18196;1;0;false;false;;;;;;
                                  -18197;13;0;false;false;0;0;0;;;
                                  -18210;1;0;false;false;;;;;;
                                  -18211;2;0;false;false;0;0;0;;;
                                  -18213;1;0;false;false;;;;;;
                                  -18214;4;1;false;false;127;0;85;;;
                                  -18218;1;0;false;false;0;0;0;;;
                                  -18219;1;0;false;false;;;;;;
                                  -18220;1;0;false;false;0;0;0;;;
                                  -18221;6;0;false;false;;;;;;
                                  -18227;12;0;false;false;0;0;0;;;
                                  -18239;1;0;false;false;;;;;;
                                  -18240;1;0;false;false;0;0;0;;;
                                  -18241;1;0;false;false;;;;;;
                                  -18242;3;1;false;false;127;0;85;;;
                                  -18245;1;0;false;false;;;;;;
                                  -18246;14;0;false;false;0;0;0;;;
                                  -18260;1;0;false;false;;;;;;
                                  -18261;16;0;false;false;0;0;0;;;
                                  -18277;6;0;false;false;;;;;;
                                  -18283;24;0;false;false;0;0;0;;;
                                  -18307;1;0;false;false;;;;;;
                                  -18308;14;0;false;false;0;0;0;;;
                                  -18322;5;0;false;false;;;;;;
                                  -18327;1;0;false;false;0;0;0;;;
                                  -18328;4;0;false;false;;;;;;
                                  -18332;1;0;false;false;0;0;0;;;
                                  -18333;4;0;false;false;;;;;;
                                  -18337;6;1;false;false;127;0;85;;;
                                  -18343;1;0;false;false;;;;;;
                                  -18344;13;0;false;false;0;0;0;;;
                                  -18357;3;0;false;false;;;;;;
                                  -18360;1;0;false;false;0;0;0;;;
                                  -18361;3;0;false;false;;;;;;
                                  -18364;3;0;false;false;63;95;191;;;
                                  -18367;4;0;false;false;;;;;;
                                  -18371;1;0;false;false;63;95;191;;;
                                  -18372;1;0;false;false;;;;;;
                                  -18373;6;0;false;false;63;95;191;;;
                                  -18379;1;0;false;false;;;;;;
                                  -18380;3;0;false;false;63;95;191;;;
                                  -18383;1;0;false;false;;;;;;
                                  -18384;5;0;false;false;63;95;191;;;
                                  -18389;1;0;false;false;;;;;;
                                  -18390;2;0;false;false;63;95;191;;;
                                  -18392;1;0;false;false;;;;;;
                                  -18393;3;0;false;false;63;95;191;;;
                                  -18396;1;0;false;false;;;;;;
                                  -18397;9;0;false;false;63;95;191;;;
                                  -18406;1;0;false;false;;;;;;
                                  -18407;4;0;false;false;63;95;191;;;
                                  -18411;1;0;false;false;;;;;;
                                  -18412;6;0;false;false;63;95;191;;;
                                  -18418;4;0;false;false;;;;;;
                                  -18422;2;0;false;false;63;95;191;;;
                                  -18424;3;0;false;false;;;;;;
                                  -18427;4;1;false;false;127;0;85;;;
                                  -18431;1;0;false;false;;;;;;
                                  -18432;7;0;false;false;0;0;0;;;
                                  -18439;1;0;false;false;;;;;;
                                  -18440;1;0;false;false;0;0;0;;;
                                  -18441;4;0;false;false;;;;;;
                                  -18445;17;0;false;false;0;0;0;;;
                                  -18462;1;0;false;false;;;;;;
                                  -18463;7;0;false;false;0;0;0;;;
                                  -18470;1;0;false;false;;;;;;
                                  -18471;1;0;false;false;0;0;0;;;
                                  -18472;1;0;false;false;;;;;;
                                  -18473;22;0;false;false;0;0;0;;;
                                  -18495;4;0;false;false;;;;;;
                                  -18499;5;0;false;false;0;0;0;;;
                                  -18504;1;0;false;false;;;;;;
                                  -18505;10;0;false;false;0;0;0;;;
                                  -18515;1;0;false;false;;;;;;
                                  -18516;1;0;false;false;0;0;0;;;
                                  -18517;1;0;false;false;;;;;;
                                  -18518;19;0;false;false;0;0;0;;;
                                  -18537;4;0;false;false;;;;;;
                                  -18541;5;0;false;false;0;0;0;;;
                                  -18546;1;0;false;false;;;;;;
                                  -18547;10;0;false;false;0;0;0;;;
                                  -18557;1;0;false;false;;;;;;
                                  -18558;1;0;false;false;0;0;0;;;
                                  -18559;1;0;false;false;;;;;;
                                  -18560;19;0;false;false;0;0;0;;;
                                  -18579;4;0;false;false;;;;;;
                                  -18583;3;1;false;false;127;0;85;;;
                                  -18586;1;0;false;false;;;;;;
                                  -18587;10;0;false;false;0;0;0;;;
                                  -18597;1;0;false;false;;;;;;
                                  -18598;1;0;false;false;0;0;0;;;
                                  -18599;1;0;false;false;;;;;;
                                  -18600;25;0;false;false;0;0;0;;;
                                  -18625;4;0;false;false;;;;;;
                                  -18629;3;1;false;false;127;0;85;;;
                                  -18632;1;0;false;false;;;;;;
                                  -18633;6;0;false;false;0;0;0;;;
                                  -18639;1;0;false;false;;;;;;
                                  -18640;1;0;false;false;0;0;0;;;
                                  -18641;1;0;false;false;;;;;;
                                  -18642;13;0;false;false;0;0;0;;;
                                  -18655;4;0;false;false;;;;;;
                                  -18659;3;1;false;false;127;0;85;;;
                                  -18662;1;0;false;false;;;;;;
                                  -18663;4;0;false;false;0;0;0;;;
                                  -18667;1;0;false;false;;;;;;
                                  -18668;1;0;false;false;0;0;0;;;
                                  -18669;1;0;false;false;;;;;;
                                  -18670;10;0;false;false;0;0;0;;;
                                  -18680;8;0;false;false;;;;;;
                                  -18688;3;1;false;false;127;0;85;;;
                                  -18691;1;0;false;false;;;;;;
                                  -18692;1;0;false;false;0;0;0;;;
                                  -18693;3;1;false;false;127;0;85;;;
                                  -18696;1;0;false;false;;;;;;
                                  -18697;1;0;false;false;0;0;0;;;
                                  -18698;1;0;false;false;;;;;;
                                  -18699;1;0;false;false;0;0;0;;;
                                  -18700;1;0;false;false;;;;;;
                                  -18701;10;0;false;false;0;0;0;;;
                                  -18711;1;0;false;false;;;;;;
                                  -18712;1;0;false;false;0;0;0;;;
                                  -18713;1;0;false;false;;;;;;
                                  -18714;2;0;false;false;0;0;0;;;
                                  -18716;1;0;false;false;;;;;;
                                  -18717;7;0;false;false;0;0;0;;;
                                  -18724;1;0;false;false;;;;;;
                                  -18725;2;0;false;false;0;0;0;;;
                                  -18727;1;0;false;false;;;;;;
                                  -18728;4;0;false;false;0;0;0;;;
                                  -18732;1;0;false;false;;;;;;
                                  -18733;2;0;false;false;0;0;0;;;
                                  -18735;1;0;false;false;;;;;;
                                  -18736;8;0;false;false;0;0;0;;;
                                  -18744;1;0;false;false;;;;;;
                                  -18745;4;0;false;false;0;0;0;;;
                                  -18749;1;0;false;false;;;;;;
                                  -18750;6;0;false;false;0;0;0;;;
                                  -18756;1;0;false;false;;;;;;
                                  -18757;2;0;false;false;0;0;0;;;
                                  -18759;1;0;false;false;;;;;;
                                  -18760;11;0;false;false;0;0;0;;;
                                  -18771;1;0;false;false;;;;;;
                                  -18772;1;0;false;false;0;0;0;;;
                                  -18773;5;0;false;false;;;;;;
                                  -18778;6;0;false;false;0;0;0;;;
                                  -18784;1;0;false;false;;;;;;
                                  -18785;4;0;false;false;0;0;0;;;
                                  -18789;1;0;false;false;;;;;;
                                  -18790;1;0;false;false;0;0;0;;;
                                  -18791;1;0;false;false;;;;;;
                                  -18792;19;0;false;false;0;0;0;;;
                                  -18811;10;0;false;false;;;;;;
                                  -18821;2;1;false;false;127;0;85;;;
                                  -18823;1;0;false;false;;;;;;
                                  -18824;7;0;false;false;0;0;0;;;
                                  -18831;1;0;false;false;;;;;;
                                  -18832;2;0;false;false;0;0;0;;;
                                  -18834;1;0;false;false;;;;;;
                                  -18835;13;0;false;false;0;0;0;;;
                                  -18848;1;0;false;false;;;;;;
                                  -18849;1;0;false;false;0;0;0;;;
                                  -18850;6;0;false;false;;;;;;
                                  -18856;16;0;false;false;0;0;0;;;
                                  -18872;5;0;false;false;;;;;;
                                  -18877;1;0;false;false;0;0;0;;;
                                  -18878;5;0;false;false;;;;;;
                                  -18883;18;0;false;false;0;0;0;;;
                                  -18901;6;0;false;false;;;;;;
                                  -18907;5;0;false;false;0;0;0;;;
                                  -18912;1;0;false;false;;;;;;
                                  -18913;2;0;false;false;0;0;0;;;
                                  -18915;1;0;false;false;;;;;;
                                  -18916;7;0;false;false;0;0;0;;;
                                  -18923;1;0;false;false;;;;;;
                                  -18924;3;0;false;false;0;0;0;;;
                                  -18927;1;0;false;false;;;;;;
                                  -18928;11;0;false;false;0;0;0;;;
                                  -18939;1;0;false;false;;;;;;
                                  -18940;11;0;false;false;0;0;0;;;
                                  -18951;1;0;false;false;;;;;;
                                  -18952;4;1;false;false;127;0;85;;;
                                  -18956;2;0;false;false;0;0;0;;;
                                  -18958;5;0;false;false;;;;;;
                                  -18963;2;1;false;false;127;0;85;;;
                                  -18965;1;0;false;false;;;;;;
                                  -18966;7;0;false;false;0;0;0;;;
                                  -18973;1;0;false;false;;;;;;
                                  -18974;1;0;false;false;0;0;0;;;
                                  -18975;1;0;false;false;;;;;;
                                  -18976;10;0;false;false;0;0;0;;;
                                  -18986;1;0;false;false;;;;;;
                                  -18987;1;0;false;false;0;0;0;;;
                                  -18988;1;0;false;false;;;;;;
                                  -18989;1;0;false;false;0;0;0;;;
                                  -18990;1;0;false;false;;;;;;
                                  -18991;1;0;false;false;0;0;0;;;
                                  -18992;1;0;false;false;;;;;;
                                  -18993;12;0;false;false;0;0;0;;;
                                  -19005;1;0;false;false;;;;;;
                                  -19006;1;0;false;false;0;0;0;;;
                                  -19007;1;0;false;false;;;;;;
                                  -19008;18;0;false;false;0;0;0;;;
                                  -19026;1;0;false;false;;;;;;
                                  -19027;1;0;false;false;0;0;0;;;
                                  -19028;6;0;false;false;;;;;;
                                  -19034;20;0;false;false;63;127;95;;;
                                  -19054;4;0;false;false;;;;;;
                                  -19058;14;0;false;false;0;0;0;;;
                                  -19072;6;0;false;false;;;;;;
                                  -19078;6;0;false;false;0;0;0;;;
                                  -19084;1;0;false;false;;;;;;
                                  -19085;1;0;false;false;0;0;0;;;
                                  -19086;1;0;false;false;;;;;;
                                  -19087;12;0;false;false;0;0;0;;;
                                  -19099;1;0;false;false;;;;;;
                                  -19100;1;0;false;false;0;0;0;;;
                                  -19101;1;0;false;false;;;;;;
                                  -19102;11;0;false;false;0;0;0;;;
                                  -19113;6;0;false;false;;;;;;
                                  -19119;7;0;false;false;0;0;0;;;
                                  -19126;5;0;false;false;;;;;;
                                  -19131;1;0;false;false;0;0;0;;;
                                  -19132;4;0;false;false;;;;;;
                                  -19136;1;0;false;false;0;0;0;;;
                                  -19137;4;0;false;false;;;;;;
                                  -19141;2;1;false;false;127;0;85;;;
                                  -19143;1;0;false;false;;;;;;
                                  -19144;7;0;false;false;0;0;0;;;
                                  -19151;1;0;false;false;;;;;;
                                  -19152;1;0;false;false;0;0;0;;;
                                  -19153;1;0;false;false;;;;;;
                                  -19154;13;0;false;false;0;0;0;;;
                                  -19167;1;0;false;false;;;;;;
                                  -19168;1;0;false;false;0;0;0;;;
                                  -19169;5;0;false;false;;;;;;
                                  -19174;23;0;false;false;63;127;95;;;
                                  -19197;3;0;false;false;;;;;;
                                  -19200;14;0;false;false;0;0;0;;;
                                  -19214;4;0;false;false;;;;;;
                                  -19218;1;0;false;false;0;0;0;;;
                                  -19219;3;0;false;false;;;;;;
                                  -19222;1;0;false;false;0;0;0;;;
                                  -19223;3;0;false;false;;;;;;
                                  -19226;3;0;false;false;63;95;191;;;
                                  -19229;4;0;false;false;;;;;;
                                  -19233;1;0;false;false;63;95;191;;;
                                  -19234;1;0;false;false;;;;;;
                                  -19235;5;0;false;false;63;95;191;;;
                                  -19240;1;0;false;false;;;;;;
                                  -19241;6;0;false;false;63;95;191;;;
                                  -19247;1;0;false;false;;;;;;
                                  -19248;2;0;false;false;63;95;191;;;
                                  -19250;1;0;false;false;;;;;;
                                  -19251;6;0;false;false;63;95;191;;;
                                  -19257;1;0;false;false;;;;;;
                                  -19258;12;0;false;false;63;95;191;;;
                                  -19270;4;0;false;false;;;;;;
                                  -19274;1;0;false;false;63;95;191;;;
                                  -19275;5;0;false;false;;;;;;
                                  -19280;1;0;false;false;63;95;191;;;
                                  -19281;1;0;false;false;;;;;;
                                  -19282;7;1;false;false;127;159;191;;;
                                  -19289;4;0;false;false;63;95;191;;;
                                  -19293;1;0;false;false;;;;;;
                                  -19294;4;0;false;false;63;95;191;;;
                                  -19298;1;0;false;false;;;;;;
                                  -19299;6;0;false;false;63;95;191;;;
                                  -19305;1;0;false;false;;;;;;
                                  -19306;2;0;false;false;63;95;191;;;
                                  -19308;1;0;false;false;;;;;;
                                  -19309;6;0;false;false;63;95;191;;;
                                  -19315;1;0;false;false;;;;;;
                                  -19316;2;0;false;false;63;95;191;;;
                                  -19318;1;0;false;false;;;;;;
                                  -19319;9;0;false;false;63;95;191;;;
                                  -19328;1;0;false;false;;;;;;
                                  -19329;2;0;false;false;63;95;191;;;
                                  -19331;1;0;false;false;;;;;;
                                  -19332;3;0;false;false;63;95;191;;;
                                  -19335;1;0;false;false;;;;;;
                                  -19336;22;0;false;false;63;95;191;;;
                                  -19358;1;0;false;false;;;;;;
                                  -19359;6;0;false;false;63;95;191;;;
                                  -19365;1;0;false;false;;;;;;
                                  -19366;2;0;false;false;63;95;191;;;
                                  -19368;1;0;false;false;;;;;;
                                  -19369;7;0;false;false;63;95;191;;;
                                  -19376;4;0;false;false;;;;;;
                                  -19380;1;0;false;false;63;95;191;;;
                                  -19381;1;0;false;false;;;;;;
                                  -19382;7;1;false;false;127;159;191;;;
                                  -19389;6;0;false;false;63;95;191;;;
                                  -19395;1;0;false;false;;;;;;
                                  -19396;4;0;false;false;63;95;191;;;
                                  -19400;1;0;false;false;;;;;;
                                  -19401;1;0;false;false;63;95;191;;;
                                  -19402;1;0;false;false;;;;;;
                                  -19403;5;0;false;false;63;95;191;;;
                                  -19408;1;0;false;false;;;;;;
                                  -19409;3;0;false;false;63;95;191;;;
                                  -19412;1;0;false;false;;;;;;
                                  -19413;7;0;false;false;63;95;191;;;
                                  -19420;1;0;false;false;;;;;;
                                  -19421;5;0;false;false;63;95;191;;;
                                  -19426;1;0;false;false;;;;;;
                                  -19427;1;0;false;false;63;95;191;;;
                                  -19428;1;0;false;false;;;;;;
                                  -19429;5;0;false;false;63;95;191;;;
                                  -19434;1;0;false;false;;;;;;
                                  -19435;3;0;false;false;63;95;191;;;
                                  -19438;1;0;false;false;;;;;;
                                  -19439;6;0;false;false;63;95;191;;;
                                  -19445;4;0;false;false;;;;;;
                                  -19449;2;0;false;false;63;95;191;;;
                                  -19451;3;0;false;false;;;;;;
                                  -19454;4;1;false;false;127;0;85;;;
                                  -19458;1;0;false;false;;;;;;
                                  -19459;16;0;false;false;0;0;0;;;
                                  -19475;3;1;false;false;127;0;85;;;
                                  -19478;1;0;false;false;;;;;;
                                  -19479;5;0;false;false;0;0;0;;;
                                  -19484;1;0;false;false;;;;;;
                                  -19485;7;1;false;false;127;0;85;;;
                                  -19492;1;0;false;false;;;;;;
                                  -19493;7;0;false;false;0;0;0;;;
                                  -19500;1;0;false;false;;;;;;
                                  -19501;1;0;false;false;0;0;0;;;
                                  -19502;4;0;false;false;;;;;;
                                  -19506;3;1;false;false;127;0;85;;;
                                  -19509;1;0;false;false;;;;;;
                                  -19510;16;0;false;false;0;0;0;;;
                                  -19526;1;0;false;false;;;;;;
                                  -19527;1;0;false;false;0;0;0;;;
                                  -19528;1;0;false;false;;;;;;
                                  -19529;2;0;false;false;0;0;0;;;
                                  -19531;4;0;false;false;;;;;;
                                  -19535;5;1;false;false;127;0;85;;;
                                  -19540;1;0;false;false;;;;;;
                                  -19541;3;1;false;false;127;0;85;;;
                                  -19544;1;0;false;false;;;;;;
                                  -19545;12;0;false;false;0;0;0;;;
                                  -19557;1;0;false;false;;;;;;
                                  -19558;1;0;false;false;0;0;0;;;
                                  -19559;1;0;false;false;;;;;;
                                  -19560;2;0;false;false;0;0;0;;;
                                  -19562;4;0;false;false;;;;;;
                                  -19566;6;0;false;false;0;0;0;;;
                                  -19572;1;0;false;false;;;;;;
                                  -19573;5;0;false;false;0;0;0;;;
                                  -19578;8;0;false;false;;;;;;
                                  -19586;2;1;false;false;127;0;85;;;
                                  -19588;1;0;false;false;;;;;;
                                  -19589;8;0;false;false;0;0;0;;;
                                  -19597;1;0;false;false;;;;;;
                                  -19598;1;0;false;false;0;0;0;;;
                                  -19599;5;0;false;false;;;;;;
                                  -19604;4;0;false;false;0;0;0;;;
                                  -19608;1;0;false;false;;;;;;
                                  -19609;1;0;false;false;0;0;0;;;
                                  -19610;1;0;false;false;;;;;;
                                  -19611;20;0;false;false;0;0;0;;;
                                  -19631;4;0;false;false;;;;;;
                                  -19635;1;0;false;false;0;0;0;;;
                                  -19636;4;0;false;false;;;;;;
                                  -19640;4;1;false;false;127;0;85;;;
                                  -19644;1;0;false;false;;;;;;
                                  -19645;1;0;false;false;0;0;0;;;
                                  -19646;5;0;false;false;;;;;;
                                  -19651;4;0;false;false;0;0;0;;;
                                  -19655;1;0;false;false;;;;;;
                                  -19656;1;0;false;false;0;0;0;;;
                                  -19657;1;0;false;false;;;;;;
                                  -19658;20;0;false;false;0;0;0;;;
                                  -19678;4;0;false;false;;;;;;
                                  -19682;1;0;false;false;0;0;0;;;
                                  -19683;4;0;false;false;;;;;;
                                  -19687;2;1;false;false;127;0;85;;;
                                  -19689;1;0;false;false;;;;;;
                                  -19690;5;0;false;false;0;0;0;;;
                                  -19695;1;0;false;false;;;;;;
                                  -19696;2;0;false;false;0;0;0;;;
                                  -19698;1;0;false;false;;;;;;
                                  -19699;4;1;false;false;127;0;85;;;
                                  -19703;1;0;false;false;0;0;0;;;
                                  -19704;1;0;false;false;;;;;;
                                  -19705;1;0;false;false;0;0;0;;;
                                  -19706;5;0;false;false;;;;;;
                                  -19711;6;1;false;false;127;0;85;;;
                                  -19717;1;0;false;false;0;0;0;;;
                                  -19718;4;0;false;false;;;;;;
                                  -19722;1;0;false;false;0;0;0;;;
                                  -19723;4;0;false;false;;;;;;
                                  -19727;3;1;false;false;127;0;85;;;
                                  -19730;1;0;false;false;;;;;;
                                  -19731;1;0;false;false;0;0;0;;;
                                  -19732;3;1;false;false;127;0;85;;;
                                  -19735;1;0;false;false;;;;;;
                                  -19736;1;0;false;false;0;0;0;;;
                                  -19737;1;0;false;false;;;;;;
                                  -19738;1;0;false;false;0;0;0;;;
                                  -19739;1;0;false;false;;;;;;
                                  -19740;2;0;false;false;0;0;0;;;
                                  -19742;1;0;false;false;;;;;;
                                  -19743;1;0;false;false;0;0;0;;;
                                  -19744;1;0;false;false;;;;;;
                                  -19745;1;0;false;false;0;0;0;;;
                                  -19746;1;0;false;false;;;;;;
                                  -19747;13;0;false;false;0;0;0;;;
                                  -19760;1;0;false;false;;;;;;
                                  -19761;4;0;false;false;0;0;0;;;
                                  -19765;1;0;false;false;;;;;;
                                  -19766;1;0;false;false;0;0;0;;;
                                  -19767;5;0;false;false;;;;;;
                                  -19772;3;1;false;false;127;0;85;;;
                                  -19775;1;0;false;false;;;;;;
                                  -19776;12;0;false;false;0;0;0;;;
                                  -19788;1;0;false;false;;;;;;
                                  -19789;1;0;false;false;0;0;0;;;
                                  -19790;1;0;false;false;;;;;;
                                  -19791;46;0;false;false;0;0;0;;;
                                  -19837;1;0;false;false;;;;;;
                                  -19838;18;0;false;false;0;0;0;;;
                                  -19856;5;0;false;false;;;;;;
                                  -19861;6;0;false;false;0;0;0;;;
                                  -19867;1;0;false;false;;;;;;
                                  -19868;8;0;false;false;0;0;0;;;
                                  -19876;10;0;false;false;;;;;;
                                  -19886;2;1;false;false;127;0;85;;;
                                  -19888;1;0;false;false;;;;;;
                                  -19889;13;0;false;false;0;0;0;;;
                                  -19902;1;0;false;false;;;;;;
                                  -19903;2;0;false;false;0;0;0;;;
                                  -19905;1;0;false;false;;;;;;
                                  -19906;3;0;false;false;0;0;0;;;
                                  -19909;1;0;false;false;;;;;;
                                  -19910;1;0;false;false;0;0;0;;;
                                  -19911;6;0;false;false;;;;;;
                                  -19917;7;0;false;false;0;0;0;;;
                                  -19924;1;0;false;false;;;;;;
                                  -19925;1;0;false;false;0;0;0;;;
                                  -19926;1;0;false;false;;;;;;
                                  -19927;33;0;false;false;0;0;0;;;
                                  -19960;6;0;false;false;;;;;;
                                  -19966;31;0;false;false;0;0;0;;;
                                  -19997;1;0;false;false;;;;;;
                                  -19998;2;0;false;false;0;0;0;;;
                                  -20000;1;0;false;false;;;;;;
                                  -20001;5;0;false;false;0;0;0;;;
                                  -20006;1;0;false;false;;;;;;
                                  -20007;8;0;false;false;0;0;0;;;
                                  -20015;6;0;false;false;;;;;;
                                  -20021;5;1;false;false;127;0;85;;;
                                  -20026;1;0;false;false;0;0;0;;;
                                  -20027;5;0;false;false;;;;;;
                                  -20032;1;0;false;false;0;0;0;;;
                                  -20033;5;0;false;false;;;;;;
                                  -20038;4;1;false;false;127;0;85;;;
                                  -20042;1;0;false;false;;;;;;
                                  -20043;1;0;false;false;0;0;0;;;
                                  -20044;6;0;false;false;;;;;;
                                  -20050;7;0;false;false;0;0;0;;;
                                  -20057;1;0;false;false;;;;;;
                                  -20058;1;0;false;false;0;0;0;;;
                                  -20059;1;0;false;false;;;;;;
                                  -20060;32;0;false;false;0;0;0;;;
                                  -20092;1;0;false;false;;;;;;
                                  -20093;14;0;false;false;0;0;0;;;
                                  -20107;6;0;false;false;;;;;;
                                  -20113;31;0;false;false;0;0;0;;;
                                  -20144;1;0;false;false;;;;;;
                                  -20145;2;0;false;false;0;0;0;;;
                                  -20147;1;0;false;false;;;;;;
                                  -20148;5;0;false;false;0;0;0;;;
                                  -20153;1;0;false;false;;;;;;
                                  -20154;8;0;false;false;0;0;0;;;
                                  -20162;6;0;false;false;;;;;;
                                  -20168;16;0;false;false;0;0;0;;;
                                  -20184;1;0;false;false;;;;;;
                                  -20185;1;0;false;false;0;0;0;;;
                                  -20186;1;0;false;false;;;;;;
                                  -20187;12;0;false;false;0;0;0;;;
                                  -20199;1;0;false;false;;;;;;
                                  -20200;1;0;false;false;0;0;0;;;
                                  -20201;1;0;false;false;;;;;;
                                  -20202;42;0;false;false;0;0;0;;;
                                  -20244;5;0;false;false;;;;;;
                                  -20249;1;0;false;false;0;0;0;;;
                                  -20250;4;0;false;false;;;;;;
                                  -20254;1;0;false;false;0;0;0;;;
                                  -20255;3;0;false;false;;;;;;
                                  -20258;1;0;false;false;0;0;0;;;
                                  -20259;3;0;false;false;;;;;;
                                  -20262;3;0;false;false;63;95;191;;;
                                  -20265;4;0;false;false;;;;;;
                                  -20269;1;0;false;false;63;95;191;;;
                                  -20270;1;0;false;false;;;;;;
                                  -20271;5;0;false;false;63;95;191;;;
                                  -20276;1;0;false;false;;;;;;
                                  -20277;3;0;false;false;63;95;191;;;
                                  -20280;1;0;false;false;;;;;;
                                  -20281;7;0;false;false;63;95;191;;;
                                  -20288;1;0;false;false;;;;;;
                                  -20289;2;0;false;false;63;95;191;;;
                                  -20291;1;0;false;false;;;;;;
                                  -20292;1;0;false;false;63;95;191;;;
                                  -20293;1;0;false;false;;;;;;
                                  -20294;6;0;false;false;63;95;191;;;
                                  -20300;1;0;false;false;;;;;;
                                  -20301;2;0;false;false;63;95;191;;;
                                  -20303;1;0;false;false;;;;;;
                                  -20304;6;0;false;false;63;95;191;;;
                                  -20310;1;0;false;false;;;;;;
                                  -20311;11;0;false;false;63;95;191;;;
                                  -20322;4;0;false;false;;;;;;
                                  -20326;1;0;false;false;63;95;191;;;
                                  -20327;1;0;false;false;;;;;;
                                  -20328;7;0;false;false;63;95;191;;;
                                  -20335;1;0;false;false;;;;;;
                                  -20336;3;0;false;false;63;95;191;;;
                                  -20339;1;0;false;false;;;;;;
                                  -20340;7;0;false;false;63;95;191;;;
                                  -20347;1;0;false;false;;;;;;
                                  -20348;4;0;false;false;63;95;191;;;
                                  -20352;1;0;false;false;;;;;;
                                  -20353;5;0;false;false;63;95;191;;;
                                  -20358;1;0;false;false;;;;;;
                                  -20359;9;0;false;false;63;95;191;;;
                                  -20368;1;0;false;false;;;;;;
                                  -20369;9;0;false;false;63;95;191;;;
                                  -20378;4;0;false;false;;;;;;
                                  -20382;1;0;false;false;63;95;191;;;
                                  -20383;1;0;false;false;;;;;;
                                  -20384;3;0;false;false;63;95;191;;;
                                  -20387;1;0;false;false;;;;;;
                                  -20388;4;0;false;false;63;95;191;;;
                                  -20392;1;0;false;false;;;;;;
                                  -20393;3;0;false;false;63;95;191;;;
                                  -20396;1;0;false;false;;;;;;
                                  -20397;4;0;false;false;63;95;191;;;
                                  -20401;1;0;false;false;;;;;;
                                  -20402;8;0;false;false;63;95;191;;;
                                  -20410;1;0;false;false;;;;;;
                                  -20411;9;0;false;false;63;95;191;;;
                                  -20420;1;0;false;false;;;;;;
                                  -20421;3;0;false;false;63;95;191;;;
                                  -20424;1;0;false;false;;;;;;
                                  -20425;5;0;false;false;63;95;191;;;
                                  -20430;1;0;false;false;;;;;;
                                  -20431;7;0;false;false;63;95;191;;;
                                  -20438;1;0;false;false;;;;;;
                                  -20439;5;0;false;false;63;95;191;;;
                                  -20444;4;0;false;false;;;;;;
                                  -20448;1;0;false;false;63;95;191;;;
                                  -20449;5;0;false;false;;;;;;
                                  -20454;1;0;false;false;63;95;191;;;
                                  -20455;1;0;false;false;;;;;;
                                  -20456;7;1;false;false;127;159;191;;;
                                  -20463;7;0;false;false;63;95;191;;;
                                  -20470;1;0;false;false;;;;;;
                                  -20471;10;0;false;false;63;95;191;;;
                                  -20481;1;0;false;false;;;;;;
                                  -20482;7;0;false;false;63;95;191;;;
                                  -20489;1;0;false;false;;;;;;
                                  -20490;2;0;false;false;63;95;191;;;
                                  -20492;1;0;false;false;;;;;;
                                  -20493;5;0;false;false;63;95;191;;;
                                  -20498;4;0;false;false;;;;;;
                                  -20502;1;0;false;false;63;95;191;;;
                                  -20503;1;0;false;false;;;;;;
                                  -20504;7;1;false;false;127;159;191;;;
                                  -20511;9;0;false;false;63;95;191;;;
                                  -20520;1;0;false;false;;;;;;
                                  -20521;9;0;false;false;63;95;191;;;
                                  -20530;1;0;false;false;;;;;;
                                  -20531;2;0;false;false;63;95;191;;;
                                  -20533;1;0;false;false;;;;;;
                                  -20534;3;0;false;false;63;95;191;;;
                                  -20537;1;0;false;false;;;;;;
                                  -20538;8;0;false;false;63;95;191;;;
                                  -20546;1;0;false;false;;;;;;
                                  -20547;7;0;false;false;63;95;191;;;
                                  -20554;1;0;false;false;;;;;;
                                  -20555;9;0;false;false;63;95;191;;;
                                  -20564;1;0;false;false;;;;;;
                                  -20565;7;0;false;false;63;95;191;;;
                                  -20572;5;0;false;false;;;;;;
                                  -20577;1;0;false;false;63;95;191;;;
                                  -20578;1;0;false;false;;;;;;
                                  -20579;7;1;false;false;127;159;191;;;
                                  -20586;4;0;false;false;63;95;191;;;
                                  -20590;1;0;false;false;;;;;;
                                  -20591;4;0;false;false;63;95;191;;;
                                  -20595;1;0;false;false;;;;;;
                                  -20596;6;0;false;false;63;95;191;;;
                                  -20602;1;0;false;false;;;;;;
                                  -20603;2;0;false;false;63;95;191;;;
                                  -20605;1;0;false;false;;;;;;
                                  -20606;6;0;false;false;63;95;191;;;
                                  -20612;1;0;false;false;;;;;;
                                  -20613;2;0;false;false;63;95;191;;;
                                  -20615;1;0;false;false;;;;;;
                                  -20616;9;0;false;false;63;95;191;;;
                                  -20625;1;0;false;false;;;;;;
                                  -20626;2;0;false;false;63;95;191;;;
                                  -20628;1;0;false;false;;;;;;
                                  -20629;3;0;false;false;63;95;191;;;
                                  -20632;1;0;false;false;;;;;;
                                  -20633;10;0;false;false;63;95;191;;;
                                  -20643;1;0;false;false;;;;;;
                                  -20644;8;0;false;false;63;95;191;;;
                                  -20652;4;0;false;false;;;;;;
                                  -20656;1;0;false;false;63;95;191;;;
                                  -20657;1;0;false;false;;;;;;
                                  -20658;7;1;false;false;127;159;191;;;
                                  -20665;6;0;false;false;63;95;191;;;
                                  -20671;1;0;false;false;;;;;;
                                  -20672;4;0;false;false;63;95;191;;;
                                  -20676;1;0;false;false;;;;;;
                                  -20677;1;0;false;false;63;95;191;;;
                                  -20678;1;0;false;false;;;;;;
                                  -20679;5;0;false;false;63;95;191;;;
                                  -20684;1;0;false;false;;;;;;
                                  -20685;3;0;false;false;63;95;191;;;
                                  -20688;1;0;false;false;;;;;;
                                  -20689;7;0;false;false;63;95;191;;;
                                  -20696;1;0;false;false;;;;;;
                                  -20697;5;0;false;false;63;95;191;;;
                                  -20702;1;0;false;false;;;;;;
                                  -20703;1;0;false;false;63;95;191;;;
                                  -20704;1;0;false;false;;;;;;
                                  -20705;5;0;false;false;63;95;191;;;
                                  -20710;1;0;false;false;;;;;;
                                  -20711;3;0;false;false;63;95;191;;;
                                  -20714;1;0;false;false;;;;;;
                                  -20715;6;0;false;false;63;95;191;;;
                                  -20721;4;0;false;false;;;;;;
                                  -20725;2;0;false;false;63;95;191;;;
                                  -20727;3;0;false;false;;;;;;
                                  -20730;4;1;false;false;127;0;85;;;
                                  -20734;1;0;false;false;;;;;;
                                  -20735;29;0;false;false;0;0;0;;;
                                  -20764;1;0;false;false;;;;;;
                                  -20765;8;0;false;false;0;0;0;;;
                                  -20773;1;0;false;false;;;;;;
                                  -20774;3;1;false;false;127;0;85;;;
                                  -20777;1;0;false;false;;;;;;
                                  -20778;10;0;false;false;0;0;0;;;
                                  -20788;1;0;false;false;;;;;;
                                  -20789;3;1;false;false;127;0;85;;;
                                  -20792;1;0;false;false;;;;;;
                                  -20793;5;0;false;false;0;0;0;;;
                                  -20798;1;0;false;false;;;;;;
                                  -20799;7;1;false;false;127;0;85;;;
                                  -20806;1;0;false;false;;;;;;
                                  -20807;7;0;false;false;0;0;0;;;
                                  -20814;1;0;false;false;;;;;;
                                  -20815;1;0;false;false;0;0;0;;;
                                  -20816;6;0;false;false;;;;;;
                                  -20822;3;1;false;false;127;0;85;;;
                                  -20825;1;0;false;false;;;;;;
                                  -20826;9;0;false;false;0;0;0;;;
                                  -20835;1;0;false;false;;;;;;
                                  -20836;1;0;false;false;0;0;0;;;
                                  -20837;1;0;false;false;;;;;;
                                  -20838;49;0;false;false;0;0;0;;;
                                  -20887;8;0;false;false;;;;;;
                                  -20895;2;1;false;false;127;0;85;;;
                                  -20897;1;0;false;false;;;;;;
                                  -20898;10;0;false;false;0;0;0;;;
                                  -20908;1;0;false;false;;;;;;
                                  -20909;2;0;false;false;0;0;0;;;
                                  -20911;1;0;false;false;;;;;;
                                  -20912;3;0;false;false;0;0;0;;;
                                  -20915;1;0;false;false;;;;;;
                                  -20916;1;0;false;false;0;0;0;;;
                                  -20917;5;0;false;false;;;;;;
                                  -20922;5;1;false;false;127;0;85;;;
                                  -20927;1;0;false;false;;;;;;
                                  -20928;3;1;false;false;127;0;85;;;
                                  -20931;1;0;false;false;;;;;;
                                  -20932;13;0;false;false;0;0;0;;;
                                  -20945;1;0;false;false;;;;;;
                                  -20946;1;0;false;false;0;0;0;;;
                                  -20947;1;0;false;false;;;;;;
                                  -20948;41;0;false;false;0;0;0;;;
                                  -20989;5;0;false;false;;;;;;
                                  -20994;12;0;false;false;0;0;0;;;
                                  -21006;1;0;false;false;;;;;;
                                  -21007;6;0;false;false;0;0;0;;;
                                  -21013;1;0;false;false;;;;;;
                                  -21014;1;0;false;false;0;0;0;;;
                                  -21015;1;0;false;false;;;;;;
                                  -21016;3;1;false;false;127;0;85;;;
                                  -21019;1;0;false;false;;;;;;
                                  -21020;30;0;false;false;0;0;0;;;
                                  -21050;1;0;false;false;;;;;;
                                  -21051;3;0;false;false;0;0;0;;;
                                  -21054;1;0;false;false;;;;;;
                                  -21055;12;0;false;false;0;0;0;;;
                                  -21067;5;0;false;false;;;;;;
                                  -21072;13;0;false;false;0;0;0;;;
                                  -21085;1;0;false;false;;;;;;
                                  -21086;7;0;false;false;0;0;0;;;
                                  -21093;5;0;false;false;;;;;;
                                  -21098;13;0;false;false;0;0;0;;;
                                  -21111;1;0;false;false;;;;;;
                                  -21112;28;0;false;false;0;0;0;;;
                                  -21140;1;0;false;false;;;;;;
                                  -21141;1;0;false;false;0;0;0;;;
                                  -21142;1;0;false;false;;;;;;
                                  -21143;16;0;false;false;0;0;0;;;
                                  -21159;5;0;false;false;;;;;;
                                  -21164;7;0;false;false;0;0;0;;;
                                  -21171;1;0;false;false;;;;;;
                                  -21172;1;0;false;false;0;0;0;;;
                                  -21173;1;0;false;false;;;;;;
                                  -21174;18;0;false;false;0;0;0;;;
                                  -21192;4;0;false;false;;;;;;
                                  -21196;1;0;false;false;0;0;0;;;
                                  -21197;4;0;false;false;;;;;;
                                  -21201;2;1;false;false;127;0;85;;;
                                  -21203;1;0;false;false;;;;;;
                                  -21204;17;0;false;false;0;0;0;;;
                                  -21221;1;0;false;false;;;;;;
                                  -21222;1;0;false;false;0;0;0;;;
                                  -21223;1;0;false;false;;;;;;
                                  -21224;2;0;false;false;0;0;0;;;
                                  -21226;1;0;false;false;;;;;;
                                  -21227;1;0;false;false;0;0;0;;;
                                  -21228;5;0;false;false;;;;;;
                                  -21233;3;1;false;false;127;0;85;;;
                                  -21236;1;0;false;false;;;;;;
                                  -21237;13;0;false;false;0;0;0;;;
                                  -21250;5;0;false;false;;;;;;
                                  -21255;3;1;false;false;127;0;85;;;
                                  -21258;1;0;false;false;;;;;;
                                  -21259;5;0;false;false;0;0;0;;;
                                  -21264;1;0;false;false;;;;;;
                                  -21265;1;0;false;false;0;0;0;;;
                                  -21266;1;0;false;false;;;;;;
                                  -21267;2;0;false;false;0;0;0;;;
                                  -21269;5;0;false;false;;;;;;
                                  -21274;3;1;false;false;127;0;85;;;
                                  -21277;1;0;false;false;;;;;;
                                  -21278;5;0;false;false;0;0;0;;;
                                  -21283;1;0;false;false;;;;;;
                                  -21284;1;0;false;false;0;0;0;;;
                                  -21285;1;0;false;false;;;;;;
                                  -21286;2;0;false;false;0;0;0;;;
                                  -21288;5;0;false;false;;;;;;
                                  -21293;10;0;false;false;0;0;0;;;
                                  -21303;1;0;false;false;;;;;;
                                  -21304;6;0;false;false;0;0;0;;;
                                  -21310;1;0;false;false;;;;;;
                                  -21311;1;0;false;false;0;0;0;;;
                                  -21312;1;0;false;false;;;;;;
                                  -21313;3;1;false;false;127;0;85;;;
                                  -21316;1;0;false;false;;;;;;
                                  -21317;20;0;false;false;0;0;0;;;
                                  -21337;5;0;false;false;;;;;;
                                  -21342;24;0;false;false;0;0;0;;;
                                  -21366;5;0;false;false;;;;;;
                                  -21371;28;0;false;false;0;0;0;;;
                                  -21399;5;0;false;false;;;;;;
                                  -21404;12;0;false;false;0;0;0;;;
                                  -21416;1;0;false;false;;;;;;
                                  -21417;1;0;false;false;0;0;0;;;
                                  -21418;1;0;false;false;;;;;;
                                  -21419;30;0;false;false;0;0;0;;;
                                  -21449;5;0;false;false;;;;;;
                                  -21454;2;1;false;false;127;0;85;;;
                                  -21456;1;0;false;false;;;;;;
                                  -21457;8;0;false;false;0;0;0;;;
                                  -21465;1;0;false;false;;;;;;
                                  -21466;1;0;false;false;0;0;0;;;
                                  -21467;6;0;false;false;;;;;;
                                  -21473;5;0;false;false;0;0;0;;;
                                  -21478;1;0;false;false;;;;;;
                                  -21479;1;0;false;false;0;0;0;;;
                                  -21480;1;0;false;false;;;;;;
                                  -21481;12;0;false;false;0;0;0;;;
                                  -21493;1;0;false;false;;;;;;
                                  -21494;1;0;false;false;0;0;0;;;
                                  -21495;1;0;false;false;;;;;;
                                  -21496;24;0;false;false;0;0;0;;;
                                  -21520;1;0;false;false;;;;;;
                                  -21521;1;0;false;false;0;0;0;;;
                                  -21522;1;0;false;false;;;;;;
                                  -21523;2;0;false;false;0;0;0;;;
                                  -21525;5;0;false;false;;;;;;
                                  -21530;1;0;false;false;0;0;0;;;
                                  -21531;5;0;false;false;;;;;;
                                  -21536;4;1;false;false;127;0;85;;;
                                  -21540;1;0;false;false;;;;;;
                                  -21541;1;0;false;false;0;0;0;;;
                                  -21542;6;0;false;false;;;;;;
                                  -21548;5;0;false;false;0;0;0;;;
                                  -21553;1;0;false;false;;;;;;
                                  -21554;1;0;false;false;0;0;0;;;
                                  -21555;1;0;false;false;;;;;;
                                  -21556;12;0;false;false;0;0;0;;;
                                  -21568;1;0;false;false;;;;;;
                                  -21569;1;0;false;false;0;0;0;;;
                                  -21570;1;0;false;false;;;;;;
                                  -21571;17;0;false;false;0;0;0;;;
                                  -21588;1;0;false;false;;;;;;
                                  -21589;1;0;false;false;0;0;0;;;
                                  -21590;1;0;false;false;;;;;;
                                  -21591;25;0;false;false;0;0;0;;;
                                  -21616;5;0;false;false;;;;;;
                                  -21621;1;0;false;false;0;0;0;;;
                                  -21622;5;0;false;false;;;;;;
                                  -21627;2;1;false;false;127;0;85;;;
                                  -21629;1;0;false;false;;;;;;
                                  -21630;10;0;false;false;0;0;0;;;
                                  -21640;1;0;false;false;;;;;;
                                  -21641;2;0;false;false;0;0;0;;;
                                  -21643;1;0;false;false;;;;;;
                                  -21644;5;0;false;false;0;0;0;;;
                                  -21649;1;0;false;false;;;;;;
                                  -21650;1;0;false;false;0;0;0;;;
                                  -21651;6;0;false;false;;;;;;
                                  -21657;5;0;false;false;0;0;0;;;
                                  -21662;1;0;false;false;;;;;;
                                  -21663;1;0;false;false;0;0;0;;;
                                  -21664;1;0;false;false;;;;;;
                                  -21665;13;0;false;false;0;0;0;;;
                                  -21678;5;0;false;false;;;;;;
                                  -21683;1;0;false;false;0;0;0;;;
                                  -21684;5;0;false;false;;;;;;
                                  -21689;4;1;false;false;127;0;85;;;
                                  -21693;9;0;false;false;;;;;;
                                  -21702;2;1;false;false;127;0;85;;;
                                  -21704;1;0;false;false;;;;;;
                                  -21705;10;0;false;false;0;0;0;;;
                                  -21715;1;0;false;false;;;;;;
                                  -21716;2;0;false;false;0;0;0;;;
                                  -21718;1;0;false;false;;;;;;
                                  -21719;7;0;false;false;0;0;0;;;
                                  -21726;1;0;false;false;;;;;;
                                  -21727;1;0;false;false;0;0;0;;;
                                  -21728;6;0;false;false;;;;;;
                                  -21734;5;0;false;false;0;0;0;;;
                                  -21739;1;0;false;false;;;;;;
                                  -21740;1;0;false;false;0;0;0;;;
                                  -21741;1;0;false;false;;;;;;
                                  -21742;10;0;false;false;0;0;0;;;
                                  -21752;1;0;false;false;;;;;;
                                  -21753;1;0;false;false;0;0;0;;;
                                  -21754;1;0;false;false;;;;;;
                                  -21755;13;0;false;false;0;0;0;;;
                                  -21768;1;0;false;false;;;;;;
                                  -21769;1;0;false;false;0;0;0;;;
                                  -21770;1;0;false;false;;;;;;
                                  -21771;2;0;false;false;0;0;0;;;
                                  -21773;5;0;false;false;;;;;;
                                  -21778;1;0;false;false;0;0;0;;;
                                  -21779;5;0;false;false;;;;;;
                                  -21784;4;1;false;false;127;0;85;;;
                                  -21788;6;0;false;false;;;;;;
                                  -21794;2;1;false;false;127;0;85;;;
                                  -21796;1;0;false;false;;;;;;
                                  -21797;10;0;false;false;0;0;0;;;
                                  -21807;1;0;false;false;;;;;;
                                  -21808;2;0;false;false;0;0;0;;;
                                  -21810;1;0;false;false;;;;;;
                                  -21811;6;0;false;false;0;0;0;;;
                                  -21817;1;0;false;false;;;;;;
                                  -21818;1;0;false;false;0;0;0;;;
                                  -21819;6;0;false;false;;;;;;
                                  -21825;5;0;false;false;0;0;0;;;
                                  -21830;1;0;false;false;;;;;;
                                  -21831;1;0;false;false;0;0;0;;;
                                  -21832;1;0;false;false;;;;;;
                                  -21833;12;0;false;false;0;0;0;;;
                                  -21845;1;0;false;false;;;;;;
                                  -21846;1;0;false;false;0;0;0;;;
                                  -21847;1;0;false;false;;;;;;
                                  -21848;16;0;false;false;0;0;0;;;
                                  -21864;1;0;false;false;;;;;;
                                  -21865;1;0;false;false;0;0;0;;;
                                  -21866;1;0;false;false;;;;;;
                                  -21867;13;0;false;false;0;0;0;;;
                                  -21880;5;0;false;false;;;;;;
                                  -21885;1;0;false;false;0;0;0;;;
                                  -21886;5;0;false;false;;;;;;
                                  -21891;15;0;false;false;0;0;0;;;
                                  -21906;1;0;false;false;;;;;;
                                  -21907;6;0;false;false;0;0;0;;;
                                  -21913;1;0;false;false;;;;;;
                                  -21914;7;0;false;false;0;0;0;;;
                                  -21921;5;0;false;false;;;;;;
                                  -21926;17;0;false;false;0;0;0;;;
                                  -21943;4;0;false;false;;;;;;
                                  -21947;1;0;false;false;0;0;0;;;
                                  -21948;3;0;false;false;;;;;;
                                  -21951;1;0;false;false;0;0;0;;;
                                  -21952;3;0;false;false;;;;;;
                                  -21955;3;0;false;false;63;95;191;;;
                                  -21958;4;0;false;false;;;;;;
                                  -21962;1;0;false;false;63;95;191;;;
                                  -21963;1;0;false;false;;;;;;
                                  -21964;6;0;false;false;63;95;191;;;
                                  -21970;1;0;false;false;;;;;;
                                  -21971;1;0;false;false;63;95;191;;;
                                  -21972;1;0;false;false;;;;;;
                                  -21973;5;0;false;false;63;95;191;;;
                                  -21978;1;0;false;false;;;;;;
                                  -21979;3;0;false;false;63;95;191;;;
                                  -21982;1;0;false;false;;;;;;
                                  -21983;3;0;false;false;63;95;191;;;
                                  -21986;1;0;false;false;;;;;;
                                  -21987;6;0;false;false;63;95;191;;;
                                  -21993;1;0;false;false;;;;;;
                                  -21994;3;0;false;false;63;95;191;;;
                                  -21997;1;0;false;false;;;;;;
                                  -21998;5;0;false;false;63;95;191;;;
                                  -22003;1;0;false;false;;;;;;
                                  -22004;9;0;false;false;63;95;191;;;
                                  -22013;1;0;false;false;;;;;;
                                  -22014;2;0;false;false;63;95;191;;;
                                  -22016;1;0;false;false;;;;;;
                                  -22017;3;0;false;false;63;95;191;;;
                                  -22020;1;0;false;false;;;;;;
                                  -22021;12;0;false;false;63;95;191;;;
                                  -22033;4;0;false;false;;;;;;
                                  -22037;2;0;false;false;63;95;191;;;
                                  -22039;3;0;false;false;;;;;;
                                  -22042;6;1;false;false;127;0;85;;;
                                  -22048;1;0;false;false;;;;;;
                                  -22049;4;1;false;false;127;0;85;;;
                                  -22053;1;0;false;false;;;;;;
                                  -22054;5;0;false;false;0;0;0;;;
                                  -22059;1;0;false;false;;;;;;
                                  -22060;1;0;false;false;0;0;0;;;
                                  -22061;4;0;false;false;;;;;;
                                  -22065;6;0;false;false;0;0;0;;;
                                  -22071;1;0;false;false;;;;;;
                                  -22072;7;0;false;false;0;0;0;;;
                                  -22079;1;0;false;false;;;;;;
                                  -22080;1;0;false;false;0;0;0;;;
                                  -22081;1;0;false;false;;;;;;
                                  -22082;21;0;false;false;0;0;0;;;
                                  -22103;8;0;false;false;;;;;;
                                  -22111;2;1;false;false;127;0;85;;;
                                  -22113;1;0;false;false;;;;;;
                                  -22114;8;0;false;false;0;0;0;;;
                                  -22122;1;0;false;false;;;;;;
                                  -22123;2;0;false;false;0;0;0;;;
                                  -22125;1;0;false;false;;;;;;
                                  -22126;4;1;false;false;127;0;85;;;
                                  -22130;1;0;false;false;0;0;0;;;
                                  -22131;1;0;false;false;;;;;;
                                  -22132;1;0;false;false;0;0;0;;;
                                  -22133;5;0;false;false;;;;;;
                                  -22138;7;0;false;false;0;0;0;;;
                                  -22145;1;0;false;false;;;;;;
                                  -22146;1;0;false;false;0;0;0;;;
                                  -22147;1;0;false;false;;;;;;
                                  -22148;10;0;false;false;42;0;255;;;
                                  -22158;1;0;false;false;0;0;0;;;
                                  -22159;4;0;false;false;;;;;;
                                  -22163;1;0;false;false;0;0;0;;;
                                  -22164;6;0;false;false;;;;;;
                                  -22170;2;1;false;false;127;0;85;;;
                                  -22172;1;0;false;false;;;;;;
                                  -22173;27;0;false;false;0;0;0;;;
                                  -22200;1;0;false;false;;;;;;
                                  -22201;1;0;false;false;0;0;0;;;
                                  -22202;5;0;false;false;;;;;;
                                  -22207;22;0;false;false;0;0;0;;;
                                  -22229;5;0;false;false;;;;;;
                                  -22234;21;0;false;false;0;0;0;;;
                                  -22255;5;0;false;false;;;;;;
                                  -22260;8;0;false;false;0;0;0;;;
                                  -22268;5;0;false;false;;;;;;
                                  -22273;10;0;false;false;0;0;0;;;
                                  -22283;5;0;false;false;;;;;;
                                  -22288;17;0;false;false;0;0;0;;;
                                  -22305;7;0;false;false;;;;;;
                                  -22312;1;0;false;false;0;0;0;;;
                                  -22313;3;0;false;false;;;;;;
                                  -22316;1;0;false;false;0;0;0;;;
                                  -22317;3;0;false;false;;;;;;
                                  -22320;3;0;false;false;63;95;191;;;
                                  -22323;4;0;false;false;;;;;;
                                  -22327;1;0;false;false;63;95;191;;;
                                  -22328;1;0;false;false;;;;;;
                                  -22329;5;0;false;false;63;95;191;;;
                                  -22334;1;0;false;false;;;;;;
                                  -22335;8;0;false;false;63;95;191;;;
                                  -22343;1;0;false;false;;;;;;
                                  -22344;1;0;false;false;63;95;191;;;
                                  -22345;1;0;false;false;;;;;;
                                  -22346;3;0;false;false;63;95;191;;;
                                  -22349;1;0;false;false;;;;;;
                                  -22350;5;0;false;false;63;95;191;;;
                                  -22355;4;0;false;false;;;;;;
                                  -22359;1;0;false;false;63;95;191;;;
                                  -22360;5;0;false;false;;;;;;
                                  -22365;1;0;false;false;63;95;191;;;
                                  -22366;1;0;false;false;;;;;;
                                  -22367;7;1;false;false;127;159;191;;;
                                  -22374;4;0;false;false;63;95;191;;;
                                  -22378;1;0;false;false;;;;;;
                                  -22379;4;0;false;false;63;95;191;;;
                                  -22383;1;0;false;false;;;;;;
                                  -22384;6;0;false;false;63;95;191;;;
                                  -22390;1;0;false;false;;;;;;
                                  -22391;2;0;false;false;63;95;191;;;
                                  -22393;1;0;false;false;;;;;;
                                  -22394;2;0;false;false;63;95;191;;;
                                  -22396;1;0;false;false;;;;;;
                                  -22397;7;0;false;false;63;95;191;;;
                                  -22404;4;0;false;false;;;;;;
                                  -22408;2;0;false;false;63;95;191;;;
                                  -22410;3;0;false;false;;;;;;
                                  -22413;4;1;false;false;127;0;85;;;
                                  -22417;1;0;false;false;;;;;;
                                  -22418;10;0;false;false;0;0;0;;;
                                  -22428;3;1;false;false;127;0;85;;;
                                  -22431;1;0;false;false;;;;;;
                                  -22432;5;0;false;false;0;0;0;;;
                                  -22437;1;0;false;false;;;;;;
                                  -22438;1;0;false;false;0;0;0;;;
                                  -22439;4;0;false;false;;;;;;
                                  -22443;20;0;false;false;0;0;0;;;
                                  -22463;4;0;false;false;;;;;;
                                  -22467;21;0;false;false;0;0;0;;;
                                  -22488;1;0;false;false;;;;;;
                                  -22489;4;1;false;false;127;0;85;;;
                                  -22493;2;0;false;false;0;0;0;;;
                                  -22495;3;0;false;false;;;;;;
                                  -22498;1;0;false;false;0;0;0;;;
                                  -22499;4;0;false;false;;;;;;
                                  -22503;1;0;false;false;0;0;0;;;
                                  -22504;3;0;false;false;;;;;;
                                  -22507;3;0;false;false;63;95;191;;;
                                  -22510;4;0;false;false;;;;;;
                                  -22514;1;0;false;false;63;95;191;;;
                                  -22515;1;0;false;false;;;;;;
                                  -22516;3;0;false;false;63;95;191;;;
                                  -22519;1;0;false;false;;;;;;
                                  -22520;6;0;false;false;127;127;159;;;
                                  -22526;9;0;false;false;63;95;191;;;
                                  -22535;7;0;false;false;127;127;159;;;
                                  -22542;1;0;false;false;;;;;;
                                  -22543;5;0;false;false;63;95;191;;;
                                  -22548;1;0;false;false;;;;;;
                                  -22549;2;0;false;false;63;95;191;;;
                                  -22551;1;0;false;false;;;;;;
                                  -22552;4;0;false;false;63;95;191;;;
                                  -22556;1;0;false;false;;;;;;
                                  -22557;2;0;false;false;63;95;191;;;
                                  -22559;1;0;false;false;;;;;;
                                  -22560;5;0;false;false;63;95;191;;;
                                  -22565;1;0;false;false;;;;;;
                                  -22566;6;0;false;false;63;95;191;;;
                                  -22572;1;0;false;false;;;;;;
                                  -22573;7;0;false;false;63;95;191;;;
                                  -22580;1;0;false;false;;;;;;
                                  -22581;2;0;false;false;63;95;191;;;
                                  -22583;4;0;false;false;;;;;;
                                  -22587;1;0;false;false;63;95;191;;;
                                  -22588;1;0;false;false;;;;;;
                                  -22589;4;0;false;false;63;95;191;;;
                                  -22593;1;0;false;false;;;;;;
                                  -22594;5;0;false;false;63;95;191;;;
                                  -22599;1;0;false;false;;;;;;
                                  -22600;3;0;false;false;63;95;191;;;
                                  -22603;1;0;false;false;;;;;;
                                  -22604;14;0;false;false;63;95;191;;;
                                  -22618;1;0;false;false;;;;;;
                                  -22619;8;0;false;false;63;95;191;;;
                                  -22627;1;0;false;false;;;;;;
                                  -22628;4;0;false;false;63;95;191;;;
                                  -22632;1;0;false;false;;;;;;
                                  -22633;3;0;false;false;63;95;191;;;
                                  -22636;1;0;false;false;;;;;;
                                  -22637;3;0;false;false;63;95;191;;;
                                  -22640;1;0;false;false;;;;;;
                                  -22641;13;0;false;false;63;95;191;;;
                                  -22654;5;0;false;false;;;;;;
                                  -22659;1;0;false;false;63;95;191;;;
                                  -22660;1;0;false;false;;;;;;
                                  -22661;7;0;false;false;63;95;191;;;
                                  -22668;1;0;false;false;;;;;;
                                  -22669;4;0;false;false;63;95;191;;;
                                  -22673;4;0;false;false;;;;;;
                                  -22677;1;0;false;false;63;95;191;;;
                                  -22678;1;0;false;false;;;;;;
                                  -22679;3;0;false;false;127;127;159;;;
                                  -22682;4;0;false;false;;;;;;
                                  -22686;1;0;false;false;63;95;191;;;
                                  -22687;1;0;false;false;;;;;;
                                  -22688;10;0;false;false;63;95;191;;;
                                  -22698;1;0;false;false;;;;;;
                                  -22699;2;0;false;false;63;95;191;;;
                                  -22701;1;0;false;false;;;;;;
                                  -22702;10;0;false;false;63;95;191;;;
                                  -22712;1;0;false;false;;;;;;
                                  -22713;2;0;false;false;63;95;191;;;
                                  -22715;1;0;false;false;;;;;;
                                  -22716;6;0;false;false;63;95;191;;;
                                  -22722;1;0;false;false;;;;;;
                                  -22723;1;0;false;false;63;95;191;;;
                                  -22724;1;0;false;false;;;;;;
                                  -22725;5;0;false;false;63;95;191;;;
                                  -22730;1;0;false;false;;;;;;
                                  -22731;3;0;false;false;63;95;191;;;
                                  -22734;1;0;false;false;;;;;;
                                  -22735;6;0;false;false;63;95;191;;;
                                  -22741;1;0;false;false;;;;;;
                                  -22742;4;0;false;false;63;95;191;;;
                                  -22746;1;0;false;false;;;;;;
                                  -22747;5;0;false;false;63;95;191;;;
                                  -22752;5;0;false;false;;;;;;
                                  -22757;1;0;false;false;63;95;191;;;
                                  -22758;1;0;false;false;;;;;;
                                  -22759;7;0;false;false;63;95;191;;;
                                  -22766;1;0;false;false;;;;;;
                                  -22767;3;0;false;false;63;95;191;;;
                                  -22770;1;0;false;false;;;;;;
                                  -22771;4;0;false;false;63;95;191;;;
                                  -22775;1;0;false;false;;;;;;
                                  -22776;7;0;false;false;63;95;191;;;
                                  -22783;5;0;false;false;;;;;;
                                  -22788;1;0;false;false;63;95;191;;;
                                  -22789;1;0;false;false;;;;;;
                                  -22790;4;0;false;false;127;127;159;;;
                                  -22794;4;0;false;false;;;;;;
                                  -22798;1;0;false;false;63;95;191;;;
                                  -22799;1;0;false;false;;;;;;
                                  -22800;3;0;false;false;127;127;159;;;
                                  -22803;4;0;false;false;;;;;;
                                  -22807;1;0;false;false;63;95;191;;;
                                  -22808;1;0;false;false;;;;;;
                                  -22809;5;0;false;false;63;95;191;;;
                                  -22814;1;0;false;false;;;;;;
                                  -22815;3;0;false;false;63;95;191;;;
                                  -22818;1;0;false;false;;;;;;
                                  -22819;7;0;false;false;63;95;191;;;
                                  -22826;1;0;false;false;;;;;;
                                  -22827;5;0;false;false;63;95;191;;;
                                  -22832;1;0;false;false;;;;;;
                                  -22833;3;0;false;false;63;95;191;;;
                                  -22836;1;0;false;false;;;;;;
                                  -22837;4;0;false;false;63;95;191;;;
                                  -22841;1;0;false;false;;;;;;
                                  -22842;6;0;false;false;63;95;191;;;
                                  -22848;1;0;false;false;;;;;;
                                  -22849;3;0;false;false;63;95;191;;;
                                  -22852;1;0;false;false;;;;;;
                                  -22853;2;0;false;false;63;95;191;;;
                                  -22855;1;0;false;false;;;;;;
                                  -22856;8;0;false;false;63;95;191;;;
                                  -22864;1;0;false;false;;;;;;
                                  -22865;5;0;false;false;63;95;191;;;
                                  -22870;1;0;false;false;;;;;;
                                  -22871;4;0;false;false;63;95;191;;;
                                  -22875;1;0;false;false;;;;;;
                                  -22876;2;0;false;false;63;95;191;;;
                                  -22878;4;0;false;false;;;;;;
                                  -22882;1;0;false;false;63;95;191;;;
                                  -22883;1;0;false;false;;;;;;
                                  -22884;9;0;false;false;63;95;191;;;
                                  -22893;1;0;false;false;;;;;;
                                  -22894;5;0;false;false;63;95;191;;;
                                  -22899;1;0;false;false;;;;;;
                                  -22900;3;0;false;false;63;95;191;;;
                                  -22903;1;0;false;false;;;;;;
                                  -22904;6;0;false;false;63;95;191;;;
                                  -22910;1;0;false;false;;;;;;
                                  -22911;7;0;false;false;63;95;191;;;
                                  -22918;1;0;false;false;;;;;;
                                  -22919;4;0;false;false;63;95;191;;;
                                  -22923;1;0;false;false;;;;;;
                                  -22924;3;0;false;false;63;95;191;;;
                                  -22927;1;0;false;false;;;;;;
                                  -22928;18;0;false;false;63;95;191;;;
                                  -22946;1;0;false;false;;;;;;
                                  -22947;2;0;false;false;63;95;191;;;
                                  -22949;5;0;false;false;;;;;;
                                  -22954;1;0;false;false;63;95;191;;;
                                  -22955;1;0;false;false;;;;;;
                                  -22956;4;0;false;false;63;95;191;;;
                                  -22960;1;0;false;false;;;;;;
                                  -22961;2;0;false;false;63;95;191;;;
                                  -22963;1;0;false;false;;;;;;
                                  -22964;5;0;false;false;63;95;191;;;
                                  -22969;1;0;false;false;;;;;;
                                  -22970;3;0;false;false;63;95;191;;;
                                  -22973;1;0;false;false;;;;;;
                                  -22974;8;0;false;false;63;95;191;;;
                                  -22982;1;0;false;false;;;;;;
                                  -22983;2;0;false;false;63;95;191;;;
                                  -22985;1;0;false;false;;;;;;
                                  -22986;3;0;false;false;63;95;191;;;
                                  -22989;1;0;false;false;;;;;;
                                  -22990;7;0;false;false;63;95;191;;;
                                  -22997;1;0;false;false;;;;;;
                                  -22998;3;0;false;false;63;95;191;;;
                                  -23001;1;0;false;false;;;;;;
                                  -23002;6;0;false;false;63;95;191;;;
                                  -23008;1;0;false;false;;;;;;
                                  -23009;3;0;false;false;63;95;191;;;
                                  -23012;1;0;false;false;;;;;;
                                  -23013;7;0;false;false;63;95;191;;;
                                  -23020;1;0;false;false;;;;;;
                                  -23021;2;0;false;false;63;95;191;;;
                                  -23023;4;0;false;false;;;;;;
                                  -23027;1;0;false;false;63;95;191;;;
                                  -23028;1;0;false;false;;;;;;
                                  -23029;3;0;false;false;63;95;191;;;
                                  -23032;1;0;false;false;;;;;;
                                  -23033;3;0;false;false;63;95;191;;;
                                  -23036;1;0;false;false;;;;;;
                                  -23037;6;0;false;false;63;95;191;;;
                                  -23043;1;0;false;false;;;;;;
                                  -23044;4;0;false;false;63;95;191;;;
                                  -23048;1;0;false;false;;;;;;
                                  -23049;4;0;false;false;63;95;191;;;
                                  -23053;1;0;false;false;;;;;;
                                  -23054;3;0;false;false;63;95;191;;;
                                  -23057;1;0;false;false;;;;;;
                                  -23058;8;0;false;false;63;95;191;;;
                                  -23066;1;0;false;false;;;;;;
                                  -23067;2;0;false;false;63;95;191;;;
                                  -23069;1;0;false;false;;;;;;
                                  -23070;3;0;false;false;63;95;191;;;
                                  -23073;1;0;false;false;;;;;;
                                  -23074;7;0;false;false;63;95;191;;;
                                  -23081;1;0;false;false;;;;;;
                                  -23082;2;0;false;false;63;95;191;;;
                                  -23084;1;0;false;false;;;;;;
                                  -23085;9;0;false;false;63;95;191;;;
                                  -23094;1;0;false;false;;;;;;
                                  -23095;3;0;false;false;63;95;191;;;
                                  -23098;5;0;false;false;;;;;;
                                  -23103;1;0;false;false;63;95;191;;;
                                  -23104;1;0;false;false;;;;;;
                                  -23105;6;0;false;false;63;95;191;;;
                                  -23111;1;0;false;false;;;;;;
                                  -23112;4;0;false;false;63;95;191;;;
                                  -23116;1;0;false;false;;;;;;
                                  -23117;4;0;false;false;63;95;191;;;
                                  -23121;1;0;false;false;;;;;;
                                  -23122;3;0;false;false;63;95;191;;;
                                  -23125;1;0;false;false;;;;;;
                                  -23126;4;0;false;false;63;95;191;;;
                                  -23130;1;0;false;false;;;;;;
                                  -23131;2;0;false;false;63;95;191;;;
                                  -23133;1;0;false;false;;;;;;
                                  -23134;4;0;false;false;63;95;191;;;
                                  -23138;1;0;false;false;;;;;;
                                  -23139;3;0;false;false;63;95;191;;;
                                  -23142;1;0;false;false;;;;;;
                                  -23143;3;0;false;false;63;95;191;;;
                                  -23146;1;0;false;false;;;;;;
                                  -23147;5;0;false;false;63;95;191;;;
                                  -23152;1;0;false;false;;;;;;
                                  -23153;5;0;false;false;63;95;191;;;
                                  -23158;4;0;false;false;;;;;;
                                  -23162;1;0;false;false;63;95;191;;;
                                  -23163;1;0;false;false;;;;;;
                                  -23164;4;0;false;false;127;127;159;;;
                                  -23168;4;0;false;false;;;;;;
                                  -23172;2;0;false;false;63;95;191;;;
                                  -23174;3;0;false;false;;;;;;
                                  -23177;5;1;false;false;127;0;85;;;
                                  -23182;1;0;false;false;;;;;;
                                  -23183;9;0;false;false;0;0;0;;;
                                  -23192;1;0;false;false;;;;;;
                                  -23193;7;1;false;false;127;0;85;;;
                                  -23200;1;0;false;false;;;;;;
                                  -23201;10;0;false;false;0;0;0;;;
                                  -23211;1;0;false;false;;;;;;
                                  -23212;1;0;false;false;0;0;0;;;
                                  -23213;4;0;false;false;;;;;;
                                  -23217;6;1;false;false;127;0;85;;;
                                  -23223;1;0;false;false;;;;;;
                                  -23224;5;1;false;false;127;0;85;;;
                                  -23229;1;0;false;false;;;;;;
                                  -23230;3;1;false;false;127;0;85;;;
                                  -23233;1;0;false;false;;;;;;
                                  -23234;18;0;false;false;0;0;0;;;
                                  -23252;1;0;false;false;;;;;;
                                  -23253;1;0;false;false;0;0;0;;;
                                  -23254;1;0;false;false;;;;;;
                                  -23255;2;0;false;false;0;0;0;;;
                                  -23257;4;0;false;false;;;;;;
                                  -23261;6;1;false;false;127;0;85;;;
                                  -23267;1;0;false;false;;;;;;
                                  -23268;5;1;false;false;127;0;85;;;
                                  -23273;1;0;false;false;;;;;;
                                  -23274;3;1;false;false;127;0;85;;;
                                  -23277;1;0;false;false;;;;;;
                                  -23278;18;0;false;false;0;0;0;;;
                                  -23296;1;0;false;false;;;;;;
                                  -23297;1;0;false;false;0;0;0;;;
                                  -23298;1;0;false;false;;;;;;
                                  -23299;2;0;false;false;0;0;0;;;
                                  -23301;4;0;false;false;;;;;;
                                  -23305;6;0;false;false;0;0;0;;;
                                  -23311;1;0;false;false;;;;;;
                                  -23312;10;0;false;false;0;0;0;;;
                                  -23322;1;0;false;false;;;;;;
                                  -23323;1;0;false;false;0;0;0;;;
                                  -23324;1;0;false;false;;;;;;
                                  -23325;3;1;false;false;127;0;85;;;
                                  -23328;1;0;false;false;;;;;;
                                  -23329;9;0;false;false;0;0;0;;;
                                  -23338;4;0;false;false;;;;;;
                                  -23342;7;1;false;false;127;0;85;;;
                                  -23349;1;0;false;false;;;;;;
                                  -23350;13;0;false;false;0;0;0;;;
                                  -23363;7;0;false;false;;;;;;
                                  -23370;3;0;false;false;63;95;191;;;
                                  -23373;4;0;false;false;;;;;;
                                  -23377;1;0;false;false;63;95;191;;;
                                  -23378;1;0;false;false;;;;;;
                                  -23379;7;0;false;false;63;95;191;;;
                                  -23386;1;0;false;false;;;;;;
                                  -23387;1;0;false;false;63;95;191;;;
                                  -23388;1;0;false;false;;;;;;
                                  -23389;3;0;false;false;63;95;191;;;
                                  -23392;1;0;false;false;;;;;;
                                  -23393;6;0;false;false;63;95;191;;;
                                  -23399;1;0;false;false;;;;;;
                                  -23400;4;0;false;false;63;95;191;;;
                                  -23404;1;0;false;false;;;;;;
                                  -23405;6;0;false;false;63;95;191;;;
                                  -23411;1;0;false;false;;;;;;
                                  -23412;7;0;false;false;63;95;191;;;
                                  -23419;1;0;false;false;;;;;;
                                  -23420;8;0;false;false;63;95;191;;;
                                  -23428;1;0;false;false;;;;;;
                                  -23429;2;0;false;false;63;95;191;;;
                                  -23431;1;0;false;false;;;;;;
                                  -23432;6;0;false;false;63;95;191;;;
                                  -23438;1;0;false;false;;;;;;
                                  -23439;7;0;false;false;63;95;191;;;
                                  -23446;4;0;false;false;;;;;;
                                  -23450;1;0;false;false;63;95;191;;;
                                  -23451;1;0;false;false;;;;;;
                                  -23452;2;0;false;false;63;95;191;;;
                                  -23454;1;0;false;false;;;;;;
                                  -23455;3;0;false;false;63;95;191;;;
                                  -23458;1;0;false;false;;;;;;
                                  -23459;9;0;false;false;63;95;191;;;
                                  -23468;2;0;false;false;;;;;;
                                  -23470;6;0;false;false;127;127;159;;;
                                  -23476;5;0;false;false;63;95;191;;;
                                  -23481;7;0;false;false;127;127;159;;;
                                  -23488;1;0;false;false;;;;;;
                                  -23489;3;0;false;false;63;95;191;;;
                                  -23492;1;0;false;false;;;;;;
                                  -23493;6;0;false;false;127;127;159;;;
                                  -23499;6;0;false;false;63;95;191;;;
                                  -23505;7;0;false;false;127;127;159;;;
                                  -23512;3;0;false;false;63;95;191;;;
                                  -23515;1;0;false;false;;;;;;
                                  -23516;2;0;false;false;63;95;191;;;
                                  -23518;1;0;false;false;;;;;;
                                  -23519;3;0;false;false;63;95;191;;;
                                  -23522;1;0;false;false;;;;;;
                                  -23523;2;0;false;false;63;95;191;;;
                                  -23525;1;0;false;false;;;;;;
                                  -23526;7;0;false;false;63;95;191;;;
                                  -23533;1;0;false;false;;;;;;
                                  -23534;7;0;false;false;63;95;191;;;
                                  -23541;5;0;false;false;;;;;;
                                  -23546;1;0;false;false;63;95;191;;;
                                  -23547;1;0;false;false;;;;;;
                                  -23548;6;0;false;false;63;95;191;;;
                                  -23554;4;0;false;false;;;;;;
                                  -23558;1;0;false;false;63;95;191;;;
                                  -23559;1;0;false;false;;;;;;
                                  -23560;3;0;false;false;127;127;159;;;
                                  -23563;4;0;false;false;;;;;;
                                  -23567;1;0;false;false;63;95;191;;;
                                  -23568;4;0;false;false;;;;;;
                                  -23572;1;0;false;false;63;95;191;;;
                                  -23573;1;0;false;false;;;;;;
                                  -23574;7;1;false;false;127;159;191;;;
                                  -23581;5;0;false;false;63;95;191;;;
                                  -23586;1;0;false;false;;;;;;
                                  -23587;5;0;false;false;63;95;191;;;
                                  -23592;1;0;false;false;;;;;;
                                  -23593;6;0;false;false;63;95;191;;;
                                  -23599;1;0;false;false;;;;;;
                                  -23600;2;0;false;false;63;95;191;;;
                                  -23602;1;0;false;false;;;;;;
                                  -23603;7;0;false;false;63;95;191;;;
                                  -23610;1;0;false;false;;;;;;
                                  -23611;2;0;false;false;63;95;191;;;
                                  -23613;1;0;false;false;;;;;;
                                  -23614;6;0;false;false;63;95;191;;;
                                  -23620;1;0;false;false;;;;;;
                                  -23621;1;0;false;false;63;95;191;;;
                                  -23622;1;0;false;false;;;;;;
                                  -23623;5;0;false;false;63;95;191;;;
                                  -23628;1;0;false;false;;;;;;
                                  -23629;4;0;false;false;63;95;191;;;
                                  -23633;5;0;false;false;;;;;;
                                  -23638;1;0;false;false;63;95;191;;;
                                  -23639;2;0;false;false;;;;;;
                                  -23641;9;0;false;false;63;95;191;;;
                                  -23650;1;0;false;false;;;;;;
                                  -23651;2;0;false;false;63;95;191;;;
                                  -23653;1;0;false;false;;;;;;
                                  -23654;8;0;false;false;63;95;191;;;
                                  -23662;4;0;false;false;;;;;;
                                  -23666;1;0;false;false;63;95;191;;;
                                  -23667;1;0;false;false;;;;;;
                                  -23668;7;1;false;false;127;159;191;;;
                                  -23675;6;0;false;false;63;95;191;;;
                                  -23681;1;0;false;false;;;;;;
                                  -23682;6;0;false;false;63;95;191;;;
                                  -23688;1;0;false;false;;;;;;
                                  -23689;2;0;false;false;63;95;191;;;
                                  -23691;1;0;false;false;;;;;;
                                  -23692;7;0;false;false;63;95;191;;;
                                  -23699;1;0;false;false;;;;;;
                                  -23700;2;0;false;false;63;95;191;;;
                                  -23702;1;0;false;false;;;;;;
                                  -23703;5;0;false;false;63;95;191;;;
                                  -23708;4;0;false;false;;;;;;
                                  -23712;2;0;false;false;63;95;191;;;
                                  -23714;3;0;false;false;;;;;;
                                  -23717;6;1;false;false;127;0;85;;;
                                  -23723;1;0;false;false;;;;;;
                                  -23724;10;0;false;false;0;0;0;;;
                                  -23734;3;1;false;false;127;0;85;;;
                                  -23737;1;0;false;false;;;;;;
                                  -23738;6;0;false;false;0;0;0;;;
                                  -23744;1;0;false;false;;;;;;
                                  -23745;3;1;false;false;127;0;85;;;
                                  -23748;1;0;false;false;;;;;;
                                  -23749;7;0;false;false;0;0;0;;;
                                  -23756;1;0;false;false;;;;;;
                                  -23757;1;0;false;false;0;0;0;;;
                                  -23758;4;0;false;false;;;;;;
                                  -23762;5;1;false;false;127;0;85;;;
                                  -23767;7;0;false;false;0;0;0;;;
                                  -23774;1;0;false;false;;;;;;
                                  -23775;8;0;false;false;0;0;0;;;
                                  -23783;4;0;false;false;;;;;;
                                  -23787;39;0;false;false;0;0;0;;;
                                  -23826;4;0;false;false;;;;;;
                                  -23830;39;0;false;false;0;0;0;;;
                                  -23869;6;0;false;false;;;;;;
                                  -23875;13;0;false;false;0;0;0;;;
                                  -23888;3;0;false;false;;;;;;
                                  -23891;1;0;false;false;0;0;0;;;
                                  -23892;3;0;false;false;;;;;;
                                  -23895;3;0;false;false;63;95;191;;;
                                  -23898;4;0;false;false;;;;;;
                                  -23902;1;0;false;false;63;95;191;;;
                                  -23903;1;0;false;false;;;;;;
                                  -23904;6;0;false;false;63;95;191;;;
                                  -23910;1;0;false;false;;;;;;
                                  -23911;3;0;false;false;63;95;191;;;
                                  -23914;1;0;false;false;;;;;;
                                  -23915;3;0;false;false;63;95;191;;;
                                  -23918;1;0;false;false;;;;;;
                                  -23919;7;0;false;false;63;95;191;;;
                                  -23926;1;0;false;false;;;;;;
                                  -23927;4;0;false;false;63;95;191;;;
                                  -23931;1;0;false;false;;;;;;
                                  -23932;6;0;false;false;63;95;191;;;
                                  -23938;1;0;false;false;;;;;;
                                  -23939;2;0;false;false;63;95;191;;;
                                  -23941;1;0;false;false;;;;;;
                                  -23942;4;0;false;false;63;95;191;;;
                                  -23946;1;0;false;false;;;;;;
                                  -23947;7;0;false;false;63;95;191;;;
                                  -23954;1;0;false;false;;;;;;
                                  -23955;3;0;false;false;63;95;191;;;
                                  -23958;1;0;false;false;;;;;;
                                  -23959;2;0;false;false;63;95;191;;;
                                  -23961;1;0;false;false;;;;;;
                                  -23962;8;0;false;false;63;95;191;;;
                                  -23970;4;0;false;false;;;;;;
                                  -23974;1;0;false;false;63;95;191;;;
                                  -23975;1;0;false;false;;;;;;
                                  -23976;3;0;false;false;127;127;159;;;
                                  -23979;5;0;false;false;63;95;191;;;
                                  -23984;4;0;false;false;127;127;159;;;
                                  -23988;2;0;false;false;;;;;;
                                  -23990;6;0;false;false;127;127;159;;;
                                  -23996;10;0;false;false;63;95;191;;;
                                  -24006;7;0;false;false;127;127;159;;;
                                  -24013;1;0;false;false;;;;;;
                                  -24014;4;0;false;false;63;95;191;;;
                                  -24018;1;0;false;false;;;;;;
                                  -24019;3;0;false;false;63;95;191;;;
                                  -24022;1;0;false;false;;;;;;
                                  -24023;6;0;false;false;63;95;191;;;
                                  -24029;1;0;false;false;;;;;;
                                  -24030;1;0;false;false;63;95;191;;;
                                  -24031;1;0;false;false;;;;;;
                                  -24032;5;0;false;false;63;95;191;;;
                                  -24037;1;0;false;false;;;;;;
                                  -24038;3;0;false;false;63;95;191;;;
                                  -24041;1;0;false;false;;;;;;
                                  -24042;6;0;false;false;63;95;191;;;
                                  -24048;1;0;false;false;;;;;;
                                  -24049;5;0;false;false;63;95;191;;;
                                  -24054;5;0;false;false;;;;;;
                                  -24059;1;0;false;false;63;95;191;;;
                                  -24060;1;0;false;false;;;;;;
                                  -24061;6;0;false;false;127;127;159;;;
                                  -24067;7;0;false;false;63;95;191;;;
                                  -24074;7;0;false;false;127;127;159;;;
                                  -24081;1;0;false;false;;;;;;
                                  -24082;3;0;false;false;63;95;191;;;
                                  -24085;1;0;false;false;;;;;;
                                  -24086;4;0;false;false;63;95;191;;;
                                  -24090;1;0;false;false;;;;;;
                                  -24091;7;0;false;false;63;95;191;;;
                                  -24098;4;0;false;false;;;;;;
                                  -24102;2;0;false;false;63;95;191;;;
                                  -24104;3;0;false;false;;;;;;
                                  -24107;6;1;false;false;127;0;85;;;
                                  -24113;1;0;false;false;;;;;;
                                  -24114;4;1;false;false;127;0;85;;;
                                  -24118;1;0;false;false;;;;;;
                                  -24119;7;0;false;false;0;0;0;;;
                                  -24126;1;0;false;false;;;;;;
                                  -24127;1;0;false;false;0;0;0;;;
                                  -24128;4;0;false;false;;;;;;
                                  -24132;2;1;false;false;127;0;85;;;
                                  -24134;1;0;false;false;;;;;;
                                  -24135;13;0;false;false;0;0;0;;;
                                  -24148;1;0;false;false;;;;;;
                                  -24149;1;0;false;false;0;0;0;;;
                                  -24150;5;0;false;false;;;;;;
                                  -24155;14;0;false;false;0;0;0;;;
                                  -24169;5;0;false;false;;;;;;
                                  -24174;6;0;false;false;0;0;0;;;
                                  -24180;8;0;false;false;42;0;255;;;
                                  -24188;2;0;false;false;0;0;0;;;
                                  -24190;5;0;false;false;;;;;;
                                  -24195;5;1;false;false;127;0;85;;;
                                  -24200;9;0;false;false;0;0;0;;;
                                  -24209;4;0;false;false;;;;;;
                                  -24213;1;0;false;false;0;0;0;;;
                                  -24214;3;0;false;false;;;;;;
                                  -24217;1;0;false;false;0;0;0;;;
                                  -24218;4;0;false;false;;;;;;
                                  -24222;3;0;false;false;63;95;191;;;
                                  -24225;4;0;false;false;;;;;;
                                  -24229;1;0;false;false;63;95;191;;;
                                  -24230;1;0;false;false;;;;;;
                                  -24231;7;0;false;false;63;95;191;;;
                                  -24238;1;0;false;false;;;;;;
                                  -24239;3;0;false;false;63;95;191;;;
                                  -24242;1;0;false;false;;;;;;
                                  -24243;5;0;false;false;63;95;191;;;
                                  -24248;1;0;false;false;;;;;;
                                  -24249;2;0;false;false;63;95;191;;;
                                  -24251;1;0;false;false;;;;;;
                                  -24252;3;0;false;false;63;95;191;;;
                                  -24255;1;0;false;false;;;;;;
                                  -24256;9;0;false;false;63;95;191;;;
                                  -24265;1;0;false;false;;;;;;
                                  -24266;5;0;false;false;63;95;191;;;
                                  -24271;1;0;false;false;;;;;;
                                  -24272;2;0;false;false;63;95;191;;;
                                  -24274;1;0;false;false;;;;;;
                                  -24275;3;0;false;false;63;95;191;;;
                                  -24278;1;0;false;false;;;;;;
                                  -24279;3;0;false;false;63;95;191;;;
                                  -24282;1;0;false;false;;;;;;
                                  -24283;5;0;false;false;63;95;191;;;
                                  -24288;1;0;false;false;;;;;;
                                  -24289;6;0;false;false;63;95;191;;;
                                  -24295;4;0;false;false;;;;;;
                                  -24299;1;0;false;false;63;95;191;;;
                                  -24300;1;0;false;false;;;;;;
                                  -24301;3;0;false;false;127;127;159;;;
                                  -24304;4;0;false;false;;;;;;
                                  -24308;1;0;false;false;63;95;191;;;
                                  -24309;4;0;false;false;;;;;;
                                  -24313;1;0;false;false;63;95;191;;;
                                  -24314;1;0;false;false;;;;;;
                                  -24315;7;1;false;false;127;159;191;;;
                                  -24322;5;0;false;false;63;95;191;;;
                                  -24327;1;0;false;false;;;;;;
                                  -24328;3;0;false;false;63;95;191;;;
                                  -24331;1;0;false;false;;;;;;
                                  -24332;5;0;false;false;63;95;191;;;
                                  -24337;4;0;false;false;;;;;;
                                  -24341;1;0;false;false;63;95;191;;;
                                  -24342;1;0;false;false;;;;;;
                                  -24343;7;1;false;false;127;159;191;;;
                                  -24350;12;0;false;false;63;95;191;;;
                                  -24362;1;0;false;false;;;;;;
                                  -24363;6;0;false;false;63;95;191;;;
                                  -24369;1;0;false;false;;;;;;
                                  -24370;5;0;false;false;63;95;191;;;
                                  -24375;1;0;false;false;;;;;;
                                  -24376;2;0;false;false;63;95;191;;;
                                  -24378;1;0;false;false;;;;;;
                                  -24379;5;0;false;false;63;95;191;;;
                                  -24384;1;0;false;false;;;;;;
                                  -24385;2;0;false;false;63;95;191;;;
                                  -24387;1;0;false;false;;;;;;
                                  -24388;4;0;false;false;63;95;191;;;
                                  -24392;4;0;false;false;;;;;;
                                  -24396;1;0;false;false;63;95;191;;;
                                  -24397;1;0;false;false;;;;;;
                                  -24398;8;1;false;false;127;159;191;;;
                                  -24406;3;0;false;false;63;95;191;;;
                                  -24409;1;0;false;false;;;;;;
                                  -24410;5;0;false;false;63;95;191;;;
                                  -24415;1;0;false;false;;;;;;
                                  -24416;2;0;false;false;63;95;191;;;
                                  -24418;1;0;false;false;;;;;;
                                  -24419;3;0;false;false;63;95;191;;;
                                  -24422;1;0;false;false;;;;;;
                                  -24423;9;0;false;false;63;95;191;;;
                                  -24432;1;0;false;false;;;;;;
                                  -24433;5;0;false;false;63;95;191;;;
                                  -24438;1;0;false;false;;;;;;
                                  -24439;2;0;false;false;63;95;191;;;
                                  -24441;1;0;false;false;;;;;;
                                  -24442;3;0;false;false;63;95;191;;;
                                  -24445;1;0;false;false;;;;;;
                                  -24446;3;0;false;false;63;95;191;;;
                                  -24449;1;0;false;false;;;;;;
                                  -24450;5;0;false;false;63;95;191;;;
                                  -24455;1;0;false;false;;;;;;
                                  -24456;5;0;false;false;63;95;191;;;
                                  -24461;4;0;false;false;;;;;;
                                  -24465;1;0;false;false;63;95;191;;;
                                  -24466;2;0;false;false;;;;;;
                                  -24468;2;0;false;false;63;95;191;;;
                                  -24470;1;0;false;false;;;;;;
                                  -24471;14;0;false;false;63;95;191;;;
                                  -24485;1;0;false;false;;;;;;
                                  -24486;2;0;false;false;63;95;191;;;
                                  -24488;1;0;false;false;;;;;;
                                  -24489;7;0;false;false;63;95;191;;;
                                  -24496;1;0;false;false;;;;;;
                                  -24497;2;0;false;false;63;95;191;;;
                                  -24499;1;0;false;false;;;;;;
                                  -24500;5;0;false;false;63;95;191;;;
                                  -24505;4;0;false;false;;;;;;
                                  -24509;2;0;false;false;63;95;191;;;
                                  -24511;3;0;false;false;;;;;;
                                  -24514;3;1;false;false;127;0;85;;;
                                  -24517;1;0;false;false;;;;;;
                                  -24518;19;0;false;false;0;0;0;;;
                                  -24537;1;0;false;false;;;;;;
                                  -24538;6;0;false;false;0;0;0;;;
                                  -24544;1;0;false;false;;;;;;
                                  -24545;3;1;false;false;127;0;85;;;
                                  -24548;1;0;false;false;;;;;;
                                  -24549;13;0;false;false;0;0;0;;;
                                  -24562;1;0;false;false;;;;;;
                                  -24563;1;0;false;false;0;0;0;;;
                                  -24564;4;0;false;false;;;;;;
                                  -24568;3;1;false;false;127;0;85;;;
                                  -24571;1;0;false;false;;;;;;
                                  -24572;6;0;false;false;0;0;0;;;
                                  -24578;8;0;false;false;;;;;;
                                  -24586;2;1;false;false;127;0;85;;;
                                  -24588;1;0;false;false;;;;;;
                                  -24589;6;0;false;false;0;0;0;;;
                                  -24595;1;0;false;false;;;;;;
                                  -24596;2;0;false;false;0;0;0;;;
                                  -24598;1;0;false;false;;;;;;
                                  -24599;4;1;false;false;127;0;85;;;
                                  -24603;1;0;false;false;0;0;0;;;
                                  -24604;1;0;false;false;;;;;;
                                  -24605;1;0;false;false;0;0;0;;;
                                  -24606;5;0;false;false;;;;;;
                                  -24611;5;0;false;false;0;0;0;;;
                                  -24616;1;0;false;false;;;;;;
                                  -24617;1;0;false;false;0;0;0;;;
                                  -24618;1;0;false;false;;;;;;
                                  -24619;13;0;false;false;0;0;0;;;
                                  -24632;4;0;false;false;;;;;;
                                  -24636;1;0;false;false;0;0;0;;;
                                  -24637;4;0;false;false;;;;;;
                                  -24641;4;1;false;false;127;0;85;;;
                                  -24645;1;0;false;false;;;;;;
                                  -24646;1;0;false;false;0;0;0;;;
                                  -24647;7;0;false;false;;;;;;
                                  -24654;5;0;false;false;0;0;0;;;
                                  -24659;1;0;false;false;;;;;;
                                  -24660;1;0;false;false;0;0;0;;;
                                  -24661;1;0;false;false;;;;;;
                                  -24662;26;0;false;false;0;0;0;;;
                                  -24688;5;0;false;false;;;;;;
                                  -24693;2;1;false;false;127;0;85;;;
                                  -24695;1;0;false;false;;;;;;
                                  -24696;6;0;false;false;0;0;0;;;
                                  -24702;1;0;false;false;;;;;;
                                  -24703;2;0;false;false;0;0;0;;;
                                  -24705;1;0;false;false;;;;;;
                                  -24706;3;0;false;false;0;0;0;;;
                                  -24709;1;0;false;false;;;;;;
                                  -24710;1;0;false;false;0;0;0;;;
                                  -24711;6;0;false;false;;;;;;
                                  -24717;5;0;false;false;0;0;0;;;
                                  -24722;1;0;false;false;;;;;;
                                  -24723;1;0;false;false;0;0;0;;;
                                  -24724;1;0;false;false;;;;;;
                                  -24725;18;0;false;false;0;0;0;;;
                                  -24743;6;0;false;false;;;;;;
                                  -24749;29;0;false;false;0;0;0;;;
                                  -24778;5;0;false;false;;;;;;
                                  -24783;1;0;false;false;0;0;0;;;
                                  -24784;4;0;false;false;;;;;;
                                  -24788;1;0;false;false;0;0;0;;;
                                  -24789;4;0;false;false;;;;;;
                                  -24793;6;1;false;false;127;0;85;;;
                                  -24799;1;0;false;false;;;;;;
                                  -24800;6;0;false;false;0;0;0;;;
                                  -24806;3;0;false;false;;;;;;
                                  -24809;1;0;false;false;0;0;0;;;
                                  -24810;3;0;false;false;;;;;;
                                  -24813;3;0;false;false;63;95;191;;;
                                  -24816;4;0;false;false;;;;;;
                                  -24820;1;0;false;false;63;95;191;;;
                                  -24821;1;0;false;false;;;;;;
                                  -24822;10;0;false;false;63;95;191;;;
                                  -24832;1;0;false;false;;;;;;
                                  -24833;2;0;false;false;63;95;191;;;
                                  -24835;1;0;false;false;;;;;;
                                  -24836;7;0;false;false;63;95;191;;;
                                  -24843;1;0;false;false;;;;;;
                                  -24844;3;0;false;false;63;95;191;;;
                                  -24847;1;0;false;false;;;;;;
                                  -24848;6;0;false;false;63;95;191;;;
                                  -24854;1;0;false;false;;;;;;
                                  -24855;2;0;false;false;63;95;191;;;
                                  -24857;1;0;false;false;;;;;;
                                  -24858;8;0;false;false;63;95;191;;;
                                  -24866;4;0;false;false;;;;;;
                                  -24870;1;0;false;false;63;95;191;;;
                                  -24871;1;0;false;false;;;;;;
                                  -24872;5;0;false;false;63;95;191;;;
                                  -24877;1;0;false;false;;;;;;
                                  -24878;5;0;false;false;63;95;191;;;
                                  -24883;1;0;false;false;;;;;;
                                  -24884;7;0;false;false;63;95;191;;;
                                  -24891;1;0;false;false;;;;;;
                                  -24892;3;0;false;false;63;95;191;;;
                                  -24895;1;0;false;false;;;;;;
                                  -24896;2;0;false;false;63;95;191;;;
                                  -24898;1;0;false;false;;;;;;
                                  -24899;7;0;false;false;63;95;191;;;
                                  -24906;1;0;false;false;;;;;;
                                  -24907;8;0;false;false;63;95;191;;;
                                  -24915;1;0;false;false;;;;;;
                                  -24916;2;0;false;false;63;95;191;;;
                                  -24918;1;0;false;false;;;;;;
                                  -24919;3;0;false;false;63;95;191;;;
                                  -24922;4;0;false;false;;;;;;
                                  -24926;2;0;false;false;63;95;191;;;
                                  -24928;3;0;false;false;;;;;;
                                  -24931;4;1;false;false;127;0;85;;;
                                  -24935;1;0;false;false;;;;;;
                                  -24936;12;0;false;false;0;0;0;;;
                                  -24948;1;0;false;false;;;;;;
                                  -24949;1;0;false;false;0;0;0;;;
                                  -24950;4;0;false;false;;;;;;
                                  -24954;5;1;false;false;127;0;85;;;
                                  -24959;1;0;false;false;;;;;;
                                  -24960;6;0;false;false;0;0;0;;;
                                  -24966;1;0;false;false;;;;;;
                                  -24967;5;0;false;false;0;0;0;;;
                                  -24972;1;0;false;false;;;;;;
                                  -24973;1;0;false;false;0;0;0;;;
                                  -24974;1;0;false;false;;;;;;
                                  -24975;12;0;false;false;42;0;255;;;
                                  -24987;1;0;false;false;0;0;0;;;
                                  -24988;4;0;false;false;;;;;;
                                  -24992;5;1;false;false;127;0;85;;;
                                  -24997;1;0;false;false;;;;;;
                                  -24998;6;0;false;false;0;0;0;;;
                                  -25004;1;0;false;false;;;;;;
                                  -25005;5;0;false;false;0;0;0;;;
                                  -25010;1;0;false;false;;;;;;
                                  -25011;1;0;false;false;0;0;0;;;
                                  -25012;1;0;false;false;;;;;;
                                  -25013;12;0;false;false;42;0;255;;;
                                  -25025;1;0;false;false;0;0;0;;;
                                  -25026;4;0;false;false;;;;;;
                                  -25030;5;1;false;false;127;0;85;;;
                                  -25035;1;0;false;false;;;;;;
                                  -25036;6;0;false;false;0;0;0;;;
                                  -25042;1;0;false;false;;;;;;
                                  -25043;5;0;false;false;0;0;0;;;
                                  -25048;1;0;false;false;;;;;;
                                  -25049;1;0;false;false;0;0;0;;;
                                  -25050;1;0;false;false;;;;;;
                                  -25051;12;0;false;false;42;0;255;;;
                                  -25063;1;0;false;false;0;0;0;;;
                                  -25064;6;0;false;false;;;;;;
                                  -25070;5;1;false;false;127;0;85;;;
                                  -25075;1;0;false;false;;;;;;
                                  -25076;6;0;false;false;0;0;0;;;
                                  -25082;1;0;false;false;;;;;;
                                  -25083;5;0;false;false;0;0;0;;;
                                  -25088;1;0;false;false;;;;;;
                                  -25089;1;0;false;false;0;0;0;;;
                                  -25090;1;0;false;false;;;;;;
                                  -25091;12;0;false;false;42;0;255;;;
                                  -25103;1;0;false;false;0;0;0;;;
                                  -25104;4;0;false;false;;;;;;
                                  -25108;6;0;false;false;0;0;0;;;
                                  -25114;1;0;false;false;;;;;;
                                  -25115;6;0;false;false;0;0;0;;;
                                  -25121;1;0;false;false;;;;;;
                                  -25122;1;0;false;false;0;0;0;;;
                                  -25123;1;0;false;false;;;;;;
                                  -25124;19;0;false;false;0;0;0;;;
                                  -25143;9;0;false;false;42;0;255;;;
                                  -25152;16;0;false;false;0;0;0;;;
                                  -25168;4;0;false;false;;;;;;
                                  -25172;6;0;false;false;0;0;0;;;
                                  -25178;1;0;false;false;;;;;;
                                  -25179;9;0;false;false;0;0;0;;;
                                  -25188;1;0;false;false;;;;;;
                                  -25189;1;0;false;false;0;0;0;;;
                                  -25190;1;0;false;false;;;;;;
                                  -25191;19;0;false;false;0;0;0;;;
                                  -25210;12;0;false;false;42;0;255;;;
                                  -25222;2;0;false;false;0;0;0;;;
                                  -25224;4;0;false;false;;;;;;
                                  -25228;3;1;false;false;127;0;85;;;
                                  -25231;1;0;false;false;;;;;;
                                  -25232;12;0;false;false;0;0;0;;;
                                  -25244;1;0;false;false;;;;;;
                                  -25245;1;0;false;false;0;0;0;;;
                                  -25246;1;0;false;false;;;;;;
                                  -25247;2;0;false;false;0;0;0;;;
                                  -25249;8;0;false;false;;;;;;
                                  -25257;2;1;false;false;127;0;85;;;
                                  -25259;1;0;false;false;;;;;;
                                  -25260;25;0;false;false;0;0;0;;;
                                  -25285;1;0;false;false;;;;;;
                                  -25286;2;0;false;false;0;0;0;;;
                                  -25288;1;0;false;false;;;;;;
                                  -25289;9;0;false;false;0;0;0;;;
                                  -25298;1;0;false;false;;;;;;
                                  -25299;2;0;false;false;0;0;0;;;
                                  -25301;1;0;false;false;;;;;;
                                  -25302;4;1;false;false;127;0;85;;;
                                  -25306;1;0;false;false;0;0;0;;;
                                  -25307;1;0;false;false;;;;;;
                                  -25308;1;0;false;false;0;0;0;;;
                                  -25309;5;0;false;false;;;;;;
                                  -25314;3;1;false;false;127;0;85;;;
                                  -25317;1;0;false;false;;;;;;
                                  -25318;10;0;false;false;0;0;0;;;
                                  -25328;1;0;false;false;;;;;;
                                  -25329;1;0;false;false;0;0;0;;;
                                  -25330;1;0;false;false;;;;;;
                                  -25331;18;0;false;false;0;0;0;;;
                                  -25349;3;0;false;false;42;0;255;;;
                                  -25352;2;0;false;false;0;0;0;;;
                                  -25354;5;0;false;false;;;;;;
                                  -25359;2;1;false;false;127;0;85;;;
                                  -25361;1;0;false;false;;;;;;
                                  -25362;11;0;false;false;0;0;0;;;
                                  -25373;1;0;false;false;;;;;;
                                  -25374;2;0;false;false;0;0;0;;;
                                  -25376;1;0;false;false;;;;;;
                                  -25377;3;0;false;false;0;0;0;;;
                                  -25380;1;0;false;false;;;;;;
                                  -25381;1;0;false;false;0;0;0;;;
                                  -25382;6;0;false;false;;;;;;
                                  -25388;9;0;false;false;0;0;0;;;
                                  -25397;1;0;false;false;;;;;;
                                  -25398;1;0;false;false;0;0;0;;;
                                  -25399;1;0;false;false;;;;;;
                                  -25400;22;0;false;false;0;0;0;;;
                                  -25422;1;0;false;false;;;;;;
                                  -25423;12;0;false;false;0;0;0;;;
                                  -25435;6;0;false;false;;;;;;
                                  -25441;3;1;false;false;127;0;85;;;
                                  -25444;1;0;false;false;;;;;;
                                  -25445;1;0;false;false;0;0;0;;;
                                  -25446;7;0;false;false;;;;;;
                                  -25453;12;0;false;false;0;0;0;;;
                                  -25465;1;0;false;false;;;;;;
                                  -25466;1;0;false;false;0;0;0;;;
                                  -25467;1;0;false;false;;;;;;
                                  -25468;28;0;false;false;0;0;0;;;
                                  -25496;6;0;false;false;;;;;;
                                  -25502;1;0;false;false;0;0;0;;;
                                  -25503;6;0;false;false;;;;;;
                                  -25509;5;1;false;false;127;0;85;;;
                                  -25514;1;0;false;false;;;;;;
                                  -25515;22;0;false;false;0;0;0;;;
                                  -25537;1;0;false;false;;;;;;
                                  -25538;10;0;false;false;0;0;0;;;
                                  -25548;1;0;false;false;;;;;;
                                  -25549;1;0;false;false;0;0;0;;;
                                  -25550;7;0;false;false;;;;;;
                                  -25557;54;0;false;false;63;127;95;;;
                                  -25611;5;0;false;false;;;;;;
                                  -25616;31;0;false;false;63;127;95;;;
                                  -25647;4;0;false;false;;;;;;
                                  -25651;1;0;false;false;0;0;0;;;
                                  -25652;5;0;false;false;;;;;;
                                  -25657;1;0;false;false;0;0;0;;;
                                  -25658;4;0;false;false;;;;;;
                                  -25662;1;0;false;false;0;0;0;;;
                                  -25663;4;0;false;false;;;;;;
                                  -25667;2;1;false;false;127;0;85;;;
                                  -25669;1;0;false;false;;;;;;
                                  -25670;26;0;false;false;0;0;0;;;
                                  -25696;1;0;false;false;;;;;;
                                  -25697;2;0;false;false;0;0;0;;;
                                  -25699;5;0;false;false;;;;;;
                                  -25704;25;0;false;false;0;0;0;;;
                                  -25729;1;0;false;false;;;;;;
                                  -25730;2;0;false;false;0;0;0;;;
                                  -25732;5;0;false;false;;;;;;
                                  -25737;25;0;false;false;0;0;0;;;
                                  -25762;1;0;false;false;;;;;;
                                  -25763;2;0;false;false;0;0;0;;;
                                  -25765;5;0;false;false;;;;;;
                                  -25770;26;0;false;false;0;0;0;;;
                                  -25796;1;0;false;false;;;;;;
                                  -25797;2;0;false;false;0;0;0;;;
                                  -25799;1;0;false;false;;;;;;
                                  -25800;12;0;false;false;0;0;0;;;
                                  -25812;1;0;false;false;;;;;;
                                  -25813;1;0;false;false;0;0;0;;;
                                  -25814;1;0;false;false;;;;;;
                                  -25815;3;0;false;false;0;0;0;;;
                                  -25818;1;0;false;false;;;;;;
                                  -25819;1;0;false;false;0;0;0;;;
                                  -25820;5;0;false;false;;;;;;
                                  -25825;12;0;false;false;0;0;0;;;
                                  -25837;1;0;false;false;;;;;;
                                  -25838;1;0;false;false;0;0;0;;;
                                  -25839;1;0;false;false;;;;;;
                                  -25840;4;1;false;false;127;0;85;;;
                                  -25844;1;0;false;false;0;0;0;;;
                                  -25845;4;0;false;false;;;;;;
                                  -25849;1;0;false;false;0;0;0;;;
                                  -25850;4;0;false;false;;;;;;
                                  -25854;4;1;false;false;127;0;85;;;
                                  -25858;1;0;false;false;;;;;;
                                  -25859;1;0;false;false;0;0;0;;;
                                  -25860;5;0;false;false;;;;;;
                                  -25865;12;0;false;false;0;0;0;;;
                                  -25877;1;0;false;false;;;;;;
                                  -25878;1;0;false;false;0;0;0;;;
                                  -25879;1;0;false;false;;;;;;
                                  -25880;5;1;false;false;127;0;85;;;
                                  -25885;1;0;false;false;0;0;0;;;
                                  -25886;4;0;false;false;;;;;;
                                  -25890;1;0;false;false;0;0;0;;;
                                  -25891;3;0;false;false;;;;;;
                                  -25894;1;0;false;false;0;0;0;;;
                                  -25895;3;0;false;false;;;;;;
                                  -25898;3;0;false;false;63;95;191;;;
                                  -25901;4;0;false;false;;;;;;
                                  -25905;1;0;false;false;63;95;191;;;
                                  -25906;1;0;false;false;;;;;;
                                  -25907;7;0;false;false;63;95;191;;;
                                  -25914;1;0;false;false;;;;;;
                                  -25915;3;0;false;false;63;95;191;;;
                                  -25918;1;0;false;false;;;;;;
                                  -25919;9;0;false;false;63;95;191;;;
                                  -25928;1;0;false;false;;;;;;
                                  -25929;7;0;false;false;63;95;191;;;
                                  -25936;1;0;false;false;;;;;;
                                  -25937;2;0;false;false;63;95;191;;;
                                  -25939;1;0;false;false;;;;;;
                                  -25940;8;0;false;false;63;95;191;;;
                                  -25948;1;0;false;false;;;;;;
                                  -25949;2;0;false;false;63;95;191;;;
                                  -25951;1;0;false;false;;;;;;
                                  -25952;3;0;false;false;63;95;191;;;
                                  -25955;1;0;false;false;;;;;;
                                  -25956;3;0;false;false;63;95;191;;;
                                  -25959;1;0;false;false;;;;;;
                                  -25960;5;0;false;false;63;95;191;;;
                                  -25965;4;0;false;false;;;;;;
                                  -25969;1;0;false;false;63;95;191;;;
                                  -25970;1;0;false;false;;;;;;
                                  -25971;4;0;false;false;63;95;191;;;
                                  -25975;1;0;false;false;;;;;;
                                  -25976;4;0;false;false;63;95;191;;;
                                  -25980;1;0;false;false;;;;;;
                                  -25981;6;0;false;false;127;127;159;;;
                                  -25987;5;0;false;false;63;95;191;;;
                                  -25992;7;0;false;false;127;127;159;;;
                                  -25999;1;0;false;false;;;;;;
                                  -26000;2;0;false;false;63;95;191;;;
                                  -26002;1;0;false;false;;;;;;
                                  -26003;3;0;false;false;63;95;191;;;
                                  -26006;1;0;false;false;;;;;;
                                  -26007;3;0;false;false;63;95;191;;;
                                  -26010;1;0;false;false;;;;;;
                                  -26011;10;0;false;false;63;95;191;;;
                                  -26021;1;0;false;false;;;;;;
                                  -26022;6;0;false;false;127;127;159;;;
                                  -26028;3;0;false;false;63;95;191;;;
                                  -26031;7;0;false;false;127;127;159;;;
                                  -26038;1;0;false;false;63;95;191;;;
                                  -26039;4;0;false;false;;;;;;
                                  -26043;1;0;false;false;63;95;191;;;
                                  -26044;1;0;false;false;;;;;;
                                  -26045;3;0;false;false;127;127;159;;;
                                  -26048;4;0;false;false;;;;;;
                                  -26052;1;0;false;false;63;95;191;;;
                                  -26053;4;0;false;false;;;;;;
                                  -26057;1;0;false;false;63;95;191;;;
                                  -26058;1;0;false;false;;;;;;
                                  -26059;7;1;false;false;127;159;191;;;
                                  -26066;6;0;false;false;63;95;191;;;
                                  -26072;1;0;false;false;;;;;;
                                  -26073;6;0;false;false;63;95;191;;;
                                  -26079;1;0;false;false;;;;;;
                                  -26080;2;0;false;false;63;95;191;;;
                                  -26082;1;0;false;false;;;;;;
                                  -26083;4;0;false;false;63;95;191;;;
                                  -26087;1;0;false;false;;;;;;
                                  -26088;1;0;false;false;63;95;191;;;
                                  -26089;1;0;false;false;;;;;;
                                  -26090;7;0;false;false;63;95;191;;;
                                  -26097;1;0;false;false;;;;;;
                                  -26098;5;0;false;false;63;95;191;;;
                                  -26103;1;0;false;false;;;;;;
                                  -26104;4;0;false;false;63;95;191;;;
                                  -26108;1;0;false;false;;;;;;
                                  -26109;3;0;false;false;63;95;191;;;
                                  -26112;1;0;false;false;;;;;;
                                  -26113;7;0;false;false;63;95;191;;;
                                  -26120;4;0;false;false;;;;;;
                                  -26124;1;0;false;false;63;95;191;;;
                                  -26125;2;0;false;false;;;;;;
                                  -26127;4;0;false;false;63;95;191;;;
                                  -26131;1;0;false;false;;;;;;
                                  -26132;7;0;false;false;63;95;191;;;
                                  -26139;1;0;false;false;;;;;;
                                  -26140;4;0;false;false;63;95;191;;;
                                  -26144;1;0;false;false;;;;;;
                                  -26145;6;0;false;false;63;95;191;;;
                                  -26151;1;0;false;false;;;;;;
                                  -26152;6;0;false;false;63;95;191;;;
                                  -26158;1;0;false;false;;;;;;
                                  -26159;2;0;false;false;63;95;191;;;
                                  -26161;1;0;false;false;;;;;;
                                  -26162;7;0;false;false;63;95;191;;;
                                  -26169;1;0;false;false;;;;;;
                                  -26170;5;0;false;false;63;95;191;;;
                                  -26175;1;0;false;false;;;;;;
                                  -26176;20;0;false;false;63;95;191;;;
                                  -26196;4;0;false;false;;;;;;
                                  -26200;1;0;false;false;63;95;191;;;
                                  -26201;1;0;false;false;;;;;;
                                  -26202;7;1;false;false;127;159;191;;;
                                  -26209;5;0;false;false;63;95;191;;;
                                  -26214;1;0;false;false;;;;;;
                                  -26215;5;0;false;false;63;95;191;;;
                                  -26220;1;0;false;false;;;;;;
                                  -26221;6;0;false;false;63;95;191;;;
                                  -26227;1;0;false;false;;;;;;
                                  -26228;2;0;false;false;63;95;191;;;
                                  -26230;1;0;false;false;;;;;;
                                  -26231;8;0;false;false;63;95;191;;;
                                  -26239;1;0;false;false;;;;;;
                                  -26240;1;0;false;false;63;95;191;;;
                                  -26241;1;0;false;false;;;;;;
                                  -26242;6;0;false;false;63;95;191;;;
                                  -26248;4;0;false;false;;;;;;
                                  -26252;1;0;false;false;63;95;191;;;
                                  -26253;1;0;false;false;;;;;;
                                  -26254;7;1;false;false;127;159;191;;;
                                  -26261;3;0;false;false;63;95;191;;;
                                  -26264;1;0;false;false;;;;;;
                                  -26265;3;0;false;false;63;95;191;;;
                                  -26268;1;0;false;false;;;;;;
                                  -26269;6;0;false;false;63;95;191;;;
                                  -26275;1;0;false;false;;;;;;
                                  -26276;2;0;false;false;63;95;191;;;
                                  -26278;1;0;false;false;;;;;;
                                  -26279;7;0;false;false;63;95;191;;;
                                  -26286;4;0;false;false;;;;;;
                                  -26290;2;0;false;false;63;95;191;;;
                                  -26292;3;0;false;false;;;;;;
                                  -26295;4;1;false;false;127;0;85;;;
                                  -26299;1;0;false;false;;;;;;
                                  -26300;12;0;false;false;0;0;0;;;
                                  -26312;1;0;false;false;;;;;;
                                  -26313;7;0;false;false;0;0;0;;;
                                  -26320;1;0;false;false;;;;;;
                                  -26321;3;1;false;false;127;0;85;;;
                                  -26324;1;0;false;false;;;;;;
                                  -26325;6;0;false;false;0;0;0;;;
                                  -26331;1;0;false;false;;;;;;
                                  -26332;3;1;false;false;127;0;85;;;
                                  -26335;1;0;false;false;;;;;;
                                  -26336;4;0;false;false;0;0;0;;;
                                  -26340;1;0;false;false;;;;;;
                                  -26341;1;0;false;false;0;0;0;;;
                                  -26342;4;0;false;false;;;;;;
                                  -26346;3;1;false;false;127;0;85;;;
                                  -26349;1;0;false;false;;;;;;
                                  -26350;1;0;false;false;0;0;0;;;
                                  -26351;3;1;false;false;127;0;85;;;
                                  -26354;1;0;false;false;;;;;;
                                  -26355;5;0;false;false;0;0;0;;;
                                  -26360;1;0;false;false;;;;;;
                                  -26361;1;0;false;false;0;0;0;;;
                                  -26362;1;0;false;false;;;;;;
                                  -26363;6;0;false;false;0;0;0;;;
                                  -26369;1;0;false;false;;;;;;
                                  -26370;5;0;false;false;0;0;0;;;
                                  -26375;1;0;false;false;;;;;;
                                  -26376;1;0;false;false;0;0;0;;;
                                  -26377;1;0;false;false;;;;;;
                                  -26378;4;0;false;false;0;0;0;;;
                                  -26382;1;0;false;false;;;;;;
                                  -26383;8;0;false;false;0;0;0;;;
                                  -26391;1;0;false;false;;;;;;
                                  -26392;1;0;false;false;0;0;0;;;
                                  -26393;5;0;false;false;;;;;;
                                  -26398;4;1;false;false;127;0;85;;;
                                  -26402;1;0;false;false;;;;;;
                                  -26403;2;0;false;false;0;0;0;;;
                                  -26405;1;0;false;false;;;;;;
                                  -26406;1;0;false;false;0;0;0;;;
                                  -26407;1;0;false;false;;;;;;
                                  -26408;21;0;false;false;0;0;0;;;
                                  -26429;5;0;false;false;;;;;;
                                  -26434;2;1;false;false;127;0;85;;;
                                  -26436;1;0;false;false;;;;;;
                                  -26437;3;0;false;false;0;0;0;;;
                                  -26440;1;0;false;false;;;;;;
                                  -26441;1;0;false;false;0;0;0;;;
                                  -26442;1;0;false;false;;;;;;
                                  -26443;4;0;false;false;0;0;0;;;
                                  -26447;1;0;false;false;;;;;;
                                  -26448;2;0;false;false;0;0;0;;;
                                  -26450;1;0;false;false;;;;;;
                                  -26451;13;0;false;false;0;0;0;;;
                                  -26464;1;0;false;false;;;;;;
                                  -26465;1;0;false;false;0;0;0;;;
                                  -26466;6;0;false;false;;;;;;
                                  -26472;58;0;false;false;63;127;95;;;
                                  -26530;4;0;false;false;;;;;;
                                  -26534;41;0;false;false;63;127;95;;;
                                  -26575;4;0;false;false;;;;;;
                                  -26579;2;1;false;false;127;0;85;;;
                                  -26581;1;0;false;false;;;;;;
                                  -26582;6;0;false;false;0;0;0;;;
                                  -26588;1;0;false;false;;;;;;
                                  -26589;1;0;false;false;0;0;0;;;
                                  -26590;1;0;false;false;;;;;;
                                  -26591;6;0;false;false;0;0;0;;;
                                  -26597;1;0;false;false;;;;;;
                                  -26598;1;0;false;false;0;0;0;;;
                                  -26599;7;0;false;false;;;;;;
                                  -26606;29;0;false;false;0;0;0;;;
                                  -26635;1;0;false;false;;;;;;
                                  -26636;8;0;false;false;0;0;0;;;
                                  -26644;6;0;false;false;;;;;;
                                  -26650;1;0;false;false;0;0;0;;;
                                  -26651;6;0;false;false;;;;;;
                                  -26657;6;0;false;false;0;0;0;;;
                                  -26663;5;0;false;false;42;0;255;;;
                                  -26668;2;0;false;false;0;0;0;;;
                                  -26670;6;0;false;false;;;;;;
                                  -26676;24;0;false;false;0;0;0;;;
                                  -26700;5;1;false;false;127;0;85;;;
                                  -26705;1;0;false;false;0;0;0;;;
                                  -26706;1;0;false;false;;;;;;
                                  -26707;5;0;false;false;0;0;0;;;
                                  -26712;6;0;false;false;;;;;;
                                  -26718;6;0;false;false;0;0;0;;;
                                  -26724;3;0;false;false;42;0;255;;;
                                  -26727;2;0;false;false;0;0;0;;;
                                  -26729;6;0;false;false;;;;;;
                                  -26735;27;0;false;false;63;127;95;;;
                                  -26762;4;0;false;false;;;;;;
                                  -26766;5;0;false;false;0;0;0;;;
                                  -26771;1;0;false;false;;;;;;
                                  -26772;1;0;false;false;0;0;0;;;
                                  -26773;1;0;false;false;;;;;;
                                  -26774;5;0;false;false;0;0;0;;;
                                  -26779;1;0;false;false;;;;;;
                                  -26780;1;0;false;false;0;0;0;;;
                                  -26781;1;0;false;false;;;;;;
                                  -26782;2;0;false;false;0;0;0;;;
                                  -26784;5;0;false;false;;;;;;
                                  -26789;1;0;false;false;0;0;0;;;
                                  -26790;5;0;false;false;;;;;;
                                  -26795;4;1;false;false;127;0;85;;;
                                  -26799;5;0;false;false;;;;;;
                                  -26804;2;1;false;false;127;0;85;;;
                                  -26806;1;0;false;false;;;;;;
                                  -26807;3;0;false;false;0;0;0;;;
                                  -26810;1;0;false;false;;;;;;
                                  -26811;2;0;false;false;0;0;0;;;
                                  -26813;1;0;false;false;;;;;;
                                  -26814;3;0;false;false;42;0;255;;;
                                  -26817;1;0;false;false;;;;;;
                                  -26818;2;0;false;false;0;0;0;;;
                                  -26820;1;0;false;false;;;;;;
                                  -26821;2;0;false;false;0;0;0;;;
                                  -26823;1;0;false;false;;;;;;
                                  -26824;2;0;false;false;0;0;0;;;
                                  -26826;1;0;false;false;;;;;;
                                  -26827;3;0;false;false;42;0;255;;;
                                  -26830;1;0;false;false;;;;;;
                                  -26831;2;0;false;false;0;0;0;;;
                                  -26833;1;0;false;false;;;;;;
                                  -26834;2;0;false;false;0;0;0;;;
                                  -26836;1;0;false;false;;;;;;
                                  -26837;2;0;false;false;0;0;0;;;
                                  -26839;1;0;false;false;;;;;;
                                  -26840;4;0;false;false;42;0;255;;;
                                  -26844;1;0;false;false;0;0;0;;;
                                  -26845;1;0;false;false;;;;;;
                                  -26846;1;0;false;false;0;0;0;;;
                                  -26847;6;0;false;false;;;;;;
                                  -26853;58;0;false;false;63;127;95;;;
                                  -26911;4;0;false;false;;;;;;
                                  -26915;41;0;false;false;63;127;95;;;
                                  -26956;4;0;false;false;;;;;;
                                  -26960;2;1;false;false;127;0;85;;;
                                  -26962;1;0;false;false;;;;;;
                                  -26963;6;0;false;false;0;0;0;;;
                                  -26969;1;0;false;false;;;;;;
                                  -26970;1;0;false;false;0;0;0;;;
                                  -26971;1;0;false;false;;;;;;
                                  -26972;6;0;false;false;0;0;0;;;
                                  -26978;1;0;false;false;;;;;;
                                  -26979;1;0;false;false;0;0;0;;;
                                  -26980;7;0;false;false;;;;;;
                                  -26987;29;0;false;false;0;0;0;;;
                                  -27016;1;0;false;false;;;;;;
                                  -27017;8;0;false;false;0;0;0;;;
                                  -27025;6;0;false;false;;;;;;
                                  -27031;1;0;false;false;0;0;0;;;
                                  -27032;6;0;false;false;;;;;;
                                  -27038;6;0;false;false;0;0;0;;;
                                  -27044;4;0;false;false;42;0;255;;;
                                  -27048;2;0;false;false;0;0;0;;;
                                  -27050;6;0;false;false;;;;;;
                                  -27056;10;0;false;false;0;0;0;;;
                                  -27066;6;0;false;false;;;;;;
                                  -27072;5;0;false;false;0;0;0;;;
                                  -27077;1;0;false;false;;;;;;
                                  -27078;1;0;false;false;0;0;0;;;
                                  -27079;1;0;false;false;;;;;;
                                  -27080;5;0;false;false;0;0;0;;;
                                  -27085;1;0;false;false;;;;;;
                                  -27086;1;0;false;false;0;0;0;;;
                                  -27087;1;0;false;false;;;;;;
                                  -27088;2;0;false;false;0;0;0;;;
                                  -27090;5;0;false;false;;;;;;
                                  -27095;1;0;false;false;0;0;0;;;
                                  -27096;4;0;false;false;;;;;;
                                  -27100;1;0;false;false;0;0;0;;;
                                  -27101;4;0;false;false;;;;;;
                                  -27105;54;0;false;false;63;127;95;;;
                                  -27159;2;0;false;false;;;;;;
                                  -27161;21;0;false;false;63;127;95;;;
                                  -27182;2;0;false;false;;;;;;
                                  -27184;2;1;false;false;127;0;85;;;
                                  -27186;1;0;false;false;;;;;;
                                  -27187;6;0;false;false;0;0;0;;;
                                  -27193;1;0;false;false;;;;;;
                                  -27194;1;0;false;false;0;0;0;;;
                                  -27195;1;0;false;false;;;;;;
                                  -27196;4;0;false;false;0;0;0;;;
                                  -27200;1;0;false;false;;;;;;
                                  -27201;1;0;false;false;0;0;0;;;
                                  -27202;5;0;false;false;;;;;;
                                  -27207;29;0;false;false;0;0;0;;;
                                  -27236;1;0;false;false;;;;;;
                                  -27237;6;0;false;false;0;0;0;;;
                                  -27243;4;0;false;false;;;;;;
                                  -27247;1;0;false;false;0;0;0;;;
                                  -27248;3;0;false;false;;;;;;
                                  -27251;1;0;false;false;0;0;0;;;
                                  -27252;4;0;false;false;;;;;;
                                  -27256;3;0;false;false;63;95;191;;;
                                  -27259;4;0;false;false;;;;;;
                                  -27263;1;0;false;false;63;95;191;;;
                                  -27264;1;0;false;false;;;;;;
                                  -27265;6;0;false;false;63;95;191;;;
                                  -27271;1;0;false;false;;;;;;
                                  -27272;3;0;false;false;63;95;191;;;
                                  -27275;1;0;false;false;;;;;;
                                  -27276;3;0;false;false;63;95;191;;;
                                  -27279;1;0;false;false;;;;;;
                                  -27280;6;0;false;false;63;95;191;;;
                                  -27286;1;0;false;false;;;;;;
                                  -27287;9;0;false;false;63;95;191;;;
                                  -27296;1;0;false;false;;;;;;
                                  -27297;4;0;false;false;63;95;191;;;
                                  -27301;1;0;false;false;;;;;;
                                  -27302;5;0;false;false;63;95;191;;;
                                  -27307;1;0;false;false;;;;;;
                                  -27308;3;0;false;false;63;95;191;;;
                                  -27311;1;0;false;false;;;;;;
                                  -27312;5;0;false;false;63;95;191;;;
                                  -27317;1;0;false;false;;;;;;
                                  -27318;6;0;false;false;63;95;191;;;
                                  -27324;4;0;false;false;;;;;;
                                  -27328;2;0;false;false;63;95;191;;;
                                  -27330;3;0;false;false;;;;;;
                                  -27333;4;1;false;false;127;0;85;;;
                                  -27337;1;0;false;false;;;;;;
                                  -27338;13;0;false;false;0;0;0;;;
                                  -27351;1;0;false;false;;;;;;
                                  -27352;1;0;false;false;0;0;0;;;
                                  -27353;4;0;false;false;;;;;;
                                  -27357;12;0;false;false;0;0;0;;;
                                  -27369;1;0;false;false;;;;;;
                                  -27370;6;0;false;false;0;0;0;;;
                                  -27376;1;0;false;false;;;;;;
                                  -27377;1;0;false;false;0;0;0;;;
                                  -27378;1;0;false;false;;;;;;
                                  -27379;3;1;false;false;127;0;85;;;
                                  -27382;1;0;false;false;;;;;;
                                  -27383;15;0;false;false;0;0;0;;;
                                  -27398;4;0;false;false;;;;;;
                                  -27402;8;0;false;false;0;0;0;;;
                                  -27410;1;0;false;false;;;;;;
                                  -27411;8;0;false;false;0;0;0;;;
                                  -27419;1;0;false;false;;;;;;
                                  -27420;1;0;false;false;0;0;0;;;
                                  -27421;1;0;false;false;;;;;;
                                  -27422;27;0;false;false;0;0;0;;;
                                  -27449;4;0;false;false;;;;;;
                                  -27453;14;0;false;false;0;0;0;;;
                                  -27467;15;0;false;false;42;0;255;;;
                                  -27482;2;0;false;false;0;0;0;;;
                                  -27484;4;0;false;false;;;;;;
                                  -27488;59;0;false;false;63;127;95;;;
                                  -27547;2;0;false;false;;;;;;
                                  -27549;44;0;false;false;63;127;95;;;
                                  -27593;2;0;false;false;;;;;;
                                  -27595;6;0;false;false;0;0;0;;;
                                  -27601;1;0;false;false;;;;;;
                                  -27602;3;0;false;false;0;0;0;;;
                                  -27605;1;0;false;false;;;;;;
                                  -27606;1;0;false;false;0;0;0;;;
                                  -27607;1;0;false;false;;;;;;
                                  -27608;19;0;false;false;0;0;0;;;
                                  -27627;15;0;false;false;42;0;255;;;
                                  -27642;16;0;false;false;0;0;0;;;
                                  -27658;4;0;false;false;;;;;;
                                  -27662;2;1;false;false;127;0;85;;;
                                  -27664;1;0;false;false;;;;;;
                                  -27665;16;0;false;false;0;0;0;;;
                                  -27681;4;0;false;false;42;0;255;;;
                                  -27685;1;0;false;false;0;0;0;;;
                                  -27686;1;0;false;false;;;;;;
                                  -27687;2;0;false;false;0;0;0;;;
                                  -27689;1;0;false;false;;;;;;
                                  -27690;15;0;false;false;0;0;0;;;
                                  -27705;4;0;false;false;42;0;255;;;
                                  -27709;2;0;false;false;0;0;0;;;
                                  -27711;1;0;false;false;;;;;;
                                  -27712;1;0;false;false;0;0;0;;;
                                  -27713;5;0;false;false;;;;;;
                                  -27718;3;0;false;false;0;0;0;;;
                                  -27721;1;0;false;false;;;;;;
                                  -27722;1;0;false;false;0;0;0;;;
                                  -27723;1;0;false;false;;;;;;
                                  -27724;16;0;false;false;0;0;0;;;
                                  -27740;1;0;false;false;;;;;;
                                  -27741;14;0;false;false;0;0;0;;;
                                  -27755;5;0;false;false;;;;;;
                                  -27760;14;0;false;false;0;0;0;;;
                                  -27774;11;0;false;false;42;0;255;;;
                                  -27785;2;0;false;false;0;0;0;;;
                                  -27787;5;0;false;false;;;;;;
                                  -27792;19;0;false;false;0;0;0;;;
                                  -27811;4;0;false;false;;;;;;
                                  -27815;1;0;false;false;0;0;0;;;
                                  -27816;4;0;false;false;;;;;;
                                  -27820;14;0;false;false;0;0;0;;;
                                  -27834;36;0;false;false;42;0;255;;;
                                  -27870;2;0;false;false;0;0;0;;;
                                  -27872;4;0;false;false;;;;;;
                                  -27876;34;0;false;false;0;0;0;;;
                                  -27910;4;0;false;false;;;;;;
                                  -27914;14;0;false;false;0;0;0;;;
                                  -27928;18;0;false;false;42;0;255;;;
                                  -27946;2;0;false;false;0;0;0;;;
                                  -27948;4;0;false;false;;;;;;
                                  -27952;3;1;false;false;127;0;85;;;
                                  -27955;1;0;false;false;;;;;;
                                  -27956;1;0;false;false;0;0;0;;;
                                  -27957;3;1;false;false;127;0;85;;;
                                  -27960;1;0;false;false;;;;;;
                                  -27961;1;0;false;false;0;0;0;;;
                                  -27962;1;0;false;false;;;;;;
                                  -27963;1;0;false;false;0;0;0;;;
                                  -27964;1;0;false;false;;;;;;
                                  -27965;2;0;false;false;0;0;0;;;
                                  -27967;1;0;false;false;;;;;;
                                  -27968;1;0;false;false;0;0;0;;;
                                  -27969;1;0;false;false;;;;;;
                                  -27970;1;0;false;false;0;0;0;;;
                                  -27971;1;0;false;false;;;;;;
                                  -27972;18;0;false;false;0;0;0;;;
                                  -27990;1;0;false;false;;;;;;
                                  -27991;4;0;false;false;0;0;0;;;
                                  -27995;1;0;false;false;;;;;;
                                  -27996;1;0;false;false;0;0;0;;;
                                  -27997;5;0;false;false;;;;;;
                                  -28002;5;0;false;false;0;0;0;;;
                                  -28007;1;0;false;false;;;;;;
                                  -28008;5;0;false;false;0;0;0;;;
                                  -28013;1;0;false;false;;;;;;
                                  -28014;1;0;false;false;0;0;0;;;
                                  -28015;1;0;false;false;;;;;;
                                  -28016;7;0;false;false;0;0;0;;;
                                  -28023;1;0;false;false;;;;;;
                                  -28024;24;0;false;false;0;0;0;;;
                                  -28048;5;0;false;false;;;;;;
                                  -28053;14;0;false;false;0;0;0;;;
                                  -28067;7;0;false;false;42;0;255;;;
                                  -28074;2;0;false;false;0;0;0;;;
                                  -28076;5;0;false;false;;;;;;
                                  -28081;30;0;false;false;0;0;0;;;
                                  -28111;5;0;false;false;;;;;;
                                  -28116;14;0;false;false;0;0;0;;;
                                  -28130;9;0;false;false;42;0;255;;;
                                  -28139;2;0;false;false;0;0;0;;;
                                  -28141;5;0;false;false;;;;;;
                                  -28146;32;0;false;false;0;0;0;;;
                                  -28178;5;0;false;false;;;;;;
                                  -28183;14;0;false;false;0;0;0;;;
                                  -28197;8;0;false;false;42;0;255;;;
                                  -28205;2;0;false;false;0;0;0;;;
                                  -28207;5;0;false;false;;;;;;
                                  -28212;31;0;false;false;0;0;0;;;
                                  -28243;5;0;false;false;;;;;;
                                  -28248;14;0;false;false;0;0;0;;;
                                  -28262;3;0;false;false;42;0;255;;;
                                  -28265;2;0;false;false;0;0;0;;;
                                  -28267;4;0;false;false;;;;;;
                                  -28271;1;0;false;false;0;0;0;;;
                                  -28272;5;0;false;false;;;;;;
                                  -28277;60;0;false;false;63;127;95;;;
                                  -28337;2;0;false;false;;;;;;
                                  -28339;61;0;false;false;63;127;95;;;
                                  -28400;2;0;false;false;;;;;;
                                  -28402;14;0;false;false;0;0;0;;;
                                  -28416;14;0;false;false;42;0;255;;;
                                  -28430;2;0;false;false;0;0;0;;;
                                  -28432;4;0;false;false;;;;;;
                                  -28436;42;0;false;false;63;127;95;;;
                                  -28478;2;0;false;false;;;;;;
                                  -28480;34;0;false;false;0;0;0;;;
                                  -28514;1;0;false;false;;;;;;
                                  -28515;1;0;false;false;0;0;0;;;
                                  -28516;1;0;false;false;;;;;;
                                  -28517;3;0;false;false;0;0;0;;;
                                  -28520;4;0;false;false;;;;;;
                                  -28524;14;0;false;false;0;0;0;;;
                                  -28538;3;0;false;false;42;0;255;;;
                                  -28541;2;0;false;false;0;0;0;;;
                                  -28543;4;0;false;false;;;;;;
                                  -28547;24;0;false;false;0;0;0;;;
                                  -28571;1;0;false;false;;;;;;
                                  -28572;3;0;false;false;0;0;0;;;
                                  -28575;3;0;false;false;;;;;;
                                  -28578;1;0;false;false;0;0;0;;;
                                  -28579;3;0;false;false;;;;;;
                                  -28582;3;0;false;false;63;95;191;;;
                                  -28585;4;0;false;false;;;;;;
                                  -28589;1;0;false;false;63;95;191;;;
                                  -28590;1;0;false;false;;;;;;
                                  -28591;7;0;false;false;63;95;191;;;
                                  -28598;1;0;false;false;;;;;;
                                  -28599;3;0;false;false;63;95;191;;;
                                  -28602;1;0;false;false;;;;;;
                                  -28603;9;0;false;false;63;95;191;;;
                                  -28612;1;0;false;false;;;;;;
                                  -28613;4;0;false;false;63;95;191;;;
                                  -28617;1;0;false;false;;;;;;
                                  -28618;4;0;false;false;63;95;191;;;
                                  -28622;1;0;false;false;;;;;;
                                  -28623;2;0;false;false;63;95;191;;;
                                  -28625;1;0;false;false;;;;;;
                                  -28626;3;0;false;false;63;95;191;;;
                                  -28629;1;0;false;false;;;;;;
                                  -28630;3;0;false;false;63;95;191;;;
                                  -28633;1;0;false;false;;;;;;
                                  -28634;5;0;false;false;63;95;191;;;
                                  -28639;2;0;false;false;;;;;;
                                  -28641;5;0;false;false;63;95;191;;;
                                  -28646;1;0;false;false;;;;;;
                                  -28647;4;0;false;false;63;95;191;;;
                                  -28651;1;0;false;false;;;;;;
                                  -28652;2;0;false;false;63;95;191;;;
                                  -28654;1;0;false;false;;;;;;
                                  -28655;9;0;false;false;63;95;191;;;
                                  -28664;5;0;false;false;;;;;;
                                  -28669;1;0;false;false;63;95;191;;;
                                  -28670;1;0;false;false;;;;;;
                                  -28671;5;0;false;false;63;95;191;;;
                                  -28676;1;0;false;false;;;;;;
                                  -28677;3;0;false;false;63;95;191;;;
                                  -28680;1;0;false;false;;;;;;
                                  -28681;6;0;false;false;63;95;191;;;
                                  -28687;1;0;false;false;;;;;;
                                  -28688;7;0;false;false;63;95;191;;;
                                  -28695;1;0;false;false;;;;;;
                                  -28696;4;0;false;false;63;95;191;;;
                                  -28700;1;0;false;false;;;;;;
                                  -28701;3;0;false;false;63;95;191;;;
                                  -28704;1;0;false;false;;;;;;
                                  -28705;18;0;false;false;63;95;191;;;
                                  -28723;1;0;false;false;;;;;;
                                  -28724;2;0;false;false;63;95;191;;;
                                  -28726;1;0;false;false;;;;;;
                                  -28727;4;0;false;false;63;95;191;;;
                                  -28731;1;0;false;false;;;;;;
                                  -28732;2;0;false;false;63;95;191;;;
                                  -28734;1;0;false;false;;;;;;
                                  -28735;5;0;false;false;63;95;191;;;
                                  -28740;1;0;false;false;;;;;;
                                  -28741;3;0;false;false;63;95;191;;;
                                  -28744;5;0;false;false;;;;;;
                                  -28749;1;0;false;false;63;95;191;;;
                                  -28750;1;0;false;false;;;;;;
                                  -28751;8;0;false;false;63;95;191;;;
                                  -28759;1;0;false;false;;;;;;
                                  -28760;2;0;false;false;63;95;191;;;
                                  -28762;1;0;false;false;;;;;;
                                  -28763;3;0;false;false;63;95;191;;;
                                  -28766;1;0;false;false;;;;;;
                                  -28767;7;0;false;false;63;95;191;;;
                                  -28774;4;0;false;false;;;;;;
                                  -28778;1;0;false;false;63;95;191;;;
                                  -28779;1;0;false;false;;;;;;
                                  -28780;3;0;false;false;127;127;159;;;
                                  -28783;4;0;false;false;;;;;;
                                  -28787;1;0;false;false;63;95;191;;;
                                  -28788;4;0;false;false;;;;;;
                                  -28792;1;0;false;false;63;95;191;;;
                                  -28793;1;0;false;false;;;;;;
                                  -28794;7;1;false;false;127;159;191;;;
                                  -28801;4;0;false;false;63;95;191;;;
                                  -28805;1;0;false;false;;;;;;
                                  -28806;4;0;false;false;63;95;191;;;
                                  -28810;1;0;false;false;;;;;;
                                  -28811;4;0;false;false;63;95;191;;;
                                  -28815;1;0;false;false;;;;;;
                                  -28816;2;0;false;false;63;95;191;;;
                                  -28818;1;0;false;false;;;;;;
                                  -28819;5;0;false;false;63;95;191;;;
                                  -28824;1;0;false;false;;;;;;
                                  -28825;2;0;false;false;63;95;191;;;
                                  -28827;1;0;false;false;;;;;;
                                  -28828;4;0;false;false;63;95;191;;;
                                  -28832;1;0;false;false;;;;;;
                                  -28833;4;0;false;false;63;95;191;;;
                                  -28837;1;0;false;false;;;;;;
                                  -28838;3;0;false;false;63;95;191;;;
                                  -28841;1;0;false;false;;;;;;
                                  -28842;7;0;false;false;63;95;191;;;
                                  -28849;1;0;false;false;;;;;;
                                  -28850;4;0;false;false;63;95;191;;;
                                  -28854;1;0;false;false;;;;;;
                                  -28855;6;0;false;false;63;95;191;;;
                                  -28861;4;0;false;false;;;;;;
                                  -28865;1;0;false;false;63;95;191;;;
                                  -28866;2;0;false;false;;;;;;
                                  -28868;4;0;false;false;63;95;191;;;
                                  -28872;1;0;false;false;;;;;;
                                  -28873;6;0;false;false;63;95;191;;;
                                  -28879;1;0;false;false;;;;;;
                                  -28880;6;0;false;false;63;95;191;;;
                                  -28886;1;0;false;false;;;;;;
                                  -28887;2;0;false;false;63;95;191;;;
                                  -28889;1;0;false;false;;;;;;
                                  -28890;7;0;false;false;63;95;191;;;
                                  -28897;1;0;false;false;;;;;;
                                  -28898;5;0;false;false;63;95;191;;;
                                  -28903;1;0;false;false;;;;;;
                                  -28904;20;0;false;false;63;95;191;;;
                                  -28924;4;0;false;false;;;;;;
                                  -28928;1;0;false;false;63;95;191;;;
                                  -28929;1;0;false;false;;;;;;
                                  -28930;7;1;false;false;127;159;191;;;
                                  -28937;10;0;false;false;63;95;191;;;
                                  -28947;1;0;false;false;;;;;;
                                  -28948;6;0;false;false;63;95;191;;;
                                  -28954;1;0;false;false;;;;;;
                                  -28955;2;0;false;false;63;95;191;;;
                                  -28957;1;0;false;false;;;;;;
                                  -28958;3;0;false;false;63;95;191;;;
                                  -28961;1;0;false;false;;;;;;
                                  -28962;5;0;false;false;63;95;191;;;
                                  -28967;1;0;false;false;;;;;;
                                  -28968;1;0;false;false;63;95;191;;;
                                  -28969;1;0;false;false;;;;;;
                                  -28970;5;0;false;false;63;95;191;;;
                                  -28975;1;0;false;false;;;;;;
                                  -28976;4;0;false;false;63;95;191;;;
                                  -28980;1;0;false;false;;;;;;
                                  -28981;3;0;false;false;63;95;191;;;
                                  -28984;1;0;false;false;;;;;;
                                  -28985;5;0;false;false;63;95;191;;;
                                  -28990;1;0;false;false;;;;;;
                                  -28991;2;0;false;false;63;95;191;;;
                                  -28993;1;0;false;false;;;;;;
                                  -28994;3;0;false;false;63;95;191;;;
                                  -28997;5;0;false;false;;;;;;
                                  -29002;1;0;false;false;63;95;191;;;
                                  -29003;2;0;false;false;;;;;;
                                  -29005;6;0;false;false;63;95;191;;;
                                  -29011;1;0;false;false;;;;;;
                                  -29012;9;0;false;false;63;95;191;;;
                                  -29021;1;0;false;false;;;;;;
                                  -29022;3;0;false;false;63;95;191;;;
                                  -29025;1;0;false;false;;;;;;
                                  -29026;4;0;false;false;63;95;191;;;
                                  -29030;1;0;false;false;;;;;;
                                  -29031;9;0;false;false;63;95;191;;;
                                  -29040;1;0;false;false;;;;;;
                                  -29041;6;0;false;false;63;95;191;;;
                                  -29047;1;0;false;false;;;;;;
                                  -29048;3;0;false;false;63;95;191;;;
                                  -29051;1;0;false;false;;;;;;
                                  -29052;5;0;false;false;63;95;191;;;
                                  -29057;1;0;false;false;;;;;;
                                  -29058;6;0;false;false;63;95;191;;;
                                  -29064;1;0;false;false;;;;;;
                                  -29065;2;0;false;false;63;95;191;;;
                                  -29067;1;0;false;false;;;;;;
                                  -29068;5;0;false;false;63;95;191;;;
                                  -29073;1;0;false;false;;;;;;
                                  -29074;3;0;false;false;63;95;191;;;
                                  -29077;5;0;false;false;;;;;;
                                  -29082;1;0;false;false;63;95;191;;;
                                  -29083;2;0;false;false;;;;;;
                                  -29085;3;0;false;false;63;95;191;;;
                                  -29088;1;0;false;false;;;;;;
                                  -29089;6;0;false;false;63;95;191;;;
                                  -29095;1;0;false;false;;;;;;
                                  -29096;9;0;false;false;63;95;191;;;
                                  -29105;1;0;false;false;;;;;;
                                  -29106;6;0;false;false;63;95;191;;;
                                  -29112;1;0;false;false;;;;;;
                                  -29113;6;0;false;false;63;95;191;;;
                                  -29119;1;0;false;false;;;;;;
                                  -29120;8;0;false;false;63;95;191;;;
                                  -29128;1;0;false;false;;;;;;
                                  -29129;2;0;false;false;63;95;191;;;
                                  -29131;1;0;false;false;;;;;;
                                  -29132;8;0;false;false;63;95;191;;;
                                  -29140;4;0;false;false;;;;;;
                                  -29144;1;0;false;false;63;95;191;;;
                                  -29145;1;0;false;false;;;;;;
                                  -29146;11;1;false;false;127;159;191;;;
                                  -29157;12;0;false;false;63;95;191;;;
                                  -29169;1;0;false;false;;;;;;
                                  -29170;4;0;false;false;127;127;159;;;
                                  -29174;4;0;false;false;;;;;;
                                  -29178;1;0;false;false;63;95;191;;;
                                  -29179;3;0;false;false;;;;;;
                                  -29182;4;0;false;false;127;127;159;;;
                                  -29186;8;0;false;false;63;95;191;;;
                                  -29194;1;0;false;false;;;;;;
                                  -29195;4;0;false;false;63;95;191;;;
                                  -29199;1;0;false;false;;;;;;
                                  -29200;3;0;false;false;63;95;191;;;
                                  -29203;1;0;false;false;;;;;;
                                  -29204;6;0;false;false;63;95;191;;;
                                  -29210;1;0;false;false;;;;;;
                                  -29211;2;0;false;false;63;95;191;;;
                                  -29213;1;0;false;false;;;;;;
                                  -29214;7;0;false;false;63;95;191;;;
                                  -29221;5;0;false;false;127;127;159;;;
                                  -29226;4;0;false;false;;;;;;
                                  -29230;1;0;false;false;63;95;191;;;
                                  -29231;1;0;false;false;;;;;;
                                  -29232;5;0;false;false;127;127;159;;;
                                  -29237;4;0;false;false;;;;;;
                                  -29241;2;0;false;false;63;95;191;;;
                                  -29243;3;0;false;false;;;;;;
                                  -29246;6;1;false;false;127;0;85;;;
                                  -29252;1;0;false;false;;;;;;
                                  -29253;4;1;false;false;127;0;85;;;
                                  -29257;1;0;false;false;;;;;;
                                  -29258;16;0;false;false;0;0;0;;;
                                  -29274;1;0;false;false;;;;;;
                                  -29275;5;0;false;false;0;0;0;;;
                                  -29280;1;0;false;false;;;;;;
                                  -29281;3;1;false;false;127;0;85;;;
                                  -29284;1;0;false;false;;;;;;
                                  -29285;11;0;false;false;0;0;0;;;
                                  -29296;1;0;false;false;;;;;;
                                  -29297;1;0;false;false;0;0;0;;;
                                  -29298;4;0;false;false;;;;;;
                                  -29302;12;0;false;false;0;0;0;;;
                                  -29314;1;0;false;false;;;;;;
                                  -29315;6;0;false;false;0;0;0;;;
                                  -29321;1;0;false;false;;;;;;
                                  -29322;1;0;false;false;0;0;0;;;
                                  -29323;1;0;false;false;;;;;;
                                  -29324;3;1;false;false;127;0;85;;;
                                  -29327;1;0;false;false;;;;;;
                                  -29328;14;0;false;false;0;0;0;;;
                                  -29342;4;0;false;false;;;;;;
                                  -29346;5;0;false;false;0;0;0;;;
                                  -29351;1;0;false;false;;;;;;
                                  -29352;14;0;false;false;0;0;0;;;
                                  -29366;1;0;false;false;;;;;;
                                  -29367;1;0;false;false;0;0;0;;;
                                  -29368;1;0;false;false;;;;;;
                                  -29369;4;1;false;false;127;0;85;;;
                                  -29373;1;0;false;false;0;0;0;;;
                                  -29374;4;0;false;false;;;;;;
                                  -29378;15;0;false;false;0;0;0;;;
                                  -29393;1;0;false;false;;;;;;
                                  -29394;6;0;false;false;0;0;0;;;
                                  -29400;8;0;false;false;;;;;;
                                  -29408;2;1;false;false;127;0;85;;;
                                  -29410;1;0;false;false;;;;;;
                                  -29411;12;0;false;false;0;0;0;;;
                                  -29423;1;0;false;false;;;;;;
                                  -29424;1;0;false;false;0;0;0;;;
                                  -29425;5;0;false;false;;;;;;
                                  -29430;24;0;false;false;0;0;0;;;
                                  -29454;4;0;false;false;;;;;;
                                  -29458;1;0;false;false;0;0;0;;;
                                  -29459;4;0;false;false;;;;;;
                                  -29463;5;0;false;false;0;0;0;;;
                                  -29468;1;0;false;false;;;;;;
                                  -29469;1;0;false;false;0;0;0;;;
                                  -29470;1;0;false;false;;;;;;
                                  -29471;37;0;false;false;0;0;0;;;
                                  -29508;1;0;false;false;;;;;;
                                  -29509;6;0;false;false;0;0;0;;;
                                  -29515;4;0;false;false;;;;;;
                                  -29519;2;1;false;false;127;0;85;;;
                                  -29521;1;0;false;false;;;;;;
                                  -29522;6;0;false;false;0;0;0;;;
                                  -29528;1;0;false;false;;;;;;
                                  -29529;2;0;false;false;0;0;0;;;
                                  -29531;1;0;false;false;;;;;;
                                  -29532;4;1;false;false;127;0;85;;;
                                  -29536;1;0;false;false;0;0;0;;;
                                  -29537;1;0;false;false;;;;;;
                                  -29538;1;0;false;false;0;0;0;;;
                                  -29539;5;0;false;false;;;;;;
                                  -29544;6;0;false;false;0;0;0;;;
                                  -29550;1;0;false;false;;;;;;
                                  -29551;1;0;false;false;0;0;0;;;
                                  -29552;1;0;false;false;;;;;;
                                  -29553;13;0;false;false;0;0;0;;;
                                  -29566;4;0;false;false;;;;;;
                                  -29570;1;0;false;false;0;0;0;;;
                                  -29571;4;0;false;false;;;;;;
                                  -29575;5;0;false;false;0;0;0;;;
                                  -29580;1;0;false;false;;;;;;
                                  -29581;1;0;false;false;0;0;0;;;
                                  -29582;1;0;false;false;;;;;;
                                  -29583;42;0;false;false;0;0;0;;;
                                  -29625;1;0;false;false;;;;;;
                                  -29626;6;0;false;false;0;0;0;;;
                                  -29632;4;0;false;false;;;;;;
                                  -29636;2;1;false;false;127;0;85;;;
                                  -29638;1;0;false;false;;;;;;
                                  -29639;6;0;false;false;0;0;0;;;
                                  -29645;1;0;false;false;;;;;;
                                  -29646;2;0;false;false;0;0;0;;;
                                  -29648;1;0;false;false;;;;;;
                                  -29649;4;1;false;false;127;0;85;;;
                                  -29653;1;0;false;false;0;0;0;;;
                                  -29654;1;0;false;false;;;;;;
                                  -29655;1;0;false;false;0;0;0;;;
                                  -29656;5;0;false;false;;;;;;
                                  -29661;14;0;false;false;0;0;0;;;
                                  -29675;1;0;false;false;;;;;;
                                  -29676;1;0;false;false;0;0;0;;;
                                  -29677;1;0;false;false;;;;;;
                                  -29678;21;0;false;false;0;0;0;;;
                                  -29699;4;0;false;false;;;;;;
                                  -29703;1;0;false;false;0;0;0;;;
                                  -29704;4;0;false;false;;;;;;
                                  -29708;2;1;false;false;127;0;85;;;
                                  -29710;1;0;false;false;;;;;;
                                  -29711;15;0;false;false;0;0;0;;;
                                  -29726;1;0;false;false;;;;;;
                                  -29727;2;0;false;false;0;0;0;;;
                                  -29729;1;0;false;false;;;;;;
                                  -29730;4;1;false;false;127;0;85;;;
                                  -29734;1;0;false;false;0;0;0;;;
                                  -29735;1;0;false;false;;;;;;
                                  -29736;1;0;false;false;0;0;0;;;
                                  -29737;5;0;false;false;;;;;;
                                  -29742;14;0;false;false;0;0;0;;;
                                  -29756;1;0;false;false;;;;;;
                                  -29757;1;0;false;false;0;0;0;;;
                                  -29758;1;0;false;false;;;;;;
                                  -29759;16;0;false;false;0;0;0;;;
                                  -29775;4;0;false;false;;;;;;
                                  -29779;1;0;false;false;0;0;0;;;
                                  -29780;4;0;false;false;;;;;;
                                  -29784;21;0;false;false;0;0;0;;;
                                  -29805;1;0;false;false;;;;;;
                                  -29806;11;0;false;false;0;0;0;;;
                                  -29817;1;0;false;false;;;;;;
                                  -29818;7;0;false;false;0;0;0;;;
                                  -29825;1;0;false;false;;;;;;
                                  -29826;16;0;false;false;0;0;0;;;
                                  -29842;3;0;false;false;;;;;;
                                  -29845;1;0;false;false;0;0;0;;;
                                  -29846;3;0;false;false;;;;;;
                                  -29849;3;0;false;false;63;95;191;;;
                                  -29852;4;0;false;false;;;;;;
                                  -29856;1;0;false;false;63;95;191;;;
                                  -29857;1;0;false;false;;;;;;
                                  -29858;7;0;false;false;63;95;191;;;
                                  -29865;1;0;false;false;;;;;;
                                  -29866;3;0;false;false;63;95;191;;;
                                  -29869;1;0;false;false;;;;;;
                                  -29870;9;0;false;false;63;95;191;;;
                                  -29879;1;0;false;false;;;;;;
                                  -29880;4;0;false;false;63;95;191;;;
                                  -29884;1;0;false;false;;;;;;
                                  -29885;10;0;false;false;63;95;191;;;
                                  -29895;1;0;false;false;;;;;;
                                  -29896;2;0;false;false;63;95;191;;;
                                  -29898;1;0;false;false;;;;;;
                                  -29899;3;0;false;false;63;95;191;;;
                                  -29902;1;0;false;false;;;;;;
                                  -29903;3;0;false;false;63;95;191;;;
                                  -29906;1;0;false;false;;;;;;
                                  -29907;5;0;false;false;63;95;191;;;
                                  -29912;4;0;false;false;;;;;;
                                  -29916;1;0;false;false;63;95;191;;;
                                  -29917;1;0;false;false;;;;;;
                                  -29918;3;0;false;false;127;127;159;;;
                                  -29921;4;0;false;false;;;;;;
                                  -29925;1;0;false;false;63;95;191;;;
                                  -29926;4;0;false;false;;;;;;
                                  -29930;1;0;false;false;63;95;191;;;
                                  -29931;1;0;false;false;;;;;;
                                  -29932;7;1;false;false;127;159;191;;;
                                  -29939;13;0;false;false;63;95;191;;;
                                  -29952;1;0;false;false;;;;;;
                                  -29953;4;0;false;false;63;95;191;;;
                                  -29957;1;0;false;false;;;;;;
                                  -29958;9;0;false;false;63;95;191;;;
                                  -29967;1;0;false;false;;;;;;
                                  -29968;2;0;false;false;63;95;191;;;
                                  -29970;1;0;false;false;;;;;;
                                  -29971;5;0;false;false;63;95;191;;;
                                  -29976;1;0;false;false;;;;;;
                                  -29977;2;0;false;false;63;95;191;;;
                                  -29979;1;0;false;false;;;;;;
                                  -29980;4;0;false;false;63;95;191;;;
                                  -29984;4;0;false;false;;;;;;
                                  -29988;1;0;false;false;63;95;191;;;
                                  -29989;1;0;false;false;;;;;;
                                  -29990;11;1;false;false;127;159;191;;;
                                  -30001;12;0;false;false;63;95;191;;;
                                  -30013;1;0;false;false;;;;;;
                                  -30014;4;0;false;false;127;127;159;;;
                                  -30018;4;0;false;false;;;;;;
                                  -30022;1;0;false;false;63;95;191;;;
                                  -30023;3;0;false;false;;;;;;
                                  -30026;4;0;false;false;127;127;159;;;
                                  -30030;8;0;false;false;63;95;191;;;
                                  -30038;1;0;false;false;;;;;;
                                  -30039;4;0;false;false;63;95;191;;;
                                  -30043;1;0;false;false;;;;;;
                                  -30044;3;0;false;false;63;95;191;;;
                                  -30047;1;0;false;false;;;;;;
                                  -30048;6;0;false;false;63;95;191;;;
                                  -30054;1;0;false;false;;;;;;
                                  -30055;2;0;false;false;63;95;191;;;
                                  -30057;1;0;false;false;;;;;;
                                  -30058;7;0;false;false;63;95;191;;;
                                  -30065;5;0;false;false;127;127;159;;;
                                  -30070;4;0;false;false;;;;;;
                                  -30074;1;0;false;false;63;95;191;;;
                                  -30075;1;0;false;false;;;;;;
                                  -30076;5;0;false;false;127;127;159;;;
                                  -30081;4;0;false;false;;;;;;
                                  -30085;2;0;false;false;63;95;191;;;
                                  -30087;3;0;false;false;;;;;;
                                  -30090;6;1;false;false;127;0;85;;;
                                  -30096;1;0;false;false;;;;;;
                                  -30097;4;1;false;false;127;0;85;;;
                                  -30101;1;0;false;false;;;;;;
                                  -30102;25;0;false;false;0;0;0;;;
                                  -30127;1;0;false;false;;;;;;
                                  -30128;14;0;false;false;0;0;0;;;
                                  -30142;1;0;false;false;;;;;;
                                  -30143;1;0;false;false;0;0;0;;;
                                  -30144;4;0;false;false;;;;;;
                                  -30148;2;1;false;false;127;0;85;;;
                                  -30150;1;0;false;false;;;;;;
                                  -30151;12;0;false;false;0;0;0;;;
                                  -30163;1;0;false;false;;;;;;
                                  -30164;1;0;false;false;0;0;0;;;
                                  -30165;5;0;false;false;;;;;;
                                  -30170;24;0;false;false;0;0;0;;;
                                  -30194;4;0;false;false;;;;;;
                                  -30198;1;0;false;false;0;0;0;;;
                                  -30199;4;0;false;false;;;;;;
                                  -30203;20;0;false;false;0;0;0;;;
                                  -30223;1;0;false;false;;;;;;
                                  -30224;2;0;false;false;0;0;0;;;
                                  -30226;1;0;false;false;;;;;;
                                  -30227;24;0;false;false;0;0;0;;;
                                  -30251;4;0;false;false;;;;;;
                                  -30255;6;0;false;false;0;0;0;;;
                                  -30261;8;0;false;false;42;0;255;;;
                                  -30269;2;0;false;false;0;0;0;;;
                                  -30271;3;0;false;false;;;;;;
                                  -30274;1;0;false;false;0;0;0;;;
                                  -30275;3;0;false;false;;;;;;
                                  -30278;3;0;false;false;63;95;191;;;
                                  -30281;4;0;false;false;;;;;;
                                  -30285;1;0;false;false;63;95;191;;;
                                  -30286;1;0;false;false;;;;;;
                                  -30287;7;0;false;false;63;95;191;;;
                                  -30294;1;0;false;false;;;;;;
                                  -30295;3;0;false;false;63;95;191;;;
                                  -30298;1;0;false;false;;;;;;
                                  -30299;9;0;false;false;63;95;191;;;
                                  -30308;1;0;false;false;;;;;;
                                  -30309;4;0;false;false;63;95;191;;;
                                  -30313;1;0;false;false;;;;;;
                                  -30314;4;0;false;false;63;95;191;;;
                                  -30318;1;0;false;false;;;;;;
                                  -30319;2;0;false;false;63;95;191;;;
                                  -30321;1;0;false;false;;;;;;
                                  -30322;3;0;false;false;63;95;191;;;
                                  -30325;1;0;false;false;;;;;;
                                  -30326;3;0;false;false;63;95;191;;;
                                  -30329;1;0;false;false;;;;;;
                                  -30330;5;0;false;false;63;95;191;;;
                                  -30335;4;0;false;false;;;;;;
                                  -30339;1;0;false;false;63;95;191;;;
                                  -30340;1;0;false;false;;;;;;
                                  -30341;3;0;false;false;63;95;191;;;
                                  -30344;1;0;false;false;;;;;;
                                  -30345;3;0;false;false;63;95;191;;;
                                  -30348;1;0;false;false;;;;;;
                                  -30349;6;0;false;false;63;95;191;;;
                                  -30355;1;0;false;false;;;;;;
                                  -30356;3;0;false;false;63;95;191;;;
                                  -30359;1;0;false;false;;;;;;
                                  -30360;4;0;false;false;63;95;191;;;
                                  -30364;1;0;false;false;;;;;;
                                  -30365;6;0;false;false;63;95;191;;;
                                  -30371;1;0;false;false;;;;;;
                                  -30372;9;0;false;false;63;95;191;;;
                                  -30381;1;0;false;false;;;;;;
                                  -30382;2;0;false;false;63;95;191;;;
                                  -30384;1;0;false;false;;;;;;
                                  -30385;8;0;false;false;63;95;191;;;
                                  -30393;1;0;false;false;;;;;;
                                  -30394;3;0;false;false;63;95;191;;;
                                  -30397;1;0;false;false;;;;;;
                                  -30398;17;0;false;false;63;95;191;;;
                                  -30415;4;0;false;false;;;;;;
                                  -30419;1;0;false;false;63;95;191;;;
                                  -30420;1;0;false;false;;;;;;
                                  -30421;10;0;false;false;63;95;191;;;
                                  -30431;1;0;false;false;;;;;;
                                  -30432;2;0;false;false;63;95;191;;;
                                  -30434;1;0;false;false;;;;;;
                                  -30435;7;0;false;false;63;95;191;;;
                                  -30442;1;0;false;false;;;;;;
                                  -30443;2;0;false;false;63;95;191;;;
                                  -30445;1;0;false;false;;;;;;
                                  -30446;7;0;false;false;63;95;191;;;
                                  -30453;1;0;false;false;;;;;;
                                  -30454;3;0;false;false;63;95;191;;;
                                  -30457;1;0;false;false;;;;;;
                                  -30458;4;0;false;false;63;95;191;;;
                                  -30462;1;0;false;false;;;;;;
                                  -30463;9;0;false;false;63;95;191;;;
                                  -30472;1;0;false;false;;;;;;
                                  -30473;2;0;false;false;63;95;191;;;
                                  -30475;1;0;false;false;;;;;;
                                  -30476;3;0;false;false;63;95;191;;;
                                  -30479;1;0;false;false;;;;;;
                                  -30480;4;0;false;false;63;95;191;;;
                                  -30484;1;0;false;false;;;;;;
                                  -30485;7;0;false;false;63;95;191;;;
                                  -30492;4;0;false;false;;;;;;
                                  -30496;1;0;false;false;63;95;191;;;
                                  -30497;1;0;false;false;;;;;;
                                  -30498;5;0;false;false;63;95;191;;;
                                  -30503;1;0;false;false;;;;;;
                                  -30504;10;0;false;false;63;95;191;;;
                                  -30514;1;0;false;false;;;;;;
                                  -30515;6;0;false;false;63;95;191;;;
                                  -30521;1;0;false;false;;;;;;
                                  -30522;4;0;false;false;63;95;191;;;
                                  -30526;1;0;false;false;;;;;;
                                  -30527;10;0;false;false;63;95;191;;;
                                  -30537;1;0;false;false;;;;;;
                                  -30538;4;0;false;false;63;95;191;;;
                                  -30542;1;0;false;false;;;;;;
                                  -30543;3;0;false;false;63;95;191;;;
                                  -30546;1;0;false;false;;;;;;
                                  -30547;4;0;false;false;63;95;191;;;
                                  -30551;1;0;false;false;;;;;;
                                  -30552;10;0;false;false;63;95;191;;;
                                  -30562;1;0;false;false;;;;;;
                                  -30563;6;0;false;false;63;95;191;;;
                                  -30569;4;0;false;false;;;;;;
                                  -30573;1;0;false;false;63;95;191;;;
                                  -30574;1;0;false;false;;;;;;
                                  -30575;10;0;false;false;63;95;191;;;
                                  -30585;1;0;false;false;;;;;;
                                  -30586;6;0;false;false;63;95;191;;;
                                  -30592;1;0;false;false;;;;;;
                                  -30593;3;0;false;false;63;95;191;;;
                                  -30596;1;0;false;false;;;;;;
                                  -30597;7;0;false;false;63;95;191;;;
                                  -30604;1;0;false;false;;;;;;
                                  -30605;5;0;false;false;63;95;191;;;
                                  -30610;1;0;false;false;;;;;;
                                  -30611;3;0;false;false;63;95;191;;;
                                  -30614;1;0;false;false;;;;;;
                                  -30615;10;0;false;false;63;95;191;;;
                                  -30625;1;0;false;false;;;;;;
                                  -30626;3;0;false;false;63;95;191;;;
                                  -30629;1;0;false;false;;;;;;
                                  -30630;4;0;false;false;63;95;191;;;
                                  -30634;1;0;false;false;;;;;;
                                  -30635;3;0;false;false;63;95;191;;;
                                  -30638;1;0;false;false;;;;;;
                                  -30639;3;0;false;false;63;95;191;;;
                                  -30642;1;0;false;false;;;;;;
                                  -30643;5;0;false;false;63;95;191;;;
                                  -30648;4;0;false;false;;;;;;
                                  -30652;1;0;false;false;63;95;191;;;
                                  -30653;1;0;false;false;;;;;;
                                  -30654;3;0;false;false;127;127;159;;;
                                  -30657;4;0;false;false;;;;;;
                                  -30661;1;0;false;false;63;95;191;;;
                                  -30662;4;0;false;false;;;;;;
                                  -30666;1;0;false;false;63;95;191;;;
                                  -30667;1;0;false;false;;;;;;
                                  -30668;7;1;false;false;127;159;191;;;
                                  -30675;4;0;false;false;63;95;191;;;
                                  -30679;1;0;false;false;;;;;;
                                  -30680;4;0;false;false;63;95;191;;;
                                  -30684;1;0;false;false;;;;;;
                                  -30685;4;0;false;false;63;95;191;;;
                                  -30689;1;0;false;false;;;;;;
                                  -30690;2;0;false;false;63;95;191;;;
                                  -30692;1;0;false;false;;;;;;
                                  -30693;5;0;false;false;63;95;191;;;
                                  -30698;1;0;false;false;;;;;;
                                  -30699;2;0;false;false;63;95;191;;;
                                  -30701;1;0;false;false;;;;;;
                                  -30702;4;0;false;false;63;95;191;;;
                                  -30706;1;0;false;false;;;;;;
                                  -30707;4;0;false;false;63;95;191;;;
                                  -30711;1;0;false;false;;;;;;
                                  -30712;3;0;false;false;63;95;191;;;
                                  -30715;1;0;false;false;;;;;;
                                  -30716;7;0;false;false;63;95;191;;;
                                  -30723;1;0;false;false;;;;;;
                                  -30724;4;0;false;false;63;95;191;;;
                                  -30728;1;0;false;false;;;;;;
                                  -30729;6;0;false;false;63;95;191;;;
                                  -30735;4;0;false;false;;;;;;
                                  -30739;1;0;false;false;63;95;191;;;
                                  -30740;2;0;false;false;;;;;;
                                  -30742;4;0;false;false;63;95;191;;;
                                  -30746;1;0;false;false;;;;;;
                                  -30747;6;0;false;false;63;95;191;;;
                                  -30753;1;0;false;false;;;;;;
                                  -30754;6;0;false;false;63;95;191;;;
                                  -30760;1;0;false;false;;;;;;
                                  -30761;2;0;false;false;63;95;191;;;
                                  -30763;1;0;false;false;;;;;;
                                  -30764;7;0;false;false;63;95;191;;;
                                  -30771;1;0;false;false;;;;;;
                                  -30772;5;0;false;false;63;95;191;;;
                                  -30777;1;0;false;false;;;;;;
                                  -30778;20;0;false;false;63;95;191;;;
                                  -30798;4;0;false;false;;;;;;
                                  -30802;1;0;false;false;63;95;191;;;
                                  -30803;1;0;false;false;;;;;;
                                  -30804;7;1;false;false;127;159;191;;;
                                  -30811;10;0;false;false;63;95;191;;;
                                  -30821;1;0;false;false;;;;;;
                                  -30822;6;0;false;false;63;95;191;;;
                                  -30828;1;0;false;false;;;;;;
                                  -30829;2;0;false;false;63;95;191;;;
                                  -30831;1;0;false;false;;;;;;
                                  -30832;3;0;false;false;63;95;191;;;
                                  -30835;1;0;false;false;;;;;;
                                  -30836;5;0;false;false;63;95;191;;;
                                  -30841;1;0;false;false;;;;;;
                                  -30842;1;0;false;false;63;95;191;;;
                                  -30843;1;0;false;false;;;;;;
                                  -30844;5;0;false;false;63;95;191;;;
                                  -30849;1;0;false;false;;;;;;
                                  -30850;4;0;false;false;63;95;191;;;
                                  -30854;1;0;false;false;;;;;;
                                  -30855;3;0;false;false;63;95;191;;;
                                  -30858;1;0;false;false;;;;;;
                                  -30859;5;0;false;false;63;95;191;;;
                                  -30864;1;0;false;false;;;;;;
                                  -30865;2;0;false;false;63;95;191;;;
                                  -30867;1;0;false;false;;;;;;
                                  -30868;3;0;false;false;63;95;191;;;
                                  -30871;5;0;false;false;;;;;;
                                  -30876;1;0;false;false;63;95;191;;;
                                  -30877;2;0;false;false;;;;;;
                                  -30879;6;0;false;false;63;95;191;;;
                                  -30885;1;0;false;false;;;;;;
                                  -30886;9;0;false;false;63;95;191;;;
                                  -30895;1;0;false;false;;;;;;
                                  -30896;3;0;false;false;63;95;191;;;
                                  -30899;1;0;false;false;;;;;;
                                  -30900;4;0;false;false;63;95;191;;;
                                  -30904;1;0;false;false;;;;;;
                                  -30905;9;0;false;false;63;95;191;;;
                                  -30914;1;0;false;false;;;;;;
                                  -30915;6;0;false;false;63;95;191;;;
                                  -30921;1;0;false;false;;;;;;
                                  -30922;3;0;false;false;63;95;191;;;
                                  -30925;1;0;false;false;;;;;;
                                  -30926;5;0;false;false;63;95;191;;;
                                  -30931;1;0;false;false;;;;;;
                                  -30932;6;0;false;false;63;95;191;;;
                                  -30938;1;0;false;false;;;;;;
                                  -30939;2;0;false;false;63;95;191;;;
                                  -30941;1;0;false;false;;;;;;
                                  -30942;5;0;false;false;63;95;191;;;
                                  -30947;1;0;false;false;;;;;;
                                  -30948;3;0;false;false;63;95;191;;;
                                  -30951;5;0;false;false;;;;;;
                                  -30956;1;0;false;false;63;95;191;;;
                                  -30957;2;0;false;false;;;;;;
                                  -30959;3;0;false;false;63;95;191;;;
                                  -30962;1;0;false;false;;;;;;
                                  -30963;6;0;false;false;63;95;191;;;
                                  -30969;1;0;false;false;;;;;;
                                  -30970;9;0;false;false;63;95;191;;;
                                  -30979;1;0;false;false;;;;;;
                                  -30980;6;0;false;false;63;95;191;;;
                                  -30986;1;0;false;false;;;;;;
                                  -30987;6;0;false;false;63;95;191;;;
                                  -30993;1;0;false;false;;;;;;
                                  -30994;8;0;false;false;63;95;191;;;
                                  -31002;1;0;false;false;;;;;;
                                  -31003;2;0;false;false;63;95;191;;;
                                  -31005;1;0;false;false;;;;;;
                                  -31006;8;0;false;false;63;95;191;;;
                                  -31014;4;0;false;false;;;;;;
                                  -31018;1;0;false;false;63;95;191;;;
                                  -31019;1;0;false;false;;;;;;
                                  -31020;7;1;false;false;127;159;191;;;
                                  -31027;6;0;false;false;63;95;191;;;
                                  -31033;1;0;false;false;;;;;;
                                  -31034;6;0;false;false;63;95;191;;;
                                  -31040;1;0;false;false;;;;;;
                                  -31041;2;0;false;false;63;95;191;;;
                                  -31043;1;0;false;false;;;;;;
                                  -31044;3;0;false;false;63;95;191;;;
                                  -31047;1;0;false;false;;;;;;
                                  -31048;3;0;false;false;63;95;191;;;
                                  -31051;1;0;false;false;;;;;;
                                  -31052;11;0;false;false;63;95;191;;;
                                  -31063;1;0;false;false;;;;;;
                                  -31064;4;0;false;false;63;95;191;;;
                                  -31068;1;0;false;false;;;;;;
                                  -31069;3;0;false;false;63;95;191;;;
                                  -31072;1;0;false;false;;;;;;
                                  -31073;2;0;false;false;63;95;191;;;
                                  -31075;1;0;false;false;;;;;;
                                  -31076;5;0;false;false;63;95;191;;;
                                  -31081;4;0;false;false;;;;;;
                                  -31085;1;0;false;false;63;95;191;;;
                                  -31086;1;0;false;false;;;;;;
                                  -31087;7;1;false;false;127;159;191;;;
                                  -31094;14;0;false;false;63;95;191;;;
                                  -31108;1;0;false;false;;;;;;
                                  -31109;4;0;false;false;63;95;191;;;
                                  -31113;1;0;false;false;;;;;;
                                  -31114;10;0;false;false;63;95;191;;;
                                  -31124;1;0;false;false;;;;;;
                                  -31125;5;0;false;false;63;95;191;;;
                                  -31130;1;0;false;false;;;;;;
                                  -31131;2;0;false;false;63;95;191;;;
                                  -31133;1;0;false;false;;;;;;
                                  -31134;3;0;false;false;63;95;191;;;
                                  -31137;1;0;false;false;;;;;;
                                  -31138;3;0;false;false;63;95;191;;;
                                  -31141;1;0;false;false;;;;;;
                                  -31142;11;0;false;false;63;95;191;;;
                                  -31153;5;0;false;false;;;;;;
                                  -31158;1;0;false;false;63;95;191;;;
                                  -31159;2;0;false;false;;;;;;
                                  -31161;3;0;false;false;63;95;191;;;
                                  -31164;1;0;false;false;;;;;;
                                  -31165;2;0;false;false;63;95;191;;;
                                  -31167;1;0;false;false;;;;;;
                                  -31168;5;0;false;false;63;95;191;;;
                                  -31173;4;0;false;false;;;;;;
                                  -31177;2;0;false;false;63;95;191;;;
                                  -31179;3;0;false;false;;;;;;
                                  -31182;4;1;false;false;127;0;85;;;
                                  -31186;1;0;false;false;;;;;;
                                  -31187;22;0;false;false;0;0;0;;;
                                  -31209;1;0;false;false;;;;;;
                                  -31210;5;0;false;false;0;0;0;;;
                                  -31215;1;0;false;false;;;;;;
                                  -31216;3;1;false;false;127;0;85;;;
                                  -31219;1;0;false;false;;;;;;
                                  -31220;11;0;false;false;0;0;0;;;
                                  -31231;1;0;false;false;;;;;;
                                  -31232;12;0;false;false;0;0;0;;;
                                  -31244;1;0;false;false;;;;;;
                                  -31245;7;0;false;false;0;0;0;;;
                                  -31252;1;0;false;false;;;;;;
                                  -31253;5;0;false;false;0;0;0;;;
                                  -31258;1;0;false;false;;;;;;
                                  -31259;15;0;false;false;0;0;0;;;
                                  -31274;1;0;false;false;;;;;;
                                  -31275;1;0;false;false;0;0;0;;;
                                  -31276;4;0;false;false;;;;;;
                                  -31280;3;1;false;false;127;0;85;;;
                                  -31283;1;0;false;false;;;;;;
                                  -31284;10;0;false;false;0;0;0;;;
                                  -31294;1;0;false;false;;;;;;
                                  -31295;1;0;false;false;0;0;0;;;
                                  -31296;1;0;false;false;;;;;;
                                  -31297;14;0;false;false;0;0;0;;;
                                  -31311;4;0;false;false;;;;;;
                                  -31315;3;1;false;false;127;0;85;;;
                                  -31318;1;0;false;false;;;;;;
                                  -31319;10;0;false;false;0;0;0;;;
                                  -31329;4;0;false;false;;;;;;
                                  -31333;3;1;false;false;127;0;85;;;
                                  -31336;1;0;false;false;;;;;;
                                  -31337;8;0;false;false;0;0;0;;;
                                  -31345;4;0;false;false;;;;;;
                                  -31349;3;1;false;false;127;0;85;;;
                                  -31352;1;0;false;false;;;;;;
                                  -31353;11;0;false;false;0;0;0;;;
                                  -31364;1;0;false;false;;;;;;
                                  -31365;1;0;false;false;0;0;0;;;
                                  -31366;1;0;false;false;;;;;;
                                  -31367;11;0;false;false;0;0;0;;;
                                  -31378;6;0;false;false;;;;;;
                                  -31384;3;1;false;false;127;0;85;;;
                                  -31387;1;0;false;false;;;;;;
                                  -31388;9;0;false;false;0;0;0;;;
                                  -31397;1;0;false;false;;;;;;
                                  -31398;1;0;false;false;0;0;0;;;
                                  -31399;1;0;false;false;;;;;;
                                  -31400;11;0;false;false;0;0;0;;;
                                  -31411;1;0;false;false;;;;;;
                                  -31412;1;0;false;false;0;0;0;;;
                                  -31413;1;0;false;false;;;;;;
                                  -31414;5;1;false;false;127;0;85;;;
                                  -31419;16;0;false;false;0;0;0;;;
                                  -31435;4;0;false;false;;;;;;
                                  -31439;3;1;false;false;127;0;85;;;
                                  -31442;1;0;false;false;;;;;;
                                  -31443;13;0;false;false;0;0;0;;;
                                  -31456;1;0;false;false;;;;;;
                                  -31457;1;0;false;false;0;0;0;;;
                                  -31458;1;0;false;false;;;;;;
                                  -31459;20;0;false;false;0;0;0;;;
                                  -31479;1;0;false;false;;;;;;
                                  -31480;9;0;false;false;0;0;0;;;
                                  -31489;1;0;false;false;;;;;;
                                  -31490;1;0;false;false;0;0;0;;;
                                  -31491;1;0;false;false;;;;;;
                                  -31492;12;0;false;false;0;0;0;;;
                                  -31504;4;0;false;false;;;;;;
                                  -31508;3;1;false;false;127;0;85;;;
                                  -31511;1;0;false;false;;;;;;
                                  -31512;11;0;false;false;0;0;0;;;
                                  -31523;1;0;false;false;;;;;;
                                  -31524;1;0;false;false;0;0;0;;;
                                  -31525;1;0;false;false;;;;;;
                                  -31526;11;0;false;false;0;0;0;;;
                                  -31537;1;0;false;false;;;;;;
                                  -31538;1;0;false;false;0;0;0;;;
                                  -31539;1;0;false;false;;;;;;
                                  -31540;11;0;false;false;0;0;0;;;
                                  -31551;8;0;false;false;;;;;;
                                  -31559;2;1;false;false;127;0;85;;;
                                  -31561;1;0;false;false;;;;;;
                                  -31562;12;0;false;false;0;0;0;;;
                                  -31574;1;0;false;false;;;;;;
                                  -31575;2;0;false;false;0;0;0;;;
                                  -31577;1;0;false;false;;;;;;
                                  -31578;14;0;false;false;0;0;0;;;
                                  -31592;1;0;false;false;;;;;;
                                  -31593;1;0;false;false;0;0;0;;;
                                  -31594;5;0;false;false;;;;;;
                                  -31599;6;1;false;false;127;0;85;;;
                                  -31605;1;0;false;false;0;0;0;;;
                                  -31606;5;0;false;false;;;;;;
                                  -31611;38;0;false;false;63;127;95;;;
                                  -31649;2;0;false;false;;;;;;
                                  -31651;1;0;false;false;0;0;0;;;
                                  -31652;4;0;false;false;;;;;;
                                  -31656;4;1;false;false;127;0;85;;;
                                  -31660;4;0;false;false;;;;;;
                                  -31664;2;1;false;false;127;0;85;;;
                                  -31666;1;0;false;false;;;;;;
                                  -31667;12;0;false;false;0;0;0;;;
                                  -31679;1;0;false;false;;;;;;
                                  -31680;1;0;false;false;0;0;0;;;
                                  -31681;1;0;false;false;;;;;;
                                  -31682;2;0;false;false;0;0;0;;;
                                  -31684;1;0;false;false;;;;;;
                                  -31685;1;0;false;false;0;0;0;;;
                                  -31686;5;0;false;false;;;;;;
                                  -31691;9;0;false;false;0;0;0;;;
                                  -31700;1;0;false;false;;;;;;
                                  -31701;1;0;false;false;0;0;0;;;
                                  -31702;1;0;false;false;;;;;;
                                  -31703;12;0;false;false;0;0;0;;;
                                  -31715;2;0;false;false;;;;;;
                                  -31717;39;0;false;false;63;127;95;;;
                                  -31756;2;0;false;false;;;;;;
                                  -31758;1;0;false;false;0;0;0;;;
                                  -31759;4;0;false;false;;;;;;
                                  -31763;4;1;false;false;127;0;85;;;
                                  -31767;1;0;false;false;;;;;;
                                  -31768;1;0;false;false;0;0;0;;;
                                  -31769;5;0;false;false;;;;;;
                                  -31774;9;0;false;false;0;0;0;;;
                                  -31783;1;0;false;false;;;;;;
                                  -31784;1;0;false;false;0;0;0;;;
                                  -31785;1;0;false;false;;;;;;
                                  -31786;2;0;false;false;0;0;0;;;
                                  -31788;4;0;false;false;;;;;;
                                  -31792;1;0;false;false;0;0;0;;;
                                  -31793;4;0;false;false;;;;;;
                                  -31797;2;1;false;false;127;0;85;;;
                                  -31799;1;0;false;false;;;;;;
                                  -31800;15;0;false;false;0;0;0;;;
                                  -31815;1;0;false;false;;;;;;
                                  -31816;2;0;false;false;0;0;0;;;
                                  -31818;1;0;false;false;;;;;;
                                  -31819;4;1;false;false;127;0;85;;;
                                  -31823;1;0;false;false;0;0;0;;;
                                  -31824;1;0;false;false;;;;;;
                                  -31825;1;0;false;false;0;0;0;;;
                                  -31826;5;0;false;false;;;;;;
                                  -31831;6;0;false;false;0;0;0;;;
                                  -31837;14;0;false;false;42;0;255;;;
                                  -31851;2;0;false;false;0;0;0;;;
                                  -31853;5;0;false;false;;;;;;
                                  -31858;35;0;false;false;0;0;0;;;
                                  -31893;1;0;false;false;;;;;;
                                  -31894;21;0;false;false;0;0;0;;;
                                  -31915;5;0;false;false;;;;;;
                                  -31920;6;0;false;false;0;0;0;;;
                                  -31926;3;0;false;false;42;0;255;;;
                                  -31929;2;0;false;false;0;0;0;;;
                                  -31931;5;0;false;false;;;;;;
                                  -31936;1;0;false;false;0;0;0;;;
                                  -31937;4;0;false;false;;;;;;
                                  -31941;3;1;false;false;127;0;85;;;
                                  -31944;1;0;false;false;;;;;;
                                  -31945;1;0;false;false;0;0;0;;;
                                  -31946;3;1;false;false;127;0;85;;;
                                  -31949;1;0;false;false;;;;;;
                                  -31950;1;0;false;false;0;0;0;;;
                                  -31951;1;0;false;false;;;;;;
                                  -31952;1;0;false;false;0;0;0;;;
                                  -31953;1;0;false;false;;;;;;
                                  -31954;2;0;false;false;0;0;0;;;
                                  -31956;1;0;false;false;;;;;;
                                  -31957;1;0;false;false;0;0;0;;;
                                  -31958;1;0;false;false;;;;;;
                                  -31959;1;0;false;false;0;0;0;;;
                                  -31960;1;0;false;false;;;;;;
                                  -31961;14;0;false;false;0;0;0;;;
                                  -31975;1;0;false;false;;;;;;
                                  -31976;4;0;false;false;0;0;0;;;
                                  -31980;1;0;false;false;;;;;;
                                  -31981;1;0;false;false;0;0;0;;;
                                  -31982;7;0;false;false;;;;;;
                                  -31989;10;0;false;false;0;0;0;;;
                                  -31999;1;0;false;false;;;;;;
                                  -32000;5;0;false;false;0;0;0;;;
                                  -32005;1;0;false;false;;;;;;
                                  -32006;1;0;false;false;0;0;0;;;
                                  -32007;1;0;false;false;;;;;;
                                  -32008;10;0;false;false;0;0;0;;;
                                  -32018;5;0;false;false;;;;;;
                                  -32023;3;1;false;false;127;0;85;;;
                                  -32026;1;0;false;false;;;;;;
                                  -32027;5;0;false;false;0;0;0;;;
                                  -32032;1;0;false;false;;;;;;
                                  -32033;1;0;false;false;0;0;0;;;
                                  -32034;1;0;false;false;;;;;;
                                  -32035;11;0;false;false;0;0;0;;;
                                  -32046;1;0;false;false;;;;;;
                                  -32047;1;0;false;false;0;0;0;;;
                                  -32048;1;0;false;false;;;;;;
                                  -32049;11;0;false;false;0;0;0;;;
                                  -32060;5;0;false;false;;;;;;
                                  -32065;3;1;false;false;127;0;85;;;
                                  -32068;1;0;false;false;;;;;;
                                  -32069;3;0;false;false;0;0;0;;;
                                  -32072;1;0;false;false;;;;;;
                                  -32073;1;0;false;false;0;0;0;;;
                                  -32074;1;0;false;false;;;;;;
                                  -32075;5;0;false;false;0;0;0;;;
                                  -32080;1;0;false;false;;;;;;
                                  -32081;1;0;false;false;0;0;0;;;
                                  -32082;1;0;false;false;;;;;;
                                  -32083;13;0;false;false;0;0;0;;;
                                  -32096;5;0;false;false;;;;;;
                                  -32101;3;1;false;false;127;0;85;;;
                                  -32104;1;0;false;false;;;;;;
                                  -32105;11;0;false;false;0;0;0;;;
                                  -32116;5;0;false;false;;;;;;
                                  -32121;33;0;false;false;63;127;95;;;
                                  -32154;3;0;false;false;;;;;;
                                  -32157;2;1;false;false;127;0;85;;;
                                  -32159;1;0;false;false;;;;;;
                                  -32160;4;0;false;false;0;0;0;;;
                                  -32164;1;0;false;false;;;;;;
                                  -32165;1;0;false;false;0;0;0;;;
                                  -32166;1;0;false;false;;;;;;
                                  -32167;12;0;false;false;0;0;0;;;
                                  -32179;1;0;false;false;;;;;;
                                  -32180;1;0;false;false;0;0;0;;;
                                  -32181;6;0;false;false;;;;;;
                                  -32187;8;1;false;false;127;0;85;;;
                                  -32195;1;0;false;false;0;0;0;;;
                                  -32196;5;0;false;false;;;;;;
                                  -32201;1;0;false;false;0;0;0;;;
                                  -32202;5;0;false;false;;;;;;
                                  -32207;50;0;false;false;63;127;95;;;
                                  -32257;3;0;false;false;;;;;;
                                  -32260;2;1;false;false;127;0;85;;;
                                  -32262;1;0;false;false;;;;;;
                                  -32263;6;0;false;false;0;0;0;;;
                                  -32269;1;0;false;false;;;;;;
                                  -32270;2;0;false;false;0;0;0;;;
                                  -32272;1;0;false;false;;;;;;
                                  -32273;14;0;false;false;0;0;0;;;
                                  -32287;1;0;false;false;;;;;;
                                  -32288;1;0;false;false;0;0;0;;;
                                  -32289;6;0;false;false;;;;;;
                                  -32295;5;1;false;false;127;0;85;;;
                                  -32300;1;0;false;false;0;0;0;;;
                                  -32301;5;0;false;false;;;;;;
                                  -32306;1;0;false;false;0;0;0;;;
                                  -32307;5;0;false;false;;;;;;
                                  -32312;28;0;false;false;63;127;95;;;
                                  -32340;3;0;false;false;;;;;;
                                  -32343;2;1;false;false;127;0;85;;;
                                  -32345;1;0;false;false;;;;;;
                                  -32346;10;0;false;false;0;0;0;;;
                                  -32356;1;0;false;false;;;;;;
                                  -32357;1;0;false;false;0;0;0;;;
                                  -32358;1;0;false;false;;;;;;
                                  -32359;6;0;false;false;0;0;0;;;
                                  -32365;1;0;false;false;;;;;;
                                  -32366;1;0;false;false;0;0;0;;;
                                  -32367;7;0;false;false;;;;;;
                                  -32374;27;0;false;false;63;127;95;;;
                                  -32401;4;0;false;false;;;;;;
                                  -32405;61;0;false;false;63;127;95;;;
                                  -32466;4;0;false;false;;;;;;
                                  -32470;30;0;false;false;63;127;95;;;
                                  -32500;4;0;false;false;;;;;;
                                  -32504;11;0;false;false;0;0;0;;;
                                  -32515;1;0;false;false;;;;;;
                                  -32516;10;0;false;false;0;0;0;;;
                                  -32526;1;0;false;false;;;;;;
                                  -32527;7;0;false;false;0;0;0;;;
                                  -32534;6;0;false;false;;;;;;
                                  -32540;9;0;false;false;0;0;0;;;
                                  -32549;1;0;false;false;;;;;;
                                  -32550;1;0;false;false;0;0;0;;;
                                  -32551;1;0;false;false;;;;;;
                                  -32552;6;0;false;false;0;0;0;;;
                                  -32558;5;0;false;false;;;;;;
                                  -32563;1;0;false;false;0;0;0;;;
                                  -32564;5;0;false;false;;;;;;
                                  -32569;22;0;false;false;63;127;95;;;
                                  -32591;3;0;false;false;;;;;;
                                  -32594;10;0;false;false;0;0;0;;;
                                  -32604;1;0;false;false;;;;;;
                                  -32605;1;0;false;false;0;0;0;;;
                                  -32606;1;0;false;false;;;;;;
                                  -32607;31;0;false;false;0;0;0;;;
                                  -32638;1;0;false;false;;;;;;
                                  -32639;20;0;false;false;0;0;0;;;
                                  -32659;5;0;false;false;;;;;;
                                  -32664;6;0;false;false;0;0;0;;;
                                  -32670;7;0;false;false;42;0;255;;;
                                  -32677;2;0;false;false;0;0;0;;;
                                  -32679;5;0;false;false;;;;;;
                                  -32684;37;0;false;false;0;0;0;;;
                                  -32721;1;0;false;false;;;;;;
                                  -32722;21;0;false;false;0;0;0;;;
                                  -32743;5;0;false;false;;;;;;
                                  -32748;2;1;false;false;127;0;85;;;
                                  -32750;1;0;false;false;;;;;;
                                  -32751;11;0;false;false;0;0;0;;;
                                  -32762;1;0;false;false;;;;;;
                                  -32763;2;0;false;false;0;0;0;;;
                                  -32765;1;0;false;false;;;;;;
                                  -32766;19;0;false;false;0;0;0;;;
                                  -32785;1;0;false;false;;;;;;
                                  -32786;1;0;false;false;0;0;0;;;
                                  -32787;6;0;false;false;;;;;;
                                  -32793;6;0;false;false;0;0;0;;;
                                  -32799;13;0;false;false;42;0;255;;;
                                  -32812;2;0;false;false;0;0;0;;;
                                  -32814;6;0;false;false;;;;;;
                                  -32820;18;0;false;false;0;0;0;;;
                                  -32838;5;0;false;false;;;;;;
                                  -32843;1;0;false;false;0;0;0;;;
                                  -32844;5;0;false;false;;;;;;
                                  -32849;2;1;false;false;127;0;85;;;
                                  -32851;1;0;false;false;;;;;;
                                  -32852;17;0;false;false;0;0;0;;;
                                  -32869;1;0;false;false;;;;;;
                                  -32870;1;0;false;false;0;0;0;;;
                                  -32871;1;0;false;false;;;;;;
                                  -32872;9;0;false;false;0;0;0;;;
                                  -32881;1;0;false;false;;;;;;
                                  -32882;2;0;false;false;0;0;0;;;
                                  -32884;1;0;false;false;;;;;;
                                  -32885;2;0;false;false;0;0;0;;;
                                  -32887;1;0;false;false;;;;;;
                                  -32888;1;0;false;false;0;0;0;;;
                                  -32889;6;0;false;false;;;;;;
                                  -32895;6;0;false;false;0;0;0;;;
                                  -32901;5;0;false;false;42;0;255;;;
                                  -32906;2;0;false;false;0;0;0;;;
                                  -32908;6;0;false;false;;;;;;
                                  -32914;1;0;false;false;0;0;0;;;
                                  -32915;5;0;false;false;;;;;;
                                  -32920;2;1;false;false;127;0;85;;;
                                  -32922;1;0;false;false;;;;;;
                                  -32923;17;0;false;false;0;0;0;;;
                                  -32940;1;0;false;false;;;;;;
                                  -32941;1;0;false;false;0;0;0;;;
                                  -32942;1;0;false;false;;;;;;
                                  -32943;11;0;false;false;0;0;0;;;
                                  -32954;1;0;false;false;;;;;;
                                  -32955;2;0;false;false;0;0;0;;;
                                  -32957;1;0;false;false;;;;;;
                                  -32958;2;0;false;false;0;0;0;;;
                                  -32960;1;0;false;false;;;;;;
                                  -32961;1;0;false;false;0;0;0;;;
                                  -32962;6;0;false;false;;;;;;
                                  -32968;6;0;false;false;0;0;0;;;
                                  -32974;5;0;false;false;42;0;255;;;
                                  -32979;2;0;false;false;0;0;0;;;
                                  -32981;6;0;false;false;;;;;;
                                  -32987;1;0;false;false;0;0;0;;;
                                  -32988;5;0;false;false;;;;;;
                                  -32993;2;1;false;false;127;0;85;;;
                                  -32995;1;0;false;false;;;;;;
                                  -32996;17;0;false;false;0;0;0;;;
                                  -33013;1;0;false;false;;;;;;
                                  -33014;1;0;false;false;0;0;0;;;
                                  -33015;6;0;false;false;;;;;;
                                  -33021;6;0;false;false;0;0;0;;;
                                  -33027;6;0;false;false;42;0;255;;;
                                  -33033;2;0;false;false;0;0;0;;;
                                  -33035;5;0;false;false;;;;;;
                                  -33040;1;0;false;false;0;0;0;;;
                                  -33041;5;0;false;false;;;;;;
                                  -33046;2;1;false;false;127;0;85;;;
                                  -33048;1;0;false;false;;;;;;
                                  -33049;17;0;false;false;0;0;0;;;
                                  -33066;1;0;false;false;;;;;;
                                  -33067;1;0;false;false;0;0;0;;;
                                  -33068;6;0;false;false;;;;;;
                                  -33074;6;0;false;false;0;0;0;;;
                                  -33080;10;0;false;false;42;0;255;;;
                                  -33090;2;0;false;false;0;0;0;;;
                                  -33092;5;0;false;false;;;;;;
                                  -33097;1;0;false;false;0;0;0;;;
                                  -33098;5;0;false;false;;;;;;
                                  -33103;6;0;false;false;0;0;0;;;
                                  -33109;3;0;false;false;42;0;255;;;
                                  -33112;2;0;false;false;0;0;0;;;
                                  -33114;6;0;false;false;;;;;;
                                  -33120;62;0;false;false;63;127;95;;;
                                  -33182;3;0;false;false;;;;;;
                                  -33185;7;0;false;false;0;0;0;;;
                                  -33192;1;0;false;false;;;;;;
                                  -33193;1;0;false;false;0;0;0;;;
                                  -33194;1;0;false;false;;;;;;
                                  -33195;13;0;false;false;0;0;0;;;
                                  -33208;1;0;false;false;;;;;;
                                  -33209;15;0;false;false;0;0;0;;;
                                  -33224;5;0;false;false;;;;;;
                                  -33229;67;0;false;false;63;127;95;;;
                                  -33296;3;0;false;false;;;;;;
                                  -33299;7;0;false;false;0;0;0;;;
                                  -33306;1;0;false;false;;;;;;
                                  -33307;1;0;false;false;0;0;0;;;
                                  -33308;1;0;false;false;;;;;;
                                  -33309;17;0;false;false;0;0;0;;;
                                  -33326;1;0;false;false;;;;;;
                                  -33327;11;0;false;false;0;0;0;;;
                                  -33338;5;0;false;false;;;;;;
                                  -33343;11;0;false;false;0;0;0;;;
                                  -33354;1;0;false;false;;;;;;
                                  -33355;10;0;false;false;0;0;0;;;
                                  -33365;1;0;false;false;;;;;;
                                  -33366;9;0;false;false;0;0;0;;;
                                  -33375;5;0;false;false;;;;;;
                                  -33380;2;1;false;false;127;0;85;;;
                                  -33382;1;0;false;false;;;;;;
                                  -33383;17;0;false;false;0;0;0;;;
                                  -33400;1;0;false;false;;;;;;
                                  -33401;1;0;false;false;0;0;0;;;
                                  -33402;1;0;false;false;;;;;;
                                  -33403;9;0;false;false;0;0;0;;;
                                  -33412;1;0;false;false;;;;;;
                                  -33413;2;0;false;false;0;0;0;;;
                                  -33415;1;0;false;false;;;;;;
                                  -33416;2;0;false;false;0;0;0;;;
                                  -33418;1;0;false;false;;;;;;
                                  -33419;1;0;false;false;0;0;0;;;
                                  -33420;6;0;false;false;;;;;;
                                  -33426;6;0;false;false;0;0;0;;;
                                  -33432;6;0;false;false;42;0;255;;;
                                  -33438;2;0;false;false;0;0;0;;;
                                  -33440;6;0;false;false;;;;;;
                                  -33446;1;0;false;false;0;0;0;;;
                                  -33447;5;0;false;false;;;;;;
                                  -33452;2;1;false;false;127;0;85;;;
                                  -33454;1;0;false;false;;;;;;
                                  -33455;17;0;false;false;0;0;0;;;
                                  -33472;1;0;false;false;;;;;;
                                  -33473;1;0;false;false;0;0;0;;;
                                  -33474;1;0;false;false;;;;;;
                                  -33475;11;0;false;false;0;0;0;;;
                                  -33486;1;0;false;false;;;;;;
                                  -33487;2;0;false;false;0;0;0;;;
                                  -33489;1;0;false;false;;;;;;
                                  -33490;2;0;false;false;0;0;0;;;
                                  -33492;1;0;false;false;;;;;;
                                  -33493;1;0;false;false;0;0;0;;;
                                  -33494;6;0;false;false;;;;;;
                                  -33500;6;0;false;false;0;0;0;;;
                                  -33506;6;0;false;false;42;0;255;;;
                                  -33512;2;0;false;false;0;0;0;;;
                                  -33514;6;0;false;false;;;;;;
                                  -33520;1;0;false;false;0;0;0;;;
                                  -33521;5;0;false;false;;;;;;
                                  -33526;2;1;false;false;127;0;85;;;
                                  -33528;1;0;false;false;;;;;;
                                  -33529;17;0;false;false;0;0;0;;;
                                  -33546;1;0;false;false;;;;;;
                                  -33547;1;0;false;false;0;0;0;;;
                                  -33548;6;0;false;false;;;;;;
                                  -33554;6;0;false;false;0;0;0;;;
                                  -33560;7;0;false;false;42;0;255;;;
                                  -33567;2;0;false;false;0;0;0;;;
                                  -33569;5;0;false;false;;;;;;
                                  -33574;1;0;false;false;0;0;0;;;
                                  -33575;8;0;false;false;;;;;;
                                  -33583;2;1;false;false;127;0;85;;;
                                  -33585;1;0;false;false;;;;;;
                                  -33586;17;0;false;false;0;0;0;;;
                                  -33603;1;0;false;false;;;;;;
                                  -33604;1;0;false;false;0;0;0;;;
                                  -33605;6;0;false;false;;;;;;
                                  -33611;6;0;false;false;0;0;0;;;
                                  -33617;11;0;false;false;42;0;255;;;
                                  -33628;2;0;false;false;0;0;0;;;
                                  -33630;5;0;false;false;;;;;;
                                  -33635;1;0;false;false;0;0;0;;;
                                  -33636;5;0;false;false;;;;;;
                                  -33641;6;0;false;false;0;0;0;;;
                                  -33647;3;0;false;false;42;0;255;;;
                                  -33650;2;0;false;false;0;0;0;;;
                                  -33652;5;0;false;false;;;;;;
                                  -33657;9;0;false;false;0;0;0;;;
                                  -33666;1;0;false;false;;;;;;
                                  -33667;1;0;false;false;0;0;0;;;
                                  -33668;1;0;false;false;;;;;;
                                  -33669;8;0;false;false;0;0;0;;;
                                  -33677;4;0;false;false;;;;;;
                                  -33681;1;0;false;false;0;0;0;;;
                                  -33682;4;0;false;false;;;;;;
                                  -33686;47;0;false;false;63;127;95;;;
                                  -33733;2;0;false;false;;;;;;
                                  -33735;2;1;false;false;127;0;85;;;
                                  -33737;1;0;false;false;;;;;;
                                  -33738;10;0;false;false;0;0;0;;;
                                  -33748;1;0;false;false;;;;;;
                                  -33749;1;0;false;false;0;0;0;;;
                                  -33750;1;0;false;false;;;;;;
                                  -33751;14;0;false;false;0;0;0;;;
                                  -33765;1;0;false;false;;;;;;
                                  -33766;1;0;false;false;0;0;0;;;
                                  -33767;5;0;false;false;;;;;;
                                  -33772;11;0;false;false;0;0;0;;;
                                  -33783;1;0;false;false;;;;;;
                                  -33784;10;0;false;false;0;0;0;;;
                                  -33794;1;0;false;false;;;;;;
                                  -33795;15;0;false;false;0;0;0;;;
                                  -33810;4;0;false;false;;;;;;
                                  -33814;1;0;false;false;0;0;0;;;
                                  -33815;4;0;false;false;;;;;;
                                  -33819;2;1;false;false;127;0;85;;;
                                  -33821;1;0;false;false;;;;;;
                                  -33822;15;0;false;false;0;0;0;;;
                                  -33837;1;0;false;false;;;;;;
                                  -33838;2;0;false;false;0;0;0;;;
                                  -33840;1;0;false;false;;;;;;
                                  -33841;4;1;false;false;127;0;85;;;
                                  -33845;1;0;false;false;0;0;0;;;
                                  -33846;1;0;false;false;;;;;;
                                  -33847;1;0;false;false;0;0;0;;;
                                  -33848;5;0;false;false;;;;;;
                                  -33853;6;0;false;false;0;0;0;;;
                                  -33859;3;0;false;false;42;0;255;;;
                                  -33862;2;0;false;false;0;0;0;;;
                                  -33864;4;0;false;false;;;;;;
                                  -33868;1;0;false;false;0;0;0;;;
                                  -33869;3;0;false;false;;;;;;
                                  -33872;1;0;false;false;0;0;0;;;
                                  -33873;3;0;false;false;;;;;;
                                  -33876;1;0;false;false;0;0;0;;;
                                  -33877;3;0;false;false;;;;;;
                                  -33880;3;0;false;false;63;95;191;;;
                                  -33883;4;0;false;false;;;;;;
                                  -33887;1;0;false;false;63;95;191;;;
                                  -33888;1;0;false;false;;;;;;
                                  -33889;3;0;false;false;63;95;191;;;
                                  -33892;1;0;false;false;;;;;;
                                  -33893;6;0;false;false;127;127;159;;;
                                  -33899;10;0;false;false;63;95;191;;;
                                  -33909;7;0;false;false;127;127;159;;;
                                  -33916;1;0;false;false;;;;;;
                                  -33917;5;0;false;false;63;95;191;;;
                                  -33922;1;0;false;false;;;;;;
                                  -33923;2;0;false;false;63;95;191;;;
                                  -33925;1;0;false;false;;;;;;
                                  -33926;4;0;false;false;63;95;191;;;
                                  -33930;1;0;false;false;;;;;;
                                  -33931;2;0;false;false;63;95;191;;;
                                  -33933;1;0;false;false;;;;;;
                                  -33934;5;0;false;false;63;95;191;;;
                                  -33939;1;0;false;false;;;;;;
                                  -33940;6;0;false;false;63;95;191;;;
                                  -33946;1;0;false;false;;;;;;
                                  -33947;7;0;false;false;63;95;191;;;
                                  -33954;1;0;false;false;;;;;;
                                  -33955;2;0;false;false;63;95;191;;;
                                  -33957;4;0;false;false;;;;;;
                                  -33961;1;0;false;false;63;95;191;;;
                                  -33962;1;0;false;false;;;;;;
                                  -33963;1;0;false;false;63;95;191;;;
                                  -33964;1;0;false;false;;;;;;
                                  -33965;7;0;false;false;63;95;191;;;
                                  -33972;2;0;false;false;;;;;;
                                  -33974;5;0;false;false;63;95;191;;;
                                  -33979;1;0;false;false;;;;;;
                                  -33980;3;0;false;false;63;95;191;;;
                                  -33983;1;0;false;false;;;;;;
                                  -33984;7;0;false;false;63;95;191;;;
                                  -33991;1;0;false;false;;;;;;
                                  -33992;5;0;false;false;63;95;191;;;
                                  -33997;1;0;false;false;;;;;;
                                  -33998;3;0;false;false;63;95;191;;;
                                  -34001;1;0;false;false;;;;;;
                                  -34002;4;0;false;false;63;95;191;;;
                                  -34006;1;0;false;false;;;;;;
                                  -34007;6;0;false;false;63;95;191;;;
                                  -34013;1;0;false;false;;;;;;
                                  -34014;3;0;false;false;63;95;191;;;
                                  -34017;1;0;false;false;;;;;;
                                  -34018;2;0;false;false;63;95;191;;;
                                  -34020;1;0;false;false;;;;;;
                                  -34021;8;0;false;false;63;95;191;;;
                                  -34029;1;0;false;false;;;;;;
                                  -34030;2;0;false;false;63;95;191;;;
                                  -34032;1;0;false;false;;;;;;
                                  -34033;5;0;false;false;63;95;191;;;
                                  -34038;5;0;false;false;;;;;;
                                  -34043;1;0;false;false;63;95;191;;;
                                  -34044;1;0;false;false;;;;;;
                                  -34045;7;0;false;false;63;95;191;;;
                                  -34052;1;0;false;false;;;;;;
                                  -34053;6;0;false;false;63;95;191;;;
                                  -34059;1;0;false;false;;;;;;
                                  -34060;7;0;false;false;63;95;191;;;
                                  -34067;1;0;false;false;;;;;;
                                  -34068;3;0;false;false;63;95;191;;;
                                  -34071;1;0;false;false;;;;;;
                                  -34072;5;0;false;false;63;95;191;;;
                                  -34077;1;0;false;false;;;;;;
                                  -34078;3;0;false;false;63;95;191;;;
                                  -34081;1;0;false;false;;;;;;
                                  -34082;6;0;false;false;63;95;191;;;
                                  -34088;1;0;false;false;;;;;;
                                  -34089;2;0;false;false;63;95;191;;;
                                  -34091;1;0;false;false;;;;;;
                                  -34092;3;0;false;false;63;95;191;;;
                                  -34095;1;0;false;false;;;;;;
                                  -34096;7;0;false;false;63;95;191;;;
                                  -34103;1;0;false;false;;;;;;
                                  -34104;7;0;false;false;63;95;191;;;
                                  -34111;5;0;false;false;;;;;;
                                  -34116;1;0;false;false;63;95;191;;;
                                  -34117;1;0;false;false;;;;;;
                                  -34118;6;0;false;false;63;95;191;;;
                                  -34124;1;0;false;false;;;;;;
                                  -34125;6;0;false;false;63;95;191;;;
                                  -34131;1;0;false;false;;;;;;
                                  -34132;9;0;false;false;63;95;191;;;
                                  -34141;4;0;false;false;;;;;;
                                  -34145;1;0;false;false;63;95;191;;;
                                  -34146;1;0;false;false;;;;;;
                                  -34147;3;0;false;false;127;127;159;;;
                                  -34150;4;0;false;false;;;;;;
                                  -34154;1;0;false;false;63;95;191;;;
                                  -34155;1;0;false;false;;;;;;
                                  -34156;4;0;false;false;127;127;159;;;
                                  -34160;5;0;false;false;63;95;191;;;
                                  -34165;4;0;false;false;127;127;159;;;
                                  -34169;1;0;false;false;;;;;;
                                  -34170;6;0;false;false;127;127;159;;;
                                  -34176;10;0;false;false;63;95;191;;;
                                  -34186;7;0;false;false;127;127;159;;;
                                  -34193;1;0;false;false;;;;;;
                                  -34194;2;0;false;false;63;95;191;;;
                                  -34196;1;0;false;false;;;;;;
                                  -34197;10;0;false;false;63;95;191;;;
                                  -34207;1;0;false;false;;;;;;
                                  -34208;2;0;false;false;63;95;191;;;
                                  -34210;1;0;false;false;;;;;;
                                  -34211;6;0;false;false;63;95;191;;;
                                  -34217;1;0;false;false;;;;;;
                                  -34218;1;0;false;false;63;95;191;;;
                                  -34219;1;0;false;false;;;;;;
                                  -34220;5;0;false;false;63;95;191;;;
                                  -34225;1;0;false;false;;;;;;
                                  -34226;6;0;false;false;63;95;191;;;
                                  -34232;1;0;false;false;;;;;;
                                  -34233;4;0;false;false;63;95;191;;;
                                  -34237;1;0;false;false;;;;;;
                                  -34238;5;0;false;false;63;95;191;;;
                                  -34243;1;0;false;false;;;;;;
                                  -34244;7;0;false;false;63;95;191;;;
                                  -34251;5;0;false;false;;;;;;
                                  -34256;1;0;false;false;63;95;191;;;
                                  -34257;1;0;false;false;;;;;;
                                  -34258;3;0;false;false;63;95;191;;;
                                  -34261;1;0;false;false;;;;;;
                                  -34262;4;0;false;false;63;95;191;;;
                                  -34266;1;0;false;false;;;;;;
                                  -34267;7;0;false;false;63;95;191;;;
                                  -34274;5;0;false;false;;;;;;
                                  -34279;2;0;false;false;63;95;191;;;
                                  -34281;3;0;false;false;;;;;;
                                  -34284;5;1;false;false;127;0;85;;;
                                  -34289;1;0;false;false;;;;;;
                                  -34290;10;0;false;false;0;0;0;;;
                                  -34300;1;0;false;false;;;;;;
                                  -34301;1;0;false;false;0;0;0;;;
                                  -34302;4;0;false;false;;;;;;
                                  -34306;7;1;false;false;127;0;85;;;
                                  -34313;1;0;false;false;;;;;;
                                  -34314;12;0;false;false;0;0;0;;;
                                  -34326;1;0;false;false;;;;;;
                                  -34327;7;0;false;false;0;0;0;;;
                                  -34334;4;0;false;false;;;;;;
                                  -34338;7;1;false;false;127;0;85;;;
                                  -34345;1;0;false;false;;;;;;
                                  -34346;3;1;false;false;127;0;85;;;
                                  -34349;1;0;false;false;;;;;;
                                  -34350;12;0;false;false;0;0;0;;;
                                  -34362;1;0;false;false;;;;;;
                                  -34363;51;0;false;false;63;127;95;;;
                                  -34414;2;0;false;false;;;;;;
                                  -34416;7;1;false;false;127;0;85;;;
                                  -34423;1;0;false;false;;;;;;
                                  -34424;3;1;false;false;127;0;85;;;
                                  -34427;1;0;false;false;;;;;;
                                  -34428;10;0;false;false;0;0;0;;;
                                  -34438;2;0;false;false;;;;;;
                                  -34440;52;0;false;false;63;127;95;;;
                                  -34492;9;0;false;false;;;;;;
                                  -34501;52;0;false;false;63;127;95;;;
                                  -34553;2;0;false;false;;;;;;
                                  -34555;7;1;false;false;127;0;85;;;
                                  -34562;1;0;false;false;;;;;;
                                  -34563;7;1;false;false;127;0;85;;;
                                  -34570;1;0;false;false;;;;;;
                                  -34571;8;0;false;false;0;0;0;;;
                                  -34579;1;0;false;false;;;;;;
                                  -34580;1;0;false;false;0;0;0;;;
                                  -34581;1;0;false;false;;;;;;
                                  -34582;5;1;false;false;127;0;85;;;
                                  -34587;1;0;false;false;0;0;0;;;
                                  -34588;6;0;false;false;;;;;;
                                  -34594;3;0;false;false;63;95;191;;;
                                  -34597;4;0;false;false;;;;;;
                                  -34601;1;0;false;false;63;95;191;;;
                                  -34602;1;0;false;false;;;;;;
                                  -34603;7;0;false;false;63;95;191;;;
                                  -34610;1;0;false;false;;;;;;
                                  -34611;1;0;false;false;63;95;191;;;
                                  -34612;1;0;false;false;;;;;;
                                  -34613;6;0;false;false;63;95;191;;;
                                  -34619;1;0;false;false;;;;;;
                                  -34620;4;0;false;false;63;95;191;;;
                                  -34624;1;0;false;false;;;;;;
                                  -34625;6;0;false;false;63;95;191;;;
                                  -34631;1;0;false;false;;;;;;
                                  -34632;7;0;false;false;63;95;191;;;
                                  -34639;1;0;false;false;;;;;;
                                  -34640;8;0;false;false;63;95;191;;;
                                  -34648;1;0;false;false;;;;;;
                                  -34649;2;0;false;false;63;95;191;;;
                                  -34651;1;0;false;false;;;;;;
                                  -34652;6;0;false;false;63;95;191;;;
                                  -34658;1;0;false;false;;;;;;
                                  -34659;7;0;false;false;63;95;191;;;
                                  -34666;4;0;false;false;;;;;;
                                  -34670;1;0;false;false;63;95;191;;;
                                  -34671;1;0;false;false;;;;;;
                                  -34672;2;0;false;false;63;95;191;;;
                                  -34674;1;0;false;false;;;;;;
                                  -34675;3;0;false;false;63;95;191;;;
                                  -34678;1;0;false;false;;;;;;
                                  -34679;9;0;false;false;63;95;191;;;
                                  -34688;2;0;false;false;;;;;;
                                  -34690;6;0;false;false;127;127;159;;;
                                  -34696;5;0;false;false;63;95;191;;;
                                  -34701;7;0;false;false;127;127;159;;;
                                  -34708;1;0;false;false;;;;;;
                                  -34709;3;0;false;false;63;95;191;;;
                                  -34712;1;0;false;false;;;;;;
                                  -34713;6;0;false;false;127;127;159;;;
                                  -34719;6;0;false;false;63;95;191;;;
                                  -34725;7;0;false;false;127;127;159;;;
                                  -34732;1;0;false;false;;;;;;
                                  -34733;3;0;false;false;63;95;191;;;
                                  -34736;1;0;false;false;;;;;;
                                  -34737;2;0;false;false;63;95;191;;;
                                  -34739;1;0;false;false;;;;;;
                                  -34740;3;0;false;false;63;95;191;;;
                                  -34743;1;0;false;false;;;;;;
                                  -34744;2;0;false;false;63;95;191;;;
                                  -34746;1;0;false;false;;;;;;
                                  -34747;7;0;false;false;63;95;191;;;
                                  -34754;1;0;false;false;;;;;;
                                  -34755;7;0;false;false;63;95;191;;;
                                  -34762;1;0;false;false;;;;;;
                                  -34763;6;0;false;false;63;95;191;;;
                                  -34769;4;0;false;false;;;;;;
                                  -34773;1;0;false;false;63;95;191;;;
                                  -34774;1;0;false;false;;;;;;
                                  -34775;3;0;false;false;127;127;159;;;
                                  -34778;4;0;false;false;;;;;;
                                  -34782;1;0;false;false;63;95;191;;;
                                  -34783;4;0;false;false;;;;;;
                                  -34787;1;0;false;false;63;95;191;;;
                                  -34788;1;0;false;false;;;;;;
                                  -34789;7;1;false;false;127;159;191;;;
                                  -34796;5;0;false;false;63;95;191;;;
                                  -34801;1;0;false;false;;;;;;
                                  -34802;5;0;false;false;63;95;191;;;
                                  -34807;1;0;false;false;;;;;;
                                  -34808;6;0;false;false;63;95;191;;;
                                  -34814;1;0;false;false;;;;;;
                                  -34815;2;0;false;false;63;95;191;;;
                                  -34817;1;0;false;false;;;;;;
                                  -34818;7;0;false;false;63;95;191;;;
                                  -34825;1;0;false;false;;;;;;
                                  -34826;2;0;false;false;63;95;191;;;
                                  -34828;1;0;false;false;;;;;;
                                  -34829;6;0;false;false;63;95;191;;;
                                  -34835;1;0;false;false;;;;;;
                                  -34836;1;0;false;false;63;95;191;;;
                                  -34837;1;0;false;false;;;;;;
                                  -34838;5;0;false;false;63;95;191;;;
                                  -34843;1;0;false;false;;;;;;
                                  -34844;4;0;false;false;63;95;191;;;
                                  -34848;1;0;false;false;;;;;;
                                  -34849;9;0;false;false;63;95;191;;;
                                  -34858;1;0;false;false;;;;;;
                                  -34859;2;0;false;false;63;95;191;;;
                                  -34861;1;0;false;false;;;;;;
                                  -34862;8;0;false;false;63;95;191;;;
                                  -34870;4;0;false;false;;;;;;
                                  -34874;1;0;false;false;63;95;191;;;
                                  -34875;1;0;false;false;;;;;;
                                  -34876;7;1;false;false;127;159;191;;;
                                  -34883;6;0;false;false;63;95;191;;;
                                  -34889;1;0;false;false;;;;;;
                                  -34890;6;0;false;false;63;95;191;;;
                                  -34896;1;0;false;false;;;;;;
                                  -34897;2;0;false;false;63;95;191;;;
                                  -34899;1;0;false;false;;;;;;
                                  -34900;7;0;false;false;63;95;191;;;
                                  -34907;1;0;false;false;;;;;;
                                  -34908;2;0;false;false;63;95;191;;;
                                  -34910;1;0;false;false;;;;;;
                                  -34911;5;0;false;false;63;95;191;;;
                                  -34916;4;0;false;false;;;;;;
                                  -34920;2;0;false;false;63;95;191;;;
                                  -34922;3;0;false;false;;;;;;
                                  -34925;6;1;false;false;127;0;85;;;
                                  -34931;1;0;false;false;;;;;;
                                  -34932;11;0;false;false;0;0;0;;;
                                  -34943;3;1;false;false;127;0;85;;;
                                  -34946;1;0;false;false;;;;;;
                                  -34947;6;0;false;false;0;0;0;;;
                                  -34953;1;0;false;false;;;;;;
                                  -34954;3;1;false;false;127;0;85;;;
                                  -34957;1;0;false;false;;;;;;
                                  -34958;7;0;false;false;0;0;0;;;
                                  -34965;1;0;false;false;;;;;;
                                  -34966;1;0;false;false;0;0;0;;;
                                  -34967;4;0;false;false;;;;;;
                                  -34971;6;0;false;false;0;0;0;;;
                                  -34977;1;0;false;false;;;;;;
                                  -34978;1;0;false;false;0;0;0;;;
                                  -34979;1;0;false;false;;;;;;
                                  -34980;3;1;false;false;127;0;85;;;
                                  -34983;1;0;false;false;;;;;;
                                  -34984;21;0;false;false;0;0;0;;;
                                  -35005;4;0;false;false;;;;;;
                                  -35009;11;0;false;false;0;0;0;;;
                                  -35020;1;0;false;false;;;;;;
                                  -35021;1;0;false;false;0;0;0;;;
                                  -35022;1;0;false;false;;;;;;
                                  -35023;6;0;false;false;0;0;0;;;
                                  -35029;4;0;false;false;;;;;;
                                  -35033;9;0;false;false;0;0;0;;;
                                  -35042;1;0;false;false;;;;;;
                                  -35043;1;0;false;false;0;0;0;;;
                                  -35044;1;0;false;false;;;;;;
                                  -35045;5;0;false;false;0;0;0;;;
                                  -35050;1;0;false;false;;;;;;
                                  -35051;1;0;false;false;0;0;0;;;
                                  -35052;1;0;false;false;;;;;;
                                  -35053;7;0;false;false;0;0;0;;;
                                  -35060;3;0;false;false;;;;;;
                                  -35063;1;0;false;false;0;0;0;;;
                                  -35064;3;0;false;false;;;;;;
                                  -35067;3;0;false;false;63;95;191;;;
                                  -35070;4;0;false;false;;;;;;
                                  -35074;1;0;false;false;63;95;191;;;
                                  -35075;1;0;false;false;;;;;;
                                  -35076;6;0;false;false;63;95;191;;;
                                  -35082;1;0;false;false;;;;;;
                                  -35083;3;0;false;false;63;95;191;;;
                                  -35086;1;0;false;false;;;;;;
                                  -35087;7;0;false;false;63;95;191;;;
                                  -35094;1;0;false;false;;;;;;
                                  -35095;4;0;false;false;63;95;191;;;
                                  -35099;1;0;false;false;;;;;;
                                  -35100;6;0;false;false;63;95;191;;;
                                  -35106;1;0;false;false;;;;;;
                                  -35107;2;0;false;false;63;95;191;;;
                                  -35109;1;0;false;false;;;;;;
                                  -35110;4;0;false;false;63;95;191;;;
                                  -35114;1;0;false;false;;;;;;
                                  -35115;7;0;false;false;63;95;191;;;
                                  -35122;1;0;false;false;;;;;;
                                  -35123;3;0;false;false;63;95;191;;;
                                  -35126;1;0;false;false;;;;;;
                                  -35127;2;0;false;false;63;95;191;;;
                                  -35129;1;0;false;false;;;;;;
                                  -35130;8;0;false;false;63;95;191;;;
                                  -35138;4;0;false;false;;;;;;
                                  -35142;1;0;false;false;63;95;191;;;
                                  -35143;1;0;false;false;;;;;;
                                  -35144;3;0;false;false;127;127;159;;;
                                  -35147;5;0;false;false;63;95;191;;;
                                  -35152;4;0;false;false;127;127;159;;;
                                  -35156;2;0;false;false;;;;;;
                                  -35158;6;0;false;false;127;127;159;;;
                                  -35164;10;0;false;false;63;95;191;;;
                                  -35174;7;0;false;false;127;127;159;;;
                                  -35181;1;0;false;false;;;;;;
                                  -35182;2;0;false;false;63;95;191;;;
                                  -35184;1;0;false;false;;;;;;
                                  -35185;3;0;false;false;63;95;191;;;
                                  -35188;1;0;false;false;;;;;;
                                  -35189;10;0;false;false;63;95;191;;;
                                  -35199;1;0;false;false;;;;;;
                                  -35200;2;0;false;false;63;95;191;;;
                                  -35202;1;0;false;false;;;;;;
                                  -35203;6;0;false;false;63;95;191;;;
                                  -35209;1;0;false;false;;;;;;
                                  -35210;1;0;false;false;63;95;191;;;
                                  -35211;1;0;false;false;;;;;;
                                  -35212;5;0;false;false;63;95;191;;;
                                  -35217;1;0;false;false;;;;;;
                                  -35218;6;0;false;false;63;95;191;;;
                                  -35224;1;0;false;false;;;;;;
                                  -35225;6;0;false;false;63;95;191;;;
                                  -35231;4;0;false;false;;;;;;
                                  -35235;1;0;false;false;63;95;191;;;
                                  -35236;1;0;false;false;;;;;;
                                  -35237;3;0;false;false;63;95;191;;;
                                  -35240;1;0;false;false;;;;;;
                                  -35241;6;0;false;false;63;95;191;;;
                                  -35247;1;0;false;false;;;;;;
                                  -35248;2;0;false;false;63;95;191;;;
                                  -35250;1;0;false;false;;;;;;
                                  -35251;7;0;false;false;63;95;191;;;
                                  -35258;4;0;false;false;;;;;;
                                  -35262;2;0;false;false;63;95;191;;;
                                  -35264;3;0;false;false;;;;;;
                                  -35267;6;1;false;false;127;0;85;;;
                                  -35273;1;0;false;false;;;;;;
                                  -35274;4;1;false;false;127;0;85;;;
                                  -35278;1;0;false;false;;;;;;
                                  -35279;7;0;false;false;0;0;0;;;
                                  -35286;1;0;false;false;;;;;;
                                  -35287;1;0;false;false;0;0;0;;;
                                  -35288;4;0;false;false;;;;;;
                                  -35292;2;1;false;false;127;0;85;;;
                                  -35294;1;0;false;false;;;;;;
                                  -35295;11;0;false;false;0;0;0;;;
                                  -35306;1;0;false;false;;;;;;
                                  -35307;1;0;false;false;0;0;0;;;
                                  -35308;5;0;false;false;;;;;;
                                  -35313;8;0;false;false;0;0;0;;;
                                  -35321;1;0;false;false;;;;;;
                                  -35322;1;0;false;false;0;0;0;;;
                                  -35323;1;0;false;false;;;;;;
                                  -35324;4;1;false;false;127;0;85;;;
                                  -35328;1;0;false;false;0;0;0;;;
                                  -35329;4;0;false;false;;;;;;
                                  -35333;1;0;false;false;0;0;0;;;
                                  -35334;3;0;false;false;;;;;;
                                  -35337;1;0;false;false;0;0;0;;;
                                  -35338;3;0;false;false;;;;;;
                                  -35341;3;0;false;false;63;95;191;;;
                                  -35344;5;0;false;false;;;;;;
                                  -35349;1;0;false;false;63;95;191;;;
                                  -35350;1;0;false;false;;;;;;
                                  -35351;7;0;false;false;63;95;191;;;
                                  -35358;1;0;false;false;;;;;;
                                  -35359;3;0;false;false;63;95;191;;;
                                  -35362;1;0;false;false;;;;;;
                                  -35363;6;0;false;false;63;95;191;;;
                                  -35369;1;0;false;false;;;;;;
                                  -35370;2;0;false;false;63;95;191;;;
                                  -35372;1;0;false;false;;;;;;
                                  -35373;10;0;false;false;63;95;191;;;
                                  -35383;1;0;false;false;;;;;;
                                  -35384;2;0;false;false;63;95;191;;;
                                  -35386;1;0;false;false;;;;;;
                                  -35387;6;0;false;false;63;95;191;;;
                                  -35393;4;0;false;false;;;;;;
                                  -35397;1;0;false;false;63;95;191;;;
                                  -35398;1;0;false;false;;;;;;
                                  -35399;8;1;false;false;127;159;191;;;
                                  -35407;3;0;false;false;63;95;191;;;
                                  -35410;1;0;false;false;;;;;;
                                  -35411;7;0;false;false;63;95;191;;;
                                  -35418;1;0;false;false;;;;;;
                                  -35419;6;0;false;false;63;95;191;;;
                                  -35425;1;0;false;false;;;;;;
                                  -35426;2;0;false;false;63;95;191;;;
                                  -35428;1;0;false;false;;;;;;
                                  -35429;10;0;false;false;63;95;191;;;
                                  -35439;1;0;false;false;;;;;;
                                  -35440;2;0;false;false;63;95;191;;;
                                  -35442;1;0;false;false;;;;;;
                                  -35443;5;0;false;false;63;95;191;;;
                                  -35448;4;0;false;false;;;;;;
                                  -35452;2;0;false;false;63;95;191;;;
                                  -35454;3;0;false;false;;;;;;
                                  -35457;6;1;false;false;127;0;85;;;
                                  -35463;1;0;false;false;;;;;;
                                  -35464;3;1;false;false;127;0;85;;;
                                  -35467;1;0;false;false;;;;;;
                                  -35468;14;0;false;false;0;0;0;;;
                                  -35482;1;0;false;false;;;;;;
                                  -35483;1;0;false;false;0;0;0;;;
                                  -35484;4;0;false;false;;;;;;
                                  -35488;6;1;false;false;127;0;85;;;
                                  -35494;1;0;false;false;;;;;;
                                  -35495;9;0;false;false;0;0;0;;;
                                  -35504;1;0;false;false;;;;;;
                                  -35505;1;0;false;false;0;0;0;;;
                                  -35506;1;0;false;false;;;;;;
                                  -35507;12;0;false;false;0;0;0;;;
                                  -35519;3;0;false;false;;;;;;
                                  -35522;1;0;false;false;0;0;0;;;
                                  -35523;4;0;false;false;;;;;;
                                  -35527;3;0;false;false;63;95;191;;;
                                  -35530;5;0;false;false;;;;;;
                                  -35535;1;0;false;false;63;95;191;;;
                                  -35536;1;0;false;false;;;;;;
                                  -35537;7;0;false;false;63;95;191;;;
                                  -35544;1;0;false;false;;;;;;
                                  -35545;3;0;false;false;63;95;191;;;
                                  -35548;1;0;false;false;;;;;;
                                  -35549;6;0;false;false;63;95;191;;;
                                  -35555;1;0;false;false;;;;;;
                                  -35556;5;0;false;false;63;95;191;;;
                                  -35561;1;0;false;false;;;;;;
                                  -35562;7;0;false;false;63;95;191;;;
                                  -35569;1;0;false;false;;;;;;
                                  -35570;7;0;false;false;63;95;191;;;
                                  -35577;1;0;false;false;;;;;;
                                  -35578;1;0;false;false;63;95;191;;;
                                  -35579;1;0;false;false;;;;;;
                                  -35580;5;0;false;false;63;95;191;;;
                                  -35585;1;0;false;false;;;;;;
                                  -35586;4;0;false;false;63;95;191;;;
                                  -35590;1;0;false;false;;;;;;
                                  -35591;3;0;false;false;63;95;191;;;
                                  -35594;1;0;false;false;;;;;;
                                  -35595;5;0;false;false;63;95;191;;;
                                  -35600;1;0;false;false;;;;;;
                                  -35601;2;0;false;false;63;95;191;;;
                                  -35603;5;0;false;false;;;;;;
                                  -35608;1;0;false;false;63;95;191;;;
                                  -35609;1;0;false;false;;;;;;
                                  -35610;3;0;false;false;63;95;191;;;
                                  -35613;1;0;false;false;;;;;;
                                  -35614;6;0;false;false;63;95;191;;;
                                  -35620;1;0;false;false;;;;;;
                                  -35621;5;0;false;false;63;95;191;;;
                                  -35626;1;0;false;false;;;;;;
                                  -35627;4;0;false;false;63;95;191;;;
                                  -35631;1;0;false;false;;;;;;
                                  -35632;2;0;false;false;63;95;191;;;
                                  -35634;1;0;false;false;;;;;;
                                  -35635;5;0;false;false;63;95;191;;;
                                  -35640;1;0;false;false;;;;;;
                                  -35641;7;0;false;false;63;95;191;;;
                                  -35648;1;0;false;false;;;;;;
                                  -35649;6;0;false;false;63;95;191;;;
                                  -35655;4;0;false;false;;;;;;
                                  -35659;1;0;false;false;63;95;191;;;
                                  -35660;1;0;false;false;;;;;;
                                  -35661;8;1;false;false;127;159;191;;;
                                  -35669;3;0;false;false;63;95;191;;;
                                  -35672;1;0;false;false;;;;;;
                                  -35673;7;0;false;false;63;95;191;;;
                                  -35680;1;0;false;false;;;;;;
                                  -35681;6;0;false;false;63;95;191;;;
                                  -35687;1;0;false;false;;;;;;
                                  -35688;5;0;false;false;63;95;191;;;
                                  -35693;1;0;false;false;;;;;;
                                  -35694;7;0;false;false;63;95;191;;;
                                  -35701;1;0;false;false;;;;;;
                                  -35702;6;0;false;false;63;95;191;;;
                                  -35708;4;0;false;false;;;;;;
                                  -35712;2;0;false;false;63;95;191;;;
                                  -35714;3;0;false;false;;;;;;
                                  -35717;6;1;false;false;127;0;85;;;
                                  -35723;1;0;false;false;;;;;;
                                  -35724;3;1;false;false;127;0;85;;;
                                  -35727;1;0;false;false;;;;;;
                                  -35728;10;0;false;false;0;0;0;;;
                                  -35738;1;0;false;false;;;;;;
                                  -35739;1;0;false;false;0;0;0;;;
                                  -35740;4;0;false;false;;;;;;
                                  -35744;6;1;false;false;127;0;85;;;
                                  -35750;1;0;false;false;;;;;;
                                  -35751;12;0;false;false;0;0;0;;;
                                  -35763;3;0;false;false;;;;;;
                                  -35766;1;0;false;false;0;0;0;;;
                                  -35767;3;0;false;false;;;;;;
                                  -35770;3;0;false;false;63;95;191;;;
                                  -35773;4;0;false;false;;;;;;
                                  -35777;1;0;false;false;63;95;191;;;
                                  -35778;1;0;false;false;;;;;;
                                  -35779;7;0;false;false;63;95;191;;;
                                  -35786;1;0;false;false;;;;;;
                                  -35787;7;0;false;false;63;95;191;;;
                                  -35794;1;0;false;false;;;;;;
                                  -35795;3;0;false;false;63;95;191;;;
                                  -35798;1;0;false;false;;;;;;
                                  -35799;6;0;false;false;63;95;191;;;
                                  -35805;1;0;false;false;;;;;;
                                  -35806;2;0;false;false;63;95;191;;;
                                  -35808;1;0;false;false;;;;;;
                                  -35809;7;0;false;false;63;95;191;;;
                                  -35816;4;0;false;false;;;;;;
                                  -35820;1;0;false;false;63;95;191;;;
                                  -35821;1;0;false;false;;;;;;
                                  -35822;8;1;false;false;127;159;191;;;
                                  -35830;1;0;false;false;63;95;191;;;
                                  -35831;1;0;false;false;;;;;;
                                  -35832;7;0;false;false;63;95;191;;;
                                  -35839;1;0;false;false;;;;;;
                                  -35840;10;0;false;false;63;95;191;;;
                                  -35850;1;0;false;false;;;;;;
                                  -35851;7;0;false;false;63;95;191;;;
                                  -35858;1;0;false;false;;;;;;
                                  -35859;2;0;false;false;63;95;191;;;
                                  -35861;1;0;false;false;;;;;;
                                  -35862;3;0;false;false;63;95;191;;;
                                  -35865;1;0;false;false;;;;;;
                                  -35866;3;0;false;false;63;95;191;;;
                                  -35869;1;0;false;false;;;;;;
                                  -35870;6;0;false;false;63;95;191;;;
                                  -35876;1;0;false;false;;;;;;
                                  -35877;2;0;false;false;63;95;191;;;
                                  -35879;1;0;false;false;;;;;;
                                  -35880;6;0;false;false;63;95;191;;;
                                  -35886;4;0;false;false;;;;;;
                                  -35890;2;0;false;false;63;95;191;;;
                                  -35892;3;0;false;false;;;;;;
                                  -35895;6;1;false;false;127;0;85;;;
                                  -35901;1;0;false;false;;;;;;
                                  -35902;7;1;false;false;127;0;85;;;
                                  -35909;1;0;false;false;;;;;;
                                  -35910;10;0;false;false;0;0;0;;;
                                  -35920;1;0;false;false;;;;;;
                                  -35921;1;0;false;false;0;0;0;;;
                                  -35922;4;0;false;false;;;;;;
                                  -35926;6;1;false;false;127;0;85;;;
                                  -35932;1;0;false;false;;;;;;
                                  -35933;9;0;false;false;0;0;0;;;
                                  -35942;3;0;false;false;;;;;;
                                  -35945;1;0;false;false;0;0;0;;;
                                  -35946;3;0;false;false;;;;;;
                                  -35949;3;0;false;false;63;95;191;;;
                                  -35952;4;0;false;false;;;;;;
                                  -35956;1;0;false;false;63;95;191;;;
                                  -35957;1;0;false;false;;;;;;
                                  -35958;7;0;false;false;63;95;191;;;
                                  -35965;1;0;false;false;;;;;;
                                  -35966;3;0;false;false;63;95;191;;;
                                  -35969;1;0;false;false;;;;;;
                                  -35970;7;0;false;false;63;95;191;;;
                                  -35977;2;0;false;false;;;;;;
                                  -35979;6;0;false;false;127;127;159;;;
                                  -35985;7;0;false;false;63;95;191;;;
                                  -35992;7;0;false;false;127;127;159;;;
                                  -35999;1;0;false;false;;;;;;
                                  -36000;4;0;false;false;63;95;191;;;
                                  -36004;1;0;false;false;;;;;;
                                  -36005;2;0;false;false;63;95;191;;;
                                  -36007;1;0;false;false;;;;;;
                                  -36008;6;0;false;false;63;95;191;;;
                                  -36014;1;0;false;false;;;;;;
                                  -36015;6;0;false;false;63;95;191;;;
                                  -36021;1;0;false;false;;;;;;
                                  -36022;6;0;false;false;127;127;159;;;
                                  -36028;10;0;false;false;63;95;191;;;
                                  -36038;7;0;false;false;127;127;159;;;
                                  -36045;5;0;false;false;;;;;;
                                  -36050;1;0;false;false;63;95;191;;;
                                  -36051;1;0;false;false;;;;;;
                                  -36052;2;0;false;false;63;95;191;;;
                                  -36054;1;0;false;false;;;;;;
                                  -36055;10;0;false;false;63;95;191;;;
                                  -36065;1;0;false;false;;;;;;
                                  -36066;2;0;false;false;63;95;191;;;
                                  -36068;1;0;false;false;;;;;;
                                  -36069;6;0;false;false;63;95;191;;;
                                  -36075;1;0;false;false;;;;;;
                                  -36076;1;0;false;false;63;95;191;;;
                                  -36077;1;0;false;false;;;;;;
                                  -36078;5;0;false;false;63;95;191;;;
                                  -36083;1;0;false;false;;;;;;
                                  -36084;7;0;false;false;63;95;191;;;
                                  -36091;4;0;false;false;;;;;;
                                  -36095;1;0;false;false;63;95;191;;;
                                  -36096;4;0;false;false;;;;;;
                                  -36100;1;0;false;false;63;95;191;;;
                                  -36101;1;0;false;false;;;;;;
                                  -36102;8;1;false;false;127;159;191;;;
                                  -36110;3;0;false;false;63;95;191;;;
                                  -36113;1;0;false;false;;;;;;
                                  -36114;6;0;false;false;63;95;191;;;
                                  -36120;4;0;false;false;;;;;;
                                  -36124;2;0;false;false;63;95;191;;;
                                  -36126;3;0;false;false;;;;;;
                                  -36129;6;1;false;false;127;0;85;;;
                                  -36135;1;0;false;false;;;;;;
                                  -36136;6;0;false;false;0;0;0;;;
                                  -36142;1;0;false;false;;;;;;
                                  -36143;10;0;false;false;0;0;0;;;
                                  -36153;1;0;false;false;;;;;;
                                  -36154;1;0;false;false;0;0;0;;;
                                  -36155;4;0;false;false;;;;;;
                                  -36159;6;1;false;false;127;0;85;;;
                                  -36165;1;0;false;false;;;;;;
                                  -36166;18;0;false;false;0;0;0;;;
                                  -36184;3;0;false;false;;;;;;
                                  -36187;1;0;false;false;0;0;0;;;
                                  -36188;3;0;false;false;;;;;;
                                  -36191;3;0;false;false;63;95;191;;;
                                  -36194;4;0;false;false;;;;;;
                                  -36198;1;0;false;false;63;95;191;;;
                                  -36199;1;0;false;false;;;;;;
                                  -36200;7;0;false;false;63;95;191;;;
                                  -36207;1;0;false;false;;;;;;
                                  -36208;3;0;false;false;63;95;191;;;
                                  -36211;1;0;false;false;;;;;;
                                  -36212;5;0;false;false;63;95;191;;;
                                  -36217;1;0;false;false;;;;;;
                                  -36218;6;0;false;false;63;95;191;;;
                                  -36224;1;0;false;false;;;;;;
                                  -36225;2;0;false;false;63;95;191;;;
                                  -36227;1;0;false;false;;;;;;
                                  -36228;3;0;false;false;63;95;191;;;
                                  -36231;1;0;false;false;;;;;;
                                  -36232;5;0;false;false;63;95;191;;;
                                  -36237;4;0;false;false;;;;;;
                                  -36241;2;0;false;false;63;95;191;;;
                                  -36243;3;0;false;false;;;;;;
                                  -36246;4;1;false;false;127;0;85;;;
                                  -36250;1;0;false;false;;;;;;
                                  -36251;12;0;false;false;0;0;0;;;
                                  -36263;1;0;false;false;;;;;;
                                  -36264;7;0;false;false;0;0;0;;;
                                  -36271;1;0;false;false;;;;;;
                                  -36272;1;0;false;false;0;0;0;;;
                                  -36273;4;0;false;false;;;;;;
                                  -36277;22;0;false;false;0;0;0;;;
                                  -36299;3;0;false;false;;;;;;
                                  -36302;1;0;false;false;0;0;0;;;
                                  -36303;4;0;false;false;;;;;;
                                  -36307;3;0;false;false;63;95;191;;;
                                  -36310;4;0;false;false;;;;;;
                                  -36314;1;0;false;false;63;95;191;;;
                                  -36315;1;0;false;false;;;;;;
                                  -36316;7;0;false;false;63;95;191;;;
                                  -36323;1;0;false;false;;;;;;
                                  -36324;3;0;false;false;63;95;191;;;
                                  -36327;1;0;false;false;;;;;;
                                  -36328;5;0;false;false;63;95;191;;;
                                  -36333;1;0;false;false;;;;;;
                                  -36334;6;0;false;false;63;95;191;;;
                                  -36340;1;0;false;false;;;;;;
                                  -36341;2;0;false;false;63;95;191;;;
                                  -36343;1;0;false;false;;;;;;
                                  -36344;3;0;false;false;63;95;191;;;
                                  -36347;1;0;false;false;;;;;;
                                  -36348;4;0;false;false;63;95;191;;;
                                  -36352;1;0;false;false;;;;;;
                                  -36353;2;0;false;false;63;95;191;;;
                                  -36355;1;0;false;false;;;;;;
                                  -36356;3;0;false;false;63;95;191;;;
                                  -36359;1;0;false;false;;;;;;
                                  -36360;9;0;false;false;63;95;191;;;
                                  -36369;1;0;false;false;;;;;;
                                  -36370;7;0;false;false;63;95;191;;;
                                  -36377;4;0;false;false;;;;;;
                                  -36381;1;0;false;false;63;95;191;;;
                                  -36382;1;0;false;false;;;;;;
                                  -36383;2;0;false;false;63;95;191;;;
                                  -36385;1;0;false;false;;;;;;
                                  -36386;7;0;false;false;63;95;191;;;
                                  -36393;1;0;false;false;;;;;;
                                  -36394;2;0;false;false;63;95;191;;;
                                  -36396;1;0;false;false;;;;;;
                                  -36397;8;0;false;false;63;95;191;;;
                                  -36405;1;0;false;false;;;;;;
                                  -36406;2;0;false;false;63;95;191;;;
                                  -36408;1;0;false;false;;;;;;
                                  -36409;8;0;false;false;63;95;191;;;
                                  -36417;1;0;false;false;;;;;;
                                  -36418;14;0;false;false;63;95;191;;;
                                  -36432;4;0;false;false;;;;;;
                                  -36436;1;0;false;false;63;95;191;;;
                                  -36437;1;0;false;false;;;;;;
                                  -36438;3;0;false;false;127;127;159;;;
                                  -36441;4;0;false;false;;;;;;
                                  -36445;1;0;false;false;63;95;191;;;
                                  -36446;4;0;false;false;;;;;;
                                  -36450;1;0;false;false;63;95;191;;;
                                  -36451;1;0;false;false;;;;;;
                                  -36452;7;1;false;false;127;159;191;;;
                                  -36459;6;0;false;false;63;95;191;;;
                                  -36465;1;0;false;false;;;;;;
                                  -36466;4;0;false;false;63;95;191;;;
                                  -36470;1;0;false;false;;;;;;
                                  -36471;2;0;false;false;63;95;191;;;
                                  -36473;1;0;false;false;;;;;;
                                  -36474;6;0;false;false;63;95;191;;;
                                  -36480;4;0;false;false;;;;;;
                                  -36484;1;0;false;false;63;95;191;;;
                                  -36485;1;0;false;false;;;;;;
                                  -36486;7;1;false;false;127;159;191;;;
                                  -36493;6;0;false;false;63;95;191;;;
                                  -36499;1;0;false;false;;;;;;
                                  -36500;6;0;false;false;63;95;191;;;
                                  -36506;1;0;false;false;;;;;;
                                  -36507;2;0;false;false;63;95;191;;;
                                  -36509;1;0;false;false;;;;;;
                                  -36510;3;0;false;false;63;95;191;;;
                                  -36513;1;0;false;false;;;;;;
                                  -36514;8;0;false;false;63;95;191;;;
                                  -36522;1;0;false;false;;;;;;
                                  -36523;4;0;false;false;63;95;191;;;
                                  -36527;1;0;false;false;;;;;;
                                  -36528;2;0;false;false;63;95;191;;;
                                  -36530;1;0;false;false;;;;;;
                                  -36531;6;0;false;false;63;95;191;;;
                                  -36537;1;0;false;false;;;;;;
                                  -36538;8;0;false;false;63;95;191;;;
                                  -36546;1;0;false;false;;;;;;
                                  -36547;3;0;false;false;63;95;191;;;
                                  -36550;4;0;false;false;;;;;;
                                  -36554;2;0;false;false;63;95;191;;;
                                  -36556;3;0;false;false;;;;;;
                                  -36559;4;1;false;false;127;0;85;;;
                                  -36563;1;0;false;false;;;;;;
                                  -36564;12;0;false;false;0;0;0;;;
                                  -36576;1;0;false;false;;;;;;
                                  -36577;7;0;false;false;0;0;0;;;
                                  -36584;1;0;false;false;;;;;;
                                  -36585;3;1;false;false;127;0;85;;;
                                  -36588;1;0;false;false;;;;;;
                                  -36589;7;0;false;false;0;0;0;;;
                                  -36596;1;0;false;false;;;;;;
                                  -36597;1;0;false;false;0;0;0;;;
                                  -36598;4;0;false;false;;;;;;
                                  -36602;2;1;false;false;127;0;85;;;
                                  -36604;1;0;false;false;;;;;;
                                  -36605;7;0;false;false;0;0;0;;;
                                  -36612;1;0;false;false;;;;;;
                                  -36613;1;0;false;false;0;0;0;;;
                                  -36614;1;0;false;false;;;;;;
                                  -36615;1;0;false;false;0;0;0;;;
                                  -36616;1;0;false;false;;;;;;
                                  -36617;2;0;false;false;0;0;0;;;
                                  -36619;1;0;false;false;;;;;;
                                  -36620;6;0;false;false;0;0;0;;;
                                  -36626;1;0;false;false;;;;;;
                                  -36627;1;0;false;false;0;0;0;;;
                                  -36628;1;0;false;false;;;;;;
                                  -36629;16;0;false;false;0;0;0;;;
                                  -36645;1;0;false;false;;;;;;
                                  -36646;1;0;false;false;0;0;0;;;
                                  -36647;5;0;false;false;;;;;;
                                  -36652;6;1;false;false;127;0;85;;;
                                  -36658;1;0;false;false;0;0;0;;;
                                  -36659;4;0;false;false;;;;;;
                                  -36663;1;0;false;false;0;0;0;;;
                                  -36664;4;0;false;false;;;;;;
                                  -36668;21;0;false;false;0;0;0;;;
                                  -36689;1;0;false;false;;;;;;
                                  -36690;8;0;false;false;0;0;0;;;
                                  -36698;3;0;false;false;;;;;;
                                  -36701;1;0;false;false;0;0;0;;;
                                  -36702;4;0;false;false;;;;;;
                                  -36706;3;0;false;false;63;95;191;;;
                                  -36709;4;0;false;false;;;;;;
                                  -36713;1;0;false;false;63;95;191;;;
                                  -36714;1;0;false;false;;;;;;
                                  -36715;7;0;false;false;63;95;191;;;
                                  -36722;1;0;false;false;;;;;;
                                  -36723;3;0;false;false;63;95;191;;;
                                  -36726;1;0;false;false;;;;;;
                                  -36727;5;0;false;false;63;95;191;;;
                                  -36732;1;0;false;false;;;;;;
                                  -36733;3;0;false;false;63;95;191;;;
                                  -36736;1;0;false;false;;;;;;
                                  -36737;2;0;false;false;63;95;191;;;
                                  -36739;1;0;false;false;;;;;;
                                  -36740;3;0;false;false;63;95;191;;;
                                  -36743;1;0;false;false;;;;;;
                                  -36744;5;0;false;false;63;95;191;;;
                                  -36749;4;0;false;false;;;;;;
                                  -36753;2;0;false;false;63;95;191;;;
                                  -36755;3;0;false;false;;;;;;
                                  -36758;4;1;false;false;127;0;85;;;
                                  -36762;1;0;false;false;;;;;;
                                  -36763;6;0;false;false;0;0;0;;;
                                  -36769;3;1;false;false;127;0;85;;;
                                  -36772;1;0;false;false;;;;;;
                                  -36773;2;0;false;false;0;0;0;;;
                                  -36775;1;0;false;false;;;;;;
                                  -36776;1;0;false;false;0;0;0;;;
                                  -36777;4;0;false;false;;;;;;
                                  -36781;17;0;false;false;0;0;0;;;
                                  -36798;3;0;false;false;;;;;;
                                  -36801;1;0;false;false;0;0;0;;;
                                  -36802;3;0;false;false;;;;;;
                                  -36805;3;0;false;false;63;95;191;;;
                                  -36808;4;0;false;false;;;;;;
                                  -36812;1;0;false;false;63;95;191;;;
                                  -36813;1;0;false;false;;;;;;
                                  -36814;7;0;false;false;63;95;191;;;
                                  -36821;1;0;false;false;;;;;;
                                  -36822;3;0;false;false;63;95;191;;;
                                  -36825;1;0;false;false;;;;;;
                                  -36826;5;0;false;false;63;95;191;;;
                                  -36831;1;0;false;false;;;;;;
                                  -36832;9;0;false;false;63;95;191;;;
                                  -36841;1;0;false;false;;;;;;
                                  -36842;2;0;false;false;63;95;191;;;
                                  -36844;1;0;false;false;;;;;;
                                  -36845;3;0;false;false;63;95;191;;;
                                  -36848;1;0;false;false;;;;;;
                                  -36849;5;0;false;false;63;95;191;;;
                                  -36854;4;0;false;false;;;;;;
                                  -36858;2;0;false;false;63;95;191;;;
                                  -36860;3;0;false;false;;;;;;
                                  -36863;4;1;false;false;127;0;85;;;
                                  -36867;1;0;false;false;;;;;;
                                  -36868;6;0;false;false;0;0;0;;;
                                  -36874;4;1;false;false;127;0;85;;;
                                  -36878;1;0;false;false;;;;;;
                                  -36879;2;0;false;false;0;0;0;;;
                                  -36881;1;0;false;false;;;;;;
                                  -36882;1;0;false;false;0;0;0;;;
                                  -36883;4;0;false;false;;;;;;
                                  -36887;17;0;false;false;0;0;0;;;
                                  -36904;3;0;false;false;;;;;;
                                  -36907;1;0;false;false;0;0;0;;;
                                  -36908;6;0;false;false;;;;;;
                                  -36914;3;0;false;false;63;95;191;;;
                                  -36917;4;0;false;false;;;;;;
                                  -36921;1;0;false;false;63;95;191;;;
                                  -36922;1;0;false;false;;;;;;
                                  -36923;7;0;false;false;63;95;191;;;
                                  -36930;1;0;false;false;;;;;;
                                  -36931;3;0;false;false;63;95;191;;;
                                  -36934;1;0;false;false;;;;;;
                                  -36935;9;0;false;false;63;95;191;;;
                                  -36944;1;0;false;false;;;;;;
                                  -36945;4;0;false;false;63;95;191;;;
                                  -36949;1;0;false;false;;;;;;
                                  -36950;4;0;false;false;63;95;191;;;
                                  -36954;1;0;false;false;;;;;;
                                  -36955;2;0;false;false;63;95;191;;;
                                  -36957;1;0;false;false;;;;;;
                                  -36958;3;0;false;false;63;95;191;;;
                                  -36961;1;0;false;false;;;;;;
                                  -36962;5;0;false;false;63;95;191;;;
                                  -36967;4;0;false;false;;;;;;
                                  -36971;1;0;false;false;63;95;191;;;
                                  -36972;1;0;false;false;;;;;;
                                  -36973;3;0;false;false;127;127;159;;;
                                  -36976;4;0;false;false;;;;;;
                                  -36980;1;0;false;false;63;95;191;;;
                                  -36981;4;0;false;false;;;;;;
                                  -36985;1;0;false;false;63;95;191;;;
                                  -36986;1;0;false;false;;;;;;
                                  -36987;7;1;false;false;127;159;191;;;
                                  -36994;4;0;false;false;63;95;191;;;
                                  -36998;1;0;false;false;;;;;;
                                  -36999;4;0;false;false;63;95;191;;;
                                  -37003;1;0;false;false;;;;;;
                                  -37004;4;0;false;false;63;95;191;;;
                                  -37008;1;0;false;false;;;;;;
                                  -37009;2;0;false;false;63;95;191;;;
                                  -37011;1;0;false;false;;;;;;
                                  -37012;6;0;false;false;63;95;191;;;
                                  -37018;1;0;false;false;;;;;;
                                  -37019;4;0;false;false;63;95;191;;;
                                  -37023;1;0;false;false;;;;;;
                                  -37024;3;0;false;false;63;95;191;;;
                                  -37027;1;0;false;false;;;;;;
                                  -37028;7;0;false;false;63;95;191;;;
                                  -37035;1;0;false;false;;;;;;
                                  -37036;4;0;false;false;63;95;191;;;
                                  -37040;1;0;false;false;;;;;;
                                  -37041;6;0;false;false;63;95;191;;;
                                  -37047;4;0;false;false;;;;;;
                                  -37051;1;0;false;false;63;95;191;;;
                                  -37052;2;0;false;false;;;;;;
                                  -37054;4;0;false;false;63;95;191;;;
                                  -37058;1;0;false;false;;;;;;
                                  -37059;6;0;false;false;63;95;191;;;
                                  -37065;1;0;false;false;;;;;;
                                  -37066;6;0;false;false;63;95;191;;;
                                  -37072;1;0;false;false;;;;;;
                                  -37073;2;0;false;false;63;95;191;;;
                                  -37075;1;0;false;false;;;;;;
                                  -37076;7;0;false;false;63;95;191;;;
                                  -37083;1;0;false;false;;;;;;
                                  -37084;5;0;false;false;63;95;191;;;
                                  -37089;1;0;false;false;;;;;;
                                  -37090;20;0;false;false;63;95;191;;;
                                  -37110;4;0;false;false;;;;;;
                                  -37114;1;0;false;false;63;95;191;;;
                                  -37115;1;0;false;false;;;;;;
                                  -37116;7;1;false;false;127;159;191;;;
                                  -37123;10;0;false;false;63;95;191;;;
                                  -37133;1;0;false;false;;;;;;
                                  -37134;6;0;false;false;63;95;191;;;
                                  -37140;1;0;false;false;;;;;;
                                  -37141;2;0;false;false;63;95;191;;;
                                  -37143;1;0;false;false;;;;;;
                                  -37144;3;0;false;false;63;95;191;;;
                                  -37147;1;0;false;false;;;;;;
                                  -37148;5;0;false;false;63;95;191;;;
                                  -37153;1;0;false;false;;;;;;
                                  -37154;1;0;false;false;63;95;191;;;
                                  -37155;1;0;false;false;;;;;;
                                  -37156;5;0;false;false;63;95;191;;;
                                  -37161;1;0;false;false;;;;;;
                                  -37162;4;0;false;false;63;95;191;;;
                                  -37166;1;0;false;false;;;;;;
                                  -37167;3;0;false;false;63;95;191;;;
                                  -37170;1;0;false;false;;;;;;
                                  -37171;5;0;false;false;63;95;191;;;
                                  -37176;1;0;false;false;;;;;;
                                  -37177;2;0;false;false;63;95;191;;;
                                  -37179;1;0;false;false;;;;;;
                                  -37180;3;0;false;false;63;95;191;;;
                                  -37183;5;0;false;false;;;;;;
                                  -37188;1;0;false;false;63;95;191;;;
                                  -37189;2;0;false;false;;;;;;
                                  -37191;6;0;false;false;63;95;191;;;
                                  -37197;1;0;false;false;;;;;;
                                  -37198;9;0;false;false;63;95;191;;;
                                  -37207;1;0;false;false;;;;;;
                                  -37208;3;0;false;false;63;95;191;;;
                                  -37211;1;0;false;false;;;;;;
                                  -37212;4;0;false;false;63;95;191;;;
                                  -37216;1;0;false;false;;;;;;
                                  -37217;9;0;false;false;63;95;191;;;
                                  -37226;1;0;false;false;;;;;;
                                  -37227;6;0;false;false;63;95;191;;;
                                  -37233;1;0;false;false;;;;;;
                                  -37234;3;0;false;false;63;95;191;;;
                                  -37237;1;0;false;false;;;;;;
                                  -37238;5;0;false;false;63;95;191;;;
                                  -37243;1;0;false;false;;;;;;
                                  -37244;6;0;false;false;63;95;191;;;
                                  -37250;1;0;false;false;;;;;;
                                  -37251;2;0;false;false;63;95;191;;;
                                  -37253;1;0;false;false;;;;;;
                                  -37254;5;0;false;false;63;95;191;;;
                                  -37259;1;0;false;false;;;;;;
                                  -37260;3;0;false;false;63;95;191;;;
                                  -37263;5;0;false;false;;;;;;
                                  -37268;1;0;false;false;63;95;191;;;
                                  -37269;1;0;false;false;;;;;;
                                  -37270;3;0;false;false;63;95;191;;;
                                  -37273;1;0;false;false;;;;;;
                                  -37274;6;0;false;false;63;95;191;;;
                                  -37280;1;0;false;false;;;;;;
                                  -37281;9;0;false;false;63;95;191;;;
                                  -37290;1;0;false;false;;;;;;
                                  -37291;6;0;false;false;63;95;191;;;
                                  -37297;1;0;false;false;;;;;;
                                  -37298;6;0;false;false;63;95;191;;;
                                  -37304;1;0;false;false;;;;;;
                                  -37305;8;0;false;false;63;95;191;;;
                                  -37313;1;0;false;false;;;;;;
                                  -37314;2;0;false;false;63;95;191;;;
                                  -37316;1;0;false;false;;;;;;
                                  -37317;8;0;false;false;63;95;191;;;
                                  -37325;4;0;false;false;;;;;;
                                  -37329;1;0;false;false;63;95;191;;;
                                  -37330;1;0;false;false;;;;;;
                                  -37331;11;1;false;false;127;159;191;;;
                                  -37342;12;0;false;false;63;95;191;;;
                                  -37354;1;0;false;false;;;;;;
                                  -37355;4;0;false;false;127;127;159;;;
                                  -37359;4;0;false;false;;;;;;
                                  -37363;1;0;false;false;63;95;191;;;
                                  -37364;3;0;false;false;;;;;;
                                  -37367;4;0;false;false;127;127;159;;;
                                  -37371;8;0;false;false;63;95;191;;;
                                  -37379;1;0;false;false;;;;;;
                                  -37380;4;0;false;false;63;95;191;;;
                                  -37384;1;0;false;false;;;;;;
                                  -37385;3;0;false;false;63;95;191;;;
                                  -37388;1;0;false;false;;;;;;
                                  -37389;6;0;false;false;63;95;191;;;
                                  -37395;1;0;false;false;;;;;;
                                  -37396;2;0;false;false;63;95;191;;;
                                  -37398;1;0;false;false;;;;;;
                                  -37399;7;0;false;false;63;95;191;;;
                                  -37406;5;0;false;false;127;127;159;;;
                                  -37411;4;0;false;false;;;;;;
                                  -37415;1;0;false;false;63;95;191;;;
                                  -37416;1;0;false;false;;;;;;
                                  -37417;5;0;false;false;127;127;159;;;
                                  -37422;4;0;false;false;;;;;;
                                  -37426;2;0;false;false;63;95;191;;;
                                  -37428;3;0;false;false;;;;;;
                                  -37431;6;1;false;false;127;0;85;;;
                                  -37437;1;0;false;false;;;;;;
                                  -37438;4;1;false;false;127;0;85;;;
                                  -37442;1;0;false;false;;;;;;
                                  -37443;16;0;false;false;0;0;0;;;
                                  -37459;1;0;false;false;;;;;;
                                  -37460;5;0;false;false;0;0;0;;;
                                  -37465;1;0;false;false;;;;;;
                                  -37466;3;1;false;false;127;0;85;;;
                                  -37469;1;0;false;false;;;;;;
                                  -37470;11;0;false;false;0;0;0;;;
                                  -37481;1;0;false;false;;;;;;
                                  -37482;1;0;false;false;0;0;0;;;
                                  -37483;4;0;false;false;;;;;;
                                  -37487;3;1;false;false;127;0;85;;;
                                  -37490;1;0;false;false;;;;;;
                                  -37491;10;0;false;false;0;0;0;;;
                                  -37501;1;0;false;false;;;;;;
                                  -37502;1;0;false;false;0;0;0;;;
                                  -37503;1;0;false;false;;;;;;
                                  -37504;14;0;false;false;0;0;0;;;
                                  -37518;4;0;false;false;;;;;;
                                  -37522;3;1;false;false;127;0;85;;;
                                  -37525;1;0;false;false;;;;;;
                                  -37526;10;0;false;false;0;0;0;;;
                                  -37536;4;0;false;false;;;;;;
                                  -37540;3;1;false;false;127;0;85;;;
                                  -37543;1;0;false;false;;;;;;
                                  -37544;8;0;false;false;0;0;0;;;
                                  -37552;4;0;false;false;;;;;;
                                  -37556;3;1;false;false;127;0;85;;;
                                  -37559;1;0;false;false;;;;;;
                                  -37560;11;0;false;false;0;0;0;;;
                                  -37571;1;0;false;false;;;;;;
                                  -37572;1;0;false;false;0;0;0;;;
                                  -37573;1;0;false;false;;;;;;
                                  -37574;11;0;false;false;0;0;0;;;
                                  -37585;1;0;false;false;;;;;;
                                  -37586;1;0;false;false;0;0;0;;;
                                  -37587;1;0;false;false;;;;;;
                                  -37588;11;0;false;false;0;0;0;;;
                                  -37599;8;0;false;false;;;;;;
                                  -37607;2;1;false;false;127;0;85;;;
                                  -37609;1;0;false;false;;;;;;
                                  -37610;10;0;false;false;0;0;0;;;
                                  -37620;1;0;false;false;;;;;;
                                  -37621;1;0;false;false;0;0;0;;;
                                  -37622;5;0;false;false;;;;;;
                                  -37627;24;0;false;false;0;0;0;;;
                                  -37651;4;0;false;false;;;;;;
                                  -37655;1;0;false;false;0;0;0;;;
                                  -37656;6;0;false;false;;;;;;
                                  -37662;2;1;false;false;127;0;85;;;
                                  -37664;1;0;false;false;;;;;;
                                  -37665;12;0;false;false;0;0;0;;;
                                  -37677;1;0;false;false;;;;;;
                                  -37678;2;0;false;false;0;0;0;;;
                                  -37680;1;0;false;false;;;;;;
                                  -37681;11;0;false;false;0;0;0;;;
                                  -37692;1;0;false;false;;;;;;
                                  -37693;1;0;false;false;0;0;0;;;
                                  -37694;5;0;false;false;;;;;;
                                  -37699;6;1;false;false;127;0;85;;;
                                  -37705;1;0;false;false;0;0;0;;;
                                  -37706;7;0;false;false;;;;;;
                                  -37713;38;0;false;false;63;127;95;;;
                                  -37751;2;0;false;false;;;;;;
                                  -37753;1;0;false;false;0;0;0;;;
                                  -37754;4;0;false;false;;;;;;
                                  -37758;4;1;false;false;127;0;85;;;
                                  -37762;4;0;false;false;;;;;;
                                  -37766;2;1;false;false;127;0;85;;;
                                  -37768;1;0;false;false;;;;;;
                                  -37769;12;0;false;false;0;0;0;;;
                                  -37781;1;0;false;false;;;;;;
                                  -37782;1;0;false;false;0;0;0;;;
                                  -37783;1;0;false;false;;;;;;
                                  -37784;2;0;false;false;0;0;0;;;
                                  -37786;1;0;false;false;;;;;;
                                  -37787;1;0;false;false;0;0;0;;;
                                  -37788;5;0;false;false;;;;;;
                                  -37793;9;0;false;false;0;0;0;;;
                                  -37802;1;0;false;false;;;;;;
                                  -37803;1;0;false;false;0;0;0;;;
                                  -37804;1;0;false;false;;;;;;
                                  -37805;12;0;false;false;0;0;0;;;
                                  -37817;2;0;false;false;;;;;;
                                  -37819;35;0;false;false;63;127;95;;;
                                  -37854;2;0;false;false;;;;;;
                                  -37856;1;0;false;false;0;0;0;;;
                                  -37857;4;0;false;false;;;;;;
                                  -37861;4;1;false;false;127;0;85;;;
                                  -37865;1;0;false;false;;;;;;
                                  -37866;1;0;false;false;0;0;0;;;
                                  -37867;5;0;false;false;;;;;;
                                  -37872;9;0;false;false;0;0;0;;;
                                  -37881;1;0;false;false;;;;;;
                                  -37882;1;0;false;false;0;0;0;;;
                                  -37883;1;0;false;false;;;;;;
                                  -37884;2;0;false;false;0;0;0;;;
                                  -37886;4;0;false;false;;;;;;
                                  -37890;1;0;false;false;0;0;0;;;
                                  -37891;4;0;false;false;;;;;;
                                  -37895;7;0;false;false;0;0;0;;;
                                  -37902;1;0;false;false;;;;;;
                                  -37903;1;0;false;false;0;0;0;;;
                                  -37904;1;0;false;false;;;;;;
                                  -37905;20;0;false;false;0;0;0;;;
                                  -37925;1;0;false;false;;;;;;
                                  -37926;9;0;false;false;0;0;0;;;
                                  -37935;1;0;false;false;;;;;;
                                  -37936;1;0;false;false;0;0;0;;;
                                  -37937;1;0;false;false;;;;;;
                                  -37938;12;0;false;false;0;0;0;;;
                                  -37950;4;0;false;false;;;;;;
                                  -37954;2;1;false;false;127;0;85;;;
                                  -37956;1;0;false;false;;;;;;
                                  -37957;10;0;false;false;0;0;0;;;
                                  -37967;1;0;false;false;;;;;;
                                  -37968;1;0;false;false;0;0;0;;;
                                  -37969;1;0;false;false;;;;;;
                                  -37970;8;0;false;false;0;0;0;;;
                                  -37978;1;0;false;false;;;;;;
                                  -37979;1;0;false;false;0;0;0;;;
                                  -37980;5;0;false;false;;;;;;
                                  -37985;31;0;false;false;0;0;0;;;
                                  -38016;1;0;false;false;;;;;;
                                  -38017;10;0;false;false;0;0;0;;;
                                  -38027;4;0;false;false;;;;;;
                                  -38031;1;0;false;false;0;0;0;;;
                                  -38032;5;0;false;false;;;;;;
                                  -38037;1;0;false;false;0;0;0;;;
                                  -38038;3;0;false;false;;;;;;
                                  -38041;3;0;false;false;63;95;191;;;
                                  -38044;4;0;false;false;;;;;;
                                  -38048;1;0;false;false;63;95;191;;;
                                  -38049;1;0;false;false;;;;;;
                                  -38050;7;0;false;false;63;95;191;;;
                                  -38057;1;0;false;false;;;;;;
                                  -38058;3;0;false;false;63;95;191;;;
                                  -38061;1;0;false;false;;;;;;
                                  -38062;9;0;false;false;63;95;191;;;
                                  -38071;1;0;false;false;;;;;;
                                  -38072;4;0;false;false;63;95;191;;;
                                  -38076;1;0;false;false;;;;;;
                                  -38077;10;0;false;false;63;95;191;;;
                                  -38087;1;0;false;false;;;;;;
                                  -38088;2;0;false;false;63;95;191;;;
                                  -38090;1;0;false;false;;;;;;
                                  -38091;3;0;false;false;63;95;191;;;
                                  -38094;1;0;false;false;;;;;;
                                  -38095;5;0;false;false;63;95;191;;;
                                  -38100;4;0;false;false;;;;;;
                                  -38104;1;0;false;false;63;95;191;;;
                                  -38105;1;0;false;false;;;;;;
                                  -38106;3;0;false;false;127;127;159;;;
                                  -38109;4;0;false;false;;;;;;
                                  -38113;1;0;false;false;63;95;191;;;
                                  -38114;4;0;false;false;;;;;;
                                  -38118;1;0;false;false;63;95;191;;;
                                  -38119;1;0;false;false;;;;;;
                                  -38120;7;1;false;false;127;159;191;;;
                                  -38127;13;0;false;false;63;95;191;;;
                                  -38140;1;0;false;false;;;;;;
                                  -38141;4;0;false;false;63;95;191;;;
                                  -38145;1;0;false;false;;;;;;
                                  -38146;9;0;false;false;63;95;191;;;
                                  -38155;1;0;false;false;;;;;;
                                  -38156;2;0;false;false;63;95;191;;;
                                  -38158;1;0;false;false;;;;;;
                                  -38159;5;0;false;false;63;95;191;;;
                                  -38164;4;0;false;false;;;;;;
                                  -38168;1;0;false;false;63;95;191;;;
                                  -38169;1;0;false;false;;;;;;
                                  -38170;11;1;false;false;127;159;191;;;
                                  -38181;12;0;false;false;63;95;191;;;
                                  -38193;1;0;false;false;;;;;;
                                  -38194;4;0;false;false;127;127;159;;;
                                  -38198;4;0;false;false;;;;;;
                                  -38202;1;0;false;false;63;95;191;;;
                                  -38203;3;0;false;false;;;;;;
                                  -38206;4;0;false;false;127;127;159;;;
                                  -38210;8;0;false;false;63;95;191;;;
                                  -38218;1;0;false;false;;;;;;
                                  -38219;4;0;false;false;63;95;191;;;
                                  -38223;1;0;false;false;;;;;;
                                  -38224;3;0;false;false;63;95;191;;;
                                  -38227;1;0;false;false;;;;;;
                                  -38228;6;0;false;false;63;95;191;;;
                                  -38234;1;0;false;false;;;;;;
                                  -38235;2;0;false;false;63;95;191;;;
                                  -38237;1;0;false;false;;;;;;
                                  -38238;7;0;false;false;63;95;191;;;
                                  -38245;5;0;false;false;127;127;159;;;
                                  -38250;4;0;false;false;;;;;;
                                  -38254;1;0;false;false;63;95;191;;;
                                  -38255;1;0;false;false;;;;;;
                                  -38256;5;0;false;false;127;127;159;;;
                                  -38261;4;0;false;false;;;;;;
                                  -38265;2;0;false;false;63;95;191;;;
                                  -38267;3;0;false;false;;;;;;
                                  -38270;6;1;false;false;127;0;85;;;
                                  -38276;1;0;false;false;;;;;;
                                  -38277;4;1;false;false;127;0;85;;;
                                  -38281;1;0;false;false;;;;;;
                                  -38282;25;0;false;false;0;0;0;;;
                                  -38307;1;0;false;false;;;;;;
                                  -38308;14;0;false;false;0;0;0;;;
                                  -38322;1;0;false;false;;;;;;
                                  -38323;1;0;false;false;0;0;0;;;
                                  -38324;4;0;false;false;;;;;;
                                  -38328;2;1;false;false;127;0;85;;;
                                  -38330;1;0;false;false;;;;;;
                                  -38331;10;0;false;false;0;0;0;;;
                                  -38341;1;0;false;false;;;;;;
                                  -38342;1;0;false;false;0;0;0;;;
                                  -38343;5;0;false;false;;;;;;
                                  -38348;24;0;false;false;0;0;0;;;
                                  -38372;4;0;false;false;;;;;;
                                  -38376;1;0;false;false;0;0;0;;;
                                  -38377;4;0;false;false;;;;;;
                                  -38381;21;0;false;false;0;0;0;;;
                                  -38402;3;0;false;false;;;;;;
                                  -38405;1;0;false;false;0;0;0;;;
                                  -38406;3;0;false;false;;;;;;
                                  -38409;1;0;false;false;0;0;0;;;
                                  -38410;3;0;false;false;;;;;;
                                  -38413;3;0;false;false;63;95;191;;;
                                  -38416;4;0;false;false;;;;;;
                                  -38420;1;0;false;false;63;95;191;;;
                                  -38421;1;0;false;false;;;;;;
                                  -38422;9;0;false;false;63;95;191;;;
                                  -38431;1;0;false;false;;;;;;
                                  -38432;8;0;false;false;63;95;191;;;
                                  -38440;1;0;false;false;;;;;;
                                  -38441;2;0;false;false;63;95;191;;;
                                  -38443;1;0;false;false;;;;;;
                                  -38444;9;0;false;false;63;95;191;;;
                                  -38453;1;0;false;false;;;;;;
                                  -38454;2;0;false;false;63;95;191;;;
                                  -38456;1;0;false;false;;;;;;
                                  -38457;9;0;false;false;63;95;191;;;
                                  -38466;1;0;false;false;;;;;;
                                  -38467;3;0;false;false;63;95;191;;;
                                  -38470;1;0;false;false;;;;;;
                                  -38471;10;0;false;false;63;95;191;;;
                                  -38481;5;0;false;false;;;;;;
                                  -38486;1;0;false;false;63;95;191;;;
                                  -38487;1;0;false;false;;;;;;
                                  -38488;4;0;false;false;63;95;191;;;
                                  -38492;1;0;false;false;;;;;;
                                  -38493;5;0;false;false;63;95;191;;;
                                  -38498;1;0;false;false;;;;;;
                                  -38499;5;0;false;false;63;95;191;;;
                                  -38504;4;0;false;false;;;;;;
                                  -38508;1;0;false;false;63;95;191;;;
                                  -38509;1;0;false;false;;;;;;
                                  -38510;12;0;false;false;63;95;191;;;
                                  -38522;1;0;false;false;;;;;;
                                  -38523;4;0;false;false;63;95;191;;;
                                  -38527;1;0;false;false;;;;;;
                                  -38528;2;0;false;false;63;95;191;;;
                                  -38530;1;0;false;false;;;;;;
                                  -38531;6;0;false;false;63;95;191;;;
                                  -38537;1;0;false;false;;;;;;
                                  -38538;1;0;false;false;63;95;191;;;
                                  -38539;1;0;false;false;;;;;;
                                  -38540;4;0;false;false;63;95;191;;;
                                  -38544;1;0;false;false;;;;;;
                                  -38545;5;0;false;false;63;95;191;;;
                                  -38550;1;0;false;false;;;;;;
                                  -38551;2;0;false;false;63;95;191;;;
                                  -38553;1;0;false;false;;;;;;
                                  -38554;6;0;false;false;127;127;159;;;
                                  -38560;8;0;false;false;63;95;191;;;
                                  -38568;7;0;false;false;127;127;159;;;
                                  -38575;1;0;false;false;63;95;191;;;
                                  -38576;4;0;false;false;;;;;;
                                  -38580;2;0;false;false;63;95;191;;;
                                  -38582;3;0;false;false;;;;;;
                                  -38585;9;1;false;false;127;0;85;;;
                                  -38594;1;0;false;false;;;;;;
                                  -38595;9;0;false;false;0;0;0;;;
                                  -38604;1;0;false;false;;;;;;
                                  -38605;1;0;false;false;0;0;0;;;
                                  -38606;3;0;false;false;;;;;;
                                  -38609;3;0;false;false;63;95;191;;;
                                  -38612;4;0;false;false;;;;;;
                                  -38616;1;0;false;false;63;95;191;;;
                                  -38617;1;0;false;false;;;;;;
                                  -38618;10;0;false;false;63;95;191;;;
                                  -38628;1;0;false;false;;;;;;
                                  -38629;3;0;false;false;63;95;191;;;
                                  -38632;1;0;false;false;;;;;;
                                  -38633;5;0;false;false;63;95;191;;;
                                  -38638;1;0;false;false;;;;;;
                                  -38639;2;0;false;false;63;95;191;;;
                                  -38641;1;0;false;false;;;;;;
                                  -38642;3;0;false;false;63;95;191;;;
                                  -38645;1;0;false;false;;;;;;
                                  -38646;9;0;false;false;63;95;191;;;
                                  -38655;1;0;false;false;;;;;;
                                  -38656;6;0;false;false;63;95;191;;;
                                  -38662;4;0;false;false;;;;;;
                                  -38666;1;0;false;false;63;95;191;;;
                                  -38667;1;0;false;false;;;;;;
                                  -38668;3;0;false;false;127;127;159;;;
                                  -38671;4;0;false;false;;;;;;
                                  -38675;1;0;false;false;63;95;191;;;
                                  -38676;5;0;false;false;;;;;;
                                  -38681;1;0;false;false;63;95;191;;;
                                  -38682;1;0;false;false;;;;;;
                                  -38683;7;1;false;false;127;159;191;;;
                                  -38690;9;0;false;false;63;95;191;;;
                                  -38699;1;0;false;false;;;;;;
                                  -38700;5;0;false;false;63;95;191;;;
                                  -38705;1;0;false;false;;;;;;
                                  -38706;4;0;false;false;63;95;191;;;
                                  -38710;1;0;false;false;;;;;;
                                  -38711;2;0;false;false;63;95;191;;;
                                  -38713;1;0;false;false;;;;;;
                                  -38714;9;0;false;false;63;95;191;;;
                                  -38723;4;0;false;false;;;;;;
                                  -38727;1;0;false;false;63;95;191;;;
                                  -38728;1;0;false;false;;;;;;
                                  -38729;7;1;false;false;127;159;191;;;
                                  -38736;9;0;false;false;63;95;191;;;
                                  -38745;1;0;false;false;;;;;;
                                  -38746;6;0;false;false;63;95;191;;;
                                  -38752;1;0;false;false;;;;;;
                                  -38753;2;0;false;false;63;95;191;;;
                                  -38755;1;0;false;false;;;;;;
                                  -38756;5;0;false;false;63;95;191;;;
                                  -38761;1;0;false;false;;;;;;
                                  -38762;2;0;false;false;63;95;191;;;
                                  -38764;1;0;false;false;;;;;;
                                  -38765;9;0;false;false;63;95;191;;;
                                  -38774;4;0;false;false;;;;;;
                                  -38778;2;0;false;false;63;95;191;;;
                                  -38780;3;0;false;false;;;;;;
                                  -38783;6;1;false;false;127;0;85;;;
                                  -38789;1;0;false;false;;;;;;
                                  -38790;4;1;false;false;127;0;85;;;
                                  -38794;1;0;false;false;;;;;;
                                  -38795;10;0;false;false;0;0;0;;;
                                  -38805;3;1;false;false;127;0;85;;;
                                  -38808;1;0;false;false;;;;;;
                                  -38809;10;0;false;false;0;0;0;;;
                                  -38819;1;0;false;false;;;;;;
                                  -38820;3;1;false;false;127;0;85;;;
                                  -38823;1;0;false;false;;;;;;
                                  -38824;11;0;false;false;0;0;0;;;
                                  -38835;3;0;false;false;;;;;;
                                  -38838;3;0;false;false;63;95;191;;;
                                  -38841;4;0;false;false;;;;;;
                                  -38845;1;0;false;false;63;95;191;;;
                                  -38846;1;0;false;false;;;;;;
                                  -38847;7;0;false;false;63;95;191;;;
                                  -38854;1;0;false;false;;;;;;
                                  -38855;1;0;false;false;63;95;191;;;
                                  -38856;1;0;false;false;;;;;;
                                  -38857;5;0;false;false;63;95;191;;;
                                  -38862;1;0;false;false;;;;;;
                                  -38863;4;0;false;false;63;95;191;;;
                                  -38867;1;0;false;false;;;;;;
                                  -38868;4;0;false;false;63;95;191;;;
                                  -38872;1;0;false;false;;;;;;
                                  -38873;2;0;false;false;63;95;191;;;
                                  -38875;1;0;false;false;;;;;;
                                  -38876;4;0;false;false;63;95;191;;;
                                  -38880;1;0;false;false;;;;;;
                                  -38881;2;0;false;false;63;95;191;;;
                                  -38883;1;0;false;false;;;;;;
                                  -38884;3;0;false;false;63;95;191;;;
                                  -38887;1;0;false;false;;;;;;
                                  -38888;6;0;false;false;127;127;159;;;
                                  -38894;10;0;false;false;63;95;191;;;
                                  -38904;7;0;false;false;127;127;159;;;
                                  -38911;5;0;false;false;;;;;;
                                  -38916;1;0;false;false;63;95;191;;;
                                  -38917;1;0;false;false;;;;;;
                                  -38918;6;0;false;false;63;95;191;;;
                                  -38924;1;0;false;false;;;;;;
                                  -38925;2;0;false;false;63;95;191;;;
                                  -38927;1;0;false;false;;;;;;
                                  -38928;4;0;false;false;63;95;191;;;
                                  -38932;1;0;false;false;;;;;;
                                  -38933;1;0;false;false;63;95;191;;;
                                  -38934;1;0;false;false;;;;;;
                                  -38935;10;0;false;false;63;95;191;;;
                                  -38945;1;0;false;false;;;;;;
                                  -38946;6;0;false;false;63;95;191;;;
                                  -38952;1;0;false;false;;;;;;
                                  -38953;4;0;false;false;63;95;191;;;
                                  -38957;4;0;false;false;;;;;;
                                  -38961;1;0;false;false;63;95;191;;;
                                  -38962;1;0;false;false;;;;;;
                                  -38963;3;0;false;false;127;127;159;;;
                                  -38966;4;0;false;false;;;;;;
                                  -38970;1;0;false;false;63;95;191;;;
                                  -38971;4;0;false;false;;;;;;
                                  -38975;1;0;false;false;63;95;191;;;
                                  -38976;1;0;false;false;;;;;;
                                  -38977;8;1;false;false;127;159;191;;;
                                  -38985;3;0;false;false;63;95;191;;;
                                  -38988;1;0;false;false;;;;;;
                                  -38989;4;0;false;false;63;95;191;;;
                                  -38993;1;0;false;false;;;;;;
                                  -38994;5;0;false;false;63;95;191;;;
                                  -38999;4;0;false;false;;;;;;
                                  -39003;2;0;false;false;63;95;191;;;
                                  -39005;3;0;false;false;;;;;;
                                  -39008;6;1;false;false;127;0;85;;;
                                  -39014;1;0;false;false;;;;;;
                                  -39015;3;1;false;false;127;0;85;;;
                                  -39018;1;0;false;false;;;;;;
                                  -39019;11;0;false;false;0;0;0;;;
                                  -39030;3;0;false;false;;;;;;
                                  -39033;3;0;false;false;63;95;191;;;
                                  -39036;4;0;false;false;;;;;;
                                  -39040;1;0;false;false;63;95;191;;;
                                  -39041;1;0;false;false;;;;;;
                                  -39042;6;0;false;false;63;95;191;;;
                                  -39048;1;0;false;false;;;;;;
                                  -39049;3;0;false;false;63;95;191;;;
                                  -39052;1;0;false;false;;;;;;
                                  -39053;5;0;false;false;63;95;191;;;
                                  -39058;1;0;false;false;;;;;;
                                  -39059;2;0;false;false;63;95;191;;;
                                  -39061;1;0;false;false;;;;;;
                                  -39062;3;0;false;false;63;95;191;;;
                                  -39065;1;0;false;false;;;;;;
                                  -39066;9;0;false;false;63;95;191;;;
                                  -39075;1;0;false;false;;;;;;
                                  -39076;6;0;false;false;63;95;191;;;
                                  -39082;4;0;false;false;;;;;;
                                  -39086;1;0;false;false;63;95;191;;;
                                  -39087;1;0;false;false;;;;;;
                                  -39088;4;0;false;false;63;95;191;;;
                                  -39092;1;0;false;false;;;;;;
                                  -39093;6;0;false;false;63;95;191;;;
                                  -39099;1;0;false;false;;;;;;
                                  -39100;2;0;false;false;63;95;191;;;
                                  -39102;1;0;false;false;;;;;;
                                  -39103;6;0;false;false;63;95;191;;;
                                  -39109;1;0;false;false;;;;;;
                                  -39110;2;0;false;false;63;95;191;;;
                                  -39112;1;0;false;false;;;;;;
                                  -39113;6;0;false;false;127;127;159;;;
                                  -39119;19;0;false;false;63;95;191;;;
                                  -39138;7;0;false;false;127;127;159;;;
                                  -39145;4;0;false;false;;;;;;
                                  -39149;1;0;false;false;63;95;191;;;
                                  -39150;1;0;false;false;;;;;;
                                  -39151;3;0;false;false;63;95;191;;;
                                  -39154;1;0;false;false;;;;;;
                                  -39155;6;0;false;false;63;95;191;;;
                                  -39161;1;0;false;false;;;;;;
                                  -39162;12;0;false;false;63;95;191;;;
                                  -39174;1;0;false;false;;;;;;
                                  -39175;2;0;false;false;63;95;191;;;
                                  -39177;1;0;false;false;;;;;;
                                  -39178;4;0;false;false;63;95;191;;;
                                  -39182;1;0;false;false;;;;;;
                                  -39183;6;0;false;false;63;95;191;;;
                                  -39189;1;0;false;false;;;;;;
                                  -39190;10;0;false;false;63;95;191;;;
                                  -39200;1;0;false;false;;;;;;
                                  -39201;6;0;false;false;63;95;191;;;
                                  -39207;1;0;false;false;;;;;;
                                  -39208;6;0;false;false;63;95;191;;;
                                  -39214;4;0;false;false;;;;;;
                                  -39218;1;0;false;false;63;95;191;;;
                                  -39219;1;0;false;false;;;;;;
                                  -39220;3;0;false;false;127;127;159;;;
                                  -39223;4;0;false;false;;;;;;
                                  -39227;1;0;false;false;63;95;191;;;
                                  -39228;4;0;false;false;;;;;;
                                  -39232;1;0;false;false;63;95;191;;;
                                  -39233;1;0;false;false;;;;;;
                                  -39234;7;1;false;false;127;159;191;;;
                                  -39241;9;0;false;false;63;95;191;;;
                                  -39250;1;0;false;false;;;;;;
                                  -39251;3;0;false;false;63;95;191;;;
                                  -39254;1;0;false;false;;;;;;
                                  -39255;5;0;false;false;63;95;191;;;
                                  -39260;1;0;false;false;;;;;;
                                  -39261;4;0;false;false;63;95;191;;;
                                  -39265;1;0;false;false;;;;;;
                                  -39266;2;0;false;false;63;95;191;;;
                                  -39268;1;0;false;false;;;;;;
                                  -39269;5;0;false;false;63;95;191;;;
                                  -39274;4;0;false;false;;;;;;
                                  -39278;1;0;false;false;63;95;191;;;
                                  -39279;1;0;false;false;;;;;;
                                  -39280;7;1;false;false;127;159;191;;;
                                  -39287;9;0;false;false;63;95;191;;;
                                  -39296;1;0;false;false;;;;;;
                                  -39297;3;0;false;false;63;95;191;;;
                                  -39300;1;0;false;false;;;;;;
                                  -39301;6;0;false;false;63;95;191;;;
                                  -39307;1;0;false;false;;;;;;
                                  -39308;2;0;false;false;63;95;191;;;
                                  -39310;1;0;false;false;;;;;;
                                  -39311;5;0;false;false;63;95;191;;;
                                  -39316;1;0;false;false;;;;;;
                                  -39317;2;0;false;false;63;95;191;;;
                                  -39319;1;0;false;false;;;;;;
                                  -39320;5;0;false;false;63;95;191;;;
                                  -39325;4;0;false;false;;;;;;
                                  -39329;1;0;false;false;63;95;191;;;
                                  -39330;1;0;false;false;;;;;;
                                  -39331;7;1;false;false;127;159;191;;;
                                  -39338;17;0;false;false;63;95;191;;;
                                  -39355;1;0;false;false;;;;;;
                                  -39356;17;0;false;false;63;95;191;;;
                                  -39373;1;0;false;false;;;;;;
                                  -39374;6;0;false;false;63;95;191;;;
                                  -39380;1;0;false;false;;;;;;
                                  -39381;6;0;false;false;63;95;191;;;
                                  -39387;1;0;false;false;;;;;;
                                  -39388;1;0;false;false;63;95;191;;;
                                  -39389;5;0;false;false;;;;;;
                                  -39394;1;0;false;false;63;95;191;;;
                                  -39395;2;0;false;false;;;;;;
                                  -39397;5;0;false;false;63;95;191;;;
                                  -39402;1;0;false;false;;;;;;
                                  -39403;5;0;false;false;63;95;191;;;
                                  -39408;1;0;false;false;;;;;;
                                  -39409;4;0;false;false;63;95;191;;;
                                  -39413;1;0;false;false;;;;;;
                                  -39414;2;0;false;false;63;95;191;;;
                                  -39416;1;0;false;false;;;;;;
                                  -39417;2;0;false;false;63;95;191;;;
                                  -39419;1;0;false;false;;;;;;
                                  -39420;2;0;false;false;63;95;191;;;
                                  -39422;1;0;false;false;;;;;;
                                  -39423;8;0;false;false;63;95;191;;;
                                  -39431;1;0;false;false;;;;;;
                                  -39432;2;0;false;false;63;95;191;;;
                                  -39434;1;0;false;false;;;;;;
                                  -39435;3;0;false;false;63;95;191;;;
                                  -39438;1;0;false;false;;;;;;
                                  -39439;5;0;false;false;63;95;191;;;
                                  -39444;1;0;false;false;;;;;;
                                  -39445;10;0;false;false;63;95;191;;;
                                  -39455;4;0;false;false;;;;;;
                                  -39459;1;0;false;false;63;95;191;;;
                                  -39460;2;0;false;false;;;;;;
                                  -39462;9;0;false;false;63;95;191;;;
                                  -39471;1;0;false;false;;;;;;
                                  -39472;5;0;false;false;63;95;191;;;
                                  -39477;1;0;false;false;;;;;;
                                  -39478;3;0;false;false;63;95;191;;;
                                  -39481;1;0;false;false;;;;;;
                                  -39482;2;0;false;false;63;95;191;;;
                                  -39484;1;0;false;false;;;;;;
                                  -39485;3;0;false;false;63;95;191;;;
                                  -39488;1;0;false;false;;;;;;
                                  -39489;2;0;false;false;63;95;191;;;
                                  -39491;1;0;false;false;;;;;;
                                  -39492;1;0;false;false;63;95;191;;;
                                  -39493;4;0;false;false;;;;;;
                                  -39497;2;0;false;false;63;95;191;;;
                                  -39499;3;0;false;false;;;;;;
                                  -39502;6;1;false;false;127;0;85;;;
                                  -39508;1;0;false;false;;;;;;
                                  -39509;4;1;false;false;127;0;85;;;
                                  -39513;1;0;false;false;;;;;;
                                  -39514;12;0;false;false;0;0;0;;;
                                  -39526;3;1;false;false;127;0;85;;;
                                  -39529;1;0;false;false;;;;;;
                                  -39530;10;0;false;false;0;0;0;;;
                                  -39540;1;0;false;false;;;;;;
                                  -39541;3;1;false;false;127;0;85;;;
                                  -39544;1;0;false;false;;;;;;
                                  -39545;10;0;false;false;0;0;0;;;
                                  -39555;1;0;false;false;;;;;;
                                  -39556;7;1;false;false;127;0;85;;;
                                  -39563;1;0;false;false;;;;;;
                                  -39564;19;0;false;false;0;0;0;;;
                                  -39583;3;0;false;false;;;;;;
                                  -39586;3;0;false;false;63;95;191;;;
                                  -39589;4;0;false;false;;;;;;
                                  -39593;1;0;false;false;63;95;191;;;
                                  -39594;1;0;false;false;;;;;;
                                  -39595;6;0;false;false;63;95;191;;;
                                  -39601;1;0;false;false;;;;;;
                                  -39602;3;0;false;false;63;95;191;;;
                                  -39605;1;0;false;false;;;;;;
                                  -39606;5;0;false;false;63;95;191;;;
                                  -39611;1;0;false;false;;;;;;
                                  -39612;2;0;false;false;63;95;191;;;
                                  -39614;1;0;false;false;;;;;;
                                  -39615;3;0;false;false;63;95;191;;;
                                  -39618;1;0;false;false;;;;;;
                                  -39619;9;0;false;false;63;95;191;;;
                                  -39628;1;0;false;false;;;;;;
                                  -39629;6;0;false;false;63;95;191;;;
                                  -39635;4;0;false;false;;;;;;
                                  -39639;1;0;false;false;63;95;191;;;
                                  -39640;1;0;false;false;;;;;;
                                  -39641;3;0;false;false;127;127;159;;;
                                  -39644;4;0;false;false;;;;;;
                                  -39648;1;0;false;false;63;95;191;;;
                                  -39649;4;0;false;false;;;;;;
                                  -39653;1;0;false;false;63;95;191;;;
                                  -39654;1;0;false;false;;;;;;
                                  -39655;7;1;false;false;127;159;191;;;
                                  -39662;9;0;false;false;63;95;191;;;
                                  -39671;1;0;false;false;;;;;;
                                  -39672;3;0;false;false;63;95;191;;;
                                  -39675;1;0;false;false;;;;;;
                                  -39676;5;0;false;false;63;95;191;;;
                                  -39681;1;0;false;false;;;;;;
                                  -39682;4;0;false;false;63;95;191;;;
                                  -39686;1;0;false;false;;;;;;
                                  -39687;2;0;false;false;63;95;191;;;
                                  -39689;1;0;false;false;;;;;;
                                  -39690;5;0;false;false;63;95;191;;;
                                  -39695;4;0;false;false;;;;;;
                                  -39699;1;0;false;false;63;95;191;;;
                                  -39700;1;0;false;false;;;;;;
                                  -39701;7;1;false;false;127;159;191;;;
                                  -39708;9;0;false;false;63;95;191;;;
                                  -39717;1;0;false;false;;;;;;
                                  -39718;3;0;false;false;63;95;191;;;
                                  -39721;1;0;false;false;;;;;;
                                  -39722;6;0;false;false;63;95;191;;;
                                  -39728;1;0;false;false;;;;;;
                                  -39729;2;0;false;false;63;95;191;;;
                                  -39731;1;0;false;false;;;;;;
                                  -39732;5;0;false;false;63;95;191;;;
                                  -39737;1;0;false;false;;;;;;
                                  -39738;2;0;false;false;63;95;191;;;
                                  -39740;1;0;false;false;;;;;;
                                  -39741;5;0;false;false;63;95;191;;;
                                  -39746;4;0;false;false;;;;;;
                                  -39750;1;0;false;false;63;95;191;;;
                                  -39751;1;0;false;false;;;;;;
                                  -39752;7;1;false;false;127;159;191;;;
                                  -39759;17;0;false;false;63;95;191;;;
                                  -39776;1;0;false;false;;;;;;
                                  -39777;17;0;false;false;63;95;191;;;
                                  -39794;1;0;false;false;;;;;;
                                  -39795;6;0;false;false;63;95;191;;;
                                  -39801;1;0;false;false;;;;;;
                                  -39802;6;0;false;false;63;95;191;;;
                                  -39808;1;0;false;false;;;;;;
                                  -39809;1;0;false;false;63;95;191;;;
                                  -39810;5;0;false;false;;;;;;
                                  -39815;1;0;false;false;63;95;191;;;
                                  -39816;2;0;false;false;;;;;;
                                  -39818;5;0;false;false;63;95;191;;;
                                  -39823;1;0;false;false;;;;;;
                                  -39824;5;0;false;false;63;95;191;;;
                                  -39829;1;0;false;false;;;;;;
                                  -39830;4;0;false;false;63;95;191;;;
                                  -39834;1;0;false;false;;;;;;
                                  -39835;2;0;false;false;63;95;191;;;
                                  -39837;1;0;false;false;;;;;;
                                  -39838;2;0;false;false;63;95;191;;;
                                  -39840;1;0;false;false;;;;;;
                                  -39841;2;0;false;false;63;95;191;;;
                                  -39843;1;0;false;false;;;;;;
                                  -39844;8;0;false;false;63;95;191;;;
                                  -39852;1;0;false;false;;;;;;
                                  -39853;2;0;false;false;63;95;191;;;
                                  -39855;1;0;false;false;;;;;;
                                  -39856;3;0;false;false;63;95;191;;;
                                  -39859;1;0;false;false;;;;;;
                                  -39860;5;0;false;false;63;95;191;;;
                                  -39865;1;0;false;false;;;;;;
                                  -39866;10;0;false;false;63;95;191;;;
                                  -39876;4;0;false;false;;;;;;
                                  -39880;1;0;false;false;63;95;191;;;
                                  -39881;2;0;false;false;;;;;;
                                  -39883;9;0;false;false;63;95;191;;;
                                  -39892;1;0;false;false;;;;;;
                                  -39893;5;0;false;false;63;95;191;;;
                                  -39898;1;0;false;false;;;;;;
                                  -39899;3;0;false;false;63;95;191;;;
                                  -39902;1;0;false;false;;;;;;
                                  -39903;2;0;false;false;63;95;191;;;
                                  -39905;1;0;false;false;;;;;;
                                  -39906;3;0;false;false;63;95;191;;;
                                  -39909;1;0;false;false;;;;;;
                                  -39910;2;0;false;false;63;95;191;;;
                                  -39912;1;0;false;false;;;;;;
                                  -39913;1;0;false;false;63;95;191;;;
                                  -39914;4;0;false;false;;;;;;
                                  -39918;2;0;false;false;63;95;191;;;
                                  -39920;3;0;false;false;;;;;;
                                  -39923;6;1;false;false;127;0;85;;;
                                  -39929;1;0;false;false;;;;;;
                                  -39930;4;1;false;false;127;0;85;;;
                                  -39934;1;0;false;false;;;;;;
                                  -39935;6;0;false;false;0;0;0;;;
                                  -39941;3;1;false;false;127;0;85;;;
                                  -39944;1;0;false;false;;;;;;
                                  -39945;10;0;false;false;0;0;0;;;
                                  -39955;1;0;false;false;;;;;;
                                  -39956;3;1;false;false;127;0;85;;;
                                  -39959;1;0;false;false;;;;;;
                                  -39960;10;0;false;false;0;0;0;;;
                                  -39970;1;0;false;false;;;;;;
                                  -39971;7;1;false;false;127;0;85;;;
                                  -39978;1;0;false;false;;;;;;
                                  -39979;19;0;false;false;0;0;0;;;
                                  -39998;3;0;false;false;;;;;;
                                  -40001;3;0;false;false;63;95;191;;;
                                  -40004;5;0;false;false;;;;;;
                                  -40009;1;0;false;false;63;95;191;;;
                                  -40010;1;0;false;false;;;;;;
                                  -40011;6;0;false;false;63;95;191;;;
                                  -40017;1;0;false;false;;;;;;
                                  -40018;4;0;false;false;63;95;191;;;
                                  -40022;1;0;false;false;;;;;;
                                  -40023;1;0;false;false;63;95;191;;;
                                  -40024;1;0;false;false;;;;;;
                                  -40025;4;0;false;false;63;95;191;;;
                                  -40029;1;0;false;false;;;;;;
                                  -40030;6;0;false;false;63;95;191;;;
                                  -40036;1;0;false;false;;;;;;
                                  -40037;9;0;false;false;63;95;191;;;
                                  -40046;4;0;false;false;;;;;;
                                  -40050;1;0;false;false;63;95;191;;;
                                  -40051;1;0;false;false;;;;;;
                                  -40052;3;0;false;false;127;127;159;;;
                                  -40055;4;0;false;false;;;;;;
                                  -40059;1;0;false;false;63;95;191;;;
                                  -40060;4;0;false;false;;;;;;
                                  -40064;1;0;false;false;63;95;191;;;
                                  -40065;1;0;false;false;;;;;;
                                  -40066;7;1;false;false;127;159;191;;;
                                  -40073;11;0;false;false;63;95;191;;;
                                  -40084;1;0;false;false;;;;;;
                                  -40085;3;0;false;false;63;95;191;;;
                                  -40088;1;0;false;false;;;;;;
                                  -40089;5;0;false;false;63;95;191;;;
                                  -40094;1;0;false;false;;;;;;
                                  -40095;6;0;false;false;63;95;191;;;
                                  -40101;1;0;false;false;;;;;;
                                  -40102;2;0;false;false;63;95;191;;;
                                  -40104;1;0;false;false;;;;;;
                                  -40105;3;0;false;false;63;95;191;;;
                                  -40108;1;0;false;false;;;;;;
                                  -40109;4;0;false;false;63;95;191;;;
                                  -40113;1;0;false;false;;;;;;
                                  -40114;6;0;false;false;63;95;191;;;
                                  -40120;4;0;false;false;;;;;;
                                  -40124;1;0;false;false;63;95;191;;;
                                  -40125;1;0;false;false;;;;;;
                                  -40126;7;1;false;false;127;159;191;;;
                                  -40133;12;0;false;false;63;95;191;;;
                                  -40145;1;0;false;false;;;;;;
                                  -40146;3;0;false;false;63;95;191;;;
                                  -40149;1;0;false;false;;;;;;
                                  -40150;6;0;false;false;63;95;191;;;
                                  -40156;1;0;false;false;;;;;;
                                  -40157;2;0;false;false;63;95;191;;;
                                  -40159;1;0;false;false;;;;;;
                                  -40160;8;0;false;false;63;95;191;;;
                                  -40168;1;0;false;false;;;;;;
                                  -40169;5;0;false;false;63;95;191;;;
                                  -40174;4;0;false;false;;;;;;
                                  -40178;1;0;false;false;63;95;191;;;
                                  -40179;1;0;false;false;;;;;;
                                  -40180;7;1;false;false;127;159;191;;;
                                  -40187;16;0;false;false;63;95;191;;;
                                  -40203;1;0;false;false;;;;;;
                                  -40204;3;0;false;false;63;95;191;;;
                                  -40207;1;0;false;false;;;;;;
                                  -40208;6;0;false;false;63;95;191;;;
                                  -40214;1;0;false;false;;;;;;
                                  -40215;2;0;false;false;63;95;191;;;
                                  -40217;1;0;false;false;;;;;;
                                  -40218;7;0;false;false;63;95;191;;;
                                  -40225;1;0;false;false;;;;;;
                                  -40226;5;0;false;false;63;95;191;;;
                                  -40231;4;0;false;false;;;;;;
                                  -40235;1;0;false;false;63;95;191;;;
                                  -40236;1;0;false;false;;;;;;
                                  -40237;7;1;false;false;127;159;191;;;
                                  -40244;12;0;false;false;63;95;191;;;
                                  -40256;1;0;false;false;;;;;;
                                  -40257;3;0;false;false;63;95;191;;;
                                  -40260;1;0;false;false;;;;;;
                                  -40261;6;0;false;false;63;95;191;;;
                                  -40267;1;0;false;false;;;;;;
                                  -40268;2;0;false;false;63;95;191;;;
                                  -40270;1;0;false;false;;;;;;
                                  -40271;3;0;false;false;63;95;191;;;
                                  -40274;1;0;false;false;;;;;;
                                  -40275;10;0;false;false;63;95;191;;;
                                  -40285;4;0;false;false;;;;;;
                                  -40289;1;0;false;false;63;95;191;;;
                                  -40290;1;0;false;false;;;;;;
                                  -40291;7;1;false;false;127;159;191;;;
                                  -40298;16;0;false;false;63;95;191;;;
                                  -40314;1;0;false;false;;;;;;
                                  -40315;3;0;false;false;63;95;191;;;
                                  -40318;1;0;false;false;;;;;;
                                  -40319;6;0;false;false;63;95;191;;;
                                  -40325;1;0;false;false;;;;;;
                                  -40326;2;0;false;false;63;95;191;;;
                                  -40328;1;0;false;false;;;;;;
                                  -40329;7;0;false;false;63;95;191;;;
                                  -40336;1;0;false;false;;;;;;
                                  -40337;10;0;false;false;63;95;191;;;
                                  -40347;4;0;false;false;;;;;;
                                  -40351;2;0;false;false;63;95;191;;;
                                  -40353;5;0;false;false;;;;;;
                                  -40358;6;1;false;false;127;0;85;;;
                                  -40364;1;0;false;false;;;;;;
                                  -40365;4;1;false;false;127;0;85;;;
                                  -40369;1;0;false;false;;;;;;
                                  -40370;12;0;false;false;0;0;0;;;
                                  -40382;3;1;false;false;127;0;85;;;
                                  -40385;1;0;false;false;;;;;;
                                  -40386;12;0;false;false;0;0;0;;;
                                  -40398;1;0;false;false;;;;;;
                                  -40399;3;1;false;false;127;0;85;;;
                                  -40402;1;0;false;false;;;;;;
                                  -40403;13;0;false;false;0;0;0;;;
                                  -40416;1;0;false;false;;;;;;
                                  -40417;3;1;false;false;127;0;85;;;
                                  -40420;1;0;false;false;;;;;;
                                  -40421;17;0;false;false;0;0;0;;;
                                  -40438;1;0;false;false;;;;;;
                                  -40439;3;1;false;false;127;0;85;;;
                                  -40442;1;0;false;false;;;;;;
                                  -40443;13;0;false;false;0;0;0;;;
                                  -40456;1;0;false;false;;;;;;
                                  -40457;3;1;false;false;127;0;85;;;
                                  -40460;1;0;false;false;;;;;;
                                  -40461;18;0;false;false;0;0;0;;;
                                  -40479;3;0;false;false;;;;;;
                                  -40482;1;0;false;false;0;0;0;;;
                                  -40483;3;0;false;false;;;;;;
                                  -40486;3;0;false;false;63;95;191;;;
                                  -40489;4;0;false;false;;;;;;
                                  -40493;1;0;false;false;63;95;191;;;
                                  -40494;1;0;false;false;;;;;;
                                  -40495;5;0;false;false;63;95;191;;;
                                  -40500;1;0;false;false;;;;;;
                                  -40501;5;0;false;false;63;95;191;;;
                                  -40506;1;0;false;false;;;;;;
                                  -40507;2;0;false;false;63;95;191;;;
                                  -40509;1;0;false;false;;;;;;
                                  -40510;4;0;false;false;63;95;191;;;
                                  -40514;1;0;false;false;;;;;;
                                  -40515;6;0;false;false;63;95;191;;;
                                  -40521;1;0;false;false;;;;;;
                                  -40522;3;0;false;false;63;95;191;;;
                                  -40525;1;0;false;false;;;;;;
                                  -40526;3;0;false;false;63;95;191;;;
                                  -40529;1;0;false;false;;;;;;
                                  -40530;7;0;false;false;63;95;191;;;
                                  -40537;1;0;false;false;;;;;;
                                  -40538;4;0;false;false;63;95;191;;;
                                  -40542;1;0;false;false;;;;;;
                                  -40543;2;0;false;false;63;95;191;;;
                                  -40545;1;0;false;false;;;;;;
                                  -40546;3;0;false;false;63;95;191;;;
                                  -40549;5;0;false;false;;;;;;
                                  -40554;1;0;false;false;63;95;191;;;
                                  -40555;1;0;false;false;;;;;;
                                  -40556;10;0;false;false;63;95;191;;;
                                  -40566;1;0;false;false;;;;;;
                                  -40567;9;0;false;false;63;95;191;;;
                                  -40576;4;0;false;false;;;;;;
                                  -40580;1;0;false;false;63;95;191;;;
                                  -40581;1;0;false;false;;;;;;
                                  -40582;4;0;false;false;63;95;191;;;
                                  -40586;1;0;false;false;;;;;;
                                  -40587;6;0;false;false;63;95;191;;;
                                  -40593;1;0;false;false;;;;;;
                                  -40594;3;0;false;false;63;95;191;;;
                                  -40597;1;0;false;false;;;;;;
                                  -40598;10;0;false;false;63;95;191;;;
                                  -40608;1;0;false;false;;;;;;
                                  -40609;4;0;false;false;63;95;191;;;
                                  -40613;1;0;false;false;;;;;;
                                  -40614;9;0;false;false;63;95;191;;;
                                  -40623;1;0;false;false;;;;;;
                                  -40624;2;0;false;false;63;95;191;;;
                                  -40626;1;0;false;false;;;;;;
                                  -40627;1;0;false;false;63;95;191;;;
                                  -40628;1;0;false;false;;;;;;
                                  -40629;4;0;false;false;63;95;191;;;
                                  -40633;1;0;false;false;;;;;;
                                  -40634;2;0;false;false;63;95;191;;;
                                  -40636;5;0;false;false;;;;;;
                                  -40641;1;0;false;false;63;95;191;;;
                                  -40642;1;0;false;false;;;;;;
                                  -40643;6;0;false;false;127;127;159;;;
                                  -40649;9;0;false;false;63;95;191;;;
                                  -40658;7;0;false;false;127;127;159;;;
                                  -40665;1;0;false;false;;;;;;
                                  -40666;3;0;false;false;63;95;191;;;
                                  -40669;1;0;false;false;;;;;;
                                  -40670;6;0;false;false;63;95;191;;;
                                  -40676;1;0;false;false;;;;;;
                                  -40677;5;0;false;false;63;95;191;;;
                                  -40682;1;0;false;false;;;;;;
                                  -40683;5;0;false;false;63;95;191;;;
                                  -40688;1;0;false;false;;;;;;
                                  -40689;2;0;false;false;63;95;191;;;
                                  -40691;1;0;false;false;;;;;;
                                  -40692;1;0;false;false;63;95;191;;;
                                  -40693;1;0;false;false;;;;;;
                                  -40694;4;0;false;false;63;95;191;;;
                                  -40698;5;0;false;false;;;;;;
                                  -40703;1;0;false;false;63;95;191;;;
                                  -40704;1;0;false;false;;;;;;
                                  -40705;2;0;false;false;63;95;191;;;
                                  -40707;1;0;false;false;;;;;;
                                  -40708;6;0;false;false;127;127;159;;;
                                  -40714;11;0;false;false;63;95;191;;;
                                  -40725;7;0;false;false;127;127;159;;;
                                  -40732;1;0;false;false;;;;;;
                                  -40733;2;0;false;false;63;95;191;;;
                                  -40735;1;0;false;false;;;;;;
                                  -40736;6;0;false;false;127;127;159;;;
                                  -40742;5;0;false;false;63;95;191;;;
                                  -40747;7;0;false;false;127;127;159;;;
                                  -40754;1;0;false;false;63;95;191;;;
                                  -40755;4;0;false;false;;;;;;
                                  -40759;2;0;false;false;63;95;191;;;
                                  -40761;3;0;false;false;;;;;;
                                  -40764;5;1;false;false;127;0;85;;;
                                  -40769;1;0;false;false;;;;;;
                                  -40770;17;0;false;false;0;0;0;;;
                                  -40787;1;0;false;false;;;;;;
                                  -40788;10;1;false;false;127;0;85;;;
                                  -40798;1;0;false;false;;;;;;
                                  -40799;9;0;false;false;0;0;0;;;
                                  -40808;1;0;false;false;;;;;;
                                  -40809;1;0;false;false;0;0;0;;;
                                  -40810;4;0;false;false;;;;;;
                                  -40814;10;0;false;false;0;0;0;;;
                                  -40824;1;0;false;false;;;;;;
                                  -40825;7;0;false;false;0;0;0;;;
                                  -40832;4;0;false;false;;;;;;
                                  -40836;58;0;false;false;63;127;95;;;
                                  -40894;2;0;false;false;;;;;;
                                  -40896;3;1;false;false;127;0;85;;;
                                  -40899;2;0;false;false;0;0;0;;;
                                  -40901;1;0;false;false;;;;;;
                                  -40902;10;0;false;false;0;0;0;;;
                                  -40912;4;0;false;false;;;;;;
                                  -40916;70;0;false;false;63;127;95;;;
                                  -40986;2;0;false;false;;;;;;
                                  -40988;17;0;false;false;0;0;0;;;
                                  -41005;1;0;false;false;;;;;;
                                  -41006;8;0;false;false;0;0;0;;;
                                  -41014;2;0;false;false;;;;;;
                                  -41016;46;0;false;false;63;127;95;;;
                                  -41062;2;0;false;false;;;;;;
                                  -41064;3;1;false;false;127;0;85;;;
                                  -41067;1;0;false;false;;;;;;
                                  -41068;10;0;false;false;0;0;0;;;
                                  -41078;5;0;false;false;;;;;;
                                  -41083;39;0;false;false;63;127;95;;;
                                  -41122;2;0;false;false;;;;;;
                                  -41124;3;1;false;false;127;0;85;;;
                                  -41127;1;0;false;false;;;;;;
                                  -41128;9;0;false;false;0;0;0;;;
                                  -41137;5;0;false;false;;;;;;
                                  -41142;45;0;false;false;63;127;95;;;
                                  -41187;2;0;false;false;;;;;;
                                  -41189;3;1;false;false;127;0;85;;;
                                  -41192;1;0;false;false;;;;;;
                                  -41193;18;0;false;false;0;0;0;;;
                                  -41211;3;0;false;false;;;;;;
                                  -41214;29;0;false;false;63;127;95;;;
                                  -41243;7;0;false;false;;;;;;
                                  -41250;3;0;false;false;63;95;191;;;
                                  -41253;5;0;false;false;;;;;;
                                  -41258;1;0;false;false;63;95;191;;;
                                  -41259;1;0;false;false;;;;;;
                                  -41260;7;0;false;false;63;95;191;;;
                                  -41267;1;0;false;false;;;;;;
                                  -41268;1;0;false;false;63;95;191;;;
                                  -41269;1;0;false;false;;;;;;
                                  -41270;3;0;false;false;63;95;191;;;
                                  -41273;1;0;false;false;;;;;;
                                  -41274;6;0;false;false;127;127;159;;;
                                  -41280;17;0;false;false;63;95;191;;;
                                  -41297;7;0;false;false;127;127;159;;;
                                  -41304;1;0;false;false;;;;;;
                                  -41305;3;0;false;false;63;95;191;;;
                                  -41308;1;0;false;false;;;;;;
                                  -41309;9;0;false;false;63;95;191;;;
                                  -41318;1;0;false;false;;;;;;
                                  -41319;5;0;false;false;63;95;191;;;
                                  -41324;5;0;false;false;;;;;;
                                  -41329;1;0;false;false;63;95;191;;;
                                  -41330;1;0;false;false;;;;;;
                                  -41331;3;0;false;false;63;95;191;;;
                                  -41334;1;0;false;false;;;;;;
                                  -41335;3;0;false;false;63;95;191;;;
                                  -41338;1;0;false;false;;;;;;
                                  -41339;5;0;false;false;63;95;191;;;
                                  -41344;1;0;false;false;;;;;;
                                  -41345;6;0;false;false;63;95;191;;;
                                  -41351;1;0;false;false;;;;;;
                                  -41352;2;0;false;false;63;95;191;;;
                                  -41354;1;0;false;false;;;;;;
                                  -41355;6;0;false;false;63;95;191;;;
                                  -41361;4;0;false;false;;;;;;
                                  -41365;1;0;false;false;63;95;191;;;
                                  -41366;1;0;false;false;;;;;;
                                  -41367;3;0;false;false;127;127;159;;;
                                  -41370;4;0;false;false;;;;;;
                                  -41374;1;0;false;false;63;95;191;;;
                                  -41375;4;0;false;false;;;;;;
                                  -41379;1;0;false;false;63;95;191;;;
                                  -41380;1;0;false;false;;;;;;
                                  -41381;7;1;false;false;127;159;191;;;
                                  -41388;6;0;false;false;63;95;191;;;
                                  -41394;1;0;false;false;;;;;;
                                  -41395;3;0;false;false;63;95;191;;;
                                  -41398;1;0;false;false;;;;;;
                                  -41399;10;0;false;false;63;95;191;;;
                                  -41409;1;0;false;false;;;;;;
                                  -41410;6;0;false;false;63;95;191;;;
                                  -41416;1;0;false;false;;;;;;
                                  -41417;4;0;false;false;63;95;191;;;
                                  -41421;1;0;false;false;;;;;;
                                  -41422;2;0;false;false;63;95;191;;;
                                  -41424;1;0;false;false;;;;;;
                                  -41425;6;0;false;false;63;95;191;;;
                                  -41431;1;0;false;false;;;;;;
                                  -41432;1;0;false;false;63;95;191;;;
                                  -41433;1;0;false;false;;;;;;
                                  -41434;2;0;false;false;63;95;191;;;
                                  -41436;1;0;false;false;;;;;;
                                  -41437;3;0;false;false;63;95;191;;;
                                  -41440;5;0;false;false;;;;;;
                                  -41445;1;0;false;false;63;95;191;;;
                                  -41446;2;0;false;false;;;;;;
                                  -41448;4;0;false;false;63;95;191;;;
                                  -41452;1;0;false;false;;;;;;
                                  -41453;9;0;false;false;63;95;191;;;
                                  -41462;4;0;false;false;;;;;;
                                  -41466;1;0;false;false;63;95;191;;;
                                  -41467;1;0;false;false;;;;;;
                                  -41468;7;1;false;false;127;159;191;;;
                                  -41475;7;0;false;false;63;95;191;;;
                                  -41482;1;0;false;false;;;;;;
                                  -41483;1;0;false;false;63;95;191;;;
                                  -41484;1;0;false;false;;;;;;
                                  -41485;17;0;false;false;63;95;191;;;
                                  -41502;1;0;false;false;;;;;;
                                  -41503;10;0;false;false;63;95;191;;;
                                  -41513;1;0;false;false;;;;;;
                                  -41514;3;0;false;false;63;95;191;;;
                                  -41517;1;0;false;false;;;;;;
                                  -41518;7;0;false;false;63;95;191;;;
                                  -41525;1;0;false;false;;;;;;
                                  -41526;6;0;false;false;63;95;191;;;
                                  -41532;4;0;false;false;;;;;;
                                  -41536;1;0;false;false;63;95;191;;;
                                  -41537;2;0;false;false;;;;;;
                                  -41539;2;0;false;false;63;95;191;;;
                                  -41541;1;0;false;false;;;;;;
                                  -41542;5;0;false;false;63;95;191;;;
                                  -41547;1;0;false;false;;;;;;
                                  -41548;2;0;false;false;63;95;191;;;
                                  -41550;1;0;false;false;;;;;;
                                  -41551;8;0;false;false;63;95;191;;;
                                  -41559;1;0;false;false;;;;;;
                                  -41560;5;0;false;false;63;95;191;;;
                                  -41565;1;0;false;false;;;;;;
                                  -41566;3;0;false;false;63;95;191;;;
                                  -41569;4;0;false;false;;;;;;
                                  -41573;2;0;false;false;63;95;191;;;
                                  -41575;3;0;false;false;;;;;;
                                  -41578;6;1;false;false;127;0;85;;;
                                  -41584;1;0;false;false;;;;;;
                                  -41585;28;0;false;false;0;0;0;;;
                                  -41613;1;0;false;false;;;;;;
                                  -41614;7;0;false;false;0;0;0;;;
                                  -41621;1;0;false;false;;;;;;
                                  -41622;17;0;false;false;0;0;0;;;
                                  -41639;1;0;false;false;;;;;;
                                  -41640;8;0;false;false;0;0;0;;;
                                  -41648;1;0;false;false;;;;;;
                                  -41649;1;0;false;false;0;0;0;;;
                                  -41650;4;0;false;false;;;;;;
                                  -41654;4;1;false;false;127;0;85;;;
                                  -41658;7;0;false;false;0;0;0;;;
                                  -41665;1;0;false;false;;;;;;
                                  -41666;1;0;false;false;0;0;0;;;
                                  -41667;1;0;false;false;;;;;;
                                  -41668;7;0;false;false;0;0;0;;;
                                  -41675;4;0;false;false;;;;;;
                                  -41679;4;1;false;false;127;0;85;;;
                                  -41683;8;0;false;false;0;0;0;;;
                                  -41691;1;0;false;false;;;;;;
                                  -41692;1;0;false;false;0;0;0;;;
                                  -41693;1;0;false;false;;;;;;
                                  -41694;8;0;false;false;0;0;0;;;
                                  -41702;4;0;false;false;;;;;;
                                  -41706;4;1;false;false;127;0;85;;;
                                  -41710;10;0;false;false;0;0;0;;;
                                  -41720;1;0;false;false;;;;;;
                                  -41721;1;0;false;false;0;0;0;;;
                                  -41722;1;0;false;false;;;;;;
                                  -41723;23;0;false;false;0;0;0;;;
                                  -41746;4;0;false;false;;;;;;
                                  -41750;9;0;false;false;0;0;0;;;
                                  -41759;1;0;false;false;;;;;;
                                  -41760;1;0;false;false;0;0;0;;;
                                  -41761;1;0;false;false;;;;;;
                                  -41762;3;1;false;false;127;0;85;;;
                                  -41765;1;0;false;false;;;;;;
                                  -41766;3;1;false;false;127;0;85;;;
                                  -41769;12;0;false;false;0;0;0;;;
                                  -41781;4;0;false;false;;;;;;
                                  -41785;8;0;false;false;0;0;0;;;
                                  -41793;1;0;false;false;;;;;;
                                  -41794;10;0;false;false;0;0;0;;;
                                  -41804;1;0;false;false;;;;;;
                                  -41805;5;1;false;false;127;0;85;;;
                                  -41810;2;0;false;false;0;0;0;;;
                                  -41812;3;0;false;false;;;;;;
                                  -41815;1;0;false;false;0;0;0;;;
                                  -41816;3;0;false;false;;;;;;
                                  -41819;3;0;false;false;63;95;191;;;
                                  -41822;4;0;false;false;;;;;;
                                  -41826;1;0;false;false;63;95;191;;;
                                  -41827;1;0;false;false;;;;;;
                                  -41828;10;0;false;false;63;95;191;;;
                                  -41838;1;0;false;false;;;;;;
                                  -41839;3;0;false;false;63;95;191;;;
                                  -41842;1;0;false;false;;;;;;
                                  -41843;5;0;false;false;63;95;191;;;
                                  -41848;1;0;false;false;;;;;;
                                  -41849;2;0;false;false;63;95;191;;;
                                  -41851;1;0;false;false;;;;;;
                                  -41852;4;0;false;false;63;95;191;;;
                                  -41856;1;0;false;false;;;;;;
                                  -41857;4;0;false;false;63;95;191;;;
                                  -41861;1;0;false;false;;;;;;
                                  -41862;2;0;false;false;63;95;191;;;
                                  -41864;1;0;false;false;;;;;;
                                  -41865;3;0;false;false;63;95;191;;;
                                  -41868;1;0;false;false;;;;;;
                                  -41869;5;0;false;false;63;95;191;;;
                                  -41874;1;0;false;false;;;;;;
                                  -41875;5;0;false;false;63;95;191;;;
                                  -41880;1;0;false;false;;;;;;
                                  -41881;2;0;false;false;63;95;191;;;
                                  -41883;1;0;false;false;;;;;;
                                  -41884;2;0;false;false;63;95;191;;;
                                  -41886;1;0;false;false;;;;;;
                                  -41887;3;0;false;false;63;95;191;;;
                                  -41890;4;0;false;false;;;;;;
                                  -41894;1;0;false;false;63;95;191;;;
                                  -41895;1;0;false;false;;;;;;
                                  -41896;3;0;false;false;63;95;191;;;
                                  -41899;1;0;false;false;;;;;;
                                  -41900;4;0;false;false;63;95;191;;;
                                  -41904;1;0;false;false;;;;;;
                                  -41905;10;0;false;false;63;95;191;;;
                                  -41915;1;0;false;false;;;;;;
                                  -41916;4;0;false;false;63;95;191;;;
                                  -41920;4;0;false;false;;;;;;
                                  -41924;1;0;false;false;63;95;191;;;
                                  -41925;1;0;false;false;;;;;;
                                  -41926;2;0;false;false;63;95;191;;;
                                  -41928;1;0;false;false;;;;;;
                                  -41929;3;0;false;false;63;95;191;;;
                                  -41932;1;0;false;false;;;;;;
                                  -41933;4;0;false;false;63;95;191;;;
                                  -41937;1;0;false;false;;;;;;
                                  -41938;2;0;false;false;63;95;191;;;
                                  -41940;1;0;false;false;;;;;;
                                  -41941;3;0;false;false;63;95;191;;;
                                  -41944;1;0;false;false;;;;;;
                                  -41945;5;0;false;false;63;95;191;;;
                                  -41950;1;0;false;false;;;;;;
                                  -41951;5;0;false;false;63;95;191;;;
                                  -41956;1;0;false;false;;;;;;
                                  -41957;2;0;false;false;63;95;191;;;
                                  -41959;1;0;false;false;;;;;;
                                  -41960;5;0;false;false;63;95;191;;;
                                  -41965;1;0;false;false;;;;;;
                                  -41966;4;0;false;false;63;95;191;;;
                                  -41970;1;0;false;false;;;;;;
                                  -41971;3;0;false;false;63;95;191;;;
                                  -41974;1;0;false;false;;;;;;
                                  -41975;9;0;false;false;63;95;191;;;
                                  -41984;1;0;false;false;;;;;;
                                  -41985;6;0;false;false;63;95;191;;;
                                  -41991;4;0;false;false;;;;;;
                                  -41995;1;0;false;false;63;95;191;;;
                                  -41996;1;0;false;false;;;;;;
                                  -41997;5;0;false;false;63;95;191;;;
                                  -42002;1;0;false;false;;;;;;
                                  -42003;3;0;false;false;63;95;191;;;
                                  -42006;1;0;false;false;;;;;;
                                  -42007;7;0;false;false;63;95;191;;;
                                  -42014;1;0;false;false;;;;;;
                                  -42015;4;0;false;false;63;95;191;;;
                                  -42019;1;0;false;false;;;;;;
                                  -42020;5;0;false;false;63;95;191;;;
                                  -42025;1;0;false;false;;;;;;
                                  -42026;2;0;false;false;63;95;191;;;
                                  -42028;1;0;false;false;;;;;;
                                  -42029;8;0;false;false;63;95;191;;;
                                  -42037;4;0;false;false;;;;;;
                                  -42041;1;0;false;false;63;95;191;;;
                                  -42042;1;0;false;false;;;;;;
                                  -42043;3;0;false;false;127;127;159;;;
                                  -42046;4;0;false;false;;;;;;
                                  -42050;1;0;false;false;63;95;191;;;
                                  -42051;5;0;false;false;;;;;;
                                  -42056;1;0;false;false;63;95;191;;;
                                  -42057;1;0;false;false;;;;;;
                                  -42058;7;1;false;false;127;159;191;;;
                                  -42065;9;0;false;false;63;95;191;;;
                                  -42074;1;0;false;false;;;;;;
                                  -42075;5;0;false;false;63;95;191;;;
                                  -42080;1;0;false;false;;;;;;
                                  -42081;4;0;false;false;63;95;191;;;
                                  -42085;1;0;false;false;;;;;;
                                  -42086;2;0;false;false;63;95;191;;;
                                  -42088;1;0;false;false;;;;;;
                                  -42089;9;0;false;false;63;95;191;;;
                                  -42098;1;0;false;false;;;;;;
                                  -42099;3;0;false;false;63;95;191;;;
                                  -42102;1;0;false;false;;;;;;
                                  -42103;4;0;false;false;63;95;191;;;
                                  -42107;1;0;false;false;;;;;;
                                  -42108;5;0;false;false;63;95;191;;;
                                  -42113;1;0;false;false;;;;;;
                                  -42114;2;0;false;false;63;95;191;;;
                                  -42116;4;0;false;false;;;;;;
                                  -42120;1;0;false;false;63;95;191;;;
                                  -42121;1;0;false;false;;;;;;
                                  -42122;7;1;false;false;127;159;191;;;
                                  -42129;9;0;false;false;63;95;191;;;
                                  -42138;1;0;false;false;;;;;;
                                  -42139;6;0;false;false;63;95;191;;;
                                  -42145;1;0;false;false;;;;;;
                                  -42146;2;0;false;false;63;95;191;;;
                                  -42148;1;0;false;false;;;;;;
                                  -42149;5;0;false;false;63;95;191;;;
                                  -42154;1;0;false;false;;;;;;
                                  -42155;2;0;false;false;63;95;191;;;
                                  -42157;1;0;false;false;;;;;;
                                  -42158;9;0;false;false;63;95;191;;;
                                  -42167;1;0;false;false;;;;;;
                                  -42168;3;0;false;false;63;95;191;;;
                                  -42171;1;0;false;false;;;;;;
                                  -42172;4;0;false;false;63;95;191;;;
                                  -42176;1;0;false;false;;;;;;
                                  -42177;5;0;false;false;63;95;191;;;
                                  -42182;1;0;false;false;;;;;;
                                  -42183;3;0;false;false;63;95;191;;;
                                  -42186;4;0;false;false;;;;;;
                                  -42190;2;0;false;false;63;95;191;;;
                                  -42192;3;0;false;false;;;;;;
                                  -42195;6;1;false;false;127;0;85;;;
                                  -42201;1;0;false;false;;;;;;
                                  -42202;4;1;false;false;127;0;85;;;
                                  -42206;1;0;false;false;;;;;;
                                  -42207;10;0;false;false;0;0;0;;;
                                  -42217;3;1;false;false;127;0;85;;;
                                  -42220;1;0;false;false;;;;;;
                                  -42221;10;0;false;false;0;0;0;;;
                                  -42231;1;0;false;false;;;;;;
                                  -42232;3;1;false;false;127;0;85;;;
                                  -42235;1;0;false;false;;;;;;
                                  -42236;10;0;false;false;0;0;0;;;
                                  -42246;1;0;false;false;;;;;;
                                  -42247;1;0;false;false;0;0;0;;;
                                  -42248;4;0;false;false;;;;;;
                                  -42252;3;1;false;false;127;0;85;;;
                                  -42255;1;0;false;false;;;;;;
                                  -42256;10;0;false;false;0;0;0;;;
                                  -42266;1;0;false;false;;;;;;
                                  -42267;1;0;false;false;0;0;0;;;
                                  -42268;1;0;false;false;;;;;;
                                  -42269;2;0;false;false;0;0;0;;;
                                  -42271;4;0;false;false;;;;;;
                                  -42275;3;1;false;false;127;0;85;;;
                                  -42278;1;0;false;false;;;;;;
                                  -42279;7;0;false;false;0;0;0;;;
                                  -42286;1;0;false;false;;;;;;
                                  -42287;1;0;false;false;0;0;0;;;
                                  -42288;1;0;false;false;;;;;;
                                  -42289;9;0;false;false;0;0;0;;;
                                  -42298;1;0;false;false;;;;;;
                                  -42299;1;0;false;false;0;0;0;;;
                                  -42300;1;0;false;false;;;;;;
                                  -42301;10;0;false;false;0;0;0;;;
                                  -42311;9;0;false;false;;;;;;
                                  -42320;2;1;false;false;127;0;85;;;
                                  -42322;1;0;false;false;;;;;;
                                  -42323;10;0;false;false;0;0;0;;;
                                  -42333;1;0;false;false;;;;;;
                                  -42334;1;0;false;false;0;0;0;;;
                                  -42335;1;0;false;false;;;;;;
                                  -42336;1;0;false;false;0;0;0;;;
                                  -42337;1;0;false;false;;;;;;
                                  -42338;2;0;false;false;0;0;0;;;
                                  -42340;1;0;false;false;;;;;;
                                  -42341;7;0;false;false;0;0;0;;;
                                  -42348;1;0;false;false;;;;;;
                                  -42349;1;0;false;false;0;0;0;;;
                                  -42350;1;0;false;false;;;;;;
                                  -42351;17;0;false;false;0;0;0;;;
                                  -42368;1;0;false;false;;;;;;
                                  -42369;1;0;false;false;0;0;0;;;
                                  -42370;5;0;false;false;;;;;;
                                  -42375;6;1;false;false;127;0;85;;;
                                  -42381;1;0;false;false;0;0;0;;;
                                  -42382;4;0;false;false;;;;;;
                                  -42386;1;0;false;false;0;0;0;;;
                                  -42387;4;0;false;false;;;;;;
                                  -42391;10;0;false;false;0;0;0;;;
                                  -42401;1;0;false;false;;;;;;
                                  -42402;1;0;false;false;0;0;0;;;
                                  -42403;1;0;false;false;;;;;;
                                  -42404;16;0;false;false;0;0;0;;;
                                  -42420;4;0;false;false;;;;;;
                                  -42424;3;1;false;false;127;0;85;;;
                                  -42427;1;0;false;false;;;;;;
                                  -42428;1;0;false;false;0;0;0;;;
                                  -42429;3;1;false;false;127;0;85;;;
                                  -42432;1;0;false;false;;;;;;
                                  -42433;1;0;false;false;0;0;0;;;
                                  -42434;1;0;false;false;;;;;;
                                  -42435;1;0;false;false;0;0;0;;;
                                  -42436;1;0;false;false;;;;;;
                                  -42437;10;0;false;false;0;0;0;;;
                                  -42447;1;0;false;false;;;;;;
                                  -42448;1;0;false;false;0;0;0;;;
                                  -42449;1;0;false;false;;;;;;
                                  -42450;1;0;false;false;0;0;0;;;
                                  -42451;1;0;false;false;;;;;;
                                  -42452;8;0;false;false;0;0;0;;;
                                  -42460;1;0;false;false;;;;;;
                                  -42461;4;0;false;false;0;0;0;;;
                                  -42465;1;0;false;false;;;;;;
                                  -42466;1;0;false;false;0;0;0;;;
                                  -42467;5;0;false;false;;;;;;
                                  -42472;2;1;false;false;127;0;85;;;
                                  -42474;1;0;false;false;;;;;;
                                  -42475;13;0;false;false;0;0;0;;;
                                  -42488;1;0;false;false;;;;;;
                                  -42489;2;0;false;false;0;0;0;;;
                                  -42491;1;0;false;false;;;;;;
                                  -42492;3;0;false;false;0;0;0;;;
                                  -42495;1;0;false;false;;;;;;
                                  -42496;1;0;false;false;0;0;0;;;
                                  -42497;6;0;false;false;;;;;;
                                  -42503;6;0;false;false;0;0;0;;;
                                  -42509;1;0;false;false;;;;;;
                                  -42510;4;0;false;false;0;0;0;;;
                                  -42514;1;0;false;false;;;;;;
                                  -42515;1;0;false;false;0;0;0;;;
                                  -42516;1;0;false;false;;;;;;
                                  -42517;19;0;false;false;0;0;0;;;
                                  -42536;6;0;false;false;;;;;;
                                  -42542;3;1;false;false;127;0;85;;;
                                  -42545;1;0;false;false;;;;;;
                                  -42546;10;0;false;false;0;0;0;;;
                                  -42556;1;0;false;false;;;;;;
                                  -42557;1;0;false;false;0;0;0;;;
                                  -42558;1;0;false;false;;;;;;
                                  -42559;27;0;false;false;0;0;0;;;
                                  -42586;6;0;false;false;;;;;;
                                  -42592;12;0;false;false;0;0;0;;;
                                  -42604;1;0;false;false;;;;;;
                                  -42605;1;0;false;false;0;0;0;;;
                                  -42606;1;0;false;false;;;;;;
                                  -42607;18;0;false;false;0;0;0;;;
                                  -42625;1;0;false;false;;;;;;
                                  -42626;11;0;false;false;0;0;0;;;
                                  -42637;1;0;false;false;;;;;;
                                  -42638;1;0;false;false;0;0;0;;;
                                  -42639;1;0;false;false;;;;;;
                                  -42640;11;0;false;false;0;0;0;;;
                                  -42651;5;0;false;false;;;;;;
                                  -42656;1;0;false;false;0;0;0;;;
                                  -42657;5;0;false;false;;;;;;
                                  -42662;2;1;false;false;127;0;85;;;
                                  -42664;1;0;false;false;;;;;;
                                  -42665;13;0;false;false;0;0;0;;;
                                  -42678;1;0;false;false;;;;;;
                                  -42679;1;0;false;false;0;0;0;;;
                                  -42680;1;0;false;false;;;;;;
                                  -42681;9;0;false;false;0;0;0;;;
                                  -42690;1;0;false;false;;;;;;
                                  -42691;1;0;false;false;0;0;0;;;
                                  -42692;6;0;false;false;;;;;;
                                  -42698;8;0;false;false;0;0;0;;;
                                  -42706;1;0;false;false;;;;;;
                                  -42707;1;0;false;false;0;0;0;;;
                                  -42708;1;0;false;false;;;;;;
                                  -42709;13;0;false;false;0;0;0;;;
                                  -42722;6;0;false;false;;;;;;
                                  -42728;17;0;false;false;0;0;0;;;
                                  -42745;1;0;false;false;;;;;;
                                  -42746;1;0;false;false;0;0;0;;;
                                  -42747;1;0;false;false;;;;;;
                                  -42748;2;0;false;false;0;0;0;;;
                                  -42750;5;0;false;false;;;;;;
                                  -42755;1;0;false;false;0;0;0;;;
                                  -42756;4;0;false;false;;;;;;
                                  -42760;1;0;false;false;0;0;0;;;
                                  -42761;3;0;false;false;;;;;;
                                  -42764;1;0;false;false;0;0;0;;;
                                  -42765;3;0;false;false;;;;;;
                                  -42768;3;0;false;false;63;95;191;;;
                                  -42771;5;0;false;false;;;;;;
                                  -42776;1;0;false;false;63;95;191;;;
                                  -42777;1;0;false;false;;;;;;
                                  -42778;10;0;false;false;63;95;191;;;
                                  -42788;1;0;false;false;;;;;;
                                  -42789;3;0;false;false;63;95;191;;;
                                  -42792;1;0;false;false;;;;;;
                                  -42793;5;0;false;false;63;95;191;;;
                                  -42798;1;0;false;false;;;;;;
                                  -42799;2;0;false;false;63;95;191;;;
                                  -42801;1;0;false;false;;;;;;
                                  -42802;3;0;false;false;63;95;191;;;
                                  -42805;1;0;false;false;;;;;;
                                  -42806;7;0;false;false;63;95;191;;;
                                  -42813;1;0;false;false;;;;;;
                                  -42814;5;0;false;false;63;95;191;;;
                                  -42819;1;0;false;false;;;;;;
                                  -42820;2;0;false;false;63;95;191;;;
                                  -42822;1;0;false;false;;;;;;
                                  -42823;3;0;false;false;63;95;191;;;
                                  -42826;1;0;false;false;;;;;;
                                  -42827;9;0;false;false;63;95;191;;;
                                  -42836;5;0;false;false;;;;;;
                                  -42841;1;0;false;false;63;95;191;;;
                                  -42842;1;0;false;false;;;;;;
                                  -42843;6;0;false;false;63;95;191;;;
                                  -42849;4;0;false;false;;;;;;
                                  -42853;1;0;false;false;63;95;191;;;
                                  -42854;1;0;false;false;;;;;;
                                  -42855;3;0;false;false;127;127;159;;;
                                  -42858;4;0;false;false;;;;;;
                                  -42862;1;0;false;false;63;95;191;;;
                                  -42863;4;0;false;false;;;;;;
                                  -42867;1;0;false;false;63;95;191;;;
                                  -42868;1;0;false;false;;;;;;
                                  -42869;7;1;false;false;127;159;191;;;
                                  -42876;9;0;false;false;63;95;191;;;
                                  -42885;1;0;false;false;;;;;;
                                  -42886;3;0;false;false;63;95;191;;;
                                  -42889;1;0;false;false;;;;;;
                                  -42890;5;0;false;false;63;95;191;;;
                                  -42895;1;0;false;false;;;;;;
                                  -42896;7;0;false;false;63;95;191;;;
                                  -42903;1;0;false;false;;;;;;
                                  -42904;4;0;false;false;63;95;191;;;
                                  -42908;4;0;false;false;;;;;;
                                  -42912;1;0;false;false;63;95;191;;;
                                  -42913;1;0;false;false;;;;;;
                                  -42914;7;1;false;false;127;159;191;;;
                                  -42921;12;0;false;false;63;95;191;;;
                                  -42933;1;0;false;false;;;;;;
                                  -42934;3;0;false;false;63;95;191;;;
                                  -42937;1;0;false;false;;;;;;
                                  -42938;6;0;false;false;63;95;191;;;
                                  -42944;1;0;false;false;;;;;;
                                  -42945;2;0;false;false;63;95;191;;;
                                  -42947;1;0;false;false;;;;;;
                                  -42948;8;0;false;false;63;95;191;;;
                                  -42956;1;0;false;false;;;;;;
                                  -42957;5;0;false;false;63;95;191;;;
                                  -42962;4;0;false;false;;;;;;
                                  -42966;2;0;false;false;63;95;191;;;
                                  -42968;5;0;false;false;;;;;;
                                  -42973;4;1;false;false;127;0;85;;;
                                  -42977;1;0;false;false;;;;;;
                                  -42978;17;0;false;false;0;0;0;;;
                                  -42995;3;1;false;false;127;0;85;;;
                                  -42998;1;0;false;false;;;;;;
                                  -42999;10;0;false;false;0;0;0;;;
                                  -43009;1;0;false;false;;;;;;
                                  -43010;3;1;false;false;127;0;85;;;
                                  -43013;1;0;false;false;;;;;;
                                  -43014;13;0;false;false;0;0;0;;;
                                  -43027;1;0;false;false;;;;;;
                                  -43028;1;0;false;false;0;0;0;;;
                                  -43029;4;0;false;false;;;;;;
                                  -43033;3;1;false;false;127;0;85;;;
                                  -43036;1;0;false;false;;;;;;
                                  -43037;8;0;false;false;0;0;0;;;
                                  -43045;1;0;false;false;;;;;;
                                  -43046;1;0;false;false;0;0;0;;;
                                  -43047;1;0;false;false;;;;;;
                                  -43048;21;0;false;false;0;0;0;;;
                                  -43069;4;0;false;false;;;;;;
                                  -43073;3;1;false;false;127;0;85;;;
                                  -43076;1;0;false;false;;;;;;
                                  -43077;10;0;false;false;0;0;0;;;
                                  -43087;1;0;false;false;;;;;;
                                  -43088;1;0;false;false;0;0;0;;;
                                  -43089;1;0;false;false;;;;;;
                                  -43090;33;0;false;false;0;0;0;;;
                                  -43123;1;0;false;false;;;;;;
                                  -43124;9;0;false;false;0;0;0;;;
                                  -43133;1;0;false;false;;;;;;
                                  -43134;1;0;false;false;0;0;0;;;
                                  -43135;1;0;false;false;;;;;;
                                  -43136;14;0;false;false;0;0;0;;;
                                  -43150;8;0;false;false;;;;;;
                                  -43158;9;0;false;false;0;0;0;;;
                                  -43167;1;0;false;false;;;;;;
                                  -43168;1;0;false;false;0;0;0;;;
                                  -43169;1;0;false;false;;;;;;
                                  -43170;19;0;false;false;0;0;0;;;
                                  -43189;1;0;false;false;;;;;;
                                  -43190;10;0;false;false;0;0;0;;;
                                  -43200;4;0;false;false;;;;;;
                                  -43204;20;0;false;false;0;0;0;;;
                                  -43224;1;0;false;false;;;;;;
                                  -43225;10;0;false;false;0;0;0;;;
                                  -43235;1;0;false;false;;;;;;
                                  -43236;1;0;false;false;0;0;0;;;
                                  -43237;1;0;false;false;;;;;;
                                  -43238;9;0;false;false;0;0;0;;;
                                  -43247;1;0;false;false;;;;;;
                                  -43248;1;0;false;false;0;0;0;;;
                                  -43249;1;0;false;false;;;;;;
                                  -43250;3;0;false;false;0;0;0;;;
                                  -43253;3;0;false;false;;;;;;
                                  -43256;1;0;false;false;0;0;0;;;
                                  -43257;3;0;false;false;;;;;;
                                  -43260;3;0;false;false;63;95;191;;;
                                  -43263;4;0;false;false;;;;;;
                                  -43267;1;0;false;false;63;95;191;;;
                                  -43268;1;0;false;false;;;;;;
                                  -43269;8;0;false;false;63;95;191;;;
                                  -43277;1;0;false;false;;;;;;
                                  -43278;3;0;false;false;63;95;191;;;
                                  -43281;1;0;false;false;;;;;;
                                  -43282;5;0;false;false;63;95;191;;;
                                  -43287;1;0;false;false;;;;;;
                                  -43288;2;0;false;false;63;95;191;;;
                                  -43290;1;0;false;false;;;;;;
                                  -43291;3;0;false;false;63;95;191;;;
                                  -43294;1;0;false;false;;;;;;
                                  -43295;5;0;false;false;63;95;191;;;
                                  -43300;1;0;false;false;;;;;;
                                  -43301;5;0;false;false;63;95;191;;;
                                  -43306;4;0;false;false;;;;;;
                                  -43310;1;0;false;false;63;95;191;;;
                                  -43311;1;0;false;false;;;;;;
                                  -43312;3;0;false;false;127;127;159;;;
                                  -43315;4;0;false;false;;;;;;
                                  -43319;1;0;false;false;63;95;191;;;
                                  -43320;5;0;false;false;;;;;;
                                  -43325;1;0;false;false;63;95;191;;;
                                  -43326;1;0;false;false;;;;;;
                                  -43327;7;1;false;false;127;159;191;;;
                                  -43334;4;0;false;false;63;95;191;;;
                                  -43338;1;0;false;false;;;;;;
                                  -43339;3;0;false;false;63;95;191;;;
                                  -43342;1;0;false;false;;;;;;
                                  -43343;4;0;false;false;63;95;191;;;
                                  -43347;1;0;false;false;;;;;;
                                  -43348;2;0;false;false;63;95;191;;;
                                  -43350;1;0;false;false;;;;;;
                                  -43351;7;0;false;false;63;95;191;;;
                                  -43358;4;0;false;false;;;;;;
                                  -43362;1;0;false;false;63;95;191;;;
                                  -43363;1;0;false;false;;;;;;
                                  -43364;7;1;false;false;127;159;191;;;
                                  -43371;10;0;false;false;63;95;191;;;
                                  -43381;1;0;false;false;;;;;;
                                  -43382;5;0;false;false;63;95;191;;;
                                  -43387;1;0;false;false;;;;;;
                                  -43388;6;0;false;false;63;95;191;;;
                                  -43394;1;0;false;false;;;;;;
                                  -43395;2;0;false;false;63;95;191;;;
                                  -43397;1;0;false;false;;;;;;
                                  -43398;3;0;false;false;63;95;191;;;
                                  -43401;1;0;false;false;;;;;;
                                  -43402;4;0;false;false;63;95;191;;;
                                  -43406;1;0;false;false;;;;;;
                                  -43407;2;0;false;false;63;95;191;;;
                                  -43409;1;0;false;false;;;;;;
                                  -43410;8;0;false;false;63;95;191;;;
                                  -43418;1;0;false;false;;;;;;
                                  -43419;8;0;false;false;63;95;191;;;
                                  -43427;5;0;false;false;;;;;;
                                  -43432;1;0;false;false;63;95;191;;;
                                  -43433;2;0;false;false;;;;;;
                                  -43435;2;0;false;false;63;95;191;;;
                                  -43437;1;0;false;false;;;;;;
                                  -43438;3;0;false;false;63;95;191;;;
                                  -43441;1;0;false;false;;;;;;
                                  -43442;5;0;false;false;63;95;191;;;
                                  -43447;1;0;false;false;;;;;;
                                  -43448;2;0;false;false;63;95;191;;;
                                  -43450;1;0;false;false;;;;;;
                                  -43451;3;0;false;false;63;95;191;;;
                                  -43454;1;0;false;false;;;;;;
                                  -43455;8;0;false;false;63;95;191;;;
                                  -43463;4;0;false;false;;;;;;
                                  -43467;1;0;false;false;63;95;191;;;
                                  -43468;1;0;false;false;;;;;;
                                  -43469;8;1;false;false;127;159;191;;;
                                  -43477;3;0;false;false;63;95;191;;;
                                  -43480;1;0;false;false;;;;;;
                                  -43481;5;0;false;false;63;95;191;;;
                                  -43486;1;0;false;false;;;;;;
                                  -43487;2;0;false;false;63;95;191;;;
                                  -43489;1;0;false;false;;;;;;
                                  -43490;3;0;false;false;63;95;191;;;
                                  -43493;1;0;false;false;;;;;;
                                  -43494;5;0;false;false;63;95;191;;;
                                  -43499;1;0;false;false;;;;;;
                                  -43500;4;0;false;false;63;95;191;;;
                                  -43504;4;0;false;false;;;;;;
                                  -43508;2;0;false;false;63;95;191;;;
                                  -43510;3;0;false;false;;;;;;
                                  -43513;3;1;false;false;127;0;85;;;
                                  -43516;1;0;false;false;;;;;;
                                  -43517;19;0;false;false;0;0;0;;;
                                  -43536;1;0;false;false;;;;;;
                                  -43537;5;0;false;false;0;0;0;;;
                                  -43542;1;0;false;false;;;;;;
                                  -43543;3;1;false;false;127;0;85;;;
                                  -43546;1;0;false;false;;;;;;
                                  -43547;11;0;false;false;0;0;0;;;
                                  -43558;1;0;false;false;;;;;;
                                  -43559;1;0;false;false;0;0;0;;;
                                  -43560;4;0;false;false;;;;;;
                                  -43564;10;0;false;false;0;0;0;;;
                                  -43574;1;0;false;false;;;;;;
                                  -43575;6;0;false;false;0;0;0;;;
                                  -43581;1;0;false;false;;;;;;
                                  -43582;1;0;false;false;0;0;0;;;
                                  -43583;1;0;false;false;;;;;;
                                  -43584;28;0;false;false;0;0;0;;;
                                  -43612;1;0;false;false;;;;;;
                                  -43613;12;0;false;false;0;0;0;;;
                                  -43625;4;0;false;false;;;;;;
                                  -43629;9;0;false;false;0;0;0;;;
                                  -43638;1;0;false;false;;;;;;
                                  -43639;4;0;false;false;0;0;0;;;
                                  -43643;1;0;false;false;;;;;;
                                  -43644;1;0;false;false;0;0;0;;;
                                  -43645;1;0;false;false;;;;;;
                                  -43646;24;0;false;false;0;0;0;;;
                                  -43670;4;0;false;false;;;;;;
                                  -43674;35;0;false;false;0;0;0;;;
                                  -43709;4;0;false;false;;;;;;
                                  -43713;6;1;false;false;127;0;85;;;
                                  -43719;1;0;false;false;;;;;;
                                  -43720;6;0;false;false;0;0;0;;;
                                  -43726;1;0;false;false;;;;;;
                                  -43727;1;0;false;false;0;0;0;;;
                                  -43728;1;0;false;false;;;;;;
                                  -43729;10;0;false;false;0;0;0;;;
                                  -43739;1;0;false;false;;;;;;
                                  -43740;1;0;false;false;0;0;0;;;
                                  -43741;1;0;false;false;;;;;;
                                  -43742;10;0;false;false;0;0;0;;;
                                  -43752;1;0;false;false;;;;;;
                                  -43753;1;0;false;false;0;0;0;;;
                                  -43754;1;0;false;false;;;;;;
                                  -43755;12;0;false;false;0;0;0;;;
                                  -43767;3;0;false;false;;;;;;
                                  -43770;1;0;false;false;0;0;0;;;
                                  -43771;3;0;false;false;;;;;;
                                  -43774;3;0;false;false;63;95;191;;;
                                  -43777;4;0;false;false;;;;;;
                                  -43781;1;0;false;false;63;95;191;;;
                                  -43782;1;0;false;false;;;;;;
                                  -43783;5;0;false;false;63;95;191;;;
                                  -43788;1;0;false;false;;;;;;
                                  -43789;3;0;false;false;63;95;191;;;
                                  -43792;1;0;false;false;;;;;;
                                  -43793;6;0;false;false;127;127;159;;;
                                  -43799;9;0;false;false;63;95;191;;;
                                  -43808;7;0;false;false;127;127;159;;;
                                  -43815;1;0;false;false;;;;;;
                                  -43816;5;0;false;false;63;95;191;;;
                                  -43821;1;0;false;false;;;;;;
                                  -43822;2;0;false;false;63;95;191;;;
                                  -43824;1;0;false;false;;;;;;
                                  -43825;10;0;false;false;63;95;191;;;
                                  -43835;1;0;false;false;;;;;;
                                  -43836;3;0;false;false;63;95;191;;;
                                  -43839;1;0;false;false;;;;;;
                                  -43840;4;0;false;false;63;95;191;;;
                                  -43844;1;0;false;false;;;;;;
                                  -43845;5;0;false;false;63;95;191;;;
                                  -43850;4;0;false;false;;;;;;
                                  -43854;1;0;false;false;63;95;191;;;
                                  -43855;1;0;false;false;;;;;;
                                  -43856;12;0;false;false;63;95;191;;;
                                  -43868;4;0;false;false;;;;;;
                                  -43872;1;0;false;false;63;95;191;;;
                                  -43873;1;0;false;false;;;;;;
                                  -43874;3;0;false;false;127;127;159;;;
                                  -43877;4;0;false;false;;;;;;
                                  -43881;1;0;false;false;63;95;191;;;
                                  -43882;4;0;false;false;;;;;;
                                  -43886;1;0;false;false;63;95;191;;;
                                  -43887;1;0;false;false;;;;;;
                                  -43888;7;1;false;false;127;159;191;;;
                                  -43895;8;0;false;false;63;95;191;;;
                                  -43903;1;0;false;false;;;;;;
                                  -43904;3;0;false;false;63;95;191;;;
                                  -43907;1;0;false;false;;;;;;
                                  -43908;6;0;false;false;63;95;191;;;
                                  -43914;1;0;false;false;;;;;;
                                  -43915;2;0;false;false;63;95;191;;;
                                  -43917;1;0;false;false;;;;;;
                                  -43918;8;0;false;false;63;95;191;;;
                                  -43926;1;0;false;false;;;;;;
                                  -43927;2;0;false;false;63;95;191;;;
                                  -43929;1;0;false;false;;;;;;
                                  -43930;8;0;false;false;63;95;191;;;
                                  -43938;1;0;false;false;;;;;;
                                  -43939;3;0;false;false;63;95;191;;;
                                  -43942;1;0;false;false;;;;;;
                                  -43943;5;0;false;false;63;95;191;;;
                                  -43948;1;0;false;false;;;;;;
                                  -43949;2;0;false;false;63;95;191;;;
                                  -43951;4;0;false;false;;;;;;
                                  -43955;2;0;false;false;63;95;191;;;
                                  -43957;3;0;false;false;;;;;;
                                  -43960;4;1;false;false;127;0;85;;;
                                  -43964;1;0;false;false;;;;;;
                                  -43965;12;0;false;false;0;0;0;;;
                                  -43977;3;1;false;false;127;0;85;;;
                                  -43980;1;0;false;false;;;;;;
                                  -43981;9;0;false;false;0;0;0;;;
                                  -43990;1;0;false;false;;;;;;
                                  -43991;1;0;false;false;0;0;0;;;
                                  -43992;4;0;false;false;;;;;;
                                  -43996;3;1;false;false;127;0;85;;;
                                  -43999;1;0;false;false;;;;;;
                                  -44000;4;0;false;false;0;0;0;;;
                                  -44004;1;0;false;false;;;;;;
                                  -44005;1;0;false;false;0;0;0;;;
                                  -44006;1;0;false;false;;;;;;
                                  -44007;17;0;false;false;0;0;0;;;
                                  -44024;4;0;false;false;;;;;;
                                  -44028;2;1;false;false;127;0;85;;;
                                  -44030;1;0;false;false;;;;;;
                                  -44031;5;0;false;false;0;0;0;;;
                                  -44036;1;0;false;false;;;;;;
                                  -44037;1;0;false;false;0;0;0;;;
                                  -44038;1;0;false;false;;;;;;
                                  -44039;9;0;false;false;0;0;0;;;
                                  -44048;1;0;false;false;;;;;;
                                  -44049;2;0;false;false;0;0;0;;;
                                  -44051;1;0;false;false;;;;;;
                                  -44052;9;0;false;false;0;0;0;;;
                                  -44061;1;0;false;false;;;;;;
                                  -44062;1;0;false;false;0;0;0;;;
                                  -44063;5;0;false;false;;;;;;
                                  -44068;6;1;false;false;127;0;85;;;
                                  -44074;1;0;false;false;0;0;0;;;
                                  -44075;4;0;false;false;;;;;;
                                  -44079;1;0;false;false;0;0;0;;;
                                  -44080;4;0;false;false;;;;;;
                                  -44084;3;1;false;false;127;0;85;;;
                                  -44087;2;0;false;false;0;0;0;;;
                                  -44089;1;0;false;false;;;;;;
                                  -44090;8;0;false;false;0;0;0;;;
                                  -44098;1;0;false;false;;;;;;
                                  -44099;1;0;false;false;0;0;0;;;
                                  -44100;1;0;false;false;;;;;;
                                  -44101;3;1;false;false;127;0;85;;;
                                  -44104;1;0;false;false;;;;;;
                                  -44105;3;1;false;false;127;0;85;;;
                                  -44108;14;0;false;false;0;0;0;;;
                                  -44122;1;0;false;false;;;;;;
                                  -44123;1;0;false;false;0;0;0;;;
                                  -44124;1;0;false;false;;;;;;
                                  -44125;2;0;false;false;0;0;0;;;
                                  -44127;1;0;false;false;;;;;;
                                  -44128;4;0;false;false;0;0;0;;;
                                  -44132;1;0;false;false;;;;;;
                                  -44133;1;0;false;false;0;0;0;;;
                                  -44134;1;0;false;false;;;;;;
                                  -44135;11;0;false;false;0;0;0;;;
                                  -44146;4;0;false;false;;;;;;
                                  -44150;27;0;false;false;0;0;0;;;
                                  -44177;1;0;false;false;;;;;;
                                  -44178;2;0;false;false;0;0;0;;;
                                  -44180;1;0;false;false;;;;;;
                                  -44181;9;0;false;false;0;0;0;;;
                                  -44190;1;0;false;false;;;;;;
                                  -44191;2;0;false;false;0;0;0;;;
                                  -44193;1;0;false;false;;;;;;
                                  -44194;6;0;false;false;0;0;0;;;
                                  -44200;4;0;false;false;;;;;;
                                  -44204;9;0;false;false;0;0;0;;;
                                  -44213;1;0;false;false;;;;;;
                                  -44214;1;0;false;false;0;0;0;;;
                                  -44215;1;0;false;false;;;;;;
                                  -44216;9;0;false;false;0;0;0;;;
                                  -44225;4;0;false;false;;;;;;
                                  -44229;11;0;false;false;0;0;0;;;
                                  -44240;1;0;false;false;;;;;;
                                  -44241;16;0;false;false;0;0;0;;;
                                  -44257;1;0;false;false;;;;;;
                                  -44258;1;0;false;false;0;0;0;;;
                                  -44259;1;0;false;false;;;;;;
                                  -44260;5;0;false;false;0;0;0;;;
                                  -44265;1;0;false;false;;;;;;
                                  -44266;5;1;false;false;127;0;85;;;
                                  -44271;2;0;false;false;0;0;0;;;
                                  -44273;3;0;false;false;;;;;;
                                  -44276;1;0;false;false;0;0;0;;;
                                  -44277;3;0;false;false;;;;;;
                                  -44280;3;0;false;false;63;95;191;;;
                                  -44283;4;0;false;false;;;;;;
                                  -44287;1;0;false;false;63;95;191;;;
                                  -44288;1;0;false;false;;;;;;
                                  -44289;7;0;false;false;63;95;191;;;
                                  -44296;1;0;false;false;;;;;;
                                  -44297;3;0;false;false;63;95;191;;;
                                  -44300;1;0;false;false;;;;;;
                                  -44301;5;0;false;false;63;95;191;;;
                                  -44306;1;0;false;false;;;;;;
                                  -44307;2;0;false;false;63;95;191;;;
                                  -44309;1;0;false;false;;;;;;
                                  -44310;3;0;false;false;63;95;191;;;
                                  -44313;1;0;false;false;;;;;;
                                  -44314;7;0;false;false;63;95;191;;;
                                  -44321;1;0;false;false;;;;;;
                                  -44322;8;0;false;false;63;95;191;;;
                                  -44330;1;0;false;false;;;;;;
                                  -44331;5;0;false;false;63;95;191;;;
                                  -44336;4;0;false;false;;;;;;
                                  -44340;1;0;false;false;63;95;191;;;
                                  -44341;1;0;false;false;;;;;;
                                  -44342;3;0;false;false;127;127;159;;;
                                  -44345;4;0;false;false;;;;;;
                                  -44349;1;0;false;false;63;95;191;;;
                                  -44350;4;0;false;false;;;;;;
                                  -44354;1;0;false;false;63;95;191;;;
                                  -44355;1;0;false;false;;;;;;
                                  -44356;8;1;false;false;127;159;191;;;
                                  -44364;3;0;false;false;63;95;191;;;
                                  -44367;1;0;false;false;;;;;;
                                  -44368;5;0;false;false;63;95;191;;;
                                  -44373;1;0;false;false;;;;;;
                                  -44374;2;0;false;false;63;95;191;;;
                                  -44376;1;0;false;false;;;;;;
                                  -44377;3;0;false;false;63;95;191;;;
                                  -44380;1;0;false;false;;;;;;
                                  -44381;7;0;false;false;63;95;191;;;
                                  -44388;1;0;false;false;;;;;;
                                  -44389;8;0;false;false;63;95;191;;;
                                  -44397;1;0;false;false;;;;;;
                                  -44398;5;0;false;false;63;95;191;;;
                                  -44403;4;0;false;false;;;;;;
                                  -44407;2;0;false;false;63;95;191;;;
                                  -44409;3;0;false;false;;;;;;
                                  -44412;6;1;false;false;127;0;85;;;
                                  -44418;1;0;false;false;;;;;;
                                  -44419;3;1;false;false;127;0;85;;;
                                  -44422;1;0;false;false;;;;;;
                                  -44423;10;0;false;false;0;0;0;;;
                                  -44433;1;0;false;false;;;;;;
                                  -44434;1;0;false;false;0;0;0;;;
                                  -44435;4;0;false;false;;;;;;
                                  -44439;6;1;false;false;127;0;85;;;
                                  -44445;1;0;false;false;;;;;;
                                  -44446;9;0;false;false;0;0;0;;;
                                  -44455;3;0;false;false;;;;;;
                                  -44458;1;0;false;false;0;0;0;;;
                                  -44459;3;0;false;false;;;;;;
                                  -44462;3;0;false;false;63;95;191;;;
                                  -44465;4;0;false;false;;;;;;
                                  -44469;1;0;false;false;63;95;191;;;
                                  -44470;1;0;false;false;;;;;;
                                  -44471;7;0;false;false;63;95;191;;;
                                  -44478;1;0;false;false;;;;;;
                                  -44479;3;0;false;false;63;95;191;;;
                                  -44482;1;0;false;false;;;;;;
                                  -44483;4;0;false;false;63;95;191;;;
                                  -44487;1;0;false;false;;;;;;
                                  -44488;5;0;false;false;63;95;191;;;
                                  -44493;1;0;false;false;;;;;;
                                  -44494;5;0;false;false;63;95;191;;;
                                  -44499;1;0;false;false;;;;;;
                                  -44500;2;0;false;false;63;95;191;;;
                                  -44502;1;0;false;false;;;;;;
                                  -44503;7;0;false;false;63;95;191;;;
                                  -44510;1;0;false;false;;;;;;
                                  -44511;8;0;false;false;63;95;191;;;
                                  -44519;1;0;false;false;;;;;;
                                  -44520;2;0;false;false;63;95;191;;;
                                  -44522;1;0;false;false;;;;;;
                                  -44523;7;0;false;false;63;95;191;;;
                                  -44530;1;0;false;false;;;;;;
                                  -44531;6;0;false;false;63;95;191;;;
                                  -44537;4;0;false;false;;;;;;
                                  -44541;1;0;false;false;63;95;191;;;
                                  -44542;1;0;false;false;;;;;;
                                  -44543;3;0;false;false;127;127;159;;;
                                  -44546;4;0;false;false;;;;;;
                                  -44550;1;0;false;false;63;95;191;;;
                                  -44551;4;0;false;false;;;;;;
                                  -44555;1;0;false;false;63;95;191;;;
                                  -44556;1;0;false;false;;;;;;
                                  -44557;7;1;false;false;127;159;191;;;
                                  -44564;9;0;false;false;63;95;191;;;
                                  -44573;1;0;false;false;;;;;;
                                  -44574;3;0;false;false;63;95;191;;;
                                  -44577;1;0;false;false;;;;;;
                                  -44578;8;0;false;false;63;95;191;;;
                                  -44586;1;0;false;false;;;;;;
                                  -44587;4;0;false;false;63;95;191;;;
                                  -44591;1;0;false;false;;;;;;
                                  -44592;2;0;false;false;63;95;191;;;
                                  -44594;1;0;false;false;;;;;;
                                  -44595;3;0;false;false;63;95;191;;;
                                  -44598;1;0;false;false;;;;;;
                                  -44599;6;0;false;false;63;95;191;;;
                                  -44605;1;0;false;false;;;;;;
                                  -44606;4;0;false;false;63;95;191;;;
                                  -44610;1;0;false;false;;;;;;
                                  -44611;4;0;false;false;63;95;191;;;
                                  -44615;1;0;false;false;;;;;;
                                  -44616;5;0;false;false;63;95;191;;;
                                  -44621;4;0;false;false;;;;;;
                                  -44625;1;0;false;false;63;95;191;;;
                                  -44626;1;0;false;false;;;;;;
                                  -44627;7;1;false;false;127;159;191;;;
                                  -44634;5;0;false;false;63;95;191;;;
                                  -44639;1;0;false;false;;;;;;
                                  -44640;3;0;false;false;63;95;191;;;
                                  -44643;1;0;false;false;;;;;;
                                  -44644;6;0;false;false;63;95;191;;;
                                  -44650;1;0;false;false;;;;;;
                                  -44651;2;0;false;false;63;95;191;;;
                                  -44653;1;0;false;false;;;;;;
                                  -44654;5;0;false;false;63;95;191;;;
                                  -44659;1;0;false;false;;;;;;
                                  -44660;2;0;false;false;63;95;191;;;
                                  -44662;1;0;false;false;;;;;;
                                  -44663;3;0;false;false;63;95;191;;;
                                  -44666;1;0;false;false;;;;;;
                                  -44667;7;0;false;false;63;95;191;;;
                                  -44674;1;0;false;false;;;;;;
                                  -44675;1;0;false;false;63;95;191;;;
                                  -44676;1;0;false;false;;;;;;
                                  -44677;1;0;false;false;63;95;191;;;
                                  -44678;1;0;false;false;;;;;;
                                  -44679;9;0;false;false;63;95;191;;;
                                  -44688;1;0;false;false;;;;;;
                                  -44689;5;0;false;false;63;95;191;;;
                                  -44694;1;0;false;false;;;;;;
                                  -44695;9;0;false;false;63;95;191;;;
                                  -44704;4;0;false;false;;;;;;
                                  -44708;1;0;false;false;63;95;191;;;
                                  -44709;2;0;false;false;;;;;;
                                  -44711;29;0;false;false;63;95;191;;;
                                  -44740;2;0;false;false;;;;;;
                                  -44742;2;0;false;false;63;95;191;;;
                                  -44744;3;0;false;false;;;;;;
                                  -44747;4;1;false;false;127;0;85;;;
                                  -44751;1;0;false;false;;;;;;
                                  -44752;13;0;false;false;0;0;0;;;
                                  -44765;3;1;false;false;127;0;85;;;
                                  -44768;1;0;false;false;;;;;;
                                  -44769;10;0;false;false;0;0;0;;;
                                  -44779;1;0;false;false;;;;;;
                                  -44780;3;1;false;false;127;0;85;;;
                                  -44783;1;0;false;false;;;;;;
                                  -44784;6;0;false;false;0;0;0;;;
                                  -44790;1;0;false;false;;;;;;
                                  -44791;1;0;false;false;0;0;0;;;
                                  -44792;4;0;false;false;;;;;;
                                  -44796;7;1;false;false;127;0;85;;;
                                  -44803;1;0;false;false;;;;;;
                                  -44804;9;0;false;false;0;0;0;;;
                                  -44813;1;0;false;false;;;;;;
                                  -44814;1;0;false;false;0;0;0;;;
                                  -44815;1;0;false;false;;;;;;
                                  -44816;5;0;false;false;0;0;0;;;
                                  -44821;1;0;false;false;;;;;;
                                  -44822;1;0;false;false;0;0;0;;;
                                  -44823;1;0;false;false;;;;;;
                                  -44824;2;0;false;false;0;0;0;;;
                                  -44826;8;0;false;false;;;;;;
                                  -44834;2;1;false;false;127;0;85;;;
                                  -44836;1;0;false;false;;;;;;
                                  -44837;6;0;false;false;0;0;0;;;
                                  -44843;1;0;false;false;;;;;;
                                  -44844;2;0;false;false;0;0;0;;;
                                  -44846;1;0;false;false;;;;;;
                                  -44847;2;0;false;false;0;0;0;;;
                                  -44849;1;0;false;false;;;;;;
                                  -44850;1;0;false;false;0;0;0;;;
                                  -44851;5;0;false;false;;;;;;
                                  -44856;6;1;false;false;127;0;85;;;
                                  -44862;1;0;false;false;0;0;0;;;
                                  -44863;4;0;false;false;;;;;;
                                  -44867;1;0;false;false;0;0;0;;;
                                  -44868;4;0;false;false;;;;;;
                                  -44872;2;1;false;false;127;0;85;;;
                                  -44874;1;0;false;false;;;;;;
                                  -44875;11;0;false;false;0;0;0;;;
                                  -44886;1;0;false;false;;;;;;
                                  -44887;1;0;false;false;0;0;0;;;
                                  -44888;5;0;false;false;;;;;;
                                  -44893;52;0;false;false;63;127;95;;;
                                  -44945;3;0;false;false;;;;;;
                                  -44948;19;0;false;false;0;0;0;;;
                                  -44967;5;0;false;false;;;;;;
                                  -44972;3;1;false;false;127;0;85;;;
                                  -44975;1;0;false;false;;;;;;
                                  -44976;1;0;false;false;0;0;0;;;
                                  -44977;3;1;false;false;127;0;85;;;
                                  -44980;1;0;false;false;;;;;;
                                  -44981;1;0;false;false;0;0;0;;;
                                  -44982;1;0;false;false;;;;;;
                                  -44983;1;0;false;false;0;0;0;;;
                                  -44984;1;0;false;false;;;;;;
                                  -44985;9;0;false;false;0;0;0;;;
                                  -44994;1;0;false;false;;;;;;
                                  -44995;1;0;false;false;0;0;0;;;
                                  -44996;1;0;false;false;;;;;;
                                  -44997;2;0;false;false;0;0;0;;;
                                  -44999;1;0;false;false;;;;;;
                                  -45000;1;0;false;false;0;0;0;;;
                                  -45001;1;0;false;false;;;;;;
                                  -45002;2;0;false;false;0;0;0;;;
                                  -45004;1;0;false;false;;;;;;
                                  -45005;10;0;false;false;0;0;0;;;
                                  -45015;1;0;false;false;;;;;;
                                  -45016;4;0;false;false;0;0;0;;;
                                  -45020;1;0;false;false;;;;;;
                                  -45021;1;0;false;false;0;0;0;;;
                                  -45022;6;0;false;false;;;;;;
                                  -45028;11;0;false;false;0;0;0;;;
                                  -45039;1;0;false;false;;;;;;
                                  -45040;1;0;false;false;0;0;0;;;
                                  -45041;1;0;false;false;;;;;;
                                  -45042;6;0;false;false;0;0;0;;;
                                  -45048;1;0;false;false;;;;;;
                                  -45049;1;0;false;false;0;0;0;;;
                                  -45050;1;0;false;false;;;;;;
                                  -45051;13;0;false;false;0;0;0;;;
                                  -45064;5;0;false;false;;;;;;
                                  -45069;1;0;false;false;0;0;0;;;
                                  -45070;5;0;false;false;;;;;;
                                  -45075;24;0;false;false;63;127;95;;;
                                  -45099;3;0;false;false;;;;;;
                                  -45102;3;1;false;false;127;0;85;;;
                                  -45105;1;0;false;false;;;;;;
                                  -45106;1;0;false;false;0;0;0;;;
                                  -45107;3;1;false;false;127;0;85;;;
                                  -45110;1;0;false;false;;;;;;
                                  -45111;1;0;false;false;0;0;0;;;
                                  -45112;1;0;false;false;;;;;;
                                  -45113;1;0;false;false;0;0;0;;;
                                  -45114;1;0;false;false;;;;;;
                                  -45115;9;0;false;false;0;0;0;;;
                                  -45124;1;0;false;false;;;;;;
                                  -45125;1;0;false;false;0;0;0;;;
                                  -45126;1;0;false;false;;;;;;
                                  -45127;2;0;false;false;0;0;0;;;
                                  -45129;1;0;false;false;;;;;;
                                  -45130;1;0;false;false;0;0;0;;;
                                  -45131;1;0;false;false;;;;;;
                                  -45132;2;0;false;false;0;0;0;;;
                                  -45134;1;0;false;false;;;;;;
                                  -45135;9;0;false;false;0;0;0;;;
                                  -45144;1;0;false;false;;;;;;
                                  -45145;1;0;false;false;0;0;0;;;
                                  -45146;1;0;false;false;;;;;;
                                  -45147;5;0;false;false;0;0;0;;;
                                  -45152;1;0;false;false;;;;;;
                                  -45153;2;0;false;false;0;0;0;;;
                                  -45155;1;0;false;false;;;;;;
                                  -45156;1;0;false;false;0;0;0;;;
                                  -45157;1;0;false;false;;;;;;
                                  -45158;1;0;false;false;0;0;0;;;
                                  -45159;1;0;false;false;;;;;;
                                  -45160;17;0;false;false;0;0;0;;;
                                  -45177;1;0;false;false;;;;;;
                                  -45178;4;0;false;false;0;0;0;;;
                                  -45182;1;0;false;false;;;;;;
                                  -45183;1;0;false;false;0;0;0;;;
                                  -45184;6;0;false;false;;;;;;
                                  -45190;12;0;false;false;0;0;0;;;
                                  -45202;1;0;false;false;;;;;;
                                  -45203;1;0;false;false;0;0;0;;;
                                  -45204;1;0;false;false;;;;;;
                                  -45205;3;0;false;false;0;0;0;;;
                                  -45208;5;0;false;false;;;;;;
                                  -45213;1;0;false;false;0;0;0;;;
                                  -45214;5;0;false;false;;;;;;
                                  -45219;57;0;false;false;63;127;95;;;
                                  -45276;3;0;false;false;;;;;;
                                  -45279;2;1;false;false;127;0;85;;;
                                  -45281;1;0;false;false;;;;;;
                                  -45282;18;0;false;false;0;0;0;;;
                                  -45300;1;0;false;false;;;;;;
                                  -45301;2;0;false;false;0;0;0;;;
                                  -45303;1;0;false;false;;;;;;
                                  -45304;10;0;false;false;0;0;0;;;
                                  -45314;1;0;false;false;;;;;;
                                  -45315;1;0;false;false;0;0;0;;;
                                  -45316;6;0;false;false;;;;;;
                                  -45322;17;0;false;false;0;0;0;;;
                                  -45339;1;0;false;false;;;;;;
                                  -45340;2;0;false;false;0;0;0;;;
                                  -45342;1;0;false;false;;;;;;
                                  -45343;6;0;false;false;0;0;0;;;
                                  -45349;5;0;false;false;;;;;;
                                  -45354;1;0;false;false;0;0;0;;;
                                  -45355;4;0;false;false;;;;;;
                                  -45359;1;0;false;false;0;0;0;;;
                                  -45360;5;0;false;false;;;;;;
                                  -45365;4;1;false;false;127;0;85;;;
                                  -45369;1;0;false;false;;;;;;
                                  -45370;1;0;false;false;0;0;0;;;
                                  -45371;5;0;false;false;;;;;;
                                  -45376;23;0;false;false;63;127;95;;;
                                  -45399;3;0;false;false;;;;;;
                                  -45402;3;1;false;false;127;0;85;;;
                                  -45405;1;0;false;false;;;;;;
                                  -45406;1;0;false;false;0;0;0;;;
                                  -45407;3;1;false;false;127;0;85;;;
                                  -45410;1;0;false;false;;;;;;
                                  -45411;1;0;false;false;0;0;0;;;
                                  -45412;1;0;false;false;;;;;;
                                  -45413;1;0;false;false;0;0;0;;;
                                  -45414;1;0;false;false;;;;;;
                                  -45415;9;0;false;false;0;0;0;;;
                                  -45424;1;0;false;false;;;;;;
                                  -45425;1;0;false;false;0;0;0;;;
                                  -45426;1;0;false;false;;;;;;
                                  -45427;6;0;false;false;0;0;0;;;
                                  -45433;1;0;false;false;;;;;;
                                  -45434;1;0;false;false;0;0;0;;;
                                  -45435;1;0;false;false;;;;;;
                                  -45436;1;0;false;false;0;0;0;;;
                                  -45437;1;0;false;false;;;;;;
                                  -45438;10;0;false;false;0;0;0;;;
                                  -45448;1;0;false;false;;;;;;
                                  -45449;4;0;false;false;0;0;0;;;
                                  -45453;1;0;false;false;;;;;;
                                  -45454;1;0;false;false;0;0;0;;;
                                  -45455;6;0;false;false;;;;;;
                                  -45461;18;0;false;false;0;0;0;;;
                                  -45479;1;0;false;false;;;;;;
                                  -45480;1;0;false;false;0;0;0;;;
                                  -45481;1;0;false;false;;;;;;
                                  -45482;13;0;false;false;0;0;0;;;
                                  -45495;5;0;false;false;;;;;;
                                  -45500;1;0;false;false;0;0;0;;;
                                  -45501;5;0;false;false;;;;;;
                                  -45506;39;0;false;false;63;127;95;;;
                                  -45545;3;0;false;false;;;;;;
                                  -45548;2;1;false;false;127;0;85;;;
                                  -45550;1;0;false;false;;;;;;
                                  -45551;18;0;false;false;0;0;0;;;
                                  -45569;1;0;false;false;;;;;;
                                  -45570;1;0;false;false;0;0;0;;;
                                  -45571;1;0;false;false;;;;;;
                                  -45572;9;0;false;false;0;0;0;;;
                                  -45581;1;0;false;false;;;;;;
                                  -45582;2;0;false;false;0;0;0;;;
                                  -45584;1;0;false;false;;;;;;
                                  -45585;17;0;false;false;0;0;0;;;
                                  -45602;1;0;false;false;;;;;;
                                  -45603;2;0;false;false;0;0;0;;;
                                  -45605;1;0;false;false;;;;;;
                                  -45606;9;0;false;false;0;0;0;;;
                                  -45615;1;0;false;false;;;;;;
                                  -45616;1;0;false;false;0;0;0;;;
                                  -45617;1;0;false;false;;;;;;
                                  -45618;6;0;false;false;0;0;0;;;
                                  -45624;1;0;false;false;;;;;;
                                  -45625;1;0;false;false;0;0;0;;;
                                  -45626;6;0;false;false;;;;;;
                                  -45632;8;0;false;false;0;0;0;;;
                                  -45640;1;0;false;false;;;;;;
                                  -45641;1;0;false;false;0;0;0;;;
                                  -45642;1;0;false;false;;;;;;
                                  -45643;2;0;false;false;0;0;0;;;
                                  -45645;6;0;false;false;;;;;;
                                  -45651;17;0;false;false;0;0;0;;;
                                  -45668;1;0;false;false;;;;;;
                                  -45669;1;0;false;false;0;0;0;;;
                                  -45670;1;0;false;false;;;;;;
                                  -45671;3;0;false;false;0;0;0;;;
                                  -45674;5;0;false;false;;;;;;
                                  -45679;1;0;false;false;0;0;0;;;
                                  -45680;5;0;false;false;;;;;;
                                  -45685;4;1;false;false;127;0;85;;;
                                  -45689;5;0;false;false;;;;;;
                                  -45694;2;1;false;false;127;0;85;;;
                                  -45696;1;0;false;false;;;;;;
                                  -45697;18;0;false;false;0;0;0;;;
                                  -45715;1;0;false;false;;;;;;
                                  -45716;2;0;false;false;0;0;0;;;
                                  -45718;1;0;false;false;;;;;;
                                  -45719;9;0;false;false;0;0;0;;;
                                  -45728;1;0;false;false;;;;;;
                                  -45729;1;0;false;false;0;0;0;;;
                                  -45730;1;0;false;false;;;;;;
                                  -45731;6;0;false;false;0;0;0;;;
                                  -45737;1;0;false;false;;;;;;
                                  -45738;1;0;false;false;0;0;0;;;
                                  -45739;6;0;false;false;;;;;;
                                  -45745;17;0;false;false;0;0;0;;;
                                  -45762;1;0;false;false;;;;;;
                                  -45763;2;0;false;false;0;0;0;;;
                                  -45765;1;0;false;false;;;;;;
                                  -45766;6;0;false;false;0;0;0;;;
                                  -45772;5;0;false;false;;;;;;
                                  -45777;1;0;false;false;0;0;0;;;
                                  -45778;4;0;false;false;;;;;;
                                  -45782;1;0;false;false;0;0;0;;;
                                  -45783;4;0;false;false;;;;;;
                                  -45787;9;0;false;false;0;0;0;;;
                                  -45796;1;0;false;false;;;;;;
                                  -45797;2;0;false;false;0;0;0;;;
                                  -45799;1;0;false;false;;;;;;
                                  -45800;6;0;false;false;0;0;0;;;
                                  -45806;3;0;false;false;;;;;;
                                  -45809;1;0;false;false;0;0;0;;;
                                  -45810;3;0;false;false;;;;;;
                                  -45813;3;0;false;false;63;95;191;;;
                                  -45816;4;0;false;false;;;;;;
                                  -45820;1;0;false;false;63;95;191;;;
                                  -45821;1;0;false;false;;;;;;
                                  -45822;6;0;false;false;63;95;191;;;
                                  -45828;1;0;false;false;;;;;;
                                  -45829;3;0;false;false;63;95;191;;;
                                  -45832;1;0;false;false;;;;;;
                                  -45833;4;0;false;false;63;95;191;;;
                                  -45837;1;0;false;false;;;;;;
                                  -45838;5;0;false;false;63;95;191;;;
                                  -45843;1;0;false;false;;;;;;
                                  -45844;2;0;false;false;63;95;191;;;
                                  -45846;1;0;false;false;;;;;;
                                  -45847;3;0;false;false;63;95;191;;;
                                  -45850;1;0;false;false;;;;;;
                                  -45851;5;0;false;false;63;95;191;;;
                                  -45856;1;0;false;false;;;;;;
                                  -45857;2;0;false;false;63;95;191;;;
                                  -45859;1;0;false;false;;;;;;
                                  -45860;3;0;false;false;63;95;191;;;
                                  -45863;1;0;false;false;;;;;;
                                  -45864;9;0;false;false;63;95;191;;;
                                  -45873;1;0;false;false;;;;;;
                                  -45874;6;0;false;false;63;95;191;;;
                                  -45880;4;0;false;false;;;;;;
                                  -45884;1;0;false;false;63;95;191;;;
                                  -45885;1;0;false;false;;;;;;
                                  -45886;3;0;false;false;127;127;159;;;
                                  -45889;4;0;false;false;;;;;;
                                  -45893;1;0;false;false;63;95;191;;;
                                  -45894;4;0;false;false;;;;;;
                                  -45898;1;0;false;false;63;95;191;;;
                                  -45899;1;0;false;false;;;;;;
                                  -45900;7;1;false;false;127;159;191;;;
                                  -45907;9;0;false;false;63;95;191;;;
                                  -45916;1;0;false;false;;;;;;
                                  -45917;3;0;false;false;63;95;191;;;
                                  -45920;1;0;false;false;;;;;;
                                  -45921;5;0;false;false;63;95;191;;;
                                  -45926;1;0;false;false;;;;;;
                                  -45927;4;0;false;false;63;95;191;;;
                                  -45931;1;0;false;false;;;;;;
                                  -45932;2;0;false;false;63;95;191;;;
                                  -45934;1;0;false;false;;;;;;
                                  -45935;5;0;false;false;63;95;191;;;
                                  -45940;4;0;false;false;;;;;;
                                  -45944;1;0;false;false;63;95;191;;;
                                  -45945;1;0;false;false;;;;;;
                                  -45946;7;1;false;false;127;159;191;;;
                                  -45953;9;0;false;false;63;95;191;;;
                                  -45962;1;0;false;false;;;;;;
                                  -45963;3;0;false;false;63;95;191;;;
                                  -45966;1;0;false;false;;;;;;
                                  -45967;6;0;false;false;63;95;191;;;
                                  -45973;1;0;false;false;;;;;;
                                  -45974;2;0;false;false;63;95;191;;;
                                  -45976;1;0;false;false;;;;;;
                                  -45977;5;0;false;false;63;95;191;;;
                                  -45982;1;0;false;false;;;;;;
                                  -45983;2;0;false;false;63;95;191;;;
                                  -45985;1;0;false;false;;;;;;
                                  -45986;5;0;false;false;63;95;191;;;
                                  -45991;4;0;false;false;;;;;;
                                  -45995;1;0;false;false;63;95;191;;;
                                  -45996;1;0;false;false;;;;;;
                                  -45997;7;1;false;false;127;159;191;;;
                                  -46004;17;0;false;false;63;95;191;;;
                                  -46021;1;0;false;false;;;;;;
                                  -46022;7;0;false;false;63;95;191;;;
                                  -46029;1;0;false;false;;;;;;
                                  -46030;3;0;false;false;63;95;191;;;
                                  -46033;1;0;false;false;;;;;;
                                  -46034;6;0;false;false;63;95;191;;;
                                  -46040;1;0;false;false;;;;;;
                                  -46041;4;0;false;false;63;95;191;;;
                                  -46045;1;0;false;false;;;;;;
                                  -46046;2;0;false;false;63;95;191;;;
                                  -46048;1;0;false;false;;;;;;
                                  -46049;5;0;false;false;63;95;191;;;
                                  -46054;5;0;false;false;;;;;;
                                  -46059;1;0;false;false;63;95;191;;;
                                  -46060;2;0;false;false;;;;;;
                                  -46062;5;0;false;false;63;95;191;;;
                                  -46067;1;0;false;false;;;;;;
                                  -46068;3;0;false;false;63;95;191;;;
                                  -46071;1;0;false;false;;;;;;
                                  -46072;7;0;false;false;63;95;191;;;
                                  -46079;1;0;false;false;;;;;;
                                  -46080;5;0;false;false;63;95;191;;;
                                  -46085;1;0;false;false;;;;;;
                                  -46086;2;0;false;false;63;95;191;;;
                                  -46088;1;0;false;false;;;;;;
                                  -46089;3;0;false;false;63;95;191;;;
                                  -46092;1;0;false;false;;;;;;
                                  -46093;9;0;false;false;63;95;191;;;
                                  -46102;1;0;false;false;;;;;;
                                  -46103;6;0;false;false;63;95;191;;;
                                  -46109;1;0;false;false;;;;;;
                                  -46110;5;0;false;false;63;95;191;;;
                                  -46115;1;0;false;false;;;;;;
                                  -46116;2;0;false;false;63;95;191;;;
                                  -46118;5;0;false;false;;;;;;
                                  -46123;1;0;false;false;63;95;191;;;
                                  -46124;2;0;false;false;;;;;;
                                  -46126;11;0;false;false;63;95;191;;;
                                  -46137;1;0;false;false;;;;;;
                                  -46138;9;0;false;false;63;95;191;;;
                                  -46147;1;0;false;false;;;;;;
                                  -46148;7;0;false;false;63;95;191;;;
                                  -46155;1;0;false;false;;;;;;
                                  -46156;5;0;false;false;63;95;191;;;
                                  -46161;1;0;false;false;;;;;;
                                  -46162;2;0;false;false;63;95;191;;;
                                  -46164;1;0;false;false;;;;;;
                                  -46165;3;0;false;false;63;95;191;;;
                                  -46168;1;0;false;false;;;;;;
                                  -46169;2;0;false;false;63;95;191;;;
                                  -46171;1;0;false;false;;;;;;
                                  -46172;1;0;false;false;63;95;191;;;
                                  -46173;1;0;false;false;;;;;;
                                  -46174;2;0;false;false;63;95;191;;;
                                  -46176;1;0;false;false;;;;;;
                                  -46177;3;0;false;false;63;95;191;;;
                                  -46180;5;0;false;false;;;;;;
                                  -46185;1;0;false;false;63;95;191;;;
                                  -46186;2;0;false;false;;;;;;
                                  -46188;6;0;false;false;63;95;191;;;
                                  -46194;1;0;false;false;;;;;;
                                  -46195;4;0;false;false;63;95;191;;;
                                  -46199;1;0;false;false;;;;;;
                                  -46200;2;0;false;false;63;95;191;;;
                                  -46202;1;0;false;false;;;;;;
                                  -46203;5;0;false;false;63;95;191;;;
                                  -46208;1;0;false;false;;;;;;
                                  -46209;6;0;false;false;63;95;191;;;
                                  -46215;4;0;false;false;;;;;;
                                  -46219;2;0;false;false;63;95;191;;;
                                  -46221;3;0;false;false;;;;;;
                                  -46224;6;1;false;false;127;0;85;;;
                                  -46230;1;0;false;false;;;;;;
                                  -46231;4;1;false;false;127;0;85;;;
                                  -46235;1;0;false;false;;;;;;
                                  -46236;12;0;false;false;0;0;0;;;
                                  -46248;3;1;false;false;127;0;85;;;
                                  -46251;1;0;false;false;;;;;;
                                  -46252;10;0;false;false;0;0;0;;;
                                  -46262;1;0;false;false;;;;;;
                                  -46263;3;1;false;false;127;0;85;;;
                                  -46266;1;0;false;false;;;;;;
                                  -46267;10;0;false;false;0;0;0;;;
                                  -46277;1;0;false;false;;;;;;
                                  -46278;7;1;false;false;127;0;85;;;
                                  -46285;1;0;false;false;;;;;;
                                  -46286;18;0;false;false;0;0;0;;;
                                  -46304;1;0;false;false;;;;;;
                                  -46305;1;0;false;false;0;0;0;;;
                                  -46306;4;0;false;false;;;;;;
                                  -46310;16;0;false;false;0;0;0;;;
                                  -46326;1;0;false;false;;;;;;
                                  -46327;10;0;false;false;0;0;0;;;
                                  -46337;1;0;false;false;;;;;;
                                  -46338;19;0;false;false;0;0;0;;;
                                  -46357;3;0;false;false;;;;;;
                                  -46360;1;0;false;false;0;0;0;;;
                                  -46361;3;0;false;false;;;;;;
                                  -46364;3;0;false;false;63;95;191;;;
                                  -46367;4;0;false;false;;;;;;
                                  -46371;1;0;false;false;63;95;191;;;
                                  -46372;1;0;false;false;;;;;;
                                  -46373;6;0;false;false;63;95;191;;;
                                  -46379;1;0;false;false;;;;;;
                                  -46380;3;0;false;false;63;95;191;;;
                                  -46383;1;0;false;false;;;;;;
                                  -46384;4;0;false;false;63;95;191;;;
                                  -46388;1;0;false;false;;;;;;
                                  -46389;5;0;false;false;63;95;191;;;
                                  -46394;1;0;false;false;;;;;;
                                  -46395;2;0;false;false;63;95;191;;;
                                  -46397;1;0;false;false;;;;;;
                                  -46398;3;0;false;false;63;95;191;;;
                                  -46401;1;0;false;false;;;;;;
                                  -46402;5;0;false;false;63;95;191;;;
                                  -46407;1;0;false;false;;;;;;
                                  -46408;2;0;false;false;63;95;191;;;
                                  -46410;1;0;false;false;;;;;;
                                  -46411;3;0;false;false;63;95;191;;;
                                  -46414;1;0;false;false;;;;;;
                                  -46415;9;0;false;false;63;95;191;;;
                                  -46424;1;0;false;false;;;;;;
                                  -46425;6;0;false;false;63;95;191;;;
                                  -46431;4;0;false;false;;;;;;
                                  -46435;1;0;false;false;63;95;191;;;
                                  -46436;1;0;false;false;;;;;;
                                  -46437;3;0;false;false;127;127;159;;;
                                  -46440;4;0;false;false;;;;;;
                                  -46444;1;0;false;false;63;95;191;;;
                                  -46445;4;0;false;false;;;;;;
                                  -46449;1;0;false;false;63;95;191;;;
                                  -46450;1;0;false;false;;;;;;
                                  -46451;7;1;false;false;127;159;191;;;
                                  -46458;9;0;false;false;63;95;191;;;
                                  -46467;1;0;false;false;;;;;;
                                  -46468;3;0;false;false;63;95;191;;;
                                  -46471;1;0;false;false;;;;;;
                                  -46472;5;0;false;false;63;95;191;;;
                                  -46477;1;0;false;false;;;;;;
                                  -46478;4;0;false;false;63;95;191;;;
                                  -46482;1;0;false;false;;;;;;
                                  -46483;2;0;false;false;63;95;191;;;
                                  -46485;1;0;false;false;;;;;;
                                  -46486;5;0;false;false;63;95;191;;;
                                  -46491;4;0;false;false;;;;;;
                                  -46495;1;0;false;false;63;95;191;;;
                                  -46496;1;0;false;false;;;;;;
                                  -46497;7;1;false;false;127;159;191;;;
                                  -46504;9;0;false;false;63;95;191;;;
                                  -46513;1;0;false;false;;;;;;
                                  -46514;3;0;false;false;63;95;191;;;
                                  -46517;1;0;false;false;;;;;;
                                  -46518;6;0;false;false;63;95;191;;;
                                  -46524;1;0;false;false;;;;;;
                                  -46525;2;0;false;false;63;95;191;;;
                                  -46527;1;0;false;false;;;;;;
                                  -46528;5;0;false;false;63;95;191;;;
                                  -46533;1;0;false;false;;;;;;
                                  -46534;2;0;false;false;63;95;191;;;
                                  -46536;1;0;false;false;;;;;;
                                  -46537;5;0;false;false;63;95;191;;;
                                  -46542;4;0;false;false;;;;;;
                                  -46546;1;0;false;false;63;95;191;;;
                                  -46547;1;0;false;false;;;;;;
                                  -46548;7;1;false;false;127;159;191;;;
                                  -46555;17;0;false;false;63;95;191;;;
                                  -46572;1;0;false;false;;;;;;
                                  -46573;7;0;false;false;63;95;191;;;
                                  -46580;1;0;false;false;;;;;;
                                  -46581;3;0;false;false;63;95;191;;;
                                  -46584;1;0;false;false;;;;;;
                                  -46585;6;0;false;false;63;95;191;;;
                                  -46591;1;0;false;false;;;;;;
                                  -46592;4;0;false;false;63;95;191;;;
                                  -46596;1;0;false;false;;;;;;
                                  -46597;2;0;false;false;63;95;191;;;
                                  -46599;1;0;false;false;;;;;;
                                  -46600;5;0;false;false;63;95;191;;;
                                  -46605;5;0;false;false;;;;;;
                                  -46610;1;0;false;false;63;95;191;;;
                                  -46611;2;0;false;false;;;;;;
                                  -46613;5;0;false;false;63;95;191;;;
                                  -46618;1;0;false;false;;;;;;
                                  -46619;3;0;false;false;63;95;191;;;
                                  -46622;1;0;false;false;;;;;;
                                  -46623;7;0;false;false;63;95;191;;;
                                  -46630;1;0;false;false;;;;;;
                                  -46631;5;0;false;false;63;95;191;;;
                                  -46636;1;0;false;false;;;;;;
                                  -46637;2;0;false;false;63;95;191;;;
                                  -46639;1;0;false;false;;;;;;
                                  -46640;3;0;false;false;63;95;191;;;
                                  -46643;1;0;false;false;;;;;;
                                  -46644;9;0;false;false;63;95;191;;;
                                  -46653;1;0;false;false;;;;;;
                                  -46654;6;0;false;false;63;95;191;;;
                                  -46660;1;0;false;false;;;;;;
                                  -46661;5;0;false;false;63;95;191;;;
                                  -46666;1;0;false;false;;;;;;
                                  -46667;2;0;false;false;63;95;191;;;
                                  -46669;5;0;false;false;;;;;;
                                  -46674;1;0;false;false;63;95;191;;;
                                  -46675;2;0;false;false;;;;;;
                                  -46677;11;0;false;false;63;95;191;;;
                                  -46688;1;0;false;false;;;;;;
                                  -46689;9;0;false;false;63;95;191;;;
                                  -46698;1;0;false;false;;;;;;
                                  -46699;7;0;false;false;63;95;191;;;
                                  -46706;1;0;false;false;;;;;;
                                  -46707;5;0;false;false;63;95;191;;;
                                  -46712;1;0;false;false;;;;;;
                                  -46713;2;0;false;false;63;95;191;;;
                                  -46715;1;0;false;false;;;;;;
                                  -46716;3;0;false;false;63;95;191;;;
                                  -46719;1;0;false;false;;;;;;
                                  -46720;2;0;false;false;63;95;191;;;
                                  -46722;1;0;false;false;;;;;;
                                  -46723;1;0;false;false;63;95;191;;;
                                  -46724;1;0;false;false;;;;;;
                                  -46725;2;0;false;false;63;95;191;;;
                                  -46727;1;0;false;false;;;;;;
                                  -46728;3;0;false;false;63;95;191;;;
                                  -46731;5;0;false;false;;;;;;
                                  -46736;1;0;false;false;63;95;191;;;
                                  -46737;2;0;false;false;;;;;;
                                  -46739;6;0;false;false;63;95;191;;;
                                  -46745;1;0;false;false;;;;;;
                                  -46746;4;0;false;false;63;95;191;;;
                                  -46750;1;0;false;false;;;;;;
                                  -46751;2;0;false;false;63;95;191;;;
                                  -46753;1;0;false;false;;;;;;
                                  -46754;5;0;false;false;63;95;191;;;
                                  -46759;1;0;false;false;;;;;;
                                  -46760;6;0;false;false;63;95;191;;;
                                  -46766;4;0;false;false;;;;;;
                                  -46770;2;0;false;false;63;95;191;;;
                                  -46772;3;0;false;false;;;;;;
                                  -46775;6;1;false;false;127;0;85;;;
                                  -46781;1;0;false;false;;;;;;
                                  -46782;4;1;false;false;127;0;85;;;
                                  -46786;1;0;false;false;;;;;;
                                  -46787;6;0;false;false;0;0;0;;;
                                  -46793;3;1;false;false;127;0;85;;;
                                  -46796;1;0;false;false;;;;;;
                                  -46797;10;0;false;false;0;0;0;;;
                                  -46807;1;0;false;false;;;;;;
                                  -46808;3;1;false;false;127;0;85;;;
                                  -46811;1;0;false;false;;;;;;
                                  -46812;10;0;false;false;0;0;0;;;
                                  -46822;1;0;false;false;;;;;;
                                  -46823;7;1;false;false;127;0;85;;;
                                  -46830;1;0;false;false;;;;;;
                                  -46831;18;0;false;false;0;0;0;;;
                                  -46849;1;0;false;false;;;;;;
                                  -46850;1;0;false;false;0;0;0;;;
                                  -46851;4;0;false;false;;;;;;
                                  -46855;3;1;false;false;127;0;85;;;
                                  -46858;1;0;false;false;;;;;;
                                  -46859;7;0;false;false;0;0;0;;;
                                  -46866;1;0;false;false;;;;;;
                                  -46867;1;0;false;false;0;0;0;;;
                                  -46868;1;0;false;false;;;;;;
                                  -46869;9;0;false;false;0;0;0;;;
                                  -46878;1;0;false;false;;;;;;
                                  -46879;1;0;false;false;0;0;0;;;
                                  -46880;1;0;false;false;;;;;;
                                  -46881;10;0;false;false;0;0;0;;;
                                  -46891;8;0;false;false;;;;;;
                                  -46899;2;1;false;false;127;0;85;;;
                                  -46901;1;0;false;false;;;;;;
                                  -46902;10;0;false;false;0;0;0;;;
                                  -46912;1;0;false;false;;;;;;
                                  -46913;1;0;false;false;0;0;0;;;
                                  -46914;1;0;false;false;;;;;;
                                  -46915;1;0;false;false;0;0;0;;;
                                  -46916;1;0;false;false;;;;;;
                                  -46917;2;0;false;false;0;0;0;;;
                                  -46919;1;0;false;false;;;;;;
                                  -46920;7;0;false;false;0;0;0;;;
                                  -46927;1;0;false;false;;;;;;
                                  -46928;1;0;false;false;0;0;0;;;
                                  -46929;1;0;false;false;;;;;;
                                  -46930;17;0;false;false;0;0;0;;;
                                  -46947;1;0;false;false;;;;;;
                                  -46948;1;0;false;false;0;0;0;;;
                                  -46949;5;0;false;false;;;;;;
                                  -46954;6;1;false;false;127;0;85;;;
                                  -46960;1;0;false;false;0;0;0;;;
                                  -46961;4;0;false;false;;;;;;
                                  -46965;1;0;false;false;0;0;0;;;
                                  -46966;4;0;false;false;;;;;;
                                  -46970;3;1;false;false;127;0;85;;;
                                  -46973;1;0;false;false;;;;;;
                                  -46974;1;0;false;false;0;0;0;;;
                                  -46975;3;1;false;false;127;0;85;;;
                                  -46978;1;0;false;false;;;;;;
                                  -46979;1;0;false;false;0;0;0;;;
                                  -46980;1;0;false;false;;;;;;
                                  -46981;1;0;false;false;0;0;0;;;
                                  -46982;1;0;false;false;;;;;;
                                  -46983;10;0;false;false;0;0;0;;;
                                  -46993;1;0;false;false;;;;;;
                                  -46994;1;0;false;false;0;0;0;;;
                                  -46995;1;0;false;false;;;;;;
                                  -46996;1;0;false;false;0;0;0;;;
                                  -46997;1;0;false;false;;;;;;
                                  -46998;8;0;false;false;0;0;0;;;
                                  -47006;1;0;false;false;;;;;;
                                  -47007;4;0;false;false;0;0;0;;;
                                  -47011;1;0;false;false;;;;;;
                                  -47012;1;0;false;false;0;0;0;;;
                                  -47013;5;0;false;false;;;;;;
                                  -47018;12;0;false;false;0;0;0;;;
                                  -47030;1;0;false;false;;;;;;
                                  -47031;1;0;false;false;0;0;0;;;
                                  -47032;1;0;false;false;;;;;;
                                  -47033;3;0;false;false;0;0;0;;;
                                  -47036;4;0;false;false;;;;;;
                                  -47040;1;0;false;false;0;0;0;;;
                                  -47041;6;0;false;false;;;;;;
                                  -47047;69;0;false;false;63;127;95;;;
                                  -47116;2;0;false;false;;;;;;
                                  -47118;29;0;false;false;63;127;95;;;
                                  -47147;2;0;false;false;;;;;;
                                  -47149;2;1;false;false;127;0;85;;;
                                  -47151;1;0;false;false;;;;;;
                                  -47152;18;0;false;false;0;0;0;;;
                                  -47170;1;0;false;false;;;;;;
                                  -47171;2;0;false;false;0;0;0;;;
                                  -47173;1;0;false;false;;;;;;
                                  -47174;9;0;false;false;0;0;0;;;
                                  -47183;1;0;false;false;;;;;;
                                  -47184;2;0;false;false;0;0;0;;;
                                  -47186;1;0;false;false;;;;;;
                                  -47187;17;0;false;false;0;0;0;;;
                                  -47204;1;0;false;false;;;;;;
                                  -47205;1;0;false;false;0;0;0;;;
                                  -47206;1;0;false;false;;;;;;
                                  -47207;8;0;false;false;0;0;0;;;
                                  -47215;1;0;false;false;;;;;;
                                  -47216;1;0;false;false;0;0;0;;;
                                  -47217;5;0;false;false;;;;;;
                                  -47222;8;0;false;false;0;0;0;;;
                                  -47230;1;0;false;false;;;;;;
                                  -47231;1;0;false;false;0;0;0;;;
                                  -47232;1;0;false;false;;;;;;
                                  -47233;2;0;false;false;0;0;0;;;
                                  -47235;5;0;false;false;;;;;;
                                  -47240;17;0;false;false;0;0;0;;;
                                  -47257;1;0;false;false;;;;;;
                                  -47258;1;0;false;false;0;0;0;;;
                                  -47259;1;0;false;false;;;;;;
                                  -47260;3;0;false;false;0;0;0;;;
                                  -47263;5;0;false;false;;;;;;
                                  -47268;2;1;false;false;127;0;85;;;
                                  -47270;1;0;false;false;;;;;;
                                  -47271;19;0;false;false;0;0;0;;;
                                  -47290;1;0;false;false;;;;;;
                                  -47291;1;0;false;false;0;0;0;;;
                                  -47292;6;0;false;false;;;;;;
                                  -47298;3;1;false;false;127;0;85;;;
                                  -47301;1;0;false;false;;;;;;
                                  -47302;1;0;false;false;0;0;0;;;
                                  -47303;3;1;false;false;127;0;85;;;
                                  -47306;1;0;false;false;;;;;;
                                  -47307;1;0;false;false;0;0;0;;;
                                  -47308;1;0;false;false;;;;;;
                                  -47309;1;0;false;false;0;0;0;;;
                                  -47310;1;0;false;false;;;;;;
                                  -47311;2;0;false;false;0;0;0;;;
                                  -47313;1;0;false;false;;;;;;
                                  -47314;1;0;false;false;0;0;0;;;
                                  -47315;1;0;false;false;;;;;;
                                  -47316;1;0;false;false;0;0;0;;;
                                  -47317;1;0;false;false;;;;;;
                                  -47318;10;0;false;false;0;0;0;;;
                                  -47328;1;0;false;false;;;;;;
                                  -47329;4;0;false;false;0;0;0;;;
                                  -47333;1;0;false;false;;;;;;
                                  -47334;1;0;false;false;0;0;0;;;
                                  -47335;7;0;false;false;;;;;;
                                  -47342;2;1;false;false;127;0;85;;;
                                  -47344;1;0;false;false;;;;;;
                                  -47345;13;0;false;false;0;0;0;;;
                                  -47358;1;0;false;false;;;;;;
                                  -47359;1;0;false;false;0;0;0;;;
                                  -47360;1;0;false;false;;;;;;
                                  -47361;9;0;false;false;0;0;0;;;
                                  -47370;1;0;false;false;;;;;;
                                  -47371;1;0;false;false;0;0;0;;;
                                  -47372;8;0;false;false;;;;;;
                                  -47380;8;0;false;false;0;0;0;;;
                                  -47388;1;0;false;false;;;;;;
                                  -47389;1;0;false;false;0;0;0;;;
                                  -47390;1;0;false;false;;;;;;
                                  -47391;13;0;false;false;0;0;0;;;
                                  -47404;8;0;false;false;;;;;;
                                  -47412;17;0;false;false;0;0;0;;;
                                  -47429;1;0;false;false;;;;;;
                                  -47430;1;0;false;false;0;0;0;;;
                                  -47431;1;0;false;false;;;;;;
                                  -47432;2;0;false;false;0;0;0;;;
                                  -47434;7;0;false;false;;;;;;
                                  -47441;1;0;false;false;0;0;0;;;
                                  -47442;6;0;false;false;;;;;;
                                  -47448;1;0;false;false;0;0;0;;;
                                  -47449;8;0;false;false;;;;;;
                                  -47457;1;0;false;false;0;0;0;;;
                                  -47458;4;0;false;false;;;;;;
                                  -47462;1;0;false;false;0;0;0;;;
                                  -47463;3;0;false;false;;;;;;
                                  -47466;1;0;false;false;0;0;0;;;
                                  -47467;3;0;false;false;;;;;;
                                  -47470;3;0;false;false;63;95;191;;;
                                  -47473;5;0;false;false;;;;;;
                                  -47478;1;0;false;false;63;95;191;;;
                                  -47479;1;0;false;false;;;;;;
                                  -47480;7;0;false;false;63;95;191;;;
                                  -47487;1;0;false;false;;;;;;
                                  -47488;3;0;false;false;63;95;191;;;
                                  -47491;1;0;false;false;;;;;;
                                  -47492;4;0;false;false;63;95;191;;;
                                  -47496;1;0;false;false;;;;;;
                                  -47497;5;0;false;false;63;95;191;;;
                                  -47502;1;0;false;false;;;;;;
                                  -47503;5;0;false;false;63;95;191;;;
                                  -47508;1;0;false;false;;;;;;
                                  -47509;2;0;false;false;63;95;191;;;
                                  -47511;1;0;false;false;;;;;;
                                  -47512;7;0;false;false;63;95;191;;;
                                  -47519;1;0;false;false;;;;;;
                                  -47520;1;0;false;false;63;95;191;;;
                                  -47521;1;0;false;false;;;;;;
                                  -47522;4;0;false;false;63;95;191;;;
                                  -47526;1;0;false;false;;;;;;
                                  -47527;7;0;false;false;63;95;191;;;
                                  -47534;4;0;false;false;;;;;;
                                  -47538;1;0;false;false;63;95;191;;;
                                  -47539;1;0;false;false;;;;;;
                                  -47540;5;0;false;false;63;95;191;;;
                                  -47545;1;0;false;false;;;;;;
                                  -47546;8;0;false;false;63;95;191;;;
                                  -47554;1;0;false;false;;;;;;
                                  -47555;2;0;false;false;63;95;191;;;
                                  -47557;1;0;false;false;;;;;;
                                  -47558;3;0;false;false;63;95;191;;;
                                  -47561;1;0;false;false;;;;;;
                                  -47562;4;0;false;false;63;95;191;;;
                                  -47566;1;0;false;false;;;;;;
                                  -47567;6;0;false;false;63;95;191;;;
                                  -47573;1;0;false;false;;;;;;
                                  -47574;4;0;false;false;63;95;191;;;
                                  -47578;1;0;false;false;;;;;;
                                  -47579;2;0;false;false;63;95;191;;;
                                  -47581;1;0;false;false;;;;;;
                                  -47582;6;0;false;false;63;95;191;;;
                                  -47588;4;0;false;false;;;;;;
                                  -47592;1;0;false;false;63;95;191;;;
                                  -47593;1;0;false;false;;;;;;
                                  -47594;3;0;false;false;127;127;159;;;
                                  -47597;4;0;false;false;;;;;;
                                  -47601;1;0;false;false;63;95;191;;;
                                  -47602;4;0;false;false;;;;;;
                                  -47606;1;0;false;false;63;95;191;;;
                                  -47607;1;0;false;false;;;;;;
                                  -47608;7;1;false;false;127;159;191;;;
                                  -47615;11;0;false;false;63;95;191;;;
                                  -47626;1;0;false;false;;;;;;
                                  -47627;3;0;false;false;63;95;191;;;
                                  -47630;1;0;false;false;;;;;;
                                  -47631;5;0;false;false;63;95;191;;;
                                  -47636;1;0;false;false;;;;;;
                                  -47637;6;0;false;false;63;95;191;;;
                                  -47643;1;0;false;false;;;;;;
                                  -47644;2;0;false;false;63;95;191;;;
                                  -47646;1;0;false;false;;;;;;
                                  -47647;3;0;false;false;63;95;191;;;
                                  -47650;1;0;false;false;;;;;;
                                  -47651;4;0;false;false;63;95;191;;;
                                  -47655;1;0;false;false;;;;;;
                                  -47656;6;0;false;false;63;95;191;;;
                                  -47662;4;0;false;false;;;;;;
                                  -47666;1;0;false;false;63;95;191;;;
                                  -47667;1;0;false;false;;;;;;
                                  -47668;7;1;false;false;127;159;191;;;
                                  -47675;12;0;false;false;63;95;191;;;
                                  -47687;1;0;false;false;;;;;;
                                  -47688;3;0;false;false;63;95;191;;;
                                  -47691;1;0;false;false;;;;;;
                                  -47692;6;0;false;false;63;95;191;;;
                                  -47698;1;0;false;false;;;;;;
                                  -47699;2;0;false;false;63;95;191;;;
                                  -47701;1;0;false;false;;;;;;
                                  -47702;8;0;false;false;63;95;191;;;
                                  -47710;1;0;false;false;;;;;;
                                  -47711;5;0;false;false;63;95;191;;;
                                  -47716;4;0;false;false;;;;;;
                                  -47720;1;0;false;false;63;95;191;;;
                                  -47721;1;0;false;false;;;;;;
                                  -47722;7;1;false;false;127;159;191;;;
                                  -47729;16;0;false;false;63;95;191;;;
                                  -47745;1;0;false;false;;;;;;
                                  -47746;3;0;false;false;63;95;191;;;
                                  -47749;1;0;false;false;;;;;;
                                  -47750;6;0;false;false;63;95;191;;;
                                  -47756;1;0;false;false;;;;;;
                                  -47757;2;0;false;false;63;95;191;;;
                                  -47759;1;0;false;false;;;;;;
                                  -47760;7;0;false;false;63;95;191;;;
                                  -47767;1;0;false;false;;;;;;
                                  -47768;5;0;false;false;63;95;191;;;
                                  -47773;4;0;false;false;;;;;;
                                  -47777;1;0;false;false;63;95;191;;;
                                  -47778;1;0;false;false;;;;;;
                                  -47779;7;1;false;false;127;159;191;;;
                                  -47786;12;0;false;false;63;95;191;;;
                                  -47798;1;0;false;false;;;;;;
                                  -47799;3;0;false;false;63;95;191;;;
                                  -47802;1;0;false;false;;;;;;
                                  -47803;6;0;false;false;63;95;191;;;
                                  -47809;1;0;false;false;;;;;;
                                  -47810;2;0;false;false;63;95;191;;;
                                  -47812;1;0;false;false;;;;;;
                                  -47813;3;0;false;false;63;95;191;;;
                                  -47816;1;0;false;false;;;;;;
                                  -47817;10;0;false;false;63;95;191;;;
                                  -47827;4;0;false;false;;;;;;
                                  -47831;1;0;false;false;63;95;191;;;
                                  -47832;1;0;false;false;;;;;;
                                  -47833;7;1;false;false;127;159;191;;;
                                  -47840;16;0;false;false;63;95;191;;;
                                  -47856;1;0;false;false;;;;;;
                                  -47857;3;0;false;false;63;95;191;;;
                                  -47860;1;0;false;false;;;;;;
                                  -47861;6;0;false;false;63;95;191;;;
                                  -47867;1;0;false;false;;;;;;
                                  -47868;2;0;false;false;63;95;191;;;
                                  -47870;1;0;false;false;;;;;;
                                  -47871;7;0;false;false;63;95;191;;;
                                  -47878;1;0;false;false;;;;;;
                                  -47879;10;0;false;false;63;95;191;;;
                                  -47889;4;0;false;false;;;;;;
                                  -47893;2;0;false;false;63;95;191;;;
                                  -47895;5;0;false;false;;;;;;
                                  -47900;6;1;false;false;127;0;85;;;
                                  -47906;1;0;false;false;;;;;;
                                  -47907;4;1;false;false;127;0;85;;;
                                  -47911;1;0;false;false;;;;;;
                                  -47912;12;0;false;false;0;0;0;;;
                                  -47924;3;1;false;false;127;0;85;;;
                                  -47927;1;0;false;false;;;;;;
                                  -47928;12;0;false;false;0;0;0;;;
                                  -47940;1;0;false;false;;;;;;
                                  -47941;3;1;false;false;127;0;85;;;
                                  -47944;1;0;false;false;;;;;;
                                  -47945;13;0;false;false;0;0;0;;;
                                  -47958;1;0;false;false;;;;;;
                                  -47959;3;1;false;false;127;0;85;;;
                                  -47962;1;0;false;false;;;;;;
                                  -47963;17;0;false;false;0;0;0;;;
                                  -47980;1;0;false;false;;;;;;
                                  -47981;3;1;false;false;127;0;85;;;
                                  -47984;1;0;false;false;;;;;;
                                  -47985;13;0;false;false;0;0;0;;;
                                  -47998;1;0;false;false;;;;;;
                                  -47999;3;1;false;false;127;0;85;;;
                                  -48002;1;0;false;false;;;;;;
                                  -48003;17;0;false;false;0;0;0;;;
                                  -48020;1;0;false;false;;;;;;
                                  -48021;1;0;false;false;0;0;0;;;
                                  -48022;4;0;false;false;;;;;;
                                  -48026;3;1;false;false;127;0;85;;;
                                  -48029;1;0;false;false;;;;;;
                                  -48030;9;0;false;false;0;0;0;;;
                                  -48039;1;0;false;false;;;;;;
                                  -48040;1;0;false;false;0;0;0;;;
                                  -48041;1;0;false;false;;;;;;
                                  -48042;36;0;false;false;0;0;0;;;
                                  -48078;4;0;false;false;;;;;;
                                  -48082;7;1;false;false;127;0;85;;;
                                  -48089;1;0;false;false;;;;;;
                                  -48090;14;0;false;false;0;0;0;;;
                                  -48104;1;0;false;false;;;;;;
                                  -48105;1;0;false;false;0;0;0;;;
                                  -48106;1;0;false;false;;;;;;
                                  -48107;18;0;false;false;0;0;0;;;
                                  -48125;1;0;false;false;;;;;;
                                  -48126;1;0;false;false;0;0;0;;;
                                  -48127;1;0;false;false;;;;;;
                                  -48128;9;0;false;false;0;0;0;;;
                                  -48137;1;0;false;false;;;;;;
                                  -48138;2;0;false;false;0;0;0;;;
                                  -48140;1;0;false;false;;;;;;
                                  -48141;17;0;false;false;0;0;0;;;
                                  -48158;1;0;false;false;;;;;;
                                  -48159;2;0;false;false;0;0;0;;;
                                  -48161;1;0;false;false;;;;;;
                                  -48162;9;0;false;false;0;0;0;;;
                                  -48171;1;0;false;false;;;;;;
                                  -48172;1;0;false;false;0;0;0;;;
                                  -48173;1;0;false;false;;;;;;
                                  -48174;18;0;false;false;0;0;0;;;
                                  -48192;4;0;false;false;;;;;;
                                  -48196;25;0;false;false;63;127;95;;;
                                  -48221;2;0;false;false;;;;;;
                                  -48223;2;1;false;false;127;0;85;;;
                                  -48225;1;0;false;false;;;;;;
                                  -48226;10;0;false;false;0;0;0;;;
                                  -48236;1;0;false;false;;;;;;
                                  -48237;2;0;false;false;0;0;0;;;
                                  -48239;1;0;false;false;;;;;;
                                  -48240;1;0;false;false;0;0;0;;;
                                  -48241;1;0;false;false;;;;;;
                                  -48242;2;0;false;false;0;0;0;;;
                                  -48244;1;0;false;false;;;;;;
                                  -48245;16;0;false;false;0;0;0;;;
                                  -48261;1;0;false;false;;;;;;
                                  -48262;2;0;false;false;0;0;0;;;
                                  -48264;1;0;false;false;;;;;;
                                  -48265;10;0;false;false;0;0;0;;;
                                  -48275;1;0;false;false;;;;;;
                                  -48276;1;0;false;false;0;0;0;;;
                                  -48277;5;0;false;false;;;;;;
                                  -48282;9;0;false;false;0;0;0;;;
                                  -48291;1;0;false;false;;;;;;
                                  -48292;1;0;false;false;0;0;0;;;
                                  -48293;1;0;false;false;;;;;;
                                  -48294;13;0;false;false;0;0;0;;;
                                  -48307;5;0;false;false;;;;;;
                                  -48312;9;0;false;false;0;0;0;;;
                                  -48321;1;0;false;false;;;;;;
                                  -48322;1;0;false;false;0;0;0;;;
                                  -48323;1;0;false;false;;;;;;
                                  -48324;3;1;false;false;127;0;85;;;
                                  -48327;1;0;false;false;;;;;;
                                  -48328;3;1;false;false;127;0;85;;;
                                  -48331;12;0;false;false;0;0;0;;;
                                  -48343;5;0;false;false;;;;;;
                                  -48348;8;0;false;false;0;0;0;;;
                                  -48356;1;0;false;false;;;;;;
                                  -48357;10;0;false;false;0;0;0;;;
                                  -48367;1;0;false;false;;;;;;
                                  -48368;5;1;false;false;127;0;85;;;
                                  -48373;2;0;false;false;0;0;0;;;
                                  -48375;5;0;false;false;;;;;;
                                  -48380;8;0;false;false;0;0;0;;;
                                  -48388;1;0;false;false;;;;;;
                                  -48389;1;0;false;false;0;0;0;;;
                                  -48390;1;0;false;false;;;;;;
                                  -48391;2;0;false;false;0;0;0;;;
                                  -48393;4;0;false;false;;;;;;
                                  -48397;1;0;false;false;0;0;0;;;
                                  -48398;4;0;false;false;;;;;;
                                  -48402;4;1;false;false;127;0;85;;;
                                  -48406;1;0;false;false;;;;;;
                                  -48407;1;0;false;false;0;0;0;;;
                                  -48408;5;0;false;false;;;;;;
                                  -48413;23;0;false;false;0;0;0;;;
                                  -48436;1;0;false;false;;;;;;
                                  -48437;19;0;false;false;0;0;0;;;
                                  -48456;5;0;false;false;;;;;;
                                  -48461;23;0;false;false;0;0;0;;;
                                  -48484;1;0;false;false;;;;;;
                                  -48485;14;0;false;false;0;0;0;;;
                                  -48499;5;0;false;false;;;;;;
                                  -48504;20;0;false;false;0;0;0;;;
                                  -48524;1;0;false;false;;;;;;
                                  -48525;1;0;false;false;0;0;0;;;
                                  -48526;1;0;false;false;;;;;;
                                  -48527;3;0;false;false;0;0;0;;;
                                  -48530;4;0;false;false;;;;;;
                                  -48534;1;0;false;false;0;0;0;;;
                                  -48535;4;0;false;false;;;;;;
                                  -48539;79;0;false;false;63;127;95;;;
                                  -48618;2;0;false;false;;;;;;
                                  -48620;72;0;false;false;63;127;95;;;
                                  -48692;2;0;false;false;;;;;;
                                  -48694;30;0;false;false;63;127;95;;;
                                  -48724;2;0;false;false;;;;;;
                                  -48726;27;0;false;false;0;0;0;;;
                                  -48753;1;0;false;false;;;;;;
                                  -48754;14;0;false;false;0;0;0;;;
                                  -48768;4;0;false;false;;;;;;
                                  -48772;79;0;false;false;63;127;95;;;
                                  -48851;2;0;false;false;;;;;;
                                  -48853;71;0;false;false;63;127;95;;;
                                  -48924;2;0;false;false;;;;;;
                                  -48926;22;0;false;false;63;127;95;;;
                                  -48948;2;0;false;false;;;;;;
                                  -48950;2;1;false;false;127;0;85;;;
                                  -48952;1;0;false;false;;;;;;
                                  -48953;15;0;false;false;0;0;0;;;
                                  -48968;1;0;false;false;;;;;;
                                  -48969;2;0;false;false;0;0;0;;;
                                  -48971;6;0;false;false;;;;;;
                                  -48977;18;0;false;false;0;0;0;;;
                                  -48995;1;0;false;false;;;;;;
                                  -48996;2;0;false;false;0;0;0;;;
                                  -48998;1;0;false;false;;;;;;
                                  -48999;2;0;false;false;0;0;0;;;
                                  -49001;1;0;false;false;;;;;;
                                  -49002;2;0;false;false;0;0;0;;;
                                  -49004;1;0;false;false;;;;;;
                                  -49005;28;0;false;false;0;0;0;;;
                                  -49033;1;0;false;false;;;;;;
                                  -49034;1;0;false;false;0;0;0;;;
                                  -49035;1;0;false;false;;;;;;
                                  -49036;10;0;false;false;0;0;0;;;
                                  -49046;1;0;false;false;;;;;;
                                  -49047;1;0;false;false;0;0;0;;;
                                  -49048;5;0;false;false;;;;;;
                                  -49053;65;0;false;false;63;127;95;;;
                                  -49118;3;0;false;false;;;;;;
                                  -49121;60;0;false;false;63;127;95;;;
                                  -49181;3;0;false;false;;;;;;
                                  -49184;8;0;false;false;0;0;0;;;
                                  -49192;1;0;false;false;;;;;;
                                  -49193;1;0;false;false;0;0;0;;;
                                  -49194;1;0;false;false;;;;;;
                                  -49195;2;0;false;false;0;0;0;;;
                                  -49197;5;0;false;false;;;;;;
                                  -49202;3;1;false;false;127;0;85;;;
                                  -49205;1;0;false;false;;;;;;
                                  -49206;1;0;false;false;0;0;0;;;
                                  -49207;3;1;false;false;127;0;85;;;
                                  -49210;1;0;false;false;;;;;;
                                  -49211;1;0;false;false;0;0;0;;;
                                  -49212;1;0;false;false;;;;;;
                                  -49213;1;0;false;false;0;0;0;;;
                                  -49214;1;0;false;false;;;;;;
                                  -49215;2;0;false;false;0;0;0;;;
                                  -49217;1;0;false;false;;;;;;
                                  -49218;1;0;false;false;0;0;0;;;
                                  -49219;1;0;false;false;;;;;;
                                  -49220;1;0;false;false;0;0;0;;;
                                  -49221;1;0;false;false;;;;;;
                                  -49222;10;0;false;false;0;0;0;;;
                                  -49232;1;0;false;false;;;;;;
                                  -49233;4;0;false;false;0;0;0;;;
                                  -49237;1;0;false;false;;;;;;
                                  -49238;1;0;false;false;0;0;0;;;
                                  -49239;6;0;false;false;;;;;;
                                  -49245;2;1;false;false;127;0;85;;;
                                  -49247;1;0;false;false;;;;;;
                                  -49248;13;0;false;false;0;0;0;;;
                                  -49261;1;0;false;false;;;;;;
                                  -49262;1;0;false;false;0;0;0;;;
                                  -49263;1;0;false;false;;;;;;
                                  -49264;9;0;false;false;0;0;0;;;
                                  -49273;1;0;false;false;;;;;;
                                  -49274;1;0;false;false;0;0;0;;;
                                  -49275;7;0;false;false;;;;;;
                                  -49282;8;0;false;false;0;0;0;;;
                                  -49290;1;0;false;false;;;;;;
                                  -49291;1;0;false;false;0;0;0;;;
                                  -49292;1;0;false;false;;;;;;
                                  -49293;13;0;false;false;0;0;0;;;
                                  -49306;7;0;false;false;;;;;;
                                  -49313;17;0;false;false;0;0;0;;;
                                  -49330;1;0;false;false;;;;;;
                                  -49331;1;0;false;false;0;0;0;;;
                                  -49332;1;0;false;false;;;;;;
                                  -49333;2;0;false;false;0;0;0;;;
                                  -49335;6;0;false;false;;;;;;
                                  -49341;1;0;false;false;0;0;0;;;
                                  -49342;5;0;false;false;;;;;;
                                  -49347;1;0;false;false;0;0;0;;;
                                  -49348;7;0;false;false;;;;;;
                                  -49355;1;0;false;false;0;0;0;;;
                                  -49356;3;0;false;false;;;;;;
                                  -49359;1;0;false;false;0;0;0;;;
                                  -49360;3;0;false;false;;;;;;
                                  -49363;1;0;false;false;0;0;0;;;
                                  -49364;3;0;false;false;;;;;;
                                  -49367;3;0;false;false;63;95;191;;;
                                  -49370;4;0;false;false;;;;;;
                                  -49374;1;0;false;false;63;95;191;;;
                                  -49375;1;0;false;false;;;;;;
                                  -49376;7;0;false;false;63;95;191;;;
                                  -49383;1;0;false;false;;;;;;
                                  -49384;3;0;false;false;63;95;191;;;
                                  -49387;1;0;false;false;;;;;;
                                  -49388;4;0;false;false;63;95;191;;;
                                  -49392;1;0;false;false;;;;;;
                                  -49393;8;0;false;false;63;95;191;;;
                                  -49401;1;0;false;false;;;;;;
                                  -49402;2;0;false;false;63;95;191;;;
                                  -49404;1;0;false;false;;;;;;
                                  -49405;3;0;false;false;63;95;191;;;
                                  -49408;1;0;false;false;;;;;;
                                  -49409;8;0;false;false;63;95;191;;;
                                  -49417;4;0;false;false;;;;;;
                                  -49421;1;0;false;false;63;95;191;;;
                                  -49422;1;0;false;false;;;;;;
                                  -49423;3;0;false;false;63;95;191;;;
                                  -49426;1;0;false;false;;;;;;
                                  -49427;4;0;false;false;63;95;191;;;
                                  -49431;1;0;false;false;;;;;;
                                  -49432;8;0;false;false;63;95;191;;;
                                  -49440;1;0;false;false;;;;;;
                                  -49441;4;0;false;false;63;95;191;;;
                                  -49445;1;0;false;false;;;;;;
                                  -49446;6;0;false;false;63;95;191;;;
                                  -49452;1;0;false;false;;;;;;
                                  -49453;2;0;false;false;63;95;191;;;
                                  -49455;1;0;false;false;;;;;;
                                  -49456;2;0;false;false;63;95;191;;;
                                  -49458;1;0;false;false;;;;;;
                                  -49459;1;0;false;false;63;95;191;;;
                                  -49460;1;0;false;false;;;;;;
                                  -49461;10;0;false;false;63;95;191;;;
                                  -49471;1;0;false;false;;;;;;
                                  -49472;6;0;false;false;63;95;191;;;
                                  -49478;5;0;false;false;;;;;;
                                  -49483;1;0;false;false;63;95;191;;;
                                  -49484;1;0;false;false;;;;;;
                                  -49485;10;0;false;false;63;95;191;;;
                                  -49495;1;0;false;false;;;;;;
                                  -49496;4;0;false;false;63;95;191;;;
                                  -49500;1;0;false;false;;;;;;
                                  -49501;6;0;false;false;127;127;159;;;
                                  -49507;5;0;false;false;63;95;191;;;
                                  -49512;7;0;false;false;127;127;159;;;
                                  -49519;1;0;false;false;;;;;;
                                  -49520;2;0;false;false;63;95;191;;;
                                  -49522;1;0;false;false;;;;;;
                                  -49523;6;0;false;false;127;127;159;;;
                                  -49529;11;0;false;false;63;95;191;;;
                                  -49540;7;0;false;false;127;127;159;;;
                                  -49547;4;0;false;false;;;;;;
                                  -49551;1;0;false;false;63;95;191;;;
                                  -49552;1;0;false;false;;;;;;
                                  -49553;2;0;false;false;63;95;191;;;
                                  -49555;1;0;false;false;;;;;;
                                  -49556;7;0;false;false;63;95;191;;;
                                  -49563;1;0;false;false;;;;;;
                                  -49564;3;0;false;false;63;95;191;;;
                                  -49567;1;0;false;false;;;;;;
                                  -49568;4;0;false;false;63;95;191;;;
                                  -49572;1;0;false;false;;;;;;
                                  -49573;8;0;false;false;63;95;191;;;
                                  -49581;1;0;false;false;;;;;;
                                  -49582;2;0;false;false;63;95;191;;;
                                  -49584;1;0;false;false;;;;;;
                                  -49585;12;0;false;false;63;95;191;;;
                                  -49597;1;0;false;false;;;;;;
                                  -49598;11;0;false;false;63;95;191;;;
                                  -49609;5;0;false;false;;;;;;
                                  -49614;1;0;false;false;63;95;191;;;
                                  -49615;1;0;false;false;;;;;;
                                  -49616;7;0;false;false;63;95;191;;;
                                  -49623;1;0;false;false;;;;;;
                                  -49624;2;0;false;false;63;95;191;;;
                                  -49626;1;0;false;false;;;;;;
                                  -49627;2;0;false;false;63;95;191;;;
                                  -49629;1;0;false;false;;;;;;
                                  -49630;6;0;false;false;127;127;159;;;
                                  -49636;9;0;false;false;63;95;191;;;
                                  -49645;7;0;false;false;127;127;159;;;
                                  -49652;1;0;false;false;63;95;191;;;
                                  -49653;4;0;false;false;;;;;;
                                  -49657;2;0;false;false;63;95;191;;;
                                  -49659;3;0;false;false;;;;;;
                                  -49662;5;1;false;false;127;0;85;;;
                                  -49667;1;0;false;false;;;;;;
                                  -49668;13;0;false;false;0;0;0;;;
                                  -49681;1;0;false;false;;;;;;
                                  -49682;10;1;false;false;127;0;85;;;
                                  -49692;1;0;false;false;;;;;;
                                  -49693;9;0;false;false;0;0;0;;;
                                  -49702;1;0;false;false;;;;;;
                                  -49703;1;0;false;false;0;0;0;;;
                                  -49704;4;0;false;false;;;;;;
                                  -49708;10;0;false;false;0;0;0;;;
                                  -49718;1;0;false;false;;;;;;
                                  -49719;7;0;false;false;0;0;0;;;
                                  -49726;4;0;false;false;;;;;;
                                  -49730;14;0;false;false;0;0;0;;;
                                  -49744;1;0;false;false;;;;;;
                                  -49745;14;0;false;false;0;0;0;;;
                                  -49759;9;0;false;false;;;;;;
                                  -49768;3;0;false;false;63;95;191;;;
                                  -49771;5;0;false;false;;;;;;
                                  -49776;1;0;false;false;63;95;191;;;
                                  -49777;1;0;false;false;;;;;;
                                  -49778;7;0;false;false;63;95;191;;;
                                  -49785;1;0;false;false;;;;;;
                                  -49786;1;0;false;false;63;95;191;;;
                                  -49787;1;0;false;false;;;;;;
                                  -49788;3;0;false;false;63;95;191;;;
                                  -49791;1;0;false;false;;;;;;
                                  -49792;6;0;false;false;127;127;159;;;
                                  -49798;13;0;false;false;63;95;191;;;
                                  -49811;7;0;false;false;127;127;159;;;
                                  -49818;1;0;false;false;;;;;;
                                  -49819;3;0;false;false;63;95;191;;;
                                  -49822;1;0;false;false;;;;;;
                                  -49823;10;0;false;false;63;95;191;;;
                                  -49833;1;0;false;false;;;;;;
                                  -49834;2;0;false;false;63;95;191;;;
                                  -49836;1;0;false;false;;;;;;
                                  -49837;7;0;false;false;63;95;191;;;
                                  -49844;4;0;false;false;;;;;;
                                  -49848;1;0;false;false;63;95;191;;;
                                  -49849;1;0;false;false;;;;;;
                                  -49850;4;0;false;false;63;95;191;;;
                                  -49854;1;0;false;false;;;;;;
                                  -49855;9;0;false;false;63;95;191;;;
                                  -49864;4;0;false;false;;;;;;
                                  -49868;1;0;false;false;63;95;191;;;
                                  -49869;1;0;false;false;;;;;;
                                  -49870;3;0;false;false;127;127;159;;;
                                  -49873;4;0;false;false;;;;;;
                                  -49877;1;0;false;false;63;95;191;;;
                                  -49878;4;0;false;false;;;;;;
                                  -49882;1;0;false;false;63;95;191;;;
                                  -49883;1;0;false;false;;;;;;
                                  -49884;7;1;false;false;127;159;191;;;
                                  -49891;6;0;false;false;63;95;191;;;
                                  -49897;1;0;false;false;;;;;;
                                  -49898;3;0;false;false;63;95;191;;;
                                  -49901;1;0;false;false;;;;;;
                                  -49902;10;0;false;false;63;95;191;;;
                                  -49912;1;0;false;false;;;;;;
                                  -49913;6;0;false;false;63;95;191;;;
                                  -49919;1;0;false;false;;;;;;
                                  -49920;2;0;false;false;63;95;191;;;
                                  -49922;1;0;false;false;;;;;;
                                  -49923;4;0;false;false;63;95;191;;;
                                  -49927;1;0;false;false;;;;;;
                                  -49928;7;0;false;false;63;95;191;;;
                                  -49935;1;0;false;false;;;;;;
                                  -49936;3;0;false;false;63;95;191;;;
                                  -49939;4;0;false;false;;;;;;
                                  -49943;1;0;false;false;63;95;191;;;
                                  -49944;1;0;false;false;;;;;;
                                  -49945;7;1;false;false;127;159;191;;;
                                  -49952;7;0;false;false;63;95;191;;;
                                  -49959;1;0;false;false;;;;;;
                                  -49960;3;0;false;false;63;95;191;;;
                                  -49963;1;0;false;false;;;;;;
                                  -49964;7;0;false;false;63;95;191;;;
                                  -49971;1;0;false;false;;;;;;
                                  -49972;8;0;false;false;63;95;191;;;
                                  -49980;1;0;false;false;;;;;;
                                  -49981;4;0;false;false;63;95;191;;;
                                  -49985;1;0;false;false;;;;;;
                                  -49986;4;0;false;false;63;95;191;;;
                                  -49990;1;0;false;false;;;;;;
                                  -49991;3;0;false;false;63;95;191;;;
                                  -49994;1;0;false;false;;;;;;
                                  -49995;6;0;false;false;63;95;191;;;
                                  -50001;1;0;false;false;;;;;;
                                  -50002;4;0;false;false;63;95;191;;;
                                  -50006;1;0;false;false;;;;;;
                                  -50007;9;0;false;false;63;95;191;;;
                                  -50016;4;0;false;false;;;;;;
                                  -50020;2;0;false;false;63;95;191;;;
                                  -50022;3;0;false;false;;;;;;
                                  -50025;6;1;false;false;127;0;85;;;
                                  -50031;1;0;false;false;;;;;;
                                  -50032;24;0;false;false;0;0;0;;;
                                  -50056;1;0;false;false;;;;;;
                                  -50057;7;0;false;false;0;0;0;;;
                                  -50064;1;0;false;false;;;;;;
                                  -50065;14;0;false;false;0;0;0;;;
                                  -50079;1;0;false;false;;;;;;
                                  -50080;8;0;false;false;0;0;0;;;
                                  -50088;1;0;false;false;;;;;;
                                  -50089;1;0;false;false;0;0;0;;;
                                  -50090;4;0;false;false;;;;;;
                                  -50094;4;1;false;false;127;0;85;;;
                                  -50098;7;0;false;false;0;0;0;;;
                                  -50105;1;0;false;false;;;;;;
                                  -50106;1;0;false;false;0;0;0;;;
                                  -50107;1;0;false;false;;;;;;
                                  -50108;7;0;false;false;0;0;0;;;
                                  -50115;4;0;false;false;;;;;;
                                  -50119;13;0;false;false;0;0;0;;;
                                  -50132;1;0;false;false;;;;;;
                                  -50133;1;0;false;false;0;0;0;;;
                                  -50134;1;0;false;false;;;;;;
                                  -50135;8;0;false;false;0;0;0;;;
                                  -50143;4;0;false;false;;;;;;
                                  -50147;26;0;false;false;0;0;0;;;
                                  -50173;3;0;false;false;;;;;;
                                  -50176;1;0;false;false;0;0;0;;;
                                  -50177;3;0;false;false;;;;;;
                                  -50180;3;0;false;false;63;95;191;;;
                                  -50183;4;0;false;false;;;;;;
                                  -50187;1;0;false;false;63;95;191;;;
                                  -50188;1;0;false;false;;;;;;
                                  -50189;2;0;false;false;63;95;191;;;
                                  -50191;1;0;false;false;;;;;;
                                  -50192;8;0;false;false;63;95;191;;;
                                  -50200;1;0;false;false;;;;;;
                                  -50201;5;0;false;false;63;95;191;;;
                                  -50206;1;0;false;false;;;;;;
                                  -50207;3;0;false;false;63;95;191;;;
                                  -50210;1;0;false;false;;;;;;
                                  -50211;7;0;false;false;63;95;191;;;
                                  -50218;1;0;false;false;;;;;;
                                  -50219;11;0;false;false;63;95;191;;;
                                  -50230;1;0;false;false;;;;;;
                                  -50231;5;0;false;false;63;95;191;;;
                                  -50236;1;0;false;false;;;;;;
                                  -50237;6;0;false;false;63;95;191;;;
                                  -50243;4;0;false;false;;;;;;
                                  -50247;1;0;false;false;63;95;191;;;
                                  -50248;1;0;false;false;;;;;;
                                  -50249;3;0;false;false;127;127;159;;;
                                  -50252;4;0;false;false;;;;;;
                                  -50256;1;0;false;false;63;95;191;;;
                                  -50257;5;0;false;false;;;;;;
                                  -50262;1;0;false;false;63;95;191;;;
                                  -50263;1;0;false;false;;;;;;
                                  -50264;7;1;false;false;127;159;191;;;
                                  -50271;9;0;false;false;63;95;191;;;
                                  -50280;1;0;false;false;;;;;;
                                  -50281;5;0;false;false;63;95;191;;;
                                  -50286;1;0;false;false;;;;;;
                                  -50287;4;0;false;false;63;95;191;;;
                                  -50291;1;0;false;false;;;;;;
                                  -50292;2;0;false;false;63;95;191;;;
                                  -50294;1;0;false;false;;;;;;
                                  -50295;9;0;false;false;63;95;191;;;
                                  -50304;4;0;false;false;;;;;;
                                  -50308;1;0;false;false;63;95;191;;;
                                  -50309;1;0;false;false;;;;;;
                                  -50310;7;1;false;false;127;159;191;;;
                                  -50317;9;0;false;false;63;95;191;;;
                                  -50326;1;0;false;false;;;;;;
                                  -50327;6;0;false;false;63;95;191;;;
                                  -50333;1;0;false;false;;;;;;
                                  -50334;2;0;false;false;63;95;191;;;
                                  -50336;1;0;false;false;;;;;;
                                  -50337;5;0;false;false;63;95;191;;;
                                  -50342;1;0;false;false;;;;;;
                                  -50343;2;0;false;false;63;95;191;;;
                                  -50345;1;0;false;false;;;;;;
                                  -50346;9;0;false;false;63;95;191;;;
                                  -50355;4;0;false;false;;;;;;
                                  -50359;2;0;false;false;63;95;191;;;
                                  -50361;3;0;false;false;;;;;;
                                  -50364;6;1;false;false;127;0;85;;;
                                  -50370;1;0;false;false;;;;;;
                                  -50371;4;1;false;false;127;0;85;;;
                                  -50375;1;0;false;false;;;;;;
                                  -50376;10;0;false;false;0;0;0;;;
                                  -50386;3;1;false;false;127;0;85;;;
                                  -50389;1;0;false;false;;;;;;
                                  -50390;10;0;false;false;0;0;0;;;
                                  -50400;1;0;false;false;;;;;;
                                  -50401;3;1;false;false;127;0;85;;;
                                  -50404;1;0;false;false;;;;;;
                                  -50405;10;0;false;false;0;0;0;;;
                                  -50415;1;0;false;false;;;;;;
                                  -50416;1;0;false;false;0;0;0;;;
                                  -50417;3;0;false;false;;;;;;
                                  -50420;1;0;false;false;0;0;0;;;
                                  -50421;3;0;false;false;;;;;;
                                  -50424;3;0;false;false;63;95;191;;;
                                  -50427;4;0;false;false;;;;;;
                                  -50431;1;0;false;false;63;95;191;;;
                                  -50432;1;0;false;false;;;;;;
                                  -50433;7;0;false;false;63;95;191;;;
                                  -50440;1;0;false;false;;;;;;
                                  -50441;3;0;false;false;63;95;191;;;
                                  -50444;1;0;false;false;;;;;;
                                  -50445;6;0;false;false;63;95;191;;;
                                  -50451;1;0;false;false;;;;;;
                                  -50452;4;0;false;false;63;95;191;;;
                                  -50456;1;0;false;false;;;;;;
                                  -50457;6;0;false;false;63;95;191;;;
                                  -50463;1;0;false;false;;;;;;
                                  -50464;5;0;false;false;63;95;191;;;
                                  -50469;1;0;false;false;;;;;;
                                  -50470;3;0;false;false;63;95;191;;;
                                  -50473;1;0;false;false;;;;;;
                                  -50474;7;0;false;false;63;95;191;;;
                                  -50481;1;0;false;false;;;;;;
                                  -50482;2;0;false;false;63;95;191;;;
                                  -50484;1;0;false;false;;;;;;
                                  -50485;5;0;false;false;63;95;191;;;
                                  -50490;4;0;false;false;;;;;;
                                  -50494;1;0;false;false;63;95;191;;;
                                  -50495;1;0;false;false;;;;;;
                                  -50496;2;0;false;false;63;95;191;;;
                                  -50498;1;0;false;false;;;;;;
                                  -50499;2;0;false;false;63;95;191;;;
                                  -50501;1;0;false;false;;;;;;
                                  -50502;10;0;false;false;63;95;191;;;
                                  -50512;1;0;false;false;;;;;;
                                  -50513;6;0;false;false;63;95;191;;;
                                  -50519;1;0;false;false;;;;;;
                                  -50520;4;0;false;false;63;95;191;;;
                                  -50524;4;0;false;false;;;;;;
                                  -50528;1;0;false;false;63;95;191;;;
                                  -50529;1;0;false;false;;;;;;
                                  -50530;3;0;false;false;127;127;159;;;
                                  -50533;4;0;false;false;;;;;;
                                  -50537;1;0;false;false;63;95;191;;;
                                  -50538;4;0;false;false;;;;;;
                                  -50542;1;0;false;false;63;95;191;;;
                                  -50543;1;0;false;false;;;;;;
                                  -50544;8;1;false;false;127;159;191;;;
                                  -50552;3;0;false;false;63;95;191;;;
                                  -50555;1;0;false;false;;;;;;
                                  -50556;4;0;false;false;63;95;191;;;
                                  -50560;1;0;false;false;;;;;;
                                  -50561;5;0;false;false;63;95;191;;;
                                  -50566;4;0;false;false;;;;;;
                                  -50570;2;0;false;false;63;95;191;;;
                                  -50572;3;0;false;false;;;;;;
                                  -50575;6;1;false;false;127;0;85;;;
                                  -50581;1;0;false;false;;;;;;
                                  -50582;3;1;false;false;127;0;85;;;
                                  -50585;1;0;false;false;;;;;;
                                  -50586;10;0;false;false;0;0;0;;;
                                  -50596;1;0;false;false;;;;;;
                                  -50597;1;0;false;false;0;0;0;;;
                                  -50598;4;0;false;false;;;;;;
                                  -50602;6;1;false;false;127;0;85;;;
                                  -50608;1;0;false;false;;;;;;
                                  -50609;29;0;false;false;0;0;0;;;
                                  -50638;3;0;false;false;;;;;;
                                  -50641;1;0;false;false;0;0;0;;;
                                  -50642;3;0;false;false;;;;;;
                                  -50645;3;0;false;false;63;95;191;;;
                                  -50648;4;0;false;false;;;;;;
                                  -50652;1;0;false;false;63;95;191;;;
                                  -50653;1;0;false;false;;;;;;
                                  -50654;5;0;false;false;63;95;191;;;
                                  -50659;1;0;false;false;;;;;;
                                  -50660;3;0;false;false;63;95;191;;;
                                  -50663;1;0;false;false;;;;;;
                                  -50664;5;0;false;false;63;95;191;;;
                                  -50669;1;0;false;false;;;;;;
                                  -50670;2;0;false;false;63;95;191;;;
                                  -50672;1;0;false;false;;;;;;
                                  -50673;3;0;false;false;63;95;191;;;
                                  -50676;1;0;false;false;;;;;;
                                  -50677;9;0;false;false;63;95;191;;;
                                  -50686;1;0;false;false;;;;;;
                                  -50687;6;0;false;false;63;95;191;;;
                                  -50693;4;0;false;false;;;;;;
                                  -50697;1;0;false;false;63;95;191;;;
                                  -50698;1;0;false;false;;;;;;
                                  -50699;4;0;false;false;63;95;191;;;
                                  -50703;1;0;false;false;;;;;;
                                  -50704;6;0;false;false;63;95;191;;;
                                  -50710;1;0;false;false;;;;;;
                                  -50711;2;0;false;false;63;95;191;;;
                                  -50713;1;0;false;false;;;;;;
                                  -50714;6;0;false;false;63;95;191;;;
                                  -50720;1;0;false;false;;;;;;
                                  -50721;2;0;false;false;63;95;191;;;
                                  -50723;1;0;false;false;;;;;;
                                  -50724;6;0;false;false;127;127;159;;;
                                  -50730;19;0;false;false;63;95;191;;;
                                  -50749;7;0;false;false;127;127;159;;;
                                  -50756;1;0;false;false;63;95;191;;;
                                  -50757;4;0;false;false;;;;;;
                                  -50761;1;0;false;false;63;95;191;;;
                                  -50762;1;0;false;false;;;;;;
                                  -50763;1;0;false;false;63;95;191;;;
                                  -50764;1;0;false;false;;;;;;
                                  -50765;6;0;false;false;63;95;191;;;
                                  -50771;1;0;false;false;;;;;;
                                  -50772;2;0;false;false;63;95;191;;;
                                  -50774;1;0;false;false;;;;;;
                                  -50775;9;0;false;false;63;95;191;;;
                                  -50784;1;0;false;false;;;;;;
                                  -50785;3;0;false;false;63;95;191;;;
                                  -50788;1;0;false;false;;;;;;
                                  -50789;10;0;false;false;63;95;191;;;
                                  -50799;4;0;false;false;;;;;;
                                  -50803;1;0;false;false;63;95;191;;;
                                  -50804;1;0;false;false;;;;;;
                                  -50805;3;0;false;false;127;127;159;;;
                                  -50808;4;0;false;false;;;;;;
                                  -50812;1;0;false;false;63;95;191;;;
                                  -50813;4;0;false;false;;;;;;
                                  -50817;1;0;false;false;63;95;191;;;
                                  -50818;1;0;false;false;;;;;;
                                  -50819;7;1;false;false;127;159;191;;;
                                  -50826;9;0;false;false;63;95;191;;;
                                  -50835;1;0;false;false;;;;;;
                                  -50836;3;0;false;false;63;95;191;;;
                                  -50839;1;0;false;false;;;;;;
                                  -50840;5;0;false;false;63;95;191;;;
                                  -50845;1;0;false;false;;;;;;
                                  -50846;4;0;false;false;63;95;191;;;
                                  -50850;1;0;false;false;;;;;;
                                  -50851;2;0;false;false;63;95;191;;;
                                  -50853;1;0;false;false;;;;;;
                                  -50854;5;0;false;false;63;95;191;;;
                                  -50859;4;0;false;false;;;;;;
                                  -50863;1;0;false;false;63;95;191;;;
                                  -50864;1;0;false;false;;;;;;
                                  -50865;7;1;false;false;127;159;191;;;
                                  -50872;9;0;false;false;63;95;191;;;
                                  -50881;1;0;false;false;;;;;;
                                  -50882;3;0;false;false;63;95;191;;;
                                  -50885;1;0;false;false;;;;;;
                                  -50886;6;0;false;false;63;95;191;;;
                                  -50892;1;0;false;false;;;;;;
                                  -50893;2;0;false;false;63;95;191;;;
                                  -50895;1;0;false;false;;;;;;
                                  -50896;5;0;false;false;63;95;191;;;
                                  -50901;1;0;false;false;;;;;;
                                  -50902;2;0;false;false;63;95;191;;;
                                  -50904;1;0;false;false;;;;;;
                                  -50905;5;0;false;false;63;95;191;;;
                                  -50910;4;0;false;false;;;;;;
                                  -50914;1;0;false;false;63;95;191;;;
                                  -50915;1;0;false;false;;;;;;
                                  -50916;7;1;false;false;127;159;191;;;
                                  -50923;17;0;false;false;63;95;191;;;
                                  -50940;1;0;false;false;;;;;;
                                  -50941;17;0;false;false;63;95;191;;;
                                  -50958;1;0;false;false;;;;;;
                                  -50959;6;0;false;false;63;95;191;;;
                                  -50965;1;0;false;false;;;;;;
                                  -50966;6;0;false;false;63;95;191;;;
                                  -50972;1;0;false;false;;;;;;
                                  -50973;1;0;false;false;63;95;191;;;
                                  -50974;5;0;false;false;;;;;;
                                  -50979;1;0;false;false;63;95;191;;;
                                  -50980;2;0;false;false;;;;;;
                                  -50982;5;0;false;false;63;95;191;;;
                                  -50987;1;0;false;false;;;;;;
                                  -50988;5;0;false;false;63;95;191;;;
                                  -50993;1;0;false;false;;;;;;
                                  -50994;4;0;false;false;63;95;191;;;
                                  -50998;1;0;false;false;;;;;;
                                  -50999;2;0;false;false;63;95;191;;;
                                  -51001;1;0;false;false;;;;;;
                                  -51002;2;0;false;false;63;95;191;;;
                                  -51004;1;0;false;false;;;;;;
                                  -51005;2;0;false;false;63;95;191;;;
                                  -51007;1;0;false;false;;;;;;
                                  -51008;8;0;false;false;63;95;191;;;
                                  -51016;1;0;false;false;;;;;;
                                  -51017;2;0;false;false;63;95;191;;;
                                  -51019;1;0;false;false;;;;;;
                                  -51020;3;0;false;false;63;95;191;;;
                                  -51023;1;0;false;false;;;;;;
                                  -51024;5;0;false;false;63;95;191;;;
                                  -51029;1;0;false;false;;;;;;
                                  -51030;10;0;false;false;63;95;191;;;
                                  -51040;4;0;false;false;;;;;;
                                  -51044;1;0;false;false;63;95;191;;;
                                  -51045;2;0;false;false;;;;;;
                                  -51047;9;0;false;false;63;95;191;;;
                                  -51056;1;0;false;false;;;;;;
                                  -51057;5;0;false;false;63;95;191;;;
                                  -51062;1;0;false;false;;;;;;
                                  -51063;3;0;false;false;63;95;191;;;
                                  -51066;1;0;false;false;;;;;;
                                  -51067;2;0;false;false;63;95;191;;;
                                  -51069;1;0;false;false;;;;;;
                                  -51070;3;0;false;false;63;95;191;;;
                                  -51073;1;0;false;false;;;;;;
                                  -51074;2;0;false;false;63;95;191;;;
                                  -51076;1;0;false;false;;;;;;
                                  -51077;1;0;false;false;63;95;191;;;
                                  -51078;4;0;false;false;;;;;;
                                  -51082;2;0;false;false;63;95;191;;;
                                  -51084;3;0;false;false;;;;;;
                                  -51087;6;1;false;false;127;0;85;;;
                                  -51093;1;0;false;false;;;;;;
                                  -51094;4;1;false;false;127;0;85;;;
                                  -51098;1;0;false;false;;;;;;
                                  -51099;12;0;false;false;0;0;0;;;
                                  -51111;3;1;false;false;127;0;85;;;
                                  -51114;1;0;false;false;;;;;;
                                  -51115;10;0;false;false;0;0;0;;;
                                  -51125;1;0;false;false;;;;;;
                                  -51126;3;1;false;false;127;0;85;;;
                                  -51129;1;0;false;false;;;;;;
                                  -51130;10;0;false;false;0;0;0;;;
                                  -51140;1;0;false;false;;;;;;
                                  -51141;7;1;false;false;127;0;85;;;
                                  -51148;1;0;false;false;;;;;;
                                  -51149;18;0;false;false;0;0;0;;;
                                  -51167;1;0;false;false;;;;;;
                                  -51168;1;0;false;false;0;0;0;;;
                                  -51169;7;0;false;false;;;;;;
                                  -51176;2;1;false;false;127;0;85;;;
                                  -51178;1;0;false;false;;;;;;
                                  -51179;10;0;false;false;0;0;0;;;
                                  -51189;1;0;false;false;;;;;;
                                  -51190;2;0;false;false;0;0;0;;;
                                  -51192;1;0;false;false;;;;;;
                                  -51193;29;0;false;false;0;0;0;;;
                                  -51222;1;0;false;false;;;;;;
                                  -51223;1;0;false;false;0;0;0;;;
                                  -51224;5;0;false;false;;;;;;
                                  -51229;44;0;false;false;63;127;95;;;
                                  -51273;3;0;false;false;;;;;;
                                  -51276;26;0;false;false;0;0;0;;;
                                  -51302;7;0;false;false;;;;;;
                                  -51309;1;0;false;false;0;0;0;;;
                                  -51310;7;0;false;false;;;;;;
                                  -51317;4;1;false;false;127;0;85;;;
                                  -51321;1;0;false;false;;;;;;
                                  -51322;1;0;false;false;0;0;0;;;
                                  -51323;8;0;false;false;;;;;;
                                  -51331;30;0;false;false;0;0;0;;;
                                  -51361;1;0;false;false;;;;;;
                                  -51362;11;0;false;false;0;0;0;;;
                                  -51373;7;0;false;false;;;;;;
                                  -51380;1;0;false;false;0;0;0;;;
                                  -51381;3;0;false;false;;;;;;
                                  -51384;1;0;false;false;0;0;0;;;
                                  -51385;3;0;false;false;;;;;;
                                  -51388;3;0;false;false;63;95;191;;;
                                  -51391;4;0;false;false;;;;;;
                                  -51395;1;0;false;false;63;95;191;;;
                                  -51396;1;0;false;false;;;;;;
                                  -51397;7;0;false;false;63;95;191;;;
                                  -51404;1;0;false;false;;;;;;
                                  -51405;3;0;false;false;63;95;191;;;
                                  -51408;1;0;false;false;;;;;;
                                  -51409;5;0;false;false;63;95;191;;;
                                  -51414;1;0;false;false;;;;;;
                                  -51415;2;0;false;false;63;95;191;;;
                                  -51417;1;0;false;false;;;;;;
                                  -51418;3;0;false;false;63;95;191;;;
                                  -51421;1;0;false;false;;;;;;
                                  -51422;9;0;false;false;63;95;191;;;
                                  -51431;1;0;false;false;;;;;;
                                  -51432;5;0;false;false;63;95;191;;;
                                  -51437;1;0;false;false;;;;;;
                                  -51438;3;0;false;false;63;95;191;;;
                                  -51441;1;0;false;false;;;;;;
                                  -51442;7;0;false;false;63;95;191;;;
                                  -51449;4;0;false;false;;;;;;
                                  -51453;1;0;false;false;63;95;191;;;
                                  -51454;1;0;false;false;;;;;;
                                  -51455;3;0;false;false;63;95;191;;;
                                  -51458;1;0;false;false;;;;;;
                                  -51459;6;0;false;false;63;95;191;;;
                                  -51465;1;0;false;false;;;;;;
                                  -51466;2;0;false;false;63;95;191;;;
                                  -51468;1;0;false;false;;;;;;
                                  -51469;3;0;false;false;63;95;191;;;
                                  -51472;1;0;false;false;;;;;;
                                  -51473;4;0;false;false;63;95;191;;;
                                  -51477;1;0;false;false;;;;;;
                                  -51478;8;0;false;false;63;95;191;;;
                                  -51486;1;0;false;false;;;;;;
                                  -51487;3;0;false;false;63;95;191;;;
                                  -51490;1;0;false;false;;;;;;
                                  -51491;8;0;false;false;63;95;191;;;
                                  -51499;4;0;false;false;;;;;;
                                  -51503;1;0;false;false;63;95;191;;;
                                  -51504;1;0;false;false;;;;;;
                                  -51505;3;0;false;false;127;127;159;;;
                                  -51508;4;0;false;false;;;;;;
                                  -51512;1;0;false;false;63;95;191;;;
                                  -51513;4;0;false;false;;;;;;
                                  -51517;1;0;false;false;63;95;191;;;
                                  -51518;1;0;false;false;;;;;;
                                  -51519;7;1;false;false;127;159;191;;;
                                  -51526;9;0;false;false;63;95;191;;;
                                  -51535;1;0;false;false;;;;;;
                                  -51536;3;0;false;false;63;95;191;;;
                                  -51539;1;0;false;false;;;;;;
                                  -51540;5;0;false;false;63;95;191;;;
                                  -51545;1;0;false;false;;;;;;
                                  -51546;4;0;false;false;63;95;191;;;
                                  -51550;1;0;false;false;;;;;;
                                  -51551;2;0;false;false;63;95;191;;;
                                  -51553;1;0;false;false;;;;;;
                                  -51554;5;0;false;false;63;95;191;;;
                                  -51559;4;0;false;false;;;;;;
                                  -51563;1;0;false;false;63;95;191;;;
                                  -51564;1;0;false;false;;;;;;
                                  -51565;7;1;false;false;127;159;191;;;
                                  -51572;9;0;false;false;63;95;191;;;
                                  -51581;1;0;false;false;;;;;;
                                  -51582;3;0;false;false;63;95;191;;;
                                  -51585;1;0;false;false;;;;;;
                                  -51586;6;0;false;false;63;95;191;;;
                                  -51592;1;0;false;false;;;;;;
                                  -51593;2;0;false;false;63;95;191;;;
                                  -51595;1;0;false;false;;;;;;
                                  -51596;5;0;false;false;63;95;191;;;
                                  -51601;1;0;false;false;;;;;;
                                  -51602;2;0;false;false;63;95;191;;;
                                  -51604;1;0;false;false;;;;;;
                                  -51605;5;0;false;false;63;95;191;;;
                                  -51610;4;0;false;false;;;;;;
                                  -51614;1;0;false;false;63;95;191;;;
                                  -51615;1;0;false;false;;;;;;
                                  -51616;7;1;false;false;127;159;191;;;
                                  -51623;17;0;false;false;63;95;191;;;
                                  -51640;1;0;false;false;;;;;;
                                  -51641;17;0;false;false;63;95;191;;;
                                  -51658;1;0;false;false;;;;;;
                                  -51659;6;0;false;false;63;95;191;;;
                                  -51665;1;0;false;false;;;;;;
                                  -51666;6;0;false;false;63;95;191;;;
                                  -51672;1;0;false;false;;;;;;
                                  -51673;1;0;false;false;63;95;191;;;
                                  -51674;5;0;false;false;;;;;;
                                  -51679;1;0;false;false;63;95;191;;;
                                  -51680;2;0;false;false;;;;;;
                                  -51682;5;0;false;false;63;95;191;;;
                                  -51687;1;0;false;false;;;;;;
                                  -51688;5;0;false;false;63;95;191;;;
                                  -51693;1;0;false;false;;;;;;
                                  -51694;4;0;false;false;63;95;191;;;
                                  -51698;1;0;false;false;;;;;;
                                  -51699;2;0;false;false;63;95;191;;;
                                  -51701;1;0;false;false;;;;;;
                                  -51702;2;0;false;false;63;95;191;;;
                                  -51704;1;0;false;false;;;;;;
                                  -51705;2;0;false;false;63;95;191;;;
                                  -51707;1;0;false;false;;;;;;
                                  -51708;8;0;false;false;63;95;191;;;
                                  -51716;1;0;false;false;;;;;;
                                  -51717;2;0;false;false;63;95;191;;;
                                  -51719;1;0;false;false;;;;;;
                                  -51720;3;0;false;false;63;95;191;;;
                                  -51723;1;0;false;false;;;;;;
                                  -51724;5;0;false;false;63;95;191;;;
                                  -51729;1;0;false;false;;;;;;
                                  -51730;10;0;false;false;63;95;191;;;
                                  -51740;4;0;false;false;;;;;;
                                  -51744;1;0;false;false;63;95;191;;;
                                  -51745;2;0;false;false;;;;;;
                                  -51747;9;0;false;false;63;95;191;;;
                                  -51756;1;0;false;false;;;;;;
                                  -51757;5;0;false;false;63;95;191;;;
                                  -51762;1;0;false;false;;;;;;
                                  -51763;3;0;false;false;63;95;191;;;
                                  -51766;1;0;false;false;;;;;;
                                  -51767;2;0;false;false;63;95;191;;;
                                  -51769;1;0;false;false;;;;;;
                                  -51770;3;0;false;false;63;95;191;;;
                                  -51773;1;0;false;false;;;;;;
                                  -51774;2;0;false;false;63;95;191;;;
                                  -51776;1;0;false;false;;;;;;
                                  -51777;1;0;false;false;63;95;191;;;
                                  -51778;4;0;false;false;;;;;;
                                  -51782;2;0;false;false;63;95;191;;;
                                  -51784;3;0;false;false;;;;;;
                                  -51787;6;1;false;false;127;0;85;;;
                                  -51793;1;0;false;false;;;;;;
                                  -51794;4;1;false;false;127;0;85;;;
                                  -51798;1;0;false;false;;;;;;
                                  -51799;6;0;false;false;0;0;0;;;
                                  -51805;3;1;false;false;127;0;85;;;
                                  -51808;1;0;false;false;;;;;;
                                  -51809;10;0;false;false;0;0;0;;;
                                  -51819;1;0;false;false;;;;;;
                                  -51820;3;1;false;false;127;0;85;;;
                                  -51823;1;0;false;false;;;;;;
                                  -51824;10;0;false;false;0;0;0;;;
                                  -51834;1;0;false;false;;;;;;
                                  -51835;7;1;false;false;127;0;85;;;
                                  -51842;1;0;false;false;;;;;;
                                  -51843;18;0;false;false;0;0;0;;;
                                  -51861;1;0;false;false;;;;;;
                                  -51862;1;0;false;false;0;0;0;;;
                                  -51863;4;0;false;false;;;;;;
                                  -51867;3;1;false;false;127;0;85;;;
                                  -51870;1;0;false;false;;;;;;
                                  -51871;9;0;false;false;0;0;0;;;
                                  -51880;1;0;false;false;;;;;;
                                  -51881;1;0;false;false;0;0;0;;;
                                  -51882;1;0;false;false;;;;;;
                                  -51883;23;0;false;false;0;0;0;;;
                                  -51906;1;0;false;false;;;;;;
                                  -51907;1;0;false;false;0;0;0;;;
                                  -51908;1;0;false;false;;;;;;
                                  -51909;8;0;false;false;0;0;0;;;
                                  -51917;1;0;false;false;;;;;;
                                  -51918;1;0;false;false;0;0;0;;;
                                  -51919;1;0;false;false;;;;;;
                                  -51920;2;0;false;false;0;0;0;;;
                                  -51922;7;0;false;false;;;;;;
                                  -51929;3;1;false;false;127;0;85;;;
                                  -51932;2;0;false;false;0;0;0;;;
                                  -51934;1;0;false;false;;;;;;
                                  -51935;14;0;false;false;0;0;0;;;
                                  -51949;1;0;false;false;;;;;;
                                  -51950;1;0;false;false;0;0;0;;;
                                  -51951;1;0;false;false;;;;;;
                                  -51952;3;1;false;false;127;0;85;;;
                                  -51955;1;0;false;false;;;;;;
                                  -51956;3;1;false;false;127;0;85;;;
                                  -51959;12;0;false;false;0;0;0;;;
                                  -51971;14;0;false;false;;;;;;
                                  -51985;3;1;false;false;127;0;85;;;
                                  -51988;1;0;false;false;;;;;;
                                  -51989;1;0;false;false;0;0;0;;;
                                  -51990;3;1;false;false;127;0;85;;;
                                  -51993;1;0;false;false;;;;;;
                                  -51994;1;0;false;false;0;0;0;;;
                                  -51995;1;0;false;false;;;;;;
                                  -51996;1;0;false;false;0;0;0;;;
                                  -51997;1;0;false;false;;;;;;
                                  -51998;2;0;false;false;0;0;0;;;
                                  -52000;1;0;false;false;;;;;;
                                  -52001;1;0;false;false;0;0;0;;;
                                  -52002;1;0;false;false;;;;;;
                                  -52003;1;0;false;false;0;0;0;;;
                                  -52004;1;0;false;false;;;;;;
                                  -52005;10;0;false;false;0;0;0;;;
                                  -52015;1;0;false;false;;;;;;
                                  -52016;4;0;false;false;0;0;0;;;
                                  -52020;1;0;false;false;;;;;;
                                  -52021;1;0;false;false;0;0;0;;;
                                  -52022;8;0;false;false;;;;;;
                                  -52030;17;0;false;false;0;0;0;;;
                                  -52047;1;0;false;false;;;;;;
                                  -52048;1;0;false;false;0;0;0;;;
                                  -52049;1;0;false;false;;;;;;
                                  -52050;31;0;false;false;0;0;0;;;
                                  -52081;1;0;false;false;;;;;;
                                  -52082;1;0;false;false;0;0;0;;;
                                  -52083;1;0;false;false;;;;;;
                                  -52084;10;0;false;false;0;0;0;;;
                                  -52094;7;0;false;false;;;;;;
                                  -52101;1;0;false;false;0;0;0;;;
                                  -52102;7;0;false;false;;;;;;
                                  -52109;22;0;false;false;0;0;0;;;
                                  -52131;1;0;false;false;;;;;;
                                  -52132;10;0;false;false;0;0;0;;;
                                  -52142;1;0;false;false;;;;;;
                                  -52143;19;0;false;false;0;0;0;;;
                                  -52162;4;0;false;false;;;;;;
                                  -52166;53;0;false;false;63;127;95;;;
                                  -52219;5;0;false;false;;;;;;
                                  -52224;2;1;false;false;127;0;85;;;
                                  -52226;1;0;false;false;;;;;;
                                  -52227;24;0;false;false;0;0;0;;;
                                  -52251;1;0;false;false;;;;;;
                                  -52252;1;0;false;false;0;0;0;;;
                                  -52253;1;0;false;false;;;;;;
                                  -52254;8;0;false;false;0;0;0;;;
                                  -52262;1;0;false;false;;;;;;
                                  -52263;1;0;false;false;0;0;0;;;
                                  -52264;1;0;false;false;;;;;;
                                  -52265;1;0;false;false;0;0;0;;;
                                  -52266;1;0;false;false;;;;;;
                                  -52267;2;0;false;false;0;0;0;;;
                                  -52269;1;0;false;false;;;;;;
                                  -52270;10;0;false;false;0;0;0;;;
                                  -52280;1;0;false;false;;;;;;
                                  -52281;1;0;false;false;0;0;0;;;
                                  -52282;8;0;false;false;;;;;;
                                  -52290;40;0;false;false;63;127;95;;;
                                  -52330;6;0;false;false;;;;;;
                                  -52336;24;0;false;false;0;0;0;;;
                                  -52360;7;0;false;false;;;;;;
                                  -52367;1;0;false;false;0;0;0;;;
                                  -52368;7;0;false;false;;;;;;
                                  -52375;4;1;false;false;127;0;85;;;
                                  -52379;1;0;false;false;;;;;;
                                  -52380;1;0;false;false;0;0;0;;;
                                  -52381;8;0;false;false;;;;;;
                                  -52389;3;1;false;false;127;0;85;;;
                                  -52392;1;0;false;false;;;;;;
                                  -52393;1;0;false;false;0;0;0;;;
                                  -52394;3;1;false;false;127;0;85;;;
                                  -52397;1;0;false;false;;;;;;
                                  -52398;1;0;false;false;0;0;0;;;
                                  -52399;1;0;false;false;;;;;;
                                  -52400;1;0;false;false;0;0;0;;;
                                  -52401;1;0;false;false;;;;;;
                                  -52402;2;0;false;false;0;0;0;;;
                                  -52404;1;0;false;false;;;;;;
                                  -52405;1;0;false;false;0;0;0;;;
                                  -52406;1;0;false;false;;;;;;
                                  -52407;1;0;false;false;0;0;0;;;
                                  -52408;1;0;false;false;;;;;;
                                  -52409;10;0;false;false;0;0;0;;;
                                  -52419;1;0;false;false;;;;;;
                                  -52420;4;0;false;false;0;0;0;;;
                                  -52424;1;0;false;false;;;;;;
                                  -52425;1;0;false;false;0;0;0;;;
                                  -52426;9;0;false;false;;;;;;
                                  -52435;2;1;false;false;127;0;85;;;
                                  -52437;1;0;false;false;;;;;;
                                  -52438;32;0;false;false;0;0;0;;;
                                  -52470;1;0;false;false;;;;;;
                                  -52471;1;0;false;false;0;0;0;;;
                                  -52472;1;0;false;false;;;;;;
                                  -52473;9;0;false;false;0;0;0;;;
                                  -52482;1;0;false;false;;;;;;
                                  -52483;2;0;false;false;0;0;0;;;
                                  -52485;1;0;false;false;;;;;;
                                  -52486;18;0;false;false;0;0;0;;;
                                  -52504;1;0;false;false;;;;;;
                                  -52505;1;0;false;false;0;0;0;;;
                                  -52506;10;0;false;false;;;;;;
                                  -52516;53;0;false;false;63;127;95;;;
                                  -52569;8;0;false;false;;;;;;
                                  -52577;24;0;false;false;0;0;0;;;
                                  -52601;10;0;false;false;;;;;;
                                  -52611;5;1;false;false;127;0;85;;;
                                  -52616;1;0;false;false;0;0;0;;;
                                  -52617;9;0;false;false;;;;;;
                                  -52626;1;0;false;false;0;0;0;;;
                                  -52627;8;0;false;false;;;;;;
                                  -52635;1;0;false;false;0;0;0;;;
                                  -52636;13;0;false;false;;;;;;
                                  -52649;1;0;false;false;0;0;0;;;
                                  -52650;3;0;false;false;;;;;;
                                  -52653;1;0;false;false;0;0;0;;;
                                  -52654;3;0;false;false;;;;;;
                                  -52657;3;0;false;false;63;95;191;;;
                                  -52660;5;0;false;false;;;;;;
                                  -52665;1;0;false;false;63;95;191;;;
                                  -52666;1;0;false;false;;;;;;
                                  -52667;6;0;false;false;63;95;191;;;
                                  -52673;1;0;false;false;;;;;;
                                  -52674;3;0;false;false;63;95;191;;;
                                  -52677;1;0;false;false;;;;;;
                                  -52678;4;0;false;false;63;95;191;;;
                                  -52682;1;0;false;false;;;;;;
                                  -52683;6;0;false;false;63;95;191;;;
                                  -52689;1;0;false;false;;;;;;
                                  -52690;12;0;false;false;63;95;191;;;
                                  -52702;1;0;false;false;;;;;;
                                  -52703;2;0;false;false;63;95;191;;;
                                  -52705;1;0;false;false;;;;;;
                                  -52706;3;0;false;false;63;95;191;;;
                                  -52709;1;0;false;false;;;;;;
                                  -52710;4;0;false;false;63;95;191;;;
                                  -52714;1;0;false;false;;;;;;
                                  -52715;4;0;false;false;63;95;191;;;
                                  -52719;1;0;false;false;;;;;;
                                  -52720;8;0;false;false;63;95;191;;;
                                  -52728;4;0;false;false;;;;;;
                                  -52732;1;0;false;false;63;95;191;;;
                                  -52733;1;0;false;false;;;;;;
                                  -52734;3;0;false;false;127;127;159;;;
                                  -52737;4;0;false;false;;;;;;
                                  -52741;1;0;false;false;63;95;191;;;
                                  -52742;4;0;false;false;;;;;;
                                  -52746;1;0;false;false;63;95;191;;;
                                  -52747;1;0;false;false;;;;;;
                                  -52748;7;1;false;false;127;159;191;;;
                                  -52755;11;0;false;false;63;95;191;;;
                                  -52766;1;0;false;false;;;;;;
                                  -52767;3;0;false;false;63;95;191;;;
                                  -52770;1;0;false;false;;;;;;
                                  -52771;5;0;false;false;63;95;191;;;
                                  -52776;1;0;false;false;;;;;;
                                  -52777;6;0;false;false;63;95;191;;;
                                  -52783;1;0;false;false;;;;;;
                                  -52784;2;0;false;false;63;95;191;;;
                                  -52786;1;0;false;false;;;;;;
                                  -52787;3;0;false;false;63;95;191;;;
                                  -52790;1;0;false;false;;;;;;
                                  -52791;4;0;false;false;63;95;191;;;
                                  -52795;1;0;false;false;;;;;;
                                  -52796;6;0;false;false;63;95;191;;;
                                  -52802;4;0;false;false;;;;;;
                                  -52806;1;0;false;false;63;95;191;;;
                                  -52807;1;0;false;false;;;;;;
                                  -52808;7;1;false;false;127;159;191;;;
                                  -52815;12;0;false;false;63;95;191;;;
                                  -52827;1;0;false;false;;;;;;
                                  -52828;3;0;false;false;63;95;191;;;
                                  -52831;1;0;false;false;;;;;;
                                  -52832;6;0;false;false;63;95;191;;;
                                  -52838;1;0;false;false;;;;;;
                                  -52839;2;0;false;false;63;95;191;;;
                                  -52841;1;0;false;false;;;;;;
                                  -52842;8;0;false;false;63;95;191;;;
                                  -52850;1;0;false;false;;;;;;
                                  -52851;5;0;false;false;63;95;191;;;
                                  -52856;4;0;false;false;;;;;;
                                  -52860;1;0;false;false;63;95;191;;;
                                  -52861;1;0;false;false;;;;;;
                                  -52862;7;1;false;false;127;159;191;;;
                                  -52869;16;0;false;false;63;95;191;;;
                                  -52885;1;0;false;false;;;;;;
                                  -52886;3;0;false;false;63;95;191;;;
                                  -52889;1;0;false;false;;;;;;
                                  -52890;6;0;false;false;63;95;191;;;
                                  -52896;1;0;false;false;;;;;;
                                  -52897;2;0;false;false;63;95;191;;;
                                  -52899;1;0;false;false;;;;;;
                                  -52900;7;0;false;false;63;95;191;;;
                                  -52907;1;0;false;false;;;;;;
                                  -52908;5;0;false;false;63;95;191;;;
                                  -52913;4;0;false;false;;;;;;
                                  -52917;1;0;false;false;63;95;191;;;
                                  -52918;1;0;false;false;;;;;;
                                  -52919;7;1;false;false;127;159;191;;;
                                  -52926;12;0;false;false;63;95;191;;;
                                  -52938;1;0;false;false;;;;;;
                                  -52939;3;0;false;false;63;95;191;;;
                                  -52942;1;0;false;false;;;;;;
                                  -52943;6;0;false;false;63;95;191;;;
                                  -52949;1;0;false;false;;;;;;
                                  -52950;2;0;false;false;63;95;191;;;
                                  -52952;1;0;false;false;;;;;;
                                  -52953;3;0;false;false;63;95;191;;;
                                  -52956;1;0;false;false;;;;;;
                                  -52957;10;0;false;false;63;95;191;;;
                                  -52967;4;0;false;false;;;;;;
                                  -52971;1;0;false;false;63;95;191;;;
                                  -52972;1;0;false;false;;;;;;
                                  -52973;7;1;false;false;127;159;191;;;
                                  -52980;16;0;false;false;63;95;191;;;
                                  -52996;1;0;false;false;;;;;;
                                  -52997;3;0;false;false;63;95;191;;;
                                  -53000;1;0;false;false;;;;;;
                                  -53001;6;0;false;false;63;95;191;;;
                                  -53007;1;0;false;false;;;;;;
                                  -53008;2;0;false;false;63;95;191;;;
                                  -53010;1;0;false;false;;;;;;
                                  -53011;7;0;false;false;63;95;191;;;
                                  -53018;1;0;false;false;;;;;;
                                  -53019;10;0;false;false;63;95;191;;;
                                  -53029;4;0;false;false;;;;;;
                                  -53033;2;0;false;false;63;95;191;;;
                                  -53035;5;0;false;false;;;;;;
                                  -53040;6;1;false;false;127;0;85;;;
                                  -53046;1;0;false;false;;;;;;
                                  -53047;4;1;false;false;127;0;85;;;
                                  -53051;1;0;false;false;;;;;;
                                  -53052;12;0;false;false;0;0;0;;;
                                  -53064;3;1;false;false;127;0;85;;;
                                  -53067;1;0;false;false;;;;;;
                                  -53068;12;0;false;false;0;0;0;;;
                                  -53080;1;0;false;false;;;;;;
                                  -53081;3;1;false;false;127;0;85;;;
                                  -53084;1;0;false;false;;;;;;
                                  -53085;13;0;false;false;0;0;0;;;
                                  -53098;1;0;false;false;;;;;;
                                  -53099;3;1;false;false;127;0;85;;;
                                  -53102;1;0;false;false;;;;;;
                                  -53103;17;0;false;false;0;0;0;;;
                                  -53120;1;0;false;false;;;;;;
                                  -53121;3;1;false;false;127;0;85;;;
                                  -53124;1;0;false;false;;;;;;
                                  -53125;13;0;false;false;0;0;0;;;
                                  -53138;1;0;false;false;;;;;;
                                  -53139;3;1;false;false;127;0;85;;;
                                  -53142;1;0;false;false;;;;;;
                                  -53143;17;0;false;false;0;0;0;;;
                                  -53160;1;0;false;false;;;;;;
                                  -53161;1;0;false;false;0;0;0;;;
                                  -53162;4;0;false;false;;;;;;
                                  -53166;3;1;false;false;127;0;85;;;
                                  -53169;1;0;false;false;;;;;;
                                  -53170;9;0;false;false;0;0;0;;;
                                  -53179;1;0;false;false;;;;;;
                                  -53180;1;0;false;false;0;0;0;;;
                                  -53181;1;0;false;false;;;;;;
                                  -53182;43;0;false;false;0;0;0;;;
                                  -53225;4;0;false;false;;;;;;
                                  -53229;38;0;false;false;0;0;0;;;
                                  -53267;1;0;false;false;;;;;;
                                  -53268;13;0;false;false;0;0;0;;;
                                  -53281;1;0;false;false;;;;;;
                                  -53282;17;0;false;false;0;0;0;;;
                                  -53299;1;0;false;false;;;;;;
                                  -53300;13;0;false;false;0;0;0;;;
                                  -53313;1;0;false;false;;;;;;
                                  -53314;18;0;false;false;0;0;0;;;
                                  -53332;6;0;false;false;;;;;;
                                  -53338;70;0;false;false;63;127;95;;;
                                  -53408;2;0;false;false;;;;;;
                                  -53410;70;0;false;false;63;127;95;;;
                                  -53480;2;0;false;false;;;;;;
                                  -53482;72;0;false;false;63;127;95;;;
                                  -53554;2;0;false;false;;;;;;
                                  -53556;68;0;false;false;63;127;95;;;
                                  -53624;2;0;false;false;;;;;;
                                  -53626;2;1;false;false;127;0;85;;;
                                  -53628;1;0;false;false;;;;;;
                                  -53629;10;0;false;false;0;0;0;;;
                                  -53639;1;0;false;false;;;;;;
                                  -53640;1;0;false;false;0;0;0;;;
                                  -53641;5;0;false;false;;;;;;
                                  -53646;3;1;false;false;127;0;85;;;
                                  -53649;1;0;false;false;;;;;;
                                  -53650;9;0;false;false;0;0;0;;;
                                  -53659;1;0;false;false;;;;;;
                                  -53660;1;0;false;false;0;0;0;;;
                                  -53661;1;0;false;false;;;;;;
                                  -53662;23;0;false;false;0;0;0;;;
                                  -53685;5;0;false;false;;;;;;
                                  -53690;2;1;false;false;127;0;85;;;
                                  -53692;1;0;false;false;;;;;;
                                  -53693;10;0;false;false;0;0;0;;;
                                  -53703;1;0;false;false;;;;;;
                                  -53704;2;0;false;false;0;0;0;;;
                                  -53706;1;0;false;false;;;;;;
                                  -53707;10;0;false;false;0;0;0;;;
                                  -53717;1;0;false;false;;;;;;
                                  -53718;9;0;false;false;0;0;0;;;
                                  -53727;1;0;false;false;;;;;;
                                  -53728;1;0;false;false;0;0;0;;;
                                  -53729;1;0;false;false;;;;;;
                                  -53730;9;0;false;false;0;0;0;;;
                                  -53739;1;0;false;false;;;;;;
                                  -53740;1;0;false;false;0;0;0;;;
                                  -53741;1;0;false;false;;;;;;
                                  -53742;2;0;false;false;0;0;0;;;
                                  -53744;6;0;false;false;;;;;;
                                  -53750;1;0;false;false;0;0;0;;;
                                  -53751;4;0;false;false;;;;;;
                                  -53755;2;1;false;false;127;0;85;;;
                                  -53757;1;0;false;false;;;;;;
                                  -53758;10;0;false;false;0;0;0;;;
                                  -53768;1;0;false;false;;;;;;
                                  -53769;2;0;false;false;0;0;0;;;
                                  -53771;1;0;false;false;;;;;;
                                  -53772;24;0;false;false;0;0;0;;;
                                  -53796;1;0;false;false;;;;;;
                                  -53797;1;0;false;false;0;0;0;;;
                                  -53798;5;0;false;false;;;;;;
                                  -53803;65;0;false;false;63;127;95;;;
                                  -53868;3;0;false;false;;;;;;
                                  -53871;64;0;false;false;63;127;95;;;
                                  -53935;3;0;false;false;;;;;;
                                  -53938;51;0;false;false;63;127;95;;;
                                  -53989;3;0;false;false;;;;;;
                                  -53992;24;0;false;false;0;0;0;;;
                                  -54016;4;0;false;false;;;;;;
                                  -54020;1;0;false;false;0;0;0;;;
                                  -54021;3;0;false;false;;;;;;
                                  -54024;1;0;false;false;0;0;0;;;
                                  -54025;3;0;false;false;;;;;;
                                  -54028;1;0;false;false;0;0;0;;;
                                  -54029;4;0;false;false;;;;;;
                                  -54033;3;0;false;false;63;95;191;;;
                                  -54036;3;0;false;false;;;;;;
                                  -54039;1;0;false;false;63;95;191;;;
                                  -54040;1;0;false;false;;;;;;
                                  -54041;10;0;false;false;63;95;191;;;
                                  -54051;1;0;false;false;;;;;;
                                  -54052;1;0;false;false;63;95;191;;;
                                  -54053;1;0;false;false;;;;;;
                                  -54054;3;0;false;false;63;95;191;;;
                                  -54057;1;0;false;false;;;;;;
                                  -54058;8;0;false;false;63;95;191;;;
                                  -54066;1;0;false;false;;;;;;
                                  -54067;2;0;false;false;63;95;191;;;
                                  -54069;1;0;false;false;;;;;;
                                  -54070;4;0;false;false;63;95;191;;;
                                  -54074;1;0;false;false;;;;;;
                                  -54075;5;0;false;false;63;95;191;;;
                                  -54080;1;0;false;false;;;;;;
                                  -54081;5;0;false;false;63;95;191;;;
                                  -54086;1;0;false;false;;;;;;
                                  -54087;3;0;false;false;63;95;191;;;
                                  -54090;1;0;false;false;;;;;;
                                  -54091;6;0;false;false;63;95;191;;;
                                  -54097;3;0;false;false;;;;;;
                                  -54100;1;0;false;false;63;95;191;;;
                                  -54101;1;0;false;false;;;;;;
                                  -54102;3;0;false;false;63;95;191;;;
                                  -54105;1;0;false;false;;;;;;
                                  -54106;1;0;false;false;63;95;191;;;
                                  -54107;1;0;false;false;;;;;;
                                  -54108;5;0;false;false;63;95;191;;;
                                  -54113;1;0;false;false;;;;;;
                                  -54114;5;0;false;false;63;95;191;;;
                                  -54119;1;0;false;false;;;;;;
                                  -54120;10;0;false;false;63;95;191;;;
                                  -54130;1;0;false;false;;;;;;
                                  -54131;3;0;false;false;63;95;191;;;
                                  -54134;1;0;false;false;;;;;;
                                  -54135;8;0;false;false;63;95;191;;;
                                  -54143;1;0;false;false;;;;;;
                                  -54144;3;0;false;false;63;95;191;;;
                                  -54147;1;0;false;false;;;;;;
                                  -54148;11;0;false;false;63;95;191;;;
                                  -54159;3;0;false;false;;;;;;
                                  -54162;1;0;false;false;63;95;191;;;
                                  -54163;1;0;false;false;;;;;;
                                  -54164;3;0;false;false;127;127;159;;;
                                  -54167;3;0;false;false;;;;;;
                                  -54170;1;0;false;false;63;95;191;;;
                                  -54171;1;0;false;false;;;;;;
                                  -54172;3;0;false;false;63;95;191;;;
                                  -54175;1;0;false;false;;;;;;
                                  -54176;5;0;false;false;63;95;191;;;
                                  -54181;1;0;false;false;;;;;;
                                  -54182;5;0;false;false;63;95;191;;;
                                  -54187;1;0;false;false;;;;;;
                                  -54188;2;0;false;false;63;95;191;;;
                                  -54190;1;0;false;false;;;;;;
                                  -54191;6;0;false;false;63;95;191;;;
                                  -54197;1;0;false;false;;;;;;
                                  -54198;3;0;false;false;63;95;191;;;
                                  -54201;1;0;false;false;;;;;;
                                  -54202;2;0;false;false;63;95;191;;;
                                  -54204;1;0;false;false;;;;;;
                                  -54205;3;0;false;false;63;95;191;;;
                                  -54208;1;0;false;false;;;;;;
                                  -54209;5;0;false;false;63;95;191;;;
                                  -54214;1;0;false;false;;;;;;
                                  -54215;9;0;false;false;63;95;191;;;
                                  -54224;1;0;false;false;;;;;;
                                  -54225;7;0;false;false;63;95;191;;;
                                  -54232;1;0;false;false;;;;;;
                                  -54233;2;0;false;false;63;95;191;;;
                                  -54235;3;0;false;false;;;;;;
                                  -54238;1;0;false;false;63;95;191;;;
                                  -54239;1;0;false;false;;;;;;
                                  -54240;5;0;false;false;63;95;191;;;
                                  -54245;1;0;false;false;;;;;;
                                  -54246;6;0;false;false;127;127;159;;;
                                  -54252;3;0;false;false;63;95;191;;;
                                  -54255;7;0;false;false;127;127;159;;;
                                  -54262;1;0;false;false;;;;;;
                                  -54263;5;0;false;false;63;95;191;;;
                                  -54268;1;0;false;false;;;;;;
                                  -54269;2;0;false;false;63;95;191;;;
                                  -54271;1;0;false;false;;;;;;
                                  -54272;10;0;false;false;63;95;191;;;
                                  -54282;1;0;false;false;;;;;;
                                  -54283;2;0;false;false;63;95;191;;;
                                  -54285;1;0;false;false;;;;;;
                                  -54286;9;0;false;false;63;95;191;;;
                                  -54295;1;0;false;false;;;;;;
                                  -54296;2;0;false;false;63;95;191;;;
                                  -54298;1;0;false;false;;;;;;
                                  -54299;4;0;false;false;63;95;191;;;
                                  -54303;3;0;false;false;;;;;;
                                  -54306;1;0;false;false;63;95;191;;;
                                  -54307;1;0;false;false;;;;;;
                                  -54308;6;0;false;false;63;95;191;;;
                                  -54314;1;0;false;false;;;;;;
                                  -54315;2;0;false;false;63;95;191;;;
                                  -54317;1;0;false;false;;;;;;
                                  -54318;4;0;false;false;63;95;191;;;
                                  -54322;1;0;false;false;;;;;;
                                  -54323;2;0;false;false;63;95;191;;;
                                  -54325;1;0;false;false;;;;;;
                                  -54326;5;0;false;false;63;95;191;;;
                                  -54331;1;0;false;false;;;;;;
                                  -54332;2;0;false;false;63;95;191;;;
                                  -54334;1;0;false;false;;;;;;
                                  -54335;4;0;false;false;127;127;159;;;
                                  -54339;7;0;false;false;63;95;191;;;
                                  -54346;1;0;false;false;;;;;;
                                  -54347;2;0;false;false;63;95;191;;;
                                  -54349;5;0;false;false;127;127;159;;;
                                  -54354;4;0;false;false;63;95;191;;;
                                  -54358;1;0;false;false;;;;;;
                                  -54359;8;0;false;false;63;95;191;;;
                                  -54367;4;0;false;false;;;;;;
                                  -54371;1;0;false;false;63;95;191;;;
                                  -54372;1;0;false;false;;;;;;
                                  -54373;5;0;false;false;63;95;191;;;
                                  -54378;1;0;false;false;;;;;;
                                  -54379;3;0;false;false;63;95;191;;;
                                  -54382;1;0;false;false;;;;;;
                                  -54383;5;0;false;false;63;95;191;;;
                                  -54388;1;0;false;false;;;;;;
                                  -54389;3;0;false;false;63;95;191;;;
                                  -54392;1;0;false;false;;;;;;
                                  -54393;6;0;false;false;127;127;159;;;
                                  -54399;3;0;false;false;63;95;191;;;
                                  -54402;7;0;false;false;127;127;159;;;
                                  -54409;1;0;false;false;;;;;;
                                  -54410;3;0;false;false;63;95;191;;;
                                  -54413;1;0;false;false;;;;;;
                                  -54414;9;0;false;false;63;95;191;;;
                                  -54423;1;0;false;false;;;;;;
                                  -54424;3;0;false;false;63;95;191;;;
                                  -54427;1;0;false;false;;;;;;
                                  -54428;2;0;false;false;63;95;191;;;
                                  -54430;1;0;false;false;;;;;;
                                  -54431;4;0;false;false;63;95;191;;;
                                  -54435;3;0;false;false;;;;;;
                                  -54438;1;0;false;false;63;95;191;;;
                                  -54439;1;0;false;false;;;;;;
                                  -54440;2;0;false;false;63;95;191;;;
                                  -54442;1;0;false;false;;;;;;
                                  -54443;5;0;false;false;63;95;191;;;
                                  -54448;1;0;false;false;;;;;;
                                  -54449;6;0;false;false;127;127;159;;;
                                  -54455;3;0;false;false;63;95;191;;;
                                  -54458;7;0;false;false;127;127;159;;;
                                  -54465;1;0;false;false;;;;;;
                                  -54466;5;0;false;false;63;95;191;;;
                                  -54471;1;0;false;false;;;;;;
                                  -54472;10;0;false;false;63;95;191;;;
                                  -54482;1;0;false;false;;;;;;
                                  -54483;3;0;false;false;63;95;191;;;
                                  -54486;1;0;false;false;;;;;;
                                  -54487;5;0;false;false;63;95;191;;;
                                  -54492;1;0;false;false;;;;;;
                                  -54493;11;0;false;false;63;95;191;;;
                                  -54504;3;0;false;false;;;;;;
                                  -54507;1;0;false;false;63;95;191;;;
                                  -54508;1;0;false;false;;;;;;
                                  -54509;5;0;false;false;63;95;191;;;
                                  -54514;1;0;false;false;;;;;;
                                  -54515;3;0;false;false;63;95;191;;;
                                  -54518;1;0;false;false;;;;;;
                                  -54519;5;0;false;false;63;95;191;;;
                                  -54524;1;0;false;false;;;;;;
                                  -54525;9;0;false;false;63;95;191;;;
                                  -54534;1;0;false;false;;;;;;
                                  -54535;4;0;false;false;63;95;191;;;
                                  -54539;1;0;false;false;;;;;;
                                  -54540;3;0;false;false;63;95;191;;;
                                  -54543;1;0;false;false;;;;;;
                                  -54544;10;0;false;false;63;95;191;;;
                                  -54554;1;0;false;false;;;;;;
                                  -54555;2;0;false;false;63;95;191;;;
                                  -54557;1;0;false;false;;;;;;
                                  -54558;3;0;false;false;63;95;191;;;
                                  -54561;1;0;false;false;;;;;;
                                  -54562;6;0;false;false;63;95;191;;;
                                  -54568;3;0;false;false;;;;;;
                                  -54571;1;0;false;false;63;95;191;;;
                                  -54572;1;0;false;false;;;;;;
                                  -54573;5;0;false;false;63;95;191;;;
                                  -54578;1;0;false;false;;;;;;
                                  -54579;4;0;false;false;63;95;191;;;
                                  -54583;1;0;false;false;;;;;;
                                  -54584;3;0;false;false;63;95;191;;;
                                  -54587;1;0;false;false;;;;;;
                                  -54588;4;0;false;false;63;95;191;;;
                                  -54592;1;0;false;false;;;;;;
                                  -54593;9;0;false;false;63;95;191;;;
                                  -54602;1;0;false;false;;;;;;
                                  -54603;4;0;false;false;63;95;191;;;
                                  -54607;1;0;false;false;;;;;;
                                  -54608;13;0;false;false;63;95;191;;;
                                  -54621;3;0;false;false;;;;;;
                                  -54624;1;0;false;false;63;95;191;;;
                                  -54625;1;0;false;false;;;;;;
                                  -54626;4;0;false;false;127;127;159;;;
                                  -54630;3;0;false;false;;;;;;
                                  -54633;1;0;false;false;63;95;191;;;
                                  -54634;3;0;false;false;;;;;;
                                  -54637;1;0;false;false;63;95;191;;;
                                  -54638;1;0;false;false;;;;;;
                                  -54639;7;1;false;false;127;159;191;;;
                                  -54646;6;0;false;false;63;95;191;;;
                                  -54652;1;0;false;false;;;;;;
                                  -54653;1;0;false;false;63;95;191;;;
                                  -54654;1;0;false;false;;;;;;
                                  -54655;6;0;false;false;63;95;191;;;
                                  -54661;1;0;false;false;;;;;;
                                  -54662;5;0;false;false;63;95;191;;;
                                  -54667;1;0;false;false;;;;;;
                                  -54668;4;0;false;false;63;95;191;;;
                                  -54672;1;0;false;false;;;;;;
                                  -54673;2;0;false;false;63;95;191;;;
                                  -54675;1;0;false;false;;;;;;
                                  -54676;3;0;false;false;63;95;191;;;
                                  -54679;1;0;false;false;;;;;;
                                  -54680;6;0;false;false;63;95;191;;;
                                  -54686;1;0;false;false;;;;;;
                                  -54687;2;0;false;false;63;95;191;;;
                                  -54689;1;0;false;false;;;;;;
                                  -54690;3;0;false;false;63;95;191;;;
                                  -54693;1;0;false;false;;;;;;
                                  -54694;3;0;false;false;63;95;191;;;
                                  -54697;1;0;false;false;;;;;;
                                  -54698;8;0;false;false;63;95;191;;;
                                  -54706;1;0;false;false;;;;;;
                                  -54707;7;0;false;false;63;95;191;;;
                                  -54714;1;0;false;false;;;;;;
                                  -54715;2;0;false;false;63;95;191;;;
                                  -54717;1;0;false;false;;;;;;
                                  -54718;5;0;false;false;63;95;191;;;
                                  -54723;3;0;false;false;;;;;;
                                  -54726;1;0;false;false;63;95;191;;;
                                  -54727;1;0;false;false;;;;;;
                                  -54728;7;1;false;false;127;159;191;;;
                                  -54735;5;0;false;false;63;95;191;;;
                                  -54740;1;0;false;false;;;;;;
                                  -54741;3;0;false;false;63;95;191;;;
                                  -54744;1;0;false;false;;;;;;
                                  -54745;5;0;false;false;63;95;191;;;
                                  -54750;1;0;false;false;;;;;;
                                  -54751;2;0;false;false;63;95;191;;;
                                  -54753;1;0;false;false;;;;;;
                                  -54754;6;0;false;false;63;95;191;;;
                                  -54760;1;0;false;false;;;;;;
                                  -54761;2;0;false;false;63;95;191;;;
                                  -54763;1;0;false;false;;;;;;
                                  -54764;9;0;false;false;63;95;191;;;
                                  -54773;3;0;false;false;;;;;;
                                  -54776;1;0;false;false;63;95;191;;;
                                  -54777;3;0;false;false;;;;;;
                                  -54780;1;0;false;false;63;95;191;;;
                                  -54781;1;0;false;false;;;;;;
                                  -54782;11;1;false;false;127;159;191;;;
                                  -54793;24;0;false;false;63;95;191;;;
                                  -54817;1;0;false;false;;;;;;
                                  -54818;4;0;false;false;127;127;159;;;
                                  -54822;3;0;false;false;;;;;;
                                  -54825;1;0;false;false;63;95;191;;;
                                  -54826;4;0;false;false;;;;;;
                                  -54830;4;0;false;false;127;127;159;;;
                                  -54834;19;0;false;false;63;95;191;;;
                                  -54853;1;0;false;false;;;;;;
                                  -54854;1;0;false;false;127;127;159;;;
                                  -54855;1;0;false;false;;;;;;
                                  -54856;2;0;false;false;63;95;191;;;
                                  -54858;1;0;false;false;;;;;;
                                  -54859;3;0;false;false;63;95;191;;;
                                  -54862;1;0;false;false;;;;;;
                                  -54863;6;0;false;false;63;95;191;;;
                                  -54869;1;0;false;false;;;;;;
                                  -54870;2;0;false;false;63;95;191;;;
                                  -54872;1;0;false;false;;;;;;
                                  -54873;4;0;false;false;63;95;191;;;
                                  -54877;5;0;false;false;127;127;159;;;
                                  -54882;3;0;false;false;;;;;;
                                  -54885;1;0;false;false;63;95;191;;;
                                  -54886;1;0;false;false;;;;;;
                                  -54887;5;0;false;false;127;127;159;;;
                                  -54892;3;0;false;false;;;;;;
                                  -54895;1;0;false;false;63;95;191;;;
                                  -54896;1;0;false;false;;;;;;
                                  -54897;11;1;false;false;127;159;191;;;
                                  -54908;12;0;false;false;63;95;191;;;
                                  -54920;1;0;false;false;;;;;;
                                  -54921;4;0;false;false;127;127;159;;;
                                  -54925;3;0;false;false;;;;;;
                                  -54928;1;0;false;false;63;95;191;;;
                                  -54929;4;0;false;false;;;;;;
                                  -54933;4;0;false;false;127;127;159;;;
                                  -54937;27;0;false;false;63;95;191;;;
                                  -54964;1;0;false;false;;;;;;
                                  -54965;1;0;false;false;127;127;159;;;
                                  -54966;1;0;false;false;;;;;;
                                  -54967;2;0;false;false;63;95;191;;;
                                  -54969;1;0;false;false;;;;;;
                                  -54970;3;0;false;false;63;95;191;;;
                                  -54973;1;0;false;false;;;;;;
                                  -54974;6;0;false;false;63;95;191;;;
                                  -54980;1;0;false;false;;;;;;
                                  -54981;4;0;false;false;63;95;191;;;
                                  -54985;1;0;false;false;;;;;;
                                  -54986;3;0;false;false;63;95;191;;;
                                  -54989;1;0;false;false;;;;;;
                                  -54990;6;0;false;false;63;95;191;;;
                                  -54996;1;0;false;false;;;;;;
                                  -54997;4;0;false;false;63;95;191;;;
                                  -55001;1;0;false;false;;;;;;
                                  -55002;7;0;false;false;63;95;191;;;
                                  -55009;1;0;false;false;;;;;;
                                  -55010;3;0;false;false;63;95;191;;;
                                  -55013;1;0;false;false;;;;;;
                                  -55014;6;0;false;false;63;95;191;;;
                                  -55020;5;0;false;false;127;127;159;;;
                                  -55025;3;0;false;false;;;;;;
                                  -55028;1;0;false;false;63;95;191;;;
                                  -55029;1;0;false;false;;;;;;
                                  -55030;5;0;false;false;127;127;159;;;
                                  -55035;3;0;false;false;;;;;;
                                  -55038;1;0;false;false;63;95;191;;;
                                  -55039;3;0;false;false;;;;;;
                                  -55042;1;0;false;false;63;95;191;;;
                                  -55043;1;0;false;false;;;;;;
                                  -55044;5;1;false;false;127;159;191;;;
                                  -55049;18;0;false;false;63;95;191;;;
                                  -55067;3;0;false;false;;;;;;
                                  -55070;1;0;false;false;63;95;191;;;
                                  -55071;1;0;false;false;;;;;;
                                  -55072;5;1;false;false;127;159;191;;;
                                  -55077;9;0;false;false;63;95;191;;;
                                  -55086;3;0;false;false;;;;;;
                                  -55089;1;0;false;false;63;95;191;;;
                                  -55090;1;0;false;false;;;;;;
                                  -55091;5;1;false;false;127;159;191;;;
                                  -55096;13;0;false;false;63;95;191;;;
                                  -55109;3;0;false;false;;;;;;
                                  -55112;1;0;false;false;63;95;191;;;
                                  -55113;1;0;false;false;;;;;;
                                  -55114;5;1;false;false;127;159;191;;;
                                  -55119;10;0;false;false;63;95;191;;;
                                  -55129;3;0;false;false;;;;;;
                                  -55132;1;0;false;false;63;95;191;;;
                                  -55133;1;0;false;false;;;;;;
                                  -55134;5;1;false;false;127;159;191;;;
                                  -55139;8;0;false;false;63;95;191;;;
                                  -55147;3;0;false;false;;;;;;
                                  -55150;1;0;false;false;63;95;191;;;
                                  -55151;1;0;false;false;;;;;;
                                  -55152;5;1;false;false;127;159;191;;;
                                  -55157;9;0;false;false;63;95;191;;;
                                  -55166;3;0;false;false;;;;;;
                                  -55169;2;0;false;false;63;95;191;;;
                                  -55171;2;0;false;false;;;;;;
                                  -55173;6;1;false;false;127;0;85;;;
                                  -55179;1;0;false;false;;;;;;
                                  -55180;20;0;false;false;0;0;0;;;
                                  -55200;1;0;false;false;;;;;;
                                  -55201;7;0;false;false;0;0;0;;;
                                  -55208;1;0;false;false;;;;;;
                                  -55209;3;1;false;false;127;0;85;;;
                                  -55212;1;0;false;false;;;;;;
                                  -55213;6;0;false;false;0;0;0;;;
                                  -55219;1;0;false;false;;;;;;
                                  -55220;1;0;false;false;0;0;0;;;
                                  -55221;3;0;false;false;;;;;;
                                  -55224;5;1;false;false;127;0;85;;;
                                  -55229;8;0;false;false;0;0;0;;;
                                  -55237;1;0;false;false;;;;;;
                                  -55238;16;0;false;false;0;0;0;;;
                                  -55254;1;0;false;false;;;;;;
                                  -55255;1;0;false;false;0;0;0;;;
                                  -55256;1;0;false;false;;;;;;
                                  -55257;20;0;false;false;0;0;0;;;
                                  -55277;1;0;false;false;;;;;;
                                  -55278;1;0;false;false;0;0;0;;;
                                  -55279;1;0;false;false;;;;;;
                                  -55280;20;0;false;false;0;0;0;;;
                                  -55300;3;0;false;false;;;;;;
                                  -55303;87;0;false;false;63;127;95;;;
                                  -55390;1;0;false;false;;;;;;
                                  -55391;85;0;false;false;63;127;95;;;
                                  -55476;1;0;false;false;;;;;;
                                  -55477;5;1;false;false;127;0;85;;;
                                  -55482;32;0;false;false;0;0;0;;;
                                  -55514;3;0;false;false;;;;;;
                                  -55517;5;1;false;false;127;0;85;;;
                                  -55522;32;0;false;false;0;0;0;;;
                                  -55554;3;0;false;false;;;;;;
                                  -55557;7;0;false;false;0;0;0;;;
                                  -55564;1;0;false;false;;;;;;
                                  -55565;7;0;false;false;0;0;0;;;
                                  -55572;1;0;false;false;;;;;;
                                  -55573;1;0;false;false;0;0;0;;;
                                  -55574;1;0;false;false;;;;;;
                                  -55575;13;0;false;false;0;0;0;;;
                                  -55588;3;0;false;false;;;;;;
                                  -55591;10;0;false;false;0;0;0;;;
                                  -55601;1;0;false;false;;;;;;
                                  -55602;1;0;false;false;0;0;0;;;
                                  -55603;1;0;false;false;;;;;;
                                  -55604;1;0;false;false;0;0;0;;;
                                  -55605;5;1;false;false;127;0;85;;;
                                  -55610;11;0;false;false;0;0;0;;;
                                  -55621;1;0;false;false;;;;;;
                                  -55622;1;0;false;false;0;0;0;;;
                                  -55623;1;0;false;false;;;;;;
                                  -55624;13;0;false;false;0;0;0;;;
                                  -55637;1;0;false;false;;;;;;
                                  -55638;2;0;false;false;0;0;0;;;
                                  -55640;1;0;false;false;;;;;;
                                  -55641;2;0;false;false;0;0;0;;;
                                  -55643;3;0;false;false;;;;;;
                                  -55646;2;1;false;false;127;0;85;;;
                                  -55648;1;0;false;false;;;;;;
                                  -55649;7;0;false;false;0;0;0;;;
                                  -55656;1;0;false;false;;;;;;
                                  -55657;1;0;false;false;0;0;0;;;
                                  -55658;1;0;false;false;;;;;;
                                  -55659;14;0;false;false;0;0;0;;;
                                  -55673;1;0;false;false;;;;;;
                                  -55674;2;0;false;false;0;0;0;;;
                                  -55676;1;0;false;false;;;;;;
                                  -55677;2;0;false;false;0;0;0;;;
                                  -55679;1;0;false;false;;;;;;
                                  -55680;1;0;false;false;0;0;0;;;
                                  -55681;4;0;false;false;;;;;;
                                  -55685;12;0;false;false;0;0;0;;;
                                  -55697;5;1;false;false;127;0;85;;;
                                  -55702;2;0;false;false;0;0;0;;;
                                  -55704;3;0;false;false;;;;;;
                                  -55707;1;0;false;false;0;0;0;;;
                                  -55708;3;0;false;false;;;;;;
                                  -55711;10;0;false;false;0;0;0;;;
                                  -55721;1;0;false;false;;;;;;
                                  -55722;1;0;false;false;0;0;0;;;
                                  -55723;1;0;false;false;;;;;;
                                  -55724;11;0;false;false;0;0;0;;;
                                  -55735;1;0;false;false;;;;;;
                                  -55736;1;0;false;false;0;0;0;;;
                                  -55737;1;0;false;false;;;;;;
                                  -55738;13;0;false;false;0;0;0;;;
                                  -55751;1;0;false;false;;;;;;
                                  -55752;1;0;false;false;0;0;0;;;
                                  -55753;1;0;false;false;;;;;;
                                  -55754;16;0;false;false;0;0;0;;;
                                  -55770;1;0;false;false;;;;;;
                                  -55771;1;0;false;false;0;0;0;;;
                                  -55772;1;0;false;false;;;;;;
                                  -55773;2;0;false;false;0;0;0;;;
                                  -55775;1;0;false;false;;;;;;
                                  -55776;2;0;false;false;0;0;0;;;
                                  -55778;3;0;false;false;;;;;;
                                  -55781;2;1;false;false;127;0;85;;;
                                  -55783;1;0;false;false;;;;;;
                                  -55784;7;0;false;false;0;0;0;;;
                                  -55791;1;0;false;false;;;;;;
                                  -55792;1;0;false;false;0;0;0;;;
                                  -55793;1;0;false;false;;;;;;
                                  -55794;11;0;false;false;0;0;0;;;
                                  -55805;1;0;false;false;;;;;;
                                  -55806;2;0;false;false;0;0;0;;;
                                  -55808;1;0;false;false;;;;;;
                                  -55809;1;0;false;false;0;0;0;;;
                                  -55810;1;0;false;false;;;;;;
                                  -55811;2;0;false;false;0;0;0;;;
                                  -55813;1;0;false;false;;;;;;
                                  -55814;6;0;false;false;0;0;0;;;
                                  -55820;1;0;false;false;;;;;;
                                  -55821;1;0;false;false;0;0;0;;;
                                  -55822;1;0;false;false;;;;;;
                                  -55823;11;0;false;false;0;0;0;;;
                                  -55834;1;0;false;false;;;;;;
                                  -55835;2;0;false;false;0;0;0;;;
                                  -55837;1;0;false;false;;;;;;
                                  -55838;2;0;false;false;0;0;0;;;
                                  -55840;1;0;false;false;;;;;;
                                  -55841;1;0;false;false;0;0;0;;;
                                  -55842;4;0;false;false;;;;;;
                                  -55846;10;0;false;false;0;0;0;;;
                                  -55856;1;0;false;false;;;;;;
                                  -55857;1;0;false;false;0;0;0;;;
                                  -55858;1;0;false;false;;;;;;
                                  -55859;9;0;false;false;0;0;0;;;
                                  -55868;1;0;false;false;;;;;;
                                  -55869;1;0;false;false;0;0;0;;;
                                  -55870;1;0;false;false;;;;;;
                                  -55871;11;0;false;false;0;0;0;;;
                                  -55882;1;0;false;false;;;;;;
                                  -55883;1;0;false;false;0;0;0;;;
                                  -55884;1;0;false;false;;;;;;
                                  -55885;12;0;false;false;0;0;0;;;
                                  -55897;1;0;false;false;;;;;;
                                  -55898;1;0;false;false;0;0;0;;;
                                  -55899;1;0;false;false;;;;;;
                                  -55900;2;0;false;false;0;0;0;;;
                                  -55902;3;0;false;false;;;;;;
                                  -55905;1;0;false;false;0;0;0;;;
                                  -55906;3;0;false;false;;;;;;
                                  -55909;9;0;false;false;0;0;0;;;
                                  -55918;1;0;false;false;;;;;;
                                  -55919;1;0;false;false;0;0;0;;;
                                  -55920;1;0;false;false;;;;;;
                                  -55921;3;1;false;false;127;0;85;;;
                                  -55924;1;0;false;false;;;;;;
                                  -55925;19;0;false;false;0;0;0;;;
                                  -55944;3;0;false;false;;;;;;
                                  -55947;24;0;false;false;0;0;0;;;
                                  -55971;3;0;false;false;;;;;;
                                  -55974;21;0;false;false;0;0;0;;;
                                  -55995;3;0;false;false;;;;;;
                                  -55998;2;1;false;false;127;0;85;;;
                                  -56000;1;0;false;false;;;;;;
                                  -56001;7;0;false;false;0;0;0;;;
                                  -56008;1;0;false;false;;;;;;
                                  -56009;1;0;false;false;0;0;0;;;
                                  -56010;1;0;false;false;;;;;;
                                  -56011;9;0;false;false;0;0;0;;;
                                  -56020;1;0;false;false;;;;;;
                                  -56021;2;0;false;false;0;0;0;;;
                                  -56023;1;0;false;false;;;;;;
                                  -56024;2;0;false;false;0;0;0;;;
                                  -56026;1;0;false;false;;;;;;
                                  -56027;1;0;false;false;0;0;0;;;
                                  -56028;4;0;false;false;;;;;;
                                  -56032;12;0;false;false;0;0;0;;;
                                  -56044;4;1;false;false;127;0;85;;;
                                  -56048;2;0;false;false;0;0;0;;;
                                  -56050;3;0;false;false;;;;;;
                                  -56053;1;0;false;false;0;0;0;;;
                                  -56054;3;0;false;false;;;;;;
                                  -56057;4;1;false;false;127;0;85;;;
                                  -56061;1;0;false;false;;;;;;
                                  -56062;1;0;false;false;0;0;0;;;
                                  -56063;4;0;false;false;;;;;;
                                  -56067;9;0;false;false;0;0;0;;;
                                  -56076;1;0;false;false;;;;;;
                                  -56077;1;0;false;false;0;0;0;;;
                                  -56078;1;0;false;false;;;;;;
                                  -56079;3;1;false;false;127;0;85;;;
                                  -56082;1;0;false;false;;;;;;
                                  -56083;18;0;false;false;0;0;0;;;
                                  -56101;4;1;false;false;127;0;85;;;
                                  -56105;1;0;false;false;0;0;0;;;
                                  -56106;1;0;false;false;;;;;;
                                  -56107;9;0;false;false;0;0;0;;;
                                  -56116;3;0;false;false;;;;;;
                                  -56119;1;0;false;false;0;0;0;;;
                                  -56120;4;0;false;false;;;;;;
                                  -56124;12;0;false;false;0;0;0;;;
                                  -56136;1;0;false;false;;;;;;
                                  -56137;1;0;false;false;0;0;0;;;
                                  -56138;1;0;false;false;;;;;;
                                  -56139;3;1;false;false;127;0;85;;;
                                  -56142;1;0;false;false;;;;;;
                                  -56143;6;0;false;false;0;0;0;;;
                                  -56149;4;1;false;false;127;0;85;;;
                                  -56153;1;0;false;false;0;0;0;;;
                                  -56154;1;0;false;false;;;;;;
                                  -56155;10;0;false;false;0;0;0;;;
                                  -56165;3;0;false;false;;;;;;
                                  -56168;2;1;false;false;127;0;85;;;
                                  -56170;1;0;false;false;;;;;;
                                  -56171;15;0;false;false;0;0;0;;;
                                  -56186;1;0;false;false;;;;;;
                                  -56187;1;0;false;false;0;0;0;;;
                                  -56188;4;0;false;false;;;;;;
                                  -56192;21;0;false;false;0;0;0;;;
                                  -56213;4;0;false;false;;;;;;
                                  -56217;8;0;false;false;0;0;0;;;
                                  -56225;1;0;false;false;;;;;;
                                  -56226;8;0;false;false;0;0;0;;;
                                  -56234;1;0;false;false;;;;;;
                                  -56235;1;0;false;false;0;0;0;;;
                                  -56236;1;0;false;false;;;;;;
                                  -56237;3;1;false;false;127;0;85;;;
                                  -56240;1;0;false;false;;;;;;
                                  -56241;10;0;false;false;0;0;0;;;
                                  -56251;1;0;false;false;;;;;;
                                  -56252;1;0;false;false;0;0;0;;;
                                  -56253;5;0;false;false;;;;;;
                                  -56258;6;1;false;false;127;0;85;;;
                                  -56264;1;0;false;false;;;;;;
                                  -56265;4;1;false;false;127;0;85;;;
                                  -56269;1;0;false;false;;;;;;
                                  -56270;5;0;false;false;0;0;0;;;
                                  -56275;1;0;false;false;;;;;;
                                  -56276;1;0;false;false;0;0;0;;;
                                  -56277;6;0;false;false;;;;;;
                                  -56283;3;1;false;false;127;0;85;;;
                                  -56286;1;0;false;false;;;;;;
                                  -56287;9;0;false;false;0;0;0;;;
                                  -56296;1;0;false;false;;;;;;
                                  -56297;1;0;false;false;0;0;0;;;
                                  -56298;1;0;false;false;;;;;;
                                  -56299;30;0;false;false;0;0;0;;;
                                  -56329;1;0;false;false;;;;;;
                                  -56330;2;0;false;false;0;0;0;;;
                                  -56332;1;0;false;false;;;;;;
                                  -56333;22;0;false;false;0;0;0;;;
                                  -56355;1;0;false;false;;;;;;
                                  -56356;1;0;false;false;0;0;0;;;
                                  -56357;1;0;false;false;;;;;;
                                  -56358;9;0;false;false;0;0;0;;;
                                  -56367;1;0;false;false;;;;;;
                                  -56368;1;0;false;false;0;0;0;;;
                                  -56369;1;0;false;false;;;;;;
                                  -56370;9;0;false;false;0;0;0;;;
                                  -56379;6;0;false;false;;;;;;
                                  -56385;2;1;false;false;127;0;85;;;
                                  -56387;1;0;false;false;;;;;;
                                  -56388;10;0;false;false;0;0;0;;;
                                  -56398;1;0;false;false;;;;;;
                                  -56399;2;0;false;false;0;0;0;;;
                                  -56401;1;0;false;false;;;;;;
                                  -56402;15;0;false;false;0;0;0;;;
                                  -56417;1;0;false;false;;;;;;
                                  -56418;6;1;false;false;127;0;85;;;
                                  -56424;1;0;false;false;0;0;0;;;
                                  -56425;6;0;false;false;;;;;;
                                  -56431;2;1;false;false;127;0;85;;;
                                  -56433;1;0;false;false;;;;;;
                                  -56434;11;0;false;false;0;0;0;;;
                                  -56445;1;0;false;false;;;;;;
                                  -56446;2;0;false;false;0;0;0;;;
                                  -56448;1;0;false;false;;;;;;
                                  -56449;13;0;false;false;0;0;0;;;
                                  -56462;1;0;false;false;;;;;;
                                  -56463;6;1;false;false;127;0;85;;;
                                  -56469;1;0;false;false;0;0;0;;;
                                  -56470;6;0;false;false;;;;;;
                                  -56476;3;1;false;false;127;0;85;;;
                                  -56479;1;0;false;false;;;;;;
                                  -56480;9;0;false;false;0;0;0;;;
                                  -56489;1;0;false;false;;;;;;
                                  -56490;1;0;false;false;0;0;0;;;
                                  -56491;1;0;false;false;;;;;;
                                  -56492;15;0;false;false;0;0;0;;;
                                  -56507;6;0;false;false;;;;;;
                                  -56513;6;0;false;false;0;0;0;;;
                                  -56519;1;0;false;false;;;;;;
                                  -56520;4;0;false;false;0;0;0;;;
                                  -56524;1;0;false;false;;;;;;
                                  -56525;1;0;false;false;0;0;0;;;
                                  -56526;1;0;false;false;;;;;;
                                  -56527;27;0;false;false;0;0;0;;;
                                  -56554;6;0;false;false;;;;;;
                                  -56560;3;1;false;false;127;0;85;;;
                                  -56563;1;0;false;false;;;;;;
                                  -56564;10;0;false;false;0;0;0;;;
                                  -56574;1;0;false;false;;;;;;
                                  -56575;1;0;false;false;0;0;0;;;
                                  -56576;1;0;false;false;;;;;;
                                  -56577;35;0;false;false;0;0;0;;;
                                  -56612;6;0;false;false;;;;;;
                                  -56618;3;1;false;false;127;0;85;;;
                                  -56621;1;0;false;false;;;;;;
                                  -56622;12;0;false;false;0;0;0;;;
                                  -56634;1;0;false;false;;;;;;
                                  -56635;1;0;false;false;0;0;0;;;
                                  -56636;1;0;false;false;;;;;;
                                  -56637;11;0;false;false;0;0;0;;;
                                  -56648;1;0;false;false;;;;;;
                                  -56649;1;0;false;false;0;0;0;;;
                                  -56650;1;0;false;false;;;;;;
                                  -56651;11;0;false;false;0;0;0;;;
                                  -56662;6;0;false;false;;;;;;
                                  -56668;3;1;false;false;127;0;85;;;
                                  -56671;1;0;false;false;;;;;;
                                  -56672;9;0;false;false;0;0;0;;;
                                  -56681;1;0;false;false;;;;;;
                                  -56682;1;0;false;false;0;0;0;;;
                                  -56683;1;0;false;false;;;;;;
                                  -56684;18;0;false;false;0;0;0;;;
                                  -56702;1;0;false;false;;;;;;
                                  -56703;10;0;false;false;0;0;0;;;
                                  -56713;1;0;false;false;;;;;;
                                  -56714;14;0;false;false;0;0;0;;;
                                  -56728;6;0;false;false;;;;;;
                                  -56734;27;0;false;false;0;0;0;;;
                                  -56761;1;0;false;false;;;;;;
                                  -56762;15;0;false;false;0;0;0;;;
                                  -56777;1;0;false;false;;;;;;
                                  -56778;11;0;false;false;0;0;0;;;
                                  -56789;5;0;false;false;;;;;;
                                  -56794;1;0;false;false;0;0;0;;;
                                  -56795;4;0;false;false;;;;;;
                                  -56799;2;0;false;false;0;0;0;;;
                                  -56801;4;0;false;false;;;;;;
                                  -56805;36;0;false;false;0;0;0;;;
                                  -56841;1;0;false;false;;;;;;
                                  -56842;10;0;false;false;0;0;0;;;
                                  -56852;3;0;false;false;;;;;;
                                  -56855;1;0;false;false;0;0;0;;;
                                  -56856;3;0;false;false;;;;;;
                                  -56859;23;0;false;false;0;0;0;;;
                                  -56882;4;0;false;false;;;;;;
                                  -56886;22;0;false;false;0;0;0;;;
                                  -56908;3;0;false;false;;;;;;
                                  -56911;20;0;false;false;0;0;0;;;
                                  -56931;3;0;false;false;;;;;;
                                  -56934;11;0;false;false;0;0;0;;;
                                  -56945;1;0;false;false;;;;;;
                                  -56946;1;0;false;false;0;0;0;;;
                                  -56947;1;0;false;false;;;;;;
                                  -56948;3;1;false;false;127;0;85;;;
                                  -56951;1;0;false;false;;;;;;
                                  -56952;15;0;false;false;0;0;0;;;
                                  -56967;1;0;false;false;;;;;;
                                  -56968;18;0;false;false;0;0;0;;;
                                  -56986;3;0;false;false;;;;;;
                                  -56989;23;0;false;false;0;0;0;;;
                                  -57012;3;0;false;false;;;;;;
                                  -57015;19;0;false;false;0;0;0;;;
                                  -57034;3;0;false;false;;;;;;
                                  -57037;27;0;false;false;0;0;0;;;
                                  -57064;3;0;false;false;;;;;;
                                  -57067;23;0;false;false;0;0;0;;;
                                  -57090;2;0;false;false;;;;;;
                                  -57092;1;0;false;false;0;0;0;;;
                                  -57093;2;0;false;false;;;;;;
                                  -57095;3;0;false;false;63;95;191;;;
                                  -57098;5;0;false;false;;;;;;
                                  -57103;1;0;false;false;63;95;191;;;
                                  -57104;1;0;false;false;;;;;;
                                  -57105;4;0;false;false;63;95;191;;;
                                  -57109;1;0;false;false;;;;;;
                                  -57110;2;0;false;false;63;95;191;;;
                                  -57112;1;0;false;false;;;;;;
                                  -57113;8;0;false;false;63;95;191;;;
                                  -57121;1;0;false;false;;;;;;
                                  -57122;6;0;false;false;63;95;191;;;
                                  -57128;1;0;false;false;;;;;;
                                  -57129;9;0;false;false;63;95;191;;;
                                  -57138;1;0;false;false;;;;;;
                                  -57139;2;0;false;false;63;95;191;;;
                                  -57141;1;0;false;false;;;;;;
                                  -57142;14;0;false;false;63;95;191;;;
                                  -57156;1;0;false;false;;;;;;
                                  -57157;5;0;false;false;63;95;191;;;
                                  -57162;1;0;false;false;;;;;;
                                  -57163;2;0;false;false;63;95;191;;;
                                  -57165;1;0;false;false;;;;;;
                                  -57166;4;0;false;false;63;95;191;;;
                                  -57170;1;0;false;false;;;;;;
                                  -57171;2;0;false;false;63;95;191;;;
                                  -57173;1;0;false;false;;;;;;
                                  -57174;3;0;false;false;63;95;191;;;
                                  -57177;4;0;false;false;;;;;;
                                  -57181;1;0;false;false;63;95;191;;;
                                  -57182;1;0;false;false;;;;;;
                                  -57183;6;0;false;false;63;95;191;;;
                                  -57189;1;0;false;false;;;;;;
                                  -57190;4;0;false;false;63;95;191;;;
                                  -57194;1;0;false;false;;;;;;
                                  -57195;3;0;false;false;63;95;191;;;
                                  -57198;1;0;false;false;;;;;;
                                  -57199;6;0;false;false;63;95;191;;;
                                  -57205;1;0;false;false;;;;;;
                                  -57206;4;0;false;false;63;95;191;;;
                                  -57210;1;0;false;false;;;;;;
                                  -57211;3;0;false;false;63;95;191;;;
                                  -57214;1;0;false;false;;;;;;
                                  -57215;8;0;false;false;63;95;191;;;
                                  -57223;3;0;false;false;;;;;;
                                  -57226;1;0;false;false;63;95;191;;;
                                  -57227;1;0;false;false;;;;;;
                                  -57228;3;0;false;false;127;127;159;;;
                                  -57231;3;0;false;false;;;;;;
                                  -57234;1;0;false;false;63;95;191;;;
                                  -57235;3;0;false;false;;;;;;
                                  -57238;1;0;false;false;63;95;191;;;
                                  -57239;1;0;false;false;;;;;;
                                  -57240;7;1;false;false;127;159;191;;;
                                  -57247;22;0;false;false;63;95;191;;;
                                  -57269;1;0;false;false;;;;;;
                                  -57270;3;0;false;false;63;95;191;;;
                                  -57273;1;0;false;false;;;;;;
                                  -57274;8;0;false;false;63;95;191;;;
                                  -57282;3;0;false;false;;;;;;
                                  -57285;1;0;false;false;63;95;191;;;
                                  -57286;1;0;false;false;;;;;;
                                  -57287;11;1;false;false;127;159;191;;;
                                  -57298;12;0;false;false;63;95;191;;;
                                  -57310;1;0;false;false;;;;;;
                                  -57311;4;0;false;false;127;127;159;;;
                                  -57315;3;0;false;false;;;;;;
                                  -57318;1;0;false;false;63;95;191;;;
                                  -57319;4;0;false;false;;;;;;
                                  -57323;4;0;false;false;127;127;159;;;
                                  -57327;21;0;false;false;63;95;191;;;
                                  -57348;1;0;false;false;;;;;;
                                  -57349;1;0;false;false;127;127;159;;;
                                  -57350;1;0;false;false;;;;;;
                                  -57351;2;0;false;false;63;95;191;;;
                                  -57353;1;0;false;false;;;;;;
                                  -57354;3;0;false;false;63;95;191;;;
                                  -57357;1;0;false;false;;;;;;
                                  -57358;8;0;false;false;63;95;191;;;
                                  -57366;1;0;false;false;;;;;;
                                  -57367;3;0;false;false;63;95;191;;;
                                  -57370;1;0;false;false;;;;;;
                                  -57371;4;0;false;false;63;95;191;;;
                                  -57375;1;0;false;false;;;;;;
                                  -57376;8;0;false;false;63;95;191;;;
                                  -57384;5;0;false;false;127;127;159;;;
                                  -57389;3;0;false;false;;;;;;
                                  -57392;1;0;false;false;63;95;191;;;
                                  -57393;4;0;false;false;;;;;;
                                  -57397;4;0;false;false;127;127;159;;;
                                  -57401;27;0;false;false;63;95;191;;;
                                  -57428;1;0;false;false;;;;;;
                                  -57429;1;0;false;false;127;127;159;;;
                                  -57430;1;0;false;false;;;;;;
                                  -57431;2;0;false;false;63;95;191;;;
                                  -57433;1;0;false;false;;;;;;
                                  -57434;3;0;false;false;63;95;191;;;
                                  -57437;1;0;false;false;;;;;;
                                  -57438;6;0;false;false;63;95;191;;;
                                  -57444;1;0;false;false;;;;;;
                                  -57445;4;0;false;false;63;95;191;;;
                                  -57449;1;0;false;false;;;;;;
                                  -57450;3;0;false;false;63;95;191;;;
                                  -57453;1;0;false;false;;;;;;
                                  -57454;6;0;false;false;63;95;191;;;
                                  -57460;1;0;false;false;;;;;;
                                  -57461;4;0;false;false;63;95;191;;;
                                  -57465;1;0;false;false;;;;;;
                                  -57466;7;0;false;false;63;95;191;;;
                                  -57473;1;0;false;false;;;;;;
                                  -57474;3;0;false;false;63;95;191;;;
                                  -57477;1;0;false;false;;;;;;
                                  -57478;8;0;false;false;63;95;191;;;
                                  -57486;5;0;false;false;127;127;159;;;
                                  -57491;3;0;false;false;;;;;;
                                  -57494;1;0;false;false;63;95;191;;;
                                  -57495;1;0;false;false;;;;;;
                                  -57496;5;0;false;false;127;127;159;;;
                                  -57501;3;0;false;false;;;;;;
                                  -57504;1;0;false;false;63;95;191;;;
                                  -57505;1;0;false;false;;;;;;
                                  -57506;11;1;false;false;127;159;191;;;
                                  -57517;24;0;false;false;63;95;191;;;
                                  -57541;1;0;false;false;;;;;;
                                  -57542;4;0;false;false;127;127;159;;;
                                  -57546;3;0;false;false;;;;;;
                                  -57549;1;0;false;false;63;95;191;;;
                                  -57550;4;0;false;false;;;;;;
                                  -57554;4;0;false;false;127;127;159;;;
                                  -57558;19;0;false;false;63;95;191;;;
                                  -57577;1;0;false;false;;;;;;
                                  -57578;4;0;false;false;63;95;191;;;
                                  -57582;1;0;false;false;;;;;;
                                  -57583;8;0;false;false;63;95;191;;;
                                  -57591;1;0;false;false;;;;;;
                                  -57592;2;0;false;false;63;95;191;;;
                                  -57594;1;0;false;false;;;;;;
                                  -57595;4;0;false;false;63;95;191;;;
                                  -57599;5;0;false;false;127;127;159;;;
                                  -57604;3;0;false;false;;;;;;
                                  -57607;1;0;false;false;63;95;191;;;
                                  -57608;1;0;false;false;;;;;;
                                  -57609;5;0;false;false;127;127;159;;;
                                  -57614;3;0;false;false;;;;;;
                                  -57617;2;0;false;false;63;95;191;;;
                                  -57619;2;0;false;false;;;;;;
                                  -57621;6;1;false;false;127;0;85;;;
                                  -57627;1;0;false;false;;;;;;
                                  -57628;4;1;false;false;127;0;85;;;
                                  -57632;1;0;false;false;;;;;;
                                  -57633;48;0;false;false;0;0;0;;;
                                  -57681;1;0;false;false;;;;;;
                                  -57682;23;0;false;false;0;0;0;;;
                                  -57705;1;0;false;false;;;;;;
                                  -57706;1;0;false;false;0;0;0;;;
                                  -57707;3;0;false;false;;;;;;
                                  -57710;14;0;false;false;0;0;0;;;
                                  -57724;3;0;false;false;;;;;;
                                  -57727;2;1;false;false;127;0;85;;;
                                  -57729;1;0;false;false;;;;;;
                                  -57730;23;0;false;false;0;0;0;;;
                                  -57753;1;0;false;false;;;;;;
                                  -57754;2;0;false;false;0;0;0;;;
                                  -57756;1;0;false;false;;;;;;
                                  -57757;4;1;false;false;127;0;85;;;
                                  -57761;1;0;false;false;0;0;0;;;
                                  -57762;1;0;false;false;;;;;;
                                  -57763;35;0;false;false;0;0;0;;;
                                  -57798;3;0;false;false;;;;;;
                                  -57801;18;0;false;false;0;0;0;;;
                                  -57819;1;0;false;false;;;;;;
                                  -57820;13;0;false;false;0;0;0;;;
                                  -57833;1;0;false;false;;;;;;
                                  -57834;1;0;false;false;0;0;0;;;
                                  -57835;1;0;false;false;;;;;;
                                  -57836;3;1;false;false;127;0;85;;;
                                  -57839;1;0;false;false;;;;;;
                                  -57840;43;0;false;false;0;0;0;;;
                                  -57883;3;0;false;false;;;;;;
                                  -57886;27;0;false;false;0;0;0;;;
                                  -57913;1;0;false;false;;;;;;
                                  -57914;15;0;false;false;0;0;0;;;
                                  -57929;2;0;false;false;;;;;;
                                  -57931;1;0;false;false;0;0;0;;;
                                  -57932;2;0;false;false;;;;;;
                                  -57934;3;0;false;false;63;95;191;;;
                                  -57937;4;0;false;false;;;;;;
                                  -57941;1;0;false;false;63;95;191;;;
                                  -57942;1;0;false;false;;;;;;
                                  -57943;4;0;false;false;63;95;191;;;
                                  -57947;1;0;false;false;;;;;;
                                  -57948;1;0;false;false;63;95;191;;;
                                  -57949;1;0;false;false;;;;;;
                                  -57950;3;0;false;false;63;95;191;;;
                                  -57953;1;0;false;false;;;;;;
                                  -57954;2;0;false;false;63;95;191;;;
                                  -57956;1;0;false;false;;;;;;
                                  -57957;2;0;false;false;63;95;191;;;
                                  -57959;1;0;false;false;;;;;;
                                  -57960;7;0;false;false;63;95;191;;;
                                  -57967;3;0;false;false;;;;;;
                                  -57970;1;0;false;false;63;95;191;;;
                                  -57971;1;0;false;false;;;;;;
                                  -57972;3;0;false;false;63;95;191;;;
                                  -57975;1;0;false;false;;;;;;
                                  -57976;6;0;false;false;63;95;191;;;
                                  -57982;1;0;false;false;;;;;;
                                  -57983;3;0;false;false;63;95;191;;;
                                  -57986;1;0;false;false;;;;;;
                                  -57987;2;0;false;false;63;95;191;;;
                                  -57989;1;0;false;false;;;;;;
                                  -57990;10;0;false;false;63;95;191;;;
                                  -58000;1;0;false;false;;;;;;
                                  -58001;4;0;false;false;63;95;191;;;
                                  -58005;1;0;false;false;;;;;;
                                  -58006;1;0;false;false;63;95;191;;;
                                  -58007;1;0;false;false;;;;;;
                                  -58008;5;0;false;false;63;95;191;;;
                                  -58013;1;0;false;false;;;;;;
                                  -58014;8;0;false;false;63;95;191;;;
                                  -58022;1;0;false;false;;;;;;
                                  -58023;4;0;false;false;63;95;191;;;
                                  -58027;1;0;false;false;;;;;;
                                  -58028;3;0;false;false;63;95;191;;;
                                  -58031;1;0;false;false;;;;;;
                                  -58032;3;0;false;false;63;95;191;;;
                                  -58035;1;0;false;false;;;;;;
                                  -58036;4;0;false;false;63;95;191;;;
                                  -58040;4;0;false;false;;;;;;
                                  -58044;1;0;false;false;63;95;191;;;
                                  -58045;1;0;false;false;;;;;;
                                  -58046;4;0;false;false;63;95;191;;;
                                  -58050;1;0;false;false;;;;;;
                                  -58051;3;0;false;false;63;95;191;;;
                                  -58054;1;0;false;false;;;;;;
                                  -58055;6;0;false;false;63;95;191;;;
                                  -58061;1;0;false;false;;;;;;
                                  -58062;11;0;false;false;63;95;191;;;
                                  -58073;1;0;false;false;;;;;;
                                  -58074;2;0;false;false;63;95;191;;;
                                  -58076;1;0;false;false;;;;;;
                                  -58077;3;0;false;false;63;95;191;;;
                                  -58080;1;0;false;false;;;;;;
                                  -58081;10;0;false;false;63;95;191;;;
                                  -58091;3;0;false;false;;;;;;
                                  -58094;1;0;false;false;63;95;191;;;
                                  -58095;1;0;false;false;;;;;;
                                  -58096;3;0;false;false;127;127;159;;;
                                  -58099;3;0;false;false;;;;;;
                                  -58102;1;0;false;false;63;95;191;;;
                                  -58103;3;0;false;false;;;;;;
                                  -58106;1;0;false;false;63;95;191;;;
                                  -58107;1;0;false;false;;;;;;
                                  -58108;7;1;false;false;127;159;191;;;
                                  -58115;3;0;false;false;63;95;191;;;
                                  -58118;1;0;false;false;;;;;;
                                  -58119;1;0;false;false;63;95;191;;;
                                  -58120;1;0;false;false;;;;;;
                                  -58121;3;0;false;false;63;95;191;;;
                                  -58124;1;0;false;false;;;;;;
                                  -58125;4;0;false;false;63;95;191;;;
                                  -58129;1;0;false;false;;;;;;
                                  -58130;7;0;false;false;63;95;191;;;
                                  -58137;1;0;false;false;;;;;;
                                  -58138;2;0;false;false;63;95;191;;;
                                  -58140;1;0;false;false;;;;;;
                                  -58141;8;0;false;false;63;95;191;;;
                                  -58149;1;0;false;false;;;;;;
                                  -58150;2;0;false;false;63;95;191;;;
                                  -58152;1;0;false;false;;;;;;
                                  -58153;1;0;false;false;63;95;191;;;
                                  -58154;1;0;false;false;;;;;;
                                  -58155;10;0;false;false;63;95;191;;;
                                  -58165;4;0;false;false;;;;;;
                                  -58169;1;0;false;false;63;95;191;;;
                                  -58170;2;0;false;false;;;;;;
                                  -58172;10;0;false;false;63;95;191;;;
                                  -58182;1;0;false;false;;;;;;
                                  -58183;3;0;false;false;63;95;191;;;
                                  -58186;1;0;false;false;;;;;;
                                  -58187;4;0;false;false;63;95;191;;;
                                  -58191;1;0;false;false;;;;;;
                                  -58192;1;0;false;false;63;95;191;;;
                                  -58193;1;0;false;false;;;;;;
                                  -58194;5;0;false;false;63;95;191;;;
                                  -58199;1;0;false;false;;;;;;
                                  -58200;5;0;false;false;63;95;191;;;
                                  -58205;2;0;false;false;;;;;;
                                  -58207;9;0;false;false;63;95;191;;;
                                  -58216;1;0;false;false;;;;;;
                                  -58217;5;0;false;false;63;95;191;;;
                                  -58222;1;0;false;false;;;;;;
                                  -58223;5;0;false;false;63;95;191;;;
                                  -58228;1;0;false;false;;;;;;
                                  -58229;3;0;false;false;63;95;191;;;
                                  -58232;1;0;false;false;;;;;;
                                  -58233;3;0;false;false;63;95;191;;;
                                  -58236;1;0;false;false;;;;;;
                                  -58237;2;0;false;false;63;95;191;;;
                                  -58239;1;0;false;false;;;;;;
                                  -58240;4;0;false;false;63;95;191;;;
                                  -58244;1;0;false;false;;;;;;
                                  -58245;2;0;false;false;63;95;191;;;
                                  -58247;3;0;false;false;;;;;;
                                  -58250;1;0;false;false;63;95;191;;;
                                  -58251;2;0;false;false;;;;;;
                                  -58253;9;0;false;false;63;95;191;;;
                                  -58262;1;0;false;false;;;;;;
                                  -58263;9;0;false;false;63;95;191;;;
                                  -58272;1;0;false;false;;;;;;
                                  -58273;9;0;false;false;63;95;191;;;
                                  -58282;1;0;false;false;;;;;;
                                  -58283;5;0;false;false;63;95;191;;;
                                  -58288;1;0;false;false;;;;;;
                                  -58289;5;0;false;false;63;95;191;;;
                                  -58294;1;0;false;false;;;;;;
                                  -58295;5;0;false;false;63;95;191;;;
                                  -58300;1;0;false;false;;;;;;
                                  -58301;7;0;false;false;63;95;191;;;
                                  -58308;1;0;false;false;;;;;;
                                  -58309;3;0;false;false;63;95;191;;;
                                  -58312;1;0;false;false;;;;;;
                                  -58313;8;0;false;false;63;95;191;;;
                                  -58321;1;0;false;false;;;;;;
                                  -58322;8;0;false;false;63;95;191;;;
                                  -58330;4;0;false;false;;;;;;
                                  -58334;1;0;false;false;63;95;191;;;
                                  -58335;2;0;false;false;;;;;;
                                  -58337;12;0;false;false;63;95;191;;;
                                  -58349;2;0;false;false;;;;;;
                                  -58351;8;0;false;false;63;95;191;;;
                                  -58359;1;0;false;false;;;;;;
                                  -58360;5;0;false;false;63;95;191;;;
                                  -58365;1;0;false;false;;;;;;
                                  -58366;3;0;false;false;63;95;191;;;
                                  -58369;1;0;false;false;;;;;;
                                  -58370;2;0;false;false;63;95;191;;;
                                  -58372;1;0;false;false;;;;;;
                                  -58373;5;0;false;false;63;95;191;;;
                                  -58378;1;0;false;false;;;;;;
                                  -58379;5;0;false;false;63;95;191;;;
                                  -58384;1;0;false;false;;;;;;
                                  -58385;5;0;false;false;63;95;191;;;
                                  -58390;1;0;false;false;;;;;;
                                  -58391;3;0;false;false;63;95;191;;;
                                  -58394;1;0;false;false;;;;;;
                                  -58395;8;0;false;false;63;95;191;;;
                                  -58403;1;0;false;false;;;;;;
                                  -58404;5;0;false;false;63;95;191;;;
                                  -58409;1;0;false;false;;;;;;
                                  -58410;5;0;false;false;63;95;191;;;
                                  -58415;3;0;false;false;;;;;;
                                  -58418;1;0;false;false;63;95;191;;;
                                  -58419;2;0;false;false;;;;;;
                                  -58421;6;0;false;false;63;95;191;;;
                                  -58427;1;0;false;false;;;;;;
                                  -58428;9;0;false;false;63;95;191;;;
                                  -58437;1;0;false;false;;;;;;
                                  -58438;10;0;false;false;63;95;191;;;
                                  -58448;1;0;false;false;;;;;;
                                  -58449;8;0;false;false;63;95;191;;;
                                  -58457;1;0;false;false;;;;;;
                                  -58458;12;0;false;false;63;95;191;;;
                                  -58470;1;0;false;false;;;;;;
                                  -58471;5;0;false;false;63;95;191;;;
                                  -58476;1;0;false;false;;;;;;
                                  -58477;6;0;false;false;63;95;191;;;
                                  -58483;3;0;false;false;;;;;;
                                  -58486;1;0;false;false;63;95;191;;;
                                  -58487;1;0;false;false;;;;;;
                                  -58488;7;1;false;false;127;159;191;;;
                                  -58495;6;0;false;false;63;95;191;;;
                                  -58501;1;0;false;false;;;;;;
                                  -58502;3;0;false;false;63;95;191;;;
                                  -58505;1;0;false;false;;;;;;
                                  -58506;2;0;false;false;63;95;191;;;
                                  -58508;1;0;false;false;;;;;;
                                  -58509;3;0;false;false;63;95;191;;;
                                  -58512;1;0;false;false;;;;;;
                                  -58513;10;0;false;false;63;95;191;;;
                                  -58523;1;0;false;false;;;;;;
                                  -58524;7;0;false;false;63;95;191;;;
                                  -58531;1;0;false;false;;;;;;
                                  -58532;7;0;false;false;63;95;191;;;
                                  -58539;1;0;false;false;;;;;;
                                  -58540;2;0;false;false;63;95;191;;;
                                  -58542;1;0;false;false;;;;;;
                                  -58543;8;0;false;false;63;95;191;;;
                                  -58551;4;0;false;false;;;;;;
                                  -58555;1;0;false;false;63;95;191;;;
                                  -58556;2;0;false;false;;;;;;
                                  -58558;3;0;false;false;63;95;191;;;
                                  -58561;1;0;false;false;;;;;;
                                  -58562;8;0;false;false;63;95;191;;;
                                  -58570;1;0;false;false;;;;;;
                                  -58571;2;0;false;false;63;95;191;;;
                                  -58573;1;0;false;false;;;;;;
                                  -58574;6;0;false;false;63;95;191;;;
                                  -58580;1;0;false;false;;;;;;
                                  -58581;1;0;false;false;63;95;191;;;
                                  -58582;1;0;false;false;;;;;;
                                  -58583;3;0;false;false;63;95;191;;;
                                  -58586;1;0;false;false;;;;;;
                                  -58587;8;0;false;false;63;95;191;;;
                                  -58595;3;0;false;false;;;;;;
                                  -58598;1;0;false;false;63;95;191;;;
                                  -58599;1;0;false;false;;;;;;
                                  -58600;11;1;false;false;127;159;191;;;
                                  -58611;12;0;false;false;63;95;191;;;
                                  -58623;1;0;false;false;;;;;;
                                  -58624;4;0;false;false;127;127;159;;;
                                  -58628;3;0;false;false;;;;;;
                                  -58631;1;0;false;false;63;95;191;;;
                                  -58632;4;0;false;false;;;;;;
                                  -58636;4;0;false;false;127;127;159;;;
                                  -58640;21;0;false;false;63;95;191;;;
                                  -58661;1;0;false;false;;;;;;
                                  -58662;1;0;false;false;127;127;159;;;
                                  -58663;1;0;false;false;;;;;;
                                  -58664;2;0;false;false;63;95;191;;;
                                  -58666;1;0;false;false;;;;;;
                                  -58667;3;0;false;false;63;95;191;;;
                                  -58670;1;0;false;false;;;;;;
                                  -58671;8;0;false;false;63;95;191;;;
                                  -58679;1;0;false;false;;;;;;
                                  -58680;3;0;false;false;63;95;191;;;
                                  -58683;1;0;false;false;;;;;;
                                  -58684;4;0;false;false;63;95;191;;;
                                  -58688;1;0;false;false;;;;;;
                                  -58689;8;0;false;false;63;95;191;;;
                                  -58697;5;0;false;false;127;127;159;;;
                                  -58702;3;0;false;false;;;;;;
                                  -58705;1;0;false;false;63;95;191;;;
                                  -58706;4;0;false;false;;;;;;
                                  -58710;4;0;false;false;127;127;159;;;
                                  -58714;27;0;false;false;63;95;191;;;
                                  -58741;1;0;false;false;;;;;;
                                  -58742;1;0;false;false;127;127;159;;;
                                  -58743;1;0;false;false;;;;;;
                                  -58744;2;0;false;false;63;95;191;;;
                                  -58746;1;0;false;false;;;;;;
                                  -58747;3;0;false;false;63;95;191;;;
                                  -58750;1;0;false;false;;;;;;
                                  -58751;6;0;false;false;63;95;191;;;
                                  -58757;1;0;false;false;;;;;;
                                  -58758;4;0;false;false;63;95;191;;;
                                  -58762;1;0;false;false;;;;;;
                                  -58763;3;0;false;false;63;95;191;;;
                                  -58766;1;0;false;false;;;;;;
                                  -58767;6;0;false;false;63;95;191;;;
                                  -58773;1;0;false;false;;;;;;
                                  -58774;4;0;false;false;63;95;191;;;
                                  -58778;1;0;false;false;;;;;;
                                  -58779;7;0;false;false;63;95;191;;;
                                  -58786;1;0;false;false;;;;;;
                                  -58787;3;0;false;false;63;95;191;;;
                                  -58790;1;0;false;false;;;;;;
                                  -58791;8;0;false;false;63;95;191;;;
                                  -58799;5;0;false;false;127;127;159;;;
                                  -58804;3;0;false;false;;;;;;
                                  -58807;1;0;false;false;63;95;191;;;
                                  -58808;1;0;false;false;;;;;;
                                  -58809;5;0;false;false;127;127;159;;;
                                  -58814;3;0;false;false;;;;;;
                                  -58817;2;0;false;false;63;95;191;;;
                                  -58819;2;0;false;false;;;;;;
                                  -58821;6;1;false;false;127;0;85;;;
                                  -58827;1;0;false;false;;;;;;
                                  -58828;4;1;false;false;127;0;85;;;
                                  -58832;1;0;false;false;;;;;;
                                  -58833;14;0;false;false;0;0;0;;;
                                  -58847;3;1;false;false;127;0;85;;;
                                  -58850;1;0;false;false;;;;;;
                                  -58851;4;0;false;false;0;0;0;;;
                                  -58855;1;0;false;false;;;;;;
                                  -58856;3;1;false;false;127;0;85;;;
                                  -58859;1;0;false;false;;;;;;
                                  -58860;7;0;false;false;0;0;0;;;
                                  -58867;1;0;false;false;;;;;;
                                  -58868;1;0;false;false;0;0;0;;;
                                  -58869;3;0;false;false;;;;;;
                                  -58872;14;0;false;false;0;0;0;;;
                                  -58886;7;0;false;false;;;;;;
                                  -58893;3;1;false;false;127;0;85;;;
                                  -58896;1;0;false;false;;;;;;
                                  -58897;8;0;false;false;0;0;0;;;
                                  -58905;1;0;false;false;;;;;;
                                  -58906;1;0;false;false;0;0;0;;;
                                  -58907;1;0;false;false;;;;;;
                                  -58908;3;0;false;false;0;0;0;;;
                                  -58911;1;0;false;false;;;;;;
                                  -58912;1;0;false;false;0;0;0;;;
                                  -58913;1;0;false;false;;;;;;
                                  -58914;13;0;false;false;0;0;0;;;
                                  -58927;3;0;false;false;;;;;;
                                  -58930;3;1;false;false;127;0;85;;;
                                  -58933;1;0;false;false;;;;;;
                                  -58934;13;0;false;false;0;0;0;;;
                                  -58947;1;0;false;false;;;;;;
                                  -58948;1;0;false;false;0;0;0;;;
                                  -58949;1;0;false;false;;;;;;
                                  -58950;3;0;false;false;0;0;0;;;
                                  -58953;1;0;false;false;;;;;;
                                  -58954;1;0;false;false;0;0;0;;;
                                  -58955;1;0;false;false;;;;;;
                                  -58956;18;0;false;false;0;0;0;;;
                                  -58974;3;0;false;false;;;;;;
                                  -58977;4;1;false;false;127;0;85;;;
                                  -58981;1;0;false;false;;;;;;
                                  -58982;7;0;false;false;0;0;0;;;
                                  -58989;1;0;false;false;;;;;;
                                  -58990;1;0;false;false;0;0;0;;;
                                  -58991;1;0;false;false;;;;;;
                                  -58992;1;0;false;false;0;0;0;;;
                                  -58993;4;1;false;false;127;0;85;;;
                                  -58997;10;0;false;false;0;0;0;;;
                                  -59007;5;0;false;false;;;;;;
                                  -59012;2;1;false;false;127;0;85;;;
                                  -59014;1;0;false;false;;;;;;
                                  -59015;33;0;false;false;0;0;0;;;
                                  -59048;1;0;false;false;;;;;;
                                  -59049;1;0;false;false;0;0;0;;;
                                  -59050;4;0;false;false;;;;;;
                                  -59054;54;0;false;false;63;127;95;;;
                                  -59108;2;0;false;false;;;;;;
                                  -59110;37;0;false;false;63;127;95;;;
                                  -59147;2;0;false;false;;;;;;
                                  -59149;4;1;false;false;127;0;85;;;
                                  -59153;1;0;false;false;;;;;;
                                  -59154;2;0;false;false;0;0;0;;;
                                  -59156;1;0;false;false;;;;;;
                                  -59157;1;0;false;false;0;0;0;;;
                                  -59158;1;0;false;false;;;;;;
                                  -59159;31;0;false;false;0;0;0;;;
                                  -59190;4;0;false;false;;;;;;
                                  -59194;3;1;false;false;127;0;85;;;
                                  -59197;1;0;false;false;;;;;;
                                  -59198;6;0;false;false;0;0;0;;;
                                  -59204;1;0;false;false;;;;;;
                                  -59205;1;0;false;false;0;0;0;;;
                                  -59206;1;0;false;false;;;;;;
                                  -59207;2;0;false;false;0;0;0;;;
                                  -59209;1;0;false;false;;;;;;
                                  -59210;1;0;false;false;0;0;0;;;
                                  -59211;1;0;false;false;;;;;;
                                  -59212;14;0;false;false;0;0;0;;;
                                  -59226;4;0;false;false;;;;;;
                                  -59230;2;1;false;false;127;0;85;;;
                                  -59232;1;0;false;false;;;;;;
                                  -59233;7;0;false;false;0;0;0;;;
                                  -59240;1;0;false;false;;;;;;
                                  -59241;2;0;false;false;0;0;0;;;
                                  -59243;1;0;false;false;;;;;;
                                  -59244;9;0;false;false;0;0;0;;;
                                  -59253;1;0;false;false;;;;;;
                                  -59254;1;0;false;false;0;0;0;;;
                                  -59255;5;0;false;false;;;;;;
                                  -59260;20;0;false;false;0;0;0;;;
                                  -59280;3;1;false;false;127;0;85;;;
                                  -59283;1;0;false;false;;;;;;
                                  -59284;17;0;false;false;0;0;0;;;
                                  -59301;4;0;false;false;;;;;;
                                  -59305;1;0;false;false;0;0;0;;;
                                  -59306;4;0;false;false;;;;;;
                                  -59310;4;1;false;false;127;0;85;;;
                                  -59314;1;0;false;false;;;;;;
                                  -59315;1;0;false;false;0;0;0;;;
                                  -59316;6;0;false;false;;;;;;
                                  -59322;17;0;false;false;0;0;0;;;
                                  -59339;3;1;false;false;127;0;85;;;
                                  -59342;1;0;false;false;;;;;;
                                  -59343;16;0;false;false;0;0;0;;;
                                  -59359;1;0;false;false;;;;;;
                                  -59360;3;1;false;false;127;0;85;;;
                                  -59363;1;0;false;false;;;;;;
                                  -59364;17;0;false;false;0;0;0;;;
                                  -59381;4;0;false;false;;;;;;
                                  -59385;1;0;false;false;0;0;0;;;
                                  -59386;4;0;false;false;;;;;;
                                  -59390;2;0;false;false;0;0;0;;;
                                  -59392;1;0;false;false;;;;;;
                                  -59393;1;0;false;false;0;0;0;;;
                                  -59394;1;0;false;false;;;;;;
                                  -59395;31;0;false;false;0;0;0;;;
                                  -59426;4;0;false;false;;;;;;
                                  -59430;6;0;false;false;0;0;0;;;
                                  -59436;1;0;false;false;;;;;;
                                  -59437;1;0;false;false;0;0;0;;;
                                  -59438;1;0;false;false;;;;;;
                                  -59439;2;0;false;false;0;0;0;;;
                                  -59441;1;0;false;false;;;;;;
                                  -59442;1;0;false;false;0;0;0;;;
                                  -59443;1;0;false;false;;;;;;
                                  -59444;14;0;false;false;0;0;0;;;
                                  -59458;4;0;false;false;;;;;;
                                  -59462;2;1;false;false;127;0;85;;;
                                  -59464;1;0;false;false;;;;;;
                                  -59465;7;0;false;false;0;0;0;;;
                                  -59472;1;0;false;false;;;;;;
                                  -59473;2;0;false;false;0;0;0;;;
                                  -59475;1;0;false;false;;;;;;
                                  -59476;9;0;false;false;0;0;0;;;
                                  -59485;1;0;false;false;;;;;;
                                  -59486;1;0;false;false;0;0;0;;;
                                  -59487;5;0;false;false;;;;;;
                                  -59492;20;0;false;false;0;0;0;;;
                                  -59512;3;1;false;false;127;0;85;;;
                                  -59515;1;0;false;false;;;;;;
                                  -59516;17;0;false;false;0;0;0;;;
                                  -59533;4;0;false;false;;;;;;
                                  -59537;1;0;false;false;0;0;0;;;
                                  -59538;4;0;false;false;;;;;;
                                  -59542;4;1;false;false;127;0;85;;;
                                  -59546;1;0;false;false;;;;;;
                                  -59547;1;0;false;false;0;0;0;;;
                                  -59548;6;0;false;false;;;;;;
                                  -59554;17;0;false;false;0;0;0;;;
                                  -59571;3;1;false;false;127;0;85;;;
                                  -59574;1;0;false;false;;;;;;
                                  -59575;16;0;false;false;0;0;0;;;
                                  -59591;1;0;false;false;;;;;;
                                  -59592;3;1;false;false;127;0;85;;;
                                  -59595;1;0;false;false;;;;;;
                                  -59596;17;0;false;false;0;0;0;;;
                                  -59613;4;0;false;false;;;;;;
                                  -59617;1;0;false;false;0;0;0;;;
                                  -59618;3;0;false;false;;;;;;
                                  -59621;1;0;false;false;0;0;0;;;
                                  -59622;1;0;false;false;;;;;;
                                  -59623;4;1;false;false;127;0;85;;;
                                  -59627;1;0;false;false;;;;;;
                                  -59628;1;0;false;false;0;0;0;;;
                                  -59629;4;0;false;false;;;;;;
                                  -59633;2;1;false;false;127;0;85;;;
                                  -59635;1;0;false;false;;;;;;
                                  -59636;7;0;false;false;0;0;0;;;
                                  -59643;1;0;false;false;;;;;;
                                  -59644;2;0;false;false;0;0;0;;;
                                  -59646;1;0;false;false;;;;;;
                                  -59647;9;0;false;false;0;0;0;;;
                                  -59656;1;0;false;false;;;;;;
                                  -59657;1;0;false;false;0;0;0;;;
                                  -59658;5;0;false;false;;;;;;
                                  -59663;20;0;false;false;0;0;0;;;
                                  -59683;3;1;false;false;127;0;85;;;
                                  -59686;1;0;false;false;;;;;;
                                  -59687;14;0;false;false;0;0;0;;;
                                  -59701;4;0;false;false;;;;;;
                                  -59705;1;0;false;false;0;0;0;;;
                                  -59706;4;0;false;false;;;;;;
                                  -59710;4;1;false;false;127;0;85;;;
                                  -59714;1;0;false;false;;;;;;
                                  -59715;1;0;false;false;0;0;0;;;
                                  -59716;6;0;false;false;;;;;;
                                  -59722;17;0;false;false;0;0;0;;;
                                  -59739;3;1;false;false;127;0;85;;;
                                  -59742;1;0;false;false;;;;;;
                                  -59743;13;0;false;false;0;0;0;;;
                                  -59756;1;0;false;false;;;;;;
                                  -59757;3;1;false;false;127;0;85;;;
                                  -59760;1;0;false;false;;;;;;
                                  -59761;17;0;false;false;0;0;0;;;
                                  -59778;4;0;false;false;;;;;;
                                  -59782;1;0;false;false;0;0;0;;;
                                  -59783;3;0;false;false;;;;;;
                                  -59786;1;0;false;false;0;0;0;;;
                                  -59787;6;0;false;false;;;;;;
                                  -59793;1;0;false;false;0;0;0;;;
                                  -59794;2;0;false;false;;;;;;
                                  -59796;3;0;false;false;63;95;191;;;
                                  -59799;3;0;false;false;;;;;;
                                  -59802;1;0;false;false;63;95;191;;;
                                  -59803;1;0;false;false;;;;;;
                                  -59804;4;0;false;false;63;95;191;;;
                                  -59808;1;0;false;false;;;;;;
                                  -59809;1;0;false;false;63;95;191;;;
                                  -59810;1;0;false;false;;;;;;
                                  -59811;13;0;false;false;63;95;191;;;
                                  -59824;1;0;false;false;;;;;;
                                  -59825;7;0;false;false;63;95;191;;;
                                  -59832;1;0;false;false;;;;;;
                                  -59833;9;0;false;false;63;95;191;;;
                                  -59842;1;0;false;false;;;;;;
                                  -59843;1;0;false;false;63;95;191;;;
                                  -59844;1;0;false;false;;;;;;
                                  -59845;16;0;false;false;63;95;191;;;
                                  -59861;1;0;false;false;;;;;;
                                  -59862;2;0;false;false;63;95;191;;;
                                  -59864;1;0;false;false;;;;;;
                                  -59865;4;0;false;false;63;95;191;;;
                                  -59869;4;0;false;false;;;;;;
                                  -59873;1;0;false;false;63;95;191;;;
                                  -59874;1;0;false;false;;;;;;
                                  -59875;8;0;false;false;63;95;191;;;
                                  -59883;1;0;false;false;;;;;;
                                  -59884;1;0;false;false;63;95;191;;;
                                  -59885;1;0;false;false;;;;;;
                                  -59886;4;0;false;false;63;95;191;;;
                                  -59890;1;0;false;false;;;;;;
                                  -59891;2;0;false;false;63;95;191;;;
                                  -59893;1;0;false;false;;;;;;
                                  -59894;4;0;false;false;63;95;191;;;
                                  -59898;1;0;false;false;;;;;;
                                  -59899;2;0;false;false;63;95;191;;;
                                  -59901;1;0;false;false;;;;;;
                                  -59902;8;0;false;false;63;95;191;;;
                                  -59910;1;0;false;false;;;;;;
                                  -59911;2;0;false;false;63;95;191;;;
                                  -59913;1;0;false;false;;;;;;
                                  -59914;9;0;false;false;63;95;191;;;
                                  -59923;1;0;false;false;;;;;;
                                  -59924;3;0;false;false;63;95;191;;;
                                  -59927;1;0;false;false;;;;;;
                                  -59928;4;0;false;false;63;95;191;;;
                                  -59932;1;0;false;false;;;;;;
                                  -59933;3;0;false;false;63;95;191;;;
                                  -59936;4;0;false;false;;;;;;
                                  -59940;1;0;false;false;63;95;191;;;
                                  -59941;1;0;false;false;;;;;;
                                  -59942;7;0;false;false;63;95;191;;;
                                  -59949;1;0;false;false;;;;;;
                                  -59950;4;0;false;false;63;95;191;;;
                                  -59954;1;0;false;false;;;;;;
                                  -59955;6;0;false;false;63;95;191;;;
                                  -59961;1;0;false;false;;;;;;
                                  -59962;2;0;false;false;63;95;191;;;
                                  -59964;1;0;false;false;;;;;;
                                  -59965;3;0;false;false;63;95;191;;;
                                  -59968;1;0;false;false;;;;;;
                                  -59969;4;0;false;false;63;95;191;;;
                                  -59973;1;0;false;false;;;;;;
                                  -59974;4;0;false;false;63;95;191;;;
                                  -59978;1;0;false;false;;;;;;
                                  -59979;6;0;false;false;63;95;191;;;
                                  -59985;1;0;false;false;;;;;;
                                  -59986;2;0;false;false;63;95;191;;;
                                  -59988;1;0;false;false;;;;;;
                                  -59989;7;0;false;false;63;95;191;;;
                                  -59996;1;0;false;false;;;;;;
                                  -59997;2;0;false;false;63;95;191;;;
                                  -59999;1;0;false;false;;;;;;
                                  -60000;2;0;false;false;63;95;191;;;
                                  -60002;1;0;false;false;;;;;;
                                  -60003;4;0;false;false;63;95;191;;;
                                  -60007;4;0;false;false;;;;;;
                                  -60011;1;0;false;false;63;95;191;;;
                                  -60012;1;0;false;false;;;;;;
                                  -60013;3;0;false;false;63;95;191;;;
                                  -60016;1;0;false;false;;;;;;
                                  -60017;1;0;false;false;63;95;191;;;
                                  -60018;1;0;false;false;;;;;;
                                  -60019;9;0;false;false;63;95;191;;;
                                  -60028;1;0;false;false;;;;;;
                                  -60029;9;0;false;false;63;95;191;;;
                                  -60038;1;0;false;false;;;;;;
                                  -60039;4;0;false;false;63;95;191;;;
                                  -60043;1;0;false;false;;;;;;
                                  -60044;3;0;false;false;63;95;191;;;
                                  -60047;1;0;false;false;;;;;;
                                  -60048;11;0;false;false;63;95;191;;;
                                  -60059;1;0;false;false;;;;;;
                                  -60060;5;0;false;false;63;95;191;;;
                                  -60065;3;0;false;false;;;;;;
                                  -60068;1;0;false;false;63;95;191;;;
                                  -60069;1;0;false;false;;;;;;
                                  -60070;4;0;false;false;63;95;191;;;
                                  -60074;1;0;false;false;;;;;;
                                  -60075;3;0;false;false;63;95;191;;;
                                  -60078;1;0;false;false;;;;;;
                                  -60079;2;0;false;false;63;95;191;;;
                                  -60081;1;0;false;false;;;;;;
                                  -60082;4;0;false;false;63;95;191;;;
                                  -60086;1;0;false;false;;;;;;
                                  -60087;4;0;false;false;63;95;191;;;
                                  -60091;1;0;false;false;;;;;;
                                  -60092;8;0;false;false;63;95;191;;;
                                  -60100;1;0;false;false;;;;;;
                                  -60101;8;0;false;false;63;95;191;;;
                                  -60109;1;0;false;false;;;;;;
                                  -60110;2;0;false;false;63;95;191;;;
                                  -60112;1;0;false;false;;;;;;
                                  -60113;5;0;false;false;63;95;191;;;
                                  -60118;1;0;false;false;127;127;159;;;
                                  -60119;2;0;false;false;63;95;191;;;
                                  -60121;1;0;false;false;127;127;159;;;
                                  -60122;4;0;false;false;63;95;191;;;
                                  -60126;1;0;false;false;;;;;;
                                  -60127;4;0;false;false;63;95;191;;;
                                  -60131;1;0;false;false;;;;;;
                                  -60132;6;0;false;false;63;95;191;;;
                                  -60138;3;0;false;false;;;;;;
                                  -60141;1;0;false;false;63;95;191;;;
                                  -60142;1;0;false;false;;;;;;
                                  -60143;3;0;false;false;63;95;191;;;
                                  -60146;1;0;false;false;;;;;;
                                  -60147;2;0;false;false;63;95;191;;;
                                  -60149;1;0;false;false;;;;;;
                                  -60150;9;0;false;false;63;95;191;;;
                                  -60159;1;0;false;false;;;;;;
                                  -60160;8;0;false;false;63;95;191;;;
                                  -60168;1;0;false;false;;;;;;
                                  -60169;2;0;false;false;63;95;191;;;
                                  -60171;1;0;false;false;;;;;;
                                  -60172;4;0;false;false;63;95;191;;;
                                  -60176;1;0;false;false;;;;;;
                                  -60177;6;0;false;false;63;95;191;;;
                                  -60183;4;0;false;false;;;;;;
                                  -60187;1;0;false;false;63;95;191;;;
                                  -60188;1;0;false;false;;;;;;
                                  -60189;5;0;false;false;63;95;191;;;
                                  -60194;1;0;false;false;;;;;;
                                  -60195;8;0;false;false;63;95;191;;;
                                  -60203;1;0;false;false;;;;;;
                                  -60204;4;0;false;false;63;95;191;;;
                                  -60208;1;0;false;false;;;;;;
                                  -60209;6;0;false;false;63;95;191;;;
                                  -60215;1;0;false;false;;;;;;
                                  -60216;8;0;false;false;63;95;191;;;
                                  -60224;1;0;false;false;;;;;;
                                  -60225;2;0;false;false;63;95;191;;;
                                  -60227;1;0;false;false;;;;;;
                                  -60228;1;0;false;false;63;95;191;;;
                                  -60229;1;0;false;false;;;;;;
                                  -60230;5;0;false;false;63;95;191;;;
                                  -60235;1;0;false;false;127;127;159;;;
                                  -60236;2;0;false;false;63;95;191;;;
                                  -60238;1;0;false;false;127;127;159;;;
                                  -60239;4;0;false;false;63;95;191;;;
                                  -60243;1;0;false;false;;;;;;
                                  -60244;8;0;false;false;63;95;191;;;
                                  -60252;3;0;false;false;;;;;;
                                  -60255;1;0;false;false;63;95;191;;;
                                  -60256;1;0;false;false;;;;;;
                                  -60257;6;0;false;false;63;95;191;;;
                                  -60263;1;0;false;false;;;;;;
                                  -60264;9;0;false;false;63;95;191;;;
                                  -60273;1;0;false;false;;;;;;
                                  -60274;6;0;false;false;63;95;191;;;
                                  -60280;1;0;false;false;;;;;;
                                  -60281;2;0;false;false;63;95;191;;;
                                  -60283;1;0;false;false;;;;;;
                                  -60284;7;0;false;false;63;95;191;;;
                                  -60291;1;0;false;false;;;;;;
                                  -60292;5;0;false;false;63;95;191;;;
                                  -60297;1;0;false;false;;;;;;
                                  -60298;2;0;false;false;63;95;191;;;
                                  -60300;1;0;false;false;;;;;;
                                  -60301;4;0;false;false;63;95;191;;;
                                  -60305;1;0;false;false;;;;;;
                                  -60306;6;0;false;false;63;95;191;;;
                                  -60312;1;0;false;false;;;;;;
                                  -60313;4;0;false;false;63;95;191;;;
                                  -60317;1;0;false;false;;;;;;
                                  -60318;3;0;false;false;63;95;191;;;
                                  -60321;1;0;false;false;;;;;;
                                  -60322;3;0;false;false;63;95;191;;;
                                  -60325;3;0;false;false;;;;;;
                                  -60328;1;0;false;false;63;95;191;;;
                                  -60329;1;0;false;false;;;;;;
                                  -60330;3;0;false;false;63;95;191;;;
                                  -60333;1;0;false;false;;;;;;
                                  -60334;4;0;false;false;63;95;191;;;
                                  -60338;1;0;false;false;;;;;;
                                  -60339;3;0;false;false;63;95;191;;;
                                  -60342;1;0;false;false;;;;;;
                                  -60343;7;0;false;false;63;95;191;;;
                                  -60350;4;0;false;false;;;;;;
                                  -60354;1;0;false;false;63;95;191;;;
                                  -60355;1;0;false;false;;;;;;
                                  -60356;3;0;false;false;127;127;159;;;
                                  -60359;3;0;false;false;;;;;;
                                  -60362;1;0;false;false;63;95;191;;;
                                  -60363;3;0;false;false;;;;;;
                                  -60366;1;0;false;false;63;95;191;;;
                                  -60367;1;0;false;false;;;;;;
                                  -60368;7;1;false;false;127;159;191;;;
                                  -60375;8;0;false;false;63;95;191;;;
                                  -60383;1;0;false;false;;;;;;
                                  -60384;3;0;false;false;63;95;191;;;
                                  -60387;1;0;false;false;;;;;;
                                  -60388;8;0;false;false;63;95;191;;;
                                  -60396;3;0;false;false;;;;;;
                                  -60399;1;0;false;false;63;95;191;;;
                                  -60400;1;0;false;false;;;;;;
                                  -60401;11;1;false;false;127;159;191;;;
                                  -60412;12;0;false;false;63;95;191;;;
                                  -60424;1;0;false;false;;;;;;
                                  -60425;4;0;false;false;127;127;159;;;
                                  -60429;3;0;false;false;;;;;;
                                  -60432;1;0;false;false;63;95;191;;;
                                  -60433;4;0;false;false;;;;;;
                                  -60437;4;0;false;false;127;127;159;;;
                                  -60441;21;0;false;false;63;95;191;;;
                                  -60462;1;0;false;false;;;;;;
                                  -60463;1;0;false;false;127;127;159;;;
                                  -60464;1;0;false;false;;;;;;
                                  -60465;2;0;false;false;63;95;191;;;
                                  -60467;1;0;false;false;;;;;;
                                  -60468;3;0;false;false;63;95;191;;;
                                  -60471;1;0;false;false;;;;;;
                                  -60472;8;0;false;false;63;95;191;;;
                                  -60480;1;0;false;false;;;;;;
                                  -60481;3;0;false;false;63;95;191;;;
                                  -60484;1;0;false;false;;;;;;
                                  -60485;4;0;false;false;63;95;191;;;
                                  -60489;1;0;false;false;;;;;;
                                  -60490;8;0;false;false;63;95;191;;;
                                  -60498;5;0;false;false;127;127;159;;;
                                  -60503;3;0;false;false;;;;;;
                                  -60506;1;0;false;false;63;95;191;;;
                                  -60507;4;0;false;false;;;;;;
                                  -60511;4;0;false;false;127;127;159;;;
                                  -60515;27;0;false;false;63;95;191;;;
                                  -60542;1;0;false;false;;;;;;
                                  -60543;1;0;false;false;127;127;159;;;
                                  -60544;1;0;false;false;;;;;;
                                  -60545;2;0;false;false;63;95;191;;;
                                  -60547;1;0;false;false;;;;;;
                                  -60548;3;0;false;false;63;95;191;;;
                                  -60551;1;0;false;false;;;;;;
                                  -60552;6;0;false;false;63;95;191;;;
                                  -60558;1;0;false;false;;;;;;
                                  -60559;4;0;false;false;63;95;191;;;
                                  -60563;1;0;false;false;;;;;;
                                  -60564;3;0;false;false;63;95;191;;;
                                  -60567;1;0;false;false;;;;;;
                                  -60568;6;0;false;false;63;95;191;;;
                                  -60574;1;0;false;false;;;;;;
                                  -60575;4;0;false;false;63;95;191;;;
                                  -60579;1;0;false;false;;;;;;
                                  -60580;7;0;false;false;63;95;191;;;
                                  -60587;1;0;false;false;;;;;;
                                  -60588;3;0;false;false;63;95;191;;;
                                  -60591;1;0;false;false;;;;;;
                                  -60592;8;0;false;false;63;95;191;;;
                                  -60600;5;0;false;false;127;127;159;;;
                                  -60605;3;0;false;false;;;;;;
                                  -60608;1;0;false;false;63;95;191;;;
                                  -60609;1;0;false;false;;;;;;
                                  -60610;5;0;false;false;127;127;159;;;
                                  -60615;3;0;false;false;;;;;;
                                  -60618;1;0;false;false;63;95;191;;;
                                  -60619;1;0;false;false;;;;;;
                                  -60620;11;1;false;false;127;159;191;;;
                                  -60631;24;0;false;false;63;95;191;;;
                                  -60655;1;0;false;false;;;;;;
                                  -60656;4;0;false;false;127;127;159;;;
                                  -60660;3;0;false;false;;;;;;
                                  -60663;1;0;false;false;63;95;191;;;
                                  -60664;4;0;false;false;;;;;;
                                  -60668;4;0;false;false;127;127;159;;;
                                  -60672;19;0;false;false;63;95;191;;;
                                  -60691;1;0;false;false;;;;;;
                                  -60692;4;0;false;false;63;95;191;;;
                                  -60696;1;0;false;false;;;;;;
                                  -60697;8;0;false;false;63;95;191;;;
                                  -60705;1;0;false;false;;;;;;
                                  -60706;2;0;false;false;63;95;191;;;
                                  -60708;1;0;false;false;;;;;;
                                  -60709;4;0;false;false;63;95;191;;;
                                  -60713;5;0;false;false;127;127;159;;;
                                  -60718;3;0;false;false;;;;;;
                                  -60721;1;0;false;false;63;95;191;;;
                                  -60722;1;0;false;false;;;;;;
                                  -60723;5;0;false;false;127;127;159;;;
                                  -60728;3;0;false;false;;;;;;
                                  -60731;1;0;false;false;63;95;191;;;
                                  -60732;1;0;false;false;;;;;;
                                  -60733;5;1;false;false;127;159;191;;;
                                  -60738;16;0;false;false;63;95;191;;;
                                  -60754;3;0;false;false;;;;;;
                                  -60757;1;0;false;false;63;95;191;;;
                                  -60758;1;0;false;false;;;;;;
                                  -60759;7;1;false;false;127;159;191;;;
                                  -60766;3;0;false;false;63;95;191;;;
                                  -60769;3;0;false;false;;;;;;
                                  -60772;2;0;false;false;63;95;191;;;
                                  -60774;2;0;false;false;;;;;;
                                  -60776;6;1;false;false;127;0;85;;;
                                  -60782;1;0;false;false;;;;;;
                                  -60783;4;1;false;false;127;0;85;;;
                                  -60787;1;0;false;false;;;;;;
                                  -60788;42;0;false;false;0;0;0;;;
                                  -60830;1;0;false;false;;;;;;
                                  -60831;9;0;false;false;0;0;0;;;
                                  -60840;1;0;false;false;;;;;;
                                  -60841;1;0;false;false;0;0;0;;;
                                  -60842;3;0;false;false;;;;;;
                                  -60845;14;0;false;false;0;0;0;;;
                                  -60859;3;0;false;false;;;;;;
                                  -60862;2;1;false;false;127;0;85;;;
                                  -60864;1;0;false;false;;;;;;
                                  -60865;9;0;false;false;0;0;0;;;
                                  -60874;1;0;false;false;;;;;;
                                  -60875;2;0;false;false;0;0;0;;;
                                  -60877;1;0;false;false;;;;;;
                                  -60878;4;1;false;false;127;0;85;;;
                                  -60882;1;0;false;false;0;0;0;;;
                                  -60883;1;0;false;false;;;;;;
                                  -60884;1;0;false;false;0;0;0;;;
                                  -60885;4;0;false;false;;;;;;
                                  -60889;35;0;false;false;0;0;0;;;
                                  -60924;3;0;false;false;;;;;;
                                  -60927;1;0;false;false;0;0;0;;;
                                  -60928;3;0;false;false;;;;;;
                                  -60931;18;0;false;false;0;0;0;;;
                                  -60949;1;0;false;false;;;;;;
                                  -60950;13;0;false;false;0;0;0;;;
                                  -60963;1;0;false;false;;;;;;
                                  -60964;1;0;false;false;0;0;0;;;
                                  -60965;1;0;false;false;;;;;;
                                  -60966;3;1;false;false;127;0;85;;;
                                  -60969;1;0;false;false;;;;;;
                                  -60970;29;0;false;false;0;0;0;;;
                                  -60999;3;0;false;false;;;;;;
                                  -61002;28;0;false;false;0;0;0;;;
                                  -61030;1;0;false;false;;;;;;
                                  -61031;15;0;false;false;0;0;0;;;
                                  -61046;3;0;false;false;;;;;;
                                  -61049;1;0;false;false;0;0;0;;;
                                  -61050;2;0;false;false;;;;;;
                                  -61052;3;0;false;false;63;95;191;;;
                                  -61055;3;0;false;false;;;;;;
                                  -61058;1;0;false;false;63;95;191;;;
                                  -61059;1;0;false;false;;;;;;
                                  -61060;4;0;false;false;63;95;191;;;
                                  -61064;1;0;false;false;;;;;;
                                  -61065;1;0;false;false;63;95;191;;;
                                  -61066;1;0;false;false;;;;;;
                                  -61067;4;0;false;false;63;95;191;;;
                                  -61071;1;0;false;false;;;;;;
                                  -61072;10;0;false;false;63;95;191;;;
                                  -61082;1;0;false;false;;;;;;
                                  -61083;9;0;false;false;63;95;191;;;
                                  -61092;1;0;false;false;;;;;;
                                  -61093;1;0;false;false;63;95;191;;;
                                  -61094;1;0;false;false;;;;;;
                                  -61095;17;0;false;false;63;95;191;;;
                                  -61112;1;0;false;false;;;;;;
                                  -61113;5;0;false;false;63;95;191;;;
                                  -61118;1;0;false;false;;;;;;
                                  -61119;2;0;false;false;63;95;191;;;
                                  -61121;1;0;false;false;;;;;;
                                  -61122;4;0;false;false;63;95;191;;;
                                  -61126;1;0;false;false;;;;;;
                                  -61127;2;0;false;false;63;95;191;;;
                                  -61129;1;0;false;false;;;;;;
                                  -61130;3;0;false;false;63;95;191;;;
                                  -61133;4;0;false;false;;;;;;
                                  -61137;1;0;false;false;63;95;191;;;
                                  -61138;1;0;false;false;;;;;;
                                  -61139;6;0;false;false;63;95;191;;;
                                  -61145;1;0;false;false;;;;;;
                                  -61146;2;0;false;false;63;95;191;;;
                                  -61148;1;0;false;false;;;;;;
                                  -61149;9;0;false;false;63;95;191;;;
                                  -61158;1;0;false;false;;;;;;
                                  -61159;3;0;false;false;63;95;191;;;
                                  -61162;1;0;false;false;;;;;;
                                  -61163;10;0;false;false;63;95;191;;;
                                  -61173;1;0;false;false;;;;;;
                                  -61174;5;0;false;false;63;95;191;;;
                                  -61179;1;0;false;false;;;;;;
                                  -61180;3;0;false;false;63;95;191;;;
                                  -61183;1;0;false;false;;;;;;
                                  -61184;1;0;false;false;63;95;191;;;
                                  -61185;1;0;false;false;;;;;;
                                  -61186;5;0;false;false;63;95;191;;;
                                  -61191;3;0;false;false;;;;;;
                                  -61194;1;0;false;false;63;95;191;;;
                                  -61195;1;0;false;false;;;;;;
                                  -61196;3;0;false;false;127;127;159;;;
                                  -61199;3;0;false;false;;;;;;
                                  -61202;1;0;false;false;63;95;191;;;
                                  -61203;3;0;false;false;;;;;;
                                  -61206;1;0;false;false;63;95;191;;;
                                  -61207;1;0;false;false;;;;;;
                                  -61208;7;1;false;false;127;159;191;;;
                                  -61215;8;0;false;false;63;95;191;;;
                                  -61223;1;0;false;false;;;;;;
                                  -61224;3;0;false;false;63;95;191;;;
                                  -61227;1;0;false;false;;;;;;
                                  -61228;8;0;false;false;63;95;191;;;
                                  -61236;3;0;false;false;;;;;;
                                  -61239;1;0;false;false;63;95;191;;;
                                  -61240;1;0;false;false;;;;;;
                                  -61241;11;1;false;false;127;159;191;;;
                                  -61252;12;0;false;false;63;95;191;;;
                                  -61264;1;0;false;false;;;;;;
                                  -61265;4;0;false;false;127;127;159;;;
                                  -61269;3;0;false;false;;;;;;
                                  -61272;1;0;false;false;63;95;191;;;
                                  -61273;4;0;false;false;;;;;;
                                  -61277;4;0;false;false;127;127;159;;;
                                  -61281;21;0;false;false;63;95;191;;;
                                  -61302;1;0;false;false;;;;;;
                                  -61303;1;0;false;false;127;127;159;;;
                                  -61304;1;0;false;false;;;;;;
                                  -61305;2;0;false;false;63;95;191;;;
                                  -61307;1;0;false;false;;;;;;
                                  -61308;3;0;false;false;63;95;191;;;
                                  -61311;1;0;false;false;;;;;;
                                  -61312;8;0;false;false;63;95;191;;;
                                  -61320;1;0;false;false;;;;;;
                                  -61321;3;0;false;false;63;95;191;;;
                                  -61324;1;0;false;false;;;;;;
                                  -61325;4;0;false;false;63;95;191;;;
                                  -61329;1;0;false;false;;;;;;
                                  -61330;8;0;false;false;63;95;191;;;
                                  -61338;5;0;false;false;127;127;159;;;
                                  -61343;3;0;false;false;;;;;;
                                  -61346;1;0;false;false;63;95;191;;;
                                  -61347;4;0;false;false;;;;;;
                                  -61351;4;0;false;false;127;127;159;;;
                                  -61355;27;0;false;false;63;95;191;;;
                                  -61382;1;0;false;false;;;;;;
                                  -61383;1;0;false;false;127;127;159;;;
                                  -61384;1;0;false;false;;;;;;
                                  -61385;2;0;false;false;63;95;191;;;
                                  -61387;1;0;false;false;;;;;;
                                  -61388;3;0;false;false;63;95;191;;;
                                  -61391;1;0;false;false;;;;;;
                                  -61392;6;0;false;false;63;95;191;;;
                                  -61398;1;0;false;false;;;;;;
                                  -61399;4;0;false;false;63;95;191;;;
                                  -61403;1;0;false;false;;;;;;
                                  -61404;3;0;false;false;63;95;191;;;
                                  -61407;1;0;false;false;;;;;;
                                  -61408;6;0;false;false;63;95;191;;;
                                  -61414;1;0;false;false;;;;;;
                                  -61415;4;0;false;false;63;95;191;;;
                                  -61419;1;0;false;false;;;;;;
                                  -61420;7;0;false;false;63;95;191;;;
                                  -61427;1;0;false;false;;;;;;
                                  -61428;3;0;false;false;63;95;191;;;
                                  -61431;1;0;false;false;;;;;;
                                  -61432;8;0;false;false;63;95;191;;;
                                  -61440;5;0;false;false;127;127;159;;;
                                  -61445;3;0;false;false;;;;;;
                                  -61448;1;0;false;false;63;95;191;;;
                                  -61449;1;0;false;false;;;;;;
                                  -61450;5;0;false;false;127;127;159;;;
                                  -61455;3;0;false;false;;;;;;
                                  -61458;1;0;false;false;63;95;191;;;
                                  -61459;1;0;false;false;;;;;;
                                  -61460;11;1;false;false;127;159;191;;;
                                  -61471;24;0;false;false;63;95;191;;;
                                  -61495;1;0;false;false;;;;;;
                                  -61496;4;0;false;false;127;127;159;;;
                                  -61500;3;0;false;false;;;;;;
                                  -61503;1;0;false;false;63;95;191;;;
                                  -61504;4;0;false;false;;;;;;
                                  -61508;4;0;false;false;127;127;159;;;
                                  -61512;19;0;false;false;63;95;191;;;
                                  -61531;1;0;false;false;;;;;;
                                  -61532;4;0;false;false;63;95;191;;;
                                  -61536;1;0;false;false;;;;;;
                                  -61537;8;0;false;false;63;95;191;;;
                                  -61545;1;0;false;false;;;;;;
                                  -61546;2;0;false;false;63;95;191;;;
                                  -61548;1;0;false;false;;;;;;
                                  -61549;4;0;false;false;63;95;191;;;
                                  -61553;5;0;false;false;127;127;159;;;
                                  -61558;3;0;false;false;;;;;;
                                  -61561;1;0;false;false;63;95;191;;;
                                  -61562;1;0;false;false;;;;;;
                                  -61563;5;0;false;false;127;127;159;;;
                                  -61568;3;0;false;false;;;;;;
                                  -61571;2;0;false;false;63;95;191;;;
                                  -61573;2;0;false;false;;;;;;
                                  -61575;6;1;false;false;127;0;85;;;
                                  -61581;1;0;false;false;;;;;;
                                  -61582;4;1;false;false;127;0;85;;;
                                  -61586;1;0;false;false;;;;;;
                                  -61587;48;0;false;false;0;0;0;;;
                                  -61635;1;0;false;false;;;;;;
                                  -61636;9;0;false;false;0;0;0;;;
                                  -61645;1;0;false;false;;;;;;
                                  -61646;1;0;false;false;0;0;0;;;
                                  -61647;3;0;false;false;;;;;;
                                  -61650;14;0;false;false;0;0;0;;;
                                  -61664;3;0;false;false;;;;;;
                                  -61667;2;1;false;false;127;0;85;;;
                                  -61669;1;0;false;false;;;;;;
                                  -61670;9;0;false;false;0;0;0;;;
                                  -61679;1;0;false;false;;;;;;
                                  -61680;2;0;false;false;0;0;0;;;
                                  -61682;1;0;false;false;;;;;;
                                  -61683;4;1;false;false;127;0;85;;;
                                  -61687;1;0;false;false;0;0;0;;;
                                  -61688;1;0;false;false;;;;;;
                                  -61689;35;0;false;false;0;0;0;;;
                                  -61724;3;0;false;false;;;;;;
                                  -61727;2;1;false;false;127;0;85;;;
                                  -61729;1;0;false;false;;;;;;
                                  -61730;21;0;false;false;0;0;0;;;
                                  -61751;1;0;false;false;;;;;;
                                  -61752;1;0;false;false;0;0;0;;;
                                  -61753;4;0;false;false;;;;;;
                                  -61757;48;0;false;false;0;0;0;;;
                                  -61805;4;0;false;false;;;;;;
                                  -61809;38;0;false;false;0;0;0;;;
                                  -61847;1;0;false;false;;;;;;
                                  -61848;30;0;false;false;0;0;0;;;
                                  -61878;1;0;false;false;;;;;;
                                  -61879;4;1;false;false;127;0;85;;;
                                  -61883;2;0;false;false;0;0;0;;;
                                  -61885;4;0;false;false;;;;;;
                                  -61889;18;0;false;false;0;0;0;;;
                                  -61907;1;0;false;false;;;;;;
                                  -61908;1;0;false;false;0;0;0;;;
                                  -61909;1;0;false;false;;;;;;
                                  -61910;4;1;false;false;127;0;85;;;
                                  -61914;1;0;false;false;0;0;0;;;
                                  -61915;3;0;false;false;;;;;;
                                  -61918;1;0;false;false;0;0;0;;;
                                  -61919;4;0;false;false;;;;;;
                                  -61923;18;0;false;false;0;0;0;;;
                                  -61941;1;0;false;false;;;;;;
                                  -61942;13;0;false;false;0;0;0;;;
                                  -61955;1;0;false;false;;;;;;
                                  -61956;1;0;false;false;0;0;0;;;
                                  -61957;1;0;false;false;;;;;;
                                  -61958;3;1;false;false;127;0;85;;;
                                  -61961;1;0;false;false;;;;;;
                                  -61962;29;0;false;false;0;0;0;;;
                                  -61991;3;0;false;false;;;;;;
                                  -61994;30;0;false;false;0;0;0;;;
                                  -62024;1;0;false;false;;;;;;
                                  -62025;15;0;false;false;0;0;0;;;
                                  -62040;3;0;false;false;;;;;;
                                  -62043;1;0;false;false;0;0;0;;;
                                  -62044;2;0;false;false;;;;;;
                                  -62046;3;0;false;false;63;95;191;;;
                                  -62049;3;0;false;false;;;;;;
                                  -62052;1;0;false;false;63;95;191;;;
                                  -62053;1;0;false;false;;;;;;
                                  -62054;4;0;false;false;63;95;191;;;
                                  -62058;1;0;false;false;;;;;;
                                  -62059;1;0;false;false;63;95;191;;;
                                  -62060;1;0;false;false;;;;;;
                                  -62061;4;0;false;false;63;95;191;;;
                                  -62065;1;0;false;false;;;;;;
                                  -62066;5;0;false;false;63;95;191;;;
                                  -62071;1;0;false;false;;;;;;
                                  -62072;9;0;false;false;63;95;191;;;
                                  -62081;1;0;false;false;;;;;;
                                  -62082;1;0;false;false;63;95;191;;;
                                  -62083;1;0;false;false;;;;;;
                                  -62084;12;0;false;false;63;95;191;;;
                                  -62096;1;0;false;false;;;;;;
                                  -62097;5;0;false;false;63;95;191;;;
                                  -62102;1;0;false;false;;;;;;
                                  -62103;2;0;false;false;63;95;191;;;
                                  -62105;1;0;false;false;;;;;;
                                  -62106;4;0;false;false;63;95;191;;;
                                  -62110;1;0;false;false;;;;;;
                                  -62111;2;0;false;false;63;95;191;;;
                                  -62113;1;0;false;false;;;;;;
                                  -62114;3;0;false;false;63;95;191;;;
                                  -62117;1;0;false;false;;;;;;
                                  -62118;6;0;false;false;63;95;191;;;
                                  -62124;1;0;false;false;;;;;;
                                  -62125;2;0;false;false;63;95;191;;;
                                  -62127;4;0;false;false;;;;;;
                                  -62131;1;0;false;false;63;95;191;;;
                                  -62132;1;0;false;false;;;;;;
                                  -62133;9;0;false;false;63;95;191;;;
                                  -62142;1;0;false;false;;;;;;
                                  -62143;3;0;false;false;63;95;191;;;
                                  -62146;1;0;false;false;;;;;;
                                  -62147;6;0;false;false;63;95;191;;;
                                  -62153;1;0;false;false;;;;;;
                                  -62154;3;0;false;false;63;95;191;;;
                                  -62157;1;0;false;false;;;;;;
                                  -62158;1;0;false;false;63;95;191;;;
                                  -62159;1;0;false;false;;;;;;
                                  -62160;5;0;false;false;63;95;191;;;
                                  -62165;3;0;false;false;;;;;;
                                  -62168;1;0;false;false;63;95;191;;;
                                  -62169;1;0;false;false;;;;;;
                                  -62170;3;0;false;false;127;127;159;;;
                                  -62173;3;0;false;false;;;;;;
                                  -62176;1;0;false;false;63;95;191;;;
                                  -62177;3;0;false;false;;;;;;
                                  -62180;1;0;false;false;63;95;191;;;
                                  -62181;1;0;false;false;;;;;;
                                  -62182;7;1;false;false;127;159;191;;;
                                  -62189;8;0;false;false;63;95;191;;;
                                  -62197;1;0;false;false;;;;;;
                                  -62198;3;0;false;false;63;95;191;;;
                                  -62201;1;0;false;false;;;;;;
                                  -62202;8;0;false;false;63;95;191;;;
                                  -62210;3;0;false;false;;;;;;
                                  -62213;1;0;false;false;63;95;191;;;
                                  -62214;1;0;false;false;;;;;;
                                  -62215;11;1;false;false;127;159;191;;;
                                  -62226;12;0;false;false;63;95;191;;;
                                  -62238;1;0;false;false;;;;;;
                                  -62239;4;0;false;false;127;127;159;;;
                                  -62243;3;0;false;false;;;;;;
                                  -62246;1;0;false;false;63;95;191;;;
                                  -62247;4;0;false;false;;;;;;
                                  -62251;4;0;false;false;127;127;159;;;
                                  -62255;21;0;false;false;63;95;191;;;
                                  -62276;1;0;false;false;;;;;;
                                  -62277;1;0;false;false;127;127;159;;;
                                  -62278;1;0;false;false;;;;;;
                                  -62279;2;0;false;false;63;95;191;;;
                                  -62281;1;0;false;false;;;;;;
                                  -62282;3;0;false;false;63;95;191;;;
                                  -62285;1;0;false;false;;;;;;
                                  -62286;8;0;false;false;63;95;191;;;
                                  -62294;1;0;false;false;;;;;;
                                  -62295;3;0;false;false;63;95;191;;;
                                  -62298;1;0;false;false;;;;;;
                                  -62299;4;0;false;false;63;95;191;;;
                                  -62303;1;0;false;false;;;;;;
                                  -62304;8;0;false;false;63;95;191;;;
                                  -62312;5;0;false;false;127;127;159;;;
                                  -62317;3;0;false;false;;;;;;
                                  -62320;1;0;false;false;63;95;191;;;
                                  -62321;4;0;false;false;;;;;;
                                  -62325;4;0;false;false;127;127;159;;;
                                  -62329;27;0;false;false;63;95;191;;;
                                  -62356;1;0;false;false;;;;;;
                                  -62357;1;0;false;false;127;127;159;;;
                                  -62358;1;0;false;false;;;;;;
                                  -62359;2;0;false;false;63;95;191;;;
                                  -62361;1;0;false;false;;;;;;
                                  -62362;3;0;false;false;63;95;191;;;
                                  -62365;1;0;false;false;;;;;;
                                  -62366;6;0;false;false;63;95;191;;;
                                  -62372;1;0;false;false;;;;;;
                                  -62373;4;0;false;false;63;95;191;;;
                                  -62377;1;0;false;false;;;;;;
                                  -62378;3;0;false;false;63;95;191;;;
                                  -62381;1;0;false;false;;;;;;
                                  -62382;6;0;false;false;63;95;191;;;
                                  -62388;1;0;false;false;;;;;;
                                  -62389;4;0;false;false;63;95;191;;;
                                  -62393;1;0;false;false;;;;;;
                                  -62394;7;0;false;false;63;95;191;;;
                                  -62401;1;0;false;false;;;;;;
                                  -62402;3;0;false;false;63;95;191;;;
                                  -62405;1;0;false;false;;;;;;
                                  -62406;8;0;false;false;63;95;191;;;
                                  -62414;5;0;false;false;127;127;159;;;
                                  -62419;3;0;false;false;;;;;;
                                  -62422;1;0;false;false;63;95;191;;;
                                  -62423;1;0;false;false;;;;;;
                                  -62424;5;0;false;false;127;127;159;;;
                                  -62429;3;0;false;false;;;;;;
                                  -62432;1;0;false;false;63;95;191;;;
                                  -62433;1;0;false;false;;;;;;
                                  -62434;11;1;false;false;127;159;191;;;
                                  -62445;24;0;false;false;63;95;191;;;
                                  -62469;1;0;false;false;;;;;;
                                  -62470;4;0;false;false;127;127;159;;;
                                  -62474;3;0;false;false;;;;;;
                                  -62477;1;0;false;false;63;95;191;;;
                                  -62478;4;0;false;false;;;;;;
                                  -62482;4;0;false;false;127;127;159;;;
                                  -62486;19;0;false;false;63;95;191;;;
                                  -62505;1;0;false;false;;;;;;
                                  -62506;4;0;false;false;63;95;191;;;
                                  -62510;1;0;false;false;;;;;;
                                  -62511;8;0;false;false;63;95;191;;;
                                  -62519;1;0;false;false;;;;;;
                                  -62520;2;0;false;false;63;95;191;;;
                                  -62522;1;0;false;false;;;;;;
                                  -62523;4;0;false;false;63;95;191;;;
                                  -62527;5;0;false;false;127;127;159;;;
                                  -62532;3;0;false;false;;;;;;
                                  -62535;1;0;false;false;63;95;191;;;
                                  -62536;1;0;false;false;;;;;;
                                  -62537;5;0;false;false;127;127;159;;;
                                  -62542;3;0;false;false;;;;;;
                                  -62545;2;0;false;false;63;95;191;;;
                                  -62547;2;0;false;false;;;;;;
                                  -62549;6;1;false;false;127;0;85;;;
                                  -62555;1;0;false;false;;;;;;
                                  -62556;4;1;false;false;127;0;85;;;
                                  -62560;1;0;false;false;;;;;;
                                  -62561;38;0;false;false;0;0;0;;;
                                  -62599;1;0;false;false;;;;;;
                                  -62600;9;0;false;false;0;0;0;;;
                                  -62609;1;0;false;false;;;;;;
                                  -62610;1;0;false;false;0;0;0;;;
                                  -62611;3;0;false;false;;;;;;
                                  -62614;14;0;false;false;0;0;0;;;
                                  -62628;3;0;false;false;;;;;;
                                  -62631;2;1;false;false;127;0;85;;;
                                  -62633;1;0;false;false;;;;;;
                                  -62634;9;0;false;false;0;0;0;;;
                                  -62643;1;0;false;false;;;;;;
                                  -62644;2;0;false;false;0;0;0;;;
                                  -62646;1;0;false;false;;;;;;
                                  -62647;4;1;false;false;127;0;85;;;
                                  -62651;1;0;false;false;0;0;0;;;
                                  -62652;1;0;false;false;;;;;;
                                  -62653;1;0;false;false;0;0;0;;;
                                  -62654;4;0;false;false;;;;;;
                                  -62658;35;0;false;false;0;0;0;;;
                                  -62693;3;0;false;false;;;;;;
                                  -62696;1;0;false;false;0;0;0;;;
                                  -62697;3;0;false;false;;;;;;
                                  -62700;2;1;false;false;127;0;85;;;
                                  -62702;1;0;false;false;;;;;;
                                  -62703;16;0;false;false;0;0;0;;;
                                  -62719;1;0;false;false;;;;;;
                                  -62720;1;0;false;false;0;0;0;;;
                                  -62721;4;0;false;false;;;;;;
                                  -62725;43;0;false;false;0;0;0;;;
                                  -62768;4;0;false;false;;;;;;
                                  -62772;32;0;false;false;0;0;0;;;
                                  -62804;4;1;false;false;127;0;85;;;
                                  -62808;2;0;false;false;0;0;0;;;
                                  -62810;4;0;false;false;;;;;;
                                  -62814;13;0;false;false;0;0;0;;;
                                  -62827;1;0;false;false;;;;;;
                                  -62828;1;0;false;false;0;0;0;;;
                                  -62829;1;0;false;false;;;;;;
                                  -62830;4;1;false;false;127;0;85;;;
                                  -62834;1;0;false;false;0;0;0;;;
                                  -62835;3;0;false;false;;;;;;
                                  -62838;1;0;false;false;0;0;0;;;
                                  -62839;3;0;false;false;;;;;;
                                  -62842;18;0;false;false;0;0;0;;;
                                  -62860;1;0;false;false;;;;;;
                                  -62861;13;0;false;false;0;0;0;;;
                                  -62874;1;0;false;false;;;;;;
                                  -62875;1;0;false;false;0;0;0;;;
                                  -62876;1;0;false;false;;;;;;
                                  -62877;3;1;false;false;127;0;85;;;
                                  -62880;1;0;false;false;;;;;;
                                  -62881;29;0;false;false;0;0;0;;;
                                  -62910;3;0;false;false;;;;;;
                                  -62913;25;0;false;false;0;0;0;;;
                                  -62938;1;0;false;false;;;;;;
                                  -62939;15;0;false;false;0;0;0;;;
                                  -62954;3;0;false;false;;;;;;
                                  -62957;1;0;false;false;0;0;0;;;
                                  -62958;2;0;false;false;;;;;;
                                  -62960;3;0;false;false;63;95;191;;;
                                  -62963;5;0;false;false;;;;;;
                                  -62968;1;0;false;false;63;95;191;;;
                                  -62969;1;0;false;false;;;;;;
                                  -62970;4;0;false;false;63;95;191;;;
                                  -62974;1;0;false;false;;;;;;
                                  -62975;1;0;false;false;63;95;191;;;
                                  -62976;1;0;false;false;;;;;;
                                  -62977;6;0;false;false;63;95;191;;;
                                  -62983;1;0;false;false;;;;;;
                                  -62984;9;0;false;false;63;95;191;;;
                                  -62993;1;0;false;false;;;;;;
                                  -62994;1;0;false;false;63;95;191;;;
                                  -62995;1;0;false;false;;;;;;
                                  -62996;6;0;false;false;63;95;191;;;
                                  -63002;1;0;false;false;;;;;;
                                  -63003;5;0;false;false;63;95;191;;;
                                  -63008;1;0;false;false;;;;;;
                                  -63009;2;0;false;false;63;95;191;;;
                                  -63011;1;0;false;false;;;;;;
                                  -63012;4;0;false;false;63;95;191;;;
                                  -63016;1;0;false;false;;;;;;
                                  -63017;2;0;false;false;63;95;191;;;
                                  -63019;1;0;false;false;;;;;;
                                  -63020;3;0;false;false;63;95;191;;;
                                  -63023;1;0;false;false;;;;;;
                                  -63024;6;0;false;false;63;95;191;;;
                                  -63030;1;0;false;false;;;;;;
                                  -63031;4;0;false;false;63;95;191;;;
                                  -63035;1;0;false;false;;;;;;
                                  -63036;3;0;false;false;63;95;191;;;
                                  -63039;1;0;false;false;;;;;;
                                  -63040;6;0;false;false;63;95;191;;;
                                  -63046;1;0;false;false;;;;;;
                                  -63047;4;0;false;false;63;95;191;;;
                                  -63051;4;0;false;false;;;;;;
                                  -63055;1;0;false;false;63;95;191;;;
                                  -63056;1;0;false;false;;;;;;
                                  -63057;3;0;false;false;63;95;191;;;
                                  -63060;1;0;false;false;;;;;;
                                  -63061;8;0;false;false;63;95;191;;;
                                  -63069;3;0;false;false;;;;;;
                                  -63072;1;0;false;false;63;95;191;;;
                                  -63073;1;0;false;false;;;;;;
                                  -63074;3;0;false;false;127;127;159;;;
                                  -63077;3;0;false;false;;;;;;
                                  -63080;1;0;false;false;63;95;191;;;
                                  -63081;3;0;false;false;;;;;;
                                  -63084;1;0;false;false;63;95;191;;;
                                  -63085;1;0;false;false;;;;;;
                                  -63086;7;1;false;false;127;159;191;;;
                                  -63093;14;0;false;false;63;95;191;;;
                                  -63107;1;0;false;false;;;;;;
                                  -63108;3;0;false;false;63;95;191;;;
                                  -63111;1;0;false;false;;;;;;
                                  -63112;8;0;false;false;63;95;191;;;
                                  -63120;3;0;false;false;;;;;;
                                  -63123;1;0;false;false;63;95;191;;;
                                  -63124;1;0;false;false;;;;;;
                                  -63125;11;1;false;false;127;159;191;;;
                                  -63136;12;0;false;false;63;95;191;;;
                                  -63148;1;0;false;false;;;;;;
                                  -63149;4;0;false;false;127;127;159;;;
                                  -63153;3;0;false;false;;;;;;
                                  -63156;1;0;false;false;63;95;191;;;
                                  -63157;4;0;false;false;;;;;;
                                  -63161;4;0;false;false;127;127;159;;;
                                  -63165;21;0;false;false;63;95;191;;;
                                  -63186;1;0;false;false;;;;;;
                                  -63187;1;0;false;false;127;127;159;;;
                                  -63188;1;0;false;false;;;;;;
                                  -63189;2;0;false;false;63;95;191;;;
                                  -63191;1;0;false;false;;;;;;
                                  -63192;3;0;false;false;63;95;191;;;
                                  -63195;1;0;false;false;;;;;;
                                  -63196;8;0;false;false;63;95;191;;;
                                  -63204;1;0;false;false;;;;;;
                                  -63205;3;0;false;false;63;95;191;;;
                                  -63208;1;0;false;false;;;;;;
                                  -63209;4;0;false;false;63;95;191;;;
                                  -63213;1;0;false;false;;;;;;
                                  -63214;8;0;false;false;63;95;191;;;
                                  -63222;5;0;false;false;127;127;159;;;
                                  -63227;3;0;false;false;;;;;;
                                  -63230;1;0;false;false;63;95;191;;;
                                  -63231;4;0;false;false;;;;;;
                                  -63235;4;0;false;false;127;127;159;;;
                                  -63239;27;0;false;false;63;95;191;;;
                                  -63266;1;0;false;false;;;;;;
                                  -63267;1;0;false;false;127;127;159;;;
                                  -63268;1;0;false;false;;;;;;
                                  -63269;2;0;false;false;63;95;191;;;
                                  -63271;1;0;false;false;;;;;;
                                  -63272;3;0;false;false;63;95;191;;;
                                  -63275;1;0;false;false;;;;;;
                                  -63276;6;0;false;false;63;95;191;;;
                                  -63282;1;0;false;false;;;;;;
                                  -63283;4;0;false;false;63;95;191;;;
                                  -63287;1;0;false;false;;;;;;
                                  -63288;3;0;false;false;63;95;191;;;
                                  -63291;1;0;false;false;;;;;;
                                  -63292;6;0;false;false;63;95;191;;;
                                  -63298;1;0;false;false;;;;;;
                                  -63299;4;0;false;false;63;95;191;;;
                                  -63303;1;0;false;false;;;;;;
                                  -63304;7;0;false;false;63;95;191;;;
                                  -63311;1;0;false;false;;;;;;
                                  -63312;3;0;false;false;63;95;191;;;
                                  -63315;1;0;false;false;;;;;;
                                  -63316;8;0;false;false;63;95;191;;;
                                  -63324;5;0;false;false;127;127;159;;;
                                  -63329;3;0;false;false;;;;;;
                                  -63332;1;0;false;false;63;95;191;;;
                                  -63333;1;0;false;false;;;;;;
                                  -63334;5;0;false;false;127;127;159;;;
                                  -63339;3;0;false;false;;;;;;
                                  -63342;1;0;false;false;63;95;191;;;
                                  -63343;1;0;false;false;;;;;;
                                  -63344;11;1;false;false;127;159;191;;;
                                  -63355;24;0;false;false;63;95;191;;;
                                  -63379;1;0;false;false;;;;;;
                                  -63380;4;0;false;false;127;127;159;;;
                                  -63384;3;0;false;false;;;;;;
                                  -63387;1;0;false;false;63;95;191;;;
                                  -63388;4;0;false;false;;;;;;
                                  -63392;4;0;false;false;127;127;159;;;
                                  -63396;19;0;false;false;63;95;191;;;
                                  -63415;1;0;false;false;;;;;;
                                  -63416;4;0;false;false;63;95;191;;;
                                  -63420;1;0;false;false;;;;;;
                                  -63421;8;0;false;false;63;95;191;;;
                                  -63429;1;0;false;false;;;;;;
                                  -63430;2;0;false;false;63;95;191;;;
                                  -63432;1;0;false;false;;;;;;
                                  -63433;4;0;false;false;63;95;191;;;
                                  -63437;5;0;false;false;127;127;159;;;
                                  -63442;3;0;false;false;;;;;;
                                  -63445;1;0;false;false;63;95;191;;;
                                  -63446;1;0;false;false;;;;;;
                                  -63447;5;0;false;false;127;127;159;;;
                                  -63452;3;0;false;false;;;;;;
                                  -63455;2;0;false;false;63;95;191;;;
                                  -63457;2;0;false;false;;;;;;
                                  -63459;6;1;false;false;127;0;85;;;
                                  -63465;1;0;false;false;;;;;;
                                  -63466;4;1;false;false;127;0;85;;;
                                  -63470;1;0;false;false;;;;;;
                                  -63471;32;0;false;false;0;0;0;;;
                                  -63503;1;0;false;false;;;;;;
                                  -63504;15;0;false;false;0;0;0;;;
                                  -63519;1;0;false;false;;;;;;
                                  -63520;1;0;false;false;0;0;0;;;
                                  -63521;3;0;false;false;;;;;;
                                  -63524;14;0;false;false;0;0;0;;;
                                  -63538;3;0;false;false;;;;;;
                                  -63541;2;1;false;false;127;0;85;;;
                                  -63543;1;0;false;false;;;;;;
                                  -63544;15;0;false;false;0;0;0;;;
                                  -63559;1;0;false;false;;;;;;
                                  -63560;2;0;false;false;0;0;0;;;
                                  -63562;1;0;false;false;;;;;;
                                  -63563;4;1;false;false;127;0;85;;;
                                  -63567;1;0;false;false;0;0;0;;;
                                  -63568;1;0;false;false;;;;;;
                                  -63569;1;0;false;false;0;0;0;;;
                                  -63570;4;0;false;false;;;;;;
                                  -63574;35;0;false;false;0;0;0;;;
                                  -63609;3;0;false;false;;;;;;
                                  -63612;1;0;false;false;0;0;0;;;
                                  -63613;3;0;false;false;;;;;;
                                  -63616;13;0;false;false;0;0;0;;;
                                  -63629;1;0;false;false;;;;;;
                                  -63630;13;0;false;false;0;0;0;;;
                                  -63643;1;0;false;false;;;;;;
                                  -63644;1;0;false;false;0;0;0;;;
                                  -63645;1;0;false;false;;;;;;
                                  -63646;3;1;false;false;127;0;85;;;
                                  -63649;1;0;false;false;;;;;;
                                  -63650;30;0;false;false;0;0;0;;;
                                  -63680;3;0;false;false;;;;;;
                                  -63683;23;0;false;false;0;0;0;;;
                                  -63706;1;0;false;false;;;;;;
                                  -63707;15;0;false;false;0;0;0;;;
                                  -63722;2;0;false;false;;;;;;
                                  -63724;1;0;false;false;0;0;0;;;
                                  -63725;2;0;false;false;;;;;;
                                  -63727;3;0;false;false;63;95;191;;;
                                  -63730;5;0;false;false;;;;;;
                                  -63735;1;0;false;false;63;95;191;;;
                                  -63736;1;0;false;false;;;;;;
                                  -63737;4;0;false;false;63;95;191;;;
                                  -63741;1;0;false;false;;;;;;
                                  -63742;1;0;false;false;63;95;191;;;
                                  -63743;1;0;false;false;;;;;;
                                  -63744;9;0;false;false;63;95;191;;;
                                  -63753;1;0;false;false;;;;;;
                                  -63754;9;0;false;false;63;95;191;;;
                                  -63763;1;0;false;false;;;;;;
                                  -63764;1;0;false;false;63;95;191;;;
                                  -63765;1;0;false;false;;;;;;
                                  -63766;9;0;false;false;63;95;191;;;
                                  -63775;1;0;false;false;;;;;;
                                  -63776;5;0;false;false;63;95;191;;;
                                  -63781;1;0;false;false;;;;;;
                                  -63782;2;0;false;false;63;95;191;;;
                                  -63784;1;0;false;false;;;;;;
                                  -63785;4;0;false;false;63;95;191;;;
                                  -63789;1;0;false;false;;;;;;
                                  -63790;2;0;false;false;63;95;191;;;
                                  -63792;1;0;false;false;;;;;;
                                  -63793;3;0;false;false;63;95;191;;;
                                  -63796;1;0;false;false;;;;;;
                                  -63797;6;0;false;false;63;95;191;;;
                                  -63803;1;0;false;false;;;;;;
                                  -63804;4;0;false;false;63;95;191;;;
                                  -63808;1;0;false;false;;;;;;
                                  -63809;3;0;false;false;63;95;191;;;
                                  -63812;4;0;false;false;;;;;;
                                  -63816;1;0;false;false;63;95;191;;;
                                  -63817;1;0;false;false;;;;;;
                                  -63818;9;0;false;false;63;95;191;;;
                                  -63827;1;0;false;false;;;;;;
                                  -63828;3;0;false;false;63;95;191;;;
                                  -63831;1;0;false;false;;;;;;
                                  -63832;8;0;false;false;63;95;191;;;
                                  -63840;3;0;false;false;;;;;;
                                  -63843;1;0;false;false;63;95;191;;;
                                  -63844;1;0;false;false;;;;;;
                                  -63845;3;0;false;false;127;127;159;;;
                                  -63848;3;0;false;false;;;;;;
                                  -63851;1;0;false;false;63;95;191;;;
                                  -63852;1;0;false;false;;;;;;
                                  -63853;4;0;false;false;63;95;191;;;
                                  -63857;1;0;false;false;;;;;;
                                  -63858;6;0;false;false;127;127;159;;;
                                  -63864;14;0;false;false;63;95;191;;;
                                  -63878;7;0;false;false;127;127;159;;;
                                  -63885;1;0;false;false;;;;;;
                                  -63886;2;0;false;false;63;95;191;;;
                                  -63888;1;0;false;false;;;;;;
                                  -63889;7;0;false;false;63;95;191;;;
                                  -63896;1;0;false;false;;;;;;
                                  -63897;3;0;false;false;63;95;191;;;
                                  -63900;1;0;false;false;;;;;;
                                  -63901;5;0;false;false;63;95;191;;;
                                  -63906;1;0;false;false;;;;;;
                                  -63907;1;0;false;false;63;95;191;;;
                                  -63908;1;0;false;false;;;;;;
                                  -63909;3;0;false;false;63;95;191;;;
                                  -63912;1;0;false;false;;;;;;
                                  -63913;1;0;false;false;63;95;191;;;
                                  -63914;1;0;false;false;;;;;;
                                  -63915;6;0;false;false;63;95;191;;;
                                  -63921;1;0;false;false;;;;;;
                                  -63922;7;0;false;false;63;95;191;;;
                                  -63929;3;0;false;false;;;;;;
                                  -63932;1;0;false;false;63;95;191;;;
                                  -63933;1;0;false;false;;;;;;
                                  -63934;3;0;false;false;63;95;191;;;
                                  -63937;1;0;false;false;;;;;;
                                  -63938;5;0;false;false;63;95;191;;;
                                  -63943;1;0;false;false;;;;;;
                                  -63944;3;0;false;false;63;95;191;;;
                                  -63947;1;0;false;false;;;;;;
                                  -63948;3;0;false;false;63;95;191;;;
                                  -63951;1;0;false;false;;;;;;
                                  -63952;5;0;false;false;63;95;191;;;
                                  -63957;1;0;false;false;;;;;;
                                  -63958;7;0;false;false;63;95;191;;;
                                  -63965;1;0;false;false;;;;;;
                                  -63966;2;0;false;false;63;95;191;;;
                                  -63968;1;0;false;false;;;;;;
                                  -63969;3;0;false;false;63;95;191;;;
                                  -63972;1;0;false;false;;;;;;
                                  -63973;10;0;false;false;63;95;191;;;
                                  -63983;3;0;false;false;;;;;;
                                  -63986;1;0;false;false;63;95;191;;;
                                  -63987;1;0;false;false;;;;;;
                                  -63988;6;0;false;false;127;127;159;;;
                                  -63994;21;0;false;false;63;95;191;;;
                                  -64015;7;0;false;false;127;127;159;;;
                                  -64022;1;0;false;false;;;;;;
                                  -64023;2;0;false;false;63;95;191;;;
                                  -64025;1;0;false;false;;;;;;
                                  -64026;3;0;false;false;63;95;191;;;
                                  -64029;1;0;false;false;;;;;;
                                  -64030;6;0;false;false;63;95;191;;;
                                  -64036;1;0;false;false;;;;;;
                                  -64037;3;0;false;false;63;95;191;;;
                                  -64040;1;0;false;false;;;;;;
                                  -64041;12;0;false;false;63;95;191;;;
                                  -64053;3;0;false;false;;;;;;
                                  -64056;1;0;false;false;63;95;191;;;
                                  -64057;1;0;false;false;;;;;;
                                  -64058;4;0;false;false;127;127;159;;;
                                  -64062;3;0;false;false;;;;;;
                                  -64065;1;0;false;false;63;95;191;;;
                                  -64066;4;0;false;false;;;;;;
                                  -64070;1;0;false;false;63;95;191;;;
                                  -64071;1;0;false;false;;;;;;
                                  -64072;7;1;false;false;127;159;191;;;
                                  -64079;8;0;false;false;63;95;191;;;
                                  -64087;1;0;false;false;;;;;;
                                  -64088;3;0;false;false;63;95;191;;;
                                  -64091;1;0;false;false;;;;;;
                                  -64092;8;0;false;false;63;95;191;;;
                                  -64100;3;0;false;false;;;;;;
                                  -64103;1;0;false;false;63;95;191;;;
                                  -64104;1;0;false;false;;;;;;
                                  -64105;11;1;false;false;127;159;191;;;
                                  -64116;12;0;false;false;63;95;191;;;
                                  -64128;1;0;false;false;;;;;;
                                  -64129;4;0;false;false;127;127;159;;;
                                  -64133;3;0;false;false;;;;;;
                                  -64136;1;0;false;false;63;95;191;;;
                                  -64137;4;0;false;false;;;;;;
                                  -64141;4;0;false;false;127;127;159;;;
                                  -64145;21;0;false;false;63;95;191;;;
                                  -64166;1;0;false;false;;;;;;
                                  -64167;1;0;false;false;127;127;159;;;
                                  -64168;1;0;false;false;;;;;;
                                  -64169;2;0;false;false;63;95;191;;;
                                  -64171;1;0;false;false;;;;;;
                                  -64172;3;0;false;false;63;95;191;;;
                                  -64175;1;0;false;false;;;;;;
                                  -64176;8;0;false;false;63;95;191;;;
                                  -64184;1;0;false;false;;;;;;
                                  -64185;3;0;false;false;63;95;191;;;
                                  -64188;1;0;false;false;;;;;;
                                  -64189;4;0;false;false;63;95;191;;;
                                  -64193;1;0;false;false;;;;;;
                                  -64194;8;0;false;false;63;95;191;;;
                                  -64202;5;0;false;false;127;127;159;;;
                                  -64207;3;0;false;false;;;;;;
                                  -64210;1;0;false;false;63;95;191;;;
                                  -64211;4;0;false;false;;;;;;
                                  -64215;4;0;false;false;127;127;159;;;
                                  -64219;27;0;false;false;63;95;191;;;
                                  -64246;1;0;false;false;;;;;;
                                  -64247;1;0;false;false;127;127;159;;;
                                  -64248;1;0;false;false;;;;;;
                                  -64249;2;0;false;false;63;95;191;;;
                                  -64251;1;0;false;false;;;;;;
                                  -64252;3;0;false;false;63;95;191;;;
                                  -64255;1;0;false;false;;;;;;
                                  -64256;6;0;false;false;63;95;191;;;
                                  -64262;1;0;false;false;;;;;;
                                  -64263;4;0;false;false;63;95;191;;;
                                  -64267;1;0;false;false;;;;;;
                                  -64268;3;0;false;false;63;95;191;;;
                                  -64271;1;0;false;false;;;;;;
                                  -64272;6;0;false;false;63;95;191;;;
                                  -64278;1;0;false;false;;;;;;
                                  -64279;4;0;false;false;63;95;191;;;
                                  -64283;1;0;false;false;;;;;;
                                  -64284;7;0;false;false;63;95;191;;;
                                  -64291;1;0;false;false;;;;;;
                                  -64292;3;0;false;false;63;95;191;;;
                                  -64295;1;0;false;false;;;;;;
                                  -64296;8;0;false;false;63;95;191;;;
                                  -64304;5;0;false;false;127;127;159;;;
                                  -64309;3;0;false;false;;;;;;
                                  -64312;1;0;false;false;63;95;191;;;
                                  -64313;1;0;false;false;;;;;;
                                  -64314;5;0;false;false;127;127;159;;;
                                  -64319;3;0;false;false;;;;;;
                                  -64322;1;0;false;false;63;95;191;;;
                                  -64323;1;0;false;false;;;;;;
                                  -64324;11;1;false;false;127;159;191;;;
                                  -64335;24;0;false;false;63;95;191;;;
                                  -64359;1;0;false;false;;;;;;
                                  -64360;4;0;false;false;127;127;159;;;
                                  -64364;3;0;false;false;;;;;;
                                  -64367;1;0;false;false;63;95;191;;;
                                  -64368;4;0;false;false;;;;;;
                                  -64372;4;0;false;false;127;127;159;;;
                                  -64376;19;0;false;false;63;95;191;;;
                                  -64395;1;0;false;false;;;;;;
                                  -64396;4;0;false;false;63;95;191;;;
                                  -64400;1;0;false;false;;;;;;
                                  -64401;8;0;false;false;63;95;191;;;
                                  -64409;1;0;false;false;;;;;;
                                  -64410;2;0;false;false;63;95;191;;;
                                  -64412;1;0;false;false;;;;;;
                                  -64413;4;0;false;false;63;95;191;;;
                                  -64417;5;0;false;false;127;127;159;;;
                                  -64422;3;0;false;false;;;;;;
                                  -64425;1;0;false;false;63;95;191;;;
                                  -64426;1;0;false;false;;;;;;
                                  -64427;5;0;false;false;127;127;159;;;
                                  -64432;3;0;false;false;;;;;;
                                  -64435;2;0;false;false;63;95;191;;;
                                  -64437;2;0;false;false;;;;;;
                                  -64439;6;1;false;false;127;0;85;;;
                                  -64445;1;0;false;false;;;;;;
                                  -64446;4;1;false;false;127;0;85;;;
                                  -64450;1;0;false;false;;;;;;
                                  -64451;38;0;false;false;0;0;0;;;
                                  -64489;1;0;false;false;;;;;;
                                  -64490;9;0;false;false;0;0;0;;;
                                  -64499;1;0;false;false;;;;;;
                                  -64500;1;0;false;false;0;0;0;;;
                                  -64501;3;0;false;false;;;;;;
                                  -64504;14;0;false;false;0;0;0;;;
                                  -64518;3;0;false;false;;;;;;
                                  -64521;2;1;false;false;127;0;85;;;
                                  -64523;1;0;false;false;;;;;;
                                  -64524;9;0;false;false;0;0;0;;;
                                  -64533;1;0;false;false;;;;;;
                                  -64534;2;0;false;false;0;0;0;;;
                                  -64536;1;0;false;false;;;;;;
                                  -64537;4;1;false;false;127;0;85;;;
                                  -64541;1;0;false;false;0;0;0;;;
                                  -64542;1;0;false;false;;;;;;
                                  -64543;1;0;false;false;0;0;0;;;
                                  -64544;4;0;false;false;;;;;;
                                  -64548;35;0;false;false;0;0;0;;;
                                  -64583;3;0;false;false;;;;;;
                                  -64586;1;0;false;false;0;0;0;;;
                                  -64587;3;0;false;false;;;;;;
                                  -64590;13;0;false;false;0;0;0;;;
                                  -64603;1;0;false;false;;;;;;
                                  -64604;13;0;false;false;0;0;0;;;
                                  -64617;1;0;false;false;;;;;;
                                  -64618;1;0;false;false;0;0;0;;;
                                  -64619;1;0;false;false;;;;;;
                                  -64620;3;1;false;false;127;0;85;;;
                                  -64623;1;0;false;false;;;;;;
                                  -64624;24;0;false;false;0;0;0;;;
                                  -64648;3;0;false;false;;;;;;
                                  -64651;26;0;false;false;0;0;0;;;
                                  -64677;1;0;false;false;;;;;;
                                  -64678;15;0;false;false;0;0;0;;;
                                  -64693;3;0;false;false;;;;;;
                                  -64696;1;0;false;false;0;0;0;;;
                                  -64697;2;0;false;false;;;;;;
                                  -64699;3;0;false;false;63;95;191;;;
                                  -64702;5;0;false;false;;;;;;
                                  -64707;1;0;false;false;63;95;191;;;
                                  -64708;1;0;false;false;;;;;;
                                  -64709;4;0;false;false;63;95;191;;;
                                  -64713;1;0;false;false;;;;;;
                                  -64714;1;0;false;false;63;95;191;;;
                                  -64715;1;0;false;false;;;;;;
                                  -64716;6;0;false;false;63;95;191;;;
                                  -64722;1;0;false;false;;;;;;
                                  -64723;3;0;false;false;63;95;191;;;
                                  -64726;1;0;false;false;;;;;;
                                  -64727;9;0;false;false;63;95;191;;;
                                  -64736;1;0;false;false;;;;;;
                                  -64737;1;0;false;false;63;95;191;;;
                                  -64738;1;0;false;false;;;;;;
                                  -64739;9;0;false;false;63;95;191;;;
                                  -64748;1;0;false;false;;;;;;
                                  -64749;5;0;false;false;63;95;191;;;
                                  -64754;1;0;false;false;;;;;;
                                  -64755;2;0;false;false;63;95;191;;;
                                  -64757;1;0;false;false;;;;;;
                                  -64758;4;0;false;false;63;95;191;;;
                                  -64762;1;0;false;false;;;;;;
                                  -64763;2;0;false;false;63;95;191;;;
                                  -64765;1;0;false;false;;;;;;
                                  -64766;3;0;false;false;63;95;191;;;
                                  -64769;1;0;false;false;;;;;;
                                  -64770;6;0;false;false;63;95;191;;;
                                  -64776;1;0;false;false;;;;;;
                                  -64777;4;0;false;false;63;95;191;;;
                                  -64781;1;0;false;false;;;;;;
                                  -64782;1;0;false;false;63;95;191;;;
                                  -64783;1;0;false;false;;;;;;
                                  -64784;3;0;false;false;63;95;191;;;
                                  -64787;4;0;false;false;;;;;;
                                  -64791;1;0;false;false;63;95;191;;;
                                  -64792;1;0;false;false;;;;;;
                                  -64793;2;0;false;false;63;95;191;;;
                                  -64795;1;0;false;false;;;;;;
                                  -64796;8;0;false;false;63;95;191;;;
                                  -64804;1;0;false;false;;;;;;
                                  -64805;3;0;false;false;63;95;191;;;
                                  -64808;1;0;false;false;;;;;;
                                  -64809;6;0;false;false;63;95;191;;;
                                  -64815;1;0;false;false;;;;;;
                                  -64816;7;0;false;false;63;95;191;;;
                                  -64823;1;0;false;false;;;;;;
                                  -64824;3;0;false;false;63;95;191;;;
                                  -64827;1;0;false;false;;;;;;
                                  -64828;3;0;false;false;63;95;191;;;
                                  -64831;1;0;false;false;;;;;;
                                  -64832;5;0;false;false;63;95;191;;;
                                  -64837;1;0;false;false;;;;;;
                                  -64838;2;0;false;false;63;95;191;;;
                                  -64840;1;0;false;false;;;;;;
                                  -64841;3;0;false;false;63;95;191;;;
                                  -64844;1;0;false;false;;;;;;
                                  -64845;8;0;false;false;63;95;191;;;
                                  -64853;1;0;false;false;;;;;;
                                  -64854;4;0;false;false;63;95;191;;;
                                  -64858;1;0;false;false;;;;;;
                                  -64859;3;0;false;false;63;95;191;;;
                                  -64862;1;0;false;false;;;;;;
                                  -64863;4;0;false;false;63;95;191;;;
                                  -64867;1;0;false;false;;;;;;
                                  -64868;5;0;false;false;63;95;191;;;
                                  -64873;4;0;false;false;;;;;;
                                  -64877;1;0;false;false;63;95;191;;;
                                  -64878;1;0;false;false;;;;;;
                                  -64879;2;0;false;false;63;95;191;;;
                                  -64881;1;0;false;false;;;;;;
                                  -64882;3;0;false;false;63;95;191;;;
                                  -64885;1;0;false;false;;;;;;
                                  -64886;5;0;false;false;63;95;191;;;
                                  -64891;1;0;false;false;;;;;;
                                  -64892;2;0;false;false;63;95;191;;;
                                  -64894;1;0;false;false;;;;;;
                                  -64895;6;0;false;false;63;95;191;;;
                                  -64901;4;0;false;false;;;;;;
                                  -64905;1;0;false;false;63;95;191;;;
                                  -64906;1;0;false;false;;;;;;
                                  -64907;3;0;false;false;127;127;159;;;
                                  -64910;3;0;false;false;;;;;;
                                  -64913;1;0;false;false;63;95;191;;;
                                  -64914;3;0;false;false;;;;;;
                                  -64917;1;0;false;false;63;95;191;;;
                                  -64918;1;0;false;false;;;;;;
                                  -64919;7;1;false;false;127;159;191;;;
                                  -64926;8;0;false;false;63;95;191;;;
                                  -64934;1;0;false;false;;;;;;
                                  -64935;3;0;false;false;63;95;191;;;
                                  -64938;1;0;false;false;;;;;;
                                  -64939;8;0;false;false;63;95;191;;;
                                  -64947;3;0;false;false;;;;;;
                                  -64950;1;0;false;false;63;95;191;;;
                                  -64951;1;0;false;false;;;;;;
                                  -64952;11;1;false;false;127;159;191;;;
                                  -64963;12;0;false;false;63;95;191;;;
                                  -64975;1;0;false;false;;;;;;
                                  -64976;4;0;false;false;127;127;159;;;
                                  -64980;3;0;false;false;;;;;;
                                  -64983;1;0;false;false;63;95;191;;;
                                  -64984;4;0;false;false;;;;;;
                                  -64988;4;0;false;false;127;127;159;;;
                                  -64992;21;0;false;false;63;95;191;;;
                                  -65013;1;0;false;false;;;;;;
                                  -65014;1;0;false;false;127;127;159;;;
                                  -65015;1;0;false;false;;;;;;
                                  -65016;2;0;false;false;63;95;191;;;
                                  -65018;1;0;false;false;;;;;;
                                  -65019;3;0;false;false;63;95;191;;;
                                  -65022;1;0;false;false;;;;;;
                                  -65023;8;0;false;false;63;95;191;;;
                                  -65031;1;0;false;false;;;;;;
                                  -65032;3;0;false;false;63;95;191;;;
                                  -65035;1;0;false;false;;;;;;
                                  -65036;4;0;false;false;63;95;191;;;
                                  -65040;1;0;false;false;;;;;;
                                  -65041;8;0;false;false;63;95;191;;;
                                  -65049;5;0;false;false;127;127;159;;;
                                  -65054;3;0;false;false;;;;;;
                                  -65057;1;0;false;false;63;95;191;;;
                                  -65058;4;0;false;false;;;;;;
                                  -65062;4;0;false;false;127;127;159;;;
                                  -65066;27;0;false;false;63;95;191;;;
                                  -65093;1;0;false;false;;;;;;
                                  -65094;1;0;false;false;127;127;159;;;
                                  -65095;1;0;false;false;;;;;;
                                  -65096;2;0;false;false;63;95;191;;;
                                  -65098;1;0;false;false;;;;;;
                                  -65099;3;0;false;false;63;95;191;;;
                                  -65102;1;0;false;false;;;;;;
                                  -65103;6;0;false;false;63;95;191;;;
                                  -65109;1;0;false;false;;;;;;
                                  -65110;4;0;false;false;63;95;191;;;
                                  -65114;1;0;false;false;;;;;;
                                  -65115;3;0;false;false;63;95;191;;;
                                  -65118;1;0;false;false;;;;;;
                                  -65119;6;0;false;false;63;95;191;;;
                                  -65125;1;0;false;false;;;;;;
                                  -65126;4;0;false;false;63;95;191;;;
                                  -65130;1;0;false;false;;;;;;
                                  -65131;7;0;false;false;63;95;191;;;
                                  -65138;1;0;false;false;;;;;;
                                  -65139;3;0;false;false;63;95;191;;;
                                  -65142;1;0;false;false;;;;;;
                                  -65143;8;0;false;false;63;95;191;;;
                                  -65151;5;0;false;false;127;127;159;;;
                                  -65156;3;0;false;false;;;;;;
                                  -65159;1;0;false;false;63;95;191;;;
                                  -65160;1;0;false;false;;;;;;
                                  -65161;5;0;false;false;127;127;159;;;
                                  -65166;3;0;false;false;;;;;;
                                  -65169;1;0;false;false;63;95;191;;;
                                  -65170;1;0;false;false;;;;;;
                                  -65171;11;1;false;false;127;159;191;;;
                                  -65182;24;0;false;false;63;95;191;;;
                                  -65206;1;0;false;false;;;;;;
                                  -65207;4;0;false;false;127;127;159;;;
                                  -65211;3;0;false;false;;;;;;
                                  -65214;1;0;false;false;63;95;191;;;
                                  -65215;4;0;false;false;;;;;;
                                  -65219;4;0;false;false;127;127;159;;;
                                  -65223;19;0;false;false;63;95;191;;;
                                  -65242;1;0;false;false;;;;;;
                                  -65243;4;0;false;false;63;95;191;;;
                                  -65247;1;0;false;false;;;;;;
                                  -65248;8;0;false;false;63;95;191;;;
                                  -65256;1;0;false;false;;;;;;
                                  -65257;2;0;false;false;63;95;191;;;
                                  -65259;1;0;false;false;;;;;;
                                  -65260;4;0;false;false;63;95;191;;;
                                  -65264;5;0;false;false;127;127;159;;;
                                  -65269;3;0;false;false;;;;;;
                                  -65272;1;0;false;false;63;95;191;;;
                                  -65273;1;0;false;false;;;;;;
                                  -65274;5;0;false;false;127;127;159;;;
                                  -65279;3;0;false;false;;;;;;
                                  -65282;2;0;false;false;63;95;191;;;
                                  -65284;2;0;false;false;;;;;;
                                  -65286;6;1;false;false;127;0;85;;;
                                  -65292;1;0;false;false;;;;;;
                                  -65293;4;1;false;false;127;0;85;;;
                                  -65297;1;0;false;false;;;;;;
                                  -65298;38;0;false;false;0;0;0;;;
                                  -65336;1;0;false;false;;;;;;
                                  -65337;9;0;false;false;0;0;0;;;
                                  -65346;1;0;false;false;;;;;;
                                  -65347;1;0;false;false;0;0;0;;;
                                  -65348;3;0;false;false;;;;;;
                                  -65351;14;0;false;false;0;0;0;;;
                                  -65365;3;0;false;false;;;;;;
                                  -65368;2;1;false;false;127;0;85;;;
                                  -65370;1;0;false;false;;;;;;
                                  -65371;9;0;false;false;0;0;0;;;
                                  -65380;1;0;false;false;;;;;;
                                  -65381;2;0;false;false;0;0;0;;;
                                  -65383;1;0;false;false;;;;;;
                                  -65384;4;1;false;false;127;0;85;;;
                                  -65388;1;0;false;false;0;0;0;;;
                                  -65389;1;0;false;false;;;;;;
                                  -65390;1;0;false;false;0;0;0;;;
                                  -65391;4;0;false;false;;;;;;
                                  -65395;35;0;false;false;0;0;0;;;
                                  -65430;3;0;false;false;;;;;;
                                  -65433;1;0;false;false;0;0;0;;;
                                  -65434;3;0;false;false;;;;;;
                                  -65437;18;0;false;false;0;0;0;;;
                                  -65455;1;0;false;false;;;;;;
                                  -65456;13;0;false;false;0;0;0;;;
                                  -65469;1;0;false;false;;;;;;
                                  -65470;1;0;false;false;0;0;0;;;
                                  -65471;1;0;false;false;;;;;;
                                  -65472;3;1;false;false;127;0;85;;;
                                  -65475;1;0;false;false;;;;;;
                                  -65476;29;0;false;false;0;0;0;;;
                                  -65505;3;0;false;false;;;;;;
                                  -65508;22;0;false;false;0;0;0;;;
                                  -65530;1;0;false;false;;;;;;
                                  -65531;15;0;false;false;0;0;0;;;
                                  -65546;3;0;false;false;;;;;;
                                  -65549;1;0;false;false;0;0;0;;;
                                  -65550;2;0;false;false;;;;;;
                                  -65552;3;0;false;false;63;95;191;;;
                                  -65555;5;0;false;false;;;;;;
                                  -65560;1;0;false;false;63;95;191;;;
                                  -65561;1;0;false;false;;;;;;
                                  -65562;4;0;false;false;63;95;191;;;
                                  -65566;1;0;false;false;;;;;;
                                  -65567;1;0;false;false;63;95;191;;;
                                  -65568;1;0;false;false;;;;;;
                                  -65569;6;0;false;false;63;95;191;;;
                                  -65575;1;0;false;false;;;;;;
                                  -65576;9;0;false;false;63;95;191;;;
                                  -65585;1;0;false;false;;;;;;
                                  -65586;1;0;false;false;63;95;191;;;
                                  -65587;1;0;false;false;;;;;;
                                  -65588;6;0;false;false;63;95;191;;;
                                  -65594;1;0;false;false;;;;;;
                                  -65595;5;0;false;false;63;95;191;;;
                                  -65600;1;0;false;false;;;;;;
                                  -65601;2;0;false;false;63;95;191;;;
                                  -65603;1;0;false;false;;;;;;
                                  -65604;4;0;false;false;63;95;191;;;
                                  -65608;1;0;false;false;;;;;;
                                  -65609;2;0;false;false;63;95;191;;;
                                  -65611;1;0;false;false;;;;;;
                                  -65612;3;0;false;false;63;95;191;;;
                                  -65615;1;0;false;false;;;;;;
                                  -65616;6;0;false;false;63;95;191;;;
                                  -65622;1;0;false;false;;;;;;
                                  -65623;4;0;false;false;63;95;191;;;
                                  -65627;1;0;false;false;;;;;;
                                  -65628;3;0;false;false;63;95;191;;;
                                  -65631;1;0;false;false;;;;;;
                                  -65632;6;0;false;false;63;95;191;;;
                                  -65638;1;0;false;false;;;;;;
                                  -65639;4;0;false;false;63;95;191;;;
                                  -65643;4;0;false;false;;;;;;
                                  -65647;1;0;false;false;63;95;191;;;
                                  -65648;1;0;false;false;;;;;;
                                  -65649;2;0;false;false;63;95;191;;;
                                  -65651;1;0;false;false;;;;;;
                                  -65652;5;0;false;false;63;95;191;;;
                                  -65657;1;0;false;false;;;;;;
                                  -65658;2;0;false;false;63;95;191;;;
                                  -65660;1;0;false;false;;;;;;
                                  -65661;7;0;false;false;63;95;191;;;
                                  -65668;1;0;false;false;;;;;;
                                  -65669;3;0;false;false;63;95;191;;;
                                  -65672;1;0;false;false;;;;;;
                                  -65673;8;0;false;false;63;95;191;;;
                                  -65681;1;0;false;false;;;;;;
                                  -65682;3;0;false;false;63;95;191;;;
                                  -65685;1;0;false;false;;;;;;
                                  -65686;3;0;false;false;63;95;191;;;
                                  -65689;1;0;false;false;;;;;;
                                  -65690;3;0;false;false;63;95;191;;;
                                  -65693;1;0;false;false;;;;;;
                                  -65694;5;0;false;false;63;95;191;;;
                                  -65699;1;0;false;false;;;;;;
                                  -65700;4;0;false;false;63;95;191;;;
                                  -65704;1;0;false;false;;;;;;
                                  -65705;3;0;false;false;63;95;191;;;
                                  -65708;1;0;false;false;;;;;;
                                  -65709;3;0;false;false;63;95;191;;;
                                  -65712;1;0;false;false;;;;;;
                                  -65713;4;0;false;false;63;95;191;;;
                                  -65717;1;0;false;false;;;;;;
                                  -65718;5;0;false;false;63;95;191;;;
                                  -65723;1;0;false;false;;;;;;
                                  -65724;2;0;false;false;63;95;191;;;
                                  -65726;4;0;false;false;;;;;;
                                  -65730;1;0;false;false;63;95;191;;;
                                  -65731;1;0;false;false;;;;;;
                                  -65732;6;0;false;false;63;95;191;;;
                                  -65738;1;0;false;false;;;;;;
                                  -65739;3;0;false;false;63;95;191;;;
                                  -65742;1;0;false;false;;;;;;
                                  -65743;4;0;false;false;63;95;191;;;
                                  -65747;1;0;false;false;;;;;;
                                  -65748;4;0;false;false;63;95;191;;;
                                  -65752;1;0;false;false;;;;;;
                                  -65753;2;0;false;false;63;95;191;;;
                                  -65755;1;0;false;false;;;;;;
                                  -65756;3;0;false;false;63;95;191;;;
                                  -65759;1;0;false;false;;;;;;
                                  -65760;2;0;false;false;63;95;191;;;
                                  -65762;1;0;false;false;;;;;;
                                  -65763;3;0;false;false;63;95;191;;;
                                  -65766;1;0;false;false;;;;;;
                                  -65767;6;0;false;false;63;95;191;;;
                                  -65773;1;0;false;false;;;;;;
                                  -65774;2;0;false;false;63;95;191;;;
                                  -65776;1;0;false;false;;;;;;
                                  -65777;2;0;false;false;63;95;191;;;
                                  -65779;1;0;false;false;;;;;;
                                  -65780;5;0;false;false;63;95;191;;;
                                  -65785;1;0;false;false;;;;;;
                                  -65786;3;0;false;false;63;95;191;;;
                                  -65789;1;0;false;false;;;;;;
                                  -65790;6;0;false;false;63;95;191;;;
                                  -65796;1;0;false;false;;;;;;
                                  -65797;2;0;false;false;63;95;191;;;
                                  -65799;1;0;false;false;;;;;;
                                  -65800;6;0;false;false;63;95;191;;;
                                  -65806;1;0;false;false;;;;;;
                                  -65807;3;0;false;false;63;95;191;;;
                                  -65810;4;0;false;false;;;;;;
                                  -65814;1;0;false;false;63;95;191;;;
                                  -65815;1;0;false;false;;;;;;
                                  -65816;4;0;false;false;63;95;191;;;
                                  -65820;1;0;false;false;;;;;;
                                  -65821;7;0;false;false;63;95;191;;;
                                  -65828;3;0;false;false;;;;;;
                                  -65831;1;0;false;false;63;95;191;;;
                                  -65832;1;0;false;false;;;;;;
                                  -65833;3;0;false;false;127;127;159;;;
                                  -65836;3;0;false;false;;;;;;
                                  -65839;1;0;false;false;63;95;191;;;
                                  -65840;3;0;false;false;;;;;;
                                  -65843;1;0;false;false;63;95;191;;;
                                  -65844;1;0;false;false;;;;;;
                                  -65845;7;1;false;false;127;159;191;;;
                                  -65852;14;0;false;false;63;95;191;;;
                                  -65866;1;0;false;false;;;;;;
                                  -65867;3;0;false;false;63;95;191;;;
                                  -65870;1;0;false;false;;;;;;
                                  -65871;8;0;false;false;63;95;191;;;
                                  -65879;3;0;false;false;;;;;;
                                  -65882;1;0;false;false;63;95;191;;;
                                  -65883;1;0;false;false;;;;;;
                                  -65884;11;1;false;false;127;159;191;;;
                                  -65895;12;0;false;false;63;95;191;;;
                                  -65907;1;0;false;false;;;;;;
                                  -65908;4;0;false;false;127;127;159;;;
                                  -65912;3;0;false;false;;;;;;
                                  -65915;1;0;false;false;63;95;191;;;
                                  -65916;4;0;false;false;;;;;;
                                  -65920;4;0;false;false;127;127;159;;;
                                  -65924;21;0;false;false;63;95;191;;;
                                  -65945;1;0;false;false;;;;;;
                                  -65946;1;0;false;false;127;127;159;;;
                                  -65947;1;0;false;false;;;;;;
                                  -65948;2;0;false;false;63;95;191;;;
                                  -65950;1;0;false;false;;;;;;
                                  -65951;3;0;false;false;63;95;191;;;
                                  -65954;1;0;false;false;;;;;;
                                  -65955;8;0;false;false;63;95;191;;;
                                  -65963;1;0;false;false;;;;;;
                                  -65964;3;0;false;false;63;95;191;;;
                                  -65967;1;0;false;false;;;;;;
                                  -65968;4;0;false;false;63;95;191;;;
                                  -65972;1;0;false;false;;;;;;
                                  -65973;8;0;false;false;63;95;191;;;
                                  -65981;5;0;false;false;127;127;159;;;
                                  -65986;3;0;false;false;;;;;;
                                  -65989;1;0;false;false;63;95;191;;;
                                  -65990;4;0;false;false;;;;;;
                                  -65994;4;0;false;false;127;127;159;;;
                                  -65998;27;0;false;false;63;95;191;;;
                                  -66025;1;0;false;false;;;;;;
                                  -66026;1;0;false;false;127;127;159;;;
                                  -66027;1;0;false;false;;;;;;
                                  -66028;2;0;false;false;63;95;191;;;
                                  -66030;1;0;false;false;;;;;;
                                  -66031;3;0;false;false;63;95;191;;;
                                  -66034;1;0;false;false;;;;;;
                                  -66035;6;0;false;false;63;95;191;;;
                                  -66041;1;0;false;false;;;;;;
                                  -66042;4;0;false;false;63;95;191;;;
                                  -66046;1;0;false;false;;;;;;
                                  -66047;3;0;false;false;63;95;191;;;
                                  -66050;1;0;false;false;;;;;;
                                  -66051;6;0;false;false;63;95;191;;;
                                  -66057;1;0;false;false;;;;;;
                                  -66058;4;0;false;false;63;95;191;;;
                                  -66062;1;0;false;false;;;;;;
                                  -66063;7;0;false;false;63;95;191;;;
                                  -66070;1;0;false;false;;;;;;
                                  -66071;3;0;false;false;63;95;191;;;
                                  -66074;1;0;false;false;;;;;;
                                  -66075;8;0;false;false;63;95;191;;;
                                  -66083;5;0;false;false;127;127;159;;;
                                  -66088;3;0;false;false;;;;;;
                                  -66091;1;0;false;false;63;95;191;;;
                                  -66092;1;0;false;false;;;;;;
                                  -66093;5;0;false;false;127;127;159;;;
                                  -66098;3;0;false;false;;;;;;
                                  -66101;1;0;false;false;63;95;191;;;
                                  -66102;1;0;false;false;;;;;;
                                  -66103;11;1;false;false;127;159;191;;;
                                  -66114;24;0;false;false;63;95;191;;;
                                  -66138;1;0;false;false;;;;;;
                                  -66139;4;0;false;false;127;127;159;;;
                                  -66143;3;0;false;false;;;;;;
                                  -66146;1;0;false;false;63;95;191;;;
                                  -66147;4;0;false;false;;;;;;
                                  -66151;4;0;false;false;127;127;159;;;
                                  -66155;19;0;false;false;63;95;191;;;
                                  -66174;1;0;false;false;;;;;;
                                  -66175;4;0;false;false;63;95;191;;;
                                  -66179;1;0;false;false;;;;;;
                                  -66180;8;0;false;false;63;95;191;;;
                                  -66188;1;0;false;false;;;;;;
                                  -66189;2;0;false;false;63;95;191;;;
                                  -66191;1;0;false;false;;;;;;
                                  -66192;4;0;false;false;63;95;191;;;
                                  -66196;5;0;false;false;127;127;159;;;
                                  -66201;3;0;false;false;;;;;;
                                  -66204;1;0;false;false;63;95;191;;;
                                  -66205;1;0;false;false;;;;;;
                                  -66206;5;0;false;false;127;127;159;;;
                                  -66211;3;0;false;false;;;;;;
                                  -66214;2;0;false;false;63;95;191;;;
                                  -66216;2;0;false;false;;;;;;
                                  -66218;6;1;false;false;127;0;85;;;
                                  -66224;1;0;false;false;;;;;;
                                  -66225;4;1;false;false;127;0;85;;;
                                  -66229;1;0;false;false;;;;;;
                                  -66230;32;0;false;false;0;0;0;;;
                                  -66262;1;0;false;false;;;;;;
                                  -66263;15;0;false;false;0;0;0;;;
                                  -66278;1;0;false;false;;;;;;
                                  -66279;1;0;false;false;0;0;0;;;
                                  -66280;3;0;false;false;;;;;;
                                  -66283;14;0;false;false;0;0;0;;;
                                  -66297;3;0;false;false;;;;;;
                                  -66300;2;1;false;false;127;0;85;;;
                                  -66302;1;0;false;false;;;;;;
                                  -66303;15;0;false;false;0;0;0;;;
                                  -66318;1;0;false;false;;;;;;
                                  -66319;2;0;false;false;0;0;0;;;
                                  -66321;1;0;false;false;;;;;;
                                  -66322;4;1;false;false;127;0;85;;;
                                  -66326;1;0;false;false;0;0;0;;;
                                  -66327;1;0;false;false;;;;;;
                                  -66328;1;0;false;false;0;0;0;;;
                                  -66329;4;0;false;false;;;;;;
                                  -66333;35;0;false;false;0;0;0;;;
                                  -66368;3;0;false;false;;;;;;
                                  -66371;1;0;false;false;0;0;0;;;
                                  -66372;3;0;false;false;;;;;;
                                  -66375;13;0;false;false;0;0;0;;;
                                  -66388;1;0;false;false;;;;;;
                                  -66389;13;0;false;false;0;0;0;;;
                                  -66402;1;0;false;false;;;;;;
                                  -66403;1;0;false;false;0;0;0;;;
                                  -66404;1;0;false;false;;;;;;
                                  -66405;3;1;false;false;127;0;85;;;
                                  -66408;1;0;false;false;;;;;;
                                  -66409;30;0;false;false;0;0;0;;;
                                  -66439;3;0;false;false;;;;;;
                                  -66442;23;0;false;false;0;0;0;;;
                                  -66465;1;0;false;false;;;;;;
                                  -66466;15;0;false;false;0;0;0;;;
                                  -66481;2;0;false;false;;;;;;
                                  -66483;1;0;false;false;0;0;0;;;
                                  -66484;2;0;false;false;;;;;;
                                  -66486;3;0;false;false;63;95;191;;;
                                  -66489;4;0;false;false;;;;;;
                                  -66493;1;0;false;false;63;95;191;;;
                                  -66494;1;0;false;false;;;;;;
                                  -66495;7;0;false;false;63;95;191;;;
                                  -66502;1;0;false;false;;;;;;
                                  -66503;1;0;false;false;63;95;191;;;
                                  -66504;1;0;false;false;;;;;;
                                  -66505;6;0;false;false;63;95;191;;;
                                  -66511;1;0;false;false;;;;;;
                                  -66512;2;0;false;false;63;95;191;;;
                                  -66514;1;0;false;false;;;;;;
                                  -66515;3;0;false;false;63;95;191;;;
                                  -66518;1;0;false;false;;;;;;
                                  -66519;4;0;false;false;63;95;191;;;
                                  -66523;1;0;false;false;;;;;;
                                  -66524;2;0;false;false;63;95;191;;;
                                  -66526;1;0;false;false;;;;;;
                                  -66527;3;0;false;false;63;95;191;;;
                                  -66530;1;0;false;false;;;;;;
                                  -66531;3;0;false;false;63;95;191;;;
                                  -66534;1;0;false;false;;;;;;
                                  -66535;2;0;false;false;63;95;191;;;
                                  -66537;1;0;false;false;;;;;;
                                  -66538;3;0;false;false;63;95;191;;;
                                  -66541;1;0;false;false;;;;;;
                                  -66542;7;0;false;false;63;95;191;;;
                                  -66549;3;0;false;false;;;;;;
                                  -66552;1;0;false;false;63;95;191;;;
                                  -66553;1;0;false;false;;;;;;
                                  -66554;3;0;false;false;127;127;159;;;
                                  -66557;3;0;false;false;;;;;;
                                  -66560;1;0;false;false;63;95;191;;;
                                  -66561;3;0;false;false;;;;;;
                                  -66564;1;0;false;false;63;95;191;;;
                                  -66565;1;0;false;false;;;;;;
                                  -66566;7;1;false;false;127;159;191;;;
                                  -66573;6;0;false;false;63;95;191;;;
                                  -66579;1;0;false;false;;;;;;
                                  -66580;3;0;false;false;63;95;191;;;
                                  -66583;1;0;false;false;;;;;;
                                  -66584;6;0;false;false;63;95;191;;;
                                  -66590;1;0;false;false;;;;;;
                                  -66591;2;0;false;false;63;95;191;;;
                                  -66593;1;0;false;false;;;;;;
                                  -66594;2;0;false;false;63;95;191;;;
                                  -66596;1;0;false;false;;;;;;
                                  -66597;8;0;false;false;63;95;191;;;
                                  -66605;3;0;false;false;;;;;;
                                  -66608;1;0;false;false;63;95;191;;;
                                  -66609;1;0;false;false;;;;;;
                                  -66610;5;1;false;false;127;159;191;;;
                                  -66615;33;0;false;false;63;95;191;;;
                                  -66648;3;0;false;false;;;;;;
                                  -66651;1;0;false;false;63;95;191;;;
                                  -66652;1;0;false;false;;;;;;
                                  -66653;11;1;false;false;127;159;191;;;
                                  -66664;12;0;false;false;63;95;191;;;
                                  -66676;1;0;false;false;;;;;;
                                  -66677;4;0;false;false;127;127;159;;;
                                  -66681;3;0;false;false;;;;;;
                                  -66684;1;0;false;false;63;95;191;;;
                                  -66685;4;0;false;false;;;;;;
                                  -66689;4;0;false;false;127;127;159;;;
                                  -66693;21;0;false;false;63;95;191;;;
                                  -66714;1;0;false;false;;;;;;
                                  -66715;1;0;false;false;127;127;159;;;
                                  -66716;1;0;false;false;;;;;;
                                  -66717;2;0;false;false;63;95;191;;;
                                  -66719;1;0;false;false;;;;;;
                                  -66720;3;0;false;false;63;95;191;;;
                                  -66723;1;0;false;false;;;;;;
                                  -66724;8;0;false;false;63;95;191;;;
                                  -66732;1;0;false;false;;;;;;
                                  -66733;3;0;false;false;63;95;191;;;
                                  -66736;1;0;false;false;;;;;;
                                  -66737;4;0;false;false;63;95;191;;;
                                  -66741;1;0;false;false;;;;;;
                                  -66742;8;0;false;false;63;95;191;;;
                                  -66750;5;0;false;false;127;127;159;;;
                                  -66755;3;0;false;false;;;;;;
                                  -66758;1;0;false;false;63;95;191;;;
                                  -66759;4;0;false;false;;;;;;
                                  -66763;4;0;false;false;127;127;159;;;
                                  -66767;27;0;false;false;63;95;191;;;
                                  -66794;1;0;false;false;;;;;;
                                  -66795;1;0;false;false;127;127;159;;;
                                  -66796;1;0;false;false;;;;;;
                                  -66797;2;0;false;false;63;95;191;;;
                                  -66799;1;0;false;false;;;;;;
                                  -66800;3;0;false;false;63;95;191;;;
                                  -66803;1;0;false;false;;;;;;
                                  -66804;6;0;false;false;63;95;191;;;
                                  -66810;1;0;false;false;;;;;;
                                  -66811;4;0;false;false;63;95;191;;;
                                  -66815;1;0;false;false;;;;;;
                                  -66816;3;0;false;false;63;95;191;;;
                                  -66819;1;0;false;false;;;;;;
                                  -66820;6;0;false;false;63;95;191;;;
                                  -66826;1;0;false;false;;;;;;
                                  -66827;4;0;false;false;63;95;191;;;
                                  -66831;1;0;false;false;;;;;;
                                  -66832;7;0;false;false;63;95;191;;;
                                  -66839;1;0;false;false;;;;;;
                                  -66840;3;0;false;false;63;95;191;;;
                                  -66843;1;0;false;false;;;;;;
                                  -66844;8;0;false;false;63;95;191;;;
                                  -66852;5;0;false;false;127;127;159;;;
                                  -66857;3;0;false;false;;;;;;
                                  -66860;1;0;false;false;63;95;191;;;
                                  -66861;1;0;false;false;;;;;;
                                  -66862;5;0;false;false;127;127;159;;;
                                  -66867;3;0;false;false;;;;;;
                                  -66870;1;0;false;false;63;95;191;;;
                                  -66871;1;0;false;false;;;;;;
                                  -66872;11;1;false;false;127;159;191;;;
                                  -66883;24;0;false;false;63;95;191;;;
                                  -66907;1;0;false;false;;;;;;
                                  -66908;4;0;false;false;127;127;159;;;
                                  -66912;3;0;false;false;;;;;;
                                  -66915;1;0;false;false;63;95;191;;;
                                  -66916;4;0;false;false;;;;;;
                                  -66920;4;0;false;false;127;127;159;;;
                                  -66924;19;0;false;false;63;95;191;;;
                                  -66943;1;0;false;false;;;;;;
                                  -66944;4;0;false;false;63;95;191;;;
                                  -66948;1;0;false;false;;;;;;
                                  -66949;8;0;false;false;63;95;191;;;
                                  -66957;1;0;false;false;;;;;;
                                  -66958;2;0;false;false;63;95;191;;;
                                  -66960;1;0;false;false;;;;;;
                                  -66961;4;0;false;false;63;95;191;;;
                                  -66965;5;0;false;false;127;127;159;;;
                                  -66970;3;0;false;false;;;;;;
                                  -66973;1;0;false;false;63;95;191;;;
                                  -66974;1;0;false;false;;;;;;
                                  -66975;5;0;false;false;127;127;159;;;
                                  -66980;3;0;false;false;;;;;;
                                  -66983;2;0;false;false;63;95;191;;;
                                  -66985;2;0;false;false;;;;;;
                                  -66987;6;1;false;false;127;0;85;;;
                                  -66993;1;0;false;false;;;;;;
                                  -66994;4;1;false;false;127;0;85;;;
                                  -66998;1;0;false;false;;;;;;
                                  -66999;13;0;false;false;0;0;0;;;
                                  -67012;1;0;false;false;;;;;;
                                  -67013;7;0;false;false;0;0;0;;;
                                  -67020;1;0;false;false;;;;;;
                                  -67021;1;0;false;false;0;0;0;;;
                                  -67022;3;0;false;false;;;;;;
                                  -67025;14;0;false;false;0;0;0;;;
                                  -67039;3;0;false;false;;;;;;
                                  -67042;2;1;false;false;127;0;85;;;
                                  -67044;1;0;false;false;;;;;;
                                  -67045;7;0;false;false;0;0;0;;;
                                  -67052;1;0;false;false;;;;;;
                                  -67053;2;0;false;false;0;0;0;;;
                                  -67055;1;0;false;false;;;;;;
                                  -67056;4;1;false;false;127;0;85;;;
                                  -67060;1;0;false;false;0;0;0;;;
                                  -67061;1;0;false;false;;;;;;
                                  -67062;1;0;false;false;0;0;0;;;
                                  -67063;4;0;false;false;;;;;;
                                  -67067;35;0;false;false;0;0;0;;;
                                  -67102;3;0;false;false;;;;;;
                                  -67105;1;0;false;false;0;0;0;;;
                                  -67106;3;0;false;false;;;;;;
                                  -67109;3;1;false;false;127;0;85;;;
                                  -67112;1;0;false;false;;;;;;
                                  -67113;8;0;false;false;0;0;0;;;
                                  -67121;1;0;false;false;;;;;;
                                  -67122;1;0;false;false;0;0;0;;;
                                  -67123;1;0;false;false;;;;;;
                                  -67124;24;0;false;false;0;0;0;;;
                                  -67148;1;0;false;false;;;;;;
                                  -67149;3;0;false;false;0;0;0;;;
                                  -67152;3;0;false;false;;;;;;
                                  -67155;26;0;false;false;0;0;0;;;
                                  -67181;1;0;false;false;;;;;;
                                  -67182;2;0;false;false;0;0;0;;;
                                  -67184;1;0;false;false;;;;;;
                                  -67185;8;0;false;false;0;0;0;;;
                                  -67193;2;0;false;false;;;;;;
                                  -67195;1;0;false;false;0;0;0;;;
                                  -67196;2;0;false;false;;;;;;
                                  -67198;3;0;false;false;63;95;191;;;
                                  -67201;3;0;false;false;;;;;;
                                  -67204;1;0;false;false;63;95;191;;;
                                  -67205;1;0;false;false;;;;;;
                                  -67206;10;0;false;false;63;95;191;;;
                                  -67216;1;0;false;false;;;;;;
                                  -67217;3;0;false;false;63;95;191;;;
                                  -67220;1;0;false;false;;;;;;
                                  -67221;5;0;false;false;63;95;191;;;
                                  -67226;1;0;false;false;;;;;;
                                  -67227;2;0;false;false;63;95;191;;;
                                  -67229;1;0;false;false;;;;;;
                                  -67230;3;0;false;false;63;95;191;;;
                                  -67233;1;0;false;false;;;;;;
                                  -67234;6;0;false;false;63;95;191;;;
                                  -67240;1;0;false;false;;;;;;
                                  -67241;7;0;false;false;63;95;191;;;
                                  -67248;1;0;false;false;;;;;;
                                  -67249;5;0;false;false;63;95;191;;;
                                  -67254;3;0;false;false;;;;;;
                                  -67257;2;0;false;false;63;95;191;;;
                                  -67259;2;0;false;false;;;;;;
                                  -67261;4;1;false;false;127;0;85;;;
                                  -67265;1;0;false;false;;;;;;
                                  -67266;23;0;false;false;0;0;0;;;
                                  -67289;1;0;false;false;;;;;;
                                  -67290;1;0;false;false;0;0;0;;;
                                  -67291;3;0;false;false;;;;;;
                                  -67294;9;0;false;false;0;0;0;;;
                                  -67303;1;0;false;false;;;;;;
                                  -67304;1;0;false;false;0;0;0;;;
                                  -67305;1;0;false;false;;;;;;
                                  -67306;22;0;false;false;0;0;0;;;
                                  -67328;3;0;false;false;;;;;;
                                  -67331;29;0;false;false;0;0;0;;;
                                  -67360;1;0;false;false;;;;;;
                                  -67361;23;0;false;false;0;0;0;;;
                                  -67384;1;0;false;false;;;;;;
                                  -67385;1;0;false;false;0;0;0;;;
                                  -67386;1;0;false;false;;;;;;
                                  -67387;8;0;false;false;0;0;0;;;
                                  -67395;1;0;false;false;;;;;;
                                  -67396;1;0;false;false;0;0;0;;;
                                  -67397;1;0;false;false;;;;;;
                                  -67398;3;0;false;false;0;0;0;;;
                                  -67401;2;0;false;false;;;;;;
                                  -67403;1;0;false;false;0;0;0;;;
                                  -67404;2;0;false;false;;;;;;
                                  -67406;3;0;false;false;63;95;191;;;
                                  -67409;3;0;false;false;;;;;;
                                  -67412;1;0;false;false;63;95;191;;;
                                  -67413;1;0;false;false;;;;;;
                                  -67414;10;0;false;false;63;95;191;;;
                                  -67424;1;0;false;false;;;;;;
                                  -67425;3;0;false;false;63;95;191;;;
                                  -67428;1;0;false;false;;;;;;
                                  -67429;6;0;false;false;63;95;191;;;
                                  -67435;1;0;false;false;;;;;;
                                  -67436;4;0;false;false;63;95;191;;;
                                  -67440;3;0;false;false;;;;;;
                                  -67443;2;0;false;false;63;95;191;;;
                                  -67445;2;0;false;false;;;;;;
                                  -67447;4;1;false;false;127;0;85;;;
                                  -67451;1;0;false;false;;;;;;
                                  -67452;21;0;false;false;0;0;0;;;
                                  -67473;1;0;false;false;;;;;;
                                  -67474;1;0;false;false;0;0;0;;;
                                  -67475;3;0;false;false;;;;;;
                                  -67478;9;0;false;false;0;0;0;;;
                                  -67487;1;0;false;false;;;;;;
                                  -67488;13;0;false;false;0;0;0;;;
                                  -67501;1;0;false;false;;;;;;
                                  -67502;1;0;false;false;0;0;0;;;
                                  -67503;1;0;false;false;;;;;;
                                  -67504;19;0;false;false;0;0;0;;;
                                  -67523;3;0;false;false;;;;;;
                                  -67526;9;0;false;false;0;0;0;;;
                                  -67535;1;0;false;false;;;;;;
                                  -67536;11;0;false;false;0;0;0;;;
                                  -67547;1;0;false;false;;;;;;
                                  -67548;1;0;false;false;0;0;0;;;
                                  -67549;1;0;false;false;;;;;;
                                  -67550;17;0;false;false;0;0;0;;;
                                  -67567;6;0;false;false;;;;;;
                                  -67573;16;0;false;false;0;0;0;;;
                                  -67589;3;0;false;false;;;;;;
                                  -67592;2;1;false;false;127;0;85;;;
                                  -67594;1;0;false;false;;;;;;
                                  -67595;12;0;false;false;0;0;0;;;
                                  -67607;1;0;false;false;;;;;;
                                  -67608;2;0;false;false;0;0;0;;;
                                  -67610;1;0;false;false;;;;;;
                                  -67611;4;1;false;false;127;0;85;;;
                                  -67615;1;0;false;false;0;0;0;;;
                                  -67616;1;0;false;false;;;;;;
                                  -67617;1;0;false;false;0;0;0;;;
                                  -67618;4;0;false;false;;;;;;
                                  -67622;49;0;false;false;0;0;0;;;
                                  -67671;3;0;false;false;;;;;;
                                  -67674;1;0;false;false;0;0;0;;;
                                  -67675;4;0;false;false;;;;;;
                                  -67679;2;1;false;false;127;0;85;;;
                                  -67681;1;0;false;false;;;;;;
                                  -67682;14;0;false;false;0;0;0;;;
                                  -67696;1;0;false;false;;;;;;
                                  -67697;2;0;false;false;0;0;0;;;
                                  -67699;1;0;false;false;;;;;;
                                  -67700;4;1;false;false;127;0;85;;;
                                  -67704;1;0;false;false;0;0;0;;;
                                  -67705;1;0;false;false;;;;;;
                                  -67706;1;0;false;false;0;0;0;;;
                                  -67707;4;0;false;false;;;;;;
                                  -67711;53;0;false;false;0;0;0;;;
                                  -67764;3;0;false;false;;;;;;
                                  -67767;1;0;false;false;0;0;0;;;
                                  -67768;2;0;false;false;;;;;;
                                  -67770;1;0;false;false;0;0;0;;;
                                  -67771;2;0;false;false;;;;;;
                                  -67773;3;0;false;false;63;95;191;;;
                                  -67776;3;0;false;false;;;;;;
                                  -67779;1;0;false;false;63;95;191;;;
                                  -67780;1;0;false;false;;;;;;
                                  -67781;10;0;false;false;63;95;191;;;
                                  -67791;1;0;false;false;;;;;;
                                  -67792;3;0;false;false;63;95;191;;;
                                  -67795;1;0;false;false;;;;;;
                                  -67796;3;0;false;false;63;95;191;;;
                                  -67799;1;0;false;false;;;;;;
                                  -67800;5;0;false;false;63;95;191;;;
                                  -67805;1;0;false;false;;;;;;
                                  -67806;5;0;false;false;63;95;191;;;
                                  -67811;1;0;false;false;;;;;;
                                  -67812;2;0;false;false;63;95;191;;;
                                  -67814;1;0;false;false;;;;;;
                                  -67815;3;0;false;false;63;95;191;;;
                                  -67818;1;0;false;false;;;;;;
                                  -67819;7;0;false;false;63;95;191;;;
                                  -67826;1;0;false;false;;;;;;
                                  -67827;8;0;false;false;63;95;191;;;
                                  -67835;1;0;false;false;;;;;;
                                  -67836;6;0;false;false;63;95;191;;;
                                  -67842;1;0;false;false;;;;;;
                                  -67843;7;0;false;false;63;95;191;;;
                                  -67850;3;0;false;false;;;;;;
                                  -67853;1;0;false;false;63;95;191;;;
                                  -67854;1;0;false;false;;;;;;
                                  -67855;3;0;false;false;63;95;191;;;
                                  -67858;1;0;false;false;;;;;;
                                  -67859;3;0;false;false;63;95;191;;;
                                  -67862;1;0;false;false;;;;;;
                                  -67863;5;0;false;false;63;95;191;;;
                                  -67868;1;0;false;false;;;;;;
                                  -67869;2;0;false;false;63;95;191;;;
                                  -67871;1;0;false;false;;;;;;
                                  -67872;3;0;false;false;63;95;191;;;
                                  -67875;1;0;false;false;;;;;;
                                  -67876;5;0;false;false;63;95;191;;;
                                  -67881;1;0;false;false;;;;;;
                                  -67882;2;0;false;false;63;95;191;;;
                                  -67884;1;0;false;false;;;;;;
                                  -67885;3;0;false;false;63;95;191;;;
                                  -67888;1;0;false;false;;;;;;
                                  -67889;7;0;false;false;63;95;191;;;
                                  -67896;1;0;false;false;;;;;;
                                  -67897;5;0;false;false;63;95;191;;;
                                  -67902;1;0;false;false;;;;;;
                                  -67903;7;0;false;false;63;95;191;;;
                                  -67910;1;0;false;false;;;;;;
                                  -67911;4;0;false;false;63;95;191;;;
                                  -67915;1;0;false;false;;;;;;
                                  -67916;2;0;false;false;63;95;191;;;
                                  -67918;1;0;false;false;;;;;;
                                  -67919;3;0;false;false;63;95;191;;;
                                  -67922;3;0;false;false;;;;;;
                                  -67925;1;0;false;false;63;95;191;;;
                                  -67926;1;0;false;false;;;;;;
                                  -67927;7;0;false;false;63;95;191;;;
                                  -67934;1;0;false;false;;;;;;
                                  -67935;9;0;false;false;63;95;191;;;
                                  -67944;1;0;false;false;;;;;;
                                  -67945;7;0;false;false;63;95;191;;;
                                  -67952;1;0;false;false;;;;;;
                                  -67953;4;0;false;false;63;95;191;;;
                                  -67957;1;0;false;false;;;;;;
                                  -67958;2;0;false;false;63;95;191;;;
                                  -67960;1;0;false;false;;;;;;
                                  -67961;2;0;false;false;63;95;191;;;
                                  -67963;1;0;false;false;;;;;;
                                  -67964;4;0;false;false;63;95;191;;;
                                  -67968;1;0;false;false;;;;;;
                                  -67969;2;0;false;false;63;95;191;;;
                                  -67971;1;0;false;false;;;;;;
                                  -67972;5;0;false;false;63;95;191;;;
                                  -67977;1;0;false;false;;;;;;
                                  -67978;8;0;false;false;63;95;191;;;
                                  -67986;3;0;false;false;;;;;;
                                  -67989;1;0;false;false;63;95;191;;;
                                  -67990;1;0;false;false;;;;;;
                                  -67991;3;0;false;false;63;95;191;;;
                                  -67994;1;0;false;false;;;;;;
                                  -67995;3;0;false;false;63;95;191;;;
                                  -67998;1;0;false;false;;;;;;
                                  -67999;5;0;false;false;63;95;191;;;
                                  -68004;1;0;false;false;;;;;;
                                  -68005;6;0;false;false;63;95;191;;;
                                  -68011;1;0;false;false;;;;;;
                                  -68012;2;0;false;false;63;95;191;;;
                                  -68014;1;0;false;false;;;;;;
                                  -68015;2;0;false;false;63;95;191;;;
                                  -68017;3;0;false;false;;;;;;
                                  -68020;2;0;false;false;63;95;191;;;
                                  -68022;2;0;false;false;;;;;;
                                  -68024;4;1;false;false;127;0;85;;;
                                  -68028;1;0;false;false;;;;;;
                                  -68029;19;0;false;false;0;0;0;;;
                                  -68048;1;0;false;false;;;;;;
                                  -68049;1;0;false;false;0;0;0;;;
                                  -68050;3;0;false;false;;;;;;
                                  -68053;3;1;false;false;127;0;85;;;
                                  -68056;1;0;false;false;;;;;;
                                  -68057;11;0;false;false;0;0;0;;;
                                  -68068;1;0;false;false;;;;;;
                                  -68069;1;0;false;false;0;0;0;;;
                                  -68070;1;0;false;false;;;;;;
                                  -68071;9;0;false;false;0;0;0;;;
                                  -68080;3;0;false;false;;;;;;
                                  -68083;3;1;false;false;127;0;85;;;
                                  -68086;1;0;false;false;;;;;;
                                  -68087;17;0;false;false;0;0;0;;;
                                  -68104;1;0;false;false;;;;;;
                                  -68105;1;0;false;false;0;0;0;;;
                                  -68106;1;0;false;false;;;;;;
                                  -68107;23;0;false;false;0;0;0;;;
                                  -68130;3;0;false;false;;;;;;
                                  -68133;3;1;false;false;127;0;85;;;
                                  -68136;1;0;false;false;;;;;;
                                  -68137;16;0;false;false;0;0;0;;;
                                  -68153;1;0;false;false;;;;;;
                                  -68154;1;0;false;false;0;0;0;;;
                                  -68155;1;0;false;false;;;;;;
                                  -68156;23;0;false;false;0;0;0;;;
                                  -68179;6;0;false;false;;;;;;
                                  -68185;2;1;false;false;127;0;85;;;
                                  -68187;1;0;false;false;;;;;;
                                  -68188;18;0;false;false;0;0;0;;;
                                  -68206;1;0;false;false;;;;;;
                                  -68207;2;0;false;false;0;0;0;;;
                                  -68209;1;0;false;false;;;;;;
                                  -68210;2;0;false;false;0;0;0;;;
                                  -68212;1;0;false;false;;;;;;
                                  -68213;1;0;false;false;0;0;0;;;
                                  -68214;4;0;false;false;;;;;;
                                  -68218;6;1;false;false;127;0;85;;;
                                  -68224;1;0;false;false;0;0;0;;;
                                  -68225;3;0;false;false;;;;;;
                                  -68228;1;0;false;false;0;0;0;;;
                                  -68229;3;0;false;false;;;;;;
                                  -68232;8;0;false;false;0;0;0;;;
                                  -68240;1;0;false;false;;;;;;
                                  -68241;1;0;false;false;0;0;0;;;
                                  -68242;1;0;false;false;;;;;;
                                  -68243;40;0;false;false;0;0;0;;;
                                  -68283;1;0;false;false;;;;;;
                                  -68284;19;0;false;false;0;0;0;;;
                                  -68303;3;0;false;false;;;;;;
                                  -68306;69;0;false;false;63;127;95;;;
                                  -68375;1;0;false;false;;;;;;
                                  -68376;68;0;false;false;63;127;95;;;
                                  -68444;1;0;false;false;;;;;;
                                  -68445;21;0;false;false;63;127;95;;;
                                  -68466;1;0;false;false;;;;;;
                                  -68467;2;1;false;false;127;0;85;;;
                                  -68469;1;0;false;false;;;;;;
                                  -68470;9;0;false;false;0;0;0;;;
                                  -68479;1;0;false;false;;;;;;
                                  -68480;1;0;false;false;0;0;0;;;
                                  -68481;1;0;false;false;;;;;;
                                  -68482;2;0;false;false;0;0;0;;;
                                  -68484;1;0;false;false;;;;;;
                                  -68485;1;0;false;false;0;0;0;;;
                                  -68486;4;0;false;false;;;;;;
                                  -68490;2;1;false;false;127;0;85;;;
                                  -68492;1;0;false;false;;;;;;
                                  -68493;17;0;false;false;0;0;0;;;
                                  -68510;1;0;false;false;;;;;;
                                  -68511;1;0;false;false;0;0;0;;;
                                  -68512;1;0;false;false;;;;;;
                                  -68513;2;0;false;false;0;0;0;;;
                                  -68515;1;0;false;false;;;;;;
                                  -68516;1;0;false;false;0;0;0;;;
                                  -68517;5;0;false;false;;;;;;
                                  -68522;3;1;false;false;127;0;85;;;
                                  -68525;1;0;false;false;;;;;;
                                  -68526;11;0;false;false;0;0;0;;;
                                  -68537;1;0;false;false;;;;;;
                                  -68538;1;0;false;false;0;0;0;;;
                                  -68539;1;0;false;false;;;;;;
                                  -68540;20;0;false;false;0;0;0;;;
                                  -68560;1;0;false;false;;;;;;
                                  -68561;1;0;false;false;0;0;0;;;
                                  -68562;1;0;false;false;;;;;;
                                  -68563;17;0;false;false;0;0;0;;;
                                  -68580;5;0;false;false;;;;;;
                                  -68585;3;1;false;false;127;0;85;;;
                                  -68588;1;0;false;false;;;;;;
                                  -68589;16;0;false;false;0;0;0;;;
                                  -68605;1;0;false;false;;;;;;
                                  -68606;1;0;false;false;0;0;0;;;
                                  -68607;1;0;false;false;;;;;;
                                  -68608;8;0;false;false;0;0;0;;;
                                  -68616;1;0;false;false;;;;;;
                                  -68617;1;0;false;false;0;0;0;;;
                                  -68618;1;0;false;false;;;;;;
                                  -68619;18;0;false;false;0;0;0;;;
                                  -68637;5;0;false;false;;;;;;
                                  -68642;3;1;false;false;127;0;85;;;
                                  -68645;1;0;false;false;;;;;;
                                  -68646;21;0;false;false;0;0;0;;;
                                  -68667;1;0;false;false;;;;;;
                                  -68668;1;0;false;false;0;0;0;;;
                                  -68669;1;0;false;false;;;;;;
                                  -68670;11;0;false;false;0;0;0;;;
                                  -68681;1;0;false;false;;;;;;
                                  -68682;1;0;false;false;0;0;0;;;
                                  -68683;1;0;false;false;;;;;;
                                  -68684;17;0;false;false;0;0;0;;;
                                  -68701;5;0;false;false;;;;;;
                                  -68706;70;0;false;false;63;127;95;;;
                                  -68776;3;0;false;false;;;;;;
                                  -68779;73;0;false;false;63;127;95;;;
                                  -68852;3;0;false;false;;;;;;
                                  -68855;54;0;false;false;63;127;95;;;
                                  -68909;3;0;false;false;;;;;;
                                  -68912;2;1;false;false;127;0;85;;;
                                  -68914;1;0;false;false;;;;;;
                                  -68915;22;0;false;false;0;0;0;;;
                                  -68937;1;0;false;false;;;;;;
                                  -68938;1;0;false;false;0;0;0;;;
                                  -68939;1;0;false;false;;;;;;
                                  -68940;18;0;false;false;0;0;0;;;
                                  -68958;1;0;false;false;;;;;;
                                  -68959;1;0;false;false;0;0;0;;;
                                  -68960;6;0;false;false;;;;;;
                                  -68966;11;0;false;false;0;0;0;;;
                                  -68977;5;0;false;false;;;;;;
                                  -68982;1;0;false;false;0;0;0;;;
                                  -68983;4;0;false;false;;;;;;
                                  -68987;1;0;false;false;0;0;0;;;
                                  -68988;4;0;false;false;;;;;;
                                  -68992;4;1;false;false;127;0;85;;;
                                  -68996;5;0;false;false;;;;;;
                                  -69001;2;1;false;false;127;0;85;;;
                                  -69003;1;0;false;false;;;;;;
                                  -69004;9;0;false;false;0;0;0;;;
                                  -69013;1;0;false;false;;;;;;
                                  -69014;2;0;false;false;0;0;0;;;
                                  -69016;1;0;false;false;;;;;;
                                  -69017;23;0;false;false;0;0;0;;;
                                  -69040;1;0;false;false;;;;;;
                                  -69041;1;0;false;false;0;0;0;;;
                                  -69042;5;0;false;false;;;;;;
                                  -69047;8;0;false;false;0;0;0;;;
                                  -69055;1;0;false;false;;;;;;
                                  -69056;1;0;false;false;0;0;0;;;
                                  -69057;1;0;false;false;;;;;;
                                  -69058;22;0;false;false;0;0;0;;;
                                  -69080;1;0;false;false;;;;;;
                                  -69081;1;0;false;false;0;0;0;;;
                                  -69082;1;0;false;false;;;;;;
                                  -69083;2;0;false;false;0;0;0;;;
                                  -69085;4;0;false;false;;;;;;
                                  -69089;1;0;false;false;0;0;0;;;
                                  -69090;3;0;false;false;;;;;;
                                  -69093;1;0;false;false;0;0;0;;;
                                  -69094;3;0;false;false;;;;;;
                                  -69097;2;1;false;false;127;0;85;;;
                                  -69099;1;0;false;false;;;;;;
                                  -69100;9;0;false;false;0;0;0;;;
                                  -69109;1;0;false;false;;;;;;
                                  -69110;2;0;false;false;0;0;0;;;
                                  -69112;1;0;false;false;;;;;;
                                  -69113;12;0;false;false;0;0;0;;;
                                  -69125;1;0;false;false;;;;;;
                                  -69126;1;0;false;false;0;0;0;;;
                                  -69127;4;0;false;false;;;;;;
                                  -69131;9;0;false;false;0;0;0;;;
                                  -69140;1;0;false;false;;;;;;
                                  -69141;1;0;false;false;0;0;0;;;
                                  -69142;1;0;false;false;;;;;;
                                  -69143;34;0;false;false;0;0;0;;;
                                  -69177;4;0;false;false;;;;;;
                                  -69181;29;0;false;false;0;0;0;;;
                                  -69210;1;0;false;false;;;;;;
                                  -69211;23;0;false;false;0;0;0;;;
                                  -69234;1;0;false;false;;;;;;
                                  -69235;1;0;false;false;0;0;0;;;
                                  -69236;1;0;false;false;;;;;;
                                  -69237;8;0;false;false;0;0;0;;;
                                  -69245;1;0;false;false;;;;;;
                                  -69246;1;0;false;false;0;0;0;;;
                                  -69247;1;0;false;false;;;;;;
                                  -69248;3;0;false;false;0;0;0;;;
                                  -69251;4;0;false;false;;;;;;
                                  -69255;25;0;false;false;0;0;0;;;
                                  -69280;3;0;false;false;;;;;;
                                  -69283;1;0;false;false;0;0;0;;;
                                  -69284;2;0;false;false;;;;;;
                                  -69286;1;0;false;false;0;0;0;;;
                                  -69287;2;0;false;false;;;;;;
                                  -69289;3;0;false;false;63;95;191;;;
                                  -69292;3;0;false;false;;;;;;
                                  -69295;1;0;false;false;63;95;191;;;
                                  -69296;1;0;false;false;;;;;;
                                  -69297;5;0;false;false;63;95;191;;;
                                  -69302;1;0;false;false;;;;;;
                                  -69303;3;0;false;false;63;95;191;;;
                                  -69306;1;0;false;false;;;;;;
                                  -69307;6;0;false;false;63;95;191;;;
                                  -69313;1;0;false;false;;;;;;
                                  -69314;4;0;false;false;63;95;191;;;
                                  -69318;1;0;false;false;;;;;;
                                  -69319;2;0;false;false;63;95;191;;;
                                  -69321;1;0;false;false;;;;;;
                                  -69322;6;0;false;false;63;95;191;;;
                                  -69328;1;0;false;false;;;;;;
                                  -69329;2;0;false;false;63;95;191;;;
                                  -69331;1;0;false;false;;;;;;
                                  -69332;7;0;false;false;63;95;191;;;
                                  -69339;1;0;false;false;;;;;;
                                  -69340;2;0;false;false;63;95;191;;;
                                  -69342;1;0;false;false;;;;;;
                                  -69343;6;0;false;false;63;95;191;;;
                                  -69349;1;0;false;false;;;;;;
                                  -69350;4;0;false;false;63;95;191;;;
                                  -69354;1;0;false;false;;;;;;
                                  -69355;5;0;false;false;63;95;191;;;
                                  -69360;3;0;false;false;;;;;;
                                  -69363;2;0;false;false;63;95;191;;;
                                  -69365;2;0;false;false;;;;;;
                                  -69367;6;1;false;false;127;0;85;;;
                                  -69373;1;0;false;false;;;;;;
                                  -69374;3;1;false;false;127;0;85;;;
                                  -69377;1;0;false;false;;;;;;
                                  -69378;11;0;false;false;0;0;0;;;
                                  -69389;3;1;false;false;127;0;85;;;
                                  -69392;1;0;false;false;;;;;;
                                  -69393;6;0;false;false;0;0;0;;;
                                  -69399;1;0;false;false;;;;;;
                                  -69400;1;0;false;false;0;0;0;;;
                                  -69401;3;0;false;false;;;;;;
                                  -69404;2;1;false;false;127;0;85;;;
                                  -69406;1;0;false;false;;;;;;
                                  -69407;7;0;false;false;0;0;0;;;
                                  -69414;1;0;false;false;;;;;;
                                  -69415;1;0;false;false;0;0;0;;;
                                  -69416;1;0;false;false;;;;;;
                                  -69417;11;0;false;false;0;0;0;;;
                                  -69428;1;0;false;false;;;;;;
                                  -69429;2;0;false;false;0;0;0;;;
                                  -69431;1;0;false;false;;;;;;
                                  -69432;2;0;false;false;0;0;0;;;
                                  -69434;1;0;false;false;;;;;;
                                  -69435;1;0;false;false;0;0;0;;;
                                  -69436;4;0;false;false;;;;;;
                                  -69440;5;0;false;false;0;0;0;;;
                                  -69445;1;0;false;false;;;;;;
                                  -69446;2;0;false;false;0;0;0;;;
                                  -69448;1;0;false;false;;;;;;
                                  -69449;14;0;false;false;0;0;0;;;
                                  -69463;1;0;false;false;;;;;;
                                  -69464;1;0;false;false;0;0;0;;;
                                  -69465;1;0;false;false;;;;;;
                                  -69466;12;0;false;false;0;0;0;;;
                                  -69478;1;0;false;false;;;;;;
                                  -69479;1;0;false;false;0;0;0;;;
                                  -69480;1;0;false;false;;;;;;
                                  -69481;8;0;false;false;0;0;0;;;
                                  -69489;1;0;false;false;;;;;;
                                  -69490;1;0;false;false;0;0;0;;;
                                  -69491;1;0;false;false;;;;;;
                                  -69492;11;0;false;false;0;0;0;;;
                                  -69503;3;0;false;false;;;;;;
                                  -69506;1;0;false;false;0;0;0;;;
                                  -69507;1;0;false;false;;;;;;
                                  -69508;4;1;false;false;127;0;85;;;
                                  -69512;1;0;false;false;;;;;;
                                  -69513;1;0;false;false;0;0;0;;;
                                  -69514;4;0;false;false;;;;;;
                                  -69518;5;0;false;false;0;0;0;;;
                                  -69523;1;0;false;false;;;;;;
                                  -69524;2;0;false;false;0;0;0;;;
                                  -69526;1;0;false;false;;;;;;
                                  -69527;10;0;false;false;0;0;0;;;
                                  -69537;4;0;false;false;;;;;;
                                  -69541;2;1;false;false;127;0;85;;;
                                  -69543;1;0;false;false;;;;;;
                                  -69544;7;0;false;false;0;0;0;;;
                                  -69551;1;0;false;false;;;;;;
                                  -69552;1;0;false;false;0;0;0;;;
                                  -69553;1;0;false;false;;;;;;
                                  -69554;9;0;false;false;0;0;0;;;
                                  -69563;1;0;false;false;;;;;;
                                  -69564;2;0;false;false;0;0;0;;;
                                  -69566;1;0;false;false;;;;;;
                                  -69567;2;0;false;false;0;0;0;;;
                                  -69569;1;0;false;false;;;;;;
                                  -69570;1;0;false;false;0;0;0;;;
                                  -69571;5;0;false;false;;;;;;
                                  -69576;5;0;false;false;0;0;0;;;
                                  -69581;1;0;false;false;;;;;;
                                  -69582;2;0;false;false;0;0;0;;;
                                  -69584;1;0;false;false;;;;;;
                                  -69585;14;0;false;false;0;0;0;;;
                                  -69599;4;0;false;false;;;;;;
                                  -69603;1;0;false;false;0;0;0;;;
                                  -69604;3;0;false;false;;;;;;
                                  -69607;1;0;false;false;0;0;0;;;
                                  -69608;3;0;false;false;;;;;;
                                  -69611;6;1;false;false;127;0;85;;;
                                  -69617;1;0;false;false;;;;;;
                                  -69618;6;0;false;false;0;0;0;;;
                                  -69624;2;0;false;false;;;;;;
                                  -69626;1;0;false;false;0;0;0;;;
                                  -69627;2;0;false;false;;;;;;
                                  -69629;3;0;false;false;63;95;191;;;
                                  -69632;3;0;false;false;;;;;;
                                  -69635;1;0;false;false;63;95;191;;;
                                  -69636;1;0;false;false;;;;;;
                                  -69637;7;0;false;false;63;95;191;;;
                                  -69644;1;0;false;false;;;;;;
                                  -69645;4;0;false;false;63;95;191;;;
                                  -69649;1;0;false;false;;;;;;
                                  -69650;3;0;false;false;63;95;191;;;
                                  -69653;1;0;false;false;;;;;;
                                  -69654;4;0;false;false;63;95;191;;;
                                  -69658;1;0;false;false;;;;;;
                                  -69659;2;0;false;false;63;95;191;;;
                                  -69661;1;0;false;false;;;;;;
                                  -69662;3;0;false;false;63;95;191;;;
                                  -69665;1;0;false;false;;;;;;
                                  -69666;3;0;false;false;63;95;191;;;
                                  -69669;1;0;false;false;;;;;;
                                  -69670;5;0;false;false;63;95;191;;;
                                  -69675;1;0;false;false;;;;;;
                                  -69676;4;0;false;false;63;95;191;;;
                                  -69680;1;0;false;false;;;;;;
                                  -69681;9;0;false;false;63;95;191;;;
                                  -69690;1;0;false;false;;;;;;
                                  -69691;2;0;false;false;63;95;191;;;
                                  -69693;1;0;false;false;;;;;;
                                  -69694;1;0;false;false;63;95;191;;;
                                  -69695;1;0;false;false;;;;;;
                                  -69696;6;0;false;false;63;95;191;;;
                                  -69702;1;0;false;false;;;;;;
                                  -69703;2;0;false;false;63;95;191;;;
                                  -69705;1;0;false;false;;;;;;
                                  -69706;2;0;false;false;63;95;191;;;
                                  -69708;4;0;false;false;;;;;;
                                  -69712;1;0;false;false;63;95;191;;;
                                  -69713;1;0;false;false;;;;;;
                                  -69714;7;0;false;false;63;95;191;;;
                                  -69721;1;0;false;false;;;;;;
                                  -69722;6;0;false;false;63;95;191;;;
                                  -69728;3;0;false;false;;;;;;
                                  -69731;2;0;false;false;63;95;191;;;
                                  -69733;2;0;false;false;;;;;;
                                  -69735;4;1;false;false;127;0;85;;;
                                  -69739;1;0;false;false;;;;;;
                                  -69740;22;0;false;false;0;0;0;;;
                                  -69762;1;0;false;false;;;;;;
                                  -69763;1;0;false;false;0;0;0;;;
                                  -69764;3;0;false;false;;;;;;
                                  -69767;3;1;false;false;127;0;85;;;
                                  -69770;1;0;false;false;;;;;;
                                  -69771;17;0;false;false;0;0;0;;;
                                  -69788;1;0;false;false;;;;;;
                                  -69789;1;0;false;false;0;0;0;;;
                                  -69790;1;0;false;false;;;;;;
                                  -69791;11;0;false;false;0;0;0;;;
                                  -69802;1;0;false;false;;;;;;
                                  -69803;22;0;false;false;0;0;0;;;
                                  -69825;1;0;false;false;;;;;;
                                  -69826;1;0;false;false;0;0;0;;;
                                  -69827;1;0;false;false;;;;;;
                                  -69828;10;0;false;false;0;0;0;;;
                                  -69838;1;0;false;false;;;;;;
                                  -69839;1;0;false;false;0;0;0;;;
                                  -69840;1;0;false;false;;;;;;
                                  -69841;24;0;false;false;0;0;0;;;
                                  -69865;6;0;false;false;;;;;;
                                  -69871;2;1;false;false;127;0;85;;;
                                  -69873;1;0;false;false;;;;;;
                                  -69874;18;0;false;false;0;0;0;;;
                                  -69892;1;0;false;false;;;;;;
                                  -69893;1;0;false;false;0;0;0;;;
                                  -69894;1;0;false;false;;;;;;
                                  -69895;21;0;false;false;0;0;0;;;
                                  -69916;1;0;false;false;;;;;;
                                  -69917;1;0;false;false;0;0;0;;;
                                  -69918;4;0;false;false;;;;;;
                                  -69922;65;0;false;false;63;127;95;;;
                                  -69987;2;0;false;false;;;;;;
                                  -69989;18;0;false;false;63;127;95;;;
                                  -70007;2;0;false;false;;;;;;
                                  -70009;42;0;false;false;0;0;0;;;
                                  -70051;1;0;false;false;;;;;;
                                  -70052;4;1;false;false;127;0;85;;;
                                  -70056;2;0;false;false;0;0;0;;;
                                  -70058;3;0;false;false;;;;;;
                                  -70061;1;0;false;false;0;0;0;;;
                                  -70062;2;0;false;false;;;;;;
                                  -70064;1;0;false;false;0;0;0;;;
                                  -70065;2;0;false;false;;;;;;
                                  -70067;3;0;false;false;63;95;191;;;
                                  -70070;3;0;false;false;;;;;;
                                  -70073;1;0;false;false;63;95;191;;;
                                  -70074;1;0;false;false;;;;;;
                                  -70075;7;0;false;false;63;95;191;;;
                                  -70082;1;0;false;false;;;;;;
                                  -70083;4;0;false;false;63;95;191;;;
                                  -70087;1;0;false;false;;;;;;
                                  -70088;2;0;false;false;63;95;191;;;
                                  -70090;1;0;false;false;;;;;;
                                  -70091;3;0;false;false;63;95;191;;;
                                  -70094;1;0;false;false;;;;;;
                                  -70095;5;0;false;false;63;95;191;;;
                                  -70100;1;0;false;false;;;;;;
                                  -70101;2;0;false;false;63;95;191;;;
                                  -70103;1;0;false;false;;;;;;
                                  -70104;3;0;false;false;63;95;191;;;
                                  -70107;1;0;false;false;;;;;;
                                  -70108;3;0;false;false;63;95;191;;;
                                  -70111;1;0;false;false;;;;;;
                                  -70112;5;0;false;false;63;95;191;;;
                                  -70117;1;0;false;false;;;;;;
                                  -70118;4;0;false;false;63;95;191;;;
                                  -70122;1;0;false;false;;;;;;
                                  -70123;9;0;false;false;63;95;191;;;
                                  -70132;1;0;false;false;;;;;;
                                  -70133;2;0;false;false;63;95;191;;;
                                  -70135;1;0;false;false;;;;;;
                                  -70136;1;0;false;false;63;95;191;;;
                                  -70137;1;0;false;false;;;;;;
                                  -70138;7;0;false;false;63;95;191;;;
                                  -70145;3;0;false;false;;;;;;
                                  -70148;2;0;false;false;63;95;191;;;
                                  -70150;2;0;false;false;;;;;;
                                  -70152;4;1;false;false;127;0;85;;;
                                  -70156;1;0;false;false;;;;;;
                                  -70157;21;0;false;false;0;0;0;;;
                                  -70178;1;0;false;false;;;;;;
                                  -70179;1;0;false;false;0;0;0;;;
                                  -70180;3;0;false;false;;;;;;
                                  -70183;3;1;false;false;127;0;85;;;
                                  -70186;1;0;false;false;;;;;;
                                  -70187;19;0;false;false;0;0;0;;;
                                  -70206;1;0;false;false;;;;;;
                                  -70207;1;0;false;false;0;0;0;;;
                                  -70208;1;0;false;false;;;;;;
                                  -70209;11;0;false;false;0;0;0;;;
                                  -70220;1;0;false;false;;;;;;
                                  -70221;20;0;false;false;0;0;0;;;
                                  -70241;1;0;false;false;;;;;;
                                  -70242;1;0;false;false;0;0;0;;;
                                  -70243;1;0;false;false;;;;;;
                                  -70244;22;0;false;false;0;0;0;;;
                                  -70266;1;0;false;false;;;;;;
                                  -70267;1;0;false;false;0;0;0;;;
                                  -70268;1;0;false;false;;;;;;
                                  -70269;10;0;false;false;0;0;0;;;
                                  -70279;1;0;false;false;;;;;;
                                  -70280;1;0;false;false;0;0;0;;;
                                  -70281;1;0;false;false;;;;;;
                                  -70282;14;0;false;false;0;0;0;;;
                                  -70296;6;0;false;false;;;;;;
                                  -70302;2;1;false;false;127;0;85;;;
                                  -70304;1;0;false;false;;;;;;
                                  -70305;20;0;false;false;0;0;0;;;
                                  -70325;1;0;false;false;;;;;;
                                  -70326;1;0;false;false;0;0;0;;;
                                  -70327;1;0;false;false;;;;;;
                                  -70328;23;0;false;false;0;0;0;;;
                                  -70351;1;0;false;false;;;;;;
                                  -70352;1;0;false;false;0;0;0;;;
                                  -70353;7;0;false;false;;;;;;
                                  -70360;69;0;false;false;63;127;95;;;
                                  -70429;2;0;false;false;;;;;;
                                  -70431;66;0;false;false;63;127;95;;;
                                  -70497;2;0;false;false;;;;;;
                                  -70499;44;0;false;false;63;127;95;;;
                                  -70543;2;0;false;false;;;;;;
                                  -70545;39;0;false;false;0;0;0;;;
                                  -70584;1;0;false;false;;;;;;
                                  -70585;1;0;false;false;0;0;0;;;
                                  -70586;1;0;false;false;;;;;;
                                  -70587;24;0;false;false;0;0;0;;;
                                  -70611;8;0;false;false;;;;;;
                                  -70619;1;0;false;false;0;0;0;;;
                                  -70620;2;0;false;false;;;;;;
                                  -70622;1;0;false;false;0;0;0;;;
                                  -70623;2;0;false;false;;;;;;
                                  -70625;3;0;false;false;63;95;191;;;
                                  -70628;3;0;false;false;;;;;;
                                  -70631;1;0;false;false;63;95;191;;;
                                  -70632;1;0;false;false;;;;;;
                                  -70633;6;0;false;false;63;95;191;;;
                                  -70639;1;0;false;false;;;;;;
                                  -70640;3;0;false;false;63;95;191;;;
                                  -70643;1;0;false;false;;;;;;
                                  -70644;6;0;false;false;63;95;191;;;
                                  -70650;1;0;false;false;;;;;;
                                  -70651;7;0;false;false;63;95;191;;;
                                  -70658;3;0;false;false;;;;;;
                                  -70661;1;0;false;false;63;95;191;;;
                                  -70662;4;0;false;false;;;;;;
                                  -70666;1;0;false;false;63;95;191;;;
                                  -70667;1;0;false;false;;;;;;
                                  -70668;7;1;false;false;127;159;191;;;
                                  -70675;2;0;false;false;63;95;191;;;
                                  -70677;1;0;false;false;;;;;;
                                  -70678;2;0;false;false;63;95;191;;;
                                  -70680;1;0;false;false;;;;;;
                                  -70681;2;0;false;false;63;95;191;;;
                                  -70683;1;0;false;false;;;;;;
                                  -70684;6;0;false;false;63;95;191;;;
                                  -70690;1;0;false;false;;;;;;
                                  -70691;2;0;false;false;63;95;191;;;
                                  -70693;3;0;false;false;;;;;;
                                  -70696;1;0;false;false;63;95;191;;;
                                  -70697;1;0;false;false;;;;;;
                                  -70698;7;1;false;false;127;159;191;;;
                                  -70705;10;0;false;false;63;95;191;;;
                                  -70715;1;0;false;false;;;;;;
                                  -70716;10;0;false;false;63;95;191;;;
                                  -70726;1;0;false;false;;;;;;
                                  -70727;5;0;false;false;63;95;191;;;
                                  -70732;1;0;false;false;;;;;;
                                  -70733;2;0;false;false;63;95;191;;;
                                  -70735;1;0;false;false;;;;;;
                                  -70736;3;0;false;false;63;95;191;;;
                                  -70739;1;0;false;false;;;;;;
                                  -70740;3;0;false;false;63;95;191;;;
                                  -70743;1;0;false;false;;;;;;
                                  -70744;8;0;false;false;63;95;191;;;
                                  -70752;1;0;false;false;;;;;;
                                  -70753;3;0;false;false;63;95;191;;;
                                  -70756;1;0;false;false;;;;;;
                                  -70757;6;0;false;false;63;95;191;;;
                                  -70763;3;0;false;false;;;;;;
                                  -70766;1;0;false;false;63;95;191;;;
                                  -70767;1;0;false;false;;;;;;
                                  -70768;7;1;false;false;127;159;191;;;
                                  -70775;10;0;false;false;63;95;191;;;
                                  -70785;1;0;false;false;;;;;;
                                  -70786;6;0;false;false;63;95;191;;;
                                  -70792;1;0;false;false;;;;;;
                                  -70793;6;0;false;false;63;95;191;;;
                                  -70799;1;0;false;false;;;;;;
                                  -70800;4;0;false;false;63;95;191;;;
                                  -70804;1;0;false;false;;;;;;
                                  -70805;10;0;false;false;63;95;191;;;
                                  -70815;3;0;false;false;;;;;;
                                  -70818;2;0;false;false;63;95;191;;;
                                  -70820;2;0;false;false;;;;;;
                                  -70822;4;1;false;false;127;0;85;;;
                                  -70826;1;0;false;false;;;;;;
                                  -70827;14;0;false;false;0;0;0;;;
                                  -70841;1;0;false;false;;;;;;
                                  -70842;3;0;false;false;0;0;0;;;
                                  -70845;1;0;false;false;;;;;;
                                  -70846;5;0;false;false;0;0;0;;;
                                  -70851;1;0;false;false;;;;;;
                                  -70852;11;0;false;false;0;0;0;;;
                                  -70863;1;0;false;false;;;;;;
                                  -70864;9;0;false;false;0;0;0;;;
                                  -70873;1;0;false;false;;;;;;
                                  -70874;11;0;false;false;0;0;0;;;
                                  -70885;1;0;false;false;;;;;;
                                  -70886;3;1;false;false;127;0;85;;;
                                  -70889;1;0;false;false;;;;;;
                                  -70890;2;0;false;false;0;0;0;;;
                                  -70892;1;0;false;false;;;;;;
                                  -70893;1;0;false;false;0;0;0;;;
                                  -70894;3;0;false;false;;;;;;
                                  -70897;32;0;false;false;63;127;95;;;
                                  -70929;1;0;false;false;;;;;;
                                  -70930;29;0;false;false;0;0;0;;;
                                  -70959;3;0;false;false;;;;;;
                                  -70962;2;1;false;false;127;0;85;;;
                                  -70964;1;0;false;false;;;;;;
                                  -70965;10;0;false;false;0;0;0;;;
                                  -70975;1;0;false;false;;;;;;
                                  -70976;1;0;false;false;0;0;0;;;
                                  -70977;1;0;false;false;;;;;;
                                  -70978;2;0;false;false;0;0;0;;;
                                  -70980;1;0;false;false;;;;;;
                                  -70981;1;0;false;false;0;0;0;;;
                                  -70982;4;0;false;false;;;;;;
                                  -70986;19;0;false;false;0;0;0;;;
                                  -71005;1;0;false;false;;;;;;
                                  -71006;3;0;false;false;0;0;0;;;
                                  -71009;1;0;false;false;;;;;;
                                  -71010;17;0;false;false;0;0;0;;;
                                  -71027;1;0;false;false;;;;;;
                                  -71028;11;0;false;false;0;0;0;;;
                                  -71039;3;0;false;false;;;;;;
                                  -71042;1;0;false;false;0;0;0;;;
                                  -71043;3;0;false;false;;;;;;
                                  -71046;2;1;false;false;127;0;85;;;
                                  -71048;1;0;false;false;;;;;;
                                  -71049;13;0;false;false;0;0;0;;;
                                  -71062;1;0;false;false;;;;;;
                                  -71063;1;0;false;false;0;0;0;;;
                                  -71064;1;0;false;false;;;;;;
                                  -71065;2;0;false;false;0;0;0;;;
                                  -71067;1;0;false;false;;;;;;
                                  -71068;1;0;false;false;0;0;0;;;
                                  -71069;4;0;false;false;;;;;;
                                  -71073;19;0;false;false;0;0;0;;;
                                  -71092;1;0;false;false;;;;;;
                                  -71093;17;0;false;false;0;0;0;;;
                                  -71110;1;0;false;false;;;;;;
                                  -71111;1;0;false;false;0;0;0;;;
                                  -71112;1;0;false;false;;;;;;
                                  -71113;12;0;false;false;0;0;0;;;
                                  -71125;1;0;false;false;;;;;;
                                  -71126;1;0;false;false;0;0;0;;;
                                  -71127;1;0;false;false;;;;;;
                                  -71128;2;0;false;false;0;0;0;;;
                                  -71130;1;0;false;false;;;;;;
                                  -71131;17;0;false;false;0;0;0;;;
                                  -71148;1;0;false;false;;;;;;
                                  -71149;14;0;false;false;0;0;0;;;
                                  -71163;3;0;false;false;;;;;;
                                  -71166;1;0;false;false;0;0;0;;;
                                  -71167;3;0;false;false;;;;;;
                                  -71170;2;1;false;false;127;0;85;;;
                                  -71172;1;0;false;false;;;;;;
                                  -71173;11;0;false;false;0;0;0;;;
                                  -71184;1;0;false;false;;;;;;
                                  -71185;1;0;false;false;0;0;0;;;
                                  -71186;1;0;false;false;;;;;;
                                  -71187;2;0;false;false;0;0;0;;;
                                  -71189;1;0;false;false;;;;;;
                                  -71190;1;0;false;false;0;0;0;;;
                                  -71191;4;0;false;false;;;;;;
                                  -71195;19;0;false;false;0;0;0;;;
                                  -71214;1;0;false;false;;;;;;
                                  -71215;3;0;false;false;0;0;0;;;
                                  -71218;1;0;false;false;;;;;;
                                  -71219;11;0;false;false;0;0;0;;;
                                  -71230;1;0;false;false;;;;;;
                                  -71231;19;0;false;false;0;0;0;;;
                                  -71250;3;0;false;false;;;;;;
                                  -71253;1;0;false;false;0;0;0;;;
                                  -71254;3;0;false;false;;;;;;
                                  -71257;2;1;false;false;127;0;85;;;
                                  -71259;1;0;false;false;;;;;;
                                  -71260;12;0;false;false;0;0;0;;;
                                  -71272;1;0;false;false;;;;;;
                                  -71273;1;0;false;false;0;0;0;;;
                                  -71274;1;0;false;false;;;;;;
                                  -71275;2;0;false;false;0;0;0;;;
                                  -71277;1;0;false;false;;;;;;
                                  -71278;1;0;false;false;0;0;0;;;
                                  -71279;4;0;false;false;;;;;;
                                  -71283;33;0;false;false;0;0;0;;;
                                  -71316;1;0;false;false;;;;;;
                                  -71317;1;0;false;false;0;0;0;;;
                                  -71318;1;0;false;false;;;;;;
                                  -71319;12;0;false;false;0;0;0;;;
                                  -71331;1;0;false;false;;;;;;
                                  -71332;3;0;false;false;0;0;0;;;
                                  -71335;1;0;false;false;;;;;;
                                  -71336;12;0;false;false;0;0;0;;;
                                  -71348;1;0;false;false;;;;;;
                                  -71349;19;0;false;false;0;0;0;;;
                                  -71368;3;0;false;false;;;;;;
                                  -71371;1;0;false;false;0;0;0;;;
                                  -71372;2;0;false;false;;;;;;
                                  -71374;1;0;false;false;0;0;0;;;
                                  -71375;2;0;false;false;;;;;;
                                  -71377;3;0;false;false;63;95;191;;;
                                  -71380;3;0;false;false;;;;;;
                                  -71383;1;0;false;false;63;95;191;;;
                                  -71384;1;0;false;false;;;;;;
                                  -71385;7;0;false;false;63;95;191;;;
                                  -71392;1;0;false;false;;;;;;
                                  -71393;3;0;false;false;63;95;191;;;
                                  -71396;1;0;false;false;;;;;;
                                  -71397;6;0;false;false;63;95;191;;;
                                  -71403;1;0;false;false;;;;;;
                                  -71404;10;0;false;false;63;95;191;;;
                                  -71414;3;0;false;false;;;;;;
                                  -71417;1;0;false;false;63;95;191;;;
                                  -71418;1;0;false;false;;;;;;
                                  -71419;3;0;false;false;127;127;159;;;
                                  -71422;3;0;false;false;;;;;;
                                  -71425;1;0;false;false;63;95;191;;;
                                  -71426;3;0;false;false;;;;;;
                                  -71429;1;0;false;false;63;95;191;;;
                                  -71430;1;0;false;false;;;;;;
                                  -71431;7;1;false;false;127;159;191;;;
                                  -71438;9;0;false;false;63;95;191;;;
                                  -71447;1;0;false;false;;;;;;
                                  -71448;1;0;false;false;63;95;191;;;
                                  -71449;1;0;false;false;;;;;;
                                  -71450;9;0;false;false;63;95;191;;;
                                  -71459;1;0;false;false;;;;;;
                                  -71460;5;0;false;false;63;95;191;;;
                                  -71465;1;0;false;false;;;;;;
                                  -71466;2;0;false;false;63;95;191;;;
                                  -71468;1;0;false;false;;;;;;
                                  -71469;4;0;false;false;63;95;191;;;
                                  -71473;1;0;false;false;;;;;;
                                  -71474;4;0;false;false;63;95;191;;;
                                  -71478;1;0;false;false;;;;;;
                                  -71479;3;0;false;false;63;95;191;;;
                                  -71482;1;0;false;false;;;;;;
                                  -71483;2;0;false;false;63;95;191;;;
                                  -71485;1;0;false;false;;;;;;
                                  -71486;4;0;false;false;63;95;191;;;
                                  -71490;1;0;false;false;;;;;;
                                  -71491;3;0;false;false;63;95;191;;;
                                  -71494;1;0;false;false;;;;;;
                                  -71495;4;0;false;false;63;95;191;;;
                                  -71499;1;0;false;false;;;;;;
                                  -71500;3;0;false;false;63;95;191;;;
                                  -71503;1;0;false;false;;;;;;
                                  -71504;9;0;false;false;63;95;191;;;
                                  -71513;1;0;false;false;;;;;;
                                  -71514;2;0;false;false;63;95;191;;;
                                  -71516;1;0;false;false;;;;;;
                                  -71517;8;0;false;false;63;95;191;;;
                                  -71525;1;0;false;false;;;;;;
                                  -71526;6;0;false;false;63;95;191;;;
                                  -71532;3;0;false;false;;;;;;
                                  -71535;2;0;false;false;63;95;191;;;
                                  -71537;2;0;false;false;;;;;;
                                  -71539;4;1;false;false;127;0;85;;;
                                  -71543;1;0;false;false;;;;;;
                                  -71544;15;0;false;false;0;0;0;;;
                                  -71559;7;1;false;false;127;0;85;;;
                                  -71566;1;0;false;false;;;;;;
                                  -71567;10;0;false;false;0;0;0;;;
                                  -71577;1;0;false;false;;;;;;
                                  -71578;1;0;false;false;0;0;0;;;
                                  -71579;3;0;false;false;;;;;;
                                  -71582;3;1;false;false;127;0;85;;;
                                  -71585;1;0;false;false;;;;;;
                                  -71586;14;0;false;false;0;0;0;;;
                                  -71600;1;0;false;false;;;;;;
                                  -71601;1;0;false;false;0;0;0;;;
                                  -71602;1;0;false;false;;;;;;
                                  -71603;12;0;false;false;0;0;0;;;
                                  -71615;3;0;false;false;;;;;;
                                  -71618;3;1;false;false;127;0;85;;;
                                  -71621;1;0;false;false;;;;;;
                                  -71622;12;0;false;false;0;0;0;;;
                                  -71634;1;0;false;false;;;;;;
                                  -71635;1;0;false;false;0;0;0;;;
                                  -71636;1;0;false;false;;;;;;
                                  -71637;12;0;false;false;0;0;0;;;
                                  -71649;3;0;false;false;;;;;;
                                  -71652;3;1;false;false;127;0;85;;;
                                  -71655;1;0;false;false;;;;;;
                                  -71656;6;0;false;false;0;0;0;;;
                                  -71662;1;0;false;false;;;;;;
                                  -71663;1;0;false;false;0;0;0;;;
                                  -71664;1;0;false;false;;;;;;
                                  -71665;23;0;false;false;0;0;0;;;
                                  -71688;6;0;false;false;;;;;;
                                  -71694;17;0;false;false;0;0;0;;;
                                  -71711;3;0;false;false;;;;;;
                                  -71714;33;0;false;false;63;127;95;;;
                                  -71747;1;0;false;false;;;;;;
                                  -71748;2;1;false;false;127;0;85;;;
                                  -71750;1;0;false;false;;;;;;
                                  -71751;13;0;false;false;0;0;0;;;
                                  -71764;1;0;false;false;;;;;;
                                  -71765;1;0;false;false;0;0;0;;;
                                  -71766;1;0;false;false;;;;;;
                                  -71767;14;0;false;false;0;0;0;;;
                                  -71781;1;0;false;false;;;;;;
                                  -71782;1;0;false;false;0;0;0;;;
                                  -71783;1;0;false;false;;;;;;
                                  -71784;2;0;false;false;0;0;0;;;
                                  -71786;1;0;false;false;;;;;;
                                  -71787;1;0;false;false;0;0;0;;;
                                  -71788;4;0;false;false;;;;;;
                                  -71792;64;0;false;false;63;127;95;;;
                                  -71856;2;0;false;false;;;;;;
                                  -71858;47;0;false;false;63;127;95;;;
                                  -71905;2;0;false;false;;;;;;
                                  -71907;3;1;false;false;127;0;85;;;
                                  -71910;1;0;false;false;;;;;;
                                  -71911;11;0;false;false;0;0;0;;;
                                  -71922;1;0;false;false;;;;;;
                                  -71923;1;0;false;false;0;0;0;;;
                                  -71924;1;0;false;false;;;;;;
                                  -71925;24;0;false;false;0;0;0;;;
                                  -71949;1;0;false;false;;;;;;
                                  -71950;8;0;false;false;0;0;0;;;
                                  -71958;4;0;false;false;;;;;;
                                  -71962;3;1;false;false;127;0;85;;;
                                  -71965;1;0;false;false;;;;;;
                                  -71966;9;0;false;false;0;0;0;;;
                                  -71975;1;0;false;false;;;;;;
                                  -71976;1;0;false;false;0;0;0;;;
                                  -71977;1;0;false;false;;;;;;
                                  -71978;22;0;false;false;0;0;0;;;
                                  -72000;1;0;false;false;;;;;;
                                  -72001;8;0;false;false;0;0;0;;;
                                  -72009;4;0;false;false;;;;;;
                                  -72013;2;1;false;false;127;0;85;;;
                                  -72015;1;0;false;false;;;;;;
                                  -72016;10;0;false;false;0;0;0;;;
                                  -72026;1;0;false;false;;;;;;
                                  -72027;1;0;false;false;0;0;0;;;
                                  -72028;1;0;false;false;;;;;;
                                  -72029;11;0;false;false;0;0;0;;;
                                  -72040;1;0;false;false;;;;;;
                                  -72041;1;0;false;false;0;0;0;;;
                                  -72042;1;0;false;false;;;;;;
                                  -72043;2;0;false;false;0;0;0;;;
                                  -72045;1;0;false;false;;;;;;
                                  -72046;1;0;false;false;0;0;0;;;
                                  -72047;5;0;false;false;;;;;;
                                  -72052;32;0;false;false;0;0;0;;;
                                  -72084;1;0;false;false;;;;;;
                                  -72085;9;0;false;false;0;0;0;;;
                                  -72094;1;0;false;false;;;;;;
                                  -72095;1;0;false;false;0;0;0;;;
                                  -72096;1;0;false;false;;;;;;
                                  -72097;12;0;false;false;0;0;0;;;
                                  -72109;1;0;false;false;;;;;;
                                  -72110;4;1;false;false;127;0;85;;;
                                  -72114;2;0;false;false;0;0;0;;;
                                  -72116;4;0;false;false;;;;;;
                                  -72120;1;0;false;false;0;0;0;;;
                                  -72121;4;0;false;false;;;;;;
                                  -72125;2;1;false;false;127;0;85;;;
                                  -72127;1;0;false;false;;;;;;
                                  -72128;11;0;false;false;0;0;0;;;
                                  -72139;1;0;false;false;;;;;;
                                  -72140;1;0;false;false;0;0;0;;;
                                  -72141;5;0;false;false;;;;;;
                                  -72146;21;0;false;false;0;0;0;;;
                                  -72167;4;0;false;false;;;;;;
                                  -72171;1;0;false;false;0;0;0;;;
                                  -72172;3;0;false;false;;;;;;
                                  -72175;1;0;false;false;0;0;0;;;
                                  -72176;2;0;false;false;;;;;;
                                  -72178;1;0;false;false;0;0;0;;;
                                  -72179;2;0;false;false;;;;;;
                                  -72181;6;1;false;false;127;0;85;;;
                                  -72187;1;0;false;false;;;;;;
                                  -72188;5;0;false;false;0;0;0;;;
                                  -72193;1;0;false;false;;;;;;
                                  -72194;11;0;false;false;0;0;0;;;
                                  -72205;1;0;false;false;;;;;;
                                  -72206;1;0;false;false;0;0;0;;;
                                  -72207;3;1;false;false;127;0;85;;;
                                  -72210;1;0;false;false;;;;;;
                                  -72211;6;0;false;false;0;0;0;;;
                                  -72217;1;0;false;false;;;;;;
                                  -72218;3;1;false;false;127;0;85;;;
                                  -72221;1;0;false;false;;;;;;
                                  -72222;6;0;false;false;0;0;0;;;
                                  -72228;1;0;false;false;;;;;;
                                  -72229;7;1;false;false;127;0;85;;;
                                  -72236;1;0;false;false;;;;;;
                                  -72237;8;0;false;false;0;0;0;;;
                                  -72245;1;0;false;false;;;;;;
                                  -72246;1;0;false;false;0;0;0;;;
                                  -72247;3;0;false;false;;;;;;
                                  -72250;14;0;false;false;0;0;0;;;
                                  -72264;3;0;false;false;;;;;;
                                  -72267;3;1;false;false;127;0;85;;;
                                  -72270;1;0;false;false;;;;;;
                                  -72271;6;0;false;false;0;0;0;;;
                                  -72277;1;0;false;false;;;;;;
                                  -72278;6;0;false;false;0;0;0;;;
                                  -72284;1;0;false;false;;;;;;
                                  -72285;7;0;false;false;0;0;0;;;
                                  -72292;3;0;false;false;;;;;;
                                  -72295;7;1;false;false;127;0;85;;;
                                  -72302;1;0;false;false;;;;;;
                                  -72303;10;0;false;false;0;0;0;;;
                                  -72313;1;0;false;false;;;;;;
                                  -72314;1;0;false;false;0;0;0;;;
                                  -72315;1;0;false;false;;;;;;
                                  -72316;11;0;false;false;0;0;0;;;
                                  -72327;1;0;false;false;;;;;;
                                  -72328;1;0;false;false;0;0;0;;;
                                  -72329;1;0;false;false;;;;;;
                                  -72330;11;0;false;false;0;0;0;;;
                                  -72341;1;0;false;false;;;;;;
                                  -72342;2;0;false;false;0;0;0;;;
                                  -72344;1;0;false;false;;;;;;
                                  -72345;2;0;false;false;0;0;0;;;
                                  -72347;6;0;false;false;;;;;;
                                  -72353;2;1;false;false;127;0;85;;;
                                  -72355;1;0;false;false;;;;;;
                                  -72356;12;0;false;false;0;0;0;;;
                                  -72368;1;0;false;false;;;;;;
                                  -72369;1;0;false;false;0;0;0;;;
                                  -72370;4;0;false;false;;;;;;
                                  -72374;5;0;false;false;0;0;0;;;
                                  -72379;1;0;false;false;;;;;;
                                  -72380;1;0;false;false;0;0;0;;;
                                  -72381;1;0;false;false;;;;;;
                                  -72382;2;0;false;false;0;0;0;;;
                                  -72384;3;0;false;false;;;;;;
                                  -72387;1;0;false;false;0;0;0;;;
                                  -72388;1;0;false;false;;;;;;
                                  -72389;4;1;false;false;127;0;85;;;
                                  -72393;1;0;false;false;;;;;;
                                  -72394;1;0;false;false;0;0;0;;;
                                  -72395;4;0;false;false;;;;;;
                                  -72399;5;0;false;false;0;0;0;;;
                                  -72404;1;0;false;false;;;;;;
                                  -72405;1;0;false;false;0;0;0;;;
                                  -72406;1;0;false;false;;;;;;
                                  -72407;23;0;false;false;0;0;0;;;
                                  -72430;3;0;false;false;;;;;;
                                  -72433;1;0;false;false;0;0;0;;;
                                  -72434;3;0;false;false;;;;;;
                                  -72437;2;1;false;false;127;0;85;;;
                                  -72439;1;0;false;false;;;;;;
                                  -72440;6;0;false;false;0;0;0;;;
                                  -72446;1;0;false;false;;;;;;
                                  -72447;2;0;false;false;0;0;0;;;
                                  -72449;1;0;false;false;;;;;;
                                  -72450;12;0;false;false;0;0;0;;;
                                  -72462;1;0;false;false;;;;;;
                                  -72463;1;0;false;false;0;0;0;;;
                                  -72464;4;0;false;false;;;;;;
                                  -72468;5;0;false;false;0;0;0;;;
                                  -72473;1;0;false;false;;;;;;
                                  -72474;1;0;false;false;0;0;0;;;
                                  -72475;1;0;false;false;;;;;;
                                  -72476;6;0;false;false;0;0;0;;;
                                  -72482;3;0;false;false;;;;;;
                                  -72485;1;0;false;false;0;0;0;;;
                                  -72486;4;0;false;false;;;;;;
                                  -72490;4;1;false;false;127;0;85;;;
                                  -72494;1;0;false;false;;;;;;
                                  -72495;1;0;false;false;0;0;0;;;
                                  -72496;4;0;false;false;;;;;;
                                  -72500;5;0;false;false;0;0;0;;;
                                  -72505;1;0;false;false;;;;;;
                                  -72506;1;0;false;false;0;0;0;;;
                                  -72507;1;0;false;false;;;;;;
                                  -72508;14;0;false;false;0;0;0;;;
                                  -72522;3;0;false;false;;;;;;
                                  -72525;1;0;false;false;0;0;0;;;
                                  -72526;3;0;false;false;;;;;;
                                  -72529;2;1;false;false;127;0;85;;;
                                  -72531;1;0;false;false;;;;;;
                                  -72532;6;0;false;false;0;0;0;;;
                                  -72538;1;0;false;false;;;;;;
                                  -72539;2;0;false;false;0;0;0;;;
                                  -72541;1;0;false;false;;;;;;
                                  -72542;12;0;false;false;0;0;0;;;
                                  -72554;1;0;false;false;;;;;;
                                  -72555;1;0;false;false;0;0;0;;;
                                  -72556;4;0;false;false;;;;;;
                                  -72560;9;0;false;false;0;0;0;;;
                                  -72569;1;0;false;false;;;;;;
                                  -72570;16;0;false;false;0;0;0;;;
                                  -72586;1;0;false;false;;;;;;
                                  -72587;1;0;false;false;0;0;0;;;
                                  -72588;1;0;false;false;;;;;;
                                  -72589;10;0;false;false;0;0;0;;;
                                  -72599;4;0;false;false;;;;;;
                                  -72603;2;1;false;false;127;0;85;;;
                                  -72605;1;0;false;false;;;;;;
                                  -72606;10;0;false;false;0;0;0;;;
                                  -72616;1;0;false;false;;;;;;
                                  -72617;1;0;false;false;0;0;0;;;
                                  -72618;5;0;false;false;;;;;;
                                  -72623;73;0;false;false;63;127;95;;;
                                  -72696;3;0;false;false;;;;;;
                                  -72699;54;0;false;false;63;127;95;;;
                                  -72753;3;0;false;false;;;;;;
                                  -72756;16;0;false;false;0;0;0;;;
                                  -72772;1;0;false;false;;;;;;
                                  -72773;1;0;false;false;0;0;0;;;
                                  -72774;1;0;false;false;;;;;;
                                  -72775;3;1;false;false;127;0;85;;;
                                  -72778;1;0;false;false;;;;;;
                                  -72779;18;0;false;false;0;0;0;;;
                                  -72797;4;1;false;false;127;0;85;;;
                                  -72801;1;0;false;false;0;0;0;;;
                                  -72802;1;0;false;false;;;;;;
                                  -72803;16;0;false;false;0;0;0;;;
                                  -72819;5;0;false;false;;;;;;
                                  -72824;2;1;false;false;127;0;85;;;
                                  -72826;1;0;false;false;;;;;;
                                  -72827;13;0;false;false;0;0;0;;;
                                  -72840;1;0;false;false;;;;;;
                                  -72841;1;0;false;false;0;0;0;;;
                                  -72842;6;0;false;false;;;;;;
                                  -72848;5;0;false;false;0;0;0;;;
                                  -72853;1;0;false;false;;;;;;
                                  -72854;1;0;false;false;0;0;0;;;
                                  -72855;1;0;false;false;;;;;;
                                  -72856;30;0;false;false;0;0;0;;;
                                  -72886;5;0;false;false;;;;;;
                                  -72891;1;0;false;false;0;0;0;;;
                                  -72892;4;0;false;false;;;;;;
                                  -72896;1;0;false;false;0;0;0;;;
                                  -72897;4;0;false;false;;;;;;
                                  -72901;51;0;false;false;63;127;95;;;
                                  -72952;2;0;false;false;;;;;;
                                  -72954;51;0;false;false;63;127;95;;;
                                  -73005;2;0;false;false;;;;;;
                                  -73007;28;0;false;false;63;127;95;;;
                                  -73035;2;0;false;false;;;;;;
                                  -73037;3;1;false;false;127;0;85;;;
                                  -73040;1;0;false;false;;;;;;
                                  -73041;12;0;false;false;0;0;0;;;
                                  -73053;1;0;false;false;;;;;;
                                  -73054;1;0;false;false;0;0;0;;;
                                  -73055;1;0;false;false;;;;;;
                                  -73056;8;0;false;false;0;0;0;;;
                                  -73064;1;0;false;false;;;;;;
                                  -73065;7;0;false;false;0;0;0;;;
                                  -73072;1;0;false;false;;;;;;
                                  -73073;31;0;false;false;0;0;0;;;
                                  -73104;1;0;false;false;;;;;;
                                  -73105;1;0;false;false;0;0;0;;;
                                  -73106;1;0;false;false;;;;;;
                                  -73107;12;0;false;false;0;0;0;;;
                                  -73119;4;0;false;false;;;;;;
                                  -73123;29;0;false;false;0;0;0;;;
                                  -73152;1;0;false;false;;;;;;
                                  -73153;14;0;false;false;0;0;0;;;
                                  -73167;4;0;false;false;;;;;;
                                  -73171;5;0;false;false;0;0;0;;;
                                  -73176;1;0;false;false;;;;;;
                                  -73177;1;0;false;false;0;0;0;;;
                                  -73178;1;0;false;false;;;;;;
                                  -73179;27;0;false;false;0;0;0;;;
                                  -73206;1;0;false;false;;;;;;
                                  -73207;1;0;false;false;0;0;0;;;
                                  -73208;1;0;false;false;;;;;;
                                  -73209;10;0;false;false;0;0;0;;;
                                  -73219;1;0;false;false;;;;;;
                                  -73220;1;0;false;false;0;0;0;;;
                                  -73221;1;0;false;false;;;;;;
                                  -73222;12;0;false;false;0;0;0;;;
                                  -73234;3;0;false;false;;;;;;
                                  -73237;1;0;false;false;0;0;0;;;
                                  -73238;3;0;false;false;;;;;;
                                  -73241;4;1;false;false;127;0;85;;;
                                  -73245;3;0;false;false;;;;;;
                                  -73248;2;1;false;false;127;0;85;;;
                                  -73250;1;0;false;false;;;;;;
                                  -73251;9;0;false;false;0;0;0;;;
                                  -73260;1;0;false;false;;;;;;
                                  -73261;2;0;false;false;0;0;0;;;
                                  -73263;1;0;false;false;;;;;;
                                  -73264;12;0;false;false;0;0;0;;;
                                  -73276;1;0;false;false;;;;;;
                                  -73277;1;0;false;false;0;0;0;;;
                                  -73278;4;0;false;false;;;;;;
                                  -73282;55;0;false;false;63;127;95;;;
                                  -73337;2;0;false;false;;;;;;
                                  -73339;46;0;false;false;63;127;95;;;
                                  -73385;2;0;false;false;;;;;;
                                  -73387;14;0;false;false;0;0;0;;;
                                  -73401;1;0;false;false;;;;;;
                                  -73402;14;0;false;false;0;0;0;;;
                                  -73416;1;0;false;false;;;;;;
                                  -73417;1;0;false;false;0;0;0;;;
                                  -73418;1;0;false;false;;;;;;
                                  -73419;3;1;false;false;127;0;85;;;
                                  -73422;1;0;false;false;;;;;;
                                  -73423;24;0;false;false;0;0;0;;;
                                  -73447;1;0;false;false;;;;;;
                                  -73448;16;0;false;false;0;0;0;;;
                                  -73464;4;0;false;false;;;;;;
                                  -73468;32;0;false;false;0;0;0;;;
                                  -73500;4;0;false;false;;;;;;
                                  -73504;5;0;false;false;0;0;0;;;
                                  -73509;1;0;false;false;;;;;;
                                  -73510;1;0;false;false;0;0;0;;;
                                  -73511;1;0;false;false;;;;;;
                                  -73512;30;0;false;false;0;0;0;;;
                                  -73542;3;0;false;false;;;;;;
                                  -73545;1;0;false;false;0;0;0;;;
                                  -73546;3;0;false;false;;;;;;
                                  -73549;2;1;false;false;127;0;85;;;
                                  -73551;1;0;false;false;;;;;;
                                  -73552;6;0;false;false;0;0;0;;;
                                  -73558;1;0;false;false;;;;;;
                                  -73559;2;0;false;false;0;0;0;;;
                                  -73561;1;0;false;false;;;;;;
                                  -73562;12;0;false;false;0;0;0;;;
                                  -73574;1;0;false;false;;;;;;
                                  -73575;1;0;false;false;0;0;0;;;
                                  -73576;4;0;false;false;;;;;;
                                  -73580;6;0;false;false;0;0;0;;;
                                  -73586;1;0;false;false;;;;;;
                                  -73587;1;0;false;false;0;0;0;;;
                                  -73588;1;0;false;false;;;;;;
                                  -73589;6;0;false;false;0;0;0;;;
                                  -73595;3;0;false;false;;;;;;
                                  -73598;1;0;false;false;0;0;0;;;
                                  -73599;4;0;false;false;;;;;;
                                  -73603;4;1;false;false;127;0;85;;;
                                  -73607;1;0;false;false;;;;;;
                                  -73608;1;0;false;false;0;0;0;;;
                                  -73609;4;0;false;false;;;;;;
                                  -73613;6;0;false;false;0;0;0;;;
                                  -73619;1;0;false;false;;;;;;
                                  -73620;1;0;false;false;0;0;0;;;
                                  -73621;1;0;false;false;;;;;;
                                  -73622;5;0;false;false;0;0;0;;;
                                  -73627;1;0;false;false;;;;;;
                                  -73628;1;0;false;false;0;0;0;;;
                                  -73629;1;0;false;false;;;;;;
                                  -73630;10;0;false;false;0;0;0;;;
                                  -73640;1;0;false;false;;;;;;
                                  -73641;1;0;false;false;0;0;0;;;
                                  -73642;1;0;false;false;;;;;;
                                  -73643;9;0;false;false;0;0;0;;;
                                  -73652;1;0;false;false;;;;;;
                                  -73653;1;0;false;false;0;0;0;;;
                                  -73654;1;0;false;false;;;;;;
                                  -73655;13;0;false;false;0;0;0;;;
                                  -73668;3;0;false;false;;;;;;
                                  -73671;1;0;false;false;0;0;0;;;
                                  -73672;3;0;false;false;;;;;;
                                  -73675;46;0;false;false;63;127;95;;;
                                  -73721;1;0;false;false;;;;;;
                                  -73722;2;1;false;false;127;0;85;;;
                                  -73724;1;0;false;false;;;;;;
                                  -73725;6;0;false;false;0;0;0;;;
                                  -73731;1;0;false;false;;;;;;
                                  -73732;2;0;false;false;0;0;0;;;
                                  -73734;1;0;false;false;;;;;;
                                  -73735;2;0;false;false;0;0;0;;;
                                  -73737;1;0;false;false;;;;;;
                                  -73738;1;0;false;false;0;0;0;;;
                                  -73739;4;0;false;false;;;;;;
                                  -73743;5;0;false;false;0;0;0;;;
                                  -73748;1;0;false;false;;;;;;
                                  -73749;1;0;false;false;0;0;0;;;
                                  -73750;1;0;false;false;;;;;;
                                  -73751;14;0;false;false;0;0;0;;;
                                  -73765;3;0;false;false;;;;;;
                                  -73768;1;0;false;false;0;0;0;;;
                                  -73769;3;0;false;false;;;;;;
                                  -73772;2;1;false;false;127;0;85;;;
                                  -73774;1;0;false;false;;;;;;
                                  -73775;7;0;false;false;0;0;0;;;
                                  -73782;1;0;false;false;;;;;;
                                  -73783;2;0;false;false;0;0;0;;;
                                  -73785;1;0;false;false;;;;;;
                                  -73786;2;0;false;false;0;0;0;;;
                                  -73788;1;0;false;false;;;;;;
                                  -73789;1;0;false;false;0;0;0;;;
                                  -73790;4;0;false;false;;;;;;
                                  -73794;2;1;false;false;127;0;85;;;
                                  -73796;1;0;false;false;;;;;;
                                  -73797;12;0;false;false;0;0;0;;;
                                  -73809;1;0;false;false;;;;;;
                                  -73810;1;0;false;false;0;0;0;;;
                                  -73811;5;0;false;false;;;;;;
                                  -73816;6;0;false;false;0;0;0;;;
                                  -73822;1;0;false;false;;;;;;
                                  -73823;1;0;false;false;0;0;0;;;
                                  -73824;1;0;false;false;;;;;;
                                  -73825;11;0;false;false;0;0;0;;;
                                  -73836;4;0;false;false;;;;;;
                                  -73840;1;0;false;false;0;0;0;;;
                                  -73841;4;0;false;false;;;;;;
                                  -73845;4;1;false;false;127;0;85;;;
                                  -73849;1;0;false;false;;;;;;
                                  -73850;1;0;false;false;0;0;0;;;
                                  -73851;5;0;false;false;;;;;;
                                  -73856;6;0;false;false;0;0;0;;;
                                  -73862;1;0;false;false;;;;;;
                                  -73863;1;0;false;false;0;0;0;;;
                                  -73864;1;0;false;false;;;;;;
                                  -73865;15;0;false;false;0;0;0;;;
                                  -73880;4;0;false;false;;;;;;
                                  -73884;1;0;false;false;0;0;0;;;
                                  -73885;3;0;false;false;;;;;;
                                  -73888;1;0;false;false;0;0;0;;;
                                  -73889;3;0;false;false;;;;;;
                                  -73892;9;0;false;false;0;0;0;;;
                                  -73901;1;0;false;false;;;;;;
                                  -73902;4;0;false;false;0;0;0;;;
                                  -73906;1;0;false;false;;;;;;
                                  -73907;1;0;false;false;0;0;0;;;
                                  -73908;1;0;false;false;;;;;;
                                  -73909;14;0;false;false;0;0;0;;;
                                  -73923;1;0;false;false;;;;;;
                                  -73924;2;0;false;false;0;0;0;;;
                                  -73926;1;0;false;false;;;;;;
                                  -73927;6;0;false;false;0;0;0;;;
                                  -73933;1;0;false;false;;;;;;
                                  -73934;8;0;false;false;0;0;0;;;
                                  -73942;3;0;false;false;;;;;;
                                  -73945;6;1;false;false;127;0;85;;;
                                  -73951;1;0;false;false;;;;;;
                                  -73952;3;1;false;false;127;0;85;;;
                                  -73955;1;0;false;false;;;;;;
                                  -73956;5;0;false;false;0;0;0;;;
                                  -73961;1;0;false;false;;;;;;
                                  -73962;12;0;false;false;0;0;0;;;
                                  -73974;1;0;false;false;;;;;;
                                  -73975;13;0;false;false;0;0;0;;;
                                  -73988;2;0;false;false;;;;;;
                                  -73990;1;0;false;false;0;0;0;;;
                                  -73991;2;0;false;false;;;;;;
                                  -73993;3;0;false;false;63;95;191;;;
                                  -73996;3;0;false;false;;;;;;
                                  -73999;1;0;false;false;63;95;191;;;
                                  -74000;1;0;false;false;;;;;;
                                  -74001;6;0;false;false;63;95;191;;;
                                  -74007;1;0;false;false;;;;;;
                                  -74008;3;0;false;false;63;95;191;;;
                                  -74011;1;0;false;false;;;;;;
                                  -74012;8;0;false;false;63;95;191;;;
                                  -74020;1;0;false;false;;;;;;
                                  -74021;4;0;false;false;63;95;191;;;
                                  -74025;1;0;false;false;;;;;;
                                  -74026;2;0;false;false;63;95;191;;;
                                  -74028;1;0;false;false;;;;;;
                                  -74029;3;0;false;false;63;95;191;;;
                                  -74032;1;0;false;false;;;;;;
                                  -74033;6;0;false;false;127;127;159;;;
                                  -74039;13;0;false;false;63;95;191;;;
                                  -74052;7;0;false;false;127;127;159;;;
                                  -74059;1;0;false;false;;;;;;
                                  -74060;10;0;false;false;63;95;191;;;
                                  -74070;3;0;false;false;;;;;;
                                  -74073;1;0;false;false;63;95;191;;;
                                  -74074;1;0;false;false;;;;;;
                                  -74075;3;0;false;false;63;95;191;;;
                                  -74078;1;0;false;false;;;;;;
                                  -74079;4;0;false;false;63;95;191;;;
                                  -74083;1;0;false;false;;;;;;
                                  -74084;4;0;false;false;63;95;191;;;
                                  -74088;1;0;false;false;;;;;;
                                  -74089;2;0;false;false;63;95;191;;;
                                  -74091;1;0;false;false;;;;;;
                                  -74092;3;0;false;false;63;95;191;;;
                                  -74095;1;0;false;false;;;;;;
                                  -74096;2;0;false;false;63;95;191;;;
                                  -74098;1;0;false;false;;;;;;
                                  -74099;3;0;false;false;63;95;191;;;
                                  -74102;1;0;false;false;;;;;;
                                  -74103;9;0;false;false;63;95;191;;;
                                  -74112;1;0;false;false;;;;;;
                                  -74113;2;0;false;false;63;95;191;;;
                                  -74115;1;0;false;false;;;;;;
                                  -74116;5;0;false;false;63;95;191;;;
                                  -74121;1;0;false;false;;;;;;
                                  -74122;4;0;false;false;63;95;191;;;
                                  -74126;1;0;false;false;;;;;;
                                  -74127;6;0;false;false;63;95;191;;;
                                  -74133;1;0;false;false;;;;;;
                                  -74134;3;0;false;false;63;95;191;;;
                                  -74137;1;0;false;false;;;;;;
                                  -74138;3;0;false;false;63;95;191;;;
                                  -74141;1;0;false;false;;;;;;
                                  -74142;7;0;false;false;63;95;191;;;
                                  -74149;3;0;false;false;;;;;;
                                  -74152;1;0;false;false;63;95;191;;;
                                  -74153;1;0;false;false;;;;;;
                                  -74154;3;0;false;false;63;95;191;;;
                                  -74157;1;0;false;false;;;;;;
                                  -74158;6;0;false;false;127;127;159;;;
                                  -74164;13;0;false;false;63;95;191;;;
                                  -74177;7;0;false;false;127;127;159;;;
                                  -74184;1;0;false;false;;;;;;
                                  -74185;9;0;false;false;63;95;191;;;
                                  -74194;1;0;false;false;;;;;;
                                  -74195;2;0;false;false;63;95;191;;;
                                  -74197;1;0;false;false;;;;;;
                                  -74198;4;0;false;false;63;95;191;;;
                                  -74202;1;0;false;false;;;;;;
                                  -74203;3;0;false;false;63;95;191;;;
                                  -74206;1;0;false;false;;;;;;
                                  -74207;4;0;false;false;63;95;191;;;
                                  -74211;1;0;false;false;;;;;;
                                  -74212;4;0;false;false;63;95;191;;;
                                  -74216;1;0;false;false;;;;;;
                                  -74217;2;0;false;false;63;95;191;;;
                                  -74219;3;0;false;false;;;;;;
                                  -74222;1;0;false;false;63;95;191;;;
                                  -74223;2;0;false;false;;;;;;
                                  -74225;11;0;false;false;63;95;191;;;
                                  -74236;1;0;false;false;;;;;;
                                  -74237;2;0;false;false;63;95;191;;;
                                  -74239;1;0;false;false;;;;;;
                                  -74240;8;0;false;false;63;95;191;;;
                                  -74248;1;0;false;false;;;;;;
                                  -74249;11;0;false;false;63;95;191;;;
                                  -74260;1;0;false;false;;;;;;
                                  -74261;5;0;false;false;63;95;191;;;
                                  -74266;1;0;false;false;;;;;;
                                  -74267;2;0;false;false;63;95;191;;;
                                  -74269;1;0;false;false;;;;;;
                                  -74270;14;0;false;false;63;95;191;;;
                                  -74284;1;0;false;false;;;;;;
                                  -74285;2;0;false;false;63;95;191;;;
                                  -74287;4;0;false;false;;;;;;
                                  -74291;1;0;false;false;63;95;191;;;
                                  -74292;2;0;false;false;;;;;;
                                  -74294;2;0;false;false;63;95;191;;;
                                  -74296;1;0;false;false;;;;;;
                                  -74297;4;0;false;false;63;95;191;;;
                                  -74301;1;0;false;false;;;;;;
                                  -74302;7;0;false;false;63;95;191;;;
                                  -74309;3;0;false;false;;;;;;
                                  -74312;1;0;false;false;63;95;191;;;
                                  -74313;4;0;false;false;;;;;;
                                  -74317;1;0;false;false;63;95;191;;;
                                  -74318;1;0;false;false;;;;;;
                                  -74319;3;0;false;false;127;127;159;;;
                                  -74322;3;0;false;false;;;;;;
                                  -74325;1;0;false;false;63;95;191;;;
                                  -74326;3;0;false;false;;;;;;
                                  -74329;1;0;false;false;63;95;191;;;
                                  -74330;1;0;false;false;;;;;;
                                  -74331;11;1;false;false;127;159;191;;;
                                  -74342;12;0;false;false;63;95;191;;;
                                  -74354;1;0;false;false;;;;;;
                                  -74355;4;0;false;false;127;127;159;;;
                                  -74359;3;0;false;false;;;;;;
                                  -74362;1;0;false;false;63;95;191;;;
                                  -74363;4;0;false;false;;;;;;
                                  -74367;4;0;false;false;127;127;159;;;
                                  -74371;21;0;false;false;63;95;191;;;
                                  -74392;1;0;false;false;;;;;;
                                  -74393;1;0;false;false;127;127;159;;;
                                  -74394;1;0;false;false;;;;;;
                                  -74395;2;0;false;false;63;95;191;;;
                                  -74397;1;0;false;false;;;;;;
                                  -74398;3;0;false;false;63;95;191;;;
                                  -74401;1;0;false;false;;;;;;
                                  -74402;8;0;false;false;63;95;191;;;
                                  -74410;1;0;false;false;;;;;;
                                  -74411;3;0;false;false;63;95;191;;;
                                  -74414;1;0;false;false;;;;;;
                                  -74415;4;0;false;false;63;95;191;;;
                                  -74419;1;0;false;false;;;;;;
                                  -74420;8;0;false;false;63;95;191;;;
                                  -74428;5;0;false;false;127;127;159;;;
                                  -74433;3;0;false;false;;;;;;
                                  -74436;1;0;false;false;63;95;191;;;
                                  -74437;4;0;false;false;;;;;;
                                  -74441;4;0;false;false;127;127;159;;;
                                  -74445;27;0;false;false;63;95;191;;;
                                  -74472;1;0;false;false;;;;;;
                                  -74473;1;0;false;false;127;127;159;;;
                                  -74474;1;0;false;false;;;;;;
                                  -74475;2;0;false;false;63;95;191;;;
                                  -74477;1;0;false;false;;;;;;
                                  -74478;3;0;false;false;63;95;191;;;
                                  -74481;1;0;false;false;;;;;;
                                  -74482;6;0;false;false;63;95;191;;;
                                  -74488;1;0;false;false;;;;;;
                                  -74489;4;0;false;false;63;95;191;;;
                                  -74493;1;0;false;false;;;;;;
                                  -74494;3;0;false;false;63;95;191;;;
                                  -74497;1;0;false;false;;;;;;
                                  -74498;6;0;false;false;63;95;191;;;
                                  -74504;1;0;false;false;;;;;;
                                  -74505;4;0;false;false;63;95;191;;;
                                  -74509;1;0;false;false;;;;;;
                                  -74510;7;0;false;false;63;95;191;;;
                                  -74517;1;0;false;false;;;;;;
                                  -74518;3;0;false;false;63;95;191;;;
                                  -74521;1;0;false;false;;;;;;
                                  -74522;8;0;false;false;63;95;191;;;
                                  -74530;5;0;false;false;127;127;159;;;
                                  -74535;3;0;false;false;;;;;;
                                  -74538;1;0;false;false;63;95;191;;;
                                  -74539;1;0;false;false;;;;;;
                                  -74540;5;0;false;false;127;127;159;;;
                                  -74545;3;0;false;false;;;;;;
                                  -74548;2;0;false;false;63;95;191;;;
                                  -74550;2;0;false;false;;;;;;
                                  -74552;6;1;false;false;127;0;85;;;
                                  -74558;1;0;false;false;;;;;;
                                  -74559;4;1;false;false;127;0;85;;;
                                  -74563;1;0;false;false;;;;;;
                                  -74564;6;0;false;false;0;0;0;;;
                                  -74570;1;0;false;false;;;;;;
                                  -74571;1;0;false;false;0;0;0;;;
                                  -74572;3;0;false;false;;;;;;
                                  -74575;14;0;false;false;0;0;0;;;
                                  -74589;3;0;false;false;;;;;;
                                  -74592;20;0;false;false;0;0;0;;;
                                  -74612;2;0;false;false;;;;;;
                                  -74614;1;0;false;false;0;0;0;;;
                                  -74615;4;0;false;false;;;;;;
                                  -74619;3;0;false;false;63;95;191;;;
                                  -74622;3;0;false;false;;;;;;
                                  -74625;1;0;false;false;63;95;191;;;
                                  -74626;1;0;false;false;;;;;;
                                  -74627;6;0;false;false;63;95;191;;;
                                  -74633;1;0;false;false;;;;;;
                                  -74634;3;0;false;false;63;95;191;;;
                                  -74637;1;0;false;false;;;;;;
                                  -74638;8;0;false;false;63;95;191;;;
                                  -74646;1;0;false;false;;;;;;
                                  -74647;4;0;false;false;63;95;191;;;
                                  -74651;1;0;false;false;;;;;;
                                  -74652;2;0;false;false;63;95;191;;;
                                  -74654;1;0;false;false;;;;;;
                                  -74655;3;0;false;false;63;95;191;;;
                                  -74658;1;0;false;false;;;;;;
                                  -74659;9;0;false;false;63;95;191;;;
                                  -74668;1;0;false;false;;;;;;
                                  -74669;10;0;false;false;63;95;191;;;
                                  -74679;2;0;false;false;;;;;;
                                  -74681;3;0;false;false;63;95;191;;;
                                  -74684;1;0;false;false;;;;;;
                                  -74685;4;0;false;false;63;95;191;;;
                                  -74689;1;0;false;false;;;;;;
                                  -74690;4;0;false;false;63;95;191;;;
                                  -74694;1;0;false;false;;;;;;
                                  -74695;2;0;false;false;63;95;191;;;
                                  -74697;1;0;false;false;;;;;;
                                  -74698;3;0;false;false;63;95;191;;;
                                  -74701;1;0;false;false;;;;;;
                                  -74702;2;0;false;false;63;95;191;;;
                                  -74704;1;0;false;false;;;;;;
                                  -74705;3;0;false;false;63;95;191;;;
                                  -74708;4;0;false;false;;;;;;
                                  -74712;1;0;false;false;63;95;191;;;
                                  -74713;1;0;false;false;;;;;;
                                  -74714;9;0;false;false;63;95;191;;;
                                  -74723;1;0;false;false;;;;;;
                                  -74724;2;0;false;false;63;95;191;;;
                                  -74726;1;0;false;false;;;;;;
                                  -74727;5;0;false;false;63;95;191;;;
                                  -74732;1;0;false;false;;;;;;
                                  -74733;4;0;false;false;63;95;191;;;
                                  -74737;1;0;false;false;;;;;;
                                  -74738;6;0;false;false;63;95;191;;;
                                  -74744;1;0;false;false;;;;;;
                                  -74745;3;0;false;false;63;95;191;;;
                                  -74748;1;0;false;false;;;;;;
                                  -74749;3;0;false;false;63;95;191;;;
                                  -74752;1;0;false;false;;;;;;
                                  -74753;7;0;false;false;63;95;191;;;
                                  -74760;3;0;false;false;;;;;;
                                  -74763;1;0;false;false;63;95;191;;;
                                  -74764;4;0;false;false;;;;;;
                                  -74768;1;0;false;false;63;95;191;;;
                                  -74769;1;0;false;false;;;;;;
                                  -74770;3;0;false;false;127;127;159;;;
                                  -74773;3;0;false;false;63;95;191;;;
                                  -74776;1;0;false;false;;;;;;
                                  -74777;13;0;false;false;63;95;191;;;
                                  -74790;1;0;false;false;;;;;;
                                  -74791;2;0;false;false;63;95;191;;;
                                  -74793;2;0;false;false;;;;;;
                                  -74795;3;0;false;false;63;95;191;;;
                                  -74798;1;0;false;false;;;;;;
                                  -74799;2;0;false;false;63;95;191;;;
                                  -74801;1;0;false;false;;;;;;
                                  -74802;3;0;false;false;63;95;191;;;
                                  -74805;1;0;false;false;;;;;;
                                  -74806;9;0;false;false;63;95;191;;;
                                  -74815;1;0;false;false;;;;;;
                                  -74816;9;0;false;false;63;95;191;;;
                                  -74825;1;0;false;false;;;;;;
                                  -74826;7;0;false;false;63;95;191;;;
                                  -74833;1;0;false;false;;;;;;
                                  -74834;2;0;false;false;63;95;191;;;
                                  -74836;1;0;false;false;;;;;;
                                  -74837;5;0;false;false;63;95;191;;;
                                  -74842;4;0;false;false;;;;;;
                                  -74846;1;0;false;false;63;95;191;;;
                                  -74847;1;0;false;false;;;;;;
                                  -74848;6;0;false;false;127;127;159;;;
                                  -74854;3;0;false;false;63;95;191;;;
                                  -74857;7;0;false;false;127;127;159;;;
                                  -74864;1;0;false;false;63;95;191;;;
                                  -74865;2;0;false;false;;;;;;
                                  -74867;3;0;false;false;63;95;191;;;
                                  -74870;1;0;false;false;;;;;;
                                  -74871;6;0;false;false;127;127;159;;;
                                  -74877;13;0;false;false;63;95;191;;;
                                  -74890;7;0;false;false;127;127;159;;;
                                  -74897;2;0;false;false;;;;;;
                                  -74899;9;0;false;false;63;95;191;;;
                                  -74908;1;0;false;false;;;;;;
                                  -74909;2;0;false;false;63;95;191;;;
                                  -74911;4;0;false;false;;;;;;
                                  -74915;1;0;false;false;63;95;191;;;
                                  -74916;1;0;false;false;;;;;;
                                  -74917;4;0;false;false;63;95;191;;;
                                  -74921;1;0;false;false;;;;;;
                                  -74922;3;0;false;false;63;95;191;;;
                                  -74925;1;0;false;false;;;;;;
                                  -74926;4;0;false;false;63;95;191;;;
                                  -74930;1;0;false;false;;;;;;
                                  -74931;4;0;false;false;63;95;191;;;
                                  -74935;1;0;false;false;;;;;;
                                  -74936;2;0;false;false;63;95;191;;;
                                  -74938;1;0;false;false;;;;;;
                                  -74939;11;0;false;false;63;95;191;;;
                                  -74950;1;0;false;false;;;;;;
                                  -74951;2;0;false;false;63;95;191;;;
                                  -74953;1;0;false;false;;;;;;
                                  -74954;8;0;false;false;63;95;191;;;
                                  -74962;1;0;false;false;;;;;;
                                  -74963;11;0;false;false;63;95;191;;;
                                  -74974;1;0;false;false;;;;;;
                                  -74975;5;0;false;false;63;95;191;;;
                                  -74980;1;0;false;false;;;;;;
                                  -74981;2;0;false;false;63;95;191;;;
                                  -74983;1;0;false;false;;;;;;
                                  -74984;14;0;false;false;63;95;191;;;
                                  -74998;4;0;false;false;;;;;;
                                  -75002;1;0;false;false;63;95;191;;;
                                  -75003;1;0;false;false;;;;;;
                                  -75004;2;0;false;false;63;95;191;;;
                                  -75006;1;0;false;false;;;;;;
                                  -75007;2;0;false;false;63;95;191;;;
                                  -75009;1;0;false;false;;;;;;
                                  -75010;4;0;false;false;63;95;191;;;
                                  -75014;1;0;false;false;;;;;;
                                  -75015;7;0;false;false;63;95;191;;;
                                  -75022;2;0;false;false;;;;;;
                                  -75024;3;0;false;false;63;95;191;;;
                                  -75027;1;0;false;false;;;;;;
                                  -75028;6;0;false;false;127;127;159;;;
                                  -75034;23;0;false;false;63;95;191;;;
                                  -75057;7;0;false;false;127;127;159;;;
                                  -75064;4;0;false;false;;;;;;
                                  -75068;1;0;false;false;63;95;191;;;
                                  -75069;1;0;false;false;;;;;;
                                  -75070;9;0;false;false;63;95;191;;;
                                  -75079;1;0;false;false;;;;;;
                                  -75080;2;0;false;false;63;95;191;;;
                                  -75082;1;0;false;false;;;;;;
                                  -75083;4;0;false;false;63;95;191;;;
                                  -75087;1;0;false;false;;;;;;
                                  -75088;3;0;false;false;63;95;191;;;
                                  -75091;1;0;false;false;;;;;;
                                  -75092;4;0;false;false;63;95;191;;;
                                  -75096;1;0;false;false;;;;;;
                                  -75097;4;0;false;false;63;95;191;;;
                                  -75101;1;0;false;false;;;;;;
                                  -75102;2;0;false;false;63;95;191;;;
                                  -75104;1;0;false;false;;;;;;
                                  -75105;11;0;false;false;63;95;191;;;
                                  -75116;1;0;false;false;;;;;;
                                  -75117;2;0;false;false;63;95;191;;;
                                  -75119;1;0;false;false;;;;;;
                                  -75120;9;0;false;false;63;95;191;;;
                                  -75129;1;0;false;false;;;;;;
                                  -75130;4;0;false;false;63;95;191;;;
                                  -75134;1;0;false;false;;;;;;
                                  -75135;3;0;false;false;63;95;191;;;
                                  -75138;1;0;false;false;;;;;;
                                  -75139;7;0;false;false;63;95;191;;;
                                  -75146;4;0;false;false;;;;;;
                                  -75150;1;0;false;false;63;95;191;;;
                                  -75151;1;0;false;false;;;;;;
                                  -75152;4;0;false;false;63;95;191;;;
                                  -75156;1;0;false;false;;;;;;
                                  -75157;3;0;false;false;63;95;191;;;
                                  -75160;1;0;false;false;;;;;;
                                  -75161;6;0;false;false;63;95;191;;;
                                  -75167;1;0;false;false;;;;;;
                                  -75168;5;0;false;false;63;95;191;;;
                                  -75173;1;0;false;false;;;;;;
                                  -75174;7;0;false;false;63;95;191;;;
                                  -75181;4;0;false;false;127;127;159;;;
                                  -75185;3;0;false;false;;;;;;
                                  -75188;1;0;false;false;63;95;191;;;
                                  -75189;4;0;false;false;;;;;;
                                  -75193;1;0;false;false;63;95;191;;;
                                  -75194;1;0;false;false;;;;;;
                                  -75195;7;1;false;false;127;159;191;;;
                                  -75202;13;0;false;false;63;95;191;;;
                                  -75215;1;0;false;false;;;;;;
                                  -75216;9;0;false;false;63;95;191;;;
                                  -75225;1;0;false;false;;;;;;
                                  -75226;3;0;false;false;63;95;191;;;
                                  -75229;1;0;false;false;;;;;;
                                  -75230;4;0;false;false;63;95;191;;;
                                  -75234;1;0;false;false;;;;;;
                                  -75235;2;0;false;false;63;95;191;;;
                                  -75237;1;0;false;false;;;;;;
                                  -75238;9;0;false;false;63;95;191;;;
                                  -75247;3;0;false;false;;;;;;
                                  -75250;1;0;false;false;63;95;191;;;
                                  -75251;3;0;false;false;;;;;;
                                  -75254;1;0;false;false;63;95;191;;;
                                  -75255;1;0;false;false;;;;;;
                                  -75256;11;1;false;false;127;159;191;;;
                                  -75267;12;0;false;false;63;95;191;;;
                                  -75279;1;0;false;false;;;;;;
                                  -75280;4;0;false;false;127;127;159;;;
                                  -75284;3;0;false;false;;;;;;
                                  -75287;1;0;false;false;63;95;191;;;
                                  -75288;4;0;false;false;;;;;;
                                  -75292;4;0;false;false;127;127;159;;;
                                  -75296;21;0;false;false;63;95;191;;;
                                  -75317;1;0;false;false;;;;;;
                                  -75318;1;0;false;false;127;127;159;;;
                                  -75319;1;0;false;false;;;;;;
                                  -75320;2;0;false;false;63;95;191;;;
                                  -75322;1;0;false;false;;;;;;
                                  -75323;3;0;false;false;63;95;191;;;
                                  -75326;1;0;false;false;;;;;;
                                  -75327;8;0;false;false;63;95;191;;;
                                  -75335;1;0;false;false;;;;;;
                                  -75336;3;0;false;false;63;95;191;;;
                                  -75339;1;0;false;false;;;;;;
                                  -75340;4;0;false;false;63;95;191;;;
                                  -75344;1;0;false;false;;;;;;
                                  -75345;8;0;false;false;63;95;191;;;
                                  -75353;5;0;false;false;127;127;159;;;
                                  -75358;3;0;false;false;;;;;;
                                  -75361;1;0;false;false;63;95;191;;;
                                  -75362;4;0;false;false;;;;;;
                                  -75366;4;0;false;false;127;127;159;;;
                                  -75370;27;0;false;false;63;95;191;;;
                                  -75397;1;0;false;false;;;;;;
                                  -75398;1;0;false;false;127;127;159;;;
                                  -75399;1;0;false;false;;;;;;
                                  -75400;2;0;false;false;63;95;191;;;
                                  -75402;1;0;false;false;;;;;;
                                  -75403;3;0;false;false;63;95;191;;;
                                  -75406;1;0;false;false;;;;;;
                                  -75407;6;0;false;false;63;95;191;;;
                                  -75413;1;0;false;false;;;;;;
                                  -75414;4;0;false;false;63;95;191;;;
                                  -75418;1;0;false;false;;;;;;
                                  -75419;3;0;false;false;63;95;191;;;
                                  -75422;1;0;false;false;;;;;;
                                  -75423;6;0;false;false;63;95;191;;;
                                  -75429;1;0;false;false;;;;;;
                                  -75430;4;0;false;false;63;95;191;;;
                                  -75434;1;0;false;false;;;;;;
                                  -75435;7;0;false;false;63;95;191;;;
                                  -75442;1;0;false;false;;;;;;
                                  -75443;3;0;false;false;63;95;191;;;
                                  -75446;1;0;false;false;;;;;;
                                  -75447;8;0;false;false;63;95;191;;;
                                  -75455;5;0;false;false;127;127;159;;;
                                  -75460;3;0;false;false;;;;;;
                                  -75463;1;0;false;false;63;95;191;;;
                                  -75464;1;0;false;false;;;;;;
                                  -75465;5;0;false;false;127;127;159;;;
                                  -75470;3;0;false;false;;;;;;
                                  -75473;1;0;false;false;63;95;191;;;
                                  -75474;4;0;false;false;;;;;;
                                  -75478;1;0;false;false;63;95;191;;;
                                  -75479;1;0;false;false;;;;;;
                                  -75480;7;1;false;false;127;159;191;;;
                                  -75487;3;0;false;false;63;95;191;;;
                                  -75490;3;0;false;false;;;;;;
                                  -75493;2;0;false;false;63;95;191;;;
                                  -75495;2;0;false;false;;;;;;
                                  -75497;6;1;false;false;127;0;85;;;
                                  -75503;1;0;false;false;;;;;;
                                  -75504;4;1;false;false;127;0;85;;;
                                  -75508;1;0;false;false;;;;;;
                                  -75509;5;0;false;false;0;0;0;;;
                                  -75514;3;1;false;false;127;0;85;;;
                                  -75517;1;0;false;false;;;;;;
                                  -75518;14;0;false;false;0;0;0;;;
                                  -75532;1;0;false;false;;;;;;
                                  -75533;1;0;false;false;0;0;0;;;
                                  -75534;3;0;false;false;;;;;;
                                  -75537;14;0;false;false;0;0;0;;;
                                  -75551;3;0;false;false;;;;;;
                                  -75554;2;1;false;false;127;0;85;;;
                                  -75556;1;0;false;false;;;;;;
                                  -75557;14;0;false;false;0;0;0;;;
                                  -75571;1;0;false;false;;;;;;
                                  -75572;2;0;false;false;0;0;0;;;
                                  -75574;1;0;false;false;;;;;;
                                  -75575;13;0;false;false;0;0;0;;;
                                  -75588;1;0;false;false;;;;;;
                                  -75589;2;0;false;false;0;0;0;;;
                                  -75591;6;0;false;false;;;;;;
                                  -75597;13;0;false;false;0;0;0;;;
                                  -75610;1;0;false;false;;;;;;
                                  -75611;2;0;false;false;0;0;0;;;
                                  -75613;1;0;false;false;;;;;;
                                  -75614;24;0;false;false;0;0;0;;;
                                  -75638;1;0;false;false;;;;;;
                                  -75639;6;1;false;false;127;0;85;;;
                                  -75645;1;0;false;false;0;0;0;;;
                                  -75646;3;0;false;false;;;;;;
                                  -75649;3;1;false;false;127;0;85;;;
                                  -75652;1;0;false;false;;;;;;
                                  -75653;6;0;false;false;0;0;0;;;
                                  -75659;1;0;false;false;;;;;;
                                  -75660;1;0;false;false;0;0;0;;;
                                  -75661;1;0;false;false;;;;;;
                                  -75662;11;0;false;false;0;0;0;;;
                                  -75673;1;0;false;false;;;;;;
                                  -75674;1;0;false;false;0;0;0;;;
                                  -75675;1;0;false;false;;;;;;
                                  -75676;12;0;false;false;0;0;0;;;
                                  -75688;3;0;false;false;;;;;;
                                  -75691;2;1;false;false;127;0;85;;;
                                  -75693;1;0;false;false;;;;;;
                                  -75694;7;0;false;false;0;0;0;;;
                                  -75701;1;0;false;false;;;;;;
                                  -75702;1;0;false;false;0;0;0;;;
                                  -75703;1;0;false;false;;;;;;
                                  -75704;2;0;false;false;0;0;0;;;
                                  -75706;1;0;false;false;;;;;;
                                  -75707;1;0;false;false;0;0;0;;;
                                  -75708;4;0;false;false;;;;;;
                                  -75712;3;1;false;false;127;0;85;;;
                                  -75715;1;0;false;false;;;;;;
                                  -75716;1;0;false;false;0;0;0;;;
                                  -75717;5;0;false;false;;;;;;
                                  -75722;32;0;false;false;0;0;0;;;
                                  -75754;1;0;false;false;;;;;;
                                  -75755;7;0;false;false;0;0;0;;;
                                  -75762;1;0;false;false;;;;;;
                                  -75763;15;0;false;false;0;0;0;;;
                                  -75778;4;0;false;false;;;;;;
                                  -75782;1;0;false;false;0;0;0;;;
                                  -75783;4;0;false;false;;;;;;
                                  -75787;5;1;false;false;127;0;85;;;
                                  -75792;1;0;false;false;;;;;;
                                  -75793;9;0;false;false;0;0;0;;;
                                  -75802;1;0;false;false;;;;;;
                                  -75803;6;0;false;false;0;0;0;;;
                                  -75809;1;0;false;false;;;;;;
                                  -75810;1;0;false;false;0;0;0;;;
                                  -75811;5;0;false;false;;;;;;
                                  -75816;69;0;false;false;63;127;95;;;
                                  -75885;3;0;false;false;;;;;;
                                  -75888;64;0;false;false;63;127;95;;;
                                  -75952;3;0;false;false;;;;;;
                                  -75955;18;0;false;false;63;127;95;;;
                                  -75973;3;0;false;false;;;;;;
                                  -75976;47;0;false;false;63;127;95;;;
                                  -76023;3;0;false;false;;;;;;
                                  -76026;2;1;false;false;127;0;85;;;
                                  -76028;1;0;false;false;;;;;;
                                  -76029;11;0;false;false;0;0;0;;;
                                  -76040;1;0;false;false;;;;;;
                                  -76041;2;0;false;false;0;0;0;;;
                                  -76043;1;0;false;false;;;;;;
                                  -76044;31;0;false;false;0;0;0;;;
                                  -76075;1;0;false;false;;;;;;
                                  -76076;1;0;false;false;0;0;0;;;
                                  -76077;6;0;false;false;;;;;;
                                  -76083;5;1;false;false;127;0;85;;;
                                  -76088;1;0;false;false;;;;;;
                                  -76089;6;0;false;false;0;0;0;;;
                                  -76095;5;0;false;false;;;;;;
                                  -76100;1;0;false;false;0;0;0;;;
                                  -76101;4;0;false;false;;;;;;
                                  -76105;1;0;false;false;0;0;0;;;
                                  -76106;3;0;false;false;;;;;;
                                  -76109;1;0;false;false;0;0;0;;;
                                  -76110;2;0;false;false;;;;;;
                                  -76112;1;0;false;false;0;0;0;;;
                                  -76113;2;0;false;false;;;;;;
                                  -76115;3;0;false;false;63;95;191;;;
                                  -76118;3;0;false;false;;;;;;
                                  -76121;1;0;false;false;63;95;191;;;
                                  -76122;1;0;false;false;;;;;;
                                  -76123;7;0;false;false;63;95;191;;;
                                  -76130;1;0;false;false;;;;;;
                                  -76131;1;0;false;false;63;95;191;;;
                                  -76132;1;0;false;false;;;;;;
                                  -76133;6;0;false;false;63;95;191;;;
                                  -76139;1;0;false;false;;;;;;
                                  -76140;4;0;false;false;63;95;191;;;
                                  -76144;1;0;false;false;;;;;;
                                  -76145;4;0;false;false;63;95;191;;;
                                  -76149;1;0;false;false;;;;;;
                                  -76150;4;0;false;false;63;95;191;;;
                                  -76154;1;0;false;false;;;;;;
                                  -76155;3;0;false;false;63;95;191;;;
                                  -76158;1;0;false;false;;;;;;
                                  -76159;4;0;false;false;63;95;191;;;
                                  -76163;1;0;false;false;;;;;;
                                  -76164;9;0;false;false;63;95;191;;;
                                  -76173;1;0;false;false;;;;;;
                                  -76174;9;0;false;false;63;95;191;;;
                                  -76183;1;0;false;false;;;;;;
                                  -76184;2;0;false;false;63;95;191;;;
                                  -76186;1;0;false;false;;;;;;
                                  -76187;3;0;false;false;63;95;191;;;
                                  -76190;4;0;false;false;;;;;;
                                  -76194;1;0;false;false;63;95;191;;;
                                  -76195;1;0;false;false;;;;;;
                                  -76196;17;0;false;false;63;95;191;;;
                                  -76213;1;0;false;false;;;;;;
                                  -76214;15;0;false;false;63;95;191;;;
                                  -76229;3;0;false;false;;;;;;
                                  -76232;1;0;false;false;63;95;191;;;
                                  -76233;1;0;false;false;;;;;;
                                  -76234;7;0;false;false;63;95;191;;;
                                  -76241;1;0;false;false;;;;;;
                                  -76242;4;0;false;false;63;95;191;;;
                                  -76246;1;0;false;false;;;;;;
                                  -76247;3;0;false;false;63;95;191;;;
                                  -76250;1;0;false;false;;;;;;
                                  -76251;5;0;false;false;63;95;191;;;
                                  -76256;1;0;false;false;;;;;;
                                  -76257;4;0;false;false;63;95;191;;;
                                  -76261;1;0;false;false;;;;;;
                                  -76262;2;0;false;false;63;95;191;;;
                                  -76264;1;0;false;false;;;;;;
                                  -76265;3;0;false;false;63;95;191;;;
                                  -76268;1;0;false;false;;;;;;
                                  -76269;6;0;false;false;63;95;191;;;
                                  -76275;1;0;false;false;;;;;;
                                  -76276;3;0;false;false;63;95;191;;;
                                  -76279;1;0;false;false;;;;;;
                                  -76280;3;0;false;false;63;95;191;;;
                                  -76283;1;0;false;false;;;;;;
                                  -76284;10;0;false;false;63;95;191;;;
                                  -76294;1;0;false;false;;;;;;
                                  -76295;6;0;false;false;63;95;191;;;
                                  -76301;3;0;false;false;;;;;;
                                  -76304;1;0;false;false;63;95;191;;;
                                  -76305;1;0;false;false;;;;;;
                                  -76306;3;0;false;false;127;127;159;;;
                                  -76309;3;0;false;false;;;;;;
                                  -76312;1;0;false;false;63;95;191;;;
                                  -76313;3;0;false;false;;;;;;
                                  -76316;1;0;false;false;63;95;191;;;
                                  -76317;1;0;false;false;;;;;;
                                  -76318;7;1;false;false;127;159;191;;;
                                  -76325;4;0;false;false;63;95;191;;;
                                  -76329;1;0;false;false;;;;;;
                                  -76330;3;0;false;false;63;95;191;;;
                                  -76333;1;0;false;false;;;;;;
                                  -76334;4;0;false;false;63;95;191;;;
                                  -76338;1;0;false;false;;;;;;
                                  -76339;4;0;false;false;63;95;191;;;
                                  -76343;1;0;false;false;;;;;;
                                  -76344;3;0;false;false;63;95;191;;;
                                  -76347;1;0;false;false;;;;;;
                                  -76348;4;0;false;false;63;95;191;;;
                                  -76352;1;0;false;false;;;;;;
                                  -76353;4;0;false;false;63;95;191;;;
                                  -76357;1;0;false;false;;;;;;
                                  -76358;10;0;false;false;63;95;191;;;
                                  -76368;1;0;false;false;;;;;;
                                  -76369;4;0;false;false;63;95;191;;;
                                  -76373;1;0;false;false;;;;;;
                                  -76374;5;0;false;false;63;95;191;;;
                                  -76379;4;0;false;false;;;;;;
                                  -76383;1;0;false;false;63;95;191;;;
                                  -76384;2;0;false;false;;;;;;
                                  -76386;5;0;false;false;63;95;191;;;
                                  -76391;1;0;false;false;;;;;;
                                  -76392;3;0;false;false;63;95;191;;;
                                  -76395;1;0;false;false;;;;;;
                                  -76396;5;0;false;false;63;95;191;;;
                                  -76401;1;0;false;false;;;;;;
                                  -76402;4;0;false;false;63;95;191;;;
                                  -76406;1;0;false;false;;;;;;
                                  -76407;10;0;false;false;63;95;191;;;
                                  -76417;1;0;false;false;;;;;;
                                  -76418;8;0;false;false;63;95;191;;;
                                  -76426;1;0;false;false;;;;;;
                                  -76427;4;0;false;false;63;95;191;;;
                                  -76431;1;0;false;false;;;;;;
                                  -76432;10;0;false;false;63;95;191;;;
                                  -76442;4;0;false;false;;;;;;
                                  -76446;1;0;false;false;63;95;191;;;
                                  -76447;2;0;false;false;;;;;;
                                  -76449;3;0;false;false;63;95;191;;;
                                  -76452;1;0;false;false;;;;;;
                                  -76453;2;0;false;false;63;95;191;;;
                                  -76455;1;0;false;false;;;;;;
                                  -76456;7;0;false;false;63;95;191;;;
                                  -76463;1;0;false;false;;;;;;
                                  -76464;2;0;false;false;63;95;191;;;
                                  -76466;1;0;false;false;;;;;;
                                  -76467;7;0;false;false;63;95;191;;;
                                  -76474;1;0;false;false;;;;;;
                                  -76475;5;0;false;false;63;95;191;;;
                                  -76480;1;0;false;false;;;;;;
                                  -76481;8;0;false;false;63;95;191;;;
                                  -76489;3;0;false;false;;;;;;
                                  -76492;1;0;false;false;63;95;191;;;
                                  -76493;1;0;false;false;;;;;;
                                  -76494;8;1;false;false;127;159;191;;;
                                  -76502;3;0;false;false;63;95;191;;;
                                  -76505;1;0;false;false;;;;;;
                                  -76506;9;0;false;false;63;95;191;;;
                                  -76515;1;0;false;false;;;;;;
                                  -76516;4;0;false;false;63;95;191;;;
                                  -76520;1;0;false;false;;;;;;
                                  -76521;4;0;false;false;63;95;191;;;
                                  -76525;1;0;false;false;;;;;;
                                  -76526;4;0;false;false;63;95;191;;;
                                  -76530;1;0;false;false;;;;;;
                                  -76531;4;0;false;false;63;95;191;;;
                                  -76535;1;0;false;false;;;;;;
                                  -76536;3;0;false;false;63;95;191;;;
                                  -76539;1;0;false;false;;;;;;
                                  -76540;4;0;false;false;63;95;191;;;
                                  -76544;1;0;false;false;;;;;;
                                  -76545;9;0;false;false;63;95;191;;;
                                  -76554;4;0;false;false;;;;;;
                                  -76558;1;0;false;false;63;95;191;;;
                                  -76559;2;0;false;false;;;;;;
                                  -76561;9;0;false;false;63;95;191;;;
                                  -76570;1;0;false;false;;;;;;
                                  -76571;2;0;false;false;63;95;191;;;
                                  -76573;1;0;false;false;;;;;;
                                  -76574;3;0;false;false;63;95;191;;;
                                  -76577;1;0;false;false;;;;;;
                                  -76578;6;0;false;false;63;95;191;;;
                                  -76584;1;0;false;false;;;;;;
                                  -76585;7;0;false;false;63;95;191;;;
                                  -76592;1;0;false;false;;;;;;
                                  -76593;4;0;false;false;63;95;191;;;
                                  -76597;1;0;false;false;;;;;;
                                  -76598;3;0;false;false;63;95;191;;;
                                  -76601;1;0;false;false;;;;;;
                                  -76602;5;0;false;false;63;95;191;;;
                                  -76607;1;0;false;false;;;;;;
                                  -76608;4;0;false;false;63;95;191;;;
                                  -76612;1;0;false;false;;;;;;
                                  -76613;2;0;false;false;63;95;191;;;
                                  -76615;1;0;false;false;;;;;;
                                  -76616;3;0;false;false;63;95;191;;;
                                  -76619;1;0;false;false;;;;;;
                                  -76620;6;0;false;false;63;95;191;;;
                                  -76626;4;0;false;false;;;;;;
                                  -76630;1;0;false;false;63;95;191;;;
                                  -76631;2;0;false;false;;;;;;
                                  -76633;3;0;false;false;63;95;191;;;
                                  -76636;1;0;false;false;;;;;;
                                  -76637;3;0;false;false;63;95;191;;;
                                  -76640;1;0;false;false;;;;;;
                                  -76641;10;0;false;false;63;95;191;;;
                                  -76651;1;0;false;false;;;;;;
                                  -76652;6;0;false;false;63;95;191;;;
                                  -76658;3;0;false;false;;;;;;
                                  -76661;2;0;false;false;63;95;191;;;
                                  -76663;2;0;false;false;;;;;;
                                  -76665;6;0;false;false;0;0;0;;;
                                  -76671;1;0;false;false;;;;;;
                                  -76672;28;0;false;false;0;0;0;;;
                                  -76700;1;0;false;false;;;;;;
                                  -76701;5;0;false;false;0;0;0;;;
                                  -76706;1;0;false;false;;;;;;
                                  -76707;1;0;false;false;0;0;0;;;
                                  -76708;3;0;false;false;;;;;;
                                  -76711;12;0;false;false;0;0;0;;;
                                  -76723;1;0;false;false;;;;;;
                                  -76724;14;0;false;false;0;0;0;;;
                                  -76738;3;0;false;false;;;;;;
                                  -76741;6;0;false;false;0;0;0;;;
                                  -76747;1;0;false;false;;;;;;
                                  -76748;9;0;false;false;0;0;0;;;
                                  -76757;1;0;false;false;;;;;;
                                  -76758;1;0;false;false;0;0;0;;;
                                  -76759;1;0;false;false;;;;;;
                                  -76760;19;0;false;false;0;0;0;;;
                                  -76779;3;0;false;false;;;;;;
                                  -76782;3;1;false;false;127;0;85;;;
                                  -76785;1;0;false;false;;;;;;
                                  -76786;6;0;false;false;0;0;0;;;
                                  -76792;1;0;false;false;;;;;;
                                  -76793;1;0;false;false;0;0;0;;;
                                  -76794;1;0;false;false;;;;;;
                                  -76795;14;0;false;false;0;0;0;;;
                                  -76809;4;0;false;false;;;;;;
                                  -76813;3;1;false;false;127;0;85;;;
                                  -76816;1;0;false;false;;;;;;
                                  -76817;7;0;false;false;0;0;0;;;
                                  -76824;1;0;false;false;;;;;;
                                  -76825;1;0;false;false;0;0;0;;;
                                  -76826;1;0;false;false;;;;;;
                                  -76827;2;0;false;false;0;0;0;;;
                                  -76829;3;0;false;false;;;;;;
                                  -76832;3;1;false;false;127;0;85;;;
                                  -76835;1;0;false;false;;;;;;
                                  -76836;7;0;false;false;0;0;0;;;
                                  -76843;1;0;false;false;;;;;;
                                  -76844;1;0;false;false;0;0;0;;;
                                  -76845;1;0;false;false;;;;;;
                                  -76846;2;0;false;false;0;0;0;;;
                                  -76848;3;0;false;false;;;;;;
                                  -76851;3;1;false;false;127;0;85;;;
                                  -76854;1;0;false;false;;;;;;
                                  -76855;1;0;false;false;0;0;0;;;
                                  -76856;1;0;false;false;;;;;;
                                  -76857;1;0;false;false;0;0;0;;;
                                  -76858;1;0;false;false;;;;;;
                                  -76859;2;0;false;false;0;0;0;;;
                                  -76861;6;0;false;false;;;;;;
                                  -76867;2;1;false;false;127;0;85;;;
                                  -76869;1;0;false;false;;;;;;
                                  -76870;7;0;false;false;0;0;0;;;
                                  -76877;1;0;false;false;;;;;;
                                  -76878;2;0;false;false;0;0;0;;;
                                  -76880;1;0;false;false;;;;;;
                                  -76881;2;0;false;false;0;0;0;;;
                                  -76883;1;0;false;false;;;;;;
                                  -76884;1;0;false;false;0;0;0;;;
                                  -76885;4;0;false;false;;;;;;
                                  -76889;6;1;false;false;127;0;85;;;
                                  -76895;1;0;false;false;;;;;;
                                  -76896;5;0;false;false;0;0;0;;;
                                  -76901;3;0;false;false;;;;;;
                                  -76904;1;0;false;false;0;0;0;;;
                                  -76905;3;0;false;false;;;;;;
                                  -76908;13;0;false;false;0;0;0;;;
                                  -76921;1;0;false;false;;;;;;
                                  -76922;1;0;false;false;0;0;0;;;
                                  -76923;1;0;false;false;;;;;;
                                  -76924;3;1;false;false;127;0;85;;;
                                  -76927;1;0;false;false;;;;;;
                                  -76928;21;0;false;false;0;0;0;;;
                                  -76949;3;0;false;false;;;;;;
                                  -76952;5;1;false;false;127;0;85;;;
                                  -76957;1;0;false;false;;;;;;
                                  -76958;2;0;false;false;0;0;0;;;
                                  -76960;1;0;false;false;;;;;;
                                  -76961;1;0;false;false;0;0;0;;;
                                  -76962;1;0;false;false;;;;;;
                                  -76963;7;0;false;false;0;0;0;;;
                                  -76970;1;0;false;false;;;;;;
                                  -76971;1;0;false;false;0;0;0;;;
                                  -76972;4;0;false;false;;;;;;
                                  -76976;2;1;false;false;127;0;85;;;
                                  -76978;1;0;false;false;;;;;;
                                  -76979;8;0;false;false;0;0;0;;;
                                  -76987;1;0;false;false;;;;;;
                                  -76988;2;0;false;false;0;0;0;;;
                                  -76990;1;0;false;false;;;;;;
                                  -76991;3;0;false;false;0;0;0;;;
                                  -76994;1;0;false;false;;;;;;
                                  -76995;1;0;false;false;0;0;0;;;
                                  -76996;5;0;false;false;;;;;;
                                  -77001;7;0;false;false;0;0;0;;;
                                  -77008;1;0;false;false;;;;;;
                                  -77009;1;0;false;false;0;0;0;;;
                                  -77010;1;0;false;false;;;;;;
                                  -77011;20;0;false;false;0;0;0;;;
                                  -77031;1;0;false;false;;;;;;
                                  -77032;3;0;false;false;0;0;0;;;
                                  -77035;4;0;false;false;;;;;;
                                  -77039;1;0;false;false;0;0;0;;;
                                  -77040;4;0;false;false;;;;;;
                                  -77044;2;1;false;false;127;0;85;;;
                                  -77046;1;0;false;false;;;;;;
                                  -77047;8;0;false;false;0;0;0;;;
                                  -77055;1;0;false;false;;;;;;
                                  -77056;2;0;false;false;0;0;0;;;
                                  -77058;1;0;false;false;;;;;;
                                  -77059;3;0;false;false;0;0;0;;;
                                  -77062;1;0;false;false;;;;;;
                                  -77063;1;0;false;false;0;0;0;;;
                                  -77064;5;0;false;false;;;;;;
                                  -77069;7;0;false;false;0;0;0;;;
                                  -77076;1;0;false;false;;;;;;
                                  -77077;1;0;false;false;0;0;0;;;
                                  -77078;1;0;false;false;;;;;;
                                  -77079;20;0;false;false;0;0;0;;;
                                  -77099;1;0;false;false;;;;;;
                                  -77100;3;0;false;false;0;0;0;;;
                                  -77103;4;0;false;false;;;;;;
                                  -77107;1;0;false;false;0;0;0;;;
                                  -77108;4;0;false;false;;;;;;
                                  -77112;2;1;false;false;127;0;85;;;
                                  -77114;1;0;false;false;;;;;;
                                  -77115;8;0;false;false;0;0;0;;;
                                  -77123;1;0;false;false;;;;;;
                                  -77124;2;0;false;false;0;0;0;;;
                                  -77126;1;0;false;false;;;;;;
                                  -77127;2;0;false;false;0;0;0;;;
                                  -77129;1;0;false;false;;;;;;
                                  -77130;2;0;false;false;0;0;0;;;
                                  -77132;1;0;false;false;;;;;;
                                  -77133;7;0;false;false;0;0;0;;;
                                  -77140;1;0;false;false;;;;;;
                                  -77141;2;0;false;false;0;0;0;;;
                                  -77143;1;0;false;false;;;;;;
                                  -77144;3;0;false;false;0;0;0;;;
                                  -77147;1;0;false;false;;;;;;
                                  -77148;1;0;false;false;0;0;0;;;
                                  -77149;1;0;false;false;;;;;;
                                  -77150;25;0;false;false;63;127;95;;;
                                  -77175;3;0;false;false;;;;;;
                                  -77178;5;1;false;false;127;0;85;;;
                                  -77183;1;0;false;false;0;0;0;;;
                                  -77184;4;0;false;false;;;;;;
                                  -77188;1;0;false;false;0;0;0;;;
                                  -77189;4;0;false;false;;;;;;
                                  -77193;4;1;false;false;127;0;85;;;
                                  -77197;9;0;false;false;;;;;;
                                  -77206;42;0;false;false;63;127;95;;;
                                  -77248;2;0;false;false;;;;;;
                                  -77250;2;1;false;false;127;0;85;;;
                                  -77252;1;0;false;false;;;;;;
                                  -77253;9;0;false;false;0;0;0;;;
                                  -77262;1;0;false;false;;;;;;
                                  -77263;1;0;false;false;0;0;0;;;
                                  -77264;1;0;false;false;;;;;;
                                  -77265;7;0;false;false;0;0;0;;;
                                  -77272;1;0;false;false;;;;;;
                                  -77273;2;0;false;false;0;0;0;;;
                                  -77275;1;0;false;false;;;;;;
                                  -77276;7;0;false;false;0;0;0;;;
                                  -77283;1;0;false;false;;;;;;
                                  -77284;2;0;false;false;0;0;0;;;
                                  -77286;1;0;false;false;;;;;;
                                  -77287;3;0;false;false;0;0;0;;;
                                  -77290;1;0;false;false;;;;;;
                                  -77291;2;0;false;false;0;0;0;;;
                                  -77293;1;0;false;false;;;;;;
                                  -77294;7;0;false;false;0;0;0;;;
                                  -77301;1;0;false;false;;;;;;
                                  -77302;2;0;false;false;0;0;0;;;
                                  -77304;1;0;false;false;;;;;;
                                  -77305;3;0;false;false;0;0;0;;;
                                  -77308;1;0;false;false;;;;;;
                                  -77309;1;0;false;false;0;0;0;;;
                                  -77310;6;0;false;false;;;;;;
                                  -77316;38;0;false;false;0;0;0;;;
                                  -77354;1;0;false;false;;;;;;
                                  -77355;10;0;false;false;0;0;0;;;
                                  -77365;5;0;false;false;;;;;;
                                  -77370;2;1;false;false;127;0;85;;;
                                  -77372;1;0;false;false;;;;;;
                                  -77373;8;0;false;false;0;0;0;;;
                                  -77381;1;0;false;false;;;;;;
                                  -77382;2;0;false;false;0;0;0;;;
                                  -77384;1;0;false;false;;;;;;
                                  -77385;7;0;false;false;0;0;0;;;
                                  -77392;1;0;false;false;;;;;;
                                  -77393;1;0;false;false;0;0;0;;;
                                  -77394;1;0;false;false;;;;;;
                                  -77395;2;0;false;false;0;0;0;;;
                                  -77397;1;0;false;false;;;;;;
                                  -77398;1;0;false;false;0;0;0;;;
                                  -77399;2;0;false;false;;;;;;
                                  -77401;23;0;false;false;63;127;95;;;
                                  -77424;4;0;false;false;;;;;;
                                  -77428;1;0;false;false;0;0;0;;;
                                  -77429;1;0;false;false;;;;;;
                                  -77430;1;0;false;false;0;0;0;;;
                                  -77431;1;0;false;false;;;;;;
                                  -77432;7;0;false;false;0;0;0;;;
                                  -77439;1;0;false;false;;;;;;
                                  -77440;1;0;false;false;0;0;0;;;
                                  -77441;1;0;false;false;;;;;;
                                  -77442;2;0;false;false;0;0;0;;;
                                  -77444;5;0;false;false;;;;;;
                                  -77449;1;0;false;false;0;0;0;;;
                                  -77450;5;0;false;false;;;;;;
                                  -77455;4;1;false;false;127;0;85;;;
                                  -77459;1;0;false;false;;;;;;
                                  -77460;1;0;false;false;0;0;0;;;
                                  -77461;6;0;false;false;;;;;;
                                  -77467;1;0;false;false;0;0;0;;;
                                  -77468;1;0;false;false;;;;;;
                                  -77469;1;0;false;false;0;0;0;;;
                                  -77470;1;0;false;false;;;;;;
                                  -77471;7;0;false;false;0;0;0;;;
                                  -77478;1;0;false;false;;;;;;
                                  -77479;1;0;false;false;0;0;0;;;
                                  -77480;1;0;false;false;;;;;;
                                  -77481;2;0;false;false;0;0;0;;;
                                  -77483;5;0;false;false;;;;;;
                                  -77488;1;0;false;false;0;0;0;;;
                                  -77489;4;0;false;false;;;;;;
                                  -77493;1;0;false;false;0;0;0;;;
                                  -77494;4;0;false;false;;;;;;
                                  -77498;4;1;false;false;127;0;85;;;
                                  -77502;1;0;false;false;;;;;;
                                  -77503;1;0;false;false;0;0;0;;;
                                  -77504;9;0;false;false;;;;;;
                                  -77513;25;0;false;false;63;127;95;;;
                                  -77538;3;0;false;false;;;;;;
                                  -77541;38;0;false;false;0;0;0;;;
                                  -77579;1;0;false;false;;;;;;
                                  -77580;10;0;false;false;0;0;0;;;
                                  -77590;5;0;false;false;;;;;;
                                  -77595;1;0;false;false;0;0;0;;;
                                  -77596;1;0;false;false;;;;;;
                                  -77597;1;0;false;false;0;0;0;;;
                                  -77598;1;0;false;false;;;;;;
                                  -77599;7;0;false;false;0;0;0;;;
                                  -77606;1;0;false;false;;;;;;
                                  -77607;1;0;false;false;0;0;0;;;
                                  -77608;1;0;false;false;;;;;;
                                  -77609;2;0;false;false;0;0;0;;;
                                  -77611;4;0;false;false;;;;;;
                                  -77615;1;0;false;false;0;0;0;;;
                                  -77616;4;0;false;false;;;;;;
                                  -77620;2;1;false;false;127;0;85;;;
                                  -77622;1;0;false;false;;;;;;
                                  -77623;16;0;false;false;0;0;0;;;
                                  -77639;1;0;false;false;;;;;;
                                  -77640;1;0;false;false;0;0;0;;;
                                  -77641;5;0;false;false;;;;;;
                                  -77646;5;1;false;false;127;0;85;;;
                                  -77651;1;0;false;false;0;0;0;;;
                                  -77652;4;0;false;false;;;;;;
                                  -77656;1;0;false;false;0;0;0;;;
                                  -77657;4;0;false;false;;;;;;
                                  -77661;32;0;false;false;0;0;0;;;
                                  -77693;3;0;false;false;;;;;;
                                  -77696;1;0;false;false;0;0;0;;;
                                  -77697;3;0;false;false;;;;;;
                                  -77700;69;0;false;false;63;127;95;;;
                                  -77769;1;0;false;false;;;;;;
                                  -77770;58;0;false;false;63;127;95;;;
                                  -77828;1;0;false;false;;;;;;
                                  -77829;2;1;false;false;127;0;85;;;
                                  -77831;1;0;false;false;;;;;;
                                  -77832;2;0;false;false;0;0;0;;;
                                  -77834;1;0;false;false;;;;;;
                                  -77835;1;0;false;false;0;0;0;;;
                                  -77836;1;0;false;false;;;;;;
                                  -77837;6;0;false;false;0;0;0;;;
                                  -77843;1;0;false;false;;;;;;
                                  -77844;2;0;false;false;0;0;0;;;
                                  -77846;1;0;false;false;;;;;;
                                  -77847;16;0;false;false;0;0;0;;;
                                  -77863;1;0;false;false;;;;;;
                                  -77864;2;0;false;false;0;0;0;;;
                                  -77866;1;0;false;false;;;;;;
                                  -77867;22;0;false;false;0;0;0;;;
                                  -77889;1;0;false;false;;;;;;
                                  -77890;2;0;false;false;0;0;0;;;
                                  -77892;1;0;false;false;;;;;;
                                  -77893;3;0;false;false;0;0;0;;;
                                  -77896;1;0;false;false;;;;;;
                                  -77897;1;0;false;false;0;0;0;;;
                                  -77898;4;0;false;false;;;;;;
                                  -77902;40;0;false;false;0;0;0;;;
                                  -77942;3;0;false;false;;;;;;
                                  -77945;1;0;false;false;0;0;0;;;
                                  -77946;3;0;false;false;;;;;;
                                  -77949;6;1;false;false;127;0;85;;;
                                  -77955;1;0;false;false;;;;;;
                                  -77956;25;0;false;false;0;0;0;;;
                                  -77981;2;0;false;false;;;;;;
                                  -77983;1;0;false;false;0;0;0;;;
                                  -77984;2;0;false;false;;;;;;
                                  -77986;3;0;false;false;63;95;191;;;
                                  -77989;3;0;false;false;;;;;;
                                  -77992;1;0;false;false;63;95;191;;;
                                  -77993;1;0;false;false;;;;;;
                                  -77994;7;0;false;false;63;95;191;;;
                                  -78001;1;0;false;false;;;;;;
                                  -78002;7;0;false;false;63;95;191;;;
                                  -78009;1;0;false;false;;;;;;
                                  -78010;3;0;false;false;63;95;191;;;
                                  -78013;1;0;false;false;;;;;;
                                  -78014;9;0;false;false;63;95;191;;;
                                  -78023;3;0;false;false;;;;;;
                                  -78026;2;0;false;false;63;95;191;;;
                                  -78028;2;0;false;false;;;;;;
                                  -78030;4;1;false;false;127;0;85;;;
                                  -78034;1;0;false;false;;;;;;
                                  -78035;19;0;false;false;0;0;0;;;
                                  -78054;1;0;false;false;;;;;;
                                  -78055;1;0;false;false;0;0;0;;;
                                  -78056;3;0;false;false;;;;;;
                                  -78059;3;1;false;false;127;0;85;;;
                                  -78062;1;0;false;false;;;;;;
                                  -78063;7;0;false;false;0;0;0;;;
                                  -78070;1;0;false;false;;;;;;
                                  -78071;1;0;false;false;0;0;0;;;
                                  -78072;1;0;false;false;;;;;;
                                  -78073;12;0;false;false;0;0;0;;;
                                  -78085;1;0;false;false;;;;;;
                                  -78086;1;0;false;false;0;0;0;;;
                                  -78087;1;0;false;false;;;;;;
                                  -78088;14;0;false;false;0;0;0;;;
                                  -78102;1;0;false;false;;;;;;
                                  -78103;1;0;false;false;0;0;0;;;
                                  -78104;1;0;false;false;;;;;;
                                  -78105;16;0;false;false;0;0;0;;;
                                  -78121;3;0;false;false;;;;;;
                                  -78124;3;1;false;false;127;0;85;;;
                                  -78127;1;0;false;false;;;;;;
                                  -78128;11;0;false;false;0;0;0;;;
                                  -78139;1;0;false;false;;;;;;
                                  -78140;1;0;false;false;0;0;0;;;
                                  -78141;1;0;false;false;;;;;;
                                  -78142;12;0;false;false;0;0;0;;;
                                  -78154;1;0;false;false;;;;;;
                                  -78155;1;0;false;false;0;0;0;;;
                                  -78156;1;0;false;false;;;;;;
                                  -78157;15;0;false;false;0;0;0;;;
                                  -78172;1;0;false;false;;;;;;
                                  -78173;1;0;false;false;0;0;0;;;
                                  -78174;1;0;false;false;;;;;;
                                  -78175;15;0;false;false;0;0;0;;;
                                  -78190;6;0;false;false;;;;;;
                                  -78196;15;0;false;false;63;127;95;;;
                                  -78211;1;0;false;false;;;;;;
                                  -78212;27;0;false;false;0;0;0;;;
                                  -78239;1;0;false;false;;;;;;
                                  -78240;12;0;false;false;0;0;0;;;
                                  -78252;4;0;false;false;;;;;;
                                  -78256;29;0;false;false;0;0;0;;;
                                  -78285;1;0;false;false;;;;;;
                                  -78286;14;0;false;false;0;0;0;;;
                                  -78300;3;0;false;false;;;;;;
                                  -78303;23;0;false;false;0;0;0;;;
                                  -78326;1;0;false;false;;;;;;
                                  -78327;15;0;false;false;0;0;0;;;
                                  -78342;3;0;false;false;;;;;;
                                  -78345;22;0;false;false;0;0;0;;;
                                  -78367;1;0;false;false;;;;;;
                                  -78368;13;0;false;false;0;0;0;;;
                                  -78381;3;0;false;false;;;;;;
                                  -78384;26;0;false;false;0;0;0;;;
                                  -78410;1;0;false;false;;;;;;
                                  -78411;12;0;false;false;0;0;0;;;
                                  -78423;3;0;false;false;;;;;;
                                  -78426;28;0;false;false;0;0;0;;;
                                  -78454;1;0;false;false;;;;;;
                                  -78455;14;0;false;false;0;0;0;;;
                                  -78469;3;0;false;false;;;;;;
                                  -78472;22;0;false;false;0;0;0;;;
                                  -78494;1;0;false;false;;;;;;
                                  -78495;1;0;false;false;0;0;0;;;
                                  -78496;1;0;false;false;;;;;;
                                  -78497;9;0;false;false;0;0;0;;;
                                  -78506;1;0;false;false;;;;;;
                                  -78507;15;0;false;false;0;0;0;;;
                                  -78522;3;0;false;false;;;;;;
                                  -78525;21;0;false;false;0;0;0;;;
                                  -78546;1;0;false;false;;;;;;
                                  -78547;1;0;false;false;0;0;0;;;
                                  -78548;1;0;false;false;;;;;;
                                  -78549;9;0;false;false;0;0;0;;;
                                  -78558;1;0;false;false;;;;;;
                                  -78559;13;0;false;false;0;0;0;;;
                                  -78572;3;0;false;false;;;;;;
                                  -78575;25;0;false;false;0;0;0;;;
                                  -78600;1;0;false;false;;;;;;
                                  -78601;1;0;false;false;0;0;0;;;
                                  -78602;1;0;false;false;;;;;;
                                  -78603;9;0;false;false;0;0;0;;;
                                  -78612;1;0;false;false;;;;;;
                                  -78613;17;0;false;false;0;0;0;;;
                                  -78630;3;0;false;false;;;;;;
                                  -78633;27;0;false;false;0;0;0;;;
                                  -78660;1;0;false;false;;;;;;
                                  -78661;1;0;false;false;0;0;0;;;
                                  -78662;1;0;false;false;;;;;;
                                  -78663;9;0;false;false;0;0;0;;;
                                  -78672;1;0;false;false;;;;;;
                                  -78673;15;0;false;false;0;0;0;;;
                                  -78688;3;0;false;false;;;;;;
                                  -78691;22;0;false;false;0;0;0;;;
                                  -78713;1;0;false;false;;;;;;
                                  -78714;16;0;false;false;0;0;0;;;
                                  -78730;3;0;false;false;;;;;;
                                  -78733;26;0;false;false;0;0;0;;;
                                  -78759;1;0;false;false;;;;;;
                                  -78760;20;0;false;false;0;0;0;;;
                                  -78780;3;0;false;false;;;;;;
                                  -78783;21;0;false;false;0;0;0;;;
                                  -78804;1;0;false;false;;;;;;
                                  -78805;1;0;false;false;0;0;0;;;
                                  -78806;1;0;false;false;;;;;;
                                  -78807;9;0;false;false;0;0;0;;;
                                  -78816;1;0;false;false;;;;;;
                                  -78817;14;0;false;false;0;0;0;;;
                                  -78831;3;0;false;false;;;;;;
                                  -78834;25;0;false;false;0;0;0;;;
                                  -78859;1;0;false;false;;;;;;
                                  -78860;1;0;false;false;0;0;0;;;
                                  -78861;1;0;false;false;;;;;;
                                  -78862;9;0;false;false;0;0;0;;;
                                  -78871;1;0;false;false;;;;;;
                                  -78872;18;0;false;false;0;0;0;;;
                                  -78890;6;0;false;false;;;;;;
                                  -78896;14;0;false;false;63;127;95;;;
                                  -78910;1;0;false;false;;;;;;
                                  -78911;26;0;false;false;0;0;0;;;
                                  -78937;1;0;false;false;;;;;;
                                  -78938;1;0;false;false;0;0;0;;;
                                  -78939;1;0;false;false;;;;;;
                                  -78940;9;0;false;false;0;0;0;;;
                                  -78949;1;0;false;false;;;;;;
                                  -78950;19;0;false;false;0;0;0;;;
                                  -78969;4;0;false;false;;;;;;
                                  -78973;28;0;false;false;0;0;0;;;
                                  -79001;1;0;false;false;;;;;;
                                  -79002;1;0;false;false;0;0;0;;;
                                  -79003;1;0;false;false;;;;;;
                                  -79004;9;0;false;false;0;0;0;;;
                                  -79013;1;0;false;false;;;;;;
                                  -79014;21;0;false;false;0;0;0;;;
                                  -79035;3;0;false;false;;;;;;
                                  -79038;22;0;false;false;0;0;0;;;
                                  -79060;1;0;false;false;;;;;;
                                  -79061;1;0;false;false;0;0;0;;;
                                  -79062;1;0;false;false;;;;;;
                                  -79063;9;0;false;false;0;0;0;;;
                                  -79072;1;0;false;false;;;;;;
                                  -79073;22;0;false;false;0;0;0;;;
                                  -79095;3;0;false;false;;;;;;
                                  -79098;21;0;false;false;0;0;0;;;
                                  -79119;1;0;false;false;;;;;;
                                  -79120;1;0;false;false;0;0;0;;;
                                  -79121;1;0;false;false;;;;;;
                                  -79122;9;0;false;false;0;0;0;;;
                                  -79131;1;0;false;false;;;;;;
                                  -79132;20;0;false;false;0;0;0;;;
                                  -79152;3;0;false;false;;;;;;
                                  -79155;25;0;false;false;0;0;0;;;
                                  -79180;1;0;false;false;;;;;;
                                  -79181;1;0;false;false;0;0;0;;;
                                  -79182;1;0;false;false;;;;;;
                                  -79183;9;0;false;false;0;0;0;;;
                                  -79192;1;0;false;false;;;;;;
                                  -79193;19;0;false;false;0;0;0;;;
                                  -79212;3;0;false;false;;;;;;
                                  -79215;27;0;false;false;0;0;0;;;
                                  -79242;1;0;false;false;;;;;;
                                  -79243;1;0;false;false;0;0;0;;;
                                  -79244;1;0;false;false;;;;;;
                                  -79245;9;0;false;false;0;0;0;;;
                                  -79254;1;0;false;false;;;;;;
                                  -79255;21;0;false;false;0;0;0;;;
                                  -79276;3;0;false;false;;;;;;
                                  -79279;22;0;false;false;0;0;0;;;
                                  -79301;1;0;false;false;;;;;;
                                  -79302;1;0;false;false;0;0;0;;;
                                  -79303;1;0;false;false;;;;;;
                                  -79304;8;0;false;false;0;0;0;;;
                                  -79312;1;0;false;false;;;;;;
                                  -79313;1;0;false;false;0;0;0;;;
                                  -79314;1;0;false;false;;;;;;
                                  -79315;9;0;false;false;0;0;0;;;
                                  -79324;1;0;false;false;;;;;;
                                  -79325;22;0;false;false;0;0;0;;;
                                  -79347;4;0;false;false;;;;;;
                                  -79351;21;0;false;false;0;0;0;;;
                                  -79372;1;0;false;false;;;;;;
                                  -79373;1;0;false;false;0;0;0;;;
                                  -79374;1;0;false;false;;;;;;
                                  -79375;8;0;false;false;0;0;0;;;
                                  -79383;1;0;false;false;;;;;;
                                  -79384;1;0;false;false;0;0;0;;;
                                  -79385;1;0;false;false;;;;;;
                                  -79386;9;0;false;false;0;0;0;;;
                                  -79395;1;0;false;false;;;;;;
                                  -79396;20;0;false;false;0;0;0;;;
                                  -79416;3;0;false;false;;;;;;
                                  -79419;25;0;false;false;0;0;0;;;
                                  -79444;1;0;false;false;;;;;;
                                  -79445;1;0;false;false;0;0;0;;;
                                  -79446;1;0;false;false;;;;;;
                                  -79447;8;0;false;false;0;0;0;;;
                                  -79455;1;0;false;false;;;;;;
                                  -79456;1;0;false;false;0;0;0;;;
                                  -79457;1;0;false;false;;;;;;
                                  -79458;9;0;false;false;0;0;0;;;
                                  -79467;1;0;false;false;;;;;;
                                  -79468;24;0;false;false;0;0;0;;;
                                  -79492;3;0;false;false;;;;;;
                                  -79495;27;0;false;false;0;0;0;;;
                                  -79522;1;0;false;false;;;;;;
                                  -79523;1;0;false;false;0;0;0;;;
                                  -79524;1;0;false;false;;;;;;
                                  -79525;8;0;false;false;0;0;0;;;
                                  -79533;1;0;false;false;;;;;;
                                  -79534;1;0;false;false;0;0;0;;;
                                  -79535;1;0;false;false;;;;;;
                                  -79536;9;0;false;false;0;0;0;;;
                                  -79545;1;0;false;false;;;;;;
                                  -79546;22;0;false;false;0;0;0;;;
                                  -79568;3;0;false;false;;;;;;
                                  -79571;21;0;false;false;0;0;0;;;
                                  -79592;1;0;false;false;;;;;;
                                  -79593;1;0;false;false;0;0;0;;;
                                  -79594;1;0;false;false;;;;;;
                                  -79595;9;0;false;false;0;0;0;;;
                                  -79604;1;0;false;false;;;;;;
                                  -79605;23;0;false;false;0;0;0;;;
                                  -79628;3;0;false;false;;;;;;
                                  -79631;25;0;false;false;0;0;0;;;
                                  -79656;1;0;false;false;;;;;;
                                  -79657;1;0;false;false;0;0;0;;;
                                  -79658;1;0;false;false;;;;;;
                                  -79659;9;0;false;false;0;0;0;;;
                                  -79668;1;0;false;false;;;;;;
                                  -79669;27;0;false;false;0;0;0;;;
                                  -79696;4;0;false;false;;;;;;
                                  -79700;21;0;false;false;0;0;0;;;
                                  -79721;1;0;false;false;;;;;;
                                  -79722;1;0;false;false;0;0;0;;;
                                  -79723;1;0;false;false;;;;;;
                                  -79724;8;0;false;false;0;0;0;;;
                                  -79732;1;0;false;false;;;;;;
                                  -79733;1;0;false;false;0;0;0;;;
                                  -79734;1;0;false;false;;;;;;
                                  -79735;9;0;false;false;0;0;0;;;
                                  -79744;1;0;false;false;;;;;;
                                  -79745;21;0;false;false;0;0;0;;;
                                  -79766;3;0;false;false;;;;;;
                                  -79769;25;0;false;false;0;0;0;;;
                                  -79794;1;0;false;false;;;;;;
                                  -79795;1;0;false;false;0;0;0;;;
                                  -79796;1;0;false;false;;;;;;
                                  -79797;8;0;false;false;0;0;0;;;
                                  -79805;1;0;false;false;;;;;;
                                  -79806;1;0;false;false;0;0;0;;;
                                  -79807;1;0;false;false;;;;;;
                                  -79808;9;0;false;false;0;0;0;;;
                                  -79817;1;0;false;false;;;;;;
                                  -79818;25;0;false;false;0;0;0;;;
                                  -79843;20;0;false;false;;;;;;
                                  -79863;17;0;false;false;63;127;95;;;
                                  -79880;1;0;false;false;;;;;;
                                  -79881;21;0;false;false;63;127;95;;;
                                  -79902;1;0;false;false;;;;;;
                                  -79903;14;0;false;false;0;0;0;;;
                                  -79917;3;0;false;false;42;0;255;;;
                                  -79920;1;0;false;false;;;;;;
                                  -79921;1;0;false;false;0;0;0;;;
                                  -79922;1;0;false;false;;;;;;
                                  -79923;9;0;false;false;0;0;0;;;
                                  -79932;1;0;false;false;;;;;;
                                  -79933;8;0;false;false;0;0;0;;;
                                  -79941;3;0;false;false;;;;;;
                                  -79944;14;0;false;false;0;0;0;;;
                                  -79958;3;0;false;false;42;0;255;;;
                                  -79961;1;0;false;false;;;;;;
                                  -79962;1;0;false;false;0;0;0;;;
                                  -79963;1;0;false;false;;;;;;
                                  -79964;9;0;false;false;0;0;0;;;
                                  -79973;1;0;false;false;;;;;;
                                  -79974;9;0;false;false;0;0;0;;;
                                  -79983;3;0;false;false;;;;;;
                                  -79986;14;0;false;false;0;0;0;;;
                                  -80000;3;0;false;false;42;0;255;;;
                                  -80003;1;0;false;false;;;;;;
                                  -80004;1;0;false;false;0;0;0;;;
                                  -80005;1;0;false;false;;;;;;
                                  -80006;9;0;false;false;0;0;0;;;
                                  -80015;1;0;false;false;;;;;;
                                  -80016;10;0;false;false;0;0;0;;;
                                  -80026;3;0;false;false;;;;;;
                                  -80029;36;0;false;false;63;127;95;;;
                                  -80065;1;0;false;false;;;;;;
                                  -80066;21;0;false;false;0;0;0;;;
                                  -80087;1;0;false;false;;;;;;
                                  -80088;1;0;false;false;0;0;0;;;
                                  -80089;1;0;false;false;;;;;;
                                  -80090;9;0;false;false;0;0;0;;;
                                  -80099;1;0;false;false;;;;;;
                                  -80100;8;0;false;false;0;0;0;;;
                                  -80108;3;0;false;false;;;;;;
                                  -80111;24;0;false;false;0;0;0;;;
                                  -80135;1;0;false;false;;;;;;
                                  -80136;1;0;false;false;0;0;0;;;
                                  -80137;1;0;false;false;;;;;;
                                  -80138;9;0;false;false;0;0;0;;;
                                  -80147;1;0;false;false;;;;;;
                                  -80148;9;0;false;false;0;0;0;;;
                                  -80157;3;0;false;false;;;;;;
                                  -80160;24;0;false;false;0;0;0;;;
                                  -80184;1;0;false;false;;;;;;
                                  -80185;1;0;false;false;0;0;0;;;
                                  -80186;1;0;false;false;;;;;;
                                  -80187;9;0;false;false;0;0;0;;;
                                  -80196;1;0;false;false;;;;;;
                                  -80197;10;0;false;false;0;0;0;;;
                                  -80207;3;0;false;false;;;;;;
                                  -80210;20;0;false;false;0;0;0;;;
                                  -80230;1;0;false;false;;;;;;
                                  -80231;1;0;false;false;0;0;0;;;
                                  -80232;1;0;false;false;;;;;;
                                  -80233;9;0;false;false;0;0;0;;;
                                  -80242;1;0;false;false;;;;;;
                                  -80243;20;0;false;false;0;0;0;;;
                                  -80263;6;0;false;false;;;;;;
                                  -80269;21;0;false;false;0;0;0;;;
                                  -80290;1;0;false;false;;;;;;
                                  -80291;20;0;false;false;0;0;0;;;
                                  -80311;3;0;false;false;;;;;;
                                  -80314;22;0;false;false;0;0;0;;;
                                  -80336;1;0;false;false;;;;;;
                                  -80337;16;0;false;false;0;0;0;;;
                                  -80353;3;0;false;false;;;;;;
                                  -80356;20;0;false;false;0;0;0;;;
                                  -80376;1;0;false;false;;;;;;
                                  -80377;1;0;false;false;0;0;0;;;
                                  -80378;1;0;false;false;;;;;;
                                  -80379;9;0;false;false;0;0;0;;;
                                  -80388;1;0;false;false;;;;;;
                                  -80389;25;0;false;false;0;0;0;;;
                                  -80414;3;0;false;false;;;;;;
                                  -80417;21;0;false;false;0;0;0;;;
                                  -80438;1;0;false;false;;;;;;
                                  -80439;1;0;false;false;0;0;0;;;
                                  -80440;1;0;false;false;;;;;;
                                  -80441;9;0;false;false;0;0;0;;;
                                  -80450;1;0;false;false;;;;;;
                                  -80451;21;0;false;false;0;0;0;;;
                                  -80472;6;0;false;false;;;;;;
                                  -80478;18;0;false;false;63;127;95;;;
                                  -80496;1;0;false;false;;;;;;
                                  -80497;25;0;false;false;0;0;0;;;
                                  -80522;1;0;false;false;;;;;;
                                  -80523;21;0;false;false;0;0;0;;;
                                  -80544;2;0;false;false;;;;;;
                                  -80546;1;0;false;false;0;0;0;;;
                                  -80547;2;0;false;false;;;;;;
                                  -80549;3;0;false;false;63;95;191;;;
                                  -80552;3;0;false;false;;;;;;
                                  -80555;1;0;false;false;63;95;191;;;
                                  -80556;1;0;false;false;;;;;;
                                  -80557;6;0;false;false;63;95;191;;;
                                  -80563;1;0;false;false;;;;;;
                                  -80564;3;0;false;false;63;95;191;;;
                                  -80567;1;0;false;false;;;;;;
                                  -80568;7;0;false;false;63;95;191;;;
                                  -80575;1;0;false;false;;;;;;
                                  -80576;2;0;false;false;63;95;191;;;
                                  -80578;1;0;false;false;;;;;;
                                  -80579;3;0;false;false;63;95;191;;;
                                  -80582;1;0;false;false;;;;;;
                                  -80583;3;0;false;false;63;95;191;;;
                                  -80586;1;0;false;false;;;;;;
                                  -80587;3;0;false;false;63;95;191;;;
                                  -80590;1;0;false;false;;;;;;
                                  -80591;5;0;false;false;63;95;191;;;
                                  -80596;1;0;false;false;;;;;;
                                  -80597;2;0;false;false;63;95;191;;;
                                  -80599;1;0;false;false;;;;;;
                                  -80600;4;0;false;false;63;95;191;;;
                                  -80604;1;0;false;false;;;;;;
                                  -80605;5;0;false;false;63;95;191;;;
                                  -80610;2;0;false;false;;;;;;
                                  -80612;4;0;false;false;63;95;191;;;
                                  -80616;3;0;false;false;;;;;;
                                  -80619;1;0;false;false;63;95;191;;;
                                  -80620;1;0;false;false;;;;;;
                                  -80621;6;0;false;false;63;95;191;;;
                                  -80627;1;0;false;false;;;;;;
                                  -80628;4;0;false;false;63;95;191;;;
                                  -80632;1;0;false;false;;;;;;
                                  -80633;5;0;false;false;63;95;191;;;
                                  -80638;1;0;false;false;;;;;;
                                  -80639;2;0;false;false;63;95;191;;;
                                  -80641;1;0;false;false;;;;;;
                                  -80642;2;0;false;false;63;95;191;;;
                                  -80644;1;0;false;false;;;;;;
                                  -80645;6;0;false;false;63;95;191;;;
                                  -80651;1;0;false;false;;;;;;
                                  -80652;4;0;false;false;63;95;191;;;
                                  -80656;1;0;false;false;;;;;;
                                  -80657;6;0;false;false;63;95;191;;;
                                  -80663;1;0;false;false;;;;;;
                                  -80664;8;0;false;false;63;95;191;;;
                                  -80672;1;0;false;false;;;;;;
                                  -80673;3;0;false;false;63;95;191;;;
                                  -80676;1;0;false;false;;;;;;
                                  -80677;4;0;false;false;63;95;191;;;
                                  -80681;1;0;false;false;;;;;;
                                  -80682;3;0;false;false;63;95;191;;;
                                  -80685;3;0;false;false;;;;;;
                                  -80688;1;0;false;false;63;95;191;;;
                                  -80689;1;0;false;false;;;;;;
                                  -80690;4;0;false;false;63;95;191;;;
                                  -80694;1;0;false;false;;;;;;
                                  -80695;7;0;false;false;63;95;191;;;
                                  -80702;1;0;false;false;;;;;;
                                  -80703;4;0;false;false;63;95;191;;;
                                  -80707;1;0;false;false;;;;;;
                                  -80708;5;0;false;false;63;95;191;;;
                                  -80713;1;0;false;false;;;;;;
                                  -80714;6;0;false;false;63;95;191;;;
                                  -80720;1;0;false;false;;;;;;
                                  -80721;6;0;false;false;63;95;191;;;
                                  -80727;1;0;false;false;;;;;;
                                  -80728;5;0;false;false;63;95;191;;;
                                  -80733;1;0;false;false;;;;;;
                                  -80734;2;0;false;false;63;95;191;;;
                                  -80736;1;0;false;false;;;;;;
                                  -80737;5;0;false;false;63;95;191;;;
                                  -80742;1;0;false;false;;;;;;
                                  -80743;4;0;false;false;63;95;191;;;
                                  -80747;1;0;false;false;;;;;;
                                  -80748;8;0;false;false;63;95;191;;;
                                  -80756;3;0;false;false;;;;;;
                                  -80759;2;0;false;false;63;95;191;;;
                                  -80761;2;0;false;false;;;;;;
                                  -80763;4;1;false;false;127;0;85;;;
                                  -80767;1;0;false;false;;;;;;
                                  -80768;20;0;false;false;0;0;0;;;
                                  -80788;1;0;false;false;;;;;;
                                  -80789;1;0;false;false;0;0;0;;;
                                  -80790;3;0;false;false;;;;;;
                                  -80793;3;1;false;false;127;0;85;;;
                                  -80796;1;0;false;false;;;;;;
                                  -80797;10;0;false;false;0;0;0;;;
                                  -80807;1;0;false;false;;;;;;
                                  -80808;1;0;false;false;0;0;0;;;
                                  -80809;1;0;false;false;;;;;;
                                  -80810;17;0;false;false;0;0;0;;;
                                  -80827;3;0;false;false;;;;;;
                                  -80830;7;0;false;false;0;0;0;;;
                                  -80837;1;0;false;false;;;;;;
                                  -80838;7;0;false;false;0;0;0;;;
                                  -80845;1;0;false;false;;;;;;
                                  -80846;1;0;false;false;0;0;0;;;
                                  -80847;1;0;false;false;;;;;;
                                  -80848;13;0;false;false;0;0;0;;;
                                  -80861;3;0;false;false;;;;;;
                                  -80864;2;1;false;false;127;0;85;;;
                                  -80866;1;0;false;false;;;;;;
                                  -80867;16;0;false;false;0;0;0;;;
                                  -80883;1;0;false;false;;;;;;
                                  -80884;2;0;false;false;0;0;0;;;
                                  -80886;1;0;false;false;;;;;;
                                  -80887;4;1;false;false;127;0;85;;;
                                  -80891;1;0;false;false;0;0;0;;;
                                  -80892;1;0;false;false;;;;;;
                                  -80893;1;0;false;false;0;0;0;;;
                                  -80894;4;0;false;false;;;;;;
                                  -80898;2;1;false;false;127;0;85;;;
                                  -80900;1;0;false;false;;;;;;
                                  -80901;13;0;false;false;0;0;0;;;
                                  -80914;1;0;false;false;;;;;;
                                  -80915;2;0;false;false;0;0;0;;;
                                  -80917;1;0;false;false;;;;;;
                                  -80918;4;1;false;false;127;0;85;;;
                                  -80922;1;0;false;false;;;;;;
                                  -80923;2;0;false;false;0;0;0;;;
                                  -80925;1;0;false;false;;;;;;
                                  -80926;48;0;false;false;0;0;0;;;
                                  -80974;1;0;false;false;;;;;;
                                  -80975;1;0;false;false;0;0;0;;;
                                  -80976;5;0;false;false;;;;;;
                                  -80981;22;0;false;false;0;0;0;;;
                                  -81003;4;1;false;false;127;0;85;;;
                                  -81007;2;0;false;false;0;0;0;;;
                                  -81009;4;0;false;false;;;;;;
                                  -81013;1;0;false;false;0;0;0;;;
                                  -81014;4;0;false;false;;;;;;
                                  -81018;26;0;false;false;0;0;0;;;
                                  -81044;3;0;false;false;;;;;;
                                  -81047;1;0;false;false;0;0;0;;;
                                  -81048;3;0;false;false;;;;;;
                                  -81051;15;0;false;false;0;0;0;;;
                                  -81066;1;0;false;false;;;;;;
                                  -81067;1;0;false;false;0;0;0;;;
                                  -81068;1;0;false;false;;;;;;
                                  -81069;3;1;false;false;127;0;85;;;
                                  -81072;1;0;false;false;;;;;;
                                  -81073;14;0;false;false;0;0;0;;;
                                  -81087;1;0;false;false;;;;;;
                                  -81088;11;0;false;false;0;0;0;;;
                                  -81099;1;0;false;false;;;;;;
                                  -81100;12;0;false;false;0;0;0;;;
                                  -81112;3;0;false;false;;;;;;
                                  -81115;2;0;false;false;0;0;0;;;
                                  -81117;1;0;false;false;;;;;;
                                  -81118;2;0;false;false;0;0;0;;;
                                  -81120;1;0;false;false;;;;;;
                                  -81121;1;0;false;false;0;0;0;;;
                                  -81122;1;0;false;false;;;;;;
                                  -81123;3;1;false;false;127;0;85;;;
                                  -81126;1;0;false;false;;;;;;
                                  -81127;2;0;false;false;0;0;0;;;
                                  -81129;1;0;false;false;;;;;;
                                  -81130;18;0;false;false;0;0;0;;;
                                  -81148;4;0;false;false;;;;;;
                                  -81152;58;0;false;false;0;0;0;;;
                                  -81210;3;0;false;false;;;;;;
                                  -81213;19;0;false;false;0;0;0;;;
                                  -81232;1;0;false;false;;;;;;
                                  -81233;2;0;false;false;0;0;0;;;
                                  -81235;1;0;false;false;;;;;;
                                  -81236;11;0;false;false;0;0;0;;;
                                  -81247;1;0;false;false;;;;;;
                                  -81248;12;0;false;false;0;0;0;;;
                                  -81260;3;0;false;false;;;;;;
                                  -81263;58;0;false;false;0;0;0;;;
                                  -81321;3;0;false;false;;;;;;
                                  -81324;30;0;false;false;0;0;0;;;
                                  -81354;3;0;false;false;;;;;;
                                  -81357;32;0;false;false;0;0;0;;;
                                  -81389;3;0;false;false;;;;;;
                                  -81392;21;0;false;false;0;0;0;;;
                                  -81413;3;0;false;false;;;;;;
                                  -81416;13;0;false;false;0;0;0;;;
                                  -81429;7;0;false;false;;;;;;
                                  -81436;2;1;false;false;127;0;85;;;
                                  -81438;1;0;false;false;;;;;;
                                  -81439;17;0;false;false;0;0;0;;;
                                  -81456;1;0;false;false;;;;;;
                                  -81457;2;0;false;false;0;0;0;;;
                                  -81459;1;0;false;false;;;;;;
                                  -81460;4;1;false;false;127;0;85;;;
                                  -81464;1;0;false;false;0;0;0;;;
                                  -81465;1;0;false;false;;;;;;
                                  -81466;1;0;false;false;0;0;0;;;
                                  -81467;4;0;false;false;;;;;;
                                  -81471;2;1;false;false;127;0;85;;;
                                  -81473;1;0;false;false;;;;;;
                                  -81474;13;0;false;false;0;0;0;;;
                                  -81487;1;0;false;false;;;;;;
                                  -81488;2;0;false;false;0;0;0;;;
                                  -81490;1;0;false;false;;;;;;
                                  -81491;4;1;false;false;127;0;85;;;
                                  -81495;1;0;false;false;;;;;;
                                  -81496;2;0;false;false;0;0;0;;;
                                  -81498;1;0;false;false;;;;;;
                                  -81499;49;0;false;false;0;0;0;;;
                                  -81548;1;0;false;false;;;;;;
                                  -81549;1;0;false;false;0;0;0;;;
                                  -81550;5;0;false;false;;;;;;
                                  -81555;22;0;false;false;0;0;0;;;
                                  -81577;4;1;false;false;127;0;85;;;
                                  -81581;2;0;false;false;0;0;0;;;
                                  -81583;4;0;false;false;;;;;;
                                  -81587;1;0;false;false;0;0;0;;;
                                  -81588;4;0;false;false;;;;;;
                                  -81592;27;0;false;false;0;0;0;;;
                                  -81619;3;0;false;false;;;;;;
                                  -81622;1;0;false;false;0;0;0;;;
                                  -81623;3;0;false;false;;;;;;
                                  -81626;16;0;false;false;0;0;0;;;
                                  -81642;1;0;false;false;;;;;;
                                  -81643;1;0;false;false;0;0;0;;;
                                  -81644;1;0;false;false;;;;;;
                                  -81645;3;1;false;false;127;0;85;;;
                                  -81648;1;0;false;false;;;;;;
                                  -81649;14;0;false;false;0;0;0;;;
                                  -81663;1;0;false;false;;;;;;
                                  -81664;11;0;false;false;0;0;0;;;
                                  -81675;1;0;false;false;;;;;;
                                  -81676;12;0;false;false;0;0;0;;;
                                  -81688;3;0;false;false;;;;;;
                                  -81691;2;0;false;false;0;0;0;;;
                                  -81693;1;0;false;false;;;;;;
                                  -81694;1;0;false;false;0;0;0;;;
                                  -81695;1;0;false;false;;;;;;
                                  -81696;3;1;false;false;127;0;85;;;
                                  -81699;1;0;false;false;;;;;;
                                  -81700;2;0;false;false;0;0;0;;;
                                  -81702;1;0;false;false;;;;;;
                                  -81703;19;0;false;false;0;0;0;;;
                                  -81722;4;0;false;false;;;;;;
                                  -81726;58;0;false;false;0;0;0;;;
                                  -81784;3;0;false;false;;;;;;
                                  -81787;19;0;false;false;0;0;0;;;
                                  -81806;1;0;false;false;;;;;;
                                  -81807;2;0;false;false;0;0;0;;;
                                  -81809;1;0;false;false;;;;;;
                                  -81810;11;0;false;false;0;0;0;;;
                                  -81821;1;0;false;false;;;;;;
                                  -81822;12;0;false;false;0;0;0;;;
                                  -81834;3;0;false;false;;;;;;
                                  -81837;58;0;false;false;0;0;0;;;
                                  -81895;3;0;false;false;;;;;;
                                  -81898;52;0;false;false;0;0;0;;;
                                  -81950;3;0;false;false;;;;;;
                                  -81953;32;0;false;false;0;0;0;;;
                                  -81985;3;0;false;false;;;;;;
                                  -81988;32;0;false;false;0;0;0;;;
                                  -82020;3;0;false;false;;;;;;
                                  -82023;13;0;false;false;0;0;0;;;
                                  -82036;2;0;false;false;;;;;;
                                  -82038;1;0;false;false;0;0;0;;;
                                  -82039;2;0;false;false;;;;;;
                                  -82041;3;0;false;false;63;95;191;;;
                                  -82044;3;0;false;false;;;;;;
                                  -82047;1;0;false;false;63;95;191;;;
                                  -82048;1;0;false;false;;;;;;
                                  -82049;5;0;false;false;63;95;191;;;
                                  -82054;1;0;false;false;;;;;;
                                  -82055;3;0;false;false;63;95;191;;;
                                  -82058;1;0;false;false;;;;;;
                                  -82059;8;0;false;false;63;95;191;;;
                                  -82067;1;0;false;false;;;;;;
                                  -82068;4;0;false;false;63;95;191;;;
                                  -82072;1;0;false;false;;;;;;
                                  -82073;2;0;false;false;63;95;191;;;
                                  -82075;1;0;false;false;;;;;;
                                  -82076;3;0;false;false;63;95;191;;;
                                  -82079;1;0;false;false;;;;;;
                                  -82080;10;0;false;false;63;95;191;;;
                                  -82090;2;0;false;false;;;;;;
                                  -82092;3;0;false;false;63;95;191;;;
                                  -82095;1;0;false;false;;;;;;
                                  -82096;4;0;false;false;63;95;191;;;
                                  -82100;1;0;false;false;;;;;;
                                  -82101;4;0;false;false;63;95;191;;;
                                  -82105;1;0;false;false;;;;;;
                                  -82106;2;0;false;false;63;95;191;;;
                                  -82108;1;0;false;false;;;;;;
                                  -82109;3;0;false;false;63;95;191;;;
                                  -82112;1;0;false;false;;;;;;
                                  -82113;2;0;false;false;63;95;191;;;
                                  -82115;1;0;false;false;;;;;;
                                  -82116;3;0;false;false;63;95;191;;;
                                  -82119;4;0;false;false;;;;;;
                                  -82123;1;0;false;false;63;95;191;;;
                                  -82124;1;0;false;false;;;;;;
                                  -82125;9;0;false;false;63;95;191;;;
                                  -82134;1;0;false;false;;;;;;
                                  -82135;2;0;false;false;63;95;191;;;
                                  -82137;1;0;false;false;;;;;;
                                  -82138;5;0;false;false;63;95;191;;;
                                  -82143;1;0;false;false;;;;;;
                                  -82144;4;0;false;false;63;95;191;;;
                                  -82148;1;0;false;false;;;;;;
                                  -82149;6;0;false;false;63;95;191;;;
                                  -82155;1;0;false;false;;;;;;
                                  -82156;3;0;false;false;63;95;191;;;
                                  -82159;1;0;false;false;;;;;;
                                  -82160;3;0;false;false;63;95;191;;;
                                  -82163;1;0;false;false;;;;;;
                                  -82164;7;0;false;false;63;95;191;;;
                                  -82171;3;0;false;false;;;;;;
                                  -82174;1;0;false;false;63;95;191;;;
                                  -82175;1;0;false;false;;;;;;
                                  -82176;3;0;false;false;127;127;159;;;
                                  -82179;3;0;false;false;;;;;;
                                  -82182;1;0;false;false;63;95;191;;;
                                  -82183;3;0;false;false;;;;;;
                                  -82186;1;0;false;false;63;95;191;;;
                                  -82187;1;0;false;false;;;;;;
                                  -82188;11;1;false;false;127;159;191;;;
                                  -82199;12;0;false;false;63;95;191;;;
                                  -82211;1;0;false;false;;;;;;
                                  -82212;4;0;false;false;127;127;159;;;
                                  -82216;3;0;false;false;;;;;;
                                  -82219;1;0;false;false;63;95;191;;;
                                  -82220;4;0;false;false;;;;;;
                                  -82224;4;0;false;false;127;127;159;;;
                                  -82228;21;0;false;false;63;95;191;;;
                                  -82249;1;0;false;false;;;;;;
                                  -82250;1;0;false;false;127;127;159;;;
                                  -82251;1;0;false;false;;;;;;
                                  -82252;2;0;false;false;63;95;191;;;
                                  -82254;1;0;false;false;;;;;;
                                  -82255;3;0;false;false;63;95;191;;;
                                  -82258;1;0;false;false;;;;;;
                                  -82259;8;0;false;false;63;95;191;;;
                                  -82267;1;0;false;false;;;;;;
                                  -82268;3;0;false;false;63;95;191;;;
                                  -82271;1;0;false;false;;;;;;
                                  -82272;4;0;false;false;63;95;191;;;
                                  -82276;1;0;false;false;;;;;;
                                  -82277;8;0;false;false;63;95;191;;;
                                  -82285;5;0;false;false;127;127;159;;;
                                  -82290;3;0;false;false;;;;;;
                                  -82293;1;0;false;false;63;95;191;;;
                                  -82294;4;0;false;false;;;;;;
                                  -82298;4;0;false;false;127;127;159;;;
                                  -82302;27;0;false;false;63;95;191;;;
                                  -82329;1;0;false;false;;;;;;
                                  -82330;1;0;false;false;127;127;159;;;
                                  -82331;1;0;false;false;;;;;;
                                  -82332;2;0;false;false;63;95;191;;;
                                  -82334;1;0;false;false;;;;;;
                                  -82335;3;0;false;false;63;95;191;;;
                                  -82338;1;0;false;false;;;;;;
                                  -82339;6;0;false;false;63;95;191;;;
                                  -82345;1;0;false;false;;;;;;
                                  -82346;4;0;false;false;63;95;191;;;
                                  -82350;1;0;false;false;;;;;;
                                  -82351;3;0;false;false;63;95;191;;;
                                  -82354;1;0;false;false;;;;;;
                                  -82355;6;0;false;false;63;95;191;;;
                                  -82361;1;0;false;false;;;;;;
                                  -82362;4;0;false;false;63;95;191;;;
                                  -82366;1;0;false;false;;;;;;
                                  -82367;7;0;false;false;63;95;191;;;
                                  -82374;1;0;false;false;;;;;;
                                  -82375;3;0;false;false;63;95;191;;;
                                  -82378;1;0;false;false;;;;;;
                                  -82379;8;0;false;false;63;95;191;;;
                                  -82387;5;0;false;false;127;127;159;;;
                                  -82392;3;0;false;false;;;;;;
                                  -82395;1;0;false;false;63;95;191;;;
                                  -82396;1;0;false;false;;;;;;
                                  -82397;5;0;false;false;127;127;159;;;
                                  -82402;3;0;false;false;;;;;;
                                  -82405;2;0;false;false;63;95;191;;;
                                  -82407;2;0;false;false;;;;;;
                                  -82409;6;1;false;false;127;0;85;;;
                                  -82415;1;0;false;false;;;;;;
                                  -82416;4;1;false;false;127;0;85;;;
                                  -82420;1;0;false;false;;;;;;
                                  -82421;6;0;false;false;0;0;0;;;
                                  -82427;3;0;false;false;;;;;;
                                  -82430;14;0;false;false;0;0;0;;;
                                  -82444;3;0;false;false;;;;;;
                                  -82447;3;1;false;false;127;0;85;;;
                                  -82450;1;0;false;false;;;;;;
                                  -82451;6;0;false;false;0;0;0;;;
                                  -82457;1;0;false;false;;;;;;
                                  -82458;1;0;false;false;0;0;0;;;
                                  -82459;1;0;false;false;;;;;;
                                  -82460;11;0;false;false;0;0;0;;;
                                  -82471;1;0;false;false;;;;;;
                                  -82472;1;0;false;false;0;0;0;;;
                                  -82473;1;0;false;false;;;;;;
                                  -82474;12;0;false;false;0;0;0;;;
                                  -82486;6;0;false;false;;;;;;
                                  -82492;2;1;false;false;127;0;85;;;
                                  -82494;1;0;false;false;;;;;;
                                  -82495;7;0;false;false;0;0;0;;;
                                  -82502;1;0;false;false;;;;;;
                                  -82503;1;0;false;false;0;0;0;;;
                                  -82504;1;0;false;false;;;;;;
                                  -82505;2;0;false;false;0;0;0;;;
                                  -82507;1;0;false;false;;;;;;
                                  -82508;1;0;false;false;0;0;0;;;
                                  -82509;4;0;false;false;;;;;;
                                  -82513;3;1;false;false;127;0;85;;;
                                  -82516;1;0;false;false;;;;;;
                                  -82517;1;0;false;false;0;0;0;;;
                                  -82518;5;0;false;false;;;;;;
                                  -82523;32;0;false;false;0;0;0;;;
                                  -82555;1;0;false;false;;;;;;
                                  -82556;7;0;false;false;0;0;0;;;
                                  -82563;1;0;false;false;;;;;;
                                  -82564;15;0;false;false;0;0;0;;;
                                  -82579;4;0;false;false;;;;;;
                                  -82583;1;0;false;false;0;0;0;;;
                                  -82584;4;0;false;false;;;;;;
                                  -82588;5;1;false;false;127;0;85;;;
                                  -82593;1;0;false;false;;;;;;
                                  -82594;9;0;false;false;0;0;0;;;
                                  -82603;1;0;false;false;;;;;;
                                  -82604;6;0;false;false;0;0;0;;;
                                  -82610;1;0;false;false;;;;;;
                                  -82611;1;0;false;false;0;0;0;;;
                                  -82612;5;0;false;false;;;;;;
                                  -82617;69;0;false;false;63;127;95;;;
                                  -82686;3;0;false;false;;;;;;
                                  -82689;64;0;false;false;63;127;95;;;
                                  -82753;3;0;false;false;;;;;;
                                  -82756;18;0;false;false;63;127;95;;;
                                  -82774;3;0;false;false;;;;;;
                                  -82777;47;0;false;false;63;127;95;;;
                                  -82824;3;0;false;false;;;;;;
                                  -82827;2;1;false;false;127;0;85;;;
                                  -82829;1;0;false;false;;;;;;
                                  -82830;11;0;false;false;0;0;0;;;
                                  -82841;1;0;false;false;;;;;;
                                  -82842;2;0;false;false;0;0;0;;;
                                  -82844;1;0;false;false;;;;;;
                                  -82845;31;0;false;false;0;0;0;;;
                                  -82876;1;0;false;false;;;;;;
                                  -82877;1;0;false;false;0;0;0;;;
                                  -82878;6;0;false;false;;;;;;
                                  -82884;5;1;false;false;127;0;85;;;
                                  -82889;1;0;false;false;;;;;;
                                  -82890;6;0;false;false;0;0;0;;;
                                  -82896;5;0;false;false;;;;;;
                                  -82901;1;0;false;false;0;0;0;;;
                                  -82902;5;0;false;false;;;;;;
                                  -82907;52;0;false;false;63;127;95;;;
                                  -82959;3;0;false;false;;;;;;
                                  -82962;21;0;false;false;63;127;95;;;
                                  -82983;3;0;false;false;;;;;;
                                  -82986;6;1;false;false;127;0;85;;;
                                  -82992;1;0;false;false;0;0;0;;;
                                  -82993;4;0;false;false;;;;;;
                                  -82997;1;0;false;false;0;0;0;;;
                                  -82998;4;0;false;false;;;;;;
                                  -83002;11;0;false;false;0;0;0;;;
                                  -83013;3;0;false;false;;;;;;
                                  -83016;1;0;false;false;0;0;0;;;
                                  -83017;2;0;false;false;;;;;;
                                  -83019;1;0;false;false;0;0;0;;;
                                  -83020;2;0;false;false;;;;;;
                                  -83022;3;0;false;false;63;95;191;;;
                                  -83025;4;0;false;false;;;;;;
                                  -83029;1;0;false;false;63;95;191;;;
                                  -83030;1;0;false;false;;;;;;
                                  -83031;1;0;false;false;63;95;191;;;
                                  -83032;1;0;false;false;;;;;;
                                  -83033;5;0;false;false;63;95;191;;;
                                  -83038;1;0;false;false;;;;;;
                                  -83039;4;0;false;false;63;95;191;;;
                                  -83043;1;0;false;false;;;;;;
                                  -83044;5;0;false;false;63;95;191;;;
                                  -83049;1;0;false;false;;;;;;
                                  -83050;3;0;false;false;63;95;191;;;
                                  -83053;1;0;false;false;;;;;;
                                  -83054;9;0;false;false;63;95;191;;;
                                  -83063;2;0;false;false;;;;;;
                                  -83065;3;0;false;false;63;95;191;;;
                                  -83068;1;0;false;false;;;;;;
                                  -83069;2;0;false;false;63;95;191;;;
                                  -83071;1;0;false;false;;;;;;
                                  -83072;2;0;false;false;63;95;191;;;
                                  -83074;1;0;false;false;;;;;;
                                  -83075;6;0;false;false;63;95;191;;;
                                  -83081;1;0;false;false;;;;;;
                                  -83082;5;0;false;false;63;95;191;;;
                                  -83087;1;0;false;false;;;;;;
                                  -83088;14;0;false;false;63;95;191;;;
                                  -83102;2;0;false;false;;;;;;
                                  -83104;2;0;false;false;63;95;191;;;
                                  -83106;3;0;false;false;;;;;;
                                  -83109;1;0;false;false;63;95;191;;;
                                  -83110;1;0;false;false;;;;;;
                                  -83111;3;0;false;false;63;95;191;;;
                                  -83114;1;0;false;false;;;;;;
                                  -83115;4;0;false;false;63;95;191;;;
                                  -83119;1;0;false;false;;;;;;
                                  -83120;8;0;false;false;63;95;191;;;
                                  -83128;1;0;false;false;;;;;;
                                  -83129;2;0;false;false;63;95;191;;;
                                  -83131;1;0;false;false;;;;;;
                                  -83132;7;0;false;false;63;95;191;;;
                                  -83139;1;0;false;false;;;;;;
                                  -83140;2;0;false;false;63;95;191;;;
                                  -83142;1;0;false;false;;;;;;
                                  -83143;3;0;false;false;63;95;191;;;
                                  -83146;1;0;false;false;;;;;;
                                  -83147;6;0;false;false;63;95;191;;;
                                  -83153;1;0;false;false;;;;;;
                                  -83154;5;0;false;false;63;95;191;;;
                                  -83159;1;0;false;false;;;;;;
                                  -83160;8;0;false;false;63;95;191;;;
                                  -83168;1;0;false;false;;;;;;
                                  -83169;14;0;false;false;63;95;191;;;
                                  -83183;5;0;false;false;;;;;;
                                  -83188;1;0;false;false;63;95;191;;;
                                  -83189;1;0;false;false;;;;;;
                                  -83190;10;0;false;false;63;95;191;;;
                                  -83200;1;0;false;false;;;;;;
                                  -83201;5;0;false;false;63;95;191;;;
                                  -83206;1;0;false;false;;;;;;
                                  -83207;5;0;false;false;63;95;191;;;
                                  -83212;1;0;false;false;;;;;;
                                  -83213;4;0;false;false;63;95;191;;;
                                  -83217;1;0;false;false;;;;;;
                                  -83218;4;0;false;false;63;95;191;;;
                                  -83222;1;0;false;false;;;;;;
                                  -83223;3;0;false;false;63;95;191;;;
                                  -83226;1;0;false;false;;;;;;
                                  -83227;6;0;false;false;63;95;191;;;
                                  -83233;1;0;false;false;;;;;;
                                  -83234;2;0;false;false;63;95;191;;;
                                  -83236;1;0;false;false;;;;;;
                                  -83237;3;0;false;false;63;95;191;;;
                                  -83240;1;0;false;false;;;;;;
                                  -83241;14;0;false;false;63;95;191;;;
                                  -83255;3;0;false;false;;;;;;
                                  -83258;2;0;false;false;63;95;191;;;
                                  -83260;2;0;false;false;;;;;;
                                  -83262;4;1;false;false;127;0;85;;;
                                  -83266;1;0;false;false;;;;;;
                                  -83267;18;0;false;false;0;0;0;;;
                                  -83285;1;0;false;false;;;;;;
                                  -83286;6;0;false;false;0;0;0;;;
                                  -83292;1;0;false;false;;;;;;
                                  -83293;1;0;false;false;0;0;0;;;
                                  -83294;3;0;false;false;;;;;;
                                  -83297;9;0;false;false;0;0;0;;;
                                  -83306;1;0;false;false;;;;;;
                                  -83307;4;0;false;false;0;0;0;;;
                                  -83311;1;0;false;false;;;;;;
                                  -83312;1;0;false;false;0;0;0;;;
                                  -83313;1;0;false;false;;;;;;
                                  -83314;16;0;false;false;0;0;0;;;
                                  -83330;8;0;false;false;;;;;;
                                  -83338;2;1;false;false;127;0;85;;;
                                  -83340;1;0;false;false;;;;;;
                                  -83341;8;0;false;false;0;0;0;;;
                                  -83349;1;0;false;false;;;;;;
                                  -83350;1;0;false;false;0;0;0;;;
                                  -83351;1;0;false;false;;;;;;
                                  -83352;12;0;false;false;0;0;0;;;
                                  -83364;1;0;false;false;;;;;;
                                  -83365;1;0;false;false;0;0;0;;;
                                  -83366;4;0;false;false;;;;;;
                                  -83370;22;0;false;false;0;0;0;;;
                                  -83392;1;0;false;false;;;;;;
                                  -83393;7;0;false;false;0;0;0;;;
                                  -83400;1;0;false;false;;;;;;
                                  -83401;1;0;false;false;0;0;0;;;
                                  -83402;1;0;false;false;;;;;;
                                  -83403;13;0;false;false;0;0;0;;;
                                  -83416;3;0;false;false;;;;;;
                                  -83419;1;0;false;false;0;0;0;;;
                                  -83420;3;0;false;false;;;;;;
                                  -83423;4;1;false;false;127;0;85;;;
                                  -83427;4;0;false;false;;;;;;
                                  -83431;2;1;false;false;127;0;85;;;
                                  -83433;1;0;false;false;;;;;;
                                  -83434;8;0;false;false;0;0;0;;;
                                  -83442;1;0;false;false;;;;;;
                                  -83443;1;0;false;false;0;0;0;;;
                                  -83444;1;0;false;false;;;;;;
                                  -83445;2;0;false;false;0;0;0;;;
                                  -83447;1;0;false;false;;;;;;
                                  -83448;1;0;false;false;0;0;0;;;
                                  -83449;4;0;false;false;;;;;;
                                  -83453;20;0;false;false;0;0;0;;;
                                  -83473;1;0;false;false;;;;;;
                                  -83474;10;0;false;false;0;0;0;;;
                                  -83484;3;0;false;false;;;;;;
                                  -83487;1;0;false;false;0;0;0;;;
                                  -83488;3;0;false;false;;;;;;
                                  -83491;4;1;false;false;127;0;85;;;
                                  -83495;4;0;false;false;;;;;;
                                  -83499;2;1;false;false;127;0;85;;;
                                  -83501;1;0;false;false;;;;;;
                                  -83502;8;0;false;false;0;0;0;;;
                                  -83510;1;0;false;false;;;;;;
                                  -83511;1;0;false;false;0;0;0;;;
                                  -83512;1;0;false;false;;;;;;
                                  -83513;10;0;false;false;0;0;0;;;
                                  -83523;1;0;false;false;;;;;;
                                  -83524;2;0;false;false;0;0;0;;;
                                  -83526;1;0;false;false;;;;;;
                                  -83527;10;0;false;false;0;0;0;;;
                                  -83537;1;0;false;false;;;;;;
                                  -83538;1;0;false;false;0;0;0;;;
                                  -83539;4;0;false;false;;;;;;
                                  -83543;32;0;false;false;0;0;0;;;
                                  -83575;1;0;false;false;;;;;;
                                  -83576;10;0;false;false;0;0;0;;;
                                  -83586;1;0;false;false;;;;;;
                                  -83587;1;0;false;false;0;0;0;;;
                                  -83588;1;0;false;false;;;;;;
                                  -83589;9;0;false;false;0;0;0;;;
                                  -83598;3;0;false;false;;;;;;
                                  -83601;1;0;false;false;0;0;0;;;
                                  -83602;3;0;false;false;;;;;;
                                  -83605;4;1;false;false;127;0;85;;;
                                  -83609;4;0;false;false;;;;;;
                                  -83613;2;1;false;false;127;0;85;;;
                                  -83615;1;0;false;false;;;;;;
                                  -83616;8;0;false;false;0;0;0;;;
                                  -83624;1;0;false;false;;;;;;
                                  -83625;1;0;false;false;0;0;0;;;
                                  -83626;1;0;false;false;;;;;;
                                  -83627;10;0;false;false;0;0;0;;;
                                  -83637;1;0;false;false;;;;;;
                                  -83638;1;0;false;false;0;0;0;;;
                                  -83639;1;0;false;false;;;;;;
                                  -83640;10;0;false;false;0;0;0;;;
                                  -83650;1;0;false;false;;;;;;
                                  -83651;1;0;false;false;0;0;0;;;
                                  -83652;1;0;false;false;;;;;;
                                  -83653;11;0;false;false;0;0;0;;;
                                  -83664;1;0;false;false;;;;;;
                                  -83665;2;0;false;false;0;0;0;;;
                                  -83667;1;0;false;false;;;;;;
                                  -83668;10;0;false;false;0;0;0;;;
                                  -83678;1;0;false;false;;;;;;
                                  -83679;1;0;false;false;0;0;0;;;
                                  -83680;4;0;false;false;;;;;;
                                  -83684;28;0;false;false;0;0;0;;;
                                  -83712;1;0;false;false;;;;;;
                                  -83713;7;0;false;false;0;0;0;;;
                                  -83720;1;0;false;false;;;;;;
                                  -83721;1;0;false;false;0;0;0;;;
                                  -83722;1;0;false;false;;;;;;
                                  -83723;11;0;false;false;0;0;0;;;
                                  -83734;1;0;false;false;;;;;;
                                  -83735;1;0;false;false;0;0;0;;;
                                  -83736;1;0;false;false;;;;;;
                                  -83737;10;0;false;false;0;0;0;;;
                                  -83747;1;0;false;false;;;;;;
                                  -83748;1;0;false;false;0;0;0;;;
                                  -83749;1;0;false;false;;;;;;
                                  -83750;14;0;false;false;0;0;0;;;
                                  -83764;3;0;false;false;;;;;;
                                  -83767;1;0;false;false;0;0;0;;;
                                  -83768;3;0;false;false;;;;;;
                                  -83771;4;1;false;false;127;0;85;;;
                                  -83775;1;0;false;false;;;;;;
                                  -83776;1;0;false;false;0;0;0;;;
                                  -83777;4;0;false;false;;;;;;
                                  -83781;16;0;false;false;0;0;0;;;
                                  -83797;3;0;false;false;;;;;;
                                  -83800;1;0;false;false;0;0;0;;;
                                  -83801;2;0;false;false;;;;;;
                                  -83803;1;0;false;false;0;0;0;;;
                                  -83804;2;0;false;false;;;;;;
                                  -83806;3;0;false;false;63;95;191;;;
                                  -83809;4;0;false;false;;;;;;
                                  -83813;1;0;false;false;63;95;191;;;
                                  -83814;1;0;false;false;;;;;;
                                  -83815;9;0;false;false;63;95;191;;;
                                  -83824;1;0;false;false;;;;;;
                                  -83825;14;0;false;false;63;95;191;;;
                                  -83839;3;0;false;false;;;;;;
                                  -83842;1;0;false;false;63;95;191;;;
                                  -83843;1;0;false;false;;;;;;
                                  -83844;3;0;false;false;127;127;159;;;
                                  -83847;3;0;false;false;;;;;;
                                  -83850;1;0;false;false;63;95;191;;;
                                  -83851;3;0;false;false;;;;;;
                                  -83854;1;0;false;false;63;95;191;;;
                                  -83855;1;0;false;false;;;;;;
                                  -83856;7;1;false;false;127;159;191;;;
                                  -83863;9;0;false;false;63;95;191;;;
                                  -83872;1;0;false;false;;;;;;
                                  -83873;7;0;false;false;63;95;191;;;
                                  -83880;1;0;false;false;;;;;;
                                  -83881;9;0;false;false;63;95;191;;;
                                  -83890;1;0;false;false;;;;;;
                                  -83891;16;0;false;false;63;95;191;;;
                                  -83907;1;0;false;false;;;;;;
                                  -83908;19;0;false;false;63;95;191;;;
                                  -83927;3;0;false;false;;;;;;
                                  -83930;2;0;false;false;63;95;191;;;
                                  -83932;2;0;false;false;;;;;;
                                  -83934;4;1;false;false;127;0;85;;;
                                  -83938;1;0;false;false;;;;;;
                                  -83939;13;0;false;false;0;0;0;;;
                                  -83952;3;1;false;false;127;0;85;;;
                                  -83955;1;0;false;false;;;;;;
                                  -83956;10;0;false;false;0;0;0;;;
                                  -83966;1;0;false;false;;;;;;
                                  -83967;3;1;false;false;127;0;85;;;
                                  -83970;1;0;false;false;;;;;;
                                  -83971;9;0;false;false;0;0;0;;;
                                  -83980;1;0;false;false;;;;;;
                                  -83981;1;0;false;false;0;0;0;;;
                                  -83982;3;0;false;false;;;;;;
                                  -83985;8;0;false;false;0;0;0;;;
                                  -83993;1;0;false;false;;;;;;
                                  -83994;5;0;false;false;0;0;0;;;
                                  -83999;1;0;false;false;;;;;;
                                  -84000;1;0;false;false;0;0;0;;;
                                  -84001;1;0;false;false;;;;;;
                                  -84002;4;1;false;false;127;0;85;;;
                                  -84006;1;0;false;false;0;0;0;;;
                                  -84007;6;0;false;false;;;;;;
                                  -84013;18;0;false;false;0;0;0;;;
                                  -84031;1;0;false;false;;;;;;
                                  -84032;1;0;false;false;0;0;0;;;
                                  -84033;1;0;false;false;;;;;;
                                  -84034;9;0;false;false;0;0;0;;;
                                  -84043;5;0;false;false;;;;;;
                                  -84048;69;0;false;false;63;127;95;;;
                                  -84117;1;0;false;false;;;;;;
                                  -84118;2;1;false;false;127;0;85;;;
                                  -84120;1;0;false;false;;;;;;
                                  -84121;20;0;false;false;0;0;0;;;
                                  -84141;1;0;false;false;;;;;;
                                  -84142;2;0;false;false;0;0;0;;;
                                  -84144;1;0;false;false;;;;;;
                                  -84145;10;0;false;false;0;0;0;;;
                                  -84155;1;0;false;false;;;;;;
                                  -84156;1;0;false;false;0;0;0;;;
                                  -84157;4;0;false;false;;;;;;
                                  -84161;6;1;false;false;127;0;85;;;
                                  -84167;1;0;false;false;0;0;0;;;
                                  -84168;3;0;false;false;;;;;;
                                  -84171;1;0;false;false;0;0;0;;;
                                  -84172;6;0;false;false;;;;;;
                                  -84178;5;1;false;false;127;0;85;;;
                                  -84183;1;0;false;false;;;;;;
                                  -84184;7;0;false;false;0;0;0;;;
                                  -84191;1;0;false;false;;;;;;
                                  -84192;7;0;false;false;0;0;0;;;
                                  -84199;1;0;false;false;;;;;;
                                  -84200;1;0;false;false;0;0;0;;;
                                  -84201;1;0;false;false;;;;;;
                                  -84202;13;0;false;false;0;0;0;;;
                                  -84215;3;0;false;false;;;;;;
                                  -84218;65;0;false;false;63;127;95;;;
                                  -84283;1;0;false;false;;;;;;
                                  -84284;50;0;false;false;63;127;95;;;
                                  -84334;1;0;false;false;;;;;;
                                  -84335;2;1;false;false;127;0;85;;;
                                  -84337;1;0;false;false;;;;;;
                                  -84338;10;0;false;false;0;0;0;;;
                                  -84348;1;0;false;false;;;;;;
                                  -84349;2;0;false;false;0;0;0;;;
                                  -84351;1;0;false;false;;;;;;
                                  -84352;7;0;false;false;0;0;0;;;
                                  -84359;1;0;false;false;;;;;;
                                  -84360;1;0;false;false;0;0;0;;;
                                  -84361;4;0;false;false;;;;;;
                                  -84365;5;0;false;false;0;0;0;;;
                                  -84370;1;0;false;false;;;;;;
                                  -84371;1;0;false;false;0;0;0;;;
                                  -84372;1;0;false;false;;;;;;
                                  -84373;3;1;false;false;127;0;85;;;
                                  -84376;1;0;false;false;;;;;;
                                  -84377;10;0;false;false;0;0;0;;;
                                  -84387;1;0;false;false;;;;;;
                                  -84388;1;0;false;false;0;0;0;;;
                                  -84389;5;0;false;false;;;;;;
                                  -84394;6;1;false;false;127;0;85;;;
                                  -84400;1;0;false;false;;;;;;
                                  -84401;4;1;false;false;127;0;85;;;
                                  -84405;1;0;false;false;;;;;;
                                  -84406;5;0;false;false;0;0;0;;;
                                  -84411;1;0;false;false;;;;;;
                                  -84412;1;0;false;false;0;0;0;;;
                                  -84413;6;0;false;false;;;;;;
                                  -84419;2;1;false;false;127;0;85;;;
                                  -84421;1;0;false;false;;;;;;
                                  -84422;20;0;false;false;0;0;0;;;
                                  -84442;1;0;false;false;;;;;;
                                  -84443;2;0;false;false;0;0;0;;;
                                  -84445;1;0;false;false;;;;;;
                                  -84446;7;0;false;false;0;0;0;;;
                                  -84453;1;0;false;false;;;;;;
                                  -84454;1;0;false;false;0;0;0;;;
                                  -84455;7;0;false;false;;;;;;
                                  -84462;3;1;false;false;127;0;85;;;
                                  -84465;1;0;false;false;;;;;;
                                  -84466;5;0;false;false;0;0;0;;;
                                  -84471;1;0;false;false;;;;;;
                                  -84472;1;0;false;false;0;0;0;;;
                                  -84473;1;0;false;false;;;;;;
                                  -84474;19;0;false;false;0;0;0;;;
                                  -84493;1;0;false;false;;;;;;
                                  -84494;1;0;false;false;0;0;0;;;
                                  -84495;1;0;false;false;;;;;;
                                  -84496;16;0;false;false;0;0;0;;;
                                  -84512;1;0;false;false;;;;;;
                                  -84513;1;0;false;false;0;0;0;;;
                                  -84514;1;0;false;false;;;;;;
                                  -84515;2;0;false;false;0;0;0;;;
                                  -84517;7;0;false;false;;;;;;
                                  -84524;25;0;false;false;0;0;0;;;
                                  -84549;7;0;false;false;;;;;;
                                  -84556;32;0;false;false;0;0;0;;;
                                  -84588;1;0;false;false;;;;;;
                                  -84589;4;1;false;false;127;0;85;;;
                                  -84593;2;0;false;false;0;0;0;;;
                                  -84595;6;0;false;false;;;;;;
                                  -84601;1;0;false;false;0;0;0;;;
                                  -84602;5;0;false;false;;;;;;
                                  -84607;1;0;false;false;0;0;0;;;
                                  -84608;4;0;false;false;;;;;;
                                  -84612;2;0;false;false;0;0;0;;;
                                  -84614;4;0;false;false;;;;;;
                                  -84618;19;0;false;false;0;0;0;;;
                                  -84637;1;0;false;false;;;;;;
                                  -84638;1;0;false;false;0;0;0;;;
                                  -84639;1;0;false;false;;;;;;
                                  -84640;10;0;false;false;0;0;0;;;
                                  -84650;4;0;false;false;;;;;;
                                  -84654;32;0;false;false;0;0;0;;;
                                  -84686;1;0;false;false;;;;;;
                                  -84687;7;0;false;false;0;0;0;;;
                                  -84694;3;0;false;false;;;;;;
                                  -84697;1;0;false;false;0;0;0;;;
                                  -84698;1;0;false;false;;;;;;
                                  -84699;4;1;false;false;127;0;85;;;
                                  -84703;1;0;false;false;;;;;;
                                  -84704;2;1;false;false;127;0;85;;;
                                  -84706;1;0;false;false;;;;;;
                                  -84707;10;0;false;false;0;0;0;;;
                                  -84717;1;0;false;false;;;;;;
                                  -84718;2;0;false;false;0;0;0;;;
                                  -84720;1;0;false;false;;;;;;
                                  -84721;9;0;false;false;0;0;0;;;
                                  -84730;1;0;false;false;;;;;;
                                  -84731;1;0;false;false;0;0;0;;;
                                  -84732;4;0;false;false;;;;;;
                                  -84736;5;0;false;false;0;0;0;;;
                                  -84741;1;0;false;false;;;;;;
                                  -84742;1;0;false;false;0;0;0;;;
                                  -84743;1;0;false;false;;;;;;
                                  -84744;3;1;false;false;127;0;85;;;
                                  -84747;1;0;false;false;;;;;;
                                  -84748;10;0;false;false;0;0;0;;;
                                  -84758;1;0;false;false;;;;;;
                                  -84759;1;0;false;false;0;0;0;;;
                                  -84760;5;0;false;false;;;;;;
                                  -84765;6;1;false;false;127;0;85;;;
                                  -84771;1;0;false;false;;;;;;
                                  -84772;4;1;false;false;127;0;85;;;
                                  -84776;1;0;false;false;;;;;;
                                  -84777;5;0;false;false;0;0;0;;;
                                  -84782;1;0;false;false;;;;;;
                                  -84783;1;0;false;false;0;0;0;;;
                                  -84784;6;0;false;false;;;;;;
                                  -84790;2;1;false;false;127;0;85;;;
                                  -84792;1;0;false;false;;;;;;
                                  -84793;20;0;false;false;0;0;0;;;
                                  -84813;1;0;false;false;;;;;;
                                  -84814;2;0;false;false;0;0;0;;;
                                  -84816;1;0;false;false;;;;;;
                                  -84817;9;0;false;false;0;0;0;;;
                                  -84826;1;0;false;false;;;;;;
                                  -84827;1;0;false;false;0;0;0;;;
                                  -84828;7;0;false;false;;;;;;
                                  -84835;3;1;false;false;127;0;85;;;
                                  -84838;1;0;false;false;;;;;;
                                  -84839;5;0;false;false;0;0;0;;;
                                  -84844;1;0;false;false;;;;;;
                                  -84845;1;0;false;false;0;0;0;;;
                                  -84846;1;0;false;false;;;;;;
                                  -84847;19;0;false;false;0;0;0;;;
                                  -84866;1;0;false;false;;;;;;
                                  -84867;1;0;false;false;0;0;0;;;
                                  -84868;1;0;false;false;;;;;;
                                  -84869;16;0;false;false;0;0;0;;;
                                  -84885;1;0;false;false;;;;;;
                                  -84886;1;0;false;false;0;0;0;;;
                                  -84887;1;0;false;false;;;;;;
                                  -84888;2;0;false;false;0;0;0;;;
                                  -84890;7;0;false;false;;;;;;
                                  -84897;27;0;false;false;0;0;0;;;
                                  -84924;7;0;false;false;;;;;;
                                  -84931;32;0;false;false;0;0;0;;;
                                  -84963;1;0;false;false;;;;;;
                                  -84964;4;1;false;false;127;0;85;;;
                                  -84968;2;0;false;false;0;0;0;;;
                                  -84970;6;0;false;false;;;;;;
                                  -84976;1;0;false;false;0;0;0;;;
                                  -84977;5;0;false;false;;;;;;
                                  -84982;1;0;false;false;0;0;0;;;
                                  -84983;4;0;false;false;;;;;;
                                  -84987;2;0;false;false;0;0;0;;;
                                  -84989;4;0;false;false;;;;;;
                                  -84993;19;0;false;false;0;0;0;;;
                                  -85012;1;0;false;false;;;;;;
                                  -85013;1;0;false;false;0;0;0;;;
                                  -85014;1;0;false;false;;;;;;
                                  -85015;10;0;false;false;0;0;0;;;
                                  -85025;4;0;false;false;;;;;;
                                  -85029;32;0;false;false;0;0;0;;;
                                  -85061;1;0;false;false;;;;;;
                                  -85062;7;0;false;false;0;0;0;;;
                                  -85069;3;0;false;false;;;;;;
                                  -85072;1;0;false;false;0;0;0;;;
                                  -85073;1;0;false;false;;;;;;
                                  -85074;4;1;false;false;127;0;85;;;
                                  -85078;1;0;false;false;;;;;;
                                  -85079;2;1;false;false;127;0;85;;;
                                  -85081;1;0;false;false;;;;;;
                                  -85082;10;0;false;false;0;0;0;;;
                                  -85092;1;0;false;false;;;;;;
                                  -85093;2;0;false;false;0;0;0;;;
                                  -85095;1;0;false;false;;;;;;
                                  -85096;15;0;false;false;0;0;0;;;
                                  -85111;1;0;false;false;;;;;;
                                  -85112;1;0;false;false;0;0;0;;;
                                  -85113;4;0;false;false;;;;;;
                                  -85117;5;0;false;false;0;0;0;;;
                                  -85122;1;0;false;false;;;;;;
                                  -85123;1;0;false;false;0;0;0;;;
                                  -85124;1;0;false;false;;;;;;
                                  -85125;3;1;false;false;127;0;85;;;
                                  -85128;1;0;false;false;;;;;;
                                  -85129;10;0;false;false;0;0;0;;;
                                  -85139;1;0;false;false;;;;;;
                                  -85140;1;0;false;false;0;0;0;;;
                                  -85141;5;0;false;false;;;;;;
                                  -85146;6;1;false;false;127;0;85;;;
                                  -85152;1;0;false;false;;;;;;
                                  -85153;4;1;false;false;127;0;85;;;
                                  -85157;1;0;false;false;;;;;;
                                  -85158;5;0;false;false;0;0;0;;;
                                  -85163;1;0;false;false;;;;;;
                                  -85164;1;0;false;false;0;0;0;;;
                                  -85165;6;0;false;false;;;;;;
                                  -85171;2;1;false;false;127;0;85;;;
                                  -85173;1;0;false;false;;;;;;
                                  -85174;20;0;false;false;0;0;0;;;
                                  -85194;1;0;false;false;;;;;;
                                  -85195;2;0;false;false;0;0;0;;;
                                  -85197;1;0;false;false;;;;;;
                                  -85198;15;0;false;false;0;0;0;;;
                                  -85213;1;0;false;false;;;;;;
                                  -85214;1;0;false;false;0;0;0;;;
                                  -85215;7;0;false;false;;;;;;
                                  -85222;15;0;false;false;0;0;0;;;
                                  -85237;7;0;false;false;;;;;;
                                  -85244;30;0;false;false;0;0;0;;;
                                  -85274;7;0;false;false;;;;;;
                                  -85281;19;0;false;false;0;0;0;;;
                                  -85300;7;0;false;false;;;;;;
                                  -85307;32;0;false;false;0;0;0;;;
                                  -85339;1;0;false;false;;;;;;
                                  -85340;4;1;false;false;127;0;85;;;
                                  -85344;2;0;false;false;0;0;0;;;
                                  -85346;6;0;false;false;;;;;;
                                  -85352;1;0;false;false;0;0;0;;;
                                  -85353;5;0;false;false;;;;;;
                                  -85358;1;0;false;false;0;0;0;;;
                                  -85359;4;0;false;false;;;;;;
                                  -85363;2;0;false;false;0;0;0;;;
                                  -85365;4;0;false;false;;;;;;
                                  -85369;19;0;false;false;0;0;0;;;
                                  -85388;1;0;false;false;;;;;;
                                  -85389;1;0;false;false;0;0;0;;;
                                  -85390;1;0;false;false;;;;;;
                                  -85391;10;0;false;false;0;0;0;;;
                                  -85401;4;0;false;false;;;;;;
                                  -85405;32;0;false;false;0;0;0;;;
                                  -85437;1;0;false;false;;;;;;
                                  -85438;7;0;false;false;0;0;0;;;
                                  -85445;3;0;false;false;;;;;;
                                  -85448;1;0;false;false;0;0;0;;;
                                  -85449;1;0;false;false;;;;;;
                                  -85450;4;1;false;false;127;0;85;;;
                                  -85454;1;0;false;false;;;;;;
                                  -85455;2;1;false;false;127;0;85;;;
                                  -85457;1;0;false;false;;;;;;
                                  -85458;10;0;false;false;0;0;0;;;
                                  -85468;1;0;false;false;;;;;;
                                  -85469;2;0;false;false;0;0;0;;;
                                  -85471;1;0;false;false;;;;;;
                                  -85472;19;0;false;false;0;0;0;;;
                                  -85491;1;0;false;false;;;;;;
                                  -85492;1;0;false;false;0;0;0;;;
                                  -85493;4;0;false;false;;;;;;
                                  -85497;5;0;false;false;0;0;0;;;
                                  -85502;1;0;false;false;;;;;;
                                  -85503;1;0;false;false;0;0;0;;;
                                  -85504;1;0;false;false;;;;;;
                                  -85505;3;1;false;false;127;0;85;;;
                                  -85508;1;0;false;false;;;;;;
                                  -85509;10;0;false;false;0;0;0;;;
                                  -85519;1;0;false;false;;;;;;
                                  -85520;1;0;false;false;0;0;0;;;
                                  -85521;5;0;false;false;;;;;;
                                  -85526;6;1;false;false;127;0;85;;;
                                  -85532;1;0;false;false;;;;;;
                                  -85533;4;1;false;false;127;0;85;;;
                                  -85537;1;0;false;false;;;;;;
                                  -85538;5;0;false;false;0;0;0;;;
                                  -85543;1;0;false;false;;;;;;
                                  -85544;1;0;false;false;0;0;0;;;
                                  -85545;6;0;false;false;;;;;;
                                  -85551;2;1;false;false;127;0;85;;;
                                  -85553;1;0;false;false;;;;;;
                                  -85554;20;0;false;false;0;0;0;;;
                                  -85574;1;0;false;false;;;;;;
                                  -85575;2;0;false;false;0;0;0;;;
                                  -85577;1;0;false;false;;;;;;
                                  -85578;19;0;false;false;0;0;0;;;
                                  -85597;1;0;false;false;;;;;;
                                  -85598;1;0;false;false;0;0;0;;;
                                  -85599;7;0;false;false;;;;;;
                                  -85606;19;0;false;false;0;0;0;;;
                                  -85625;7;0;false;false;;;;;;
                                  -85632;30;0;false;false;0;0;0;;;
                                  -85662;7;0;false;false;;;;;;
                                  -85669;19;0;false;false;0;0;0;;;
                                  -85688;7;0;false;false;;;;;;
                                  -85695;32;0;false;false;0;0;0;;;
                                  -85727;1;0;false;false;;;;;;
                                  -85728;4;1;false;false;127;0;85;;;
                                  -85732;2;0;false;false;0;0;0;;;
                                  -85734;6;0;false;false;;;;;;
                                  -85740;1;0;false;false;0;0;0;;;
                                  -85741;5;0;false;false;;;;;;
                                  -85746;1;0;false;false;0;0;0;;;
                                  -85747;4;0;false;false;;;;;;
                                  -85751;2;0;false;false;0;0;0;;;
                                  -85753;4;0;false;false;;;;;;
                                  -85757;19;0;false;false;0;0;0;;;
                                  -85776;1;0;false;false;;;;;;
                                  -85777;1;0;false;false;0;0;0;;;
                                  -85778;1;0;false;false;;;;;;
                                  -85779;10;0;false;false;0;0;0;;;
                                  -85789;4;0;false;false;;;;;;
                                  -85793;32;0;false;false;0;0;0;;;
                                  -85825;1;0;false;false;;;;;;
                                  -85826;7;0;false;false;0;0;0;;;
                                  -85833;3;0;false;false;;;;;;
                                  -85836;1;0;false;false;0;0;0;;;
                                  -85837;2;0;false;false;;;;;;
                                  -85839;1;0;false;false;0;0;0;;;
                                  -85840;2;0;false;false;;;;;;
                                  -85842;3;0;false;false;63;95;191;;;
                                  -85845;3;0;false;false;;;;;;
                                  -85848;1;0;false;false;63;95;191;;;
                                  -85849;1;0;false;false;;;;;;
                                  -85850;7;0;false;false;63;95;191;;;
                                  -85857;1;0;false;false;;;;;;
                                  -85858;3;0;false;false;63;95;191;;;
                                  -85861;1;0;false;false;;;;;;
                                  -85862;8;0;false;false;63;95;191;;;
                                  -85870;1;0;false;false;;;;;;
                                  -85871;10;0;false;false;63;95;191;;;
                                  -85881;1;0;false;false;;;;;;
                                  -85882;6;0;false;false;63;95;191;;;
                                  -85888;1;0;false;false;;;;;;
                                  -85889;3;0;false;false;63;95;191;;;
                                  -85892;1;0;false;false;;;;;;
                                  -85893;8;0;false;false;63;95;191;;;
                                  -85901;1;0;false;false;;;;;;
                                  -85902;4;0;false;false;63;95;191;;;
                                  -85906;1;0;false;false;;;;;;
                                  -85907;2;0;false;false;63;95;191;;;
                                  -85909;1;0;false;false;;;;;;
                                  -85910;4;0;false;false;63;95;191;;;
                                  -85914;3;0;false;false;;;;;;
                                  -85917;1;0;false;false;63;95;191;;;
                                  -85918;1;0;false;false;;;;;;
                                  -85919;4;0;false;false;63;95;191;;;
                                  -85923;1;0;false;false;;;;;;
                                  -85924;3;0;false;false;63;95;191;;;
                                  -85927;1;0;false;false;;;;;;
                                  -85928;5;0;false;false;63;95;191;;;
                                  -85933;1;0;false;false;;;;;;
                                  -85934;2;0;false;false;63;95;191;;;
                                  -85936;1;0;false;false;;;;;;
                                  -85937;5;0;false;false;63;95;191;;;
                                  -85942;1;0;false;false;;;;;;
                                  -85943;2;0;false;false;63;95;191;;;
                                  -85945;1;0;false;false;;;;;;
                                  -85946;3;0;false;false;63;95;191;;;
                                  -85949;1;0;false;false;;;;;;
                                  -85950;7;0;false;false;63;95;191;;;
                                  -85957;1;0;false;false;;;;;;
                                  -85958;5;0;false;false;63;95;191;;;
                                  -85963;3;0;false;false;;;;;;
                                  -85966;2;0;false;false;63;95;191;;;
                                  -85968;2;0;false;false;;;;;;
                                  -85970;4;1;false;false;127;0;85;;;
                                  -85974;1;0;false;false;;;;;;
                                  -85975;13;0;false;false;0;0;0;;;
                                  -85988;1;0;false;false;;;;;;
                                  -85989;1;0;false;false;0;0;0;;;
                                  -85990;3;0;false;false;;;;;;
                                  -85993;5;0;false;false;0;0;0;;;
                                  -85998;1;0;false;false;;;;;;
                                  -85999;5;0;false;false;0;0;0;;;
                                  -86004;1;0;false;false;;;;;;
                                  -86005;1;0;false;false;0;0;0;;;
                                  -86006;1;0;false;false;;;;;;
                                  -86007;3;1;false;false;127;0;85;;;
                                  -86010;1;0;false;false;;;;;;
                                  -86011;8;0;false;false;0;0;0;;;
                                  -86019;3;0;false;false;;;;;;
                                  -86022;10;0;false;false;0;0;0;;;
                                  -86032;1;0;false;false;;;;;;
                                  -86033;1;0;false;false;0;0;0;;;
                                  -86034;1;0;false;false;;;;;;
                                  -86035;2;0;false;false;42;0;255;;;
                                  -86037;1;0;false;false;0;0;0;;;
                                  -86038;3;0;false;false;;;;;;
                                  -86041;2;1;false;false;127;0;85;;;
                                  -86043;1;0;false;false;;;;;;
                                  -86044;12;0;false;false;0;0;0;;;
                                  -86056;1;0;false;false;;;;;;
                                  -86057;2;0;false;false;0;0;0;;;
                                  -86059;1;0;false;false;;;;;;
                                  -86060;12;0;false;false;0;0;0;;;
                                  -86072;1;0;false;false;;;;;;
                                  -86073;1;0;false;false;0;0;0;;;
                                  -86074;4;0;false;false;;;;;;
                                  -86078;11;0;false;false;0;0;0;;;
                                  -86089;1;0;false;false;;;;;;
                                  -86090;1;0;false;false;0;0;0;;;
                                  -86091;1;0;false;false;;;;;;
                                  -86092;12;0;false;false;0;0;0;;;
                                  -86104;4;0;false;false;;;;;;
                                  -86108;9;0;false;false;0;0;0;;;
                                  -86117;1;0;false;false;;;;;;
                                  -86118;1;0;false;false;0;0;0;;;
                                  -86119;1;0;false;false;;;;;;
                                  -86120;12;0;false;false;0;0;0;;;
                                  -86132;4;0;false;false;;;;;;
                                  -86136;20;0;false;false;0;0;0;;;
                                  -86156;3;0;false;false;;;;;;
                                  -86159;1;0;false;false;0;0;0;;;
                                  -86160;3;0;false;false;;;;;;
                                  -86163;4;1;false;false;127;0;85;;;
                                  -86167;3;0;false;false;;;;;;
                                  -86170;2;1;false;false;127;0;85;;;
                                  -86172;1;0;false;false;;;;;;
                                  -86173;12;0;false;false;0;0;0;;;
                                  -86185;1;0;false;false;;;;;;
                                  -86186;1;0;false;false;0;0;0;;;
                                  -86187;1;0;false;false;;;;;;
                                  -86188;2;0;false;false;0;0;0;;;
                                  -86190;1;0;false;false;;;;;;
                                  -86191;1;0;false;false;0;0;0;;;
                                  -86192;4;0;false;false;;;;;;
                                  -86196;3;1;false;false;127;0;85;;;
                                  -86199;1;0;false;false;;;;;;
                                  -86200;4;0;false;false;0;0;0;;;
                                  -86204;1;0;false;false;;;;;;
                                  -86205;1;0;false;false;0;0;0;;;
                                  -86206;1;0;false;false;;;;;;
                                  -86207;37;0;false;false;0;0;0;;;
                                  -86244;4;0;false;false;;;;;;
                                  -86248;3;1;false;false;127;0;85;;;
                                  -86251;1;0;false;false;;;;;;
                                  -86252;10;0;false;false;0;0;0;;;
                                  -86262;1;0;false;false;;;;;;
                                  -86263;1;0;false;false;0;0;0;;;
                                  -86264;1;0;false;false;;;;;;
                                  -86265;30;0;false;false;0;0;0;;;
                                  -86295;10;0;false;false;;;;;;
                                  -86305;2;1;false;false;127;0;85;;;
                                  -86307;1;0;false;false;;;;;;
                                  -86308;12;0;false;false;0;0;0;;;
                                  -86320;1;0;false;false;;;;;;
                                  -86321;2;0;false;false;0;0;0;;;
                                  -86323;1;0;false;false;;;;;;
                                  -86324;11;0;false;false;0;0;0;;;
                                  -86335;1;0;false;false;;;;;;
                                  -86336;1;0;false;false;0;0;0;;;
                                  -86337;5;0;false;false;;;;;;
                                  -86342;10;0;false;false;0;0;0;;;
                                  -86352;1;0;false;false;;;;;;
                                  -86353;1;0;false;false;0;0;0;;;
                                  -86354;1;0;false;false;;;;;;
                                  -86355;28;0;false;false;0;0;0;;;
                                  -86383;1;0;false;false;;;;;;
                                  -86384;1;0;false;false;0;0;0;;;
                                  -86385;1;0;false;false;;;;;;
                                  -86386;3;0;false;false;0;0;0;;;
                                  -86389;5;0;false;false;;;;;;
                                  -86394;11;0;false;false;0;0;0;;;
                                  -86405;1;0;false;false;;;;;;
                                  -86406;1;0;false;false;0;0;0;;;
                                  -86407;1;0;false;false;;;;;;
                                  -86408;10;0;false;false;0;0;0;;;
                                  -86418;1;0;false;false;;;;;;
                                  -86419;1;0;false;false;0;0;0;;;
                                  -86420;1;0;false;false;;;;;;
                                  -86421;20;0;false;false;0;0;0;;;
                                  -86441;1;0;false;false;;;;;;
                                  -86442;1;0;false;false;0;0;0;;;
                                  -86443;1;0;false;false;;;;;;
                                  -86444;12;0;false;false;0;0;0;;;
                                  -86456;5;0;false;false;;;;;;
                                  -86461;9;0;false;false;0;0;0;;;
                                  -86470;1;0;false;false;;;;;;
                                  -86471;1;0;false;false;0;0;0;;;
                                  -86472;1;0;false;false;;;;;;
                                  -86473;12;0;false;false;0;0;0;;;
                                  -86485;4;0;false;false;;;;;;
                                  -86489;1;0;false;false;0;0;0;;;
                                  -86490;4;0;false;false;;;;;;
                                  -86494;4;1;false;false;127;0;85;;;
                                  -86498;1;0;false;false;;;;;;
                                  -86499;1;0;false;false;0;0;0;;;
                                  -86500;5;0;false;false;;;;;;
                                  -86505;6;0;false;false;0;0;0;;;
                                  -86511;1;0;false;false;;;;;;
                                  -86512;8;0;false;false;0;0;0;;;
                                  -86520;1;0;false;false;;;;;;
                                  -86521;1;0;false;false;0;0;0;;;
                                  -86522;1;0;false;false;;;;;;
                                  -86523;22;0;false;false;0;0;0;;;
                                  -86545;5;0;false;false;;;;;;
                                  -86550;10;0;false;false;0;0;0;;;
                                  -86560;1;0;false;false;;;;;;
                                  -86561;6;0;false;false;0;0;0;;;
                                  -86567;1;0;false;false;;;;;;
                                  -86568;1;0;false;false;0;0;0;;;
                                  -86569;1;0;false;false;;;;;;
                                  -86570;32;0;false;false;0;0;0;;;
                                  -86602;1;0;false;false;;;;;;
                                  -86603;12;0;false;false;0;0;0;;;
                                  -86615;5;0;false;false;;;;;;
                                  -86620;3;1;false;false;127;0;85;;;
                                  -86623;1;0;false;false;;;;;;
                                  -86624;5;0;false;false;0;0;0;;;
                                  -86629;1;0;false;false;;;;;;
                                  -86630;1;0;false;false;0;0;0;;;
                                  -86631;1;0;false;false;;;;;;
                                  -86632;36;0;false;false;0;0;0;;;
                                  -86668;1;0;false;false;;;;;;
                                  -86669;1;0;false;false;0;0;0;;;
                                  -86670;1;0;false;false;;;;;;
                                  -86671;11;0;false;false;0;0;0;;;
                                  -86682;1;0;false;false;;;;;;
                                  -86683;19;0;false;false;0;0;0;;;
                                  -86702;5;0;false;false;;;;;;
                                  -86707;35;0;false;false;0;0;0;;;
                                  -86742;6;0;false;false;;;;;;
                                  -86748;11;0;false;false;0;0;0;;;
                                  -86759;1;0;false;false;;;;;;
                                  -86760;1;0;false;false;0;0;0;;;
                                  -86761;1;0;false;false;;;;;;
                                  -86762;5;0;false;false;0;0;0;;;
                                  -86767;1;0;false;false;;;;;;
                                  -86768;1;0;false;false;0;0;0;;;
                                  -86769;1;0;false;false;;;;;;
                                  -86770;11;0;false;false;0;0;0;;;
                                  -86781;5;0;false;false;;;;;;
                                  -86786;9;0;false;false;0;0;0;;;
                                  -86795;1;0;false;false;;;;;;
                                  -86796;1;0;false;false;0;0;0;;;
                                  -86797;1;0;false;false;;;;;;
                                  -86798;12;0;false;false;0;0;0;;;
                                  -86810;4;0;false;false;;;;;;
                                  -86814;1;0;false;false;0;0;0;;;
                                  -86815;4;0;false;false;;;;;;
                                  -86819;20;0;false;false;0;0;0;;;
                                  -86839;3;0;false;false;;;;;;
                                  -86842;1;0;false;false;0;0;0;;;
                                  -86843;2;0;false;false;;;;;;
                                  -86845;1;0;false;false;0;0;0;;;
                                  -86846;2;0;false;false;;;;;;
                                  -86848;3;0;false;false;63;95;191;;;
                                  -86851;3;0;false;false;;;;;;
                                  -86854;1;0;false;false;63;95;191;;;
                                  -86855;1;0;false;false;;;;;;
                                  -86856;8;0;false;false;63;95;191;;;
                                  -86864;1;0;false;false;;;;;;
                                  -86865;3;0;false;false;63;95;191;;;
                                  -86868;1;0;false;false;;;;;;
                                  -86869;9;0;false;false;63;95;191;;;
                                  -86878;1;0;false;false;;;;;;
                                  -86879;4;0;false;false;63;95;191;;;
                                  -86883;1;0;false;false;;;;;;
                                  -86884;3;0;false;false;63;95;191;;;
                                  -86887;1;0;false;false;;;;;;
                                  -86888;9;0;false;false;63;95;191;;;
                                  -86897;1;0;false;false;;;;;;
                                  -86898;2;0;false;false;63;95;191;;;
                                  -86900;1;0;false;false;;;;;;
                                  -86901;6;0;false;false;63;95;191;;;
                                  -86907;1;0;false;false;;;;;;
                                  -86908;3;0;false;false;63;95;191;;;
                                  -86911;1;0;false;false;;;;;;
                                  -86912;9;0;false;false;63;95;191;;;
                                  -86921;1;0;false;false;;;;;;
                                  -86922;2;0;false;false;63;95;191;;;
                                  -86924;1;0;false;false;;;;;;
                                  -86925;3;0;false;false;63;95;191;;;
                                  -86928;4;0;false;false;;;;;;
                                  -86932;1;0;false;false;63;95;191;;;
                                  -86933;1;0;false;false;;;;;;
                                  -86934;7;0;false;false;63;95;191;;;
                                  -86941;1;0;false;false;;;;;;
                                  -86942;5;0;false;false;63;95;191;;;
                                  -86947;1;0;false;false;;;;;;
                                  -86948;8;0;false;false;63;95;191;;;
                                  -86956;1;0;false;false;;;;;;
                                  -86957;2;0;false;false;63;95;191;;;
                                  -86959;1;0;false;false;;;;;;
                                  -86960;2;0;false;false;63;95;191;;;
                                  -86962;1;0;false;false;;;;;;
                                  -86963;9;0;false;false;63;95;191;;;
                                  -86972;1;0;false;false;;;;;;
                                  -86973;7;0;false;false;63;95;191;;;
                                  -86980;3;0;false;false;;;;;;
                                  -86983;1;0;false;false;63;95;191;;;
                                  -86984;1;0;false;false;;;;;;
                                  -86985;2;0;false;false;63;95;191;;;
                                  -86987;1;0;false;false;;;;;;
                                  -86988;1;0;false;false;63;95;191;;;
                                  -86989;1;0;false;false;;;;;;
                                  -86990;8;0;false;false;63;95;191;;;
                                  -86998;1;0;false;false;;;;;;
                                  -86999;6;0;false;false;63;95;191;;;
                                  -87005;1;0;false;false;;;;;;
                                  -87006;3;0;false;false;63;95;191;;;
                                  -87009;1;0;false;false;;;;;;
                                  -87010;5;0;false;false;63;95;191;;;
                                  -87015;1;0;false;false;;;;;;
                                  -87016;7;0;false;false;63;95;191;;;
                                  -87023;1;0;false;false;;;;;;
                                  -87024;2;0;false;false;63;95;191;;;
                                  -87026;1;0;false;false;;;;;;
                                  -87027;4;0;false;false;63;95;191;;;
                                  -87031;1;0;false;false;;;;;;
                                  -87032;3;0;false;false;63;95;191;;;
                                  -87035;1;0;false;false;;;;;;
                                  -87036;4;0;false;false;63;95;191;;;
                                  -87040;1;0;false;false;;;;;;
                                  -87041;5;0;false;false;63;95;191;;;
                                  -87046;1;0;false;false;;;;;;
                                  -87047;9;0;false;false;63;95;191;;;
                                  -87056;4;0;false;false;;;;;;
                                  -87060;1;0;false;false;63;95;191;;;
                                  -87061;1;0;false;false;;;;;;
                                  -87062;4;0;false;false;63;95;191;;;
                                  -87066;1;0;false;false;;;;;;
                                  -87067;2;0;false;false;63;95;191;;;
                                  -87069;1;0;false;false;;;;;;
                                  -87070;3;0;false;false;63;95;191;;;
                                  -87073;1;0;false;false;;;;;;
                                  -87074;6;0;false;false;63;95;191;;;
                                  -87080;1;0;false;false;;;;;;
                                  -87081;2;0;false;false;63;95;191;;;
                                  -87083;1;0;false;false;;;;;;
                                  -87084;4;0;false;false;63;95;191;;;
                                  -87088;1;0;false;false;;;;;;
                                  -87089;9;0;false;false;63;95;191;;;
                                  -87098;3;0;false;false;;;;;;
                                  -87101;1;0;false;false;63;95;191;;;
                                  -87102;1;0;false;false;;;;;;
                                  -87103;3;0;false;false;127;127;159;;;
                                  -87106;3;0;false;false;;;;;;
                                  -87109;1;0;false;false;63;95;191;;;
                                  -87110;3;0;false;false;;;;;;
                                  -87113;1;0;false;false;63;95;191;;;
                                  -87114;1;0;false;false;;;;;;
                                  -87115;7;1;false;false;127;159;191;;;
                                  -87122;3;0;false;false;63;95;191;;;
                                  -87125;1;0;false;false;;;;;;
                                  -87126;3;0;false;false;63;95;191;;;
                                  -87129;1;0;false;false;;;;;;
                                  -87130;9;0;false;false;63;95;191;;;
                                  -87139;1;0;false;false;;;;;;
                                  -87140;5;0;false;false;63;95;191;;;
                                  -87145;1;0;false;false;;;;;;
                                  -87146;2;0;false;false;63;95;191;;;
                                  -87148;1;0;false;false;;;;;;
                                  -87149;3;0;false;false;63;95;191;;;
                                  -87152;1;0;false;false;;;;;;
                                  -87153;4;0;false;false;63;95;191;;;
                                  -87157;3;0;false;false;;;;;;
                                  -87160;2;0;false;false;63;95;191;;;
                                  -87162;2;0;false;false;;;;;;
                                  -87164;4;1;false;false;127;0;85;;;
                                  -87168;1;0;false;false;;;;;;
                                  -87169;10;0;false;false;0;0;0;;;
                                  -87179;4;1;false;false;127;0;85;;;
                                  -87183;1;0;false;false;;;;;;
                                  -87184;4;0;false;false;0;0;0;;;
                                  -87188;1;0;false;false;;;;;;
                                  -87189;1;0;false;false;0;0;0;;;
                                  -87190;3;0;false;false;;;;;;
                                  -87193;5;0;false;false;0;0;0;;;
                                  -87198;1;0;false;false;;;;;;
                                  -87199;6;0;false;false;0;0;0;;;
                                  -87205;6;0;false;false;;;;;;
                                  -87211;2;1;false;false;127;0;85;;;
                                  -87213;1;0;false;false;;;;;;
                                  -87214;10;0;false;false;0;0;0;;;
                                  -87224;1;0;false;false;;;;;;
                                  -87225;1;0;false;false;0;0;0;;;
                                  -87226;1;0;false;false;;;;;;
                                  -87227;1;0;false;false;0;0;0;;;
                                  -87228;1;0;false;false;;;;;;
                                  -87229;2;0;false;false;0;0;0;;;
                                  -87231;5;0;false;false;;;;;;
                                  -87236;22;0;false;false;0;0;0;;;
                                  -87258;1;0;false;false;;;;;;
                                  -87259;1;0;false;false;0;0;0;;;
                                  -87260;1;0;false;false;;;;;;
                                  -87261;12;0;false;false;0;0;0;;;
                                  -87273;1;0;false;false;;;;;;
                                  -87274;1;0;false;false;0;0;0;;;
                                  -87275;1;0;false;false;;;;;;
                                  -87276;12;0;false;false;0;0;0;;;
                                  -87288;1;0;false;false;;;;;;
                                  -87289;2;0;false;false;0;0;0;;;
                                  -87291;1;0;false;false;;;;;;
                                  -87292;10;0;false;false;0;0;0;;;
                                  -87302;1;0;false;false;;;;;;
                                  -87303;1;0;false;false;0;0;0;;;
                                  -87304;4;0;false;false;;;;;;
                                  -87308;6;1;false;false;127;0;85;;;
                                  -87314;1;0;false;false;0;0;0;;;
                                  -87315;3;0;false;false;;;;;;
                                  -87318;1;0;false;false;0;0;0;;;
                                  -87319;4;0;false;false;;;;;;
                                  -87323;5;0;false;false;0;0;0;;;
                                  -87328;1;0;false;false;;;;;;
                                  -87329;1;0;false;false;0;0;0;;;
                                  -87330;1;0;false;false;;;;;;
                                  -87331;3;1;false;false;127;0;85;;;
                                  -87334;1;0;false;false;;;;;;
                                  -87335;8;0;false;false;0;0;0;;;
                                  -87343;3;0;false;false;;;;;;
                                  -87346;11;0;false;false;0;0;0;;;
                                  -87357;1;0;false;false;;;;;;
                                  -87358;1;0;false;false;0;0;0;;;
                                  -87359;1;0;false;false;;;;;;
                                  -87360;12;0;false;false;0;0;0;;;
                                  -87372;3;0;false;false;;;;;;
                                  -87375;9;0;false;false;0;0;0;;;
                                  -87384;1;0;false;false;;;;;;
                                  -87385;1;0;false;false;0;0;0;;;
                                  -87386;1;0;false;false;;;;;;
                                  -87387;12;0;false;false;0;0;0;;;
                                  -87399;3;0;false;false;;;;;;
                                  -87402;55;0;false;false;63;127;95;;;
                                  -87457;1;0;false;false;;;;;;
                                  -87458;69;0;false;false;63;127;95;;;
                                  -87527;1;0;false;false;;;;;;
                                  -87528;40;0;false;false;63;127;95;;;
                                  -87568;1;0;false;false;;;;;;
                                  -87569;2;1;false;false;127;0;85;;;
                                  -87571;1;0;false;false;;;;;;
                                  -87572;4;0;false;false;0;0;0;;;
                                  -87576;1;0;false;false;;;;;;
                                  -87577;2;0;false;false;0;0;0;;;
                                  -87579;1;0;false;false;;;;;;
                                  -87580;6;0;false;false;0;0;0;;;
                                  -87586;1;0;false;false;;;;;;
                                  -87587;2;0;false;false;0;0;0;;;
                                  -87589;1;0;false;false;;;;;;
                                  -87590;3;0;false;false;0;0;0;;;
                                  -87593;1;0;false;false;;;;;;
                                  -87594;2;0;false;false;0;0;0;;;
                                  -87596;1;0;false;false;;;;;;
                                  -87597;7;0;false;false;0;0;0;;;
                                  -87604;1;0;false;false;;;;;;
                                  -87605;1;0;false;false;0;0;0;;;
                                  -87606;4;0;false;false;;;;;;
                                  -87610;2;1;false;false;127;0;85;;;
                                  -87612;1;0;false;false;;;;;;
                                  -87613;17;0;false;false;0;0;0;;;
                                  -87630;1;0;false;false;;;;;;
                                  -87631;1;0;false;false;0;0;0;;;
                                  -87632;5;0;false;false;;;;;;
                                  -87637;10;0;false;false;0;0;0;;;
                                  -87647;1;0;false;false;;;;;;
                                  -87648;1;0;false;false;0;0;0;;;
                                  -87649;1;0;false;false;;;;;;
                                  -87650;19;0;false;false;0;0;0;;;
                                  -87669;4;0;false;false;;;;;;
                                  -87673;1;0;false;false;0;0;0;;;
                                  -87674;3;0;false;false;;;;;;
                                  -87677;1;0;false;false;0;0;0;;;
                                  -87678;3;0;false;false;;;;;;
                                  -87681;69;0;false;false;63;127;95;;;
                                  -87750;1;0;false;false;;;;;;
                                  -87751;66;0;false;false;63;127;95;;;
                                  -87817;1;0;false;false;;;;;;
                                  -87818;4;1;false;false;127;0;85;;;
                                  -87822;3;0;false;false;;;;;;
                                  -87825;2;1;false;false;127;0;85;;;
                                  -87827;1;0;false;false;;;;;;
                                  -87828;12;0;false;false;0;0;0;;;
                                  -87840;1;0;false;false;;;;;;
                                  -87841;2;0;false;false;0;0;0;;;
                                  -87843;1;0;false;false;;;;;;
                                  -87844;11;0;false;false;0;0;0;;;
                                  -87855;1;0;false;false;;;;;;
                                  -87856;2;0;false;false;0;0;0;;;
                                  -87858;1;0;false;false;;;;;;
                                  -87859;9;0;false;false;0;0;0;;;
                                  -87868;1;0;false;false;;;;;;
                                  -87869;2;0;false;false;0;0;0;;;
                                  -87871;1;0;false;false;;;;;;
                                  -87872;3;0;false;false;0;0;0;;;
                                  -87875;1;0;false;false;;;;;;
                                  -87876;2;0;false;false;0;0;0;;;
                                  -87878;1;0;false;false;;;;;;
                                  -87879;4;0;false;false;0;0;0;;;
                                  -87883;1;0;false;false;;;;;;
                                  -87884;1;0;false;false;0;0;0;;;
                                  -87885;4;0;false;false;;;;;;
                                  -87889;3;1;false;false;127;0;85;;;
                                  -87892;1;0;false;false;;;;;;
                                  -87893;9;0;false;false;0;0;0;;;
                                  -87902;1;0;false;false;;;;;;
                                  -87903;1;0;false;false;0;0;0;;;
                                  -87904;1;0;false;false;;;;;;
                                  -87905;35;0;false;false;0;0;0;;;
                                  -87940;4;0;false;false;;;;;;
                                  -87944;3;1;false;false;127;0;85;;;
                                  -87947;1;0;false;false;;;;;;
                                  -87948;10;0;false;false;0;0;0;;;
                                  -87958;1;0;false;false;;;;;;
                                  -87959;1;0;false;false;0;0;0;;;
                                  -87960;1;0;false;false;;;;;;
                                  -87961;35;0;false;false;0;0;0;;;
                                  -87996;4;0;false;false;;;;;;
                                  -88000;6;0;false;false;0;0;0;;;
                                  -88006;1;0;false;false;;;;;;
                                  -88007;4;0;false;false;0;0;0;;;
                                  -88011;1;0;false;false;;;;;;
                                  -88012;1;0;false;false;0;0;0;;;
                                  -88013;1;0;false;false;;;;;;
                                  -88014;27;0;false;false;0;0;0;;;
                                  -88041;4;0;false;false;;;;;;
                                  -88045;66;0;false;false;63;127;95;;;
                                  -88111;2;0;false;false;;;;;;
                                  -88113;20;0;false;false;63;127;95;;;
                                  -88133;2;0;false;false;;;;;;
                                  -88135;2;1;false;false;127;0;85;;;
                                  -88137;1;0;false;false;;;;;;
                                  -88138;10;0;false;false;0;0;0;;;
                                  -88148;1;0;false;false;;;;;;
                                  -88149;1;0;false;false;0;0;0;;;
                                  -88150;1;0;false;false;;;;;;
                                  -88151;10;0;false;false;0;0;0;;;
                                  -88161;1;0;false;false;;;;;;
                                  -88162;1;0;false;false;0;0;0;;;
                                  -88163;1;0;false;false;;;;;;
                                  -88164;14;0;false;false;0;0;0;;;
                                  -88178;1;0;false;false;;;;;;
                                  -88179;1;0;false;false;0;0;0;;;
                                  -88180;5;0;false;false;;;;;;
                                  -88185;12;0;false;false;0;0;0;;;
                                  -88197;4;0;false;false;;;;;;
                                  -88201;1;0;false;false;0;0;0;;;
                                  -88202;4;0;false;false;;;;;;
                                  -88206;10;0;false;false;0;0;0;;;
                                  -88216;1;0;false;false;;;;;;
                                  -88217;1;0;false;false;0;0;0;;;
                                  -88218;1;0;false;false;;;;;;
                                  -88219;3;1;false;false;127;0;85;;;
                                  -88222;1;0;false;false;;;;;;
                                  -88223;7;0;false;false;0;0;0;;;
                                  -88230;3;1;false;false;127;0;85;;;
                                  -88233;1;0;false;false;;;;;;
                                  -88234;4;1;false;false;127;0;85;;;
                                  -88238;2;0;false;false;0;0;0;;;
                                  -88240;1;0;false;false;;;;;;
                                  -88241;7;0;false;false;0;0;0;;;
                                  -88248;3;0;false;false;;;;;;
                                  -88251;1;0;false;false;0;0;0;;;
                                  -88252;3;0;false;false;;;;;;
                                  -88255;4;1;false;false;127;0;85;;;
                                  -88259;1;0;false;false;;;;;;
                                  -88260;1;0;false;false;0;0;0;;;
                                  -88261;4;0;false;false;;;;;;
                                  -88265;10;0;false;false;0;0;0;;;
                                  -88275;1;0;false;false;;;;;;
                                  -88276;1;0;false;false;0;0;0;;;
                                  -88277;1;0;false;false;;;;;;
                                  -88278;3;1;false;false;127;0;85;;;
                                  -88281;1;0;false;false;;;;;;
                                  -88282;7;0;false;false;0;0;0;;;
                                  -88289;3;1;false;false;127;0;85;;;
                                  -88292;1;0;false;false;;;;;;
                                  -88293;4;1;false;false;127;0;85;;;
                                  -88297;2;0;false;false;0;0;0;;;
                                  -88299;1;0;false;false;;;;;;
                                  -88300;7;0;false;false;0;0;0;;;
                                  -88307;3;0;false;false;;;;;;
                                  -88310;1;0;false;false;0;0;0;;;
                                  -88311;3;0;false;false;;;;;;
                                  -88314;2;1;false;false;127;0;85;;;
                                  -88316;1;0;false;false;;;;;;
                                  -88317;11;0;false;false;0;0;0;;;
                                  -88328;1;0;false;false;;;;;;
                                  -88329;2;0;false;false;0;0;0;;;
                                  -88331;1;0;false;false;;;;;;
                                  -88332;4;1;false;false;127;0;85;;;
                                  -88336;1;0;false;false;0;0;0;;;
                                  -88337;1;0;false;false;;;;;;
                                  -88338;1;0;false;false;0;0;0;;;
                                  -88339;4;0;false;false;;;;;;
                                  -88343;20;0;false;false;0;0;0;;;
                                  -88363;3;0;false;false;;;;;;
                                  -88366;1;0;false;false;0;0;0;;;
                                  -88367;2;0;false;false;;;;;;
                                  -88369;1;0;false;false;0;0;0;;;
                                  -88370;2;0;false;false;;;;;;
                                  -88372;3;0;false;false;63;95;191;;;
                                  -88375;3;0;false;false;;;;;;
                                  -88378;1;0;false;false;63;95;191;;;
                                  -88379;1;0;false;false;;;;;;
                                  -88380;5;0;false;false;63;95;191;;;
                                  -88385;1;0;false;false;;;;;;
                                  -88386;3;0;false;false;63;95;191;;;
                                  -88389;1;0;false;false;;;;;;
                                  -88390;5;0;false;false;63;95;191;;;
                                  -88395;1;0;false;false;;;;;;
                                  -88396;5;0;false;false;63;95;191;;;
                                  -88401;1;0;false;false;;;;;;
                                  -88402;3;0;false;false;63;95;191;;;
                                  -88405;1;0;false;false;;;;;;
                                  -88406;4;0;false;false;63;95;191;;;
                                  -88410;1;0;false;false;;;;;;
                                  -88411;9;0;false;false;63;95;191;;;
                                  -88420;1;0;false;false;;;;;;
                                  -88421;2;0;false;false;63;95;191;;;
                                  -88423;1;0;false;false;;;;;;
                                  -88424;3;0;false;false;63;95;191;;;
                                  -88427;1;0;false;false;;;;;;
                                  -88428;6;0;false;false;63;95;191;;;
                                  -88434;1;0;false;false;;;;;;
                                  -88435;8;0;false;false;63;95;191;;;
                                  -88443;3;0;false;false;;;;;;
                                  -88446;2;0;false;false;63;95;191;;;
                                  -88448;2;0;false;false;;;;;;
                                  -88450;4;1;false;false;127;0;85;;;
                                  -88454;1;0;false;false;;;;;;
                                  -88455;14;0;false;false;0;0;0;;;
                                  -88469;1;0;false;false;;;;;;
                                  -88470;1;0;false;false;0;0;0;;;
                                  -88471;3;0;false;false;;;;;;
                                  -88474;63;0;false;false;63;127;95;;;
                                  -88537;1;0;false;false;;;;;;
                                  -88538;27;0;false;false;63;127;95;;;
                                  -88565;1;0;false;false;;;;;;
                                  -88566;2;1;false;false;127;0;85;;;
                                  -88568;1;0;false;false;;;;;;
                                  -88569;16;0;false;false;0;0;0;;;
                                  -88585;1;0;false;false;;;;;;
                                  -88586;1;0;false;false;0;0;0;;;
                                  -88587;4;0;false;false;;;;;;
                                  -88591;12;0;false;false;0;0;0;;;
                                  -88603;3;0;false;false;;;;;;
                                  -88606;1;0;false;false;0;0;0;;;
                                  -88607;3;0;false;false;;;;;;
                                  -88610;4;1;false;false;127;0;85;;;
                                  -88614;1;0;false;false;;;;;;
                                  -88615;1;0;false;false;0;0;0;;;
                                  -88616;4;0;false;false;;;;;;
                                  -88620;3;1;false;false;127;0;85;;;
                                  -88623;1;0;false;false;;;;;;
                                  -88624;6;0;false;false;0;0;0;;;
                                  -88630;1;0;false;false;;;;;;
                                  -88631;1;0;false;false;0;0;0;;;
                                  -88632;1;0;false;false;;;;;;
                                  -88633;23;0;false;false;0;0;0;;;
                                  -88656;6;0;false;false;;;;;;
                                  -88662;2;1;false;false;127;0;85;;;
                                  -88664;1;0;false;false;;;;;;
                                  -88665;12;0;false;false;0;0;0;;;
                                  -88677;1;0;false;false;;;;;;
                                  -88678;1;0;false;false;0;0;0;;;
                                  -88679;1;0;false;false;;;;;;
                                  -88680;7;0;false;false;0;0;0;;;
                                  -88687;1;0;false;false;;;;;;
                                  -88688;1;0;false;false;0;0;0;;;
                                  -88689;5;0;false;false;;;;;;
                                  -88694;11;0;false;false;0;0;0;;;
                                  -88705;1;0;false;false;;;;;;
                                  -88706;1;0;false;false;0;0;0;;;
                                  -88707;1;0;false;false;;;;;;
                                  -88708;7;0;false;false;0;0;0;;;
                                  -88715;5;0;false;false;;;;;;
                                  -88720;12;0;false;false;0;0;0;;;
                                  -88732;4;0;false;false;;;;;;
                                  -88736;1;0;false;false;0;0;0;;;
                                  -88737;3;0;false;false;;;;;;
                                  -88740;1;0;false;false;0;0;0;;;
                                  -88741;2;0;false;false;;;;;;
                                  -88743;1;0;false;false;0;0;0;;;
                                  -88744;2;0;false;false;;;;;;
                                  -88746;3;0;false;false;63;95;191;;;
                                  -88749;3;0;false;false;;;;;;
                                  -88752;1;0;false;false;63;95;191;;;
                                  -88753;1;0;false;false;;;;;;
                                  -88754;5;0;false;false;63;95;191;;;
                                  -88759;1;0;false;false;;;;;;
                                  -88760;3;0;false;false;63;95;191;;;
                                  -88763;1;0;false;false;;;;;;
                                  -88764;5;0;false;false;63;95;191;;;
                                  -88769;1;0;false;false;;;;;;
                                  -88770;2;0;false;false;63;95;191;;;
                                  -88772;1;0;false;false;;;;;;
                                  -88773;5;0;false;false;63;95;191;;;
                                  -88778;1;0;false;false;;;;;;
                                  -88779;2;0;false;false;63;95;191;;;
                                  -88781;1;0;false;false;;;;;;
                                  -88782;3;0;false;false;63;95;191;;;
                                  -88785;1;0;false;false;;;;;;
                                  -88786;5;0;false;false;63;95;191;;;
                                  -88791;1;0;false;false;;;;;;
                                  -88792;9;0;false;false;63;95;191;;;
                                  -88801;1;0;false;false;;;;;;
                                  -88802;2;0;false;false;63;95;191;;;
                                  -88804;1;0;false;false;;;;;;
                                  -88805;3;0;false;false;63;95;191;;;
                                  -88808;1;0;false;false;;;;;;
                                  -88809;6;0;false;false;63;95;191;;;
                                  -88815;1;0;false;false;;;;;;
                                  -88816;8;0;false;false;63;95;191;;;
                                  -88824;3;0;false;false;;;;;;
                                  -88827;2;0;false;false;63;95;191;;;
                                  -88829;2;0;false;false;;;;;;
                                  -88831;4;1;false;false;127;0;85;;;
                                  -88835;1;0;false;false;;;;;;
                                  -88836;16;0;false;false;0;0;0;;;
                                  -88852;1;0;false;false;;;;;;
                                  -88853;1;0;false;false;0;0;0;;;
                                  -88854;3;0;false;false;;;;;;
                                  -88857;2;1;false;false;127;0;85;;;
                                  -88859;1;0;false;false;;;;;;
                                  -88860;12;0;false;false;0;0;0;;;
                                  -88872;1;0;false;false;;;;;;
                                  -88873;1;0;false;false;0;0;0;;;
                                  -88874;1;0;false;false;;;;;;
                                  -88875;2;0;false;false;0;0;0;;;
                                  -88877;1;0;false;false;;;;;;
                                  -88878;1;0;false;false;0;0;0;;;
                                  -88879;4;0;false;false;;;;;;
                                  -88883;11;0;false;false;0;0;0;;;
                                  -88894;1;0;false;false;;;;;;
                                  -88895;1;0;false;false;0;0;0;;;
                                  -88896;1;0;false;false;;;;;;
                                  -88897;2;0;false;false;0;0;0;;;
                                  -88899;4;0;false;false;;;;;;
                                  -88903;12;0;false;false;0;0;0;;;
                                  -88915;3;0;false;false;;;;;;
                                  -88918;1;0;false;false;0;0;0;;;
                                  -88919;2;0;false;false;;;;;;
                                  -88921;1;0;false;false;0;0;0;;;
                                  -88922;2;0;false;false;;;;;;
                                  -88924;3;0;false;false;63;95;191;;;
                                  -88927;3;0;false;false;;;;;;
                                  -88930;1;0;false;false;63;95;191;;;
                                  -88931;1;0;false;false;;;;;;
                                  -88932;5;0;false;false;63;95;191;;;
                                  -88937;1;0;false;false;;;;;;
                                  -88938;3;0;false;false;63;95;191;;;
                                  -88941;1;0;false;false;;;;;;
                                  -88942;5;0;false;false;63;95;191;;;
                                  -88947;1;0;false;false;;;;;;
                                  -88948;2;0;false;false;63;95;191;;;
                                  -88950;1;0;false;false;;;;;;
                                  -88951;3;0;false;false;63;95;191;;;
                                  -88954;1;0;false;false;;;;;;
                                  -88955;5;0;false;false;63;95;191;;;
                                  -88960;1;0;false;false;;;;;;
                                  -88961;2;0;false;false;63;95;191;;;
                                  -88963;1;0;false;false;;;;;;
                                  -88964;3;0;false;false;63;95;191;;;
                                  -88967;1;0;false;false;;;;;;
                                  -88968;9;0;false;false;63;95;191;;;
                                  -88977;1;0;false;false;;;;;;
                                  -88978;2;0;false;false;63;95;191;;;
                                  -88980;1;0;false;false;;;;;;
                                  -88981;1;0;false;false;63;95;191;;;
                                  -88982;1;0;false;false;;;;;;
                                  -88983;9;0;false;false;63;95;191;;;
                                  -88992;1;0;false;false;;;;;;
                                  -88993;7;0;false;false;63;95;191;;;
                                  -89000;3;0;false;false;;;;;;
                                  -89003;1;0;false;false;63;95;191;;;
                                  -89004;1;0;false;false;;;;;;
                                  -89005;10;0;false;false;63;95;191;;;
                                  -89015;1;0;false;false;;;;;;
                                  -89016;2;0;false;false;63;95;191;;;
                                  -89018;1;0;false;false;;;;;;
                                  -89019;2;0;false;false;63;95;191;;;
                                  -89021;1;0;false;false;;;;;;
                                  -89022;9;0;false;false;63;95;191;;;
                                  -89031;1;0;false;false;;;;;;
                                  -89032;6;0;false;false;63;95;191;;;
                                  -89038;1;0;false;false;;;;;;
                                  -89039;4;0;false;false;63;95;191;;;
                                  -89043;1;0;false;false;;;;;;
                                  -89044;3;0;false;false;63;95;191;;;
                                  -89047;1;0;false;false;;;;;;
                                  -89048;6;0;false;false;63;95;191;;;
                                  -89054;1;0;false;false;;;;;;
                                  -89055;9;0;false;false;63;95;191;;;
                                  -89064;1;0;false;false;;;;;;
                                  -89065;2;0;false;false;63;95;191;;;
                                  -89067;1;0;false;false;;;;;;
                                  -89068;3;0;false;false;63;95;191;;;
                                  -89071;4;0;false;false;;;;;;
                                  -89075;1;0;false;false;63;95;191;;;
                                  -89076;1;0;false;false;;;;;;
                                  -89077;6;0;false;false;63;95;191;;;
                                  -89083;1;0;false;false;;;;;;
                                  -89084;9;0;false;false;63;95;191;;;
                                  -89093;1;0;false;false;;;;;;
                                  -89094;6;0;false;false;63;95;191;;;
                                  -89100;3;0;false;false;;;;;;
                                  -89103;1;0;false;false;63;95;191;;;
                                  -89104;1;0;false;false;;;;;;
                                  -89105;3;0;false;false;127;127;159;;;
                                  -89108;3;0;false;false;;;;;;
                                  -89111;1;0;false;false;63;95;191;;;
                                  -89112;3;0;false;false;;;;;;
                                  -89115;1;0;false;false;63;95;191;;;
                                  -89116;1;0;false;false;;;;;;
                                  -89117;5;1;false;false;127;159;191;;;
                                  -89122;26;0;false;false;63;95;191;;;
                                  -89148;3;0;false;false;;;;;;
                                  -89151;2;0;false;false;63;95;191;;;
                                  -89153;2;0;false;false;;;;;;
                                  -89155;4;1;false;false;127;0;85;;;
                                  -89159;1;0;false;false;;;;;;
                                  -89160;18;0;false;false;0;0;0;;;
                                  -89178;1;0;false;false;;;;;;
                                  -89179;1;0;false;false;0;0;0;;;
                                  -89180;3;0;false;false;;;;;;
                                  -89183;9;0;false;false;0;0;0;;;
                                  -89192;1;0;false;false;;;;;;
                                  -89193;1;0;false;false;0;0;0;;;
                                  -89194;1;0;false;false;;;;;;
                                  -89195;5;1;false;false;127;0;85;;;
                                  -89200;1;0;false;false;0;0;0;;;
                                  -89201;3;0;false;false;;;;;;
                                  -89204;2;1;false;false;127;0;85;;;
                                  -89206;1;0;false;false;;;;;;
                                  -89207;12;0;false;false;0;0;0;;;
                                  -89219;1;0;false;false;;;;;;
                                  -89220;1;0;false;false;0;0;0;;;
                                  -89221;1;0;false;false;;;;;;
                                  -89222;11;0;false;false;0;0;0;;;
                                  -89233;1;0;false;false;;;;;;
                                  -89234;1;0;false;false;0;0;0;;;
                                  -89235;1;0;false;false;;;;;;
                                  -89236;2;0;false;false;0;0;0;;;
                                  -89238;1;0;false;false;;;;;;
                                  -89239;1;0;false;false;0;0;0;;;
                                  -89240;4;0;false;false;;;;;;
                                  -89244;3;1;false;false;127;0;85;;;
                                  -89247;1;0;false;false;;;;;;
                                  -89248;10;0;false;false;0;0;0;;;
                                  -89258;8;0;false;false;;;;;;
                                  -89266;11;0;false;false;0;0;0;;;
                                  -89277;1;0;false;false;;;;;;
                                  -89278;1;0;false;false;0;0;0;;;
                                  -89279;1;0;false;false;;;;;;
                                  -89280;12;0;false;false;0;0;0;;;
                                  -89292;4;0;false;false;;;;;;
                                  -89296;9;0;false;false;0;0;0;;;
                                  -89305;1;0;false;false;;;;;;
                                  -89306;1;0;false;false;0;0;0;;;
                                  -89307;1;0;false;false;;;;;;
                                  -89308;15;0;false;false;0;0;0;;;
                                  -89323;4;0;false;false;;;;;;
                                  -89327;21;0;false;false;0;0;0;;;
                                  -89348;3;0;false;false;;;;;;
                                  -89351;1;0;false;false;0;0;0;;;
                                  -89352;3;0;false;false;;;;;;
                                  -89355;4;1;false;false;127;0;85;;;
                                  -89359;1;0;false;false;;;;;;
                                  -89360;1;0;false;false;0;0;0;;;
                                  -89361;4;0;false;false;;;;;;
                                  -89365;28;0;false;false;0;0;0;;;
                                  -89393;3;0;false;false;;;;;;
                                  -89396;1;0;false;false;0;0;0;;;
                                  -89397;2;0;false;false;;;;;;
                                  -89399;1;0;false;false;0;0;0;;;
                                  -89400;2;0;false;false;;;;;;
                                  -89402;3;0;false;false;63;95;191;;;
                                  -89405;3;0;false;false;;;;;;
                                  -89408;1;0;false;false;63;95;191;;;
                                  -89409;1;0;false;false;;;;;;
                                  -89410;5;0;false;false;63;95;191;;;
                                  -89415;1;0;false;false;;;;;;
                                  -89416;3;0;false;false;63;95;191;;;
                                  -89419;1;0;false;false;;;;;;
                                  -89420;5;0;false;false;63;95;191;;;
                                  -89425;1;0;false;false;;;;;;
                                  -89426;2;0;false;false;63;95;191;;;
                                  -89428;1;0;false;false;;;;;;
                                  -89429;3;0;false;false;63;95;191;;;
                                  -89432;1;0;false;false;;;;;;
                                  -89433;3;0;false;false;63;95;191;;;
                                  -89436;1;0;false;false;;;;;;
                                  -89437;2;0;false;false;63;95;191;;;
                                  -89439;1;0;false;false;;;;;;
                                  -89440;3;0;false;false;63;95;191;;;
                                  -89443;1;0;false;false;;;;;;
                                  -89444;9;0;false;false;63;95;191;;;
                                  -89453;1;0;false;false;;;;;;
                                  -89454;2;0;false;false;63;95;191;;;
                                  -89456;1;0;false;false;;;;;;
                                  -89457;1;0;false;false;63;95;191;;;
                                  -89458;1;0;false;false;;;;;;
                                  -89459;9;0;false;false;63;95;191;;;
                                  -89468;1;0;false;false;;;;;;
                                  -89469;7;0;false;false;63;95;191;;;
                                  -89476;3;0;false;false;;;;;;
                                  -89479;1;0;false;false;63;95;191;;;
                                  -89480;1;0;false;false;;;;;;
                                  -89481;10;0;false;false;63;95;191;;;
                                  -89491;1;0;false;false;;;;;;
                                  -89492;2;0;false;false;63;95;191;;;
                                  -89494;1;0;false;false;;;;;;
                                  -89495;2;0;false;false;63;95;191;;;
                                  -89497;1;0;false;false;;;;;;
                                  -89498;9;0;false;false;63;95;191;;;
                                  -89507;1;0;false;false;;;;;;
                                  -89508;6;0;false;false;63;95;191;;;
                                  -89514;1;0;false;false;;;;;;
                                  -89515;4;0;false;false;63;95;191;;;
                                  -89519;1;0;false;false;;;;;;
                                  -89520;3;0;false;false;63;95;191;;;
                                  -89523;1;0;false;false;;;;;;
                                  -89524;6;0;false;false;63;95;191;;;
                                  -89530;1;0;false;false;;;;;;
                                  -89531;9;0;false;false;63;95;191;;;
                                  -89540;1;0;false;false;;;;;;
                                  -89541;2;0;false;false;63;95;191;;;
                                  -89543;1;0;false;false;;;;;;
                                  -89544;3;0;false;false;63;95;191;;;
                                  -89547;4;0;false;false;;;;;;
                                  -89551;1;0;false;false;63;95;191;;;
                                  -89552;1;0;false;false;;;;;;
                                  -89553;6;0;false;false;63;95;191;;;
                                  -89559;1;0;false;false;;;;;;
                                  -89560;9;0;false;false;63;95;191;;;
                                  -89569;1;0;false;false;;;;;;
                                  -89570;6;0;false;false;63;95;191;;;
                                  -89576;3;0;false;false;;;;;;
                                  -89579;1;0;false;false;63;95;191;;;
                                  -89580;1;0;false;false;;;;;;
                                  -89581;3;0;false;false;127;127;159;;;
                                  -89584;3;0;false;false;;;;;;
                                  -89587;1;0;false;false;63;95;191;;;
                                  -89588;3;0;false;false;;;;;;
                                  -89591;1;0;false;false;63;95;191;;;
                                  -89592;1;0;false;false;;;;;;
                                  -89593;5;1;false;false;127;159;191;;;
                                  -89598;22;0;false;false;63;95;191;;;
                                  -89620;3;0;false;false;;;;;;
                                  -89623;2;0;false;false;63;95;191;;;
                                  -89625;2;0;false;false;;;;;;
                                  -89627;4;1;false;false;127;0;85;;;
                                  -89631;1;0;false;false;;;;;;
                                  -89632;14;0;false;false;0;0;0;;;
                                  -89646;1;0;false;false;;;;;;
                                  -89647;1;0;false;false;0;0;0;;;
                                  -89648;3;0;false;false;;;;;;
                                  -89651;9;0;false;false;0;0;0;;;
                                  -89660;1;0;false;false;;;;;;
                                  -89661;1;0;false;false;0;0;0;;;
                                  -89662;1;0;false;false;;;;;;
                                  -89663;4;1;false;false;127;0;85;;;
                                  -89667;1;0;false;false;0;0;0;;;
                                  -89668;3;0;false;false;;;;;;
                                  -89671;2;1;false;false;127;0;85;;;
                                  -89673;1;0;false;false;;;;;;
                                  -89674;12;0;false;false;0;0;0;;;
                                  -89686;1;0;false;false;;;;;;
                                  -89687;1;0;false;false;0;0;0;;;
                                  -89688;1;0;false;false;;;;;;
                                  -89689;11;0;false;false;0;0;0;;;
                                  -89700;1;0;false;false;;;;;;
                                  -89701;1;0;false;false;0;0;0;;;
                                  -89702;1;0;false;false;;;;;;
                                  -89703;2;0;false;false;0;0;0;;;
                                  -89705;1;0;false;false;;;;;;
                                  -89706;1;0;false;false;0;0;0;;;
                                  -89707;4;0;false;false;;;;;;
                                  -89711;3;1;false;false;127;0;85;;;
                                  -89714;1;0;false;false;;;;;;
                                  -89715;10;0;false;false;0;0;0;;;
                                  -89725;6;0;false;false;;;;;;
                                  -89731;11;0;false;false;0;0;0;;;
                                  -89742;1;0;false;false;;;;;;
                                  -89743;1;0;false;false;0;0;0;;;
                                  -89744;1;0;false;false;;;;;;
                                  -89745;12;0;false;false;0;0;0;;;
                                  -89757;4;0;false;false;;;;;;
                                  -89761;9;0;false;false;0;0;0;;;
                                  -89770;1;0;false;false;;;;;;
                                  -89771;1;0;false;false;0;0;0;;;
                                  -89772;1;0;false;false;;;;;;
                                  -89773;15;0;false;false;0;0;0;;;
                                  -89788;4;0;false;false;;;;;;
                                  -89792;21;0;false;false;0;0;0;;;
                                  -89813;3;0;false;false;;;;;;
                                  -89816;1;0;false;false;0;0;0;;;
                                  -89817;3;0;false;false;;;;;;
                                  -89820;4;1;false;false;127;0;85;;;
                                  -89824;1;0;false;false;;;;;;
                                  -89825;1;0;false;false;0;0;0;;;
                                  -89826;4;0;false;false;;;;;;
                                  -89830;24;0;false;false;0;0;0;;;
                                  -89854;3;0;false;false;;;;;;
                                  -89857;1;0;false;false;0;0;0;;;
                                  -89858;2;0;false;false;;;;;;
                                  -89860;1;0;false;false;0;0;0;;;
                                  -89861;2;0;false;false;;;;;;
                                  -89863;3;0;false;false;63;95;191;;;
                                  -89866;3;0;false;false;;;;;;
                                  -89869;1;0;false;false;63;95;191;;;
                                  -89870;1;0;false;false;;;;;;
                                  -89871;7;0;false;false;63;95;191;;;
                                  -89878;1;0;false;false;;;;;;
                                  -89879;3;0;false;false;63;95;191;;;
                                  -89882;1;0;false;false;;;;;;
                                  -89883;4;0;false;false;63;95;191;;;
                                  -89887;1;0;false;false;;;;;;
                                  -89888;10;0;false;false;63;95;191;;;
                                  -89898;1;0;false;false;;;;;;
                                  -89899;6;0;false;false;63;95;191;;;
                                  -89905;1;0;false;false;;;;;;
                                  -89906;3;0;false;false;63;95;191;;;
                                  -89909;1;0;false;false;;;;;;
                                  -89910;8;0;false;false;63;95;191;;;
                                  -89918;1;0;false;false;;;;;;
                                  -89919;4;0;false;false;63;95;191;;;
                                  -89923;1;0;false;false;;;;;;
                                  -89924;2;0;false;false;63;95;191;;;
                                  -89926;1;0;false;false;;;;;;
                                  -89927;4;0;false;false;63;95;191;;;
                                  -89931;3;0;false;false;;;;;;
                                  -89934;2;0;false;false;63;95;191;;;
                                  -89936;2;0;false;false;;;;;;
                                  -89938;4;1;false;false;127;0;85;;;
                                  -89942;1;0;false;false;;;;;;
                                  -89943;10;0;false;false;0;0;0;;;
                                  -89953;1;0;false;false;;;;;;
                                  -89954;1;0;false;false;0;0;0;;;
                                  -89955;3;0;false;false;;;;;;
                                  -89958;5;0;false;false;0;0;0;;;
                                  -89963;1;0;false;false;;;;;;
                                  -89964;5;0;false;false;0;0;0;;;
                                  -89969;1;0;false;false;;;;;;
                                  -89970;1;0;false;false;0;0;0;;;
                                  -89971;1;0;false;false;;;;;;
                                  -89972;3;1;false;false;127;0;85;;;
                                  -89975;1;0;false;false;;;;;;
                                  -89976;8;0;false;false;0;0;0;;;
                                  -89984;3;0;false;false;;;;;;
                                  -89987;10;0;false;false;0;0;0;;;
                                  -89997;1;0;false;false;;;;;;
                                  -89998;1;0;false;false;0;0;0;;;
                                  -89999;1;0;false;false;;;;;;
                                  -90000;2;0;false;false;42;0;255;;;
                                  -90002;1;0;false;false;0;0;0;;;
                                  -90003;3;0;false;false;;;;;;
                                  -90006;2;1;false;false;127;0;85;;;
                                  -90008;1;0;false;false;;;;;;
                                  -90009;12;0;false;false;0;0;0;;;
                                  -90021;1;0;false;false;;;;;;
                                  -90022;2;0;false;false;0;0;0;;;
                                  -90024;1;0;false;false;;;;;;
                                  -90025;12;0;false;false;0;0;0;;;
                                  -90037;1;0;false;false;;;;;;
                                  -90038;1;0;false;false;0;0;0;;;
                                  -90039;4;0;false;false;;;;;;
                                  -90043;11;0;false;false;0;0;0;;;
                                  -90054;1;0;false;false;;;;;;
                                  -90055;1;0;false;false;0;0;0;;;
                                  -90056;1;0;false;false;;;;;;
                                  -90057;12;0;false;false;0;0;0;;;
                                  -90069;4;0;false;false;;;;;;
                                  -90073;9;0;false;false;0;0;0;;;
                                  -90082;1;0;false;false;;;;;;
                                  -90083;1;0;false;false;0;0;0;;;
                                  -90084;1;0;false;false;;;;;;
                                  -90085;12;0;false;false;0;0;0;;;
                                  -90097;4;0;false;false;;;;;;
                                  -90101;20;0;false;false;0;0;0;;;
                                  -90121;3;0;false;false;;;;;;
                                  -90124;1;0;false;false;0;0;0;;;
                                  -90125;3;0;false;false;;;;;;
                                  -90128;4;1;false;false;127;0;85;;;
                                  -90132;3;0;false;false;;;;;;
                                  -90135;2;1;false;false;127;0;85;;;
                                  -90137;1;0;false;false;;;;;;
                                  -90138;12;0;false;false;0;0;0;;;
                                  -90150;1;0;false;false;;;;;;
                                  -90151;1;0;false;false;0;0;0;;;
                                  -90152;1;0;false;false;;;;;;
                                  -90153;23;0;false;false;0;0;0;;;
                                  -90176;1;0;false;false;;;;;;
                                  -90177;1;0;false;false;0;0;0;;;
                                  -90178;4;0;false;false;;;;;;
                                  -90182;3;1;false;false;127;0;85;;;
                                  -90185;1;0;false;false;;;;;;
                                  -90186;4;0;false;false;0;0;0;;;
                                  -90190;1;0;false;false;;;;;;
                                  -90191;1;0;false;false;0;0;0;;;
                                  -90192;1;0;false;false;;;;;;
                                  -90193;37;0;false;false;0;0;0;;;
                                  -90230;4;0;false;false;;;;;;
                                  -90234;3;1;false;false;127;0;85;;;
                                  -90237;1;0;false;false;;;;;;
                                  -90238;10;0;false;false;0;0;0;;;
                                  -90248;1;0;false;false;;;;;;
                                  -90249;1;0;false;false;0;0;0;;;
                                  -90250;1;0;false;false;;;;;;
                                  -90251;30;0;false;false;0;0;0;;;
                                  -90281;4;0;false;false;;;;;;
                                  -90285;3;1;false;false;127;0;85;;;
                                  -90288;1;0;false;false;;;;;;
                                  -90289;10;0;false;false;0;0;0;;;
                                  -90299;1;0;false;false;;;;;;
                                  -90300;1;0;false;false;0;0;0;;;
                                  -90301;1;0;false;false;;;;;;
                                  -90302;31;0;false;false;0;0;0;;;
                                  -90333;10;0;false;false;;;;;;
                                  -90343;2;1;false;false;127;0;85;;;
                                  -90345;1;0;false;false;;;;;;
                                  -90346;12;0;false;false;0;0;0;;;
                                  -90358;1;0;false;false;;;;;;
                                  -90359;2;0;false;false;0;0;0;;;
                                  -90361;1;0;false;false;;;;;;
                                  -90362;10;0;false;false;0;0;0;;;
                                  -90372;1;0;false;false;;;;;;
                                  -90373;1;0;false;false;0;0;0;;;
                                  -90374;1;0;false;false;;;;;;
                                  -90375;11;0;false;false;0;0;0;;;
                                  -90386;1;0;false;false;;;;;;
                                  -90387;1;0;false;false;0;0;0;;;
                                  -90388;5;0;false;false;;;;;;
                                  -90393;11;0;false;false;0;0;0;;;
                                  -90404;1;0;false;false;;;;;;
                                  -90405;1;0;false;false;0;0;0;;;
                                  -90406;1;0;false;false;;;;;;
                                  -90407;12;0;false;false;0;0;0;;;
                                  -90419;5;0;false;false;;;;;;
                                  -90424;9;0;false;false;0;0;0;;;
                                  -90433;1;0;false;false;;;;;;
                                  -90434;1;0;false;false;0;0;0;;;
                                  -90435;1;0;false;false;;;;;;
                                  -90436;28;0;false;false;0;0;0;;;
                                  -90464;1;0;false;false;;;;;;
                                  -90465;1;0;false;false;0;0;0;;;
                                  -90466;1;0;false;false;;;;;;
                                  -90467;3;0;false;false;0;0;0;;;
                                  -90470;4;0;false;false;;;;;;
                                  -90474;1;0;false;false;0;0;0;;;
                                  -90475;4;0;false;false;;;;;;
                                  -90479;4;1;false;false;127;0;85;;;
                                  -90483;1;0;false;false;;;;;;
                                  -90484;1;0;false;false;0;0;0;;;
                                  -90485;5;0;false;false;;;;;;
                                  -90490;11;0;false;false;0;0;0;;;
                                  -90501;1;0;false;false;;;;;;
                                  -90502;1;0;false;false;0;0;0;;;
                                  -90503;1;0;false;false;;;;;;
                                  -90504;12;0;false;false;0;0;0;;;
                                  -90516;5;0;false;false;;;;;;
                                  -90521;9;0;false;false;0;0;0;;;
                                  -90530;1;0;false;false;;;;;;
                                  -90531;1;0;false;false;0;0;0;;;
                                  -90532;1;0;false;false;;;;;;
                                  -90533;27;0;false;false;0;0;0;;;
                                  -90560;1;0;false;false;;;;;;
                                  -90561;6;0;false;false;0;0;0;;;
                                  -90567;4;0;false;false;;;;;;
                                  -90571;1;0;false;false;0;0;0;;;
                                  -90572;4;0;false;false;;;;;;
                                  -90576;20;0;false;false;0;0;0;;;
                                  -90596;3;0;false;false;;;;;;
                                  -90599;1;0;false;false;0;0;0;;;
                                  -90600;2;0;false;false;;;;;;
                                  -90602;1;0;false;false;0;0;0;;;
                                  -90603;2;0;false;false;;;;;;
                                  -90605;3;0;false;false;63;95;191;;;
                                  -90608;3;0;false;false;;;;;;
                                  -90611;1;0;false;false;63;95;191;;;
                                  -90612;1;0;false;false;;;;;;
                                  -90613;7;0;false;false;63;95;191;;;
                                  -90620;1;0;false;false;;;;;;
                                  -90621;3;0;false;false;63;95;191;;;
                                  -90624;1;0;false;false;;;;;;
                                  -90625;4;0;false;false;63;95;191;;;
                                  -90629;1;0;false;false;;;;;;
                                  -90630;5;0;false;false;63;95;191;;;
                                  -90635;3;0;false;false;;;;;;
                                  -90638;2;0;false;false;63;95;191;;;
                                  -90640;2;0;false;false;;;;;;
                                  -90642;4;1;false;false;127;0;85;;;
                                  -90646;1;0;false;false;;;;;;
                                  -90647;18;0;false;false;0;0;0;;;
                                  -90665;1;0;false;false;;;;;;
                                  -90666;1;0;false;false;0;0;0;;;
                                  -90667;3;0;false;false;;;;;;
                                  -90670;2;1;false;false;127;0;85;;;
                                  -90672;1;0;false;false;;;;;;
                                  -90673;12;0;false;false;0;0;0;;;
                                  -90685;1;0;false;false;;;;;;
                                  -90686;2;0;false;false;0;0;0;;;
                                  -90688;1;0;false;false;;;;;;
                                  -90689;12;0;false;false;0;0;0;;;
                                  -90701;1;0;false;false;;;;;;
                                  -90702;1;0;false;false;0;0;0;;;
                                  -90703;4;0;false;false;;;;;;
                                  -90707;44;0;false;false;63;127;95;;;
                                  -90751;2;0;false;false;;;;;;
                                  -90753;36;0;false;false;63;127;95;;;
                                  -90789;2;0;false;false;;;;;;
                                  -90791;11;0;false;false;0;0;0;;;
                                  -90802;3;0;false;false;;;;;;
                                  -90805;1;0;false;false;0;0;0;;;
                                  -90806;1;0;false;false;;;;;;
                                  -90807;4;1;false;false;127;0;85;;;
                                  -90811;1;0;false;false;;;;;;
                                  -90812;1;0;false;false;0;0;0;;;
                                  -90813;4;0;false;false;;;;;;
                                  -90817;5;0;false;false;0;0;0;;;
                                  -90822;1;0;false;false;;;;;;
                                  -90823;5;0;false;false;0;0;0;;;
                                  -90828;1;0;false;false;;;;;;
                                  -90829;1;0;false;false;0;0;0;;;
                                  -90830;1;0;false;false;;;;;;
                                  -90831;3;1;false;false;127;0;85;;;
                                  -90834;1;0;false;false;;;;;;
                                  -90835;8;0;false;false;0;0;0;;;
                                  -90843;4;0;false;false;;;;;;
                                  -90847;10;0;false;false;0;0;0;;;
                                  -90857;1;0;false;false;;;;;;
                                  -90858;1;0;false;false;0;0;0;;;
                                  -90859;1;0;false;false;;;;;;
                                  -90860;2;0;false;false;42;0;255;;;
                                  -90862;1;0;false;false;0;0;0;;;
                                  -90863;4;0;false;false;;;;;;
                                  -90867;11;0;false;false;0;0;0;;;
                                  -90878;1;0;false;false;;;;;;
                                  -90879;1;0;false;false;0;0;0;;;
                                  -90880;1;0;false;false;;;;;;
                                  -90881;12;0;false;false;0;0;0;;;
                                  -90893;4;0;false;false;;;;;;
                                  -90897;9;0;false;false;0;0;0;;;
                                  -90906;1;0;false;false;;;;;;
                                  -90907;1;0;false;false;0;0;0;;;
                                  -90908;1;0;false;false;;;;;;
                                  -90909;24;0;false;false;0;0;0;;;
                                  -90933;4;0;false;false;;;;;;
                                  -90937;20;0;false;false;0;0;0;;;
                                  -90957;3;0;false;false;;;;;;
                                  -90960;1;0;false;false;0;0;0;;;
                                  -90961;2;0;false;false;;;;;;
                                  -90963;1;0;false;false;0;0;0;;;
                                  -90964;2;0;false;false;;;;;;
                                  -90966;3;0;false;false;63;95;191;;;
                                  -90969;3;0;false;false;;;;;;
                                  -90972;1;0;false;false;63;95;191;;;
                                  -90973;1;0;false;false;;;;;;
                                  -90974;7;0;false;false;63;95;191;;;
                                  -90981;1;0;false;false;;;;;;
                                  -90982;3;0;false;false;63;95;191;;;
                                  -90985;1;0;false;false;;;;;;
                                  -90986;8;0;false;false;63;95;191;;;
                                  -90994;1;0;false;false;;;;;;
                                  -90995;5;0;false;false;63;95;191;;;
                                  -91000;3;0;false;false;;;;;;
                                  -91003;2;0;false;false;63;95;191;;;
                                  -91005;2;0;false;false;;;;;;
                                  -91007;4;1;false;false;127;0;85;;;
                                  -91011;1;0;false;false;;;;;;
                                  -91012;22;0;false;false;0;0;0;;;
                                  -91034;1;0;false;false;;;;;;
                                  -91035;1;0;false;false;0;0;0;;;
                                  -91036;3;0;false;false;;;;;;
                                  -91039;2;1;false;false;127;0;85;;;
                                  -91041;1;0;false;false;;;;;;
                                  -91042;12;0;false;false;0;0;0;;;
                                  -91054;1;0;false;false;;;;;;
                                  -91055;2;0;false;false;0;0;0;;;
                                  -91057;1;0;false;false;;;;;;
                                  -91058;12;0;false;false;0;0;0;;;
                                  -91070;1;0;false;false;;;;;;
                                  -91071;1;0;false;false;0;0;0;;;
                                  -91072;4;0;false;false;;;;;;
                                  -91076;40;0;false;false;63;127;95;;;
                                  -91116;2;0;false;false;;;;;;
                                  -91118;39;0;false;false;63;127;95;;;
                                  -91157;2;0;false;false;;;;;;
                                  -91159;14;0;false;false;0;0;0;;;
                                  -91173;3;0;false;false;;;;;;
                                  -91176;1;0;false;false;0;0;0;;;
                                  -91177;1;0;false;false;;;;;;
                                  -91178;4;1;false;false;127;0;85;;;
                                  -91182;1;0;false;false;;;;;;
                                  -91183;1;0;false;false;0;0;0;;;
                                  -91184;4;0;false;false;;;;;;
                                  -91188;5;0;false;false;0;0;0;;;
                                  -91193;1;0;false;false;;;;;;
                                  -91194;5;0;false;false;0;0;0;;;
                                  -91199;1;0;false;false;;;;;;
                                  -91200;1;0;false;false;0;0;0;;;
                                  -91201;1;0;false;false;;;;;;
                                  -91202;3;1;false;false;127;0;85;;;
                                  -91205;1;0;false;false;;;;;;
                                  -91206;8;0;false;false;0;0;0;;;
                                  -91214;4;0;false;false;;;;;;
                                  -91218;10;0;false;false;0;0;0;;;
                                  -91228;1;0;false;false;;;;;;
                                  -91229;1;0;false;false;0;0;0;;;
                                  -91230;1;0;false;false;;;;;;
                                  -91231;2;0;false;false;42;0;255;;;
                                  -91233;1;0;false;false;0;0;0;;;
                                  -91234;4;0;false;false;;;;;;
                                  -91238;11;0;false;false;0;0;0;;;
                                  -91249;1;0;false;false;;;;;;
                                  -91250;1;0;false;false;0;0;0;;;
                                  -91251;1;0;false;false;;;;;;
                                  -91252;26;0;false;false;0;0;0;;;
                                  -91278;4;0;false;false;;;;;;
                                  -91282;9;0;false;false;0;0;0;;;
                                  -91291;1;0;false;false;;;;;;
                                  -91292;1;0;false;false;0;0;0;;;
                                  -91293;1;0;false;false;;;;;;
                                  -91294;12;0;false;false;0;0;0;;;
                                  -91306;4;0;false;false;;;;;;
                                  -91310;20;0;false;false;0;0;0;;;
                                  -91330;3;0;false;false;;;;;;
                                  -91333;1;0;false;false;0;0;0;;;
                                  -91334;2;0;false;false;;;;;;
                                  -91336;1;0;false;false;0;0;0;;;
                                  -91337;2;0;false;false;;;;;;
                                  -91339;3;0;false;false;63;95;191;;;
                                  -91342;3;0;false;false;;;;;;
                                  -91345;1;0;false;false;63;95;191;;;
                                  -91346;1;0;false;false;;;;;;
                                  -91347;5;0;false;false;63;95;191;;;
                                  -91352;1;0;false;false;;;;;;
                                  -91353;3;0;false;false;63;95;191;;;
                                  -91356;1;0;false;false;;;;;;
                                  -91357;5;0;false;false;63;95;191;;;
                                  -91362;1;0;false;false;;;;;;
                                  -91363;3;0;false;false;63;95;191;;;
                                  -91366;1;0;false;false;;;;;;
                                  -91367;4;0;false;false;63;95;191;;;
                                  -91371;1;0;false;false;;;;;;
                                  -91372;4;0;false;false;63;95;191;;;
                                  -91376;1;0;false;false;;;;;;
                                  -91377;3;0;false;false;63;95;191;;;
                                  -91380;1;0;false;false;;;;;;
                                  -91381;2;0;false;false;63;95;191;;;
                                  -91383;1;0;false;false;;;;;;
                                  -91384;3;0;false;false;63;95;191;;;
                                  -91387;1;0;false;false;;;;;;
                                  -91388;4;0;false;false;63;95;191;;;
                                  -91392;1;0;false;false;;;;;;
                                  -91393;9;0;false;false;63;95;191;;;
                                  -91402;1;0;false;false;;;;;;
                                  -91403;6;0;false;false;63;95;191;;;
                                  -91409;1;0;false;false;;;;;;
                                  -91410;8;0;false;false;63;95;191;;;
                                  -91418;4;0;false;false;;;;;;
                                  -91422;1;0;false;false;63;95;191;;;
                                  -91423;1;0;false;false;;;;;;
                                  -91424;2;0;false;false;63;95;191;;;
                                  -91426;1;0;false;false;;;;;;
                                  -91427;3;0;false;false;63;95;191;;;
                                  -91430;1;0;false;false;;;;;;
                                  -91431;9;0;false;false;63;95;191;;;
                                  -91440;1;0;false;false;;;;;;
                                  -91441;2;0;false;false;63;95;191;;;
                                  -91443;1;0;false;false;;;;;;
                                  -91444;3;0;false;false;63;95;191;;;
                                  -91447;1;0;false;false;;;;;;
                                  -91448;5;0;false;false;63;95;191;;;
                                  -91453;1;0;false;false;;;;;;
                                  -91454;4;0;false;false;63;95;191;;;
                                  -91458;1;0;false;false;;;;;;
                                  -91459;3;0;false;false;63;95;191;;;
                                  -91462;1;0;false;false;;;;;;
                                  -91463;5;0;false;false;63;95;191;;;
                                  -91468;1;0;false;false;;;;;;
                                  -91469;2;0;false;false;63;95;191;;;
                                  -91471;1;0;false;false;;;;;;
                                  -91472;3;0;false;false;63;95;191;;;
                                  -91475;1;0;false;false;;;;;;
                                  -91476;3;0;false;false;63;95;191;;;
                                  -91479;1;0;false;false;;;;;;
                                  -91480;2;0;false;false;63;95;191;;;
                                  -91482;1;0;false;false;;;;;;
                                  -91483;3;0;false;false;63;95;191;;;
                                  -91486;1;0;false;false;;;;;;
                                  -91487;3;0;false;false;63;95;191;;;
                                  -91490;1;0;false;false;;;;;;
                                  -91491;4;0;false;false;63;95;191;;;
                                  -91495;4;0;false;false;;;;;;
                                  -91499;1;0;false;false;63;95;191;;;
                                  -91500;1;0;false;false;;;;;;
                                  -91501;2;0;false;false;63;95;191;;;
                                  -91503;1;0;false;false;;;;;;
                                  -91504;3;0;false;false;63;95;191;;;
                                  -91507;1;0;false;false;;;;;;
                                  -91508;3;0;false;false;63;95;191;;;
                                  -91511;1;0;false;false;;;;;;
                                  -91512;4;0;false;false;63;95;191;;;
                                  -91516;1;0;false;false;;;;;;
                                  -91517;2;0;false;false;63;95;191;;;
                                  -91519;1;0;false;false;;;;;;
                                  -91520;7;0;false;false;63;95;191;;;
                                  -91527;1;0;false;false;;;;;;
                                  -91528;4;0;false;false;63;95;191;;;
                                  -91532;1;0;false;false;;;;;;
                                  -91533;3;0;false;false;63;95;191;;;
                                  -91536;1;0;false;false;;;;;;
                                  -91537;9;0;false;false;63;95;191;;;
                                  -91546;1;0;false;false;;;;;;
                                  -91547;7;0;false;false;63;95;191;;;
                                  -91554;3;0;false;false;;;;;;
                                  -91557;1;0;false;false;63;95;191;;;
                                  -91558;4;0;false;false;;;;;;
                                  -91562;1;0;false;false;63;95;191;;;
                                  -91563;1;0;false;false;;;;;;
                                  -91564;8;1;false;false;127;159;191;;;
                                  -91572;5;0;false;false;63;95;191;;;
                                  -91577;1;0;false;false;;;;;;
                                  -91578;2;0;false;false;63;95;191;;;
                                  -91580;1;0;false;false;;;;;;
                                  -91581;3;0;false;false;63;95;191;;;
                                  -91584;1;0;false;false;;;;;;
                                  -91585;3;0;false;false;63;95;191;;;
                                  -91588;1;0;false;false;;;;;;
                                  -91589;4;0;false;false;63;95;191;;;
                                  -91593;1;0;false;false;;;;;;
                                  -91594;8;0;false;false;63;95;191;;;
                                  -91602;1;0;false;false;;;;;;
                                  -91603;2;0;false;false;63;95;191;;;
                                  -91605;1;0;false;false;;;;;;
                                  -91606;3;0;false;false;63;95;191;;;
                                  -91609;1;0;false;false;;;;;;
                                  -91610;5;0;false;false;63;95;191;;;
                                  -91615;1;0;false;false;;;;;;
                                  -91616;4;0;false;false;63;95;191;;;
                                  -91620;1;0;false;false;;;;;;
                                  -91621;2;0;false;false;63;95;191;;;
                                  -91623;1;0;false;false;;;;;;
                                  -91624;3;0;false;false;63;95;191;;;
                                  -91627;1;0;false;false;;;;;;
                                  -91628;8;0;false;false;63;95;191;;;
                                  -91636;3;0;false;false;;;;;;
                                  -91639;2;0;false;false;63;95;191;;;
                                  -91641;2;0;false;false;;;;;;
                                  -91643;3;1;false;false;127;0;85;;;
                                  -91646;1;0;false;false;;;;;;
                                  -91647;12;0;false;false;0;0;0;;;
                                  -91659;1;0;false;false;;;;;;
                                  -91660;1;0;false;false;0;0;0;;;
                                  -91661;3;0;false;false;;;;;;
                                  -91664;2;1;false;false;127;0;85;;;
                                  -91666;1;0;false;false;;;;;;
                                  -91667;16;0;false;false;0;0;0;;;
                                  -91683;1;0;false;false;;;;;;
                                  -91684;1;0;false;false;0;0;0;;;
                                  -91685;4;0;false;false;;;;;;
                                  -91689;6;1;false;false;127;0;85;;;
                                  -91695;1;0;false;false;;;;;;
                                  -91696;2;0;false;false;0;0;0;;;
                                  -91698;3;0;false;false;;;;;;
                                  -91701;1;0;false;false;0;0;0;;;
                                  -91702;3;0;false;false;;;;;;
                                  -91705;72;0;false;false;63;127;95;;;
                                  -91777;1;0;false;false;;;;;;
                                  -91778;16;0;false;false;63;127;95;;;
                                  -91794;1;0;false;false;;;;;;
                                  -91795;3;1;false;false;127;0;85;;;
                                  -91798;1;0;false;false;;;;;;
                                  -91799;9;0;false;false;0;0;0;;;
                                  -91808;1;0;false;false;;;;;;
                                  -91809;1;0;false;false;0;0;0;;;
                                  -91810;1;0;false;false;;;;;;
                                  -91811;15;0;false;false;0;0;0;;;
                                  -91826;4;0;false;false;;;;;;
                                  -91830;2;1;false;false;127;0;85;;;
                                  -91832;1;0;false;false;;;;;;
                                  -91833;10;0;false;false;0;0;0;;;
                                  -91843;1;0;false;false;;;;;;
                                  -91844;1;0;false;false;0;0;0;;;
                                  -91845;1;0;false;false;;;;;;
                                  -91846;22;0;false;false;0;0;0;;;
                                  -91868;1;0;false;false;;;;;;
                                  -91869;1;0;false;false;0;0;0;;;
                                  -91870;1;0;false;false;;;;;;
                                  -91871;2;0;false;false;0;0;0;;;
                                  -91873;1;0;false;false;;;;;;
                                  -91874;1;0;false;false;0;0;0;;;
                                  -91875;4;0;false;false;;;;;;
                                  -91879;12;0;false;false;0;0;0;;;
                                  -91891;4;0;false;false;;;;;;
                                  -91895;11;0;false;false;0;0;0;;;
                                  -91906;1;0;false;false;;;;;;
                                  -91907;1;0;false;false;0;0;0;;;
                                  -91908;1;0;false;false;;;;;;
                                  -91909;33;0;false;false;0;0;0;;;
                                  -91942;1;0;false;false;;;;;;
                                  -91943;11;0;false;false;0;0;0;;;
                                  -91954;3;0;false;false;;;;;;
                                  -91957;1;0;false;false;0;0;0;;;
                                  -91958;3;0;false;false;;;;;;
                                  -91961;6;1;false;false;127;0;85;;;
                                  -91967;1;0;false;false;;;;;;
                                  -91968;10;0;false;false;0;0;0;;;
                                  -91978;2;0;false;false;;;;;;
                                  -91980;1;0;false;false;0;0;0;;;
                                  -91981;2;0;false;false;;;;;;
                                  -91983;3;0;false;false;63;95;191;;;
                                  -91986;3;0;false;false;;;;;;
                                  -91989;1;0;false;false;63;95;191;;;
                                  -91990;1;0;false;false;;;;;;
                                  -91991;5;0;false;false;63;95;191;;;
                                  -91996;1;0;false;false;;;;;;
                                  -91997;3;0;false;false;63;95;191;;;
                                  -92000;1;0;false;false;;;;;;
                                  -92001;5;0;false;false;63;95;191;;;
                                  -92006;1;0;false;false;;;;;;
                                  -92007;2;0;false;false;63;95;191;;;
                                  -92009;1;0;false;false;;;;;;
                                  -92010;3;0;false;false;63;95;191;;;
                                  -92013;1;0;false;false;;;;;;
                                  -92014;3;0;false;false;63;95;191;;;
                                  -92017;1;0;false;false;;;;;;
                                  -92018;2;0;false;false;63;95;191;;;
                                  -92020;1;0;false;false;;;;;;
                                  -92021;3;0;false;false;63;95;191;;;
                                  -92024;1;0;false;false;;;;;;
                                  -92025;5;0;false;false;63;95;191;;;
                                  -92030;3;0;false;false;;;;;;
                                  -92033;2;0;false;false;63;95;191;;;
                                  -92035;2;0;false;false;;;;;;
                                  -92037;4;1;false;false;127;0;85;;;
                                  -92041;1;0;false;false;;;;;;
                                  -92042;11;0;false;false;0;0;0;;;
                                  -92053;1;0;false;false;;;;;;
                                  -92054;1;0;false;false;0;0;0;;;
                                  -92055;3;0;false;false;;;;;;
                                  -92058;3;1;false;false;127;0;85;;;
                                  -92061;1;0;false;false;;;;;;
                                  -92062;9;0;false;false;0;0;0;;;
                                  -92071;1;0;false;false;;;;;;
                                  -92072;1;0;false;false;0;0;0;;;
                                  -92073;1;0;false;false;;;;;;
                                  -92074;15;0;false;false;0;0;0;;;
                                  -92089;3;0;false;false;;;;;;
                                  -92092;3;1;false;false;127;0;85;;;
                                  -92095;1;0;false;false;;;;;;
                                  -92096;10;0;false;false;0;0;0;;;
                                  -92106;1;0;false;false;;;;;;
                                  -92107;1;0;false;false;0;0;0;;;
                                  -92108;1;0;false;false;;;;;;
                                  -92109;35;0;false;false;0;0;0;;;
                                  -92144;4;0;false;false;;;;;;
                                  -92148;3;1;false;false;127;0;85;;;
                                  -92151;1;0;false;false;;;;;;
                                  -92152;10;0;false;false;0;0;0;;;
                                  -92162;1;0;false;false;;;;;;
                                  -92163;1;0;false;false;0;0;0;;;
                                  -92164;1;0;false;false;;;;;;
                                  -92165;36;0;false;false;0;0;0;;;
                                  -92201;3;0;false;false;;;;;;
                                  -92204;3;1;false;false;127;0;85;;;
                                  -92207;1;0;false;false;;;;;;
                                  -92208;13;0;false;false;0;0;0;;;
                                  -92221;1;0;false;false;;;;;;
                                  -92222;1;0;false;false;0;0;0;;;
                                  -92223;1;0;false;false;;;;;;
                                  -92224;10;0;false;false;0;0;0;;;
                                  -92234;1;0;false;false;;;;;;
                                  -92235;1;0;false;false;0;0;0;;;
                                  -92236;1;0;false;false;;;;;;
                                  -92237;11;0;false;false;0;0;0;;;
                                  -92248;6;0;false;false;;;;;;
                                  -92254;2;1;false;false;127;0;85;;;
                                  -92256;1;0;false;false;;;;;;
                                  -92257;12;0;false;false;0;0;0;;;
                                  -92269;1;0;false;false;;;;;;
                                  -92270;1;0;false;false;0;0;0;;;
                                  -92271;1;0;false;false;;;;;;
                                  -92272;14;0;false;false;0;0;0;;;
                                  -92286;1;0;false;false;;;;;;
                                  -92287;1;0;false;false;0;0;0;;;
                                  -92288;4;0;false;false;;;;;;
                                  -92292;11;0;false;false;0;0;0;;;
                                  -92303;1;0;false;false;;;;;;
                                  -92304;1;0;false;false;0;0;0;;;
                                  -92305;1;0;false;false;;;;;;
                                  -92306;14;0;false;false;0;0;0;;;
                                  -92320;4;0;false;false;;;;;;
                                  -92324;12;0;false;false;0;0;0;;;
                                  -92336;3;0;false;false;;;;;;
                                  -92339;1;0;false;false;0;0;0;;;
                                  -92340;2;0;false;false;;;;;;
                                  -92342;1;0;false;false;0;0;0;;;
                                  -92343;2;0;false;false;;;;;;
                                  -92345;3;0;false;false;63;95;191;;;
                                  -92348;3;0;false;false;;;;;;
                                  -92351;1;0;false;false;63;95;191;;;
                                  -92352;1;0;false;false;;;;;;
                                  -92353;5;0;false;false;63;95;191;;;
                                  -92358;1;0;false;false;;;;;;
                                  -92359;3;0;false;false;63;95;191;;;
                                  -92362;1;0;false;false;;;;;;
                                  -92363;5;0;false;false;63;95;191;;;
                                  -92368;1;0;false;false;;;;;;
                                  -92369;2;0;false;false;63;95;191;;;
                                  -92371;1;0;false;false;;;;;;
                                  -92372;3;0;false;false;63;95;191;;;
                                  -92375;1;0;false;false;;;;;;
                                  -92376;9;0;false;false;63;95;191;;;
                                  -92385;1;0;false;false;;;;;;
                                  -92386;2;0;false;false;63;95;191;;;
                                  -92388;1;0;false;false;;;;;;
                                  -92389;3;0;false;false;63;95;191;;;
                                  -92392;1;0;false;false;;;;;;
                                  -92393;5;0;false;false;63;95;191;;;
                                  -92398;3;0;false;false;;;;;;
                                  -92401;2;0;false;false;63;95;191;;;
                                  -92403;2;0;false;false;;;;;;
                                  -92405;4;1;false;false;127;0;85;;;
                                  -92409;1;0;false;false;;;;;;
                                  -92410;13;0;false;false;0;0;0;;;
                                  -92423;1;0;false;false;;;;;;
                                  -92424;1;0;false;false;0;0;0;;;
                                  -92425;3;0;false;false;;;;;;
                                  -92428;3;1;false;false;127;0;85;;;
                                  -92431;1;0;false;false;;;;;;
                                  -92432;9;0;false;false;0;0;0;;;
                                  -92441;1;0;false;false;;;;;;
                                  -92442;1;0;false;false;0;0;0;;;
                                  -92443;1;0;false;false;;;;;;
                                  -92444;15;0;false;false;0;0;0;;;
                                  -92459;3;0;false;false;;;;;;
                                  -92462;3;1;false;false;127;0;85;;;
                                  -92465;1;0;false;false;;;;;;
                                  -92466;10;0;false;false;0;0;0;;;
                                  -92476;1;0;false;false;;;;;;
                                  -92477;1;0;false;false;0;0;0;;;
                                  -92478;1;0;false;false;;;;;;
                                  -92479;35;0;false;false;0;0;0;;;
                                  -92514;3;0;false;false;;;;;;
                                  -92517;2;1;false;false;127;0;85;;;
                                  -92519;1;0;false;false;;;;;;
                                  -92520;12;0;false;false;0;0;0;;;
                                  -92532;1;0;false;false;;;;;;
                                  -92533;1;0;false;false;0;0;0;;;
                                  -92534;1;0;false;false;;;;;;
                                  -92535;11;0;false;false;0;0;0;;;
                                  -92546;1;0;false;false;;;;;;
                                  -92547;1;0;false;false;0;0;0;;;
                                  -92548;4;0;false;false;;;;;;
                                  -92552;11;0;false;false;0;0;0;;;
                                  -92563;1;0;false;false;;;;;;
                                  -92564;1;0;false;false;0;0;0;;;
                                  -92565;1;0;false;false;;;;;;
                                  -92566;11;0;false;false;0;0;0;;;
                                  -92577;4;0;false;false;;;;;;
                                  -92581;21;0;false;false;0;0;0;;;
                                  -92602;3;0;false;false;;;;;;
                                  -92605;1;0;false;false;0;0;0;;;
                                  -92606;2;0;false;false;;;;;;
                                  -92608;1;0;false;false;0;0;0;;;
                                  -92609;2;0;false;false;;;;;;
                                  -92611;3;0;false;false;63;95;191;;;
                                  -92614;3;0;false;false;;;;;;
                                  -92617;1;0;false;false;63;95;191;;;
                                  -92618;1;0;false;false;;;;;;
                                  -92619;5;0;false;false;63;95;191;;;
                                  -92624;1;0;false;false;;;;;;
                                  -92625;3;0;false;false;63;95;191;;;
                                  -92628;1;0;false;false;;;;;;
                                  -92629;5;0;false;false;63;95;191;;;
                                  -92634;1;0;false;false;;;;;;
                                  -92635;3;0;false;false;63;95;191;;;
                                  -92638;1;0;false;false;;;;;;
                                  -92639;4;0;false;false;63;95;191;;;
                                  -92643;1;0;false;false;;;;;;
                                  -92644;2;0;false;false;63;95;191;;;
                                  -92646;1;0;false;false;;;;;;
                                  -92647;3;0;false;false;63;95;191;;;
                                  -92650;1;0;false;false;;;;;;
                                  -92651;2;0;false;false;63;95;191;;;
                                  -92653;1;0;false;false;;;;;;
                                  -92654;3;0;false;false;63;95;191;;;
                                  -92657;1;0;false;false;;;;;;
                                  -92658;4;0;false;false;63;95;191;;;
                                  -92662;1;0;false;false;;;;;;
                                  -92663;9;0;false;false;63;95;191;;;
                                  -92672;1;0;false;false;;;;;;
                                  -92673;6;0;false;false;63;95;191;;;
                                  -92679;1;0;false;false;;;;;;
                                  -92680;8;0;false;false;63;95;191;;;
                                  -92688;4;0;false;false;;;;;;
                                  -92692;1;0;false;false;63;95;191;;;
                                  -92693;1;0;false;false;;;;;;
                                  -92694;2;0;false;false;63;95;191;;;
                                  -92696;1;0;false;false;;;;;;
                                  -92697;3;0;false;false;63;95;191;;;
                                  -92700;1;0;false;false;;;;;;
                                  -92701;9;0;false;false;63;95;191;;;
                                  -92710;1;0;false;false;;;;;;
                                  -92711;2;0;false;false;63;95;191;;;
                                  -92713;1;0;false;false;;;;;;
                                  -92714;3;0;false;false;63;95;191;;;
                                  -92717;1;0;false;false;;;;;;
                                  -92718;5;0;false;false;63;95;191;;;
                                  -92723;1;0;false;false;;;;;;
                                  -92724;4;0;false;false;63;95;191;;;
                                  -92728;1;0;false;false;;;;;;
                                  -92729;3;0;false;false;63;95;191;;;
                                  -92732;1;0;false;false;;;;;;
                                  -92733;5;0;false;false;63;95;191;;;
                                  -92738;1;0;false;false;;;;;;
                                  -92739;2;0;false;false;63;95;191;;;
                                  -92741;1;0;false;false;;;;;;
                                  -92742;3;0;false;false;63;95;191;;;
                                  -92745;1;0;false;false;;;;;;
                                  -92746;3;0;false;false;63;95;191;;;
                                  -92749;1;0;false;false;;;;;;
                                  -92750;2;0;false;false;63;95;191;;;
                                  -92752;1;0;false;false;;;;;;
                                  -92753;3;0;false;false;63;95;191;;;
                                  -92756;1;0;false;false;;;;;;
                                  -92757;3;0;false;false;63;95;191;;;
                                  -92760;1;0;false;false;;;;;;
                                  -92761;4;0;false;false;63;95;191;;;
                                  -92765;4;0;false;false;;;;;;
                                  -92769;1;0;false;false;63;95;191;;;
                                  -92770;1;0;false;false;;;;;;
                                  -92771;2;0;false;false;63;95;191;;;
                                  -92773;1;0;false;false;;;;;;
                                  -92774;3;0;false;false;63;95;191;;;
                                  -92777;1;0;false;false;;;;;;
                                  -92778;3;0;false;false;63;95;191;;;
                                  -92781;1;0;false;false;;;;;;
                                  -92782;4;0;false;false;63;95;191;;;
                                  -92786;1;0;false;false;;;;;;
                                  -92787;2;0;false;false;63;95;191;;;
                                  -92789;1;0;false;false;;;;;;
                                  -92790;7;0;false;false;63;95;191;;;
                                  -92797;1;0;false;false;;;;;;
                                  -92798;4;0;false;false;63;95;191;;;
                                  -92802;1;0;false;false;;;;;;
                                  -92803;3;0;false;false;63;95;191;;;
                                  -92806;1;0;false;false;;;;;;
                                  -92807;9;0;false;false;63;95;191;;;
                                  -92816;1;0;false;false;;;;;;
                                  -92817;7;0;false;false;63;95;191;;;
                                  -92824;3;0;false;false;;;;;;
                                  -92827;1;0;false;false;63;95;191;;;
                                  -92828;4;0;false;false;;;;;;
                                  -92832;1;0;false;false;63;95;191;;;
                                  -92833;1;0;false;false;;;;;;
                                  -92834;8;1;false;false;127;159;191;;;
                                  -92842;5;0;false;false;63;95;191;;;
                                  -92847;1;0;false;false;;;;;;
                                  -92848;2;0;false;false;63;95;191;;;
                                  -92850;1;0;false;false;;;;;;
                                  -92851;3;0;false;false;63;95;191;;;
                                  -92854;1;0;false;false;;;;;;
                                  -92855;3;0;false;false;63;95;191;;;
                                  -92858;1;0;false;false;;;;;;
                                  -92859;4;0;false;false;63;95;191;;;
                                  -92863;1;0;false;false;;;;;;
                                  -92864;8;0;false;false;63;95;191;;;
                                  -92872;1;0;false;false;;;;;;
                                  -92873;2;0;false;false;63;95;191;;;
                                  -92875;1;0;false;false;;;;;;
                                  -92876;3;0;false;false;63;95;191;;;
                                  -92879;1;0;false;false;;;;;;
                                  -92880;5;0;false;false;63;95;191;;;
                                  -92885;1;0;false;false;;;;;;
                                  -92886;4;0;false;false;63;95;191;;;
                                  -92890;1;0;false;false;;;;;;
                                  -92891;2;0;false;false;63;95;191;;;
                                  -92893;1;0;false;false;;;;;;
                                  -92894;3;0;false;false;63;95;191;;;
                                  -92897;1;0;false;false;;;;;;
                                  -92898;8;0;false;false;63;95;191;;;
                                  -92906;3;0;false;false;;;;;;
                                  -92909;2;0;false;false;63;95;191;;;
                                  -92911;2;0;false;false;;;;;;
                                  -92913;3;1;false;false;127;0;85;;;
                                  -92916;1;0;false;false;;;;;;
                                  -92917;10;0;false;false;0;0;0;;;
                                  -92927;1;0;false;false;;;;;;
                                  -92928;1;0;false;false;0;0;0;;;
                                  -92929;3;0;false;false;;;;;;
                                  -92932;3;1;false;false;127;0;85;;;
                                  -92935;1;0;false;false;;;;;;
                                  -92936;9;0;false;false;0;0;0;;;
                                  -92945;1;0;false;false;;;;;;
                                  -92946;1;0;false;false;0;0;0;;;
                                  -92947;1;0;false;false;;;;;;
                                  -92948;15;0;false;false;0;0;0;;;
                                  -92963;3;0;false;false;;;;;;
                                  -92966;2;1;false;false;127;0;85;;;
                                  -92968;1;0;false;false;;;;;;
                                  -92969;10;0;false;false;0;0;0;;;
                                  -92979;1;0;false;false;;;;;;
                                  -92980;1;0;false;false;0;0;0;;;
                                  -92981;1;0;false;false;;;;;;
                                  -92982;2;0;false;false;0;0;0;;;
                                  -92984;1;0;false;false;;;;;;
                                  -92985;1;0;false;false;0;0;0;;;
                                  -92986;4;0;false;false;;;;;;
                                  -92990;12;0;false;false;0;0;0;;;
                                  -93002;4;0;false;false;;;;;;
                                  -93006;11;0;false;false;0;0;0;;;
                                  -93017;1;0;false;false;;;;;;
                                  -93018;1;0;false;false;0;0;0;;;
                                  -93019;1;0;false;false;;;;;;
                                  -93020;33;0;false;false;0;0;0;;;
                                  -93053;1;0;false;false;;;;;;
                                  -93054;11;0;false;false;0;0;0;;;
                                  -93065;3;0;false;false;;;;;;
                                  -93068;1;0;false;false;0;0;0;;;
                                  -93069;3;0;false;false;;;;;;
                                  -93072;6;1;false;false;127;0;85;;;
                                  -93078;1;0;false;false;;;;;;
                                  -93079;10;0;false;false;0;0;0;;;
                                  -93089;2;0;false;false;;;;;;
                                  -93091;1;0;false;false;0;0;0;;;
                                  -93092;2;0;false;false;;;;;;
                                  -93094;3;0;false;false;63;95;191;;;
                                  -93097;3;0;false;false;;;;;;
                                  -93100;1;0;false;false;63;95;191;;;
                                  -93101;1;0;false;false;;;;;;
                                  -93102;5;0;false;false;63;95;191;;;
                                  -93107;1;0;false;false;;;;;;
                                  -93108;3;0;false;false;63;95;191;;;
                                  -93111;1;0;false;false;;;;;;
                                  -93112;5;0;false;false;63;95;191;;;
                                  -93117;1;0;false;false;;;;;;
                                  -93118;2;0;false;false;63;95;191;;;
                                  -93120;1;0;false;false;;;;;;
                                  -93121;3;0;false;false;63;95;191;;;
                                  -93124;1;0;false;false;;;;;;
                                  -93125;9;0;false;false;63;95;191;;;
                                  -93134;1;0;false;false;;;;;;
                                  -93135;9;0;false;false;63;95;191;;;
                                  -93144;3;0;false;false;;;;;;
                                  -93147;1;0;false;false;63;95;191;;;
                                  -93148;1;0;false;false;;;;;;
                                  -93149;3;0;false;false;127;127;159;;;
                                  -93152;3;0;false;false;;;;;;
                                  -93155;1;0;false;false;63;95;191;;;
                                  -93156;3;0;false;false;;;;;;
                                  -93159;1;0;false;false;63;95;191;;;
                                  -93160;1;0;false;false;;;;;;
                                  -93161;7;1;false;false;127;159;191;;;
                                  -93168;1;0;false;false;63;95;191;;;
                                  -93169;1;0;false;false;;;;;;
                                  -93170;1;0;false;false;63;95;191;;;
                                  -93171;1;0;false;false;;;;;;
                                  -93172;8;0;false;false;63;95;191;;;
                                  -93180;1;0;false;false;;;;;;
                                  -93181;2;0;false;false;63;95;191;;;
                                  -93183;1;0;false;false;;;;;;
                                  -93184;3;0;false;false;63;95;191;;;
                                  -93187;1;0;false;false;;;;;;
                                  -93188;3;0;false;false;63;95;191;;;
                                  -93191;1;0;false;false;;;;;;
                                  -93192;5;0;false;false;63;95;191;;;
                                  -93197;1;0;false;false;;;;;;
                                  -93198;8;0;false;false;63;95;191;;;
                                  -93206;3;0;false;false;;;;;;
                                  -93209;1;0;false;false;63;95;191;;;
                                  -93210;1;0;false;false;;;;;;
                                  -93211;7;1;false;false;127;159;191;;;
                                  -93218;1;0;false;false;63;95;191;;;
                                  -93219;1;0;false;false;;;;;;
                                  -93220;1;0;false;false;63;95;191;;;
                                  -93221;1;0;false;false;;;;;;
                                  -93222;8;0;false;false;63;95;191;;;
                                  -93230;1;0;false;false;;;;;;
                                  -93231;2;0;false;false;63;95;191;;;
                                  -93233;1;0;false;false;;;;;;
                                  -93234;3;0;false;false;63;95;191;;;
                                  -93237;1;0;false;false;;;;;;
                                  -93238;3;0;false;false;63;95;191;;;
                                  -93241;1;0;false;false;;;;;;
                                  -93242;5;0;false;false;63;95;191;;;
                                  -93247;1;0;false;false;;;;;;
                                  -93248;8;0;false;false;63;95;191;;;
                                  -93256;3;0;false;false;;;;;;
                                  -93259;1;0;false;false;63;95;191;;;
                                  -93260;1;0;false;false;;;;;;
                                  -93261;7;1;false;false;127;159;191;;;
                                  -93268;6;0;false;false;63;95;191;;;
                                  -93274;1;0;false;false;;;;;;
                                  -93275;3;0;false;false;63;95;191;;;
                                  -93278;1;0;false;false;;;;;;
                                  -93279;8;0;false;false;63;95;191;;;
                                  -93287;1;0;false;false;;;;;;
                                  -93288;6;0;false;false;63;95;191;;;
                                  -93294;1;0;false;false;;;;;;
                                  -93295;2;0;false;false;63;95;191;;;
                                  -93297;1;0;false;false;;;;;;
                                  -93298;1;0;false;false;63;95;191;;;
                                  -93299;1;0;false;false;;;;;;
                                  -93300;9;0;false;false;63;95;191;;;
                                  -93309;1;0;false;false;;;;;;
                                  -93310;10;0;false;false;63;95;191;;;
                                  -93320;3;0;false;false;;;;;;
                                  -93323;1;0;false;false;63;95;191;;;
                                  -93324;2;0;false;false;;;;;;
                                  -93326;7;0;false;false;63;95;191;;;
                                  -93333;1;0;false;false;;;;;;
                                  -93334;3;0;false;false;63;95;191;;;
                                  -93337;1;0;false;false;;;;;;
                                  -93338;4;0;false;false;63;95;191;;;
                                  -93342;1;0;false;false;;;;;;
                                  -93343;9;0;false;false;63;95;191;;;
                                  -93352;1;0;false;false;;;;;;
                                  -93353;2;0;false;false;63;95;191;;;
                                  -93355;1;0;false;false;;;;;;
                                  -93356;3;0;false;false;63;95;191;;;
                                  -93359;1;0;false;false;;;;;;
                                  -93360;9;0;false;false;63;95;191;;;
                                  -93369;3;0;false;false;;;;;;
                                  -93372;2;0;false;false;63;95;191;;;
                                  -93374;2;0;false;false;;;;;;
                                  -93376;4;1;false;false;127;0;85;;;
                                  -93380;1;0;false;false;;;;;;
                                  -93381;22;0;false;false;0;0;0;;;
                                  -93403;3;1;false;false;127;0;85;;;
                                  -93406;1;0;false;false;;;;;;
                                  -93407;2;0;false;false;0;0;0;;;
                                  -93409;1;0;false;false;;;;;;
                                  -93410;3;1;false;false;127;0;85;;;
                                  -93413;1;0;false;false;;;;;;
                                  -93414;2;0;false;false;0;0;0;;;
                                  -93416;1;0;false;false;;;;;;
                                  -93417;7;1;false;false;127;0;85;;;
                                  -93424;1;0;false;false;;;;;;
                                  -93425;7;0;false;false;0;0;0;;;
                                  -93432;1;0;false;false;;;;;;
                                  -93433;1;0;false;false;0;0;0;;;
                                  -93434;3;0;false;false;;;;;;
                                  -93437;3;1;false;false;127;0;85;;;
                                  -93440;1;0;false;false;;;;;;
                                  -93441;4;0;false;false;0;0;0;;;
                                  -93445;1;0;false;false;;;;;;
                                  -93446;1;0;false;false;0;0;0;;;
                                  -93447;1;0;false;false;;;;;;
                                  -93448;2;0;false;false;0;0;0;;;
                                  -93450;1;0;false;false;;;;;;
                                  -93451;1;0;false;false;0;0;0;;;
                                  -93452;1;0;false;false;;;;;;
                                  -93453;21;0;false;false;0;0;0;;;
                                  -93474;1;0;false;false;;;;;;
                                  -93475;1;0;false;false;0;0;0;;;
                                  -93476;1;0;false;false;;;;;;
                                  -93477;11;0;false;false;0;0;0;;;
                                  -93488;3;0;false;false;;;;;;
                                  -93491;3;1;false;false;127;0;85;;;
                                  -93494;1;0;false;false;;;;;;
                                  -93495;9;0;false;false;0;0;0;;;
                                  -93504;1;0;false;false;;;;;;
                                  -93505;1;0;false;false;0;0;0;;;
                                  -93506;1;0;false;false;;;;;;
                                  -93507;23;0;false;false;0;0;0;;;
                                  -93530;3;0;false;false;;;;;;
                                  -93533;3;1;false;false;127;0;85;;;
                                  -93536;1;0;false;false;;;;;;
                                  -93537;15;0;false;false;0;0;0;;;
                                  -93552;3;0;false;false;;;;;;
                                  -93555;3;1;false;false;127;0;85;;;
                                  -93558;1;0;false;false;;;;;;
                                  -93559;13;0;false;false;0;0;0;;;
                                  -93572;3;0;false;false;;;;;;
                                  -93575;7;1;false;false;127;0;85;;;
                                  -93582;1;0;false;false;;;;;;
                                  -93583;12;0;false;false;0;0;0;;;
                                  -93595;1;0;false;false;;;;;;
                                  -93596;1;0;false;false;0;0;0;;;
                                  -93597;1;0;false;false;;;;;;
                                  -93598;10;0;false;false;0;0;0;;;
                                  -93608;5;0;false;false;;;;;;
                                  -93613;20;0;false;false;0;0;0;;;
                                  -93633;1;0;false;false;;;;;;
                                  -93634;1;0;false;false;0;0;0;;;
                                  -93635;1;0;false;false;;;;;;
                                  -93636;4;1;false;false;127;0;85;;;
                                  -93640;1;0;false;false;0;0;0;;;
                                  -93641;3;0;false;false;;;;;;
                                  -93644;2;1;false;false;127;0;85;;;
                                  -93646;1;0;false;false;;;;;;
                                  -93647;5;0;false;false;0;0;0;;;
                                  -93652;1;0;false;false;;;;;;
                                  -93653;1;0;false;false;0;0;0;;;
                                  -93654;1;0;false;false;;;;;;
                                  -93655;9;0;false;false;0;0;0;;;
                                  -93664;1;0;false;false;;;;;;
                                  -93665;1;0;false;false;0;0;0;;;
                                  -93666;1;0;false;false;;;;;;
                                  -93667;2;0;false;false;0;0;0;;;
                                  -93669;1;0;false;false;;;;;;
                                  -93670;1;0;false;false;0;0;0;;;
                                  -93671;4;0;false;false;;;;;;
                                  -93675;4;0;false;false;0;0;0;;;
                                  -93679;1;0;false;false;;;;;;
                                  -93680;1;0;false;false;0;0;0;;;
                                  -93681;1;0;false;false;;;;;;
                                  -93682;9;0;false;false;0;0;0;;;
                                  -93691;1;0;false;false;;;;;;
                                  -93692;1;0;false;false;0;0;0;;;
                                  -93693;1;0;false;false;;;;;;
                                  -93694;2;0;false;false;0;0;0;;;
                                  -93696;3;0;false;false;;;;;;
                                  -93699;1;0;false;false;0;0;0;;;
                                  -93700;4;0;false;false;;;;;;
                                  -93704;67;0;false;false;63;127;95;;;
                                  -93771;1;0;false;false;;;;;;
                                  -93772;41;0;false;false;63;127;95;;;
                                  -93813;1;0;false;false;;;;;;
                                  -93814;2;1;false;false;127;0;85;;;
                                  -93816;1;0;false;false;;;;;;
                                  -93817;5;0;false;false;0;0;0;;;
                                  -93822;1;0;false;false;;;;;;
                                  -93823;1;0;false;false;0;0;0;;;
                                  -93824;1;0;false;false;;;;;;
                                  -93825;1;0;false;false;0;0;0;;;
                                  -93826;1;0;false;false;;;;;;
                                  -93827;2;0;false;false;0;0;0;;;
                                  -93829;1;0;false;false;;;;;;
                                  -93830;15;0;false;false;0;0;0;;;
                                  -93845;1;0;false;false;;;;;;
                                  -93846;2;0;false;false;0;0;0;;;
                                  -93848;1;0;false;false;;;;;;
                                  -93849;4;0;false;false;0;0;0;;;
                                  -93853;1;0;false;false;;;;;;
                                  -93854;1;0;false;false;0;0;0;;;
                                  -93855;1;0;false;false;;;;;;
                                  -93856;3;0;false;false;0;0;0;;;
                                  -93859;1;0;false;false;;;;;;
                                  -93860;1;0;false;false;0;0;0;;;
                                  -93861;4;0;false;false;;;;;;
                                  -93865;6;1;false;false;127;0;85;;;
                                  -93871;1;0;false;false;0;0;0;;;
                                  -93872;3;0;false;false;;;;;;
                                  -93875;1;0;false;false;0;0;0;;;
                                  -93876;3;0;false;false;;;;;;
                                  -93879;14;0;false;false;0;0;0;;;
                                  -93893;1;0;false;false;;;;;;
                                  -93894;1;0;false;false;0;0;0;;;
                                  -93895;1;0;false;false;;;;;;
                                  -93896;27;0;false;false;0;0;0;;;
                                  -93923;1;0;false;false;;;;;;
                                  -93924;6;0;false;false;0;0;0;;;
                                  -93930;6;0;false;false;;;;;;
                                  -93936;2;1;false;false;127;0;85;;;
                                  -93938;1;0;false;false;;;;;;
                                  -93939;18;0;false;false;0;0;0;;;
                                  -93957;1;0;false;false;;;;;;
                                  -93958;1;0;false;false;0;0;0;;;
                                  -93959;4;0;false;false;;;;;;
                                  -93963;69;0;false;false;63;127;95;;;
                                  -94032;2;0;false;false;;;;;;
                                  -94034;14;0;false;false;0;0;0;;;
                                  -94048;1;0;false;false;;;;;;
                                  -94049;1;0;false;false;0;0;0;;;
                                  -94050;1;0;false;false;;;;;;
                                  -94051;20;0;false;false;0;0;0;;;
                                  -94071;1;0;false;false;;;;;;
                                  -94072;15;0;false;false;0;0;0;;;
                                  -94087;1;0;false;false;;;;;;
                                  -94088;6;0;false;false;0;0;0;;;
                                  -94094;3;0;false;false;;;;;;
                                  -94097;1;0;false;false;0;0;0;;;
                                  -94098;3;0;false;false;;;;;;
                                  -94101;12;0;false;false;0;0;0;;;
                                  -94113;1;0;false;false;;;;;;
                                  -94114;1;0;false;false;0;0;0;;;
                                  -94115;1;0;false;false;;;;;;
                                  -94116;40;0;false;false;0;0;0;;;
                                  -94156;3;0;false;false;;;;;;
                                  -94159;59;0;false;false;63;127;95;;;
                                  -94218;1;0;false;false;;;;;;
                                  -94219;55;0;false;false;63;127;95;;;
                                  -94274;1;0;false;false;;;;;;
                                  -94275;46;0;false;false;63;127;95;;;
                                  -94321;1;0;false;false;;;;;;
                                  -94322;2;1;false;false;127;0;85;;;
                                  -94324;1;0;false;false;;;;;;
                                  -94325;2;0;false;false;0;0;0;;;
                                  -94327;1;0;false;false;;;;;;
                                  -94328;2;0;false;false;0;0;0;;;
                                  -94330;1;0;false;false;;;;;;
                                  -94331;1;0;false;false;0;0;0;;;
                                  -94332;1;0;false;false;;;;;;
                                  -94333;2;0;false;false;0;0;0;;;
                                  -94335;1;0;false;false;;;;;;
                                  -94336;1;0;false;false;0;0;0;;;
                                  -94337;1;0;false;false;;;;;;
                                  -94338;1;0;false;false;0;0;0;;;
                                  -94339;1;0;false;false;;;;;;
                                  -94340;22;0;false;false;0;0;0;;;
                                  -94362;1;0;false;false;;;;;;
                                  -94363;2;0;false;false;0;0;0;;;
                                  -94365;5;0;false;false;;;;;;
                                  -94370;2;0;false;false;0;0;0;;;
                                  -94372;1;0;false;false;;;;;;
                                  -94373;2;0;false;false;0;0;0;;;
                                  -94375;1;0;false;false;;;;;;
                                  -94376;1;0;false;false;0;0;0;;;
                                  -94377;1;0;false;false;;;;;;
                                  -94378;2;0;false;false;0;0;0;;;
                                  -94380;1;0;false;false;;;;;;
                                  -94381;1;0;false;false;0;0;0;;;
                                  -94382;1;0;false;false;;;;;;
                                  -94383;1;0;false;false;0;0;0;;;
                                  -94384;1;0;false;false;;;;;;
                                  -94385;21;0;false;false;0;0;0;;;
                                  -94406;1;0;false;false;;;;;;
                                  -94407;2;0;false;false;0;0;0;;;
                                  -94409;1;0;false;false;;;;;;
                                  -94410;8;0;false;false;0;0;0;;;
                                  -94418;1;0;false;false;;;;;;
                                  -94419;2;0;false;false;0;0;0;;;
                                  -94421;5;0;false;false;;;;;;
                                  -94426;12;0;false;false;0;0;0;;;
                                  -94438;1;0;false;false;;;;;;
                                  -94439;2;0;false;false;0;0;0;;;
                                  -94441;1;0;false;false;;;;;;
                                  -94442;38;0;false;false;0;0;0;;;
                                  -94480;1;0;false;false;;;;;;
                                  -94481;1;0;false;false;0;0;0;;;
                                  -94482;4;0;false;false;;;;;;
                                  -94486;2;1;false;false;127;0;85;;;
                                  -94488;1;0;false;false;;;;;;
                                  -94489;15;0;false;false;0;0;0;;;
                                  -94504;1;0;false;false;;;;;;
                                  -94505;2;0;false;false;0;0;0;;;
                                  -94507;1;0;false;false;;;;;;
                                  -94508;11;0;false;false;0;0;0;;;
                                  -94519;1;0;false;false;;;;;;
                                  -94520;2;0;false;false;0;0;0;;;
                                  -94522;1;0;false;false;;;;;;
                                  -94523;9;0;false;false;0;0;0;;;
                                  -94532;1;0;false;false;;;;;;
                                  -94533;2;0;false;false;0;0;0;;;
                                  -94535;1;0;false;false;;;;;;
                                  -94536;13;0;false;false;0;0;0;;;
                                  -94549;1;0;false;false;;;;;;
                                  -94550;1;0;false;false;0;0;0;;;
                                  -94551;5;0;false;false;;;;;;
                                  -94556;11;0;false;false;0;0;0;;;
                                  -94567;1;0;false;false;;;;;;
                                  -94568;1;0;false;false;0;0;0;;;
                                  -94569;1;0;false;false;;;;;;
                                  -94570;15;0;false;false;0;0;0;;;
                                  -94585;5;0;false;false;;;;;;
                                  -94590;2;1;false;false;127;0;85;;;
                                  -94592;1;0;false;false;;;;;;
                                  -94593;8;0;false;false;0;0;0;;;
                                  -94601;1;0;false;false;;;;;;
                                  -94602;1;0;false;false;0;0;0;;;
                                  -94603;6;0;false;false;;;;;;
                                  -94609;19;0;false;false;0;0;0;;;
                                  -94628;5;0;false;false;;;;;;
                                  -94633;1;0;false;false;0;0;0;;;
                                  -94634;5;0;false;false;;;;;;
                                  -94639;12;0;false;false;0;0;0;;;
                                  -94651;4;0;false;false;;;;;;
                                  -94655;1;0;false;false;0;0;0;;;
                                  -94656;3;0;false;false;;;;;;
                                  -94659;1;0;false;false;0;0;0;;;
                                  -94660;3;0;false;false;;;;;;
                                  -94663;2;1;false;false;127;0;85;;;
                                  -94665;1;0;false;false;;;;;;
                                  -94666;9;0;false;false;0;0;0;;;
                                  -94675;1;0;false;false;;;;;;
                                  -94676;1;0;false;false;0;0;0;;;
                                  -94677;4;0;false;false;;;;;;
                                  -94681;11;0;false;false;0;0;0;;;
                                  -94692;1;0;false;false;;;;;;
                                  -94693;1;0;false;false;0;0;0;;;
                                  -94694;1;0;false;false;;;;;;
                                  -94695;15;0;false;false;0;0;0;;;
                                  -94710;4;0;false;false;;;;;;
                                  -94714;15;0;false;false;0;0;0;;;
                                  -94729;4;1;false;false;127;0;85;;;
                                  -94733;2;0;false;false;0;0;0;;;
                                  -94735;3;0;false;false;;;;;;
                                  -94738;1;0;false;false;0;0;0;;;
                                  -94739;2;0;false;false;;;;;;
                                  -94741;1;0;false;false;0;0;0;;;
                                  -94742;2;0;false;false;;;;;;
                                  -94744;3;0;false;false;63;95;191;;;
                                  -94747;3;0;false;false;;;;;;
                                  -94750;1;0;false;false;63;95;191;;;
                                  -94751;1;0;false;false;;;;;;
                                  -94752;7;0;false;false;63;95;191;;;
                                  -94759;1;0;false;false;;;;;;
                                  -94760;3;0;false;false;63;95;191;;;
                                  -94763;1;0;false;false;;;;;;
                                  -94764;9;0;false;false;63;95;191;;;
                                  -94773;1;0;false;false;;;;;;
                                  -94774;5;0;false;false;63;95;191;;;
                                  -94779;1;0;false;false;;;;;;
                                  -94780;2;0;false;false;63;95;191;;;
                                  -94782;1;0;false;false;;;;;;
                                  -94783;3;0;false;false;63;95;191;;;
                                  -94786;1;0;false;false;;;;;;
                                  -94787;5;0;false;false;63;95;191;;;
                                  -94792;1;0;false;false;;;;;;
                                  -94793;8;0;false;false;63;95;191;;;
                                  -94801;3;0;false;false;;;;;;
                                  -94804;2;0;false;false;63;95;191;;;
                                  -94806;2;0;false;false;;;;;;
                                  -94808;4;1;false;false;127;0;85;;;
                                  -94812;1;0;false;false;;;;;;
                                  -94813;18;0;false;false;0;0;0;;;
                                  -94831;1;0;false;false;;;;;;
                                  -94832;1;0;false;false;0;0;0;;;
                                  -94833;3;0;false;false;;;;;;
                                  -94836;2;1;false;false;127;0;85;;;
                                  -94838;1;0;false;false;;;;;;
                                  -94839;12;0;false;false;0;0;0;;;
                                  -94851;1;0;false;false;;;;;;
                                  -94852;2;0;false;false;0;0;0;;;
                                  -94854;1;0;false;false;;;;;;
                                  -94855;11;0;false;false;0;0;0;;;
                                  -94866;1;0;false;false;;;;;;
                                  -94867;2;0;false;false;0;0;0;;;
                                  -94869;5;0;false;false;;;;;;
                                  -94874;12;0;false;false;0;0;0;;;
                                  -94886;1;0;false;false;;;;;;
                                  -94887;1;0;false;false;0;0;0;;;
                                  -94888;1;0;false;false;;;;;;
                                  -94889;11;0;false;false;0;0;0;;;
                                  -94900;1;0;false;false;;;;;;
                                  -94901;2;0;false;false;0;0;0;;;
                                  -94903;6;0;false;false;;;;;;
                                  -94909;11;0;false;false;0;0;0;;;
                                  -94920;1;0;false;false;;;;;;
                                  -94921;1;0;false;false;0;0;0;;;
                                  -94922;1;0;false;false;;;;;;
                                  -94923;11;0;false;false;0;0;0;;;
                                  -94934;1;0;false;false;;;;;;
                                  -94935;2;0;false;false;0;0;0;;;
                                  -94937;1;0;false;false;;;;;;
                                  -94938;15;0;false;false;0;0;0;;;
                                  -94953;1;0;false;false;;;;;;
                                  -94954;2;0;false;false;0;0;0;;;
                                  -94956;1;0;false;false;;;;;;
                                  -94957;13;0;false;false;0;0;0;;;
                                  -94970;1;0;false;false;;;;;;
                                  -94971;1;0;false;false;0;0;0;;;
                                  -94972;4;0;false;false;;;;;;
                                  -94976;32;0;false;false;0;0;0;;;
                                  -95008;3;0;false;false;;;;;;
                                  -95011;1;0;false;false;0;0;0;;;
                                  -95012;3;0;false;false;;;;;;
                                  -95015;4;1;false;false;127;0;85;;;
                                  -95019;1;0;false;false;;;;;;
                                  -95020;1;0;false;false;0;0;0;;;
                                  -95021;4;0;false;false;;;;;;
                                  -95025;28;0;false;false;0;0;0;;;
                                  -95053;3;0;false;false;;;;;;
                                  -95056;1;0;false;false;0;0;0;;;
                                  -95057;2;0;false;false;;;;;;
                                  -95059;1;0;false;false;0;0;0;;;
                                  -95060;2;0;false;false;;;;;;
                                  -95062;3;0;false;false;63;95;191;;;
                                  -95065;3;0;false;false;;;;;;
                                  -95068;1;0;false;false;63;95;191;;;
                                  -95069;1;0;false;false;;;;;;
                                  -95070;7;0;false;false;63;95;191;;;
                                  -95077;1;0;false;false;;;;;;
                                  -95078;3;0;false;false;63;95;191;;;
                                  -95081;1;0;false;false;;;;;;
                                  -95082;6;0;false;false;63;95;191;;;
                                  -95088;1;0;false;false;;;;;;
                                  -95089;2;0;false;false;63;95;191;;;
                                  -95091;1;0;false;false;;;;;;
                                  -95092;3;0;false;false;63;95;191;;;
                                  -95095;1;0;false;false;;;;;;
                                  -95096;4;0;false;false;63;95;191;;;
                                  -95100;1;0;false;false;;;;;;
                                  -95101;2;0;false;false;63;95;191;;;
                                  -95103;1;0;false;false;;;;;;
                                  -95104;3;0;false;false;63;95;191;;;
                                  -95107;1;0;false;false;;;;;;
                                  -95108;9;0;false;false;63;95;191;;;
                                  -95117;1;0;false;false;;;;;;
                                  -95118;7;0;false;false;63;95;191;;;
                                  -95125;4;0;false;false;;;;;;
                                  -95129;1;0;false;false;63;95;191;;;
                                  -95130;1;0;false;false;;;;;;
                                  -95131;2;0;false;false;63;95;191;;;
                                  -95133;1;0;false;false;;;;;;
                                  -95134;3;0;false;false;63;95;191;;;
                                  -95137;1;0;false;false;;;;;;
                                  -95138;7;0;false;false;63;95;191;;;
                                  -95145;1;0;false;false;;;;;;
                                  -95146;9;0;false;false;63;95;191;;;
                                  -95155;1;0;false;false;;;;;;
                                  -95156;7;0;false;false;63;95;191;;;
                                  -95163;1;0;false;false;;;;;;
                                  -95164;4;0;false;false;63;95;191;;;
                                  -95168;1;0;false;false;;;;;;
                                  -95169;4;0;false;false;63;95;191;;;
                                  -95173;1;0;false;false;;;;;;
                                  -95174;5;0;false;false;63;95;191;;;
                                  -95179;1;0;false;false;;;;;;
                                  -95180;2;0;false;false;63;95;191;;;
                                  -95182;1;0;false;false;;;;;;
                                  -95183;3;0;false;false;63;95;191;;;
                                  -95186;1;0;false;false;;;;;;
                                  -95187;5;0;false;false;63;95;191;;;
                                  -95192;4;0;false;false;;;;;;
                                  -95196;1;0;false;false;63;95;191;;;
                                  -95197;1;0;false;false;;;;;;
                                  -95198;6;0;false;false;63;95;191;;;
                                  -95204;1;0;false;false;;;;;;
                                  -95205;5;0;false;false;63;95;191;;;
                                  -95210;1;0;false;false;;;;;;
                                  -95211;2;0;false;false;63;95;191;;;
                                  -95213;1;0;false;false;;;;;;
                                  -95214;5;0;false;false;63;95;191;;;
                                  -95219;1;0;false;false;;;;;;
                                  -95220;2;0;false;false;63;95;191;;;
                                  -95222;1;0;false;false;;;;;;
                                  -95223;5;0;false;false;63;95;191;;;
                                  -95228;1;0;false;false;;;;;;
                                  -95229;2;0;false;false;63;95;191;;;
                                  -95231;1;0;false;false;;;;;;
                                  -95232;2;0;false;false;63;95;191;;;
                                  -95234;1;0;false;false;;;;;;
                                  -95235;4;0;false;false;63;95;191;;;
                                  -95239;1;0;false;false;;;;;;
                                  -95240;6;0;false;false;63;95;191;;;
                                  -95246;1;0;false;false;;;;;;
                                  -95247;2;0;false;false;63;95;191;;;
                                  -95249;1;0;false;false;;;;;;
                                  -95250;8;0;false;false;63;95;191;;;
                                  -95258;1;0;false;false;;;;;;
                                  -95259;2;0;false;false;63;95;191;;;
                                  -95261;4;0;false;false;;;;;;
                                  -95265;1;0;false;false;63;95;191;;;
                                  -95266;1;0;false;false;;;;;;
                                  -95267;3;0;false;false;63;95;191;;;
                                  -95270;1;0;false;false;127;127;159;;;
                                  -95271;4;0;false;false;63;95;191;;;
                                  -95275;1;0;false;false;;;;;;
                                  -95276;10;0;false;false;63;95;191;;;
                                  -95286;1;0;false;false;;;;;;
                                  -95287;3;0;false;false;63;95;191;;;
                                  -95290;1;0;false;false;;;;;;
                                  -95291;5;0;false;false;63;95;191;;;
                                  -95296;1;0;false;false;;;;;;
                                  -95297;6;0;false;false;63;95;191;;;
                                  -95303;1;0;false;false;;;;;;
                                  -95304;2;0;false;false;63;95;191;;;
                                  -95306;1;0;false;false;;;;;;
                                  -95307;3;0;false;false;63;95;191;;;
                                  -95310;1;0;false;false;;;;;;
                                  -95311;4;0;false;false;63;95;191;;;
                                  -95315;1;0;false;false;;;;;;
                                  -95316;10;0;false;false;63;95;191;;;
                                  -95326;1;0;false;false;;;;;;
                                  -95327;3;0;false;false;63;95;191;;;
                                  -95330;3;0;false;false;;;;;;
                                  -95333;1;0;false;false;63;95;191;;;
                                  -95334;1;0;false;false;;;;;;
                                  -95335;9;0;false;false;63;95;191;;;
                                  -95344;1;0;false;false;;;;;;
                                  -95345;2;0;false;false;63;95;191;;;
                                  -95347;1;0;false;false;;;;;;
                                  -95348;9;0;false;false;63;95;191;;;
                                  -95357;1;0;false;false;;;;;;
                                  -95358;2;0;false;false;63;95;191;;;
                                  -95360;1;0;false;false;;;;;;
                                  -95361;3;0;false;false;63;95;191;;;
                                  -95364;1;0;false;false;;;;;;
                                  -95365;7;0;false;false;63;95;191;;;
                                  -95372;1;0;false;false;;;;;;
                                  -95373;9;0;false;false;63;95;191;;;
                                  -95382;1;0;false;false;;;;;;
                                  -95383;7;0;false;false;63;95;191;;;
                                  -95390;1;0;false;false;;;;;;
                                  -95391;4;0;false;false;63;95;191;;;
                                  -95395;4;0;false;false;;;;;;
                                  -95399;1;0;false;false;63;95;191;;;
                                  -95400;1;0;false;false;;;;;;
                                  -95401;3;0;false;false;63;95;191;;;
                                  -95404;1;0;false;false;;;;;;
                                  -95405;5;0;false;false;63;95;191;;;
                                  -95410;1;0;false;false;;;;;;
                                  -95411;2;0;false;false;63;95;191;;;
                                  -95413;1;0;false;false;;;;;;
                                  -95414;4;0;false;false;63;95;191;;;
                                  -95418;1;0;false;false;;;;;;
                                  -95419;5;0;false;false;63;95;191;;;
                                  -95424;1;0;false;false;;;;;;
                                  -95425;3;0;false;false;63;95;191;;;
                                  -95428;1;0;false;false;;;;;;
                                  -95429;3;0;false;false;63;95;191;;;
                                  -95432;1;0;false;false;;;;;;
                                  -95433;6;0;false;false;63;95;191;;;
                                  -95439;1;0;false;false;;;;;;
                                  -95440;2;0;false;false;63;95;191;;;
                                  -95442;1;0;false;false;;;;;;
                                  -95443;3;0;false;false;63;95;191;;;
                                  -95446;1;0;false;false;;;;;;
                                  -95447;4;0;false;false;63;95;191;;;
                                  -95451;1;0;false;false;;;;;;
                                  -95452;9;0;false;false;63;95;191;;;
                                  -95461;4;0;false;false;;;;;;
                                  -95465;1;0;false;false;63;95;191;;;
                                  -95466;1;0;false;false;;;;;;
                                  -95467;3;0;false;false;63;95;191;;;
                                  -95470;1;0;false;false;;;;;;
                                  -95471;9;0;false;false;63;95;191;;;
                                  -95480;1;0;false;false;;;;;;
                                  -95481;2;0;false;false;63;95;191;;;
                                  -95483;1;0;false;false;;;;;;
                                  -95484;9;0;false;false;63;95;191;;;
                                  -95493;3;0;false;false;;;;;;
                                  -95496;1;0;false;false;63;95;191;;;
                                  -95497;4;0;false;false;;;;;;
                                  -95501;1;0;false;false;63;95;191;;;
                                  -95502;1;0;false;false;;;;;;
                                  -95503;7;1;false;false;127;159;191;;;
                                  -95510;1;0;false;false;63;95;191;;;
                                  -95511;1;0;false;false;;;;;;
                                  -95512;5;0;false;false;63;95;191;;;
                                  -95517;1;0;false;false;;;;;;
                                  -95518;1;0;false;false;63;95;191;;;
                                  -95519;1;0;false;false;;;;;;
                                  -95520;8;0;false;false;63;95;191;;;
                                  -95528;3;0;false;false;;;;;;
                                  -95531;1;0;false;false;63;95;191;;;
                                  -95532;1;0;false;false;;;;;;
                                  -95533;7;1;false;false;127;159;191;;;
                                  -95540;14;0;false;false;63;95;191;;;
                                  -95554;1;0;false;false;;;;;;
                                  -95555;5;0;false;false;63;95;191;;;
                                  -95560;1;0;false;false;;;;;;
                                  -95561;6;0;false;false;63;95;191;;;
                                  -95567;1;0;false;false;;;;;;
                                  -95568;2;0;false;false;63;95;191;;;
                                  -95570;1;0;false;false;;;;;;
                                  -95571;3;0;false;false;63;95;191;;;
                                  -95574;1;0;false;false;;;;;;
                                  -95575;5;0;false;false;63;95;191;;;
                                  -95580;1;0;false;false;;;;;;
                                  -95581;6;0;false;false;63;95;191;;;
                                  -95587;1;0;false;false;;;;;;
                                  -95588;8;0;false;false;63;95;191;;;
                                  -95596;3;0;false;false;;;;;;
                                  -95599;1;0;false;false;63;95;191;;;
                                  -95600;1;0;false;false;;;;;;
                                  -95601;7;1;false;false;127;159;191;;;
                                  -95608;4;0;false;false;63;95;191;;;
                                  -95612;1;0;false;false;;;;;;
                                  -95613;4;0;false;false;63;95;191;;;
                                  -95617;1;0;false;false;;;;;;
                                  -95618;5;0;false;false;63;95;191;;;
                                  -95623;1;0;false;false;;;;;;
                                  -95624;2;0;false;false;63;95;191;;;
                                  -95626;1;0;false;false;;;;;;
                                  -95627;3;0;false;false;63;95;191;;;
                                  -95630;1;0;false;false;;;;;;
                                  -95631;5;0;false;false;63;95;191;;;
                                  -95636;1;0;false;false;;;;;;
                                  -95637;6;0;false;false;63;95;191;;;
                                  -95643;1;0;false;false;;;;;;
                                  -95644;8;0;false;false;63;95;191;;;
                                  -95652;3;0;false;false;;;;;;
                                  -95655;2;0;false;false;63;95;191;;;
                                  -95657;2;0;false;false;;;;;;
                                  -95659;3;1;false;false;127;0;85;;;
                                  -95662;1;0;false;false;;;;;;
                                  -95663;18;0;false;false;0;0;0;;;
                                  -95681;3;1;false;false;127;0;85;;;
                                  -95684;1;0;false;false;;;;;;
                                  -95685;2;0;false;false;0;0;0;;;
                                  -95687;1;0;false;false;;;;;;
                                  -95688;3;1;false;false;127;0;85;;;
                                  -95691;1;0;false;false;;;;;;
                                  -95692;15;0;false;false;0;0;0;;;
                                  -95707;1;0;false;false;;;;;;
                                  -95708;3;1;false;false;127;0;85;;;
                                  -95711;1;0;false;false;;;;;;
                                  -95712;5;0;false;false;0;0;0;;;
                                  -95717;1;0;false;false;;;;;;
                                  -95718;1;0;false;false;0;0;0;;;
                                  -95719;3;0;false;false;;;;;;
                                  -95722;3;1;false;false;127;0;85;;;
                                  -95725;1;0;false;false;;;;;;
                                  -95726;11;0;false;false;0;0;0;;;
                                  -95737;5;0;false;false;;;;;;
                                  -95742;66;0;false;false;63;127;95;;;
                                  -95808;1;0;false;false;;;;;;
                                  -95809;76;0;false;false;63;127;95;;;
                                  -95885;1;0;false;false;;;;;;
                                  -95886;74;0;false;false;63;127;95;;;
                                  -95960;1;0;false;false;;;;;;
                                  -95961;50;0;false;false;63;127;95;;;
                                  -96011;2;0;false;false;;;;;;
                                  -96013;2;1;false;false;127;0;85;;;
                                  -96015;1;0;false;false;;;;;;
                                  -96016;15;0;false;false;0;0;0;;;
                                  -96031;1;0;false;false;;;;;;
                                  -96032;1;0;false;false;0;0;0;;;
                                  -96033;1;0;false;false;;;;;;
                                  -96034;15;0;false;false;0;0;0;;;
                                  -96049;1;0;false;false;;;;;;
                                  -96050;2;0;false;false;0;0;0;;;
                                  -96052;1;0;false;false;;;;;;
                                  -96053;15;0;false;false;0;0;0;;;
                                  -96068;1;0;false;false;;;;;;
                                  -96069;2;0;false;false;0;0;0;;;
                                  -96071;1;0;false;false;;;;;;
                                  -96072;12;0;false;false;0;0;0;;;
                                  -96084;1;0;false;false;;;;;;
                                  -96085;1;0;false;false;0;0;0;;;
                                  -96086;4;0;false;false;;;;;;
                                  -96090;15;0;false;false;0;0;0;;;
                                  -96105;1;0;false;false;;;;;;
                                  -96106;1;0;false;false;0;0;0;;;
                                  -96107;1;0;false;false;;;;;;
                                  -96108;23;0;false;false;0;0;0;;;
                                  -96131;3;0;false;false;;;;;;
                                  -96134;1;0;false;false;0;0;0;;;
                                  -96135;3;0;false;false;;;;;;
                                  -96138;4;1;false;false;127;0;85;;;
                                  -96142;3;0;false;false;;;;;;
                                  -96145;2;1;false;false;127;0;85;;;
                                  -96147;1;0;false;false;;;;;;
                                  -96148;15;0;false;false;0;0;0;;;
                                  -96163;1;0;false;false;;;;;;
                                  -96164;1;0;false;false;0;0;0;;;
                                  -96165;1;0;false;false;;;;;;
                                  -96166;15;0;false;false;0;0;0;;;
                                  -96181;1;0;false;false;;;;;;
                                  -96182;2;0;false;false;0;0;0;;;
                                  -96184;1;0;false;false;;;;;;
                                  -96185;15;0;false;false;0;0;0;;;
                                  -96200;1;0;false;false;;;;;;
                                  -96201;2;0;false;false;0;0;0;;;
                                  -96203;1;0;false;false;;;;;;
                                  -96204;12;0;false;false;0;0;0;;;
                                  -96216;1;0;false;false;;;;;;
                                  -96217;1;0;false;false;0;0;0;;;
                                  -96218;4;0;false;false;;;;;;
                                  -96222;15;0;false;false;0;0;0;;;
                                  -96237;1;0;false;false;;;;;;
                                  -96238;1;0;false;false;0;0;0;;;
                                  -96239;1;0;false;false;;;;;;
                                  -96240;23;0;false;false;0;0;0;;;
                                  -96263;3;0;false;false;;;;;;
                                  -96266;1;0;false;false;0;0;0;;;
                                  -96267;3;0;false;false;;;;;;
                                  -96270;2;1;false;false;127;0;85;;;
                                  -96272;1;0;false;false;;;;;;
                                  -96273;2;0;false;false;0;0;0;;;
                                  -96275;1;0;false;false;;;;;;
                                  -96276;2;0;false;false;0;0;0;;;
                                  -96278;1;0;false;false;;;;;;
                                  -96279;1;0;false;false;0;0;0;;;
                                  -96280;1;0;false;false;;;;;;
                                  -96281;2;0;false;false;0;0;0;;;
                                  -96283;1;0;false;false;;;;;;
                                  -96284;1;0;false;false;0;0;0;;;
                                  -96285;1;0;false;false;;;;;;
                                  -96286;1;0;false;false;0;0;0;;;
                                  -96287;1;0;false;false;;;;;;
                                  -96288;22;0;false;false;0;0;0;;;
                                  -96310;1;0;false;false;;;;;;
                                  -96311;1;0;false;false;0;0;0;;;
                                  -96312;4;0;false;false;;;;;;
                                  -96316;32;0;false;false;63;127;95;;;
                                  -96348;2;0;false;false;;;;;;
                                  -96350;2;1;false;false;127;0;85;;;
                                  -96352;1;0;false;false;;;;;;
                                  -96353;12;0;false;false;0;0;0;;;
                                  -96365;1;0;false;false;;;;;;
                                  -96366;2;0;false;false;0;0;0;;;
                                  -96368;1;0;false;false;;;;;;
                                  -96369;12;0;false;false;0;0;0;;;
                                  -96381;1;0;false;false;;;;;;
                                  -96382;1;0;false;false;0;0;0;;;
                                  -96383;5;0;false;false;;;;;;
                                  -96388;10;0;false;false;0;0;0;;;
                                  -96398;1;0;false;false;;;;;;
                                  -96399;1;0;false;false;0;0;0;;;
                                  -96400;1;0;false;false;;;;;;
                                  -96401;29;0;false;false;0;0;0;;;
                                  -96430;4;0;false;false;;;;;;
                                  -96434;1;0;false;false;0;0;0;;;
                                  -96435;4;0;false;false;;;;;;
                                  -96439;4;1;false;false;127;0;85;;;
                                  -96443;1;0;false;false;;;;;;
                                  -96444;1;0;false;false;0;0;0;;;
                                  -96445;5;0;false;false;;;;;;
                                  -96450;10;0;false;false;0;0;0;;;
                                  -96460;1;0;false;false;;;;;;
                                  -96461;1;0;false;false;0;0;0;;;
                                  -96462;1;0;false;false;;;;;;
                                  -96463;35;0;false;false;0;0;0;;;
                                  -96498;4;0;false;false;;;;;;
                                  -96502;1;0;false;false;0;0;0;;;
                                  -96503;4;0;false;false;;;;;;
                                  -96507;59;0;false;false;63;127;95;;;
                                  -96566;2;0;false;false;;;;;;
                                  -96568;2;1;false;false;127;0;85;;;
                                  -96570;1;0;false;false;;;;;;
                                  -96571;36;0;false;false;0;0;0;;;
                                  -96607;1;0;false;false;;;;;;
                                  -96608;2;0;false;false;0;0;0;;;
                                  -96610;1;0;false;false;;;;;;
                                  -96611;5;0;false;false;0;0;0;;;
                                  -96616;1;0;false;false;;;;;;
                                  -96617;1;0;false;false;0;0;0;;;
                                  -96618;5;0;false;false;;;;;;
                                  -96623;14;0;false;false;0;0;0;;;
                                  -96637;1;0;false;false;;;;;;
                                  -96638;1;0;false;false;0;0;0;;;
                                  -96639;1;0;false;false;;;;;;
                                  -96640;11;0;false;false;0;0;0;;;
                                  -96651;4;0;false;false;;;;;;
                                  -96655;1;0;false;false;0;0;0;;;
                                  -96656;3;0;false;false;;;;;;
                                  -96659;1;0;false;false;0;0;0;;;
                                  -96660;3;0;false;false;;;;;;
                                  -96663;6;1;false;false;127;0;85;;;
                                  -96669;1;0;false;false;;;;;;
                                  -96670;15;0;false;false;0;0;0;;;
                                  -96685;2;0;false;false;;;;;;
                                  -96687;1;0;false;false;0;0;0;;;
                                  -96688;2;0;false;false;;;;;;
                                  -96690;3;0;false;false;63;95;191;;;
                                  -96693;3;0;false;false;;;;;;
                                  -96696;1;0;false;false;63;95;191;;;
                                  -96697;1;0;false;false;;;;;;
                                  -96698;7;0;false;false;63;95;191;;;
                                  -96705;1;0;false;false;;;;;;
                                  -96706;3;0;false;false;63;95;191;;;
                                  -96709;1;0;false;false;;;;;;
                                  -96710;4;0;false;false;63;95;191;;;
                                  -96714;1;0;false;false;;;;;;
                                  -96715;4;0;false;false;63;95;191;;;
                                  -96719;1;0;false;false;;;;;;
                                  -96720;2;0;false;false;63;95;191;;;
                                  -96722;1;0;false;false;;;;;;
                                  -96723;4;0;false;false;63;95;191;;;
                                  -96727;1;0;false;false;;;;;;
                                  -96728;3;0;false;false;63;95;191;;;
                                  -96731;1;0;false;false;;;;;;
                                  -96732;4;0;false;false;63;95;191;;;
                                  -96736;1;0;false;false;;;;;;
                                  -96737;4;0;false;false;63;95;191;;;
                                  -96741;1;0;false;false;;;;;;
                                  -96742;10;0;false;false;63;95;191;;;
                                  -96752;1;0;false;false;;;;;;
                                  -96753;2;0;false;false;63;95;191;;;
                                  -96755;1;0;false;false;;;;;;
                                  -96756;6;0;false;false;63;95;191;;;
                                  -96762;3;0;false;false;;;;;;
                                  -96765;1;0;false;false;63;95;191;;;
                                  -96766;1;0;false;false;;;;;;
                                  -96767;2;0;false;false;63;95;191;;;
                                  -96769;1;0;false;false;;;;;;
                                  -96770;3;0;false;false;63;95;191;;;
                                  -96773;1;0;false;false;;;;;;
                                  -96774;7;0;false;false;63;95;191;;;
                                  -96781;1;0;false;false;;;;;;
                                  -96782;4;0;false;false;63;95;191;;;
                                  -96786;1;0;false;false;;;;;;
                                  -96787;7;0;false;false;63;95;191;;;
                                  -96794;1;0;false;false;;;;;;
                                  -96795;3;0;false;false;63;95;191;;;
                                  -96798;1;0;false;false;;;;;;
                                  -96799;5;0;false;false;63;95;191;;;
                                  -96804;1;0;false;false;;;;;;
                                  -96805;7;0;false;false;63;95;191;;;
                                  -96812;1;0;false;false;;;;;;
                                  -96813;3;0;false;false;63;95;191;;;
                                  -96816;1;0;false;false;;;;;;
                                  -96817;5;0;false;false;63;95;191;;;
                                  -96822;3;0;false;false;;;;;;
                                  -96825;1;0;false;false;63;95;191;;;
                                  -96826;1;0;false;false;;;;;;
                                  -96827;3;0;false;false;63;95;191;;;
                                  -96830;1;0;false;false;;;;;;
                                  -96831;5;0;false;false;63;95;191;;;
                                  -96836;1;0;false;false;;;;;;
                                  -96837;2;0;false;false;63;95;191;;;
                                  -96839;1;0;false;false;;;;;;
                                  -96840;8;0;false;false;63;95;191;;;
                                  -96848;1;0;false;false;;;;;;
                                  -96849;3;0;false;false;63;95;191;;;
                                  -96852;1;0;false;false;;;;;;
                                  -96853;4;0;false;false;63;95;191;;;
                                  -96857;1;0;false;false;;;;;;
                                  -96858;6;0;false;false;63;95;191;;;
                                  -96864;1;0;false;false;;;;;;
                                  -96865;2;0;false;false;63;95;191;;;
                                  -96867;1;0;false;false;;;;;;
                                  -96868;5;0;false;false;63;95;191;;;
                                  -96873;1;0;false;false;;;;;;
                                  -96874;2;0;false;false;63;95;191;;;
                                  -96876;1;0;false;false;;;;;;
                                  -96877;4;0;false;false;63;95;191;;;
                                  -96881;1;0;false;false;;;;;;
                                  -96882;3;0;false;false;63;95;191;;;
                                  -96885;1;0;false;false;;;;;;
                                  -96886;8;0;false;false;63;95;191;;;
                                  -96894;4;0;false;false;;;;;;
                                  -96898;1;0;false;false;63;95;191;;;
                                  -96899;1;0;false;false;;;;;;
                                  -96900;8;0;false;false;63;95;191;;;
                                  -96908;1;0;false;false;;;;;;
                                  -96909;2;0;false;false;63;95;191;;;
                                  -96911;1;0;false;false;;;;;;
                                  -96912;3;0;false;false;63;95;191;;;
                                  -96915;1;0;false;false;;;;;;
                                  -96916;3;0;false;false;63;95;191;;;
                                  -96919;1;0;false;false;;;;;;
                                  -96920;4;0;false;false;63;95;191;;;
                                  -96924;1;0;false;false;;;;;;
                                  -96925;7;0;false;false;63;95;191;;;
                                  -96932;1;0;false;false;;;;;;
                                  -96933;3;0;false;false;63;95;191;;;
                                  -96936;1;0;false;false;;;;;;
                                  -96937;5;0;false;false;63;95;191;;;
                                  -96942;1;0;false;false;;;;;;
                                  -96943;3;0;false;false;63;95;191;;;
                                  -96946;1;0;false;false;;;;;;
                                  -96947;9;0;false;false;63;95;191;;;
                                  -96956;1;0;false;false;;;;;;
                                  -96957;2;0;false;false;63;95;191;;;
                                  -96959;1;0;false;false;;;;;;
                                  -96960;3;0;false;false;63;95;191;;;
                                  -96963;1;0;false;false;;;;;;
                                  -96964;3;0;false;false;63;95;191;;;
                                  -96967;4;0;false;false;;;;;;
                                  -96971;1;0;false;false;63;95;191;;;
                                  -96972;1;0;false;false;;;;;;
                                  -96973;2;0;false;false;63;95;191;;;
                                  -96975;1;0;false;false;;;;;;
                                  -96976;3;0;false;false;63;95;191;;;
                                  -96979;1;0;false;false;;;;;;
                                  -96980;4;0;false;false;63;95;191;;;
                                  -96984;1;0;false;false;;;;;;
                                  -96985;5;0;false;false;63;95;191;;;
                                  -96990;1;0;false;false;;;;;;
                                  -96991;1;0;false;false;63;95;191;;;
                                  -96992;1;0;false;false;;;;;;
                                  -96993;4;0;false;false;63;95;191;;;
                                  -96997;1;0;false;false;;;;;;
                                  -96998;4;0;false;false;63;95;191;;;
                                  -97002;1;0;false;false;;;;;;
                                  -97003;6;0;false;false;63;95;191;;;
                                  -97009;1;0;false;false;;;;;;
                                  -97010;2;0;false;false;63;95;191;;;
                                  -97012;1;0;false;false;;;;;;
                                  -97013;3;0;false;false;63;95;191;;;
                                  -97016;1;0;false;false;;;;;;
                                  -97017;9;0;false;false;63;95;191;;;
                                  -97026;1;0;false;false;;;;;;
                                  -97027;2;0;false;false;63;95;191;;;
                                  -97029;1;0;false;false;;;;;;
                                  -97030;4;0;false;false;63;95;191;;;
                                  -97034;1;0;false;false;;;;;;
                                  -97035;4;0;false;false;63;95;191;;;
                                  -97039;4;0;false;false;;;;;;
                                  -97043;1;0;false;false;63;95;191;;;
                                  -97044;1;0;false;false;;;;;;
                                  -97045;3;0;false;false;63;95;191;;;
                                  -97048;1;0;false;false;;;;;;
                                  -97049;5;0;false;false;63;95;191;;;
                                  -97054;1;0;false;false;;;;;;
                                  -97055;2;0;false;false;63;95;191;;;
                                  -97057;1;0;false;false;;;;;;
                                  -97058;5;0;false;false;63;95;191;;;
                                  -97063;1;0;false;false;;;;;;
                                  -97064;5;0;false;false;63;95;191;;;
                                  -97069;1;0;false;false;;;;;;
                                  -97070;3;0;false;false;63;95;191;;;
                                  -97073;1;0;false;false;;;;;;
                                  -97074;4;0;false;false;63;95;191;;;
                                  -97078;1;0;false;false;;;;;;
                                  -97079;10;0;false;false;63;95;191;;;
                                  -97089;3;0;false;false;;;;;;
                                  -97092;1;0;false;false;63;95;191;;;
                                  -97093;1;0;false;false;;;;;;
                                  -97094;3;0;false;false;127;127;159;;;
                                  -97097;3;0;false;false;;;;;;
                                  -97100;1;0;false;false;63;95;191;;;
                                  -97101;3;0;false;false;;;;;;
                                  -97104;1;0;false;false;63;95;191;;;
                                  -97105;1;0;false;false;;;;;;
                                  -97106;7;1;false;false;127;159;191;;;
                                  -97113;6;0;false;false;63;95;191;;;
                                  -97119;1;0;false;false;;;;;;
                                  -97120;7;0;false;false;63;95;191;;;
                                  -97127;1;0;false;false;;;;;;
                                  -97128;2;0;false;false;63;95;191;;;
                                  -97130;1;0;false;false;;;;;;
                                  -97131;3;0;false;false;63;95;191;;;
                                  -97134;1;0;false;false;;;;;;
                                  -97135;2;0;false;false;63;95;191;;;
                                  -97137;1;0;false;false;;;;;;
                                  -97138;6;0;false;false;63;95;191;;;
                                  -97144;1;0;false;false;;;;;;
                                  -97145;3;0;false;false;63;95;191;;;
                                  -97148;1;0;false;false;;;;;;
                                  -97149;4;0;false;false;63;95;191;;;
                                  -97153;3;0;false;false;;;;;;
                                  -97156;2;0;false;false;63;95;191;;;
                                  -97158;2;0;false;false;;;;;;
                                  -97160;4;1;false;false;127;0;85;;;
                                  -97164;1;0;false;false;;;;;;
                                  -97165;11;0;false;false;0;0;0;;;
                                  -97176;7;1;false;false;127;0;85;;;
                                  -97183;1;0;false;false;;;;;;
                                  -97184;7;0;false;false;0;0;0;;;
                                  -97191;1;0;false;false;;;;;;
                                  -97192;3;1;false;false;127;0;85;;;
                                  -97195;1;0;false;false;;;;;;
                                  -97196;6;0;false;false;0;0;0;;;
                                  -97202;1;0;false;false;;;;;;
                                  -97203;1;0;false;false;0;0;0;;;
                                  -97204;3;0;false;false;;;;;;
                                  -97207;3;1;false;false;127;0;85;;;
                                  -97210;1;0;false;false;;;;;;
                                  -97211;9;0;false;false;0;0;0;;;
                                  -97220;1;0;false;false;;;;;;
                                  -97221;1;0;false;false;0;0;0;;;
                                  -97222;1;0;false;false;;;;;;
                                  -97223;23;0;false;false;0;0;0;;;
                                  -97246;3;0;false;false;;;;;;
                                  -97249;3;1;false;false;127;0;85;;;
                                  -97252;1;0;false;false;;;;;;
                                  -97253;10;0;false;false;0;0;0;;;
                                  -97263;1;0;false;false;;;;;;
                                  -97264;1;0;false;false;0;0;0;;;
                                  -97265;1;0;false;false;;;;;;
                                  -97266;8;0;false;false;0;0;0;;;
                                  -97274;3;0;false;false;;;;;;
                                  -97277;3;1;false;false;127;0;85;;;
                                  -97280;1;0;false;false;;;;;;
                                  -97281;16;0;false;false;0;0;0;;;
                                  -97297;1;0;false;false;;;;;;
                                  -97298;1;0;false;false;0;0;0;;;
                                  -97299;1;0;false;false;;;;;;
                                  -97300;23;0;false;false;0;0;0;;;
                                  -97323;3;0;false;false;;;;;;
                                  -97326;3;1;false;false;127;0;85;;;
                                  -97329;1;0;false;false;;;;;;
                                  -97330;10;0;false;false;0;0;0;;;
                                  -97340;6;0;false;false;;;;;;
                                  -97346;50;0;false;false;63;127;95;;;
                                  -97396;1;0;false;false;;;;;;
                                  -97397;2;1;false;false;127;0;85;;;
                                  -97399;1;0;false;false;;;;;;
                                  -97400;16;0;false;false;0;0;0;;;
                                  -97416;1;0;false;false;;;;;;
                                  -97417;1;0;false;false;0;0;0;;;
                                  -97418;4;0;false;false;;;;;;
                                  -97422;6;1;false;false;127;0;85;;;
                                  -97428;1;0;false;false;0;0;0;;;
                                  -97429;3;0;false;false;;;;;;
                                  -97432;1;0;false;false;0;0;0;;;
                                  -97433;3;0;false;false;;;;;;
                                  -97436;9;0;false;false;0;0;0;;;
                                  -97445;1;0;false;false;;;;;;
                                  -97446;1;0;false;false;0;0;0;;;
                                  -97447;1;0;false;false;;;;;;
                                  -97448;15;0;false;false;0;0;0;;;
                                  -97463;3;0;false;false;;;;;;
                                  -97466;2;1;false;false;127;0;85;;;
                                  -97468;1;0;false;false;;;;;;
                                  -97469;10;0;false;false;0;0;0;;;
                                  -97479;1;0;false;false;;;;;;
                                  -97480;1;0;false;false;0;0;0;;;
                                  -97481;1;0;false;false;;;;;;
                                  -97482;9;0;false;false;0;0;0;;;
                                  -97491;1;0;false;false;;;;;;
                                  -97492;1;0;false;false;0;0;0;;;
                                  -97493;1;0;false;false;;;;;;
                                  -97494;2;0;false;false;0;0;0;;;
                                  -97496;1;0;false;false;;;;;;
                                  -97497;1;0;false;false;0;0;0;;;
                                  -97498;4;0;false;false;;;;;;
                                  -97502;3;1;false;false;127;0;85;;;
                                  -97505;1;0;false;false;;;;;;
                                  -97506;15;0;false;false;0;0;0;;;
                                  -97521;1;0;false;false;;;;;;
                                  -97522;1;0;false;false;0;0;0;;;
                                  -97523;1;0;false;false;;;;;;
                                  -97524;9;0;false;false;0;0;0;;;
                                  -97533;1;0;false;false;;;;;;
                                  -97534;1;0;false;false;0;0;0;;;
                                  -97535;1;0;false;false;;;;;;
                                  -97536;23;0;false;false;0;0;0;;;
                                  -97559;4;0;false;false;;;;;;
                                  -97563;3;1;false;false;127;0;85;;;
                                  -97566;1;0;false;false;;;;;;
                                  -97567;8;0;false;false;0;0;0;;;
                                  -97575;1;0;false;false;;;;;;
                                  -97576;1;0;false;false;0;0;0;;;
                                  -97577;1;0;false;false;;;;;;
                                  -97578;23;0;false;false;0;0;0;;;
                                  -97601;4;0;false;false;;;;;;
                                  -97605;3;1;false;false;127;0;85;;;
                                  -97608;1;0;false;false;;;;;;
                                  -97609;11;0;false;false;0;0;0;;;
                                  -97620;1;0;false;false;;;;;;
                                  -97621;1;0;false;false;0;0;0;;;
                                  -97622;1;0;false;false;;;;;;
                                  -97623;18;0;false;false;0;0;0;;;
                                  -97641;1;0;false;false;;;;;;
                                  -97642;1;0;false;false;0;0;0;;;
                                  -97643;1;0;false;false;;;;;;
                                  -97644;9;0;false;false;0;0;0;;;
                                  -97653;1;0;false;false;;;;;;
                                  -97654;1;0;false;false;0;0;0;;;
                                  -97655;1;0;false;false;;;;;;
                                  -97656;2;0;false;false;0;0;0;;;
                                  -97658;1;0;false;false;;;;;;
                                  -97659;7;0;false;false;0;0;0;;;
                                  -97666;4;0;false;false;;;;;;
                                  -97670;3;1;false;false;127;0;85;;;
                                  -97673;1;0;false;false;;;;;;
                                  -97674;13;0;false;false;0;0;0;;;
                                  -97687;8;0;false;false;;;;;;
                                  -97695;65;0;false;false;63;127;95;;;
                                  -97760;2;0;false;false;;;;;;
                                  -97762;38;0;false;false;63;127;95;;;
                                  -97800;2;0;false;false;;;;;;
                                  -97802;11;0;false;false;0;0;0;;;
                                  -97813;1;0;false;false;;;;;;
                                  -97814;1;0;false;false;0;0;0;;;
                                  -97815;1;0;false;false;;;;;;
                                  -97816;11;0;false;false;0;0;0;;;
                                  -97827;1;0;false;false;;;;;;
                                  -97828;13;0;false;false;0;0;0;;;
                                  -97841;4;0;false;false;;;;;;
                                  -97845;9;0;false;false;0;0;0;;;
                                  -97854;1;0;false;false;;;;;;
                                  -97855;2;0;false;false;0;0;0;;;
                                  -97857;1;0;false;false;;;;;;
                                  -97858;12;0;false;false;0;0;0;;;
                                  -97870;4;0;false;false;;;;;;
                                  -97874;11;0;false;false;0;0;0;;;
                                  -97885;1;0;false;false;;;;;;
                                  -97886;1;0;false;false;0;0;0;;;
                                  -97887;1;0;false;false;;;;;;
                                  -97888;33;0;false;false;0;0;0;;;
                                  -97921;1;0;false;false;;;;;;
                                  -97922;11;0;false;false;0;0;0;;;
                                  -97933;5;0;false;false;;;;;;
                                  -97938;2;1;false;false;127;0;85;;;
                                  -97940;1;0;false;false;;;;;;
                                  -97941;8;0;false;false;0;0;0;;;
                                  -97949;1;0;false;false;;;;;;
                                  -97950;1;0;false;false;0;0;0;;;
                                  -97951;5;0;false;false;;;;;;
                                  -97956;28;0;false;false;0;0;0;;;
                                  -97984;4;0;false;false;;;;;;
                                  -97988;1;0;false;false;0;0;0;;;
                                  -97989;4;0;false;false;;;;;;
                                  -97993;42;0;false;false;63;127;95;;;
                                  -98035;2;0;false;false;;;;;;
                                  -98037;12;0;false;false;0;0;0;;;
                                  -98049;1;0;false;false;;;;;;
                                  -98050;1;0;false;false;0;0;0;;;
                                  -98051;1;0;false;false;;;;;;
                                  -98052;20;0;false;false;0;0;0;;;
                                  -98072;1;0;false;false;;;;;;
                                  -98073;1;0;false;false;0;0;0;;;
                                  -98074;1;0;false;false;;;;;;
                                  -98075;11;0;false;false;0;0;0;;;
                                  -98086;1;0;false;false;;;;;;
                                  -98087;1;0;false;false;0;0;0;;;
                                  -98088;1;0;false;false;;;;;;
                                  -98089;23;0;false;false;0;0;0;;;
                                  -98112;4;0;false;false;;;;;;
                                  -98116;2;1;false;false;127;0;85;;;
                                  -98118;1;0;false;false;;;;;;
                                  -98119;13;0;false;false;0;0;0;;;
                                  -98132;1;0;false;false;;;;;;
                                  -98133;1;0;false;false;0;0;0;;;
                                  -98134;1;0;false;false;;;;;;
                                  -98135;8;0;false;false;0;0;0;;;
                                  -98143;1;0;false;false;;;;;;
                                  -98144;1;0;false;false;0;0;0;;;
                                  -98145;1;0;false;false;;;;;;
                                  -98146;16;0;false;false;0;0;0;;;
                                  -98162;1;0;false;false;;;;;;
                                  -98163;1;0;false;false;0;0;0;;;
                                  -98164;5;0;false;false;;;;;;
                                  -98169;12;0;false;false;0;0;0;;;
                                  -98181;1;0;false;false;;;;;;
                                  -98182;1;0;false;false;0;0;0;;;
                                  -98183;1;0;false;false;;;;;;
                                  -98184;15;0;false;false;0;0;0;;;
                                  -98199;1;0;false;false;;;;;;
                                  -98200;1;0;false;false;0;0;0;;;
                                  -98201;1;0;false;false;;;;;;
                                  -98202;9;0;false;false;0;0;0;;;
                                  -98211;4;0;false;false;;;;;;
                                  -98215;1;0;false;false;0;0;0;;;
                                  -98216;4;0;false;false;;;;;;
                                  -98220;2;1;false;false;127;0;85;;;
                                  -98222;1;0;false;false;;;;;;
                                  -98223;13;0;false;false;0;0;0;;;
                                  -98236;1;0;false;false;;;;;;
                                  -98237;1;0;false;false;0;0;0;;;
                                  -98238;1;0;false;false;;;;;;
                                  -98239;21;0;false;false;0;0;0;;;
                                  -98260;1;0;false;false;;;;;;
                                  -98261;1;0;false;false;0;0;0;;;
                                  -98262;7;0;false;false;;;;;;
                                  -98269;37;0;false;false;0;0;0;;;
                                  -98306;1;0;false;false;;;;;;
                                  -98307;4;1;false;false;127;0;85;;;
                                  -98311;2;0;false;false;0;0;0;;;
                                  -98313;4;0;false;false;;;;;;
                                  -98317;1;0;false;false;0;0;0;;;
                                  -98318;3;0;false;false;;;;;;
                                  -98321;1;0;false;false;0;0;0;;;
                                  -98322;3;0;false;false;;;;;;
                                  -98325;66;0;false;false;63;127;95;;;
                                  -98391;1;0;false;false;;;;;;
                                  -98392;69;0;false;false;63;127;95;;;
                                  -98461;1;0;false;false;;;;;;
                                  -98462;21;0;false;false;0;0;0;;;
                                  -98483;3;0;false;false;;;;;;
                                  -98486;51;0;false;false;63;127;95;;;
                                  -98537;1;0;false;false;;;;;;
                                  -98538;3;1;false;false;127;0;85;;;
                                  -98541;1;0;false;false;;;;;;
                                  -98542;13;0;false;false;0;0;0;;;
                                  -98555;1;0;false;false;;;;;;
                                  -98556;1;0;false;false;0;0;0;;;
                                  -98557;1;0;false;false;;;;;;
                                  -98558;16;0;false;false;0;0;0;;;
                                  -98574;1;0;false;false;;;;;;
                                  -98575;1;0;false;false;0;0;0;;;
                                  -98576;1;0;false;false;;;;;;
                                  -98577;23;0;false;false;0;0;0;;;
                                  -98600;3;0;false;false;;;;;;
                                  -98603;7;0;false;false;0;0;0;;;
                                  -98610;1;0;false;false;;;;;;
                                  -98611;1;0;false;false;0;0;0;;;
                                  -98612;1;0;false;false;;;;;;
                                  -98613;10;0;false;false;0;0;0;;;
                                  -98623;1;0;false;false;;;;;;
                                  -98624;1;0;false;false;0;0;0;;;
                                  -98625;1;0;false;false;;;;;;
                                  -98626;14;0;false;false;0;0;0;;;
                                  -98640;2;0;false;false;;;;;;
                                  -98642;1;0;false;false;0;0;0;;;
                                  -98643;2;0;false;false;;;;;;
                                  -98645;3;0;false;false;63;95;191;;;
                                  -98648;3;0;false;false;;;;;;
                                  -98651;1;0;false;false;63;95;191;;;
                                  -98652;1;0;false;false;;;;;;
                                  -98653;5;0;false;false;63;95;191;;;
                                  -98658;1;0;false;false;;;;;;
                                  -98659;3;0;false;false;63;95;191;;;
                                  -98662;1;0;false;false;;;;;;
                                  -98663;6;0;false;false;63;95;191;;;
                                  -98669;1;0;false;false;;;;;;
                                  -98670;2;0;false;false;63;95;191;;;
                                  -98672;1;0;false;false;;;;;;
                                  -98673;3;0;false;false;63;95;191;;;
                                  -98676;1;0;false;false;;;;;;
                                  -98677;3;0;false;false;63;95;191;;;
                                  -98680;1;0;false;false;;;;;;
                                  -98681;2;0;false;false;63;95;191;;;
                                  -98683;1;0;false;false;;;;;;
                                  -98684;3;0;false;false;63;95;191;;;
                                  -98687;1;0;false;false;;;;;;
                                  -98688;4;0;false;false;63;95;191;;;
                                  -98692;1;0;false;false;;;;;;
                                  -98693;5;0;false;false;63;95;191;;;
                                  -98698;1;0;false;false;;;;;;
                                  -98699;7;0;false;false;63;95;191;;;
                                  -98706;1;0;false;false;;;;;;
                                  -98707;5;0;false;false;63;95;191;;;
                                  -98712;3;0;false;false;;;;;;
                                  -98715;2;0;false;false;63;95;191;;;
                                  -98717;2;0;false;false;;;;;;
                                  -98719;4;1;false;false;127;0;85;;;
                                  -98723;1;0;false;false;;;;;;
                                  -98724;11;0;false;false;0;0;0;;;
                                  -98735;1;0;false;false;;;;;;
                                  -98736;1;0;false;false;0;0;0;;;
                                  -98737;3;0;false;false;;;;;;
                                  -98740;57;0;false;false;63;127;95;;;
                                  -98797;1;0;false;false;;;;;;
                                  -98798;2;1;false;false;127;0;85;;;
                                  -98800;1;0;false;false;;;;;;
                                  -98801;16;0;false;false;0;0;0;;;
                                  -98817;1;0;false;false;;;;;;
                                  -98818;1;0;false;false;0;0;0;;;
                                  -98819;4;0;false;false;;;;;;
                                  -98823;12;0;false;false;0;0;0;;;
                                  -98835;3;0;false;false;;;;;;
                                  -98838;1;0;false;false;0;0;0;;;
                                  -98839;3;0;false;false;;;;;;
                                  -98842;4;1;false;false;127;0;85;;;
                                  -98846;1;0;false;false;;;;;;
                                  -98847;1;0;false;false;0;0;0;;;
                                  -98848;4;0;false;false;;;;;;
                                  -98852;3;1;false;false;127;0;85;;;
                                  -98855;1;0;false;false;;;;;;
                                  -98856;4;0;false;false;0;0;0;;;
                                  -98860;1;0;false;false;;;;;;
                                  -98861;1;0;false;false;0;0;0;;;
                                  -98862;1;0;false;false;;;;;;
                                  -98863;17;0;false;false;0;0;0;;;
                                  -98880;4;0;false;false;;;;;;
                                  -98884;3;1;false;false;127;0;85;;;
                                  -98887;1;0;false;false;;;;;;
                                  -98888;17;0;false;false;0;0;0;;;
                                  -98905;1;0;false;false;;;;;;
                                  -98906;1;0;false;false;0;0;0;;;
                                  -98907;1;0;false;false;;;;;;
                                  -98908;29;0;false;false;0;0;0;;;
                                  -98937;1;0;false;false;;;;;;
                                  -98938;1;0;false;false;0;0;0;;;
                                  -98939;1;0;false;false;;;;;;
                                  -98940;31;0;false;false;0;0;0;;;
                                  -98971;7;0;false;false;;;;;;
                                  -98978;2;1;false;false;127;0;85;;;
                                  -98980;1;0;false;false;;;;;;
                                  -98981;12;0;false;false;0;0;0;;;
                                  -98993;1;0;false;false;;;;;;
                                  -98994;1;0;false;false;0;0;0;;;
                                  -98995;1;0;false;false;;;;;;
                                  -98996;18;0;false;false;0;0;0;;;
                                  -99014;1;0;false;false;;;;;;
                                  -99015;1;0;false;false;0;0;0;;;
                                  -99016;5;0;false;false;;;;;;
                                  -99021;11;0;false;false;0;0;0;;;
                                  -99032;1;0;false;false;;;;;;
                                  -99033;1;0;false;false;0;0;0;;;
                                  -99034;1;0;false;false;;;;;;
                                  -99035;18;0;false;false;0;0;0;;;
                                  -99053;5;0;false;false;;;;;;
                                  -99058;12;0;false;false;0;0;0;;;
                                  -99070;4;0;false;false;;;;;;
                                  -99074;1;0;false;false;0;0;0;;;
                                  -99075;3;0;false;false;;;;;;
                                  -99078;1;0;false;false;0;0;0;;;
                                  -99079;2;0;false;false;;;;;;
                                  -99081;1;0;false;false;0;0;0;;;
                                  -99082;2;0;false;false;;;;;;
                                  -99084;3;0;false;false;63;95;191;;;
                                  -99087;3;0;false;false;;;;;;
                                  -99090;1;0;false;false;63;95;191;;;
                                  -99091;1;0;false;false;;;;;;
                                  -99092;5;0;false;false;63;95;191;;;
                                  -99097;1;0;false;false;;;;;;
                                  -99098;3;0;false;false;63;95;191;;;
                                  -99101;1;0;false;false;;;;;;
                                  -99102;6;0;false;false;63;95;191;;;
                                  -99108;1;0;false;false;;;;;;
                                  -99109;2;0;false;false;63;95;191;;;
                                  -99111;1;0;false;false;;;;;;
                                  -99112;3;0;false;false;63;95;191;;;
                                  -99115;1;0;false;false;;;;;;
                                  -99116;9;0;false;false;63;95;191;;;
                                  -99125;1;0;false;false;;;;;;
                                  -99126;2;0;false;false;63;95;191;;;
                                  -99128;1;0;false;false;;;;;;
                                  -99129;3;0;false;false;63;95;191;;;
                                  -99132;1;0;false;false;;;;;;
                                  -99133;5;0;false;false;63;95;191;;;
                                  -99138;1;0;false;false;;;;;;
                                  -99139;5;0;false;false;63;95;191;;;
                                  -99144;1;0;false;false;;;;;;
                                  -99145;7;0;false;false;63;95;191;;;
                                  -99152;1;0;false;false;;;;;;
                                  -99153;5;0;false;false;63;95;191;;;
                                  -99158;3;0;false;false;;;;;;
                                  -99161;2;0;false;false;63;95;191;;;
                                  -99163;2;0;false;false;;;;;;
                                  -99165;4;1;false;false;127;0;85;;;
                                  -99169;1;0;false;false;;;;;;
                                  -99170;13;0;false;false;0;0;0;;;
                                  -99183;1;0;false;false;;;;;;
                                  -99184;1;0;false;false;0;0;0;;;
                                  -99185;3;0;false;false;;;;;;
                                  -99188;3;1;false;false;127;0;85;;;
                                  -99191;1;0;false;false;;;;;;
                                  -99192;14;0;false;false;0;0;0;;;
                                  -99206;1;0;false;false;;;;;;
                                  -99207;1;0;false;false;0;0;0;;;
                                  -99208;1;0;false;false;;;;;;
                                  -99209;34;0;false;false;0;0;0;;;
                                  -99243;6;0;false;false;;;;;;
                                  -99249;2;1;false;false;127;0;85;;;
                                  -99251;1;0;false;false;;;;;;
                                  -99252;12;0;false;false;0;0;0;;;
                                  -99264;1;0;false;false;;;;;;
                                  -99265;1;0;false;false;0;0;0;;;
                                  -99266;1;0;false;false;;;;;;
                                  -99267;15;0;false;false;0;0;0;;;
                                  -99282;1;0;false;false;;;;;;
                                  -99283;1;0;false;false;0;0;0;;;
                                  -99284;4;0;false;false;;;;;;
                                  -99288;11;0;false;false;0;0;0;;;
                                  -99299;1;0;false;false;;;;;;
                                  -99300;1;0;false;false;0;0;0;;;
                                  -99301;1;0;false;false;;;;;;
                                  -99302;15;0;false;false;0;0;0;;;
                                  -99317;4;0;false;false;;;;;;
                                  -99321;66;0;false;false;63;127;95;;;
                                  -99387;2;0;false;false;;;;;;
                                  -99389;69;0;false;false;63;127;95;;;
                                  -99458;2;0;false;false;;;;;;
                                  -99460;20;0;false;false;0;0;0;;;
                                  -99480;3;0;false;false;;;;;;
                                  -99483;1;0;false;false;0;0;0;;;
                                  -99484;2;0;false;false;;;;;;
                                  -99486;1;0;false;false;0;0;0;;;
                                  -99487;2;0;false;false;;;;;;
                                  -99489;3;0;false;false;63;95;191;;;
                                  -99492;3;0;false;false;;;;;;
                                  -99495;1;0;false;false;63;95;191;;;
                                  -99496;1;0;false;false;;;;;;
                                  -99497;7;0;false;false;63;95;191;;;
                                  -99504;1;0;false;false;;;;;;
                                  -99505;3;0;false;false;63;95;191;;;
                                  -99508;1;0;false;false;;;;;;
                                  -99509;4;0;false;false;63;95;191;;;
                                  -99513;1;0;false;false;;;;;;
                                  -99514;2;0;false;false;63;95;191;;;
                                  -99516;1;0;false;false;;;;;;
                                  -99517;2;0;false;false;63;95;191;;;
                                  -99519;1;0;false;false;;;;;;
                                  -99520;4;0;false;false;63;95;191;;;
                                  -99524;1;0;false;false;;;;;;
                                  -99525;3;0;false;false;63;95;191;;;
                                  -99528;1;0;false;false;;;;;;
                                  -99529;5;0;false;false;63;95;191;;;
                                  -99534;1;0;false;false;;;;;;
                                  -99535;4;0;false;false;63;95;191;;;
                                  -99539;1;0;false;false;;;;;;
                                  -99540;10;0;false;false;63;95;191;;;
                                  -99550;1;0;false;false;;;;;;
                                  -99551;2;0;false;false;63;95;191;;;
                                  -99553;1;0;false;false;;;;;;
                                  -99554;6;0;false;false;63;95;191;;;
                                  -99560;3;0;false;false;;;;;;
                                  -99563;1;0;false;false;63;95;191;;;
                                  -99564;1;0;false;false;;;;;;
                                  -99565;2;0;false;false;63;95;191;;;
                                  -99567;1;0;false;false;;;;;;
                                  -99568;3;0;false;false;63;95;191;;;
                                  -99571;1;0;false;false;;;;;;
                                  -99572;7;0;false;false;63;95;191;;;
                                  -99579;1;0;false;false;;;;;;
                                  -99580;4;0;false;false;63;95;191;;;
                                  -99584;1;0;false;false;;;;;;
                                  -99585;7;0;false;false;63;95;191;;;
                                  -99592;1;0;false;false;;;;;;
                                  -99593;3;0;false;false;63;95;191;;;
                                  -99596;1;0;false;false;;;;;;
                                  -99597;5;0;false;false;63;95;191;;;
                                  -99602;1;0;false;false;;;;;;
                                  -99603;7;0;false;false;63;95;191;;;
                                  -99610;1;0;false;false;;;;;;
                                  -99611;4;0;false;false;63;95;191;;;
                                  -99615;1;0;false;false;;;;;;
                                  -99616;5;0;false;false;63;95;191;;;
                                  -99621;3;0;false;false;;;;;;
                                  -99624;1;0;false;false;63;95;191;;;
                                  -99625;1;0;false;false;;;;;;
                                  -99626;3;0;false;false;63;95;191;;;
                                  -99629;1;0;false;false;;;;;;
                                  -99630;5;0;false;false;63;95;191;;;
                                  -99635;1;0;false;false;;;;;;
                                  -99636;2;0;false;false;63;95;191;;;
                                  -99638;1;0;false;false;;;;;;
                                  -99639;8;0;false;false;63;95;191;;;
                                  -99647;1;0;false;false;;;;;;
                                  -99648;3;0;false;false;63;95;191;;;
                                  -99651;1;0;false;false;;;;;;
                                  -99652;4;0;false;false;63;95;191;;;
                                  -99656;1;0;false;false;;;;;;
                                  -99657;6;0;false;false;63;95;191;;;
                                  -99663;1;0;false;false;;;;;;
                                  -99664;2;0;false;false;63;95;191;;;
                                  -99666;1;0;false;false;;;;;;
                                  -99667;5;0;false;false;63;95;191;;;
                                  -99672;1;0;false;false;;;;;;
                                  -99673;2;0;false;false;63;95;191;;;
                                  -99675;1;0;false;false;;;;;;
                                  -99676;4;0;false;false;63;95;191;;;
                                  -99680;1;0;false;false;;;;;;
                                  -99681;3;0;false;false;63;95;191;;;
                                  -99684;1;0;false;false;;;;;;
                                  -99685;8;0;false;false;63;95;191;;;
                                  -99693;4;0;false;false;;;;;;
                                  -99697;1;0;false;false;63;95;191;;;
                                  -99698;1;0;false;false;;;;;;
                                  -99699;8;0;false;false;63;95;191;;;
                                  -99707;1;0;false;false;;;;;;
                                  -99708;2;0;false;false;63;95;191;;;
                                  -99710;1;0;false;false;;;;;;
                                  -99711;3;0;false;false;63;95;191;;;
                                  -99714;1;0;false;false;;;;;;
                                  -99715;3;0;false;false;63;95;191;;;
                                  -99718;1;0;false;false;;;;;;
                                  -99719;4;0;false;false;63;95;191;;;
                                  -99723;1;0;false;false;;;;;;
                                  -99724;7;0;false;false;63;95;191;;;
                                  -99731;1;0;false;false;;;;;;
                                  -99732;3;0;false;false;63;95;191;;;
                                  -99735;1;0;false;false;;;;;;
                                  -99736;5;0;false;false;63;95;191;;;
                                  -99741;1;0;false;false;;;;;;
                                  -99742;3;0;false;false;63;95;191;;;
                                  -99745;1;0;false;false;;;;;;
                                  -99746;9;0;false;false;63;95;191;;;
                                  -99755;1;0;false;false;;;;;;
                                  -99756;2;0;false;false;63;95;191;;;
                                  -99758;1;0;false;false;;;;;;
                                  -99759;3;0;false;false;63;95;191;;;
                                  -99762;1;0;false;false;;;;;;
                                  -99763;9;0;false;false;63;95;191;;;
                                  -99772;4;0;false;false;;;;;;
                                  -99776;1;0;false;false;63;95;191;;;
                                  -99777;1;0;false;false;;;;;;
                                  -99778;2;0;false;false;63;95;191;;;
                                  -99780;1;0;false;false;;;;;;
                                  -99781;3;0;false;false;63;95;191;;;
                                  -99784;1;0;false;false;;;;;;
                                  -99785;4;0;false;false;63;95;191;;;
                                  -99789;1;0;false;false;;;;;;
                                  -99790;5;0;false;false;63;95;191;;;
                                  -99795;1;0;false;false;;;;;;
                                  -99796;1;0;false;false;63;95;191;;;
                                  -99797;1;0;false;false;;;;;;
                                  -99798;4;0;false;false;63;95;191;;;
                                  -99802;1;0;false;false;;;;;;
                                  -99803;4;0;false;false;63;95;191;;;
                                  -99807;1;0;false;false;;;;;;
                                  -99808;6;0;false;false;63;95;191;;;
                                  -99814;1;0;false;false;;;;;;
                                  -99815;2;0;false;false;63;95;191;;;
                                  -99817;1;0;false;false;;;;;;
                                  -99818;3;0;false;false;63;95;191;;;
                                  -99821;1;0;false;false;;;;;;
                                  -99822;9;0;false;false;63;95;191;;;
                                  -99831;1;0;false;false;;;;;;
                                  -99832;2;0;false;false;63;95;191;;;
                                  -99834;1;0;false;false;;;;;;
                                  -99835;4;0;false;false;63;95;191;;;
                                  -99839;1;0;false;false;;;;;;
                                  -99840;4;0;false;false;63;95;191;;;
                                  -99844;1;0;false;false;;;;;;
                                  -99845;3;0;false;false;63;95;191;;;
                                  -99848;3;0;false;false;;;;;;
                                  -99851;1;0;false;false;63;95;191;;;
                                  -99852;1;0;false;false;;;;;;
                                  -99853;5;0;false;false;63;95;191;;;
                                  -99858;1;0;false;false;;;;;;
                                  -99859;2;0;false;false;63;95;191;;;
                                  -99861;1;0;false;false;;;;;;
                                  -99862;5;0;false;false;63;95;191;;;
                                  -99867;1;0;false;false;;;;;;
                                  -99868;2;0;false;false;63;95;191;;;
                                  -99870;1;0;false;false;;;;;;
                                  -99871;5;0;false;false;63;95;191;;;
                                  -99876;1;0;false;false;;;;;;
                                  -99877;2;0;false;false;63;95;191;;;
                                  -99879;1;0;false;false;;;;;;
                                  -99880;3;0;false;false;63;95;191;;;
                                  -99883;1;0;false;false;;;;;;
                                  -99884;5;0;false;false;63;95;191;;;
                                  -99889;1;0;false;false;;;;;;
                                  -99890;10;0;false;false;63;95;191;;;
                                  -99900;3;0;false;false;;;;;;
                                  -99903;2;0;false;false;63;95;191;;;
                                  -99905;2;0;false;false;;;;;;
                                  -99907;4;1;false;false;127;0;85;;;
                                  -99911;1;0;false;false;;;;;;
                                  -99912;9;0;false;false;0;0;0;;;
                                  -99921;7;1;false;false;127;0;85;;;
                                  -99928;1;0;false;false;;;;;;
                                  -99929;7;0;false;false;0;0;0;;;
                                  -99936;1;0;false;false;;;;;;
                                  -99937;3;1;false;false;127;0;85;;;
                                  -99940;1;0;false;false;;;;;;
                                  -99941;6;0;false;false;0;0;0;;;
                                  -99947;1;0;false;false;;;;;;
                                  -99948;1;0;false;false;0;0;0;;;
                                  -99949;3;0;false;false;;;;;;
                                  -99952;3;1;false;false;127;0;85;;;
                                  -99955;1;0;false;false;;;;;;
                                  -99956;10;0;false;false;0;0;0;;;
                                  -99966;1;0;false;false;;;;;;
                                  -99967;1;0;false;false;0;0;0;;;
                                  -99968;1;0;false;false;;;;;;
                                  -99969;8;0;false;false;0;0;0;;;
                                  -99977;3;0;false;false;;;;;;
                                  -99980;3;1;false;false;127;0;85;;;
                                  -99983;1;0;false;false;;;;;;
                                  -99984;16;0;false;false;0;0;0;;;
                                  -100000;1;0;false;false;;;;;;
                                  -100001;1;0;false;false;0;0;0;;;
                                  -100002;1;0;false;false;;;;;;
                                  -100003;23;0;false;false;0;0;0;;;
                                  -100026;3;0;false;false;;;;;;
                                  -100029;3;1;false;false;127;0;85;;;
                                  -100032;1;0;false;false;;;;;;
                                  -100033;9;0;false;false;0;0;0;;;
                                  -100042;1;0;false;false;;;;;;
                                  -100043;1;0;false;false;0;0;0;;;
                                  -100044;1;0;false;false;;;;;;
                                  -100045;15;0;false;false;0;0;0;;;
                                  -100060;6;0;false;false;;;;;;
                                  -100066;2;1;false;false;127;0;85;;;
                                  -100068;1;0;false;false;;;;;;
                                  -100069;10;0;false;false;0;0;0;;;
                                  -100079;1;0;false;false;;;;;;
                                  -100080;1;0;false;false;0;0;0;;;
                                  -100081;1;0;false;false;;;;;;
                                  -100082;2;0;false;false;0;0;0;;;
                                  -100084;1;0;false;false;;;;;;
                                  -100085;1;0;false;false;0;0;0;;;
                                  -100086;5;0;false;false;;;;;;
                                  -100091;3;1;false;false;127;0;85;;;
                                  -100094;1;0;false;false;;;;;;
                                  -100095;11;0;false;false;0;0;0;;;
                                  -100106;1;0;false;false;;;;;;
                                  -100107;1;0;false;false;0;0;0;;;
                                  -100108;1;0;false;false;;;;;;
                                  -100109;11;0;false;false;0;0;0;;;
                                  -100120;1;0;false;false;;;;;;
                                  -100121;19;0;false;false;0;0;0;;;
                                  -100140;1;0;false;false;;;;;;
                                  -100141;8;0;false;false;0;0;0;;;
                                  -100149;4;0;false;false;;;;;;
                                  -100153;3;1;false;false;127;0;85;;;
                                  -100156;1;0;false;false;;;;;;
                                  -100157;13;0;false;false;0;0;0;;;
                                  -100170;8;0;false;false;;;;;;
                                  -100178;9;0;false;false;0;0;0;;;
                                  -100187;1;0;false;false;;;;;;
                                  -100188;2;0;false;false;0;0;0;;;
                                  -100190;1;0;false;false;;;;;;
                                  -100191;12;0;false;false;0;0;0;;;
                                  -100203;4;0;false;false;;;;;;
                                  -100207;11;0;false;false;0;0;0;;;
                                  -100218;1;0;false;false;;;;;;
                                  -100219;1;0;false;false;0;0;0;;;
                                  -100220;1;0;false;false;;;;;;
                                  -100221;33;0;false;false;0;0;0;;;
                                  -100254;1;0;false;false;;;;;;
                                  -100255;11;0;false;false;0;0;0;;;
                                  -100266;4;0;false;false;;;;;;
                                  -100270;2;1;false;false;127;0;85;;;
                                  -100272;1;0;false;false;;;;;;
                                  -100273;8;0;false;false;0;0;0;;;
                                  -100281;1;0;false;false;;;;;;
                                  -100282;1;0;false;false;0;0;0;;;
                                  -100283;5;0;false;false;;;;;;
                                  -100288;32;0;false;false;0;0;0;;;
                                  -100320;4;0;false;false;;;;;;
                                  -100324;1;0;false;false;0;0;0;;;
                                  -100325;4;0;false;false;;;;;;
                                  -100329;37;0;false;false;63;127;95;;;
                                  -100366;2;0;false;false;;;;;;
                                  -100368;12;0;false;false;0;0;0;;;
                                  -100380;1;0;false;false;;;;;;
                                  -100381;1;0;false;false;0;0;0;;;
                                  -100382;1;0;false;false;;;;;;
                                  -100383;11;0;false;false;0;0;0;;;
                                  -100394;1;0;false;false;;;;;;
                                  -100395;20;0;false;false;0;0;0;;;
                                  -100415;1;0;false;false;;;;;;
                                  -100416;1;0;false;false;0;0;0;;;
                                  -100417;1;0;false;false;;;;;;
                                  -100418;11;0;false;false;0;0;0;;;
                                  -100429;1;0;false;false;;;;;;
                                  -100430;1;0;false;false;0;0;0;;;
                                  -100431;1;0;false;false;;;;;;
                                  -100432;24;0;false;false;0;0;0;;;
                                  -100456;4;0;false;false;;;;;;
                                  -100460;2;1;false;false;127;0;85;;;
                                  -100462;1;0;false;false;;;;;;
                                  -100463;13;0;false;false;0;0;0;;;
                                  -100476;1;0;false;false;;;;;;
                                  -100477;1;0;false;false;0;0;0;;;
                                  -100478;1;0;false;false;;;;;;
                                  -100479;21;0;false;false;0;0;0;;;
                                  -100500;1;0;false;false;;;;;;
                                  -100501;1;0;false;false;0;0;0;;;
                                  -100502;5;0;false;false;;;;;;
                                  -100507;37;0;false;false;0;0;0;;;
                                  -100544;1;0;false;false;;;;;;
                                  -100545;4;1;false;false;127;0;85;;;
                                  -100549;2;0;false;false;0;0;0;;;
                                  -100551;4;0;false;false;;;;;;
                                  -100555;1;0;false;false;0;0;0;;;
                                  -100556;3;0;false;false;;;;;;
                                  -100559;1;0;false;false;0;0;0;;;
                                  -100560;3;0;false;false;;;;;;
                                  -100563;66;0;false;false;63;127;95;;;
                                  -100629;1;0;false;false;;;;;;
                                  -100630;69;0;false;false;63;127;95;;;
                                  -100699;1;0;false;false;;;;;;
                                  -100700;21;0;false;false;0;0;0;;;
                                  -100721;3;0;false;false;;;;;;
                                  -100724;51;0;false;false;63;127;95;;;
                                  -100775;1;0;false;false;;;;;;
                                  -100776;3;1;false;false;127;0;85;;;
                                  -100779;1;0;false;false;;;;;;
                                  -100780;13;0;false;false;0;0;0;;;
                                  -100793;1;0;false;false;;;;;;
                                  -100794;1;0;false;false;0;0;0;;;
                                  -100795;1;0;false;false;;;;;;
                                  -100796;16;0;false;false;0;0;0;;;
                                  -100812;1;0;false;false;;;;;;
                                  -100813;1;0;false;false;0;0;0;;;
                                  -100814;1;0;false;false;;;;;;
                                  -100815;23;0;false;false;0;0;0;;;
                                  -100838;3;0;false;false;;;;;;
                                  -100841;7;0;false;false;0;0;0;;;
                                  -100848;1;0;false;false;;;;;;
                                  -100849;1;0;false;false;0;0;0;;;
                                  -100850;1;0;false;false;;;;;;
                                  -100851;10;0;false;false;0;0;0;;;
                                  -100861;1;0;false;false;;;;;;
                                  -100862;1;0;false;false;0;0;0;;;
                                  -100863;1;0;false;false;;;;;;
                                  -100864;14;0;false;false;0;0;0;;;
                                  -100878;2;0;false;false;;;;;;
                                  -100880;1;0;false;false;0;0;0;;;
                                  -100881;2;0;false;false;;;;;;
                                  -100883;3;0;false;false;63;95;191;;;
                                  -100886;3;0;false;false;;;;;;
                                  -100889;1;0;false;false;63;95;191;;;
                                  -100890;1;0;false;false;;;;;;
                                  -100891;7;0;false;false;63;95;191;;;
                                  -100898;1;0;false;false;;;;;;
                                  -100899;3;0;false;false;63;95;191;;;
                                  -100902;1;0;false;false;;;;;;
                                  -100903;9;0;false;false;63;95;191;;;
                                  -100912;1;0;false;false;;;;;;
                                  -100913;2;0;false;false;63;95;191;;;
                                  -100915;1;0;false;false;;;;;;
                                  -100916;6;0;false;false;63;95;191;;;
                                  -100922;1;0;false;false;;;;;;
                                  -100923;2;0;false;false;63;95;191;;;
                                  -100925;1;0;false;false;;;;;;
                                  -100926;3;0;false;false;63;95;191;;;
                                  -100929;1;0;false;false;;;;;;
                                  -100930;7;0;false;false;63;95;191;;;
                                  -100937;1;0;false;false;;;;;;
                                  -100938;5;0;false;false;63;95;191;;;
                                  -100943;1;0;false;false;;;;;;
                                  -100944;9;0;false;false;63;95;191;;;
                                  -100953;3;0;false;false;;;;;;
                                  -100956;2;0;false;false;63;95;191;;;
                                  -100958;2;0;false;false;;;;;;
                                  -100960;4;1;false;false;127;0;85;;;
                                  -100964;1;0;false;false;;;;;;
                                  -100965;12;0;false;false;0;0;0;;;
                                  -100977;3;1;false;false;127;0;85;;;
                                  -100980;1;0;false;false;;;;;;
                                  -100981;10;0;false;false;0;0;0;;;
                                  -100991;1;0;false;false;;;;;;
                                  -100992;1;0;false;false;0;0;0;;;
                                  -100993;3;0;false;false;;;;;;
                                  -100996;3;1;false;false;127;0;85;;;
                                  -100999;1;0;false;false;;;;;;
                                  -101000;11;0;false;false;0;0;0;;;
                                  -101011;1;0;false;false;;;;;;
                                  -101012;1;0;false;false;0;0;0;;;
                                  -101013;1;0;false;false;;;;;;
                                  -101014;3;0;false;false;0;0;0;;;
                                  -101017;3;0;false;false;;;;;;
                                  -101020;3;1;false;false;127;0;85;;;
                                  -101023;1;0;false;false;;;;;;
                                  -101024;9;0;false;false;0;0;0;;;
                                  -101033;1;0;false;false;;;;;;
                                  -101034;1;0;false;false;0;0;0;;;
                                  -101035;1;0;false;false;;;;;;
                                  -101036;3;0;false;false;0;0;0;;;
                                  -101039;6;0;false;false;;;;;;
                                  -101045;2;1;false;false;127;0;85;;;
                                  -101047;1;0;false;false;;;;;;
                                  -101048;16;0;false;false;0;0;0;;;
                                  -101064;1;0;false;false;;;;;;
                                  -101065;2;0;false;false;0;0;0;;;
                                  -101067;1;0;false;false;;;;;;
                                  -101068;3;0;false;false;0;0;0;;;
                                  -101071;1;0;false;false;;;;;;
                                  -101072;1;0;false;false;0;0;0;;;
                                  -101073;4;0;false;false;;;;;;
                                  -101077;15;0;false;false;0;0;0;;;
                                  -101092;1;0;false;false;;;;;;
                                  -101093;1;0;false;false;0;0;0;;;
                                  -101094;1;0;false;false;;;;;;
                                  -101095;12;0;false;false;0;0;0;;;
                                  -101107;3;0;false;false;;;;;;
                                  -101110;1;0;false;false;0;0;0;;;
                                  -101111;4;0;false;false;;;;;;
                                  -101115;2;1;false;false;127;0;85;;;
                                  -101117;1;0;false;false;;;;;;
                                  -101118;10;0;false;false;0;0;0;;;
                                  -101128;1;0;false;false;;;;;;
                                  -101129;2;0;false;false;0;0;0;;;
                                  -101131;1;0;false;false;;;;;;
                                  -101132;19;0;false;false;0;0;0;;;
                                  -101151;1;0;false;false;;;;;;
                                  -101152;1;0;false;false;0;0;0;;;
                                  -101153;4;0;false;false;;;;;;
                                  -101157;2;1;false;false;127;0;85;;;
                                  -101159;1;0;false;false;;;;;;
                                  -101160;12;0;false;false;0;0;0;;;
                                  -101172;1;0;false;false;;;;;;
                                  -101173;1;0;false;false;0;0;0;;;
                                  -101174;1;0;false;false;;;;;;
                                  -101175;12;0;false;false;0;0;0;;;
                                  -101187;1;0;false;false;;;;;;
                                  -101188;1;0;false;false;0;0;0;;;
                                  -101189;5;0;false;false;;;;;;
                                  -101194;19;0;false;false;63;127;95;;;
                                  -101213;3;0;false;false;;;;;;
                                  -101216;9;0;false;false;0;0;0;;;
                                  -101225;1;0;false;false;;;;;;
                                  -101226;1;0;false;false;0;0;0;;;
                                  -101227;1;0;false;false;;;;;;
                                  -101228;12;0;false;false;0;0;0;;;
                                  -101240;6;0;false;false;;;;;;
                                  -101246;11;0;false;false;0;0;0;;;
                                  -101257;1;0;false;false;;;;;;
                                  -101258;1;0;false;false;0;0;0;;;
                                  -101259;1;0;false;false;;;;;;
                                  -101260;11;0;false;false;0;0;0;;;
                                  -101271;1;0;false;false;;;;;;
                                  -101272;1;0;false;false;0;0;0;;;
                                  -101273;1;0;false;false;;;;;;
                                  -101274;12;0;false;false;0;0;0;;;
                                  -101286;7;0;false;false;;;;;;
                                  -101293;46;0;false;false;63;127;95;;;
                                  -101339;3;0;false;false;;;;;;
                                  -101342;2;1;false;false;127;0;85;;;
                                  -101344;1;0;false;false;;;;;;
                                  -101345;12;0;false;false;0;0;0;;;
                                  -101357;1;0;false;false;;;;;;
                                  -101358;2;0;false;false;0;0;0;;;
                                  -101360;1;0;false;false;;;;;;
                                  -101361;16;0;false;false;0;0;0;;;
                                  -101377;1;0;false;false;;;;;;
                                  -101378;1;0;false;false;0;0;0;;;
                                  -101379;6;0;false;false;;;;;;
                                  -101385;9;0;false;false;0;0;0;;;
                                  -101394;1;0;false;false;;;;;;
                                  -101395;1;0;false;false;0;0;0;;;
                                  -101396;1;0;false;false;;;;;;
                                  -101397;12;0;false;false;0;0;0;;;
                                  -101409;6;0;false;false;;;;;;
                                  -101415;11;0;false;false;0;0;0;;;
                                  -101426;1;0;false;false;;;;;;
                                  -101427;1;0;false;false;0;0;0;;;
                                  -101428;1;0;false;false;;;;;;
                                  -101429;16;0;false;false;0;0;0;;;
                                  -101445;5;0;false;false;;;;;;
                                  -101450;1;0;false;false;0;0;0;;;
                                  -101451;4;0;false;false;;;;;;
                                  -101455;1;0;false;false;0;0;0;;;
                                  -101456;4;0;false;false;;;;;;
                                  -101460;4;1;false;false;127;0;85;;;
                                  -101464;1;0;false;false;;;;;;
                                  -101465;59;0;false;false;63;127;95;;;
                                  -101524;2;0;false;false;;;;;;
                                  -101526;2;1;false;false;127;0;85;;;
                                  -101528;1;0;false;false;;;;;;
                                  -101529;16;0;false;false;0;0;0;;;
                                  -101545;1;0;false;false;;;;;;
                                  -101546;2;0;false;false;0;0;0;;;
                                  -101548;1;0;false;false;;;;;;
                                  -101549;11;0;false;false;0;0;0;;;
                                  -101560;1;0;false;false;;;;;;
                                  -101561;2;0;false;false;0;0;0;;;
                                  -101563;1;0;false;false;;;;;;
                                  -101564;11;0;false;false;0;0;0;;;
                                  -101575;1;0;false;false;;;;;;
                                  -101576;1;0;false;false;0;0;0;;;
                                  -101577;1;0;false;false;;;;;;
                                  -101578;12;0;false;false;0;0;0;;;
                                  -101590;1;0;false;false;;;;;;
                                  -101591;1;0;false;false;0;0;0;;;
                                  -101592;5;0;false;false;;;;;;
                                  -101597;68;0;false;false;63;127;95;;;
                                  -101665;3;0;false;false;;;;;;
                                  -101668;24;0;false;false;63;127;95;;;
                                  -101692;3;0;false;false;;;;;;
                                  -101695;9;0;false;false;0;0;0;;;
                                  -101704;1;0;false;false;;;;;;
                                  -101705;1;0;false;false;0;0;0;;;
                                  -101706;1;0;false;false;;;;;;
                                  -101707;12;0;false;false;0;0;0;;;
                                  -101719;5;0;false;false;;;;;;
                                  -101724;11;0;false;false;0;0;0;;;
                                  -101735;1;0;false;false;;;;;;
                                  -101736;1;0;false;false;0;0;0;;;
                                  -101737;1;0;false;false;;;;;;
                                  -101738;11;0;false;false;0;0;0;;;
                                  -101749;1;0;false;false;;;;;;
                                  -101750;1;0;false;false;0;0;0;;;
                                  -101751;1;0;false;false;;;;;;
                                  -101752;12;0;false;false;0;0;0;;;
                                  -101764;6;0;false;false;;;;;;
                                  -101770;1;0;false;false;0;0;0;;;
                                  -101771;3;0;false;false;;;;;;
                                  -101774;1;0;false;false;0;0;0;;;
                                  -101775;3;0;false;false;;;;;;
                                  -101778;4;1;false;false;127;0;85;;;
                                  -101782;1;0;false;false;;;;;;
                                  -101783;1;0;false;false;0;0;0;;;
                                  -101784;4;0;false;false;;;;;;
                                  -101788;2;1;false;false;127;0;85;;;
                                  -101790;1;0;false;false;;;;;;
                                  -101791;12;0;false;false;0;0;0;;;
                                  -101803;1;0;false;false;;;;;;
                                  -101804;1;0;false;false;0;0;0;;;
                                  -101805;1;0;false;false;;;;;;
                                  -101806;12;0;false;false;0;0;0;;;
                                  -101818;1;0;false;false;;;;;;
                                  -101819;1;0;false;false;0;0;0;;;
                                  -101820;5;0;false;false;;;;;;
                                  -101825;19;0;false;false;63;127;95;;;
                                  -101844;3;0;false;false;;;;;;
                                  -101847;11;0;false;false;0;0;0;;;
                                  -101858;1;0;false;false;;;;;;
                                  -101859;1;0;false;false;0;0;0;;;
                                  -101860;1;0;false;false;;;;;;
                                  -101861;12;0;false;false;0;0;0;;;
                                  -101873;5;0;false;false;;;;;;
                                  -101878;9;0;false;false;0;0;0;;;
                                  -101887;1;0;false;false;;;;;;
                                  -101888;1;0;false;false;0;0;0;;;
                                  -101889;1;0;false;false;;;;;;
                                  -101890;11;0;false;false;0;0;0;;;
                                  -101901;1;0;false;false;;;;;;
                                  -101902;1;0;false;false;0;0;0;;;
                                  -101903;1;0;false;false;;;;;;
                                  -101904;12;0;false;false;0;0;0;;;
                                  -101916;5;0;false;false;;;;;;
                                  -101921;46;0;false;false;63;127;95;;;
                                  -101967;3;0;false;false;;;;;;
                                  -101970;2;1;false;false;127;0;85;;;
                                  -101972;1;0;false;false;;;;;;
                                  -101973;12;0;false;false;0;0;0;;;
                                  -101985;1;0;false;false;;;;;;
                                  -101986;2;0;false;false;0;0;0;;;
                                  -101988;1;0;false;false;;;;;;
                                  -101989;16;0;false;false;0;0;0;;;
                                  -102005;1;0;false;false;;;;;;
                                  -102006;1;0;false;false;0;0;0;;;
                                  -102007;6;0;false;false;;;;;;
                                  -102013;11;0;false;false;0;0;0;;;
                                  -102024;1;0;false;false;;;;;;
                                  -102025;1;0;false;false;0;0;0;;;
                                  -102026;1;0;false;false;;;;;;
                                  -102027;12;0;false;false;0;0;0;;;
                                  -102039;10;0;false;false;;;;;;
                                  -102049;11;0;false;false;0;0;0;;;
                                  -102060;1;0;false;false;;;;;;
                                  -102061;1;0;false;false;0;0;0;;;
                                  -102062;1;0;false;false;;;;;;
                                  -102063;16;0;false;false;0;0;0;;;
                                  -102079;5;0;false;false;;;;;;
                                  -102084;1;0;false;false;0;0;0;;;
                                  -102085;4;0;false;false;;;;;;
                                  -102089;1;0;false;false;0;0;0;;;
                                  -102090;4;0;false;false;;;;;;
                                  -102094;4;1;false;false;127;0;85;;;
                                  -102098;1;0;false;false;;;;;;
                                  -102099;59;0;false;false;63;127;95;;;
                                  -102158;2;0;false;false;;;;;;
                                  -102160;2;1;false;false;127;0;85;;;
                                  -102162;1;0;false;false;;;;;;
                                  -102163;16;0;false;false;0;0;0;;;
                                  -102179;1;0;false;false;;;;;;
                                  -102180;2;0;false;false;0;0;0;;;
                                  -102182;1;0;false;false;;;;;;
                                  -102183;11;0;false;false;0;0;0;;;
                                  -102194;1;0;false;false;;;;;;
                                  -102195;2;0;false;false;0;0;0;;;
                                  -102197;1;0;false;false;;;;;;
                                  -102198;11;0;false;false;0;0;0;;;
                                  -102209;1;0;false;false;;;;;;
                                  -102210;1;0;false;false;0;0;0;;;
                                  -102211;1;0;false;false;;;;;;
                                  -102212;12;0;false;false;0;0;0;;;
                                  -102224;1;0;false;false;;;;;;
                                  -102225;1;0;false;false;0;0;0;;;
                                  -102226;5;0;false;false;;;;;;
                                  -102231;69;0;false;false;63;127;95;;;
                                  -102300;3;0;false;false;;;;;;
                                  -102303;24;0;false;false;63;127;95;;;
                                  -102327;3;0;false;false;;;;;;
                                  -102330;11;0;false;false;0;0;0;;;
                                  -102341;1;0;false;false;;;;;;
                                  -102342;1;0;false;false;0;0;0;;;
                                  -102343;1;0;false;false;;;;;;
                                  -102344;12;0;false;false;0;0;0;;;
                                  -102356;5;0;false;false;;;;;;
                                  -102361;9;0;false;false;0;0;0;;;
                                  -102370;1;0;false;false;;;;;;
                                  -102371;1;0;false;false;0;0;0;;;
                                  -102372;1;0;false;false;;;;;;
                                  -102373;11;0;false;false;0;0;0;;;
                                  -102384;1;0;false;false;;;;;;
                                  -102385;1;0;false;false;0;0;0;;;
                                  -102386;1;0;false;false;;;;;;
                                  -102387;12;0;false;false;0;0;0;;;
                                  -102399;6;0;false;false;;;;;;
                                  -102405;1;0;false;false;0;0;0;;;
                                  -102406;3;0;false;false;;;;;;
                                  -102409;1;0;false;false;0;0;0;;;
                                  -102410;3;0;false;false;;;;;;
                                  -102413;2;1;false;false;127;0;85;;;
                                  -102415;1;0;false;false;;;;;;
                                  -102416;12;0;false;false;0;0;0;;;
                                  -102428;1;0;false;false;;;;;;
                                  -102429;2;0;false;false;0;0;0;;;
                                  -102431;1;0;false;false;;;;;;
                                  -102432;2;0;false;false;0;0;0;;;
                                  -102434;1;0;false;false;;;;;;
                                  -102435;2;0;false;false;0;0;0;;;
                                  -102437;1;0;false;false;;;;;;
                                  -102438;9;0;false;false;0;0;0;;;
                                  -102447;1;0;false;false;;;;;;
                                  -102448;2;0;false;false;0;0;0;;;
                                  -102450;1;0;false;false;;;;;;
                                  -102451;3;0;false;false;0;0;0;;;
                                  -102454;1;0;false;false;;;;;;
                                  -102455;1;0;false;false;0;0;0;;;
                                  -102456;4;0;false;false;;;;;;
                                  -102460;32;0;false;false;0;0;0;;;
                                  -102492;1;0;false;false;;;;;;
                                  -102493;9;0;false;false;0;0;0;;;
                                  -102502;1;0;false;false;;;;;;
                                  -102503;1;0;false;false;0;0;0;;;
                                  -102504;1;0;false;false;;;;;;
                                  -102505;12;0;false;false;0;0;0;;;
                                  -102517;1;0;false;false;;;;;;
                                  -102518;4;1;false;false;127;0;85;;;
                                  -102522;2;0;false;false;0;0;0;;;
                                  -102524;4;0;false;false;;;;;;
                                  -102528;21;0;false;false;0;0;0;;;
                                  -102549;3;0;false;false;;;;;;
                                  -102552;1;0;false;false;0;0;0;;;
                                  -102553;2;0;false;false;;;;;;
                                  -102555;1;0;false;false;0;0;0;;;
                                  -102556;2;0;false;false;;;;;;
                                  -102558;3;0;false;false;63;95;191;;;
                                  -102561;3;0;false;false;;;;;;
                                  -102564;1;0;false;false;63;95;191;;;
                                  -102565;1;0;false;false;;;;;;
                                  -102566;5;0;false;false;63;95;191;;;
                                  -102571;1;0;false;false;;;;;;
                                  -102572;3;0;false;false;63;95;191;;;
                                  -102575;1;0;false;false;;;;;;
                                  -102576;5;0;false;false;63;95;191;;;
                                  -102581;1;0;false;false;;;;;;
                                  -102582;2;0;false;false;63;95;191;;;
                                  -102584;1;0;false;false;;;;;;
                                  -102585;3;0;false;false;63;95;191;;;
                                  -102588;1;0;false;false;;;;;;
                                  -102589;4;0;false;false;63;95;191;;;
                                  -102593;1;0;false;false;;;;;;
                                  -102594;9;0;false;false;63;95;191;;;
                                  -102603;1;0;false;false;;;;;;
                                  -102604;2;0;false;false;63;95;191;;;
                                  -102606;1;0;false;false;;;;;;
                                  -102607;2;0;false;false;63;95;191;;;
                                  -102609;1;0;false;false;;;;;;
                                  -102610;3;0;false;false;63;95;191;;;
                                  -102613;1;0;false;false;;;;;;
                                  -102614;9;0;false;false;63;95;191;;;
                                  -102623;1;0;false;false;;;;;;
                                  -102624;2;0;false;false;63;95;191;;;
                                  -102626;1;0;false;false;;;;;;
                                  -102627;3;0;false;false;63;95;191;;;
                                  -102630;4;0;false;false;;;;;;
                                  -102634;1;0;false;false;63;95;191;;;
                                  -102635;1;0;false;false;;;;;;
                                  -102636;4;0;false;false;63;95;191;;;
                                  -102640;1;0;false;false;;;;;;
                                  -102641;4;0;false;false;63;95;191;;;
                                  -102645;1;0;false;false;;;;;;
                                  -102646;2;0;false;false;63;95;191;;;
                                  -102648;1;0;false;false;;;;;;
                                  -102649;3;0;false;false;63;95;191;;;
                                  -102652;1;0;false;false;;;;;;
                                  -102653;6;0;false;false;63;95;191;;;
                                  -102659;1;0;false;false;;;;;;
                                  -102660;2;0;false;false;63;95;191;;;
                                  -102662;1;0;false;false;;;;;;
                                  -102663;2;0;false;false;63;95;191;;;
                                  -102665;1;0;false;false;;;;;;
                                  -102666;3;0;false;false;63;95;191;;;
                                  -102669;1;0;false;false;;;;;;
                                  -102670;3;0;false;false;63;95;191;;;
                                  -102673;1;0;false;false;;;;;;
                                  -102674;2;0;false;false;63;95;191;;;
                                  -102676;1;0;false;false;;;;;;
                                  -102677;1;0;false;false;63;95;191;;;
                                  -102678;1;0;false;false;;;;;;
                                  -102679;5;0;false;false;63;95;191;;;
                                  -102684;3;0;false;false;;;;;;
                                  -102687;2;0;false;false;63;95;191;;;
                                  -102689;2;0;false;false;;;;;;
                                  -102691;4;1;false;false;127;0;85;;;
                                  -102695;1;0;false;false;;;;;;
                                  -102696;23;0;false;false;0;0;0;;;
                                  -102719;1;0;false;false;;;;;;
                                  -102720;1;0;false;false;0;0;0;;;
                                  -102721;3;0;false;false;;;;;;
                                  -102724;3;1;false;false;127;0;85;;;
                                  -102727;1;0;false;false;;;;;;
                                  -102728;9;0;false;false;0;0;0;;;
                                  -102737;1;0;false;false;;;;;;
                                  -102738;1;0;false;false;0;0;0;;;
                                  -102739;1;0;false;false;;;;;;
                                  -102740;15;0;false;false;0;0;0;;;
                                  -102755;3;0;false;false;;;;;;
                                  -102758;3;1;false;false;127;0;85;;;
                                  -102761;1;0;false;false;;;;;;
                                  -102762;10;0;false;false;0;0;0;;;
                                  -102772;1;0;false;false;;;;;;
                                  -102773;1;0;false;false;0;0;0;;;
                                  -102774;1;0;false;false;;;;;;
                                  -102775;35;0;false;false;0;0;0;;;
                                  -102810;3;0;false;false;;;;;;
                                  -102813;3;1;false;false;127;0;85;;;
                                  -102816;1;0;false;false;;;;;;
                                  -102817;12;0;false;false;0;0;0;;;
                                  -102829;1;0;false;false;;;;;;
                                  -102830;1;0;false;false;0;0;0;;;
                                  -102831;1;0;false;false;;;;;;
                                  -102832;11;0;false;false;0;0;0;;;
                                  -102843;1;0;false;false;;;;;;
                                  -102844;1;0;false;false;0;0;0;;;
                                  -102845;1;0;false;false;;;;;;
                                  -102846;11;0;false;false;0;0;0;;;
                                  -102857;3;0;false;false;;;;;;
                                  -102860;9;0;false;false;0;0;0;;;
                                  -102869;1;0;false;false;;;;;;
                                  -102870;1;0;false;false;0;0;0;;;
                                  -102871;1;0;false;false;;;;;;
                                  -102872;4;1;false;false;127;0;85;;;
                                  -102876;1;0;false;false;0;0;0;;;
                                  -102877;3;0;false;false;;;;;;
                                  -102880;2;1;false;false;127;0;85;;;
                                  -102882;1;0;false;false;;;;;;
                                  -102883;13;0;false;false;0;0;0;;;
                                  -102896;1;0;false;false;;;;;;
                                  -102897;1;0;false;false;0;0;0;;;
                                  -102898;1;0;false;false;;;;;;
                                  -102899;36;0;false;false;0;0;0;;;
                                  -102935;1;0;false;false;;;;;;
                                  -102936;1;0;false;false;0;0;0;;;
                                  -102937;4;0;false;false;;;;;;
                                  -102941;11;0;false;false;0;0;0;;;
                                  -102952;1;0;false;false;;;;;;
                                  -102953;1;0;false;false;0;0;0;;;
                                  -102954;1;0;false;false;;;;;;
                                  -102955;27;0;false;false;0;0;0;;;
                                  -102982;1;0;false;false;;;;;;
                                  -102983;11;0;false;false;0;0;0;;;
                                  -102994;4;0;false;false;;;;;;
                                  -102998;12;0;false;false;0;0;0;;;
                                  -103010;3;0;false;false;;;;;;
                                  -103013;1;0;false;false;0;0;0;;;
                                  -103014;3;0;false;false;;;;;;
                                  -103017;4;1;false;false;127;0;85;;;
                                  -103021;3;0;false;false;;;;;;
                                  -103024;2;1;false;false;127;0;85;;;
                                  -103026;1;0;false;false;;;;;;
                                  -103027;10;0;false;false;0;0;0;;;
                                  -103037;1;0;false;false;;;;;;
                                  -103038;1;0;false;false;0;0;0;;;
                                  -103039;1;0;false;false;;;;;;
                                  -103040;22;0;false;false;0;0;0;;;
                                  -103062;1;0;false;false;;;;;;
                                  -103063;1;0;false;false;0;0;0;;;
                                  -103064;1;0;false;false;;;;;;
                                  -103065;1;0;false;false;0;0;0;;;
                                  -103066;1;0;false;false;;;;;;
                                  -103067;2;0;false;false;0;0;0;;;
                                  -103069;1;0;false;false;;;;;;
                                  -103070;16;0;false;false;0;0;0;;;
                                  -103086;1;0;false;false;;;;;;
                                  -103087;1;0;false;false;0;0;0;;;
                                  -103088;4;0;false;false;;;;;;
                                  -103092;64;0;false;false;63;127;95;;;
                                  -103156;2;0;false;false;;;;;;
                                  -103158;12;0;false;false;0;0;0;;;
                                  -103170;6;0;false;false;;;;;;
                                  -103176;11;0;false;false;0;0;0;;;
                                  -103187;1;0;false;false;;;;;;
                                  -103188;1;0;false;false;0;0;0;;;
                                  -103189;1;0;false;false;;;;;;
                                  -103190;35;0;false;false;0;0;0;;;
                                  -103225;4;0;false;false;;;;;;
                                  -103229;66;0;false;false;63;127;95;;;
                                  -103295;2;0;false;false;;;;;;
                                  -103297;69;0;false;false;63;127;95;;;
                                  -103366;2;0;false;false;;;;;;
                                  -103368;21;0;false;false;0;0;0;;;
                                  -103389;3;0;false;false;;;;;;
                                  -103392;1;0;false;false;0;0;0;;;
                                  -103393;2;0;false;false;;;;;;
                                  -103395;1;0;false;false;0;0;0;;;
                                  -103396;2;0;false;false;;;;;;
                                  -103398;3;0;false;false;63;95;191;;;
                                  -103401;3;0;false;false;;;;;;
                                  -103404;1;0;false;false;63;95;191;;;
                                  -103405;1;0;false;false;;;;;;
                                  -103406;5;0;false;false;63;95;191;;;
                                  -103411;1;0;false;false;;;;;;
                                  -103412;3;0;false;false;63;95;191;;;
                                  -103415;1;0;false;false;;;;;;
                                  -103416;5;0;false;false;63;95;191;;;
                                  -103421;1;0;false;false;;;;;;
                                  -103422;2;0;false;false;63;95;191;;;
                                  -103424;1;0;false;false;;;;;;
                                  -103425;3;0;false;false;63;95;191;;;
                                  -103428;1;0;false;false;;;;;;
                                  -103429;8;0;false;false;63;95;191;;;
                                  -103437;1;0;false;false;;;;;;
                                  -103438;9;0;false;false;63;95;191;;;
                                  -103447;1;0;false;false;;;;;;
                                  -103448;2;0;false;false;63;95;191;;;
                                  -103450;1;0;false;false;;;;;;
                                  -103451;2;0;false;false;63;95;191;;;
                                  -103453;1;0;false;false;;;;;;
                                  -103454;3;0;false;false;63;95;191;;;
                                  -103457;1;0;false;false;;;;;;
                                  -103458;3;0;false;false;63;95;191;;;
                                  -103461;1;0;false;false;;;;;;
                                  -103462;2;0;false;false;63;95;191;;;
                                  -103464;1;0;false;false;;;;;;
                                  -103465;3;0;false;false;63;95;191;;;
                                  -103468;1;0;false;false;;;;;;
                                  -103469;8;0;false;false;63;95;191;;;
                                  -103477;4;0;false;false;;;;;;
                                  -103481;1;0;false;false;63;95;191;;;
                                  -103482;1;0;false;false;;;;;;
                                  -103483;4;0;false;false;63;95;191;;;
                                  -103487;1;0;false;false;;;;;;
                                  -103488;2;0;false;false;63;95;191;;;
                                  -103490;1;0;false;false;;;;;;
                                  -103491;3;0;false;false;63;95;191;;;
                                  -103494;1;0;false;false;;;;;;
                                  -103495;6;0;false;false;63;95;191;;;
                                  -103501;1;0;false;false;;;;;;
                                  -103502;2;0;false;false;63;95;191;;;
                                  -103504;1;0;false;false;;;;;;
                                  -103505;2;0;false;false;63;95;191;;;
                                  -103507;1;0;false;false;;;;;;
                                  -103508;3;0;false;false;63;95;191;;;
                                  -103511;1;0;false;false;;;;;;
                                  -103512;9;0;false;false;63;95;191;;;
                                  -103521;1;0;false;false;;;;;;
                                  -103522;2;0;false;false;63;95;191;;;
                                  -103524;1;0;false;false;;;;;;
                                  -103525;1;0;false;false;63;95;191;;;
                                  -103526;1;0;false;false;;;;;;
                                  -103527;5;0;false;false;63;95;191;;;
                                  -103532;3;0;false;false;;;;;;
                                  -103535;2;0;false;false;63;95;191;;;
                                  -103537;2;0;false;false;;;;;;
                                  -103539;4;1;false;false;127;0;85;;;
                                  -103543;1;0;false;false;;;;;;
                                  -103544;27;0;false;false;0;0;0;;;
                                  -103571;1;0;false;false;;;;;;
                                  -103572;1;0;false;false;0;0;0;;;
                                  -103573;3;0;false;false;;;;;;
                                  -103576;3;1;false;false;127;0;85;;;
                                  -103579;1;0;false;false;;;;;;
                                  -103580;9;0;false;false;0;0;0;;;
                                  -103589;1;0;false;false;;;;;;
                                  -103590;1;0;false;false;0;0;0;;;
                                  -103591;1;0;false;false;;;;;;
                                  -103592;15;0;false;false;0;0;0;;;
                                  -103607;3;0;false;false;;;;;;
                                  -103610;3;1;false;false;127;0;85;;;
                                  -103613;1;0;false;false;;;;;;
                                  -103614;10;0;false;false;0;0;0;;;
                                  -103624;1;0;false;false;;;;;;
                                  -103625;1;0;false;false;0;0;0;;;
                                  -103626;1;0;false;false;;;;;;
                                  -103627;35;0;false;false;0;0;0;;;
                                  -103662;3;0;false;false;;;;;;
                                  -103665;3;1;false;false;127;0;85;;;
                                  -103668;1;0;false;false;;;;;;
                                  -103669;12;0;false;false;0;0;0;;;
                                  -103681;1;0;false;false;;;;;;
                                  -103682;1;0;false;false;0;0;0;;;
                                  -103683;1;0;false;false;;;;;;
                                  -103684;11;0;false;false;0;0;0;;;
                                  -103695;1;0;false;false;;;;;;
                                  -103696;1;0;false;false;0;0;0;;;
                                  -103697;1;0;false;false;;;;;;
                                  -103698;11;0;false;false;0;0;0;;;
                                  -103709;3;0;false;false;;;;;;
                                  -103712;9;0;false;false;0;0;0;;;
                                  -103721;1;0;false;false;;;;;;
                                  -103722;1;0;false;false;0;0;0;;;
                                  -103723;1;0;false;false;;;;;;
                                  -103724;5;1;false;false;127;0;85;;;
                                  -103729;1;0;false;false;0;0;0;;;
                                  -103730;3;0;false;false;;;;;;
                                  -103733;2;1;false;false;127;0;85;;;
                                  -103735;1;0;false;false;;;;;;
                                  -103736;13;0;false;false;0;0;0;;;
                                  -103749;1;0;false;false;;;;;;
                                  -103750;1;0;false;false;0;0;0;;;
                                  -103751;1;0;false;false;;;;;;
                                  -103752;2;0;false;false;0;0;0;;;
                                  -103754;1;0;false;false;;;;;;
                                  -103755;1;0;false;false;0;0;0;;;
                                  -103756;4;0;false;false;;;;;;
                                  -103760;11;0;false;false;0;0;0;;;
                                  -103771;1;0;false;false;;;;;;
                                  -103772;1;0;false;false;0;0;0;;;
                                  -103773;1;0;false;false;;;;;;
                                  -103774;31;0;false;false;0;0;0;;;
                                  -103805;1;0;false;false;;;;;;
                                  -103806;11;0;false;false;0;0;0;;;
                                  -103817;4;0;false;false;;;;;;
                                  -103821;21;0;false;false;0;0;0;;;
                                  -103842;3;0;false;false;;;;;;
                                  -103845;1;0;false;false;0;0;0;;;
                                  -103846;3;0;false;false;;;;;;
                                  -103849;4;1;false;false;127;0;85;;;
                                  -103853;3;0;false;false;;;;;;
                                  -103856;2;1;false;false;127;0;85;;;
                                  -103858;1;0;false;false;;;;;;
                                  -103859;10;0;false;false;0;0;0;;;
                                  -103869;1;0;false;false;;;;;;
                                  -103870;1;0;false;false;0;0;0;;;
                                  -103871;1;0;false;false;;;;;;
                                  -103872;2;0;false;false;0;0;0;;;
                                  -103874;1;0;false;false;;;;;;
                                  -103875;1;0;false;false;0;0;0;;;
                                  -103876;4;0;false;false;;;;;;
                                  -103880;12;0;false;false;0;0;0;;;
                                  -103892;4;0;false;false;;;;;;
                                  -103896;10;0;false;false;0;0;0;;;
                                  -103906;1;0;false;false;;;;;;
                                  -103907;1;0;false;false;0;0;0;;;
                                  -103908;1;0;false;false;;;;;;
                                  -103909;35;0;false;false;0;0;0;;;
                                  -103944;4;0;false;false;;;;;;
                                  -103948;11;0;false;false;0;0;0;;;
                                  -103959;1;0;false;false;;;;;;
                                  -103960;1;0;false;false;0;0;0;;;
                                  -103961;1;0;false;false;;;;;;
                                  -103962;10;0;false;false;0;0;0;;;
                                  -103972;1;0;false;false;;;;;;
                                  -103973;1;0;false;false;0;0;0;;;
                                  -103974;1;0;false;false;;;;;;
                                  -103975;36;0;false;false;0;0;0;;;
                                  -104011;4;0;false;false;;;;;;
                                  -104015;12;0;false;false;0;0;0;;;
                                  -104027;3;0;false;false;;;;;;
                                  -104030;1;0;false;false;0;0;0;;;
                                  -104031;2;0;false;false;;;;;;
                                  -104033;1;0;false;false;0;0;0;;;
                                  -104034;2;0;false;false;;;;;;
                                  -104036;3;0;false;false;63;95;191;;;
                                  -104039;3;0;false;false;;;;;;
                                  -104042;1;0;false;false;63;95;191;;;
                                  -104043;1;0;false;false;;;;;;
                                  -104044;5;0;false;false;63;95;191;;;
                                  -104049;1;0;false;false;;;;;;
                                  -104050;3;0;false;false;63;95;191;;;
                                  -104053;1;0;false;false;;;;;;
                                  -104054;5;0;false;false;63;95;191;;;
                                  -104059;1;0;false;false;;;;;;
                                  -104060;3;0;false;false;63;95;191;;;
                                  -104063;1;0;false;false;;;;;;
                                  -104064;4;0;false;false;63;95;191;;;
                                  -104068;1;0;false;false;;;;;;
                                  -104069;4;0;false;false;63;95;191;;;
                                  -104073;1;0;false;false;;;;;;
                                  -104074;3;0;false;false;63;95;191;;;
                                  -104077;1;0;false;false;;;;;;
                                  -104078;2;0;false;false;63;95;191;;;
                                  -104080;1;0;false;false;;;;;;
                                  -104081;3;0;false;false;63;95;191;;;
                                  -104084;1;0;false;false;;;;;;
                                  -104085;4;0;false;false;63;95;191;;;
                                  -104089;1;0;false;false;;;;;;
                                  -104090;9;0;false;false;63;95;191;;;
                                  -104099;1;0;false;false;;;;;;
                                  -104100;6;0;false;false;63;95;191;;;
                                  -104106;1;0;false;false;;;;;;
                                  -104107;8;0;false;false;63;95;191;;;
                                  -104115;4;0;false;false;;;;;;
                                  -104119;1;0;false;false;63;95;191;;;
                                  -104120;1;0;false;false;;;;;;
                                  -104121;2;0;false;false;63;95;191;;;
                                  -104123;1;0;false;false;;;;;;
                                  -104124;3;0;false;false;63;95;191;;;
                                  -104127;1;0;false;false;;;;;;
                                  -104128;9;0;false;false;63;95;191;;;
                                  -104137;1;0;false;false;;;;;;
                                  -104138;2;0;false;false;63;95;191;;;
                                  -104140;1;0;false;false;;;;;;
                                  -104141;3;0;false;false;63;95;191;;;
                                  -104144;1;0;false;false;;;;;;
                                  -104145;5;0;false;false;63;95;191;;;
                                  -104150;1;0;false;false;;;;;;
                                  -104151;5;0;false;false;63;95;191;;;
                                  -104156;1;0;false;false;;;;;;
                                  -104157;3;0;false;false;63;95;191;;;
                                  -104160;1;0;false;false;;;;;;
                                  -104161;5;0;false;false;63;95;191;;;
                                  -104166;1;0;false;false;;;;;;
                                  -104167;2;0;false;false;63;95;191;;;
                                  -104169;1;0;false;false;;;;;;
                                  -104170;3;0;false;false;63;95;191;;;
                                  -104173;1;0;false;false;;;;;;
                                  -104174;3;0;false;false;63;95;191;;;
                                  -104177;1;0;false;false;;;;;;
                                  -104178;2;0;false;false;63;95;191;;;
                                  -104180;1;0;false;false;;;;;;
                                  -104181;3;0;false;false;63;95;191;;;
                                  -104184;1;0;false;false;;;;;;
                                  -104185;3;0;false;false;63;95;191;;;
                                  -104188;1;0;false;false;;;;;;
                                  -104189;4;0;false;false;63;95;191;;;
                                  -104193;4;0;false;false;;;;;;
                                  -104197;1;0;false;false;63;95;191;;;
                                  -104198;1;0;false;false;;;;;;
                                  -104199;2;0;false;false;63;95;191;;;
                                  -104201;1;0;false;false;;;;;;
                                  -104202;3;0;false;false;63;95;191;;;
                                  -104205;1;0;false;false;;;;;;
                                  -104206;3;0;false;false;63;95;191;;;
                                  -104209;1;0;false;false;;;;;;
                                  -104210;4;0;false;false;63;95;191;;;
                                  -104214;1;0;false;false;;;;;;
                                  -104215;2;0;false;false;63;95;191;;;
                                  -104217;1;0;false;false;;;;;;
                                  -104218;7;0;false;false;63;95;191;;;
                                  -104225;1;0;false;false;;;;;;
                                  -104226;4;0;false;false;63;95;191;;;
                                  -104230;1;0;false;false;;;;;;
                                  -104231;3;0;false;false;63;95;191;;;
                                  -104234;1;0;false;false;;;;;;
                                  -104235;9;0;false;false;63;95;191;;;
                                  -104244;1;0;false;false;;;;;;
                                  -104245;7;0;false;false;63;95;191;;;
                                  -104252;3;0;false;false;;;;;;
                                  -104255;1;0;false;false;63;95;191;;;
                                  -104256;1;0;false;false;;;;;;
                                  -104257;5;0;false;false;63;95;191;;;
                                  -104262;1;0;false;false;;;;;;
                                  -104263;3;0;false;false;63;95;191;;;
                                  -104266;1;0;false;false;;;;;;
                                  -104267;5;0;false;false;63;95;191;;;
                                  -104272;1;0;false;false;;;;;;
                                  -104273;2;0;false;false;63;95;191;;;
                                  -104275;1;0;false;false;;;;;;
                                  -104276;3;0;false;false;63;95;191;;;
                                  -104279;1;0;false;false;;;;;;
                                  -104280;3;0;false;false;63;95;191;;;
                                  -104283;1;0;false;false;;;;;;
                                  -104284;2;0;false;false;63;95;191;;;
                                  -104286;1;0;false;false;;;;;;
                                  -104287;3;0;false;false;63;95;191;;;
                                  -104290;1;0;false;false;;;;;;
                                  -104291;4;0;false;false;63;95;191;;;
                                  -104295;1;0;false;false;;;;;;
                                  -104296;2;0;false;false;63;95;191;;;
                                  -104298;1;0;false;false;;;;;;
                                  -104299;3;0;false;false;63;95;191;;;
                                  -104302;1;0;false;false;;;;;;
                                  -104303;5;0;false;false;63;95;191;;;
                                  -104308;1;0;false;false;;;;;;
                                  -104309;7;0;false;false;63;95;191;;;
                                  -104316;1;0;false;false;;;;;;
                                  -104317;2;0;false;false;63;95;191;;;
                                  -104319;1;0;false;false;;;;;;
                                  -104320;2;0;false;false;63;95;191;;;
                                  -104322;1;0;false;false;;;;;;
                                  -104323;3;0;false;false;63;95;191;;;
                                  -104326;4;0;false;false;;;;;;
                                  -104330;1;0;false;false;63;95;191;;;
                                  -104331;1;0;false;false;;;;;;
                                  -104332;4;0;false;false;63;95;191;;;
                                  -104336;1;0;false;false;;;;;;
                                  -104337;5;0;false;false;63;95;191;;;
                                  -104342;3;0;false;false;;;;;;
                                  -104345;1;0;false;false;63;95;191;;;
                                  -104346;1;0;false;false;;;;;;
                                  -104347;7;0;false;false;63;95;191;;;
                                  -104354;1;0;false;false;;;;;;
                                  -104355;3;0;false;false;63;95;191;;;
                                  -104358;1;0;false;false;;;;;;
                                  -104359;9;0;false;false;63;95;191;;;
                                  -104368;1;0;false;false;;;;;;
                                  -104369;9;0;false;false;63;95;191;;;
                                  -104378;1;0;false;false;;;;;;
                                  -104379;2;0;false;false;63;95;191;;;
                                  -104381;1;0;false;false;;;;;;
                                  -104382;3;0;false;false;63;95;191;;;
                                  -104385;1;0;false;false;;;;;;
                                  -104386;5;0;false;false;63;95;191;;;
                                  -104391;1;0;false;false;;;;;;
                                  -104392;7;0;false;false;63;95;191;;;
                                  -104399;1;0;false;false;;;;;;
                                  -104400;4;0;false;false;63;95;191;;;
                                  -104404;1;0;false;false;;;;;;
                                  -104405;3;0;false;false;63;95;191;;;
                                  -104408;1;0;false;false;;;;;;
                                  -104409;6;0;false;false;63;95;191;;;
                                  -104415;1;0;false;false;;;;;;
                                  -104416;3;0;false;false;63;95;191;;;
                                  -104419;3;0;false;false;;;;;;
                                  -104422;1;0;false;false;63;95;191;;;
                                  -104423;1;0;false;false;;;;;;
                                  -104424;2;0;false;false;63;95;191;;;
                                  -104426;1;0;false;false;;;;;;
                                  -104427;2;0;false;false;63;95;191;;;
                                  -104429;1;0;false;false;;;;;;
                                  -104430;8;0;false;false;63;95;191;;;
                                  -104438;1;0;false;false;;;;;;
                                  -104439;4;0;false;false;63;95;191;;;
                                  -104443;1;0;false;false;;;;;;
                                  -104444;3;0;false;false;63;95;191;;;
                                  -104447;1;0;false;false;;;;;;
                                  -104448;3;0;false;false;63;95;191;;;
                                  -104451;1;0;false;false;;;;;;
                                  -104452;10;0;false;false;63;95;191;;;
                                  -104462;1;0;false;false;;;;;;
                                  -104463;9;0;false;false;63;95;191;;;
                                  -104472;1;0;false;false;;;;;;
                                  -104473;2;0;false;false;63;95;191;;;
                                  -104475;1;0;false;false;;;;;;
                                  -104476;3;0;false;false;63;95;191;;;
                                  -104479;1;0;false;false;;;;;;
                                  -104480;8;0;false;false;63;95;191;;;
                                  -104488;1;0;false;false;;;;;;
                                  -104489;9;0;false;false;63;95;191;;;
                                  -104498;3;0;false;false;;;;;;
                                  -104501;1;0;false;false;63;95;191;;;
                                  -104502;1;0;false;false;;;;;;
                                  -104503;10;0;false;false;63;95;191;;;
                                  -104513;3;0;false;false;;;;;;
                                  -104516;2;0;false;false;63;95;191;;;
                                  -104518;2;0;false;false;;;;;;
                                  -104520;4;1;false;false;127;0;85;;;
                                  -104524;1;0;false;false;;;;;;
                                  -104525;21;0;false;false;0;0;0;;;
                                  -104546;1;0;false;false;;;;;;
                                  -104547;1;0;false;false;0;0;0;;;
                                  -104548;3;0;false;false;;;;;;
                                  -104551;3;1;false;false;127;0;85;;;
                                  -104554;1;0;false;false;;;;;;
                                  -104555;11;0;false;false;0;0;0;;;
                                  -104566;3;0;false;false;;;;;;
                                  -104569;3;1;false;false;127;0;85;;;
                                  -104572;1;0;false;false;;;;;;
                                  -104573;10;0;false;false;0;0;0;;;
                                  -104583;3;0;false;false;;;;;;
                                  -104586;3;1;false;false;127;0;85;;;
                                  -104589;1;0;false;false;;;;;;
                                  -104590;16;0;false;false;0;0;0;;;
                                  -104606;6;0;false;false;;;;;;
                                  -104612;2;1;false;false;127;0;85;;;
                                  -104614;1;0;false;false;;;;;;
                                  -104615;16;0;false;false;0;0;0;;;
                                  -104631;1;0;false;false;;;;;;
                                  -104632;1;0;false;false;0;0;0;;;
                                  -104633;4;0;false;false;;;;;;
                                  -104637;6;1;false;false;127;0;85;;;
                                  -104643;1;0;false;false;0;0;0;;;
                                  -104644;3;0;false;false;;;;;;
                                  -104647;1;0;false;false;0;0;0;;;
                                  -104648;3;0;false;false;;;;;;
                                  -104651;9;0;false;false;0;0;0;;;
                                  -104660;1;0;false;false;;;;;;
                                  -104661;1;0;false;false;0;0;0;;;
                                  -104662;1;0;false;false;;;;;;
                                  -104663;15;0;false;false;0;0;0;;;
                                  -104678;4;0;false;false;;;;;;
                                  -104682;15;0;false;false;0;0;0;;;
                                  -104697;1;0;false;false;;;;;;
                                  -104698;1;0;false;false;0;0;0;;;
                                  -104699;1;0;false;false;;;;;;
                                  -104700;35;0;false;false;0;0;0;;;
                                  -104735;3;0;false;false;;;;;;
                                  -104738;31;0;false;false;63;127;95;;;
                                  -104769;1;0;false;false;;;;;;
                                  -104770;10;0;false;false;0;0;0;;;
                                  -104780;1;0;false;false;;;;;;
                                  -104781;1;0;false;false;0;0;0;;;
                                  -104782;1;0;false;false;;;;;;
                                  -104783;7;0;false;false;0;0;0;;;
                                  -104790;1;0;false;false;;;;;;
                                  -104791;1;0;false;false;0;0;0;;;
                                  -104792;1;0;false;false;;;;;;
                                  -104793;13;0;false;false;0;0;0;;;
                                  -104806;4;0;false;false;;;;;;
                                  -104810;27;0;false;false;0;0;0;;;
                                  -104837;1;0;false;false;;;;;;
                                  -104838;10;0;false;false;0;0;0;;;
                                  -104848;1;0;false;false;;;;;;
                                  -104849;11;0;false;false;0;0;0;;;
                                  -104860;1;0;false;false;;;;;;
                                  -104861;1;0;false;false;0;0;0;;;
                                  -104862;1;0;false;false;;;;;;
                                  -104863;17;0;false;false;0;0;0;;;
                                  -104880;3;0;false;false;;;;;;
                                  -104883;2;1;false;false;127;0;85;;;
                                  -104885;1;0;false;false;;;;;;
                                  -104886;10;0;false;false;0;0;0;;;
                                  -104896;1;0;false;false;;;;;;
                                  -104897;2;0;false;false;0;0;0;;;
                                  -104899;1;0;false;false;;;;;;
                                  -104900;22;0;false;false;0;0;0;;;
                                  -104922;1;0;false;false;;;;;;
                                  -104923;1;0;false;false;0;0;0;;;
                                  -104924;1;0;false;false;;;;;;
                                  -104925;2;0;false;false;0;0;0;;;
                                  -104927;1;0;false;false;;;;;;
                                  -104928;1;0;false;false;0;0;0;;;
                                  -104929;4;0;false;false;;;;;;
                                  -104933;11;0;false;false;0;0;0;;;
                                  -104944;1;0;false;false;;;;;;
                                  -104945;1;0;false;false;0;0;0;;;
                                  -104946;1;0;false;false;;;;;;
                                  -104947;23;0;false;false;0;0;0;;;
                                  -104970;3;0;false;false;;;;;;
                                  -104973;1;0;false;false;0;0;0;;;
                                  -104974;3;0;false;false;;;;;;
                                  -104977;4;1;false;false;127;0;85;;;
                                  -104981;1;0;false;false;;;;;;
                                  -104982;1;0;false;false;0;0;0;;;
                                  -104983;4;0;false;false;;;;;;
                                  -104987;9;0;false;false;0;0;0;;;
                                  -104996;1;0;false;false;;;;;;
                                  -104997;1;0;false;false;0;0;0;;;
                                  -104998;1;0;false;false;;;;;;
                                  -104999;13;0;false;false;0;0;0;;;
                                  -105012;3;0;false;false;;;;;;
                                  -105015;1;0;false;false;0;0;0;;;
                                  -105016;3;0;false;false;;;;;;
                                  -105019;30;0;false;false;0;0;0;;;
                                  -105049;4;0;false;false;;;;;;
                                  -105053;59;0;false;false;63;127;95;;;
                                  -105112;1;0;false;false;;;;;;
                                  -105113;33;0;false;false;63;127;95;;;
                                  -105146;1;0;false;false;;;;;;
                                  -105147;28;0;false;false;0;0;0;;;
                                  -105175;3;0;false;false;;;;;;
                                  -105178;66;0;false;false;63;127;95;;;
                                  -105244;1;0;false;false;;;;;;
                                  -105245;69;0;false;false;63;127;95;;;
                                  -105314;1;0;false;false;;;;;;
                                  -105315;21;0;false;false;0;0;0;;;
                                  -105336;3;0;false;false;;;;;;
                                  -105339;48;0;false;false;63;127;95;;;
                                  -105387;1;0;false;false;;;;;;
                                  -105388;7;0;false;false;0;0;0;;;
                                  -105395;1;0;false;false;;;;;;
                                  -105396;1;0;false;false;0;0;0;;;
                                  -105397;1;0;false;false;;;;;;
                                  -105398;11;0;false;false;0;0;0;;;
                                  -105409;2;0;false;false;;;;;;
                                  -105411;1;0;false;false;0;0;0;;;
                                  -105412;2;0;false;false;;;;;;
                                  -105414;3;0;false;false;63;95;191;;;
                                  -105417;3;0;false;false;;;;;;
                                  -105420;1;0;false;false;63;95;191;;;
                                  -105421;1;0;false;false;;;;;;
                                  -105422;5;0;false;false;63;95;191;;;
                                  -105427;1;0;false;false;;;;;;
                                  -105428;3;0;false;false;63;95;191;;;
                                  -105431;1;0;false;false;;;;;;
                                  -105432;5;0;false;false;63;95;191;;;
                                  -105437;1;0;false;false;;;;;;
                                  -105438;3;0;false;false;63;95;191;;;
                                  -105441;1;0;false;false;;;;;;
                                  -105442;4;0;false;false;63;95;191;;;
                                  -105446;1;0;false;false;;;;;;
                                  -105447;2;0;false;false;63;95;191;;;
                                  -105449;1;0;false;false;;;;;;
                                  -105450;3;0;false;false;63;95;191;;;
                                  -105453;1;0;false;false;;;;;;
                                  -105454;2;0;false;false;63;95;191;;;
                                  -105456;1;0;false;false;;;;;;
                                  -105457;3;0;false;false;63;95;191;;;
                                  -105460;1;0;false;false;;;;;;
                                  -105461;4;0;false;false;63;95;191;;;
                                  -105465;1;0;false;false;;;;;;
                                  -105466;9;0;false;false;63;95;191;;;
                                  -105475;1;0;false;false;;;;;;
                                  -105476;6;0;false;false;63;95;191;;;
                                  -105482;1;0;false;false;;;;;;
                                  -105483;8;0;false;false;63;95;191;;;
                                  -105491;4;0;false;false;;;;;;
                                  -105495;1;0;false;false;63;95;191;;;
                                  -105496;1;0;false;false;;;;;;
                                  -105497;2;0;false;false;63;95;191;;;
                                  -105499;1;0;false;false;;;;;;
                                  -105500;3;0;false;false;63;95;191;;;
                                  -105503;1;0;false;false;;;;;;
                                  -105504;9;0;false;false;63;95;191;;;
                                  -105513;1;0;false;false;;;;;;
                                  -105514;2;0;false;false;63;95;191;;;
                                  -105516;1;0;false;false;;;;;;
                                  -105517;3;0;false;false;63;95;191;;;
                                  -105520;1;0;false;false;;;;;;
                                  -105521;5;0;false;false;63;95;191;;;
                                  -105526;1;0;false;false;;;;;;
                                  -105527;5;0;false;false;63;95;191;;;
                                  -105532;1;0;false;false;;;;;;
                                  -105533;3;0;false;false;63;95;191;;;
                                  -105536;1;0;false;false;;;;;;
                                  -105537;5;0;false;false;63;95;191;;;
                                  -105542;1;0;false;false;;;;;;
                                  -105543;2;0;false;false;63;95;191;;;
                                  -105545;1;0;false;false;;;;;;
                                  -105546;3;0;false;false;63;95;191;;;
                                  -105549;1;0;false;false;;;;;;
                                  -105550;3;0;false;false;63;95;191;;;
                                  -105553;1;0;false;false;;;;;;
                                  -105554;2;0;false;false;63;95;191;;;
                                  -105556;1;0;false;false;;;;;;
                                  -105557;3;0;false;false;63;95;191;;;
                                  -105560;1;0;false;false;;;;;;
                                  -105561;3;0;false;false;63;95;191;;;
                                  -105564;1;0;false;false;;;;;;
                                  -105565;4;0;false;false;63;95;191;;;
                                  -105569;4;0;false;false;;;;;;
                                  -105573;1;0;false;false;63;95;191;;;
                                  -105574;1;0;false;false;;;;;;
                                  -105575;2;0;false;false;63;95;191;;;
                                  -105577;1;0;false;false;;;;;;
                                  -105578;3;0;false;false;63;95;191;;;
                                  -105581;1;0;false;false;;;;;;
                                  -105582;3;0;false;false;63;95;191;;;
                                  -105585;1;0;false;false;;;;;;
                                  -105586;4;0;false;false;63;95;191;;;
                                  -105590;1;0;false;false;;;;;;
                                  -105591;2;0;false;false;63;95;191;;;
                                  -105593;1;0;false;false;;;;;;
                                  -105594;7;0;false;false;63;95;191;;;
                                  -105601;1;0;false;false;;;;;;
                                  -105602;4;0;false;false;63;95;191;;;
                                  -105606;1;0;false;false;;;;;;
                                  -105607;3;0;false;false;63;95;191;;;
                                  -105610;1;0;false;false;;;;;;
                                  -105611;9;0;false;false;63;95;191;;;
                                  -105620;1;0;false;false;;;;;;
                                  -105621;7;0;false;false;63;95;191;;;
                                  -105628;3;0;false;false;;;;;;
                                  -105631;1;0;false;false;63;95;191;;;
                                  -105632;1;0;false;false;;;;;;
                                  -105633;5;0;false;false;63;95;191;;;
                                  -105638;1;0;false;false;;;;;;
                                  -105639;3;0;false;false;63;95;191;;;
                                  -105642;1;0;false;false;;;;;;
                                  -105643;5;0;false;false;63;95;191;;;
                                  -105648;1;0;false;false;;;;;;
                                  -105649;2;0;false;false;63;95;191;;;
                                  -105651;1;0;false;false;;;;;;
                                  -105652;3;0;false;false;63;95;191;;;
                                  -105655;1;0;false;false;;;;;;
                                  -105656;9;0;false;false;63;95;191;;;
                                  -105665;1;0;false;false;;;;;;
                                  -105666;2;0;false;false;63;95;191;;;
                                  -105668;1;0;false;false;;;;;;
                                  -105669;3;0;false;false;63;95;191;;;
                                  -105672;1;0;false;false;;;;;;
                                  -105673;8;0;false;false;63;95;191;;;
                                  -105681;1;0;false;false;;;;;;
                                  -105682;2;0;false;false;63;95;191;;;
                                  -105684;1;0;false;false;;;;;;
                                  -105685;2;0;false;false;63;95;191;;;
                                  -105687;1;0;false;false;;;;;;
                                  -105688;2;0;false;false;63;95;191;;;
                                  -105690;1;0;false;false;;;;;;
                                  -105691;7;0;false;false;63;95;191;;;
                                  -105698;1;0;false;false;;;;;;
                                  -105699;2;0;false;false;63;95;191;;;
                                  -105701;1;0;false;false;;;;;;
                                  -105702;3;0;false;false;63;95;191;;;
                                  -105705;3;0;false;false;;;;;;
                                  -105708;1;0;false;false;63;95;191;;;
                                  -105709;1;0;false;false;;;;;;
                                  -105710;5;0;false;false;63;95;191;;;
                                  -105715;1;0;false;false;;;;;;
                                  -105716;5;0;false;false;63;95;191;;;
                                  -105721;3;0;false;false;;;;;;
                                  -105724;1;0;false;false;63;95;191;;;
                                  -105725;1;0;false;false;;;;;;
                                  -105726;7;0;false;false;63;95;191;;;
                                  -105733;1;0;false;false;;;;;;
                                  -105734;3;0;false;false;63;95;191;;;
                                  -105737;1;0;false;false;;;;;;
                                  -105738;9;0;false;false;63;95;191;;;
                                  -105747;1;0;false;false;;;;;;
                                  -105748;9;0;false;false;63;95;191;;;
                                  -105757;1;0;false;false;;;;;;
                                  -105758;2;0;false;false;63;95;191;;;
                                  -105760;1;0;false;false;;;;;;
                                  -105761;3;0;false;false;63;95;191;;;
                                  -105764;1;0;false;false;;;;;;
                                  -105765;5;0;false;false;63;95;191;;;
                                  -105770;1;0;false;false;;;;;;
                                  -105771;7;0;false;false;63;95;191;;;
                                  -105778;1;0;false;false;;;;;;
                                  -105779;4;0;false;false;63;95;191;;;
                                  -105783;1;0;false;false;;;;;;
                                  -105784;3;0;false;false;63;95;191;;;
                                  -105787;1;0;false;false;;;;;;
                                  -105788;6;0;false;false;63;95;191;;;
                                  -105794;1;0;false;false;;;;;;
                                  -105795;3;0;false;false;63;95;191;;;
                                  -105798;3;0;false;false;;;;;;
                                  -105801;1;0;false;false;63;95;191;;;
                                  -105802;1;0;false;false;;;;;;
                                  -105803;2;0;false;false;63;95;191;;;
                                  -105805;1;0;false;false;;;;;;
                                  -105806;2;0;false;false;63;95;191;;;
                                  -105808;1;0;false;false;;;;;;
                                  -105809;8;0;false;false;63;95;191;;;
                                  -105817;1;0;false;false;;;;;;
                                  -105818;4;0;false;false;63;95;191;;;
                                  -105822;1;0;false;false;;;;;;
                                  -105823;3;0;false;false;63;95;191;;;
                                  -105826;1;0;false;false;;;;;;
                                  -105827;3;0;false;false;63;95;191;;;
                                  -105830;1;0;false;false;;;;;;
                                  -105831;10;0;false;false;63;95;191;;;
                                  -105841;1;0;false;false;;;;;;
                                  -105842;9;0;false;false;63;95;191;;;
                                  -105851;1;0;false;false;;;;;;
                                  -105852;2;0;false;false;63;95;191;;;
                                  -105854;1;0;false;false;;;;;;
                                  -105855;3;0;false;false;63;95;191;;;
                                  -105858;1;0;false;false;;;;;;
                                  -105859;8;0;false;false;63;95;191;;;
                                  -105867;1;0;false;false;;;;;;
                                  -105868;9;0;false;false;63;95;191;;;
                                  -105877;3;0;false;false;;;;;;
                                  -105880;1;0;false;false;63;95;191;;;
                                  -105881;1;0;false;false;;;;;;
                                  -105882;10;0;false;false;63;95;191;;;
                                  -105892;3;0;false;false;;;;;;
                                  -105895;2;0;false;false;63;95;191;;;
                                  -105897;2;0;false;false;;;;;;
                                  -105899;4;1;false;false;127;0;85;;;
                                  -105903;1;0;false;false;;;;;;
                                  -105904;19;0;false;false;0;0;0;;;
                                  -105923;1;0;false;false;;;;;;
                                  -105924;1;0;false;false;0;0;0;;;
                                  -105925;3;0;false;false;;;;;;
                                  -105928;3;1;false;false;127;0;85;;;
                                  -105931;1;0;false;false;;;;;;
                                  -105932;11;0;false;false;0;0;0;;;
                                  -105943;3;0;false;false;;;;;;
                                  -105946;3;1;false;false;127;0;85;;;
                                  -105949;1;0;false;false;;;;;;
                                  -105950;9;0;false;false;0;0;0;;;
                                  -105959;1;0;false;false;;;;;;
                                  -105960;1;0;false;false;0;0;0;;;
                                  -105961;1;0;false;false;;;;;;
                                  -105962;15;0;false;false;0;0;0;;;
                                  -105977;4;0;false;false;;;;;;
                                  -105981;3;1;false;false;127;0;85;;;
                                  -105984;1;0;false;false;;;;;;
                                  -105985;15;0;false;false;0;0;0;;;
                                  -106000;1;0;false;false;;;;;;
                                  -106001;1;0;false;false;0;0;0;;;
                                  -106002;1;0;false;false;;;;;;
                                  -106003;35;0;false;false;0;0;0;;;
                                  -106038;6;0;false;false;;;;;;
                                  -106044;31;0;false;false;63;127;95;;;
                                  -106075;1;0;false;false;;;;;;
                                  -106076;10;0;false;false;0;0;0;;;
                                  -106086;1;0;false;false;;;;;;
                                  -106087;1;0;false;false;0;0;0;;;
                                  -106088;1;0;false;false;;;;;;
                                  -106089;7;0;false;false;0;0;0;;;
                                  -106096;1;0;false;false;;;;;;
                                  -106097;1;0;false;false;0;0;0;;;
                                  -106098;1;0;false;false;;;;;;
                                  -106099;13;0;false;false;0;0;0;;;
                                  -106112;4;0;false;false;;;;;;
                                  -106116;27;0;false;false;0;0;0;;;
                                  -106143;1;0;false;false;;;;;;
                                  -106144;10;0;false;false;0;0;0;;;
                                  -106154;1;0;false;false;;;;;;
                                  -106155;11;0;false;false;0;0;0;;;
                                  -106166;1;0;false;false;;;;;;
                                  -106167;1;0;false;false;0;0;0;;;
                                  -106168;1;0;false;false;;;;;;
                                  -106169;17;0;false;false;0;0;0;;;
                                  -106186;4;0;false;false;;;;;;
                                  -106190;2;1;false;false;127;0;85;;;
                                  -106192;1;0;false;false;;;;;;
                                  -106193;10;0;false;false;0;0;0;;;
                                  -106203;1;0;false;false;;;;;;
                                  -106204;2;0;false;false;0;0;0;;;
                                  -106206;1;0;false;false;;;;;;
                                  -106207;2;0;false;false;0;0;0;;;
                                  -106209;1;0;false;false;;;;;;
                                  -106210;1;0;false;false;0;0;0;;;
                                  -106211;4;0;false;false;;;;;;
                                  -106215;11;0;false;false;0;0;0;;;
                                  -106226;1;0;false;false;;;;;;
                                  -106227;1;0;false;false;0;0;0;;;
                                  -106228;1;0;false;false;;;;;;
                                  -106229;2;0;false;false;0;0;0;;;
                                  -106231;3;0;false;false;;;;;;
                                  -106234;1;0;false;false;0;0;0;;;
                                  -106235;3;0;false;false;;;;;;
                                  -106238;4;1;false;false;127;0;85;;;
                                  -106242;1;0;false;false;;;;;;
                                  -106243;1;0;false;false;0;0;0;;;
                                  -106244;4;0;false;false;;;;;;
                                  -106248;9;0;false;false;0;0;0;;;
                                  -106257;1;0;false;false;;;;;;
                                  -106258;1;0;false;false;0;0;0;;;
                                  -106259;1;0;false;false;;;;;;
                                  -106260;11;0;false;false;0;0;0;;;
                                  -106271;3;0;false;false;;;;;;
                                  -106274;1;0;false;false;0;0;0;;;
                                  -106275;3;0;false;false;;;;;;
                                  -106278;30;0;false;false;0;0;0;;;
                                  -106308;3;0;false;false;;;;;;
                                  -106311;66;0;false;false;63;127;95;;;
                                  -106377;1;0;false;false;;;;;;
                                  -106378;69;0;false;false;63;127;95;;;
                                  -106447;1;0;false;false;;;;;;
                                  -106448;21;0;false;false;0;0;0;;;
                                  -106469;3;0;false;false;;;;;;
                                  -106472;32;0;false;false;0;0;0;;;
                                  -106504;3;0;false;false;;;;;;
                                  -106507;49;0;false;false;63;127;95;;;
                                  -106556;1;0;false;false;;;;;;
                                  -106557;7;0;false;false;0;0;0;;;
                                  -106564;1;0;false;false;;;;;;
                                  -106565;1;0;false;false;0;0;0;;;
                                  -106566;1;0;false;false;;;;;;
                                  -106567;11;0;false;false;0;0;0;;;
                                  -106578;2;0;false;false;;;;;;
                                  -106580;1;0;false;false;0;0;0;;;
                                  -106581;2;0;false;false;;;;;;
                                  -106583;3;0;false;false;63;95;191;;;
                                  -106586;3;0;false;false;;;;;;
                                  -106589;1;0;false;false;63;95;191;;;
                                  -106590;1;0;false;false;;;;;;
                                  -106591;7;0;false;false;63;95;191;;;
                                  -106598;1;0;false;false;;;;;;
                                  -106599;3;0;false;false;63;95;191;;;
                                  -106602;1;0;false;false;;;;;;
                                  -106603;4;0;false;false;63;95;191;;;
                                  -106607;1;0;false;false;;;;;;
                                  -106608;4;0;false;false;63;95;191;;;
                                  -106612;1;0;false;false;;;;;;
                                  -106613;2;0;false;false;63;95;191;;;
                                  -106615;1;0;false;false;;;;;;
                                  -106616;4;0;false;false;63;95;191;;;
                                  -106620;1;0;false;false;;;;;;
                                  -106621;3;0;false;false;63;95;191;;;
                                  -106624;1;0;false;false;;;;;;
                                  -106625;4;0;false;false;63;95;191;;;
                                  -106629;1;0;false;false;;;;;;
                                  -106630;4;0;false;false;63;95;191;;;
                                  -106634;1;0;false;false;;;;;;
                                  -106635;10;0;false;false;63;95;191;;;
                                  -106645;1;0;false;false;;;;;;
                                  -106646;2;0;false;false;63;95;191;;;
                                  -106648;1;0;false;false;;;;;;
                                  -106649;6;0;false;false;63;95;191;;;
                                  -106655;3;0;false;false;;;;;;
                                  -106658;1;0;false;false;63;95;191;;;
                                  -106659;1;0;false;false;;;;;;
                                  -106660;2;0;false;false;63;95;191;;;
                                  -106662;1;0;false;false;;;;;;
                                  -106663;3;0;false;false;63;95;191;;;
                                  -106666;1;0;false;false;;;;;;
                                  -106667;7;0;false;false;63;95;191;;;
                                  -106674;1;0;false;false;;;;;;
                                  -106675;4;0;false;false;63;95;191;;;
                                  -106679;1;0;false;false;;;;;;
                                  -106680;7;0;false;false;63;95;191;;;
                                  -106687;1;0;false;false;;;;;;
                                  -106688;3;0;false;false;63;95;191;;;
                                  -106691;1;0;false;false;;;;;;
                                  -106692;5;0;false;false;63;95;191;;;
                                  -106697;1;0;false;false;;;;;;
                                  -106698;7;0;false;false;63;95;191;;;
                                  -106705;1;0;false;false;;;;;;
                                  -106706;3;0;false;false;63;95;191;;;
                                  -106709;1;0;false;false;;;;;;
                                  -106710;5;0;false;false;63;95;191;;;
                                  -106715;3;0;false;false;;;;;;
                                  -106718;1;0;false;false;63;95;191;;;
                                  -106719;1;0;false;false;;;;;;
                                  -106720;3;0;false;false;63;95;191;;;
                                  -106723;1;0;false;false;;;;;;
                                  -106724;5;0;false;false;63;95;191;;;
                                  -106729;1;0;false;false;;;;;;
                                  -106730;2;0;false;false;63;95;191;;;
                                  -106732;1;0;false;false;;;;;;
                                  -106733;8;0;false;false;63;95;191;;;
                                  -106741;1;0;false;false;;;;;;
                                  -106742;3;0;false;false;63;95;191;;;
                                  -106745;1;0;false;false;;;;;;
                                  -106746;4;0;false;false;63;95;191;;;
                                  -106750;1;0;false;false;;;;;;
                                  -106751;6;0;false;false;63;95;191;;;
                                  -106757;1;0;false;false;;;;;;
                                  -106758;2;0;false;false;63;95;191;;;
                                  -106760;1;0;false;false;;;;;;
                                  -106761;5;0;false;false;63;95;191;;;
                                  -106766;1;0;false;false;;;;;;
                                  -106767;2;0;false;false;63;95;191;;;
                                  -106769;1;0;false;false;;;;;;
                                  -106770;4;0;false;false;63;95;191;;;
                                  -106774;1;0;false;false;;;;;;
                                  -106775;3;0;false;false;63;95;191;;;
                                  -106778;1;0;false;false;;;;;;
                                  -106779;8;0;false;false;63;95;191;;;
                                  -106787;4;0;false;false;;;;;;
                                  -106791;1;0;false;false;63;95;191;;;
                                  -106792;1;0;false;false;;;;;;
                                  -106793;8;0;false;false;63;95;191;;;
                                  -106801;1;0;false;false;;;;;;
                                  -106802;2;0;false;false;63;95;191;;;
                                  -106804;1;0;false;false;;;;;;
                                  -106805;3;0;false;false;63;95;191;;;
                                  -106808;1;0;false;false;;;;;;
                                  -106809;3;0;false;false;63;95;191;;;
                                  -106812;1;0;false;false;;;;;;
                                  -106813;4;0;false;false;63;95;191;;;
                                  -106817;1;0;false;false;;;;;;
                                  -106818;7;0;false;false;63;95;191;;;
                                  -106825;1;0;false;false;;;;;;
                                  -106826;3;0;false;false;63;95;191;;;
                                  -106829;1;0;false;false;;;;;;
                                  -106830;5;0;false;false;63;95;191;;;
                                  -106835;1;0;false;false;;;;;;
                                  -106836;3;0;false;false;63;95;191;;;
                                  -106839;1;0;false;false;;;;;;
                                  -106840;9;0;false;false;63;95;191;;;
                                  -106849;1;0;false;false;;;;;;
                                  -106850;2;0;false;false;63;95;191;;;
                                  -106852;1;0;false;false;;;;;;
                                  -106853;3;0;false;false;63;95;191;;;
                                  -106856;1;0;false;false;;;;;;
                                  -106857;3;0;false;false;63;95;191;;;
                                  -106860;4;0;false;false;;;;;;
                                  -106864;1;0;false;false;63;95;191;;;
                                  -106865;1;0;false;false;;;;;;
                                  -106866;2;0;false;false;63;95;191;;;
                                  -106868;1;0;false;false;;;;;;
                                  -106869;3;0;false;false;63;95;191;;;
                                  -106872;1;0;false;false;;;;;;
                                  -106873;4;0;false;false;63;95;191;;;
                                  -106877;1;0;false;false;;;;;;
                                  -106878;5;0;false;false;63;95;191;;;
                                  -106883;1;0;false;false;;;;;;
                                  -106884;1;0;false;false;63;95;191;;;
                                  -106885;1;0;false;false;;;;;;
                                  -106886;4;0;false;false;63;95;191;;;
                                  -106890;1;0;false;false;;;;;;
                                  -106891;4;0;false;false;63;95;191;;;
                                  -106895;1;0;false;false;;;;;;
                                  -106896;6;0;false;false;63;95;191;;;
                                  -106902;1;0;false;false;;;;;;
                                  -106903;2;0;false;false;63;95;191;;;
                                  -106905;1;0;false;false;;;;;;
                                  -106906;3;0;false;false;63;95;191;;;
                                  -106909;1;0;false;false;;;;;;
                                  -106910;9;0;false;false;63;95;191;;;
                                  -106919;1;0;false;false;;;;;;
                                  -106920;2;0;false;false;63;95;191;;;
                                  -106922;1;0;false;false;;;;;;
                                  -106923;4;0;false;false;63;95;191;;;
                                  -106927;1;0;false;false;;;;;;
                                  -106928;4;0;false;false;63;95;191;;;
                                  -106932;4;0;false;false;;;;;;
                                  -106936;1;0;false;false;63;95;191;;;
                                  -106937;1;0;false;false;;;;;;
                                  -106938;3;0;false;false;63;95;191;;;
                                  -106941;1;0;false;false;;;;;;
                                  -106942;5;0;false;false;63;95;191;;;
                                  -106947;1;0;false;false;;;;;;
                                  -106948;2;0;false;false;63;95;191;;;
                                  -106950;1;0;false;false;;;;;;
                                  -106951;5;0;false;false;63;95;191;;;
                                  -106956;1;0;false;false;;;;;;
                                  -106957;5;0;false;false;63;95;191;;;
                                  -106962;1;0;false;false;;;;;;
                                  -106963;3;0;false;false;63;95;191;;;
                                  -106966;1;0;false;false;;;;;;
                                  -106967;4;0;false;false;63;95;191;;;
                                  -106971;1;0;false;false;;;;;;
                                  -106972;10;0;false;false;63;95;191;;;
                                  -106982;3;0;false;false;;;;;;
                                  -106985;1;0;false;false;63;95;191;;;
                                  -106986;1;0;false;false;;;;;;
                                  -106987;3;0;false;false;127;127;159;;;
                                  -106990;3;0;false;false;;;;;;
                                  -106993;1;0;false;false;63;95;191;;;
                                  -106994;1;0;false;false;;;;;;
                                  -106995;7;0;false;false;63;95;191;;;
                                  -107002;1;0;false;false;;;;;;
                                  -107003;3;0;false;false;63;95;191;;;
                                  -107006;1;0;false;false;;;;;;
                                  -107007;9;0;false;false;63;95;191;;;
                                  -107016;1;0;false;false;;;;;;
                                  -107017;9;0;false;false;63;95;191;;;
                                  -107026;1;0;false;false;;;;;;
                                  -107027;2;0;false;false;63;95;191;;;
                                  -107029;1;0;false;false;;;;;;
                                  -107030;3;0;false;false;63;95;191;;;
                                  -107033;1;0;false;false;;;;;;
                                  -107034;5;0;false;false;63;95;191;;;
                                  -107039;1;0;false;false;;;;;;
                                  -107040;7;0;false;false;63;95;191;;;
                                  -107047;1;0;false;false;;;;;;
                                  -107048;4;0;false;false;63;95;191;;;
                                  -107052;1;0;false;false;;;;;;
                                  -107053;3;0;false;false;63;95;191;;;
                                  -107056;1;0;false;false;;;;;;
                                  -107057;6;0;false;false;63;95;191;;;
                                  -107063;1;0;false;false;;;;;;
                                  -107064;3;0;false;false;63;95;191;;;
                                  -107067;3;0;false;false;;;;;;
                                  -107070;1;0;false;false;63;95;191;;;
                                  -107071;1;0;false;false;;;;;;
                                  -107072;2;0;false;false;63;95;191;;;
                                  -107074;1;0;false;false;;;;;;
                                  -107075;2;0;false;false;63;95;191;;;
                                  -107077;1;0;false;false;;;;;;
                                  -107078;8;0;false;false;63;95;191;;;
                                  -107086;1;0;false;false;;;;;;
                                  -107087;4;0;false;false;63;95;191;;;
                                  -107091;1;0;false;false;;;;;;
                                  -107092;3;0;false;false;63;95;191;;;
                                  -107095;1;0;false;false;;;;;;
                                  -107096;3;0;false;false;63;95;191;;;
                                  -107099;1;0;false;false;;;;;;
                                  -107100;10;0;false;false;63;95;191;;;
                                  -107110;1;0;false;false;;;;;;
                                  -107111;9;0;false;false;63;95;191;;;
                                  -107120;1;0;false;false;;;;;;
                                  -107121;2;0;false;false;63;95;191;;;
                                  -107123;1;0;false;false;;;;;;
                                  -107124;3;0;false;false;63;95;191;;;
                                  -107127;1;0;false;false;;;;;;
                                  -107128;8;0;false;false;63;95;191;;;
                                  -107136;1;0;false;false;;;;;;
                                  -107137;9;0;false;false;63;95;191;;;
                                  -107146;3;0;false;false;;;;;;
                                  -107149;1;0;false;false;63;95;191;;;
                                  -107150;1;0;false;false;;;;;;
                                  -107151;10;0;false;false;63;95;191;;;
                                  -107161;3;0;false;false;;;;;;
                                  -107164;1;0;false;false;63;95;191;;;
                                  -107165;1;0;false;false;;;;;;
                                  -107166;4;0;false;false;127;127;159;;;
                                  -107170;3;0;false;false;;;;;;
                                  -107173;2;0;false;false;63;95;191;;;
                                  -107175;2;0;false;false;;;;;;
                                  -107177;4;1;false;false;127;0;85;;;
                                  -107181;1;0;false;false;;;;;;
                                  -107182;20;0;false;false;0;0;0;;;
                                  -107202;3;1;false;false;127;0;85;;;
                                  -107205;1;0;false;false;;;;;;
                                  -107206;6;0;false;false;0;0;0;;;
                                  -107212;1;0;false;false;;;;;;
                                  -107213;1;0;false;false;0;0;0;;;
                                  -107214;3;0;false;false;;;;;;
                                  -107217;3;1;false;false;127;0;85;;;
                                  -107220;1;0;false;false;;;;;;
                                  -107221;11;0;false;false;0;0;0;;;
                                  -107232;3;0;false;false;;;;;;
                                  -107235;3;1;false;false;127;0;85;;;
                                  -107238;1;0;false;false;;;;;;
                                  -107239;9;0;false;false;0;0;0;;;
                                  -107248;1;0;false;false;;;;;;
                                  -107249;1;0;false;false;0;0;0;;;
                                  -107250;1;0;false;false;;;;;;
                                  -107251;15;0;false;false;0;0;0;;;
                                  -107266;3;0;false;false;;;;;;
                                  -107269;3;1;false;false;127;0;85;;;
                                  -107272;1;0;false;false;;;;;;
                                  -107273;15;0;false;false;0;0;0;;;
                                  -107288;1;0;false;false;;;;;;
                                  -107289;1;0;false;false;0;0;0;;;
                                  -107290;1;0;false;false;;;;;;
                                  -107291;35;0;false;false;0;0;0;;;
                                  -107326;6;0;false;false;;;;;;
                                  -107332;31;0;false;false;63;127;95;;;
                                  -107363;1;0;false;false;;;;;;
                                  -107364;10;0;false;false;0;0;0;;;
                                  -107374;1;0;false;false;;;;;;
                                  -107375;1;0;false;false;0;0;0;;;
                                  -107376;1;0;false;false;;;;;;
                                  -107377;7;0;false;false;0;0;0;;;
                                  -107384;1;0;false;false;;;;;;
                                  -107385;1;0;false;false;0;0;0;;;
                                  -107386;1;0;false;false;;;;;;
                                  -107387;13;0;false;false;0;0;0;;;
                                  -107400;4;0;false;false;;;;;;
                                  -107404;27;0;false;false;0;0;0;;;
                                  -107431;1;0;false;false;;;;;;
                                  -107432;10;0;false;false;0;0;0;;;
                                  -107442;1;0;false;false;;;;;;
                                  -107443;11;0;false;false;0;0;0;;;
                                  -107454;1;0;false;false;;;;;;
                                  -107455;1;0;false;false;0;0;0;;;
                                  -107456;1;0;false;false;;;;;;
                                  -107457;17;0;false;false;0;0;0;;;
                                  -107474;3;0;false;false;;;;;;
                                  -107477;11;0;false;false;0;0;0;;;
                                  -107488;4;1;false;false;127;0;85;;;
                                  -107492;1;0;false;false;0;0;0;;;
                                  -107493;1;0;false;false;;;;;;
                                  -107494;7;0;false;false;0;0;0;;;
                                  -107501;3;0;false;false;;;;;;
                                  -107504;7;0;false;false;0;0;0;;;
                                  -107511;1;0;false;false;;;;;;
                                  -107512;1;0;false;false;0;0;0;;;
                                  -107513;1;0;false;false;;;;;;
                                  -107514;11;0;false;false;0;0;0;;;
                                  -107525;2;0;false;false;;;;;;
                                  -107527;1;0;false;false;0;0;0;;;
                                  -107528;2;0;false;false;;;;;;
                                  -107530;3;0;false;false;63;95;191;;;
                                  -107533;3;0;false;false;;;;;;
                                  -107536;1;0;false;false;63;95;191;;;
                                  -107537;1;0;false;false;;;;;;
                                  -107538;7;0;false;false;63;95;191;;;
                                  -107545;1;0;false;false;;;;;;
                                  -107546;3;0;false;false;63;95;191;;;
                                  -107549;1;0;false;false;;;;;;
                                  -107550;4;0;false;false;63;95;191;;;
                                  -107554;1;0;false;false;;;;;;
                                  -107555;2;0;false;false;63;95;191;;;
                                  -107557;1;0;false;false;;;;;;
                                  -107558;2;0;false;false;63;95;191;;;
                                  -107560;1;0;false;false;;;;;;
                                  -107561;4;0;false;false;63;95;191;;;
                                  -107565;1;0;false;false;;;;;;
                                  -107566;3;0;false;false;63;95;191;;;
                                  -107569;1;0;false;false;;;;;;
                                  -107570;5;0;false;false;63;95;191;;;
                                  -107575;1;0;false;false;;;;;;
                                  -107576;4;0;false;false;63;95;191;;;
                                  -107580;1;0;false;false;;;;;;
                                  -107581;10;0;false;false;63;95;191;;;
                                  -107591;1;0;false;false;;;;;;
                                  -107592;2;0;false;false;63;95;191;;;
                                  -107594;1;0;false;false;;;;;;
                                  -107595;6;0;false;false;63;95;191;;;
                                  -107601;3;0;false;false;;;;;;
                                  -107604;1;0;false;false;63;95;191;;;
                                  -107605;1;0;false;false;;;;;;
                                  -107606;2;0;false;false;63;95;191;;;
                                  -107608;1;0;false;false;;;;;;
                                  -107609;3;0;false;false;63;95;191;;;
                                  -107612;1;0;false;false;;;;;;
                                  -107613;7;0;false;false;63;95;191;;;
                                  -107620;1;0;false;false;;;;;;
                                  -107621;4;0;false;false;63;95;191;;;
                                  -107625;1;0;false;false;;;;;;
                                  -107626;7;0;false;false;63;95;191;;;
                                  -107633;1;0;false;false;;;;;;
                                  -107634;3;0;false;false;63;95;191;;;
                                  -107637;1;0;false;false;;;;;;
                                  -107638;5;0;false;false;63;95;191;;;
                                  -107643;1;0;false;false;;;;;;
                                  -107644;7;0;false;false;63;95;191;;;
                                  -107651;1;0;false;false;;;;;;
                                  -107652;4;0;false;false;63;95;191;;;
                                  -107656;1;0;false;false;;;;;;
                                  -107657;5;0;false;false;63;95;191;;;
                                  -107662;3;0;false;false;;;;;;
                                  -107665;1;0;false;false;63;95;191;;;
                                  -107666;1;0;false;false;;;;;;
                                  -107667;3;0;false;false;63;95;191;;;
                                  -107670;1;0;false;false;;;;;;
                                  -107671;5;0;false;false;63;95;191;;;
                                  -107676;1;0;false;false;;;;;;
                                  -107677;2;0;false;false;63;95;191;;;
                                  -107679;1;0;false;false;;;;;;
                                  -107680;8;0;false;false;63;95;191;;;
                                  -107688;1;0;false;false;;;;;;
                                  -107689;3;0;false;false;63;95;191;;;
                                  -107692;1;0;false;false;;;;;;
                                  -107693;4;0;false;false;63;95;191;;;
                                  -107697;1;0;false;false;;;;;;
                                  -107698;6;0;false;false;63;95;191;;;
                                  -107704;1;0;false;false;;;;;;
                                  -107705;2;0;false;false;63;95;191;;;
                                  -107707;1;0;false;false;;;;;;
                                  -107708;5;0;false;false;63;95;191;;;
                                  -107713;1;0;false;false;;;;;;
                                  -107714;2;0;false;false;63;95;191;;;
                                  -107716;1;0;false;false;;;;;;
                                  -107717;4;0;false;false;63;95;191;;;
                                  -107721;1;0;false;false;;;;;;
                                  -107722;3;0;false;false;63;95;191;;;
                                  -107725;1;0;false;false;;;;;;
                                  -107726;8;0;false;false;63;95;191;;;
                                  -107734;4;0;false;false;;;;;;
                                  -107738;1;0;false;false;63;95;191;;;
                                  -107739;1;0;false;false;;;;;;
                                  -107740;8;0;false;false;63;95;191;;;
                                  -107748;1;0;false;false;;;;;;
                                  -107749;2;0;false;false;63;95;191;;;
                                  -107751;1;0;false;false;;;;;;
                                  -107752;3;0;false;false;63;95;191;;;
                                  -107755;1;0;false;false;;;;;;
                                  -107756;3;0;false;false;63;95;191;;;
                                  -107759;1;0;false;false;;;;;;
                                  -107760;4;0;false;false;63;95;191;;;
                                  -107764;1;0;false;false;;;;;;
                                  -107765;7;0;false;false;63;95;191;;;
                                  -107772;1;0;false;false;;;;;;
                                  -107773;3;0;false;false;63;95;191;;;
                                  -107776;1;0;false;false;;;;;;
                                  -107777;5;0;false;false;63;95;191;;;
                                  -107782;1;0;false;false;;;;;;
                                  -107783;3;0;false;false;63;95;191;;;
                                  -107786;1;0;false;false;;;;;;
                                  -107787;9;0;false;false;63;95;191;;;
                                  -107796;1;0;false;false;;;;;;
                                  -107797;2;0;false;false;63;95;191;;;
                                  -107799;1;0;false;false;;;;;;
                                  -107800;3;0;false;false;63;95;191;;;
                                  -107803;1;0;false;false;;;;;;
                                  -107804;9;0;false;false;63;95;191;;;
                                  -107813;4;0;false;false;;;;;;
                                  -107817;1;0;false;false;63;95;191;;;
                                  -107818;1;0;false;false;;;;;;
                                  -107819;2;0;false;false;63;95;191;;;
                                  -107821;1;0;false;false;;;;;;
                                  -107822;3;0;false;false;63;95;191;;;
                                  -107825;1;0;false;false;;;;;;
                                  -107826;4;0;false;false;63;95;191;;;
                                  -107830;1;0;false;false;;;;;;
                                  -107831;5;0;false;false;63;95;191;;;
                                  -107836;1;0;false;false;;;;;;
                                  -107837;1;0;false;false;63;95;191;;;
                                  -107838;1;0;false;false;;;;;;
                                  -107839;4;0;false;false;63;95;191;;;
                                  -107843;1;0;false;false;;;;;;
                                  -107844;4;0;false;false;63;95;191;;;
                                  -107848;1;0;false;false;;;;;;
                                  -107849;6;0;false;false;63;95;191;;;
                                  -107855;1;0;false;false;;;;;;
                                  -107856;2;0;false;false;63;95;191;;;
                                  -107858;1;0;false;false;;;;;;
                                  -107859;3;0;false;false;63;95;191;;;
                                  -107862;1;0;false;false;;;;;;
                                  -107863;9;0;false;false;63;95;191;;;
                                  -107872;1;0;false;false;;;;;;
                                  -107873;2;0;false;false;63;95;191;;;
                                  -107875;1;0;false;false;;;;;;
                                  -107876;4;0;false;false;63;95;191;;;
                                  -107880;1;0;false;false;;;;;;
                                  -107881;4;0;false;false;63;95;191;;;
                                  -107885;1;0;false;false;;;;;;
                                  -107886;3;0;false;false;63;95;191;;;
                                  -107889;3;0;false;false;;;;;;
                                  -107892;1;0;false;false;63;95;191;;;
                                  -107893;1;0;false;false;;;;;;
                                  -107894;5;0;false;false;63;95;191;;;
                                  -107899;1;0;false;false;;;;;;
                                  -107900;2;0;false;false;63;95;191;;;
                                  -107902;1;0;false;false;;;;;;
                                  -107903;5;0;false;false;63;95;191;;;
                                  -107908;1;0;false;false;;;;;;
                                  -107909;2;0;false;false;63;95;191;;;
                                  -107911;1;0;false;false;;;;;;
                                  -107912;5;0;false;false;63;95;191;;;
                                  -107917;1;0;false;false;;;;;;
                                  -107918;2;0;false;false;63;95;191;;;
                                  -107920;1;0;false;false;;;;;;
                                  -107921;3;0;false;false;63;95;191;;;
                                  -107924;1;0;false;false;;;;;;
                                  -107925;5;0;false;false;63;95;191;;;
                                  -107930;1;0;false;false;;;;;;
                                  -107931;10;0;false;false;63;95;191;;;
                                  -107941;3;0;false;false;;;;;;
                                  -107944;1;0;false;false;63;95;191;;;
                                  -107945;1;0;false;false;;;;;;
                                  -107946;3;0;false;false;127;127;159;;;
                                  -107949;3;0;false;false;;;;;;
                                  -107952;1;0;false;false;63;95;191;;;
                                  -107953;1;0;false;false;;;;;;
                                  -107954;7;0;false;false;63;95;191;;;
                                  -107961;1;0;false;false;;;;;;
                                  -107962;3;0;false;false;63;95;191;;;
                                  -107965;1;0;false;false;;;;;;
                                  -107966;9;0;false;false;63;95;191;;;
                                  -107975;1;0;false;false;;;;;;
                                  -107976;9;0;false;false;63;95;191;;;
                                  -107985;1;0;false;false;;;;;;
                                  -107986;2;0;false;false;63;95;191;;;
                                  -107988;1;0;false;false;;;;;;
                                  -107989;3;0;false;false;63;95;191;;;
                                  -107992;1;0;false;false;;;;;;
                                  -107993;5;0;false;false;63;95;191;;;
                                  -107998;1;0;false;false;;;;;;
                                  -107999;7;0;false;false;63;95;191;;;
                                  -108006;1;0;false;false;;;;;;
                                  -108007;4;0;false;false;63;95;191;;;
                                  -108011;1;0;false;false;;;;;;
                                  -108012;3;0;false;false;63;95;191;;;
                                  -108015;1;0;false;false;;;;;;
                                  -108016;6;0;false;false;63;95;191;;;
                                  -108022;1;0;false;false;;;;;;
                                  -108023;3;0;false;false;63;95;191;;;
                                  -108026;3;0;false;false;;;;;;
                                  -108029;1;0;false;false;63;95;191;;;
                                  -108030;1;0;false;false;;;;;;
                                  -108031;2;0;false;false;63;95;191;;;
                                  -108033;1;0;false;false;;;;;;
                                  -108034;2;0;false;false;63;95;191;;;
                                  -108036;1;0;false;false;;;;;;
                                  -108037;8;0;false;false;63;95;191;;;
                                  -108045;1;0;false;false;;;;;;
                                  -108046;4;0;false;false;63;95;191;;;
                                  -108050;1;0;false;false;;;;;;
                                  -108051;3;0;false;false;63;95;191;;;
                                  -108054;1;0;false;false;;;;;;
                                  -108055;3;0;false;false;63;95;191;;;
                                  -108058;1;0;false;false;;;;;;
                                  -108059;10;0;false;false;63;95;191;;;
                                  -108069;1;0;false;false;;;;;;
                                  -108070;9;0;false;false;63;95;191;;;
                                  -108079;1;0;false;false;;;;;;
                                  -108080;2;0;false;false;63;95;191;;;
                                  -108082;1;0;false;false;;;;;;
                                  -108083;3;0;false;false;63;95;191;;;
                                  -108086;1;0;false;false;;;;;;
                                  -108087;8;0;false;false;63;95;191;;;
                                  -108095;1;0;false;false;;;;;;
                                  -108096;9;0;false;false;63;95;191;;;
                                  -108105;3;0;false;false;;;;;;
                                  -108108;1;0;false;false;63;95;191;;;
                                  -108109;1;0;false;false;;;;;;
                                  -108110;10;0;false;false;63;95;191;;;
                                  -108120;3;0;false;false;;;;;;
                                  -108123;1;0;false;false;63;95;191;;;
                                  -108124;1;0;false;false;;;;;;
                                  -108125;4;0;false;false;127;127;159;;;
                                  -108129;3;0;false;false;;;;;;
                                  -108132;2;0;false;false;63;95;191;;;
                                  -108134;2;0;false;false;;;;;;
                                  -108136;4;1;false;false;127;0;85;;;
                                  -108140;1;0;false;false;;;;;;
                                  -108141;18;0;false;false;0;0;0;;;
                                  -108159;3;1;false;false;127;0;85;;;
                                  -108162;1;0;false;false;;;;;;
                                  -108163;6;0;false;false;0;0;0;;;
                                  -108169;1;0;false;false;;;;;;
                                  -108170;1;0;false;false;0;0;0;;;
                                  -108171;3;0;false;false;;;;;;
                                  -108174;3;1;false;false;127;0;85;;;
                                  -108177;1;0;false;false;;;;;;
                                  -108178;11;0;false;false;0;0;0;;;
                                  -108189;3;0;false;false;;;;;;
                                  -108192;3;1;false;false;127;0;85;;;
                                  -108195;1;0;false;false;;;;;;
                                  -108196;9;0;false;false;0;0;0;;;
                                  -108205;1;0;false;false;;;;;;
                                  -108206;1;0;false;false;0;0;0;;;
                                  -108207;1;0;false;false;;;;;;
                                  -108208;15;0;false;false;0;0;0;;;
                                  -108223;3;0;false;false;;;;;;
                                  -108226;3;1;false;false;127;0;85;;;
                                  -108229;1;0;false;false;;;;;;
                                  -108230;15;0;false;false;0;0;0;;;
                                  -108245;1;0;false;false;;;;;;
                                  -108246;1;0;false;false;0;0;0;;;
                                  -108247;1;0;false;false;;;;;;
                                  -108248;35;0;false;false;0;0;0;;;
                                  -108283;6;0;false;false;;;;;;
                                  -108289;31;0;false;false;63;127;95;;;
                                  -108320;1;0;false;false;;;;;;
                                  -108321;10;0;false;false;0;0;0;;;
                                  -108331;1;0;false;false;;;;;;
                                  -108332;1;0;false;false;0;0;0;;;
                                  -108333;1;0;false;false;;;;;;
                                  -108334;7;0;false;false;0;0;0;;;
                                  -108341;1;0;false;false;;;;;;
                                  -108342;1;0;false;false;0;0;0;;;
                                  -108343;1;0;false;false;;;;;;
                                  -108344;13;0;false;false;0;0;0;;;
                                  -108357;4;0;false;false;;;;;;
                                  -108361;27;0;false;false;0;0;0;;;
                                  -108388;1;0;false;false;;;;;;
                                  -108389;10;0;false;false;0;0;0;;;
                                  -108399;1;0;false;false;;;;;;
                                  -108400;11;0;false;false;0;0;0;;;
                                  -108411;1;0;false;false;;;;;;
                                  -108412;1;0;false;false;0;0;0;;;
                                  -108413;1;0;false;false;;;;;;
                                  -108414;17;0;false;false;0;0;0;;;
                                  -108431;3;0;false;false;;;;;;
                                  -108434;9;0;false;false;0;0;0;;;
                                  -108443;4;1;false;false;127;0;85;;;
                                  -108447;1;0;false;false;0;0;0;;;
                                  -108448;1;0;false;false;;;;;;
                                  -108449;7;0;false;false;0;0;0;;;
                                  -108456;3;0;false;false;;;;;;
                                  -108459;7;0;false;false;0;0;0;;;
                                  -108466;1;0;false;false;;;;;;
                                  -108467;1;0;false;false;0;0;0;;;
                                  -108468;1;0;false;false;;;;;;
                                  -108469;11;0;false;false;0;0;0;;;
                                  -108480;2;0;false;false;;;;;;
                                  -108482;1;0;false;false;0;0;0;;;
                                  -108483;2;0;false;false;;;;;;
                                  -108485;3;0;false;false;63;95;191;;;
                                  -108488;3;0;false;false;;;;;;
                                  -108491;1;0;false;false;63;95;191;;;
                                  -108492;1;0;false;false;;;;;;
                                  -108493;5;0;false;false;63;95;191;;;
                                  -108498;1;0;false;false;;;;;;
                                  -108499;3;0;false;false;63;95;191;;;
                                  -108502;1;0;false;false;;;;;;
                                  -108503;5;0;false;false;63;95;191;;;
                                  -108508;1;0;false;false;;;;;;
                                  -108509;2;0;false;false;63;95;191;;;
                                  -108511;1;0;false;false;;;;;;
                                  -108512;3;0;false;false;63;95;191;;;
                                  -108515;1;0;false;false;;;;;;
                                  -108516;3;0;false;false;63;95;191;;;
                                  -108519;1;0;false;false;;;;;;
                                  -108520;2;0;false;false;63;95;191;;;
                                  -108522;1;0;false;false;;;;;;
                                  -108523;3;0;false;false;63;95;191;;;
                                  -108526;1;0;false;false;;;;;;
                                  -108527;4;0;false;false;63;95;191;;;
                                  -108531;1;0;false;false;;;;;;
                                  -108532;4;0;false;false;63;95;191;;;
                                  -108536;1;0;false;false;;;;;;
                                  -108537;1;0;false;false;63;95;191;;;
                                  -108538;3;0;false;false;;;;;;
                                  -108541;2;0;false;false;63;95;191;;;
                                  -108543;2;0;false;false;;;;;;
                                  -108545;4;1;false;false;127;0;85;;;
                                  -108549;1;0;false;false;;;;;;
                                  -108550;21;0;false;false;0;0;0;;;
                                  -108571;1;0;false;false;;;;;;
                                  -108572;1;0;false;false;0;0;0;;;
                                  -108573;3;0;false;false;;;;;;
                                  -108576;3;1;false;false;127;0;85;;;
                                  -108579;1;0;false;false;;;;;;
                                  -108580;14;0;false;false;0;0;0;;;
                                  -108594;1;0;false;false;;;;;;
                                  -108595;1;0;false;false;0;0;0;;;
                                  -108596;1;0;false;false;;;;;;
                                  -108597;24;0;false;false;0;0;0;;;
                                  -108621;3;0;false;false;;;;;;
                                  -108624;71;0;false;false;63;127;95;;;
                                  -108695;1;0;false;false;;;;;;
                                  -108696;9;0;false;false;0;0;0;;;
                                  -108705;1;0;false;false;;;;;;
                                  -108706;1;0;false;false;0;0;0;;;
                                  -108707;1;0;false;false;;;;;;
                                  -108708;5;1;false;false;127;0;85;;;
                                  -108713;1;0;false;false;0;0;0;;;
                                  -108714;3;0;false;false;;;;;;
                                  -108717;71;0;false;false;63;127;95;;;
                                  -108788;1;0;false;false;;;;;;
                                  -108789;45;0;false;false;63;127;95;;;
                                  -108834;1;0;false;false;;;;;;
                                  -108835;2;1;false;false;127;0;85;;;
                                  -108837;1;0;false;false;;;;;;
                                  -108838;16;0;false;false;0;0;0;;;
                                  -108854;1;0;false;false;;;;;;
                                  -108855;2;0;false;false;0;0;0;;;
                                  -108857;5;0;false;false;;;;;;
                                  -108862;36;0;false;false;0;0;0;;;
                                  -108898;1;0;false;false;;;;;;
                                  -108899;2;0;false;false;0;0;0;;;
                                  -108901;1;0;false;false;;;;;;
                                  -108902;40;0;false;false;0;0;0;;;
                                  -108942;1;0;false;false;;;;;;
                                  -108943;1;0;false;false;0;0;0;;;
                                  -108944;4;0;false;false;;;;;;
                                  -108948;11;0;false;false;0;0;0;;;
                                  -108959;1;0;false;false;;;;;;
                                  -108960;1;0;false;false;0;0;0;;;
                                  -108961;1;0;false;false;;;;;;
                                  -108962;15;0;false;false;0;0;0;;;
                                  -108977;4;0;false;false;;;;;;
                                  -108981;12;0;false;false;0;0;0;;;
                                  -108993;3;0;false;false;;;;;;
                                  -108996;1;0;false;false;0;0;0;;;
                                  -108997;2;0;false;false;;;;;;
                                  -108999;1;0;false;false;0;0;0;;;
                                  -109000;2;0;false;false;;;;;;
                                  -109002;3;0;false;false;63;95;191;;;
                                  -109005;3;0;false;false;;;;;;
                                  -109008;1;0;false;false;63;95;191;;;
                                  -109009;1;0;false;false;;;;;;
                                  -109010;5;0;false;false;63;95;191;;;
                                  -109015;1;0;false;false;;;;;;
                                  -109016;3;0;false;false;63;95;191;;;
                                  -109019;1;0;false;false;;;;;;
                                  -109020;5;0;false;false;63;95;191;;;
                                  -109025;1;0;false;false;;;;;;
                                  -109026;2;0;false;false;63;95;191;;;
                                  -109028;1;0;false;false;;;;;;
                                  -109029;3;0;false;false;63;95;191;;;
                                  -109032;1;0;false;false;;;;;;
                                  -109033;5;0;false;false;63;95;191;;;
                                  -109038;1;0;false;false;;;;;;
                                  -109039;2;0;false;false;63;95;191;;;
                                  -109041;1;0;false;false;;;;;;
                                  -109042;3;0;false;false;63;95;191;;;
                                  -109045;1;0;false;false;;;;;;
                                  -109046;8;0;false;false;63;95;191;;;
                                  -109054;1;0;false;false;;;;;;
                                  -109055;5;0;false;false;63;95;191;;;
                                  -109060;3;0;false;false;;;;;;
                                  -109063;2;0;false;false;63;95;191;;;
                                  -109065;2;0;false;false;;;;;;
                                  -109067;4;1;false;false;127;0;85;;;
                                  -109071;1;0;false;false;;;;;;
                                  -109072;25;0;false;false;0;0;0;;;
                                  -109097;1;0;false;false;;;;;;
                                  -109098;1;0;false;false;0;0;0;;;
                                  -109099;3;0;false;false;;;;;;
                                  -109102;3;1;false;false;127;0;85;;;
                                  -109105;1;0;false;false;;;;;;
                                  -109106;10;0;false;false;0;0;0;;;
                                  -109116;4;0;false;false;;;;;;
                                  -109120;9;0;false;false;0;0;0;;;
                                  -109129;1;0;false;false;;;;;;
                                  -109130;1;0;false;false;0;0;0;;;
                                  -109131;1;0;false;false;;;;;;
                                  -109132;5;1;false;false;127;0;85;;;
                                  -109137;1;0;false;false;0;0;0;;;
                                  -109138;3;0;false;false;;;;;;
                                  -109141;11;0;false;false;0;0;0;;;
                                  -109152;1;0;false;false;;;;;;
                                  -109153;1;0;false;false;0;0;0;;;
                                  -109154;1;0;false;false;;;;;;
                                  -109155;26;0;false;false;0;0;0;;;
                                  -109181;3;0;false;false;;;;;;
                                  -109184;9;0;false;false;0;0;0;;;
                                  -109193;1;0;false;false;;;;;;
                                  -109194;1;0;false;false;0;0;0;;;
                                  -109195;1;0;false;false;;;;;;
                                  -109196;37;0;false;false;0;0;0;;;
                                  -109233;3;0;false;false;;;;;;
                                  -109236;54;0;false;false;63;127;95;;;
                                  -109290;1;0;false;false;;;;;;
                                  -109291;62;0;false;false;63;127;95;;;
                                  -109353;1;0;false;false;;;;;;
                                  -109354;2;1;false;false;127;0;85;;;
                                  -109356;1;0;false;false;;;;;;
                                  -109357;9;0;false;false;0;0;0;;;
                                  -109366;1;0;false;false;;;;;;
                                  -109367;2;0;false;false;0;0;0;;;
                                  -109369;1;0;false;false;;;;;;
                                  -109370;9;0;false;false;0;0;0;;;
                                  -109379;1;0;false;false;;;;;;
                                  -109380;1;0;false;false;0;0;0;;;
                                  -109381;1;0;false;false;;;;;;
                                  -109382;22;0;false;false;0;0;0;;;
                                  -109404;1;0;false;false;;;;;;
                                  -109405;1;0;false;false;0;0;0;;;
                                  -109406;1;0;false;false;;;;;;
                                  -109407;1;0;false;false;0;0;0;;;
                                  -109408;1;0;false;false;;;;;;
                                  -109409;2;0;false;false;0;0;0;;;
                                  -109411;4;0;false;false;;;;;;
                                  -109415;11;0;false;false;0;0;0;;;
                                  -109426;1;0;false;false;;;;;;
                                  -109427;2;0;false;false;0;0;0;;;
                                  -109429;1;0;false;false;;;;;;
                                  -109430;33;0;false;false;0;0;0;;;
                                  -109463;1;0;false;false;;;;;;
                                  -109464;1;0;false;false;0;0;0;;;
                                  -109465;1;0;false;false;;;;;;
                                  -109466;3;0;false;false;0;0;0;;;
                                  -109469;1;0;false;false;;;;;;
                                  -109470;1;0;false;false;0;0;0;;;
                                  -109471;4;0;false;false;;;;;;
                                  -109475;12;0;false;false;0;0;0;;;
                                  -109487;3;0;false;false;;;;;;
                                  -109490;1;0;false;false;0;0;0;;;
                                  -109491;3;0;false;false;;;;;;
                                  -109494;21;0;false;false;0;0;0;;;
                                  -109515;2;0;false;false;;;;;;
                                  -109517;1;0;false;false;0;0;0;;;
                                  -109518;2;0;false;false;;;;;;
                                  -109520;3;0;false;false;63;95;191;;;
                                  -109523;3;0;false;false;;;;;;
                                  -109526;1;0;false;false;63;95;191;;;
                                  -109527;1;0;false;false;;;;;;
                                  -109528;5;0;false;false;63;95;191;;;
                                  -109533;1;0;false;false;;;;;;
                                  -109534;3;0;false;false;63;95;191;;;
                                  -109537;1;0;false;false;;;;;;
                                  -109538;5;0;false;false;63;95;191;;;
                                  -109543;1;0;false;false;;;;;;
                                  -109544;3;0;false;false;63;95;191;;;
                                  -109547;1;0;false;false;;;;;;
                                  -109548;9;0;false;false;63;95;191;;;
                                  -109557;1;0;false;false;;;;;;
                                  -109558;2;0;false;false;63;95;191;;;
                                  -109560;1;0;false;false;;;;;;
                                  -109561;3;0;false;false;63;95;191;;;
                                  -109564;1;0;false;false;;;;;;
                                  -109565;5;0;false;false;63;95;191;;;
                                  -109570;2;0;false;false;;;;;;
                                  -109572;2;0;false;false;63;95;191;;;
                                  -109574;1;0;false;false;;;;;;
                                  -109575;3;0;false;false;63;95;191;;;
                                  -109578;1;0;false;false;;;;;;
                                  -109579;2;0;false;false;63;95;191;;;
                                  -109581;1;0;false;false;;;;;;
                                  -109582;2;0;false;false;63;95;191;;;
                                  -109584;1;0;false;false;;;;;;
                                  -109585;3;0;false;false;63;95;191;;;
                                  -109588;1;0;false;false;;;;;;
                                  -109589;8;0;false;false;63;95;191;;;
                                  -109597;1;0;false;false;;;;;;
                                  -109598;5;0;false;false;63;95;191;;;
                                  -109603;3;0;false;false;;;;;;
                                  -109606;1;0;false;false;63;95;191;;;
                                  -109607;1;0;false;false;;;;;;
                                  -109608;4;0;false;false;63;95;191;;;
                                  -109612;1;0;false;false;;;;;;
                                  -109613;2;0;false;false;63;95;191;;;
                                  -109615;1;0;false;false;;;;;;
                                  -109616;1;0;false;false;63;95;191;;;
                                  -109617;1;0;false;false;;;;;;
                                  -109618;4;0;false;false;63;95;191;;;
                                  -109622;1;0;false;false;;;;;;
                                  -109623;6;0;false;false;63;95;191;;;
                                  -109629;1;0;false;false;;;;;;
                                  -109630;3;0;false;false;63;95;191;;;
                                  -109633;1;0;false;false;;;;;;
                                  -109634;2;0;false;false;63;95;191;;;
                                  -109636;1;0;false;false;;;;;;
                                  -109637;1;0;false;false;63;95;191;;;
                                  -109638;1;0;false;false;;;;;;
                                  -109639;3;0;false;false;63;95;191;;;
                                  -109642;1;0;false;false;;;;;;
                                  -109643;9;0;false;false;63;95;191;;;
                                  -109652;1;0;false;false;;;;;;
                                  -109653;3;0;false;false;63;95;191;;;
                                  -109656;1;0;false;false;;;;;;
                                  -109657;5;0;false;false;63;95;191;;;
                                  -109662;1;0;false;false;;;;;;
                                  -109663;2;0;false;false;63;95;191;;;
                                  -109665;1;0;false;false;;;;;;
                                  -109666;5;0;false;false;63;95;191;;;
                                  -109671;1;0;false;false;;;;;;
                                  -109672;2;0;false;false;63;95;191;;;
                                  -109674;1;0;false;false;;;;;;
                                  -109675;3;0;false;false;63;95;191;;;
                                  -109678;4;0;false;false;;;;;;
                                  -109682;1;0;false;false;63;95;191;;;
                                  -109683;1;0;false;false;;;;;;
                                  -109684;9;0;false;false;63;95;191;;;
                                  -109693;1;0;false;false;;;;;;
                                  -109694;2;0;false;false;63;95;191;;;
                                  -109696;1;0;false;false;;;;;;
                                  -109697;3;0;false;false;63;95;191;;;
                                  -109700;1;0;false;false;;;;;;
                                  -109701;3;0;false;false;63;95;191;;;
                                  -109704;1;0;false;false;;;;;;
                                  -109705;7;0;false;false;63;95;191;;;
                                  -109712;1;0;false;false;;;;;;
                                  -109713;9;0;false;false;63;95;191;;;
                                  -109722;1;0;false;false;;;;;;
                                  -109723;6;0;false;false;63;95;191;;;
                                  -109729;1;0;false;false;;;;;;
                                  -109730;3;0;false;false;63;95;191;;;
                                  -109733;1;0;false;false;;;;;;
                                  -109734;4;0;false;false;63;95;191;;;
                                  -109738;1;0;false;false;;;;;;
                                  -109739;3;0;false;false;63;95;191;;;
                                  -109742;1;0;false;false;;;;;;
                                  -109743;9;0;false;false;63;95;191;;;
                                  -109752;1;0;false;false;;;;;;
                                  -109753;2;0;false;false;63;95;191;;;
                                  -109755;1;0;false;false;;;;;;
                                  -109756;3;0;false;false;63;95;191;;;
                                  -109759;4;0;false;false;;;;;;
                                  -109763;1;0;false;false;63;95;191;;;
                                  -109764;1;0;false;false;;;;;;
                                  -109765;4;0;false;false;63;95;191;;;
                                  -109769;1;0;false;false;;;;;;
                                  -109770;9;0;false;false;63;95;191;;;
                                  -109779;1;0;false;false;;;;;;
                                  -109780;4;0;false;false;63;95;191;;;
                                  -109784;1;0;false;false;;;;;;
                                  -109785;7;0;false;false;63;95;191;;;
                                  -109792;1;0;false;false;;;;;;
                                  -109793;4;0;false;false;63;95;191;;;
                                  -109797;1;0;false;false;;;;;;
                                  -109798;3;0;false;false;63;95;191;;;
                                  -109801;1;0;false;false;;;;;;
                                  -109802;2;0;false;false;63;95;191;;;
                                  -109804;1;0;false;false;;;;;;
                                  -109805;1;0;false;false;63;95;191;;;
                                  -109806;1;0;false;false;;;;;;
                                  -109807;3;0;false;false;63;95;191;;;
                                  -109810;1;0;false;false;;;;;;
                                  -109811;9;0;false;false;63;95;191;;;
                                  -109820;3;0;false;false;;;;;;
                                  -109823;2;0;false;false;63;95;191;;;
                                  -109825;2;0;false;false;;;;;;
                                  -109827;4;1;false;false;127;0;85;;;
                                  -109831;1;0;false;false;;;;;;
                                  -109832;18;0;false;false;0;0;0;;;
                                  -109850;1;0;false;false;;;;;;
                                  -109851;1;0;false;false;0;0;0;;;
                                  -109852;3;0;false;false;;;;;;
                                  -109855;11;0;false;false;0;0;0;;;
                                  -109866;1;0;false;false;;;;;;
                                  -109867;1;0;false;false;0;0;0;;;
                                  -109868;1;0;false;false;;;;;;
                                  -109869;31;0;false;false;0;0;0;;;
                                  -109900;1;0;false;false;;;;;;
                                  -109901;16;0;false;false;0;0;0;;;
                                  -109917;3;0;false;false;;;;;;
                                  -109920;12;0;false;false;0;0;0;;;
                                  -109932;2;0;false;false;;;;;;
                                  -109934;1;0;false;false;0;0;0;;;
                                  -109935;2;0;false;false;;;;;;
                                  -109937;3;0;false;false;63;95;191;;;
                                  -109940;3;0;false;false;;;;;;
                                  -109943;1;0;false;false;63;95;191;;;
                                  -109944;1;0;false;false;;;;;;
                                  -109945;5;0;false;false;63;95;191;;;
                                  -109950;1;0;false;false;;;;;;
                                  -109951;3;0;false;false;63;95;191;;;
                                  -109954;1;0;false;false;;;;;;
                                  -109955;5;0;false;false;63;95;191;;;
                                  -109960;1;0;false;false;;;;;;
                                  -109961;3;0;false;false;63;95;191;;;
                                  -109964;1;0;false;false;;;;;;
                                  -109965;9;0;false;false;63;95;191;;;
                                  -109974;1;0;false;false;;;;;;
                                  -109975;2;0;false;false;63;95;191;;;
                                  -109977;1;0;false;false;;;;;;
                                  -109978;3;0;false;false;63;95;191;;;
                                  -109981;1;0;false;false;;;;;;
                                  -109982;6;0;false;false;63;95;191;;;
                                  -109988;2;0;false;false;;;;;;
                                  -109990;2;0;false;false;63;95;191;;;
                                  -109992;1;0;false;false;;;;;;
                                  -109993;3;0;false;false;63;95;191;;;
                                  -109996;1;0;false;false;;;;;;
                                  -109997;2;0;false;false;63;95;191;;;
                                  -109999;1;0;false;false;;;;;;
                                  -110000;2;0;false;false;63;95;191;;;
                                  -110002;1;0;false;false;;;;;;
                                  -110003;3;0;false;false;63;95;191;;;
                                  -110006;1;0;false;false;;;;;;
                                  -110007;4;0;false;false;63;95;191;;;
                                  -110011;1;0;false;false;;;;;;
                                  -110012;5;0;false;false;63;95;191;;;
                                  -110017;3;0;false;false;;;;;;
                                  -110020;1;0;false;false;63;95;191;;;
                                  -110021;1;0;false;false;;;;;;
                                  -110022;4;0;false;false;63;95;191;;;
                                  -110026;1;0;false;false;;;;;;
                                  -110027;2;0;false;false;63;95;191;;;
                                  -110029;1;0;false;false;;;;;;
                                  -110030;1;0;false;false;63;95;191;;;
                                  -110031;1;0;false;false;;;;;;
                                  -110032;4;0;false;false;63;95;191;;;
                                  -110036;1;0;false;false;;;;;;
                                  -110037;6;0;false;false;63;95;191;;;
                                  -110043;1;0;false;false;;;;;;
                                  -110044;3;0;false;false;63;95;191;;;
                                  -110047;1;0;false;false;;;;;;
                                  -110048;2;0;false;false;63;95;191;;;
                                  -110050;1;0;false;false;;;;;;
                                  -110051;1;0;false;false;63;95;191;;;
                                  -110052;1;0;false;false;;;;;;
                                  -110053;3;0;false;false;63;95;191;;;
                                  -110056;1;0;false;false;;;;;;
                                  -110057;9;0;false;false;63;95;191;;;
                                  -110066;1;0;false;false;;;;;;
                                  -110067;3;0;false;false;63;95;191;;;
                                  -110070;1;0;false;false;;;;;;
                                  -110071;5;0;false;false;63;95;191;;;
                                  -110076;1;0;false;false;;;;;;
                                  -110077;2;0;false;false;63;95;191;;;
                                  -110079;1;0;false;false;;;;;;
                                  -110080;5;0;false;false;63;95;191;;;
                                  -110085;1;0;false;false;;;;;;
                                  -110086;2;0;false;false;63;95;191;;;
                                  -110088;1;0;false;false;;;;;;
                                  -110089;3;0;false;false;63;95;191;;;
                                  -110092;4;0;false;false;;;;;;
                                  -110096;1;0;false;false;63;95;191;;;
                                  -110097;1;0;false;false;;;;;;
                                  -110098;3;0;false;false;63;95;191;;;
                                  -110101;1;0;false;false;;;;;;
                                  -110102;2;0;false;false;63;95;191;;;
                                  -110104;1;0;false;false;;;;;;
                                  -110105;3;0;false;false;63;95;191;;;
                                  -110108;1;0;false;false;;;;;;
                                  -110109;3;0;false;false;63;95;191;;;
                                  -110112;1;0;false;false;;;;;;
                                  -110113;7;0;false;false;63;95;191;;;
                                  -110120;1;0;false;false;;;;;;
                                  -110121;9;0;false;false;63;95;191;;;
                                  -110130;1;0;false;false;;;;;;
                                  -110131;5;0;false;false;63;95;191;;;
                                  -110136;1;0;false;false;;;;;;
                                  -110137;3;0;false;false;63;95;191;;;
                                  -110140;1;0;false;false;;;;;;
                                  -110141;4;0;false;false;63;95;191;;;
                                  -110145;1;0;false;false;;;;;;
                                  -110146;3;0;false;false;63;95;191;;;
                                  -110149;1;0;false;false;;;;;;
                                  -110150;9;0;false;false;63;95;191;;;
                                  -110159;1;0;false;false;;;;;;
                                  -110160;2;0;false;false;63;95;191;;;
                                  -110162;1;0;false;false;;;;;;
                                  -110163;3;0;false;false;63;95;191;;;
                                  -110166;4;0;false;false;;;;;;
                                  -110170;1;0;false;false;63;95;191;;;
                                  -110171;1;0;false;false;;;;;;
                                  -110172;5;0;false;false;63;95;191;;;
                                  -110177;1;0;false;false;;;;;;
                                  -110178;9;0;false;false;63;95;191;;;
                                  -110187;1;0;false;false;;;;;;
                                  -110188;5;0;false;false;63;95;191;;;
                                  -110193;1;0;false;false;;;;;;
                                  -110194;7;0;false;false;63;95;191;;;
                                  -110201;1;0;false;false;;;;;;
                                  -110202;4;0;false;false;63;95;191;;;
                                  -110206;1;0;false;false;;;;;;
                                  -110207;3;0;false;false;63;95;191;;;
                                  -110210;1;0;false;false;;;;;;
                                  -110211;2;0;false;false;63;95;191;;;
                                  -110213;1;0;false;false;;;;;;
                                  -110214;1;0;false;false;63;95;191;;;
                                  -110215;1;0;false;false;;;;;;
                                  -110216;3;0;false;false;63;95;191;;;
                                  -110219;1;0;false;false;;;;;;
                                  -110220;9;0;false;false;63;95;191;;;
                                  -110229;3;0;false;false;;;;;;
                                  -110232;2;0;false;false;63;95;191;;;
                                  -110234;2;0;false;false;;;;;;
                                  -110236;4;1;false;false;127;0;85;;;
                                  -110240;1;0;false;false;;;;;;
                                  -110241;14;0;false;false;0;0;0;;;
                                  -110255;1;0;false;false;;;;;;
                                  -110256;1;0;false;false;0;0;0;;;
                                  -110257;3;0;false;false;;;;;;
                                  -110260;11;0;false;false;0;0;0;;;
                                  -110271;1;0;false;false;;;;;;
                                  -110272;1;0;false;false;0;0;0;;;
                                  -110273;1;0;false;false;;;;;;
                                  -110274;27;0;false;false;0;0;0;;;
                                  -110301;1;0;false;false;;;;;;
                                  -110302;16;0;false;false;0;0;0;;;
                                  -110318;3;0;false;false;;;;;;
                                  -110321;12;0;false;false;0;0;0;;;
                                  -110333;2;0;false;false;;;;;;
                                  -110335;1;0;false;false;0;0;0;;;
                                  -110336;2;0;false;false;;;;;;
                                  -110338;3;0;false;false;63;95;191;;;
                                  -110341;3;0;false;false;;;;;;
                                  -110344;1;0;false;false;63;95;191;;;
                                  -110345;1;0;false;false;;;;;;
                                  -110346;5;0;false;false;63;95;191;;;
                                  -110351;1;0;false;false;;;;;;
                                  -110352;3;0;false;false;63;95;191;;;
                                  -110355;1;0;false;false;;;;;;
                                  -110356;5;0;false;false;63;95;191;;;
                                  -110361;1;0;false;false;;;;;;
                                  -110362;2;0;false;false;63;95;191;;;
                                  -110364;1;0;false;false;;;;;;
                                  -110365;3;0;false;false;63;95;191;;;
                                  -110368;1;0;false;false;;;;;;
                                  -110369;3;0;false;false;63;95;191;;;
                                  -110372;1;0;false;false;;;;;;
                                  -110373;2;0;false;false;63;95;191;;;
                                  -110375;1;0;false;false;;;;;;
                                  -110376;3;0;false;false;63;95;191;;;
                                  -110379;1;0;false;false;;;;;;
                                  -110380;4;0;false;false;63;95;191;;;
                                  -110384;1;0;false;false;;;;;;
                                  -110385;5;0;false;false;63;95;191;;;
                                  -110390;3;0;false;false;;;;;;
                                  -110393;1;0;false;false;63;95;191;;;
                                  -110394;1;0;false;false;;;;;;
                                  -110395;2;0;false;false;63;95;191;;;
                                  -110397;1;0;false;false;;;;;;
                                  -110398;1;0;false;false;63;95;191;;;
                                  -110399;1;0;false;false;;;;;;
                                  -110400;9;0;false;false;63;95;191;;;
                                  -110409;1;0;false;false;;;;;;
                                  -110410;7;0;false;false;63;95;191;;;
                                  -110417;1;0;false;false;;;;;;
                                  -110418;4;0;false;false;63;95;191;;;
                                  -110422;1;0;false;false;;;;;;
                                  -110423;3;0;false;false;63;95;191;;;
                                  -110426;1;0;false;false;;;;;;
                                  -110427;5;0;false;false;63;95;191;;;
                                  -110432;1;0;false;false;;;;;;
                                  -110433;2;0;false;false;63;95;191;;;
                                  -110435;1;0;false;false;;;;;;
                                  -110436;3;0;false;false;63;95;191;;;
                                  -110439;1;0;false;false;;;;;;
                                  -110440;3;0;false;false;63;95;191;;;
                                  -110443;1;0;false;false;;;;;;
                                  -110444;2;0;false;false;63;95;191;;;
                                  -110446;1;0;false;false;;;;;;
                                  -110447;3;0;false;false;63;95;191;;;
                                  -110450;1;0;false;false;;;;;;
                                  -110451;9;0;false;false;63;95;191;;;
                                  -110460;3;0;false;false;;;;;;
                                  -110463;1;0;false;false;63;95;191;;;
                                  -110464;1;0;false;false;;;;;;
                                  -110465;3;0;false;false;63;95;191;;;
                                  -110468;1;0;false;false;;;;;;
                                  -110469;6;0;false;false;63;95;191;;;
                                  -110475;1;0;false;false;;;;;;
                                  -110476;3;0;false;false;63;95;191;;;
                                  -110479;1;0;false;false;;;;;;
                                  -110480;10;0;false;false;63;95;191;;;
                                  -110490;3;0;false;false;;;;;;
                                  -110493;2;0;false;false;63;95;191;;;
                                  -110495;2;0;false;false;;;;;;
                                  -110497;4;1;false;false;127;0;85;;;
                                  -110501;1;0;false;false;;;;;;
                                  -110502;12;0;false;false;0;0;0;;;
                                  -110514;1;0;false;false;;;;;;
                                  -110515;1;0;false;false;0;0;0;;;
                                  -110516;3;0;false;false;;;;;;
                                  -110519;2;1;false;false;127;0;85;;;
                                  -110521;1;0;false;false;;;;;;
                                  -110522;12;0;false;false;0;0;0;;;
                                  -110534;1;0;false;false;;;;;;
                                  -110535;1;0;false;false;0;0;0;;;
                                  -110536;1;0;false;false;;;;;;
                                  -110537;11;0;false;false;0;0;0;;;
                                  -110548;1;0;false;false;;;;;;
                                  -110549;1;0;false;false;0;0;0;;;
                                  -110550;1;0;false;false;;;;;;
                                  -110551;2;0;false;false;0;0;0;;;
                                  -110553;1;0;false;false;;;;;;
                                  -110554;1;0;false;false;0;0;0;;;
                                  -110555;4;0;false;false;;;;;;
                                  -110559;3;1;false;false;127;0;85;;;
                                  -110562;1;0;false;false;;;;;;
                                  -110563;10;0;false;false;0;0;0;;;
                                  -110573;8;0;false;false;;;;;;
                                  -110581;11;0;false;false;0;0;0;;;
                                  -110592;1;0;false;false;;;;;;
                                  -110593;1;0;false;false;0;0;0;;;
                                  -110594;1;0;false;false;;;;;;
                                  -110595;12;0;false;false;0;0;0;;;
                                  -110607;4;0;false;false;;;;;;
                                  -110611;9;0;false;false;0;0;0;;;
                                  -110620;1;0;false;false;;;;;;
                                  -110621;1;0;false;false;0;0;0;;;
                                  -110622;1;0;false;false;;;;;;
                                  -110623;15;0;false;false;0;0;0;;;
                                  -110638;4;0;false;false;;;;;;
                                  -110642;21;0;false;false;0;0;0;;;
                                  -110663;3;0;false;false;;;;;;
                                  -110666;1;0;false;false;0;0;0;;;
                                  -110667;3;0;false;false;;;;;;
                                  -110670;4;1;false;false;127;0;85;;;
                                  -110674;1;0;false;false;;;;;;
                                  -110675;1;0;false;false;0;0;0;;;
                                  -110676;4;0;false;false;;;;;;
                                  -110680;22;0;false;false;0;0;0;;;
                                  -110702;3;0;false;false;;;;;;
                                  -110705;1;0;false;false;0;0;0;;;
                                  -110706;2;0;false;false;;;;;;
                                  -110708;1;0;false;false;0;0;0;;;
                                  -110709;2;0;false;false;;;;;;
                                  -110711;3;0;false;false;63;95;191;;;
                                  -110714;3;0;false;false;;;;;;
                                  -110717;1;0;false;false;63;95;191;;;
                                  -110718;1;0;false;false;;;;;;
                                  -110719;5;0;false;false;63;95;191;;;
                                  -110724;1;0;false;false;;;;;;
                                  -110725;3;0;false;false;63;95;191;;;
                                  -110728;1;0;false;false;;;;;;
                                  -110729;5;0;false;false;63;95;191;;;
                                  -110734;1;0;false;false;;;;;;
                                  -110735;2;0;false;false;63;95;191;;;
                                  -110737;1;0;false;false;;;;;;
                                  -110738;3;0;false;false;63;95;191;;;
                                  -110741;1;0;false;false;;;;;;
                                  -110742;5;0;false;false;63;95;191;;;
                                  -110747;1;0;false;false;;;;;;
                                  -110748;2;0;false;false;63;95;191;;;
                                  -110750;1;0;false;false;;;;;;
                                  -110751;3;0;false;false;63;95;191;;;
                                  -110754;1;0;false;false;;;;;;
                                  -110755;8;0;false;false;63;95;191;;;
                                  -110763;1;0;false;false;;;;;;
                                  -110764;5;0;false;false;63;95;191;;;
                                  -110769;3;0;false;false;;;;;;
                                  -110772;1;0;false;false;63;95;191;;;
                                  -110773;1;0;false;false;;;;;;
                                  -110774;2;0;false;false;63;95;191;;;
                                  -110776;1;0;false;false;;;;;;
                                  -110777;1;0;false;false;63;95;191;;;
                                  -110778;1;0;false;false;;;;;;
                                  -110779;9;0;false;false;63;95;191;;;
                                  -110788;1;0;false;false;;;;;;
                                  -110789;7;0;false;false;63;95;191;;;
                                  -110796;1;0;false;false;;;;;;
                                  -110797;4;0;false;false;63;95;191;;;
                                  -110801;1;0;false;false;;;;;;
                                  -110802;3;0;false;false;63;95;191;;;
                                  -110805;1;0;false;false;;;;;;
                                  -110806;5;0;false;false;63;95;191;;;
                                  -110811;1;0;false;false;;;;;;
                                  -110812;2;0;false;false;63;95;191;;;
                                  -110814;1;0;false;false;;;;;;
                                  -110815;3;0;false;false;63;95;191;;;
                                  -110818;1;0;false;false;;;;;;
                                  -110819;5;0;false;false;63;95;191;;;
                                  -110824;1;0;false;false;;;;;;
                                  -110825;2;0;false;false;63;95;191;;;
                                  -110827;1;0;false;false;;;;;;
                                  -110828;3;0;false;false;63;95;191;;;
                                  -110831;1;0;false;false;;;;;;
                                  -110832;9;0;false;false;63;95;191;;;
                                  -110841;3;0;false;false;;;;;;
                                  -110844;1;0;false;false;63;95;191;;;
                                  -110845;1;0;false;false;;;;;;
                                  -110846;3;0;false;false;63;95;191;;;
                                  -110849;1;0;false;false;;;;;;
                                  -110850;6;0;false;false;63;95;191;;;
                                  -110856;1;0;false;false;;;;;;
                                  -110857;3;0;false;false;63;95;191;;;
                                  -110860;1;0;false;false;;;;;;
                                  -110861;10;0;false;false;63;95;191;;;
                                  -110871;3;0;false;false;;;;;;
                                  -110874;2;0;false;false;63;95;191;;;
                                  -110876;2;0;false;false;;;;;;
                                  -110878;4;1;false;false;127;0;85;;;
                                  -110882;1;0;false;false;;;;;;
                                  -110883;16;0;false;false;0;0;0;;;
                                  -110899;1;0;false;false;;;;;;
                                  -110900;1;0;false;false;0;0;0;;;
                                  -110901;3;0;false;false;;;;;;
                                  -110904;2;1;false;false;127;0;85;;;
                                  -110906;1;0;false;false;;;;;;
                                  -110907;12;0;false;false;0;0;0;;;
                                  -110919;1;0;false;false;;;;;;
                                  -110920;1;0;false;false;0;0;0;;;
                                  -110921;1;0;false;false;;;;;;
                                  -110922;11;0;false;false;0;0;0;;;
                                  -110933;1;0;false;false;;;;;;
                                  -110934;1;0;false;false;0;0;0;;;
                                  -110935;1;0;false;false;;;;;;
                                  -110936;2;0;false;false;0;0;0;;;
                                  -110938;1;0;false;false;;;;;;
                                  -110939;1;0;false;false;0;0;0;;;
                                  -110940;4;0;false;false;;;;;;
                                  -110944;3;1;false;false;127;0;85;;;
                                  -110947;1;0;false;false;;;;;;
                                  -110948;10;0;false;false;0;0;0;;;
                                  -110958;8;0;false;false;;;;;;
                                  -110966;11;0;false;false;0;0;0;;;
                                  -110977;1;0;false;false;;;;;;
                                  -110978;1;0;false;false;0;0;0;;;
                                  -110979;1;0;false;false;;;;;;
                                  -110980;12;0;false;false;0;0;0;;;
                                  -110992;4;0;false;false;;;;;;
                                  -110996;9;0;false;false;0;0;0;;;
                                  -111005;1;0;false;false;;;;;;
                                  -111006;1;0;false;false;0;0;0;;;
                                  -111007;1;0;false;false;;;;;;
                                  -111008;15;0;false;false;0;0;0;;;
                                  -111023;4;0;false;false;;;;;;
                                  -111027;21;0;false;false;0;0;0;;;
                                  -111048;3;0;false;false;;;;;;
                                  -111051;1;0;false;false;0;0;0;;;
                                  -111052;3;0;false;false;;;;;;
                                  -111055;4;1;false;false;127;0;85;;;
                                  -111059;1;0;false;false;;;;;;
                                  -111060;1;0;false;false;0;0;0;;;
                                  -111061;4;0;false;false;;;;;;
                                  -111065;26;0;false;false;0;0;0;;;
                                  -111091;3;0;false;false;;;;;;
                                  -111094;1;0;false;false;0;0;0;;;
                                  -111095;2;0;false;false;;;;;;
                                  -111097;1;0;false;false;0;0;0;;;
                                  -111098;2;0;false;false;;;;;;
                                  -111100;3;0;false;false;63;95;191;;;
                                  -111103;3;0;false;false;;;;;;
                                  -111106;1;0;false;false;63;95;191;;;
                                  -111107;1;0;false;false;;;;;;
                                  -111108;5;0;false;false;63;95;191;;;
                                  -111113;1;0;false;false;;;;;;
                                  -111114;3;0;false;false;63;95;191;;;
                                  -111117;1;0;false;false;;;;;;
                                  -111118;9;0;false;false;63;95;191;;;
                                  -111127;1;0;false;false;;;;;;
                                  -111128;10;0;false;false;63;95;191;;;
                                  -111138;3;0;false;false;;;;;;
                                  -111141;1;0;false;false;63;95;191;;;
                                  -111142;1;0;false;false;;;;;;
                                  -111143;4;0;false;false;63;95;191;;;
                                  -111147;1;0;false;false;;;;;;
                                  -111148;8;0;false;false;63;95;191;;;
                                  -111156;1;0;false;false;;;;;;
                                  -111157;7;0;false;false;63;95;191;;;
                                  -111164;1;0;false;false;;;;;;
                                  -111165;12;0;false;false;63;95;191;;;
                                  -111177;1;0;false;false;;;;;;
                                  -111178;3;0;false;false;63;95;191;;;
                                  -111181;1;0;false;false;;;;;;
                                  -111182;8;0;false;false;63;95;191;;;
                                  -111190;1;0;false;false;;;;;;
                                  -111191;4;0;false;false;63;95;191;;;
                                  -111195;1;0;false;false;;;;;;
                                  -111196;4;0;false;false;63;95;191;;;
                                  -111200;1;0;false;false;;;;;;
                                  -111201;15;0;false;false;63;95;191;;;
                                  -111216;1;0;false;false;;;;;;
                                  -111217;2;0;false;false;63;95;191;;;
                                  -111219;4;0;false;false;;;;;;
                                  -111223;1;0;false;false;63;95;191;;;
                                  -111224;1;0;false;false;;;;;;
                                  -111225;6;0;false;false;63;95;191;;;
                                  -111231;3;0;false;false;;;;;;
                                  -111234;1;0;false;false;63;95;191;;;
                                  -111235;1;0;false;false;;;;;;
                                  -111236;3;0;false;false;127;127;159;;;
                                  -111239;3;0;false;false;;;;;;
                                  -111242;1;0;false;false;63;95;191;;;
                                  -111243;3;0;false;false;;;;;;
                                  -111246;1;0;false;false;63;95;191;;;
                                  -111247;1;0;false;false;;;;;;
                                  -111248;7;1;false;false;127;159;191;;;
                                  -111255;1;0;false;false;63;95;191;;;
                                  -111256;1;0;false;false;;;;;;
                                  -111257;3;0;false;false;63;95;191;;;
                                  -111260;1;0;false;false;;;;;;
                                  -111261;1;0;false;false;63;95;191;;;
                                  -111262;1;0;false;false;;;;;;
                                  -111263;8;0;false;false;63;95;191;;;
                                  -111271;3;0;false;false;;;;;;
                                  -111274;1;0;false;false;63;95;191;;;
                                  -111275;1;0;false;false;;;;;;
                                  -111276;7;1;false;false;127;159;191;;;
                                  -111283;1;0;false;false;63;95;191;;;
                                  -111284;1;0;false;false;;;;;;
                                  -111285;3;0;false;false;63;95;191;;;
                                  -111288;1;0;false;false;;;;;;
                                  -111289;1;0;false;false;63;95;191;;;
                                  -111290;1;0;false;false;;;;;;
                                  -111291;8;0;false;false;63;95;191;;;
                                  -111299;3;0;false;false;;;;;;
                                  -111302;1;0;false;false;63;95;191;;;
                                  -111303;1;0;false;false;;;;;;
                                  -111304;7;1;false;false;127;159;191;;;
                                  -111311;5;0;false;false;63;95;191;;;
                                  -111316;1;0;false;false;;;;;;
                                  -111317;3;0;false;false;63;95;191;;;
                                  -111320;1;0;false;false;;;;;;
                                  -111321;5;0;false;false;63;95;191;;;
                                  -111326;3;0;false;false;;;;;;
                                  -111329;1;0;false;false;63;95;191;;;
                                  -111330;1;0;false;false;;;;;;
                                  -111331;7;1;false;false;127;159;191;;;
                                  -111338;6;0;false;false;63;95;191;;;
                                  -111344;1;0;false;false;;;;;;
                                  -111345;3;0;false;false;63;95;191;;;
                                  -111348;1;0;false;false;;;;;;
                                  -111349;6;0;false;false;63;95;191;;;
                                  -111355;3;0;false;false;;;;;;
                                  -111358;1;0;false;false;63;95;191;;;
                                  -111359;1;0;false;false;;;;;;
                                  -111360;7;1;false;false;127;159;191;;;
                                  -111367;15;0;false;false;63;95;191;;;
                                  -111382;1;0;false;false;;;;;;
                                  -111383;10;0;false;false;63;95;191;;;
                                  -111393;1;0;false;false;;;;;;
                                  -111394;3;0;false;false;63;95;191;;;
                                  -111397;1;0;false;false;;;;;;
                                  -111398;10;0;false;false;63;95;191;;;
                                  -111408;1;0;false;false;;;;;;
                                  -111409;2;0;false;false;63;95;191;;;
                                  -111411;1;0;false;false;;;;;;
                                  -111412;12;0;false;false;63;95;191;;;
                                  -111424;1;0;false;false;;;;;;
                                  -111425;3;0;false;false;63;95;191;;;
                                  -111428;1;0;false;false;;;;;;
                                  -111429;9;0;false;false;63;95;191;;;
                                  -111438;4;0;false;false;;;;;;
                                  -111442;1;0;false;false;63;95;191;;;
                                  -111443;2;0;false;false;;;;;;
                                  -111445;6;0;false;false;63;95;191;;;
                                  -111451;1;0;false;false;;;;;;
                                  -111452;5;0;false;false;63;95;191;;;
                                  -111457;1;0;false;false;;;;;;
                                  -111458;10;0;false;false;63;95;191;;;
                                  -111468;1;0;false;false;;;;;;
                                  -111469;3;0;false;false;63;95;191;;;
                                  -111472;1;0;false;false;;;;;;
                                  -111473;10;0;false;false;63;95;191;;;
                                  -111483;1;0;false;false;;;;;;
                                  -111484;8;0;false;false;63;95;191;;;
                                  -111492;1;0;false;false;;;;;;
                                  -111493;7;0;false;false;63;95;191;;;
                                  -111500;1;0;false;false;;;;;;
                                  -111501;12;0;false;false;63;95;191;;;
                                  -111513;1;0;false;false;;;;;;
                                  -111514;3;0;false;false;63;95;191;;;
                                  -111517;4;0;false;false;;;;;;
                                  -111521;1;0;false;false;63;95;191;;;
                                  -111522;2;0;false;false;;;;;;
                                  -111524;6;0;false;false;63;95;191;;;
                                  -111530;1;0;false;false;;;;;;
                                  -111531;5;0;false;false;63;95;191;;;
                                  -111536;3;0;false;false;;;;;;
                                  -111539;2;0;false;false;63;95;191;;;
                                  -111541;2;0;false;false;;;;;;
                                  -111543;4;1;false;false;127;0;85;;;
                                  -111547;1;0;false;false;;;;;;
                                  -111548;5;0;false;false;0;0;0;;;
                                  -111553;3;1;false;false;127;0;85;;;
                                  -111556;1;0;false;false;;;;;;
                                  -111557;2;0;false;false;0;0;0;;;
                                  -111559;1;0;false;false;;;;;;
                                  -111560;3;1;false;false;127;0;85;;;
                                  -111563;1;0;false;false;;;;;;
                                  -111564;2;0;false;false;0;0;0;;;
                                  -111566;1;0;false;false;;;;;;
                                  -111567;3;1;false;false;127;0;85;;;
                                  -111570;1;0;false;false;;;;;;
                                  -111571;6;0;false;false;0;0;0;;;
                                  -111577;1;0;false;false;;;;;;
                                  -111578;3;1;false;false;127;0;85;;;
                                  -111581;1;0;false;false;;;;;;
                                  -111582;7;0;false;false;0;0;0;;;
                                  -111589;1;0;false;false;;;;;;
                                  -111590;7;1;false;false;127;0;85;;;
                                  -111597;1;0;false;false;;;;;;
                                  -111598;16;0;false;false;0;0;0;;;
                                  -111614;1;0;false;false;;;;;;
                                  -111615;1;0;false;false;0;0;0;;;
                                  -111616;3;0;false;false;;;;;;
                                  -111619;2;1;false;false;127;0;85;;;
                                  -111621;1;0;false;false;;;;;;
                                  -111622;17;0;false;false;0;0;0;;;
                                  -111639;1;0;false;false;;;;;;
                                  -111640;1;0;false;false;0;0;0;;;
                                  -111641;4;0;false;false;;;;;;
                                  -111645;8;0;false;false;0;0;0;;;
                                  -111653;1;0;false;false;;;;;;
                                  -111654;1;0;false;false;0;0;0;;;
                                  -111655;1;0;false;false;;;;;;
                                  -111656;11;0;false;false;0;0;0;;;
                                  -111667;1;0;false;false;;;;;;
                                  -111668;1;0;false;false;0;0;0;;;
                                  -111669;1;0;false;false;;;;;;
                                  -111670;1;0;false;false;0;0;0;;;
                                  -111671;1;0;false;false;;;;;;
                                  -111672;10;0;false;false;0;0;0;;;
                                  -111682;1;0;false;false;;;;;;
                                  -111683;6;0;false;false;0;0;0;;;
                                  -111689;1;0;false;false;;;;;;
                                  -111690;7;0;false;false;0;0;0;;;
                                  -111697;1;0;false;false;;;;;;
                                  -111698;4;1;false;false;127;0;85;;;
                                  -111702;2;0;false;false;0;0;0;;;
                                  -111704;3;0;false;false;;;;;;
                                  -111707;1;0;false;false;0;0;0;;;
                                  -111708;3;0;false;false;;;;;;
                                  -111711;4;1;false;false;127;0;85;;;
                                  -111715;1;0;false;false;;;;;;
                                  -111716;1;0;false;false;0;0;0;;;
                                  -111717;4;0;false;false;;;;;;
                                  -111721;3;1;false;false;127;0;85;;;
                                  -111724;1;0;false;false;;;;;;
                                  -111725;9;0;false;false;0;0;0;;;
                                  -111734;1;0;false;false;;;;;;
                                  -111735;1;0;false;false;0;0;0;;;
                                  -111736;1;0;false;false;;;;;;
                                  -111737;2;0;false;false;0;0;0;;;
                                  -111739;1;0;false;false;;;;;;
                                  -111740;1;0;false;false;0;0;0;;;
                                  -111741;1;0;false;false;;;;;;
                                  -111742;21;0;false;false;0;0;0;;;
                                  -111763;1;0;false;false;;;;;;
                                  -111764;1;0;false;false;0;0;0;;;
                                  -111765;1;0;false;false;;;;;;
                                  -111766;11;0;false;false;0;0;0;;;
                                  -111777;4;0;false;false;;;;;;
                                  -111781;3;1;false;false;127;0;85;;;
                                  -111784;1;0;false;false;;;;;;
                                  -111785;4;0;false;false;0;0;0;;;
                                  -111789;1;0;false;false;;;;;;
                                  -111790;1;0;false;false;0;0;0;;;
                                  -111791;1;0;false;false;;;;;;
                                  -111792;1;0;false;false;0;0;0;;;
                                  -111793;1;0;false;false;;;;;;
                                  -111794;1;0;false;false;0;0;0;;;
                                  -111795;1;0;false;false;;;;;;
                                  -111796;7;0;false;false;0;0;0;;;
                                  -111803;4;0;false;false;;;;;;
                                  -111807;3;1;false;false;127;0;85;;;
                                  -111810;1;0;false;false;;;;;;
                                  -111811;17;0;false;false;0;0;0;;;
                                  -111828;1;0;false;false;;;;;;
                                  -111829;1;0;false;false;0;0;0;;;
                                  -111830;1;0;false;false;;;;;;
                                  -111831;10;0;false;false;0;0;0;;;
                                  -111841;1;0;false;false;;;;;;
                                  -111842;1;0;false;false;0;0;0;;;
                                  -111843;1;0;false;false;;;;;;
                                  -111844;9;0;false;false;0;0;0;;;
                                  -111853;1;0;false;false;;;;;;
                                  -111854;1;0;false;false;0;0;0;;;
                                  -111855;1;0;false;false;;;;;;
                                  -111856;11;0;false;false;0;0;0;;;
                                  -111867;4;0;false;false;;;;;;
                                  -111871;3;1;false;false;127;0;85;;;
                                  -111874;1;0;false;false;;;;;;
                                  -111875;13;0;false;false;0;0;0;;;
                                  -111888;1;0;false;false;;;;;;
                                  -111889;1;0;false;false;0;0;0;;;
                                  -111890;1;0;false;false;;;;;;
                                  -111891;9;0;false;false;0;0;0;;;
                                  -111900;1;0;false;false;;;;;;
                                  -111901;1;0;false;false;0;0;0;;;
                                  -111902;1;0;false;false;;;;;;
                                  -111903;10;0;false;false;0;0;0;;;
                                  -111913;1;0;false;false;;;;;;
                                  -111914;1;0;false;false;0;0;0;;;
                                  -111915;1;0;false;false;;;;;;
                                  -111916;22;0;false;false;0;0;0;;;
                                  -111938;4;0;false;false;;;;;;
                                  -111942;3;1;false;false;127;0;85;;;
                                  -111945;1;0;false;false;;;;;;
                                  -111946;6;0;false;false;0;0;0;;;
                                  -111952;1;0;false;false;;;;;;
                                  -111953;1;0;false;false;0;0;0;;;
                                  -111954;1;0;false;false;;;;;;
                                  -111955;17;0;false;false;0;0;0;;;
                                  -111972;1;0;false;false;;;;;;
                                  -111973;1;0;false;false;0;0;0;;;
                                  -111974;1;0;false;false;;;;;;
                                  -111975;13;0;false;false;0;0;0;;;
                                  -111988;1;0;false;false;;;;;;
                                  -111989;1;0;false;false;0;0;0;;;
                                  -111990;1;0;false;false;;;;;;
                                  -111991;10;0;false;false;0;0;0;;;
                                  -112001;1;0;false;false;;;;;;
                                  -112002;48;0;false;false;63;127;95;;;
                                  -112050;2;0;false;false;;;;;;
                                  -112052;3;1;false;false;127;0;85;;;
                                  -112055;1;0;false;false;;;;;;
                                  -112056;9;0;false;false;0;0;0;;;
                                  -112065;1;0;false;false;;;;;;
                                  -112066;1;0;false;false;0;0;0;;;
                                  -112067;1;0;false;false;;;;;;
                                  -112068;23;0;false;false;0;0;0;;;
                                  -112091;4;0;false;false;;;;;;
                                  -112095;5;0;false;false;0;0;0;;;
                                  -112100;1;0;false;false;;;;;;
                                  -112101;10;0;false;false;0;0;0;;;
                                  -112111;1;0;false;false;;;;;;
                                  -112112;1;0;false;false;0;0;0;;;
                                  -112113;1;0;false;false;;;;;;
                                  -112114;16;0;false;false;0;0;0;;;
                                  -112130;4;0;false;false;;;;;;
                                  -112134;5;0;false;false;0;0;0;;;
                                  -112139;1;0;false;false;;;;;;
                                  -112140;10;0;false;false;0;0;0;;;
                                  -112150;1;0;false;false;;;;;;
                                  -112151;1;0;false;false;0;0;0;;;
                                  -112152;1;0;false;false;;;;;;
                                  -112153;16;0;false;false;0;0;0;;;
                                  -112169;4;0;false;false;;;;;;
                                  -112173;2;0;false;false;0;0;0;;;
                                  -112175;1;0;false;false;;;;;;
                                  -112176;2;0;false;false;0;0;0;;;
                                  -112178;1;0;false;false;;;;;;
                                  -112179;1;0;false;false;0;0;0;;;
                                  -112180;1;0;false;false;;;;;;
                                  -112181;8;0;false;false;0;0;0;;;
                                  -112189;7;0;false;false;;;;;;
                                  -112196;2;1;false;false;127;0;85;;;
                                  -112198;1;0;false;false;;;;;;
                                  -112199;16;0;false;false;0;0;0;;;
                                  -112215;1;0;false;false;;;;;;
                                  -112216;1;0;false;false;0;0;0;;;
                                  -112217;5;0;false;false;;;;;;
                                  -112222;9;0;false;false;0;0;0;;;
                                  -112231;1;0;false;false;;;;;;
                                  -112232;1;0;false;false;0;0;0;;;
                                  -112233;1;0;false;false;;;;;;
                                  -112234;2;0;false;false;0;0;0;;;
                                  -112236;4;0;false;false;;;;;;
                                  -112240;1;0;false;false;0;0;0;;;
                                  -112241;4;0;false;false;;;;;;
                                  -112245;3;1;false;false;127;0;85;;;
                                  -112248;1;0;false;false;;;;;;
                                  -112249;1;0;false;false;0;0;0;;;
                                  -112250;3;1;false;false;127;0;85;;;
                                  -112253;1;0;false;false;;;;;;
                                  -112254;1;0;false;false;0;0;0;;;
                                  -112255;1;0;false;false;;;;;;
                                  -112256;1;0;false;false;0;0;0;;;
                                  -112257;1;0;false;false;;;;;;
                                  -112258;10;0;false;false;0;0;0;;;
                                  -112268;1;0;false;false;;;;;;
                                  -112269;6;0;false;false;0;0;0;;;
                                  -112275;1;0;false;false;;;;;;
                                  -112276;1;0;false;false;0;0;0;;;
                                  -112277;1;0;false;false;;;;;;
                                  -112278;4;0;false;false;0;0;0;;;
                                  -112282;1;0;false;false;;;;;;
                                  -112283;2;0;false;false;0;0;0;;;
                                  -112285;1;0;false;false;;;;;;
                                  -112286;1;0;false;false;0;0;0;;;
                                  -112287;1;0;false;false;;;;;;
                                  -112288;1;0;false;false;0;0;0;;;
                                  -112289;1;0;false;false;;;;;;
                                  -112290;10;0;false;false;0;0;0;;;
                                  -112300;1;0;false;false;;;;;;
                                  -112301;4;0;false;false;0;0;0;;;
                                  -112305;1;0;false;false;;;;;;
                                  -112306;6;0;false;false;0;0;0;;;
                                  -112312;1;0;false;false;;;;;;
                                  -112313;2;0;false;false;0;0;0;;;
                                  -112315;1;0;false;false;;;;;;
                                  -112316;11;0;false;false;0;0;0;;;
                                  -112327;1;0;false;false;;;;;;
                                  -112328;1;0;false;false;0;0;0;;;
                                  -112329;5;0;false;false;;;;;;
                                  -112334;6;0;false;false;0;0;0;;;
                                  -112340;1;0;false;false;;;;;;
                                  -112341;4;0;false;false;0;0;0;;;
                                  -112345;1;0;false;false;;;;;;
                                  -112346;1;0;false;false;0;0;0;;;
                                  -112347;1;0;false;false;;;;;;
                                  -112348;19;0;false;false;0;0;0;;;
                                  -112367;5;0;false;false;;;;;;
                                  -112372;23;0;false;false;0;0;0;;;
                                  -112395;1;0;false;false;;;;;;
                                  -112396;2;0;false;false;0;0;0;;;
                                  -112398;1;0;false;false;;;;;;
                                  -112399;7;0;false;false;0;0;0;;;
                                  -112406;1;0;false;false;;;;;;
                                  -112407;3;0;false;false;0;0;0;;;
                                  -112410;1;0;false;false;;;;;;
                                  -112411;11;0;false;false;0;0;0;;;
                                  -112422;1;0;false;false;;;;;;
                                  -112423;11;0;false;false;0;0;0;;;
                                  -112434;1;0;false;false;;;;;;
                                  -112435;17;0;false;false;0;0;0;;;
                                  -112452;4;0;false;false;;;;;;
                                  -112456;1;0;false;false;0;0;0;;;
                                  -112457;4;0;false;false;;;;;;
                                  -112461;13;0;false;false;0;0;0;;;
                                  -112474;4;0;false;false;;;;;;
                                  -112478;1;0;false;false;0;0;0;;;
                                  -112479;2;0;false;false;;;;;;
                                  -112481;1;0;false;false;0;0;0;;;
                                  -112482;2;0;false;false;;;;;;
                                  -112484;3;0;false;false;63;95;191;;;
                                  -112487;4;0;false;false;;;;;;
                                  -112491;1;0;false;false;63;95;191;;;
                                  -112492;1;0;false;false;;;;;;
                                  -112493;4;0;false;false;63;95;191;;;
                                  -112497;1;0;false;false;;;;;;
                                  -112498;3;0;false;false;63;95;191;;;
                                  -112501;1;0;false;false;;;;;;
                                  -112502;10;0;false;false;63;95;191;;;
                                  -112512;1;0;false;false;;;;;;
                                  -112513;8;0;false;false;63;95;191;;;
                                  -112521;3;0;false;false;;;;;;
                                  -112524;2;0;false;false;63;95;191;;;
                                  -112526;2;0;false;false;;;;;;
                                  -112528;4;1;false;false;127;0;85;;;
                                  -112532;1;0;false;false;;;;;;
                                  -112533;15;0;false;false;0;0;0;;;
                                  -112548;1;0;false;false;;;;;;
                                  -112549;1;0;false;false;0;0;0;;;
                                  -112550;3;0;false;false;;;;;;
                                  -112553;19;0;false;false;0;0;0;;;
                                  -112572;1;0;false;false;;;;;;
                                  -112573;1;0;false;false;0;0;0;;;
                                  -112574;1;0;false;false;;;;;;
                                  -112575;9;0;false;false;0;0;0;;;
                                  -112584;2;0;false;false;;;;;;
                                  -112586;1;0;false;false;0;0;0;;;
                                  -112587;2;0;false;false;;;;;;
                                  -112589;6;1;false;false;127;0;85;;;
                                  -112595;1;0;false;false;;;;;;
                                  -112596;5;0;false;false;0;0;0;;;
                                  -112601;1;0;false;false;;;;;;
                                  -112602;15;0;false;false;0;0;0;;;
                                  -112617;1;0;false;false;;;;;;
                                  -112618;1;0;false;false;0;0;0;;;
                                  -112619;3;0;false;false;;;;;;
                                  -112622;14;0;false;false;0;0;0;;;
                                  -112636;3;0;false;false;;;;;;
                                  -112639;2;1;false;false;127;0;85;;;
                                  -112641;1;0;false;false;;;;;;
                                  -112642;11;0;false;false;0;0;0;;;
                                  -112653;1;0;false;false;;;;;;
                                  -112654;2;0;false;false;0;0;0;;;
                                  -112656;1;0;false;false;;;;;;
                                  -112657;4;1;false;false;127;0;85;;;
                                  -112661;1;0;false;false;0;0;0;;;
                                  -112662;1;0;false;false;;;;;;
                                  -112663;1;0;false;false;0;0;0;;;
                                  -112664;4;0;false;false;;;;;;
                                  -112668;6;1;false;false;127;0;85;;;
                                  -112674;1;0;false;false;;;;;;
                                  -112675;55;0;false;false;0;0;0;;;
                                  -112730;3;0;false;false;;;;;;
                                  -112733;1;0;false;false;0;0;0;;;
                                  -112734;3;0;false;false;;;;;;
                                  -112737;6;1;false;false;127;0;85;;;
                                  -112743;1;0;false;false;;;;;;
                                  -112744;11;0;false;false;0;0;0;;;
                                  -112755;2;0;false;false;;;;;;
                                  -112757;1;0;false;false;0;0;0;;;
                                  -112758;2;0;false;false;;;;;;
                                  -112760;3;0;false;false;63;95;191;;;
                                  -112763;3;0;false;false;;;;;;
                                  -112766;1;0;false;false;63;95;191;;;
                                  -112767;1;0;false;false;;;;;;
                                  -112768;7;0;false;false;63;95;191;;;
                                  -112775;1;0;false;false;;;;;;
                                  -112776;3;0;false;false;63;95;191;;;
                                  -112779;1;0;false;false;;;;;;
                                  -112780;9;0;false;false;63;95;191;;;
                                  -112789;1;0;false;false;;;;;;
                                  -112790;2;0;false;false;63;95;191;;;
                                  -112792;1;0;false;false;;;;;;
                                  -112793;7;0;false;false;63;95;191;;;
                                  -112800;4;0;false;false;;;;;;
                                  -112804;1;0;false;false;63;95;191;;;
                                  -112805;4;0;false;false;;;;;;
                                  -112809;1;0;false;false;63;95;191;;;
                                  -112810;1;0;false;false;;;;;;
                                  -112811;8;1;false;false;127;159;191;;;
                                  -112819;8;0;false;false;63;95;191;;;
                                  -112827;1;0;false;false;;;;;;
                                  -112828;3;0;false;false;63;95;191;;;
                                  -112831;1;0;false;false;;;;;;
                                  -112832;8;0;false;false;63;95;191;;;
                                  -112840;3;0;false;false;;;;;;
                                  -112843;1;0;false;false;63;95;191;;;
                                  -112844;1;0;false;false;;;;;;
                                  -112845;11;1;false;false;127;159;191;;;
                                  -112856;12;0;false;false;63;95;191;;;
                                  -112868;1;0;false;false;;;;;;
                                  -112869;4;0;false;false;127;127;159;;;
                                  -112873;3;0;false;false;;;;;;
                                  -112876;1;0;false;false;63;95;191;;;
                                  -112877;4;0;false;false;;;;;;
                                  -112881;4;0;false;false;127;127;159;;;
                                  -112885;21;0;false;false;63;95;191;;;
                                  -112906;1;0;false;false;;;;;;
                                  -112907;1;0;false;false;127;127;159;;;
                                  -112908;1;0;false;false;;;;;;
                                  -112909;2;0;false;false;63;95;191;;;
                                  -112911;1;0;false;false;;;;;;
                                  -112912;3;0;false;false;63;95;191;;;
                                  -112915;1;0;false;false;;;;;;
                                  -112916;8;0;false;false;63;95;191;;;
                                  -112924;1;0;false;false;;;;;;
                                  -112925;3;0;false;false;63;95;191;;;
                                  -112928;1;0;false;false;;;;;;
                                  -112929;4;0;false;false;63;95;191;;;
                                  -112933;1;0;false;false;;;;;;
                                  -112934;8;0;false;false;63;95;191;;;
                                  -112942;5;0;false;false;127;127;159;;;
                                  -112947;3;0;false;false;;;;;;
                                  -112950;1;0;false;false;63;95;191;;;
                                  -112951;4;0;false;false;;;;;;
                                  -112955;4;0;false;false;127;127;159;;;
                                  -112959;27;0;false;false;63;95;191;;;
                                  -112986;1;0;false;false;;;;;;
                                  -112987;1;0;false;false;127;127;159;;;
                                  -112988;1;0;false;false;;;;;;
                                  -112989;2;0;false;false;63;95;191;;;
                                  -112991;1;0;false;false;;;;;;
                                  -112992;3;0;false;false;63;95;191;;;
                                  -112995;1;0;false;false;;;;;;
                                  -112996;6;0;false;false;63;95;191;;;
                                  -113002;1;0;false;false;;;;;;
                                  -113003;4;0;false;false;63;95;191;;;
                                  -113007;1;0;false;false;;;;;;
                                  -113008;3;0;false;false;63;95;191;;;
                                  -113011;1;0;false;false;;;;;;
                                  -113012;6;0;false;false;63;95;191;;;
                                  -113018;1;0;false;false;;;;;;
                                  -113019;4;0;false;false;63;95;191;;;
                                  -113023;1;0;false;false;;;;;;
                                  -113024;7;0;false;false;63;95;191;;;
                                  -113031;1;0;false;false;;;;;;
                                  -113032;3;0;false;false;63;95;191;;;
                                  -113035;1;0;false;false;;;;;;
                                  -113036;8;0;false;false;63;95;191;;;
                                  -113044;5;0;false;false;127;127;159;;;
                                  -113049;3;0;false;false;;;;;;
                                  -113052;1;0;false;false;63;95;191;;;
                                  -113053;1;0;false;false;;;;;;
                                  -113054;5;0;false;false;127;127;159;;;
                                  -113059;3;0;false;false;;;;;;
                                  -113062;1;0;false;false;63;95;191;;;
                                  -113063;1;0;false;false;;;;;;
                                  -113064;7;1;false;false;127;159;191;;;
                                  -113071;3;0;false;false;63;95;191;;;
                                  -113074;3;0;false;false;;;;;;
                                  -113077;2;0;false;false;63;95;191;;;
                                  -113079;2;0;false;false;;;;;;
                                  -113081;6;1;false;false;127;0;85;;;
                                  -113087;1;0;false;false;;;;;;
                                  -113088;3;1;false;false;127;0;85;;;
                                  -113091;1;0;false;false;;;;;;
                                  -113092;13;0;false;false;0;0;0;;;
                                  -113105;1;0;false;false;;;;;;
                                  -113106;1;0;false;false;0;0;0;;;
                                  -113107;3;0;false;false;;;;;;
                                  -113110;14;0;false;false;0;0;0;;;
                                  -113124;3;0;false;false;;;;;;
                                  -113127;6;1;false;false;127;0;85;;;
                                  -113133;1;0;false;false;;;;;;
                                  -113134;23;0;false;false;0;0;0;;;
                                  -113157;2;0;false;false;;;;;;
                                  -113159;1;0;false;false;0;0;0;;;
                                  -113160;2;0;false;false;;;;;;
                                  -113162;3;0;false;false;63;95;191;;;
                                  -113165;3;0;false;false;;;;;;
                                  -113168;1;0;false;false;63;95;191;;;
                                  -113169;1;0;false;false;;;;;;
                                  -113170;4;0;false;false;63;95;191;;;
                                  -113174;1;0;false;false;;;;;;
                                  -113175;3;0;false;false;63;95;191;;;
                                  -113178;1;0;false;false;;;;;;
                                  -113179;4;0;false;false;63;95;191;;;
                                  -113183;1;0;false;false;;;;;;
                                  -113184;8;0;false;false;63;95;191;;;
                                  -113192;1;0;false;false;;;;;;
                                  -113193;5;0;false;false;63;95;191;;;
                                  -113198;2;0;false;false;;;;;;
                                  -113200;4;0;false;false;63;95;191;;;
                                  -113204;1;0;false;false;;;;;;
                                  -113205;4;0;false;false;63;95;191;;;
                                  -113209;1;0;false;false;;;;;;
                                  -113210;3;0;false;false;63;95;191;;;
                                  -113213;1;0;false;false;;;;;;
                                  -113214;4;0;false;false;63;95;191;;;
                                  -113218;1;0;false;false;;;;;;
                                  -113219;4;0;false;false;63;95;191;;;
                                  -113223;1;0;false;false;;;;;;
                                  -113224;7;0;false;false;63;95;191;;;
                                  -113231;3;0;false;false;;;;;;
                                  -113234;1;0;false;false;63;95;191;;;
                                  -113235;1;0;false;false;;;;;;
                                  -113236;9;0;false;false;63;95;191;;;
                                  -113245;1;0;false;false;;;;;;
                                  -113246;2;0;false;false;63;95;191;;;
                                  -113248;1;0;false;false;;;;;;
                                  -113249;7;0;false;false;63;95;191;;;
                                  -113256;1;0;false;false;;;;;;
                                  -113257;2;0;false;false;63;95;191;;;
                                  -113259;1;0;false;false;;;;;;
                                  -113260;8;0;false;false;63;95;191;;;
                                  -113268;1;0;false;false;;;;;;
                                  -113269;2;0;false;false;63;95;191;;;
                                  -113271;1;0;false;false;;;;;;
                                  -113272;4;0;false;false;63;95;191;;;
                                  -113276;1;0;false;false;;;;;;
                                  -113277;4;0;false;false;63;95;191;;;
                                  -113281;1;0;false;false;;;;;;
                                  -113282;3;0;false;false;63;95;191;;;
                                  -113285;1;0;false;false;;;;;;
                                  -113286;3;0;false;false;63;95;191;;;
                                  -113289;1;0;false;false;;;;;;
                                  -113290;4;0;false;false;63;95;191;;;
                                  -113294;3;0;false;false;;;;;;
                                  -113297;1;0;false;false;63;95;191;;;
                                  -113298;1;0;false;false;;;;;;
                                  -113299;6;0;false;false;63;95;191;;;
                                  -113305;3;0;false;false;;;;;;
                                  -113308;1;0;false;false;63;95;191;;;
                                  -113309;3;0;false;false;;;;;;
                                  -113312;1;0;false;false;63;95;191;;;
                                  -113313;1;0;false;false;;;;;;
                                  -113314;8;1;false;false;127;159;191;;;
                                  -113322;3;0;false;false;63;95;191;;;
                                  -113325;1;0;false;false;;;;;;
                                  -113326;7;0;false;false;63;95;191;;;
                                  -113333;1;0;false;false;;;;;;
                                  -113334;8;0;false;false;63;95;191;;;
                                  -113342;1;0;false;false;;;;;;
                                  -113343;4;0;false;false;63;95;191;;;
                                  -113347;3;0;false;false;;;;;;
                                  -113350;1;0;false;false;63;95;191;;;
                                  -113351;1;0;false;false;;;;;;
                                  -113352;11;1;false;false;127;159;191;;;
                                  -113363;12;0;false;false;63;95;191;;;
                                  -113375;1;0;false;false;;;;;;
                                  -113376;4;0;false;false;127;127;159;;;
                                  -113380;3;0;false;false;;;;;;
                                  -113383;1;0;false;false;63;95;191;;;
                                  -113384;4;0;false;false;;;;;;
                                  -113388;4;0;false;false;127;127;159;;;
                                  -113392;21;0;false;false;63;95;191;;;
                                  -113413;1;0;false;false;;;;;;
                                  -113414;1;0;false;false;127;127;159;;;
                                  -113415;1;0;false;false;;;;;;
                                  -113416;2;0;false;false;63;95;191;;;
                                  -113418;1;0;false;false;;;;;;
                                  -113419;3;0;false;false;63;95;191;;;
                                  -113422;1;0;false;false;;;;;;
                                  -113423;8;0;false;false;63;95;191;;;
                                  -113431;1;0;false;false;;;;;;
                                  -113432;3;0;false;false;63;95;191;;;
                                  -113435;1;0;false;false;;;;;;
                                  -113436;4;0;false;false;63;95;191;;;
                                  -113440;1;0;false;false;;;;;;
                                  -113441;8;0;false;false;63;95;191;;;
                                  -113449;5;0;false;false;127;127;159;;;
                                  -113454;3;0;false;false;;;;;;
                                  -113457;1;0;false;false;63;95;191;;;
                                  -113458;4;0;false;false;;;;;;
                                  -113462;4;0;false;false;127;127;159;;;
                                  -113466;27;0;false;false;63;95;191;;;
                                  -113493;1;0;false;false;;;;;;
                                  -113494;1;0;false;false;127;127;159;;;
                                  -113495;1;0;false;false;;;;;;
                                  -113496;2;0;false;false;63;95;191;;;
                                  -113498;1;0;false;false;;;;;;
                                  -113499;3;0;false;false;63;95;191;;;
                                  -113502;1;0;false;false;;;;;;
                                  -113503;6;0;false;false;63;95;191;;;
                                  -113509;1;0;false;false;;;;;;
                                  -113510;4;0;false;false;63;95;191;;;
                                  -113514;1;0;false;false;;;;;;
                                  -113515;3;0;false;false;63;95;191;;;
                                  -113518;1;0;false;false;;;;;;
                                  -113519;6;0;false;false;63;95;191;;;
                                  -113525;1;0;false;false;;;;;;
                                  -113526;4;0;false;false;63;95;191;;;
                                  -113530;1;0;false;false;;;;;;
                                  -113531;7;0;false;false;63;95;191;;;
                                  -113538;1;0;false;false;;;;;;
                                  -113539;3;0;false;false;63;95;191;;;
                                  -113542;1;0;false;false;;;;;;
                                  -113543;8;0;false;false;63;95;191;;;
                                  -113551;5;0;false;false;127;127;159;;;
                                  -113556;3;0;false;false;;;;;;
                                  -113559;1;0;false;false;63;95;191;;;
                                  -113560;1;0;false;false;;;;;;
                                  -113561;5;0;false;false;127;127;159;;;
                                  -113566;3;0;false;false;;;;;;
                                  -113569;1;0;false;false;63;95;191;;;
                                  -113570;1;0;false;false;;;;;;
                                  -113571;3;0;false;false;127;127;159;;;
                                  -113574;3;0;false;false;;;;;;
                                  -113577;1;0;false;false;63;95;191;;;
                                  -113578;1;0;false;false;;;;;;
                                  -113579;12;1;false;false;127;159;191;;;
                                  -113591;3;0;false;false;63;95;191;;;
                                  -113594;1;0;false;false;;;;;;
                                  -113595;19;0;false;false;63;95;191;;;
                                  -113614;1;0;false;false;;;;;;
                                  -113615;8;0;false;false;63;95;191;;;
                                  -113623;3;0;false;false;;;;;;
                                  -113626;1;0;false;false;63;95;191;;;
                                  -113627;1;0;false;false;;;;;;
                                  -113628;4;0;false;false;127;127;159;;;
                                  -113632;3;0;false;false;;;;;;
                                  -113635;2;0;false;false;63;95;191;;;
                                  -113637;2;0;false;false;;;;;;
                                  -113639;6;1;false;false;127;0;85;;;
                                  -113645;1;0;false;false;;;;;;
                                  -113646;7;1;false;false;127;0;85;;;
                                  -113653;1;0;false;false;;;;;;
                                  -113654;17;0;false;false;0;0;0;;;
                                  -113671;1;0;false;false;;;;;;
                                  -113672;1;0;false;false;0;0;0;;;
                                  -113673;3;0;false;false;;;;;;
                                  -113676;14;0;false;false;0;0;0;;;
                                  -113690;3;0;false;false;;;;;;
                                  -113693;6;1;false;false;127;0;85;;;
                                  -113699;1;0;false;false;;;;;;
                                  -113700;13;0;false;false;0;0;0;;;
                                  -113713;2;0;false;false;;;;;;
                                  -113715;1;0;false;false;0;0;0;;;
                                  -113716;2;0;false;false;;;;;;
                                  -113718;3;0;false;false;63;95;191;;;
                                  -113721;4;0;false;false;;;;;;
                                  -113725;1;0;false;false;63;95;191;;;
                                  -113726;1;0;false;false;;;;;;
                                  -113727;7;0;false;false;63;95;191;;;
                                  -113734;1;0;false;false;;;;;;
                                  -113735;3;0;false;false;63;95;191;;;
                                  -113738;1;0;false;false;;;;;;
                                  -113739;5;0;false;false;63;95;191;;;
                                  -113744;1;0;false;false;;;;;;
                                  -113745;2;0;false;false;63;95;191;;;
                                  -113747;1;0;false;false;;;;;;
                                  -113748;3;0;false;false;63;95;191;;;
                                  -113751;1;0;false;false;;;;;;
                                  -113752;4;0;false;false;63;95;191;;;
                                  -113756;1;0;false;false;;;;;;
                                  -113757;5;0;false;false;63;95;191;;;
                                  -113762;1;0;false;false;;;;;;
                                  -113763;7;0;false;false;63;95;191;;;
                                  -113770;1;0;false;false;;;;;;
                                  -113771;5;0;false;false;63;95;191;;;
                                  -113776;3;0;false;false;;;;;;
                                  -113779;1;0;false;false;63;95;191;;;
                                  -113780;1;0;false;false;;;;;;
                                  -113781;3;0;false;false;127;127;159;;;
                                  -113784;3;0;false;false;;;;;;
                                  -113787;1;0;false;false;63;95;191;;;
                                  -113788;3;0;false;false;;;;;;
                                  -113791;1;0;false;false;63;95;191;;;
                                  -113792;1;0;false;false;;;;;;
                                  -113793;8;1;false;false;127;159;191;;;
                                  -113801;5;0;false;false;63;95;191;;;
                                  -113806;1;0;false;false;;;;;;
                                  -113807;2;0;false;false;63;95;191;;;
                                  -113809;1;0;false;false;;;;;;
                                  -113810;3;0;false;false;63;95;191;;;
                                  -113813;1;0;false;false;;;;;;
                                  -113814;4;0;false;false;63;95;191;;;
                                  -113818;1;0;false;false;;;;;;
                                  -113819;5;0;false;false;63;95;191;;;
                                  -113824;1;0;false;false;;;;;;
                                  -113825;7;0;false;false;63;95;191;;;
                                  -113832;1;0;false;false;;;;;;
                                  -113833;5;0;false;false;63;95;191;;;
                                  -113838;3;0;false;false;;;;;;
                                  -113841;2;0;false;false;63;95;191;;;
                                  -113843;2;0;false;false;;;;;;
                                  -113845;3;1;false;false;127;0;85;;;
                                  -113848;1;0;false;false;;;;;;
                                  -113849;16;0;false;false;0;0;0;;;
                                  -113865;1;0;false;false;;;;;;
                                  -113866;1;0;false;false;0;0;0;;;
                                  -113867;3;0;false;false;;;;;;
                                  -113870;3;1;false;false;127;0;85;;;
                                  -113873;1;0;false;false;;;;;;
                                  -113874;9;0;false;false;0;0;0;;;
                                  -113883;1;0;false;false;;;;;;
                                  -113884;1;0;false;false;0;0;0;;;
                                  -113885;1;0;false;false;;;;;;
                                  -113886;2;0;false;false;0;0;0;;;
                                  -113888;6;0;false;false;;;;;;
                                  -113894;2;1;false;false;127;0;85;;;
                                  -113896;1;0;false;false;;;;;;
                                  -113897;11;0;false;false;0;0;0;;;
                                  -113908;1;0;false;false;;;;;;
                                  -113909;2;0;false;false;0;0;0;;;
                                  -113911;1;0;false;false;;;;;;
                                  -113912;2;0;false;false;0;0;0;;;
                                  -113914;1;0;false;false;;;;;;
                                  -113915;1;0;false;false;0;0;0;;;
                                  -113916;4;0;false;false;;;;;;
                                  -113920;57;0;false;false;63;127;95;;;
                                  -113977;2;0;false;false;;;;;;
                                  -113979;3;1;false;false;127;0;85;;;
                                  -113982;1;0;false;false;;;;;;
                                  -113983;20;0;false;false;0;0;0;;;
                                  -114003;1;0;false;false;;;;;;
                                  -114004;1;0;false;false;0;0;0;;;
                                  -114005;1;0;false;false;;;;;;
                                  -114006;8;0;false;false;0;0;0;;;
                                  -114014;1;0;false;false;;;;;;
                                  -114015;1;0;false;false;0;0;0;;;
                                  -114016;1;0;false;false;;;;;;
                                  -114017;10;0;false;false;0;0;0;;;
                                  -114027;1;0;false;false;;;;;;
                                  -114028;1;0;false;false;0;0;0;;;
                                  -114029;1;0;false;false;;;;;;
                                  -114030;21;0;false;false;0;0;0;;;
                                  -114051;4;0;false;false;;;;;;
                                  -114055;9;0;false;false;0;0;0;;;
                                  -114064;1;0;false;false;;;;;;
                                  -114065;1;0;false;false;0;0;0;;;
                                  -114066;1;0;false;false;;;;;;
                                  -114067;23;0;false;false;0;0;0;;;
                                  -114090;1;0;false;false;;;;;;
                                  -114091;1;0;false;false;0;0;0;;;
                                  -114092;1;0;false;false;;;;;;
                                  -114093;21;0;false;false;0;0;0;;;
                                  -114114;1;0;false;false;;;;;;
                                  -114115;1;0;false;false;0;0;0;;;
                                  -114116;1;0;false;false;;;;;;
                                  -114117;11;0;false;false;0;0;0;;;
                                  -114128;3;0;false;false;;;;;;
                                  -114131;1;0;false;false;0;0;0;;;
                                  -114132;3;0;false;false;;;;;;
                                  -114135;6;1;false;false;127;0;85;;;
                                  -114141;1;0;false;false;;;;;;
                                  -114142;31;0;false;false;0;0;0;;;
                                  -114173;1;0;false;false;;;;;;
                                  -114174;1;0;false;false;0;0;0;;;
                                  -114175;1;0;false;false;;;;;;
                                  -114176;2;0;false;false;0;0;0;;;
                                  -114178;1;0;false;false;;;;;;
                                  -114179;8;0;false;false;0;0;0;;;
                                  -114187;1;0;false;false;;;;;;
                                  -114188;1;0;false;false;0;0;0;;;
                                  -114189;1;0;false;false;;;;;;
                                  -114190;11;0;false;false;0;0;0;;;
                                  -114201;1;0;false;false;;;;;;
                                  -114202;9;0;false;false;0;0;0;;;
                                  -114211;1;0;false;false;;;;;;
                                  -114212;1;0;false;false;0;0;0;;;
                                  -114213;1;0;false;false;;;;;;
                                  -114214;4;0;false;false;0;0;0;;;
                                  -114218;2;0;false;false;;;;;;
                                  -114220;1;0;false;false;0;0;0;;;
                                  -114221;2;0;false;false;;;;;;
                                  -114223;3;0;false;false;63;95;191;;;
                                  -114226;3;0;false;false;;;;;;
                                  -114229;1;0;false;false;63;95;191;;;
                                  -114230;1;0;false;false;;;;;;
                                  -114231;7;0;false;false;63;95;191;;;
                                  -114238;1;0;false;false;;;;;;
                                  -114239;3;0;false;false;63;95;191;;;
                                  -114242;1;0;false;false;;;;;;
                                  -114243;5;0;false;false;63;95;191;;;
                                  -114248;1;0;false;false;;;;;;
                                  -114249;8;0;false;false;63;95;191;;;
                                  -114257;1;0;false;false;;;;;;
                                  -114258;8;0;false;false;63;95;191;;;
                                  -114266;1;0;false;false;;;;;;
                                  -114267;2;0;false;false;63;95;191;;;
                                  -114269;1;0;false;false;;;;;;
                                  -114270;3;0;false;false;63;95;191;;;
                                  -114273;1;0;false;false;;;;;;
                                  -114274;5;0;false;false;63;95;191;;;
                                  -114279;1;0;false;false;;;;;;
                                  -114280;2;0;false;false;63;95;191;;;
                                  -114282;1;0;false;false;;;;;;
                                  -114283;3;0;false;false;63;95;191;;;
                                  -114286;1;0;false;false;;;;;;
                                  -114287;5;0;false;false;63;95;191;;;
                                  -114292;3;0;false;false;;;;;;
                                  -114295;1;0;false;false;63;95;191;;;
                                  -114296;1;0;false;false;;;;;;
                                  -114297;3;0;false;false;127;127;159;;;
                                  -114300;3;0;false;false;;;;;;
                                  -114303;1;0;false;false;63;95;191;;;
                                  -114304;3;0;false;false;;;;;;
                                  -114307;1;0;false;false;63;95;191;;;
                                  -114308;1;0;false;false;;;;;;
                                  -114309;8;1;false;false;127;159;191;;;
                                  -114317;3;0;false;false;63;95;191;;;
                                  -114320;1;0;false;false;;;;;;
                                  -114321;5;0;false;false;63;95;191;;;
                                  -114326;1;0;false;false;;;;;;
                                  -114327;8;0;false;false;63;95;191;;;
                                  -114335;1;0;false;false;;;;;;
                                  -114336;8;0;false;false;63;95;191;;;
                                  -114344;1;0;false;false;;;;;;
                                  -114345;2;0;false;false;63;95;191;;;
                                  -114347;1;0;false;false;;;;;;
                                  -114348;3;0;false;false;63;95;191;;;
                                  -114351;1;0;false;false;;;;;;
                                  -114352;5;0;false;false;63;95;191;;;
                                  -114357;1;0;false;false;;;;;;
                                  -114358;2;0;false;false;63;95;191;;;
                                  -114360;1;0;false;false;;;;;;
                                  -114361;3;0;false;false;63;95;191;;;
                                  -114364;1;0;false;false;;;;;;
                                  -114365;5;0;false;false;63;95;191;;;
                                  -114370;3;0;false;false;;;;;;
                                  -114373;1;0;false;false;63;95;191;;;
                                  -114374;1;0;false;false;;;;;;
                                  -114375;11;1;false;false;127;159;191;;;
                                  -114386;12;0;false;false;63;95;191;;;
                                  -114398;1;0;false;false;;;;;;
                                  -114399;4;0;false;false;127;127;159;;;
                                  -114403;3;0;false;false;;;;;;
                                  -114406;1;0;false;false;63;95;191;;;
                                  -114407;4;0;false;false;;;;;;
                                  -114411;4;0;false;false;127;127;159;;;
                                  -114415;21;0;false;false;63;95;191;;;
                                  -114436;1;0;false;false;;;;;;
                                  -114437;1;0;false;false;127;127;159;;;
                                  -114438;1;0;false;false;;;;;;
                                  -114439;2;0;false;false;63;95;191;;;
                                  -114441;1;0;false;false;;;;;;
                                  -114442;3;0;false;false;63;95;191;;;
                                  -114445;1;0;false;false;;;;;;
                                  -114446;8;0;false;false;63;95;191;;;
                                  -114454;1;0;false;false;;;;;;
                                  -114455;3;0;false;false;63;95;191;;;
                                  -114458;1;0;false;false;;;;;;
                                  -114459;4;0;false;false;63;95;191;;;
                                  -114463;1;0;false;false;;;;;;
                                  -114464;8;0;false;false;63;95;191;;;
                                  -114472;5;0;false;false;127;127;159;;;
                                  -114477;3;0;false;false;;;;;;
                                  -114480;1;0;false;false;63;95;191;;;
                                  -114481;4;0;false;false;;;;;;
                                  -114485;4;0;false;false;127;127;159;;;
                                  -114489;27;0;false;false;63;95;191;;;
                                  -114516;1;0;false;false;;;;;;
                                  -114517;1;0;false;false;127;127;159;;;
                                  -114518;1;0;false;false;;;;;;
                                  -114519;2;0;false;false;63;95;191;;;
                                  -114521;1;0;false;false;;;;;;
                                  -114522;3;0;false;false;63;95;191;;;
                                  -114525;1;0;false;false;;;;;;
                                  -114526;6;0;false;false;63;95;191;;;
                                  -114532;1;0;false;false;;;;;;
                                  -114533;4;0;false;false;63;95;191;;;
                                  -114537;1;0;false;false;;;;;;
                                  -114538;3;0;false;false;63;95;191;;;
                                  -114541;1;0;false;false;;;;;;
                                  -114542;6;0;false;false;63;95;191;;;
                                  -114548;1;0;false;false;;;;;;
                                  -114549;4;0;false;false;63;95;191;;;
                                  -114553;1;0;false;false;;;;;;
                                  -114554;7;0;false;false;63;95;191;;;
                                  -114561;1;0;false;false;;;;;;
                                  -114562;3;0;false;false;63;95;191;;;
                                  -114565;1;0;false;false;;;;;;
                                  -114566;8;0;false;false;63;95;191;;;
                                  -114574;5;0;false;false;127;127;159;;;
                                  -114579;3;0;false;false;;;;;;
                                  -114582;1;0;false;false;63;95;191;;;
                                  -114583;1;0;false;false;;;;;;
                                  -114584;5;0;false;false;127;127;159;;;
                                  -114589;3;0;false;false;;;;;;
                                  -114592;2;0;false;false;63;95;191;;;
                                  -114594;2;0;false;false;;;;;;
                                  -114596;6;1;false;false;127;0;85;;;
                                  -114602;1;0;false;false;;;;;;
                                  -114603;3;1;false;false;127;0;85;;;
                                  -114606;1;0;false;false;;;;;;
                                  -114607;16;0;false;false;0;0;0;;;
                                  -114623;1;0;false;false;;;;;;
                                  -114624;1;0;false;false;0;0;0;;;
                                  -114625;3;0;false;false;;;;;;
                                  -114628;14;0;false;false;0;0;0;;;
                                  -114642;6;0;false;false;;;;;;
                                  -114648;6;1;false;false;127;0;85;;;
                                  -114654;1;0;false;false;;;;;;
                                  -114655;12;0;false;false;0;0;0;;;
                                  -114667;2;0;false;false;;;;;;
                                  -114669;1;0;false;false;0;0;0;;;
                                  -114670;2;0;false;false;;;;;;
                                  -114672;3;0;false;false;63;95;191;;;
                                  -114675;3;0;false;false;;;;;;
                                  -114678;1;0;false;false;63;95;191;;;
                                  -114679;1;0;false;false;;;;;;
                                  -114680;7;0;false;false;63;95;191;;;
                                  -114687;1;0;false;false;;;;;;
                                  -114688;3;0;false;false;63;95;191;;;
                                  -114691;1;0;false;false;;;;;;
                                  -114692;5;0;false;false;63;95;191;;;
                                  -114697;1;0;false;false;;;;;;
                                  -114698;6;0;false;false;63;95;191;;;
                                  -114704;1;0;false;false;;;;;;
                                  -114705;2;0;false;false;63;95;191;;;
                                  -114707;1;0;false;false;;;;;;
                                  -114708;3;0;false;false;63;95;191;;;
                                  -114711;1;0;false;false;;;;;;
                                  -114712;5;0;false;false;63;95;191;;;
                                  -114717;1;0;false;false;;;;;;
                                  -114718;1;0;false;false;63;95;191;;;
                                  -114719;1;0;false;false;;;;;;
                                  -114720;8;0;false;false;63;95;191;;;
                                  -114728;1;0;false;false;;;;;;
                                  -114729;2;0;false;false;63;95;191;;;
                                  -114731;1;0;false;false;;;;;;
                                  -114732;3;0;false;false;63;95;191;;;
                                  -114735;1;0;false;false;;;;;;
                                  -114736;5;0;false;false;63;95;191;;;
                                  -114741;3;0;false;false;;;;;;
                                  -114744;1;0;false;false;63;95;191;;;
                                  -114745;1;0;false;false;;;;;;
                                  -114746;3;0;false;false;63;95;191;;;
                                  -114749;1;0;false;false;;;;;;
                                  -114750;5;0;false;false;63;95;191;;;
                                  -114755;1;0;false;false;;;;;;
                                  -114756;6;0;false;false;63;95;191;;;
                                  -114762;1;0;false;false;;;;;;
                                  -114763;2;0;false;false;63;95;191;;;
                                  -114765;1;0;false;false;;;;;;
                                  -114766;3;0;false;false;63;95;191;;;
                                  -114769;1;0;false;false;;;;;;
                                  -114770;6;0;false;false;63;95;191;;;
                                  -114776;1;0;false;false;;;;;;
                                  -114777;2;0;false;false;63;95;191;;;
                                  -114779;1;0;false;false;;;;;;
                                  -114780;3;0;false;false;63;95;191;;;
                                  -114783;1;0;false;false;;;;;;
                                  -114784;9;0;false;false;63;95;191;;;
                                  -114793;1;0;false;false;;;;;;
                                  -114794;5;0;false;false;63;95;191;;;
                                  -114799;1;0;false;false;;;;;;
                                  -114800;3;0;false;false;63;95;191;;;
                                  -114803;1;0;false;false;;;;;;
                                  -114804;5;0;false;false;63;95;191;;;
                                  -114809;1;0;false;false;;;;;;
                                  -114810;4;0;false;false;63;95;191;;;
                                  -114814;1;0;false;false;;;;;;
                                  -114815;2;0;false;false;63;95;191;;;
                                  -114817;3;0;false;false;;;;;;
                                  -114820;1;0;false;false;63;95;191;;;
                                  -114821;1;0;false;false;;;;;;
                                  -114822;6;0;false;false;63;95;191;;;
                                  -114828;1;0;false;false;;;;;;
                                  -114829;4;0;false;false;63;95;191;;;
                                  -114833;1;0;false;false;;;;;;
                                  -114834;1;0;false;false;63;95;191;;;
                                  -114835;1;0;false;false;;;;;;
                                  -114836;5;0;false;false;63;95;191;;;
                                  -114841;1;0;false;false;;;;;;
                                  -114842;5;0;false;false;63;95;191;;;
                                  -114847;1;0;false;false;;;;;;
                                  -114848;7;0;false;false;63;95;191;;;
                                  -114855;1;0;false;false;;;;;;
                                  -114856;3;0;false;false;63;95;191;;;
                                  -114859;1;0;false;false;;;;;;
                                  -114860;5;0;false;false;63;95;191;;;
                                  -114865;1;0;false;false;;;;;;
                                  -114866;6;0;false;false;63;95;191;;;
                                  -114872;1;0;false;false;;;;;;
                                  -114873;4;0;false;false;63;95;191;;;
                                  -114877;1;0;false;false;;;;;;
                                  -114878;2;0;false;false;63;95;191;;;
                                  -114880;1;0;false;false;;;;;;
                                  -114881;3;0;false;false;63;95;191;;;
                                  -114884;1;0;false;false;;;;;;
                                  -114885;6;0;false;false;63;95;191;;;
                                  -114891;1;0;false;false;;;;;;
                                  -114892;2;0;false;false;63;95;191;;;
                                  -114894;4;0;false;false;;;;;;
                                  -114898;1;0;false;false;63;95;191;;;
                                  -114899;1;0;false;false;;;;;;
                                  -114900;3;0;false;false;63;95;191;;;
                                  -114903;1;0;false;false;;;;;;
                                  -114904;9;0;false;false;63;95;191;;;
                                  -114913;1;0;false;false;;;;;;
                                  -114914;5;0;false;false;63;95;191;;;
                                  -114919;1;0;false;false;;;;;;
                                  -114920;3;0;false;false;63;95;191;;;
                                  -114923;1;0;false;false;;;;;;
                                  -114924;7;0;false;false;63;95;191;;;
                                  -114931;1;0;false;false;;;;;;
                                  -114932;3;0;false;false;63;95;191;;;
                                  -114935;1;0;false;false;;;;;;
                                  -114936;2;0;false;false;63;95;191;;;
                                  -114938;1;0;false;false;;;;;;
                                  -114939;3;0;false;false;63;95;191;;;
                                  -114942;1;0;false;false;;;;;;
                                  -114943;5;0;false;false;63;95;191;;;
                                  -114948;1;0;false;false;;;;;;
                                  -114949;5;0;false;false;63;95;191;;;
                                  -114954;1;0;false;false;;;;;;
                                  -114955;6;0;false;false;63;95;191;;;
                                  -114961;1;0;false;false;;;;;;
                                  -114962;2;0;false;false;63;95;191;;;
                                  -114964;1;0;false;false;;;;;;
                                  -114965;3;0;false;false;63;95;191;;;
                                  -114968;1;0;false;false;;;;;;
                                  -114969;6;0;false;false;63;95;191;;;
                                  -114975;4;0;false;false;;;;;;
                                  -114979;1;0;false;false;63;95;191;;;
                                  -114980;1;0;false;false;;;;;;
                                  -114981;4;0;false;false;63;95;191;;;
                                  -114985;1;0;false;false;;;;;;
                                  -114986;2;0;false;false;63;95;191;;;
                                  -114988;1;0;false;false;;;;;;
                                  -114989;1;0;false;false;63;95;191;;;
                                  -114990;1;0;false;false;;;;;;
                                  -114991;10;0;false;false;63;95;191;;;
                                  -115001;3;0;false;false;;;;;;
                                  -115004;1;0;false;false;63;95;191;;;
                                  -115005;1;0;false;false;;;;;;
                                  -115006;7;0;false;false;63;95;191;;;
                                  -115013;1;0;false;false;;;;;;
                                  -115014;8;0;false;false;63;95;191;;;
                                  -115022;1;0;false;false;;;;;;
                                  -115023;6;0;false;false;63;95;191;;;
                                  -115029;1;0;false;false;;;;;;
                                  -115030;9;0;false;false;63;95;191;;;
                                  -115039;1;0;false;false;;;;;;
                                  -115040;3;0;false;false;63;95;191;;;
                                  -115043;1;0;false;false;;;;;;
                                  -115044;5;0;false;false;63;95;191;;;
                                  -115049;1;0;false;false;;;;;;
                                  -115050;7;0;false;false;63;95;191;;;
                                  -115057;1;0;false;false;;;;;;
                                  -115058;9;0;false;false;63;95;191;;;
                                  -115067;1;0;false;false;;;;;;
                                  -115068;10;0;false;false;63;95;191;;;
                                  -115078;4;0;false;false;;;;;;
                                  -115082;1;0;false;false;63;95;191;;;
                                  -115083;1;0;false;false;;;;;;
                                  -115084;6;0;false;false;63;95;191;;;
                                  -115090;1;0;false;false;;;;;;
                                  -115091;3;0;false;false;63;95;191;;;
                                  -115094;1;0;false;false;;;;;;
                                  -115095;7;0;false;false;63;95;191;;;
                                  -115102;1;0;false;false;;;;;;
                                  -115103;6;0;false;false;63;95;191;;;
                                  -115109;1;0;false;false;;;;;;
                                  -115110;2;0;false;false;63;95;191;;;
                                  -115112;1;0;false;false;;;;;;
                                  -115113;1;0;false;false;63;95;191;;;
                                  -115114;1;0;false;false;;;;;;
                                  -115115;4;0;false;false;63;95;191;;;
                                  -115119;1;0;false;false;;;;;;
                                  -115120;7;0;false;false;63;95;191;;;
                                  -115127;4;0;false;false;;;;;;
                                  -115131;1;0;false;false;63;95;191;;;
                                  -115132;1;0;false;false;;;;;;
                                  -115133;9;0;false;false;63;95;191;;;
                                  -115142;1;0;false;false;;;;;;
                                  -115143;3;0;false;false;63;95;191;;;
                                  -115146;1;0;false;false;;;;;;
                                  -115147;7;0;false;false;63;95;191;;;
                                  -115154;1;0;false;false;;;;;;
                                  -115155;8;0;false;false;63;95;191;;;
                                  -115163;1;0;false;false;;;;;;
                                  -115164;2;0;false;false;63;95;191;;;
                                  -115166;1;0;false;false;;;;;;
                                  -115167;4;0;false;false;63;95;191;;;
                                  -115171;1;0;false;false;;;;;;
                                  -115172;2;0;false;false;63;95;191;;;
                                  -115174;1;0;false;false;;;;;;
                                  -115175;4;0;false;false;63;95;191;;;
                                  -115179;1;0;false;false;;;;;;
                                  -115180;5;0;false;false;63;95;191;;;
                                  -115185;1;0;false;false;;;;;;
                                  -115186;5;0;false;false;63;95;191;;;
                                  -115191;1;0;false;false;;;;;;
                                  -115192;2;0;false;false;63;95;191;;;
                                  -115194;1;0;false;false;;;;;;
                                  -115195;12;0;false;false;63;95;191;;;
                                  -115207;3;0;false;false;;;;;;
                                  -115210;1;0;false;false;63;95;191;;;
                                  -115211;1;0;false;false;;;;;;
                                  -115212;3;0;false;false;127;127;159;;;
                                  -115215;3;0;false;false;;;;;;
                                  -115218;1;0;false;false;63;95;191;;;
                                  -115219;3;0;false;false;;;;;;
                                  -115222;1;0;false;false;63;95;191;;;
                                  -115223;1;0;false;false;;;;;;
                                  -115224;7;1;false;false;127;159;191;;;
                                  -115231;4;0;false;false;63;95;191;;;
                                  -115235;1;0;false;false;;;;;;
                                  -115236;4;0;false;false;63;95;191;;;
                                  -115240;1;0;false;false;;;;;;
                                  -115241;2;0;false;false;63;95;191;;;
                                  -115243;1;0;false;false;;;;;;
                                  -115244;3;0;false;false;63;95;191;;;
                                  -115247;1;0;false;false;;;;;;
                                  -115248;4;0;false;false;63;95;191;;;
                                  -115252;1;0;false;false;;;;;;
                                  -115253;2;0;false;false;63;95;191;;;
                                  -115255;1;0;false;false;;;;;;
                                  -115256;9;0;false;false;63;95;191;;;
                                  -115265;1;0;false;false;;;;;;
                                  -115266;3;0;false;false;63;95;191;;;
                                  -115269;1;0;false;false;;;;;;
                                  -115270;6;0;false;false;63;95;191;;;
                                  -115276;1;0;false;false;;;;;;
                                  -115277;2;0;false;false;63;95;191;;;
                                  -115279;3;0;false;false;;;;;;
                                  -115282;1;0;false;false;63;95;191;;;
                                  -115283;1;0;false;false;;;;;;
                                  -115284;7;1;false;false;127;159;191;;;
                                  -115291;10;0;false;false;63;95;191;;;
                                  -115301;1;0;false;false;;;;;;
                                  -115302;6;0;false;false;63;95;191;;;
                                  -115308;1;0;false;false;;;;;;
                                  -115309;2;0;false;false;63;95;191;;;
                                  -115311;1;0;false;false;;;;;;
                                  -115312;3;0;false;false;63;95;191;;;
                                  -115315;1;0;false;false;;;;;;
                                  -115316;5;0;false;false;63;95;191;;;
                                  -115321;1;0;false;false;;;;;;
                                  -115322;9;0;false;false;63;95;191;;;
                                  -115331;1;0;false;false;;;;;;
                                  -115332;2;0;false;false;63;95;191;;;
                                  -115334;1;0;false;false;;;;;;
                                  -115335;3;0;false;false;63;95;191;;;
                                  -115338;1;0;false;false;;;;;;
                                  -115339;5;0;false;false;63;95;191;;;
                                  -115344;4;0;false;false;;;;;;
                                  -115348;1;0;false;false;63;95;191;;;
                                  -115349;2;0;false;false;;;;;;
                                  -115351;1;0;false;false;63;95;191;;;
                                  -115352;1;0;false;false;;;;;;
                                  -115353;5;0;false;false;63;95;191;;;
                                  -115358;1;0;false;false;;;;;;
                                  -115359;4;0;false;false;63;95;191;;;
                                  -115363;1;0;false;false;;;;;;
                                  -115364;3;0;false;false;63;95;191;;;
                                  -115367;1;0;false;false;;;;;;
                                  -115368;9;0;false;false;63;95;191;;;
                                  -115377;1;0;false;false;;;;;;
                                  -115378;2;0;false;false;63;95;191;;;
                                  -115380;1;0;false;false;;;;;;
                                  -115381;3;0;false;false;63;95;191;;;
                                  -115384;1;0;false;false;;;;;;
                                  -115385;9;0;false;false;63;95;191;;;
                                  -115394;3;0;false;false;;;;;;
                                  -115397;1;0;false;false;63;95;191;;;
                                  -115398;1;0;false;false;;;;;;
                                  -115399;7;1;false;false;127;159;191;;;
                                  -115406;11;0;false;false;63;95;191;;;
                                  -115417;1;0;false;false;;;;;;
                                  -115418;1;0;false;false;63;95;191;;;
                                  -115419;1;0;false;false;;;;;;
                                  -115420;8;0;false;false;63;95;191;;;
                                  -115428;1;0;false;false;;;;;;
                                  -115429;2;0;false;false;63;95;191;;;
                                  -115431;1;0;false;false;;;;;;
                                  -115432;3;0;false;false;63;95;191;;;
                                  -115435;1;0;false;false;;;;;;
                                  -115436;4;0;false;false;63;95;191;;;
                                  -115440;3;0;false;false;;;;;;
                                  -115443;1;0;false;false;63;95;191;;;
                                  -115444;1;0;false;false;;;;;;
                                  -115445;8;1;false;false;127;159;191;;;
                                  -115453;5;0;false;false;63;95;191;;;
                                  -115458;1;0;false;false;;;;;;
                                  -115459;6;0;false;false;63;95;191;;;
                                  -115465;1;0;false;false;;;;;;
                                  -115466;2;0;false;false;63;95;191;;;
                                  -115468;1;0;false;false;;;;;;
                                  -115469;3;0;false;false;63;95;191;;;
                                  -115472;1;0;false;false;;;;;;
                                  -115473;1;0;false;false;63;95;191;;;
                                  -115474;1;0;false;false;;;;;;
                                  -115475;8;0;false;false;63;95;191;;;
                                  -115483;1;0;false;false;;;;;;
                                  -115484;8;0;false;false;63;95;191;;;
                                  -115492;1;0;false;false;;;;;;
                                  -115493;2;0;false;false;63;95;191;;;
                                  -115495;1;0;false;false;;;;;;
                                  -115496;3;0;false;false;63;95;191;;;
                                  -115499;1;0;false;false;;;;;;
                                  -115500;5;0;false;false;63;95;191;;;
                                  -115505;1;0;false;false;;;;;;
                                  -115506;2;0;false;false;63;95;191;;;
                                  -115508;1;0;false;false;;;;;;
                                  -115509;3;0;false;false;63;95;191;;;
                                  -115512;1;0;false;false;;;;;;
                                  -115513;5;0;false;false;63;95;191;;;
                                  -115518;3;0;false;false;;;;;;
                                  -115521;2;0;false;false;63;95;191;;;
                                  -115523;2;0;false;false;;;;;;
                                  -115525;3;1;false;false;127;0;85;;;
                                  -115528;1;0;false;false;;;;;;
                                  -115529;19;0;false;false;0;0;0;;;
                                  -115548;1;0;false;false;;;;;;
                                  -115549;5;0;false;false;0;0;0;;;
                                  -115554;1;0;false;false;;;;;;
                                  -115555;3;1;false;false;127;0;85;;;
                                  -115558;1;0;false;false;;;;;;
                                  -115559;11;0;false;false;0;0;0;;;
                                  -115570;1;0;false;false;;;;;;
                                  -115571;3;1;false;false;127;0;85;;;
                                  -115574;1;0;false;false;;;;;;
                                  -115575;12;0;false;false;0;0;0;;;
                                  -115587;1;0;false;false;;;;;;
                                  -115588;1;0;false;false;0;0;0;;;
                                  -115589;3;0;false;false;;;;;;
                                  -115592;3;1;false;false;127;0;85;;;
                                  -115595;1;0;false;false;;;;;;
                                  -115596;1;0;false;false;0;0;0;;;
                                  -115597;1;0;false;false;;;;;;
                                  -115598;1;0;false;false;0;0;0;;;
                                  -115599;1;0;false;false;;;;;;
                                  -115600;11;0;false;false;0;0;0;;;
                                  -115611;1;0;false;false;;;;;;
                                  -115612;1;0;false;false;0;0;0;;;
                                  -115613;1;0;false;false;;;;;;
                                  -115614;10;0;false;false;0;0;0;;;
                                  -115624;1;0;false;false;;;;;;
                                  -115625;1;0;false;false;0;0;0;;;
                                  -115626;1;0;false;false;;;;;;
                                  -115627;23;0;false;false;0;0;0;;;
                                  -115650;3;0;false;false;;;;;;
                                  -115653;10;0;false;false;0;0;0;;;
                                  -115663;1;0;false;false;;;;;;
                                  -115664;6;0;false;false;0;0;0;;;
                                  -115670;1;0;false;false;;;;;;
                                  -115671;1;0;false;false;0;0;0;;;
                                  -115672;1;0;false;false;;;;;;
                                  -115673;28;0;false;false;0;0;0;;;
                                  -115701;1;0;false;false;;;;;;
                                  -115702;12;0;false;false;0;0;0;;;
                                  -115714;3;0;false;false;;;;;;
                                  -115717;3;1;false;false;127;0;85;;;
                                  -115720;2;0;false;false;0;0;0;;;
                                  -115722;1;0;false;false;;;;;;
                                  -115723;8;0;false;false;0;0;0;;;
                                  -115731;1;0;false;false;;;;;;
                                  -115732;1;0;false;false;0;0;0;;;
                                  -115733;1;0;false;false;;;;;;
                                  -115734;3;1;false;false;127;0;85;;;
                                  -115737;1;0;false;false;;;;;;
                                  -115738;3;1;false;false;127;0;85;;;
                                  -115741;4;0;false;false;0;0;0;;;
                                  -115745;3;0;false;false;;;;;;
                                  -115748;3;1;false;false;127;0;85;;;
                                  -115751;1;0;false;false;;;;;;
                                  -115752;12;0;false;false;0;0;0;;;
                                  -115764;1;0;false;false;;;;;;
                                  -115765;1;0;false;false;0;0;0;;;
                                  -115766;1;0;false;false;;;;;;
                                  -115767;19;0;false;false;0;0;0;;;
                                  -115786;1;0;false;false;;;;;;
                                  -115787;2;0;false;false;0;0;0;;;
                                  -115789;1;0;false;false;;;;;;
                                  -115790;10;0;false;false;0;0;0;;;
                                  -115800;3;0;false;false;;;;;;
                                  -115803;9;0;false;false;0;0;0;;;
                                  -115812;1;0;false;false;;;;;;
                                  -115813;1;0;false;false;0;0;0;;;
                                  -115814;1;0;false;false;;;;;;
                                  -115815;5;1;false;false;127;0;85;;;
                                  -115820;1;0;false;false;0;0;0;;;
                                  -115821;3;0;false;false;;;;;;
                                  -115824;2;1;false;false;127;0;85;;;
                                  -115826;1;0;false;false;;;;;;
                                  -115827;12;0;false;false;0;0;0;;;
                                  -115839;1;0;false;false;;;;;;
                                  -115840;2;0;false;false;0;0;0;;;
                                  -115842;1;0;false;false;;;;;;
                                  -115843;2;0;false;false;0;0;0;;;
                                  -115845;1;0;false;false;;;;;;
                                  -115846;1;0;false;false;0;0;0;;;
                                  -115847;4;0;false;false;;;;;;
                                  -115851;3;1;false;false;127;0;85;;;
                                  -115854;1;0;false;false;;;;;;
                                  -115855;10;0;false;false;0;0;0;;;
                                  -115865;1;0;false;false;;;;;;
                                  -115866;1;0;false;false;0;0;0;;;
                                  -115867;1;0;false;false;;;;;;
                                  -115868;14;0;false;false;0;0;0;;;
                                  -115882;4;0;false;false;;;;;;
                                  -115886;2;1;false;false;127;0;85;;;
                                  -115888;1;0;false;false;;;;;;
                                  -115889;13;0;false;false;0;0;0;;;
                                  -115902;1;0;false;false;;;;;;
                                  -115903;1;0;false;false;0;0;0;;;
                                  -115904;1;0;false;false;;;;;;
                                  -115905;11;0;false;false;0;0;0;;;
                                  -115916;1;0;false;false;;;;;;
                                  -115917;2;0;false;false;0;0;0;;;
                                  -115919;1;0;false;false;;;;;;
                                  -115920;11;0;false;false;0;0;0;;;
                                  -115931;1;0;false;false;;;;;;
                                  -115932;1;0;false;false;0;0;0;;;
                                  -115933;5;0;false;false;;;;;;
                                  -115938;12;0;false;false;0;0;0;;;
                                  -115950;1;0;false;false;;;;;;
                                  -115951;1;0;false;false;0;0;0;;;
                                  -115952;1;0;false;false;;;;;;
                                  -115953;11;0;false;false;0;0;0;;;
                                  -115964;5;0;false;false;;;;;;
                                  -115969;9;0;false;false;0;0;0;;;
                                  -115978;1;0;false;false;;;;;;
                                  -115979;1;0;false;false;0;0;0;;;
                                  -115980;1;0;false;false;;;;;;
                                  -115981;4;1;false;false;127;0;85;;;
                                  -115985;1;0;false;false;0;0;0;;;
                                  -115986;4;0;false;false;;;;;;
                                  -115990;1;0;false;false;0;0;0;;;
                                  -115991;1;0;false;false;;;;;;
                                  -115992;4;1;false;false;127;0;85;;;
                                  -115996;1;0;false;false;;;;;;
                                  -115997;1;0;false;false;0;0;0;;;
                                  -115998;5;0;false;false;;;;;;
                                  -116003;3;1;false;false;127;0;85;;;
                                  -116006;1;0;false;false;;;;;;
                                  -116007;6;0;false;false;0;0;0;;;
                                  -116013;5;0;false;false;;;;;;
                                  -116018;3;1;false;false;127;0;85;;;
                                  -116021;1;0;false;false;;;;;;
                                  -116022;6;0;false;false;0;0;0;;;
                                  -116028;1;0;false;false;;;;;;
                                  -116029;1;0;false;false;0;0;0;;;
                                  -116030;1;0;false;false;;;;;;
                                  -116031;13;0;false;false;0;0;0;;;
                                  -116044;5;0;false;false;;;;;;
                                  -116049;5;1;false;false;127;0;85;;;
                                  -116054;1;0;false;false;;;;;;
                                  -116055;7;0;false;false;0;0;0;;;
                                  -116062;1;0;false;false;;;;;;
                                  -116063;1;0;false;false;0;0;0;;;
                                  -116064;1;0;false;false;;;;;;
                                  -116065;1;0;false;false;0;0;0;;;
                                  -116066;1;0;false;false;;;;;;
                                  -116067;2;0;false;false;0;0;0;;;
                                  -116069;1;0;false;false;;;;;;
                                  -116070;39;0;false;false;0;0;0;;;
                                  -116109;1;0;false;false;;;;;;
                                  -116110;9;0;false;false;0;0;0;;;
                                  -116119;5;0;false;false;;;;;;
                                  -116124;2;1;false;false;127;0;85;;;
                                  -116126;1;0;false;false;;;;;;
                                  -116127;7;0;false;false;0;0;0;;;
                                  -116134;1;0;false;false;;;;;;
                                  -116135;2;0;false;false;0;0;0;;;
                                  -116137;1;0;false;false;;;;;;
                                  -116138;1;0;false;false;0;0;0;;;
                                  -116139;1;0;false;false;;;;;;
                                  -116140;2;0;false;false;0;0;0;;;
                                  -116142;1;0;false;false;;;;;;
                                  -116143;39;0;false;false;0;0;0;;;
                                  -116182;1;0;false;false;;;;;;
                                  -116183;1;0;false;false;0;0;0;;;
                                  -116184;6;0;false;false;;;;;;
                                  -116190;5;0;false;false;0;0;0;;;
                                  -116195;1;0;false;false;;;;;;
                                  -116196;1;0;false;false;0;0;0;;;
                                  -116197;1;0;false;false;;;;;;
                                  -116198;12;0;false;false;0;0;0;;;
                                  -116210;1;0;false;false;;;;;;
                                  -116211;1;0;false;false;0;0;0;;;
                                  -116212;1;0;false;false;;;;;;
                                  -116213;1;0;false;false;0;0;0;;;
                                  -116214;1;0;false;false;;;;;;
                                  -116215;1;0;false;false;0;0;0;;;
                                  -116216;1;0;false;false;;;;;;
                                  -116217;2;0;false;false;0;0;0;;;
                                  -116219;5;0;false;false;;;;;;
                                  -116224;1;0;false;false;0;0;0;;;
                                  -116225;1;0;false;false;;;;;;
                                  -116226;4;1;false;false;127;0;85;;;
                                  -116230;1;0;false;false;;;;;;
                                  -116231;1;0;false;false;0;0;0;;;
                                  -116232;6;0;false;false;;;;;;
                                  -116238;5;0;false;false;0;0;0;;;
                                  -116243;1;0;false;false;;;;;;
                                  -116244;1;0;false;false;0;0;0;;;
                                  -116245;1;0;false;false;;;;;;
                                  -116246;23;0;false;false;0;0;0;;;
                                  -116269;1;0;false;false;;;;;;
                                  -116270;1;0;false;false;0;0;0;;;
                                  -116271;1;0;false;false;;;;;;
                                  -116272;4;0;false;false;0;0;0;;;
                                  -116276;5;0;false;false;;;;;;
                                  -116281;1;0;false;false;0;0;0;;;
                                  -116282;5;0;false;false;;;;;;
                                  -116287;12;0;false;false;0;0;0;;;
                                  -116299;1;0;false;false;;;;;;
                                  -116300;2;0;false;false;0;0;0;;;
                                  -116302;1;0;false;false;;;;;;
                                  -116303;12;0;false;false;0;0;0;;;
                                  -116315;5;0;false;false;;;;;;
                                  -116320;3;1;false;false;127;0;85;;;
                                  -116323;1;0;false;false;;;;;;
                                  -116324;13;0;false;false;0;0;0;;;
                                  -116337;1;0;false;false;;;;;;
                                  -116338;1;0;false;false;0;0;0;;;
                                  -116339;1;0;false;false;;;;;;
                                  -116340;29;0;false;false;0;0;0;;;
                                  -116369;1;0;false;false;;;;;;
                                  -116370;1;0;false;false;0;0;0;;;
                                  -116371;1;0;false;false;;;;;;
                                  -116372;4;0;false;false;0;0;0;;;
                                  -116376;5;0;false;false;;;;;;
                                  -116381;9;0;false;false;0;0;0;;;
                                  -116390;2;0;false;false;;;;;;
                                  -116392;1;0;false;false;0;0;0;;;
                                  -116393;1;0;false;false;;;;;;
                                  -116394;6;0;false;false;0;0;0;;;
                                  -116400;1;0;false;false;;;;;;
                                  -116401;1;0;false;false;0;0;0;;;
                                  -116402;1;0;false;false;;;;;;
                                  -116403;14;0;false;false;0;0;0;;;
                                  -116417;1;0;false;false;;;;;;
                                  -116418;2;0;false;false;0;0;0;;;
                                  -116420;1;0;false;false;;;;;;
                                  -116421;2;0;false;false;0;0;0;;;
                                  -116423;4;0;false;false;;;;;;
                                  -116427;1;0;false;false;0;0;0;;;
                                  -116428;3;0;false;false;;;;;;
                                  -116431;1;0;false;false;0;0;0;;;
                                  -116432;3;0;false;false;;;;;;
                                  -116435;35;0;false;false;0;0;0;;;
                                  -116470;3;0;false;false;;;;;;
                                  -116473;6;1;false;false;127;0;85;;;
                                  -116479;1;0;false;false;;;;;;
                                  -116480;13;0;false;false;0;0;0;;;
                                  -116493;2;0;false;false;;;;;;
                                  -116495;1;0;false;false;0;0;0;;;
                                  -116496;2;0;false;false;;;;;;
                                  -116498;3;0;false;false;63;95;191;;;
                                  -116501;3;0;false;false;;;;;;
                                  -116504;1;0;false;false;63;95;191;;;
                                  -116505;1;0;false;false;;;;;;
                                  -116506;7;0;false;false;63;95;191;;;
                                  -116513;1;0;false;false;;;;;;
                                  -116514;3;0;false;false;63;95;191;;;
                                  -116517;1;0;false;false;;;;;;
                                  -116518;5;0;false;false;63;95;191;;;
                                  -116523;1;0;false;false;;;;;;
                                  -116524;6;0;false;false;63;95;191;;;
                                  -116530;3;0;false;false;;;;;;
                                  -116533;1;0;false;false;63;95;191;;;
                                  -116534;1;0;false;false;;;;;;
                                  -116535;3;0;false;false;127;127;159;;;
                                  -116538;3;0;false;false;;;;;;
                                  -116541;1;0;false;false;63;95;191;;;
                                  -116542;3;0;false;false;;;;;;
                                  -116545;1;0;false;false;63;95;191;;;
                                  -116546;1;0;false;false;;;;;;
                                  -116547;8;1;false;false;127;159;191;;;
                                  -116555;3;0;false;false;63;95;191;;;
                                  -116558;1;0;false;false;;;;;;
                                  -116559;5;0;false;false;63;95;191;;;
                                  -116564;1;0;false;false;;;;;;
                                  -116565;6;0;false;false;63;95;191;;;
                                  -116571;1;0;false;false;;;;;;
                                  -116572;1;0;false;false;63;95;191;;;
                                  -116573;1;0;false;false;;;;;;
                                  -116574;2;0;false;false;63;95;191;;;
                                  -116576;1;0;false;false;;;;;;
                                  -116577;5;0;false;false;63;95;191;;;
                                  -116582;1;0;false;false;;;;;;
                                  -116583;2;0;false;false;63;95;191;;;
                                  -116585;1;0;false;false;;;;;;
                                  -116586;5;0;false;false;63;95;191;;;
                                  -116591;3;0;false;false;;;;;;
                                  -116594;2;0;false;false;63;95;191;;;
                                  -116596;2;0;false;false;;;;;;
                                  -116598;3;1;false;false;127;0;85;;;
                                  -116601;1;0;false;false;;;;;;
                                  -116602;15;0;false;false;0;0;0;;;
                                  -116617;1;0;false;false;;;;;;
                                  -116618;1;0;false;false;0;0;0;;;
                                  -116619;3;0;false;false;;;;;;
                                  -116622;5;0;false;false;0;0;0;;;
                                  -116627;1;0;false;false;;;;;;
                                  -116628;5;0;false;false;0;0;0;;;
                                  -116633;1;0;false;false;;;;;;
                                  -116634;1;0;false;false;0;0;0;;;
                                  -116635;1;0;false;false;;;;;;
                                  -116636;11;0;false;false;0;0;0;;;
                                  -116647;3;0;false;false;;;;;;
                                  -116650;2;1;false;false;127;0;85;;;
                                  -116652;1;0;false;false;;;;;;
                                  -116653;6;0;false;false;0;0;0;;;
                                  -116659;1;0;false;false;;;;;;
                                  -116660;2;0;false;false;0;0;0;;;
                                  -116662;1;0;false;false;;;;;;
                                  -116663;4;1;false;false;127;0;85;;;
                                  -116667;1;0;false;false;0;0;0;;;
                                  -116668;1;0;false;false;;;;;;
                                  -116669;6;1;false;false;127;0;85;;;
                                  -116675;1;0;false;false;;;;;;
                                  -116676;2;0;false;false;0;0;0;;;
                                  -116678;3;0;false;false;;;;;;
                                  -116681;6;1;false;false;127;0;85;;;
                                  -116687;1;0;false;false;;;;;;
                                  -116688;18;0;false;false;0;0;0;;;
                                  -116706;2;0;false;false;;;;;;
                                  -116708;1;0;false;false;0;0;0;;;
                                  -116709;2;0;false;false;;;;;;
                                  -116711;6;0;false;false;0;0;0;;;
                                  -116717;1;0;false;false;;;;;;
                                  -116718;20;0;false;false;0;0;0;;;
                                  -116738;3;1;false;false;127;0;85;;;
                                  -116741;1;0;false;false;;;;;;
                                  -116742;14;0;false;false;0;0;0;;;
                                  -116756;1;0;false;false;;;;;;
                                  -116757;1;0;false;false;0;0;0;;;
                                  -116758;3;0;false;false;;;;;;
                                  -116761;12;0;false;false;0;0;0;;;
                                  -116773;1;0;false;false;;;;;;
                                  -116774;17;0;false;false;0;0;0;;;
                                  -116791;1;0;false;false;;;;;;
                                  -116792;1;0;false;false;0;0;0;;;
                                  -116793;1;0;false;false;;;;;;
                                  -116794;27;0;false;false;0;0;0;;;
                                  -116821;3;0;false;false;;;;;;
                                  -116824;6;1;false;false;127;0;85;;;
                                  -116830;1;0;false;false;;;;;;
                                  -116831;40;0;false;false;0;0;0;;;
                                  -116871;1;0;false;false;;;;;;
                                  -116872;15;0;false;false;0;0;0;;;
                                  -116887;2;0;false;false;;;;;;
                                  -116889;1;0;false;false;0;0;0;;;
                                  -116890;2;0;false;false;;;;;;
                                  -116892;3;1;false;false;127;0;85;;;
                                  -116895;1;0;false;false;;;;;;
                                  -116896;15;0;false;false;0;0;0;;;
                                  -116911;3;1;false;false;127;0;85;;;
                                  -116914;1;0;false;false;;;;;;
                                  -116915;7;0;false;false;0;0;0;;;
                                  -116922;1;0;false;false;;;;;;
                                  -116923;3;1;false;false;127;0;85;;;
                                  -116926;1;0;false;false;;;;;;
                                  -116927;10;0;false;false;0;0;0;;;
                                  -116937;1;0;false;false;;;;;;
                                  -116938;1;0;false;false;0;0;0;;;
                                  -116939;3;0;false;false;;;;;;
                                  -116942;6;0;false;false;0;0;0;;;
                                  -116948;1;0;false;false;;;;;;
                                  -116949;4;0;false;false;0;0;0;;;
                                  -116953;1;0;false;false;;;;;;
                                  -116954;1;0;false;false;0;0;0;;;
                                  -116955;1;0;false;false;;;;;;
                                  -116956;27;0;false;false;0;0;0;;;
                                  -116983;3;0;false;false;;;;;;
                                  -116986;3;1;false;false;127;0;85;;;
                                  -116989;1;0;false;false;;;;;;
                                  -116990;10;0;false;false;0;0;0;;;
                                  -117000;1;0;false;false;;;;;;
                                  -117001;1;0;false;false;0;0;0;;;
                                  -117002;1;0;false;false;;;;;;
                                  -117003;35;0;false;false;0;0;0;;;
                                  -117038;4;0;false;false;;;;;;
                                  -117042;10;0;false;false;0;0;0;;;
                                  -117052;1;0;false;false;;;;;;
                                  -117053;6;0;false;false;0;0;0;;;
                                  -117059;1;0;false;false;;;;;;
                                  -117060;1;0;false;false;0;0;0;;;
                                  -117061;1;0;false;false;;;;;;
                                  -117062;28;0;false;false;0;0;0;;;
                                  -117090;1;0;false;false;;;;;;
                                  -117091;12;0;false;false;0;0;0;;;
                                  -117103;3;0;false;false;;;;;;
                                  -117106;6;0;false;false;0;0;0;;;
                                  -117112;1;0;false;false;;;;;;
                                  -117113;2;0;false;false;0;0;0;;;
                                  -117115;1;0;false;false;;;;;;
                                  -117116;11;0;false;false;0;0;0;;;
                                  -117127;3;0;false;false;;;;;;
                                  -117130;6;0;false;false;0;0;0;;;
                                  -117136;1;0;false;false;;;;;;
                                  -117137;1;0;false;false;0;0;0;;;
                                  -117138;1;0;false;false;;;;;;
                                  -117139;28;0;false;false;0;0;0;;;
                                  -117167;1;0;false;false;;;;;;
                                  -117168;22;0;false;false;0;0;0;;;
                                  -117190;3;0;false;false;;;;;;
                                  -117193;6;0;false;false;0;0;0;;;
                                  -117199;1;0;false;false;;;;;;
                                  -117200;2;0;false;false;0;0;0;;;
                                  -117202;1;0;false;false;;;;;;
                                  -117203;11;0;false;false;0;0;0;;;
                                  -117214;3;0;false;false;;;;;;
                                  -117217;35;0;false;false;0;0;0;;;
                                  -117252;3;0;false;false;;;;;;
                                  -117255;6;1;false;false;127;0;85;;;
                                  -117261;1;0;false;false;;;;;;
                                  -117262;7;0;false;false;0;0;0;;;
                                  -117269;2;0;false;false;;;;;;
                                  -117271;1;0;false;false;0;0;0;;;
                                  -117272;2;0;false;false;;;;;;
                                  -117274;3;1;false;false;127;0;85;;;
                                  -117277;1;0;false;false;;;;;;
                                  -117278;19;0;false;false;0;0;0;;;
                                  -117297;3;1;false;false;127;0;85;;;
                                  -117300;1;0;false;false;;;;;;
                                  -117301;7;0;false;false;0;0;0;;;
                                  -117308;1;0;false;false;;;;;;
                                  -117309;3;1;false;false;127;0;85;;;
                                  -117312;1;0;false;false;;;;;;
                                  -117313;10;0;false;false;0;0;0;;;
                                  -117323;1;0;false;false;;;;;;
                                  -117324;1;0;false;false;0;0;0;;;
                                  -117325;3;0;false;false;;;;;;
                                  -117328;6;0;false;false;0;0;0;;;
                                  -117334;1;0;false;false;;;;;;
                                  -117335;4;0;false;false;0;0;0;;;
                                  -117339;1;0;false;false;;;;;;
                                  -117340;1;0;false;false;0;0;0;;;
                                  -117341;1;0;false;false;;;;;;
                                  -117342;27;0;false;false;0;0;0;;;
                                  -117369;3;0;false;false;;;;;;
                                  -117372;3;1;false;false;127;0;85;;;
                                  -117375;1;0;false;false;;;;;;
                                  -117376;10;0;false;false;0;0;0;;;
                                  -117386;1;0;false;false;;;;;;
                                  -117387;1;0;false;false;0;0;0;;;
                                  -117388;1;0;false;false;;;;;;
                                  -117389;35;0;false;false;0;0;0;;;
                                  -117424;4;0;false;false;;;;;;
                                  -117428;10;0;false;false;0;0;0;;;
                                  -117438;1;0;false;false;;;;;;
                                  -117439;6;0;false;false;0;0;0;;;
                                  -117445;1;0;false;false;;;;;;
                                  -117446;1;0;false;false;0;0;0;;;
                                  -117447;1;0;false;false;;;;;;
                                  -117448;28;0;false;false;0;0;0;;;
                                  -117476;1;0;false;false;;;;;;
                                  -117477;12;0;false;false;0;0;0;;;
                                  -117489;3;0;false;false;;;;;;
                                  -117492;6;0;false;false;0;0;0;;;
                                  -117498;1;0;false;false;;;;;;
                                  -117499;2;0;false;false;0;0;0;;;
                                  -117501;1;0;false;false;;;;;;
                                  -117502;11;0;false;false;0;0;0;;;
                                  -117513;3;0;false;false;;;;;;
                                  -117516;6;0;false;false;0;0;0;;;
                                  -117522;1;0;false;false;;;;;;
                                  -117523;1;0;false;false;0;0;0;;;
                                  -117524;1;0;false;false;;;;;;
                                  -117525;32;0;false;false;0;0;0;;;
                                  -117557;1;0;false;false;;;;;;
                                  -117558;22;0;false;false;0;0;0;;;
                                  -117580;3;0;false;false;;;;;;
                                  -117583;6;0;false;false;0;0;0;;;
                                  -117589;1;0;false;false;;;;;;
                                  -117590;2;0;false;false;0;0;0;;;
                                  -117592;1;0;false;false;;;;;;
                                  -117593;11;0;false;false;0;0;0;;;
                                  -117604;3;0;false;false;;;;;;
                                  -117607;35;0;false;false;0;0;0;;;
                                  -117642;3;0;false;false;;;;;;
                                  -117645;6;1;false;false;127;0;85;;;
                                  -117651;1;0;false;false;;;;;;
                                  -117652;7;0;false;false;0;0;0;;;
                                  -117659;2;0;false;false;;;;;;
                                  -117661;1;0;false;false;0;0;0;;;
                                  -117662;2;0;false;false;;;;;;
                                  -117664;3;0;false;false;63;95;191;;;
                                  -117667;3;0;false;false;;;;;;
                                  -117670;1;0;false;false;63;95;191;;;
                                  -117671;1;0;false;false;;;;;;
                                  -117672;7;0;false;false;63;95;191;;;
                                  -117679;1;0;false;false;;;;;;
                                  -117680;3;0;false;false;63;95;191;;;
                                  -117683;1;0;false;false;;;;;;
                                  -117684;7;0;false;false;63;95;191;;;
                                  -117691;1;0;false;false;;;;;;
                                  -117692;14;0;false;false;63;95;191;;;
                                  -117706;1;0;false;false;;;;;;
                                  -117707;4;0;false;false;63;95;191;;;
                                  -117711;1;0;false;false;;;;;;
                                  -117712;2;0;false;false;63;95;191;;;
                                  -117714;1;0;false;false;;;;;;
                                  -117715;4;0;false;false;63;95;191;;;
                                  -117719;1;0;false;false;;;;;;
                                  -117720;3;0;false;false;63;95;191;;;
                                  -117723;1;0;false;false;;;;;;
                                  -117724;4;0;false;false;63;95;191;;;
                                  -117728;1;0;false;false;;;;;;
                                  -117729;7;0;false;false;63;95;191;;;
                                  -117736;3;0;false;false;;;;;;
                                  -117739;1;0;false;false;63;95;191;;;
                                  -117740;1;0;false;false;;;;;;
                                  -117741;2;0;false;false;63;95;191;;;
                                  -117743;1;0;false;false;;;;;;
                                  -117744;4;0;false;false;63;95;191;;;
                                  -117748;1;0;false;false;;;;;;
                                  -117749;2;0;false;false;63;95;191;;;
                                  -117751;1;0;false;false;;;;;;
                                  -117752;2;0;false;false;63;95;191;;;
                                  -117754;1;0;false;false;;;;;;
                                  -117755;4;0;false;false;63;95;191;;;
                                  -117759;1;0;false;false;;;;;;
                                  -117760;7;0;false;false;63;95;191;;;
                                  -117767;1;0;false;false;;;;;;
                                  -117768;7;0;false;false;63;95;191;;;
                                  -117775;1;0;false;false;;;;;;
                                  -117776;14;0;false;false;63;95;191;;;
                                  -117790;1;0;false;false;;;;;;
                                  -117791;3;0;false;false;63;95;191;;;
                                  -117794;1;0;false;false;;;;;;
                                  -117795;4;0;false;false;63;95;191;;;
                                  -117799;1;0;false;false;;;;;;
                                  -117800;4;0;false;false;63;95;191;;;
                                  -117804;3;0;false;false;;;;;;
                                  -117807;1;0;false;false;63;95;191;;;
                                  -117808;1;0;false;false;;;;;;
                                  -117809;3;0;false;false;127;127;159;;;
                                  -117812;3;0;false;false;;;;;;
                                  -117815;1;0;false;false;63;95;191;;;
                                  -117816;3;0;false;false;;;;;;
                                  -117819;1;0;false;false;63;95;191;;;
                                  -117820;1;0;false;false;;;;;;
                                  -117821;8;1;false;false;127;159;191;;;
                                  -117829;7;0;false;false;63;95;191;;;
                                  -117836;1;0;false;false;;;;;;
                                  -117837;14;0;false;false;63;95;191;;;
                                  -117851;1;0;false;false;;;;;;
                                  -117852;4;0;false;false;63;95;191;;;
                                  -117856;1;0;false;false;;;;;;
                                  -117857;2;0;false;false;63;95;191;;;
                                  -117859;1;0;false;false;;;;;;
                                  -117860;4;0;false;false;63;95;191;;;
                                  -117864;1;0;false;false;;;;;;
                                  -117865;3;0;false;false;63;95;191;;;
                                  -117868;1;0;false;false;;;;;;
                                  -117869;4;0;false;false;63;95;191;;;
                                  -117873;1;0;false;false;;;;;;
                                  -117874;7;0;false;false;63;95;191;;;
                                  -117881;1;0;false;false;;;;;;
                                  -117882;2;0;false;false;63;95;191;;;
                                  -117884;1;0;false;false;;;;;;
                                  -117885;4;0;false;false;63;95;191;;;
                                  -117889;4;0;false;false;;;;;;
                                  -117893;1;0;false;false;63;95;191;;;
                                  -117894;1;0;false;false;;;;;;
                                  -117895;2;0;false;false;63;95;191;;;
                                  -117897;1;0;false;false;;;;;;
                                  -117898;2;0;false;false;63;95;191;;;
                                  -117900;1;0;false;false;;;;;;
                                  -117901;4;0;false;false;63;95;191;;;
                                  -117905;1;0;false;false;;;;;;
                                  -117906;7;0;false;false;63;95;191;;;
                                  -117913;1;0;false;false;;;;;;
                                  -117914;7;0;false;false;63;95;191;;;
                                  -117921;1;0;false;false;;;;;;
                                  -117922;14;0;false;false;63;95;191;;;
                                  -117936;1;0;false;false;;;;;;
                                  -117937;3;0;false;false;63;95;191;;;
                                  -117940;1;0;false;false;;;;;;
                                  -117941;4;0;false;false;63;95;191;;;
                                  -117945;1;0;false;false;;;;;;
                                  -117946;4;0;false;false;63;95;191;;;
                                  -117950;3;0;false;false;;;;;;
                                  -117953;1;0;false;false;63;95;191;;;
                                  -117954;1;0;false;false;;;;;;
                                  -117955;11;1;false;false;127;159;191;;;
                                  -117966;12;0;false;false;63;95;191;;;
                                  -117978;1;0;false;false;;;;;;
                                  -117979;4;0;false;false;127;127;159;;;
                                  -117983;3;0;false;false;;;;;;
                                  -117986;1;0;false;false;63;95;191;;;
                                  -117987;4;0;false;false;;;;;;
                                  -117991;4;0;false;false;127;127;159;;;
                                  -117995;21;0;false;false;63;95;191;;;
                                  -118016;1;0;false;false;;;;;;
                                  -118017;1;0;false;false;127;127;159;;;
                                  -118018;1;0;false;false;;;;;;
                                  -118019;2;0;false;false;63;95;191;;;
                                  -118021;1;0;false;false;;;;;;
                                  -118022;3;0;false;false;63;95;191;;;
                                  -118025;1;0;false;false;;;;;;
                                  -118026;8;0;false;false;63;95;191;;;
                                  -118034;1;0;false;false;;;;;;
                                  -118035;3;0;false;false;63;95;191;;;
                                  -118038;1;0;false;false;;;;;;
                                  -118039;4;0;false;false;63;95;191;;;
                                  -118043;1;0;false;false;;;;;;
                                  -118044;8;0;false;false;63;95;191;;;
                                  -118052;5;0;false;false;127;127;159;;;
                                  -118057;3;0;false;false;;;;;;
                                  -118060;1;0;false;false;63;95;191;;;
                                  -118061;4;0;false;false;;;;;;
                                  -118065;4;0;false;false;127;127;159;;;
                                  -118069;27;0;false;false;63;95;191;;;
                                  -118096;1;0;false;false;;;;;;
                                  -118097;1;0;false;false;127;127;159;;;
                                  -118098;1;0;false;false;;;;;;
                                  -118099;2;0;false;false;63;95;191;;;
                                  -118101;1;0;false;false;;;;;;
                                  -118102;3;0;false;false;63;95;191;;;
                                  -118105;1;0;false;false;;;;;;
                                  -118106;6;0;false;false;63;95;191;;;
                                  -118112;1;0;false;false;;;;;;
                                  -118113;4;0;false;false;63;95;191;;;
                                  -118117;1;0;false;false;;;;;;
                                  -118118;3;0;false;false;63;95;191;;;
                                  -118121;1;0;false;false;;;;;;
                                  -118122;6;0;false;false;63;95;191;;;
                                  -118128;1;0;false;false;;;;;;
                                  -118129;4;0;false;false;63;95;191;;;
                                  -118133;1;0;false;false;;;;;;
                                  -118134;7;0;false;false;63;95;191;;;
                                  -118141;1;0;false;false;;;;;;
                                  -118142;3;0;false;false;63;95;191;;;
                                  -118145;1;0;false;false;;;;;;
                                  -118146;8;0;false;false;63;95;191;;;
                                  -118154;5;0;false;false;127;127;159;;;
                                  -118159;3;0;false;false;;;;;;
                                  -118162;1;0;false;false;63;95;191;;;
                                  -118163;1;0;false;false;;;;;;
                                  -118164;5;0;false;false;127;127;159;;;
                                  -118169;3;0;false;false;;;;;;
                                  -118172;2;0;false;false;63;95;191;;;
                                  -118174;2;0;false;false;;;;;;
                                  -118176;6;1;false;false;127;0;85;;;
                                  -118182;1;0;false;false;;;;;;
                                  -118183;17;0;false;false;0;0;0;;;
                                  -118200;1;0;false;false;;;;;;
                                  -118201;12;0;false;false;0;0;0;;;
                                  -118213;1;0;false;false;;;;;;
                                  -118214;1;0;false;false;0;0;0;;;
                                  -118215;3;0;false;false;;;;;;
                                  -118218;14;0;false;false;0;0;0;;;
                                  -118232;6;0;false;false;;;;;;
                                  -118238;6;1;false;false;127;0;85;;;
                                  -118244;1;0;false;false;;;;;;
                                  -118245;15;0;false;false;0;0;0;;;
                                  -118260;2;0;false;false;;;;;;
                                  -118262;1;0;false;false;0;0;0;;;
                                  -118263;2;0;false;false;;;;;;
                                  -118265;3;0;false;false;63;95;191;;;
                                  -118268;4;0;false;false;;;;;;
                                  -118272;1;0;false;false;63;95;191;;;
                                  -118273;1;0;false;false;;;;;;
                                  -118274;7;0;false;false;63;95;191;;;
                                  -118281;1;0;false;false;;;;;;
                                  -118282;7;0;false;false;63;95;191;;;
                                  -118289;1;0;false;false;;;;;;
                                  -118290;3;0;false;false;63;95;191;;;
                                  -118293;1;0;false;false;;;;;;
                                  -118294;6;0;false;false;63;95;191;;;
                                  -118300;1;0;false;false;;;;;;
                                  -118301;10;0;false;false;63;95;191;;;
                                  -118311;1;0;false;false;;;;;;
                                  -118312;6;0;false;false;63;95;191;;;
                                  -118318;1;0;false;false;;;;;;
                                  -118319;5;0;false;false;63;95;191;;;
                                  -118324;1;0;false;false;;;;;;
                                  -118325;5;0;false;false;63;95;191;;;
                                  -118330;1;0;false;false;;;;;;
                                  -118331;9;0;false;false;63;95;191;;;
                                  -118340;3;0;false;false;;;;;;
                                  -118343;1;0;false;false;63;95;191;;;
                                  -118344;1;0;false;false;;;;;;
                                  -118345;3;0;false;false;127;127;159;;;
                                  -118348;3;0;false;false;;;;;;
                                  -118351;1;0;false;false;63;95;191;;;
                                  -118352;3;0;false;false;;;;;;
                                  -118355;1;0;false;false;63;95;191;;;
                                  -118356;1;0;false;false;;;;;;
                                  -118357;8;1;false;false;127;159;191;;;
                                  -118365;4;0;false;false;63;95;191;;;
                                  -118369;1;0;false;false;;;;;;
                                  -118370;2;0;false;false;63;95;191;;;
                                  -118372;1;0;false;false;;;;;;
                                  -118373;6;0;false;false;63;95;191;;;
                                  -118379;1;0;false;false;;;;;;
                                  -118380;8;0;false;false;63;95;191;;;
                                  -118388;1;0;false;false;;;;;;
                                  -118389;1;0;false;false;63;95;191;;;
                                  -118390;1;0;false;false;;;;;;
                                  -118391;4;0;false;false;63;95;191;;;
                                  -118395;1;0;false;false;;;;;;
                                  -118396;7;0;false;false;63;95;191;;;
                                  -118403;1;0;false;false;;;;;;
                                  -118404;3;0;false;false;63;95;191;;;
                                  -118407;1;0;false;false;;;;;;
                                  -118408;5;0;false;false;63;95;191;;;
                                  -118413;1;0;false;false;;;;;;
                                  -118414;5;0;false;false;63;95;191;;;
                                  -118419;1;0;false;false;;;;;;
                                  -118420;2;0;false;false;63;95;191;;;
                                  -118422;1;0;false;false;;;;;;
                                  -118423;6;0;false;false;63;95;191;;;
                                  -118429;1;0;false;false;;;;;;
                                  -118430;6;0;false;false;63;95;191;;;
                                  -118436;3;0;false;false;;;;;;
                                  -118439;1;0;false;false;63;95;191;;;
                                  -118440;1;0;false;false;;;;;;
                                  -118441;4;0;false;false;63;95;191;;;
                                  -118445;1;0;false;false;;;;;;
                                  -118446;3;0;false;false;63;95;191;;;
                                  -118449;1;0;false;false;;;;;;
                                  -118450;4;0;false;false;63;95;191;;;
                                  -118454;1;0;false;false;;;;;;
                                  -118455;6;0;false;false;63;95;191;;;
                                  -118461;1;0;false;false;;;;;;
                                  -118462;2;0;false;false;63;95;191;;;
                                  -118464;1;0;false;false;;;;;;
                                  -118465;7;0;false;false;63;95;191;;;
                                  -118472;1;0;false;false;;;;;;
                                  -118473;5;0;false;false;63;95;191;;;
                                  -118478;1;0;false;false;;;;;;
                                  -118479;6;0;false;false;63;95;191;;;
                                  -118485;3;0;false;false;;;;;;
                                  -118488;1;0;false;false;63;95;191;;;
                                  -118489;1;0;false;false;;;;;;
                                  -118490;11;1;false;false;127;159;191;;;
                                  -118501;12;0;false;false;63;95;191;;;
                                  -118513;1;0;false;false;;;;;;
                                  -118514;4;0;false;false;127;127;159;;;
                                  -118518;3;0;false;false;;;;;;
                                  -118521;1;0;false;false;63;95;191;;;
                                  -118522;4;0;false;false;;;;;;
                                  -118526;4;0;false;false;127;127;159;;;
                                  -118530;21;0;false;false;63;95;191;;;
                                  -118551;1;0;false;false;;;;;;
                                  -118552;1;0;false;false;127;127;159;;;
                                  -118553;1;0;false;false;;;;;;
                                  -118554;2;0;false;false;63;95;191;;;
                                  -118556;1;0;false;false;;;;;;
                                  -118557;3;0;false;false;63;95;191;;;
                                  -118560;1;0;false;false;;;;;;
                                  -118561;8;0;false;false;63;95;191;;;
                                  -118569;1;0;false;false;;;;;;
                                  -118570;3;0;false;false;63;95;191;;;
                                  -118573;1;0;false;false;;;;;;
                                  -118574;4;0;false;false;63;95;191;;;
                                  -118578;1;0;false;false;;;;;;
                                  -118579;8;0;false;false;63;95;191;;;
                                  -118587;5;0;false;false;127;127;159;;;
                                  -118592;3;0;false;false;;;;;;
                                  -118595;1;0;false;false;63;95;191;;;
                                  -118596;4;0;false;false;;;;;;
                                  -118600;4;0;false;false;127;127;159;;;
                                  -118604;27;0;false;false;63;95;191;;;
                                  -118631;1;0;false;false;;;;;;
                                  -118632;1;0;false;false;127;127;159;;;
                                  -118633;1;0;false;false;;;;;;
                                  -118634;2;0;false;false;63;95;191;;;
                                  -118636;1;0;false;false;;;;;;
                                  -118637;3;0;false;false;63;95;191;;;
                                  -118640;1;0;false;false;;;;;;
                                  -118641;6;0;false;false;63;95;191;;;
                                  -118647;1;0;false;false;;;;;;
                                  -118648;4;0;false;false;63;95;191;;;
                                  -118652;1;0;false;false;;;;;;
                                  -118653;3;0;false;false;63;95;191;;;
                                  -118656;1;0;false;false;;;;;;
                                  -118657;6;0;false;false;63;95;191;;;
                                  -118663;1;0;false;false;;;;;;
                                  -118664;4;0;false;false;63;95;191;;;
                                  -118668;1;0;false;false;;;;;;
                                  -118669;7;0;false;false;63;95;191;;;
                                  -118676;1;0;false;false;;;;;;
                                  -118677;3;0;false;false;63;95;191;;;
                                  -118680;1;0;false;false;;;;;;
                                  -118681;8;0;false;false;63;95;191;;;
                                  -118689;5;0;false;false;127;127;159;;;
                                  -118694;3;0;false;false;;;;;;
                                  -118697;1;0;false;false;63;95;191;;;
                                  -118698;1;0;false;false;;;;;;
                                  -118699;5;0;false;false;127;127;159;;;
                                  -118704;3;0;false;false;;;;;;
                                  -118707;2;0;false;false;63;95;191;;;
                                  -118709;2;0;false;false;;;;;;
                                  -118711;6;1;false;false;127;0;85;;;
                                  -118717;1;0;false;false;;;;;;
                                  -118718;7;1;false;false;127;0;85;;;
                                  -118725;1;0;false;false;;;;;;
                                  -118726;23;0;false;false;0;0;0;;;
                                  -118749;1;0;false;false;;;;;;
                                  -118750;1;0;false;false;0;0;0;;;
                                  -118751;3;0;false;false;;;;;;
                                  -118754;14;0;false;false;0;0;0;;;
                                  -118768;3;0;false;false;;;;;;
                                  -118771;6;1;false;false;127;0;85;;;
                                  -118777;1;0;false;false;;;;;;
                                  -118778;19;0;false;false;0;0;0;;;
                                  -118797;2;0;false;false;;;;;;
                                  -118799;1;0;false;false;0;0;0;;;
                                  -118800;2;0;false;false;;;;;;
                                  -118802;3;0;false;false;63;95;191;;;
                                  -118805;3;0;false;false;;;;;;
                                  -118808;1;0;false;false;63;95;191;;;
                                  -118809;1;0;false;false;;;;;;
                                  -118810;7;0;false;false;63;95;191;;;
                                  -118817;1;0;false;false;;;;;;
                                  -118818;7;0;false;false;63;95;191;;;
                                  -118825;1;0;false;false;;;;;;
                                  -118826;3;0;false;false;63;95;191;;;
                                  -118829;1;0;false;false;;;;;;
                                  -118830;6;0;false;false;63;95;191;;;
                                  -118836;1;0;false;false;;;;;;
                                  -118837;7;0;false;false;63;95;191;;;
                                  -118844;1;0;false;false;;;;;;
                                  -118845;3;0;false;false;63;95;191;;;
                                  -118848;1;0;false;false;;;;;;
                                  -118849;2;0;false;false;63;95;191;;;
                                  -118851;1;0;false;false;;;;;;
                                  -118852;7;0;false;false;63;95;191;;;
                                  -118859;3;0;false;false;;;;;;
                                  -118862;1;0;false;false;63;95;191;;;
                                  -118863;1;0;false;false;;;;;;
                                  -118864;3;0;false;false;127;127;159;;;
                                  -118867;3;0;false;false;;;;;;
                                  -118870;1;0;false;false;63;95;191;;;
                                  -118871;3;0;false;false;;;;;;
                                  -118874;1;0;false;false;63;95;191;;;
                                  -118875;1;0;false;false;;;;;;
                                  -118876;8;1;false;false;127;159;191;;;
                                  -118884;4;0;false;false;63;95;191;;;
                                  -118888;1;0;false;false;;;;;;
                                  -118889;2;0;false;false;63;95;191;;;
                                  -118891;1;0;false;false;;;;;;
                                  -118892;7;0;false;false;63;95;191;;;
                                  -118899;1;0;false;false;;;;;;
                                  -118900;3;0;false;false;63;95;191;;;
                                  -118903;1;0;false;false;;;;;;
                                  -118904;2;0;false;false;63;95;191;;;
                                  -118906;1;0;false;false;;;;;;
                                  -118907;7;0;false;false;63;95;191;;;
                                  -118914;1;0;false;false;;;;;;
                                  -118915;5;0;false;false;63;95;191;;;
                                  -118920;1;0;false;false;;;;;;
                                  -118921;9;0;false;false;63;95;191;;;
                                  -118930;3;0;false;false;;;;;;
                                  -118933;1;0;false;false;63;95;191;;;
                                  -118934;1;0;false;false;;;;;;
                                  -118935;11;1;false;false;127;159;191;;;
                                  -118946;12;0;false;false;63;95;191;;;
                                  -118958;1;0;false;false;;;;;;
                                  -118959;4;0;false;false;127;127;159;;;
                                  -118963;3;0;false;false;;;;;;
                                  -118966;1;0;false;false;63;95;191;;;
                                  -118967;4;0;false;false;;;;;;
                                  -118971;4;0;false;false;127;127;159;;;
                                  -118975;21;0;false;false;63;95;191;;;
                                  -118996;1;0;false;false;;;;;;
                                  -118997;1;0;false;false;127;127;159;;;
                                  -118998;1;0;false;false;;;;;;
                                  -118999;2;0;false;false;63;95;191;;;
                                  -119001;1;0;false;false;;;;;;
                                  -119002;3;0;false;false;63;95;191;;;
                                  -119005;1;0;false;false;;;;;;
                                  -119006;8;0;false;false;63;95;191;;;
                                  -119014;1;0;false;false;;;;;;
                                  -119015;3;0;false;false;63;95;191;;;
                                  -119018;1;0;false;false;;;;;;
                                  -119019;4;0;false;false;63;95;191;;;
                                  -119023;1;0;false;false;;;;;;
                                  -119024;8;0;false;false;63;95;191;;;
                                  -119032;5;0;false;false;127;127;159;;;
                                  -119037;3;0;false;false;;;;;;
                                  -119040;1;0;false;false;63;95;191;;;
                                  -119041;4;0;false;false;;;;;;
                                  -119045;4;0;false;false;127;127;159;;;
                                  -119049;27;0;false;false;63;95;191;;;
                                  -119076;1;0;false;false;;;;;;
                                  -119077;1;0;false;false;127;127;159;;;
                                  -119078;1;0;false;false;;;;;;
                                  -119079;2;0;false;false;63;95;191;;;
                                  -119081;1;0;false;false;;;;;;
                                  -119082;3;0;false;false;63;95;191;;;
                                  -119085;1;0;false;false;;;;;;
                                  -119086;6;0;false;false;63;95;191;;;
                                  -119092;1;0;false;false;;;;;;
                                  -119093;4;0;false;false;63;95;191;;;
                                  -119097;1;0;false;false;;;;;;
                                  -119098;3;0;false;false;63;95;191;;;
                                  -119101;1;0;false;false;;;;;;
                                  -119102;6;0;false;false;63;95;191;;;
                                  -119108;1;0;false;false;;;;;;
                                  -119109;4;0;false;false;63;95;191;;;
                                  -119113;1;0;false;false;;;;;;
                                  -119114;7;0;false;false;63;95;191;;;
                                  -119121;1;0;false;false;;;;;;
                                  -119122;3;0;false;false;63;95;191;;;
                                  -119125;1;0;false;false;;;;;;
                                  -119126;8;0;false;false;63;95;191;;;
                                  -119134;5;0;false;false;127;127;159;;;
                                  -119139;3;0;false;false;;;;;;
                                  -119142;1;0;false;false;63;95;191;;;
                                  -119143;1;0;false;false;;;;;;
                                  -119144;5;0;false;false;127;127;159;;;
                                  -119149;3;0;false;false;;;;;;
                                  -119152;2;0;false;false;63;95;191;;;
                                  -119154;2;0;false;false;;;;;;
                                  -119156;6;1;false;false;127;0;85;;;
                                  -119162;1;0;false;false;;;;;;
                                  -119163;7;1;false;false;127;0;85;;;
                                  -119170;1;0;false;false;;;;;;
                                  -119171;13;0;false;false;0;0;0;;;
                                  -119184;1;0;false;false;;;;;;
                                  -119185;1;0;false;false;0;0;0;;;
                                  -119186;3;0;false;false;;;;;;
                                  -119189;14;0;false;false;0;0;0;;;
                                  -119203;3;0;false;false;;;;;;
                                  -119206;6;1;false;false;127;0;85;;;
                                  -119212;1;0;false;false;;;;;;
                                  -119213;9;0;false;false;0;0;0;;;
                                  -119222;2;0;false;false;;;;;;
                                  -119224;1;0;false;false;0;0;0;;;
                                  -119225;2;0;false;false;;;;;;
                                  -119227;6;1;false;false;127;0;85;;;
                                  -119233;1;0;false;false;;;;;;
                                  -119234;5;0;false;false;0;0;0;;;
                                  -119239;1;0;false;false;;;;;;
                                  -119240;15;0;false;false;0;0;0;;;
                                  -119255;1;0;false;false;;;;;;
                                  -119256;1;0;false;false;0;0;0;;;
                                  -119257;3;0;false;false;;;;;;
                                  -119260;14;0;false;false;0;0;0;;;
                                  -119274;3;0;false;false;;;;;;
                                  -119277;2;1;false;false;127;0;85;;;
                                  -119279;1;0;false;false;;;;;;
                                  -119280;11;0;false;false;0;0;0;;;
                                  -119291;1;0;false;false;;;;;;
                                  -119292;2;0;false;false;0;0;0;;;
                                  -119294;1;0;false;false;;;;;;
                                  -119295;4;1;false;false;127;0;85;;;
                                  -119299;1;0;false;false;0;0;0;;;
                                  -119300;1;0;false;false;;;;;;
                                  -119301;1;0;false;false;0;0;0;;;
                                  -119302;4;0;false;false;;;;;;
                                  -119306;6;1;false;false;127;0;85;;;
                                  -119312;1;0;false;false;;;;;;
                                  -119313;55;0;false;false;0;0;0;;;
                                  -119368;3;0;false;false;;;;;;
                                  -119371;1;0;false;false;0;0;0;;;
                                  -119372;3;0;false;false;;;;;;
                                  -119375;6;1;false;false;127;0;85;;;
                                  -119381;1;0;false;false;;;;;;
                                  -119382;11;0;false;false;0;0;0;;;
                                  -119393;2;0;false;false;;;;;;
                                  -119395;1;0;false;false;0;0;0;;;
                                  -119396;2;0;false;false;;;;;;
                                  -119398;3;0;false;false;63;95;191;;;
                                  -119401;4;0;false;false;;;;;;
                                  -119405;1;0;false;false;63;95;191;;;
                                  -119406;1;0;false;false;;;;;;
                                  -119407;6;0;false;false;63;95;191;;;
                                  -119413;1;0;false;false;;;;;;
                                  -119414;1;0;false;false;63;95;191;;;
                                  -119415;1;0;false;false;;;;;;
                                  -119416;2;0;false;false;63;95;191;;;
                                  -119418;1;0;false;false;;;;;;
                                  -119419;2;0;false;false;63;95;191;;;
                                  -119421;1;0;false;false;;;;;;
                                  -119422;3;0;false;false;63;95;191;;;
                                  -119425;1;0;false;false;;;;;;
                                  -119426;3;0;false;false;63;95;191;;;
                                  -119429;1;0;false;false;;;;;;
                                  -119430;9;0;false;false;63;95;191;;;
                                  -119439;1;0;false;false;;;;;;
                                  -119440;3;0;false;false;63;95;191;;;
                                  -119443;1;0;false;false;;;;;;
                                  -119444;6;0;false;false;63;95;191;;;
                                  -119450;1;0;false;false;;;;;;
                                  -119451;3;0;false;false;63;95;191;;;
                                  -119454;1;0;false;false;;;;;;
                                  -119455;6;0;false;false;63;95;191;;;
                                  -119461;1;0;false;false;;;;;;
                                  -119462;4;0;false;false;63;95;191;;;
                                  -119466;1;0;false;false;;;;;;
                                  -119467;5;0;false;false;63;95;191;;;
                                  -119472;1;0;false;false;;;;;;
                                  -119473;2;0;false;false;63;95;191;;;
                                  -119475;3;0;false;false;;;;;;
                                  -119478;1;0;false;false;63;95;191;;;
                                  -119479;1;0;false;false;;;;;;
                                  -119480;9;0;false;false;63;95;191;;;
                                  -119489;1;0;false;false;;;;;;
                                  -119490;3;0;false;false;63;95;191;;;
                                  -119493;1;0;false;false;;;;;;
                                  -119494;7;0;false;false;63;95;191;;;
                                  -119501;1;0;false;false;;;;;;
                                  -119502;6;0;false;false;63;95;191;;;
                                  -119508;3;0;false;false;;;;;;
                                  -119511;1;0;false;false;63;95;191;;;
                                  -119512;1;0;false;false;;;;;;
                                  -119513;3;0;false;false;127;127;159;;;
                                  -119516;3;0;false;false;;;;;;
                                  -119519;1;0;false;false;63;95;191;;;
                                  -119520;3;0;false;false;;;;;;
                                  -119523;1;0;false;false;63;95;191;;;
                                  -119524;1;0;false;false;;;;;;
                                  -119525;8;1;false;false;127;159;191;;;
                                  -119533;3;0;false;false;63;95;191;;;
                                  -119536;3;0;false;false;;;;;;
                                  -119539;2;0;false;false;63;95;191;;;
                                  -119541;2;0;false;false;;;;;;
                                  -119543;2;0;false;false;0;0;0;;;
                                  -119545;1;0;false;false;;;;;;
                                  -119546;7;0;false;false;0;0;0;;;
                                  -119553;1;0;false;false;;;;;;
                                  -119554;1;0;false;false;0;0;0;;;
                                  -119555;3;0;false;false;;;;;;
                                  -119558;6;1;false;false;127;0;85;;;
                                  -119564;1;0;false;false;;;;;;
                                  -119565;3;1;false;false;127;0;85;;;
                                  -119568;1;0;false;false;;;;;;
                                  -119569;3;0;false;false;0;0;0;;;
                                  -119572;4;1;false;false;127;0;85;;;
                                  -119576;2;0;false;false;0;0;0;;;
                                  -119578;2;0;false;false;;;;;;
                                  -119580;1;0;false;false;0;0;0;;;
                                  -119581;2;0;false;false;;;;;;
                                  -119583;3;0;false;false;63;95;191;;;
                                  -119586;4;0;false;false;;;;;;
                                  -119590;1;0;false;false;63;95;191;;;
                                  -119591;1;0;false;false;;;;;;
                                  -119592;7;0;false;false;63;95;191;;;
                                  -119599;1;0;false;false;;;;;;
                                  -119600;3;0;false;false;63;95;191;;;
                                  -119603;1;0;false;false;;;;;;
                                  -119604;10;0;false;false;63;95;191;;;
                                  -119614;1;0;false;false;;;;;;
                                  -119615;6;0;false;false;63;95;191;;;
                                  -119621;1;0;false;false;;;;;;
                                  -119622;10;0;false;false;63;95;191;;;
                                  -119632;3;0;false;false;;;;;;
                                  -119635;1;0;false;false;63;95;191;;;
                                  -119636;1;0;false;false;;;;;;
                                  -119637;3;0;false;false;127;127;159;;;
                                  -119640;3;0;false;false;;;;;;
                                  -119643;1;0;false;false;63;95;191;;;
                                  -119644;3;0;false;false;;;;;;
                                  -119647;1;0;false;false;63;95;191;;;
                                  -119648;1;0;false;false;;;;;;
                                  -119649;8;1;false;false;127;159;191;;;
                                  -119657;10;0;false;false;63;95;191;;;
                                  -119667;1;0;false;false;;;;;;
                                  -119668;6;0;false;false;63;95;191;;;
                                  -119674;1;0;false;false;;;;;;
                                  -119675;10;0;false;false;63;95;191;;;
                                  -119685;3;0;false;false;;;;;;
                                  -119688;2;0;false;false;63;95;191;;;
                                  -119690;2;0;false;false;;;;;;
                                  -119692;3;1;false;false;127;0;85;;;
                                  -119695;1;0;false;false;;;;;;
                                  -119696;24;0;false;false;0;0;0;;;
                                  -119720;1;0;false;false;;;;;;
                                  -119721;1;0;false;false;0;0;0;;;
                                  -119722;3;0;false;false;;;;;;
                                  -119725;2;0;false;false;0;0;0;;;
                                  -119727;1;0;false;false;;;;;;
                                  -119728;2;0;false;false;0;0;0;;;
                                  -119730;1;0;false;false;;;;;;
                                  -119731;1;0;false;false;0;0;0;;;
                                  -119732;1;0;false;false;;;;;;
                                  -119733;8;0;false;false;0;0;0;;;
                                  -119741;3;0;false;false;;;;;;
                                  -119744;3;1;false;false;127;0;85;;;
                                  -119747;1;0;false;false;;;;;;
                                  -119748;9;0;false;false;0;0;0;;;
                                  -119757;1;0;false;false;;;;;;
                                  -119758;1;0;false;false;0;0;0;;;
                                  -119759;1;0;false;false;;;;;;
                                  -119760;42;0;false;false;0;0;0;;;
                                  -119802;6;0;false;false;;;;;;
                                  -119808;13;0;false;false;0;0;0;;;
                                  -119821;3;0;false;false;;;;;;
                                  -119824;6;1;false;false;127;0;85;;;
                                  -119830;1;0;false;false;;;;;;
                                  -119831;10;0;false;false;0;0;0;;;
                                  -119841;2;0;false;false;;;;;;
                                  -119843;1;0;false;false;0;0;0;;;
                                  -119844;2;0;false;false;;;;;;
                                  -119846;3;0;false;false;63;95;191;;;
                                  -119849;4;0;false;false;;;;;;
                                  -119853;1;0;false;false;63;95;191;;;
                                  -119854;1;0;false;false;;;;;;
                                  -119855;7;0;false;false;63;95;191;;;
                                  -119862;1;0;false;false;;;;;;
                                  -119863;3;0;false;false;63;95;191;;;
                                  -119866;1;0;false;false;;;;;;
                                  -119867;10;0;false;false;63;95;191;;;
                                  -119877;1;0;false;false;;;;;;
                                  -119878;6;0;false;false;63;95;191;;;
                                  -119884;1;0;false;false;;;;;;
                                  -119885;6;0;false;false;63;95;191;;;
                                  -119891;1;0;false;false;;;;;;
                                  -119892;8;0;false;false;63;95;191;;;
                                  -119900;1;0;false;false;;;;;;
                                  -119901;2;0;false;false;63;95;191;;;
                                  -119903;1;0;false;false;;;;;;
                                  -119904;3;0;false;false;63;95;191;;;
                                  -119907;1;0;false;false;;;;;;
                                  -119908;5;0;false;false;63;95;191;;;
                                  -119913;1;0;false;false;;;;;;
                                  -119914;2;0;false;false;63;95;191;;;
                                  -119916;1;0;false;false;;;;;;
                                  -119917;3;0;false;false;63;95;191;;;
                                  -119920;1;0;false;false;;;;;;
                                  -119921;5;0;false;false;63;95;191;;;
                                  -119926;3;0;false;false;;;;;;
                                  -119929;1;0;false;false;63;95;191;;;
                                  -119930;1;0;false;false;;;;;;
                                  -119931;3;0;false;false;127;127;159;;;
                                  -119934;3;0;false;false;;;;;;
                                  -119937;1;0;false;false;63;95;191;;;
                                  -119938;3;0;false;false;;;;;;
                                  -119941;1;0;false;false;63;95;191;;;
                                  -119942;1;0;false;false;;;;;;
                                  -119943;8;1;false;false;127;159;191;;;
                                  -119951;10;0;false;false;63;95;191;;;
                                  -119961;1;0;false;false;;;;;;
                                  -119962;6;0;false;false;63;95;191;;;
                                  -119968;1;0;false;false;;;;;;
                                  -119969;6;0;false;false;63;95;191;;;
                                  -119975;1;0;false;false;;;;;;
                                  -119976;8;0;false;false;63;95;191;;;
                                  -119984;1;0;false;false;;;;;;
                                  -119985;2;0;false;false;63;95;191;;;
                                  -119987;1;0;false;false;;;;;;
                                  -119988;3;0;false;false;63;95;191;;;
                                  -119991;1;0;false;false;;;;;;
                                  -119992;5;0;false;false;63;95;191;;;
                                  -119997;1;0;false;false;;;;;;
                                  -119998;2;0;false;false;63;95;191;;;
                                  -120000;1;0;false;false;;;;;;
                                  -120001;3;0;false;false;63;95;191;;;
                                  -120004;1;0;false;false;;;;;;
                                  -120005;5;0;false;false;63;95;191;;;
                                  -120010;3;0;false;false;;;;;;
                                  -120013;1;0;false;false;63;95;191;;;
                                  -120014;1;0;false;false;;;;;;
                                  -120015;8;0;false;false;63;95;191;;;
                                  -120023;1;0;false;false;;;;;;
                                  -120024;2;0;false;false;63;95;191;;;
                                  -120026;1;0;false;false;;;;;;
                                  -120027;9;0;false;false;63;95;191;;;
                                  -120036;1;0;false;false;;;;;;
                                  -120037;10;0;false;false;63;95;191;;;
                                  -120047;1;0;false;false;;;;;;
                                  -120048;8;0;false;false;63;95;191;;;
                                  -120056;1;0;false;false;;;;;;
                                  -120057;2;0;false;false;63;95;191;;;
                                  -120059;1;0;false;false;;;;;;
                                  -120060;2;0;false;false;63;95;191;;;
                                  -120062;1;0;false;false;;;;;;
                                  -120063;2;0;false;false;63;95;191;;;
                                  -120065;1;0;false;false;;;;;;
                                  -120066;1;0;false;false;63;95;191;;;
                                  -120067;1;0;false;false;;;;;;
                                  -120068;1;0;false;false;63;95;191;;;
                                  -120069;1;0;false;false;;;;;;
                                  -120070;3;0;false;false;63;95;191;;;
                                  -120073;1;0;false;false;;;;;;
                                  -120074;7;0;false;false;63;95;191;;;
                                  -120081;1;0;false;false;;;;;;
                                  -120082;2;0;false;false;63;95;191;;;
                                  -120084;1;0;false;false;;;;;;
                                  -120085;8;0;false;false;63;95;191;;;
                                  -120093;3;0;false;false;;;;;;
                                  -120096;1;0;false;false;63;95;191;;;
                                  -120097;1;0;false;false;;;;;;
                                  -120098;11;1;false;false;127;159;191;;;
                                  -120109;12;0;false;false;63;95;191;;;
                                  -120121;1;0;false;false;;;;;;
                                  -120122;4;0;false;false;127;127;159;;;
                                  -120126;3;0;false;false;;;;;;
                                  -120129;1;0;false;false;63;95;191;;;
                                  -120130;4;0;false;false;;;;;;
                                  -120134;4;0;false;false;127;127;159;;;
                                  -120138;21;0;false;false;63;95;191;;;
                                  -120159;1;0;false;false;;;;;;
                                  -120160;1;0;false;false;127;127;159;;;
                                  -120161;1;0;false;false;;;;;;
                                  -120162;2;0;false;false;63;95;191;;;
                                  -120164;1;0;false;false;;;;;;
                                  -120165;3;0;false;false;63;95;191;;;
                                  -120168;1;0;false;false;;;;;;
                                  -120169;8;0;false;false;63;95;191;;;
                                  -120177;1;0;false;false;;;;;;
                                  -120178;3;0;false;false;63;95;191;;;
                                  -120181;1;0;false;false;;;;;;
                                  -120182;4;0;false;false;63;95;191;;;
                                  -120186;1;0;false;false;;;;;;
                                  -120187;8;0;false;false;63;95;191;;;
                                  -120195;5;0;false;false;127;127;159;;;
                                  -120200;3;0;false;false;;;;;;
                                  -120203;1;0;false;false;63;95;191;;;
                                  -120204;4;0;false;false;;;;;;
                                  -120208;4;0;false;false;127;127;159;;;
                                  -120212;27;0;false;false;63;95;191;;;
                                  -120239;1;0;false;false;;;;;;
                                  -120240;1;0;false;false;127;127;159;;;
                                  -120241;1;0;false;false;;;;;;
                                  -120242;2;0;false;false;63;95;191;;;
                                  -120244;1;0;false;false;;;;;;
                                  -120245;3;0;false;false;63;95;191;;;
                                  -120248;1;0;false;false;;;;;;
                                  -120249;6;0;false;false;63;95;191;;;
                                  -120255;1;0;false;false;;;;;;
                                  -120256;4;0;false;false;63;95;191;;;
                                  -120260;1;0;false;false;;;;;;
                                  -120261;3;0;false;false;63;95;191;;;
                                  -120264;1;0;false;false;;;;;;
                                  -120265;6;0;false;false;63;95;191;;;
                                  -120271;1;0;false;false;;;;;;
                                  -120272;4;0;false;false;63;95;191;;;
                                  -120276;1;0;false;false;;;;;;
                                  -120277;7;0;false;false;63;95;191;;;
                                  -120284;1;0;false;false;;;;;;
                                  -120285;3;0;false;false;63;95;191;;;
                                  -120288;1;0;false;false;;;;;;
                                  -120289;8;0;false;false;63;95;191;;;
                                  -120297;5;0;false;false;127;127;159;;;
                                  -120302;3;0;false;false;;;;;;
                                  -120305;1;0;false;false;63;95;191;;;
                                  -120306;1;0;false;false;;;;;;
                                  -120307;5;0;false;false;127;127;159;;;
                                  -120312;3;0;false;false;;;;;;
                                  -120315;2;0;false;false;63;95;191;;;
                                  -120317;2;0;false;false;;;;;;
                                  -120319;6;1;false;false;127;0;85;;;
                                  -120325;1;0;false;false;;;;;;
                                  -120326;3;1;false;false;127;0;85;;;
                                  -120329;1;0;false;false;;;;;;
                                  -120330;20;0;false;false;0;0;0;;;
                                  -120350;1;0;false;false;;;;;;
                                  -120351;1;0;false;false;0;0;0;;;
                                  -120352;4;0;false;false;;;;;;
                                  -120356;14;0;false;false;0;0;0;;;
                                  -120370;3;0;false;false;;;;;;
                                  -120373;6;1;false;false;127;0;85;;;
                                  -120379;1;0;false;false;;;;;;
                                  -120380;22;0;false;false;0;0;0;;;
                                  -120402;1;0;false;false;;;;;;
                                  -120403;1;0;false;false;0;0;0;;;
                                  -120404;1;0;false;false;;;;;;
                                  -120405;25;0;false;false;0;0;0;;;
                                  -120430;2;0;false;false;;;;;;
                                  -120432;1;0;false;false;0;0;0;;;
                                  -120433;2;0;false;false;;;;;;
                                  -120435;3;0;false;false;63;95;191;;;
                                  -120438;4;0;false;false;;;;;;
                                  -120442;1;0;false;false;63;95;191;;;
                                  -120443;1;0;false;false;;;;;;
                                  -120444;7;0;false;false;63;95;191;;;
                                  -120451;1;0;false;false;;;;;;
                                  -120452;3;0;false;false;63;95;191;;;
                                  -120455;1;0;false;false;;;;;;
                                  -120456;10;0;false;false;63;95;191;;;
                                  -120466;1;0;false;false;;;;;;
                                  -120467;6;0;false;false;63;95;191;;;
                                  -120473;1;0;false;false;;;;;;
                                  -120474;6;0;false;false;63;95;191;;;
                                  -120480;1;0;false;false;;;;;;
                                  -120481;8;0;false;false;63;95;191;;;
                                  -120489;1;0;false;false;;;;;;
                                  -120490;2;0;false;false;63;95;191;;;
                                  -120492;1;0;false;false;;;;;;
                                  -120493;3;0;false;false;63;95;191;;;
                                  -120496;1;0;false;false;;;;;;
                                  -120497;5;0;false;false;63;95;191;;;
                                  -120502;1;0;false;false;;;;;;
                                  -120503;2;0;false;false;63;95;191;;;
                                  -120505;1;0;false;false;;;;;;
                                  -120506;3;0;false;false;63;95;191;;;
                                  -120509;1;0;false;false;;;;;;
                                  -120510;5;0;false;false;63;95;191;;;
                                  -120515;3;0;false;false;;;;;;
                                  -120518;1;0;false;false;63;95;191;;;
                                  -120519;1;0;false;false;;;;;;
                                  -120520;3;0;false;false;127;127;159;;;
                                  -120523;3;0;false;false;;;;;;
                                  -120526;1;0;false;false;63;95;191;;;
                                  -120527;3;0;false;false;;;;;;
                                  -120530;1;0;false;false;63;95;191;;;
                                  -120531;1;0;false;false;;;;;;
                                  -120532;8;1;false;false;127;159;191;;;
                                  -120540;3;0;false;false;63;95;191;;;
                                  -120543;1;0;false;false;;;;;;
                                  -120544;10;0;false;false;63;95;191;;;
                                  -120554;1;0;false;false;;;;;;
                                  -120555;6;0;false;false;63;95;191;;;
                                  -120561;1;0;false;false;;;;;;
                                  -120562;6;0;false;false;63;95;191;;;
                                  -120568;1;0;false;false;;;;;;
                                  -120569;8;0;false;false;63;95;191;;;
                                  -120577;1;0;false;false;;;;;;
                                  -120578;2;0;false;false;63;95;191;;;
                                  -120580;1;0;false;false;;;;;;
                                  -120581;3;0;false;false;63;95;191;;;
                                  -120584;1;0;false;false;;;;;;
                                  -120585;5;0;false;false;63;95;191;;;
                                  -120590;1;0;false;false;;;;;;
                                  -120591;2;0;false;false;63;95;191;;;
                                  -120593;1;0;false;false;;;;;;
                                  -120594;3;0;false;false;63;95;191;;;
                                  -120597;1;0;false;false;;;;;;
                                  -120598;5;0;false;false;63;95;191;;;
                                  -120603;3;0;false;false;;;;;;
                                  -120606;1;0;false;false;63;95;191;;;
                                  -120607;1;0;false;false;;;;;;
                                  -120608;8;0;false;false;63;95;191;;;
                                  -120616;1;0;false;false;;;;;;
                                  -120617;2;0;false;false;63;95;191;;;
                                  -120619;1;0;false;false;;;;;;
                                  -120620;5;0;false;false;63;95;191;;;
                                  -120625;1;0;false;false;;;;;;
                                  -120626;8;0;false;false;63;95;191;;;
                                  -120634;1;0;false;false;;;;;;
                                  -120635;2;0;false;false;63;95;191;;;
                                  -120637;1;0;false;false;;;;;;
                                  -120638;2;0;false;false;63;95;191;;;
                                  -120640;1;0;false;false;;;;;;
                                  -120641;2;0;false;false;63;95;191;;;
                                  -120643;1;0;false;false;;;;;;
                                  -120644;1;0;false;false;63;95;191;;;
                                  -120645;1;0;false;false;;;;;;
                                  -120646;1;0;false;false;63;95;191;;;
                                  -120647;1;0;false;false;;;;;;
                                  -120648;3;0;false;false;63;95;191;;;
                                  -120651;1;0;false;false;;;;;;
                                  -120652;7;0;false;false;63;95;191;;;
                                  -120659;1;0;false;false;;;;;;
                                  -120660;2;0;false;false;63;95;191;;;
                                  -120662;1;0;false;false;;;;;;
                                  -120663;9;0;false;false;63;95;191;;;
                                  -120672;3;0;false;false;;;;;;
                                  -120675;1;0;false;false;63;95;191;;;
                                  -120676;1;0;false;false;;;;;;
                                  -120677;11;1;false;false;127;159;191;;;
                                  -120688;12;0;false;false;63;95;191;;;
                                  -120700;1;0;false;false;;;;;;
                                  -120701;4;0;false;false;127;127;159;;;
                                  -120705;3;0;false;false;;;;;;
                                  -120708;1;0;false;false;63;95;191;;;
                                  -120709;4;0;false;false;;;;;;
                                  -120713;4;0;false;false;127;127;159;;;
                                  -120717;21;0;false;false;63;95;191;;;
                                  -120738;1;0;false;false;;;;;;
                                  -120739;1;0;false;false;127;127;159;;;
                                  -120740;1;0;false;false;;;;;;
                                  -120741;2;0;false;false;63;95;191;;;
                                  -120743;1;0;false;false;;;;;;
                                  -120744;3;0;false;false;63;95;191;;;
                                  -120747;1;0;false;false;;;;;;
                                  -120748;8;0;false;false;63;95;191;;;
                                  -120756;1;0;false;false;;;;;;
                                  -120757;3;0;false;false;63;95;191;;;
                                  -120760;1;0;false;false;;;;;;
                                  -120761;4;0;false;false;63;95;191;;;
                                  -120765;1;0;false;false;;;;;;
                                  -120766;8;0;false;false;63;95;191;;;
                                  -120774;5;0;false;false;127;127;159;;;
                                  -120779;3;0;false;false;;;;;;
                                  -120782;1;0;false;false;63;95;191;;;
                                  -120783;4;0;false;false;;;;;;
                                  -120787;4;0;false;false;127;127;159;;;
                                  -120791;27;0;false;false;63;95;191;;;
                                  -120818;1;0;false;false;;;;;;
                                  -120819;1;0;false;false;127;127;159;;;
                                  -120820;1;0;false;false;;;;;;
                                  -120821;2;0;false;false;63;95;191;;;
                                  -120823;1;0;false;false;;;;;;
                                  -120824;3;0;false;false;63;95;191;;;
                                  -120827;1;0;false;false;;;;;;
                                  -120828;6;0;false;false;63;95;191;;;
                                  -120834;1;0;false;false;;;;;;
                                  -120835;4;0;false;false;63;95;191;;;
                                  -120839;1;0;false;false;;;;;;
                                  -120840;3;0;false;false;63;95;191;;;
                                  -120843;1;0;false;false;;;;;;
                                  -120844;6;0;false;false;63;95;191;;;
                                  -120850;1;0;false;false;;;;;;
                                  -120851;4;0;false;false;63;95;191;;;
                                  -120855;1;0;false;false;;;;;;
                                  -120856;7;0;false;false;63;95;191;;;
                                  -120863;1;0;false;false;;;;;;
                                  -120864;3;0;false;false;63;95;191;;;
                                  -120867;1;0;false;false;;;;;;
                                  -120868;8;0;false;false;63;95;191;;;
                                  -120876;5;0;false;false;127;127;159;;;
                                  -120881;3;0;false;false;;;;;;
                                  -120884;1;0;false;false;63;95;191;;;
                                  -120885;1;0;false;false;;;;;;
                                  -120886;5;0;false;false;127;127;159;;;
                                  -120891;3;0;false;false;;;;;;
                                  -120894;2;0;false;false;63;95;191;;;
                                  -120896;2;0;false;false;;;;;;
                                  -120898;6;1;false;false;127;0;85;;;
                                  -120904;1;0;false;false;;;;;;
                                  -120905;3;1;false;false;127;0;85;;;
                                  -120908;1;0;false;false;;;;;;
                                  -120909;20;0;false;false;0;0;0;;;
                                  -120929;1;0;false;false;;;;;;
                                  -120930;1;0;false;false;0;0;0;;;
                                  -120931;4;0;false;false;;;;;;
                                  -120935;14;0;false;false;0;0;0;;;
                                  -120949;3;0;false;false;;;;;;
                                  -120952;6;1;false;false;127;0;85;;;
                                  -120958;1;0;false;false;;;;;;
                                  -120959;23;0;false;false;0;0;0;;;
                                  -120982;2;0;false;false;;;;;;
                                  -120984;1;0;false;false;0;0;0;;;
                                  -120985;2;0;false;false;;;;;;
                                  -120987;3;0;false;false;63;95;191;;;
                                  -120990;4;0;false;false;;;;;;
                                  -120994;1;0;false;false;63;95;191;;;
                                  -120995;1;0;false;false;;;;;;
                                  -120996;7;0;false;false;63;95;191;;;
                                  -121003;1;0;false;false;;;;;;
                                  -121004;3;0;false;false;63;95;191;;;
                                  -121007;1;0;false;false;;;;;;
                                  -121008;6;0;false;false;63;95;191;;;
                                  -121014;1;0;false;false;;;;;;
                                  -121015;8;0;false;false;63;95;191;;;
                                  -121023;1;0;false;false;;;;;;
                                  -121024;2;0;false;false;63;95;191;;;
                                  -121026;1;0;false;false;;;;;;
                                  -121027;3;0;false;false;63;95;191;;;
                                  -121030;1;0;false;false;;;;;;
                                  -121031;4;0;false;false;63;95;191;;;
                                  -121035;3;0;false;false;;;;;;
                                  -121038;1;0;false;false;63;95;191;;;
                                  -121039;1;0;false;false;;;;;;
                                  -121040;7;0;false;false;63;95;191;;;
                                  -121047;1;0;false;false;;;;;;
                                  -121048;8;0;false;false;63;95;191;;;
                                  -121056;1;0;false;false;;;;;;
                                  -121057;2;0;false;false;63;95;191;;;
                                  -121059;1;0;false;false;;;;;;
                                  -121060;5;0;false;false;63;95;191;;;
                                  -121065;1;0;false;false;;;;;;
                                  -121066;2;0;false;false;63;95;191;;;
                                  -121068;1;0;false;false;;;;;;
                                  -121069;2;0;false;false;63;95;191;;;
                                  -121071;1;0;false;false;;;;;;
                                  -121072;6;0;false;false;63;95;191;;;
                                  -121078;1;0;false;false;;;;;;
                                  -121079;10;0;false;false;63;95;191;;;
                                  -121089;1;0;false;false;;;;;;
                                  -121090;4;0;false;false;63;95;191;;;
                                  -121094;1;0;false;false;;;;;;
                                  -121095;3;0;false;false;63;95;191;;;
                                  -121098;1;0;false;false;;;;;;
                                  -121099;4;0;false;false;63;95;191;;;
                                  -121103;3;0;false;false;;;;;;
                                  -121106;1;0;false;false;63;95;191;;;
                                  -121107;1;0;false;false;;;;;;
                                  -121108;3;0;false;false;127;127;159;;;
                                  -121111;3;0;false;false;;;;;;
                                  -121114;1;0;false;false;63;95;191;;;
                                  -121115;3;0;false;false;;;;;;
                                  -121118;1;0;false;false;63;95;191;;;
                                  -121119;1;0;false;false;;;;;;
                                  -121120;7;1;false;false;127;159;191;;;
                                  -121127;3;0;false;false;63;95;191;;;
                                  -121130;1;0;false;false;;;;;;
                                  -121131;1;0;false;false;63;95;191;;;
                                  -121132;1;0;false;false;;;;;;
                                  -121133;3;0;false;false;63;95;191;;;
                                  -121136;1;0;false;false;;;;;;
                                  -121137;4;0;false;false;63;95;191;;;
                                  -121141;1;0;false;false;;;;;;
                                  -121142;7;0;false;false;63;95;191;;;
                                  -121149;1;0;false;false;;;;;;
                                  -121150;2;0;false;false;63;95;191;;;
                                  -121152;1;0;false;false;;;;;;
                                  -121153;8;0;false;false;63;95;191;;;
                                  -121161;1;0;false;false;;;;;;
                                  -121162;2;0;false;false;63;95;191;;;
                                  -121164;1;0;false;false;;;;;;
                                  -121165;1;0;false;false;63;95;191;;;
                                  -121166;1;0;false;false;;;;;;
                                  -121167;10;0;false;false;63;95;191;;;
                                  -121177;4;0;false;false;;;;;;
                                  -121181;1;0;false;false;63;95;191;;;
                                  -121182;2;0;false;false;;;;;;
                                  -121184;10;0;false;false;63;95;191;;;
                                  -121194;1;0;false;false;;;;;;
                                  -121195;3;0;false;false;63;95;191;;;
                                  -121198;1;0;false;false;;;;;;
                                  -121199;4;0;false;false;63;95;191;;;
                                  -121203;1;0;false;false;;;;;;
                                  -121204;1;0;false;false;63;95;191;;;
                                  -121205;1;0;false;false;;;;;;
                                  -121206;5;0;false;false;63;95;191;;;
                                  -121211;1;0;false;false;;;;;;
                                  -121212;5;0;false;false;63;95;191;;;
                                  -121217;2;0;false;false;;;;;;
                                  -121219;9;0;false;false;63;95;191;;;
                                  -121228;1;0;false;false;;;;;;
                                  -121229;5;0;false;false;63;95;191;;;
                                  -121234;1;0;false;false;;;;;;
                                  -121235;5;0;false;false;63;95;191;;;
                                  -121240;1;0;false;false;;;;;;
                                  -121241;3;0;false;false;63;95;191;;;
                                  -121244;1;0;false;false;;;;;;
                                  -121245;3;0;false;false;63;95;191;;;
                                  -121248;1;0;false;false;;;;;;
                                  -121249;2;0;false;false;63;95;191;;;
                                  -121251;1;0;false;false;;;;;;
                                  -121252;4;0;false;false;63;95;191;;;
                                  -121256;1;0;false;false;;;;;;
                                  -121257;2;0;false;false;63;95;191;;;
                                  -121259;3;0;false;false;;;;;;
                                  -121262;1;0;false;false;63;95;191;;;
                                  -121263;2;0;false;false;;;;;;
                                  -121265;9;0;false;false;63;95;191;;;
                                  -121274;1;0;false;false;;;;;;
                                  -121275;9;0;false;false;63;95;191;;;
                                  -121284;1;0;false;false;;;;;;
                                  -121285;9;0;false;false;63;95;191;;;
                                  -121294;1;0;false;false;;;;;;
                                  -121295;5;0;false;false;63;95;191;;;
                                  -121300;1;0;false;false;;;;;;
                                  -121301;5;0;false;false;63;95;191;;;
                                  -121306;1;0;false;false;;;;;;
                                  -121307;5;0;false;false;63;95;191;;;
                                  -121312;1;0;false;false;;;;;;
                                  -121313;7;0;false;false;63;95;191;;;
                                  -121320;1;0;false;false;;;;;;
                                  -121321;3;0;false;false;63;95;191;;;
                                  -121324;1;0;false;false;;;;;;
                                  -121325;8;0;false;false;63;95;191;;;
                                  -121333;1;0;false;false;;;;;;
                                  -121334;8;0;false;false;63;95;191;;;
                                  -121342;4;0;false;false;;;;;;
                                  -121346;1;0;false;false;63;95;191;;;
                                  -121347;2;0;false;false;;;;;;
                                  -121349;12;0;false;false;63;95;191;;;
                                  -121361;2;0;false;false;;;;;;
                                  -121363;8;0;false;false;63;95;191;;;
                                  -121371;1;0;false;false;;;;;;
                                  -121372;5;0;false;false;63;95;191;;;
                                  -121377;1;0;false;false;;;;;;
                                  -121378;3;0;false;false;63;95;191;;;
                                  -121381;1;0;false;false;;;;;;
                                  -121382;2;0;false;false;63;95;191;;;
                                  -121384;1;0;false;false;;;;;;
                                  -121385;5;0;false;false;63;95;191;;;
                                  -121390;1;0;false;false;;;;;;
                                  -121391;5;0;false;false;63;95;191;;;
                                  -121396;1;0;false;false;;;;;;
                                  -121397;5;0;false;false;63;95;191;;;
                                  -121402;1;0;false;false;;;;;;
                                  -121403;3;0;false;false;63;95;191;;;
                                  -121406;1;0;false;false;;;;;;
                                  -121407;8;0;false;false;63;95;191;;;
                                  -121415;1;0;false;false;;;;;;
                                  -121416;5;0;false;false;63;95;191;;;
                                  -121421;1;0;false;false;;;;;;
                                  -121422;5;0;false;false;63;95;191;;;
                                  -121427;3;0;false;false;;;;;;
                                  -121430;1;0;false;false;63;95;191;;;
                                  -121431;2;0;false;false;;;;;;
                                  -121433;6;0;false;false;63;95;191;;;
                                  -121439;1;0;false;false;;;;;;
                                  -121440;9;0;false;false;63;95;191;;;
                                  -121449;1;0;false;false;;;;;;
                                  -121450;10;0;false;false;63;95;191;;;
                                  -121460;1;0;false;false;;;;;;
                                  -121461;8;0;false;false;63;95;191;;;
                                  -121469;1;0;false;false;;;;;;
                                  -121470;12;0;false;false;63;95;191;;;
                                  -121482;1;0;false;false;;;;;;
                                  -121483;5;0;false;false;63;95;191;;;
                                  -121488;1;0;false;false;;;;;;
                                  -121489;6;0;false;false;63;95;191;;;
                                  -121495;3;0;false;false;;;;;;
                                  -121498;1;0;false;false;63;95;191;;;
                                  -121499;1;0;false;false;;;;;;
                                  -121500;8;1;false;false;127;159;191;;;
                                  -121508;3;0;false;false;63;95;191;;;
                                  -121511;1;0;false;false;;;;;;
                                  -121512;2;0;false;false;63;95;191;;;
                                  -121514;1;0;false;false;;;;;;
                                  -121515;3;0;false;false;63;95;191;;;
                                  -121518;1;0;false;false;;;;;;
                                  -121519;10;0;false;false;63;95;191;;;
                                  -121529;1;0;false;false;;;;;;
                                  -121530;7;0;false;false;63;95;191;;;
                                  -121537;1;0;false;false;;;;;;
                                  -121538;7;0;false;false;63;95;191;;;
                                  -121545;1;0;false;false;;;;;;
                                  -121546;2;0;false;false;63;95;191;;;
                                  -121548;1;0;false;false;;;;;;
                                  -121549;7;0;false;false;63;95;191;;;
                                  -121556;1;0;false;false;;;;;;
                                  -121557;2;0;false;false;63;95;191;;;
                                  -121559;1;0;false;false;;;;;;
                                  -121560;8;0;false;false;63;95;191;;;
                                  -121568;4;0;false;false;;;;;;
                                  -121572;1;0;false;false;63;95;191;;;
                                  -121573;2;0;false;false;;;;;;
                                  -121575;2;0;false;false;63;95;191;;;
                                  -121577;1;0;false;false;;;;;;
                                  -121578;5;0;false;false;63;95;191;;;
                                  -121583;1;0;false;false;;;;;;
                                  -121584;2;0;false;false;63;95;191;;;
                                  -121586;1;0;false;false;;;;;;
                                  -121587;2;0;false;false;63;95;191;;;
                                  -121589;1;0;false;false;;;;;;
                                  -121590;6;0;false;false;63;95;191;;;
                                  -121596;1;0;false;false;;;;;;
                                  -121597;10;0;false;false;63;95;191;;;
                                  -121607;1;0;false;false;;;;;;
                                  -121608;4;0;false;false;63;95;191;;;
                                  -121612;1;0;false;false;;;;;;
                                  -121613;3;0;false;false;63;95;191;;;
                                  -121616;1;0;false;false;;;;;;
                                  -121617;4;0;false;false;63;95;191;;;
                                  -121621;3;0;false;false;;;;;;
                                  -121624;1;0;false;false;63;95;191;;;
                                  -121625;1;0;false;false;;;;;;
                                  -121626;11;1;false;false;127;159;191;;;
                                  -121637;12;0;false;false;63;95;191;;;
                                  -121649;1;0;false;false;;;;;;
                                  -121650;4;0;false;false;127;127;159;;;
                                  -121654;3;0;false;false;;;;;;
                                  -121657;1;0;false;false;63;95;191;;;
                                  -121658;4;0;false;false;;;;;;
                                  -121662;4;0;false;false;127;127;159;;;
                                  -121666;21;0;false;false;63;95;191;;;
                                  -121687;1;0;false;false;;;;;;
                                  -121688;1;0;false;false;127;127;159;;;
                                  -121689;1;0;false;false;;;;;;
                                  -121690;2;0;false;false;63;95;191;;;
                                  -121692;1;0;false;false;;;;;;
                                  -121693;3;0;false;false;63;95;191;;;
                                  -121696;1;0;false;false;;;;;;
                                  -121697;8;0;false;false;63;95;191;;;
                                  -121705;1;0;false;false;;;;;;
                                  -121706;3;0;false;false;63;95;191;;;
                                  -121709;1;0;false;false;;;;;;
                                  -121710;4;0;false;false;63;95;191;;;
                                  -121714;1;0;false;false;;;;;;
                                  -121715;8;0;false;false;63;95;191;;;
                                  -121723;5;0;false;false;127;127;159;;;
                                  -121728;3;0;false;false;;;;;;
                                  -121731;1;0;false;false;63;95;191;;;
                                  -121732;4;0;false;false;;;;;;
                                  -121736;4;0;false;false;127;127;159;;;
                                  -121740;27;0;false;false;63;95;191;;;
                                  -121767;1;0;false;false;;;;;;
                                  -121768;1;0;false;false;127;127;159;;;
                                  -121769;1;0;false;false;;;;;;
                                  -121770;2;0;false;false;63;95;191;;;
                                  -121772;1;0;false;false;;;;;;
                                  -121773;3;0;false;false;63;95;191;;;
                                  -121776;1;0;false;false;;;;;;
                                  -121777;6;0;false;false;63;95;191;;;
                                  -121783;1;0;false;false;;;;;;
                                  -121784;4;0;false;false;63;95;191;;;
                                  -121788;1;0;false;false;;;;;;
                                  -121789;3;0;false;false;63;95;191;;;
                                  -121792;1;0;false;false;;;;;;
                                  -121793;6;0;false;false;63;95;191;;;
                                  -121799;1;0;false;false;;;;;;
                                  -121800;4;0;false;false;63;95;191;;;
                                  -121804;1;0;false;false;;;;;;
                                  -121805;7;0;false;false;63;95;191;;;
                                  -121812;1;0;false;false;;;;;;
                                  -121813;3;0;false;false;63;95;191;;;
                                  -121816;1;0;false;false;;;;;;
                                  -121817;8;0;false;false;63;95;191;;;
                                  -121825;5;0;false;false;127;127;159;;;
                                  -121830;3;0;false;false;;;;;;
                                  -121833;1;0;false;false;63;95;191;;;
                                  -121834;1;0;false;false;;;;;;
                                  -121835;5;0;false;false;127;127;159;;;
                                  -121840;3;0;false;false;;;;;;
                                  -121843;2;0;false;false;63;95;191;;;
                                  -121845;2;0;false;false;;;;;;
                                  -121847;6;1;false;false;127;0;85;;;
                                  -121853;1;0;false;false;;;;;;
                                  -121854;3;1;false;false;127;0;85;;;
                                  -121857;1;0;false;false;;;;;;
                                  -121858;14;0;false;false;0;0;0;;;
                                  -121872;3;1;false;false;127;0;85;;;
                                  -121875;1;0;false;false;;;;;;
                                  -121876;4;0;false;false;0;0;0;;;
                                  -121880;1;0;false;false;;;;;;
                                  -121881;1;0;false;false;0;0;0;;;
                                  -121882;3;0;false;false;;;;;;
                                  -121885;14;0;false;false;0;0;0;;;
                                  -121899;3;0;false;false;;;;;;
                                  -121902;7;0;false;false;0;0;0;;;
                                  -121909;1;0;false;false;;;;;;
                                  -121910;6;0;false;false;0;0;0;;;
                                  -121916;1;0;false;false;;;;;;
                                  -121917;1;0;false;false;0;0;0;;;
                                  -121918;1;0;false;false;;;;;;
                                  -121919;9;0;false;false;0;0;0;;;
                                  -121928;1;0;false;false;;;;;;
                                  -121929;17;0;false;false;0;0;0;;;
                                  -121946;3;1;false;false;127;0;85;;;
                                  -121949;1;0;false;false;;;;;;
                                  -121950;14;0;false;false;0;0;0;;;
                                  -121964;3;0;false;false;;;;;;
                                  -121967;3;1;false;false;127;0;85;;;
                                  -121970;1;0;false;false;;;;;;
                                  -121971;10;0;false;false;0;0;0;;;
                                  -121981;6;0;false;false;;;;;;
                                  -121987;2;1;false;false;127;0;85;;;
                                  -121989;1;0;false;false;;;;;;
                                  -121990;7;0;false;false;0;0;0;;;
                                  -121997;1;0;false;false;;;;;;
                                  -121998;2;0;false;false;0;0;0;;;
                                  -122000;1;0;false;false;;;;;;
                                  -122001;4;1;false;false;127;0;85;;;
                                  -122005;1;0;false;false;0;0;0;;;
                                  -122006;1;0;false;false;;;;;;
                                  -122007;1;0;false;false;0;0;0;;;
                                  -122008;4;0;false;false;;;;;;
                                  -122012;9;0;false;false;0;0;0;;;
                                  -122021;1;0;false;false;;;;;;
                                  -122022;1;0;false;false;0;0;0;;;
                                  -122023;1;0;false;false;;;;;;
                                  -122024;9;0;false;false;0;0;0;;;
                                  -122033;3;0;false;false;;;;;;
                                  -122036;1;0;false;false;0;0;0;;;
                                  -122037;3;0;false;false;;;;;;
                                  -122040;4;1;false;false;127;0;85;;;
                                  -122044;1;0;false;false;;;;;;
                                  -122045;1;0;false;false;0;0;0;;;
                                  -122046;4;0;false;false;;;;;;
                                  -122050;9;0;false;false;0;0;0;;;
                                  -122059;1;0;false;false;;;;;;
                                  -122060;1;0;false;false;0;0;0;;;
                                  -122061;1;0;false;false;;;;;;
                                  -122062;18;0;false;false;0;0;0;;;
                                  -122080;3;0;false;false;;;;;;
                                  -122083;1;0;false;false;0;0;0;;;
                                  -122084;3;0;false;false;;;;;;
                                  -122087;6;1;false;false;127;0;85;;;
                                  -122093;1;0;false;false;;;;;;
                                  -122094;10;0;false;false;0;0;0;;;
                                  -122104;2;0;false;false;;;;;;
                                  -122106;1;0;false;false;0;0;0;;;
                                  -122107;2;0;false;false;;;;;;
                                  -122109;3;0;false;false;63;95;191;;;
                                  -122112;3;0;false;false;;;;;;
                                  -122115;1;0;false;false;63;95;191;;;
                                  -122116;1;0;false;false;;;;;;
                                  -122117;4;0;false;false;63;95;191;;;
                                  -122121;1;0;false;false;;;;;;
                                  -122122;3;0;false;false;63;95;191;;;
                                  -122125;1;0;false;false;;;;;;
                                  -122126;6;0;false;false;63;95;191;;;
                                  -122132;1;0;false;false;;;;;;
                                  -122133;2;0;false;false;63;95;191;;;
                                  -122135;1;0;false;false;;;;;;
                                  -122136;11;0;false;false;63;95;191;;;
                                  -122147;3;0;false;false;;;;;;
                                  -122150;1;0;false;false;63;95;191;;;
                                  -122151;1;0;false;false;;;;;;
                                  -122152;3;0;false;false;127;127;159;;;
                                  -122155;3;0;false;false;;;;;;
                                  -122158;1;0;false;false;63;95;191;;;
                                  -122159;3;0;false;false;;;;;;
                                  -122162;1;0;false;false;63;95;191;;;
                                  -122163;1;0;false;false;;;;;;
                                  -122164;8;1;false;false;127;159;191;;;
                                  -122172;6;0;false;false;63;95;191;;;
                                  -122178;1;0;false;false;;;;;;
                                  -122179;2;0;false;false;63;95;191;;;
                                  -122181;1;0;false;false;;;;;;
                                  -122182;10;0;false;false;63;95;191;;;
                                  -122192;1;0;false;false;;;;;;
                                  -122193;2;0;false;false;63;95;191;;;
                                  -122195;1;0;false;false;;;;;;
                                  -122196;3;0;false;false;63;95;191;;;
                                  -122199;1;0;false;false;;;;;;
                                  -122200;6;0;false;false;63;95;191;;;
                                  -122206;3;0;false;false;;;;;;
                                  -122209;1;0;false;false;63;95;191;;;
                                  -122210;1;0;false;false;;;;;;
                                  -122211;11;1;false;false;127;159;191;;;
                                  -122222;12;0;false;false;63;95;191;;;
                                  -122234;1;0;false;false;;;;;;
                                  -122235;4;0;false;false;127;127;159;;;
                                  -122239;3;0;false;false;;;;;;
                                  -122242;1;0;false;false;63;95;191;;;
                                  -122243;4;0;false;false;;;;;;
                                  -122247;4;0;false;false;127;127;159;;;
                                  -122251;21;0;false;false;63;95;191;;;
                                  -122272;1;0;false;false;;;;;;
                                  -122273;1;0;false;false;127;127;159;;;
                                  -122274;1;0;false;false;;;;;;
                                  -122275;2;0;false;false;63;95;191;;;
                                  -122277;1;0;false;false;;;;;;
                                  -122278;3;0;false;false;63;95;191;;;
                                  -122281;1;0;false;false;;;;;;
                                  -122282;8;0;false;false;63;95;191;;;
                                  -122290;1;0;false;false;;;;;;
                                  -122291;3;0;false;false;63;95;191;;;
                                  -122294;1;0;false;false;;;;;;
                                  -122295;4;0;false;false;63;95;191;;;
                                  -122299;1;0;false;false;;;;;;
                                  -122300;8;0;false;false;63;95;191;;;
                                  -122308;5;0;false;false;127;127;159;;;
                                  -122313;3;0;false;false;;;;;;
                                  -122316;1;0;false;false;63;95;191;;;
                                  -122317;4;0;false;false;;;;;;
                                  -122321;4;0;false;false;127;127;159;;;
                                  -122325;27;0;false;false;63;95;191;;;
                                  -122352;1;0;false;false;;;;;;
                                  -122353;1;0;false;false;127;127;159;;;
                                  -122354;1;0;false;false;;;;;;
                                  -122355;2;0;false;false;63;95;191;;;
                                  -122357;1;0;false;false;;;;;;
                                  -122358;3;0;false;false;63;95;191;;;
                                  -122361;1;0;false;false;;;;;;
                                  -122362;6;0;false;false;63;95;191;;;
                                  -122368;1;0;false;false;;;;;;
                                  -122369;4;0;false;false;63;95;191;;;
                                  -122373;1;0;false;false;;;;;;
                                  -122374;3;0;false;false;63;95;191;;;
                                  -122377;1;0;false;false;;;;;;
                                  -122378;6;0;false;false;63;95;191;;;
                                  -122384;1;0;false;false;;;;;;
                                  -122385;4;0;false;false;63;95;191;;;
                                  -122389;1;0;false;false;;;;;;
                                  -122390;7;0;false;false;63;95;191;;;
                                  -122397;1;0;false;false;;;;;;
                                  -122398;3;0;false;false;63;95;191;;;
                                  -122401;1;0;false;false;;;;;;
                                  -122402;8;0;false;false;63;95;191;;;
                                  -122410;5;0;false;false;127;127;159;;;
                                  -122415;3;0;false;false;;;;;;
                                  -122418;1;0;false;false;63;95;191;;;
                                  -122419;1;0;false;false;;;;;;
                                  -122420;5;0;false;false;127;127;159;;;
                                  -122425;3;0;false;false;;;;;;
                                  -122428;2;0;false;false;63;95;191;;;
                                  -122430;2;0;false;false;;;;;;
                                  -122432;6;1;false;false;127;0;85;;;
                                  -122438;1;0;false;false;;;;;;
                                  -122439;3;1;false;false;127;0;85;;;
                                  -122442;1;0;false;false;;;;;;
                                  -122443;14;0;false;false;0;0;0;;;
                                  -122457;1;0;false;false;;;;;;
                                  -122458;1;0;false;false;0;0;0;;;
                                  -122459;3;0;false;false;;;;;;
                                  -122462;14;0;false;false;0;0;0;;;
                                  -122476;3;0;false;false;;;;;;
                                  -122479;6;1;false;false;127;0;85;;;
                                  -122485;1;0;false;false;;;;;;
                                  -122486;23;0;false;false;0;0;0;;;
                                  -122509;2;0;false;false;;;;;;
                                  -122511;1;0;false;false;0;0;0;;;
                                  -122512;2;0;false;false;;;;;;
                                  -122514;3;0;false;false;63;95;191;;;
                                  -122517;3;0;false;false;;;;;;
                                  -122520;1;0;false;false;63;95;191;;;
                                  -122521;1;0;false;false;;;;;;
                                  -122522;7;0;false;false;63;95;191;;;
                                  -122529;1;0;false;false;;;;;;
                                  -122530;3;0;false;false;63;95;191;;;
                                  -122533;1;0;false;false;;;;;;
                                  -122534;10;0;false;false;63;95;191;;;
                                  -122544;1;0;false;false;;;;;;
                                  -122545;5;0;false;false;63;95;191;;;
                                  -122550;1;0;false;false;;;;;;
                                  -122551;2;0;false;false;63;95;191;;;
                                  -122553;1;0;false;false;;;;;;
                                  -122554;3;0;false;false;63;95;191;;;
                                  -122557;1;0;false;false;;;;;;
                                  -122558;4;0;false;false;63;95;191;;;
                                  -122562;1;0;false;false;;;;;;
                                  -122563;2;0;false;false;63;95;191;;;
                                  -122565;1;0;false;false;;;;;;
                                  -122566;3;0;false;false;63;95;191;;;
                                  -122569;1;0;false;false;;;;;;
                                  -122570;5;0;false;false;63;95;191;;;
                                  -122575;1;0;false;false;;;;;;
                                  -122576;6;0;false;false;63;95;191;;;
                                  -122582;3;0;false;false;;;;;;
                                  -122585;1;0;false;false;63;95;191;;;
                                  -122586;1;0;false;false;;;;;;
                                  -122587;7;0;false;false;63;95;191;;;
                                  -122594;1;0;false;false;;;;;;
                                  -122595;4;0;false;false;63;95;191;;;
                                  -122599;1;0;false;false;;;;;;
                                  -122600;2;0;false;false;63;95;191;;;
                                  -122602;1;0;false;false;;;;;;
                                  -122603;1;0;false;false;63;95;191;;;
                                  -122604;1;0;false;false;;;;;;
                                  -122605;22;0;false;false;63;95;191;;;
                                  -122627;1;0;false;false;;;;;;
                                  -122628;3;0;false;false;63;95;191;;;
                                  -122631;1;0;false;false;;;;;;
                                  -122632;4;0;false;false;63;95;191;;;
                                  -122636;1;0;false;false;;;;;;
                                  -122637;3;0;false;false;63;95;191;;;
                                  -122640;1;0;false;false;;;;;;
                                  -122641;2;0;false;false;63;95;191;;;
                                  -122643;1;0;false;false;;;;;;
                                  -122644;2;0;false;false;63;95;191;;;
                                  -122646;1;0;false;false;;;;;;
                                  -122647;2;0;false;false;63;95;191;;;
                                  -122649;1;0;false;false;;;;;;
                                  -122650;10;0;false;false;63;95;191;;;
                                  -122660;4;0;false;false;;;;;;
                                  -122664;1;0;false;false;63;95;191;;;
                                  -122665;1;0;false;false;;;;;;
                                  -122666;5;0;false;false;63;95;191;;;
                                  -122671;1;0;false;false;;;;;;
                                  -122672;3;0;false;false;63;95;191;;;
                                  -122675;1;0;false;false;;;;;;
                                  -122676;4;0;false;false;63;95;191;;;
                                  -122680;1;0;false;false;;;;;;
                                  -122681;9;0;false;false;63;95;191;;;
                                  -122690;1;0;false;false;;;;;;
                                  -122691;3;0;false;false;63;95;191;;;
                                  -122694;1;0;false;false;;;;;;
                                  -122695;3;0;false;false;63;95;191;;;
                                  -122698;1;0;false;false;;;;;;
                                  -122699;5;0;false;false;63;95;191;;;
                                  -122704;1;0;false;false;;;;;;
                                  -122705;6;0;false;false;63;95;191;;;
                                  -122711;1;0;false;false;;;;;;
                                  -122712;3;0;false;false;63;95;191;;;
                                  -122715;1;0;false;false;;;;;;
                                  -122716;2;0;false;false;63;95;191;;;
                                  -122718;1;0;false;false;;;;;;
                                  -122719;6;0;false;false;63;95;191;;;
                                  -122725;1;0;false;false;;;;;;
                                  -122726;2;0;false;false;63;95;191;;;
                                  -122728;1;0;false;false;;;;;;
                                  -122729;1;0;false;false;63;95;191;;;
                                  -122730;3;0;false;false;;;;;;
                                  -122733;1;0;false;false;63;95;191;;;
                                  -122734;1;0;false;false;;;;;;
                                  -122735;22;0;false;false;63;95;191;;;
                                  -122757;1;0;false;false;;;;;;
                                  -122758;3;0;false;false;63;95;191;;;
                                  -122761;1;0;false;false;;;;;;
                                  -122762;4;0;false;false;63;95;191;;;
                                  -122766;1;0;false;false;;;;;;
                                  -122767;3;0;false;false;63;95;191;;;
                                  -122770;1;0;false;false;;;;;;
                                  -122771;5;0;false;false;63;95;191;;;
                                  -122776;1;0;false;false;;;;;;
                                  -122777;3;0;false;false;63;95;191;;;
                                  -122780;1;0;false;false;;;;;;
                                  -122781;8;0;false;false;63;95;191;;;
                                  -122789;1;0;false;false;;;;;;
                                  -122790;9;0;false;false;63;95;191;;;
                                  -122799;1;0;false;false;;;;;;
                                  -122800;3;0;false;false;63;95;191;;;
                                  -122803;3;0;false;false;;;;;;
                                  -122806;1;0;false;false;63;95;191;;;
                                  -122807;1;0;false;false;;;;;;
                                  -122808;4;0;false;false;63;95;191;;;
                                  -122812;1;0;false;false;;;;;;
                                  -122813;10;0;false;false;63;95;191;;;
                                  -122823;1;0;false;false;;;;;;
                                  -122824;7;0;false;false;63;95;191;;;
                                  -122831;3;0;false;false;;;;;;
                                  -122834;1;0;false;false;63;95;191;;;
                                  -122835;4;0;false;false;;;;;;
                                  -122839;1;0;false;false;63;95;191;;;
                                  -122840;1;0;false;false;;;;;;
                                  -122841;7;1;false;false;127;159;191;;;
                                  -122848;5;0;false;false;63;95;191;;;
                                  -122853;1;0;false;false;;;;;;
                                  -122854;3;0;false;false;63;95;191;;;
                                  -122857;1;0;false;false;;;;;;
                                  -122858;5;0;false;false;63;95;191;;;
                                  -122863;1;0;false;false;;;;;;
                                  -122864;2;0;false;false;63;95;191;;;
                                  -122866;1;0;false;false;;;;;;
                                  -122867;3;0;false;false;63;95;191;;;
                                  -122870;1;0;false;false;;;;;;
                                  -122871;4;0;false;false;63;95;191;;;
                                  -122875;3;0;false;false;;;;;;
                                  -122878;1;0;false;false;63;95;191;;;
                                  -122879;1;0;false;false;;;;;;
                                  -122880;8;1;false;false;127;159;191;;;
                                  -122888;3;0;false;false;63;95;191;;;
                                  -122891;1;0;false;false;;;;;;
                                  -122892;10;0;false;false;63;95;191;;;
                                  -122902;1;0;false;false;;;;;;
                                  -122903;5;0;false;false;63;95;191;;;
                                  -122908;1;0;false;false;;;;;;
                                  -122909;2;0;false;false;63;95;191;;;
                                  -122911;1;0;false;false;;;;;;
                                  -122912;3;0;false;false;63;95;191;;;
                                  -122915;1;0;false;false;;;;;;
                                  -122916;4;0;false;false;63;95;191;;;
                                  -122920;1;0;false;false;;;;;;
                                  -122921;2;0;false;false;63;95;191;;;
                                  -122923;1;0;false;false;;;;;;
                                  -122924;3;0;false;false;63;95;191;;;
                                  -122927;1;0;false;false;;;;;;
                                  -122928;5;0;false;false;63;95;191;;;
                                  -122933;1;0;false;false;;;;;;
                                  -122934;6;0;false;false;63;95;191;;;
                                  -122940;3;0;false;false;;;;;;
                                  -122943;1;0;false;false;63;95;191;;;
                                  -122944;4;0;false;false;;;;;;
                                  -122948;1;0;false;false;63;95;191;;;
                                  -122949;1;0;false;false;;;;;;
                                  -122950;11;1;false;false;127;159;191;;;
                                  -122961;12;0;false;false;63;95;191;;;
                                  -122973;1;0;false;false;;;;;;
                                  -122974;4;0;false;false;127;127;159;;;
                                  -122978;3;0;false;false;;;;;;
                                  -122981;1;0;false;false;63;95;191;;;
                                  -122982;4;0;false;false;;;;;;
                                  -122986;4;0;false;false;127;127;159;;;
                                  -122990;21;0;false;false;63;95;191;;;
                                  -123011;1;0;false;false;;;;;;
                                  -123012;1;0;false;false;127;127;159;;;
                                  -123013;1;0;false;false;;;;;;
                                  -123014;2;0;false;false;63;95;191;;;
                                  -123016;1;0;false;false;;;;;;
                                  -123017;3;0;false;false;63;95;191;;;
                                  -123020;1;0;false;false;;;;;;
                                  -123021;8;0;false;false;63;95;191;;;
                                  -123029;1;0;false;false;;;;;;
                                  -123030;3;0;false;false;63;95;191;;;
                                  -123033;1;0;false;false;;;;;;
                                  -123034;4;0;false;false;63;95;191;;;
                                  -123038;1;0;false;false;;;;;;
                                  -123039;8;0;false;false;63;95;191;;;
                                  -123047;5;0;false;false;127;127;159;;;
                                  -123052;3;0;false;false;;;;;;
                                  -123055;1;0;false;false;63;95;191;;;
                                  -123056;4;0;false;false;;;;;;
                                  -123060;4;0;false;false;127;127;159;;;
                                  -123064;27;0;false;false;63;95;191;;;
                                  -123091;1;0;false;false;;;;;;
                                  -123092;1;0;false;false;127;127;159;;;
                                  -123093;1;0;false;false;;;;;;
                                  -123094;2;0;false;false;63;95;191;;;
                                  -123096;1;0;false;false;;;;;;
                                  -123097;3;0;false;false;63;95;191;;;
                                  -123100;1;0;false;false;;;;;;
                                  -123101;6;0;false;false;63;95;191;;;
                                  -123107;1;0;false;false;;;;;;
                                  -123108;4;0;false;false;63;95;191;;;
                                  -123112;1;0;false;false;;;;;;
                                  -123113;3;0;false;false;63;95;191;;;
                                  -123116;1;0;false;false;;;;;;
                                  -123117;6;0;false;false;63;95;191;;;
                                  -123123;1;0;false;false;;;;;;
                                  -123124;4;0;false;false;63;95;191;;;
                                  -123128;1;0;false;false;;;;;;
                                  -123129;7;0;false;false;63;95;191;;;
                                  -123136;1;0;false;false;;;;;;
                                  -123137;3;0;false;false;63;95;191;;;
                                  -123140;1;0;false;false;;;;;;
                                  -123141;8;0;false;false;63;95;191;;;
                                  -123149;5;0;false;false;127;127;159;;;
                                  -123154;3;0;false;false;;;;;;
                                  -123157;1;0;false;false;63;95;191;;;
                                  -123158;1;0;false;false;;;;;;
                                  -123159;5;0;false;false;127;127;159;;;
                                  -123164;3;0;false;false;;;;;;
                                  -123167;1;0;false;false;63;95;191;;;
                                  -123168;1;0;false;false;;;;;;
                                  -123169;11;1;false;false;127;159;191;;;
                                  -123180;24;0;false;false;63;95;191;;;
                                  -123204;1;0;false;false;;;;;;
                                  -123205;4;0;false;false;127;127;159;;;
                                  -123209;3;0;false;false;;;;;;
                                  -123212;1;0;false;false;63;95;191;;;
                                  -123213;4;0;false;false;;;;;;
                                  -123217;4;0;false;false;127;127;159;;;
                                  -123221;22;0;false;false;63;95;191;;;
                                  -123243;1;0;false;false;;;;;;
                                  -123244;4;0;false;false;63;95;191;;;
                                  -123248;1;0;false;false;;;;;;
                                  -123249;3;0;false;false;63;95;191;;;
                                  -123252;1;0;false;false;;;;;;
                                  -123253;5;0;false;false;63;95;191;;;
                                  -123258;1;0;false;false;;;;;;
                                  -123259;2;0;false;false;63;95;191;;;
                                  -123261;1;0;false;false;;;;;;
                                  -123262;7;0;false;false;63;95;191;;;
                                  -123269;5;0;false;false;127;127;159;;;
                                  -123274;3;0;false;false;;;;;;
                                  -123277;1;0;false;false;63;95;191;;;
                                  -123278;1;0;false;false;;;;;;
                                  -123279;5;0;false;false;127;127;159;;;
                                  -123284;3;0;false;false;;;;;;
                                  -123287;2;0;false;false;63;95;191;;;
                                  -123289;2;0;false;false;;;;;;
                                  -123291;6;1;false;false;127;0;85;;;
                                  -123297;1;0;false;false;;;;;;
                                  -123298;5;0;false;false;0;0;0;;;
                                  -123303;1;0;false;false;;;;;;
                                  -123304;18;0;false;false;0;0;0;;;
                                  -123322;3;1;false;false;127;0;85;;;
                                  -123325;1;0;false;false;;;;;;
                                  -123326;6;0;false;false;0;0;0;;;
                                  -123332;1;0;false;false;;;;;;
                                  -123333;1;0;false;false;0;0;0;;;
                                  -123334;3;0;false;false;;;;;;
                                  -123337;14;0;false;false;0;0;0;;;
                                  -123351;3;0;false;false;;;;;;
                                  -123354;5;0;false;false;0;0;0;;;
                                  -123359;1;0;false;false;;;;;;
                                  -123360;14;0;false;false;0;0;0;;;
                                  -123374;1;0;false;false;;;;;;
                                  -123375;1;0;false;false;0;0;0;;;
                                  -123376;1;0;false;false;;;;;;
                                  -123377;4;1;false;false;127;0;85;;;
                                  -123381;1;0;false;false;0;0;0;;;
                                  -123382;6;0;false;false;;;;;;
                                  -123388;2;1;false;false;127;0;85;;;
                                  -123390;1;0;false;false;;;;;;
                                  -123391;6;0;false;false;0;0;0;;;
                                  -123397;1;0;false;false;;;;;;
                                  -123398;1;0;false;false;0;0;0;;;
                                  -123399;1;0;false;false;;;;;;
                                  -123400;1;0;false;false;0;0;0;;;
                                  -123401;1;0;false;false;;;;;;
                                  -123402;2;0;false;false;0;0;0;;;
                                  -123404;1;0;false;false;;;;;;
                                  -123405;5;0;false;false;0;0;0;;;
                                  -123410;1;0;false;false;;;;;;
                                  -123411;1;0;false;false;0;0;0;;;
                                  -123412;1;0;false;false;;;;;;
                                  -123413;30;0;false;false;0;0;0;;;
                                  -123443;1;0;false;false;;;;;;
                                  -123444;1;0;false;false;0;0;0;;;
                                  -123445;4;0;false;false;;;;;;
                                  -123449;38;0;false;false;0;0;0;;;
                                  -123487;3;0;false;false;;;;;;
                                  -123490;1;0;false;false;0;0;0;;;
                                  -123491;3;0;false;false;;;;;;
                                  -123494;2;1;false;false;127;0;85;;;
                                  -123496;1;0;false;false;;;;;;
                                  -123497;21;0;false;false;0;0;0;;;
                                  -123518;1;0;false;false;;;;;;
                                  -123519;1;0;false;false;0;0;0;;;
                                  -123520;4;0;false;false;;;;;;
                                  -123524;14;0;false;false;0;0;0;;;
                                  -123538;1;0;false;false;;;;;;
                                  -123539;1;0;false;false;0;0;0;;;
                                  -123540;1;0;false;false;;;;;;
                                  -123541;43;0;false;false;0;0;0;;;
                                  -123584;3;0;false;false;;;;;;
                                  -123587;1;0;false;false;0;0;0;;;
                                  -123588;3;0;false;false;;;;;;
                                  -123591;6;1;false;false;127;0;85;;;
                                  -123597;1;0;false;false;;;;;;
                                  -123598;15;0;false;false;0;0;0;;;
                                  -123613;2;0;false;false;;;;;;
                                  -123615;1;0;false;false;0;0;0;;;
                                  -123616;2;0;false;false;;;;;;
                                  -123618;3;0;false;false;63;95;191;;;
                                  -123621;3;0;false;false;;;;;;
                                  -123624;1;0;false;false;63;95;191;;;
                                  -123625;1;0;false;false;;;;;;
                                  -123626;7;0;false;false;63;95;191;;;
                                  -123633;1;0;false;false;;;;;;
                                  -123634;3;0;false;false;63;95;191;;;
                                  -123637;1;0;false;false;;;;;;
                                  -123638;4;0;false;false;63;95;191;;;
                                  -123642;1;0;false;false;;;;;;
                                  -123643;10;0;false;false;63;95;191;;;
                                  -123653;1;0;false;false;;;;;;
                                  -123654;4;0;false;false;63;95;191;;;
                                  -123658;1;0;false;false;;;;;;
                                  -123659;3;0;false;false;63;95;191;;;
                                  -123662;1;0;false;false;;;;;;
                                  -123663;3;0;false;false;63;95;191;;;
                                  -123666;1;0;false;false;;;;;;
                                  -123667;5;0;false;false;63;95;191;;;
                                  -123672;1;0;false;false;;;;;;
                                  -123673;4;0;false;false;63;95;191;;;
                                  -123677;1;0;false;false;;;;;;
                                  -123678;2;0;false;false;63;95;191;;;
                                  -123680;1;0;false;false;;;;;;
                                  -123681;4;0;false;false;63;95;191;;;
                                  -123685;1;0;false;false;;;;;;
                                  -123686;2;0;false;false;63;95;191;;;
                                  -123688;4;0;false;false;;;;;;
                                  -123692;1;0;false;false;63;95;191;;;
                                  -123693;1;0;false;false;;;;;;
                                  -123694;5;0;false;false;63;95;191;;;
                                  -123699;1;0;false;false;;;;;;
                                  -123700;2;0;false;false;63;95;191;;;
                                  -123702;1;0;false;false;;;;;;
                                  -123703;5;0;false;false;63;95;191;;;
                                  -123708;3;0;false;false;;;;;;
                                  -123711;1;0;false;false;63;95;191;;;
                                  -123712;1;0;false;false;;;;;;
                                  -123713;3;0;false;false;127;127;159;;;
                                  -123716;3;0;false;false;;;;;;
                                  -123719;1;0;false;false;63;95;191;;;
                                  -123720;1;0;false;false;;;;;;
                                  -123721;7;1;false;false;127;159;191;;;
                                  -123728;10;0;false;false;63;95;191;;;
                                  -123738;1;0;false;false;;;;;;
                                  -123739;6;0;false;false;63;95;191;;;
                                  -123745;1;0;false;false;;;;;;
                                  -123746;2;0;false;false;63;95;191;;;
                                  -123748;1;0;false;false;;;;;;
                                  -123749;3;0;false;false;63;95;191;;;
                                  -123752;1;0;false;false;;;;;;
                                  -123753;4;0;false;false;63;95;191;;;
                                  -123757;1;0;false;false;;;;;;
                                  -123758;5;0;false;false;63;95;191;;;
                                  -123763;1;0;false;false;;;;;;
                                  -123764;8;0;false;false;63;95;191;;;
                                  -123772;1;0;false;false;;;;;;
                                  -123773;2;0;false;false;63;95;191;;;
                                  -123775;1;0;false;false;;;;;;
                                  -123776;3;0;false;false;63;95;191;;;
                                  -123779;1;0;false;false;;;;;;
                                  -123780;5;0;false;false;63;95;191;;;
                                  -123785;3;0;false;false;;;;;;
                                  -123788;1;0;false;false;63;95;191;;;
                                  -123789;2;0;false;false;;;;;;
                                  -123791;2;0;false;false;63;95;191;;;
                                  -123793;1;0;false;false;;;;;;
                                  -123794;3;0;false;false;63;95;191;;;
                                  -123797;1;0;false;false;;;;;;
                                  -123798;8;0;false;false;63;95;191;;;
                                  -123806;3;0;false;false;;;;;;
                                  -123809;1;0;false;false;63;95;191;;;
                                  -123810;1;0;false;false;;;;;;
                                  -123811;7;1;false;false;127;159;191;;;
                                  -123818;4;0;false;false;63;95;191;;;
                                  -123822;1;0;false;false;;;;;;
                                  -123823;4;0;false;false;63;95;191;;;
                                  -123827;1;0;false;false;;;;;;
                                  -123828;2;0;false;false;63;95;191;;;
                                  -123830;1;0;false;false;;;;;;
                                  -123831;3;0;false;false;63;95;191;;;
                                  -123834;1;0;false;false;;;;;;
                                  -123835;4;0;false;false;63;95;191;;;
                                  -123839;1;0;false;false;;;;;;
                                  -123840;10;0;false;false;63;95;191;;;
                                  -123850;1;0;false;false;;;;;;
                                  -123851;4;0;false;false;63;95;191;;;
                                  -123855;1;0;false;false;;;;;;
                                  -123856;3;0;false;false;63;95;191;;;
                                  -123859;3;0;false;false;;;;;;
                                  -123862;1;0;false;false;63;95;191;;;
                                  -123863;1;0;false;false;;;;;;
                                  -123864;8;1;false;false;127;159;191;;;
                                  -123872;4;0;false;false;63;95;191;;;
                                  -123876;1;0;false;false;;;;;;
                                  -123877;10;0;false;false;63;95;191;;;
                                  -123887;1;0;false;false;;;;;;
                                  -123888;4;0;false;false;63;95;191;;;
                                  -123892;1;0;false;false;;;;;;
                                  -123893;3;0;false;false;63;95;191;;;
                                  -123896;1;0;false;false;;;;;;
                                  -123897;3;0;false;false;63;95;191;;;
                                  -123900;1;0;false;false;;;;;;
                                  -123901;5;0;false;false;63;95;191;;;
                                  -123906;1;0;false;false;;;;;;
                                  -123907;5;0;false;false;63;95;191;;;
                                  -123912;3;0;false;false;;;;;;
                                  -123915;2;0;false;false;63;95;191;;;
                                  -123917;2;0;false;false;;;;;;
                                  -123919;15;0;false;false;0;0;0;;;
                                  -123934;1;0;false;false;;;;;;
                                  -123935;22;0;false;false;0;0;0;;;
                                  -123957;3;1;false;false;127;0;85;;;
                                  -123960;1;0;false;false;;;;;;
                                  -123961;11;0;false;false;0;0;0;;;
                                  -123972;1;0;false;false;;;;;;
                                  -123973;6;0;false;false;0;0;0;;;
                                  -123979;1;0;false;false;;;;;;
                                  -123980;5;0;false;false;0;0;0;;;
                                  -123985;1;0;false;false;;;;;;
                                  -123986;1;0;false;false;0;0;0;;;
                                  -123987;3;0;false;false;;;;;;
                                  -123990;6;1;false;false;127;0;85;;;
                                  -123996;1;0;false;false;;;;;;
                                  -123997;32;0;false;false;0;0;0;;;
                                  -124029;1;0;false;false;;;;;;
                                  -124030;11;0;false;false;0;0;0;;;
                                  -124041;1;0;false;false;;;;;;
                                  -124042;6;0;false;false;0;0;0;;;
                                  -124048;2;0;false;false;;;;;;
                                  -124050;1;0;false;false;0;0;0;;;
                                  -124051;2;0;false;false;;;;;;
                                  -124053;3;0;false;false;63;95;191;;;
                                  -124056;4;0;false;false;;;;;;
                                  -124060;1;0;false;false;63;95;191;;;
                                  -124061;1;0;false;false;;;;;;
                                  -124062;4;0;false;false;63;95;191;;;
                                  -124066;1;0;false;false;;;;;;
                                  -124067;3;0;false;false;63;95;191;;;
                                  -124070;1;0;false;false;;;;;;
                                  -124071;6;0;false;false;63;95;191;;;
                                  -124077;1;0;false;false;;;;;;
                                  -124078;2;0;false;false;63;95;191;;;
                                  -124080;1;0;false;false;;;;;;
                                  -124081;4;0;false;false;63;95;191;;;
                                  -124085;1;0;false;false;;;;;;
                                  -124086;6;0;false;false;63;95;191;;;
                                  -124092;3;0;false;false;;;;;;
                                  -124095;1;0;false;false;63;95;191;;;
                                  -124096;1;0;false;false;;;;;;
                                  -124097;3;0;false;false;127;127;159;;;
                                  -124100;3;0;false;false;;;;;;
                                  -124103;1;0;false;false;63;95;191;;;
                                  -124104;3;0;false;false;;;;;;
                                  -124107;1;0;false;false;63;95;191;;;
                                  -124108;1;0;false;false;;;;;;
                                  -124109;8;1;false;false;127;159;191;;;
                                  -124117;3;0;false;false;63;95;191;;;
                                  -124120;1;0;false;false;;;;;;
                                  -124121;6;0;false;false;63;95;191;;;
                                  -124127;1;0;false;false;;;;;;
                                  -124128;2;0;false;false;63;95;191;;;
                                  -124130;1;0;false;false;;;;;;
                                  -124131;5;0;false;false;63;95;191;;;
                                  -124136;1;0;false;false;;;;;;
                                  -124137;2;0;false;false;63;95;191;;;
                                  -124139;1;0;false;false;;;;;;
                                  -124140;3;0;false;false;63;95;191;;;
                                  -124143;1;0;false;false;;;;;;
                                  -124144;6;0;false;false;63;95;191;;;
                                  -124150;3;0;false;false;;;;;;
                                  -124153;1;0;false;false;63;95;191;;;
                                  -124154;1;0;false;false;;;;;;
                                  -124155;11;1;false;false;127;159;191;;;
                                  -124166;12;0;false;false;63;95;191;;;
                                  -124178;1;0;false;false;;;;;;
                                  -124179;4;0;false;false;127;127;159;;;
                                  -124183;3;0;false;false;;;;;;
                                  -124186;1;0;false;false;63;95;191;;;
                                  -124187;4;0;false;false;;;;;;
                                  -124191;4;0;false;false;127;127;159;;;
                                  -124195;21;0;false;false;63;95;191;;;
                                  -124216;1;0;false;false;;;;;;
                                  -124217;1;0;false;false;127;127;159;;;
                                  -124218;1;0;false;false;;;;;;
                                  -124219;2;0;false;false;63;95;191;;;
                                  -124221;1;0;false;false;;;;;;
                                  -124222;3;0;false;false;63;95;191;;;
                                  -124225;1;0;false;false;;;;;;
                                  -124226;8;0;false;false;63;95;191;;;
                                  -124234;1;0;false;false;;;;;;
                                  -124235;3;0;false;false;63;95;191;;;
                                  -124238;1;0;false;false;;;;;;
                                  -124239;4;0;false;false;63;95;191;;;
                                  -124243;1;0;false;false;;;;;;
                                  -124244;8;0;false;false;63;95;191;;;
                                  -124252;5;0;false;false;127;127;159;;;
                                  -124257;3;0;false;false;;;;;;
                                  -124260;1;0;false;false;63;95;191;;;
                                  -124261;4;0;false;false;;;;;;
                                  -124265;4;0;false;false;127;127;159;;;
                                  -124269;27;0;false;false;63;95;191;;;
                                  -124296;1;0;false;false;;;;;;
                                  -124297;1;0;false;false;127;127;159;;;
                                  -124298;1;0;false;false;;;;;;
                                  -124299;2;0;false;false;63;95;191;;;
                                  -124301;1;0;false;false;;;;;;
                                  -124302;3;0;false;false;63;95;191;;;
                                  -124305;1;0;false;false;;;;;;
                                  -124306;6;0;false;false;63;95;191;;;
                                  -124312;1;0;false;false;;;;;;
                                  -124313;4;0;false;false;63;95;191;;;
                                  -124317;1;0;false;false;;;;;;
                                  -124318;3;0;false;false;63;95;191;;;
                                  -124321;1;0;false;false;;;;;;
                                  -124322;6;0;false;false;63;95;191;;;
                                  -124328;1;0;false;false;;;;;;
                                  -124329;4;0;false;false;63;95;191;;;
                                  -124333;1;0;false;false;;;;;;
                                  -124334;7;0;false;false;63;95;191;;;
                                  -124341;1;0;false;false;;;;;;
                                  -124342;3;0;false;false;63;95;191;;;
                                  -124345;1;0;false;false;;;;;;
                                  -124346;8;0;false;false;63;95;191;;;
                                  -124354;5;0;false;false;127;127;159;;;
                                  -124359;3;0;false;false;;;;;;
                                  -124362;1;0;false;false;63;95;191;;;
                                  -124363;1;0;false;false;;;;;;
                                  -124364;5;0;false;false;127;127;159;;;
                                  -124369;3;0;false;false;;;;;;
                                  -124372;2;0;false;false;63;95;191;;;
                                  -124374;2;0;false;false;;;;;;
                                  -124376;6;1;false;false;127;0;85;;;
                                  -124382;1;0;false;false;;;;;;
                                  -124383;3;1;false;false;127;0;85;;;
                                  -124386;1;0;false;false;;;;;;
                                  -124387;14;0;false;false;0;0;0;;;
                                  -124401;1;0;false;false;;;;;;
                                  -124402;1;0;false;false;0;0;0;;;
                                  -124403;3;0;false;false;;;;;;
                                  -124406;14;0;false;false;0;0;0;;;
                                  -124420;3;0;false;false;;;;;;
                                  -124423;6;1;false;false;127;0;85;;;
                                  -124429;1;0;false;false;;;;;;
                                  -124430;31;0;false;false;0;0;0;;;
                                  -124461;1;0;false;false;;;;;;
                                  -124462;1;0;false;false;0;0;0;;;
                                  -124463;1;0;false;false;;;;;;
                                  -124464;2;0;false;false;0;0;0;;;
                                  -124466;2;0;false;false;;;;;;
                                  -124468;1;0;false;false;0;0;0;;;
                                  -124469;2;0;false;false;;;;;;
                                  -124471;3;0;false;false;63;95;191;;;
                                  -124474;3;0;false;false;;;;;;
                                  -124477;1;0;false;false;63;95;191;;;
                                  -124478;1;0;false;false;;;;;;
                                  -124479;7;0;false;false;63;95;191;;;
                                  -124486;1;0;false;false;;;;;;
                                  -124487;3;0;false;false;63;95;191;;;
                                  -124490;1;0;false;false;;;;;;
                                  -124491;6;0;false;false;63;95;191;;;
                                  -124497;1;0;false;false;;;;;;
                                  -124498;2;0;false;false;63;95;191;;;
                                  -124500;1;0;false;false;;;;;;
                                  -124501;5;0;false;false;63;95;191;;;
                                  -124506;1;0;false;false;;;;;;
                                  -124507;4;0;false;false;63;95;191;;;
                                  -124511;1;0;false;false;;;;;;
                                  -124512;3;0;false;false;63;95;191;;;
                                  -124515;1;0;false;false;;;;;;
                                  -124516;2;0;false;false;63;95;191;;;
                                  -124518;1;0;false;false;;;;;;
                                  -124519;10;0;false;false;63;95;191;;;
                                  -124529;1;0;false;false;;;;;;
                                  -124530;9;0;false;false;63;95;191;;;
                                  -124539;1;0;false;false;;;;;;
                                  -124540;2;0;false;false;63;95;191;;;
                                  -124542;1;0;false;false;;;;;;
                                  -124543;3;0;false;false;63;95;191;;;
                                  -124546;4;0;false;false;;;;;;
                                  -124550;1;0;false;false;63;95;191;;;
                                  -124551;1;0;false;false;;;;;;
                                  -124552;6;0;false;false;63;95;191;;;
                                  -124558;1;0;false;false;;;;;;
                                  -124559;6;0;false;false;63;95;191;;;
                                  -124565;1;0;false;false;;;;;;
                                  -124566;5;0;false;false;63;95;191;;;
                                  -124571;3;0;false;false;;;;;;
                                  -124574;1;0;false;false;63;95;191;;;
                                  -124575;1;0;false;false;;;;;;
                                  -124576;3;0;false;false;127;127;159;;;
                                  -124579;3;0;false;false;;;;;;
                                  -124582;1;0;false;false;63;95;191;;;
                                  -124583;3;0;false;false;;;;;;
                                  -124586;1;0;false;false;63;95;191;;;
                                  -124587;1;0;false;false;;;;;;
                                  -124588;8;1;false;false;127;159;191;;;
                                  -124596;6;0;false;false;63;95;191;;;
                                  -124602;1;0;false;false;;;;;;
                                  -124603;2;0;false;false;63;95;191;;;
                                  -124605;1;0;false;false;;;;;;
                                  -124606;5;0;false;false;63;95;191;;;
                                  -124611;1;0;false;false;;;;;;
                                  -124612;4;0;false;false;63;95;191;;;
                                  -124616;1;0;false;false;;;;;;
                                  -124617;3;0;false;false;63;95;191;;;
                                  -124620;1;0;false;false;;;;;;
                                  -124621;2;0;false;false;63;95;191;;;
                                  -124623;1;0;false;false;;;;;;
                                  -124624;10;0;false;false;63;95;191;;;
                                  -124634;1;0;false;false;;;;;;
                                  -124635;9;0;false;false;63;95;191;;;
                                  -124644;1;0;false;false;;;;;;
                                  -124645;2;0;false;false;63;95;191;;;
                                  -124647;1;0;false;false;;;;;;
                                  -124648;3;0;false;false;63;95;191;;;
                                  -124651;1;0;false;false;;;;;;
                                  -124652;6;0;false;false;63;95;191;;;
                                  -124658;4;0;false;false;;;;;;
                                  -124662;1;0;false;false;63;95;191;;;
                                  -124663;2;0;false;false;;;;;;
                                  -124665;6;0;false;false;63;95;191;;;
                                  -124671;1;0;false;false;;;;;;
                                  -124672;5;0;false;false;63;95;191;;;
                                  -124677;3;0;false;false;;;;;;
                                  -124680;2;0;false;false;63;95;191;;;
                                  -124682;2;0;false;false;;;;;;
                                  -124684;3;1;false;false;127;0;85;;;
                                  -124687;1;0;false;false;;;;;;
                                  -124688;19;0;false;false;0;0;0;;;
                                  -124707;1;0;false;false;;;;;;
                                  -124708;1;0;false;false;0;0;0;;;
                                  -124709;3;0;false;false;;;;;;
                                  -124712;3;1;false;false;127;0;85;;;
                                  -124715;1;0;false;false;;;;;;
                                  -124716;10;0;false;false;0;0;0;;;
                                  -124726;6;0;false;false;;;;;;
                                  -124732;2;1;false;false;127;0;85;;;
                                  -124734;1;0;false;false;;;;;;
                                  -124735;11;0;false;false;0;0;0;;;
                                  -124746;1;0;false;false;;;;;;
                                  -124747;2;0;false;false;0;0;0;;;
                                  -124749;1;0;false;false;;;;;;
                                  -124750;2;0;false;false;0;0;0;;;
                                  -124752;1;0;false;false;;;;;;
                                  -124753;1;0;false;false;0;0;0;;;
                                  -124754;4;0;false;false;;;;;;
                                  -124758;9;0;false;false;0;0;0;;;
                                  -124767;1;0;false;false;;;;;;
                                  -124768;1;0;false;false;0;0;0;;;
                                  -124769;1;0;false;false;;;;;;
                                  -124770;22;0;false;false;0;0;0;;;
                                  -124792;1;0;false;false;;;;;;
                                  -124793;1;0;false;false;0;0;0;;;
                                  -124794;1;0;false;false;;;;;;
                                  -124795;11;0;false;false;0;0;0;;;
                                  -124806;3;0;false;false;;;;;;
                                  -124809;1;0;false;false;0;0;0;;;
                                  -124810;3;0;false;false;;;;;;
                                  -124813;4;1;false;false;127;0;85;;;
                                  -124817;1;0;false;false;;;;;;
                                  -124818;1;0;false;false;0;0;0;;;
                                  -124819;4;0;false;false;;;;;;
                                  -124823;9;0;false;false;0;0;0;;;
                                  -124832;1;0;false;false;;;;;;
                                  -124833;1;0;false;false;0;0;0;;;
                                  -124834;1;0;false;false;;;;;;
                                  -124835;2;0;false;false;0;0;0;;;
                                  -124837;3;0;false;false;;;;;;
                                  -124840;1;0;false;false;0;0;0;;;
                                  -124841;3;0;false;false;;;;;;
                                  -124844;6;1;false;false;127;0;85;;;
                                  -124850;1;0;false;false;;;;;;
                                  -124851;10;0;false;false;0;0;0;;;
                                  -124861;2;0;false;false;;;;;;
                                  -124863;1;0;false;false;0;0;0;;;
                                  -124864;2;0;false;false;;;;;;
                                  -124866;3;0;false;false;63;95;191;;;
                                  -124869;3;0;false;false;;;;;;
                                  -124872;1;0;false;false;63;95;191;;;
                                  -124873;1;0;false;false;;;;;;
                                  -124874;7;0;false;false;63;95;191;;;
                                  -124881;1;0;false;false;;;;;;
                                  -124882;3;0;false;false;63;95;191;;;
                                  -124885;1;0;false;false;;;;;;
                                  -124886;4;0;false;false;63;95;191;;;
                                  -124890;1;0;false;false;;;;;;
                                  -124891;2;0;false;false;63;95;191;;;
                                  -124893;1;0;false;false;;;;;;
                                  -124894;3;0;false;false;63;95;191;;;
                                  -124897;1;0;false;false;;;;;;
                                  -124898;9;0;false;false;63;95;191;;;
                                  -124907;1;0;false;false;;;;;;
                                  -124908;6;0;false;false;63;95;191;;;
                                  -124914;1;0;false;false;;;;;;
                                  -124915;2;0;false;false;63;95;191;;;
                                  -124917;1;0;false;false;;;;;;
                                  -124918;3;0;false;false;63;95;191;;;
                                  -124921;1;0;false;false;;;;;;
                                  -124922;4;0;false;false;63;95;191;;;
                                  -124926;3;0;false;false;;;;;;
                                  -124929;1;0;false;false;63;95;191;;;
                                  -124930;1;0;false;false;;;;;;
                                  -124931;5;0;false;false;63;95;191;;;
                                  -124936;1;0;false;false;;;;;;
                                  -124937;1;0;false;false;63;95;191;;;
                                  -124938;1;0;false;false;;;;;;
                                  -124939;4;0;false;false;63;95;191;;;
                                  -124943;1;0;false;false;;;;;;
                                  -124944;6;0;false;false;63;95;191;;;
                                  -124950;1;0;false;false;;;;;;
                                  -124951;4;0;false;false;63;95;191;;;
                                  -124955;1;0;false;false;;;;;;
                                  -124956;14;0;false;false;63;95;191;;;
                                  -124970;1;0;false;false;;;;;;
                                  -124971;2;0;false;false;63;95;191;;;
                                  -124973;1;0;false;false;;;;;;
                                  -124974;4;0;false;false;63;95;191;;;
                                  -124978;1;0;false;false;;;;;;
                                  -124979;31;0;false;false;63;95;191;;;
                                  -125010;3;0;false;false;;;;;;
                                  -125013;1;0;false;false;63;95;191;;;
                                  -125014;1;0;false;false;;;;;;
                                  -125015;7;0;false;false;63;95;191;;;
                                  -125022;1;0;false;false;;;;;;
                                  -125023;3;0;false;false;63;95;191;;;
                                  -125026;1;0;false;false;;;;;;
                                  -125027;4;0;false;false;63;95;191;;;
                                  -125031;1;0;false;false;;;;;;
                                  -125032;2;0;false;false;63;95;191;;;
                                  -125034;1;0;false;false;;;;;;
                                  -125035;3;0;false;false;63;95;191;;;
                                  -125038;1;0;false;false;;;;;;
                                  -125039;6;0;false;false;63;95;191;;;
                                  -125045;1;0;false;false;;;;;;
                                  -125046;9;0;false;false;63;95;191;;;
                                  -125055;3;0;false;false;;;;;;
                                  -125058;1;0;false;false;63;95;191;;;
                                  -125059;3;0;false;false;;;;;;
                                  -125062;1;0;false;false;63;95;191;;;
                                  -125063;1;0;false;false;;;;;;
                                  -125064;7;1;false;false;127;159;191;;;
                                  -125071;6;0;false;false;63;95;191;;;
                                  -125077;1;0;false;false;;;;;;
                                  -125078;6;0;false;false;63;95;191;;;
                                  -125084;1;0;false;false;;;;;;
                                  -125085;8;0;false;false;63;95;191;;;
                                  -125093;1;0;false;false;;;;;;
                                  -125094;2;0;false;false;63;95;191;;;
                                  -125096;1;0;false;false;;;;;;
                                  -125097;3;0;false;false;63;95;191;;;
                                  -125100;1;0;false;false;;;;;;
                                  -125101;5;0;false;false;63;95;191;;;
                                  -125106;1;0;false;false;;;;;;
                                  -125107;2;0;false;false;63;95;191;;;
                                  -125109;1;0;false;false;;;;;;
                                  -125110;3;0;false;false;63;95;191;;;
                                  -125113;1;0;false;false;;;;;;
                                  -125114;8;0;false;false;63;95;191;;;
                                  -125122;4;0;false;false;;;;;;
                                  -125126;1;0;false;false;63;95;191;;;
                                  -125127;2;0;false;false;;;;;;
                                  -125129;1;0;false;false;63;95;191;;;
                                  -125130;1;0;false;false;;;;;;
                                  -125131;29;0;false;false;63;95;191;;;
                                  -125160;1;0;false;false;;;;;;
                                  -125161;1;0;false;false;63;95;191;;;
                                  -125162;1;0;false;false;;;;;;
                                  -125163;8;1;false;false;127;159;191;;;
                                  -125171;4;0;false;false;63;95;191;;;
                                  -125175;1;0;false;false;;;;;;
                                  -125176;2;0;false;false;63;95;191;;;
                                  -125178;1;0;false;false;;;;;;
                                  -125179;3;0;false;false;63;95;191;;;
                                  -125182;1;0;false;false;;;;;;
                                  -125183;9;0;false;false;63;95;191;;;
                                  -125192;1;0;false;false;;;;;;
                                  -125193;6;0;false;false;63;95;191;;;
                                  -125199;1;0;false;false;;;;;;
                                  -125200;2;0;false;false;63;95;191;;;
                                  -125202;1;0;false;false;;;;;;
                                  -125203;3;0;false;false;63;95;191;;;
                                  -125206;1;0;false;false;;;;;;
                                  -125207;4;0;false;false;63;95;191;;;
                                  -125211;3;0;false;false;;;;;;
                                  -125214;1;0;false;false;63;95;191;;;
                                  -125215;1;0;false;false;;;;;;
                                  -125216;11;1;false;false;127;159;191;;;
                                  -125227;12;0;false;false;63;95;191;;;
                                  -125239;1;0;false;false;;;;;;
                                  -125240;4;0;false;false;127;127;159;;;
                                  -125244;3;0;false;false;;;;;;
                                  -125247;1;0;false;false;63;95;191;;;
                                  -125248;4;0;false;false;;;;;;
                                  -125252;4;0;false;false;127;127;159;;;
                                  -125256;21;0;false;false;63;95;191;;;
                                  -125277;1;0;false;false;;;;;;
                                  -125278;1;0;false;false;127;127;159;;;
                                  -125279;1;0;false;false;;;;;;
                                  -125280;2;0;false;false;63;95;191;;;
                                  -125282;1;0;false;false;;;;;;
                                  -125283;3;0;false;false;63;95;191;;;
                                  -125286;1;0;false;false;;;;;;
                                  -125287;8;0;false;false;63;95;191;;;
                                  -125295;1;0;false;false;;;;;;
                                  -125296;3;0;false;false;63;95;191;;;
                                  -125299;1;0;false;false;;;;;;
                                  -125300;4;0;false;false;63;95;191;;;
                                  -125304;1;0;false;false;;;;;;
                                  -125305;8;0;false;false;63;95;191;;;
                                  -125313;5;0;false;false;127;127;159;;;
                                  -125318;3;0;false;false;;;;;;
                                  -125321;1;0;false;false;63;95;191;;;
                                  -125322;4;0;false;false;;;;;;
                                  -125326;4;0;false;false;127;127;159;;;
                                  -125330;27;0;false;false;63;95;191;;;
                                  -125357;1;0;false;false;;;;;;
                                  -125358;1;0;false;false;127;127;159;;;
                                  -125359;1;0;false;false;;;;;;
                                  -125360;2;0;false;false;63;95;191;;;
                                  -125362;1;0;false;false;;;;;;
                                  -125363;3;0;false;false;63;95;191;;;
                                  -125366;1;0;false;false;;;;;;
                                  -125367;6;0;false;false;63;95;191;;;
                                  -125373;1;0;false;false;;;;;;
                                  -125374;4;0;false;false;63;95;191;;;
                                  -125378;1;0;false;false;;;;;;
                                  -125379;3;0;false;false;63;95;191;;;
                                  -125382;1;0;false;false;;;;;;
                                  -125383;6;0;false;false;63;95;191;;;
                                  -125389;1;0;false;false;;;;;;
                                  -125390;4;0;false;false;63;95;191;;;
                                  -125394;1;0;false;false;;;;;;
                                  -125395;7;0;false;false;63;95;191;;;
                                  -125402;1;0;false;false;;;;;;
                                  -125403;3;0;false;false;63;95;191;;;
                                  -125406;1;0;false;false;;;;;;
                                  -125407;8;0;false;false;63;95;191;;;
                                  -125415;5;0;false;false;127;127;159;;;
                                  -125420;3;0;false;false;;;;;;
                                  -125423;1;0;false;false;63;95;191;;;
                                  -125424;1;0;false;false;;;;;;
                                  -125425;5;0;false;false;127;127;159;;;
                                  -125430;3;0;false;false;;;;;;
                                  -125433;1;0;false;false;63;95;191;;;
                                  -125434;1;0;false;false;;;;;;
                                  -125435;11;1;false;false;127;159;191;;;
                                  -125446;24;0;false;false;63;95;191;;;
                                  -125470;1;0;false;false;;;;;;
                                  -125471;4;0;false;false;127;127;159;;;
                                  -125475;3;0;false;false;;;;;;
                                  -125478;1;0;false;false;63;95;191;;;
                                  -125479;3;0;false;false;;;;;;
                                  -125482;4;0;false;false;127;127;159;;;
                                  -125486;19;0;false;false;63;95;191;;;
                                  -125505;1;0;false;false;;;;;;
                                  -125506;4;0;false;false;63;95;191;;;
                                  -125510;1;0;false;false;;;;;;
                                  -125511;3;0;false;false;63;95;191;;;
                                  -125514;1;0;false;false;;;;;;
                                  -125515;6;0;false;false;63;95;191;;;
                                  -125521;1;0;false;false;;;;;;
                                  -125522;2;0;false;false;63;95;191;;;
                                  -125524;1;0;false;false;;;;;;
                                  -125525;7;0;false;false;63;95;191;;;
                                  -125532;1;0;false;false;;;;;;
                                  -125533;3;0;false;false;63;95;191;;;
                                  -125536;1;0;false;false;;;;;;
                                  -125537;5;0;false;false;63;95;191;;;
                                  -125542;1;0;false;false;;;;;;
                                  -125543;5;0;false;false;63;95;191;;;
                                  -125548;1;0;false;false;;;;;;
                                  -125549;9;0;false;false;63;95;191;;;
                                  -125558;1;0;false;false;;;;;;
                                  -125559;15;0;false;false;63;95;191;;;
                                  -125574;5;0;false;false;127;127;159;;;
                                  -125579;4;0;false;false;;;;;;
                                  -125583;1;0;false;false;63;95;191;;;
                                  -125584;1;0;false;false;;;;;;
                                  -125585;5;0;false;false;127;127;159;;;
                                  -125590;3;0;false;false;;;;;;
                                  -125593;2;0;false;false;63;95;191;;;
                                  -125595;2;0;false;false;;;;;;
                                  -125597;6;1;false;false;127;0;85;;;
                                  -125603;1;0;false;false;;;;;;
                                  -125604;3;1;false;false;127;0;85;;;
                                  -125607;1;0;false;false;;;;;;
                                  -125608;16;0;false;false;0;0;0;;;
                                  -125624;3;1;false;false;127;0;85;;;
                                  -125627;1;0;false;false;;;;;;
                                  -125628;7;0;false;false;0;0;0;;;
                                  -125635;1;0;false;false;;;;;;
                                  -125636;1;0;false;false;0;0;0;;;
                                  -125637;3;0;false;false;;;;;;
                                  -125640;14;0;false;false;0;0;0;;;
                                  -125654;6;0;false;false;;;;;;
                                  -125660;2;1;false;false;127;0;85;;;
                                  -125662;1;0;false;false;;;;;;
                                  -125663;7;0;false;false;0;0;0;;;
                                  -125670;1;0;false;false;;;;;;
                                  -125671;1;0;false;false;0;0;0;;;
                                  -125672;1;0;false;false;;;;;;
                                  -125673;1;0;false;false;0;0;0;;;
                                  -125674;1;0;false;false;;;;;;
                                  -125675;2;0;false;false;0;0;0;;;
                                  -125677;1;0;false;false;;;;;;
                                  -125678;6;0;false;false;0;0;0;;;
                                  -125684;1;0;false;false;;;;;;
                                  -125685;1;0;false;false;0;0;0;;;
                                  -125686;1;0;false;false;;;;;;
                                  -125687;15;0;false;false;0;0;0;;;
                                  -125702;1;0;false;false;;;;;;
                                  -125703;1;0;false;false;0;0;0;;;
                                  -125704;4;0;false;false;;;;;;
                                  -125708;35;0;false;false;0;0;0;;;
                                  -125743;5;0;false;false;;;;;;
                                  -125748;1;0;false;false;0;0;0;;;
                                  -125749;3;0;false;false;;;;;;
                                  -125752;6;1;false;false;127;0;85;;;
                                  -125758;1;0;false;false;;;;;;
                                  -125759;39;0;false;false;0;0;0;;;
                                  -125798;2;0;false;false;;;;;;
                                  -125800;1;0;false;false;0;0;0;;;
                                  -125801;2;0;false;false;;;;;;
                                  -125803;3;0;false;false;63;95;191;;;
                                  -125806;3;0;false;false;;;;;;
                                  -125809;1;0;false;false;63;95;191;;;
                                  -125810;1;0;false;false;;;;;;
                                  -125811;7;0;false;false;63;95;191;;;
                                  -125818;1;0;false;false;;;;;;
                                  -125819;3;0;false;false;63;95;191;;;
                                  -125822;1;0;false;false;;;;;;
                                  -125823;4;0;false;false;63;95;191;;;
                                  -125827;1;0;false;false;;;;;;
                                  -125828;9;0;false;false;63;95;191;;;
                                  -125837;1;0;false;false;;;;;;
                                  -125838;4;0;false;false;63;95;191;;;
                                  -125842;1;0;false;false;;;;;;
                                  -125843;3;0;false;false;63;95;191;;;
                                  -125846;1;0;false;false;;;;;;
                                  -125847;8;0;false;false;63;95;191;;;
                                  -125855;1;0;false;false;;;;;;
                                  -125856;3;0;false;false;63;95;191;;;
                                  -125859;1;0;false;false;;;;;;
                                  -125860;5;0;false;false;63;95;191;;;
                                  -125865;1;0;false;false;;;;;;
                                  -125866;2;0;false;false;63;95;191;;;
                                  -125868;1;0;false;false;;;;;;
                                  -125869;3;0;false;false;63;95;191;;;
                                  -125872;1;0;false;false;;;;;;
                                  -125873;4;0;false;false;63;95;191;;;
                                  -125877;3;0;false;false;;;;;;
                                  -125880;1;0;false;false;63;95;191;;;
                                  -125881;1;0;false;false;;;;;;
                                  -125882;2;0;false;false;63;95;191;;;
                                  -125884;1;0;false;false;;;;;;
                                  -125885;5;0;false;false;63;95;191;;;
                                  -125890;1;0;false;false;;;;;;
                                  -125891;10;0;false;false;63;95;191;;;
                                  -125901;3;0;false;false;;;;;;
                                  -125904;1;0;false;false;63;95;191;;;
                                  -125905;1;0;false;false;;;;;;
                                  -125906;3;0;false;false;127;127;159;;;
                                  -125909;3;0;false;false;;;;;;
                                  -125912;1;0;false;false;63;95;191;;;
                                  -125913;3;0;false;false;;;;;;
                                  -125916;1;0;false;false;63;95;191;;;
                                  -125917;1;0;false;false;;;;;;
                                  -125918;8;1;false;false;127;159;191;;;
                                  -125926;4;0;false;false;63;95;191;;;
                                  -125930;1;0;false;false;;;;;;
                                  -125931;9;0;false;false;63;95;191;;;
                                  -125940;1;0;false;false;;;;;;
                                  -125941;4;0;false;false;63;95;191;;;
                                  -125945;1;0;false;false;;;;;;
                                  -125946;3;0;false;false;63;95;191;;;
                                  -125949;1;0;false;false;;;;;;
                                  -125950;8;0;false;false;63;95;191;;;
                                  -125958;1;0;false;false;;;;;;
                                  -125959;3;0;false;false;63;95;191;;;
                                  -125962;1;0;false;false;;;;;;
                                  -125963;5;0;false;false;63;95;191;;;
                                  -125968;1;0;false;false;;;;;;
                                  -125969;2;0;false;false;63;95;191;;;
                                  -125971;1;0;false;false;;;;;;
                                  -125972;3;0;false;false;63;95;191;;;
                                  -125975;1;0;false;false;;;;;;
                                  -125976;4;0;false;false;63;95;191;;;
                                  -125980;3;0;false;false;;;;;;
                                  -125983;1;0;false;false;63;95;191;;;
                                  -125984;1;0;false;false;;;;;;
                                  -125985;2;0;false;false;63;95;191;;;
                                  -125987;1;0;false;false;;;;;;
                                  -125988;5;0;false;false;63;95;191;;;
                                  -125993;1;0;false;false;;;;;;
                                  -125994;10;0;false;false;63;95;191;;;
                                  -126004;3;0;false;false;;;;;;
                                  -126007;1;0;false;false;63;95;191;;;
                                  -126008;1;0;false;false;;;;;;
                                  -126009;11;1;false;false;127;159;191;;;
                                  -126020;12;0;false;false;63;95;191;;;
                                  -126032;1;0;false;false;;;;;;
                                  -126033;4;0;false;false;127;127;159;;;
                                  -126037;3;0;false;false;;;;;;
                                  -126040;1;0;false;false;63;95;191;;;
                                  -126041;4;0;false;false;;;;;;
                                  -126045;4;0;false;false;127;127;159;;;
                                  -126049;21;0;false;false;63;95;191;;;
                                  -126070;1;0;false;false;;;;;;
                                  -126071;1;0;false;false;127;127;159;;;
                                  -126072;1;0;false;false;;;;;;
                                  -126073;2;0;false;false;63;95;191;;;
                                  -126075;1;0;false;false;;;;;;
                                  -126076;3;0;false;false;63;95;191;;;
                                  -126079;1;0;false;false;;;;;;
                                  -126080;8;0;false;false;63;95;191;;;
                                  -126088;1;0;false;false;;;;;;
                                  -126089;3;0;false;false;63;95;191;;;
                                  -126092;1;0;false;false;;;;;;
                                  -126093;4;0;false;false;63;95;191;;;
                                  -126097;1;0;false;false;;;;;;
                                  -126098;8;0;false;false;63;95;191;;;
                                  -126106;5;0;false;false;127;127;159;;;
                                  -126111;3;0;false;false;;;;;;
                                  -126114;1;0;false;false;63;95;191;;;
                                  -126115;4;0;false;false;;;;;;
                                  -126119;4;0;false;false;127;127;159;;;
                                  -126123;27;0;false;false;63;95;191;;;
                                  -126150;1;0;false;false;;;;;;
                                  -126151;1;0;false;false;127;127;159;;;
                                  -126152;1;0;false;false;;;;;;
                                  -126153;2;0;false;false;63;95;191;;;
                                  -126155;1;0;false;false;;;;;;
                                  -126156;3;0;false;false;63;95;191;;;
                                  -126159;1;0;false;false;;;;;;
                                  -126160;6;0;false;false;63;95;191;;;
                                  -126166;1;0;false;false;;;;;;
                                  -126167;4;0;false;false;63;95;191;;;
                                  -126171;1;0;false;false;;;;;;
                                  -126172;3;0;false;false;63;95;191;;;
                                  -126175;1;0;false;false;;;;;;
                                  -126176;6;0;false;false;63;95;191;;;
                                  -126182;1;0;false;false;;;;;;
                                  -126183;4;0;false;false;63;95;191;;;
                                  -126187;1;0;false;false;;;;;;
                                  -126188;7;0;false;false;63;95;191;;;
                                  -126195;1;0;false;false;;;;;;
                                  -126196;3;0;false;false;63;95;191;;;
                                  -126199;1;0;false;false;;;;;;
                                  -126200;8;0;false;false;63;95;191;;;
                                  -126208;5;0;false;false;127;127;159;;;
                                  -126213;3;0;false;false;;;;;;
                                  -126216;1;0;false;false;63;95;191;;;
                                  -126217;1;0;false;false;;;;;;
                                  -126218;5;0;false;false;127;127;159;;;
                                  -126223;3;0;false;false;;;;;;
                                  -126226;2;0;false;false;63;95;191;;;
                                  -126228;2;0;false;false;;;;;;
                                  -126230;6;1;false;false;127;0;85;;;
                                  -126236;1;0;false;false;;;;;;
                                  -126237;6;0;false;false;0;0;0;;;
                                  -126243;1;0;false;false;;;;;;
                                  -126244;18;0;false;false;0;0;0;;;
                                  -126262;1;0;false;false;;;;;;
                                  -126263;1;0;false;false;0;0;0;;;
                                  -126264;3;0;false;false;;;;;;
                                  -126267;14;0;false;false;0;0;0;;;
                                  -126281;3;0;false;false;;;;;;
                                  -126284;6;1;false;false;127;0;85;;;
                                  -126290;1;0;false;false;;;;;;
                                  -126291;27;0;false;false;0;0;0;;;
                                  -126318;2;0;false;false;;;;;;
                                  -126320;1;0;false;false;0;0;0;;;
                                  -126321;2;0;false;false;;;;;;
                                  -126323;3;0;false;false;63;95;191;;;
                                  -126326;3;0;false;false;;;;;;
                                  -126329;1;0;false;false;63;95;191;;;
                                  -126330;1;0;false;false;;;;;;
                                  -126331;7;0;false;false;63;95;191;;;
                                  -126338;1;0;false;false;;;;;;
                                  -126339;1;0;false;false;63;95;191;;;
                                  -126340;1;0;false;false;;;;;;
                                  -126341;15;0;false;false;63;95;191;;;
                                  -126356;1;0;false;false;;;;;;
                                  -126357;4;0;false;false;63;95;191;;;
                                  -126361;1;0;false;false;;;;;;
                                  -126362;3;0;false;false;63;95;191;;;
                                  -126365;1;0;false;false;;;;;;
                                  -126366;2;0;false;false;63;95;191;;;
                                  -126368;1;0;false;false;;;;;;
                                  -126369;4;0;false;false;63;95;191;;;
                                  -126373;1;0;false;false;;;;;;
                                  -126374;2;0;false;false;63;95;191;;;
                                  -126376;1;0;false;false;;;;;;
                                  -126377;7;0;false;false;63;95;191;;;
                                  -126384;1;0;false;false;;;;;;
                                  -126385;4;0;false;false;63;95;191;;;
                                  -126389;1;0;false;false;;;;;;
                                  -126390;4;0;false;false;63;95;191;;;
                                  -126394;4;0;false;false;;;;;;
                                  -126398;1;0;false;false;63;95;191;;;
                                  -126399;1;0;false;false;;;;;;
                                  -126400;2;0;false;false;63;95;191;;;
                                  -126402;1;0;false;false;;;;;;
                                  -126403;6;0;false;false;63;95;191;;;
                                  -126409;1;0;false;false;;;;;;
                                  -126410;3;0;false;false;63;95;191;;;
                                  -126413;1;0;false;false;;;;;;
                                  -126414;10;0;false;false;63;95;191;;;
                                  -126424;1;0;false;false;;;;;;
                                  -126425;5;0;false;false;63;95;191;;;
                                  -126430;1;0;false;false;;;;;;
                                  -126431;3;0;false;false;63;95;191;;;
                                  -126434;1;0;false;false;;;;;;
                                  -126435;1;0;false;false;63;95;191;;;
                                  -126436;1;0;false;false;;;;;;
                                  -126437;5;0;false;false;63;95;191;;;
                                  -126442;3;0;false;false;;;;;;
                                  -126445;1;0;false;false;63;95;191;;;
                                  -126446;1;0;false;false;;;;;;
                                  -126447;3;0;false;false;63;95;191;;;
                                  -126450;1;0;false;false;;;;;;
                                  -126451;9;0;false;false;63;95;191;;;
                                  -126460;1;0;false;false;;;;;;
                                  -126461;4;0;false;false;63;95;191;;;
                                  -126465;1;0;false;false;;;;;;
                                  -126466;3;0;false;false;63;95;191;;;
                                  -126469;1;0;false;false;;;;;;
                                  -126470;2;0;false;false;63;95;191;;;
                                  -126472;1;0;false;false;;;;;;
                                  -126473;1;0;false;false;63;95;191;;;
                                  -126474;1;0;false;false;;;;;;
                                  -126475;6;0;false;false;63;95;191;;;
                                  -126481;1;0;false;false;;;;;;
                                  -126482;9;0;false;false;63;95;191;;;
                                  -126491;1;0;false;false;;;;;;
                                  -126492;4;0;false;false;63;95;191;;;
                                  -126496;1;0;false;false;;;;;;
                                  -126497;2;0;false;false;63;95;191;;;
                                  -126499;1;0;false;false;;;;;;
                                  -126500;2;0;false;false;63;95;191;;;
                                  -126502;1;0;false;false;;;;;;
                                  -126503;4;0;false;false;63;95;191;;;
                                  -126507;4;0;false;false;;;;;;
                                  -126511;1;0;false;false;63;95;191;;;
                                  -126512;1;0;false;false;;;;;;
                                  -126513;4;0;false;false;63;95;191;;;
                                  -126517;1;0;false;false;;;;;;
                                  -126518;5;0;false;false;63;95;191;;;
                                  -126523;1;0;false;false;;;;;;
                                  -126524;3;0;false;false;63;95;191;;;
                                  -126527;1;0;false;false;;;;;;
                                  -126528;8;0;false;false;63;95;191;;;
                                  -126536;1;0;false;false;;;;;;
                                  -126537;6;0;false;false;63;95;191;;;
                                  -126543;1;0;false;false;;;;;;
                                  -126544;4;0;false;false;63;95;191;;;
                                  -126548;1;0;false;false;;;;;;
                                  -126549;6;0;false;false;63;95;191;;;
                                  -126555;1;0;false;false;;;;;;
                                  -126556;2;0;false;false;63;95;191;;;
                                  -126558;1;0;false;false;;;;;;
                                  -126559;3;0;false;false;63;95;191;;;
                                  -126562;1;0;false;false;;;;;;
                                  -126563;1;0;false;false;63;95;191;;;
                                  -126564;1;0;false;false;;;;;;
                                  -126565;7;0;false;false;63;95;191;;;
                                  -126572;4;0;false;false;;;;;;
                                  -126576;1;0;false;false;63;95;191;;;
                                  -126577;1;0;false;false;;;;;;
                                  -126578;11;0;false;false;63;95;191;;;
                                  -126589;1;0;false;false;;;;;;
                                  -126590;5;0;false;false;63;95;191;;;
                                  -126595;3;0;false;false;;;;;;
                                  -126598;1;0;false;false;63;95;191;;;
                                  -126599;1;0;false;false;;;;;;
                                  -126600;3;0;false;false;127;127;159;;;
                                  -126603;3;0;false;false;;;;;;
                                  -126606;1;0;false;false;63;95;191;;;
                                  -126607;3;0;false;false;;;;;;
                                  -126610;1;0;false;false;63;95;191;;;
                                  -126611;1;0;false;false;;;;;;
                                  -126612;7;1;false;false;127;159;191;;;
                                  -126619;10;0;false;false;63;95;191;;;
                                  -126629;1;0;false;false;;;;;;
                                  -126630;6;0;false;false;63;95;191;;;
                                  -126636;1;0;false;false;;;;;;
                                  -126637;2;0;false;false;63;95;191;;;
                                  -126639;1;0;false;false;;;;;;
                                  -126640;3;0;false;false;63;95;191;;;
                                  -126643;1;0;false;false;;;;;;
                                  -126644;5;0;false;false;63;95;191;;;
                                  -126649;1;0;false;false;;;;;;
                                  -126650;4;0;false;false;63;95;191;;;
                                  -126654;1;0;false;false;;;;;;
                                  -126655;3;0;false;false;63;95;191;;;
                                  -126658;1;0;false;false;;;;;;
                                  -126659;2;0;false;false;63;95;191;;;
                                  -126661;1;0;false;false;;;;;;
                                  -126662;3;0;false;false;63;95;191;;;
                                  -126665;1;0;false;false;;;;;;
                                  -126666;6;0;false;false;63;95;191;;;
                                  -126672;1;0;false;false;;;;;;
                                  -126673;2;0;false;false;63;95;191;;;
                                  -126675;3;0;false;false;;;;;;
                                  -126678;1;0;false;false;63;95;191;;;
                                  -126679;2;0;false;false;;;;;;
                                  -126681;1;0;false;false;63;95;191;;;
                                  -126682;1;0;false;false;;;;;;
                                  -126683;6;0;false;false;63;95;191;;;
                                  -126689;1;0;false;false;;;;;;
                                  -126690;4;0;false;false;63;95;191;;;
                                  -126694;1;0;false;false;;;;;;
                                  -126695;2;0;false;false;63;95;191;;;
                                  -126697;1;0;false;false;;;;;;
                                  -126698;3;0;false;false;63;95;191;;;
                                  -126701;1;0;false;false;;;;;;
                                  -126702;6;0;false;false;63;95;191;;;
                                  -126708;1;0;false;false;;;;;;
                                  -126709;2;0;false;false;63;95;191;;;
                                  -126711;1;0;false;false;;;;;;
                                  -126712;2;0;false;false;63;95;191;;;
                                  -126714;1;0;false;false;;;;;;
                                  -126715;4;0;false;false;63;95;191;;;
                                  -126719;1;0;false;false;;;;;;
                                  -126720;4;0;false;false;63;95;191;;;
                                  -126724;1;0;false;false;;;;;;
                                  -126725;5;0;false;false;63;95;191;;;
                                  -126730;3;0;false;false;;;;;;
                                  -126733;1;0;false;false;63;95;191;;;
                                  -126734;1;0;false;false;;;;;;
                                  -126735;7;1;false;false;127;159;191;;;
                                  -126742;4;0;false;false;63;95;191;;;
                                  -126746;1;0;false;false;;;;;;
                                  -126747;4;0;false;false;63;95;191;;;
                                  -126751;1;0;false;false;;;;;;
                                  -126752;5;0;false;false;63;95;191;;;
                                  -126757;1;0;false;false;;;;;;
                                  -126758;4;0;false;false;63;95;191;;;
                                  -126762;1;0;false;false;;;;;;
                                  -126763;3;0;false;false;63;95;191;;;
                                  -126766;1;0;false;false;;;;;;
                                  -126767;2;0;false;false;63;95;191;;;
                                  -126769;1;0;false;false;;;;;;
                                  -126770;3;0;false;false;63;95;191;;;
                                  -126773;1;0;false;false;;;;;;
                                  -126774;4;0;false;false;63;95;191;;;
                                  -126778;1;0;false;false;;;;;;
                                  -126779;2;0;false;false;63;95;191;;;
                                  -126781;1;0;false;false;;;;;;
                                  -126782;1;0;false;false;63;95;191;;;
                                  -126783;1;0;false;false;;;;;;
                                  -126784;10;0;false;false;63;95;191;;;
                                  -126794;1;0;false;false;;;;;;
                                  -126795;2;0;false;false;63;95;191;;;
                                  -126797;4;0;false;false;;;;;;
                                  -126801;1;0;false;false;63;95;191;;;
                                  -126802;2;0;false;false;;;;;;
                                  -126804;3;0;false;false;63;95;191;;;
                                  -126807;1;0;false;false;;;;;;
                                  -126808;6;0;false;false;63;95;191;;;
                                  -126814;1;0;false;false;;;;;;
                                  -126815;2;0;false;false;63;95;191;;;
                                  -126817;1;0;false;false;;;;;;
                                  -126818;2;0;false;false;63;95;191;;;
                                  -126820;1;0;false;false;;;;;;
                                  -126821;4;0;false;false;63;95;191;;;
                                  -126825;1;0;false;false;;;;;;
                                  -126826;4;0;false;false;63;95;191;;;
                                  -126830;1;0;false;false;;;;;;
                                  -126831;5;0;false;false;63;95;191;;;
                                  -126836;3;0;false;false;;;;;;
                                  -126839;1;0;false;false;63;95;191;;;
                                  -126840;1;0;false;false;;;;;;
                                  -126841;8;1;false;false;127;159;191;;;
                                  -126849;15;0;false;false;63;95;191;;;
                                  -126864;1;0;false;false;;;;;;
                                  -126865;4;0;false;false;63;95;191;;;
                                  -126869;1;0;false;false;;;;;;
                                  -126870;3;0;false;false;63;95;191;;;
                                  -126873;1;0;false;false;;;;;;
                                  -126874;2;0;false;false;63;95;191;;;
                                  -126876;1;0;false;false;;;;;;
                                  -126877;4;0;false;false;63;95;191;;;
                                  -126881;1;0;false;false;;;;;;
                                  -126882;2;0;false;false;63;95;191;;;
                                  -126884;1;0;false;false;;;;;;
                                  -126885;7;0;false;false;63;95;191;;;
                                  -126892;1;0;false;false;;;;;;
                                  -126893;4;0;false;false;63;95;191;;;
                                  -126897;1;0;false;false;;;;;;
                                  -126898;4;0;false;false;63;95;191;;;
                                  -126902;4;0;false;false;;;;;;
                                  -126906;1;0;false;false;63;95;191;;;
                                  -126907;2;0;false;false;;;;;;
                                  -126909;3;0;false;false;63;95;191;;;
                                  -126912;1;0;false;false;;;;;;
                                  -126913;3;0;false;false;63;95;191;;;
                                  -126916;1;0;false;false;;;;;;
                                  -126917;5;0;false;false;63;95;191;;;
                                  -126922;1;0;false;false;;;;;;
                                  -126923;5;0;false;false;63;95;191;;;
                                  -126928;3;0;false;false;;;;;;
                                  -126931;2;0;false;false;63;95;191;;;
                                  -126933;2;0;false;false;;;;;;
                                  -126935;15;0;false;false;0;0;0;;;
                                  -126950;1;0;false;false;;;;;;
                                  -126951;14;0;false;false;0;0;0;;;
                                  -126965;3;1;false;false;127;0;85;;;
                                  -126968;1;0;false;false;;;;;;
                                  -126969;10;0;false;false;0;0;0;;;
                                  -126979;1;0;false;false;;;;;;
                                  -126980;3;1;false;false;127;0;85;;;
                                  -126983;1;0;false;false;;;;;;
                                  -126984;11;0;false;false;0;0;0;;;
                                  -126995;1;0;false;false;;;;;;
                                  -126996;6;0;false;false;0;0;0;;;
                                  -127002;1;0;false;false;;;;;;
                                  -127003;5;0;false;false;0;0;0;;;
                                  -127008;1;0;false;false;;;;;;
                                  -127009;1;0;false;false;0;0;0;;;
                                  -127010;3;0;false;false;;;;;;
                                  -127013;15;0;false;false;0;0;0;;;
                                  -127028;1;0;false;false;;;;;;
                                  -127029;5;0;false;false;0;0;0;;;
                                  -127034;1;0;false;false;;;;;;
                                  -127035;1;0;false;false;0;0;0;;;
                                  -127036;1;0;false;false;;;;;;
                                  -127037;4;1;false;false;127;0;85;;;
                                  -127041;1;0;false;false;0;0;0;;;
                                  -127042;6;0;false;false;;;;;;
                                  -127048;2;1;false;false;127;0;85;;;
                                  -127050;1;0;false;false;;;;;;
                                  -127051;24;0;false;false;0;0;0;;;
                                  -127075;1;0;false;false;;;;;;
                                  -127076;1;0;false;false;0;0;0;;;
                                  -127077;4;0;false;false;;;;;;
                                  -127081;5;0;false;false;0;0;0;;;
                                  -127086;1;0;false;false;;;;;;
                                  -127087;1;0;false;false;0;0;0;;;
                                  -127088;1;0;false;false;;;;;;
                                  -127089;3;1;false;false;127;0;85;;;
                                  -127092;1;0;false;false;;;;;;
                                  -127093;32;0;false;false;0;0;0;;;
                                  -127125;6;0;false;false;;;;;;
                                  -127131;2;1;false;false;127;0;85;;;
                                  -127133;1;0;false;false;;;;;;
                                  -127134;10;0;false;false;0;0;0;;;
                                  -127144;1;0;false;false;;;;;;
                                  -127145;1;0;false;false;0;0;0;;;
                                  -127146;8;0;false;false;;;;;;
                                  -127154;73;0;false;false;63;127;95;;;
                                  -127227;6;0;false;false;;;;;;
                                  -127233;3;1;false;false;127;0;85;;;
                                  -127236;1;0;false;false;;;;;;
                                  -127237;9;0;false;false;0;0;0;;;
                                  -127246;1;0;false;false;;;;;;
                                  -127247;1;0;false;false;0;0;0;;;
                                  -127248;1;0;false;false;;;;;;
                                  -127249;43;0;false;false;0;0;0;;;
                                  -127292;16;0;false;false;;;;;;
                                  -127308;12;0;false;false;0;0;0;;;
                                  -127320;1;0;false;false;;;;;;
                                  -127321;1;0;false;false;0;0;0;;;
                                  -127322;1;0;false;false;;;;;;
                                  -127323;42;0;false;false;0;0;0;;;
                                  -127365;5;0;false;false;;;;;;
                                  -127370;10;0;false;false;0;0;0;;;
                                  -127380;1;0;false;false;;;;;;
                                  -127381;1;0;false;false;0;0;0;;;
                                  -127382;1;0;false;false;;;;;;
                                  -127383;34;0;false;false;0;0;0;;;
                                  -127417;4;0;false;false;;;;;;
                                  -127421;1;0;false;false;0;0;0;;;
                                  -127422;4;0;false;false;;;;;;
                                  -127426;4;1;false;false;127;0;85;;;
                                  -127430;1;0;false;false;;;;;;
                                  -127431;1;0;false;false;0;0;0;;;
                                  -127432;5;0;false;false;;;;;;
                                  -127437;12;0;false;false;0;0;0;;;
                                  -127449;1;0;false;false;;;;;;
                                  -127450;1;0;false;false;0;0;0;;;
                                  -127451;1;0;false;false;;;;;;
                                  -127452;11;0;false;false;0;0;0;;;
                                  -127463;5;0;false;false;;;;;;
                                  -127468;10;0;false;false;0;0;0;;;
                                  -127478;1;0;false;false;;;;;;
                                  -127479;1;0;false;false;0;0;0;;;
                                  -127480;1;0;false;false;;;;;;
                                  -127481;5;0;false;false;0;0;0;;;
                                  -127486;4;0;false;false;;;;;;
                                  -127490;1;0;false;false;0;0;0;;;
                                  -127491;4;0;false;false;;;;;;
                                  -127495;26;0;false;false;0;0;0;;;
                                  -127521;1;0;false;false;;;;;;
                                  -127522;7;0;false;false;0;0;0;;;
                                  -127529;3;0;false;false;;;;;;
                                  -127532;1;0;false;false;0;0;0;;;
                                  -127533;3;0;false;false;;;;;;
                                  -127536;6;1;false;false;127;0;85;;;
                                  -127542;1;0;false;false;;;;;;
                                  -127543;6;0;false;false;0;0;0;;;
                                  -127549;3;0;false;false;;;;;;
                                  -127552;1;0;false;false;0;0;0;;;
                                  -127553;2;0;false;false;;;;;;
                                  -127555;3;0;false;false;63;95;191;;;
                                  -127558;3;0;false;false;;;;;;
                                  -127561;1;0;false;false;63;95;191;;;
                                  -127562;1;0;false;false;;;;;;
                                  -127563;7;0;false;false;63;95;191;;;
                                  -127570;1;0;false;false;;;;;;
                                  -127571;3;0;false;false;63;95;191;;;
                                  -127574;1;0;false;false;;;;;;
                                  -127575;4;0;false;false;63;95;191;;;
                                  -127579;1;0;false;false;;;;;;
                                  -127580;7;0;false;false;63;95;191;;;
                                  -127587;3;0;false;false;;;;;;
                                  -127590;1;0;false;false;63;95;191;;;
                                  -127591;1;0;false;false;;;;;;
                                  -127592;3;0;false;false;127;127;159;;;
                                  -127595;3;0;false;false;;;;;;
                                  -127598;1;0;false;false;63;95;191;;;
                                  -127599;3;0;false;false;;;;;;
                                  -127602;1;0;false;false;63;95;191;;;
                                  -127603;1;0;false;false;;;;;;
                                  -127604;8;1;false;false;127;159;191;;;
                                  -127612;4;0;false;false;63;95;191;;;
                                  -127616;1;0;false;false;;;;;;
                                  -127617;6;0;false;false;63;95;191;;;
                                  -127623;1;0;false;false;;;;;;
                                  -127624;2;0;false;false;63;95;191;;;
                                  -127626;1;0;false;false;;;;;;
                                  -127627;6;0;false;false;63;95;191;;;
                                  -127633;3;0;false;false;;;;;;
                                  -127636;1;0;false;false;63;95;191;;;
                                  -127637;1;0;false;false;;;;;;
                                  -127638;11;1;false;false;127;159;191;;;
                                  -127649;12;0;false;false;63;95;191;;;
                                  -127661;1;0;false;false;;;;;;
                                  -127662;4;0;false;false;127;127;159;;;
                                  -127666;3;0;false;false;;;;;;
                                  -127669;1;0;false;false;63;95;191;;;
                                  -127670;4;0;false;false;;;;;;
                                  -127674;4;0;false;false;127;127;159;;;
                                  -127678;21;0;false;false;63;95;191;;;
                                  -127699;1;0;false;false;;;;;;
                                  -127700;1;0;false;false;127;127;159;;;
                                  -127701;1;0;false;false;;;;;;
                                  -127702;2;0;false;false;63;95;191;;;
                                  -127704;1;0;false;false;;;;;;
                                  -127705;3;0;false;false;63;95;191;;;
                                  -127708;1;0;false;false;;;;;;
                                  -127709;8;0;false;false;63;95;191;;;
                                  -127717;1;0;false;false;;;;;;
                                  -127718;3;0;false;false;63;95;191;;;
                                  -127721;1;0;false;false;;;;;;
                                  -127722;4;0;false;false;63;95;191;;;
                                  -127726;1;0;false;false;;;;;;
                                  -127727;8;0;false;false;63;95;191;;;
                                  -127735;5;0;false;false;127;127;159;;;
                                  -127740;3;0;false;false;;;;;;
                                  -127743;1;0;false;false;63;95;191;;;
                                  -127744;4;0;false;false;;;;;;
                                  -127748;4;0;false;false;127;127;159;;;
                                  -127752;27;0;false;false;63;95;191;;;
                                  -127779;1;0;false;false;;;;;;
                                  -127780;1;0;false;false;127;127;159;;;
                                  -127781;1;0;false;false;;;;;;
                                  -127782;2;0;false;false;63;95;191;;;
                                  -127784;1;0;false;false;;;;;;
                                  -127785;3;0;false;false;63;95;191;;;
                                  -127788;1;0;false;false;;;;;;
                                  -127789;6;0;false;false;63;95;191;;;
                                  -127795;1;0;false;false;;;;;;
                                  -127796;4;0;false;false;63;95;191;;;
                                  -127800;1;0;false;false;;;;;;
                                  -127801;3;0;false;false;63;95;191;;;
                                  -127804;1;0;false;false;;;;;;
                                  -127805;6;0;false;false;63;95;191;;;
                                  -127811;1;0;false;false;;;;;;
                                  -127812;4;0;false;false;63;95;191;;;
                                  -127816;1;0;false;false;;;;;;
                                  -127817;7;0;false;false;63;95;191;;;
                                  -127824;1;0;false;false;;;;;;
                                  -127825;3;0;false;false;63;95;191;;;
                                  -127828;1;0;false;false;;;;;;
                                  -127829;8;0;false;false;63;95;191;;;
                                  -127837;5;0;false;false;127;127;159;;;
                                  -127842;3;0;false;false;;;;;;
                                  -127845;1;0;false;false;63;95;191;;;
                                  -127846;1;0;false;false;;;;;;
                                  -127847;5;0;false;false;127;127;159;;;
                                  -127852;3;0;false;false;;;;;;
                                  -127855;2;0;false;false;63;95;191;;;
                                  -127857;2;0;false;false;;;;;;
                                  -127859;6;1;false;false;127;0;85;;;
                                  -127865;1;0;false;false;;;;;;
                                  -127866;3;1;false;false;127;0;85;;;
                                  -127869;1;0;false;false;;;;;;
                                  -127870;15;0;false;false;0;0;0;;;
                                  -127885;1;0;false;false;;;;;;
                                  -127886;1;0;false;false;0;0;0;;;
                                  -127887;3;0;false;false;;;;;;
                                  -127890;14;0;false;false;0;0;0;;;
                                  -127904;3;0;false;false;;;;;;
                                  -127907;6;1;false;false;127;0;85;;;
                                  -127913;1;0;false;false;;;;;;
                                  -127914;11;0;false;false;0;0;0;;;
                                  -127925;2;0;false;false;;;;;;
                                  -127927;1;0;false;false;0;0;0;;;
                                  -127928;2;0;false;false;;;;;;
                                  -127930;3;0;false;false;63;95;191;;;
                                  -127933;3;0;false;false;;;;;;
                                  -127936;1;0;false;false;63;95;191;;;
                                  -127937;1;0;false;false;;;;;;
                                  -127938;7;0;false;false;63;95;191;;;
                                  -127945;1;0;false;false;;;;;;
                                  -127946;1;0;false;false;63;95;191;;;
                                  -127947;1;0;false;false;;;;;;
                                  -127948;9;0;false;false;63;95;191;;;
                                  -127957;1;0;false;false;;;;;;
                                  -127958;15;0;false;false;63;95;191;;;
                                  -127973;1;0;false;false;;;;;;
                                  -127974;9;0;false;false;63;95;191;;;
                                  -127983;1;0;false;false;;;;;;
                                  -127984;2;0;false;false;63;95;191;;;
                                  -127986;1;0;false;false;;;;;;
                                  -127987;7;0;false;false;63;95;191;;;
                                  -127994;1;0;false;false;;;;;;
                                  -127995;2;0;false;false;63;95;191;;;
                                  -127997;1;0;false;false;;;;;;
                                  -127998;3;0;false;false;63;95;191;;;
                                  -128001;3;0;false;false;;;;;;
                                  -128004;1;0;false;false;63;95;191;;;
                                  -128005;1;0;false;false;;;;;;
                                  -128006;4;0;false;false;63;95;191;;;
                                  -128010;1;0;false;false;;;;;;
                                  -128011;4;0;false;false;63;95;191;;;
                                  -128015;1;0;false;false;;;;;;
                                  -128016;2;0;false;false;63;95;191;;;
                                  -128018;1;0;false;false;;;;;;
                                  -128019;2;0;false;false;63;95;191;;;
                                  -128021;1;0;false;false;;;;;;
                                  -128022;4;0;false;false;63;95;191;;;
                                  -128026;1;0;false;false;;;;;;
                                  -128027;3;0;false;false;63;95;191;;;
                                  -128030;1;0;false;false;;;;;;
                                  -128031;2;0;false;false;63;95;191;;;
                                  -128033;1;0;false;false;;;;;;
                                  -128034;1;0;false;false;63;95;191;;;
                                  -128035;1;0;false;false;;;;;;
                                  -128036;4;0;false;false;63;95;191;;;
                                  -128040;1;0;false;false;;;;;;
                                  -128041;8;0;false;false;63;95;191;;;
                                  -128049;1;0;false;false;;;;;;
                                  -128050;2;0;false;false;63;95;191;;;
                                  -128052;1;0;false;false;;;;;;
                                  -128053;4;0;false;false;63;95;191;;;
                                  -128057;1;0;false;false;;;;;;
                                  -128058;5;0;false;false;63;95;191;;;
                                  -128063;4;0;false;false;;;;;;
                                  -128067;1;0;false;false;63;95;191;;;
                                  -128068;1;0;false;false;;;;;;
                                  -128069;11;0;false;false;63;95;191;;;
                                  -128080;1;0;false;false;;;;;;
                                  -128081;15;0;false;false;63;95;191;;;
                                  -128096;3;0;false;false;;;;;;
                                  -128099;1;0;false;false;63;95;191;;;
                                  -128100;1;0;false;false;;;;;;
                                  -128101;3;0;false;false;127;127;159;;;
                                  -128104;3;0;false;false;;;;;;
                                  -128107;1;0;false;false;63;95;191;;;
                                  -128108;4;0;false;false;;;;;;
                                  -128112;1;0;false;false;63;95;191;;;
                                  -128113;1;0;false;false;;;;;;
                                  -128114;7;1;false;false;127;159;191;;;
                                  -128121;7;0;false;false;63;95;191;;;
                                  -128128;1;0;false;false;;;;;;
                                  -128129;17;0;false;false;63;95;191;;;
                                  -128146;1;0;false;false;;;;;;
                                  -128147;2;0;false;false;63;95;191;;;
                                  -128149;1;0;false;false;;;;;;
                                  -128150;6;0;false;false;63;95;191;;;
                                  -128156;1;0;false;false;;;;;;
                                  -128157;3;0;false;false;63;95;191;;;
                                  -128160;1;0;false;false;;;;;;
                                  -128161;9;0;false;false;63;95;191;;;
                                  -128170;1;0;false;false;;;;;;
                                  -128171;3;0;false;false;63;95;191;;;
                                  -128174;3;0;false;false;;;;;;
                                  -128177;1;0;false;false;63;95;191;;;
                                  -128178;1;0;false;false;;;;;;
                                  -128179;8;1;false;false;127;159;191;;;
                                  -128187;1;0;false;false;63;95;191;;;
                                  -128188;1;0;false;false;;;;;;
                                  -128189;9;0;false;false;63;95;191;;;
                                  -128198;1;0;false;false;;;;;;
                                  -128199;14;0;false;false;63;95;191;;;
                                  -128213;3;0;false;false;;;;;;
                                  -128216;2;0;false;false;63;95;191;;;
                                  -128218;2;0;false;false;;;;;;
                                  -128220;9;0;false;false;0;0;0;;;
                                  -128229;1;0;false;false;;;;;;
                                  -128230;30;0;false;false;0;0;0;;;
                                  -128260;1;0;false;false;;;;;;
                                  -128261;8;0;false;false;0;0;0;;;
                                  -128269;1;0;false;false;;;;;;
                                  -128270;1;0;false;false;0;0;0;;;
                                  -128271;3;0;false;false;;;;;;
                                  -128274;9;0;false;false;0;0;0;;;
                                  -128283;1;0;false;false;;;;;;
                                  -128284;10;0;false;false;0;0;0;;;
                                  -128294;9;0;false;false;;;;;;
                                  -128303;2;1;false;false;127;0;85;;;
                                  -128305;1;0;false;false;;;;;;
                                  -128306;10;0;false;false;0;0;0;;;
                                  -128316;1;0;false;false;;;;;;
                                  -128317;1;0;false;false;0;0;0;;;
                                  -128318;4;0;false;false;;;;;;
                                  -128322;9;0;false;false;0;0;0;;;
                                  -128331;1;0;false;false;;;;;;
                                  -128332;1;0;false;false;0;0;0;;;
                                  -128333;1;0;false;false;;;;;;
                                  -128334;3;1;false;false;127;0;85;;;
                                  -128337;1;0;false;false;;;;;;
                                  -128338;14;0;false;false;0;0;0;;;
                                  -128352;4;1;false;false;127;0;85;;;
                                  -128356;1;0;false;false;0;0;0;;;
                                  -128357;1;0;false;false;;;;;;
                                  -128358;16;0;false;false;0;0;0;;;
                                  -128374;1;0;false;false;;;;;;
                                  -128375;9;0;false;false;0;0;0;;;
                                  -128384;3;0;false;false;;;;;;
                                  -128387;1;0;false;false;0;0;0;;;
                                  -128388;3;0;false;false;;;;;;
                                  -128391;4;1;false;false;127;0;85;;;
                                  -128395;1;0;false;false;;;;;;
                                  -128396;1;0;false;false;0;0;0;;;
                                  -128397;4;0;false;false;;;;;;
                                  -128401;9;0;false;false;0;0;0;;;
                                  -128410;1;0;false;false;;;;;;
                                  -128411;1;0;false;false;0;0;0;;;
                                  -128412;1;0;false;false;;;;;;
                                  -128413;3;1;false;false;127;0;85;;;
                                  -128416;1;0;false;false;;;;;;
                                  -128417;18;0;false;false;0;0;0;;;
                                  -128435;4;1;false;false;127;0;85;;;
                                  -128439;1;0;false;false;0;0;0;;;
                                  -128440;1;0;false;false;;;;;;
                                  -128441;9;0;false;false;0;0;0;;;
                                  -128450;3;0;false;false;;;;;;
                                  -128453;1;0;false;false;0;0;0;;;
                                  -128454;3;0;false;false;;;;;;
                                  -128457;6;1;false;false;127;0;85;;;
                                  -128463;1;0;false;false;;;;;;
                                  -128464;10;0;false;false;0;0;0;;;
                                  -128474;2;0;false;false;;;;;;
                                  -128476;1;0;false;false;0;0;0;;;
                                  -128477;2;0;false;false;;;;;;
                                  -128479;3;0;false;false;63;95;191;;;
                                  -128482;3;0;false;false;;;;;;
                                  -128485;1;0;false;false;63;95;191;;;
                                  -128486;1;0;false;false;;;;;;
                                  -128487;7;0;false;false;63;95;191;;;
                                  -128494;1;0;false;false;;;;;;
                                  -128495;3;0;false;false;63;95;191;;;
                                  -128498;1;0;false;false;;;;;;
                                  -128499;4;0;false;false;63;95;191;;;
                                  -128503;1;0;false;false;;;;;;
                                  -128504;5;0;false;false;63;95;191;;;
                                  -128509;1;0;false;false;;;;;;
                                  -128510;4;0;false;false;63;95;191;;;
                                  -128514;1;0;false;false;;;;;;
                                  -128515;3;0;false;false;63;95;191;;;
                                  -128518;1;0;false;false;;;;;;
                                  -128519;3;0;false;false;63;95;191;;;
                                  -128522;1;0;false;false;;;;;;
                                  -128523;5;0;false;false;63;95;191;;;
                                  -128528;1;0;false;false;;;;;;
                                  -128529;4;0;false;false;63;95;191;;;
                                  -128533;1;0;false;false;;;;;;
                                  -128534;2;0;false;false;63;95;191;;;
                                  -128536;1;0;false;false;;;;;;
                                  -128537;4;0;false;false;63;95;191;;;
                                  -128541;1;0;false;false;;;;;;
                                  -128542;2;0;false;false;63;95;191;;;
                                  -128544;1;0;false;false;;;;;;
                                  -128545;5;0;false;false;63;95;191;;;
                                  -128550;1;0;false;false;;;;;;
                                  -128551;2;0;false;false;63;95;191;;;
                                  -128553;4;0;false;false;;;;;;
                                  -128557;1;0;false;false;63;95;191;;;
                                  -128558;1;0;false;false;;;;;;
                                  -128559;5;0;false;false;63;95;191;;;
                                  -128564;1;0;false;false;;;;;;
                                  -128565;2;0;false;false;63;95;191;;;
                                  -128567;1;0;false;false;;;;;;
                                  -128568;5;0;false;false;63;95;191;;;
                                  -128573;1;0;false;false;;;;;;
                                  -128574;2;0;false;false;63;95;191;;;
                                  -128576;1;0;false;false;;;;;;
                                  -128577;1;0;false;false;63;95;191;;;
                                  -128578;1;0;false;false;;;;;;
                                  -128579;17;0;false;false;63;95;191;;;
                                  -128596;1;0;false;false;;;;;;
                                  -128597;3;0;false;false;63;95;191;;;
                                  -128600;1;0;false;false;;;;;;
                                  -128601;2;0;false;false;63;95;191;;;
                                  -128603;1;0;false;false;;;;;;
                                  -128604;4;0;false;false;63;95;191;;;
                                  -128608;1;0;false;false;;;;;;
                                  -128609;3;0;false;false;63;95;191;;;
                                  -128612;1;0;false;false;;;;;;
                                  -128613;3;0;false;false;63;95;191;;;
                                  -128616;1;0;false;false;;;;;;
                                  -128617;3;0;false;false;63;95;191;;;
                                  -128620;1;0;false;false;;;;;;
                                  -128621;7;0;false;false;63;95;191;;;
                                  -128628;4;0;false;false;;;;;;
                                  -128632;1;0;false;false;63;95;191;;;
                                  -128633;1;0;false;false;;;;;;
                                  -128634;3;0;false;false;63;95;191;;;
                                  -128637;1;0;false;false;;;;;;
                                  -128638;22;0;false;false;63;95;191;;;
                                  -128660;1;0;false;false;;;;;;
                                  -128661;5;0;false;false;63;95;191;;;
                                  -128666;1;0;false;false;;;;;;
                                  -128667;4;0;false;false;63;95;191;;;
                                  -128671;1;0;false;false;;;;;;
                                  -128672;2;0;false;false;63;95;191;;;
                                  -128674;1;0;false;false;;;;;;
                                  -128675;11;0;false;false;63;95;191;;;
                                  -128686;1;0;false;false;;;;;;
                                  -128687;2;0;false;false;63;95;191;;;
                                  -128689;1;0;false;false;;;;;;
                                  -128690;2;0;false;false;63;95;191;;;
                                  -128692;1;0;false;false;;;;;;
                                  -128693;5;0;false;false;63;95;191;;;
                                  -128698;4;0;false;false;;;;;;
                                  -128702;1;0;false;false;63;95;191;;;
                                  -128703;1;0;false;false;;;;;;
                                  -128704;6;0;false;false;63;95;191;;;
                                  -128710;3;0;false;false;;;;;;
                                  -128713;1;0;false;false;63;95;191;;;
                                  -128714;1;0;false;false;;;;;;
                                  -128715;3;0;false;false;127;127;159;;;
                                  -128718;3;0;false;false;;;;;;
                                  -128721;1;0;false;false;63;95;191;;;
                                  -128722;4;0;false;false;;;;;;
                                  -128726;1;0;false;false;63;95;191;;;
                                  -128727;1;0;false;false;;;;;;
                                  -128728;7;1;false;false;127;159;191;;;
                                  -128735;10;0;false;false;63;95;191;;;
                                  -128745;1;0;false;false;;;;;;
                                  -128746;6;0;false;false;63;95;191;;;
                                  -128752;1;0;false;false;;;;;;
                                  -128753;2;0;false;false;63;95;191;;;
                                  -128755;1;0;false;false;;;;;;
                                  -128756;3;0;false;false;63;95;191;;;
                                  -128759;1;0;false;false;;;;;;
                                  -128760;4;0;false;false;63;95;191;;;
                                  -128764;1;0;false;false;;;;;;
                                  -128765;5;0;false;false;63;95;191;;;
                                  -128770;1;0;false;false;;;;;;
                                  -128771;8;0;false;false;63;95;191;;;
                                  -128779;1;0;false;false;;;;;;
                                  -128780;2;0;false;false;63;95;191;;;
                                  -128782;1;0;false;false;;;;;;
                                  -128783;3;0;false;false;63;95;191;;;
                                  -128786;1;0;false;false;;;;;;
                                  -128787;5;0;false;false;63;95;191;;;
                                  -128792;1;0;false;false;;;;;;
                                  -128793;2;0;false;false;63;95;191;;;
                                  -128795;4;0;false;false;;;;;;
                                  -128799;1;0;false;false;63;95;191;;;
                                  -128800;2;0;false;false;;;;;;
                                  -128802;3;0;false;false;63;95;191;;;
                                  -128805;1;0;false;false;;;;;;
                                  -128806;8;0;false;false;63;95;191;;;
                                  -128814;3;0;false;false;;;;;;
                                  -128817;1;0;false;false;63;95;191;;;
                                  -128818;1;0;false;false;;;;;;
                                  -128819;7;1;false;false;127;159;191;;;
                                  -128826;4;0;false;false;63;95;191;;;
                                  -128830;1;0;false;false;;;;;;
                                  -128831;4;0;false;false;63;95;191;;;
                                  -128835;1;0;false;false;;;;;;
                                  -128836;2;0;false;false;63;95;191;;;
                                  -128838;1;0;false;false;;;;;;
                                  -128839;3;0;false;false;63;95;191;;;
                                  -128842;1;0;false;false;;;;;;
                                  -128843;4;0;false;false;63;95;191;;;
                                  -128847;1;0;false;false;;;;;;
                                  -128848;6;0;false;false;63;95;191;;;
                                  -128854;1;0;false;false;;;;;;
                                  -128855;3;0;false;false;63;95;191;;;
                                  -128858;3;0;false;false;;;;;;
                                  -128861;1;0;false;false;63;95;191;;;
                                  -128862;1;0;false;false;;;;;;
                                  -128863;8;1;false;false;127;159;191;;;
                                  -128871;4;0;false;false;63;95;191;;;
                                  -128875;1;0;false;false;;;;;;
                                  -128876;5;0;false;false;63;95;191;;;
                                  -128881;1;0;false;false;;;;;;
                                  -128882;4;0;false;false;63;95;191;;;
                                  -128886;1;0;false;false;;;;;;
                                  -128887;3;0;false;false;63;95;191;;;
                                  -128890;1;0;false;false;;;;;;
                                  -128891;3;0;false;false;63;95;191;;;
                                  -128894;1;0;false;false;;;;;;
                                  -128895;5;0;false;false;63;95;191;;;
                                  -128900;1;0;false;false;;;;;;
                                  -128901;5;0;false;false;63;95;191;;;
                                  -128906;1;0;false;false;;;;;;
                                  -128907;6;0;false;false;63;95;191;;;
                                  -128913;1;0;false;false;;;;;;
                                  -128914;3;0;false;false;63;95;191;;;
                                  -128917;1;0;false;false;;;;;;
                                  -128918;5;0;false;false;63;95;191;;;
                                  -128923;1;0;false;false;;;;;;
                                  -128924;6;0;false;false;63;95;191;;;
                                  -128930;4;0;false;false;;;;;;
                                  -128934;1;0;false;false;63;95;191;;;
                                  -128935;2;0;false;false;;;;;;
                                  -128937;4;0;false;false;63;95;191;;;
                                  -128941;1;0;false;false;;;;;;
                                  -128942;5;0;false;false;63;95;191;;;
                                  -128947;1;0;false;false;;;;;;
                                  -128948;3;0;false;false;63;95;191;;;
                                  -128951;1;0;false;false;;;;;;
                                  -128952;3;0;false;false;63;95;191;;;
                                  -128955;1;0;false;false;;;;;;
                                  -128956;5;0;false;false;63;95;191;;;
                                  -128961;1;0;false;false;;;;;;
                                  -128962;4;0;false;false;63;95;191;;;
                                  -128966;1;0;false;false;;;;;;
                                  -128967;3;0;false;false;63;95;191;;;
                                  -128970;3;0;false;false;;;;;;
                                  -128973;2;0;false;false;63;95;191;;;
                                  -128975;2;0;false;false;;;;;;
                                  -128977;15;0;false;false;0;0;0;;;
                                  -128992;1;0;false;false;;;;;;
                                  -128993;17;0;false;false;0;0;0;;;
                                  -129010;3;1;false;false;127;0;85;;;
                                  -129013;1;0;false;false;;;;;;
                                  -129014;11;0;false;false;0;0;0;;;
                                  -129025;1;0;false;false;;;;;;
                                  -129026;6;0;false;false;0;0;0;;;
                                  -129032;1;0;false;false;;;;;;
                                  -129033;5;0;false;false;0;0;0;;;
                                  -129038;1;0;false;false;;;;;;
                                  -129039;1;0;false;false;0;0;0;;;
                                  -129040;3;0;false;false;;;;;;
                                  -129043;6;1;false;false;127;0;85;;;
                                  -129049;1;0;false;false;;;;;;
                                  -129050;27;0;false;false;0;0;0;;;
                                  -129077;1;0;false;false;;;;;;
                                  -129078;11;0;false;false;0;0;0;;;
                                  -129089;1;0;false;false;;;;;;
                                  -129090;6;0;false;false;0;0;0;;;
                                  -129096;2;0;false;false;;;;;;
                                  -129098;1;0;false;false;0;0;0;;;
                                  -129099;2;0;false;false;;;;;;
                                  -129101;3;0;false;false;63;95;191;;;
                                  -129104;3;0;false;false;;;;;;
                                  -129107;1;0;false;false;63;95;191;;;
                                  -129108;1;0;false;false;;;;;;
                                  -129109;7;0;false;false;63;95;191;;;
                                  -129116;1;0;false;false;;;;;;
                                  -129117;3;0;false;false;63;95;191;;;
                                  -129120;1;0;false;false;;;;;;
                                  -129121;2;0;false;false;63;95;191;;;
                                  -129123;1;0;false;false;;;;;;
                                  -129124;1;0;false;false;63;95;191;;;
                                  -129125;1;0;false;false;;;;;;
                                  -129126;8;0;false;false;63;95;191;;;
                                  -129134;1;0;false;false;;;;;;
                                  -129135;2;0;false;false;63;95;191;;;
                                  -129137;1;0;false;false;;;;;;
                                  -129138;3;0;false;false;63;95;191;;;
                                  -129141;1;0;false;false;;;;;;
                                  -129142;5;0;false;false;63;95;191;;;
                                  -129147;1;0;false;false;;;;;;
                                  -129148;4;0;false;false;63;95;191;;;
                                  -129152;1;0;false;false;;;;;;
                                  -129153;6;0;false;false;63;95;191;;;
                                  -129159;1;0;false;false;;;;;;
                                  -129160;2;0;false;false;63;95;191;;;
                                  -129162;1;0;false;false;;;;;;
                                  -129163;3;0;false;false;63;95;191;;;
                                  -129166;1;0;false;false;;;;;;
                                  -129167;9;0;false;false;63;95;191;;;
                                  -129176;4;0;false;false;;;;;;
                                  -129180;1;0;false;false;63;95;191;;;
                                  -129181;1;0;false;false;;;;;;
                                  -129182;8;0;false;false;63;95;191;;;
                                  -129190;1;0;false;false;;;;;;
                                  -129191;3;0;false;false;63;95;191;;;
                                  -129194;1;0;false;false;;;;;;
                                  -129195;2;0;false;false;63;95;191;;;
                                  -129197;1;0;false;false;;;;;;
                                  -129198;3;0;false;false;63;95;191;;;
                                  -129201;1;0;false;false;;;;;;
                                  -129202;9;0;false;false;63;95;191;;;
                                  -129211;1;0;false;false;;;;;;
                                  -129212;6;0;false;false;63;95;191;;;
                                  -129218;1;0;false;false;;;;;;
                                  -129219;2;0;false;false;63;95;191;;;
                                  -129221;1;0;false;false;;;;;;
                                  -129222;3;0;false;false;63;95;191;;;
                                  -129225;1;0;false;false;;;;;;
                                  -129226;5;0;false;false;63;95;191;;;
                                  -129231;1;0;false;false;;;;;;
                                  -129232;3;0;false;false;63;95;191;;;
                                  -129235;1;0;false;false;;;;;;
                                  -129236;5;0;false;false;63;95;191;;;
                                  -129241;1;0;false;false;;;;;;
                                  -129242;2;0;false;false;63;95;191;;;
                                  -129244;4;0;false;false;;;;;;
                                  -129248;1;0;false;false;63;95;191;;;
                                  -129249;1;0;false;false;;;;;;
                                  -129250;8;0;false;false;63;95;191;;;
                                  -129258;1;0;false;false;;;;;;
                                  -129259;2;0;false;false;63;95;191;;;
                                  -129261;1;0;false;false;;;;;;
                                  -129262;3;0;false;false;63;95;191;;;
                                  -129265;1;0;false;false;;;;;;
                                  -129266;5;0;false;false;63;95;191;;;
                                  -129271;1;0;false;false;;;;;;
                                  -129272;4;0;false;false;63;95;191;;;
                                  -129276;1;0;false;false;;;;;;
                                  -129277;6;0;false;false;63;95;191;;;
                                  -129283;1;0;false;false;;;;;;
                                  -129284;2;0;false;false;63;95;191;;;
                                  -129286;1;0;false;false;;;;;;
                                  -129287;3;0;false;false;63;95;191;;;
                                  -129290;1;0;false;false;;;;;;
                                  -129291;6;0;false;false;63;95;191;;;
                                  -129297;1;0;false;false;;;;;;
                                  -129298;6;0;false;false;63;95;191;;;
                                  -129304;1;0;false;false;;;;;;
                                  -129305;5;0;false;false;63;95;191;;;
                                  -129310;3;0;false;false;;;;;;
                                  -129313;1;0;false;false;63;95;191;;;
                                  -129314;1;0;false;false;;;;;;
                                  -129315;3;0;false;false;127;127;159;;;
                                  -129318;3;0;false;false;;;;;;
                                  -129321;1;0;false;false;63;95;191;;;
                                  -129322;3;0;false;false;;;;;;
                                  -129325;1;0;false;false;63;95;191;;;
                                  -129326;1;0;false;false;;;;;;
                                  -129327;7;1;false;false;127;159;191;;;
                                  -129334;6;0;false;false;63;95;191;;;
                                  -129340;1;0;false;false;;;;;;
                                  -129341;6;0;false;false;63;95;191;;;
                                  -129347;1;0;false;false;;;;;;
                                  -129348;8;0;false;false;63;95;191;;;
                                  -129356;1;0;false;false;;;;;;
                                  -129357;2;0;false;false;63;95;191;;;
                                  -129359;1;0;false;false;;;;;;
                                  -129360;3;0;false;false;63;95;191;;;
                                  -129363;1;0;false;false;;;;;;
                                  -129364;5;0;false;false;63;95;191;;;
                                  -129369;1;0;false;false;;;;;;
                                  -129370;2;0;false;false;63;95;191;;;
                                  -129372;1;0;false;false;;;;;;
                                  -129373;3;0;false;false;63;95;191;;;
                                  -129376;1;0;false;false;;;;;;
                                  -129377;8;0;false;false;63;95;191;;;
                                  -129385;4;0;false;false;;;;;;
                                  -129389;1;0;false;false;63;95;191;;;
                                  -129390;2;0;false;false;;;;;;
                                  -129392;1;0;false;false;63;95;191;;;
                                  -129393;1;0;false;false;;;;;;
                                  -129394;29;0;false;false;63;95;191;;;
                                  -129423;1;0;false;false;;;;;;
                                  -129424;1;0;false;false;63;95;191;;;
                                  -129425;1;0;false;false;;;;;;
                                  -129426;8;1;false;false;127;159;191;;;
                                  -129434;2;0;false;false;63;95;191;;;
                                  -129436;1;0;false;false;;;;;;
                                  -129437;1;0;false;false;63;95;191;;;
                                  -129438;1;0;false;false;;;;;;
                                  -129439;8;0;false;false;63;95;191;;;
                                  -129447;1;0;false;false;;;;;;
                                  -129448;2;0;false;false;63;95;191;;;
                                  -129450;1;0;false;false;;;;;;
                                  -129451;3;0;false;false;63;95;191;;;
                                  -129454;1;0;false;false;;;;;;
                                  -129455;5;0;false;false;63;95;191;;;
                                  -129460;1;0;false;false;;;;;;
                                  -129461;4;0;false;false;63;95;191;;;
                                  -129465;1;0;false;false;;;;;;
                                  -129466;6;0;false;false;63;95;191;;;
                                  -129472;1;0;false;false;;;;;;
                                  -129473;2;0;false;false;63;95;191;;;
                                  -129475;1;0;false;false;;;;;;
                                  -129476;3;0;false;false;63;95;191;;;
                                  -129479;1;0;false;false;;;;;;
                                  -129480;9;0;false;false;63;95;191;;;
                                  -129489;4;0;false;false;;;;;;
                                  -129493;1;0;false;false;63;95;191;;;
                                  -129494;2;0;false;false;;;;;;
                                  -129496;8;0;false;false;63;95;191;;;
                                  -129504;1;0;false;false;;;;;;
                                  -129505;3;0;false;false;63;95;191;;;
                                  -129508;1;0;false;false;;;;;;
                                  -129509;2;0;false;false;63;95;191;;;
                                  -129511;1;0;false;false;;;;;;
                                  -129512;3;0;false;false;63;95;191;;;
                                  -129515;1;0;false;false;;;;;;
                                  -129516;9;0;false;false;63;95;191;;;
                                  -129525;1;0;false;false;;;;;;
                                  -129526;6;0;false;false;63;95;191;;;
                                  -129532;1;0;false;false;;;;;;
                                  -129533;2;0;false;false;63;95;191;;;
                                  -129535;1;0;false;false;;;;;;
                                  -129536;3;0;false;false;63;95;191;;;
                                  -129539;1;0;false;false;;;;;;
                                  -129540;5;0;false;false;63;95;191;;;
                                  -129545;3;0;false;false;;;;;;
                                  -129548;1;0;false;false;63;95;191;;;
                                  -129549;1;0;false;false;;;;;;
                                  -129550;11;1;false;false;127;159;191;;;
                                  -129561;12;0;false;false;63;95;191;;;
                                  -129573;1;0;false;false;;;;;;
                                  -129574;4;0;false;false;127;127;159;;;
                                  -129578;3;0;false;false;;;;;;
                                  -129581;1;0;false;false;63;95;191;;;
                                  -129582;4;0;false;false;;;;;;
                                  -129586;4;0;false;false;127;127;159;;;
                                  -129590;21;0;false;false;63;95;191;;;
                                  -129611;1;0;false;false;;;;;;
                                  -129612;1;0;false;false;127;127;159;;;
                                  -129613;1;0;false;false;;;;;;
                                  -129614;2;0;false;false;63;95;191;;;
                                  -129616;1;0;false;false;;;;;;
                                  -129617;3;0;false;false;63;95;191;;;
                                  -129620;1;0;false;false;;;;;;
                                  -129621;8;0;false;false;63;95;191;;;
                                  -129629;1;0;false;false;;;;;;
                                  -129630;3;0;false;false;63;95;191;;;
                                  -129633;1;0;false;false;;;;;;
                                  -129634;4;0;false;false;63;95;191;;;
                                  -129638;1;0;false;false;;;;;;
                                  -129639;8;0;false;false;63;95;191;;;
                                  -129647;5;0;false;false;127;127;159;;;
                                  -129652;3;0;false;false;;;;;;
                                  -129655;1;0;false;false;63;95;191;;;
                                  -129656;4;0;false;false;;;;;;
                                  -129660;4;0;false;false;127;127;159;;;
                                  -129664;27;0;false;false;63;95;191;;;
                                  -129691;1;0;false;false;;;;;;
                                  -129692;1;0;false;false;127;127;159;;;
                                  -129693;1;0;false;false;;;;;;
                                  -129694;2;0;false;false;63;95;191;;;
                                  -129696;1;0;false;false;;;;;;
                                  -129697;3;0;false;false;63;95;191;;;
                                  -129700;1;0;false;false;;;;;;
                                  -129701;6;0;false;false;63;95;191;;;
                                  -129707;1;0;false;false;;;;;;
                                  -129708;4;0;false;false;63;95;191;;;
                                  -129712;1;0;false;false;;;;;;
                                  -129713;3;0;false;false;63;95;191;;;
                                  -129716;1;0;false;false;;;;;;
                                  -129717;6;0;false;false;63;95;191;;;
                                  -129723;1;0;false;false;;;;;;
                                  -129724;4;0;false;false;63;95;191;;;
                                  -129728;1;0;false;false;;;;;;
                                  -129729;7;0;false;false;63;95;191;;;
                                  -129736;1;0;false;false;;;;;;
                                  -129737;3;0;false;false;63;95;191;;;
                                  -129740;1;0;false;false;;;;;;
                                  -129741;8;0;false;false;63;95;191;;;
                                  -129749;5;0;false;false;127;127;159;;;
                                  -129754;3;0;false;false;;;;;;
                                  -129757;1;0;false;false;63;95;191;;;
                                  -129758;1;0;false;false;;;;;;
                                  -129759;5;0;false;false;127;127;159;;;
                                  -129764;3;0;false;false;;;;;;
                                  -129767;1;0;false;false;63;95;191;;;
                                  -129768;1;0;false;false;;;;;;
                                  -129769;11;1;false;false;127;159;191;;;
                                  -129780;24;0;false;false;63;95;191;;;
                                  -129804;1;0;false;false;;;;;;
                                  -129805;4;0;false;false;127;127;159;;;
                                  -129809;3;0;false;false;;;;;;
                                  -129812;1;0;false;false;63;95;191;;;
                                  -129813;3;0;false;false;;;;;;
                                  -129816;4;0;false;false;127;127;159;;;
                                  -129820;19;0;false;false;63;95;191;;;
                                  -129839;1;0;false;false;;;;;;
                                  -129840;4;0;false;false;63;95;191;;;
                                  -129844;1;0;false;false;;;;;;
                                  -129845;3;0;false;false;63;95;191;;;
                                  -129848;1;0;false;false;;;;;;
                                  -129849;6;0;false;false;63;95;191;;;
                                  -129855;1;0;false;false;;;;;;
                                  -129856;2;0;false;false;63;95;191;;;
                                  -129858;1;0;false;false;;;;;;
                                  -129859;7;0;false;false;63;95;191;;;
                                  -129866;1;0;false;false;;;;;;
                                  -129867;3;0;false;false;63;95;191;;;
                                  -129870;1;0;false;false;;;;;;
                                  -129871;5;0;false;false;63;95;191;;;
                                  -129876;1;0;false;false;;;;;;
                                  -129877;5;0;false;false;63;95;191;;;
                                  -129882;1;0;false;false;;;;;;
                                  -129883;9;0;false;false;63;95;191;;;
                                  -129892;1;0;false;false;;;;;;
                                  -129893;15;0;false;false;63;95;191;;;
                                  -129908;5;0;false;false;127;127;159;;;
                                  -129913;4;0;false;false;;;;;;
                                  -129917;1;0;false;false;63;95;191;;;
                                  -129918;1;0;false;false;;;;;;
                                  -129919;5;0;false;false;127;127;159;;;
                                  -129924;3;0;false;false;;;;;;
                                  -129927;2;0;false;false;63;95;191;;;
                                  -129929;2;0;false;false;;;;;;
                                  -129931;6;1;false;false;127;0;85;;;
                                  -129937;1;0;false;false;;;;;;
                                  -129938;5;0;false;false;0;0;0;;;
                                  -129943;1;0;false;false;;;;;;
                                  -129944;20;0;false;false;0;0;0;;;
                                  -129964;3;1;false;false;127;0;85;;;
                                  -129967;1;0;false;false;;;;;;
                                  -129968;7;0;false;false;0;0;0;;;
                                  -129975;1;0;false;false;;;;;;
                                  -129976;1;0;false;false;0;0;0;;;
                                  -129977;3;0;false;false;;;;;;
                                  -129980;14;0;false;false;0;0;0;;;
                                  -129994;3;0;false;false;;;;;;
                                  -129997;2;1;false;false;127;0;85;;;
                                  -129999;1;0;false;false;;;;;;
                                  -130000;7;0;false;false;0;0;0;;;
                                  -130007;1;0;false;false;;;;;;
                                  -130008;1;0;false;false;0;0;0;;;
                                  -130009;1;0;false;false;;;;;;
                                  -130010;1;0;false;false;0;0;0;;;
                                  -130011;1;0;false;false;;;;;;
                                  -130012;2;0;false;false;0;0;0;;;
                                  -130014;1;0;false;false;;;;;;
                                  -130015;6;0;false;false;0;0;0;;;
                                  -130021;1;0;false;false;;;;;;
                                  -130022;1;0;false;false;0;0;0;;;
                                  -130023;1;0;false;false;;;;;;
                                  -130024;15;0;false;false;0;0;0;;;
                                  -130039;1;0;false;false;;;;;;
                                  -130040;1;0;false;false;0;0;0;;;
                                  -130041;4;0;false;false;;;;;;
                                  -130045;35;0;false;false;0;0;0;;;
                                  -130080;5;0;false;false;;;;;;
                                  -130085;1;0;false;false;0;0;0;;;
                                  -130086;3;0;false;false;;;;;;
                                  -130089;3;1;false;false;127;0;85;;;
                                  -130092;1;0;false;false;;;;;;
                                  -130093;4;0;false;false;0;0;0;;;
                                  -130097;1;0;false;false;;;;;;
                                  -130098;1;0;false;false;0;0;0;;;
                                  -130099;1;0;false;false;;;;;;
                                  -130100;32;0;false;false;0;0;0;;;
                                  -130132;3;0;false;false;;;;;;
                                  -130135;3;1;false;false;127;0;85;;;
                                  -130138;1;0;false;false;;;;;;
                                  -130139;10;0;false;false;0;0;0;;;
                                  -130149;1;0;false;false;;;;;;
                                  -130150;1;0;false;false;0;0;0;;;
                                  -130151;1;0;false;false;;;;;;
                                  -130152;30;0;false;false;0;0;0;;;
                                  -130182;3;0;false;false;;;;;;
                                  -130185;6;0;false;false;0;0;0;;;
                                  -130191;1;0;false;false;;;;;;
                                  -130192;11;0;false;false;0;0;0;;;
                                  -130203;1;0;false;false;;;;;;
                                  -130204;1;0;false;false;0;0;0;;;
                                  -130205;1;0;false;false;;;;;;
                                  -130206;22;0;false;false;0;0;0;;;
                                  -130228;3;0;false;false;;;;;;
                                  -130231;3;1;false;false;127;0;85;;;
                                  -130234;1;0;false;false;;;;;;
                                  -130235;1;0;false;false;0;0;0;;;
                                  -130236;1;0;false;false;;;;;;
                                  -130237;1;0;false;false;0;0;0;;;
                                  -130238;1;0;false;false;;;;;;
                                  -130239;25;0;false;false;0;0;0;;;
                                  -130264;1;0;false;false;;;;;;
                                  -130265;5;0;false;false;0;0;0;;;
                                  -130270;1;0;false;false;;;;;;
                                  -130271;6;0;false;false;0;0;0;;;
                                  -130277;1;0;false;false;;;;;;
                                  -130278;1;0;false;false;0;0;0;;;
                                  -130279;1;0;false;false;;;;;;
                                  -130280;12;0;false;false;0;0;0;;;
                                  -130292;3;0;false;false;;;;;;
                                  -130295;3;1;false;false;127;0;85;;;
                                  -130298;1;0;false;false;;;;;;
                                  -130299;1;0;false;false;0;0;0;;;
                                  -130300;1;0;false;false;;;;;;
                                  -130301;1;0;false;false;0;0;0;;;
                                  -130302;1;0;false;false;;;;;;
                                  -130303;4;0;false;false;0;0;0;;;
                                  -130307;1;0;false;false;;;;;;
                                  -130308;1;0;false;false;0;0;0;;;
                                  -130309;1;0;false;false;;;;;;
                                  -130310;10;0;false;false;0;0;0;;;
                                  -130320;1;0;false;false;;;;;;
                                  -130321;1;0;false;false;0;0;0;;;
                                  -130322;1;0;false;false;;;;;;
                                  -130323;21;0;false;false;0;0;0;;;
                                  -130344;6;0;false;false;;;;;;
                                  -130350;6;1;false;false;127;0;85;;;
                                  -130356;1;0;false;false;;;;;;
                                  -130357;3;1;false;false;127;0;85;;;
                                  -130360;1;0;false;false;;;;;;
                                  -130361;8;0;false;false;0;0;0;;;
                                  -130369;1;0;false;false;;;;;;
                                  -130370;3;0;false;false;0;0;0;;;
                                  -130373;2;0;false;false;;;;;;
                                  -130375;1;0;false;false;0;0;0;;;
                                  -130376;2;0;false;false;;;;;;
                                  -130378;3;0;false;false;63;95;191;;;
                                  -130381;3;0;false;false;;;;;;
                                  -130384;1;0;false;false;63;95;191;;;
                                  -130385;1;0;false;false;;;;;;
                                  -130386;7;0;false;false;63;95;191;;;
                                  -130393;1;0;false;false;;;;;;
                                  -130394;3;0;false;false;63;95;191;;;
                                  -130397;1;0;false;false;;;;;;
                                  -130398;9;0;false;false;63;95;191;;;
                                  -130407;1;0;false;false;;;;;;
                                  -130408;6;0;false;false;63;95;191;;;
                                  -130414;1;0;false;false;;;;;;
                                  -130415;2;0;false;false;63;95;191;;;
                                  -130417;1;0;false;false;;;;;;
                                  -130418;3;0;false;false;63;95;191;;;
                                  -130421;1;0;false;false;;;;;;
                                  -130422;5;0;false;false;63;95;191;;;
                                  -130427;1;0;false;false;;;;;;
                                  -130428;9;0;false;false;63;95;191;;;
                                  -130437;1;0;false;false;;;;;;
                                  -130438;2;0;false;false;63;95;191;;;
                                  -130440;1;0;false;false;;;;;;
                                  -130441;3;0;false;false;63;95;191;;;
                                  -130444;1;0;false;false;;;;;;
                                  -130445;5;0;false;false;63;95;191;;;
                                  -130450;1;0;false;false;;;;;;
                                  -130451;5;0;false;false;63;95;191;;;
                                  -130456;3;0;false;false;;;;;;
                                  -130459;1;0;false;false;63;95;191;;;
                                  -130460;1;0;false;false;;;;;;
                                  -130461;3;0;false;false;127;127;159;;;
                                  -130464;3;0;false;false;;;;;;
                                  -130467;1;0;false;false;63;95;191;;;
                                  -130468;3;0;false;false;;;;;;
                                  -130471;1;0;false;false;63;95;191;;;
                                  -130472;1;0;false;false;;;;;;
                                  -130473;7;1;false;false;127;159;191;;;
                                  -130480;9;0;false;false;63;95;191;;;
                                  -130489;1;0;false;false;;;;;;
                                  -130490;5;0;false;false;63;95;191;;;
                                  -130495;1;0;false;false;;;;;;
                                  -130496;2;0;false;false;63;95;191;;;
                                  -130498;1;0;false;false;;;;;;
                                  -130499;3;0;false;false;63;95;191;;;
                                  -130502;1;0;false;false;;;;;;
                                  -130503;5;0;false;false;63;95;191;;;
                                  -130508;1;0;false;false;;;;;;
                                  -130509;1;0;false;false;63;95;191;;;
                                  -130510;1;0;false;false;;;;;;
                                  -130511;5;0;false;false;63;95;191;;;
                                  -130516;1;0;false;false;;;;;;
                                  -130517;8;0;false;false;63;95;191;;;
                                  -130525;1;0;false;false;;;;;;
                                  -130526;2;0;false;false;63;95;191;;;
                                  -130528;1;0;false;false;;;;;;
                                  -130529;3;0;false;false;63;95;191;;;
                                  -130532;1;0;false;false;;;;;;
                                  -130533;5;0;false;false;63;95;191;;;
                                  -130538;4;0;false;false;;;;;;
                                  -130542;1;0;false;false;63;95;191;;;
                                  -130543;2;0;false;false;;;;;;
                                  -130545;4;0;false;false;63;95;191;;;
                                  -130549;1;0;false;false;;;;;;
                                  -130550;2;0;false;false;63;95;191;;;
                                  -130552;1;0;false;false;;;;;;
                                  -130553;3;0;false;false;63;95;191;;;
                                  -130556;1;0;false;false;;;;;;
                                  -130557;8;0;false;false;63;95;191;;;
                                  -130565;1;0;false;false;;;;;;
                                  -130566;1;0;false;false;63;95;191;;;
                                  -130567;1;0;false;false;;;;;;
                                  -130568;39;0;false;false;63;95;191;;;
                                  -130607;1;0;false;false;;;;;;
                                  -130608;1;0;false;false;63;95;191;;;
                                  -130609;2;0;false;false;;;;;;
                                  -130611;9;0;false;false;63;95;191;;;
                                  -130620;1;0;false;false;;;;;;
                                  -130621;3;0;false;false;63;95;191;;;
                                  -130624;1;0;false;false;;;;;;
                                  -130625;6;0;false;false;63;95;191;;;
                                  -130631;1;0;false;false;;;;;;
                                  -130632;2;0;false;false;63;95;191;;;
                                  -130634;1;0;false;false;;;;;;
                                  -130635;1;0;false;false;63;95;191;;;
                                  -130636;3;0;false;false;;;;;;
                                  -130639;1;0;false;false;63;95;191;;;
                                  -130640;1;0;false;false;;;;;;
                                  -130641;8;1;false;false;127;159;191;;;
                                  -130649;6;0;false;false;63;95;191;;;
                                  -130655;1;0;false;false;;;;;;
                                  -130656;6;0;false;false;63;95;191;;;
                                  -130662;1;0;false;false;;;;;;
                                  -130663;2;0;false;false;63;95;191;;;
                                  -130665;1;0;false;false;;;;;;
                                  -130666;3;0;false;false;63;95;191;;;
                                  -130669;1;0;false;false;;;;;;
                                  -130670;5;0;false;false;63;95;191;;;
                                  -130675;1;0;false;false;;;;;;
                                  -130676;9;0;false;false;63;95;191;;;
                                  -130685;1;0;false;false;;;;;;
                                  -130686;2;0;false;false;63;95;191;;;
                                  -130688;1;0;false;false;;;;;;
                                  -130689;3;0;false;false;63;95;191;;;
                                  -130692;1;0;false;false;;;;;;
                                  -130693;5;0;false;false;63;95;191;;;
                                  -130698;1;0;false;false;;;;;;
                                  -130699;8;0;false;false;63;95;191;;;
                                  -130707;1;0;false;false;;;;;;
                                  -130708;2;0;false;false;63;95;191;;;
                                  -130710;3;0;false;false;;;;;;
                                  -130713;1;0;false;false;63;95;191;;;
                                  -130714;2;0;false;false;;;;;;
                                  -130716;3;0;false;false;63;95;191;;;
                                  -130719;1;0;false;false;;;;;;
                                  -130720;9;0;false;false;63;95;191;;;
                                  -130729;1;0;false;false;;;;;;
                                  -130730;2;0;false;false;63;95;191;;;
                                  -130732;1;0;false;false;;;;;;
                                  -130733;3;0;false;false;63;95;191;;;
                                  -130736;1;0;false;false;;;;;;
                                  -130737;9;0;false;false;63;95;191;;;
                                  -130746;1;0;false;false;;;;;;
                                  -130747;3;0;false;false;63;95;191;;;
                                  -130750;1;0;false;false;;;;;;
                                  -130751;5;0;false;false;63;95;191;;;
                                  -130756;1;0;false;false;;;;;;
                                  -130757;9;0;false;false;63;95;191;;;
                                  -130766;1;0;false;false;;;;;;
                                  -130767;2;0;false;false;63;95;191;;;
                                  -130769;1;0;false;false;;;;;;
                                  -130770;3;0;false;false;63;95;191;;;
                                  -130773;1;0;false;false;;;;;;
                                  -130774;8;0;false;false;63;95;191;;;
                                  -130782;1;0;false;false;;;;;;
                                  -130783;2;0;false;false;63;95;191;;;
                                  -130785;3;0;false;false;;;;;;
                                  -130788;1;0;false;false;63;95;191;;;
                                  -130789;1;0;false;false;;;;;;
                                  -130790;2;0;false;false;63;95;191;;;
                                  -130792;1;0;false;false;;;;;;
                                  -130793;6;0;false;false;63;95;191;;;
                                  -130799;1;0;false;false;;;;;;
                                  -130800;2;0;false;false;63;95;191;;;
                                  -130802;5;0;false;false;;;;;;
                                  -130807;1;0;false;false;63;95;191;;;
                                  -130808;2;0;false;false;;;;;;
                                  -130810;4;0;false;false;63;95;191;;;
                                  -130814;1;0;false;false;;;;;;
                                  -130815;5;0;false;false;63;95;191;;;
                                  -130820;1;0;false;false;;;;;;
                                  -130821;3;0;false;false;63;95;191;;;
                                  -130824;1;0;false;false;;;;;;
                                  -130825;3;0;false;false;63;95;191;;;
                                  -130828;1;0;false;false;;;;;;
                                  -130829;3;0;false;false;63;95;191;;;
                                  -130832;1;0;false;false;;;;;;
                                  -130833;6;0;false;false;63;95;191;;;
                                  -130839;1;0;false;false;;;;;;
                                  -130840;18;0;false;false;63;95;191;;;
                                  -130858;1;0;false;false;;;;;;
                                  -130859;2;0;false;false;63;95;191;;;
                                  -130861;1;0;false;false;;;;;;
                                  -130862;1;0;false;false;63;95;191;;;
                                  -130863;1;0;false;false;;;;;;
                                  -130864;5;0;false;false;63;95;191;;;
                                  -130869;1;0;false;false;;;;;;
                                  -130870;4;0;false;false;63;95;191;;;
                                  -130874;1;0;false;false;;;;;;
                                  -130875;4;0;false;false;63;95;191;;;
                                  -130879;4;0;false;false;;;;;;
                                  -130883;1;0;false;false;63;95;191;;;
                                  -130884;2;0;false;false;;;;;;
                                  -130886;7;0;false;false;63;95;191;;;
                                  -130893;1;0;false;false;;;;;;
                                  -130894;2;0;false;false;63;95;191;;;
                                  -130896;3;0;false;false;;;;;;
                                  -130899;1;0;false;false;63;95;191;;;
                                  -130900;1;0;false;false;;;;;;
                                  -130901;11;1;false;false;127;159;191;;;
                                  -130912;12;0;false;false;63;95;191;;;
                                  -130924;1;0;false;false;;;;;;
                                  -130925;4;0;false;false;127;127;159;;;
                                  -130929;3;0;false;false;;;;;;
                                  -130932;1;0;false;false;63;95;191;;;
                                  -130933;4;0;false;false;;;;;;
                                  -130937;4;0;false;false;127;127;159;;;
                                  -130941;21;0;false;false;63;95;191;;;
                                  -130962;1;0;false;false;;;;;;
                                  -130963;1;0;false;false;127;127;159;;;
                                  -130964;1;0;false;false;;;;;;
                                  -130965;2;0;false;false;63;95;191;;;
                                  -130967;1;0;false;false;;;;;;
                                  -130968;3;0;false;false;63;95;191;;;
                                  -130971;1;0;false;false;;;;;;
                                  -130972;8;0;false;false;63;95;191;;;
                                  -130980;1;0;false;false;;;;;;
                                  -130981;3;0;false;false;63;95;191;;;
                                  -130984;1;0;false;false;;;;;;
                                  -130985;4;0;false;false;63;95;191;;;
                                  -130989;1;0;false;false;;;;;;
                                  -130990;8;0;false;false;63;95;191;;;
                                  -130998;5;0;false;false;127;127;159;;;
                                  -131003;3;0;false;false;;;;;;
                                  -131006;1;0;false;false;63;95;191;;;
                                  -131007;4;0;false;false;;;;;;
                                  -131011;4;0;false;false;127;127;159;;;
                                  -131015;27;0;false;false;63;95;191;;;
                                  -131042;1;0;false;false;;;;;;
                                  -131043;1;0;false;false;127;127;159;;;
                                  -131044;1;0;false;false;;;;;;
                                  -131045;2;0;false;false;63;95;191;;;
                                  -131047;1;0;false;false;;;;;;
                                  -131048;3;0;false;false;63;95;191;;;
                                  -131051;1;0;false;false;;;;;;
                                  -131052;6;0;false;false;63;95;191;;;
                                  -131058;1;0;false;false;;;;;;
                                  -131059;4;0;false;false;63;95;191;;;
                                  -131063;1;0;false;false;;;;;;
                                  -131064;3;0;false;false;63;95;191;;;
                                  -131067;1;0;false;false;;;;;;
                                  -131068;6;0;false;false;63;95;191;;;
                                  -131074;1;0;false;false;;;;;;
                                  -131075;4;0;false;false;63;95;191;;;
                                  -131079;1;0;false;false;;;;;;
                                  -131080;7;0;false;false;63;95;191;;;
                                  -131087;1;0;false;false;;;;;;
                                  -131088;3;0;false;false;63;95;191;;;
                                  -131091;1;0;false;false;;;;;;
                                  -131092;8;0;false;false;63;95;191;;;
                                  -131100;5;0;false;false;127;127;159;;;
                                  -131105;3;0;false;false;;;;;;
                                  -131108;1;0;false;false;63;95;191;;;
                                  -131109;1;0;false;false;;;;;;
                                  -131110;5;0;false;false;127;127;159;;;
                                  -131115;3;0;false;false;;;;;;
                                  -131118;1;0;false;false;63;95;191;;;
                                  -131119;1;0;false;false;;;;;;
                                  -131120;11;1;false;false;127;159;191;;;
                                  -131131;24;0;false;false;63;95;191;;;
                                  -131155;1;0;false;false;;;;;;
                                  -131156;4;0;false;false;127;127;159;;;
                                  -131160;3;0;false;false;;;;;;
                                  -131163;1;0;false;false;63;95;191;;;
                                  -131164;3;0;false;false;;;;;;
                                  -131167;4;0;false;false;127;127;159;;;
                                  -131171;19;0;false;false;63;95;191;;;
                                  -131190;1;0;false;false;;;;;;
                                  -131191;4;0;false;false;63;95;191;;;
                                  -131195;1;0;false;false;;;;;;
                                  -131196;3;0;false;false;63;95;191;;;
                                  -131199;1;0;false;false;;;;;;
                                  -131200;6;0;false;false;63;95;191;;;
                                  -131206;1;0;false;false;;;;;;
                                  -131207;2;0;false;false;63;95;191;;;
                                  -131209;1;0;false;false;;;;;;
                                  -131210;7;0;false;false;63;95;191;;;
                                  -131217;1;0;false;false;;;;;;
                                  -131218;3;0;false;false;63;95;191;;;
                                  -131221;1;0;false;false;;;;;;
                                  -131222;5;0;false;false;63;95;191;;;
                                  -131227;1;0;false;false;;;;;;
                                  -131228;5;0;false;false;63;95;191;;;
                                  -131233;1;0;false;false;;;;;;
                                  -131234;9;0;false;false;63;95;191;;;
                                  -131243;1;0;false;false;;;;;;
                                  -131244;15;0;false;false;63;95;191;;;
                                  -131259;5;0;false;false;127;127;159;;;
                                  -131264;4;0;false;false;;;;;;
                                  -131268;1;0;false;false;63;95;191;;;
                                  -131269;1;0;false;false;;;;;;
                                  -131270;5;0;false;false;127;127;159;;;
                                  -131275;3;0;false;false;;;;;;
                                  -131278;1;0;false;false;63;95;191;;;
                                  -131279;1;0;false;false;;;;;;
                                  -131280;7;1;false;false;127;159;191;;;
                                  -131287;3;0;false;false;63;95;191;;;
                                  -131290;3;0;false;false;;;;;;
                                  -131293;2;0;false;false;63;95;191;;;
                                  -131295;2;0;false;false;;;;;;
                                  -131297;6;1;false;false;127;0;85;;;
                                  -131303;1;0;false;false;;;;;;
                                  -131304;3;1;false;false;127;0;85;;;
                                  -131307;1;0;false;false;;;;;;
                                  -131308;16;0;false;false;0;0;0;;;
                                  -131324;3;1;false;false;127;0;85;;;
                                  -131327;1;0;false;false;;;;;;
                                  -131328;10;0;false;false;0;0;0;;;
                                  -131338;1;0;false;false;;;;;;
                                  -131339;1;0;false;false;0;0;0;;;
                                  -131340;3;0;false;false;;;;;;
                                  -131343;14;0;false;false;0;0;0;;;
                                  -131357;6;0;false;false;;;;;;
                                  -131363;2;1;false;false;127;0;85;;;
                                  -131365;1;0;false;false;;;;;;
                                  -131366;10;0;false;false;0;0;0;;;
                                  -131376;1;0;false;false;;;;;;
                                  -131377;1;0;false;false;0;0;0;;;
                                  -131378;1;0;false;false;;;;;;
                                  -131379;1;0;false;false;0;0;0;;;
                                  -131380;1;0;false;false;;;;;;
                                  -131381;2;0;false;false;0;0;0;;;
                                  -131383;5;0;false;false;;;;;;
                                  -131388;10;0;false;false;0;0;0;;;
                                  -131398;1;0;false;false;;;;;;
                                  -131399;1;0;false;false;0;0;0;;;
                                  -131400;1;0;false;false;;;;;;
                                  -131401;1;0;false;false;0;0;0;;;
                                  -131402;1;0;false;false;;;;;;
                                  -131403;2;0;false;false;0;0;0;;;
                                  -131405;1;0;false;false;;;;;;
                                  -131406;9;0;false;false;0;0;0;;;
                                  -131415;1;0;false;false;;;;;;
                                  -131416;2;0;false;false;0;0;0;;;
                                  -131418;1;0;false;false;;;;;;
                                  -131419;31;0;false;false;0;0;0;;;
                                  -131450;1;0;false;false;;;;;;
                                  -131451;1;0;false;false;0;0;0;;;
                                  -131452;4;0;false;false;;;;;;
                                  -131456;35;0;false;false;0;0;0;;;
                                  -131491;5;0;false;false;;;;;;
                                  -131496;1;0;false;false;0;0;0;;;
                                  -131497;3;0;false;false;;;;;;
                                  -131500;6;1;false;false;127;0;85;;;
                                  -131506;1;0;false;false;;;;;;
                                  -131507;42;0;false;false;0;0;0;;;
                                  -131549;2;0;false;false;;;;;;
                                  -131551;1;0;false;false;0;0;0;;;
                                  -131552;2;0;false;false;;;;;;
                                  -131554;3;0;false;false;63;95;191;;;
                                  -131557;3;0;false;false;;;;;;
                                  -131560;1;0;false;false;63;95;191;;;
                                  -131561;1;0;false;false;;;;;;
                                  -131562;7;0;false;false;63;95;191;;;
                                  -131569;1;0;false;false;;;;;;
                                  -131570;3;0;false;false;63;95;191;;;
                                  -131573;1;0;false;false;;;;;;
                                  -131574;6;0;false;false;63;95;191;;;
                                  -131580;1;0;false;false;;;;;;
                                  -131581;2;0;false;false;63;95;191;;;
                                  -131583;1;0;false;false;;;;;;
                                  -131584;3;0;false;false;63;95;191;;;
                                  -131587;1;0;false;false;;;;;;
                                  -131588;9;0;false;false;63;95;191;;;
                                  -131597;1;0;false;false;;;;;;
                                  -131598;2;0;false;false;63;95;191;;;
                                  -131600;1;0;false;false;;;;;;
                                  -131601;3;0;false;false;63;95;191;;;
                                  -131604;1;0;false;false;;;;;;
                                  -131605;5;0;false;false;63;95;191;;;
                                  -131610;1;0;false;false;;;;;;
                                  -131611;8;0;false;false;63;95;191;;;
                                  -131619;1;0;false;false;;;;;;
                                  -131620;8;0;false;false;63;95;191;;;
                                  -131628;4;0;false;false;;;;;;
                                  -131632;1;0;false;false;63;95;191;;;
                                  -131633;1;0;false;false;;;;;;
                                  -131634;2;0;false;false;63;95;191;;;
                                  -131636;1;0;false;false;;;;;;
                                  -131637;3;0;false;false;63;95;191;;;
                                  -131640;1;0;false;false;;;;;;
                                  -131641;5;0;false;false;63;95;191;;;
                                  -131646;1;0;false;false;;;;;;
                                  -131647;9;0;false;false;63;95;191;;;
                                  -131656;1;0;false;false;;;;;;
                                  -131657;2;0;false;false;63;95;191;;;
                                  -131659;1;0;false;false;;;;;;
                                  -131660;3;0;false;false;63;95;191;;;
                                  -131663;1;0;false;false;;;;;;
                                  -131664;9;0;false;false;63;95;191;;;
                                  -131673;3;0;false;false;;;;;;
                                  -131676;1;0;false;false;63;95;191;;;
                                  -131677;1;0;false;false;;;;;;
                                  -131678;3;0;false;false;63;95;191;;;
                                  -131681;1;0;false;false;;;;;;
                                  -131682;6;0;false;false;63;95;191;;;
                                  -131688;1;0;false;false;;;;;;
                                  -131689;5;0;false;false;63;95;191;;;
                                  -131694;1;0;false;false;;;;;;
                                  -131695;8;0;false;false;63;95;191;;;
                                  -131703;1;0;false;false;;;;;;
                                  -131704;3;0;false;false;63;95;191;;;
                                  -131707;1;0;false;false;;;;;;
                                  -131708;9;0;false;false;63;95;191;;;
                                  -131717;1;0;false;false;;;;;;
                                  -131718;6;0;false;false;63;95;191;;;
                                  -131724;1;0;false;false;;;;;;
                                  -131725;4;0;false;false;63;95;191;;;
                                  -131729;1;0;false;false;;;;;;
                                  -131730;3;0;false;false;63;95;191;;;
                                  -131733;1;0;false;false;;;;;;
                                  -131734;5;0;false;false;63;95;191;;;
                                  -131739;1;0;false;false;;;;;;
                                  -131740;4;0;false;false;63;95;191;;;
                                  -131744;3;0;false;false;;;;;;
                                  -131747;1;0;false;false;63;95;191;;;
                                  -131748;1;0;false;false;;;;;;
                                  -131749;2;0;false;false;63;95;191;;;
                                  -131751;1;0;false;false;;;;;;
                                  -131752;6;0;false;false;63;95;191;;;
                                  -131758;1;0;false;false;;;;;;
                                  -131759;2;0;false;false;63;95;191;;;
                                  -131761;1;0;false;false;;;;;;
                                  -131762;2;0;false;false;63;95;191;;;
                                  -131764;1;0;false;false;;;;;;
                                  -131765;1;0;false;false;63;95;191;;;
                                  -131766;1;0;false;false;;;;;;
                                  -131767;5;0;false;false;63;95;191;;;
                                  -131772;1;0;false;false;;;;;;
                                  -131773;5;0;false;false;63;95;191;;;
                                  -131778;1;0;false;false;;;;;;
                                  -131779;8;0;false;false;63;95;191;;;
                                  -131787;1;0;false;false;;;;;;
                                  -131788;2;0;false;false;63;95;191;;;
                                  -131790;1;0;false;false;;;;;;
                                  -131791;3;0;false;false;63;95;191;;;
                                  -131794;1;0;false;false;;;;;;
                                  -131795;9;0;false;false;63;95;191;;;
                                  -131804;1;0;false;false;;;;;;
                                  -131805;9;0;false;false;63;95;191;;;
                                  -131814;3;0;false;false;;;;;;
                                  -131817;1;0;false;false;63;95;191;;;
                                  -131818;1;0;false;false;;;;;;
                                  -131819;2;0;false;false;63;95;191;;;
                                  -131821;1;0;false;false;;;;;;
                                  -131822;3;0;false;false;63;95;191;;;
                                  -131825;1;0;false;false;;;;;;
                                  -131826;1;0;false;false;63;95;191;;;
                                  -131827;1;0;false;false;;;;;;
                                  -131828;10;0;false;false;63;95;191;;;
                                  -131838;1;0;false;false;;;;;;
                                  -131839;2;0;false;false;63;95;191;;;
                                  -131841;1;0;false;false;;;;;;
                                  -131842;3;0;false;false;63;95;191;;;
                                  -131845;1;0;false;false;;;;;;
                                  -131846;8;0;false;false;63;95;191;;;
                                  -131854;1;0;false;false;;;;;;
                                  -131855;2;0;false;false;63;95;191;;;
                                  -131857;1;0;false;false;;;;;;
                                  -131858;6;0;false;false;63;95;191;;;
                                  -131864;1;0;false;false;;;;;;
                                  -131865;3;0;false;false;63;95;191;;;
                                  -131868;1;0;false;false;;;;;;
                                  -131869;6;0;false;false;63;95;191;;;
                                  -131875;1;0;false;false;;;;;;
                                  -131876;2;0;false;false;63;95;191;;;
                                  -131878;1;0;false;false;;;;;;
                                  -131879;1;0;false;false;63;95;191;;;
                                  -131880;1;0;false;false;;;;;;
                                  -131881;9;0;false;false;63;95;191;;;
                                  -131890;3;0;false;false;;;;;;
                                  -131893;1;0;false;false;63;95;191;;;
                                  -131894;1;0;false;false;;;;;;
                                  -131895;3;0;false;false;63;95;191;;;
                                  -131898;1;0;false;false;;;;;;
                                  -131899;8;0;false;false;63;95;191;;;
                                  -131907;1;0;false;false;;;;;;
                                  -131908;6;0;false;false;63;95;191;;;
                                  -131914;1;0;false;false;;;;;;
                                  -131915;4;0;false;false;63;95;191;;;
                                  -131919;1;0;false;false;;;;;;
                                  -131920;2;0;false;false;63;95;191;;;
                                  -131922;1;0;false;false;;;;;;
                                  -131923;6;0;false;false;63;95;191;;;
                                  -131929;1;0;false;false;;;;;;
                                  -131930;3;0;false;false;63;95;191;;;
                                  -131933;1;0;false;false;;;;;;
                                  -131934;10;0;false;false;63;95;191;;;
                                  -131944;3;0;false;false;;;;;;
                                  -131947;1;0;false;false;63;95;191;;;
                                  -131948;1;0;false;false;;;;;;
                                  -131949;3;0;false;false;127;127;159;;;
                                  -131952;3;0;false;false;;;;;;
                                  -131955;1;0;false;false;63;95;191;;;
                                  -131956;3;0;false;false;;;;;;
                                  -131959;1;0;false;false;63;95;191;;;
                                  -131960;1;0;false;false;;;;;;
                                  -131961;7;1;false;false;127;159;191;;;
                                  -131968;5;0;false;false;63;95;191;;;
                                  -131973;1;0;false;false;;;;;;
                                  -131974;3;0;false;false;63;95;191;;;
                                  -131977;1;0;false;false;;;;;;
                                  -131978;6;0;false;false;63;95;191;;;
                                  -131984;1;0;false;false;;;;;;
                                  -131985;2;0;false;false;63;95;191;;;
                                  -131987;1;0;false;false;;;;;;
                                  -131988;9;0;false;false;63;95;191;;;
                                  -131997;1;0;false;false;;;;;;
                                  -131998;8;0;false;false;63;95;191;;;
                                  -132006;1;0;false;false;;;;;;
                                  -132007;3;0;false;false;63;95;191;;;
                                  -132010;1;0;false;false;;;;;;
                                  -132011;8;0;false;false;63;95;191;;;
                                  -132019;1;0;false;false;;;;;;
                                  -132020;2;0;false;false;63;95;191;;;
                                  -132022;4;0;false;false;;;;;;
                                  -132026;1;0;false;false;63;95;191;;;
                                  -132027;2;0;false;false;;;;;;
                                  -132029;3;0;false;false;63;95;191;;;
                                  -132032;1;0;false;false;;;;;;
                                  -132033;6;0;false;false;63;95;191;;;
                                  -132039;1;0;false;false;;;;;;
                                  -132040;2;0;false;false;63;95;191;;;
                                  -132042;1;0;false;false;;;;;;
                                  -132043;3;0;false;false;63;95;191;;;
                                  -132046;1;0;false;false;;;;;;
                                  -132047;6;0;false;false;63;95;191;;;
                                  -132053;1;0;false;false;;;;;;
                                  -132054;6;0;false;false;63;95;191;;;
                                  -132060;1;0;false;false;;;;;;
                                  -132061;5;0;false;false;63;95;191;;;
                                  -132066;3;0;false;false;;;;;;
                                  -132069;1;0;false;false;63;95;191;;;
                                  -132070;1;0;false;false;;;;;;
                                  -132071;8;1;false;false;127;159;191;;;
                                  -132079;6;0;false;false;63;95;191;;;
                                  -132085;1;0;false;false;;;;;;
                                  -132086;2;0;false;false;63;95;191;;;
                                  -132088;1;0;false;false;;;;;;
                                  -132089;3;0;false;false;63;95;191;;;
                                  -132092;1;0;false;false;;;;;;
                                  -132093;9;0;false;false;63;95;191;;;
                                  -132102;1;0;false;false;;;;;;
                                  -132103;2;0;false;false;63;95;191;;;
                                  -132105;1;0;false;false;;;;;;
                                  -132106;3;0;false;false;63;95;191;;;
                                  -132109;1;0;false;false;;;;;;
                                  -132110;5;0;false;false;63;95;191;;;
                                  -132115;1;0;false;false;;;;;;
                                  -132116;8;0;false;false;63;95;191;;;
                                  -132124;1;0;false;false;;;;;;
                                  -132125;8;0;false;false;63;95;191;;;
                                  -132133;4;0;false;false;;;;;;
                                  -132137;1;0;false;false;63;95;191;;;
                                  -132138;2;0;false;false;;;;;;
                                  -132140;2;0;false;false;63;95;191;;;
                                  -132142;1;0;false;false;;;;;;
                                  -132143;3;0;false;false;63;95;191;;;
                                  -132146;1;0;false;false;;;;;;
                                  -132147;5;0;false;false;63;95;191;;;
                                  -132152;1;0;false;false;;;;;;
                                  -132153;9;0;false;false;63;95;191;;;
                                  -132162;1;0;false;false;;;;;;
                                  -132163;2;0;false;false;63;95;191;;;
                                  -132165;1;0;false;false;;;;;;
                                  -132166;3;0;false;false;63;95;191;;;
                                  -132169;1;0;false;false;;;;;;
                                  -132170;9;0;false;false;63;95;191;;;
                                  -132179;3;0;false;false;;;;;;
                                  -132182;1;0;false;false;63;95;191;;;
                                  -132183;1;0;false;false;;;;;;
                                  -132184;11;1;false;false;127;159;191;;;
                                  -132195;12;0;false;false;63;95;191;;;
                                  -132207;1;0;false;false;;;;;;
                                  -132208;4;0;false;false;127;127;159;;;
                                  -132212;3;0;false;false;;;;;;
                                  -132215;1;0;false;false;63;95;191;;;
                                  -132216;4;0;false;false;;;;;;
                                  -132220;4;0;false;false;127;127;159;;;
                                  -132224;21;0;false;false;63;95;191;;;
                                  -132245;1;0;false;false;;;;;;
                                  -132246;1;0;false;false;127;127;159;;;
                                  -132247;1;0;false;false;;;;;;
                                  -132248;2;0;false;false;63;95;191;;;
                                  -132250;1;0;false;false;;;;;;
                                  -132251;3;0;false;false;63;95;191;;;
                                  -132254;1;0;false;false;;;;;;
                                  -132255;8;0;false;false;63;95;191;;;
                                  -132263;1;0;false;false;;;;;;
                                  -132264;3;0;false;false;63;95;191;;;
                                  -132267;1;0;false;false;;;;;;
                                  -132268;4;0;false;false;63;95;191;;;
                                  -132272;1;0;false;false;;;;;;
                                  -132273;8;0;false;false;63;95;191;;;
                                  -132281;5;0;false;false;127;127;159;;;
                                  -132286;3;0;false;false;;;;;;
                                  -132289;1;0;false;false;63;95;191;;;
                                  -132290;4;0;false;false;;;;;;
                                  -132294;4;0;false;false;127;127;159;;;
                                  -132298;27;0;false;false;63;95;191;;;
                                  -132325;1;0;false;false;;;;;;
                                  -132326;1;0;false;false;127;127;159;;;
                                  -132327;1;0;false;false;;;;;;
                                  -132328;2;0;false;false;63;95;191;;;
                                  -132330;1;0;false;false;;;;;;
                                  -132331;3;0;false;false;63;95;191;;;
                                  -132334;1;0;false;false;;;;;;
                                  -132335;6;0;false;false;63;95;191;;;
                                  -132341;1;0;false;false;;;;;;
                                  -132342;4;0;false;false;63;95;191;;;
                                  -132346;1;0;false;false;;;;;;
                                  -132347;3;0;false;false;63;95;191;;;
                                  -132350;1;0;false;false;;;;;;
                                  -132351;6;0;false;false;63;95;191;;;
                                  -132357;1;0;false;false;;;;;;
                                  -132358;4;0;false;false;63;95;191;;;
                                  -132362;1;0;false;false;;;;;;
                                  -132363;7;0;false;false;63;95;191;;;
                                  -132370;1;0;false;false;;;;;;
                                  -132371;3;0;false;false;63;95;191;;;
                                  -132374;1;0;false;false;;;;;;
                                  -132375;8;0;false;false;63;95;191;;;
                                  -132383;5;0;false;false;127;127;159;;;
                                  -132388;3;0;false;false;;;;;;
                                  -132391;1;0;false;false;63;95;191;;;
                                  -132392;1;0;false;false;;;;;;
                                  -132393;5;0;false;false;127;127;159;;;
                                  -132398;3;0;false;false;;;;;;
                                  -132401;1;0;false;false;63;95;191;;;
                                  -132402;1;0;false;false;;;;;;
                                  -132403;11;1;false;false;127;159;191;;;
                                  -132414;24;0;false;false;63;95;191;;;
                                  -132438;1;0;false;false;;;;;;
                                  -132439;4;0;false;false;127;127;159;;;
                                  -132443;3;0;false;false;;;;;;
                                  -132446;1;0;false;false;63;95;191;;;
                                  -132447;3;0;false;false;;;;;;
                                  -132450;4;0;false;false;127;127;159;;;
                                  -132454;19;0;false;false;63;95;191;;;
                                  -132473;1;0;false;false;;;;;;
                                  -132474;4;0;false;false;63;95;191;;;
                                  -132478;1;0;false;false;;;;;;
                                  -132479;5;0;false;false;63;95;191;;;
                                  -132484;1;0;false;false;;;;;;
                                  -132485;2;0;false;false;63;95;191;;;
                                  -132487;1;0;false;false;;;;;;
                                  -132488;4;0;false;false;63;95;191;;;
                                  -132492;5;0;false;false;127;127;159;;;
                                  -132497;3;0;false;false;;;;;;
                                  -132500;1;0;false;false;63;95;191;;;
                                  -132501;3;0;false;false;;;;;;
                                  -132504;4;0;false;false;127;127;159;;;
                                  -132508;22;0;false;false;63;95;191;;;
                                  -132530;1;0;false;false;;;;;;
                                  -132531;4;0;false;false;63;95;191;;;
                                  -132535;1;0;false;false;;;;;;
                                  -132536;5;0;false;false;63;95;191;;;
                                  -132541;1;0;false;false;;;;;;
                                  -132542;2;0;false;false;63;95;191;;;
                                  -132544;1;0;false;false;;;;;;
                                  -132545;2;0;false;false;63;95;191;;;
                                  -132547;1;0;false;false;;;;;;
                                  -132548;9;0;false;false;63;95;191;;;
                                  -132557;1;0;false;false;;;;;;
                                  -132558;2;0;false;false;63;95;191;;;
                                  -132560;1;0;false;false;;;;;;
                                  -132561;3;0;false;false;63;95;191;;;
                                  -132564;1;0;false;false;;;;;;
                                  -132565;9;0;false;false;63;95;191;;;
                                  -132574;1;0;false;false;;;;;;
                                  -132575;8;0;false;false;63;95;191;;;
                                  -132583;5;0;false;false;127;127;159;;;
                                  -132588;3;0;false;false;;;;;;
                                  -132591;1;0;false;false;63;95;191;;;
                                  -132592;1;0;false;false;;;;;;
                                  -132593;5;0;false;false;127;127;159;;;
                                  -132598;3;0;false;false;;;;;;
                                  -132601;2;0;false;false;63;95;191;;;
                                  -132603;2;0;false;false;;;;;;
                                  -132605;6;1;false;false;127;0;85;;;
                                  -132611;1;0;false;false;;;;;;
                                  -132612;3;1;false;false;127;0;85;;;
                                  -132615;1;0;false;false;;;;;;
                                  -132616;25;0;false;false;0;0;0;;;
                                  -132641;1;0;false;false;;;;;;
                                  -132642;6;0;false;false;0;0;0;;;
                                  -132648;1;0;false;false;;;;;;
                                  -132649;1;0;false;false;0;0;0;;;
                                  -132650;3;0;false;false;;;;;;
                                  -132653;14;0;false;false;0;0;0;;;
                                  -132667;3;0;false;false;;;;;;
                                  -132670;10;0;false;false;0;0;0;;;
                                  -132680;1;0;false;false;;;;;;
                                  -132681;7;0;false;false;0;0;0;;;
                                  -132688;3;0;false;false;;;;;;
                                  -132691;3;1;false;false;127;0;85;;;
                                  -132694;1;0;false;false;;;;;;
                                  -132695;5;0;false;false;0;0;0;;;
                                  -132700;3;0;false;false;;;;;;
                                  -132703;3;1;false;false;127;0;85;;;
                                  -132706;1;0;false;false;;;;;;
                                  -132707;11;0;false;false;0;0;0;;;
                                  -132718;3;0;false;false;;;;;;
                                  -132721;3;1;false;false;127;0;85;;;
                                  -132724;1;0;false;false;;;;;;
                                  -132725;13;0;false;false;0;0;0;;;
                                  -132738;3;0;false;false;;;;;;
                                  -132741;6;0;false;false;0;0;0;;;
                                  -132747;1;0;false;false;;;;;;
                                  -132748;9;0;false;false;0;0;0;;;
                                  -132757;6;0;false;false;;;;;;
                                  -132763;2;1;false;false;127;0;85;;;
                                  -132765;1;0;false;false;;;;;;
                                  -132766;6;0;false;false;0;0;0;;;
                                  -132772;1;0;false;false;;;;;;
                                  -132773;2;0;false;false;0;0;0;;;
                                  -132775;1;0;false;false;;;;;;
                                  -132776;4;1;false;false;127;0;85;;;
                                  -132780;1;0;false;false;0;0;0;;;
                                  -132781;1;0;false;false;;;;;;
                                  -132782;1;0;false;false;0;0;0;;;
                                  -132783;4;0;false;false;;;;;;
                                  -132787;35;0;false;false;0;0;0;;;
                                  -132822;3;0;false;false;;;;;;
                                  -132825;1;0;false;false;0;0;0;;;
                                  -132826;3;0;false;false;;;;;;
                                  -132829;55;0;false;false;63;127;95;;;
                                  -132884;1;0;false;false;;;;;;
                                  -132885;2;1;false;false;127;0;85;;;
                                  -132887;1;0;false;false;;;;;;
                                  -132888;8;0;false;false;0;0;0;;;
                                  -132896;1;0;false;false;;;;;;
                                  -132897;1;0;false;false;0;0;0;;;
                                  -132898;1;0;false;false;;;;;;
                                  -132899;20;0;false;false;0;0;0;;;
                                  -132919;1;0;false;false;;;;;;
                                  -132920;1;0;false;false;0;0;0;;;
                                  -132921;1;0;false;false;;;;;;
                                  -132922;1;0;false;false;0;0;0;;;
                                  -132923;1;0;false;false;;;;;;
                                  -132924;2;0;false;false;0;0;0;;;
                                  -132926;1;0;false;false;;;;;;
                                  -132927;7;0;false;false;0;0;0;;;
                                  -132934;1;0;false;false;;;;;;
                                  -132935;1;0;false;false;0;0;0;;;
                                  -132936;1;0;false;false;;;;;;
                                  -132937;22;0;false;false;0;0;0;;;
                                  -132959;1;0;false;false;;;;;;
                                  -132960;1;0;false;false;0;0;0;;;
                                  -132961;1;0;false;false;;;;;;
                                  -132962;2;0;false;false;0;0;0;;;
                                  -132964;1;0;false;false;;;;;;
                                  -132965;1;0;false;false;0;0;0;;;
                                  -132966;4;0;false;false;;;;;;
                                  -132970;38;0;false;false;0;0;0;;;
                                  -133008;3;0;false;false;;;;;;
                                  -133011;1;0;false;false;0;0;0;;;
                                  -133012;4;0;false;false;;;;;;
                                  -133016;4;0;false;false;0;0;0;;;
                                  -133020;1;0;false;false;;;;;;
                                  -133021;1;0;false;false;0;0;0;;;
                                  -133022;1;0;false;false;;;;;;
                                  -133023;14;0;false;false;0;0;0;;;
                                  -133037;1;0;false;false;;;;;;
                                  -133038;1;0;false;false;0;0;0;;;
                                  -133039;1;0;false;false;;;;;;
                                  -133040;8;0;false;false;0;0;0;;;
                                  -133048;1;0;false;false;;;;;;
                                  -133049;1;0;false;false;0;0;0;;;
                                  -133050;1;0;false;false;;;;;;
                                  -133051;11;0;false;false;0;0;0;;;
                                  -133062;4;0;false;false;;;;;;
                                  -133066;36;0;false;false;63;127;95;;;
                                  -133102;1;0;false;false;;;;;;
                                  -133103;2;1;false;false;127;0;85;;;
                                  -133105;1;0;false;false;;;;;;
                                  -133106;5;0;false;false;0;0;0;;;
                                  -133111;1;0;false;false;;;;;;
                                  -133112;2;0;false;false;0;0;0;;;
                                  -133114;1;0;false;false;;;;;;
                                  -133115;23;0;false;false;0;0;0;;;
                                  -133138;1;0;false;false;;;;;;
                                  -133139;1;0;false;false;0;0;0;;;
                                  -133140;4;0;false;false;;;;;;
                                  -133144;38;0;false;false;0;0;0;;;
                                  -133182;3;0;false;false;;;;;;
                                  -133185;1;0;false;false;0;0;0;;;
                                  -133186;4;0;false;false;;;;;;
                                  -133190;8;0;false;false;0;0;0;;;
                                  -133198;1;0;false;false;;;;;;
                                  -133199;1;0;false;false;0;0;0;;;
                                  -133200;1;0;false;false;;;;;;
                                  -133201;22;0;false;false;0;0;0;;;
                                  -133223;3;0;false;false;;;;;;
                                  -133226;10;0;false;false;0;0;0;;;
                                  -133236;1;0;false;false;;;;;;
                                  -133237;1;0;false;false;0;0;0;;;
                                  -133238;1;0;false;false;;;;;;
                                  -133239;30;0;false;false;0;0;0;;;
                                  -133269;7;0;false;false;;;;;;
                                  -133276;3;1;false;false;127;0;85;;;
                                  -133279;1;0;false;false;;;;;;
                                  -133280;1;0;false;false;0;0;0;;;
                                  -133281;1;0;false;false;;;;;;
                                  -133282;1;0;false;false;0;0;0;;;
                                  -133283;1;0;false;false;;;;;;
                                  -133284;7;0;false;false;0;0;0;;;
                                  -133291;1;0;false;false;;;;;;
                                  -133292;1;0;false;false;0;0;0;;;
                                  -133293;1;0;false;false;;;;;;
                                  -133294;10;0;false;false;0;0;0;;;
                                  -133304;1;0;false;false;;;;;;
                                  -133305;1;0;false;false;0;0;0;;;
                                  -133306;1;0;false;false;;;;;;
                                  -133307;23;0;false;false;0;0;0;;;
                                  -133330;3;0;false;false;;;;;;
                                  -133333;6;0;false;false;0;0;0;;;
                                  -133339;1;0;false;false;;;;;;
                                  -133340;1;0;false;false;0;0;0;;;
                                  -133341;1;0;false;false;;;;;;
                                  -133342;32;0;false;false;0;0;0;;;
                                  -133374;1;0;false;false;;;;;;
                                  -133375;12;0;false;false;0;0;0;;;
                                  -133387;3;0;false;false;;;;;;
                                  -133390;9;0;false;false;0;0;0;;;
                                  -133399;1;0;false;false;;;;;;
                                  -133400;4;0;false;false;0;0;0;;;
                                  -133404;1;0;false;false;;;;;;
                                  -133405;1;0;false;false;0;0;0;;;
                                  -133406;1;0;false;false;;;;;;
                                  -133407;24;0;false;false;0;0;0;;;
                                  -133431;3;0;false;false;;;;;;
                                  -133434;2;1;false;false;127;0;85;;;
                                  -133436;1;0;false;false;;;;;;
                                  -133437;2;0;false;false;0;0;0;;;
                                  -133439;1;0;false;false;;;;;;
                                  -133440;1;0;false;false;0;0;0;;;
                                  -133441;1;0;false;false;;;;;;
                                  -133442;6;0;false;false;0;0;0;;;
                                  -133448;1;0;false;false;;;;;;
                                  -133449;1;0;false;false;0;0;0;;;
                                  -133450;1;0;false;false;;;;;;
                                  -133451;11;0;false;false;0;0;0;;;
                                  -133462;1;0;false;false;;;;;;
                                  -133463;1;0;false;false;0;0;0;;;
                                  -133464;4;0;false;false;;;;;;
                                  -133468;35;0;false;false;0;0;0;;;
                                  -133503;4;0;false;false;;;;;;
                                  -133507;38;0;false;false;0;0;0;;;
                                  -133545;3;0;false;false;;;;;;
                                  -133548;1;0;false;false;0;0;0;;;
                                  -133549;3;0;false;false;;;;;;
                                  -133552;3;1;false;false;127;0;85;;;
                                  -133555;2;0;false;false;0;0;0;;;
                                  -133557;1;0;false;false;;;;;;
                                  -133558;8;0;false;false;0;0;0;;;
                                  -133566;1;0;false;false;;;;;;
                                  -133567;1;0;false;false;0;0;0;;;
                                  -133568;1;0;false;false;;;;;;
                                  -133569;3;1;false;false;127;0;85;;;
                                  -133572;1;0;false;false;;;;;;
                                  -133573;3;1;false;false;127;0;85;;;
                                  -133576;4;0;false;false;0;0;0;;;
                                  -133580;3;0;false;false;;;;;;
                                  -133583;12;0;false;false;0;0;0;;;
                                  -133595;1;0;false;false;;;;;;
                                  -133596;1;0;false;false;0;0;0;;;
                                  -133597;1;0;false;false;;;;;;
                                  -133598;19;0;false;false;0;0;0;;;
                                  -133617;1;0;false;false;;;;;;
                                  -133618;2;0;false;false;0;0;0;;;
                                  -133620;1;0;false;false;;;;;;
                                  -133621;10;0;false;false;0;0;0;;;
                                  -133631;3;0;false;false;;;;;;
                                  -133634;2;1;false;false;127;0;85;;;
                                  -133636;1;0;false;false;;;;;;
                                  -133637;13;0;false;false;0;0;0;;;
                                  -133650;1;0;false;false;;;;;;
                                  -133651;2;0;false;false;0;0;0;;;
                                  -133653;1;0;false;false;;;;;;
                                  -133654;17;0;false;false;0;0;0;;;
                                  -133671;1;0;false;false;;;;;;
                                  -133672;1;0;false;false;0;0;0;;;
                                  -133673;1;0;false;false;;;;;;
                                  -133674;2;0;false;false;0;0;0;;;
                                  -133676;1;0;false;false;;;;;;
                                  -133677;1;0;false;false;0;0;0;;;
                                  -133678;4;0;false;false;;;;;;
                                  -133682;12;0;false;false;0;0;0;;;
                                  -133694;1;0;false;false;;;;;;
                                  -133695;1;0;false;false;0;0;0;;;
                                  -133696;1;0;false;false;;;;;;
                                  -133697;27;0;false;false;0;0;0;;;
                                  -133724;1;0;false;false;;;;;;
                                  -133725;12;0;false;false;0;0;0;;;
                                  -133737;1;0;false;false;;;;;;
                                  -133738;1;0;false;false;0;0;0;;;
                                  -133739;1;0;false;false;;;;;;
                                  -133740;13;0;false;false;0;0;0;;;
                                  -133753;5;0;false;false;;;;;;
                                  -133758;1;0;false;false;0;0;0;;;
                                  -133759;3;0;false;false;;;;;;
                                  -133762;35;0;false;false;0;0;0;;;
                                  -133797;3;0;false;false;;;;;;
                                  -133800;6;1;false;false;127;0;85;;;
                                  -133806;1;0;false;false;;;;;;
                                  -133807;10;0;false;false;0;0;0;;;
                                  -133817;1;0;false;false;;;;;;
                                  -133818;1;0;false;false;0;0;0;;;
                                  -133819;1;0;false;false;;;;;;
                                  -133820;13;0;false;false;0;0;0;;;
                                  -133833;2;0;false;false;;;;;;
                                  -133835;1;0;false;false;0;0;0;;;
                                  -133836;2;0;false;false;;;;;;
                                  -133838;3;0;false;false;63;95;191;;;
                                  -133841;3;0;false;false;;;;;;
                                  -133844;1;0;false;false;63;95;191;;;
                                  -133845;1;0;false;false;;;;;;
                                  -133846;7;0;false;false;63;95;191;;;
                                  -133853;1;0;false;false;;;;;;
                                  -133854;3;0;false;false;63;95;191;;;
                                  -133857;1;0;false;false;;;;;;
                                  -133858;6;0;false;false;63;95;191;;;
                                  -133864;1;0;false;false;;;;;;
                                  -133865;2;0;false;false;63;95;191;;;
                                  -133867;1;0;false;false;;;;;;
                                  -133868;3;0;false;false;63;95;191;;;
                                  -133871;1;0;false;false;;;;;;
                                  -133872;9;0;false;false;63;95;191;;;
                                  -133881;1;0;false;false;;;;;;
                                  -133882;1;0;false;false;63;95;191;;;
                                  -133883;1;0;false;false;;;;;;
                                  -133884;8;0;false;false;63;95;191;;;
                                  -133892;1;0;false;false;;;;;;
                                  -133893;2;0;false;false;63;95;191;;;
                                  -133895;1;0;false;false;;;;;;
                                  -133896;3;0;false;false;63;95;191;;;
                                  -133899;1;0;false;false;;;;;;
                                  -133900;9;0;false;false;63;95;191;;;
                                  -133909;1;0;false;false;;;;;;
                                  -133910;5;0;false;false;63;95;191;;;
                                  -133915;3;0;false;false;;;;;;
                                  -133918;1;0;false;false;63;95;191;;;
                                  -133919;1;0;false;false;;;;;;
                                  -133920;3;0;false;false;127;127;159;;;
                                  -133923;3;0;false;false;;;;;;
                                  -133926;1;0;false;false;63;95;191;;;
                                  -133927;3;0;false;false;;;;;;
                                  -133930;1;0;false;false;63;95;191;;;
                                  -133931;1;0;false;false;;;;;;
                                  -133932;7;1;false;false;127;159;191;;;
                                  -133939;1;0;false;false;63;95;191;;;
                                  -133940;1;0;false;false;;;;;;
                                  -133941;1;0;false;false;63;95;191;;;
                                  -133942;1;0;false;false;;;;;;
                                  -133943;8;0;false;false;63;95;191;;;
                                  -133951;1;0;false;false;;;;;;
                                  -133952;2;0;false;false;63;95;191;;;
                                  -133954;1;0;false;false;;;;;;
                                  -133955;3;0;false;false;63;95;191;;;
                                  -133958;1;0;false;false;;;;;;
                                  -133959;5;0;false;false;63;95;191;;;
                                  -133964;1;0;false;false;;;;;;
                                  -133965;8;0;false;false;63;95;191;;;
                                  -133973;3;0;false;false;;;;;;
                                  -133976;1;0;false;false;63;95;191;;;
                                  -133977;1;0;false;false;;;;;;
                                  -133978;7;1;false;false;127;159;191;;;
                                  -133985;4;0;false;false;63;95;191;;;
                                  -133989;1;0;false;false;;;;;;
                                  -133990;4;0;false;false;63;95;191;;;
                                  -133994;1;0;false;false;;;;;;
                                  -133995;3;0;false;false;63;95;191;;;
                                  -133998;1;0;false;false;;;;;;
                                  -133999;5;0;false;false;63;95;191;;;
                                  -134004;1;0;false;false;;;;;;
                                  -134005;8;0;false;false;63;95;191;;;
                                  -134013;1;0;false;false;;;;;;
                                  -134014;2;0;false;false;63;95;191;;;
                                  -134016;1;0;false;false;;;;;;
                                  -134017;2;0;false;false;63;95;191;;;
                                  -134019;3;0;false;false;;;;;;
                                  -134022;1;0;false;false;63;95;191;;;
                                  -134023;1;0;false;false;;;;;;
                                  -134024;8;1;false;false;127;159;191;;;
                                  -134032;3;0;false;false;63;95;191;;;
                                  -134035;1;0;false;false;;;;;;
                                  -134036;6;0;false;false;63;95;191;;;
                                  -134042;1;0;false;false;;;;;;
                                  -134043;2;0;false;false;63;95;191;;;
                                  -134045;1;0;false;false;;;;;;
                                  -134046;3;0;false;false;63;95;191;;;
                                  -134049;1;0;false;false;;;;;;
                                  -134050;9;0;false;false;63;95;191;;;
                                  -134059;1;0;false;false;;;;;;
                                  -134060;1;0;false;false;63;95;191;;;
                                  -134061;1;0;false;false;;;;;;
                                  -134062;8;0;false;false;63;95;191;;;
                                  -134070;1;0;false;false;;;;;;
                                  -134071;2;0;false;false;63;95;191;;;
                                  -134073;1;0;false;false;;;;;;
                                  -134074;3;0;false;false;63;95;191;;;
                                  -134077;1;0;false;false;;;;;;
                                  -134078;9;0;false;false;63;95;191;;;
                                  -134087;1;0;false;false;;;;;;
                                  -134088;5;0;false;false;63;95;191;;;
                                  -134093;3;0;false;false;;;;;;
                                  -134096;1;0;false;false;63;95;191;;;
                                  -134097;2;0;false;false;;;;;;
                                  -134099;8;0;false;false;63;95;191;;;
                                  -134107;1;0;false;false;;;;;;
                                  -134108;2;0;false;false;63;95;191;;;
                                  -134110;1;0;false;false;;;;;;
                                  -134111;3;0;false;false;63;95;191;;;
                                  -134114;1;0;false;false;;;;;;
                                  -134115;9;0;false;false;63;95;191;;;
                                  -134124;1;0;false;false;;;;;;
                                  -134125;2;0;false;false;63;95;191;;;
                                  -134127;1;0;false;false;;;;;;
                                  -134128;3;0;false;false;63;95;191;;;
                                  -134131;1;0;false;false;;;;;;
                                  -134132;8;0;false;false;63;95;191;;;
                                  -134140;3;0;false;false;;;;;;
                                  -134143;2;0;false;false;63;95;191;;;
                                  -134145;2;0;false;false;;;;;;
                                  -134147;3;1;false;false;127;0;85;;;
                                  -134150;1;0;false;false;;;;;;
                                  -134151;25;0;false;false;0;0;0;;;
                                  -134176;3;1;false;false;127;0;85;;;
                                  -134179;1;0;false;false;;;;;;
                                  -134180;2;0;false;false;0;0;0;;;
                                  -134182;1;0;false;false;;;;;;
                                  -134183;3;1;false;false;127;0;85;;;
                                  -134186;1;0;false;false;;;;;;
                                  -134187;5;0;false;false;0;0;0;;;
                                  -134192;1;0;false;false;;;;;;
                                  -134193;1;0;false;false;0;0;0;;;
                                  -134194;3;0;false;false;;;;;;
                                  -134197;6;0;false;false;0;0;0;;;
                                  -134203;1;0;false;false;;;;;;
                                  -134204;8;0;false;false;0;0;0;;;
                                  -134212;1;0;false;false;;;;;;
                                  -134213;1;0;false;false;0;0;0;;;
                                  -134214;1;0;false;false;;;;;;
                                  -134215;22;0;false;false;0;0;0;;;
                                  -134237;3;0;false;false;;;;;;
                                  -134240;3;1;false;false;127;0;85;;;
                                  -134243;1;0;false;false;;;;;;
                                  -134244;10;0;false;false;0;0;0;;;
                                  -134254;1;0;false;false;;;;;;
                                  -134255;1;0;false;false;0;0;0;;;
                                  -134256;1;0;false;false;;;;;;
                                  -134257;30;0;false;false;0;0;0;;;
                                  -134287;3;0;false;false;;;;;;
                                  -134290;6;1;false;false;127;0;85;;;
                                  -134296;1;0;false;false;;;;;;
                                  -134297;22;0;false;false;0;0;0;;;
                                  -134319;1;0;false;false;;;;;;
                                  -134320;11;0;false;false;0;0;0;;;
                                  -134331;1;0;false;false;;;;;;
                                  -134332;2;0;false;false;0;0;0;;;
                                  -134334;1;0;false;false;;;;;;
                                  -134335;1;0;false;false;0;0;0;;;
                                  -134336;1;0;false;false;;;;;;
                                  -134337;11;0;false;false;0;0;0;;;
                                  -134348;2;0;false;false;;;;;;
                                  -134350;1;0;false;false;0;0;0;;;
                                  -134351;2;0;false;false;;;;;;
                                  -134353;3;0;false;false;63;95;191;;;
                                  -134356;3;0;false;false;;;;;;
                                  -134359;1;0;false;false;63;95;191;;;
                                  -134360;1;0;false;false;;;;;;
                                  -134361;6;0;false;false;63;95;191;;;
                                  -134367;1;0;false;false;;;;;;
                                  -134368;3;0;false;false;63;95;191;;;
                                  -134371;1;0;false;false;;;;;;
                                  -134372;11;0;false;false;63;95;191;;;
                                  -134383;1;0;false;false;;;;;;
                                  -134384;2;0;false;false;63;95;191;;;
                                  -134386;1;0;false;false;;;;;;
                                  -134387;3;0;false;false;63;95;191;;;
                                  -134390;1;0;false;false;;;;;;
                                  -134391;9;0;false;false;63;95;191;;;
                                  -134400;3;0;false;false;;;;;;
                                  -134403;1;0;false;false;63;95;191;;;
                                  -134404;3;0;false;false;;;;;;
                                  -134407;1;0;false;false;63;95;191;;;
                                  -134408;1;0;false;false;;;;;;
                                  -134409;8;1;false;false;127;159;191;;;
                                  -134417;3;0;false;false;63;95;191;;;
                                  -134420;1;0;false;false;;;;;;
                                  -134421;11;0;false;false;63;95;191;;;
                                  -134432;1;0;false;false;;;;;;
                                  -134433;5;0;false;false;63;95;191;;;
                                  -134438;3;0;false;false;;;;;;
                                  -134441;1;0;false;false;63;95;191;;;
                                  -134442;4;0;false;false;;;;;;
                                  -134446;1;0;false;false;63;95;191;;;
                                  -134447;1;0;false;false;;;;;;
                                  -134448;11;1;false;false;127;159;191;;;
                                  -134459;12;0;false;false;63;95;191;;;
                                  -134471;1;0;false;false;;;;;;
                                  -134472;4;0;false;false;127;127;159;;;
                                  -134476;3;0;false;false;;;;;;
                                  -134479;1;0;false;false;63;95;191;;;
                                  -134480;4;0;false;false;;;;;;
                                  -134484;4;0;false;false;127;127;159;;;
                                  -134488;21;0;false;false;63;95;191;;;
                                  -134509;1;0;false;false;;;;;;
                                  -134510;1;0;false;false;127;127;159;;;
                                  -134511;1;0;false;false;;;;;;
                                  -134512;2;0;false;false;63;95;191;;;
                                  -134514;1;0;false;false;;;;;;
                                  -134515;3;0;false;false;63;95;191;;;
                                  -134518;1;0;false;false;;;;;;
                                  -134519;8;0;false;false;63;95;191;;;
                                  -134527;1;0;false;false;;;;;;
                                  -134528;3;0;false;false;63;95;191;;;
                                  -134531;1;0;false;false;;;;;;
                                  -134532;4;0;false;false;63;95;191;;;
                                  -134536;1;0;false;false;;;;;;
                                  -134537;8;0;false;false;63;95;191;;;
                                  -134545;5;0;false;false;127;127;159;;;
                                  -134550;3;0;false;false;;;;;;
                                  -134553;1;0;false;false;63;95;191;;;
                                  -134554;4;0;false;false;;;;;;
                                  -134558;4;0;false;false;127;127;159;;;
                                  -134562;27;0;false;false;63;95;191;;;
                                  -134589;1;0;false;false;;;;;;
                                  -134590;1;0;false;false;127;127;159;;;
                                  -134591;1;0;false;false;;;;;;
                                  -134592;2;0;false;false;63;95;191;;;
                                  -134594;1;0;false;false;;;;;;
                                  -134595;3;0;false;false;63;95;191;;;
                                  -134598;1;0;false;false;;;;;;
                                  -134599;6;0;false;false;63;95;191;;;
                                  -134605;1;0;false;false;;;;;;
                                  -134606;4;0;false;false;63;95;191;;;
                                  -134610;1;0;false;false;;;;;;
                                  -134611;3;0;false;false;63;95;191;;;
                                  -134614;1;0;false;false;;;;;;
                                  -134615;6;0;false;false;63;95;191;;;
                                  -134621;1;0;false;false;;;;;;
                                  -134622;4;0;false;false;63;95;191;;;
                                  -134626;1;0;false;false;;;;;;
                                  -134627;7;0;false;false;63;95;191;;;
                                  -134634;1;0;false;false;;;;;;
                                  -134635;3;0;false;false;63;95;191;;;
                                  -134638;1;0;false;false;;;;;;
                                  -134639;8;0;false;false;63;95;191;;;
                                  -134647;5;0;false;false;127;127;159;;;
                                  -134652;3;0;false;false;;;;;;
                                  -134655;1;0;false;false;63;95;191;;;
                                  -134656;1;0;false;false;;;;;;
                                  -134657;5;0;false;false;127;127;159;;;
                                  -134662;3;0;false;false;;;;;;
                                  -134665;1;0;false;false;63;95;191;;;
                                  -134666;4;0;false;false;;;;;;
                                  -134670;1;0;false;false;63;95;191;;;
                                  -134671;1;0;false;false;;;;;;
                                  -134672;7;1;false;false;127;159;191;;;
                                  -134679;5;0;false;false;63;95;191;;;
                                  -134684;3;0;false;false;;;;;;
                                  -134687;2;0;false;false;63;95;191;;;
                                  -134689;2;0;false;false;;;;;;
                                  -134691;6;1;false;false;127;0;85;;;
                                  -134697;1;0;false;false;;;;;;
                                  -134698;3;1;false;false;127;0;85;;;
                                  -134701;1;0;false;false;;;;;;
                                  -134702;14;0;false;false;0;0;0;;;
                                  -134716;1;0;false;false;;;;;;
                                  -134717;2;0;false;false;0;0;0;;;
                                  -134719;1;0;false;false;;;;;;
                                  -134720;1;0;false;false;0;0;0;;;
                                  -134721;3;0;false;false;;;;;;
                                  -134724;14;0;false;false;0;0;0;;;
                                  -134738;3;0;false;false;;;;;;
                                  -134741;6;1;false;false;127;0;85;;;
                                  -134747;1;0;false;false;;;;;;
                                  -134748;12;0;false;false;0;0;0;;;
                                  -134760;1;0;false;false;;;;;;
                                  -134761;1;0;false;false;0;0;0;;;
                                  -134762;1;0;false;false;;;;;;
                                  -134763;17;0;false;false;0;0;0;;;
                                  -134780;1;0;false;false;;;;;;
                                  -134781;1;0;false;false;0;0;0;;;
                                  -134782;1;0;false;false;;;;;;
                                  -134783;18;0;false;false;0;0;0;;;
                                  -134801;2;0;false;false;;;;;;
                                  -134803;1;0;false;false;0;0;0;;;
                                  -134804;2;0;false;false;;;;;;
                                  -134806;3;0;false;false;63;95;191;;;
                                  -134809;4;0;false;false;;;;;;
                                  -134813;1;0;false;false;63;95;191;;;
                                  -134814;1;0;false;false;;;;;;
                                  -134815;7;0;false;false;63;95;191;;;
                                  -134822;1;0;false;false;;;;;;
                                  -134823;3;0;false;false;63;95;191;;;
                                  -134826;1;0;false;false;;;;;;
                                  -134827;5;0;false;false;63;95;191;;;
                                  -134832;1;0;false;false;;;;;;
                                  -134833;2;0;false;false;63;95;191;;;
                                  -134835;1;0;false;false;;;;;;
                                  -134836;3;0;false;false;63;95;191;;;
                                  -134839;1;0;false;false;;;;;;
                                  -134840;4;0;false;false;63;95;191;;;
                                  -134844;1;0;false;false;;;;;;
                                  -134845;9;0;false;false;63;95;191;;;
                                  -134854;1;0;false;false;;;;;;
                                  -134855;7;0;false;false;63;95;191;;;
                                  -134862;1;0;false;false;;;;;;
                                  -134863;5;0;false;false;63;95;191;;;
                                  -134868;3;0;false;false;;;;;;
                                  -134871;1;0;false;false;63;95;191;;;
                                  -134872;3;0;false;false;;;;;;
                                  -134875;1;0;false;false;63;95;191;;;
                                  -134876;1;0;false;false;;;;;;
                                  -134877;8;1;false;false;127;159;191;;;
                                  -134885;5;0;false;false;63;95;191;;;
                                  -134890;1;0;false;false;;;;;;
                                  -134891;2;0;false;false;63;95;191;;;
                                  -134893;1;0;false;false;;;;;;
                                  -134894;3;0;false;false;63;95;191;;;
                                  -134897;1;0;false;false;;;;;;
                                  -134898;4;0;false;false;63;95;191;;;
                                  -134902;1;0;false;false;;;;;;
                                  -134903;9;0;false;false;63;95;191;;;
                                  -134912;1;0;false;false;;;;;;
                                  -134913;7;0;false;false;63;95;191;;;
                                  -134920;1;0;false;false;;;;;;
                                  -134921;5;0;false;false;63;95;191;;;
                                  -134926;3;0;false;false;;;;;;
                                  -134929;2;0;false;false;63;95;191;;;
                                  -134931;2;0;false;false;;;;;;
                                  -134933;3;1;false;false;127;0;85;;;
                                  -134936;1;0;false;false;;;;;;
                                  -134937;23;0;false;false;0;0;0;;;
                                  -134960;1;0;false;false;;;;;;
                                  -134961;1;0;false;false;0;0;0;;;
                                  -134962;3;0;false;false;;;;;;
                                  -134965;3;1;false;false;127;0;85;;;
                                  -134968;1;0;false;false;;;;;;
                                  -134969;16;0;false;false;0;0;0;;;
                                  -134985;1;0;false;false;;;;;;
                                  -134986;1;0;false;false;0;0;0;;;
                                  -134987;1;0;false;false;;;;;;
                                  -134988;42;0;false;false;0;0;0;;;
                                  -135030;1;0;false;false;;;;;;
                                  -135031;12;0;false;false;0;0;0;;;
                                  -135043;3;0;false;false;;;;;;
                                  -135046;6;1;false;false;127;0;85;;;
                                  -135052;1;0;false;false;;;;;;
                                  -135053;32;0;false;false;0;0;0;;;
                                  -135085;1;0;false;false;;;;;;
                                  -135086;8;0;false;false;0;0;0;;;
                                  -135094;1;0;false;false;;;;;;
                                  -135095;1;0;false;false;0;0;0;;;
                                  -135096;1;0;false;false;;;;;;
                                  -135097;17;0;false;false;0;0;0;;;
                                  -135114;1;0;false;false;;;;;;
                                  -135115;1;0;false;false;0;0;0;;;
                                  -135116;1;0;false;false;;;;;;
                                  -135117;2;0;false;false;0;0;0;;;
                                  -135119;2;0;false;false;;;;;;
                                  -135121;1;0;false;false;0;0;0;;;
                                  -135122;2;0;false;false;;;;;;
                                  -135124;3;0;false;false;63;95;191;;;
                                  -135127;3;0;false;false;;;;;;
                                  -135130;1;0;false;false;63;95;191;;;
                                  -135131;1;0;false;false;;;;;;
                                  -135132;7;0;false;false;63;95;191;;;
                                  -135139;1;0;false;false;;;;;;
                                  -135140;3;0;false;false;63;95;191;;;
                                  -135143;1;0;false;false;;;;;;
                                  -135144;7;0;false;false;63;95;191;;;
                                  -135151;1;0;false;false;;;;;;
                                  -135152;2;0;false;false;63;95;191;;;
                                  -135154;1;0;false;false;;;;;;
                                  -135155;3;0;false;false;63;95;191;;;
                                  -135158;1;0;false;false;;;;;;
                                  -135159;9;0;false;false;63;95;191;;;
                                  -135168;1;0;false;false;;;;;;
                                  -135169;5;0;false;false;63;95;191;;;
                                  -135174;1;0;false;false;;;;;;
                                  -135175;5;0;false;false;63;95;191;;;
                                  -135180;1;0;false;false;;;;;;
                                  -135181;3;0;false;false;63;95;191;;;
                                  -135184;1;0;false;false;;;;;;
                                  -135185;8;0;false;false;63;95;191;;;
                                  -135193;1;0;false;false;;;;;;
                                  -135194;4;0;false;false;63;95;191;;;
                                  -135198;4;0;false;false;;;;;;
                                  -135202;1;0;false;false;63;95;191;;;
                                  -135203;1;0;false;false;;;;;;
                                  -135204;9;0;false;false;63;95;191;;;
                                  -135213;1;0;false;false;;;;;;
                                  -135214;2;0;false;false;63;95;191;;;
                                  -135216;1;0;false;false;;;;;;
                                  -135217;8;0;false;false;63;95;191;;;
                                  -135225;1;0;false;false;;;;;;
                                  -135226;6;0;false;false;63;95;191;;;
                                  -135232;3;0;false;false;;;;;;
                                  -135235;1;0;false;false;63;95;191;;;
                                  -135236;1;0;false;false;;;;;;
                                  -135237;3;0;false;false;127;127;159;;;
                                  -135240;3;0;false;false;;;;;;
                                  -135243;1;0;false;false;63;95;191;;;
                                  -135244;3;0;false;false;;;;;;
                                  -135247;1;0;false;false;63;95;191;;;
                                  -135248;1;0;false;false;;;;;;
                                  -135249;7;1;false;false;127;159;191;;;
                                  -135256;6;0;false;false;63;95;191;;;
                                  -135262;1;0;false;false;;;;;;
                                  -135263;3;0;false;false;63;95;191;;;
                                  -135266;1;0;false;false;;;;;;
                                  -135267;10;0;false;false;63;95;191;;;
                                  -135277;1;0;false;false;;;;;;
                                  -135278;2;0;false;false;63;95;191;;;
                                  -135280;1;0;false;false;;;;;;
                                  -135281;5;0;false;false;63;95;191;;;
                                  -135286;1;0;false;false;;;;;;
                                  -135287;4;0;false;false;63;95;191;;;
                                  -135291;1;0;false;false;;;;;;
                                  -135292;4;0;false;false;63;95;191;;;
                                  -135296;1;0;false;false;;;;;;
                                  -135297;4;0;false;false;63;95;191;;;
                                  -135301;3;0;false;false;;;;;;
                                  -135304;1;0;false;false;63;95;191;;;
                                  -135305;1;0;false;false;;;;;;
                                  -135306;8;1;false;false;127;159;191;;;
                                  -135314;3;0;false;false;63;95;191;;;
                                  -135317;1;0;false;false;;;;;;
                                  -135318;7;0;false;false;63;95;191;;;
                                  -135325;1;0;false;false;;;;;;
                                  -135326;2;0;false;false;63;95;191;;;
                                  -135328;1;0;false;false;;;;;;
                                  -135329;3;0;false;false;63;95;191;;;
                                  -135332;1;0;false;false;;;;;;
                                  -135333;9;0;false;false;63;95;191;;;
                                  -135342;1;0;false;false;;;;;;
                                  -135343;5;0;false;false;63;95;191;;;
                                  -135348;1;0;false;false;;;;;;
                                  -135349;5;0;false;false;63;95;191;;;
                                  -135354;1;0;false;false;;;;;;
                                  -135355;3;0;false;false;63;95;191;;;
                                  -135358;1;0;false;false;;;;;;
                                  -135359;8;0;false;false;63;95;191;;;
                                  -135367;1;0;false;false;;;;;;
                                  -135368;4;0;false;false;63;95;191;;;
                                  -135372;4;0;false;false;;;;;;
                                  -135376;1;0;false;false;63;95;191;;;
                                  -135377;2;0;false;false;;;;;;
                                  -135379;9;0;false;false;63;95;191;;;
                                  -135388;1;0;false;false;;;;;;
                                  -135389;2;0;false;false;63;95;191;;;
                                  -135391;1;0;false;false;;;;;;
                                  -135392;8;0;false;false;63;95;191;;;
                                  -135400;1;0;false;false;;;;;;
                                  -135401;5;0;false;false;63;95;191;;;
                                  -135406;1;0;false;false;;;;;;
                                  -135407;2;0;false;false;63;95;191;;;
                                  -135409;1;0;false;false;;;;;;
                                  -135410;7;0;false;false;63;95;191;;;
                                  -135417;1;0;false;false;;;;;;
                                  -135418;2;0;false;false;63;95;191;;;
                                  -135420;1;0;false;false;;;;;;
                                  -135421;3;0;false;false;63;95;191;;;
                                  -135424;1;0;false;false;;;;;;
                                  -135425;9;0;false;false;63;95;191;;;
                                  -135434;1;0;false;false;;;;;;
                                  -135435;11;0;false;false;63;95;191;;;
                                  -135446;3;0;false;false;;;;;;
                                  -135449;2;0;false;false;63;95;191;;;
                                  -135451;2;0;false;false;;;;;;
                                  -135453;6;0;false;false;0;0;0;;;
                                  -135459;1;0;false;false;;;;;;
                                  -135460;35;0;false;false;0;0;0;;;
                                  -135495;1;0;false;false;;;;;;
                                  -135496;7;0;false;false;0;0;0;;;
                                  -135503;1;0;false;false;;;;;;
                                  -135504;1;0;false;false;0;0;0;;;
                                  -135505;3;0;false;false;;;;;;
                                  -135508;3;1;false;false;127;0;85;;;
                                  -135511;1;0;false;false;;;;;;
                                  -135512;3;0;false;false;0;0;0;;;
                                  -135515;1;0;false;false;;;;;;
                                  -135516;1;0;false;false;0;0;0;;;
                                  -135517;1;0;false;false;;;;;;
                                  -135518;17;0;false;false;0;0;0;;;
                                  -135535;1;0;false;false;;;;;;
                                  -135536;1;0;false;false;0;0;0;;;
                                  -135537;1;0;false;false;;;;;;
                                  -135538;22;0;false;false;0;0;0;;;
                                  -135560;3;0;false;false;;;;;;
                                  -135563;3;1;false;false;127;0;85;;;
                                  -135566;1;0;false;false;;;;;;
                                  -135567;9;0;false;false;0;0;0;;;
                                  -135576;1;0;false;false;;;;;;
                                  -135577;1;0;false;false;0;0;0;;;
                                  -135578;1;0;false;false;;;;;;
                                  -135579;50;0;false;false;0;0;0;;;
                                  -135629;3;0;false;false;;;;;;
                                  -135632;3;1;false;false;127;0;85;;;
                                  -135635;1;0;false;false;;;;;;
                                  -135636;7;0;false;false;0;0;0;;;
                                  -135643;1;0;false;false;;;;;;
                                  -135644;1;0;false;false;0;0;0;;;
                                  -135645;1;0;false;false;;;;;;
                                  -135646;36;0;false;false;0;0;0;;;
                                  -135682;3;0;false;false;;;;;;
                                  -135685;6;0;false;false;0;0;0;;;
                                  -135691;1;0;false;false;;;;;;
                                  -135692;11;0;false;false;0;0;0;;;
                                  -135703;1;0;false;false;;;;;;
                                  -135704;1;0;false;false;0;0;0;;;
                                  -135705;1;0;false;false;;;;;;
                                  -135706;32;0;false;false;0;0;0;;;
                                  -135738;3;0;false;false;;;;;;
                                  -135741;3;1;false;false;127;0;85;;;
                                  -135744;1;0;false;false;;;;;;
                                  -135745;13;0;false;false;0;0;0;;;
                                  -135758;1;0;false;false;;;;;;
                                  -135759;1;0;false;false;0;0;0;;;
                                  -135760;1;0;false;false;;;;;;
                                  -135761;40;0;false;false;0;0;0;;;
                                  -135801;6;0;false;false;;;;;;
                                  -135807;3;1;false;false;127;0;85;;;
                                  -135810;1;0;false;false;;;;;;
                                  -135811;1;0;false;false;0;0;0;;;
                                  -135812;3;1;false;false;127;0;85;;;
                                  -135815;1;0;false;false;;;;;;
                                  -135816;1;0;false;false;0;0;0;;;
                                  -135817;1;0;false;false;;;;;;
                                  -135818;1;0;false;false;0;0;0;;;
                                  -135819;1;0;false;false;;;;;;
                                  -135820;10;0;false;false;0;0;0;;;
                                  -135830;1;0;false;false;;;;;;
                                  -135831;1;0;false;false;0;0;0;;;
                                  -135832;1;0;false;false;;;;;;
                                  -135833;2;0;false;false;0;0;0;;;
                                  -135835;1;0;false;false;;;;;;
                                  -135836;8;0;false;false;0;0;0;;;
                                  -135844;1;0;false;false;;;;;;
                                  -135845;4;0;false;false;0;0;0;;;
                                  -135849;1;0;false;false;;;;;;
                                  -135850;1;0;false;false;0;0;0;;;
                                  -135851;4;0;false;false;;;;;;
                                  -135855;43;0;false;false;0;0;0;;;
                                  -135898;1;0;false;false;;;;;;
                                  -135899;35;0;false;false;0;0;0;;;
                                  -135934;4;0;false;false;;;;;;
                                  -135938;2;1;false;false;127;0;85;;;
                                  -135940;1;0;false;false;;;;;;
                                  -135941;2;0;false;false;0;0;0;;;
                                  -135943;1;0;false;false;;;;;;
                                  -135944;1;0;false;false;0;0;0;;;
                                  -135945;1;0;false;false;;;;;;
                                  -135946;8;0;false;false;0;0;0;;;
                                  -135954;1;0;false;false;;;;;;
                                  -135955;1;0;false;false;0;0;0;;;
                                  -135956;5;0;false;false;;;;;;
                                  -135961;49;0;false;false;0;0;0;;;
                                  -136010;4;0;false;false;;;;;;
                                  -136014;1;0;false;false;0;0;0;;;
                                  -136015;3;0;false;false;;;;;;
                                  -136018;1;0;false;false;0;0;0;;;
                                  -136019;3;0;false;false;;;;;;
                                  -136022;2;1;false;false;127;0;85;;;
                                  -136024;1;0;false;false;;;;;;
                                  -136025;4;0;false;false;0;0;0;;;
                                  -136029;1;0;false;false;;;;;;
                                  -136030;1;0;false;false;0;0;0;;;
                                  -136031;1;0;false;false;;;;;;
                                  -136032;13;0;false;false;0;0;0;;;
                                  -136045;1;0;false;false;;;;;;
                                  -136046;1;0;false;false;0;0;0;;;
                                  -136047;1;0;false;false;;;;;;
                                  -136048;21;0;false;false;0;0;0;;;
                                  -136069;1;0;false;false;;;;;;
                                  -136070;1;0;false;false;0;0;0;;;
                                  -136071;4;0;false;false;;;;;;
                                  -136075;49;0;false;false;0;0;0;;;
                                  -136124;3;0;false;false;;;;;;
                                  -136127;1;0;false;false;0;0;0;;;
                                  -136128;3;0;false;false;;;;;;
                                  -136131;15;0;false;false;0;0;0;;;
                                  -136146;3;0;false;false;;;;;;
                                  -136149;6;1;false;false;127;0;85;;;
                                  -136155;1;0;false;false;;;;;;
                                  -136156;18;0;false;false;0;0;0;;;
                                  -136174;2;0;false;false;;;;;;
                                  -136176;1;0;false;false;0;0;0;;;
                                  -136177;2;0;false;false;;;;;;
                                  -136179;3;0;false;false;63;95;191;;;
                                  -136182;3;0;false;false;;;;;;
                                  -136185;1;0;false;false;63;95;191;;;
                                  -136186;1;0;false;false;;;;;;
                                  -136187;7;0;false;false;63;95;191;;;
                                  -136194;1;0;false;false;;;;;;
                                  -136195;3;0;false;false;63;95;191;;;
                                  -136198;1;0;false;false;;;;;;
                                  -136199;10;0;false;false;63;95;191;;;
                                  -136209;3;0;false;false;;;;;;
                                  -136212;1;0;false;false;63;95;191;;;
                                  -136213;1;0;false;false;;;;;;
                                  -136214;3;0;false;false;127;127;159;;;
                                  -136217;3;0;false;false;;;;;;
                                  -136220;1;0;false;false;63;95;191;;;
                                  -136221;1;0;false;false;;;;;;
                                  -136222;4;0;false;false;63;95;191;;;
                                  -136226;1;0;false;false;;;;;;
                                  -136227;10;0;false;false;63;95;191;;;
                                  -136237;1;0;false;false;;;;;;
                                  -136238;3;0;false;false;63;95;191;;;
                                  -136241;1;0;false;false;;;;;;
                                  -136242;9;0;false;false;63;95;191;;;
                                  -136251;1;0;false;false;;;;;;
                                  -136252;2;0;false;false;63;95;191;;;
                                  -136254;1;0;false;false;;;;;;
                                  -136255;5;0;false;false;63;95;191;;;
                                  -136260;1;0;false;false;;;;;;
                                  -136261;2;0;false;false;63;95;191;;;
                                  -136263;1;0;false;false;;;;;;
                                  -136264;5;0;false;false;63;95;191;;;
                                  -136269;1;0;false;false;;;;;;
                                  -136270;10;0;false;false;63;95;191;;;
                                  -136280;2;0;false;false;;;;;;
                                  -136282;2;0;false;false;63;95;191;;;
                                  -136284;1;0;false;false;;;;;;
                                  -136285;1;0;false;false;63;95;191;;;
                                  -136286;1;0;false;false;;;;;;
                                  -136287;4;0;false;false;63;95;191;;;
                                  -136291;3;0;false;false;;;;;;
                                  -136294;1;0;false;false;63;95;191;;;
                                  -136295;1;0;false;false;;;;;;
                                  -136296;6;0;false;false;63;95;191;;;
                                  -136302;1;0;false;false;;;;;;
                                  -136303;4;0;false;false;63;95;191;;;
                                  -136307;1;0;false;false;;;;;;
                                  -136308;8;0;false;false;63;95;191;;;
                                  -136316;1;0;false;false;;;;;;
                                  -136317;1;0;false;false;63;95;191;;;
                                  -136318;1;0;false;false;;;;;;
                                  -136319;11;0;false;false;63;95;191;;;
                                  -136330;1;0;false;false;;;;;;
                                  -136331;5;0;false;false;63;95;191;;;
                                  -136336;1;0;false;false;;;;;;
                                  -136337;3;0;false;false;63;95;191;;;
                                  -136340;1;0;false;false;;;;;;
                                  -136341;3;0;false;false;63;95;191;;;
                                  -136344;1;0;false;false;;;;;;
                                  -136345;5;0;false;false;63;95;191;;;
                                  -136350;1;0;false;false;;;;;;
                                  -136351;10;0;false;false;63;95;191;;;
                                  -136361;4;0;false;false;;;;;;
                                  -136365;1;0;false;false;63;95;191;;;
                                  -136366;1;0;false;false;;;;;;
                                  -136367;7;0;false;false;63;95;191;;;
                                  -136374;1;0;false;false;;;;;;
                                  -136375;4;0;false;false;63;95;191;;;
                                  -136379;1;0;false;false;;;;;;
                                  -136380;4;0;false;false;63;95;191;;;
                                  -136384;3;0;false;false;;;;;;
                                  -136387;1;0;false;false;63;95;191;;;
                                  -136388;1;0;false;false;;;;;;
                                  -136389;3;0;false;false;127;127;159;;;
                                  -136392;3;0;false;false;;;;;;
                                  -136395;1;0;false;false;63;95;191;;;
                                  -136396;3;0;false;false;;;;;;
                                  -136399;1;0;false;false;63;95;191;;;
                                  -136400;1;0;false;false;;;;;;
                                  -136401;8;1;false;false;127;159;191;;;
                                  -136409;5;0;false;false;63;95;191;;;
                                  -136414;1;0;false;false;;;;;;
                                  -136415;3;0;false;false;63;95;191;;;
                                  -136418;1;0;false;false;;;;;;
                                  -136419;3;0;false;false;63;95;191;;;
                                  -136422;1;0;false;false;;;;;;
                                  -136423;2;0;false;false;63;95;191;;;
                                  -136425;1;0;false;false;;;;;;
                                  -136426;3;0;false;false;63;95;191;;;
                                  -136429;1;0;false;false;;;;;;
                                  -136430;10;0;false;false;63;95;191;;;
                                  -136440;1;0;false;false;;;;;;
                                  -136441;1;0;false;false;63;95;191;;;
                                  -136442;1;0;false;false;;;;;;
                                  -136443;2;0;false;false;63;95;191;;;
                                  -136445;1;0;false;false;;;;;;
                                  -136446;3;0;false;false;63;95;191;;;
                                  -136449;1;0;false;false;;;;;;
                                  -136450;6;0;false;false;63;95;191;;;
                                  -136456;1;0;false;false;;;;;;
                                  -136457;2;0;false;false;63;95;191;;;
                                  -136459;1;0;false;false;;;;;;
                                  -136460;3;0;false;false;63;95;191;;;
                                  -136463;1;0;false;false;;;;;;
                                  -136464;5;0;false;false;63;95;191;;;
                                  -136469;4;0;false;false;;;;;;
                                  -136473;1;0;false;false;63;95;191;;;
                                  -136474;2;0;false;false;;;;;;
                                  -136476;8;0;false;false;63;95;191;;;
                                  -136484;1;0;false;false;;;;;;
                                  -136485;10;0;false;false;63;95;191;;;
                                  -136495;1;0;false;false;;;;;;
                                  -136496;1;0;false;false;63;95;191;;;
                                  -136497;1;0;false;false;;;;;;
                                  -136498;2;0;false;false;63;95;191;;;
                                  -136500;1;0;false;false;;;;;;
                                  -136501;3;0;false;false;63;95;191;;;
                                  -136504;1;0;false;false;;;;;;
                                  -136505;6;0;false;false;63;95;191;;;
                                  -136511;1;0;false;false;;;;;;
                                  -136512;5;0;false;false;63;95;191;;;
                                  -136517;1;0;false;false;;;;;;
                                  -136518;3;0;false;false;63;95;191;;;
                                  -136521;1;0;false;false;;;;;;
                                  -136522;4;0;false;false;63;95;191;;;
                                  -136526;1;0;false;false;;;;;;
                                  -136527;8;0;false;false;63;95;191;;;
                                  -136535;1;0;false;false;;;;;;
                                  -136536;10;0;false;false;63;95;191;;;
                                  -136546;3;0;false;false;;;;;;
                                  -136549;1;0;false;false;63;95;191;;;
                                  -136550;2;0;false;false;;;;;;
                                  -136552;3;0;false;false;63;95;191;;;
                                  -136555;1;0;false;false;;;;;;
                                  -136556;9;0;false;false;63;95;191;;;
                                  -136565;1;0;false;false;;;;;;
                                  -136566;6;0;false;false;63;95;191;;;
                                  -136572;1;0;false;false;;;;;;
                                  -136573;8;0;false;false;63;95;191;;;
                                  -136581;1;0;false;false;;;;;;
                                  -136582;3;0;false;false;63;95;191;;;
                                  -136585;1;0;false;false;;;;;;
                                  -136586;6;0;false;false;63;95;191;;;
                                  -136592;1;0;false;false;;;;;;
                                  -136593;6;0;false;false;63;95;191;;;
                                  -136599;1;0;false;false;;;;;;
                                  -136600;1;0;false;false;63;95;191;;;
                                  -136601;1;0;false;false;;;;;;
                                  -136602;4;0;false;false;63;95;191;;;
                                  -136606;1;0;false;false;;;;;;
                                  -136607;6;0;false;false;63;95;191;;;
                                  -136613;1;0;false;false;;;;;;
                                  -136614;6;0;false;false;63;95;191;;;
                                  -136620;1;0;false;false;;;;;;
                                  -136621;2;0;false;false;63;95;191;;;
                                  -136623;6;0;false;false;;;;;;
                                  -136629;1;0;false;false;63;95;191;;;
                                  -136630;2;0;false;false;;;;;;
                                  -136632;80;0;false;false;63;95;191;;;
                                  -136712;1;0;false;false;;;;;;
                                  -136713;1;0;false;false;63;95;191;;;
                                  -136714;2;0;false;false;;;;;;
                                  -136716;7;0;false;false;63;95;191;;;
                                  -136723;1;0;false;false;;;;;;
                                  -136724;7;0;false;false;63;95;191;;;
                                  -136731;1;0;false;false;;;;;;
                                  -136732;3;0;false;false;63;95;191;;;
                                  -136735;1;0;false;false;;;;;;
                                  -136736;11;0;false;false;63;95;191;;;
                                  -136747;1;0;false;false;;;;;;
                                  -136748;2;0;false;false;63;95;191;;;
                                  -136750;1;0;false;false;;;;;;
                                  -136751;3;0;false;false;63;95;191;;;
                                  -136754;1;0;false;false;;;;;;
                                  -136755;5;0;false;false;63;95;191;;;
                                  -136760;1;0;false;false;;;;;;
                                  -136761;3;0;false;false;63;95;191;;;
                                  -136764;1;0;false;false;;;;;;
                                  -136765;3;0;false;false;63;95;191;;;
                                  -136768;1;0;false;false;;;;;;
                                  -136769;2;0;false;false;63;95;191;;;
                                  -136771;1;0;false;false;;;;;;
                                  -136772;3;0;false;false;63;95;191;;;
                                  -136775;1;0;false;false;;;;;;
                                  -136776;9;0;false;false;63;95;191;;;
                                  -136785;4;0;false;false;;;;;;
                                  -136789;1;0;false;false;63;95;191;;;
                                  -136790;2;0;false;false;;;;;;
                                  -136792;6;0;false;false;63;95;191;;;
                                  -136798;1;0;false;false;;;;;;
                                  -136799;11;0;false;false;63;95;191;;;
                                  -136810;1;0;false;false;;;;;;
                                  -136811;2;0;false;false;63;95;191;;;
                                  -136813;1;0;false;false;;;;;;
                                  -136814;5;0;false;false;63;95;191;;;
                                  -136819;1;0;false;false;;;;;;
                                  -136820;2;0;false;false;63;95;191;;;
                                  -136822;1;0;false;false;;;;;;
                                  -136823;9;0;false;false;63;95;191;;;
                                  -136832;1;0;false;false;;;;;;
                                  -136833;7;0;false;false;63;95;191;;;
                                  -136840;1;0;false;false;;;;;;
                                  -136841;4;0;false;false;63;95;191;;;
                                  -136845;1;0;false;false;;;;;;
                                  -136846;3;0;false;false;63;95;191;;;
                                  -136849;1;0;false;false;;;;;;
                                  -136850;9;0;false;false;63;95;191;;;
                                  -136859;1;0;false;false;;;;;;
                                  -136860;2;0;false;false;63;95;191;;;
                                  -136862;1;0;false;false;;;;;;
                                  -136863;6;0;false;false;63;95;191;;;
                                  -136869;3;0;false;false;;;;;;
                                  -136872;1;0;false;false;63;95;191;;;
                                  -136873;1;0;false;false;;;;;;
                                  -136874;5;1;false;false;127;159;191;;;
                                  -136879;18;0;false;false;63;95;191;;;
                                  -136897;3;0;false;false;;;;;;
                                  -136900;1;0;false;false;63;95;191;;;
                                  -136901;1;0;false;false;;;;;;
                                  -136902;11;1;false;false;127;159;191;;;
                                  -136913;12;0;false;false;63;95;191;;;
                                  -136925;1;0;false;false;;;;;;
                                  -136926;4;0;false;false;127;127;159;;;
                                  -136930;3;0;false;false;;;;;;
                                  -136933;1;0;false;false;63;95;191;;;
                                  -136934;4;0;false;false;;;;;;
                                  -136938;4;0;false;false;127;127;159;;;
                                  -136942;21;0;false;false;63;95;191;;;
                                  -136963;1;0;false;false;;;;;;
                                  -136964;1;0;false;false;127;127;159;;;
                                  -136965;1;0;false;false;;;;;;
                                  -136966;2;0;false;false;63;95;191;;;
                                  -136968;1;0;false;false;;;;;;
                                  -136969;3;0;false;false;63;95;191;;;
                                  -136972;1;0;false;false;;;;;;
                                  -136973;8;0;false;false;63;95;191;;;
                                  -136981;1;0;false;false;;;;;;
                                  -136982;3;0;false;false;63;95;191;;;
                                  -136985;1;0;false;false;;;;;;
                                  -136986;4;0;false;false;63;95;191;;;
                                  -136990;1;0;false;false;;;;;;
                                  -136991;8;0;false;false;63;95;191;;;
                                  -136999;5;0;false;false;127;127;159;;;
                                  -137004;3;0;false;false;;;;;;
                                  -137007;1;0;false;false;63;95;191;;;
                                  -137008;4;0;false;false;;;;;;
                                  -137012;4;0;false;false;127;127;159;;;
                                  -137016;27;0;false;false;63;95;191;;;
                                  -137043;1;0;false;false;;;;;;
                                  -137044;1;0;false;false;127;127;159;;;
                                  -137045;1;0;false;false;;;;;;
                                  -137046;2;0;false;false;63;95;191;;;
                                  -137048;1;0;false;false;;;;;;
                                  -137049;3;0;false;false;63;95;191;;;
                                  -137052;1;0;false;false;;;;;;
                                  -137053;6;0;false;false;63;95;191;;;
                                  -137059;1;0;false;false;;;;;;
                                  -137060;4;0;false;false;63;95;191;;;
                                  -137064;1;0;false;false;;;;;;
                                  -137065;3;0;false;false;63;95;191;;;
                                  -137068;1;0;false;false;;;;;;
                                  -137069;6;0;false;false;63;95;191;;;
                                  -137075;1;0;false;false;;;;;;
                                  -137076;4;0;false;false;63;95;191;;;
                                  -137080;1;0;false;false;;;;;;
                                  -137081;7;0;false;false;63;95;191;;;
                                  -137088;1;0;false;false;;;;;;
                                  -137089;3;0;false;false;63;95;191;;;
                                  -137092;1;0;false;false;;;;;;
                                  -137093;8;0;false;false;63;95;191;;;
                                  -137101;5;0;false;false;127;127;159;;;
                                  -137106;3;0;false;false;;;;;;
                                  -137109;1;0;false;false;63;95;191;;;
                                  -137110;1;0;false;false;;;;;;
                                  -137111;5;0;false;false;127;127;159;;;
                                  -137116;3;0;false;false;;;;;;
                                  -137119;2;0;false;false;63;95;191;;;
                                  -137121;2;0;false;false;;;;;;
                                  -137123;6;1;false;false;127;0;85;;;
                                  -137129;1;0;false;false;;;;;;
                                  -137130;5;0;false;false;0;0;0;;;
                                  -137135;1;0;false;false;;;;;;
                                  -137136;14;0;false;false;0;0;0;;;
                                  -137150;1;0;false;false;;;;;;
                                  -137151;1;0;false;false;0;0;0;;;
                                  -137152;3;0;false;false;;;;;;
                                  -137155;14;0;false;false;0;0;0;;;
                                  -137169;3;0;false;false;;;;;;
                                  -137172;6;1;false;false;127;0;85;;;
                                  -137178;1;0;false;false;;;;;;
                                  -137179;3;1;false;false;127;0;85;;;
                                  -137182;1;0;false;false;;;;;;
                                  -137183;18;0;false;false;0;0;0;;;
                                  -137201;1;0;false;false;;;;;;
                                  -137202;13;0;false;false;0;0;0;;;
                                  -137215;2;0;false;false;;;;;;
                                  -137217;1;0;false;false;0;0;0;;;
                                  -137218;2;0;false;false;;;;;;
                                  -137220;3;0;false;false;63;95;191;;;
                                  -137223;3;0;false;false;;;;;;
                                  -137226;1;0;false;false;63;95;191;;;
                                  -137227;1;0;false;false;;;;;;
                                  -137228;7;0;false;false;63;95;191;;;
                                  -137235;1;0;false;false;;;;;;
                                  -137236;3;0;false;false;63;95;191;;;
                                  -137239;1;0;false;false;;;;;;
                                  -137240;10;0;false;false;63;95;191;;;
                                  -137250;3;0;false;false;;;;;;
                                  -137253;1;0;false;false;63;95;191;;;
                                  -137254;1;0;false;false;;;;;;
                                  -137255;3;0;false;false;127;127;159;;;
                                  -137258;3;0;false;false;;;;;;
                                  -137261;1;0;false;false;63;95;191;;;
                                  -137262;3;0;false;false;;;;;;
                                  -137265;1;0;false;false;63;95;191;;;
                                  -137266;1;0;false;false;;;;;;
                                  -137267;8;1;false;false;127;159;191;;;
                                  -137275;5;0;false;false;63;95;191;;;
                                  -137280;1;0;false;false;;;;;;
                                  -137281;3;0;false;false;63;95;191;;;
                                  -137284;1;0;false;false;;;;;;
                                  -137285;6;0;false;false;63;95;191;;;
                                  -137291;1;0;false;false;;;;;;
                                  -137292;2;0;false;false;63;95;191;;;
                                  -137294;1;0;false;false;;;;;;
                                  -137295;3;0;false;false;63;95;191;;;
                                  -137298;1;0;false;false;;;;;;
                                  -137299;10;0;false;false;63;95;191;;;
                                  -137309;1;0;false;false;;;;;;
                                  -137310;1;0;false;false;63;95;191;;;
                                  -137311;1;0;false;false;;;;;;
                                  -137312;2;0;false;false;63;95;191;;;
                                  -137314;1;0;false;false;;;;;;
                                  -137315;3;0;false;false;63;95;191;;;
                                  -137318;1;0;false;false;;;;;;
                                  -137319;6;0;false;false;63;95;191;;;
                                  -137325;1;0;false;false;;;;;;
                                  -137326;2;0;false;false;63;95;191;;;
                                  -137328;1;0;false;false;;;;;;
                                  -137329;3;0;false;false;63;95;191;;;
                                  -137332;4;0;false;false;;;;;;
                                  -137336;1;0;false;false;63;95;191;;;
                                  -137337;2;0;false;false;;;;;;
                                  -137339;5;0;false;false;63;95;191;;;
                                  -137344;1;0;false;false;;;;;;
                                  -137345;8;0;false;false;63;95;191;;;
                                  -137353;1;0;false;false;;;;;;
                                  -137354;10;0;false;false;63;95;191;;;
                                  -137364;1;0;false;false;;;;;;
                                  -137365;8;0;false;false;63;95;191;;;
                                  -137373;1;0;false;false;;;;;;
                                  -137374;2;0;false;false;63;95;191;;;
                                  -137376;1;0;false;false;;;;;;
                                  -137377;3;0;false;false;63;95;191;;;
                                  -137380;1;0;false;false;;;;;;
                                  -137381;5;0;false;false;63;95;191;;;
                                  -137386;1;0;false;false;;;;;;
                                  -137387;9;0;false;false;63;95;191;;;
                                  -137396;1;0;false;false;;;;;;
                                  -137397;2;0;false;false;63;95;191;;;
                                  -137399;1;0;false;false;;;;;;
                                  -137400;3;0;false;false;63;95;191;;;
                                  -137403;4;0;false;false;;;;;;
                                  -137407;1;0;false;false;63;95;191;;;
                                  -137408;2;0;false;false;;;;;;
                                  -137410;6;0;false;false;63;95;191;;;
                                  -137416;1;0;false;false;;;;;;
                                  -137417;8;0;false;false;63;95;191;;;
                                  -137425;1;0;false;false;;;;;;
                                  -137426;1;0;false;false;63;95;191;;;
                                  -137427;1;0;false;false;;;;;;
                                  -137428;2;0;false;false;63;95;191;;;
                                  -137430;1;0;false;false;;;;;;
                                  -137431;3;0;false;false;63;95;191;;;
                                  -137434;1;0;false;false;;;;;;
                                  -137435;6;0;false;false;63;95;191;;;
                                  -137441;1;0;false;false;;;;;;
                                  -137442;2;0;false;false;63;95;191;;;
                                  -137444;1;0;false;false;;;;;;
                                  -137445;3;0;false;false;63;95;191;;;
                                  -137448;1;0;false;false;;;;;;
                                  -137449;10;0;false;false;63;95;191;;;
                                  -137459;4;0;false;false;;;;;;
                                  -137463;1;0;false;false;63;95;191;;;
                                  -137464;2;0;false;false;;;;;;
                                  -137466;3;0;false;false;63;95;191;;;
                                  -137469;1;0;false;false;;;;;;
                                  -137470;9;0;false;false;63;95;191;;;
                                  -137479;1;0;false;false;;;;;;
                                  -137480;6;0;false;false;63;95;191;;;
                                  -137486;1;0;false;false;;;;;;
                                  -137487;8;0;false;false;63;95;191;;;
                                  -137495;1;0;false;false;;;;;;
                                  -137496;3;0;false;false;63;95;191;;;
                                  -137499;1;0;false;false;;;;;;
                                  -137500;6;0;false;false;63;95;191;;;
                                  -137506;1;0;false;false;;;;;;
                                  -137507;6;0;false;false;63;95;191;;;
                                  -137513;1;0;false;false;;;;;;
                                  -137514;6;0;false;false;63;95;191;;;
                                  -137520;1;0;false;false;;;;;;
                                  -137521;4;0;false;false;63;95;191;;;
                                  -137525;1;0;false;false;;;;;;
                                  -137526;6;0;false;false;63;95;191;;;
                                  -137532;1;0;false;false;;;;;;
                                  -137533;6;0;false;false;63;95;191;;;
                                  -137539;1;0;false;false;;;;;;
                                  -137540;2;0;false;false;63;95;191;;;
                                  -137542;6;0;false;false;;;;;;
                                  -137548;1;0;false;false;63;95;191;;;
                                  -137549;2;0;false;false;;;;;;
                                  -137551;10;0;false;false;63;95;191;;;
                                  -137561;2;0;false;false;;;;;;
                                  -137563;2;0;false;false;63;95;191;;;
                                  -137565;1;0;false;false;;;;;;
                                  -137566;9;0;false;false;63;95;191;;;
                                  -137575;1;0;false;false;;;;;;
                                  -137576;2;0;false;false;63;95;191;;;
                                  -137578;1;0;false;false;;;;;;
                                  -137579;1;0;false;false;63;95;191;;;
                                  -137580;1;0;false;false;;;;;;
                                  -137581;9;0;false;false;63;95;191;;;
                                  -137590;1;0;false;false;;;;;;
                                  -137591;2;0;false;false;63;95;191;;;
                                  -137593;1;0;false;false;;;;;;
                                  -137594;5;0;false;false;63;95;191;;;
                                  -137599;1;0;false;false;127;127;159;;;
                                  -137600;2;0;false;false;63;95;191;;;
                                  -137602;1;0;false;false;127;127;159;;;
                                  -137603;4;0;false;false;63;95;191;;;
                                  -137607;1;0;false;false;;;;;;
                                  -137608;6;0;false;false;63;95;191;;;
                                  -137614;1;0;false;false;;;;;;
                                  -137615;3;0;false;false;63;95;191;;;
                                  -137618;1;0;false;false;;;;;;
                                  -137619;4;0;false;false;63;95;191;;;
                                  -137623;1;0;false;false;127;127;159;;;
                                  -137624;2;0;false;false;63;95;191;;;
                                  -137626;1;0;false;false;127;127;159;;;
                                  -137627;5;0;false;false;63;95;191;;;
                                  -137632;4;0;false;false;;;;;;
                                  -137636;1;0;false;false;63;95;191;;;
                                  -137637;2;0;false;false;;;;;;
                                  -137639;7;0;false;false;63;95;191;;;
                                  -137646;1;0;false;false;;;;;;
                                  -137647;7;0;false;false;63;95;191;;;
                                  -137654;1;0;false;false;;;;;;
                                  -137655;3;0;false;false;63;95;191;;;
                                  -137658;1;0;false;false;;;;;;
                                  -137659;11;0;false;false;63;95;191;;;
                                  -137670;1;0;false;false;;;;;;
                                  -137671;2;0;false;false;63;95;191;;;
                                  -137673;1;0;false;false;;;;;;
                                  -137674;3;0;false;false;63;95;191;;;
                                  -137677;1;0;false;false;;;;;;
                                  -137678;5;0;false;false;63;95;191;;;
                                  -137683;1;0;false;false;;;;;;
                                  -137684;3;0;false;false;63;95;191;;;
                                  -137687;1;0;false;false;;;;;;
                                  -137688;3;0;false;false;63;95;191;;;
                                  -137691;1;0;false;false;;;;;;
                                  -137692;2;0;false;false;63;95;191;;;
                                  -137694;1;0;false;false;;;;;;
                                  -137695;3;0;false;false;63;95;191;;;
                                  -137698;1;0;false;false;;;;;;
                                  -137699;9;0;false;false;63;95;191;;;
                                  -137708;4;0;false;false;;;;;;
                                  -137712;1;0;false;false;63;95;191;;;
                                  -137713;2;0;false;false;;;;;;
                                  -137715;6;0;false;false;63;95;191;;;
                                  -137721;1;0;false;false;;;;;;
                                  -137722;11;0;false;false;63;95;191;;;
                                  -137733;1;0;false;false;;;;;;
                                  -137734;2;0;false;false;63;95;191;;;
                                  -137736;1;0;false;false;;;;;;
                                  -137737;5;0;false;false;63;95;191;;;
                                  -137742;1;0;false;false;;;;;;
                                  -137743;2;0;false;false;63;95;191;;;
                                  -137745;1;0;false;false;;;;;;
                                  -137746;9;0;false;false;63;95;191;;;
                                  -137755;1;0;false;false;;;;;;
                                  -137756;7;0;false;false;63;95;191;;;
                                  -137763;1;0;false;false;;;;;;
                                  -137764;4;0;false;false;63;95;191;;;
                                  -137768;1;0;false;false;;;;;;
                                  -137769;3;0;false;false;63;95;191;;;
                                  -137772;1;0;false;false;;;;;;
                                  -137773;9;0;false;false;63;95;191;;;
                                  -137782;1;0;false;false;;;;;;
                                  -137783;2;0;false;false;63;95;191;;;
                                  -137785;1;0;false;false;;;;;;
                                  -137786;6;0;false;false;63;95;191;;;
                                  -137792;3;0;false;false;;;;;;
                                  -137795;1;0;false;false;63;95;191;;;
                                  -137796;1;0;false;false;;;;;;
                                  -137797;11;1;false;false;127;159;191;;;
                                  -137808;12;0;false;false;63;95;191;;;
                                  -137820;1;0;false;false;;;;;;
                                  -137821;4;0;false;false;127;127;159;;;
                                  -137825;3;0;false;false;;;;;;
                                  -137828;1;0;false;false;63;95;191;;;
                                  -137829;4;0;false;false;;;;;;
                                  -137833;4;0;false;false;127;127;159;;;
                                  -137837;21;0;false;false;63;95;191;;;
                                  -137858;1;0;false;false;;;;;;
                                  -137859;1;0;false;false;127;127;159;;;
                                  -137860;1;0;false;false;;;;;;
                                  -137861;2;0;false;false;63;95;191;;;
                                  -137863;1;0;false;false;;;;;;
                                  -137864;3;0;false;false;63;95;191;;;
                                  -137867;1;0;false;false;;;;;;
                                  -137868;8;0;false;false;63;95;191;;;
                                  -137876;1;0;false;false;;;;;;
                                  -137877;3;0;false;false;63;95;191;;;
                                  -137880;1;0;false;false;;;;;;
                                  -137881;4;0;false;false;63;95;191;;;
                                  -137885;1;0;false;false;;;;;;
                                  -137886;8;0;false;false;63;95;191;;;
                                  -137894;5;0;false;false;127;127;159;;;
                                  -137899;3;0;false;false;;;;;;
                                  -137902;1;0;false;false;63;95;191;;;
                                  -137903;4;0;false;false;;;;;;
                                  -137907;4;0;false;false;127;127;159;;;
                                  -137911;27;0;false;false;63;95;191;;;
                                  -137938;1;0;false;false;;;;;;
                                  -137939;1;0;false;false;127;127;159;;;
                                  -137940;1;0;false;false;;;;;;
                                  -137941;2;0;false;false;63;95;191;;;
                                  -137943;1;0;false;false;;;;;;
                                  -137944;3;0;false;false;63;95;191;;;
                                  -137947;1;0;false;false;;;;;;
                                  -137948;6;0;false;false;63;95;191;;;
                                  -137954;1;0;false;false;;;;;;
                                  -137955;4;0;false;false;63;95;191;;;
                                  -137959;1;0;false;false;;;;;;
                                  -137960;3;0;false;false;63;95;191;;;
                                  -137963;1;0;false;false;;;;;;
                                  -137964;6;0;false;false;63;95;191;;;
                                  -137970;1;0;false;false;;;;;;
                                  -137971;4;0;false;false;63;95;191;;;
                                  -137975;1;0;false;false;;;;;;
                                  -137976;7;0;false;false;63;95;191;;;
                                  -137983;1;0;false;false;;;;;;
                                  -137984;3;0;false;false;63;95;191;;;
                                  -137987;1;0;false;false;;;;;;
                                  -137988;8;0;false;false;63;95;191;;;
                                  -137996;5;0;false;false;127;127;159;;;
                                  -138001;3;0;false;false;;;;;;
                                  -138004;1;0;false;false;63;95;191;;;
                                  -138005;1;0;false;false;;;;;;
                                  -138006;5;0;false;false;127;127;159;;;
                                  -138011;3;0;false;false;;;;;;
                                  -138014;2;0;false;false;63;95;191;;;
                                  -138016;2;0;false;false;;;;;;
                                  -138018;6;1;false;false;127;0;85;;;
                                  -138024;1;0;false;false;;;;;;
                                  -138025;5;0;false;false;0;0;0;;;
                                  -138030;1;0;false;false;;;;;;
                                  -138031;19;0;false;false;0;0;0;;;
                                  -138050;1;0;false;false;;;;;;
                                  -138051;1;0;false;false;0;0;0;;;
                                  -138052;3;0;false;false;;;;;;
                                  -138055;14;0;false;false;0;0;0;;;
                                  -138069;3;0;false;false;;;;;;
                                  -138072;6;1;false;false;127;0;85;;;
                                  -138078;1;0;false;false;;;;;;
                                  -138079;3;1;false;false;127;0;85;;;
                                  -138082;1;0;false;false;;;;;;
                                  -138083;18;0;false;false;0;0;0;;;
                                  -138101;1;0;false;false;;;;;;
                                  -138102;11;0;false;false;0;0;0;;;
                                  -138113;1;0;false;false;;;;;;
                                  -138114;1;0;false;false;0;0;0;;;
                                  -138115;1;0;false;false;;;;;;
                                  -138116;13;0;false;false;0;0;0;;;
                                  -138129;2;0;false;false;;;;;;
                                  -138131;1;0;false;false;0;0;0;;;
                                  -138132;2;0;false;false;;;;;;
                                  -138134;3;0;false;false;63;95;191;;;
                                  -138137;3;0;false;false;;;;;;
                                  -138140;1;0;false;false;63;95;191;;;
                                  -138141;1;0;false;false;;;;;;
                                  -138142;7;0;false;false;63;95;191;;;
                                  -138149;1;0;false;false;;;;;;
                                  -138150;3;0;false;false;63;95;191;;;
                                  -138153;1;0;false;false;;;;;;
                                  -138154;10;0;false;false;63;95;191;;;
                                  -138164;1;0;false;false;;;;;;
                                  -138165;9;0;false;false;63;95;191;;;
                                  -138174;1;0;false;false;;;;;;
                                  -138175;10;0;false;false;63;95;191;;;
                                  -138185;1;0;false;false;;;;;;
                                  -138186;6;0;false;false;63;95;191;;;
                                  -138192;3;0;false;false;;;;;;
                                  -138195;1;0;false;false;63;95;191;;;
                                  -138196;3;0;false;false;;;;;;
                                  -138199;1;0;false;false;63;95;191;;;
                                  -138200;1;0;false;false;;;;;;
                                  -138201;8;1;false;false;127;159;191;;;
                                  -138209;3;0;false;false;63;95;191;;;
                                  -138212;1;0;false;false;;;;;;
                                  -138213;9;0;false;false;63;95;191;;;
                                  -138222;1;0;false;false;;;;;;
                                  -138223;10;0;false;false;63;95;191;;;
                                  -138233;1;0;false;false;;;;;;
                                  -138234;5;0;false;false;63;95;191;;;
                                  -138239;3;0;false;false;;;;;;
                                  -138242;1;0;false;false;63;95;191;;;
                                  -138243;3;0;false;false;;;;;;
                                  -138246;1;0;false;false;63;95;191;;;
                                  -138247;1;0;false;false;;;;;;
                                  -138248;11;1;false;false;127;159;191;;;
                                  -138259;12;0;false;false;63;95;191;;;
                                  -138271;1;0;false;false;;;;;;
                                  -138272;4;0;false;false;127;127;159;;;
                                  -138276;3;0;false;false;;;;;;
                                  -138279;1;0;false;false;63;95;191;;;
                                  -138280;4;0;false;false;;;;;;
                                  -138284;4;0;false;false;127;127;159;;;
                                  -138288;21;0;false;false;63;95;191;;;
                                  -138309;1;0;false;false;;;;;;
                                  -138310;1;0;false;false;127;127;159;;;
                                  -138311;1;0;false;false;;;;;;
                                  -138312;2;0;false;false;63;95;191;;;
                                  -138314;1;0;false;false;;;;;;
                                  -138315;3;0;false;false;63;95;191;;;
                                  -138318;1;0;false;false;;;;;;
                                  -138319;8;0;false;false;63;95;191;;;
                                  -138327;1;0;false;false;;;;;;
                                  -138328;3;0;false;false;63;95;191;;;
                                  -138331;1;0;false;false;;;;;;
                                  -138332;4;0;false;false;63;95;191;;;
                                  -138336;1;0;false;false;;;;;;
                                  -138337;8;0;false;false;63;95;191;;;
                                  -138345;5;0;false;false;127;127;159;;;
                                  -138350;3;0;false;false;;;;;;
                                  -138353;1;0;false;false;63;95;191;;;
                                  -138354;4;0;false;false;;;;;;
                                  -138358;4;0;false;false;127;127;159;;;
                                  -138362;27;0;false;false;63;95;191;;;
                                  -138389;1;0;false;false;;;;;;
                                  -138390;1;0;false;false;127;127;159;;;
                                  -138391;1;0;false;false;;;;;;
                                  -138392;2;0;false;false;63;95;191;;;
                                  -138394;1;0;false;false;;;;;;
                                  -138395;3;0;false;false;63;95;191;;;
                                  -138398;1;0;false;false;;;;;;
                                  -138399;6;0;false;false;63;95;191;;;
                                  -138405;1;0;false;false;;;;;;
                                  -138406;4;0;false;false;63;95;191;;;
                                  -138410;1;0;false;false;;;;;;
                                  -138411;3;0;false;false;63;95;191;;;
                                  -138414;1;0;false;false;;;;;;
                                  -138415;6;0;false;false;63;95;191;;;
                                  -138421;1;0;false;false;;;;;;
                                  -138422;4;0;false;false;63;95;191;;;
                                  -138426;1;0;false;false;;;;;;
                                  -138427;7;0;false;false;63;95;191;;;
                                  -138434;1;0;false;false;;;;;;
                                  -138435;3;0;false;false;63;95;191;;;
                                  -138438;1;0;false;false;;;;;;
                                  -138439;8;0;false;false;63;95;191;;;
                                  -138447;5;0;false;false;127;127;159;;;
                                  -138452;3;0;false;false;;;;;;
                                  -138455;1;0;false;false;63;95;191;;;
                                  -138456;1;0;false;false;;;;;;
                                  -138457;5;0;false;false;127;127;159;;;
                                  -138462;3;0;false;false;;;;;;
                                  -138465;1;0;false;false;63;95;191;;;
                                  -138466;1;0;false;false;;;;;;
                                  -138467;7;1;false;false;127;159;191;;;
                                  -138474;3;0;false;false;63;95;191;;;
                                  -138477;3;0;false;false;;;;;;
                                  -138480;2;0;false;false;63;95;191;;;
                                  -138482;2;0;false;false;;;;;;
                                  -138484;6;1;false;false;127;0;85;;;
                                  -138490;1;0;false;false;;;;;;
                                  -138491;5;0;false;false;0;0;0;;;
                                  -138496;1;0;false;false;;;;;;
                                  -138497;24;0;false;false;0;0;0;;;
                                  -138521;1;0;false;false;;;;;;
                                  -138522;1;0;false;false;0;0;0;;;
                                  -138523;3;0;false;false;;;;;;
                                  -138526;14;0;false;false;0;0;0;;;
                                  -138540;3;0;false;false;;;;;;
                                  -138543;2;1;false;false;127;0;85;;;
                                  -138545;1;0;false;false;;;;;;
                                  -138546;20;0;false;false;0;0;0;;;
                                  -138566;1;0;false;false;;;;;;
                                  -138567;2;0;false;false;0;0;0;;;
                                  -138569;1;0;false;false;;;;;;
                                  -138570;4;1;false;false;127;0;85;;;
                                  -138574;1;0;false;false;0;0;0;;;
                                  -138575;1;0;false;false;;;;;;
                                  -138576;1;0;false;false;0;0;0;;;
                                  -138577;4;0;false;false;;;;;;
                                  -138581;6;1;false;false;127;0;85;;;
                                  -138587;1;0;false;false;;;;;;
                                  -138588;54;0;false;false;0;0;0;;;
                                  -138642;3;0;false;false;;;;;;
                                  -138645;1;0;false;false;0;0;0;;;
                                  -138646;3;0;false;false;;;;;;
                                  -138649;6;1;false;false;127;0;85;;;
                                  -138655;1;0;false;false;;;;;;
                                  -138656;20;0;false;false;0;0;0;;;
                                  -138676;2;0;false;false;;;;;;
                                  -138678;1;0;false;false;0;0;0;;;
                                  -138679;2;0;false;false;;;;;;
                                  -138681;3;0;false;false;63;95;191;;;
                                  -138684;3;0;false;false;;;;;;
                                  -138687;1;0;false;false;63;95;191;;;
                                  -138688;1;0;false;false;;;;;;
                                  -138689;4;0;false;false;63;95;191;;;
                                  -138693;1;0;false;false;;;;;;
                                  -138694;3;0;false;false;63;95;191;;;
                                  -138697;1;0;false;false;;;;;;
                                  -138698;6;0;false;false;63;95;191;;;
                                  -138704;1;0;false;false;;;;;;
                                  -138705;2;0;false;false;63;95;191;;;
                                  -138707;1;0;false;false;;;;;;
                                  -138708;8;0;false;false;63;95;191;;;
                                  -138716;1;0;false;false;;;;;;
                                  -138717;11;0;false;false;63;95;191;;;
                                  -138728;3;0;false;false;;;;;;
                                  -138731;1;0;false;false;63;95;191;;;
                                  -138732;1;0;false;false;;;;;;
                                  -138733;3;0;false;false;127;127;159;;;
                                  -138736;3;0;false;false;;;;;;
                                  -138739;1;0;false;false;63;95;191;;;
                                  -138740;3;0;false;false;;;;;;
                                  -138743;1;0;false;false;63;95;191;;;
                                  -138744;1;0;false;false;;;;;;
                                  -138745;8;1;false;false;127;159;191;;;
                                  -138753;3;0;false;false;63;95;191;;;
                                  -138756;1;0;false;false;;;;;;
                                  -138757;6;0;false;false;63;95;191;;;
                                  -138763;1;0;false;false;;;;;;
                                  -138764;2;0;false;false;63;95;191;;;
                                  -138766;1;0;false;false;;;;;;
                                  -138767;8;0;false;false;63;95;191;;;
                                  -138775;1;0;false;false;;;;;;
                                  -138776;11;0;false;false;63;95;191;;;
                                  -138787;3;0;false;false;;;;;;
                                  -138790;1;0;false;false;63;95;191;;;
                                  -138791;1;0;false;false;;;;;;
                                  -138792;11;1;false;false;127;159;191;;;
                                  -138803;12;0;false;false;63;95;191;;;
                                  -138815;1;0;false;false;;;;;;
                                  -138816;4;0;false;false;127;127;159;;;
                                  -138820;3;0;false;false;;;;;;
                                  -138823;1;0;false;false;63;95;191;;;
                                  -138824;4;0;false;false;;;;;;
                                  -138828;4;0;false;false;127;127;159;;;
                                  -138832;21;0;false;false;63;95;191;;;
                                  -138853;1;0;false;false;;;;;;
                                  -138854;1;0;false;false;127;127;159;;;
                                  -138855;1;0;false;false;;;;;;
                                  -138856;2;0;false;false;63;95;191;;;
                                  -138858;1;0;false;false;;;;;;
                                  -138859;3;0;false;false;63;95;191;;;
                                  -138862;1;0;false;false;;;;;;
                                  -138863;8;0;false;false;63;95;191;;;
                                  -138871;1;0;false;false;;;;;;
                                  -138872;3;0;false;false;63;95;191;;;
                                  -138875;1;0;false;false;;;;;;
                                  -138876;4;0;false;false;63;95;191;;;
                                  -138880;1;0;false;false;;;;;;
                                  -138881;8;0;false;false;63;95;191;;;
                                  -138889;5;0;false;false;127;127;159;;;
                                  -138894;3;0;false;false;;;;;;
                                  -138897;1;0;false;false;63;95;191;;;
                                  -138898;4;0;false;false;;;;;;
                                  -138902;4;0;false;false;127;127;159;;;
                                  -138906;27;0;false;false;63;95;191;;;
                                  -138933;1;0;false;false;;;;;;
                                  -138934;1;0;false;false;127;127;159;;;
                                  -138935;1;0;false;false;;;;;;
                                  -138936;2;0;false;false;63;95;191;;;
                                  -138938;1;0;false;false;;;;;;
                                  -138939;3;0;false;false;63;95;191;;;
                                  -138942;1;0;false;false;;;;;;
                                  -138943;6;0;false;false;63;95;191;;;
                                  -138949;1;0;false;false;;;;;;
                                  -138950;4;0;false;false;63;95;191;;;
                                  -138954;1;0;false;false;;;;;;
                                  -138955;3;0;false;false;63;95;191;;;
                                  -138958;1;0;false;false;;;;;;
                                  -138959;6;0;false;false;63;95;191;;;
                                  -138965;1;0;false;false;;;;;;
                                  -138966;4;0;false;false;63;95;191;;;
                                  -138970;1;0;false;false;;;;;;
                                  -138971;7;0;false;false;63;95;191;;;
                                  -138978;1;0;false;false;;;;;;
                                  -138979;3;0;false;false;63;95;191;;;
                                  -138982;1;0;false;false;;;;;;
                                  -138983;8;0;false;false;63;95;191;;;
                                  -138991;5;0;false;false;127;127;159;;;
                                  -138996;3;0;false;false;;;;;;
                                  -138999;1;0;false;false;63;95;191;;;
                                  -139000;1;0;false;false;;;;;;
                                  -139001;5;0;false;false;127;127;159;;;
                                  -139006;3;0;false;false;;;;;;
                                  -139009;2;0;false;false;63;95;191;;;
                                  -139011;2;0;false;false;;;;;;
                                  -139013;6;1;false;false;127;0;85;;;
                                  -139019;1;0;false;false;;;;;;
                                  -139020;3;1;false;false;127;0;85;;;
                                  -139023;1;0;false;false;;;;;;
                                  -139024;19;0;false;false;0;0;0;;;
                                  -139043;1;0;false;false;;;;;;
                                  -139044;1;0;false;false;0;0;0;;;
                                  -139045;3;0;false;false;;;;;;
                                  -139048;14;0;false;false;0;0;0;;;
                                  -139062;3;0;false;false;;;;;;
                                  -139065;6;1;false;false;127;0;85;;;
                                  -139071;1;0;false;false;;;;;;
                                  -139072;22;0;false;false;0;0;0;;;
                                  -139094;2;0;false;false;;;;;;
                                  -139096;1;0;false;false;0;0;0;;;
                                  -139097;2;0;false;false;;;;;;
                                  -139099;3;0;false;false;63;95;191;;;
                                  -139102;3;0;false;false;;;;;;
                                  -139105;1;0;false;false;63;95;191;;;
                                  -139106;1;0;false;false;;;;;;
                                  -139107;7;0;false;false;63;95;191;;;
                                  -139114;1;0;false;false;;;;;;
                                  -139115;3;0;false;false;63;95;191;;;
                                  -139118;1;0;false;false;;;;;;
                                  -139119;10;0;false;false;63;95;191;;;
                                  -139129;1;0;false;false;;;;;;
                                  -139130;9;0;false;false;63;95;191;;;
                                  -139139;1;0;false;false;;;;;;
                                  -139140;10;0;false;false;63;95;191;;;
                                  -139150;1;0;false;false;;;;;;
                                  -139151;6;0;false;false;63;95;191;;;
                                  -139157;3;0;false;false;;;;;;
                                  -139160;1;0;false;false;63;95;191;;;
                                  -139161;3;0;false;false;;;;;;
                                  -139164;1;0;false;false;63;95;191;;;
                                  -139165;1;0;false;false;;;;;;
                                  -139166;8;1;false;false;127;159;191;;;
                                  -139174;3;0;false;false;63;95;191;;;
                                  -139177;1;0;false;false;;;;;;
                                  -139178;9;0;false;false;63;95;191;;;
                                  -139187;1;0;false;false;;;;;;
                                  -139188;10;0;false;false;63;95;191;;;
                                  -139198;1;0;false;false;;;;;;
                                  -139199;5;0;false;false;63;95;191;;;
                                  -139204;3;0;false;false;;;;;;
                                  -139207;1;0;false;false;63;95;191;;;
                                  -139208;3;0;false;false;;;;;;
                                  -139211;1;0;false;false;63;95;191;;;
                                  -139212;1;0;false;false;;;;;;
                                  -139213;11;1;false;false;127;159;191;;;
                                  -139224;12;0;false;false;63;95;191;;;
                                  -139236;1;0;false;false;;;;;;
                                  -139237;4;0;false;false;127;127;159;;;
                                  -139241;3;0;false;false;;;;;;
                                  -139244;1;0;false;false;63;95;191;;;
                                  -139245;4;0;false;false;;;;;;
                                  -139249;4;0;false;false;127;127;159;;;
                                  -139253;21;0;false;false;63;95;191;;;
                                  -139274;1;0;false;false;;;;;;
                                  -139275;1;0;false;false;127;127;159;;;
                                  -139276;1;0;false;false;;;;;;
                                  -139277;2;0;false;false;63;95;191;;;
                                  -139279;1;0;false;false;;;;;;
                                  -139280;3;0;false;false;63;95;191;;;
                                  -139283;1;0;false;false;;;;;;
                                  -139284;8;0;false;false;63;95;191;;;
                                  -139292;1;0;false;false;;;;;;
                                  -139293;3;0;false;false;63;95;191;;;
                                  -139296;1;0;false;false;;;;;;
                                  -139297;4;0;false;false;63;95;191;;;
                                  -139301;1;0;false;false;;;;;;
                                  -139302;8;0;false;false;63;95;191;;;
                                  -139310;5;0;false;false;127;127;159;;;
                                  -139315;3;0;false;false;;;;;;
                                  -139318;1;0;false;false;63;95;191;;;
                                  -139319;4;0;false;false;;;;;;
                                  -139323;4;0;false;false;127;127;159;;;
                                  -139327;27;0;false;false;63;95;191;;;
                                  -139354;1;0;false;false;;;;;;
                                  -139355;1;0;false;false;127;127;159;;;
                                  -139356;1;0;false;false;;;;;;
                                  -139357;2;0;false;false;63;95;191;;;
                                  -139359;1;0;false;false;;;;;;
                                  -139360;3;0;false;false;63;95;191;;;
                                  -139363;1;0;false;false;;;;;;
                                  -139364;6;0;false;false;63;95;191;;;
                                  -139370;1;0;false;false;;;;;;
                                  -139371;4;0;false;false;63;95;191;;;
                                  -139375;1;0;false;false;;;;;;
                                  -139376;3;0;false;false;63;95;191;;;
                                  -139379;1;0;false;false;;;;;;
                                  -139380;6;0;false;false;63;95;191;;;
                                  -139386;1;0;false;false;;;;;;
                                  -139387;4;0;false;false;63;95;191;;;
                                  -139391;1;0;false;false;;;;;;
                                  -139392;7;0;false;false;63;95;191;;;
                                  -139399;1;0;false;false;;;;;;
                                  -139400;3;0;false;false;63;95;191;;;
                                  -139403;1;0;false;false;;;;;;
                                  -139404;8;0;false;false;63;95;191;;;
                                  -139412;5;0;false;false;127;127;159;;;
                                  -139417;3;0;false;false;;;;;;
                                  -139420;1;0;false;false;63;95;191;;;
                                  -139421;1;0;false;false;;;;;;
                                  -139422;5;0;false;false;127;127;159;;;
                                  -139427;3;0;false;false;;;;;;
                                  -139430;1;0;false;false;63;95;191;;;
                                  -139431;1;0;false;false;;;;;;
                                  -139432;7;1;false;false;127;159;191;;;
                                  -139439;3;0;false;false;63;95;191;;;
                                  -139442;3;0;false;false;;;;;;
                                  -139445;2;0;false;false;63;95;191;;;
                                  -139447;2;0;false;false;;;;;;
                                  -139449;6;1;false;false;127;0;85;;;
                                  -139455;1;0;false;false;;;;;;
                                  -139456;5;0;false;false;0;0;0;;;
                                  -139461;1;0;false;false;;;;;;
                                  -139462;24;0;false;false;0;0;0;;;
                                  -139486;1;0;false;false;;;;;;
                                  -139487;1;0;false;false;0;0;0;;;
                                  -139488;3;0;false;false;;;;;;
                                  -139491;14;0;false;false;0;0;0;;;
                                  -139505;3;0;false;false;;;;;;
                                  -139508;2;1;false;false;127;0;85;;;
                                  -139510;1;0;false;false;;;;;;
                                  -139511;20;0;false;false;0;0;0;;;
                                  -139531;1;0;false;false;;;;;;
                                  -139532;2;0;false;false;0;0;0;;;
                                  -139534;1;0;false;false;;;;;;
                                  -139535;4;1;false;false;127;0;85;;;
                                  -139539;1;0;false;false;0;0;0;;;
                                  -139540;1;0;false;false;;;;;;
                                  -139541;1;0;false;false;0;0;0;;;
                                  -139542;4;0;false;false;;;;;;
                                  -139546;6;1;false;false;127;0;85;;;
                                  -139552;1;0;false;false;;;;;;
                                  -139553;59;0;false;false;0;0;0;;;
                                  -139612;3;0;false;false;;;;;;
                                  -139615;1;0;false;false;0;0;0;;;
                                  -139616;3;0;false;false;;;;;;
                                  -139619;6;1;false;false;127;0;85;;;
                                  -139625;1;0;false;false;;;;;;
                                  -139626;20;0;false;false;0;0;0;;;
                                  -139646;2;0;false;false;;;;;;
                                  -139648;1;0;false;false;0;0;0;;;
                                  -139649;2;0;false;false;;;;;;
                                  -139651;3;0;false;false;63;95;191;;;
                                  -139654;3;0;false;false;;;;;;
                                  -139657;1;0;false;false;63;95;191;;;
                                  -139658;1;0;false;false;;;;;;
                                  -139659;7;0;false;false;63;95;191;;;
                                  -139666;1;0;false;false;;;;;;
                                  -139667;3;0;false;false;63;95;191;;;
                                  -139670;1;0;false;false;;;;;;
                                  -139671;8;0;false;false;63;95;191;;;
                                  -139679;1;0;false;false;;;;;;
                                  -139680;5;0;false;false;63;95;191;;;
                                  -139685;3;0;false;false;;;;;;
                                  -139688;1;0;false;false;63;95;191;;;
                                  -139689;1;0;false;false;;;;;;
                                  -139690;3;0;false;false;127;127;159;;;
                                  -139693;3;0;false;false;;;;;;
                                  -139696;1;0;false;false;63;95;191;;;
                                  -139697;3;0;false;false;;;;;;
                                  -139700;1;0;false;false;63;95;191;;;
                                  -139701;1;0;false;false;;;;;;
                                  -139702;8;1;false;false;127;159;191;;;
                                  -139710;8;0;false;false;63;95;191;;;
                                  -139718;1;0;false;false;;;;;;
                                  -139719;5;0;false;false;63;95;191;;;
                                  -139724;1;0;false;false;;;;;;
                                  -139725;2;0;false;false;63;95;191;;;
                                  -139727;1;0;false;false;;;;;;
                                  -139728;2;0;false;false;63;95;191;;;
                                  -139730;1;0;false;false;;;;;;
                                  -139731;5;0;false;false;63;95;191;;;
                                  -139736;1;0;false;false;;;;;;
                                  -139737;6;0;false;false;63;95;191;;;
                                  -139743;1;0;false;false;;;;;;
                                  -139744;2;0;false;false;63;95;191;;;
                                  -139746;1;0;false;false;;;;;;
                                  -139747;5;0;false;false;63;95;191;;;
                                  -139752;1;0;false;false;;;;;;
                                  -139753;2;0;false;false;63;95;191;;;
                                  -139755;1;0;false;false;;;;;;
                                  -139756;2;0;false;false;63;95;191;;;
                                  -139758;1;0;false;false;;;;;;
                                  -139759;10;0;false;false;63;95;191;;;
                                  -139769;3;0;false;false;;;;;;
                                  -139772;1;0;false;false;63;95;191;;;
                                  -139773;1;0;false;false;;;;;;
                                  -139774;11;1;false;false;127;159;191;;;
                                  -139785;12;0;false;false;63;95;191;;;
                                  -139797;1;0;false;false;;;;;;
                                  -139798;4;0;false;false;127;127;159;;;
                                  -139802;3;0;false;false;;;;;;
                                  -139805;1;0;false;false;63;95;191;;;
                                  -139806;4;0;false;false;;;;;;
                                  -139810;4;0;false;false;127;127;159;;;
                                  -139814;21;0;false;false;63;95;191;;;
                                  -139835;1;0;false;false;;;;;;
                                  -139836;1;0;false;false;127;127;159;;;
                                  -139837;1;0;false;false;;;;;;
                                  -139838;2;0;false;false;63;95;191;;;
                                  -139840;1;0;false;false;;;;;;
                                  -139841;3;0;false;false;63;95;191;;;
                                  -139844;1;0;false;false;;;;;;
                                  -139845;8;0;false;false;63;95;191;;;
                                  -139853;1;0;false;false;;;;;;
                                  -139854;3;0;false;false;63;95;191;;;
                                  -139857;1;0;false;false;;;;;;
                                  -139858;4;0;false;false;63;95;191;;;
                                  -139862;1;0;false;false;;;;;;
                                  -139863;8;0;false;false;63;95;191;;;
                                  -139871;5;0;false;false;127;127;159;;;
                                  -139876;3;0;false;false;;;;;;
                                  -139879;1;0;false;false;63;95;191;;;
                                  -139880;4;0;false;false;;;;;;
                                  -139884;4;0;false;false;127;127;159;;;
                                  -139888;27;0;false;false;63;95;191;;;
                                  -139915;1;0;false;false;;;;;;
                                  -139916;1;0;false;false;127;127;159;;;
                                  -139917;1;0;false;false;;;;;;
                                  -139918;2;0;false;false;63;95;191;;;
                                  -139920;1;0;false;false;;;;;;
                                  -139921;3;0;false;false;63;95;191;;;
                                  -139924;1;0;false;false;;;;;;
                                  -139925;6;0;false;false;63;95;191;;;
                                  -139931;1;0;false;false;;;;;;
                                  -139932;4;0;false;false;63;95;191;;;
                                  -139936;1;0;false;false;;;;;;
                                  -139937;3;0;false;false;63;95;191;;;
                                  -139940;1;0;false;false;;;;;;
                                  -139941;6;0;false;false;63;95;191;;;
                                  -139947;1;0;false;false;;;;;;
                                  -139948;4;0;false;false;63;95;191;;;
                                  -139952;1;0;false;false;;;;;;
                                  -139953;7;0;false;false;63;95;191;;;
                                  -139960;1;0;false;false;;;;;;
                                  -139961;3;0;false;false;63;95;191;;;
                                  -139964;1;0;false;false;;;;;;
                                  -139965;8;0;false;false;63;95;191;;;
                                  -139973;5;0;false;false;127;127;159;;;
                                  -139978;3;0;false;false;;;;;;
                                  -139981;1;0;false;false;63;95;191;;;
                                  -139982;1;0;false;false;;;;;;
                                  -139983;5;0;false;false;127;127;159;;;
                                  -139988;3;0;false;false;;;;;;
                                  -139991;2;0;false;false;63;95;191;;;
                                  -139993;2;0;false;false;;;;;;
                                  -139995;6;1;false;false;127;0;85;;;
                                  -140001;1;0;false;false;;;;;;
                                  -140002;6;0;false;false;0;0;0;;;
                                  -140008;1;0;false;false;;;;;;
                                  -140009;18;0;false;false;0;0;0;;;
                                  -140027;1;0;false;false;;;;;;
                                  -140028;1;0;false;false;0;0;0;;;
                                  -140029;3;0;false;false;;;;;;
                                  -140032;14;0;false;false;0;0;0;;;
                                  -140046;3;0;false;false;;;;;;
                                  -140049;6;1;false;false;127;0;85;;;
                                  -140055;1;0;false;false;;;;;;
                                  -140056;33;0;false;false;0;0;0;;;
                                  -140089;1;0;false;false;;;;;;
                                  -140090;11;0;false;false;0;0;0;;;
                                  -140101;1;0;false;false;;;;;;
                                  -140102;1;0;false;false;0;0;0;;;
                                  -140103;1;0;false;false;;;;;;
                                  -140104;13;0;false;false;0;0;0;;;
                                  -140117;2;0;false;false;;;;;;
                                  -140119;1;0;false;false;0;0;0;;;
                                  -140120;4;0;false;false;;;;;;
                                  -140124;6;1;false;false;127;0;85;;;
                                  -140130;1;0;false;false;;;;;;
                                  -140131;3;1;false;false;127;0;85;;;
                                  -140134;1;0;false;false;;;;;;
                                  -140135;10;0;false;false;0;0;0;;;
                                  -140145;1;0;false;false;;;;;;
                                  -140146;1;0;false;false;0;0;0;;;
                                  -140147;3;0;false;false;;;;;;
                                  -140150;3;1;false;false;127;0;85;;;
                                  -140153;1;0;false;false;;;;;;
                                  -140154;5;0;false;false;0;0;0;;;
                                  -140159;1;0;false;false;;;;;;
                                  -140160;1;0;false;false;0;0;0;;;
                                  -140161;1;0;false;false;;;;;;
                                  -140162;5;1;false;false;127;0;85;;;
                                  -140167;12;0;false;false;0;0;0;;;
                                  -140179;3;0;false;false;;;;;;
                                  -140182;5;0;false;false;0;0;0;;;
                                  -140187;1;0;false;false;;;;;;
                                  -140188;2;0;false;false;0;0;0;;;
                                  -140190;1;0;false;false;;;;;;
                                  -140191;19;0;false;false;0;0;0;;;
                                  -140210;1;0;false;false;;;;;;
                                  -140211;1;0;false;false;0;0;0;;;
                                  -140212;1;0;false;false;;;;;;
                                  -140213;17;0;false;false;0;0;0;;;
                                  -140230;1;0;false;false;;;;;;
                                  -140231;1;0;false;false;0;0;0;;;
                                  -140232;1;0;false;false;;;;;;
                                  -140233;14;0;false;false;0;0;0;;;
                                  -140247;3;0;false;false;;;;;;
                                  -140250;2;1;false;false;127;0;85;;;
                                  -140252;1;0;false;false;;;;;;
                                  -140253;14;0;false;false;0;0;0;;;
                                  -140267;1;0;false;false;;;;;;
                                  -140268;1;0;false;false;0;0;0;;;
                                  -140269;4;0;false;false;;;;;;
                                  -140273;5;0;false;false;0;0;0;;;
                                  -140278;1;0;false;false;;;;;;
                                  -140279;2;0;false;false;0;0;0;;;
                                  -140281;1;0;false;false;;;;;;
                                  -140282;17;0;false;false;0;0;0;;;
                                  -140299;1;0;false;false;;;;;;
                                  -140300;1;0;false;false;0;0;0;;;
                                  -140301;1;0;false;false;;;;;;
                                  -140302;13;0;false;false;0;0;0;;;
                                  -140315;3;0;false;false;;;;;;
                                  -140318;1;0;false;false;0;0;0;;;
                                  -140319;1;0;false;false;;;;;;
                                  -140320;4;1;false;false;127;0;85;;;
                                  -140324;1;0;false;false;;;;;;
                                  -140325;1;0;false;false;0;0;0;;;
                                  -140326;4;0;false;false;;;;;;
                                  -140330;5;0;false;false;0;0;0;;;
                                  -140335;1;0;false;false;;;;;;
                                  -140336;2;0;false;false;0;0;0;;;
                                  -140338;1;0;false;false;;;;;;
                                  -140339;18;0;false;false;0;0;0;;;
                                  -140357;3;0;false;false;;;;;;
                                  -140360;1;0;false;false;0;0;0;;;
                                  -140361;3;0;false;false;;;;;;
                                  -140364;6;1;false;false;127;0;85;;;
                                  -140370;1;0;false;false;;;;;;
                                  -140371;6;0;false;false;0;0;0;;;
                                  -140377;2;0;false;false;;;;;;
                                  -140379;1;0;false;false;0;0;0;;;
                                  -140380;4;0;false;false;;;;;;
                                  -140384;3;0;false;false;63;95;191;;;
                                  -140387;3;0;false;false;;;;;;
                                  -140390;1;0;false;false;63;95;191;;;
                                  -140391;1;0;false;false;;;;;;
                                  -140392;7;0;false;false;63;95;191;;;
                                  -140399;1;0;false;false;;;;;;
                                  -140400;3;0;false;false;63;95;191;;;
                                  -140403;1;0;false;false;;;;;;
                                  -140404;4;0;false;false;63;95;191;;;
                                  -140408;1;0;false;false;;;;;;
                                  -140409;8;0;false;false;63;95;191;;;
                                  -140417;1;0;false;false;;;;;;
                                  -140418;4;0;false;false;63;95;191;;;
                                  -140422;1;0;false;false;;;;;;
                                  -140423;6;0;false;false;63;95;191;;;
                                  -140429;1;0;false;false;;;;;;
                                  -140430;2;0;false;false;63;95;191;;;
                                  -140432;1;0;false;false;;;;;;
                                  -140433;7;0;false;false;63;95;191;;;
                                  -140440;1;0;false;false;;;;;;
                                  -140441;2;0;false;false;63;95;191;;;
                                  -140443;1;0;false;false;;;;;;
                                  -140444;2;0;false;false;63;95;191;;;
                                  -140446;1;0;false;false;;;;;;
                                  -140447;4;0;false;false;63;95;191;;;
                                  -140451;4;0;false;false;;;;;;
                                  -140455;1;0;false;false;63;95;191;;;
                                  -140456;1;0;false;false;;;;;;
                                  -140457;3;0;false;false;63;95;191;;;
                                  -140460;1;0;false;false;;;;;;
                                  -140461;1;0;false;false;63;95;191;;;
                                  -140462;1;0;false;false;;;;;;
                                  -140463;9;0;false;false;63;95;191;;;
                                  -140472;1;0;false;false;;;;;;
                                  -140473;9;0;false;false;63;95;191;;;
                                  -140482;1;0;false;false;;;;;;
                                  -140483;4;0;false;false;63;95;191;;;
                                  -140487;1;0;false;false;;;;;;
                                  -140488;3;0;false;false;63;95;191;;;
                                  -140491;1;0;false;false;;;;;;
                                  -140492;11;0;false;false;63;95;191;;;
                                  -140503;1;0;false;false;;;;;;
                                  -140504;5;0;false;false;63;95;191;;;
                                  -140509;3;0;false;false;;;;;;
                                  -140512;1;0;false;false;63;95;191;;;
                                  -140513;1;0;false;false;;;;;;
                                  -140514;3;0;false;false;127;127;159;;;
                                  -140517;3;0;false;false;;;;;;
                                  -140520;1;0;false;false;63;95;191;;;
                                  -140521;3;0;false;false;;;;;;
                                  -140524;1;0;false;false;63;95;191;;;
                                  -140525;1;0;false;false;;;;;;
                                  -140526;7;1;false;false;127;159;191;;;
                                  -140533;10;0;false;false;63;95;191;;;
                                  -140543;1;0;false;false;;;;;;
                                  -140544;6;0;false;false;63;95;191;;;
                                  -140550;1;0;false;false;;;;;;
                                  -140551;2;0;false;false;63;95;191;;;
                                  -140553;1;0;false;false;;;;;;
                                  -140554;3;0;false;false;63;95;191;;;
                                  -140557;1;0;false;false;;;;;;
                                  -140558;5;0;false;false;63;95;191;;;
                                  -140563;1;0;false;false;;;;;;
                                  -140564;9;0;false;false;63;95;191;;;
                                  -140573;1;0;false;false;;;;;;
                                  -140574;2;0;false;false;63;95;191;;;
                                  -140576;1;0;false;false;;;;;;
                                  -140577;3;0;false;false;63;95;191;;;
                                  -140580;1;0;false;false;;;;;;
                                  -140581;5;0;false;false;63;95;191;;;
                                  -140586;4;0;false;false;;;;;;
                                  -140590;1;0;false;false;63;95;191;;;
                                  -140591;2;0;false;false;;;;;;
                                  -140593;1;0;false;false;63;95;191;;;
                                  -140594;1;0;false;false;;;;;;
                                  -140595;5;0;false;false;63;95;191;;;
                                  -140600;1;0;false;false;;;;;;
                                  -140601;4;0;false;false;63;95;191;;;
                                  -140605;1;0;false;false;;;;;;
                                  -140606;3;0;false;false;63;95;191;;;
                                  -140609;1;0;false;false;;;;;;
                                  -140610;9;0;false;false;63;95;191;;;
                                  -140619;1;0;false;false;;;;;;
                                  -140620;2;0;false;false;63;95;191;;;
                                  -140622;1;0;false;false;;;;;;
                                  -140623;3;0;false;false;63;95;191;;;
                                  -140626;1;0;false;false;;;;;;
                                  -140627;9;0;false;false;63;95;191;;;
                                  -140636;3;0;false;false;;;;;;
                                  -140639;1;0;false;false;63;95;191;;;
                                  -140640;1;0;false;false;;;;;;
                                  -140641;7;1;false;false;127;159;191;;;
                                  -140648;4;0;false;false;63;95;191;;;
                                  -140652;1;0;false;false;;;;;;
                                  -140653;4;0;false;false;63;95;191;;;
                                  -140657;1;0;false;false;;;;;;
                                  -140658;2;0;false;false;63;95;191;;;
                                  -140660;1;0;false;false;;;;;;
                                  -140661;3;0;false;false;63;95;191;;;
                                  -140664;1;0;false;false;;;;;;
                                  -140665;4;0;false;false;63;95;191;;;
                                  -140669;1;0;false;false;;;;;;
                                  -140670;2;0;false;false;63;95;191;;;
                                  -140672;1;0;false;false;;;;;;
                                  -140673;7;0;false;false;63;95;191;;;
                                  -140680;1;0;false;false;;;;;;
                                  -140681;4;0;false;false;63;95;191;;;
                                  -140685;1;0;false;false;;;;;;
                                  -140686;8;0;false;false;63;95;191;;;
                                  -140694;1;0;false;false;;;;;;
                                  -140695;3;0;false;false;63;95;191;;;
                                  -140698;3;0;false;false;;;;;;
                                  -140701;1;0;false;false;63;95;191;;;
                                  -140702;1;0;false;false;;;;;;
                                  -140703;8;1;false;false;127;159;191;;;
                                  -140711;4;0;false;false;63;95;191;;;
                                  -140715;1;0;false;false;;;;;;
                                  -140716;8;0;false;false;63;95;191;;;
                                  -140724;1;0;false;false;;;;;;
                                  -140725;4;0;false;false;63;95;191;;;
                                  -140729;1;0;false;false;;;;;;
                                  -140730;6;0;false;false;63;95;191;;;
                                  -140736;1;0;false;false;;;;;;
                                  -140737;2;0;false;false;63;95;191;;;
                                  -140739;1;0;false;false;;;;;;
                                  -140740;7;0;false;false;63;95;191;;;
                                  -140747;1;0;false;false;;;;;;
                                  -140748;2;0;false;false;63;95;191;;;
                                  -140750;1;0;false;false;;;;;;
                                  -140751;2;0;false;false;63;95;191;;;
                                  -140753;1;0;false;false;;;;;;
                                  -140754;4;0;false;false;63;95;191;;;
                                  -140758;1;0;false;false;;;;;;
                                  -140759;3;0;false;false;63;95;191;;;
                                  -140762;1;0;false;false;;;;;;
                                  -140763;1;0;false;false;63;95;191;;;
                                  -140764;3;0;false;false;;;;;;
                                  -140767;1;0;false;false;63;95;191;;;
                                  -140768;2;0;false;false;;;;;;
                                  -140770;9;0;false;false;63;95;191;;;
                                  -140779;1;0;false;false;;;;;;
                                  -140780;9;0;false;false;63;95;191;;;
                                  -140789;1;0;false;false;;;;;;
                                  -140790;4;0;false;false;63;95;191;;;
                                  -140794;1;0;false;false;;;;;;
                                  -140795;3;0;false;false;63;95;191;;;
                                  -140798;1;0;false;false;;;;;;
                                  -140799;11;0;false;false;63;95;191;;;
                                  -140810;1;0;false;false;;;;;;
                                  -140811;5;0;false;false;63;95;191;;;
                                  -140816;1;0;false;false;;;;;;
                                  -140817;4;0;false;false;63;95;191;;;
                                  -140821;1;0;false;false;;;;;;
                                  -140822;3;0;false;false;63;95;191;;;
                                  -140825;1;0;false;false;;;;;;
                                  -140826;5;0;false;false;63;95;191;;;
                                  -140831;4;0;false;false;;;;;;
                                  -140835;1;0;false;false;63;95;191;;;
                                  -140836;2;0;false;false;;;;;;
                                  -140838;5;0;false;false;63;95;191;;;
                                  -140843;1;0;false;false;;;;;;
                                  -140844;2;0;false;false;63;95;191;;;
                                  -140846;1;0;false;false;;;;;;
                                  -140847;1;0;false;false;63;95;191;;;
                                  -140848;1;0;false;false;;;;;;
                                  -140849;7;0;false;false;63;95;191;;;
                                  -140856;1;0;false;false;;;;;;
                                  -140857;2;0;false;false;63;95;191;;;
                                  -140859;1;0;false;false;;;;;;
                                  -140860;10;0;false;false;63;95;191;;;
                                  -140870;1;0;false;false;;;;;;
                                  -140871;8;0;false;false;63;95;191;;;
                                  -140879;1;0;false;false;;;;;;
                                  -140880;2;0;false;false;63;95;191;;;
                                  -140882;1;0;false;false;;;;;;
                                  -140883;3;0;false;false;63;95;191;;;
                                  -140886;1;0;false;false;;;;;;
                                  -140887;5;0;false;false;63;95;191;;;
                                  -140892;1;0;false;false;;;;;;
                                  -140893;2;0;false;false;63;95;191;;;
                                  -140895;1;0;false;false;;;;;;
                                  -140896;3;0;false;false;63;95;191;;;
                                  -140899;4;0;false;false;;;;;;
                                  -140903;1;0;false;false;63;95;191;;;
                                  -140904;2;0;false;false;;;;;;
                                  -140906;5;0;false;false;63;95;191;;;
                                  -140911;1;0;false;false;;;;;;
                                  -140912;6;0;false;false;63;95;191;;;
                                  -140918;1;0;false;false;;;;;;
                                  -140919;6;0;false;false;63;95;191;;;
                                  -140925;1;0;false;false;;;;;;
                                  -140926;4;0;false;false;63;95;191;;;
                                  -140930;1;0;false;false;;;;;;
                                  -140931;1;0;false;false;63;95;191;;;
                                  -140932;1;0;false;false;;;;;;
                                  -140933;3;0;false;false;63;95;191;;;
                                  -140936;1;0;false;false;;;;;;
                                  -140937;4;0;false;false;63;95;191;;;
                                  -140941;1;0;false;false;;;;;;
                                  -140942;4;0;false;false;63;95;191;;;
                                  -140946;1;0;false;false;;;;;;
                                  -140947;3;0;false;false;63;95;191;;;
                                  -140950;1;0;false;false;;;;;;
                                  -140951;4;0;false;false;63;95;191;;;
                                  -140955;1;0;false;false;;;;;;
                                  -140956;7;0;false;false;63;95;191;;;
                                  -140963;4;0;false;false;;;;;;
                                  -140967;1;0;false;false;63;95;191;;;
                                  -140968;1;0;false;false;;;;;;
                                  -140969;11;1;false;false;127;159;191;;;
                                  -140980;24;0;false;false;63;95;191;;;
                                  -141004;1;0;false;false;;;;;;
                                  -141005;4;0;false;false;127;127;159;;;
                                  -141009;3;0;false;false;;;;;;
                                  -141012;1;0;false;false;63;95;191;;;
                                  -141013;4;0;false;false;;;;;;
                                  -141017;4;0;false;false;127;127;159;;;
                                  -141021;22;0;false;false;63;95;191;;;
                                  -141043;1;0;false;false;;;;;;
                                  -141044;1;0;false;false;127;127;159;;;
                                  -141045;1;0;false;false;;;;;;
                                  -141046;2;0;false;false;63;95;191;;;
                                  -141048;1;0;false;false;;;;;;
                                  -141049;3;0;false;false;63;95;191;;;
                                  -141052;1;0;false;false;;;;;;
                                  -141053;7;0;false;false;63;95;191;;;
                                  -141060;1;0;false;false;;;;;;
                                  -141061;7;0;false;false;63;95;191;;;
                                  -141068;1;0;false;false;;;;;;
                                  -141069;8;0;false;false;63;95;191;;;
                                  -141077;4;0;false;false;;;;;;
                                  -141081;1;0;false;false;63;95;191;;;
                                  -141082;3;0;false;false;;;;;;
                                  -141085;2;0;false;false;63;95;191;;;
                                  -141087;1;0;false;false;;;;;;
                                  -141088;3;0;false;false;63;95;191;;;
                                  -141091;1;0;false;false;;;;;;
                                  -141092;8;0;false;false;63;95;191;;;
                                  -141100;1;0;false;false;;;;;;
                                  -141101;2;0;false;false;63;95;191;;;
                                  -141103;1;0;false;false;;;;;;
                                  -141104;3;0;false;false;63;95;191;;;
                                  -141107;1;0;false;false;;;;;;
                                  -141108;5;0;false;false;63;95;191;;;
                                  -141113;1;0;false;false;;;;;;
                                  -141114;4;0;false;false;63;95;191;;;
                                  -141118;1;0;false;false;;;;;;
                                  -141119;2;0;false;false;63;95;191;;;
                                  -141121;1;0;false;false;;;;;;
                                  -141122;3;0;false;false;63;95;191;;;
                                  -141125;1;0;false;false;;;;;;
                                  -141126;3;0;false;false;63;95;191;;;
                                  -141129;1;0;false;false;;;;;;
                                  -141130;2;0;false;false;63;95;191;;;
                                  -141132;1;0;false;false;;;;;;
                                  -141133;9;0;false;false;63;95;191;;;
                                  -141142;1;0;false;false;;;;;;
                                  -141143;6;0;false;false;63;95;191;;;
                                  -141149;3;0;false;false;;;;;;
                                  -141152;1;0;false;false;63;95;191;;;
                                  -141153;3;0;false;false;;;;;;
                                  -141156;6;0;false;false;63;95;191;;;
                                  -141162;1;0;false;false;;;;;;
                                  -141163;3;0;false;false;63;95;191;;;
                                  -141166;1;0;false;false;;;;;;
                                  -141167;4;0;false;false;63;95;191;;;
                                  -141171;1;0;false;false;;;;;;
                                  -141172;6;0;false;false;63;95;191;;;
                                  -141178;1;0;false;false;;;;;;
                                  -141179;2;0;false;false;63;95;191;;;
                                  -141181;1;0;false;false;;;;;;
                                  -141182;4;0;false;false;63;95;191;;;
                                  -141186;1;0;false;false;;;;;;
                                  -141187;10;0;false;false;63;95;191;;;
                                  -141197;5;0;false;false;127;127;159;;;
                                  -141202;3;0;false;false;;;;;;
                                  -141205;1;0;false;false;63;95;191;;;
                                  -141206;1;0;false;false;;;;;;
                                  -141207;5;0;false;false;127;127;159;;;
                                  -141212;3;0;false;false;;;;;;
                                  -141215;2;0;false;false;63;95;191;;;
                                  -141217;2;0;false;false;;;;;;
                                  -141219;3;1;false;false;127;0;85;;;
                                  -141222;1;0;false;false;;;;;;
                                  -141223;2;0;false;false;0;0;0;;;
                                  -141225;1;0;false;false;;;;;;
                                  -141226;16;0;false;false;0;0;0;;;
                                  -141242;3;1;false;false;127;0;85;;;
                                  -141245;1;0;false;false;;;;;;
                                  -141246;11;0;false;false;0;0;0;;;
                                  -141257;1;0;false;false;;;;;;
                                  -141258;6;0;false;false;0;0;0;;;
                                  -141264;1;0;false;false;;;;;;
                                  -141265;5;0;false;false;0;0;0;;;
                                  -141270;1;0;false;false;;;;;;
                                  -141271;1;0;false;false;0;0;0;;;
                                  -141272;3;0;false;false;;;;;;
                                  -141275;2;1;false;false;127;0;85;;;
                                  -141277;1;0;false;false;;;;;;
                                  -141278;31;0;false;false;0;0;0;;;
                                  -141309;1;0;false;false;;;;;;
                                  -141310;1;0;false;false;0;0;0;;;
                                  -141311;4;0;false;false;;;;;;
                                  -141315;6;1;false;false;127;0;85;;;
                                  -141321;1;0;false;false;;;;;;
                                  -141322;34;0;false;false;0;0;0;;;
                                  -141356;1;0;false;false;;;;;;
                                  -141357;12;0;false;false;0;0;0;;;
                                  -141369;3;0;false;false;;;;;;
                                  -141372;1;0;false;false;0;0;0;;;
                                  -141373;3;0;false;false;;;;;;
                                  -141376;15;0;false;false;0;0;0;;;
                                  -141391;1;0;false;false;;;;;;
                                  -141392;5;0;false;false;0;0;0;;;
                                  -141397;1;0;false;false;;;;;;
                                  -141398;1;0;false;false;0;0;0;;;
                                  -141399;1;0;false;false;;;;;;
                                  -141400;30;0;false;false;0;0;0;;;
                                  -141430;1;0;false;false;;;;;;
                                  -141431;11;0;false;false;0;0;0;;;
                                  -141442;1;0;false;false;;;;;;
                                  -141443;6;0;false;false;0;0;0;;;
                                  -141449;3;0;false;false;;;;;;
                                  -141452;3;1;false;false;127;0;85;;;
                                  -141455;1;0;false;false;;;;;;
                                  -141456;10;0;false;false;0;0;0;;;
                                  -141466;1;0;false;false;;;;;;
                                  -141467;1;0;false;false;0;0;0;;;
                                  -141468;1;0;false;false;;;;;;
                                  -141469;14;0;false;false;0;0;0;;;
                                  -141483;3;0;false;false;;;;;;
                                  -141486;3;1;false;false;127;0;85;;;
                                  -141489;2;0;false;false;0;0;0;;;
                                  -141491;1;0;false;false;;;;;;
                                  -141492;9;0;false;false;0;0;0;;;
                                  -141501;3;0;false;false;;;;;;
                                  -141504;2;1;false;false;127;0;85;;;
                                  -141506;1;0;false;false;;;;;;
                                  -141507;6;0;false;false;0;0;0;;;
                                  -141513;1;0;false;false;;;;;;
                                  -141514;2;0;false;false;0;0;0;;;
                                  -141516;1;0;false;false;;;;;;
                                  -141517;4;1;false;false;127;0;85;;;
                                  -141521;1;0;false;false;;;;;;
                                  -141522;2;0;false;false;0;0;0;;;
                                  -141524;1;0;false;false;;;;;;
                                  -141525;14;0;false;false;0;0;0;;;
                                  -141539;1;0;false;false;;;;;;
                                  -141540;2;0;false;false;0;0;0;;;
                                  -141542;1;0;false;false;;;;;;
                                  -141543;4;1;false;false;127;0;85;;;
                                  -141547;1;0;false;false;;;;;;
                                  -141548;2;0;false;false;0;0;0;;;
                                  -141550;1;0;false;false;;;;;;
                                  -141551;21;0;false;false;0;0;0;;;
                                  -141572;1;0;false;false;;;;;;
                                  -141573;2;0;false;false;0;0;0;;;
                                  -141575;1;0;false;false;;;;;;
                                  -141576;2;0;false;false;0;0;0;;;
                                  -141578;1;0;false;false;;;;;;
                                  -141579;1;0;false;false;0;0;0;;;
                                  -141580;4;0;false;false;;;;;;
                                  -141584;8;0;false;false;0;0;0;;;
                                  -141592;1;0;false;false;;;;;;
                                  -141593;1;0;false;false;0;0;0;;;
                                  -141594;1;0;false;false;;;;;;
                                  -141595;3;1;false;false;127;0;85;;;
                                  -141598;1;0;false;false;;;;;;
                                  -141599;3;1;false;false;127;0;85;;;
                                  -141602;2;0;false;false;0;0;0;;;
                                  -141604;1;0;false;false;;;;;;
                                  -141605;3;0;false;false;0;0;0;;;
                                  -141608;1;0;false;false;;;;;;
                                  -141609;12;0;false;false;0;0;0;;;
                                  -141621;3;0;false;false;;;;;;
                                  -141624;1;0;false;false;0;0;0;;;
                                  -141625;3;0;false;false;;;;;;
                                  -141628;4;1;false;false;127;0;85;;;
                                  -141632;1;0;false;false;;;;;;
                                  -141633;1;0;false;false;0;0;0;;;
                                  -141634;4;0;false;false;;;;;;
                                  -141638;3;1;false;false;127;0;85;;;
                                  -141641;1;0;false;false;;;;;;
                                  -141642;12;0;false;false;0;0;0;;;
                                  -141654;1;0;false;false;;;;;;
                                  -141655;1;0;false;false;0;0;0;;;
                                  -141656;1;0;false;false;;;;;;
                                  -141657;22;0;false;false;0;0;0;;;
                                  -141679;8;0;false;false;;;;;;
                                  -141687;35;0;false;false;63;127;95;;;
                                  -141722;2;0;false;false;;;;;;
                                  -141724;2;1;false;false;127;0;85;;;
                                  -141726;1;0;false;false;;;;;;
                                  -141727;18;0;false;false;0;0;0;;;
                                  -141745;1;0;false;false;;;;;;
                                  -141746;2;0;false;false;0;0;0;;;
                                  -141748;1;0;false;false;;;;;;
                                  -141749;2;0;false;false;0;0;0;;;
                                  -141751;1;0;false;false;;;;;;
                                  -141752;1;0;false;false;0;0;0;;;
                                  -141753;5;0;false;false;;;;;;
                                  -141758;38;0;false;false;0;0;0;;;
                                  -141796;4;0;false;false;;;;;;
                                  -141800;1;0;false;false;0;0;0;;;
                                  -141801;6;0;false;false;;;;;;
                                  -141807;3;1;false;false;127;0;85;;;
                                  -141810;1;0;false;false;;;;;;
                                  -141811;1;0;false;false;0;0;0;;;
                                  -141812;3;1;false;false;127;0;85;;;
                                  -141815;1;0;false;false;;;;;;
                                  -141816;1;0;false;false;0;0;0;;;
                                  -141817;1;0;false;false;;;;;;
                                  -141818;1;0;false;false;0;0;0;;;
                                  -141819;1;0;false;false;;;;;;
                                  -141820;2;0;false;false;0;0;0;;;
                                  -141822;1;0;false;false;;;;;;
                                  -141823;1;0;false;false;0;0;0;;;
                                  -141824;1;0;false;false;;;;;;
                                  -141825;1;0;false;false;0;0;0;;;
                                  -141826;1;0;false;false;;;;;;
                                  -141827;13;0;false;false;0;0;0;;;
                                  -141840;1;0;false;false;;;;;;
                                  -141841;4;0;false;false;0;0;0;;;
                                  -141845;1;0;false;false;;;;;;
                                  -141846;1;0;false;false;0;0;0;;;
                                  -141847;5;0;false;false;;;;;;
                                  -141852;2;1;false;false;127;0;85;;;
                                  -141854;1;0;false;false;;;;;;
                                  -141855;18;0;false;false;0;0;0;;;
                                  -141873;1;0;false;false;;;;;;
                                  -141874;2;0;false;false;0;0;0;;;
                                  -141876;1;0;false;false;;;;;;
                                  -141877;16;0;false;false;0;0;0;;;
                                  -141893;1;0;false;false;;;;;;
                                  -141894;1;0;false;false;0;0;0;;;
                                  -141895;1;0;false;false;;;;;;
                                  -141896;2;0;false;false;0;0;0;;;
                                  -141898;1;0;false;false;;;;;;
                                  -141899;2;0;false;false;0;0;0;;;
                                  -141901;1;0;false;false;;;;;;
                                  -141902;17;0;false;false;0;0;0;;;
                                  -141919;1;0;false;false;;;;;;
                                  -141920;1;0;false;false;0;0;0;;;
                                  -141921;1;0;false;false;;;;;;
                                  -141922;11;0;false;false;0;0;0;;;
                                  -141933;1;0;false;false;;;;;;
                                  -141934;1;0;false;false;0;0;0;;;
                                  -141935;6;0;false;false;;;;;;
                                  -141941;38;0;false;false;0;0;0;;;
                                  -141979;5;0;false;false;;;;;;
                                  -141984;1;0;false;false;0;0;0;;;
                                  -141985;6;0;false;false;;;;;;
                                  -141991;1;0;false;false;0;0;0;;;
                                  -141992;4;0;false;false;;;;;;
                                  -141996;54;0;false;false;63;127;95;;;
                                  -142050;2;0;false;false;;;;;;
                                  -142052;2;1;false;false;127;0;85;;;
                                  -142054;1;0;false;false;;;;;;
                                  -142055;28;0;false;false;0;0;0;;;
                                  -142083;1;0;false;false;;;;;;
                                  -142084;1;0;false;false;0;0;0;;;
                                  -142085;1;0;false;false;;;;;;
                                  -142086;2;0;false;false;0;0;0;;;
                                  -142088;1;0;false;false;;;;;;
                                  -142089;2;0;false;false;0;0;0;;;
                                  -142091;1;0;false;false;;;;;;
                                  -142092;11;0;false;false;0;0;0;;;
                                  -142103;1;0;false;false;;;;;;
                                  -142104;1;0;false;false;0;0;0;;;
                                  -142105;5;0;false;false;;;;;;
                                  -142110;8;0;false;false;0;0;0;;;
                                  -142118;1;0;false;false;;;;;;
                                  -142119;1;0;false;false;0;0;0;;;
                                  -142120;1;0;false;false;;;;;;
                                  -142121;3;1;false;false;127;0;85;;;
                                  -142124;1;0;false;false;;;;;;
                                  -142125;3;1;false;false;127;0;85;;;
                                  -142128;13;0;false;false;0;0;0;;;
                                  -142141;1;0;false;false;;;;;;
                                  -142142;1;0;false;false;0;0;0;;;
                                  -142143;1;0;false;false;;;;;;
                                  -142144;3;0;false;false;0;0;0;;;
                                  -142147;5;0;false;false;;;;;;
                                  -142152;32;0;false;false;0;0;0;;;
                                  -142184;1;0;false;false;;;;;;
                                  -142185;2;0;false;false;0;0;0;;;
                                  -142187;1;0;false;false;;;;;;
                                  -142188;9;0;false;false;0;0;0;;;
                                  -142197;1;0;false;false;;;;;;
                                  -142198;2;0;false;false;0;0;0;;;
                                  -142200;1;0;false;false;;;;;;
                                  -142201;14;0;false;false;0;0;0;;;
                                  -142215;5;0;false;false;;;;;;
                                  -142220;22;0;false;false;0;0;0;;;
                                  -142242;1;0;false;false;;;;;;
                                  -142243;1;0;false;false;0;0;0;;;
                                  -142244;1;0;false;false;;;;;;
                                  -142245;11;0;false;false;0;0;0;;;
                                  -142256;4;0;false;false;;;;;;
                                  -142260;1;0;false;false;0;0;0;;;
                                  -142261;4;0;false;false;;;;;;
                                  -142265;4;1;false;false;127;0;85;;;
                                  -142269;1;0;false;false;;;;;;
                                  -142270;1;0;false;false;0;0;0;;;
                                  -142271;5;0;false;false;;;;;;
                                  -142276;8;0;false;false;0;0;0;;;
                                  -142284;1;0;false;false;;;;;;
                                  -142285;1;0;false;false;0;0;0;;;
                                  -142286;1;0;false;false;;;;;;
                                  -142287;15;0;false;false;0;0;0;;;
                                  -142302;4;0;false;false;;;;;;
                                  -142306;1;0;false;false;0;0;0;;;
                                  -142307;3;0;false;false;;;;;;
                                  -142310;1;0;false;false;0;0;0;;;
                                  -142311;3;0;false;false;;;;;;
                                  -142314;6;1;false;false;127;0;85;;;
                                  -142320;1;0;false;false;;;;;;
                                  -142321;9;0;false;false;0;0;0;;;
                                  -142330;2;0;false;false;;;;;;
                                  -142332;1;0;false;false;0;0;0;;;
                                  -142333;2;0;false;false;;;;;;
                                  -142335;3;0;false;false;63;95;191;;;
                                  -142338;3;0;false;false;;;;;;
                                  -142341;1;0;false;false;63;95;191;;;
                                  -142342;1;0;false;false;;;;;;
                                  -142343;5;1;false;false;127;159;191;;;
                                  -142348;16;0;false;false;63;95;191;;;
                                  -142364;3;0;false;false;;;;;;
                                  -142367;1;0;false;false;63;95;191;;;
                                  -142368;1;0;false;false;;;;;;
                                  -142369;8;0;false;false;63;95;191;;;
                                  -142377;1;0;false;false;;;;;;
                                  -142378;10;0;false;false;63;95;191;;;
                                  -142388;1;0;false;false;;;;;;
                                  -142389;15;0;false;false;63;95;191;;;
                                  -142404;1;0;false;false;;;;;;
                                  -142405;4;0;false;false;63;95;191;;;
                                  -142409;1;0;false;false;;;;;;
                                  -142410;6;0;false;false;63;95;191;;;
                                  -142416;1;0;false;false;;;;;;
                                  -142417;4;0;false;false;63;95;191;;;
                                  -142421;1;0;false;false;;;;;;
                                  -142422;3;0;false;false;63;95;191;;;
                                  -142425;1;0;false;false;;;;;;
                                  -142426;2;0;false;false;63;95;191;;;
                                  -142428;1;0;false;false;;;;;;
                                  -142429;8;0;false;false;63;95;191;;;
                                  -142437;3;0;false;false;;;;;;
                                  -142440;2;0;false;false;63;95;191;;;
                                  -142442;2;0;false;false;;;;;;
                                  -142444;3;1;false;false;127;0;85;;;
                                  -142447;1;0;false;false;;;;;;
                                  -142448;2;0;false;false;0;0;0;;;
                                  -142450;1;0;false;false;;;;;;
                                  -142451;35;0;false;false;0;0;0;;;
                                  -142486;1;0;false;false;;;;;;
                                  -142487;5;0;false;false;0;0;0;;;
                                  -142492;1;0;false;false;;;;;;
                                  -142493;3;1;false;false;127;0;85;;;
                                  -142496;1;0;false;false;;;;;;
                                  -142497;11;0;false;false;0;0;0;;;
                                  -142508;1;0;false;false;;;;;;
                                  -142509;1;0;false;false;0;0;0;;;
                                  -142510;3;0;false;false;;;;;;
                                  -142513;15;0;false;false;0;0;0;;;
                                  -142528;1;0;false;false;;;;;;
                                  -142529;6;0;false;false;0;0;0;;;
                                  -142535;3;0;false;false;;;;;;
                                  -142538;10;0;false;false;0;0;0;;;
                                  -142548;1;0;false;false;;;;;;
                                  -142549;2;0;false;false;0;0;0;;;
                                  -142551;1;0;false;false;;;;;;
                                  -142552;6;0;false;false;0;0;0;;;
                                  -142558;1;0;false;false;;;;;;
                                  -142559;1;0;false;false;0;0;0;;;
                                  -142560;1;0;false;false;;;;;;
                                  -142561;3;1;false;false;127;0;85;;;
                                  -142564;1;0;false;false;;;;;;
                                  -142565;10;0;false;false;0;0;0;;;
                                  -142575;1;0;false;false;;;;;;
                                  -142576;4;0;false;false;0;0;0;;;
                                  -142580;3;0;false;false;;;;;;
                                  -142583;3;1;false;false;127;0;85;;;
                                  -142586;1;0;false;false;;;;;;
                                  -142587;10;0;false;false;0;0;0;;;
                                  -142597;1;0;false;false;;;;;;
                                  -142598;1;0;false;false;0;0;0;;;
                                  -142599;1;0;false;false;;;;;;
                                  -142600;14;0;false;false;0;0;0;;;
                                  -142614;3;0;false;false;;;;;;
                                  -142617;2;1;false;false;127;0;85;;;
                                  -142619;1;0;false;false;;;;;;
                                  -142620;15;0;false;false;0;0;0;;;
                                  -142635;1;0;false;false;;;;;;
                                  -142636;1;0;false;false;0;0;0;;;
                                  -142637;4;0;false;false;;;;;;
                                  -142641;6;1;false;false;127;0;85;;;
                                  -142647;1;0;false;false;;;;;;
                                  -142648;3;1;false;false;127;0;85;;;
                                  -142651;1;0;false;false;;;;;;
                                  -142652;3;1;false;false;127;0;85;;;
                                  -142655;2;0;false;false;0;0;0;;;
                                  -142657;1;0;false;false;;;;;;
                                  -142658;3;0;false;false;0;0;0;;;
                                  -142661;1;0;false;false;;;;;;
                                  -142662;12;0;false;false;0;0;0;;;
                                  -142674;3;0;false;false;;;;;;
                                  -142677;1;0;false;false;0;0;0;;;
                                  -142678;3;0;false;false;;;;;;
                                  -142681;5;0;false;false;0;0;0;;;
                                  -142686;1;0;false;false;;;;;;
                                  -142687;1;0;false;false;0;0;0;;;
                                  -142688;1;0;false;false;;;;;;
                                  -142689;37;0;false;false;0;0;0;;;
                                  -142726;1;0;false;false;;;;;;
                                  -142727;6;0;false;false;0;0;0;;;
                                  -142733;3;0;false;false;;;;;;
                                  -142736;2;1;false;false;127;0;85;;;
                                  -142738;1;0;false;false;;;;;;
                                  -142739;6;0;false;false;0;0;0;;;
                                  -142745;1;0;false;false;;;;;;
                                  -142746;2;0;false;false;0;0;0;;;
                                  -142748;1;0;false;false;;;;;;
                                  -142749;4;1;false;false;127;0;85;;;
                                  -142753;1;0;false;false;0;0;0;;;
                                  -142754;1;0;false;false;;;;;;
                                  -142755;1;0;false;false;0;0;0;;;
                                  -142756;4;0;false;false;;;;;;
                                  -142760;6;0;false;false;0;0;0;;;
                                  -142766;1;0;false;false;;;;;;
                                  -142767;1;0;false;false;0;0;0;;;
                                  -142768;1;0;false;false;;;;;;
                                  -142769;13;0;false;false;0;0;0;;;
                                  -142782;3;0;false;false;;;;;;
                                  -142785;1;0;false;false;0;0;0;;;
                                  -142786;3;0;false;false;;;;;;
                                  -142789;2;1;false;false;127;0;85;;;
                                  -142791;1;0;false;false;;;;;;
                                  -142792;14;0;false;false;0;0;0;;;
                                  -142806;1;0;false;false;;;;;;
                                  -142807;2;0;false;false;0;0;0;;;
                                  -142809;1;0;false;false;;;;;;
                                  -142810;2;0;false;false;0;0;0;;;
                                  -142812;1;0;false;false;;;;;;
                                  -142813;1;0;false;false;0;0;0;;;
                                  -142814;4;0;false;false;;;;;;
                                  -142818;6;1;false;false;127;0;85;;;
                                  -142824;1;0;false;false;;;;;;
                                  -142825;3;1;false;false;127;0;85;;;
                                  -142828;1;0;false;false;;;;;;
                                  -142829;3;1;false;false;127;0;85;;;
                                  -142832;2;0;false;false;0;0;0;;;
                                  -142834;1;0;false;false;;;;;;
                                  -142835;3;0;false;false;0;0;0;;;
                                  -142838;1;0;false;false;;;;;;
                                  -142839;12;0;false;false;0;0;0;;;
                                  -142851;3;0;false;false;;;;;;
                                  -142854;1;0;false;false;0;0;0;;;
                                  -142855;3;0;false;false;;;;;;
                                  -142858;3;1;false;false;127;0;85;;;
                                  -142861;1;0;false;false;;;;;;
                                  -142862;4;0;false;false;0;0;0;;;
                                  -142866;1;0;false;false;;;;;;
                                  -142867;5;0;false;false;0;0;0;;;
                                  -142872;1;0;false;false;;;;;;
                                  -142873;1;0;false;false;0;0;0;;;
                                  -142874;1;0;false;false;;;;;;
                                  -142875;2;0;false;false;0;0;0;;;
                                  -142877;3;0;false;false;;;;;;
                                  -142880;5;1;false;false;127;0;85;;;
                                  -142885;1;0;false;false;;;;;;
                                  -142886;2;0;false;false;0;0;0;;;
                                  -142888;1;0;false;false;;;;;;
                                  -142889;1;0;false;false;0;0;0;;;
                                  -142890;1;0;false;false;;;;;;
                                  -142891;13;0;false;false;0;0;0;;;
                                  -142904;1;0;false;false;;;;;;
                                  -142905;2;0;false;false;0;0;0;;;
                                  -142907;1;0;false;false;;;;;;
                                  -142908;15;0;false;false;0;0;0;;;
                                  -142923;1;0;false;false;;;;;;
                                  -142924;2;0;false;false;0;0;0;;;
                                  -142926;1;0;false;false;;;;;;
                                  -142927;1;0;false;false;0;0;0;;;
                                  -142928;1;0;false;false;;;;;;
                                  -142929;2;0;false;false;0;0;0;;;
                                  -142931;1;0;false;false;;;;;;
                                  -142932;16;0;false;false;0;0;0;;;
                                  -142948;1;0;false;false;;;;;;
                                  -142949;2;0;false;false;0;0;0;;;
                                  -142951;1;0;false;false;;;;;;
                                  -142952;11;0;false;false;0;0;0;;;
                                  -142963;1;0;false;false;;;;;;
                                  -142964;1;0;false;false;0;0;0;;;
                                  -142965;4;0;false;false;;;;;;
                                  -142969;4;0;false;false;0;0;0;;;
                                  -142973;3;0;false;false;;;;;;
                                  -142976;1;0;false;false;0;0;0;;;
                                  -142977;3;0;false;false;;;;;;
                                  -142980;3;1;false;false;127;0;85;;;
                                  -142983;2;0;false;false;0;0;0;;;
                                  -142985;1;0;false;false;;;;;;
                                  -142986;7;0;false;false;0;0;0;;;
                                  -142993;1;0;false;false;;;;;;
                                  -142994;1;0;false;false;0;0;0;;;
                                  -142995;1;0;false;false;;;;;;
                                  -142996;3;1;false;false;127;0;85;;;
                                  -142999;1;0;false;false;;;;;;
                                  -143000;3;1;false;false;127;0;85;;;
                                  -143003;15;0;false;false;0;0;0;;;
                                  -143018;1;0;false;false;;;;;;
                                  -143019;1;0;false;false;0;0;0;;;
                                  -143020;1;0;false;false;;;;;;
                                  -143021;2;0;false;false;0;0;0;;;
                                  -143023;1;0;false;false;;;;;;
                                  -143024;1;0;false;false;0;0;0;;;
                                  -143025;1;0;false;false;;;;;;
                                  -143026;1;0;false;false;0;0;0;;;
                                  -143027;1;0;false;false;;;;;;
                                  -143028;1;0;false;false;0;0;0;;;
                                  -143029;1;0;false;false;;;;;;
                                  -143030;3;0;false;false;0;0;0;;;
                                  -143033;3;0;false;false;;;;;;
                                  -143036;3;1;false;false;127;0;85;;;
                                  -143039;1;0;false;false;;;;;;
                                  -143040;1;0;false;false;0;0;0;;;
                                  -143041;3;1;false;false;127;0;85;;;
                                  -143044;1;0;false;false;;;;;;
                                  -143045;1;0;false;false;0;0;0;;;
                                  -143046;1;0;false;false;;;;;;
                                  -143047;1;0;false;false;0;0;0;;;
                                  -143048;1;0;false;false;;;;;;
                                  -143049;2;0;false;false;0;0;0;;;
                                  -143051;1;0;false;false;;;;;;
                                  -143052;1;0;false;false;0;0;0;;;
                                  -143053;1;0;false;false;;;;;;
                                  -143054;1;0;false;false;0;0;0;;;
                                  -143055;1;0;false;false;;;;;;
                                  -143056;14;0;false;false;0;0;0;;;
                                  -143070;1;0;false;false;;;;;;
                                  -143071;4;0;false;false;0;0;0;;;
                                  -143075;1;0;false;false;;;;;;
                                  -143076;1;0;false;false;0;0;0;;;
                                  -143077;4;0;false;false;;;;;;
                                  -143081;10;0;false;false;0;0;0;;;
                                  -143091;1;0;false;false;;;;;;
                                  -143092;5;0;false;false;0;0;0;;;
                                  -143097;1;0;false;false;;;;;;
                                  -143098;1;0;false;false;0;0;0;;;
                                  -143099;1;0;false;false;;;;;;
                                  -143100;10;0;false;false;0;0;0;;;
                                  -143110;4;0;false;false;;;;;;
                                  -143114;3;1;false;false;127;0;85;;;
                                  -143117;1;0;false;false;;;;;;
                                  -143118;14;0;false;false;0;0;0;;;
                                  -143132;1;0;false;false;;;;;;
                                  -143133;1;0;false;false;0;0;0;;;
                                  -143134;1;0;false;false;;;;;;
                                  -143135;20;0;false;false;0;0;0;;;
                                  -143155;1;0;false;false;;;;;;
                                  -143156;1;0;false;false;0;0;0;;;
                                  -143157;1;0;false;false;;;;;;
                                  -143158;11;0;false;false;0;0;0;;;
                                  -143169;1;0;false;false;;;;;;
                                  -143170;3;0;false;false;0;0;0;;;
                                  -143173;4;0;false;false;;;;;;
                                  -143177;3;1;false;false;127;0;85;;;
                                  -143180;1;0;false;false;;;;;;
                                  -143181;12;0;false;false;0;0;0;;;
                                  -143193;1;0;false;false;;;;;;
                                  -143194;1;0;false;false;0;0;0;;;
                                  -143195;1;0;false;false;;;;;;
                                  -143196;20;0;false;false;0;0;0;;;
                                  -143216;1;0;false;false;;;;;;
                                  -143217;1;0;false;false;0;0;0;;;
                                  -143218;1;0;false;false;;;;;;
                                  -143219;12;0;false;false;0;0;0;;;
                                  -143231;1;0;false;false;;;;;;
                                  -143232;1;0;false;false;0;0;0;;;
                                  -143233;1;0;false;false;;;;;;
                                  -143234;11;0;false;false;0;0;0;;;
                                  -143245;1;0;false;false;;;;;;
                                  -143246;16;0;false;false;0;0;0;;;
                                  -143262;4;0;false;false;;;;;;
                                  -143266;12;0;false;false;0;0;0;;;
                                  -143278;1;0;false;false;;;;;;
                                  -143279;1;0;false;false;0;0;0;;;
                                  -143280;1;0;false;false;;;;;;
                                  -143281;8;0;false;false;0;0;0;;;
                                  -143289;1;0;false;false;;;;;;
                                  -143290;14;0;false;false;0;0;0;;;
                                  -143304;1;0;false;false;;;;;;
                                  -143305;11;0;false;false;0;0;0;;;
                                  -143316;1;0;false;false;;;;;;
                                  -143317;4;0;false;false;0;0;0;;;
                                  -143321;4;0;false;false;;;;;;
                                  -143325;2;1;false;false;127;0;85;;;
                                  -143327;1;0;false;false;;;;;;
                                  -143328;2;0;false;false;0;0;0;;;
                                  -143330;1;0;false;false;;;;;;
                                  -143331;1;0;false;false;0;0;0;;;
                                  -143332;1;0;false;false;;;;;;
                                  -143333;1;0;false;false;0;0;0;;;
                                  -143334;1;0;false;false;;;;;;
                                  -143335;2;0;false;false;0;0;0;;;
                                  -143337;1;0;false;false;;;;;;
                                  -143338;5;0;false;false;0;0;0;;;
                                  -143343;1;0;false;false;;;;;;
                                  -143344;1;0;false;false;0;0;0;;;
                                  -143345;1;0;false;false;;;;;;
                                  -143346;1;0;false;false;0;0;0;;;
                                  -143347;1;0;false;false;;;;;;
                                  -143348;2;0;false;false;0;0;0;;;
                                  -143350;5;0;false;false;;;;;;
                                  -143355;16;0;false;false;0;0;0;;;
                                  -143371;1;0;false;false;;;;;;
                                  -143372;2;0;false;false;0;0;0;;;
                                  -143374;1;0;false;false;;;;;;
                                  -143375;16;0;false;false;0;0;0;;;
                                  -143391;1;0;false;false;;;;;;
                                  -143392;2;0;false;false;0;0;0;;;
                                  -143394;1;0;false;false;;;;;;
                                  -143395;14;0;false;false;0;0;0;;;
                                  -143409;1;0;false;false;;;;;;
                                  -143410;2;0;false;false;0;0;0;;;
                                  -143412;1;0;false;false;;;;;;
                                  -143413;17;0;false;false;0;0;0;;;
                                  -143430;1;0;false;false;;;;;;
                                  -143431;2;0;false;false;0;0;0;;;
                                  -143433;6;0;false;false;;;;;;
                                  -143439;13;0;false;false;0;0;0;;;
                                  -143452;1;0;false;false;;;;;;
                                  -143453;2;0;false;false;0;0;0;;;
                                  -143455;1;0;false;false;;;;;;
                                  -143456;16;0;false;false;0;0;0;;;
                                  -143472;1;0;false;false;;;;;;
                                  -143473;2;0;false;false;0;0;0;;;
                                  -143475;1;0;false;false;;;;;;
                                  -143476;12;0;false;false;0;0;0;;;
                                  -143488;1;0;false;false;;;;;;
                                  -143489;2;0;false;false;0;0;0;;;
                                  -143491;1;0;false;false;;;;;;
                                  -143492;18;0;false;false;0;0;0;;;
                                  -143510;1;0;false;false;;;;;;
                                  -143511;2;0;false;false;0;0;0;;;
                                  -143513;6;0;false;false;;;;;;
                                  -143519;29;0;false;false;0;0;0;;;
                                  -143548;1;0;false;false;;;;;;
                                  -143549;1;0;false;false;0;0;0;;;
                                  -143550;5;0;false;false;;;;;;
                                  -143555;16;0;false;false;0;0;0;;;
                                  -143571;1;0;false;false;;;;;;
                                  -143572;1;0;false;false;0;0;0;;;
                                  -143573;1;0;false;false;;;;;;
                                  -143574;26;0;false;false;0;0;0;;;
                                  -143600;1;0;false;false;;;;;;
                                  -143601;16;0;false;false;0;0;0;;;
                                  -143617;5;0;false;false;;;;;;
                                  -143622;16;0;false;false;0;0;0;;;
                                  -143638;1;0;false;false;;;;;;
                                  -143639;1;0;false;false;0;0;0;;;
                                  -143640;1;0;false;false;;;;;;
                                  -143641;26;0;false;false;0;0;0;;;
                                  -143667;1;0;false;false;;;;;;
                                  -143668;14;0;false;false;0;0;0;;;
                                  -143682;4;0;false;false;;;;;;
                                  -143686;1;0;false;false;0;0;0;;;
                                  -143687;1;0;false;false;;;;;;
                                  -143688;4;1;false;false;127;0;85;;;
                                  -143692;1;0;false;false;;;;;;
                                  -143693;1;0;false;false;0;0;0;;;
                                  -143694;5;0;false;false;;;;;;
                                  -143699;2;1;false;false;127;0;85;;;
                                  -143701;1;0;false;false;;;;;;
                                  -143702;15;0;false;false;0;0;0;;;
                                  -143717;1;0;false;false;;;;;;
                                  -143718;1;0;false;false;0;0;0;;;
                                  -143719;1;0;false;false;;;;;;
                                  -143720;13;0;false;false;0;0;0;;;
                                  -143733;1;0;false;false;;;;;;
                                  -143734;1;0;false;false;0;0;0;;;
                                  -143735;1;0;false;false;;;;;;
                                  -143736;3;0;false;false;0;0;0;;;
                                  -143739;1;0;false;false;;;;;;
                                  -143740;1;0;false;false;0;0;0;;;
                                  -143741;6;0;false;false;;;;;;
                                  -143747;14;0;false;false;0;0;0;;;
                                  -143761;1;0;false;false;;;;;;
                                  -143762;1;0;false;false;0;0;0;;;
                                  -143763;1;0;false;false;;;;;;
                                  -143764;15;0;false;false;0;0;0;;;
                                  -143779;6;0;false;false;;;;;;
                                  -143785;8;0;false;false;0;0;0;;;
                                  -143793;5;0;false;false;;;;;;
                                  -143798;1;0;false;false;0;0;0;;;
                                  -143799;5;0;false;false;;;;;;
                                  -143804;14;0;false;false;0;0;0;;;
                                  -143818;1;0;false;false;;;;;;
                                  -143819;1;0;false;false;0;0;0;;;
                                  -143820;1;0;false;false;;;;;;
                                  -143821;13;0;false;false;0;0;0;;;
                                  -143834;5;0;false;false;;;;;;
                                  -143839;8;0;false;false;0;0;0;;;
                                  -143847;4;0;false;false;;;;;;
                                  -143851;1;0;false;false;0;0;0;;;
                                  -143852;3;0;false;false;;;;;;
                                  -143855;1;0;false;false;0;0;0;;;
                                  -143856;3;0;false;false;;;;;;
                                  -143859;60;0;false;false;63;127;95;;;
                                  -143919;1;0;false;false;;;;;;
                                  -143920;2;1;false;false;127;0;85;;;
                                  -143922;1;0;false;false;;;;;;
                                  -143923;11;0;false;false;0;0;0;;;
                                  -143934;1;0;false;false;;;;;;
                                  -143935;1;0;false;false;0;0;0;;;
                                  -143936;1;0;false;false;;;;;;
                                  -143937;17;0;false;false;0;0;0;;;
                                  -143954;1;0;false;false;;;;;;
                                  -143955;1;0;false;false;0;0;0;;;
                                  -143956;4;0;false;false;;;;;;
                                  -143960;7;0;false;false;0;0;0;;;
                                  -143967;1;0;false;false;;;;;;
                                  -143968;7;0;false;false;0;0;0;;;
                                  -143975;1;0;false;false;;;;;;
                                  -143976;1;0;false;false;0;0;0;;;
                                  -143977;1;0;false;false;;;;;;
                                  -143978;11;0;false;false;0;0;0;;;
                                  -143989;4;0;false;false;;;;;;
                                  -143993;8;0;false;false;0;0;0;;;
                                  -144001;3;0;false;false;;;;;;
                                  -144004;1;0;false;false;0;0;0;;;
                                  -144005;5;0;false;false;;;;;;
                                  -144010;2;1;false;false;127;0;85;;;
                                  -144012;1;0;false;false;;;;;;
                                  -144013;6;0;false;false;0;0;0;;;
                                  -144019;1;0;false;false;;;;;;
                                  -144020;2;0;false;false;0;0;0;;;
                                  -144022;1;0;false;false;;;;;;
                                  -144023;15;0;false;false;0;0;0;;;
                                  -144038;1;0;false;false;;;;;;
                                  -144039;1;0;false;false;0;0;0;;;
                                  -144040;4;0;false;false;;;;;;
                                  -144044;6;1;false;false;127;0;85;;;
                                  -144050;1;0;false;false;;;;;;
                                  -144051;8;0;false;false;0;0;0;;;
                                  -144059;3;0;false;false;;;;;;
                                  -144062;1;0;false;false;0;0;0;;;
                                  -144063;3;0;false;false;;;;;;
                                  -144066;3;1;false;false;127;0;85;;;
                                  -144069;1;0;false;false;;;;;;
                                  -144070;2;0;false;false;0;0;0;;;
                                  -144072;1;0;false;false;;;;;;
                                  -144073;6;0;false;false;0;0;0;;;
                                  -144079;1;0;false;false;;;;;;
                                  -144080;1;0;false;false;0;0;0;;;
                                  -144081;1;0;false;false;;;;;;
                                  -144082;3;1;false;false;127;0;85;;;
                                  -144085;1;0;false;false;;;;;;
                                  -144086;3;1;false;false;127;0;85;;;
                                  -144089;1;0;false;false;;;;;;
                                  -144090;8;0;false;false;0;0;0;;;
                                  -144098;3;0;false;false;;;;;;
                                  -144101;16;0;false;false;0;0;0;;;
                                  -144117;1;0;false;false;;;;;;
                                  -144118;9;0;false;false;0;0;0;;;
                                  -144127;1;0;false;false;;;;;;
                                  -144128;2;0;false;false;0;0;0;;;
                                  -144130;1;0;false;false;;;;;;
                                  -144131;7;0;false;false;0;0;0;;;
                                  -144138;1;0;false;false;;;;;;
                                  -144139;2;0;false;false;0;0;0;;;
                                  -144141;1;0;false;false;;;;;;
                                  -144142;7;0;false;false;0;0;0;;;
                                  -144149;3;0;false;false;;;;;;
                                  -144152;6;1;false;false;127;0;85;;;
                                  -144158;1;0;false;false;;;;;;
                                  -144159;7;0;false;false;0;0;0;;;
                                  -144166;2;0;false;false;;;;;;
                                  -144168;1;0;false;false;0;0;0;;;
                                  -144169;2;0;false;false;;;;;;
                                  -144171;3;0;false;false;63;95;191;;;
                                  -144174;3;0;false;false;;;;;;
                                  -144177;1;0;false;false;63;95;191;;;
                                  -144178;1;0;false;false;;;;;;
                                  -144179;7;0;false;false;63;95;191;;;
                                  -144186;1;0;false;false;;;;;;
                                  -144187;3;0;false;false;63;95;191;;;
                                  -144190;1;0;false;false;;;;;;
                                  -144191;5;0;false;false;63;95;191;;;
                                  -144196;1;0;false;false;;;;;;
                                  -144197;5;0;false;false;63;95;191;;;
                                  -144202;1;0;false;false;;;;;;
                                  -144203;2;0;false;false;63;95;191;;;
                                  -144205;1;0;false;false;;;;;;
                                  -144206;3;0;false;false;63;95;191;;;
                                  -144209;1;0;false;false;;;;;;
                                  -144210;5;0;false;false;63;95;191;;;
                                  -144215;1;0;false;false;;;;;;
                                  -144216;7;0;false;false;63;95;191;;;
                                  -144223;3;0;false;false;;;;;;
                                  -144226;1;0;false;false;63;95;191;;;
                                  -144227;1;0;false;false;;;;;;
                                  -144228;7;0;false;false;63;95;191;;;
                                  -144235;1;0;false;false;;;;;;
                                  -144236;4;0;false;false;63;95;191;;;
                                  -144240;1;0;false;false;;;;;;
                                  -144241;2;0;false;false;63;95;191;;;
                                  -144243;1;0;false;false;;;;;;
                                  -144244;1;0;false;false;63;95;191;;;
                                  -144245;1;0;false;false;;;;;;
                                  -144246;17;0;false;false;63;95;191;;;
                                  -144263;1;0;false;false;;;;;;
                                  -144264;3;0;false;false;63;95;191;;;
                                  -144267;1;0;false;false;;;;;;
                                  -144268;4;0;false;false;63;95;191;;;
                                  -144272;1;0;false;false;;;;;;
                                  -144273;3;0;false;false;63;95;191;;;
                                  -144276;1;0;false;false;;;;;;
                                  -144277;2;0;false;false;63;95;191;;;
                                  -144279;1;0;false;false;;;;;;
                                  -144280;2;0;false;false;63;95;191;;;
                                  -144282;1;0;false;false;;;;;;
                                  -144283;1;0;false;false;63;95;191;;;
                                  -144284;1;0;false;false;;;;;;
                                  -144285;5;0;false;false;63;95;191;;;
                                  -144290;1;0;false;false;;;;;;
                                  -144291;2;0;false;false;63;95;191;;;
                                  -144293;1;0;false;false;;;;;;
                                  -144294;3;0;false;false;63;95;191;;;
                                  -144297;1;0;false;false;;;;;;
                                  -144298;3;0;false;false;63;95;191;;;
                                  -144301;3;0;false;false;;;;;;
                                  -144304;1;0;false;false;63;95;191;;;
                                  -144305;1;0;false;false;;;;;;
                                  -144306;3;0;false;false;63;95;191;;;
                                  -144309;1;0;false;false;;;;;;
                                  -144310;3;0;false;false;63;95;191;;;
                                  -144313;1;0;false;false;;;;;;
                                  -144314;7;0;false;false;63;95;191;;;
                                  -144321;4;0;false;false;;;;;;
                                  -144325;1;0;false;false;63;95;191;;;
                                  -144326;1;0;false;false;;;;;;
                                  -144327;6;0;false;false;63;95;191;;;
                                  -144333;1;0;false;false;;;;;;
                                  -144334;3;0;false;false;63;95;191;;;
                                  -144337;1;0;false;false;;;;;;
                                  -144338;2;0;false;false;63;95;191;;;
                                  -144340;1;0;false;false;;;;;;
                                  -144341;6;0;false;false;63;95;191;;;
                                  -144347;1;0;false;false;;;;;;
                                  -144348;2;0;false;false;63;95;191;;;
                                  -144350;1;0;false;false;;;;;;
                                  -144351;1;0;false;false;63;95;191;;;
                                  -144352;1;0;false;false;;;;;;
                                  -144353;17;0;false;false;63;95;191;;;
                                  -144370;1;0;false;false;;;;;;
                                  -144371;3;0;false;false;63;95;191;;;
                                  -144374;1;0;false;false;;;;;;
                                  -144375;4;0;false;false;63;95;191;;;
                                  -144379;1;0;false;false;;;;;;
                                  -144380;3;0;false;false;63;95;191;;;
                                  -144383;1;0;false;false;;;;;;
                                  -144384;5;0;false;false;63;95;191;;;
                                  -144389;1;0;false;false;;;;;;
                                  -144390;3;0;false;false;63;95;191;;;
                                  -144393;4;0;false;false;;;;;;
                                  -144397;1;0;false;false;63;95;191;;;
                                  -144398;1;0;false;false;;;;;;
                                  -144399;8;0;false;false;63;95;191;;;
                                  -144407;1;0;false;false;;;;;;
                                  -144408;9;0;false;false;63;95;191;;;
                                  -144417;1;0;false;false;;;;;;
                                  -144418;3;0;false;false;63;95;191;;;
                                  -144421;1;0;false;false;;;;;;
                                  -144422;7;0;false;false;63;95;191;;;
                                  -144429;3;0;false;false;;;;;;
                                  -144432;1;0;false;false;63;95;191;;;
                                  -144433;1;0;false;false;;;;;;
                                  -144434;3;0;false;false;127;127;159;;;
                                  -144437;3;0;false;false;;;;;;
                                  -144440;1;0;false;false;63;95;191;;;
                                  -144441;3;0;false;false;;;;;;
                                  -144444;1;0;false;false;63;95;191;;;
                                  -144445;1;0;false;false;;;;;;
                                  -144446;7;1;false;false;127;159;191;;;
                                  -144453;6;0;false;false;63;95;191;;;
                                  -144459;1;0;false;false;;;;;;
                                  -144460;3;0;false;false;63;95;191;;;
                                  -144463;1;0;false;false;;;;;;
                                  -144464;6;0;false;false;63;95;191;;;
                                  -144470;1;0;false;false;;;;;;
                                  -144471;2;0;false;false;63;95;191;;;
                                  -144473;1;0;false;false;;;;;;
                                  -144474;6;0;false;false;63;95;191;;;
                                  -144480;1;0;false;false;;;;;;
                                  -144481;3;0;false;false;63;95;191;;;
                                  -144484;1;0;false;false;;;;;;
                                  -144485;5;0;false;false;63;95;191;;;
                                  -144490;1;0;false;false;;;;;;
                                  -144491;4;0;false;false;63;95;191;;;
                                  -144495;4;0;false;false;;;;;;
                                  -144499;1;0;false;false;63;95;191;;;
                                  -144500;2;0;false;false;;;;;;
                                  -144502;1;0;false;false;63;95;191;;;
                                  -144503;1;0;false;false;;;;;;
                                  -144504;42;0;false;false;63;95;191;;;
                                  -144546;1;0;false;false;;;;;;
                                  -144547;1;0;false;false;63;95;191;;;
                                  -144548;1;0;false;false;;;;;;
                                  -144549;8;1;false;false;127;159;191;;;
                                  -144557;1;0;false;false;63;95;191;;;
                                  -144558;1;0;false;false;;;;;;
                                  -144559;10;0;false;false;63;95;191;;;
                                  -144569;1;0;false;false;;;;;;
                                  -144570;4;0;false;false;63;95;191;;;
                                  -144574;1;0;false;false;;;;;;
                                  -144575;5;0;false;false;63;95;191;;;
                                  -144580;1;0;false;false;;;;;;
                                  -144581;2;0;false;false;63;95;191;;;
                                  -144583;1;0;false;false;;;;;;
                                  -144584;6;0;false;false;63;95;191;;;
                                  -144590;1;0;false;false;;;;;;
                                  -144591;3;0;false;false;63;95;191;;;
                                  -144594;1;0;false;false;;;;;;
                                  -144595;6;0;false;false;63;95;191;;;
                                  -144601;1;0;false;false;;;;;;
                                  -144602;2;0;false;false;63;95;191;;;
                                  -144604;1;0;false;false;;;;;;
                                  -144605;2;0;false;false;63;95;191;;;
                                  -144607;1;0;false;false;;;;;;
                                  -144608;10;0;false;false;63;95;191;;;
                                  -144618;3;0;false;false;;;;;;
                                  -144621;1;0;false;false;63;95;191;;;
                                  -144622;2;0;false;false;;;;;;
                                  -144624;3;0;false;false;63;95;191;;;
                                  -144627;1;0;false;false;;;;;;
                                  -144628;5;0;false;false;63;95;191;;;
                                  -144633;1;0;false;false;;;;;;
                                  -144634;2;0;false;false;63;95;191;;;
                                  -144636;1;0;false;false;;;;;;
                                  -144637;3;0;false;false;63;95;191;;;
                                  -144640;1;0;false;false;;;;;;
                                  -144641;5;0;false;false;63;95;191;;;
                                  -144646;1;0;false;false;;;;;;
                                  -144647;7;0;false;false;63;95;191;;;
                                  -144654;1;0;false;false;;;;;;
                                  -144655;4;0;false;false;63;95;191;;;
                                  -144659;1;0;false;false;;;;;;
                                  -144660;2;0;false;false;63;95;191;;;
                                  -144662;1;0;false;false;;;;;;
                                  -144663;1;0;false;false;63;95;191;;;
                                  -144664;1;0;false;false;;;;;;
                                  -144665;17;0;false;false;63;95;191;;;
                                  -144682;1;0;false;false;;;;;;
                                  -144683;3;0;false;false;63;95;191;;;
                                  -144686;1;0;false;false;;;;;;
                                  -144687;4;0;false;false;63;95;191;;;
                                  -144691;1;0;false;false;;;;;;
                                  -144692;3;0;false;false;63;95;191;;;
                                  -144695;4;0;false;false;;;;;;
                                  -144699;1;0;false;false;63;95;191;;;
                                  -144700;2;0;false;false;;;;;;
                                  -144702;2;0;false;false;63;95;191;;;
                                  -144704;1;0;false;false;;;;;;
                                  -144705;2;0;false;false;63;95;191;;;
                                  -144707;1;0;false;false;;;;;;
                                  -144708;1;0;false;false;63;95;191;;;
                                  -144709;1;0;false;false;;;;;;
                                  -144710;5;0;false;false;63;95;191;;;
                                  -144715;1;0;false;false;;;;;;
                                  -144716;2;0;false;false;63;95;191;;;
                                  -144718;1;0;false;false;;;;;;
                                  -144719;3;0;false;false;63;95;191;;;
                                  -144722;1;0;false;false;;;;;;
                                  -144723;3;0;false;false;63;95;191;;;
                                  -144726;1;0;false;false;;;;;;
                                  -144727;3;0;false;false;63;95;191;;;
                                  -144730;1;0;false;false;;;;;;
                                  -144731;3;0;false;false;63;95;191;;;
                                  -144734;1;0;false;false;;;;;;
                                  -144735;5;0;false;false;63;95;191;;;
                                  -144740;1;0;false;false;;;;;;
                                  -144741;7;0;false;false;63;95;191;;;
                                  -144748;3;0;false;false;;;;;;
                                  -144751;1;0;false;false;63;95;191;;;
                                  -144752;1;0;false;false;;;;;;
                                  -144753;11;1;false;false;127;159;191;;;
                                  -144764;12;0;false;false;63;95;191;;;
                                  -144776;1;0;false;false;;;;;;
                                  -144777;4;0;false;false;127;127;159;;;
                                  -144781;3;0;false;false;;;;;;
                                  -144784;1;0;false;false;63;95;191;;;
                                  -144785;4;0;false;false;;;;;;
                                  -144789;4;0;false;false;127;127;159;;;
                                  -144793;21;0;false;false;63;95;191;;;
                                  -144814;1;0;false;false;;;;;;
                                  -144815;1;0;false;false;127;127;159;;;
                                  -144816;1;0;false;false;;;;;;
                                  -144817;2;0;false;false;63;95;191;;;
                                  -144819;1;0;false;false;;;;;;
                                  -144820;3;0;false;false;63;95;191;;;
                                  -144823;1;0;false;false;;;;;;
                                  -144824;8;0;false;false;63;95;191;;;
                                  -144832;1;0;false;false;;;;;;
                                  -144833;3;0;false;false;63;95;191;;;
                                  -144836;1;0;false;false;;;;;;
                                  -144837;4;0;false;false;63;95;191;;;
                                  -144841;1;0;false;false;;;;;;
                                  -144842;8;0;false;false;63;95;191;;;
                                  -144850;5;0;false;false;127;127;159;;;
                                  -144855;3;0;false;false;;;;;;
                                  -144858;1;0;false;false;63;95;191;;;
                                  -144859;4;0;false;false;;;;;;
                                  -144863;4;0;false;false;127;127;159;;;
                                  -144867;27;0;false;false;63;95;191;;;
                                  -144894;1;0;false;false;;;;;;
                                  -144895;1;0;false;false;127;127;159;;;
                                  -144896;1;0;false;false;;;;;;
                                  -144897;2;0;false;false;63;95;191;;;
                                  -144899;1;0;false;false;;;;;;
                                  -144900;3;0;false;false;63;95;191;;;
                                  -144903;1;0;false;false;;;;;;
                                  -144904;6;0;false;false;63;95;191;;;
                                  -144910;1;0;false;false;;;;;;
                                  -144911;4;0;false;false;63;95;191;;;
                                  -144915;1;0;false;false;;;;;;
                                  -144916;3;0;false;false;63;95;191;;;
                                  -144919;1;0;false;false;;;;;;
                                  -144920;6;0;false;false;63;95;191;;;
                                  -144926;1;0;false;false;;;;;;
                                  -144927;4;0;false;false;63;95;191;;;
                                  -144931;1;0;false;false;;;;;;
                                  -144932;7;0;false;false;63;95;191;;;
                                  -144939;1;0;false;false;;;;;;
                                  -144940;3;0;false;false;63;95;191;;;
                                  -144943;1;0;false;false;;;;;;
                                  -144944;8;0;false;false;63;95;191;;;
                                  -144952;5;0;false;false;127;127;159;;;
                                  -144957;3;0;false;false;;;;;;
                                  -144960;1;0;false;false;63;95;191;;;
                                  -144961;1;0;false;false;;;;;;
                                  -144962;5;0;false;false;127;127;159;;;
                                  -144967;3;0;false;false;;;;;;
                                  -144970;1;0;false;false;63;95;191;;;
                                  -144971;1;0;false;false;;;;;;
                                  -144972;11;1;false;false;127;159;191;;;
                                  -144983;24;0;false;false;63;95;191;;;
                                  -145007;1;0;false;false;;;;;;
                                  -145008;4;0;false;false;127;127;159;;;
                                  -145012;3;0;false;false;;;;;;
                                  -145015;1;0;false;false;63;95;191;;;
                                  -145016;3;0;false;false;;;;;;
                                  -145019;4;0;false;false;127;127;159;;;
                                  -145023;22;0;false;false;63;95;191;;;
                                  -145045;1;0;false;false;;;;;;
                                  -145046;4;0;false;false;63;95;191;;;
                                  -145050;1;0;false;false;;;;;;
                                  -145051;3;0;false;false;63;95;191;;;
                                  -145054;1;0;false;false;;;;;;
                                  -145055;6;0;false;false;63;95;191;;;
                                  -145061;1;0;false;false;;;;;;
                                  -145062;2;0;false;false;63;95;191;;;
                                  -145064;1;0;false;false;;;;;;
                                  -145065;7;0;false;false;63;95;191;;;
                                  -145072;5;0;false;false;127;127;159;;;
                                  -145077;3;0;false;false;;;;;;
                                  -145080;1;0;false;false;63;95;191;;;
                                  -145081;1;0;false;false;;;;;;
                                  -145082;5;0;false;false;127;127;159;;;
                                  -145087;3;0;false;false;;;;;;
                                  -145090;2;0;false;false;63;95;191;;;
                                  -145092;2;0;false;false;;;;;;
                                  -145094;6;1;false;false;127;0;85;;;
                                  -145100;1;0;false;false;;;;;;
                                  -145101;10;0;false;false;0;0;0;;;
                                  -145111;1;0;false;false;;;;;;
                                  -145112;22;0;false;false;0;0;0;;;
                                  -145134;3;1;false;false;127;0;85;;;
                                  -145137;1;0;false;false;;;;;;
                                  -145138;7;0;false;false;0;0;0;;;
                                  -145145;1;0;false;false;;;;;;
                                  -145146;1;0;false;false;0;0;0;;;
                                  -145147;3;0;false;false;;;;;;
                                  -145150;14;0;false;false;0;0;0;;;
                                  -145164;3;0;false;false;;;;;;
                                  -145167;2;1;false;false;127;0;85;;;
                                  -145169;1;0;false;false;;;;;;
                                  -145170;7;0;false;false;0;0;0;;;
                                  -145177;1;0;false;false;;;;;;
                                  -145178;1;0;false;false;0;0;0;;;
                                  -145179;1;0;false;false;;;;;;
                                  -145180;1;0;false;false;0;0;0;;;
                                  -145181;1;0;false;false;;;;;;
                                  -145182;2;0;false;false;0;0;0;;;
                                  -145184;1;0;false;false;;;;;;
                                  -145185;6;0;false;false;0;0;0;;;
                                  -145191;1;0;false;false;;;;;;
                                  -145192;2;0;false;false;0;0;0;;;
                                  -145194;1;0;false;false;;;;;;
                                  -145195;15;0;false;false;0;0;0;;;
                                  -145210;1;0;false;false;;;;;;
                                  -145211;1;0;false;false;0;0;0;;;
                                  -145212;4;0;false;false;;;;;;
                                  -145216;38;0;false;false;0;0;0;;;
                                  -145254;3;0;false;false;;;;;;
                                  -145257;1;0;false;false;0;0;0;;;
                                  -145258;5;0;false;false;;;;;;
                                  -145263;2;1;false;false;127;0;85;;;
                                  -145265;1;0;false;false;;;;;;
                                  -145266;16;0;false;false;0;0;0;;;
                                  -145282;1;0;false;false;;;;;;
                                  -145283;1;0;false;false;0;0;0;;;
                                  -145284;4;0;false;false;;;;;;
                                  -145288;6;1;false;false;127;0;85;;;
                                  -145294;1;0;false;false;;;;;;
                                  -145295;48;0;false;false;0;0;0;;;
                                  -145343;3;0;false;false;;;;;;
                                  -145346;1;0;false;false;0;0;0;;;
                                  -145347;4;0;false;false;;;;;;
                                  -145351;6;1;false;false;127;0;85;;;
                                  -145357;1;0;false;false;;;;;;
                                  -145358;4;1;false;false;127;0;85;;;
                                  -145362;1;0;false;false;0;0;0;;;
                                  -145363;2;0;false;false;;;;;;
                                  -145365;1;0;false;false;0;0;0;;;
                                  -145366;2;0;false;false;;;;;;
                                  -145368;3;0;false;false;63;95;191;;;
                                  -145371;3;0;false;false;;;;;;
                                  -145374;1;0;false;false;63;95;191;;;
                                  -145375;1;0;false;false;;;;;;
                                  -145376;7;0;false;false;63;95;191;;;
                                  -145383;1;0;false;false;;;;;;
                                  -145384;3;0;false;false;63;95;191;;;
                                  -145387;1;0;false;false;;;;;;
                                  -145388;7;0;false;false;63;95;191;;;
                                  -145395;3;0;false;false;;;;;;
                                  -145398;1;0;false;false;63;95;191;;;
                                  -145399;1;0;false;false;;;;;;
                                  -145400;7;0;false;false;63;95;191;;;
                                  -145407;1;0;false;false;;;;;;
                                  -145408;2;0;false;false;63;95;191;;;
                                  -145410;1;0;false;false;;;;;;
                                  -145411;5;0;false;false;63;95;191;;;
                                  -145416;1;0;false;false;;;;;;
                                  -145417;5;0;false;false;63;95;191;;;
                                  -145422;1;0;false;false;;;;;;
                                  -145423;2;0;false;false;63;95;191;;;
                                  -145425;1;0;false;false;;;;;;
                                  -145426;1;0;false;false;63;95;191;;;
                                  -145427;1;0;false;false;;;;;;
                                  -145428;17;0;false;false;63;95;191;;;
                                  -145445;1;0;false;false;;;;;;
                                  -145446;3;0;false;false;63;95;191;;;
                                  -145449;1;0;false;false;;;;;;
                                  -145450;4;0;false;false;63;95;191;;;
                                  -145454;1;0;false;false;;;;;;
                                  -145455;4;0;false;false;63;95;191;;;
                                  -145459;4;0;false;false;;;;;;
                                  -145463;1;0;false;false;63;95;191;;;
                                  -145464;1;0;false;false;;;;;;
                                  -145465;6;0;false;false;63;95;191;;;
                                  -145471;1;0;false;false;;;;;;
                                  -145472;3;0;false;false;63;95;191;;;
                                  -145475;1;0;false;false;;;;;;
                                  -145476;2;0;false;false;63;95;191;;;
                                  -145478;1;0;false;false;;;;;;
                                  -145479;6;0;false;false;63;95;191;;;
                                  -145485;1;0;false;false;;;;;;
                                  -145486;2;0;false;false;63;95;191;;;
                                  -145488;1;0;false;false;;;;;;
                                  -145489;1;0;false;false;63;95;191;;;
                                  -145490;1;0;false;false;;;;;;
                                  -145491;17;0;false;false;63;95;191;;;
                                  -145508;1;0;false;false;;;;;;
                                  -145509;3;0;false;false;63;95;191;;;
                                  -145512;1;0;false;false;;;;;;
                                  -145513;4;0;false;false;63;95;191;;;
                                  -145517;1;0;false;false;;;;;;
                                  -145518;3;0;false;false;63;95;191;;;
                                  -145521;1;0;false;false;;;;;;
                                  -145522;5;0;false;false;63;95;191;;;
                                  -145527;1;0;false;false;;;;;;
                                  -145528;3;0;false;false;63;95;191;;;
                                  -145531;4;0;false;false;;;;;;
                                  -145535;1;0;false;false;63;95;191;;;
                                  -145536;1;0;false;false;;;;;;
                                  -145537;8;0;false;false;63;95;191;;;
                                  -145545;1;0;false;false;;;;;;
                                  -145546;9;0;false;false;63;95;191;;;
                                  -145555;1;0;false;false;;;;;;
                                  -145556;3;0;false;false;63;95;191;;;
                                  -145559;1;0;false;false;;;;;;
                                  -145560;7;0;false;false;63;95;191;;;
                                  -145567;3;0;false;false;;;;;;
                                  -145570;1;0;false;false;63;95;191;;;
                                  -145571;1;0;false;false;;;;;;
                                  -145572;3;0;false;false;127;127;159;;;
                                  -145575;3;0;false;false;;;;;;
                                  -145578;1;0;false;false;63;95;191;;;
                                  -145579;3;0;false;false;;;;;;
                                  -145582;1;0;false;false;63;95;191;;;
                                  -145583;1;0;false;false;;;;;;
                                  -145584;8;1;false;false;127;159;191;;;
                                  -145592;3;0;false;false;63;95;191;;;
                                  -145595;1;0;false;false;;;;;;
                                  -145596;6;0;false;false;63;95;191;;;
                                  -145602;1;0;false;false;;;;;;
                                  -145603;2;0;false;false;63;95;191;;;
                                  -145605;1;0;false;false;;;;;;
                                  -145606;2;0;false;false;63;95;191;;;
                                  -145608;1;0;false;false;;;;;;
                                  -145609;5;0;false;false;63;95;191;;;
                                  -145614;1;0;false;false;;;;;;
                                  -145615;5;0;false;false;63;95;191;;;
                                  -145620;1;0;false;false;;;;;;
                                  -145621;2;0;false;false;63;95;191;;;
                                  -145623;1;0;false;false;;;;;;
                                  -145624;1;0;false;false;63;95;191;;;
                                  -145625;1;0;false;false;;;;;;
                                  -145626;17;0;false;false;63;95;191;;;
                                  -145643;1;0;false;false;;;;;;
                                  -145644;3;0;false;false;63;95;191;;;
                                  -145647;1;0;false;false;;;;;;
                                  -145648;4;0;false;false;63;95;191;;;
                                  -145652;1;0;false;false;;;;;;
                                  -145653;4;0;false;false;63;95;191;;;
                                  -145657;4;0;false;false;;;;;;
                                  -145661;1;0;false;false;63;95;191;;;
                                  -145662;3;0;false;false;;;;;;
                                  -145665;1;0;false;false;63;95;191;;;
                                  -145666;1;0;false;false;;;;;;
                                  -145667;11;1;false;false;127;159;191;;;
                                  -145678;12;0;false;false;63;95;191;;;
                                  -145690;1;0;false;false;;;;;;
                                  -145691;4;0;false;false;127;127;159;;;
                                  -145695;3;0;false;false;;;;;;
                                  -145698;1;0;false;false;63;95;191;;;
                                  -145699;4;0;false;false;;;;;;
                                  -145703;4;0;false;false;127;127;159;;;
                                  -145707;21;0;false;false;63;95;191;;;
                                  -145728;1;0;false;false;;;;;;
                                  -145729;1;0;false;false;127;127;159;;;
                                  -145730;1;0;false;false;;;;;;
                                  -145731;2;0;false;false;63;95;191;;;
                                  -145733;1;0;false;false;;;;;;
                                  -145734;3;0;false;false;63;95;191;;;
                                  -145737;1;0;false;false;;;;;;
                                  -145738;8;0;false;false;63;95;191;;;
                                  -145746;1;0;false;false;;;;;;
                                  -145747;3;0;false;false;63;95;191;;;
                                  -145750;1;0;false;false;;;;;;
                                  -145751;4;0;false;false;63;95;191;;;
                                  -145755;1;0;false;false;;;;;;
                                  -145756;8;0;false;false;63;95;191;;;
                                  -145764;5;0;false;false;127;127;159;;;
                                  -145769;3;0;false;false;;;;;;
                                  -145772;1;0;false;false;63;95;191;;;
                                  -145773;4;0;false;false;;;;;;
                                  -145777;4;0;false;false;127;127;159;;;
                                  -145781;27;0;false;false;63;95;191;;;
                                  -145808;1;0;false;false;;;;;;
                                  -145809;1;0;false;false;127;127;159;;;
                                  -145810;1;0;false;false;;;;;;
                                  -145811;2;0;false;false;63;95;191;;;
                                  -145813;1;0;false;false;;;;;;
                                  -145814;3;0;false;false;63;95;191;;;
                                  -145817;1;0;false;false;;;;;;
                                  -145818;6;0;false;false;63;95;191;;;
                                  -145824;1;0;false;false;;;;;;
                                  -145825;4;0;false;false;63;95;191;;;
                                  -145829;1;0;false;false;;;;;;
                                  -145830;3;0;false;false;63;95;191;;;
                                  -145833;1;0;false;false;;;;;;
                                  -145834;6;0;false;false;63;95;191;;;
                                  -145840;1;0;false;false;;;;;;
                                  -145841;4;0;false;false;63;95;191;;;
                                  -145845;1;0;false;false;;;;;;
                                  -145846;7;0;false;false;63;95;191;;;
                                  -145853;1;0;false;false;;;;;;
                                  -145854;3;0;false;false;63;95;191;;;
                                  -145857;1;0;false;false;;;;;;
                                  -145858;8;0;false;false;63;95;191;;;
                                  -145866;5;0;false;false;127;127;159;;;
                                  -145871;3;0;false;false;;;;;;
                                  -145874;1;0;false;false;63;95;191;;;
                                  -145875;1;0;false;false;;;;;;
                                  -145876;5;0;false;false;127;127;159;;;
                                  -145881;3;0;false;false;;;;;;
                                  -145884;2;0;false;false;63;95;191;;;
                                  -145886;2;0;false;false;;;;;;
                                  -145888;6;1;false;false;127;0;85;;;
                                  -145894;1;0;false;false;;;;;;
                                  -145895;10;0;false;false;0;0;0;;;
                                  -145905;1;0;false;false;;;;;;
                                  -145906;2;0;false;false;0;0;0;;;
                                  -145908;1;0;false;false;;;;;;
                                  -145909;16;0;false;false;0;0;0;;;
                                  -145925;1;0;false;false;;;;;;
                                  -145926;1;0;false;false;0;0;0;;;
                                  -145927;3;0;false;false;;;;;;
                                  -145930;14;0;false;false;0;0;0;;;
                                  -145944;3;0;false;false;;;;;;
                                  -145947;10;0;false;false;0;0;0;;;
                                  -145957;1;0;false;false;;;;;;
                                  -145958;9;0;false;false;0;0;0;;;
                                  -145967;6;0;false;false;;;;;;
                                  -145973;2;1;false;false;127;0;85;;;
                                  -145975;1;0;false;false;;;;;;
                                  -145976;16;0;false;false;0;0;0;;;
                                  -145992;1;0;false;false;;;;;;
                                  -145993;1;0;false;false;0;0;0;;;
                                  -145994;4;0;false;false;;;;;;
                                  -145998;6;0;false;false;0;0;0;;;
                                  -146004;1;0;false;false;;;;;;
                                  -146005;1;0;false;false;0;0;0;;;
                                  -146006;1;0;false;false;;;;;;
                                  -146007;35;0;false;false;0;0;0;;;
                                  -146042;3;0;false;false;;;;;;
                                  -146045;1;0;false;false;0;0;0;;;
                                  -146046;3;0;false;false;;;;;;
                                  -146049;4;1;false;false;127;0;85;;;
                                  -146053;1;0;false;false;;;;;;
                                  -146054;1;0;false;false;0;0;0;;;
                                  -146055;4;0;false;false;;;;;;
                                  -146059;6;0;false;false;0;0;0;;;
                                  -146065;1;0;false;false;;;;;;
                                  -146066;1;0;false;false;0;0;0;;;
                                  -146067;1;0;false;false;;;;;;
                                  -146068;3;1;false;false;127;0;85;;;
                                  -146071;1;0;false;false;;;;;;
                                  -146072;14;0;false;false;0;0;0;;;
                                  -146086;3;0;false;false;;;;;;
                                  -146089;1;0;false;false;0;0;0;;;
                                  -146090;3;0;false;false;;;;;;
                                  -146093;6;1;false;false;127;0;85;;;
                                  -146099;1;0;false;false;;;;;;
                                  -146100;7;0;false;false;0;0;0;;;
                                  -146107;2;0;false;false;;;;;;
                                  -146109;1;0;false;false;0;0;0;;;
                                  -146110;2;0;false;false;;;;;;
                                  -146112;3;0;false;false;63;95;191;;;
                                  -146115;3;0;false;false;;;;;;
                                  -146118;1;0;false;false;63;95;191;;;
                                  -146119;1;0;false;false;;;;;;
                                  -146120;7;0;false;false;63;95;191;;;
                                  -146127;1;0;false;false;;;;;;
                                  -146128;3;0;false;false;63;95;191;;;
                                  -146131;1;0;false;false;;;;;;
                                  -146132;6;0;false;false;63;95;191;;;
                                  -146138;1;0;false;false;;;;;;
                                  -146139;3;0;false;false;63;95;191;;;
                                  -146142;1;0;false;false;;;;;;
                                  -146143;3;0;false;false;63;95;191;;;
                                  -146146;1;0;false;false;;;;;;
                                  -146147;5;0;false;false;63;95;191;;;
                                  -146152;1;0;false;false;;;;;;
                                  -146153;4;0;false;false;63;95;191;;;
                                  -146157;1;0;false;false;;;;;;
                                  -146158;6;0;false;false;63;95;191;;;
                                  -146164;3;0;false;false;;;;;;
                                  -146167;1;0;false;false;63;95;191;;;
                                  -146168;1;0;false;false;;;;;;
                                  -146169;7;0;false;false;63;95;191;;;
                                  -146176;1;0;false;false;;;;;;
                                  -146177;2;0;false;false;63;95;191;;;
                                  -146179;1;0;false;false;;;;;;
                                  -146180;5;0;false;false;63;95;191;;;
                                  -146185;1;0;false;false;;;;;;
                                  -146186;5;0;false;false;63;95;191;;;
                                  -146191;1;0;false;false;;;;;;
                                  -146192;2;0;false;false;63;95;191;;;
                                  -146194;1;0;false;false;;;;;;
                                  -146195;1;0;false;false;63;95;191;;;
                                  -146196;1;0;false;false;;;;;;
                                  -146197;17;0;false;false;63;95;191;;;
                                  -146214;1;0;false;false;;;;;;
                                  -146215;3;0;false;false;63;95;191;;;
                                  -146218;1;0;false;false;;;;;;
                                  -146219;4;0;false;false;63;95;191;;;
                                  -146223;1;0;false;false;;;;;;
                                  -146224;4;0;false;false;63;95;191;;;
                                  -146228;4;0;false;false;;;;;;
                                  -146232;1;0;false;false;63;95;191;;;
                                  -146233;1;0;false;false;;;;;;
                                  -146234;6;0;false;false;63;95;191;;;
                                  -146240;1;0;false;false;;;;;;
                                  -146241;3;0;false;false;63;95;191;;;
                                  -146244;1;0;false;false;;;;;;
                                  -146245;2;0;false;false;63;95;191;;;
                                  -146247;1;0;false;false;;;;;;
                                  -146248;6;0;false;false;63;95;191;;;
                                  -146254;1;0;false;false;;;;;;
                                  -146255;2;0;false;false;63;95;191;;;
                                  -146257;1;0;false;false;;;;;;
                                  -146258;1;0;false;false;63;95;191;;;
                                  -146259;1;0;false;false;;;;;;
                                  -146260;17;0;false;false;63;95;191;;;
                                  -146277;1;0;false;false;;;;;;
                                  -146278;3;0;false;false;63;95;191;;;
                                  -146281;1;0;false;false;;;;;;
                                  -146282;4;0;false;false;63;95;191;;;
                                  -146286;1;0;false;false;;;;;;
                                  -146287;3;0;false;false;63;95;191;;;
                                  -146290;1;0;false;false;;;;;;
                                  -146291;5;0;false;false;63;95;191;;;
                                  -146296;1;0;false;false;;;;;;
                                  -146297;3;0;false;false;63;95;191;;;
                                  -146300;4;0;false;false;;;;;;
                                  -146304;1;0;false;false;63;95;191;;;
                                  -146305;1;0;false;false;;;;;;
                                  -146306;8;0;false;false;63;95;191;;;
                                  -146314;1;0;false;false;;;;;;
                                  -146315;9;0;false;false;63;95;191;;;
                                  -146324;1;0;false;false;;;;;;
                                  -146325;3;0;false;false;63;95;191;;;
                                  -146328;1;0;false;false;;;;;;
                                  -146329;7;0;false;false;63;95;191;;;
                                  -146336;3;0;false;false;;;;;;
                                  -146339;1;0;false;false;63;95;191;;;
                                  -146340;4;0;false;false;;;;;;
                                  -146344;1;0;false;false;63;95;191;;;
                                  -146345;1;0;false;false;;;;;;
                                  -146346;7;1;false;false;127;159;191;;;
                                  -146353;5;0;false;false;63;95;191;;;
                                  -146358;1;0;false;false;;;;;;
                                  -146359;3;0;false;false;63;95;191;;;
                                  -146362;1;0;false;false;;;;;;
                                  -146363;5;0;false;false;63;95;191;;;
                                  -146368;1;0;false;false;;;;;;
                                  -146369;6;0;false;false;63;95;191;;;
                                  -146375;1;0;false;false;;;;;;
                                  -146376;2;0;false;false;63;95;191;;;
                                  -146378;1;0;false;false;;;;;;
                                  -146379;3;0;false;false;63;95;191;;;
                                  -146382;1;0;false;false;;;;;;
                                  -146383;5;0;false;false;63;95;191;;;
                                  -146388;1;0;false;false;;;;;;
                                  -146389;6;0;false;false;63;95;191;;;
                                  -146395;1;0;false;false;;;;;;
                                  -146396;2;0;false;false;63;95;191;;;
                                  -146398;1;0;false;false;;;;;;
                                  -146399;6;0;false;false;63;95;191;;;
                                  -146405;3;0;false;false;;;;;;
                                  -146408;1;0;false;false;63;95;191;;;
                                  -146409;1;0;false;false;;;;;;
                                  -146410;7;1;false;false;127;159;191;;;
                                  -146417;6;0;false;false;63;95;191;;;
                                  -146423;1;0;false;false;;;;;;
                                  -146424;3;0;false;false;63;95;191;;;
                                  -146427;1;0;false;false;;;;;;
                                  -146428;6;0;false;false;63;95;191;;;
                                  -146434;1;0;false;false;;;;;;
                                  -146435;2;0;false;false;63;95;191;;;
                                  -146437;1;0;false;false;;;;;;
                                  -146438;5;0;false;false;63;95;191;;;
                                  -146443;1;0;false;false;;;;;;
                                  -146444;6;0;false;false;63;95;191;;;
                                  -146450;1;0;false;false;;;;;;
                                  -146451;2;0;false;false;63;95;191;;;
                                  -146453;1;0;false;false;;;;;;
                                  -146454;6;0;false;false;63;95;191;;;
                                  -146460;3;0;false;false;;;;;;
                                  -146463;1;0;false;false;63;95;191;;;
                                  -146464;3;0;false;false;;;;;;
                                  -146467;1;0;false;false;63;95;191;;;
                                  -146468;1;0;false;false;;;;;;
                                  -146469;8;1;false;false;127;159;191;;;
                                  -146477;3;0;false;false;63;95;191;;;
                                  -146480;1;0;false;false;;;;;;
                                  -146481;6;0;false;false;63;95;191;;;
                                  -146487;1;0;false;false;;;;;;
                                  -146488;2;0;false;false;63;95;191;;;
                                  -146490;1;0;false;false;;;;;;
                                  -146491;2;0;false;false;63;95;191;;;
                                  -146493;1;0;false;false;;;;;;
                                  -146494;5;0;false;false;63;95;191;;;
                                  -146499;1;0;false;false;;;;;;
                                  -146500;5;0;false;false;63;95;191;;;
                                  -146505;1;0;false;false;;;;;;
                                  -146506;2;0;false;false;63;95;191;;;
                                  -146508;1;0;false;false;;;;;;
                                  -146509;1;0;false;false;63;95;191;;;
                                  -146510;1;0;false;false;;;;;;
                                  -146511;17;0;false;false;63;95;191;;;
                                  -146528;1;0;false;false;;;;;;
                                  -146529;3;0;false;false;63;95;191;;;
                                  -146532;4;0;false;false;;;;;;
                                  -146536;1;0;false;false;63;95;191;;;
                                  -146537;2;0;false;false;;;;;;
                                  -146539;4;0;false;false;63;95;191;;;
                                  -146543;1;0;false;false;;;;;;
                                  -146544;4;0;false;false;63;95;191;;;
                                  -146548;2;0;false;false;;;;;;
                                  -146550;3;0;false;false;63;95;191;;;
                                  -146553;1;0;false;false;;;;;;
                                  -146554;8;0;false;false;63;95;191;;;
                                  -146562;1;0;false;false;;;;;;
                                  -146563;6;0;false;false;63;95;191;;;
                                  -146569;1;0;false;false;;;;;;
                                  -146570;4;0;false;false;63;95;191;;;
                                  -146574;1;0;false;false;;;;;;
                                  -146575;7;0;false;false;63;95;191;;;
                                  -146582;1;0;false;false;;;;;;
                                  -146583;3;0;false;false;63;95;191;;;
                                  -146586;1;0;false;false;;;;;;
                                  -146587;5;0;false;false;63;95;191;;;
                                  -146592;1;0;false;false;;;;;;
                                  -146593;6;0;false;false;63;95;191;;;
                                  -146599;2;0;false;false;;;;;;
                                  -146601;3;0;false;false;63;95;191;;;
                                  -146604;1;0;false;false;;;;;;
                                  -146605;5;0;false;false;63;95;191;;;
                                  -146610;4;0;false;false;;;;;;
                                  -146614;1;0;false;false;63;95;191;;;
                                  -146615;2;0;false;false;;;;;;
                                  -146617;8;0;false;false;63;95;191;;;
                                  -146625;1;0;false;false;;;;;;
                                  -146626;6;0;false;false;127;127;159;;;
                                  -146632;10;0;false;false;63;95;191;;;
                                  -146642;7;0;false;false;127;127;159;;;
                                  -146649;1;0;false;false;;;;;;
                                  -146650;4;0;false;false;63;95;191;;;
                                  -146654;1;0;false;false;;;;;;
                                  -146655;4;0;false;false;63;95;191;;;
                                  -146659;1;0;false;false;;;;;;
                                  -146660;1;0;false;false;63;95;191;;;
                                  -146661;1;0;false;false;;;;;;
                                  -146662;8;0;false;false;63;95;191;;;
                                  -146670;1;0;false;false;;;;;;
                                  -146671;6;0;false;false;63;95;191;;;
                                  -146677;1;0;false;false;;;;;;
                                  -146678;2;0;false;false;63;95;191;;;
                                  -146680;1;0;false;false;;;;;;
                                  -146681;5;0;false;false;63;95;191;;;
                                  -146686;4;0;false;false;;;;;;
                                  -146690;1;0;false;false;63;95;191;;;
                                  -146691;2;0;false;false;;;;;;
                                  -146693;3;0;false;false;63;95;191;;;
                                  -146696;1;0;false;false;;;;;;
                                  -146697;3;0;false;false;63;95;191;;;
                                  -146700;1;0;false;false;;;;;;
                                  -146701;4;0;false;false;63;95;191;;;
                                  -146705;1;0;false;false;;;;;;
                                  -146706;8;0;false;false;63;95;191;;;
                                  -146714;1;0;false;false;;;;;;
                                  -146715;6;0;false;false;127;127;159;;;
                                  -146721;10;0;false;false;63;95;191;;;
                                  -146731;7;0;false;false;127;127;159;;;
                                  -146738;1;0;false;false;;;;;;
                                  -146739;4;0;false;false;63;95;191;;;
                                  -146743;1;0;false;false;;;;;;
                                  -146744;4;0;false;false;63;95;191;;;
                                  -146748;1;0;false;false;;;;;;
                                  -146749;2;0;false;false;63;95;191;;;
                                  -146751;1;0;false;false;;;;;;
                                  -146752;6;0;false;false;63;95;191;;;
                                  -146758;4;0;false;false;;;;;;
                                  -146762;1;0;false;false;63;95;191;;;
                                  -146763;2;0;false;false;;;;;;
                                  -146765;6;0;false;false;63;95;191;;;
                                  -146771;1;0;false;false;;;;;;
                                  -146772;23;0;false;false;63;95;191;;;
                                  -146795;1;0;false;false;;;;;;
                                  -146796;1;0;false;false;63;95;191;;;
                                  -146797;3;0;false;false;;;;;;
                                  -146800;1;0;false;false;63;95;191;;;
                                  -146801;1;0;false;false;;;;;;
                                  -146802;11;1;false;false;127;159;191;;;
                                  -146813;12;0;false;false;63;95;191;;;
                                  -146825;1;0;false;false;;;;;;
                                  -146826;4;0;false;false;127;127;159;;;
                                  -146830;3;0;false;false;;;;;;
                                  -146833;1;0;false;false;63;95;191;;;
                                  -146834;4;0;false;false;;;;;;
                                  -146838;4;0;false;false;127;127;159;;;
                                  -146842;21;0;false;false;63;95;191;;;
                                  -146863;1;0;false;false;;;;;;
                                  -146864;1;0;false;false;127;127;159;;;
                                  -146865;1;0;false;false;;;;;;
                                  -146866;2;0;false;false;63;95;191;;;
                                  -146868;1;0;false;false;;;;;;
                                  -146869;3;0;false;false;63;95;191;;;
                                  -146872;1;0;false;false;;;;;;
                                  -146873;8;0;false;false;63;95;191;;;
                                  -146881;1;0;false;false;;;;;;
                                  -146882;3;0;false;false;63;95;191;;;
                                  -146885;1;0;false;false;;;;;;
                                  -146886;4;0;false;false;63;95;191;;;
                                  -146890;1;0;false;false;;;;;;
                                  -146891;8;0;false;false;63;95;191;;;
                                  -146899;5;0;false;false;127;127;159;;;
                                  -146904;3;0;false;false;;;;;;
                                  -146907;1;0;false;false;63;95;191;;;
                                  -146908;4;0;false;false;;;;;;
                                  -146912;4;0;false;false;127;127;159;;;
                                  -146916;27;0;false;false;63;95;191;;;
                                  -146943;1;0;false;false;;;;;;
                                  -146944;1;0;false;false;127;127;159;;;
                                  -146945;1;0;false;false;;;;;;
                                  -146946;2;0;false;false;63;95;191;;;
                                  -146948;1;0;false;false;;;;;;
                                  -146949;3;0;false;false;63;95;191;;;
                                  -146952;1;0;false;false;;;;;;
                                  -146953;6;0;false;false;63;95;191;;;
                                  -146959;1;0;false;false;;;;;;
                                  -146960;4;0;false;false;63;95;191;;;
                                  -146964;1;0;false;false;;;;;;
                                  -146965;3;0;false;false;63;95;191;;;
                                  -146968;1;0;false;false;;;;;;
                                  -146969;6;0;false;false;63;95;191;;;
                                  -146975;1;0;false;false;;;;;;
                                  -146976;4;0;false;false;63;95;191;;;
                                  -146980;1;0;false;false;;;;;;
                                  -146981;7;0;false;false;63;95;191;;;
                                  -146988;1;0;false;false;;;;;;
                                  -146989;3;0;false;false;63;95;191;;;
                                  -146992;1;0;false;false;;;;;;
                                  -146993;8;0;false;false;63;95;191;;;
                                  -147001;5;0;false;false;127;127;159;;;
                                  -147006;3;0;false;false;;;;;;
                                  -147009;1;0;false;false;63;95;191;;;
                                  -147010;1;0;false;false;;;;;;
                                  -147011;5;0;false;false;127;127;159;;;
                                  -147016;3;0;false;false;;;;;;
                                  -147019;1;0;false;false;63;95;191;;;
                                  -147020;1;0;false;false;;;;;;
                                  -147021;11;1;false;false;127;159;191;;;
                                  -147032;24;0;false;false;63;95;191;;;
                                  -147056;1;0;false;false;;;;;;
                                  -147057;4;0;false;false;127;127;159;;;
                                  -147061;3;0;false;false;;;;;;
                                  -147064;1;0;false;false;63;95;191;;;
                                  -147065;3;0;false;false;;;;;;
                                  -147068;4;0;false;false;127;127;159;;;
                                  -147072;19;0;false;false;63;95;191;;;
                                  -147091;1;0;false;false;;;;;;
                                  -147092;4;0;false;false;63;95;191;;;
                                  -147096;1;0;false;false;;;;;;
                                  -147097;5;0;false;false;63;95;191;;;
                                  -147102;1;0;false;false;;;;;;
                                  -147103;6;0;false;false;63;95;191;;;
                                  -147109;1;0;false;false;;;;;;
                                  -147110;3;0;false;false;63;95;191;;;
                                  -147113;1;0;false;false;;;;;;
                                  -147114;3;0;false;false;63;95;191;;;
                                  -147117;1;0;false;false;;;;;;
                                  -147118;7;0;false;false;63;95;191;;;
                                  -147125;1;0;false;false;;;;;;
                                  -147126;3;0;false;false;63;95;191;;;
                                  -147129;1;0;false;false;;;;;;
                                  -147130;6;0;false;false;63;95;191;;;
                                  -147136;1;0;false;false;;;;;;
                                  -147137;7;0;false;false;63;95;191;;;
                                  -147144;5;0;false;false;127;127;159;;;
                                  -147149;4;0;false;false;;;;;;
                                  -147153;1;0;false;false;63;95;191;;;
                                  -147154;1;0;false;false;;;;;;
                                  -147155;5;0;false;false;127;127;159;;;
                                  -147160;3;0;false;false;;;;;;
                                  -147163;1;0;false;false;63;95;191;;;
                                  -147164;4;0;false;false;;;;;;
                                  -147168;1;0;false;false;63;95;191;;;
                                  -147169;1;0;false;false;;;;;;
                                  -147170;7;1;false;false;127;159;191;;;
                                  -147177;3;0;false;false;63;95;191;;;
                                  -147180;3;0;false;false;;;;;;
                                  -147183;2;0;false;false;63;95;191;;;
                                  -147185;2;0;false;false;;;;;;
                                  -147187;6;1;false;false;127;0;85;;;
                                  -147193;1;0;false;false;;;;;;
                                  -147194;10;0;false;false;0;0;0;;;
                                  -147204;1;0;false;false;;;;;;
                                  -147205;2;0;false;false;0;0;0;;;
                                  -147207;1;0;false;false;;;;;;
                                  -147208;15;0;false;false;0;0;0;;;
                                  -147223;3;1;false;false;127;0;85;;;
                                  -147226;1;0;false;false;;;;;;
                                  -147227;6;0;false;false;0;0;0;;;
                                  -147233;1;0;false;false;;;;;;
                                  -147234;3;1;false;false;127;0;85;;;
                                  -147237;1;0;false;false;;;;;;
                                  -147238;7;0;false;false;0;0;0;;;
                                  -147245;1;0;false;false;;;;;;
                                  -147246;1;0;false;false;0;0;0;;;
                                  -147247;3;0;false;false;;;;;;
                                  -147250;14;0;false;false;0;0;0;;;
                                  -147264;3;0;false;false;;;;;;
                                  -147267;3;1;false;false;127;0;85;;;
                                  -147270;1;0;false;false;;;;;;
                                  -147271;13;0;false;false;0;0;0;;;
                                  -147284;1;0;false;false;;;;;;
                                  -147285;1;0;false;false;0;0;0;;;
                                  -147286;1;0;false;false;;;;;;
                                  -147287;15;0;false;false;0;0;0;;;
                                  -147302;3;0;false;false;;;;;;
                                  -147305;3;1;false;false;127;0;85;;;
                                  -147308;1;0;false;false;;;;;;
                                  -147309;3;0;false;false;0;0;0;;;
                                  -147312;1;0;false;false;;;;;;
                                  -147313;1;0;false;false;0;0;0;;;
                                  -147314;1;0;false;false;;;;;;
                                  -147315;5;0;false;false;0;0;0;;;
                                  -147320;1;0;false;false;;;;;;
                                  -147321;1;0;false;false;0;0;0;;;
                                  -147322;1;0;false;false;;;;;;
                                  -147323;7;0;false;false;0;0;0;;;
                                  -147330;3;0;false;false;;;;;;
                                  -147333;2;1;false;false;127;0;85;;;
                                  -147335;1;0;false;false;;;;;;
                                  -147336;6;0;false;false;0;0;0;;;
                                  -147342;1;0;false;false;;;;;;
                                  -147343;1;0;false;false;0;0;0;;;
                                  -147344;1;0;false;false;;;;;;
                                  -147345;3;0;false;false;0;0;0;;;
                                  -147348;1;0;false;false;;;;;;
                                  -147349;2;0;false;false;0;0;0;;;
                                  -147351;1;0;false;false;;;;;;
                                  -147352;5;0;false;false;0;0;0;;;
                                  -147357;1;0;false;false;;;;;;
                                  -147358;1;0;false;false;0;0;0;;;
                                  -147359;1;0;false;false;;;;;;
                                  -147360;1;0;false;false;0;0;0;;;
                                  -147361;1;0;false;false;;;;;;
                                  -147362;2;0;false;false;0;0;0;;;
                                  -147364;1;0;false;false;;;;;;
                                  -147365;3;0;false;false;0;0;0;;;
                                  -147368;1;0;false;false;;;;;;
                                  -147369;1;0;false;false;0;0;0;;;
                                  -147370;1;0;false;false;;;;;;
                                  -147371;14;0;false;false;0;0;0;;;
                                  -147385;1;0;false;false;;;;;;
                                  -147386;1;0;false;false;0;0;0;;;
                                  -147387;4;0;false;false;;;;;;
                                  -147391;35;0;false;false;0;0;0;;;
                                  -147426;3;0;false;false;;;;;;
                                  -147429;1;0;false;false;0;0;0;;;
                                  -147430;4;0;false;false;;;;;;
                                  -147434;10;0;false;false;0;0;0;;;
                                  -147444;1;0;false;false;;;;;;
                                  -147445;9;0;false;false;0;0;0;;;
                                  -147454;6;0;false;false;;;;;;
                                  -147460;2;1;false;false;127;0;85;;;
                                  -147462;1;0;false;false;;;;;;
                                  -147463;16;0;false;false;0;0;0;;;
                                  -147479;1;0;false;false;;;;;;
                                  -147480;1;0;false;false;0;0;0;;;
                                  -147481;4;0;false;false;;;;;;
                                  -147485;6;0;false;false;0;0;0;;;
                                  -147491;1;0;false;false;;;;;;
                                  -147492;1;0;false;false;0;0;0;;;
                                  -147493;1;0;false;false;;;;;;
                                  -147494;42;0;false;false;0;0;0;;;
                                  -147536;1;0;false;false;;;;;;
                                  -147537;8;0;false;false;0;0;0;;;
                                  -147545;4;0;false;false;;;;;;
                                  -147549;2;1;false;false;127;0;85;;;
                                  -147551;1;0;false;false;;;;;;
                                  -147552;7;0;false;false;0;0;0;;;
                                  -147559;1;0;false;false;;;;;;
                                  -147560;2;0;false;false;0;0;0;;;
                                  -147562;1;0;false;false;;;;;;
                                  -147563;4;1;false;false;127;0;85;;;
                                  -147567;1;0;false;false;0;0;0;;;
                                  -147568;1;0;false;false;;;;;;
                                  -147569;6;1;false;false;127;0;85;;;
                                  -147575;1;0;false;false;;;;;;
                                  -147576;3;1;false;false;127;0;85;;;
                                  -147579;1;0;false;false;;;;;;
                                  -147580;14;0;false;false;0;0;0;;;
                                  -147594;4;0;false;false;;;;;;
                                  -147598;62;0;false;false;63;127;95;;;
                                  -147660;2;0;false;false;;;;;;
                                  -147662;64;0;false;false;63;127;95;;;
                                  -147726;2;0;false;false;;;;;;
                                  -147728;32;0;false;false;63;127;95;;;
                                  -147760;2;0;false;false;;;;;;
                                  -147762;2;1;false;false;127;0;85;;;
                                  -147764;1;0;false;false;;;;;;
                                  -147765;14;0;false;false;0;0;0;;;
                                  -147779;1;0;false;false;;;;;;
                                  -147780;2;0;false;false;0;0;0;;;
                                  -147782;1;0;false;false;;;;;;
                                  -147783;2;0;false;false;0;0;0;;;
                                  -147785;1;0;false;false;;;;;;
                                  -147786;1;0;false;false;0;0;0;;;
                                  -147787;5;0;false;false;;;;;;
                                  -147792;10;0;false;false;0;0;0;;;
                                  -147802;1;0;false;false;;;;;;
                                  -147803;5;0;false;false;0;0;0;;;
                                  -147808;1;0;false;false;;;;;;
                                  -147809;1;0;false;false;0;0;0;;;
                                  -147810;1;0;false;false;;;;;;
                                  -147811;10;0;false;false;0;0;0;;;
                                  -147821;5;0;false;false;;;;;;
                                  -147826;2;1;false;false;127;0;85;;;
                                  -147828;1;0;false;false;;;;;;
                                  -147829;12;0;false;false;0;0;0;;;
                                  -147841;1;0;false;false;;;;;;
                                  -147842;1;0;false;false;0;0;0;;;
                                  -147843;1;0;false;false;;;;;;
                                  -147844;6;0;false;false;0;0;0;;;
                                  -147850;1;0;false;false;;;;;;
                                  -147851;1;0;false;false;0;0;0;;;
                                  -147852;6;0;false;false;;;;;;
                                  -147858;10;0;false;false;0;0;0;;;
                                  -147868;1;0;false;false;;;;;;
                                  -147869;8;0;false;false;0;0;0;;;
                                  -147877;1;0;false;false;;;;;;
                                  -147878;1;0;false;false;0;0;0;;;
                                  -147879;1;0;false;false;;;;;;
                                  -147880;30;0;false;false;0;0;0;;;
                                  -147910;6;0;false;false;;;;;;
                                  -147916;15;0;false;false;0;0;0;;;
                                  -147931;1;0;false;false;;;;;;
                                  -147932;1;0;false;false;0;0;0;;;
                                  -147933;1;0;false;false;;;;;;
                                  -147934;15;0;false;false;0;0;0;;;
                                  -147949;1;0;false;false;;;;;;
                                  -147950;1;0;false;false;0;0;0;;;
                                  -147951;1;0;false;false;;;;;;
                                  -147952;6;0;false;false;0;0;0;;;
                                  -147958;1;0;false;false;;;;;;
                                  -147959;1;0;false;false;0;0;0;;;
                                  -147960;1;0;false;false;;;;;;
                                  -147961;16;0;false;false;0;0;0;;;
                                  -147977;6;0;false;false;;;;;;
                                  -147983;14;0;false;false;0;0;0;;;
                                  -147997;1;0;false;false;;;;;;
                                  -147998;1;0;false;false;0;0;0;;;
                                  -147999;1;0;false;false;;;;;;
                                  -148000;6;0;false;false;0;0;0;;;
                                  -148006;6;0;false;false;;;;;;
                                  -148012;9;0;false;false;0;0;0;;;
                                  -148021;1;0;false;false;;;;;;
                                  -148022;1;0;false;false;0;0;0;;;
                                  -148023;1;0;false;false;;;;;;
                                  -148024;9;0;false;false;0;0;0;;;
                                  -148033;5;0;false;false;;;;;;
                                  -148038;1;0;false;false;0;0;0;;;
                                  -148039;5;0;false;false;;;;;;
                                  -148044;2;1;false;false;127;0;85;;;
                                  -148046;1;0;false;false;;;;;;
                                  -148047;12;0;false;false;0;0;0;;;
                                  -148059;1;0;false;false;;;;;;
                                  -148060;1;0;false;false;0;0;0;;;
                                  -148061;1;0;false;false;;;;;;
                                  -148062;12;0;false;false;0;0;0;;;
                                  -148074;1;0;false;false;;;;;;
                                  -148075;1;0;false;false;0;0;0;;;
                                  -148076;1;0;false;false;;;;;;
                                  -148077;6;0;false;false;0;0;0;;;
                                  -148083;1;0;false;false;;;;;;
                                  -148084;1;0;false;false;0;0;0;;;
                                  -148085;1;0;false;false;;;;;;
                                  -148086;8;0;false;false;0;0;0;;;
                                  -148094;1;0;false;false;;;;;;
                                  -148095;1;0;false;false;0;0;0;;;
                                  -148096;6;0;false;false;;;;;;
                                  -148102;10;0;false;false;0;0;0;;;
                                  -148112;1;0;false;false;;;;;;
                                  -148113;8;0;false;false;0;0;0;;;
                                  -148121;1;0;false;false;;;;;;
                                  -148122;1;0;false;false;0;0;0;;;
                                  -148123;1;0;false;false;;;;;;
                                  -148124;30;0;false;false;0;0;0;;;
                                  -148154;6;0;false;false;;;;;;
                                  -148160;15;0;false;false;0;0;0;;;
                                  -148175;1;0;false;false;;;;;;
                                  -148176;1;0;false;false;0;0;0;;;
                                  -148177;1;0;false;false;;;;;;
                                  -148178;5;0;false;false;0;0;0;;;
                                  -148183;1;0;false;false;;;;;;
                                  -148184;1;0;false;false;0;0;0;;;
                                  -148185;1;0;false;false;;;;;;
                                  -148186;6;0;false;false;0;0;0;;;
                                  -148192;1;0;false;false;;;;;;
                                  -148193;1;0;false;false;0;0;0;;;
                                  -148194;1;0;false;false;;;;;;
                                  -148195;15;0;false;false;0;0;0;;;
                                  -148210;6;0;false;false;;;;;;
                                  -148216;9;0;false;false;0;0;0;;;
                                  -148225;1;0;false;false;;;;;;
                                  -148226;1;0;false;false;0;0;0;;;
                                  -148227;1;0;false;false;;;;;;
                                  -148228;9;0;false;false;0;0;0;;;
                                  -148237;5;0;false;false;;;;;;
                                  -148242;1;0;false;false;0;0;0;;;
                                  -148243;4;0;false;false;;;;;;
                                  -148247;1;0;false;false;0;0;0;;;
                                  -148248;1;0;false;false;;;;;;
                                  -148249;4;1;false;false;127;0;85;;;
                                  -148253;1;0;false;false;;;;;;
                                  -148254;2;1;false;false;127;0;85;;;
                                  -148256;1;0;false;false;;;;;;
                                  -148257;14;0;false;false;0;0;0;;;
                                  -148271;1;0;false;false;;;;;;
                                  -148272;1;0;false;false;0;0;0;;;
                                  -148273;1;0;false;false;;;;;;
                                  -148274;2;0;false;false;0;0;0;;;
                                  -148276;1;0;false;false;;;;;;
                                  -148277;1;0;false;false;0;0;0;;;
                                  -148278;5;0;false;false;;;;;;
                                  -148283;10;0;false;false;0;0;0;;;
                                  -148293;1;0;false;false;;;;;;
                                  -148294;5;0;false;false;0;0;0;;;
                                  -148299;1;0;false;false;;;;;;
                                  -148300;1;0;false;false;0;0;0;;;
                                  -148301;1;0;false;false;;;;;;
                                  -148302;10;0;false;false;0;0;0;;;
                                  -148312;5;0;false;false;;;;;;
                                  -148317;2;1;false;false;127;0;85;;;
                                  -148319;1;0;false;false;;;;;;
                                  -148320;12;0;false;false;0;0;0;;;
                                  -148332;1;0;false;false;;;;;;
                                  -148333;1;0;false;false;0;0;0;;;
                                  -148334;1;0;false;false;;;;;;
                                  -148335;6;0;false;false;0;0;0;;;
                                  -148341;1;0;false;false;;;;;;
                                  -148342;1;0;false;false;0;0;0;;;
                                  -148343;6;0;false;false;;;;;;
                                  -148349;10;0;false;false;0;0;0;;;
                                  -148359;1;0;false;false;;;;;;
                                  -148360;8;0;false;false;0;0;0;;;
                                  -148368;1;0;false;false;;;;;;
                                  -148369;1;0;false;false;0;0;0;;;
                                  -148370;1;0;false;false;;;;;;
                                  -148371;30;0;false;false;0;0;0;;;
                                  -148401;6;0;false;false;;;;;;
                                  -148407;15;0;false;false;0;0;0;;;
                                  -148422;1;0;false;false;;;;;;
                                  -148423;1;0;false;false;0;0;0;;;
                                  -148424;1;0;false;false;;;;;;
                                  -148425;15;0;false;false;0;0;0;;;
                                  -148440;1;0;false;false;;;;;;
                                  -148441;1;0;false;false;0;0;0;;;
                                  -148442;1;0;false;false;;;;;;
                                  -148443;6;0;false;false;0;0;0;;;
                                  -148449;1;0;false;false;;;;;;
                                  -148450;1;0;false;false;0;0;0;;;
                                  -148451;1;0;false;false;;;;;;
                                  -148452;16;0;false;false;0;0;0;;;
                                  -148468;6;0;false;false;;;;;;
                                  -148474;14;0;false;false;0;0;0;;;
                                  -148488;1;0;false;false;;;;;;
                                  -148489;1;0;false;false;0;0;0;;;
                                  -148490;1;0;false;false;;;;;;
                                  -148491;6;0;false;false;0;0;0;;;
                                  -148497;6;0;false;false;;;;;;
                                  -148503;9;0;false;false;0;0;0;;;
                                  -148512;1;0;false;false;;;;;;
                                  -148513;1;0;false;false;0;0;0;;;
                                  -148514;1;0;false;false;;;;;;
                                  -148515;9;0;false;false;0;0;0;;;
                                  -148524;5;0;false;false;;;;;;
                                  -148529;1;0;false;false;0;0;0;;;
                                  -148530;5;0;false;false;;;;;;
                                  -148535;5;0;false;false;0;0;0;;;
                                  -148540;1;0;false;false;;;;;;
                                  -148541;1;0;false;false;0;0;0;;;
                                  -148542;1;0;false;false;;;;;;
                                  -148543;20;0;false;false;0;0;0;;;
                                  -148563;1;0;false;false;;;;;;
                                  -148564;1;0;false;false;0;0;0;;;
                                  -148565;1;0;false;false;;;;;;
                                  -148566;3;0;false;false;0;0;0;;;
                                  -148569;5;0;false;false;;;;;;
                                  -148574;2;1;false;false;127;0;85;;;
                                  -148576;1;0;false;false;;;;;;
                                  -148577;12;0;false;false;0;0;0;;;
                                  -148589;1;0;false;false;;;;;;
                                  -148590;1;0;false;false;0;0;0;;;
                                  -148591;1;0;false;false;;;;;;
                                  -148592;12;0;false;false;0;0;0;;;
                                  -148604;1;0;false;false;;;;;;
                                  -148605;1;0;false;false;0;0;0;;;
                                  -148606;1;0;false;false;;;;;;
                                  -148607;6;0;false;false;0;0;0;;;
                                  -148613;1;0;false;false;;;;;;
                                  -148614;1;0;false;false;0;0;0;;;
                                  -148615;1;0;false;false;;;;;;
                                  -148616;8;0;false;false;0;0;0;;;
                                  -148624;1;0;false;false;;;;;;
                                  -148625;1;0;false;false;0;0;0;;;
                                  -148626;6;0;false;false;;;;;;
                                  -148632;10;0;false;false;0;0;0;;;
                                  -148642;1;0;false;false;;;;;;
                                  -148643;8;0;false;false;0;0;0;;;
                                  -148651;1;0;false;false;;;;;;
                                  -148652;1;0;false;false;0;0;0;;;
                                  -148653;1;0;false;false;;;;;;
                                  -148654;32;0;false;false;0;0;0;;;
                                  -148686;1;0;false;false;;;;;;
                                  -148687;1;0;false;false;0;0;0;;;
                                  -148688;1;0;false;false;;;;;;
                                  -148689;11;0;false;false;0;0;0;;;
                                  -148700;6;0;false;false;;;;;;
                                  -148706;15;0;false;false;0;0;0;;;
                                  -148721;1;0;false;false;;;;;;
                                  -148722;1;0;false;false;0;0;0;;;
                                  -148723;1;0;false;false;;;;;;
                                  -148724;5;0;false;false;0;0;0;;;
                                  -148729;1;0;false;false;;;;;;
                                  -148730;1;0;false;false;0;0;0;;;
                                  -148731;1;0;false;false;;;;;;
                                  -148732;6;0;false;false;0;0;0;;;
                                  -148738;1;0;false;false;;;;;;
                                  -148739;1;0;false;false;0;0;0;;;
                                  -148740;1;0;false;false;;;;;;
                                  -148741;15;0;false;false;0;0;0;;;
                                  -148756;6;0;false;false;;;;;;
                                  -148762;20;0;false;false;0;0;0;;;
                                  -148782;1;0;false;false;;;;;;
                                  -148783;1;0;false;false;0;0;0;;;
                                  -148784;1;0;false;false;;;;;;
                                  -148785;2;0;false;false;0;0;0;;;
                                  -148787;1;0;false;false;;;;;;
                                  -148788;1;0;false;false;0;0;0;;;
                                  -148789;1;0;false;false;;;;;;
                                  -148790;9;0;false;false;0;0;0;;;
                                  -148799;5;0;false;false;;;;;;
                                  -148804;1;0;false;false;0;0;0;;;
                                  -148805;4;0;false;false;;;;;;
                                  -148809;1;0;false;false;0;0;0;;;
                                  -148810;3;0;false;false;;;;;;
                                  -148813;1;0;false;false;0;0;0;;;
                                  -148814;3;0;false;false;;;;;;
                                  -148817;4;1;false;false;127;0;85;;;
                                  -148821;1;0;false;false;;;;;;
                                  -148822;1;0;false;false;0;0;0;;;
                                  -148823;4;0;false;false;;;;;;
                                  -148827;6;0;false;false;0;0;0;;;
                                  -148833;1;0;false;false;;;;;;
                                  -148834;1;0;false;false;0;0;0;;;
                                  -148835;1;0;false;false;;;;;;
                                  -148836;3;1;false;false;127;0;85;;;
                                  -148839;1;0;false;false;;;;;;
                                  -148840;14;0;false;false;0;0;0;;;
                                  -148854;3;0;false;false;;;;;;
                                  -148857;1;0;false;false;0;0;0;;;
                                  -148858;3;0;false;false;;;;;;
                                  -148861;6;1;false;false;127;0;85;;;
                                  -148867;1;0;false;false;;;;;;
                                  -148868;7;0;false;false;0;0;0;;;
                                  -148875;2;0;false;false;;;;;;
                                  -148877;1;0;false;false;0;0;0;;;
                                  -148878;2;0;false;false;;;;;;
                                  -148880;3;0;false;false;63;95;191;;;
                                  -148883;3;0;false;false;;;;;;
                                  -148886;1;0;false;false;63;95;191;;;
                                  -148887;1;0;false;false;;;;;;
                                  -148888;7;0;false;false;63;95;191;;;
                                  -148895;1;0;false;false;;;;;;
                                  -148896;3;0;false;false;63;95;191;;;
                                  -148899;1;0;false;false;;;;;;
                                  -148900;3;0;false;false;63;95;191;;;
                                  -148903;1;0;false;false;;;;;;
                                  -148904;5;0;false;false;63;95;191;;;
                                  -148909;1;0;false;false;;;;;;
                                  -148910;8;0;false;false;63;95;191;;;
                                  -148918;1;0;false;false;;;;;;
                                  -148919;2;0;false;false;63;95;191;;;
                                  -148921;1;0;false;false;;;;;;
                                  -148922;11;0;false;false;63;95;191;;;
                                  -148933;3;0;false;false;;;;;;
                                  -148936;1;0;false;false;63;95;191;;;
                                  -148937;3;0;false;false;;;;;;
                                  -148940;1;0;false;false;63;95;191;;;
                                  -148941;1;0;false;false;;;;;;
                                  -148942;8;1;false;false;127;159;191;;;
                                  -148950;3;0;false;false;63;95;191;;;
                                  -148953;1;0;false;false;;;;;;
                                  -148954;5;0;false;false;63;95;191;;;
                                  -148959;1;0;false;false;;;;;;
                                  -148960;8;0;false;false;63;95;191;;;
                                  -148968;1;0;false;false;;;;;;
                                  -148969;2;0;false;false;63;95;191;;;
                                  -148971;1;0;false;false;;;;;;
                                  -148972;10;0;false;false;63;95;191;;;
                                  -148982;3;0;false;false;;;;;;
                                  -148985;1;0;false;false;63;95;191;;;
                                  -148986;1;0;false;false;;;;;;
                                  -148987;11;1;false;false;127;159;191;;;
                                  -148998;12;0;false;false;63;95;191;;;
                                  -149010;1;0;false;false;;;;;;
                                  -149011;4;0;false;false;127;127;159;;;
                                  -149015;3;0;false;false;;;;;;
                                  -149018;1;0;false;false;63;95;191;;;
                                  -149019;4;0;false;false;;;;;;
                                  -149023;4;0;false;false;127;127;159;;;
                                  -149027;21;0;false;false;63;95;191;;;
                                  -149048;1;0;false;false;;;;;;
                                  -149049;1;0;false;false;127;127;159;;;
                                  -149050;1;0;false;false;;;;;;
                                  -149051;2;0;false;false;63;95;191;;;
                                  -149053;1;0;false;false;;;;;;
                                  -149054;3;0;false;false;63;95;191;;;
                                  -149057;1;0;false;false;;;;;;
                                  -149058;8;0;false;false;63;95;191;;;
                                  -149066;1;0;false;false;;;;;;
                                  -149067;3;0;false;false;63;95;191;;;
                                  -149070;1;0;false;false;;;;;;
                                  -149071;4;0;false;false;63;95;191;;;
                                  -149075;1;0;false;false;;;;;;
                                  -149076;8;0;false;false;63;95;191;;;
                                  -149084;5;0;false;false;127;127;159;;;
                                  -149089;3;0;false;false;;;;;;
                                  -149092;1;0;false;false;63;95;191;;;
                                  -149093;4;0;false;false;;;;;;
                                  -149097;4;0;false;false;127;127;159;;;
                                  -149101;27;0;false;false;63;95;191;;;
                                  -149128;1;0;false;false;;;;;;
                                  -149129;1;0;false;false;127;127;159;;;
                                  -149130;1;0;false;false;;;;;;
                                  -149131;2;0;false;false;63;95;191;;;
                                  -149133;1;0;false;false;;;;;;
                                  -149134;3;0;false;false;63;95;191;;;
                                  -149137;1;0;false;false;;;;;;
                                  -149138;6;0;false;false;63;95;191;;;
                                  -149144;1;0;false;false;;;;;;
                                  -149145;4;0;false;false;63;95;191;;;
                                  -149149;1;0;false;false;;;;;;
                                  -149150;3;0;false;false;63;95;191;;;
                                  -149153;1;0;false;false;;;;;;
                                  -149154;6;0;false;false;63;95;191;;;
                                  -149160;1;0;false;false;;;;;;
                                  -149161;4;0;false;false;63;95;191;;;
                                  -149165;1;0;false;false;;;;;;
                                  -149166;7;0;false;false;63;95;191;;;
                                  -149173;1;0;false;false;;;;;;
                                  -149174;3;0;false;false;63;95;191;;;
                                  -149177;1;0;false;false;;;;;;
                                  -149178;8;0;false;false;63;95;191;;;
                                  -149186;5;0;false;false;127;127;159;;;
                                  -149191;3;0;false;false;;;;;;
                                  -149194;1;0;false;false;63;95;191;;;
                                  -149195;1;0;false;false;;;;;;
                                  -149196;5;0;false;false;127;127;159;;;
                                  -149201;3;0;false;false;;;;;;
                                  -149204;2;0;false;false;63;95;191;;;
                                  -149206;2;0;false;false;;;;;;
                                  -149208;6;1;false;false;127;0;85;;;
                                  -149214;1;0;false;false;;;;;;
                                  -149215;3;1;false;false;127;0;85;;;
                                  -149218;1;0;false;false;;;;;;
                                  -149219;9;0;false;false;0;0;0;;;
                                  -149228;1;0;false;false;;;;;;
                                  -149229;1;0;false;false;0;0;0;;;
                                  -149230;3;0;false;false;;;;;;
                                  -149233;14;0;false;false;0;0;0;;;
                                  -149247;3;0;false;false;;;;;;
                                  -149250;6;1;false;false;127;0;85;;;
                                  -149256;1;0;false;false;;;;;;
                                  -149257;10;0;false;false;0;0;0;;;
                                  -149267;2;0;false;false;;;;;;
                                  -149269;1;0;false;false;0;0;0;;;
                                  -149270;2;0;false;false;;;;;;
                                  -149272;3;0;false;false;63;95;191;;;
                                  -149275;3;0;false;false;;;;;;
                                  -149278;1;0;false;false;63;95;191;;;
                                  -149279;1;0;false;false;;;;;;
                                  -149280;7;0;false;false;63;95;191;;;
                                  -149287;1;0;false;false;;;;;;
                                  -149288;1;0;false;false;63;95;191;;;
                                  -149289;1;0;false;false;;;;;;
                                  -149290;4;0;false;false;63;95;191;;;
                                  -149294;1;0;false;false;;;;;;
                                  -149295;2;0;false;false;63;95;191;;;
                                  -149297;1;0;false;false;;;;;;
                                  -149298;3;0;false;false;63;95;191;;;
                                  -149301;1;0;false;false;;;;;;
                                  -149302;6;0;false;false;63;95;191;;;
                                  -149308;1;0;false;false;;;;;;
                                  -149309;8;0;false;false;63;95;191;;;
                                  -149317;3;0;false;false;;;;;;
                                  -149320;1;0;false;false;63;95;191;;;
                                  -149321;1;0;false;false;;;;;;
                                  -149322;3;0;false;false;127;127;159;;;
                                  -149325;3;0;false;false;;;;;;
                                  -149328;1;0;false;false;63;95;191;;;
                                  -149329;3;0;false;false;;;;;;
                                  -149332;1;0;false;false;63;95;191;;;
                                  -149333;1;0;false;false;;;;;;
                                  -149334;8;1;false;false;127;159;191;;;
                                  -149342;4;0;false;false;63;95;191;;;
                                  -149346;1;0;false;false;;;;;;
                                  -149347;2;0;false;false;63;95;191;;;
                                  -149349;1;0;false;false;;;;;;
                                  -149350;3;0;false;false;63;95;191;;;
                                  -149353;1;0;false;false;;;;;;
                                  -149354;6;0;false;false;63;95;191;;;
                                  -149360;1;0;false;false;;;;;;
                                  -149361;7;0;false;false;63;95;191;;;
                                  -149368;3;0;false;false;;;;;;
                                  -149371;1;0;false;false;63;95;191;;;
                                  -149372;1;0;false;false;;;;;;
                                  -149373;11;1;false;false;127;159;191;;;
                                  -149384;12;0;false;false;63;95;191;;;
                                  -149396;1;0;false;false;;;;;;
                                  -149397;4;0;false;false;127;127;159;;;
                                  -149401;3;0;false;false;;;;;;
                                  -149404;1;0;false;false;63;95;191;;;
                                  -149405;4;0;false;false;;;;;;
                                  -149409;4;0;false;false;127;127;159;;;
                                  -149413;21;0;false;false;63;95;191;;;
                                  -149434;1;0;false;false;;;;;;
                                  -149435;1;0;false;false;127;127;159;;;
                                  -149436;1;0;false;false;;;;;;
                                  -149437;2;0;false;false;63;95;191;;;
                                  -149439;1;0;false;false;;;;;;
                                  -149440;3;0;false;false;63;95;191;;;
                                  -149443;1;0;false;false;;;;;;
                                  -149444;8;0;false;false;63;95;191;;;
                                  -149452;1;0;false;false;;;;;;
                                  -149453;3;0;false;false;63;95;191;;;
                                  -149456;1;0;false;false;;;;;;
                                  -149457;4;0;false;false;63;95;191;;;
                                  -149461;1;0;false;false;;;;;;
                                  -149462;8;0;false;false;63;95;191;;;
                                  -149470;5;0;false;false;127;127;159;;;
                                  -149475;3;0;false;false;;;;;;
                                  -149478;1;0;false;false;63;95;191;;;
                                  -149479;4;0;false;false;;;;;;
                                  -149483;4;0;false;false;127;127;159;;;
                                  -149487;27;0;false;false;63;95;191;;;
                                  -149514;1;0;false;false;;;;;;
                                  -149515;1;0;false;false;127;127;159;;;
                                  -149516;1;0;false;false;;;;;;
                                  -149517;2;0;false;false;63;95;191;;;
                                  -149519;1;0;false;false;;;;;;
                                  -149520;3;0;false;false;63;95;191;;;
                                  -149523;1;0;false;false;;;;;;
                                  -149524;6;0;false;false;63;95;191;;;
                                  -149530;1;0;false;false;;;;;;
                                  -149531;4;0;false;false;63;95;191;;;
                                  -149535;1;0;false;false;;;;;;
                                  -149536;3;0;false;false;63;95;191;;;
                                  -149539;1;0;false;false;;;;;;
                                  -149540;6;0;false;false;63;95;191;;;
                                  -149546;1;0;false;false;;;;;;
                                  -149547;4;0;false;false;63;95;191;;;
                                  -149551;1;0;false;false;;;;;;
                                  -149552;7;0;false;false;63;95;191;;;
                                  -149559;1;0;false;false;;;;;;
                                  -149560;3;0;false;false;63;95;191;;;
                                  -149563;1;0;false;false;;;;;;
                                  -149564;8;0;false;false;63;95;191;;;
                                  -149572;5;0;false;false;127;127;159;;;
                                  -149577;3;0;false;false;;;;;;
                                  -149580;1;0;false;false;63;95;191;;;
                                  -149581;1;0;false;false;;;;;;
                                  -149582;5;0;false;false;127;127;159;;;
                                  -149587;3;0;false;false;;;;;;
                                  -149590;2;0;false;false;63;95;191;;;
                                  -149592;2;0;false;false;;;;;;
                                  -149594;6;1;false;false;127;0;85;;;
                                  -149600;1;0;false;false;;;;;;
                                  -149601;6;0;false;false;0;0;0;;;
                                  -149607;1;0;false;false;;;;;;
                                  -149608;9;0;false;false;0;0;0;;;
                                  -149617;1;0;false;false;;;;;;
                                  -149618;1;0;false;false;0;0;0;;;
                                  -149619;3;0;false;false;;;;;;
                                  -149622;14;0;false;false;0;0;0;;;
                                  -149636;3;0;false;false;;;;;;
                                  -149639;6;1;false;false;127;0;85;;;
                                  -149645;1;0;false;false;;;;;;
                                  -149646;23;0;false;false;0;0;0;;;
                                  -149669;1;0;false;false;;;;;;
                                  -149670;16;0;false;false;0;0;0;;;
                                  -149686;2;0;false;false;;;;;;
                                  -149688;1;0;false;false;0;0;0;;;
                                  -149689;3;0;false;false;;;;;;
                                  -149692;3;0;false;false;63;95;191;;;
                                  -149695;3;0;false;false;;;;;;
                                  -149698;1;0;false;false;63;95;191;;;
                                  -149699;1;0;false;false;;;;;;
                                  -149700;7;0;false;false;63;95;191;;;
                                  -149707;1;0;false;false;;;;;;
                                  -149708;3;0;false;false;63;95;191;;;
                                  -149711;1;0;false;false;;;;;;
                                  -149712;6;0;false;false;63;95;191;;;
                                  -149718;1;0;false;false;;;;;;
                                  -149719;7;0;false;false;63;95;191;;;
                                  -149726;1;0;false;false;;;;;;
                                  -149727;7;0;false;false;63;95;191;;;
                                  -149734;1;0;false;false;;;;;;
                                  -149735;3;0;false;false;63;95;191;;;
                                  -149738;1;0;false;false;;;;;;
                                  -149739;3;0;false;false;63;95;191;;;
                                  -149742;1;0;false;false;;;;;;
                                  -149743;8;0;false;false;63;95;191;;;
                                  -149751;3;0;false;false;;;;;;
                                  -149754;1;0;false;false;63;95;191;;;
                                  -149755;1;0;false;false;;;;;;
                                  -149756;3;0;false;false;127;127;159;;;
                                  -149759;3;0;false;false;;;;;;
                                  -149762;1;0;false;false;63;95;191;;;
                                  -149763;3;0;false;false;;;;;;
                                  -149766;1;0;false;false;63;95;191;;;
                                  -149767;1;0;false;false;;;;;;
                                  -149768;7;1;false;false;127;159;191;;;
                                  -149775;5;0;false;false;63;95;191;;;
                                  -149780;1;0;false;false;;;;;;
                                  -149781;6;0;false;false;63;95;191;;;
                                  -149787;1;0;false;false;;;;;;
                                  -149788;2;0;false;false;63;95;191;;;
                                  -149790;1;0;false;false;;;;;;
                                  -149791;3;0;false;false;63;95;191;;;
                                  -149794;1;0;false;false;;;;;;
                                  -149795;5;0;false;false;63;95;191;;;
                                  -149800;1;0;false;false;;;;;;
                                  -149801;9;0;false;false;63;95;191;;;
                                  -149810;1;0;false;false;;;;;;
                                  -149811;2;0;false;false;63;95;191;;;
                                  -149813;1;0;false;false;;;;;;
                                  -149814;3;0;false;false;63;95;191;;;
                                  -149817;1;0;false;false;;;;;;
                                  -149818;8;0;false;false;63;95;191;;;
                                  -149826;1;0;false;false;;;;;;
                                  -149827;6;0;false;false;63;95;191;;;
                                  -149833;3;0;false;false;;;;;;
                                  -149836;1;0;false;false;63;95;191;;;
                                  -149837;1;0;false;false;;;;;;
                                  -149838;7;1;false;false;127;159;191;;;
                                  -149845;3;0;false;false;63;95;191;;;
                                  -149848;1;0;false;false;;;;;;
                                  -149849;6;0;false;false;63;95;191;;;
                                  -149855;1;0;false;false;;;;;;
                                  -149856;2;0;false;false;63;95;191;;;
                                  -149858;1;0;false;false;;;;;;
                                  -149859;3;0;false;false;63;95;191;;;
                                  -149862;1;0;false;false;;;;;;
                                  -149863;4;0;false;false;63;95;191;;;
                                  -149867;1;0;false;false;;;;;;
                                  -149868;9;0;false;false;63;95;191;;;
                                  -149877;1;0;false;false;;;;;;
                                  -149878;2;0;false;false;63;95;191;;;
                                  -149880;1;0;false;false;;;;;;
                                  -149881;3;0;false;false;63;95;191;;;
                                  -149884;1;0;false;false;;;;;;
                                  -149885;8;0;false;false;63;95;191;;;
                                  -149893;1;0;false;false;;;;;;
                                  -149894;6;0;false;false;63;95;191;;;
                                  -149900;4;0;false;false;;;;;;
                                  -149904;1;0;false;false;63;95;191;;;
                                  -149905;1;0;false;false;;;;;;
                                  -149906;8;1;false;false;127;159;191;;;
                                  -149914;6;0;false;false;63;95;191;;;
                                  -149920;1;0;false;false;;;;;;
                                  -149921;7;0;false;false;63;95;191;;;
                                  -149928;1;0;false;false;;;;;;
                                  -149929;8;0;false;false;63;95;191;;;
                                  -149937;1;0;false;false;;;;;;
                                  -149938;2;0;false;false;63;95;191;;;
                                  -149940;1;0;false;false;;;;;;
                                  -149941;5;0;false;false;63;95;191;;;
                                  -149946;1;0;false;false;;;;;;
                                  -149947;3;0;false;false;63;95;191;;;
                                  -149950;1;0;false;false;;;;;;
                                  -149951;6;0;false;false;63;95;191;;;
                                  -149957;1;0;false;false;;;;;;
                                  -149958;2;0;false;false;63;95;191;;;
                                  -149960;1;0;false;false;;;;;;
                                  -149961;3;0;false;false;63;95;191;;;
                                  -149964;3;0;false;false;;;;;;
                                  -149967;1;0;false;false;63;95;191;;;
                                  -149968;1;0;false;false;;;;;;
                                  -149969;5;1;false;false;127;159;191;;;
                                  -149974;22;0;false;false;63;95;191;;;
                                  -149996;3;0;false;false;;;;;;
                                  -149999;1;0;false;false;63;95;191;;;
                                  -150000;1;0;false;false;;;;;;
                                  -150001;11;1;false;false;127;159;191;;;
                                  -150012;12;0;false;false;63;95;191;;;
                                  -150024;1;0;false;false;;;;;;
                                  -150025;4;0;false;false;127;127;159;;;
                                  -150029;3;0;false;false;;;;;;
                                  -150032;1;0;false;false;63;95;191;;;
                                  -150033;4;0;false;false;;;;;;
                                  -150037;4;0;false;false;127;127;159;;;
                                  -150041;21;0;false;false;63;95;191;;;
                                  -150062;1;0;false;false;;;;;;
                                  -150063;1;0;false;false;127;127;159;;;
                                  -150064;1;0;false;false;;;;;;
                                  -150065;2;0;false;false;63;95;191;;;
                                  -150067;1;0;false;false;;;;;;
                                  -150068;3;0;false;false;63;95;191;;;
                                  -150071;1;0;false;false;;;;;;
                                  -150072;8;0;false;false;63;95;191;;;
                                  -150080;1;0;false;false;;;;;;
                                  -150081;3;0;false;false;63;95;191;;;
                                  -150084;1;0;false;false;;;;;;
                                  -150085;4;0;false;false;63;95;191;;;
                                  -150089;1;0;false;false;;;;;;
                                  -150090;8;0;false;false;63;95;191;;;
                                  -150098;5;0;false;false;127;127;159;;;
                                  -150103;3;0;false;false;;;;;;
                                  -150106;1;0;false;false;63;95;191;;;
                                  -150107;4;0;false;false;;;;;;
                                  -150111;4;0;false;false;127;127;159;;;
                                  -150115;27;0;false;false;63;95;191;;;
                                  -150142;1;0;false;false;;;;;;
                                  -150143;1;0;false;false;127;127;159;;;
                                  -150144;1;0;false;false;;;;;;
                                  -150145;2;0;false;false;63;95;191;;;
                                  -150147;1;0;false;false;;;;;;
                                  -150148;3;0;false;false;63;95;191;;;
                                  -150151;1;0;false;false;;;;;;
                                  -150152;6;0;false;false;63;95;191;;;
                                  -150158;1;0;false;false;;;;;;
                                  -150159;4;0;false;false;63;95;191;;;
                                  -150163;1;0;false;false;;;;;;
                                  -150164;3;0;false;false;63;95;191;;;
                                  -150167;1;0;false;false;;;;;;
                                  -150168;6;0;false;false;63;95;191;;;
                                  -150174;1;0;false;false;;;;;;
                                  -150175;4;0;false;false;63;95;191;;;
                                  -150179;1;0;false;false;;;;;;
                                  -150180;7;0;false;false;63;95;191;;;
                                  -150187;1;0;false;false;;;;;;
                                  -150188;3;0;false;false;63;95;191;;;
                                  -150191;1;0;false;false;;;;;;
                                  -150192;8;0;false;false;63;95;191;;;
                                  -150200;5;0;false;false;127;127;159;;;
                                  -150205;3;0;false;false;;;;;;
                                  -150208;1;0;false;false;63;95;191;;;
                                  -150209;1;0;false;false;;;;;;
                                  -150210;5;0;false;false;127;127;159;;;
                                  -150215;3;0;false;false;;;;;;
                                  -150218;1;0;false;false;63;95;191;;;
                                  -150219;1;0;false;false;;;;;;
                                  -150220;11;1;false;false;127;159;191;;;
                                  -150231;24;0;false;false;63;95;191;;;
                                  -150255;1;0;false;false;;;;;;
                                  -150256;4;0;false;false;127;127;159;;;
                                  -150260;3;0;false;false;;;;;;
                                  -150263;1;0;false;false;63;95;191;;;
                                  -150264;3;0;false;false;;;;;;
                                  -150267;4;0;false;false;127;127;159;;;
                                  -150271;19;0;false;false;63;95;191;;;
                                  -150290;1;0;false;false;;;;;;
                                  -150291;4;0;false;false;63;95;191;;;
                                  -150295;1;0;false;false;;;;;;
                                  -150296;5;0;false;false;63;95;191;;;
                                  -150301;1;0;false;false;;;;;;
                                  -150302;6;0;false;false;63;95;191;;;
                                  -150308;1;0;false;false;;;;;;
                                  -150309;3;0;false;false;63;95;191;;;
                                  -150312;1;0;false;false;;;;;;
                                  -150313;3;0;false;false;63;95;191;;;
                                  -150316;1;0;false;false;;;;;;
                                  -150317;7;0;false;false;63;95;191;;;
                                  -150324;1;0;false;false;;;;;;
                                  -150325;3;0;false;false;63;95;191;;;
                                  -150328;1;0;false;false;;;;;;
                                  -150329;6;0;false;false;63;95;191;;;
                                  -150335;1;0;false;false;;;;;;
                                  -150336;7;0;false;false;63;95;191;;;
                                  -150343;5;0;false;false;127;127;159;;;
                                  -150348;4;0;false;false;;;;;;
                                  -150352;1;0;false;false;63;95;191;;;
                                  -150353;1;0;false;false;;;;;;
                                  -150354;5;0;false;false;127;127;159;;;
                                  -150359;3;0;false;false;;;;;;
                                  -150362;2;0;false;false;63;95;191;;;
                                  -150364;2;0;false;false;;;;;;
                                  -150366;6;1;false;false;127;0;85;;;
                                  -150372;1;0;false;false;;;;;;
                                  -150373;6;0;false;false;0;0;0;;;
                                  -150379;1;0;false;false;;;;;;
                                  -150380;8;0;false;false;0;0;0;;;
                                  -150388;3;1;false;false;127;0;85;;;
                                  -150391;1;0;false;false;;;;;;
                                  -150392;6;0;false;false;0;0;0;;;
                                  -150398;1;0;false;false;;;;;;
                                  -150399;3;1;false;false;127;0;85;;;
                                  -150402;1;0;false;false;;;;;;
                                  -150403;4;0;false;false;0;0;0;;;
                                  -150407;1;0;false;false;;;;;;
                                  -150408;1;0;false;false;0;0;0;;;
                                  -150409;3;0;false;false;;;;;;
                                  -150412;14;0;false;false;0;0;0;;;
                                  -150426;3;0;false;false;;;;;;
                                  -150429;3;1;false;false;127;0;85;;;
                                  -150432;1;0;false;false;;;;;;
                                  -150433;13;0;false;false;0;0;0;;;
                                  -150446;1;0;false;false;;;;;;
                                  -150447;1;0;false;false;0;0;0;;;
                                  -150448;1;0;false;false;;;;;;
                                  -150449;15;0;false;false;0;0;0;;;
                                  -150464;6;0;false;false;;;;;;
                                  -150470;2;1;false;false;127;0;85;;;
                                  -150472;1;0;false;false;;;;;;
                                  -150473;6;0;false;false;0;0;0;;;
                                  -150479;1;0;false;false;;;;;;
                                  -150480;1;0;false;false;0;0;0;;;
                                  -150481;1;0;false;false;;;;;;
                                  -150482;1;0;false;false;0;0;0;;;
                                  -150483;1;0;false;false;;;;;;
                                  -150484;2;0;false;false;0;0;0;;;
                                  -150486;1;0;false;false;;;;;;
                                  -150487;5;0;false;false;0;0;0;;;
                                  -150492;1;0;false;false;;;;;;
                                  -150493;2;0;false;false;0;0;0;;;
                                  -150495;1;0;false;false;;;;;;
                                  -150496;13;0;false;false;0;0;0;;;
                                  -150509;1;0;false;false;;;;;;
                                  -150510;2;0;false;false;0;0;0;;;
                                  -150512;1;0;false;false;;;;;;
                                  -150513;3;0;false;false;0;0;0;;;
                                  -150516;1;0;false;false;;;;;;
                                  -150517;1;0;false;false;0;0;0;;;
                                  -150518;1;0;false;false;;;;;;
                                  -150519;1;0;false;false;0;0;0;;;
                                  -150520;1;0;false;false;;;;;;
                                  -150521;2;0;false;false;0;0;0;;;
                                  -150523;1;0;false;false;;;;;;
                                  -150524;3;0;false;false;0;0;0;;;
                                  -150527;1;0;false;false;;;;;;
                                  -150528;2;0;false;false;0;0;0;;;
                                  -150530;1;0;false;false;;;;;;
                                  -150531;13;0;false;false;0;0;0;;;
                                  -150544;1;0;false;false;;;;;;
                                  -150545;2;0;false;false;0;0;0;;;
                                  -150547;1;0;false;false;;;;;;
                                  -150548;5;0;false;false;0;0;0;;;
                                  -150553;1;0;false;false;;;;;;
                                  -150554;1;0;false;false;0;0;0;;;
                                  -150555;1;0;false;false;;;;;;
                                  -150556;4;0;false;false;0;0;0;;;
                                  -150560;1;0;false;false;;;;;;
                                  -150561;1;0;false;false;0;0;0;;;
                                  -150562;4;0;false;false;;;;;;
                                  -150566;35;0;false;false;0;0;0;;;
                                  -150601;3;0;false;false;;;;;;
                                  -150604;1;0;false;false;0;0;0;;;
                                  -150605;4;0;false;false;;;;;;
                                  -150609;6;1;false;false;127;0;85;;;
                                  -150615;1;0;false;false;;;;;;
                                  -150616;27;0;false;false;0;0;0;;;
                                  -150643;1;0;false;false;;;;;;
                                  -150644;3;0;false;false;0;0;0;;;
                                  -150647;1;0;false;false;;;;;;
                                  -150648;1;0;false;false;0;0;0;;;
                                  -150649;1;0;false;false;;;;;;
                                  -150650;5;0;false;false;0;0;0;;;
                                  -150655;1;0;false;false;;;;;;
                                  -150656;1;0;false;false;0;0;0;;;
                                  -150657;1;0;false;false;;;;;;
                                  -150658;3;0;false;false;0;0;0;;;
                                  -150661;2;0;false;false;;;;;;
                                  -150663;1;0;false;false;0;0;0;;;
                                  -150664;2;0;false;false;;;;;;
                                  -150666;3;0;false;false;63;95;191;;;
                                  -150669;3;0;false;false;;;;;;
                                  -150672;1;0;false;false;63;95;191;;;
                                  -150673;1;0;false;false;;;;;;
                                  -150674;7;0;false;false;63;95;191;;;
                                  -150681;1;0;false;false;;;;;;
                                  -150682;3;0;false;false;63;95;191;;;
                                  -150685;1;0;false;false;;;;;;
                                  -150686;8;0;false;false;63;95;191;;;
                                  -150694;1;0;false;false;;;;;;
                                  -150695;8;0;false;false;63;95;191;;;
                                  -150703;1;0;false;false;;;;;;
                                  -150704;9;0;false;false;63;95;191;;;
                                  -150713;1;0;false;false;;;;;;
                                  -150714;4;0;false;false;63;95;191;;;
                                  -150718;1;0;false;false;;;;;;
                                  -150719;8;0;false;false;63;95;191;;;
                                  -150727;1;0;false;false;;;;;;
                                  -150728;3;0;false;false;63;95;191;;;
                                  -150731;1;0;false;false;;;;;;
                                  -150732;10;0;false;false;63;95;191;;;
                                  -150742;1;0;false;false;;;;;;
                                  -150743;7;0;false;false;63;95;191;;;
                                  -150750;1;0;false;false;;;;;;
                                  -150751;3;0;false;false;63;95;191;;;
                                  -150754;1;0;false;false;;;;;;
                                  -150755;8;0;false;false;63;95;191;;;
                                  -150763;3;0;false;false;;;;;;
                                  -150766;1;0;false;false;63;95;191;;;
                                  -150767;1;0;false;false;;;;;;
                                  -150768;3;0;false;false;127;127;159;;;
                                  -150771;3;0;false;false;;;;;;
                                  -150774;1;0;false;false;63;95;191;;;
                                  -150775;3;0;false;false;;;;;;
                                  -150778;1;0;false;false;63;95;191;;;
                                  -150779;1;0;false;false;;;;;;
                                  -150780;7;1;false;false;127;159;191;;;
                                  -150787;5;0;false;false;63;95;191;;;
                                  -150792;1;0;false;false;;;;;;
                                  -150793;6;0;false;false;63;95;191;;;
                                  -150799;1;0;false;false;;;;;;
                                  -150800;2;0;false;false;63;95;191;;;
                                  -150802;1;0;false;false;;;;;;
                                  -150803;3;0;false;false;63;95;191;;;
                                  -150806;1;0;false;false;;;;;;
                                  -150807;5;0;false;false;63;95;191;;;
                                  -150812;1;0;false;false;;;;;;
                                  -150813;9;0;false;false;63;95;191;;;
                                  -150822;1;0;false;false;;;;;;
                                  -150823;8;0;false;false;63;95;191;;;
                                  -150831;1;0;false;false;;;;;;
                                  -150832;2;0;false;false;63;95;191;;;
                                  -150834;1;0;false;false;;;;;;
                                  -150835;3;0;false;false;63;95;191;;;
                                  -150838;1;0;false;false;;;;;;
                                  -150839;8;0;false;false;63;95;191;;;
                                  -150847;1;0;false;false;;;;;;
                                  -150848;3;0;false;false;63;95;191;;;
                                  -150851;3;0;false;false;;;;;;
                                  -150854;1;0;false;false;63;95;191;;;
                                  -150855;1;0;false;false;;;;;;
                                  -150856;7;1;false;false;127;159;191;;;
                                  -150863;3;0;false;false;63;95;191;;;
                                  -150866;1;0;false;false;;;;;;
                                  -150867;6;0;false;false;63;95;191;;;
                                  -150873;1;0;false;false;;;;;;
                                  -150874;2;0;false;false;63;95;191;;;
                                  -150876;1;0;false;false;;;;;;
                                  -150877;3;0;false;false;63;95;191;;;
                                  -150880;1;0;false;false;;;;;;
                                  -150881;4;0;false;false;63;95;191;;;
                                  -150885;1;0;false;false;;;;;;
                                  -150886;9;0;false;false;63;95;191;;;
                                  -150895;1;0;false;false;;;;;;
                                  -150896;8;0;false;false;63;95;191;;;
                                  -150904;1;0;false;false;;;;;;
                                  -150905;2;0;false;false;63;95;191;;;
                                  -150907;1;0;false;false;;;;;;
                                  -150908;3;0;false;false;63;95;191;;;
                                  -150911;1;0;false;false;;;;;;
                                  -150912;8;0;false;false;63;95;191;;;
                                  -150920;1;0;false;false;;;;;;
                                  -150921;3;0;false;false;63;95;191;;;
                                  -150924;4;0;false;false;;;;;;
                                  -150928;1;0;false;false;63;95;191;;;
                                  -150929;1;0;false;false;;;;;;
                                  -150930;8;1;false;false;127;159;191;;;
                                  -150938;8;0;false;false;63;95;191;;;
                                  -150946;1;0;false;false;;;;;;
                                  -150947;3;0;false;false;63;95;191;;;
                                  -150950;1;0;false;false;;;;;;
                                  -150951;2;0;false;false;63;95;191;;;
                                  -150953;1;0;false;false;;;;;;
                                  -150954;3;0;false;false;63;95;191;;;
                                  -150957;1;0;false;false;;;;;;
                                  -150958;4;0;false;false;63;95;191;;;
                                  -150962;1;0;false;false;;;;;;
                                  -150963;7;0;false;false;63;95;191;;;
                                  -150970;1;0;false;false;;;;;;
                                  -150971;5;0;false;false;63;95;191;;;
                                  -150976;1;0;false;false;;;;;;
                                  -150977;3;0;false;false;63;95;191;;;
                                  -150980;1;0;false;false;;;;;;
                                  -150981;3;0;false;false;63;95;191;;;
                                  -150984;3;0;false;false;;;;;;
                                  -150987;1;0;false;false;63;95;191;;;
                                  -150988;1;0;false;false;;;;;;
                                  -150989;11;1;false;false;127;159;191;;;
                                  -151000;12;0;false;false;63;95;191;;;
                                  -151012;1;0;false;false;;;;;;
                                  -151013;4;0;false;false;127;127;159;;;
                                  -151017;3;0;false;false;;;;;;
                                  -151020;1;0;false;false;63;95;191;;;
                                  -151021;4;0;false;false;;;;;;
                                  -151025;4;0;false;false;127;127;159;;;
                                  -151029;21;0;false;false;63;95;191;;;
                                  -151050;1;0;false;false;;;;;;
                                  -151051;1;0;false;false;127;127;159;;;
                                  -151052;1;0;false;false;;;;;;
                                  -151053;2;0;false;false;63;95;191;;;
                                  -151055;1;0;false;false;;;;;;
                                  -151056;3;0;false;false;63;95;191;;;
                                  -151059;1;0;false;false;;;;;;
                                  -151060;8;0;false;false;63;95;191;;;
                                  -151068;1;0;false;false;;;;;;
                                  -151069;3;0;false;false;63;95;191;;;
                                  -151072;1;0;false;false;;;;;;
                                  -151073;4;0;false;false;63;95;191;;;
                                  -151077;1;0;false;false;;;;;;
                                  -151078;8;0;false;false;63;95;191;;;
                                  -151086;5;0;false;false;127;127;159;;;
                                  -151091;3;0;false;false;;;;;;
                                  -151094;1;0;false;false;63;95;191;;;
                                  -151095;4;0;false;false;;;;;;
                                  -151099;4;0;false;false;127;127;159;;;
                                  -151103;27;0;false;false;63;95;191;;;
                                  -151130;1;0;false;false;;;;;;
                                  -151131;1;0;false;false;127;127;159;;;
                                  -151132;1;0;false;false;;;;;;
                                  -151133;2;0;false;false;63;95;191;;;
                                  -151135;1;0;false;false;;;;;;
                                  -151136;3;0;false;false;63;95;191;;;
                                  -151139;1;0;false;false;;;;;;
                                  -151140;6;0;false;false;63;95;191;;;
                                  -151146;1;0;false;false;;;;;;
                                  -151147;4;0;false;false;63;95;191;;;
                                  -151151;1;0;false;false;;;;;;
                                  -151152;3;0;false;false;63;95;191;;;
                                  -151155;1;0;false;false;;;;;;
                                  -151156;6;0;false;false;63;95;191;;;
                                  -151162;1;0;false;false;;;;;;
                                  -151163;4;0;false;false;63;95;191;;;
                                  -151167;1;0;false;false;;;;;;
                                  -151168;7;0;false;false;63;95;191;;;
                                  -151175;1;0;false;false;;;;;;
                                  -151176;3;0;false;false;63;95;191;;;
                                  -151179;1;0;false;false;;;;;;
                                  -151180;8;0;false;false;63;95;191;;;
                                  -151188;5;0;false;false;127;127;159;;;
                                  -151193;3;0;false;false;;;;;;
                                  -151196;1;0;false;false;63;95;191;;;
                                  -151197;1;0;false;false;;;;;;
                                  -151198;5;0;false;false;127;127;159;;;
                                  -151203;3;0;false;false;;;;;;
                                  -151206;1;0;false;false;63;95;191;;;
                                  -151207;1;0;false;false;;;;;;
                                  -151208;11;1;false;false;127;159;191;;;
                                  -151219;24;0;false;false;63;95;191;;;
                                  -151243;1;0;false;false;;;;;;
                                  -151244;4;0;false;false;127;127;159;;;
                                  -151248;3;0;false;false;;;;;;
                                  -151251;1;0;false;false;63;95;191;;;
                                  -151252;3;0;false;false;;;;;;
                                  -151255;4;0;false;false;127;127;159;;;
                                  -151259;19;0;false;false;63;95;191;;;
                                  -151278;1;0;false;false;;;;;;
                                  -151279;4;0;false;false;63;95;191;;;
                                  -151283;1;0;false;false;;;;;;
                                  -151284;5;0;false;false;63;95;191;;;
                                  -151289;1;0;false;false;;;;;;
                                  -151290;6;0;false;false;63;95;191;;;
                                  -151296;1;0;false;false;;;;;;
                                  -151297;3;0;false;false;63;95;191;;;
                                  -151300;1;0;false;false;;;;;;
                                  -151301;3;0;false;false;63;95;191;;;
                                  -151304;1;0;false;false;;;;;;
                                  -151305;7;0;false;false;63;95;191;;;
                                  -151312;1;0;false;false;;;;;;
                                  -151313;3;0;false;false;63;95;191;;;
                                  -151316;1;0;false;false;;;;;;
                                  -151317;6;0;false;false;63;95;191;;;
                                  -151323;1;0;false;false;;;;;;
                                  -151324;7;0;false;false;63;95;191;;;
                                  -151331;5;0;false;false;127;127;159;;;
                                  -151336;4;0;false;false;;;;;;
                                  -151340;1;0;false;false;63;95;191;;;
                                  -151341;1;0;false;false;;;;;;
                                  -151342;5;0;false;false;127;127;159;;;
                                  -151347;3;0;false;false;;;;;;
                                  -151350;1;0;false;false;63;95;191;;;
                                  -151351;1;0;false;false;;;;;;
                                  -151352;7;1;false;false;127;159;191;;;
                                  -151359;3;0;false;false;63;95;191;;;
                                  -151362;3;0;false;false;;;;;;
                                  -151365;2;0;false;false;63;95;191;;;
                                  -151367;2;0;false;false;;;;;;
                                  -151369;6;1;false;false;127;0;85;;;
                                  -151375;1;0;false;false;;;;;;
                                  -151376;9;0;false;false;0;0;0;;;
                                  -151385;1;0;false;false;;;;;;
                                  -151386;14;0;false;false;0;0;0;;;
                                  -151400;3;1;false;false;127;0;85;;;
                                  -151403;1;0;false;false;;;;;;
                                  -151404;6;0;false;false;0;0;0;;;
                                  -151410;1;0;false;false;;;;;;
                                  -151411;3;1;false;false;127;0;85;;;
                                  -151414;1;0;false;false;;;;;;
                                  -151415;4;0;false;false;0;0;0;;;
                                  -151419;1;0;false;false;;;;;;
                                  -151420;1;0;false;false;0;0;0;;;
                                  -151421;3;0;false;false;;;;;;
                                  -151424;14;0;false;false;0;0;0;;;
                                  -151438;4;0;false;false;;;;;;
                                  -151442;3;1;false;false;127;0;85;;;
                                  -151445;1;0;false;false;;;;;;
                                  -151446;13;0;false;false;0;0;0;;;
                                  -151459;1;0;false;false;;;;;;
                                  -151460;1;0;false;false;0;0;0;;;
                                  -151461;1;0;false;false;;;;;;
                                  -151462;15;0;false;false;0;0;0;;;
                                  -151477;4;0;false;false;;;;;;
                                  -151481;2;1;false;false;127;0;85;;;
                                  -151483;1;0;false;false;;;;;;
                                  -151484;6;0;false;false;0;0;0;;;
                                  -151490;1;0;false;false;;;;;;
                                  -151491;1;0;false;false;0;0;0;;;
                                  -151492;1;0;false;false;;;;;;
                                  -151493;1;0;false;false;0;0;0;;;
                                  -151494;1;0;false;false;;;;;;
                                  -151495;2;0;false;false;0;0;0;;;
                                  -151497;1;0;false;false;;;;;;
                                  -151498;5;0;false;false;0;0;0;;;
                                  -151503;1;0;false;false;;;;;;
                                  -151504;2;0;false;false;0;0;0;;;
                                  -151506;1;0;false;false;;;;;;
                                  -151507;13;0;false;false;0;0;0;;;
                                  -151520;1;0;false;false;;;;;;
                                  -151521;2;0;false;false;0;0;0;;;
                                  -151523;1;0;false;false;;;;;;
                                  -151524;3;0;false;false;0;0;0;;;
                                  -151527;1;0;false;false;;;;;;
                                  -151528;1;0;false;false;0;0;0;;;
                                  -151529;1;0;false;false;;;;;;
                                  -151530;1;0;false;false;0;0;0;;;
                                  -151531;1;0;false;false;;;;;;
                                  -151532;2;0;false;false;0;0;0;;;
                                  -151534;1;0;false;false;;;;;;
                                  -151535;3;0;false;false;0;0;0;;;
                                  -151538;1;0;false;false;;;;;;
                                  -151539;2;0;false;false;0;0;0;;;
                                  -151541;1;0;false;false;;;;;;
                                  -151542;13;0;false;false;0;0;0;;;
                                  -151555;1;0;false;false;;;;;;
                                  -151556;2;0;false;false;0;0;0;;;
                                  -151558;1;0;false;false;;;;;;
                                  -151559;5;0;false;false;0;0;0;;;
                                  -151564;1;0;false;false;;;;;;
                                  -151565;1;0;false;false;0;0;0;;;
                                  -151566;1;0;false;false;;;;;;
                                  -151567;4;0;false;false;0;0;0;;;
                                  -151571;1;0;false;false;;;;;;
                                  -151572;1;0;false;false;0;0;0;;;
                                  -151573;4;0;false;false;;;;;;
                                  -151577;35;0;false;false;0;0;0;;;
                                  -151612;3;0;false;false;;;;;;
                                  -151615;1;0;false;false;0;0;0;;;
                                  -151616;3;0;false;false;;;;;;
                                  -151619;3;1;false;false;127;0;85;;;
                                  -151622;1;0;false;false;;;;;;
                                  -151623;9;0;false;false;0;0;0;;;
                                  -151632;1;0;false;false;;;;;;
                                  -151633;1;0;false;false;0;0;0;;;
                                  -151634;1;0;false;false;;;;;;
                                  -151635;31;0;false;false;0;0;0;;;
                                  -151666;3;0;false;false;;;;;;
                                  -151669;3;1;false;false;127;0;85;;;
                                  -151672;1;0;false;false;;;;;;
                                  -151673;7;0;false;false;0;0;0;;;
                                  -151680;1;0;false;false;;;;;;
                                  -151681;1;0;false;false;0;0;0;;;
                                  -151682;1;0;false;false;;;;;;
                                  -151683;29;0;false;false;0;0;0;;;
                                  -151712;3;0;false;false;;;;;;
                                  -151715;9;0;false;false;0;0;0;;;
                                  -151724;1;0;false;false;;;;;;
                                  -151725;5;0;false;false;0;0;0;;;
                                  -151730;3;0;false;false;;;;;;
                                  -151733;3;1;false;false;127;0;85;;;
                                  -151736;1;0;false;false;;;;;;
                                  -151737;1;0;false;false;0;0;0;;;
                                  -151738;1;0;false;false;;;;;;
                                  -151739;1;0;false;false;0;0;0;;;
                                  -151740;1;0;false;false;;;;;;
                                  -151741;9;0;false;false;0;0;0;;;
                                  -151750;1;0;false;false;;;;;;
                                  -151751;1;0;false;false;0;0;0;;;
                                  -151752;1;0;false;false;;;;;;
                                  -151753;11;0;false;false;0;0;0;;;
                                  -151764;3;0;false;false;;;;;;
                                  -151767;3;1;false;false;127;0;85;;;
                                  -151770;1;0;false;false;;;;;;
                                  -151771;6;0;false;false;0;0;0;;;
                                  -151777;1;0;false;false;;;;;;
                                  -151778;1;0;false;false;0;0;0;;;
                                  -151779;1;0;false;false;;;;;;
                                  -151780;8;0;false;false;0;0;0;;;
                                  -151788;1;0;false;false;;;;;;
                                  -151789;1;0;false;false;0;0;0;;;
                                  -151790;1;0;false;false;;;;;;
                                  -151791;2;0;false;false;0;0;0;;;
                                  -151793;1;0;false;false;;;;;;
                                  -151794;1;0;false;false;0;0;0;;;
                                  -151795;1;0;false;false;;;;;;
                                  -151796;10;0;false;false;0;0;0;;;
                                  -151806;1;0;false;false;;;;;;
                                  -151807;1;0;false;false;0;0;0;;;
                                  -151808;1;0;false;false;;;;;;
                                  -151809;2;0;false;false;0;0;0;;;
                                  -151811;3;0;false;false;;;;;;
                                  -151814;3;1;false;false;127;0;85;;;
                                  -151817;1;0;false;false;;;;;;
                                  -151818;4;0;false;false;0;0;0;;;
                                  -151822;1;0;false;false;;;;;;
                                  -151823;1;0;false;false;0;0;0;;;
                                  -151824;1;0;false;false;;;;;;
                                  -151825;11;0;false;false;0;0;0;;;
                                  -151836;1;0;false;false;;;;;;
                                  -151837;5;0;false;false;0;0;0;;;
                                  -151842;1;0;false;false;;;;;;
                                  -151843;1;0;false;false;0;0;0;;;
                                  -151844;1;0;false;false;;;;;;
                                  -151845;2;0;false;false;0;0;0;;;
                                  -151847;3;0;false;false;;;;;;
                                  -151850;3;1;false;false;127;0;85;;;
                                  -151853;1;0;false;false;;;;;;
                                  -151854;1;0;false;false;0;0;0;;;
                                  -151855;3;1;false;false;127;0;85;;;
                                  -151858;1;0;false;false;;;;;;
                                  -151859;1;0;false;false;0;0;0;;;
                                  -151860;1;0;false;false;;;;;;
                                  -151861;1;0;false;false;0;0;0;;;
                                  -151862;1;0;false;false;;;;;;
                                  -151863;10;0;false;false;0;0;0;;;
                                  -151873;1;0;false;false;;;;;;
                                  -151874;1;0;false;false;0;0;0;;;
                                  -151875;1;0;false;false;;;;;;
                                  -151876;2;0;false;false;0;0;0;;;
                                  -151878;1;0;false;false;;;;;;
                                  -151879;8;0;false;false;0;0;0;;;
                                  -151887;1;0;false;false;;;;;;
                                  -151888;4;0;false;false;0;0;0;;;
                                  -151892;1;0;false;false;;;;;;
                                  -151893;1;0;false;false;0;0;0;;;
                                  -151894;4;0;false;false;;;;;;
                                  -151898;3;1;false;false;127;0;85;;;
                                  -151901;1;0;false;false;;;;;;
                                  -151902;10;0;false;false;0;0;0;;;
                                  -151912;1;0;false;false;;;;;;
                                  -151913;1;0;false;false;0;0;0;;;
                                  -151914;1;0;false;false;;;;;;
                                  -151915;27;0;false;false;0;0;0;;;
                                  -151942;4;0;false;false;;;;;;
                                  -151946;6;0;false;false;0;0;0;;;
                                  -151952;1;0;false;false;;;;;;
                                  -151953;4;0;false;false;0;0;0;;;
                                  -151957;1;0;false;false;;;;;;
                                  -151958;1;0;false;false;0;0;0;;;
                                  -151959;1;0;false;false;;;;;;
                                  -151960;19;0;false;false;0;0;0;;;
                                  -151979;4;0;false;false;;;;;;
                                  -151983;10;0;false;false;0;0;0;;;
                                  -151993;1;0;false;false;;;;;;
                                  -151994;6;0;false;false;0;0;0;;;
                                  -152000;1;0;false;false;;;;;;
                                  -152001;1;0;false;false;0;0;0;;;
                                  -152002;1;0;false;false;;;;;;
                                  -152003;28;0;false;false;0;0;0;;;
                                  -152031;1;0;false;false;;;;;;
                                  -152032;12;0;false;false;0;0;0;;;
                                  -152044;4;0;false;false;;;;;;
                                  -152048;2;1;false;false;127;0;85;;;
                                  -152050;1;0;false;false;;;;;;
                                  -152051;2;0;false;false;0;0;0;;;
                                  -152053;1;0;false;false;;;;;;
                                  -152054;2;0;false;false;0;0;0;;;
                                  -152056;1;0;false;false;;;;;;
                                  -152057;9;0;false;false;0;0;0;;;
                                  -152066;1;0;false;false;;;;;;
                                  -152067;2;0;false;false;0;0;0;;;
                                  -152069;1;0;false;false;;;;;;
                                  -152070;1;0;false;false;0;0;0;;;
                                  -152071;1;0;false;false;;;;;;
                                  -152072;2;0;false;false;0;0;0;;;
                                  -152074;1;0;false;false;;;;;;
                                  -152075;8;0;false;false;0;0;0;;;
                                  -152083;1;0;false;false;;;;;;
                                  -152084;1;0;false;false;0;0;0;;;
                                  -152085;5;0;false;false;;;;;;
                                  -152090;4;0;false;false;0;0;0;;;
                                  -152094;1;0;false;false;;;;;;
                                  -152095;1;0;false;false;0;0;0;;;
                                  -152096;1;0;false;false;;;;;;
                                  -152097;22;0;false;false;0;0;0;;;
                                  -152119;1;0;false;false;;;;;;
                                  -152120;1;0;false;false;0;0;0;;;
                                  -152121;1;0;false;false;;;;;;
                                  -152122;11;0;false;false;0;0;0;;;
                                  -152133;1;0;false;false;;;;;;
                                  -152134;3;0;false;false;0;0;0;;;
                                  -152137;1;0;false;false;;;;;;
                                  -152138;1;0;false;false;0;0;0;;;
                                  -152139;1;0;false;false;;;;;;
                                  -152140;12;0;false;false;0;0;0;;;
                                  -152152;4;0;false;false;;;;;;
                                  -152156;1;0;false;false;0;0;0;;;
                                  -152157;1;0;false;false;;;;;;
                                  -152158;4;1;false;false;127;0;85;;;
                                  -152162;1;0;false;false;;;;;;
                                  -152163;2;1;false;false;127;0;85;;;
                                  -152165;1;0;false;false;;;;;;
                                  -152166;2;0;false;false;0;0;0;;;
                                  -152168;1;0;false;false;;;;;;
                                  -152169;2;0;false;false;0;0;0;;;
                                  -152171;1;0;false;false;;;;;;
                                  -152172;10;0;false;false;0;0;0;;;
                                  -152182;1;0;false;false;;;;;;
                                  -152183;1;0;false;false;0;0;0;;;
                                  -152184;5;0;false;false;;;;;;
                                  -152189;4;0;false;false;0;0;0;;;
                                  -152193;1;0;false;false;;;;;;
                                  -152194;1;0;false;false;0;0;0;;;
                                  -152195;1;0;false;false;;;;;;
                                  -152196;22;0;false;false;0;0;0;;;
                                  -152218;1;0;false;false;;;;;;
                                  -152219;1;0;false;false;0;0;0;;;
                                  -152220;1;0;false;false;;;;;;
                                  -152221;11;0;false;false;0;0;0;;;
                                  -152232;1;0;false;false;;;;;;
                                  -152233;15;0;false;false;0;0;0;;;
                                  -152248;4;0;false;false;;;;;;
                                  -152252;1;0;false;false;0;0;0;;;
                                  -152253;1;0;false;false;;;;;;
                                  -152254;4;1;false;false;127;0;85;;;
                                  -152258;1;0;false;false;;;;;;
                                  -152259;2;1;false;false;127;0;85;;;
                                  -152261;1;0;false;false;;;;;;
                                  -152262;2;0;false;false;0;0;0;;;
                                  -152264;1;0;false;false;;;;;;
                                  -152265;2;0;false;false;0;0;0;;;
                                  -152267;1;0;false;false;;;;;;
                                  -152268;8;0;false;false;0;0;0;;;
                                  -152276;1;0;false;false;;;;;;
                                  -152277;1;0;false;false;0;0;0;;;
                                  -152278;5;0;false;false;;;;;;
                                  -152283;4;0;false;false;0;0;0;;;
                                  -152287;1;0;false;false;;;;;;
                                  -152288;1;0;false;false;0;0;0;;;
                                  -152289;1;0;false;false;;;;;;
                                  -152290;19;0;false;false;0;0;0;;;
                                  -152309;1;0;false;false;;;;;;
                                  -152310;3;0;false;false;0;0;0;;;
                                  -152313;1;0;false;false;;;;;;
                                  -152314;1;0;false;false;0;0;0;;;
                                  -152315;1;0;false;false;;;;;;
                                  -152316;12;0;false;false;0;0;0;;;
                                  -152328;4;0;false;false;;;;;;
                                  -152332;1;0;false;false;0;0;0;;;
                                  -152333;1;0;false;false;;;;;;
                                  -152334;4;1;false;false;127;0;85;;;
                                  -152338;1;0;false;false;;;;;;
                                  -152339;1;0;false;false;0;0;0;;;
                                  -152340;5;0;false;false;;;;;;
                                  -152345;4;0;false;false;0;0;0;;;
                                  -152349;1;0;false;false;;;;;;
                                  -152350;1;0;false;false;0;0;0;;;
                                  -152351;1;0;false;false;;;;;;
                                  -152352;24;0;false;false;0;0;0;;;
                                  -152376;4;0;false;false;;;;;;
                                  -152380;1;0;false;false;0;0;0;;;
                                  -152381;4;0;false;false;;;;;;
                                  -152385;4;0;false;false;0;0;0;;;
                                  -152389;1;0;false;false;;;;;;
                                  -152390;1;0;false;false;0;0;0;;;
                                  -152391;1;0;false;false;;;;;;
                                  -152392;8;0;false;false;0;0;0;;;
                                  -152400;1;0;false;false;;;;;;
                                  -152401;6;0;false;false;0;0;0;;;
                                  -152407;1;0;false;false;;;;;;
                                  -152408;8;0;false;false;0;0;0;;;
                                  -152416;4;0;false;false;;;;;;
                                  -152420;5;0;false;false;0;0;0;;;
                                  -152425;1;0;false;false;;;;;;
                                  -152426;1;0;false;false;0;0;0;;;
                                  -152427;1;0;false;false;;;;;;
                                  -152428;8;0;false;false;0;0;0;;;
                                  -152436;1;0;false;false;;;;;;
                                  -152437;7;0;false;false;0;0;0;;;
                                  -152444;1;0;false;false;;;;;;
                                  -152445;6;0;false;false;0;0;0;;;
                                  -152451;1;0;false;false;;;;;;
                                  -152452;1;0;false;false;0;0;0;;;
                                  -152453;1;0;false;false;;;;;;
                                  -152454;12;0;false;false;0;0;0;;;
                                  -152466;4;0;false;false;;;;;;
                                  -152470;35;0;false;false;0;0;0;;;
                                  -152505;3;0;false;false;;;;;;
                                  -152508;1;0;false;false;0;0;0;;;
                                  -152509;3;0;false;false;;;;;;
                                  -152512;4;0;false;false;0;0;0;;;
                                  -152516;1;0;false;false;;;;;;
                                  -152517;1;0;false;false;0;0;0;;;
                                  -152518;1;0;false;false;;;;;;
                                  -152519;3;1;false;false;127;0;85;;;
                                  -152522;1;0;false;false;;;;;;
                                  -152523;9;0;false;false;0;0;0;;;
                                  -152532;1;0;false;false;;;;;;
                                  -152533;6;0;false;false;0;0;0;;;
                                  -152539;1;0;false;false;;;;;;
                                  -152540;2;0;false;false;0;0;0;;;
                                  -152542;1;0;false;false;;;;;;
                                  -152543;11;0;false;false;0;0;0;;;
                                  -152554;1;0;false;false;;;;;;
                                  -152555;8;0;false;false;0;0;0;;;
                                  -152563;3;0;false;false;;;;;;
                                  -152566;6;0;false;false;0;0;0;;;
                                  -152572;1;0;false;false;;;;;;
                                  -152573;2;0;false;false;0;0;0;;;
                                  -152575;1;0;false;false;;;;;;
                                  -152576;10;0;false;false;0;0;0;;;
                                  -152586;1;0;false;false;;;;;;
                                  -152587;1;0;false;false;0;0;0;;;
                                  -152588;1;0;false;false;;;;;;
                                  -152589;23;0;false;false;0;0;0;;;
                                  -152612;3;0;false;false;;;;;;
                                  -152615;6;0;false;false;0;0;0;;;
                                  -152621;1;0;false;false;;;;;;
                                  -152622;2;0;false;false;0;0;0;;;
                                  -152624;1;0;false;false;;;;;;
                                  -152625;21;0;false;false;0;0;0;;;
                                  -152646;3;0;false;false;;;;;;
                                  -152649;6;1;false;false;127;0;85;;;
                                  -152655;1;0;false;false;;;;;;
                                  -152656;5;0;false;false;0;0;0;;;
                                  -152661;2;0;false;false;;;;;;
                                  -152663;1;0;false;false;0;0;0;;;
                                  -152664;2;0;false;false;;;;;;
                                  -152666;3;0;false;false;63;95;191;;;
                                  -152669;3;0;false;false;;;;;;
                                  -152672;1;0;false;false;63;95;191;;;
                                  -152673;1;0;false;false;;;;;;
                                  -152674;7;0;false;false;63;95;191;;;
                                  -152681;1;0;false;false;;;;;;
                                  -152682;3;0;false;false;63;95;191;;;
                                  -152685;1;0;false;false;;;;;;
                                  -152686;6;0;false;false;63;95;191;;;
                                  -152692;1;0;false;false;;;;;;
                                  -152693;7;0;false;false;63;95;191;;;
                                  -152700;1;0;false;false;;;;;;
                                  -152701;8;0;false;false;63;95;191;;;
                                  -152709;1;0;false;false;;;;;;
                                  -152710;2;0;false;false;63;95;191;;;
                                  -152712;1;0;false;false;;;;;;
                                  -152713;5;0;false;false;63;95;191;;;
                                  -152718;1;0;false;false;;;;;;
                                  -152719;3;0;false;false;63;95;191;;;
                                  -152722;1;0;false;false;;;;;;
                                  -152723;6;0;false;false;63;95;191;;;
                                  -152729;1;0;false;false;;;;;;
                                  -152730;11;0;false;false;63;95;191;;;
                                  -152741;3;0;false;false;;;;;;
                                  -152744;1;0;false;false;63;95;191;;;
                                  -152745;1;0;false;false;;;;;;
                                  -152746;3;0;false;false;127;127;159;;;
                                  -152749;3;0;false;false;;;;;;
                                  -152752;1;0;false;false;63;95;191;;;
                                  -152753;3;0;false;false;;;;;;
                                  -152756;1;0;false;false;63;95;191;;;
                                  -152757;1;0;false;false;;;;;;
                                  -152758;7;1;false;false;127;159;191;;;
                                  -152765;5;0;false;false;63;95;191;;;
                                  -152770;1;0;false;false;;;;;;
                                  -152771;6;0;false;false;63;95;191;;;
                                  -152777;1;0;false;false;;;;;;
                                  -152778;2;0;false;false;63;95;191;;;
                                  -152780;1;0;false;false;;;;;;
                                  -152781;3;0;false;false;63;95;191;;;
                                  -152784;1;0;false;false;;;;;;
                                  -152785;5;0;false;false;63;95;191;;;
                                  -152790;1;0;false;false;;;;;;
                                  -152791;9;0;false;false;63;95;191;;;
                                  -152800;1;0;false;false;;;;;;
                                  -152801;2;0;false;false;63;95;191;;;
                                  -152803;1;0;false;false;;;;;;
                                  -152804;3;0;false;false;63;95;191;;;
                                  -152807;1;0;false;false;;;;;;
                                  -152808;8;0;false;false;63;95;191;;;
                                  -152816;1;0;false;false;;;;;;
                                  -152817;6;0;false;false;63;95;191;;;
                                  -152823;3;0;false;false;;;;;;
                                  -152826;1;0;false;false;63;95;191;;;
                                  -152827;1;0;false;false;;;;;;
                                  -152828;7;1;false;false;127;159;191;;;
                                  -152835;6;0;false;false;63;95;191;;;
                                  -152841;1;0;false;false;;;;;;
                                  -152842;6;0;false;false;63;95;191;;;
                                  -152848;1;0;false;false;;;;;;
                                  -152849;2;0;false;false;63;95;191;;;
                                  -152851;1;0;false;false;;;;;;
                                  -152852;10;0;false;false;63;95;191;;;
                                  -152862;1;0;false;false;;;;;;
                                  -152863;2;0;false;false;63;95;191;;;
                                  -152865;1;0;false;false;;;;;;
                                  -152866;6;0;false;false;63;95;191;;;
                                  -152872;4;0;false;false;;;;;;
                                  -152876;1;0;false;false;63;95;191;;;
                                  -152877;1;0;false;false;;;;;;
                                  -152878;8;1;false;false;127;159;191;;;
                                  -152886;6;0;false;false;63;95;191;;;
                                  -152892;1;0;false;false;;;;;;
                                  -152893;7;0;false;false;63;95;191;;;
                                  -152900;1;0;false;false;;;;;;
                                  -152901;8;0;false;false;63;95;191;;;
                                  -152909;1;0;false;false;;;;;;
                                  -152910;2;0;false;false;63;95;191;;;
                                  -152912;1;0;false;false;;;;;;
                                  -152913;5;0;false;false;63;95;191;;;
                                  -152918;1;0;false;false;;;;;;
                                  -152919;3;0;false;false;63;95;191;;;
                                  -152922;1;0;false;false;;;;;;
                                  -152923;9;0;false;false;63;95;191;;;
                                  -152932;1;0;false;false;;;;;;
                                  -152933;6;0;false;false;63;95;191;;;
                                  -152939;1;0;false;false;;;;;;
                                  -152940;11;0;false;false;63;95;191;;;
                                  -152951;3;0;false;false;;;;;;
                                  -152954;1;0;false;false;63;95;191;;;
                                  -152955;1;0;false;false;;;;;;
                                  -152956;11;1;false;false;127;159;191;;;
                                  -152967;12;0;false;false;63;95;191;;;
                                  -152979;1;0;false;false;;;;;;
                                  -152980;4;0;false;false;127;127;159;;;
                                  -152984;3;0;false;false;;;;;;
                                  -152987;1;0;false;false;63;95;191;;;
                                  -152988;4;0;false;false;;;;;;
                                  -152992;4;0;false;false;127;127;159;;;
                                  -152996;21;0;false;false;63;95;191;;;
                                  -153017;1;0;false;false;;;;;;
                                  -153018;1;0;false;false;127;127;159;;;
                                  -153019;1;0;false;false;;;;;;
                                  -153020;2;0;false;false;63;95;191;;;
                                  -153022;1;0;false;false;;;;;;
                                  -153023;3;0;false;false;63;95;191;;;
                                  -153026;1;0;false;false;;;;;;
                                  -153027;8;0;false;false;63;95;191;;;
                                  -153035;1;0;false;false;;;;;;
                                  -153036;3;0;false;false;63;95;191;;;
                                  -153039;1;0;false;false;;;;;;
                                  -153040;4;0;false;false;63;95;191;;;
                                  -153044;1;0;false;false;;;;;;
                                  -153045;8;0;false;false;63;95;191;;;
                                  -153053;5;0;false;false;127;127;159;;;
                                  -153058;3;0;false;false;;;;;;
                                  -153061;1;0;false;false;63;95;191;;;
                                  -153062;4;0;false;false;;;;;;
                                  -153066;4;0;false;false;127;127;159;;;
                                  -153070;27;0;false;false;63;95;191;;;
                                  -153097;1;0;false;false;;;;;;
                                  -153098;1;0;false;false;127;127;159;;;
                                  -153099;1;0;false;false;;;;;;
                                  -153100;2;0;false;false;63;95;191;;;
                                  -153102;1;0;false;false;;;;;;
                                  -153103;3;0;false;false;63;95;191;;;
                                  -153106;1;0;false;false;;;;;;
                                  -153107;6;0;false;false;63;95;191;;;
                                  -153113;1;0;false;false;;;;;;
                                  -153114;4;0;false;false;63;95;191;;;
                                  -153118;1;0;false;false;;;;;;
                                  -153119;3;0;false;false;63;95;191;;;
                                  -153122;1;0;false;false;;;;;;
                                  -153123;6;0;false;false;63;95;191;;;
                                  -153129;1;0;false;false;;;;;;
                                  -153130;4;0;false;false;63;95;191;;;
                                  -153134;1;0;false;false;;;;;;
                                  -153135;7;0;false;false;63;95;191;;;
                                  -153142;1;0;false;false;;;;;;
                                  -153143;3;0;false;false;63;95;191;;;
                                  -153146;1;0;false;false;;;;;;
                                  -153147;8;0;false;false;63;95;191;;;
                                  -153155;5;0;false;false;127;127;159;;;
                                  -153160;3;0;false;false;;;;;;
                                  -153163;1;0;false;false;63;95;191;;;
                                  -153164;1;0;false;false;;;;;;
                                  -153165;5;0;false;false;127;127;159;;;
                                  -153170;3;0;false;false;;;;;;
                                  -153173;1;0;false;false;63;95;191;;;
                                  -153174;1;0;false;false;;;;;;
                                  -153175;11;1;false;false;127;159;191;;;
                                  -153186;24;0;false;false;63;95;191;;;
                                  -153210;1;0;false;false;;;;;;
                                  -153211;4;0;false;false;127;127;159;;;
                                  -153215;3;0;false;false;;;;;;
                                  -153218;1;0;false;false;63;95;191;;;
                                  -153219;3;0;false;false;;;;;;
                                  -153222;4;0;false;false;127;127;159;;;
                                  -153226;19;0;false;false;63;95;191;;;
                                  -153245;1;0;false;false;;;;;;
                                  -153246;4;0;false;false;63;95;191;;;
                                  -153250;1;0;false;false;;;;;;
                                  -153251;5;0;false;false;63;95;191;;;
                                  -153256;1;0;false;false;;;;;;
                                  -153257;6;0;false;false;63;95;191;;;
                                  -153263;1;0;false;false;;;;;;
                                  -153264;6;0;false;false;63;95;191;;;
                                  -153270;1;0;false;false;;;;;;
                                  -153271;3;0;false;false;63;95;191;;;
                                  -153274;1;0;false;false;;;;;;
                                  -153275;7;0;false;false;63;95;191;;;
                                  -153282;1;0;false;false;;;;;;
                                  -153283;3;0;false;false;63;95;191;;;
                                  -153286;1;0;false;false;;;;;;
                                  -153287;6;0;false;false;63;95;191;;;
                                  -153293;1;0;false;false;;;;;;
                                  -153294;7;0;false;false;63;95;191;;;
                                  -153301;5;0;false;false;127;127;159;;;
                                  -153306;4;0;false;false;;;;;;
                                  -153310;1;0;false;false;63;95;191;;;
                                  -153311;1;0;false;false;;;;;;
                                  -153312;5;0;false;false;127;127;159;;;
                                  -153317;3;0;false;false;;;;;;
                                  -153320;2;0;false;false;63;95;191;;;
                                  -153322;2;0;false;false;;;;;;
                                  -153324;6;1;false;false;127;0;85;;;
                                  -153330;1;0;false;false;;;;;;
                                  -153331;6;0;false;false;0;0;0;;;
                                  -153337;1;0;false;false;;;;;;
                                  -153338;13;0;false;false;0;0;0;;;
                                  -153351;3;1;false;false;127;0;85;;;
                                  -153354;1;0;false;false;;;;;;
                                  -153355;6;0;false;false;0;0;0;;;
                                  -153361;1;0;false;false;;;;;;
                                  -153362;3;1;false;false;127;0;85;;;
                                  -153365;1;0;false;false;;;;;;
                                  -153366;7;0;false;false;0;0;0;;;
                                  -153373;1;0;false;false;;;;;;
                                  -153374;1;0;false;false;0;0;0;;;
                                  -153375;3;0;false;false;;;;;;
                                  -153378;14;0;false;false;0;0;0;;;
                                  -153392;3;0;false;false;;;;;;
                                  -153395;3;1;false;false;127;0;85;;;
                                  -153398;1;0;false;false;;;;;;
                                  -153399;13;0;false;false;0;0;0;;;
                                  -153412;1;0;false;false;;;;;;
                                  -153413;1;0;false;false;0;0;0;;;
                                  -153414;1;0;false;false;;;;;;
                                  -153415;15;0;false;false;0;0;0;;;
                                  -153430;3;0;false;false;;;;;;
                                  -153433;3;1;false;false;127;0;85;;;
                                  -153436;1;0;false;false;;;;;;
                                  -153437;3;0;false;false;0;0;0;;;
                                  -153440;1;0;false;false;;;;;;
                                  -153441;1;0;false;false;0;0;0;;;
                                  -153442;1;0;false;false;;;;;;
                                  -153443;5;0;false;false;0;0;0;;;
                                  -153448;1;0;false;false;;;;;;
                                  -153449;1;0;false;false;0;0;0;;;
                                  -153450;1;0;false;false;;;;;;
                                  -153451;7;0;false;false;0;0;0;;;
                                  -153458;6;0;false;false;;;;;;
                                  -153464;2;1;false;false;127;0;85;;;
                                  -153466;1;0;false;false;;;;;;
                                  -153467;6;0;false;false;0;0;0;;;
                                  -153473;1;0;false;false;;;;;;
                                  -153474;1;0;false;false;0;0;0;;;
                                  -153475;1;0;false;false;;;;;;
                                  -153476;3;0;false;false;0;0;0;;;
                                  -153479;1;0;false;false;;;;;;
                                  -153480;2;0;false;false;0;0;0;;;
                                  -153482;1;0;false;false;;;;;;
                                  -153483;5;0;false;false;0;0;0;;;
                                  -153488;1;0;false;false;;;;;;
                                  -153489;1;0;false;false;0;0;0;;;
                                  -153490;1;0;false;false;;;;;;
                                  -153491;1;0;false;false;0;0;0;;;
                                  -153492;1;0;false;false;;;;;;
                                  -153493;2;0;false;false;0;0;0;;;
                                  -153495;1;0;false;false;;;;;;
                                  -153496;3;0;false;false;0;0;0;;;
                                  -153499;1;0;false;false;;;;;;
                                  -153500;1;0;false;false;0;0;0;;;
                                  -153501;1;0;false;false;;;;;;
                                  -153502;14;0;false;false;0;0;0;;;
                                  -153516;1;0;false;false;;;;;;
                                  -153517;1;0;false;false;0;0;0;;;
                                  -153518;4;0;false;false;;;;;;
                                  -153522;35;0;false;false;0;0;0;;;
                                  -153557;3;0;false;false;;;;;;
                                  -153560;1;0;false;false;0;0;0;;;
                                  -153561;4;0;false;false;;;;;;
                                  -153565;6;1;false;false;127;0;85;;;
                                  -153571;1;0;false;false;;;;;;
                                  -153572;27;0;false;false;0;0;0;;;
                                  -153599;1;0;false;false;;;;;;
                                  -153600;8;0;false;false;0;0;0;;;
                                  -153608;2;0;false;false;;;;;;
                                  -153610;1;0;false;false;0;0;0;;;
                                  -153611;2;0;false;false;;;;;;
                                  -153613;3;0;false;false;63;95;191;;;
                                  -153616;3;0;false;false;;;;;;
                                  -153619;1;0;false;false;63;95;191;;;
                                  -153620;1;0;false;false;;;;;;
                                  -153621;7;0;false;false;63;95;191;;;
                                  -153628;1;0;false;false;;;;;;
                                  -153629;3;0;false;false;63;95;191;;;
                                  -153632;1;0;false;false;;;;;;
                                  -153633;7;0;false;false;63;95;191;;;
                                  -153640;1;0;false;false;;;;;;
                                  -153641;6;0;false;false;63;95;191;;;
                                  -153647;1;0;false;false;;;;;;
                                  -153648;2;0;false;false;63;95;191;;;
                                  -153650;1;0;false;false;;;;;;
                                  -153651;10;0;false;false;63;95;191;;;
                                  -153661;1;0;false;false;;;;;;
                                  -153662;4;0;false;false;63;95;191;;;
                                  -153666;1;0;false;false;;;;;;
                                  -153667;3;0;false;false;63;95;191;;;
                                  -153670;1;0;false;false;;;;;;
                                  -153671;8;0;false;false;63;95;191;;;
                                  -153679;1;0;false;false;;;;;;
                                  -153680;2;0;false;false;63;95;191;;;
                                  -153682;1;0;false;false;;;;;;
                                  -153683;7;0;false;false;63;95;191;;;
                                  -153690;1;0;false;false;;;;;;
                                  -153691;2;0;false;false;63;95;191;;;
                                  -153693;1;0;false;false;;;;;;
                                  -153694;8;0;false;false;63;95;191;;;
                                  -153702;3;0;false;false;;;;;;
                                  -153705;1;0;false;false;63;95;191;;;
                                  -153706;4;0;false;false;;;;;;
                                  -153710;1;0;false;false;63;95;191;;;
                                  -153711;1;0;false;false;;;;;;
                                  -153712;8;1;false;false;127;159;191;;;
                                  -153720;3;0;false;false;63;95;191;;;
                                  -153723;1;0;false;false;;;;;;
                                  -153724;4;0;false;false;63;95;191;;;
                                  -153728;1;0;false;false;;;;;;
                                  -153729;5;0;false;false;63;95;191;;;
                                  -153734;3;0;false;false;;;;;;
                                  -153737;1;0;false;false;63;95;191;;;
                                  -153738;3;0;false;false;;;;;;
                                  -153741;1;0;false;false;63;95;191;;;
                                  -153742;1;0;false;false;;;;;;
                                  -153743;11;1;false;false;127;159;191;;;
                                  -153754;12;0;false;false;63;95;191;;;
                                  -153766;1;0;false;false;;;;;;
                                  -153767;4;0;false;false;127;127;159;;;
                                  -153771;3;0;false;false;;;;;;
                                  -153774;1;0;false;false;63;95;191;;;
                                  -153775;4;0;false;false;;;;;;
                                  -153779;4;0;false;false;127;127;159;;;
                                  -153783;21;0;false;false;63;95;191;;;
                                  -153804;1;0;false;false;;;;;;
                                  -153805;1;0;false;false;127;127;159;;;
                                  -153806;1;0;false;false;;;;;;
                                  -153807;2;0;false;false;63;95;191;;;
                                  -153809;1;0;false;false;;;;;;
                                  -153810;3;0;false;false;63;95;191;;;
                                  -153813;1;0;false;false;;;;;;
                                  -153814;8;0;false;false;63;95;191;;;
                                  -153822;1;0;false;false;;;;;;
                                  -153823;3;0;false;false;63;95;191;;;
                                  -153826;1;0;false;false;;;;;;
                                  -153827;4;0;false;false;63;95;191;;;
                                  -153831;1;0;false;false;;;;;;
                                  -153832;8;0;false;false;63;95;191;;;
                                  -153840;5;0;false;false;127;127;159;;;
                                  -153845;3;0;false;false;;;;;;
                                  -153848;1;0;false;false;63;95;191;;;
                                  -153849;4;0;false;false;;;;;;
                                  -153853;4;0;false;false;127;127;159;;;
                                  -153857;27;0;false;false;63;95;191;;;
                                  -153884;1;0;false;false;;;;;;
                                  -153885;1;0;false;false;127;127;159;;;
                                  -153886;1;0;false;false;;;;;;
                                  -153887;2;0;false;false;63;95;191;;;
                                  -153889;1;0;false;false;;;;;;
                                  -153890;3;0;false;false;63;95;191;;;
                                  -153893;1;0;false;false;;;;;;
                                  -153894;6;0;false;false;63;95;191;;;
                                  -153900;1;0;false;false;;;;;;
                                  -153901;4;0;false;false;63;95;191;;;
                                  -153905;1;0;false;false;;;;;;
                                  -153906;3;0;false;false;63;95;191;;;
                                  -153909;1;0;false;false;;;;;;
                                  -153910;6;0;false;false;63;95;191;;;
                                  -153916;1;0;false;false;;;;;;
                                  -153917;4;0;false;false;63;95;191;;;
                                  -153921;1;0;false;false;;;;;;
                                  -153922;7;0;false;false;63;95;191;;;
                                  -153929;1;0;false;false;;;;;;
                                  -153930;3;0;false;false;63;95;191;;;
                                  -153933;1;0;false;false;;;;;;
                                  -153934;8;0;false;false;63;95;191;;;
                                  -153942;5;0;false;false;127;127;159;;;
                                  -153947;3;0;false;false;;;;;;
                                  -153950;1;0;false;false;63;95;191;;;
                                  -153951;1;0;false;false;;;;;;
                                  -153952;5;0;false;false;127;127;159;;;
                                  -153957;3;0;false;false;;;;;;
                                  -153960;2;0;false;false;63;95;191;;;
                                  -153962;2;0;false;false;;;;;;
                                  -153964;6;1;false;false;127;0;85;;;
                                  -153970;1;0;false;false;;;;;;
                                  -153971;3;1;false;false;127;0;85;;;
                                  -153974;1;0;false;false;;;;;;
                                  -153975;14;0;false;false;0;0;0;;;
                                  -153989;1;0;false;false;;;;;;
                                  -153990;1;0;false;false;0;0;0;;;
                                  -153991;3;0;false;false;;;;;;
                                  -153994;14;0;false;false;0;0;0;;;
                                  -154008;6;0;false;false;;;;;;
                                  -154014;6;1;false;false;127;0;85;;;
                                  -154020;1;0;false;false;;;;;;
                                  -154021;10;0;false;false;0;0;0;;;
                                  -154031;2;0;false;false;;;;;;
                                  -154033;1;0;false;false;0;0;0;;;
                                  -154034;2;0;false;false;;;;;;
                                  -154036;3;0;false;false;63;95;191;;;
                                  -154039;3;0;false;false;;;;;;
                                  -154042;1;0;false;false;63;95;191;;;
                                  -154043;1;0;false;false;;;;;;
                                  -154044;4;0;false;false;63;95;191;;;
                                  -154048;1;0;false;false;;;;;;
                                  -154049;3;0;false;false;63;95;191;;;
                                  -154052;1;0;false;false;;;;;;
                                  -154053;3;0;false;false;63;95;191;;;
                                  -154056;1;0;false;false;;;;;;
                                  -154057;6;0;false;false;63;95;191;;;
                                  -154063;2;0;false;false;;;;;;
                                  -154065;3;0;false;false;63;95;191;;;
                                  -154068;1;0;false;false;;;;;;
                                  -154069;3;0;false;false;63;95;191;;;
                                  -154072;1;0;false;false;;;;;;
                                  -154073;5;0;false;false;63;95;191;;;
                                  -154078;1;0;false;false;;;;;;
                                  -154079;2;0;false;false;63;95;191;;;
                                  -154081;1;0;false;false;;;;;;
                                  -154082;3;0;false;false;63;95;191;;;
                                  -154085;1;0;false;false;;;;;;
                                  -154086;5;0;false;false;63;95;191;;;
                                  -154091;1;0;false;false;;;;;;
                                  -154092;2;0;false;false;63;95;191;;;
                                  -154094;1;0;false;false;;;;;;
                                  -154095;3;0;false;false;63;95;191;;;
                                  -154098;1;0;false;false;;;;;;
                                  -154099;5;0;false;false;63;95;191;;;
                                  -154104;1;0;false;false;;;;;;
                                  -154105;7;0;false;false;63;95;191;;;
                                  -154112;1;0;false;false;;;;;;
                                  -154113;4;0;false;false;63;95;191;;;
                                  -154117;1;0;false;false;;;;;;
                                  -154118;4;0;false;false;63;95;191;;;
                                  -154122;3;0;false;false;;;;;;
                                  -154125;1;0;false;false;63;95;191;;;
                                  -154126;1;0;false;false;;;;;;
                                  -154127;2;0;false;false;63;95;191;;;
                                  -154129;1;0;false;false;;;;;;
                                  -154130;9;0;false;false;63;95;191;;;
                                  -154139;1;0;false;false;;;;;;
                                  -154140;2;0;false;false;63;95;191;;;
                                  -154142;1;0;false;false;;;;;;
                                  -154143;3;0;false;false;63;95;191;;;
                                  -154146;1;0;false;false;;;;;;
                                  -154147;3;0;false;false;63;95;191;;;
                                  -154150;1;0;false;false;;;;;;
                                  -154151;2;0;false;false;63;95;191;;;
                                  -154153;1;0;false;false;;;;;;
                                  -154154;3;0;false;false;63;95;191;;;
                                  -154157;1;0;false;false;;;;;;
                                  -154158;6;0;false;false;63;95;191;;;
                                  -154164;1;0;false;false;;;;;;
                                  -154165;2;0;false;false;63;95;191;;;
                                  -154167;1;0;false;false;;;;;;
                                  -154168;3;0;false;false;63;95;191;;;
                                  -154171;1;0;false;false;;;;;;
                                  -154172;7;0;false;false;63;95;191;;;
                                  -154179;1;0;false;false;;;;;;
                                  -154180;9;0;false;false;63;95;191;;;
                                  -154189;1;0;false;false;;;;;;
                                  -154190;7;0;false;false;63;95;191;;;
                                  -154197;1;0;false;false;;;;;;
                                  -154198;4;0;false;false;63;95;191;;;
                                  -154202;1;0;false;false;;;;;;
                                  -154203;2;0;false;false;63;95;191;;;
                                  -154205;4;0;false;false;;;;;;
                                  -154209;1;0;false;false;63;95;191;;;
                                  -154210;1;0;false;false;;;;;;
                                  -154211;2;0;false;false;63;95;191;;;
                                  -154213;1;0;false;false;;;;;;
                                  -154214;4;0;false;false;63;95;191;;;
                                  -154218;1;0;false;false;;;;;;
                                  -154219;2;0;false;false;63;95;191;;;
                                  -154221;1;0;false;false;;;;;;
                                  -154222;5;0;false;false;63;95;191;;;
                                  -154227;1;0;false;false;;;;;;
                                  -154228;8;0;false;false;63;95;191;;;
                                  -154236;4;0;false;false;;;;;;
                                  -154240;1;0;false;false;63;95;191;;;
                                  -154241;1;0;false;false;;;;;;
                                  -154242;3;0;false;false;63;95;191;;;
                                  -154245;1;0;false;false;;;;;;
                                  -154246;3;0;false;false;63;95;191;;;
                                  -154249;1;0;false;false;;;;;;
                                  -154250;5;0;false;false;63;95;191;;;
                                  -154255;1;0;false;false;;;;;;
                                  -154256;7;0;false;false;63;95;191;;;
                                  -154263;1;0;false;false;;;;;;
                                  -154264;4;0;false;false;63;95;191;;;
                                  -154268;1;0;false;false;;;;;;
                                  -154269;3;0;false;false;63;95;191;;;
                                  -154272;1;0;false;false;;;;;;
                                  -154273;6;0;false;false;63;95;191;;;
                                  -154279;1;0;false;false;;;;;;
                                  -154280;2;0;false;false;63;95;191;;;
                                  -154282;1;0;false;false;;;;;;
                                  -154283;9;0;false;false;63;95;191;;;
                                  -154292;1;0;false;false;;;;;;
                                  -154293;8;0;false;false;63;95;191;;;
                                  -154301;1;0;false;false;;;;;;
                                  -154302;2;0;false;false;63;95;191;;;
                                  -154304;1;0;false;false;;;;;;
                                  -154305;4;0;false;false;63;95;191;;;
                                  -154309;1;0;false;false;;;;;;
                                  -154310;6;0;false;false;63;95;191;;;
                                  -154316;3;0;false;false;;;;;;
                                  -154319;1;0;false;false;63;95;191;;;
                                  -154320;1;0;false;false;;;;;;
                                  -154321;3;0;false;false;127;127;159;;;
                                  -154324;3;0;false;false;;;;;;
                                  -154327;1;0;false;false;63;95;191;;;
                                  -154328;3;0;false;false;;;;;;
                                  -154331;1;0;false;false;63;95;191;;;
                                  -154332;1;0;false;false;;;;;;
                                  -154333;8;1;false;false;127;159;191;;;
                                  -154341;3;0;false;false;63;95;191;;;
                                  -154344;1;0;false;false;;;;;;
                                  -154345;5;0;false;false;63;95;191;;;
                                  -154350;1;0;false;false;;;;;;
                                  -154351;2;0;false;false;63;95;191;;;
                                  -154353;1;0;false;false;;;;;;
                                  -154354;3;0;false;false;63;95;191;;;
                                  -154357;1;0;false;false;;;;;;
                                  -154358;3;0;false;false;63;95;191;;;
                                  -154361;1;0;false;false;;;;;;
                                  -154362;4;0;false;false;63;95;191;;;
                                  -154366;3;0;false;false;;;;;;
                                  -154369;1;0;false;false;63;95;191;;;
                                  -154370;1;0;false;false;;;;;;
                                  -154371;11;1;false;false;127;159;191;;;
                                  -154382;12;0;false;false;63;95;191;;;
                                  -154394;1;0;false;false;;;;;;
                                  -154395;4;0;false;false;127;127;159;;;
                                  -154399;3;0;false;false;;;;;;
                                  -154402;1;0;false;false;63;95;191;;;
                                  -154403;4;0;false;false;;;;;;
                                  -154407;4;0;false;false;127;127;159;;;
                                  -154411;21;0;false;false;63;95;191;;;
                                  -154432;1;0;false;false;;;;;;
                                  -154433;1;0;false;false;127;127;159;;;
                                  -154434;1;0;false;false;;;;;;
                                  -154435;2;0;false;false;63;95;191;;;
                                  -154437;1;0;false;false;;;;;;
                                  -154438;3;0;false;false;63;95;191;;;
                                  -154441;1;0;false;false;;;;;;
                                  -154442;8;0;false;false;63;95;191;;;
                                  -154450;1;0;false;false;;;;;;
                                  -154451;3;0;false;false;63;95;191;;;
                                  -154454;1;0;false;false;;;;;;
                                  -154455;4;0;false;false;63;95;191;;;
                                  -154459;1;0;false;false;;;;;;
                                  -154460;8;0;false;false;63;95;191;;;
                                  -154468;5;0;false;false;127;127;159;;;
                                  -154473;3;0;false;false;;;;;;
                                  -154476;1;0;false;false;63;95;191;;;
                                  -154477;4;0;false;false;;;;;;
                                  -154481;4;0;false;false;127;127;159;;;
                                  -154485;27;0;false;false;63;95;191;;;
                                  -154512;1;0;false;false;;;;;;
                                  -154513;1;0;false;false;127;127;159;;;
                                  -154514;1;0;false;false;;;;;;
                                  -154515;2;0;false;false;63;95;191;;;
                                  -154517;1;0;false;false;;;;;;
                                  -154518;3;0;false;false;63;95;191;;;
                                  -154521;1;0;false;false;;;;;;
                                  -154522;6;0;false;false;63;95;191;;;
                                  -154528;1;0;false;false;;;;;;
                                  -154529;4;0;false;false;63;95;191;;;
                                  -154533;1;0;false;false;;;;;;
                                  -154534;3;0;false;false;63;95;191;;;
                                  -154537;1;0;false;false;;;;;;
                                  -154538;6;0;false;false;63;95;191;;;
                                  -154544;1;0;false;false;;;;;;
                                  -154545;4;0;false;false;63;95;191;;;
                                  -154549;1;0;false;false;;;;;;
                                  -154550;7;0;false;false;63;95;191;;;
                                  -154557;1;0;false;false;;;;;;
                                  -154558;3;0;false;false;63;95;191;;;
                                  -154561;1;0;false;false;;;;;;
                                  -154562;8;0;false;false;63;95;191;;;
                                  -154570;5;0;false;false;127;127;159;;;
                                  -154575;3;0;false;false;;;;;;
                                  -154578;1;0;false;false;63;95;191;;;
                                  -154579;1;0;false;false;;;;;;
                                  -154580;5;0;false;false;127;127;159;;;
                                  -154585;3;0;false;false;;;;;;
                                  -154588;2;0;false;false;63;95;191;;;
                                  -154590;2;0;false;false;;;;;;
                                  -154592;6;1;false;false;127;0;85;;;
                                  -154598;1;0;false;false;;;;;;
                                  -154599;3;1;false;false;127;0;85;;;
                                  -154602;1;0;false;false;;;;;;
                                  -154603;13;0;false;false;0;0;0;;;
                                  -154616;1;0;false;false;;;;;;
                                  -154617;1;0;false;false;0;0;0;;;
                                  -154618;3;0;false;false;;;;;;
                                  -154621;14;0;false;false;0;0;0;;;
                                  -154635;3;0;false;false;;;;;;
                                  -154638;3;1;false;false;127;0;85;;;
                                  -154641;1;0;false;false;;;;;;
                                  -154642;15;0;false;false;0;0;0;;;
                                  -154657;1;0;false;false;;;;;;
                                  -154658;1;0;false;false;0;0;0;;;
                                  -154659;1;0;false;false;;;;;;
                                  -154660;9;0;false;false;0;0;0;;;
                                  -154669;6;0;false;false;;;;;;
                                  -154675;2;1;false;false;127;0;85;;;
                                  -154677;1;0;false;false;;;;;;
                                  -154678;10;0;false;false;0;0;0;;;
                                  -154688;1;0;false;false;;;;;;
                                  -154689;1;0;false;false;0;0;0;;;
                                  -154690;4;0;false;false;;;;;;
                                  -154694;3;1;false;false;127;0;85;;;
                                  -154697;1;0;false;false;;;;;;
                                  -154698;16;0;false;false;0;0;0;;;
                                  -154714;1;0;false;false;;;;;;
                                  -154715;1;0;false;false;0;0;0;;;
                                  -154716;1;0;false;false;;;;;;
                                  -154717;34;0;false;false;0;0;0;;;
                                  -154751;4;0;false;false;;;;;;
                                  -154755;15;0;false;false;0;0;0;;;
                                  -154770;1;0;false;false;;;;;;
                                  -154771;1;0;false;false;0;0;0;;;
                                  -154772;1;0;false;false;;;;;;
                                  -154773;49;0;false;false;0;0;0;;;
                                  -154822;3;0;false;false;;;;;;
                                  -154825;1;0;false;false;0;0;0;;;
                                  -154826;3;0;false;false;;;;;;
                                  -154829;6;1;false;false;127;0;85;;;
                                  -154835;1;0;false;false;;;;;;
                                  -154836;16;0;false;false;0;0;0;;;
                                  -154852;2;0;false;false;;;;;;
                                  -154854;1;0;false;false;0;0;0;;;
                                  -154855;2;0;false;false;;;;;;
                                  -154857;3;0;false;false;63;95;191;;;
                                  -154860;3;0;false;false;;;;;;
                                  -154863;1;0;false;false;63;95;191;;;
                                  -154864;1;0;false;false;;;;;;
                                  -154865;4;0;false;false;63;95;191;;;
                                  -154869;1;0;false;false;;;;;;
                                  -154870;3;0;false;false;63;95;191;;;
                                  -154873;1;0;false;false;;;;;;
                                  -154874;3;0;false;false;63;95;191;;;
                                  -154877;1;0;false;false;;;;;;
                                  -154878;6;0;false;false;63;95;191;;;
                                  -154884;2;0;false;false;;;;;;
                                  -154886;3;0;false;false;63;95;191;;;
                                  -154889;1;0;false;false;;;;;;
                                  -154890;3;0;false;false;63;95;191;;;
                                  -154893;1;0;false;false;;;;;;
                                  -154894;5;0;false;false;63;95;191;;;
                                  -154899;1;0;false;false;;;;;;
                                  -154900;2;0;false;false;63;95;191;;;
                                  -154902;1;0;false;false;;;;;;
                                  -154903;3;0;false;false;63;95;191;;;
                                  -154906;1;0;false;false;;;;;;
                                  -154907;5;0;false;false;63;95;191;;;
                                  -154912;1;0;false;false;;;;;;
                                  -154913;8;0;false;false;63;95;191;;;
                                  -154921;1;0;false;false;;;;;;
                                  -154922;2;0;false;false;63;95;191;;;
                                  -154924;1;0;false;false;;;;;;
                                  -154925;3;0;false;false;63;95;191;;;
                                  -154928;1;0;false;false;;;;;;
                                  -154929;4;0;false;false;63;95;191;;;
                                  -154933;1;0;false;false;;;;;;
                                  -154934;4;0;false;false;63;95;191;;;
                                  -154938;1;0;false;false;;;;;;
                                  -154939;2;0;false;false;63;95;191;;;
                                  -154941;4;0;false;false;;;;;;
                                  -154945;1;0;false;false;63;95;191;;;
                                  -154946;1;0;false;false;;;;;;
                                  -154947;9;0;false;false;63;95;191;;;
                                  -154956;1;0;false;false;;;;;;
                                  -154957;2;0;false;false;63;95;191;;;
                                  -154959;1;0;false;false;;;;;;
                                  -154960;3;0;false;false;63;95;191;;;
                                  -154963;1;0;false;false;;;;;;
                                  -154964;3;0;false;false;63;95;191;;;
                                  -154967;1;0;false;false;;;;;;
                                  -154968;2;0;false;false;63;95;191;;;
                                  -154970;1;0;false;false;;;;;;
                                  -154971;3;0;false;false;63;95;191;;;
                                  -154974;1;0;false;false;;;;;;
                                  -154975;10;0;false;false;63;95;191;;;
                                  -154985;1;0;false;false;;;;;;
                                  -154986;4;0;false;false;63;95;191;;;
                                  -154990;1;0;false;false;;;;;;
                                  -154991;6;0;false;false;63;95;191;;;
                                  -154997;1;0;false;false;;;;;;
                                  -154998;3;0;false;false;63;95;191;;;
                                  -155001;1;0;false;false;;;;;;
                                  -155002;2;0;false;false;63;95;191;;;
                                  -155004;1;0;false;false;;;;;;
                                  -155005;8;0;false;false;63;95;191;;;
                                  -155013;1;0;false;false;;;;;;
                                  -155014;2;0;false;false;63;95;191;;;
                                  -155016;1;0;false;false;;;;;;
                                  -155017;6;0;false;false;63;95;191;;;
                                  -155023;4;0;false;false;;;;;;
                                  -155027;1;0;false;false;63;95;191;;;
                                  -155028;1;0;false;false;;;;;;
                                  -155029;2;0;false;false;63;95;191;;;
                                  -155031;1;0;false;false;;;;;;
                                  -155032;8;0;false;false;63;95;191;;;
                                  -155040;1;0;false;false;;;;;;
                                  -155041;3;0;false;false;63;95;191;;;
                                  -155044;1;0;false;false;;;;;;
                                  -155045;6;0;false;false;63;95;191;;;
                                  -155051;1;0;false;false;;;;;;
                                  -155052;5;0;false;false;63;95;191;;;
                                  -155057;1;0;false;false;;;;;;
                                  -155058;2;0;false;false;63;95;191;;;
                                  -155060;1;0;false;false;;;;;;
                                  -155061;4;0;false;false;63;95;191;;;
                                  -155065;1;0;false;false;;;;;;
                                  -155066;1;0;false;false;63;95;191;;;
                                  -155067;1;0;false;false;;;;;;
                                  -155068;7;0;false;false;63;95;191;;;
                                  -155075;1;0;false;false;;;;;;
                                  -155076;4;0;false;false;63;95;191;;;
                                  -155080;1;0;false;false;;;;;;
                                  -155081;3;0;false;false;63;95;191;;;
                                  -155084;1;0;false;false;;;;;;
                                  -155085;2;0;false;false;63;95;191;;;
                                  -155087;1;0;false;false;;;;;;
                                  -155088;9;0;false;false;63;95;191;;;
                                  -155097;1;0;false;false;;;;;;
                                  -155098;2;0;false;false;63;95;191;;;
                                  -155100;1;0;false;false;;;;;;
                                  -155101;3;0;false;false;63;95;191;;;
                                  -155104;1;0;false;false;;;;;;
                                  -155105;3;0;false;false;63;95;191;;;
                                  -155108;4;0;false;false;;;;;;
                                  -155112;1;0;false;false;63;95;191;;;
                                  -155113;1;0;false;false;;;;;;
                                  -155114;3;0;false;false;63;95;191;;;
                                  -155117;1;0;false;false;;;;;;
                                  -155118;7;0;false;false;63;95;191;;;
                                  -155125;2;0;false;false;;;;;;
                                  -155127;3;0;false;false;63;95;191;;;
                                  -155130;1;0;false;false;;;;;;
                                  -155131;3;0;false;false;63;95;191;;;
                                  -155134;1;0;false;false;;;;;;
                                  -155135;5;0;false;false;63;95;191;;;
                                  -155140;1;0;false;false;;;;;;
                                  -155141;7;0;false;false;63;95;191;;;
                                  -155148;1;0;false;false;;;;;;
                                  -155149;4;0;false;false;63;95;191;;;
                                  -155153;1;0;false;false;;;;;;
                                  -155154;3;0;false;false;63;95;191;;;
                                  -155157;1;0;false;false;;;;;;
                                  -155158;6;0;false;false;63;95;191;;;
                                  -155164;1;0;false;false;;;;;;
                                  -155165;2;0;false;false;63;95;191;;;
                                  -155167;1;0;false;false;;;;;;
                                  -155168;9;0;false;false;63;95;191;;;
                                  -155177;2;0;false;false;;;;;;
                                  -155179;3;0;false;false;63;95;191;;;
                                  -155182;1;0;false;false;;;;;;
                                  -155183;3;0;false;false;63;95;191;;;
                                  -155186;1;0;false;false;;;;;;
                                  -155187;5;0;false;false;63;95;191;;;
                                  -155192;4;0;false;false;;;;;;
                                  -155196;1;0;false;false;63;95;191;;;
                                  -155197;1;0;false;false;;;;;;
                                  -155198;4;0;false;false;63;95;191;;;
                                  -155202;1;0;false;false;;;;;;
                                  -155203;3;0;false;false;63;95;191;;;
                                  -155206;1;0;false;false;;;;;;
                                  -155207;7;0;false;false;63;95;191;;;
                                  -155214;1;0;false;false;;;;;;
                                  -155215;3;0;false;false;63;95;191;;;
                                  -155218;1;0;false;false;;;;;;
                                  -155219;6;0;false;false;63;95;191;;;
                                  -155225;1;0;false;false;;;;;;
                                  -155226;9;0;false;false;63;95;191;;;
                                  -155235;3;0;false;false;;;;;;
                                  -155238;1;0;false;false;63;95;191;;;
                                  -155239;1;0;false;false;;;;;;
                                  -155240;3;0;false;false;127;127;159;;;
                                  -155243;3;0;false;false;;;;;;
                                  -155246;1;0;false;false;63;95;191;;;
                                  -155247;3;0;false;false;;;;;;
                                  -155250;1;0;false;false;63;95;191;;;
                                  -155251;1;0;false;false;;;;;;
                                  -155252;8;1;false;false;127;159;191;;;
                                  -155260;5;0;false;false;63;95;191;;;
                                  -155265;1;0;false;false;;;;;;
                                  -155266;8;0;false;false;63;95;191;;;
                                  -155274;1;0;false;false;;;;;;
                                  -155275;2;0;false;false;63;95;191;;;
                                  -155277;1;0;false;false;;;;;;
                                  -155278;3;0;false;false;63;95;191;;;
                                  -155281;1;0;false;false;;;;;;
                                  -155282;3;0;false;false;63;95;191;;;
                                  -155285;1;0;false;false;;;;;;
                                  -155286;4;0;false;false;63;95;191;;;
                                  -155290;3;0;false;false;;;;;;
                                  -155293;1;0;false;false;63;95;191;;;
                                  -155294;1;0;false;false;;;;;;
                                  -155295;11;1;false;false;127;159;191;;;
                                  -155306;12;0;false;false;63;95;191;;;
                                  -155318;1;0;false;false;;;;;;
                                  -155319;4;0;false;false;127;127;159;;;
                                  -155323;3;0;false;false;;;;;;
                                  -155326;1;0;false;false;63;95;191;;;
                                  -155327;4;0;false;false;;;;;;
                                  -155331;4;0;false;false;127;127;159;;;
                                  -155335;21;0;false;false;63;95;191;;;
                                  -155356;1;0;false;false;;;;;;
                                  -155357;1;0;false;false;127;127;159;;;
                                  -155358;1;0;false;false;;;;;;
                                  -155359;2;0;false;false;63;95;191;;;
                                  -155361;1;0;false;false;;;;;;
                                  -155362;3;0;false;false;63;95;191;;;
                                  -155365;1;0;false;false;;;;;;
                                  -155366;8;0;false;false;63;95;191;;;
                                  -155374;1;0;false;false;;;;;;
                                  -155375;3;0;false;false;63;95;191;;;
                                  -155378;1;0;false;false;;;;;;
                                  -155379;4;0;false;false;63;95;191;;;
                                  -155383;1;0;false;false;;;;;;
                                  -155384;8;0;false;false;63;95;191;;;
                                  -155392;5;0;false;false;127;127;159;;;
                                  -155397;3;0;false;false;;;;;;
                                  -155400;1;0;false;false;63;95;191;;;
                                  -155401;4;0;false;false;;;;;;
                                  -155405;4;0;false;false;127;127;159;;;
                                  -155409;27;0;false;false;63;95;191;;;
                                  -155436;1;0;false;false;;;;;;
                                  -155437;1;0;false;false;127;127;159;;;
                                  -155438;1;0;false;false;;;;;;
                                  -155439;2;0;false;false;63;95;191;;;
                                  -155441;1;0;false;false;;;;;;
                                  -155442;3;0;false;false;63;95;191;;;
                                  -155445;1;0;false;false;;;;;;
                                  -155446;6;0;false;false;63;95;191;;;
                                  -155452;1;0;false;false;;;;;;
                                  -155453;4;0;false;false;63;95;191;;;
                                  -155457;1;0;false;false;;;;;;
                                  -155458;3;0;false;false;63;95;191;;;
                                  -155461;1;0;false;false;;;;;;
                                  -155462;6;0;false;false;63;95;191;;;
                                  -155468;1;0;false;false;;;;;;
                                  -155469;4;0;false;false;63;95;191;;;
                                  -155473;1;0;false;false;;;;;;
                                  -155474;7;0;false;false;63;95;191;;;
                                  -155481;1;0;false;false;;;;;;
                                  -155482;3;0;false;false;63;95;191;;;
                                  -155485;1;0;false;false;;;;;;
                                  -155486;8;0;false;false;63;95;191;;;
                                  -155494;5;0;false;false;127;127;159;;;
                                  -155499;3;0;false;false;;;;;;
                                  -155502;1;0;false;false;63;95;191;;;
                                  -155503;1;0;false;false;;;;;;
                                  -155504;5;0;false;false;127;127;159;;;
                                  -155509;3;0;false;false;;;;;;
                                  -155512;2;0;false;false;63;95;191;;;
                                  -155514;2;0;false;false;;;;;;
                                  -155516;6;1;false;false;127;0;85;;;
                                  -155522;1;0;false;false;;;;;;
                                  -155523;3;1;false;false;127;0;85;;;
                                  -155526;1;0;false;false;;;;;;
                                  -155527;13;0;false;false;0;0;0;;;
                                  -155540;1;0;false;false;;;;;;
                                  -155541;1;0;false;false;0;0;0;;;
                                  -155542;3;0;false;false;;;;;;
                                  -155545;14;0;false;false;0;0;0;;;
                                  -155559;3;0;false;false;;;;;;
                                  -155562;6;1;false;false;127;0;85;;;
                                  -155568;1;0;false;false;;;;;;
                                  -155569;21;0;false;false;0;0;0;;;
                                  -155590;2;0;false;false;;;;;;
                                  -155592;1;0;false;false;0;0;0;;;
                                  -155593;2;0;false;false;;;;;;
                                  -155595;3;0;false;false;63;95;191;;;
                                  -155598;4;0;false;false;;;;;;
                                  -155602;1;0;false;false;63;95;191;;;
                                  -155603;1;0;false;false;;;;;;
                                  -155604;7;0;false;false;63;95;191;;;
                                  -155611;1;0;false;false;;;;;;
                                  -155612;3;0;false;false;63;95;191;;;
                                  -155615;1;0;false;false;;;;;;
                                  -155616;8;0;false;false;63;95;191;;;
                                  -155624;1;0;false;false;;;;;;
                                  -155625;6;0;false;false;63;95;191;;;
                                  -155631;1;0;false;false;;;;;;
                                  -155632;10;0;false;false;63;95;191;;;
                                  -155642;3;0;false;false;;;;;;
                                  -155645;1;0;false;false;63;95;191;;;
                                  -155646;1;0;false;false;;;;;;
                                  -155647;3;0;false;false;127;127;159;;;
                                  -155650;3;0;false;false;;;;;;
                                  -155653;1;0;false;false;63;95;191;;;
                                  -155654;3;0;false;false;;;;;;
                                  -155657;1;0;false;false;63;95;191;;;
                                  -155658;1;0;false;false;;;;;;
                                  -155659;8;1;false;false;127;159;191;;;
                                  -155667;8;0;false;false;63;95;191;;;
                                  -155675;1;0;false;false;;;;;;
                                  -155676;6;0;false;false;63;95;191;;;
                                  -155682;1;0;false;false;;;;;;
                                  -155683;10;0;false;false;63;95;191;;;
                                  -155693;3;0;false;false;;;;;;
                                  -155696;2;0;false;false;63;95;191;;;
                                  -155698;2;0;false;false;;;;;;
                                  -155700;3;1;false;false;127;0;85;;;
                                  -155703;1;0;false;false;;;;;;
                                  -155704;22;0;false;false;0;0;0;;;
                                  -155726;1;0;false;false;;;;;;
                                  -155727;1;0;false;false;0;0;0;;;
                                  -155728;3;0;false;false;;;;;;
                                  -155731;6;1;false;false;127;0;85;;;
                                  -155737;1;0;false;false;;;;;;
                                  -155738;11;0;false;false;0;0;0;;;
                                  -155749;2;0;false;false;;;;;;
                                  -155751;1;0;false;false;0;0;0;;;
                                  -155752;2;0;false;false;;;;;;
                                  -155754;3;1;false;false;127;0;85;;;
                                  -155757;1;0;false;false;;;;;;
                                  -155758;19;0;false;false;0;0;0;;;
                                  -155777;1;0;false;false;;;;;;
                                  -155778;1;0;false;false;0;0;0;;;
                                  -155779;3;0;false;false;;;;;;
                                  -155782;2;1;false;false;127;0;85;;;
                                  -155784;1;0;false;false;;;;;;
                                  -155785;16;0;false;false;0;0;0;;;
                                  -155801;1;0;false;false;;;;;;
                                  -155802;6;1;false;false;127;0;85;;;
                                  -155808;1;0;false;false;;;;;;
                                  -155809;12;0;false;false;0;0;0;;;
                                  -155821;3;0;false;false;;;;;;
                                  -155824;2;1;false;false;127;0;85;;;
                                  -155826;1;0;false;false;;;;;;
                                  -155827;22;0;false;false;0;0;0;;;
                                  -155849;1;0;false;false;;;;;;
                                  -155850;2;0;false;false;0;0;0;;;
                                  -155852;1;0;false;false;;;;;;
                                  -155853;14;0;false;false;0;0;0;;;
                                  -155867;1;0;false;false;;;;;;
                                  -155868;2;0;false;false;0;0;0;;;
                                  -155870;1;0;false;false;;;;;;
                                  -155871;9;0;false;false;0;0;0;;;
                                  -155880;1;0;false;false;;;;;;
                                  -155881;6;1;false;false;127;0;85;;;
                                  -155887;1;0;false;false;;;;;;
                                  -155888;15;0;false;false;0;0;0;;;
                                  -155903;3;0;false;false;;;;;;
                                  -155906;20;0;false;false;0;0;0;;;
                                  -155926;1;0;false;false;;;;;;
                                  -155927;1;0;false;false;0;0;0;;;
                                  -155928;1;0;false;false;;;;;;
                                  -155929;5;1;false;false;127;0;85;;;
                                  -155934;1;0;false;false;0;0;0;;;
                                  -155935;3;0;false;false;;;;;;
                                  -155938;3;1;false;false;127;0;85;;;
                                  -155941;1;0;false;false;;;;;;
                                  -155942;9;0;false;false;0;0;0;;;
                                  -155951;1;0;false;false;;;;;;
                                  -155952;1;0;false;false;0;0;0;;;
                                  -155953;1;0;false;false;;;;;;
                                  -155954;15;0;false;false;0;0;0;;;
                                  -155969;3;0;false;false;;;;;;
                                  -155972;3;1;false;false;127;0;85;;;
                                  -155975;1;0;false;false;;;;;;
                                  -155976;10;0;false;false;0;0;0;;;
                                  -155986;1;0;false;false;;;;;;
                                  -155987;1;0;false;false;0;0;0;;;
                                  -155988;1;0;false;false;;;;;;
                                  -155989;35;0;false;false;0;0;0;;;
                                  -156024;3;0;false;false;;;;;;
                                  -156027;6;0;false;false;0;0;0;;;
                                  -156033;1;0;false;false;;;;;;
                                  -156034;4;0;false;false;0;0;0;;;
                                  -156038;1;0;false;false;;;;;;
                                  -156039;1;0;false;false;0;0;0;;;
                                  -156040;1;0;false;false;;;;;;
                                  -156041;27;0;false;false;0;0;0;;;
                                  -156068;3;0;false;false;;;;;;
                                  -156071;3;1;false;false;127;0;85;;;
                                  -156074;1;0;false;false;;;;;;
                                  -156075;6;0;false;false;0;0;0;;;
                                  -156081;1;0;false;false;;;;;;
                                  -156082;1;0;false;false;0;0;0;;;
                                  -156083;1;0;false;false;;;;;;
                                  -156084;11;0;false;false;0;0;0;;;
                                  -156095;1;0;false;false;;;;;;
                                  -156096;1;0;false;false;0;0;0;;;
                                  -156097;1;0;false;false;;;;;;
                                  -156098;11;0;false;false;0;0;0;;;
                                  -156109;3;0;false;false;;;;;;
                                  -156112;3;1;false;false;127;0;85;;;
                                  -156115;1;0;false;false;;;;;;
                                  -156116;10;0;false;false;0;0;0;;;
                                  -156126;1;0;false;false;;;;;;
                                  -156127;1;0;false;false;0;0;0;;;
                                  -156128;1;0;false;false;;;;;;
                                  -156129;14;0;false;false;0;0;0;;;
                                  -156143;3;0;false;false;;;;;;
                                  -156146;2;1;false;false;127;0;85;;;
                                  -156148;1;0;false;false;;;;;;
                                  -156149;11;0;false;false;0;0;0;;;
                                  -156160;1;0;false;false;;;;;;
                                  -156161;2;0;false;false;0;0;0;;;
                                  -156163;1;0;false;false;;;;;;
                                  -156164;2;0;false;false;0;0;0;;;
                                  -156166;1;0;false;false;;;;;;
                                  -156167;6;1;false;false;127;0;85;;;
                                  -156173;1;0;false;false;;;;;;
                                  -156174;12;0;false;false;0;0;0;;;
                                  -156186;1;0;false;false;;;;;;
                                  -156187;1;0;false;false;0;0;0;;;
                                  -156188;1;0;false;false;;;;;;
                                  -156189;9;0;false;false;0;0;0;;;
                                  -156198;1;0;false;false;;;;;;
                                  -156199;1;0;false;false;0;0;0;;;
                                  -156200;1;0;false;false;;;;;;
                                  -156201;9;0;false;false;0;0;0;;;
                                  -156210;3;0;false;false;;;;;;
                                  -156213;2;1;false;false;127;0;85;;;
                                  -156215;1;0;false;false;;;;;;
                                  -156216;10;0;false;false;0;0;0;;;
                                  -156226;1;0;false;false;;;;;;
                                  -156227;2;0;false;false;0;0;0;;;
                                  -156229;1;0;false;false;;;;;;
                                  -156230;6;0;false;false;0;0;0;;;
                                  -156236;1;0;false;false;;;;;;
                                  -156237;1;0;false;false;0;0;0;;;
                                  -156238;1;0;false;false;;;;;;
                                  -156239;2;0;false;false;0;0;0;;;
                                  -156241;1;0;false;false;;;;;;
                                  -156242;9;0;false;false;0;0;0;;;
                                  -156251;3;0;false;false;;;;;;
                                  -156254;2;1;false;false;127;0;85;;;
                                  -156256;1;0;false;false;;;;;;
                                  -156257;7;0;false;false;0;0;0;;;
                                  -156264;1;0;false;false;;;;;;
                                  -156265;2;0;false;false;0;0;0;;;
                                  -156267;1;0;false;false;;;;;;
                                  -156268;10;0;false;false;0;0;0;;;
                                  -156278;1;0;false;false;;;;;;
                                  -156279;2;0;false;false;0;0;0;;;
                                  -156281;1;0;false;false;;;;;;
                                  -156282;6;0;false;false;0;0;0;;;
                                  -156288;1;0;false;false;;;;;;
                                  -156289;1;0;false;false;0;0;0;;;
                                  -156290;1;0;false;false;;;;;;
                                  -156291;2;0;false;false;0;0;0;;;
                                  -156293;1;0;false;false;;;;;;
                                  -156294;9;0;false;false;0;0;0;;;
                                  -156303;3;0;false;false;;;;;;
                                  -156306;5;1;false;false;127;0;85;;;
                                  -156311;1;0;false;false;;;;;;
                                  -156312;7;0;false;false;0;0;0;;;
                                  -156319;1;0;false;false;;;;;;
                                  -156320;1;0;false;false;0;0;0;;;
                                  -156321;1;0;false;false;;;;;;
                                  -156322;1;0;false;false;0;0;0;;;
                                  -156323;1;0;false;false;;;;;;
                                  -156324;2;0;false;false;0;0;0;;;
                                  -156326;1;0;false;false;;;;;;
                                  -156327;39;0;false;false;0;0;0;;;
                                  -156366;1;0;false;false;;;;;;
                                  -156367;9;0;false;false;0;0;0;;;
                                  -156376;3;0;false;false;;;;;;
                                  -156379;2;1;false;false;127;0;85;;;
                                  -156381;1;0;false;false;;;;;;
                                  -156382;7;0;false;false;0;0;0;;;
                                  -156389;1;0;false;false;;;;;;
                                  -156390;2;0;false;false;0;0;0;;;
                                  -156392;1;0;false;false;;;;;;
                                  -156393;1;0;false;false;0;0;0;;;
                                  -156394;1;0;false;false;;;;;;
                                  -156395;2;0;false;false;0;0;0;;;
                                  -156397;1;0;false;false;;;;;;
                                  -156398;39;0;false;false;0;0;0;;;
                                  -156437;1;0;false;false;;;;;;
                                  -156438;1;0;false;false;0;0;0;;;
                                  -156439;4;0;false;false;;;;;;
                                  -156443;6;1;false;false;127;0;85;;;
                                  -156449;1;0;false;false;;;;;;
                                  -156450;12;0;false;false;0;0;0;;;
                                  -156462;1;0;false;false;;;;;;
                                  -156463;1;0;false;false;0;0;0;;;
                                  -156464;1;0;false;false;;;;;;
                                  -156465;9;0;false;false;0;0;0;;;
                                  -156474;1;0;false;false;;;;;;
                                  -156475;1;0;false;false;0;0;0;;;
                                  -156476;1;0;false;false;;;;;;
                                  -156477;9;0;false;false;0;0;0;;;
                                  -156486;3;0;false;false;;;;;;
                                  -156489;1;0;false;false;0;0;0;;;
                                  -156490;3;0;false;false;;;;;;
                                  -156493;10;0;false;false;0;0;0;;;
                                  -156503;1;0;false;false;;;;;;
                                  -156504;6;0;false;false;0;0;0;;;
                                  -156510;1;0;false;false;;;;;;
                                  -156511;1;0;false;false;0;0;0;;;
                                  -156512;1;0;false;false;;;;;;
                                  -156513;28;0;false;false;0;0;0;;;
                                  -156541;1;0;false;false;;;;;;
                                  -156542;12;0;false;false;0;0;0;;;
                                  -156554;3;0;false;false;;;;;;
                                  -156557;3;1;false;false;127;0;85;;;
                                  -156560;1;0;false;false;;;;;;
                                  -156561;5;0;false;false;0;0;0;;;
                                  -156566;1;0;false;false;;;;;;
                                  -156567;1;0;false;false;0;0;0;;;
                                  -156568;1;0;false;false;;;;;;
                                  -156569;24;0;false;false;0;0;0;;;
                                  -156593;3;0;false;false;;;;;;
                                  -156596;35;0;false;false;0;0;0;;;
                                  -156631;3;0;false;false;;;;;;
                                  -156634;6;1;false;false;127;0;85;;;
                                  -156640;1;0;false;false;;;;;;
                                  -156641;7;0;false;false;0;0;0;;;
                                  -156648;1;0;false;false;;;;;;
                                  -156649;1;0;false;false;0;0;0;;;
                                  -156650;1;0;false;false;;;;;;
                                  -156651;2;0;false;false;0;0;0;;;
                                  -156653;1;0;false;false;;;;;;
                                  -156654;2;0;false;false;0;0;0;;;
                                  -156656;1;0;false;false;;;;;;
                                  -156657;2;0;false;false;0;0;0;;;
                                  -156659;1;0;false;false;;;;;;
                                  -156660;1;0;false;false;0;0;0;;;
                                  -156661;1;0;false;false;;;;;;
                                  -156662;9;0;false;false;0;0;0;;;
                                  -156671;1;0;false;false;;;;;;
                                  -156672;1;0;false;false;0;0;0;;;
                                  -156673;1;0;false;false;;;;;;
                                  -156674;9;0;false;false;0;0;0;;;
                                  -156683;2;0;false;false;;;;;;
                                  -156685;1;0;false;false;0;0;0;;;
                                  -156686;2;0;false;false;;;;;;
                                  -156688;3;0;false;false;63;95;191;;;
                                  -156691;3;0;false;false;;;;;;
                                  -156694;1;0;false;false;63;95;191;;;
                                  -156695;1;0;false;false;;;;;;
                                  -156696;7;0;false;false;63;95;191;;;
                                  -156703;1;0;false;false;;;;;;
                                  -156704;3;0;false;false;63;95;191;;;
                                  -156707;1;0;false;false;;;;;;
                                  -156708;5;0;false;false;63;95;191;;;
                                  -156713;1;0;false;false;;;;;;
                                  -156714;2;0;false;false;63;95;191;;;
                                  -156716;1;0;false;false;;;;;;
                                  -156717;3;0;false;false;63;95;191;;;
                                  -156720;1;0;false;false;;;;;;
                                  -156721;4;0;false;false;63;95;191;;;
                                  -156725;1;0;false;false;;;;;;
                                  -156726;3;0;false;false;63;95;191;;;
                                  -156729;1;0;false;false;;;;;;
                                  -156730;5;0;false;false;63;95;191;;;
                                  -156735;1;0;false;false;;;;;;
                                  -156736;2;0;false;false;63;95;191;;;
                                  -156738;1;0;false;false;;;;;;
                                  -156739;3;0;false;false;63;95;191;;;
                                  -156742;3;0;false;false;;;;;;
                                  -156745;1;0;false;false;63;95;191;;;
                                  -156746;1;0;false;false;;;;;;
                                  -156747;4;0;false;false;63;95;191;;;
                                  -156751;1;0;false;false;;;;;;
                                  -156752;2;0;false;false;63;95;191;;;
                                  -156754;1;0;false;false;;;;;;
                                  -156755;4;0;false;false;63;95;191;;;
                                  -156759;1;0;false;false;;;;;;
                                  -156760;4;0;false;false;63;95;191;;;
                                  -156764;1;0;false;false;;;;;;
                                  -156765;4;0;false;false;63;95;191;;;
                                  -156769;1;0;false;false;;;;;;
                                  -156770;3;0;false;false;63;95;191;;;
                                  -156773;1;0;false;false;;;;;;
                                  -156774;2;0;false;false;63;95;191;;;
                                  -156776;1;0;false;false;;;;;;
                                  -156777;3;0;false;false;63;95;191;;;
                                  -156780;1;0;false;false;;;;;;
                                  -156781;3;0;false;false;63;95;191;;;
                                  -156784;1;0;false;false;;;;;;
                                  -156785;2;0;false;false;63;95;191;;;
                                  -156787;1;0;false;false;;;;;;
                                  -156788;3;0;false;false;63;95;191;;;
                                  -156791;1;0;false;false;;;;;;
                                  -156792;7;0;false;false;63;95;191;;;
                                  -156799;1;0;false;false;;;;;;
                                  -156800;5;0;false;false;63;95;191;;;
                                  -156805;4;0;false;false;;;;;;
                                  -156809;1;0;false;false;63;95;191;;;
                                  -156810;1;0;false;false;;;;;;
                                  -156811;9;0;false;false;63;95;191;;;
                                  -156820;1;0;false;false;;;;;;
                                  -156821;2;0;false;false;63;95;191;;;
                                  -156823;1;0;false;false;;;;;;
                                  -156824;3;0;false;false;63;95;191;;;
                                  -156827;1;0;false;false;;;;;;
                                  -156828;10;0;false;false;63;95;191;;;
                                  -156838;1;0;false;false;;;;;;
                                  -156839;7;0;false;false;63;95;191;;;
                                  -156846;1;0;false;false;;;;;;
                                  -156847;4;0;false;false;63;95;191;;;
                                  -156851;1;0;false;false;;;;;;
                                  -156852;3;0;false;false;63;95;191;;;
                                  -156855;1;0;false;false;;;;;;
                                  -156856;5;0;false;false;63;95;191;;;
                                  -156861;1;0;false;false;;;;;;
                                  -156862;6;0;false;false;63;95;191;;;
                                  -156868;3;0;false;false;;;;;;
                                  -156871;1;0;false;false;63;95;191;;;
                                  -156872;1;0;false;false;;;;;;
                                  -156873;2;0;false;false;63;95;191;;;
                                  -156875;1;0;false;false;;;;;;
                                  -156876;3;0;false;false;63;95;191;;;
                                  -156879;1;0;false;false;;;;;;
                                  -156880;10;0;false;false;63;95;191;;;
                                  -156890;1;0;false;false;;;;;;
                                  -156891;2;0;false;false;63;95;191;;;
                                  -156893;1;0;false;false;;;;;;
                                  -156894;9;0;false;false;63;95;191;;;
                                  -156903;1;0;false;false;;;;;;
                                  -156904;3;0;false;false;63;95;191;;;
                                  -156907;1;0;false;false;;;;;;
                                  -156908;5;0;false;false;63;95;191;;;
                                  -156913;1;0;false;false;;;;;;
                                  -156914;5;0;false;false;63;95;191;;;
                                  -156919;3;0;false;false;;;;;;
                                  -156922;1;0;false;false;63;95;191;;;
                                  -156923;4;0;false;false;;;;;;
                                  -156927;1;0;false;false;63;95;191;;;
                                  -156928;1;0;false;false;;;;;;
                                  -156929;8;1;false;false;127;159;191;;;
                                  -156937;3;0;false;false;63;95;191;;;
                                  -156940;1;0;false;false;;;;;;
                                  -156941;5;0;false;false;63;95;191;;;
                                  -156946;1;0;false;false;;;;;;
                                  -156947;2;0;false;false;63;95;191;;;
                                  -156949;1;0;false;false;;;;;;
                                  -156950;3;0;false;false;63;95;191;;;
                                  -156953;1;0;false;false;;;;;;
                                  -156954;4;0;false;false;63;95;191;;;
                                  -156958;1;0;false;false;;;;;;
                                  -156959;3;0;false;false;63;95;191;;;
                                  -156962;1;0;false;false;;;;;;
                                  -156963;5;0;false;false;63;95;191;;;
                                  -156968;1;0;false;false;;;;;;
                                  -156969;2;0;false;false;63;95;191;;;
                                  -156971;1;0;false;false;;;;;;
                                  -156972;3;0;false;false;63;95;191;;;
                                  -156975;3;0;false;false;;;;;;
                                  -156978;2;0;false;false;63;95;191;;;
                                  -156980;2;0;false;false;;;;;;
                                  -156982;3;1;false;false;127;0;85;;;
                                  -156985;1;0;false;false;;;;;;
                                  -156986;14;0;false;false;0;0;0;;;
                                  -157000;1;0;false;false;;;;;;
                                  -157001;1;0;false;false;0;0;0;;;
                                  -157002;3;0;false;false;;;;;;
                                  -157005;3;1;false;false;127;0;85;;;
                                  -157008;1;0;false;false;;;;;;
                                  -157009;9;0;false;false;0;0;0;;;
                                  -157018;1;0;false;false;;;;;;
                                  -157019;1;0;false;false;0;0;0;;;
                                  -157020;1;0;false;false;;;;;;
                                  -157021;37;0;false;false;0;0;0;;;
                                  -157058;3;0;false;false;;;;;;
                                  -157061;3;1;false;false;127;0;85;;;
                                  -157064;1;0;false;false;;;;;;
                                  -157065;11;0;false;false;0;0;0;;;
                                  -157076;1;0;false;false;;;;;;
                                  -157077;1;0;false;false;0;0;0;;;
                                  -157078;1;0;false;false;;;;;;
                                  -157079;11;0;false;false;0;0;0;;;
                                  -157090;3;0;false;false;;;;;;
                                  -157093;2;1;false;false;127;0;85;;;
                                  -157095;1;0;false;false;;;;;;
                                  -157096;9;0;false;false;0;0;0;;;
                                  -157105;1;0;false;false;;;;;;
                                  -157106;2;0;false;false;0;0;0;;;
                                  -157108;1;0;false;false;;;;;;
                                  -157109;7;0;false;false;0;0;0;;;
                                  -157116;1;0;false;false;;;;;;
                                  -157117;2;0;false;false;0;0;0;;;
                                  -157119;1;0;false;false;;;;;;
                                  -157120;11;0;false;false;0;0;0;;;
                                  -157131;1;0;false;false;;;;;;
                                  -157132;2;0;false;false;0;0;0;;;
                                  -157134;4;0;false;false;;;;;;
                                  -157138;9;0;false;false;0;0;0;;;
                                  -157147;1;0;false;false;;;;;;
                                  -157148;1;0;false;false;0;0;0;;;
                                  -157149;1;0;false;false;;;;;;
                                  -157150;22;0;false;false;0;0;0;;;
                                  -157172;1;0;false;false;;;;;;
                                  -157173;1;0;false;false;0;0;0;;;
                                  -157174;1;0;false;false;;;;;;
                                  -157175;1;0;false;false;0;0;0;;;
                                  -157176;1;0;false;false;;;;;;
                                  -157177;2;0;false;false;0;0;0;;;
                                  -157179;4;0;false;false;;;;;;
                                  -157183;11;0;false;false;0;0;0;;;
                                  -157194;1;0;false;false;;;;;;
                                  -157195;2;0;false;false;0;0;0;;;
                                  -157197;1;0;false;false;;;;;;
                                  -157198;33;0;false;false;0;0;0;;;
                                  -157231;1;0;false;false;;;;;;
                                  -157232;1;0;false;false;0;0;0;;;
                                  -157233;1;0;false;false;;;;;;
                                  -157234;3;0;false;false;0;0;0;;;
                                  -157237;1;0;false;false;;;;;;
                                  -157238;1;0;false;false;0;0;0;;;
                                  -157239;4;0;false;false;;;;;;
                                  -157243;12;0;false;false;0;0;0;;;
                                  -157255;3;0;false;false;;;;;;
                                  -157258;1;0;false;false;0;0;0;;;
                                  -157259;3;0;false;false;;;;;;
                                  -157262;6;1;false;false;127;0;85;;;
                                  -157268;1;0;false;false;;;;;;
                                  -157269;10;0;false;false;0;0;0;;;
                                  -157279;2;0;false;false;;;;;;
                                  -157281;1;0;false;false;0;0;0;;;
                                  -157282;2;0;false;false;;;;;;
                                  -157284;3;0;false;false;63;95;191;;;
                                  -157287;3;0;false;false;;;;;;
                                  -157290;1;0;false;false;63;95;191;;;
                                  -157291;1;0;false;false;;;;;;
                                  -157292;7;0;false;false;63;95;191;;;
                                  -157299;1;0;false;false;;;;;;
                                  -157300;3;0;false;false;63;95;191;;;
                                  -157303;1;0;false;false;;;;;;
                                  -157304;6;0;false;false;63;95;191;;;
                                  -157310;1;0;false;false;;;;;;
                                  -157311;2;0;false;false;63;95;191;;;
                                  -157313;1;0;false;false;;;;;;
                                  -157314;3;0;false;false;63;95;191;;;
                                  -157317;1;0;false;false;;;;;;
                                  -157318;9;0;false;false;63;95;191;;;
                                  -157327;1;0;false;false;;;;;;
                                  -157328;5;0;false;false;63;95;191;;;
                                  -157333;1;0;false;false;;;;;;
                                  -157334;3;0;false;false;63;95;191;;;
                                  -157337;1;0;false;false;;;;;;
                                  -157338;4;0;false;false;63;95;191;;;
                                  -157342;1;0;false;false;;;;;;
                                  -157343;2;0;false;false;63;95;191;;;
                                  -157345;1;0;false;false;;;;;;
                                  -157346;3;0;false;false;63;95;191;;;
                                  -157349;1;0;false;false;;;;;;
                                  -157350;9;0;false;false;63;95;191;;;
                                  -157359;3;0;false;false;;;;;;
                                  -157362;1;0;false;false;63;95;191;;;
                                  -157363;1;0;false;false;;;;;;
                                  -157364;7;0;false;false;63;95;191;;;
                                  -157371;3;0;false;false;;;;;;
                                  -157374;1;0;false;false;63;95;191;;;
                                  -157375;1;0;false;false;;;;;;
                                  -157376;3;0;false;false;127;127;159;;;
                                  -157379;3;0;false;false;;;;;;
                                  -157382;1;0;false;false;63;95;191;;;
                                  -157383;1;0;false;false;;;;;;
                                  -157384;5;0;false;false;63;95;191;;;
                                  -157389;1;0;false;false;;;;;;
                                  -157390;3;0;false;false;63;95;191;;;
                                  -157393;1;0;false;false;;;;;;
                                  -157394;3;0;false;false;63;95;191;;;
                                  -157397;1;0;false;false;;;;;;
                                  -157398;7;0;false;false;63;95;191;;;
                                  -157405;1;0;false;false;;;;;;
                                  -157406;2;0;false;false;63;95;191;;;
                                  -157408;1;0;false;false;;;;;;
                                  -157409;5;0;false;false;63;95;191;;;
                                  -157414;1;0;false;false;;;;;;
                                  -157415;6;0;false;false;63;95;191;;;
                                  -157421;1;0;false;false;;;;;;
                                  -157422;2;0;false;false;63;95;191;;;
                                  -157424;1;0;false;false;;;;;;
                                  -157425;1;0;false;false;63;95;191;;;
                                  -157426;1;0;false;false;;;;;;
                                  -157427;8;0;false;false;63;95;191;;;
                                  -157435;1;0;false;false;;;;;;
                                  -157436;2;0;false;false;63;95;191;;;
                                  -157438;1;0;false;false;;;;;;
                                  -157439;11;0;false;false;63;95;191;;;
                                  -157450;3;0;false;false;;;;;;
                                  -157453;1;0;false;false;63;95;191;;;
                                  -157454;1;0;false;false;;;;;;
                                  -157455;4;0;false;false;127;127;159;;;
                                  -157459;3;0;false;false;;;;;;
                                  -157462;1;0;false;false;63;95;191;;;
                                  -157463;1;0;false;false;;;;;;
                                  -157464;4;0;false;false;127;127;159;;;
                                  -157468;4;0;false;false;63;95;191;;;
                                  -157472;1;0;false;false;;;;;;
                                  -157473;1;0;false;false;63;95;191;;;
                                  -157474;1;0;false;false;127;127;159;;;
                                  -157475;1;0;false;false;63;95;191;;;
                                  -157476;1;0;false;false;;;;;;
                                  -157477;3;0;false;false;63;95;191;;;
                                  -157480;1;0;false;false;;;;;;
                                  -157481;1;0;false;false;63;95;191;;;
                                  -157482;1;0;false;false;127;127;159;;;
                                  -157483;1;0;false;false;63;95;191;;;
                                  -157484;1;0;false;false;;;;;;
                                  -157485;6;0;false;false;63;95;191;;;
                                  -157491;1;0;false;false;;;;;;
                                  -157492;2;0;false;false;63;95;191;;;
                                  -157494;1;0;false;false;127;127;159;;;
                                  -157495;2;0;false;false;63;95;191;;;
                                  -157497;1;0;false;false;;;;;;
                                  -157498;3;0;false;false;63;95;191;;;
                                  -157501;1;0;false;false;;;;;;
                                  -157502;2;0;false;false;63;95;191;;;
                                  -157504;1;0;false;false;127;127;159;;;
                                  -157505;4;0;false;false;63;95;191;;;
                                  -157509;3;0;false;false;;;;;;
                                  -157512;1;0;false;false;63;95;191;;;
                                  -157513;1;0;false;false;;;;;;
                                  -157514;4;0;false;false;127;127;159;;;
                                  -157518;5;0;false;false;63;95;191;;;
                                  -157523;1;0;false;false;;;;;;
                                  -157524;5;0;false;false;63;95;191;;;
                                  -157529;1;0;false;false;;;;;;
                                  -157530;9;0;false;false;63;95;191;;;
                                  -157539;1;0;false;false;;;;;;
                                  -157540;6;0;false;false;63;95;191;;;
                                  -157546;1;0;false;false;;;;;;
                                  -157547;4;0;false;false;63;95;191;;;
                                  -157551;1;0;false;false;;;;;;
                                  -157552;6;0;false;false;63;95;191;;;
                                  -157558;3;0;false;false;;;;;;
                                  -157561;1;0;false;false;63;95;191;;;
                                  -157562;1;0;false;false;;;;;;
                                  -157563;5;0;false;false;127;127;159;;;
                                  -157568;3;0;false;false;;;;;;
                                  -157571;1;0;false;false;63;95;191;;;
                                  -157572;1;0;false;false;;;;;;
                                  -157573;4;0;false;false;127;127;159;;;
                                  -157577;3;0;false;false;;;;;;
                                  -157580;1;0;false;false;63;95;191;;;
                                  -157581;1;0;false;false;;;;;;
                                  -157582;3;0;false;false;127;127;159;;;
                                  -157585;3;0;false;false;;;;;;
                                  -157588;1;0;false;false;63;95;191;;;
                                  -157589;1;0;false;false;;;;;;
                                  -157590;5;0;false;false;63;95;191;;;
                                  -157595;1;0;false;false;;;;;;
                                  -157596;10;0;false;false;63;95;191;;;
                                  -157606;1;0;false;false;;;;;;
                                  -157607;1;0;false;false;63;95;191;;;
                                  -157608;1;0;false;false;;;;;;
                                  -157609;1;0;false;false;63;95;191;;;
                                  -157610;1;0;false;false;;;;;;
                                  -157611;6;0;false;false;63;95;191;;;
                                  -157617;1;0;false;false;;;;;;
                                  -157618;3;0;false;false;63;95;191;;;
                                  -157621;1;0;false;false;;;;;;
                                  -157622;3;0;false;false;63;95;191;;;
                                  -157625;1;0;false;false;;;;;;
                                  -157626;7;0;false;false;63;95;191;;;
                                  -157633;1;0;false;false;;;;;;
                                  -157634;2;0;false;false;63;95;191;;;
                                  -157636;1;0;false;false;;;;;;
                                  -157637;4;0;false;false;63;95;191;;;
                                  -157641;1;0;false;false;;;;;;
                                  -157642;3;0;false;false;63;95;191;;;
                                  -157645;1;0;false;false;;;;;;
                                  -157646;7;0;false;false;63;95;191;;;
                                  -157653;1;0;false;false;;;;;;
                                  -157654;2;0;false;false;63;95;191;;;
                                  -157656;3;0;false;false;;;;;;
                                  -157659;1;0;false;false;63;95;191;;;
                                  -157660;1;0;false;false;;;;;;
                                  -157661;4;0;false;false;63;95;191;;;
                                  -157665;1;0;false;false;;;;;;
                                  -157666;2;0;false;false;63;95;191;;;
                                  -157668;1;0;false;false;;;;;;
                                  -157669;3;0;false;false;63;95;191;;;
                                  -157672;1;0;false;false;;;;;;
                                  -157673;4;0;false;false;63;95;191;;;
                                  -157677;1;0;false;false;;;;;;
                                  -157678;7;0;false;false;63;95;191;;;
                                  -157685;1;0;false;false;;;;;;
                                  -157686;2;0;false;false;63;95;191;;;
                                  -157688;1;0;false;false;;;;;;
                                  -157689;2;0;false;false;63;95;191;;;
                                  -157691;1;0;false;false;;;;;;
                                  -157692;3;0;false;false;63;95;191;;;
                                  -157695;1;0;false;false;;;;;;
                                  -157696;5;0;false;false;63;95;191;;;
                                  -157701;1;0;false;false;;;;;;
                                  -157702;10;0;false;false;63;95;191;;;
                                  -157712;2;0;false;false;;;;;;
                                  -157714;4;0;false;false;63;95;191;;;
                                  -157718;1;0;false;false;;;;;;
                                  -157719;6;0;false;false;63;95;191;;;
                                  -157725;1;0;false;false;;;;;;
                                  -157726;3;0;false;false;63;95;191;;;
                                  -157729;4;0;false;false;;;;;;
                                  -157733;1;0;false;false;63;95;191;;;
                                  -157734;1;0;false;false;;;;;;
                                  -157735;7;0;false;false;63;95;191;;;
                                  -157742;1;0;false;false;;;;;;
                                  -157743;2;0;false;false;63;95;191;;;
                                  -157745;1;0;false;false;;;;;;
                                  -157746;3;0;false;false;63;95;191;;;
                                  -157749;1;0;false;false;;;;;;
                                  -157750;5;0;false;false;63;95;191;;;
                                  -157755;3;0;false;false;;;;;;
                                  -157758;1;0;false;false;63;95;191;;;
                                  -157759;1;0;false;false;;;;;;
                                  -157760;4;0;false;false;127;127;159;;;
                                  -157764;3;0;false;false;;;;;;
                                  -157767;2;0;false;false;63;95;191;;;
                                  -157769;2;0;false;false;;;;;;
                                  -157771;3;1;false;false;127;0;85;;;
                                  -157774;1;0;false;false;;;;;;
                                  -157775;11;0;false;false;0;0;0;;;
                                  -157786;3;1;false;false;127;0;85;;;
                                  -157789;1;0;false;false;;;;;;
                                  -157790;7;0;false;false;0;0;0;;;
                                  -157797;1;0;false;false;;;;;;
                                  -157798;1;0;false;false;0;0;0;;;
                                  -157799;3;0;false;false;;;;;;
                                  -157802;3;1;false;false;127;0;85;;;
                                  -157805;1;0;false;false;;;;;;
                                  -157806;4;0;false;false;0;0;0;;;
                                  -157810;1;0;false;false;;;;;;
                                  -157811;1;0;false;false;0;0;0;;;
                                  -157812;1;0;false;false;;;;;;
                                  -157813;39;0;false;false;0;0;0;;;
                                  -157852;3;0;false;false;;;;;;
                                  -157855;3;1;false;false;127;0;85;;;
                                  -157858;1;0;false;false;;;;;;
                                  -157859;10;0;false;false;0;0;0;;;
                                  -157869;1;0;false;false;;;;;;
                                  -157870;1;0;false;false;0;0;0;;;
                                  -157871;1;0;false;false;;;;;;
                                  -157872;37;0;false;false;0;0;0;;;
                                  -157909;3;0;false;false;;;;;;
                                  -157912;6;0;false;false;0;0;0;;;
                                  -157918;1;0;false;false;;;;;;
                                  -157919;8;0;false;false;0;0;0;;;
                                  -157927;1;0;false;false;;;;;;
                                  -157928;1;0;false;false;0;0;0;;;
                                  -157929;1;0;false;false;;;;;;
                                  -157930;29;0;false;false;0;0;0;;;
                                  -157959;3;0;false;false;;;;;;
                                  -157962;3;1;false;false;127;0;85;;;
                                  -157965;1;0;false;false;;;;;;
                                  -157966;10;0;false;false;0;0;0;;;
                                  -157976;1;0;false;false;;;;;;
                                  -157977;1;0;false;false;0;0;0;;;
                                  -157978;1;0;false;false;;;;;;
                                  -157979;18;0;false;false;0;0;0;;;
                                  -157997;6;0;false;false;;;;;;
                                  -158003;2;1;false;false;127;0;85;;;
                                  -158005;1;0;false;false;;;;;;
                                  -158006;7;0;false;false;0;0;0;;;
                                  -158013;1;0;false;false;;;;;;
                                  -158014;2;0;false;false;0;0;0;;;
                                  -158016;1;0;false;false;;;;;;
                                  -158017;15;0;false;false;0;0;0;;;
                                  -158032;1;0;false;false;;;;;;
                                  -158033;1;0;false;false;0;0;0;;;
                                  -158034;4;0;false;false;;;;;;
                                  -158038;6;1;false;false;127;0;85;;;
                                  -158044;1;0;false;false;;;;;;
                                  -158045;7;0;false;false;0;0;0;;;
                                  -158052;3;0;false;false;;;;;;
                                  -158055;1;0;false;false;0;0;0;;;
                                  -158056;3;0;false;false;;;;;;
                                  -158059;2;1;false;false;127;0;85;;;
                                  -158061;1;0;false;false;;;;;;
                                  -158062;7;0;false;false;0;0;0;;;
                                  -158069;1;0;false;false;;;;;;
                                  -158070;2;0;false;false;0;0;0;;;
                                  -158072;1;0;false;false;;;;;;
                                  -158073;10;0;false;false;0;0;0;;;
                                  -158083;1;0;false;false;;;;;;
                                  -158084;1;0;false;false;0;0;0;;;
                                  -158085;1;0;false;false;;;;;;
                                  -158086;11;0;false;false;0;0;0;;;
                                  -158097;1;0;false;false;;;;;;
                                  -158098;1;0;false;false;0;0;0;;;
                                  -158099;4;0;false;false;;;;;;
                                  -158103;7;0;false;false;0;0;0;;;
                                  -158110;4;0;false;false;;;;;;
                                  -158114;6;0;false;false;0;0;0;;;
                                  -158120;1;0;false;false;;;;;;
                                  -158121;1;0;false;false;0;0;0;;;
                                  -158122;1;0;false;false;;;;;;
                                  -158123;37;0;false;false;0;0;0;;;
                                  -158160;3;0;false;false;;;;;;
                                  -158163;1;0;false;false;0;0;0;;;
                                  -158164;3;0;false;false;;;;;;
                                  -158167;4;1;false;false;127;0;85;;;
                                  -158171;1;0;false;false;;;;;;
                                  -158172;1;0;false;false;0;0;0;;;
                                  -158173;4;0;false;false;;;;;;
                                  -158177;10;0;false;false;0;0;0;;;
                                  -158187;1;0;false;false;;;;;;
                                  -158188;6;0;false;false;0;0;0;;;
                                  -158194;1;0;false;false;;;;;;
                                  -158195;1;0;false;false;0;0;0;;;
                                  -158196;1;0;false;false;;;;;;
                                  -158197;32;0;false;false;0;0;0;;;
                                  -158229;1;0;false;false;;;;;;
                                  -158230;12;0;false;false;0;0;0;;;
                                  -158242;4;0;false;false;;;;;;
                                  -158246;6;0;false;false;0;0;0;;;
                                  -158252;1;0;false;false;;;;;;
                                  -158253;2;0;false;false;0;0;0;;;
                                  -158255;1;0;false;false;;;;;;
                                  -158256;11;0;false;false;0;0;0;;;
                                  -158267;4;0;false;false;;;;;;
                                  -158271;6;0;false;false;0;0;0;;;
                                  -158277;1;0;false;false;;;;;;
                                  -158278;1;0;false;false;0;0;0;;;
                                  -158279;1;0;false;false;;;;;;
                                  -158280;28;0;false;false;0;0;0;;;
                                  -158308;1;0;false;false;;;;;;
                                  -158309;19;0;false;false;0;0;0;;;
                                  -158328;4;0;false;false;;;;;;
                                  -158332;6;0;false;false;0;0;0;;;
                                  -158338;1;0;false;false;;;;;;
                                  -158339;2;0;false;false;0;0;0;;;
                                  -158341;1;0;false;false;;;;;;
                                  -158342;11;0;false;false;0;0;0;;;
                                  -158353;4;0;false;false;;;;;;
                                  -158357;35;0;false;false;0;0;0;;;
                                  -158392;3;0;false;false;;;;;;
                                  -158395;1;0;false;false;0;0;0;;;
                                  -158396;3;0;false;false;;;;;;
                                  -158399;6;1;false;false;127;0;85;;;
                                  -158405;1;0;false;false;;;;;;
                                  -158406;7;0;false;false;0;0;0;;;
                                  -158413;2;0;false;false;;;;;;
                                  -158415;1;0;false;false;0;0;0;;;
                                  -158416;2;0;false;false;;;;;;
                                  -158418;3;0;false;false;63;95;191;;;
                                  -158421;3;0;false;false;;;;;;
                                  -158424;1;0;false;false;63;95;191;;;
                                  -158425;1;0;false;false;;;;;;
                                  -158426;7;0;false;false;63;95;191;;;
                                  -158433;1;0;false;false;;;;;;
                                  -158434;3;0;false;false;63;95;191;;;
                                  -158437;1;0;false;false;;;;;;
                                  -158438;6;0;false;false;63;95;191;;;
                                  -158444;1;0;false;false;;;;;;
                                  -158445;2;0;false;false;63;95;191;;;
                                  -158447;1;0;false;false;;;;;;
                                  -158448;3;0;false;false;63;95;191;;;
                                  -158451;1;0;false;false;;;;;;
                                  -158452;9;0;false;false;63;95;191;;;
                                  -158461;1;0;false;false;;;;;;
                                  -158462;5;0;false;false;63;95;191;;;
                                  -158467;1;0;false;false;;;;;;
                                  -158468;3;0;false;false;63;95;191;;;
                                  -158471;1;0;false;false;;;;;;
                                  -158472;4;0;false;false;63;95;191;;;
                                  -158476;1;0;false;false;;;;;;
                                  -158477;2;0;false;false;63;95;191;;;
                                  -158479;1;0;false;false;;;;;;
                                  -158480;3;0;false;false;63;95;191;;;
                                  -158483;1;0;false;false;;;;;;
                                  -158484;9;0;false;false;63;95;191;;;
                                  -158493;3;0;false;false;;;;;;
                                  -158496;1;0;false;false;63;95;191;;;
                                  -158497;1;0;false;false;;;;;;
                                  -158498;7;0;false;false;63;95;191;;;
                                  -158505;3;0;false;false;;;;;;
                                  -158508;1;0;false;false;63;95;191;;;
                                  -158509;1;0;false;false;;;;;;
                                  -158510;3;0;false;false;127;127;159;;;
                                  -158513;3;0;false;false;;;;;;
                                  -158516;1;0;false;false;63;95;191;;;
                                  -158517;1;0;false;false;;;;;;
                                  -158518;5;0;false;false;63;95;191;;;
                                  -158523;1;0;false;false;;;;;;
                                  -158524;3;0;false;false;63;95;191;;;
                                  -158527;1;0;false;false;;;;;;
                                  -158528;3;0;false;false;63;95;191;;;
                                  -158531;1;0;false;false;;;;;;
                                  -158532;7;0;false;false;63;95;191;;;
                                  -158539;1;0;false;false;;;;;;
                                  -158540;2;0;false;false;63;95;191;;;
                                  -158542;1;0;false;false;;;;;;
                                  -158543;5;0;false;false;63;95;191;;;
                                  -158548;1;0;false;false;;;;;;
                                  -158549;6;0;false;false;63;95;191;;;
                                  -158555;1;0;false;false;;;;;;
                                  -158556;2;0;false;false;63;95;191;;;
                                  -158558;1;0;false;false;;;;;;
                                  -158559;1;0;false;false;63;95;191;;;
                                  -158560;1;0;false;false;;;;;;
                                  -158561;8;0;false;false;63;95;191;;;
                                  -158569;1;0;false;false;;;;;;
                                  -158570;2;0;false;false;63;95;191;;;
                                  -158572;1;0;false;false;;;;;;
                                  -158573;11;0;false;false;63;95;191;;;
                                  -158584;3;0;false;false;;;;;;
                                  -158587;1;0;false;false;63;95;191;;;
                                  -158588;1;0;false;false;;;;;;
                                  -158589;4;0;false;false;127;127;159;;;
                                  -158593;3;0;false;false;;;;;;
                                  -158596;1;0;false;false;63;95;191;;;
                                  -158597;1;0;false;false;;;;;;
                                  -158598;4;0;false;false;127;127;159;;;
                                  -158602;4;0;false;false;63;95;191;;;
                                  -158606;1;0;false;false;;;;;;
                                  -158607;1;0;false;false;63;95;191;;;
                                  -158608;1;0;false;false;127;127;159;;;
                                  -158609;1;0;false;false;63;95;191;;;
                                  -158610;1;0;false;false;;;;;;
                                  -158611;3;0;false;false;63;95;191;;;
                                  -158614;1;0;false;false;;;;;;
                                  -158615;1;0;false;false;63;95;191;;;
                                  -158616;1;0;false;false;127;127;159;;;
                                  -158617;1;0;false;false;63;95;191;;;
                                  -158618;1;0;false;false;;;;;;
                                  -158619;6;0;false;false;63;95;191;;;
                                  -158625;1;0;false;false;;;;;;
                                  -158626;2;0;false;false;63;95;191;;;
                                  -158628;1;0;false;false;127;127;159;;;
                                  -158629;2;0;false;false;63;95;191;;;
                                  -158631;1;0;false;false;;;;;;
                                  -158632;3;0;false;false;63;95;191;;;
                                  -158635;1;0;false;false;;;;;;
                                  -158636;2;0;false;false;63;95;191;;;
                                  -158638;1;0;false;false;127;127;159;;;
                                  -158639;4;0;false;false;63;95;191;;;
                                  -158643;3;0;false;false;;;;;;
                                  -158646;1;0;false;false;63;95;191;;;
                                  -158647;1;0;false;false;;;;;;
                                  -158648;4;0;false;false;127;127;159;;;
                                  -158652;5;0;false;false;63;95;191;;;
                                  -158657;1;0;false;false;;;;;;
                                  -158658;5;0;false;false;63;95;191;;;
                                  -158663;1;0;false;false;;;;;;
                                  -158664;9;0;false;false;63;95;191;;;
                                  -158673;1;0;false;false;;;;;;
                                  -158674;6;0;false;false;63;95;191;;;
                                  -158680;1;0;false;false;;;;;;
                                  -158681;4;0;false;false;63;95;191;;;
                                  -158685;1;0;false;false;;;;;;
                                  -158686;6;0;false;false;63;95;191;;;
                                  -158692;3;0;false;false;;;;;;
                                  -158695;1;0;false;false;63;95;191;;;
                                  -158696;1;0;false;false;;;;;;
                                  -158697;5;0;false;false;127;127;159;;;
                                  -158702;3;0;false;false;;;;;;
                                  -158705;1;0;false;false;63;95;191;;;
                                  -158706;1;0;false;false;;;;;;
                                  -158707;4;0;false;false;127;127;159;;;
                                  -158711;3;0;false;false;;;;;;
                                  -158714;1;0;false;false;63;95;191;;;
                                  -158715;1;0;false;false;;;;;;
                                  -158716;3;0;false;false;127;127;159;;;
                                  -158719;3;0;false;false;;;;;;
                                  -158722;1;0;false;false;63;95;191;;;
                                  -158723;1;0;false;false;;;;;;
                                  -158724;6;0;false;false;63;95;191;;;
                                  -158730;1;0;false;false;;;;;;
                                  -158731;3;0;false;false;63;95;191;;;
                                  -158734;1;0;false;false;;;;;;
                                  -158735;7;0;false;false;63;95;191;;;
                                  -158742;1;0;false;false;;;;;;
                                  -158743;3;0;false;false;63;95;191;;;
                                  -158746;1;0;false;false;;;;;;
                                  -158747;2;0;false;false;63;95;191;;;
                                  -158749;1;0;false;false;;;;;;
                                  -158750;3;0;false;false;63;95;191;;;
                                  -158753;1;0;false;false;;;;;;
                                  -158754;9;0;false;false;63;95;191;;;
                                  -158763;1;0;false;false;;;;;;
                                  -158764;1;0;false;false;63;95;191;;;
                                  -158765;1;0;false;false;;;;;;
                                  -158766;5;0;false;false;63;95;191;;;
                                  -158771;2;0;false;false;;;;;;
                                  -158773;4;0;false;false;63;95;191;;;
                                  -158777;1;0;false;false;;;;;;
                                  -158778;6;0;false;false;63;95;191;;;
                                  -158784;1;0;false;false;;;;;;
                                  -158785;3;0;false;false;63;95;191;;;
                                  -158788;1;0;false;false;;;;;;
                                  -158789;7;0;false;false;63;95;191;;;
                                  -158796;4;0;false;false;;;;;;
                                  -158800;1;0;false;false;63;95;191;;;
                                  -158801;1;0;false;false;;;;;;
                                  -158802;2;0;false;false;63;95;191;;;
                                  -158804;1;0;false;false;;;;;;
                                  -158805;3;0;false;false;63;95;191;;;
                                  -158808;1;0;false;false;;;;;;
                                  -158809;5;0;false;false;63;95;191;;;
                                  -158814;3;0;false;false;;;;;;
                                  -158817;1;0;false;false;63;95;191;;;
                                  -158818;1;0;false;false;;;;;;
                                  -158819;4;0;false;false;127;127;159;;;
                                  -158823;3;0;false;false;;;;;;
                                  -158826;2;0;false;false;63;95;191;;;
                                  -158828;2;0;false;false;;;;;;
                                  -158830;3;1;false;false;127;0;85;;;
                                  -158833;1;0;false;false;;;;;;
                                  -158834;19;0;false;false;0;0;0;;;
                                  -158853;3;1;false;false;127;0;85;;;
                                  -158856;1;0;false;false;;;;;;
                                  -158857;7;0;false;false;0;0;0;;;
                                  -158864;1;0;false;false;;;;;;
                                  -158865;1;0;false;false;0;0;0;;;
                                  -158866;3;0;false;false;;;;;;
                                  -158869;3;1;false;false;127;0;85;;;
                                  -158872;1;0;false;false;;;;;;
                                  -158873;4;0;false;false;0;0;0;;;
                                  -158877;1;0;false;false;;;;;;
                                  -158878;1;0;false;false;0;0;0;;;
                                  -158879;1;0;false;false;;;;;;
                                  -158880;39;0;false;false;0;0;0;;;
                                  -158919;3;0;false;false;;;;;;
                                  -158922;3;1;false;false;127;0;85;;;
                                  -158925;1;0;false;false;;;;;;
                                  -158926;10;0;false;false;0;0;0;;;
                                  -158936;1;0;false;false;;;;;;
                                  -158937;1;0;false;false;0;0;0;;;
                                  -158938;1;0;false;false;;;;;;
                                  -158939;37;0;false;false;0;0;0;;;
                                  -158976;3;0;false;false;;;;;;
                                  -158979;6;0;false;false;0;0;0;;;
                                  -158985;1;0;false;false;;;;;;
                                  -158986;8;0;false;false;0;0;0;;;
                                  -158994;1;0;false;false;;;;;;
                                  -158995;1;0;false;false;0;0;0;;;
                                  -158996;1;0;false;false;;;;;;
                                  -158997;29;0;false;false;0;0;0;;;
                                  -159026;3;0;false;false;;;;;;
                                  -159029;3;1;false;false;127;0;85;;;
                                  -159032;1;0;false;false;;;;;;
                                  -159033;10;0;false;false;0;0;0;;;
                                  -159043;1;0;false;false;;;;;;
                                  -159044;1;0;false;false;0;0;0;;;
                                  -159045;1;0;false;false;;;;;;
                                  -159046;18;0;false;false;0;0;0;;;
                                  -159064;6;0;false;false;;;;;;
                                  -159070;2;1;false;false;127;0;85;;;
                                  -159072;1;0;false;false;;;;;;
                                  -159073;7;0;false;false;0;0;0;;;
                                  -159080;1;0;false;false;;;;;;
                                  -159081;2;0;false;false;0;0;0;;;
                                  -159083;1;0;false;false;;;;;;
                                  -159084;15;0;false;false;0;0;0;;;
                                  -159099;1;0;false;false;;;;;;
                                  -159100;1;0;false;false;0;0;0;;;
                                  -159101;4;0;false;false;;;;;;
                                  -159105;6;1;false;false;127;0;85;;;
                                  -159111;1;0;false;false;;;;;;
                                  -159112;7;0;false;false;0;0;0;;;
                                  -159119;3;0;false;false;;;;;;
                                  -159122;1;0;false;false;0;0;0;;;
                                  -159123;3;0;false;false;;;;;;
                                  -159126;2;1;false;false;127;0;85;;;
                                  -159128;1;0;false;false;;;;;;
                                  -159129;7;0;false;false;0;0;0;;;
                                  -159136;1;0;false;false;;;;;;
                                  -159137;2;0;false;false;0;0;0;;;
                                  -159139;1;0;false;false;;;;;;
                                  -159140;10;0;false;false;0;0;0;;;
                                  -159150;1;0;false;false;;;;;;
                                  -159151;1;0;false;false;0;0;0;;;
                                  -159152;1;0;false;false;;;;;;
                                  -159153;11;0;false;false;0;0;0;;;
                                  -159164;1;0;false;false;;;;;;
                                  -159165;1;0;false;false;0;0;0;;;
                                  -159166;4;0;false;false;;;;;;
                                  -159170;7;0;false;false;0;0;0;;;
                                  -159177;4;0;false;false;;;;;;
                                  -159181;6;0;false;false;0;0;0;;;
                                  -159187;1;0;false;false;;;;;;
                                  -159188;1;0;false;false;0;0;0;;;
                                  -159189;1;0;false;false;;;;;;
                                  -159190;37;0;false;false;0;0;0;;;
                                  -159227;3;0;false;false;;;;;;
                                  -159230;1;0;false;false;0;0;0;;;
                                  -159231;3;0;false;false;;;;;;
                                  -159234;4;1;false;false;127;0;85;;;
                                  -159238;1;0;false;false;;;;;;
                                  -159239;1;0;false;false;0;0;0;;;
                                  -159240;4;0;false;false;;;;;;
                                  -159244;6;0;false;false;0;0;0;;;
                                  -159250;1;0;false;false;;;;;;
                                  -159251;2;0;false;false;0;0;0;;;
                                  -159253;1;0;false;false;;;;;;
                                  -159254;11;0;false;false;0;0;0;;;
                                  -159265;4;0;false;false;;;;;;
                                  -159269;4;1;false;false;127;0;85;;;
                                  -159273;1;0;false;false;;;;;;
                                  -159274;2;0;false;false;0;0;0;;;
                                  -159276;1;0;false;false;;;;;;
                                  -159277;1;0;false;false;0;0;0;;;
                                  -159278;1;0;false;false;;;;;;
                                  -159279;24;0;false;false;0;0;0;;;
                                  -159303;4;0;false;false;;;;;;
                                  -159307;7;1;false;false;127;0;85;;;
                                  -159314;1;0;false;false;;;;;;
                                  -159315;13;0;false;false;0;0;0;;;
                                  -159328;1;0;false;false;;;;;;
                                  -159329;1;0;false;false;0;0;0;;;
                                  -159330;1;0;false;false;;;;;;
                                  -159331;34;0;false;false;0;0;0;;;
                                  -159365;8;0;false;false;;;;;;
                                  -159373;5;1;false;false;127;0;85;;;
                                  -159378;1;0;false;false;;;;;;
                                  -159379;7;0;false;false;0;0;0;;;
                                  -159386;1;0;false;false;;;;;;
                                  -159387;1;0;false;false;0;0;0;;;
                                  -159388;1;0;false;false;;;;;;
                                  -159389;10;0;false;false;0;0;0;;;
                                  -159399;1;0;false;false;;;;;;
                                  -159400;1;0;false;false;0;0;0;;;
                                  -159401;1;0;false;false;;;;;;
                                  -159402;1;0;false;false;0;0;0;;;
                                  -159403;1;0;false;false;;;;;;
                                  -159404;2;0;false;false;0;0;0;;;
                                  -159406;1;0;false;false;;;;;;
                                  -159407;33;0;false;false;0;0;0;;;
                                  -159440;1;0;false;false;;;;;;
                                  -159441;2;0;false;false;0;0;0;;;
                                  -159443;1;0;false;false;;;;;;
                                  -159444;13;0;false;false;0;0;0;;;
                                  -159457;1;0;false;false;;;;;;
                                  -159458;2;0;false;false;0;0;0;;;
                                  -159460;1;0;false;false;;;;;;
                                  -159461;31;0;false;false;0;0;0;;;
                                  -159492;1;0;false;false;;;;;;
                                  -159493;1;0;false;false;0;0;0;;;
                                  -159494;5;0;false;false;;;;;;
                                  -159499;9;0;false;false;0;0;0;;;
                                  -159508;5;0;false;false;;;;;;
                                  -159513;2;0;false;false;0;0;0;;;
                                  -159515;1;0;false;false;;;;;;
                                  -159516;1;0;false;false;0;0;0;;;
                                  -159517;1;0;false;false;;;;;;
                                  -159518;24;0;false;false;0;0;0;;;
                                  -159542;4;0;false;false;;;;;;
                                  -159546;1;0;false;false;0;0;0;;;
                                  -159547;4;0;false;false;;;;;;
                                  -159551;2;1;false;false;127;0;85;;;
                                  -159553;1;0;false;false;;;;;;
                                  -159554;7;0;false;false;0;0;0;;;
                                  -159561;1;0;false;false;;;;;;
                                  -159562;2;0;false;false;0;0;0;;;
                                  -159564;1;0;false;false;;;;;;
                                  -159565;10;0;false;false;0;0;0;;;
                                  -159575;1;0;false;false;;;;;;
                                  -159576;1;0;false;false;0;0;0;;;
                                  -159577;1;0;false;false;;;;;;
                                  -159578;1;0;false;false;0;0;0;;;
                                  -159579;1;0;false;false;;;;;;
                                  -159580;2;0;false;false;0;0;0;;;
                                  -159582;1;0;false;false;;;;;;
                                  -159583;33;0;false;false;0;0;0;;;
                                  -159616;1;0;false;false;;;;;;
                                  -159617;2;0;false;false;0;0;0;;;
                                  -159619;1;0;false;false;;;;;;
                                  -159620;13;0;false;false;0;0;0;;;
                                  -159633;1;0;false;false;;;;;;
                                  -159634;2;0;false;false;0;0;0;;;
                                  -159636;1;0;false;false;;;;;;
                                  -159637;31;0;false;false;0;0;0;;;
                                  -159668;1;0;false;false;;;;;;
                                  -159669;1;0;false;false;0;0;0;;;
                                  -159670;5;0;false;false;;;;;;
                                  -159675;9;0;false;false;0;0;0;;;
                                  -159684;4;0;false;false;;;;;;
                                  -159688;1;0;false;false;0;0;0;;;
                                  -159689;4;0;false;false;;;;;;
                                  -159693;6;0;false;false;0;0;0;;;
                                  -159699;1;0;false;false;;;;;;
                                  -159700;2;0;false;false;0;0;0;;;
                                  -159702;1;0;false;false;;;;;;
                                  -159703;11;0;false;false;0;0;0;;;
                                  -159714;3;0;false;false;;;;;;
                                  -159717;1;0;false;false;0;0;0;;;
                                  -159718;3;0;false;false;;;;;;
                                  -159721;6;1;false;false;127;0;85;;;
                                  -159727;1;0;false;false;;;;;;
                                  -159728;7;0;false;false;0;0;0;;;
                                  -159735;2;0;false;false;;;;;;
                                  -159737;1;0;false;false;0;0;0;;;
                                  -159738;2;0;false;false;;;;;;
                                  -159740;3;0;false;false;63;95;191;;;
                                  -159743;3;0;false;false;;;;;;
                                  -159746;1;0;false;false;63;95;191;;;
                                  -159747;1;0;false;false;;;;;;
                                  -159748;7;0;false;false;63;95;191;;;
                                  -159755;1;0;false;false;;;;;;
                                  -159756;3;0;false;false;63;95;191;;;
                                  -159759;1;0;false;false;;;;;;
                                  -159760;5;0;false;false;63;95;191;;;
                                  -159765;1;0;false;false;;;;;;
                                  -159766;6;0;false;false;63;95;191;;;
                                  -159772;1;0;false;false;;;;;;
                                  -159773;2;0;false;false;63;95;191;;;
                                  -159775;1;0;false;false;;;;;;
                                  -159776;3;0;false;false;63;95;191;;;
                                  -159779;1;0;false;false;;;;;;
                                  -159780;4;0;false;false;63;95;191;;;
                                  -159784;1;0;false;false;;;;;;
                                  -159785;2;0;false;false;63;95;191;;;
                                  -159787;1;0;false;false;;;;;;
                                  -159788;3;0;false;false;63;95;191;;;
                                  -159791;1;0;false;false;;;;;;
                                  -159792;9;0;false;false;63;95;191;;;
                                  -159801;1;0;false;false;;;;;;
                                  -159802;7;0;false;false;63;95;191;;;
                                  -159809;3;0;false;false;;;;;;
                                  -159812;1;0;false;false;63;95;191;;;
                                  -159813;1;0;false;false;;;;;;
                                  -159814;5;0;false;false;63;95;191;;;
                                  -159819;1;0;false;false;;;;;;
                                  -159820;3;0;false;false;63;95;191;;;
                                  -159823;1;0;false;false;;;;;;
                                  -159824;3;0;false;false;63;95;191;;;
                                  -159827;1;0;false;false;;;;;;
                                  -159828;7;0;false;false;63;95;191;;;
                                  -159835;1;0;false;false;;;;;;
                                  -159836;2;0;false;false;63;95;191;;;
                                  -159838;1;0;false;false;;;;;;
                                  -159839;5;0;false;false;63;95;191;;;
                                  -159844;1;0;false;false;;;;;;
                                  -159845;6;0;false;false;63;95;191;;;
                                  -159851;1;0;false;false;;;;;;
                                  -159852;2;0;false;false;63;95;191;;;
                                  -159854;1;0;false;false;;;;;;
                                  -159855;1;0;false;false;63;95;191;;;
                                  -159856;1;0;false;false;;;;;;
                                  -159857;8;0;false;false;63;95;191;;;
                                  -159865;1;0;false;false;;;;;;
                                  -159866;2;0;false;false;63;95;191;;;
                                  -159868;1;0;false;false;;;;;;
                                  -159869;11;0;false;false;63;95;191;;;
                                  -159880;3;0;false;false;;;;;;
                                  -159883;1;0;false;false;63;95;191;;;
                                  -159884;1;0;false;false;;;;;;
                                  -159885;3;0;false;false;127;127;159;;;
                                  -159888;3;0;false;false;;;;;;
                                  -159891;1;0;false;false;63;95;191;;;
                                  -159892;1;0;false;false;;;;;;
                                  -159893;4;0;false;false;127;127;159;;;
                                  -159897;3;0;false;false;;;;;;
                                  -159900;1;0;false;false;63;95;191;;;
                                  -159901;1;0;false;false;;;;;;
                                  -159902;4;0;false;false;127;127;159;;;
                                  -159906;4;0;false;false;63;95;191;;;
                                  -159910;1;0;false;false;;;;;;
                                  -159911;1;0;false;false;63;95;191;;;
                                  -159912;1;0;false;false;127;127;159;;;
                                  -159913;1;0;false;false;63;95;191;;;
                                  -159914;1;0;false;false;;;;;;
                                  -159915;3;0;false;false;63;95;191;;;
                                  -159918;1;0;false;false;;;;;;
                                  -159919;1;0;false;false;63;95;191;;;
                                  -159920;1;0;false;false;127;127;159;;;
                                  -159921;1;0;false;false;63;95;191;;;
                                  -159922;1;0;false;false;;;;;;
                                  -159923;6;0;false;false;63;95;191;;;
                                  -159929;1;0;false;false;;;;;;
                                  -159930;2;0;false;false;63;95;191;;;
                                  -159932;1;0;false;false;127;127;159;;;
                                  -159933;2;0;false;false;63;95;191;;;
                                  -159935;1;0;false;false;;;;;;
                                  -159936;3;0;false;false;63;95;191;;;
                                  -159939;1;0;false;false;;;;;;
                                  -159940;2;0;false;false;63;95;191;;;
                                  -159942;1;0;false;false;127;127;159;;;
                                  -159943;4;0;false;false;63;95;191;;;
                                  -159947;3;0;false;false;;;;;;
                                  -159950;1;0;false;false;63;95;191;;;
                                  -159951;1;0;false;false;;;;;;
                                  -159952;4;0;false;false;127;127;159;;;
                                  -159956;5;0;false;false;63;95;191;;;
                                  -159961;1;0;false;false;;;;;;
                                  -159962;5;0;false;false;63;95;191;;;
                                  -159967;1;0;false;false;;;;;;
                                  -159968;9;0;false;false;63;95;191;;;
                                  -159977;1;0;false;false;;;;;;
                                  -159978;6;0;false;false;63;95;191;;;
                                  -159984;1;0;false;false;;;;;;
                                  -159985;4;0;false;false;63;95;191;;;
                                  -159989;1;0;false;false;;;;;;
                                  -159990;6;0;false;false;63;95;191;;;
                                  -159996;3;0;false;false;;;;;;
                                  -159999;1;0;false;false;63;95;191;;;
                                  -160000;1;0;false;false;;;;;;
                                  -160001;5;0;false;false;127;127;159;;;
                                  -160006;3;0;false;false;;;;;;
                                  -160009;1;0;false;false;63;95;191;;;
                                  -160010;1;0;false;false;;;;;;
                                  -160011;4;0;false;false;127;127;159;;;
                                  -160015;3;0;false;false;;;;;;
                                  -160018;1;0;false;false;63;95;191;;;
                                  -160019;1;0;false;false;;;;;;
                                  -160020;3;0;false;false;127;127;159;;;
                                  -160023;3;0;false;false;;;;;;
                                  -160026;1;0;false;false;63;95;191;;;
                                  -160027;1;0;false;false;;;;;;
                                  -160028;5;0;false;false;63;95;191;;;
                                  -160033;1;0;false;false;;;;;;
                                  -160034;10;0;false;false;63;95;191;;;
                                  -160044;1;0;false;false;;;;;;
                                  -160045;1;0;false;false;63;95;191;;;
                                  -160046;1;0;false;false;;;;;;
                                  -160047;1;0;false;false;63;95;191;;;
                                  -160048;1;0;false;false;;;;;;
                                  -160049;6;0;false;false;63;95;191;;;
                                  -160055;1;0;false;false;;;;;;
                                  -160056;3;0;false;false;63;95;191;;;
                                  -160059;1;0;false;false;;;;;;
                                  -160060;3;0;false;false;63;95;191;;;
                                  -160063;1;0;false;false;;;;;;
                                  -160064;7;0;false;false;63;95;191;;;
                                  -160071;1;0;false;false;;;;;;
                                  -160072;2;0;false;false;63;95;191;;;
                                  -160074;1;0;false;false;;;;;;
                                  -160075;4;0;false;false;63;95;191;;;
                                  -160079;1;0;false;false;;;;;;
                                  -160080;3;0;false;false;63;95;191;;;
                                  -160083;1;0;false;false;;;;;;
                                  -160084;7;0;false;false;63;95;191;;;
                                  -160091;1;0;false;false;;;;;;
                                  -160092;2;0;false;false;63;95;191;;;
                                  -160094;3;0;false;false;;;;;;
                                  -160097;1;0;false;false;63;95;191;;;
                                  -160098;1;0;false;false;;;;;;
                                  -160099;4;0;false;false;63;95;191;;;
                                  -160103;1;0;false;false;;;;;;
                                  -160104;2;0;false;false;63;95;191;;;
                                  -160106;1;0;false;false;;;;;;
                                  -160107;3;0;false;false;63;95;191;;;
                                  -160110;1;0;false;false;;;;;;
                                  -160111;4;0;false;false;63;95;191;;;
                                  -160115;1;0;false;false;;;;;;
                                  -160116;7;0;false;false;63;95;191;;;
                                  -160123;1;0;false;false;;;;;;
                                  -160124;2;0;false;false;63;95;191;;;
                                  -160126;1;0;false;false;;;;;;
                                  -160127;2;0;false;false;63;95;191;;;
                                  -160129;1;0;false;false;;;;;;
                                  -160130;3;0;false;false;63;95;191;;;
                                  -160133;1;0;false;false;;;;;;
                                  -160134;5;0;false;false;63;95;191;;;
                                  -160139;1;0;false;false;;;;;;
                                  -160140;10;0;false;false;63;95;191;;;
                                  -160150;2;0;false;false;;;;;;
                                  -160152;4;0;false;false;63;95;191;;;
                                  -160156;1;0;false;false;;;;;;
                                  -160157;6;0;false;false;63;95;191;;;
                                  -160163;1;0;false;false;;;;;;
                                  -160164;3;0;false;false;63;95;191;;;
                                  -160167;1;0;false;false;;;;;;
                                  -160168;7;0;false;false;63;95;191;;;
                                  -160175;4;0;false;false;;;;;;
                                  -160179;1;0;false;false;63;95;191;;;
                                  -160180;1;0;false;false;;;;;;
                                  -160181;2;0;false;false;63;95;191;;;
                                  -160183;1;0;false;false;;;;;;
                                  -160184;3;0;false;false;63;95;191;;;
                                  -160187;1;0;false;false;;;;;;
                                  -160188;5;0;false;false;63;95;191;;;
                                  -160193;3;0;false;false;;;;;;
                                  -160196;1;0;false;false;63;95;191;;;
                                  -160197;1;0;false;false;;;;;;
                                  -160198;4;0;false;false;127;127;159;;;
                                  -160202;3;0;false;false;;;;;;
                                  -160205;2;0;false;false;63;95;191;;;
                                  -160207;2;0;false;false;;;;;;
                                  -160209;3;1;false;false;127;0;85;;;
                                  -160212;1;0;false;false;;;;;;
                                  -160213;13;0;false;false;0;0;0;;;
                                  -160226;3;1;false;false;127;0;85;;;
                                  -160229;1;0;false;false;;;;;;
                                  -160230;7;0;false;false;0;0;0;;;
                                  -160237;1;0;false;false;;;;;;
                                  -160238;1;0;false;false;0;0;0;;;
                                  -160239;3;0;false;false;;;;;;
                                  -160242;3;1;false;false;127;0;85;;;
                                  -160245;1;0;false;false;;;;;;
                                  -160246;4;0;false;false;0;0;0;;;
                                  -160250;1;0;false;false;;;;;;
                                  -160251;1;0;false;false;0;0;0;;;
                                  -160252;1;0;false;false;;;;;;
                                  -160253;39;0;false;false;0;0;0;;;
                                  -160292;3;0;false;false;;;;;;
                                  -160295;3;1;false;false;127;0;85;;;
                                  -160298;1;0;false;false;;;;;;
                                  -160299;10;0;false;false;0;0;0;;;
                                  -160309;1;0;false;false;;;;;;
                                  -160310;1;0;false;false;0;0;0;;;
                                  -160311;1;0;false;false;;;;;;
                                  -160312;37;0;false;false;0;0;0;;;
                                  -160349;3;0;false;false;;;;;;
                                  -160352;6;0;false;false;0;0;0;;;
                                  -160358;1;0;false;false;;;;;;
                                  -160359;8;0;false;false;0;0;0;;;
                                  -160367;1;0;false;false;;;;;;
                                  -160368;1;0;false;false;0;0;0;;;
                                  -160369;1;0;false;false;;;;;;
                                  -160370;29;0;false;false;0;0;0;;;
                                  -160399;5;0;false;false;;;;;;
                                  -160404;2;1;false;false;127;0;85;;;
                                  -160406;1;0;false;false;;;;;;
                                  -160407;7;0;false;false;0;0;0;;;
                                  -160414;1;0;false;false;;;;;;
                                  -160415;2;0;false;false;0;0;0;;;
                                  -160417;1;0;false;false;;;;;;
                                  -160418;2;0;false;false;0;0;0;;;
                                  -160420;1;0;false;false;;;;;;
                                  -160421;1;0;false;false;0;0;0;;;
                                  -160422;4;0;false;false;;;;;;
                                  -160426;6;1;false;false;127;0;85;;;
                                  -160432;1;0;false;false;;;;;;
                                  -160433;7;0;false;false;0;0;0;;;
                                  -160440;3;0;false;false;;;;;;
                                  -160443;1;0;false;false;0;0;0;;;
                                  -160444;3;0;false;false;;;;;;
                                  -160447;2;1;false;false;127;0;85;;;
                                  -160449;1;0;false;false;;;;;;
                                  -160450;7;0;false;false;0;0;0;;;
                                  -160457;1;0;false;false;;;;;;
                                  -160458;2;0;false;false;0;0;0;;;
                                  -160460;1;0;false;false;;;;;;
                                  -160461;11;0;false;false;0;0;0;;;
                                  -160472;1;0;false;false;;;;;;
                                  -160473;1;0;false;false;0;0;0;;;
                                  -160474;4;0;false;false;;;;;;
                                  -160478;7;0;false;false;0;0;0;;;
                                  -160485;4;0;false;false;;;;;;
                                  -160489;8;0;false;false;0;0;0;;;
                                  -160497;1;0;false;false;;;;;;
                                  -160498;1;0;false;false;0;0;0;;;
                                  -160499;1;0;false;false;;;;;;
                                  -160500;29;0;false;false;0;0;0;;;
                                  -160529;4;0;false;false;;;;;;
                                  -160533;6;0;false;false;0;0;0;;;
                                  -160539;1;0;false;false;;;;;;
                                  -160540;1;0;false;false;0;0;0;;;
                                  -160541;1;0;false;false;;;;;;
                                  -160542;36;0;false;false;0;0;0;;;
                                  -160578;1;0;false;false;;;;;;
                                  -160579;1;0;false;false;0;0;0;;;
                                  -160580;1;0;false;false;;;;;;
                                  -160581;18;0;false;false;0;0;0;;;
                                  -160599;3;0;false;false;;;;;;
                                  -160602;1;0;false;false;0;0;0;;;
                                  -160603;3;0;false;false;;;;;;
                                  -160606;4;1;false;false;127;0;85;;;
                                  -160610;1;0;false;false;;;;;;
                                  -160611;1;0;false;false;0;0;0;;;
                                  -160612;4;0;false;false;;;;;;
                                  -160616;10;0;false;false;0;0;0;;;
                                  -160626;1;0;false;false;;;;;;
                                  -160627;6;0;false;false;0;0;0;;;
                                  -160633;1;0;false;false;;;;;;
                                  -160634;1;0;false;false;0;0;0;;;
                                  -160635;1;0;false;false;;;;;;
                                  -160636;32;0;false;false;0;0;0;;;
                                  -160668;1;0;false;false;;;;;;
                                  -160669;12;0;false;false;0;0;0;;;
                                  -160681;4;0;false;false;;;;;;
                                  -160685;6;0;false;false;0;0;0;;;
                                  -160691;1;0;false;false;;;;;;
                                  -160692;2;0;false;false;0;0;0;;;
                                  -160694;1;0;false;false;;;;;;
                                  -160695;11;0;false;false;0;0;0;;;
                                  -160706;4;0;false;false;;;;;;
                                  -160710;6;0;false;false;0;0;0;;;
                                  -160716;1;0;false;false;;;;;;
                                  -160717;1;0;false;false;0;0;0;;;
                                  -160718;1;0;false;false;;;;;;
                                  -160719;32;0;false;false;0;0;0;;;
                                  -160751;1;0;false;false;;;;;;
                                  -160752;19;0;false;false;0;0;0;;;
                                  -160771;4;0;false;false;;;;;;
                                  -160775;6;0;false;false;0;0;0;;;
                                  -160781;1;0;false;false;;;;;;
                                  -160782;2;0;false;false;0;0;0;;;
                                  -160784;1;0;false;false;;;;;;
                                  -160785;11;0;false;false;0;0;0;;;
                                  -160796;4;0;false;false;;;;;;
                                  -160800;35;0;false;false;0;0;0;;;
                                  -160835;4;0;false;false;;;;;;
                                  -160839;1;0;false;false;0;0;0;;;
                                  -160840;3;0;false;false;;;;;;
                                  -160843;6;1;false;false;127;0;85;;;
                                  -160849;1;0;false;false;;;;;;
                                  -160850;7;0;false;false;0;0;0;;;
                                  -160857;2;0;false;false;;;;;;
                                  -160859;1;0;false;false;0;0;0;;;
                                  -160860;2;0;false;false;;;;;;
                                  -160862;3;0;false;false;63;95;191;;;
                                  -160865;3;0;false;false;;;;;;
                                  -160868;1;0;false;false;63;95;191;;;
                                  -160869;1;0;false;false;;;;;;
                                  -160870;7;0;false;false;63;95;191;;;
                                  -160877;1;0;false;false;;;;;;
                                  -160878;7;0;false;false;63;95;191;;;
                                  -160885;1;0;false;false;;;;;;
                                  -160886;3;0;false;false;63;95;191;;;
                                  -160889;1;0;false;false;;;;;;
                                  -160890;6;0;false;false;63;95;191;;;
                                  -160896;1;0;false;false;;;;;;
                                  -160897;5;0;false;false;63;95;191;;;
                                  -160902;1;0;false;false;;;;;;
                                  -160903;6;0;false;false;63;95;191;;;
                                  -160909;3;0;false;false;;;;;;
                                  -160912;1;0;false;false;63;95;191;;;
                                  -160913;1;0;false;false;;;;;;
                                  -160914;3;0;false;false;127;127;159;;;
                                  -160917;3;0;false;false;;;;;;
                                  -160920;1;0;false;false;63;95;191;;;
                                  -160921;3;0;false;false;;;;;;
                                  -160924;1;0;false;false;63;95;191;;;
                                  -160925;1;0;false;false;;;;;;
                                  -160926;8;1;false;false;127;159;191;;;
                                  -160934;4;0;false;false;63;95;191;;;
                                  -160938;1;0;false;false;;;;;;
                                  -160939;2;0;false;false;63;95;191;;;
                                  -160941;1;0;false;false;;;;;;
                                  -160942;6;0;false;false;63;95;191;;;
                                  -160948;1;0;false;false;;;;;;
                                  -160949;5;0;false;false;63;95;191;;;
                                  -160954;1;0;false;false;;;;;;
                                  -160955;6;0;false;false;63;95;191;;;
                                  -160961;1;0;false;false;;;;;;
                                  -160962;5;0;false;false;63;95;191;;;
                                  -160967;1;0;false;false;;;;;;
                                  -160968;9;0;false;false;63;95;191;;;
                                  -160977;3;0;false;false;;;;;;
                                  -160980;1;0;false;false;63;95;191;;;
                                  -160981;1;0;false;false;;;;;;
                                  -160982;7;1;false;false;127;159;191;;;
                                  -160989;3;0;false;false;63;95;191;;;
                                  -160992;3;0;false;false;;;;;;
                                  -160995;2;0;false;false;63;95;191;;;
                                  -160997;2;0;false;false;;;;;;
                                  -160999;6;1;false;false;127;0;85;;;
                                  -161005;1;0;false;false;;;;;;
                                  -161006;7;1;false;false;127;0;85;;;
                                  -161013;1;0;false;false;;;;;;
                                  -161014;13;0;false;false;0;0;0;;;
                                  -161027;1;0;false;false;;;;;;
                                  -161028;1;0;false;false;0;0;0;;;
                                  -161029;3;0;false;false;;;;;;
                                  -161032;14;0;false;false;0;0;0;;;
                                  -161046;3;0;false;false;;;;;;
                                  -161049;6;1;false;false;127;0;85;;;
                                  -161055;1;0;false;false;;;;;;
                                  -161056;9;0;false;false;0;0;0;;;
                                  -161065;2;0;false;false;;;;;;
                                  -161067;1;0;false;false;0;0;0;;;
                                  -161068;2;0;false;false;;;;;;
                                  -161070;3;0;false;false;63;95;191;;;
                                  -161073;4;0;false;false;;;;;;
                                  -161077;1;0;false;false;63;95;191;;;
                                  -161078;1;0;false;false;;;;;;
                                  -161079;7;0;false;false;63;95;191;;;
                                  -161086;1;0;false;false;;;;;;
                                  -161087;3;0;false;false;63;95;191;;;
                                  -161090;1;0;false;false;;;;;;
                                  -161091;1;0;false;false;63;95;191;;;
                                  -161092;1;0;false;false;;;;;;
                                  -161093;8;0;false;false;63;95;191;;;
                                  -161101;1;0;false;false;;;;;;
                                  -161102;2;0;false;false;63;95;191;;;
                                  -161104;1;0;false;false;;;;;;
                                  -161105;3;0;false;false;63;95;191;;;
                                  -161108;1;0;false;false;;;;;;
                                  -161109;9;0;false;false;63;95;191;;;
                                  -161118;1;0;false;false;;;;;;
                                  -161119;2;0;false;false;63;95;191;;;
                                  -161121;1;0;false;false;;;;;;
                                  -161122;3;0;false;false;63;95;191;;;
                                  -161125;1;0;false;false;;;;;;
                                  -161126;4;0;false;false;63;95;191;;;
                                  -161130;1;0;false;false;;;;;;
                                  -161131;6;0;false;false;63;95;191;;;
                                  -161137;1;0;false;false;;;;;;
                                  -161138;2;0;false;false;63;95;191;;;
                                  -161140;1;0;false;false;;;;;;
                                  -161141;3;0;false;false;63;95;191;;;
                                  -161144;1;0;false;false;;;;;;
                                  -161145;5;0;false;false;63;95;191;;;
                                  -161150;3;0;false;false;;;;;;
                                  -161153;1;0;false;false;63;95;191;;;
                                  -161154;1;0;false;false;;;;;;
                                  -161155;3;0;false;false;127;127;159;;;
                                  -161158;5;0;false;false;63;95;191;;;
                                  -161163;4;0;false;false;127;127;159;;;
                                  -161167;1;0;false;false;;;;;;
                                  -161168;4;0;false;false;63;95;191;;;
                                  -161172;1;0;false;false;;;;;;
                                  -161173;3;0;false;false;63;95;191;;;
                                  -161176;1;0;false;false;;;;;;
                                  -161177;6;0;false;false;63;95;191;;;
                                  -161183;1;0;false;false;;;;;;
                                  -161184;7;0;false;false;63;95;191;;;
                                  -161191;1;0;false;false;;;;;;
                                  -161192;6;0;false;false;63;95;191;;;
                                  -161198;1;0;false;false;;;;;;
                                  -161199;3;0;false;false;63;95;191;;;
                                  -161202;1;0;false;false;;;;;;
                                  -161203;4;0;false;false;63;95;191;;;
                                  -161207;1;0;false;false;;;;;;
                                  -161208;6;0;false;false;63;95;191;;;
                                  -161214;1;0;false;false;;;;;;
                                  -161215;5;0;false;false;63;95;191;;;
                                  -161220;1;0;false;false;;;;;;
                                  -161221;4;0;false;false;63;95;191;;;
                                  -161225;1;0;false;false;;;;;;
                                  -161226;7;0;false;false;63;95;191;;;
                                  -161233;1;0;false;false;;;;;;
                                  -161234;7;0;false;false;63;95;191;;;
                                  -161241;3;0;false;false;;;;;;
                                  -161244;1;0;false;false;63;95;191;;;
                                  -161245;1;0;false;false;;;;;;
                                  -161246;3;0;false;false;127;127;159;;;
                                  -161249;3;0;false;false;;;;;;
                                  -161252;1;0;false;false;63;95;191;;;
                                  -161253;3;0;false;false;;;;;;
                                  -161256;1;0;false;false;63;95;191;;;
                                  -161257;1;0;false;false;;;;;;
                                  -161258;8;1;false;false;127;159;191;;;
                                  -161266;1;0;false;false;63;95;191;;;
                                  -161267;1;0;false;false;;;;;;
                                  -161268;8;0;false;false;63;95;191;;;
                                  -161276;1;0;false;false;;;;;;
                                  -161277;2;0;false;false;63;95;191;;;
                                  -161279;1;0;false;false;;;;;;
                                  -161280;3;0;false;false;63;95;191;;;
                                  -161283;1;0;false;false;;;;;;
                                  -161284;9;0;false;false;63;95;191;;;
                                  -161293;1;0;false;false;;;;;;
                                  -161294;2;0;false;false;63;95;191;;;
                                  -161296;1;0;false;false;;;;;;
                                  -161297;3;0;false;false;63;95;191;;;
                                  -161300;1;0;false;false;;;;;;
                                  -161301;5;0;false;false;63;95;191;;;
                                  -161306;1;0;false;false;;;;;;
                                  -161307;6;0;false;false;63;95;191;;;
                                  -161313;1;0;false;false;;;;;;
                                  -161314;2;0;false;false;63;95;191;;;
                                  -161316;1;0;false;false;;;;;;
                                  -161317;3;0;false;false;63;95;191;;;
                                  -161320;1;0;false;false;;;;;;
                                  -161321;5;0;false;false;63;95;191;;;
                                  -161326;3;0;false;false;;;;;;
                                  -161329;2;0;false;false;63;95;191;;;
                                  -161331;2;0;false;false;;;;;;
                                  -161333;3;1;false;false;127;0;85;;;
                                  -161336;1;0;false;false;;;;;;
                                  -161337;19;0;false;false;0;0;0;;;
                                  -161356;1;0;false;false;;;;;;
                                  -161357;5;0;false;false;0;0;0;;;
                                  -161362;1;0;false;false;;;;;;
                                  -161363;3;1;false;false;127;0;85;;;
                                  -161366;1;0;false;false;;;;;;
                                  -161367;10;0;false;false;0;0;0;;;
                                  -161377;1;0;false;false;;;;;;
                                  -161378;3;1;false;false;127;0;85;;;
                                  -161381;1;0;false;false;;;;;;
                                  -161382;13;0;false;false;0;0;0;;;
                                  -161395;1;0;false;false;;;;;;
                                  -161396;1;0;false;false;0;0;0;;;
                                  -161397;3;0;false;false;;;;;;
                                  -161400;3;1;false;false;127;0;85;;;
                                  -161403;1;0;false;false;;;;;;
                                  -161404;1;0;false;false;0;0;0;;;
                                  -161405;1;0;false;false;;;;;;
                                  -161406;1;0;false;false;0;0;0;;;
                                  -161407;1;0;false;false;;;;;;
                                  -161408;2;0;false;false;0;0;0;;;
                                  -161410;3;0;false;false;;;;;;
                                  -161413;3;1;false;false;127;0;85;;;
                                  -161416;1;0;false;false;;;;;;
                                  -161417;10;0;false;false;0;0;0;;;
                                  -161427;1;0;false;false;;;;;;
                                  -161428;1;0;false;false;0;0;0;;;
                                  -161429;1;0;false;false;;;;;;
                                  -161430;14;0;false;false;0;0;0;;;
                                  -161444;3;0;false;false;;;;;;
                                  -161447;2;1;false;false;127;0;85;;;
                                  -161449;1;0;false;false;;;;;;
                                  -161450;10;0;false;false;0;0;0;;;
                                  -161460;1;0;false;false;;;;;;
                                  -161461;1;0;false;false;0;0;0;;;
                                  -161462;1;0;false;false;;;;;;
                                  -161463;22;0;false;false;0;0;0;;;
                                  -161485;1;0;false;false;;;;;;
                                  -161486;1;0;false;false;0;0;0;;;
                                  -161487;1;0;false;false;;;;;;
                                  -161488;2;0;false;false;0;0;0;;;
                                  -161490;1;0;false;false;;;;;;
                                  -161491;1;0;false;false;0;0;0;;;
                                  -161492;4;0;false;false;;;;;;
                                  -161496;3;1;false;false;127;0;85;;;
                                  -161499;1;0;false;false;;;;;;
                                  -161500;13;0;false;false;0;0;0;;;
                                  -161513;1;0;false;false;;;;;;
                                  -161514;1;0;false;false;0;0;0;;;
                                  -161515;1;0;false;false;;;;;;
                                  -161516;33;0;false;false;0;0;0;;;
                                  -161549;1;0;false;false;;;;;;
                                  -161550;1;0;false;false;0;0;0;;;
                                  -161551;1;0;false;false;;;;;;
                                  -161552;2;0;false;false;0;0;0;;;
                                  -161554;1;0;false;false;;;;;;
                                  -161555;1;0;false;false;0;0;0;;;
                                  -161556;1;0;false;false;;;;;;
                                  -161557;2;0;false;false;0;0;0;;;
                                  -161559;4;0;false;false;;;;;;
                                  -161563;2;1;false;false;127;0;85;;;
                                  -161565;1;0;false;false;;;;;;
                                  -161566;11;0;false;false;0;0;0;;;
                                  -161577;1;0;false;false;;;;;;
                                  -161578;1;0;false;false;0;0;0;;;
                                  -161579;1;0;false;false;;;;;;
                                  -161580;12;0;false;false;0;0;0;;;
                                  -161592;1;0;false;false;;;;;;
                                  -161593;2;0;false;false;0;0;0;;;
                                  -161595;1;0;false;false;;;;;;
                                  -161596;12;0;false;false;0;0;0;;;
                                  -161608;1;0;false;false;;;;;;
                                  -161609;2;0;false;false;0;0;0;;;
                                  -161611;1;0;false;false;;;;;;
                                  -161612;14;0;false;false;0;0;0;;;
                                  -161626;1;0;false;false;;;;;;
                                  -161627;1;0;false;false;0;0;0;;;
                                  -161628;5;0;false;false;;;;;;
                                  -161633;12;0;false;false;0;0;0;;;
                                  -161645;1;0;false;false;;;;;;
                                  -161646;1;0;false;false;0;0;0;;;
                                  -161647;1;0;false;false;;;;;;
                                  -161648;11;0;false;false;0;0;0;;;
                                  -161659;4;0;false;false;;;;;;
                                  -161663;1;0;false;false;0;0;0;;;
                                  -161664;3;0;false;false;;;;;;
                                  -161667;1;0;false;false;0;0;0;;;
                                  -161668;3;0;false;false;;;;;;
                                  -161671;2;1;false;false;127;0;85;;;
                                  -161673;1;0;false;false;;;;;;
                                  -161674;11;0;false;false;0;0;0;;;
                                  -161685;1;0;false;false;;;;;;
                                  -161686;2;0;false;false;0;0;0;;;
                                  -161688;1;0;false;false;;;;;;
                                  -161689;1;0;false;false;0;0;0;;;
                                  -161690;2;0;false;false;;;;;;
                                  -161692;2;0;false;false;0;0;0;;;
                                  -161694;1;0;false;false;;;;;;
                                  -161695;12;0;false;false;0;0;0;;;
                                  -161707;1;0;false;false;;;;;;
                                  -161708;2;0;false;false;0;0;0;;;
                                  -161710;1;0;false;false;;;;;;
                                  -161711;11;0;false;false;0;0;0;;;
                                  -161722;1;0;false;false;;;;;;
                                  -161723;1;0;false;false;0;0;0;;;
                                  -161724;4;0;false;false;;;;;;
                                  -161728;3;1;false;false;127;0;85;;;
                                  -161731;1;0;false;false;;;;;;
                                  -161732;10;0;false;false;0;0;0;;;
                                  -161742;1;0;false;false;;;;;;
                                  -161743;1;0;false;false;0;0;0;;;
                                  -161744;1;0;false;false;;;;;;
                                  -161745;35;0;false;false;0;0;0;;;
                                  -161780;4;0;false;false;;;;;;
                                  -161784;10;0;false;false;0;0;0;;;
                                  -161794;1;0;false;false;;;;;;
                                  -161795;6;0;false;false;0;0;0;;;
                                  -161801;1;0;false;false;;;;;;
                                  -161802;1;0;false;false;0;0;0;;;
                                  -161803;1;0;false;false;;;;;;
                                  -161804;28;0;false;false;0;0;0;;;
                                  -161832;1;0;false;false;;;;;;
                                  -161833;12;0;false;false;0;0;0;;;
                                  -161845;4;0;false;false;;;;;;
                                  -161849;2;1;false;false;127;0;85;;;
                                  -161851;1;0;false;false;;;;;;
                                  -161852;11;0;false;false;0;0;0;;;
                                  -161863;1;0;false;false;;;;;;
                                  -161864;2;0;false;false;0;0;0;;;
                                  -161866;1;0;false;false;;;;;;
                                  -161867;12;0;false;false;0;0;0;;;
                                  -161879;1;0;false;false;;;;;;
                                  -161880;2;0;false;false;0;0;0;;;
                                  -161882;1;0;false;false;;;;;;
                                  -161883;2;0;false;false;0;0;0;;;
                                  -161885;1;0;false;false;;;;;;
                                  -161886;1;0;false;false;0;0;0;;;
                                  -161887;5;0;false;false;;;;;;
                                  -161892;1;0;false;false;0;0;0;;;
                                  -161893;1;0;false;false;;;;;;
                                  -161894;1;0;false;false;0;0;0;;;
                                  -161895;1;0;false;false;;;;;;
                                  -161896;32;0;false;false;0;0;0;;;
                                  -161928;1;0;false;false;;;;;;
                                  -161929;5;1;false;false;127;0;85;;;
                                  -161934;4;0;false;false;0;0;0;;;
                                  -161938;4;0;false;false;;;;;;
                                  -161942;1;0;false;false;0;0;0;;;
                                  -161943;1;0;false;false;;;;;;
                                  -161944;4;1;false;false;127;0;85;;;
                                  -161948;1;0;false;false;;;;;;
                                  -161949;1;0;false;false;0;0;0;;;
                                  -161950;5;0;false;false;;;;;;
                                  -161955;1;0;false;false;0;0;0;;;
                                  -161956;1;0;false;false;;;;;;
                                  -161957;1;0;false;false;0;0;0;;;
                                  -161958;1;0;false;false;;;;;;
                                  -161959;31;0;false;false;0;0;0;;;
                                  -161990;1;0;false;false;;;;;;
                                  -161991;1;0;false;false;0;0;0;;;
                                  -161992;1;0;false;false;;;;;;
                                  -161993;2;0;false;false;0;0;0;;;
                                  -161995;1;0;false;false;;;;;;
                                  -161996;4;1;false;false;127;0;85;;;
                                  -162000;4;0;false;false;0;0;0;;;
                                  -162004;4;0;false;false;;;;;;
                                  -162008;1;0;false;false;0;0;0;;;
                                  -162009;4;0;false;false;;;;;;
                                  -162013;35;0;false;false;0;0;0;;;
                                  -162048;3;0;false;false;;;;;;
                                  -162051;1;0;false;false;0;0;0;;;
                                  -162052;3;0;false;false;;;;;;
                                  -162055;6;1;false;false;127;0;85;;;
                                  -162061;1;0;false;false;;;;;;
                                  -162062;1;0;false;false;0;0;0;;;
                                  -162063;1;0;false;false;;;;;;
                                  -162064;1;0;false;false;0;0;0;;;
                                  -162065;1;0;false;false;;;;;;
                                  -162066;10;0;false;false;0;0;0;;;
                                  -162076;1;0;false;false;;;;;;
                                  -162077;1;0;false;false;0;0;0;;;
                                  -162078;1;0;false;false;;;;;;
                                  -162079;23;0;false;false;0;0;0;;;
                                  -162102;2;0;false;false;;;;;;
                                  -162104;1;0;false;false;0;0;0;;;
                                  -162105;2;0;false;false;;;;;;
                                  -162107;3;0;false;false;63;95;191;;;
                                  -162110;4;0;false;false;;;;;;
                                  -162114;1;0;false;false;63;95;191;;;
                                  -162115;1;0;false;false;;;;;;
                                  -162116;7;0;false;false;63;95;191;;;
                                  -162123;1;0;false;false;;;;;;
                                  -162124;1;0;false;false;63;95;191;;;
                                  -162125;1;0;false;false;;;;;;
                                  -162126;7;0;false;false;63;95;191;;;
                                  -162133;2;0;false;false;;;;;;
                                  -162135;3;0;false;false;63;95;191;;;
                                  -162138;1;0;false;false;;;;;;
                                  -162139;3;0;false;false;63;95;191;;;
                                  -162142;1;0;false;false;;;;;;
                                  -162143;9;0;false;false;63;95;191;;;
                                  -162152;1;0;false;false;;;;;;
                                  -162153;2;0;false;false;63;95;191;;;
                                  -162155;1;0;false;false;;;;;;
                                  -162156;8;0;false;false;63;95;191;;;
                                  -162164;1;0;false;false;;;;;;
                                  -162165;4;0;false;false;63;95;191;;;
                                  -162169;1;0;false;false;;;;;;
                                  -162170;3;0;false;false;63;95;191;;;
                                  -162173;1;0;false;false;;;;;;
                                  -162174;3;0;false;false;63;95;191;;;
                                  -162177;1;0;false;false;;;;;;
                                  -162178;5;0;false;false;63;95;191;;;
                                  -162183;5;0;false;false;;;;;;
                                  -162188;1;0;false;false;63;95;191;;;
                                  -162189;1;0;false;false;;;;;;
                                  -162190;3;0;false;false;127;127;159;;;
                                  -162193;3;0;false;false;;;;;;
                                  -162196;1;0;false;false;63;95;191;;;
                                  -162197;3;0;false;false;;;;;;
                                  -162200;1;0;false;false;63;95;191;;;
                                  -162201;1;0;false;false;;;;;;
                                  -162202;7;1;false;false;127;159;191;;;
                                  -162209;6;0;false;false;63;95;191;;;
                                  -162215;1;0;false;false;;;;;;
                                  -162216;3;0;false;false;63;95;191;;;
                                  -162219;1;0;false;false;;;;;;
                                  -162220;6;0;false;false;63;95;191;;;
                                  -162226;3;0;false;false;;;;;;
                                  -162229;1;0;false;false;63;95;191;;;
                                  -162230;1;0;false;false;;;;;;
                                  -162231;5;1;false;false;127;159;191;;;
                                  -162236;33;0;false;false;63;95;191;;;
                                  -162269;3;0;false;false;;;;;;
                                  -162272;1;0;false;false;63;95;191;;;
                                  -162273;1;0;false;false;;;;;;
                                  -162274;11;1;false;false;127;159;191;;;
                                  -162285;12;0;false;false;63;95;191;;;
                                  -162297;1;0;false;false;;;;;;
                                  -162298;4;0;false;false;127;127;159;;;
                                  -162302;3;0;false;false;;;;;;
                                  -162305;1;0;false;false;63;95;191;;;
                                  -162306;4;0;false;false;;;;;;
                                  -162310;4;0;false;false;127;127;159;;;
                                  -162314;21;0;false;false;63;95;191;;;
                                  -162335;1;0;false;false;;;;;;
                                  -162336;1;0;false;false;127;127;159;;;
                                  -162337;1;0;false;false;;;;;;
                                  -162338;2;0;false;false;63;95;191;;;
                                  -162340;1;0;false;false;;;;;;
                                  -162341;3;0;false;false;63;95;191;;;
                                  -162344;1;0;false;false;;;;;;
                                  -162345;8;0;false;false;63;95;191;;;
                                  -162353;1;0;false;false;;;;;;
                                  -162354;3;0;false;false;63;95;191;;;
                                  -162357;1;0;false;false;;;;;;
                                  -162358;4;0;false;false;63;95;191;;;
                                  -162362;1;0;false;false;;;;;;
                                  -162363;8;0;false;false;63;95;191;;;
                                  -162371;5;0;false;false;127;127;159;;;
                                  -162376;3;0;false;false;;;;;;
                                  -162379;1;0;false;false;63;95;191;;;
                                  -162380;4;0;false;false;;;;;;
                                  -162384;4;0;false;false;127;127;159;;;
                                  -162388;27;0;false;false;63;95;191;;;
                                  -162415;1;0;false;false;;;;;;
                                  -162416;1;0;false;false;127;127;159;;;
                                  -162417;1;0;false;false;;;;;;
                                  -162418;2;0;false;false;63;95;191;;;
                                  -162420;1;0;false;false;;;;;;
                                  -162421;3;0;false;false;63;95;191;;;
                                  -162424;1;0;false;false;;;;;;
                                  -162425;6;0;false;false;63;95;191;;;
                                  -162431;1;0;false;false;;;;;;
                                  -162432;4;0;false;false;63;95;191;;;
                                  -162436;1;0;false;false;;;;;;
                                  -162437;3;0;false;false;63;95;191;;;
                                  -162440;1;0;false;false;;;;;;
                                  -162441;6;0;false;false;63;95;191;;;
                                  -162447;1;0;false;false;;;;;;
                                  -162448;4;0;false;false;63;95;191;;;
                                  -162452;1;0;false;false;;;;;;
                                  -162453;7;0;false;false;63;95;191;;;
                                  -162460;1;0;false;false;;;;;;
                                  -162461;3;0;false;false;63;95;191;;;
                                  -162464;1;0;false;false;;;;;;
                                  -162465;8;0;false;false;63;95;191;;;
                                  -162473;5;0;false;false;127;127;159;;;
                                  -162478;3;0;false;false;;;;;;
                                  -162481;1;0;false;false;63;95;191;;;
                                  -162482;1;0;false;false;;;;;;
                                  -162483;5;0;false;false;127;127;159;;;
                                  -162488;3;0;false;false;;;;;;
                                  -162491;1;0;false;false;63;95;191;;;
                                  -162492;1;0;false;false;;;;;;
                                  -162493;11;1;false;false;127;159;191;;;
                                  -162504;24;0;false;false;63;95;191;;;
                                  -162528;1;0;false;false;;;;;;
                                  -162529;4;0;false;false;127;127;159;;;
                                  -162533;3;0;false;false;;;;;;
                                  -162536;1;0;false;false;63;95;191;;;
                                  -162537;4;0;false;false;;;;;;
                                  -162541;4;0;false;false;127;127;159;;;
                                  -162545;19;0;false;false;63;95;191;;;
                                  -162564;1;0;false;false;;;;;;
                                  -162565;4;0;false;false;63;95;191;;;
                                  -162569;1;0;false;false;;;;;;
                                  -162570;6;0;false;false;63;95;191;;;
                                  -162576;1;0;false;false;;;;;;
                                  -162577;2;0;false;false;63;95;191;;;
                                  -162579;1;0;false;false;;;;;;
                                  -162580;4;0;false;false;63;95;191;;;
                                  -162584;5;0;false;false;127;127;159;;;
                                  -162589;3;0;false;false;;;;;;
                                  -162592;1;0;false;false;63;95;191;;;
                                  -162593;1;0;false;false;;;;;;
                                  -162594;5;0;false;false;127;127;159;;;
                                  -162599;3;0;false;false;;;;;;
                                  -162602;2;0;false;false;63;95;191;;;
                                  -162604;2;0;false;false;;;;;;
                                  -162606;6;1;false;false;127;0;85;;;
                                  -162612;1;0;false;false;;;;;;
                                  -162613;4;1;false;false;127;0;85;;;
                                  -162617;1;0;false;false;;;;;;
                                  -162618;13;0;false;false;0;0;0;;;
                                  -162631;1;0;false;false;;;;;;
                                  -162632;7;0;false;false;0;0;0;;;
                                  -162639;1;0;false;false;;;;;;
                                  -162640;1;0;false;false;0;0;0;;;
                                  -162641;3;0;false;false;;;;;;
                                  -162644;14;0;false;false;0;0;0;;;
                                  -162658;3;0;false;false;;;;;;
                                  -162661;2;1;false;false;127;0;85;;;
                                  -162663;1;0;false;false;;;;;;
                                  -162664;7;0;false;false;0;0;0;;;
                                  -162671;1;0;false;false;;;;;;
                                  -162672;2;0;false;false;0;0;0;;;
                                  -162674;1;0;false;false;;;;;;
                                  -162675;4;1;false;false;127;0;85;;;
                                  -162679;1;0;false;false;0;0;0;;;
                                  -162680;1;0;false;false;;;;;;
                                  -162681;1;0;false;false;0;0;0;;;
                                  -162682;4;0;false;false;;;;;;
                                  -162686;35;0;false;false;0;0;0;;;
                                  -162721;3;0;false;false;;;;;;
                                  -162724;1;0;false;false;0;0;0;;;
                                  -162725;3;0;false;false;;;;;;
                                  -162728;5;0;false;false;0;0;0;;;
                                  -162733;1;0;false;false;;;;;;
                                  -162734;3;0;false;false;0;0;0;;;
                                  -162737;1;0;false;false;;;;;;
                                  -162738;1;0;false;false;0;0;0;;;
                                  -162739;1;0;false;false;;;;;;
                                  -162740;20;0;false;false;0;0;0;;;
                                  -162760;3;0;false;false;;;;;;
                                  -162763;23;0;false;false;0;0;0;;;
                                  -162786;1;0;false;false;;;;;;
                                  -162787;6;0;false;false;0;0;0;;;
                                  -162793;1;0;false;false;;;;;;
                                  -162794;8;0;false;false;0;0;0;;;
                                  -162802;2;0;false;false;;;;;;
                                  -162804;1;0;false;false;0;0;0;;;
                                  -162805;2;0;false;false;;;;;;
                                  -162807;3;0;false;false;63;95;191;;;
                                  -162810;3;0;false;false;;;;;;
                                  -162813;1;0;false;false;63;95;191;;;
                                  -162814;1;0;false;false;;;;;;
                                  -162815;7;0;false;false;63;95;191;;;
                                  -162822;1;0;false;false;;;;;;
                                  -162823;7;0;false;false;63;95;191;;;
                                  -162830;1;0;false;false;;;;;;
                                  -162831;6;0;false;false;63;95;191;;;
                                  -162837;1;0;false;false;;;;;;
                                  -162838;9;0;false;false;63;95;191;;;
                                  -162847;1;0;false;false;;;;;;
                                  -162848;3;0;false;false;63;95;191;;;
                                  -162851;1;0;false;false;;;;;;
                                  -162852;3;0;false;false;63;95;191;;;
                                  -162855;1;0;false;false;;;;;;
                                  -162856;3;0;false;false;63;95;191;;;
                                  -162859;1;0;false;false;;;;;;
                                  -162860;7;0;false;false;63;95;191;;;
                                  -162867;1;0;false;false;;;;;;
                                  -162868;7;0;false;false;63;95;191;;;
                                  -162875;1;0;false;false;;;;;;
                                  -162876;6;0;false;false;63;95;191;;;
                                  -162882;3;0;false;false;;;;;;
                                  -162885;2;0;false;false;63;95;191;;;
                                  -162887;2;0;false;false;;;;;;
                                  -162889;4;1;false;false;127;0;85;;;
                                  -162893;1;0;false;false;;;;;;
                                  -162894;23;0;false;false;0;0;0;;;
                                  -162917;1;0;false;false;;;;;;
                                  -162918;1;0;false;false;0;0;0;;;
                                  -162919;3;0;false;false;;;;;;
                                  -162922;18;0;false;false;0;0;0;;;
                                  -162940;1;0;false;false;;;;;;
                                  -162941;1;0;false;false;0;0;0;;;
                                  -162942;1;0;false;false;;;;;;
                                  -162943;3;1;false;false;127;0;85;;;
                                  -162946;1;0;false;false;;;;;;
                                  -162947;20;0;false;false;0;0;0;;;
                                  -162967;1;0;false;false;;;;;;
                                  -162968;1;0;false;false;0;0;0;;;
                                  -162969;4;0;false;false;;;;;;
                                  -162973;6;1;false;false;127;0;85;;;
                                  -162979;1;0;false;false;;;;;;
                                  -162980;4;1;false;false;127;0;85;;;
                                  -162984;1;0;false;false;;;;;;
                                  -162985;30;0;false;false;0;0;0;;;
                                  -163015;1;0;false;false;;;;;;
                                  -163016;6;0;false;false;0;0;0;;;
                                  -163022;1;0;false;false;;;;;;
                                  -163023;1;0;false;false;0;0;0;;;
                                  -163024;5;0;false;false;;;;;;
                                  -163029;26;0;false;false;0;0;0;;;
                                  -163055;4;0;false;false;;;;;;
                                  -163059;1;0;false;false;0;0;0;;;
                                  -163060;4;0;false;false;;;;;;
                                  -163064;6;1;false;false;127;0;85;;;
                                  -163070;1;0;false;false;;;;;;
                                  -163071;4;1;false;false;127;0;85;;;
                                  -163075;1;0;false;false;;;;;;
                                  -163076;28;0;false;false;0;0;0;;;
                                  -163104;1;0;false;false;;;;;;
                                  -163105;6;0;false;false;0;0;0;;;
                                  -163111;1;0;false;false;;;;;;
                                  -163112;1;0;false;false;0;0;0;;;
                                  -163113;5;0;false;false;;;;;;
                                  -163118;25;0;false;false;0;0;0;;;
                                  -163143;4;0;false;false;;;;;;
                                  -163147;1;0;false;false;0;0;0;;;
                                  -163148;4;0;false;false;;;;;;
                                  -163152;6;1;false;false;127;0;85;;;
                                  -163158;1;0;false;false;;;;;;
                                  -163159;4;1;false;false;127;0;85;;;
                                  -163163;1;0;false;false;;;;;;
                                  -163164;24;0;false;false;0;0;0;;;
                                  -163188;1;0;false;false;;;;;;
                                  -163189;6;0;false;false;0;0;0;;;
                                  -163195;1;0;false;false;;;;;;
                                  -163196;1;0;false;false;0;0;0;;;
                                  -163197;5;0;false;false;;;;;;
                                  -163202;21;0;false;false;0;0;0;;;
                                  -163223;4;0;false;false;;;;;;
                                  -163227;1;0;false;false;0;0;0;;;
                                  -163228;3;0;false;false;;;;;;
                                  -163231;2;0;false;false;0;0;0;;;
                                  -163233;3;0;false;false;;;;;;
                                  -163236;14;0;false;false;0;0;0;;;
                                  -163250;1;0;false;false;;;;;;
                                  -163251;1;0;false;false;0;0;0;;;
                                  -163252;1;0;false;false;;;;;;
                                  -163253;7;0;false;false;0;0;0;;;
                                  -163260;1;0;false;false;;;;;;
                                  -163261;1;0;false;false;0;0;0;;;
                                  -163262;1;0;false;false;;;;;;
                                  -163263;3;1;false;false;127;0;85;;;
                                  -163266;1;0;false;false;;;;;;
                                  -163267;17;0;false;false;0;0;0;;;
                                  -163284;3;0;false;false;;;;;;
                                  -163287;50;0;false;false;0;0;0;;;
                                  -163337;2;0;false;false;;;;;;
                                  -163339;1;0;false;false;0;0;0;;;
                                  -163340;2;0;false;false;;;;;;
                                  -163342;3;0;false;false;63;95;191;;;
                                  -163345;3;0;false;false;;;;;;
                                  -163348;1;0;false;false;63;95;191;;;
                                  -163349;1;0;false;false;;;;;;
                                  -163350;7;0;false;false;63;95;191;;;
                                  -163357;1;0;false;false;;;;;;
                                  -163358;1;0;false;false;63;95;191;;;
                                  -163359;1;0;false;false;;;;;;
                                  -163360;7;0;false;false;63;95;191;;;
                                  -163367;1;0;false;false;;;;;;
                                  -163368;4;0;false;false;63;95;191;;;
                                  -163372;1;0;false;false;;;;;;
                                  -163373;5;0;false;false;63;95;191;;;
                                  -163378;1;0;false;false;;;;;;
                                  -163379;9;0;false;false;63;95;191;;;
                                  -163388;3;0;false;false;;;;;;
                                  -163391;1;0;false;false;63;95;191;;;
                                  -163392;1;0;false;false;;;;;;
                                  -163393;4;0;false;false;63;95;191;;;
                                  -163397;1;0;false;false;;;;;;
                                  -163398;2;0;false;false;63;95;191;;;
                                  -163400;1;0;false;false;;;;;;
                                  -163401;5;0;false;false;63;95;191;;;
                                  -163406;1;0;false;false;;;;;;
                                  -163407;4;0;false;false;63;95;191;;;
                                  -163411;1;0;false;false;;;;;;
                                  -163412;10;0;false;false;63;95;191;;;
                                  -163422;1;0;false;false;;;;;;
                                  -163423;6;0;false;false;63;95;191;;;
                                  -163429;1;0;false;false;;;;;;
                                  -163430;3;0;false;false;63;95;191;;;
                                  -163433;1;0;false;false;;;;;;
                                  -163434;7;0;false;false;63;95;191;;;
                                  -163441;3;0;false;false;;;;;;
                                  -163444;1;0;false;false;63;95;191;;;
                                  -163445;1;0;false;false;;;;;;
                                  -163446;7;0;false;false;63;95;191;;;
                                  -163453;1;0;false;false;;;;;;
                                  -163454;4;0;false;false;63;95;191;;;
                                  -163458;1;0;false;false;;;;;;
                                  -163459;3;0;false;false;63;95;191;;;
                                  -163462;1;0;false;false;;;;;;
                                  -163463;4;0;false;false;63;95;191;;;
                                  -163467;1;0;false;false;;;;;;
                                  -163468;4;0;false;false;63;95;191;;;
                                  -163472;1;0;false;false;;;;;;
                                  -163473;1;0;false;false;63;95;191;;;
                                  -163474;1;0;false;false;;;;;;
                                  -163475;18;0;false;false;63;95;191;;;
                                  -163493;3;0;false;false;;;;;;
                                  -163496;1;0;false;false;63;95;191;;;
                                  -163497;1;0;false;false;;;;;;
                                  -163498;3;0;false;false;127;127;159;;;
                                  -163501;3;0;false;false;;;;;;
                                  -163504;1;0;false;false;63;95;191;;;
                                  -163505;3;0;false;false;;;;;;
                                  -163508;1;0;false;false;63;95;191;;;
                                  -163509;1;0;false;false;;;;;;
                                  -163510;5;1;false;false;127;159;191;;;
                                  -163515;21;0;false;false;63;95;191;;;
                                  -163536;3;0;false;false;;;;;;
                                  -163539;2;0;false;false;63;95;191;;;
                                  -163541;2;0;false;false;;;;;;
                                  -163543;4;1;false;false;127;0;85;;;
                                  -163547;1;0;false;false;;;;;;
                                  -163548;26;0;false;false;0;0;0;;;
                                  -163574;1;0;false;false;;;;;;
                                  -163575;1;0;false;false;0;0;0;;;
                                  -163576;3;0;false;false;;;;;;
                                  -163579;17;0;false;false;0;0;0;;;
                                  -163596;1;0;false;false;;;;;;
                                  -163597;1;0;false;false;0;0;0;;;
                                  -163598;1;0;false;false;;;;;;
                                  -163599;3;1;false;false;127;0;85;;;
                                  -163602;1;0;false;false;;;;;;
                                  -163603;34;0;false;false;0;0;0;;;
                                  -163637;3;0;false;false;;;;;;
                                  -163640;18;0;false;false;0;0;0;;;
                                  -163658;1;0;false;false;;;;;;
                                  -163659;13;0;false;false;0;0;0;;;
                                  -163672;1;0;false;false;;;;;;
                                  -163673;1;0;false;false;0;0;0;;;
                                  -163674;1;0;false;false;;;;;;
                                  -163675;3;1;false;false;127;0;85;;;
                                  -163678;1;0;false;false;;;;;;
                                  -163679;38;0;false;false;0;0;0;;;
                                  -163717;3;0;false;false;;;;;;
                                  -163720;2;1;false;false;127;0;85;;;
                                  -163722;1;0;false;false;;;;;;
                                  -163723;16;0;false;false;0;0;0;;;
                                  -163739;1;0;false;false;;;;;;
                                  -163740;1;0;false;false;0;0;0;;;
                                  -163741;4;0;false;false;;;;;;
                                  -163745;25;0;false;false;0;0;0;;;
                                  -163770;1;0;false;false;;;;;;
                                  -163771;15;0;false;false;0;0;0;;;
                                  -163786;3;0;false;false;;;;;;
                                  -163789;1;0;false;false;0;0;0;;;
                                  -163790;3;0;false;false;;;;;;
                                  -163793;2;1;false;false;127;0;85;;;
                                  -163795;1;0;false;false;;;;;;
                                  -163796;21;0;false;false;0;0;0;;;
                                  -163817;1;0;false;false;;;;;;
                                  -163818;1;0;false;false;0;0;0;;;
                                  -163819;4;0;false;false;;;;;;
                                  -163823;30;0;false;false;0;0;0;;;
                                  -163853;1;0;false;false;;;;;;
                                  -163854;15;0;false;false;0;0;0;;;
                                  -163869;3;0;false;false;;;;;;
                                  -163872;1;0;false;false;0;0;0;;;
                                  -163873;2;0;false;false;;;;;;
                                  -163875;1;0;false;false;0;0;0;;;
                                  -163876;2;0;false;false;;;;;;
                                  -163878;3;0;false;false;63;95;191;;;
                                  -163881;4;0;false;false;;;;;;
                                  -163885;1;0;false;false;63;95;191;;;
                                  -163886;1;0;false;false;;;;;;
                                  -163887;4;0;false;false;63;95;191;;;
                                  -163891;1;0;false;false;;;;;;
                                  -163892;5;0;false;false;63;95;191;;;
                                  -163897;1;0;false;false;;;;;;
                                  -163898;9;0;false;false;63;95;191;;;
                                  -163907;3;0;false;false;;;;;;
                                  -163910;2;0;false;false;63;95;191;;;
                                  -163912;2;0;false;false;;;;;;
                                  -163914;4;1;false;false;127;0;85;;;
                                  -163918;1;0;false;false;;;;;;
                                  -163919;18;0;false;false;0;0;0;;;
                                  -163937;1;0;false;false;;;;;;
                                  -163938;1;0;false;false;0;0;0;;;
                                  -163939;3;0;false;false;;;;;;
                                  -163942;9;0;false;false;0;0;0;;;
                                  -163951;1;0;false;false;;;;;;
                                  -163952;11;0;false;false;0;0;0;;;
                                  -163963;1;0;false;false;;;;;;
                                  -163964;1;0;false;false;0;0;0;;;
                                  -163965;1;0;false;false;;;;;;
                                  -163966;17;0;false;false;0;0;0;;;
                                  -163983;3;0;false;false;;;;;;
                                  -163986;9;0;false;false;0;0;0;;;
                                  -163995;1;0;false;false;;;;;;
                                  -163996;13;0;false;false;0;0;0;;;
                                  -164009;1;0;false;false;;;;;;
                                  -164010;1;0;false;false;0;0;0;;;
                                  -164011;1;0;false;false;;;;;;
                                  -164012;19;0;false;false;0;0;0;;;
                                  -164031;6;0;false;false;;;;;;
                                  -164037;8;0;false;false;0;0;0;;;
                                  -164045;1;0;false;false;;;;;;
                                  -164046;1;0;false;false;0;0;0;;;
                                  -164047;1;0;false;false;;;;;;
                                  -164048;3;1;false;false;127;0;85;;;
                                  -164051;1;0;false;false;;;;;;
                                  -164052;10;0;false;false;0;0;0;;;
                                  -164062;1;0;false;false;;;;;;
                                  -164063;1;0;false;false;0;0;0;;;
                                  -164064;4;0;false;false;;;;;;
                                  -164068;6;1;false;false;127;0;85;;;
                                  -164074;1;0;false;false;;;;;;
                                  -164075;4;1;false;false;127;0;85;;;
                                  -164079;1;0;false;false;;;;;;
                                  -164080;17;0;false;false;0;0;0;;;
                                  -164097;1;0;false;false;;;;;;
                                  -164098;6;0;false;false;0;0;0;;;
                                  -164104;1;0;false;false;;;;;;
                                  -164105;1;0;false;false;0;0;0;;;
                                  -164106;5;0;false;false;;;;;;
                                  -164111;6;1;false;false;127;0;85;;;
                                  -164117;1;0;false;false;;;;;;
                                  -164118;12;0;false;false;0;0;0;;;
                                  -164130;1;0;false;false;;;;;;
                                  -164131;1;0;false;false;0;0;0;;;
                                  -164132;6;0;false;false;;;;;;
                                  -164138;4;1;false;false;127;0;85;;;
                                  -164142;1;0;false;false;;;;;;
                                  -164143;12;0;false;false;0;0;0;;;
                                  -164155;1;0;false;false;;;;;;
                                  -164156;21;0;false;false;0;0;0;;;
                                  -164177;1;0;false;false;;;;;;
                                  -164178;5;1;false;false;127;0;85;;;
                                  -164183;1;0;false;false;0;0;0;;;
                                  -164184;6;0;false;false;;;;;;
                                  -164190;4;1;false;false;127;0;85;;;
                                  -164194;1;0;false;false;;;;;;
                                  -164195;12;0;false;false;0;0;0;;;
                                  -164207;1;0;false;false;;;;;;
                                  -164208;21;0;false;false;0;0;0;;;
                                  -164229;1;0;false;false;;;;;;
                                  -164230;5;1;false;false;127;0;85;;;
                                  -164235;1;0;false;false;0;0;0;;;
                                  -164236;6;0;false;false;;;;;;
                                  -164242;4;1;false;false;127;0;85;;;
                                  -164246;1;0;false;false;;;;;;
                                  -164247;10;0;false;false;0;0;0;;;
                                  -164257;1;0;false;false;;;;;;
                                  -164258;19;0;false;false;0;0;0;;;
                                  -164277;1;0;false;false;;;;;;
                                  -164278;5;1;false;false;127;0;85;;;
                                  -164283;1;0;false;false;0;0;0;;;
                                  -164284;6;0;false;false;;;;;;
                                  -164290;4;1;false;false;127;0;85;;;
                                  -164294;1;0;false;false;;;;;;
                                  -164295;14;0;false;false;0;0;0;;;
                                  -164309;1;0;false;false;;;;;;
                                  -164310;23;0;false;false;0;0;0;;;
                                  -164333;1;0;false;false;;;;;;
                                  -164334;5;1;false;false;127;0;85;;;
                                  -164339;1;0;false;false;0;0;0;;;
                                  -164340;6;0;false;false;;;;;;
                                  -164346;4;1;false;false;127;0;85;;;
                                  -164350;1;0;false;false;;;;;;
                                  -164351;12;0;false;false;0;0;0;;;
                                  -164363;1;0;false;false;;;;;;
                                  -164364;21;0;false;false;0;0;0;;;
                                  -164385;1;0;false;false;;;;;;
                                  -164386;5;1;false;false;127;0;85;;;
                                  -164391;1;0;false;false;0;0;0;;;
                                  -164392;6;0;false;false;;;;;;
                                  -164398;4;1;false;false;127;0;85;;;
                                  -164402;1;0;false;false;;;;;;
                                  -164403;21;0;false;false;0;0;0;;;
                                  -164424;1;0;false;false;;;;;;
                                  -164425;30;0;false;false;0;0;0;;;
                                  -164455;1;0;false;false;;;;;;
                                  -164456;5;1;false;false;127;0;85;;;
                                  -164461;1;0;false;false;0;0;0;;;
                                  -164462;6;0;false;false;;;;;;
                                  -164468;4;1;false;false;127;0;85;;;
                                  -164472;1;0;false;false;;;;;;
                                  -164473;14;0;false;false;0;0;0;;;
                                  -164487;1;0;false;false;;;;;;
                                  -164488;23;0;false;false;0;0;0;;;
                                  -164511;1;0;false;false;;;;;;
                                  -164512;5;1;false;false;127;0;85;;;
                                  -164517;1;0;false;false;0;0;0;;;
                                  -164518;6;0;false;false;;;;;;
                                  -164524;4;1;false;false;127;0;85;;;
                                  -164528;1;0;false;false;;;;;;
                                  -164529;10;0;false;false;0;0;0;;;
                                  -164539;1;0;false;false;;;;;;
                                  -164540;19;0;false;false;0;0;0;;;
                                  -164559;1;0;false;false;;;;;;
                                  -164560;5;1;false;false;127;0;85;;;
                                  -164565;1;0;false;false;0;0;0;;;
                                  -164566;6;0;false;false;;;;;;
                                  -164572;4;1;false;false;127;0;85;;;
                                  -164576;1;0;false;false;;;;;;
                                  -164577;11;0;false;false;0;0;0;;;
                                  -164588;1;0;false;false;;;;;;
                                  -164589;20;0;false;false;0;0;0;;;
                                  -164609;1;0;false;false;;;;;;
                                  -164610;5;1;false;false;127;0;85;;;
                                  -164615;1;0;false;false;0;0;0;;;
                                  -164616;6;0;false;false;;;;;;
                                  -164622;4;1;false;false;127;0;85;;;
                                  -164626;1;0;false;false;;;;;;
                                  -164627;13;0;false;false;0;0;0;;;
                                  -164640;1;0;false;false;;;;;;
                                  -164641;22;0;false;false;0;0;0;;;
                                  -164663;1;0;false;false;;;;;;
                                  -164664;5;1;false;false;127;0;85;;;
                                  -164669;1;0;false;false;0;0;0;;;
                                  -164670;5;0;false;false;;;;;;
                                  -164675;1;0;false;false;0;0;0;;;
                                  -164676;4;0;false;false;;;;;;
                                  -164680;1;0;false;false;0;0;0;;;
                                  -164681;5;0;false;false;;;;;;
                                  -164686;2;0;false;false;0;0;0;;;
                                  -164688;3;0;false;false;;;;;;
                                  -164691;24;0;false;false;0;0;0;;;
                                  -164715;1;0;false;false;;;;;;
                                  -164716;10;0;false;false;0;0;0;;;
                                  -164726;3;0;false;false;;;;;;
                                  -164729;24;0;false;false;0;0;0;;;
                                  -164753;1;0;false;false;;;;;;
                                  -164754;10;0;false;false;0;0;0;;;
                                  -164764;3;0;false;false;;;;;;
                                  -164767;22;0;false;false;0;0;0;;;
                                  -164789;1;0;false;false;;;;;;
                                  -164790;10;0;false;false;0;0;0;;;
                                  -164800;3;0;false;false;;;;;;
                                  -164803;26;0;false;false;0;0;0;;;
                                  -164829;1;0;false;false;;;;;;
                                  -164830;10;0;false;false;0;0;0;;;
                                  -164840;3;0;false;false;;;;;;
                                  -164843;24;0;false;false;0;0;0;;;
                                  -164867;1;0;false;false;;;;;;
                                  -164868;10;0;false;false;0;0;0;;;
                                  -164878;3;0;false;false;;;;;;
                                  -164881;33;0;false;false;0;0;0;;;
                                  -164914;1;0;false;false;;;;;;
                                  -164915;10;0;false;false;0;0;0;;;
                                  -164925;3;0;false;false;;;;;;
                                  -164928;26;0;false;false;0;0;0;;;
                                  -164954;1;0;false;false;;;;;;
                                  -164955;10;0;false;false;0;0;0;;;
                                  -164965;3;0;false;false;;;;;;
                                  -164968;22;0;false;false;0;0;0;;;
                                  -164990;1;0;false;false;;;;;;
                                  -164991;10;0;false;false;0;0;0;;;
                                  -165001;3;0;false;false;;;;;;
                                  -165004;23;0;false;false;0;0;0;;;
                                  -165027;1;0;false;false;;;;;;
                                  -165028;10;0;false;false;0;0;0;;;
                                  -165038;3;0;false;false;;;;;;
                                  -165041;25;0;false;false;0;0;0;;;
                                  -165066;1;0;false;false;;;;;;
                                  -165067;10;0;false;false;0;0;0;;;
                                  -165077;3;0;false;false;;;;;;
                                  -165080;2;1;false;false;127;0;85;;;
                                  -165082;1;0;false;false;;;;;;
                                  -165083;12;0;false;false;0;0;0;;;
                                  -165095;1;0;false;false;;;;;;
                                  -165096;2;0;false;false;0;0;0;;;
                                  -165098;1;0;false;false;;;;;;
                                  -165099;4;1;false;false;127;0;85;;;
                                  -165103;1;0;false;false;0;0;0;;;
                                  -165104;1;0;false;false;;;;;;
                                  -165105;1;0;false;false;0;0;0;;;
                                  -165106;4;0;false;false;;;;;;
                                  -165110;38;0;false;false;0;0;0;;;
                                  -165148;1;0;false;false;;;;;;
                                  -165149;3;1;false;false;127;0;85;;;
                                  -165152;1;0;false;false;;;;;;
                                  -165153;10;0;false;false;0;0;0;;;
                                  -165163;1;0;false;false;;;;;;
                                  -165164;1;0;false;false;0;0;0;;;
                                  -165165;5;0;false;false;;;;;;
                                  -165170;6;1;false;false;127;0;85;;;
                                  -165176;1;0;false;false;;;;;;
                                  -165177;4;1;false;false;127;0;85;;;
                                  -165181;1;0;false;false;;;;;;
                                  -165182;17;0;false;false;0;0;0;;;
                                  -165199;1;0;false;false;;;;;;
                                  -165200;6;0;false;false;0;0;0;;;
                                  -165206;1;0;false;false;;;;;;
                                  -165207;1;0;false;false;0;0;0;;;
                                  -165208;6;0;false;false;;;;;;
                                  -165214;28;0;false;false;0;0;0;;;
                                  -165242;5;0;false;false;;;;;;
                                  -165247;1;0;false;false;0;0;0;;;
                                  -165248;4;0;false;false;;;;;;
                                  -165252;3;0;false;false;0;0;0;;;
                                  -165255;3;0;false;false;;;;;;
                                  -165258;1;0;false;false;0;0;0;;;
                                  -165259;3;0;false;false;;;;;;
                                  -165262;2;1;false;false;127;0;85;;;
                                  -165264;1;0;false;false;;;;;;
                                  -165265;14;0;false;false;0;0;0;;;
                                  -165279;1;0;false;false;;;;;;
                                  -165280;2;0;false;false;0;0;0;;;
                                  -165282;1;0;false;false;;;;;;
                                  -165283;4;1;false;false;127;0;85;;;
                                  -165287;1;0;false;false;0;0;0;;;
                                  -165288;1;0;false;false;;;;;;
                                  -165289;1;0;false;false;0;0;0;;;
                                  -165290;4;0;false;false;;;;;;
                                  -165294;40;0;false;false;0;0;0;;;
                                  -165334;1;0;false;false;;;;;;
                                  -165335;3;1;false;false;127;0;85;;;
                                  -165338;1;0;false;false;;;;;;
                                  -165339;10;0;false;false;0;0;0;;;
                                  -165349;1;0;false;false;;;;;;
                                  -165350;1;0;false;false;0;0;0;;;
                                  -165351;5;0;false;false;;;;;;
                                  -165356;6;1;false;false;127;0;85;;;
                                  -165362;1;0;false;false;;;;;;
                                  -165363;4;1;false;false;127;0;85;;;
                                  -165367;1;0;false;false;;;;;;
                                  -165368;17;0;false;false;0;0;0;;;
                                  -165385;1;0;false;false;;;;;;
                                  -165386;6;0;false;false;0;0;0;;;
                                  -165392;1;0;false;false;;;;;;
                                  -165393;1;0;false;false;0;0;0;;;
                                  -165394;6;0;false;false;;;;;;
                                  -165400;30;0;false;false;0;0;0;;;
                                  -165430;5;0;false;false;;;;;;
                                  -165435;1;0;false;false;0;0;0;;;
                                  -165436;4;0;false;false;;;;;;
                                  -165440;3;0;false;false;0;0;0;;;
                                  -165443;3;0;false;false;;;;;;
                                  -165446;1;0;false;false;0;0;0;;;
                                  -165447;2;0;false;false;;;;;;
                                  -165449;1;0;false;false;0;0;0;;;
                                  -165450;2;0;false;false;;;;;;
                                  -165452;17;0;false;false;0;0;0;;;
                                  -165469;1;0;false;false;;;;;;
                                  -165470;20;0;false;false;0;0;0;;;
                                  -165490;1;0;false;false;;;;;;
                                  -165491;1;0;false;false;0;0;0;;;
                                  -165492;3;0;false;false;;;;;;
                                  -165495;6;1;false;false;127;0;85;;;
                                  -165501;1;0;false;false;;;;;;
                                  -165502;8;0;false;false;0;0;0;;;
                                  -165510;2;0;false;false;;;;;;
                                  -165512;1;0;false;false;0;0;0;;;
                                  -165513;2;0;false;false;;;;;;
                                  -165515;3;1;false;false;127;0;85;;;
                                  -165518;1;0;false;false;;;;;;
                                  -165519;28;0;false;false;0;0;0;;;
                                  -165547;1;0;false;false;;;;;;
                                  -165548;1;0;false;false;0;0;0;;;
                                  -165549;3;0;false;false;;;;;;
                                  -165552;6;1;false;false;127;0;85;;;
                                  -165558;1;0;false;false;;;;;;
                                  -165559;23;0;false;false;0;0;0;;;
                                  -165582;2;0;false;false;;;;;;
                                  -165584;1;0;false;false;0;0;0;;;
                                  -165585;2;0;false;false;;;;;;
                                  -165587;5;0;false;false;0;0;0;;;
                                  -165592;1;0;false;false;;;;;;
                                  -165593;22;0;false;false;0;0;0;;;
                                  -165615;1;0;false;false;;;;;;
                                  -165616;1;0;false;false;0;0;0;;;
                                  -165617;3;0;false;false;;;;;;
                                  -165620;6;1;false;false;127;0;85;;;
                                  -165626;1;0;false;false;;;;;;
                                  -165627;10;0;false;false;0;0;0;;;
                                  -165637;2;0;false;false;;;;;;
                                  -165639;1;0;false;false;0;0;0;;;
                                  -165640;2;0;false;false;;;;;;
                                  -165642;7;1;false;false;127;0;85;;;
                                  -165649;1;0;false;false;;;;;;
                                  -165650;21;0;false;false;0;0;0;;;
                                  -165671;1;0;false;false;;;;;;
                                  -165672;1;0;false;false;0;0;0;;;
                                  -165673;3;0;false;false;;;;;;
                                  -165676;6;1;false;false;127;0;85;;;
                                  -165682;1;0;false;false;;;;;;
                                  -165683;9;0;false;false;0;0;0;;;
                                  -165692;2;0;false;false;;;;;;
                                  -165694;1;0;false;false;0;0;0;;;
                                  -165695;2;0;false;false;;;;;;
                                  -165697;3;0;false;false;63;95;191;;;
                                  -165700;3;0;false;false;;;;;;
                                  -165703;1;0;false;false;63;95;191;;;
                                  -165704;1;0;false;false;;;;;;
                                  -165705;4;0;false;false;63;95;191;;;
                                  -165709;1;0;false;false;;;;;;
                                  -165710;2;0;false;false;63;95;191;;;
                                  -165712;1;0;false;false;;;;;;
                                  -165713;13;0;false;false;63;95;191;;;
                                  -165726;1;0;false;false;;;;;;
                                  -165727;2;0;false;false;63;95;191;;;
                                  -165729;1;0;false;false;;;;;;
                                  -165730;6;0;false;false;63;95;191;;;
                                  -165736;1;0;false;false;;;;;;
                                  -165737;17;0;false;false;63;95;191;;;
                                  -165754;1;0;false;false;;;;;;
                                  -165755;5;0;false;false;63;95;191;;;
                                  -165760;1;0;false;false;;;;;;
                                  -165761;4;0;false;false;63;95;191;;;
                                  -165765;3;0;false;false;;;;;;
                                  -165768;1;0;false;false;63;95;191;;;
                                  -165769;1;0;false;false;;;;;;
                                  -165770;2;0;false;false;63;95;191;;;
                                  -165772;1;0;false;false;;;;;;
                                  -165773;8;0;false;false;63;95;191;;;
                                  -165781;1;0;false;false;;;;;;
                                  -165782;5;0;false;false;63;95;191;;;
                                  -165787;1;0;false;false;;;;;;
                                  -165788;6;0;false;false;63;95;191;;;
                                  -165794;3;0;false;false;;;;;;
                                  -165797;2;0;false;false;63;95;191;;;
                                  -165799;2;0;false;false;;;;;;
                                  -165801;4;1;false;false;127;0;85;;;
                                  -165805;1;0;false;false;;;;;;
                                  -165806;16;0;false;false;0;0;0;;;
                                  -165822;1;0;false;false;;;;;;
                                  -165823;1;0;false;false;0;0;0;;;
                                  -165824;3;0;false;false;;;;;;
                                  -165827;5;1;false;false;127;0;85;;;
                                  -165832;10;0;false;false;0;0;0;;;
                                  -165842;2;0;false;false;;;;;;
                                  -165844;1;0;false;false;0;0;0;;;
                                  -165845;2;0;false;false;;;;;;
                                  -165847;3;0;false;false;63;95;191;;;
                                  -165850;4;0;false;false;;;;;;
                                  -165854;1;0;false;false;63;95;191;;;
                                  -165855;1;0;false;false;;;;;;
                                  -165856;7;0;false;false;63;95;191;;;
                                  -165863;1;0;false;false;;;;;;
                                  -165864;3;0;false;false;63;95;191;;;
                                  -165867;1;0;false;false;;;;;;
                                  -165868;9;0;false;false;63;95;191;;;
                                  -165877;1;0;false;false;;;;;;
                                  -165878;4;0;false;false;63;95;191;;;
                                  -165882;1;0;false;false;;;;;;
                                  -165883;6;0;false;false;63;95;191;;;
                                  -165889;3;0;false;false;;;;;;
                                  -165892;1;0;false;false;63;95;191;;;
                                  -165893;1;0;false;false;;;;;;
                                  -165894;3;0;false;false;127;127;159;;;
                                  -165897;3;0;false;false;;;;;;
                                  -165900;1;0;false;false;63;95;191;;;
                                  -165901;3;0;false;false;;;;;;
                                  -165904;1;0;false;false;63;95;191;;;
                                  -165905;1;0;false;false;;;;;;
                                  -165906;7;1;false;false;127;159;191;;;
                                  -165913;5;0;false;false;63;95;191;;;
                                  -165918;1;0;false;false;;;;;;
                                  -165919;6;0;false;false;63;95;191;;;
                                  -165925;1;0;false;false;;;;;;
                                  -165926;2;0;false;false;63;95;191;;;
                                  -165928;1;0;false;false;;;;;;
                                  -165929;3;0;false;false;63;95;191;;;
                                  -165932;1;0;false;false;;;;;;
                                  -165933;5;0;false;false;63;95;191;;;
                                  -165938;1;0;false;false;;;;;;
                                  -165939;9;0;false;false;63;95;191;;;
                                  -165948;1;0;false;false;;;;;;
                                  -165949;2;0;false;false;63;95;191;;;
                                  -165951;1;0;false;false;;;;;;
                                  -165952;6;0;false;false;63;95;191;;;
                                  -165958;3;0;false;false;;;;;;
                                  -165961;1;0;false;false;63;95;191;;;
                                  -165962;1;0;false;false;;;;;;
                                  -165963;7;1;false;false;127;159;191;;;
                                  -165970;6;0;false;false;63;95;191;;;
                                  -165976;1;0;false;false;;;;;;
                                  -165977;6;0;false;false;63;95;191;;;
                                  -165983;1;0;false;false;;;;;;
                                  -165984;2;0;false;false;63;95;191;;;
                                  -165986;1;0;false;false;;;;;;
                                  -165987;10;0;false;false;63;95;191;;;
                                  -165997;1;0;false;false;;;;;;
                                  -165998;2;0;false;false;63;95;191;;;
                                  -166000;1;0;false;false;;;;;;
                                  -166001;6;0;false;false;63;95;191;;;
                                  -166007;3;0;false;false;;;;;;
                                  -166010;1;0;false;false;63;95;191;;;
                                  -166011;1;0;false;false;;;;;;
                                  -166012;7;1;false;false;127;159;191;;;
                                  -166019;15;0;false;false;63;95;191;;;
                                  -166034;1;0;false;false;;;;;;
                                  -166035;4;0;false;false;63;95;191;;;
                                  -166039;1;0;false;false;;;;;;
                                  -166040;2;0;false;false;63;95;191;;;
                                  -166042;1;0;false;false;;;;;;
                                  -166043;3;0;false;false;63;95;191;;;
                                  -166046;1;0;false;false;;;;;;
                                  -166047;10;0;false;false;63;95;191;;;
                                  -166057;1;0;false;false;;;;;;
                                  -166058;6;0;false;false;63;95;191;;;
                                  -166064;1;0;false;false;;;;;;
                                  -166065;2;0;false;false;63;95;191;;;
                                  -166067;1;0;false;false;;;;;;
                                  -166068;7;0;false;false;63;95;191;;;
                                  -166075;1;0;false;false;;;;;;
                                  -166076;2;0;false;false;63;95;191;;;
                                  -166078;4;0;false;false;;;;;;
                                  -166082;1;0;false;false;63;95;191;;;
                                  -166083;2;0;false;false;;;;;;
                                  -166085;4;0;false;false;63;95;191;;;
                                  -166089;1;0;false;false;;;;;;
                                  -166090;2;0;false;false;63;95;191;;;
                                  -166092;1;0;false;false;;;;;;
                                  -166093;3;0;false;false;63;95;191;;;
                                  -166096;1;0;false;false;;;;;;
                                  -166097;6;0;false;false;63;95;191;;;
                                  -166103;1;0;false;false;;;;;;
                                  -166104;10;0;false;false;63;95;191;;;
                                  -166114;2;0;false;false;;;;;;
                                  -166116;2;0;false;false;63;95;191;;;
                                  -166118;1;0;false;false;;;;;;
                                  -166119;5;0;false;false;63;95;191;;;
                                  -166124;1;0;false;false;;;;;;
                                  -166125;3;0;false;false;63;95;191;;;
                                  -166128;1;0;false;false;;;;;;
                                  -166129;6;0;false;false;63;95;191;;;
                                  -166135;1;0;false;false;;;;;;
                                  -166136;6;0;false;false;63;95;191;;;
                                  -166142;1;0;false;false;;;;;;
                                  -166143;5;0;false;false;63;95;191;;;
                                  -166148;1;0;false;false;;;;;;
                                  -166149;4;0;false;false;63;95;191;;;
                                  -166153;3;0;false;false;;;;;;
                                  -166156;1;0;false;false;63;95;191;;;
                                  -166157;2;0;false;false;;;;;;
                                  -166159;2;0;false;false;63;95;191;;;
                                  -166161;1;0;false;false;;;;;;
                                  -166162;7;0;false;false;63;95;191;;;
                                  -166169;1;0;false;false;;;;;;
                                  -166170;6;0;false;false;63;95;191;;;
                                  -166176;1;0;false;false;;;;;;
                                  -166177;8;0;false;false;63;95;191;;;
                                  -166185;1;0;false;false;;;;;;
                                  -166186;2;0;false;false;63;95;191;;;
                                  -166188;1;0;false;false;;;;;;
                                  -166189;8;0;false;false;63;95;191;;;
                                  -166197;2;0;false;false;;;;;;
                                  -166199;2;0;false;false;63;95;191;;;
                                  -166201;1;0;false;false;;;;;;
                                  -166202;3;0;false;false;63;95;191;;;
                                  -166205;1;0;false;false;;;;;;
                                  -166206;6;0;false;false;63;95;191;;;
                                  -166212;1;0;false;false;;;;;;
                                  -166213;5;0;false;false;63;95;191;;;
                                  -166218;1;0;false;false;;;;;;
                                  -166219;8;0;false;false;63;95;191;;;
                                  -166227;3;0;false;false;;;;;;
                                  -166230;1;0;false;false;63;95;191;;;
                                  -166231;1;0;false;false;;;;;;
                                  -166232;3;0;false;false;63;95;191;;;
                                  -166235;1;0;false;false;;;;;;
                                  -166236;4;0;false;false;63;95;191;;;
                                  -166240;1;0;false;false;;;;;;
                                  -166241;9;0;false;false;63;95;191;;;
                                  -166250;1;0;false;false;;;;;;
                                  -166251;2;0;false;false;63;95;191;;;
                                  -166253;1;0;false;false;;;;;;
                                  -166254;1;0;false;false;63;95;191;;;
                                  -166255;1;0;false;false;;;;;;
                                  -166256;4;0;false;false;63;95;191;;;
                                  -166260;1;0;false;false;;;;;;
                                  -166261;6;0;false;false;63;95;191;;;
                                  -166267;1;0;false;false;;;;;;
                                  -166268;3;0;false;false;63;95;191;;;
                                  -166271;1;0;false;false;;;;;;
                                  -166272;6;0;false;false;63;95;191;;;
                                  -166278;1;0;false;false;;;;;;
                                  -166279;4;0;false;false;63;95;191;;;
                                  -166283;1;0;false;false;;;;;;
                                  -166284;2;0;false;false;63;95;191;;;
                                  -166286;1;0;false;false;;;;;;
                                  -166287;8;0;false;false;63;95;191;;;
                                  -166295;1;0;false;false;;;;;;
                                  -166296;3;0;false;false;63;95;191;;;
                                  -166299;4;0;false;false;;;;;;
                                  -166303;1;0;false;false;63;95;191;;;
                                  -166304;2;0;false;false;;;;;;
                                  -166306;4;0;false;false;63;95;191;;;
                                  -166310;1;0;false;false;;;;;;
                                  -166311;2;0;false;false;63;95;191;;;
                                  -166313;1;0;false;false;;;;;;
                                  -166314;7;0;false;false;63;95;191;;;
                                  -166321;1;0;false;false;;;;;;
                                  -166322;3;0;false;false;63;95;191;;;
                                  -166325;1;0;false;false;;;;;;
                                  -166326;3;0;false;false;63;95;191;;;
                                  -166329;1;0;false;false;;;;;;
                                  -166330;3;0;false;false;63;95;191;;;
                                  -166333;1;0;false;false;;;;;;
                                  -166334;2;0;false;false;63;95;191;;;
                                  -166336;1;0;false;false;;;;;;
                                  -166337;3;0;false;false;63;95;191;;;
                                  -166340;1;0;false;false;;;;;;
                                  -166341;5;0;false;false;63;95;191;;;
                                  -166346;1;0;false;false;;;;;;
                                  -166347;6;0;false;false;63;95;191;;;
                                  -166353;1;0;false;false;;;;;;
                                  -166354;2;0;false;false;63;95;191;;;
                                  -166356;1;0;false;false;;;;;;
                                  -166357;3;0;false;false;63;95;191;;;
                                  -166360;1;0;false;false;;;;;;
                                  -166361;7;0;false;false;63;95;191;;;
                                  -166368;3;0;false;false;;;;;;
                                  -166371;1;0;false;false;63;95;191;;;
                                  -166372;2;0;false;false;;;;;;
                                  -166374;3;0;false;false;63;95;191;;;
                                  -166377;1;0;false;false;;;;;;
                                  -166378;6;0;false;false;63;95;191;;;
                                  -166384;1;0;false;false;;;;;;
                                  -166385;9;0;false;false;63;95;191;;;
                                  -166394;1;0;false;false;;;;;;
                                  -166395;4;0;false;false;63;95;191;;;
                                  -166399;1;0;false;false;;;;;;
                                  -166400;2;0;false;false;63;95;191;;;
                                  -166402;1;0;false;false;;;;;;
                                  -166403;6;0;false;false;63;95;191;;;
                                  -166409;1;0;false;false;;;;;;
                                  -166410;3;0;false;false;63;95;191;;;
                                  -166413;1;0;false;false;;;;;;
                                  -166414;8;0;false;false;63;95;191;;;
                                  -166422;1;0;false;false;;;;;;
                                  -166423;2;0;false;false;63;95;191;;;
                                  -166425;1;0;false;false;;;;;;
                                  -166426;15;0;false;false;63;95;191;;;
                                  -166441;1;0;false;false;;;;;;
                                  -166442;2;0;false;false;63;95;191;;;
                                  -166444;4;0;false;false;;;;;;
                                  -166448;1;0;false;false;63;95;191;;;
                                  -166449;2;0;false;false;;;;;;
                                  -166451;3;0;false;false;63;95;191;;;
                                  -166454;1;0;false;false;;;;;;
                                  -166455;2;0;false;false;63;95;191;;;
                                  -166457;1;0;false;false;;;;;;
                                  -166458;6;0;false;false;63;95;191;;;
                                  -166464;2;0;false;false;;;;;;
                                  -166466;7;0;false;false;63;95;191;;;
                                  -166473;1;0;false;false;;;;;;
                                  -166474;2;0;false;false;63;95;191;;;
                                  -166476;1;0;false;false;;;;;;
                                  -166477;3;0;false;false;63;95;191;;;
                                  -166480;1;0;false;false;;;;;;
                                  -166481;3;0;false;false;63;95;191;;;
                                  -166484;1;0;false;false;;;;;;
                                  -166485;4;0;false;false;63;95;191;;;
                                  -166489;1;0;false;false;;;;;;
                                  -166490;3;0;false;false;63;95;191;;;
                                  -166493;1;0;false;false;;;;;;
                                  -166494;2;0;false;false;63;95;191;;;
                                  -166496;1;0;false;false;;;;;;
                                  -166497;3;0;false;false;63;95;191;;;
                                  -166500;1;0;false;false;;;;;;
                                  -166501;2;0;false;false;63;95;191;;;
                                  -166503;1;0;false;false;;;;;;
                                  -166504;5;0;false;false;63;95;191;;;
                                  -166509;1;0;false;false;;;;;;
                                  -166510;7;0;false;false;63;95;191;;;
                                  -166517;1;0;false;false;;;;;;
                                  -166518;2;0;false;false;63;95;191;;;
                                  -166520;4;0;false;false;;;;;;
                                  -166524;1;0;false;false;63;95;191;;;
                                  -166525;2;0;false;false;;;;;;
                                  -166527;3;0;false;false;63;95;191;;;
                                  -166530;1;0;false;false;;;;;;
                                  -166531;4;0;false;false;63;95;191;;;
                                  -166535;1;0;false;false;;;;;;
                                  -166536;2;0;false;false;63;95;191;;;
                                  -166538;1;0;false;false;;;;;;
                                  -166539;6;0;false;false;63;95;191;;;
                                  -166545;1;0;false;false;;;;;;
                                  -166546;4;0;false;false;63;95;191;;;
                                  -166550;1;0;false;false;;;;;;
                                  -166551;3;0;false;false;63;95;191;;;
                                  -166554;1;0;false;false;;;;;;
                                  -166555;5;0;false;false;63;95;191;;;
                                  -166560;1;0;false;false;;;;;;
                                  -166561;6;0;false;false;63;95;191;;;
                                  -166567;2;0;false;false;;;;;;
                                  -166569;2;0;false;false;63;95;191;;;
                                  -166571;1;0;false;false;;;;;;
                                  -166572;4;0;false;false;63;95;191;;;
                                  -166576;1;0;false;false;;;;;;
                                  -166577;6;0;false;false;63;95;191;;;
                                  -166583;1;0;false;false;;;;;;
                                  -166584;2;0;false;false;63;95;191;;;
                                  -166586;1;0;false;false;;;;;;
                                  -166587;10;0;false;false;63;95;191;;;
                                  -166597;4;0;false;false;;;;;;
                                  -166601;1;0;false;false;63;95;191;;;
                                  -166602;2;0;false;false;;;;;;
                                  -166604;6;0;false;false;63;95;191;;;
                                  -166610;1;0;false;false;;;;;;
                                  -166611;3;0;false;false;63;95;191;;;
                                  -166614;1;0;false;false;;;;;;
                                  -166615;3;0;false;false;63;95;191;;;
                                  -166618;1;0;false;false;;;;;;
                                  -166619;6;0;false;false;63;95;191;;;
                                  -166625;1;0;false;false;;;;;;
                                  -166626;5;0;false;false;63;95;191;;;
                                  -166631;1;0;false;false;;;;;;
                                  -166632;4;0;false;false;63;95;191;;;
                                  -166636;1;0;false;false;;;;;;
                                  -166637;8;0;false;false;63;95;191;;;
                                  -166645;1;0;false;false;;;;;;
                                  -166646;15;0;false;false;63;95;191;;;
                                  -166661;1;0;false;false;;;;;;
                                  -166662;6;0;false;false;63;95;191;;;
                                  -166668;1;0;false;false;;;;;;
                                  -166669;2;0;false;false;63;95;191;;;
                                  -166671;4;0;false;false;;;;;;
                                  -166675;1;0;false;false;63;95;191;;;
                                  -166676;2;0;false;false;;;;;;
                                  -166678;3;0;false;false;63;95;191;;;
                                  -166681;1;0;false;false;;;;;;
                                  -166682;2;0;false;false;63;95;191;;;
                                  -166684;1;0;false;false;;;;;;
                                  -166685;5;0;false;false;63;95;191;;;
                                  -166690;2;0;false;false;;;;;;
                                  -166692;2;0;false;false;63;95;191;;;
                                  -166694;1;0;false;false;;;;;;
                                  -166695;4;0;false;false;63;95;191;;;
                                  -166699;1;0;false;false;;;;;;
                                  -166700;10;0;false;false;63;95;191;;;
                                  -166710;1;0;false;false;;;;;;
                                  -166711;6;0;false;false;63;95;191;;;
                                  -166717;1;0;false;false;;;;;;
                                  -166718;4;0;false;false;63;95;191;;;
                                  -166722;1;0;false;false;;;;;;
                                  -166723;7;0;false;false;63;95;191;;;
                                  -166730;1;0;false;false;;;;;;
                                  -166731;3;0;false;false;63;95;191;;;
                                  -166734;1;0;false;false;;;;;;
                                  -166735;3;0;false;false;63;95;191;;;
                                  -166738;1;0;false;false;;;;;;
                                  -166739;6;0;false;false;63;95;191;;;
                                  -166745;4;0;false;false;;;;;;
                                  -166749;1;0;false;false;63;95;191;;;
                                  -166750;2;0;false;false;;;;;;
                                  -166752;6;0;false;false;63;95;191;;;
                                  -166758;1;0;false;false;;;;;;
                                  -166759;15;0;false;false;63;95;191;;;
                                  -166774;1;0;false;false;;;;;;
                                  -166775;3;0;false;false;63;95;191;;;
                                  -166778;1;0;false;false;;;;;;
                                  -166779;2;0;false;false;63;95;191;;;
                                  -166781;1;0;false;false;;;;;;
                                  -166782;3;0;false;false;63;95;191;;;
                                  -166785;1;0;false;false;;;;;;
                                  -166786;2;0;false;false;63;95;191;;;
                                  -166788;1;0;false;false;;;;;;
                                  -166789;6;0;false;false;63;95;191;;;
                                  -166795;4;0;false;false;;;;;;
                                  -166799;2;0;false;false;63;95;191;;;
                                  -166801;2;0;false;false;;;;;;
                                  -166803;4;1;false;false;127;0;85;;;
                                  -166807;1;0;false;false;;;;;;
                                  -166808;20;0;false;false;0;0;0;;;
                                  -166828;3;1;false;false;127;0;85;;;
                                  -166831;1;0;false;false;;;;;;
                                  -166832;6;0;false;false;0;0;0;;;
                                  -166838;1;0;false;false;;;;;;
                                  -166839;3;1;false;false;127;0;85;;;
                                  -166842;1;0;false;false;;;;;;
                                  -166843;7;0;false;false;0;0;0;;;
                                  -166850;1;0;false;false;;;;;;
                                  -166851;7;1;false;false;127;0;85;;;
                                  -166858;1;0;false;false;;;;;;
                                  -166859;16;0;false;false;0;0;0;;;
                                  -166875;1;0;false;false;;;;;;
                                  -166876;1;0;false;false;0;0;0;;;
                                  -166877;3;0;false;false;;;;;;
                                  -166880;3;1;false;false;127;0;85;;;
                                  -166883;1;0;false;false;;;;;;
                                  -166884;3;0;false;false;0;0;0;;;
                                  -166887;1;0;false;false;;;;;;
                                  -166888;1;0;false;false;0;0;0;;;
                                  -166889;1;0;false;false;;;;;;
                                  -166890;5;0;false;false;0;0;0;;;
                                  -166895;1;0;false;false;;;;;;
                                  -166896;1;0;false;false;0;0;0;;;
                                  -166897;1;0;false;false;;;;;;
                                  -166898;7;0;false;false;0;0;0;;;
                                  -166905;3;0;false;false;;;;;;
                                  -166908;3;1;false;false;127;0;85;;;
                                  -166911;1;0;false;false;;;;;;
                                  -166912;9;0;false;false;0;0;0;;;
                                  -166921;1;0;false;false;;;;;;
                                  -166922;1;0;false;false;0;0;0;;;
                                  -166923;1;0;false;false;;;;;;
                                  -166924;31;0;false;false;0;0;0;;;
                                  -166955;3;0;false;false;;;;;;
                                  -166958;3;1;false;false;127;0;85;;;
                                  -166961;1;0;false;false;;;;;;
                                  -166962;8;0;false;false;0;0;0;;;
                                  -166970;1;0;false;false;;;;;;
                                  -166971;1;0;false;false;0;0;0;;;
                                  -166972;1;0;false;false;;;;;;
                                  -166973;29;0;false;false;0;0;0;;;
                                  -167002;3;0;false;false;;;;;;
                                  -167005;3;1;false;false;127;0;85;;;
                                  -167008;1;0;false;false;;;;;;
                                  -167009;18;0;false;false;0;0;0;;;
                                  -167027;3;0;false;false;;;;;;
                                  -167030;3;1;false;false;127;0;85;;;
                                  -167033;1;0;false;false;;;;;;
                                  -167034;18;0;false;false;0;0;0;;;
                                  -167052;1;0;false;false;;;;;;
                                  -167053;1;0;false;false;0;0;0;;;
                                  -167054;1;0;false;false;;;;;;
                                  -167055;24;0;false;false;0;0;0;;;
                                  -167079;3;0;false;false;;;;;;
                                  -167082;3;1;false;false;127;0;85;;;
                                  -167085;1;0;false;false;;;;;;
                                  -167086;15;0;false;false;0;0;0;;;
                                  -167101;1;0;false;false;;;;;;
                                  -167102;1;0;false;false;0;0;0;;;
                                  -167103;1;0;false;false;;;;;;
                                  -167104;20;0;false;false;0;0;0;;;
                                  -167124;1;0;false;false;;;;;;
                                  -167125;1;0;false;false;0;0;0;;;
                                  -167126;1;0;false;false;;;;;;
                                  -167127;11;0;false;false;0;0;0;;;
                                  -167138;3;0;false;false;;;;;;
                                  -167141;56;0;false;false;63;127;95;;;
                                  -167197;1;0;false;false;;;;;;
                                  -167198;2;1;false;false;127;0;85;;;
                                  -167200;1;0;false;false;;;;;;
                                  -167201;10;0;false;false;0;0;0;;;
                                  -167211;1;0;false;false;;;;;;
                                  -167212;1;0;false;false;0;0;0;;;
                                  -167213;1;0;false;false;;;;;;
                                  -167214;18;0;false;false;0;0;0;;;
                                  -167232;1;0;false;false;;;;;;
                                  -167233;2;0;false;false;0;0;0;;;
                                  -167235;1;0;false;false;;;;;;
                                  -167236;8;0;false;false;0;0;0;;;
                                  -167244;1;0;false;false;;;;;;
                                  -167245;1;0;false;false;0;0;0;;;
                                  -167246;1;0;false;false;;;;;;
                                  -167247;16;0;false;false;0;0;0;;;
                                  -167263;1;0;false;false;;;;;;
                                  -167264;1;0;false;false;0;0;0;;;
                                  -167265;4;0;false;false;;;;;;
                                  -167269;6;1;false;false;127;0;85;;;
                                  -167275;1;0;false;false;0;0;0;;;
                                  -167276;3;0;false;false;;;;;;
                                  -167279;1;0;false;false;0;0;0;;;
                                  -167280;3;0;false;false;;;;;;
                                  -167283;30;0;false;false;63;127;95;;;
                                  -167313;1;0;false;false;;;;;;
                                  -167314;2;1;false;false;127;0;85;;;
                                  -167316;1;0;false;false;;;;;;
                                  -167317;16;0;false;false;0;0;0;;;
                                  -167333;1;0;false;false;;;;;;
                                  -167334;1;0;false;false;0;0;0;;;
                                  -167335;1;0;false;false;;;;;;
                                  -167336;10;0;false;false;0;0;0;;;
                                  -167346;1;0;false;false;;;;;;
                                  -167347;1;0;false;false;0;0;0;;;
                                  -167348;4;0;false;false;;;;;;
                                  -167352;9;0;false;false;0;0;0;;;
                                  -167361;1;0;false;false;;;;;;
                                  -167362;1;0;false;false;0;0;0;;;
                                  -167363;1;0;false;false;;;;;;
                                  -167364;16;0;false;false;0;0;0;;;
                                  -167380;4;0;false;false;;;;;;
                                  -167384;17;0;false;false;0;0;0;;;
                                  -167401;1;0;false;false;;;;;;
                                  -167402;1;0;false;false;0;0;0;;;
                                  -167403;1;0;false;false;;;;;;
                                  -167404;2;0;false;false;0;0;0;;;
                                  -167406;3;0;false;false;;;;;;
                                  -167409;1;0;false;false;0;0;0;;;
                                  -167410;3;0;false;false;;;;;;
                                  -167413;4;1;false;false;127;0;85;;;
                                  -167417;1;0;false;false;;;;;;
                                  -167418;1;0;false;false;0;0;0;;;
                                  -167419;4;0;false;false;;;;;;
                                  -167423;17;0;false;false;0;0;0;;;
                                  -167440;1;0;false;false;;;;;;
                                  -167441;1;0;false;false;0;0;0;;;
                                  -167442;1;0;false;false;;;;;;
                                  -167443;5;0;false;false;0;0;0;;;
                                  -167448;1;0;false;false;;;;;;
                                  -167449;1;0;false;false;0;0;0;;;
                                  -167450;1;0;false;false;;;;;;
                                  -167451;35;0;false;false;0;0;0;;;
                                  -167486;3;0;false;false;;;;;;
                                  -167489;1;0;false;false;0;0;0;;;
                                  -167490;3;0;false;false;;;;;;
                                  -167493;2;1;false;false;127;0;85;;;
                                  -167495;1;0;false;false;;;;;;
                                  -167496;19;0;false;false;0;0;0;;;
                                  -167515;1;0;false;false;;;;;;
                                  -167516;1;0;false;false;0;0;0;;;
                                  -167517;1;0;false;false;;;;;;
                                  -167518;1;0;false;false;0;0;0;;;
                                  -167519;1;0;false;false;;;;;;
                                  -167520;1;0;false;false;0;0;0;;;
                                  -167521;1;0;false;false;;;;;;
                                  -167522;9;0;false;false;0;0;0;;;
                                  -167531;1;0;false;false;;;;;;
                                  -167532;1;0;false;false;0;0;0;;;
                                  -167533;4;0;false;false;;;;;;
                                  -167537;8;0;false;false;0;0;0;;;
                                  -167545;1;0;false;false;;;;;;
                                  -167546;1;0;false;false;0;0;0;;;
                                  -167547;1;0;false;false;;;;;;
                                  -167548;18;0;false;false;0;0;0;;;
                                  -167566;1;0;false;false;;;;;;
                                  -167567;1;0;false;false;0;0;0;;;
                                  -167568;1;0;false;false;;;;;;
                                  -167569;2;0;false;false;0;0;0;;;
                                  -167571;1;0;false;false;;;;;;
                                  -167572;58;0;false;false;63;127;95;;;
                                  -167630;2;0;false;false;;;;;;
                                  -167632;3;0;false;false;0;0;0;;;
                                  -167635;1;0;false;false;;;;;;
                                  -167636;1;0;false;false;0;0;0;;;
                                  -167637;1;0;false;false;;;;;;
                                  -167638;34;0;false;false;0;0;0;;;
                                  -167672;3;0;false;false;;;;;;
                                  -167675;1;0;false;false;0;0;0;;;
                                  -167676;3;0;false;false;;;;;;
                                  -167679;22;0;false;false;0;0;0;;;
                                  -167701;1;0;false;false;;;;;;
                                  -167702;18;0;false;false;0;0;0;;;
                                  -167720;1;0;false;false;;;;;;
                                  -167721;9;0;false;false;0;0;0;;;
                                  -167730;1;0;false;false;;;;;;
                                  -167731;4;0;false;false;0;0;0;;;
                                  -167735;1;0;false;false;;;;;;
                                  -167736;17;0;false;false;0;0;0;;;
                                  -167753;6;0;false;false;;;;;;
                                  -167759;76;0;false;false;63;127;95;;;
                                  -167835;1;0;false;false;;;;;;
                                  -167836;2;1;false;false;127;0;85;;;
                                  -167838;1;0;false;false;;;;;;
                                  -167839;9;0;false;false;0;0;0;;;
                                  -167848;1;0;false;false;;;;;;
                                  -167849;1;0;false;false;0;0;0;;;
                                  -167850;1;0;false;false;;;;;;
                                  -167851;9;0;false;false;0;0;0;;;
                                  -167860;1;0;false;false;;;;;;
                                  -167861;1;0;false;false;0;0;0;;;
                                  -167862;1;0;false;false;;;;;;
                                  -167863;2;0;false;false;0;0;0;;;
                                  -167865;1;0;false;false;;;;;;
                                  -167866;1;0;false;false;0;0;0;;;
                                  -167867;4;0;false;false;;;;;;
                                  -167871;9;0;false;false;0;0;0;;;
                                  -167880;1;0;false;false;;;;;;
                                  -167881;10;0;false;false;0;0;0;;;
                                  -167891;1;0;false;false;;;;;;
                                  -167892;1;0;false;false;0;0;0;;;
                                  -167893;1;0;false;false;;;;;;
                                  -167894;16;0;false;false;0;0;0;;;
                                  -167910;4;0;false;false;;;;;;
                                  -167914;3;1;false;false;127;0;85;;;
                                  -167917;1;0;false;false;;;;;;
                                  -167918;11;0;false;false;0;0;0;;;
                                  -167929;1;0;false;false;;;;;;
                                  -167930;1;0;false;false;0;0;0;;;
                                  -167931;1;0;false;false;;;;;;
                                  -167932;8;0;false;false;0;0;0;;;
                                  -167940;1;0;false;false;;;;;;
                                  -167941;1;0;false;false;0;0;0;;;
                                  -167942;1;0;false;false;;;;;;
                                  -167943;10;0;false;false;0;0;0;;;
                                  -167953;1;0;false;false;;;;;;
                                  -167954;1;0;false;false;0;0;0;;;
                                  -167955;1;0;false;false;;;;;;
                                  -167956;21;0;false;false;0;0;0;;;
                                  -167977;6;0;false;false;;;;;;
                                  -167983;3;1;false;false;127;0;85;;;
                                  -167986;1;0;false;false;;;;;;
                                  -167987;7;0;false;false;0;0;0;;;
                                  -167994;1;0;false;false;;;;;;
                                  -167995;1;0;false;false;0;0;0;;;
                                  -167996;1;0;false;false;;;;;;
                                  -167997;10;0;false;false;0;0;0;;;
                                  -168007;1;0;false;false;;;;;;
                                  -168008;1;0;false;false;0;0;0;;;
                                  -168009;1;0;false;false;;;;;;
                                  -168010;2;0;false;false;0;0;0;;;
                                  -168012;1;0;false;false;;;;;;
                                  -168013;1;0;false;false;0;0;0;;;
                                  -168014;1;0;false;false;;;;;;
                                  -168015;10;0;false;false;0;0;0;;;
                                  -168025;1;0;false;false;;;;;;
                                  -168026;1;0;false;false;0;0;0;;;
                                  -168027;1;0;false;false;;;;;;
                                  -168028;21;0;false;false;0;0;0;;;
                                  -168049;6;0;false;false;;;;;;
                                  -168055;7;0;false;false;0;0;0;;;
                                  -168062;1;0;false;false;;;;;;
                                  -168063;8;0;false;false;0;0;0;;;
                                  -168071;1;0;false;false;;;;;;
                                  -168072;17;0;false;false;0;0;0;;;
                                  -168089;1;0;false;false;;;;;;
                                  -168090;11;0;false;false;0;0;0;;;
                                  -168101;1;0;false;false;;;;;;
                                  -168102;1;0;false;false;0;0;0;;;
                                  -168103;1;0;false;false;;;;;;
                                  -168104;8;0;false;false;0;0;0;;;
                                  -168112;1;0;false;false;;;;;;
                                  -168113;17;0;false;false;0;0;0;;;
                                  -168130;3;0;false;false;;;;;;
                                  -168133;1;0;false;false;0;0;0;;;
                                  -168134;2;0;false;false;;;;;;
                                  -168136;1;0;false;false;0;0;0;;;
                                  -168137;2;0;false;false;;;;;;
                                  -168139;3;0;false;false;63;95;191;;;
                                  -168142;3;0;false;false;;;;;;
                                  -168145;1;0;false;false;63;95;191;;;
                                  -168146;1;0;false;false;;;;;;
                                  -168147;7;0;false;false;63;95;191;;;
                                  -168154;1;0;false;false;;;;;;
                                  -168155;3;0;false;false;63;95;191;;;
                                  -168158;1;0;false;false;;;;;;
                                  -168159;6;0;false;false;63;95;191;;;
                                  -168165;1;0;false;false;;;;;;
                                  -168166;4;0;false;false;63;95;191;;;
                                  -168170;1;0;false;false;;;;;;
                                  -168171;4;0;false;false;63;95;191;;;
                                  -168175;1;0;false;false;;;;;;
                                  -168176;5;0;false;false;63;95;191;;;
                                  -168181;1;0;false;false;;;;;;
                                  -168182;11;0;false;false;63;95;191;;;
                                  -168193;1;0;false;false;;;;;;
                                  -168194;7;0;false;false;63;95;191;;;
                                  -168201;1;0;false;false;;;;;;
                                  -168202;5;0;false;false;63;95;191;;;
                                  -168207;1;0;false;false;;;;;;
                                  -168208;3;0;false;false;63;95;191;;;
                                  -168211;1;0;false;false;;;;;;
                                  -168212;6;0;false;false;63;95;191;;;
                                  -168218;3;0;false;false;;;;;;
                                  -168221;1;0;false;false;63;95;191;;;
                                  -168222;1;0;false;false;;;;;;
                                  -168223;13;0;false;false;63;95;191;;;
                                  -168236;1;0;false;false;;;;;;
                                  -168237;7;0;false;false;63;95;191;;;
                                  -168244;1;0;false;false;;;;;;
                                  -168245;4;0;false;false;63;95;191;;;
                                  -168249;3;0;false;false;;;;;;
                                  -168252;1;0;false;false;63;95;191;;;
                                  -168253;3;0;false;false;;;;;;
                                  -168256;1;0;false;false;63;95;191;;;
                                  -168257;1;0;false;false;;;;;;
                                  -168258;8;1;false;false;127;159;191;;;
                                  -168266;3;0;false;false;63;95;191;;;
                                  -168269;1;0;false;false;;;;;;
                                  -168270;6;0;false;false;63;95;191;;;
                                  -168276;1;0;false;false;;;;;;
                                  -168277;4;0;false;false;63;95;191;;;
                                  -168281;1;0;false;false;;;;;;
                                  -168282;4;0;false;false;63;95;191;;;
                                  -168286;1;0;false;false;;;;;;
                                  -168287;5;0;false;false;63;95;191;;;
                                  -168292;1;0;false;false;;;;;;
                                  -168293;11;0;false;false;63;95;191;;;
                                  -168304;1;0;false;false;;;;;;
                                  -168305;7;0;false;false;63;95;191;;;
                                  -168312;1;0;false;false;;;;;;
                                  -168313;5;0;false;false;63;95;191;;;
                                  -168318;1;0;false;false;;;;;;
                                  -168319;3;0;false;false;63;95;191;;;
                                  -168322;1;0;false;false;;;;;;
                                  -168323;6;0;false;false;63;95;191;;;
                                  -168329;3;0;false;false;;;;;;
                                  -168332;1;0;false;false;63;95;191;;;
                                  -168333;1;0;false;false;;;;;;
                                  -168334;11;1;false;false;127;159;191;;;
                                  -168345;12;0;false;false;63;95;191;;;
                                  -168357;1;0;false;false;;;;;;
                                  -168358;4;0;false;false;127;127;159;;;
                                  -168362;3;0;false;false;;;;;;
                                  -168365;1;0;false;false;63;95;191;;;
                                  -168366;4;0;false;false;;;;;;
                                  -168370;4;0;false;false;127;127;159;;;
                                  -168374;21;0;false;false;63;95;191;;;
                                  -168395;1;0;false;false;;;;;;
                                  -168396;1;0;false;false;127;127;159;;;
                                  -168397;1;0;false;false;;;;;;
                                  -168398;2;0;false;false;63;95;191;;;
                                  -168400;1;0;false;false;;;;;;
                                  -168401;3;0;false;false;63;95;191;;;
                                  -168404;1;0;false;false;;;;;;
                                  -168405;8;0;false;false;63;95;191;;;
                                  -168413;1;0;false;false;;;;;;
                                  -168414;3;0;false;false;63;95;191;;;
                                  -168417;1;0;false;false;;;;;;
                                  -168418;4;0;false;false;63;95;191;;;
                                  -168422;1;0;false;false;;;;;;
                                  -168423;8;0;false;false;63;95;191;;;
                                  -168431;5;0;false;false;127;127;159;;;
                                  -168436;3;0;false;false;;;;;;
                                  -168439;1;0;false;false;63;95;191;;;
                                  -168440;4;0;false;false;;;;;;
                                  -168444;4;0;false;false;127;127;159;;;
                                  -168448;27;0;false;false;63;95;191;;;
                                  -168475;1;0;false;false;;;;;;
                                  -168476;1;0;false;false;127;127;159;;;
                                  -168477;1;0;false;false;;;;;;
                                  -168478;2;0;false;false;63;95;191;;;
                                  -168480;1;0;false;false;;;;;;
                                  -168481;3;0;false;false;63;95;191;;;
                                  -168484;1;0;false;false;;;;;;
                                  -168485;6;0;false;false;63;95;191;;;
                                  -168491;1;0;false;false;;;;;;
                                  -168492;4;0;false;false;63;95;191;;;
                                  -168496;1;0;false;false;;;;;;
                                  -168497;3;0;false;false;63;95;191;;;
                                  -168500;1;0;false;false;;;;;;
                                  -168501;6;0;false;false;63;95;191;;;
                                  -168507;1;0;false;false;;;;;;
                                  -168508;4;0;false;false;63;95;191;;;
                                  -168512;1;0;false;false;;;;;;
                                  -168513;7;0;false;false;63;95;191;;;
                                  -168520;1;0;false;false;;;;;;
                                  -168521;3;0;false;false;63;95;191;;;
                                  -168524;1;0;false;false;;;;;;
                                  -168525;8;0;false;false;63;95;191;;;
                                  -168533;5;0;false;false;127;127;159;;;
                                  -168538;3;0;false;false;;;;;;
                                  -168541;1;0;false;false;63;95;191;;;
                                  -168542;1;0;false;false;;;;;;
                                  -168543;5;0;false;false;127;127;159;;;
                                  -168548;3;0;false;false;;;;;;
                                  -168551;2;0;false;false;63;95;191;;;
                                  -168553;2;0;false;false;;;;;;
                                  -168555;6;0;false;false;0;0;0;;;
                                  -168561;1;0;false;false;;;;;;
                                  -168562;9;0;false;false;0;0;0;;;
                                  -168571;3;0;false;false;;;;;;
                                  -168574;14;0;false;false;0;0;0;;;
                                  -168588;3;0;false;false;;;;;;
                                  -168591;9;0;false;false;0;0;0;;;
                                  -168600;1;0;false;false;;;;;;
                                  -168601;9;0;false;false;0;0;0;;;
                                  -168610;1;0;false;false;;;;;;
                                  -168611;1;0;false;false;0;0;0;;;
                                  -168612;1;0;false;false;;;;;;
                                  -168613;3;1;false;false;127;0;85;;;
                                  -168616;1;0;false;false;;;;;;
                                  -168617;12;0;false;false;0;0;0;;;
                                  -168629;1;0;false;false;;;;;;
                                  -168630;16;0;false;false;0;0;0;;;
                                  -168646;3;0;false;false;;;;;;
                                  -168649;6;1;false;false;127;0;85;;;
                                  -168655;1;0;false;false;;;;;;
                                  -168656;36;0;false;false;0;0;0;;;
                                  -168692;2;0;false;false;;;;;;
                                  -168694;1;0;false;false;0;0;0;;;
                                  -168695;2;0;false;false;;;;;;
                                  -168697;3;0;false;false;63;95;191;;;
                                  -168700;4;0;false;false;;;;;;
                                  -168704;1;0;false;false;63;95;191;;;
                                  -168705;1;0;false;false;;;;;;
                                  -168706;5;0;false;false;63;95;191;;;
                                  -168711;1;0;false;false;;;;;;
                                  -168712;10;0;false;false;63;95;191;;;
                                  -168722;3;0;false;false;;;;;;
                                  -168725;2;0;false;false;63;95;191;;;
                                  -168727;2;0;false;false;;;;;;
                                  -168729;4;1;false;false;127;0;85;;;
                                  -168733;1;0;false;false;;;;;;
                                  -168734;19;0;false;false;0;0;0;;;
                                  -168753;1;0;false;false;;;;;;
                                  -168754;6;0;false;false;0;0;0;;;
                                  -168760;1;0;false;false;;;;;;
                                  -168761;1;0;false;false;0;0;0;;;
                                  -168762;3;0;false;false;;;;;;
                                  -168765;27;0;false;false;0;0;0;;;
                                  -168792;1;0;false;false;;;;;;
                                  -168793;10;0;false;false;0;0;0;;;
                                  -168803;3;0;false;false;;;;;;
                                  -168806;28;0;false;false;0;0;0;;;
                                  -168834;1;0;false;false;;;;;;
                                  -168835;7;0;false;false;0;0;0;;;
                                  -168842;3;0;false;false;;;;;;
                                  -168845;10;0;false;false;0;0;0;;;
                                  -168855;1;0;false;false;;;;;;
                                  -168856;1;0;false;false;0;0;0;;;
                                  -168857;1;0;false;false;;;;;;
                                  -168858;9;0;false;false;0;0;0;;;
                                  -168867;5;0;false;false;;;;;;
                                  -168872;20;0;false;false;0;0;0;;;
                                  -168892;3;0;false;false;;;;;;
                                  -168895;22;0;false;false;0;0;0;;;
                                  -168917;3;0;false;false;;;;;;
                                  -168920;2;1;false;false;127;0;85;;;
                                  -168922;1;0;false;false;;;;;;
                                  -168923;9;0;false;false;0;0;0;;;
                                  -168932;1;0;false;false;;;;;;
                                  -168933;2;0;false;false;0;0;0;;;
                                  -168935;1;0;false;false;;;;;;
                                  -168936;4;1;false;false;127;0;85;;;
                                  -168940;1;0;false;false;0;0;0;;;
                                  -168941;1;0;false;false;;;;;;
                                  -168942;1;0;false;false;0;0;0;;;
                                  -168943;4;0;false;false;;;;;;
                                  -168947;19;0;false;false;0;0;0;;;
                                  -168966;4;0;false;false;;;;;;
                                  -168970;8;0;false;false;0;0;0;;;
                                  -168978;1;0;false;false;;;;;;
                                  -168979;1;0;false;false;0;0;0;;;
                                  -168980;1;0;false;false;;;;;;
                                  -168981;4;1;false;false;127;0;85;;;
                                  -168985;1;0;false;false;0;0;0;;;
                                  -168986;3;0;false;false;;;;;;
                                  -168989;1;0;false;false;0;0;0;;;
                                  -168990;3;0;false;false;;;;;;
                                  -168993;2;1;false;false;127;0;85;;;
                                  -168995;1;0;false;false;;;;;;
                                  -168996;8;0;false;false;0;0;0;;;
                                  -169004;1;0;false;false;;;;;;
                                  -169005;2;0;false;false;0;0;0;;;
                                  -169007;1;0;false;false;;;;;;
                                  -169008;4;1;false;false;127;0;85;;;
                                  -169012;1;0;false;false;0;0;0;;;
                                  -169013;1;0;false;false;;;;;;
                                  -169014;1;0;false;false;0;0;0;;;
                                  -169015;4;0;false;false;;;;;;
                                  -169019;53;0;false;false;0;0;0;;;
                                  -169072;4;0;false;false;;;;;;
                                  -169076;7;0;false;false;0;0;0;;;
                                  -169083;1;0;false;false;;;;;;
                                  -169084;1;0;false;false;0;0;0;;;
                                  -169085;1;0;false;false;;;;;;
                                  -169086;4;1;false;false;127;0;85;;;
                                  -169090;1;0;false;false;0;0;0;;;
                                  -169091;3;0;false;false;;;;;;
                                  -169094;1;0;false;false;0;0;0;;;
                                  -169095;3;0;false;false;;;;;;
                                  -169098;2;1;false;false;127;0;85;;;
                                  -169100;1;0;false;false;;;;;;
                                  -169101;13;0;false;false;0;0;0;;;
                                  -169114;1;0;false;false;;;;;;
                                  -169115;2;0;false;false;0;0;0;;;
                                  -169117;1;0;false;false;;;;;;
                                  -169118;4;1;false;false;127;0;85;;;
                                  -169122;1;0;false;false;0;0;0;;;
                                  -169123;1;0;false;false;;;;;;
                                  -169124;1;0;false;false;0;0;0;;;
                                  -169125;4;0;false;false;;;;;;
                                  -169129;23;0;false;false;0;0;0;;;
                                  -169152;4;0;false;false;;;;;;
                                  -169156;12;0;false;false;0;0;0;;;
                                  -169168;1;0;false;false;;;;;;
                                  -169169;1;0;false;false;0;0;0;;;
                                  -169170;1;0;false;false;;;;;;
                                  -169171;4;1;false;false;127;0;85;;;
                                  -169175;1;0;false;false;0;0;0;;;
                                  -169176;3;0;false;false;;;;;;
                                  -169179;1;0;false;false;0;0;0;;;
                                  -169180;3;0;false;false;;;;;;
                                  -169183;2;1;false;false;127;0;85;;;
                                  -169185;1;0;false;false;;;;;;
                                  -169186;16;0;false;false;0;0;0;;;
                                  -169202;1;0;false;false;;;;;;
                                  -169203;2;0;false;false;0;0;0;;;
                                  -169205;1;0;false;false;;;;;;
                                  -169206;4;1;false;false;127;0;85;;;
                                  -169210;1;0;false;false;0;0;0;;;
                                  -169211;1;0;false;false;;;;;;
                                  -169212;1;0;false;false;0;0;0;;;
                                  -169213;4;0;false;false;;;;;;
                                  -169217;26;0;false;false;0;0;0;;;
                                  -169243;4;0;false;false;;;;;;
                                  -169247;15;0;false;false;0;0;0;;;
                                  -169262;1;0;false;false;;;;;;
                                  -169263;1;0;false;false;0;0;0;;;
                                  -169264;1;0;false;false;;;;;;
                                  -169265;4;1;false;false;127;0;85;;;
                                  -169269;1;0;false;false;0;0;0;;;
                                  -169270;3;0;false;false;;;;;;
                                  -169273;1;0;false;false;0;0;0;;;
                                  -169274;3;0;false;false;;;;;;
                                  -169277;2;1;false;false;127;0;85;;;
                                  -169279;1;0;false;false;;;;;;
                                  -169280;17;0;false;false;0;0;0;;;
                                  -169297;1;0;false;false;;;;;;
                                  -169298;2;0;false;false;0;0;0;;;
                                  -169300;1;0;false;false;;;;;;
                                  -169301;4;1;false;false;127;0;85;;;
                                  -169305;1;0;false;false;0;0;0;;;
                                  -169306;1;0;false;false;;;;;;
                                  -169307;1;0;false;false;0;0;0;;;
                                  -169308;4;0;false;false;;;;;;
                                  -169312;27;0;false;false;0;0;0;;;
                                  -169339;4;0;false;false;;;;;;
                                  -169343;16;0;false;false;0;0;0;;;
                                  -169359;1;0;false;false;;;;;;
                                  -169360;1;0;false;false;0;0;0;;;
                                  -169361;1;0;false;false;;;;;;
                                  -169362;4;1;false;false;127;0;85;;;
                                  -169366;1;0;false;false;0;0;0;;;
                                  -169367;3;0;false;false;;;;;;
                                  -169370;1;0;false;false;0;0;0;;;
                                  -169371;3;0;false;false;;;;;;
                                  -169374;2;1;false;false;127;0;85;;;
                                  -169376;1;0;false;false;;;;;;
                                  -169377;18;0;false;false;0;0;0;;;
                                  -169395;1;0;false;false;;;;;;
                                  -169396;2;0;false;false;0;0;0;;;
                                  -169398;1;0;false;false;;;;;;
                                  -169399;4;1;false;false;127;0;85;;;
                                  -169403;1;0;false;false;0;0;0;;;
                                  -169404;1;0;false;false;;;;;;
                                  -169405;1;0;false;false;0;0;0;;;
                                  -169406;4;0;false;false;;;;;;
                                  -169410;28;0;false;false;0;0;0;;;
                                  -169438;4;0;false;false;;;;;;
                                  -169442;17;0;false;false;0;0;0;;;
                                  -169459;1;0;false;false;;;;;;
                                  -169460;1;0;false;false;0;0;0;;;
                                  -169461;1;0;false;false;;;;;;
                                  -169462;4;1;false;false;127;0;85;;;
                                  -169466;1;0;false;false;0;0;0;;;
                                  -169467;3;0;false;false;;;;;;
                                  -169470;1;0;false;false;0;0;0;;;
                                  -169471;3;0;false;false;;;;;;
                                  -169474;2;1;false;false;127;0;85;;;
                                  -169476;1;0;false;false;;;;;;
                                  -169477;15;0;false;false;0;0;0;;;
                                  -169492;1;0;false;false;;;;;;
                                  -169493;1;0;false;false;0;0;0;;;
                                  -169494;4;0;false;false;;;;;;
                                  -169498;40;0;false;false;0;0;0;;;
                                  -169538;3;0;false;false;;;;;;
                                  -169541;1;0;false;false;0;0;0;;;
                                  -169542;3;0;false;false;;;;;;
                                  -169545;19;0;false;false;0;0;0;;;
                                  -169564;1;0;false;false;;;;;;
                                  -169565;1;0;false;false;0;0;0;;;
                                  -169566;1;0;false;false;;;;;;
                                  -169567;4;1;false;false;127;0;85;;;
                                  -169571;1;0;false;false;0;0;0;;;
                                  -169572;3;0;false;false;;;;;;
                                  -169575;19;0;false;false;0;0;0;;;
                                  -169594;1;0;false;false;;;;;;
                                  -169595;1;0;false;false;0;0;0;;;
                                  -169596;1;0;false;false;;;;;;
                                  -169597;4;1;false;false;127;0;85;;;
                                  -169601;1;0;false;false;0;0;0;;;
                                  -169602;3;0;false;false;;;;;;
                                  -169605;14;0;false;false;0;0;0;;;
                                  -169619;1;0;false;false;;;;;;
                                  -169620;1;0;false;false;0;0;0;;;
                                  -169621;1;0;false;false;;;;;;
                                  -169622;4;1;false;false;127;0;85;;;
                                  -169626;1;0;false;false;0;0;0;;;
                                  -169627;3;0;false;false;;;;;;
                                  -169630;18;0;false;false;0;0;0;;;
                                  -169648;1;0;false;false;;;;;;
                                  -169649;1;0;false;false;0;0;0;;;
                                  -169650;1;0;false;false;;;;;;
                                  -169651;4;1;false;false;127;0;85;;;
                                  -169655;1;0;false;false;0;0;0;;;
                                  -169656;3;0;false;false;;;;;;
                                  -169659;9;0;false;false;0;0;0;;;
                                  -169668;1;0;false;false;;;;;;
                                  -169669;1;0;false;false;0;0;0;;;
                                  -169670;1;0;false;false;;;;;;
                                  -169671;4;1;false;false;127;0;85;;;
                                  -169675;1;0;false;false;0;0;0;;;
                                  -169676;3;0;false;false;;;;;;
                                  -169679;11;0;false;false;0;0;0;;;
                                  -169690;1;0;false;false;;;;;;
                                  -169691;1;0;false;false;0;0;0;;;
                                  -169692;1;0;false;false;;;;;;
                                  -169693;4;1;false;false;127;0;85;;;
                                  -169697;1;0;false;false;0;0;0;;;
                                  -169698;3;0;false;false;;;;;;
                                  -169701;9;0;false;false;0;0;0;;;
                                  -169710;1;0;false;false;;;;;;
                                  -169711;1;0;false;false;0;0;0;;;
                                  -169712;1;0;false;false;;;;;;
                                  -169713;4;1;false;false;127;0;85;;;
                                  -169717;1;0;false;false;0;0;0;;;
                                  -169718;3;0;false;false;;;;;;
                                  -169721;20;0;false;false;0;0;0;;;
                                  -169741;1;0;false;false;;;;;;
                                  -169742;1;0;false;false;0;0;0;;;
                                  -169743;1;0;false;false;;;;;;
                                  -169744;4;1;false;false;127;0;85;;;
                                  -169748;1;0;false;false;0;0;0;;;
                                  -169749;3;0;false;false;;;;;;
                                  -169752;12;0;false;false;0;0;0;;;
                                  -169764;1;0;false;false;;;;;;
                                  -169765;1;0;false;false;0;0;0;;;
                                  -169766;1;0;false;false;;;;;;
                                  -169767;4;1;false;false;127;0;85;;;
                                  -169771;1;0;false;false;0;0;0;;;
                                  -169772;3;0;false;false;;;;;;
                                  -169775;10;0;false;false;0;0;0;;;
                                  -169785;1;0;false;false;;;;;;
                                  -169786;1;0;false;false;0;0;0;;;
                                  -169787;1;0;false;false;;;;;;
                                  -169788;4;1;false;false;127;0;85;;;
                                  -169792;1;0;false;false;0;0;0;;;
                                  -169793;3;0;false;false;;;;;;
                                  -169796;10;0;false;false;0;0;0;;;
                                  -169806;1;0;false;false;;;;;;
                                  -169807;1;0;false;false;0;0;0;;;
                                  -169808;1;0;false;false;;;;;;
                                  -169809;4;1;false;false;127;0;85;;;
                                  -169813;1;0;false;false;0;0;0;;;
                                  -169814;3;0;false;false;;;;;;
                                  -169817;9;0;false;false;0;0;0;;;
                                  -169826;1;0;false;false;;;;;;
                                  -169827;1;0;false;false;0;0;0;;;
                                  -169828;1;0;false;false;;;;;;
                                  -169829;4;1;false;false;127;0;85;;;
                                  -169833;1;0;false;false;0;0;0;;;
                                  -169834;2;0;false;false;;;;;;
                                  -169836;1;0;false;false;0;0;0;;;
                                  -169837;2;0;false;false;;;;;;
                                  -169839;3;0;false;false;63;95;191;;;
                                  -169842;4;0;false;false;;;;;;
                                  -169846;1;0;false;false;63;95;191;;;
                                  -169847;1;0;false;false;;;;;;
                                  -169848;7;0;false;false;63;95;191;;;
                                  -169855;1;0;false;false;;;;;;
                                  -169856;3;0;false;false;63;95;191;;;
                                  -169859;1;0;false;false;;;;;;
                                  -169860;6;0;false;false;63;95;191;;;
                                  -169866;1;0;false;false;;;;;;
                                  -169867;13;0;false;false;63;95;191;;;
                                  -169880;3;0;false;false;;;;;;
                                  -169883;2;0;false;false;63;95;191;;;
                                  -169885;2;0;false;false;;;;;;
                                  -169887;4;1;false;false;127;0;85;;;
                                  -169891;1;0;false;false;;;;;;
                                  -169892;28;0;false;false;0;0;0;;;
                                  -169920;1;0;false;false;;;;;;
                                  -169921;6;0;false;false;0;0;0;;;
                                  -169927;1;0;false;false;;;;;;
                                  -169928;1;0;false;false;0;0;0;;;
                                  -169929;3;0;false;false;;;;;;
                                  -169932;3;1;false;false;127;0;85;;;
                                  -169935;1;0;false;false;;;;;;
                                  -169936;11;0;false;false;0;0;0;;;
                                  -169947;1;0;false;false;;;;;;
                                  -169948;1;0;false;false;0;0;0;;;
                                  -169949;1;0;false;false;;;;;;
                                  -169950;33;0;false;false;0;0;0;;;
                                  -169983;1;0;false;false;;;;;;
                                  -169984;1;0;false;false;0;0;0;;;
                                  -169985;1;0;false;false;;;;;;
                                  -169986;23;0;false;false;0;0;0;;;
                                  -170009;3;0;false;false;;;;;;
                                  -170012;30;0;false;false;0;0;0;;;
                                  -170042;2;0;false;false;;;;;;
                                  -170044;1;0;false;false;0;0;0;;;
                                  -170045;2;0;false;false;;;;;;
                                  -170047;3;0;false;false;63;95;191;;;
                                  -170050;3;0;false;false;;;;;;
                                  -170053;1;0;false;false;63;95;191;;;
                                  -170054;1;0;false;false;;;;;;
                                  -170055;2;0;false;false;63;95;191;;;
                                  -170057;1;0;false;false;;;;;;
                                  -170058;2;0;false;false;63;95;191;;;
                                  -170060;1;0;false;false;;;;;;
                                  -170061;6;0;false;false;63;95;191;;;
                                  -170067;1;0;false;false;;;;;;
                                  -170068;3;0;false;false;63;95;191;;;
                                  -170071;1;0;false;false;;;;;;
                                  -170072;4;0;false;false;63;95;191;;;
                                  -170076;1;0;false;false;;;;;;
                                  -170077;10;0;false;false;63;95;191;;;
                                  -170087;1;0;false;false;;;;;;
                                  -170088;3;0;false;false;63;95;191;;;
                                  -170091;1;0;false;false;;;;;;
                                  -170092;3;0;false;false;63;95;191;;;
                                  -170095;1;0;false;false;;;;;;
                                  -170096;3;0;false;false;63;95;191;;;
                                  -170099;1;0;false;false;;;;;;
                                  -170100;6;0;false;false;63;95;191;;;
                                  -170106;1;0;false;false;;;;;;
                                  -170107;7;0;false;false;63;95;191;;;
                                  -170114;1;0;false;false;;;;;;
                                  -170115;3;0;false;false;63;95;191;;;
                                  -170118;1;0;false;false;;;;;;
                                  -170119;7;0;false;false;63;95;191;;;
                                  -170126;3;0;false;false;;;;;;
                                  -170129;1;0;false;false;63;95;191;;;
                                  -170130;1;0;false;false;;;;;;
                                  -170131;10;0;false;false;63;95;191;;;
                                  -170141;1;0;false;false;;;;;;
                                  -170142;2;0;false;false;63;95;191;;;
                                  -170144;1;0;false;false;;;;;;
                                  -170145;1;0;false;false;63;95;191;;;
                                  -170146;1;0;false;false;;;;;;
                                  -170147;9;0;false;false;63;95;191;;;
                                  -170156;1;0;false;false;;;;;;
                                  -170157;3;0;false;false;63;95;191;;;
                                  -170160;1;0;false;false;;;;;;
                                  -170161;4;0;false;false;63;95;191;;;
                                  -170165;1;0;false;false;;;;;;
                                  -170166;7;0;false;false;63;95;191;;;
                                  -170173;1;0;false;false;;;;;;
                                  -170174;5;0;false;false;63;95;191;;;
                                  -170179;1;0;false;false;;;;;;
                                  -170180;2;0;false;false;63;95;191;;;
                                  -170182;1;0;false;false;;;;;;
                                  -170183;2;0;false;false;63;95;191;;;
                                  -170185;1;0;false;false;;;;;;
                                  -170186;3;0;false;false;63;95;191;;;
                                  -170189;1;0;false;false;;;;;;
                                  -170190;8;0;false;false;63;95;191;;;
                                  -170198;3;0;false;false;;;;;;
                                  -170201;1;0;false;false;63;95;191;;;
                                  -170202;1;0;false;false;;;;;;
                                  -170203;3;0;false;false;127;127;159;;;
                                  -170206;3;0;false;false;;;;;;
                                  -170209;1;0;false;false;63;95;191;;;
                                  -170210;3;0;false;false;;;;;;
                                  -170213;1;0;false;false;63;95;191;;;
                                  -170214;1;0;false;false;;;;;;
                                  -170215;7;1;false;false;127;159;191;;;
                                  -170222;5;0;false;false;63;95;191;;;
                                  -170227;1;0;false;false;;;;;;
                                  -170228;8;0;false;false;63;95;191;;;
                                  -170236;1;0;false;false;;;;;;
                                  -170237;5;0;false;false;63;95;191;;;
                                  -170242;3;0;false;false;;;;;;
                                  -170245;2;0;false;false;63;95;191;;;
                                  -170247;2;0;false;false;;;;;;
                                  -170249;4;1;false;false;127;0;85;;;
                                  -170253;1;0;false;false;;;;;;
                                  -170254;15;0;false;false;0;0;0;;;
                                  -170269;1;0;false;false;;;;;;
                                  -170270;6;0;false;false;0;0;0;;;
                                  -170276;1;0;false;false;;;;;;
                                  -170277;1;0;false;false;0;0;0;;;
                                  -170278;3;0;false;false;;;;;;
                                  -170281;3;1;false;false;127;0;85;;;
                                  -170284;1;0;false;false;;;;;;
                                  -170285;7;0;false;false;0;0;0;;;
                                  -170292;3;0;false;false;;;;;;
                                  -170295;9;0;false;false;0;0;0;;;
                                  -170304;1;0;false;false;;;;;;
                                  -170305;1;0;false;false;0;0;0;;;
                                  -170306;1;0;false;false;;;;;;
                                  -170307;4;1;false;false;127;0;85;;;
                                  -170311;1;0;false;false;0;0;0;;;
                                  -170312;3;0;false;false;;;;;;
                                  -170315;2;1;false;false;127;0;85;;;
                                  -170317;1;0;false;false;;;;;;
                                  -170318;14;0;false;false;0;0;0;;;
                                  -170332;1;0;false;false;;;;;;
                                  -170333;2;0;false;false;0;0;0;;;
                                  -170335;1;0;false;false;;;;;;
                                  -170336;2;0;false;false;0;0;0;;;
                                  -170338;1;0;false;false;;;;;;
                                  -170339;1;0;false;false;0;0;0;;;
                                  -170340;4;0;false;false;;;;;;
                                  -170344;35;0;false;false;63;127;95;;;
                                  -170379;2;0;false;false;;;;;;
                                  -170381;6;0;false;false;0;0;0;;;
                                  -170387;1;0;false;false;;;;;;
                                  -170388;1;0;false;false;0;0;0;;;
                                  -170389;1;0;false;false;;;;;;
                                  -170390;27;0;false;false;0;0;0;;;
                                  -170417;1;0;false;false;;;;;;
                                  -170418;1;0;false;false;0;0;0;;;
                                  -170419;1;0;false;false;;;;;;
                                  -170420;17;0;false;false;0;0;0;;;
                                  -170437;3;0;false;false;;;;;;
                                  -170440;1;0;false;false;0;0;0;;;
                                  -170441;3;0;false;false;;;;;;
                                  -170444;4;1;false;false;127;0;85;;;
                                  -170448;1;0;false;false;;;;;;
                                  -170449;1;0;false;false;0;0;0;;;
                                  -170450;4;0;false;false;;;;;;
                                  -170454;26;0;false;false;63;127;95;;;
                                  -170480;2;0;false;false;;;;;;
                                  -170482;6;0;false;false;0;0;0;;;
                                  -170488;1;0;false;false;;;;;;
                                  -170489;1;0;false;false;0;0;0;;;
                                  -170490;1;0;false;false;;;;;;
                                  -170491;29;0;false;false;0;0;0;;;
                                  -170520;1;0;false;false;;;;;;
                                  -170521;1;0;false;false;0;0;0;;;
                                  -170522;1;0;false;false;;;;;;
                                  -170523;17;0;false;false;0;0;0;;;
                                  -170540;4;0;false;false;;;;;;
                                  -170544;2;1;false;false;127;0;85;;;
                                  -170546;1;0;false;false;;;;;;
                                  -170547;7;0;false;false;0;0;0;;;
                                  -170554;1;0;false;false;;;;;;
                                  -170555;2;0;false;false;0;0;0;;;
                                  -170557;1;0;false;false;;;;;;
                                  -170558;9;0;false;false;0;0;0;;;
                                  -170567;1;0;false;false;;;;;;
                                  -170568;1;0;false;false;0;0;0;;;
                                  -170569;6;0;false;false;;;;;;
                                  -170575;39;0;false;false;63;127;95;;;
                                  -170614;3;0;false;false;;;;;;
                                  -170617;2;1;false;false;127;0;85;;;
                                  -170619;1;0;false;false;;;;;;
                                  -170620;17;0;false;false;0;0;0;;;
                                  -170637;1;0;false;false;;;;;;
                                  -170638;1;0;false;false;0;0;0;;;
                                  -170639;1;0;false;false;;;;;;
                                  -170640;9;0;false;false;0;0;0;;;
                                  -170649;1;0;false;false;;;;;;
                                  -170650;2;0;false;false;0;0;0;;;
                                  -170652;1;0;false;false;;;;;;
                                  -170653;1;0;false;false;0;0;0;;;
                                  -170654;1;0;false;false;;;;;;
                                  -170655;2;0;false;false;0;0;0;;;
                                  -170657;1;0;false;false;;;;;;
                                  -170658;16;0;false;false;0;0;0;;;
                                  -170674;1;0;false;false;;;;;;
                                  -170675;2;0;false;false;0;0;0;;;
                                  -170677;1;0;false;false;;;;;;
                                  -170678;2;0;false;false;0;0;0;;;
                                  -170680;1;0;false;false;;;;;;
                                  -170681;2;0;false;false;0;0;0;;;
                                  -170683;1;0;false;false;;;;;;
                                  -170684;15;0;false;false;0;0;0;;;
                                  -170699;1;0;false;false;;;;;;
                                  -170700;2;0;false;false;0;0;0;;;
                                  -170702;1;0;false;false;;;;;;
                                  -170703;3;0;false;false;0;0;0;;;
                                  -170706;1;0;false;false;;;;;;
                                  -170707;1;0;false;false;0;0;0;;;
                                  -170708;6;0;false;false;;;;;;
                                  -170714;63;0;false;false;63;127;95;;;
                                  -170777;4;0;false;false;;;;;;
                                  -170781;64;0;false;false;63;127;95;;;
                                  -170845;4;0;false;false;;;;;;
                                  -170849;3;1;false;false;127;0;85;;;
                                  -170852;1;0;false;false;;;;;;
                                  -170853;1;0;false;false;0;0;0;;;
                                  -170854;1;0;false;false;;;;;;
                                  -170855;1;0;false;false;0;0;0;;;
                                  -170856;1;0;false;false;;;;;;
                                  -170857;15;0;false;false;0;0;0;;;
                                  -170872;1;0;false;false;;;;;;
                                  -170873;1;0;false;false;0;0;0;;;
                                  -170874;1;0;false;false;;;;;;
                                  -170875;3;0;false;false;0;0;0;;;
                                  -170878;6;0;false;false;;;;;;
                                  -170884;6;0;false;false;0;0;0;;;
                                  -170890;1;0;false;false;;;;;;
                                  -170891;1;0;false;false;0;0;0;;;
                                  -170892;1;0;false;false;;;;;;
                                  -170893;15;0;false;false;0;0;0;;;
                                  -170908;1;0;false;false;;;;;;
                                  -170909;1;0;false;false;0;0;0;;;
                                  -170910;1;0;false;false;;;;;;
                                  -170911;17;0;false;false;0;0;0;;;
                                  -170928;5;0;false;false;;;;;;
                                  -170933;1;0;false;false;0;0;0;;;
                                  -170934;4;0;false;false;;;;;;
                                  -170938;1;0;false;false;0;0;0;;;
                                  -170939;3;0;false;false;;;;;;
                                  -170942;1;0;false;false;0;0;0;;;
                                  -170943;3;0;false;false;;;;;;
                                  -170946;2;1;false;false;127;0;85;;;
                                  -170948;1;0;false;false;;;;;;
                                  -170949;7;0;false;false;0;0;0;;;
                                  -170956;1;0;false;false;;;;;;
                                  -170957;2;0;false;false;0;0;0;;;
                                  -170959;1;0;false;false;;;;;;
                                  -170960;9;0;false;false;0;0;0;;;
                                  -170969;1;0;false;false;;;;;;
                                  -170970;1;0;false;false;0;0;0;;;
                                  -170971;4;0;false;false;;;;;;
                                  -170975;7;1;false;false;127;0;85;;;
                                  -170982;1;0;false;false;;;;;;
                                  -170983;6;0;false;false;0;0;0;;;
                                  -170989;1;0;false;false;;;;;;
                                  -170990;1;0;false;false;0;0;0;;;
                                  -170991;1;0;false;false;;;;;;
                                  -170992;5;1;false;false;127;0;85;;;
                                  -170997;1;0;false;false;0;0;0;;;
                                  -170998;8;0;false;false;;;;;;
                                  -171006;2;1;false;false;127;0;85;;;
                                  -171008;1;0;false;false;;;;;;
                                  -171009;11;0;false;false;0;0;0;;;
                                  -171020;1;0;false;false;;;;;;
                                  -171021;1;0;false;false;0;0;0;;;
                                  -171022;5;0;false;false;;;;;;
                                  -171027;60;0;false;false;63;127;95;;;
                                  -171087;3;0;false;false;;;;;;
                                  -171090;63;0;false;false;63;127;95;;;
                                  -171153;3;0;false;false;;;;;;
                                  -171156;60;0;false;false;63;127;95;;;
                                  -171216;3;0;false;false;;;;;;
                                  -171219;36;0;false;false;63;127;95;;;
                                  -171255;3;0;false;false;;;;;;
                                  -171258;6;0;false;false;0;0;0;;;
                                  -171264;1;0;false;false;;;;;;
                                  -171265;1;0;false;false;0;0;0;;;
                                  -171266;1;0;false;false;;;;;;
                                  -171267;16;0;false;false;0;0;0;;;
                                  -171283;1;0;false;false;;;;;;
                                  -171284;1;0;false;false;0;0;0;;;
                                  -171285;1;0;false;false;;;;;;
                                  -171286;12;0;false;false;0;0;0;;;
                                  -171298;1;0;false;false;;;;;;
                                  -171299;2;0;false;false;0;0;0;;;
                                  -171301;1;0;false;false;;;;;;
                                  -171302;1;0;false;false;0;0;0;;;
                                  -171303;1;0;false;false;;;;;;
                                  -171304;2;0;false;false;0;0;0;;;
                                  -171306;7;0;false;false;;;;;;
                                  -171313;16;0;false;false;0;0;0;;;
                                  -171329;1;0;false;false;;;;;;
                                  -171330;1;0;false;false;0;0;0;;;
                                  -171331;1;0;false;false;;;;;;
                                  -171332;12;0;false;false;0;0;0;;;
                                  -171344;1;0;false;false;;;;;;
                                  -171345;1;0;false;false;0;0;0;;;
                                  -171346;1;0;false;false;;;;;;
                                  -171347;11;0;false;false;0;0;0;;;
                                  -171358;1;0;false;false;;;;;;
                                  -171359;2;0;false;false;0;0;0;;;
                                  -171361;1;0;false;false;;;;;;
                                  -171362;2;0;false;false;0;0;0;;;
                                  -171364;4;0;false;false;;;;;;
                                  -171368;1;0;false;false;0;0;0;;;
                                  -171369;1;0;false;false;;;;;;
                                  -171370;4;1;false;false;127;0;85;;;
                                  -171374;1;0;false;false;;;;;;
                                  -171375;2;1;false;false;127;0;85;;;
                                  -171377;1;0;false;false;;;;;;
                                  -171378;10;0;false;false;0;0;0;;;
                                  -171388;1;0;false;false;;;;;;
                                  -171389;1;0;false;false;0;0;0;;;
                                  -171390;5;0;false;false;;;;;;
                                  -171395;60;0;false;false;63;127;95;;;
                                  -171455;3;0;false;false;;;;;;
                                  -171458;63;0;false;false;63;127;95;;;
                                  -171521;3;0;false;false;;;;;;
                                  -171524;52;0;false;false;63;127;95;;;
                                  -171576;3;0;false;false;;;;;;
                                  -171579;34;0;false;false;63;127;95;;;
                                  -171613;3;0;false;false;;;;;;
                                  -171616;6;0;false;false;0;0;0;;;
                                  -171622;1;0;false;false;;;;;;
                                  -171623;1;0;false;false;0;0;0;;;
                                  -171624;1;0;false;false;;;;;;
                                  -171625;16;0;false;false;0;0;0;;;
                                  -171641;1;0;false;false;;;;;;
                                  -171642;1;0;false;false;0;0;0;;;
                                  -171643;1;0;false;false;;;;;;
                                  -171644;9;0;false;false;0;0;0;;;
                                  -171653;1;0;false;false;;;;;;
                                  -171654;2;0;false;false;0;0;0;;;
                                  -171656;1;0;false;false;;;;;;
                                  -171657;1;0;false;false;0;0;0;;;
                                  -171658;1;0;false;false;;;;;;
                                  -171659;2;0;false;false;0;0;0;;;
                                  -171661;7;0;false;false;;;;;;
                                  -171668;16;0;false;false;0;0;0;;;
                                  -171684;1;0;false;false;;;;;;
                                  -171685;1;0;false;false;0;0;0;;;
                                  -171686;1;0;false;false;;;;;;
                                  -171687;9;0;false;false;0;0;0;;;
                                  -171696;1;0;false;false;;;;;;
                                  -171697;1;0;false;false;0;0;0;;;
                                  -171698;1;0;false;false;;;;;;
                                  -171699;11;0;false;false;0;0;0;;;
                                  -171710;1;0;false;false;;;;;;
                                  -171711;2;0;false;false;0;0;0;;;
                                  -171713;1;0;false;false;;;;;;
                                  -171714;2;0;false;false;0;0;0;;;
                                  -171716;4;0;false;false;;;;;;
                                  -171720;1;0;false;false;0;0;0;;;
                                  -171721;1;0;false;false;;;;;;
                                  -171722;4;1;false;false;127;0;85;;;
                                  -171726;1;0;false;false;;;;;;
                                  -171727;1;0;false;false;0;0;0;;;
                                  -171728;5;0;false;false;;;;;;
                                  -171733;60;0;false;false;63;127;95;;;
                                  -171793;3;0;false;false;;;;;;
                                  -171796;62;0;false;false;63;127;95;;;
                                  -171858;3;0;false;false;;;;;;
                                  -171861;59;0;false;false;63;127;95;;;
                                  -171920;3;0;false;false;;;;;;
                                  -171923;44;0;false;false;63;127;95;;;
                                  -171967;3;0;false;false;;;;;;
                                  -171970;6;0;false;false;0;0;0;;;
                                  -171976;1;0;false;false;;;;;;
                                  -171977;1;0;false;false;0;0;0;;;
                                  -171978;1;0;false;false;;;;;;
                                  -171979;16;0;false;false;0;0;0;;;
                                  -171995;1;0;false;false;;;;;;
                                  -171996;1;0;false;false;0;0;0;;;
                                  -171997;1;0;false;false;;;;;;
                                  -171998;8;0;false;false;0;0;0;;;
                                  -172006;1;0;false;false;;;;;;
                                  -172007;2;0;false;false;0;0;0;;;
                                  -172009;1;0;false;false;;;;;;
                                  -172010;1;0;false;false;0;0;0;;;
                                  -172011;1;0;false;false;;;;;;
                                  -172012;2;0;false;false;0;0;0;;;
                                  -172014;8;0;false;false;;;;;;
                                  -172022;16;0;false;false;0;0;0;;;
                                  -172038;1;0;false;false;;;;;;
                                  -172039;1;0;false;false;0;0;0;;;
                                  -172040;1;0;false;false;;;;;;
                                  -172041;9;0;false;false;0;0;0;;;
                                  -172050;1;0;false;false;;;;;;
                                  -172051;2;0;false;false;0;0;0;;;
                                  -172053;1;0;false;false;;;;;;
                                  -172054;1;0;false;false;0;0;0;;;
                                  -172055;1;0;false;false;;;;;;
                                  -172056;2;0;false;false;0;0;0;;;
                                  -172058;7;0;false;false;;;;;;
                                  -172065;16;0;false;false;0;0;0;;;
                                  -172081;1;0;false;false;;;;;;
                                  -172082;1;0;false;false;0;0;0;;;
                                  -172083;1;0;false;false;;;;;;
                                  -172084;8;0;false;false;0;0;0;;;
                                  -172092;1;0;false;false;;;;;;
                                  -172093;1;0;false;false;0;0;0;;;
                                  -172094;1;0;false;false;;;;;;
                                  -172095;11;0;false;false;0;0;0;;;
                                  -172106;1;0;false;false;;;;;;
                                  -172107;2;0;false;false;0;0;0;;;
                                  -172109;1;0;false;false;;;;;;
                                  -172110;1;0;false;false;0;0;0;;;
                                  -172111;1;0;false;false;;;;;;
                                  -172112;2;0;false;false;0;0;0;;;
                                  -172114;7;0;false;false;;;;;;
                                  -172121;16;0;false;false;0;0;0;;;
                                  -172137;1;0;false;false;;;;;;
                                  -172138;1;0;false;false;0;0;0;;;
                                  -172139;1;0;false;false;;;;;;
                                  -172140;9;0;false;false;0;0;0;;;
                                  -172149;1;0;false;false;;;;;;
                                  -172150;1;0;false;false;0;0;0;;;
                                  -172151;1;0;false;false;;;;;;
                                  -172152;11;0;false;false;0;0;0;;;
                                  -172163;1;0;false;false;;;;;;
                                  -172164;2;0;false;false;0;0;0;;;
                                  -172166;1;0;false;false;;;;;;
                                  -172167;2;0;false;false;0;0;0;;;
                                  -172169;4;0;false;false;;;;;;
                                  -172173;1;0;false;false;0;0;0;;;
                                  -172174;4;0;false;false;;;;;;
                                  -172178;73;0;false;false;63;127;95;;;
                                  -172251;2;0;false;false;;;;;;
                                  -172253;17;0;false;false;63;127;95;;;
                                  -172270;2;0;false;false;;;;;;
                                  -172272;2;1;false;false;127;0;85;;;
                                  -172274;1;0;false;false;;;;;;
                                  -172275;8;0;false;false;0;0;0;;;
                                  -172283;1;0;false;false;;;;;;
                                  -172284;2;0;false;false;0;0;0;;;
                                  -172286;1;0;false;false;;;;;;
                                  -172287;15;0;false;false;0;0;0;;;
                                  -172302;1;0;false;false;;;;;;
                                  -172303;1;0;false;false;0;0;0;;;
                                  -172304;1;0;false;false;;;;;;
                                  -172305;2;0;false;false;0;0;0;;;
                                  -172307;1;0;false;false;;;;;;
                                  -172308;2;0;false;false;0;0;0;;;
                                  -172310;1;0;false;false;;;;;;
                                  -172311;15;0;false;false;0;0;0;;;
                                  -172326;1;0;false;false;;;;;;
                                  -172327;2;0;false;false;0;0;0;;;
                                  -172329;1;0;false;false;;;;;;
                                  -172330;7;0;false;false;0;0;0;;;
                                  -172337;1;0;false;false;;;;;;
                                  -172338;2;0;false;false;0;0;0;;;
                                  -172340;9;0;false;false;;;;;;
                                  -172349;15;0;false;false;0;0;0;;;
                                  -172364;1;0;false;false;;;;;;
                                  -172365;2;0;false;false;0;0;0;;;
                                  -172367;1;0;false;false;;;;;;
                                  -172368;6;0;false;false;0;0;0;;;
                                  -172374;1;0;false;false;;;;;;
                                  -172375;2;0;false;false;0;0;0;;;
                                  -172377;1;0;false;false;;;;;;
                                  -172378;15;0;false;false;0;0;0;;;
                                  -172393;1;0;false;false;;;;;;
                                  -172394;2;0;false;false;0;0;0;;;
                                  -172396;1;0;false;false;;;;;;
                                  -172397;6;0;false;false;0;0;0;;;
                                  -172403;1;0;false;false;;;;;;
                                  -172404;2;0;false;false;0;0;0;;;
                                  -172406;9;0;false;false;;;;;;
                                  -172415;15;0;false;false;0;0;0;;;
                                  -172430;1;0;false;false;;;;;;
                                  -172431;2;0;false;false;0;0;0;;;
                                  -172433;1;0;false;false;;;;;;
                                  -172434;4;0;false;false;0;0;0;;;
                                  -172438;1;0;false;false;;;;;;
                                  -172439;1;0;false;false;0;0;0;;;
                                  -172440;5;0;false;false;;;;;;
                                  -172445;27;0;false;false;0;0;0;;;
                                  -172472;4;0;false;false;;;;;;
                                  -172476;1;0;false;false;0;0;0;;;
                                  -172477;3;0;false;false;;;;;;
                                  -172480;1;0;false;false;0;0;0;;;
                                  -172481;3;0;false;false;;;;;;
                                  -172484;4;1;false;false;127;0;85;;;
                                  -172488;1;0;false;false;;;;;;
                                  -172489;1;0;false;false;0;0;0;;;
                                  -172490;4;0;false;false;;;;;;
                                  -172494;21;0;false;false;0;0;0;;;
                                  -172515;5;0;false;false;;;;;;
                                  -172520;1;0;false;false;0;0;0;;;
                                  -172521;2;0;false;false;;;;;;
                                  -172523;1;0;false;false;0;0;0;;;
                                  -172524;2;0;false;false;;;;;;
                                  -172526;3;0;false;false;63;95;191;;;
                                  -172529;3;0;false;false;;;;;;
                                  -172532;1;0;false;false;63;95;191;;;
                                  -172533;1;0;false;false;;;;;;
                                  -172534;2;0;false;false;63;95;191;;;
                                  -172536;1;0;false;false;;;;;;
                                  -172537;1;0;false;false;63;95;191;;;
                                  -172538;1;0;false;false;;;;;;
                                  -172539;9;0;false;false;63;95;191;;;
                                  -172548;1;0;false;false;;;;;;
                                  -172549;8;0;false;false;63;95;191;;;
                                  -172557;1;0;false;false;;;;;;
                                  -172558;7;0;false;false;63;95;191;;;
                                  -172565;1;0;false;false;;;;;;
                                  -172566;6;0;false;false;63;95;191;;;
                                  -172572;1;0;false;false;;;;;;
                                  -172573;4;0;false;false;63;95;191;;;
                                  -172577;1;0;false;false;;;;;;
                                  -172578;3;0;false;false;63;95;191;;;
                                  -172581;1;0;false;false;;;;;;
                                  -172582;3;0;false;false;63;95;191;;;
                                  -172585;1;0;false;false;;;;;;
                                  -172586;4;0;false;false;63;95;191;;;
                                  -172590;1;0;false;false;;;;;;
                                  -172591;3;0;false;false;63;95;191;;;
                                  -172594;1;0;false;false;;;;;;
                                  -172595;7;0;false;false;63;95;191;;;
                                  -172602;3;0;false;false;;;;;;
                                  -172605;1;0;false;false;63;95;191;;;
                                  -172606;1;0;false;false;;;;;;
                                  -172607;6;0;false;false;63;95;191;;;
                                  -172613;1;0;false;false;;;;;;
                                  -172614;2;0;false;false;63;95;191;;;
                                  -172616;1;0;false;false;;;;;;
                                  -172617;10;0;false;false;63;95;191;;;
                                  -172627;3;0;false;false;;;;;;
                                  -172630;1;0;false;false;63;95;191;;;
                                  -172631;1;0;false;false;;;;;;
                                  -172632;3;0;false;false;127;127;159;;;
                                  -172635;3;0;false;false;;;;;;
                                  -172638;1;0;false;false;63;95;191;;;
                                  -172639;3;0;false;false;;;;;;
                                  -172642;1;0;false;false;63;95;191;;;
                                  -172643;1;0;false;false;;;;;;
                                  -172644;7;1;false;false;127;159;191;;;
                                  -172651;5;0;false;false;63;95;191;;;
                                  -172656;1;0;false;false;;;;;;
                                  -172657;8;0;false;false;63;95;191;;;
                                  -172665;1;0;false;false;;;;;;
                                  -172666;5;0;false;false;63;95;191;;;
                                  -172671;3;0;false;false;;;;;;
                                  -172674;2;0;false;false;63;95;191;;;
                                  -172676;2;0;false;false;;;;;;
                                  -172678;4;1;false;false;127;0;85;;;
                                  -172682;1;0;false;false;;;;;;
                                  -172683;19;0;false;false;0;0;0;;;
                                  -172702;1;0;false;false;;;;;;
                                  -172703;6;0;false;false;0;0;0;;;
                                  -172709;1;0;false;false;;;;;;
                                  -172710;1;0;false;false;0;0;0;;;
                                  -172711;3;0;false;false;;;;;;
                                  -172714;2;1;false;false;127;0;85;;;
                                  -172716;1;0;false;false;;;;;;
                                  -172717;19;0;false;false;0;0;0;;;
                                  -172736;1;0;false;false;;;;;;
                                  -172737;2;0;false;false;0;0;0;;;
                                  -172739;1;0;false;false;;;;;;
                                  -172740;4;1;false;false;127;0;85;;;
                                  -172744;1;0;false;false;0;0;0;;;
                                  -172745;1;0;false;false;;;;;;
                                  -172746;1;0;false;false;0;0;0;;;
                                  -172747;4;0;false;false;;;;;;
                                  -172751;18;0;false;false;0;0;0;;;
                                  -172769;1;0;false;false;;;;;;
                                  -172770;1;0;false;false;0;0;0;;;
                                  -172771;1;0;false;false;;;;;;
                                  -172772;3;1;false;false;127;0;85;;;
                                  -172775;1;0;false;false;;;;;;
                                  -172776;18;0;false;false;0;0;0;;;
                                  -172794;1;0;false;false;;;;;;
                                  -172795;13;0;false;false;0;0;0;;;
                                  -172808;3;0;false;false;;;;;;
                                  -172811;1;0;false;false;0;0;0;;;
                                  -172812;6;0;false;false;;;;;;
                                  -172818;5;0;false;false;0;0;0;;;
                                  -172823;1;0;false;false;;;;;;
                                  -172824;11;0;false;false;0;0;0;;;
                                  -172835;1;0;false;false;;;;;;
                                  -172836;1;0;false;false;0;0;0;;;
                                  -172837;1;0;false;false;;;;;;
                                  -172838;3;1;false;false;127;0;85;;;
                                  -172841;1;0;false;false;;;;;;
                                  -172842;8;0;false;false;0;0;0;;;
                                  -172850;3;0;false;false;;;;;;
                                  -172853;21;0;false;false;0;0;0;;;
                                  -172874;1;0;false;false;;;;;;
                                  -172875;1;0;false;false;0;0;0;;;
                                  -172876;1;0;false;false;;;;;;
                                  -172877;16;0;false;false;0;0;0;;;
                                  -172893;3;0;false;false;;;;;;
                                  -172896;19;0;false;false;0;0;0;;;
                                  -172915;1;0;false;false;;;;;;
                                  -172916;1;0;false;false;0;0;0;;;
                                  -172917;1;0;false;false;;;;;;
                                  -172918;14;0;false;false;0;0;0;;;
                                  -172932;3;0;false;false;;;;;;
                                  -172935;21;0;false;false;0;0;0;;;
                                  -172956;1;0;false;false;;;;;;
                                  -172957;1;0;false;false;0;0;0;;;
                                  -172958;1;0;false;false;;;;;;
                                  -172959;16;0;false;false;0;0;0;;;
                                  -172975;3;0;false;false;;;;;;
                                  -172978;16;0;false;false;0;0;0;;;
                                  -172994;1;0;false;false;;;;;;
                                  -172995;1;0;false;false;0;0;0;;;
                                  -172996;1;0;false;false;;;;;;
                                  -172997;4;1;false;false;127;0;85;;;
                                  -173001;1;0;false;false;0;0;0;;;
                                  -173002;3;0;false;false;;;;;;
                                  -173005;26;0;false;false;0;0;0;;;
                                  -173031;1;0;false;false;;;;;;
                                  -173032;13;0;false;false;0;0;0;;;
                                  -173045;3;0;false;false;;;;;;
                                  -173048;2;1;false;false;127;0;85;;;
                                  -173050;1;0;false;false;;;;;;
                                  -173051;18;0;false;false;0;0;0;;;
                                  -173069;1;0;false;false;;;;;;
                                  -173070;1;0;false;false;0;0;0;;;
                                  -173071;4;0;false;false;;;;;;
                                  -173075;17;0;false;false;0;0;0;;;
                                  -173092;3;0;false;false;;;;;;
                                  -173095;1;0;false;false;0;0;0;;;
                                  -173096;2;0;false;false;;;;;;
                                  -173098;1;0;false;false;0;0;0;;;
                                  -173099;2;0;false;false;;;;;;
                                  -173101;3;0;false;false;63;95;191;;;
                                  -173104;3;0;false;false;;;;;;
                                  -173107;1;0;false;false;63;95;191;;;
                                  -173108;1;0;false;false;;;;;;
                                  -173109;6;0;false;false;63;95;191;;;
                                  -173115;1;0;false;false;;;;;;
                                  -173116;3;0;false;false;63;95;191;;;
                                  -173119;1;0;false;false;;;;;;
                                  -173120;9;0;false;false;63;95;191;;;
                                  -173129;1;0;false;false;;;;;;
                                  -173130;10;0;false;false;63;95;191;;;
                                  -173140;3;0;false;false;;;;;;
                                  -173143;1;0;false;false;63;95;191;;;
                                  -173144;1;0;false;false;;;;;;
                                  -173145;3;0;false;false;127;127;159;;;
                                  -173148;3;0;false;false;;;;;;
                                  -173151;1;0;false;false;63;95;191;;;
                                  -173152;3;0;false;false;;;;;;
                                  -173155;1;0;false;false;63;95;191;;;
                                  -173156;1;0;false;false;;;;;;
                                  -173157;7;1;false;false;127;159;191;;;
                                  -173164;5;0;false;false;63;95;191;;;
                                  -173169;1;0;false;false;;;;;;
                                  -173170;8;0;false;false;63;95;191;;;
                                  -173178;1;0;false;false;;;;;;
                                  -173179;5;0;false;false;63;95;191;;;
                                  -173184;3;0;false;false;;;;;;
                                  -173187;2;0;false;false;63;95;191;;;
                                  -173189;2;0;false;false;;;;;;
                                  -173191;4;1;false;false;127;0;85;;;
                                  -173195;1;0;false;false;;;;;;
                                  -173196;17;0;false;false;0;0;0;;;
                                  -173213;1;0;false;false;;;;;;
                                  -173214;6;0;false;false;0;0;0;;;
                                  -173220;1;0;false;false;;;;;;
                                  -173221;1;0;false;false;0;0;0;;;
                                  -173222;3;0;false;false;;;;;;
                                  -173225;2;1;false;false;127;0;85;;;
                                  -173227;1;0;false;false;;;;;;
                                  -173228;19;0;false;false;0;0;0;;;
                                  -173247;1;0;false;false;;;;;;
                                  -173248;2;0;false;false;0;0;0;;;
                                  -173250;1;0;false;false;;;;;;
                                  -173251;4;1;false;false;127;0;85;;;
                                  -173255;1;0;false;false;0;0;0;;;
                                  -173256;1;0;false;false;;;;;;
                                  -173257;1;0;false;false;0;0;0;;;
                                  -173258;4;0;false;false;;;;;;
                                  -173262;2;1;false;false;127;0;85;;;
                                  -173264;1;0;false;false;;;;;;
                                  -173265;21;0;false;false;0;0;0;;;
                                  -173286;1;0;false;false;;;;;;
                                  -173287;2;0;false;false;0;0;0;;;
                                  -173289;1;0;false;false;;;;;;
                                  -173290;11;0;false;false;0;0;0;;;
                                  -173301;1;0;false;false;;;;;;
                                  -173302;2;0;false;false;0;0;0;;;
                                  -173304;1;0;false;false;;;;;;
                                  -173305;20;0;false;false;0;0;0;;;
                                  -173325;1;0;false;false;;;;;;
                                  -173326;2;0;false;false;0;0;0;;;
                                  -173328;1;0;false;false;;;;;;
                                  -173329;12;0;false;false;0;0;0;;;
                                  -173341;1;0;false;false;;;;;;
                                  -173342;1;0;false;false;0;0;0;;;
                                  -173343;5;0;false;false;;;;;;
                                  -173348;3;1;false;false;127;0;85;;;
                                  -173351;1;0;false;false;;;;;;
                                  -173352;1;0;false;false;0;0;0;;;
                                  -173353;6;0;false;false;;;;;;
                                  -173359;2;1;false;false;127;0;85;;;
                                  -173361;1;0;false;false;;;;;;
                                  -173362;12;0;false;false;0;0;0;;;
                                  -173374;1;0;false;false;;;;;;
                                  -173375;1;0;false;false;0;0;0;;;
                                  -173376;1;0;false;false;;;;;;
                                  -173377;11;0;false;false;0;0;0;;;
                                  -173388;1;0;false;false;;;;;;
                                  -173389;1;0;false;false;0;0;0;;;
                                  -173390;1;0;false;false;;;;;;
                                  -173391;2;0;false;false;0;0;0;;;
                                  -173393;1;0;false;false;;;;;;
                                  -173394;1;0;false;false;0;0;0;;;
                                  -173395;7;0;false;false;;;;;;
                                  -173402;32;0;false;false;0;0;0;;;
                                  -173434;1;0;false;false;;;;;;
                                  -173435;11;0;false;false;0;0;0;;;
                                  -173446;1;0;false;false;;;;;;
                                  -173447;1;0;false;false;0;0;0;;;
                                  -173448;1;0;false;false;;;;;;
                                  -173449;12;0;false;false;0;0;0;;;
                                  -173461;1;0;false;false;;;;;;
                                  -173462;25;0;false;false;0;0;0;;;
                                  -173487;6;0;false;false;;;;;;
                                  -173493;1;0;false;false;0;0;0;;;
                                  -173494;5;0;false;false;;;;;;
                                  -173499;1;0;false;false;0;0;0;;;
                                  -173500;5;0;false;false;;;;;;
                                  -173505;5;1;false;false;127;0;85;;;
                                  -173510;1;0;false;false;;;;;;
                                  -173511;9;0;false;false;0;0;0;;;
                                  -173520;1;0;false;false;;;;;;
                                  -173521;6;0;false;false;0;0;0;;;
                                  -173527;1;0;false;false;;;;;;
                                  -173528;1;0;false;false;0;0;0;;;
                                  -173529;6;0;false;false;;;;;;
                                  -173535;69;0;false;false;63;127;95;;;
                                  -173604;4;0;false;false;;;;;;
                                  -173608;64;0;false;false;63;127;95;;;
                                  -173672;4;0;false;false;;;;;;
                                  -173676;18;0;false;false;63;127;95;;;
                                  -173694;4;0;false;false;;;;;;
                                  -173698;47;0;false;false;63;127;95;;;
                                  -173745;4;0;false;false;;;;;;
                                  -173749;2;1;false;false;127;0;85;;;
                                  -173751;1;0;false;false;;;;;;
                                  -173752;11;0;false;false;0;0;0;;;
                                  -173763;1;0;false;false;;;;;;
                                  -173764;2;0;false;false;0;0;0;;;
                                  -173766;1;0;false;false;;;;;;
                                  -173767;31;0;false;false;0;0;0;;;
                                  -173798;1;0;false;false;;;;;;
                                  -173799;1;0;false;false;0;0;0;;;
                                  -173800;7;0;false;false;;;;;;
                                  -173807;5;1;false;false;127;0;85;;;
                                  -173812;1;0;false;false;;;;;;
                                  -173813;6;0;false;false;0;0;0;;;
                                  -173819;6;0;false;false;;;;;;
                                  -173825;1;0;false;false;0;0;0;;;
                                  -173826;5;0;false;false;;;;;;
                                  -173831;1;0;false;false;0;0;0;;;
                                  -173832;4;0;false;false;;;;;;
                                  -173836;1;0;false;false;0;0;0;;;
                                  -173837;3;0;false;false;;;;;;
                                  -173840;1;0;false;false;0;0;0;;;
                                  -173841;3;0;false;false;;;;;;
                                  -173844;18;0;false;false;0;0;0;;;
                                  -173862;1;0;false;false;;;;;;
                                  -173863;1;0;false;false;0;0;0;;;
                                  -173864;1;0;false;false;;;;;;
                                  -173865;4;1;false;false;127;0;85;;;
                                  -173869;1;0;false;false;0;0;0;;;
                                  -173870;2;0;false;false;;;;;;
                                  -173872;1;0;false;false;0;0;0;;;
                                  -173873;2;0;false;false;;;;;;
                                  -173875;3;0;false;false;63;95;191;;;
                                  -173878;3;0;false;false;;;;;;
                                  -173881;1;0;false;false;63;95;191;;;
                                  -173882;1;0;false;false;;;;;;
                                  -173883;7;0;false;false;63;95;191;;;
                                  -173890;1;0;false;false;;;;;;
                                  -173891;3;0;false;false;63;95;191;;;
                                  -173894;1;0;false;false;;;;;;
                                  -173895;5;0;false;false;63;95;191;;;
                                  -173900;1;0;false;false;;;;;;
                                  -173901;8;0;false;false;63;95;191;;;
                                  -173909;1;0;false;false;;;;;;
                                  -173910;3;0;false;false;63;95;191;;;
                                  -173913;1;0;false;false;;;;;;
                                  -173914;9;0;false;false;63;95;191;;;
                                  -173923;1;0;false;false;;;;;;
                                  -173924;2;0;false;false;63;95;191;;;
                                  -173926;1;0;false;false;;;;;;
                                  -173927;5;0;false;false;63;95;191;;;
                                  -173932;1;0;false;false;;;;;;
                                  -173933;6;0;false;false;63;95;191;;;
                                  -173939;1;0;false;false;;;;;;
                                  -173940;1;0;false;false;63;95;191;;;
                                  -173941;1;0;false;false;;;;;;
                                  -173942;3;0;false;false;63;95;191;;;
                                  -173945;1;0;false;false;;;;;;
                                  -173946;4;0;false;false;63;95;191;;;
                                  -173950;4;0;false;false;;;;;;
                                  -173954;1;0;false;false;63;95;191;;;
                                  -173955;1;0;false;false;;;;;;
                                  -173956;8;0;false;false;63;95;191;;;
                                  -173964;3;0;false;false;;;;;;
                                  -173967;2;0;false;false;63;95;191;;;
                                  -173969;2;0;false;false;;;;;;
                                  -173971;4;1;false;false;127;0;85;;;
                                  -173975;1;0;false;false;;;;;;
                                  -173976;28;0;false;false;0;0;0;;;
                                  -174004;1;0;false;false;;;;;;
                                  -174005;6;0;false;false;0;0;0;;;
                                  -174011;1;0;false;false;;;;;;
                                  -174012;1;0;false;false;0;0;0;;;
                                  -174013;3;0;false;false;;;;;;
                                  -174016;2;1;false;false;127;0;85;;;
                                  -174018;1;0;false;false;;;;;;
                                  -174019;13;0;false;false;0;0;0;;;
                                  -174032;1;0;false;false;;;;;;
                                  -174033;2;0;false;false;0;0;0;;;
                                  -174035;1;0;false;false;;;;;;
                                  -174036;1;0;false;false;0;0;0;;;
                                  -174037;1;0;false;false;;;;;;
                                  -174038;2;0;false;false;0;0;0;;;
                                  -174040;1;0;false;false;;;;;;
                                  -174041;20;0;false;false;0;0;0;;;
                                  -174061;1;0;false;false;;;;;;
                                  -174062;1;0;false;false;0;0;0;;;
                                  -174063;4;0;false;false;;;;;;
                                  -174067;6;1;false;false;127;0;85;;;
                                  -174073;1;0;false;false;0;0;0;;;
                                  -174074;3;0;false;false;;;;;;
                                  -174077;1;0;false;false;0;0;0;;;
                                  -174078;3;0;false;false;;;;;;
                                  -174081;7;0;false;false;0;0;0;;;
                                  -174088;1;0;false;false;;;;;;
                                  -174089;2;0;false;false;0;0;0;;;
                                  -174091;1;0;false;false;;;;;;
                                  -174092;10;0;false;false;0;0;0;;;
                                  -174102;3;0;false;false;;;;;;
                                  -174105;16;0;false;false;0;0;0;;;
                                  -174121;1;0;false;false;;;;;;
                                  -174122;1;0;false;false;0;0;0;;;
                                  -174123;1;0;false;false;;;;;;
                                  -174124;4;1;false;false;127;0;85;;;
                                  -174128;1;0;false;false;0;0;0;;;
                                  -174129;3;0;false;false;;;;;;
                                  -174132;11;0;false;false;0;0;0;;;
                                  -174143;1;0;false;false;;;;;;
                                  -174144;1;0;false;false;0;0;0;;;
                                  -174145;1;0;false;false;;;;;;
                                  -174146;26;0;false;false;0;0;0;;;
                                  -174172;3;0;false;false;;;;;;
                                  -174175;17;0;false;false;0;0;0;;;
                                  -174192;3;0;false;false;;;;;;
                                  -174195;11;0;false;false;0;0;0;;;
                                  -174206;1;0;false;false;;;;;;
                                  -174207;1;0;false;false;0;0;0;;;
                                  -174208;1;0;false;false;;;;;;
                                  -174209;32;0;false;false;0;0;0;;;
                                  -174241;3;0;false;false;;;;;;
                                  -174244;12;0;false;false;0;0;0;;;
                                  -174256;3;0;false;false;;;;;;
                                  -174259;19;0;false;false;0;0;0;;;
                                  -174278;3;0;false;false;;;;;;
                                  -174281;20;0;false;false;0;0;0;;;
                                  -174301;1;0;false;false;;;;;;
                                  -174302;1;0;false;false;0;0;0;;;
                                  -174303;1;0;false;false;;;;;;
                                  -174304;3;1;false;false;127;0;85;;;
                                  -174307;1;0;false;false;;;;;;
                                  -174308;18;0;false;false;0;0;0;;;
                                  -174326;1;0;false;false;;;;;;
                                  -174327;13;0;false;false;0;0;0;;;
                                  -174340;2;0;false;false;;;;;;
                                  -174342;1;0;false;false;0;0;0;;;
                                  -174343;2;0;false;false;;;;;;
                                  -174345;3;0;false;false;63;95;191;;;
                                  -174348;4;0;false;false;;;;;;
                                  -174352;1;0;false;false;63;95;191;;;
                                  -174353;1;0;false;false;;;;;;
                                  -174354;7;0;false;false;63;95;191;;;
                                  -174361;1;0;false;false;;;;;;
                                  -174362;3;0;false;false;63;95;191;;;
                                  -174365;1;0;false;false;;;;;;
                                  -174366;5;0;false;false;63;95;191;;;
                                  -174371;1;0;false;false;;;;;;
                                  -174372;8;0;false;false;63;95;191;;;
                                  -174380;1;0;false;false;;;;;;
                                  -174381;3;0;false;false;63;95;191;;;
                                  -174384;1;0;false;false;;;;;;
                                  -174385;9;0;false;false;63;95;191;;;
                                  -174394;1;0;false;false;;;;;;
                                  -174395;2;0;false;false;63;95;191;;;
                                  -174397;1;0;false;false;;;;;;
                                  -174398;5;0;false;false;63;95;191;;;
                                  -174403;1;0;false;false;;;;;;
                                  -174404;6;0;false;false;63;95;191;;;
                                  -174410;1;0;false;false;;;;;;
                                  -174411;1;0;false;false;63;95;191;;;
                                  -174412;1;0;false;false;;;;;;
                                  -174413;3;0;false;false;63;95;191;;;
                                  -174416;1;0;false;false;;;;;;
                                  -174417;4;0;false;false;63;95;191;;;
                                  -174421;4;0;false;false;;;;;;
                                  -174425;1;0;false;false;63;95;191;;;
                                  -174426;1;0;false;false;;;;;;
                                  -174427;8;0;false;false;63;95;191;;;
                                  -174435;3;0;false;false;;;;;;
                                  -174438;2;0;false;false;63;95;191;;;
                                  -174440;2;0;false;false;;;;;;
                                  -174442;4;1;false;false;127;0;85;;;
                                  -174446;1;0;false;false;;;;;;
                                  -174447;21;0;false;false;0;0;0;;;
                                  -174468;1;0;false;false;;;;;;
                                  -174469;6;0;false;false;0;0;0;;;
                                  -174475;1;0;false;false;;;;;;
                                  -174476;1;0;false;false;0;0;0;;;
                                  -174477;3;0;false;false;;;;;;
                                  -174480;9;0;false;false;0;0;0;;;
                                  -174489;1;0;false;false;;;;;;
                                  -174490;1;0;false;false;0;0;0;;;
                                  -174491;1;0;false;false;;;;;;
                                  -174492;4;1;false;false;127;0;85;;;
                                  -174496;1;0;false;false;0;0;0;;;
                                  -174497;3;0;false;false;;;;;;
                                  -174500;16;0;false;false;0;0;0;;;
                                  -174516;1;0;false;false;;;;;;
                                  -174517;1;0;false;false;0;0;0;;;
                                  -174518;1;0;false;false;;;;;;
                                  -174519;5;1;false;false;127;0;85;;;
                                  -174524;1;0;false;false;0;0;0;;;
                                  -174525;3;0;false;false;;;;;;
                                  -174528;2;1;false;false;127;0;85;;;
                                  -174530;1;0;false;false;;;;;;
                                  -174531;13;0;false;false;0;0;0;;;
                                  -174544;1;0;false;false;;;;;;
                                  -174545;2;0;false;false;0;0;0;;;
                                  -174547;1;0;false;false;;;;;;
                                  -174548;2;0;false;false;0;0;0;;;
                                  -174550;1;0;false;false;;;;;;
                                  -174551;1;0;false;false;0;0;0;;;
                                  -174552;4;0;false;false;;;;;;
                                  -174556;6;0;false;false;0;0;0;;;
                                  -174562;1;0;false;false;;;;;;
                                  -174563;4;0;false;false;0;0;0;;;
                                  -174567;1;0;false;false;;;;;;
                                  -174568;1;0;false;false;0;0;0;;;
                                  -174569;1;0;false;false;;;;;;
                                  -174570;53;0;false;false;0;0;0;;;
                                  -174623;4;0;false;false;;;;;;
                                  -174627;2;1;false;false;127;0;85;;;
                                  -174629;1;0;false;false;;;;;;
                                  -174630;5;0;false;false;0;0;0;;;
                                  -174635;1;0;false;false;;;;;;
                                  -174636;2;0;false;false;0;0;0;;;
                                  -174638;1;0;false;false;;;;;;
                                  -174639;4;1;false;false;127;0;85;;;
                                  -174643;1;0;false;false;;;;;;
                                  -174644;2;0;false;false;0;0;0;;;
                                  -174646;1;0;false;false;;;;;;
                                  -174647;13;0;false;false;0;0;0;;;
                                  -174660;1;0;false;false;;;;;;
                                  -174661;1;0;false;false;0;0;0;;;
                                  -174662;1;0;false;false;;;;;;
                                  -174663;2;0;false;false;0;0;0;;;
                                  -174665;1;0;false;false;;;;;;
                                  -174666;1;0;false;false;0;0;0;;;
                                  -174667;5;0;false;false;;;;;;
                                  -174672;20;0;false;false;63;127;95;;;
                                  -174692;3;0;false;false;;;;;;
                                  -174695;3;1;false;false;127;0;85;;;
                                  -174698;1;0;false;false;;;;;;
                                  -174699;1;0;false;false;0;0;0;;;
                                  -174700;1;0;false;false;;;;;;
                                  -174701;1;0;false;false;0;0;0;;;
                                  -174702;1;0;false;false;;;;;;
                                  -174703;8;0;false;false;0;0;0;;;
                                  -174711;5;0;false;false;;;;;;
                                  -174716;3;1;false;false;127;0;85;;;
                                  -174719;1;0;false;false;;;;;;
                                  -174720;1;0;false;false;0;0;0;;;
                                  -174721;1;0;false;false;;;;;;
                                  -174722;1;0;false;false;0;0;0;;;
                                  -174723;1;0;false;false;;;;;;
                                  -174724;7;0;false;false;0;0;0;;;
                                  -174731;1;0;false;false;;;;;;
                                  -174732;1;0;false;false;0;0;0;;;
                                  -174733;1;0;false;false;;;;;;
                                  -174734;10;0;false;false;0;0;0;;;
                                  -174744;5;0;false;false;;;;;;
                                  -174749;24;0;false;false;0;0;0;;;
                                  -174773;1;0;false;false;;;;;;
                                  -174774;2;0;false;false;0;0;0;;;
                                  -174776;1;0;false;false;;;;;;
                                  -174777;5;1;false;false;127;0;85;;;
                                  -174782;2;0;false;false;0;0;0;;;
                                  -174784;5;0;false;false;;;;;;
                                  -174789;16;0;false;false;63;127;95;;;
                                  -174805;3;0;false;false;;;;;;
                                  -174808;5;0;false;false;0;0;0;;;
                                  -174813;1;0;false;false;;;;;;
                                  -174814;1;0;false;false;0;0;0;;;
                                  -174815;1;0;false;false;;;;;;
                                  -174816;1;0;false;false;0;0;0;;;
                                  -174817;1;0;false;false;;;;;;
                                  -174818;3;1;false;false;127;0;85;;;
                                  -174821;1;0;false;false;;;;;;
                                  -174822;8;0;false;false;0;0;0;;;
                                  -174830;5;0;false;false;;;;;;
                                  -174835;7;0;false;false;0;0;0;;;
                                  -174842;1;0;false;false;;;;;;
                                  -174843;1;0;false;false;0;0;0;;;
                                  -174844;1;0;false;false;;;;;;
                                  -174845;12;0;false;false;0;0;0;;;
                                  -174857;5;0;false;false;;;;;;
                                  -174862;5;0;false;false;0;0;0;;;
                                  -174867;1;0;false;false;;;;;;
                                  -174868;1;0;false;false;0;0;0;;;
                                  -174869;1;0;false;false;;;;;;
                                  -174870;12;0;false;false;0;0;0;;;
                                  -174882;5;0;false;false;;;;;;
                                  -174887;6;0;false;false;0;0;0;;;
                                  -174893;1;0;false;false;;;;;;
                                  -174894;1;0;false;false;0;0;0;;;
                                  -174895;1;0;false;false;;;;;;
                                  -174896;28;0;false;false;0;0;0;;;
                                  -174924;5;0;false;false;;;;;;
                                  -174929;16;0;false;false;0;0;0;;;
                                  -174945;4;0;false;false;;;;;;
                                  -174949;1;0;false;false;0;0;0;;;
                                  -174950;3;0;false;false;;;;;;
                                  -174953;1;0;false;false;0;0;0;;;
                                  -174954;3;0;false;false;;;;;;
                                  -174957;2;1;false;false;127;0;85;;;
                                  -174959;1;0;false;false;;;;;;
                                  -174960;14;0;false;false;0;0;0;;;
                                  -174974;1;0;false;false;;;;;;
                                  -174975;2;0;false;false;0;0;0;;;
                                  -174977;1;0;false;false;;;;;;
                                  -174978;2;0;false;false;0;0;0;;;
                                  -174980;1;0;false;false;;;;;;
                                  -174981;2;0;false;false;0;0;0;;;
                                  -174983;1;0;false;false;;;;;;
                                  -174984;10;0;false;false;0;0;0;;;
                                  -174994;1;0;false;false;;;;;;
                                  -174995;2;0;false;false;0;0;0;;;
                                  -174997;1;0;false;false;;;;;;
                                  -174998;16;0;false;false;0;0;0;;;
                                  -175014;1;0;false;false;;;;;;
                                  -175015;1;0;false;false;0;0;0;;;
                                  -175016;1;0;false;false;;;;;;
                                  -175017;9;0;false;false;0;0;0;;;
                                  -175026;1;0;false;false;;;;;;
                                  -175027;2;0;false;false;0;0;0;;;
                                  -175029;1;0;false;false;;;;;;
                                  -175030;3;0;false;false;0;0;0;;;
                                  -175033;1;0;false;false;;;;;;
                                  -175034;1;0;false;false;0;0;0;;;
                                  -175035;4;0;false;false;;;;;;
                                  -175039;6;1;false;false;127;0;85;;;
                                  -175045;1;0;false;false;0;0;0;;;
                                  -175046;4;0;false;false;;;;;;
                                  -175050;1;0;false;false;0;0;0;;;
                                  -175051;3;0;false;false;;;;;;
                                  -175054;7;1;false;false;127;0;85;;;
                                  -175061;1;0;false;false;;;;;;
                                  -175062;6;0;false;false;0;0;0;;;
                                  -175068;1;0;false;false;;;;;;
                                  -175069;1;0;false;false;0;0;0;;;
                                  -175070;1;0;false;false;;;;;;
                                  -175071;16;0;false;false;0;0;0;;;
                                  -175087;1;0;false;false;;;;;;
                                  -175088;1;0;false;false;0;0;0;;;
                                  -175089;1;0;false;false;;;;;;
                                  -175090;9;0;false;false;0;0;0;;;
                                  -175099;1;0;false;false;;;;;;
                                  -175100;2;0;false;false;0;0;0;;;
                                  -175102;1;0;false;false;;;;;;
                                  -175103;2;0;false;false;0;0;0;;;
                                  -175105;4;0;false;false;;;;;;
                                  -175109;7;0;false;false;0;0;0;;;
                                  -175116;1;0;false;false;;;;;;
                                  -175117;2;0;false;false;0;0;0;;;
                                  -175119;1;0;false;false;;;;;;
                                  -175120;10;0;false;false;0;0;0;;;
                                  -175130;3;0;false;false;;;;;;
                                  -175133;30;0;false;false;0;0;0;;;
                                  -175163;1;0;false;false;;;;;;
                                  -175164;8;0;false;false;0;0;0;;;
                                  -175172;1;0;false;false;;;;;;
                                  -175173;8;0;false;false;0;0;0;;;
                                  -175181;2;0;false;false;;;;;;
                                  -175183;1;0;false;false;0;0;0;;;
                                  -175184;2;0;false;false;;;;;;
                                  -175186;3;0;false;false;63;95;191;;;
                                  -175189;4;0;false;false;;;;;;
                                  -175193;1;0;false;false;63;95;191;;;
                                  -175194;1;0;false;false;;;;;;
                                  -175195;7;0;false;false;63;95;191;;;
                                  -175202;1;0;false;false;;;;;;
                                  -175203;3;0;false;false;63;95;191;;;
                                  -175206;1;0;false;false;;;;;;
                                  -175207;5;0;false;false;63;95;191;;;
                                  -175212;1;0;false;false;;;;;;
                                  -175213;8;0;false;false;63;95;191;;;
                                  -175221;1;0;false;false;;;;;;
                                  -175222;3;0;false;false;63;95;191;;;
                                  -175225;1;0;false;false;;;;;;
                                  -175226;9;0;false;false;63;95;191;;;
                                  -175235;1;0;false;false;;;;;;
                                  -175236;2;0;false;false;63;95;191;;;
                                  -175238;1;0;false;false;;;;;;
                                  -175239;5;0;false;false;63;95;191;;;
                                  -175244;1;0;false;false;;;;;;
                                  -175245;6;0;false;false;63;95;191;;;
                                  -175251;1;0;false;false;;;;;;
                                  -175252;1;0;false;false;63;95;191;;;
                                  -175253;1;0;false;false;;;;;;
                                  -175254;2;0;false;false;63;95;191;;;
                                  -175256;1;0;false;false;;;;;;
                                  -175257;7;0;false;false;63;95;191;;;
                                  -175264;4;0;false;false;;;;;;
                                  -175268;1;0;false;false;63;95;191;;;
                                  -175269;1;0;false;false;;;;;;
                                  -175270;6;0;false;false;63;95;191;;;
                                  -175276;1;0;false;false;;;;;;
                                  -175277;3;0;false;false;63;95;191;;;
                                  -175280;1;0;false;false;;;;;;
                                  -175281;5;0;false;false;63;95;191;;;
                                  -175286;1;0;false;false;;;;;;
                                  -175287;5;0;false;false;63;95;191;;;
                                  -175292;3;0;false;false;;;;;;
                                  -175295;2;0;false;false;63;95;191;;;
                                  -175297;2;0;false;false;;;;;;
                                  -175299;4;1;false;false;127;0;85;;;
                                  -175303;1;0;false;false;;;;;;
                                  -175304;21;0;false;false;0;0;0;;;
                                  -175325;1;0;false;false;;;;;;
                                  -175326;6;0;false;false;0;0;0;;;
                                  -175332;1;0;false;false;;;;;;
                                  -175333;1;0;false;false;0;0;0;;;
                                  -175334;3;0;false;false;;;;;;
                                  -175337;2;1;false;false;127;0;85;;;
                                  -175339;1;0;false;false;;;;;;
                                  -175340;12;0;false;false;0;0;0;;;
                                  -175352;1;0;false;false;;;;;;
                                  -175353;6;1;false;false;127;0;85;;;
                                  -175359;1;0;false;false;0;0;0;;;
                                  -175360;3;0;false;false;;;;;;
                                  -175363;2;1;false;false;127;0;85;;;
                                  -175365;1;0;false;false;;;;;;
                                  -175366;17;0;false;false;0;0;0;;;
                                  -175383;1;0;false;false;;;;;;
                                  -175384;1;0;false;false;0;0;0;;;
                                  -175385;1;0;false;false;;;;;;
                                  -175386;12;0;false;false;0;0;0;;;
                                  -175398;1;0;false;false;;;;;;
                                  -175399;2;0;false;false;0;0;0;;;
                                  -175401;1;0;false;false;;;;;;
                                  -175402;2;0;false;false;0;0;0;;;
                                  -175404;1;0;false;false;;;;;;
                                  -175405;1;0;false;false;0;0;0;;;
                                  -175406;4;0;false;false;;;;;;
                                  -175410;6;1;false;false;127;0;85;;;
                                  -175416;1;0;false;false;0;0;0;;;
                                  -175417;3;0;false;false;;;;;;
                                  -175420;1;0;false;false;0;0;0;;;
                                  -175421;3;0;false;false;;;;;;
                                  -175424;7;0;false;false;0;0;0;;;
                                  -175431;1;0;false;false;;;;;;
                                  -175432;2;0;false;false;0;0;0;;;
                                  -175434;1;0;false;false;;;;;;
                                  -175435;10;0;false;false;0;0;0;;;
                                  -175445;3;0;false;false;;;;;;
                                  -175448;30;0;false;false;0;0;0;;;
                                  -175478;1;0;false;false;;;;;;
                                  -175479;8;0;false;false;0;0;0;;;
                                  -175487;1;0;false;false;;;;;;
                                  -175488;4;1;false;false;127;0;85;;;
                                  -175492;2;0;false;false;0;0;0;;;
                                  -175494;3;0;false;false;;;;;;
                                  -175497;9;0;false;false;0;0;0;;;
                                  -175506;3;0;false;false;;;;;;
                                  -175509;20;0;false;false;0;0;0;;;
                                  -175529;2;0;false;false;;;;;;
                                  -175531;1;0;false;false;0;0;0;;;
                                  -175532;2;0;false;false;;;;;;
                                  -175534;3;0;false;false;63;95;191;;;
                                  -175537;4;0;false;false;;;;;;
                                  -175541;1;0;false;false;63;95;191;;;
                                  -175542;1;0;false;false;;;;;;
                                  -175543;13;0;false;false;63;95;191;;;
                                  -175556;1;0;false;false;;;;;;
                                  -175557;4;0;false;false;63;95;191;;;
                                  -175561;1;0;false;false;;;;;;
                                  -175562;4;0;false;false;63;95;191;;;
                                  -175566;1;0;false;false;;;;;;
                                  -175567;3;0;false;false;63;95;191;;;
                                  -175570;1;0;false;false;;;;;;
                                  -175571;5;0;false;false;63;95;191;;;
                                  -175576;1;0;false;false;;;;;;
                                  -175577;6;0;false;false;63;95;191;;;
                                  -175583;1;0;false;false;;;;;;
                                  -175584;2;0;false;false;63;95;191;;;
                                  -175586;1;0;false;false;;;;;;
                                  -175587;9;0;false;false;63;95;191;;;
                                  -175596;3;0;false;false;;;;;;
                                  -175599;2;0;false;false;63;95;191;;;
                                  -175601;2;0;false;false;;;;;;
                                  -175603;4;1;false;false;127;0;85;;;
                                  -175607;1;0;false;false;;;;;;
                                  -175608;19;0;false;false;0;0;0;;;
                                  -175627;1;0;false;false;;;;;;
                                  -175628;6;0;false;false;0;0;0;;;
                                  -175634;1;0;false;false;;;;;;
                                  -175635;1;0;false;false;0;0;0;;;
                                  -175636;3;0;false;false;;;;;;
                                  -175639;9;0;false;false;0;0;0;;;
                                  -175648;1;0;false;false;;;;;;
                                  -175649;1;0;false;false;0;0;0;;;
                                  -175650;1;0;false;false;;;;;;
                                  -175651;5;1;false;false;127;0;85;;;
                                  -175656;1;0;false;false;0;0;0;;;
                                  -175657;3;0;false;false;;;;;;
                                  -175660;16;0;false;false;0;0;0;;;
                                  -175676;1;0;false;false;;;;;;
                                  -175677;1;0;false;false;0;0;0;;;
                                  -175678;1;0;false;false;;;;;;
                                  -175679;5;1;false;false;127;0;85;;;
                                  -175684;1;0;false;false;0;0;0;;;
                                  -175685;3;0;false;false;;;;;;
                                  -175688;7;0;false;false;0;0;0;;;
                                  -175695;1;0;false;false;;;;;;
                                  -175696;2;0;false;false;0;0;0;;;
                                  -175698;1;0;false;false;;;;;;
                                  -175699;10;0;false;false;0;0;0;;;
                                  -175709;3;0;false;false;;;;;;
                                  -175712;16;0;false;false;0;0;0;;;
                                  -175728;3;0;false;false;;;;;;
                                  -175731;2;1;false;false;127;0;85;;;
                                  -175733;1;0;false;false;;;;;;
                                  -175734;13;0;false;false;0;0;0;;;
                                  -175747;1;0;false;false;;;;;;
                                  -175748;2;0;false;false;0;0;0;;;
                                  -175750;1;0;false;false;;;;;;
                                  -175751;2;0;false;false;0;0;0;;;
                                  -175753;1;0;false;false;;;;;;
                                  -175754;1;0;false;false;0;0;0;;;
                                  -175755;4;0;false;false;;;;;;
                                  -175759;3;1;false;false;127;0;85;;;
                                  -175762;1;0;false;false;;;;;;
                                  -175763;1;0;false;false;0;0;0;;;
                                  -175764;5;0;false;false;;;;;;
                                  -175769;2;1;false;false;127;0;85;;;
                                  -175771;1;0;false;false;;;;;;
                                  -175772;12;0;false;false;0;0;0;;;
                                  -175784;1;0;false;false;;;;;;
                                  -175785;1;0;false;false;0;0;0;;;
                                  -175786;1;0;false;false;;;;;;
                                  -175787;11;0;false;false;0;0;0;;;
                                  -175798;1;0;false;false;;;;;;
                                  -175799;1;0;false;false;0;0;0;;;
                                  -175800;1;0;false;false;;;;;;
                                  -175801;2;0;false;false;0;0;0;;;
                                  -175803;1;0;false;false;;;;;;
                                  -175804;1;0;false;false;0;0;0;;;
                                  -175805;6;0;false;false;;;;;;
                                  -175811;32;0;false;false;0;0;0;;;
                                  -175843;1;0;false;false;;;;;;
                                  -175844;11;0;false;false;0;0;0;;;
                                  -175855;1;0;false;false;;;;;;
                                  -175856;1;0;false;false;0;0;0;;;
                                  -175857;1;0;false;false;;;;;;
                                  -175858;12;0;false;false;0;0;0;;;
                                  -175870;1;0;false;false;;;;;;
                                  -175871;25;0;false;false;0;0;0;;;
                                  -175896;5;0;false;false;;;;;;
                                  -175901;1;0;false;false;0;0;0;;;
                                  -175902;4;0;false;false;;;;;;
                                  -175906;1;0;false;false;0;0;0;;;
                                  -175907;4;0;false;false;;;;;;
                                  -175911;5;1;false;false;127;0;85;;;
                                  -175916;1;0;false;false;;;;;;
                                  -175917;9;0;false;false;0;0;0;;;
                                  -175926;1;0;false;false;;;;;;
                                  -175927;6;0;false;false;0;0;0;;;
                                  -175933;1;0;false;false;;;;;;
                                  -175934;1;0;false;false;0;0;0;;;
                                  -175935;5;0;false;false;;;;;;
                                  -175940;69;0;false;false;63;127;95;;;
                                  -176009;3;0;false;false;;;;;;
                                  -176012;64;0;false;false;63;127;95;;;
                                  -176076;3;0;false;false;;;;;;
                                  -176079;18;0;false;false;63;127;95;;;
                                  -176097;3;0;false;false;;;;;;
                                  -176100;47;0;false;false;63;127;95;;;
                                  -176147;3;0;false;false;;;;;;
                                  -176150;2;1;false;false;127;0;85;;;
                                  -176152;1;0;false;false;;;;;;
                                  -176153;11;0;false;false;0;0;0;;;
                                  -176164;1;0;false;false;;;;;;
                                  -176165;2;0;false;false;0;0;0;;;
                                  -176167;1;0;false;false;;;;;;
                                  -176168;31;0;false;false;0;0;0;;;
                                  -176199;1;0;false;false;;;;;;
                                  -176200;1;0;false;false;0;0;0;;;
                                  -176201;6;0;false;false;;;;;;
                                  -176207;5;1;false;false;127;0;85;;;
                                  -176212;1;0;false;false;;;;;;
                                  -176213;6;0;false;false;0;0;0;;;
                                  -176219;5;0;false;false;;;;;;
                                  -176224;1;0;false;false;0;0;0;;;
                                  -176225;4;0;false;false;;;;;;
                                  -176229;1;0;false;false;0;0;0;;;
                                  -176230;3;0;false;false;;;;;;
                                  -176233;1;0;false;false;0;0;0;;;
                                  -176234;2;0;false;false;;;;;;
                                  -176236;1;0;false;false;0;0;0;;;
                                  -176237;2;0;false;false;;;;;;
                                  -176239;3;0;false;false;63;95;191;;;
                                  -176242;3;0;false;false;;;;;;
                                  -176245;1;0;false;false;63;95;191;;;
                                  -176246;1;0;false;false;;;;;;
                                  -176247;7;0;false;false;63;95;191;;;
                                  -176254;1;0;false;false;;;;;;
                                  -176255;3;0;false;false;63;95;191;;;
                                  -176258;1;0;false;false;;;;;;
                                  -176259;11;0;false;false;63;95;191;;;
                                  -176270;1;0;false;false;;;;;;
                                  -176271;4;0;false;false;63;95;191;;;
                                  -176275;1;0;false;false;;;;;;
                                  -176276;9;0;false;false;63;95;191;;;
                                  -176285;1;0;false;false;;;;;;
                                  -176286;2;0;false;false;63;95;191;;;
                                  -176288;1;0;false;false;;;;;;
                                  -176289;3;0;false;false;63;95;191;;;
                                  -176292;1;0;false;false;;;;;;
                                  -176293;5;0;false;false;63;95;191;;;
                                  -176298;1;0;false;false;;;;;;
                                  -176299;6;0;false;false;63;95;191;;;
                                  -176305;3;0;false;false;;;;;;
                                  -176308;1;0;false;false;63;95;191;;;
                                  -176309;1;0;false;false;;;;;;
                                  -176310;3;0;false;false;127;127;159;;;
                                  -176313;3;0;false;false;;;;;;
                                  -176316;1;0;false;false;63;95;191;;;
                                  -176317;3;0;false;false;;;;;;
                                  -176320;1;0;false;false;63;95;191;;;
                                  -176321;1;0;false;false;;;;;;
                                  -176322;7;1;false;false;127;159;191;;;
                                  -176329;5;0;false;false;63;95;191;;;
                                  -176334;1;0;false;false;;;;;;
                                  -176335;5;0;false;false;63;95;191;;;
                                  -176340;1;0;false;false;;;;;;
                                  -176341;5;0;false;false;63;95;191;;;
                                  -176346;3;0;false;false;;;;;;
                                  -176349;2;0;false;false;63;95;191;;;
                                  -176351;2;0;false;false;;;;;;
                                  -176353;4;1;false;false;127;0;85;;;
                                  -176357;1;0;false;false;;;;;;
                                  -176358;17;0;false;false;0;0;0;;;
                                  -176375;1;0;false;false;;;;;;
                                  -176376;6;0;false;false;0;0;0;;;
                                  -176382;1;0;false;false;;;;;;
                                  -176383;1;0;false;false;0;0;0;;;
                                  -176384;3;0;false;false;;;;;;
                                  -176387;33;0;false;false;63;127;95;;;
                                  -176420;1;0;false;false;;;;;;
                                  -176421;2;1;false;false;127;0;85;;;
                                  -176423;1;0;false;false;;;;;;
                                  -176424;13;0;false;false;0;0;0;;;
                                  -176437;1;0;false;false;;;;;;
                                  -176438;2;0;false;false;0;0;0;;;
                                  -176440;1;0;false;false;;;;;;
                                  -176441;2;0;false;false;0;0;0;;;
                                  -176443;1;0;false;false;;;;;;
                                  -176444;6;1;false;false;127;0;85;;;
                                  -176450;1;0;false;false;0;0;0;;;
                                  -176451;3;0;false;false;;;;;;
                                  -176454;3;1;false;false;127;0;85;;;
                                  -176457;1;0;false;false;;;;;;
                                  -176458;9;0;false;false;0;0;0;;;
                                  -176467;1;0;false;false;;;;;;
                                  -176468;1;0;false;false;0;0;0;;;
                                  -176469;1;0;false;false;;;;;;
                                  -176470;11;0;false;false;0;0;0;;;
                                  -176481;1;0;false;false;;;;;;
                                  -176482;8;0;false;false;0;0;0;;;
                                  -176490;1;0;false;false;;;;;;
                                  -176491;1;0;false;false;0;0;0;;;
                                  -176492;1;0;false;false;;;;;;
                                  -176493;9;0;false;false;0;0;0;;;
                                  -176502;1;0;false;false;;;;;;
                                  -176503;1;0;false;false;0;0;0;;;
                                  -176504;1;0;false;false;;;;;;
                                  -176505;21;0;false;false;0;0;0;;;
                                  -176526;1;0;false;false;;;;;;
                                  -176527;1;0;false;false;0;0;0;;;
                                  -176528;1;0;false;false;;;;;;
                                  -176529;12;0;false;false;0;0;0;;;
                                  -176541;3;0;false;false;;;;;;
                                  -176544;3;1;false;false;127;0;85;;;
                                  -176547;1;0;false;false;;;;;;
                                  -176548;17;0;false;false;0;0;0;;;
                                  -176565;1;0;false;false;;;;;;
                                  -176566;1;0;false;false;0;0;0;;;
                                  -176567;1;0;false;false;;;;;;
                                  -176568;10;0;false;false;0;0;0;;;
                                  -176578;1;0;false;false;;;;;;
                                  -176579;1;0;false;false;0;0;0;;;
                                  -176580;1;0;false;false;;;;;;
                                  -176581;9;0;false;false;0;0;0;;;
                                  -176590;1;0;false;false;;;;;;
                                  -176591;1;0;false;false;0;0;0;;;
                                  -176592;1;0;false;false;;;;;;
                                  -176593;11;0;false;false;0;0;0;;;
                                  -176604;3;0;false;false;;;;;;
                                  -176607;3;1;false;false;127;0;85;;;
                                  -176610;1;0;false;false;;;;;;
                                  -176611;13;0;false;false;0;0;0;;;
                                  -176624;1;0;false;false;;;;;;
                                  -176625;1;0;false;false;0;0;0;;;
                                  -176626;1;0;false;false;;;;;;
                                  -176627;8;0;false;false;0;0;0;;;
                                  -176635;1;0;false;false;;;;;;
                                  -176636;1;0;false;false;0;0;0;;;
                                  -176637;1;0;false;false;;;;;;
                                  -176638;10;0;false;false;0;0;0;;;
                                  -176648;1;0;false;false;;;;;;
                                  -176649;1;0;false;false;0;0;0;;;
                                  -176650;1;0;false;false;;;;;;
                                  -176651;21;0;false;false;0;0;0;;;
                                  -176672;3;0;false;false;;;;;;
                                  -176675;3;1;false;false;127;0;85;;;
                                  -176678;1;0;false;false;;;;;;
                                  -176679;6;0;false;false;0;0;0;;;
                                  -176685;1;0;false;false;;;;;;
                                  -176686;1;0;false;false;0;0;0;;;
                                  -176687;1;0;false;false;;;;;;
                                  -176688;17;0;false;false;0;0;0;;;
                                  -176705;1;0;false;false;;;;;;
                                  -176706;1;0;false;false;0;0;0;;;
                                  -176707;1;0;false;false;;;;;;
                                  -176708;13;0;false;false;0;0;0;;;
                                  -176721;1;0;false;false;;;;;;
                                  -176722;1;0;false;false;0;0;0;;;
                                  -176723;1;0;false;false;;;;;;
                                  -176724;10;0;false;false;0;0;0;;;
                                  -176734;1;0;false;false;;;;;;
                                  -176735;63;0;false;false;63;127;95;;;
                                  -176798;1;0;false;false;;;;;;
                                  -176799;3;1;false;false;127;0;85;;;
                                  -176802;1;0;false;false;;;;;;
                                  -176803;12;0;false;false;0;0;0;;;
                                  -176815;1;0;false;false;;;;;;
                                  -176816;1;0;false;false;0;0;0;;;
                                  -176817;1;0;false;false;;;;;;
                                  -176818;7;0;false;false;0;0;0;;;
                                  -176825;1;0;false;false;;;;;;
                                  -176826;1;0;false;false;0;0;0;;;
                                  -176827;1;0;false;false;;;;;;
                                  -176828;12;0;false;false;0;0;0;;;
                                  -176840;1;0;false;false;;;;;;
                                  -176841;1;0;false;false;0;0;0;;;
                                  -176842;1;0;false;false;;;;;;
                                  -176843;7;0;false;false;0;0;0;;;
                                  -176850;3;0;false;false;;;;;;
                                  -176853;22;0;false;false;0;0;0;;;
                                  -176875;1;0;false;false;;;;;;
                                  -176876;10;0;false;false;0;0;0;;;
                                  -176886;1;0;false;false;;;;;;
                                  -176887;7;0;false;false;0;0;0;;;
                                  -176894;1;0;false;false;;;;;;
                                  -176895;14;0;false;false;0;0;0;;;
                                  -176909;2;0;false;false;;;;;;
                                  -176911;1;0;false;false;0;0;0;;;
                                  -176912;3;0;false;false;;;;;;
                                  -176915;3;0;false;false;63;95;191;;;
                                  -176918;3;0;false;false;;;;;;
                                  -176921;1;0;false;false;63;95;191;;;
                                  -176922;1;0;false;false;;;;;;
                                  -176923;12;0;false;false;63;95;191;;;
                                  -176935;1;0;false;false;;;;;;
                                  -176936;3;0;false;false;63;95;191;;;
                                  -176939;1;0;false;false;;;;;;
                                  -176940;6;0;false;false;63;95;191;;;
                                  -176946;1;0;false;false;;;;;;
                                  -176947;5;0;false;false;63;95;191;;;
                                  -176952;1;0;false;false;;;;;;
                                  -176953;7;0;false;false;63;95;191;;;
                                  -176960;1;0;false;false;;;;;;
                                  -176961;3;0;false;false;63;95;191;;;
                                  -176964;1;0;false;false;;;;;;
                                  -176965;5;0;false;false;63;95;191;;;
                                  -176970;1;0;false;false;;;;;;
                                  -176971;4;0;false;false;63;95;191;;;
                                  -176975;1;0;false;false;;;;;;
                                  -176976;2;0;false;false;63;95;191;;;
                                  -176978;1;0;false;false;;;;;;
                                  -176979;4;0;false;false;63;95;191;;;
                                  -176983;4;0;false;false;;;;;;
                                  -176987;1;0;false;false;63;95;191;;;
                                  -176988;1;0;false;false;;;;;;
                                  -176989;4;0;false;false;63;95;191;;;
                                  -176993;1;0;false;false;;;;;;
                                  -176994;5;0;false;false;63;95;191;;;
                                  -176999;3;0;false;false;;;;;;
                                  -177002;1;0;false;false;63;95;191;;;
                                  -177003;1;0;false;false;;;;;;
                                  -177004;3;0;false;false;127;127;159;;;
                                  -177007;3;0;false;false;;;;;;
                                  -177010;1;0;false;false;63;95;191;;;
                                  -177011;3;0;false;false;;;;;;
                                  -177014;1;0;false;false;63;95;191;;;
                                  -177015;1;0;false;false;;;;;;
                                  -177016;7;1;false;false;127;159;191;;;
                                  -177023;5;0;false;false;63;95;191;;;
                                  -177028;1;0;false;false;;;;;;
                                  -177029;6;0;false;false;63;95;191;;;
                                  -177035;1;0;false;false;;;;;;
                                  -177036;5;0;false;false;63;95;191;;;
                                  -177041;3;0;false;false;;;;;;
                                  -177044;2;0;false;false;63;95;191;;;
                                  -177046;2;0;false;false;;;;;;
                                  -177048;4;1;false;false;127;0;85;;;
                                  -177052;1;0;false;false;;;;;;
                                  -177053;18;0;false;false;0;0;0;;;
                                  -177071;1;0;false;false;;;;;;
                                  -177072;6;0;false;false;0;0;0;;;
                                  -177078;1;0;false;false;;;;;;
                                  -177079;1;0;false;false;0;0;0;;;
                                  -177080;3;0;false;false;;;;;;
                                  -177083;3;1;false;false;127;0;85;;;
                                  -177086;1;0;false;false;;;;;;
                                  -177087;9;0;false;false;0;0;0;;;
                                  -177096;1;0;false;false;;;;;;
                                  -177097;1;0;false;false;0;0;0;;;
                                  -177098;1;0;false;false;;;;;;
                                  -177099;17;0;false;false;0;0;0;;;
                                  -177116;3;0;false;false;;;;;;
                                  -177119;3;1;false;false;127;0;85;;;
                                  -177122;1;0;false;false;;;;;;
                                  -177123;8;0;false;false;0;0;0;;;
                                  -177131;1;0;false;false;;;;;;
                                  -177132;1;0;false;false;0;0;0;;;
                                  -177133;1;0;false;false;;;;;;
                                  -177134;16;0;false;false;0;0;0;;;
                                  -177150;6;0;false;false;;;;;;
                                  -177156;9;0;false;false;0;0;0;;;
                                  -177165;1;0;false;false;;;;;;
                                  -177166;10;0;false;false;0;0;0;;;
                                  -177176;1;0;false;false;;;;;;
                                  -177177;1;0;false;false;0;0;0;;;
                                  -177178;1;0;false;false;;;;;;
                                  -177179;16;0;false;false;0;0;0;;;
                                  -177195;3;0;false;false;;;;;;
                                  -177198;16;0;false;false;0;0;0;;;
                                  -177214;1;0;false;false;;;;;;
                                  -177215;1;0;false;false;0;0;0;;;
                                  -177216;1;0;false;false;;;;;;
                                  -177217;18;0;false;false;0;0;0;;;
                                  -177235;3;0;false;false;;;;;;
                                  -177238;15;0;false;false;0;0;0;;;
                                  -177253;1;0;false;false;;;;;;
                                  -177254;1;0;false;false;0;0;0;;;
                                  -177255;1;0;false;false;;;;;;
                                  -177256;17;0;false;false;0;0;0;;;
                                  -177273;3;0;false;false;;;;;;
                                  -177276;57;0;false;false;63;127;95;;;
                                  -177333;3;0;false;false;;;;;;
                                  -177336;2;1;false;false;127;0;85;;;
                                  -177338;1;0;false;false;;;;;;
                                  -177339;9;0;false;false;0;0;0;;;
                                  -177348;1;0;false;false;;;;;;
                                  -177349;2;0;false;false;0;0;0;;;
                                  -177351;1;0;false;false;;;;;;
                                  -177352;16;0;false;false;0;0;0;;;
                                  -177368;1;0;false;false;;;;;;
                                  -177369;1;0;false;false;0;0;0;;;
                                  -177370;4;0;false;false;;;;;;
                                  -177374;2;1;false;false;127;0;85;;;
                                  -177376;1;0;false;false;;;;;;
                                  -177377;12;0;false;false;0;0;0;;;
                                  -177389;1;0;false;false;;;;;;
                                  -177390;1;0;false;false;0;0;0;;;
                                  -177391;1;0;false;false;;;;;;
                                  -177392;2;0;false;false;0;0;0;;;
                                  -177394;1;0;false;false;;;;;;
                                  -177395;1;0;false;false;0;0;0;;;
                                  -177396;5;0;false;false;;;;;;
                                  -177401;3;1;false;false;127;0;85;;;
                                  -177404;1;0;false;false;;;;;;
                                  -177405;1;0;false;false;0;0;0;;;
                                  -177406;1;0;false;false;;;;;;
                                  -177407;1;0;false;false;0;0;0;;;
                                  -177408;1;0;false;false;;;;;;
                                  -177409;9;0;false;false;0;0;0;;;
                                  -177418;1;0;false;false;;;;;;
                                  -177419;1;0;false;false;0;0;0;;;
                                  -177420;1;0;false;false;;;;;;
                                  -177421;15;0;false;false;0;0;0;;;
                                  -177436;1;0;false;false;;;;;;
                                  -177437;1;0;false;false;0;0;0;;;
                                  -177438;1;0;false;false;;;;;;
                                  -177439;8;0;false;false;0;0;0;;;
                                  -177447;1;0;false;false;;;;;;
                                  -177448;1;0;false;false;0;0;0;;;
                                  -177449;1;0;false;false;;;;;;
                                  -177450;17;0;false;false;0;0;0;;;
                                  -177467;1;0;false;false;;;;;;
                                  -177468;12;0;false;false;0;0;0;;;
                                  -177480;6;0;false;false;;;;;;
                                  -177486;9;0;false;false;0;0;0;;;
                                  -177495;1;0;false;false;;;;;;
                                  -177496;2;0;false;false;0;0;0;;;
                                  -177498;1;0;false;false;;;;;;
                                  -177499;12;0;false;false;0;0;0;;;
                                  -177511;1;0;false;false;;;;;;
                                  -177512;10;0;false;false;0;0;0;;;
                                  -177522;1;0;false;false;;;;;;
                                  -177523;5;1;false;false;127;0;85;;;
                                  -177528;2;0;false;false;0;0;0;;;
                                  -177530;4;0;false;false;;;;;;
                                  -177534;1;0;false;false;0;0;0;;;
                                  -177535;3;0;false;false;;;;;;
                                  -177538;1;0;false;false;0;0;0;;;
                                  -177539;3;0;false;false;;;;;;
                                  -177542;2;1;false;false;127;0;85;;;
                                  -177544;1;0;false;false;;;;;;
                                  -177545;10;0;false;false;0;0;0;;;
                                  -177555;1;0;false;false;;;;;;
                                  -177556;2;0;false;false;0;0;0;;;
                                  -177558;1;0;false;false;;;;;;
                                  -177559;17;0;false;false;0;0;0;;;
                                  -177576;1;0;false;false;;;;;;
                                  -177577;1;0;false;false;0;0;0;;;
                                  -177578;4;0;false;false;;;;;;
                                  -177582;2;1;false;false;127;0;85;;;
                                  -177584;1;0;false;false;;;;;;
                                  -177585;13;0;false;false;0;0;0;;;
                                  -177598;1;0;false;false;;;;;;
                                  -177599;1;0;false;false;0;0;0;;;
                                  -177600;1;0;false;false;;;;;;
                                  -177601;2;0;false;false;0;0;0;;;
                                  -177603;1;0;false;false;;;;;;
                                  -177604;1;0;false;false;0;0;0;;;
                                  -177605;5;0;false;false;;;;;;
                                  -177610;3;1;false;false;127;0;85;;;
                                  -177613;1;0;false;false;;;;;;
                                  -177614;1;0;false;false;0;0;0;;;
                                  -177615;1;0;false;false;;;;;;
                                  -177616;1;0;false;false;0;0;0;;;
                                  -177617;1;0;false;false;;;;;;
                                  -177618;10;0;false;false;0;0;0;;;
                                  -177628;1;0;false;false;;;;;;
                                  -177629;1;0;false;false;0;0;0;;;
                                  -177630;1;0;false;false;;;;;;
                                  -177631;16;0;false;false;0;0;0;;;
                                  -177647;1;0;false;false;;;;;;
                                  -177648;1;0;false;false;0;0;0;;;
                                  -177649;1;0;false;false;;;;;;
                                  -177650;9;0;false;false;0;0;0;;;
                                  -177659;1;0;false;false;;;;;;
                                  -177660;1;0;false;false;0;0;0;;;
                                  -177661;1;0;false;false;;;;;;
                                  -177662;18;0;false;false;0;0;0;;;
                                  -177680;1;0;false;false;;;;;;
                                  -177681;13;0;false;false;0;0;0;;;
                                  -177694;6;0;false;false;;;;;;
                                  -177700;9;0;false;false;0;0;0;;;
                                  -177709;1;0;false;false;;;;;;
                                  -177710;2;0;false;false;0;0;0;;;
                                  -177712;1;0;false;false;;;;;;
                                  -177713;9;0;false;false;0;0;0;;;
                                  -177722;1;0;false;false;;;;;;
                                  -177723;13;0;false;false;0;0;0;;;
                                  -177736;1;0;false;false;;;;;;
                                  -177737;5;1;false;false;127;0;85;;;
                                  -177742;2;0;false;false;0;0;0;;;
                                  -177744;4;0;false;false;;;;;;
                                  -177748;1;0;false;false;0;0;0;;;
                                  -177749;3;0;false;false;;;;;;
                                  -177752;1;0;false;false;0;0;0;;;
                                  -177753;3;0;false;false;;;;;;
                                  -177756;2;1;false;false;127;0;85;;;
                                  -177758;1;0;false;false;;;;;;
                                  -177759;10;0;false;false;0;0;0;;;
                                  -177769;1;0;false;false;;;;;;
                                  -177770;1;0;false;false;0;0;0;;;
                                  -177771;4;0;false;false;;;;;;
                                  -177775;2;1;false;false;127;0;85;;;
                                  -177777;1;0;false;false;;;;;;
                                  -177778;9;0;false;false;0;0;0;;;
                                  -177787;1;0;false;false;;;;;;
                                  -177788;2;0;false;false;0;0;0;;;
                                  -177790;1;0;false;false;;;;;;
                                  -177791;16;0;false;false;0;0;0;;;
                                  -177807;1;0;false;false;;;;;;
                                  -177808;1;0;false;false;0;0;0;;;
                                  -177809;6;0;false;false;;;;;;
                                  -177815;25;0;false;false;0;0;0;;;
                                  -177840;4;0;false;false;;;;;;
                                  -177844;1;0;false;false;0;0;0;;;
                                  -177845;3;0;false;false;;;;;;
                                  -177848;1;0;false;false;0;0;0;;;
                                  -177849;3;0;false;false;;;;;;
                                  -177852;4;1;false;false;127;0;85;;;
                                  -177856;3;0;false;false;;;;;;
                                  -177859;2;1;false;false;127;0;85;;;
                                  -177861;1;0;false;false;;;;;;
                                  -177862;17;0;false;false;0;0;0;;;
                                  -177879;1;0;false;false;;;;;;
                                  -177880;1;0;false;false;0;0;0;;;
                                  -177881;1;0;false;false;;;;;;
                                  -177882;10;0;false;false;0;0;0;;;
                                  -177892;1;0;false;false;;;;;;
                                  -177893;1;0;false;false;0;0;0;;;
                                  -177894;4;0;false;false;;;;;;
                                  -177898;3;1;false;false;127;0;85;;;
                                  -177901;1;0;false;false;;;;;;
                                  -177902;9;0;false;false;0;0;0;;;
                                  -177911;1;0;false;false;;;;;;
                                  -177912;1;0;false;false;0;0;0;;;
                                  -177913;1;0;false;false;;;;;;
                                  -177914;23;0;false;false;0;0;0;;;
                                  -177937;4;0;false;false;;;;;;
                                  -177941;3;1;false;false;127;0;85;;;
                                  -177944;1;0;false;false;;;;;;
                                  -177945;14;0;false;false;0;0;0;;;
                                  -177959;1;0;false;false;;;;;;
                                  -177960;1;0;false;false;0;0;0;;;
                                  -177961;1;0;false;false;;;;;;
                                  -177962;8;0;false;false;0;0;0;;;
                                  -177970;1;0;false;false;;;;;;
                                  -177971;1;0;false;false;0;0;0;;;
                                  -177972;1;0;false;false;;;;;;
                                  -177973;9;0;false;false;0;0;0;;;
                                  -177982;1;0;false;false;;;;;;
                                  -177983;1;0;false;false;0;0;0;;;
                                  -177984;1;0;false;false;;;;;;
                                  -177985;11;0;false;false;0;0;0;;;
                                  -177996;4;0;false;false;;;;;;
                                  -178000;3;1;false;false;127;0;85;;;
                                  -178003;1;0;false;false;;;;;;
                                  -178004;12;0;false;false;0;0;0;;;
                                  -178016;1;0;false;false;;;;;;
                                  -178017;1;0;false;false;0;0;0;;;
                                  -178018;1;0;false;false;;;;;;
                                  -178019;35;0;false;false;0;0;0;;;
                                  -178054;1;0;false;false;;;;;;
                                  -178055;1;0;false;false;0;0;0;;;
                                  -178056;1;0;false;false;;;;;;
                                  -178057;10;0;false;false;0;0;0;;;
                                  -178067;1;0;false;false;;;;;;
                                  -178068;12;0;false;false;0;0;0;;;
                                  -178080;8;0;false;false;;;;;;
                                  -178088;14;0;false;false;0;0;0;;;
                                  -178102;1;0;false;false;;;;;;
                                  -178103;1;0;false;false;0;0;0;;;
                                  -178104;1;0;false;false;;;;;;
                                  -178105;24;0;false;false;0;0;0;;;
                                  -178129;1;0;false;false;;;;;;
                                  -178130;11;0;false;false;0;0;0;;;
                                  -178141;4;0;false;false;;;;;;
                                  -178145;12;0;false;false;0;0;0;;;
                                  -178157;1;0;false;false;;;;;;
                                  -178158;1;0;false;false;0;0;0;;;
                                  -178159;1;0;false;false;;;;;;
                                  -178160;22;0;false;false;0;0;0;;;
                                  -178182;1;0;false;false;;;;;;
                                  -178183;9;0;false;false;0;0;0;;;
                                  -178192;1;0;false;false;;;;;;
                                  -178193;1;0;false;false;0;0;0;;;
                                  -178194;1;0;false;false;;;;;;
                                  -178195;16;0;false;false;0;0;0;;;
                                  -178211;4;0;false;false;;;;;;
                                  -178215;35;0;false;false;0;0;0;;;
                                  -178250;1;0;false;false;;;;;;
                                  -178251;14;0;false;false;0;0;0;;;
                                  -178265;3;0;false;false;;;;;;
                                  -178268;1;0;false;false;0;0;0;;;
                                  -178269;3;0;false;false;;;;;;
                                  -178272;16;0;false;false;0;0;0;;;
                                  -178288;3;0;false;false;;;;;;
                                  -178291;23;0;false;false;0;0;0;;;
                                  -178314;3;0;false;false;;;;;;
                                  -178317;22;0;false;false;0;0;0;;;
                                  -178339;4;0;false;false;;;;;;
                                  -178343;2;1;false;false;127;0;85;;;
                                  -178345;1;0;false;false;;;;;;
                                  -178346;10;0;false;false;0;0;0;;;
                                  -178356;1;0;false;false;;;;;;
                                  -178357;2;0;false;false;0;0;0;;;
                                  -178359;1;0;false;false;;;;;;
                                  -178360;17;0;false;false;0;0;0;;;
                                  -178377;1;0;false;false;;;;;;
                                  -178378;1;0;false;false;0;0;0;;;
                                  -178379;4;0;false;false;;;;;;
                                  -178383;20;0;false;false;0;0;0;;;
                                  -178403;3;0;false;false;;;;;;
                                  -178406;1;0;false;false;0;0;0;;;
                                  -178407;2;0;false;false;;;;;;
                                  -178409;1;0;false;false;0;0;0;;;
                                  -178410;2;0;false;false;;;;;;
                                  -178412;3;0;false;false;63;95;191;;;
                                  -178415;3;0;false;false;;;;;;
                                  -178418;1;0;false;false;63;95;191;;;
                                  -178419;1;0;false;false;;;;;;
                                  -178420;7;0;false;false;63;95;191;;;
                                  -178427;1;0;false;false;;;;;;
                                  -178428;3;0;false;false;63;95;191;;;
                                  -178431;1;0;false;false;;;;;;
                                  -178432;5;0;false;false;63;95;191;;;
                                  -178437;1;0;false;false;;;;;;
                                  -178438;8;0;false;false;63;95;191;;;
                                  -178446;1;0;false;false;;;;;;
                                  -178447;3;0;false;false;63;95;191;;;
                                  -178450;1;0;false;false;;;;;;
                                  -178451;9;0;false;false;63;95;191;;;
                                  -178460;1;0;false;false;;;;;;
                                  -178461;3;0;false;false;63;95;191;;;
                                  -178464;1;0;false;false;;;;;;
                                  -178465;3;0;false;false;63;95;191;;;
                                  -178468;1;0;false;false;;;;;;
                                  -178469;6;0;false;false;63;95;191;;;
                                  -178475;1;0;false;false;;;;;;
                                  -178476;4;0;false;false;63;95;191;;;
                                  -178480;1;0;false;false;;;;;;
                                  -178481;2;0;false;false;63;95;191;;;
                                  -178483;1;0;false;false;;;;;;
                                  -178484;7;0;false;false;63;95;191;;;
                                  -178491;4;0;false;false;;;;;;
                                  -178495;1;0;false;false;63;95;191;;;
                                  -178496;1;0;false;false;;;;;;
                                  -178497;3;0;false;false;63;95;191;;;
                                  -178500;1;0;false;false;;;;;;
                                  -178501;7;0;false;false;63;95;191;;;
                                  -178508;1;0;false;false;;;;;;
                                  -178509;7;0;false;false;63;95;191;;;
                                  -178516;3;0;false;false;;;;;;
                                  -178519;1;0;false;false;63;95;191;;;
                                  -178520;1;0;false;false;;;;;;
                                  -178521;3;0;false;false;127;127;159;;;
                                  -178524;3;0;false;false;;;;;;
                                  -178527;2;0;false;false;63;95;191;;;
                                  -178529;2;0;false;false;;;;;;
                                  -178531;4;1;false;false;127;0;85;;;
                                  -178535;1;0;false;false;;;;;;
                                  -178536;34;0;false;false;0;0;0;;;
                                  -178570;1;0;false;false;;;;;;
                                  -178571;6;0;false;false;0;0;0;;;
                                  -178577;1;0;false;false;;;;;;
                                  -178578;1;0;false;false;0;0;0;;;
                                  -178579;3;0;false;false;;;;;;
                                  -178582;42;0;false;false;0;0;0;;;
                                  -178624;5;0;false;false;;;;;;
                                  -178629;27;0;false;false;0;0;0;;;
                                  -178656;5;0;false;false;;;;;;
                                  -178661;31;0;false;false;0;0;0;;;
                                  -178692;4;0;false;false;;;;;;
                                  -178696;27;0;false;false;0;0;0;;;
                                  -178723;4;0;false;false;;;;;;
                                  -178727;32;0;false;false;0;0;0;;;
                                  -178759;3;0;false;false;;;;;;
                                  -178762;16;0;false;false;0;0;0;;;
                                  -178778;3;0;false;false;;;;;;
                                  -178781;68;0;false;false;63;127;95;;;
                                  -178849;1;0;false;false;;;;;;
                                  -178850;52;0;false;false;63;127;95;;;
                                  -178902;1;0;false;false;;;;;;
                                  -178903;5;0;false;false;63;127;95;;;
                                  -178908;1;0;false;false;;;;;;
                                  -178909;65;0;false;false;63;127;95;;;
                                  -178974;1;0;false;false;;;;;;
                                  -178975;68;0;false;false;63;127;95;;;
                                  -179043;1;0;false;false;;;;;;
                                  -179044;70;0;false;false;63;127;95;;;
                                  -179114;1;0;false;false;;;;;;
                                  -179115;39;0;false;false;63;127;95;;;
                                  -179154;1;0;false;false;;;;;;
                                  -179155;18;0;false;false;63;127;95;;;
                                  -179173;1;0;false;false;;;;;;
                                  -179174;16;0;false;false;0;0;0;;;
                                  -179190;4;0;false;false;;;;;;
                                  -179194;20;0;false;false;0;0;0;;;
                                  -179214;5;0;false;false;;;;;;
                                  -179219;31;0;false;false;0;0;0;;;
                                  -179250;5;0;false;false;;;;;;
                                  -179255;28;0;false;false;0;0;0;;;
                                  -179283;7;0;false;false;;;;;;
                                  -179290;2;1;false;false;127;0;85;;;
                                  -179292;1;0;false;false;;;;;;
                                  -179293;31;0;false;false;0;0;0;;;
                                  -179324;1;0;false;false;;;;;;
                                  -179325;1;0;false;false;0;0;0;;;
                                  -179326;1;0;false;false;;;;;;
                                  -179327;2;0;false;false;0;0;0;;;
                                  -179329;1;0;false;false;;;;;;
                                  -179330;1;0;false;false;0;0;0;;;
                                  -179331;4;0;false;false;;;;;;
                                  -179335;56;0;false;false;63;127;95;;;
                                  -179391;2;0;false;false;;;;;;
                                  -179393;18;0;false;false;63;127;95;;;
                                  -179411;2;0;false;false;;;;;;
                                  -179413;65;0;false;false;63;127;95;;;
                                  -179478;2;0;false;false;;;;;;
                                  -179480;18;0;false;false;63;127;95;;;
                                  -179498;2;0;false;false;;;;;;
                                  -179500;23;0;false;false;0;0;0;;;
                                  -179523;3;0;false;false;;;;;;
                                  -179526;1;0;false;false;0;0;0;;;
                                  -179527;3;0;false;false;;;;;;
                                  -179530;2;1;false;false;127;0;85;;;
                                  -179532;1;0;false;false;;;;;;
                                  -179533;31;0;false;false;0;0;0;;;
                                  -179564;1;0;false;false;;;;;;
                                  -179565;1;0;false;false;0;0;0;;;
                                  -179566;1;0;false;false;;;;;;
                                  -179567;2;0;false;false;0;0;0;;;
                                  -179569;1;0;false;false;;;;;;
                                  -179570;1;0;false;false;0;0;0;;;
                                  -179571;4;0;false;false;;;;;;
                                  -179575;19;0;false;false;63;127;95;;;
                                  -179594;2;0;false;false;;;;;;
                                  -179596;22;0;false;false;0;0;0;;;
                                  -179618;3;0;false;false;;;;;;
                                  -179621;1;0;false;false;0;0;0;;;
                                  -179622;3;0;false;false;;;;;;
                                  -179625;71;0;false;false;63;127;95;;;
                                  -179696;1;0;false;false;;;;;;
                                  -179697;67;0;false;false;63;127;95;;;
                                  -179764;1;0;false;false;;;;;;
                                  -179765;2;1;false;false;127;0;85;;;
                                  -179767;1;0;false;false;;;;;;
                                  -179768;27;0;false;false;0;0;0;;;
                                  -179795;1;0;false;false;;;;;;
                                  -179796;2;0;false;false;0;0;0;;;
                                  -179798;1;0;false;false;;;;;;
                                  -179799;1;0;false;false;0;0;0;;;
                                  -179800;1;0;false;false;;;;;;
                                  -179801;2;0;false;false;0;0;0;;;
                                  -179803;1;0;false;false;;;;;;
                                  -179804;30;0;false;false;0;0;0;;;
                                  -179834;1;0;false;false;;;;;;
                                  -179835;2;0;false;false;0;0;0;;;
                                  -179837;1;0;false;false;;;;;;
                                  -179838;2;0;false;false;0;0;0;;;
                                  -179840;1;0;false;false;;;;;;
                                  -179841;1;0;false;false;0;0;0;;;
                                  -179842;4;0;false;false;;;;;;
                                  -179846;3;1;false;false;127;0;85;;;
                                  -179849;1;0;false;false;;;;;;
                                  -179850;9;0;false;false;0;0;0;;;
                                  -179859;1;0;false;false;;;;;;
                                  -179860;1;0;false;false;0;0;0;;;
                                  -179861;1;0;false;false;;;;;;
                                  -179862;45;0;false;false;0;0;0;;;
                                  -179907;4;0;false;false;;;;;;
                                  -179911;3;1;false;false;127;0;85;;;
                                  -179914;1;0;false;false;;;;;;
                                  -179915;6;0;false;false;0;0;0;;;
                                  -179921;1;0;false;false;;;;;;
                                  -179922;1;0;false;false;0;0;0;;;
                                  -179923;1;0;false;false;;;;;;
                                  -179924;9;0;false;false;0;0;0;;;
                                  -179933;1;0;false;false;;;;;;
                                  -179934;1;0;false;false;0;0;0;;;
                                  -179935;1;0;false;false;;;;;;
                                  -179936;10;0;false;false;0;0;0;;;
                                  -179946;1;0;false;false;;;;;;
                                  -179947;1;0;false;false;0;0;0;;;
                                  -179948;1;0;false;false;;;;;;
                                  -179949;20;0;false;false;0;0;0;;;
                                  -179969;1;0;false;false;;;;;;
                                  -179970;1;0;false;false;0;0;0;;;
                                  -179971;1;0;false;false;;;;;;
                                  -179972;10;0;false;false;0;0;0;;;
                                  -179982;6;0;false;false;;;;;;
                                  -179988;2;1;false;false;127;0;85;;;
                                  -179990;1;0;false;false;;;;;;
                                  -179991;15;0;false;false;0;0;0;;;
                                  -180006;1;0;false;false;;;;;;
                                  -180007;1;0;false;false;0;0;0;;;
                                  -180008;5;0;false;false;;;;;;
                                  -180013;2;0;false;false;0;0;0;;;
                                  -180015;1;0;false;false;;;;;;
                                  -180016;2;0;false;false;0;0;0;;;
                                  -180018;1;0;false;false;;;;;;
                                  -180019;1;0;false;false;0;0;0;;;
                                  -180020;1;0;false;false;;;;;;
                                  -180021;8;0;false;false;0;0;0;;;
                                  -180029;5;0;false;false;;;;;;
                                  -180034;5;0;false;false;0;0;0;;;
                                  -180039;1;0;false;false;;;;;;
                                  -180040;5;0;false;false;0;0;0;;;
                                  -180045;1;0;false;false;;;;;;
                                  -180046;1;0;false;false;0;0;0;;;
                                  -180047;1;0;false;false;;;;;;
                                  -180048;11;0;false;false;0;0;0;;;
                                  -180059;5;0;false;false;;;;;;
                                  -180064;7;1;false;false;127;0;85;;;
                                  -180071;1;0;false;false;;;;;;
                                  -180072;12;0;false;false;0;0;0;;;
                                  -180084;1;0;false;false;;;;;;
                                  -180085;1;0;false;false;0;0;0;;;
                                  -180086;1;0;false;false;;;;;;
                                  -180087;5;1;false;false;127;0;85;;;
                                  -180092;1;0;false;false;0;0;0;;;
                                  -180093;10;0;false;false;;;;;;
                                  -180103;2;1;false;false;127;0;85;;;
                                  -180105;1;0;false;false;;;;;;
                                  -180106;6;0;false;false;0;0;0;;;
                                  -180112;1;0;false;false;;;;;;
                                  -180113;2;0;false;false;0;0;0;;;
                                  -180115;1;0;false;false;;;;;;
                                  -180116;4;1;false;false;127;0;85;;;
                                  -180120;1;0;false;false;0;0;0;;;
                                  -180121;1;0;false;false;;;;;;
                                  -180122;1;0;false;false;0;0;0;;;
                                  -180123;6;0;false;false;;;;;;
                                  -180129;12;0;false;false;0;0;0;;;
                                  -180141;1;0;false;false;;;;;;
                                  -180142;1;0;false;false;0;0;0;;;
                                  -180143;1;0;false;false;;;;;;
                                  -180144;19;0;false;false;0;0;0;;;
                                  -180163;6;0;false;false;;;;;;
                                  -180169;17;0;false;false;0;0;0;;;
                                  -180186;5;1;false;false;127;0;85;;;
                                  -180191;2;0;false;false;0;0;0;;;
                                  -180193;5;0;false;false;;;;;;
                                  -180198;1;0;false;false;0;0;0;;;
                                  -180199;5;0;false;false;;;;;;
                                  -180204;16;0;false;false;0;0;0;;;
                                  -180220;1;0;false;false;;;;;;
                                  -180221;10;0;false;false;0;0;0;;;
                                  -180231;1;0;false;false;;;;;;
                                  -180232;7;0;false;false;0;0;0;;;
                                  -180239;1;0;false;false;;;;;;
                                  -180240;12;0;false;false;0;0;0;;;
                                  -180252;5;0;false;false;;;;;;
                                  -180257;2;1;false;false;127;0;85;;;
                                  -180259;1;0;false;false;;;;;;
                                  -180260;6;0;false;false;0;0;0;;;
                                  -180266;1;0;false;false;;;;;;
                                  -180267;2;0;false;false;0;0;0;;;
                                  -180269;1;0;false;false;;;;;;
                                  -180270;4;1;false;false;127;0;85;;;
                                  -180274;1;0;false;false;0;0;0;;;
                                  -180275;1;0;false;false;;;;;;
                                  -180276;1;0;false;false;0;0;0;;;
                                  -180277;6;0;false;false;;;;;;
                                  -180283;31;0;false;false;0;0;0;;;
                                  -180314;5;0;false;false;;;;;;
                                  -180319;1;0;false;false;0;0;0;;;
                                  -180320;5;0;false;false;;;;;;
                                  -180325;13;0;false;false;0;0;0;;;
                                  -180338;4;0;false;false;;;;;;
                                  -180342;1;0;false;false;0;0;0;;;
                                  -180343;1;0;false;false;;;;;;
                                  -180344;4;1;false;false;127;0;85;;;
                                  -180348;1;0;false;false;;;;;;
                                  -180349;1;0;false;false;0;0;0;;;
                                  -180350;5;0;false;false;;;;;;
                                  -180355;9;0;false;false;0;0;0;;;
                                  -180364;1;0;false;false;;;;;;
                                  -180365;7;0;false;false;0;0;0;;;
                                  -180372;1;0;false;false;;;;;;
                                  -180373;22;0;false;false;0;0;0;;;
                                  -180395;1;0;false;false;;;;;;
                                  -180396;11;0;false;false;0;0;0;;;
                                  -180407;1;0;false;false;;;;;;
                                  -180408;5;1;false;false;127;0;85;;;
                                  -180413;2;0;false;false;0;0;0;;;
                                  -180415;5;0;false;false;;;;;;
                                  -180420;9;0;false;false;0;0;0;;;
                                  -180429;4;0;false;false;;;;;;
                                  -180433;1;0;false;false;0;0;0;;;
                                  -180434;3;0;false;false;;;;;;
                                  -180437;1;0;false;false;0;0;0;;;
                                  -180438;2;0;false;false;;;;;;
                                  -180440;1;0;false;false;0;0;0;;;
                                  -180441;2;0;false;false;;;;;;
                                  -180443;3;0;false;false;63;95;191;;;
                                  -180446;3;0;false;false;;;;;;
                                  -180449;1;0;false;false;63;95;191;;;
                                  -180450;1;0;false;false;;;;;;
                                  -180451;7;0;false;false;63;95;191;;;
                                  -180458;1;0;false;false;;;;;;
                                  -180459;3;0;false;false;63;95;191;;;
                                  -180462;1;0;false;false;;;;;;
                                  -180463;6;0;false;false;63;95;191;;;
                                  -180469;1;0;false;false;;;;;;
                                  -180470;2;0;false;false;63;95;191;;;
                                  -180472;1;0;false;false;;;;;;
                                  -180473;7;0;false;false;63;95;191;;;
                                  -180480;1;0;false;false;;;;;;
                                  -180481;1;0;false;false;63;95;191;;;
                                  -180482;1;0;false;false;;;;;;
                                  -180483;7;0;false;false;63;95;191;;;
                                  -180490;1;0;false;false;;;;;;
                                  -180491;7;0;false;false;63;95;191;;;
                                  -180498;1;0;false;false;;;;;;
                                  -180499;7;0;false;false;63;95;191;;;
                                  -180506;3;0;false;false;;;;;;
                                  -180509;1;0;false;false;63;95;191;;;
                                  -180510;1;0;false;false;;;;;;
                                  -180511;3;0;false;false;127;127;159;;;
                                  -180514;3;0;false;false;;;;;;
                                  -180517;1;0;false;false;63;95;191;;;
                                  -180518;3;0;false;false;;;;;;
                                  -180521;1;0;false;false;63;95;191;;;
                                  -180522;1;0;false;false;;;;;;
                                  -180523;7;1;false;false;127;159;191;;;
                                  -180530;11;0;false;false;63;95;191;;;
                                  -180541;1;0;false;false;;;;;;
                                  -180542;3;0;false;false;63;95;191;;;
                                  -180545;1;0;false;false;;;;;;
                                  -180546;5;0;false;false;63;95;191;;;
                                  -180551;1;0;false;false;;;;;;
                                  -180552;6;0;false;false;63;95;191;;;
                                  -180558;1;0;false;false;;;;;;
                                  -180559;2;0;false;false;63;95;191;;;
                                  -180561;1;0;false;false;;;;;;
                                  -180562;3;0;false;false;63;95;191;;;
                                  -180565;1;0;false;false;;;;;;
                                  -180566;6;0;false;false;63;95;191;;;
                                  -180572;3;0;false;false;;;;;;
                                  -180575;1;0;false;false;63;95;191;;;
                                  -180576;1;0;false;false;;;;;;
                                  -180577;7;1;false;false;127;159;191;;;
                                  -180584;13;0;false;false;63;95;191;;;
                                  -180597;1;0;false;false;;;;;;
                                  -180598;4;0;false;false;63;95;191;;;
                                  -180602;1;0;false;false;;;;;;
                                  -180603;4;0;false;false;63;95;191;;;
                                  -180607;1;0;false;false;;;;;;
                                  -180608;2;0;false;false;63;95;191;;;
                                  -180610;1;0;false;false;;;;;;
                                  -180611;5;0;false;false;63;95;191;;;
                                  -180616;1;0;false;false;;;;;;
                                  -180617;2;0;false;false;63;95;191;;;
                                  -180619;1;0;false;false;;;;;;
                                  -180620;2;0;false;false;63;95;191;;;
                                  -180622;1;0;false;false;;;;;;
                                  -180623;8;0;false;false;63;95;191;;;
                                  -180631;1;0;false;false;;;;;;
                                  -180632;2;0;false;false;63;95;191;;;
                                  -180634;1;0;false;false;;;;;;
                                  -180635;5;0;false;false;63;95;191;;;
                                  -180640;1;0;false;false;;;;;;
                                  -180641;6;0;false;false;63;95;191;;;
                                  -180647;4;0;false;false;;;;;;
                                  -180651;1;0;false;false;63;95;191;;;
                                  -180652;1;0;false;false;;;;;;
                                  -180653;2;0;false;false;63;95;191;;;
                                  -180655;1;0;false;false;;;;;;
                                  -180656;2;0;false;false;63;95;191;;;
                                  -180658;1;0;false;false;;;;;;
                                  -180659;4;0;false;false;63;95;191;;;
                                  -180663;1;0;false;false;;;;;;
                                  -180664;4;0;false;false;63;95;191;;;
                                  -180668;1;0;false;false;;;;;;
                                  -180669;2;0;false;false;63;95;191;;;
                                  -180671;1;0;false;false;;;;;;
                                  -180672;8;0;false;false;63;95;191;;;
                                  -180680;3;0;false;false;;;;;;
                                  -180683;1;0;false;false;63;95;191;;;
                                  -180684;1;0;false;false;;;;;;
                                  -180685;7;1;false;false;127;159;191;;;
                                  -180692;22;0;false;false;63;95;191;;;
                                  -180714;1;0;false;false;;;;;;
                                  -180715;6;0;false;false;63;95;191;;;
                                  -180721;1;0;false;false;;;;;;
                                  -180722;2;0;false;false;63;95;191;;;
                                  -180724;1;0;false;false;;;;;;
                                  -180725;4;0;false;false;63;95;191;;;
                                  -180729;1;0;false;false;;;;;;
                                  -180730;4;0;false;false;63;95;191;;;
                                  -180734;1;0;false;false;;;;;;
                                  -180735;2;0;false;false;63;95;191;;;
                                  -180737;1;0;false;false;;;;;;
                                  -180738;5;0;false;false;63;95;191;;;
                                  -180743;1;0;false;false;;;;;;
                                  -180744;2;0;false;false;63;95;191;;;
                                  -180746;1;0;false;false;;;;;;
                                  -180747;2;0;false;false;63;95;191;;;
                                  -180749;1;0;false;false;;;;;;
                                  -180750;8;0;false;false;63;95;191;;;
                                  -180758;3;0;false;false;;;;;;
                                  -180761;1;0;false;false;63;95;191;;;
                                  -180762;1;0;false;false;;;;;;
                                  -180763;7;1;false;false;127;159;191;;;
                                  -180770;18;0;false;false;63;95;191;;;
                                  -180788;1;0;false;false;;;;;;
                                  -180789;6;0;false;false;63;95;191;;;
                                  -180795;1;0;false;false;;;;;;
                                  -180796;2;0;false;false;63;95;191;;;
                                  -180798;1;0;false;false;;;;;;
                                  -180799;4;0;false;false;63;95;191;;;
                                  -180803;1;0;false;false;;;;;;
                                  -180804;4;0;false;false;63;95;191;;;
                                  -180808;1;0;false;false;;;;;;
                                  -180809;2;0;false;false;63;95;191;;;
                                  -180811;1;0;false;false;;;;;;
                                  -180812;5;0;false;false;63;95;191;;;
                                  -180817;1;0;false;false;;;;;;
                                  -180818;2;0;false;false;63;95;191;;;
                                  -180820;1;0;false;false;;;;;;
                                  -180821;2;0;false;false;63;95;191;;;
                                  -180823;1;0;false;false;;;;;;
                                  -180824;8;0;false;false;63;95;191;;;
                                  -180832;3;0;false;false;;;;;;
                                  -180835;1;0;false;false;63;95;191;;;
                                  -180836;1;0;false;false;;;;;;
                                  -180837;7;1;false;false;127;159;191;;;
                                  -180844;22;0;false;false;63;95;191;;;
                                  -180866;1;0;false;false;;;;;;
                                  -180867;6;0;false;false;63;95;191;;;
                                  -180873;1;0;false;false;;;;;;
                                  -180874;2;0;false;false;63;95;191;;;
                                  -180876;1;0;false;false;;;;;;
                                  -180877;5;0;false;false;63;95;191;;;
                                  -180882;1;0;false;false;;;;;;
                                  -180883;4;0;false;false;63;95;191;;;
                                  -180887;1;0;false;false;;;;;;
                                  -180888;3;0;false;false;63;95;191;;;
                                  -180891;1;0;false;false;;;;;;
                                  -180892;5;0;false;false;63;95;191;;;
                                  -180897;1;0;false;false;;;;;;
                                  -180898;2;0;false;false;63;95;191;;;
                                  -180900;1;0;false;false;;;;;;
                                  -180901;2;0;false;false;63;95;191;;;
                                  -180903;1;0;false;false;;;;;;
                                  -180904;8;0;false;false;63;95;191;;;
                                  -180912;3;0;false;false;;;;;;
                                  -180915;1;0;false;false;63;95;191;;;
                                  -180916;1;0;false;false;;;;;;
                                  -180917;7;1;false;false;127;159;191;;;
                                  -180924;18;0;false;false;63;95;191;;;
                                  -180942;1;0;false;false;;;;;;
                                  -180943;6;0;false;false;63;95;191;;;
                                  -180949;1;0;false;false;;;;;;
                                  -180950;2;0;false;false;63;95;191;;;
                                  -180952;1;0;false;false;;;;;;
                                  -180953;3;0;false;false;63;95;191;;;
                                  -180956;1;0;false;false;;;;;;
                                  -180957;5;0;false;false;63;95;191;;;
                                  -180962;1;0;false;false;;;;;;
                                  -180963;4;0;false;false;63;95;191;;;
                                  -180967;1;0;false;false;;;;;;
                                  -180968;3;0;false;false;63;95;191;;;
                                  -180971;1;0;false;false;;;;;;
                                  -180972;5;0;false;false;63;95;191;;;
                                  -180977;1;0;false;false;;;;;;
                                  -180978;2;0;false;false;63;95;191;;;
                                  -180980;1;0;false;false;;;;;;
                                  -180981;2;0;false;false;63;95;191;;;
                                  -180983;1;0;false;false;;;;;;
                                  -180984;8;0;false;false;63;95;191;;;
                                  -180992;3;0;false;false;;;;;;
                                  -180995;2;0;false;false;63;95;191;;;
                                  -180997;2;0;false;false;;;;;;
                                  -180999;4;1;false;false;127;0;85;;;
                                  -181003;1;0;false;false;;;;;;
                                  -181004;36;0;false;false;0;0;0;;;
                                  -181040;1;0;false;false;;;;;;
                                  -181041;6;0;false;false;0;0;0;;;
                                  -181047;1;0;false;false;;;;;;
                                  -181048;1;0;false;false;0;0;0;;;
                                  -181049;3;0;false;false;;;;;;
                                  -181052;3;1;false;false;127;0;85;;;
                                  -181055;1;0;false;false;;;;;;
                                  -181056;10;0;false;false;0;0;0;;;
                                  -181066;4;0;false;false;;;;;;
                                  -181070;3;1;false;false;127;0;85;;;
                                  -181073;1;0;false;false;;;;;;
                                  -181074;12;0;false;false;0;0;0;;;
                                  -181086;3;0;false;false;;;;;;
                                  -181089;7;1;false;false;127;0;85;;;
                                  -181096;1;0;false;false;;;;;;
                                  -181097;17;0;false;false;0;0;0;;;
                                  -181114;1;0;false;false;;;;;;
                                  -181115;1;0;false;false;0;0;0;;;
                                  -181116;1;0;false;false;;;;;;
                                  -181117;22;0;false;false;0;0;0;;;
                                  -181139;1;0;false;false;;;;;;
                                  -181140;1;0;false;false;0;0;0;;;
                                  -181141;1;0;false;false;;;;;;
                                  -181142;1;0;false;false;0;0;0;;;
                                  -181143;1;0;false;false;;;;;;
                                  -181144;2;0;false;false;0;0;0;;;
                                  -181146;1;0;false;false;;;;;;
                                  -181147;18;0;false;false;0;0;0;;;
                                  -181165;1;0;false;false;;;;;;
                                  -181166;1;0;false;false;0;0;0;;;
                                  -181167;1;0;false;false;;;;;;
                                  -181168;2;0;false;false;0;0;0;;;
                                  -181170;8;0;false;false;;;;;;
                                  -181178;2;1;false;false;127;0;85;;;
                                  -181180;1;0;false;false;;;;;;
                                  -181181;23;0;false;false;0;0;0;;;
                                  -181204;1;0;false;false;;;;;;
                                  -181205;1;0;false;false;0;0;0;;;
                                  -181206;1;0;false;false;;;;;;
                                  -181207;2;0;false;false;0;0;0;;;
                                  -181209;1;0;false;false;;;;;;
                                  -181210;1;0;false;false;0;0;0;;;
                                  -181211;4;0;false;false;;;;;;
                                  -181215;11;0;false;false;0;0;0;;;
                                  -181226;1;0;false;false;;;;;;
                                  -181227;2;0;false;false;0;0;0;;;
                                  -181229;1;0;false;false;;;;;;
                                  -181230;23;0;false;false;0;0;0;;;
                                  -181253;4;0;false;false;;;;;;
                                  -181257;22;0;false;false;0;0;0;;;
                                  -181279;1;0;false;false;;;;;;
                                  -181280;2;0;false;false;0;0;0;;;
                                  -181282;1;0;false;false;;;;;;
                                  -181283;3;0;false;false;0;0;0;;;
                                  -181286;3;0;false;false;;;;;;
                                  -181289;1;0;false;false;0;0;0;;;
                                  -181290;3;0;false;false;;;;;;
                                  -181293;19;0;false;false;0;0;0;;;
                                  -181312;1;0;false;false;;;;;;
                                  -181313;1;0;false;false;0;0;0;;;
                                  -181314;1;0;false;false;;;;;;
                                  -181315;12;0;false;false;0;0;0;;;
                                  -181327;3;0;false;false;;;;;;
                                  -181330;26;0;false;false;0;0;0;;;
                                  -181356;1;0;false;false;;;;;;
                                  -181357;1;0;false;false;0;0;0;;;
                                  -181358;1;0;false;false;;;;;;
                                  -181359;19;0;false;false;0;0;0;;;
                                  -181378;3;0;false;false;;;;;;
                                  -181381;26;0;false;false;0;0;0;;;
                                  -181407;1;0;false;false;;;;;;
                                  -181408;1;0;false;false;0;0;0;;;
                                  -181409;1;0;false;false;;;;;;
                                  -181410;19;0;false;false;0;0;0;;;
                                  -181429;3;0;false;false;;;;;;
                                  -181432;30;0;false;false;0;0;0;;;
                                  -181462;1;0;false;false;;;;;;
                                  -181463;1;0;false;false;0;0;0;;;
                                  -181464;1;0;false;false;;;;;;
                                  -181465;23;0;false;false;0;0;0;;;
                                  -181488;3;0;false;false;;;;;;
                                  -181491;30;0;false;false;0;0;0;;;
                                  -181521;1;0;false;false;;;;;;
                                  -181522;1;0;false;false;0;0;0;;;
                                  -181523;1;0;false;false;;;;;;
                                  -181524;23;0;false;false;0;0;0;;;
                                  -181547;3;0;false;false;;;;;;
                                  -181550;9;0;false;false;0;0;0;;;
                                  -181559;1;0;false;false;;;;;;
                                  -181560;1;0;false;false;0;0;0;;;
                                  -181561;1;0;false;false;;;;;;
                                  -181562;37;0;false;false;0;0;0;;;
                                  -181599;3;0;false;false;;;;;;
                                  -181602;11;0;false;false;0;0;0;;;
                                  -181613;1;0;false;false;;;;;;
                                  -181614;1;0;false;false;0;0;0;;;
                                  -181615;1;0;false;false;;;;;;
                                  -181616;9;0;false;false;0;0;0;;;
                                  -181625;1;0;false;false;;;;;;
                                  -181626;1;0;false;false;0;0;0;;;
                                  -181627;1;0;false;false;;;;;;
                                  -181628;10;0;false;false;0;0;0;;;
                                  -181638;1;0;false;false;;;;;;
                                  -181639;1;0;false;false;0;0;0;;;
                                  -181640;1;0;false;false;;;;;;
                                  -181641;20;0;false;false;0;0;0;;;
                                  -181661;1;0;false;false;;;;;;
                                  -181662;1;0;false;false;0;0;0;;;
                                  -181663;1;0;false;false;;;;;;
                                  -181664;10;0;false;false;0;0;0;;;
                                  -181674;3;0;false;false;;;;;;
                                  -181677;2;1;false;false;127;0;85;;;
                                  -181679;1;0;false;false;;;;;;
                                  -181680;19;0;false;false;0;0;0;;;
                                  -181699;1;0;false;false;;;;;;
                                  -181700;1;0;false;false;0;0;0;;;
                                  -181701;4;0;false;false;;;;;;
                                  -181705;34;0;false;false;0;0;0;;;
                                  -181739;1;0;false;false;;;;;;
                                  -181740;19;0;false;false;0;0;0;;;
                                  -181759;1;0;false;false;;;;;;
                                  -181760;24;0;false;false;0;0;0;;;
                                  -181784;3;0;false;false;;;;;;
                                  -181787;1;0;false;false;0;0;0;;;
                                  -181788;3;0;false;false;;;;;;
                                  -181791;49;0;false;false;63;127;95;;;
                                  -181840;1;0;false;false;;;;;;
                                  -181841;2;1;false;false;127;0;85;;;
                                  -181843;1;0;false;false;;;;;;
                                  -181844;18;0;false;false;0;0;0;;;
                                  -181862;1;0;false;false;;;;;;
                                  -181863;2;0;false;false;0;0;0;;;
                                  -181865;1;0;false;false;;;;;;
                                  -181866;4;1;false;false;127;0;85;;;
                                  -181870;1;0;false;false;0;0;0;;;
                                  -181871;1;0;false;false;;;;;;
                                  -181872;1;0;false;false;0;0;0;;;
                                  -181873;4;0;false;false;;;;;;
                                  -181877;38;0;false;false;0;0;0;;;
                                  -181915;3;0;false;false;;;;;;
                                  -181918;1;0;false;false;0;0;0;;;
                                  -181919;6;0;false;false;;;;;;
                                  -181925;77;0;false;false;63;127;95;;;
                                  -182002;1;0;false;false;;;;;;
                                  -182003;70;0;false;false;63;127;95;;;
                                  -182073;1;0;false;false;;;;;;
                                  -182074;74;0;false;false;63;127;95;;;
                                  -182148;1;0;false;false;;;;;;
                                  -182149;17;0;false;false;63;127;95;;;
                                  -182166;1;0;false;false;;;;;;
                                  -182167;3;1;false;false;127;0;85;;;
                                  -182170;1;0;false;false;;;;;;
                                  -182171;12;0;false;false;0;0;0;;;
                                  -182183;1;0;false;false;;;;;;
                                  -182184;1;0;false;false;0;0;0;;;
                                  -182185;1;0;false;false;;;;;;
                                  -182186;22;0;false;false;0;0;0;;;
                                  -182208;1;0;false;false;;;;;;
                                  -182209;1;0;false;false;0;0;0;;;
                                  -182210;1;0;false;false;;;;;;
                                  -182211;22;0;false;false;0;0;0;;;
                                  -182233;1;0;false;false;;;;;;
                                  -182234;1;0;false;false;0;0;0;;;
                                  -182235;1;0;false;false;;;;;;
                                  -182236;19;0;false;false;0;0;0;;;
                                  -182255;3;0;false;false;;;;;;
                                  -182258;2;1;false;false;127;0;85;;;
                                  -182260;1;0;false;false;;;;;;
                                  -182261;12;0;false;false;0;0;0;;;
                                  -182273;1;0;false;false;;;;;;
                                  -182274;1;0;false;false;0;0;0;;;
                                  -182275;1;0;false;false;;;;;;
                                  -182276;13;0;false;false;0;0;0;;;
                                  -182289;1;0;false;false;;;;;;
                                  -182290;11;0;false;false;0;0;0;;;
                                  -182301;1;0;false;false;;;;;;
                                  -182302;1;0;false;false;0;0;0;;;
                                  -182303;1;0;false;false;;;;;;
                                  -182304;13;0;false;false;0;0;0;;;
                                  -182317;2;0;false;false;;;;;;
                                  -182319;1;0;false;false;0;0;0;;;
                                  -182320;2;0;false;false;;;;;;
                                  -182322;3;0;false;false;63;95;191;;;
                                  -182325;3;0;false;false;;;;;;
                                  -182328;1;0;false;false;63;95;191;;;
                                  -182329;1;0;false;false;;;;;;
                                  -182330;6;0;false;false;63;95;191;;;
                                  -182336;1;0;false;false;;;;;;
                                  -182337;4;0;false;false;63;95;191;;;
                                  -182341;1;0;false;false;;;;;;
                                  -182342;3;0;false;false;63;95;191;;;
                                  -182345;1;0;false;false;;;;;;
                                  -182346;6;0;false;false;63;95;191;;;
                                  -182352;1;0;false;false;;;;;;
                                  -182353;7;0;false;false;63;95;191;;;
                                  -182360;1;0;false;false;;;;;;
                                  -182361;2;0;false;false;63;95;191;;;
                                  -182363;1;0;false;false;;;;;;
                                  -182364;3;0;false;false;63;95;191;;;
                                  -182367;1;0;false;false;;;;;;
                                  -182368;16;0;false;false;63;95;191;;;
                                  -182384;1;0;false;false;;;;;;
                                  -182385;11;0;false;false;63;95;191;;;
                                  -182396;4;0;false;false;;;;;;
                                  -182400;1;0;false;false;63;95;191;;;
                                  -182401;1;0;false;false;;;;;;
                                  -182402;3;0;false;false;63;95;191;;;
                                  -182405;1;0;false;false;;;;;;
                                  -182406;3;0;false;false;63;95;191;;;
                                  -182409;1;0;false;false;;;;;;
                                  -182410;8;0;false;false;63;95;191;;;
                                  -182418;1;0;false;false;;;;;;
                                  -182419;6;0;false;false;63;95;191;;;
                                  -182425;1;0;false;false;;;;;;
                                  -182426;3;0;false;false;63;95;191;;;
                                  -182429;1;0;false;false;;;;;;
                                  -182430;5;0;false;false;63;95;191;;;
                                  -182435;1;0;false;false;;;;;;
                                  -182436;9;0;false;false;63;95;191;;;
                                  -182445;1;0;false;false;;;;;;
                                  -182446;9;0;false;false;63;95;191;;;
                                  -182455;1;0;false;false;;;;;;
                                  -182456;3;0;false;false;63;95;191;;;
                                  -182459;1;0;false;false;;;;;;
                                  -182460;6;0;false;false;63;95;191;;;
                                  -182466;1;0;false;false;;;;;;
                                  -182467;8;0;false;false;63;95;191;;;
                                  -182475;4;0;false;false;;;;;;
                                  -182479;1;0;false;false;63;95;191;;;
                                  -182480;1;0;false;false;;;;;;
                                  -182481;12;0;false;false;63;95;191;;;
                                  -182493;1;0;false;false;;;;;;
                                  -182494;3;0;false;false;63;95;191;;;
                                  -182497;1;0;false;false;;;;;;
                                  -182498;7;0;false;false;63;95;191;;;
                                  -182505;1;0;false;false;;;;;;
                                  -182506;5;0;false;false;63;95;191;;;
                                  -182511;1;0;false;false;;;;;;
                                  -182512;3;0;false;false;63;95;191;;;
                                  -182515;1;0;false;false;;;;;;
                                  -182516;6;0;false;false;63;95;191;;;
                                  -182522;1;0;false;false;;;;;;
                                  -182523;5;0;false;false;63;95;191;;;
                                  -182528;1;0;false;false;;;;;;
                                  -182529;7;0;false;false;63;95;191;;;
                                  -182536;1;0;false;false;;;;;;
                                  -182537;3;0;false;false;63;95;191;;;
                                  -182540;1;0;false;false;;;;;;
                                  -182541;7;0;false;false;63;95;191;;;
                                  -182548;3;0;false;false;;;;;;
                                  -182551;1;0;false;false;63;95;191;;;
                                  -182552;1;0;false;false;;;;;;
                                  -182553;3;0;false;false;127;127;159;;;
                                  -182556;3;0;false;false;;;;;;
                                  -182559;1;0;false;false;63;95;191;;;
                                  -182560;3;0;false;false;;;;;;
                                  -182563;1;0;false;false;63;95;191;;;
                                  -182564;1;0;false;false;;;;;;
                                  -182565;7;1;false;false;127;159;191;;;
                                  -182572;5;0;false;false;63;95;191;;;
                                  -182577;1;0;false;false;;;;;;
                                  -182578;4;0;false;false;63;95;191;;;
                                  -182582;1;0;false;false;;;;;;
                                  -182583;6;0;false;false;63;95;191;;;
                                  -182589;1;0;false;false;;;;;;
                                  -182590;6;0;false;false;63;95;191;;;
                                  -182596;4;0;false;false;;;;;;
                                  -182600;2;0;false;false;63;95;191;;;
                                  -182602;2;0;false;false;;;;;;
                                  -182604;4;1;false;false;127;0;85;;;
                                  -182608;1;0;false;false;;;;;;
                                  -182609;30;0;false;false;0;0;0;;;
                                  -182639;1;0;false;false;;;;;;
                                  -182640;6;0;false;false;0;0;0;;;
                                  -182646;1;0;false;false;;;;;;
                                  -182647;1;0;false;false;0;0;0;;;
                                  -182648;3;0;false;false;;;;;;
                                  -182651;8;0;false;false;0;0;0;;;
                                  -182659;2;0;false;false;;;;;;
                                  -182661;1;0;false;false;0;0;0;;;
                                  -182662;2;0;false;false;;;;;;
                                  -182664;3;0;false;false;63;95;191;;;
                                  -182667;3;0;false;false;;;;;;
                                  -182670;1;0;false;false;63;95;191;;;
                                  -182671;1;0;false;false;;;;;;
                                  -182672;6;0;false;false;63;95;191;;;
                                  -182678;1;0;false;false;;;;;;
                                  -182679;4;0;false;false;63;95;191;;;
                                  -182683;1;0;false;false;;;;;;
                                  -182684;1;0;false;false;63;95;191;;;
                                  -182685;1;0;false;false;;;;;;
                                  -182686;9;0;false;false;63;95;191;;;
                                  -182695;1;0;false;false;;;;;;
                                  -182696;3;0;false;false;63;95;191;;;
                                  -182699;1;0;false;false;;;;;;
                                  -182700;2;0;false;false;63;95;191;;;
                                  -182702;1;0;false;false;;;;;;
                                  -182703;8;0;false;false;63;95;191;;;
                                  -182711;3;0;false;false;;;;;;
                                  -182714;1;0;false;false;63;95;191;;;
                                  -182715;1;0;false;false;;;;;;
                                  -182716;5;0;false;false;63;95;191;;;
                                  -182721;1;0;false;false;;;;;;
                                  -182722;3;0;false;false;63;95;191;;;
                                  -182725;1;0;false;false;;;;;;
                                  -182726;4;0;false;false;63;95;191;;;
                                  -182730;1;0;false;false;;;;;;
                                  -182731;9;0;false;false;63;95;191;;;
                                  -182740;1;0;false;false;;;;;;
                                  -182741;2;0;false;false;63;95;191;;;
                                  -182743;1;0;false;false;;;;;;
                                  -182744;5;0;false;false;63;95;191;;;
                                  -182749;1;0;false;false;;;;;;
                                  -182750;4;0;false;false;63;95;191;;;
                                  -182754;1;0;false;false;;;;;;
                                  -182755;3;0;false;false;63;95;191;;;
                                  -182758;1;0;false;false;;;;;;
                                  -182759;6;0;false;false;63;95;191;;;
                                  -182765;1;0;false;false;;;;;;
                                  -182766;2;0;false;false;63;95;191;;;
                                  -182768;1;0;false;false;;;;;;
                                  -182769;2;0;false;false;63;95;191;;;
                                  -182771;1;0;false;false;;;;;;
                                  -182772;6;0;false;false;63;95;191;;;
                                  -182778;4;0;false;false;;;;;;
                                  -182782;1;0;false;false;63;95;191;;;
                                  -182783;1;0;false;false;;;;;;
                                  -182784;4;0;false;false;63;95;191;;;
                                  -182788;1;0;false;false;;;;;;
                                  -182789;4;0;false;false;63;95;191;;;
                                  -182793;1;0;false;false;;;;;;
                                  -182794;2;0;false;false;63;95;191;;;
                                  -182796;1;0;false;false;;;;;;
                                  -182797;2;0;false;false;63;95;191;;;
                                  -182799;1;0;false;false;;;;;;
                                  -182800;5;0;false;false;63;95;191;;;
                                  -182805;1;0;false;false;;;;;;
                                  -182806;4;0;false;false;63;95;191;;;
                                  -182810;1;0;false;false;;;;;;
                                  -182811;3;0;false;false;63;95;191;;;
                                  -182814;1;0;false;false;;;;;;
                                  -182815;3;0;false;false;63;95;191;;;
                                  -182818;1;0;false;false;127;127;159;;;
                                  -182819;8;0;false;false;63;95;191;;;
                                  -182827;1;0;false;false;;;;;;
                                  -182828;4;0;false;false;63;95;191;;;
                                  -182832;1;0;false;false;;;;;;
                                  -182833;1;0;false;false;63;95;191;;;
                                  -182834;4;0;false;false;;;;;;
                                  -182838;1;0;false;false;63;95;191;;;
                                  -182839;1;0;false;false;;;;;;
                                  -182840;4;0;false;false;63;95;191;;;
                                  -182844;1;0;false;false;;;;;;
                                  -182845;2;0;false;false;63;95;191;;;
                                  -182847;1;0;false;false;;;;;;
                                  -182848;8;0;false;false;63;95;191;;;
                                  -182856;1;0;false;false;;;;;;
                                  -182857;5;0;false;false;63;95;191;;;
                                  -182862;1;0;false;false;;;;;;
                                  -182863;4;0;false;false;63;95;191;;;
                                  -182867;1;0;false;false;;;;;;
                                  -182868;4;0;false;false;63;95;191;;;
                                  -182872;1;0;false;false;;;;;;
                                  -182873;2;0;false;false;63;95;191;;;
                                  -182875;1;0;false;false;;;;;;
                                  -182876;4;0;false;false;63;95;191;;;
                                  -182880;1;0;false;false;;;;;;
                                  -182881;2;0;false;false;63;95;191;;;
                                  -182883;1;0;false;false;;;;;;
                                  -182884;7;0;false;false;63;95;191;;;
                                  -182891;1;0;false;false;;;;;;
                                  -182892;3;0;false;false;63;95;191;;;
                                  -182895;1;0;false;false;;;;;;
                                  -182896;3;0;false;false;63;95;191;;;
                                  -182899;4;0;false;false;;;;;;
                                  -182903;1;0;false;false;63;95;191;;;
                                  -182904;1;0;false;false;;;;;;
                                  -182905;9;0;false;false;63;95;191;;;
                                  -182914;1;0;false;false;;;;;;
                                  -182915;3;0;false;false;63;95;191;;;
                                  -182918;1;0;false;false;;;;;;
                                  -182919;7;0;false;false;63;95;191;;;
                                  -182926;1;0;false;false;;;;;;
                                  -182927;3;0;false;false;63;95;191;;;
                                  -182930;1;0;false;false;;;;;;
                                  -182931;3;0;false;false;63;95;191;;;
                                  -182934;1;0;false;false;;;;;;
                                  -182935;3;0;false;false;63;95;191;;;
                                  -182938;1;0;false;false;;;;;;
                                  -182939;5;0;false;false;63;95;191;;;
                                  -182944;1;0;false;false;;;;;;
                                  -182945;8;0;false;false;63;95;191;;;
                                  -182953;3;0;false;false;;;;;;
                                  -182956;1;0;false;false;63;95;191;;;
                                  -182957;1;0;false;false;;;;;;
                                  -182958;3;0;false;false;127;127;159;;;
                                  -182961;3;0;false;false;;;;;;
                                  -182964;1;0;false;false;63;95;191;;;
                                  -182965;3;0;false;false;;;;;;
                                  -182968;1;0;false;false;63;95;191;;;
                                  -182969;1;0;false;false;;;;;;
                                  -182970;7;1;false;false;127;159;191;;;
                                  -182977;5;0;false;false;63;95;191;;;
                                  -182982;1;0;false;false;;;;;;
                                  -182983;3;0;false;false;63;95;191;;;
                                  -182986;1;0;false;false;;;;;;
                                  -182987;5;0;false;false;63;95;191;;;
                                  -182992;3;0;false;false;;;;;;
                                  -182995;2;0;false;false;63;95;191;;;
                                  -182997;2;0;false;false;;;;;;
                                  -182999;4;1;false;false;127;0;85;;;
                                  -183003;1;0;false;false;;;;;;
                                  -183004;20;0;false;false;0;0;0;;;
                                  -183024;1;0;false;false;;;;;;
                                  -183025;6;0;false;false;0;0;0;;;
                                  -183031;1;0;false;false;;;;;;
                                  -183032;1;0;false;false;0;0;0;;;
                                  -183033;3;0;false;false;;;;;;
                                  -183036;6;1;false;false;127;0;85;;;
                                  -183042;1;0;false;false;;;;;;
                                  -183043;14;0;false;false;0;0;0;;;
                                  -183057;1;0;false;false;;;;;;
                                  -183058;1;0;false;false;0;0;0;;;
                                  -183059;4;0;false;false;;;;;;
                                  -183063;4;1;false;false;127;0;85;;;
                                  -183067;1;0;false;false;;;;;;
                                  -183068;20;0;false;false;0;0;0;;;
                                  -183088;4;0;false;false;;;;;;
                                  -183092;4;1;false;false;127;0;85;;;
                                  -183096;1;0;false;false;;;;;;
                                  -183097;23;0;false;false;0;0;0;;;
                                  -183120;4;0;false;false;;;;;;
                                  -183124;4;1;false;false;127;0;85;;;
                                  -183128;1;0;false;false;;;;;;
                                  -183129;27;0;false;false;0;0;0;;;
                                  -183156;5;0;false;false;;;;;;
                                  -183161;10;0;false;false;0;0;0;;;
                                  -183171;1;0;false;false;;;;;;
                                  -183172;1;0;false;false;0;0;0;;;
                                  -183173;1;0;false;false;;;;;;
                                  -183174;4;1;false;false;127;0;85;;;
                                  -183178;1;0;false;false;0;0;0;;;
                                  -183179;5;0;false;false;;;;;;
                                  -183184;5;1;false;false;127;0;85;;;
                                  -183189;1;0;false;false;0;0;0;;;
                                  -183190;4;0;false;false;;;;;;
                                  -183194;4;1;false;false;127;0;85;;;
                                  -183198;1;0;false;false;;;;;;
                                  -183199;20;0;false;false;0;0;0;;;
                                  -183219;4;0;false;false;;;;;;
                                  -183223;4;1;false;false;127;0;85;;;
                                  -183227;1;0;false;false;;;;;;
                                  -183228;22;0;false;false;0;0;0;;;
                                  -183250;4;0;false;false;;;;;;
                                  -183254;4;1;false;false;127;0;85;;;
                                  -183258;1;0;false;false;;;;;;
                                  -183259;26;0;false;false;0;0;0;;;
                                  -183285;5;0;false;false;;;;;;
                                  -183290;2;1;false;false;127;0;85;;;
                                  -183292;1;0;false;false;;;;;;
                                  -183293;12;0;false;false;0;0;0;;;
                                  -183305;1;0;false;false;;;;;;
                                  -183306;1;0;false;false;0;0;0;;;
                                  -183307;1;0;false;false;;;;;;
                                  -183308;11;0;false;false;0;0;0;;;
                                  -183319;1;0;false;false;;;;;;
                                  -183320;2;0;false;false;0;0;0;;;
                                  -183322;1;0;false;false;;;;;;
                                  -183323;2;0;false;false;0;0;0;;;
                                  -183325;1;0;false;false;;;;;;
                                  -183326;1;0;false;false;0;0;0;;;
                                  -183327;6;0;false;false;;;;;;
                                  -183333;10;0;false;false;0;0;0;;;
                                  -183343;1;0;false;false;;;;;;
                                  -183344;1;0;false;false;0;0;0;;;
                                  -183345;1;0;false;false;;;;;;
                                  -183346;4;1;false;false;127;0;85;;;
                                  -183350;1;0;false;false;0;0;0;;;
                                  -183351;5;0;false;false;;;;;;
                                  -183356;1;0;false;false;0;0;0;;;
                                  -183357;1;0;false;false;;;;;;
                                  -183358;4;1;false;false;127;0;85;;;
                                  -183362;1;0;false;false;;;;;;
                                  -183363;1;0;false;false;0;0;0;;;
                                  -183364;6;0;false;false;;;;;;
                                  -183370;2;1;false;false;127;0;85;;;
                                  -183372;1;0;false;false;;;;;;
                                  -183373;10;0;false;false;0;0;0;;;
                                  -183383;1;0;false;false;;;;;;
                                  -183384;2;0;false;false;0;0;0;;;
                                  -183386;1;0;false;false;;;;;;
                                  -183387;16;0;false;false;0;0;0;;;
                                  -183403;1;0;false;false;;;;;;
                                  -183404;1;0;false;false;0;0;0;;;
                                  -183405;1;0;false;false;;;;;;
                                  -183406;18;0;false;false;0;0;0;;;
                                  -183424;1;0;false;false;;;;;;
                                  -183425;2;0;false;false;0;0;0;;;
                                  -183427;1;0;false;false;;;;;;
                                  -183428;2;0;false;false;0;0;0;;;
                                  -183430;1;0;false;false;;;;;;
                                  -183431;1;0;false;false;0;0;0;;;
                                  -183432;7;0;false;false;;;;;;
                                  -183439;10;0;false;false;0;0;0;;;
                                  -183449;1;0;false;false;;;;;;
                                  -183450;1;0;false;false;0;0;0;;;
                                  -183451;1;0;false;false;;;;;;
                                  -183452;4;1;false;false;127;0;85;;;
                                  -183456;1;0;false;false;0;0;0;;;
                                  -183457;6;0;false;false;;;;;;
                                  -183463;1;0;false;false;0;0;0;;;
                                  -183464;5;0;false;false;;;;;;
                                  -183469;1;0;false;false;0;0;0;;;
                                  -183470;5;0;false;false;;;;;;
                                  -183475;5;1;false;false;127;0;85;;;
                                  -183480;1;0;false;false;0;0;0;;;
                                  -183481;3;0;false;false;;;;;;
                                  -183484;1;0;false;false;0;0;0;;;
                                  -183485;2;0;false;false;;;;;;
                                  -183487;1;0;false;false;0;0;0;;;
                                  -183488;2;0;false;false;;;;;;
                                  -183490;3;0;false;false;63;95;191;;;
                                  -183493;4;0;false;false;;;;;;
                                  -183497;1;0;false;false;63;95;191;;;
                                  -183498;1;0;false;false;;;;;;
                                  -183499;7;0;false;false;63;95;191;;;
                                  -183506;1;0;false;false;;;;;;
                                  -183507;3;0;false;false;63;95;191;;;
                                  -183510;1;0;false;false;;;;;;
                                  -183511;6;0;false;false;63;95;191;;;
                                  -183517;1;0;false;false;;;;;;
                                  -183518;11;0;false;false;63;95;191;;;
                                  -183529;3;0;false;false;;;;;;
                                  -183532;2;0;false;false;63;95;191;;;
                                  -183534;2;0;false;false;;;;;;
                                  -183536;4;1;false;false;127;0;85;;;
                                  -183540;1;0;false;false;;;;;;
                                  -183541;26;0;false;false;0;0;0;;;
                                  -183567;1;0;false;false;;;;;;
                                  -183568;6;0;false;false;0;0;0;;;
                                  -183574;1;0;false;false;;;;;;
                                  -183575;1;0;false;false;0;0;0;;;
                                  -183576;3;0;false;false;;;;;;
                                  -183579;56;0;false;false;0;0;0;;;
                                  -183635;1;0;false;false;;;;;;
                                  -183636;5;1;false;false;127;0;85;;;
                                  -183641;2;0;false;false;0;0;0;;;
                                  -183643;2;0;false;false;;;;;;
                                  -183645;1;0;false;false;0;0;0;;;
                                  -183646;2;0;false;false;;;;;;
                                  -183648;3;0;false;false;63;95;191;;;
                                  -183651;3;0;false;false;;;;;;
                                  -183654;1;0;false;false;63;95;191;;;
                                  -183655;1;0;false;false;;;;;;
                                  -183656;3;0;false;false;63;95;191;;;
                                  -183659;1;0;false;false;;;;;;
                                  -183660;13;0;false;false;63;95;191;;;
                                  -183673;1;0;false;false;;;;;;
                                  -183674;7;0;false;false;63;95;191;;;
                                  -183681;1;0;false;false;;;;;;
                                  -183682;3;0;false;false;63;95;191;;;
                                  -183685;1;0;false;false;;;;;;
                                  -183686;3;0;false;false;63;95;191;;;
                                  -183689;1;0;false;false;;;;;;
                                  -183690;7;0;false;false;63;95;191;;;
                                  -183697;3;0;false;false;;;;;;
                                  -183700;2;0;false;false;63;95;191;;;
                                  -183702;2;0;false;false;;;;;;
                                  -183704;4;1;false;false;127;0;85;;;
                                  -183708;1;0;false;false;;;;;;
                                  -183709;22;0;false;false;0;0;0;;;
                                  -183731;1;0;false;false;;;;;;
                                  -183732;1;0;false;false;0;0;0;;;
                                  -183733;3;0;false;false;;;;;;
                                  -183736;5;1;false;false;127;0;85;;;
                                  -183741;1;0;false;false;;;;;;
                                  -183742;10;0;false;false;0;0;0;;;
                                  -183752;1;0;false;false;;;;;;
                                  -183753;10;0;false;false;0;0;0;;;
                                  -183763;1;0;false;false;;;;;;
                                  -183764;1;0;false;false;0;0;0;;;
                                  -183765;1;0;false;false;;;;;;
                                  -183766;16;0;false;false;0;0;0;;;
                                  -183782;3;0;false;false;;;;;;
                                  -183785;33;0;false;false;0;0;0;;;
                                  -183818;3;1;false;false;127;0;85;;;
                                  -183821;1;0;false;false;;;;;;
                                  -183822;19;0;false;false;0;0;0;;;
                                  -183841;1;0;false;false;;;;;;
                                  -183842;1;0;false;false;0;0;0;;;
                                  -183843;4;0;false;false;;;;;;
                                  -183847;6;1;false;false;127;0;85;;;
                                  -183853;1;0;false;false;;;;;;
                                  -183854;4;1;false;false;127;0;85;;;
                                  -183858;1;0;false;false;;;;;;
                                  -183859;23;0;false;false;0;0;0;;;
                                  -183882;1;0;false;false;;;;;;
                                  -183883;2;0;false;false;0;0;0;;;
                                  -183885;1;0;false;false;;;;;;
                                  -183886;1;0;false;false;0;0;0;;;
                                  -183887;5;0;false;false;;;;;;
                                  -183892;8;0;false;false;0;0;0;;;
                                  -183900;1;0;false;false;;;;;;
                                  -183901;1;0;false;false;0;0;0;;;
                                  -183902;1;0;false;false;;;;;;
                                  -183903;17;0;false;false;0;0;0;;;
                                  -183920;4;0;false;false;;;;;;
                                  -183924;1;0;false;false;0;0;0;;;
                                  -183925;3;0;false;false;;;;;;
                                  -183928;3;0;false;false;0;0;0;;;
                                  -183931;3;0;false;false;;;;;;
                                  -183934;37;0;false;false;0;0;0;;;
                                  -183971;3;1;false;false;127;0;85;;;
                                  -183974;1;0;false;false;;;;;;
                                  -183975;23;0;false;false;0;0;0;;;
                                  -183998;1;0;false;false;;;;;;
                                  -183999;1;0;false;false;0;0;0;;;
                                  -184000;4;0;false;false;;;;;;
                                  -184004;6;1;false;false;127;0;85;;;
                                  -184010;1;0;false;false;;;;;;
                                  -184011;4;1;false;false;127;0;85;;;
                                  -184015;1;0;false;false;;;;;;
                                  -184016;34;0;false;false;0;0;0;;;
                                  -184050;1;0;false;false;;;;;;
                                  -184051;2;0;false;false;0;0;0;;;
                                  -184053;1;0;false;false;;;;;;
                                  -184054;1;0;false;false;0;0;0;;;
                                  -184055;5;0;false;false;;;;;;
                                  -184060;8;0;false;false;0;0;0;;;
                                  -184068;1;0;false;false;;;;;;
                                  -184069;1;0;false;false;0;0;0;;;
                                  -184070;1;0;false;false;;;;;;
                                  -184071;11;0;false;false;0;0;0;;;
                                  -184082;4;1;false;false;127;0;85;;;
                                  -184086;18;0;false;false;0;0;0;;;
                                  -184104;4;0;false;false;;;;;;
                                  -184108;1;0;false;false;0;0;0;;;
                                  -184109;4;0;false;false;;;;;;
                                  -184113;6;1;false;false;127;0;85;;;
                                  -184119;1;0;false;false;;;;;;
                                  -184120;4;1;false;false;127;0;85;;;
                                  -184124;1;0;false;false;;;;;;
                                  -184125;37;0;false;false;0;0;0;;;
                                  -184162;1;0;false;false;;;;;;
                                  -184163;2;0;false;false;0;0;0;;;
                                  -184165;1;0;false;false;;;;;;
                                  -184166;1;0;false;false;0;0;0;;;
                                  -184167;5;0;false;false;;;;;;
                                  -184172;5;0;false;false;0;0;0;;;
                                  -184177;1;0;false;false;;;;;;
                                  -184178;9;0;false;false;0;0;0;;;
                                  -184187;1;0;false;false;;;;;;
                                  -184188;1;0;false;false;0;0;0;;;
                                  -184189;1;0;false;false;;;;;;
                                  -184190;11;0;false;false;0;0;0;;;
                                  -184201;4;1;false;false;127;0;85;;;
                                  -184205;21;0;false;false;0;0;0;;;
                                  -184226;5;0;false;false;;;;;;
                                  -184231;8;0;false;false;0;0;0;;;
                                  -184239;1;0;false;false;;;;;;
                                  -184240;1;0;false;false;0;0;0;;;
                                  -184241;1;0;false;false;;;;;;
                                  -184242;12;0;false;false;0;0;0;;;
                                  -184254;5;0;false;false;;;;;;
                                  -184259;8;0;false;false;0;0;0;;;
                                  -184267;1;0;false;false;;;;;;
                                  -184268;1;0;false;false;0;0;0;;;
                                  -184269;1;0;false;false;;;;;;
                                  -184270;12;0;false;false;0;0;0;;;
                                  -184282;4;0;false;false;;;;;;
                                  -184286;1;0;false;false;0;0;0;;;
                                  -184287;3;0;false;false;;;;;;
                                  -184290;3;0;false;false;0;0;0;;;
                                  -184293;3;0;false;false;;;;;;
                                  -184296;40;0;false;false;0;0;0;;;
                                  -184336;3;1;false;false;127;0;85;;;
                                  -184339;1;0;false;false;;;;;;
                                  -184340;26;0;false;false;0;0;0;;;
                                  -184366;1;0;false;false;;;;;;
                                  -184367;1;0;false;false;0;0;0;;;
                                  -184368;4;0;false;false;;;;;;
                                  -184372;6;1;false;false;127;0;85;;;
                                  -184378;1;0;false;false;;;;;;
                                  -184379;4;1;false;false;127;0;85;;;
                                  -184383;1;0;false;false;;;;;;
                                  -184384;30;0;false;false;0;0;0;;;
                                  -184414;1;0;false;false;;;;;;
                                  -184415;2;0;false;false;0;0;0;;;
                                  -184417;1;0;false;false;;;;;;
                                  -184418;1;0;false;false;0;0;0;;;
                                  -184419;5;0;false;false;;;;;;
                                  -184424;8;0;false;false;0;0;0;;;
                                  -184432;1;0;false;false;;;;;;
                                  -184433;1;0;false;false;0;0;0;;;
                                  -184434;1;0;false;false;;;;;;
                                  -184435;14;0;false;false;0;0;0;;;
                                  -184449;4;0;false;false;;;;;;
                                  -184453;1;0;false;false;0;0;0;;;
                                  -184454;4;0;false;false;;;;;;
                                  -184458;6;1;false;false;127;0;85;;;
                                  -184464;1;0;false;false;;;;;;
                                  -184465;4;1;false;false;127;0;85;;;
                                  -184469;1;0;false;false;;;;;;
                                  -184470;31;0;false;false;0;0;0;;;
                                  -184501;1;0;false;false;;;;;;
                                  -184502;2;0;false;false;0;0;0;;;
                                  -184504;1;0;false;false;;;;;;
                                  -184505;1;0;false;false;0;0;0;;;
                                  -184506;5;0;false;false;;;;;;
                                  -184511;3;1;false;false;127;0;85;;;
                                  -184514;1;0;false;false;;;;;;
                                  -184515;5;0;false;false;0;0;0;;;
                                  -184520;1;0;false;false;;;;;;
                                  -184521;1;0;false;false;0;0;0;;;
                                  -184522;1;0;false;false;;;;;;
                                  -184523;2;0;false;false;0;0;0;;;
                                  -184525;5;0;false;false;;;;;;
                                  -184530;2;1;false;false;127;0;85;;;
                                  -184532;1;0;false;false;;;;;;
                                  -184533;13;0;false;false;0;0;0;;;
                                  -184546;1;0;false;false;;;;;;
                                  -184547;5;0;false;false;0;0;0;;;
                                  -184552;1;0;false;false;;;;;;
                                  -184553;2;0;false;false;0;0;0;;;
                                  -184555;1;0;false;false;;;;;;
                                  -184556;20;0;false;false;0;0;0;;;
                                  -184576;5;0;false;false;;;;;;
                                  -184581;2;1;false;false;127;0;85;;;
                                  -184583;1;0;false;false;;;;;;
                                  -184584;18;0;false;false;0;0;0;;;
                                  -184602;1;0;false;false;;;;;;
                                  -184603;5;0;false;false;0;0;0;;;
                                  -184608;1;0;false;false;;;;;;
                                  -184609;2;0;false;false;0;0;0;;;
                                  -184611;1;0;false;false;;;;;;
                                  -184612;18;0;false;false;0;0;0;;;
                                  -184630;5;0;false;false;;;;;;
                                  -184635;2;1;false;false;127;0;85;;;
                                  -184637;1;0;false;false;;;;;;
                                  -184638;14;0;false;false;0;0;0;;;
                                  -184652;1;0;false;false;;;;;;
                                  -184653;5;0;false;false;0;0;0;;;
                                  -184658;1;0;false;false;;;;;;
                                  -184659;2;0;false;false;0;0;0;;;
                                  -184661;1;0;false;false;;;;;;
                                  -184662;20;0;false;false;0;0;0;;;
                                  -184682;5;0;false;false;;;;;;
                                  -184687;2;1;false;false;127;0;85;;;
                                  -184689;1;0;false;false;;;;;;
                                  -184690;16;0;false;false;0;0;0;;;
                                  -184706;1;0;false;false;;;;;;
                                  -184707;5;0;false;false;0;0;0;;;
                                  -184712;1;0;false;false;;;;;;
                                  -184713;2;0;false;false;0;0;0;;;
                                  -184715;1;0;false;false;;;;;;
                                  -184716;19;0;false;false;0;0;0;;;
                                  -184735;5;0;false;false;;;;;;
                                  -184740;8;0;false;false;0;0;0;;;
                                  -184748;1;0;false;false;;;;;;
                                  -184749;1;0;false;false;0;0;0;;;
                                  -184750;1;0;false;false;;;;;;
                                  -184751;6;0;false;false;0;0;0;;;
                                  -184757;4;0;false;false;;;;;;
                                  -184761;1;0;false;false;0;0;0;;;
                                  -184762;4;0;false;false;;;;;;
                                  -184766;6;1;false;false;127;0;85;;;
                                  -184772;1;0;false;false;;;;;;
                                  -184773;4;1;false;false;127;0;85;;;
                                  -184777;1;0;false;false;;;;;;
                                  -184778;31;0;false;false;0;0;0;;;
                                  -184809;1;0;false;false;;;;;;
                                  -184810;2;0;false;false;0;0;0;;;
                                  -184812;1;0;false;false;;;;;;
                                  -184813;1;0;false;false;0;0;0;;;
                                  -184814;5;0;false;false;;;;;;
                                  -184819;8;0;false;false;0;0;0;;;
                                  -184827;1;0;false;false;;;;;;
                                  -184828;1;0;false;false;0;0;0;;;
                                  -184829;1;0;false;false;;;;;;
                                  -184830;11;0;false;false;0;0;0;;;
                                  -184841;4;1;false;false;127;0;85;;;
                                  -184845;11;0;false;false;0;0;0;;;
                                  -184856;4;0;false;false;;;;;;
                                  -184860;1;0;false;false;0;0;0;;;
                                  -184861;3;0;false;false;;;;;;
                                  -184864;3;0;false;false;0;0;0;;;
                                  -184867;5;0;false;false;;;;;;
                                  -184872;24;0;false;false;0;0;0;;;
                                  -184896;1;0;false;false;;;;;;
                                  -184897;3;1;false;false;127;0;85;;;
                                  -184900;1;0;false;false;;;;;;
                                  -184901;10;0;false;false;0;0;0;;;
                                  -184911;1;0;false;false;;;;;;
                                  -184912;1;0;false;false;0;0;0;;;
                                  -184913;4;0;false;false;;;;;;
                                  -184917;6;1;false;false;127;0;85;;;
                                  -184923;1;0;false;false;;;;;;
                                  -184924;4;1;false;false;127;0;85;;;
                                  -184928;1;0;false;false;;;;;;
                                  -184929;17;0;false;false;0;0;0;;;
                                  -184946;1;0;false;false;;;;;;
                                  -184947;6;0;false;false;0;0;0;;;
                                  -184953;1;0;false;false;;;;;;
                                  -184954;1;0;false;false;0;0;0;;;
                                  -184955;5;0;false;false;;;;;;
                                  -184960;38;0;false;false;0;0;0;;;
                                  -184998;4;0;false;false;;;;;;
                                  -185002;1;0;false;false;0;0;0;;;
                                  -185003;3;0;false;false;;;;;;
                                  -185006;3;0;false;false;0;0;0;;;
                                  -185009;2;0;false;false;;;;;;
                                  -185011;1;0;false;false;0;0;0;;;
                                  -185012;2;0;false;false;;;;;;
                                  -185014;3;0;false;false;63;95;191;;;
                                  -185017;4;0;false;false;;;;;;
                                  -185021;1;0;false;false;63;95;191;;;
                                  -185022;1;0;false;false;;;;;;
                                  -185023;11;0;false;false;63;95;191;;;
                                  -185034;1;0;false;false;;;;;;
                                  -185035;3;0;false;false;63;95;191;;;
                                  -185038;1;0;false;false;;;;;;
                                  -185039;5;0;false;false;63;95;191;;;
                                  -185044;1;0;false;false;;;;;;
                                  -185045;4;0;false;false;63;95;191;;;
                                  -185049;1;0;false;false;;;;;;
                                  -185050;2;0;false;false;63;95;191;;;
                                  -185052;1;0;false;false;;;;;;
                                  -185053;6;0;false;false;63;95;191;;;
                                  -185059;1;0;false;false;;;;;;
                                  -185060;4;0;false;false;63;95;191;;;
                                  -185064;1;0;false;false;;;;;;
                                  -185065;7;0;false;false;63;95;191;;;
                                  -185072;3;0;false;false;;;;;;
                                  -185075;1;0;false;false;63;95;191;;;
                                  -185076;1;0;false;false;;;;;;
                                  -185077;9;0;false;false;63;95;191;;;
                                  -185086;1;0;false;false;;;;;;
                                  -185087;4;0;false;false;63;95;191;;;
                                  -185091;1;0;false;false;;;;;;
                                  -185092;7;0;false;false;63;95;191;;;
                                  -185099;1;0;false;false;;;;;;
                                  -185100;3;0;false;false;63;95;191;;;
                                  -185103;1;0;false;false;;;;;;
                                  -185104;4;0;false;false;63;95;191;;;
                                  -185108;1;0;false;false;;;;;;
                                  -185109;5;0;false;false;63;95;191;;;
                                  -185114;1;0;false;false;;;;;;
                                  -185115;3;0;false;false;63;95;191;;;
                                  -185118;1;0;false;false;;;;;;
                                  -185119;10;0;false;false;63;95;191;;;
                                  -185129;3;0;false;false;;;;;;
                                  -185132;2;0;false;false;63;95;191;;;
                                  -185134;2;0;false;false;;;;;;
                                  -185136;4;1;false;false;127;0;85;;;
                                  -185140;1;0;false;false;;;;;;
                                  -185141;20;0;false;false;0;0;0;;;
                                  -185161;1;0;false;false;;;;;;
                                  -185162;1;0;false;false;0;0;0;;;
                                  -185163;3;0;false;false;;;;;;
                                  -185166;2;1;false;false;127;0;85;;;
                                  -185168;1;0;false;false;;;;;;
                                  -185169;9;0;false;false;0;0;0;;;
                                  -185178;1;0;false;false;;;;;;
                                  -185179;2;0;false;false;0;0;0;;;
                                  -185181;1;0;false;false;;;;;;
                                  -185182;4;1;false;false;127;0;85;;;
                                  -185186;1;0;false;false;0;0;0;;;
                                  -185187;1;0;false;false;;;;;;
                                  -185188;1;0;false;false;0;0;0;;;
                                  -185189;4;0;false;false;;;;;;
                                  -185193;19;0;false;false;0;0;0;;;
                                  -185212;3;0;false;false;;;;;;
                                  -185215;1;0;false;false;0;0;0;;;
                                  -185216;3;0;false;false;;;;;;
                                  -185219;8;0;false;false;0;0;0;;;
                                  -185227;1;0;false;false;;;;;;
                                  -185228;1;0;false;false;0;0;0;;;
                                  -185229;1;0;false;false;;;;;;
                                  -185230;3;1;false;false;127;0;85;;;
                                  -185233;1;0;false;false;;;;;;
                                  -185234;29;0;false;false;0;0;0;;;
                                  -185263;1;0;false;false;;;;;;
                                  -185264;10;0;false;false;0;0;0;;;
                                  -185274;1;0;false;false;;;;;;
                                  -185275;4;1;false;false;127;0;85;;;
                                  -185279;1;0;false;false;0;0;0;;;
                                  -185280;1;0;false;false;;;;;;
                                  -185281;11;0;false;false;0;0;0;;;
                                  -185292;3;0;false;false;;;;;;
                                  -185295;10;0;false;false;0;0;0;;;
                                  -185305;1;0;false;false;;;;;;
                                  -185306;1;0;false;false;0;0;0;;;
                                  -185307;1;0;false;false;;;;;;
                                  -185308;25;0;false;false;0;0;0;;;
                                  -185333;3;0;false;false;;;;;;
                                  -185336;2;1;false;false;127;0;85;;;
                                  -185338;1;0;false;false;;;;;;
                                  -185339;10;0;false;false;0;0;0;;;
                                  -185349;1;0;false;false;;;;;;
                                  -185350;1;0;false;false;0;0;0;;;
                                  -185351;4;0;false;false;;;;;;
                                  -185355;7;0;false;false;0;0;0;;;
                                  -185362;1;0;false;false;;;;;;
                                  -185363;1;0;false;false;0;0;0;;;
                                  -185364;1;0;false;false;;;;;;
                                  -185365;3;1;false;false;127;0;85;;;
                                  -185368;1;0;false;false;;;;;;
                                  -185369;24;0;false;false;0;0;0;;;
                                  -185393;1;0;false;false;;;;;;
                                  -185394;16;0;false;false;0;0;0;;;
                                  -185410;3;0;false;false;;;;;;
                                  -185413;1;0;false;false;0;0;0;;;
                                  -185414;2;0;false;false;;;;;;
                                  -185416;1;0;false;false;0;0;0;;;
                                  -185417;2;0;false;false;;;;;;
                                  -185419;3;0;false;false;63;95;191;;;
                                  -185422;3;0;false;false;;;;;;
                                  -185425;1;0;false;false;63;95;191;;;
                                  -185426;1;0;false;false;;;;;;
                                  -185427;8;0;false;false;63;95;191;;;
                                  -185435;1;0;false;false;;;;;;
                                  -185436;3;0;false;false;63;95;191;;;
                                  -185439;1;0;false;false;;;;;;
                                  -185440;7;0;false;false;63;95;191;;;
                                  -185447;3;0;false;false;;;;;;
                                  -185450;1;0;false;false;63;95;191;;;
                                  -185451;1;0;false;false;;;;;;
                                  -185452;3;0;false;false;127;127;159;;;
                                  -185455;3;0;false;false;;;;;;
                                  -185458;1;0;false;false;63;95;191;;;
                                  -185459;3;0;false;false;;;;;;
                                  -185462;1;0;false;false;63;95;191;;;
                                  -185463;1;0;false;false;;;;;;
                                  -185464;7;1;false;false;127;159;191;;;
                                  -185471;6;0;false;false;63;95;191;;;
                                  -185477;1;0;false;false;;;;;;
                                  -185478;3;0;false;false;63;95;191;;;
                                  -185481;1;0;false;false;;;;;;
                                  -185482;2;0;false;false;63;95;191;;;
                                  -185484;1;0;false;false;;;;;;
                                  -185485;3;0;false;false;63;95;191;;;
                                  -185488;1;0;false;false;;;;;;
                                  -185489;7;0;false;false;63;95;191;;;
                                  -185496;1;0;false;false;;;;;;
                                  -185497;7;0;false;false;63;95;191;;;
                                  -185504;1;0;false;false;;;;;;
                                  -185505;2;0;false;false;63;95;191;;;
                                  -185507;1;0;false;false;;;;;;
                                  -185508;7;0;false;false;63;95;191;;;
                                  -185515;3;0;false;false;;;;;;
                                  -185518;2;0;false;false;63;95;191;;;
                                  -185520;2;0;false;false;;;;;;
                                  -185522;6;1;false;false;127;0;85;;;
                                  -185528;1;0;false;false;;;;;;
                                  -185529;4;1;false;false;127;0;85;;;
                                  -185533;1;0;false;false;;;;;;
                                  -185534;13;0;false;false;0;0;0;;;
                                  -185547;3;1;false;false;127;0;85;;;
                                  -185550;1;0;false;false;;;;;;
                                  -185551;7;0;false;false;0;0;0;;;
                                  -185558;1;0;false;false;;;;;;
                                  -185559;1;0;false;false;0;0;0;;;
                                  -185560;3;0;false;false;;;;;;
                                  -185563;3;1;false;false;127;0;85;;;
                                  -185566;1;0;false;false;;;;;;
                                  -185567;11;0;false;false;0;0;0;;;
                                  -185578;1;0;false;false;;;;;;
                                  -185579;17;0;false;false;0;0;0;;;
                                  -185596;1;0;false;false;;;;;;
                                  -185597;14;0;false;false;0;0;0;;;
                                  -185611;3;0;false;false;;;;;;
                                  -185614;3;1;false;false;127;0;85;;;
                                  -185617;1;0;false;false;;;;;;
                                  -185618;10;0;false;false;0;0;0;;;
                                  -185628;6;0;false;false;;;;;;
                                  -185634;14;0;false;false;0;0;0;;;
                                  -185648;3;0;false;false;;;;;;
                                  -185651;20;0;false;false;0;0;0;;;
                                  -185671;1;0;false;false;;;;;;
                                  -185672;1;0;false;false;0;0;0;;;
                                  -185673;1;0;false;false;;;;;;
                                  -185674;4;1;false;false;127;0;85;;;
                                  -185678;1;0;false;false;0;0;0;;;
                                  -185679;3;0;false;false;;;;;;
                                  -185682;6;1;false;false;127;0;85;;;
                                  -185688;1;0;false;false;;;;;;
                                  -185689;8;0;false;false;0;0;0;;;
                                  -185697;1;0;false;false;;;;;;
                                  -185698;1;0;false;false;0;0;0;;;
                                  -185699;4;0;false;false;;;;;;
                                  -185703;15;0;false;false;63;127;95;;;
                                  -185718;2;0;false;false;;;;;;
                                  -185720;4;1;false;false;127;0;85;;;
                                  -185724;1;0;false;false;;;;;;
                                  -185725;11;0;false;false;0;0;0;;;
                                  -185736;5;0;false;false;;;;;;
                                  -185741;9;0;false;false;0;0;0;;;
                                  -185750;1;0;false;false;;;;;;
                                  -185751;1;0;false;false;0;0;0;;;
                                  -185752;1;0;false;false;;;;;;
                                  -185753;11;0;false;false;0;0;0;;;
                                  -185764;5;0;false;false;;;;;;
                                  -185769;10;0;false;false;0;0;0;;;
                                  -185779;1;0;false;false;;;;;;
                                  -185780;1;0;false;false;0;0;0;;;
                                  -185781;1;0;false;false;;;;;;
                                  -185782;8;0;false;false;0;0;0;;;
                                  -185790;5;0;false;false;;;;;;
                                  -185795;16;0;false;false;0;0;0;;;
                                  -185811;1;0;false;false;;;;;;
                                  -185812;1;0;false;false;0;0;0;;;
                                  -185813;1;0;false;false;;;;;;
                                  -185814;23;0;false;false;0;0;0;;;
                                  -185837;5;0;false;false;;;;;;
                                  -185842;66;0;false;false;63;127;95;;;
                                  -185908;3;0;false;false;;;;;;
                                  -185911;69;0;false;false;63;127;95;;;
                                  -185980;3;0;false;false;;;;;;
                                  -185983;21;0;false;false;0;0;0;;;
                                  -186004;5;0;false;false;;;;;;
                                  -186009;51;0;false;false;63;127;95;;;
                                  -186060;3;0;false;false;;;;;;
                                  -186063;13;0;false;false;0;0;0;;;
                                  -186076;1;0;false;false;;;;;;
                                  -186077;1;0;false;false;0;0;0;;;
                                  -186078;1;0;false;false;;;;;;
                                  -186079;16;0;false;false;0;0;0;;;
                                  -186095;1;0;false;false;;;;;;
                                  -186096;1;0;false;false;0;0;0;;;
                                  -186097;1;0;false;false;;;;;;
                                  -186098;23;0;false;false;0;0;0;;;
                                  -186121;5;0;false;false;;;;;;
                                  -186126;7;0;false;false;0;0;0;;;
                                  -186133;1;0;false;false;;;;;;
                                  -186134;1;0;false;false;0;0;0;;;
                                  -186135;1;0;false;false;;;;;;
                                  -186136;10;0;false;false;0;0;0;;;
                                  -186146;1;0;false;false;;;;;;
                                  -186147;1;0;false;false;0;0;0;;;
                                  -186148;1;0;false;false;;;;;;
                                  -186149;14;0;false;false;0;0;0;;;
                                  -186163;5;0;false;false;;;;;;
                                  -186168;15;0;false;false;0;0;0;;;
                                  -186183;4;1;false;false;127;0;85;;;
                                  -186187;2;0;false;false;0;0;0;;;
                                  -186189;5;0;false;false;;;;;;
                                  -186194;5;1;false;false;127;0;85;;;
                                  -186199;1;0;false;false;0;0;0;;;
                                  -186200;4;0;false;false;;;;;;
                                  -186204;4;1;false;false;127;0;85;;;
                                  -186208;1;0;false;false;;;;;;
                                  -186209;13;0;false;false;0;0;0;;;
                                  -186222;5;0;false;false;;;;;;
                                  -186227;9;0;false;false;0;0;0;;;
                                  -186236;1;0;false;false;;;;;;
                                  -186237;1;0;false;false;0;0;0;;;
                                  -186238;1;0;false;false;;;;;;
                                  -186239;13;0;false;false;0;0;0;;;
                                  -186252;5;0;false;false;;;;;;
                                  -186257;10;0;false;false;0;0;0;;;
                                  -186267;1;0;false;false;;;;;;
                                  -186268;1;0;false;false;0;0;0;;;
                                  -186269;1;0;false;false;;;;;;
                                  -186270;8;0;false;false;0;0;0;;;
                                  -186278;5;0;false;false;;;;;;
                                  -186283;16;0;false;false;0;0;0;;;
                                  -186299;1;0;false;false;;;;;;
                                  -186300;1;0;false;false;0;0;0;;;
                                  -186301;1;0;false;false;;;;;;
                                  -186302;23;0;false;false;0;0;0;;;
                                  -186325;5;0;false;false;;;;;;
                                  -186330;66;0;false;false;63;127;95;;;
                                  -186396;3;0;false;false;;;;;;
                                  -186399;69;0;false;false;63;127;95;;;
                                  -186468;3;0;false;false;;;;;;
                                  -186471;21;0;false;false;0;0;0;;;
                                  -186492;5;0;false;false;;;;;;
                                  -186497;51;0;false;false;63;127;95;;;
                                  -186548;3;0;false;false;;;;;;
                                  -186551;13;0;false;false;0;0;0;;;
                                  -186564;1;0;false;false;;;;;;
                                  -186565;1;0;false;false;0;0;0;;;
                                  -186566;1;0;false;false;;;;;;
                                  -186567;16;0;false;false;0;0;0;;;
                                  -186583;1;0;false;false;;;;;;
                                  -186584;1;0;false;false;0;0;0;;;
                                  -186585;1;0;false;false;;;;;;
                                  -186586;23;0;false;false;0;0;0;;;
                                  -186609;5;0;false;false;;;;;;
                                  -186614;7;0;false;false;0;0;0;;;
                                  -186621;1;0;false;false;;;;;;
                                  -186622;1;0;false;false;0;0;0;;;
                                  -186623;1;0;false;false;;;;;;
                                  -186624;10;0;false;false;0;0;0;;;
                                  -186634;1;0;false;false;;;;;;
                                  -186635;1;0;false;false;0;0;0;;;
                                  -186636;1;0;false;false;;;;;;
                                  -186637;14;0;false;false;0;0;0;;;
                                  -186651;5;0;false;false;;;;;;
                                  -186656;15;0;false;false;0;0;0;;;
                                  -186671;4;1;false;false;127;0;85;;;
                                  -186675;2;0;false;false;0;0;0;;;
                                  -186677;5;0;false;false;;;;;;
                                  -186682;5;1;false;false;127;0;85;;;
                                  -186687;1;0;false;false;0;0;0;;;
                                  -186688;4;0;false;false;;;;;;
                                  -186692;4;1;false;false;127;0;85;;;
                                  -186696;1;0;false;false;;;;;;
                                  -186697;14;0;false;false;0;0;0;;;
                                  -186711;5;0;false;false;;;;;;
                                  -186716;14;0;false;false;0;0;0;;;
                                  -186730;5;0;false;false;;;;;;
                                  -186735;15;0;false;false;0;0;0;;;
                                  -186750;4;1;false;false;127;0;85;;;
                                  -186754;2;0;false;false;0;0;0;;;
                                  -186756;5;0;false;false;;;;;;
                                  -186761;5;1;false;false;127;0;85;;;
                                  -186766;1;0;false;false;0;0;0;;;
                                  -186767;4;0;false;false;;;;;;
                                  -186771;4;1;false;false;127;0;85;;;
                                  -186775;1;0;false;false;;;;;;
                                  -186776;12;0;false;false;0;0;0;;;
                                  -186788;5;0;false;false;;;;;;
                                  -186793;12;0;false;false;0;0;0;;;
                                  -186805;5;0;false;false;;;;;;
                                  -186810;15;0;false;false;0;0;0;;;
                                  -186825;4;1;false;false;127;0;85;;;
                                  -186829;2;0;false;false;0;0;0;;;
                                  -186831;5;0;false;false;;;;;;
                                  -186836;5;1;false;false;127;0;85;;;
                                  -186841;1;0;false;false;0;0;0;;;
                                  -186842;4;0;false;false;;;;;;
                                  -186846;4;1;false;false;127;0;85;;;
                                  -186850;1;0;false;false;;;;;;
                                  -186851;19;0;false;false;0;0;0;;;
                                  -186870;5;0;false;false;;;;;;
                                  -186875;19;0;false;false;0;0;0;;;
                                  -186894;5;0;false;false;;;;;;
                                  -186899;15;0;false;false;0;0;0;;;
                                  -186914;4;1;false;false;127;0;85;;;
                                  -186918;2;0;false;false;0;0;0;;;
                                  -186920;5;0;false;false;;;;;;
                                  -186925;5;1;false;false;127;0;85;;;
                                  -186930;1;0;false;false;0;0;0;;;
                                  -186931;4;0;false;false;;;;;;
                                  -186935;4;1;false;false;127;0;85;;;
                                  -186939;1;0;false;false;;;;;;
                                  -186940;15;0;false;false;0;0;0;;;
                                  -186955;5;0;false;false;;;;;;
                                  -186960;15;0;false;false;0;0;0;;;
                                  -186975;5;0;false;false;;;;;;
                                  -186980;15;0;false;false;0;0;0;;;
                                  -186995;4;1;false;false;127;0;85;;;
                                  -186999;2;0;false;false;0;0;0;;;
                                  -187001;5;0;false;false;;;;;;
                                  -187006;5;1;false;false;127;0;85;;;
                                  -187011;1;0;false;false;0;0;0;;;
                                  -187012;4;0;false;false;;;;;;
                                  -187016;4;1;false;false;127;0;85;;;
                                  -187020;1;0;false;false;;;;;;
                                  -187021;11;0;false;false;0;0;0;;;
                                  -187032;5;0;false;false;;;;;;
                                  -187037;9;0;false;false;0;0;0;;;
                                  -187046;5;1;false;false;127;0;85;;;
                                  -187051;1;0;false;false;0;0;0;;;
                                  -187052;1;0;false;false;;;;;;
                                  -187053;21;0;false;false;0;0;0;;;
                                  -187074;5;0;false;false;;;;;;
                                  -187079;15;0;false;false;0;0;0;;;
                                  -187094;4;1;false;false;127;0;85;;;
                                  -187098;2;0;false;false;0;0;0;;;
                                  -187100;5;0;false;false;;;;;;
                                  -187105;5;1;false;false;127;0;85;;;
                                  -187110;1;0;false;false;0;0;0;;;
                                  -187111;4;0;false;false;;;;;;
                                  -187115;4;1;false;false;127;0;85;;;
                                  -187119;1;0;false;false;;;;;;
                                  -187120;13;0;false;false;0;0;0;;;
                                  -187133;5;0;false;false;;;;;;
                                  -187138;11;0;false;false;0;0;0;;;
                                  -187149;5;1;false;false;127;0;85;;;
                                  -187154;1;0;false;false;0;0;0;;;
                                  -187155;1;0;false;false;;;;;;
                                  -187156;21;0;false;false;0;0;0;;;
                                  -187177;5;0;false;false;;;;;;
                                  -187182;15;0;false;false;0;0;0;;;
                                  -187197;4;1;false;false;127;0;85;;;
                                  -187201;2;0;false;false;0;0;0;;;
                                  -187203;5;0;false;false;;;;;;
                                  -187208;5;1;false;false;127;0;85;;;
                                  -187213;1;0;false;false;0;0;0;;;
                                  -187214;4;0;false;false;;;;;;
                                  -187218;4;1;false;false;127;0;85;;;
                                  -187222;1;0;false;false;;;;;;
                                  -187223;17;0;false;false;0;0;0;;;
                                  -187240;5;0;false;false;;;;;;
                                  -187245;17;0;false;false;0;0;0;;;
                                  -187262;5;0;false;false;;;;;;
                                  -187267;15;0;false;false;0;0;0;;;
                                  -187282;4;1;false;false;127;0;85;;;
                                  -187286;2;0;false;false;0;0;0;;;
                                  -187288;5;0;false;false;;;;;;
                                  -187293;5;1;false;false;127;0;85;;;
                                  -187298;1;0;false;false;0;0;0;;;
                                  -187299;4;0;false;false;;;;;;
                                  -187303;4;1;false;false;127;0;85;;;
                                  -187307;1;0;false;false;;;;;;
                                  -187308;13;0;false;false;0;0;0;;;
                                  -187321;5;0;false;false;;;;;;
                                  -187326;13;0;false;false;0;0;0;;;
                                  -187339;5;0;false;false;;;;;;
                                  -187344;15;0;false;false;0;0;0;;;
                                  -187359;4;1;false;false;127;0;85;;;
                                  -187363;2;0;false;false;0;0;0;;;
                                  -187365;5;0;false;false;;;;;;
                                  -187370;5;1;false;false;127;0;85;;;
                                  -187375;1;0;false;false;0;0;0;;;
                                  -187376;4;0;false;false;;;;;;
                                  -187380;4;1;false;false;127;0;85;;;
                                  -187384;1;0;false;false;;;;;;
                                  -187385;14;0;false;false;0;0;0;;;
                                  -187399;5;0;false;false;;;;;;
                                  -187404;17;0;false;false;0;0;0;;;
                                  -187421;5;0;false;false;;;;;;
                                  -187426;15;0;false;false;0;0;0;;;
                                  -187441;4;1;false;false;127;0;85;;;
                                  -187445;2;0;false;false;0;0;0;;;
                                  -187447;5;0;false;false;;;;;;
                                  -187452;5;1;false;false;127;0;85;;;
                                  -187457;1;0;false;false;0;0;0;;;
                                  -187458;4;0;false;false;;;;;;
                                  -187462;4;1;false;false;127;0;85;;;
                                  -187466;1;0;false;false;;;;;;
                                  -187467;12;0;false;false;0;0;0;;;
                                  -187479;5;0;false;false;;;;;;
                                  -187484;15;0;false;false;0;0;0;;;
                                  -187499;5;0;false;false;;;;;;
                                  -187504;15;0;false;false;0;0;0;;;
                                  -187519;4;1;false;false;127;0;85;;;
                                  -187523;2;0;false;false;0;0;0;;;
                                  -187525;5;0;false;false;;;;;;
                                  -187530;5;1;false;false;127;0;85;;;
                                  -187535;1;0;false;false;0;0;0;;;
                                  -187536;4;0;false;false;;;;;;
                                  -187540;4;1;false;false;127;0;85;;;
                                  -187544;1;0;false;false;;;;;;
                                  -187545;16;0;false;false;0;0;0;;;
                                  -187561;5;0;false;false;;;;;;
                                  -187566;14;0;false;false;0;0;0;;;
                                  -187580;5;0;false;false;;;;;;
                                  -187585;15;0;false;false;0;0;0;;;
                                  -187600;4;1;false;false;127;0;85;;;
                                  -187604;2;0;false;false;0;0;0;;;
                                  -187606;5;0;false;false;;;;;;
                                  -187611;5;1;false;false;127;0;85;;;
                                  -187616;1;0;false;false;0;0;0;;;
                                  -187617;4;0;false;false;;;;;;
                                  -187621;4;1;false;false;127;0;85;;;
                                  -187625;1;0;false;false;;;;;;
                                  -187626;14;0;false;false;0;0;0;;;
                                  -187640;5;0;false;false;;;;;;
                                  -187645;12;0;false;false;0;0;0;;;
                                  -187657;5;0;false;false;;;;;;
                                  -187662;15;0;false;false;0;0;0;;;
                                  -187677;4;1;false;false;127;0;85;;;
                                  -187681;2;0;false;false;0;0;0;;;
                                  -187683;5;0;false;false;;;;;;
                                  -187688;5;1;false;false;127;0;85;;;
                                  -187693;1;0;false;false;0;0;0;;;
                                  -187694;4;0;false;false;;;;;;
                                  -187698;15;0;false;false;63;127;95;;;
                                  -187713;2;0;false;false;;;;;;
                                  -187715;4;1;false;false;127;0;85;;;
                                  -187719;1;0;false;false;;;;;;
                                  -187720;18;0;false;false;0;0;0;;;
                                  -187738;5;0;false;false;;;;;;
                                  -187743;20;0;false;false;0;0;0;;;
                                  -187763;5;0;false;false;;;;;;
                                  -187768;5;1;false;false;127;0;85;;;
                                  -187773;1;0;false;false;0;0;0;;;
                                  -187774;4;0;false;false;;;;;;
                                  -187778;4;1;false;false;127;0;85;;;
                                  -187782;1;0;false;false;;;;;;
                                  -187783;14;0;false;false;0;0;0;;;
                                  -187797;5;0;false;false;;;;;;
                                  -187802;12;0;false;false;0;0;0;;;
                                  -187814;5;0;false;false;;;;;;
                                  -187819;5;1;false;false;127;0;85;;;
                                  -187824;1;0;false;false;0;0;0;;;
                                  -187825;4;0;false;false;;;;;;
                                  -187829;4;1;false;false;127;0;85;;;
                                  -187833;1;0;false;false;;;;;;
                                  -187834;20;0;false;false;0;0;0;;;
                                  -187854;5;0;false;false;;;;;;
                                  -187859;22;0;false;false;0;0;0;;;
                                  -187881;5;0;false;false;;;;;;
                                  -187886;5;1;false;false;127;0;85;;;
                                  -187891;1;0;false;false;0;0;0;;;
                                  -187892;4;0;false;false;;;;;;
                                  -187896;4;1;false;false;127;0;85;;;
                                  -187900;1;0;false;false;;;;;;
                                  -187901;21;0;false;false;0;0;0;;;
                                  -187922;5;0;false;false;;;;;;
                                  -187927;14;0;false;false;0;0;0;;;
                                  -187941;5;0;false;false;;;;;;
                                  -187946;32;0;false;false;0;0;0;;;
                                  -187978;5;0;false;false;;;;;;
                                  -187983;5;1;false;false;127;0;85;;;
                                  -187988;1;0;false;false;0;0;0;;;
                                  -187989;4;0;false;false;;;;;;
                                  -187993;4;1;false;false;127;0;85;;;
                                  -187997;1;0;false;false;;;;;;
                                  -187998;19;0;false;false;0;0;0;;;
                                  -188017;5;0;false;false;;;;;;
                                  -188022;12;0;false;false;0;0;0;;;
                                  -188034;5;0;false;false;;;;;;
                                  -188039;28;0;false;false;0;0;0;;;
                                  -188067;5;0;false;false;;;;;;
                                  -188072;5;1;false;false;127;0;85;;;
                                  -188077;1;0;false;false;0;0;0;;;
                                  -188078;4;0;false;false;;;;;;
                                  -188082;4;1;false;false;127;0;85;;;
                                  -188086;1;0;false;false;;;;;;
                                  -188087;26;0;false;false;0;0;0;;;
                                  -188113;5;0;false;false;;;;;;
                                  -188118;28;0;false;false;0;0;0;;;
                                  -188146;5;0;false;false;;;;;;
                                  -188151;32;0;false;false;0;0;0;;;
                                  -188183;5;0;false;false;;;;;;
                                  -188188;5;1;false;false;127;0;85;;;
                                  -188193;1;0;false;false;0;0;0;;;
                                  -188194;4;0;false;false;;;;;;
                                  -188198;4;1;false;false;127;0;85;;;
                                  -188202;1;0;false;false;;;;;;
                                  -188203;22;0;false;false;0;0;0;;;
                                  -188225;5;0;false;false;;;;;;
                                  -188230;24;0;false;false;0;0;0;;;
                                  -188254;5;0;false;false;;;;;;
                                  -188259;28;0;false;false;0;0;0;;;
                                  -188287;5;0;false;false;;;;;;
                                  -188292;5;1;false;false;127;0;85;;;
                                  -188297;1;0;false;false;0;0;0;;;
                                  -188298;4;0;false;false;;;;;;
                                  -188302;4;1;false;false;127;0;85;;;
                                  -188306;1;0;false;false;;;;;;
                                  -188307;18;0;false;false;0;0;0;;;
                                  -188325;5;0;false;false;;;;;;
                                  -188330;39;0;false;false;0;0;0;;;
                                  -188369;5;0;false;false;;;;;;
                                  -188374;5;1;false;false;127;0;85;;;
                                  -188379;1;0;false;false;0;0;0;;;
                                  -188380;4;0;false;false;;;;;;
                                  -188384;4;1;false;false;127;0;85;;;
                                  -188388;1;0;false;false;;;;;;
                                  -188389;20;0;false;false;0;0;0;;;
                                  -188409;5;0;false;false;;;;;;
                                  -188414;41;0;false;false;0;0;0;;;
                                  -188455;5;0;false;false;;;;;;
                                  -188460;5;1;false;false;127;0;85;;;
                                  -188465;1;0;false;false;0;0;0;;;
                                  -188466;4;0;false;false;;;;;;
                                  -188470;4;1;false;false;127;0;85;;;
                                  -188474;1;0;false;false;;;;;;
                                  -188475;24;0;false;false;0;0;0;;;
                                  -188499;5;0;false;false;;;;;;
                                  -188504;26;0;false;false;0;0;0;;;
                                  -188530;5;0;false;false;;;;;;
                                  -188535;32;0;false;false;0;0;0;;;
                                  -188567;5;0;false;false;;;;;;
                                  -188572;5;1;false;false;127;0;85;;;
                                  -188577;1;0;false;false;0;0;0;;;
                                  -188578;4;0;false;false;;;;;;
                                  -188582;4;1;false;false;127;0;85;;;
                                  -188586;1;0;false;false;;;;;;
                                  -188587;20;0;false;false;0;0;0;;;
                                  -188607;5;0;false;false;;;;;;
                                  -188612;22;0;false;false;0;0;0;;;
                                  -188634;5;0;false;false;;;;;;
                                  -188639;28;0;false;false;0;0;0;;;
                                  -188667;5;0;false;false;;;;;;
                                  -188672;5;1;false;false;127;0;85;;;
                                  -188677;1;0;false;false;0;0;0;;;
                                  -188678;4;0;false;false;;;;;;
                                  -188682;4;1;false;false;127;0;85;;;
                                  -188686;1;0;false;false;;;;;;
                                  -188687;21;0;false;false;0;0;0;;;
                                  -188708;5;0;false;false;;;;;;
                                  -188713;17;0;false;false;0;0;0;;;
                                  -188730;5;0;false;false;;;;;;
                                  -188735;32;0;false;false;0;0;0;;;
                                  -188767;5;0;false;false;;;;;;
                                  -188772;5;1;false;false;127;0;85;;;
                                  -188777;1;0;false;false;0;0;0;;;
                                  -188778;4;0;false;false;;;;;;
                                  -188782;4;1;false;false;127;0;85;;;
                                  -188786;1;0;false;false;;;;;;
                                  -188787;19;0;false;false;0;0;0;;;
                                  -188806;5;0;false;false;;;;;;
                                  -188811;15;0;false;false;0;0;0;;;
                                  -188826;5;0;false;false;;;;;;
                                  -188831;28;0;false;false;0;0;0;;;
                                  -188859;5;0;false;false;;;;;;
                                  -188864;5;1;false;false;127;0;85;;;
                                  -188869;1;0;false;false;0;0;0;;;
                                  -188870;4;0;false;false;;;;;;
                                  -188874;4;1;false;false;127;0;85;;;
                                  -188878;1;0;false;false;;;;;;
                                  -188879;23;0;false;false;0;0;0;;;
                                  -188902;5;0;false;false;;;;;;
                                  -188907;14;0;false;false;0;0;0;;;
                                  -188921;5;0;false;false;;;;;;
                                  -188926;32;0;false;false;0;0;0;;;
                                  -188958;5;0;false;false;;;;;;
                                  -188963;5;1;false;false;127;0;85;;;
                                  -188968;1;0;false;false;0;0;0;;;
                                  -188969;4;0;false;false;;;;;;
                                  -188973;4;1;false;false;127;0;85;;;
                                  -188977;1;0;false;false;;;;;;
                                  -188978;21;0;false;false;0;0;0;;;
                                  -188999;5;0;false;false;;;;;;
                                  -189004;12;0;false;false;0;0;0;;;
                                  -189016;5;0;false;false;;;;;;
                                  -189021;28;0;false;false;0;0;0;;;
                                  -189049;5;0;false;false;;;;;;
                                  -189054;5;1;false;false;127;0;85;;;
                                  -189059;1;0;false;false;0;0;0;;;
                                  -189060;4;0;false;false;;;;;;
                                  -189064;20;0;false;false;63;127;95;;;
                                  -189084;2;0;false;false;;;;;;
                                  -189086;4;1;false;false;127;0;85;;;
                                  -189090;1;0;false;false;;;;;;
                                  -189091;7;0;false;false;0;0;0;;;
                                  -189098;5;0;false;false;;;;;;
                                  -189103;6;0;false;false;0;0;0;;;
                                  -189109;5;0;false;false;;;;;;
                                  -189114;5;1;false;false;127;0;85;;;
                                  -189119;1;0;false;false;0;0;0;;;
                                  -189120;4;0;false;false;;;;;;
                                  -189124;4;1;false;false;127;0;85;;;
                                  -189128;1;0;false;false;;;;;;
                                  -189129;8;0;false;false;0;0;0;;;
                                  -189137;5;0;false;false;;;;;;
                                  -189142;7;0;false;false;0;0;0;;;
                                  -189149;5;0;false;false;;;;;;
                                  -189154;5;1;false;false;127;0;85;;;
                                  -189159;1;0;false;false;0;0;0;;;
                                  -189160;4;0;false;false;;;;;;
                                  -189164;4;1;false;false;127;0;85;;;
                                  -189168;1;0;false;false;;;;;;
                                  -189169;9;0;false;false;0;0;0;;;
                                  -189178;5;0;false;false;;;;;;
                                  -189183;8;0;false;false;0;0;0;;;
                                  -189191;5;0;false;false;;;;;;
                                  -189196;5;1;false;false;127;0;85;;;
                                  -189201;1;0;false;false;0;0;0;;;
                                  -189202;4;0;false;false;;;;;;
                                  -189206;4;1;false;false;127;0;85;;;
                                  -189210;1;0;false;false;;;;;;
                                  -189211;19;0;false;false;0;0;0;;;
                                  -189230;5;0;false;false;;;;;;
                                  -189235;14;0;false;false;0;0;0;;;
                                  -189249;5;0;false;false;;;;;;
                                  -189254;5;1;false;false;127;0;85;;;
                                  -189259;1;0;false;false;0;0;0;;;
                                  -189260;4;0;false;false;;;;;;
                                  -189264;4;1;false;false;127;0;85;;;
                                  -189268;1;0;false;false;;;;;;
                                  -189269;15;0;false;false;0;0;0;;;
                                  -189284;5;0;false;false;;;;;;
                                  -189289;11;0;false;false;0;0;0;;;
                                  -189300;5;0;false;false;;;;;;
                                  -189305;5;1;false;false;127;0;85;;;
                                  -189310;1;0;false;false;0;0;0;;;
                                  -189311;4;0;false;false;;;;;;
                                  -189315;4;1;false;false;127;0;85;;;
                                  -189319;1;0;false;false;;;;;;
                                  -189320;24;0;false;false;0;0;0;;;
                                  -189344;5;0;false;false;;;;;;
                                  -189349;23;0;false;false;0;0;0;;;
                                  -189372;5;0;false;false;;;;;;
                                  -189377;5;1;false;false;127;0;85;;;
                                  -189382;1;0;false;false;0;0;0;;;
                                  -189383;4;0;false;false;;;;;;
                                  -189387;4;1;false;false;127;0;85;;;
                                  -189391;1;0;false;false;;;;;;
                                  -189392;20;0;false;false;0;0;0;;;
                                  -189412;5;0;false;false;;;;;;
                                  -189417;19;0;false;false;0;0;0;;;
                                  -189436;5;0;false;false;;;;;;
                                  -189441;5;1;false;false;127;0;85;;;
                                  -189446;1;0;false;false;0;0;0;;;
                                  -189447;4;0;false;false;;;;;;
                                  -189451;18;0;false;false;63;127;95;;;
                                  -189469;2;0;false;false;;;;;;
                                  -189471;4;1;false;false;127;0;85;;;
                                  -189475;1;0;false;false;;;;;;
                                  -189476;20;0;false;false;0;0;0;;;
                                  -189496;5;0;false;false;;;;;;
                                  -189501;9;0;false;false;0;0;0;;;
                                  -189510;1;0;false;false;;;;;;
                                  -189511;1;0;false;false;0;0;0;;;
                                  -189512;1;0;false;false;;;;;;
                                  -189513;11;0;false;false;0;0;0;;;
                                  -189524;2;0;false;false;;;;;;
                                  -189526;33;0;false;false;63;127;95;;;
                                  -189559;3;0;false;false;;;;;;
                                  -189562;5;1;false;false;127;0;85;;;
                                  -189567;1;0;false;false;0;0;0;;;
                                  -189568;3;0;false;false;;;;;;
                                  -189571;1;0;false;false;0;0;0;;;
                                  -189572;2;0;false;false;;;;;;
                                  -189574;1;0;false;false;0;0;0;;;
                                  -189575;2;0;false;false;;;;;;
                                  -189577;3;0;false;false;63;95;191;;;
                                  -189580;3;0;false;false;;;;;;
                                  -189583;1;0;false;false;63;95;191;;;
                                  -189584;1;0;false;false;;;;;;
                                  -189585;9;0;false;false;63;95;191;;;
                                  -189594;1;0;false;false;;;;;;
                                  -189595;5;0;false;false;63;95;191;;;
                                  -189600;1;0;false;false;;;;;;
                                  -189601;3;0;false;false;63;95;191;;;
                                  -189604;1;0;false;false;;;;;;
                                  -189605;8;0;false;false;63;95;191;;;
                                  -189613;1;0;false;false;;;;;;
                                  -189614;4;0;false;false;63;95;191;;;
                                  -189618;3;0;false;false;;;;;;
                                  -189621;2;0;false;false;63;95;191;;;
                                  -189623;2;0;false;false;;;;;;
                                  -189625;7;1;false;false;127;0;85;;;
                                  -189632;1;0;false;false;;;;;;
                                  -189633;8;0;false;false;0;0;0;;;
                                  -189641;1;0;false;false;;;;;;
                                  -189642;1;0;false;false;0;0;0;;;
                                  -189643;3;0;false;false;;;;;;
                                  -189646;6;1;false;false;127;0;85;;;
                                  -189652;1;0;false;false;;;;;;
                                  -189653;6;0;false;false;0;0;0;;;
                                  -189659;1;0;false;false;;;;;;
                                  -189660;2;0;false;false;0;0;0;;;
                                  -189662;1;0;false;false;;;;;;
                                  -189663;25;0;false;false;0;0;0;;;
                                  -189688;1;0;false;false;;;;;;
                                  -189689;2;0;false;false;0;0;0;;;
                                  -189691;1;0;false;false;;;;;;
                                  -189692;11;0;false;false;0;0;0;;;
                                  -189703;2;0;false;false;;;;;;
                                  -189705;1;0;false;false;0;0;0;;;
                                  -189706;2;0;false;false;;;;;;
                                  -189708;3;0;false;false;63;95;191;;;
                                  -189711;3;0;false;false;;;;;;
                                  -189714;1;0;false;false;63;95;191;;;
                                  -189715;1;0;false;false;;;;;;
                                  -189716;7;0;false;false;63;95;191;;;
                                  -189723;1;0;false;false;;;;;;
                                  -189724;7;0;false;false;63;95;191;;;
                                  -189731;1;0;false;false;;;;;;
                                  -189732;3;0;false;false;63;95;191;;;
                                  -189735;1;0;false;false;;;;;;
                                  -189736;5;0;false;false;63;95;191;;;
                                  -189741;1;0;false;false;;;;;;
                                  -189742;6;0;false;false;63;95;191;;;
                                  -189748;1;0;false;false;;;;;;
                                  -189749;2;0;false;false;63;95;191;;;
                                  -189751;1;0;false;false;;;;;;
                                  -189752;6;0;false;false;63;95;191;;;
                                  -189758;1;0;false;false;;;;;;
                                  -189759;1;0;false;false;63;95;191;;;
                                  -189760;1;0;false;false;;;;;;
                                  -189761;5;0;false;false;63;95;191;;;
                                  -189766;1;0;false;false;;;;;;
                                  -189767;4;0;false;false;63;95;191;;;
                                  -189771;1;0;false;false;;;;;;
                                  -189772;4;0;false;false;63;95;191;;;
                                  -189776;1;0;false;false;;;;;;
                                  -189777;10;0;false;false;63;95;191;;;
                                  -189787;3;0;false;false;;;;;;
                                  -189790;1;0;false;false;63;95;191;;;
                                  -189791;1;0;false;false;;;;;;
                                  -189792;8;0;false;false;63;95;191;;;
                                  -189800;4;0;false;false;;;;;;
                                  -189804;1;0;false;false;63;95;191;;;
                                  -189805;1;0;false;false;;;;;;
                                  -189806;11;0;false;false;63;95;191;;;
                                  -189817;1;0;false;false;;;;;;
                                  -189818;18;0;false;false;63;95;191;;;
                                  -189836;1;0;false;false;;;;;;
                                  -189837;2;0;false;false;63;95;191;;;
                                  -189839;1;0;false;false;;;;;;
                                  -189840;5;0;false;false;63;95;191;;;
                                  -189845;1;0;false;false;;;;;;
                                  -189846;3;0;false;false;63;95;191;;;
                                  -189849;1;0;false;false;;;;;;
                                  -189850;18;0;false;false;63;95;191;;;
                                  -189868;1;0;false;false;;;;;;
                                  -189869;2;0;false;false;63;95;191;;;
                                  -189871;1;0;false;false;;;;;;
                                  -189872;4;0;false;false;63;95;191;;;
                                  -189876;3;0;false;false;;;;;;
                                  -189879;1;0;false;false;63;95;191;;;
                                  -189880;4;0;false;false;;;;;;
                                  -189884;1;0;false;false;63;95;191;;;
                                  -189885;1;0;false;false;;;;;;
                                  -189886;8;1;false;false;127;159;191;;;
                                  -189894;4;0;false;false;63;95;191;;;
                                  -189898;1;0;false;false;;;;;;
                                  -189899;2;0;false;false;63;95;191;;;
                                  -189901;1;0;false;false;;;;;;
                                  -189902;3;0;false;false;63;95;191;;;
                                  -189905;1;0;false;false;;;;;;
                                  -189906;5;0;false;false;63;95;191;;;
                                  -189911;1;0;false;false;;;;;;
                                  -189912;6;0;false;false;63;95;191;;;
                                  -189918;1;0;false;false;;;;;;
                                  -189919;2;0;false;false;63;95;191;;;
                                  -189921;1;0;false;false;;;;;;
                                  -189922;6;0;false;false;63;95;191;;;
                                  -189928;1;0;false;false;;;;;;
                                  -189929;1;0;false;false;63;95;191;;;
                                  -189930;1;0;false;false;;;;;;
                                  -189931;5;0;false;false;63;95;191;;;
                                  -189936;1;0;false;false;;;;;;
                                  -189937;4;0;false;false;63;95;191;;;
                                  -189941;1;0;false;false;;;;;;
                                  -189942;4;0;false;false;63;95;191;;;
                                  -189946;1;0;false;false;;;;;;
                                  -189947;10;0;false;false;63;95;191;;;
                                  -189957;3;0;false;false;;;;;;
                                  -189960;1;0;false;false;63;95;191;;;
                                  -189961;1;0;false;false;;;;;;
                                  -189962;5;0;false;false;63;95;191;;;
                                  -189967;1;0;false;false;;;;;;
                                  -189968;2;0;false;false;63;95;191;;;
                                  -189970;1;0;false;false;;;;;;
                                  -189971;3;0;false;false;63;95;191;;;
                                  -189974;1;0;false;false;;;;;;
                                  -189975;5;0;false;false;63;95;191;;;
                                  -189980;1;0;false;false;;;;;;
                                  -189981;6;0;false;false;63;95;191;;;
                                  -189987;1;0;false;false;;;;;;
                                  -189988;2;0;false;false;63;95;191;;;
                                  -189990;1;0;false;false;;;;;;
                                  -189991;6;0;false;false;63;95;191;;;
                                  -189997;1;0;false;false;;;;;;
                                  -189998;2;0;false;false;63;95;191;;;
                                  -190000;1;0;false;false;;;;;;
                                  -190001;5;0;false;false;63;95;191;;;
                                  -190006;1;0;false;false;;;;;;
                                  -190007;1;0;false;false;63;95;191;;;
                                  -190008;1;0;false;false;;;;;;
                                  -190009;4;0;false;false;63;95;191;;;
                                  -190013;1;0;false;false;;;;;;
                                  -190014;10;0;false;false;63;95;191;;;
                                  -190024;3;0;false;false;;;;;;
                                  -190027;2;0;false;false;63;95;191;;;
                                  -190029;2;0;false;false;;;;;;
                                  -190031;7;1;false;false;127;0;85;;;
                                  -190038;1;0;false;false;;;;;;
                                  -190039;16;0;false;false;0;0;0;;;
                                  -190055;3;1;false;false;127;0;85;;;
                                  -190058;1;0;false;false;;;;;;
                                  -190059;7;0;false;false;0;0;0;;;
                                  -190066;1;0;false;false;;;;;;
                                  -190067;1;0;false;false;0;0;0;;;
                                  -190068;3;0;false;false;;;;;;
                                  -190071;3;1;false;false;127;0;85;;;
                                  -190074;1;0;false;false;;;;;;
                                  -190075;4;0;false;false;0;0;0;;;
                                  -190079;1;0;false;false;;;;;;
                                  -190080;1;0;false;false;0;0;0;;;
                                  -190081;1;0;false;false;;;;;;
                                  -190082;32;0;false;false;0;0;0;;;
                                  -190114;3;0;false;false;;;;;;
                                  -190117;3;1;false;false;127;0;85;;;
                                  -190120;1;0;false;false;;;;;;
                                  -190121;10;0;false;false;0;0;0;;;
                                  -190131;1;0;false;false;;;;;;
                                  -190132;1;0;false;false;0;0;0;;;
                                  -190133;1;0;false;false;;;;;;
                                  -190134;30;0;false;false;0;0;0;;;
                                  -190164;4;0;false;false;;;;;;
                                  -190168;3;1;false;false;127;0;85;;;
                                  -190171;1;0;false;false;;;;;;
                                  -190172;12;0;false;false;0;0;0;;;
                                  -190184;1;0;false;false;;;;;;
                                  -190185;1;0;false;false;0;0;0;;;
                                  -190186;1;0;false;false;;;;;;
                                  -190187;6;0;false;false;0;0;0;;;
                                  -190193;1;0;false;false;;;;;;
                                  -190194;1;0;false;false;0;0;0;;;
                                  -190195;1;0;false;false;;;;;;
                                  -190196;11;0;false;false;0;0;0;;;
                                  -190207;3;0;false;false;;;;;;
                                  -190210;63;0;false;false;63;127;95;;;
                                  -190273;1;0;false;false;;;;;;
                                  -190274;65;0;false;false;63;127;95;;;
                                  -190339;1;0;false;false;;;;;;
                                  -190340;44;0;false;false;63;127;95;;;
                                  -190384;1;0;false;false;;;;;;
                                  -190385;6;1;false;false;127;0;85;;;
                                  -190391;1;0;false;false;;;;;;
                                  -190392;12;0;false;false;0;0;0;;;
                                  -190404;1;0;false;false;;;;;;
                                  -190405;1;0;false;false;0;0;0;;;
                                  -190406;1;0;false;false;;;;;;
                                  -190407;31;0;false;false;0;0;0;;;
                                  -190438;2;0;false;false;;;;;;
                                  -190440;1;0;false;false;0;0;0;;;
                                  -190441;2;0;false;false;;;;;;
                                  -190443;3;0;false;false;63;95;191;;;
                                  -190446;3;0;false;false;;;;;;
                                  -190449;1;0;false;false;63;95;191;;;
                                  -190450;1;0;false;false;;;;;;
                                  -190451;7;0;false;false;63;95;191;;;
                                  -190458;1;0;false;false;;;;;;
                                  -190459;7;0;false;false;63;95;191;;;
                                  -190466;1;0;false;false;;;;;;
                                  -190467;3;0;false;false;63;95;191;;;
                                  -190470;1;0;false;false;;;;;;
                                  -190471;6;0;false;false;63;95;191;;;
                                  -190477;1;0;false;false;;;;;;
                                  -190478;2;0;false;false;63;95;191;;;
                                  -190480;1;0;false;false;;;;;;
                                  -190481;8;0;false;false;63;95;191;;;
                                  -190489;1;0;false;false;;;;;;
                                  -190490;6;0;false;false;63;95;191;;;
                                  -190496;1;0;false;false;;;;;;
                                  -190497;14;0;false;false;63;95;191;;;
                                  -190511;1;0;false;false;;;;;;
                                  -190512;2;0;false;false;63;95;191;;;
                                  -190514;1;0;false;false;;;;;;
                                  -190515;4;0;false;false;63;95;191;;;
                                  -190519;4;0;false;false;;;;;;
                                  -190523;1;0;false;false;63;95;191;;;
                                  -190524;1;0;false;false;;;;;;
                                  -190525;7;0;false;false;63;95;191;;;
                                  -190532;1;0;false;false;;;;;;
                                  -190533;7;0;false;false;63;95;191;;;
                                  -190540;4;0;false;false;;;;;;
                                  -190544;1;0;false;false;63;95;191;;;
                                  -190545;4;0;false;false;;;;;;
                                  -190549;1;0;false;false;63;95;191;;;
                                  -190550;1;0;false;false;;;;;;
                                  -190551;8;1;false;false;127;159;191;;;
                                  -190559;10;0;false;false;63;95;191;;;
                                  -190569;1;0;false;false;;;;;;
                                  -190570;8;0;false;false;63;95;191;;;
                                  -190578;1;0;false;false;;;;;;
                                  -190579;6;0;false;false;63;95;191;;;
                                  -190585;1;0;false;false;;;;;;
                                  -190586;2;0;false;false;63;95;191;;;
                                  -190588;1;0;false;false;;;;;;
                                  -190589;5;0;false;false;63;95;191;;;
                                  -190594;1;0;false;false;;;;;;
                                  -190595;9;0;false;false;63;95;191;;;
                                  -190604;1;0;false;false;;;;;;
                                  -190605;9;0;false;false;63;95;191;;;
                                  -190614;1;0;false;false;;;;;;
                                  -190615;6;0;false;false;63;95;191;;;
                                  -190621;4;0;false;false;;;;;;
                                  -190625;1;0;false;false;63;95;191;;;
                                  -190626;2;0;false;false;;;;;;
                                  -190628;2;0;false;false;63;95;191;;;
                                  -190630;1;0;false;false;;;;;;
                                  -190631;4;0;false;false;63;95;191;;;
                                  -190635;1;0;false;false;;;;;;
                                  -190636;8;0;false;false;63;95;191;;;
                                  -190644;3;0;false;false;;;;;;
                                  -190647;2;0;false;false;63;95;191;;;
                                  -190649;2;0;false;false;;;;;;
                                  -190651;7;1;false;false;127;0;85;;;
                                  -190658;1;0;false;false;;;;;;
                                  -190659;12;0;false;false;0;0;0;;;
                                  -190671;1;0;false;false;;;;;;
                                  -190672;1;0;false;false;0;0;0;;;
                                  -190673;3;0;false;false;;;;;;
                                  -190676;6;1;false;false;127;0;85;;;
                                  -190682;1;0;false;false;;;;;;
                                  -190683;11;0;false;false;0;0;0;;;
                                  -190694;2;0;false;false;;;;;;
                                  -190696;1;0;false;false;0;0;0;;;
                                  -190697;2;0;false;false;;;;;;
                                  -190699;3;0;false;false;63;95;191;;;
                                  -190702;3;0;false;false;;;;;;
                                  -190705;1;0;false;false;63;95;191;;;
                                  -190706;1;0;false;false;;;;;;
                                  -190707;7;0;false;false;63;95;191;;;
                                  -190714;1;0;false;false;;;;;;
                                  -190715;7;0;false;false;63;95;191;;;
                                  -190722;1;0;false;false;;;;;;
                                  -190723;2;0;false;false;63;95;191;;;
                                  -190725;1;0;false;false;;;;;;
                                  -190726;3;0;false;false;63;95;191;;;
                                  -190729;1;0;false;false;;;;;;
                                  -190730;3;0;false;false;63;95;191;;;
                                  -190733;1;0;false;false;;;;;;
                                  -190734;5;0;false;false;63;95;191;;;
                                  -190739;1;0;false;false;;;;;;
                                  -190740;5;0;false;false;63;95;191;;;
                                  -190745;1;0;false;false;;;;;;
                                  -190746;3;0;false;false;63;95;191;;;
                                  -190749;1;0;false;false;;;;;;
                                  -190750;8;0;false;false;63;95;191;;;
                                  -190758;3;0;false;false;;;;;;
                                  -190761;1;0;false;false;63;95;191;;;
                                  -190762;1;0;false;false;;;;;;
                                  -190763;3;0;false;false;127;127;159;;;
                                  -190766;3;0;false;false;;;;;;
                                  -190769;1;0;false;false;63;95;191;;;
                                  -190770;3;0;false;false;;;;;;
                                  -190773;1;0;false;false;63;95;191;;;
                                  -190774;1;0;false;false;;;;;;
                                  -190775;8;1;false;false;127;159;191;;;
                                  -190783;4;0;false;false;63;95;191;;;
                                  -190787;1;0;false;false;;;;;;
                                  -190788;2;0;false;false;63;95;191;;;
                                  -190790;1;0;false;false;;;;;;
                                  -190791;3;0;false;false;63;95;191;;;
                                  -190794;1;0;false;false;;;;;;
                                  -190795;2;0;false;false;63;95;191;;;
                                  -190797;1;0;false;false;;;;;;
                                  -190798;3;0;false;false;63;95;191;;;
                                  -190801;1;0;false;false;;;;;;
                                  -190802;5;0;false;false;63;95;191;;;
                                  -190807;1;0;false;false;;;;;;
                                  -190808;2;0;false;false;63;95;191;;;
                                  -190810;1;0;false;false;;;;;;
                                  -190811;7;0;false;false;63;95;191;;;
                                  -190818;3;0;false;false;;;;;;
                                  -190821;1;0;false;false;63;95;191;;;
                                  -190822;1;0;false;false;;;;;;
                                  -190823;5;0;false;false;63;95;191;;;
                                  -190828;1;0;false;false;;;;;;
                                  -190829;2;0;false;false;63;95;191;;;
                                  -190831;1;0;false;false;;;;;;
                                  -190832;4;0;false;false;63;95;191;;;
                                  -190836;1;0;false;false;;;;;;
                                  -190837;2;0;false;false;63;95;191;;;
                                  -190839;1;0;false;false;;;;;;
                                  -190840;3;0;false;false;63;95;191;;;
                                  -190843;1;0;false;false;;;;;;
                                  -190844;5;0;false;false;63;95;191;;;
                                  -190849;1;0;false;false;;;;;;
                                  -190850;2;0;false;false;63;95;191;;;
                                  -190852;1;0;false;false;;;;;;
                                  -190853;7;0;false;false;63;95;191;;;
                                  -190860;3;0;false;false;;;;;;
                                  -190863;2;0;false;false;63;95;191;;;
                                  -190865;2;0;false;false;;;;;;
                                  -190867;7;1;false;false;127;0;85;;;
                                  -190874;1;0;false;false;;;;;;
                                  -190875;14;0;false;false;0;0;0;;;
                                  -190889;3;1;false;false;127;0;85;;;
                                  -190892;1;0;false;false;;;;;;
                                  -190893;10;0;false;false;0;0;0;;;
                                  -190903;1;0;false;false;;;;;;
                                  -190904;3;1;false;false;127;0;85;;;
                                  -190907;1;0;false;false;;;;;;
                                  -190908;9;0;false;false;0;0;0;;;
                                  -190917;1;0;false;false;;;;;;
                                  -190918;1;0;false;false;0;0;0;;;
                                  -190919;3;0;false;false;;;;;;
                                  -190922;3;1;false;false;127;0;85;;;
                                  -190925;1;0;false;false;;;;;;
                                  -190926;18;0;false;false;0;0;0;;;
                                  -190944;1;0;false;false;;;;;;
                                  -190945;1;0;false;false;0;0;0;;;
                                  -190946;1;0;false;false;;;;;;
                                  -190947;24;0;false;false;0;0;0;;;
                                  -190971;3;0;false;false;;;;;;
                                  -190974;3;1;false;false;127;0;85;;;
                                  -190977;1;0;false;false;;;;;;
                                  -190978;15;0;false;false;0;0;0;;;
                                  -190993;1;0;false;false;;;;;;
                                  -190994;1;0;false;false;0;0;0;;;
                                  -190995;1;0;false;false;;;;;;
                                  -190996;20;0;false;false;0;0;0;;;
                                  -191016;1;0;false;false;;;;;;
                                  -191017;1;0;false;false;0;0;0;;;
                                  -191018;1;0;false;false;;;;;;
                                  -191019;11;0;false;false;0;0;0;;;
                                  -191030;3;0;false;false;;;;;;
                                  -191033;7;1;false;false;127;0;85;;;
                                  -191040;1;0;false;false;;;;;;
                                  -191041;10;0;false;false;0;0;0;;;
                                  -191051;1;0;false;false;;;;;;
                                  -191052;1;0;false;false;0;0;0;;;
                                  -191053;1;0;false;false;;;;;;
                                  -191054;9;0;false;false;0;0;0;;;
                                  -191063;1;0;false;false;;;;;;
                                  -191064;1;0;false;false;0;0;0;;;
                                  -191065;1;0;false;false;;;;;;
                                  -191066;18;0;false;false;0;0;0;;;
                                  -191084;1;0;false;false;;;;;;
                                  -191085;2;0;false;false;0;0;0;;;
                                  -191087;1;0;false;false;;;;;;
                                  -191088;8;0;false;false;0;0;0;;;
                                  -191096;1;0;false;false;;;;;;
                                  -191097;1;0;false;false;0;0;0;;;
                                  -191098;1;0;false;false;;;;;;
                                  -191099;16;0;false;false;0;0;0;;;
                                  -191115;3;0;false;false;;;;;;
                                  -191118;6;1;false;false;127;0;85;;;
                                  -191124;1;0;false;false;;;;;;
                                  -191125;12;0;false;false;0;0;0;;;
                                  -191137;2;0;false;false;;;;;;
                                  -191139;1;0;false;false;0;0;0;;;
                                  -191140;2;0;false;false;;;;;;
                                  -191142;3;0;false;false;63;95;191;;;
                                  -191145;3;0;false;false;;;;;;
                                  -191148;1;0;false;false;63;95;191;;;
                                  -191149;1;0;false;false;;;;;;
                                  -191150;7;0;false;false;63;95;191;;;
                                  -191157;1;0;false;false;;;;;;
                                  -191158;7;0;false;false;63;95;191;;;
                                  -191165;1;0;false;false;;;;;;
                                  -191166;3;0;false;false;63;95;191;;;
                                  -191169;1;0;false;false;;;;;;
                                  -191170;6;0;false;false;63;95;191;;;
                                  -191176;1;0;false;false;;;;;;
                                  -191177;3;0;false;false;63;95;191;;;
                                  -191180;1;0;false;false;;;;;;
                                  -191181;4;0;false;false;63;95;191;;;
                                  -191185;1;0;false;false;;;;;;
                                  -191186;4;0;false;false;63;95;191;;;
                                  -191190;1;0;false;false;;;;;;
                                  -191191;3;0;false;false;63;95;191;;;
                                  -191194;1;0;false;false;;;;;;
                                  -191195;5;0;false;false;63;95;191;;;
                                  -191200;3;0;false;false;;;;;;
                                  -191203;1;0;false;false;63;95;191;;;
                                  -191204;1;0;false;false;;;;;;
                                  -191205;3;0;false;false;127;127;159;;;
                                  -191208;3;0;false;false;;;;;;
                                  -191211;1;0;false;false;63;95;191;;;
                                  -191212;3;0;false;false;;;;;;
                                  -191215;1;0;false;false;63;95;191;;;
                                  -191216;1;0;false;false;;;;;;
                                  -191217;8;1;false;false;127;159;191;;;
                                  -191225;4;0;false;false;63;95;191;;;
                                  -191229;1;0;false;false;;;;;;
                                  -191230;2;0;false;false;63;95;191;;;
                                  -191232;1;0;false;false;;;;;;
                                  -191233;6;0;false;false;63;95;191;;;
                                  -191239;1;0;false;false;;;;;;
                                  -191240;3;0;false;false;63;95;191;;;
                                  -191243;1;0;false;false;;;;;;
                                  -191244;4;0;false;false;63;95;191;;;
                                  -191248;1;0;false;false;;;;;;
                                  -191249;4;0;false;false;63;95;191;;;
                                  -191253;1;0;false;false;;;;;;
                                  -191254;3;0;false;false;63;95;191;;;
                                  -191257;1;0;false;false;;;;;;
                                  -191258;5;0;false;false;63;95;191;;;
                                  -191263;1;0;false;false;;;;;;
                                  -191264;5;0;false;false;63;95;191;;;
                                  -191269;1;0;false;false;;;;;;
                                  -191270;2;0;false;false;63;95;191;;;
                                  -191272;1;0;false;false;;;;;;
                                  -191273;6;0;false;false;63;95;191;;;
                                  -191279;1;0;false;false;;;;;;
                                  -191280;3;0;false;false;63;95;191;;;
                                  -191283;1;0;false;false;;;;;;
                                  -191284;4;0;false;false;63;95;191;;;
                                  -191288;4;0;false;false;;;;;;
                                  -191292;1;0;false;false;63;95;191;;;
                                  -191293;2;0;false;false;;;;;;
                                  -191295;8;0;false;false;63;95;191;;;
                                  -191303;1;0;false;false;;;;;;
                                  -191304;5;0;false;false;63;95;191;;;
                                  -191309;3;0;false;false;;;;;;
                                  -191312;2;0;false;false;63;95;191;;;
                                  -191314;2;0;false;false;;;;;;
                                  -191316;7;1;false;false;127;0;85;;;
                                  -191323;1;0;false;false;;;;;;
                                  -191324;14;0;false;false;0;0;0;;;
                                  -191338;1;0;false;false;;;;;;
                                  -191339;1;0;false;false;0;0;0;;;
                                  -191340;3;0;false;false;;;;;;
                                  -191343;6;1;false;false;127;0;85;;;
                                  -191349;1;0;false;false;;;;;;
                                  -191350;11;0;false;false;0;0;0;;;
                                  -191361;1;0;false;false;;;;;;
                                  -191362;1;0;false;false;0;0;0;;;
                                  -191363;1;0;false;false;;;;;;
                                  -191364;11;0;false;false;0;0;0;;;
                                  -191375;1;0;false;false;;;;;;
                                  -191376;2;0;false;false;0;0;0;;;
                                  -191378;1;0;false;false;;;;;;
                                  -191379;2;0;false;false;0;0;0;;;
                                  -191381;2;0;false;false;;;;;;
                                  -191383;1;0;false;false;0;0;0;;;
                                  -191384;2;0;false;false;;;;;;
                                  -191386;3;0;false;false;63;95;191;;;
                                  -191389;3;0;false;false;;;;;;
                                  -191392;1;0;false;false;63;95;191;;;
                                  -191393;1;0;false;false;;;;;;
                                  -191394;5;0;false;false;63;95;191;;;
                                  -191399;1;0;false;false;;;;;;
                                  -191400;3;0;false;false;63;95;191;;;
                                  -191403;1;0;false;false;;;;;;
                                  -191404;9;0;false;false;63;95;191;;;
                                  -191413;1;0;false;false;;;;;;
                                  -191414;6;0;false;false;63;95;191;;;
                                  -191420;1;0;false;false;;;;;;
                                  -191421;6;0;false;false;63;95;191;;;
                                  -191427;1;0;false;false;;;;;;
                                  -191428;14;0;false;false;63;95;191;;;
                                  -191442;1;0;false;false;;;;;;
                                  -191443;4;0;false;false;63;95;191;;;
                                  -191447;1;0;false;false;;;;;;
                                  -191448;2;0;false;false;63;95;191;;;
                                  -191450;1;0;false;false;;;;;;
                                  -191451;7;0;false;false;63;95;191;;;
                                  -191458;1;0;false;false;;;;;;
                                  -191459;2;0;false;false;63;95;191;;;
                                  -191461;4;0;false;false;;;;;;
                                  -191465;1;0;false;false;63;95;191;;;
                                  -191466;1;0;false;false;;;;;;
                                  -191467;3;0;false;false;63;95;191;;;
                                  -191470;1;0;false;false;;;;;;
                                  -191471;5;0;false;false;63;95;191;;;
                                  -191476;1;0;false;false;;;;;;
                                  -191477;3;0;false;false;63;95;191;;;
                                  -191480;1;0;false;false;;;;;;
                                  -191481;4;0;false;false;63;95;191;;;
                                  -191485;1;0;false;false;;;;;;
                                  -191486;1;0;false;false;63;95;191;;;
                                  -191487;1;0;false;false;;;;;;
                                  -191488;6;0;false;false;63;95;191;;;
                                  -191494;1;0;false;false;;;;;;
                                  -191495;6;0;false;false;63;95;191;;;
                                  -191501;3;0;false;false;;;;;;
                                  -191504;1;0;false;false;63;95;191;;;
                                  -191505;1;0;false;false;;;;;;
                                  -191506;3;0;false;false;127;127;159;;;
                                  -191509;3;0;false;false;;;;;;
                                  -191512;1;0;false;false;63;95;191;;;
                                  -191513;3;0;false;false;;;;;;
                                  -191516;1;0;false;false;63;95;191;;;
                                  -191517;1;0;false;false;;;;;;
                                  -191518;7;1;false;false;127;159;191;;;
                                  -191525;5;0;false;false;63;95;191;;;
                                  -191530;1;0;false;false;;;;;;
                                  -191531;3;0;false;false;63;95;191;;;
                                  -191534;1;0;false;false;;;;;;
                                  -191535;4;0;false;false;63;95;191;;;
                                  -191539;1;0;false;false;;;;;;
                                  -191540;6;0;false;false;63;95;191;;;
                                  -191546;1;0;false;false;;;;;;
                                  -191547;6;0;false;false;63;95;191;;;
                                  -191553;4;0;false;false;;;;;;
                                  -191557;1;0;false;false;63;95;191;;;
                                  -191558;1;0;false;false;;;;;;
                                  -191559;4;0;false;false;127;127;159;;;
                                  -191563;3;0;false;false;;;;;;
                                  -191566;1;0;false;false;63;95;191;;;
                                  -191567;1;0;false;false;;;;;;
                                  -191568;4;0;false;false;127;127;159;;;
                                  -191572;11;0;false;false;63;95;191;;;
                                  -191583;1;0;false;false;;;;;;
                                  -191584;1;0;false;false;127;127;159;;;
                                  -191585;1;0;false;false;;;;;;
                                  -191586;3;0;false;false;63;95;191;;;
                                  -191589;1;0;false;false;;;;;;
                                  -191590;7;0;false;false;63;95;191;;;
                                  -191597;1;0;false;false;;;;;;
                                  -191598;5;0;false;false;63;95;191;;;
                                  -191603;1;0;false;false;;;;;;
                                  -191604;6;0;false;false;63;95;191;;;
                                  -191610;5;0;false;false;127;127;159;;;
                                  -191615;3;0;false;false;;;;;;
                                  -191618;1;0;false;false;63;95;191;;;
                                  -191619;2;0;false;false;;;;;;
                                  -191621;4;0;false;false;127;127;159;;;
                                  -191625;9;0;false;false;63;95;191;;;
                                  -191634;1;0;false;false;;;;;;
                                  -191635;1;0;false;false;127;127;159;;;
                                  -191636;1;0;false;false;;;;;;
                                  -191637;3;0;false;false;63;95;191;;;
                                  -191640;1;0;false;false;;;;;;
                                  -191641;7;0;false;false;63;95;191;;;
                                  -191648;1;0;false;false;;;;;;
                                  -191649;3;0;false;false;63;95;191;;;
                                  -191652;1;0;false;false;;;;;;
                                  -191653;6;0;false;false;63;95;191;;;
                                  -191659;5;0;false;false;127;127;159;;;
                                  -191664;3;0;false;false;;;;;;
                                  -191667;1;0;false;false;63;95;191;;;
                                  -191668;2;0;false;false;;;;;;
                                  -191670;4;0;false;false;127;127;159;;;
                                  -191674;10;0;false;false;63;95;191;;;
                                  -191684;1;0;false;false;;;;;;
                                  -191685;1;0;false;false;127;127;159;;;
                                  -191686;1;0;false;false;;;;;;
                                  -191687;3;0;false;false;63;95;191;;;
                                  -191690;1;0;false;false;;;;;;
                                  -191691;3;0;false;false;63;95;191;;;
                                  -191694;1;0;false;false;;;;;;
                                  -191695;4;0;false;false;63;95;191;;;
                                  -191699;5;0;false;false;127;127;159;;;
                                  -191704;3;0;false;false;;;;;;
                                  -191707;1;0;false;false;63;95;191;;;
                                  -191708;1;0;false;false;;;;;;
                                  -191709;5;0;false;false;127;127;159;;;
                                  -191714;3;0;false;false;;;;;;
                                  -191717;1;0;false;false;63;95;191;;;
                                  -191718;1;0;false;false;;;;;;
                                  -191719;7;1;false;false;127;159;191;;;
                                  -191726;11;0;false;false;63;95;191;;;
                                  -191737;1;0;false;false;;;;;;
                                  -191738;7;0;false;false;63;95;191;;;
                                  -191745;1;0;false;false;;;;;;
                                  -191746;2;0;false;false;63;95;191;;;
                                  -191748;1;0;false;false;;;;;;
                                  -191749;3;0;false;false;63;95;191;;;
                                  -191752;1;0;false;false;;;;;;
                                  -191753;2;0;false;false;63;95;191;;;
                                  -191755;1;0;false;false;;;;;;
                                  -191756;5;0;false;false;63;95;191;;;
                                  -191761;1;0;false;false;;;;;;
                                  -191762;6;0;false;false;63;95;191;;;
                                  -191768;1;0;false;false;;;;;;
                                  -191769;2;0;false;false;63;95;191;;;
                                  -191771;1;0;false;false;;;;;;
                                  -191772;3;0;false;false;63;95;191;;;
                                  -191775;1;0;false;false;;;;;;
                                  -191776;6;0;false;false;63;95;191;;;
                                  -191782;3;0;false;false;;;;;;
                                  -191785;1;0;false;false;63;95;191;;;
                                  -191786;1;0;false;false;;;;;;
                                  -191787;3;0;false;false;63;95;191;;;
                                  -191790;1;0;false;false;;;;;;
                                  -191791;3;0;false;false;63;95;191;;;
                                  -191794;1;0;false;false;;;;;;
                                  -191795;4;0;false;false;63;95;191;;;
                                  -191799;3;0;false;false;;;;;;
                                  -191802;2;0;false;false;63;95;191;;;
                                  -191804;2;0;false;false;;;;;;
                                  -191806;4;1;false;false;127;0;85;;;
                                  -191810;1;0;false;false;;;;;;
                                  -191811;19;0;false;false;0;0;0;;;
                                  -191830;1;0;false;false;;;;;;
                                  -191831;6;0;false;false;0;0;0;;;
                                  -191837;1;0;false;false;;;;;;
                                  -191838;7;1;false;false;127;0;85;;;
                                  -191845;1;0;false;false;;;;;;
                                  -191846;12;0;false;false;0;0;0;;;
                                  -191858;1;0;false;false;;;;;;
                                  -191859;1;0;false;false;0;0;0;;;
                                  -191860;3;0;false;false;;;;;;
                                  -191863;10;0;false;false;0;0;0;;;
                                  -191873;1;0;false;false;;;;;;
                                  -191874;1;0;false;false;0;0;0;;;
                                  -191875;1;0;false;false;;;;;;
                                  -191876;4;1;false;false;127;0;85;;;
                                  -191880;1;0;false;false;0;0;0;;;
                                  -191881;3;0;false;false;;;;;;
                                  -191884;27;0;false;false;0;0;0;;;
                                  -191911;1;0;false;false;;;;;;
                                  -191912;7;0;false;false;0;0;0;;;
                                  -191919;3;0;false;false;;;;;;
                                  -191922;2;1;false;false;127;0;85;;;
                                  -191924;1;0;false;false;;;;;;
                                  -191925;12;0;false;false;0;0;0;;;
                                  -191937;1;0;false;false;;;;;;
                                  -191938;1;0;false;false;0;0;0;;;
                                  -191939;4;0;false;false;;;;;;
                                  -191943;15;0;false;false;0;0;0;;;
                                  -191958;1;0;false;false;;;;;;
                                  -191959;15;0;false;false;0;0;0;;;
                                  -191974;1;0;false;false;;;;;;
                                  -191975;1;0;false;false;0;0;0;;;
                                  -191976;1;0;false;false;;;;;;
                                  -191977;4;1;false;false;127;0;85;;;
                                  -191981;1;0;false;false;0;0;0;;;
                                  -191982;4;0;false;false;;;;;;
                                  -191986;3;1;false;false;127;0;85;;;
                                  -191989;1;0;false;false;;;;;;
                                  -191990;14;0;false;false;0;0;0;;;
                                  -192004;1;0;false;false;;;;;;
                                  -192005;1;0;false;false;0;0;0;;;
                                  -192006;1;0;false;false;;;;;;
                                  -192007;9;0;false;false;0;0;0;;;
                                  -192016;1;0;false;false;;;;;;
                                  -192017;1;0;false;false;0;0;0;;;
                                  -192018;1;0;false;false;;;;;;
                                  -192019;12;0;false;false;0;0;0;;;
                                  -192031;4;0;false;false;;;;;;
                                  -192035;2;1;false;false;127;0;85;;;
                                  -192037;1;0;false;false;;;;;;
                                  -192038;29;0;false;false;0;0;0;;;
                                  -192067;1;0;false;false;;;;;;
                                  -192068;1;0;false;false;0;0;0;;;
                                  -192069;5;0;false;false;;;;;;
                                  -192074;15;0;false;false;0;0;0;;;
                                  -192089;1;0;false;false;;;;;;
                                  -192090;1;0;false;false;0;0;0;;;
                                  -192091;1;0;false;false;;;;;;
                                  -192092;3;1;false;false;127;0;85;;;
                                  -192095;1;0;false;false;;;;;;
                                  -192096;32;0;false;false;0;0;0;;;
                                  -192128;5;0;false;false;;;;;;
                                  -192133;21;0;false;false;0;0;0;;;
                                  -192154;1;0;false;false;;;;;;
                                  -192155;1;0;false;false;0;0;0;;;
                                  -192156;1;0;false;false;;;;;;
                                  -192157;12;0;false;false;0;0;0;;;
                                  -192169;5;0;false;false;;;;;;
                                  -192174;19;0;false;false;0;0;0;;;
                                  -192193;1;0;false;false;;;;;;
                                  -192194;1;0;false;false;0;0;0;;;
                                  -192195;1;0;false;false;;;;;;
                                  -192196;11;0;false;false;0;0;0;;;
                                  -192207;1;0;false;false;;;;;;
                                  -192208;1;0;false;false;0;0;0;;;
                                  -192209;1;0;false;false;;;;;;
                                  -192210;20;0;false;false;0;0;0;;;
                                  -192230;5;0;false;false;;;;;;
                                  -192235;20;0;false;false;0;0;0;;;
                                  -192255;1;0;false;false;;;;;;
                                  -192256;1;0;false;false;0;0;0;;;
                                  -192257;1;0;false;false;;;;;;
                                  -192258;33;0;false;false;0;0;0;;;
                                  -192291;1;0;false;false;;;;;;
                                  -192292;16;0;false;false;0;0;0;;;
                                  -192308;4;0;false;false;;;;;;
                                  -192312;1;0;false;false;0;0;0;;;
                                  -192313;4;0;false;false;;;;;;
                                  -192317;2;1;false;false;127;0;85;;;
                                  -192319;1;0;false;false;;;;;;
                                  -192320;13;0;false;false;0;0;0;;;
                                  -192333;1;0;false;false;;;;;;
                                  -192334;1;0;false;false;0;0;0;;;
                                  -192335;5;0;false;false;;;;;;
                                  -192340;69;0;false;false;63;127;95;;;
                                  -192409;3;0;false;false;;;;;;
                                  -192412;2;1;false;false;127;0;85;;;
                                  -192414;1;0;false;false;;;;;;
                                  -192415;20;0;false;false;0;0;0;;;
                                  -192435;1;0;false;false;;;;;;
                                  -192436;2;0;false;false;0;0;0;;;
                                  -192438;1;0;false;false;;;;;;
                                  -192439;2;0;false;false;0;0;0;;;
                                  -192441;1;0;false;false;;;;;;
                                  -192442;1;0;false;false;0;0;0;;;
                                  -192443;6;0;false;false;;;;;;
                                  -192449;3;1;false;false;127;0;85;;;
                                  -192452;1;0;false;false;;;;;;
                                  -192453;9;0;false;false;0;0;0;;;
                                  -192462;1;0;false;false;;;;;;
                                  -192463;1;0;false;false;0;0;0;;;
                                  -192464;1;0;false;false;;;;;;
                                  -192465;37;0;false;false;0;0;0;;;
                                  -192502;6;0;false;false;;;;;;
                                  -192508;3;1;false;false;127;0;85;;;
                                  -192511;1;0;false;false;;;;;;
                                  -192512;10;0;false;false;0;0;0;;;
                                  -192522;1;0;false;false;;;;;;
                                  -192523;1;0;false;false;0;0;0;;;
                                  -192524;1;0;false;false;;;;;;
                                  -192525;35;0;false;false;0;0;0;;;
                                  -192560;6;0;false;false;;;;;;
                                  -192566;6;0;false;false;0;0;0;;;
                                  -192572;1;0;false;false;;;;;;
                                  -192573;8;0;false;false;0;0;0;;;
                                  -192581;1;0;false;false;;;;;;
                                  -192582;1;0;false;false;0;0;0;;;
                                  -192583;1;0;false;false;;;;;;
                                  -192584;27;0;false;false;0;0;0;;;
                                  -192611;6;0;false;false;;;;;;
                                  -192617;10;0;false;false;0;0;0;;;
                                  -192627;1;0;false;false;;;;;;
                                  -192628;6;0;false;false;0;0;0;;;
                                  -192634;1;0;false;false;;;;;;
                                  -192635;1;0;false;false;0;0;0;;;
                                  -192636;1;0;false;false;;;;;;
                                  -192637;32;0;false;false;0;0;0;;;
                                  -192669;1;0;false;false;;;;;;
                                  -192670;12;0;false;false;0;0;0;;;
                                  -192682;6;0;false;false;;;;;;
                                  -192688;3;1;false;false;127;0;85;;;
                                  -192691;1;0;false;false;;;;;;
                                  -192692;10;0;false;false;0;0;0;;;
                                  -192702;1;0;false;false;;;;;;
                                  -192703;1;0;false;false;0;0;0;;;
                                  -192704;1;0;false;false;;;;;;
                                  -192705;27;0;false;false;0;0;0;;;
                                  -192732;1;0;false;false;;;;;;
                                  -192733;1;0;false;false;0;0;0;;;
                                  -192734;1;0;false;false;;;;;;
                                  -192735;12;0;false;false;0;0;0;;;
                                  -192747;6;0;false;false;;;;;;
                                  -192753;3;1;false;false;127;0;85;;;
                                  -192756;1;0;false;false;;;;;;
                                  -192757;12;0;false;false;0;0;0;;;
                                  -192769;1;0;false;false;;;;;;
                                  -192770;1;0;false;false;0;0;0;;;
                                  -192771;1;0;false;false;;;;;;
                                  -192772;35;0;false;false;0;0;0;;;
                                  -192807;6;0;false;false;;;;;;
                                  -192813;2;1;false;false;127;0;85;;;
                                  -192815;1;0;false;false;;;;;;
                                  -192816;10;0;false;false;0;0;0;;;
                                  -192826;1;0;false;false;;;;;;
                                  -192827;2;0;false;false;0;0;0;;;
                                  -192829;1;0;false;false;;;;;;
                                  -192830;13;0;false;false;0;0;0;;;
                                  -192843;1;0;false;false;;;;;;
                                  -192844;1;0;false;false;0;0;0;;;
                                  -192845;7;0;false;false;;;;;;
                                  -192852;35;0;false;false;0;0;0;;;
                                  -192887;7;0;false;false;;;;;;
                                  -192894;10;0;false;false;0;0;0;;;
                                  -192904;1;0;false;false;;;;;;
                                  -192905;1;0;false;false;0;0;0;;;
                                  -192906;1;0;false;false;;;;;;
                                  -192907;38;0;false;false;0;0;0;;;
                                  -192945;7;0;false;false;;;;;;
                                  -192952;8;0;false;false;0;0;0;;;
                                  -192960;1;0;false;false;;;;;;
                                  -192961;1;0;false;false;0;0;0;;;
                                  -192962;1;0;false;false;;;;;;
                                  -192963;30;0;false;false;0;0;0;;;
                                  -192993;7;0;false;false;;;;;;
                                  -193000;6;0;false;false;0;0;0;;;
                                  -193006;1;0;false;false;;;;;;
                                  -193007;1;0;false;false;0;0;0;;;
                                  -193008;1;0;false;false;;;;;;
                                  -193009;32;0;false;false;0;0;0;;;
                                  -193041;1;0;false;false;;;;;;
                                  -193042;12;0;false;false;0;0;0;;;
                                  -193054;6;0;false;false;;;;;;
                                  -193060;1;0;false;false;0;0;0;;;
                                  -193061;6;0;false;false;;;;;;
                                  -193067;3;1;false;false;127;0;85;;;
                                  -193070;1;0;false;false;;;;;;
                                  -193071;8;0;false;false;0;0;0;;;
                                  -193079;1;0;false;false;;;;;;
                                  -193080;1;0;false;false;0;0;0;;;
                                  -193081;1;0;false;false;;;;;;
                                  -193082;25;0;false;false;0;0;0;;;
                                  -193107;1;0;false;false;;;;;;
                                  -193108;1;0;false;false;0;0;0;;;
                                  -193109;1;0;false;false;;;;;;
                                  -193110;12;0;false;false;0;0;0;;;
                                  -193122;6;0;false;false;;;;;;
                                  -193128;35;0;false;false;0;0;0;;;
                                  -193163;6;0;false;false;;;;;;
                                  -193169;9;0;false;false;0;0;0;;;
                                  -193178;1;0;false;false;;;;;;
                                  -193179;1;0;false;false;0;0;0;;;
                                  -193180;1;0;false;false;;;;;;
                                  -193181;10;0;false;false;0;0;0;;;
                                  -193191;1;0;false;false;;;;;;
                                  -193192;2;0;false;false;0;0;0;;;
                                  -193194;1;0;false;false;;;;;;
                                  -193195;9;0;false;false;0;0;0;;;
                                  -193204;5;0;false;false;;;;;;
                                  -193209;1;0;false;false;0;0;0;;;
                                  -193210;4;0;false;false;;;;;;
                                  -193214;1;0;false;false;0;0;0;;;
                                  -193215;4;0;false;false;;;;;;
                                  -193219;37;0;false;false;0;0;0;;;
                                  -193256;1;0;false;false;;;;;;
                                  -193257;15;0;false;false;0;0;0;;;
                                  -193272;1;0;false;false;;;;;;
                                  -193273;12;0;false;false;0;0;0;;;
                                  -193285;4;0;false;false;;;;;;
                                  -193289;62;0;false;false;63;127;95;;;
                                  -193351;2;0;false;false;;;;;;
                                  -193353;18;0;false;false;63;127;95;;;
                                  -193371;2;0;false;false;;;;;;
                                  -193373;2;1;false;false;127;0;85;;;
                                  -193375;1;0;false;false;;;;;;
                                  -193376;13;0;false;false;0;0;0;;;
                                  -193389;1;0;false;false;;;;;;
                                  -193390;1;0;false;false;0;0;0;;;
                                  -193391;5;0;false;false;;;;;;
                                  -193396;52;0;false;false;63;127;95;;;
                                  -193448;3;0;false;false;;;;;;
                                  -193451;32;0;false;false;0;0;0;;;
                                  -193483;1;0;false;false;;;;;;
                                  -193484;1;0;false;false;0;0;0;;;
                                  -193485;1;0;false;false;;;;;;
                                  -193486;20;0;false;false;0;0;0;;;
                                  -193506;1;0;false;false;;;;;;
                                  -193507;2;0;false;false;0;0;0;;;
                                  -193509;1;0;false;false;;;;;;
                                  -193510;4;1;false;false;127;0;85;;;
                                  -193514;2;0;false;false;0;0;0;;;
                                  -193516;5;0;false;false;;;;;;
                                  -193521;12;0;false;false;0;0;0;;;
                                  -193533;4;0;false;false;;;;;;
                                  -193537;1;0;false;false;0;0;0;;;
                                  -193538;4;0;false;false;;;;;;
                                  -193542;23;0;false;false;0;0;0;;;
                                  -193565;4;0;false;false;;;;;;
                                  -193569;2;1;false;false;127;0;85;;;
                                  -193571;1;0;false;false;;;;;;
                                  -193572;29;0;false;false;0;0;0;;;
                                  -193601;1;0;false;false;;;;;;
                                  -193602;1;0;false;false;0;0;0;;;
                                  -193603;5;0;false;false;;;;;;
                                  -193608;31;0;false;false;0;0;0;;;
                                  -193639;1;0;false;false;;;;;;
                                  -193640;17;0;false;false;0;0;0;;;
                                  -193657;4;0;false;false;;;;;;
                                  -193661;1;0;false;false;0;0;0;;;
                                  -193662;3;0;false;false;;;;;;
                                  -193665;1;0;false;false;0;0;0;;;
                                  -193666;2;0;false;false;;;;;;
                                  -193668;1;0;false;false;0;0;0;;;
                                  -193669;2;0;false;false;;;;;;
                                  -193671;3;0;false;false;63;95;191;;;
                                  -193674;4;0;false;false;;;;;;
                                  -193678;1;0;false;false;63;95;191;;;
                                  -193679;1;0;false;false;;;;;;
                                  -193680;8;0;false;false;63;95;191;;;
                                  -193688;1;0;false;false;;;;;;
                                  -193689;3;0;false;false;63;95;191;;;
                                  -193692;1;0;false;false;;;;;;
                                  -193693;9;0;false;false;63;95;191;;;
                                  -193702;1;0;false;false;;;;;;
                                  -193703;4;0;false;false;63;95;191;;;
                                  -193707;1;0;false;false;;;;;;
                                  -193708;3;0;false;false;63;95;191;;;
                                  -193711;1;0;false;false;;;;;;
                                  -193712;4;0;false;false;63;95;191;;;
                                  -193716;1;0;false;false;;;;;;
                                  -193717;2;0;false;false;63;95;191;;;
                                  -193719;1;0;false;false;;;;;;
                                  -193720;3;0;false;false;63;95;191;;;
                                  -193723;1;0;false;false;;;;;;
                                  -193724;6;0;false;false;127;127;159;;;
                                  -193730;13;0;false;false;63;95;191;;;
                                  -193743;7;0;false;false;127;127;159;;;
                                  -193750;5;0;false;false;;;;;;
                                  -193755;1;0;false;false;63;95;191;;;
                                  -193756;1;0;false;false;;;;;;
                                  -193757;9;0;false;false;63;95;191;;;
                                  -193766;2;0;false;false;;;;;;
                                  -193768;3;0;false;false;63;95;191;;;
                                  -193771;1;0;false;false;;;;;;
                                  -193772;2;0;false;false;63;95;191;;;
                                  -193774;1;0;false;false;;;;;;
                                  -193775;5;0;false;false;63;95;191;;;
                                  -193780;1;0;false;false;;;;;;
                                  -193781;2;0;false;false;63;95;191;;;
                                  -193783;1;0;false;false;;;;;;
                                  -193784;2;0;false;false;63;95;191;;;
                                  -193786;1;0;false;false;;;;;;
                                  -193787;10;0;false;false;63;95;191;;;
                                  -193797;2;0;false;false;;;;;;
                                  -193799;7;0;false;false;63;95;191;;;
                                  -193806;1;0;false;false;;;;;;
                                  -193807;3;0;false;false;63;95;191;;;
                                  -193810;1;0;false;false;;;;;;
                                  -193811;4;0;false;false;63;95;191;;;
                                  -193815;1;0;false;false;;;;;;
                                  -193816;2;0;false;false;63;95;191;;;
                                  -193818;1;0;false;false;;;;;;
                                  -193819;3;0;false;false;63;95;191;;;
                                  -193822;1;0;false;false;;;;;;
                                  -193823;7;0;false;false;63;95;191;;;
                                  -193830;4;0;false;false;;;;;;
                                  -193834;1;0;false;false;63;95;191;;;
                                  -193835;1;0;false;false;;;;;;
                                  -193836;5;0;false;false;63;95;191;;;
                                  -193841;1;0;false;false;;;;;;
                                  -193842;7;0;false;false;63;95;191;;;
                                  -193849;3;0;false;false;;;;;;
                                  -193852;2;0;false;false;63;95;191;;;
                                  -193854;1;0;false;false;;;;;;
                                  -193855;3;0;false;false;63;95;191;;;
                                  -193858;1;0;false;false;;;;;;
                                  -193859;6;0;false;false;63;95;191;;;
                                  -193865;1;0;false;false;;;;;;
                                  -193866;3;0;false;false;63;95;191;;;
                                  -193869;1;0;false;false;;;;;;
                                  -193870;3;0;false;false;63;95;191;;;
                                  -193873;1;0;false;false;;;;;;
                                  -193874;10;0;false;false;63;95;191;;;
                                  -193884;1;0;false;false;;;;;;
                                  -193885;5;0;false;false;63;95;191;;;
                                  -193890;1;0;false;false;;;;;;
                                  -193891;3;0;false;false;63;95;191;;;
                                  -193894;1;0;false;false;;;;;;
                                  -193895;3;0;false;false;63;95;191;;;
                                  -193898;4;0;false;false;;;;;;
                                  -193902;1;0;false;false;63;95;191;;;
                                  -193903;1;0;false;false;;;;;;
                                  -193904;9;0;false;false;63;95;191;;;
                                  -193913;1;0;false;false;;;;;;
                                  -193914;4;0;false;false;63;95;191;;;
                                  -193918;1;0;false;false;;;;;;
                                  -193919;8;0;false;false;63;95;191;;;
                                  -193927;1;0;false;false;;;;;;
                                  -193928;4;0;false;false;63;95;191;;;
                                  -193932;1;0;false;false;;;;;;
                                  -193933;4;0;false;false;63;95;191;;;
                                  -193937;1;0;false;false;;;;;;
                                  -193938;3;0;false;false;63;95;191;;;
                                  -193941;1;0;false;false;;;;;;
                                  -193942;5;0;false;false;63;95;191;;;
                                  -193947;1;0;false;false;;;;;;
                                  -193948;4;0;false;false;63;95;191;;;
                                  -193952;1;0;false;false;;;;;;
                                  -193953;3;0;false;false;63;95;191;;;
                                  -193956;1;0;false;false;;;;;;
                                  -193957;5;0;false;false;63;95;191;;;
                                  -193962;1;0;false;false;;;;;;
                                  -193963;4;0;false;false;63;95;191;;;
                                  -193967;1;0;false;false;;;;;;
                                  -193968;7;0;false;false;63;95;191;;;
                                  -193975;3;0;false;false;;;;;;
                                  -193978;1;0;false;false;63;95;191;;;
                                  -193979;1;0;false;false;;;;;;
                                  -193980;4;0;false;false;63;95;191;;;
                                  -193984;1;0;false;false;;;;;;
                                  -193985;10;0;false;false;63;95;191;;;
                                  -193995;1;0;false;false;;;;;;
                                  -193996;2;0;false;false;63;95;191;;;
                                  -193998;2;0;false;false;;;;;;
                                  -194000;8;0;false;false;63;95;191;;;
                                  -194008;1;0;false;false;;;;;;
                                  -194009;2;0;false;false;63;95;191;;;
                                  -194011;1;0;false;false;;;;;;
                                  -194012;3;0;false;false;63;95;191;;;
                                  -194015;1;0;false;false;;;;;;
                                  -194016;7;0;false;false;63;95;191;;;
                                  -194023;3;0;false;false;;;;;;
                                  -194026;1;0;false;false;63;95;191;;;
                                  -194027;1;0;false;false;;;;;;
                                  -194028;3;0;false;false;127;127;159;;;
                                  -194031;3;0;false;false;;;;;;
                                  -194034;1;0;false;false;63;95;191;;;
                                  -194035;3;0;false;false;;;;;;
                                  -194038;1;0;false;false;63;95;191;;;
                                  -194039;1;0;false;false;;;;;;
                                  -194040;11;1;false;false;127;159;191;;;
                                  -194051;12;0;false;false;63;95;191;;;
                                  -194063;1;0;false;false;;;;;;
                                  -194064;4;0;false;false;127;127;159;;;
                                  -194068;3;0;false;false;;;;;;
                                  -194071;1;0;false;false;63;95;191;;;
                                  -194072;4;0;false;false;;;;;;
                                  -194076;4;0;false;false;127;127;159;;;
                                  -194080;21;0;false;false;63;95;191;;;
                                  -194101;1;0;false;false;;;;;;
                                  -194102;1;0;false;false;127;127;159;;;
                                  -194103;1;0;false;false;;;;;;
                                  -194104;2;0;false;false;63;95;191;;;
                                  -194106;1;0;false;false;;;;;;
                                  -194107;3;0;false;false;63;95;191;;;
                                  -194110;1;0;false;false;;;;;;
                                  -194111;8;0;false;false;63;95;191;;;
                                  -194119;1;0;false;false;;;;;;
                                  -194120;3;0;false;false;63;95;191;;;
                                  -194123;1;0;false;false;;;;;;
                                  -194124;4;0;false;false;63;95;191;;;
                                  -194128;1;0;false;false;;;;;;
                                  -194129;8;0;false;false;63;95;191;;;
                                  -194137;5;0;false;false;127;127;159;;;
                                  -194142;3;0;false;false;;;;;;
                                  -194145;1;0;false;false;63;95;191;;;
                                  -194146;4;0;false;false;;;;;;
                                  -194150;4;0;false;false;127;127;159;;;
                                  -194154;27;0;false;false;63;95;191;;;
                                  -194181;1;0;false;false;;;;;;
                                  -194182;1;0;false;false;127;127;159;;;
                                  -194183;1;0;false;false;;;;;;
                                  -194184;2;0;false;false;63;95;191;;;
                                  -194186;1;0;false;false;;;;;;
                                  -194187;3;0;false;false;63;95;191;;;
                                  -194190;1;0;false;false;;;;;;
                                  -194191;6;0;false;false;63;95;191;;;
                                  -194197;1;0;false;false;;;;;;
                                  -194198;4;0;false;false;63;95;191;;;
                                  -194202;1;0;false;false;;;;;;
                                  -194203;3;0;false;false;63;95;191;;;
                                  -194206;1;0;false;false;;;;;;
                                  -194207;6;0;false;false;63;95;191;;;
                                  -194213;1;0;false;false;;;;;;
                                  -194214;4;0;false;false;63;95;191;;;
                                  -194218;1;0;false;false;;;;;;
                                  -194219;7;0;false;false;63;95;191;;;
                                  -194226;1;0;false;false;;;;;;
                                  -194227;3;0;false;false;63;95;191;;;
                                  -194230;1;0;false;false;;;;;;
                                  -194231;8;0;false;false;63;95;191;;;
                                  -194239;5;0;false;false;127;127;159;;;
                                  -194244;3;0;false;false;;;;;;
                                  -194247;1;0;false;false;63;95;191;;;
                                  -194248;1;0;false;false;;;;;;
                                  -194249;5;0;false;false;127;127;159;;;
                                  -194254;3;0;false;false;;;;;;
                                  -194257;2;0;false;false;63;95;191;;;
                                  -194259;2;0;false;false;;;;;;
                                  -194261;6;1;false;false;127;0;85;;;
                                  -194267;1;0;false;false;;;;;;
                                  -194268;4;1;false;false;127;0;85;;;
                                  -194272;1;0;false;false;;;;;;
                                  -194273;8;0;false;false;0;0;0;;;
                                  -194281;3;0;false;false;;;;;;
                                  -194284;14;0;false;false;0;0;0;;;
                                  -194298;4;0;false;false;;;;;;
                                  -194302;6;0;false;false;0;0;0;;;
                                  -194308;1;0;false;false;;;;;;
                                  -194309;5;0;false;false;0;0;0;;;
                                  -194314;3;0;false;false;;;;;;
                                  -194317;4;0;false;false;0;0;0;;;
                                  -194321;1;0;false;false;;;;;;
                                  -194322;1;0;false;false;0;0;0;;;
                                  -194323;1;0;false;false;;;;;;
                                  -194324;8;0;false;false;0;0;0;;;
                                  -194332;1;0;false;false;;;;;;
                                  -194333;35;0;false;false;0;0;0;;;
                                  -194368;3;0;false;false;;;;;;
                                  -194371;2;1;false;false;127;0;85;;;
                                  -194373;1;0;false;false;;;;;;
                                  -194374;5;0;false;false;0;0;0;;;
                                  -194379;1;0;false;false;;;;;;
                                  -194380;2;0;false;false;0;0;0;;;
                                  -194382;1;0;false;false;;;;;;
                                  -194383;4;1;false;false;127;0;85;;;
                                  -194387;1;0;false;false;;;;;;
                                  -194388;2;0;false;false;0;0;0;;;
                                  -194390;1;0;false;false;;;;;;
                                  -194391;13;0;false;false;0;0;0;;;
                                  -194404;1;0;false;false;;;;;;
                                  -194405;1;0;false;false;0;0;0;;;
                                  -194406;1;0;false;false;;;;;;
                                  -194407;2;0;false;false;0;0;0;;;
                                  -194409;1;0;false;false;;;;;;
                                  -194410;1;0;false;false;0;0;0;;;
                                  -194411;4;0;false;false;;;;;;
                                  -194415;5;0;false;false;0;0;0;;;
                                  -194420;1;0;false;false;;;;;;
                                  -194421;5;0;false;false;0;0;0;;;
                                  -194426;1;0;false;false;;;;;;
                                  -194427;1;0;false;false;0;0;0;;;
                                  -194428;1;0;false;false;;;;;;
                                  -194429;3;1;false;false;127;0;85;;;
                                  -194432;1;0;false;false;;;;;;
                                  -194433;8;0;false;false;0;0;0;;;
                                  -194441;4;0;false;false;;;;;;
                                  -194445;11;0;false;false;0;0;0;;;
                                  -194456;1;0;false;false;;;;;;
                                  -194457;1;0;false;false;0;0;0;;;
                                  -194458;1;0;false;false;;;;;;
                                  -194459;12;0;false;false;0;0;0;;;
                                  -194471;4;0;false;false;;;;;;
                                  -194475;9;0;false;false;0;0;0;;;
                                  -194484;1;0;false;false;;;;;;
                                  -194485;1;0;false;false;0;0;0;;;
                                  -194486;1;0;false;false;;;;;;
                                  -194487;12;0;false;false;0;0;0;;;
                                  -194499;4;0;false;false;;;;;;
                                  -194503;10;0;false;false;0;0;0;;;
                                  -194513;1;0;false;false;;;;;;
                                  -194514;1;0;false;false;0;0;0;;;
                                  -194515;1;0;false;false;;;;;;
                                  -194516;28;0;false;false;0;0;0;;;
                                  -194544;4;0;false;false;;;;;;
                                  -194548;20;0;false;false;0;0;0;;;
                                  -194568;3;0;false;false;;;;;;
                                  -194571;1;0;false;false;0;0;0;;;
                                  -194572;2;0;false;false;;;;;;
                                  -194574;1;0;false;false;0;0;0;;;
                                  -194575;2;0;false;false;;;;;;
                                  -194577;3;0;false;false;63;95;191;;;
                                  -194580;3;0;false;false;;;;;;
                                  -194583;1;0;false;false;63;95;191;;;
                                  -194584;1;0;false;false;;;;;;
                                  -194585;6;0;false;false;63;95;191;;;
                                  -194591;1;0;false;false;;;;;;
                                  -194592;3;0;false;false;63;95;191;;;
                                  -194595;1;0;false;false;;;;;;
                                  -194596;9;0;false;false;63;95;191;;;
                                  -194605;1;0;false;false;;;;;;
                                  -194606;5;0;false;false;63;95;191;;;
                                  -194611;2;0;false;false;;;;;;
                                  -194613;6;0;false;false;63;95;191;;;
                                  -194619;1;0;false;false;;;;;;
                                  -194620;3;0;false;false;63;95;191;;;
                                  -194623;1;0;false;false;;;;;;
                                  -194624;2;0;false;false;63;95;191;;;
                                  -194626;1;0;false;false;;;;;;
                                  -194627;3;0;false;false;63;95;191;;;
                                  -194630;1;0;false;false;;;;;;
                                  -194631;3;0;false;false;63;95;191;;;
                                  -194634;1;0;false;false;;;;;;
                                  -194635;6;0;false;false;63;95;191;;;
                                  -194641;1;0;false;false;;;;;;
                                  -194642;2;0;false;false;63;95;191;;;
                                  -194644;1;0;false;false;;;;;;
                                  -194645;7;0;false;false;63;95;191;;;
                                  -194652;3;0;false;false;;;;;;
                                  -194655;1;0;false;false;63;95;191;;;
                                  -194656;1;0;false;false;;;;;;
                                  -194657;6;0;false;false;63;95;191;;;
                                  -194663;1;0;false;false;;;;;;
                                  -194664;8;0;false;false;63;95;191;;;
                                  -194672;3;0;false;false;;;;;;
                                  -194675;1;0;false;false;63;95;191;;;
                                  -194676;1;0;false;false;;;;;;
                                  -194677;3;0;false;false;127;127;159;;;
                                  -194680;3;0;false;false;;;;;;
                                  -194683;1;0;false;false;63;95;191;;;
                                  -194684;3;0;false;false;;;;;;
                                  -194687;1;0;false;false;63;95;191;;;
                                  -194688;1;0;false;false;;;;;;
                                  -194689;7;1;false;false;127;159;191;;;
                                  -194696;2;0;false;false;63;95;191;;;
                                  -194698;1;0;false;false;;;;;;
                                  -194699;2;0;false;false;63;95;191;;;
                                  -194701;1;0;false;false;;;;;;
                                  -194702;2;0;false;false;63;95;191;;;
                                  -194704;1;0;false;false;;;;;;
                                  -194705;6;0;false;false;63;95;191;;;
                                  -194711;1;0;false;false;;;;;;
                                  -194712;2;0;false;false;63;95;191;;;
                                  -194714;4;0;false;false;;;;;;
                                  -194718;1;0;false;false;63;95;191;;;
                                  -194719;1;0;false;false;;;;;;
                                  -194720;7;1;false;false;127;159;191;;;
                                  -194727;9;0;false;false;63;95;191;;;
                                  -194736;1;0;false;false;;;;;;
                                  -194737;5;0;false;false;63;95;191;;;
                                  -194742;1;0;false;false;;;;;;
                                  -194743;4;0;false;false;63;95;191;;;
                                  -194747;1;0;false;false;;;;;;
                                  -194748;2;0;false;false;63;95;191;;;
                                  -194750;1;0;false;false;;;;;;
                                  -194751;6;0;false;false;63;95;191;;;
                                  -194757;3;0;false;false;;;;;;
                                  -194760;1;0;false;false;63;95;191;;;
                                  -194761;1;0;false;false;;;;;;
                                  -194762;7;1;false;false;127;159;191;;;
                                  -194769;6;0;false;false;63;95;191;;;
                                  -194775;1;0;false;false;;;;;;
                                  -194776;1;0;false;false;63;95;191;;;
                                  -194777;1;0;false;false;;;;;;
                                  -194778;5;0;false;false;63;95;191;;;
                                  -194783;1;0;false;false;;;;;;
                                  -194784;8;0;false;false;63;95;191;;;
                                  -194792;1;0;false;false;;;;;;
                                  -194793;2;0;false;false;63;95;191;;;
                                  -194795;1;0;false;false;;;;;;
                                  -194796;5;0;false;false;63;95;191;;;
                                  -194801;1;0;false;false;;;;;;
                                  -194802;9;0;false;false;63;95;191;;;
                                  -194811;1;0;false;false;;;;;;
                                  -194812;2;0;false;false;63;95;191;;;
                                  -194814;3;0;false;false;;;;;;
                                  -194817;1;0;false;false;63;95;191;;;
                                  -194818;1;0;false;false;;;;;;
                                  -194819;7;1;false;false;127;159;191;;;
                                  -194826;12;0;false;false;63;95;191;;;
                                  -194838;1;0;false;false;;;;;;
                                  -194839;12;0;false;false;63;95;191;;;
                                  -194851;1;0;false;false;;;;;;
                                  -194852;6;0;false;false;63;95;191;;;
                                  -194858;1;0;false;false;;;;;;
                                  -194859;4;0;false;false;63;95;191;;;
                                  -194863;1;0;false;false;;;;;;
                                  -194864;4;0;false;false;63;95;191;;;
                                  -194868;1;0;false;false;;;;;;
                                  -194869;5;0;false;false;63;95;191;;;
                                  -194874;1;0;false;false;;;;;;
                                  -194875;2;0;false;false;63;95;191;;;
                                  -194877;1;0;false;false;;;;;;
                                  -194878;2;0;false;false;63;95;191;;;
                                  -194880;1;0;false;false;;;;;;
                                  -194881;6;0;false;false;63;95;191;;;
                                  -194887;1;0;false;false;;;;;;
                                  -194888;4;0;false;false;63;95;191;;;
                                  -194892;1;0;false;false;;;;;;
                                  -194893;5;0;false;false;63;95;191;;;
                                  -194898;3;0;false;false;;;;;;
                                  -194901;2;0;false;false;63;95;191;;;
                                  -194903;2;0;false;false;;;;;;
                                  -194905;4;1;false;false;127;0;85;;;
                                  -194909;1;0;false;false;;;;;;
                                  -194910;15;0;false;false;0;0;0;;;
                                  -194925;1;0;false;false;;;;;;
                                  -194926;3;0;false;false;0;0;0;;;
                                  -194929;3;1;false;false;127;0;85;;;
                                  -194932;1;0;false;false;;;;;;
                                  -194933;10;0;false;false;0;0;0;;;
                                  -194943;3;1;false;false;127;0;85;;;
                                  -194946;1;0;false;false;;;;;;
                                  -194947;7;0;false;false;0;0;0;;;
                                  -194954;1;0;false;false;;;;;;
                                  -194955;3;1;false;false;127;0;85;;;
                                  -194958;1;0;false;false;;;;;;
                                  -194959;13;0;false;false;0;0;0;;;
                                  -194972;1;0;false;false;;;;;;
                                  -194973;1;0;false;false;0;0;0;;;
                                  -194974;3;0;false;false;;;;;;
                                  -194977;9;0;false;false;0;0;0;;;
                                  -194986;1;0;false;false;;;;;;
                                  -194987;10;0;false;false;0;0;0;;;
                                  -194997;1;0;false;false;;;;;;
                                  -194998;1;0;false;false;0;0;0;;;
                                  -194999;1;0;false;false;;;;;;
                                  -195000;16;0;false;false;0;0;0;;;
                                  -195016;3;0;false;false;;;;;;
                                  -195019;5;0;false;false;0;0;0;;;
                                  -195024;1;0;false;false;;;;;;
                                  -195025;10;0;false;false;0;0;0;;;
                                  -195035;1;0;false;false;;;;;;
                                  -195036;1;0;false;false;0;0;0;;;
                                  -195037;1;0;false;false;;;;;;
                                  -195038;16;0;false;false;0;0;0;;;
                                  -195054;6;0;false;false;;;;;;
                                  -195060;67;0;false;false;63;127;95;;;
                                  -195127;1;0;false;false;;;;;;
                                  -195128;39;0;false;false;63;127;95;;;
                                  -195167;1;0;false;false;;;;;;
                                  -195168;2;1;false;false;127;0;85;;;
                                  -195170;1;0;false;false;;;;;;
                                  -195171;17;0;false;false;0;0;0;;;
                                  -195188;1;0;false;false;;;;;;
                                  -195189;2;0;false;false;0;0;0;;;
                                  -195191;1;0;false;false;;;;;;
                                  -195192;2;0;false;false;0;0;0;;;
                                  -195194;1;0;false;false;;;;;;
                                  -195195;1;0;false;false;0;0;0;;;
                                  -195196;4;0;false;false;;;;;;
                                  -195200;6;1;false;false;127;0;85;;;
                                  -195206;1;0;false;false;0;0;0;;;
                                  -195207;3;0;false;false;;;;;;
                                  -195210;1;0;false;false;0;0;0;;;
                                  -195211;3;0;false;false;;;;;;
                                  -195214;2;1;false;false;127;0;85;;;
                                  -195216;1;0;false;false;;;;;;
                                  -195217;13;0;false;false;0;0;0;;;
                                  -195230;1;0;false;false;;;;;;
                                  -195231;1;0;false;false;0;0;0;;;
                                  -195232;1;0;false;false;;;;;;
                                  -195233;2;0;false;false;0;0;0;;;
                                  -195235;1;0;false;false;;;;;;
                                  -195236;1;0;false;false;0;0;0;;;
                                  -195237;4;0;false;false;;;;;;
                                  -195241;71;0;false;false;63;127;95;;;
                                  -195312;2;0;false;false;;;;;;
                                  -195314;5;0;false;false;0;0;0;;;
                                  -195319;1;0;false;false;;;;;;
                                  -195320;10;0;false;false;0;0;0;;;
                                  -195330;1;0;false;false;;;;;;
                                  -195331;1;0;false;false;0;0;0;;;
                                  -195332;1;0;false;false;;;;;;
                                  -195333;16;0;false;false;0;0;0;;;
                                  -195349;4;0;false;false;;;;;;
                                  -195353;3;1;false;false;127;0;85;;;
                                  -195356;1;0;false;false;;;;;;
                                  -195357;9;0;false;false;0;0;0;;;
                                  -195366;1;0;false;false;;;;;;
                                  -195367;1;0;false;false;0;0;0;;;
                                  -195368;1;0;false;false;;;;;;
                                  -195369;23;0;false;false;0;0;0;;;
                                  -195392;4;0;false;false;;;;;;
                                  -195396;3;1;false;false;127;0;85;;;
                                  -195399;1;0;false;false;;;;;;
                                  -195400;7;0;false;false;0;0;0;;;
                                  -195407;1;0;false;false;;;;;;
                                  -195408;1;0;false;false;0;0;0;;;
                                  -195409;1;0;false;false;;;;;;
                                  -195410;12;0;false;false;0;0;0;;;
                                  -195422;1;0;false;false;;;;;;
                                  -195423;1;0;false;false;0;0;0;;;
                                  -195424;1;0;false;false;;;;;;
                                  -195425;17;0;false;false;0;0;0;;;
                                  -195442;1;0;false;false;;;;;;
                                  -195443;1;0;false;false;0;0;0;;;
                                  -195444;1;0;false;false;;;;;;
                                  -195445;18;0;false;false;0;0;0;;;
                                  -195463;4;0;false;false;;;;;;
                                  -195467;2;1;false;false;127;0;85;;;
                                  -195469;1;0;false;false;;;;;;
                                  -195470;16;0;false;false;0;0;0;;;
                                  -195486;1;0;false;false;;;;;;
                                  -195487;1;0;false;false;0;0;0;;;
                                  -195488;5;0;false;false;;;;;;
                                  -195493;9;0;false;false;0;0;0;;;
                                  -195502;1;0;false;false;;;;;;
                                  -195503;1;0;false;false;0;0;0;;;
                                  -195504;1;0;false;false;;;;;;
                                  -195505;2;0;false;false;0;0;0;;;
                                  -195507;4;0;false;false;;;;;;
                                  -195511;1;0;false;false;0;0;0;;;
                                  -195512;4;0;false;false;;;;;;
                                  -195516;3;1;false;false;127;0;85;;;
                                  -195519;1;0;false;false;;;;;;
                                  -195520;7;0;false;false;0;0;0;;;
                                  -195527;1;0;false;false;;;;;;
                                  -195528;12;0;false;false;0;0;0;;;
                                  -195540;4;0;false;false;;;;;;
                                  -195544;5;0;false;false;0;0;0;;;
                                  -195549;1;0;false;false;;;;;;
                                  -195550;11;0;false;false;0;0;0;;;
                                  -195561;4;0;false;false;;;;;;
                                  -195565;2;0;false;false;0;0;0;;;
                                  -195567;1;0;false;false;;;;;;
                                  -195568;7;0;false;false;0;0;0;;;
                                  -195575;4;0;false;false;;;;;;
                                  -195579;7;1;false;false;127;0;85;;;
                                  -195586;1;0;false;false;;;;;;
                                  -195587;12;0;false;false;0;0;0;;;
                                  -195599;1;0;false;false;;;;;;
                                  -195600;1;0;false;false;0;0;0;;;
                                  -195601;1;0;false;false;;;;;;
                                  -195602;13;0;false;false;0;0;0;;;
                                  -195615;1;0;false;false;;;;;;
                                  -195616;2;0;false;false;0;0;0;;;
                                  -195618;1;0;false;false;;;;;;
                                  -195619;17;0;false;false;0;0;0;;;
                                  -195636;1;0;false;false;;;;;;
                                  -195637;2;0;false;false;0;0;0;;;
                                  -195639;1;0;false;false;;;;;;
                                  -195640;9;0;false;false;0;0;0;;;
                                  -195649;4;0;false;false;;;;;;
                                  -195653;17;0;false;false;0;0;0;;;
                                  -195670;1;0;false;false;;;;;;
                                  -195671;1;0;false;false;0;0;0;;;
                                  -195672;1;0;false;false;;;;;;
                                  -195673;9;0;false;false;0;0;0;;;
                                  -195682;4;0;false;false;;;;;;
                                  -195686;2;1;false;false;127;0;85;;;
                                  -195688;1;0;false;false;;;;;;
                                  -195689;14;0;false;false;0;0;0;;;
                                  -195703;1;0;false;false;;;;;;
                                  -195704;1;0;false;false;0;0;0;;;
                                  -195705;5;0;false;false;;;;;;
                                  -195710;6;0;false;false;0;0;0;;;
                                  -195716;1;0;false;false;;;;;;
                                  -195717;1;0;false;false;0;0;0;;;
                                  -195718;1;0;false;false;;;;;;
                                  -195719;2;0;false;false;0;0;0;;;
                                  -195721;5;0;false;false;;;;;;
                                  -195726;11;0;false;false;0;0;0;;;
                                  -195737;1;0;false;false;;;;;;
                                  -195738;1;0;false;false;0;0;0;;;
                                  -195739;1;0;false;false;;;;;;
                                  -195740;13;0;false;false;0;0;0;;;
                                  -195753;5;0;false;false;;;;;;
                                  -195758;10;0;false;false;0;0;0;;;
                                  -195768;1;0;false;false;;;;;;
                                  -195769;1;0;false;false;0;0;0;;;
                                  -195770;1;0;false;false;;;;;;
                                  -195771;3;1;false;false;127;0;85;;;
                                  -195774;1;0;false;false;;;;;;
                                  -195775;19;0;false;false;0;0;0;;;
                                  -195794;1;0;false;false;;;;;;
                                  -195795;17;0;false;false;0;0;0;;;
                                  -195812;1;0;false;false;;;;;;
                                  -195813;14;0;false;false;0;0;0;;;
                                  -195827;5;0;false;false;;;;;;
                                  -195832;6;0;false;false;0;0;0;;;
                                  -195838;1;0;false;false;;;;;;
                                  -195839;1;0;false;false;0;0;0;;;
                                  -195840;1;0;false;false;;;;;;
                                  -195841;3;1;false;false;127;0;85;;;
                                  -195844;1;0;false;false;;;;;;
                                  -195845;14;0;false;false;0;0;0;;;
                                  -195859;1;0;false;false;;;;;;
                                  -195860;9;0;false;false;0;0;0;;;
                                  -195869;5;0;false;false;;;;;;
                                  -195874;26;0;false;false;0;0;0;;;
                                  -195900;5;0;false;false;;;;;;
                                  -195905;33;0;false;false;0;0;0;;;
                                  -195938;5;0;false;false;;;;;;
                                  -195943;33;0;false;false;0;0;0;;;
                                  -195976;4;0;false;false;;;;;;
                                  -195980;1;0;false;false;0;0;0;;;
                                  -195981;1;0;false;false;;;;;;
                                  -195982;4;1;false;false;127;0;85;;;
                                  -195986;1;0;false;false;;;;;;
                                  -195987;1;0;false;false;0;0;0;;;
                                  -195988;5;0;false;false;;;;;;
                                  -195993;6;0;false;false;0;0;0;;;
                                  -195999;1;0;false;false;;;;;;
                                  -196000;1;0;false;false;0;0;0;;;
                                  -196001;1;0;false;false;;;;;;
                                  -196002;7;0;false;false;0;0;0;;;
                                  -196009;5;0;false;false;;;;;;
                                  -196014;11;0;false;false;0;0;0;;;
                                  -196025;1;0;false;false;;;;;;
                                  -196026;1;0;false;false;0;0;0;;;
                                  -196027;1;0;false;false;;;;;;
                                  -196028;6;0;false;false;0;0;0;;;
                                  -196034;1;0;false;false;;;;;;
                                  -196035;1;0;false;false;0;0;0;;;
                                  -196036;1;0;false;false;;;;;;
                                  -196037;13;0;false;false;0;0;0;;;
                                  -196050;5;0;false;false;;;;;;
                                  -196055;10;0;false;false;0;0;0;;;
                                  -196065;1;0;false;false;;;;;;
                                  -196066;1;0;false;false;0;0;0;;;
                                  -196067;1;0;false;false;;;;;;
                                  -196068;4;1;false;false;127;0;85;;;
                                  -196072;1;0;false;false;0;0;0;;;
                                  -196073;5;0;false;false;;;;;;
                                  -196078;6;0;false;false;0;0;0;;;
                                  -196084;1;0;false;false;;;;;;
                                  -196085;1;0;false;false;0;0;0;;;
                                  -196086;1;0;false;false;;;;;;
                                  -196087;3;0;false;false;0;0;0;;;
                                  -196090;4;0;false;false;;;;;;
                                  -196094;1;0;false;false;0;0;0;;;
                                  -196095;6;0;false;false;;;;;;
                                  -196101;3;1;false;false;127;0;85;;;
                                  -196104;1;0;false;false;;;;;;
                                  -196105;1;0;false;false;0;0;0;;;
                                  -196106;3;1;false;false;127;0;85;;;
                                  -196109;1;0;false;false;;;;;;
                                  -196110;1;0;false;false;0;0;0;;;
                                  -196111;1;0;false;false;;;;;;
                                  -196112;1;0;false;false;0;0;0;;;
                                  -196113;1;0;false;false;;;;;;
                                  -196114;10;0;false;false;0;0;0;;;
                                  -196124;1;0;false;false;;;;;;
                                  -196125;6;0;false;false;0;0;0;;;
                                  -196131;1;0;false;false;;;;;;
                                  -196132;1;0;false;false;0;0;0;;;
                                  -196133;1;0;false;false;;;;;;
                                  -196134;11;0;false;false;0;0;0;;;
                                  -196145;1;0;false;false;;;;;;
                                  -196146;2;0;false;false;0;0;0;;;
                                  -196148;1;0;false;false;;;;;;
                                  -196149;1;0;false;false;0;0;0;;;
                                  -196150;1;0;false;false;;;;;;
                                  -196151;1;0;false;false;0;0;0;;;
                                  -196152;1;0;false;false;;;;;;
                                  -196153;10;0;false;false;0;0;0;;;
                                  -196163;1;0;false;false;;;;;;
                                  -196164;4;0;false;false;0;0;0;;;
                                  -196168;1;0;false;false;;;;;;
                                  -196169;6;0;false;false;0;0;0;;;
                                  -196175;1;0;false;false;;;;;;
                                  -196176;2;0;false;false;0;0;0;;;
                                  -196178;1;0;false;false;;;;;;
                                  -196179;11;0;false;false;0;0;0;;;
                                  -196190;1;0;false;false;;;;;;
                                  -196191;1;0;false;false;0;0;0;;;
                                  -196192;5;0;false;false;;;;;;
                                  -196197;6;0;false;false;0;0;0;;;
                                  -196203;1;0;false;false;;;;;;
                                  -196204;4;0;false;false;0;0;0;;;
                                  -196208;1;0;false;false;;;;;;
                                  -196209;1;0;false;false;0;0;0;;;
                                  -196210;1;0;false;false;;;;;;
                                  -196211;19;0;false;false;0;0;0;;;
                                  -196230;5;0;false;false;;;;;;
                                  -196235;23;0;false;false;0;0;0;;;
                                  -196258;1;0;false;false;;;;;;
                                  -196259;2;0;false;false;0;0;0;;;
                                  -196261;1;0;false;false;;;;;;
                                  -196262;7;0;false;false;0;0;0;;;
                                  -196269;1;0;false;false;;;;;;
                                  -196270;7;0;false;false;0;0;0;;;
                                  -196277;1;0;false;false;;;;;;
                                  -196278;11;0;false;false;0;0;0;;;
                                  -196289;1;0;false;false;;;;;;
                                  -196290;11;0;false;false;0;0;0;;;
                                  -196301;1;0;false;false;;;;;;
                                  -196302;4;1;false;false;127;0;85;;;
                                  -196306;2;0;false;false;0;0;0;;;
                                  -196308;4;0;false;false;;;;;;
                                  -196312;1;0;false;false;0;0;0;;;
                                  -196313;4;0;false;false;;;;;;
                                  -196317;2;1;false;false;127;0;85;;;
                                  -196319;1;0;false;false;;;;;;
                                  -196320;7;0;false;false;0;0;0;;;
                                  -196327;1;0;false;false;;;;;;
                                  -196328;1;0;false;false;0;0;0;;;
                                  -196329;1;0;false;false;;;;;;
                                  -196330;12;0;false;false;0;0;0;;;
                                  -196342;1;0;false;false;;;;;;
                                  -196343;1;0;false;false;0;0;0;;;
                                  -196344;5;0;false;false;;;;;;
                                  -196349;33;0;false;false;0;0;0;;;
                                  -196382;5;0;false;false;;;;;;
                                  -196387;23;0;false;false;0;0;0;;;
                                  -196410;1;0;false;false;;;;;;
                                  -196411;7;0;false;false;0;0;0;;;
                                  -196418;1;0;false;false;;;;;;
                                  -196419;17;0;false;false;0;0;0;;;
                                  -196436;1;0;false;false;;;;;;
                                  -196437;11;0;false;false;0;0;0;;;
                                  -196448;1;0;false;false;;;;;;
                                  -196449;1;0;false;false;0;0;0;;;
                                  -196450;1;0;false;false;;;;;;
                                  -196451;8;0;false;false;0;0;0;;;
                                  -196459;4;0;false;false;;;;;;
                                  -196463;1;0;false;false;0;0;0;;;
                                  -196464;4;0;false;false;;;;;;
                                  -196468;2;1;false;false;127;0;85;;;
                                  -196470;1;0;false;false;;;;;;
                                  -196471;14;0;false;false;0;0;0;;;
                                  -196485;1;0;false;false;;;;;;
                                  -196486;1;0;false;false;0;0;0;;;
                                  -196487;5;0;false;false;;;;;;
                                  -196492;19;0;false;false;0;0;0;;;
                                  -196511;1;0;false;false;;;;;;
                                  -196512;11;0;false;false;0;0;0;;;
                                  -196523;1;0;false;false;;;;;;
                                  -196524;11;0;false;false;0;0;0;;;
                                  -196535;1;0;false;false;;;;;;
                                  -196536;8;0;false;false;0;0;0;;;
                                  -196544;5;0;false;false;;;;;;
                                  -196549;24;0;false;false;0;0;0;;;
                                  -196573;1;0;false;false;;;;;;
                                  -196574;2;0;false;false;0;0;0;;;
                                  -196576;1;0;false;false;;;;;;
                                  -196577;8;0;false;false;0;0;0;;;
                                  -196585;5;0;false;false;;;;;;
                                  -196590;17;0;false;false;0;0;0;;;
                                  -196607;5;0;false;false;;;;;;
                                  -196612;21;0;false;false;0;0;0;;;
                                  -196633;4;0;false;false;;;;;;
                                  -196637;1;0;false;false;0;0;0;;;
                                  -196638;3;0;false;false;;;;;;
                                  -196641;1;0;false;false;0;0;0;;;
                                  -196642;3;0;false;false;;;;;;
                                  -196645;15;0;false;false;0;0;0;;;
                                  -196660;1;0;false;false;;;;;;
                                  -196661;11;0;false;false;0;0;0;;;
                                  -196672;1;0;false;false;;;;;;
                                  -196673;11;0;false;false;0;0;0;;;
                                  -196684;1;0;false;false;;;;;;
                                  -196685;3;0;false;false;0;0;0;;;
                                  -196688;2;0;false;false;;;;;;
                                  -196690;1;0;false;false;0;0;0;;;
                                  -196691;2;0;false;false;;;;;;
                                  -196693;3;0;false;false;63;95;191;;;
                                  -196696;4;0;false;false;;;;;;
                                  -196700;1;0;false;false;63;95;191;;;
                                  -196701;1;0;false;false;;;;;;
                                  -196702;6;0;false;false;63;95;191;;;
                                  -196708;1;0;false;false;;;;;;
                                  -196709;3;0;false;false;63;95;191;;;
                                  -196712;1;0;false;false;;;;;;
                                  -196713;8;0;false;false;63;95;191;;;
                                  -196721;1;0;false;false;;;;;;
                                  -196722;4;0;false;false;63;95;191;;;
                                  -196726;1;0;false;false;;;;;;
                                  -196727;2;0;false;false;63;95;191;;;
                                  -196729;1;0;false;false;;;;;;
                                  -196730;3;0;false;false;63;95;191;;;
                                  -196733;1;0;false;false;;;;;;
                                  -196734;7;0;false;false;63;95;191;;;
                                  -196741;1;0;false;false;;;;;;
                                  -196742;8;0;false;false;63;95;191;;;
                                  -196750;3;0;false;false;;;;;;
                                  -196753;1;0;false;false;63;95;191;;;
                                  -196754;3;0;false;false;;;;;;
                                  -196757;1;0;false;false;63;95;191;;;
                                  -196758;1;0;false;false;;;;;;
                                  -196759;11;1;false;false;127;159;191;;;
                                  -196770;12;0;false;false;63;95;191;;;
                                  -196782;1;0;false;false;;;;;;
                                  -196783;4;0;false;false;127;127;159;;;
                                  -196787;3;0;false;false;;;;;;
                                  -196790;1;0;false;false;63;95;191;;;
                                  -196791;4;0;false;false;;;;;;
                                  -196795;4;0;false;false;127;127;159;;;
                                  -196799;21;0;false;false;63;95;191;;;
                                  -196820;1;0;false;false;;;;;;
                                  -196821;1;0;false;false;127;127;159;;;
                                  -196822;1;0;false;false;;;;;;
                                  -196823;2;0;false;false;63;95;191;;;
                                  -196825;1;0;false;false;;;;;;
                                  -196826;3;0;false;false;63;95;191;;;
                                  -196829;1;0;false;false;;;;;;
                                  -196830;8;0;false;false;63;95;191;;;
                                  -196838;1;0;false;false;;;;;;
                                  -196839;3;0;false;false;63;95;191;;;
                                  -196842;1;0;false;false;;;;;;
                                  -196843;4;0;false;false;63;95;191;;;
                                  -196847;1;0;false;false;;;;;;
                                  -196848;8;0;false;false;63;95;191;;;
                                  -196856;5;0;false;false;127;127;159;;;
                                  -196861;3;0;false;false;;;;;;
                                  -196864;1;0;false;false;63;95;191;;;
                                  -196865;4;0;false;false;;;;;;
                                  -196869;4;0;false;false;127;127;159;;;
                                  -196873;27;0;false;false;63;95;191;;;
                                  -196900;1;0;false;false;;;;;;
                                  -196901;1;0;false;false;127;127;159;;;
                                  -196902;1;0;false;false;;;;;;
                                  -196903;2;0;false;false;63;95;191;;;
                                  -196905;1;0;false;false;;;;;;
                                  -196906;3;0;false;false;63;95;191;;;
                                  -196909;1;0;false;false;;;;;;
                                  -196910;6;0;false;false;63;95;191;;;
                                  -196916;1;0;false;false;;;;;;
                                  -196917;4;0;false;false;63;95;191;;;
                                  -196921;1;0;false;false;;;;;;
                                  -196922;3;0;false;false;63;95;191;;;
                                  -196925;1;0;false;false;;;;;;
                                  -196926;6;0;false;false;63;95;191;;;
                                  -196932;1;0;false;false;;;;;;
                                  -196933;4;0;false;false;63;95;191;;;
                                  -196937;1;0;false;false;;;;;;
                                  -196938;7;0;false;false;63;95;191;;;
                                  -196945;1;0;false;false;;;;;;
                                  -196946;3;0;false;false;63;95;191;;;
                                  -196949;1;0;false;false;;;;;;
                                  -196950;8;0;false;false;63;95;191;;;
                                  -196958;5;0;false;false;127;127;159;;;
                                  -196963;3;0;false;false;;;;;;
                                  -196966;1;0;false;false;63;95;191;;;
                                  -196967;1;0;false;false;;;;;;
                                  -196968;5;0;false;false;127;127;159;;;
                                  -196973;3;0;false;false;;;;;;
                                  -196976;2;0;false;false;63;95;191;;;
                                  -196978;2;0;false;false;;;;;;
                                  -196980;6;1;false;false;127;0;85;;;
                                  -196986;1;0;false;false;;;;;;
                                  -196987;4;1;false;false;127;0;85;;;
                                  -196991;1;0;false;false;;;;;;
                                  -196992;7;0;false;false;0;0;0;;;
                                  -196999;1;0;false;false;;;;;;
                                  -197000;1;0;false;false;0;0;0;;;
                                  -197001;3;0;false;false;;;;;;
                                  -197004;14;0;false;false;0;0;0;;;
                                  -197018;3;0;false;false;;;;;;
                                  -197021;7;0;false;false;0;0;0;;;
                                  -197028;1;0;false;false;;;;;;
                                  -197029;7;0;false;false;0;0;0;;;
                                  -197036;1;0;false;false;;;;;;
                                  -197037;1;0;false;false;0;0;0;;;
                                  -197038;1;0;false;false;;;;;;
                                  -197039;3;1;false;false;127;0;85;;;
                                  -197042;1;0;false;false;;;;;;
                                  -197043;10;0;false;false;0;0;0;;;
                                  -197053;3;0;false;false;;;;;;
                                  -197056;22;0;false;false;0;0;0;;;
                                  -197078;1;0;false;false;;;;;;
                                  -197079;7;0;false;false;0;0;0;;;
                                  -197086;1;0;false;false;;;;;;
                                  -197087;1;0;false;false;0;0;0;;;
                                  -197088;1;0;false;false;;;;;;
                                  -197089;3;1;false;false;127;0;85;;;
                                  -197092;1;0;false;false;;;;;;
                                  -197093;25;0;false;false;0;0;0;;;
                                  -197118;6;0;false;false;;;;;;
                                  -197124;27;0;false;false;0;0;0;;;
                                  -197151;1;0;false;false;;;;;;
                                  -197152;1;0;false;false;0;0;0;;;
                                  -197153;1;0;false;false;;;;;;
                                  -197154;4;1;false;false;127;0;85;;;
                                  -197158;1;0;false;false;0;0;0;;;
                                  -197159;3;0;false;false;;;;;;
                                  -197162;27;0;false;false;0;0;0;;;
                                  -197189;1;0;false;false;;;;;;
                                  -197190;1;0;false;false;0;0;0;;;
                                  -197191;1;0;false;false;;;;;;
                                  -197192;4;1;false;false;127;0;85;;;
                                  -197196;1;0;false;false;0;0;0;;;
                                  -197197;3;0;false;false;;;;;;
                                  -197200;26;0;false;false;0;0;0;;;
                                  -197226;1;0;false;false;;;;;;
                                  -197227;1;0;false;false;0;0;0;;;
                                  -197228;1;0;false;false;;;;;;
                                  -197229;4;1;false;false;127;0;85;;;
                                  -197233;1;0;false;false;0;0;0;;;
                                  -197234;3;0;false;false;;;;;;
                                  -197237;27;0;false;false;0;0;0;;;
                                  -197264;1;0;false;false;;;;;;
                                  -197265;1;0;false;false;0;0;0;;;
                                  -197266;1;0;false;false;;;;;;
                                  -197267;4;1;false;false;127;0;85;;;
                                  -197271;1;0;false;false;0;0;0;;;
                                  -197272;4;0;false;false;;;;;;
                                  -197276;3;1;false;false;127;0;85;;;
                                  -197279;1;0;false;false;;;;;;
                                  -197280;9;0;false;false;0;0;0;;;
                                  -197289;4;1;false;false;127;0;85;;;
                                  -197293;1;0;false;false;0;0;0;;;
                                  -197294;1;0;false;false;;;;;;
                                  -197295;8;0;false;false;0;0;0;;;
                                  -197303;1;0;false;false;;;;;;
                                  -197304;15;0;false;false;0;0;0;;;
                                  -197319;3;0;false;false;;;;;;
                                  -197322;18;0;false;false;0;0;0;;;
                                  -197340;2;0;false;false;;;;;;
                                  -197342;1;0;false;false;0;0;0;;;
                                  -197343;2;0;false;false;;;;;;
                                  -197345;3;0;false;false;63;95;191;;;
                                  -197348;4;0;false;false;;;;;;
                                  -197352;1;0;false;false;63;95;191;;;
                                  -197353;1;0;false;false;;;;;;
                                  -197354;7;0;false;false;63;95;191;;;
                                  -197361;1;0;false;false;;;;;;
                                  -197362;1;0;false;false;63;95;191;;;
                                  -197363;1;0;false;false;;;;;;
                                  -197364;8;0;false;false;63;95;191;;;
                                  -197372;1;0;false;false;;;;;;
                                  -197373;4;0;false;false;63;95;191;;;
                                  -197377;1;0;false;false;;;;;;
                                  -197378;4;0;false;false;63;95;191;;;
                                  -197382;1;0;false;false;;;;;;
                                  -197383;5;0;false;false;63;95;191;;;
                                  -197388;1;0;false;false;;;;;;
                                  -197389;3;0;false;false;63;95;191;;;
                                  -197392;1;0;false;false;;;;;;
                                  -197393;8;0;false;false;63;95;191;;;
                                  -197401;1;0;false;false;;;;;;
                                  -197402;4;0;false;false;63;95;191;;;
                                  -197406;3;0;false;false;;;;;;
                                  -197409;1;0;false;false;63;95;191;;;
                                  -197410;1;0;false;false;;;;;;
                                  -197411;2;0;false;false;63;95;191;;;
                                  -197413;1;0;false;false;;;;;;
                                  -197414;3;0;false;false;63;95;191;;;
                                  -197417;1;0;false;false;;;;;;
                                  -197418;9;0;false;false;63;95;191;;;
                                  -197427;1;0;false;false;;;;;;
                                  -197428;8;0;false;false;63;95;191;;;
                                  -197436;3;0;false;false;;;;;;
                                  -197439;1;0;false;false;63;95;191;;;
                                  -197440;1;0;false;false;;;;;;
                                  -197441;3;0;false;false;127;127;159;;;
                                  -197444;3;0;false;false;;;;;;
                                  -197447;1;0;false;false;63;95;191;;;
                                  -197448;1;0;false;false;;;;;;
                                  -197449;3;0;false;false;63;95;191;;;
                                  -197452;1;0;false;false;;;;;;
                                  -197453;8;0;false;false;63;95;191;;;
                                  -197461;1;0;false;false;;;;;;
                                  -197462;3;0;false;false;63;95;191;;;
                                  -197465;1;0;false;false;;;;;;
                                  -197466;2;0;false;false;63;95;191;;;
                                  -197468;1;0;false;false;;;;;;
                                  -197469;3;0;false;false;63;95;191;;;
                                  -197472;1;0;false;false;;;;;;
                                  -197473;2;0;false;false;63;95;191;;;
                                  -197475;1;0;false;false;;;;;;
                                  -197476;1;0;false;false;63;95;191;;;
                                  -197477;1;0;false;false;;;;;;
                                  -197478;3;0;false;false;63;95;191;;;
                                  -197481;1;0;false;false;127;127;159;;;
                                  -197482;2;0;false;false;63;95;191;;;
                                  -197484;1;0;false;false;;;;;;
                                  -197485;7;0;false;false;63;95;191;;;
                                  -197492;3;0;false;false;;;;;;
                                  -197495;1;0;false;false;63;95;191;;;
                                  -197496;1;0;false;false;;;;;;
                                  -197497;4;0;false;false;127;127;159;;;
                                  -197501;3;0;false;false;;;;;;
                                  -197504;1;0;false;false;63;95;191;;;
                                  -197505;4;0;false;false;;;;;;
                                  -197509;1;0;false;false;63;95;191;;;
                                  -197510;1;0;false;false;;;;;;
                                  -197511;7;1;false;false;127;159;191;;;
                                  -197518;7;0;false;false;63;95;191;;;
                                  -197525;1;0;false;false;;;;;;
                                  -197526;3;0;false;false;63;95;191;;;
                                  -197529;1;0;false;false;;;;;;
                                  -197530;7;0;false;false;63;95;191;;;
                                  -197537;1;0;false;false;;;;;;
                                  -197538;2;0;false;false;63;95;191;;;
                                  -197540;1;0;false;false;;;;;;
                                  -197541;5;0;false;false;63;95;191;;;
                                  -197546;1;0;false;false;;;;;;
                                  -197547;2;0;false;false;63;95;191;;;
                                  -197549;3;0;false;false;;;;;;
                                  -197552;1;0;false;false;63;95;191;;;
                                  -197553;1;0;false;false;;;;;;
                                  -197554;11;1;false;false;127;159;191;;;
                                  -197565;12;0;false;false;63;95;191;;;
                                  -197577;1;0;false;false;;;;;;
                                  -197578;4;0;false;false;127;127;159;;;
                                  -197582;3;0;false;false;;;;;;
                                  -197585;1;0;false;false;63;95;191;;;
                                  -197586;4;0;false;false;;;;;;
                                  -197590;4;0;false;false;127;127;159;;;
                                  -197594;21;0;false;false;63;95;191;;;
                                  -197615;1;0;false;false;;;;;;
                                  -197616;1;0;false;false;127;127;159;;;
                                  -197617;1;0;false;false;;;;;;
                                  -197618;2;0;false;false;63;95;191;;;
                                  -197620;1;0;false;false;;;;;;
                                  -197621;3;0;false;false;63;95;191;;;
                                  -197624;1;0;false;false;;;;;;
                                  -197625;8;0;false;false;63;95;191;;;
                                  -197633;1;0;false;false;;;;;;
                                  -197634;3;0;false;false;63;95;191;;;
                                  -197637;1;0;false;false;;;;;;
                                  -197638;4;0;false;false;63;95;191;;;
                                  -197642;1;0;false;false;;;;;;
                                  -197643;8;0;false;false;63;95;191;;;
                                  -197651;5;0;false;false;127;127;159;;;
                                  -197656;3;0;false;false;;;;;;
                                  -197659;1;0;false;false;63;95;191;;;
                                  -197660;4;0;false;false;;;;;;
                                  -197664;4;0;false;false;127;127;159;;;
                                  -197668;27;0;false;false;63;95;191;;;
                                  -197695;1;0;false;false;;;;;;
                                  -197696;1;0;false;false;127;127;159;;;
                                  -197697;1;0;false;false;;;;;;
                                  -197698;2;0;false;false;63;95;191;;;
                                  -197700;1;0;false;false;;;;;;
                                  -197701;3;0;false;false;63;95;191;;;
                                  -197704;1;0;false;false;;;;;;
                                  -197705;6;0;false;false;63;95;191;;;
                                  -197711;1;0;false;false;;;;;;
                                  -197712;4;0;false;false;63;95;191;;;
                                  -197716;1;0;false;false;;;;;;
                                  -197717;3;0;false;false;63;95;191;;;
                                  -197720;1;0;false;false;;;;;;
                                  -197721;6;0;false;false;63;95;191;;;
                                  -197727;1;0;false;false;;;;;;
                                  -197728;4;0;false;false;63;95;191;;;
                                  -197732;1;0;false;false;;;;;;
                                  -197733;7;0;false;false;63;95;191;;;
                                  -197740;1;0;false;false;;;;;;
                                  -197741;3;0;false;false;63;95;191;;;
                                  -197744;1;0;false;false;;;;;;
                                  -197745;8;0;false;false;63;95;191;;;
                                  -197753;5;0;false;false;127;127;159;;;
                                  -197758;3;0;false;false;;;;;;
                                  -197761;1;0;false;false;63;95;191;;;
                                  -197762;1;0;false;false;;;;;;
                                  -197763;5;0;false;false;127;127;159;;;
                                  -197768;3;0;false;false;;;;;;
                                  -197771;1;0;false;false;63;95;191;;;
                                  -197772;1;0;false;false;;;;;;
                                  -197773;11;1;false;false;127;159;191;;;
                                  -197784;24;0;false;false;63;95;191;;;
                                  -197808;1;0;false;false;;;;;;
                                  -197809;4;0;false;false;127;127;159;;;
                                  -197813;3;0;false;false;;;;;;
                                  -197816;1;0;false;false;63;95;191;;;
                                  -197817;4;0;false;false;;;;;;
                                  -197821;4;0;false;false;127;127;159;;;
                                  -197825;19;0;false;false;63;95;191;;;
                                  -197844;1;0;false;false;;;;;;
                                  -197845;4;0;false;false;63;95;191;;;
                                  -197849;1;0;false;false;;;;;;
                                  -197850;7;0;false;false;63;95;191;;;
                                  -197857;1;0;false;false;;;;;;
                                  -197858;2;0;false;false;63;95;191;;;
                                  -197860;1;0;false;false;;;;;;
                                  -197861;4;0;false;false;63;95;191;;;
                                  -197865;5;0;false;false;127;127;159;;;
                                  -197870;3;0;false;false;;;;;;
                                  -197873;1;0;false;false;63;95;191;;;
                                  -197874;1;0;false;false;;;;;;
                                  -197875;5;0;false;false;127;127;159;;;
                                  -197880;3;0;false;false;;;;;;
                                  -197883;2;0;false;false;63;95;191;;;
                                  -197885;2;0;false;false;;;;;;
                                  -197887;6;1;false;false;127;0;85;;;
                                  -197893;1;0;false;false;;;;;;
                                  -197894;8;0;false;false;0;0;0;;;
                                  -197902;1;0;false;false;;;;;;
                                  -197903;13;0;false;false;0;0;0;;;
                                  -197916;1;0;false;false;;;;;;
                                  -197917;8;0;false;false;0;0;0;;;
                                  -197925;1;0;false;false;;;;;;
                                  -197926;1;0;false;false;0;0;0;;;
                                  -197927;3;0;false;false;;;;;;
                                  -197930;14;0;false;false;0;0;0;;;
                                  -197944;4;0;false;false;;;;;;
                                  -197948;22;0;false;false;0;0;0;;;
                                  -197970;1;0;false;false;;;;;;
                                  -197971;7;0;false;false;0;0;0;;;
                                  -197978;1;0;false;false;;;;;;
                                  -197979;1;0;false;false;0;0;0;;;
                                  -197980;1;0;false;false;;;;;;
                                  -197981;3;1;false;false;127;0;85;;;
                                  -197984;1;0;false;false;;;;;;
                                  -197985;25;0;false;false;0;0;0;;;
                                  -198010;3;0;false;false;;;;;;
                                  -198013;27;0;false;false;0;0;0;;;
                                  -198040;1;0;false;false;;;;;;
                                  -198041;1;0;false;false;0;0;0;;;
                                  -198042;1;0;false;false;;;;;;
                                  -198043;4;1;false;false;127;0;85;;;
                                  -198047;1;0;false;false;0;0;0;;;
                                  -198048;3;0;false;false;;;;;;
                                  -198051;27;0;false;false;0;0;0;;;
                                  -198078;1;0;false;false;;;;;;
                                  -198079;1;0;false;false;0;0;0;;;
                                  -198080;1;0;false;false;;;;;;
                                  -198081;4;1;false;false;127;0;85;;;
                                  -198085;1;0;false;false;0;0;0;;;
                                  -198086;3;0;false;false;;;;;;
                                  -198089;26;0;false;false;0;0;0;;;
                                  -198115;1;0;false;false;;;;;;
                                  -198116;1;0;false;false;0;0;0;;;
                                  -198117;1;0;false;false;;;;;;
                                  -198118;4;1;false;false;127;0;85;;;
                                  -198122;1;0;false;false;0;0;0;;;
                                  -198123;3;0;false;false;;;;;;
                                  -198126;27;0;false;false;0;0;0;;;
                                  -198153;1;0;false;false;;;;;;
                                  -198154;1;0;false;false;0;0;0;;;
                                  -198155;1;0;false;false;;;;;;
                                  -198156;4;1;false;false;127;0;85;;;
                                  -198160;1;0;false;false;0;0;0;;;
                                  -198161;3;0;false;false;;;;;;
                                  -198164;2;1;false;false;127;0;85;;;
                                  -198166;1;0;false;false;;;;;;
                                  -198167;8;0;false;false;0;0;0;;;
                                  -198175;1;0;false;false;;;;;;
                                  -198176;2;0;false;false;0;0;0;;;
                                  -198178;1;0;false;false;;;;;;
                                  -198179;4;1;false;false;127;0;85;;;
                                  -198183;1;0;false;false;0;0;0;;;
                                  -198184;1;0;false;false;;;;;;
                                  -198185;1;0;false;false;0;0;0;;;
                                  -198186;4;0;false;false;;;;;;
                                  -198190;35;0;false;false;0;0;0;;;
                                  -198225;3;0;false;false;;;;;;
                                  -198228;1;0;false;false;0;0;0;;;
                                  -198229;3;0;false;false;;;;;;
                                  -198232;6;1;false;false;127;0;85;;;
                                  -198238;1;0;false;false;;;;;;
                                  -198239;14;0;false;false;0;0;0;;;
                                  -198253;1;0;false;false;;;;;;
                                  -198254;9;0;false;false;0;0;0;;;
                                  -198263;2;0;false;false;;;;;;
                                  -198265;1;0;false;false;0;0;0;;;
                                  -198266;2;0;false;false;;;;;;
                                  -198268;3;0;false;false;63;95;191;;;
                                  -198271;4;0;false;false;;;;;;
                                  -198275;1;0;false;false;63;95;191;;;
                                  -198276;1;0;false;false;;;;;;
                                  -198277;7;0;false;false;63;95;191;;;
                                  -198284;1;0;false;false;;;;;;
                                  -198285;1;0;false;false;63;95;191;;;
                                  -198286;1;0;false;false;;;;;;
                                  -198287;8;0;false;false;63;95;191;;;
                                  -198295;1;0;false;false;;;;;;
                                  -198296;4;0;false;false;63;95;191;;;
                                  -198300;1;0;false;false;;;;;;
                                  -198301;4;0;false;false;63;95;191;;;
                                  -198305;1;0;false;false;;;;;;
                                  -198306;5;0;false;false;63;95;191;;;
                                  -198311;1;0;false;false;;;;;;
                                  -198312;3;0;false;false;63;95;191;;;
                                  -198315;1;0;false;false;;;;;;
                                  -198316;8;0;false;false;63;95;191;;;
                                  -198324;1;0;false;false;;;;;;
                                  -198325;4;0;false;false;63;95;191;;;
                                  -198329;3;0;false;false;;;;;;
                                  -198332;1;0;false;false;63;95;191;;;
                                  -198333;1;0;false;false;;;;;;
                                  -198334;2;0;false;false;63;95;191;;;
                                  -198336;1;0;false;false;;;;;;
                                  -198337;3;0;false;false;63;95;191;;;
                                  -198340;1;0;false;false;;;;;;
                                  -198341;9;0;false;false;63;95;191;;;
                                  -198350;1;0;false;false;;;;;;
                                  -198351;8;0;false;false;63;95;191;;;
                                  -198359;3;0;false;false;;;;;;
                                  -198362;1;0;false;false;63;95;191;;;
                                  -198363;1;0;false;false;;;;;;
                                  -198364;3;0;false;false;127;127;159;;;
                                  -198367;3;0;false;false;;;;;;
                                  -198370;1;0;false;false;63;95;191;;;
                                  -198371;1;0;false;false;;;;;;
                                  -198372;3;0;false;false;63;95;191;;;
                                  -198375;1;0;false;false;;;;;;
                                  -198376;8;0;false;false;63;95;191;;;
                                  -198384;1;0;false;false;;;;;;
                                  -198385;3;0;false;false;63;95;191;;;
                                  -198388;1;0;false;false;;;;;;
                                  -198389;2;0;false;false;63;95;191;;;
                                  -198391;1;0;false;false;;;;;;
                                  -198392;3;0;false;false;63;95;191;;;
                                  -198395;1;0;false;false;;;;;;
                                  -198396;2;0;false;false;63;95;191;;;
                                  -198398;1;0;false;false;;;;;;
                                  -198399;1;0;false;false;63;95;191;;;
                                  -198400;1;0;false;false;;;;;;
                                  -198401;3;0;false;false;63;95;191;;;
                                  -198404;1;0;false;false;127;127;159;;;
                                  -198405;2;0;false;false;63;95;191;;;
                                  -198407;1;0;false;false;;;;;;
                                  -198408;7;0;false;false;63;95;191;;;
                                  -198415;3;0;false;false;;;;;;
                                  -198418;1;0;false;false;63;95;191;;;
                                  -198419;1;0;false;false;;;;;;
                                  -198420;4;0;false;false;127;127;159;;;
                                  -198424;3;0;false;false;;;;;;
                                  -198427;1;0;false;false;63;95;191;;;
                                  -198428;4;0;false;false;;;;;;
                                  -198432;1;0;false;false;63;95;191;;;
                                  -198433;1;0;false;false;;;;;;
                                  -198434;7;1;false;false;127;159;191;;;
                                  -198441;7;0;false;false;63;95;191;;;
                                  -198448;1;0;false;false;;;;;;
                                  -198449;3;0;false;false;63;95;191;;;
                                  -198452;1;0;false;false;;;;;;
                                  -198453;7;0;false;false;63;95;191;;;
                                  -198460;1;0;false;false;;;;;;
                                  -198461;2;0;false;false;63;95;191;;;
                                  -198463;1;0;false;false;;;;;;
                                  -198464;5;0;false;false;63;95;191;;;
                                  -198469;1;0;false;false;;;;;;
                                  -198470;2;0;false;false;63;95;191;;;
                                  -198472;3;0;false;false;;;;;;
                                  -198475;1;0;false;false;63;95;191;;;
                                  -198476;1;0;false;false;;;;;;
                                  -198477;7;1;false;false;127;159;191;;;
                                  -198484;7;0;false;false;63;95;191;;;
                                  -198491;1;0;false;false;;;;;;
                                  -198492;5;0;false;false;63;95;191;;;
                                  -198497;1;0;false;false;;;;;;
                                  -198498;7;0;false;false;63;95;191;;;
                                  -198505;1;0;false;false;;;;;;
                                  -198506;2;0;false;false;63;95;191;;;
                                  -198508;1;0;false;false;;;;;;
                                  -198509;3;0;false;false;63;95;191;;;
                                  -198512;1;0;false;false;;;;;;
                                  -198513;6;0;false;false;63;95;191;;;
                                  -198519;1;0;false;false;;;;;;
                                  -198520;8;0;false;false;63;95;191;;;
                                  -198528;3;0;false;false;;;;;;
                                  -198531;1;0;false;false;63;95;191;;;
                                  -198532;1;0;false;false;;;;;;
                                  -198533;11;1;false;false;127;159;191;;;
                                  -198544;12;0;false;false;63;95;191;;;
                                  -198556;1;0;false;false;;;;;;
                                  -198557;4;0;false;false;127;127;159;;;
                                  -198561;3;0;false;false;;;;;;
                                  -198564;1;0;false;false;63;95;191;;;
                                  -198565;4;0;false;false;;;;;;
                                  -198569;4;0;false;false;127;127;159;;;
                                  -198573;21;0;false;false;63;95;191;;;
                                  -198594;1;0;false;false;;;;;;
                                  -198595;1;0;false;false;127;127;159;;;
                                  -198596;1;0;false;false;;;;;;
                                  -198597;2;0;false;false;63;95;191;;;
                                  -198599;1;0;false;false;;;;;;
                                  -198600;3;0;false;false;63;95;191;;;
                                  -198603;1;0;false;false;;;;;;
                                  -198604;8;0;false;false;63;95;191;;;
                                  -198612;1;0;false;false;;;;;;
                                  -198613;3;0;false;false;63;95;191;;;
                                  -198616;1;0;false;false;;;;;;
                                  -198617;4;0;false;false;63;95;191;;;
                                  -198621;1;0;false;false;;;;;;
                                  -198622;8;0;false;false;63;95;191;;;
                                  -198630;5;0;false;false;127;127;159;;;
                                  -198635;3;0;false;false;;;;;;
                                  -198638;1;0;false;false;63;95;191;;;
                                  -198639;4;0;false;false;;;;;;
                                  -198643;4;0;false;false;127;127;159;;;
                                  -198647;27;0;false;false;63;95;191;;;
                                  -198674;1;0;false;false;;;;;;
                                  -198675;1;0;false;false;127;127;159;;;
                                  -198676;1;0;false;false;;;;;;
                                  -198677;2;0;false;false;63;95;191;;;
                                  -198679;1;0;false;false;;;;;;
                                  -198680;3;0;false;false;63;95;191;;;
                                  -198683;1;0;false;false;;;;;;
                                  -198684;6;0;false;false;63;95;191;;;
                                  -198690;1;0;false;false;;;;;;
                                  -198691;4;0;false;false;63;95;191;;;
                                  -198695;1;0;false;false;;;;;;
                                  -198696;3;0;false;false;63;95;191;;;
                                  -198699;1;0;false;false;;;;;;
                                  -198700;6;0;false;false;63;95;191;;;
                                  -198706;1;0;false;false;;;;;;
                                  -198707;4;0;false;false;63;95;191;;;
                                  -198711;1;0;false;false;;;;;;
                                  -198712;7;0;false;false;63;95;191;;;
                                  -198719;1;0;false;false;;;;;;
                                  -198720;3;0;false;false;63;95;191;;;
                                  -198723;1;0;false;false;;;;;;
                                  -198724;8;0;false;false;63;95;191;;;
                                  -198732;5;0;false;false;127;127;159;;;
                                  -198737;3;0;false;false;;;;;;
                                  -198740;1;0;false;false;63;95;191;;;
                                  -198741;1;0;false;false;;;;;;
                                  -198742;5;0;false;false;127;127;159;;;
                                  -198747;3;0;false;false;;;;;;
                                  -198750;1;0;false;false;63;95;191;;;
                                  -198751;1;0;false;false;;;;;;
                                  -198752;11;1;false;false;127;159;191;;;
                                  -198763;24;0;false;false;63;95;191;;;
                                  -198787;1;0;false;false;;;;;;
                                  -198788;4;0;false;false;127;127;159;;;
                                  -198792;3;0;false;false;;;;;;
                                  -198795;1;0;false;false;63;95;191;;;
                                  -198796;4;0;false;false;;;;;;
                                  -198800;4;0;false;false;127;127;159;;;
                                  -198804;19;0;false;false;63;95;191;;;
                                  -198823;1;0;false;false;;;;;;
                                  -198824;4;0;false;false;63;95;191;;;
                                  -198828;1;0;false;false;;;;;;
                                  -198829;7;0;false;false;63;95;191;;;
                                  -198836;1;0;false;false;;;;;;
                                  -198837;2;0;false;false;63;95;191;;;
                                  -198839;1;0;false;false;;;;;;
                                  -198840;7;0;false;false;63;95;191;;;
                                  -198847;1;0;false;false;;;;;;
                                  -198848;2;0;false;false;63;95;191;;;
                                  -198850;1;0;false;false;;;;;;
                                  -198851;4;0;false;false;63;95;191;;;
                                  -198855;5;0;false;false;127;127;159;;;
                                  -198860;3;0;false;false;;;;;;
                                  -198863;1;0;false;false;63;95;191;;;
                                  -198864;1;0;false;false;;;;;;
                                  -198865;5;0;false;false;127;127;159;;;
                                  -198870;3;0;false;false;;;;;;
                                  -198873;1;0;false;false;63;95;191;;;
                                  -198874;1;0;false;false;;;;;;
                                  -198875;7;1;false;false;127;159;191;;;
                                  -198882;3;0;false;false;63;95;191;;;
                                  -198885;3;0;false;false;;;;;;
                                  -198888;2;0;false;false;63;95;191;;;
                                  -198890;2;0;false;false;;;;;;
                                  -198892;6;1;false;false;127;0;85;;;
                                  -198898;1;0;false;false;;;;;;
                                  -198899;8;0;false;false;0;0;0;;;
                                  -198907;1;0;false;false;;;;;;
                                  -198908;13;0;false;false;0;0;0;;;
                                  -198921;1;0;false;false;;;;;;
                                  -198922;8;0;false;false;0;0;0;;;
                                  -198930;1;0;false;false;;;;;;
                                  -198931;22;0;false;false;0;0;0;;;
                                  -198953;1;0;false;false;;;;;;
                                  -198954;8;0;false;false;0;0;0;;;
                                  -198962;1;0;false;false;;;;;;
                                  -198963;1;0;false;false;0;0;0;;;
                                  -198964;3;0;false;false;;;;;;
                                  -198967;14;0;false;false;0;0;0;;;
                                  -198981;3;0;false;false;;;;;;
                                  -198984;2;1;false;false;127;0;85;;;
                                  -198986;1;0;false;false;;;;;;
                                  -198987;8;0;false;false;0;0;0;;;
                                  -198995;1;0;false;false;;;;;;
                                  -198996;2;0;false;false;0;0;0;;;
                                  -198998;1;0;false;false;;;;;;
                                  -198999;4;1;false;false;127;0;85;;;
                                  -199003;1;0;false;false;;;;;;
                                  -199004;2;0;false;false;0;0;0;;;
                                  -199006;1;0;false;false;;;;;;
                                  -199007;7;0;false;false;0;0;0;;;
                                  -199014;1;0;false;false;;;;;;
                                  -199015;2;0;false;false;0;0;0;;;
                                  -199017;1;0;false;false;;;;;;
                                  -199018;4;1;false;false;127;0;85;;;
                                  -199022;1;0;false;false;0;0;0;;;
                                  -199023;1;0;false;false;;;;;;
                                  -199024;1;0;false;false;0;0;0;;;
                                  -199025;4;0;false;false;;;;;;
                                  -199029;35;0;false;false;0;0;0;;;
                                  -199064;3;0;false;false;;;;;;
                                  -199067;1;0;false;false;0;0;0;;;
                                  -199068;3;0;false;false;;;;;;
                                  -199071;6;1;false;false;127;0;85;;;
                                  -199077;1;0;false;false;;;;;;
                                  -199078;3;1;false;false;127;0;85;;;
                                  -199081;1;0;false;false;;;;;;
                                  -199082;9;0;false;false;0;0;0;;;
                                  -199091;4;1;false;false;127;0;85;;;
                                  -199095;1;0;false;false;0;0;0;;;
                                  -199096;1;0;false;false;;;;;;
                                  -199097;8;0;false;false;0;0;0;;;
                                  -199105;1;0;false;false;;;;;;
                                  -199106;9;0;false;false;0;0;0;;;
                                  -199115;2;0;false;false;;;;;;
                                  -199117;1;0;false;false;0;0;0;;;
                                  -199118;2;0;false;false;;;;;;
                                  -199120;3;0;false;false;63;95;191;;;
                                  -199123;3;0;false;false;;;;;;
                                  -199126;1;0;false;false;63;95;191;;;
                                  -199127;1;0;false;false;;;;;;
                                  -199128;6;0;false;false;63;95;191;;;
                                  -199134;1;0;false;false;;;;;;
                                  -199135;3;0;false;false;63;95;191;;;
                                  -199138;1;0;false;false;;;;;;
                                  -199139;6;0;false;false;63;95;191;;;
                                  -199145;1;0;false;false;;;;;;
                                  -199146;6;0;false;false;63;95;191;;;
                                  -199152;1;0;false;false;;;;;;
                                  -199153;2;0;false;false;63;95;191;;;
                                  -199155;1;0;false;false;;;;;;
                                  -199156;3;0;false;false;63;95;191;;;
                                  -199159;1;0;false;false;;;;;;
                                  -199160;8;0;false;false;63;95;191;;;
                                  -199168;1;0;false;false;;;;;;
                                  -199169;2;0;false;false;63;95;191;;;
                                  -199171;1;0;false;false;;;;;;
                                  -199172;2;0;false;false;63;95;191;;;
                                  -199174;1;0;false;false;;;;;;
                                  -199175;6;0;false;false;63;95;191;;;
                                  -199181;3;0;false;false;;;;;;
                                  -199184;1;0;false;false;63;95;191;;;
                                  -199185;1;0;false;false;;;;;;
                                  -199186;2;0;false;false;63;95;191;;;
                                  -199188;1;0;false;false;;;;;;
                                  -199189;7;0;false;false;63;95;191;;;
                                  -199196;1;0;false;false;;;;;;
                                  -199197;2;0;false;false;63;95;191;;;
                                  -199199;1;0;false;false;;;;;;
                                  -199200;2;0;false;false;63;95;191;;;
                                  -199202;1;0;false;false;;;;;;
                                  -199203;8;0;false;false;63;95;191;;;
                                  -199211;1;0;false;false;;;;;;
                                  -199212;3;0;false;false;63;95;191;;;
                                  -199215;1;0;false;false;;;;;;
                                  -199216;4;0;false;false;63;95;191;;;
                                  -199220;1;0;false;false;;;;;;
                                  -199221;4;0;false;false;63;95;191;;;
                                  -199225;1;0;false;false;;;;;;
                                  -199226;1;0;false;false;63;95;191;;;
                                  -199227;1;0;false;false;;;;;;
                                  -199228;5;0;false;false;63;95;191;;;
                                  -199233;1;0;false;false;;;;;;
                                  -199234;7;0;false;false;63;95;191;;;
                                  -199241;3;0;false;false;;;;;;
                                  -199244;1;0;false;false;63;95;191;;;
                                  -199245;1;0;false;false;;;;;;
                                  -199246;2;0;false;false;63;95;191;;;
                                  -199248;1;0;false;false;;;;;;
                                  -199249;10;0;false;false;63;95;191;;;
                                  -199259;1;0;false;false;;;;;;
                                  -199260;3;0;false;false;63;95;191;;;
                                  -199263;1;0;false;false;;;;;;
                                  -199264;7;0;false;false;63;95;191;;;
                                  -199271;1;0;false;false;;;;;;
                                  -199272;4;0;false;false;63;95;191;;;
                                  -199276;1;0;false;false;;;;;;
                                  -199277;2;0;false;false;63;95;191;;;
                                  -199279;1;0;false;false;;;;;;
                                  -199280;10;0;false;false;63;95;191;;;
                                  -199290;1;0;false;false;;;;;;
                                  -199291;8;0;false;false;63;95;191;;;
                                  -199299;3;0;false;false;;;;;;
                                  -199302;1;0;false;false;63;95;191;;;
                                  -199303;1;0;false;false;;;;;;
                                  -199304;3;0;false;false;127;127;159;;;
                                  -199307;3;0;false;false;;;;;;
                                  -199310;1;0;false;false;63;95;191;;;
                                  -199311;1;0;false;false;;;;;;
                                  -199312;12;0;false;false;63;95;191;;;
                                  -199324;1;0;false;false;;;;;;
                                  -199325;3;0;false;false;63;95;191;;;
                                  -199328;1;0;false;false;;;;;;
                                  -199329;7;0;false;false;63;95;191;;;
                                  -199336;1;0;false;false;;;;;;
                                  -199337;5;0;false;false;63;95;191;;;
                                  -199342;1;0;false;false;;;;;;
                                  -199343;3;0;false;false;63;95;191;;;
                                  -199346;1;0;false;false;;;;;;
                                  -199347;3;0;false;false;63;95;191;;;
                                  -199350;1;0;false;false;;;;;;
                                  -199351;5;0;false;false;63;95;191;;;
                                  -199356;1;0;false;false;;;;;;
                                  -199357;2;0;false;false;63;95;191;;;
                                  -199359;1;0;false;false;;;;;;
                                  -199360;3;0;false;false;63;95;191;;;
                                  -199363;1;0;false;false;;;;;;
                                  -199364;7;0;false;false;63;95;191;;;
                                  -199371;3;0;false;false;;;;;;
                                  -199374;1;0;false;false;63;95;191;;;
                                  -199375;1;0;false;false;;;;;;
                                  -199376;4;0;false;false;63;95;191;;;
                                  -199380;1;0;false;false;;;;;;
                                  -199381;1;0;false;false;63;95;191;;;
                                  -199382;1;0;false;false;;;;;;
                                  -199383;6;0;false;false;127;127;159;;;
                                  -199389;17;0;false;false;63;95;191;;;
                                  -199406;7;0;false;false;127;127;159;;;
                                  -199413;1;0;false;false;;;;;;
                                  -199414;2;0;false;false;63;95;191;;;
                                  -199416;1;0;false;false;;;;;;
                                  -199417;4;0;false;false;63;95;191;;;
                                  -199421;1;0;false;false;;;;;;
                                  -199422;1;0;false;false;63;95;191;;;
                                  -199423;1;0;false;false;;;;;;
                                  -199424;6;0;false;false;63;95;191;;;
                                  -199430;1;0;false;false;;;;;;
                                  -199431;4;0;false;false;63;95;191;;;
                                  -199435;4;0;false;false;;;;;;
                                  -199439;1;0;false;false;63;95;191;;;
                                  -199440;1;0;false;false;;;;;;
                                  -199441;2;0;false;false;63;95;191;;;
                                  -199443;1;0;false;false;;;;;;
                                  -199444;3;0;false;false;63;95;191;;;
                                  -199447;1;0;false;false;;;;;;
                                  -199448;4;0;false;false;63;95;191;;;
                                  -199452;1;0;false;false;;;;;;
                                  -199453;12;0;false;false;63;95;191;;;
                                  -199465;1;0;false;false;;;;;;
                                  -199466;2;0;false;false;63;95;191;;;
                                  -199468;1;0;false;false;;;;;;
                                  -199469;3;0;false;false;63;95;191;;;
                                  -199472;1;0;false;false;;;;;;
                                  -199473;6;0;false;false;63;95;191;;;
                                  -199479;1;0;false;false;;;;;;
                                  -199480;4;0;false;false;63;95;191;;;
                                  -199484;1;0;false;false;;;;;;
                                  -199485;6;0;false;false;63;95;191;;;
                                  -199491;1;0;false;false;;;;;;
                                  -199492;4;0;false;false;63;95;191;;;
                                  -199496;1;0;false;false;;;;;;
                                  -199497;7;0;false;false;63;95;191;;;
                                  -199504;4;0;false;false;;;;;;
                                  -199508;1;0;false;false;63;95;191;;;
                                  -199509;1;0;false;false;;;;;;
                                  -199510;3;0;false;false;63;95;191;;;
                                  -199513;1;0;false;false;;;;;;
                                  -199514;4;0;false;false;63;95;191;;;
                                  -199518;1;0;false;false;;;;;;
                                  -199519;3;0;false;false;63;95;191;;;
                                  -199522;1;0;false;false;;;;;;
                                  -199523;7;0;false;false;63;95;191;;;
                                  -199530;1;0;false;false;;;;;;
                                  -199531;5;0;false;false;63;95;191;;;
                                  -199536;1;0;false;false;;;;;;
                                  -199537;3;0;false;false;63;95;191;;;
                                  -199540;1;0;false;false;;;;;;
                                  -199541;4;0;false;false;63;95;191;;;
                                  -199545;1;0;false;false;;;;;;
                                  -199546;8;0;false;false;63;95;191;;;
                                  -199554;3;0;false;false;;;;;;
                                  -199557;1;0;false;false;63;95;191;;;
                                  -199558;1;0;false;false;;;;;;
                                  -199559;4;0;false;false;127;127;159;;;
                                  -199563;3;0;false;false;;;;;;
                                  -199566;1;0;false;false;63;95;191;;;
                                  -199567;3;0;false;false;;;;;;
                                  -199570;1;0;false;false;63;95;191;;;
                                  -199571;1;0;false;false;;;;;;
                                  -199572;11;1;false;false;127;159;191;;;
                                  -199583;12;0;false;false;63;95;191;;;
                                  -199595;1;0;false;false;;;;;;
                                  -199596;4;0;false;false;127;127;159;;;
                                  -199600;3;0;false;false;;;;;;
                                  -199603;1;0;false;false;63;95;191;;;
                                  -199604;4;0;false;false;;;;;;
                                  -199608;4;0;false;false;127;127;159;;;
                                  -199612;21;0;false;false;63;95;191;;;
                                  -199633;1;0;false;false;;;;;;
                                  -199634;1;0;false;false;127;127;159;;;
                                  -199635;1;0;false;false;;;;;;
                                  -199636;2;0;false;false;63;95;191;;;
                                  -199638;1;0;false;false;;;;;;
                                  -199639;3;0;false;false;63;95;191;;;
                                  -199642;1;0;false;false;;;;;;
                                  -199643;8;0;false;false;63;95;191;;;
                                  -199651;1;0;false;false;;;;;;
                                  -199652;3;0;false;false;63;95;191;;;
                                  -199655;1;0;false;false;;;;;;
                                  -199656;4;0;false;false;63;95;191;;;
                                  -199660;1;0;false;false;;;;;;
                                  -199661;8;0;false;false;63;95;191;;;
                                  -199669;5;0;false;false;127;127;159;;;
                                  -199674;3;0;false;false;;;;;;
                                  -199677;1;0;false;false;63;95;191;;;
                                  -199678;4;0;false;false;;;;;;
                                  -199682;4;0;false;false;127;127;159;;;
                                  -199686;27;0;false;false;63;95;191;;;
                                  -199713;1;0;false;false;;;;;;
                                  -199714;1;0;false;false;127;127;159;;;
                                  -199715;1;0;false;false;;;;;;
                                  -199716;2;0;false;false;63;95;191;;;
                                  -199718;1;0;false;false;;;;;;
                                  -199719;3;0;false;false;63;95;191;;;
                                  -199722;1;0;false;false;;;;;;
                                  -199723;6;0;false;false;63;95;191;;;
                                  -199729;1;0;false;false;;;;;;
                                  -199730;4;0;false;false;63;95;191;;;
                                  -199734;1;0;false;false;;;;;;
                                  -199735;3;0;false;false;63;95;191;;;
                                  -199738;1;0;false;false;;;;;;
                                  -199739;6;0;false;false;63;95;191;;;
                                  -199745;1;0;false;false;;;;;;
                                  -199746;4;0;false;false;63;95;191;;;
                                  -199750;1;0;false;false;;;;;;
                                  -199751;7;0;false;false;63;95;191;;;
                                  -199758;1;0;false;false;;;;;;
                                  -199759;3;0;false;false;63;95;191;;;
                                  -199762;1;0;false;false;;;;;;
                                  -199763;8;0;false;false;63;95;191;;;
                                  -199771;5;0;false;false;127;127;159;;;
                                  -199776;3;0;false;false;;;;;;
                                  -199779;1;0;false;false;63;95;191;;;
                                  -199780;1;0;false;false;;;;;;
                                  -199781;5;0;false;false;127;127;159;;;
                                  -199786;3;0;false;false;;;;;;
                                  -199789;1;0;false;false;63;95;191;;;
                                  -199790;3;0;false;false;;;;;;
                                  -199793;1;0;false;false;63;95;191;;;
                                  -199794;1;0;false;false;;;;;;
                                  -199795;5;1;false;false;127;159;191;;;
                                  -199800;14;0;false;false;63;95;191;;;
                                  -199814;3;0;false;false;;;;;;
                                  -199817;2;0;false;false;63;95;191;;;
                                  -199819;2;0;false;false;;;;;;
                                  -199821;6;1;false;false;127;0;85;;;
                                  -199827;1;0;false;false;;;;;;
                                  -199828;4;1;false;false;127;0;85;;;
                                  -199832;1;0;false;false;;;;;;
                                  -199833;8;0;false;false;0;0;0;;;
                                  -199841;1;0;false;false;;;;;;
                                  -199842;1;0;false;false;0;0;0;;;
                                  -199843;3;0;false;false;;;;;;
                                  -199846;3;1;false;false;127;0;85;;;
                                  -199849;1;0;false;false;;;;;;
                                  -199850;10;0;false;false;0;0;0;;;
                                  -199860;6;0;false;false;;;;;;
                                  -199866;5;1;false;false;127;0;85;;;
                                  -199871;10;0;false;false;0;0;0;;;
                                  -199881;3;0;false;false;;;;;;
                                  -199884;9;0;false;false;0;0;0;;;
                                  -199893;1;0;false;false;;;;;;
                                  -199894;1;0;false;false;0;0;0;;;
                                  -199895;1;0;false;false;;;;;;
                                  -199896;23;0;false;false;0;0;0;;;
                                  -199919;1;0;false;false;;;;;;
                                  -199920;1;0;false;false;0;0;0;;;
                                  -199921;1;0;false;false;;;;;;
                                  -199922;8;0;false;false;0;0;0;;;
                                  -199930;1;0;false;false;;;;;;
                                  -199931;1;0;false;false;0;0;0;;;
                                  -199932;1;0;false;false;;;;;;
                                  -199933;2;0;false;false;0;0;0;;;
                                  -199935;3;0;false;false;;;;;;
                                  -199938;31;0;false;false;0;0;0;;;
                                  -199969;1;0;false;false;;;;;;
                                  -199970;10;0;false;false;0;0;0;;;
                                  -199980;1;0;false;false;;;;;;
                                  -199981;4;1;false;false;127;0;85;;;
                                  -199985;2;0;false;false;0;0;0;;;
                                  -199987;3;0;false;false;;;;;;
                                  -199990;29;0;false;false;0;0;0;;;
                                  -200019;1;0;false;false;;;;;;
                                  -200020;11;0;false;false;0;0;0;;;
                                  -200031;3;0;false;false;;;;;;
                                  -200034;25;0;false;false;0;0;0;;;
                                  -200059;2;0;false;false;;;;;;
                                  -200061;1;0;false;false;0;0;0;;;
                                  -200062;2;0;false;false;;;;;;
                                  -200064;3;0;false;false;63;95;191;;;
                                  -200067;3;0;false;false;;;;;;
                                  -200070;1;0;false;false;63;95;191;;;
                                  -200071;1;0;false;false;;;;;;
                                  -200072;6;0;false;false;63;95;191;;;
                                  -200078;1;0;false;false;;;;;;
                                  -200079;3;0;false;false;63;95;191;;;
                                  -200082;1;0;false;false;;;;;;
                                  -200083;11;0;false;false;63;95;191;;;
                                  -200094;1;0;false;false;;;;;;
                                  -200095;4;0;false;false;63;95;191;;;
                                  -200099;1;0;false;false;;;;;;
                                  -200100;2;0;false;false;63;95;191;;;
                                  -200102;1;0;false;false;;;;;;
                                  -200103;3;0;false;false;63;95;191;;;
                                  -200106;1;0;false;false;;;;;;
                                  -200107;8;0;false;false;63;95;191;;;
                                  -200115;1;0;false;false;;;;;;
                                  -200116;9;0;false;false;63;95;191;;;
                                  -200125;1;0;false;false;;;;;;
                                  -200126;2;0;false;false;63;95;191;;;
                                  -200128;3;0;false;false;;;;;;
                                  -200131;1;0;false;false;63;95;191;;;
                                  -200132;1;0;false;false;;;;;;
                                  -200133;3;0;false;false;63;95;191;;;
                                  -200136;1;0;false;false;;;;;;
                                  -200137;9;0;false;false;63;95;191;;;
                                  -200146;1;0;false;false;;;;;;
                                  -200147;2;0;false;false;63;95;191;;;
                                  -200149;1;0;false;false;;;;;;
                                  -200150;2;0;false;false;63;95;191;;;
                                  -200152;1;0;false;false;;;;;;
                                  -200153;6;0;false;false;63;95;191;;;
                                  -200159;1;0;false;false;;;;;;
                                  -200160;2;0;false;false;63;95;191;;;
                                  -200162;1;0;false;false;;;;;;
                                  -200163;7;0;false;false;63;95;191;;;
                                  -200170;1;0;false;false;;;;;;
                                  -200171;2;0;false;false;63;95;191;;;
                                  -200173;1;0;false;false;;;;;;
                                  -200174;2;0;false;false;63;95;191;;;
                                  -200176;1;0;false;false;;;;;;
                                  -200177;8;0;false;false;63;95;191;;;
                                  -200185;4;0;false;false;;;;;;
                                  -200189;1;0;false;false;63;95;191;;;
                                  -200190;1;0;false;false;;;;;;
                                  -200191;3;0;false;false;63;95;191;;;
                                  -200194;1;0;false;false;;;;;;
                                  -200195;4;0;false;false;63;95;191;;;
                                  -200199;1;0;false;false;;;;;;
                                  -200200;4;0;false;false;63;95;191;;;
                                  -200204;1;0;false;false;;;;;;
                                  -200205;1;0;false;false;63;95;191;;;
                                  -200206;1;0;false;false;;;;;;
                                  -200207;5;0;false;false;63;95;191;;;
                                  -200212;1;0;false;false;;;;;;
                                  -200213;7;0;false;false;63;95;191;;;
                                  -200220;1;0;false;false;;;;;;
                                  -200221;2;0;false;false;63;95;191;;;
                                  -200223;1;0;false;false;;;;;;
                                  -200224;10;0;false;false;63;95;191;;;
                                  -200234;1;0;false;false;;;;;;
                                  -200235;4;0;false;false;63;95;191;;;
                                  -200239;1;0;false;false;;;;;;
                                  -200240;4;0;false;false;63;95;191;;;
                                  -200244;1;0;false;false;;;;;;
                                  -200245;2;0;false;false;63;95;191;;;
                                  -200247;3;0;false;false;;;;;;
                                  -200250;1;0;false;false;63;95;191;;;
                                  -200251;1;0;false;false;;;;;;
                                  -200252;3;0;false;false;63;95;191;;;
                                  -200255;1;0;false;false;;;;;;
                                  -200256;8;0;false;false;63;95;191;;;
                                  -200264;1;0;false;false;;;;;;
                                  -200265;4;0;false;false;63;95;191;;;
                                  -200269;1;0;false;false;;;;;;
                                  -200270;2;0;false;false;63;95;191;;;
                                  -200272;1;0;false;false;;;;;;
                                  -200273;8;0;false;false;63;95;191;;;
                                  -200281;1;0;false;false;;;;;;
                                  -200282;2;0;false;false;63;95;191;;;
                                  -200284;1;0;false;false;;;;;;
                                  -200285;3;0;false;false;63;95;191;;;
                                  -200288;1;0;false;false;;;;;;
                                  -200289;6;0;false;false;127;127;159;;;
                                  -200295;3;0;false;false;63;95;191;;;
                                  -200298;7;0;false;false;127;127;159;;;
                                  -200305;1;0;false;false;;;;;;
                                  -200306;4;0;false;false;63;95;191;;;
                                  -200310;3;0;false;false;;;;;;
                                  -200313;1;0;false;false;63;95;191;;;
                                  -200314;1;0;false;false;;;;;;
                                  -200315;2;0;false;false;63;95;191;;;
                                  -200317;1;0;false;false;;;;;;
                                  -200318;6;0;false;false;127;127;159;;;
                                  -200324;4;0;false;false;63;95;191;;;
                                  -200328;7;0;false;false;127;127;159;;;
                                  -200335;1;0;false;false;63;95;191;;;
                                  -200336;1;0;false;false;;;;;;
                                  -200337;3;0;false;false;63;95;191;;;
                                  -200340;1;0;false;false;;;;;;
                                  -200341;8;0;false;false;63;95;191;;;
                                  -200349;1;0;false;false;;;;;;
                                  -200350;2;0;false;false;63;95;191;;;
                                  -200352;1;0;false;false;;;;;;
                                  -200353;3;0;false;false;63;95;191;;;
                                  -200356;1;0;false;false;;;;;;
                                  -200357;8;0;false;false;63;95;191;;;
                                  -200365;1;0;false;false;;;;;;
                                  -200366;5;0;false;false;63;95;191;;;
                                  -200371;3;0;false;false;;;;;;
                                  -200374;1;0;false;false;63;95;191;;;
                                  -200375;1;0;false;false;;;;;;
                                  -200376;9;0;false;false;63;95;191;;;
                                  -200385;1;0;false;false;;;;;;
                                  -200386;4;0;false;false;63;95;191;;;
                                  -200390;1;0;false;false;;;;;;
                                  -200391;3;0;false;false;63;95;191;;;
                                  -200394;1;0;false;false;;;;;;
                                  -200395;9;0;false;false;63;95;191;;;
                                  -200404;1;0;false;false;;;;;;
                                  -200405;4;0;false;false;63;95;191;;;
                                  -200409;1;0;false;false;;;;;;
                                  -200410;4;0;false;false;63;95;191;;;
                                  -200414;1;0;false;false;;;;;;
                                  -200415;4;0;false;false;63;95;191;;;
                                  -200419;1;0;false;false;;;;;;
                                  -200420;5;0;false;false;63;95;191;;;
                                  -200425;1;0;false;false;;;;;;
                                  -200426;5;0;false;false;63;95;191;;;
                                  -200431;3;0;false;false;;;;;;
                                  -200434;1;0;false;false;63;95;191;;;
                                  -200435;1;0;false;false;;;;;;
                                  -200436;12;0;false;false;63;95;191;;;
                                  -200448;1;0;false;false;;;;;;
                                  -200449;6;0;false;false;63;95;191;;;
                                  -200455;1;0;false;false;;;;;;
                                  -200456;2;0;false;false;63;95;191;;;
                                  -200458;1;0;false;false;;;;;;
                                  -200459;3;0;false;false;63;95;191;;;
                                  -200462;1;0;false;false;;;;;;
                                  -200463;6;0;false;false;127;127;159;;;
                                  -200469;3;0;false;false;63;95;191;;;
                                  -200472;7;0;false;false;127;127;159;;;
                                  -200479;1;0;false;false;;;;;;
                                  -200480;4;0;false;false;63;95;191;;;
                                  -200484;1;0;false;false;;;;;;
                                  -200485;2;0;false;false;63;95;191;;;
                                  -200487;4;0;false;false;;;;;;
                                  -200491;1;0;false;false;63;95;191;;;
                                  -200492;1;0;false;false;;;;;;
                                  -200493;6;0;false;false;127;127;159;;;
                                  -200499;5;0;false;false;63;95;191;;;
                                  -200504;7;0;false;false;127;127;159;;;
                                  -200511;1;0;false;false;63;95;191;;;
                                  -200512;1;0;false;false;;;;;;
                                  -200513;3;0;false;false;63;95;191;;;
                                  -200516;1;0;false;false;;;;;;
                                  -200517;8;0;false;false;63;95;191;;;
                                  -200525;1;0;false;false;;;;;;
                                  -200526;4;0;false;false;63;95;191;;;
                                  -200530;1;0;false;false;;;;;;
                                  -200531;3;0;false;false;63;95;191;;;
                                  -200534;1;0;false;false;;;;;;
                                  -200535;2;0;false;false;63;95;191;;;
                                  -200537;1;0;false;false;;;;;;
                                  -200538;8;0;false;false;63;95;191;;;
                                  -200546;3;0;false;false;;;;;;
                                  -200549;1;0;false;false;63;95;191;;;
                                  -200550;1;0;false;false;;;;;;
                                  -200551;3;0;false;false;127;127;159;;;
                                  -200554;3;0;false;false;;;;;;
                                  -200557;1;0;false;false;63;95;191;;;
                                  -200558;1;0;false;false;;;;;;
                                  -200559;5;0;false;false;63;95;191;;;
                                  -200564;1;0;false;false;;;;;;
                                  -200565;3;0;false;false;63;95;191;;;
                                  -200568;1;0;false;false;;;;;;
                                  -200569;7;0;false;false;63;95;191;;;
                                  -200576;1;0;false;false;;;;;;
                                  -200577;5;0;false;false;63;95;191;;;
                                  -200582;1;0;false;false;;;;;;
                                  -200583;2;0;false;false;63;95;191;;;
                                  -200585;1;0;false;false;;;;;;
                                  -200586;3;0;false;false;63;95;191;;;
                                  -200589;1;0;false;false;;;;;;
                                  -200590;5;0;false;false;63;95;191;;;
                                  -200595;1;0;false;false;;;;;;
                                  -200596;2;0;false;false;63;95;191;;;
                                  -200598;1;0;false;false;;;;;;
                                  -200599;3;0;false;false;63;95;191;;;
                                  -200602;1;0;false;false;;;;;;
                                  -200603;9;0;false;false;63;95;191;;;
                                  -200612;1;0;false;false;;;;;;
                                  -200613;9;0;false;false;63;95;191;;;
                                  -200622;3;0;false;false;;;;;;
                                  -200625;1;0;false;false;63;95;191;;;
                                  -200626;1;0;false;false;;;;;;
                                  -200627;2;0;false;false;63;95;191;;;
                                  -200629;1;0;false;false;;;;;;
                                  -200630;8;0;false;false;63;95;191;;;
                                  -200638;1;0;false;false;;;;;;
                                  -200639;12;0;false;false;63;95;191;;;
                                  -200651;1;0;false;false;;;;;;
                                  -200652;3;0;false;false;63;95;191;;;
                                  -200655;1;0;false;false;;;;;;
                                  -200656;7;0;false;false;63;95;191;;;
                                  -200663;1;0;false;false;;;;;;
                                  -200664;5;0;false;false;63;95;191;;;
                                  -200669;1;0;false;false;;;;;;
                                  -200670;2;0;false;false;63;95;191;;;
                                  -200672;1;0;false;false;;;;;;
                                  -200673;3;0;false;false;63;95;191;;;
                                  -200676;1;0;false;false;;;;;;
                                  -200677;7;0;false;false;63;95;191;;;
                                  -200684;1;0;false;false;;;;;;
                                  -200685;6;0;false;false;63;95;191;;;
                                  -200691;3;0;false;false;;;;;;
                                  -200694;1;0;false;false;63;95;191;;;
                                  -200695;1;0;false;false;;;;;;
                                  -200696;4;0;false;false;63;95;191;;;
                                  -200700;1;0;false;false;;;;;;
                                  -200701;1;0;false;false;63;95;191;;;
                                  -200702;1;0;false;false;;;;;;
                                  -200703;6;0;false;false;127;127;159;;;
                                  -200709;17;0;false;false;63;95;191;;;
                                  -200726;7;0;false;false;127;127;159;;;
                                  -200733;1;0;false;false;;;;;;
                                  -200734;2;0;false;false;63;95;191;;;
                                  -200736;1;0;false;false;;;;;;
                                  -200737;4;0;false;false;63;95;191;;;
                                  -200741;1;0;false;false;;;;;;
                                  -200742;1;0;false;false;63;95;191;;;
                                  -200743;1;0;false;false;;;;;;
                                  -200744;6;0;false;false;63;95;191;;;
                                  -200750;1;0;false;false;;;;;;
                                  -200751;4;0;false;false;63;95;191;;;
                                  -200755;4;0;false;false;;;;;;
                                  -200759;1;0;false;false;63;95;191;;;
                                  -200760;1;0;false;false;;;;;;
                                  -200761;2;0;false;false;63;95;191;;;
                                  -200763;1;0;false;false;;;;;;
                                  -200764;3;0;false;false;63;95;191;;;
                                  -200767;1;0;false;false;;;;;;
                                  -200768;4;0;false;false;63;95;191;;;
                                  -200772;1;0;false;false;;;;;;
                                  -200773;12;0;false;false;63;95;191;;;
                                  -200785;1;0;false;false;;;;;;
                                  -200786;2;0;false;false;63;95;191;;;
                                  -200788;1;0;false;false;;;;;;
                                  -200789;3;0;false;false;63;95;191;;;
                                  -200792;1;0;false;false;;;;;;
                                  -200793;6;0;false;false;63;95;191;;;
                                  -200799;1;0;false;false;;;;;;
                                  -200800;4;0;false;false;63;95;191;;;
                                  -200804;1;0;false;false;;;;;;
                                  -200805;6;0;false;false;63;95;191;;;
                                  -200811;1;0;false;false;;;;;;
                                  -200812;4;0;false;false;63;95;191;;;
                                  -200816;1;0;false;false;;;;;;
                                  -200817;7;0;false;false;63;95;191;;;
                                  -200824;4;0;false;false;;;;;;
                                  -200828;1;0;false;false;63;95;191;;;
                                  -200829;1;0;false;false;;;;;;
                                  -200830;3;0;false;false;63;95;191;;;
                                  -200833;1;0;false;false;;;;;;
                                  -200834;4;0;false;false;63;95;191;;;
                                  -200838;1;0;false;false;;;;;;
                                  -200839;3;0;false;false;63;95;191;;;
                                  -200842;1;0;false;false;;;;;;
                                  -200843;7;0;false;false;63;95;191;;;
                                  -200850;1;0;false;false;;;;;;
                                  -200851;5;0;false;false;63;95;191;;;
                                  -200856;1;0;false;false;;;;;;
                                  -200857;3;0;false;false;63;95;191;;;
                                  -200860;1;0;false;false;;;;;;
                                  -200861;4;0;false;false;63;95;191;;;
                                  -200865;1;0;false;false;;;;;;
                                  -200866;8;0;false;false;63;95;191;;;
                                  -200874;3;0;false;false;;;;;;
                                  -200877;1;0;false;false;63;95;191;;;
                                  -200878;1;0;false;false;;;;;;
                                  -200879;4;0;false;false;127;127;159;;;
                                  -200883;3;0;false;false;;;;;;
                                  -200886;1;0;false;false;63;95;191;;;
                                  -200887;3;0;false;false;;;;;;
                                  -200890;1;0;false;false;63;95;191;;;
                                  -200891;1;0;false;false;;;;;;
                                  -200892;7;1;false;false;127;159;191;;;
                                  -200899;1;0;false;false;63;95;191;;;
                                  -200900;1;0;false;false;;;;;;
                                  -200901;3;0;false;false;63;95;191;;;
                                  -200904;1;0;false;false;;;;;;
                                  -200905;1;0;false;false;63;95;191;;;
                                  -200906;1;0;false;false;;;;;;
                                  -200907;10;0;false;false;63;95;191;;;
                                  -200917;1;0;false;false;;;;;;
                                  -200918;2;0;false;false;63;95;191;;;
                                  -200920;1;0;false;false;;;;;;
                                  -200921;3;0;false;false;63;95;191;;;
                                  -200924;1;0;false;false;;;;;;
                                  -200925;4;0;false;false;63;95;191;;;
                                  -200929;1;0;false;false;;;;;;
                                  -200930;2;0;false;false;63;95;191;;;
                                  -200932;1;0;false;false;;;;;;
                                  -200933;4;0;false;false;63;95;191;;;
                                  -200937;3;0;false;false;;;;;;
                                  -200940;1;0;false;false;63;95;191;;;
                                  -200941;1;0;false;false;;;;;;
                                  -200942;7;1;false;false;127;159;191;;;
                                  -200949;1;0;false;false;63;95;191;;;
                                  -200950;1;0;false;false;;;;;;
                                  -200951;3;0;false;false;63;95;191;;;
                                  -200954;1;0;false;false;;;;;;
                                  -200955;1;0;false;false;63;95;191;;;
                                  -200956;1;0;false;false;;;;;;
                                  -200957;10;0;false;false;63;95;191;;;
                                  -200967;1;0;false;false;;;;;;
                                  -200968;2;0;false;false;63;95;191;;;
                                  -200970;1;0;false;false;;;;;;
                                  -200971;3;0;false;false;63;95;191;;;
                                  -200974;1;0;false;false;;;;;;
                                  -200975;4;0;false;false;63;95;191;;;
                                  -200979;1;0;false;false;;;;;;
                                  -200980;2;0;false;false;63;95;191;;;
                                  -200982;1;0;false;false;;;;;;
                                  -200983;4;0;false;false;63;95;191;;;
                                  -200987;3;0;false;false;;;;;;
                                  -200990;1;0;false;false;63;95;191;;;
                                  -200991;1;0;false;false;;;;;;
                                  -200992;7;1;false;false;127;159;191;;;
                                  -200999;5;0;false;false;63;95;191;;;
                                  -201004;1;0;false;false;;;;;;
                                  -201005;3;0;false;false;63;95;191;;;
                                  -201008;1;0;false;false;;;;;;
                                  -201009;5;0;false;false;63;95;191;;;
                                  -201014;1;0;false;false;;;;;;
                                  -201015;2;0;false;false;63;95;191;;;
                                  -201017;1;0;false;false;;;;;;
                                  -201018;3;0;false;false;63;95;191;;;
                                  -201021;1;0;false;false;;;;;;
                                  -201022;4;0;false;false;63;95;191;;;
                                  -201026;1;0;false;false;;;;;;
                                  -201027;2;0;false;false;63;95;191;;;
                                  -201029;1;0;false;false;;;;;;
                                  -201030;4;0;false;false;63;95;191;;;
                                  -201034;3;0;false;false;;;;;;
                                  -201037;1;0;false;false;63;95;191;;;
                                  -201038;1;0;false;false;;;;;;
                                  -201039;7;1;false;false;127;159;191;;;
                                  -201046;6;0;false;false;63;95;191;;;
                                  -201052;1;0;false;false;;;;;;
                                  -201053;3;0;false;false;63;95;191;;;
                                  -201056;1;0;false;false;;;;;;
                                  -201057;6;0;false;false;63;95;191;;;
                                  -201063;1;0;false;false;;;;;;
                                  -201064;2;0;false;false;63;95;191;;;
                                  -201066;1;0;false;false;;;;;;
                                  -201067;3;0;false;false;63;95;191;;;
                                  -201070;1;0;false;false;;;;;;
                                  -201071;4;0;false;false;63;95;191;;;
                                  -201075;1;0;false;false;;;;;;
                                  -201076;2;0;false;false;63;95;191;;;
                                  -201078;1;0;false;false;;;;;;
                                  -201079;4;0;false;false;63;95;191;;;
                                  -201083;3;0;false;false;;;;;;
                                  -201086;1;0;false;false;63;95;191;;;
                                  -201087;1;0;false;false;;;;;;
                                  -201088;7;1;false;false;127;159;191;;;
                                  -201095;3;0;false;false;63;95;191;;;
                                  -201098;1;0;false;false;;;;;;
                                  -201099;6;0;false;false;127;127;159;;;
                                  -201105;4;0;false;false;63;95;191;;;
                                  -201109;7;0;false;false;127;127;159;;;
                                  -201116;1;0;false;false;;;;;;
                                  -201117;2;0;false;false;63;95;191;;;
                                  -201119;1;0;false;false;;;;;;
                                  -201120;8;0;false;false;63;95;191;;;
                                  -201128;1;0;false;false;;;;;;
                                  -201129;6;0;false;false;63;95;191;;;
                                  -201135;1;0;false;false;;;;;;
                                  -201136;7;0;false;false;63;95;191;;;
                                  -201143;1;0;false;false;;;;;;
                                  -201144;3;0;false;false;63;95;191;;;
                                  -201147;1;0;false;false;;;;;;
                                  -201148;6;0;false;false;127;127;159;;;
                                  -201154;5;0;false;false;63;95;191;;;
                                  -201159;7;0;false;false;127;127;159;;;
                                  -201166;1;0;false;false;;;;;;
                                  -201167;9;0;false;false;63;95;191;;;
                                  -201176;3;0;false;false;;;;;;
                                  -201179;1;0;false;false;63;95;191;;;
                                  -201180;3;0;false;false;;;;;;
                                  -201183;1;0;false;false;63;95;191;;;
                                  -201184;1;0;false;false;;;;;;
                                  -201185;11;1;false;false;127;159;191;;;
                                  -201196;12;0;false;false;63;95;191;;;
                                  -201208;1;0;false;false;;;;;;
                                  -201209;4;0;false;false;127;127;159;;;
                                  -201213;3;0;false;false;;;;;;
                                  -201216;1;0;false;false;63;95;191;;;
                                  -201217;4;0;false;false;;;;;;
                                  -201221;4;0;false;false;127;127;159;;;
                                  -201225;21;0;false;false;63;95;191;;;
                                  -201246;1;0;false;false;;;;;;
                                  -201247;1;0;false;false;127;127;159;;;
                                  -201248;1;0;false;false;;;;;;
                                  -201249;2;0;false;false;63;95;191;;;
                                  -201251;1;0;false;false;;;;;;
                                  -201252;3;0;false;false;63;95;191;;;
                                  -201255;1;0;false;false;;;;;;
                                  -201256;8;0;false;false;63;95;191;;;
                                  -201264;1;0;false;false;;;;;;
                                  -201265;3;0;false;false;63;95;191;;;
                                  -201268;1;0;false;false;;;;;;
                                  -201269;4;0;false;false;63;95;191;;;
                                  -201273;1;0;false;false;;;;;;
                                  -201274;8;0;false;false;63;95;191;;;
                                  -201282;5;0;false;false;127;127;159;;;
                                  -201287;3;0;false;false;;;;;;
                                  -201290;1;0;false;false;63;95;191;;;
                                  -201291;4;0;false;false;;;;;;
                                  -201295;4;0;false;false;127;127;159;;;
                                  -201299;27;0;false;false;63;95;191;;;
                                  -201326;1;0;false;false;;;;;;
                                  -201327;1;0;false;false;127;127;159;;;
                                  -201328;1;0;false;false;;;;;;
                                  -201329;2;0;false;false;63;95;191;;;
                                  -201331;1;0;false;false;;;;;;
                                  -201332;3;0;false;false;63;95;191;;;
                                  -201335;1;0;false;false;;;;;;
                                  -201336;6;0;false;false;63;95;191;;;
                                  -201342;1;0;false;false;;;;;;
                                  -201343;4;0;false;false;63;95;191;;;
                                  -201347;1;0;false;false;;;;;;
                                  -201348;3;0;false;false;63;95;191;;;
                                  -201351;1;0;false;false;;;;;;
                                  -201352;6;0;false;false;63;95;191;;;
                                  -201358;1;0;false;false;;;;;;
                                  -201359;4;0;false;false;63;95;191;;;
                                  -201363;1;0;false;false;;;;;;
                                  -201364;7;0;false;false;63;95;191;;;
                                  -201371;1;0;false;false;;;;;;
                                  -201372;3;0;false;false;63;95;191;;;
                                  -201375;1;0;false;false;;;;;;
                                  -201376;8;0;false;false;63;95;191;;;
                                  -201384;5;0;false;false;127;127;159;;;
                                  -201389;3;0;false;false;;;;;;
                                  -201392;1;0;false;false;63;95;191;;;
                                  -201393;1;0;false;false;;;;;;
                                  -201394;5;0;false;false;127;127;159;;;
                                  -201399;3;0;false;false;;;;;;
                                  -201402;1;0;false;false;63;95;191;;;
                                  -201403;3;0;false;false;;;;;;
                                  -201406;1;0;false;false;63;95;191;;;
                                  -201407;1;0;false;false;;;;;;
                                  -201408;5;1;false;false;127;159;191;;;
                                  -201413;14;0;false;false;63;95;191;;;
                                  -201427;3;0;false;false;;;;;;
                                  -201430;2;0;false;false;63;95;191;;;
                                  -201432;2;0;false;false;;;;;;
                                  -201434;6;1;false;false;127;0;85;;;
                                  -201440;1;0;false;false;;;;;;
                                  -201441;4;1;false;false;127;0;85;;;
                                  -201445;1;0;false;false;;;;;;
                                  -201446;7;0;false;false;0;0;0;;;
                                  -201453;3;1;false;false;127;0;85;;;
                                  -201456;1;0;false;false;;;;;;
                                  -201457;2;0;false;false;0;0;0;;;
                                  -201459;1;0;false;false;;;;;;
                                  -201460;3;1;false;false;127;0;85;;;
                                  -201463;1;0;false;false;;;;;;
                                  -201464;2;0;false;false;0;0;0;;;
                                  -201466;1;0;false;false;;;;;;
                                  -201467;3;1;false;false;127;0;85;;;
                                  -201470;1;0;false;false;;;;;;
                                  -201471;6;0;false;false;0;0;0;;;
                                  -201477;1;0;false;false;;;;;;
                                  -201478;3;1;false;false;127;0;85;;;
                                  -201481;1;0;false;false;;;;;;
                                  -201482;7;0;false;false;0;0;0;;;
                                  -201489;1;0;false;false;;;;;;
                                  -201490;7;1;false;false;127;0;85;;;
                                  -201497;1;0;false;false;;;;;;
                                  -201498;4;0;false;false;0;0;0;;;
                                  -201502;1;0;false;false;;;;;;
                                  -201503;1;0;false;false;0;0;0;;;
                                  -201504;3;0;false;false;;;;;;
                                  -201507;5;1;false;false;127;0;85;;;
                                  -201512;10;0;false;false;0;0;0;;;
                                  -201522;1;0;false;false;;;;;;
                                  -201523;2;0;false;false;0;0;0;;;
                                  -201525;1;0;false;false;;;;;;
                                  -201526;6;0;false;false;0;0;0;;;
                                  -201532;1;0;false;false;;;;;;
                                  -201533;7;0;false;false;0;0;0;;;
                                  -201540;1;0;false;false;;;;;;
                                  -201541;5;0;false;false;0;0;0;;;
                                  -201546;3;0;false;false;;;;;;
                                  -201549;2;1;false;false;127;0;85;;;
                                  -201551;1;0;false;false;;;;;;
                                  -201552;7;0;false;false;0;0;0;;;
                                  -201559;1;0;false;false;;;;;;
                                  -201560;1;0;false;false;0;0;0;;;
                                  -201561;1;0;false;false;;;;;;
                                  -201562;2;0;false;false;0;0;0;;;
                                  -201564;1;0;false;false;;;;;;
                                  -201565;1;0;false;false;0;0;0;;;
                                  -201566;4;0;false;false;;;;;;
                                  -201570;3;1;false;false;127;0;85;;;
                                  -201573;1;0;false;false;;;;;;
                                  -201574;9;0;false;false;0;0;0;;;
                                  -201583;1;0;false;false;;;;;;
                                  -201584;1;0;false;false;0;0;0;;;
                                  -201585;1;0;false;false;;;;;;
                                  -201586;23;0;false;false;0;0;0;;;
                                  -201609;4;0;false;false;;;;;;
                                  -201613;3;1;false;false;127;0;85;;;
                                  -201616;1;0;false;false;;;;;;
                                  -201617;9;0;false;false;0;0;0;;;
                                  -201626;1;0;false;false;;;;;;
                                  -201627;1;0;false;false;0;0;0;;;
                                  -201628;1;0;false;false;;;;;;
                                  -201629;14;0;false;false;0;0;0;;;
                                  -201643;1;0;false;false;;;;;;
                                  -201644;1;0;false;false;0;0;0;;;
                                  -201645;1;0;false;false;;;;;;
                                  -201646;2;0;false;false;0;0;0;;;
                                  -201648;1;0;false;false;;;;;;
                                  -201649;1;0;false;false;0;0;0;;;
                                  -201650;1;0;false;false;;;;;;
                                  -201651;11;0;false;false;0;0;0;;;
                                  -201662;4;0;false;false;;;;;;
                                  -201666;3;1;false;false;127;0;85;;;
                                  -201669;1;0;false;false;;;;;;
                                  -201670;7;0;false;false;0;0;0;;;
                                  -201677;1;0;false;false;;;;;;
                                  -201678;1;0;false;false;0;0;0;;;
                                  -201679;1;0;false;false;;;;;;
                                  -201680;9;0;false;false;0;0;0;;;
                                  -201689;1;0;false;false;;;;;;
                                  -201690;1;0;false;false;0;0;0;;;
                                  -201691;1;0;false;false;;;;;;
                                  -201692;26;0;false;false;0;0;0;;;
                                  -201718;1;0;false;false;;;;;;
                                  -201719;12;0;false;false;0;0;0;;;
                                  -201731;4;0;false;false;;;;;;
                                  -201735;3;1;false;false;127;0;85;;;
                                  -201738;1;0;false;false;;;;;;
                                  -201739;10;0;false;false;0;0;0;;;
                                  -201749;8;0;false;false;;;;;;
                                  -201757;44;0;false;false;63;127;95;;;
                                  -201801;2;0;false;false;;;;;;
                                  -201803;9;0;false;false;0;0;0;;;
                                  -201812;1;0;false;false;;;;;;
                                  -201813;1;0;false;false;0;0;0;;;
                                  -201814;1;0;false;false;;;;;;
                                  -201815;19;0;false;false;0;0;0;;;
                                  -201834;1;0;false;false;;;;;;
                                  -201835;11;0;false;false;0;0;0;;;
                                  -201846;4;0;false;false;;;;;;
                                  -201850;9;0;false;false;0;0;0;;;
                                  -201859;1;0;false;false;;;;;;
                                  -201860;1;0;false;false;0;0;0;;;
                                  -201861;1;0;false;false;;;;;;
                                  -201862;17;0;false;false;0;0;0;;;
                                  -201879;1;0;false;false;;;;;;
                                  -201880;10;0;false;false;0;0;0;;;
                                  -201890;1;0;false;false;;;;;;
                                  -201891;1;0;false;false;0;0;0;;;
                                  -201892;1;0;false;false;;;;;;
                                  -201893;10;0;false;false;0;0;0;;;
                                  -201903;4;0;false;false;;;;;;
                                  -201907;26;0;false;false;0;0;0;;;
                                  -201933;1;0;false;false;;;;;;
                                  -201934;10;0;false;false;0;0;0;;;
                                  -201944;1;0;false;false;;;;;;
                                  -201945;4;1;false;false;127;0;85;;;
                                  -201949;2;0;false;false;0;0;0;;;
                                  -201951;4;0;false;false;;;;;;
                                  -201955;37;0;false;false;63;127;95;;;
                                  -201992;2;0;false;false;;;;;;
                                  -201994;9;0;false;false;0;0;0;;;
                                  -202003;1;0;false;false;;;;;;
                                  -202004;1;0;false;false;0;0;0;;;
                                  -202005;1;0;false;false;;;;;;
                                  -202006;23;0;false;false;0;0;0;;;
                                  -202029;1;0;false;false;;;;;;
                                  -202030;1;0;false;false;0;0;0;;;
                                  -202031;1;0;false;false;;;;;;
                                  -202032;8;0;false;false;0;0;0;;;
                                  -202040;1;0;false;false;;;;;;
                                  -202041;1;0;false;false;0;0;0;;;
                                  -202042;1;0;false;false;;;;;;
                                  -202043;2;0;false;false;0;0;0;;;
                                  -202045;4;0;false;false;;;;;;
                                  -202049;29;0;false;false;0;0;0;;;
                                  -202078;1;0;false;false;;;;;;
                                  -202079;11;0;false;false;0;0;0;;;
                                  -202090;4;0;false;false;;;;;;
                                  -202094;25;0;false;false;0;0;0;;;
                                  -202119;3;0;false;false;;;;;;
                                  -202122;1;0;false;false;0;0;0;;;
                                  -202123;2;0;false;false;;;;;;
                                  -202125;1;0;false;false;0;0;0;;;
                                  -202126;2;0;false;false;;;;;;
                                  -202128;3;0;false;false;63;95;191;;;
                                  -202131;4;0;false;false;;;;;;
                                  -202135;1;0;false;false;63;95;191;;;
                                  -202136;1;0;false;false;;;;;;
                                  -202137;7;0;false;false;63;95;191;;;
                                  -202144;1;0;false;false;;;;;;
                                  -202145;1;0;false;false;63;95;191;;;
                                  -202146;1;0;false;false;;;;;;
                                  -202147;4;0;false;false;63;95;191;;;
                                  -202151;1;0;false;false;;;;;;
                                  -202152;5;0;false;false;63;95;191;;;
                                  -202157;1;0;false;false;;;;;;
                                  -202158;2;0;false;false;63;95;191;;;
                                  -202160;1;0;false;false;;;;;;
                                  -202161;3;0;false;false;63;95;191;;;
                                  -202164;1;0;false;false;;;;;;
                                  -202165;9;0;false;false;63;95;191;;;
                                  -202174;1;0;false;false;;;;;;
                                  -202175;5;0;false;false;63;95;191;;;
                                  -202180;3;0;false;false;;;;;;
                                  -202183;1;0;false;false;63;95;191;;;
                                  -202184;1;0;false;false;;;;;;
                                  -202185;3;0;false;false;127;127;159;;;
                                  -202188;3;0;false;false;;;;;;
                                  -202191;1;0;false;false;63;95;191;;;
                                  -202192;3;0;false;false;;;;;;
                                  -202195;1;0;false;false;63;95;191;;;
                                  -202196;1;0;false;false;;;;;;
                                  -202197;7;1;false;false;127;159;191;;;
                                  -202204;9;0;false;false;63;95;191;;;
                                  -202213;1;0;false;false;;;;;;
                                  -202214;5;0;false;false;63;95;191;;;
                                  -202219;1;0;false;false;;;;;;
                                  -202220;4;0;false;false;63;95;191;;;
                                  -202224;1;0;false;false;;;;;;
                                  -202225;2;0;false;false;63;95;191;;;
                                  -202227;1;0;false;false;;;;;;
                                  -202228;6;0;false;false;63;95;191;;;
                                  -202234;1;0;false;false;;;;;;
                                  -202235;2;0;false;false;63;95;191;;;
                                  -202237;1;0;false;false;;;;;;
                                  -202238;3;0;false;false;63;95;191;;;
                                  -202241;1;0;false;false;;;;;;
                                  -202242;9;0;false;false;63;95;191;;;
                                  -202251;1;0;false;false;;;;;;
                                  -202252;6;0;false;false;63;95;191;;;
                                  -202258;3;0;false;false;;;;;;
                                  -202261;1;0;false;false;63;95;191;;;
                                  -202262;1;0;false;false;;;;;;
                                  -202263;7;1;false;false;127;159;191;;;
                                  -202270;17;0;false;false;63;95;191;;;
                                  -202287;1;0;false;false;;;;;;
                                  -202288;6;0;false;false;63;95;191;;;
                                  -202294;1;0;false;false;;;;;;
                                  -202295;2;0;false;false;63;95;191;;;
                                  -202297;1;0;false;false;;;;;;
                                  -202298;9;0;false;false;63;95;191;;;
                                  -202307;1;0;false;false;;;;;;
                                  -202308;2;0;false;false;63;95;191;;;
                                  -202310;1;0;false;false;;;;;;
                                  -202311;5;0;false;false;63;95;191;;;
                                  -202316;1;0;false;false;;;;;;
                                  -202317;9;0;false;false;63;95;191;;;
                                  -202326;3;0;false;false;;;;;;
                                  -202329;1;0;false;false;63;95;191;;;
                                  -202330;1;0;false;false;;;;;;
                                  -202331;7;1;false;false;127;159;191;;;
                                  -202338;8;0;false;false;63;95;191;;;
                                  -202346;1;0;false;false;;;;;;
                                  -202347;4;0;false;false;63;95;191;;;
                                  -202351;1;0;false;false;;;;;;
                                  -202352;4;0;false;false;63;95;191;;;
                                  -202356;1;0;false;false;;;;;;
                                  -202357;2;0;false;false;63;95;191;;;
                                  -202359;1;0;false;false;;;;;;
                                  -202360;6;0;false;false;63;95;191;;;
                                  -202366;3;0;false;false;;;;;;
                                  -202369;1;0;false;false;63;95;191;;;
                                  -202370;1;0;false;false;;;;;;
                                  -202371;7;1;false;false;127;159;191;;;
                                  -202378;9;0;false;false;63;95;191;;;
                                  -202387;1;0;false;false;;;;;;
                                  -202388;6;0;false;false;63;95;191;;;
                                  -202394;1;0;false;false;;;;;;
                                  -202395;2;0;false;false;63;95;191;;;
                                  -202397;1;0;false;false;;;;;;
                                  -202398;3;0;false;false;63;95;191;;;
                                  -202401;1;0;false;false;;;;;;
                                  -202402;4;0;false;false;63;95;191;;;
                                  -202406;1;0;false;false;;;;;;
                                  -202407;5;0;false;false;63;95;191;;;
                                  -202412;1;0;false;false;;;;;;
                                  -202413;9;0;false;false;63;95;191;;;
                                  -202422;1;0;false;false;;;;;;
                                  -202423;6;0;false;false;63;95;191;;;
                                  -202429;1;0;false;false;;;;;;
                                  -202430;4;0;false;false;63;95;191;;;
                                  -202434;3;0;false;false;;;;;;
                                  -202437;1;0;false;false;63;95;191;;;
                                  -202438;1;0;false;false;;;;;;
                                  -202439;7;1;false;false;127;159;191;;;
                                  -202446;15;0;false;false;63;95;191;;;
                                  -202461;1;0;false;false;;;;;;
                                  -202462;10;0;false;false;63;95;191;;;
                                  -202472;1;0;false;false;;;;;;
                                  -202473;3;0;false;false;63;95;191;;;
                                  -202476;1;0;false;false;;;;;;
                                  -202477;10;0;false;false;63;95;191;;;
                                  -202487;1;0;false;false;;;;;;
                                  -202488;2;0;false;false;63;95;191;;;
                                  -202490;1;0;false;false;;;;;;
                                  -202491;12;0;false;false;63;95;191;;;
                                  -202503;3;0;false;false;;;;;;
                                  -202506;1;0;false;false;63;95;191;;;
                                  -202507;2;0;false;false;;;;;;
                                  -202509;3;0;false;false;63;95;191;;;
                                  -202512;1;0;false;false;;;;;;
                                  -202513;9;0;false;false;63;95;191;;;
                                  -202522;1;0;false;false;;;;;;
                                  -202523;6;0;false;false;63;95;191;;;
                                  -202529;1;0;false;false;;;;;;
                                  -202530;6;0;false;false;63;95;191;;;
                                  -202536;1;0;false;false;;;;;;
                                  -202537;2;0;false;false;63;95;191;;;
                                  -202539;1;0;false;false;;;;;;
                                  -202540;3;0;false;false;63;95;191;;;
                                  -202543;1;0;false;false;;;;;;
                                  -202544;6;0;false;false;63;95;191;;;
                                  -202550;1;0;false;false;;;;;;
                                  -202551;5;0;false;false;63;95;191;;;
                                  -202556;1;0;false;false;;;;;;
                                  -202557;8;0;false;false;63;95;191;;;
                                  -202565;1;0;false;false;;;;;;
                                  -202566;3;0;false;false;63;95;191;;;
                                  -202569;4;0;false;false;;;;;;
                                  -202573;1;0;false;false;63;95;191;;;
                                  -202574;2;0;false;false;;;;;;
                                  -202576;4;0;false;false;63;95;191;;;
                                  -202580;1;0;false;false;;;;;;
                                  -202581;9;0;false;false;63;95;191;;;
                                  -202590;1;0;false;false;;;;;;
                                  -202591;2;0;false;false;63;95;191;;;
                                  -202593;1;0;false;false;;;;;;
                                  -202594;1;0;false;false;63;95;191;;;
                                  -202595;1;0;false;false;;;;;;
                                  -202596;4;0;false;false;63;95;191;;;
                                  -202600;1;0;false;false;;;;;;
                                  -202601;6;0;false;false;63;95;191;;;
                                  -202607;1;0;false;false;;;;;;
                                  -202608;3;0;false;false;63;95;191;;;
                                  -202611;1;0;false;false;;;;;;
                                  -202612;6;0;false;false;63;95;191;;;
                                  -202618;1;0;false;false;;;;;;
                                  -202619;4;0;false;false;63;95;191;;;
                                  -202623;1;0;false;false;;;;;;
                                  -202624;2;0;false;false;63;95;191;;;
                                  -202626;1;0;false;false;;;;;;
                                  -202627;8;0;false;false;63;95;191;;;
                                  -202635;1;0;false;false;;;;;;
                                  -202636;3;0;false;false;63;95;191;;;
                                  -202639;4;0;false;false;;;;;;
                                  -202643;1;0;false;false;63;95;191;;;
                                  -202644;2;0;false;false;;;;;;
                                  -202646;4;0;false;false;63;95;191;;;
                                  -202650;1;0;false;false;;;;;;
                                  -202651;2;0;false;false;63;95;191;;;
                                  -202653;1;0;false;false;;;;;;
                                  -202654;7;0;false;false;63;95;191;;;
                                  -202661;1;0;false;false;;;;;;
                                  -202662;3;0;false;false;63;95;191;;;
                                  -202665;1;0;false;false;;;;;;
                                  -202666;3;0;false;false;63;95;191;;;
                                  -202669;1;0;false;false;;;;;;
                                  -202670;3;0;false;false;63;95;191;;;
                                  -202673;1;0;false;false;;;;;;
                                  -202674;2;0;false;false;63;95;191;;;
                                  -202676;1;0;false;false;;;;;;
                                  -202677;3;0;false;false;63;95;191;;;
                                  -202680;1;0;false;false;;;;;;
                                  -202681;5;0;false;false;63;95;191;;;
                                  -202686;1;0;false;false;;;;;;
                                  -202687;6;0;false;false;63;95;191;;;
                                  -202693;1;0;false;false;;;;;;
                                  -202694;2;0;false;false;63;95;191;;;
                                  -202696;1;0;false;false;;;;;;
                                  -202697;3;0;false;false;63;95;191;;;
                                  -202700;1;0;false;false;;;;;;
                                  -202701;7;0;false;false;63;95;191;;;
                                  -202708;3;0;false;false;;;;;;
                                  -202711;1;0;false;false;63;95;191;;;
                                  -202712;2;0;false;false;;;;;;
                                  -202714;10;0;false;false;63;95;191;;;
                                  -202724;1;0;false;false;;;;;;
                                  -202725;3;0;false;false;63;95;191;;;
                                  -202728;1;0;false;false;;;;;;
                                  -202729;10;0;false;false;63;95;191;;;
                                  -202739;1;0;false;false;;;;;;
                                  -202740;8;0;false;false;63;95;191;;;
                                  -202748;1;0;false;false;;;;;;
                                  -202749;7;0;false;false;63;95;191;;;
                                  -202756;1;0;false;false;;;;;;
                                  -202757;12;0;false;false;63;95;191;;;
                                  -202769;1;0;false;false;;;;;;
                                  -202770;3;0;false;false;63;95;191;;;
                                  -202773;4;0;false;false;;;;;;
                                  -202777;1;0;false;false;63;95;191;;;
                                  -202778;2;0;false;false;;;;;;
                                  -202780;6;0;false;false;63;95;191;;;
                                  -202786;1;0;false;false;;;;;;
                                  -202787;6;0;false;false;63;95;191;;;
                                  -202793;3;0;false;false;;;;;;
                                  -202796;2;0;false;false;63;95;191;;;
                                  -202798;2;0;false;false;;;;;;
                                  -202800;4;1;false;false;127;0;85;;;
                                  -202804;1;0;false;false;;;;;;
                                  -202805;12;0;false;false;0;0;0;;;
                                  -202817;3;1;false;false;127;0;85;;;
                                  -202820;1;0;false;false;;;;;;
                                  -202821;10;0;false;false;0;0;0;;;
                                  -202831;1;0;false;false;;;;;;
                                  -202832;3;1;false;false;127;0;85;;;
                                  -202835;1;0;false;false;;;;;;
                                  -202836;18;0;false;false;0;0;0;;;
                                  -202854;1;0;false;false;;;;;;
                                  -202855;3;1;false;false;127;0;85;;;
                                  -202858;1;0;false;false;;;;;;
                                  -202859;9;0;false;false;0;0;0;;;
                                  -202868;1;0;false;false;;;;;;
                                  -202869;3;1;false;false;127;0;85;;;
                                  -202872;1;0;false;false;;;;;;
                                  -202873;10;0;false;false;0;0;0;;;
                                  -202883;1;0;false;false;;;;;;
                                  -202884;7;1;false;false;127;0;85;;;
                                  -202891;1;0;false;false;;;;;;
                                  -202892;16;0;false;false;0;0;0;;;
                                  -202908;1;0;false;false;;;;;;
                                  -202909;1;0;false;false;0;0;0;;;
                                  -202910;3;0;false;false;;;;;;
                                  -202913;6;0;false;false;0;0;0;;;
                                  -202919;1;0;false;false;;;;;;
                                  -202920;4;0;false;false;0;0;0;;;
                                  -202924;1;0;false;false;;;;;;
                                  -202925;1;0;false;false;0;0;0;;;
                                  -202926;1;0;false;false;;;;;;
                                  -202927;27;0;false;false;0;0;0;;;
                                  -202954;3;0;false;false;;;;;;
                                  -202957;3;1;false;false;127;0;85;;;
                                  -202960;1;0;false;false;;;;;;
                                  -202961;9;0;false;false;0;0;0;;;
                                  -202970;1;0;false;false;;;;;;
                                  -202971;1;0;false;false;0;0;0;;;
                                  -202972;1;0;false;false;;;;;;
                                  -202973;8;0;false;false;0;0;0;;;
                                  -202981;1;0;false;false;;;;;;
                                  -202982;1;0;false;false;0;0;0;;;
                                  -202983;1;0;false;false;;;;;;
                                  -202984;9;0;false;false;0;0;0;;;
                                  -202993;1;0;false;false;;;;;;
                                  -202994;1;0;false;false;0;0;0;;;
                                  -202995;1;0;false;false;;;;;;
                                  -202996;2;0;false;false;0;0;0;;;
                                  -202998;3;0;false;false;;;;;;
                                  -203001;3;1;false;false;127;0;85;;;
                                  -203004;1;0;false;false;;;;;;
                                  -203005;8;0;false;false;0;0;0;;;
                                  -203013;1;0;false;false;;;;;;
                                  -203014;12;0;false;false;0;0;0;;;
                                  -203026;3;0;false;false;;;;;;
                                  -203029;3;1;false;false;127;0;85;;;
                                  -203032;1;0;false;false;;;;;;
                                  -203033;10;0;false;false;0;0;0;;;
                                  -203043;1;0;false;false;;;;;;
                                  -203044;1;0;false;false;0;0;0;;;
                                  -203045;1;0;false;false;;;;;;
                                  -203046;35;0;false;false;0;0;0;;;
                                  -203081;3;0;false;false;;;;;;
                                  -203084;7;1;false;false;127;0;85;;;
                                  -203091;1;0;false;false;;;;;;
                                  -203092;15;0;false;false;0;0;0;;;
                                  -203107;3;0;false;false;;;;;;
                                  -203110;9;0;false;false;0;0;0;;;
                                  -203119;1;0;false;false;;;;;;
                                  -203120;10;0;false;false;0;0;0;;;
                                  -203130;1;0;false;false;;;;;;
                                  -203131;1;0;false;false;0;0;0;;;
                                  -203132;1;0;false;false;;;;;;
                                  -203133;16;0;false;false;0;0;0;;;
                                  -203149;6;0;false;false;;;;;;
                                  -203155;14;0;false;false;0;0;0;;;
                                  -203169;1;0;false;false;;;;;;
                                  -203170;1;0;false;false;0;0;0;;;
                                  -203171;1;0;false;false;;;;;;
                                  -203172;12;0;false;false;0;0;0;;;
                                  -203184;1;0;false;false;;;;;;
                                  -203185;1;0;false;false;0;0;0;;;
                                  -203186;1;0;false;false;;;;;;
                                  -203187;19;0;false;false;0;0;0;;;
                                  -203206;1;0;false;false;;;;;;
                                  -203207;2;0;false;false;0;0;0;;;
                                  -203209;1;0;false;false;;;;;;
                                  -203210;1;0;false;false;0;0;0;;;
                                  -203211;1;0;false;false;;;;;;
                                  -203212;2;0;false;false;0;0;0;;;
                                  -203214;1;0;false;false;;;;;;
                                  -203215;8;0;false;false;0;0;0;;;
                                  -203223;1;0;false;false;;;;;;
                                  -203224;1;0;false;false;0;0;0;;;
                                  -203225;1;0;false;false;;;;;;
                                  -203226;11;0;false;false;0;0;0;;;
                                  -203237;3;0;false;false;;;;;;
                                  -203240;64;0;false;false;63;127;95;;;
                                  -203304;1;0;false;false;;;;;;
                                  -203305;62;0;false;false;63;127;95;;;
                                  -203367;1;0;false;false;;;;;;
                                  -203368;2;1;false;false;127;0;85;;;
                                  -203370;1;0;false;false;;;;;;
                                  -203371;16;0;false;false;0;0;0;;;
                                  -203387;1;0;false;false;;;;;;
                                  -203388;2;0;false;false;0;0;0;;;
                                  -203390;1;0;false;false;;;;;;
                                  -203391;9;0;false;false;0;0;0;;;
                                  -203400;1;0;false;false;;;;;;
                                  -203401;1;0;false;false;0;0;0;;;
                                  -203402;1;0;false;false;;;;;;
                                  -203403;10;0;false;false;0;0;0;;;
                                  -203413;1;0;false;false;;;;;;
                                  -203414;2;0;false;false;0;0;0;;;
                                  -203416;1;0;false;false;;;;;;
                                  -203417;14;0;false;false;0;0;0;;;
                                  -203431;1;0;false;false;;;;;;
                                  -203432;1;0;false;false;0;0;0;;;
                                  -203433;4;0;false;false;;;;;;
                                  -203437;14;0;false;false;0;0;0;;;
                                  -203451;1;0;false;false;;;;;;
                                  -203452;1;0;false;false;0;0;0;;;
                                  -203453;1;0;false;false;;;;;;
                                  -203454;4;1;false;false;127;0;85;;;
                                  -203458;1;0;false;false;0;0;0;;;
                                  -203459;3;0;false;false;;;;;;
                                  -203462;1;0;false;false;0;0;0;;;
                                  -203463;4;0;false;false;;;;;;
                                  -203467;10;0;false;false;0;0;0;;;
                                  -203477;1;0;false;false;;;;;;
                                  -203478;6;0;false;false;0;0;0;;;
                                  -203484;1;0;false;false;;;;;;
                                  -203485;1;0;false;false;0;0;0;;;
                                  -203486;1;0;false;false;;;;;;
                                  -203487;28;0;false;false;0;0;0;;;
                                  -203515;1;0;false;false;;;;;;
                                  -203516;12;0;false;false;0;0;0;;;
                                  -203528;3;0;false;false;;;;;;
                                  -203531;9;0;false;false;0;0;0;;;
                                  -203540;1;0;false;false;;;;;;
                                  -203541;4;0;false;false;0;0;0;;;
                                  -203545;1;0;false;false;;;;;;
                                  -203546;1;0;false;false;0;0;0;;;
                                  -203547;1;0;false;false;;;;;;
                                  -203548;35;0;false;false;0;0;0;;;
                                  -203583;1;0;false;false;;;;;;
                                  -203584;19;0;false;false;0;0;0;;;
                                  -203603;1;0;false;false;;;;;;
                                  -203604;14;0;false;false;0;0;0;;;
                                  -203618;1;0;false;false;;;;;;
                                  -203619;1;0;false;false;0;0;0;;;
                                  -203620;1;0;false;false;;;;;;
                                  -203621;3;0;false;false;0;0;0;;;
                                  -203624;3;0;false;false;;;;;;
                                  -203627;35;0;false;false;0;0;0;;;
                                  -203662;3;0;false;false;;;;;;
                                  -203665;6;0;false;false;0;0;0;;;
                                  -203671;1;0;false;false;;;;;;
                                  -203672;2;0;false;false;0;0;0;;;
                                  -203674;1;0;false;false;;;;;;
                                  -203675;23;0;false;false;0;0;0;;;
                                  -203698;3;0;false;false;;;;;;
                                  -203701;27;0;false;false;0;0;0;;;
                                  -203728;3;0;false;false;;;;;;
                                  -203731;7;0;false;false;0;0;0;;;
                                  -203738;1;0;false;false;;;;;;
                                  -203739;1;0;false;false;0;0;0;;;
                                  -203740;1;0;false;false;;;;;;
                                  -203741;9;0;false;false;0;0;0;;;
                                  -203750;1;0;false;false;;;;;;
                                  -203751;1;0;false;false;0;0;0;;;
                                  -203752;1;0;false;false;;;;;;
                                  -203753;10;0;false;false;0;0;0;;;
                                  -203763;1;0;false;false;;;;;;
                                  -203764;1;0;false;false;0;0;0;;;
                                  -203765;1;0;false;false;;;;;;
                                  -203766;21;0;false;false;0;0;0;;;
                                  -203787;3;0;false;false;;;;;;
                                  -203790;11;0;false;false;0;0;0;;;
                                  -203801;1;0;false;false;;;;;;
                                  -203802;1;0;false;false;0;0;0;;;
                                  -203803;1;0;false;false;;;;;;
                                  -203804;14;0;false;false;0;0;0;;;
                                  -203818;1;0;false;false;;;;;;
                                  -203819;1;0;false;false;0;0;0;;;
                                  -203820;1;0;false;false;;;;;;
                                  -203821;16;0;false;false;0;0;0;;;
                                  -203837;1;0;false;false;;;;;;
                                  -203838;1;0;false;false;0;0;0;;;
                                  -203839;1;0;false;false;;;;;;
                                  -203840;10;0;false;false;0;0;0;;;
                                  -203850;1;0;false;false;;;;;;
                                  -203851;1;0;false;false;0;0;0;;;
                                  -203852;1;0;false;false;;;;;;
                                  -203853;11;0;false;false;0;0;0;;;
                                  -203864;1;0;false;false;;;;;;
                                  -203865;1;0;false;false;0;0;0;;;
                                  -203866;1;0;false;false;;;;;;
                                  -203867;11;0;false;false;0;0;0;;;
                                  -203878;3;0;false;false;;;;;;
                                  -203881;12;0;false;false;0;0;0;;;
                                  -203893;1;0;false;false;;;;;;
                                  -203894;8;0;false;false;0;0;0;;;
                                  -203902;1;0;false;false;;;;;;
                                  -203903;12;0;false;false;0;0;0;;;
                                  -203915;1;0;false;false;;;;;;
                                  -203916;11;0;false;false;0;0;0;;;
                                  -203927;1;0;false;false;;;;;;
                                  -203928;17;0;false;false;0;0;0;;;
                                  -203945;6;0;false;false;;;;;;
                                  -203951;60;0;false;false;63;127;95;;;
                                  -204011;1;0;false;false;;;;;;
                                  -204012;2;1;false;false;127;0;85;;;
                                  -204014;1;0;false;false;;;;;;
                                  -204015;10;0;false;false;0;0;0;;;
                                  -204025;1;0;false;false;;;;;;
                                  -204026;1;0;false;false;0;0;0;;;
                                  -204027;1;0;false;false;;;;;;
                                  -204028;2;0;false;false;0;0;0;;;
                                  -204030;1;0;false;false;;;;;;
                                  -204031;1;0;false;false;0;0;0;;;
                                  -204032;4;0;false;false;;;;;;
                                  -204036;10;0;false;false;0;0;0;;;
                                  -204046;1;0;false;false;;;;;;
                                  -204047;1;0;false;false;0;0;0;;;
                                  -204048;1;0;false;false;;;;;;
                                  -204049;34;0;false;false;0;0;0;;;
                                  -204083;4;0;false;false;;;;;;
                                  -204087;3;1;false;false;127;0;85;;;
                                  -204090;1;0;false;false;;;;;;
                                  -204091;16;0;false;false;0;0;0;;;
                                  -204107;1;0;false;false;;;;;;
                                  -204108;1;0;false;false;0;0;0;;;
                                  -204109;1;0;false;false;;;;;;
                                  -204110;9;0;false;false;0;0;0;;;
                                  -204119;1;0;false;false;;;;;;
                                  -204120;1;0;false;false;0;0;0;;;
                                  -204121;1;0;false;false;;;;;;
                                  -204122;11;0;false;false;0;0;0;;;
                                  -204133;5;0;false;false;;;;;;
                                  -204138;46;0;false;false;63;127;95;;;
                                  -204184;2;0;false;false;;;;;;
                                  -204186;2;1;false;false;127;0;85;;;
                                  -204188;1;0;false;false;;;;;;
                                  -204189;17;0;false;false;0;0;0;;;
                                  -204206;1;0;false;false;;;;;;
                                  -204207;1;0;false;false;0;0;0;;;
                                  -204208;1;0;false;false;;;;;;
                                  -204209;2;0;false;false;0;0;0;;;
                                  -204211;1;0;false;false;;;;;;
                                  -204212;1;0;false;false;0;0;0;;;
                                  -204213;5;0;false;false;;;;;;
                                  -204218;4;0;false;false;0;0;0;;;
                                  -204222;1;0;false;false;;;;;;
                                  -204223;1;0;false;false;0;0;0;;;
                                  -204224;1;0;false;false;;;;;;
                                  -204225;26;0;false;false;0;0;0;;;
                                  -204251;5;0;false;false;;;;;;
                                  -204256;63;0;false;false;63;127;95;;;
                                  -204319;3;0;false;false;;;;;;
                                  -204322;62;0;false;false;63;127;95;;;
                                  -204384;3;0;false;false;;;;;;
                                  -204387;2;1;false;false;127;0;85;;;
                                  -204389;1;0;false;false;;;;;;
                                  -204390;16;0;false;false;0;0;0;;;
                                  -204406;1;0;false;false;;;;;;
                                  -204407;2;0;false;false;0;0;0;;;
                                  -204409;1;0;false;false;;;;;;
                                  -204410;16;0;false;false;0;0;0;;;
                                  -204426;1;0;false;false;;;;;;
                                  -204427;2;0;false;false;0;0;0;;;
                                  -204429;1;0;false;false;;;;;;
                                  -204430;14;0;false;false;0;0;0;;;
                                  -204444;1;0;false;false;;;;;;
                                  -204445;1;0;false;false;0;0;0;;;
                                  -204446;6;0;false;false;;;;;;
                                  -204452;14;0;false;false;0;0;0;;;
                                  -204466;1;0;false;false;;;;;;
                                  -204467;1;0;false;false;0;0;0;;;
                                  -204468;1;0;false;false;;;;;;
                                  -204469;4;1;false;false;127;0;85;;;
                                  -204473;1;0;false;false;0;0;0;;;
                                  -204474;5;0;false;false;;;;;;
                                  -204479;1;0;false;false;0;0;0;;;
                                  -204480;5;0;false;false;;;;;;
                                  -204485;4;0;false;false;0;0;0;;;
                                  -204489;1;0;false;false;;;;;;
                                  -204490;1;0;false;false;0;0;0;;;
                                  -204491;1;0;false;false;;;;;;
                                  -204492;26;0;false;false;0;0;0;;;
                                  -204518;5;0;false;false;;;;;;
                                  -204523;6;0;false;false;0;0;0;;;
                                  -204529;1;0;false;false;;;;;;
                                  -204530;1;0;false;false;0;0;0;;;
                                  -204531;1;0;false;false;;;;;;
                                  -204532;28;0;false;false;0;0;0;;;
                                  -204560;1;0;false;false;;;;;;
                                  -204561;12;0;false;false;0;0;0;;;
                                  -204573;5;0;false;false;;;;;;
                                  -204578;4;0;false;false;0;0;0;;;
                                  -204582;1;0;false;false;;;;;;
                                  -204583;1;0;false;false;0;0;0;;;
                                  -204584;1;0;false;false;;;;;;
                                  -204585;19;0;false;false;0;0;0;;;
                                  -204604;1;0;false;false;;;;;;
                                  -204605;16;0;false;false;0;0;0;;;
                                  -204621;1;0;false;false;;;;;;
                                  -204622;1;0;false;false;0;0;0;;;
                                  -204623;1;0;false;false;;;;;;
                                  -204624;3;0;false;false;0;0;0;;;
                                  -204627;5;0;false;false;;;;;;
                                  -204632;35;0;false;false;0;0;0;;;
                                  -204667;5;0;false;false;;;;;;
                                  -204672;6;0;false;false;0;0;0;;;
                                  -204678;1;0;false;false;;;;;;
                                  -204679;2;0;false;false;0;0;0;;;
                                  -204681;1;0;false;false;;;;;;
                                  -204682;23;0;false;false;0;0;0;;;
                                  -204705;5;0;false;false;;;;;;
                                  -204710;27;0;false;false;0;0;0;;;
                                  -204737;5;0;false;false;;;;;;
                                  -204742;7;0;false;false;0;0;0;;;
                                  -204749;1;0;false;false;;;;;;
                                  -204750;1;0;false;false;0;0;0;;;
                                  -204751;1;0;false;false;;;;;;
                                  -204752;8;0;false;false;0;0;0;;;
                                  -204760;1;0;false;false;;;;;;
                                  -204761;1;0;false;false;0;0;0;;;
                                  -204762;1;0;false;false;;;;;;
                                  -204763;10;0;false;false;0;0;0;;;
                                  -204773;1;0;false;false;;;;;;
                                  -204774;1;0;false;false;0;0;0;;;
                                  -204775;1;0;false;false;;;;;;
                                  -204776;21;0;false;false;0;0;0;;;
                                  -204797;5;0;false;false;;;;;;
                                  -204802;11;0;false;false;0;0;0;;;
                                  -204813;1;0;false;false;;;;;;
                                  -204814;1;0;false;false;0;0;0;;;
                                  -204815;1;0;false;false;;;;;;
                                  -204816;14;0;false;false;0;0;0;;;
                                  -204830;1;0;false;false;;;;;;
                                  -204831;1;0;false;false;0;0;0;;;
                                  -204832;1;0;false;false;;;;;;
                                  -204833;16;0;false;false;0;0;0;;;
                                  -204849;1;0;false;false;;;;;;
                                  -204850;1;0;false;false;0;0;0;;;
                                  -204851;1;0;false;false;;;;;;
                                  -204852;10;0;false;false;0;0;0;;;
                                  -204862;1;0;false;false;;;;;;
                                  -204863;1;0;false;false;0;0;0;;;
                                  -204864;1;0;false;false;;;;;;
                                  -204865;11;0;false;false;0;0;0;;;
                                  -204876;1;0;false;false;;;;;;
                                  -204877;1;0;false;false;0;0;0;;;
                                  -204878;1;0;false;false;;;;;;
                                  -204879;11;0;false;false;0;0;0;;;
                                  -204890;5;0;false;false;;;;;;
                                  -204895;12;0;false;false;0;0;0;;;
                                  -204907;1;0;false;false;;;;;;
                                  -204908;8;0;false;false;0;0;0;;;
                                  -204916;1;0;false;false;;;;;;
                                  -204917;12;0;false;false;0;0;0;;;
                                  -204929;1;0;false;false;;;;;;
                                  -204930;11;0;false;false;0;0;0;;;
                                  -204941;1;0;false;false;;;;;;
                                  -204942;17;0;false;false;0;0;0;;;
                                  -204959;4;0;false;false;;;;;;
                                  -204963;1;0;false;false;0;0;0;;;
                                  -204964;3;0;false;false;;;;;;
                                  -204967;1;0;false;false;0;0;0;;;
                                  -204968;2;0;false;false;;;;;;
                                  -204970;1;0;false;false;0;0;0;;;
                                  -204971;2;0;false;false;;;;;;
                                  -204973;3;0;false;false;63;95;191;;;
                                  -204976;3;0;false;false;;;;;;
                                  -204979;1;0;false;false;63;95;191;;;
                                  -204980;1;0;false;false;;;;;;
                                  -204981;5;0;false;false;63;95;191;;;
                                  -204986;1;0;false;false;;;;;;
                                  -204987;3;0;false;false;63;95;191;;;
                                  -204990;1;0;false;false;;;;;;
                                  -204991;6;0;false;false;63;95;191;;;
                                  -204997;1;0;false;false;;;;;;
                                  -204998;2;0;false;false;63;95;191;;;
                                  -205000;1;0;false;false;;;;;;
                                  -205001;7;0;false;false;63;95;191;;;
                                  -205008;1;0;false;false;;;;;;
                                  -205009;1;0;false;false;63;95;191;;;
                                  -205010;1;0;false;false;;;;;;
                                  -205011;4;0;false;false;63;95;191;;;
                                  -205015;1;0;false;false;;;;;;
                                  -205016;7;0;false;false;63;95;191;;;
                                  -205023;3;0;false;false;;;;;;
                                  -205026;1;0;false;false;63;95;191;;;
                                  -205027;1;0;false;false;;;;;;
                                  -205028;3;0;false;false;63;95;191;;;
                                  -205031;1;0;false;false;;;;;;
                                  -205032;8;0;false;false;63;95;191;;;
                                  -205040;1;0;false;false;;;;;;
                                  -205041;3;0;false;false;63;95;191;;;
                                  -205044;1;0;false;false;;;;;;
                                  -205045;9;0;false;false;63;95;191;;;
                                  -205054;1;0;false;false;;;;;;
                                  -205055;2;0;false;false;63;95;191;;;
                                  -205057;1;0;false;false;;;;;;
                                  -205058;4;0;false;false;63;95;191;;;
                                  -205062;1;0;false;false;;;;;;
                                  -205063;2;0;false;false;63;95;191;;;
                                  -205065;1;0;false;false;;;;;;
                                  -205066;10;0;false;false;63;95;191;;;
                                  -205076;3;0;false;false;;;;;;
                                  -205079;1;0;false;false;63;95;191;;;
                                  -205080;1;0;false;false;;;;;;
                                  -205081;3;0;false;false;127;127;159;;;
                                  -205084;3;0;false;false;;;;;;
                                  -205087;1;0;false;false;63;95;191;;;
                                  -205088;3;0;false;false;;;;;;
                                  -205091;1;0;false;false;63;95;191;;;
                                  -205092;1;0;false;false;;;;;;
                                  -205093;7;1;false;false;127;159;191;;;
                                  -205100;1;0;false;false;63;95;191;;;
                                  -205101;1;0;false;false;;;;;;
                                  -205102;1;0;false;false;63;95;191;;;
                                  -205103;1;0;false;false;;;;;;
                                  -205104;8;0;false;false;63;95;191;;;
                                  -205112;1;0;false;false;;;;;;
                                  -205113;2;0;false;false;63;95;191;;;
                                  -205115;1;0;false;false;;;;;;
                                  -205116;3;0;false;false;63;95;191;;;
                                  -205119;1;0;false;false;;;;;;
                                  -205120;4;0;false;false;63;95;191;;;
                                  -205124;1;0;false;false;;;;;;
                                  -205125;6;0;false;false;63;95;191;;;
                                  -205131;3;0;false;false;;;;;;
                                  -205134;1;0;false;false;63;95;191;;;
                                  -205135;1;0;false;false;;;;;;
                                  -205136;7;1;false;false;127;159;191;;;
                                  -205143;12;0;false;false;63;95;191;;;
                                  -205155;1;0;false;false;;;;;;
                                  -205156;6;0;false;false;63;95;191;;;
                                  -205162;1;0;false;false;;;;;;
                                  -205163;2;0;false;false;63;95;191;;;
                                  -205165;1;0;false;false;;;;;;
                                  -205166;3;0;false;false;63;95;191;;;
                                  -205169;1;0;false;false;;;;;;
                                  -205170;6;0;false;false;63;95;191;;;
                                  -205176;3;0;false;false;;;;;;
                                  -205179;1;0;false;false;63;95;191;;;
                                  -205180;1;0;false;false;;;;;;
                                  -205181;7;1;false;false;127;159;191;;;
                                  -205188;17;0;false;false;63;95;191;;;
                                  -205205;1;0;false;false;;;;;;
                                  -205206;6;0;false;false;63;95;191;;;
                                  -205212;1;0;false;false;;;;;;
                                  -205213;2;0;false;false;63;95;191;;;
                                  -205215;1;0;false;false;;;;;;
                                  -205216;8;0;false;false;63;95;191;;;
                                  -205224;1;0;false;false;;;;;;
                                  -205225;6;0;false;false;63;95;191;;;
                                  -205231;3;0;false;false;;;;;;
                                  -205234;2;0;false;false;63;95;191;;;
                                  -205236;2;0;false;false;;;;;;
                                  -205238;4;1;false;false;127;0;85;;;
                                  -205242;1;0;false;false;;;;;;
                                  -205243;22;0;false;false;0;0;0;;;
                                  -205265;3;1;false;false;127;0;85;;;
                                  -205268;1;0;false;false;;;;;;
                                  -205269;2;0;false;false;0;0;0;;;
                                  -205271;1;0;false;false;;;;;;
                                  -205272;3;1;false;false;127;0;85;;;
                                  -205275;1;0;false;false;;;;;;
                                  -205276;13;0;false;false;0;0;0;;;
                                  -205289;1;0;false;false;;;;;;
                                  -205290;3;1;false;false;127;0;85;;;
                                  -205293;1;0;false;false;;;;;;
                                  -205294;18;0;false;false;0;0;0;;;
                                  -205312;1;0;false;false;;;;;;
                                  -205313;1;0;false;false;0;0;0;;;
                                  -205314;3;0;false;false;;;;;;
                                  -205317;9;0;false;false;0;0;0;;;
                                  -205326;1;0;false;false;;;;;;
                                  -205327;10;0;false;false;0;0;0;;;
                                  -205337;1;0;false;false;;;;;;
                                  -205338;1;0;false;false;0;0;0;;;
                                  -205339;1;0;false;false;;;;;;
                                  -205340;16;0;false;false;0;0;0;;;
                                  -205356;3;0;false;false;;;;;;
                                  -205359;3;1;false;false;127;0;85;;;
                                  -205362;1;0;false;false;;;;;;
                                  -205363;9;0;false;false;0;0;0;;;
                                  -205372;1;0;false;false;;;;;;
                                  -205373;1;0;false;false;0;0;0;;;
                                  -205374;1;0;false;false;;;;;;
                                  -205375;12;0;false;false;0;0;0;;;
                                  -205387;1;0;false;false;;;;;;
                                  -205388;1;0;false;false;0;0;0;;;
                                  -205389;1;0;false;false;;;;;;
                                  -205390;18;0;false;false;0;0;0;;;
                                  -205408;3;0;false;false;;;;;;
                                  -205411;3;1;false;false;127;0;85;;;
                                  -205414;1;0;false;false;;;;;;
                                  -205415;8;0;false;false;0;0;0;;;
                                  -205423;3;0;false;false;;;;;;
                                  -205426;3;1;false;false;127;0;85;;;
                                  -205429;1;0;false;false;;;;;;
                                  -205430;13;0;false;false;0;0;0;;;
                                  -205443;7;0;false;false;;;;;;
                                  -205450;2;1;false;false;127;0;85;;;
                                  -205452;1;0;false;false;;;;;;
                                  -205453;10;0;false;false;0;0;0;;;
                                  -205463;1;0;false;false;;;;;;
                                  -205464;1;0;false;false;0;0;0;;;
                                  -205465;1;0;false;false;;;;;;
                                  -205466;2;0;false;false;0;0;0;;;
                                  -205468;1;0;false;false;;;;;;
                                  -205469;1;0;false;false;0;0;0;;;
                                  -205470;4;0;false;false;;;;;;
                                  -205474;7;0;false;false;0;0;0;;;
                                  -205481;1;0;false;false;;;;;;
                                  -205482;1;0;false;false;0;0;0;;;
                                  -205483;1;0;false;false;;;;;;
                                  -205484;11;0;false;false;0;0;0;;;
                                  -205495;1;0;false;false;;;;;;
                                  -205496;1;0;false;false;0;0;0;;;
                                  -205497;1;0;false;false;;;;;;
                                  -205498;1;0;false;false;0;0;0;;;
                                  -205499;1;0;false;false;;;;;;
                                  -205500;12;0;false;false;0;0;0;;;
                                  -205512;4;0;false;false;;;;;;
                                  -205516;12;0;false;false;0;0;0;;;
                                  -205528;1;0;false;false;;;;;;
                                  -205529;1;0;false;false;0;0;0;;;
                                  -205530;1;0;false;false;;;;;;
                                  -205531;7;0;false;false;0;0;0;;;
                                  -205538;1;0;false;false;;;;;;
                                  -205539;1;0;false;false;0;0;0;;;
                                  -205540;1;0;false;false;;;;;;
                                  -205541;9;0;false;false;0;0;0;;;
                                  -205550;1;0;false;false;;;;;;
                                  -205551;1;0;false;false;0;0;0;;;
                                  -205552;1;0;false;false;;;;;;
                                  -205553;11;0;false;false;0;0;0;;;
                                  -205564;3;0;false;false;;;;;;
                                  -205567;1;0;false;false;0;0;0;;;
                                  -205568;4;0;false;false;;;;;;
                                  -205572;4;1;false;false;127;0;85;;;
                                  -205576;1;0;false;false;;;;;;
                                  -205577;1;0;false;false;0;0;0;;;
                                  -205578;4;0;false;false;;;;;;
                                  -205582;12;0;false;false;0;0;0;;;
                                  -205594;1;0;false;false;;;;;;
                                  -205595;1;0;false;false;0;0;0;;;
                                  -205596;1;0;false;false;;;;;;
                                  -205597;11;0;false;false;0;0;0;;;
                                  -205608;1;0;false;false;;;;;;
                                  -205609;1;0;false;false;0;0;0;;;
                                  -205610;1;0;false;false;;;;;;
                                  -205611;1;0;false;false;0;0;0;;;
                                  -205612;1;0;false;false;;;;;;
                                  -205613;12;0;false;false;0;0;0;;;
                                  -205625;4;0;false;false;;;;;;
                                  -205629;7;0;false;false;0;0;0;;;
                                  -205636;1;0;false;false;;;;;;
                                  -205637;1;0;false;false;0;0;0;;;
                                  -205638;1;0;false;false;;;;;;
                                  -205639;12;0;false;false;0;0;0;;;
                                  -205651;1;0;false;false;;;;;;
                                  -205652;1;0;false;false;0;0;0;;;
                                  -205653;1;0;false;false;;;;;;
                                  -205654;9;0;false;false;0;0;0;;;
                                  -205663;1;0;false;false;;;;;;
                                  -205664;1;0;false;false;0;0;0;;;
                                  -205665;1;0;false;false;;;;;;
                                  -205666;11;0;false;false;0;0;0;;;
                                  -205677;3;0;false;false;;;;;;
                                  -205680;1;0;false;false;0;0;0;;;
                                  -205681;4;0;false;false;;;;;;
                                  -205685;7;0;false;false;0;0;0;;;
                                  -205692;4;0;false;false;;;;;;
                                  -205696;2;0;false;false;0;0;0;;;
                                  -205698;1;0;false;false;;;;;;
                                  -205699;13;0;false;false;0;0;0;;;
                                  -205712;3;0;false;false;;;;;;
                                  -205715;21;0;false;false;63;127;95;;;
                                  -205736;2;0;false;false;;;;;;
                                  -205738;2;0;false;false;0;0;0;;;
                                  -205740;1;0;false;false;;;;;;
                                  -205741;8;0;false;false;0;0;0;;;
                                  -205749;5;0;false;false;;;;;;
                                  -205754;16;0;false;false;63;127;95;;;
                                  -205770;2;0;false;false;;;;;;
                                  -205772;17;0;false;false;0;0;0;;;
                                  -205789;1;0;false;false;;;;;;
                                  -205790;18;0;false;false;0;0;0;;;
                                  -205808;1;0;false;false;;;;;;
                                  -205809;4;1;false;false;127;0;85;;;
                                  -205813;2;0;false;false;0;0;0;;;
                                  -205815;3;0;false;false;;;;;;
                                  -205818;68;0;false;false;63;127;95;;;
                                  -205886;1;0;false;false;;;;;;
                                  -205887;69;0;false;false;63;127;95;;;
                                  -205956;1;0;false;false;;;;;;
                                  -205957;50;0;false;false;63;127;95;;;
                                  -206007;1;0;false;false;;;;;;
                                  -206008;68;0;false;false;63;127;95;;;
                                  -206076;1;0;false;false;;;;;;
                                  -206077;70;0;false;false;63;127;95;;;
                                  -206147;1;0;false;false;;;;;;
                                  -206148;55;0;false;false;63;127;95;;;
                                  -206203;1;0;false;false;;;;;;
                                  -206204;66;0;false;false;63;127;95;;;
                                  -206270;1;0;false;false;;;;;;
                                  -206271;67;0;false;false;63;127;95;;;
                                  -206338;1;0;false;false;;;;;;
                                  -206339;66;0;false;false;63;127;95;;;
                                  -206405;1;0;false;false;;;;;;
                                  -206406;54;0;false;false;63;127;95;;;
                                  -206460;1;0;false;false;;;;;;
                                  -206461;66;0;false;false;63;127;95;;;
                                  -206527;1;0;false;false;;;;;;
                                  -206528;53;0;false;false;63;127;95;;;
                                  -206581;1;0;false;false;;;;;;
                                  -206582;2;1;false;false;127;0;85;;;
                                  -206584;1;0;false;false;;;;;;
                                  -206585;2;0;false;false;0;0;0;;;
                                  -206587;1;0;false;false;;;;;;
                                  -206588;1;0;false;false;0;0;0;;;
                                  -206589;1;0;false;false;;;;;;
                                  -206590;10;0;false;false;0;0;0;;;
                                  -206600;1;0;false;false;;;;;;
                                  -206601;1;0;false;false;0;0;0;;;
                                  -206602;1;0;false;false;;;;;;
                                  -206603;1;0;false;false;0;0;0;;;
                                  -206604;1;0;false;false;;;;;;
                                  -206605;2;0;false;false;0;0;0;;;
                                  -206607;1;0;false;false;;;;;;
                                  -206608;1;0;false;false;0;0;0;;;
                                  -206609;1;0;false;false;;;;;;
                                  -206610;2;0;false;false;0;0;0;;;
                                  -206612;1;0;false;false;;;;;;
                                  -206613;18;0;false;false;0;0;0;;;
                                  -206631;1;0;false;false;;;;;;
                                  -206632;1;0;false;false;0;0;0;;;
                                  -206633;4;0;false;false;;;;;;
                                  -206637;62;0;false;false;63;127;95;;;
                                  -206699;2;0;false;false;;;;;;
                                  -206701;5;1;false;false;127;0;85;;;
                                  -206706;10;0;false;false;0;0;0;;;
                                  -206716;1;0;false;false;;;;;;
                                  -206717;2;0;false;false;0;0;0;;;
                                  -206719;1;0;false;false;;;;;;
                                  -206720;17;0;false;false;0;0;0;;;
                                  -206737;1;0;false;false;;;;;;
                                  -206738;11;0;false;false;0;0;0;;;
                                  -206749;1;0;false;false;;;;;;
                                  -206750;4;1;false;false;127;0;85;;;
                                  -206754;2;0;false;false;0;0;0;;;
                                  -206756;3;0;false;false;;;;;;
                                  -206759;1;0;false;false;0;0;0;;;
                                  -206760;3;0;false;false;;;;;;
                                  -206763;2;1;false;false;127;0;85;;;
                                  -206765;1;0;false;false;;;;;;
                                  -206766;13;0;false;false;0;0;0;;;
                                  -206779;1;0;false;false;;;;;;
                                  -206780;1;0;false;false;0;0;0;;;
                                  -206781;1;0;false;false;;;;;;
                                  -206782;2;0;false;false;0;0;0;;;
                                  -206784;1;0;false;false;;;;;;
                                  -206785;1;0;false;false;0;0;0;;;
                                  -206786;4;0;false;false;;;;;;
                                  -206790;3;1;false;false;127;0;85;;;
                                  -206793;1;0;false;false;;;;;;
                                  -206794;12;0;false;false;0;0;0;;;
                                  -206806;1;0;false;false;;;;;;
                                  -206807;1;0;false;false;0;0;0;;;
                                  -206808;1;0;false;false;;;;;;
                                  -206809;1;0;false;false;0;0;0;;;
                                  -206810;1;0;false;false;;;;;;
                                  -206811;1;0;false;false;0;0;0;;;
                                  -206812;1;0;false;false;;;;;;
                                  -206813;11;0;false;false;0;0;0;;;
                                  -206824;4;0;false;false;;;;;;
                                  -206828;3;1;false;false;127;0;85;;;
                                  -206831;1;0;false;false;;;;;;
                                  -206832;12;0;false;false;0;0;0;;;
                                  -206844;1;0;false;false;;;;;;
                                  -206845;1;0;false;false;0;0;0;;;
                                  -206846;1;0;false;false;;;;;;
                                  -206847;12;0;false;false;0;0;0;;;
                                  -206859;1;0;false;false;;;;;;
                                  -206860;1;0;false;false;0;0;0;;;
                                  -206861;1;0;false;false;;;;;;
                                  -206862;11;0;false;false;0;0;0;;;
                                  -206873;8;0;false;false;;;;;;
                                  -206881;2;1;false;false;127;0;85;;;
                                  -206883;1;0;false;false;;;;;;
                                  -206884;13;0;false;false;0;0;0;;;
                                  -206897;1;0;false;false;;;;;;
                                  -206898;1;0;false;false;0;0;0;;;
                                  -206899;1;0;false;false;;;;;;
                                  -206900;12;0;false;false;0;0;0;;;
                                  -206912;1;0;false;false;;;;;;
                                  -206913;1;0;false;false;0;0;0;;;
                                  -206914;1;0;false;false;;;;;;
                                  -206915;1;0;false;false;0;0;0;;;
                                  -206916;1;0;false;false;;;;;;
                                  -206917;2;0;false;false;0;0;0;;;
                                  -206919;1;0;false;false;;;;;;
                                  -206920;12;0;false;false;0;0;0;;;
                                  -206932;1;0;false;false;;;;;;
                                  -206933;2;0;false;false;0;0;0;;;
                                  -206935;1;0;false;false;;;;;;
                                  -206936;18;0;false;false;0;0;0;;;
                                  -206954;1;0;false;false;;;;;;
                                  -206955;1;0;false;false;0;0;0;;;
                                  -206956;5;0;false;false;;;;;;
                                  -206961;21;0;false;false;63;127;95;;;
                                  -206982;3;0;false;false;;;;;;
                                  -206985;5;1;false;false;127;0;85;;;
                                  -206990;10;0;false;false;0;0;0;;;
                                  -207000;1;0;false;false;;;;;;
                                  -207001;13;0;false;false;0;0;0;;;
                                  -207014;1;0;false;false;;;;;;
                                  -207015;17;0;false;false;0;0;0;;;
                                  -207032;1;0;false;false;;;;;;
                                  -207033;13;0;false;false;0;0;0;;;
                                  -207046;1;0;false;false;;;;;;
                                  -207047;4;1;false;false;127;0;85;;;
                                  -207051;2;0;false;false;0;0;0;;;
                                  -207053;4;0;false;false;;;;;;
                                  -207057;1;0;false;false;0;0;0;;;
                                  -207058;3;0;false;false;;;;;;
                                  -207061;1;0;false;false;0;0;0;;;
                                  -207062;2;0;false;false;;;;;;
                                  -207064;1;0;false;false;0;0;0;;;
                                  -207065;2;0;false;false;;;;;;
                                  -207067;3;0;false;false;63;95;191;;;
                                  -207070;4;0;false;false;;;;;;
                                  -207074;1;0;false;false;63;95;191;;;
                                  -207075;1;0;false;false;;;;;;
                                  -207076;7;0;false;false;63;95;191;;;
                                  -207083;1;0;false;false;;;;;;
                                  -207084;3;0;false;false;63;95;191;;;
                                  -207087;1;0;false;false;;;;;;
                                  -207088;9;0;false;false;63;95;191;;;
                                  -207097;1;0;false;false;;;;;;
                                  -207098;4;0;false;false;63;95;191;;;
                                  -207102;1;0;false;false;;;;;;
                                  -207103;6;0;false;false;63;95;191;;;
                                  -207109;3;0;false;false;;;;;;
                                  -207112;1;0;false;false;63;95;191;;;
                                  -207113;1;0;false;false;;;;;;
                                  -207114;3;0;false;false;127;127;159;;;
                                  -207117;3;0;false;false;;;;;;
                                  -207120;1;0;false;false;63;95;191;;;
                                  -207121;3;0;false;false;;;;;;
                                  -207124;1;0;false;false;63;95;191;;;
                                  -207125;1;0;false;false;;;;;;
                                  -207126;7;1;false;false;127;159;191;;;
                                  -207133;5;0;false;false;63;95;191;;;
                                  -207138;1;0;false;false;;;;;;
                                  -207139;6;0;false;false;63;95;191;;;
                                  -207145;1;0;false;false;;;;;;
                                  -207146;2;0;false;false;63;95;191;;;
                                  -207148;1;0;false;false;;;;;;
                                  -207149;3;0;false;false;63;95;191;;;
                                  -207152;1;0;false;false;;;;;;
                                  -207153;5;0;false;false;63;95;191;;;
                                  -207158;1;0;false;false;;;;;;
                                  -207159;9;0;false;false;63;95;191;;;
                                  -207168;1;0;false;false;;;;;;
                                  -207169;2;0;false;false;63;95;191;;;
                                  -207171;1;0;false;false;;;;;;
                                  -207172;6;0;false;false;63;95;191;;;
                                  -207178;3;0;false;false;;;;;;
                                  -207181;1;0;false;false;63;95;191;;;
                                  -207182;1;0;false;false;;;;;;
                                  -207183;7;1;false;false;127;159;191;;;
                                  -207190;6;0;false;false;63;95;191;;;
                                  -207196;1;0;false;false;;;;;;
                                  -207197;6;0;false;false;63;95;191;;;
                                  -207203;1;0;false;false;;;;;;
                                  -207204;2;0;false;false;63;95;191;;;
                                  -207206;1;0;false;false;;;;;;
                                  -207207;10;0;false;false;63;95;191;;;
                                  -207217;1;0;false;false;;;;;;
                                  -207218;2;0;false;false;63;95;191;;;
                                  -207220;1;0;false;false;;;;;;
                                  -207221;6;0;false;false;63;95;191;;;
                                  -207227;3;0;false;false;;;;;;
                                  -207230;1;0;false;false;63;95;191;;;
                                  -207231;1;0;false;false;;;;;;
                                  -207232;7;1;false;false;127;159;191;;;
                                  -207239;15;0;false;false;63;95;191;;;
                                  -207254;1;0;false;false;;;;;;
                                  -207255;4;0;false;false;63;95;191;;;
                                  -207259;1;0;false;false;;;;;;
                                  -207260;2;0;false;false;63;95;191;;;
                                  -207262;1;0;false;false;;;;;;
                                  -207263;3;0;false;false;63;95;191;;;
                                  -207266;1;0;false;false;;;;;;
                                  -207267;10;0;false;false;63;95;191;;;
                                  -207277;1;0;false;false;;;;;;
                                  -207278;6;0;false;false;63;95;191;;;
                                  -207284;1;0;false;false;;;;;;
                                  -207285;2;0;false;false;63;95;191;;;
                                  -207287;1;0;false;false;;;;;;
                                  -207288;7;0;false;false;63;95;191;;;
                                  -207295;1;0;false;false;;;;;;
                                  -207296;2;0;false;false;63;95;191;;;
                                  -207298;3;0;false;false;;;;;;
                                  -207301;1;0;false;false;63;95;191;;;
                                  -207302;2;0;false;false;;;;;;
                                  -207304;4;0;false;false;63;95;191;;;
                                  -207308;1;0;false;false;;;;;;
                                  -207309;2;0;false;false;63;95;191;;;
                                  -207311;1;0;false;false;;;;;;
                                  -207312;3;0;false;false;63;95;191;;;
                                  -207315;1;0;false;false;;;;;;
                                  -207316;6;0;false;false;63;95;191;;;
                                  -207322;1;0;false;false;;;;;;
                                  -207323;10;0;false;false;63;95;191;;;
                                  -207333;2;0;false;false;;;;;;
                                  -207335;2;0;false;false;63;95;191;;;
                                  -207337;1;0;false;false;;;;;;
                                  -207338;5;0;false;false;63;95;191;;;
                                  -207343;1;0;false;false;;;;;;
                                  -207344;3;0;false;false;63;95;191;;;
                                  -207347;1;0;false;false;;;;;;
                                  -207348;6;0;false;false;63;95;191;;;
                                  -207354;1;0;false;false;;;;;;
                                  -207355;6;0;false;false;63;95;191;;;
                                  -207361;1;0;false;false;;;;;;
                                  -207362;5;0;false;false;63;95;191;;;
                                  -207367;1;0;false;false;;;;;;
                                  -207368;4;0;false;false;63;95;191;;;
                                  -207372;3;0;false;false;;;;;;
                                  -207375;1;0;false;false;63;95;191;;;
                                  -207376;2;0;false;false;;;;;;
                                  -207378;2;0;false;false;63;95;191;;;
                                  -207380;1;0;false;false;;;;;;
                                  -207381;7;0;false;false;63;95;191;;;
                                  -207388;1;0;false;false;;;;;;
                                  -207389;6;0;false;false;63;95;191;;;
                                  -207395;1;0;false;false;;;;;;
                                  -207396;8;0;false;false;63;95;191;;;
                                  -207404;1;0;false;false;;;;;;
                                  -207405;2;0;false;false;63;95;191;;;
                                  -207407;1;0;false;false;;;;;;
                                  -207408;8;0;false;false;63;95;191;;;
                                  -207416;2;0;false;false;;;;;;
                                  -207418;2;0;false;false;63;95;191;;;
                                  -207420;1;0;false;false;;;;;;
                                  -207421;3;0;false;false;63;95;191;;;
                                  -207424;1;0;false;false;;;;;;
                                  -207425;6;0;false;false;63;95;191;;;
                                  -207431;1;0;false;false;;;;;;
                                  -207432;5;0;false;false;63;95;191;;;
                                  -207437;1;0;false;false;;;;;;
                                  -207438;8;0;false;false;63;95;191;;;
                                  -207446;3;0;false;false;;;;;;
                                  -207449;1;0;false;false;63;95;191;;;
                                  -207450;1;0;false;false;;;;;;
                                  -207451;3;0;false;false;63;95;191;;;
                                  -207454;1;0;false;false;;;;;;
                                  -207455;4;0;false;false;63;95;191;;;
                                  -207459;1;0;false;false;;;;;;
                                  -207460;9;0;false;false;63;95;191;;;
                                  -207469;1;0;false;false;;;;;;
                                  -207470;2;0;false;false;63;95;191;;;
                                  -207472;1;0;false;false;;;;;;
                                  -207473;1;0;false;false;63;95;191;;;
                                  -207474;1;0;false;false;;;;;;
                                  -207475;4;0;false;false;63;95;191;;;
                                  -207479;1;0;false;false;;;;;;
                                  -207480;6;0;false;false;63;95;191;;;
                                  -207486;1;0;false;false;;;;;;
                                  -207487;3;0;false;false;63;95;191;;;
                                  -207490;1;0;false;false;;;;;;
                                  -207491;6;0;false;false;63;95;191;;;
                                  -207497;1;0;false;false;;;;;;
                                  -207498;4;0;false;false;63;95;191;;;
                                  -207502;1;0;false;false;;;;;;
                                  -207503;2;0;false;false;63;95;191;;;
                                  -207505;1;0;false;false;;;;;;
                                  -207506;8;0;false;false;63;95;191;;;
                                  -207514;1;0;false;false;;;;;;
                                  -207515;3;0;false;false;63;95;191;;;
                                  -207518;4;0;false;false;;;;;;
                                  -207522;1;0;false;false;63;95;191;;;
                                  -207523;2;0;false;false;;;;;;
                                  -207525;4;0;false;false;63;95;191;;;
                                  -207529;1;0;false;false;;;;;;
                                  -207530;2;0;false;false;63;95;191;;;
                                  -207532;1;0;false;false;;;;;;
                                  -207533;7;0;false;false;63;95;191;;;
                                  -207540;1;0;false;false;;;;;;
                                  -207541;3;0;false;false;63;95;191;;;
                                  -207544;1;0;false;false;;;;;;
                                  -207545;3;0;false;false;63;95;191;;;
                                  -207548;1;0;false;false;;;;;;
                                  -207549;3;0;false;false;63;95;191;;;
                                  -207552;1;0;false;false;;;;;;
                                  -207553;2;0;false;false;63;95;191;;;
                                  -207555;1;0;false;false;;;;;;
                                  -207556;3;0;false;false;63;95;191;;;
                                  -207559;1;0;false;false;;;;;;
                                  -207560;5;0;false;false;63;95;191;;;
                                  -207565;1;0;false;false;;;;;;
                                  -207566;6;0;false;false;63;95;191;;;
                                  -207572;1;0;false;false;;;;;;
                                  -207573;2;0;false;false;63;95;191;;;
                                  -207575;1;0;false;false;;;;;;
                                  -207576;3;0;false;false;63;95;191;;;
                                  -207579;1;0;false;false;;;;;;
                                  -207580;7;0;false;false;63;95;191;;;
                                  -207587;3;0;false;false;;;;;;
                                  -207590;1;0;false;false;63;95;191;;;
                                  -207591;2;0;false;false;;;;;;
                                  -207593;3;0;false;false;63;95;191;;;
                                  -207596;1;0;false;false;;;;;;
                                  -207597;6;0;false;false;63;95;191;;;
                                  -207603;1;0;false;false;;;;;;
                                  -207604;9;0;false;false;63;95;191;;;
                                  -207613;1;0;false;false;;;;;;
                                  -207614;4;0;false;false;63;95;191;;;
                                  -207618;1;0;false;false;;;;;;
                                  -207619;2;0;false;false;63;95;191;;;
                                  -207621;1;0;false;false;;;;;;
                                  -207622;6;0;false;false;63;95;191;;;
                                  -207628;1;0;false;false;;;;;;
                                  -207629;3;0;false;false;63;95;191;;;
                                  -207632;1;0;false;false;;;;;;
                                  -207633;8;0;false;false;63;95;191;;;
                                  -207641;1;0;false;false;;;;;;
                                  -207642;2;0;false;false;63;95;191;;;
                                  -207644;1;0;false;false;;;;;;
                                  -207645;15;0;false;false;63;95;191;;;
                                  -207660;4;0;false;false;;;;;;
                                  -207664;1;0;false;false;63;95;191;;;
                                  -207665;2;0;false;false;;;;;;
                                  -207667;2;0;false;false;63;95;191;;;
                                  -207669;1;0;false;false;;;;;;
                                  -207670;3;0;false;false;63;95;191;;;
                                  -207673;1;0;false;false;;;;;;
                                  -207674;2;0;false;false;63;95;191;;;
                                  -207676;1;0;false;false;;;;;;
                                  -207677;6;0;false;false;63;95;191;;;
                                  -207683;2;0;false;false;;;;;;
                                  -207685;7;0;false;false;63;95;191;;;
                                  -207692;1;0;false;false;;;;;;
                                  -207693;2;0;false;false;63;95;191;;;
                                  -207695;1;0;false;false;;;;;;
                                  -207696;3;0;false;false;63;95;191;;;
                                  -207699;1;0;false;false;;;;;;
                                  -207700;3;0;false;false;63;95;191;;;
                                  -207703;1;0;false;false;;;;;;
                                  -207704;4;0;false;false;63;95;191;;;
                                  -207708;1;0;false;false;;;;;;
                                  -207709;3;0;false;false;63;95;191;;;
                                  -207712;1;0;false;false;;;;;;
                                  -207713;2;0;false;false;63;95;191;;;
                                  -207715;1;0;false;false;;;;;;
                                  -207716;3;0;false;false;63;95;191;;;
                                  -207719;1;0;false;false;;;;;;
                                  -207720;2;0;false;false;63;95;191;;;
                                  -207722;1;0;false;false;;;;;;
                                  -207723;5;0;false;false;63;95;191;;;
                                  -207728;1;0;false;false;;;;;;
                                  -207729;7;0;false;false;63;95;191;;;
                                  -207736;4;0;false;false;;;;;;
                                  -207740;1;0;false;false;63;95;191;;;
                                  -207741;2;0;false;false;;;;;;
                                  -207743;2;0;false;false;63;95;191;;;
                                  -207745;1;0;false;false;;;;;;
                                  -207746;3;0;false;false;63;95;191;;;
                                  -207749;1;0;false;false;;;;;;
                                  -207750;4;0;false;false;63;95;191;;;
                                  -207754;1;0;false;false;;;;;;
                                  -207755;2;0;false;false;63;95;191;;;
                                  -207757;1;0;false;false;;;;;;
                                  -207758;6;0;false;false;63;95;191;;;
                                  -207764;1;0;false;false;;;;;;
                                  -207765;4;0;false;false;63;95;191;;;
                                  -207769;1;0;false;false;;;;;;
                                  -207770;3;0;false;false;63;95;191;;;
                                  -207773;1;0;false;false;;;;;;
                                  -207774;5;0;false;false;63;95;191;;;
                                  -207779;1;0;false;false;;;;;;
                                  -207780;6;0;false;false;63;95;191;;;
                                  -207786;2;0;false;false;;;;;;
                                  -207788;2;0;false;false;63;95;191;;;
                                  -207790;1;0;false;false;;;;;;
                                  -207791;4;0;false;false;63;95;191;;;
                                  -207795;1;0;false;false;;;;;;
                                  -207796;6;0;false;false;63;95;191;;;
                                  -207802;1;0;false;false;;;;;;
                                  -207803;2;0;false;false;63;95;191;;;
                                  -207805;4;0;false;false;;;;;;
                                  -207809;1;0;false;false;63;95;191;;;
                                  -207810;2;0;false;false;;;;;;
                                  -207812;10;0;false;false;63;95;191;;;
                                  -207822;1;0;false;false;;;;;;
                                  -207823;6;0;false;false;63;95;191;;;
                                  -207829;1;0;false;false;;;;;;
                                  -207830;3;0;false;false;63;95;191;;;
                                  -207833;1;0;false;false;;;;;;
                                  -207834;3;0;false;false;63;95;191;;;
                                  -207837;1;0;false;false;;;;;;
                                  -207838;6;0;false;false;63;95;191;;;
                                  -207844;1;0;false;false;;;;;;
                                  -207845;5;0;false;false;63;95;191;;;
                                  -207850;1;0;false;false;;;;;;
                                  -207851;4;0;false;false;63;95;191;;;
                                  -207855;1;0;false;false;;;;;;
                                  -207856;8;0;false;false;63;95;191;;;
                                  -207864;1;0;false;false;;;;;;
                                  -207865;15;0;false;false;63;95;191;;;
                                  -207880;4;0;false;false;;;;;;
                                  -207884;1;0;false;false;63;95;191;;;
                                  -207885;2;0;false;false;;;;;;
                                  -207887;6;0;false;false;63;95;191;;;
                                  -207893;1;0;false;false;;;;;;
                                  -207894;2;0;false;false;63;95;191;;;
                                  -207896;1;0;false;false;;;;;;
                                  -207897;3;0;false;false;63;95;191;;;
                                  -207900;1;0;false;false;;;;;;
                                  -207901;2;0;false;false;63;95;191;;;
                                  -207903;1;0;false;false;;;;;;
                                  -207904;5;0;false;false;63;95;191;;;
                                  -207909;2;0;false;false;;;;;;
                                  -207911;2;0;false;false;63;95;191;;;
                                  -207913;1;0;false;false;;;;;;
                                  -207914;4;0;false;false;63;95;191;;;
                                  -207918;1;0;false;false;;;;;;
                                  -207919;10;0;false;false;63;95;191;;;
                                  -207929;1;0;false;false;;;;;;
                                  -207930;6;0;false;false;63;95;191;;;
                                  -207936;1;0;false;false;;;;;;
                                  -207937;4;0;false;false;63;95;191;;;
                                  -207941;1;0;false;false;;;;;;
                                  -207942;7;0;false;false;63;95;191;;;
                                  -207949;1;0;false;false;;;;;;
                                  -207950;3;0;false;false;63;95;191;;;
                                  -207953;4;0;false;false;;;;;;
                                  -207957;1;0;false;false;63;95;191;;;
                                  -207958;2;0;false;false;;;;;;
                                  -207960;3;0;false;false;63;95;191;;;
                                  -207963;1;0;false;false;;;;;;
                                  -207964;6;0;false;false;63;95;191;;;
                                  -207970;1;0;false;false;;;;;;
                                  -207971;6;0;false;false;63;95;191;;;
                                  -207977;1;0;false;false;;;;;;
                                  -207978;15;0;false;false;63;95;191;;;
                                  -207993;1;0;false;false;;;;;;
                                  -207994;3;0;false;false;63;95;191;;;
                                  -207997;1;0;false;false;;;;;;
                                  -207998;2;0;false;false;63;95;191;;;
                                  -208000;1;0;false;false;;;;;;
                                  -208001;3;0;false;false;63;95;191;;;
                                  -208004;1;0;false;false;;;;;;
                                  -208005;2;0;false;false;63;95;191;;;
                                  -208007;1;0;false;false;;;;;;
                                  -208008;6;0;false;false;63;95;191;;;
                                  -208014;4;0;false;false;;;;;;
                                  -208018;1;0;false;false;63;95;191;;;
                                  -208019;1;0;false;false;;;;;;
                                  -208020;11;1;false;false;127;159;191;;;
                                  -208031;12;0;false;false;63;95;191;;;
                                  -208043;1;0;false;false;;;;;;
                                  -208044;4;0;false;false;127;127;159;;;
                                  -208048;3;0;false;false;;;;;;
                                  -208051;1;0;false;false;63;95;191;;;
                                  -208052;4;0;false;false;;;;;;
                                  -208056;4;0;false;false;127;127;159;;;
                                  -208060;21;0;false;false;63;95;191;;;
                                  -208081;1;0;false;false;;;;;;
                                  -208082;1;0;false;false;127;127;159;;;
                                  -208083;1;0;false;false;;;;;;
                                  -208084;2;0;false;false;63;95;191;;;
                                  -208086;1;0;false;false;;;;;;
                                  -208087;3;0;false;false;63;95;191;;;
                                  -208090;1;0;false;false;;;;;;
                                  -208091;8;0;false;false;63;95;191;;;
                                  -208099;1;0;false;false;;;;;;
                                  -208100;3;0;false;false;63;95;191;;;
                                  -208103;1;0;false;false;;;;;;
                                  -208104;4;0;false;false;63;95;191;;;
                                  -208108;1;0;false;false;;;;;;
                                  -208109;8;0;false;false;63;95;191;;;
                                  -208117;5;0;false;false;127;127;159;;;
                                  -208122;3;0;false;false;;;;;;
                                  -208125;1;0;false;false;63;95;191;;;
                                  -208126;4;0;false;false;;;;;;
                                  -208130;4;0;false;false;127;127;159;;;
                                  -208134;27;0;false;false;63;95;191;;;
                                  -208161;1;0;false;false;;;;;;
                                  -208162;1;0;false;false;127;127;159;;;
                                  -208163;1;0;false;false;;;;;;
                                  -208164;2;0;false;false;63;95;191;;;
                                  -208166;1;0;false;false;;;;;;
                                  -208167;3;0;false;false;63;95;191;;;
                                  -208170;1;0;false;false;;;;;;
                                  -208171;6;0;false;false;63;95;191;;;
                                  -208177;1;0;false;false;;;;;;
                                  -208178;4;0;false;false;63;95;191;;;
                                  -208182;1;0;false;false;;;;;;
                                  -208183;3;0;false;false;63;95;191;;;
                                  -208186;1;0;false;false;;;;;;
                                  -208187;6;0;false;false;63;95;191;;;
                                  -208193;1;0;false;false;;;;;;
                                  -208194;4;0;false;false;63;95;191;;;
                                  -208198;1;0;false;false;;;;;;
                                  -208199;7;0;false;false;63;95;191;;;
                                  -208206;1;0;false;false;;;;;;
                                  -208207;3;0;false;false;63;95;191;;;
                                  -208210;1;0;false;false;;;;;;
                                  -208211;8;0;false;false;63;95;191;;;
                                  -208219;5;0;false;false;127;127;159;;;
                                  -208224;3;0;false;false;;;;;;
                                  -208227;1;0;false;false;63;95;191;;;
                                  -208228;1;0;false;false;;;;;;
                                  -208229;5;0;false;false;127;127;159;;;
                                  -208234;3;0;false;false;;;;;;
                                  -208237;1;0;false;false;63;95;191;;;
                                  -208238;1;0;false;false;;;;;;
                                  -208239;11;1;false;false;127;159;191;;;
                                  -208250;24;0;false;false;63;95;191;;;
                                  -208274;1;0;false;false;;;;;;
                                  -208275;4;0;false;false;127;127;159;;;
                                  -208279;3;0;false;false;;;;;;
                                  -208282;1;0;false;false;63;95;191;;;
                                  -208283;3;0;false;false;;;;;;
                                  -208286;4;0;false;false;127;127;159;;;
                                  -208290;19;0;false;false;63;95;191;;;
                                  -208309;1;0;false;false;;;;;;
                                  -208310;4;0;false;false;63;95;191;;;
                                  -208314;1;0;false;false;;;;;;
                                  -208315;5;0;false;false;63;95;191;;;
                                  -208320;1;0;false;false;;;;;;
                                  -208321;6;0;false;false;63;95;191;;;
                                  -208327;1;0;false;false;;;;;;
                                  -208328;3;0;false;false;63;95;191;;;
                                  -208331;1;0;false;false;;;;;;
                                  -208332;3;0;false;false;63;95;191;;;
                                  -208335;1;0;false;false;;;;;;
                                  -208336;7;0;false;false;63;95;191;;;
                                  -208343;1;0;false;false;;;;;;
                                  -208344;3;0;false;false;63;95;191;;;
                                  -208347;1;0;false;false;;;;;;
                                  -208348;6;0;false;false;63;95;191;;;
                                  -208354;1;0;false;false;;;;;;
                                  -208355;7;0;false;false;63;95;191;;;
                                  -208362;5;0;false;false;127;127;159;;;
                                  -208367;4;0;false;false;;;;;;
                                  -208371;1;0;false;false;63;95;191;;;
                                  -208372;1;0;false;false;;;;;;
                                  -208373;5;0;false;false;127;127;159;;;
                                  -208378;3;0;false;false;;;;;;
                                  -208381;2;0;false;false;63;95;191;;;
                                  -208383;2;0;false;false;;;;;;
                                  -208385;6;1;false;false;127;0;85;;;
                                  -208391;1;0;false;false;;;;;;
                                  -208392;4;1;false;false;127;0;85;;;
                                  -208396;1;0;false;false;;;;;;
                                  -208397;12;0;false;false;0;0;0;;;
                                  -208409;3;1;false;false;127;0;85;;;
                                  -208412;1;0;false;false;;;;;;
                                  -208413;6;0;false;false;0;0;0;;;
                                  -208419;1;0;false;false;;;;;;
                                  -208420;3;1;false;false;127;0;85;;;
                                  -208423;1;0;false;false;;;;;;
                                  -208424;7;0;false;false;0;0;0;;;
                                  -208431;1;0;false;false;;;;;;
                                  -208432;7;1;false;false;127;0;85;;;
                                  -208439;1;0;false;false;;;;;;
                                  -208440;16;0;false;false;0;0;0;;;
                                  -208456;1;0;false;false;;;;;;
                                  -208457;1;0;false;false;0;0;0;;;
                                  -208458;3;0;false;false;;;;;;
                                  -208461;14;0;false;false;0;0;0;;;
                                  -208475;3;0;false;false;;;;;;
                                  -208478;3;1;false;false;127;0;85;;;
                                  -208481;1;0;false;false;;;;;;
                                  -208482;3;0;false;false;0;0;0;;;
                                  -208485;1;0;false;false;;;;;;
                                  -208486;1;0;false;false;0;0;0;;;
                                  -208487;1;0;false;false;;;;;;
                                  -208488;5;0;false;false;0;0;0;;;
                                  -208493;1;0;false;false;;;;;;
                                  -208494;1;0;false;false;0;0;0;;;
                                  -208495;1;0;false;false;;;;;;
                                  -208496;7;0;false;false;0;0;0;;;
                                  -208503;3;0;false;false;;;;;;
                                  -208506;3;1;false;false;127;0;85;;;
                                  -208509;1;0;false;false;;;;;;
                                  -208510;13;0;false;false;0;0;0;;;
                                  -208523;1;0;false;false;;;;;;
                                  -208524;1;0;false;false;0;0;0;;;
                                  -208525;1;0;false;false;;;;;;
                                  -208526;23;0;false;false;0;0;0;;;
                                  -208549;3;0;false;false;;;;;;
                                  -208552;3;1;false;false;127;0;85;;;
                                  -208555;1;0;false;false;;;;;;
                                  -208556;10;0;false;false;0;0;0;;;
                                  -208566;3;0;false;false;;;;;;
                                  -208569;3;1;false;false;127;0;85;;;
                                  -208572;1;0;false;false;;;;;;
                                  -208573;9;0;false;false;0;0;0;;;
                                  -208582;6;0;false;false;;;;;;
                                  -208588;2;1;false;false;127;0;85;;;
                                  -208590;1;0;false;false;;;;;;
                                  -208591;6;0;false;false;0;0;0;;;
                                  -208597;1;0;false;false;;;;;;
                                  -208598;1;0;false;false;0;0;0;;;
                                  -208599;1;0;false;false;;;;;;
                                  -208600;3;0;false;false;0;0;0;;;
                                  -208603;1;0;false;false;;;;;;
                                  -208604;2;0;false;false;0;0;0;;;
                                  -208606;1;0;false;false;;;;;;
                                  -208607;5;0;false;false;0;0;0;;;
                                  -208612;1;0;false;false;;;;;;
                                  -208613;1;0;false;false;0;0;0;;;
                                  -208614;1;0;false;false;;;;;;
                                  -208615;1;0;false;false;0;0;0;;;
                                  -208616;1;0;false;false;;;;;;
                                  -208617;2;0;false;false;0;0;0;;;
                                  -208619;1;0;false;false;;;;;;
                                  -208620;3;0;false;false;0;0;0;;;
                                  -208623;1;0;false;false;;;;;;
                                  -208624;1;0;false;false;0;0;0;;;
                                  -208625;1;0;false;false;;;;;;
                                  -208626;14;0;false;false;0;0;0;;;
                                  -208640;1;0;false;false;;;;;;
                                  -208641;1;0;false;false;0;0;0;;;
                                  -208642;4;0;false;false;;;;;;
                                  -208646;35;0;false;false;0;0;0;;;
                                  -208681;3;0;false;false;;;;;;
                                  -208684;1;0;false;false;0;0;0;;;
                                  -208685;4;0;false;false;;;;;;
                                  -208689;9;0;false;false;0;0;0;;;
                                  -208698;1;0;false;false;;;;;;
                                  -208699;1;0;false;false;0;0;0;;;
                                  -208700;1;0;false;false;;;;;;
                                  -208701;31;0;false;false;0;0;0;;;
                                  -208732;3;0;false;false;;;;;;
                                  -208735;8;0;false;false;0;0;0;;;
                                  -208743;1;0;false;false;;;;;;
                                  -208744;1;0;false;false;0;0;0;;;
                                  -208745;1;0;false;false;;;;;;
                                  -208746;29;0;false;false;0;0;0;;;
                                  -208775;3;0;false;false;;;;;;
                                  -208778;66;0;false;false;63;127;95;;;
                                  -208844;1;0;false;false;;;;;;
                                  -208845;28;0;false;false;63;127;95;;;
                                  -208873;1;0;false;false;;;;;;
                                  -208874;26;0;false;false;0;0;0;;;
                                  -208900;1;0;false;false;;;;;;
                                  -208901;8;0;false;false;0;0;0;;;
                                  -208909;1;0;false;false;;;;;;
                                  -208910;1;0;false;false;0;0;0;;;
                                  -208911;1;0;false;false;;;;;;
                                  -208912;9;0;false;false;0;0;0;;;
                                  -208921;1;0;false;false;;;;;;
                                  -208922;1;0;false;false;0;0;0;;;
                                  -208923;1;0;false;false;;;;;;
                                  -208924;2;0;false;false;0;0;0;;;
                                  -208926;1;0;false;false;;;;;;
                                  -208927;4;1;false;false;127;0;85;;;
                                  -208931;2;0;false;false;0;0;0;;;
                                  -208933;3;0;false;false;;;;;;
                                  -208936;26;0;false;false;0;0;0;;;
                                  -208962;1;0;false;false;;;;;;
                                  -208963;7;0;false;false;0;0;0;;;
                                  -208970;1;0;false;false;;;;;;
                                  -208971;17;0;false;false;0;0;0;;;
                                  -208988;2;0;false;false;;;;;;
                                  -208990;1;0;false;false;0;0;0;;;
                                  -208991;2;0;false;false;;;;;;
                                  -208993;3;0;false;false;63;95;191;;;
                                  -208996;3;0;false;false;;;;;;
                                  -208999;1;0;false;false;63;95;191;;;
                                  -209000;1;0;false;false;;;;;;
                                  -209001;7;0;false;false;63;95;191;;;
                                  -209008;1;0;false;false;;;;;;
                                  -209009;3;0;false;false;63;95;191;;;
                                  -209012;1;0;false;false;;;;;;
                                  -209013;9;0;false;false;63;95;191;;;
                                  -209022;1;0;false;false;;;;;;
                                  -209023;13;0;false;false;63;95;191;;;
                                  -209036;1;0;false;false;;;;;;
                                  -209037;7;0;false;false;63;95;191;;;
                                  -209044;1;0;false;false;;;;;;
                                  -209045;9;0;false;false;63;95;191;;;
                                  -209054;3;0;false;false;;;;;;
                                  -209057;1;0;false;false;63;95;191;;;
                                  -209058;1;0;false;false;;;;;;
                                  -209059;3;0;false;false;127;127;159;;;
                                  -209062;3;0;false;false;;;;;;
                                  -209065;1;0;false;false;63;95;191;;;
                                  -209066;3;0;false;false;;;;;;
                                  -209069;1;0;false;false;63;95;191;;;
                                  -209070;1;0;false;false;;;;;;
                                  -209071;7;1;false;false;127;159;191;;;
                                  -209078;8;0;false;false;63;95;191;;;
                                  -209086;1;0;false;false;;;;;;
                                  -209087;3;0;false;false;63;95;191;;;
                                  -209090;1;0;false;false;;;;;;
                                  -209091;8;0;false;false;63;95;191;;;
                                  -209099;3;0;false;false;;;;;;
                                  -209102;1;0;false;false;63;95;191;;;
                                  -209103;1;0;false;false;;;;;;
                                  -209104;11;1;false;false;127;159;191;;;
                                  -209115;12;0;false;false;63;95;191;;;
                                  -209127;1;0;false;false;;;;;;
                                  -209128;4;0;false;false;127;127;159;;;
                                  -209132;3;0;false;false;;;;;;
                                  -209135;1;0;false;false;63;95;191;;;
                                  -209136;4;0;false;false;;;;;;
                                  -209140;4;0;false;false;127;127;159;;;
                                  -209144;21;0;false;false;63;95;191;;;
                                  -209165;1;0;false;false;;;;;;
                                  -209166;1;0;false;false;127;127;159;;;
                                  -209167;1;0;false;false;;;;;;
                                  -209168;2;0;false;false;63;95;191;;;
                                  -209170;1;0;false;false;;;;;;
                                  -209171;3;0;false;false;63;95;191;;;
                                  -209174;1;0;false;false;;;;;;
                                  -209175;8;0;false;false;63;95;191;;;
                                  -209183;1;0;false;false;;;;;;
                                  -209184;3;0;false;false;63;95;191;;;
                                  -209187;1;0;false;false;;;;;;
                                  -209188;4;0;false;false;63;95;191;;;
                                  -209192;1;0;false;false;;;;;;
                                  -209193;8;0;false;false;63;95;191;;;
                                  -209201;5;0;false;false;127;127;159;;;
                                  -209206;3;0;false;false;;;;;;
                                  -209209;1;0;false;false;63;95;191;;;
                                  -209210;4;0;false;false;;;;;;
                                  -209214;4;0;false;false;127;127;159;;;
                                  -209218;27;0;false;false;63;95;191;;;
                                  -209245;1;0;false;false;;;;;;
                                  -209246;1;0;false;false;127;127;159;;;
                                  -209247;1;0;false;false;;;;;;
                                  -209248;2;0;false;false;63;95;191;;;
                                  -209250;1;0;false;false;;;;;;
                                  -209251;3;0;false;false;63;95;191;;;
                                  -209254;1;0;false;false;;;;;;
                                  -209255;6;0;false;false;63;95;191;;;
                                  -209261;1;0;false;false;;;;;;
                                  -209262;4;0;false;false;63;95;191;;;
                                  -209266;1;0;false;false;;;;;;
                                  -209267;3;0;false;false;63;95;191;;;
                                  -209270;1;0;false;false;;;;;;
                                  -209271;6;0;false;false;63;95;191;;;
                                  -209277;1;0;false;false;;;;;;
                                  -209278;4;0;false;false;63;95;191;;;
                                  -209282;1;0;false;false;;;;;;
                                  -209283;7;0;false;false;63;95;191;;;
                                  -209290;1;0;false;false;;;;;;
                                  -209291;3;0;false;false;63;95;191;;;
                                  -209294;1;0;false;false;;;;;;
                                  -209295;8;0;false;false;63;95;191;;;
                                  -209303;5;0;false;false;127;127;159;;;
                                  -209308;3;0;false;false;;;;;;
                                  -209311;1;0;false;false;63;95;191;;;
                                  -209312;1;0;false;false;;;;;;
                                  -209313;5;0;false;false;127;127;159;;;
                                  -209318;3;0;false;false;;;;;;
                                  -209321;1;0;false;false;63;95;191;;;
                                  -209322;1;0;false;false;;;;;;
                                  -209323;11;1;false;false;127;159;191;;;
                                  -209334;24;0;false;false;63;95;191;;;
                                  -209358;1;0;false;false;;;;;;
                                  -209359;4;0;false;false;127;127;159;;;
                                  -209363;3;0;false;false;;;;;;
                                  -209366;1;0;false;false;63;95;191;;;
                                  -209367;4;0;false;false;;;;;;
                                  -209371;4;0;false;false;127;127;159;;;
                                  -209375;19;0;false;false;63;95;191;;;
                                  -209394;1;0;false;false;;;;;;
                                  -209395;4;0;false;false;63;95;191;;;
                                  -209399;1;0;false;false;;;;;;
                                  -209400;8;0;false;false;63;95;191;;;
                                  -209408;1;0;false;false;;;;;;
                                  -209409;2;0;false;false;63;95;191;;;
                                  -209411;1;0;false;false;;;;;;
                                  -209412;4;0;false;false;63;95;191;;;
                                  -209416;5;0;false;false;127;127;159;;;
                                  -209421;3;0;false;false;;;;;;
                                  -209424;1;0;false;false;63;95;191;;;
                                  -209425;1;0;false;false;;;;;;
                                  -209426;5;0;false;false;127;127;159;;;
                                  -209431;3;0;false;false;;;;;;
                                  -209434;1;0;false;false;63;95;191;;;
                                  -209435;1;0;false;false;;;;;;
                                  -209436;7;1;false;false;127;159;191;;;
                                  -209443;3;0;false;false;63;95;191;;;
                                  -209446;3;0;false;false;;;;;;
                                  -209449;2;0;false;false;63;95;191;;;
                                  -209451;2;0;false;false;;;;;;
                                  -209453;6;1;false;false;127;0;85;;;
                                  -209459;1;0;false;false;;;;;;
                                  -209460;4;1;false;false;127;0;85;;;
                                  -209464;1;0;false;false;;;;;;
                                  -209465;45;0;false;false;0;0;0;;;
                                  -209510;1;0;false;false;;;;;;
                                  -209511;9;0;false;false;0;0;0;;;
                                  -209520;1;0;false;false;;;;;;
                                  -209521;1;0;false;false;0;0;0;;;
                                  -209522;3;0;false;false;;;;;;
                                  -209525;14;0;false;false;0;0;0;;;
                                  -209539;3;0;false;false;;;;;;
                                  -209542;2;1;false;false;127;0;85;;;
                                  -209544;1;0;false;false;;;;;;
                                  -209545;9;0;false;false;0;0;0;;;
                                  -209554;1;0;false;false;;;;;;
                                  -209555;2;0;false;false;0;0;0;;;
                                  -209557;1;0;false;false;;;;;;
                                  -209558;4;1;false;false;127;0;85;;;
                                  -209562;1;0;false;false;0;0;0;;;
                                  -209563;1;0;false;false;;;;;;
                                  -209564;35;0;false;false;0;0;0;;;
                                  -209599;3;0;false;false;;;;;;
                                  -209602;31;0;false;false;0;0;0;;;
                                  -209633;1;0;false;false;;;;;;
                                  -209634;10;0;false;false;0;0;0;;;
                                  -209644;3;0;false;false;;;;;;
                                  -209647;1;0;false;false;0;0;0;;;
                                  -209648;2;0;false;false;;;;;;
                                  -209650;3;0;false;false;63;95;191;;;
                                  -209653;3;0;false;false;;;;;;
                                  -209656;1;0;false;false;63;95;191;;;
                                  -209657;1;0;false;false;;;;;;
                                  -209658;7;0;false;false;63;95;191;;;
                                  -209665;1;0;false;false;;;;;;
                                  -209666;3;0;false;false;63;95;191;;;
                                  -209669;1;0;false;false;;;;;;
                                  -209670;9;0;false;false;63;95;191;;;
                                  -209679;1;0;false;false;;;;;;
                                  -209680;8;0;false;false;63;95;191;;;
                                  -209688;1;0;false;false;;;;;;
                                  -209689;6;0;false;false;63;95;191;;;
                                  -209695;1;0;false;false;;;;;;
                                  -209696;9;0;false;false;63;95;191;;;
                                  -209705;3;0;false;false;;;;;;
                                  -209708;1;0;false;false;63;95;191;;;
                                  -209709;1;0;false;false;;;;;;
                                  -209710;3;0;false;false;127;127;159;;;
                                  -209713;3;0;false;false;;;;;;
                                  -209716;1;0;false;false;63;95;191;;;
                                  -209717;3;0;false;false;;;;;;
                                  -209720;1;0;false;false;63;95;191;;;
                                  -209721;1;0;false;false;;;;;;
                                  -209722;7;1;false;false;127;159;191;;;
                                  -209729;22;0;false;false;63;95;191;;;
                                  -209751;1;0;false;false;;;;;;
                                  -209752;3;0;false;false;63;95;191;;;
                                  -209755;1;0;false;false;;;;;;
                                  -209756;8;0;false;false;63;95;191;;;
                                  -209764;3;0;false;false;;;;;;
                                  -209767;1;0;false;false;63;95;191;;;
                                  -209768;1;0;false;false;;;;;;
                                  -209769;11;1;false;false;127;159;191;;;
                                  -209780;12;0;false;false;63;95;191;;;
                                  -209792;1;0;false;false;;;;;;
                                  -209793;4;0;false;false;127;127;159;;;
                                  -209797;3;0;false;false;;;;;;
                                  -209800;1;0;false;false;63;95;191;;;
                                  -209801;4;0;false;false;;;;;;
                                  -209805;4;0;false;false;127;127;159;;;
                                  -209809;21;0;false;false;63;95;191;;;
                                  -209830;1;0;false;false;;;;;;
                                  -209831;1;0;false;false;127;127;159;;;
                                  -209832;1;0;false;false;;;;;;
                                  -209833;2;0;false;false;63;95;191;;;
                                  -209835;1;0;false;false;;;;;;
                                  -209836;3;0;false;false;63;95;191;;;
                                  -209839;1;0;false;false;;;;;;
                                  -209840;8;0;false;false;63;95;191;;;
                                  -209848;1;0;false;false;;;;;;
                                  -209849;3;0;false;false;63;95;191;;;
                                  -209852;1;0;false;false;;;;;;
                                  -209853;4;0;false;false;63;95;191;;;
                                  -209857;1;0;false;false;;;;;;
                                  -209858;8;0;false;false;63;95;191;;;
                                  -209866;5;0;false;false;127;127;159;;;
                                  -209871;3;0;false;false;;;;;;
                                  -209874;1;0;false;false;63;95;191;;;
                                  -209875;4;0;false;false;;;;;;
                                  -209879;4;0;false;false;127;127;159;;;
                                  -209883;27;0;false;false;63;95;191;;;
                                  -209910;1;0;false;false;;;;;;
                                  -209911;1;0;false;false;127;127;159;;;
                                  -209912;1;0;false;false;;;;;;
                                  -209913;2;0;false;false;63;95;191;;;
                                  -209915;1;0;false;false;;;;;;
                                  -209916;3;0;false;false;63;95;191;;;
                                  -209919;1;0;false;false;;;;;;
                                  -209920;6;0;false;false;63;95;191;;;
                                  -209926;1;0;false;false;;;;;;
                                  -209927;4;0;false;false;63;95;191;;;
                                  -209931;1;0;false;false;;;;;;
                                  -209932;3;0;false;false;63;95;191;;;
                                  -209935;1;0;false;false;;;;;;
                                  -209936;6;0;false;false;63;95;191;;;
                                  -209942;1;0;false;false;;;;;;
                                  -209943;4;0;false;false;63;95;191;;;
                                  -209947;1;0;false;false;;;;;;
                                  -209948;7;0;false;false;63;95;191;;;
                                  -209955;1;0;false;false;;;;;;
                                  -209956;3;0;false;false;63;95;191;;;
                                  -209959;1;0;false;false;;;;;;
                                  -209960;8;0;false;false;63;95;191;;;
                                  -209968;5;0;false;false;127;127;159;;;
                                  -209973;3;0;false;false;;;;;;
                                  -209976;1;0;false;false;63;95;191;;;
                                  -209977;1;0;false;false;;;;;;
                                  -209978;5;0;false;false;127;127;159;;;
                                  -209983;3;0;false;false;;;;;;
                                  -209986;1;0;false;false;63;95;191;;;
                                  -209987;1;0;false;false;;;;;;
                                  -209988;11;1;false;false;127;159;191;;;
                                  -209999;24;0;false;false;63;95;191;;;
                                  -210023;1;0;false;false;;;;;;
                                  -210024;4;0;false;false;127;127;159;;;
                                  -210028;3;0;false;false;;;;;;
                                  -210031;1;0;false;false;63;95;191;;;
                                  -210032;4;0;false;false;;;;;;
                                  -210036;4;0;false;false;127;127;159;;;
                                  -210040;19;0;false;false;63;95;191;;;
                                  -210059;1;0;false;false;;;;;;
                                  -210060;4;0;false;false;63;95;191;;;
                                  -210064;1;0;false;false;;;;;;
                                  -210065;8;0;false;false;63;95;191;;;
                                  -210073;1;0;false;false;;;;;;
                                  -210074;2;0;false;false;63;95;191;;;
                                  -210076;1;0;false;false;;;;;;
                                  -210077;4;0;false;false;63;95;191;;;
                                  -210081;5;0;false;false;127;127;159;;;
                                  -210086;3;0;false;false;;;;;;
                                  -210089;1;0;false;false;63;95;191;;;
                                  -210090;1;0;false;false;;;;;;
                                  -210091;5;0;false;false;127;127;159;;;
                                  -210096;3;0;false;false;;;;;;
                                  -210099;2;0;false;false;63;95;191;;;
                                  -210101;2;0;false;false;;;;;;
                                  -210103;6;1;false;false;127;0;85;;;
                                  -210109;1;0;false;false;;;;;;
                                  -210110;4;1;false;false;127;0;85;;;
                                  -210114;1;0;false;false;;;;;;
                                  -210115;51;0;false;false;0;0;0;;;
                                  -210166;1;0;false;false;;;;;;
                                  -210167;23;0;false;false;0;0;0;;;
                                  -210190;1;0;false;false;;;;;;
                                  -210191;1;0;false;false;0;0;0;;;
                                  -210192;3;0;false;false;;;;;;
                                  -210195;14;0;false;false;0;0;0;;;
                                  -210209;3;0;false;false;;;;;;
                                  -210212;2;1;false;false;127;0;85;;;
                                  -210214;1;0;false;false;;;;;;
                                  -210215;23;0;false;false;0;0;0;;;
                                  -210238;1;0;false;false;;;;;;
                                  -210239;2;0;false;false;0;0;0;;;
                                  -210241;1;0;false;false;;;;;;
                                  -210242;4;1;false;false;127;0;85;;;
                                  -210246;1;0;false;false;0;0;0;;;
                                  -210247;1;0;false;false;;;;;;
                                  -210248;35;0;false;false;0;0;0;;;
                                  -210283;3;0;false;false;;;;;;
                                  -210286;30;0;false;false;0;0;0;;;
                                  -210316;1;0;false;false;;;;;;
                                  -210317;24;0;false;false;0;0;0;;;
                                  -210341;3;0;false;false;;;;;;
                                  -210344;1;0;false;false;0;0;0;;;
                                  -210345;2;0;false;false;;;;;;
                                  -210347;3;0;false;false;63;95;191;;;
                                  -210350;3;0;false;false;;;;;;
                                  -210353;1;0;false;false;63;95;191;;;
                                  -210354;1;0;false;false;;;;;;
                                  -210355;7;0;false;false;63;95;191;;;
                                  -210362;1;0;false;false;;;;;;
                                  -210363;3;0;false;false;63;95;191;;;
                                  -210366;1;0;false;false;;;;;;
                                  -210367;9;0;false;false;63;95;191;;;
                                  -210376;1;0;false;false;;;;;;
                                  -210377;4;0;false;false;63;95;191;;;
                                  -210381;1;0;false;false;;;;;;
                                  -210382;10;0;false;false;63;95;191;;;
                                  -210392;1;0;false;false;;;;;;
                                  -210393;9;0;false;false;63;95;191;;;
                                  -210402;3;0;false;false;;;;;;
                                  -210405;1;0;false;false;63;95;191;;;
                                  -210406;1;0;false;false;;;;;;
                                  -210407;3;0;false;false;127;127;159;;;
                                  -210410;3;0;false;false;;;;;;
                                  -210413;1;0;false;false;63;95;191;;;
                                  -210414;3;0;false;false;;;;;;
                                  -210417;1;0;false;false;63;95;191;;;
                                  -210418;1;0;false;false;;;;;;
                                  -210419;7;1;false;false;127;159;191;;;
                                  -210426;8;0;false;false;63;95;191;;;
                                  -210434;1;0;false;false;;;;;;
                                  -210435;3;0;false;false;63;95;191;;;
                                  -210438;1;0;false;false;;;;;;
                                  -210439;8;0;false;false;63;95;191;;;
                                  -210447;3;0;false;false;;;;;;
                                  -210450;1;0;false;false;63;95;191;;;
                                  -210451;1;0;false;false;;;;;;
                                  -210452;11;1;false;false;127;159;191;;;
                                  -210463;12;0;false;false;63;95;191;;;
                                  -210475;1;0;false;false;;;;;;
                                  -210476;4;0;false;false;127;127;159;;;
                                  -210480;3;0;false;false;;;;;;
                                  -210483;1;0;false;false;63;95;191;;;
                                  -210484;4;0;false;false;;;;;;
                                  -210488;4;0;false;false;127;127;159;;;
                                  -210492;21;0;false;false;63;95;191;;;
                                  -210513;1;0;false;false;;;;;;
                                  -210514;1;0;false;false;127;127;159;;;
                                  -210515;1;0;false;false;;;;;;
                                  -210516;2;0;false;false;63;95;191;;;
                                  -210518;1;0;false;false;;;;;;
                                  -210519;3;0;false;false;63;95;191;;;
                                  -210522;1;0;false;false;;;;;;
                                  -210523;8;0;false;false;63;95;191;;;
                                  -210531;1;0;false;false;;;;;;
                                  -210532;3;0;false;false;63;95;191;;;
                                  -210535;1;0;false;false;;;;;;
                                  -210536;4;0;false;false;63;95;191;;;
                                  -210540;1;0;false;false;;;;;;
                                  -210541;8;0;false;false;63;95;191;;;
                                  -210549;5;0;false;false;127;127;159;;;
                                  -210554;3;0;false;false;;;;;;
                                  -210557;1;0;false;false;63;95;191;;;
                                  -210558;4;0;false;false;;;;;;
                                  -210562;4;0;false;false;127;127;159;;;
                                  -210566;27;0;false;false;63;95;191;;;
                                  -210593;1;0;false;false;;;;;;
                                  -210594;1;0;false;false;127;127;159;;;
                                  -210595;1;0;false;false;;;;;;
                                  -210596;2;0;false;false;63;95;191;;;
                                  -210598;1;0;false;false;;;;;;
                                  -210599;3;0;false;false;63;95;191;;;
                                  -210602;1;0;false;false;;;;;;
                                  -210603;6;0;false;false;63;95;191;;;
                                  -210609;1;0;false;false;;;;;;
                                  -210610;4;0;false;false;63;95;191;;;
                                  -210614;1;0;false;false;;;;;;
                                  -210615;3;0;false;false;63;95;191;;;
                                  -210618;1;0;false;false;;;;;;
                                  -210619;6;0;false;false;63;95;191;;;
                                  -210625;1;0;false;false;;;;;;
                                  -210626;4;0;false;false;63;95;191;;;
                                  -210630;1;0;false;false;;;;;;
                                  -210631;7;0;false;false;63;95;191;;;
                                  -210638;1;0;false;false;;;;;;
                                  -210639;3;0;false;false;63;95;191;;;
                                  -210642;1;0;false;false;;;;;;
                                  -210643;8;0;false;false;63;95;191;;;
                                  -210651;5;0;false;false;127;127;159;;;
                                  -210656;3;0;false;false;;;;;;
                                  -210659;1;0;false;false;63;95;191;;;
                                  -210660;1;0;false;false;;;;;;
                                  -210661;5;0;false;false;127;127;159;;;
                                  -210666;3;0;false;false;;;;;;
                                  -210669;1;0;false;false;63;95;191;;;
                                  -210670;1;0;false;false;;;;;;
                                  -210671;11;1;false;false;127;159;191;;;
                                  -210682;24;0;false;false;63;95;191;;;
                                  -210706;1;0;false;false;;;;;;
                                  -210707;4;0;false;false;127;127;159;;;
                                  -210711;3;0;false;false;;;;;;
                                  -210714;1;0;false;false;63;95;191;;;
                                  -210715;4;0;false;false;;;;;;
                                  -210719;4;0;false;false;127;127;159;;;
                                  -210723;19;0;false;false;63;95;191;;;
                                  -210742;1;0;false;false;;;;;;
                                  -210743;4;0;false;false;63;95;191;;;
                                  -210747;1;0;false;false;;;;;;
                                  -210748;8;0;false;false;63;95;191;;;
                                  -210756;1;0;false;false;;;;;;
                                  -210757;2;0;false;false;63;95;191;;;
                                  -210759;1;0;false;false;;;;;;
                                  -210760;4;0;false;false;63;95;191;;;
                                  -210764;5;0;false;false;127;127;159;;;
                                  -210769;3;0;false;false;;;;;;
                                  -210772;1;0;false;false;63;95;191;;;
                                  -210773;1;0;false;false;;;;;;
                                  -210774;5;0;false;false;127;127;159;;;
                                  -210779;3;0;false;false;;;;;;
                                  -210782;2;0;false;false;63;95;191;;;
                                  -210784;2;0;false;false;;;;;;
                                  -210786;6;1;false;false;127;0;85;;;
                                  -210792;1;0;false;false;;;;;;
                                  -210793;4;1;false;false;127;0;85;;;
                                  -210797;1;0;false;false;;;;;;
                                  -210798;51;0;false;false;0;0;0;;;
                                  -210849;1;0;false;false;;;;;;
                                  -210850;9;0;false;false;0;0;0;;;
                                  -210859;1;0;false;false;;;;;;
                                  -210860;1;0;false;false;0;0;0;;;
                                  -210861;3;0;false;false;;;;;;
                                  -210864;14;0;false;false;0;0;0;;;
                                  -210878;3;0;false;false;;;;;;
                                  -210881;2;1;false;false;127;0;85;;;
                                  -210883;1;0;false;false;;;;;;
                                  -210884;9;0;false;false;0;0;0;;;
                                  -210893;1;0;false;false;;;;;;
                                  -210894;2;0;false;false;0;0;0;;;
                                  -210896;1;0;false;false;;;;;;
                                  -210897;4;1;false;false;127;0;85;;;
                                  -210901;1;0;false;false;0;0;0;;;
                                  -210902;1;0;false;false;;;;;;
                                  -210903;35;0;false;false;0;0;0;;;
                                  -210938;3;0;false;false;;;;;;
                                  -210941;33;0;false;false;0;0;0;;;
                                  -210974;1;0;false;false;;;;;;
                                  -210975;10;0;false;false;0;0;0;;;
                                  -210985;4;0;false;false;;;;;;
                                  -210989;66;0;false;false;63;127;95;;;
                                  -211055;1;0;false;false;;;;;;
                                  -211056;2;1;false;false;127;0;85;;;
                                  -211058;1;0;false;false;;;;;;
                                  -211059;32;0;false;false;0;0;0;;;
                                  -211091;1;0;false;false;;;;;;
                                  -211092;2;0;false;false;0;0;0;;;
                                  -211094;1;0;false;false;;;;;;
                                  -211095;19;0;false;false;0;0;0;;;
                                  -211114;1;0;false;false;;;;;;
                                  -211115;1;0;false;false;0;0;0;;;
                                  -211116;4;0;false;false;;;;;;
                                  -211120;18;0;false;false;0;0;0;;;
                                  -211138;1;0;false;false;;;;;;
                                  -211139;13;0;false;false;0;0;0;;;
                                  -211152;1;0;false;false;;;;;;
                                  -211153;1;0;false;false;0;0;0;;;
                                  -211154;1;0;false;false;;;;;;
                                  -211155;3;1;false;false;127;0;85;;;
                                  -211158;1;0;false;false;;;;;;
                                  -211159;38;0;false;false;0;0;0;;;
                                  -211197;4;0;false;false;;;;;;
                                  -211201;30;0;false;false;0;0;0;;;
                                  -211231;1;0;false;false;;;;;;
                                  -211232;15;0;false;false;0;0;0;;;
                                  -211247;5;0;false;false;;;;;;
                                  -211252;18;0;false;false;0;0;0;;;
                                  -211270;1;0;false;false;;;;;;
                                  -211271;1;0;false;false;0;0;0;;;
                                  -211272;1;0;false;false;;;;;;
                                  -211273;5;1;false;false;127;0;85;;;
                                  -211278;1;0;false;false;0;0;0;;;
                                  -211279;3;0;false;false;;;;;;
                                  -211282;1;0;false;false;0;0;0;;;
                                  -211283;2;0;false;false;;;;;;
                                  -211285;1;0;false;false;0;0;0;;;
                                  -211286;2;0;false;false;;;;;;
                                  -211288;3;0;false;false;63;95;191;;;
                                  -211291;3;0;false;false;;;;;;
                                  -211294;1;0;false;false;63;95;191;;;
                                  -211295;1;0;false;false;;;;;;
                                  -211296;7;0;false;false;63;95;191;;;
                                  -211303;1;0;false;false;;;;;;
                                  -211304;3;0;false;false;63;95;191;;;
                                  -211307;1;0;false;false;;;;;;
                                  -211308;9;0;false;false;63;95;191;;;
                                  -211317;1;0;false;false;;;;;;
                                  -211318;4;0;false;false;63;95;191;;;
                                  -211322;1;0;false;false;;;;;;
                                  -211323;5;0;false;false;63;95;191;;;
                                  -211328;1;0;false;false;;;;;;
                                  -211329;9;0;false;false;63;95;191;;;
                                  -211338;3;0;false;false;;;;;;
                                  -211341;1;0;false;false;63;95;191;;;
                                  -211342;1;0;false;false;;;;;;
                                  -211343;3;0;false;false;127;127;159;;;
                                  -211346;3;0;false;false;;;;;;
                                  -211349;1;0;false;false;63;95;191;;;
                                  -211350;3;0;false;false;;;;;;
                                  -211353;1;0;false;false;63;95;191;;;
                                  -211354;1;0;false;false;;;;;;
                                  -211355;7;1;false;false;127;159;191;;;
                                  -211362;8;0;false;false;63;95;191;;;
                                  -211370;1;0;false;false;;;;;;
                                  -211371;3;0;false;false;63;95;191;;;
                                  -211374;1;0;false;false;;;;;;
                                  -211375;8;0;false;false;63;95;191;;;
                                  -211383;3;0;false;false;;;;;;
                                  -211386;1;0;false;false;63;95;191;;;
                                  -211387;1;0;false;false;;;;;;
                                  -211388;11;1;false;false;127;159;191;;;
                                  -211399;12;0;false;false;63;95;191;;;
                                  -211411;1;0;false;false;;;;;;
                                  -211412;4;0;false;false;127;127;159;;;
                                  -211416;3;0;false;false;;;;;;
                                  -211419;1;0;false;false;63;95;191;;;
                                  -211420;4;0;false;false;;;;;;
                                  -211424;4;0;false;false;127;127;159;;;
                                  -211428;21;0;false;false;63;95;191;;;
                                  -211449;1;0;false;false;;;;;;
                                  -211450;1;0;false;false;127;127;159;;;
                                  -211451;1;0;false;false;;;;;;
                                  -211452;2;0;false;false;63;95;191;;;
                                  -211454;1;0;false;false;;;;;;
                                  -211455;3;0;false;false;63;95;191;;;
                                  -211458;1;0;false;false;;;;;;
                                  -211459;8;0;false;false;63;95;191;;;
                                  -211467;1;0;false;false;;;;;;
                                  -211468;3;0;false;false;63;95;191;;;
                                  -211471;1;0;false;false;;;;;;
                                  -211472;4;0;false;false;63;95;191;;;
                                  -211476;1;0;false;false;;;;;;
                                  -211477;8;0;false;false;63;95;191;;;
                                  -211485;5;0;false;false;127;127;159;;;
                                  -211490;3;0;false;false;;;;;;
                                  -211493;1;0;false;false;63;95;191;;;
                                  -211494;4;0;false;false;;;;;;
                                  -211498;4;0;false;false;127;127;159;;;
                                  -211502;27;0;false;false;63;95;191;;;
                                  -211529;1;0;false;false;;;;;;
                                  -211530;1;0;false;false;127;127;159;;;
                                  -211531;1;0;false;false;;;;;;
                                  -211532;2;0;false;false;63;95;191;;;
                                  -211534;1;0;false;false;;;;;;
                                  -211535;3;0;false;false;63;95;191;;;
                                  -211538;1;0;false;false;;;;;;
                                  -211539;6;0;false;false;63;95;191;;;
                                  -211545;1;0;false;false;;;;;;
                                  -211546;4;0;false;false;63;95;191;;;
                                  -211550;1;0;false;false;;;;;;
                                  -211551;3;0;false;false;63;95;191;;;
                                  -211554;1;0;false;false;;;;;;
                                  -211555;6;0;false;false;63;95;191;;;
                                  -211561;1;0;false;false;;;;;;
                                  -211562;4;0;false;false;63;95;191;;;
                                  -211566;1;0;false;false;;;;;;
                                  -211567;7;0;false;false;63;95;191;;;
                                  -211574;1;0;false;false;;;;;;
                                  -211575;3;0;false;false;63;95;191;;;
                                  -211578;1;0;false;false;;;;;;
                                  -211579;8;0;false;false;63;95;191;;;
                                  -211587;5;0;false;false;127;127;159;;;
                                  -211592;3;0;false;false;;;;;;
                                  -211595;1;0;false;false;63;95;191;;;
                                  -211596;1;0;false;false;;;;;;
                                  -211597;5;0;false;false;127;127;159;;;
                                  -211602;3;0;false;false;;;;;;
                                  -211605;1;0;false;false;63;95;191;;;
                                  -211606;1;0;false;false;;;;;;
                                  -211607;11;1;false;false;127;159;191;;;
                                  -211618;24;0;false;false;63;95;191;;;
                                  -211642;1;0;false;false;;;;;;
                                  -211643;4;0;false;false;127;127;159;;;
                                  -211647;3;0;false;false;;;;;;
                                  -211650;1;0;false;false;63;95;191;;;
                                  -211651;4;0;false;false;;;;;;
                                  -211655;4;0;false;false;127;127;159;;;
                                  -211659;19;0;false;false;63;95;191;;;
                                  -211678;1;0;false;false;;;;;;
                                  -211679;4;0;false;false;63;95;191;;;
                                  -211683;1;0;false;false;;;;;;
                                  -211684;8;0;false;false;63;95;191;;;
                                  -211692;1;0;false;false;;;;;;
                                  -211693;2;0;false;false;63;95;191;;;
                                  -211695;1;0;false;false;;;;;;
                                  -211696;4;0;false;false;63;95;191;;;
                                  -211700;5;0;false;false;127;127;159;;;
                                  -211705;3;0;false;false;;;;;;
                                  -211708;1;0;false;false;63;95;191;;;
                                  -211709;1;0;false;false;;;;;;
                                  -211710;5;0;false;false;127;127;159;;;
                                  -211715;3;0;false;false;;;;;;
                                  -211718;2;0;false;false;63;95;191;;;
                                  -211720;2;0;false;false;;;;;;
                                  -211722;6;1;false;false;127;0;85;;;
                                  -211728;1;0;false;false;;;;;;
                                  -211729;4;1;false;false;127;0;85;;;
                                  -211733;1;0;false;false;;;;;;
                                  -211734;41;0;false;false;0;0;0;;;
                                  -211775;1;0;false;false;;;;;;
                                  -211776;9;0;false;false;0;0;0;;;
                                  -211785;1;0;false;false;;;;;;
                                  -211786;1;0;false;false;0;0;0;;;
                                  -211787;3;0;false;false;;;;;;
                                  -211790;14;0;false;false;0;0;0;;;
                                  -211804;3;0;false;false;;;;;;
                                  -211807;2;1;false;false;127;0;85;;;
                                  -211809;1;0;false;false;;;;;;
                                  -211810;9;0;false;false;0;0;0;;;
                                  -211819;1;0;false;false;;;;;;
                                  -211820;2;0;false;false;0;0;0;;;
                                  -211822;1;0;false;false;;;;;;
                                  -211823;4;1;false;false;127;0;85;;;
                                  -211827;1;0;false;false;0;0;0;;;
                                  -211828;1;0;false;false;;;;;;
                                  -211829;1;0;false;false;0;0;0;;;
                                  -211830;4;0;false;false;;;;;;
                                  -211834;35;0;false;false;0;0;0;;;
                                  -211869;3;0;false;false;;;;;;
                                  -211872;1;0;false;false;0;0;0;;;
                                  -211873;3;0;false;false;;;;;;
                                  -211876;28;0;false;false;0;0;0;;;
                                  -211904;1;0;false;false;;;;;;
                                  -211905;10;0;false;false;0;0;0;;;
                                  -211915;4;0;false;false;;;;;;
                                  -211919;80;0;false;false;63;127;95;;;
                                  -211999;1;0;false;false;;;;;;
                                  -212000;2;1;false;false;127;0;85;;;
                                  -212002;1;0;false;false;;;;;;
                                  -212003;27;0;false;false;0;0;0;;;
                                  -212030;1;0;false;false;;;;;;
                                  -212031;2;0;false;false;0;0;0;;;
                                  -212033;1;0;false;false;;;;;;
                                  -212034;14;0;false;false;0;0;0;;;
                                  -212048;1;0;false;false;;;;;;
                                  -212049;1;0;false;false;0;0;0;;;
                                  -212050;4;0;false;false;;;;;;
                                  -212054;18;0;false;false;0;0;0;;;
                                  -212072;1;0;false;false;;;;;;
                                  -212073;13;0;false;false;0;0;0;;;
                                  -212086;1;0;false;false;;;;;;
                                  -212087;1;0;false;false;0;0;0;;;
                                  -212088;1;0;false;false;;;;;;
                                  -212089;3;1;false;false;127;0;85;;;
                                  -212092;1;0;false;false;;;;;;
                                  -212093;38;0;false;false;0;0;0;;;
                                  -212131;4;0;false;false;;;;;;
                                  -212135;25;0;false;false;0;0;0;;;
                                  -212160;1;0;false;false;;;;;;
                                  -212161;15;0;false;false;0;0;0;;;
                                  -212176;5;0;false;false;;;;;;
                                  -212181;13;0;false;false;0;0;0;;;
                                  -212194;1;0;false;false;;;;;;
                                  -212195;1;0;false;false;0;0;0;;;
                                  -212196;1;0;false;false;;;;;;
                                  -212197;5;1;false;false;127;0;85;;;
                                  -212202;1;0;false;false;0;0;0;;;
                                  -212203;3;0;false;false;;;;;;
                                  -212206;1;0;false;false;0;0;0;;;
                                  -212207;2;0;false;false;;;;;;
                                  -212209;1;0;false;false;0;0;0;;;
                                  -212210;2;0;false;false;;;;;;
                                  -212212;3;0;false;false;63;95;191;;;
                                  -212215;3;0;false;false;;;;;;
                                  -212218;1;0;false;false;63;95;191;;;
                                  -212219;1;0;false;false;;;;;;
                                  -212220;7;0;false;false;63;95;191;;;
                                  -212227;1;0;false;false;;;;;;
                                  -212228;3;0;false;false;63;95;191;;;
                                  -212231;1;0;false;false;;;;;;
                                  -212232;9;0;false;false;63;95;191;;;
                                  -212241;1;0;false;false;;;;;;
                                  -212242;6;0;false;false;63;95;191;;;
                                  -212248;1;0;false;false;;;;;;
                                  -212249;9;0;false;false;63;95;191;;;
                                  -212258;3;0;false;false;;;;;;
                                  -212261;1;0;false;false;63;95;191;;;
                                  -212262;1;0;false;false;;;;;;
                                  -212263;3;0;false;false;127;127;159;;;
                                  -212266;3;0;false;false;;;;;;
                                  -212269;1;0;false;false;63;95;191;;;
                                  -212270;3;0;false;false;;;;;;
                                  -212273;1;0;false;false;63;95;191;;;
                                  -212274;1;0;false;false;;;;;;
                                  -212275;7;1;false;false;127;159;191;;;
                                  -212282;14;0;false;false;63;95;191;;;
                                  -212296;1;0;false;false;;;;;;
                                  -212297;3;0;false;false;63;95;191;;;
                                  -212300;1;0;false;false;;;;;;
                                  -212301;8;0;false;false;63;95;191;;;
                                  -212309;3;0;false;false;;;;;;
                                  -212312;1;0;false;false;63;95;191;;;
                                  -212313;1;0;false;false;;;;;;
                                  -212314;11;1;false;false;127;159;191;;;
                                  -212325;12;0;false;false;63;95;191;;;
                                  -212337;1;0;false;false;;;;;;
                                  -212338;4;0;false;false;127;127;159;;;
                                  -212342;3;0;false;false;;;;;;
                                  -212345;1;0;false;false;63;95;191;;;
                                  -212346;4;0;false;false;;;;;;
                                  -212350;4;0;false;false;127;127;159;;;
                                  -212354;21;0;false;false;63;95;191;;;
                                  -212375;1;0;false;false;;;;;;
                                  -212376;1;0;false;false;127;127;159;;;
                                  -212377;1;0;false;false;;;;;;
                                  -212378;2;0;false;false;63;95;191;;;
                                  -212380;1;0;false;false;;;;;;
                                  -212381;3;0;false;false;63;95;191;;;
                                  -212384;1;0;false;false;;;;;;
                                  -212385;8;0;false;false;63;95;191;;;
                                  -212393;1;0;false;false;;;;;;
                                  -212394;3;0;false;false;63;95;191;;;
                                  -212397;1;0;false;false;;;;;;
                                  -212398;4;0;false;false;63;95;191;;;
                                  -212402;1;0;false;false;;;;;;
                                  -212403;8;0;false;false;63;95;191;;;
                                  -212411;5;0;false;false;127;127;159;;;
                                  -212416;3;0;false;false;;;;;;
                                  -212419;1;0;false;false;63;95;191;;;
                                  -212420;4;0;false;false;;;;;;
                                  -212424;4;0;false;false;127;127;159;;;
                                  -212428;27;0;false;false;63;95;191;;;
                                  -212455;1;0;false;false;;;;;;
                                  -212456;1;0;false;false;127;127;159;;;
                                  -212457;1;0;false;false;;;;;;
                                  -212458;2;0;false;false;63;95;191;;;
                                  -212460;1;0;false;false;;;;;;
                                  -212461;3;0;false;false;63;95;191;;;
                                  -212464;1;0;false;false;;;;;;
                                  -212465;6;0;false;false;63;95;191;;;
                                  -212471;1;0;false;false;;;;;;
                                  -212472;4;0;false;false;63;95;191;;;
                                  -212476;1;0;false;false;;;;;;
                                  -212477;3;0;false;false;63;95;191;;;
                                  -212480;1;0;false;false;;;;;;
                                  -212481;6;0;false;false;63;95;191;;;
                                  -212487;1;0;false;false;;;;;;
                                  -212488;4;0;false;false;63;95;191;;;
                                  -212492;1;0;false;false;;;;;;
                                  -212493;7;0;false;false;63;95;191;;;
                                  -212500;1;0;false;false;;;;;;
                                  -212501;3;0;false;false;63;95;191;;;
                                  -212504;1;0;false;false;;;;;;
                                  -212505;8;0;false;false;63;95;191;;;
                                  -212513;5;0;false;false;127;127;159;;;
                                  -212518;3;0;false;false;;;;;;
                                  -212521;1;0;false;false;63;95;191;;;
                                  -212522;1;0;false;false;;;;;;
                                  -212523;5;0;false;false;127;127;159;;;
                                  -212528;3;0;false;false;;;;;;
                                  -212531;1;0;false;false;63;95;191;;;
                                  -212532;1;0;false;false;;;;;;
                                  -212533;11;1;false;false;127;159;191;;;
                                  -212544;24;0;false;false;63;95;191;;;
                                  -212568;1;0;false;false;;;;;;
                                  -212569;4;0;false;false;127;127;159;;;
                                  -212573;3;0;false;false;;;;;;
                                  -212576;1;0;false;false;63;95;191;;;
                                  -212577;4;0;false;false;;;;;;
                                  -212581;4;0;false;false;127;127;159;;;
                                  -212585;19;0;false;false;63;95;191;;;
                                  -212604;1;0;false;false;;;;;;
                                  -212605;4;0;false;false;63;95;191;;;
                                  -212609;1;0;false;false;;;;;;
                                  -212610;8;0;false;false;63;95;191;;;
                                  -212618;1;0;false;false;;;;;;
                                  -212619;2;0;false;false;63;95;191;;;
                                  -212621;1;0;false;false;;;;;;
                                  -212622;4;0;false;false;63;95;191;;;
                                  -212626;5;0;false;false;127;127;159;;;
                                  -212631;3;0;false;false;;;;;;
                                  -212634;1;0;false;false;63;95;191;;;
                                  -212635;1;0;false;false;;;;;;
                                  -212636;5;0;false;false;127;127;159;;;
                                  -212641;3;0;false;false;;;;;;
                                  -212644;2;0;false;false;63;95;191;;;
                                  -212646;2;0;false;false;;;;;;
                                  -212648;6;1;false;false;127;0;85;;;
                                  -212654;1;0;false;false;;;;;;
                                  -212655;4;1;false;false;127;0;85;;;
                                  -212659;1;0;false;false;;;;;;
                                  -212660;35;0;false;false;0;0;0;;;
                                  -212695;1;0;false;false;;;;;;
                                  -212696;15;0;false;false;0;0;0;;;
                                  -212711;1;0;false;false;;;;;;
                                  -212712;1;0;false;false;0;0;0;;;
                                  -212713;3;0;false;false;;;;;;
                                  -212716;14;0;false;false;0;0;0;;;
                                  -212730;3;0;false;false;;;;;;
                                  -212733;2;1;false;false;127;0;85;;;
                                  -212735;1;0;false;false;;;;;;
                                  -212736;15;0;false;false;0;0;0;;;
                                  -212751;1;0;false;false;;;;;;
                                  -212752;2;0;false;false;0;0;0;;;
                                  -212754;1;0;false;false;;;;;;
                                  -212755;4;1;false;false;127;0;85;;;
                                  -212759;1;0;false;false;0;0;0;;;
                                  -212760;1;0;false;false;;;;;;
                                  -212761;1;0;false;false;0;0;0;;;
                                  -212762;4;0;false;false;;;;;;
                                  -212766;35;0;false;false;0;0;0;;;
                                  -212801;3;0;false;false;;;;;;
                                  -212804;1;0;false;false;0;0;0;;;
                                  -212805;3;0;false;false;;;;;;
                                  -212808;26;0;false;false;0;0;0;;;
                                  -212834;1;0;false;false;;;;;;
                                  -212835;16;0;false;false;0;0;0;;;
                                  -212851;3;0;false;false;;;;;;
                                  -212854;1;0;false;false;0;0;0;;;
                                  -212855;2;0;false;false;;;;;;
                                  -212857;3;0;false;false;63;95;191;;;
                                  -212860;3;0;false;false;;;;;;
                                  -212863;1;0;false;false;63;95;191;;;
                                  -212864;1;0;false;false;;;;;;
                                  -212865;7;0;false;false;63;95;191;;;
                                  -212872;1;0;false;false;;;;;;
                                  -212873;3;0;false;false;63;95;191;;;
                                  -212876;1;0;false;false;;;;;;
                                  -212877;9;0;false;false;63;95;191;;;
                                  -212886;1;0;false;false;;;;;;
                                  -212887;9;0;false;false;63;95;191;;;
                                  -212896;1;0;false;false;;;;;;
                                  -212897;9;0;false;false;63;95;191;;;
                                  -212906;3;0;false;false;;;;;;
                                  -212909;1;0;false;false;63;95;191;;;
                                  -212910;1;0;false;false;;;;;;
                                  -212911;3;0;false;false;127;127;159;;;
                                  -212914;3;0;false;false;;;;;;
                                  -212917;1;0;false;false;63;95;191;;;
                                  -212918;3;0;false;false;;;;;;
                                  -212921;1;0;false;false;63;95;191;;;
                                  -212922;1;0;false;false;;;;;;
                                  -212923;7;1;false;false;127;159;191;;;
                                  -212930;8;0;false;false;63;95;191;;;
                                  -212938;1;0;false;false;;;;;;
                                  -212939;3;0;false;false;63;95;191;;;
                                  -212942;1;0;false;false;;;;;;
                                  -212943;8;0;false;false;63;95;191;;;
                                  -212951;3;0;false;false;;;;;;
                                  -212954;1;0;false;false;63;95;191;;;
                                  -212955;1;0;false;false;;;;;;
                                  -212956;11;1;false;false;127;159;191;;;
                                  -212967;12;0;false;false;63;95;191;;;
                                  -212979;1;0;false;false;;;;;;
                                  -212980;4;0;false;false;127;127;159;;;
                                  -212984;3;0;false;false;;;;;;
                                  -212987;1;0;false;false;63;95;191;;;
                                  -212988;4;0;false;false;;;;;;
                                  -212992;4;0;false;false;127;127;159;;;
                                  -212996;21;0;false;false;63;95;191;;;
                                  -213017;1;0;false;false;;;;;;
                                  -213018;1;0;false;false;127;127;159;;;
                                  -213019;1;0;false;false;;;;;;
                                  -213020;2;0;false;false;63;95;191;;;
                                  -213022;1;0;false;false;;;;;;
                                  -213023;3;0;false;false;63;95;191;;;
                                  -213026;1;0;false;false;;;;;;
                                  -213027;8;0;false;false;63;95;191;;;
                                  -213035;1;0;false;false;;;;;;
                                  -213036;3;0;false;false;63;95;191;;;
                                  -213039;1;0;false;false;;;;;;
                                  -213040;4;0;false;false;63;95;191;;;
                                  -213044;1;0;false;false;;;;;;
                                  -213045;8;0;false;false;63;95;191;;;
                                  -213053;5;0;false;false;127;127;159;;;
                                  -213058;3;0;false;false;;;;;;
                                  -213061;1;0;false;false;63;95;191;;;
                                  -213062;4;0;false;false;;;;;;
                                  -213066;4;0;false;false;127;127;159;;;
                                  -213070;27;0;false;false;63;95;191;;;
                                  -213097;1;0;false;false;;;;;;
                                  -213098;1;0;false;false;127;127;159;;;
                                  -213099;1;0;false;false;;;;;;
                                  -213100;2;0;false;false;63;95;191;;;
                                  -213102;1;0;false;false;;;;;;
                                  -213103;3;0;false;false;63;95;191;;;
                                  -213106;1;0;false;false;;;;;;
                                  -213107;6;0;false;false;63;95;191;;;
                                  -213113;1;0;false;false;;;;;;
                                  -213114;4;0;false;false;63;95;191;;;
                                  -213118;1;0;false;false;;;;;;
                                  -213119;3;0;false;false;63;95;191;;;
                                  -213122;1;0;false;false;;;;;;
                                  -213123;6;0;false;false;63;95;191;;;
                                  -213129;1;0;false;false;;;;;;
                                  -213130;4;0;false;false;63;95;191;;;
                                  -213134;1;0;false;false;;;;;;
                                  -213135;7;0;false;false;63;95;191;;;
                                  -213142;1;0;false;false;;;;;;
                                  -213143;3;0;false;false;63;95;191;;;
                                  -213146;1;0;false;false;;;;;;
                                  -213147;8;0;false;false;63;95;191;;;
                                  -213155;5;0;false;false;127;127;159;;;
                                  -213160;3;0;false;false;;;;;;
                                  -213163;1;0;false;false;63;95;191;;;
                                  -213164;1;0;false;false;;;;;;
                                  -213165;5;0;false;false;127;127;159;;;
                                  -213170;3;0;false;false;;;;;;
                                  -213173;1;0;false;false;63;95;191;;;
                                  -213174;1;0;false;false;;;;;;
                                  -213175;11;1;false;false;127;159;191;;;
                                  -213186;24;0;false;false;63;95;191;;;
                                  -213210;1;0;false;false;;;;;;
                                  -213211;4;0;false;false;127;127;159;;;
                                  -213215;3;0;false;false;;;;;;
                                  -213218;1;0;false;false;63;95;191;;;
                                  -213219;4;0;false;false;;;;;;
                                  -213223;4;0;false;false;127;127;159;;;
                                  -213227;19;0;false;false;63;95;191;;;
                                  -213246;1;0;false;false;;;;;;
                                  -213247;4;0;false;false;63;95;191;;;
                                  -213251;1;0;false;false;;;;;;
                                  -213252;8;0;false;false;63;95;191;;;
                                  -213260;1;0;false;false;;;;;;
                                  -213261;2;0;false;false;63;95;191;;;
                                  -213263;1;0;false;false;;;;;;
                                  -213264;4;0;false;false;63;95;191;;;
                                  -213268;5;0;false;false;127;127;159;;;
                                  -213273;3;0;false;false;;;;;;
                                  -213276;1;0;false;false;63;95;191;;;
                                  -213277;1;0;false;false;;;;;;
                                  -213278;5;0;false;false;127;127;159;;;
                                  -213283;3;0;false;false;;;;;;
                                  -213286;2;0;false;false;63;95;191;;;
                                  -213288;2;0;false;false;;;;;;
                                  -213290;6;1;false;false;127;0;85;;;
                                  -213296;1;0;false;false;;;;;;
                                  -213297;4;1;false;false;127;0;85;;;
                                  -213301;1;0;false;false;;;;;;
                                  -213302;41;0;false;false;0;0;0;;;
                                  -213343;1;0;false;false;;;;;;
                                  -213344;9;0;false;false;0;0;0;;;
                                  -213353;1;0;false;false;;;;;;
                                  -213354;1;0;false;false;0;0;0;;;
                                  -213355;3;0;false;false;;;;;;
                                  -213358;14;0;false;false;0;0;0;;;
                                  -213372;3;0;false;false;;;;;;
                                  -213375;2;1;false;false;127;0;85;;;
                                  -213377;1;0;false;false;;;;;;
                                  -213378;9;0;false;false;0;0;0;;;
                                  -213387;1;0;false;false;;;;;;
                                  -213388;2;0;false;false;0;0;0;;;
                                  -213390;1;0;false;false;;;;;;
                                  -213391;4;1;false;false;127;0;85;;;
                                  -213395;1;0;false;false;0;0;0;;;
                                  -213396;1;0;false;false;;;;;;
                                  -213397;1;0;false;false;0;0;0;;;
                                  -213398;4;0;false;false;;;;;;
                                  -213402;35;0;false;false;0;0;0;;;
                                  -213437;3;0;false;false;;;;;;
                                  -213440;1;0;false;false;0;0;0;;;
                                  -213441;3;0;false;false;;;;;;
                                  -213444;29;0;false;false;0;0;0;;;
                                  -213473;1;0;false;false;;;;;;
                                  -213474;10;0;false;false;0;0;0;;;
                                  -213484;3;0;false;false;;;;;;
                                  -213487;1;0;false;false;0;0;0;;;
                                  -213488;2;0;false;false;;;;;;
                                  -213490;3;0;false;false;63;95;191;;;
                                  -213493;3;0;false;false;;;;;;
                                  -213496;1;0;false;false;63;95;191;;;
                                  -213497;1;0;false;false;;;;;;
                                  -213498;7;0;false;false;63;95;191;;;
                                  -213505;1;0;false;false;;;;;;
                                  -213506;3;0;false;false;63;95;191;;;
                                  -213509;1;0;false;false;;;;;;
                                  -213510;9;0;false;false;63;95;191;;;
                                  -213519;1;0;false;false;;;;;;
                                  -213520;6;0;false;false;63;95;191;;;
                                  -213526;1;0;false;false;;;;;;
                                  -213527;9;0;false;false;63;95;191;;;
                                  -213536;3;0;false;false;;;;;;
                                  -213539;1;0;false;false;63;95;191;;;
                                  -213540;1;0;false;false;;;;;;
                                  -213541;3;0;false;false;127;127;159;;;
                                  -213544;3;0;false;false;;;;;;
                                  -213547;1;0;false;false;63;95;191;;;
                                  -213548;3;0;false;false;;;;;;
                                  -213551;1;0;false;false;63;95;191;;;
                                  -213552;1;0;false;false;;;;;;
                                  -213553;7;1;false;false;127;159;191;;;
                                  -213560;14;0;false;false;63;95;191;;;
                                  -213574;1;0;false;false;;;;;;
                                  -213575;3;0;false;false;63;95;191;;;
                                  -213578;1;0;false;false;;;;;;
                                  -213579;8;0;false;false;63;95;191;;;
                                  -213587;3;0;false;false;;;;;;
                                  -213590;1;0;false;false;63;95;191;;;
                                  -213591;1;0;false;false;;;;;;
                                  -213592;11;1;false;false;127;159;191;;;
                                  -213603;12;0;false;false;63;95;191;;;
                                  -213615;1;0;false;false;;;;;;
                                  -213616;4;0;false;false;127;127;159;;;
                                  -213620;3;0;false;false;;;;;;
                                  -213623;1;0;false;false;63;95;191;;;
                                  -213624;4;0;false;false;;;;;;
                                  -213628;4;0;false;false;127;127;159;;;
                                  -213632;21;0;false;false;63;95;191;;;
                                  -213653;1;0;false;false;;;;;;
                                  -213654;1;0;false;false;127;127;159;;;
                                  -213655;1;0;false;false;;;;;;
                                  -213656;2;0;false;false;63;95;191;;;
                                  -213658;1;0;false;false;;;;;;
                                  -213659;3;0;false;false;63;95;191;;;
                                  -213662;1;0;false;false;;;;;;
                                  -213663;8;0;false;false;63;95;191;;;
                                  -213671;1;0;false;false;;;;;;
                                  -213672;3;0;false;false;63;95;191;;;
                                  -213675;1;0;false;false;;;;;;
                                  -213676;4;0;false;false;63;95;191;;;
                                  -213680;1;0;false;false;;;;;;
                                  -213681;8;0;false;false;63;95;191;;;
                                  -213689;5;0;false;false;127;127;159;;;
                                  -213694;3;0;false;false;;;;;;
                                  -213697;1;0;false;false;63;95;191;;;
                                  -213698;4;0;false;false;;;;;;
                                  -213702;4;0;false;false;127;127;159;;;
                                  -213706;27;0;false;false;63;95;191;;;
                                  -213733;1;0;false;false;;;;;;
                                  -213734;1;0;false;false;127;127;159;;;
                                  -213735;1;0;false;false;;;;;;
                                  -213736;2;0;false;false;63;95;191;;;
                                  -213738;1;0;false;false;;;;;;
                                  -213739;3;0;false;false;63;95;191;;;
                                  -213742;1;0;false;false;;;;;;
                                  -213743;6;0;false;false;63;95;191;;;
                                  -213749;1;0;false;false;;;;;;
                                  -213750;4;0;false;false;63;95;191;;;
                                  -213754;1;0;false;false;;;;;;
                                  -213755;3;0;false;false;63;95;191;;;
                                  -213758;1;0;false;false;;;;;;
                                  -213759;6;0;false;false;63;95;191;;;
                                  -213765;1;0;false;false;;;;;;
                                  -213766;4;0;false;false;63;95;191;;;
                                  -213770;1;0;false;false;;;;;;
                                  -213771;7;0;false;false;63;95;191;;;
                                  -213778;1;0;false;false;;;;;;
                                  -213779;3;0;false;false;63;95;191;;;
                                  -213782;1;0;false;false;;;;;;
                                  -213783;8;0;false;false;63;95;191;;;
                                  -213791;5;0;false;false;127;127;159;;;
                                  -213796;3;0;false;false;;;;;;
                                  -213799;1;0;false;false;63;95;191;;;
                                  -213800;1;0;false;false;;;;;;
                                  -213801;5;0;false;false;127;127;159;;;
                                  -213806;3;0;false;false;;;;;;
                                  -213809;1;0;false;false;63;95;191;;;
                                  -213810;1;0;false;false;;;;;;
                                  -213811;11;1;false;false;127;159;191;;;
                                  -213822;24;0;false;false;63;95;191;;;
                                  -213846;1;0;false;false;;;;;;
                                  -213847;4;0;false;false;127;127;159;;;
                                  -213851;3;0;false;false;;;;;;
                                  -213854;1;0;false;false;63;95;191;;;
                                  -213855;4;0;false;false;;;;;;
                                  -213859;4;0;false;false;127;127;159;;;
                                  -213863;19;0;false;false;63;95;191;;;
                                  -213882;1;0;false;false;;;;;;
                                  -213883;4;0;false;false;63;95;191;;;
                                  -213887;1;0;false;false;;;;;;
                                  -213888;8;0;false;false;63;95;191;;;
                                  -213896;1;0;false;false;;;;;;
                                  -213897;2;0;false;false;63;95;191;;;
                                  -213899;1;0;false;false;;;;;;
                                  -213900;4;0;false;false;63;95;191;;;
                                  -213904;5;0;false;false;127;127;159;;;
                                  -213909;3;0;false;false;;;;;;
                                  -213912;1;0;false;false;63;95;191;;;
                                  -213913;1;0;false;false;;;;;;
                                  -213914;5;0;false;false;127;127;159;;;
                                  -213919;3;0;false;false;;;;;;
                                  -213922;2;0;false;false;63;95;191;;;
                                  -213924;2;0;false;false;;;;;;
                                  -213926;6;1;false;false;127;0;85;;;
                                  -213932;1;0;false;false;;;;;;
                                  -213933;4;1;false;false;127;0;85;;;
                                  -213937;1;0;false;false;;;;;;
                                  -213938;35;0;false;false;0;0;0;;;
                                  -213973;1;0;false;false;;;;;;
                                  -213974;15;0;false;false;0;0;0;;;
                                  -213989;1;0;false;false;;;;;;
                                  -213990;1;0;false;false;0;0;0;;;
                                  -213991;3;0;false;false;;;;;;
                                  -213994;14;0;false;false;0;0;0;;;
                                  -214008;3;0;false;false;;;;;;
                                  -214011;2;1;false;false;127;0;85;;;
                                  -214013;1;0;false;false;;;;;;
                                  -214014;15;0;false;false;0;0;0;;;
                                  -214029;1;0;false;false;;;;;;
                                  -214030;2;0;false;false;0;0;0;;;
                                  -214032;1;0;false;false;;;;;;
                                  -214033;4;1;false;false;127;0;85;;;
                                  -214037;1;0;false;false;0;0;0;;;
                                  -214038;1;0;false;false;;;;;;
                                  -214039;1;0;false;false;0;0;0;;;
                                  -214040;4;0;false;false;;;;;;
                                  -214044;35;0;false;false;0;0;0;;;
                                  -214079;3;0;false;false;;;;;;
                                  -214082;1;0;false;false;0;0;0;;;
                                  -214083;3;0;false;false;;;;;;
                                  -214086;26;0;false;false;0;0;0;;;
                                  -214112;1;0;false;false;;;;;;
                                  -214113;16;0;false;false;0;0;0;;;
                                  -214129;3;0;false;false;;;;;;
                                  -214132;1;0;false;false;0;0;0;;;
                                  -214133;2;0;false;false;;;;;;
                                  -214135;3;0;false;false;63;95;191;;;
                                  -214138;3;0;false;false;;;;;;
                                  -214141;1;0;false;false;63;95;191;;;
                                  -214142;1;0;false;false;;;;;;
                                  -214143;7;0;false;false;63;95;191;;;
                                  -214150;1;0;false;false;;;;;;
                                  -214151;3;0;false;false;63;95;191;;;
                                  -214154;1;0;false;false;;;;;;
                                  -214155;9;0;false;false;63;95;191;;;
                                  -214164;1;0;false;false;;;;;;
                                  -214165;3;0;false;false;63;95;191;;;
                                  -214168;1;0;false;false;;;;;;
                                  -214169;6;0;false;false;63;95;191;;;
                                  -214175;1;0;false;false;;;;;;
                                  -214176;9;0;false;false;63;95;191;;;
                                  -214185;3;0;false;false;;;;;;
                                  -214188;1;0;false;false;63;95;191;;;
                                  -214189;1;0;false;false;;;;;;
                                  -214190;3;0;false;false;127;127;159;;;
                                  -214193;3;0;false;false;;;;;;
                                  -214196;1;0;false;false;63;95;191;;;
                                  -214197;3;0;false;false;;;;;;
                                  -214200;1;0;false;false;63;95;191;;;
                                  -214201;1;0;false;false;;;;;;
                                  -214202;7;1;false;false;127;159;191;;;
                                  -214209;8;0;false;false;63;95;191;;;
                                  -214217;1;0;false;false;;;;;;
                                  -214218;3;0;false;false;63;95;191;;;
                                  -214221;1;0;false;false;;;;;;
                                  -214222;8;0;false;false;63;95;191;;;
                                  -214230;3;0;false;false;;;;;;
                                  -214233;1;0;false;false;63;95;191;;;
                                  -214234;1;0;false;false;;;;;;
                                  -214235;11;1;false;false;127;159;191;;;
                                  -214246;12;0;false;false;63;95;191;;;
                                  -214258;1;0;false;false;;;;;;
                                  -214259;4;0;false;false;127;127;159;;;
                                  -214263;3;0;false;false;;;;;;
                                  -214266;1;0;false;false;63;95;191;;;
                                  -214267;4;0;false;false;;;;;;
                                  -214271;4;0;false;false;127;127;159;;;
                                  -214275;21;0;false;false;63;95;191;;;
                                  -214296;1;0;false;false;;;;;;
                                  -214297;1;0;false;false;127;127;159;;;
                                  -214298;1;0;false;false;;;;;;
                                  -214299;2;0;false;false;63;95;191;;;
                                  -214301;1;0;false;false;;;;;;
                                  -214302;3;0;false;false;63;95;191;;;
                                  -214305;1;0;false;false;;;;;;
                                  -214306;8;0;false;false;63;95;191;;;
                                  -214314;1;0;false;false;;;;;;
                                  -214315;3;0;false;false;63;95;191;;;
                                  -214318;1;0;false;false;;;;;;
                                  -214319;4;0;false;false;63;95;191;;;
                                  -214323;1;0;false;false;;;;;;
                                  -214324;8;0;false;false;63;95;191;;;
                                  -214332;5;0;false;false;127;127;159;;;
                                  -214337;3;0;false;false;;;;;;
                                  -214340;1;0;false;false;63;95;191;;;
                                  -214341;4;0;false;false;;;;;;
                                  -214345;4;0;false;false;127;127;159;;;
                                  -214349;27;0;false;false;63;95;191;;;
                                  -214376;1;0;false;false;;;;;;
                                  -214377;1;0;false;false;127;127;159;;;
                                  -214378;1;0;false;false;;;;;;
                                  -214379;2;0;false;false;63;95;191;;;
                                  -214381;1;0;false;false;;;;;;
                                  -214382;3;0;false;false;63;95;191;;;
                                  -214385;1;0;false;false;;;;;;
                                  -214386;6;0;false;false;63;95;191;;;
                                  -214392;1;0;false;false;;;;;;
                                  -214393;4;0;false;false;63;95;191;;;
                                  -214397;1;0;false;false;;;;;;
                                  -214398;3;0;false;false;63;95;191;;;
                                  -214401;1;0;false;false;;;;;;
                                  -214402;6;0;false;false;63;95;191;;;
                                  -214408;1;0;false;false;;;;;;
                                  -214409;4;0;false;false;63;95;191;;;
                                  -214413;1;0;false;false;;;;;;
                                  -214414;7;0;false;false;63;95;191;;;
                                  -214421;1;0;false;false;;;;;;
                                  -214422;3;0;false;false;63;95;191;;;
                                  -214425;1;0;false;false;;;;;;
                                  -214426;8;0;false;false;63;95;191;;;
                                  -214434;5;0;false;false;127;127;159;;;
                                  -214439;3;0;false;false;;;;;;
                                  -214442;1;0;false;false;63;95;191;;;
                                  -214443;1;0;false;false;;;;;;
                                  -214444;5;0;false;false;127;127;159;;;
                                  -214449;3;0;false;false;;;;;;
                                  -214452;1;0;false;false;63;95;191;;;
                                  -214453;1;0;false;false;;;;;;
                                  -214454;11;1;false;false;127;159;191;;;
                                  -214465;24;0;false;false;63;95;191;;;
                                  -214489;1;0;false;false;;;;;;
                                  -214490;4;0;false;false;127;127;159;;;
                                  -214494;3;0;false;false;;;;;;
                                  -214497;1;0;false;false;63;95;191;;;
                                  -214498;4;0;false;false;;;;;;
                                  -214502;4;0;false;false;127;127;159;;;
                                  -214506;19;0;false;false;63;95;191;;;
                                  -214525;1;0;false;false;;;;;;
                                  -214526;4;0;false;false;63;95;191;;;
                                  -214530;1;0;false;false;;;;;;
                                  -214531;8;0;false;false;63;95;191;;;
                                  -214539;1;0;false;false;;;;;;
                                  -214540;2;0;false;false;63;95;191;;;
                                  -214542;1;0;false;false;;;;;;
                                  -214543;4;0;false;false;63;95;191;;;
                                  -214547;5;0;false;false;127;127;159;;;
                                  -214552;3;0;false;false;;;;;;
                                  -214555;1;0;false;false;63;95;191;;;
                                  -214556;1;0;false;false;;;;;;
                                  -214557;5;0;false;false;127;127;159;;;
                                  -214562;3;0;false;false;;;;;;
                                  -214565;2;0;false;false;63;95;191;;;
                                  -214567;2;0;false;false;;;;;;
                                  -214569;6;1;false;false;127;0;85;;;
                                  -214575;1;0;false;false;;;;;;
                                  -214576;4;1;false;false;127;0;85;;;
                                  -214580;1;0;false;false;;;;;;
                                  -214581;41;0;false;false;0;0;0;;;
                                  -214622;1;0;false;false;;;;;;
                                  -214623;9;0;false;false;0;0;0;;;
                                  -214632;1;0;false;false;;;;;;
                                  -214633;1;0;false;false;0;0;0;;;
                                  -214634;3;0;false;false;;;;;;
                                  -214637;2;1;false;false;127;0;85;;;
                                  -214639;1;0;false;false;;;;;;
                                  -214640;9;0;false;false;0;0;0;;;
                                  -214649;1;0;false;false;;;;;;
                                  -214650;2;0;false;false;0;0;0;;;
                                  -214652;1;0;false;false;;;;;;
                                  -214653;4;1;false;false;127;0;85;;;
                                  -214657;1;0;false;false;0;0;0;;;
                                  -214658;1;0;false;false;;;;;;
                                  -214659;35;0;false;false;0;0;0;;;
                                  -214694;3;0;false;false;;;;;;
                                  -214697;25;0;false;false;0;0;0;;;
                                  -214722;1;0;false;false;;;;;;
                                  -214723;10;0;false;false;0;0;0;;;
                                  -214733;3;0;false;false;;;;;;
                                  -214736;1;0;false;false;0;0;0;;;
                                  -214737;2;0;false;false;;;;;;
                                  -214739;3;0;false;false;63;95;191;;;
                                  -214742;4;0;false;false;;;;;;
                                  -214746;1;0;false;false;63;95;191;;;
                                  -214747;1;0;false;false;;;;;;
                                  -214748;8;0;false;false;63;95;191;;;
                                  -214756;1;0;false;false;;;;;;
                                  -214757;3;0;false;false;63;95;191;;;
                                  -214760;1;0;false;false;;;;;;
                                  -214761;6;0;false;false;63;95;191;;;
                                  -214767;1;0;false;false;;;;;;
                                  -214768;2;0;false;false;63;95;191;;;
                                  -214770;1;0;false;false;;;;;;
                                  -214771;3;0;false;false;63;95;191;;;
                                  -214774;1;0;false;false;;;;;;
                                  -214775;5;0;false;false;63;95;191;;;
                                  -214780;1;0;false;false;;;;;;
                                  -214781;5;0;false;false;63;95;191;;;
                                  -214786;1;0;false;false;;;;;;
                                  -214787;4;0;false;false;63;95;191;;;
                                  -214791;1;0;false;false;;;;;;
                                  -214792;3;0;false;false;63;95;191;;;
                                  -214795;1;0;false;false;;;;;;
                                  -214796;7;0;false;false;63;95;191;;;
                                  -214803;2;0;false;false;;;;;;
                                  -214805;4;0;false;false;63;95;191;;;
                                  -214809;1;0;false;false;;;;;;
                                  -214810;6;0;false;false;63;95;191;;;
                                  -214816;3;0;false;false;;;;;;
                                  -214819;1;0;false;false;63;95;191;;;
                                  -214820;1;0;false;false;;;;;;
                                  -214821;11;0;false;false;63;95;191;;;
                                  -214832;1;0;false;false;;;;;;
                                  -214833;7;0;false;false;63;95;191;;;
                                  -214840;1;0;false;false;;;;;;
                                  -214841;3;0;false;false;63;95;191;;;
                                  -214844;1;0;false;false;;;;;;
                                  -214845;6;0;false;false;63;95;191;;;
                                  -214851;1;0;false;false;;;;;;
                                  -214852;2;0;false;false;63;95;191;;;
                                  -214854;1;0;false;false;;;;;;
                                  -214855;3;0;false;false;63;95;191;;;
                                  -214858;1;0;false;false;;;;;;
                                  -214859;5;0;false;false;63;95;191;;;
                                  -214864;1;0;false;false;;;;;;
                                  -214865;5;0;false;false;63;95;191;;;
                                  -214870;1;0;false;false;;;;;;
                                  -214871;3;0;false;false;63;95;191;;;
                                  -214874;1;0;false;false;;;;;;
                                  -214875;4;0;false;false;63;95;191;;;
                                  -214879;1;0;false;false;;;;;;
                                  -214880;4;0;false;false;63;95;191;;;
                                  -214884;1;0;false;false;;;;;;
                                  -214885;3;0;false;false;63;95;191;;;
                                  -214888;3;0;false;false;;;;;;
                                  -214891;1;0;false;false;63;95;191;;;
                                  -214892;1;0;false;false;;;;;;
                                  -214893;3;0;false;false;63;95;191;;;
                                  -214896;1;0;false;false;;;;;;
                                  -214897;3;0;false;false;63;95;191;;;
                                  -214900;1;0;false;false;;;;;;
                                  -214901;7;0;false;false;63;95;191;;;
                                  -214908;4;0;false;false;;;;;;
                                  -214912;1;0;false;false;63;95;191;;;
                                  -214913;1;0;false;false;;;;;;
                                  -214914;3;0;false;false;127;127;159;;;
                                  -214917;3;0;false;false;;;;;;
                                  -214920;1;0;false;false;63;95;191;;;
                                  -214921;1;0;false;false;;;;;;
                                  -214922;6;0;false;false;63;95;191;;;
                                  -214928;1;0;false;false;;;;;;
                                  -214929;3;0;false;false;63;95;191;;;
                                  -214932;1;0;false;false;;;;;;
                                  -214933;2;0;false;false;63;95;191;;;
                                  -214935;1;0;false;false;;;;;;
                                  -214936;6;0;false;false;63;95;191;;;
                                  -214942;1;0;false;false;;;;;;
                                  -214943;2;0;false;false;63;95;191;;;
                                  -214945;1;0;false;false;;;;;;
                                  -214946;1;0;false;false;63;95;191;;;
                                  -214947;1;0;false;false;;;;;;
                                  -214948;17;0;false;false;63;95;191;;;
                                  -214965;1;0;false;false;;;;;;
                                  -214966;3;0;false;false;63;95;191;;;
                                  -214969;1;0;false;false;;;;;;
                                  -214970;4;0;false;false;63;95;191;;;
                                  -214974;1;0;false;false;;;;;;
                                  -214975;3;0;false;false;63;95;191;;;
                                  -214978;1;0;false;false;;;;;;
                                  -214979;5;0;false;false;63;95;191;;;
                                  -214984;1;0;false;false;;;;;;
                                  -214985;3;0;false;false;63;95;191;;;
                                  -214988;4;0;false;false;;;;;;
                                  -214992;1;0;false;false;63;95;191;;;
                                  -214993;1;0;false;false;;;;;;
                                  -214994;8;0;false;false;63;95;191;;;
                                  -215002;1;0;false;false;;;;;;
                                  -215003;9;0;false;false;63;95;191;;;
                                  -215012;1;0;false;false;;;;;;
                                  -215013;3;0;false;false;63;95;191;;;
                                  -215016;1;0;false;false;;;;;;
                                  -215017;7;0;false;false;63;95;191;;;
                                  -215024;3;0;false;false;;;;;;
                                  -215027;1;0;false;false;63;95;191;;;
                                  -215028;1;0;false;false;;;;;;
                                  -215029;4;0;false;false;127;127;159;;;
                                  -215033;3;0;false;false;;;;;;
                                  -215036;1;0;false;false;63;95;191;;;
                                  -215037;3;0;false;false;;;;;;
                                  -215040;1;0;false;false;63;95;191;;;
                                  -215041;1;0;false;false;;;;;;
                                  -215042;7;1;false;false;127;159;191;;;
                                  -215049;5;0;false;false;63;95;191;;;
                                  -215054;1;0;false;false;;;;;;
                                  -215055;6;0;false;false;63;95;191;;;
                                  -215061;1;0;false;false;;;;;;
                                  -215062;2;0;false;false;63;95;191;;;
                                  -215064;1;0;false;false;;;;;;
                                  -215065;5;0;false;false;63;95;191;;;
                                  -215070;1;0;false;false;;;;;;
                                  -215071;9;0;false;false;63;95;191;;;
                                  -215080;1;0;false;false;;;;;;
                                  -215081;5;0;false;false;63;95;191;;;
                                  -215086;1;0;false;false;;;;;;
                                  -215087;6;0;false;false;63;95;191;;;
                                  -215093;1;0;false;false;;;;;;
                                  -215094;4;0;false;false;63;95;191;;;
                                  -215098;1;0;false;false;;;;;;
                                  -215099;2;0;false;false;63;95;191;;;
                                  -215101;1;0;false;false;;;;;;
                                  -215102;7;0;false;false;63;95;191;;;
                                  -215109;3;0;false;false;;;;;;
                                  -215112;1;0;false;false;63;95;191;;;
                                  -215113;1;0;false;false;;;;;;
                                  -215114;7;1;false;false;127;159;191;;;
                                  -215121;6;0;false;false;63;95;191;;;
                                  -215127;1;0;false;false;;;;;;
                                  -215128;6;0;false;false;63;95;191;;;
                                  -215134;1;0;false;false;;;;;;
                                  -215135;2;0;false;false;63;95;191;;;
                                  -215137;1;0;false;false;;;;;;
                                  -215138;3;0;false;false;63;95;191;;;
                                  -215141;1;0;false;false;;;;;;
                                  -215142;5;0;false;false;63;95;191;;;
                                  -215147;1;0;false;false;;;;;;
                                  -215148;2;0;false;false;63;95;191;;;
                                  -215150;1;0;false;false;;;;;;
                                  -215151;6;0;false;false;63;95;191;;;
                                  -215157;1;0;false;false;;;;;;
                                  -215158;6;0;false;false;63;95;191;;;
                                  -215164;1;0;false;false;;;;;;
                                  -215165;2;0;false;false;63;95;191;;;
                                  -215167;3;0;false;false;;;;;;
                                  -215170;1;0;false;false;63;95;191;;;
                                  -215171;1;0;false;false;;;;;;
                                  -215172;7;1;false;false;127;159;191;;;
                                  -215179;6;0;false;false;63;95;191;;;
                                  -215185;1;0;false;false;;;;;;
                                  -215186;10;0;false;false;63;95;191;;;
                                  -215196;1;0;false;false;;;;;;
                                  -215197;7;0;false;false;63;95;191;;;
                                  -215204;1;0;false;false;;;;;;
                                  -215205;10;0;false;false;63;95;191;;;
                                  -215215;1;0;false;false;;;;;;
                                  -215216;3;0;false;false;63;95;191;;;
                                  -215219;1;0;false;false;;;;;;
                                  -215220;3;0;false;false;63;95;191;;;
                                  -215223;1;0;false;false;;;;;;
                                  -215224;5;0;false;false;63;95;191;;;
                                  -215229;1;0;false;false;;;;;;
                                  -215230;12;0;false;false;63;95;191;;;
                                  -215242;3;0;false;false;;;;;;
                                  -215245;1;0;false;false;63;95;191;;;
                                  -215246;1;0;false;false;;;;;;
                                  -215247;3;0;false;false;63;95;191;;;
                                  -215250;1;0;false;false;;;;;;
                                  -215251;6;0;false;false;63;95;191;;;
                                  -215257;1;0;false;false;;;;;;
                                  -215258;6;0;false;false;63;95;191;;;
                                  -215264;1;0;false;false;;;;;;
                                  -215265;3;0;false;false;63;95;191;;;
                                  -215268;1;0;false;false;;;;;;
                                  -215269;7;0;false;false;63;95;191;;;
                                  -215276;1;0;false;false;;;;;;
                                  -215277;3;0;false;false;63;95;191;;;
                                  -215280;1;0;false;false;;;;;;
                                  -215281;6;0;false;false;63;95;191;;;
                                  -215287;1;0;false;false;;;;;;
                                  -215288;2;0;false;false;63;95;191;;;
                                  -215290;1;0;false;false;;;;;;
                                  -215291;6;0;false;false;63;95;191;;;
                                  -215297;1;0;false;false;;;;;;
                                  -215298;3;0;false;false;63;95;191;;;
                                  -215301;1;0;false;false;;;;;;
                                  -215302;9;0;false;false;63;95;191;;;
                                  -215311;1;0;false;false;;;;;;
                                  -215312;5;0;false;false;63;95;191;;;
                                  -215317;4;0;false;false;;;;;;
                                  -215321;1;0;false;false;63;95;191;;;
                                  -215322;1;0;false;false;;;;;;
                                  -215323;3;0;false;false;63;95;191;;;
                                  -215326;1;0;false;false;;;;;;
                                  -215327;7;0;false;false;63;95;191;;;
                                  -215334;1;0;false;false;;;;;;
                                  -215335;3;0;false;false;63;95;191;;;
                                  -215338;1;0;false;false;;;;;;
                                  -215339;5;0;false;false;63;95;191;;;
                                  -215344;1;0;false;false;;;;;;
                                  -215345;9;0;false;false;63;95;191;;;
                                  -215354;1;0;false;false;;;;;;
                                  -215355;2;0;false;false;63;95;191;;;
                                  -215357;1;0;false;false;;;;;;
                                  -215358;9;0;false;false;63;95;191;;;
                                  -215367;1;0;false;false;;;;;;
                                  -215368;2;0;false;false;63;95;191;;;
                                  -215370;1;0;false;false;;;;;;
                                  -215371;3;0;false;false;63;95;191;;;
                                  -215374;1;0;false;false;;;;;;
                                  -215375;6;0;false;false;63;95;191;;;
                                  -215381;1;0;false;false;;;;;;
                                  -215382;2;0;false;false;63;95;191;;;
                                  -215384;1;0;false;false;;;;;;
                                  -215385;7;0;false;false;63;95;191;;;
                                  -215392;3;0;false;false;;;;;;
                                  -215395;1;0;false;false;63;95;191;;;
                                  -215396;1;0;false;false;;;;;;
                                  -215397;2;0;false;false;63;95;191;;;
                                  -215399;1;0;false;false;;;;;;
                                  -215400;3;0;false;false;63;95;191;;;
                                  -215403;1;0;false;false;;;;;;
                                  -215404;3;0;false;false;63;95;191;;;
                                  -215407;1;0;false;false;127;127;159;;;
                                  -215408;8;0;false;false;63;95;191;;;
                                  -215416;1;0;false;false;;;;;;
                                  -215417;4;0;false;false;63;95;191;;;
                                  -215421;1;0;false;false;;;;;;
                                  -215422;3;0;false;false;63;95;191;;;
                                  -215425;1;0;false;false;;;;;;
                                  -215426;2;0;false;false;63;95;191;;;
                                  -215428;1;0;false;false;;;;;;
                                  -215429;5;0;false;false;63;95;191;;;
                                  -215434;3;0;false;false;;;;;;
                                  -215437;1;0;false;false;63;95;191;;;
                                  -215438;1;0;false;false;;;;;;
                                  -215439;11;1;false;false;127;159;191;;;
                                  -215450;12;0;false;false;63;95;191;;;
                                  -215462;1;0;false;false;;;;;;
                                  -215463;4;0;false;false;127;127;159;;;
                                  -215467;3;0;false;false;;;;;;
                                  -215470;1;0;false;false;63;95;191;;;
                                  -215471;4;0;false;false;;;;;;
                                  -215475;4;0;false;false;127;127;159;;;
                                  -215479;21;0;false;false;63;95;191;;;
                                  -215500;1;0;false;false;;;;;;
                                  -215501;1;0;false;false;127;127;159;;;
                                  -215502;1;0;false;false;;;;;;
                                  -215503;2;0;false;false;63;95;191;;;
                                  -215505;1;0;false;false;;;;;;
                                  -215506;3;0;false;false;63;95;191;;;
                                  -215509;1;0;false;false;;;;;;
                                  -215510;8;0;false;false;63;95;191;;;
                                  -215518;1;0;false;false;;;;;;
                                  -215519;3;0;false;false;63;95;191;;;
                                  -215522;1;0;false;false;;;;;;
                                  -215523;4;0;false;false;63;95;191;;;
                                  -215527;1;0;false;false;;;;;;
                                  -215528;8;0;false;false;63;95;191;;;
                                  -215536;5;0;false;false;127;127;159;;;
                                  -215541;3;0;false;false;;;;;;
                                  -215544;1;0;false;false;63;95;191;;;
                                  -215545;4;0;false;false;;;;;;
                                  -215549;4;0;false;false;127;127;159;;;
                                  -215553;27;0;false;false;63;95;191;;;
                                  -215580;1;0;false;false;;;;;;
                                  -215581;1;0;false;false;127;127;159;;;
                                  -215582;1;0;false;false;;;;;;
                                  -215583;2;0;false;false;63;95;191;;;
                                  -215585;1;0;false;false;;;;;;
                                  -215586;3;0;false;false;63;95;191;;;
                                  -215589;1;0;false;false;;;;;;
                                  -215590;6;0;false;false;63;95;191;;;
                                  -215596;1;0;false;false;;;;;;
                                  -215597;4;0;false;false;63;95;191;;;
                                  -215601;1;0;false;false;;;;;;
                                  -215602;3;0;false;false;63;95;191;;;
                                  -215605;1;0;false;false;;;;;;
                                  -215606;6;0;false;false;63;95;191;;;
                                  -215612;1;0;false;false;;;;;;
                                  -215613;4;0;false;false;63;95;191;;;
                                  -215617;1;0;false;false;;;;;;
                                  -215618;7;0;false;false;63;95;191;;;
                                  -215625;1;0;false;false;;;;;;
                                  -215626;3;0;false;false;63;95;191;;;
                                  -215629;1;0;false;false;;;;;;
                                  -215630;8;0;false;false;63;95;191;;;
                                  -215638;5;0;false;false;127;127;159;;;
                                  -215643;3;0;false;false;;;;;;
                                  -215646;1;0;false;false;63;95;191;;;
                                  -215647;1;0;false;false;;;;;;
                                  -215648;5;0;false;false;127;127;159;;;
                                  -215653;3;0;false;false;;;;;;
                                  -215656;1;0;false;false;63;95;191;;;
                                  -215657;1;0;false;false;;;;;;
                                  -215658;11;1;false;false;127;159;191;;;
                                  -215669;24;0;false;false;63;95;191;;;
                                  -215693;1;0;false;false;;;;;;
                                  -215694;4;0;false;false;127;127;159;;;
                                  -215698;3;0;false;false;;;;;;
                                  -215701;1;0;false;false;63;95;191;;;
                                  -215702;3;0;false;false;;;;;;
                                  -215705;4;0;false;false;127;127;159;;;
                                  -215709;19;0;false;false;63;95;191;;;
                                  -215728;1;0;false;false;;;;;;
                                  -215729;4;0;false;false;63;95;191;;;
                                  -215733;1;0;false;false;;;;;;
                                  -215734;6;0;false;false;63;95;191;;;
                                  -215740;1;0;false;false;;;;;;
                                  -215741;5;0;false;false;63;95;191;;;
                                  -215746;1;0;false;false;;;;;;
                                  -215747;2;0;false;false;63;95;191;;;
                                  -215749;1;0;false;false;;;;;;
                                  -215750;3;0;false;false;63;95;191;;;
                                  -215753;1;0;false;false;;;;;;
                                  -215754;2;0;false;false;63;95;191;;;
                                  -215756;1;0;false;false;;;;;;
                                  -215757;7;0;false;false;63;95;191;;;
                                  -215764;1;0;false;false;;;;;;
                                  -215765;3;0;false;false;63;95;191;;;
                                  -215768;1;0;false;false;;;;;;
                                  -215769;5;0;false;false;63;95;191;;;
                                  -215774;1;0;false;false;;;;;;
                                  -215775;5;0;false;false;63;95;191;;;
                                  -215780;1;0;false;false;;;;;;
                                  -215781;2;0;false;false;63;95;191;;;
                                  -215783;1;0;false;false;;;;;;
                                  -215784;33;0;false;false;63;95;191;;;
                                  -215817;4;0;false;false;;;;;;
                                  -215821;1;0;false;false;63;95;191;;;
                                  -215822;3;0;false;false;;;;;;
                                  -215825;4;0;false;false;127;127;159;;;
                                  -215829;19;0;false;false;63;95;191;;;
                                  -215848;1;0;false;false;;;;;;
                                  -215849;4;0;false;false;63;95;191;;;
                                  -215853;1;0;false;false;;;;;;
                                  -215854;6;0;false;false;63;95;191;;;
                                  -215860;1;0;false;false;;;;;;
                                  -215861;2;0;false;false;63;95;191;;;
                                  -215863;1;0;false;false;;;;;;
                                  -215864;4;0;false;false;63;95;191;;;
                                  -215868;5;0;false;false;127;127;159;;;
                                  -215873;3;0;false;false;;;;;;
                                  -215876;1;0;false;false;63;95;191;;;
                                  -215877;1;0;false;false;;;;;;
                                  -215878;5;0;false;false;127;127;159;;;
                                  -215883;3;0;false;false;;;;;;
                                  -215886;1;0;false;false;63;95;191;;;
                                  -215887;1;0;false;false;;;;;;
                                  -215888;7;1;false;false;127;159;191;;;
                                  -215895;3;0;false;false;63;95;191;;;
                                  -215898;3;0;false;false;;;;;;
                                  -215901;2;0;false;false;63;95;191;;;
                                  -215903;2;0;false;false;;;;;;
                                  -215905;6;1;false;false;127;0;85;;;
                                  -215911;1;0;false;false;;;;;;
                                  -215912;4;1;false;false;127;0;85;;;
                                  -215916;1;0;false;false;;;;;;
                                  -215917;19;0;false;false;0;0;0;;;
                                  -215936;3;1;false;false;127;0;85;;;
                                  -215939;1;0;false;false;;;;;;
                                  -215940;6;0;false;false;0;0;0;;;
                                  -215946;1;0;false;false;;;;;;
                                  -215947;3;1;false;false;127;0;85;;;
                                  -215950;1;0;false;false;;;;;;
                                  -215951;7;0;false;false;0;0;0;;;
                                  -215958;1;0;false;false;;;;;;
                                  -215959;12;0;false;false;0;0;0;;;
                                  -215971;1;0;false;false;;;;;;
                                  -215972;7;0;false;false;0;0;0;;;
                                  -215979;1;0;false;false;;;;;;
                                  -215980;1;0;false;false;0;0;0;;;
                                  -215981;3;0;false;false;;;;;;
                                  -215984;14;0;false;false;0;0;0;;;
                                  -215998;3;0;false;false;;;;;;
                                  -216001;2;1;false;false;127;0;85;;;
                                  -216003;1;0;false;false;;;;;;
                                  -216004;15;0;false;false;0;0;0;;;
                                  -216019;1;0;false;false;;;;;;
                                  -216020;1;0;false;false;0;0;0;;;
                                  -216021;4;0;false;false;;;;;;
                                  -216025;6;1;false;false;127;0;85;;;
                                  -216031;1;0;false;false;0;0;0;;;
                                  -216032;3;0;false;false;;;;;;
                                  -216035;1;0;false;false;0;0;0;;;
                                  -216036;4;0;false;false;;;;;;
                                  -216040;2;1;false;false;127;0;85;;;
                                  -216042;1;0;false;false;;;;;;
                                  -216043;7;0;false;false;0;0;0;;;
                                  -216050;1;0;false;false;;;;;;
                                  -216051;2;0;false;false;0;0;0;;;
                                  -216053;1;0;false;false;;;;;;
                                  -216054;4;1;false;false;127;0;85;;;
                                  -216058;1;0;false;false;0;0;0;;;
                                  -216059;1;0;false;false;;;;;;
                                  -216060;1;0;false;false;0;0;0;;;
                                  -216061;5;0;false;false;;;;;;
                                  -216066;35;0;false;false;0;0;0;;;
                                  -216101;4;0;false;false;;;;;;
                                  -216105;1;0;false;false;0;0;0;;;
                                  -216106;4;0;false;false;;;;;;
                                  -216110;2;1;false;false;127;0;85;;;
                                  -216112;1;0;false;false;;;;;;
                                  -216113;14;0;false;false;0;0;0;;;
                                  -216127;1;0;false;false;;;;;;
                                  -216128;2;0;false;false;0;0;0;;;
                                  -216130;1;0;false;false;;;;;;
                                  -216131;2;0;false;false;0;0;0;;;
                                  -216133;1;0;false;false;;;;;;
                                  -216134;1;0;false;false;0;0;0;;;
                                  -216135;5;0;false;false;;;;;;
                                  -216140;14;0;false;false;0;0;0;;;
                                  -216154;3;1;false;false;127;0;85;;;
                                  -216157;1;0;false;false;;;;;;
                                  -216158;17;0;false;false;0;0;0;;;
                                  -216175;1;0;false;false;;;;;;
                                  -216176;7;0;false;false;0;0;0;;;
                                  -216183;1;0;false;false;;;;;;
                                  -216184;4;1;false;false;127;0;85;;;
                                  -216188;1;0;false;false;0;0;0;;;
                                  -216189;1;0;false;false;;;;;;
                                  -216190;4;1;false;false;127;0;85;;;
                                  -216194;3;0;false;false;0;0;0;;;
                                  -216197;5;0;false;false;;;;;;
                                  -216202;6;1;false;false;127;0;85;;;
                                  -216208;1;0;false;false;0;0;0;;;
                                  -216209;4;0;false;false;;;;;;
                                  -216213;1;0;false;false;0;0;0;;;
                                  -216214;3;0;false;false;;;;;;
                                  -216217;3;1;false;false;127;0;85;;;
                                  -216220;1;0;false;false;;;;;;
                                  -216221;3;0;false;false;0;0;0;;;
                                  -216224;1;0;false;false;;;;;;
                                  -216225;1;0;false;false;0;0;0;;;
                                  -216226;1;0;false;false;;;;;;
                                  -216227;5;0;false;false;0;0;0;;;
                                  -216232;1;0;false;false;;;;;;
                                  -216233;1;0;false;false;0;0;0;;;
                                  -216234;1;0;false;false;;;;;;
                                  -216235;7;0;false;false;0;0;0;;;
                                  -216242;3;0;false;false;;;;;;
                                  -216245;2;1;false;false;127;0;85;;;
                                  -216247;1;0;false;false;;;;;;
                                  -216248;6;0;false;false;0;0;0;;;
                                  -216254;1;0;false;false;;;;;;
                                  -216255;1;0;false;false;0;0;0;;;
                                  -216256;1;0;false;false;;;;;;
                                  -216257;3;0;false;false;0;0;0;;;
                                  -216260;1;0;false;false;;;;;;
                                  -216261;2;0;false;false;0;0;0;;;
                                  -216263;1;0;false;false;;;;;;
                                  -216264;5;0;false;false;0;0;0;;;
                                  -216269;1;0;false;false;;;;;;
                                  -216270;1;0;false;false;0;0;0;;;
                                  -216271;1;0;false;false;;;;;;
                                  -216272;1;0;false;false;0;0;0;;;
                                  -216273;1;0;false;false;;;;;;
                                  -216274;2;0;false;false;0;0;0;;;
                                  -216276;1;0;false;false;;;;;;
                                  -216277;3;0;false;false;0;0;0;;;
                                  -216280;1;0;false;false;;;;;;
                                  -216281;1;0;false;false;0;0;0;;;
                                  -216282;1;0;false;false;;;;;;
                                  -216283;15;0;false;false;0;0;0;;;
                                  -216298;1;0;false;false;;;;;;
                                  -216299;1;0;false;false;0;0;0;;;
                                  -216300;4;0;false;false;;;;;;
                                  -216304;35;0;false;false;0;0;0;;;
                                  -216339;3;0;false;false;;;;;;
                                  -216342;1;0;false;false;0;0;0;;;
                                  -216343;4;0;false;false;;;;;;
                                  -216347;3;1;false;false;127;0;85;;;
                                  -216350;1;0;false;false;;;;;;
                                  -216351;9;0;false;false;0;0;0;;;
                                  -216360;1;0;false;false;;;;;;
                                  -216361;1;0;false;false;0;0;0;;;
                                  -216362;1;0;false;false;;;;;;
                                  -216363;31;0;false;false;0;0;0;;;
                                  -216394;3;0;false;false;;;;;;
                                  -216397;3;1;false;false;127;0;85;;;
                                  -216400;1;0;false;false;;;;;;
                                  -216401;8;0;false;false;0;0;0;;;
                                  -216409;1;0;false;false;;;;;;
                                  -216410;1;0;false;false;0;0;0;;;
                                  -216411;1;0;false;false;;;;;;
                                  -216412;29;0;false;false;0;0;0;;;
                                  -216441;5;0;false;false;;;;;;
                                  -216446;43;0;false;false;0;0;0;;;
                                  -216489;1;0;false;false;;;;;;
                                  -216490;7;0;false;false;0;0;0;;;
                                  -216497;1;0;false;false;;;;;;
                                  -216498;8;0;false;false;0;0;0;;;
                                  -216506;3;0;false;false;;;;;;
                                  -216509;26;0;false;false;0;0;0;;;
                                  -216535;1;0;false;false;;;;;;
                                  -216536;8;0;false;false;0;0;0;;;
                                  -216544;1;0;false;false;;;;;;
                                  -216545;1;0;false;false;0;0;0;;;
                                  -216546;1;0;false;false;;;;;;
                                  -216547;9;0;false;false;0;0;0;;;
                                  -216556;1;0;false;false;;;;;;
                                  -216557;1;0;false;false;0;0;0;;;
                                  -216558;1;0;false;false;;;;;;
                                  -216559;2;0;false;false;0;0;0;;;
                                  -216561;1;0;false;false;;;;;;
                                  -216562;4;1;false;false;127;0;85;;;
                                  -216566;2;0;false;false;0;0;0;;;
                                  -216568;5;0;false;false;;;;;;
                                  -216573;59;0;false;false;63;127;95;;;
                                  -216632;1;0;false;false;;;;;;
                                  -216633;2;1;false;false;127;0;85;;;
                                  -216635;1;0;false;false;;;;;;
                                  -216636;25;0;false;false;0;0;0;;;
                                  -216661;1;0;false;false;;;;;;
                                  -216662;10;0;false;false;0;0;0;;;
                                  -216672;1;0;false;false;;;;;;
                                  -216673;1;0;false;false;0;0;0;;;
                                  -216674;4;0;false;false;;;;;;
                                  -216678;3;1;false;false;127;0;85;;;
                                  -216681;1;0;false;false;;;;;;
                                  -216682;7;0;false;false;0;0;0;;;
                                  -216689;1;0;false;false;;;;;;
                                  -216690;1;0;false;false;0;0;0;;;
                                  -216691;1;0;false;false;;;;;;
                                  -216692;9;0;false;false;0;0;0;;;
                                  -216701;1;0;false;false;;;;;;
                                  -216702;1;0;false;false;0;0;0;;;
                                  -216703;1;0;false;false;;;;;;
                                  -216704;10;0;false;false;0;0;0;;;
                                  -216714;1;0;false;false;;;;;;
                                  -216715;1;0;false;false;0;0;0;;;
                                  -216716;1;0;false;false;;;;;;
                                  -216717;21;0;false;false;0;0;0;;;
                                  -216738;4;0;false;false;;;;;;
                                  -216742;3;1;false;false;127;0;85;;;
                                  -216745;1;0;false;false;;;;;;
                                  -216746;11;0;false;false;0;0;0;;;
                                  -216757;1;0;false;false;;;;;;
                                  -216758;1;0;false;false;0;0;0;;;
                                  -216759;1;0;false;false;;;;;;
                                  -216760;9;0;false;false;0;0;0;;;
                                  -216769;1;0;false;false;;;;;;
                                  -216770;1;0;false;false;0;0;0;;;
                                  -216771;1;0;false;false;;;;;;
                                  -216772;2;0;false;false;0;0;0;;;
                                  -216774;1;0;false;false;;;;;;
                                  -216775;1;0;false;false;0;0;0;;;
                                  -216776;1;0;false;false;;;;;;
                                  -216777;10;0;false;false;0;0;0;;;
                                  -216787;1;0;false;false;;;;;;
                                  -216788;1;0;false;false;0;0;0;;;
                                  -216789;1;0;false;false;;;;;;
                                  -216790;21;0;false;false;0;0;0;;;
                                  -216811;6;0;false;false;;;;;;
                                  -216817;7;0;false;false;0;0;0;;;
                                  -216824;1;0;false;false;;;;;;
                                  -216825;8;0;false;false;0;0;0;;;
                                  -216833;1;0;false;false;;;;;;
                                  -216834;22;0;false;false;0;0;0;;;
                                  -216856;1;0;false;false;;;;;;
                                  -216857;11;0;false;false;0;0;0;;;
                                  -216868;1;0;false;false;;;;;;
                                  -216869;1;0;false;false;0;0;0;;;
                                  -216870;1;0;false;false;;;;;;
                                  -216871;8;0;false;false;0;0;0;;;
                                  -216879;1;0;false;false;;;;;;
                                  -216880;4;1;false;false;127;0;85;;;
                                  -216884;2;0;false;false;0;0;0;;;
                                  -216886;3;0;false;false;;;;;;
                                  -216889;1;0;false;false;0;0;0;;;
                                  -216890;5;0;false;false;;;;;;
                                  -216895;54;0;false;false;63;127;95;;;
                                  -216949;1;0;false;false;;;;;;
                                  -216950;53;0;false;false;63;127;95;;;
                                  -217003;1;0;false;false;;;;;;
                                  -217004;18;0;false;false;63;127;95;;;
                                  -217022;1;0;false;false;;;;;;
                                  -217023;19;0;false;false;0;0;0;;;
                                  -217042;2;0;false;false;;;;;;
                                  -217044;1;0;false;false;0;0;0;;;
                                  -217045;2;0;false;false;;;;;;
                                  -217047;3;0;false;false;63;95;191;;;
                                  -217050;3;0;false;false;;;;;;
                                  -217053;1;0;false;false;63;95;191;;;
                                  -217054;1;0;false;false;;;;;;
                                  -217055;8;0;false;false;63;95;191;;;
                                  -217063;1;0;false;false;;;;;;
                                  -217064;3;0;false;false;63;95;191;;;
                                  -217067;1;0;false;false;;;;;;
                                  -217068;5;0;false;false;63;95;191;;;
                                  -217073;1;0;false;false;;;;;;
                                  -217074;4;0;false;false;63;95;191;;;
                                  -217078;1;0;false;false;;;;;;
                                  -217079;5;0;false;false;63;95;191;;;
                                  -217084;1;0;false;false;;;;;;
                                  -217085;4;0;false;false;63;95;191;;;
                                  -217089;1;0;false;false;;;;;;
                                  -217090;3;0;false;false;63;95;191;;;
                                  -217093;1;0;false;false;;;;;;
                                  -217094;5;0;false;false;63;95;191;;;
                                  -217099;3;0;false;false;;;;;;
                                  -217102;1;0;false;false;63;95;191;;;
                                  -217103;1;0;false;false;;;;;;
                                  -217104;2;0;false;false;63;95;191;;;
                                  -217106;1;0;false;false;;;;;;
                                  -217107;3;0;false;false;63;95;191;;;
                                  -217110;1;0;false;false;;;;;;
                                  -217111;6;0;false;false;63;95;191;;;
                                  -217117;1;0;false;false;;;;;;
                                  -217118;3;0;false;false;63;95;191;;;
                                  -217121;1;0;false;false;;;;;;
                                  -217122;3;0;false;false;63;95;191;;;
                                  -217125;1;0;false;false;;;;;;
                                  -217126;10;0;false;false;63;95;191;;;
                                  -217136;1;0;false;false;;;;;;
                                  -217137;5;0;false;false;63;95;191;;;
                                  -217142;1;0;false;false;;;;;;
                                  -217143;3;0;false;false;63;95;191;;;
                                  -217146;1;0;false;false;;;;;;
                                  -217147;6;0;false;false;63;95;191;;;
                                  -217153;1;0;false;false;;;;;;
                                  -217154;8;0;false;false;63;95;191;;;
                                  -217162;1;0;false;false;;;;;;
                                  -217163;4;0;false;false;63;95;191;;;
                                  -217167;1;0;false;false;;;;;;
                                  -217168;4;0;false;false;63;95;191;;;
                                  -217172;4;0;false;false;;;;;;
                                  -217176;1;0;false;false;63;95;191;;;
                                  -217177;1;0;false;false;;;;;;
                                  -217178;3;0;false;false;63;95;191;;;
                                  -217181;1;0;false;false;;;;;;
                                  -217182;5;0;false;false;63;95;191;;;
                                  -217187;1;0;false;false;;;;;;
                                  -217188;4;0;false;false;63;95;191;;;
                                  -217192;1;0;false;false;;;;;;
                                  -217193;3;0;false;false;63;95;191;;;
                                  -217196;1;0;false;false;;;;;;
                                  -217197;5;0;false;false;63;95;191;;;
                                  -217202;1;0;false;false;;;;;;
                                  -217203;4;0;false;false;63;95;191;;;
                                  -217207;1;0;false;false;;;;;;
                                  -217208;2;0;false;false;63;95;191;;;
                                  -217210;1;0;false;false;;;;;;
                                  -217211;8;0;false;false;63;95;191;;;
                                  -217219;1;0;false;false;;;;;;
                                  -217220;3;0;false;false;63;95;191;;;
                                  -217223;1;0;false;false;;;;;;
                                  -217224;3;0;false;false;63;95;191;;;
                                  -217227;1;0;false;false;;;;;;
                                  -217228;4;0;false;false;63;95;191;;;
                                  -217232;1;0;false;false;;;;;;
                                  -217233;2;0;false;false;63;95;191;;;
                                  -217235;1;0;false;false;;;;;;
                                  -217236;6;0;false;false;63;95;191;;;
                                  -217242;4;0;false;false;;;;;;
                                  -217246;1;0;false;false;63;95;191;;;
                                  -217247;1;0;false;false;;;;;;
                                  -217248;10;0;false;false;63;95;191;;;
                                  -217258;1;0;false;false;;;;;;
                                  -217259;1;0;false;false;63;95;191;;;
                                  -217260;1;0;false;false;;;;;;
                                  -217261;10;0;false;false;63;95;191;;;
                                  -217271;1;0;false;false;;;;;;
                                  -217272;4;0;false;false;63;95;191;;;
                                  -217276;1;0;false;false;;;;;;
                                  -217277;2;0;false;false;63;95;191;;;
                                  -217279;1;0;false;false;;;;;;
                                  -217280;7;0;false;false;63;95;191;;;
                                  -217287;1;0;false;false;;;;;;
                                  -217288;4;0;false;false;63;95;191;;;
                                  -217292;1;0;false;false;;;;;;
                                  -217293;6;0;false;false;63;95;191;;;
                                  -217299;1;0;false;false;;;;;;
                                  -217300;3;0;false;false;63;95;191;;;
                                  -217303;1;0;false;false;;;;;;
                                  -217304;4;0;false;false;63;95;191;;;
                                  -217308;1;0;false;false;;;;;;
                                  -217309;4;0;false;false;63;95;191;;;
                                  -217313;4;0;false;false;;;;;;
                                  -217317;1;0;false;false;63;95;191;;;
                                  -217318;1;0;false;false;;;;;;
                                  -217319;4;0;false;false;63;95;191;;;
                                  -217323;1;0;false;false;;;;;;
                                  -217324;3;0;false;false;63;95;191;;;
                                  -217327;1;0;false;false;;;;;;
                                  -217328;4;0;false;false;63;95;191;;;
                                  -217332;1;0;false;false;;;;;;
                                  -217333;4;0;false;false;63;95;191;;;
                                  -217337;1;0;false;false;;;;;;
                                  -217338;4;0;false;false;63;95;191;;;
                                  -217342;1;0;false;false;;;;;;
                                  -217343;4;0;false;false;63;95;191;;;
                                  -217347;1;0;false;false;;;;;;
                                  -217348;1;0;false;false;63;95;191;;;
                                  -217349;1;0;false;false;;;;;;
                                  -217350;6;0;false;false;63;95;191;;;
                                  -217356;1;0;false;false;;;;;;
                                  -217357;4;0;false;false;63;95;191;;;
                                  -217361;1;0;false;false;;;;;;
                                  -217362;2;0;false;false;63;95;191;;;
                                  -217364;1;0;false;false;;;;;;
                                  -217365;4;0;false;false;63;95;191;;;
                                  -217369;1;0;false;false;;;;;;
                                  -217370;6;0;false;false;63;95;191;;;
                                  -217376;1;0;false;false;;;;;;
                                  -217377;2;0;false;false;63;95;191;;;
                                  -217379;1;0;false;false;;;;;;
                                  -217380;3;0;false;false;63;95;191;;;
                                  -217383;1;0;false;false;;;;;;
                                  -217384;4;0;false;false;63;95;191;;;
                                  -217388;4;0;false;false;;;;;;
                                  -217392;1;0;false;false;63;95;191;;;
                                  -217393;1;0;false;false;;;;;;
                                  -217394;3;0;false;false;63;95;191;;;
                                  -217397;1;0;false;false;;;;;;
                                  -217398;10;0;false;false;63;95;191;;;
                                  -217408;1;0;false;false;;;;;;
                                  -217409;5;0;false;false;63;95;191;;;
                                  -217414;1;0;false;false;;;;;;
                                  -217415;2;0;false;false;63;95;191;;;
                                  -217417;1;0;false;false;;;;;;
                                  -217418;5;0;false;false;63;95;191;;;
                                  -217423;3;0;false;false;;;;;;
                                  -217426;1;0;false;false;63;95;191;;;
                                  -217427;1;0;false;false;;;;;;
                                  -217428;3;0;false;false;127;127;159;;;
                                  -217431;3;0;false;false;;;;;;
                                  -217434;1;0;false;false;63;95;191;;;
                                  -217435;1;0;false;false;;;;;;
                                  -217436;3;0;false;false;127;127;159;;;
                                  -217439;5;0;false;false;63;95;191;;;
                                  -217444;4;0;false;false;127;127;159;;;
                                  -217448;1;0;false;false;;;;;;
                                  -217449;6;0;false;false;63;95;191;;;
                                  -217455;1;0;false;false;;;;;;
                                  -217456;3;0;false;false;63;95;191;;;
                                  -217459;1;0;false;false;;;;;;
                                  -217460;7;0;false;false;63;95;191;;;
                                  -217467;1;0;false;false;;;;;;
                                  -217468;9;0;false;false;63;95;191;;;
                                  -217477;1;0;false;false;;;;;;
                                  -217478;3;0;false;false;63;95;191;;;
                                  -217481;1;0;false;false;;;;;;
                                  -217482;7;0;false;false;63;95;191;;;
                                  -217489;1;0;false;false;;;;;;
                                  -217490;9;0;false;false;63;95;191;;;
                                  -217499;1;0;false;false;;;;;;
                                  -217500;2;0;false;false;63;95;191;;;
                                  -217502;3;0;false;false;;;;;;
                                  -217505;1;0;false;false;63;95;191;;;
                                  -217506;1;0;false;false;;;;;;
                                  -217507;7;0;false;false;63;95;191;;;
                                  -217514;1;0;false;false;;;;;;
                                  -217515;2;0;false;false;63;95;191;;;
                                  -217517;1;0;false;false;;;;;;
                                  -217518;8;0;false;false;63;95;191;;;
                                  -217526;3;0;false;false;;;;;;
                                  -217529;1;0;false;false;63;95;191;;;
                                  -217530;1;0;false;false;;;;;;
                                  -217531;4;0;false;false;127;127;159;;;
                                  -217535;4;0;false;false;;;;;;
                                  -217539;1;0;false;false;63;95;191;;;
                                  -217540;1;0;false;false;;;;;;
                                  -217541;4;0;false;false;127;127;159;;;
                                  -217545;9;0;false;false;63;95;191;;;
                                  -217554;1;0;false;false;;;;;;
                                  -217555;6;0;false;false;63;95;191;;;
                                  -217561;1;0;false;false;;;;;;
                                  -217562;8;0;false;false;63;95;191;;;
                                  -217570;1;0;false;false;;;;;;
                                  -217571;5;0;false;false;63;95;191;;;
                                  -217576;1;0;false;false;;;;;;
                                  -217577;9;0;false;false;63;95;191;;;
                                  -217586;1;0;false;false;;;;;;
                                  -217587;9;0;false;false;63;95;191;;;
                                  -217596;3;0;false;false;;;;;;
                                  -217599;1;0;false;false;63;95;191;;;
                                  -217600;1;0;false;false;;;;;;
                                  -217601;4;0;false;false;127;127;159;;;
                                  -217605;9;0;false;false;63;95;191;;;
                                  -217614;1;0;false;false;;;;;;
                                  -217615;5;0;false;false;63;95;191;;;
                                  -217620;1;0;false;false;;;;;;
                                  -217621;8;0;false;false;63;95;191;;;
                                  -217629;1;0;false;false;;;;;;
                                  -217630;5;0;false;false;63;95;191;;;
                                  -217635;1;0;false;false;;;;;;
                                  -217636;6;0;false;false;63;95;191;;;
                                  -217642;1;0;false;false;;;;;;
                                  -217643;3;0;false;false;63;95;191;;;
                                  -217646;1;0;false;false;;;;;;
                                  -217647;9;0;false;false;63;95;191;;;
                                  -217656;1;0;false;false;;;;;;
                                  -217657;2;0;false;false;63;95;191;;;
                                  -217659;1;0;false;false;;;;;;
                                  -217660;4;0;false;false;63;95;191;;;
                                  -217664;1;0;false;false;;;;;;
                                  -217665;4;0;false;false;63;95;191;;;
                                  -217669;1;0;false;false;;;;;;
                                  -217670;4;0;false;false;63;95;191;;;
                                  -217674;4;0;false;false;;;;;;
                                  -217678;1;0;false;false;63;95;191;;;
                                  -217679;1;0;false;false;;;;;;
                                  -217680;7;0;false;false;63;95;191;;;
                                  -217687;1;0;false;false;;;;;;
                                  -217688;8;0;false;false;63;95;191;;;
                                  -217696;3;0;false;false;;;;;;
                                  -217699;1;0;false;false;63;95;191;;;
                                  -217700;1;0;false;false;;;;;;
                                  -217701;4;0;false;false;127;127;159;;;
                                  -217705;9;0;false;false;63;95;191;;;
                                  -217714;1;0;false;false;;;;;;
                                  -217715;10;0;false;false;63;95;191;;;
                                  -217725;1;0;false;false;;;;;;
                                  -217726;8;0;false;false;63;95;191;;;
                                  -217734;1;0;false;false;;;;;;
                                  -217735;5;0;false;false;63;95;191;;;
                                  -217740;1;0;false;false;;;;;;
                                  -217741;9;0;false;false;63;95;191;;;
                                  -217750;1;0;false;false;;;;;;
                                  -217751;2;0;false;false;63;95;191;;;
                                  -217753;1;0;false;false;;;;;;
                                  -217754;7;0;false;false;63;95;191;;;
                                  -217761;1;0;false;false;;;;;;
                                  -217762;3;0;false;false;63;95;191;;;
                                  -217765;1;0;false;false;;;;;;
                                  -217766;5;0;false;false;63;95;191;;;
                                  -217771;3;0;false;false;;;;;;
                                  -217774;1;0;false;false;63;95;191;;;
                                  -217775;1;0;false;false;;;;;;
                                  -217776;2;0;false;false;63;95;191;;;
                                  -217778;1;0;false;false;;;;;;
                                  -217779;6;0;false;false;63;95;191;;;
                                  -217785;1;0;false;false;;;;;;
                                  -217786;5;0;false;false;63;95;191;;;
                                  -217791;1;0;false;false;;;;;;
                                  -217792;8;0;false;false;63;95;191;;;
                                  -217800;1;0;false;false;;;;;;
                                  -217801;4;0;false;false;63;95;191;;;
                                  -217805;3;0;false;false;;;;;;
                                  -217808;1;0;false;false;63;95;191;;;
                                  -217809;1;0;false;false;;;;;;
                                  -217810;5;0;false;false;127;127;159;;;
                                  -217815;3;0;false;false;;;;;;
                                  -217818;1;0;false;false;63;95;191;;;
                                  -217819;1;0;false;false;;;;;;
                                  -217820;4;0;false;false;127;127;159;;;
                                  -217824;3;0;false;false;;;;;;
                                  -217827;1;0;false;false;63;95;191;;;
                                  -217828;3;0;false;false;;;;;;
                                  -217831;1;0;false;false;63;95;191;;;
                                  -217832;1;0;false;false;;;;;;
                                  -217833;7;1;false;false;127;159;191;;;
                                  -217840;5;0;false;false;63;95;191;;;
                                  -217845;1;0;false;false;;;;;;
                                  -217846;6;0;false;false;63;95;191;;;
                                  -217852;1;0;false;false;;;;;;
                                  -217853;2;0;false;false;63;95;191;;;
                                  -217855;1;0;false;false;;;;;;
                                  -217856;5;0;false;false;63;95;191;;;
                                  -217861;1;0;false;false;;;;;;
                                  -217862;9;0;false;false;63;95;191;;;
                                  -217871;1;0;false;false;;;;;;
                                  -217872;2;0;false;false;63;95;191;;;
                                  -217874;1;0;false;false;;;;;;
                                  -217875;7;0;false;false;63;95;191;;;
                                  -217882;3;0;false;false;;;;;;
                                  -217885;1;0;false;false;63;95;191;;;
                                  -217886;1;0;false;false;;;;;;
                                  -217887;7;1;false;false;127;159;191;;;
                                  -217894;6;0;false;false;63;95;191;;;
                                  -217900;1;0;false;false;;;;;;
                                  -217901;6;0;false;false;63;95;191;;;
                                  -217907;1;0;false;false;;;;;;
                                  -217908;2;0;false;false;63;95;191;;;
                                  -217910;1;0;false;false;;;;;;
                                  -217911;10;0;false;false;63;95;191;;;
                                  -217921;1;0;false;false;;;;;;
                                  -217922;2;0;false;false;63;95;191;;;
                                  -217924;1;0;false;false;;;;;;
                                  -217925;8;0;false;false;63;95;191;;;
                                  -217933;1;0;false;false;;;;;;
                                  -217934;3;0;false;false;63;95;191;;;
                                  -217937;1;0;false;false;;;;;;
                                  -217938;1;0;false;false;63;95;191;;;
                                  -217939;1;0;false;false;;;;;;
                                  -217940;2;0;false;false;63;95;191;;;
                                  -217942;1;0;false;false;;;;;;
                                  -217943;6;0;false;false;63;95;191;;;
                                  -217949;1;0;false;false;;;;;;
                                  -217950;4;0;false;false;63;95;191;;;
                                  -217954;3;0;false;false;;;;;;
                                  -217957;1;0;false;false;63;95;191;;;
                                  -217958;1;0;false;false;;;;;;
                                  -217959;7;1;false;false;127;159;191;;;
                                  -217966;4;0;false;false;63;95;191;;;
                                  -217970;1;0;false;false;;;;;;
                                  -217971;3;0;false;false;63;95;191;;;
                                  -217974;1;0;false;false;;;;;;
                                  -217975;5;0;false;false;63;95;191;;;
                                  -217980;1;0;false;false;;;;;;
                                  -217981;3;0;false;false;63;95;191;;;
                                  -217984;1;0;false;false;;;;;;
                                  -217985;2;0;false;false;63;95;191;;;
                                  -217987;1;0;false;false;;;;;;
                                  -217988;5;0;false;false;63;95;191;;;
                                  -217993;1;0;false;false;;;;;;
                                  -217994;2;0;false;false;63;95;191;;;
                                  -217996;1;0;false;false;;;;;;
                                  -217997;6;0;false;false;63;95;191;;;
                                  -218003;1;0;false;false;;;;;;
                                  -218004;5;0;false;false;63;95;191;;;
                                  -218009;3;0;false;false;;;;;;
                                  -218012;1;0;false;false;63;95;191;;;
                                  -218013;1;0;false;false;;;;;;
                                  -218014;11;1;false;false;127;159;191;;;
                                  -218025;12;0;false;false;63;95;191;;;
                                  -218037;1;0;false;false;;;;;;
                                  -218038;4;0;false;false;127;127;159;;;
                                  -218042;3;0;false;false;;;;;;
                                  -218045;1;0;false;false;63;95;191;;;
                                  -218046;4;0;false;false;;;;;;
                                  -218050;4;0;false;false;127;127;159;;;
                                  -218054;21;0;false;false;63;95;191;;;
                                  -218075;1;0;false;false;;;;;;
                                  -218076;1;0;false;false;127;127;159;;;
                                  -218077;1;0;false;false;;;;;;
                                  -218078;2;0;false;false;63;95;191;;;
                                  -218080;1;0;false;false;;;;;;
                                  -218081;3;0;false;false;63;95;191;;;
                                  -218084;1;0;false;false;;;;;;
                                  -218085;8;0;false;false;63;95;191;;;
                                  -218093;1;0;false;false;;;;;;
                                  -218094;3;0;false;false;63;95;191;;;
                                  -218097;1;0;false;false;;;;;;
                                  -218098;4;0;false;false;63;95;191;;;
                                  -218102;1;0;false;false;;;;;;
                                  -218103;8;0;false;false;63;95;191;;;
                                  -218111;5;0;false;false;127;127;159;;;
                                  -218116;3;0;false;false;;;;;;
                                  -218119;1;0;false;false;63;95;191;;;
                                  -218120;4;0;false;false;;;;;;
                                  -218124;4;0;false;false;127;127;159;;;
                                  -218128;27;0;false;false;63;95;191;;;
                                  -218155;1;0;false;false;;;;;;
                                  -218156;1;0;false;false;127;127;159;;;
                                  -218157;1;0;false;false;;;;;;
                                  -218158;2;0;false;false;63;95;191;;;
                                  -218160;1;0;false;false;;;;;;
                                  -218161;3;0;false;false;63;95;191;;;
                                  -218164;1;0;false;false;;;;;;
                                  -218165;6;0;false;false;63;95;191;;;
                                  -218171;1;0;false;false;;;;;;
                                  -218172;4;0;false;false;63;95;191;;;
                                  -218176;1;0;false;false;;;;;;
                                  -218177;3;0;false;false;63;95;191;;;
                                  -218180;1;0;false;false;;;;;;
                                  -218181;6;0;false;false;63;95;191;;;
                                  -218187;1;0;false;false;;;;;;
                                  -218188;4;0;false;false;63;95;191;;;
                                  -218192;1;0;false;false;;;;;;
                                  -218193;7;0;false;false;63;95;191;;;
                                  -218200;1;0;false;false;;;;;;
                                  -218201;3;0;false;false;63;95;191;;;
                                  -218204;1;0;false;false;;;;;;
                                  -218205;8;0;false;false;63;95;191;;;
                                  -218213;5;0;false;false;127;127;159;;;
                                  -218218;3;0;false;false;;;;;;
                                  -218221;1;0;false;false;63;95;191;;;
                                  -218222;1;0;false;false;;;;;;
                                  -218223;5;0;false;false;127;127;159;;;
                                  -218228;3;0;false;false;;;;;;
                                  -218231;1;0;false;false;63;95;191;;;
                                  -218232;1;0;false;false;;;;;;
                                  -218233;11;1;false;false;127;159;191;;;
                                  -218244;24;0;false;false;63;95;191;;;
                                  -218268;1;0;false;false;;;;;;
                                  -218269;4;0;false;false;127;127;159;;;
                                  -218273;3;0;false;false;;;;;;
                                  -218276;1;0;false;false;63;95;191;;;
                                  -218277;3;0;false;false;;;;;;
                                  -218280;4;0;false;false;127;127;159;;;
                                  -218284;19;0;false;false;63;95;191;;;
                                  -218303;1;0;false;false;;;;;;
                                  -218304;4;0;false;false;63;95;191;;;
                                  -218308;1;0;false;false;;;;;;
                                  -218309;6;0;false;false;63;95;191;;;
                                  -218315;1;0;false;false;;;;;;
                                  -218316;5;0;false;false;63;95;191;;;
                                  -218321;1;0;false;false;;;;;;
                                  -218322;2;0;false;false;63;95;191;;;
                                  -218324;1;0;false;false;;;;;;
                                  -218325;3;0;false;false;63;95;191;;;
                                  -218328;1;0;false;false;;;;;;
                                  -218329;2;0;false;false;63;95;191;;;
                                  -218331;1;0;false;false;;;;;;
                                  -218332;7;0;false;false;63;95;191;;;
                                  -218339;1;0;false;false;;;;;;
                                  -218340;3;0;false;false;63;95;191;;;
                                  -218343;1;0;false;false;;;;;;
                                  -218344;5;0;false;false;63;95;191;;;
                                  -218349;1;0;false;false;;;;;;
                                  -218350;5;0;false;false;63;95;191;;;
                                  -218355;1;0;false;false;;;;;;
                                  -218356;2;0;false;false;63;95;191;;;
                                  -218358;1;0;false;false;;;;;;
                                  -218359;33;0;false;false;63;95;191;;;
                                  -218392;4;0;false;false;;;;;;
                                  -218396;1;0;false;false;63;95;191;;;
                                  -218397;3;0;false;false;;;;;;
                                  -218400;4;0;false;false;127;127;159;;;
                                  -218404;22;0;false;false;63;95;191;;;
                                  -218426;1;0;false;false;;;;;;
                                  -218427;4;0;false;false;63;95;191;;;
                                  -218431;1;0;false;false;;;;;;
                                  -218432;6;0;false;false;63;95;191;;;
                                  -218438;1;0;false;false;;;;;;
                                  -218439;5;0;false;false;63;95;191;;;
                                  -218444;1;0;false;false;;;;;;
                                  -218445;2;0;false;false;63;95;191;;;
                                  -218447;1;0;false;false;;;;;;
                                  -218448;3;0;false;false;63;95;191;;;
                                  -218451;1;0;false;false;;;;;;
                                  -218452;2;0;false;false;63;95;191;;;
                                  -218454;1;0;false;false;;;;;;
                                  -218455;6;0;false;false;63;95;191;;;
                                  -218461;1;0;false;false;;;;;;
                                  -218462;1;0;false;false;63;95;191;;;
                                  -218463;1;0;false;false;;;;;;
                                  -218464;5;0;false;false;63;95;191;;;
                                  -218469;1;0;false;false;;;;;;
                                  -218470;4;0;false;false;63;95;191;;;
                                  -218474;1;0;false;false;;;;;;
                                  -218475;4;0;false;false;63;95;191;;;
                                  -218479;1;0;false;false;;;;;;
                                  -218480;10;0;false;false;63;95;191;;;
                                  -218490;4;0;false;false;;;;;;
                                  -218494;1;0;false;false;63;95;191;;;
                                  -218495;3;0;false;false;;;;;;
                                  -218498;9;0;false;false;63;95;191;;;
                                  -218507;1;0;false;false;;;;;;
                                  -218508;1;0;false;false;63;95;191;;;
                                  -218509;1;0;false;false;;;;;;
                                  -218510;4;0;false;false;63;95;191;;;
                                  -218514;1;0;false;false;;;;;;
                                  -218515;9;0;false;false;63;95;191;;;
                                  -218524;1;0;false;false;;;;;;
                                  -218525;3;0;false;false;63;95;191;;;
                                  -218528;1;0;false;false;;;;;;
                                  -218529;7;0;false;false;63;95;191;;;
                                  -218536;1;0;false;false;;;;;;
                                  -218537;2;0;false;false;63;95;191;;;
                                  -218539;1;0;false;false;;;;;;
                                  -218540;9;0;false;false;63;95;191;;;
                                  -218549;1;0;false;false;;;;;;
                                  -218550;4;0;false;false;63;95;191;;;
                                  -218554;1;0;false;false;;;;;;
                                  -218555;2;0;false;false;63;95;191;;;
                                  -218557;1;0;false;false;;;;;;
                                  -218558;7;0;false;false;63;95;191;;;
                                  -218565;1;0;false;false;;;;;;
                                  -218566;3;0;false;false;63;95;191;;;
                                  -218569;1;0;false;false;;;;;;
                                  -218570;2;0;false;false;63;95;191;;;
                                  -218572;1;0;false;false;;;;;;
                                  -218573;3;0;false;false;63;95;191;;;
                                  -218576;1;0;false;false;;;;;;
                                  -218577;2;0;false;false;63;95;191;;;
                                  -218579;1;0;false;false;;;;;;
                                  -218580;3;0;false;false;63;95;191;;;
                                  -218583;1;0;false;false;;;;;;
                                  -218584;8;0;false;false;63;95;191;;;
                                  -218592;1;0;false;false;;;;;;
                                  -218593;4;0;false;false;63;95;191;;;
                                  -218597;1;0;false;false;;;;;;
                                  -218598;2;0;false;false;63;95;191;;;
                                  -218600;1;0;false;false;;;;;;
                                  -218601;1;0;false;false;63;95;191;;;
                                  -218602;1;0;false;false;;;;;;
                                  -218603;4;0;false;false;63;95;191;;;
                                  -218607;1;0;false;false;;;;;;
                                  -218608;9;0;false;false;63;95;191;;;
                                  -218617;1;0;false;false;;;;;;
                                  -218618;2;0;false;false;63;95;191;;;
                                  -218620;1;0;false;false;;;;;;
                                  -218621;3;0;false;false;63;95;191;;;
                                  -218624;1;0;false;false;;;;;;
                                  -218625;9;0;false;false;63;95;191;;;
                                  -218634;5;0;false;false;127;127;159;;;
                                  -218639;5;0;false;false;;;;;;
                                  -218644;1;0;false;false;63;95;191;;;
                                  -218645;3;0;false;false;;;;;;
                                  -218648;4;0;false;false;127;127;159;;;
                                  -218652;19;0;false;false;63;95;191;;;
                                  -218671;1;0;false;false;;;;;;
                                  -218672;4;0;false;false;63;95;191;;;
                                  -218676;1;0;false;false;;;;;;
                                  -218677;6;0;false;false;63;95;191;;;
                                  -218683;1;0;false;false;;;;;;
                                  -218684;2;0;false;false;63;95;191;;;
                                  -218686;1;0;false;false;;;;;;
                                  -218687;4;0;false;false;63;95;191;;;
                                  -218691;5;0;false;false;127;127;159;;;
                                  -218696;3;0;false;false;;;;;;
                                  -218699;1;0;false;false;63;95;191;;;
                                  -218700;1;0;false;false;;;;;;
                                  -218701;5;0;false;false;127;127;159;;;
                                  -218706;3;0;false;false;;;;;;
                                  -218709;2;0;false;false;63;95;191;;;
                                  -218711;2;0;false;false;;;;;;
                                  -218713;6;1;false;false;127;0;85;;;
                                  -218719;1;0;false;false;;;;;;
                                  -218720;4;1;false;false;127;0;85;;;
                                  -218724;1;0;false;false;;;;;;
                                  -218725;17;0;false;false;0;0;0;;;
                                  -218742;3;1;false;false;127;0;85;;;
                                  -218745;1;0;false;false;;;;;;
                                  -218746;6;0;false;false;0;0;0;;;
                                  -218752;1;0;false;false;;;;;;
                                  -218753;3;1;false;false;127;0;85;;;
                                  -218756;1;0;false;false;;;;;;
                                  -218757;7;0;false;false;0;0;0;;;
                                  -218764;1;0;false;false;;;;;;
                                  -218765;6;0;false;false;0;0;0;;;
                                  -218771;1;0;false;false;;;;;;
                                  -218772;5;0;false;false;0;0;0;;;
                                  -218777;1;0;false;false;;;;;;
                                  -218778;1;0;false;false;0;0;0;;;
                                  -218779;3;0;false;false;;;;;;
                                  -218782;14;0;false;false;0;0;0;;;
                                  -218796;3;0;false;false;;;;;;
                                  -218799;3;1;false;false;127;0;85;;;
                                  -218802;1;0;false;false;;;;;;
                                  -218803;13;0;false;false;0;0;0;;;
                                  -218816;1;0;false;false;;;;;;
                                  -218817;1;0;false;false;0;0;0;;;
                                  -218818;1;0;false;false;;;;;;
                                  -218819;15;0;false;false;0;0;0;;;
                                  -218834;3;0;false;false;;;;;;
                                  -218837;3;1;false;false;127;0;85;;;
                                  -218840;1;0;false;false;;;;;;
                                  -218841;3;0;false;false;0;0;0;;;
                                  -218844;1;0;false;false;;;;;;
                                  -218845;1;0;false;false;0;0;0;;;
                                  -218846;1;0;false;false;;;;;;
                                  -218847;5;0;false;false;0;0;0;;;
                                  -218852;1;0;false;false;;;;;;
                                  -218853;1;0;false;false;0;0;0;;;
                                  -218854;1;0;false;false;;;;;;
                                  -218855;7;0;false;false;0;0;0;;;
                                  -218862;3;0;false;false;;;;;;
                                  -218865;5;0;false;false;0;0;0;;;
                                  -218870;1;0;false;false;;;;;;
                                  -218871;5;0;false;false;0;0;0;;;
                                  -218876;1;0;false;false;;;;;;
                                  -218877;1;0;false;false;0;0;0;;;
                                  -218878;1;0;false;false;;;;;;
                                  -218879;3;1;false;false;127;0;85;;;
                                  -218882;1;0;false;false;;;;;;
                                  -218883;8;0;false;false;0;0;0;;;
                                  -218891;6;0;false;false;;;;;;
                                  -218897;2;1;false;false;127;0;85;;;
                                  -218899;1;0;false;false;;;;;;
                                  -218900;6;0;false;false;0;0;0;;;
                                  -218906;1;0;false;false;;;;;;
                                  -218907;1;0;false;false;0;0;0;;;
                                  -218908;1;0;false;false;;;;;;
                                  -218909;3;0;false;false;0;0;0;;;
                                  -218912;1;0;false;false;;;;;;
                                  -218913;2;0;false;false;0;0;0;;;
                                  -218915;1;0;false;false;;;;;;
                                  -218916;5;0;false;false;0;0;0;;;
                                  -218921;1;0;false;false;;;;;;
                                  -218922;1;0;false;false;0;0;0;;;
                                  -218923;1;0;false;false;;;;;;
                                  -218924;1;0;false;false;0;0;0;;;
                                  -218925;1;0;false;false;;;;;;
                                  -218926;2;0;false;false;0;0;0;;;
                                  -218928;1;0;false;false;;;;;;
                                  -218929;3;0;false;false;0;0;0;;;
                                  -218932;1;0;false;false;;;;;;
                                  -218933;1;0;false;false;0;0;0;;;
                                  -218934;1;0;false;false;;;;;;
                                  -218935;14;0;false;false;0;0;0;;;
                                  -218949;1;0;false;false;;;;;;
                                  -218950;1;0;false;false;0;0;0;;;
                                  -218951;4;0;false;false;;;;;;
                                  -218955;35;0;false;false;0;0;0;;;
                                  -218990;3;0;false;false;;;;;;
                                  -218993;1;0;false;false;0;0;0;;;
                                  -218994;4;0;false;false;;;;;;
                                  -218998;2;1;false;false;127;0;85;;;
                                  -219000;1;0;false;false;;;;;;
                                  -219001;5;0;false;false;0;0;0;;;
                                  -219006;1;0;false;false;;;;;;
                                  -219007;2;0;false;false;0;0;0;;;
                                  -219009;1;0;false;false;;;;;;
                                  -219010;4;1;false;false;127;0;85;;;
                                  -219014;1;0;false;false;0;0;0;;;
                                  -219015;1;0;false;false;;;;;;
                                  -219016;1;0;false;false;0;0;0;;;
                                  -219017;4;0;false;false;;;;;;
                                  -219021;35;0;false;false;0;0;0;;;
                                  -219056;3;0;false;false;;;;;;
                                  -219059;1;0;false;false;0;0;0;;;
                                  -219060;3;0;false;false;;;;;;
                                  -219063;11;0;false;false;0;0;0;;;
                                  -219074;1;0;false;false;;;;;;
                                  -219075;1;0;false;false;0;0;0;;;
                                  -219076;1;0;false;false;;;;;;
                                  -219077;6;0;false;false;0;0;0;;;
                                  -219083;3;0;false;false;;;;;;
                                  -219086;9;0;false;false;0;0;0;;;
                                  -219095;1;0;false;false;;;;;;
                                  -219096;1;0;false;false;0;0;0;;;
                                  -219097;1;0;false;false;;;;;;
                                  -219098;4;0;false;false;0;0;0;;;
                                  -219102;3;0;false;false;;;;;;
                                  -219105;10;0;false;false;0;0;0;;;
                                  -219115;1;0;false;false;;;;;;
                                  -219116;1;0;false;false;0;0;0;;;
                                  -219117;1;0;false;false;;;;;;
                                  -219118;5;0;false;false;0;0;0;;;
                                  -219123;3;0;false;false;;;;;;
                                  -219126;20;0;false;false;0;0;0;;;
                                  -219146;1;0;false;false;;;;;;
                                  -219147;5;1;false;false;127;0;85;;;
                                  -219152;2;0;false;false;0;0;0;;;
                                  -219154;2;0;false;false;;;;;;
                                  -219156;1;0;false;false;0;0;0;;;
                                  -219157;2;0;false;false;;;;;;
                                  -219159;3;0;false;false;63;95;191;;;
                                  -219162;3;0;false;false;;;;;;
                                  -219165;1;0;false;false;63;95;191;;;
                                  -219166;1;0;false;false;;;;;;
                                  -219167;6;0;false;false;63;95;191;;;
                                  -219173;1;0;false;false;;;;;;
                                  -219174;3;0;false;false;63;95;191;;;
                                  -219177;1;0;false;false;;;;;;
                                  -219178;5;0;false;false;63;95;191;;;
                                  -219183;1;0;false;false;;;;;;
                                  -219184;9;0;false;false;63;95;191;;;
                                  -219193;1;0;false;false;;;;;;
                                  -219194;9;0;false;false;63;95;191;;;
                                  -219203;1;0;false;false;;;;;;
                                  -219204;3;0;false;false;63;95;191;;;
                                  -219207;1;0;false;false;;;;;;
                                  -219208;6;0;false;false;63;95;191;;;
                                  -219214;1;0;false;false;;;;;;
                                  -219215;8;0;false;false;63;95;191;;;
                                  -219223;1;0;false;false;;;;;;
                                  -219224;11;0;false;false;63;95;191;;;
                                  -219235;3;0;false;false;;;;;;
                                  -219238;1;0;false;false;63;95;191;;;
                                  -219239;1;0;false;false;;;;;;
                                  -219240;3;0;false;false;63;95;191;;;
                                  -219243;1;0;false;false;;;;;;
                                  -219244;7;0;false;false;63;95;191;;;
                                  -219251;1;0;false;false;;;;;;
                                  -219252;5;0;false;false;63;95;191;;;
                                  -219257;1;0;false;false;;;;;;
                                  -219258;3;0;false;false;63;95;191;;;
                                  -219261;1;0;false;false;;;;;;
                                  -219262;6;0;false;false;63;95;191;;;
                                  -219268;1;0;false;false;;;;;;
                                  -219269;5;0;false;false;63;95;191;;;
                                  -219274;1;0;false;false;;;;;;
                                  -219275;6;0;false;false;63;95;191;;;
                                  -219281;1;0;false;false;;;;;;
                                  -219282;3;0;false;false;63;95;191;;;
                                  -219285;1;0;false;false;;;;;;
                                  -219286;7;0;false;false;63;95;191;;;
                                  -219293;3;0;false;false;;;;;;
                                  -219296;2;0;false;false;63;95;191;;;
                                  -219298;2;0;false;false;;;;;;
                                  -219300;4;1;false;false;127;0;85;;;
                                  -219304;1;0;false;false;;;;;;
                                  -219305;7;0;false;false;0;0;0;;;
                                  -219312;1;0;false;false;;;;;;
                                  -219313;1;0;false;false;0;0;0;;;
                                  -219314;3;0;false;false;;;;;;
                                  -219317;9;0;false;false;0;0;0;;;
                                  -219326;1;0;false;false;;;;;;
                                  -219327;11;0;false;false;0;0;0;;;
                                  -219338;1;0;false;false;;;;;;
                                  -219339;1;0;false;false;0;0;0;;;
                                  -219340;1;0;false;false;;;;;;
                                  -219341;17;0;false;false;0;0;0;;;
                                  -219358;3;0;false;false;;;;;;
                                  -219361;9;0;false;false;0;0;0;;;
                                  -219370;1;0;false;false;;;;;;
                                  -219371;13;0;false;false;0;0;0;;;
                                  -219384;1;0;false;false;;;;;;
                                  -219385;1;0;false;false;0;0;0;;;
                                  -219386;1;0;false;false;;;;;;
                                  -219387;19;0;false;false;0;0;0;;;
                                  -219406;3;0;false;false;;;;;;
                                  -219409;11;0;false;false;0;0;0;;;
                                  -219420;1;0;false;false;;;;;;
                                  -219421;1;0;false;false;0;0;0;;;
                                  -219422;1;0;false;false;;;;;;
                                  -219423;2;0;false;false;0;0;0;;;
                                  -219425;3;0;false;false;;;;;;
                                  -219428;8;0;false;false;0;0;0;;;
                                  -219436;1;0;false;false;;;;;;
                                  -219437;1;0;false;false;0;0;0;;;
                                  -219438;1;0;false;false;;;;;;
                                  -219439;2;0;false;false;0;0;0;;;
                                  -219441;3;0;false;false;;;;;;
                                  -219444;9;0;false;false;0;0;0;;;
                                  -219453;1;0;false;false;;;;;;
                                  -219454;1;0;false;false;0;0;0;;;
                                  -219455;1;0;false;false;;;;;;
                                  -219456;2;0;false;false;0;0;0;;;
                                  -219458;3;0;false;false;;;;;;
                                  -219461;20;0;false;false;0;0;0;;;
                                  -219481;1;0;false;false;;;;;;
                                  -219482;1;0;false;false;0;0;0;;;
                                  -219483;1;0;false;false;;;;;;
                                  -219484;2;0;false;false;0;0;0;;;
                                  -219486;3;0;false;false;;;;;;
                                  -219489;22;0;false;false;0;0;0;;;
                                  -219511;1;0;false;false;;;;;;
                                  -219512;1;0;false;false;0;0;0;;;
                                  -219513;1;0;false;false;;;;;;
                                  -219514;2;0;false;false;0;0;0;;;
                                  -219516;4;0;false;false;;;;;;
                                  -219520;17;0;false;false;0;0;0;;;
                                  -219537;3;0;false;false;;;;;;
                                  -219540;61;0;false;false;63;127;95;;;
                                  -219601;1;0;false;false;;;;;;
                                  -219602;28;0;false;false;63;127;95;;;
                                  -219630;1;0;false;false;;;;;;
                                  -219631;2;1;false;false;127;0;85;;;
                                  -219633;1;0;false;false;;;;;;
                                  -219634;18;0;false;false;0;0;0;;;
                                  -219652;1;0;false;false;;;;;;
                                  -219653;2;0;false;false;0;0;0;;;
                                  -219655;1;0;false;false;;;;;;
                                  -219656;4;1;false;false;127;0;85;;;
                                  -219660;1;0;false;false;0;0;0;;;
                                  -219661;1;0;false;false;;;;;;
                                  -219662;1;0;false;false;0;0;0;;;
                                  -219663;4;0;false;false;;;;;;
                                  -219667;48;0;false;false;0;0;0;;;
                                  -219715;4;0;false;false;;;;;;
                                  -219719;43;0;false;false;0;0;0;;;
                                  -219762;4;0;false;false;;;;;;
                                  -219766;27;0;false;false;0;0;0;;;
                                  -219793;3;0;false;false;;;;;;
                                  -219796;1;0;false;false;0;0;0;;;
                                  -219797;4;0;false;false;;;;;;
                                  -219801;24;0;false;false;0;0;0;;;
                                  -219825;3;0;false;false;;;;;;
                                  -219828;2;1;false;false;127;0;85;;;
                                  -219830;1;0;false;false;;;;;;
                                  -219831;12;0;false;false;0;0;0;;;
                                  -219843;1;0;false;false;;;;;;
                                  -219844;2;0;false;false;0;0;0;;;
                                  -219846;1;0;false;false;;;;;;
                                  -219847;4;1;false;false;127;0;85;;;
                                  -219851;1;0;false;false;0;0;0;;;
                                  -219852;1;0;false;false;;;;;;
                                  -219853;1;0;false;false;0;0;0;;;
                                  -219854;4;0;false;false;;;;;;
                                  -219858;28;0;false;false;0;0;0;;;
                                  -219886;3;0;false;false;;;;;;
                                  -219889;1;0;false;false;0;0;0;;;
                                  -219890;3;0;false;false;;;;;;
                                  -219893;2;1;false;false;127;0;85;;;
                                  -219895;1;0;false;false;;;;;;
                                  -219896;14;0;false;false;0;0;0;;;
                                  -219910;1;0;false;false;;;;;;
                                  -219911;2;0;false;false;0;0;0;;;
                                  -219913;1;0;false;false;;;;;;
                                  -219914;4;1;false;false;127;0;85;;;
                                  -219918;1;0;false;false;0;0;0;;;
                                  -219919;1;0;false;false;;;;;;
                                  -219920;1;0;false;false;0;0;0;;;
                                  -219921;4;0;false;false;;;;;;
                                  -219925;30;0;false;false;0;0;0;;;
                                  -219955;4;0;false;false;;;;;;
                                  -219959;1;0;false;false;0;0;0;;;
                                  -219960;3;0;false;false;;;;;;
                                  -219963;16;0;false;false;0;0;0;;;
                                  -219979;3;0;false;false;;;;;;
                                  -219982;19;0;false;false;0;0;0;;;
                                  -220001;3;0;false;false;;;;;;
                                  -220004;5;1;false;false;127;0;85;;;
                                  -220009;10;0;false;false;0;0;0;;;
                                  -220019;2;0;false;false;;;;;;
                                  -220021;1;0;false;false;0;0;0;;;
                                  -220022;2;0;false;false;;;;;;
                                  -220024;3;0;false;false;63;95;191;;;
                                  -220027;3;0;false;false;;;;;;
                                  -220030;1;0;false;false;63;95;191;;;
                                  -220031;1;0;false;false;;;;;;
                                  -220032;6;0;false;false;63;95;191;;;
                                  -220038;1;0;false;false;;;;;;
                                  -220039;3;0;false;false;63;95;191;;;
                                  -220042;1;0;false;false;;;;;;
                                  -220043;10;0;false;false;63;95;191;;;
                                  -220053;3;0;false;false;;;;;;
                                  -220056;2;0;false;false;63;95;191;;;
                                  -220058;2;0;false;false;;;;;;
                                  -220060;4;1;false;false;127;0;85;;;
                                  -220064;1;0;false;false;;;;;;
                                  -220065;16;0;false;false;0;0;0;;;
                                  -220081;1;0;false;false;;;;;;
                                  -220082;1;0;false;false;0;0;0;;;
                                  -220083;3;0;false;false;;;;;;
                                  -220086;11;0;false;false;0;0;0;;;
                                  -220097;1;0;false;false;;;;;;
                                  -220098;1;0;false;false;0;0;0;;;
                                  -220099;1;0;false;false;;;;;;
                                  -220100;11;0;false;false;0;0;0;;;
                                  -220111;1;0;false;false;;;;;;
                                  -220112;1;0;false;false;0;0;0;;;
                                  -220113;1;0;false;false;;;;;;
                                  -220114;12;0;false;false;0;0;0;;;
                                  -220126;3;0;false;false;;;;;;
                                  -220129;15;0;false;false;0;0;0;;;
                                  -220144;1;0;false;false;;;;;;
                                  -220145;1;0;false;false;0;0;0;;;
                                  -220146;1;0;false;false;;;;;;
                                  -220147;3;0;false;false;0;0;0;;;
                                  -220150;2;0;false;false;;;;;;
                                  -220152;1;0;false;false;0;0;0;;;
                                  -220153;2;0;false;false;;;;;;
                                  -220155;3;0;false;false;63;95;191;;;
                                  -220158;3;0;false;false;;;;;;
                                  -220161;1;0;false;false;63;95;191;;;
                                  -220162;1;0;false;false;;;;;;
                                  -220163;7;0;false;false;63;95;191;;;
                                  -220170;1;0;false;false;;;;;;
                                  -220171;3;0;false;false;63;95;191;;;
                                  -220174;1;0;false;false;;;;;;
                                  -220175;6;0;false;false;63;95;191;;;
                                  -220181;1;0;false;false;;;;;;
                                  -220182;13;0;false;false;63;95;191;;;
                                  -220195;3;0;false;false;;;;;;
                                  -220198;1;0;false;false;63;95;191;;;
                                  -220199;1;0;false;false;;;;;;
                                  -220200;3;0;false;false;127;127;159;;;
                                  -220203;3;0;false;false;;;;;;
                                  -220206;1;0;false;false;63;95;191;;;
                                  -220207;3;0;false;false;;;;;;
                                  -220210;1;0;false;false;63;95;191;;;
                                  -220211;1;0;false;false;;;;;;
                                  -220212;7;1;false;false;127;159;191;;;
                                  -220219;6;0;false;false;63;95;191;;;
                                  -220225;1;0;false;false;;;;;;
                                  -220226;6;0;false;false;63;95;191;;;
                                  -220232;1;0;false;false;;;;;;
                                  -220233;2;0;false;false;63;95;191;;;
                                  -220235;1;0;false;false;;;;;;
                                  -220236;6;0;false;false;63;95;191;;;
                                  -220242;1;0;false;false;;;;;;
                                  -220243;2;0;false;false;63;95;191;;;
                                  -220245;1;0;false;false;;;;;;
                                  -220246;7;0;false;false;63;95;191;;;
                                  -220253;1;0;false;false;;;;;;
                                  -220254;1;0;false;false;63;95;191;;;
                                  -220255;1;0;false;false;;;;;;
                                  -220256;1;0;false;false;63;95;191;;;
                                  -220257;1;0;false;false;;;;;;
                                  -220258;1;0;false;false;63;95;191;;;
                                  -220259;1;0;false;false;;;;;;
                                  -220260;6;0;false;false;63;95;191;;;
                                  -220266;1;0;false;false;;;;;;
                                  -220267;5;0;false;false;63;95;191;;;
                                  -220272;3;0;false;false;;;;;;
                                  -220275;1;0;false;false;63;95;191;;;
                                  -220276;2;0;false;false;;;;;;
                                  -220278;18;0;false;false;63;95;191;;;
                                  -220296;1;0;false;false;;;;;;
                                  -220297;2;0;false;false;63;95;191;;;
                                  -220299;2;0;false;false;;;;;;
                                  -220301;4;1;false;false;127;0;85;;;
                                  -220305;1;0;false;false;;;;;;
                                  -220306;17;0;false;false;0;0;0;;;
                                  -220323;3;1;false;false;127;0;85;;;
                                  -220326;1;0;false;false;;;;;;
                                  -220327;7;0;false;false;0;0;0;;;
                                  -220334;1;0;false;false;;;;;;
                                  -220335;1;0;false;false;0;0;0;;;
                                  -220336;3;0;false;false;;;;;;
                                  -220339;9;0;false;false;0;0;0;;;
                                  -220348;1;0;false;false;;;;;;
                                  -220349;11;0;false;false;0;0;0;;;
                                  -220360;6;0;false;false;;;;;;
                                  -220366;2;1;false;false;127;0;85;;;
                                  -220368;1;0;false;false;;;;;;
                                  -220369;7;0;false;false;0;0;0;;;
                                  -220376;1;0;false;false;;;;;;
                                  -220377;2;0;false;false;0;0;0;;;
                                  -220379;1;0;false;false;;;;;;
                                  -220380;2;0;false;false;0;0;0;;;
                                  -220382;1;0;false;false;;;;;;
                                  -220383;1;0;false;false;0;0;0;;;
                                  -220384;4;0;false;false;;;;;;
                                  -220388;6;1;false;false;127;0;85;;;
                                  -220394;1;0;false;false;0;0;0;;;
                                  -220395;3;0;false;false;;;;;;
                                  -220398;1;0;false;false;0;0;0;;;
                                  -220399;3;0;false;false;;;;;;
                                  -220402;10;0;false;false;0;0;0;;;
                                  -220412;1;0;false;false;;;;;;
                                  -220413;1;0;false;false;0;0;0;;;
                                  -220414;1;0;false;false;;;;;;
                                  -220415;16;0;false;false;0;0;0;;;
                                  -220431;3;0;false;false;;;;;;
                                  -220434;2;1;false;false;127;0;85;;;
                                  -220436;1;0;false;false;;;;;;
                                  -220437;7;0;false;false;0;0;0;;;
                                  -220444;1;0;false;false;;;;;;
                                  -220445;1;0;false;false;0;0;0;;;
                                  -220446;1;0;false;false;;;;;;
                                  -220447;2;0;false;false;0;0;0;;;
                                  -220449;1;0;false;false;;;;;;
                                  -220450;1;0;false;false;0;0;0;;;
                                  -220451;4;0;false;false;;;;;;
                                  -220455;3;1;false;false;127;0;85;;;
                                  -220458;1;0;false;false;;;;;;
                                  -220459;7;0;false;false;0;0;0;;;
                                  -220466;1;0;false;false;;;;;;
                                  -220467;1;0;false;false;0;0;0;;;
                                  -220468;1;0;false;false;;;;;;
                                  -220469;10;0;false;false;0;0;0;;;
                                  -220479;1;0;false;false;;;;;;
                                  -220480;1;0;false;false;0;0;0;;;
                                  -220481;1;0;false;false;;;;;;
                                  -220482;7;0;false;false;0;0;0;;;
                                  -220489;4;0;false;false;;;;;;
                                  -220493;3;1;false;false;127;0;85;;;
                                  -220496;1;0;false;false;;;;;;
                                  -220497;11;0;false;false;0;0;0;;;
                                  -220508;1;0;false;false;;;;;;
                                  -220509;1;0;false;false;0;0;0;;;
                                  -220510;1;0;false;false;;;;;;
                                  -220511;16;0;false;false;0;0;0;;;
                                  -220527;1;0;false;false;;;;;;
                                  -220528;1;0;false;false;0;0;0;;;
                                  -220529;1;0;false;false;;;;;;
                                  -220530;7;0;false;false;0;0;0;;;
                                  -220537;1;0;false;false;;;;;;
                                  -220538;1;0;false;false;0;0;0;;;
                                  -220539;1;0;false;false;;;;;;
                                  -220540;12;0;false;false;0;0;0;;;
                                  -220552;4;0;false;false;;;;;;
                                  -220556;3;1;false;false;127;0;85;;;
                                  -220559;1;0;false;false;;;;;;
                                  -220560;12;0;false;false;0;0;0;;;
                                  -220572;1;0;false;false;;;;;;
                                  -220573;1;0;false;false;0;0;0;;;
                                  -220574;1;0;false;false;;;;;;
                                  -220575;17;0;false;false;0;0;0;;;
                                  -220592;1;0;false;false;;;;;;
                                  -220593;1;0;false;false;0;0;0;;;
                                  -220594;1;0;false;false;;;;;;
                                  -220595;9;0;false;false;0;0;0;;;
                                  -220604;1;0;false;false;;;;;;
                                  -220605;1;0;false;false;0;0;0;;;
                                  -220606;1;0;false;false;;;;;;
                                  -220607;13;0;false;false;0;0;0;;;
                                  -220620;4;0;false;false;;;;;;
                                  -220624;7;0;false;false;0;0;0;;;
                                  -220631;5;0;false;false;;;;;;
                                  -220636;11;0;false;false;0;0;0;;;
                                  -220647;1;0;false;false;;;;;;
                                  -220648;10;0;false;false;0;0;0;;;
                                  -220658;7;0;false;false;;;;;;
                                  -220665;21;0;false;false;63;127;95;;;
                                  -220686;3;0;false;false;;;;;;
                                  -220689;8;0;false;false;0;0;0;;;
                                  -220697;1;0;false;false;;;;;;
                                  -220698;10;0;false;false;0;0;0;;;
                                  -220708;7;0;false;false;;;;;;
                                  -220715;16;0;false;false;63;127;95;;;
                                  -220731;3;0;false;false;;;;;;
                                  -220734;12;0;false;false;0;0;0;;;
                                  -220746;1;0;false;false;;;;;;
                                  -220747;13;0;false;false;0;0;0;;;
                                  -220760;1;0;false;false;;;;;;
                                  -220761;4;1;false;false;127;0;85;;;
                                  -220765;2;0;false;false;0;0;0;;;
                                  -220767;4;0;false;false;;;;;;
                                  -220771;2;1;false;false;127;0;85;;;
                                  -220773;1;0;false;false;;;;;;
                                  -220774;8;0;false;false;0;0;0;;;
                                  -220782;1;0;false;false;;;;;;
                                  -220783;1;0;false;false;0;0;0;;;
                                  -220784;1;0;false;false;;;;;;
                                  -220785;12;0;false;false;0;0;0;;;
                                  -220797;1;0;false;false;;;;;;
                                  -220798;1;0;false;false;0;0;0;;;
                                  -220799;5;0;false;false;;;;;;
                                  -220804;61;0;false;false;63;127;95;;;
                                  -220865;3;0;false;false;;;;;;
                                  -220868;21;0;false;false;63;127;95;;;
                                  -220889;3;0;false;false;;;;;;
                                  -220892;5;1;false;false;127;0;85;;;
                                  -220897;8;0;false;false;0;0;0;;;
                                  -220905;6;0;false;false;;;;;;
                                  -220911;10;0;false;false;0;0;0;;;
                                  -220921;1;0;false;false;;;;;;
                                  -220922;1;0;false;false;0;0;0;;;
                                  -220923;1;0;false;false;;;;;;
                                  -220924;12;0;false;false;0;0;0;;;
                                  -220936;1;0;false;false;;;;;;
                                  -220937;10;0;false;false;0;0;0;;;
                                  -220947;7;0;false;false;;;;;;
                                  -220954;6;0;false;false;0;0;0;;;
                                  -220960;1;0;false;false;;;;;;
                                  -220961;1;0;false;false;0;0;0;;;
                                  -220962;1;0;false;false;;;;;;
                                  -220963;12;0;false;false;0;0;0;;;
                                  -220975;1;0;false;false;;;;;;
                                  -220976;13;0;false;false;0;0;0;;;
                                  -220989;1;0;false;false;;;;;;
                                  -220990;4;1;false;false;127;0;85;;;
                                  -220994;2;0;false;false;0;0;0;;;
                                  -220996;4;0;false;false;;;;;;
                                  -221000;1;0;false;false;0;0;0;;;
                                  -221001;3;0;false;false;;;;;;
                                  -221004;1;0;false;false;0;0;0;;;
                                  -221005;3;0;false;false;;;;;;
                                  -221008;4;1;false;false;127;0;85;;;
                                  -221012;1;0;false;false;;;;;;
                                  -221013;1;0;false;false;0;0;0;;;
                                  -221014;4;0;false;false;;;;;;
                                  -221018;3;1;false;false;127;0;85;;;
                                  -221021;1;0;false;false;;;;;;
                                  -221022;12;0;false;false;0;0;0;;;
                                  -221034;1;0;false;false;;;;;;
                                  -221035;1;0;false;false;0;0;0;;;
                                  -221036;1;0;false;false;;;;;;
                                  -221037;10;0;false;false;0;0;0;;;
                                  -221047;1;0;false;false;;;;;;
                                  -221048;1;0;false;false;0;0;0;;;
                                  -221049;1;0;false;false;;;;;;
                                  -221050;7;0;false;false;0;0;0;;;
                                  -221057;4;0;false;false;;;;;;
                                  -221061;3;1;false;false;127;0;85;;;
                                  -221064;1;0;false;false;;;;;;
                                  -221065;11;0;false;false;0;0;0;;;
                                  -221076;1;0;false;false;;;;;;
                                  -221077;1;0;false;false;0;0;0;;;
                                  -221078;1;0;false;false;;;;;;
                                  -221079;16;0;false;false;0;0;0;;;
                                  -221095;1;0;false;false;;;;;;
                                  -221096;1;0;false;false;0;0;0;;;
                                  -221097;1;0;false;false;;;;;;
                                  -221098;12;0;false;false;0;0;0;;;
                                  -221110;1;0;false;false;;;;;;
                                  -221111;1;0;false;false;0;0;0;;;
                                  -221112;1;0;false;false;;;;;;
                                  -221113;12;0;false;false;0;0;0;;;
                                  -221125;4;0;false;false;;;;;;
                                  -221129;3;1;false;false;127;0;85;;;
                                  -221132;1;0;false;false;;;;;;
                                  -221133;12;0;false;false;0;0;0;;;
                                  -221145;1;0;false;false;;;;;;
                                  -221146;1;0;false;false;0;0;0;;;
                                  -221147;1;0;false;false;;;;;;
                                  -221148;17;0;false;false;0;0;0;;;
                                  -221165;1;0;false;false;;;;;;
                                  -221166;1;0;false;false;0;0;0;;;
                                  -221167;1;0;false;false;;;;;;
                                  -221168;9;0;false;false;0;0;0;;;
                                  -221177;1;0;false;false;;;;;;
                                  -221178;1;0;false;false;0;0;0;;;
                                  -221179;1;0;false;false;;;;;;
                                  -221180;13;0;false;false;0;0;0;;;
                                  -221193;4;0;false;false;;;;;;
                                  -221197;7;0;false;false;0;0;0;;;
                                  -221204;5;0;false;false;;;;;;
                                  -221209;13;0;false;false;0;0;0;;;
                                  -221222;1;0;false;false;;;;;;
                                  -221223;10;0;false;false;0;0;0;;;
                                  -221233;5;0;false;false;;;;;;
                                  -221238;21;0;false;false;63;127;95;;;
                                  -221259;3;0;false;false;;;;;;
                                  -221262;11;0;false;false;0;0;0;;;
                                  -221273;1;0;false;false;;;;;;
                                  -221274;10;0;false;false;0;0;0;;;
                                  -221284;6;0;false;false;;;;;;
                                  -221290;16;0;false;false;63;127;95;;;
                                  -221306;3;0;false;false;;;;;;
                                  -221309;12;0;false;false;0;0;0;;;
                                  -221321;1;0;false;false;;;;;;
                                  -221322;13;0;false;false;0;0;0;;;
                                  -221335;1;0;false;false;;;;;;
                                  -221336;4;1;false;false;127;0;85;;;
                                  -221340;2;0;false;false;0;0;0;;;
                                  -221342;4;0;false;false;;;;;;
                                  -221346;2;1;false;false;127;0;85;;;
                                  -221348;1;0;false;false;;;;;;
                                  -221349;13;0;false;false;0;0;0;;;
                                  -221362;1;0;false;false;;;;;;
                                  -221363;1;0;false;false;0;0;0;;;
                                  -221364;1;0;false;false;;;;;;
                                  -221365;12;0;false;false;0;0;0;;;
                                  -221377;1;0;false;false;;;;;;
                                  -221378;1;0;false;false;0;0;0;;;
                                  -221379;5;0;false;false;;;;;;
                                  -221384;58;0;false;false;63;127;95;;;
                                  -221442;3;0;false;false;;;;;;
                                  -221445;16;0;false;false;63;127;95;;;
                                  -221461;3;0;false;false;;;;;;
                                  -221464;5;1;false;false;127;0;85;;;
                                  -221469;8;0;false;false;0;0;0;;;
                                  -221477;6;0;false;false;;;;;;
                                  -221483;10;0;false;false;0;0;0;;;
                                  -221493;1;0;false;false;;;;;;
                                  -221494;1;0;false;false;0;0;0;;;
                                  -221495;1;0;false;false;;;;;;
                                  -221496;12;0;false;false;0;0;0;;;
                                  -221508;1;0;false;false;;;;;;
                                  -221509;10;0;false;false;0;0;0;;;
                                  -221519;7;0;false;false;;;;;;
                                  -221526;7;0;false;false;0;0;0;;;
                                  -221533;1;0;false;false;;;;;;
                                  -221534;1;0;false;false;0;0;0;;;
                                  -221535;1;0;false;false;;;;;;
                                  -221536;12;0;false;false;0;0;0;;;
                                  -221548;1;0;false;false;;;;;;
                                  -221549;13;0;false;false;0;0;0;;;
                                  -221562;1;0;false;false;;;;;;
                                  -221563;4;1;false;false;127;0;85;;;
                                  -221567;2;0;false;false;0;0;0;;;
                                  -221569;5;0;false;false;;;;;;
                                  -221574;1;0;false;false;0;0;0;;;
                                  -221575;3;0;false;false;;;;;;
                                  -221578;1;0;false;false;0;0;0;;;
                                  -221579;3;0;false;false;;;;;;
                                  -221582;22;0;false;false;0;0;0;;;
                                  -221604;1;0;false;false;;;;;;
                                  -221605;2;0;false;false;0;0;0;;;
                                  -221607;1;0;false;false;;;;;;
                                  -221608;7;0;false;false;0;0;0;;;
                                  -221615;3;0;false;false;;;;;;
                                  -221618;3;1;false;false;127;0;85;;;
                                  -221621;1;0;false;false;;;;;;
                                  -221622;10;0;false;false;0;0;0;;;
                                  -221632;1;0;false;false;;;;;;
                                  -221633;1;0;false;false;0;0;0;;;
                                  -221634;1;0;false;false;;;;;;
                                  -221635;7;0;false;false;0;0;0;;;
                                  -221642;1;0;false;false;;;;;;
                                  -221643;1;0;false;false;0;0;0;;;
                                  -221644;1;0;false;false;;;;;;
                                  -221645;7;0;false;false;0;0;0;;;
                                  -221652;3;0;false;false;;;;;;
                                  -221655;19;0;false;false;0;0;0;;;
                                  -221674;3;0;false;false;;;;;;
                                  -221677;48;0;false;false;63;127;95;;;
                                  -221725;1;0;false;false;;;;;;
                                  -221726;7;0;false;false;0;0;0;;;
                                  -221733;1;0;false;false;;;;;;
                                  -221734;1;0;false;false;0;0;0;;;
                                  -221735;1;0;false;false;;;;;;
                                  -221736;11;0;false;false;0;0;0;;;
                                  -221747;2;0;false;false;;;;;;
                                  -221749;1;0;false;false;0;0;0;;;
                                  -221750;2;0;false;false;;;;;;
                                  -221752;3;0;false;false;63;95;191;;;
                                  -221755;3;0;false;false;;;;;;
                                  -221758;1;0;false;false;63;95;191;;;
                                  -221759;1;0;false;false;;;;;;
                                  -221760;7;0;false;false;63;95;191;;;
                                  -221767;1;0;false;false;;;;;;
                                  -221768;3;0;false;false;63;95;191;;;
                                  -221771;1;0;false;false;;;;;;
                                  -221772;6;0;false;false;63;95;191;;;
                                  -221778;1;0;false;false;;;;;;
                                  -221779;12;0;false;false;63;95;191;;;
                                  -221791;1;0;false;false;;;;;;
                                  -221792;3;0;false;false;63;95;191;;;
                                  -221795;1;0;false;false;;;;;;
                                  -221796;6;0;false;false;63;95;191;;;
                                  -221802;1;0;false;false;;;;;;
                                  -221803;3;0;false;false;63;95;191;;;
                                  -221806;1;0;false;false;;;;;;
                                  -221807;10;0;false;false;63;95;191;;;
                                  -221817;1;0;false;false;;;;;;
                                  -221818;6;0;false;false;63;95;191;;;
                                  -221824;3;0;false;false;;;;;;
                                  -221827;1;0;false;false;63;95;191;;;
                                  -221828;1;0;false;false;;;;;;
                                  -221829;3;0;false;false;63;95;191;;;
                                  -221832;1;0;false;false;;;;;;
                                  -221833;2;0;false;false;63;95;191;;;
                                  -221835;1;0;false;false;;;;;;
                                  -221836;7;0;false;false;63;95;191;;;
                                  -221843;1;0;false;false;;;;;;
                                  -221844;3;0;false;false;63;95;191;;;
                                  -221847;1;0;false;false;;;;;;
                                  -221848;3;0;false;false;63;95;191;;;
                                  -221851;1;0;false;false;;;;;;
                                  -221852;10;0;false;false;63;95;191;;;
                                  -221862;1;0;false;false;;;;;;
                                  -221863;8;0;false;false;63;95;191;;;
                                  -221871;3;0;false;false;;;;;;
                                  -221874;1;0;false;false;63;95;191;;;
                                  -221875;1;0;false;false;;;;;;
                                  -221876;3;0;false;false;127;127;159;;;
                                  -221879;3;0;false;false;;;;;;
                                  -221882;1;0;false;false;63;95;191;;;
                                  -221883;3;0;false;false;;;;;;
                                  -221886;1;0;false;false;63;95;191;;;
                                  -221887;1;0;false;false;;;;;;
                                  -221888;7;1;false;false;127;159;191;;;
                                  -221895;6;0;false;false;63;95;191;;;
                                  -221901;1;0;false;false;;;;;;
                                  -221902;6;0;false;false;63;95;191;;;
                                  -221908;1;0;false;false;;;;;;
                                  -221909;2;0;false;false;63;95;191;;;
                                  -221911;1;0;false;false;;;;;;
                                  -221912;6;0;false;false;63;95;191;;;
                                  -221918;1;0;false;false;;;;;;
                                  -221919;2;0;false;false;63;95;191;;;
                                  -221921;1;0;false;false;;;;;;
                                  -221922;7;0;false;false;63;95;191;;;
                                  -221929;1;0;false;false;;;;;;
                                  -221930;1;0;false;false;63;95;191;;;
                                  -221931;1;0;false;false;;;;;;
                                  -221932;1;0;false;false;63;95;191;;;
                                  -221933;1;0;false;false;;;;;;
                                  -221934;1;0;false;false;63;95;191;;;
                                  -221935;1;0;false;false;;;;;;
                                  -221936;6;0;false;false;63;95;191;;;
                                  -221942;1;0;false;false;;;;;;
                                  -221943;5;0;false;false;63;95;191;;;
                                  -221948;3;0;false;false;;;;;;
                                  -221951;1;0;false;false;63;95;191;;;
                                  -221952;2;0;false;false;;;;;;
                                  -221954;18;0;false;false;63;95;191;;;
                                  -221972;1;0;false;false;;;;;;
                                  -221973;1;0;false;false;63;95;191;;;
                                  -221974;1;0;false;false;;;;;;
                                  -221975;8;1;false;false;127;159;191;;;
                                  -221983;2;0;false;false;;;;;;
                                  -221985;1;0;false;false;63;95;191;;;
                                  -221986;1;0;false;false;;;;;;
                                  -221987;8;0;false;false;63;95;191;;;
                                  -221995;1;0;false;false;;;;;;
                                  -221996;6;0;false;false;63;95;191;;;
                                  -222002;1;0;false;false;;;;;;
                                  -222003;3;0;false;false;63;95;191;;;
                                  -222006;1;0;false;false;;;;;;
                                  -222007;8;0;false;false;63;95;191;;;
                                  -222015;4;0;false;false;;;;;;
                                  -222019;1;0;false;false;63;95;191;;;
                                  -222020;1;0;false;false;;;;;;
                                  -222021;9;0;false;false;63;95;191;;;
                                  -222030;1;0;false;false;;;;;;
                                  -222031;6;0;false;false;63;95;191;;;
                                  -222037;1;0;false;false;;;;;;
                                  -222038;3;0;false;false;63;95;191;;;
                                  -222041;1;0;false;false;;;;;;
                                  -222042;3;0;false;false;63;95;191;;;
                                  -222045;1;0;false;false;;;;;;
                                  -222046;9;0;false;false;63;95;191;;;
                                  -222055;1;0;false;false;;;;;;
                                  -222056;3;0;false;false;63;95;191;;;
                                  -222059;1;0;false;false;;;;;;
                                  -222060;5;0;false;false;63;95;191;;;
                                  -222065;1;0;false;false;;;;;;
                                  -222066;6;0;false;false;63;95;191;;;
                                  -222072;1;0;false;false;;;;;;
                                  -222073;2;0;false;false;63;95;191;;;
                                  -222075;1;0;false;false;;;;;;
                                  -222076;3;0;false;false;63;95;191;;;
                                  -222079;1;0;false;false;;;;;;
                                  -222080;6;0;false;false;63;95;191;;;
                                  -222086;3;0;false;false;;;;;;
                                  -222089;2;0;false;false;63;95;191;;;
                                  -222091;2;0;false;false;;;;;;
                                  -222093;7;1;false;false;127;0;85;;;
                                  -222100;1;0;false;false;;;;;;
                                  -222101;20;0;false;false;0;0;0;;;
                                  -222121;3;1;false;false;127;0;85;;;
                                  -222124;1;0;false;false;;;;;;
                                  -222125;7;0;false;false;0;0;0;;;
                                  -222132;1;0;false;false;;;;;;
                                  -222133;1;0;false;false;0;0;0;;;
                                  -222134;3;0;false;false;;;;;;
                                  -222137;2;1;false;false;127;0;85;;;
                                  -222139;1;0;false;false;;;;;;
                                  -222140;7;0;false;false;0;0;0;;;
                                  -222147;1;0;false;false;;;;;;
                                  -222148;2;0;false;false;0;0;0;;;
                                  -222150;1;0;false;false;;;;;;
                                  -222151;2;0;false;false;0;0;0;;;
                                  -222153;1;0;false;false;;;;;;
                                  -222154;1;0;false;false;0;0;0;;;
                                  -222155;4;0;false;false;;;;;;
                                  -222159;6;1;false;false;127;0;85;;;
                                  -222165;1;0;false;false;;;;;;
                                  -222166;5;1;false;false;127;0;85;;;
                                  -222171;1;0;false;false;0;0;0;;;
                                  -222172;3;0;false;false;;;;;;
                                  -222175;1;0;false;false;0;0;0;;;
                                  -222176;3;0;false;false;;;;;;
                                  -222179;9;0;false;false;0;0;0;;;
                                  -222188;1;0;false;false;;;;;;
                                  -222189;13;0;false;false;0;0;0;;;
                                  -222202;1;0;false;false;;;;;;
                                  -222203;1;0;false;false;0;0;0;;;
                                  -222204;1;0;false;false;;;;;;
                                  -222205;19;0;false;false;0;0;0;;;
                                  -222224;3;0;false;false;;;;;;
                                  -222227;2;1;false;false;127;0;85;;;
                                  -222229;1;0;false;false;;;;;;
                                  -222230;14;0;false;false;0;0;0;;;
                                  -222244;1;0;false;false;;;;;;
                                  -222245;2;0;false;false;0;0;0;;;
                                  -222247;1;0;false;false;;;;;;
                                  -222248;4;1;false;false;127;0;85;;;
                                  -222252;1;0;false;false;0;0;0;;;
                                  -222253;1;0;false;false;;;;;;
                                  -222254;1;0;false;false;0;0;0;;;
                                  -222255;4;0;false;false;;;;;;
                                  -222259;49;0;false;false;0;0;0;;;
                                  -222308;1;0;false;false;;;;;;
                                  -222309;1;0;false;false;0;0;0;;;
                                  -222310;1;0;false;false;;;;;;
                                  -222311;8;0;false;false;0;0;0;;;
                                  -222319;3;0;false;false;;;;;;
                                  -222322;1;0;false;false;0;0;0;;;
                                  -222323;3;0;false;false;;;;;;
                                  -222326;25;0;false;false;0;0;0;;;
                                  -222351;3;0;false;false;;;;;;
                                  -222354;6;1;false;false;127;0;85;;;
                                  -222360;1;0;false;false;;;;;;
                                  -222361;4;1;false;false;127;0;85;;;
                                  -222365;1;0;false;false;0;0;0;;;
                                  -222366;2;0;false;false;;;;;;
                                  -222368;1;0;false;false;0;0;0;;;
                                  -222369;2;0;false;false;;;;;;
                                  -222371;3;0;false;false;63;95;191;;;
                                  -222374;4;0;false;false;;;;;;
                                  -222378;1;0;false;false;63;95;191;;;
                                  -222379;1;0;false;false;;;;;;
                                  -222380;7;0;false;false;63;95;191;;;
                                  -222387;1;0;false;false;;;;;;
                                  -222388;3;0;false;false;63;95;191;;;
                                  -222391;1;0;false;false;;;;;;
                                  -222392;3;0;false;false;63;95;191;;;
                                  -222395;1;0;false;false;;;;;;
                                  -222396;5;0;false;false;63;95;191;;;
                                  -222401;3;0;false;false;;;;;;
                                  -222404;1;0;false;false;63;95;191;;;
                                  -222405;1;0;false;false;;;;;;
                                  -222406;3;0;false;false;127;127;159;;;
                                  -222409;3;0;false;false;;;;;;
                                  -222412;1;0;false;false;63;95;191;;;
                                  -222413;3;0;false;false;;;;;;
                                  -222416;1;0;false;false;63;95;191;;;
                                  -222417;1;0;false;false;;;;;;
                                  -222418;11;1;false;false;127;159;191;;;
                                  -222429;12;0;false;false;63;95;191;;;
                                  -222441;1;0;false;false;;;;;;
                                  -222442;4;0;false;false;127;127;159;;;
                                  -222446;3;0;false;false;;;;;;
                                  -222449;1;0;false;false;63;95;191;;;
                                  -222450;4;0;false;false;;;;;;
                                  -222454;4;0;false;false;127;127;159;;;
                                  -222458;21;0;false;false;63;95;191;;;
                                  -222479;1;0;false;false;;;;;;
                                  -222480;1;0;false;false;127;127;159;;;
                                  -222481;1;0;false;false;;;;;;
                                  -222482;2;0;false;false;63;95;191;;;
                                  -222484;1;0;false;false;;;;;;
                                  -222485;3;0;false;false;63;95;191;;;
                                  -222488;1;0;false;false;;;;;;
                                  -222489;8;0;false;false;63;95;191;;;
                                  -222497;1;0;false;false;;;;;;
                                  -222498;3;0;false;false;63;95;191;;;
                                  -222501;1;0;false;false;;;;;;
                                  -222502;4;0;false;false;63;95;191;;;
                                  -222506;1;0;false;false;;;;;;
                                  -222507;8;0;false;false;63;95;191;;;
                                  -222515;5;0;false;false;127;127;159;;;
                                  -222520;3;0;false;false;;;;;;
                                  -222523;1;0;false;false;63;95;191;;;
                                  -222524;4;0;false;false;;;;;;
                                  -222528;4;0;false;false;127;127;159;;;
                                  -222532;27;0;false;false;63;95;191;;;
                                  -222559;1;0;false;false;;;;;;
                                  -222560;1;0;false;false;127;127;159;;;
                                  -222561;1;0;false;false;;;;;;
                                  -222562;2;0;false;false;63;95;191;;;
                                  -222564;1;0;false;false;;;;;;
                                  -222565;3;0;false;false;63;95;191;;;
                                  -222568;1;0;false;false;;;;;;
                                  -222569;6;0;false;false;63;95;191;;;
                                  -222575;1;0;false;false;;;;;;
                                  -222576;4;0;false;false;63;95;191;;;
                                  -222580;1;0;false;false;;;;;;
                                  -222581;3;0;false;false;63;95;191;;;
                                  -222584;1;0;false;false;;;;;;
                                  -222585;6;0;false;false;63;95;191;;;
                                  -222591;1;0;false;false;;;;;;
                                  -222592;4;0;false;false;63;95;191;;;
                                  -222596;1;0;false;false;;;;;;
                                  -222597;7;0;false;false;63;95;191;;;
                                  -222604;1;0;false;false;;;;;;
                                  -222605;3;0;false;false;63;95;191;;;
                                  -222608;1;0;false;false;;;;;;
                                  -222609;8;0;false;false;63;95;191;;;
                                  -222617;5;0;false;false;127;127;159;;;
                                  -222622;3;0;false;false;;;;;;
                                  -222625;1;0;false;false;63;95;191;;;
                                  -222626;1;0;false;false;;;;;;
                                  -222627;5;0;false;false;127;127;159;;;
                                  -222632;3;0;false;false;;;;;;
                                  -222635;2;0;false;false;63;95;191;;;
                                  -222637;2;0;false;false;;;;;;
                                  -222639;6;1;false;false;127;0;85;;;
                                  -222645;1;0;false;false;;;;;;
                                  -222646;4;1;false;false;127;0;85;;;
                                  -222650;1;0;false;false;;;;;;
                                  -222651;11;0;false;false;0;0;0;;;
                                  -222662;1;0;false;false;;;;;;
                                  -222663;1;0;false;false;0;0;0;;;
                                  -222664;3;0;false;false;;;;;;
                                  -222667;14;0;false;false;0;0;0;;;
                                  -222681;3;0;false;false;;;;;;
                                  -222684;15;0;false;false;0;0;0;;;
                                  -222699;1;0;false;false;;;;;;
                                  -222700;28;0;false;false;0;0;0;;;
                                  -222728;2;0;false;false;;;;;;
                                  -222730;1;0;false;false;0;0;0;;;
                                  -222731;2;0;false;false;;;;;;
                                  -222733;3;0;false;false;63;95;191;;;
                                  -222736;3;0;false;false;;;;;;
                                  -222739;1;0;false;false;63;95;191;;;
                                  -222740;1;0;false;false;;;;;;
                                  -222741;16;0;false;false;63;95;191;;;
                                  -222757;1;0;false;false;;;;;;
                                  -222758;4;0;false;false;63;95;191;;;
                                  -222762;1;0;false;false;;;;;;
                                  -222763;2;0;false;false;63;95;191;;;
                                  -222765;1;0;false;false;;;;;;
                                  -222766;7;0;false;false;63;95;191;;;
                                  -222773;1;0;false;false;;;;;;
                                  -222774;2;0;false;false;63;95;191;;;
                                  -222776;1;0;false;false;;;;;;
                                  -222777;3;0;false;false;63;95;191;;;
                                  -222780;1;0;false;false;;;;;;
                                  -222781;6;0;false;false;63;95;191;;;
                                  -222787;3;0;false;false;;;;;;
                                  -222790;1;0;false;false;63;95;191;;;
                                  -222791;1;0;false;false;;;;;;
                                  -222792;3;0;false;false;127;127;159;;;
                                  -222795;3;0;false;false;;;;;;
                                  -222798;1;0;false;false;63;95;191;;;
                                  -222799;3;0;false;false;;;;;;
                                  -222802;1;0;false;false;63;95;191;;;
                                  -222803;1;0;false;false;;;;;;
                                  -222804;7;1;false;false;127;159;191;;;
                                  -222811;5;0;false;false;63;95;191;;;
                                  -222816;1;0;false;false;;;;;;
                                  -222817;3;0;false;false;63;95;191;;;
                                  -222820;1;0;false;false;;;;;;
                                  -222821;4;0;false;false;63;95;191;;;
                                  -222825;1;0;false;false;;;;;;
                                  -222826;6;0;false;false;63;95;191;;;
                                  -222832;1;0;false;false;;;;;;
                                  -222833;6;0;false;false;63;95;191;;;
                                  -222839;4;0;false;false;;;;;;
                                  -222843;1;0;false;false;63;95;191;;;
                                  -222844;1;0;false;false;;;;;;
                                  -222845;4;0;false;false;127;127;159;;;
                                  -222849;3;0;false;false;;;;;;
                                  -222852;1;0;false;false;63;95;191;;;
                                  -222853;1;0;false;false;;;;;;
                                  -222854;4;0;false;false;127;127;159;;;
                                  -222858;11;0;false;false;63;95;191;;;
                                  -222869;1;0;false;false;;;;;;
                                  -222870;1;0;false;false;127;127;159;;;
                                  -222871;1;0;false;false;;;;;;
                                  -222872;3;0;false;false;63;95;191;;;
                                  -222875;1;0;false;false;;;;;;
                                  -222876;7;0;false;false;63;95;191;;;
                                  -222883;1;0;false;false;;;;;;
                                  -222884;5;0;false;false;63;95;191;;;
                                  -222889;1;0;false;false;;;;;;
                                  -222890;6;0;false;false;63;95;191;;;
                                  -222896;5;0;false;false;127;127;159;;;
                                  -222901;3;0;false;false;;;;;;
                                  -222904;1;0;false;false;63;95;191;;;
                                  -222905;2;0;false;false;;;;;;
                                  -222907;4;0;false;false;127;127;159;;;
                                  -222911;9;0;false;false;63;95;191;;;
                                  -222920;1;0;false;false;;;;;;
                                  -222921;1;0;false;false;127;127;159;;;
                                  -222922;1;0;false;false;;;;;;
                                  -222923;3;0;false;false;63;95;191;;;
                                  -222926;1;0;false;false;;;;;;
                                  -222927;7;0;false;false;63;95;191;;;
                                  -222934;1;0;false;false;;;;;;
                                  -222935;3;0;false;false;63;95;191;;;
                                  -222938;1;0;false;false;;;;;;
                                  -222939;6;0;false;false;63;95;191;;;
                                  -222945;5;0;false;false;127;127;159;;;
                                  -222950;3;0;false;false;;;;;;
                                  -222953;1;0;false;false;63;95;191;;;
                                  -222954;2;0;false;false;;;;;;
                                  -222956;4;0;false;false;127;127;159;;;
                                  -222960;10;0;false;false;63;95;191;;;
                                  -222970;1;0;false;false;;;;;;
                                  -222971;1;0;false;false;127;127;159;;;
                                  -222972;1;0;false;false;;;;;;
                                  -222973;3;0;false;false;63;95;191;;;
                                  -222976;1;0;false;false;;;;;;
                                  -222977;3;0;false;false;63;95;191;;;
                                  -222980;1;0;false;false;;;;;;
                                  -222981;4;0;false;false;63;95;191;;;
                                  -222985;5;0;false;false;127;127;159;;;
                                  -222990;3;0;false;false;;;;;;
                                  -222993;1;0;false;false;63;95;191;;;
                                  -222994;1;0;false;false;;;;;;
                                  -222995;5;0;false;false;127;127;159;;;
                                  -223000;3;0;false;false;;;;;;
                                  -223003;2;0;false;false;63;95;191;;;
                                  -223005;2;0;false;false;;;;;;
                                  -223007;4;1;false;false;127;0;85;;;
                                  -223011;1;0;false;false;;;;;;
                                  -223012;18;0;false;false;0;0;0;;;
                                  -223030;1;0;false;false;;;;;;
                                  -223031;6;0;false;false;0;0;0;;;
                                  -223037;1;0;false;false;;;;;;
                                  -223038;1;0;false;false;0;0;0;;;
                                  -223039;3;0;false;false;;;;;;
                                  -223042;2;1;false;false;127;0;85;;;
                                  -223044;1;0;false;false;;;;;;
                                  -223045;10;0;false;false;0;0;0;;;
                                  -223055;1;0;false;false;;;;;;
                                  -223056;1;0;false;false;0;0;0;;;
                                  -223057;4;0;false;false;;;;;;
                                  -223061;20;0;false;false;0;0;0;;;
                                  -223081;1;0;false;false;;;;;;
                                  -223082;4;1;false;false;127;0;85;;;
                                  -223086;2;0;false;false;0;0;0;;;
                                  -223088;3;0;false;false;;;;;;
                                  -223091;1;0;false;false;0;0;0;;;
                                  -223092;2;0;false;false;;;;;;
                                  -223094;1;0;false;false;0;0;0;;;
                                  -223095;2;0;false;false;;;;;;
                                  -223097;4;1;false;false;127;0;85;;;
                                  -223101;1;0;false;false;;;;;;
                                  -223102;21;0;false;false;0;0;0;;;
                                  -223123;1;0;false;false;;;;;;
                                  -223124;6;0;false;false;0;0;0;;;
                                  -223130;1;0;false;false;;;;;;
                                  -223131;1;0;false;false;0;0;0;;;
                                  -223132;3;0;false;false;;;;;;
                                  -223135;10;0;false;false;0;0;0;;;
                                  -223145;1;0;false;false;;;;;;
                                  -223146;10;0;false;false;0;0;0;;;
                                  -223156;1;0;false;false;;;;;;
                                  -223157;1;0;false;false;0;0;0;;;
                                  -223158;1;0;false;false;;;;;;
                                  -223159;16;0;false;false;0;0;0;;;
                                  -223175;3;0;false;false;;;;;;
                                  -223178;2;1;false;false;127;0;85;;;
                                  -223180;1;0;false;false;;;;;;
                                  -223181;20;0;false;false;0;0;0;;;
                                  -223201;1;0;false;false;;;;;;
                                  -223202;2;0;false;false;0;0;0;;;
                                  -223204;1;0;false;false;;;;;;
                                  -223205;2;0;false;false;0;0;0;;;
                                  -223207;1;0;false;false;;;;;;
                                  -223208;1;0;false;false;0;0;0;;;
                                  -223209;4;0;false;false;;;;;;
                                  -223213;39;0;false;false;0;0;0;;;
                                  -223252;1;0;false;false;;;;;;
                                  -223253;12;0;false;false;0;0;0;;;
                                  -223265;1;0;false;false;;;;;;
                                  -223266;9;0;false;false;0;0;0;;;
                                  -223275;1;0;false;false;;;;;;
                                  -223276;1;0;false;false;0;0;0;;;
                                  -223277;1;0;false;false;;;;;;
                                  -223278;13;0;false;false;0;0;0;;;
                                  -223291;3;0;false;false;;;;;;
                                  -223294;1;0;false;false;0;0;0;;;
                                  -223295;1;0;false;false;;;;;;
                                  -223296;4;1;false;false;127;0;85;;;
                                  -223300;1;0;false;false;;;;;;
                                  -223301;1;0;false;false;0;0;0;;;
                                  -223302;4;0;false;false;;;;;;
                                  -223306;2;1;false;false;127;0;85;;;
                                  -223308;1;0;false;false;;;;;;
                                  -223309;12;0;false;false;0;0;0;;;
                                  -223321;1;0;false;false;;;;;;
                                  -223322;2;0;false;false;0;0;0;;;
                                  -223324;1;0;false;false;;;;;;
                                  -223325;10;0;false;false;0;0;0;;;
                                  -223335;1;0;false;false;;;;;;
                                  -223336;1;0;false;false;0;0;0;;;
                                  -223337;5;0;false;false;;;;;;
                                  -223342;39;0;false;false;0;0;0;;;
                                  -223381;1;0;false;false;;;;;;
                                  -223382;12;0;false;false;0;0;0;;;
                                  -223394;1;0;false;false;;;;;;
                                  -223395;21;0;false;false;0;0;0;;;
                                  -223416;4;0;false;false;;;;;;
                                  -223420;1;0;false;false;0;0;0;;;
                                  -223421;1;0;false;false;;;;;;
                                  -223422;4;1;false;false;127;0;85;;;
                                  -223426;1;0;false;false;;;;;;
                                  -223427;1;0;false;false;0;0;0;;;
                                  -223428;5;0;false;false;;;;;;
                                  -223433;39;0;false;false;0;0;0;;;
                                  -223472;1;0;false;false;;;;;;
                                  -223473;12;0;false;false;0;0;0;;;
                                  -223485;1;0;false;false;;;;;;
                                  -223486;9;0;false;false;0;0;0;;;
                                  -223495;1;0;false;false;;;;;;
                                  -223496;1;0;false;false;0;0;0;;;
                                  -223497;1;0;false;false;;;;;;
                                  -223498;13;0;false;false;0;0;0;;;
                                  -223511;5;0;false;false;;;;;;
                                  -223516;39;0;false;false;0;0;0;;;
                                  -223555;1;0;false;false;;;;;;
                                  -223556;12;0;false;false;0;0;0;;;
                                  -223568;1;0;false;false;;;;;;
                                  -223569;21;0;false;false;0;0;0;;;
                                  -223590;5;0;false;false;;;;;;
                                  -223595;1;0;false;false;0;0;0;;;
                                  -223596;3;0;false;false;;;;;;
                                  -223599;1;0;false;false;0;0;0;;;
                                  -223600;3;0;false;false;;;;;;
                                  -223603;27;0;false;false;0;0;0;;;
                                  -223630;1;0;false;false;;;;;;
                                  -223631;7;0;false;false;0;0;0;;;
                                  -223638;2;0;false;false;;;;;;
                                  -223640;1;0;false;false;0;0;0;;;
                                  -223641;2;0;false;false;;;;;;
                                  -223643;3;0;false;false;63;95;191;;;
                                  -223646;3;0;false;false;;;;;;
                                  -223649;1;0;false;false;63;95;191;;;
                                  -223650;1;0;false;false;;;;;;
                                  -223651;5;0;false;false;63;95;191;;;
                                  -223656;1;0;false;false;;;;;;
                                  -223657;3;0;false;false;63;95;191;;;
                                  -223660;1;0;false;false;;;;;;
                                  -223661;9;0;false;false;63;95;191;;;
                                  -223670;1;0;false;false;;;;;;
                                  -223671;9;0;false;false;63;95;191;;;
                                  -223680;1;0;false;false;;;;;;
                                  -223681;6;0;false;false;63;95;191;;;
                                  -223687;3;0;false;false;;;;;;
                                  -223690;2;0;false;false;63;95;191;;;
                                  -223692;2;0;false;false;;;;;;
                                  -223694;4;1;false;false;127;0;85;;;
                                  -223698;1;0;false;false;;;;;;
                                  -223699;20;0;false;false;0;0;0;;;
                                  -223719;1;0;false;false;;;;;;
                                  -223720;1;0;false;false;0;0;0;;;
                                  -223721;3;0;false;false;;;;;;
                                  -223724;39;0;false;false;0;0;0;;;
                                  -223763;3;0;false;false;;;;;;
                                  -223766;5;0;false;false;0;0;0;;;
                                  -223771;1;0;false;false;;;;;;
                                  -223772;5;0;false;false;0;0;0;;;
                                  -223777;1;0;false;false;;;;;;
                                  -223778;1;0;false;false;0;0;0;;;
                                  -223779;1;0;false;false;;;;;;
                                  -223780;3;1;false;false;127;0;85;;;
                                  -223783;1;0;false;false;;;;;;
                                  -223784;8;0;false;false;0;0;0;;;
                                  -223792;3;0;false;false;;;;;;
                                  -223795;7;0;false;false;0;0;0;;;
                                  -223802;1;0;false;false;;;;;;
                                  -223803;1;0;false;false;0;0;0;;;
                                  -223804;1;0;false;false;;;;;;
                                  -223805;12;0;false;false;0;0;0;;;
                                  -223817;3;0;false;false;;;;;;
                                  -223820;7;0;false;false;0;0;0;;;
                                  -223827;1;0;false;false;;;;;;
                                  -223828;1;0;false;false;0;0;0;;;
                                  -223829;1;0;false;false;;;;;;
                                  -223830;12;0;false;false;0;0;0;;;
                                  -223842;3;0;false;false;;;;;;
                                  -223845;30;0;false;false;0;0;0;;;
                                  -223875;1;0;false;false;;;;;;
                                  -223876;7;0;false;false;0;0;0;;;
                                  -223883;2;0;false;false;;;;;;
                                  -223885;1;0;false;false;0;0;0;;;
                                  -223886;2;0;false;false;;;;;;
                                  -223888;3;0;false;false;63;95;191;;;
                                  -223891;3;0;false;false;;;;;;
                                  -223894;1;0;false;false;63;95;191;;;
                                  -223895;1;0;false;false;;;;;;
                                  -223896;4;0;false;false;63;95;191;;;
                                  -223900;1;0;false;false;;;;;;
                                  -223901;7;0;false;false;63;95;191;;;
                                  -223908;1;0;false;false;;;;;;
                                  -223909;3;0;false;false;63;95;191;;;
                                  -223912;1;0;false;false;;;;;;
                                  -223913;6;0;false;false;63;95;191;;;
                                  -223919;1;0;false;false;;;;;;
                                  -223920;5;0;false;false;63;95;191;;;
                                  -223925;1;0;false;false;;;;;;
                                  -223926;6;0;false;false;63;95;191;;;
                                  -223932;3;0;false;false;;;;;;
                                  -223935;1;0;false;false;63;95;191;;;
                                  -223936;1;0;false;false;;;;;;
                                  -223937;4;0;false;false;63;95;191;;;
                                  -223941;1;0;false;false;;;;;;
                                  -223942;9;0;false;false;63;95;191;;;
                                  -223951;1;0;false;false;;;;;;
                                  -223952;3;0;false;false;63;95;191;;;
                                  -223955;1;0;false;false;;;;;;
                                  -223956;8;0;false;false;63;95;191;;;
                                  -223964;1;0;false;false;;;;;;
                                  -223965;5;0;false;false;63;95;191;;;
                                  -223970;1;0;false;false;;;;;;
                                  -223971;3;0;false;false;63;95;191;;;
                                  -223974;1;0;false;false;;;;;;
                                  -223975;9;0;false;false;63;95;191;;;
                                  -223984;3;0;false;false;;;;;;
                                  -223987;1;0;false;false;63;95;191;;;
                                  -223988;1;0;false;false;;;;;;
                                  -223989;3;0;false;false;127;127;159;;;
                                  -223992;3;0;false;false;;;;;;
                                  -223995;1;0;false;false;63;95;191;;;
                                  -223996;3;0;false;false;;;;;;
                                  -223999;1;0;false;false;63;95;191;;;
                                  -224000;1;0;false;false;;;;;;
                                  -224001;7;1;false;false;127;159;191;;;
                                  -224008;4;0;false;false;63;95;191;;;
                                  -224012;1;0;false;false;;;;;;
                                  -224013;11;0;false;false;63;95;191;;;
                                  -224024;1;0;false;false;;;;;;
                                  -224025;5;0;false;false;63;95;191;;;
                                  -224030;1;0;false;false;;;;;;
                                  -224031;6;0;false;false;63;95;191;;;
                                  -224037;1;0;false;false;;;;;;
                                  -224038;12;0;false;false;63;95;191;;;
                                  -224050;1;0;false;false;;;;;;
                                  -224051;4;0;false;false;63;95;191;;;
                                  -224055;1;0;false;false;;;;;;
                                  -224056;3;0;false;false;63;95;191;;;
                                  -224059;1;0;false;false;;;;;;
                                  -224060;4;0;false;false;63;95;191;;;
                                  -224064;1;0;false;false;;;;;;
                                  -224065;5;0;false;false;63;95;191;;;
                                  -224070;3;0;false;false;;;;;;
                                  -224073;1;0;false;false;63;95;191;;;
                                  -224074;1;0;false;false;;;;;;
                                  -224075;7;1;false;false;127;159;191;;;
                                  -224082;3;0;false;false;63;95;191;;;
                                  -224085;3;0;false;false;;;;;;
                                  -224088;2;0;false;false;63;95;191;;;
                                  -224090;2;0;false;false;;;;;;
                                  -224092;6;1;false;false;127;0;85;;;
                                  -224098;1;0;false;false;;;;;;
                                  -224099;4;1;false;false;127;0;85;;;
                                  -224103;1;0;false;false;;;;;;
                                  -224104;12;0;false;false;0;0;0;;;
                                  -224116;7;1;false;false;127;0;85;;;
                                  -224123;1;0;false;false;;;;;;
                                  -224124;5;0;false;false;0;0;0;;;
                                  -224129;1;0;false;false;;;;;;
                                  -224130;1;0;false;false;0;0;0;;;
                                  -224131;3;0;false;false;;;;;;
                                  -224134;14;0;false;false;0;0;0;;;
                                  -224148;3;0;false;false;;;;;;
                                  -224151;2;1;false;false;127;0;85;;;
                                  -224153;1;0;false;false;;;;;;
                                  -224154;12;0;false;false;0;0;0;;;
                                  -224166;1;0;false;false;;;;;;
                                  -224167;1;0;false;false;0;0;0;;;
                                  -224168;1;0;false;false;;;;;;
                                  -224169;11;0;false;false;0;0;0;;;
                                  -224180;1;0;false;false;;;;;;
                                  -224181;2;0;false;false;0;0;0;;;
                                  -224183;1;0;false;false;;;;;;
                                  -224184;2;0;false;false;0;0;0;;;
                                  -224186;1;0;false;false;;;;;;
                                  -224187;6;1;false;false;127;0;85;;;
                                  -224193;1;0;false;false;0;0;0;;;
                                  -224194;6;0;false;false;;;;;;
                                  -224200;2;1;false;false;127;0;85;;;
                                  -224202;1;0;false;false;;;;;;
                                  -224203;5;0;false;false;0;0;0;;;
                                  -224208;1;0;false;false;;;;;;
                                  -224209;2;0;false;false;0;0;0;;;
                                  -224211;1;0;false;false;;;;;;
                                  -224212;9;0;false;false;0;0;0;;;
                                  -224221;1;0;false;false;;;;;;
                                  -224222;1;0;false;false;0;0;0;;;
                                  -224223;4;0;false;false;;;;;;
                                  -224227;9;0;false;false;0;0;0;;;
                                  -224236;1;0;false;false;;;;;;
                                  -224237;13;0;false;false;0;0;0;;;
                                  -224250;1;0;false;false;;;;;;
                                  -224251;1;0;false;false;0;0;0;;;
                                  -224252;1;0;false;false;;;;;;
                                  -224253;19;0;false;false;0;0;0;;;
                                  -224272;8;0;false;false;;;;;;
                                  -224280;8;0;false;false;0;0;0;;;
                                  -224288;1;0;false;false;;;;;;
                                  -224289;1;0;false;false;0;0;0;;;
                                  -224290;1;0;false;false;;;;;;
                                  -224291;5;0;false;false;0;0;0;;;
                                  -224296;4;0;false;false;;;;;;
                                  -224300;2;1;false;false;127;0;85;;;
                                  -224302;1;0;false;false;;;;;;
                                  -224303;10;0;false;false;0;0;0;;;
                                  -224313;1;0;false;false;;;;;;
                                  -224314;1;0;false;false;0;0;0;;;
                                  -224315;5;0;false;false;;;;;;
                                  -224320;14;0;false;false;0;0;0;;;
                                  -224334;1;0;false;false;;;;;;
                                  -224335;1;0;false;false;0;0;0;;;
                                  -224336;1;0;false;false;;;;;;
                                  -224337;8;0;false;false;0;0;0;;;
                                  -224345;5;0;false;false;;;;;;
                                  -224350;7;0;false;false;0;0;0;;;
                                  -224357;1;0;false;false;;;;;;
                                  -224358;1;0;false;false;0;0;0;;;
                                  -224359;1;0;false;false;;;;;;
                                  -224360;3;1;false;false;127;0;85;;;
                                  -224363;1;0;false;false;;;;;;
                                  -224364;24;0;false;false;0;0;0;;;
                                  -224388;1;0;false;false;;;;;;
                                  -224389;16;0;false;false;0;0;0;;;
                                  -224405;4;0;false;false;;;;;;
                                  -224409;1;0;false;false;0;0;0;;;
                                  -224410;4;0;false;false;;;;;;
                                  -224414;4;1;false;false;127;0;85;;;
                                  -224418;1;0;false;false;;;;;;
                                  -224419;1;0;false;false;0;0;0;;;
                                  -224420;5;0;false;false;;;;;;
                                  -224425;7;0;false;false;0;0;0;;;
                                  -224432;1;0;false;false;;;;;;
                                  -224433;1;0;false;false;0;0;0;;;
                                  -224434;1;0;false;false;;;;;;
                                  -224435;15;0;false;false;0;0;0;;;
                                  -224450;4;0;false;false;;;;;;
                                  -224454;1;0;false;false;0;0;0;;;
                                  -224455;4;0;false;false;;;;;;
                                  -224459;24;0;false;false;0;0;0;;;
                                  -224483;4;0;false;false;;;;;;
                                  -224487;22;0;false;false;0;0;0;;;
                                  -224509;1;0;false;false;;;;;;
                                  -224510;1;0;false;false;0;0;0;;;
                                  -224511;1;0;false;false;;;;;;
                                  -224512;2;0;false;false;0;0;0;;;
                                  -224514;4;0;false;false;;;;;;
                                  -224518;2;1;false;false;127;0;85;;;
                                  -224520;1;0;false;false;;;;;;
                                  -224521;14;0;false;false;0;0;0;;;
                                  -224535;1;0;false;false;;;;;;
                                  -224536;2;0;false;false;0;0;0;;;
                                  -224538;1;0;false;false;;;;;;
                                  -224539;4;1;false;false;127;0;85;;;
                                  -224543;1;0;false;false;0;0;0;;;
                                  -224544;1;0;false;false;;;;;;
                                  -224545;1;0;false;false;0;0;0;;;
                                  -224546;5;0;false;false;;;;;;
                                  -224551;36;0;false;false;0;0;0;;;
                                  -224587;4;0;false;false;;;;;;
                                  -224591;1;0;false;false;0;0;0;;;
                                  -224592;4;0;false;false;;;;;;
                                  -224596;16;0;false;false;0;0;0;;;
                                  -224612;4;0;false;false;;;;;;
                                  -224616;19;0;false;false;0;0;0;;;
                                  -224635;4;0;false;false;;;;;;
                                  -224639;5;1;false;false;127;0;85;;;
                                  -224644;10;0;false;false;0;0;0;;;
                                  -224654;5;0;false;false;;;;;;
                                  -224659;1;0;false;false;0;0;0;;;
                                  -224660;2;0;false;false;;;;;;
                                  -224662;1;0;false;false;0;0;0;;;
                                  -224663;2;0;false;false;;;;;;
                                  -224665;3;0;false;false;63;95;191;;;
                                  -224668;3;0;false;false;;;;;;
                                  -224671;1;0;false;false;63;95;191;;;
                                  -224672;1;0;false;false;;;;;;
                                  -224673;4;0;false;false;63;95;191;;;
                                  -224677;1;0;false;false;;;;;;
                                  -224678;3;0;false;false;63;95;191;;;
                                  -224681;1;0;false;false;;;;;;
                                  -224682;10;0;false;false;63;95;191;;;
                                  -224692;1;0;false;false;;;;;;
                                  -224693;6;0;false;false;63;95;191;;;
                                  -224699;2;0;false;false;;;;;;
                                  -224701;3;0;false;false;63;95;191;;;
                                  -224704;1;0;false;false;;;;;;
                                  -224705;3;0;false;false;63;95;191;;;
                                  -224708;1;0;false;false;;;;;;
                                  -224709;7;0;false;false;63;95;191;;;
                                  -224716;1;0;false;false;;;;;;
                                  -224717;6;0;false;false;63;95;191;;;
                                  -224723;1;0;false;false;;;;;;
                                  -224724;3;0;false;false;63;95;191;;;
                                  -224727;1;0;false;false;;;;;;
                                  -224728;9;0;false;false;63;95;191;;;
                                  -224737;3;0;false;false;;;;;;
                                  -224740;1;0;false;false;63;95;191;;;
                                  -224741;4;0;false;false;;;;;;
                                  -224745;1;0;false;false;63;95;191;;;
                                  -224746;1;0;false;false;;;;;;
                                  -224747;4;0;false;false;127;127;159;;;
                                  -224751;3;0;false;false;;;;;;
                                  -224754;1;0;false;false;63;95;191;;;
                                  -224755;1;0;false;false;;;;;;
                                  -224756;7;1;false;false;127;159;191;;;
                                  -224763;5;0;false;false;63;95;191;;;
                                  -224768;1;0;false;false;;;;;;
                                  -224769;3;0;false;false;63;95;191;;;
                                  -224772;1;0;false;false;;;;;;
                                  -224773;3;0;false;false;63;95;191;;;
                                  -224776;1;0;false;false;;;;;;
                                  -224777;5;0;false;false;63;95;191;;;
                                  -224782;1;0;false;false;;;;;;
                                  -224783;3;0;false;false;63;95;191;;;
                                  -224786;1;0;false;false;;;;;;
                                  -224787;3;0;false;false;63;95;191;;;
                                  -224790;1;0;false;false;;;;;;
                                  -224791;8;0;false;false;63;95;191;;;
                                  -224799;3;0;false;false;;;;;;
                                  -224802;1;0;false;false;63;95;191;;;
                                  -224803;3;0;false;false;;;;;;
                                  -224806;1;0;false;false;63;95;191;;;
                                  -224807;1;0;false;false;;;;;;
                                  -224808;11;1;false;false;127;159;191;;;
                                  -224819;12;0;false;false;63;95;191;;;
                                  -224831;1;0;false;false;;;;;;
                                  -224832;4;0;false;false;127;127;159;;;
                                  -224836;3;0;false;false;;;;;;
                                  -224839;1;0;false;false;63;95;191;;;
                                  -224840;4;0;false;false;;;;;;
                                  -224844;4;0;false;false;127;127;159;;;
                                  -224848;21;0;false;false;63;95;191;;;
                                  -224869;1;0;false;false;;;;;;
                                  -224870;1;0;false;false;127;127;159;;;
                                  -224871;1;0;false;false;;;;;;
                                  -224872;2;0;false;false;63;95;191;;;
                                  -224874;1;0;false;false;;;;;;
                                  -224875;3;0;false;false;63;95;191;;;
                                  -224878;1;0;false;false;;;;;;
                                  -224879;8;0;false;false;63;95;191;;;
                                  -224887;1;0;false;false;;;;;;
                                  -224888;3;0;false;false;63;95;191;;;
                                  -224891;1;0;false;false;;;;;;
                                  -224892;4;0;false;false;63;95;191;;;
                                  -224896;1;0;false;false;;;;;;
                                  -224897;8;0;false;false;63;95;191;;;
                                  -224905;5;0;false;false;127;127;159;;;
                                  -224910;3;0;false;false;;;;;;
                                  -224913;1;0;false;false;63;95;191;;;
                                  -224914;4;0;false;false;;;;;;
                                  -224918;4;0;false;false;127;127;159;;;
                                  -224922;27;0;false;false;63;95;191;;;
                                  -224949;1;0;false;false;;;;;;
                                  -224950;1;0;false;false;127;127;159;;;
                                  -224951;1;0;false;false;;;;;;
                                  -224952;2;0;false;false;63;95;191;;;
                                  -224954;1;0;false;false;;;;;;
                                  -224955;3;0;false;false;63;95;191;;;
                                  -224958;1;0;false;false;;;;;;
                                  -224959;6;0;false;false;63;95;191;;;
                                  -224965;1;0;false;false;;;;;;
                                  -224966;4;0;false;false;63;95;191;;;
                                  -224970;1;0;false;false;;;;;;
                                  -224971;3;0;false;false;63;95;191;;;
                                  -224974;1;0;false;false;;;;;;
                                  -224975;6;0;false;false;63;95;191;;;
                                  -224981;1;0;false;false;;;;;;
                                  -224982;4;0;false;false;63;95;191;;;
                                  -224986;1;0;false;false;;;;;;
                                  -224987;7;0;false;false;63;95;191;;;
                                  -224994;1;0;false;false;;;;;;
                                  -224995;3;0;false;false;63;95;191;;;
                                  -224998;1;0;false;false;;;;;;
                                  -224999;8;0;false;false;63;95;191;;;
                                  -225007;5;0;false;false;127;127;159;;;
                                  -225012;3;0;false;false;;;;;;
                                  -225015;1;0;false;false;63;95;191;;;
                                  -225016;1;0;false;false;;;;;;
                                  -225017;5;0;false;false;127;127;159;;;
                                  -225022;3;0;false;false;;;;;;
                                  -225025;2;0;false;false;63;95;191;;;
                                  -225027;2;0;false;false;;;;;;
                                  -225029;6;1;false;false;127;0;85;;;
                                  -225035;1;0;false;false;;;;;;
                                  -225036;4;1;false;false;127;0;85;;;
                                  -225040;1;0;false;false;;;;;;
                                  -225041;14;0;false;false;0;0;0;;;
                                  -225055;1;0;false;false;;;;;;
                                  -225056;6;0;false;false;0;0;0;;;
                                  -225062;1;0;false;false;;;;;;
                                  -225063;1;0;false;false;0;0;0;;;
                                  -225064;3;0;false;false;;;;;;
                                  -225067;11;0;false;false;0;0;0;;;
                                  -225078;1;0;false;false;;;;;;
                                  -225079;3;0;false;false;0;0;0;;;
                                  -225082;3;0;false;false;;;;;;
                                  -225085;5;1;false;false;127;0;85;;;
                                  -225090;17;0;false;false;0;0;0;;;
                                  -225107;3;0;false;false;;;;;;
                                  -225110;14;0;false;false;0;0;0;;;
                                  -225124;1;0;false;false;;;;;;
                                  -225125;1;0;false;false;0;0;0;;;
                                  -225126;1;0;false;false;;;;;;
                                  -225127;9;0;false;false;0;0;0;;;
                                  -225136;4;0;false;false;;;;;;
                                  -225140;2;1;false;false;127;0;85;;;
                                  -225142;1;0;false;false;;;;;;
                                  -225143;6;0;false;false;0;0;0;;;
                                  -225149;1;0;false;false;;;;;;
                                  -225150;2;0;false;false;0;0;0;;;
                                  -225152;1;0;false;false;;;;;;
                                  -225153;4;1;false;false;127;0;85;;;
                                  -225157;1;0;false;false;0;0;0;;;
                                  -225158;1;0;false;false;;;;;;
                                  -225159;1;0;false;false;0;0;0;;;
                                  -225160;4;0;false;false;;;;;;
                                  -225164;19;0;false;false;0;0;0;;;
                                  -225183;3;0;false;false;;;;;;
                                  -225186;1;0;false;false;0;0;0;;;
                                  -225187;2;0;false;false;;;;;;
                                  -225189;1;0;false;false;0;0;0;;;
                                  -225190;2;0;false;false;;;;;;
                                  -225192;3;0;false;false;63;95;191;;;
                                  -225195;3;0;false;false;;;;;;
                                  -225198;1;0;false;false;63;95;191;;;
                                  -225199;1;0;false;false;;;;;;
                                  -225200;5;1;false;false;127;159;191;;;
                                  -225205;45;0;false;false;63;95;191;;;
                                  -225250;3;0;false;false;;;;;;
                                  -225253;2;0;false;false;63;95;191;;;
                                  -225255;2;0;false;false;;;;;;
                                  -225257;6;1;false;false;127;0;85;;;
                                  -225263;1;0;false;false;;;;;;
                                  -225264;4;1;false;false;127;0;85;;;
                                  -225268;1;0;false;false;;;;;;
                                  -225269;19;0;false;false;0;0;0;;;
                                  -225288;1;0;false;false;;;;;;
                                  -225289;6;0;false;false;0;0;0;;;
                                  -225295;1;0;false;false;;;;;;
                                  -225296;1;0;false;false;0;0;0;;;
                                  -225297;3;0;false;false;;;;;;
                                  -225300;14;0;false;false;0;0;0;;;
                                  -225314;3;0;false;false;;;;;;
                                  -225317;10;0;false;false;0;0;0;;;
                                  -225327;1;0;false;false;;;;;;
                                  -225328;1;0;false;false;0;0;0;;;
                                  -225329;1;0;false;false;;;;;;
                                  -225330;6;0;false;false;0;0;0;;;
                                  -225336;3;0;false;false;;;;;;
                                  -225339;5;1;false;false;127;0;85;;;
                                  -225344;32;0;false;false;0;0;0;;;
                                  -225376;3;0;false;false;;;;;;
                                  -225379;9;0;false;false;0;0;0;;;
                                  -225388;2;0;false;false;;;;;;
                                  -225390;1;0;false;false;0;0;0;;;
                                  -225391;2;0;false;false;;;;;;
                                  -225393;3;0;false;false;63;95;191;;;
                                  -225396;3;0;false;false;;;;;;
                                  -225399;1;0;false;false;63;95;191;;;
                                  -225400;1;0;false;false;;;;;;
                                  -225401;4;0;false;false;63;95;191;;;
                                  -225405;1;0;false;false;;;;;;
                                  -225406;3;0;false;false;63;95;191;;;
                                  -225409;1;0;false;false;;;;;;
                                  -225410;4;0;false;false;63;95;191;;;
                                  -225414;1;0;false;false;;;;;;
                                  -225415;8;0;false;false;63;95;191;;;
                                  -225423;1;0;false;false;;;;;;
                                  -225424;5;0;false;false;63;95;191;;;
                                  -225429;2;0;false;false;;;;;;
                                  -225431;4;0;false;false;63;95;191;;;
                                  -225435;1;0;false;false;;;;;;
                                  -225436;4;0;false;false;63;95;191;;;
                                  -225440;1;0;false;false;;;;;;
                                  -225441;3;0;false;false;63;95;191;;;
                                  -225444;1;0;false;false;;;;;;
                                  -225445;4;0;false;false;63;95;191;;;
                                  -225449;1;0;false;false;;;;;;
                                  -225450;4;0;false;false;63;95;191;;;
                                  -225454;1;0;false;false;;;;;;
                                  -225455;7;0;false;false;63;95;191;;;
                                  -225462;3;0;false;false;;;;;;
                                  -225465;1;0;false;false;63;95;191;;;
                                  -225466;1;0;false;false;;;;;;
                                  -225467;9;0;false;false;63;95;191;;;
                                  -225476;1;0;false;false;;;;;;
                                  -225477;2;0;false;false;63;95;191;;;
                                  -225479;1;0;false;false;;;;;;
                                  -225480;7;0;false;false;63;95;191;;;
                                  -225487;1;0;false;false;;;;;;
                                  -225488;2;0;false;false;63;95;191;;;
                                  -225490;1;0;false;false;;;;;;
                                  -225491;8;0;false;false;63;95;191;;;
                                  -225499;1;0;false;false;;;;;;
                                  -225500;2;0;false;false;63;95;191;;;
                                  -225502;1;0;false;false;;;;;;
                                  -225503;4;0;false;false;63;95;191;;;
                                  -225507;1;0;false;false;;;;;;
                                  -225508;4;0;false;false;63;95;191;;;
                                  -225512;1;0;false;false;;;;;;
                                  -225513;3;0;false;false;63;95;191;;;
                                  -225516;1;0;false;false;;;;;;
                                  -225517;3;0;false;false;63;95;191;;;
                                  -225520;1;0;false;false;;;;;;
                                  -225521;4;0;false;false;63;95;191;;;
                                  -225525;3;0;false;false;;;;;;
                                  -225528;1;0;false;false;63;95;191;;;
                                  -225529;1;0;false;false;;;;;;
                                  -225530;6;0;false;false;63;95;191;;;
                                  -225536;3;0;false;false;;;;;;
                                  -225539;1;0;false;false;63;95;191;;;
                                  -225540;3;0;false;false;;;;;;
                                  -225543;1;0;false;false;63;95;191;;;
                                  -225544;1;0;false;false;;;;;;
                                  -225545;7;1;false;false;127;159;191;;;
                                  -225552;4;0;false;false;63;95;191;;;
                                  -225556;1;0;false;false;;;;;;
                                  -225557;3;0;false;false;63;95;191;;;
                                  -225560;1;0;false;false;;;;;;
                                  -225561;3;0;false;false;63;95;191;;;
                                  -225564;1;0;false;false;;;;;;
                                  -225565;8;0;false;false;63;95;191;;;
                                  -225573;1;0;false;false;;;;;;
                                  -225574;4;0;false;false;63;95;191;;;
                                  -225578;3;0;false;false;;;;;;
                                  -225581;1;0;false;false;63;95;191;;;
                                  -225582;1;0;false;false;;;;;;
                                  -225583;11;1;false;false;127;159;191;;;
                                  -225594;12;0;false;false;63;95;191;;;
                                  -225606;1;0;false;false;;;;;;
                                  -225607;4;0;false;false;127;127;159;;;
                                  -225611;3;0;false;false;;;;;;
                                  -225614;1;0;false;false;63;95;191;;;
                                  -225615;4;0;false;false;;;;;;
                                  -225619;4;0;false;false;127;127;159;;;
                                  -225623;21;0;false;false;63;95;191;;;
                                  -225644;1;0;false;false;;;;;;
                                  -225645;1;0;false;false;127;127;159;;;
                                  -225646;1;0;false;false;;;;;;
                                  -225647;2;0;false;false;63;95;191;;;
                                  -225649;1;0;false;false;;;;;;
                                  -225650;3;0;false;false;63;95;191;;;
                                  -225653;1;0;false;false;;;;;;
                                  -225654;8;0;false;false;63;95;191;;;
                                  -225662;1;0;false;false;;;;;;
                                  -225663;3;0;false;false;63;95;191;;;
                                  -225666;1;0;false;false;;;;;;
                                  -225667;4;0;false;false;63;95;191;;;
                                  -225671;1;0;false;false;;;;;;
                                  -225672;8;0;false;false;63;95;191;;;
                                  -225680;5;0;false;false;127;127;159;;;
                                  -225685;3;0;false;false;;;;;;
                                  -225688;1;0;false;false;63;95;191;;;
                                  -225689;4;0;false;false;;;;;;
                                  -225693;4;0;false;false;127;127;159;;;
                                  -225697;27;0;false;false;63;95;191;;;
                                  -225724;1;0;false;false;;;;;;
                                  -225725;1;0;false;false;127;127;159;;;
                                  -225726;1;0;false;false;;;;;;
                                  -225727;2;0;false;false;63;95;191;;;
                                  -225729;1;0;false;false;;;;;;
                                  -225730;3;0;false;false;63;95;191;;;
                                  -225733;1;0;false;false;;;;;;
                                  -225734;6;0;false;false;63;95;191;;;
                                  -225740;1;0;false;false;;;;;;
                                  -225741;4;0;false;false;63;95;191;;;
                                  -225745;1;0;false;false;;;;;;
                                  -225746;3;0;false;false;63;95;191;;;
                                  -225749;1;0;false;false;;;;;;
                                  -225750;6;0;false;false;63;95;191;;;
                                  -225756;1;0;false;false;;;;;;
                                  -225757;4;0;false;false;63;95;191;;;
                                  -225761;1;0;false;false;;;;;;
                                  -225762;7;0;false;false;63;95;191;;;
                                  -225769;1;0;false;false;;;;;;
                                  -225770;3;0;false;false;63;95;191;;;
                                  -225773;1;0;false;false;;;;;;
                                  -225774;8;0;false;false;63;95;191;;;
                                  -225782;5;0;false;false;127;127;159;;;
                                  -225787;3;0;false;false;;;;;;
                                  -225790;1;0;false;false;63;95;191;;;
                                  -225791;1;0;false;false;;;;;;
                                  -225792;5;0;false;false;127;127;159;;;
                                  -225797;3;0;false;false;;;;;;
                                  -225800;1;0;false;false;63;95;191;;;
                                  -225801;1;0;false;false;;;;;;
                                  -225802;3;0;false;false;127;127;159;;;
                                  -225805;3;0;false;false;;;;;;
                                  -225808;1;0;false;false;63;95;191;;;
                                  -225809;1;0;false;false;;;;;;
                                  -225810;12;1;false;false;127;159;191;;;
                                  -225822;3;0;false;false;63;95;191;;;
                                  -225825;1;0;false;false;;;;;;
                                  -225826;19;0;false;false;63;95;191;;;
                                  -225845;1;0;false;false;;;;;;
                                  -225846;8;0;false;false;63;95;191;;;
                                  -225854;3;0;false;false;;;;;;
                                  -225857;1;0;false;false;63;95;191;;;
                                  -225858;1;0;false;false;;;;;;
                                  -225859;4;0;false;false;127;127;159;;;
                                  -225863;3;0;false;false;;;;;;
                                  -225866;2;0;false;false;63;95;191;;;
                                  -225868;2;0;false;false;;;;;;
                                  -225870;6;1;false;false;127;0;85;;;
                                  -225876;1;0;false;false;;;;;;
                                  -225877;4;1;false;false;127;0;85;;;
                                  -225881;1;0;false;false;;;;;;
                                  -225882;16;0;false;false;0;0;0;;;
                                  -225898;7;1;false;false;127;0;85;;;
                                  -225905;1;0;false;false;;;;;;
                                  -225906;5;0;false;false;0;0;0;;;
                                  -225911;1;0;false;false;;;;;;
                                  -225912;1;0;false;false;0;0;0;;;
                                  -225913;3;0;false;false;;;;;;
                                  -225916;14;0;false;false;0;0;0;;;
                                  -225930;3;0;false;false;;;;;;
                                  -225933;12;0;false;false;0;0;0;;;
                                  -225945;1;0;false;false;;;;;;
                                  -225946;1;0;false;false;0;0;0;;;
                                  -225947;1;0;false;false;;;;;;
                                  -225948;5;0;false;false;0;0;0;;;
                                  -225953;2;0;false;false;;;;;;
                                  -225955;1;0;false;false;0;0;0;;;
                                  -225956;2;0;false;false;;;;;;
                                  -225958;4;1;false;false;127;0;85;;;
                                  -225962;1;0;false;false;;;;;;
                                  -225963;17;0;false;false;0;0;0;;;
                                  -225980;3;1;false;false;127;0;85;;;
                                  -225983;1;0;false;false;;;;;;
                                  -225984;10;0;false;false;0;0;0;;;
                                  -225994;1;0;false;false;;;;;;
                                  -225995;3;1;false;false;127;0;85;;;
                                  -225998;1;0;false;false;;;;;;
                                  -225999;5;0;false;false;0;0;0;;;
                                  -226004;1;0;false;false;;;;;;
                                  -226005;3;1;false;false;127;0;85;;;
                                  -226008;1;0;false;false;;;;;;
                                  -226009;10;0;false;false;0;0;0;;;
                                  -226019;1;0;false;false;;;;;;
                                  -226020;1;0;false;false;0;0;0;;;
                                  -226021;3;0;false;false;;;;;;
                                  -226024;5;0;false;false;0;0;0;;;
                                  -226029;1;0;false;false;;;;;;
                                  -226030;5;0;false;false;0;0;0;;;
                                  -226035;1;0;false;false;;;;;;
                                  -226036;1;0;false;false;0;0;0;;;
                                  -226037;1;0;false;false;;;;;;
                                  -226038;11;0;false;false;0;0;0;;;
                                  -226049;3;0;false;false;;;;;;
                                  -226052;2;1;false;false;127;0;85;;;
                                  -226054;1;0;false;false;;;;;;
                                  -226055;6;0;false;false;0;0;0;;;
                                  -226061;1;0;false;false;;;;;;
                                  -226062;2;0;false;false;0;0;0;;;
                                  -226064;1;0;false;false;;;;;;
                                  -226065;4;1;false;false;127;0;85;;;
                                  -226069;1;0;false;false;0;0;0;;;
                                  -226070;1;0;false;false;;;;;;
                                  -226071;1;0;false;false;0;0;0;;;
                                  -226072;4;0;false;false;;;;;;
                                  -226076;7;1;false;false;127;0;85;;;
                                  -226083;1;0;false;false;;;;;;
                                  -226084;11;0;false;false;0;0;0;;;
                                  -226095;1;0;false;false;;;;;;
                                  -226096;1;0;false;false;0;0;0;;;
                                  -226097;1;0;false;false;;;;;;
                                  -226098;5;0;false;false;0;0;0;;;
                                  -226103;1;0;false;false;;;;;;
                                  -226104;2;0;false;false;0;0;0;;;
                                  -226106;1;0;false;false;;;;;;
                                  -226107;13;0;false;false;0;0;0;;;
                                  -226120;4;0;false;false;;;;;;
                                  -226124;3;1;false;false;127;0;85;;;
                                  -226127;1;0;false;false;;;;;;
                                  -226128;14;0;false;false;0;0;0;;;
                                  -226142;1;0;false;false;;;;;;
                                  -226143;1;0;false;false;0;0;0;;;
                                  -226144;1;0;false;false;;;;;;
                                  -226145;10;0;false;false;0;0;0;;;
                                  -226155;4;0;false;false;;;;;;
                                  -226159;2;1;false;false;127;0;85;;;
                                  -226161;1;0;false;false;;;;;;
                                  -226162;14;0;false;false;0;0;0;;;
                                  -226176;1;0;false;false;;;;;;
                                  -226177;1;0;false;false;0;0;0;;;
                                  -226178;5;0;false;false;;;;;;
                                  -226183;2;1;false;false;127;0;85;;;
                                  -226185;1;0;false;false;;;;;;
                                  -226186;15;0;false;false;0;0;0;;;
                                  -226201;1;0;false;false;;;;;;
                                  -226202;2;0;false;false;0;0;0;;;
                                  -226204;1;0;false;false;;;;;;
                                  -226205;9;0;false;false;0;0;0;;;
                                  -226214;1;0;false;false;;;;;;
                                  -226215;1;0;false;false;0;0;0;;;
                                  -226216;6;0;false;false;;;;;;
                                  -226222;14;0;false;false;0;0;0;;;
                                  -226236;1;0;false;false;;;;;;
                                  -226237;1;0;false;false;0;0;0;;;
                                  -226238;1;0;false;false;;;;;;
                                  -226239;10;0;false;false;0;0;0;;;
                                  -226249;5;0;false;false;;;;;;
                                  -226254;1;0;false;false;0;0;0;;;
                                  -226255;1;0;false;false;;;;;;
                                  -226256;4;1;false;false;127;0;85;;;
                                  -226260;1;0;false;false;;;;;;
                                  -226261;2;1;false;false;127;0;85;;;
                                  -226263;1;0;false;false;;;;;;
                                  -226264;15;0;false;false;0;0;0;;;
                                  -226279;1;0;false;false;;;;;;
                                  -226280;2;0;false;false;0;0;0;;;
                                  -226282;1;0;false;false;;;;;;
                                  -226283;10;0;false;false;0;0;0;;;
                                  -226293;1;0;false;false;;;;;;
                                  -226294;1;0;false;false;0;0;0;;;
                                  -226295;6;0;false;false;;;;;;
                                  -226301;14;0;false;false;0;0;0;;;
                                  -226315;1;0;false;false;;;;;;
                                  -226316;1;0;false;false;0;0;0;;;
                                  -226317;1;0;false;false;;;;;;
                                  -226318;9;0;false;false;0;0;0;;;
                                  -226327;5;0;false;false;;;;;;
                                  -226332;1;0;false;false;0;0;0;;;
                                  -226333;4;0;false;false;;;;;;
                                  -226337;1;0;false;false;0;0;0;;;
                                  -226338;4;0;false;false;;;;;;
                                  -226342;2;1;false;false;127;0;85;;;
                                  -226344;1;0;false;false;;;;;;
                                  -226345;12;0;false;false;0;0;0;;;
                                  -226357;1;0;false;false;;;;;;
                                  -226358;2;0;false;false;0;0;0;;;
                                  -226360;1;0;false;false;;;;;;
                                  -226361;14;0;false;false;0;0;0;;;
                                  -226375;1;0;false;false;;;;;;
                                  -226376;2;0;false;false;0;0;0;;;
                                  -226378;1;0;false;false;;;;;;
                                  -226379;10;0;false;false;0;0;0;;;
                                  -226389;1;0;false;false;;;;;;
                                  -226390;1;0;false;false;0;0;0;;;
                                  -226391;5;0;false;false;;;;;;
                                  -226396;9;0;false;false;0;0;0;;;
                                  -226405;1;0;false;false;;;;;;
                                  -226406;2;0;false;false;0;0;0;;;
                                  -226408;1;0;false;false;;;;;;
                                  -226409;18;0;false;false;0;0;0;;;
                                  -226427;1;0;false;false;;;;;;
                                  -226428;1;0;false;false;0;0;0;;;
                                  -226429;1;0;false;false;;;;;;
                                  -226430;3;0;false;false;0;0;0;;;
                                  -226433;4;0;false;false;;;;;;
                                  -226437;1;0;false;false;0;0;0;;;
                                  -226438;4;0;false;false;;;;;;
                                  -226442;3;1;false;false;127;0;85;;;
                                  -226445;1;0;false;false;;;;;;
                                  -226446;9;0;false;false;0;0;0;;;
                                  -226455;1;0;false;false;;;;;;
                                  -226456;1;0;false;false;0;0;0;;;
                                  -226457;1;0;false;false;;;;;;
                                  -226458;4;0;false;false;0;0;0;;;
                                  -226462;1;0;false;false;;;;;;
                                  -226463;1;0;false;false;0;0;0;;;
                                  -226464;1;0;false;false;;;;;;
                                  -226465;10;0;false;false;0;0;0;;;
                                  -226475;1;0;false;false;;;;;;
                                  -226476;1;0;false;false;0;0;0;;;
                                  -226477;1;0;false;false;;;;;;
                                  -226478;20;0;false;false;0;0;0;;;
                                  -226498;1;0;false;false;;;;;;
                                  -226499;1;0;false;false;0;0;0;;;
                                  -226500;1;0;false;false;;;;;;
                                  -226501;10;0;false;false;0;0;0;;;
                                  -226511;4;0;false;false;;;;;;
                                  -226515;28;0;false;false;0;0;0;;;
                                  -226543;1;0;false;false;;;;;;
                                  -226544;11;0;false;false;0;0;0;;;
                                  -226555;4;0;false;false;;;;;;
                                  -226559;49;0;false;false;0;0;0;;;
                                  -226608;4;0;false;false;;;;;;
                                  -226612;2;1;false;false;127;0;85;;;
                                  -226614;1;0;false;false;;;;;;
                                  -226615;10;0;false;false;0;0;0;;;
                                  -226625;1;0;false;false;;;;;;
                                  -226626;2;0;false;false;0;0;0;;;
                                  -226628;1;0;false;false;;;;;;
                                  -226629;15;0;false;false;0;0;0;;;
                                  -226644;1;0;false;false;;;;;;
                                  -226645;1;0;false;false;0;0;0;;;
                                  -226646;5;0;false;false;;;;;;
                                  -226651;14;0;false;false;0;0;0;;;
                                  -226665;1;0;false;false;;;;;;
                                  -226666;1;0;false;false;0;0;0;;;
                                  -226667;1;0;false;false;;;;;;
                                  -226668;10;0;false;false;0;0;0;;;
                                  -226678;5;0;false;false;;;;;;
                                  -226683;2;1;false;false;127;0;85;;;
                                  -226685;1;0;false;false;;;;;;
                                  -226686;13;0;false;false;0;0;0;;;
                                  -226699;1;0;false;false;;;;;;
                                  -226700;1;0;false;false;0;0;0;;;
                                  -226701;6;0;false;false;;;;;;
                                  -226707;2;1;false;false;127;0;85;;;
                                  -226709;1;0;false;false;;;;;;
                                  -226710;15;0;false;false;0;0;0;;;
                                  -226725;1;0;false;false;;;;;;
                                  -226726;2;0;false;false;0;0;0;;;
                                  -226728;1;0;false;false;;;;;;
                                  -226729;12;0;false;false;0;0;0;;;
                                  -226741;1;0;false;false;;;;;;
                                  -226742;1;0;false;false;0;0;0;;;
                                  -226743;7;0;false;false;;;;;;
                                  -226750;22;0;false;false;0;0;0;;;
                                  -226772;4;1;false;false;127;0;85;;;
                                  -226776;2;0;false;false;0;0;0;;;
                                  -226778;6;0;false;false;;;;;;
                                  -226784;1;0;false;false;0;0;0;;;
                                  -226785;1;0;false;false;;;;;;
                                  -226786;4;1;false;false;127;0;85;;;
                                  -226790;1;0;false;false;;;;;;
                                  -226791;2;1;false;false;127;0;85;;;
                                  -226793;1;0;false;false;;;;;;
                                  -226794;15;0;false;false;0;0;0;;;
                                  -226809;1;0;false;false;;;;;;
                                  -226810;2;0;false;false;0;0;0;;;
                                  -226812;1;0;false;false;;;;;;
                                  -226813;9;0;false;false;0;0;0;;;
                                  -226822;1;0;false;false;;;;;;
                                  -226823;1;0;false;false;0;0;0;;;
                                  -226824;7;0;false;false;;;;;;
                                  -226831;39;0;false;false;0;0;0;;;
                                  -226870;6;0;false;false;;;;;;
                                  -226876;1;0;false;false;0;0;0;;;
                                  -226877;1;0;false;false;;;;;;
                                  -226878;4;1;false;false;127;0;85;;;
                                  -226882;1;0;false;false;;;;;;
                                  -226883;2;1;false;false;127;0;85;;;
                                  -226885;1;0;false;false;;;;;;
                                  -226886;15;0;false;false;0;0;0;;;
                                  -226901;1;0;false;false;;;;;;
                                  -226902;2;0;false;false;0;0;0;;;
                                  -226904;1;0;false;false;;;;;;
                                  -226905;10;0;false;false;0;0;0;;;
                                  -226915;1;0;false;false;;;;;;
                                  -226916;1;0;false;false;0;0;0;;;
                                  -226917;7;0;false;false;;;;;;
                                  -226924;40;0;false;false;0;0;0;;;
                                  -226964;6;0;false;false;;;;;;
                                  -226970;1;0;false;false;0;0;0;;;
                                  -226971;5;0;false;false;;;;;;
                                  -226976;1;0;false;false;0;0;0;;;
                                  -226977;5;0;false;false;;;;;;
                                  -226982;32;0;false;false;0;0;0;;;
                                  -227014;1;0;false;false;;;;;;
                                  -227015;12;0;false;false;0;0;0;;;
                                  -227027;5;0;false;false;;;;;;
                                  -227032;2;1;false;false;127;0;85;;;
                                  -227034;1;0;false;false;;;;;;
                                  -227035;15;0;false;false;0;0;0;;;
                                  -227050;1;0;false;false;;;;;;
                                  -227051;2;0;false;false;0;0;0;;;
                                  -227053;1;0;false;false;;;;;;
                                  -227054;9;0;false;false;0;0;0;;;
                                  -227063;1;0;false;false;;;;;;
                                  -227064;1;0;false;false;0;0;0;;;
                                  -227065;6;0;false;false;;;;;;
                                  -227071;57;0;false;false;0;0;0;;;
                                  -227128;5;0;false;false;;;;;;
                                  -227133;1;0;false;false;0;0;0;;;
                                  -227134;1;0;false;false;;;;;;
                                  -227135;4;1;false;false;127;0;85;;;
                                  -227139;1;0;false;false;;;;;;
                                  -227140;2;1;false;false;127;0;85;;;
                                  -227142;1;0;false;false;;;;;;
                                  -227143;15;0;false;false;0;0;0;;;
                                  -227158;1;0;false;false;;;;;;
                                  -227159;2;0;false;false;0;0;0;;;
                                  -227161;1;0;false;false;;;;;;
                                  -227162;10;0;false;false;0;0;0;;;
                                  -227172;1;0;false;false;;;;;;
                                  -227173;1;0;false;false;0;0;0;;;
                                  -227174;6;0;false;false;;;;;;
                                  -227180;53;0;false;false;0;0;0;;;
                                  -227233;5;0;false;false;;;;;;
                                  -227238;1;0;false;false;0;0;0;;;
                                  -227239;4;0;false;false;;;;;;
                                  -227243;1;0;false;false;0;0;0;;;
                                  -227244;3;0;false;false;;;;;;
                                  -227247;1;0;false;false;0;0;0;;;
                                  -227248;3;0;false;false;;;;;;
                                  -227251;7;0;false;false;0;0;0;;;
                                  -227258;1;0;false;false;;;;;;
                                  -227259;1;0;false;false;0;0;0;;;
                                  -227260;1;0;false;false;;;;;;
                                  -227261;10;0;false;false;0;0;0;;;
                                  -227271;2;0;false;false;;;;;;
                                  -227273;1;0;false;false;0;0;0;;;
                                  -227274;2;0;false;false;;;;;;
                                  -227276;3;0;false;false;63;95;191;;;
                                  -227279;3;0;false;false;;;;;;
                                  -227282;1;0;false;false;63;95;191;;;
                                  -227283;1;0;false;false;;;;;;
                                  -227284;5;0;false;false;63;95;191;;;
                                  -227289;1;0;false;false;;;;;;
                                  -227290;3;0;false;false;63;95;191;;;
                                  -227293;1;0;false;false;;;;;;
                                  -227294;5;0;false;false;63;95;191;;;
                                  -227299;1;0;false;false;;;;;;
                                  -227300;2;0;false;false;63;95;191;;;
                                  -227302;1;0;false;false;;;;;;
                                  -227303;3;0;false;false;63;95;191;;;
                                  -227306;1;0;false;false;;;;;;
                                  -227307;7;0;false;false;63;95;191;;;
                                  -227314;1;0;false;false;;;;;;
                                  -227315;5;0;false;false;63;95;191;;;
                                  -227320;1;0;false;false;;;;;;
                                  -227321;7;0;false;false;63;95;191;;;
                                  -227328;3;0;false;false;;;;;;
                                  -227331;2;0;false;false;63;95;191;;;
                                  -227333;2;0;false;false;;;;;;
                                  -227335;4;1;false;false;127;0;85;;;
                                  -227339;1;0;false;false;;;;;;
                                  -227340;18;0;false;false;0;0;0;;;
                                  -227358;1;0;false;false;;;;;;
                                  -227359;1;0;false;false;0;0;0;;;
                                  -227360;3;0;false;false;;;;;;
                                  -227363;3;1;false;false;127;0;85;;;
                                  -227366;1;0;false;false;;;;;;
                                  -227367;9;0;false;false;0;0;0;;;
                                  -227376;1;0;false;false;;;;;;
                                  -227377;1;0;false;false;0;0;0;;;
                                  -227378;1;0;false;false;;;;;;
                                  -227379;15;0;false;false;0;0;0;;;
                                  -227394;3;0;false;false;;;;;;
                                  -227397;6;0;false;false;0;0;0;;;
                                  -227403;1;0;false;false;;;;;;
                                  -227404;4;0;false;false;0;0;0;;;
                                  -227408;1;0;false;false;;;;;;
                                  -227409;1;0;false;false;0;0;0;;;
                                  -227410;1;0;false;false;;;;;;
                                  -227411;27;0;false;false;0;0;0;;;
                                  -227438;3;0;false;false;;;;;;
                                  -227441;3;1;false;false;127;0;85;;;
                                  -227444;1;0;false;false;;;;;;
                                  -227445;10;0;false;false;0;0;0;;;
                                  -227455;1;0;false;false;;;;;;
                                  -227456;1;0;false;false;0;0;0;;;
                                  -227457;1;0;false;false;;;;;;
                                  -227458;35;0;false;false;0;0;0;;;
                                  -227493;3;0;false;false;;;;;;
                                  -227496;3;1;false;false;127;0;85;;;
                                  -227499;1;0;false;false;;;;;;
                                  -227500;12;0;false;false;0;0;0;;;
                                  -227512;1;0;false;false;;;;;;
                                  -227513;1;0;false;false;0;0;0;;;
                                  -227514;1;0;false;false;;;;;;
                                  -227515;11;0;false;false;0;0;0;;;
                                  -227526;1;0;false;false;;;;;;
                                  -227527;1;0;false;false;0;0;0;;;
                                  -227528;1;0;false;false;;;;;;
                                  -227529;11;0;false;false;0;0;0;;;
                                  -227540;3;0;false;false;;;;;;
                                  -227543;3;1;false;false;127;0;85;;;
                                  -227546;1;0;false;false;;;;;;
                                  -227547;9;0;false;false;0;0;0;;;
                                  -227556;1;0;false;false;;;;;;
                                  -227557;1;0;false;false;0;0;0;;;
                                  -227558;1;0;false;false;;;;;;
                                  -227559;18;0;false;false;0;0;0;;;
                                  -227577;1;0;false;false;;;;;;
                                  -227578;10;0;false;false;0;0;0;;;
                                  -227588;1;0;false;false;;;;;;
                                  -227589;14;0;false;false;0;0;0;;;
                                  -227603;3;0;false;false;;;;;;
                                  -227606;27;0;false;false;0;0;0;;;
                                  -227633;1;0;false;false;;;;;;
                                  -227634;10;0;false;false;0;0;0;;;
                                  -227644;1;0;false;false;;;;;;
                                  -227645;21;0;false;false;0;0;0;;;
                                  -227666;2;0;false;false;;;;;;
                                  -227668;1;0;false;false;0;0;0;;;
                                  -227669;2;0;false;false;;;;;;
                                  -227671;3;0;false;false;63;95;191;;;
                                  -227674;3;0;false;false;;;;;;
                                  -227677;1;0;false;false;63;95;191;;;
                                  -227678;1;0;false;false;;;;;;
                                  -227679;4;0;false;false;63;95;191;;;
                                  -227683;1;0;false;false;;;;;;
                                  -227684;3;0;false;false;63;95;191;;;
                                  -227687;1;0;false;false;;;;;;
                                  -227688;5;0;false;false;63;95;191;;;
                                  -227693;1;0;false;false;;;;;;
                                  -227694;7;0;false;false;63;95;191;;;
                                  -227701;3;0;false;false;;;;;;
                                  -227704;1;0;false;false;63;95;191;;;
                                  -227705;3;0;false;false;;;;;;
                                  -227708;1;0;false;false;63;95;191;;;
                                  -227709;1;0;false;false;;;;;;
                                  -227710;7;1;false;false;127;159;191;;;
                                  -227717;6;0;false;false;63;95;191;;;
                                  -227723;1;0;false;false;;;;;;
                                  -227724;5;0;false;false;63;95;191;;;
                                  -227729;1;0;false;false;;;;;;
                                  -227730;7;0;false;false;63;95;191;;;
                                  -227737;1;0;false;false;;;;;;
                                  -227738;8;0;false;false;63;95;191;;;
                                  -227746;1;0;false;false;;;;;;
                                  -227747;2;0;false;false;63;95;191;;;
                                  -227749;1;0;false;false;;;;;;
                                  -227750;3;0;false;false;63;95;191;;;
                                  -227753;1;0;false;false;;;;;;
                                  -227754;5;0;false;false;63;95;191;;;
                                  -227759;1;0;false;false;;;;;;
                                  -227760;9;0;false;false;63;95;191;;;
                                  -227769;1;0;false;false;;;;;;
                                  -227770;2;0;false;false;63;95;191;;;
                                  -227772;1;0;false;false;;;;;;
                                  -227773;3;0;false;false;63;95;191;;;
                                  -227776;1;0;false;false;;;;;;
                                  -227777;5;0;false;false;63;95;191;;;
                                  -227782;3;0;false;false;;;;;;
                                  -227785;1;0;false;false;63;95;191;;;
                                  -227786;1;0;false;false;;;;;;
                                  -227787;11;1;false;false;127;159;191;;;
                                  -227798;12;0;false;false;63;95;191;;;
                                  -227810;1;0;false;false;;;;;;
                                  -227811;4;0;false;false;127;127;159;;;
                                  -227815;3;0;false;false;;;;;;
                                  -227818;1;0;false;false;63;95;191;;;
                                  -227819;4;0;false;false;;;;;;
                                  -227823;4;0;false;false;127;127;159;;;
                                  -227827;21;0;false;false;63;95;191;;;
                                  -227848;1;0;false;false;;;;;;
                                  -227849;1;0;false;false;127;127;159;;;
                                  -227850;1;0;false;false;;;;;;
                                  -227851;2;0;false;false;63;95;191;;;
                                  -227853;1;0;false;false;;;;;;
                                  -227854;3;0;false;false;63;95;191;;;
                                  -227857;1;0;false;false;;;;;;
                                  -227858;8;0;false;false;63;95;191;;;
                                  -227866;1;0;false;false;;;;;;
                                  -227867;3;0;false;false;63;95;191;;;
                                  -227870;1;0;false;false;;;;;;
                                  -227871;4;0;false;false;63;95;191;;;
                                  -227875;1;0;false;false;;;;;;
                                  -227876;8;0;false;false;63;95;191;;;
                                  -227884;5;0;false;false;127;127;159;;;
                                  -227889;3;0;false;false;;;;;;
                                  -227892;1;0;false;false;63;95;191;;;
                                  -227893;4;0;false;false;;;;;;
                                  -227897;4;0;false;false;127;127;159;;;
                                  -227901;27;0;false;false;63;95;191;;;
                                  -227928;1;0;false;false;;;;;;
                                  -227929;1;0;false;false;127;127;159;;;
                                  -227930;1;0;false;false;;;;;;
                                  -227931;2;0;false;false;63;95;191;;;
                                  -227933;1;0;false;false;;;;;;
                                  -227934;3;0;false;false;63;95;191;;;
                                  -227937;1;0;false;false;;;;;;
                                  -227938;6;0;false;false;63;95;191;;;
                                  -227944;1;0;false;false;;;;;;
                                  -227945;4;0;false;false;63;95;191;;;
                                  -227949;1;0;false;false;;;;;;
                                  -227950;3;0;false;false;63;95;191;;;
                                  -227953;1;0;false;false;;;;;;
                                  -227954;6;0;false;false;63;95;191;;;
                                  -227960;1;0;false;false;;;;;;
                                  -227961;4;0;false;false;63;95;191;;;
                                  -227965;1;0;false;false;;;;;;
                                  -227966;7;0;false;false;63;95;191;;;
                                  -227973;1;0;false;false;;;;;;
                                  -227974;3;0;false;false;63;95;191;;;
                                  -227977;1;0;false;false;;;;;;
                                  -227978;8;0;false;false;63;95;191;;;
                                  -227986;5;0;false;false;127;127;159;;;
                                  -227991;3;0;false;false;;;;;;
                                  -227994;1;0;false;false;63;95;191;;;
                                  -227995;1;0;false;false;;;;;;
                                  -227996;5;0;false;false;127;127;159;;;
                                  -228001;3;0;false;false;;;;;;
                                  -228004;1;0;false;false;63;95;191;;;
                                  -228005;1;0;false;false;;;;;;
                                  -228006;11;1;false;false;127;159;191;;;
                                  -228017;24;0;false;false;63;95;191;;;
                                  -228041;1;0;false;false;;;;;;
                                  -228042;4;0;false;false;127;127;159;;;
                                  -228046;3;0;false;false;;;;;;
                                  -228049;1;0;false;false;63;95;191;;;
                                  -228050;3;0;false;false;;;;;;
                                  -228053;4;0;false;false;127;127;159;;;
                                  -228057;22;0;false;false;63;95;191;;;
                                  -228079;1;0;false;false;;;;;;
                                  -228080;4;0;false;false;63;95;191;;;
                                  -228084;1;0;false;false;;;;;;
                                  -228085;6;0;false;false;63;95;191;;;
                                  -228091;1;0;false;false;;;;;;
                                  -228092;3;0;false;false;63;95;191;;;
                                  -228095;1;0;false;false;;;;;;
                                  -228096;5;0;false;false;63;95;191;;;
                                  -228101;1;0;false;false;;;;;;
                                  -228102;2;0;false;false;63;95;191;;;
                                  -228104;1;0;false;false;;;;;;
                                  -228105;3;0;false;false;63;95;191;;;
                                  -228108;1;0;false;false;;;;;;
                                  -228109;3;0;false;false;63;95;191;;;
                                  -228112;1;0;false;false;;;;;;
                                  -228113;2;0;false;false;63;95;191;;;
                                  -228115;1;0;false;false;;;;;;
                                  -228116;3;0;false;false;63;95;191;;;
                                  -228119;1;0;false;false;;;;;;
                                  -228120;9;0;false;false;63;95;191;;;
                                  -228129;1;0;false;false;;;;;;
                                  -228130;5;0;false;false;63;95;191;;;
                                  -228135;1;0;false;false;;;;;;
                                  -228136;2;0;false;false;63;95;191;;;
                                  -228138;1;0;false;false;;;;;;
                                  -228139;6;0;false;false;63;95;191;;;
                                  -228145;1;0;false;false;;;;;;
                                  -228146;1;0;false;false;63;95;191;;;
                                  -228147;4;0;false;false;;;;;;
                                  -228151;1;0;false;false;63;95;191;;;
                                  -228152;1;0;false;false;;;;;;
                                  -228153;5;0;false;false;63;95;191;;;
                                  -228158;1;0;false;false;;;;;;
                                  -228159;4;0;false;false;63;95;191;;;
                                  -228163;1;0;false;false;;;;;;
                                  -228164;4;0;false;false;63;95;191;;;
                                  -228168;1;0;false;false;;;;;;
                                  -228169;9;0;false;false;63;95;191;;;
                                  -228178;1;0;false;false;;;;;;
                                  -228179;4;0;false;false;63;95;191;;;
                                  -228183;1;0;false;false;;;;;;
                                  -228184;4;0;false;false;63;95;191;;;
                                  -228188;1;0;false;false;;;;;;
                                  -228189;7;0;false;false;63;95;191;;;
                                  -228196;1;0;false;false;;;;;;
                                  -228197;7;0;false;false;63;95;191;;;
                                  -228204;1;0;false;false;;;;;;
                                  -228205;2;0;false;false;63;95;191;;;
                                  -228207;1;0;false;false;;;;;;
                                  -228208;5;0;false;false;63;95;191;;;
                                  -228213;1;0;false;false;;;;;;
                                  -228214;2;0;false;false;63;95;191;;;
                                  -228216;1;0;false;false;;;;;;
                                  -228217;2;0;false;false;63;95;191;;;
                                  -228219;1;0;false;false;;;;;;
                                  -228220;5;0;false;false;63;95;191;;;
                                  -228225;1;0;false;false;;;;;;
                                  -228226;3;0;false;false;63;95;191;;;
                                  -228229;1;0;false;false;;;;;;
                                  -228230;4;0;false;false;63;95;191;;;
                                  -228234;1;0;false;false;;;;;;
                                  -228235;10;0;false;false;63;95;191;;;
                                  -228245;3;0;false;false;;;;;;
                                  -228248;1;0;false;false;63;95;191;;;
                                  -228249;1;0;false;false;;;;;;
                                  -228250;5;0;false;false;127;127;159;;;
                                  -228255;3;0;false;false;;;;;;
                                  -228258;2;0;false;false;63;95;191;;;
                                  -228260;2;0;false;false;;;;;;
                                  -228262;6;1;false;false;127;0;85;;;
                                  -228268;1;0;false;false;;;;;;
                                  -228269;4;1;false;false;127;0;85;;;
                                  -228273;1;0;false;false;;;;;;
                                  -228274;15;0;false;false;0;0;0;;;
                                  -228289;3;1;false;false;127;0;85;;;
                                  -228292;1;0;false;false;;;;;;
                                  -228293;7;0;false;false;0;0;0;;;
                                  -228300;1;0;false;false;;;;;;
                                  -228301;1;0;false;false;0;0;0;;;
                                  -228302;3;0;false;false;;;;;;
                                  -228305;14;0;false;false;0;0;0;;;
                                  -228319;3;0;false;false;;;;;;
                                  -228322;3;1;false;false;127;0;85;;;
                                  -228325;1;0;false;false;;;;;;
                                  -228326;6;0;false;false;0;0;0;;;
                                  -228332;1;0;false;false;;;;;;
                                  -228333;1;0;false;false;0;0;0;;;
                                  -228334;1;0;false;false;;;;;;
                                  -228335;15;0;false;false;0;0;0;;;
                                  -228350;9;0;false;false;;;;;;
                                  -228359;2;1;false;false;127;0;85;;;
                                  -228361;1;0;false;false;;;;;;
                                  -228362;7;0;false;false;0;0;0;;;
                                  -228369;1;0;false;false;;;;;;
                                  -228370;1;0;false;false;0;0;0;;;
                                  -228371;1;0;false;false;;;;;;
                                  -228372;1;0;false;false;0;0;0;;;
                                  -228373;1;0;false;false;;;;;;
                                  -228374;2;0;false;false;0;0;0;;;
                                  -228376;1;0;false;false;;;;;;
                                  -228377;6;0;false;false;0;0;0;;;
                                  -228383;1;0;false;false;;;;;;
                                  -228384;2;0;false;false;0;0;0;;;
                                  -228386;1;0;false;false;;;;;;
                                  -228387;12;0;false;false;0;0;0;;;
                                  -228399;1;0;false;false;;;;;;
                                  -228400;1;0;false;false;0;0;0;;;
                                  -228401;4;0;false;false;;;;;;
                                  -228405;2;1;false;false;127;0;85;;;
                                  -228407;1;0;false;false;;;;;;
                                  -228408;7;0;false;false;0;0;0;;;
                                  -228415;1;0;false;false;;;;;;
                                  -228416;1;0;false;false;0;0;0;;;
                                  -228417;1;0;false;false;;;;;;
                                  -228418;2;0;false;false;0;0;0;;;
                                  -228420;1;0;false;false;;;;;;
                                  -228421;1;0;false;false;0;0;0;;;
                                  -228422;5;0;false;false;;;;;;
                                  -228427;11;0;false;false;0;0;0;;;
                                  -228438;1;0;false;false;;;;;;
                                  -228439;1;0;false;false;0;0;0;;;
                                  -228440;1;0;false;false;;;;;;
                                  -228441;2;0;false;false;0;0;0;;;
                                  -228443;4;0;false;false;;;;;;
                                  -228447;1;0;false;false;0;0;0;;;
                                  -228448;4;0;false;false;;;;;;
                                  -228452;4;1;false;false;127;0;85;;;
                                  -228456;4;0;false;false;;;;;;
                                  -228460;2;1;false;false;127;0;85;;;
                                  -228462;1;0;false;false;;;;;;
                                  -228463;7;0;false;false;0;0;0;;;
                                  -228470;1;0;false;false;;;;;;
                                  -228471;1;0;false;false;0;0;0;;;
                                  -228472;1;0;false;false;;;;;;
                                  -228473;7;0;false;false;0;0;0;;;
                                  -228480;1;0;false;false;;;;;;
                                  -228481;1;0;false;false;0;0;0;;;
                                  -228482;5;0;false;false;;;;;;
                                  -228487;11;0;false;false;0;0;0;;;
                                  -228498;1;0;false;false;;;;;;
                                  -228499;1;0;false;false;0;0;0;;;
                                  -228500;1;0;false;false;;;;;;
                                  -228501;7;0;false;false;0;0;0;;;
                                  -228508;4;0;false;false;;;;;;
                                  -228512;1;0;false;false;0;0;0;;;
                                  -228513;4;0;false;false;;;;;;
                                  -228517;4;1;false;false;127;0;85;;;
                                  -228521;1;0;false;false;;;;;;
                                  -228522;1;0;false;false;0;0;0;;;
                                  -228523;5;0;false;false;;;;;;
                                  -228528;2;1;false;false;127;0;85;;;
                                  -228530;1;0;false;false;;;;;;
                                  -228531;25;0;false;false;0;0;0;;;
                                  -228556;1;0;false;false;;;;;;
                                  -228557;1;0;false;false;0;0;0;;;
                                  -228558;6;0;false;false;;;;;;
                                  -228564;62;0;false;false;63;127;95;;;
                                  -228626;4;0;false;false;;;;;;
                                  -228630;64;0;false;false;63;127;95;;;
                                  -228694;4;0;false;false;;;;;;
                                  -228698;38;0;false;false;0;0;0;;;
                                  -228736;5;0;false;false;;;;;;
                                  -228741;1;0;false;false;0;0;0;;;
                                  -228742;5;0;false;false;;;;;;
                                  -228747;11;0;false;false;0;0;0;;;
                                  -228758;1;0;false;false;;;;;;
                                  -228759;1;0;false;false;0;0;0;;;
                                  -228760;1;0;false;false;;;;;;
                                  -228761;7;0;false;false;0;0;0;;;
                                  -228768;4;0;false;false;;;;;;
                                  -228772;1;0;false;false;0;0;0;;;
                                  -228773;4;0;false;false;;;;;;
                                  -228777;47;0;false;false;63;127;95;;;
                                  -228824;2;0;false;false;;;;;;
                                  -228826;55;0;false;false;63;127;95;;;
                                  -228881;2;0;false;false;;;;;;
                                  -228883;15;0;false;false;0;0;0;;;
                                  -228898;5;1;false;false;127;0;85;;;
                                  -228903;2;0;false;false;0;0;0;;;
                                  -228905;3;0;false;false;;;;;;
                                  -228908;1;0;false;false;0;0;0;;;
                                  -228909;3;0;false;false;;;;;;
                                  -228912;52;0;false;false;63;127;95;;;
                                  -228964;1;0;false;false;;;;;;
                                  -228965;19;0;false;false;0;0;0;;;
                                  -228984;2;0;false;false;;;;;;
                                  -228986;1;0;false;false;0;0;0;;;
                                  -228987;3;0;false;false;;;;;;
                                  -228990;3;0;false;false;63;95;191;;;
                                  -228993;3;0;false;false;;;;;;
                                  -228996;1;0;false;false;63;95;191;;;
                                  -228997;1;0;false;false;;;;;;
                                  -228998;6;0;false;false;63;95;191;;;
                                  -229004;1;0;false;false;;;;;;
                                  -229005;3;0;false;false;63;95;191;;;
                                  -229008;1;0;false;false;;;;;;
                                  -229009;9;0;false;false;63;95;191;;;
                                  -229018;1;0;false;false;;;;;;
                                  -229019;4;0;false;false;63;95;191;;;
                                  -229023;1;0;false;false;;;;;;
                                  -229024;5;0;false;false;63;95;191;;;
                                  -229029;1;0;false;false;;;;;;
                                  -229030;2;0;false;false;63;95;191;;;
                                  -229032;1;0;false;false;;;;;;
                                  -229033;3;0;false;false;63;95;191;;;
                                  -229036;1;0;false;false;;;;;;
                                  -229037;10;0;false;false;63;95;191;;;
                                  -229047;2;0;false;false;;;;;;
                                  -229049;3;0;false;false;63;95;191;;;
                                  -229052;1;0;false;false;;;;;;
                                  -229053;4;0;false;false;63;95;191;;;
                                  -229057;1;0;false;false;;;;;;
                                  -229058;4;0;false;false;63;95;191;;;
                                  -229062;1;0;false;false;;;;;;
                                  -229063;2;0;false;false;63;95;191;;;
                                  -229065;1;0;false;false;;;;;;
                                  -229066;6;0;false;false;63;95;191;;;
                                  -229072;3;0;false;false;;;;;;
                                  -229075;1;0;false;false;63;95;191;;;
                                  -229076;1;0;false;false;;;;;;
                                  -229077;2;0;false;false;63;95;191;;;
                                  -229079;1;0;false;false;;;;;;
                                  -229080;3;0;false;false;63;95;191;;;
                                  -229083;1;0;false;false;;;;;;
                                  -229084;9;0;false;false;63;95;191;;;
                                  -229093;1;0;false;false;;;;;;
                                  -229094;2;0;false;false;63;95;191;;;
                                  -229096;1;0;false;false;;;;;;
                                  -229097;5;0;false;false;63;95;191;;;
                                  -229102;1;0;false;false;;;;;;
                                  -229103;4;0;false;false;63;95;191;;;
                                  -229107;1;0;false;false;;;;;;
                                  -229108;6;0;false;false;63;95;191;;;
                                  -229114;1;0;false;false;;;;;;
                                  -229115;3;0;false;false;63;95;191;;;
                                  -229118;1;0;false;false;;;;;;
                                  -229119;3;0;false;false;63;95;191;;;
                                  -229122;1;0;false;false;;;;;;
                                  -229123;7;0;false;false;63;95;191;;;
                                  -229130;3;0;false;false;;;;;;
                                  -229133;1;0;false;false;63;95;191;;;
                                  -229134;1;0;false;false;;;;;;
                                  -229135;3;0;false;false;127;127;159;;;
                                  -229138;3;0;false;false;;;;;;
                                  -229141;1;0;false;false;63;95;191;;;
                                  -229142;3;0;false;false;;;;;;
                                  -229145;1;0;false;false;63;95;191;;;
                                  -229146;1;0;false;false;;;;;;
                                  -229147;7;1;false;false;127;159;191;;;
                                  -229154;5;0;false;false;63;95;191;;;
                                  -229159;1;0;false;false;;;;;;
                                  -229160;5;0;false;false;63;95;191;;;
                                  -229165;1;0;false;false;;;;;;
                                  -229166;5;0;false;false;63;95;191;;;
                                  -229171;1;0;false;false;;;;;;
                                  -229172;2;0;false;false;63;95;191;;;
                                  -229174;1;0;false;false;;;;;;
                                  -229175;3;0;false;false;63;95;191;;;
                                  -229178;1;0;false;false;;;;;;
                                  -229179;4;0;false;false;63;95;191;;;
                                  -229183;3;0;false;false;;;;;;
                                  -229186;1;0;false;false;63;95;191;;;
                                  -229187;1;0;false;false;;;;;;
                                  -229188;7;1;false;false;127;159;191;;;
                                  -229195;6;0;false;false;63;95;191;;;
                                  -229201;1;0;false;false;;;;;;
                                  -229202;6;0;false;false;63;95;191;;;
                                  -229208;1;0;false;false;;;;;;
                                  -229209;2;0;false;false;63;95;191;;;
                                  -229211;1;0;false;false;;;;;;
                                  -229212;4;0;false;false;63;95;191;;;
                                  -229216;1;0;false;false;;;;;;
                                  -229217;2;0;false;false;63;95;191;;;
                                  -229219;1;0;false;false;;;;;;
                                  -229220;5;0;false;false;63;95;191;;;
                                  -229225;1;0;false;false;;;;;;
                                  -229226;2;0;false;false;63;95;191;;;
                                  -229228;1;0;false;false;;;;;;
                                  -229229;9;0;false;false;63;95;191;;;
                                  -229238;3;0;false;false;;;;;;
                                  -229241;1;0;false;false;63;95;191;;;
                                  -229242;4;0;false;false;;;;;;
                                  -229246;1;0;false;false;63;95;191;;;
                                  -229247;1;0;false;false;;;;;;
                                  -229248;11;1;false;false;127;159;191;;;
                                  -229259;9;0;false;false;63;95;191;;;
                                  -229268;1;0;false;false;;;;;;
                                  -229269;3;0;false;false;63;95;191;;;
                                  -229272;1;0;false;false;;;;;;
                                  -229273;21;0;false;false;63;95;191;;;
                                  -229294;3;0;false;false;;;;;;
                                  -229297;1;0;false;false;63;95;191;;;
                                  -229298;1;0;false;false;;;;;;
                                  -229299;5;1;false;false;127;159;191;;;
                                  -229304;41;0;false;false;63;95;191;;;
                                  -229345;3;0;false;false;;;;;;
                                  -229348;2;0;false;false;63;95;191;;;
                                  -229350;2;0;false;false;;;;;;
                                  -229352;4;1;false;false;127;0;85;;;
                                  -229356;1;0;false;false;;;;;;
                                  -229357;20;0;false;false;0;0;0;;;
                                  -229377;3;1;false;false;127;0;85;;;
                                  -229380;1;0;false;false;;;;;;
                                  -229381;6;0;false;false;0;0;0;;;
                                  -229387;1;0;false;false;;;;;;
                                  -229388;3;1;false;false;127;0;85;;;
                                  -229391;1;0;false;false;;;;;;
                                  -229392;7;0;false;false;0;0;0;;;
                                  -229399;1;0;false;false;;;;;;
                                  -229400;3;1;false;false;127;0;85;;;
                                  -229403;1;0;false;false;;;;;;
                                  -229404;14;0;false;false;0;0;0;;;
                                  -229418;1;0;false;false;;;;;;
                                  -229419;6;1;false;false;127;0;85;;;
                                  -229425;1;0;false;false;;;;;;
                                  -229426;8;0;false;false;0;0;0;;;
                                  -229434;1;0;false;false;;;;;;
                                  -229435;1;0;false;false;0;0;0;;;
                                  -229436;3;0;false;false;;;;;;
                                  -229439;2;1;false;false;127;0;85;;;
                                  -229441;1;0;false;false;;;;;;
                                  -229442;14;0;false;false;0;0;0;;;
                                  -229456;1;0;false;false;;;;;;
                                  -229457;2;0;false;false;0;0;0;;;
                                  -229459;1;0;false;false;;;;;;
                                  -229460;23;0;false;false;0;0;0;;;
                                  -229483;1;0;false;false;;;;;;
                                  -229484;2;0;false;false;0;0;0;;;
                                  -229486;1;0;false;false;;;;;;
                                  -229487;10;0;false;false;0;0;0;;;
                                  -229497;1;0;false;false;;;;;;
                                  -229498;2;0;false;false;0;0;0;;;
                                  -229500;1;0;false;false;;;;;;
                                  -229501;8;0;false;false;0;0;0;;;
                                  -229509;1;0;false;false;;;;;;
                                  -229510;6;1;false;false;127;0;85;;;
                                  -229516;1;0;false;false;0;0;0;;;
                                  -229517;3;0;false;false;;;;;;
                                  -229520;12;0;false;false;0;0;0;;;
                                  -229532;1;0;false;false;;;;;;
                                  -229533;17;0;false;false;0;0;0;;;
                                  -229550;1;0;false;false;;;;;;
                                  -229551;1;0;false;false;0;0;0;;;
                                  -229552;1;0;false;false;;;;;;
                                  -229553;27;0;false;false;0;0;0;;;
                                  -229580;3;0;false;false;;;;;;
                                  -229583;10;0;false;false;0;0;0;;;
                                  -229593;1;0;false;false;;;;;;
                                  -229594;15;0;false;false;0;0;0;;;
                                  -229609;1;0;false;false;;;;;;
                                  -229610;1;0;false;false;0;0;0;;;
                                  -229611;1;0;false;false;;;;;;
                                  -229612;3;1;false;false;127;0;85;;;
                                  -229615;1;0;false;false;;;;;;
                                  -229616;17;0;false;false;0;0;0;;;
                                  -229633;1;0;false;false;;;;;;
                                  -229634;8;0;false;false;0;0;0;;;
                                  -229642;3;0;false;false;;;;;;
                                  -229645;6;0;false;false;0;0;0;;;
                                  -229651;1;0;false;false;;;;;;
                                  -229652;9;0;false;false;0;0;0;;;
                                  -229661;1;0;false;false;;;;;;
                                  -229662;1;0;false;false;0;0;0;;;
                                  -229663;1;0;false;false;;;;;;
                                  -229664;42;0;false;false;0;0;0;;;
                                  -229706;3;0;false;false;;;;;;
                                  -229709;8;0;false;false;0;0;0;;;
                                  -229717;1;0;false;false;;;;;;
                                  -229718;5;0;false;false;0;0;0;;;
                                  -229723;3;0;false;false;;;;;;
                                  -229726;10;0;false;false;0;0;0;;;
                                  -229736;1;0;false;false;;;;;;
                                  -229737;6;0;false;false;0;0;0;;;
                                  -229743;3;0;false;false;;;;;;
                                  -229746;2;1;false;false;127;0;85;;;
                                  -229748;1;0;false;false;;;;;;
                                  -229749;14;0;false;false;0;0;0;;;
                                  -229763;1;0;false;false;;;;;;
                                  -229764;2;0;false;false;0;0;0;;;
                                  -229766;1;0;false;false;;;;;;
                                  -229767;24;0;false;false;0;0;0;;;
                                  -229791;1;0;false;false;;;;;;
                                  -229792;1;0;false;false;0;0;0;;;
                                  -229793;4;0;false;false;;;;;;
                                  -229797;4;0;false;false;0;0;0;;;
                                  -229801;1;0;false;false;;;;;;
                                  -229802;1;0;false;false;0;0;0;;;
                                  -229803;1;0;false;false;;;;;;
                                  -229804;3;1;false;false;127;0;85;;;
                                  -229807;1;0;false;false;;;;;;
                                  -229808;20;0;false;false;0;0;0;;;
                                  -229828;4;0;false;false;;;;;;
                                  -229832;5;0;false;false;0;0;0;;;
                                  -229837;1;0;false;false;;;;;;
                                  -229838;1;0;false;false;0;0;0;;;
                                  -229839;1;0;false;false;;;;;;
                                  -229840;3;1;false;false;127;0;85;;;
                                  -229843;1;0;false;false;;;;;;
                                  -229844;30;0;false;false;0;0;0;;;
                                  -229874;3;0;false;false;;;;;;
                                  -229877;1;0;false;false;0;0;0;;;
                                  -229878;1;0;false;false;;;;;;
                                  -229879;4;1;false;false;127;0;85;;;
                                  -229883;1;0;false;false;;;;;;
                                  -229884;1;0;false;false;0;0;0;;;
                                  -229885;4;0;false;false;;;;;;
                                  -229889;11;0;false;false;0;0;0;;;
                                  -229900;1;0;false;false;;;;;;
                                  -229901;11;0;false;false;0;0;0;;;
                                  -229912;1;0;false;false;;;;;;
                                  -229913;1;0;false;false;0;0;0;;;
                                  -229914;1;0;false;false;;;;;;
                                  -229915;26;0;false;false;0;0;0;;;
                                  -229941;4;0;false;false;;;;;;
                                  -229945;9;0;false;false;0;0;0;;;
                                  -229954;1;0;false;false;;;;;;
                                  -229955;9;0;false;false;0;0;0;;;
                                  -229964;1;0;false;false;;;;;;
                                  -229965;1;0;false;false;0;0;0;;;
                                  -229966;1;0;false;false;;;;;;
                                  -229967;3;1;false;false;127;0;85;;;
                                  -229970;1;0;false;false;;;;;;
                                  -229971;16;0;false;false;0;0;0;;;
                                  -229987;1;0;false;false;;;;;;
                                  -229988;8;0;false;false;0;0;0;;;
                                  -229996;4;0;false;false;;;;;;
                                  -230000;6;0;false;false;0;0;0;;;
                                  -230006;1;0;false;false;;;;;;
                                  -230007;7;0;false;false;0;0;0;;;
                                  -230014;1;0;false;false;;;;;;
                                  -230015;1;0;false;false;0;0;0;;;
                                  -230016;1;0;false;false;;;;;;
                                  -230017;36;0;false;false;0;0;0;;;
                                  -230053;4;0;false;false;;;;;;
                                  -230057;4;0;false;false;0;0;0;;;
                                  -230061;1;0;false;false;;;;;;
                                  -230062;1;0;false;false;0;0;0;;;
                                  -230063;1;0;false;false;;;;;;
                                  -230064;3;1;false;false;127;0;85;;;
                                  -230067;1;0;false;false;;;;;;
                                  -230068;17;0;false;false;0;0;0;;;
                                  -230085;1;0;false;false;;;;;;
                                  -230086;11;0;false;false;0;0;0;;;
                                  -230097;4;0;false;false;;;;;;
                                  -230101;5;0;false;false;0;0;0;;;
                                  -230106;1;0;false;false;;;;;;
                                  -230107;1;0;false;false;0;0;0;;;
                                  -230108;1;0;false;false;;;;;;
                                  -230109;3;1;false;false;127;0;85;;;
                                  -230112;1;0;false;false;;;;;;
                                  -230113;23;0;false;false;0;0;0;;;
                                  -230136;1;0;false;false;;;;;;
                                  -230137;19;0;false;false;0;0;0;;;
                                  -230156;3;0;false;false;;;;;;
                                  -230159;1;0;false;false;0;0;0;;;
                                  -230160;3;0;false;false;;;;;;
                                  -230163;27;0;false;false;0;0;0;;;
                                  -230190;1;0;false;false;;;;;;
                                  -230191;6;0;false;false;0;0;0;;;
                                  -230197;1;0;false;false;;;;;;
                                  -230198;15;0;false;false;0;0;0;;;
                                  -230213;2;0;false;false;;;;;;
                                  -230215;1;0;false;false;0;0;0;;;
                                  -230216;2;0;false;false;;;;;;
                                  -230218;3;0;false;false;63;95;191;;;
                                  -230221;3;0;false;false;;;;;;
                                  -230224;1;0;false;false;63;95;191;;;
                                  -230225;1;0;false;false;;;;;;
                                  -230226;4;0;false;false;63;95;191;;;
                                  -230230;1;0;false;false;;;;;;
                                  -230231;3;0;false;false;63;95;191;;;
                                  -230234;1;0;false;false;;;;;;
                                  -230235;7;0;false;false;63;95;191;;;
                                  -230242;1;0;false;false;;;;;;
                                  -230243;14;0;false;false;63;95;191;;;
                                  -230257;1;0;false;false;;;;;;
                                  -230258;2;0;false;false;63;95;191;;;
                                  -230260;1;0;false;false;;;;;;
                                  -230261;3;0;false;false;63;95;191;;;
                                  -230264;1;0;false;false;;;;;;
                                  -230265;3;0;false;false;63;95;191;;;
                                  -230268;1;0;false;false;;;;;;
                                  -230269;4;0;false;false;63;95;191;;;
                                  -230273;1;0;false;false;;;;;;
                                  -230274;8;0;false;false;63;95;191;;;
                                  -230282;3;0;false;false;;;;;;
                                  -230285;1;0;false;false;63;95;191;;;
                                  -230286;1;0;false;false;;;;;;
                                  -230287;3;0;false;false;127;127;159;;;
                                  -230290;3;0;false;false;;;;;;
                                  -230293;1;0;false;false;63;95;191;;;
                                  -230294;3;0;false;false;;;;;;
                                  -230297;1;0;false;false;63;95;191;;;
                                  -230298;1;0;false;false;;;;;;
                                  -230299;7;1;false;false;127;159;191;;;
                                  -230306;10;0;false;false;63;95;191;;;
                                  -230316;1;0;false;false;;;;;;
                                  -230317;17;0;false;false;63;95;191;;;
                                  -230334;1;0;false;false;;;;;;
                                  -230335;14;0;false;false;63;95;191;;;
                                  -230349;1;0;false;false;;;;;;
                                  -230350;2;0;false;false;63;95;191;;;
                                  -230352;1;0;false;false;;;;;;
                                  -230353;3;0;false;false;63;95;191;;;
                                  -230356;1;0;false;false;;;;;;
                                  -230357;3;0;false;false;63;95;191;;;
                                  -230360;1;0;false;false;;;;;;
                                  -230361;4;0;false;false;63;95;191;;;
                                  -230365;1;0;false;false;;;;;;
                                  -230366;8;0;false;false;63;95;191;;;
                                  -230374;3;0;false;false;;;;;;
                                  -230377;1;0;false;false;63;95;191;;;
                                  -230378;1;0;false;false;;;;;;
                                  -230379;11;1;false;false;127;159;191;;;
                                  -230390;12;0;false;false;63;95;191;;;
                                  -230402;1;0;false;false;;;;;;
                                  -230403;4;0;false;false;127;127;159;;;
                                  -230407;3;0;false;false;;;;;;
                                  -230410;1;0;false;false;63;95;191;;;
                                  -230411;4;0;false;false;;;;;;
                                  -230415;4;0;false;false;127;127;159;;;
                                  -230419;21;0;false;false;63;95;191;;;
                                  -230440;1;0;false;false;;;;;;
                                  -230441;1;0;false;false;127;127;159;;;
                                  -230442;1;0;false;false;;;;;;
                                  -230443;2;0;false;false;63;95;191;;;
                                  -230445;1;0;false;false;;;;;;
                                  -230446;3;0;false;false;63;95;191;;;
                                  -230449;1;0;false;false;;;;;;
                                  -230450;8;0;false;false;63;95;191;;;
                                  -230458;1;0;false;false;;;;;;
                                  -230459;3;0;false;false;63;95;191;;;
                                  -230462;1;0;false;false;;;;;;
                                  -230463;4;0;false;false;63;95;191;;;
                                  -230467;1;0;false;false;;;;;;
                                  -230468;8;0;false;false;63;95;191;;;
                                  -230476;5;0;false;false;127;127;159;;;
                                  -230481;3;0;false;false;;;;;;
                                  -230484;1;0;false;false;63;95;191;;;
                                  -230485;4;0;false;false;;;;;;
                                  -230489;4;0;false;false;127;127;159;;;
                                  -230493;27;0;false;false;63;95;191;;;
                                  -230520;1;0;false;false;;;;;;
                                  -230521;1;0;false;false;127;127;159;;;
                                  -230522;1;0;false;false;;;;;;
                                  -230523;2;0;false;false;63;95;191;;;
                                  -230525;1;0;false;false;;;;;;
                                  -230526;3;0;false;false;63;95;191;;;
                                  -230529;1;0;false;false;;;;;;
                                  -230530;6;0;false;false;63;95;191;;;
                                  -230536;1;0;false;false;;;;;;
                                  -230537;4;0;false;false;63;95;191;;;
                                  -230541;1;0;false;false;;;;;;
                                  -230542;3;0;false;false;63;95;191;;;
                                  -230545;1;0;false;false;;;;;;
                                  -230546;6;0;false;false;63;95;191;;;
                                  -230552;1;0;false;false;;;;;;
                                  -230553;4;0;false;false;63;95;191;;;
                                  -230557;1;0;false;false;;;;;;
                                  -230558;7;0;false;false;63;95;191;;;
                                  -230565;1;0;false;false;;;;;;
                                  -230566;3;0;false;false;63;95;191;;;
                                  -230569;1;0;false;false;;;;;;
                                  -230570;8;0;false;false;63;95;191;;;
                                  -230578;5;0;false;false;127;127;159;;;
                                  -230583;3;0;false;false;;;;;;
                                  -230586;1;0;false;false;63;95;191;;;
                                  -230587;1;0;false;false;;;;;;
                                  -230588;5;0;false;false;127;127;159;;;
                                  -230593;3;0;false;false;;;;;;
                                  -230596;1;0;false;false;63;95;191;;;
                                  -230597;1;0;false;false;;;;;;
                                  -230598;11;1;false;false;127;159;191;;;
                                  -230609;24;0;false;false;63;95;191;;;
                                  -230633;1;0;false;false;;;;;;
                                  -230634;4;0;false;false;127;127;159;;;
                                  -230638;3;0;false;false;;;;;;
                                  -230641;1;0;false;false;63;95;191;;;
                                  -230642;4;0;false;false;;;;;;
                                  -230646;4;0;false;false;127;127;159;;;
                                  -230650;19;0;false;false;63;95;191;;;
                                  -230669;1;0;false;false;;;;;;
                                  -230670;4;0;false;false;63;95;191;;;
                                  -230674;1;0;false;false;;;;;;
                                  -230675;8;0;false;false;63;95;191;;;
                                  -230683;1;0;false;false;;;;;;
                                  -230684;2;0;false;false;63;95;191;;;
                                  -230686;1;0;false;false;;;;;;
                                  -230687;4;0;false;false;63;95;191;;;
                                  -230691;5;0;false;false;127;127;159;;;
                                  -230696;3;0;false;false;;;;;;
                                  -230699;1;0;false;false;63;95;191;;;
                                  -230700;1;0;false;false;;;;;;
                                  -230701;5;0;false;false;127;127;159;;;
                                  -230706;3;0;false;false;;;;;;
                                  -230709;2;0;false;false;63;95;191;;;
                                  -230711;2;0;false;false;;;;;;
                                  -230713;6;1;false;false;127;0;85;;;
                                  -230719;1;0;false;false;;;;;;
                                  -230720;4;1;false;false;127;0;85;;;
                                  -230724;1;0;false;false;;;;;;
                                  -230725;28;0;false;false;0;0;0;;;
                                  -230753;1;0;false;false;;;;;;
                                  -230754;11;0;false;false;0;0;0;;;
                                  -230765;1;0;false;false;;;;;;
                                  -230766;1;0;false;false;0;0;0;;;
                                  -230767;3;0;false;false;;;;;;
                                  -230770;14;0;false;false;0;0;0;;;
                                  -230784;4;0;false;false;;;;;;
                                  -230788;2;1;false;false;127;0;85;;;
                                  -230790;1;0;false;false;;;;;;
                                  -230791;11;0;false;false;0;0;0;;;
                                  -230802;1;0;false;false;;;;;;
                                  -230803;2;0;false;false;0;0;0;;;
                                  -230805;1;0;false;false;;;;;;
                                  -230806;4;1;false;false;127;0;85;;;
                                  -230810;1;0;false;false;0;0;0;;;
                                  -230811;1;0;false;false;;;;;;
                                  -230812;1;0;false;false;0;0;0;;;
                                  -230813;4;0;false;false;;;;;;
                                  -230817;35;0;false;false;0;0;0;;;
                                  -230852;3;0;false;false;;;;;;
                                  -230855;1;0;false;false;0;0;0;;;
                                  -230856;3;0;false;false;;;;;;
                                  -230859;2;1;false;false;127;0;85;;;
                                  -230861;1;0;false;false;;;;;;
                                  -230862;8;0;false;false;0;0;0;;;
                                  -230870;1;0;false;false;;;;;;
                                  -230871;2;0;false;false;0;0;0;;;
                                  -230873;1;0;false;false;;;;;;
                                  -230874;4;1;false;false;127;0;85;;;
                                  -230878;1;0;false;false;0;0;0;;;
                                  -230879;1;0;false;false;;;;;;
                                  -230880;1;0;false;false;0;0;0;;;
                                  -230881;4;0;false;false;;;;;;
                                  -230885;53;0;false;false;0;0;0;;;
                                  -230938;3;0;false;false;;;;;;
                                  -230941;1;0;false;false;0;0;0;;;
                                  -230942;4;0;false;false;;;;;;
                                  -230946;14;0;false;false;0;0;0;;;
                                  -230960;1;0;false;false;;;;;;
                                  -230961;1;0;false;false;0;0;0;;;
                                  -230962;1;0;false;false;;;;;;
                                  -230963;11;0;false;false;0;0;0;;;
                                  -230974;3;0;false;false;;;;;;
                                  -230977;2;1;false;false;127;0;85;;;
                                  -230979;1;0;false;false;;;;;;
                                  -230980;10;0;false;false;0;0;0;;;
                                  -230990;1;0;false;false;;;;;;
                                  -230991;1;0;false;false;0;0;0;;;
                                  -230992;4;0;false;false;;;;;;
                                  -230996;7;0;false;false;0;0;0;;;
                                  -231003;1;0;false;false;;;;;;
                                  -231004;1;0;false;false;0;0;0;;;
                                  -231005;1;0;false;false;;;;;;
                                  -231006;3;1;false;false;127;0;85;;;
                                  -231009;1;0;false;false;;;;;;
                                  -231010;24;0;false;false;0;0;0;;;
                                  -231034;1;0;false;false;;;;;;
                                  -231035;16;0;false;false;0;0;0;;;
                                  -231051;3;0;false;false;;;;;;
                                  -231054;1;0;false;false;0;0;0;;;
                                  -231055;3;0;false;false;;;;;;
                                  -231058;4;1;false;false;127;0;85;;;
                                  -231062;1;0;false;false;;;;;;
                                  -231063;1;0;false;false;0;0;0;;;
                                  -231064;4;0;false;false;;;;;;
                                  -231068;7;0;false;false;0;0;0;;;
                                  -231075;1;0;false;false;;;;;;
                                  -231076;1;0;false;false;0;0;0;;;
                                  -231077;1;0;false;false;;;;;;
                                  -231078;15;0;false;false;0;0;0;;;
                                  -231093;3;0;false;false;;;;;;
                                  -231096;1;0;false;false;0;0;0;;;
                                  -231097;3;0;false;false;;;;;;
                                  -231100;50;0;false;false;0;0;0;;;
                                  -231150;3;0;false;false;;;;;;
                                  -231153;8;0;false;false;0;0;0;;;
                                  -231161;2;0;false;false;;;;;;
                                  -231163;1;0;false;false;0;0;0;;;
                                  -231164;2;0;false;false;;;;;;
                                  -231166;3;0;false;false;63;95;191;;;
                                  -231169;3;0;false;false;;;;;;
                                  -231172;1;0;false;false;63;95;191;;;
                                  -231173;1;0;false;false;;;;;;
                                  -231174;4;0;false;false;63;95;191;;;
                                  -231178;1;0;false;false;;;;;;
                                  -231179;3;0;false;false;63;95;191;;;
                                  -231182;1;0;false;false;;;;;;
                                  -231183;10;0;false;false;63;95;191;;;
                                  -231193;1;0;false;false;;;;;;
                                  -231194;6;0;false;false;63;95;191;;;
                                  -231200;1;0;false;false;;;;;;
                                  -231201;2;0;false;false;63;95;191;;;
                                  -231203;1;0;false;false;;;;;;
                                  -231204;3;0;false;false;63;95;191;;;
                                  -231207;1;0;false;false;;;;;;
                                  -231208;6;0;false;false;63;95;191;;;
                                  -231214;1;0;false;false;;;;;;
                                  -231215;9;0;false;false;63;95;191;;;
                                  -231224;1;0;false;false;;;;;;
                                  -231225;2;0;false;false;63;95;191;;;
                                  -231227;1;0;false;false;;;;;;
                                  -231228;3;0;false;false;63;95;191;;;
                                  -231231;3;0;false;false;;;;;;
                                  -231234;1;0;false;false;63;95;191;;;
                                  -231235;1;0;false;false;;;;;;
                                  -231236;9;0;false;false;63;95;191;;;
                                  -231245;2;0;false;false;;;;;;
                                  -231247;10;0;false;false;63;95;191;;;
                                  -231257;1;0;false;false;;;;;;
                                  -231258;2;0;false;false;63;95;191;;;
                                  -231260;1;0;false;false;;;;;;
                                  -231261;6;0;false;false;63;95;191;;;
                                  -231267;1;0;false;false;;;;;;
                                  -231268;3;0;false;false;63;95;191;;;
                                  -231271;1;0;false;false;;;;;;
                                  -231272;4;0;false;false;63;95;191;;;
                                  -231276;1;0;false;false;;;;;;
                                  -231277;4;0;false;false;63;95;191;;;
                                  -231281;1;0;false;false;;;;;;
                                  -231282;5;0;false;false;63;95;191;;;
                                  -231287;1;0;false;false;;;;;;
                                  -231288;3;0;false;false;63;95;191;;;
                                  -231291;4;0;false;false;;;;;;
                                  -231295;1;0;false;false;63;95;191;;;
                                  -231296;1;0;false;false;;;;;;
                                  -231297;10;0;false;false;63;95;191;;;
                                  -231307;1;0;false;false;;;;;;
                                  -231308;6;0;false;false;63;95;191;;;
                                  -231314;1;0;false;false;;;;;;
                                  -231315;4;0;false;false;63;95;191;;;
                                  -231319;1;0;false;false;;;;;;
                                  -231320;2;0;false;false;63;95;191;;;
                                  -231322;1;0;false;false;;;;;;
                                  -231323;5;0;false;false;63;95;191;;;
                                  -231328;1;0;false;false;;;;;;
                                  -231329;2;0;false;false;63;95;191;;;
                                  -231331;1;0;false;false;;;;;;
                                  -231332;3;0;false;false;63;95;191;;;
                                  -231335;1;0;false;false;;;;;;
                                  -231336;7;0;false;false;63;95;191;;;
                                  -231343;1;0;false;false;;;;;;
                                  -231344;7;0;false;false;63;95;191;;;
                                  -231351;3;0;false;false;;;;;;
                                  -231354;1;0;false;false;63;95;191;;;
                                  -231355;3;0;false;false;;;;;;
                                  -231358;1;0;false;false;63;95;191;;;
                                  -231359;1;0;false;false;;;;;;
                                  -231360;5;1;false;false;127;159;191;;;
                                  -231365;41;0;false;false;63;95;191;;;
                                  -231406;3;0;false;false;;;;;;
                                  -231409;2;0;false;false;63;95;191;;;
                                  -231411;2;0;false;false;;;;;;
                                  -231413;6;1;false;false;127;0;85;;;
                                  -231419;1;0;false;false;;;;;;
                                  -231420;4;1;false;false;127;0;85;;;
                                  -231424;1;0;false;false;;;;;;
                                  -231425;9;0;false;false;0;0;0;;;
                                  -231434;1;0;false;false;;;;;;
                                  -231435;7;0;false;false;0;0;0;;;
                                  -231442;1;0;false;false;;;;;;
                                  -231443;7;0;false;false;0;0;0;;;
                                  -231450;1;0;false;false;;;;;;
                                  -231451;1;0;false;false;0;0;0;;;
                                  -231452;3;0;false;false;;;;;;
                                  -231455;2;1;false;false;127;0;85;;;
                                  -231457;1;0;false;false;;;;;;
                                  -231458;7;0;false;false;0;0;0;;;
                                  -231465;1;0;false;false;;;;;;
                                  -231466;2;0;false;false;0;0;0;;;
                                  -231468;1;0;false;false;;;;;;
                                  -231469;4;1;false;false;127;0;85;;;
                                  -231473;1;0;false;false;0;0;0;;;
                                  -231474;1;0;false;false;;;;;;
                                  -231475;1;0;false;false;0;0;0;;;
                                  -231476;4;0;false;false;;;;;;
                                  -231480;5;1;false;false;127;0;85;;;
                                  -231485;24;0;false;false;0;0;0;;;
                                  -231509;3;0;false;false;;;;;;
                                  -231512;1;0;false;false;0;0;0;;;
                                  -231513;1;0;false;false;;;;;;
                                  -231514;4;1;false;false;127;0;85;;;
                                  -231518;1;0;false;false;;;;;;
                                  -231519;1;0;false;false;0;0;0;;;
                                  -231520;4;0;false;false;;;;;;
                                  -231524;5;1;false;false;127;0;85;;;
                                  -231529;19;0;false;false;0;0;0;;;
                                  -231548;3;0;false;false;;;;;;
                                  -231551;1;0;false;false;0;0;0;;;
                                  -231552;2;0;false;false;;;;;;
                                  -231554;1;0;false;false;0;0;0;;;
                                  -231555;2;0;false;false;;;;;;
                                  -231557;3;0;false;false;63;95;191;;;
                                  -231560;4;0;false;false;;;;;;
                                  -231564;1;0;false;false;63;95;191;;;
                                  -231565;1;0;false;false;;;;;;
                                  -231566;4;0;false;false;63;95;191;;;
                                  -231570;1;0;false;false;;;;;;
                                  -231571;7;0;false;false;63;95;191;;;
                                  -231578;1;0;false;false;;;;;;
                                  -231579;3;0;false;false;63;95;191;;;
                                  -231582;1;0;false;false;;;;;;
                                  -231583;6;0;false;false;63;95;191;;;
                                  -231589;1;0;false;false;;;;;;
                                  -231590;10;0;false;false;63;95;191;;;
                                  -231600;1;0;false;false;;;;;;
                                  -231601;6;0;false;false;63;95;191;;;
                                  -231607;1;0;false;false;;;;;;
                                  -231608;5;0;false;false;63;95;191;;;
                                  -231613;1;0;false;false;;;;;;
                                  -231614;5;0;false;false;63;95;191;;;
                                  -231619;1;0;false;false;;;;;;
                                  -231620;9;0;false;false;63;95;191;;;
                                  -231629;3;0;false;false;;;;;;
                                  -231632;1;0;false;false;63;95;191;;;
                                  -231633;1;0;false;false;;;;;;
                                  -231634;4;0;false;false;127;127;159;;;
                                  -231638;3;0;false;false;;;;;;
                                  -231641;1;0;false;false;63;95;191;;;
                                  -231642;3;0;false;false;;;;;;
                                  -231645;1;0;false;false;63;95;191;;;
                                  -231646;1;0;false;false;;;;;;
                                  -231647;7;1;false;false;127;159;191;;;
                                  -231654;6;0;false;false;63;95;191;;;
                                  -231660;1;0;false;false;;;;;;
                                  -231661;2;0;false;false;63;95;191;;;
                                  -231663;1;0;false;false;;;;;;
                                  -231664;4;0;false;false;63;95;191;;;
                                  -231668;1;0;false;false;;;;;;
                                  -231669;6;0;false;false;63;95;191;;;
                                  -231675;1;0;false;false;;;;;;
                                  -231676;8;0;false;false;63;95;191;;;
                                  -231684;1;0;false;false;;;;;;
                                  -231685;1;0;false;false;63;95;191;;;
                                  -231686;1;0;false;false;;;;;;
                                  -231687;4;0;false;false;63;95;191;;;
                                  -231691;1;0;false;false;;;;;;
                                  -231692;7;0;false;false;63;95;191;;;
                                  -231699;1;0;false;false;;;;;;
                                  -231700;3;0;false;false;63;95;191;;;
                                  -231703;1;0;false;false;;;;;;
                                  -231704;5;0;false;false;63;95;191;;;
                                  -231709;1;0;false;false;;;;;;
                                  -231710;2;0;false;false;63;95;191;;;
                                  -231712;1;0;false;false;;;;;;
                                  -231713;5;0;false;false;63;95;191;;;
                                  -231718;3;0;false;false;;;;;;
                                  -231721;1;0;false;false;63;95;191;;;
                                  -231722;2;0;false;false;;;;;;
                                  -231724;6;0;false;false;63;95;191;;;
                                  -231730;1;0;false;false;;;;;;
                                  -231731;6;0;false;false;63;95;191;;;
                                  -231737;1;0;false;false;;;;;;
                                  -231738;4;0;false;false;63;95;191;;;
                                  -231742;1;0;false;false;;;;;;
                                  -231743;3;0;false;false;63;95;191;;;
                                  -231746;1;0;false;false;;;;;;
                                  -231747;4;0;false;false;63;95;191;;;
                                  -231751;1;0;false;false;;;;;;
                                  -231752;6;0;false;false;63;95;191;;;
                                  -231758;1;0;false;false;;;;;;
                                  -231759;2;0;false;false;63;95;191;;;
                                  -231761;1;0;false;false;;;;;;
                                  -231762;7;0;false;false;63;95;191;;;
                                  -231769;1;0;false;false;;;;;;
                                  -231770;5;0;false;false;63;95;191;;;
                                  -231775;1;0;false;false;;;;;;
                                  -231776;7;0;false;false;63;95;191;;;
                                  -231783;3;0;false;false;;;;;;
                                  -231786;1;0;false;false;63;95;191;;;
                                  -231787;1;0;false;false;;;;;;
                                  -231788;11;1;false;false;127;159;191;;;
                                  -231799;12;0;false;false;63;95;191;;;
                                  -231811;1;0;false;false;;;;;;
                                  -231812;4;0;false;false;127;127;159;;;
                                  -231816;3;0;false;false;;;;;;
                                  -231819;1;0;false;false;63;95;191;;;
                                  -231820;4;0;false;false;;;;;;
                                  -231824;4;0;false;false;127;127;159;;;
                                  -231828;21;0;false;false;63;95;191;;;
                                  -231849;1;0;false;false;;;;;;
                                  -231850;1;0;false;false;127;127;159;;;
                                  -231851;1;0;false;false;;;;;;
                                  -231852;2;0;false;false;63;95;191;;;
                                  -231854;1;0;false;false;;;;;;
                                  -231855;3;0;false;false;63;95;191;;;
                                  -231858;1;0;false;false;;;;;;
                                  -231859;8;0;false;false;63;95;191;;;
                                  -231867;1;0;false;false;;;;;;
                                  -231868;3;0;false;false;63;95;191;;;
                                  -231871;1;0;false;false;;;;;;
                                  -231872;4;0;false;false;63;95;191;;;
                                  -231876;1;0;false;false;;;;;;
                                  -231877;8;0;false;false;63;95;191;;;
                                  -231885;5;0;false;false;127;127;159;;;
                                  -231890;3;0;false;false;;;;;;
                                  -231893;1;0;false;false;63;95;191;;;
                                  -231894;4;0;false;false;;;;;;
                                  -231898;4;0;false;false;127;127;159;;;
                                  -231902;27;0;false;false;63;95;191;;;
                                  -231929;1;0;false;false;;;;;;
                                  -231930;1;0;false;false;127;127;159;;;
                                  -231931;1;0;false;false;;;;;;
                                  -231932;2;0;false;false;63;95;191;;;
                                  -231934;1;0;false;false;;;;;;
                                  -231935;3;0;false;false;63;95;191;;;
                                  -231938;1;0;false;false;;;;;;
                                  -231939;6;0;false;false;63;95;191;;;
                                  -231945;1;0;false;false;;;;;;
                                  -231946;4;0;false;false;63;95;191;;;
                                  -231950;1;0;false;false;;;;;;
                                  -231951;3;0;false;false;63;95;191;;;
                                  -231954;1;0;false;false;;;;;;
                                  -231955;6;0;false;false;63;95;191;;;
                                  -231961;1;0;false;false;;;;;;
                                  -231962;4;0;false;false;63;95;191;;;
                                  -231966;1;0;false;false;;;;;;
                                  -231967;7;0;false;false;63;95;191;;;
                                  -231974;1;0;false;false;;;;;;
                                  -231975;3;0;false;false;63;95;191;;;
                                  -231978;1;0;false;false;;;;;;
                                  -231979;8;0;false;false;63;95;191;;;
                                  -231987;5;0;false;false;127;127;159;;;
                                  -231992;3;0;false;false;;;;;;
                                  -231995;1;0;false;false;63;95;191;;;
                                  -231996;1;0;false;false;;;;;;
                                  -231997;5;0;false;false;127;127;159;;;
                                  -232002;3;0;false;false;;;;;;
                                  -232005;2;0;false;false;63;95;191;;;
                                  -232007;2;0;false;false;;;;;;
                                  -232009;6;1;false;false;127;0;85;;;
                                  -232015;1;0;false;false;;;;;;
                                  -232016;4;1;false;false;127;0;85;;;
                                  -232020;1;0;false;false;;;;;;
                                  -232021;22;0;false;false;0;0;0;;;
                                  -232043;7;1;false;false;127;0;85;;;
                                  -232050;1;0;false;false;;;;;;
                                  -232051;7;0;false;false;0;0;0;;;
                                  -232058;1;0;false;false;;;;;;
                                  -232059;1;0;false;false;0;0;0;;;
                                  -232060;3;0;false;false;;;;;;
                                  -232063;14;0;false;false;0;0;0;;;
                                  -232077;3;0;false;false;;;;;;
                                  -232080;18;0;false;false;0;0;0;;;
                                  -232098;1;0;false;false;;;;;;
                                  -232099;1;0;false;false;0;0;0;;;
                                  -232100;1;0;false;false;;;;;;
                                  -232101;7;0;false;false;0;0;0;;;
                                  -232108;2;0;false;false;;;;;;
                                  -232110;1;0;false;false;0;0;0;;;
                                  -232111;2;0;false;false;;;;;;
                                  -232113;3;0;false;false;63;95;191;;;
                                  -232116;3;0;false;false;;;;;;
                                  -232119;1;0;false;false;63;95;191;;;
                                  -232120;1;0;false;false;;;;;;
                                  -232121;4;0;false;false;63;95;191;;;
                                  -232125;1;0;false;false;;;;;;
                                  -232126;7;0;false;false;63;95;191;;;
                                  -232133;1;0;false;false;;;;;;
                                  -232134;3;0;false;false;63;95;191;;;
                                  -232137;1;0;false;false;;;;;;
                                  -232138;6;0;false;false;63;95;191;;;
                                  -232144;1;0;false;false;;;;;;
                                  -232145;7;0;false;false;63;95;191;;;
                                  -232152;1;0;false;false;;;;;;
                                  -232153;3;0;false;false;63;95;191;;;
                                  -232156;1;0;false;false;;;;;;
                                  -232157;2;0;false;false;63;95;191;;;
                                  -232159;1;0;false;false;;;;;;
                                  -232160;7;0;false;false;63;95;191;;;
                                  -232167;3;0;false;false;;;;;;
                                  -232170;1;0;false;false;63;95;191;;;
                                  -232171;1;0;false;false;;;;;;
                                  -232172;4;0;false;false;127;127;159;;;
                                  -232176;3;0;false;false;;;;;;
                                  -232179;1;0;false;false;63;95;191;;;
                                  -232180;3;0;false;false;;;;;;
                                  -232183;1;0;false;false;63;95;191;;;
                                  -232184;1;0;false;false;;;;;;
                                  -232185;7;1;false;false;127;159;191;;;
                                  -232192;8;0;false;false;63;95;191;;;
                                  -232200;1;0;false;false;;;;;;
                                  -232201;2;0;false;false;63;95;191;;;
                                  -232203;1;0;false;false;;;;;;
                                  -232204;4;0;false;false;63;95;191;;;
                                  -232208;1;0;false;false;;;;;;
                                  -232209;7;0;false;false;63;95;191;;;
                                  -232216;1;0;false;false;;;;;;
                                  -232217;3;0;false;false;63;95;191;;;
                                  -232220;1;0;false;false;;;;;;
                                  -232221;2;0;false;false;63;95;191;;;
                                  -232223;1;0;false;false;;;;;;
                                  -232224;7;0;false;false;63;95;191;;;
                                  -232231;1;0;false;false;;;;;;
                                  -232232;2;0;false;false;63;95;191;;;
                                  -232234;1;0;false;false;;;;;;
                                  -232235;5;0;false;false;63;95;191;;;
                                  -232240;1;0;false;false;;;;;;
                                  -232241;7;0;false;false;63;95;191;;;
                                  -232248;1;0;false;false;;;;;;
                                  -232249;3;0;false;false;63;95;191;;;
                                  -232252;1;0;false;false;;;;;;
                                  -232253;3;0;false;false;63;95;191;;;
                                  -232256;1;0;false;false;;;;;;
                                  -232257;2;0;false;false;63;95;191;;;
                                  -232259;4;0;false;false;;;;;;
                                  -232263;1;0;false;false;63;95;191;;;
                                  -232264;2;0;false;false;;;;;;
                                  -232266;6;0;false;false;63;95;191;;;
                                  -232272;3;0;false;false;;;;;;
                                  -232275;1;0;false;false;63;95;191;;;
                                  -232276;1;0;false;false;;;;;;
                                  -232277;11;1;false;false;127;159;191;;;
                                  -232288;12;0;false;false;63;95;191;;;
                                  -232300;1;0;false;false;;;;;;
                                  -232301;4;0;false;false;127;127;159;;;
                                  -232305;3;0;false;false;;;;;;
                                  -232308;1;0;false;false;63;95;191;;;
                                  -232309;4;0;false;false;;;;;;
                                  -232313;4;0;false;false;127;127;159;;;
                                  -232317;21;0;false;false;63;95;191;;;
                                  -232338;1;0;false;false;;;;;;
                                  -232339;1;0;false;false;127;127;159;;;
                                  -232340;1;0;false;false;;;;;;
                                  -232341;2;0;false;false;63;95;191;;;
                                  -232343;1;0;false;false;;;;;;
                                  -232344;3;0;false;false;63;95;191;;;
                                  -232347;1;0;false;false;;;;;;
                                  -232348;8;0;false;false;63;95;191;;;
                                  -232356;1;0;false;false;;;;;;
                                  -232357;3;0;false;false;63;95;191;;;
                                  -232360;1;0;false;false;;;;;;
                                  -232361;4;0;false;false;63;95;191;;;
                                  -232365;1;0;false;false;;;;;;
                                  -232366;8;0;false;false;63;95;191;;;
                                  -232374;5;0;false;false;127;127;159;;;
                                  -232379;3;0;false;false;;;;;;
                                  -232382;1;0;false;false;63;95;191;;;
                                  -232383;4;0;false;false;;;;;;
                                  -232387;4;0;false;false;127;127;159;;;
                                  -232391;27;0;false;false;63;95;191;;;
                                  -232418;1;0;false;false;;;;;;
                                  -232419;1;0;false;false;127;127;159;;;
                                  -232420;1;0;false;false;;;;;;
                                  -232421;2;0;false;false;63;95;191;;;
                                  -232423;1;0;false;false;;;;;;
                                  -232424;3;0;false;false;63;95;191;;;
                                  -232427;1;0;false;false;;;;;;
                                  -232428;6;0;false;false;63;95;191;;;
                                  -232434;1;0;false;false;;;;;;
                                  -232435;4;0;false;false;63;95;191;;;
                                  -232439;1;0;false;false;;;;;;
                                  -232440;3;0;false;false;63;95;191;;;
                                  -232443;1;0;false;false;;;;;;
                                  -232444;6;0;false;false;63;95;191;;;
                                  -232450;1;0;false;false;;;;;;
                                  -232451;4;0;false;false;63;95;191;;;
                                  -232455;1;0;false;false;;;;;;
                                  -232456;7;0;false;false;63;95;191;;;
                                  -232463;1;0;false;false;;;;;;
                                  -232464;3;0;false;false;63;95;191;;;
                                  -232467;1;0;false;false;;;;;;
                                  -232468;8;0;false;false;63;95;191;;;
                                  -232476;5;0;false;false;127;127;159;;;
                                  -232481;3;0;false;false;;;;;;
                                  -232484;1;0;false;false;63;95;191;;;
                                  -232485;1;0;false;false;;;;;;
                                  -232486;5;0;false;false;127;127;159;;;
                                  -232491;3;0;false;false;;;;;;
                                  -232494;2;0;false;false;63;95;191;;;
                                  -232496;2;0;false;false;;;;;;
                                  -232498;6;1;false;false;127;0;85;;;
                                  -232504;1;0;false;false;;;;;;
                                  -232505;4;1;false;false;127;0;85;;;
                                  -232509;1;0;false;false;;;;;;
                                  -232510;12;0;false;false;0;0;0;;;
                                  -232522;7;1;false;false;127;0;85;;;
                                  -232529;1;0;false;false;;;;;;
                                  -232530;9;0;false;false;0;0;0;;;
                                  -232539;1;0;false;false;;;;;;
                                  -232540;1;0;false;false;0;0;0;;;
                                  -232541;3;0;false;false;;;;;;
                                  -232544;14;0;false;false;0;0;0;;;
                                  -232558;3;0;false;false;;;;;;
                                  -232561;4;1;false;false;127;0;85;;;
                                  -232565;9;0;false;false;0;0;0;;;
                                  -232574;1;0;false;false;;;;;;
                                  -232575;1;0;false;false;0;0;0;;;
                                  -232576;1;0;false;false;;;;;;
                                  -232577;9;0;false;false;0;0;0;;;
                                  -232586;2;0;false;false;;;;;;
                                  -232588;1;0;false;false;0;0;0;;;
                                  -232589;2;0;false;false;;;;;;
                                  -232591;3;0;false;false;63;95;191;;;
                                  -232594;3;0;false;false;;;;;;
                                  -232597;1;0;false;false;63;95;191;;;
                                  -232598;1;0;false;false;;;;;;
                                  -232599;4;0;false;false;63;95;191;;;
                                  -232603;1;0;false;false;;;;;;
                                  -232604;1;0;false;false;63;95;191;;;
                                  -232605;1;0;false;false;;;;;;
                                  -232606;3;0;false;false;63;95;191;;;
                                  -232609;1;0;false;false;;;;;;
                                  -232610;4;0;false;false;63;95;191;;;
                                  -232614;1;0;false;false;;;;;;
                                  -232615;2;0;false;false;63;95;191;;;
                                  -232617;1;0;false;false;;;;;;
                                  -232618;6;0;false;false;63;95;191;;;
                                  -232624;1;0;false;false;;;;;;
                                  -232625;4;0;false;false;63;95;191;;;
                                  -232629;1;0;false;false;;;;;;
                                  -232630;5;0;false;false;63;95;191;;;
                                  -232635;3;0;false;false;;;;;;
                                  -232638;1;0;false;false;63;95;191;;;
                                  -232639;1;0;false;false;;;;;;
                                  -232640;3;0;false;false;127;127;159;;;
                                  -232643;3;0;false;false;;;;;;
                                  -232646;1;0;false;false;63;95;191;;;
                                  -232647;1;0;false;false;;;;;;
                                  -232648;3;0;false;false;127;127;159;;;
                                  -232651;5;0;false;false;63;95;191;;;
                                  -232656;4;0;false;false;127;127;159;;;
                                  -232660;1;0;false;false;;;;;;
                                  -232661;6;0;false;false;63;95;191;;;
                                  -232667;1;0;false;false;;;;;;
                                  -232668;5;0;false;false;63;95;191;;;
                                  -232673;1;0;false;false;;;;;;
                                  -232674;3;0;false;false;63;95;191;;;
                                  -232677;1;0;false;false;;;;;;
                                  -232678;3;0;false;false;63;95;191;;;
                                  -232681;1;0;false;false;;;;;;
                                  -232682;9;0;false;false;63;95;191;;;
                                  -232691;1;0;false;false;;;;;;
                                  -232692;6;0;false;false;63;95;191;;;
                                  -232698;1;0;false;false;;;;;;
                                  -232699;4;0;false;false;63;95;191;;;
                                  -232703;1;0;false;false;;;;;;
                                  -232704;4;0;false;false;63;95;191;;;
                                  -232708;1;0;false;false;;;;;;
                                  -232709;2;0;false;false;63;95;191;;;
                                  -232711;1;0;false;false;;;;;;
                                  -232712;8;0;false;false;63;95;191;;;
                                  -232720;3;0;false;false;;;;;;
                                  -232723;1;0;false;false;63;95;191;;;
                                  -232724;1;0;false;false;;;;;;
                                  -232725;3;0;false;false;63;95;191;;;
                                  -232728;1;0;false;false;;;;;;
                                  -232729;3;0;false;false;63;95;191;;;
                                  -232732;1;0;false;false;;;;;;
                                  -232733;4;0;false;false;63;95;191;;;
                                  -232737;1;0;false;false;;;;;;
                                  -232738;8;0;false;false;63;95;191;;;
                                  -232746;1;0;false;false;;;;;;
                                  -232747;2;0;false;false;63;95;191;;;
                                  -232749;1;0;false;false;;;;;;
                                  -232750;7;0;false;false;63;95;191;;;
                                  -232757;1;0;false;false;;;;;;
                                  -232758;6;0;false;false;63;95;191;;;
                                  -232764;3;0;false;false;;;;;;
                                  -232767;1;0;false;false;63;95;191;;;
                                  -232768;1;0;false;false;;;;;;
                                  -232769;4;0;false;false;127;127;159;;;
                                  -232773;3;0;false;false;;;;;;
                                  -232776;1;0;false;false;63;95;191;;;
                                  -232777;3;0;false;false;;;;;;
                                  -232780;1;0;false;false;63;95;191;;;
                                  -232781;1;0;false;false;;;;;;
                                  -232782;7;1;false;false;127;159;191;;;
                                  -232789;4;0;false;false;63;95;191;;;
                                  -232793;1;0;false;false;;;;;;
                                  -232794;3;0;false;false;63;95;191;;;
                                  -232797;1;0;false;false;;;;;;
                                  -232798;4;0;false;false;63;95;191;;;
                                  -232802;3;0;false;false;;;;;;
                                  -232805;1;0;false;false;63;95;191;;;
                                  -232806;1;0;false;false;;;;;;
                                  -232807;11;1;false;false;127;159;191;;;
                                  -232818;12;0;false;false;63;95;191;;;
                                  -232830;1;0;false;false;;;;;;
                                  -232831;4;0;false;false;127;127;159;;;
                                  -232835;3;0;false;false;;;;;;
                                  -232838;1;0;false;false;63;95;191;;;
                                  -232839;4;0;false;false;;;;;;
                                  -232843;4;0;false;false;127;127;159;;;
                                  -232847;21;0;false;false;63;95;191;;;
                                  -232868;1;0;false;false;;;;;;
                                  -232869;1;0;false;false;127;127;159;;;
                                  -232870;1;0;false;false;;;;;;
                                  -232871;2;0;false;false;63;95;191;;;
                                  -232873;1;0;false;false;;;;;;
                                  -232874;3;0;false;false;63;95;191;;;
                                  -232877;1;0;false;false;;;;;;
                                  -232878;8;0;false;false;63;95;191;;;
                                  -232886;1;0;false;false;;;;;;
                                  -232887;3;0;false;false;63;95;191;;;
                                  -232890;1;0;false;false;;;;;;
                                  -232891;4;0;false;false;63;95;191;;;
                                  -232895;1;0;false;false;;;;;;
                                  -232896;8;0;false;false;63;95;191;;;
                                  -232904;5;0;false;false;127;127;159;;;
                                  -232909;3;0;false;false;;;;;;
                                  -232912;1;0;false;false;63;95;191;;;
                                  -232913;4;0;false;false;;;;;;
                                  -232917;4;0;false;false;127;127;159;;;
                                  -232921;27;0;false;false;63;95;191;;;
                                  -232948;1;0;false;false;;;;;;
                                  -232949;1;0;false;false;127;127;159;;;
                                  -232950;1;0;false;false;;;;;;
                                  -232951;2;0;false;false;63;95;191;;;
                                  -232953;1;0;false;false;;;;;;
                                  -232954;3;0;false;false;63;95;191;;;
                                  -232957;1;0;false;false;;;;;;
                                  -232958;6;0;false;false;63;95;191;;;
                                  -232964;1;0;false;false;;;;;;
                                  -232965;4;0;false;false;63;95;191;;;
                                  -232969;1;0;false;false;;;;;;
                                  -232970;3;0;false;false;63;95;191;;;
                                  -232973;1;0;false;false;;;;;;
                                  -232974;6;0;false;false;63;95;191;;;
                                  -232980;1;0;false;false;;;;;;
                                  -232981;4;0;false;false;63;95;191;;;
                                  -232985;1;0;false;false;;;;;;
                                  -232986;7;0;false;false;63;95;191;;;
                                  -232993;1;0;false;false;;;;;;
                                  -232994;3;0;false;false;63;95;191;;;
                                  -232997;1;0;false;false;;;;;;
                                  -232998;8;0;false;false;63;95;191;;;
                                  -233006;5;0;false;false;127;127;159;;;
                                  -233011;3;0;false;false;;;;;;
                                  -233014;1;0;false;false;63;95;191;;;
                                  -233015;1;0;false;false;;;;;;
                                  -233016;5;0;false;false;127;127;159;;;
                                  -233021;3;0;false;false;;;;;;
                                  -233024;2;0;false;false;63;95;191;;;
                                  -233026;2;0;false;false;;;;;;
                                  -233028;6;1;false;false;127;0;85;;;
                                  -233034;1;0;false;false;;;;;;
                                  -233035;4;1;false;false;127;0;85;;;
                                  -233039;1;0;false;false;;;;;;
                                  -233040;12;0;false;false;0;0;0;;;
                                  -233052;1;0;false;false;;;;;;
                                  -233053;5;0;false;false;0;0;0;;;
                                  -233058;1;0;false;false;;;;;;
                                  -233059;1;0;false;false;0;0;0;;;
                                  -233060;3;0;false;false;;;;;;
                                  -233063;14;0;false;false;0;0;0;;;
                                  -233077;3;0;false;false;;;;;;
                                  -233080;3;1;false;false;127;0;85;;;
                                  -233083;1;0;false;false;;;;;;
                                  -233084;13;0;false;false;0;0;0;;;
                                  -233097;1;0;false;false;;;;;;
                                  -233098;1;0;false;false;0;0;0;;;
                                  -233099;1;0;false;false;;;;;;
                                  -233100;11;0;false;false;0;0;0;;;
                                  -233111;6;0;false;false;;;;;;
                                  -233117;5;1;false;false;127;0;85;;;
                                  -233122;15;0;false;false;0;0;0;;;
                                  -233137;4;0;false;false;;;;;;
                                  -233141;21;0;false;false;0;0;0;;;
                                  -233162;3;0;false;false;;;;;;
                                  -233165;47;0;false;false;63;127;95;;;
                                  -233212;1;0;false;false;;;;;;
                                  -233213;2;1;false;false;127;0;85;;;
                                  -233215;1;0;false;false;;;;;;
                                  -233216;11;0;false;false;0;0;0;;;
                                  -233227;1;0;false;false;;;;;;
                                  -233228;2;0;false;false;0;0;0;;;
                                  -233230;1;0;false;false;;;;;;
                                  -233231;14;0;false;false;0;0;0;;;
                                  -233245;1;0;false;false;;;;;;
                                  -233246;1;0;false;false;0;0;0;;;
                                  -233247;4;0;false;false;;;;;;
                                  -233251;44;0;false;false;0;0;0;;;
                                  -233295;1;0;false;false;;;;;;
                                  -233296;1;0;false;false;0;0;0;;;
                                  -233297;1;0;false;false;;;;;;
                                  -233298;10;0;false;false;0;0;0;;;
                                  -233308;1;0;false;false;;;;;;
                                  -233309;1;0;false;false;0;0;0;;;
                                  -233310;1;0;false;false;;;;;;
                                  -233311;14;0;false;false;0;0;0;;;
                                  -233325;1;0;false;false;;;;;;
                                  -233326;4;1;false;false;127;0;85;;;
                                  -233330;2;0;false;false;0;0;0;;;
                                  -233332;4;0;false;false;;;;;;
                                  -233336;23;0;false;false;0;0;0;;;
                                  -233359;3;0;false;false;;;;;;
                                  -233362;1;0;false;false;0;0;0;;;
                                  -233363;3;0;false;false;;;;;;
                                  -233366;24;0;false;false;0;0;0;;;
                                  -233390;3;0;false;false;;;;;;
                                  -233393;22;0;false;false;0;0;0;;;
                                  -233415;3;0;false;false;;;;;;
                                  -233418;2;1;false;false;127;0;85;;;
                                  -233420;1;0;false;false;;;;;;
                                  -233421;15;0;false;false;0;0;0;;;
                                  -233436;1;0;false;false;;;;;;
                                  -233437;21;0;false;false;0;0;0;;;
                                  -233458;3;0;false;false;;;;;;
                                  -233461;14;0;false;false;0;0;0;;;
                                  -233475;1;0;false;false;;;;;;
                                  -233476;1;0;false;false;0;0;0;;;
                                  -233477;1;0;false;false;;;;;;
                                  -233478;9;0;false;false;0;0;0;;;
                                  -233487;3;0;false;false;;;;;;
                                  -233490;46;0;false;false;63;127;95;;;
                                  -233536;1;0;false;false;;;;;;
                                  -233537;19;0;false;false;0;0;0;;;
                                  -233556;3;0;false;false;;;;;;
                                  -233559;5;1;false;false;127;0;85;;;
                                  -233564;10;0;false;false;0;0;0;;;
                                  -233574;2;0;false;false;;;;;;
                                  -233576;1;0;false;false;0;0;0;;;
                                  -233577;2;0;false;false;;;;;;
                                  -233579;3;0;false;false;63;95;191;;;
                                  -233582;3;0;false;false;;;;;;
                                  -233585;1;0;false;false;63;95;191;;;
                                  -233586;1;0;false;false;;;;;;
                                  -233587;5;1;false;false;127;159;191;;;
                                  -233592;45;0;false;false;63;95;191;;;
                                  -233637;3;0;false;false;;;;;;
                                  -233640;2;0;false;false;63;95;191;;;
                                  -233642;2;0;false;false;;;;;;
                                  -233644;6;1;false;false;127;0;85;;;
                                  -233650;1;0;false;false;;;;;;
                                  -233651;4;1;false;false;127;0;85;;;
                                  -233655;1;0;false;false;;;;;;
                                  -233656;19;0;false;false;0;0;0;;;
                                  -233675;1;0;false;false;;;;;;
                                  -233676;6;0;false;false;0;0;0;;;
                                  -233682;1;0;false;false;;;;;;
                                  -233683;1;0;false;false;0;0;0;;;
                                  -233684;3;0;false;false;;;;;;
                                  -233687;14;0;false;false;0;0;0;;;
                                  -233701;3;0;false;false;;;;;;
                                  -233704;10;0;false;false;0;0;0;;;
                                  -233714;1;0;false;false;;;;;;
                                  -233715;1;0;false;false;0;0;0;;;
                                  -233716;1;0;false;false;;;;;;
                                  -233717;6;0;false;false;0;0;0;;;
                                  -233723;3;0;false;false;;;;;;
                                  -233726;5;1;false;false;127;0;85;;;
                                  -233731;32;0;false;false;0;0;0;;;
                                  -233763;3;0;false;false;;;;;;
                                  -233766;9;0;false;false;0;0;0;;;
                                  -233775;2;0;false;false;;;;;;
                                  -233777;1;0;false;false;0;0;0;;;
                                  -233778;2;0;false;false;;;;;;
                                  -233780;3;0;false;false;63;95;191;;;
                                  -233783;4;0;false;false;;;;;;
                                  -233787;1;0;false;false;63;95;191;;;
                                  -233788;1;0;false;false;;;;;;
                                  -233789;4;0;false;false;63;95;191;;;
                                  -233793;1;0;false;false;;;;;;
                                  -233794;3;0;false;false;63;95;191;;;
                                  -233797;1;0;false;false;;;;;;
                                  -233798;10;0;false;false;63;95;191;;;
                                  -233808;1;0;false;false;;;;;;
                                  -233809;6;0;false;false;63;95;191;;;
                                  -233815;1;0;false;false;;;;;;
                                  -233816;6;0;false;false;63;95;191;;;
                                  -233822;1;0;false;false;;;;;;
                                  -233823;8;0;false;false;63;95;191;;;
                                  -233831;1;0;false;false;;;;;;
                                  -233832;2;0;false;false;63;95;191;;;
                                  -233834;1;0;false;false;;;;;;
                                  -233835;3;0;false;false;63;95;191;;;
                                  -233838;1;0;false;false;;;;;;
                                  -233839;5;0;false;false;63;95;191;;;
                                  -233844;1;0;false;false;;;;;;
                                  -233845;2;0;false;false;63;95;191;;;
                                  -233847;1;0;false;false;;;;;;
                                  -233848;3;0;false;false;63;95;191;;;
                                  -233851;1;0;false;false;;;;;;
                                  -233852;5;0;false;false;63;95;191;;;
                                  -233857;3;0;false;false;;;;;;
                                  -233860;1;0;false;false;63;95;191;;;
                                  -233861;1;0;false;false;;;;;;
                                  -233862;2;0;false;false;63;95;191;;;
                                  -233864;1;0;false;false;;;;;;
                                  -233865;7;0;false;false;63;95;191;;;
                                  -233872;1;0;false;false;;;;;;
                                  -233873;2;0;false;false;63;95;191;;;
                                  -233875;1;0;false;false;;;;;;
                                  -233876;5;0;false;false;63;95;191;;;
                                  -233881;1;0;false;false;;;;;;
                                  -233882;2;0;false;false;63;95;191;;;
                                  -233884;1;0;false;false;;;;;;
                                  -233885;2;0;false;false;63;95;191;;;
                                  -233887;1;0;false;false;;;;;;
                                  -233888;4;0;false;false;63;95;191;;;
                                  -233892;1;0;false;false;;;;;;
                                  -233893;4;0;false;false;63;95;191;;;
                                  -233897;3;0;false;false;;;;;;
                                  -233900;1;0;false;false;63;95;191;;;
                                  -233901;1;0;false;false;;;;;;
                                  -233902;3;0;false;false;127;127;159;;;
                                  -233905;3;0;false;false;;;;;;
                                  -233908;1;0;false;false;63;95;191;;;
                                  -233909;1;0;false;false;;;;;;
                                  -233910;3;0;false;false;127;127;159;;;
                                  -233913;5;0;false;false;63;95;191;;;
                                  -233918;4;0;false;false;127;127;159;;;
                                  -233922;1;0;false;false;;;;;;
                                  -233923;3;0;false;false;63;95;191;;;
                                  -233926;1;0;false;false;;;;;;
                                  -233927;10;0;false;false;63;95;191;;;
                                  -233937;1;0;false;false;;;;;;
                                  -233938;5;0;false;false;63;95;191;;;
                                  -233943;1;0;false;false;;;;;;
                                  -233944;2;0;false;false;63;95;191;;;
                                  -233946;1;0;false;false;;;;;;
                                  -233947;5;0;false;false;63;95;191;;;
                                  -233952;1;0;false;false;;;;;;
                                  -233953;2;0;false;false;63;95;191;;;
                                  -233955;1;0;false;false;;;;;;
                                  -233956;1;0;false;false;63;95;191;;;
                                  -233957;1;0;false;false;;;;;;
                                  -233958;4;0;false;false;63;95;191;;;
                                  -233962;1;0;false;false;;;;;;
                                  -233963;3;0;false;false;63;95;191;;;
                                  -233966;1;0;false;false;;;;;;
                                  -233967;4;0;false;false;63;95;191;;;
                                  -233971;1;0;false;false;;;;;;
                                  -233972;2;0;false;false;63;95;191;;;
                                  -233974;1;0;false;false;;;;;;
                                  -233975;3;0;false;false;63;95;191;;;
                                  -233978;1;0;false;false;;;;;;
                                  -233979;2;0;false;false;63;95;191;;;
                                  -233981;1;0;false;false;;;;;;
                                  -233982;3;0;false;false;63;95;191;;;
                                  -233985;4;0;false;false;;;;;;
                                  -233989;1;0;false;false;63;95;191;;;
                                  -233990;1;0;false;false;;;;;;
                                  -233991;7;0;false;false;63;95;191;;;
                                  -233998;3;0;false;false;;;;;;
                                  -234001;1;0;false;false;63;95;191;;;
                                  -234002;1;0;false;false;;;;;;
                                  -234003;4;0;false;false;127;127;159;;;
                                  -234007;3;0;false;false;;;;;;
                                  -234010;1;0;false;false;63;95;191;;;
                                  -234011;3;0;false;false;;;;;;
                                  -234014;1;0;false;false;63;95;191;;;
                                  -234015;1;0;false;false;;;;;;
                                  -234016;7;1;false;false;127;159;191;;;
                                  -234023;6;0;false;false;63;95;191;;;
                                  -234029;1;0;false;false;;;;;;
                                  -234030;10;0;false;false;63;95;191;;;
                                  -234040;1;0;false;false;;;;;;
                                  -234041;6;0;false;false;63;95;191;;;
                                  -234047;1;0;false;false;;;;;;
                                  -234048;6;0;false;false;63;95;191;;;
                                  -234054;1;0;false;false;;;;;;
                                  -234055;8;0;false;false;63;95;191;;;
                                  -234063;1;0;false;false;;;;;;
                                  -234064;2;0;false;false;63;95;191;;;
                                  -234066;1;0;false;false;;;;;;
                                  -234067;3;0;false;false;63;95;191;;;
                                  -234070;1;0;false;false;;;;;;
                                  -234071;5;0;false;false;63;95;191;;;
                                  -234076;4;0;false;false;;;;;;
                                  -234080;1;0;false;false;63;95;191;;;
                                  -234081;2;0;false;false;;;;;;
                                  -234083;2;0;false;false;63;95;191;;;
                                  -234085;1;0;false;false;;;;;;
                                  -234086;3;0;false;false;63;95;191;;;
                                  -234089;1;0;false;false;;;;;;
                                  -234090;5;0;false;false;63;95;191;;;
                                  -234095;1;0;false;false;;;;;;
                                  -234096;8;0;false;false;63;95;191;;;
                                  -234104;1;0;false;false;;;;;;
                                  -234105;2;0;false;false;63;95;191;;;
                                  -234107;1;0;false;false;;;;;;
                                  -234108;9;0;false;false;63;95;191;;;
                                  -234117;1;0;false;false;;;;;;
                                  -234118;10;0;false;false;63;95;191;;;
                                  -234128;1;0;false;false;;;;;;
                                  -234129;8;0;false;false;63;95;191;;;
                                  -234137;1;0;false;false;;;;;;
                                  -234138;2;0;false;false;63;95;191;;;
                                  -234140;1;0;false;false;;;;;;
                                  -234141;2;0;false;false;63;95;191;;;
                                  -234143;1;0;false;false;;;;;;
                                  -234144;2;0;false;false;63;95;191;;;
                                  -234146;4;0;false;false;;;;;;
                                  -234150;1;0;false;false;63;95;191;;;
                                  -234151;2;0;false;false;;;;;;
                                  -234153;5;0;false;false;63;95;191;;;
                                  -234158;1;0;false;false;;;;;;
                                  -234159;2;0;false;false;63;95;191;;;
                                  -234161;1;0;false;false;;;;;;
                                  -234162;1;0;false;false;63;95;191;;;
                                  -234163;1;0;false;false;;;;;;
                                  -234164;3;0;false;false;63;95;191;;;
                                  -234167;1;0;false;false;;;;;;
                                  -234168;7;0;false;false;63;95;191;;;
                                  -234175;1;0;false;false;;;;;;
                                  -234176;2;0;false;false;63;95;191;;;
                                  -234178;1;0;false;false;;;;;;
                                  -234179;3;0;false;false;63;95;191;;;
                                  -234182;1;0;false;false;;;;;;
                                  -234183;9;0;false;false;63;95;191;;;
                                  -234192;1;0;false;false;;;;;;
                                  -234193;2;0;false;false;63;95;191;;;
                                  -234195;1;0;false;false;;;;;;
                                  -234196;1;0;false;false;63;95;191;;;
                                  -234197;1;0;false;false;;;;;;
                                  -234198;1;0;false;false;63;95;191;;;
                                  -234199;1;0;false;false;;;;;;
                                  -234200;1;0;false;false;63;95;191;;;
                                  -234201;1;0;false;false;;;;;;
                                  -234202;3;0;false;false;63;95;191;;;
                                  -234205;1;0;false;false;;;;;;
                                  -234206;7;0;false;false;63;95;191;;;
                                  -234213;1;0;false;false;;;;;;
                                  -234214;2;0;false;false;63;95;191;;;
                                  -234216;1;0;false;false;;;;;;
                                  -234217;9;0;false;false;63;95;191;;;
                                  -234226;3;0;false;false;;;;;;
                                  -234229;1;0;false;false;63;95;191;;;
                                  -234230;1;0;false;false;;;;;;
                                  -234231;11;1;false;false;127;159;191;;;
                                  -234242;12;0;false;false;63;95;191;;;
                                  -234254;1;0;false;false;;;;;;
                                  -234255;4;0;false;false;127;127;159;;;
                                  -234259;3;0;false;false;;;;;;
                                  -234262;1;0;false;false;63;95;191;;;
                                  -234263;4;0;false;false;;;;;;
                                  -234267;4;0;false;false;127;127;159;;;
                                  -234271;21;0;false;false;63;95;191;;;
                                  -234292;1;0;false;false;;;;;;
                                  -234293;1;0;false;false;127;127;159;;;
                                  -234294;1;0;false;false;;;;;;
                                  -234295;2;0;false;false;63;95;191;;;
                                  -234297;1;0;false;false;;;;;;
                                  -234298;3;0;false;false;63;95;191;;;
                                  -234301;1;0;false;false;;;;;;
                                  -234302;8;0;false;false;63;95;191;;;
                                  -234310;1;0;false;false;;;;;;
                                  -234311;3;0;false;false;63;95;191;;;
                                  -234314;1;0;false;false;;;;;;
                                  -234315;4;0;false;false;63;95;191;;;
                                  -234319;1;0;false;false;;;;;;
                                  -234320;8;0;false;false;63;95;191;;;
                                  -234328;5;0;false;false;127;127;159;;;
                                  -234333;3;0;false;false;;;;;;
                                  -234336;1;0;false;false;63;95;191;;;
                                  -234337;4;0;false;false;;;;;;
                                  -234341;4;0;false;false;127;127;159;;;
                                  -234345;27;0;false;false;63;95;191;;;
                                  -234372;1;0;false;false;;;;;;
                                  -234373;1;0;false;false;127;127;159;;;
                                  -234374;1;0;false;false;;;;;;
                                  -234375;2;0;false;false;63;95;191;;;
                                  -234377;1;0;false;false;;;;;;
                                  -234378;3;0;false;false;63;95;191;;;
                                  -234381;1;0;false;false;;;;;;
                                  -234382;6;0;false;false;63;95;191;;;
                                  -234388;1;0;false;false;;;;;;
                                  -234389;4;0;false;false;63;95;191;;;
                                  -234393;1;0;false;false;;;;;;
                                  -234394;3;0;false;false;63;95;191;;;
                                  -234397;1;0;false;false;;;;;;
                                  -234398;6;0;false;false;63;95;191;;;
                                  -234404;1;0;false;false;;;;;;
                                  -234405;4;0;false;false;63;95;191;;;
                                  -234409;1;0;false;false;;;;;;
                                  -234410;7;0;false;false;63;95;191;;;
                                  -234417;1;0;false;false;;;;;;
                                  -234418;3;0;false;false;63;95;191;;;
                                  -234421;1;0;false;false;;;;;;
                                  -234422;8;0;false;false;63;95;191;;;
                                  -234430;5;0;false;false;127;127;159;;;
                                  -234435;3;0;false;false;;;;;;
                                  -234438;1;0;false;false;63;95;191;;;
                                  -234439;1;0;false;false;;;;;;
                                  -234440;5;0;false;false;127;127;159;;;
                                  -234445;3;0;false;false;;;;;;
                                  -234448;2;0;false;false;63;95;191;;;
                                  -234450;2;0;false;false;;;;;;
                                  -234452;6;1;false;false;127;0;85;;;
                                  -234458;1;0;false;false;;;;;;
                                  -234459;4;1;false;false;127;0;85;;;
                                  -234463;1;0;false;false;;;;;;
                                  -234464;19;0;false;false;0;0;0;;;
                                  -234483;3;1;false;false;127;0;85;;;
                                  -234486;1;0;false;false;;;;;;
                                  -234487;7;0;false;false;0;0;0;;;
                                  -234494;1;0;false;false;;;;;;
                                  -234495;1;0;false;false;0;0;0;;;
                                  -234496;3;0;false;false;;;;;;
                                  -234499;14;0;false;false;0;0;0;;;
                                  -234513;3;0;false;false;;;;;;
                                  -234516;3;1;false;false;127;0;85;;;
                                  -234519;1;0;false;false;;;;;;
                                  -234520;15;0;false;false;0;0;0;;;
                                  -234535;1;0;false;false;;;;;;
                                  -234536;1;0;false;false;0;0;0;;;
                                  -234537;1;0;false;false;;;;;;
                                  -234538;22;0;false;false;0;0;0;;;
                                  -234560;3;0;false;false;;;;;;
                                  -234563;2;1;false;false;127;0;85;;;
                                  -234565;1;0;false;false;;;;;;
                                  -234566;15;0;false;false;0;0;0;;;
                                  -234581;1;0;false;false;;;;;;
                                  -234582;2;0;false;false;0;0;0;;;
                                  -234584;1;0;false;false;;;;;;
                                  -234585;2;0;false;false;0;0;0;;;
                                  -234587;1;0;false;false;;;;;;
                                  -234588;1;0;false;false;0;0;0;;;
                                  -234589;4;0;false;false;;;;;;
                                  -234593;6;1;false;false;127;0;85;;;
                                  -234599;1;0;false;false;0;0;0;;;
                                  -234600;3;0;false;false;;;;;;
                                  -234603;1;0;false;false;0;0;0;;;
                                  -234604;4;0;false;false;;;;;;
                                  -234608;2;1;false;false;127;0;85;;;
                                  -234610;1;0;false;false;;;;;;
                                  -234611;7;0;false;false;0;0;0;;;
                                  -234618;1;0;false;false;;;;;;
                                  -234619;1;0;false;false;0;0;0;;;
                                  -234620;1;0;false;false;;;;;;
                                  -234621;2;0;false;false;0;0;0;;;
                                  -234623;1;0;false;false;;;;;;
                                  -234624;1;0;false;false;0;0;0;;;
                                  -234625;4;0;false;false;;;;;;
                                  -234629;6;0;false;false;0;0;0;;;
                                  -234635;1;0;false;false;;;;;;
                                  -234636;1;0;false;false;0;0;0;;;
                                  -234637;1;0;false;false;;;;;;
                                  -234638;2;0;false;false;0;0;0;;;
                                  -234640;3;0;false;false;;;;;;
                                  -234643;1;0;false;false;0;0;0;;;
                                  -234644;3;0;false;false;;;;;;
                                  -234647;6;0;false;false;0;0;0;;;
                                  -234653;1;0;false;false;;;;;;
                                  -234654;2;0;false;false;0;0;0;;;
                                  -234656;1;0;false;false;;;;;;
                                  -234657;25;0;false;false;0;0;0;;;
                                  -234682;3;0;false;false;;;;;;
                                  -234685;59;0;false;false;63;127;95;;;
                                  -234744;1;0;false;false;;;;;;
                                  -234745;46;0;false;false;63;127;95;;;
                                  -234791;1;0;false;false;;;;;;
                                  -234792;61;0;false;false;63;127;95;;;
                                  -234853;1;0;false;false;;;;;;
                                  -234854;29;0;false;false;63;127;95;;;
                                  -234883;1;0;false;false;;;;;;
                                  -234884;2;1;false;false;127;0;85;;;
                                  -234886;1;0;false;false;;;;;;
                                  -234887;16;0;false;false;0;0;0;;;
                                  -234903;1;0;false;false;;;;;;
                                  -234904;1;0;false;false;0;0;0;;;
                                  -234905;1;0;false;false;;;;;;
                                  -234906;2;0;false;false;0;0;0;;;
                                  -234908;1;0;false;false;;;;;;
                                  -234909;1;0;false;false;0;0;0;;;
                                  -234910;4;0;false;false;;;;;;
                                  -234914;3;1;false;false;127;0;85;;;
                                  -234917;1;0;false;false;;;;;;
                                  -234918;5;0;false;false;0;0;0;;;
                                  -234923;1;0;false;false;;;;;;
                                  -234924;1;0;false;false;0;0;0;;;
                                  -234925;1;0;false;false;;;;;;
                                  -234926;21;0;false;false;0;0;0;;;
                                  -234947;4;0;false;false;;;;;;
                                  -234951;62;0;false;false;63;127;95;;;
                                  -235013;2;0;false;false;;;;;;
                                  -235015;63;0;false;false;63;127;95;;;
                                  -235078;2;0;false;false;;;;;;
                                  -235080;31;0;false;false;63;127;95;;;
                                  -235111;2;0;false;false;;;;;;
                                  -235113;2;1;false;false;127;0;85;;;
                                  -235115;1;0;false;false;;;;;;
                                  -235116;7;0;false;false;0;0;0;;;
                                  -235123;1;0;false;false;;;;;;
                                  -235124;1;0;false;false;0;0;0;;;
                                  -235125;1;0;false;false;;;;;;
                                  -235126;5;0;false;false;0;0;0;;;
                                  -235131;1;0;false;false;;;;;;
                                  -235132;1;0;false;false;0;0;0;;;
                                  -235133;1;0;false;false;;;;;;
                                  -235134;16;0;false;false;0;0;0;;;
                                  -235150;1;0;false;false;;;;;;
                                  -235151;1;0;false;false;0;0;0;;;
                                  -235152;5;0;false;false;;;;;;
                                  -235157;6;0;false;false;0;0;0;;;
                                  -235163;1;0;false;false;;;;;;
                                  -235164;1;0;false;false;0;0;0;;;
                                  -235165;1;0;false;false;;;;;;
                                  -235166;11;0;false;false;0;0;0;;;
                                  -235177;1;0;false;false;;;;;;
                                  -235178;5;0;false;false;0;0;0;;;
                                  -235183;1;0;false;false;;;;;;
                                  -235184;1;0;false;false;0;0;0;;;
                                  -235185;1;0;false;false;;;;;;
                                  -235186;17;0;false;false;0;0;0;;;
                                  -235203;4;0;false;false;;;;;;
                                  -235207;1;0;false;false;0;0;0;;;
                                  -235208;3;0;false;false;;;;;;
                                  -235211;1;0;false;false;0;0;0;;;
                                  -235212;3;0;false;false;;;;;;
                                  -235215;26;0;false;false;0;0;0;;;
                                  -235241;1;0;false;false;;;;;;
                                  -235242;1;0;false;false;0;0;0;;;
                                  -235243;1;0;false;false;;;;;;
                                  -235244;24;0;false;false;0;0;0;;;
                                  -235268;2;0;false;false;;;;;;
                                  -235270;1;0;false;false;0;0;0;;;
                                  -235271;2;0;false;false;;;;;;
                                  -235273;3;0;false;false;63;95;191;;;
                                  -235276;4;0;false;false;;;;;;
                                  -235280;1;0;false;false;63;95;191;;;
                                  -235281;1;0;false;false;;;;;;
                                  -235282;4;0;false;false;63;95;191;;;
                                  -235286;1;0;false;false;;;;;;
                                  -235287;3;0;false;false;63;95;191;;;
                                  -235290;1;0;false;false;;;;;;
                                  -235291;10;0;false;false;63;95;191;;;
                                  -235301;1;0;false;false;;;;;;
                                  -235302;5;0;false;false;63;95;191;;;
                                  -235307;1;0;false;false;;;;;;
                                  -235308;6;0;false;false;63;95;191;;;
                                  -235314;1;0;false;false;;;;;;
                                  -235315;8;0;false;false;63;95;191;;;
                                  -235323;1;0;false;false;;;;;;
                                  -235324;2;0;false;false;63;95;191;;;
                                  -235326;1;0;false;false;;;;;;
                                  -235327;3;0;false;false;63;95;191;;;
                                  -235330;1;0;false;false;;;;;;
                                  -235331;5;0;false;false;63;95;191;;;
                                  -235336;1;0;false;false;;;;;;
                                  -235337;2;0;false;false;63;95;191;;;
                                  -235339;1;0;false;false;;;;;;
                                  -235340;3;0;false;false;63;95;191;;;
                                  -235343;1;0;false;false;;;;;;
                                  -235344;5;0;false;false;63;95;191;;;
                                  -235349;3;0;false;false;;;;;;
                                  -235352;1;0;false;false;63;95;191;;;
                                  -235353;1;0;false;false;;;;;;
                                  -235354;2;0;false;false;63;95;191;;;
                                  -235356;1;0;false;false;;;;;;
                                  -235357;7;0;false;false;63;95;191;;;
                                  -235364;1;0;false;false;;;;;;
                                  -235365;2;0;false;false;63;95;191;;;
                                  -235367;1;0;false;false;;;;;;
                                  -235368;5;0;false;false;63;95;191;;;
                                  -235373;1;0;false;false;;;;;;
                                  -235374;2;0;false;false;63;95;191;;;
                                  -235376;1;0;false;false;;;;;;
                                  -235377;2;0;false;false;63;95;191;;;
                                  -235379;1;0;false;false;;;;;;
                                  -235380;4;0;false;false;63;95;191;;;
                                  -235384;1;0;false;false;;;;;;
                                  -235385;4;0;false;false;63;95;191;;;
                                  -235389;3;0;false;false;;;;;;
                                  -235392;1;0;false;false;63;95;191;;;
                                  -235393;1;0;false;false;;;;;;
                                  -235394;3;0;false;false;127;127;159;;;
                                  -235397;3;0;false;false;;;;;;
                                  -235400;1;0;false;false;63;95;191;;;
                                  -235401;1;0;false;false;;;;;;
                                  -235402;3;0;false;false;127;127;159;;;
                                  -235405;5;0;false;false;63;95;191;;;
                                  -235410;4;0;false;false;127;127;159;;;
                                  -235414;1;0;false;false;;;;;;
                                  -235415;3;0;false;false;63;95;191;;;
                                  -235418;1;0;false;false;;;;;;
                                  -235419;10;0;false;false;63;95;191;;;
                                  -235429;1;0;false;false;;;;;;
                                  -235430;5;0;false;false;63;95;191;;;
                                  -235435;1;0;false;false;;;;;;
                                  -235436;6;0;false;false;63;95;191;;;
                                  -235442;1;0;false;false;;;;;;
                                  -235443;2;0;false;false;63;95;191;;;
                                  -235445;1;0;false;false;;;;;;
                                  -235446;5;0;false;false;63;95;191;;;
                                  -235451;1;0;false;false;;;;;;
                                  -235452;2;0;false;false;63;95;191;;;
                                  -235454;1;0;false;false;;;;;;
                                  -235455;1;0;false;false;63;95;191;;;
                                  -235456;1;0;false;false;;;;;;
                                  -235457;4;0;false;false;63;95;191;;;
                                  -235461;1;0;false;false;;;;;;
                                  -235462;3;0;false;false;63;95;191;;;
                                  -235465;1;0;false;false;;;;;;
                                  -235466;4;0;false;false;63;95;191;;;
                                  -235470;4;0;false;false;;;;;;
                                  -235474;1;0;false;false;63;95;191;;;
                                  -235475;1;0;false;false;;;;;;
                                  -235476;2;0;false;false;63;95;191;;;
                                  -235478;1;0;false;false;;;;;;
                                  -235479;3;0;false;false;63;95;191;;;
                                  -235482;1;0;false;false;;;;;;
                                  -235483;2;0;false;false;63;95;191;;;
                                  -235485;1;0;false;false;;;;;;
                                  -235486;3;0;false;false;63;95;191;;;
                                  -235489;1;0;false;false;;;;;;
                                  -235490;7;0;false;false;63;95;191;;;
                                  -235497;3;0;false;false;;;;;;
                                  -235500;1;0;false;false;63;95;191;;;
                                  -235501;1;0;false;false;;;;;;
                                  -235502;4;0;false;false;127;127;159;;;
                                  -235506;3;0;false;false;;;;;;
                                  -235509;1;0;false;false;63;95;191;;;
                                  -235510;3;0;false;false;;;;;;
                                  -235513;1;0;false;false;63;95;191;;;
                                  -235514;1;0;false;false;;;;;;
                                  -235515;7;1;false;false;127;159;191;;;
                                  -235522;5;0;false;false;63;95;191;;;
                                  -235527;1;0;false;false;;;;;;
                                  -235528;10;0;false;false;63;95;191;;;
                                  -235538;1;0;false;false;;;;;;
                                  -235539;5;0;false;false;63;95;191;;;
                                  -235544;1;0;false;false;;;;;;
                                  -235545;6;0;false;false;63;95;191;;;
                                  -235551;1;0;false;false;;;;;;
                                  -235552;8;0;false;false;63;95;191;;;
                                  -235560;1;0;false;false;;;;;;
                                  -235561;2;0;false;false;63;95;191;;;
                                  -235563;1;0;false;false;;;;;;
                                  -235564;3;0;false;false;63;95;191;;;
                                  -235567;1;0;false;false;;;;;;
                                  -235568;5;0;false;false;63;95;191;;;
                                  -235573;4;0;false;false;;;;;;
                                  -235577;1;0;false;false;63;95;191;;;
                                  -235578;2;0;false;false;;;;;;
                                  -235580;2;0;false;false;63;95;191;;;
                                  -235582;1;0;false;false;;;;;;
                                  -235583;3;0;false;false;63;95;191;;;
                                  -235586;1;0;false;false;;;;;;
                                  -235587;5;0;false;false;63;95;191;;;
                                  -235592;3;0;false;false;;;;;;
                                  -235595;1;0;false;false;63;95;191;;;
                                  -235596;1;0;false;false;;;;;;
                                  -235597;11;1;false;false;127;159;191;;;
                                  -235608;12;0;false;false;63;95;191;;;
                                  -235620;1;0;false;false;;;;;;
                                  -235621;4;0;false;false;127;127;159;;;
                                  -235625;3;0;false;false;;;;;;
                                  -235628;1;0;false;false;63;95;191;;;
                                  -235629;4;0;false;false;;;;;;
                                  -235633;4;0;false;false;127;127;159;;;
                                  -235637;21;0;false;false;63;95;191;;;
                                  -235658;1;0;false;false;;;;;;
                                  -235659;1;0;false;false;127;127;159;;;
                                  -235660;1;0;false;false;;;;;;
                                  -235661;2;0;false;false;63;95;191;;;
                                  -235663;1;0;false;false;;;;;;
                                  -235664;3;0;false;false;63;95;191;;;
                                  -235667;1;0;false;false;;;;;;
                                  -235668;8;0;false;false;63;95;191;;;
                                  -235676;1;0;false;false;;;;;;
                                  -235677;3;0;false;false;63;95;191;;;
                                  -235680;1;0;false;false;;;;;;
                                  -235681;4;0;false;false;63;95;191;;;
                                  -235685;1;0;false;false;;;;;;
                                  -235686;8;0;false;false;63;95;191;;;
                                  -235694;5;0;false;false;127;127;159;;;
                                  -235699;3;0;false;false;;;;;;
                                  -235702;1;0;false;false;63;95;191;;;
                                  -235703;4;0;false;false;;;;;;
                                  -235707;4;0;false;false;127;127;159;;;
                                  -235711;27;0;false;false;63;95;191;;;
                                  -235738;1;0;false;false;;;;;;
                                  -235739;1;0;false;false;127;127;159;;;
                                  -235740;1;0;false;false;;;;;;
                                  -235741;2;0;false;false;63;95;191;;;
                                  -235743;1;0;false;false;;;;;;
                                  -235744;3;0;false;false;63;95;191;;;
                                  -235747;1;0;false;false;;;;;;
                                  -235748;6;0;false;false;63;95;191;;;
                                  -235754;1;0;false;false;;;;;;
                                  -235755;4;0;false;false;63;95;191;;;
                                  -235759;1;0;false;false;;;;;;
                                  -235760;3;0;false;false;63;95;191;;;
                                  -235763;1;0;false;false;;;;;;
                                  -235764;6;0;false;false;63;95;191;;;
                                  -235770;1;0;false;false;;;;;;
                                  -235771;4;0;false;false;63;95;191;;;
                                  -235775;1;0;false;false;;;;;;
                                  -235776;7;0;false;false;63;95;191;;;
                                  -235783;1;0;false;false;;;;;;
                                  -235784;3;0;false;false;63;95;191;;;
                                  -235787;1;0;false;false;;;;;;
                                  -235788;8;0;false;false;63;95;191;;;
                                  -235796;5;0;false;false;127;127;159;;;
                                  -235801;3;0;false;false;;;;;;
                                  -235804;1;0;false;false;63;95;191;;;
                                  -235805;1;0;false;false;;;;;;
                                  -235806;5;0;false;false;127;127;159;;;
                                  -235811;3;0;false;false;;;;;;
                                  -235814;1;0;false;false;63;95;191;;;
                                  -235815;1;0;false;false;;;;;;
                                  -235816;7;1;false;false;127;159;191;;;
                                  -235823;3;0;false;false;63;95;191;;;
                                  -235826;3;0;false;false;;;;;;
                                  -235829;2;0;false;false;63;95;191;;;
                                  -235831;2;0;false;false;;;;;;
                                  -235833;6;1;false;false;127;0;85;;;
                                  -235839;1;0;false;false;;;;;;
                                  -235840;4;1;false;false;127;0;85;;;
                                  -235844;1;0;false;false;;;;;;
                                  -235845;19;0;false;false;0;0;0;;;
                                  -235864;3;1;false;false;127;0;85;;;
                                  -235867;1;0;false;false;;;;;;
                                  -235868;6;0;false;false;0;0;0;;;
                                  -235874;1;0;false;false;;;;;;
                                  -235875;1;0;false;false;0;0;0;;;
                                  -235876;3;0;false;false;;;;;;
                                  -235879;14;0;false;false;0;0;0;;;
                                  -235893;3;0;false;false;;;;;;
                                  -235896;3;1;false;false;127;0;85;;;
                                  -235899;1;0;false;false;;;;;;
                                  -235900;15;0;false;false;0;0;0;;;
                                  -235915;1;0;false;false;;;;;;
                                  -235916;1;0;false;false;0;0;0;;;
                                  -235917;1;0;false;false;;;;;;
                                  -235918;22;0;false;false;0;0;0;;;
                                  -235940;3;0;false;false;;;;;;
                                  -235943;2;1;false;false;127;0;85;;;
                                  -235945;1;0;false;false;;;;;;
                                  -235946;15;0;false;false;0;0;0;;;
                                  -235961;1;0;false;false;;;;;;
                                  -235962;2;0;false;false;0;0;0;;;
                                  -235964;1;0;false;false;;;;;;
                                  -235965;2;0;false;false;0;0;0;;;
                                  -235967;1;0;false;false;;;;;;
                                  -235968;1;0;false;false;0;0;0;;;
                                  -235969;4;0;false;false;;;;;;
                                  -235973;6;1;false;false;127;0;85;;;
                                  -235979;1;0;false;false;0;0;0;;;
                                  -235980;3;0;false;false;;;;;;
                                  -235983;1;0;false;false;0;0;0;;;
                                  -235984;4;0;false;false;;;;;;
                                  -235988;2;1;false;false;127;0;85;;;
                                  -235990;1;0;false;false;;;;;;
                                  -235991;6;0;false;false;0;0;0;;;
                                  -235997;1;0;false;false;;;;;;
                                  -235998;1;0;false;false;0;0;0;;;
                                  -235999;1;0;false;false;;;;;;
                                  -236000;2;0;false;false;0;0;0;;;
                                  -236002;1;0;false;false;;;;;;
                                  -236003;1;0;false;false;0;0;0;;;
                                  -236004;4;0;false;false;;;;;;
                                  -236008;5;0;false;false;0;0;0;;;
                                  -236013;1;0;false;false;;;;;;
                                  -236014;1;0;false;false;0;0;0;;;
                                  -236015;1;0;false;false;;;;;;
                                  -236016;2;0;false;false;0;0;0;;;
                                  -236018;3;0;false;false;;;;;;
                                  -236021;1;0;false;false;0;0;0;;;
                                  -236022;3;0;false;false;;;;;;
                                  -236025;59;0;false;false;63;127;95;;;
                                  -236084;1;0;false;false;;;;;;
                                  -236085;46;0;false;false;63;127;95;;;
                                  -236131;1;0;false;false;;;;;;
                                  -236132;61;0;false;false;63;127;95;;;
                                  -236193;1;0;false;false;;;;;;
                                  -236194;29;0;false;false;63;127;95;;;
                                  -236223;1;0;false;false;;;;;;
                                  -236224;2;1;false;false;127;0;85;;;
                                  -236226;1;0;false;false;;;;;;
                                  -236227;16;0;false;false;0;0;0;;;
                                  -236243;1;0;false;false;;;;;;
                                  -236244;1;0;false;false;0;0;0;;;
                                  -236245;1;0;false;false;;;;;;
                                  -236246;2;0;false;false;0;0;0;;;
                                  -236248;1;0;false;false;;;;;;
                                  -236249;1;0;false;false;0;0;0;;;
                                  -236250;4;0;false;false;;;;;;
                                  -236254;3;1;false;false;127;0;85;;;
                                  -236257;1;0;false;false;;;;;;
                                  -236258;5;0;false;false;0;0;0;;;
                                  -236263;1;0;false;false;;;;;;
                                  -236264;1;0;false;false;0;0;0;;;
                                  -236265;1;0;false;false;;;;;;
                                  -236266;21;0;false;false;0;0;0;;;
                                  -236287;4;0;false;false;;;;;;
                                  -236291;62;0;false;false;63;127;95;;;
                                  -236353;2;0;false;false;;;;;;
                                  -236355;63;0;false;false;63;127;95;;;
                                  -236418;2;0;false;false;;;;;;
                                  -236420;31;0;false;false;63;127;95;;;
                                  -236451;2;0;false;false;;;;;;
                                  -236453;2;1;false;false;127;0;85;;;
                                  -236455;1;0;false;false;;;;;;
                                  -236456;6;0;false;false;0;0;0;;;
                                  -236462;1;0;false;false;;;;;;
                                  -236463;1;0;false;false;0;0;0;;;
                                  -236464;1;0;false;false;;;;;;
                                  -236465;5;0;false;false;0;0;0;;;
                                  -236470;1;0;false;false;;;;;;
                                  -236471;1;0;false;false;0;0;0;;;
                                  -236472;1;0;false;false;;;;;;
                                  -236473;16;0;false;false;0;0;0;;;
                                  -236489;1;0;false;false;;;;;;
                                  -236490;1;0;false;false;0;0;0;;;
                                  -236491;5;0;false;false;;;;;;
                                  -236496;5;0;false;false;0;0;0;;;
                                  -236501;1;0;false;false;;;;;;
                                  -236502;1;0;false;false;0;0;0;;;
                                  -236503;1;0;false;false;;;;;;
                                  -236504;11;0;false;false;0;0;0;;;
                                  -236515;1;0;false;false;;;;;;
                                  -236516;5;0;false;false;0;0;0;;;
                                  -236521;1;0;false;false;;;;;;
                                  -236522;1;0;false;false;0;0;0;;;
                                  -236523;1;0;false;false;;;;;;
                                  -236524;17;0;false;false;0;0;0;;;
                                  -236541;4;0;false;false;;;;;;
                                  -236545;1;0;false;false;0;0;0;;;
                                  -236546;3;0;false;false;;;;;;
                                  -236549;1;0;false;false;0;0;0;;;
                                  -236550;3;0;false;false;;;;;;
                                  -236553;25;0;false;false;0;0;0;;;
                                  -236578;1;0;false;false;;;;;;
                                  -236579;1;0;false;false;0;0;0;;;
                                  -236580;1;0;false;false;;;;;;
                                  -236581;24;0;false;false;0;0;0;;;
                                  -236605;2;0;false;false;;;;;;
                                  -236607;1;0;false;false;0;0;0;;;
                                  -236608;2;0;false;false;;;;;;
                                  -236610;3;0;false;false;63;95;191;;;
                                  -236613;3;0;false;false;;;;;;
                                  -236616;1;0;false;false;63;95;191;;;
                                  -236617;1;0;false;false;;;;;;
                                  -236618;7;0;false;false;63;95;191;;;
                                  -236625;1;0;false;false;;;;;;
                                  -236626;3;0;false;false;63;95;191;;;
                                  -236629;1;0;false;false;;;;;;
                                  -236630;7;0;false;false;63;95;191;;;
                                  -236637;1;0;false;false;;;;;;
                                  -236638;3;0;false;false;63;95;191;;;
                                  -236641;1;0;false;false;;;;;;
                                  -236642;3;0;false;false;63;95;191;;;
                                  -236645;1;0;false;false;;;;;;
                                  -236646;4;0;false;false;63;95;191;;;
                                  -236650;1;0;false;false;;;;;;
                                  -236651;4;0;false;false;63;95;191;;;
                                  -236655;1;0;false;false;;;;;;
                                  -236656;2;0;false;false;63;95;191;;;
                                  -236658;1;0;false;false;;;;;;
                                  -236659;3;0;false;false;63;95;191;;;
                                  -236662;1;0;false;false;;;;;;
                                  -236663;10;0;false;false;63;95;191;;;
                                  -236673;1;0;false;false;;;;;;
                                  -236674;6;0;false;false;63;95;191;;;
                                  -236680;1;0;false;false;;;;;;
                                  -236681;3;0;false;false;63;95;191;;;
                                  -236684;4;0;false;false;;;;;;
                                  -236688;1;0;false;false;63;95;191;;;
                                  -236689;1;0;false;false;;;;;;
                                  -236690;2;0;false;false;63;95;191;;;
                                  -236692;1;0;false;false;;;;;;
                                  -236693;7;0;false;false;63;95;191;;;
                                  -236700;1;0;false;false;;;;;;
                                  -236701;7;0;false;false;63;95;191;;;
                                  -236708;1;0;false;false;;;;;;
                                  -236709;5;0;false;false;63;95;191;;;
                                  -236714;1;0;false;false;;;;;;
                                  -236715;8;0;false;false;63;95;191;;;
                                  -236723;3;0;false;false;;;;;;
                                  -236726;2;0;false;false;63;95;191;;;
                                  -236728;2;0;false;false;;;;;;
                                  -236730;4;1;false;false;127;0;85;;;
                                  -236734;1;0;false;false;;;;;;
                                  -236735;24;0;false;false;0;0;0;;;
                                  -236759;1;0;false;false;;;;;;
                                  -236760;1;0;false;false;0;0;0;;;
                                  -236761;3;0;false;false;;;;;;
                                  -236764;9;0;false;false;0;0;0;;;
                                  -236773;1;0;false;false;;;;;;
                                  -236774;13;0;false;false;0;0;0;;;
                                  -236787;1;0;false;false;;;;;;
                                  -236788;1;0;false;false;0;0;0;;;
                                  -236789;1;0;false;false;;;;;;
                                  -236790;19;0;false;false;0;0;0;;;
                                  -236809;6;0;false;false;;;;;;
                                  -236815;2;1;false;false;127;0;85;;;
                                  -236817;1;0;false;false;;;;;;
                                  -236818;14;0;false;false;0;0;0;;;
                                  -236832;1;0;false;false;;;;;;
                                  -236833;2;0;false;false;0;0;0;;;
                                  -236835;1;0;false;false;;;;;;
                                  -236836;4;1;false;false;127;0;85;;;
                                  -236840;1;0;false;false;;;;;;
                                  -236841;2;0;false;false;0;0;0;;;
                                  -236843;1;0;false;false;;;;;;
                                  -236844;27;0;false;false;0;0;0;;;
                                  -236871;1;0;false;false;;;;;;
                                  -236872;1;0;false;false;0;0;0;;;
                                  -236873;4;0;false;false;;;;;;
                                  -236877;5;1;false;false;127;0;85;;;
                                  -236882;1;0;false;false;;;;;;
                                  -236883;3;1;false;false;127;0;85;;;
                                  -236886;1;0;false;false;;;;;;
                                  -236887;8;0;false;false;0;0;0;;;
                                  -236895;1;0;false;false;;;;;;
                                  -236896;1;0;false;false;0;0;0;;;
                                  -236897;1;0;false;false;;;;;;
                                  -236898;2;0;false;false;0;0;0;;;
                                  -236900;4;0;false;false;;;;;;
                                  -236904;9;0;false;false;0;0;0;;;
                                  -236913;1;0;false;false;;;;;;
                                  -236914;10;0;false;false;0;0;0;;;
                                  -236924;1;0;false;false;;;;;;
                                  -236925;1;0;false;false;0;0;0;;;
                                  -236926;1;0;false;false;;;;;;
                                  -236927;16;0;false;false;0;0;0;;;
                                  -236943;4;0;false;false;;;;;;
                                  -236947;60;0;false;false;63;127;95;;;
                                  -237007;2;0;false;false;;;;;;
                                  -237009;65;0;false;false;63;127;95;;;
                                  -237074;2;0;false;false;;;;;;
                                  -237076;56;0;false;false;63;127;95;;;
                                  -237132;2;0;false;false;;;;;;
                                  -237134;2;1;false;false;127;0;85;;;
                                  -237136;1;0;false;false;;;;;;
                                  -237137;17;0;false;false;0;0;0;;;
                                  -237154;1;0;false;false;;;;;;
                                  -237155;1;0;false;false;0;0;0;;;
                                  -237156;1;0;false;false;;;;;;
                                  -237157;21;0;false;false;0;0;0;;;
                                  -237178;1;0;false;false;;;;;;
                                  -237179;1;0;false;false;0;0;0;;;
                                  -237180;5;0;false;false;;;;;;
                                  -237185;24;0;false;false;0;0;0;;;
                                  -237209;6;0;false;false;;;;;;
                                  -237215;29;0;false;false;0;0;0;;;
                                  -237244;6;0;false;false;;;;;;
                                  -237250;27;0;false;false;0;0;0;;;
                                  -237277;6;0;false;false;;;;;;
                                  -237283;21;0;false;false;0;0;0;;;
                                  -237304;7;0;false;false;;;;;;
                                  -237311;12;0;false;false;63;127;95;;;
                                  -237323;4;0;false;false;;;;;;
                                  -237327;16;0;false;false;0;0;0;;;
                                  -237343;1;0;false;false;;;;;;
                                  -237344;1;0;false;false;0;0;0;;;
                                  -237345;1;0;false;false;;;;;;
                                  -237346;10;0;false;false;0;0;0;;;
                                  -237356;1;0;false;false;;;;;;
                                  -237357;1;0;false;false;0;0;0;;;
                                  -237358;1;0;false;false;;;;;;
                                  -237359;12;0;false;false;0;0;0;;;
                                  -237371;1;0;false;false;;;;;;
                                  -237372;15;0;false;false;63;127;95;;;
                                  -237387;4;0;false;false;;;;;;
                                  -237391;29;0;false;false;0;0;0;;;
                                  -237420;6;0;false;false;;;;;;
                                  -237426;16;0;false;false;0;0;0;;;
                                  -237442;1;0;false;false;;;;;;
                                  -237443;1;0;false;false;0;0;0;;;
                                  -237444;1;0;false;false;;;;;;
                                  -237445;10;0;false;false;0;0;0;;;
                                  -237455;1;0;false;false;;;;;;
                                  -237456;1;0;false;false;0;0;0;;;
                                  -237457;1;0;false;false;;;;;;
                                  -237458;13;0;false;false;0;0;0;;;
                                  -237471;1;0;false;false;;;;;;
                                  -237472;14;0;false;false;63;127;95;;;
                                  -237486;2;0;false;false;;;;;;
                                  -237488;1;0;false;false;0;0;0;;;
                                  -237489;4;0;false;false;;;;;;
                                  -237493;4;1;false;false;127;0;85;;;
                                  -237497;5;0;false;false;;;;;;
                                  -237502;2;1;false;false;127;0;85;;;
                                  -237504;1;0;false;false;;;;;;
                                  -237505;25;0;false;false;0;0;0;;;
                                  -237530;1;0;false;false;;;;;;
                                  -237531;2;0;false;false;0;0;0;;;
                                  -237533;1;0;false;false;;;;;;
                                  -237534;8;0;false;false;0;0;0;;;
                                  -237542;1;0;false;false;;;;;;
                                  -237543;2;0;false;false;0;0;0;;;
                                  -237545;1;0;false;false;;;;;;
                                  -237546;26;0;false;false;0;0;0;;;
                                  -237572;1;0;false;false;;;;;;
                                  -237573;2;0;false;false;0;0;0;;;
                                  -237575;1;0;false;false;;;;;;
                                  -237576;9;0;false;false;0;0;0;;;
                                  -237585;1;0;false;false;;;;;;
                                  -237586;1;0;false;false;0;0;0;;;
                                  -237587;5;0;false;false;;;;;;
                                  -237592;24;0;false;false;0;0;0;;;
                                  -237616;6;0;false;false;;;;;;
                                  -237622;29;0;false;false;0;0;0;;;
                                  -237651;6;0;false;false;;;;;;
                                  -237657;27;0;false;false;0;0;0;;;
                                  -237684;6;0;false;false;;;;;;
                                  -237690;9;0;false;false;0;0;0;;;
                                  -237699;6;0;false;false;;;;;;
                                  -237705;9;0;false;false;0;0;0;;;
                                  -237714;6;0;false;false;;;;;;
                                  -237720;29;0;false;false;0;0;0;;;
                                  -237749;6;0;false;false;;;;;;
                                  -237755;10;0;false;false;0;0;0;;;
                                  -237765;4;0;false;false;;;;;;
                                  -237769;1;0;false;false;0;0;0;;;
                                  -237770;3;0;false;false;;;;;;
                                  -237773;1;0;false;false;0;0;0;;;
                                  -237774;2;0;false;false;;;;;;
                                  -237776;1;0;false;false;0;0;0;;;
                                  -237777;2;0;false;false;;;;;;
                                  -237779;3;0;false;false;63;95;191;;;
                                  -237782;4;0;false;false;;;;;;
                                  -237786;1;0;false;false;63;95;191;;;
                                  -237787;1;0;false;false;;;;;;
                                  -237788;4;0;false;false;63;95;191;;;
                                  -237792;1;0;false;false;;;;;;
                                  -237793;3;0;false;false;63;95;191;;;
                                  -237796;1;0;false;false;;;;;;
                                  -237797;10;0;false;false;63;95;191;;;
                                  -237807;1;0;false;false;;;;;;
                                  -237808;5;0;false;false;63;95;191;;;
                                  -237813;1;0;false;false;;;;;;
                                  -237814;2;0;false;false;63;95;191;;;
                                  -237816;1;0;false;false;;;;;;
                                  -237817;3;0;false;false;63;95;191;;;
                                  -237820;1;0;false;false;;;;;;
                                  -237821;9;0;false;false;63;95;191;;;
                                  -237830;1;0;false;false;;;;;;
                                  -237831;6;0;false;false;63;95;191;;;
                                  -237837;3;0;false;false;;;;;;
                                  -237840;1;0;false;false;63;95;191;;;
                                  -237841;1;0;false;false;;;;;;
                                  -237842;3;0;false;false;63;95;191;;;
                                  -237845;1;0;false;false;;;;;;
                                  -237846;10;0;false;false;63;95;191;;;
                                  -237856;1;0;false;false;;;;;;
                                  -237857;5;0;false;false;63;95;191;;;
                                  -237862;1;0;false;false;;;;;;
                                  -237863;2;0;false;false;63;95;191;;;
                                  -237865;1;0;false;false;;;;;;
                                  -237866;5;0;false;false;63;95;191;;;
                                  -237871;1;0;false;false;;;;;;
                                  -237872;3;0;false;false;63;95;191;;;
                                  -237875;1;0;false;false;;;;;;
                                  -237876;3;0;false;false;63;95;191;;;
                                  -237879;1;0;false;false;;;;;;
                                  -237880;5;0;false;false;63;95;191;;;
                                  -237885;1;0;false;false;;;;;;
                                  -237886;2;0;false;false;63;95;191;;;
                                  -237888;1;0;false;false;;;;;;
                                  -237889;3;0;false;false;63;95;191;;;
                                  -237892;1;0;false;false;;;;;;
                                  -237893;7;0;false;false;63;95;191;;;
                                  -237900;1;0;false;false;;;;;;
                                  -237901;3;0;false;false;63;95;191;;;
                                  -237904;3;0;false;false;;;;;;
                                  -237907;1;0;false;false;63;95;191;;;
                                  -237908;1;0;false;false;;;;;;
                                  -237909;4;0;false;false;63;95;191;;;
                                  -237913;1;0;false;false;;;;;;
                                  -237914;10;0;false;false;63;95;191;;;
                                  -237924;1;0;false;false;;;;;;
                                  -237925;6;0;false;false;63;95;191;;;
                                  -237931;1;0;false;false;;;;;;
                                  -237932;3;0;false;false;63;95;191;;;
                                  -237935;1;0;false;false;;;;;;
                                  -237936;9;0;false;false;63;95;191;;;
                                  -237945;1;0;false;false;;;;;;
                                  -237946;4;0;false;false;63;95;191;;;
                                  -237950;1;0;false;false;;;;;;
                                  -237951;7;0;false;false;63;95;191;;;
                                  -237958;1;0;false;false;;;;;;
                                  -237959;2;0;false;false;63;95;191;;;
                                  -237961;1;0;false;false;;;;;;
                                  -237962;7;0;false;false;63;95;191;;;
                                  -237969;3;0;false;false;;;;;;
                                  -237972;1;0;false;false;63;95;191;;;
                                  -237973;1;0;false;false;;;;;;
                                  -237974;3;0;false;false;63;95;191;;;
                                  -237977;1;0;false;false;;;;;;
                                  -237978;4;0;false;false;63;95;191;;;
                                  -237982;1;0;false;false;;;;;;
                                  -237983;10;0;false;false;63;95;191;;;
                                  -237993;1;0;false;false;;;;;;
                                  -237994;5;0;false;false;63;95;191;;;
                                  -237999;1;0;false;false;;;;;;
                                  -238000;2;0;false;false;63;95;191;;;
                                  -238002;1;0;false;false;;;;;;
                                  -238003;7;0;false;false;63;95;191;;;
                                  -238010;1;0;false;false;;;;;;
                                  -238011;2;0;false;false;63;95;191;;;
                                  -238013;1;0;false;false;;;;;;
                                  -238014;1;0;false;false;63;95;191;;;
                                  -238015;1;0;false;false;;;;;;
                                  -238016;10;0;false;false;63;95;191;;;
                                  -238026;1;0;false;false;;;;;;
                                  -238027;8;0;false;false;63;95;191;;;
                                  -238035;1;0;false;false;;;;;;
                                  -238036;3;0;false;false;63;95;191;;;
                                  -238039;4;0;false;false;;;;;;
                                  -238043;1;0;false;false;63;95;191;;;
                                  -238044;1;0;false;false;;;;;;
                                  -238045;4;0;false;false;63;95;191;;;
                                  -238049;1;0;false;false;;;;;;
                                  -238050;10;0;false;false;63;95;191;;;
                                  -238060;1;0;false;false;;;;;;
                                  -238061;6;0;false;false;63;95;191;;;
                                  -238067;1;0;false;false;;;;;;
                                  -238068;6;0;false;false;63;95;191;;;
                                  -238074;1;0;false;false;;;;;;
                                  -238075;3;0;false;false;63;95;191;;;
                                  -238078;1;0;false;false;;;;;;
                                  -238079;2;0;false;false;63;95;191;;;
                                  -238081;1;0;false;false;;;;;;
                                  -238082;6;0;false;false;63;95;191;;;
                                  -238088;1;0;false;false;;;;;;
                                  -238089;2;0;false;false;63;95;191;;;
                                  -238091;1;0;false;false;;;;;;
                                  -238092;1;0;false;false;63;95;191;;;
                                  -238093;1;0;false;false;;;;;;
                                  -238094;22;0;false;false;63;95;191;;;
                                  -238116;4;0;false;false;;;;;;
                                  -238120;1;0;false;false;63;95;191;;;
                                  -238121;1;0;false;false;;;;;;
                                  -238122;3;0;false;false;63;95;191;;;
                                  -238125;1;0;false;false;;;;;;
                                  -238126;4;0;false;false;63;95;191;;;
                                  -238130;1;0;false;false;;;;;;
                                  -238131;3;0;false;false;63;95;191;;;
                                  -238134;1;0;false;false;;;;;;
                                  -238135;5;0;false;false;63;95;191;;;
                                  -238140;1;0;false;false;;;;;;
                                  -238141;3;0;false;false;63;95;191;;;
                                  -238144;1;0;false;false;;;;;;
                                  -238145;8;0;false;false;63;95;191;;;
                                  -238153;1;0;false;false;;;;;;
                                  -238154;9;0;false;false;63;95;191;;;
                                  -238163;1;0;false;false;;;;;;
                                  -238164;3;0;false;false;63;95;191;;;
                                  -238167;1;0;false;false;;;;;;
                                  -238168;4;0;false;false;63;95;191;;;
                                  -238172;1;0;false;false;;;;;;
                                  -238173;12;0;false;false;63;95;191;;;
                                  -238185;3;0;false;false;;;;;;
                                  -238188;1;0;false;false;63;95;191;;;
                                  -238189;1;0;false;false;;;;;;
                                  -238190;3;0;false;false;127;127;159;;;
                                  -238193;3;0;false;false;;;;;;
                                  -238196;1;0;false;false;63;95;191;;;
                                  -238197;1;0;false;false;;;;;;
                                  -238198;4;0;false;false;63;95;191;;;
                                  -238202;1;0;false;false;;;;;;
                                  -238203;10;0;false;false;63;95;191;;;
                                  -238213;1;0;false;false;;;;;;
                                  -238214;6;0;false;false;63;95;191;;;
                                  -238220;1;0;false;false;;;;;;
                                  -238221;3;0;false;false;63;95;191;;;
                                  -238224;1;0;false;false;;;;;;
                                  -238225;10;0;false;false;63;95;191;;;
                                  -238235;1;0;false;false;;;;;;
                                  -238236;8;0;false;false;63;95;191;;;
                                  -238244;1;0;false;false;;;;;;
                                  -238245;2;0;false;false;63;95;191;;;
                                  -238247;1;0;false;false;;;;;;
                                  -238248;3;0;false;false;63;95;191;;;
                                  -238251;1;0;false;false;;;;;;
                                  -238252;4;0;false;false;63;95;191;;;
                                  -238256;1;0;false;false;;;;;;
                                  -238257;5;0;false;false;63;95;191;;;
                                  -238262;1;0;false;false;;;;;;
                                  -238263;3;0;false;false;63;95;191;;;
                                  -238266;1;0;false;false;;;;;;
                                  -238267;3;0;false;false;63;95;191;;;
                                  -238270;4;0;false;false;;;;;;
                                  -238274;1;0;false;false;63;95;191;;;
                                  -238275;1;0;false;false;;;;;;
                                  -238276;4;0;false;false;63;95;191;;;
                                  -238280;1;0;false;false;;;;;;
                                  -238281;5;0;false;false;63;95;191;;;
                                  -238286;1;0;false;false;;;;;;
                                  -238287;4;0;false;false;63;95;191;;;
                                  -238291;1;0;false;false;;;;;;
                                  -238292;2;0;false;false;63;95;191;;;
                                  -238294;1;0;false;false;;;;;;
                                  -238295;9;0;false;false;63;95;191;;;
                                  -238304;1;0;false;false;;;;;;
                                  -238305;2;0;false;false;63;95;191;;;
                                  -238307;1;0;false;false;;;;;;
                                  -238308;4;0;false;false;63;95;191;;;
                                  -238312;1;0;false;false;;;;;;
                                  -238313;6;0;false;false;63;95;191;;;
                                  -238319;1;0;false;false;;;;;;
                                  -238320;5;0;false;false;63;95;191;;;
                                  -238325;3;0;false;false;;;;;;
                                  -238328;1;0;false;false;63;95;191;;;
                                  -238329;1;0;false;false;;;;;;
                                  -238330;6;0;false;false;63;95;191;;;
                                  -238336;1;0;false;false;;;;;;
                                  -238337;4;0;false;false;63;95;191;;;
                                  -238341;1;0;false;false;;;;;;
                                  -238342;8;0;false;false;63;95;191;;;
                                  -238350;1;0;false;false;;;;;;
                                  -238351;4;0;false;false;63;95;191;;;
                                  -238355;1;0;false;false;;;;;;
                                  -238356;6;0;false;false;63;95;191;;;
                                  -238362;1;0;false;false;;;;;;
                                  -238363;5;0;false;false;63;95;191;;;
                                  -238368;1;0;false;false;;;;;;
                                  -238369;3;0;false;false;63;95;191;;;
                                  -238372;1;0;false;false;;;;;;
                                  -238373;8;0;false;false;63;95;191;;;
                                  -238381;1;0;false;false;;;;;;
                                  -238382;2;0;false;false;63;95;191;;;
                                  -238384;1;0;false;false;;;;;;
                                  -238385;8;0;false;false;63;95;191;;;
                                  -238393;1;0;false;false;;;;;;
                                  -238394;3;0;false;false;63;95;191;;;
                                  -238397;1;0;false;false;;;;;;
                                  -238398;4;0;false;false;63;95;191;;;
                                  -238402;4;0;false;false;;;;;;
                                  -238406;1;0;false;false;63;95;191;;;
                                  -238407;1;0;false;false;;;;;;
                                  -238408;10;0;false;false;63;95;191;;;
                                  -238418;1;0;false;false;;;;;;
                                  -238419;6;0;false;false;63;95;191;;;
                                  -238425;1;0;false;false;;;;;;
                                  -238426;4;0;false;false;63;95;191;;;
                                  -238430;1;0;false;false;;;;;;
                                  -238431;3;0;false;false;63;95;191;;;
                                  -238434;1;0;false;false;;;;;;
                                  -238435;10;0;false;false;63;95;191;;;
                                  -238445;1;0;false;false;;;;;;
                                  -238446;4;0;false;false;63;95;191;;;
                                  -238450;1;0;false;false;;;;;;
                                  -238451;3;0;false;false;63;95;191;;;
                                  -238454;1;0;false;false;;;;;;
                                  -238455;5;0;false;false;63;95;191;;;
                                  -238460;1;0;false;false;;;;;;
                                  -238461;5;0;false;false;63;95;191;;;
                                  -238466;1;0;false;false;;;;;;
                                  -238467;3;0;false;false;63;95;191;;;
                                  -238470;1;0;false;false;;;;;;
                                  -238471;6;0;false;false;63;95;191;;;
                                  -238477;4;0;false;false;;;;;;
                                  -238481;1;0;false;false;63;95;191;;;
                                  -238482;1;0;false;false;;;;;;
                                  -238483;4;0;false;false;63;95;191;;;
                                  -238487;1;0;false;false;;;;;;
                                  -238488;6;0;false;false;63;95;191;;;
                                  -238494;1;0;false;false;;;;;;
                                  -238495;4;0;false;false;63;95;191;;;
                                  -238499;1;0;false;false;;;;;;
                                  -238500;5;0;false;false;63;95;191;;;
                                  -238505;1;0;false;false;;;;;;
                                  -238506;10;0;false;false;63;95;191;;;
                                  -238516;1;0;false;false;;;;;;
                                  -238517;5;0;false;false;63;95;191;;;
                                  -238522;1;0;false;false;;;;;;
                                  -238523;2;0;false;false;63;95;191;;;
                                  -238525;1;0;false;false;;;;;;
                                  -238526;6;0;false;false;63;95;191;;;
                                  -238532;1;0;false;false;;;;;;
                                  -238533;4;0;false;false;63;95;191;;;
                                  -238537;1;0;false;false;;;;;;
                                  -238538;2;0;false;false;63;95;191;;;
                                  -238540;1;0;false;false;;;;;;
                                  -238541;7;0;false;false;63;95;191;;;
                                  -238548;1;0;false;false;;;;;;
                                  -238549;2;0;false;false;63;95;191;;;
                                  -238551;4;0;false;false;;;;;;
                                  -238555;1;0;false;false;63;95;191;;;
                                  -238556;1;0;false;false;;;;;;
                                  -238557;9;0;false;false;63;95;191;;;
                                  -238566;1;0;false;false;;;;;;
                                  -238567;4;0;false;false;63;95;191;;;
                                  -238571;1;0;false;false;;;;;;
                                  -238572;3;0;false;false;63;95;191;;;
                                  -238575;1;0;false;false;;;;;;
                                  -238576;5;0;false;false;63;95;191;;;
                                  -238581;1;0;false;false;;;;;;
                                  -238582;9;0;false;false;63;95;191;;;
                                  -238591;1;0;false;false;;;;;;
                                  -238592;2;0;false;false;63;95;191;;;
                                  -238594;1;0;false;false;;;;;;
                                  -238595;1;0;false;false;63;95;191;;;
                                  -238596;1;0;false;false;;;;;;
                                  -238597;4;0;false;false;63;95;191;;;
                                  -238601;1;0;false;false;;;;;;
                                  -238602;2;0;false;false;63;95;191;;;
                                  -238604;1;0;false;false;;;;;;
                                  -238605;3;0;false;false;63;95;191;;;
                                  -238608;1;0;false;false;;;;;;
                                  -238609;4;0;false;false;63;95;191;;;
                                  -238613;1;0;false;false;;;;;;
                                  -238614;3;0;false;false;63;95;191;;;
                                  -238617;1;0;false;false;;;;;;
                                  -238618;9;0;false;false;63;95;191;;;
                                  -238627;1;0;false;false;;;;;;
                                  -238628;3;0;false;false;63;95;191;;;
                                  -238631;4;0;false;false;;;;;;
                                  -238635;1;0;false;false;63;95;191;;;
                                  -238636;1;0;false;false;;;;;;
                                  -238637;4;0;false;false;63;95;191;;;
                                  -238641;1;0;false;false;;;;;;
                                  -238642;10;0;false;false;63;95;191;;;
                                  -238652;4;0;false;false;;;;;;
                                  -238656;1;0;false;false;63;95;191;;;
                                  -238657;1;0;false;false;;;;;;
                                  -238658;4;0;false;false;127;127;159;;;
                                  -238662;3;0;false;false;;;;;;
                                  -238665;1;0;false;false;63;95;191;;;
                                  -238666;1;0;false;false;;;;;;
                                  -238667;3;0;false;false;127;127;159;;;
                                  -238670;3;0;false;false;;;;;;
                                  -238673;1;0;false;false;63;95;191;;;
                                  -238674;1;0;false;false;;;;;;
                                  -238675;4;0;false;false;63;95;191;;;
                                  -238679;1;0;false;false;;;;;;
                                  -238680;3;0;false;false;63;95;191;;;
                                  -238683;1;0;false;false;;;;;;
                                  -238684;5;0;false;false;63;95;191;;;
                                  -238689;1;0;false;false;;;;;;
                                  -238690;3;0;false;false;63;95;191;;;
                                  -238693;1;0;false;false;;;;;;
                                  -238694;6;0;false;false;63;95;191;;;
                                  -238700;1;0;false;false;;;;;;
                                  -238701;2;0;false;false;63;95;191;;;
                                  -238703;1;0;false;false;;;;;;
                                  -238704;8;0;false;false;63;95;191;;;
                                  -238712;1;0;false;false;;;;;;
                                  -238713;1;0;false;false;63;95;191;;;
                                  -238714;1;0;false;false;;;;;;
                                  -238715;4;0;false;false;63;95;191;;;
                                  -238719;1;0;false;false;;;;;;
                                  -238720;10;0;false;false;63;95;191;;;
                                  -238730;1;0;false;false;;;;;;
                                  -238731;3;0;false;false;63;95;191;;;
                                  -238734;1;0;false;false;;;;;;
                                  -238735;3;0;false;false;63;95;191;;;
                                  -238738;1;0;false;false;;;;;;
                                  -238739;4;0;false;false;63;95;191;;;
                                  -238743;4;0;false;false;;;;;;
                                  -238747;1;0;false;false;63;95;191;;;
                                  -238748;1;0;false;false;;;;;;
                                  -238749;10;0;false;false;63;95;191;;;
                                  -238759;1;0;false;false;;;;;;
                                  -238760;5;0;false;false;63;95;191;;;
                                  -238765;1;0;false;false;;;;;;
                                  -238766;10;0;false;false;63;95;191;;;
                                  -238776;1;0;false;false;;;;;;
                                  -238777;3;0;false;false;63;95;191;;;
                                  -238780;1;0;false;false;;;;;;
                                  -238781;3;0;false;false;63;95;191;;;
                                  -238784;1;0;false;false;;;;;;
                                  -238785;5;0;false;false;63;95;191;;;
                                  -238790;1;0;false;false;;;;;;
                                  -238791;2;0;false;false;63;95;191;;;
                                  -238793;1;0;false;false;;;;;;
                                  -238794;3;0;false;false;63;95;191;;;
                                  -238797;1;0;false;false;;;;;;
                                  -238798;6;0;false;false;63;95;191;;;
                                  -238804;1;0;false;false;;;;;;
                                  -238805;4;0;false;false;63;95;191;;;
                                  -238809;1;0;false;false;;;;;;
                                  -238810;2;0;false;false;63;95;191;;;
                                  -238812;1;0;false;false;;;;;;
                                  -238813;8;0;false;false;63;95;191;;;
                                  -238821;4;0;false;false;;;;;;
                                  -238825;1;0;false;false;63;95;191;;;
                                  -238826;1;0;false;false;;;;;;
                                  -238827;3;0;false;false;63;95;191;;;
                                  -238830;1;0;false;false;;;;;;
                                  -238831;3;0;false;false;63;95;191;;;
                                  -238834;1;0;false;false;;;;;;
                                  -238835;5;0;false;false;63;95;191;;;
                                  -238840;1;0;false;false;;;;;;
                                  -238841;4;0;false;false;63;95;191;;;
                                  -238845;1;0;false;false;;;;;;
                                  -238846;7;0;false;false;63;95;191;;;
                                  -238853;1;0;false;false;;;;;;
                                  -238854;4;0;false;false;63;95;191;;;
                                  -238858;1;0;false;false;;;;;;
                                  -238859;10;0;false;false;63;95;191;;;
                                  -238869;1;0;false;false;;;;;;
                                  -238870;6;0;false;false;63;95;191;;;
                                  -238876;1;0;false;false;;;;;;
                                  -238877;4;0;false;false;63;95;191;;;
                                  -238881;1;0;false;false;;;;;;
                                  -238882;6;0;false;false;63;95;191;;;
                                  -238888;1;0;false;false;;;;;;
                                  -238889;10;0;false;false;63;95;191;;;
                                  -238899;4;0;false;false;;;;;;
                                  -238903;1;0;false;false;63;95;191;;;
                                  -238904;1;0;false;false;;;;;;
                                  -238905;4;0;false;false;127;127;159;;;
                                  -238909;3;0;false;false;;;;;;
                                  -238912;1;0;false;false;63;95;191;;;
                                  -238913;4;0;false;false;;;;;;
                                  -238917;1;0;false;false;63;95;191;;;
                                  -238918;1;0;false;false;;;;;;
                                  -238919;7;1;false;false;127;159;191;;;
                                  -238926;9;0;false;false;63;95;191;;;
                                  -238935;1;0;false;false;;;;;;
                                  -238936;5;0;false;false;63;95;191;;;
                                  -238941;1;0;false;false;;;;;;
                                  -238942;4;0;false;false;63;95;191;;;
                                  -238946;1;0;false;false;;;;;;
                                  -238947;3;0;false;false;63;95;191;;;
                                  -238950;1;0;false;false;;;;;;
                                  -238951;5;0;false;false;63;95;191;;;
                                  -238956;1;0;false;false;;;;;;
                                  -238957;2;0;false;false;63;95;191;;;
                                  -238959;1;0;false;false;;;;;;
                                  -238960;7;0;false;false;63;95;191;;;
                                  -238967;1;0;false;false;;;;;;
                                  -238968;3;0;false;false;63;95;191;;;
                                  -238971;1;0;false;false;;;;;;
                                  -238972;1;0;false;false;63;95;191;;;
                                  -238973;1;0;false;false;;;;;;
                                  -238974;5;0;false;false;63;95;191;;;
                                  -238979;3;0;false;false;;;;;;
                                  -238982;1;0;false;false;63;95;191;;;
                                  -238983;1;0;false;false;;;;;;
                                  -238984;7;1;false;false;127;159;191;;;
                                  -238991;9;0;false;false;63;95;191;;;
                                  -239000;1;0;false;false;;;;;;
                                  -239001;6;0;false;false;63;95;191;;;
                                  -239007;1;0;false;false;;;;;;
                                  -239008;2;0;false;false;63;95;191;;;
                                  -239010;1;0;false;false;;;;;;
                                  -239011;5;0;false;false;63;95;191;;;
                                  -239016;1;0;false;false;;;;;;
                                  -239017;3;0;false;false;63;95;191;;;
                                  -239020;1;0;false;false;;;;;;
                                  -239021;5;0;false;false;63;95;191;;;
                                  -239026;1;0;false;false;;;;;;
                                  -239027;7;0;false;false;63;95;191;;;
                                  -239034;1;0;false;false;;;;;;
                                  -239035;3;0;false;false;63;95;191;;;
                                  -239038;3;0;false;false;;;;;;
                                  -239041;1;0;false;false;63;95;191;;;
                                  -239042;1;0;false;false;;;;;;
                                  -239043;7;1;false;false;127;159;191;;;
                                  -239050;10;0;false;false;63;95;191;;;
                                  -239060;1;0;false;false;;;;;;
                                  -239061;4;0;false;false;63;95;191;;;
                                  -239065;1;0;false;false;;;;;;
                                  -239066;10;0;false;false;63;95;191;;;
                                  -239076;1;0;false;false;;;;;;
                                  -239077;5;0;false;false;63;95;191;;;
                                  -239082;3;0;false;false;;;;;;
                                  -239085;1;0;false;false;63;95;191;;;
                                  -239086;1;0;false;false;;;;;;
                                  -239087;11;1;false;false;127;159;191;;;
                                  -239098;12;0;false;false;63;95;191;;;
                                  -239110;1;0;false;false;;;;;;
                                  -239111;4;0;false;false;127;127;159;;;
                                  -239115;3;0;false;false;;;;;;
                                  -239118;1;0;false;false;63;95;191;;;
                                  -239119;4;0;false;false;;;;;;
                                  -239123;4;0;false;false;127;127;159;;;
                                  -239127;21;0;false;false;63;95;191;;;
                                  -239148;1;0;false;false;;;;;;
                                  -239149;1;0;false;false;127;127;159;;;
                                  -239150;1;0;false;false;;;;;;
                                  -239151;2;0;false;false;63;95;191;;;
                                  -239153;1;0;false;false;;;;;;
                                  -239154;3;0;false;false;63;95;191;;;
                                  -239157;1;0;false;false;;;;;;
                                  -239158;8;0;false;false;63;95;191;;;
                                  -239166;1;0;false;false;;;;;;
                                  -239167;3;0;false;false;63;95;191;;;
                                  -239170;1;0;false;false;;;;;;
                                  -239171;4;0;false;false;63;95;191;;;
                                  -239175;1;0;false;false;;;;;;
                                  -239176;8;0;false;false;63;95;191;;;
                                  -239184;5;0;false;false;127;127;159;;;
                                  -239189;3;0;false;false;;;;;;
                                  -239192;1;0;false;false;63;95;191;;;
                                  -239193;4;0;false;false;;;;;;
                                  -239197;4;0;false;false;127;127;159;;;
                                  -239201;27;0;false;false;63;95;191;;;
                                  -239228;1;0;false;false;;;;;;
                                  -239229;1;0;false;false;127;127;159;;;
                                  -239230;1;0;false;false;;;;;;
                                  -239231;2;0;false;false;63;95;191;;;
                                  -239233;1;0;false;false;;;;;;
                                  -239234;3;0;false;false;63;95;191;;;
                                  -239237;1;0;false;false;;;;;;
                                  -239238;6;0;false;false;63;95;191;;;
                                  -239244;1;0;false;false;;;;;;
                                  -239245;4;0;false;false;63;95;191;;;
                                  -239249;1;0;false;false;;;;;;
                                  -239250;3;0;false;false;63;95;191;;;
                                  -239253;1;0;false;false;;;;;;
                                  -239254;6;0;false;false;63;95;191;;;
                                  -239260;1;0;false;false;;;;;;
                                  -239261;4;0;false;false;63;95;191;;;
                                  -239265;1;0;false;false;;;;;;
                                  -239266;7;0;false;false;63;95;191;;;
                                  -239273;1;0;false;false;;;;;;
                                  -239274;3;0;false;false;63;95;191;;;
                                  -239277;1;0;false;false;;;;;;
                                  -239278;8;0;false;false;63;95;191;;;
                                  -239286;5;0;false;false;127;127;159;;;
                                  -239291;3;0;false;false;;;;;;
                                  -239294;1;0;false;false;63;95;191;;;
                                  -239295;1;0;false;false;;;;;;
                                  -239296;5;0;false;false;127;127;159;;;
                                  -239301;3;0;false;false;;;;;;
                                  -239304;1;0;false;false;63;95;191;;;
                                  -239305;1;0;false;false;;;;;;
                                  -239306;11;1;false;false;127;159;191;;;
                                  -239317;24;0;false;false;63;95;191;;;
                                  -239341;1;0;false;false;;;;;;
                                  -239342;4;0;false;false;127;127;159;;;
                                  -239346;3;0;false;false;;;;;;
                                  -239349;1;0;false;false;63;95;191;;;
                                  -239350;3;0;false;false;;;;;;
                                  -239353;4;0;false;false;127;127;159;;;
                                  -239357;22;0;false;false;63;95;191;;;
                                  -239379;1;0;false;false;;;;;;
                                  -239380;4;0;false;false;63;95;191;;;
                                  -239384;1;0;false;false;;;;;;
                                  -239385;3;0;false;false;63;95;191;;;
                                  -239388;1;0;false;false;;;;;;
                                  -239389;9;0;false;false;63;95;191;;;
                                  -239398;1;0;false;false;;;;;;
                                  -239399;4;0;false;false;63;95;191;;;
                                  -239403;1;0;false;false;;;;;;
                                  -239404;5;0;false;false;63;95;191;;;
                                  -239409;1;0;false;false;;;;;;
                                  -239410;2;0;false;false;63;95;191;;;
                                  -239412;1;0;false;false;;;;;;
                                  -239413;7;0;false;false;63;95;191;;;
                                  -239420;5;0;false;false;127;127;159;;;
                                  -239425;3;0;false;false;;;;;;
                                  -239428;1;0;false;false;63;95;191;;;
                                  -239429;1;0;false;false;;;;;;
                                  -239430;5;0;false;false;127;127;159;;;
                                  -239435;3;0;false;false;;;;;;
                                  -239438;2;0;false;false;63;95;191;;;
                                  -239440;2;0;false;false;;;;;;
                                  -239442;6;1;false;false;127;0;85;;;
                                  -239448;1;0;false;false;;;;;;
                                  -239449;4;1;false;false;127;0;85;;;
                                  -239453;1;0;false;false;;;;;;
                                  -239454;18;0;false;false;0;0;0;;;
                                  -239472;3;1;false;false;127;0;85;;;
                                  -239475;1;0;false;false;;;;;;
                                  -239476;10;0;false;false;0;0;0;;;
                                  -239486;1;0;false;false;;;;;;
                                  -239487;3;1;false;false;127;0;85;;;
                                  -239490;1;0;false;false;;;;;;
                                  -239491;10;0;false;false;0;0;0;;;
                                  -239501;1;0;false;false;;;;;;
                                  -239502;5;0;false;false;0;0;0;;;
                                  -239507;1;0;false;false;;;;;;
                                  -239508;11;0;false;false;0;0;0;;;
                                  -239519;1;0;false;false;;;;;;
                                  -239520;1;0;false;false;0;0;0;;;
                                  -239521;3;0;false;false;;;;;;
                                  -239524;14;0;false;false;0;0;0;;;
                                  -239538;3;0;false;false;;;;;;
                                  -239541;3;1;false;false;127;0;85;;;
                                  -239544;1;0;false;false;;;;;;
                                  -239545;18;0;false;false;0;0;0;;;
                                  -239563;1;0;false;false;;;;;;
                                  -239564;1;0;false;false;0;0;0;;;
                                  -239565;1;0;false;false;;;;;;
                                  -239566;24;0;false;false;0;0;0;;;
                                  -239590;6;0;false;false;;;;;;
                                  -239596;76;0;false;false;63;127;95;;;
                                  -239672;1;0;false;false;;;;;;
                                  -239673;2;1;false;false;127;0;85;;;
                                  -239675;1;0;false;false;;;;;;
                                  -239676;20;0;false;false;0;0;0;;;
                                  -239696;1;0;false;false;;;;;;
                                  -239697;1;0;false;false;0;0;0;;;
                                  -239698;4;0;false;false;;;;;;
                                  -239702;6;1;false;false;127;0;85;;;
                                  -239708;1;0;false;false;0;0;0;;;
                                  -239709;3;0;false;false;;;;;;
                                  -239712;1;0;false;false;0;0;0;;;
                                  -239713;3;0;false;false;;;;;;
                                  -239716;2;1;false;false;127;0;85;;;
                                  -239718;1;0;false;false;;;;;;
                                  -239719;10;0;false;false;0;0;0;;;
                                  -239729;1;0;false;false;;;;;;
                                  -239730;1;0;false;false;0;0;0;;;
                                  -239731;1;0;false;false;;;;;;
                                  -239732;1;0;false;false;0;0;0;;;
                                  -239733;1;0;false;false;;;;;;
                                  -239734;2;0;false;false;0;0;0;;;
                                  -239736;1;0;false;false;;;;;;
                                  -239737;9;0;false;false;0;0;0;;;
                                  -239746;1;0;false;false;;;;;;
                                  -239747;1;0;false;false;0;0;0;;;
                                  -239748;1;0;false;false;;;;;;
                                  -239749;9;0;false;false;0;0;0;;;
                                  -239758;1;0;false;false;;;;;;
                                  -239759;1;0;false;false;0;0;0;;;
                                  -239760;1;0;false;false;;;;;;
                                  -239761;30;0;false;false;0;0;0;;;
                                  -239791;1;0;false;false;;;;;;
                                  -239792;1;0;false;false;0;0;0;;;
                                  -239793;4;0;false;false;;;;;;
                                  -239797;38;0;false;false;0;0;0;;;
                                  -239835;3;0;false;false;;;;;;
                                  -239838;1;0;false;false;0;0;0;;;
                                  -239839;4;0;false;false;;;;;;
                                  -239843;46;0;false;false;0;0;0;;;
                                  -239889;1;0;false;false;;;;;;
                                  -239890;10;0;false;false;0;0;0;;;
                                  -239900;1;0;false;false;;;;;;
                                  -239901;12;0;false;false;0;0;0;;;
                                  -239913;3;0;false;false;;;;;;
                                  -239916;56;0;false;false;63;127;95;;;
                                  -239972;1;0;false;false;;;;;;
                                  -239973;2;1;false;false;127;0;85;;;
                                  -239975;1;0;false;false;;;;;;
                                  -239976;10;0;false;false;0;0;0;;;
                                  -239986;1;0;false;false;;;;;;
                                  -239987;1;0;false;false;0;0;0;;;
                                  -239988;1;0;false;false;;;;;;
                                  -239989;18;0;false;false;0;0;0;;;
                                  -240007;1;0;false;false;;;;;;
                                  -240008;2;0;false;false;0;0;0;;;
                                  -240010;1;0;false;false;;;;;;
                                  -240011;9;0;false;false;0;0;0;;;
                                  -240020;1;0;false;false;;;;;;
                                  -240021;1;0;false;false;0;0;0;;;
                                  -240022;1;0;false;false;;;;;;
                                  -240023;9;0;false;false;0;0;0;;;
                                  -240032;1;0;false;false;;;;;;
                                  -240033;1;0;false;false;0;0;0;;;
                                  -240034;1;0;false;false;;;;;;
                                  -240035;1;0;false;false;0;0;0;;;
                                  -240036;1;0;false;false;;;;;;
                                  -240037;1;0;false;false;0;0;0;;;
                                  -240038;1;0;false;false;;;;;;
                                  -240039;9;0;false;false;0;0;0;;;
                                  -240048;1;0;false;false;;;;;;
                                  -240049;1;0;false;false;0;0;0;;;
                                  -240050;4;0;false;false;;;;;;
                                  -240054;6;1;false;false;127;0;85;;;
                                  -240060;1;0;false;false;0;0;0;;;
                                  -240061;3;0;false;false;;;;;;
                                  -240064;1;0;false;false;0;0;0;;;
                                  -240065;3;0;false;false;;;;;;
                                  -240068;30;0;false;false;63;127;95;;;
                                  -240098;1;0;false;false;;;;;;
                                  -240099;2;1;false;false;127;0;85;;;
                                  -240101;1;0;false;false;;;;;;
                                  -240102;10;0;false;false;0;0;0;;;
                                  -240112;1;0;false;false;;;;;;
                                  -240113;1;0;false;false;0;0;0;;;
                                  -240114;1;0;false;false;;;;;;
                                  -240115;9;0;false;false;0;0;0;;;
                                  -240124;1;0;false;false;;;;;;
                                  -240125;1;0;false;false;0;0;0;;;
                                  -240126;4;0;false;false;;;;;;
                                  -240130;9;0;false;false;0;0;0;;;
                                  -240139;1;0;false;false;;;;;;
                                  -240140;2;0;false;false;0;0;0;;;
                                  -240142;1;0;false;false;;;;;;
                                  -240143;8;0;false;false;0;0;0;;;
                                  -240151;1;0;false;false;;;;;;
                                  -240152;1;0;false;false;0;0;0;;;
                                  -240153;1;0;false;false;;;;;;
                                  -240154;10;0;false;false;0;0;0;;;
                                  -240164;4;0;false;false;;;;;;
                                  -240168;9;0;false;false;0;0;0;;;
                                  -240177;1;0;false;false;;;;;;
                                  -240178;1;0;false;false;0;0;0;;;
                                  -240179;1;0;false;false;;;;;;
                                  -240180;9;0;false;false;0;0;0;;;
                                  -240189;3;0;false;false;;;;;;
                                  -240192;1;0;false;false;0;0;0;;;
                                  -240193;3;0;false;false;;;;;;
                                  -240196;2;1;false;false;127;0;85;;;
                                  -240198;1;0;false;false;;;;;;
                                  -240199;10;0;false;false;0;0;0;;;
                                  -240209;1;0;false;false;;;;;;
                                  -240210;1;0;false;false;0;0;0;;;
                                  -240211;1;0;false;false;;;;;;
                                  -240212;9;0;false;false;0;0;0;;;
                                  -240221;1;0;false;false;;;;;;
                                  -240222;1;0;false;false;0;0;0;;;
                                  -240223;1;0;false;false;;;;;;
                                  -240224;1;0;false;false;0;0;0;;;
                                  -240225;1;0;false;false;;;;;;
                                  -240226;1;0;false;false;0;0;0;;;
                                  -240227;1;0;false;false;;;;;;
                                  -240228;19;0;false;false;0;0;0;;;
                                  -240247;1;0;false;false;;;;;;
                                  -240248;1;0;false;false;0;0;0;;;
                                  -240249;4;0;false;false;;;;;;
                                  -240253;9;0;false;false;0;0;0;;;
                                  -240262;1;0;false;false;;;;;;
                                  -240263;1;0;false;false;0;0;0;;;
                                  -240264;1;0;false;false;;;;;;
                                  -240265;18;0;false;false;0;0;0;;;
                                  -240283;1;0;false;false;;;;;;
                                  -240284;1;0;false;false;0;0;0;;;
                                  -240285;1;0;false;false;;;;;;
                                  -240286;9;0;false;false;0;0;0;;;
                                  -240295;1;0;false;false;;;;;;
                                  -240296;1;0;false;false;0;0;0;;;
                                  -240297;1;0;false;false;;;;;;
                                  -240298;2;0;false;false;0;0;0;;;
                                  -240300;3;0;false;false;;;;;;
                                  -240303;1;0;false;false;0;0;0;;;
                                  -240304;3;0;false;false;;;;;;
                                  -240307;9;0;false;false;0;0;0;;;
                                  -240316;1;0;false;false;;;;;;
                                  -240317;2;0;false;false;0;0;0;;;
                                  -240319;1;0;false;false;;;;;;
                                  -240320;9;0;false;false;0;0;0;;;
                                  -240329;3;0;false;false;;;;;;
                                  -240332;5;1;false;false;127;0;85;;;
                                  -240337;8;0;false;false;0;0;0;;;
                                  -240345;4;0;false;false;;;;;;
                                  -240349;11;0;false;false;0;0;0;;;
                                  -240360;1;0;false;false;;;;;;
                                  -240361;9;0;false;false;0;0;0;;;
                                  -240370;1;0;false;false;;;;;;
                                  -240371;1;0;false;false;0;0;0;;;
                                  -240372;1;0;false;false;;;;;;
                                  -240373;10;0;false;false;0;0;0;;;
                                  -240383;1;0;false;false;;;;;;
                                  -240384;1;0;false;false;0;0;0;;;
                                  -240385;1;0;false;false;;;;;;
                                  -240386;10;0;false;false;0;0;0;;;
                                  -240396;5;0;false;false;;;;;;
                                  -240401;21;0;false;false;0;0;0;;;
                                  -240422;1;0;false;false;;;;;;
                                  -240423;1;0;false;false;0;0;0;;;
                                  -240424;1;0;false;false;;;;;;
                                  -240425;10;0;false;false;0;0;0;;;
                                  -240435;1;0;false;false;;;;;;
                                  -240436;1;0;false;false;0;0;0;;;
                                  -240437;1;0;false;false;;;;;;
                                  -240438;12;0;false;false;0;0;0;;;
                                  -240450;1;0;false;false;;;;;;
                                  -240451;9;0;false;false;0;0;0;;;
                                  -240460;1;0;false;false;;;;;;
                                  -240461;1;0;false;false;0;0;0;;;
                                  -240462;1;0;false;false;;;;;;
                                  -240463;11;0;false;false;0;0;0;;;
                                  -240474;1;0;false;false;;;;;;
                                  -240475;4;1;false;false;127;0;85;;;
                                  -240479;2;0;false;false;0;0;0;;;
                                  -240481;2;0;false;false;;;;;;
                                  -240483;1;0;false;false;0;0;0;;;
                                  -240484;2;0;false;false;;;;;;
                                  -240486;3;0;false;false;63;95;191;;;
                                  -240489;3;0;false;false;;;;;;
                                  -240492;1;0;false;false;63;95;191;;;
                                  -240493;1;0;false;false;;;;;;
                                  -240494;5;0;false;false;63;95;191;;;
                                  -240499;1;0;false;false;;;;;;
                                  -240500;9;0;false;false;63;95;191;;;
                                  -240509;1;0;false;false;;;;;;
                                  -240510;6;0;false;false;63;95;191;;;
                                  -240516;1;0;false;false;;;;;;
                                  -240517;5;0;false;false;63;95;191;;;
                                  -240522;1;0;false;false;;;;;;
                                  -240523;2;0;false;false;63;95;191;;;
                                  -240525;1;0;false;false;;;;;;
                                  -240526;4;0;false;false;63;95;191;;;
                                  -240530;1;0;false;false;;;;;;
                                  -240531;9;0;false;false;63;95;191;;;
                                  -240540;1;0;false;false;;;;;;
                                  -240541;10;0;false;false;63;95;191;;;
                                  -240551;3;0;false;false;;;;;;
                                  -240554;2;0;false;false;63;95;191;;;
                                  -240556;2;0;false;false;;;;;;
                                  -240558;4;1;false;false;127;0;85;;;
                                  -240562;1;0;false;false;;;;;;
                                  -240563;29;0;false;false;0;0;0;;;
                                  -240592;1;0;false;false;;;;;;
                                  -240593;1;0;false;false;0;0;0;;;
                                  -240594;3;0;false;false;;;;;;
                                  -240597;2;1;false;false;127;0;85;;;
                                  -240599;1;0;false;false;;;;;;
                                  -240600;18;0;false;false;0;0;0;;;
                                  -240618;1;0;false;false;;;;;;
                                  -240619;1;0;false;false;0;0;0;;;
                                  -240620;4;0;false;false;;;;;;
                                  -240624;2;1;false;false;127;0;85;;;
                                  -240626;1;0;false;false;;;;;;
                                  -240627;12;0;false;false;0;0;0;;;
                                  -240639;1;0;false;false;;;;;;
                                  -240640;1;0;false;false;0;0;0;;;
                                  -240641;1;0;false;false;;;;;;
                                  -240642;23;0;false;false;0;0;0;;;
                                  -240665;1;0;false;false;;;;;;
                                  -240666;1;0;false;false;0;0;0;;;
                                  -240667;5;0;false;false;;;;;;
                                  -240672;15;0;false;false;0;0;0;;;
                                  -240687;1;0;false;false;;;;;;
                                  -240688;1;0;false;false;0;0;0;;;
                                  -240689;1;0;false;false;;;;;;
                                  -240690;23;0;false;false;0;0;0;;;
                                  -240713;4;0;false;false;;;;;;
                                  -240717;1;0;false;false;0;0;0;;;
                                  -240718;4;0;false;false;;;;;;
                                  -240722;4;1;false;false;127;0;85;;;
                                  -240726;1;0;false;false;;;;;;
                                  -240727;2;1;false;false;127;0;85;;;
                                  -240729;1;0;false;false;;;;;;
                                  -240730;12;0;false;false;0;0;0;;;
                                  -240742;1;0;false;false;;;;;;
                                  -240743;1;0;false;false;0;0;0;;;
                                  -240744;1;0;false;false;;;;;;
                                  -240745;23;0;false;false;0;0;0;;;
                                  -240768;1;0;false;false;;;;;;
                                  -240769;1;0;false;false;0;0;0;;;
                                  -240770;5;0;false;false;;;;;;
                                  -240775;15;0;false;false;0;0;0;;;
                                  -240790;1;0;false;false;;;;;;
                                  -240791;1;0;false;false;0;0;0;;;
                                  -240792;1;0;false;false;;;;;;
                                  -240793;23;0;false;false;0;0;0;;;
                                  -240816;4;0;false;false;;;;;;
                                  -240820;1;0;false;false;0;0;0;;;
                                  -240821;3;0;false;false;;;;;;
                                  -240824;1;0;false;false;0;0;0;;;
                                  -240825;2;0;false;false;;;;;;
                                  -240827;1;0;false;false;0;0;0;;;
                                  -240828;2;0;false;false;;;;;;
                                  -240830;3;0;false;false;63;95;191;;;
                                  -240833;3;0;false;false;;;;;;
                                  -240836;1;0;false;false;63;95;191;;;
                                  -240837;1;0;false;false;;;;;;
                                  -240838;4;0;false;false;63;95;191;;;
                                  -240842;1;0;false;false;;;;;;
                                  -240843;3;0;false;false;63;95;191;;;
                                  -240846;1;0;false;false;;;;;;
                                  -240847;11;0;false;false;63;95;191;;;
                                  -240858;1;0;false;false;;;;;;
                                  -240859;2;0;false;false;63;95;191;;;
                                  -240861;1;0;false;false;;;;;;
                                  -240862;3;0;false;false;63;95;191;;;
                                  -240865;1;0;false;false;;;;;;
                                  -240866;9;0;false;false;63;95;191;;;
                                  -240875;1;0;false;false;;;;;;
                                  -240876;5;0;false;false;63;95;191;;;
                                  -240881;1;0;false;false;;;;;;
                                  -240882;4;0;false;false;63;95;191;;;
                                  -240886;1;0;false;false;;;;;;
                                  -240887;2;0;false;false;63;95;191;;;
                                  -240889;1;0;false;false;;;;;;
                                  -240890;3;0;false;false;63;95;191;;;
                                  -240893;3;0;false;false;;;;;;
                                  -240896;1;0;false;false;63;95;191;;;
                                  -240897;1;0;false;false;;;;;;
                                  -240898;2;0;false;false;63;95;191;;;
                                  -240900;1;0;false;false;;;;;;
                                  -240901;3;0;false;false;63;95;191;;;
                                  -240904;1;0;false;false;;;;;;
                                  -240905;9;0;false;false;63;95;191;;;
                                  -240914;1;0;false;false;;;;;;
                                  -240915;6;0;false;false;127;127;159;;;
                                  -240921;17;0;false;false;63;95;191;;;
                                  -240938;7;0;false;false;127;127;159;;;
                                  -240945;1;0;false;false;;;;;;
                                  -240946;2;0;false;false;63;95;191;;;
                                  -240948;1;0;false;false;;;;;;
                                  -240949;6;0;false;false;127;127;159;;;
                                  -240955;17;0;false;false;63;95;191;;;
                                  -240972;7;0;false;false;127;127;159;;;
                                  -240979;1;0;false;false;63;95;191;;;
                                  -240980;3;0;false;false;;;;;;
                                  -240983;1;0;false;false;63;95;191;;;
                                  -240984;1;0;false;false;;;;;;
                                  -240985;3;0;false;false;127;127;159;;;
                                  -240988;3;0;false;false;;;;;;
                                  -240991;1;0;false;false;63;95;191;;;
                                  -240992;3;0;false;false;;;;;;
                                  -240995;1;0;false;false;63;95;191;;;
                                  -240996;1;0;false;false;;;;;;
                                  -240997;7;1;false;false;127;159;191;;;
                                  -241004;11;0;false;false;63;95;191;;;
                                  -241015;1;0;false;false;;;;;;
                                  -241016;3;0;false;false;63;95;191;;;
                                  -241019;1;0;false;false;;;;;;
                                  -241020;11;0;false;false;63;95;191;;;
                                  -241031;1;0;false;false;;;;;;
                                  -241032;5;0;false;false;63;95;191;;;
                                  -241037;3;0;false;false;;;;;;
                                  -241040;1;0;false;false;63;95;191;;;
                                  -241041;4;0;false;false;;;;;;
                                  -241045;1;0;false;false;63;95;191;;;
                                  -241046;1;0;false;false;;;;;;
                                  -241047;11;1;false;false;127;159;191;;;
                                  -241058;12;0;false;false;63;95;191;;;
                                  -241070;1;0;false;false;;;;;;
                                  -241071;4;0;false;false;127;127;159;;;
                                  -241075;3;0;false;false;;;;;;
                                  -241078;1;0;false;false;63;95;191;;;
                                  -241079;4;0;false;false;;;;;;
                                  -241083;4;0;false;false;127;127;159;;;
                                  -241087;21;0;false;false;63;95;191;;;
                                  -241108;1;0;false;false;;;;;;
                                  -241109;1;0;false;false;127;127;159;;;
                                  -241110;1;0;false;false;;;;;;
                                  -241111;2;0;false;false;63;95;191;;;
                                  -241113;1;0;false;false;;;;;;
                                  -241114;3;0;false;false;63;95;191;;;
                                  -241117;1;0;false;false;;;;;;
                                  -241118;8;0;false;false;63;95;191;;;
                                  -241126;1;0;false;false;;;;;;
                                  -241127;3;0;false;false;63;95;191;;;
                                  -241130;1;0;false;false;;;;;;
                                  -241131;4;0;false;false;63;95;191;;;
                                  -241135;1;0;false;false;;;;;;
                                  -241136;8;0;false;false;63;95;191;;;
                                  -241144;5;0;false;false;127;127;159;;;
                                  -241149;3;0;false;false;;;;;;
                                  -241152;1;0;false;false;63;95;191;;;
                                  -241153;4;0;false;false;;;;;;
                                  -241157;4;0;false;false;127;127;159;;;
                                  -241161;27;0;false;false;63;95;191;;;
                                  -241188;1;0;false;false;;;;;;
                                  -241189;1;0;false;false;127;127;159;;;
                                  -241190;1;0;false;false;;;;;;
                                  -241191;2;0;false;false;63;95;191;;;
                                  -241193;1;0;false;false;;;;;;
                                  -241194;3;0;false;false;63;95;191;;;
                                  -241197;1;0;false;false;;;;;;
                                  -241198;6;0;false;false;63;95;191;;;
                                  -241204;1;0;false;false;;;;;;
                                  -241205;4;0;false;false;63;95;191;;;
                                  -241209;1;0;false;false;;;;;;
                                  -241210;3;0;false;false;63;95;191;;;
                                  -241213;1;0;false;false;;;;;;
                                  -241214;6;0;false;false;63;95;191;;;
                                  -241220;1;0;false;false;;;;;;
                                  -241221;4;0;false;false;63;95;191;;;
                                  -241225;1;0;false;false;;;;;;
                                  -241226;7;0;false;false;63;95;191;;;
                                  -241233;1;0;false;false;;;;;;
                                  -241234;3;0;false;false;63;95;191;;;
                                  -241237;1;0;false;false;;;;;;
                                  -241238;8;0;false;false;63;95;191;;;
                                  -241246;5;0;false;false;127;127;159;;;
                                  -241251;3;0;false;false;;;;;;
                                  -241254;1;0;false;false;63;95;191;;;
                                  -241255;1;0;false;false;;;;;;
                                  -241256;5;0;false;false;127;127;159;;;
                                  -241261;3;0;false;false;;;;;;
                                  -241264;1;0;false;false;63;95;191;;;
                                  -241265;4;0;false;false;;;;;;
                                  -241269;1;0;false;false;63;95;191;;;
                                  -241270;1;0;false;false;;;;;;
                                  -241271;7;1;false;false;127;159;191;;;
                                  -241278;5;0;false;false;63;95;191;;;
                                  -241283;3;0;false;false;;;;;;
                                  -241286;2;0;false;false;63;95;191;;;
                                  -241288;2;0;false;false;;;;;;
                                  -241290;6;1;false;false;127;0;85;;;
                                  -241296;1;0;false;false;;;;;;
                                  -241297;4;1;false;false;127;0;85;;;
                                  -241301;1;0;false;false;;;;;;
                                  -241302;15;0;false;false;0;0;0;;;
                                  -241317;3;1;false;false;127;0;85;;;
                                  -241320;1;0;false;false;;;;;;
                                  -241321;12;0;false;false;0;0;0;;;
                                  -241333;1;0;false;false;;;;;;
                                  -241334;1;0;false;false;0;0;0;;;
                                  -241335;3;0;false;false;;;;;;
                                  -241338;2;1;false;false;127;0;85;;;
                                  -241340;1;0;false;false;;;;;;
                                  -241341;13;0;false;false;0;0;0;;;
                                  -241354;1;0;false;false;;;;;;
                                  -241355;1;0;false;false;0;0;0;;;
                                  -241356;1;0;false;false;;;;;;
                                  -241357;18;0;false;false;0;0;0;;;
                                  -241375;1;0;false;false;;;;;;
                                  -241376;1;0;false;false;0;0;0;;;
                                  -241377;1;0;false;false;;;;;;
                                  -241378;19;0;false;false;0;0;0;;;
                                  -241397;1;0;false;false;;;;;;
                                  -241398;2;0;false;false;0;0;0;;;
                                  -241400;1;0;false;false;;;;;;
                                  -241401;2;0;false;false;0;0;0;;;
                                  -241403;1;0;false;false;;;;;;
                                  -241404;1;0;false;false;0;0;0;;;
                                  -241405;5;0;false;false;;;;;;
                                  -241410;6;1;false;false;127;0;85;;;
                                  -241416;1;0;false;false;0;0;0;;;
                                  -241417;3;0;false;false;;;;;;
                                  -241420;1;0;false;false;0;0;0;;;
                                  -241421;3;0;false;false;;;;;;
                                  -241424;2;1;false;false;127;0;85;;;
                                  -241426;1;0;false;false;;;;;;
                                  -241427;13;0;false;false;0;0;0;;;
                                  -241440;1;0;false;false;;;;;;
                                  -241441;1;0;false;false;0;0;0;;;
                                  -241442;1;0;false;false;;;;;;
                                  -241443;18;0;false;false;0;0;0;;;
                                  -241461;1;0;false;false;;;;;;
                                  -241462;2;0;false;false;0;0;0;;;
                                  -241464;1;0;false;false;;;;;;
                                  -241465;1;0;false;false;0;0;0;;;
                                  -241466;1;0;false;false;;;;;;
                                  -241467;2;0;false;false;0;0;0;;;
                                  -241469;1;0;false;false;;;;;;
                                  -241470;12;0;false;false;0;0;0;;;
                                  -241482;1;0;false;false;;;;;;
                                  -241483;1;0;false;false;0;0;0;;;
                                  -241484;1;0;false;false;;;;;;
                                  -241485;18;0;false;false;0;0;0;;;
                                  -241503;1;0;false;false;;;;;;
                                  -241504;2;0;false;false;0;0;0;;;
                                  -241506;1;0;false;false;;;;;;
                                  -241507;2;0;false;false;0;0;0;;;
                                  -241509;1;0;false;false;;;;;;
                                  -241510;1;0;false;false;0;0;0;;;
                                  -241511;4;0;false;false;;;;;;
                                  -241515;6;1;false;false;127;0;85;;;
                                  -241521;1;0;false;false;0;0;0;;;
                                  -241522;4;0;false;false;;;;;;
                                  -241526;1;0;false;false;0;0;0;;;
                                  -241527;3;0;false;false;;;;;;
                                  -241530;2;1;false;false;127;0;85;;;
                                  -241532;1;0;false;false;;;;;;
                                  -241533;13;0;false;false;0;0;0;;;
                                  -241546;1;0;false;false;;;;;;
                                  -241547;1;0;false;false;0;0;0;;;
                                  -241548;1;0;false;false;;;;;;
                                  -241549;18;0;false;false;0;0;0;;;
                                  -241567;1;0;false;false;;;;;;
                                  -241568;2;0;false;false;0;0;0;;;
                                  -241570;1;0;false;false;;;;;;
                                  -241571;1;0;false;false;0;0;0;;;
                                  -241572;1;0;false;false;;;;;;
                                  -241573;2;0;false;false;0;0;0;;;
                                  -241575;1;0;false;false;;;;;;
                                  -241576;13;0;false;false;0;0;0;;;
                                  -241589;1;0;false;false;;;;;;
                                  -241590;1;0;false;false;0;0;0;;;
                                  -241591;4;0;false;false;;;;;;
                                  -241595;6;1;false;false;127;0;85;;;
                                  -241601;1;0;false;false;0;0;0;;;
                                  -241602;4;0;false;false;;;;;;
                                  -241606;1;0;false;false;0;0;0;;;
                                  -241607;4;0;false;false;;;;;;
                                  -241611;2;1;false;false;127;0;85;;;
                                  -241613;1;0;false;false;;;;;;
                                  -241614;13;0;false;false;0;0;0;;;
                                  -241627;1;0;false;false;;;;;;
                                  -241628;1;0;false;false;0;0;0;;;
                                  -241629;1;0;false;false;;;;;;
                                  -241630;18;0;false;false;0;0;0;;;
                                  -241648;1;0;false;false;;;;;;
                                  -241649;2;0;false;false;0;0;0;;;
                                  -241651;1;0;false;false;;;;;;
                                  -241652;1;0;false;false;0;0;0;;;
                                  -241653;1;0;false;false;;;;;;
                                  -241654;2;0;false;false;0;0;0;;;
                                  -241656;1;0;false;false;;;;;;
                                  -241657;14;0;false;false;0;0;0;;;
                                  -241671;1;0;false;false;;;;;;
                                  -241672;1;0;false;false;0;0;0;;;
                                  -241673;4;0;false;false;;;;;;
                                  -241677;6;1;false;false;127;0;85;;;
                                  -241683;1;0;false;false;0;0;0;;;
                                  -241684;3;0;false;false;;;;;;
                                  -241687;1;0;false;false;0;0;0;;;
                                  -241688;3;0;false;false;;;;;;
                                  -241691;2;1;false;false;127;0;85;;;
                                  -241693;1;0;false;false;;;;;;
                                  -241694;33;0;false;false;0;0;0;;;
                                  -241727;1;0;false;false;;;;;;
                                  -241728;13;0;false;false;0;0;0;;;
                                  -241741;1;0;false;false;;;;;;
                                  -241742;1;0;false;false;0;0;0;;;
                                  -241743;4;0;false;false;;;;;;
                                  -241747;6;1;false;false;127;0;85;;;
                                  -241753;1;0;false;false;0;0;0;;;
                                  -241754;3;0;false;false;;;;;;
                                  -241757;1;0;false;false;0;0;0;;;
                                  -241758;3;0;false;false;;;;;;
                                  -241761;10;0;false;false;0;0;0;;;
                                  -241771;1;0;false;false;;;;;;
                                  -241772;1;0;false;false;0;0;0;;;
                                  -241773;1;0;false;false;;;;;;
                                  -241774;12;0;false;false;0;0;0;;;
                                  -241786;1;0;false;false;;;;;;
                                  -241787;1;0;false;false;0;0;0;;;
                                  -241788;1;0;false;false;;;;;;
                                  -241789;18;0;false;false;0;0;0;;;
                                  -241807;1;0;false;false;;;;;;
                                  -241808;2;0;false;false;0;0;0;;;
                                  -241810;1;0;false;false;;;;;;
                                  -241811;2;0;false;false;0;0;0;;;
                                  -241813;3;0;false;false;;;;;;
                                  -241816;21;0;false;false;0;0;0;;;
                                  -241837;3;0;false;false;;;;;;
                                  -241840;14;0;false;false;0;0;0;;;
                                  -241854;1;0;false;false;;;;;;
                                  -241855;1;0;false;false;0;0;0;;;
                                  -241856;1;0;false;false;;;;;;
                                  -241857;9;0;false;false;0;0;0;;;
                                  -241866;3;0;false;false;;;;;;
                                  -241869;19;0;false;false;0;0;0;;;
                                  -241888;3;0;false;false;;;;;;
                                  -241891;21;0;false;false;0;0;0;;;
                                  -241912;3;0;false;false;;;;;;
                                  -241915;20;0;false;false;0;0;0;;;
                                  -241935;3;0;false;false;;;;;;
                                  -241938;5;1;false;false;127;0;85;;;
                                  -241943;10;0;false;false;0;0;0;;;
                                  -241953;2;0;false;false;;;;;;
                                  -241955;1;0;false;false;0;0;0;;;
                                  -241956;2;0;false;false;;;;;;
                                  -241958;3;0;false;false;63;95;191;;;
                                  -241961;3;0;false;false;;;;;;
                                  -241964;1;0;false;false;63;95;191;;;
                                  -241965;1;0;false;false;;;;;;
                                  -241966;7;0;false;false;63;95;191;;;
                                  -241973;1;0;false;false;;;;;;
                                  -241974;3;0;false;false;63;95;191;;;
                                  -241977;1;0;false;false;;;;;;
                                  -241978;7;0;false;false;63;95;191;;;
                                  -241985;1;0;false;false;;;;;;
                                  -241986;3;0;false;false;63;95;191;;;
                                  -241989;1;0;false;false;;;;;;
                                  -241990;3;0;false;false;63;95;191;;;
                                  -241993;1;0;false;false;;;;;;
                                  -241994;4;0;false;false;63;95;191;;;
                                  -241998;1;0;false;false;;;;;;
                                  -241999;4;0;false;false;63;95;191;;;
                                  -242003;1;0;false;false;;;;;;
                                  -242004;2;0;false;false;63;95;191;;;
                                  -242006;1;0;false;false;;;;;;
                                  -242007;3;0;false;false;63;95;191;;;
                                  -242010;1;0;false;false;;;;;;
                                  -242011;6;0;false;false;63;95;191;;;
                                  -242017;1;0;false;false;;;;;;
                                  -242018;4;0;false;false;63;95;191;;;
                                  -242022;1;0;false;false;;;;;;
                                  -242023;2;0;false;false;63;95;191;;;
                                  -242025;4;0;false;false;;;;;;
                                  -242029;1;0;false;false;63;95;191;;;
                                  -242030;1;0;false;false;;;;;;
                                  -242031;7;0;false;false;63;95;191;;;
                                  -242038;1;0;false;false;;;;;;
                                  -242039;7;0;false;false;63;95;191;;;
                                  -242046;1;0;false;false;;;;;;
                                  -242047;12;0;false;false;63;95;191;;;
                                  -242059;1;0;false;false;;;;;;
                                  -242060;8;0;false;false;63;95;191;;;
                                  -242068;3;0;false;false;;;;;;
                                  -242071;2;0;false;false;63;95;191;;;
                                  -242073;2;0;false;false;;;;;;
                                  -242075;4;1;false;false;127;0;85;;;
                                  -242079;1;0;false;false;;;;;;
                                  -242080;15;0;false;false;0;0;0;;;
                                  -242095;1;0;false;false;;;;;;
                                  -242096;1;0;false;false;0;0;0;;;
                                  -242097;3;0;false;false;;;;;;
                                  -242100;9;0;false;false;0;0;0;;;
                                  -242109;1;0;false;false;;;;;;
                                  -242110;11;0;false;false;0;0;0;;;
                                  -242121;1;0;false;false;;;;;;
                                  -242122;1;0;false;false;0;0;0;;;
                                  -242123;1;0;false;false;;;;;;
                                  -242124;17;0;false;false;0;0;0;;;
                                  -242141;6;0;false;false;;;;;;
                                  -242147;2;1;false;false;127;0;85;;;
                                  -242149;1;0;false;false;;;;;;
                                  -242150;12;0;false;false;0;0;0;;;
                                  -242162;1;0;false;false;;;;;;
                                  -242163;2;0;false;false;0;0;0;;;
                                  -242165;1;0;false;false;;;;;;
                                  -242166;4;1;false;false;127;0;85;;;
                                  -242170;1;0;false;false;0;0;0;;;
                                  -242171;1;0;false;false;;;;;;
                                  -242172;1;0;false;false;0;0;0;;;
                                  -242173;4;0;false;false;;;;;;
                                  -242177;9;0;false;false;0;0;0;;;
                                  -242186;1;0;false;false;;;;;;
                                  -242187;10;0;false;false;0;0;0;;;
                                  -242197;1;0;false;false;;;;;;
                                  -242198;1;0;false;false;0;0;0;;;
                                  -242199;1;0;false;false;;;;;;
                                  -242200;16;0;false;false;0;0;0;;;
                                  -242216;4;0;false;false;;;;;;
                                  -242220;5;1;false;false;127;0;85;;;
                                  -242225;1;0;false;false;;;;;;
                                  -242226;3;1;false;false;127;0;85;;;
                                  -242229;1;0;false;false;;;;;;
                                  -242230;8;0;false;false;0;0;0;;;
                                  -242238;1;0;false;false;;;;;;
                                  -242239;1;0;false;false;0;0;0;;;
                                  -242240;1;0;false;false;;;;;;
                                  -242241;2;0;false;false;0;0;0;;;
                                  -242243;4;0;false;false;;;;;;
                                  -242247;3;1;false;false;127;0;85;;;
                                  -242250;1;0;false;false;;;;;;
                                  -242251;7;0;false;false;0;0;0;;;
                                  -242258;1;0;false;false;;;;;;
                                  -242259;1;0;false;false;0;0;0;;;
                                  -242260;1;0;false;false;;;;;;
                                  -242261;22;0;false;false;0;0;0;;;
                                  -242283;1;0;false;false;;;;;;
                                  -242284;1;0;false;false;0;0;0;;;
                                  -242285;1;0;false;false;;;;;;
                                  -242286;23;0;false;false;0;0;0;;;
                                  -242309;8;0;false;false;;;;;;
                                  -242317;60;0;false;false;63;127;95;;;
                                  -242377;2;0;false;false;;;;;;
                                  -242379;65;0;false;false;63;127;95;;;
                                  -242444;2;0;false;false;;;;;;
                                  -242446;56;0;false;false;63;127;95;;;
                                  -242502;2;0;false;false;;;;;;
                                  -242504;2;1;false;false;127;0;85;;;
                                  -242506;1;0;false;false;;;;;;
                                  -242507;18;0;false;false;0;0;0;;;
                                  -242525;1;0;false;false;;;;;;
                                  -242526;1;0;false;false;0;0;0;;;
                                  -242527;1;0;false;false;;;;;;
                                  -242528;8;0;false;false;0;0;0;;;
                                  -242536;1;0;false;false;;;;;;
                                  -242537;1;0;false;false;0;0;0;;;
                                  -242538;5;0;false;false;;;;;;
                                  -242543;22;0;false;false;0;0;0;;;
                                  -242565;6;0;false;false;;;;;;
                                  -242571;27;0;false;false;0;0;0;;;
                                  -242598;6;0;false;false;;;;;;
                                  -242604;25;0;false;false;0;0;0;;;
                                  -242629;6;0;false;false;;;;;;
                                  -242635;8;0;false;false;0;0;0;;;
                                  -242643;6;0;false;false;;;;;;
                                  -242649;18;0;false;false;0;0;0;;;
                                  -242667;4;0;false;false;;;;;;
                                  -242671;15;0;false;false;63;127;95;;;
                                  -242686;4;0;false;false;;;;;;
                                  -242690;27;0;false;false;0;0;0;;;
                                  -242717;6;0;false;false;;;;;;
                                  -242723;19;0;false;false;0;0;0;;;
                                  -242742;4;0;false;false;;;;;;
                                  -242746;14;0;false;false;63;127;95;;;
                                  -242760;2;0;false;false;;;;;;
                                  -242762;1;0;false;false;0;0;0;;;
                                  -242763;4;0;false;false;;;;;;
                                  -242767;4;1;false;false;127;0;85;;;
                                  -242771;4;0;false;false;;;;;;
                                  -242775;2;1;false;false;127;0;85;;;
                                  -242777;1;0;false;false;;;;;;
                                  -242778;23;0;false;false;0;0;0;;;
                                  -242801;1;0;false;false;;;;;;
                                  -242802;2;0;false;false;0;0;0;;;
                                  -242804;1;0;false;false;;;;;;
                                  -242805;8;0;false;false;0;0;0;;;
                                  -242813;1;0;false;false;;;;;;
                                  -242814;2;0;false;false;0;0;0;;;
                                  -242816;1;0;false;false;;;;;;
                                  -242817;24;0;false;false;0;0;0;;;
                                  -242841;1;0;false;false;;;;;;
                                  -242842;2;0;false;false;0;0;0;;;
                                  -242844;1;0;false;false;;;;;;
                                  -242845;9;0;false;false;0;0;0;;;
                                  -242854;1;0;false;false;;;;;;
                                  -242855;1;0;false;false;0;0;0;;;
                                  -242856;5;0;false;false;;;;;;
                                  -242861;22;0;false;false;0;0;0;;;
                                  -242883;6;0;false;false;;;;;;
                                  -242889;27;0;false;false;0;0;0;;;
                                  -242916;6;0;false;false;;;;;;
                                  -242922;25;0;false;false;0;0;0;;;
                                  -242947;6;0;false;false;;;;;;
                                  -242953;9;0;false;false;0;0;0;;;
                                  -242962;6;0;false;false;;;;;;
                                  -242968;9;0;false;false;0;0;0;;;
                                  -242977;6;0;false;false;;;;;;
                                  -242983;27;0;false;false;0;0;0;;;
                                  -243010;6;0;false;false;;;;;;
                                  -243016;10;0;false;false;0;0;0;;;
                                  -243026;4;0;false;false;;;;;;
                                  -243030;1;0;false;false;0;0;0;;;
                                  -243031;5;0;false;false;;;;;;
                                  -243036;1;0;false;false;0;0;0;;;
                                  -243037;3;0;false;false;;;;;;
                                  -243040;25;0;false;false;0;0;0;;;
                                  -243065;2;0;false;false;;;;;;
                                  -243067;1;0;false;false;0;0;0;;;
                                  -243068;2;0;false;false;;;;;;
                                  -243070;3;0;false;false;63;95;191;;;
                                  -243073;4;0;false;false;;;;;;
                                  -243077;1;0;false;false;63;95;191;;;
                                  -243078;1;0;false;false;;;;;;
                                  -243079;4;0;false;false;63;95;191;;;
                                  -243083;1;0;false;false;;;;;;
                                  -243084;3;0;false;false;63;95;191;;;
                                  -243087;1;0;false;false;;;;;;
                                  -243088;9;0;false;false;63;95;191;;;
                                  -243097;1;0;false;false;;;;;;
                                  -243098;2;0;false;false;63;95;191;;;
                                  -243100;1;0;false;false;;;;;;
                                  -243101;3;0;false;false;63;95;191;;;
                                  -243104;1;0;false;false;;;;;;
                                  -243105;5;0;false;false;63;95;191;;;
                                  -243110;1;0;false;false;;;;;;
                                  -243111;8;0;false;false;63;95;191;;;
                                  -243119;1;0;false;false;;;;;;
                                  -243120;3;0;false;false;63;95;191;;;
                                  -243123;1;0;false;false;;;;;;
                                  -243124;7;0;false;false;63;95;191;;;
                                  -243131;1;0;false;false;;;;;;
                                  -243132;2;0;false;false;63;95;191;;;
                                  -243134;1;0;false;false;;;;;;
                                  -243135;4;0;false;false;63;95;191;;;
                                  -243139;1;0;false;false;;;;;;
                                  -243140;5;0;false;false;63;95;191;;;
                                  -243145;2;0;false;false;;;;;;
                                  -243147;10;0;false;false;63;95;191;;;
                                  -243157;1;0;false;false;;;;;;
                                  -243158;2;0;false;false;63;95;191;;;
                                  -243160;1;0;false;false;;;;;;
                                  -243161;26;0;false;false;63;95;191;;;
                                  -243187;3;0;false;false;;;;;;
                                  -243190;1;0;false;false;63;95;191;;;
                                  -243191;1;0;false;false;;;;;;
                                  -243192;3;0;false;false;127;127;159;;;
                                  -243195;3;0;false;false;;;;;;
                                  -243198;1;0;false;false;63;95;191;;;
                                  -243199;3;0;false;false;;;;;;
                                  -243202;1;0;false;false;63;95;191;;;
                                  -243203;1;0;false;false;;;;;;
                                  -243204;7;1;false;false;127;159;191;;;
                                  -243211;5;0;false;false;63;95;191;;;
                                  -243216;1;0;false;false;;;;;;
                                  -243217;3;0;false;false;63;95;191;;;
                                  -243220;1;0;false;false;;;;;;
                                  -243221;5;0;false;false;63;95;191;;;
                                  -243226;1;0;false;false;;;;;;
                                  -243227;8;0;false;false;63;95;191;;;
                                  -243235;3;0;false;false;;;;;;
                                  -243238;1;0;false;false;63;95;191;;;
                                  -243239;1;0;false;false;;;;;;
                                  -243240;5;1;false;false;127;159;191;;;
                                  -243245;22;0;false;false;63;95;191;;;
                                  -243267;3;0;false;false;;;;;;
                                  -243270;1;0;false;false;63;95;191;;;
                                  -243271;1;0;false;false;;;;;;
                                  -243272;11;1;false;false;127;159;191;;;
                                  -243283;12;0;false;false;63;95;191;;;
                                  -243295;1;0;false;false;;;;;;
                                  -243296;4;0;false;false;127;127;159;;;
                                  -243300;3;0;false;false;;;;;;
                                  -243303;1;0;false;false;63;95;191;;;
                                  -243304;4;0;false;false;;;;;;
                                  -243308;4;0;false;false;127;127;159;;;
                                  -243312;21;0;false;false;63;95;191;;;
                                  -243333;1;0;false;false;;;;;;
                                  -243334;1;0;false;false;127;127;159;;;
                                  -243335;1;0;false;false;;;;;;
                                  -243336;2;0;false;false;63;95;191;;;
                                  -243338;1;0;false;false;;;;;;
                                  -243339;3;0;false;false;63;95;191;;;
                                  -243342;1;0;false;false;;;;;;
                                  -243343;8;0;false;false;63;95;191;;;
                                  -243351;1;0;false;false;;;;;;
                                  -243352;3;0;false;false;63;95;191;;;
                                  -243355;1;0;false;false;;;;;;
                                  -243356;4;0;false;false;63;95;191;;;
                                  -243360;1;0;false;false;;;;;;
                                  -243361;8;0;false;false;63;95;191;;;
                                  -243369;5;0;false;false;127;127;159;;;
                                  -243374;3;0;false;false;;;;;;
                                  -243377;1;0;false;false;63;95;191;;;
                                  -243378;4;0;false;false;;;;;;
                                  -243382;4;0;false;false;127;127;159;;;
                                  -243386;27;0;false;false;63;95;191;;;
                                  -243413;1;0;false;false;;;;;;
                                  -243414;1;0;false;false;127;127;159;;;
                                  -243415;1;0;false;false;;;;;;
                                  -243416;2;0;false;false;63;95;191;;;
                                  -243418;1;0;false;false;;;;;;
                                  -243419;3;0;false;false;63;95;191;;;
                                  -243422;1;0;false;false;;;;;;
                                  -243423;6;0;false;false;63;95;191;;;
                                  -243429;1;0;false;false;;;;;;
                                  -243430;4;0;false;false;63;95;191;;;
                                  -243434;1;0;false;false;;;;;;
                                  -243435;3;0;false;false;63;95;191;;;
                                  -243438;1;0;false;false;;;;;;
                                  -243439;6;0;false;false;63;95;191;;;
                                  -243445;1;0;false;false;;;;;;
                                  -243446;4;0;false;false;63;95;191;;;
                                  -243450;1;0;false;false;;;;;;
                                  -243451;7;0;false;false;63;95;191;;;
                                  -243458;1;0;false;false;;;;;;
                                  -243459;3;0;false;false;63;95;191;;;
                                  -243462;1;0;false;false;;;;;;
                                  -243463;8;0;false;false;63;95;191;;;
                                  -243471;5;0;false;false;127;127;159;;;
                                  -243476;3;0;false;false;;;;;;
                                  -243479;1;0;false;false;63;95;191;;;
                                  -243480;1;0;false;false;;;;;;
                                  -243481;5;0;false;false;127;127;159;;;
                                  -243486;3;0;false;false;;;;;;
                                  -243489;1;0;false;false;63;95;191;;;
                                  -243490;1;0;false;false;;;;;;
                                  -243491;11;1;false;false;127;159;191;;;
                                  -243502;24;0;false;false;63;95;191;;;
                                  -243526;1;0;false;false;;;;;;
                                  -243527;4;0;false;false;127;127;159;;;
                                  -243531;3;0;false;false;;;;;;
                                  -243534;1;0;false;false;63;95;191;;;
                                  -243535;3;0;false;false;;;;;;
                                  -243538;4;0;false;false;127;127;159;;;
                                  -243542;22;0;false;false;63;95;191;;;
                                  -243564;1;0;false;false;;;;;;
                                  -243565;4;0;false;false;63;95;191;;;
                                  -243569;1;0;false;false;;;;;;
                                  -243570;6;0;false;false;63;95;191;;;
                                  -243576;1;0;false;false;;;;;;
                                  -243577;3;0;false;false;63;95;191;;;
                                  -243580;1;0;false;false;;;;;;
                                  -243581;5;0;false;false;63;95;191;;;
                                  -243586;1;0;false;false;;;;;;
                                  -243587;2;0;false;false;63;95;191;;;
                                  -243589;1;0;false;false;;;;;;
                                  -243590;3;0;false;false;63;95;191;;;
                                  -243593;1;0;false;false;;;;;;
                                  -243594;3;0;false;false;63;95;191;;;
                                  -243597;1;0;false;false;;;;;;
                                  -243598;2;0;false;false;63;95;191;;;
                                  -243600;1;0;false;false;;;;;;
                                  -243601;3;0;false;false;63;95;191;;;
                                  -243604;1;0;false;false;;;;;;
                                  -243605;9;0;false;false;63;95;191;;;
                                  -243614;1;0;false;false;;;;;;
                                  -243615;5;0;false;false;63;95;191;;;
                                  -243620;1;0;false;false;;;;;;
                                  -243621;2;0;false;false;63;95;191;;;
                                  -243623;1;0;false;false;;;;;;
                                  -243624;6;0;false;false;63;95;191;;;
                                  -243630;1;0;false;false;;;;;;
                                  -243631;1;0;false;false;63;95;191;;;
                                  -243632;4;0;false;false;;;;;;
                                  -243636;1;0;false;false;63;95;191;;;
                                  -243637;1;0;false;false;;;;;;
                                  -243638;5;0;false;false;63;95;191;;;
                                  -243643;1;0;false;false;;;;;;
                                  -243644;4;0;false;false;63;95;191;;;
                                  -243648;1;0;false;false;;;;;;
                                  -243649;4;0;false;false;63;95;191;;;
                                  -243653;1;0;false;false;;;;;;
                                  -243654;9;0;false;false;63;95;191;;;
                                  -243663;1;0;false;false;;;;;;
                                  -243664;4;0;false;false;63;95;191;;;
                                  -243668;1;0;false;false;;;;;;
                                  -243669;4;0;false;false;63;95;191;;;
                                  -243673;1;0;false;false;;;;;;
                                  -243674;7;0;false;false;63;95;191;;;
                                  -243681;1;0;false;false;;;;;;
                                  -243682;7;0;false;false;63;95;191;;;
                                  -243689;1;0;false;false;;;;;;
                                  -243690;2;0;false;false;63;95;191;;;
                                  -243692;1;0;false;false;;;;;;
                                  -243693;5;0;false;false;63;95;191;;;
                                  -243698;1;0;false;false;;;;;;
                                  -243699;2;0;false;false;63;95;191;;;
                                  -243701;1;0;false;false;;;;;;
                                  -243702;2;0;false;false;63;95;191;;;
                                  -243704;1;0;false;false;;;;;;
                                  -243705;5;0;false;false;63;95;191;;;
                                  -243710;1;0;false;false;;;;;;
                                  -243711;3;0;false;false;63;95;191;;;
                                  -243714;1;0;false;false;;;;;;
                                  -243715;4;0;false;false;63;95;191;;;
                                  -243719;1;0;false;false;;;;;;
                                  -243720;10;0;false;false;63;95;191;;;
                                  -243730;3;0;false;false;;;;;;
                                  -243733;1;0;false;false;63;95;191;;;
                                  -243734;1;0;false;false;;;;;;
                                  -243735;5;0;false;false;127;127;159;;;
                                  -243740;4;0;false;false;;;;;;
                                  -243744;2;0;false;false;63;95;191;;;
                                  -243746;2;0;false;false;;;;;;
                                  -243748;6;1;false;false;127;0;85;;;
                                  -243754;1;0;false;false;;;;;;
                                  -243755;4;1;false;false;127;0;85;;;
                                  -243759;1;0;false;false;;;;;;
                                  -243760;13;0;false;false;0;0;0;;;
                                  -243773;3;1;false;false;127;0;85;;;
                                  -243776;1;0;false;false;;;;;;
                                  -243777;6;0;false;false;0;0;0;;;
                                  -243783;1;0;false;false;;;;;;
                                  -243784;1;0;false;false;0;0;0;;;
                                  -243785;3;0;false;false;;;;;;
                                  -243788;48;0;false;false;63;127;95;;;
                                  -243836;1;0;false;false;;;;;;
                                  -243837;19;0;false;false;0;0;0;;;
                                  -243856;1;0;false;false;;;;;;
                                  -243857;7;0;false;false;0;0;0;;;
                                  -243864;2;0;false;false;;;;;;
                                  -243866;1;0;false;false;0;0;0;;;
                                  -243867;2;0;false;false;;;;;;
                                  -243869;3;0;false;false;63;95;191;;;
                                  -243872;4;0;false;false;;;;;;
                                  -243876;1;0;false;false;63;95;191;;;
                                  -243877;1;0;false;false;;;;;;
                                  -243878;4;0;false;false;63;95;191;;;
                                  -243882;1;0;false;false;;;;;;
                                  -243883;3;0;false;false;63;95;191;;;
                                  -243886;1;0;false;false;;;;;;
                                  -243887;9;0;false;false;63;95;191;;;
                                  -243896;1;0;false;false;;;;;;
                                  -243897;3;0;false;false;63;95;191;;;
                                  -243900;1;0;false;false;;;;;;
                                  -243901;7;0;false;false;63;95;191;;;
                                  -243908;1;0;false;false;;;;;;
                                  -243909;2;0;false;false;63;95;191;;;
                                  -243911;1;0;false;false;;;;;;
                                  -243912;4;0;false;false;63;95;191;;;
                                  -243916;1;0;false;false;;;;;;
                                  -243917;5;0;false;false;63;95;191;;;
                                  -243922;3;0;false;false;;;;;;
                                  -243925;1;0;false;false;63;95;191;;;
                                  -243926;1;0;false;false;;;;;;
                                  -243927;3;0;false;false;127;127;159;;;
                                  -243930;3;0;false;false;;;;;;
                                  -243933;1;0;false;false;63;95;191;;;
                                  -243934;1;0;false;false;;;;;;
                                  -243935;8;0;false;false;63;95;191;;;
                                  -243943;1;0;false;false;;;;;;
                                  -243944;2;0;false;false;63;95;191;;;
                                  -243946;1;0;false;false;;;;;;
                                  -243947;4;0;false;false;63;95;191;;;
                                  -243951;1;0;false;false;;;;;;
                                  -243952;6;0;false;false;63;95;191;;;
                                  -243958;2;0;false;false;;;;;;
                                  -243960;4;0;false;false;63;95;191;;;
                                  -243964;1;0;false;false;;;;;;
                                  -243965;10;0;false;false;63;95;191;;;
                                  -243975;1;0;false;false;;;;;;
                                  -243976;3;0;false;false;63;95;191;;;
                                  -243979;1;0;false;false;;;;;;
                                  -243980;9;0;false;false;63;95;191;;;
                                  -243989;1;0;false;false;;;;;;
                                  -243990;2;0;false;false;63;95;191;;;
                                  -243992;1;0;false;false;;;;;;
                                  -243993;5;0;false;false;63;95;191;;;
                                  -243998;1;0;false;false;;;;;;
                                  -243999;2;0;false;false;63;95;191;;;
                                  -244001;3;0;false;false;;;;;;
                                  -244004;1;0;false;false;63;95;191;;;
                                  -244005;1;0;false;false;;;;;;
                                  -244006;5;0;false;false;63;95;191;;;
                                  -244011;1;0;false;false;;;;;;
                                  -244012;10;0;false;false;63;95;191;;;
                                  -244022;2;0;false;false;;;;;;
                                  -244024;2;0;false;false;63;95;191;;;
                                  -244026;1;0;false;false;;;;;;
                                  -244027;1;0;false;false;63;95;191;;;
                                  -244028;1;0;false;false;;;;;;
                                  -244029;4;0;false;false;63;95;191;;;
                                  -244033;1;0;false;false;;;;;;
                                  -244034;6;0;false;false;63;95;191;;;
                                  -244040;1;0;false;false;;;;;;
                                  -244041;4;0;false;false;63;95;191;;;
                                  -244045;1;0;false;false;;;;;;
                                  -244046;8;0;false;false;63;95;191;;;
                                  -244054;1;0;false;false;;;;;;
                                  -244055;1;0;false;false;63;95;191;;;
                                  -244056;1;0;false;false;;;;;;
                                  -244057;11;0;false;false;63;95;191;;;
                                  -244068;1;0;false;false;;;;;;
                                  -244069;5;0;false;false;63;95;191;;;
                                  -244074;1;0;false;false;;;;;;
                                  -244075;3;0;false;false;63;95;191;;;
                                  -244078;4;0;false;false;;;;;;
                                  -244082;1;0;false;false;63;95;191;;;
                                  -244083;1;0;false;false;;;;;;
                                  -244084;3;0;false;false;63;95;191;;;
                                  -244087;1;0;false;false;;;;;;
                                  -244088;5;0;false;false;63;95;191;;;
                                  -244093;1;0;false;false;;;;;;
                                  -244094;10;0;false;false;63;95;191;;;
                                  -244104;1;0;false;false;;;;;;
                                  -244105;7;0;false;false;63;95;191;;;
                                  -244112;1;0;false;false;;;;;;
                                  -244113;4;0;false;false;63;95;191;;;
                                  -244117;1;0;false;false;;;;;;
                                  -244118;4;0;false;false;63;95;191;;;
                                  -244122;3;0;false;false;;;;;;
                                  -244125;1;0;false;false;63;95;191;;;
                                  -244126;1;0;false;false;;;;;;
                                  -244127;4;0;false;false;127;127;159;;;
                                  -244131;3;0;false;false;;;;;;
                                  -244134;1;0;false;false;63;95;191;;;
                                  -244135;3;0;false;false;;;;;;
                                  -244138;1;0;false;false;63;95;191;;;
                                  -244139;1;0;false;false;;;;;;
                                  -244140;7;1;false;false;127;159;191;;;
                                  -244147;5;0;false;false;63;95;191;;;
                                  -244152;1;0;false;false;;;;;;
                                  -244153;11;0;false;false;63;95;191;;;
                                  -244164;1;0;false;false;;;;;;
                                  -244165;5;0;false;false;63;95;191;;;
                                  -244170;1;0;false;false;;;;;;
                                  -244171;7;0;false;false;63;95;191;;;
                                  -244178;1;0;false;false;;;;;;
                                  -244179;11;0;false;false;63;95;191;;;
                                  -244190;1;0;false;false;;;;;;
                                  -244191;3;0;false;false;63;95;191;;;
                                  -244194;1;0;false;false;;;;;;
                                  -244195;6;0;false;false;63;95;191;;;
                                  -244201;3;0;false;false;;;;;;
                                  -244204;1;0;false;false;63;95;191;;;
                                  -244205;2;0;false;false;;;;;;
                                  -244207;3;0;false;false;63;95;191;;;
                                  -244210;1;0;false;false;;;;;;
                                  -244211;5;0;false;false;63;95;191;;;
                                  -244216;1;0;false;false;;;;;;
                                  -244217;4;0;false;false;63;95;191;;;
                                  -244221;1;0;false;false;;;;;;
                                  -244222;2;0;false;false;63;95;191;;;
                                  -244224;1;0;false;false;;;;;;
                                  -244225;6;0;false;false;63;95;191;;;
                                  -244231;1;0;false;false;;;;;;
                                  -244232;2;0;false;false;63;95;191;;;
                                  -244234;1;0;false;false;;;;;;
                                  -244235;3;0;false;false;63;95;191;;;
                                  -244238;1;0;false;false;;;;;;
                                  -244239;9;0;false;false;63;95;191;;;
                                  -244248;1;0;false;false;;;;;;
                                  -244249;5;0;false;false;63;95;191;;;
                                  -244254;1;0;false;false;;;;;;
                                  -244255;4;0;false;false;63;95;191;;;
                                  -244259;1;0;false;false;;;;;;
                                  -244260;1;0;false;false;63;95;191;;;
                                  -244261;1;0;false;false;;;;;;
                                  -244262;1;0;false;false;63;95;191;;;
                                  -244263;1;0;false;false;;;;;;
                                  -244264;2;0;false;false;63;95;191;;;
                                  -244266;3;0;false;false;;;;;;
                                  -244269;1;0;false;false;63;95;191;;;
                                  -244270;1;0;false;false;;;;;;
                                  -244271;5;1;false;false;127;159;191;;;
                                  -244276;22;0;false;false;63;95;191;;;
                                  -244298;3;0;false;false;;;;;;
                                  -244301;1;0;false;false;63;95;191;;;
                                  -244302;1;0;false;false;;;;;;
                                  -244303;11;1;false;false;127;159;191;;;
                                  -244314;12;0;false;false;63;95;191;;;
                                  -244326;1;0;false;false;;;;;;
                                  -244327;4;0;false;false;127;127;159;;;
                                  -244331;3;0;false;false;;;;;;
                                  -244334;1;0;false;false;63;95;191;;;
                                  -244335;4;0;false;false;;;;;;
                                  -244339;4;0;false;false;127;127;159;;;
                                  -244343;21;0;false;false;63;95;191;;;
                                  -244364;1;0;false;false;;;;;;
                                  -244365;1;0;false;false;127;127;159;;;
                                  -244366;1;0;false;false;;;;;;
                                  -244367;2;0;false;false;63;95;191;;;
                                  -244369;1;0;false;false;;;;;;
                                  -244370;3;0;false;false;63;95;191;;;
                                  -244373;1;0;false;false;;;;;;
                                  -244374;8;0;false;false;63;95;191;;;
                                  -244382;1;0;false;false;;;;;;
                                  -244383;3;0;false;false;63;95;191;;;
                                  -244386;1;0;false;false;;;;;;
                                  -244387;4;0;false;false;63;95;191;;;
                                  -244391;1;0;false;false;;;;;;
                                  -244392;8;0;false;false;63;95;191;;;
                                  -244400;5;0;false;false;127;127;159;;;
                                  -244405;3;0;false;false;;;;;;
                                  -244408;1;0;false;false;63;95;191;;;
                                  -244409;4;0;false;false;;;;;;
                                  -244413;4;0;false;false;127;127;159;;;
                                  -244417;27;0;false;false;63;95;191;;;
                                  -244444;1;0;false;false;;;;;;
                                  -244445;1;0;false;false;127;127;159;;;
                                  -244446;1;0;false;false;;;;;;
                                  -244447;2;0;false;false;63;95;191;;;
                                  -244449;1;0;false;false;;;;;;
                                  -244450;3;0;false;false;63;95;191;;;
                                  -244453;1;0;false;false;;;;;;
                                  -244454;6;0;false;false;63;95;191;;;
                                  -244460;1;0;false;false;;;;;;
                                  -244461;4;0;false;false;63;95;191;;;
                                  -244465;1;0;false;false;;;;;;
                                  -244466;3;0;false;false;63;95;191;;;
                                  -244469;1;0;false;false;;;;;;
                                  -244470;6;0;false;false;63;95;191;;;
                                  -244476;1;0;false;false;;;;;;
                                  -244477;4;0;false;false;63;95;191;;;
                                  -244481;1;0;false;false;;;;;;
                                  -244482;7;0;false;false;63;95;191;;;
                                  -244489;1;0;false;false;;;;;;
                                  -244490;3;0;false;false;63;95;191;;;
                                  -244493;1;0;false;false;;;;;;
                                  -244494;8;0;false;false;63;95;191;;;
                                  -244502;5;0;false;false;127;127;159;;;
                                  -244507;3;0;false;false;;;;;;
                                  -244510;1;0;false;false;63;95;191;;;
                                  -244511;1;0;false;false;;;;;;
                                  -244512;5;0;false;false;127;127;159;;;
                                  -244517;3;0;false;false;;;;;;
                                  -244520;1;0;false;false;63;95;191;;;
                                  -244521;1;0;false;false;;;;;;
                                  -244522;11;1;false;false;127;159;191;;;
                                  -244533;24;0;false;false;63;95;191;;;
                                  -244557;1;0;false;false;;;;;;
                                  -244558;4;0;false;false;127;127;159;;;
                                  -244562;3;0;false;false;;;;;;
                                  -244565;1;0;false;false;63;95;191;;;
                                  -244566;3;0;false;false;;;;;;
                                  -244569;4;0;false;false;127;127;159;;;
                                  -244573;19;0;false;false;63;95;191;;;
                                  -244592;1;0;false;false;;;;;;
                                  -244593;4;0;false;false;63;95;191;;;
                                  -244597;1;0;false;false;;;;;;
                                  -244598;5;0;false;false;63;95;191;;;
                                  -244603;1;0;false;false;;;;;;
                                  -244604;2;0;false;false;63;95;191;;;
                                  -244606;1;0;false;false;;;;;;
                                  -244607;4;0;false;false;63;95;191;;;
                                  -244611;5;0;false;false;127;127;159;;;
                                  -244616;3;0;false;false;;;;;;
                                  -244619;1;0;false;false;63;95;191;;;
                                  -244620;3;0;false;false;;;;;;
                                  -244623;4;0;false;false;127;127;159;;;
                                  -244627;22;0;false;false;63;95;191;;;
                                  -244649;1;0;false;false;;;;;;
                                  -244650;4;0;false;false;63;95;191;;;
                                  -244654;1;0;false;false;;;;;;
                                  -244655;6;0;false;false;63;95;191;;;
                                  -244661;1;0;false;false;;;;;;
                                  -244662;3;0;false;false;63;95;191;;;
                                  -244665;1;0;false;false;;;;;;
                                  -244666;5;0;false;false;63;95;191;;;
                                  -244671;1;0;false;false;;;;;;
                                  -244672;2;0;false;false;63;95;191;;;
                                  -244674;1;0;false;false;;;;;;
                                  -244675;3;0;false;false;63;95;191;;;
                                  -244678;1;0;false;false;;;;;;
                                  -244679;3;0;false;false;63;95;191;;;
                                  -244682;1;0;false;false;;;;;;
                                  -244683;2;0;false;false;63;95;191;;;
                                  -244685;1;0;false;false;;;;;;
                                  -244686;3;0;false;false;63;95;191;;;
                                  -244689;1;0;false;false;;;;;;
                                  -244690;9;0;false;false;63;95;191;;;
                                  -244699;1;0;false;false;;;;;;
                                  -244700;5;0;false;false;63;95;191;;;
                                  -244705;1;0;false;false;;;;;;
                                  -244706;2;0;false;false;63;95;191;;;
                                  -244708;1;0;false;false;;;;;;
                                  -244709;6;0;false;false;63;95;191;;;
                                  -244715;1;0;false;false;;;;;;
                                  -244716;1;0;false;false;63;95;191;;;
                                  -244717;4;0;false;false;;;;;;
                                  -244721;1;0;false;false;63;95;191;;;
                                  -244722;1;0;false;false;;;;;;
                                  -244723;5;0;false;false;63;95;191;;;
                                  -244728;1;0;false;false;;;;;;
                                  -244729;4;0;false;false;63;95;191;;;
                                  -244733;1;0;false;false;;;;;;
                                  -244734;4;0;false;false;63;95;191;;;
                                  -244738;1;0;false;false;;;;;;
                                  -244739;9;0;false;false;63;95;191;;;
                                  -244748;1;0;false;false;;;;;;
                                  -244749;4;0;false;false;63;95;191;;;
                                  -244753;1;0;false;false;;;;;;
                                  -244754;4;0;false;false;63;95;191;;;
                                  -244758;1;0;false;false;;;;;;
                                  -244759;7;0;false;false;63;95;191;;;
                                  -244766;1;0;false;false;;;;;;
                                  -244767;7;0;false;false;63;95;191;;;
                                  -244774;1;0;false;false;;;;;;
                                  -244775;2;0;false;false;63;95;191;;;
                                  -244777;1;0;false;false;;;;;;
                                  -244778;5;0;false;false;63;95;191;;;
                                  -244783;1;0;false;false;;;;;;
                                  -244784;2;0;false;false;63;95;191;;;
                                  -244786;1;0;false;false;;;;;;
                                  -244787;2;0;false;false;63;95;191;;;
                                  -244789;1;0;false;false;;;;;;
                                  -244790;5;0;false;false;63;95;191;;;
                                  -244795;1;0;false;false;;;;;;
                                  -244796;3;0;false;false;63;95;191;;;
                                  -244799;1;0;false;false;;;;;;
                                  -244800;4;0;false;false;63;95;191;;;
                                  -244804;1;0;false;false;;;;;;
                                  -244805;10;0;false;false;63;95;191;;;
                                  -244815;3;0;false;false;;;;;;
                                  -244818;1;0;false;false;63;95;191;;;
                                  -244819;1;0;false;false;;;;;;
                                  -244820;5;0;false;false;127;127;159;;;
                                  -244825;4;0;false;false;;;;;;
                                  -244829;2;0;false;false;63;95;191;;;
                                  -244831;2;0;false;false;;;;;;
                                  -244833;6;1;false;false;127;0;85;;;
                                  -244839;1;0;false;false;;;;;;
                                  -244840;4;1;false;false;127;0;85;;;
                                  -244844;1;0;false;false;;;;;;
                                  -244845;18;0;false;false;0;0;0;;;
                                  -244863;1;0;false;false;;;;;;
                                  -244864;6;0;false;false;0;0;0;;;
                                  -244870;1;0;false;false;;;;;;
                                  -244871;1;0;false;false;0;0;0;;;
                                  -244872;3;0;false;false;;;;;;
                                  -244875;14;0;false;false;0;0;0;;;
                                  -244889;3;0;false;false;;;;;;
                                  -244892;2;1;false;false;127;0;85;;;
                                  -244894;1;0;false;false;;;;;;
                                  -244895;6;0;false;false;0;0;0;;;
                                  -244901;1;0;false;false;;;;;;
                                  -244902;2;0;false;false;0;0;0;;;
                                  -244904;1;0;false;false;;;;;;
                                  -244905;4;1;false;false;127;0;85;;;
                                  -244909;1;0;false;false;0;0;0;;;
                                  -244910;1;0;false;false;;;;;;
                                  -244911;9;0;false;false;0;0;0;;;
                                  -244920;1;0;false;false;;;;;;
                                  -244921;26;0;false;false;0;0;0;;;
                                  -244947;4;0;false;false;;;;;;
                                  -244951;21;0;false;false;0;0;0;;;
                                  -244972;1;0;false;false;;;;;;
                                  -244973;9;0;false;false;0;0;0;;;
                                  -244982;2;0;false;false;;;;;;
                                  -244984;1;0;false;false;0;0;0;;;
                                  -244985;2;0;false;false;;;;;;
                                  -244987;3;0;false;false;63;95;191;;;
                                  -244990;3;0;false;false;;;;;;
                                  -244993;1;0;false;false;63;95;191;;;
                                  -244994;1;0;false;false;;;;;;
                                  -244995;4;0;false;false;63;95;191;;;
                                  -244999;1;0;false;false;;;;;;
                                  -245000;3;0;false;false;63;95;191;;;
                                  -245003;1;0;false;false;;;;;;
                                  -245004;10;0;false;false;63;95;191;;;
                                  -245014;1;0;false;false;;;;;;
                                  -245015;9;0;false;false;63;95;191;;;
                                  -245024;1;0;false;false;;;;;;
                                  -245025;10;0;false;false;63;95;191;;;
                                  -245035;1;0;false;false;;;;;;
                                  -245036;5;0;false;false;63;95;191;;;
                                  -245041;1;0;false;false;;;;;;
                                  -245042;2;0;false;false;63;95;191;;;
                                  -245044;1;0;false;false;;;;;;
                                  -245045;3;0;false;false;63;95;191;;;
                                  -245048;1;0;false;false;;;;;;
                                  -245049;5;0;false;false;63;95;191;;;
                                  -245054;1;0;false;false;;;;;;
                                  -245055;9;0;false;false;63;95;191;;;
                                  -245064;3;0;false;false;;;;;;
                                  -245067;1;0;false;false;63;95;191;;;
                                  -245068;1;0;false;false;;;;;;
                                  -245069;2;0;false;false;63;95;191;;;
                                  -245071;1;0;false;false;;;;;;
                                  -245072;3;0;false;false;63;95;191;;;
                                  -245075;1;0;false;false;;;;;;
                                  -245076;9;0;false;false;63;95;191;;;
                                  -245085;1;0;false;false;;;;;;
                                  -245086;2;0;false;false;63;95;191;;;
                                  -245088;1;0;false;false;;;;;;
                                  -245089;2;0;false;false;63;95;191;;;
                                  -245091;1;0;false;false;;;;;;
                                  -245092;3;0;false;false;63;95;191;;;
                                  -245095;1;0;false;false;;;;;;
                                  -245096;7;0;false;false;63;95;191;;;
                                  -245103;1;0;false;false;;;;;;
                                  -245104;6;0;false;false;63;95;191;;;
                                  -245110;1;0;false;false;;;;;;
                                  -245111;5;0;false;false;63;95;191;;;
                                  -245116;1;0;false;false;;;;;;
                                  -245117;3;0;false;false;63;95;191;;;
                                  -245120;1;0;false;false;;;;;;
                                  -245121;3;0;false;false;63;95;191;;;
                                  -245124;1;0;false;false;;;;;;
                                  -245125;7;0;false;false;63;95;191;;;
                                  -245132;3;0;false;false;;;;;;
                                  -245135;1;0;false;false;63;95;191;;;
                                  -245136;1;0;false;false;;;;;;
                                  -245137;2;0;false;false;63;95;191;;;
                                  -245139;1;0;false;false;;;;;;
                                  -245140;3;0;false;false;63;95;191;;;
                                  -245143;1;0;false;false;;;;;;
                                  -245144;8;0;false;false;63;95;191;;;
                                  -245152;1;0;false;false;;;;;;
                                  -245153;2;0;false;false;63;95;191;;;
                                  -245155;1;0;false;false;;;;;;
                                  -245156;5;0;false;false;63;95;191;;;
                                  -245161;3;0;false;false;;;;;;
                                  -245164;1;0;false;false;63;95;191;;;
                                  -245165;3;0;false;false;;;;;;
                                  -245168;1;0;false;false;63;95;191;;;
                                  -245169;1;0;false;false;;;;;;
                                  -245170;7;1;false;false;127;159;191;;;
                                  -245177;5;0;false;false;63;95;191;;;
                                  -245182;1;0;false;false;;;;;;
                                  -245183;3;0;false;false;63;95;191;;;
                                  -245186;1;0;false;false;;;;;;
                                  -245187;3;0;false;false;63;95;191;;;
                                  -245190;1;0;false;false;;;;;;
                                  -245191;5;0;false;false;63;95;191;;;
                                  -245196;1;0;false;false;;;;;;
                                  -245197;3;0;false;false;63;95;191;;;
                                  -245200;1;0;false;false;;;;;;
                                  -245201;5;0;false;false;63;95;191;;;
                                  -245206;3;0;false;false;;;;;;
                                  -245209;1;0;false;false;63;95;191;;;
                                  -245210;3;0;false;false;;;;;;
                                  -245213;1;0;false;false;63;95;191;;;
                                  -245214;1;0;false;false;;;;;;
                                  -245215;11;1;false;false;127;159;191;;;
                                  -245226;24;0;false;false;63;95;191;;;
                                  -245250;1;0;false;false;;;;;;
                                  -245251;4;0;false;false;127;127;159;;;
                                  -245255;3;0;false;false;;;;;;
                                  -245258;1;0;false;false;63;95;191;;;
                                  -245259;4;0;false;false;;;;;;
                                  -245263;4;0;false;false;127;127;159;;;
                                  -245267;22;0;false;false;63;95;191;;;
                                  -245289;1;0;false;false;;;;;;
                                  -245290;1;0;false;false;127;127;159;;;
                                  -245291;1;0;false;false;;;;;;
                                  -245292;2;0;false;false;63;95;191;;;
                                  -245294;1;0;false;false;;;;;;
                                  -245295;3;0;false;false;63;95;191;;;
                                  -245298;1;0;false;false;;;;;;
                                  -245299;8;0;false;false;63;95;191;;;
                                  -245307;1;0;false;false;;;;;;
                                  -245308;3;0;false;false;63;95;191;;;
                                  -245311;1;0;false;false;;;;;;
                                  -245312;4;0;false;false;63;95;191;;;
                                  -245316;1;0;false;false;;;;;;
                                  -245317;8;0;false;false;63;95;191;;;
                                  -245325;5;0;false;false;127;127;159;;;
                                  -245330;4;0;false;false;;;;;;
                                  -245334;1;0;false;false;63;95;191;;;
                                  -245335;1;0;false;false;;;;;;
                                  -245336;5;0;false;false;127;127;159;;;
                                  -245341;3;0;false;false;;;;;;
                                  -245344;1;0;false;false;63;95;191;;;
                                  -245345;1;0;false;false;;;;;;
                                  -245346;11;1;false;false;127;159;191;;;
                                  -245357;12;0;false;false;63;95;191;;;
                                  -245369;1;0;false;false;;;;;;
                                  -245370;4;0;false;false;127;127;159;;;
                                  -245374;3;0;false;false;;;;;;
                                  -245377;1;0;false;false;63;95;191;;;
                                  -245378;4;0;false;false;;;;;;
                                  -245382;4;0;false;false;127;127;159;;;
                                  -245386;21;0;false;false;63;95;191;;;
                                  -245407;1;0;false;false;;;;;;
                                  -245408;1;0;false;false;127;127;159;;;
                                  -245409;1;0;false;false;;;;;;
                                  -245410;2;0;false;false;63;95;191;;;
                                  -245412;1;0;false;false;;;;;;
                                  -245413;3;0;false;false;63;95;191;;;
                                  -245416;1;0;false;false;;;;;;
                                  -245417;8;0;false;false;63;95;191;;;
                                  -245425;1;0;false;false;;;;;;
                                  -245426;3;0;false;false;63;95;191;;;
                                  -245429;1;0;false;false;;;;;;
                                  -245430;4;0;false;false;63;95;191;;;
                                  -245434;1;0;false;false;;;;;;
                                  -245435;8;0;false;false;63;95;191;;;
                                  -245443;5;0;false;false;127;127;159;;;
                                  -245448;3;0;false;false;;;;;;
                                  -245451;1;0;false;false;63;95;191;;;
                                  -245452;4;0;false;false;;;;;;
                                  -245456;4;0;false;false;127;127;159;;;
                                  -245460;27;0;false;false;63;95;191;;;
                                  -245487;1;0;false;false;;;;;;
                                  -245488;1;0;false;false;127;127;159;;;
                                  -245489;1;0;false;false;;;;;;
                                  -245490;2;0;false;false;63;95;191;;;
                                  -245492;1;0;false;false;;;;;;
                                  -245493;3;0;false;false;63;95;191;;;
                                  -245496;1;0;false;false;;;;;;
                                  -245497;6;0;false;false;63;95;191;;;
                                  -245503;1;0;false;false;;;;;;
                                  -245504;4;0;false;false;63;95;191;;;
                                  -245508;1;0;false;false;;;;;;
                                  -245509;3;0;false;false;63;95;191;;;
                                  -245512;1;0;false;false;;;;;;
                                  -245513;6;0;false;false;63;95;191;;;
                                  -245519;1;0;false;false;;;;;;
                                  -245520;4;0;false;false;63;95;191;;;
                                  -245524;1;0;false;false;;;;;;
                                  -245525;7;0;false;false;63;95;191;;;
                                  -245532;1;0;false;false;;;;;;
                                  -245533;3;0;false;false;63;95;191;;;
                                  -245536;1;0;false;false;;;;;;
                                  -245537;8;0;false;false;63;95;191;;;
                                  -245545;5;0;false;false;127;127;159;;;
                                  -245550;3;0;false;false;;;;;;
                                  -245553;1;0;false;false;63;95;191;;;
                                  -245554;1;0;false;false;;;;;;
                                  -245555;5;0;false;false;127;127;159;;;
                                  -245560;3;0;false;false;;;;;;
                                  -245563;1;0;false;false;63;95;191;;;
                                  -245564;1;0;false;false;;;;;;
                                  -245565;7;1;false;false;127;159;191;;;
                                  -245572;3;0;false;false;63;95;191;;;
                                  -245575;3;0;false;false;;;;;;
                                  -245578;2;0;false;false;63;95;191;;;
                                  -245580;2;0;false;false;;;;;;
                                  -245582;6;1;false;false;127;0;85;;;
                                  -245588;1;0;false;false;;;;;;
                                  -245589;4;1;false;false;127;0;85;;;
                                  -245593;1;0;false;false;;;;;;
                                  -245594;22;0;false;false;0;0;0;;;
                                  -245616;1;0;false;false;;;;;;
                                  -245617;6;0;false;false;0;0;0;;;
                                  -245623;1;0;false;false;;;;;;
                                  -245624;6;0;false;false;0;0;0;;;
                                  -245630;1;0;false;false;;;;;;
                                  -245631;1;0;false;false;0;0;0;;;
                                  -245632;3;0;false;false;;;;;;
                                  -245635;11;0;false;false;0;0;0;;;
                                  -245646;1;0;false;false;;;;;;
                                  -245647;3;0;false;false;0;0;0;;;
                                  -245650;3;0;false;false;;;;;;
                                  -245653;2;1;false;false;127;0;85;;;
                                  -245655;1;0;false;false;;;;;;
                                  -245656;6;0;false;false;0;0;0;;;
                                  -245662;1;0;false;false;;;;;;
                                  -245663;2;0;false;false;0;0;0;;;
                                  -245665;1;0;false;false;;;;;;
                                  -245666;4;1;false;false;127;0;85;;;
                                  -245670;1;0;false;false;0;0;0;;;
                                  -245671;1;0;false;false;;;;;;
                                  -245672;1;0;false;false;0;0;0;;;
                                  -245673;4;0;false;false;;;;;;
                                  -245677;2;1;false;false;127;0;85;;;
                                  -245679;1;0;false;false;;;;;;
                                  -245680;20;0;false;false;0;0;0;;;
                                  -245700;1;0;false;false;;;;;;
                                  -245701;38;0;false;false;0;0;0;;;
                                  -245739;3;0;false;false;;;;;;
                                  -245742;1;0;false;false;0;0;0;;;
                                  -245743;3;0;false;false;;;;;;
                                  -245746;19;0;false;false;0;0;0;;;
                                  -245765;1;0;false;false;;;;;;
                                  -245766;1;0;false;false;0;0;0;;;
                                  -245767;1;0;false;false;;;;;;
                                  -245768;6;0;false;false;0;0;0;;;
                                  -245774;3;0;false;false;;;;;;
                                  -245777;9;0;false;false;0;0;0;;;
                                  -245786;2;0;false;false;;;;;;
                                  -245788;1;0;false;false;0;0;0;;;
                                  -245789;3;0;false;false;;;;;;
                                  -245792;3;0;false;false;63;95;191;;;
                                  -245795;3;0;false;false;;;;;;
                                  -245798;1;0;false;false;63;95;191;;;
                                  -245799;1;0;false;false;;;;;;
                                  -245800;4;0;false;false;63;95;191;;;
                                  -245804;1;0;false;false;;;;;;
                                  -245805;3;0;false;false;63;95;191;;;
                                  -245808;1;0;false;false;;;;;;
                                  -245809;10;0;false;false;63;95;191;;;
                                  -245819;1;0;false;false;;;;;;
                                  -245820;9;0;false;false;63;95;191;;;
                                  -245829;1;0;false;false;;;;;;
                                  -245830;10;0;false;false;63;95;191;;;
                                  -245840;1;0;false;false;;;;;;
                                  -245841;5;0;false;false;63;95;191;;;
                                  -245846;1;0;false;false;;;;;;
                                  -245847;2;0;false;false;63;95;191;;;
                                  -245849;1;0;false;false;;;;;;
                                  -245850;3;0;false;false;63;95;191;;;
                                  -245853;1;0;false;false;;;;;;
                                  -245854;5;0;false;false;63;95;191;;;
                                  -245859;1;0;false;false;;;;;;
                                  -245860;9;0;false;false;63;95;191;;;
                                  -245869;3;0;false;false;;;;;;
                                  -245872;1;0;false;false;63;95;191;;;
                                  -245873;1;0;false;false;;;;;;
                                  -245874;2;0;false;false;63;95;191;;;
                                  -245876;1;0;false;false;;;;;;
                                  -245877;3;0;false;false;63;95;191;;;
                                  -245880;1;0;false;false;;;;;;
                                  -245881;9;0;false;false;63;95;191;;;
                                  -245890;1;0;false;false;;;;;;
                                  -245891;2;0;false;false;63;95;191;;;
                                  -245893;1;0;false;false;;;;;;
                                  -245894;2;0;false;false;63;95;191;;;
                                  -245896;1;0;false;false;;;;;;
                                  -245897;3;0;false;false;63;95;191;;;
                                  -245900;1;0;false;false;;;;;;
                                  -245901;7;0;false;false;63;95;191;;;
                                  -245908;1;0;false;false;;;;;;
                                  -245909;6;0;false;false;63;95;191;;;
                                  -245915;1;0;false;false;;;;;;
                                  -245916;5;0;false;false;63;95;191;;;
                                  -245921;1;0;false;false;;;;;;
                                  -245922;3;0;false;false;63;95;191;;;
                                  -245925;1;0;false;false;;;;;;
                                  -245926;3;0;false;false;63;95;191;;;
                                  -245929;1;0;false;false;;;;;;
                                  -245930;7;0;false;false;63;95;191;;;
                                  -245937;3;0;false;false;;;;;;
                                  -245940;1;0;false;false;63;95;191;;;
                                  -245941;1;0;false;false;;;;;;
                                  -245942;2;0;false;false;63;95;191;;;
                                  -245944;1;0;false;false;;;;;;
                                  -245945;3;0;false;false;63;95;191;;;
                                  -245948;1;0;false;false;;;;;;
                                  -245949;8;0;false;false;63;95;191;;;
                                  -245957;1;0;false;false;;;;;;
                                  -245958;2;0;false;false;63;95;191;;;
                                  -245960;1;0;false;false;;;;;;
                                  -245961;5;0;false;false;63;95;191;;;
                                  -245966;3;0;false;false;;;;;;
                                  -245969;1;0;false;false;63;95;191;;;
                                  -245970;3;0;false;false;;;;;;
                                  -245973;1;0;false;false;63;95;191;;;
                                  -245974;1;0;false;false;;;;;;
                                  -245975;7;1;false;false;127;159;191;;;
                                  -245982;5;0;false;false;63;95;191;;;
                                  -245987;1;0;false;false;;;;;;
                                  -245988;3;0;false;false;63;95;191;;;
                                  -245991;1;0;false;false;;;;;;
                                  -245992;3;0;false;false;63;95;191;;;
                                  -245995;1;0;false;false;;;;;;
                                  -245996;5;0;false;false;63;95;191;;;
                                  -246001;1;0;false;false;;;;;;
                                  -246002;3;0;false;false;63;95;191;;;
                                  -246005;1;0;false;false;;;;;;
                                  -246006;5;0;false;false;63;95;191;;;
                                  -246011;3;0;false;false;;;;;;
                                  -246014;1;0;false;false;63;95;191;;;
                                  -246015;3;0;false;false;;;;;;
                                  -246018;1;0;false;false;63;95;191;;;
                                  -246019;1;0;false;false;;;;;;
                                  -246020;11;1;false;false;127;159;191;;;
                                  -246031;24;0;false;false;63;95;191;;;
                                  -246055;1;0;false;false;;;;;;
                                  -246056;4;0;false;false;127;127;159;;;
                                  -246060;3;0;false;false;;;;;;
                                  -246063;1;0;false;false;63;95;191;;;
                                  -246064;4;0;false;false;;;;;;
                                  -246068;4;0;false;false;127;127;159;;;
                                  -246072;22;0;false;false;63;95;191;;;
                                  -246094;1;0;false;false;;;;;;
                                  -246095;1;0;false;false;127;127;159;;;
                                  -246096;1;0;false;false;;;;;;
                                  -246097;2;0;false;false;63;95;191;;;
                                  -246099;1;0;false;false;;;;;;
                                  -246100;3;0;false;false;63;95;191;;;
                                  -246103;1;0;false;false;;;;;;
                                  -246104;8;0;false;false;63;95;191;;;
                                  -246112;1;0;false;false;;;;;;
                                  -246113;3;0;false;false;63;95;191;;;
                                  -246116;1;0;false;false;;;;;;
                                  -246117;4;0;false;false;63;95;191;;;
                                  -246121;1;0;false;false;;;;;;
                                  -246122;8;0;false;false;63;95;191;;;
                                  -246130;5;0;false;false;127;127;159;;;
                                  -246135;4;0;false;false;;;;;;
                                  -246139;1;0;false;false;63;95;191;;;
                                  -246140;1;0;false;false;;;;;;
                                  -246141;5;0;false;false;127;127;159;;;
                                  -246146;3;0;false;false;;;;;;
                                  -246149;1;0;false;false;63;95;191;;;
                                  -246150;1;0;false;false;;;;;;
                                  -246151;11;1;false;false;127;159;191;;;
                                  -246162;12;0;false;false;63;95;191;;;
                                  -246174;1;0;false;false;;;;;;
                                  -246175;4;0;false;false;127;127;159;;;
                                  -246179;3;0;false;false;;;;;;
                                  -246182;1;0;false;false;63;95;191;;;
                                  -246183;4;0;false;false;;;;;;
                                  -246187;4;0;false;false;127;127;159;;;
                                  -246191;21;0;false;false;63;95;191;;;
                                  -246212;1;0;false;false;;;;;;
                                  -246213;1;0;false;false;127;127;159;;;
                                  -246214;1;0;false;false;;;;;;
                                  -246215;2;0;false;false;63;95;191;;;
                                  -246217;1;0;false;false;;;;;;
                                  -246218;3;0;false;false;63;95;191;;;
                                  -246221;1;0;false;false;;;;;;
                                  -246222;8;0;false;false;63;95;191;;;
                                  -246230;1;0;false;false;;;;;;
                                  -246231;3;0;false;false;63;95;191;;;
                                  -246234;1;0;false;false;;;;;;
                                  -246235;4;0;false;false;63;95;191;;;
                                  -246239;1;0;false;false;;;;;;
                                  -246240;8;0;false;false;63;95;191;;;
                                  -246248;5;0;false;false;127;127;159;;;
                                  -246253;3;0;false;false;;;;;;
                                  -246256;1;0;false;false;63;95;191;;;
                                  -246257;4;0;false;false;;;;;;
                                  -246261;4;0;false;false;127;127;159;;;
                                  -246265;27;0;false;false;63;95;191;;;
                                  -246292;1;0;false;false;;;;;;
                                  -246293;1;0;false;false;127;127;159;;;
                                  -246294;1;0;false;false;;;;;;
                                  -246295;2;0;false;false;63;95;191;;;
                                  -246297;1;0;false;false;;;;;;
                                  -246298;3;0;false;false;63;95;191;;;
                                  -246301;1;0;false;false;;;;;;
                                  -246302;6;0;false;false;63;95;191;;;
                                  -246308;1;0;false;false;;;;;;
                                  -246309;4;0;false;false;63;95;191;;;
                                  -246313;1;0;false;false;;;;;;
                                  -246314;3;0;false;false;63;95;191;;;
                                  -246317;1;0;false;false;;;;;;
                                  -246318;6;0;false;false;63;95;191;;;
                                  -246324;1;0;false;false;;;;;;
                                  -246325;4;0;false;false;63;95;191;;;
                                  -246329;1;0;false;false;;;;;;
                                  -246330;7;0;false;false;63;95;191;;;
                                  -246337;1;0;false;false;;;;;;
                                  -246338;3;0;false;false;63;95;191;;;
                                  -246341;1;0;false;false;;;;;;
                                  -246342;8;0;false;false;63;95;191;;;
                                  -246350;5;0;false;false;127;127;159;;;
                                  -246355;3;0;false;false;;;;;;
                                  -246358;1;0;false;false;63;95;191;;;
                                  -246359;1;0;false;false;;;;;;
                                  -246360;5;0;false;false;127;127;159;;;
                                  -246365;3;0;false;false;;;;;;
                                  -246368;1;0;false;false;63;95;191;;;
                                  -246369;1;0;false;false;;;;;;
                                  -246370;7;1;false;false;127;159;191;;;
                                  -246377;3;0;false;false;63;95;191;;;
                                  -246380;3;0;false;false;;;;;;
                                  -246383;2;0;false;false;63;95;191;;;
                                  -246385;2;0;false;false;;;;;;
                                  -246387;6;1;false;false;127;0;85;;;
                                  -246393;1;0;false;false;;;;;;
                                  -246394;4;1;false;false;127;0;85;;;
                                  -246398;1;0;false;false;;;;;;
                                  -246399;22;0;false;false;0;0;0;;;
                                  -246421;1;0;false;false;;;;;;
                                  -246422;6;0;false;false;0;0;0;;;
                                  -246428;1;0;false;false;;;;;;
                                  -246429;6;0;false;false;0;0;0;;;
                                  -246435;1;0;false;false;;;;;;
                                  -246436;1;0;false;false;0;0;0;;;
                                  -246437;3;0;false;false;;;;;;
                                  -246440;11;0;false;false;0;0;0;;;
                                  -246451;1;0;false;false;;;;;;
                                  -246452;3;0;false;false;0;0;0;;;
                                  -246455;3;0;false;false;;;;;;
                                  -246458;2;1;false;false;127;0;85;;;
                                  -246460;1;0;false;false;;;;;;
                                  -246461;6;0;false;false;0;0;0;;;
                                  -246467;1;0;false;false;;;;;;
                                  -246468;2;0;false;false;0;0;0;;;
                                  -246470;1;0;false;false;;;;;;
                                  -246471;4;1;false;false;127;0;85;;;
                                  -246475;1;0;false;false;0;0;0;;;
                                  -246476;1;0;false;false;;;;;;
                                  -246477;1;0;false;false;0;0;0;;;
                                  -246478;4;0;false;false;;;;;;
                                  -246482;2;1;false;false;127;0;85;;;
                                  -246484;1;0;false;false;;;;;;
                                  -246485;20;0;false;false;0;0;0;;;
                                  -246505;1;0;false;false;;;;;;
                                  -246506;38;0;false;false;0;0;0;;;
                                  -246544;3;0;false;false;;;;;;
                                  -246547;1;0;false;false;0;0;0;;;
                                  -246548;3;0;false;false;;;;;;
                                  -246551;19;0;false;false;0;0;0;;;
                                  -246570;1;0;false;false;;;;;;
                                  -246571;1;0;false;false;0;0;0;;;
                                  -246572;1;0;false;false;;;;;;
                                  -246573;6;0;false;false;0;0;0;;;
                                  -246579;3;0;false;false;;;;;;
                                  -246582;9;0;false;false;0;0;0;;;
                                  -246591;2;0;false;false;;;;;;
                                  -246593;1;0;false;false;0;0;0;;;
                                  -246594;3;0;false;false;;;;;;
                                  -246597;3;0;false;false;63;95;191;;;
                                  -246600;4;0;false;false;;;;;;
                                  -246604;1;0;false;false;63;95;191;;;
                                  -246605;1;0;false;false;;;;;;
                                  -246606;4;0;false;false;63;95;191;;;
                                  -246610;1;0;false;false;;;;;;
                                  -246611;3;0;false;false;63;95;191;;;
                                  -246614;1;0;false;false;;;;;;
                                  -246615;9;0;false;false;63;95;191;;;
                                  -246624;1;0;false;false;;;;;;
                                  -246625;3;0;false;false;63;95;191;;;
                                  -246628;1;0;false;false;;;;;;
                                  -246629;7;0;false;false;63;95;191;;;
                                  -246636;1;0;false;false;;;;;;
                                  -246637;2;0;false;false;63;95;191;;;
                                  -246639;1;0;false;false;;;;;;
                                  -246640;4;0;false;false;63;95;191;;;
                                  -246644;1;0;false;false;;;;;;
                                  -246645;5;0;false;false;63;95;191;;;
                                  -246650;3;0;false;false;;;;;;
                                  -246653;1;0;false;false;63;95;191;;;
                                  -246654;1;0;false;false;;;;;;
                                  -246655;3;0;false;false;127;127;159;;;
                                  -246658;3;0;false;false;;;;;;
                                  -246661;1;0;false;false;63;95;191;;;
                                  -246662;1;0;false;false;;;;;;
                                  -246663;8;0;false;false;63;95;191;;;
                                  -246671;1;0;false;false;;;;;;
                                  -246672;2;0;false;false;63;95;191;;;
                                  -246674;1;0;false;false;;;;;;
                                  -246675;4;0;false;false;63;95;191;;;
                                  -246679;1;0;false;false;;;;;;
                                  -246680;6;0;false;false;63;95;191;;;
                                  -246686;2;0;false;false;;;;;;
                                  -246688;4;0;false;false;63;95;191;;;
                                  -246692;1;0;false;false;;;;;;
                                  -246693;10;0;false;false;63;95;191;;;
                                  -246703;1;0;false;false;;;;;;
                                  -246704;3;0;false;false;63;95;191;;;
                                  -246707;1;0;false;false;;;;;;
                                  -246708;9;0;false;false;63;95;191;;;
                                  -246717;1;0;false;false;;;;;;
                                  -246718;2;0;false;false;63;95;191;;;
                                  -246720;1;0;false;false;;;;;;
                                  -246721;5;0;false;false;63;95;191;;;
                                  -246726;1;0;false;false;;;;;;
                                  -246727;2;0;false;false;63;95;191;;;
                                  -246729;3;0;false;false;;;;;;
                                  -246732;1;0;false;false;63;95;191;;;
                                  -246733;1;0;false;false;;;;;;
                                  -246734;5;0;false;false;63;95;191;;;
                                  -246739;1;0;false;false;;;;;;
                                  -246740;10;0;false;false;63;95;191;;;
                                  -246750;2;0;false;false;;;;;;
                                  -246752;2;0;false;false;63;95;191;;;
                                  -246754;1;0;false;false;;;;;;
                                  -246755;1;0;false;false;63;95;191;;;
                                  -246756;1;0;false;false;;;;;;
                                  -246757;4;0;false;false;63;95;191;;;
                                  -246761;1;0;false;false;;;;;;
                                  -246762;6;0;false;false;63;95;191;;;
                                  -246768;1;0;false;false;;;;;;
                                  -246769;4;0;false;false;63;95;191;;;
                                  -246773;1;0;false;false;;;;;;
                                  -246774;8;0;false;false;63;95;191;;;
                                  -246782;1;0;false;false;;;;;;
                                  -246783;1;0;false;false;63;95;191;;;
                                  -246784;1;0;false;false;;;;;;
                                  -246785;11;0;false;false;63;95;191;;;
                                  -246796;1;0;false;false;;;;;;
                                  -246797;5;0;false;false;63;95;191;;;
                                  -246802;1;0;false;false;;;;;;
                                  -246803;3;0;false;false;63;95;191;;;
                                  -246806;4;0;false;false;;;;;;
                                  -246810;1;0;false;false;63;95;191;;;
                                  -246811;1;0;false;false;;;;;;
                                  -246812;3;0;false;false;63;95;191;;;
                                  -246815;1;0;false;false;;;;;;
                                  -246816;5;0;false;false;63;95;191;;;
                                  -246821;1;0;false;false;;;;;;
                                  -246822;10;0;false;false;63;95;191;;;
                                  -246832;1;0;false;false;;;;;;
                                  -246833;7;0;false;false;63;95;191;;;
                                  -246840;1;0;false;false;;;;;;
                                  -246841;4;0;false;false;63;95;191;;;
                                  -246845;1;0;false;false;;;;;;
                                  -246846;4;0;false;false;63;95;191;;;
                                  -246850;3;0;false;false;;;;;;
                                  -246853;1;0;false;false;63;95;191;;;
                                  -246854;1;0;false;false;;;;;;
                                  -246855;4;0;false;false;127;127;159;;;
                                  -246859;3;0;false;false;;;;;;
                                  -246862;1;0;false;false;63;95;191;;;
                                  -246863;3;0;false;false;;;;;;
                                  -246866;1;0;false;false;63;95;191;;;
                                  -246867;1;0;false;false;;;;;;
                                  -246868;7;1;false;false;127;159;191;;;
                                  -246875;5;0;false;false;63;95;191;;;
                                  -246880;1;0;false;false;;;;;;
                                  -246881;9;0;false;false;63;95;191;;;
                                  -246890;1;0;false;false;;;;;;
                                  -246891;5;0;false;false;63;95;191;;;
                                  -246896;1;0;false;false;;;;;;
                                  -246897;7;0;false;false;63;95;191;;;
                                  -246904;1;0;false;false;;;;;;
                                  -246905;3;0;false;false;63;95;191;;;
                                  -246908;1;0;false;false;;;;;;
                                  -246909;5;0;false;false;63;95;191;;;
                                  -246914;1;0;false;false;;;;;;
                                  -246915;4;0;false;false;63;95;191;;;
                                  -246919;1;0;false;false;;;;;;
                                  -246920;2;0;false;false;63;95;191;;;
                                  -246922;1;0;false;false;;;;;;
                                  -246923;6;0;false;false;63;95;191;;;
                                  -246929;1;0;false;false;;;;;;
                                  -246930;2;0;false;false;63;95;191;;;
                                  -246932;1;0;false;false;;;;;;
                                  -246933;3;0;false;false;63;95;191;;;
                                  -246936;4;0;false;false;;;;;;
                                  -246940;1;0;false;false;63;95;191;;;
                                  -246941;2;0;false;false;;;;;;
                                  -246943;9;0;false;false;63;95;191;;;
                                  -246952;1;0;false;false;;;;;;
                                  -246953;5;0;false;false;63;95;191;;;
                                  -246958;1;0;false;false;;;;;;
                                  -246959;4;0;false;false;63;95;191;;;
                                  -246963;1;0;false;false;;;;;;
                                  -246964;5;0;false;false;63;95;191;;;
                                  -246969;1;0;false;false;;;;;;
                                  -246970;1;0;false;false;63;95;191;;;
                                  -246971;1;0;false;false;;;;;;
                                  -246972;4;0;false;false;63;95;191;;;
                                  -246976;3;0;false;false;;;;;;
                                  -246979;1;0;false;false;63;95;191;;;
                                  -246980;1;0;false;false;;;;;;
                                  -246981;7;1;false;false;127;159;191;;;
                                  -246988;3;0;false;false;63;95;191;;;
                                  -246991;1;0;false;false;;;;;;
                                  -246992;9;0;false;false;63;95;191;;;
                                  -247001;1;0;false;false;;;;;;
                                  -247002;3;0;false;false;63;95;191;;;
                                  -247005;1;0;false;false;;;;;;
                                  -247006;6;0;false;false;63;95;191;;;
                                  -247012;3;0;false;false;;;;;;
                                  -247015;1;0;false;false;63;95;191;;;
                                  -247016;1;0;false;false;;;;;;
                                  -247017;5;1;false;false;127;159;191;;;
                                  -247022;27;0;false;false;63;95;191;;;
                                  -247049;3;0;false;false;;;;;;
                                  -247052;1;0;false;false;63;95;191;;;
                                  -247053;1;0;false;false;;;;;;
                                  -247054;11;1;false;false;127;159;191;;;
                                  -247065;12;0;false;false;63;95;191;;;
                                  -247077;1;0;false;false;;;;;;
                                  -247078;4;0;false;false;127;127;159;;;
                                  -247082;3;0;false;false;;;;;;
                                  -247085;1;0;false;false;63;95;191;;;
                                  -247086;4;0;false;false;;;;;;
                                  -247090;4;0;false;false;127;127;159;;;
                                  -247094;21;0;false;false;63;95;191;;;
                                  -247115;1;0;false;false;;;;;;
                                  -247116;1;0;false;false;127;127;159;;;
                                  -247117;1;0;false;false;;;;;;
                                  -247118;2;0;false;false;63;95;191;;;
                                  -247120;1;0;false;false;;;;;;
                                  -247121;3;0;false;false;63;95;191;;;
                                  -247124;1;0;false;false;;;;;;
                                  -247125;8;0;false;false;63;95;191;;;
                                  -247133;1;0;false;false;;;;;;
                                  -247134;3;0;false;false;63;95;191;;;
                                  -247137;1;0;false;false;;;;;;
                                  -247138;4;0;false;false;63;95;191;;;
                                  -247142;1;0;false;false;;;;;;
                                  -247143;8;0;false;false;63;95;191;;;
                                  -247151;5;0;false;false;127;127;159;;;
                                  -247156;3;0;false;false;;;;;;
                                  -247159;1;0;false;false;63;95;191;;;
                                  -247160;4;0;false;false;;;;;;
                                  -247164;4;0;false;false;127;127;159;;;
                                  -247168;27;0;false;false;63;95;191;;;
                                  -247195;1;0;false;false;;;;;;
                                  -247196;1;0;false;false;127;127;159;;;
                                  -247197;1;0;false;false;;;;;;
                                  -247198;2;0;false;false;63;95;191;;;
                                  -247200;1;0;false;false;;;;;;
                                  -247201;3;0;false;false;63;95;191;;;
                                  -247204;1;0;false;false;;;;;;
                                  -247205;6;0;false;false;63;95;191;;;
                                  -247211;1;0;false;false;;;;;;
                                  -247212;4;0;false;false;63;95;191;;;
                                  -247216;1;0;false;false;;;;;;
                                  -247217;3;0;false;false;63;95;191;;;
                                  -247220;1;0;false;false;;;;;;
                                  -247221;6;0;false;false;63;95;191;;;
                                  -247227;1;0;false;false;;;;;;
                                  -247228;4;0;false;false;63;95;191;;;
                                  -247232;1;0;false;false;;;;;;
                                  -247233;7;0;false;false;63;95;191;;;
                                  -247240;1;0;false;false;;;;;;
                                  -247241;3;0;false;false;63;95;191;;;
                                  -247244;1;0;false;false;;;;;;
                                  -247245;8;0;false;false;63;95;191;;;
                                  -247253;5;0;false;false;127;127;159;;;
                                  -247258;3;0;false;false;;;;;;
                                  -247261;1;0;false;false;63;95;191;;;
                                  -247262;1;0;false;false;;;;;;
                                  -247263;5;0;false;false;127;127;159;;;
                                  -247268;3;0;false;false;;;;;;
                                  -247271;1;0;false;false;63;95;191;;;
                                  -247272;1;0;false;false;;;;;;
                                  -247273;11;1;false;false;127;159;191;;;
                                  -247284;24;0;false;false;63;95;191;;;
                                  -247308;1;0;false;false;;;;;;
                                  -247309;4;0;false;false;127;127;159;;;
                                  -247313;3;0;false;false;;;;;;
                                  -247316;1;0;false;false;63;95;191;;;
                                  -247317;3;0;false;false;;;;;;
                                  -247320;4;0;false;false;127;127;159;;;
                                  -247324;22;0;false;false;63;95;191;;;
                                  -247346;1;0;false;false;;;;;;
                                  -247347;4;0;false;false;63;95;191;;;
                                  -247351;1;0;false;false;;;;;;
                                  -247352;6;0;false;false;63;95;191;;;
                                  -247358;1;0;false;false;;;;;;
                                  -247359;3;0;false;false;63;95;191;;;
                                  -247362;1;0;false;false;;;;;;
                                  -247363;5;0;false;false;63;95;191;;;
                                  -247368;1;0;false;false;;;;;;
                                  -247369;2;0;false;false;63;95;191;;;
                                  -247371;1;0;false;false;;;;;;
                                  -247372;3;0;false;false;63;95;191;;;
                                  -247375;1;0;false;false;;;;;;
                                  -247376;3;0;false;false;63;95;191;;;
                                  -247379;1;0;false;false;;;;;;
                                  -247380;2;0;false;false;63;95;191;;;
                                  -247382;1;0;false;false;;;;;;
                                  -247383;3;0;false;false;63;95;191;;;
                                  -247386;1;0;false;false;;;;;;
                                  -247387;9;0;false;false;63;95;191;;;
                                  -247396;1;0;false;false;;;;;;
                                  -247397;5;0;false;false;63;95;191;;;
                                  -247402;1;0;false;false;;;;;;
                                  -247403;2;0;false;false;63;95;191;;;
                                  -247405;1;0;false;false;;;;;;
                                  -247406;6;0;false;false;63;95;191;;;
                                  -247412;1;0;false;false;;;;;;
                                  -247413;1;0;false;false;63;95;191;;;
                                  -247414;4;0;false;false;;;;;;
                                  -247418;1;0;false;false;63;95;191;;;
                                  -247419;1;0;false;false;;;;;;
                                  -247420;5;0;false;false;63;95;191;;;
                                  -247425;1;0;false;false;;;;;;
                                  -247426;4;0;false;false;63;95;191;;;
                                  -247430;1;0;false;false;;;;;;
                                  -247431;4;0;false;false;63;95;191;;;
                                  -247435;1;0;false;false;;;;;;
                                  -247436;9;0;false;false;63;95;191;;;
                                  -247445;1;0;false;false;;;;;;
                                  -247446;4;0;false;false;63;95;191;;;
                                  -247450;1;0;false;false;;;;;;
                                  -247451;4;0;false;false;63;95;191;;;
                                  -247455;1;0;false;false;;;;;;
                                  -247456;7;0;false;false;63;95;191;;;
                                  -247463;1;0;false;false;;;;;;
                                  -247464;7;0;false;false;63;95;191;;;
                                  -247471;1;0;false;false;;;;;;
                                  -247472;2;0;false;false;63;95;191;;;
                                  -247474;1;0;false;false;;;;;;
                                  -247475;5;0;false;false;63;95;191;;;
                                  -247480;1;0;false;false;;;;;;
                                  -247481;2;0;false;false;63;95;191;;;
                                  -247483;1;0;false;false;;;;;;
                                  -247484;2;0;false;false;63;95;191;;;
                                  -247486;1;0;false;false;;;;;;
                                  -247487;5;0;false;false;63;95;191;;;
                                  -247492;1;0;false;false;;;;;;
                                  -247493;3;0;false;false;63;95;191;;;
                                  -247496;1;0;false;false;;;;;;
                                  -247497;4;0;false;false;63;95;191;;;
                                  -247501;1;0;false;false;;;;;;
                                  -247502;10;0;false;false;63;95;191;;;
                                  -247512;3;0;false;false;;;;;;
                                  -247515;1;0;false;false;63;95;191;;;
                                  -247516;1;0;false;false;;;;;;
                                  -247517;5;0;false;false;127;127;159;;;
                                  -247522;3;0;false;false;;;;;;
                                  -247525;2;0;false;false;63;95;191;;;
                                  -247527;2;0;false;false;;;;;;
                                  -247529;6;1;false;false;127;0;85;;;
                                  -247535;1;0;false;false;;;;;;
                                  -247536;4;1;false;false;127;0;85;;;
                                  -247540;1;0;false;false;;;;;;
                                  -247541;13;0;false;false;0;0;0;;;
                                  -247554;3;1;false;false;127;0;85;;;
                                  -247557;1;0;false;false;;;;;;
                                  -247558;6;0;false;false;0;0;0;;;
                                  -247564;1;0;false;false;;;;;;
                                  -247565;3;1;false;false;127;0;85;;;
                                  -247568;1;0;false;false;;;;;;
                                  -247569;4;0;false;false;0;0;0;;;
                                  -247573;1;0;false;false;;;;;;
                                  -247574;1;0;false;false;0;0;0;;;
                                  -247575;3;0;false;false;;;;;;
                                  -247578;47;0;false;false;63;127;95;;;
                                  -247625;1;0;false;false;;;;;;
                                  -247626;24;0;false;false;0;0;0;;;
                                  -247650;1;0;false;false;;;;;;
                                  -247651;3;0;false;false;0;0;0;;;
                                  -247654;1;0;false;false;;;;;;
                                  -247655;1;0;false;false;0;0;0;;;
                                  -247656;1;0;false;false;;;;;;
                                  -247657;7;0;false;false;0;0;0;;;
                                  -247664;3;0;false;false;;;;;;
                                  -247667;16;0;false;false;0;0;0;;;
                                  -247683;2;0;false;false;;;;;;
                                  -247685;1;0;false;false;0;0;0;;;
                                  -247686;2;0;false;false;;;;;;
                                  -247688;3;0;false;false;63;95;191;;;
                                  -247691;4;0;false;false;;;;;;
                                  -247695;1;0;false;false;63;95;191;;;
                                  -247696;1;0;false;false;;;;;;
                                  -247697;4;0;false;false;63;95;191;;;
                                  -247701;1;0;false;false;;;;;;
                                  -247702;3;0;false;false;63;95;191;;;
                                  -247705;1;0;false;false;;;;;;
                                  -247706;10;0;false;false;63;95;191;;;
                                  -247716;1;0;false;false;;;;;;
                                  -247717;3;0;false;false;63;95;191;;;
                                  -247720;1;0;false;false;;;;;;
                                  -247721;3;0;false;false;63;95;191;;;
                                  -247724;1;0;false;false;;;;;;
                                  -247725;9;0;false;false;63;95;191;;;
                                  -247734;1;0;false;false;;;;;;
                                  -247735;3;0;false;false;63;95;191;;;
                                  -247738;1;0;false;false;;;;;;
                                  -247739;3;0;false;false;63;95;191;;;
                                  -247742;1;0;false;false;;;;;;
                                  -247743;2;0;false;false;63;95;191;;;
                                  -247745;1;0;false;false;;;;;;
                                  -247746;8;0;false;false;63;95;191;;;
                                  -247754;1;0;false;false;;;;;;
                                  -247755;4;0;false;false;63;95;191;;;
                                  -247759;1;0;false;false;;;;;;
                                  -247760;13;0;false;false;63;95;191;;;
                                  -247773;1;0;false;false;;;;;;
                                  -247774;2;0;false;false;63;95;191;;;
                                  -247776;1;0;false;false;;;;;;
                                  -247777;6;0;false;false;63;95;191;;;
                                  -247783;4;0;false;false;;;;;;
                                  -247787;1;0;false;false;63;95;191;;;
                                  -247788;1;0;false;false;;;;;;
                                  -247789;3;0;false;false;63;95;191;;;
                                  -247792;1;0;false;false;;;;;;
                                  -247793;9;0;false;false;63;95;191;;;
                                  -247802;1;0;false;false;;;;;;
                                  -247803;4;0;false;false;63;95;191;;;
                                  -247807;1;0;false;false;;;;;;
                                  -247808;5;0;false;false;63;95;191;;;
                                  -247813;1;0;false;false;;;;;;
                                  -247814;1;0;false;false;63;95;191;;;
                                  -247815;1;0;false;false;;;;;;
                                  -247816;8;0;false;false;63;95;191;;;
                                  -247824;1;0;false;false;;;;;;
                                  -247825;6;0;false;false;63;95;191;;;
                                  -247831;1;0;false;false;;;;;;
                                  -247832;6;0;false;false;63;95;191;;;
                                  -247838;1;0;false;false;;;;;;
                                  -247839;3;0;false;false;63;95;191;;;
                                  -247842;1;0;false;false;;;;;;
                                  -247843;5;0;false;false;63;95;191;;;
                                  -247848;1;0;false;false;;;;;;
                                  -247849;2;0;false;false;63;95;191;;;
                                  -247851;1;0;false;false;;;;;;
                                  -247852;3;0;false;false;63;95;191;;;
                                  -247855;1;0;false;false;;;;;;
                                  -247856;6;0;false;false;63;95;191;;;
                                  -247862;1;0;false;false;;;;;;
                                  -247863;5;0;false;false;63;95;191;;;
                                  -247868;1;0;false;false;;;;;;
                                  -247869;2;0;false;false;63;95;191;;;
                                  -247871;1;0;false;false;;;;;;
                                  -247872;3;0;false;false;63;95;191;;;
                                  -247875;4;0;false;false;;;;;;
                                  -247879;1;0;false;false;63;95;191;;;
                                  -247880;1;0;false;false;;;;;;
                                  -247881;10;0;false;false;63;95;191;;;
                                  -247891;1;0;false;false;;;;;;
                                  -247892;3;0;false;false;127;127;159;;;
                                  -247895;3;0;false;false;;;;;;
                                  -247898;1;0;false;false;63;95;191;;;
                                  -247899;3;0;false;false;;;;;;
                                  -247902;1;0;false;false;63;95;191;;;
                                  -247903;1;0;false;false;;;;;;
                                  -247904;7;1;false;false;127;159;191;;;
                                  -247911;5;0;false;false;63;95;191;;;
                                  -247916;1;0;false;false;;;;;;
                                  -247917;6;0;false;false;63;95;191;;;
                                  -247923;1;0;false;false;;;;;;
                                  -247924;2;0;false;false;63;95;191;;;
                                  -247926;1;0;false;false;;;;;;
                                  -247927;3;0;false;false;63;95;191;;;
                                  -247930;1;0;false;false;;;;;;
                                  -247931;5;0;false;false;63;95;191;;;
                                  -247936;1;0;false;false;;;;;;
                                  -247937;8;0;false;false;63;95;191;;;
                                  -247945;1;0;false;false;;;;;;
                                  -247946;9;0;false;false;63;95;191;;;
                                  -247955;3;0;false;false;;;;;;
                                  -247958;1;0;false;false;63;95;191;;;
                                  -247959;1;0;false;false;;;;;;
                                  -247960;7;1;false;false;127;159;191;;;
                                  -247967;6;0;false;false;63;95;191;;;
                                  -247973;1;0;false;false;;;;;;
                                  -247974;6;0;false;false;63;95;191;;;
                                  -247980;1;0;false;false;;;;;;
                                  -247981;2;0;false;false;63;95;191;;;
                                  -247983;1;0;false;false;;;;;;
                                  -247984;10;0;false;false;63;95;191;;;
                                  -247994;1;0;false;false;;;;;;
                                  -247995;2;0;false;false;63;95;191;;;
                                  -247997;1;0;false;false;;;;;;
                                  -247998;6;0;false;false;63;95;191;;;
                                  -248004;3;0;false;false;;;;;;
                                  -248007;1;0;false;false;63;95;191;;;
                                  -248008;4;0;false;false;;;;;;
                                  -248012;1;0;false;false;63;95;191;;;
                                  -248013;1;0;false;false;;;;;;
                                  -248014;11;1;false;false;127;159;191;;;
                                  -248025;12;0;false;false;63;95;191;;;
                                  -248037;1;0;false;false;;;;;;
                                  -248038;4;0;false;false;127;127;159;;;
                                  -248042;3;0;false;false;;;;;;
                                  -248045;1;0;false;false;63;95;191;;;
                                  -248046;4;0;false;false;;;;;;
                                  -248050;4;0;false;false;127;127;159;;;
                                  -248054;21;0;false;false;63;95;191;;;
                                  -248075;1;0;false;false;;;;;;
                                  -248076;1;0;false;false;127;127;159;;;
                                  -248077;1;0;false;false;;;;;;
                                  -248078;2;0;false;false;63;95;191;;;
                                  -248080;1;0;false;false;;;;;;
                                  -248081;3;0;false;false;63;95;191;;;
                                  -248084;1;0;false;false;;;;;;
                                  -248085;8;0;false;false;63;95;191;;;
                                  -248093;1;0;false;false;;;;;;
                                  -248094;3;0;false;false;63;95;191;;;
                                  -248097;1;0;false;false;;;;;;
                                  -248098;4;0;false;false;63;95;191;;;
                                  -248102;1;0;false;false;;;;;;
                                  -248103;8;0;false;false;63;95;191;;;
                                  -248111;5;0;false;false;127;127;159;;;
                                  -248116;3;0;false;false;;;;;;
                                  -248119;1;0;false;false;63;95;191;;;
                                  -248120;4;0;false;false;;;;;;
                                  -248124;4;0;false;false;127;127;159;;;
                                  -248128;27;0;false;false;63;95;191;;;
                                  -248155;1;0;false;false;;;;;;
                                  -248156;1;0;false;false;127;127;159;;;
                                  -248157;1;0;false;false;;;;;;
                                  -248158;2;0;false;false;63;95;191;;;
                                  -248160;1;0;false;false;;;;;;
                                  -248161;3;0;false;false;63;95;191;;;
                                  -248164;1;0;false;false;;;;;;
                                  -248165;6;0;false;false;63;95;191;;;
                                  -248171;1;0;false;false;;;;;;
                                  -248172;4;0;false;false;63;95;191;;;
                                  -248176;1;0;false;false;;;;;;
                                  -248177;3;0;false;false;63;95;191;;;
                                  -248180;1;0;false;false;;;;;;
                                  -248181;6;0;false;false;63;95;191;;;
                                  -248187;1;0;false;false;;;;;;
                                  -248188;4;0;false;false;63;95;191;;;
                                  -248192;1;0;false;false;;;;;;
                                  -248193;7;0;false;false;63;95;191;;;
                                  -248200;1;0;false;false;;;;;;
                                  -248201;3;0;false;false;63;95;191;;;
                                  -248204;1;0;false;false;;;;;;
                                  -248205;8;0;false;false;63;95;191;;;
                                  -248213;5;0;false;false;127;127;159;;;
                                  -248218;3;0;false;false;;;;;;
                                  -248221;1;0;false;false;63;95;191;;;
                                  -248222;1;0;false;false;;;;;;
                                  -248223;5;0;false;false;127;127;159;;;
                                  -248228;3;0;false;false;;;;;;
                                  -248231;1;0;false;false;63;95;191;;;
                                  -248232;1;0;false;false;;;;;;
                                  -248233;11;1;false;false;127;159;191;;;
                                  -248244;24;0;false;false;63;95;191;;;
                                  -248268;1;0;false;false;;;;;;
                                  -248269;4;0;false;false;127;127;159;;;
                                  -248273;3;0;false;false;;;;;;
                                  -248276;1;0;false;false;63;95;191;;;
                                  -248277;3;0;false;false;;;;;;
                                  -248280;4;0;false;false;127;127;159;;;
                                  -248284;22;0;false;false;63;95;191;;;
                                  -248306;1;0;false;false;;;;;;
                                  -248307;4;0;false;false;63;95;191;;;
                                  -248311;1;0;false;false;;;;;;
                                  -248312;6;0;false;false;63;95;191;;;
                                  -248318;1;0;false;false;;;;;;
                                  -248319;3;0;false;false;63;95;191;;;
                                  -248322;1;0;false;false;;;;;;
                                  -248323;5;0;false;false;63;95;191;;;
                                  -248328;1;0;false;false;;;;;;
                                  -248329;2;0;false;false;63;95;191;;;
                                  -248331;1;0;false;false;;;;;;
                                  -248332;3;0;false;false;63;95;191;;;
                                  -248335;1;0;false;false;;;;;;
                                  -248336;3;0;false;false;63;95;191;;;
                                  -248339;1;0;false;false;;;;;;
                                  -248340;2;0;false;false;63;95;191;;;
                                  -248342;1;0;false;false;;;;;;
                                  -248343;3;0;false;false;63;95;191;;;
                                  -248346;1;0;false;false;;;;;;
                                  -248347;9;0;false;false;63;95;191;;;
                                  -248356;1;0;false;false;;;;;;
                                  -248357;5;0;false;false;63;95;191;;;
                                  -248362;1;0;false;false;;;;;;
                                  -248363;2;0;false;false;63;95;191;;;
                                  -248365;1;0;false;false;;;;;;
                                  -248366;6;0;false;false;63;95;191;;;
                                  -248372;1;0;false;false;;;;;;
                                  -248373;1;0;false;false;63;95;191;;;
                                  -248374;4;0;false;false;;;;;;
                                  -248378;1;0;false;false;63;95;191;;;
                                  -248379;1;0;false;false;;;;;;
                                  -248380;5;0;false;false;63;95;191;;;
                                  -248385;1;0;false;false;;;;;;
                                  -248386;4;0;false;false;63;95;191;;;
                                  -248390;1;0;false;false;;;;;;
                                  -248391;4;0;false;false;63;95;191;;;
                                  -248395;1;0;false;false;;;;;;
                                  -248396;9;0;false;false;63;95;191;;;
                                  -248405;1;0;false;false;;;;;;
                                  -248406;4;0;false;false;63;95;191;;;
                                  -248410;1;0;false;false;;;;;;
                                  -248411;4;0;false;false;63;95;191;;;
                                  -248415;1;0;false;false;;;;;;
                                  -248416;7;0;false;false;63;95;191;;;
                                  -248423;1;0;false;false;;;;;;
                                  -248424;7;0;false;false;63;95;191;;;
                                  -248431;1;0;false;false;;;;;;
                                  -248432;2;0;false;false;63;95;191;;;
                                  -248434;1;0;false;false;;;;;;
                                  -248435;5;0;false;false;63;95;191;;;
                                  -248440;1;0;false;false;;;;;;
                                  -248441;2;0;false;false;63;95;191;;;
                                  -248443;1;0;false;false;;;;;;
                                  -248444;2;0;false;false;63;95;191;;;
                                  -248446;1;0;false;false;;;;;;
                                  -248447;5;0;false;false;63;95;191;;;
                                  -248452;1;0;false;false;;;;;;
                                  -248453;3;0;false;false;63;95;191;;;
                                  -248456;1;0;false;false;;;;;;
                                  -248457;4;0;false;false;63;95;191;;;
                                  -248461;1;0;false;false;;;;;;
                                  -248462;10;0;false;false;63;95;191;;;
                                  -248472;3;0;false;false;;;;;;
                                  -248475;1;0;false;false;63;95;191;;;
                                  -248476;1;0;false;false;;;;;;
                                  -248477;5;0;false;false;127;127;159;;;
                                  -248482;3;0;false;false;;;;;;
                                  -248485;2;0;false;false;63;95;191;;;
                                  -248487;2;0;false;false;;;;;;
                                  -248489;6;1;false;false;127;0;85;;;
                                  -248495;1;0;false;false;;;;;;
                                  -248496;4;1;false;false;127;0;85;;;
                                  -248500;1;0;false;false;;;;;;
                                  -248501;18;0;false;false;0;0;0;;;
                                  -248519;3;1;false;false;127;0;85;;;
                                  -248522;1;0;false;false;;;;;;
                                  -248523;6;0;false;false;0;0;0;;;
                                  -248529;1;0;false;false;;;;;;
                                  -248530;3;1;false;false;127;0;85;;;
                                  -248533;1;0;false;false;;;;;;
                                  -248534;7;0;false;false;0;0;0;;;
                                  -248541;1;0;false;false;;;;;;
                                  -248542;1;0;false;false;0;0;0;;;
                                  -248543;3;0;false;false;;;;;;
                                  -248546;14;0;false;false;0;0;0;;;
                                  -248560;3;0;false;false;;;;;;
                                  -248563;3;1;false;false;127;0;85;;;
                                  -248566;1;0;false;false;;;;;;
                                  -248567;13;0;false;false;0;0;0;;;
                                  -248580;1;0;false;false;;;;;;
                                  -248581;1;0;false;false;0;0;0;;;
                                  -248582;1;0;false;false;;;;;;
                                  -248583;15;0;false;false;0;0;0;;;
                                  -248598;3;0;false;false;;;;;;
                                  -248601;5;0;false;false;0;0;0;;;
                                  -248606;1;0;false;false;;;;;;
                                  -248607;1;0;false;false;0;0;0;;;
                                  -248608;1;0;false;false;;;;;;
                                  -248609;11;0;false;false;0;0;0;;;
                                  -248620;1;0;false;false;;;;;;
                                  -248621;8;0;false;false;0;0;0;;;
                                  -248629;1;0;false;false;;;;;;
                                  -248630;7;0;false;false;0;0;0;;;
                                  -248637;1;0;false;false;;;;;;
                                  -248638;16;0;false;false;0;0;0;;;
                                  -248654;3;0;false;false;;;;;;
                                  -248657;3;1;false;false;127;0;85;;;
                                  -248660;1;0;false;false;;;;;;
                                  -248661;3;0;false;false;0;0;0;;;
                                  -248664;1;0;false;false;;;;;;
                                  -248665;1;0;false;false;0;0;0;;;
                                  -248666;1;0;false;false;;;;;;
                                  -248667;5;0;false;false;0;0;0;;;
                                  -248672;1;0;false;false;;;;;;
                                  -248673;1;0;false;false;0;0;0;;;
                                  -248674;1;0;false;false;;;;;;
                                  -248675;7;0;false;false;0;0;0;;;
                                  -248682;3;0;false;false;;;;;;
                                  -248685;2;1;false;false;127;0;85;;;
                                  -248687;1;0;false;false;;;;;;
                                  -248688;4;0;false;false;0;0;0;;;
                                  -248692;1;0;false;false;;;;;;
                                  -248693;1;0;false;false;0;0;0;;;
                                  -248694;1;0;false;false;;;;;;
                                  -248695;2;0;false;false;0;0;0;;;
                                  -248697;1;0;false;false;;;;;;
                                  -248698;1;0;false;false;0;0;0;;;
                                  -248699;4;0;false;false;;;;;;
                                  -248703;6;0;false;false;0;0;0;;;
                                  -248709;1;0;false;false;;;;;;
                                  -248710;1;0;false;false;0;0;0;;;
                                  -248711;1;0;false;false;;;;;;
                                  -248712;7;0;false;false;0;0;0;;;
                                  -248719;3;0;false;false;;;;;;
                                  -248722;1;0;false;false;0;0;0;;;
                                  -248723;1;0;false;false;;;;;;
                                  -248724;4;1;false;false;127;0;85;;;
                                  -248728;1;0;false;false;;;;;;
                                  -248729;1;0;false;false;0;0;0;;;
                                  -248730;4;0;false;false;;;;;;
                                  -248734;2;1;false;false;127;0;85;;;
                                  -248736;1;0;false;false;;;;;;
                                  -248737;4;0;false;false;0;0;0;;;
                                  -248741;1;0;false;false;;;;;;
                                  -248742;1;0;false;false;0;0;0;;;
                                  -248743;1;0;false;false;;;;;;
                                  -248744;14;0;false;false;0;0;0;;;
                                  -248758;1;0;false;false;;;;;;
                                  -248759;6;0;false;false;0;0;0;;;
                                  -248765;1;0;false;false;;;;;;
                                  -248766;1;0;false;false;0;0;0;;;
                                  -248767;1;0;false;false;;;;;;
                                  -248768;13;0;false;false;0;0;0;;;
                                  -248781;1;0;false;false;;;;;;
                                  -248782;1;0;false;false;0;0;0;;;
                                  -248783;1;0;false;false;;;;;;
                                  -248784;6;0;false;false;0;0;0;;;
                                  -248790;3;0;false;false;;;;;;
                                  -248793;1;0;false;false;0;0;0;;;
                                  -248794;3;0;false;false;;;;;;
                                  -248797;2;1;false;false;127;0;85;;;
                                  -248799;1;0;false;false;;;;;;
                                  -248800;23;0;false;false;0;0;0;;;
                                  -248823;1;0;false;false;;;;;;
                                  -248824;2;0;false;false;0;0;0;;;
                                  -248826;1;0;false;false;;;;;;
                                  -248827;21;0;false;false;0;0;0;;;
                                  -248848;1;0;false;false;;;;;;
                                  -248849;1;0;false;false;0;0;0;;;
                                  -248850;1;0;false;false;;;;;;
                                  -248851;8;0;false;false;0;0;0;;;
                                  -248859;1;0;false;false;;;;;;
                                  -248860;1;0;false;false;0;0;0;;;
                                  -248861;4;0;false;false;;;;;;
                                  -248865;71;0;false;false;63;127;95;;;
                                  -248936;2;0;false;false;;;;;;
                                  -248938;78;0;false;false;63;127;95;;;
                                  -249016;2;0;false;false;;;;;;
                                  -249018;29;0;false;false;63;127;95;;;
                                  -249047;2;0;false;false;;;;;;
                                  -249049;38;0;false;false;0;0;0;;;
                                  -249087;3;0;false;false;;;;;;
                                  -249090;1;0;false;false;0;0;0;;;
                                  -249091;8;0;false;false;;;;;;
                                  -249099;27;0;false;false;0;0;0;;;
                                  -249126;1;0;false;false;;;;;;
                                  -249127;7;0;false;false;0;0;0;;;
                                  -249134;1;0;false;false;;;;;;
                                  -249135;5;1;false;false;127;0;85;;;
                                  -249140;2;0;false;false;0;0;0;;;
                                  -249142;3;0;false;false;;;;;;
                                  -249145;52;0;false;false;63;127;95;;;
                                  -249197;1;0;false;false;;;;;;
                                  -249198;19;0;false;false;0;0;0;;;
                                  -249217;2;0;false;false;;;;;;
                                  -249219;1;0;false;false;0;0;0;;;
                                  -249220;2;0;false;false;;;;;;
                                  -249222;3;0;false;false;63;95;191;;;
                                  -249225;4;0;false;false;;;;;;
                                  -249229;1;0;false;false;63;95;191;;;
                                  -249230;1;0;false;false;;;;;;
                                  -249231;4;0;false;false;63;95;191;;;
                                  -249235;1;0;false;false;;;;;;
                                  -249236;3;0;false;false;63;95;191;;;
                                  -249239;1;0;false;false;;;;;;
                                  -249240;10;0;false;false;63;95;191;;;
                                  -249250;4;0;false;false;;;;;;
                                  -249254;1;0;false;false;63;95;191;;;
                                  -249255;1;0;false;false;;;;;;
                                  -249256;3;0;false;false;63;95;191;;;
                                  -249259;1;0;false;false;;;;;;
                                  -249260;3;0;false;false;63;95;191;;;
                                  -249263;1;0;false;false;;;;;;
                                  -249264;9;0;false;false;63;95;191;;;
                                  -249273;1;0;false;false;;;;;;
                                  -249274;3;0;false;false;63;95;191;;;
                                  -249277;1;0;false;false;;;;;;
                                  -249278;3;0;false;false;63;95;191;;;
                                  -249281;1;0;false;false;;;;;;
                                  -249282;2;0;false;false;63;95;191;;;
                                  -249284;1;0;false;false;;;;;;
                                  -249285;8;0;false;false;63;95;191;;;
                                  -249293;1;0;false;false;;;;;;
                                  -249294;4;0;false;false;63;95;191;;;
                                  -249298;1;0;false;false;;;;;;
                                  -249299;13;0;false;false;63;95;191;;;
                                  -249312;1;0;false;false;;;;;;
                                  -249313;2;0;false;false;63;95;191;;;
                                  -249315;1;0;false;false;;;;;;
                                  -249316;6;0;false;false;63;95;191;;;
                                  -249322;4;0;false;false;;;;;;
                                  -249326;1;0;false;false;63;95;191;;;
                                  -249327;1;0;false;false;;;;;;
                                  -249328;3;0;false;false;63;95;191;;;
                                  -249331;1;0;false;false;;;;;;
                                  -249332;9;0;false;false;63;95;191;;;
                                  -249341;1;0;false;false;;;;;;
                                  -249342;4;0;false;false;63;95;191;;;
                                  -249346;1;0;false;false;;;;;;
                                  -249347;5;0;false;false;63;95;191;;;
                                  -249352;3;0;false;false;;;;;;
                                  -249355;1;0;false;false;63;95;191;;;
                                  -249356;1;0;false;false;;;;;;
                                  -249357;3;0;false;false;127;127;159;;;
                                  -249360;3;0;false;false;;;;;;
                                  -249363;1;0;false;false;63;95;191;;;
                                  -249364;3;0;false;false;;;;;;
                                  -249367;1;0;false;false;63;95;191;;;
                                  -249368;1;0;false;false;;;;;;
                                  -249369;7;1;false;false;127;159;191;;;
                                  -249376;5;0;false;false;63;95;191;;;
                                  -249381;1;0;false;false;;;;;;
                                  -249382;6;0;false;false;63;95;191;;;
                                  -249388;1;0;false;false;;;;;;
                                  -249389;2;0;false;false;63;95;191;;;
                                  -249391;1;0;false;false;;;;;;
                                  -249392;3;0;false;false;63;95;191;;;
                                  -249395;1;0;false;false;;;;;;
                                  -249396;5;0;false;false;63;95;191;;;
                                  -249401;1;0;false;false;;;;;;
                                  -249402;8;0;false;false;63;95;191;;;
                                  -249410;1;0;false;false;;;;;;
                                  -249411;10;0;false;false;63;95;191;;;
                                  -249421;1;0;false;false;;;;;;
                                  -249422;5;0;false;false;63;95;191;;;
                                  -249427;1;0;false;false;;;;;;
                                  -249428;2;0;false;false;63;95;191;;;
                                  -249430;1;0;false;false;;;;;;
                                  -249431;1;0;false;false;63;95;191;;;
                                  -249432;1;0;false;false;;;;;;
                                  -249433;4;0;false;false;63;95;191;;;
                                  -249437;1;0;false;false;;;;;;
                                  -249438;2;0;false;false;63;95;191;;;
                                  -249440;1;0;false;false;;;;;;
                                  -249441;5;0;false;false;63;95;191;;;
                                  -249446;3;0;false;false;;;;;;
                                  -249449;1;0;false;false;63;95;191;;;
                                  -249450;1;0;false;false;;;;;;
                                  -249451;7;1;false;false;127;159;191;;;
                                  -249458;6;0;false;false;63;95;191;;;
                                  -249464;1;0;false;false;;;;;;
                                  -249465;6;0;false;false;63;95;191;;;
                                  -249471;1;0;false;false;;;;;;
                                  -249472;2;0;false;false;63;95;191;;;
                                  -249474;1;0;false;false;;;;;;
                                  -249475;10;0;false;false;63;95;191;;;
                                  -249485;1;0;false;false;;;;;;
                                  -249486;2;0;false;false;63;95;191;;;
                                  -249488;1;0;false;false;;;;;;
                                  -249489;7;0;false;false;63;95;191;;;
                                  -249496;1;0;false;false;;;;;;
                                  -249497;1;0;false;false;63;95;191;;;
                                  -249498;1;0;false;false;;;;;;
                                  -249499;20;0;false;false;63;95;191;;;
                                  -249519;1;0;false;false;;;;;;
                                  -249520;1;0;false;false;63;95;191;;;
                                  -249521;2;0;false;false;;;;;;
                                  -249523;34;0;false;false;63;95;191;;;
                                  -249557;1;0;false;false;;;;;;
                                  -249558;1;0;false;false;63;95;191;;;
                                  -249559;2;0;false;false;;;;;;
                                  -249561;1;0;false;false;63;95;191;;;
                                  -249562;1;0;false;false;;;;;;
                                  -249563;8;0;false;false;63;95;191;;;
                                  -249571;1;0;false;false;;;;;;
                                  -249572;6;0;false;false;63;95;191;;;
                                  -249578;1;0;false;false;;;;;;
                                  -249579;6;0;false;false;63;95;191;;;
                                  -249585;1;0;false;false;;;;;;
                                  -249586;3;0;false;false;63;95;191;;;
                                  -249589;1;0;false;false;;;;;;
                                  -249590;5;0;false;false;63;95;191;;;
                                  -249595;1;0;false;false;;;;;;
                                  -249596;2;0;false;false;63;95;191;;;
                                  -249598;1;0;false;false;;;;;;
                                  -249599;3;0;false;false;63;95;191;;;
                                  -249602;1;0;false;false;;;;;;
                                  -249603;9;0;false;false;63;95;191;;;
                                  -249612;1;0;false;false;;;;;;
                                  -249613;6;0;false;false;63;95;191;;;
                                  -249619;3;0;false;false;;;;;;
                                  -249622;1;0;false;false;63;95;191;;;
                                  -249623;1;0;false;false;;;;;;
                                  -249624;7;1;false;false;127;159;191;;;
                                  -249631;9;0;false;false;63;95;191;;;
                                  -249640;1;0;false;false;;;;;;
                                  -249641;1;0;false;false;63;95;191;;;
                                  -249642;1;0;false;false;;;;;;
                                  -249643;9;0;false;false;63;95;191;;;
                                  -249652;1;0;false;false;;;;;;
                                  -249653;5;0;false;false;63;95;191;;;
                                  -249658;1;0;false;false;;;;;;
                                  -249659;2;0;false;false;63;95;191;;;
                                  -249661;1;0;false;false;;;;;;
                                  -249662;4;0;false;false;63;95;191;;;
                                  -249666;1;0;false;false;;;;;;
                                  -249667;4;0;false;false;63;95;191;;;
                                  -249671;1;0;false;false;;;;;;
                                  -249672;3;0;false;false;63;95;191;;;
                                  -249675;1;0;false;false;;;;;;
                                  -249676;2;0;false;false;63;95;191;;;
                                  -249678;1;0;false;false;;;;;;
                                  -249679;4;0;false;false;63;95;191;;;
                                  -249683;1;0;false;false;;;;;;
                                  -249684;3;0;false;false;63;95;191;;;
                                  -249687;1;0;false;false;;;;;;
                                  -249688;4;0;false;false;63;95;191;;;
                                  -249692;4;0;false;false;;;;;;
                                  -249696;1;0;false;false;63;95;191;;;
                                  -249697;2;0;false;false;;;;;;
                                  -249699;3;0;false;false;63;95;191;;;
                                  -249702;1;0;false;false;;;;;;
                                  -249703;9;0;false;false;63;95;191;;;
                                  -249712;1;0;false;false;;;;;;
                                  -249713;2;0;false;false;63;95;191;;;
                                  -249715;1;0;false;false;;;;;;
                                  -249716;6;0;false;false;63;95;191;;;
                                  -249722;3;0;false;false;;;;;;
                                  -249725;2;0;false;false;63;95;191;;;
                                  -249727;2;0;false;false;;;;;;
                                  -249729;4;1;false;false;127;0;85;;;
                                  -249733;1;0;false;false;;;;;;
                                  -249734;21;0;false;false;0;0;0;;;
                                  -249755;3;1;false;false;127;0;85;;;
                                  -249758;1;0;false;false;;;;;;
                                  -249759;6;0;false;false;0;0;0;;;
                                  -249765;1;0;false;false;;;;;;
                                  -249766;3;1;false;false;127;0;85;;;
                                  -249769;1;0;false;false;;;;;;
                                  -249770;7;0;false;false;0;0;0;;;
                                  -249777;1;0;false;false;;;;;;
                                  -249778;7;1;false;false;127;0;85;;;
                                  -249785;1;0;false;false;;;;;;
                                  -249786;10;0;false;false;0;0;0;;;
                                  -249796;1;0;false;false;;;;;;
                                  -249797;1;0;false;false;0;0;0;;;
                                  -249798;3;0;false;false;;;;;;
                                  -249801;3;1;false;false;127;0;85;;;
                                  -249804;1;0;false;false;;;;;;
                                  -249805;3;0;false;false;0;0;0;;;
                                  -249808;1;0;false;false;;;;;;
                                  -249809;1;0;false;false;0;0;0;;;
                                  -249810;1;0;false;false;;;;;;
                                  -249811;5;0;false;false;0;0;0;;;
                                  -249816;1;0;false;false;;;;;;
                                  -249817;1;0;false;false;0;0;0;;;
                                  -249818;1;0;false;false;;;;;;
                                  -249819;7;0;false;false;0;0;0;;;
                                  -249826;6;0;false;false;;;;;;
                                  -249832;2;1;false;false;127;0;85;;;
                                  -249834;1;0;false;false;;;;;;
                                  -249835;6;0;false;false;0;0;0;;;
                                  -249841;1;0;false;false;;;;;;
                                  -249842;1;0;false;false;0;0;0;;;
                                  -249843;1;0;false;false;;;;;;
                                  -249844;4;0;false;false;0;0;0;;;
                                  -249848;1;0;false;false;;;;;;
                                  -249849;1;0;false;false;0;0;0;;;
                                  -249850;4;0;false;false;;;;;;
                                  -249854;3;1;false;false;127;0;85;;;
                                  -249857;1;0;false;false;;;;;;
                                  -249858;4;0;false;false;0;0;0;;;
                                  -249862;1;0;false;false;;;;;;
                                  -249863;1;0;false;false;0;0;0;;;
                                  -249864;1;0;false;false;;;;;;
                                  -249865;4;0;false;false;0;0;0;;;
                                  -249869;4;0;false;false;;;;;;
                                  -249873;3;0;false;false;0;0;0;;;
                                  -249876;1;0;false;false;;;;;;
                                  -249877;1;0;false;false;0;0;0;;;
                                  -249878;1;0;false;false;;;;;;
                                  -249879;6;0;false;false;0;0;0;;;
                                  -249885;4;0;false;false;;;;;;
                                  -249889;5;0;false;false;0;0;0;;;
                                  -249894;1;0;false;false;;;;;;
                                  -249895;1;0;false;false;0;0;0;;;
                                  -249896;1;0;false;false;;;;;;
                                  -249897;5;0;false;false;0;0;0;;;
                                  -249902;3;0;false;false;;;;;;
                                  -249905;1;0;false;false;0;0;0;;;
                                  -249906;3;0;false;false;;;;;;
                                  -249909;68;0;false;false;63;127;95;;;
                                  -249977;1;0;false;false;;;;;;
                                  -249978;15;0;false;false;63;127;95;;;
                                  -249993;1;0;false;false;;;;;;
                                  -249994;2;1;false;false;127;0;85;;;
                                  -249996;1;0;false;false;;;;;;
                                  -249997;12;0;false;false;0;0;0;;;
                                  -250009;1;0;false;false;;;;;;
                                  -250010;2;0;false;false;0;0;0;;;
                                  -250012;1;0;false;false;;;;;;
                                  -250013;5;0;false;false;0;0;0;;;
                                  -250018;1;0;false;false;;;;;;
                                  -250019;2;0;false;false;0;0;0;;;
                                  -250021;1;0;false;false;;;;;;
                                  -250022;11;0;false;false;0;0;0;;;
                                  -250033;1;0;false;false;;;;;;
                                  -250034;2;0;false;false;0;0;0;;;
                                  -250036;1;0;false;false;;;;;;
                                  -250037;3;0;false;false;0;0;0;;;
                                  -250040;1;0;false;false;;;;;;
                                  -250041;2;0;false;false;0;0;0;;;
                                  -250043;5;0;false;false;;;;;;
                                  -250048;7;0;false;false;0;0;0;;;
                                  -250055;1;0;false;false;;;;;;
                                  -250056;1;0;false;false;0;0;0;;;
                                  -250057;1;0;false;false;;;;;;
                                  -250058;1;0;false;false;0;0;0;;;
                                  -250059;1;0;false;false;;;;;;
                                  -250060;2;0;false;false;0;0;0;;;
                                  -250062;1;0;false;false;;;;;;
                                  -250063;15;0;false;false;0;0;0;;;
                                  -250078;1;0;false;false;;;;;;
                                  -250079;2;0;false;false;0;0;0;;;
                                  -250081;1;0;false;false;;;;;;
                                  -250082;12;0;false;false;0;0;0;;;
                                  -250094;1;0;false;false;;;;;;
                                  -250095;2;0;false;false;0;0;0;;;
                                  -250097;5;0;false;false;;;;;;
                                  -250102;7;0;false;false;0;0;0;;;
                                  -250109;1;0;false;false;;;;;;
                                  -250110;1;0;false;false;0;0;0;;;
                                  -250111;1;0;false;false;;;;;;
                                  -250112;1;0;false;false;0;0;0;;;
                                  -250113;1;0;false;false;;;;;;
                                  -250114;2;0;false;false;0;0;0;;;
                                  -250116;1;0;false;false;;;;;;
                                  -250117;15;0;false;false;0;0;0;;;
                                  -250132;1;0;false;false;;;;;;
                                  -250133;2;0;false;false;0;0;0;;;
                                  -250135;1;0;false;false;;;;;;
                                  -250136;13;0;false;false;0;0;0;;;
                                  -250149;1;0;false;false;;;;;;
                                  -250150;1;0;false;false;0;0;0;;;
                                  -250151;4;0;false;false;;;;;;
                                  -250155;26;0;false;false;0;0;0;;;
                                  -250181;4;0;false;false;;;;;;
                                  -250185;2;1;false;false;127;0;85;;;
                                  -250187;1;0;false;false;;;;;;
                                  -250188;7;0;false;false;0;0;0;;;
                                  -250195;1;0;false;false;;;;;;
                                  -250196;1;0;false;false;0;0;0;;;
                                  -250197;1;0;false;false;;;;;;
                                  -250198;2;0;false;false;0;0;0;;;
                                  -250200;1;0;false;false;;;;;;
                                  -250201;1;0;false;false;0;0;0;;;
                                  -250202;5;0;false;false;;;;;;
                                  -250207;15;0;false;false;0;0;0;;;
                                  -250222;1;0;false;false;;;;;;
                                  -250223;1;0;false;false;0;0;0;;;
                                  -250224;1;0;false;false;;;;;;
                                  -250225;11;0;false;false;0;0;0;;;
                                  -250236;1;0;false;false;;;;;;
                                  -250237;1;0;false;false;0;0;0;;;
                                  -250238;1;0;false;false;;;;;;
                                  -250239;4;0;false;false;0;0;0;;;
                                  -250243;5;0;false;false;;;;;;
                                  -250248;11;0;false;false;0;0;0;;;
                                  -250259;1;0;false;false;;;;;;
                                  -250260;1;0;false;false;0;0;0;;;
                                  -250261;1;0;false;false;;;;;;
                                  -250262;11;0;false;false;0;0;0;;;
                                  -250273;1;0;false;false;;;;;;
                                  -250274;1;0;false;false;0;0;0;;;
                                  -250275;1;0;false;false;;;;;;
                                  -250276;6;0;false;false;0;0;0;;;
                                  -250282;4;0;false;false;;;;;;
                                  -250286;1;0;false;false;0;0;0;;;
                                  -250287;4;0;false;false;;;;;;
                                  -250291;4;1;false;false;127;0;85;;;
                                  -250295;1;0;false;false;;;;;;
                                  -250296;1;0;false;false;0;0;0;;;
                                  -250297;5;0;false;false;;;;;;
                                  -250302;15;0;false;false;0;0;0;;;
                                  -250317;1;0;false;false;;;;;;
                                  -250318;1;0;false;false;0;0;0;;;
                                  -250319;1;0;false;false;;;;;;
                                  -250320;11;0;false;false;0;0;0;;;
                                  -250331;1;0;false;false;;;;;;
                                  -250332;1;0;false;false;0;0;0;;;
                                  -250333;1;0;false;false;;;;;;
                                  -250334;6;0;false;false;0;0;0;;;
                                  -250340;5;0;false;false;;;;;;
                                  -250345;11;0;false;false;0;0;0;;;
                                  -250356;1;0;false;false;;;;;;
                                  -250357;1;0;false;false;0;0;0;;;
                                  -250358;1;0;false;false;;;;;;
                                  -250359;11;0;false;false;0;0;0;;;
                                  -250370;1;0;false;false;;;;;;
                                  -250371;1;0;false;false;0;0;0;;;
                                  -250372;1;0;false;false;;;;;;
                                  -250373;4;0;false;false;0;0;0;;;
                                  -250377;4;0;false;false;;;;;;
                                  -250381;1;0;false;false;0;0;0;;;
                                  -250382;4;0;false;false;;;;;;
                                  -250386;32;0;false;false;0;0;0;;;
                                  -250418;1;0;false;false;;;;;;
                                  -250419;11;0;false;false;0;0;0;;;
                                  -250430;1;0;false;false;;;;;;
                                  -250431;1;0;false;false;0;0;0;;;
                                  -250432;1;0;false;false;;;;;;
                                  -250433;12;0;false;false;0;0;0;;;
                                  -250445;1;0;false;false;;;;;;
                                  -250446;4;1;false;false;127;0;85;;;
                                  -250450;2;0;false;false;0;0;0;;;
                                  -250452;3;0;false;false;;;;;;
                                  -250455;1;0;false;false;0;0;0;;;
                                  -250456;2;0;false;false;;;;;;
                                  -250458;1;0;false;false;0;0;0;;;
                                  -250459;2;0;false;false;;;;;;
                                  -250461;3;0;false;false;63;95;191;;;
                                  -250464;4;0;false;false;;;;;;
                                  -250468;1;0;false;false;63;95;191;;;
                                  -250469;1;0;false;false;;;;;;
                                  -250470;4;0;false;false;63;95;191;;;
                                  -250474;1;0;false;false;;;;;;
                                  -250475;3;0;false;false;63;95;191;;;
                                  -250478;1;0;false;false;;;;;;
                                  -250479;9;0;false;false;63;95;191;;;
                                  -250488;1;0;false;false;;;;;;
                                  -250489;6;0;false;false;63;95;191;;;
                                  -250495;1;0;false;false;;;;;;
                                  -250496;3;0;false;false;63;95;191;;;
                                  -250499;1;0;false;false;;;;;;
                                  -250500;3;0;false;false;63;95;191;;;
                                  -250503;1;0;false;false;;;;;;
                                  -250504;5;0;false;false;63;95;191;;;
                                  -250509;1;0;false;false;;;;;;
                                  -250510;10;0;false;false;63;95;191;;;
                                  -250520;1;0;false;false;;;;;;
                                  -250521;8;0;false;false;63;95;191;;;
                                  -250529;1;0;false;false;;;;;;
                                  -250530;6;0;false;false;63;95;191;;;
                                  -250536;1;0;false;false;;;;;;
                                  -250537;3;0;false;false;63;95;191;;;
                                  -250540;1;0;false;false;;;;;;
                                  -250541;3;0;false;false;63;95;191;;;
                                  -250544;3;0;false;false;;;;;;
                                  -250547;1;0;false;false;63;95;191;;;
                                  -250548;1;0;false;false;;;;;;
                                  -250549;9;0;false;false;63;95;191;;;
                                  -250558;1;0;false;false;;;;;;
                                  -250559;6;0;false;false;63;95;191;;;
                                  -250565;2;0;false;false;;;;;;
                                  -250567;8;0;false;false;63;95;191;;;
                                  -250575;1;0;false;false;;;;;;
                                  -250576;5;0;false;false;63;95;191;;;
                                  -250581;1;0;false;false;;;;;;
                                  -250582;6;0;false;false;63;95;191;;;
                                  -250588;1;0;false;false;;;;;;
                                  -250589;3;0;false;false;63;95;191;;;
                                  -250592;1;0;false;false;;;;;;
                                  -250593;8;0;false;false;63;95;191;;;
                                  -250601;1;0;false;false;;;;;;
                                  -250602;2;0;false;false;63;95;191;;;
                                  -250604;1;0;false;false;;;;;;
                                  -250605;4;0;false;false;63;95;191;;;
                                  -250609;1;0;false;false;;;;;;
                                  -250610;9;0;false;false;63;95;191;;;
                                  -250619;4;0;false;false;;;;;;
                                  -250623;1;0;false;false;63;95;191;;;
                                  -250624;1;0;false;false;;;;;;
                                  -250625;7;0;false;false;63;95;191;;;
                                  -250632;1;0;false;false;;;;;;
                                  -250633;4;0;false;false;63;95;191;;;
                                  -250637;1;0;false;false;;;;;;
                                  -250638;3;0;false;false;63;95;191;;;
                                  -250641;1;0;false;false;;;;;;
                                  -250642;3;0;false;false;63;95;191;;;
                                  -250645;1;0;false;false;;;;;;
                                  -250646;6;0;false;false;63;95;191;;;
                                  -250652;1;0;false;false;;;;;;
                                  -250653;2;0;false;false;63;95;191;;;
                                  -250655;1;0;false;false;;;;;;
                                  -250656;5;0;false;false;63;95;191;;;
                                  -250661;1;0;false;false;;;;;;
                                  -250662;2;0;false;false;63;95;191;;;
                                  -250664;1;0;false;false;;;;;;
                                  -250665;10;0;false;false;63;95;191;;;
                                  -250675;1;0;false;false;;;;;;
                                  -250676;6;0;false;false;63;95;191;;;
                                  -250682;1;0;false;false;;;;;;
                                  -250683;4;0;false;false;63;95;191;;;
                                  -250687;1;0;false;false;;;;;;
                                  -250688;13;0;false;false;63;95;191;;;
                                  -250701;4;0;false;false;;;;;;
                                  -250705;1;0;false;false;63;95;191;;;
                                  -250706;1;0;false;false;;;;;;
                                  -250707;4;0;false;false;63;95;191;;;
                                  -250711;1;0;false;false;;;;;;
                                  -250712;1;0;false;false;63;95;191;;;
                                  -250713;1;0;false;false;;;;;;
                                  -250714;10;0;false;false;63;95;191;;;
                                  -250724;1;0;false;false;;;;;;
                                  -250725;4;0;false;false;63;95;191;;;
                                  -250729;1;0;false;false;;;;;;
                                  -250730;3;0;false;false;63;95;191;;;
                                  -250733;1;0;false;false;;;;;;
                                  -250734;4;0;false;false;63;95;191;;;
                                  -250738;1;0;false;false;;;;;;
                                  -250739;11;0;false;false;63;95;191;;;
                                  -250750;4;0;false;false;;;;;;
                                  -250754;1;0;false;false;63;95;191;;;
                                  -250755;1;0;false;false;;;;;;
                                  -250756;3;0;false;false;127;127;159;;;
                                  -250759;3;0;false;false;;;;;;
                                  -250762;1;0;false;false;63;95;191;;;
                                  -250763;1;0;false;false;;;;;;
                                  -250764;6;0;false;false;63;95;191;;;
                                  -250770;1;0;false;false;;;;;;
                                  -250771;3;0;false;false;63;95;191;;;
                                  -250774;1;0;false;false;;;;;;
                                  -250775;2;0;false;false;63;95;191;;;
                                  -250777;1;0;false;false;;;;;;
                                  -250778;6;0;false;false;63;95;191;;;
                                  -250784;1;0;false;false;;;;;;
                                  -250785;2;0;false;false;63;95;191;;;
                                  -250787;1;0;false;false;;;;;;
                                  -250788;1;0;false;false;63;95;191;;;
                                  -250789;1;0;false;false;;;;;;
                                  -250790;17;0;false;false;63;95;191;;;
                                  -250807;1;0;false;false;;;;;;
                                  -250808;3;0;false;false;63;95;191;;;
                                  -250811;1;0;false;false;;;;;;
                                  -250812;4;0;false;false;63;95;191;;;
                                  -250816;1;0;false;false;;;;;;
                                  -250817;3;0;false;false;63;95;191;;;
                                  -250820;1;0;false;false;;;;;;
                                  -250821;5;0;false;false;63;95;191;;;
                                  -250826;1;0;false;false;;;;;;
                                  -250827;3;0;false;false;63;95;191;;;
                                  -250830;4;0;false;false;;;;;;
                                  -250834;1;0;false;false;63;95;191;;;
                                  -250835;1;0;false;false;;;;;;
                                  -250836;8;0;false;false;63;95;191;;;
                                  -250844;1;0;false;false;;;;;;
                                  -250845;9;0;false;false;63;95;191;;;
                                  -250854;1;0;false;false;;;;;;
                                  -250855;3;0;false;false;63;95;191;;;
                                  -250858;1;0;false;false;;;;;;
                                  -250859;7;0;false;false;63;95;191;;;
                                  -250866;3;0;false;false;;;;;;
                                  -250869;1;0;false;false;63;95;191;;;
                                  -250870;1;0;false;false;;;;;;
                                  -250871;4;0;false;false;127;127;159;;;
                                  -250875;3;0;false;false;;;;;;
                                  -250878;1;0;false;false;63;95;191;;;
                                  -250879;3;0;false;false;;;;;;
                                  -250882;1;0;false;false;63;95;191;;;
                                  -250883;1;0;false;false;;;;;;
                                  -250884;7;1;false;false;127;159;191;;;
                                  -250891;5;0;false;false;63;95;191;;;
                                  -250896;1;0;false;false;;;;;;
                                  -250897;10;0;false;false;63;95;191;;;
                                  -250907;1;0;false;false;;;;;;
                                  -250908;6;0;false;false;63;95;191;;;
                                  -250914;1;0;false;false;;;;;;
                                  -250915;10;0;false;false;63;95;191;;;
                                  -250925;1;0;false;false;;;;;;
                                  -250926;3;0;false;false;63;95;191;;;
                                  -250929;1;0;false;false;;;;;;
                                  -250930;5;0;false;false;63;95;191;;;
                                  -250935;1;0;false;false;;;;;;
                                  -250936;12;0;false;false;63;95;191;;;
                                  -250948;3;0;false;false;;;;;;
                                  -250951;1;0;false;false;63;95;191;;;
                                  -250952;1;0;false;false;;;;;;
                                  -250953;10;0;false;false;63;95;191;;;
                                  -250963;1;0;false;false;;;;;;
                                  -250964;3;0;false;false;63;95;191;;;
                                  -250967;1;0;false;false;;;;;;
                                  -250968;3;0;false;false;63;95;191;;;
                                  -250971;1;0;false;false;;;;;;
                                  -250972;5;0;false;false;63;95;191;;;
                                  -250977;1;0;false;false;;;;;;
                                  -250978;2;0;false;false;63;95;191;;;
                                  -250980;1;0;false;false;;;;;;
                                  -250981;3;0;false;false;63;95;191;;;
                                  -250984;1;0;false;false;;;;;;
                                  -250985;5;0;false;false;63;95;191;;;
                                  -250990;1;0;false;false;;;;;;
                                  -250991;6;0;false;false;63;95;191;;;
                                  -250997;1;0;false;false;;;;;;
                                  -250998;3;0;false;false;63;95;191;;;
                                  -251001;1;0;false;false;;;;;;
                                  -251002;2;0;false;false;63;95;191;;;
                                  -251004;1;0;false;false;;;;;;
                                  -251005;4;0;false;false;63;95;191;;;
                                  -251009;1;0;false;false;;;;;;
                                  -251010;2;0;false;false;63;95;191;;;
                                  -251012;1;0;false;false;;;;;;
                                  -251013;6;0;false;false;63;95;191;;;
                                  -251019;3;0;false;false;;;;;;
                                  -251022;1;0;false;false;63;95;191;;;
                                  -251023;1;0;false;false;;;;;;
                                  -251024;3;0;false;false;63;95;191;;;
                                  -251027;1;0;false;false;;;;;;
                                  -251028;7;0;false;false;63;95;191;;;
                                  -251035;3;0;false;false;;;;;;
                                  -251038;1;0;false;false;63;95;191;;;
                                  -251039;1;0;false;false;;;;;;
                                  -251040;11;1;false;false;127;159;191;;;
                                  -251051;12;0;false;false;63;95;191;;;
                                  -251063;1;0;false;false;;;;;;
                                  -251064;4;0;false;false;127;127;159;;;
                                  -251068;3;0;false;false;;;;;;
                                  -251071;1;0;false;false;63;95;191;;;
                                  -251072;4;0;false;false;;;;;;
                                  -251076;4;0;false;false;127;127;159;;;
                                  -251080;21;0;false;false;63;95;191;;;
                                  -251101;1;0;false;false;;;;;;
                                  -251102;1;0;false;false;127;127;159;;;
                                  -251103;1;0;false;false;;;;;;
                                  -251104;2;0;false;false;63;95;191;;;
                                  -251106;1;0;false;false;;;;;;
                                  -251107;3;0;false;false;63;95;191;;;
                                  -251110;1;0;false;false;;;;;;
                                  -251111;8;0;false;false;63;95;191;;;
                                  -251119;1;0;false;false;;;;;;
                                  -251120;3;0;false;false;63;95;191;;;
                                  -251123;1;0;false;false;;;;;;
                                  -251124;4;0;false;false;63;95;191;;;
                                  -251128;1;0;false;false;;;;;;
                                  -251129;8;0;false;false;63;95;191;;;
                                  -251137;5;0;false;false;127;127;159;;;
                                  -251142;3;0;false;false;;;;;;
                                  -251145;1;0;false;false;63;95;191;;;
                                  -251146;4;0;false;false;;;;;;
                                  -251150;4;0;false;false;127;127;159;;;
                                  -251154;27;0;false;false;63;95;191;;;
                                  -251181;1;0;false;false;;;;;;
                                  -251182;1;0;false;false;127;127;159;;;
                                  -251183;1;0;false;false;;;;;;
                                  -251184;2;0;false;false;63;95;191;;;
                                  -251186;1;0;false;false;;;;;;
                                  -251187;3;0;false;false;63;95;191;;;
                                  -251190;1;0;false;false;;;;;;
                                  -251191;6;0;false;false;63;95;191;;;
                                  -251197;1;0;false;false;;;;;;
                                  -251198;4;0;false;false;63;95;191;;;
                                  -251202;1;0;false;false;;;;;;
                                  -251203;3;0;false;false;63;95;191;;;
                                  -251206;1;0;false;false;;;;;;
                                  -251207;6;0;false;false;63;95;191;;;
                                  -251213;1;0;false;false;;;;;;
                                  -251214;4;0;false;false;63;95;191;;;
                                  -251218;1;0;false;false;;;;;;
                                  -251219;7;0;false;false;63;95;191;;;
                                  -251226;1;0;false;false;;;;;;
                                  -251227;3;0;false;false;63;95;191;;;
                                  -251230;1;0;false;false;;;;;;
                                  -251231;8;0;false;false;63;95;191;;;
                                  -251239;5;0;false;false;127;127;159;;;
                                  -251244;3;0;false;false;;;;;;
                                  -251247;1;0;false;false;63;95;191;;;
                                  -251248;1;0;false;false;;;;;;
                                  -251249;5;0;false;false;127;127;159;;;
                                  -251254;3;0;false;false;;;;;;
                                  -251257;1;0;false;false;63;95;191;;;
                                  -251258;1;0;false;false;;;;;;
                                  -251259;11;1;false;false;127;159;191;;;
                                  -251270;24;0;false;false;63;95;191;;;
                                  -251294;1;0;false;false;;;;;;
                                  -251295;4;0;false;false;127;127;159;;;
                                  -251299;3;0;false;false;;;;;;
                                  -251302;1;0;false;false;63;95;191;;;
                                  -251303;3;0;false;false;;;;;;
                                  -251306;4;0;false;false;127;127;159;;;
                                  -251310;19;0;false;false;63;95;191;;;
                                  -251329;1;0;false;false;;;;;;
                                  -251330;4;0;false;false;63;95;191;;;
                                  -251334;1;0;false;false;;;;;;
                                  -251335;3;0;false;false;63;95;191;;;
                                  -251338;1;0;false;false;;;;;;
                                  -251339;5;0;false;false;63;95;191;;;
                                  -251344;1;0;false;false;;;;;;
                                  -251345;5;0;false;false;63;95;191;;;
                                  -251350;1;0;false;false;;;;;;
                                  -251351;2;0;false;false;63;95;191;;;
                                  -251353;1;0;false;false;;;;;;
                                  -251354;7;0;false;false;63;95;191;;;
                                  -251361;1;0;false;false;;;;;;
                                  -251362;3;0;false;false;63;95;191;;;
                                  -251365;1;0;false;false;;;;;;
                                  -251366;5;0;false;false;63;95;191;;;
                                  -251371;1;0;false;false;;;;;;
                                  -251372;5;0;false;false;63;95;191;;;
                                  -251377;1;0;false;false;;;;;;
                                  -251378;2;0;false;false;63;95;191;;;
                                  -251380;1;0;false;false;;;;;;
                                  -251381;15;0;false;false;63;95;191;;;
                                  -251396;5;0;false;false;127;127;159;;;
                                  -251401;4;0;false;false;;;;;;
                                  -251405;1;0;false;false;63;95;191;;;
                                  -251406;1;0;false;false;;;;;;
                                  -251407;5;0;false;false;127;127;159;;;
                                  -251412;3;0;false;false;;;;;;
                                  -251415;2;0;false;false;63;95;191;;;
                                  -251417;2;0;false;false;;;;;;
                                  -251419;6;1;false;false;127;0;85;;;
                                  -251425;1;0;false;false;;;;;;
                                  -251426;4;1;false;false;127;0;85;;;
                                  -251430;1;0;false;false;;;;;;
                                  -251431;24;0;false;false;0;0;0;;;
                                  -251455;1;0;false;false;;;;;;
                                  -251456;6;0;false;false;0;0;0;;;
                                  -251462;1;0;false;false;;;;;;
                                  -251463;1;0;false;false;0;0;0;;;
                                  -251464;3;0;false;false;;;;;;
                                  -251467;14;0;false;false;0;0;0;;;
                                  -251481;6;0;false;false;;;;;;
                                  -251487;72;0;false;false;63;127;95;;;
                                  -251559;1;0;false;false;;;;;;
                                  -251560;2;1;false;false;127;0;85;;;
                                  -251562;1;0;false;false;;;;;;
                                  -251563;15;0;false;false;0;0;0;;;
                                  -251578;1;0;false;false;;;;;;
                                  -251579;1;0;false;false;0;0;0;;;
                                  -251580;4;0;false;false;;;;;;
                                  -251584;6;1;false;false;127;0;85;;;
                                  -251590;1;0;false;false;0;0;0;;;
                                  -251591;3;0;false;false;;;;;;
                                  -251594;1;0;false;false;0;0;0;;;
                                  -251595;4;0;false;false;;;;;;
                                  -251599;70;0;false;false;63;127;95;;;
                                  -251669;1;0;false;false;;;;;;
                                  -251670;2;1;false;false;127;0;85;;;
                                  -251672;1;0;false;false;;;;;;
                                  -251673;6;0;false;false;0;0;0;;;
                                  -251679;1;0;false;false;;;;;;
                                  -251680;2;0;false;false;0;0;0;;;
                                  -251682;1;0;false;false;;;;;;
                                  -251683;4;1;false;false;127;0;85;;;
                                  -251687;1;0;false;false;;;;;;
                                  -251688;2;0;false;false;0;0;0;;;
                                  -251690;1;0;false;false;;;;;;
                                  -251691;11;0;false;false;0;0;0;;;
                                  -251702;1;0;false;false;;;;;;
                                  -251703;1;0;false;false;0;0;0;;;
                                  -251704;1;0;false;false;;;;;;
                                  -251705;12;0;false;false;0;0;0;;;
                                  -251717;1;0;false;false;;;;;;
                                  -251718;1;0;false;false;0;0;0;;;
                                  -251719;1;0;false;false;;;;;;
                                  -251720;23;0;false;false;0;0;0;;;
                                  -251743;1;0;false;false;;;;;;
                                  -251744;1;0;false;false;0;0;0;;;
                                  -251745;4;0;false;false;;;;;;
                                  -251749;35;0;false;false;0;0;0;;;
                                  -251784;3;0;false;false;;;;;;
                                  -251787;1;0;false;false;0;0;0;;;
                                  -251788;5;0;false;false;;;;;;
                                  -251793;39;0;false;false;0;0;0;;;
                                  -251832;3;0;false;false;;;;;;
                                  -251835;2;1;false;false;127;0;85;;;
                                  -251837;1;0;false;false;;;;;;
                                  -251838;6;0;false;false;0;0;0;;;
                                  -251844;1;0;false;false;;;;;;
                                  -251845;2;0;false;false;0;0;0;;;
                                  -251847;1;0;false;false;;;;;;
                                  -251848;4;1;false;false;127;0;85;;;
                                  -251852;1;0;false;false;0;0;0;;;
                                  -251853;1;0;false;false;;;;;;
                                  -251854;1;0;false;false;0;0;0;;;
                                  -251855;4;0;false;false;;;;;;
                                  -251859;3;1;false;false;127;0;85;;;
                                  -251862;1;0;false;false;;;;;;
                                  -251863;9;0;false;false;0;0;0;;;
                                  -251872;1;0;false;false;;;;;;
                                  -251873;1;0;false;false;0;0;0;;;
                                  -251874;1;0;false;false;;;;;;
                                  -251875;37;0;false;false;0;0;0;;;
                                  -251912;4;0;false;false;;;;;;
                                  -251916;3;1;false;false;127;0;85;;;
                                  -251919;1;0;false;false;;;;;;
                                  -251920;8;0;false;false;0;0;0;;;
                                  -251928;1;0;false;false;;;;;;
                                  -251929;1;0;false;false;0;0;0;;;
                                  -251930;1;0;false;false;;;;;;
                                  -251931;35;0;false;false;0;0;0;;;
                                  -251966;1;0;false;false;;;;;;
                                  -251967;1;0;false;false;0;0;0;;;
                                  -251968;1;0;false;false;;;;;;
                                  -251969;14;0;false;false;0;0;0;;;
                                  -251983;4;0;false;false;;;;;;
                                  -251987;26;0;false;false;0;0;0;;;
                                  -252013;1;0;false;false;;;;;;
                                  -252014;8;0;false;false;0;0;0;;;
                                  -252022;1;0;false;false;;;;;;
                                  -252023;1;0;false;false;0;0;0;;;
                                  -252024;1;0;false;false;;;;;;
                                  -252025;9;0;false;false;0;0;0;;;
                                  -252034;1;0;false;false;;;;;;
                                  -252035;1;0;false;false;0;0;0;;;
                                  -252036;1;0;false;false;;;;;;
                                  -252037;2;0;false;false;0;0;0;;;
                                  -252039;1;0;false;false;;;;;;
                                  -252040;4;1;false;false;127;0;85;;;
                                  -252044;2;0;false;false;0;0;0;;;
                                  -252046;6;0;false;false;;;;;;
                                  -252052;60;0;false;false;63;127;95;;;
                                  -252112;2;0;false;false;;;;;;
                                  -252114;2;1;false;false;127;0;85;;;
                                  -252116;1;0;false;false;;;;;;
                                  -252117;25;0;false;false;0;0;0;;;
                                  -252142;1;0;false;false;;;;;;
                                  -252143;10;0;false;false;0;0;0;;;
                                  -252153;1;0;false;false;;;;;;
                                  -252154;1;0;false;false;0;0;0;;;
                                  -252155;5;0;false;false;;;;;;
                                  -252160;3;1;false;false;127;0;85;;;
                                  -252163;1;0;false;false;;;;;;
                                  -252164;7;0;false;false;0;0;0;;;
                                  -252171;1;0;false;false;;;;;;
                                  -252172;1;0;false;false;0;0;0;;;
                                  -252173;1;0;false;false;;;;;;
                                  -252174;9;0;false;false;0;0;0;;;
                                  -252183;1;0;false;false;;;;;;
                                  -252184;1;0;false;false;0;0;0;;;
                                  -252185;1;0;false;false;;;;;;
                                  -252186;10;0;false;false;0;0;0;;;
                                  -252196;1;0;false;false;;;;;;
                                  -252197;1;0;false;false;0;0;0;;;
                                  -252198;1;0;false;false;;;;;;
                                  -252199;21;0;false;false;0;0;0;;;
                                  -252220;5;0;false;false;;;;;;
                                  -252225;3;1;false;false;127;0;85;;;
                                  -252228;1;0;false;false;;;;;;
                                  -252229;11;0;false;false;0;0;0;;;
                                  -252240;1;0;false;false;;;;;;
                                  -252241;1;0;false;false;0;0;0;;;
                                  -252242;1;0;false;false;;;;;;
                                  -252243;9;0;false;false;0;0;0;;;
                                  -252252;1;0;false;false;;;;;;
                                  -252253;1;0;false;false;0;0;0;;;
                                  -252254;1;0;false;false;;;;;;
                                  -252255;2;0;false;false;0;0;0;;;
                                  -252257;1;0;false;false;;;;;;
                                  -252258;1;0;false;false;0;0;0;;;
                                  -252259;1;0;false;false;;;;;;
                                  -252260;10;0;false;false;0;0;0;;;
                                  -252270;1;0;false;false;;;;;;
                                  -252271;1;0;false;false;0;0;0;;;
                                  -252272;1;0;false;false;;;;;;
                                  -252273;21;0;false;false;0;0;0;;;
                                  -252294;7;0;false;false;;;;;;
                                  -252301;7;0;false;false;0;0;0;;;
                                  -252308;1;0;false;false;;;;;;
                                  -252309;8;0;false;false;0;0;0;;;
                                  -252317;1;0;false;false;;;;;;
                                  -252318;22;0;false;false;0;0;0;;;
                                  -252340;1;0;false;false;;;;;;
                                  -252341;11;0;false;false;0;0;0;;;
                                  -252352;1;0;false;false;;;;;;
                                  -252353;1;0;false;false;0;0;0;;;
                                  -252354;1;0;false;false;;;;;;
                                  -252355;8;0;false;false;0;0;0;;;
                                  -252363;1;0;false;false;;;;;;
                                  -252364;4;1;false;false;127;0;85;;;
                                  -252368;2;0;false;false;0;0;0;;;
                                  -252370;4;0;false;false;;;;;;
                                  -252374;1;0;false;false;0;0;0;;;
                                  -252375;3;0;false;false;;;;;;
                                  -252378;1;0;false;false;0;0;0;;;
                                  -252379;1;0;false;false;;;;;;
                                  -252380;4;1;false;false;127;0;85;;;
                                  -252384;1;0;false;false;;;;;;
                                  -252385;1;0;false;false;0;0;0;;;
                                  -252386;4;0;false;false;;;;;;
                                  -252390;24;0;false;false;63;127;95;;;
                                  -252414;2;0;false;false;;;;;;
                                  -252416;18;0;false;false;0;0;0;;;
                                  -252434;1;0;false;false;;;;;;
                                  -252435;23;0;false;false;0;0;0;;;
                                  -252458;1;0;false;false;;;;;;
                                  -252459;5;1;false;false;127;0;85;;;
                                  -252464;2;0;false;false;0;0;0;;;
                                  -252466;4;0;false;false;;;;;;
                                  -252470;9;0;false;false;0;0;0;;;
                                  -252479;3;0;false;false;;;;;;
                                  -252482;1;0;false;false;0;0;0;;;
                                  -252483;6;0;false;false;;;;;;
                                  -252489;54;0;false;false;63;127;95;;;
                                  -252543;1;0;false;false;;;;;;
                                  -252544;53;0;false;false;63;127;95;;;
                                  -252597;1;0;false;false;;;;;;
                                  -252598;18;0;false;false;63;127;95;;;
                                  -252616;1;0;false;false;;;;;;
                                  -252617;19;0;false;false;0;0;0;;;
                                  -252636;2;0;false;false;;;;;;
                                  -252638;1;0;false;false;0;0;0;;;
                                  -252639;2;0;false;false;;;;;;
                                  -252641;3;0;false;false;63;95;191;;;
                                  -252644;4;0;false;false;;;;;;
                                  -252648;1;0;false;false;63;95;191;;;
                                  -252649;1;0;false;false;;;;;;
                                  -252650;4;0;false;false;63;95;191;;;
                                  -252654;1;0;false;false;;;;;;
                                  -252655;6;0;false;false;63;95;191;;;
                                  -252661;1;0;false;false;;;;;;
                                  -252662;2;0;false;false;63;95;191;;;
                                  -252664;1;0;false;false;;;;;;
                                  -252665;2;0;false;false;63;95;191;;;
                                  -252667;1;0;false;false;;;;;;
                                  -252668;4;0;false;false;63;95;191;;;
                                  -252672;1;0;false;false;;;;;;
                                  -252673;3;0;false;false;63;95;191;;;
                                  -252676;1;0;false;false;;;;;;
                                  -252677;9;0;false;false;63;95;191;;;
                                  -252686;1;0;false;false;;;;;;
                                  -252687;3;0;false;false;63;95;191;;;
                                  -252690;1;0;false;false;;;;;;
                                  -252691;6;0;false;false;63;95;191;;;
                                  -252697;1;0;false;false;;;;;;
                                  -252698;8;0;false;false;63;95;191;;;
                                  -252706;1;0;false;false;;;;;;
                                  -252707;3;0;false;false;63;95;191;;;
                                  -252710;1;0;false;false;;;;;;
                                  -252711;6;0;false;false;63;95;191;;;
                                  -252717;4;0;false;false;;;;;;
                                  -252721;1;0;false;false;63;95;191;;;
                                  -252722;1;0;false;false;;;;;;
                                  -252723;2;0;false;false;63;95;191;;;
                                  -252725;1;0;false;false;;;;;;
                                  -252726;3;0;false;false;63;95;191;;;
                                  -252729;1;0;false;false;;;;;;
                                  -252730;6;0;false;false;63;95;191;;;
                                  -252736;1;0;false;false;;;;;;
                                  -252737;4;0;false;false;63;95;191;;;
                                  -252741;1;0;false;false;;;;;;
                                  -252742;2;0;false;false;63;95;191;;;
                                  -252744;1;0;false;false;;;;;;
                                  -252745;8;0;false;false;63;95;191;;;
                                  -252753;1;0;false;false;;;;;;
                                  -252754;4;0;false;false;63;95;191;;;
                                  -252758;1;0;false;false;;;;;;
                                  -252759;3;0;false;false;63;95;191;;;
                                  -252762;1;0;false;false;;;;;;
                                  -252763;5;0;false;false;63;95;191;;;
                                  -252768;1;0;false;false;;;;;;
                                  -252769;3;0;false;false;63;95;191;;;
                                  -252772;1;0;false;false;;;;;;
                                  -252773;2;0;false;false;63;95;191;;;
                                  -252775;1;0;false;false;;;;;;
                                  -252776;7;0;false;false;63;95;191;;;
                                  -252783;3;0;false;false;;;;;;
                                  -252786;1;0;false;false;63;95;191;;;
                                  -252787;1;0;false;false;;;;;;
                                  -252788;3;0;false;false;127;127;159;;;
                                  -252791;3;0;false;false;;;;;;
                                  -252794;1;0;false;false;63;95;191;;;
                                  -252795;1;0;false;false;;;;;;
                                  -252796;6;0;false;false;63;95;191;;;
                                  -252802;1;0;false;false;;;;;;
                                  -252803;3;0;false;false;63;95;191;;;
                                  -252806;1;0;false;false;;;;;;
                                  -252807;2;0;false;false;63;95;191;;;
                                  -252809;1;0;false;false;;;;;;
                                  -252810;6;0;false;false;63;95;191;;;
                                  -252816;1;0;false;false;;;;;;
                                  -252817;2;0;false;false;63;95;191;;;
                                  -252819;1;0;false;false;;;;;;
                                  -252820;1;0;false;false;63;95;191;;;
                                  -252821;1;0;false;false;;;;;;
                                  -252822;17;0;false;false;63;95;191;;;
                                  -252839;1;0;false;false;;;;;;
                                  -252840;3;0;false;false;63;95;191;;;
                                  -252843;1;0;false;false;;;;;;
                                  -252844;4;0;false;false;63;95;191;;;
                                  -252848;1;0;false;false;;;;;;
                                  -252849;3;0;false;false;63;95;191;;;
                                  -252852;1;0;false;false;;;;;;
                                  -252853;5;0;false;false;63;95;191;;;
                                  -252858;1;0;false;false;;;;;;
                                  -252859;3;0;false;false;63;95;191;;;
                                  -252862;4;0;false;false;;;;;;
                                  -252866;1;0;false;false;63;95;191;;;
                                  -252867;1;0;false;false;;;;;;
                                  -252868;8;0;false;false;63;95;191;;;
                                  -252876;1;0;false;false;;;;;;
                                  -252877;9;0;false;false;63;95;191;;;
                                  -252886;1;0;false;false;;;;;;
                                  -252887;3;0;false;false;63;95;191;;;
                                  -252890;1;0;false;false;;;;;;
                                  -252891;7;0;false;false;63;95;191;;;
                                  -252898;3;0;false;false;;;;;;
                                  -252901;1;0;false;false;63;95;191;;;
                                  -252902;1;0;false;false;;;;;;
                                  -252903;4;0;false;false;127;127;159;;;
                                  -252907;3;0;false;false;;;;;;
                                  -252910;1;0;false;false;63;95;191;;;
                                  -252911;3;0;false;false;;;;;;
                                  -252914;1;0;false;false;63;95;191;;;
                                  -252915;1;0;false;false;;;;;;
                                  -252916;7;1;false;false;127;159;191;;;
                                  -252923;6;0;false;false;63;95;191;;;
                                  -252929;1;0;false;false;;;;;;
                                  -252930;10;0;false;false;63;95;191;;;
                                  -252940;1;0;false;false;;;;;;
                                  -252941;7;0;false;false;63;95;191;;;
                                  -252948;1;0;false;false;;;;;;
                                  -252949;10;0;false;false;63;95;191;;;
                                  -252959;1;0;false;false;;;;;;
                                  -252960;3;0;false;false;63;95;191;;;
                                  -252963;1;0;false;false;;;;;;
                                  -252964;5;0;false;false;63;95;191;;;
                                  -252969;1;0;false;false;;;;;;
                                  -252970;12;0;false;false;63;95;191;;;
                                  -252982;3;0;false;false;;;;;;
                                  -252985;1;0;false;false;63;95;191;;;
                                  -252986;1;0;false;false;;;;;;
                                  -252987;3;0;false;false;63;95;191;;;
                                  -252990;1;0;false;false;;;;;;
                                  -252991;6;0;false;false;63;95;191;;;
                                  -252997;1;0;false;false;;;;;;
                                  -252998;6;0;false;false;63;95;191;;;
                                  -253004;1;0;false;false;;;;;;
                                  -253005;3;0;false;false;63;95;191;;;
                                  -253008;1;0;false;false;;;;;;
                                  -253009;8;0;false;false;63;95;191;;;
                                  -253017;1;0;false;false;;;;;;
                                  -253018;3;0;false;false;63;95;191;;;
                                  -253021;1;0;false;false;;;;;;
                                  -253022;5;0;false;false;63;95;191;;;
                                  -253027;1;0;false;false;;;;;;
                                  -253028;9;0;false;false;63;95;191;;;
                                  -253037;1;0;false;false;;;;;;
                                  -253038;2;0;false;false;63;95;191;;;
                                  -253040;1;0;false;false;;;;;;
                                  -253041;9;0;false;false;63;95;191;;;
                                  -253050;1;0;false;false;;;;;;
                                  -253051;2;0;false;false;63;95;191;;;
                                  -253053;4;0;false;false;;;;;;
                                  -253057;1;0;false;false;63;95;191;;;
                                  -253058;1;0;false;false;;;;;;
                                  -253059;3;0;false;false;63;95;191;;;
                                  -253062;1;0;false;false;;;;;;
                                  -253063;6;0;false;false;63;95;191;;;
                                  -253069;1;0;false;false;;;;;;
                                  -253070;2;0;false;false;63;95;191;;;
                                  -253072;1;0;false;false;;;;;;
                                  -253073;8;0;false;false;63;95;191;;;
                                  -253081;1;0;false;false;;;;;;
                                  -253082;4;0;false;false;63;95;191;;;
                                  -253086;1;0;false;false;;;;;;
                                  -253087;3;0;false;false;63;95;191;;;
                                  -253090;1;0;false;false;;;;;;
                                  -253091;2;0;false;false;63;95;191;;;
                                  -253093;1;0;false;false;;;;;;
                                  -253094;5;0;false;false;63;95;191;;;
                                  -253099;1;0;false;false;;;;;;
                                  -253100;3;0;false;false;63;95;191;;;
                                  -253103;1;0;false;false;;;;;;
                                  -253104;6;0;false;false;63;95;191;;;
                                  -253110;1;0;false;false;;;;;;
                                  -253111;4;0;false;false;63;95;191;;;
                                  -253115;1;0;false;false;;;;;;
                                  -253116;2;0;false;false;63;95;191;;;
                                  -253118;1;0;false;false;;;;;;
                                  -253119;2;0;false;false;63;95;191;;;
                                  -253121;1;0;false;false;;;;;;
                                  -253122;2;0;false;false;63;95;191;;;
                                  -253124;1;0;false;false;;;;;;
                                  -253125;6;0;false;false;63;95;191;;;
                                  -253131;3;0;false;false;;;;;;
                                  -253134;1;0;false;false;63;95;191;;;
                                  -253135;1;0;false;false;;;;;;
                                  -253136;11;1;false;false;127;159;191;;;
                                  -253147;12;0;false;false;63;95;191;;;
                                  -253159;1;0;false;false;;;;;;
                                  -253160;4;0;false;false;127;127;159;;;
                                  -253164;3;0;false;false;;;;;;
                                  -253167;1;0;false;false;63;95;191;;;
                                  -253168;4;0;false;false;;;;;;
                                  -253172;4;0;false;false;127;127;159;;;
                                  -253176;21;0;false;false;63;95;191;;;
                                  -253197;1;0;false;false;;;;;;
                                  -253198;1;0;false;false;127;127;159;;;
                                  -253199;1;0;false;false;;;;;;
                                  -253200;2;0;false;false;63;95;191;;;
                                  -253202;1;0;false;false;;;;;;
                                  -253203;3;0;false;false;63;95;191;;;
                                  -253206;1;0;false;false;;;;;;
                                  -253207;8;0;false;false;63;95;191;;;
                                  -253215;1;0;false;false;;;;;;
                                  -253216;3;0;false;false;63;95;191;;;
                                  -253219;1;0;false;false;;;;;;
                                  -253220;4;0;false;false;63;95;191;;;
                                  -253224;1;0;false;false;;;;;;
                                  -253225;8;0;false;false;63;95;191;;;
                                  -253233;5;0;false;false;127;127;159;;;
                                  -253238;3;0;false;false;;;;;;
                                  -253241;1;0;false;false;63;95;191;;;
                                  -253242;4;0;false;false;;;;;;
                                  -253246;4;0;false;false;127;127;159;;;
                                  -253250;27;0;false;false;63;95;191;;;
                                  -253277;1;0;false;false;;;;;;
                                  -253278;1;0;false;false;127;127;159;;;
                                  -253279;1;0;false;false;;;;;;
                                  -253280;2;0;false;false;63;95;191;;;
                                  -253282;1;0;false;false;;;;;;
                                  -253283;3;0;false;false;63;95;191;;;
                                  -253286;1;0;false;false;;;;;;
                                  -253287;6;0;false;false;63;95;191;;;
                                  -253293;1;0;false;false;;;;;;
                                  -253294;4;0;false;false;63;95;191;;;
                                  -253298;1;0;false;false;;;;;;
                                  -253299;3;0;false;false;63;95;191;;;
                                  -253302;1;0;false;false;;;;;;
                                  -253303;6;0;false;false;63;95;191;;;
                                  -253309;1;0;false;false;;;;;;
                                  -253310;4;0;false;false;63;95;191;;;
                                  -253314;1;0;false;false;;;;;;
                                  -253315;7;0;false;false;63;95;191;;;
                                  -253322;1;0;false;false;;;;;;
                                  -253323;3;0;false;false;63;95;191;;;
                                  -253326;1;0;false;false;;;;;;
                                  -253327;8;0;false;false;63;95;191;;;
                                  -253335;5;0;false;false;127;127;159;;;
                                  -253340;3;0;false;false;;;;;;
                                  -253343;1;0;false;false;63;95;191;;;
                                  -253344;1;0;false;false;;;;;;
                                  -253345;5;0;false;false;127;127;159;;;
                                  -253350;3;0;false;false;;;;;;
                                  -253353;1;0;false;false;63;95;191;;;
                                  -253354;1;0;false;false;;;;;;
                                  -253355;11;1;false;false;127;159;191;;;
                                  -253366;24;0;false;false;63;95;191;;;
                                  -253390;1;0;false;false;;;;;;
                                  -253391;4;0;false;false;127;127;159;;;
                                  -253395;3;0;false;false;;;;;;
                                  -253398;1;0;false;false;63;95;191;;;
                                  -253399;4;0;false;false;;;;;;
                                  -253403;4;0;false;false;127;127;159;;;
                                  -253407;19;0;false;false;63;95;191;;;
                                  -253426;1;0;false;false;;;;;;
                                  -253427;4;0;false;false;63;95;191;;;
                                  -253431;1;0;false;false;;;;;;
                                  -253432;8;0;false;false;63;95;191;;;
                                  -253440;1;0;false;false;;;;;;
                                  -253441;2;0;false;false;63;95;191;;;
                                  -253443;1;0;false;false;;;;;;
                                  -253444;4;0;false;false;63;95;191;;;
                                  -253448;5;0;false;false;127;127;159;;;
                                  -253453;3;0;false;false;;;;;;
                                  -253456;1;0;false;false;63;95;191;;;
                                  -253457;4;0;false;false;;;;;;
                                  -253461;4;0;false;false;127;127;159;;;
                                  -253465;19;0;false;false;63;95;191;;;
                                  -253484;1;0;false;false;;;;;;
                                  -253485;4;0;false;false;63;95;191;;;
                                  -253489;1;0;false;false;;;;;;
                                  -253490;3;0;false;false;63;95;191;;;
                                  -253493;1;0;false;false;;;;;;
                                  -253494;4;0;false;false;63;95;191;;;
                                  -253498;1;0;false;false;;;;;;
                                  -253499;2;0;false;false;63;95;191;;;
                                  -253501;1;0;false;false;;;;;;
                                  -253502;3;0;false;false;63;95;191;;;
                                  -253505;1;0;false;false;;;;;;
                                  -253506;5;0;false;false;63;95;191;;;
                                  -253511;1;0;false;false;;;;;;
                                  -253512;6;0;false;false;63;95;191;;;
                                  -253518;1;0;false;false;;;;;;
                                  -253519;2;0;false;false;63;95;191;;;
                                  -253521;1;0;false;false;;;;;;
                                  -253522;7;0;false;false;63;95;191;;;
                                  -253529;1;0;false;false;;;;;;
                                  -253530;3;0;false;false;63;95;191;;;
                                  -253533;1;0;false;false;;;;;;
                                  -253534;5;0;false;false;63;95;191;;;
                                  -253539;1;0;false;false;;;;;;
                                  -253540;5;0;false;false;63;95;191;;;
                                  -253545;1;0;false;false;;;;;;
                                  -253546;2;0;false;false;63;95;191;;;
                                  -253548;1;0;false;false;;;;;;
                                  -253549;15;0;false;false;63;95;191;;;
                                  -253564;5;0;false;false;127;127;159;;;
                                  -253569;4;0;false;false;;;;;;
                                  -253573;1;0;false;false;63;95;191;;;
                                  -253574;1;0;false;false;;;;;;
                                  -253575;5;0;false;false;127;127;159;;;
                                  -253580;3;0;false;false;;;;;;
                                  -253583;2;0;false;false;63;95;191;;;
                                  -253585;2;0;false;false;;;;;;
                                  -253587;6;1;false;false;127;0;85;;;
                                  -253593;1;0;false;false;;;;;;
                                  -253594;4;1;false;false;127;0;85;;;
                                  -253598;1;0;false;false;;;;;;
                                  -253599;27;0;false;false;0;0;0;;;
                                  -253626;1;0;false;false;;;;;;
                                  -253627;7;0;false;false;0;0;0;;;
                                  -253634;1;0;false;false;;;;;;
                                  -253635;1;0;false;false;0;0;0;;;
                                  -253636;3;0;false;false;;;;;;
                                  -253639;14;0;false;false;0;0;0;;;
                                  -253653;3;0;false;false;;;;;;
                                  -253656;72;0;false;false;63;127;95;;;
                                  -253728;1;0;false;false;;;;;;
                                  -253729;2;1;false;false;127;0;85;;;
                                  -253731;1;0;false;false;;;;;;
                                  -253732;15;0;false;false;0;0;0;;;
                                  -253747;1;0;false;false;;;;;;
                                  -253748;1;0;false;false;0;0;0;;;
                                  -253749;4;0;false;false;;;;;;
                                  -253753;6;1;false;false;127;0;85;;;
                                  -253759;1;0;false;false;0;0;0;;;
                                  -253760;3;0;false;false;;;;;;
                                  -253763;1;0;false;false;0;0;0;;;
                                  -253764;4;0;false;false;;;;;;
                                  -253768;2;1;false;false;127;0;85;;;
                                  -253770;1;0;false;false;;;;;;
                                  -253771;7;0;false;false;0;0;0;;;
                                  -253778;1;0;false;false;;;;;;
                                  -253779;2;0;false;false;0;0;0;;;
                                  -253781;1;0;false;false;;;;;;
                                  -253782;4;1;false;false;127;0;85;;;
                                  -253786;1;0;false;false;0;0;0;;;
                                  -253787;1;0;false;false;;;;;;
                                  -253788;1;0;false;false;0;0;0;;;
                                  -253789;5;0;false;false;;;;;;
                                  -253794;35;0;false;false;0;0;0;;;
                                  -253829;4;0;false;false;;;;;;
                                  -253833;1;0;false;false;0;0;0;;;
                                  -253834;4;0;false;false;;;;;;
                                  -253838;69;0;false;false;63;127;95;;;
                                  -253907;2;0;false;false;;;;;;
                                  -253909;18;0;false;false;63;127;95;;;
                                  -253927;2;0;false;false;;;;;;
                                  -253929;2;1;false;false;127;0;85;;;
                                  -253931;1;0;false;false;;;;;;
                                  -253932;14;0;false;false;0;0;0;;;
                                  -253946;1;0;false;false;;;;;;
                                  -253947;2;0;false;false;0;0;0;;;
                                  -253949;1;0;false;false;;;;;;
                                  -253950;2;0;false;false;0;0;0;;;
                                  -253952;1;0;false;false;;;;;;
                                  -253953;1;0;false;false;0;0;0;;;
                                  -253954;5;0;false;false;;;;;;
                                  -253959;10;0;false;false;0;0;0;;;
                                  -253969;1;0;false;false;;;;;;
                                  -253970;4;0;false;false;0;0;0;;;
                                  -253974;1;0;false;false;;;;;;
                                  -253975;1;0;false;false;0;0;0;;;
                                  -253976;1;0;false;false;;;;;;
                                  -253977;24;0;false;false;0;0;0;;;
                                  -254001;5;0;false;false;;;;;;
                                  -254006;3;1;false;false;127;0;85;;;
                                  -254009;1;0;false;false;;;;;;
                                  -254010;7;0;false;false;0;0;0;;;
                                  -254017;1;0;false;false;;;;;;
                                  -254018;1;0;false;false;0;0;0;;;
                                  -254019;1;0;false;false;;;;;;
                                  -254020;10;0;false;false;0;0;0;;;
                                  -254030;1;0;false;false;;;;;;
                                  -254031;1;0;false;false;0;0;0;;;
                                  -254032;1;0;false;false;;;;;;
                                  -254033;12;0;false;false;0;0;0;;;
                                  -254045;4;0;false;false;;;;;;
                                  -254049;3;1;false;false;127;0;85;;;
                                  -254052;1;0;false;false;;;;;;
                                  -254053;9;0;false;false;0;0;0;;;
                                  -254062;1;0;false;false;;;;;;
                                  -254063;1;0;false;false;0;0;0;;;
                                  -254064;1;0;false;false;;;;;;
                                  -254065;41;0;false;false;0;0;0;;;
                                  -254106;4;0;false;false;;;;;;
                                  -254110;3;1;false;false;127;0;85;;;
                                  -254113;1;0;false;false;;;;;;
                                  -254114;9;0;false;false;0;0;0;;;
                                  -254123;4;0;false;false;;;;;;
                                  -254127;2;1;false;false;127;0;85;;;
                                  -254129;1;0;false;false;;;;;;
                                  -254130;8;0;false;false;0;0;0;;;
                                  -254138;1;0;false;false;;;;;;
                                  -254139;1;0;false;false;0;0;0;;;
                                  -254140;1;0;false;false;;;;;;
                                  -254141;23;0;false;false;0;0;0;;;
                                  -254164;1;0;false;false;;;;;;
                                  -254165;1;0;false;false;0;0;0;;;
                                  -254166;5;0;false;false;;;;;;
                                  -254171;35;0;false;false;0;0;0;;;
                                  -254206;4;0;false;false;;;;;;
                                  -254210;1;0;false;false;0;0;0;;;
                                  -254211;6;0;false;false;;;;;;
                                  -254217;8;0;false;false;0;0;0;;;
                                  -254225;1;0;false;false;;;;;;
                                  -254226;1;0;false;false;0;0;0;;;
                                  -254227;1;0;false;false;;;;;;
                                  -254228;33;0;false;false;0;0;0;;;
                                  -254261;4;0;false;false;;;;;;
                                  -254265;49;0;false;false;63;127;95;;;
                                  -254314;2;0;false;false;;;;;;
                                  -254316;26;0;false;false;0;0;0;;;
                                  -254342;1;0;false;false;;;;;;
                                  -254343;8;0;false;false;0;0;0;;;
                                  -254351;1;0;false;false;;;;;;
                                  -254352;1;0;false;false;0;0;0;;;
                                  -254353;1;0;false;false;;;;;;
                                  -254354;9;0;false;false;0;0;0;;;
                                  -254363;1;0;false;false;;;;;;
                                  -254364;1;0;false;false;0;0;0;;;
                                  -254365;1;0;false;false;;;;;;
                                  -254366;2;0;false;false;0;0;0;;;
                                  -254368;1;0;false;false;;;;;;
                                  -254369;4;1;false;false;127;0;85;;;
                                  -254373;2;0;false;false;0;0;0;;;
                                  -254375;4;0;false;false;;;;;;
                                  -254379;1;0;false;false;0;0;0;;;
                                  -254380;4;0;false;false;;;;;;
                                  -254384;4;1;false;false;127;0;85;;;
                                  -254388;1;0;false;false;;;;;;
                                  -254389;1;0;false;false;0;0;0;;;
                                  -254390;4;0;false;false;;;;;;
                                  -254394;20;0;false;false;63;127;95;;;
                                  -254414;2;0;false;false;;;;;;
                                  -254416;18;0;false;false;0;0;0;;;
                                  -254434;1;0;false;false;;;;;;
                                  -254435;23;0;false;false;0;0;0;;;
                                  -254458;1;0;false;false;;;;;;
                                  -254459;5;1;false;false;127;0;85;;;
                                  -254464;2;0;false;false;0;0;0;;;
                                  -254466;4;0;false;false;;;;;;
                                  -254470;1;0;false;false;0;0;0;;;
                                  -254471;3;0;false;false;;;;;;
                                  -254474;41;0;false;false;0;0;0;;;
                                  -254515;3;0;false;false;;;;;;
                                  -254518;9;0;false;false;0;0;0;;;
                                  -254527;1;0;false;false;;;;;;
                                  -254528;55;0;false;false;63;127;95;;;
                                  -254583;1;0;false;false;;;;;;
                                  -254584;54;0;false;false;63;127;95;;;
                                  -254638;1;0;false;false;;;;;;
                                  -254639;53;0;false;false;63;127;95;;;
                                  -254692;1;0;false;false;;;;;;
                                  -254693;18;0;false;false;63;127;95;;;
                                  -254711;1;0;false;false;;;;;;
                                  -254712;19;0;false;false;0;0;0;;;
                                  -254731;2;0;false;false;;;;;;
                                  -254733;1;0;false;false;0;0;0;;;
                                  -254734;2;0;false;false;;;;;;
                                  -254736;3;0;false;false;63;95;191;;;
                                  -254739;4;0;false;false;;;;;;
                                  -254743;1;0;false;false;63;95;191;;;
                                  -254744;1;0;false;false;;;;;;
                                  -254745;4;0;false;false;63;95;191;;;
                                  -254749;1;0;false;false;;;;;;
                                  -254750;3;0;false;false;63;95;191;;;
                                  -254753;1;0;false;false;;;;;;
                                  -254754;3;0;false;false;63;95;191;;;
                                  -254757;1;0;false;false;;;;;;
                                  -254758;6;0;false;false;63;95;191;;;
                                  -254764;4;0;false;false;;;;;;
                                  -254768;1;0;false;false;63;95;191;;;
                                  -254769;1;0;false;false;;;;;;
                                  -254770;3;0;false;false;127;127;159;;;
                                  -254773;3;0;false;false;;;;;;
                                  -254776;1;0;false;false;63;95;191;;;
                                  -254777;3;0;false;false;;;;;;
                                  -254780;1;0;false;false;63;95;191;;;
                                  -254781;1;0;false;false;;;;;;
                                  -254782;7;1;false;false;127;159;191;;;
                                  -254789;4;0;false;false;63;95;191;;;
                                  -254793;1;0;false;false;;;;;;
                                  -254794;3;0;false;false;63;95;191;;;
                                  -254797;1;0;false;false;;;;;;
                                  -254798;5;0;false;false;63;95;191;;;
                                  -254803;1;0;false;false;;;;;;
                                  -254804;8;0;false;false;63;95;191;;;
                                  -254812;1;0;false;false;;;;;;
                                  -254813;2;0;false;false;63;95;191;;;
                                  -254815;1;0;false;false;;;;;;
                                  -254816;11;0;false;false;63;95;191;;;
                                  -254827;3;0;false;false;;;;;;
                                  -254830;1;0;false;false;63;95;191;;;
                                  -254831;1;0;false;false;;;;;;
                                  -254832;11;1;false;false;127;159;191;;;
                                  -254843;12;0;false;false;63;95;191;;;
                                  -254855;1;0;false;false;;;;;;
                                  -254856;4;0;false;false;127;127;159;;;
                                  -254860;3;0;false;false;;;;;;
                                  -254863;1;0;false;false;63;95;191;;;
                                  -254864;4;0;false;false;;;;;;
                                  -254868;4;0;false;false;127;127;159;;;
                                  -254872;21;0;false;false;63;95;191;;;
                                  -254893;1;0;false;false;;;;;;
                                  -254894;1;0;false;false;127;127;159;;;
                                  -254895;1;0;false;false;;;;;;
                                  -254896;2;0;false;false;63;95;191;;;
                                  -254898;1;0;false;false;;;;;;
                                  -254899;3;0;false;false;63;95;191;;;
                                  -254902;1;0;false;false;;;;;;
                                  -254903;8;0;false;false;63;95;191;;;
                                  -254911;1;0;false;false;;;;;;
                                  -254912;3;0;false;false;63;95;191;;;
                                  -254915;1;0;false;false;;;;;;
                                  -254916;4;0;false;false;63;95;191;;;
                                  -254920;1;0;false;false;;;;;;
                                  -254921;8;0;false;false;63;95;191;;;
                                  -254929;5;0;false;false;127;127;159;;;
                                  -254934;3;0;false;false;;;;;;
                                  -254937;1;0;false;false;63;95;191;;;
                                  -254938;4;0;false;false;;;;;;
                                  -254942;4;0;false;false;127;127;159;;;
                                  -254946;27;0;false;false;63;95;191;;;
                                  -254973;1;0;false;false;;;;;;
                                  -254974;1;0;false;false;127;127;159;;;
                                  -254975;1;0;false;false;;;;;;
                                  -254976;2;0;false;false;63;95;191;;;
                                  -254978;1;0;false;false;;;;;;
                                  -254979;3;0;false;false;63;95;191;;;
                                  -254982;1;0;false;false;;;;;;
                                  -254983;6;0;false;false;63;95;191;;;
                                  -254989;1;0;false;false;;;;;;
                                  -254990;4;0;false;false;63;95;191;;;
                                  -254994;1;0;false;false;;;;;;
                                  -254995;3;0;false;false;63;95;191;;;
                                  -254998;1;0;false;false;;;;;;
                                  -254999;6;0;false;false;63;95;191;;;
                                  -255005;1;0;false;false;;;;;;
                                  -255006;4;0;false;false;63;95;191;;;
                                  -255010;1;0;false;false;;;;;;
                                  -255011;7;0;false;false;63;95;191;;;
                                  -255018;1;0;false;false;;;;;;
                                  -255019;3;0;false;false;63;95;191;;;
                                  -255022;1;0;false;false;;;;;;
                                  -255023;8;0;false;false;63;95;191;;;
                                  -255031;5;0;false;false;127;127;159;;;
                                  -255036;3;0;false;false;;;;;;
                                  -255039;1;0;false;false;63;95;191;;;
                                  -255040;1;0;false;false;;;;;;
                                  -255041;5;0;false;false;127;127;159;;;
                                  -255046;3;0;false;false;;;;;;
                                  -255049;2;0;false;false;63;95;191;;;
                                  -255051;2;0;false;false;;;;;;
                                  -255053;6;1;false;false;127;0;85;;;
                                  -255059;1;0;false;false;;;;;;
                                  -255060;4;1;false;false;127;0;85;;;
                                  -255064;1;0;false;false;;;;;;
                                  -255065;8;0;false;false;0;0;0;;;
                                  -255073;3;1;false;false;127;0;85;;;
                                  -255076;1;0;false;false;;;;;;
                                  -255077;5;0;false;false;0;0;0;;;
                                  -255082;1;0;false;false;;;;;;
                                  -255083;1;0;false;false;0;0;0;;;
                                  -255084;3;0;false;false;;;;;;
                                  -255087;14;0;false;false;0;0;0;;;
                                  -255101;4;0;false;false;;;;;;
                                  -255105;9;0;false;false;0;0;0;;;
                                  -255114;1;0;false;false;;;;;;
                                  -255115;1;0;false;false;0;0;0;;;
                                  -255116;1;0;false;false;;;;;;
                                  -255117;5;0;false;false;0;0;0;;;
                                  -255122;3;0;false;false;;;;;;
                                  -255125;33;0;false;false;0;0;0;;;
                                  -255158;3;0;false;false;;;;;;
                                  -255161;2;1;false;false;127;0;85;;;
                                  -255163;1;0;false;false;;;;;;
                                  -255164;12;0;false;false;0;0;0;;;
                                  -255176;1;0;false;false;;;;;;
                                  -255177;1;0;false;false;0;0;0;;;
                                  -255178;1;0;false;false;;;;;;
                                  -255179;2;0;false;false;0;0;0;;;
                                  -255181;1;0;false;false;;;;;;
                                  -255182;1;0;false;false;0;0;0;;;
                                  -255183;4;0;false;false;;;;;;
                                  -255187;11;0;false;false;0;0;0;;;
                                  -255198;1;0;false;false;;;;;;
                                  -255199;1;0;false;false;0;0;0;;;
                                  -255200;1;0;false;false;;;;;;
                                  -255201;2;0;false;false;0;0;0;;;
                                  -255203;4;0;false;false;;;;;;
                                  -255207;12;0;false;false;0;0;0;;;
                                  -255219;4;0;false;false;;;;;;
                                  -255223;15;0;false;false;0;0;0;;;
                                  -255238;5;1;false;false;127;0;85;;;
                                  -255243;2;0;false;false;0;0;0;;;
                                  -255245;3;0;false;false;;;;;;
                                  -255248;1;0;false;false;0;0;0;;;
                                  -255249;3;0;false;false;;;;;;
                                  -255252;53;0;false;false;63;127;95;;;
                                  -255305;1;0;false;false;;;;;;
                                  -255306;18;0;false;false;0;0;0;;;
                                  -255324;1;0;false;false;;;;;;
                                  -255325;23;0;false;false;0;0;0;;;
                                  -255348;1;0;false;false;;;;;;
                                  -255349;5;1;false;false;127;0;85;;;
                                  -255354;2;0;false;false;0;0;0;;;
                                  -255356;3;0;false;false;;;;;;
                                  -255359;9;0;false;false;0;0;0;;;
                                  -255368;2;0;false;false;;;;;;
                                  -255370;1;0;false;false;0;0;0;;;
                                  -255371;2;0;false;false;;;;;;
                                  -255373;3;0;false;false;63;95;191;;;
                                  -255376;4;0;false;false;;;;;;
                                  -255380;1;0;false;false;63;95;191;;;
                                  -255381;1;0;false;false;;;;;;
                                  -255382;4;0;false;false;63;95;191;;;
                                  -255386;1;0;false;false;;;;;;
                                  -255387;3;0;false;false;63;95;191;;;
                                  -255390;1;0;false;false;;;;;;
                                  -255391;6;0;false;false;63;95;191;;;
                                  -255397;1;0;false;false;;;;;;
                                  -255398;8;0;false;false;63;95;191;;;
                                  -255406;4;0;false;false;;;;;;
                                  -255410;1;0;false;false;63;95;191;;;
                                  -255411;1;0;false;false;;;;;;
                                  -255412;2;0;false;false;63;95;191;;;
                                  -255414;1;0;false;false;;;;;;
                                  -255415;3;0;false;false;63;95;191;;;
                                  -255418;1;0;false;false;;;;;;
                                  -255419;6;0;false;false;63;95;191;;;
                                  -255425;1;0;false;false;;;;;;
                                  -255426;3;0;false;false;63;95;191;;;
                                  -255429;1;0;false;false;;;;;;
                                  -255430;3;0;false;false;63;95;191;;;
                                  -255433;1;0;false;false;;;;;;
                                  -255434;10;0;false;false;63;95;191;;;
                                  -255444;1;0;false;false;;;;;;
                                  -255445;5;0;false;false;63;95;191;;;
                                  -255450;1;0;false;false;;;;;;
                                  -255451;3;0;false;false;63;95;191;;;
                                  -255454;1;0;false;false;;;;;;
                                  -255455;6;0;false;false;63;95;191;;;
                                  -255461;1;0;false;false;;;;;;
                                  -255462;8;0;false;false;63;95;191;;;
                                  -255470;1;0;false;false;;;;;;
                                  -255471;4;0;false;false;63;95;191;;;
                                  -255475;1;0;false;false;;;;;;
                                  -255476;4;0;false;false;63;95;191;;;
                                  -255480;4;0;false;false;;;;;;
                                  -255484;1;0;false;false;63;95;191;;;
                                  -255485;1;0;false;false;;;;;;
                                  -255486;3;0;false;false;63;95;191;;;
                                  -255489;1;0;false;false;;;;;;
                                  -255490;5;0;false;false;63;95;191;;;
                                  -255495;1;0;false;false;;;;;;
                                  -255496;4;0;false;false;63;95;191;;;
                                  -255500;1;0;false;false;;;;;;
                                  -255501;3;0;false;false;63;95;191;;;
                                  -255504;1;0;false;false;;;;;;
                                  -255505;5;0;false;false;63;95;191;;;
                                  -255510;1;0;false;false;;;;;;
                                  -255511;4;0;false;false;63;95;191;;;
                                  -255515;1;0;false;false;;;;;;
                                  -255516;2;0;false;false;63;95;191;;;
                                  -255518;1;0;false;false;;;;;;
                                  -255519;8;0;false;false;63;95;191;;;
                                  -255527;1;0;false;false;;;;;;
                                  -255528;3;0;false;false;63;95;191;;;
                                  -255531;1;0;false;false;;;;;;
                                  -255532;3;0;false;false;63;95;191;;;
                                  -255535;1;0;false;false;;;;;;
                                  -255536;4;0;false;false;63;95;191;;;
                                  -255540;1;0;false;false;;;;;;
                                  -255541;2;0;false;false;63;95;191;;;
                                  -255543;1;0;false;false;;;;;;
                                  -255544;6;0;false;false;63;95;191;;;
                                  -255550;4;0;false;false;;;;;;
                                  -255554;1;0;false;false;63;95;191;;;
                                  -255555;1;0;false;false;;;;;;
                                  -255556;10;0;false;false;63;95;191;;;
                                  -255566;1;0;false;false;;;;;;
                                  -255567;1;0;false;false;63;95;191;;;
                                  -255568;1;0;false;false;;;;;;
                                  -255569;10;0;false;false;63;95;191;;;
                                  -255579;1;0;false;false;;;;;;
                                  -255580;4;0;false;false;63;95;191;;;
                                  -255584;1;0;false;false;;;;;;
                                  -255585;2;0;false;false;63;95;191;;;
                                  -255587;1;0;false;false;;;;;;
                                  -255588;7;0;false;false;63;95;191;;;
                                  -255595;1;0;false;false;;;;;;
                                  -255596;4;0;false;false;63;95;191;;;
                                  -255600;1;0;false;false;;;;;;
                                  -255601;6;0;false;false;63;95;191;;;
                                  -255607;1;0;false;false;;;;;;
                                  -255608;3;0;false;false;63;95;191;;;
                                  -255611;1;0;false;false;;;;;;
                                  -255612;4;0;false;false;63;95;191;;;
                                  -255616;1;0;false;false;;;;;;
                                  -255617;4;0;false;false;63;95;191;;;
                                  -255621;4;0;false;false;;;;;;
                                  -255625;1;0;false;false;63;95;191;;;
                                  -255626;1;0;false;false;;;;;;
                                  -255627;4;0;false;false;63;95;191;;;
                                  -255631;1;0;false;false;;;;;;
                                  -255632;3;0;false;false;63;95;191;;;
                                  -255635;1;0;false;false;;;;;;
                                  -255636;4;0;false;false;63;95;191;;;
                                  -255640;3;0;false;false;;;;;;
                                  -255643;1;0;false;false;63;95;191;;;
                                  -255644;1;0;false;false;;;;;;
                                  -255645;3;0;false;false;127;127;159;;;
                                  -255648;3;0;false;false;;;;;;
                                  -255651;1;0;false;false;63;95;191;;;
                                  -255652;1;0;false;false;;;;;;
                                  -255653;3;0;false;false;127;127;159;;;
                                  -255656;5;0;false;false;63;95;191;;;
                                  -255661;4;0;false;false;127;127;159;;;
                                  -255665;1;0;false;false;;;;;;
                                  -255666;4;0;false;false;63;95;191;;;
                                  -255670;1;0;false;false;;;;;;
                                  -255671;1;0;false;false;63;95;191;;;
                                  -255672;1;0;false;false;;;;;;
                                  -255673;6;0;false;false;63;95;191;;;
                                  -255679;1;0;false;false;;;;;;
                                  -255680;4;0;false;false;63;95;191;;;
                                  -255684;1;0;false;false;;;;;;
                                  -255685;2;0;false;false;63;95;191;;;
                                  -255687;1;0;false;false;;;;;;
                                  -255688;4;0;false;false;63;95;191;;;
                                  -255692;1;0;false;false;;;;;;
                                  -255693;6;0;false;false;63;95;191;;;
                                  -255699;1;0;false;false;;;;;;
                                  -255700;2;0;false;false;63;95;191;;;
                                  -255702;1;0;false;false;;;;;;
                                  -255703;3;0;false;false;63;95;191;;;
                                  -255706;1;0;false;false;;;;;;
                                  -255707;4;0;false;false;63;95;191;;;
                                  -255711;1;0;false;false;;;;;;
                                  -255712;3;0;false;false;63;95;191;;;
                                  -255715;1;0;false;false;;;;;;
                                  -255716;10;0;false;false;63;95;191;;;
                                  -255726;4;0;false;false;;;;;;
                                  -255730;1;0;false;false;63;95;191;;;
                                  -255731;1;0;false;false;;;;;;
                                  -255732;5;0;false;false;63;95;191;;;
                                  -255737;1;0;false;false;;;;;;
                                  -255738;2;0;false;false;63;95;191;;;
                                  -255740;1;0;false;false;;;;;;
                                  -255741;5;0;false;false;63;95;191;;;
                                  -255746;3;0;false;false;;;;;;
                                  -255749;1;0;false;false;63;95;191;;;
                                  -255750;1;0;false;false;;;;;;
                                  -255751;4;0;false;false;127;127;159;;;
                                  -255755;3;0;false;false;;;;;;
                                  -255758;1;0;false;false;63;95;191;;;
                                  -255759;3;0;false;false;;;;;;
                                  -255762;1;0;false;false;63;95;191;;;
                                  -255763;1;0;false;false;;;;;;
                                  -255764;7;1;false;false;127;159;191;;;
                                  -255771;4;0;false;false;63;95;191;;;
                                  -255775;1;0;false;false;;;;;;
                                  -255776;3;0;false;false;63;95;191;;;
                                  -255779;1;0;false;false;;;;;;
                                  -255780;6;0;false;false;63;95;191;;;
                                  -255786;1;0;false;false;;;;;;
                                  -255787;8;0;false;false;63;95;191;;;
                                  -255795;1;0;false;false;;;;;;
                                  -255796;8;0;false;false;63;95;191;;;
                                  -255804;1;0;false;false;;;;;;
                                  -255805;8;0;false;false;63;95;191;;;
                                  -255813;1;0;false;false;;;;;;
                                  -255814;8;0;false;false;63;95;191;;;
                                  -255822;1;0;false;false;;;;;;
                                  -255823;4;0;false;false;63;95;191;;;
                                  -255827;1;0;false;false;;;;;;
                                  -255828;6;0;false;false;63;95;191;;;
                                  -255834;4;0;false;false;;;;;;
                                  -255838;1;0;false;false;63;95;191;;;
                                  -255839;2;0;false;false;;;;;;
                                  -255841;4;0;false;false;63;95;191;;;
                                  -255845;1;0;false;false;;;;;;
                                  -255846;4;0;false;false;63;95;191;;;
                                  -255850;1;0;false;false;;;;;;
                                  -255851;3;0;false;false;63;95;191;;;
                                  -255854;1;0;false;false;;;;;;
                                  -255855;5;0;false;false;63;95;191;;;
                                  -255860;1;0;false;false;;;;;;
                                  -255861;10;0;false;false;63;95;191;;;
                                  -255871;1;0;false;false;;;;;;
                                  -255872;3;0;false;false;63;95;191;;;
                                  -255875;1;0;false;false;;;;;;
                                  -255876;3;0;false;false;63;95;191;;;
                                  -255879;1;0;false;false;;;;;;
                                  -255880;10;0;false;false;63;95;191;;;
                                  -255890;2;0;false;false;;;;;;
                                  -255892;3;0;false;false;63;95;191;;;
                                  -255895;3;0;false;false;;;;;;
                                  -255898;1;0;false;false;63;95;191;;;
                                  -255899;2;0;false;false;;;;;;
                                  -255901;7;0;false;false;63;95;191;;;
                                  -255908;1;0;false;false;;;;;;
                                  -255909;9;0;false;false;63;95;191;;;
                                  -255918;1;0;false;false;;;;;;
                                  -255919;2;0;false;false;63;95;191;;;
                                  -255921;1;0;false;false;;;;;;
                                  -255922;4;0;false;false;63;95;191;;;
                                  -255926;1;0;false;false;;;;;;
                                  -255927;10;0;false;false;63;95;191;;;
                                  -255937;3;0;false;false;;;;;;
                                  -255940;1;0;false;false;63;95;191;;;
                                  -255941;1;0;false;false;;;;;;
                                  -255942;11;1;false;false;127;159;191;;;
                                  -255953;12;0;false;false;63;95;191;;;
                                  -255965;1;0;false;false;;;;;;
                                  -255966;4;0;false;false;127;127;159;;;
                                  -255970;3;0;false;false;;;;;;
                                  -255973;1;0;false;false;63;95;191;;;
                                  -255974;4;0;false;false;;;;;;
                                  -255978;4;0;false;false;127;127;159;;;
                                  -255982;21;0;false;false;63;95;191;;;
                                  -256003;1;0;false;false;;;;;;
                                  -256004;1;0;false;false;127;127;159;;;
                                  -256005;1;0;false;false;;;;;;
                                  -256006;2;0;false;false;63;95;191;;;
                                  -256008;1;0;false;false;;;;;;
                                  -256009;3;0;false;false;63;95;191;;;
                                  -256012;1;0;false;false;;;;;;
                                  -256013;8;0;false;false;63;95;191;;;
                                  -256021;1;0;false;false;;;;;;
                                  -256022;3;0;false;false;63;95;191;;;
                                  -256025;1;0;false;false;;;;;;
                                  -256026;4;0;false;false;63;95;191;;;
                                  -256030;1;0;false;false;;;;;;
                                  -256031;8;0;false;false;63;95;191;;;
                                  -256039;5;0;false;false;127;127;159;;;
                                  -256044;3;0;false;false;;;;;;
                                  -256047;1;0;false;false;63;95;191;;;
                                  -256048;4;0;false;false;;;;;;
                                  -256052;4;0;false;false;127;127;159;;;
                                  -256056;27;0;false;false;63;95;191;;;
                                  -256083;1;0;false;false;;;;;;
                                  -256084;1;0;false;false;127;127;159;;;
                                  -256085;1;0;false;false;;;;;;
                                  -256086;2;0;false;false;63;95;191;;;
                                  -256088;1;0;false;false;;;;;;
                                  -256089;3;0;false;false;63;95;191;;;
                                  -256092;1;0;false;false;;;;;;
                                  -256093;6;0;false;false;63;95;191;;;
                                  -256099;1;0;false;false;;;;;;
                                  -256100;4;0;false;false;63;95;191;;;
                                  -256104;1;0;false;false;;;;;;
                                  -256105;3;0;false;false;63;95;191;;;
                                  -256108;1;0;false;false;;;;;;
                                  -256109;6;0;false;false;63;95;191;;;
                                  -256115;1;0;false;false;;;;;;
                                  -256116;4;0;false;false;63;95;191;;;
                                  -256120;1;0;false;false;;;;;;
                                  -256121;7;0;false;false;63;95;191;;;
                                  -256128;1;0;false;false;;;;;;
                                  -256129;3;0;false;false;63;95;191;;;
                                  -256132;1;0;false;false;;;;;;
                                  -256133;8;0;false;false;63;95;191;;;
                                  -256141;5;0;false;false;127;127;159;;;
                                  -256146;3;0;false;false;;;;;;
                                  -256149;1;0;false;false;63;95;191;;;
                                  -256150;1;0;false;false;;;;;;
                                  -256151;5;0;false;false;127;127;159;;;
                                  -256156;3;0;false;false;;;;;;
                                  -256159;1;0;false;false;63;95;191;;;
                                  -256160;1;0;false;false;;;;;;
                                  -256161;11;1;false;false;127;159;191;;;
                                  -256172;24;0;false;false;63;95;191;;;
                                  -256196;1;0;false;false;;;;;;
                                  -256197;4;0;false;false;127;127;159;;;
                                  -256201;3;0;false;false;;;;;;
                                  -256204;1;0;false;false;63;95;191;;;
                                  -256205;4;0;false;false;;;;;;
                                  -256209;4;0;false;false;127;127;159;;;
                                  -256213;19;0;false;false;63;95;191;;;
                                  -256232;1;0;false;false;;;;;;
                                  -256233;4;0;false;false;63;95;191;;;
                                  -256237;1;0;false;false;;;;;;
                                  -256238;6;0;false;false;63;95;191;;;
                                  -256244;1;0;false;false;;;;;;
                                  -256245;2;0;false;false;63;95;191;;;
                                  -256247;1;0;false;false;;;;;;
                                  -256248;4;0;false;false;63;95;191;;;
                                  -256252;5;0;false;false;127;127;159;;;
                                  -256257;3;0;false;false;;;;;;
                                  -256260;1;0;false;false;63;95;191;;;
                                  -256261;1;0;false;false;;;;;;
                                  -256262;5;0;false;false;127;127;159;;;
                                  -256267;3;0;false;false;;;;;;
                                  -256270;2;0;false;false;63;95;191;;;
                                  -256272;2;0;false;false;;;;;;
                                  -256274;6;1;false;false;127;0;85;;;
                                  -256280;1;0;false;false;;;;;;
                                  -256281;4;1;false;false;127;0;85;;;
                                  -256285;1;0;false;false;;;;;;
                                  -256286;14;0;false;false;0;0;0;;;
                                  -256300;1;0;false;false;;;;;;
                                  -256301;5;0;false;false;0;0;0;;;
                                  -256306;1;0;false;false;;;;;;
                                  -256307;1;0;false;false;0;0;0;;;
                                  -256308;3;0;false;false;;;;;;
                                  -256311;14;0;false;false;0;0;0;;;
                                  -256325;3;0;false;false;;;;;;
                                  -256328;5;0;false;false;0;0;0;;;
                                  -256333;1;0;false;false;;;;;;
                                  -256334;5;0;false;false;0;0;0;;;
                                  -256339;1;0;false;false;;;;;;
                                  -256340;1;0;false;false;0;0;0;;;
                                  -256341;1;0;false;false;;;;;;
                                  -256342;3;1;false;false;127;0;85;;;
                                  -256345;1;0;false;false;;;;;;
                                  -256346;8;0;false;false;0;0;0;;;
                                  -256354;6;0;false;false;;;;;;
                                  -256360;2;1;false;false;127;0;85;;;
                                  -256362;1;0;false;false;;;;;;
                                  -256363;5;0;false;false;0;0;0;;;
                                  -256368;1;0;false;false;;;;;;
                                  -256369;2;0;false;false;0;0;0;;;
                                  -256371;1;0;false;false;;;;;;
                                  -256372;4;1;false;false;127;0;85;;;
                                  -256376;1;0;false;false;0;0;0;;;
                                  -256377;1;0;false;false;;;;;;
                                  -256378;1;0;false;false;0;0;0;;;
                                  -256379;4;0;false;false;;;;;;
                                  -256383;35;0;false;false;0;0;0;;;
                                  -256418;3;0;false;false;;;;;;
                                  -256421;1;0;false;false;0;0;0;;;
                                  -256422;3;0;false;false;;;;;;
                                  -256425;11;0;false;false;0;0;0;;;
                                  -256436;1;0;false;false;;;;;;
                                  -256437;1;0;false;false;0;0;0;;;
                                  -256438;1;0;false;false;;;;;;
                                  -256439;2;0;false;false;0;0;0;;;
                                  -256441;3;0;false;false;;;;;;
                                  -256444;9;0;false;false;0;0;0;;;
                                  -256453;1;0;false;false;;;;;;
                                  -256454;1;0;false;false;0;0;0;;;
                                  -256455;1;0;false;false;;;;;;
                                  -256456;15;0;false;false;0;0;0;;;
                                  -256471;3;0;false;false;;;;;;
                                  -256474;10;0;false;false;0;0;0;;;
                                  -256484;1;0;false;false;;;;;;
                                  -256485;1;0;false;false;0;0;0;;;
                                  -256486;1;0;false;false;;;;;;
                                  -256487;5;0;false;false;0;0;0;;;
                                  -256492;3;0;false;false;;;;;;
                                  -256495;10;0;false;false;0;0;0;;;
                                  -256505;1;0;false;false;;;;;;
                                  -256506;1;0;false;false;0;0;0;;;
                                  -256507;1;0;false;false;;;;;;
                                  -256508;4;1;false;false;127;0;85;;;
                                  -256512;1;0;false;false;0;0;0;;;
                                  -256513;4;0;false;false;;;;;;
                                  -256517;27;0;false;false;0;0;0;;;
                                  -256544;1;0;false;false;;;;;;
                                  -256545;7;0;false;false;0;0;0;;;
                                  -256552;3;0;false;false;;;;;;
                                  -256555;2;1;false;false;127;0;85;;;
                                  -256557;1;0;false;false;;;;;;
                                  -256558;12;0;false;false;0;0;0;;;
                                  -256570;1;0;false;false;;;;;;
                                  -256571;1;0;false;false;0;0;0;;;
                                  -256572;4;0;false;false;;;;;;
                                  -256576;15;0;false;false;0;0;0;;;
                                  -256591;1;0;false;false;;;;;;
                                  -256592;15;0;false;false;0;0;0;;;
                                  -256607;1;0;false;false;;;;;;
                                  -256608;1;0;false;false;0;0;0;;;
                                  -256609;1;0;false;false;;;;;;
                                  -256610;4;1;false;false;127;0;85;;;
                                  -256614;1;0;false;false;0;0;0;;;
                                  -256615;8;0;false;false;;;;;;
                                  -256623;2;1;false;false;127;0;85;;;
                                  -256625;1;0;false;false;;;;;;
                                  -256626;29;0;false;false;0;0;0;;;
                                  -256655;1;0;false;false;;;;;;
                                  -256656;1;0;false;false;0;0;0;;;
                                  -256657;7;0;false;false;;;;;;
                                  -256664;15;0;false;false;0;0;0;;;
                                  -256679;1;0;false;false;;;;;;
                                  -256680;1;0;false;false;0;0;0;;;
                                  -256681;1;0;false;false;;;;;;
                                  -256682;3;1;false;false;127;0;85;;;
                                  -256685;1;0;false;false;;;;;;
                                  -256686;32;0;false;false;0;0;0;;;
                                  -256718;5;0;false;false;;;;;;
                                  -256723;21;0;false;false;0;0;0;;;
                                  -256744;1;0;false;false;;;;;;
                                  -256745;1;0;false;false;0;0;0;;;
                                  -256746;1;0;false;false;;;;;;
                                  -256747;12;0;false;false;0;0;0;;;
                                  -256759;5;0;false;false;;;;;;
                                  -256764;19;0;false;false;0;0;0;;;
                                  -256783;1;0;false;false;;;;;;
                                  -256784;1;0;false;false;0;0;0;;;
                                  -256785;1;0;false;false;;;;;;
                                  -256786;11;0;false;false;0;0;0;;;
                                  -256797;1;0;false;false;;;;;;
                                  -256798;1;0;false;false;0;0;0;;;
                                  -256799;1;0;false;false;;;;;;
                                  -256800;20;0;false;false;0;0;0;;;
                                  -256820;5;0;false;false;;;;;;
                                  -256825;20;0;false;false;0;0;0;;;
                                  -256845;1;0;false;false;;;;;;
                                  -256846;1;0;false;false;0;0;0;;;
                                  -256847;1;0;false;false;;;;;;
                                  -256848;33;0;false;false;0;0;0;;;
                                  -256881;1;0;false;false;;;;;;
                                  -256882;9;0;false;false;0;0;0;;;
                                  -256891;1;0;false;false;;;;;;
                                  -256892;1;0;false;false;0;0;0;;;
                                  -256893;1;0;false;false;;;;;;
                                  -256894;13;0;false;false;0;0;0;;;
                                  -256907;4;0;false;false;;;;;;
                                  -256911;1;0;false;false;0;0;0;;;
                                  -256912;4;0;false;false;;;;;;
                                  -256916;28;0;false;false;0;0;0;;;
                                  -256944;4;0;false;false;;;;;;
                                  -256948;23;0;false;false;0;0;0;;;
                                  -256971;5;0;false;false;;;;;;
                                  -256976;2;1;false;false;127;0;85;;;
                                  -256978;1;0;false;false;;;;;;
                                  -256979;16;0;false;false;0;0;0;;;
                                  -256995;1;0;false;false;;;;;;
                                  -256996;2;0;false;false;0;0;0;;;
                                  -256998;1;0;false;false;;;;;;
                                  -256999;4;1;false;false;127;0;85;;;
                                  -257003;1;0;false;false;0;0;0;;;
                                  -257004;1;0;false;false;;;;;;
                                  -257005;1;0;false;false;0;0;0;;;
                                  -257006;5;0;false;false;;;;;;
                                  -257011;31;0;false;false;0;0;0;;;
                                  -257042;1;0;false;false;;;;;;
                                  -257043;17;0;false;false;0;0;0;;;
                                  -257060;4;0;false;false;;;;;;
                                  -257064;1;0;false;false;0;0;0;;;
                                  -257065;3;0;false;false;;;;;;
                                  -257068;1;0;false;false;0;0;0;;;
                                  -257069;2;0;false;false;;;;;;
                                  -257071;1;0;false;false;0;0;0;;;
                                  -257072;2;0;false;false;;;;;;
                                  -257074;3;0;false;false;63;95;191;;;
                                  -257077;3;0;false;false;;;;;;
                                  -257080;1;0;false;false;63;95;191;;;
                                  -257081;1;0;false;false;;;;;;
                                  -257082;4;0;false;false;63;95;191;;;
                                  -257086;1;0;false;false;;;;;;
                                  -257087;3;0;false;false;63;95;191;;;
                                  -257090;1;0;false;false;;;;;;
                                  -257091;4;0;false;false;63;95;191;;;
                                  -257095;1;0;false;false;;;;;;
                                  -257096;5;0;false;false;63;95;191;;;
                                  -257101;1;0;false;false;;;;;;
                                  -257102;2;0;false;false;63;95;191;;;
                                  -257104;1;0;false;false;;;;;;
                                  -257105;3;0;false;false;63;95;191;;;
                                  -257108;1;0;false;false;;;;;;
                                  -257109;9;0;false;false;63;95;191;;;
                                  -257118;1;0;false;false;;;;;;
                                  -257119;6;0;false;false;63;95;191;;;
                                  -257125;1;0;false;false;;;;;;
                                  -257126;2;0;false;false;63;95;191;;;
                                  -257128;1;0;false;false;;;;;;
                                  -257129;11;0;false;false;63;95;191;;;
                                  -257140;3;0;false;false;;;;;;
                                  -257143;1;0;false;false;63;95;191;;;
                                  -257144;1;0;false;false;;;;;;
                                  -257145;3;0;false;false;127;127;159;;;
                                  -257148;3;0;false;false;;;;;;
                                  -257151;1;0;false;false;63;95;191;;;
                                  -257152;1;0;false;false;;;;;;
                                  -257153;3;0;false;false;63;95;191;;;
                                  -257156;1;0;false;false;;;;;;
                                  -257157;4;0;false;false;63;95;191;;;
                                  -257161;1;0;false;false;;;;;;
                                  -257162;5;0;false;false;63;95;191;;;
                                  -257167;1;0;false;false;;;;;;
                                  -257168;9;0;false;false;63;95;191;;;
                                  -257177;1;0;false;false;;;;;;
                                  -257178;3;0;false;false;63;95;191;;;
                                  -257181;1;0;false;false;;;;;;
                                  -257182;6;0;false;false;63;95;191;;;
                                  -257188;1;0;false;false;;;;;;
                                  -257189;2;0;false;false;63;95;191;;;
                                  -257191;1;0;false;false;;;;;;
                                  -257192;4;0;false;false;63;95;191;;;
                                  -257196;1;0;false;false;;;;;;
                                  -257197;4;0;false;false;63;95;191;;;
                                  -257201;3;0;false;false;;;;;;
                                  -257204;1;0;false;false;63;95;191;;;
                                  -257205;1;0;false;false;;;;;;
                                  -257206;3;0;false;false;63;95;191;;;
                                  -257209;1;0;false;false;;;;;;
                                  -257210;4;0;false;false;63;95;191;;;
                                  -257214;1;0;false;false;;;;;;
                                  -257215;3;0;false;false;63;95;191;;;
                                  -257218;1;0;false;false;;;;;;
                                  -257219;4;0;false;false;63;95;191;;;
                                  -257223;1;0;false;false;;;;;;
                                  -257224;4;0;false;false;63;95;191;;;
                                  -257228;1;0;false;false;;;;;;
                                  -257229;3;0;false;false;63;95;191;;;
                                  -257232;1;0;false;false;;;;;;
                                  -257233;7;0;false;false;63;95;191;;;
                                  -257240;3;0;false;false;;;;;;
                                  -257243;1;0;false;false;63;95;191;;;
                                  -257244;1;0;false;false;;;;;;
                                  -257245;4;0;false;false;127;127;159;;;
                                  -257249;3;0;false;false;;;;;;
                                  -257252;1;0;false;false;63;95;191;;;
                                  -257253;3;0;false;false;;;;;;
                                  -257256;1;0;false;false;63;95;191;;;
                                  -257257;1;0;false;false;;;;;;
                                  -257258;7;1;false;false;127;159;191;;;
                                  -257265;5;0;false;false;63;95;191;;;
                                  -257270;1;0;false;false;;;;;;
                                  -257271;3;0;false;false;63;95;191;;;
                                  -257274;1;0;false;false;;;;;;
                                  -257275;3;0;false;false;63;95;191;;;
                                  -257278;1;0;false;false;;;;;;
                                  -257279;4;0;false;false;63;95;191;;;
                                  -257283;1;0;false;false;;;;;;
                                  -257284;6;0;false;false;63;95;191;;;
                                  -257290;3;0;false;false;;;;;;
                                  -257293;1;0;false;false;63;95;191;;;
                                  -257294;1;0;false;false;;;;;;
                                  -257295;11;1;false;false;127;159;191;;;
                                  -257306;12;0;false;false;63;95;191;;;
                                  -257318;1;0;false;false;;;;;;
                                  -257319;4;0;false;false;127;127;159;;;
                                  -257323;3;0;false;false;;;;;;
                                  -257326;1;0;false;false;63;95;191;;;
                                  -257327;4;0;false;false;;;;;;
                                  -257331;4;0;false;false;127;127;159;;;
                                  -257335;21;0;false;false;63;95;191;;;
                                  -257356;1;0;false;false;;;;;;
                                  -257357;1;0;false;false;127;127;159;;;
                                  -257358;1;0;false;false;;;;;;
                                  -257359;2;0;false;false;63;95;191;;;
                                  -257361;1;0;false;false;;;;;;
                                  -257362;3;0;false;false;63;95;191;;;
                                  -257365;1;0;false;false;;;;;;
                                  -257366;8;0;false;false;63;95;191;;;
                                  -257374;1;0;false;false;;;;;;
                                  -257375;3;0;false;false;63;95;191;;;
                                  -257378;1;0;false;false;;;;;;
                                  -257379;4;0;false;false;63;95;191;;;
                                  -257383;1;0;false;false;;;;;;
                                  -257384;8;0;false;false;63;95;191;;;
                                  -257392;5;0;false;false;127;127;159;;;
                                  -257397;3;0;false;false;;;;;;
                                  -257400;1;0;false;false;63;95;191;;;
                                  -257401;4;0;false;false;;;;;;
                                  -257405;4;0;false;false;127;127;159;;;
                                  -257409;27;0;false;false;63;95;191;;;
                                  -257436;1;0;false;false;;;;;;
                                  -257437;1;0;false;false;127;127;159;;;
                                  -257438;1;0;false;false;;;;;;
                                  -257439;2;0;false;false;63;95;191;;;
                                  -257441;1;0;false;false;;;;;;
                                  -257442;3;0;false;false;63;95;191;;;
                                  -257445;1;0;false;false;;;;;;
                                  -257446;6;0;false;false;63;95;191;;;
                                  -257452;1;0;false;false;;;;;;
                                  -257453;4;0;false;false;63;95;191;;;
                                  -257457;1;0;false;false;;;;;;
                                  -257458;3;0;false;false;63;95;191;;;
                                  -257461;1;0;false;false;;;;;;
                                  -257462;6;0;false;false;63;95;191;;;
                                  -257468;1;0;false;false;;;;;;
                                  -257469;4;0;false;false;63;95;191;;;
                                  -257473;1;0;false;false;;;;;;
                                  -257474;7;0;false;false;63;95;191;;;
                                  -257481;1;0;false;false;;;;;;
                                  -257482;3;0;false;false;63;95;191;;;
                                  -257485;1;0;false;false;;;;;;
                                  -257486;8;0;false;false;63;95;191;;;
                                  -257494;5;0;false;false;127;127;159;;;
                                  -257499;3;0;false;false;;;;;;
                                  -257502;1;0;false;false;63;95;191;;;
                                  -257503;1;0;false;false;;;;;;
                                  -257504;5;0;false;false;127;127;159;;;
                                  -257509;3;0;false;false;;;;;;
                                  -257512;1;0;false;false;63;95;191;;;
                                  -257513;1;0;false;false;;;;;;
                                  -257514;11;1;false;false;127;159;191;;;
                                  -257525;24;0;false;false;63;95;191;;;
                                  -257549;1;0;false;false;;;;;;
                                  -257550;4;0;false;false;127;127;159;;;
                                  -257554;3;0;false;false;;;;;;
                                  -257557;1;0;false;false;63;95;191;;;
                                  -257558;3;0;false;false;;;;;;
                                  -257561;4;0;false;false;127;127;159;;;
                                  -257565;20;0;false;false;63;95;191;;;
                                  -257585;1;0;false;false;;;;;;
                                  -257586;4;0;false;false;63;95;191;;;
                                  -257590;1;0;false;false;;;;;;
                                  -257591;5;0;false;false;63;95;191;;;
                                  -257596;1;0;false;false;;;;;;
                                  -257597;2;0;false;false;63;95;191;;;
                                  -257599;1;0;false;false;;;;;;
                                  -257600;1;0;false;false;63;95;191;;;
                                  -257601;5;0;false;false;127;127;159;;;
                                  -257606;3;0;false;false;;;;;;
                                  -257609;1;0;false;false;63;95;191;;;
                                  -257610;1;0;false;false;;;;;;
                                  -257611;5;0;false;false;127;127;159;;;
                                  -257616;3;0;false;false;;;;;;
                                  -257619;2;0;false;false;63;95;191;;;
                                  -257621;2;0;false;false;;;;;;
                                  -257623;6;1;false;false;127;0;85;;;
                                  -257629;1;0;false;false;;;;;;
                                  -257630;4;1;false;false;127;0;85;;;
                                  -257634;1;0;false;false;;;;;;
                                  -257635;13;0;false;false;0;0;0;;;
                                  -257648;3;1;false;false;127;0;85;;;
                                  -257651;1;0;false;false;;;;;;
                                  -257652;6;0;false;false;0;0;0;;;
                                  -257658;1;0;false;false;;;;;;
                                  -257659;1;0;false;false;0;0;0;;;
                                  -257660;3;0;false;false;;;;;;
                                  -257663;14;0;false;false;0;0;0;;;
                                  -257677;3;0;false;false;;;;;;
                                  -257680;2;1;false;false;127;0;85;;;
                                  -257682;1;0;false;false;;;;;;
                                  -257683;6;0;false;false;0;0;0;;;
                                  -257689;1;0;false;false;;;;;;
                                  -257690;2;0;false;false;0;0;0;;;
                                  -257692;1;0;false;false;;;;;;
                                  -257693;2;0;false;false;0;0;0;;;
                                  -257695;1;0;false;false;;;;;;
                                  -257696;1;0;false;false;0;0;0;;;
                                  -257697;4;0;false;false;;;;;;
                                  -257701;36;0;false;false;0;0;0;;;
                                  -257737;3;0;false;false;;;;;;
                                  -257740;1;0;false;false;0;0;0;;;
                                  -257741;3;0;false;false;;;;;;
                                  -257744;9;0;false;false;0;0;0;;;
                                  -257753;1;0;false;false;;;;;;
                                  -257754;1;0;false;false;0;0;0;;;
                                  -257755;1;0;false;false;;;;;;
                                  -257756;6;0;false;false;0;0;0;;;
                                  -257762;2;0;false;false;;;;;;
                                  -257764;1;0;false;false;0;0;0;;;
                                  -257765;2;0;false;false;;;;;;
                                  -257767;3;0;false;false;63;95;191;;;
                                  -257770;3;0;false;false;;;;;;
                                  -257773;1;0;false;false;63;95;191;;;
                                  -257774;1;0;false;false;;;;;;
                                  -257775;4;0;false;false;63;95;191;;;
                                  -257779;1;0;false;false;;;;;;
                                  -257780;3;0;false;false;63;95;191;;;
                                  -257783;1;0;false;false;;;;;;
                                  -257784;3;0;false;false;63;95;191;;;
                                  -257787;1;0;false;false;;;;;;
                                  -257788;6;0;false;false;63;95;191;;;
                                  -257794;1;0;false;false;;;;;;
                                  -257795;2;0;false;false;63;95;191;;;
                                  -257797;1;0;false;false;;;;;;
                                  -257798;7;0;false;false;63;95;191;;;
                                  -257805;1;0;false;false;;;;;;
                                  -257806;2;0;false;false;63;95;191;;;
                                  -257808;1;0;false;false;;;;;;
                                  -257809;5;0;false;false;63;95;191;;;
                                  -257814;1;0;false;false;;;;;;
                                  -257815;2;0;false;false;63;95;191;;;
                                  -257817;1;0;false;false;;;;;;
                                  -257818;2;0;false;false;63;95;191;;;
                                  -257820;1;0;false;false;;;;;;
                                  -257821;4;0;false;false;63;95;191;;;
                                  -257825;1;0;false;false;;;;;;
                                  -257826;4;0;false;false;63;95;191;;;
                                  -257830;3;0;false;false;;;;;;
                                  -257833;1;0;false;false;63;95;191;;;
                                  -257834;1;0;false;false;;;;;;
                                  -257835;3;0;false;false;127;127;159;;;
                                  -257838;3;0;false;false;;;;;;
                                  -257841;1;0;false;false;63;95;191;;;
                                  -257842;1;0;false;false;;;;;;
                                  -257843;3;0;false;false;63;95;191;;;
                                  -257846;1;0;false;false;;;;;;
                                  -257847;3;0;false;false;63;95;191;;;
                                  -257850;1;0;false;false;;;;;;
                                  -257851;5;0;false;false;63;95;191;;;
                                  -257856;1;0;false;false;;;;;;
                                  -257857;2;0;false;false;63;95;191;;;
                                  -257859;1;0;false;false;;;;;;
                                  -257860;3;0;false;false;63;95;191;;;
                                  -257863;1;0;false;false;;;;;;
                                  -257864;5;0;false;false;63;95;191;;;
                                  -257869;1;0;false;false;;;;;;
                                  -257870;2;0;false;false;63;95;191;;;
                                  -257872;1;0;false;false;;;;;;
                                  -257873;3;0;false;false;63;95;191;;;
                                  -257876;1;0;false;false;;;;;;
                                  -257877;4;0;false;false;63;95;191;;;
                                  -257881;1;0;false;false;;;;;;
                                  -257882;4;0;false;false;63;95;191;;;
                                  -257886;1;0;false;false;;;;;;
                                  -257887;2;0;false;false;63;95;191;;;
                                  -257889;1;0;false;false;;;;;;
                                  -257890;9;0;false;false;63;95;191;;;
                                  -257899;1;0;false;false;;;;;;
                                  -257900;2;0;false;false;63;95;191;;;
                                  -257902;1;0;false;false;;;;;;
                                  -257903;3;0;false;false;63;95;191;;;
                                  -257906;1;0;false;false;;;;;;
                                  -257907;3;0;false;false;63;95;191;;;
                                  -257910;4;0;false;false;;;;;;
                                  -257914;1;0;false;false;63;95;191;;;
                                  -257915;1;0;false;false;;;;;;
                                  -257916;2;0;false;false;63;95;191;;;
                                  -257918;1;0;false;false;;;;;;
                                  -257919;3;0;false;false;63;95;191;;;
                                  -257922;1;0;false;false;;;;;;
                                  -257923;7;0;false;false;63;95;191;;;
                                  -257930;1;0;false;false;;;;;;
                                  -257931;3;0;false;false;63;95;191;;;
                                  -257934;1;0;false;false;;;;;;
                                  -257935;3;0;false;false;63;95;191;;;
                                  -257938;1;0;false;false;;;;;;
                                  -257939;5;0;false;false;63;95;191;;;
                                  -257944;1;0;false;false;;;;;;
                                  -257945;7;0;false;false;63;95;191;;;
                                  -257952;1;0;false;false;;;;;;
                                  -257953;4;0;false;false;63;95;191;;;
                                  -257957;1;0;false;false;;;;;;
                                  -257958;3;0;false;false;63;95;191;;;
                                  -257961;1;0;false;false;;;;;;
                                  -257962;6;0;false;false;63;95;191;;;
                                  -257968;1;0;false;false;;;;;;
                                  -257969;2;0;false;false;63;95;191;;;
                                  -257971;1;0;false;false;;;;;;
                                  -257972;9;0;false;false;63;95;191;;;
                                  -257981;3;0;false;false;;;;;;
                                  -257984;1;0;false;false;63;95;191;;;
                                  -257985;1;0;false;false;;;;;;
                                  -257986;8;0;false;false;63;95;191;;;
                                  -257994;1;0;false;false;;;;;;
                                  -257995;6;0;false;false;63;95;191;;;
                                  -258001;1;0;false;false;;;;;;
                                  -258002;4;0;false;false;63;95;191;;;
                                  -258006;1;0;false;false;;;;;;
                                  -258007;5;0;false;false;63;95;191;;;
                                  -258012;3;0;false;false;;;;;;
                                  -258015;1;0;false;false;63;95;191;;;
                                  -258016;1;0;false;false;;;;;;
                                  -258017;5;0;false;false;63;95;191;;;
                                  -258022;1;0;false;false;;;;;;
                                  -258023;3;0;false;false;63;95;191;;;
                                  -258026;1;0;false;false;;;;;;
                                  -258027;3;0;false;false;63;95;191;;;
                                  -258030;1;0;false;false;;;;;;
                                  -258031;5;0;false;false;63;95;191;;;
                                  -258036;1;0;false;false;;;;;;
                                  -258037;2;0;false;false;63;95;191;;;
                                  -258039;1;0;false;false;;;;;;
                                  -258040;5;0;false;false;63;95;191;;;
                                  -258045;1;0;false;false;;;;;;
                                  -258046;2;0;false;false;63;95;191;;;
                                  -258048;1;0;false;false;;;;;;
                                  -258049;1;0;false;false;63;95;191;;;
                                  -258050;1;0;false;false;;;;;;
                                  -258051;4;0;false;false;63;95;191;;;
                                  -258055;1;0;false;false;;;;;;
                                  -258056;3;0;false;false;63;95;191;;;
                                  -258059;1;0;false;false;;;;;;
                                  -258060;4;0;false;false;63;95;191;;;
                                  -258064;1;0;false;false;;;;;;
                                  -258065;2;0;false;false;63;95;191;;;
                                  -258067;1;0;false;false;;;;;;
                                  -258068;3;0;false;false;63;95;191;;;
                                  -258071;1;0;false;false;;;;;;
                                  -258072;2;0;false;false;63;95;191;;;
                                  -258074;1;0;false;false;;;;;;
                                  -258075;3;0;false;false;63;95;191;;;
                                  -258078;1;0;false;false;;;;;;
                                  -258079;7;0;false;false;63;95;191;;;
                                  -258086;3;0;false;false;;;;;;
                                  -258089;1;0;false;false;63;95;191;;;
                                  -258090;1;0;false;false;;;;;;
                                  -258091;4;0;false;false;127;127;159;;;
                                  -258095;3;0;false;false;;;;;;
                                  -258098;1;0;false;false;63;95;191;;;
                                  -258099;3;0;false;false;;;;;;
                                  -258102;1;0;false;false;63;95;191;;;
                                  -258103;1;0;false;false;;;;;;
                                  -258104;7;1;false;false;127;159;191;;;
                                  -258111;8;0;false;false;63;95;191;;;
                                  -258119;1;0;false;false;;;;;;
                                  -258120;3;0;false;false;63;95;191;;;
                                  -258123;1;0;false;false;;;;;;
                                  -258124;3;0;false;false;63;95;191;;;
                                  -258127;1;0;false;false;;;;;;
                                  -258128;6;0;false;false;63;95;191;;;
                                  -258134;1;0;false;false;;;;;;
                                  -258135;4;0;false;false;63;95;191;;;
                                  -258139;1;0;false;false;;;;;;
                                  -258140;2;0;false;false;63;95;191;;;
                                  -258142;1;0;false;false;;;;;;
                                  -258143;7;0;false;false;63;95;191;;;
                                  -258150;1;0;false;false;;;;;;
                                  -258151;1;0;false;false;63;95;191;;;
                                  -258152;1;0;false;false;;;;;;
                                  -258153;3;0;false;false;63;95;191;;;
                                  -258156;4;0;false;false;;;;;;
                                  -258160;1;0;false;false;63;95;191;;;
                                  -258161;2;0;false;false;;;;;;
                                  -258163;14;0;false;false;63;95;191;;;
                                  -258177;1;0;false;false;;;;;;
                                  -258178;1;0;false;false;127;127;159;;;
                                  -258179;1;0;false;false;;;;;;
                                  -258180;5;0;false;false;63;95;191;;;
                                  -258185;1;0;false;false;;;;;;
                                  -258186;7;0;false;false;63;95;191;;;
                                  -258193;1;0;false;false;;;;;;
                                  -258194;5;0;false;false;63;95;191;;;
                                  -258199;1;0;false;false;;;;;;
                                  -258200;3;0;false;false;63;95;191;;;
                                  -258203;1;0;false;false;;;;;;
                                  -258204;5;0;false;false;63;95;191;;;
                                  -258209;1;0;false;false;;;;;;
                                  -258210;2;0;false;false;63;95;191;;;
                                  -258212;1;0;false;false;;;;;;
                                  -258213;2;0;false;false;63;95;191;;;
                                  -258215;1;0;false;false;;;;;;
                                  -258216;5;0;false;false;63;95;191;;;
                                  -258221;1;0;false;false;;;;;;
                                  -258222;3;0;false;false;63;95;191;;;
                                  -258225;1;0;false;false;;;;;;
                                  -258226;5;0;false;false;63;95;191;;;
                                  -258231;4;0;false;false;;;;;;
                                  -258235;1;0;false;false;63;95;191;;;
                                  -258236;2;0;false;false;;;;;;
                                  -258238;7;0;false;false;63;95;191;;;
                                  -258245;1;0;false;false;;;;;;
                                  -258246;3;0;false;false;63;95;191;;;
                                  -258249;1;0;false;false;;;;;;
                                  -258250;7;0;false;false;63;95;191;;;
                                  -258257;1;0;false;false;;;;;;
                                  -258258;5;0;false;false;63;95;191;;;
                                  -258263;1;0;false;false;;;;;;
                                  -258264;2;0;false;false;63;95;191;;;
                                  -258266;1;0;false;false;;;;;;
                                  -258267;14;0;false;false;63;95;191;;;
                                  -258281;1;0;false;false;;;;;;
                                  -258282;1;0;false;false;127;127;159;;;
                                  -258283;1;0;false;false;;;;;;
                                  -258284;2;0;false;false;63;95;191;;;
                                  -258286;1;0;false;false;;;;;;
                                  -258287;2;0;false;false;63;95;191;;;
                                  -258289;1;0;false;false;;;;;;
                                  -258290;3;0;false;false;63;95;191;;;
                                  -258293;1;0;false;false;;;;;;
                                  -258294;2;0;false;false;63;95;191;;;
                                  -258296;1;0;false;false;;;;;;
                                  -258297;5;0;false;false;63;95;191;;;
                                  -258302;4;0;false;false;;;;;;
                                  -258306;1;0;false;false;63;95;191;;;
                                  -258307;2;0;false;false;;;;;;
                                  -258309;5;0;false;false;63;95;191;;;
                                  -258314;1;0;false;false;;;;;;
                                  -258315;4;0;false;false;63;95;191;;;
                                  -258319;1;0;false;false;;;;;;
                                  -258320;2;0;false;false;63;95;191;;;
                                  -258322;1;0;false;false;;;;;;
                                  -258323;8;0;false;false;63;95;191;;;
                                  -258331;1;0;false;false;;;;;;
                                  -258332;12;0;false;false;63;95;191;;;
                                  -258344;3;0;false;false;;;;;;
                                  -258347;1;0;false;false;63;95;191;;;
                                  -258348;1;0;false;false;;;;;;
                                  -258349;11;1;false;false;127;159;191;;;
                                  -258360;12;0;false;false;63;95;191;;;
                                  -258372;1;0;false;false;;;;;;
                                  -258373;4;0;false;false;127;127;159;;;
                                  -258377;3;0;false;false;;;;;;
                                  -258380;1;0;false;false;63;95;191;;;
                                  -258381;4;0;false;false;;;;;;
                                  -258385;4;0;false;false;127;127;159;;;
                                  -258389;21;0;false;false;63;95;191;;;
                                  -258410;1;0;false;false;;;;;;
                                  -258411;1;0;false;false;127;127;159;;;
                                  -258412;1;0;false;false;;;;;;
                                  -258413;2;0;false;false;63;95;191;;;
                                  -258415;1;0;false;false;;;;;;
                                  -258416;3;0;false;false;63;95;191;;;
                                  -258419;1;0;false;false;;;;;;
                                  -258420;8;0;false;false;63;95;191;;;
                                  -258428;1;0;false;false;;;;;;
                                  -258429;3;0;false;false;63;95;191;;;
                                  -258432;1;0;false;false;;;;;;
                                  -258433;4;0;false;false;63;95;191;;;
                                  -258437;1;0;false;false;;;;;;
                                  -258438;8;0;false;false;63;95;191;;;
                                  -258446;5;0;false;false;127;127;159;;;
                                  -258451;3;0;false;false;;;;;;
                                  -258454;1;0;false;false;63;95;191;;;
                                  -258455;4;0;false;false;;;;;;
                                  -258459;4;0;false;false;127;127;159;;;
                                  -258463;27;0;false;false;63;95;191;;;
                                  -258490;1;0;false;false;;;;;;
                                  -258491;1;0;false;false;127;127;159;;;
                                  -258492;1;0;false;false;;;;;;
                                  -258493;2;0;false;false;63;95;191;;;
                                  -258495;1;0;false;false;;;;;;
                                  -258496;3;0;false;false;63;95;191;;;
                                  -258499;1;0;false;false;;;;;;
                                  -258500;6;0;false;false;63;95;191;;;
                                  -258506;1;0;false;false;;;;;;
                                  -258507;4;0;false;false;63;95;191;;;
                                  -258511;1;0;false;false;;;;;;
                                  -258512;3;0;false;false;63;95;191;;;
                                  -258515;1;0;false;false;;;;;;
                                  -258516;6;0;false;false;63;95;191;;;
                                  -258522;1;0;false;false;;;;;;
                                  -258523;4;0;false;false;63;95;191;;;
                                  -258527;1;0;false;false;;;;;;
                                  -258528;7;0;false;false;63;95;191;;;
                                  -258535;1;0;false;false;;;;;;
                                  -258536;3;0;false;false;63;95;191;;;
                                  -258539;1;0;false;false;;;;;;
                                  -258540;8;0;false;false;63;95;191;;;
                                  -258548;5;0;false;false;127;127;159;;;
                                  -258553;3;0;false;false;;;;;;
                                  -258556;1;0;false;false;63;95;191;;;
                                  -258557;1;0;false;false;;;;;;
                                  -258558;5;0;false;false;127;127;159;;;
                                  -258563;3;0;false;false;;;;;;
                                  -258566;2;0;false;false;63;95;191;;;
                                  -258568;2;0;false;false;;;;;;
                                  -258570;6;1;false;false;127;0;85;;;
                                  -258576;1;0;false;false;;;;;;
                                  -258577;4;1;false;false;127;0;85;;;
                                  -258581;1;0;false;false;;;;;;
                                  -258582;12;0;false;false;0;0;0;;;
                                  -258594;3;1;false;false;127;0;85;;;
                                  -258597;1;0;false;false;;;;;;
                                  -258598;9;0;false;false;0;0;0;;;
                                  -258607;1;0;false;false;;;;;;
                                  -258608;1;0;false;false;0;0;0;;;
                                  -258609;3;0;false;false;;;;;;
                                  -258612;14;0;false;false;0;0;0;;;
                                  -258626;3;0;false;false;;;;;;
                                  -258629;3;1;false;false;127;0;85;;;
                                  -258632;1;0;false;false;;;;;;
                                  -258633;9;0;false;false;0;0;0;;;
                                  -258642;1;0;false;false;;;;;;
                                  -258643;1;0;false;false;0;0;0;;;
                                  -258644;1;0;false;false;;;;;;
                                  -258645;30;0;false;false;0;0;0;;;
                                  -258675;3;0;false;false;;;;;;
                                  -258678;3;1;false;false;127;0;85;;;
                                  -258681;1;0;false;false;;;;;;
                                  -258682;8;0;false;false;0;0;0;;;
                                  -258690;1;0;false;false;;;;;;
                                  -258691;1;0;false;false;0;0;0;;;
                                  -258692;1;0;false;false;;;;;;
                                  -258693;11;0;false;false;0;0;0;;;
                                  -258704;1;0;false;false;;;;;;
                                  -258705;19;0;false;false;0;0;0;;;
                                  -258724;1;0;false;false;;;;;;
                                  -258725;22;0;false;false;0;0;0;;;
                                  -258747;6;0;false;false;;;;;;
                                  -258753;2;1;false;false;127;0;85;;;
                                  -258755;1;0;false;false;;;;;;
                                  -258756;15;0;false;false;0;0;0;;;
                                  -258771;1;0;false;false;;;;;;
                                  -258772;2;0;false;false;0;0;0;;;
                                  -258774;1;0;false;false;;;;;;
                                  -258775;2;0;false;false;0;0;0;;;
                                  -258777;1;0;false;false;;;;;;
                                  -258778;1;0;false;false;0;0;0;;;
                                  -258779;4;0;false;false;;;;;;
                                  -258783;6;1;false;false;127;0;85;;;
                                  -258789;1;0;false;false;0;0;0;;;
                                  -258790;3;0;false;false;;;;;;
                                  -258793;1;0;false;false;0;0;0;;;
                                  -258794;4;0;false;false;;;;;;
                                  -258798;2;1;false;false;127;0;85;;;
                                  -258800;1;0;false;false;;;;;;
                                  -258801;9;0;false;false;0;0;0;;;
                                  -258810;1;0;false;false;;;;;;
                                  -258811;1;0;false;false;0;0;0;;;
                                  -258812;1;0;false;false;;;;;;
                                  -258813;2;0;false;false;0;0;0;;;
                                  -258815;1;0;false;false;;;;;;
                                  -258816;1;0;false;false;0;0;0;;;
                                  -258817;4;0;false;false;;;;;;
                                  -258821;8;0;false;false;0;0;0;;;
                                  -258829;1;0;false;false;;;;;;
                                  -258830;1;0;false;false;0;0;0;;;
                                  -258831;1;0;false;false;;;;;;
                                  -258832;2;0;false;false;0;0;0;;;
                                  -258834;3;0;false;false;;;;;;
                                  -258837;1;0;false;false;0;0;0;;;
                                  -258838;3;0;false;false;;;;;;
                                  -258841;4;1;false;false;127;0;85;;;
                                  -258845;4;0;false;false;;;;;;
                                  -258849;2;1;false;false;127;0;85;;;
                                  -258851;1;0;false;false;;;;;;
                                  -258852;9;0;false;false;0;0;0;;;
                                  -258861;1;0;false;false;;;;;;
                                  -258862;1;0;false;false;0;0;0;;;
                                  -258863;1;0;false;false;;;;;;
                                  -258864;9;0;false;false;0;0;0;;;
                                  -258873;1;0;false;false;;;;;;
                                  -258874;1;0;false;false;0;0;0;;;
                                  -258875;1;0;false;false;;;;;;
                                  -258876;9;0;false;false;0;0;0;;;
                                  -258885;1;0;false;false;;;;;;
                                  -258886;1;0;false;false;0;0;0;;;
                                  -258887;4;0;false;false;;;;;;
                                  -258891;8;0;false;false;0;0;0;;;
                                  -258899;1;0;false;false;;;;;;
                                  -258900;1;0;false;false;0;0;0;;;
                                  -258901;1;0;false;false;;;;;;
                                  -258902;9;0;false;false;0;0;0;;;
                                  -258911;1;0;false;false;;;;;;
                                  -258912;1;0;false;false;0;0;0;;;
                                  -258913;1;0;false;false;;;;;;
                                  -258914;9;0;false;false;0;0;0;;;
                                  -258923;3;0;false;false;;;;;;
                                  -258926;1;0;false;false;0;0;0;;;
                                  -258927;3;0;false;false;;;;;;
                                  -258930;2;1;false;false;127;0;85;;;
                                  -258932;1;0;false;false;;;;;;
                                  -258933;10;0;false;false;0;0;0;;;
                                  -258943;1;0;false;false;;;;;;
                                  -258944;1;0;false;false;0;0;0;;;
                                  -258945;4;0;false;false;;;;;;
                                  -258949;3;1;false;false;127;0;85;;;
                                  -258952;1;0;false;false;;;;;;
                                  -258953;17;0;false;false;0;0;0;;;
                                  -258970;1;0;false;false;;;;;;
                                  -258971;1;0;false;false;0;0;0;;;
                                  -258972;1;0;false;false;;;;;;
                                  -258973;41;0;false;false;0;0;0;;;
                                  -259014;4;0;false;false;;;;;;
                                  -259018;8;0;false;false;0;0;0;;;
                                  -259026;1;0;false;false;;;;;;
                                  -259027;1;0;false;false;0;0;0;;;
                                  -259028;1;0;false;false;;;;;;
                                  -259029;43;0;false;false;0;0;0;;;
                                  -259072;3;0;false;false;;;;;;
                                  -259075;1;0;false;false;0;0;0;;;
                                  -259076;3;0;false;false;;;;;;
                                  -259079;32;0;false;false;0;0;0;;;
                                  -259111;1;0;false;false;;;;;;
                                  -259112;1;0;false;false;0;0;0;;;
                                  -259113;1;0;false;false;;;;;;
                                  -259114;23;0;false;false;0;0;0;;;
                                  -259137;1;0;false;false;;;;;;
                                  -259138;4;1;false;false;127;0;85;;;
                                  -259142;2;0;false;false;0;0;0;;;
                                  -259144;2;0;false;false;;;;;;
                                  -259146;1;0;false;false;0;0;0;;;
                                  -259147;2;0;false;false;;;;;;
                                  -259149;3;0;false;false;63;95;191;;;
                                  -259152;3;0;false;false;;;;;;
                                  -259155;1;0;false;false;63;95;191;;;
                                  -259156;1;0;false;false;;;;;;
                                  -259157;4;0;false;false;63;95;191;;;
                                  -259161;1;0;false;false;;;;;;
                                  -259162;3;0;false;false;63;95;191;;;
                                  -259165;1;0;false;false;;;;;;
                                  -259166;3;0;false;false;63;95;191;;;
                                  -259169;1;0;false;false;;;;;;
                                  -259170;5;0;false;false;63;95;191;;;
                                  -259175;1;0;false;false;;;;;;
                                  -259176;7;0;false;false;63;95;191;;;
                                  -259183;1;0;false;false;;;;;;
                                  -259184;2;0;false;false;63;95;191;;;
                                  -259186;1;0;false;false;;;;;;
                                  -259187;7;0;false;false;63;95;191;;;
                                  -259194;1;0;false;false;;;;;;
                                  -259195;2;0;false;false;63;95;191;;;
                                  -259197;1;0;false;false;;;;;;
                                  -259198;5;0;false;false;63;95;191;;;
                                  -259203;1;0;false;false;;;;;;
                                  -259204;2;0;false;false;63;95;191;;;
                                  -259206;1;0;false;false;;;;;;
                                  -259207;2;0;false;false;63;95;191;;;
                                  -259209;1;0;false;false;;;;;;
                                  -259210;4;0;false;false;63;95;191;;;
                                  -259214;1;0;false;false;;;;;;
                                  -259215;4;0;false;false;63;95;191;;;
                                  -259219;3;0;false;false;;;;;;
                                  -259222;1;0;false;false;63;95;191;;;
                                  -259223;1;0;false;false;;;;;;
                                  -259224;3;0;false;false;127;127;159;;;
                                  -259227;3;0;false;false;;;;;;
                                  -259230;1;0;false;false;63;95;191;;;
                                  -259231;1;0;false;false;;;;;;
                                  -259232;3;0;false;false;63;95;191;;;
                                  -259235;1;0;false;false;;;;;;
                                  -259236;3;0;false;false;63;95;191;;;
                                  -259239;1;0;false;false;;;;;;
                                  -259240;5;0;false;false;63;95;191;;;
                                  -259245;1;0;false;false;;;;;;
                                  -259246;6;0;false;false;63;95;191;;;
                                  -259252;1;0;false;false;;;;;;
                                  -259253;2;0;false;false;63;95;191;;;
                                  -259255;1;0;false;false;;;;;;
                                  -259256;3;0;false;false;63;95;191;;;
                                  -259259;1;0;false;false;;;;;;
                                  -259260;8;0;false;false;63;95;191;;;
                                  -259268;1;0;false;false;;;;;;
                                  -259269;5;0;false;false;63;95;191;;;
                                  -259274;1;0;false;false;;;;;;
                                  -259275;6;0;false;false;63;95;191;;;
                                  -259281;1;0;false;false;;;;;;
                                  -259282;2;0;false;false;63;95;191;;;
                                  -259284;1;0;false;false;;;;;;
                                  -259285;3;0;false;false;63;95;191;;;
                                  -259288;1;0;false;false;;;;;;
                                  -259289;7;0;false;false;63;95;191;;;
                                  -259296;1;0;false;false;;;;;;
                                  -259297;3;0;false;false;63;95;191;;;
                                  -259300;3;0;false;false;;;;;;
                                  -259303;1;0;false;false;63;95;191;;;
                                  -259304;1;0;false;false;;;;;;
                                  -259305;6;0;false;false;63;95;191;;;
                                  -259311;1;0;false;false;;;;;;
                                  -259312;2;0;false;false;63;95;191;;;
                                  -259314;1;0;false;false;;;;;;
                                  -259315;8;0;false;false;63;95;191;;;
                                  -259323;1;0;false;false;;;;;;
                                  -259324;2;0;false;false;63;95;191;;;
                                  -259326;1;0;false;false;;;;;;
                                  -259327;4;0;false;false;63;95;191;;;
                                  -259331;1;0;false;false;;;;;;
                                  -259332;3;0;false;false;63;95;191;;;
                                  -259335;1;0;false;false;;;;;;
                                  -259336;5;0;false;false;63;95;191;;;
                                  -259341;1;0;false;false;;;;;;
                                  -259342;5;0;false;false;63;95;191;;;
                                  -259347;1;0;false;false;;;;;;
                                  -259348;8;0;false;false;63;95;191;;;
                                  -259356;1;0;false;false;;;;;;
                                  -259357;2;0;false;false;63;95;191;;;
                                  -259359;1;0;false;false;;;;;;
                                  -259360;2;0;false;false;63;95;191;;;
                                  -259362;1;0;false;false;;;;;;
                                  -259363;3;0;false;false;63;95;191;;;
                                  -259366;1;0;false;false;;;;;;
                                  -259367;4;0;false;false;63;95;191;;;
                                  -259371;3;0;false;false;;;;;;
                                  -259374;1;0;false;false;63;95;191;;;
                                  -259375;1;0;false;false;;;;;;
                                  -259376;3;0;false;false;63;95;191;;;
                                  -259379;1;0;false;false;;;;;;
                                  -259380;3;0;false;false;63;95;191;;;
                                  -259383;1;0;false;false;;;;;;
                                  -259384;5;0;false;false;63;95;191;;;
                                  -259389;1;0;false;false;;;;;;
                                  -259390;2;0;false;false;63;95;191;;;
                                  -259392;1;0;false;false;;;;;;
                                  -259393;8;0;false;false;63;95;191;;;
                                  -259401;1;0;false;false;;;;;;
                                  -259402;2;0;false;false;63;95;191;;;
                                  -259404;1;0;false;false;;;;;;
                                  -259405;3;0;false;false;63;95;191;;;
                                  -259408;1;0;false;false;;;;;;
                                  -259409;13;0;false;false;63;95;191;;;
                                  -259422;1;0;false;false;;;;;;
                                  -259423;3;0;false;false;63;95;191;;;
                                  -259426;1;0;false;false;;;;;;
                                  -259427;5;0;false;false;63;95;191;;;
                                  -259432;3;0;false;false;;;;;;
                                  -259435;1;0;false;false;63;95;191;;;
                                  -259436;1;0;false;false;;;;;;
                                  -259437;5;0;false;false;63;95;191;;;
                                  -259442;1;0;false;false;;;;;;
                                  -259443;3;0;false;false;63;95;191;;;
                                  -259446;1;0;false;false;;;;;;
                                  -259447;3;0;false;false;63;95;191;;;
                                  -259450;1;0;false;false;;;;;;
                                  -259451;5;0;false;false;63;95;191;;;
                                  -259456;1;0;false;false;;;;;;
                                  -259457;2;0;false;false;63;95;191;;;
                                  -259459;1;0;false;false;;;;;;
                                  -259460;5;0;false;false;63;95;191;;;
                                  -259465;1;0;false;false;;;;;;
                                  -259466;2;0;false;false;63;95;191;;;
                                  -259468;1;0;false;false;;;;;;
                                  -259469;1;0;false;false;63;95;191;;;
                                  -259470;1;0;false;false;;;;;;
                                  -259471;4;0;false;false;63;95;191;;;
                                  -259475;1;0;false;false;;;;;;
                                  -259476;3;0;false;false;63;95;191;;;
                                  -259479;1;0;false;false;;;;;;
                                  -259480;4;0;false;false;63;95;191;;;
                                  -259484;1;0;false;false;;;;;;
                                  -259485;2;0;false;false;63;95;191;;;
                                  -259487;1;0;false;false;;;;;;
                                  -259488;3;0;false;false;63;95;191;;;
                                  -259491;1;0;false;false;;;;;;
                                  -259492;2;0;false;false;63;95;191;;;
                                  -259494;1;0;false;false;;;;;;
                                  -259495;3;0;false;false;63;95;191;;;
                                  -259498;1;0;false;false;;;;;;
                                  -259499;7;0;false;false;63;95;191;;;
                                  -259506;3;0;false;false;;;;;;
                                  -259509;1;0;false;false;63;95;191;;;
                                  -259510;1;0;false;false;;;;;;
                                  -259511;4;0;false;false;127;127;159;;;
                                  -259515;3;0;false;false;;;;;;
                                  -259518;1;0;false;false;63;95;191;;;
                                  -259519;3;0;false;false;;;;;;
                                  -259522;1;0;false;false;63;95;191;;;
                                  -259523;1;0;false;false;;;;;;
                                  -259524;7;1;false;false;127;159;191;;;
                                  -259531;5;0;false;false;63;95;191;;;
                                  -259536;1;0;false;false;;;;;;
                                  -259537;3;0;false;false;63;95;191;;;
                                  -259540;1;0;false;false;;;;;;
                                  -259541;3;0;false;false;63;95;191;;;
                                  -259544;1;0;false;false;;;;;;
                                  -259545;5;0;false;false;63;95;191;;;
                                  -259550;1;0;false;false;;;;;;
                                  -259551;7;0;false;false;63;95;191;;;
                                  -259558;1;0;false;false;;;;;;
                                  -259559;4;0;false;false;63;95;191;;;
                                  -259563;1;0;false;false;;;;;;
                                  -259564;2;0;false;false;63;95;191;;;
                                  -259566;1;0;false;false;;;;;;
                                  -259567;7;0;false;false;63;95;191;;;
                                  -259574;1;0;false;false;;;;;;
                                  -259575;1;0;false;false;63;95;191;;;
                                  -259576;1;0;false;false;;;;;;
                                  -259577;3;0;false;false;63;95;191;;;
                                  -259580;4;0;false;false;;;;;;
                                  -259584;1;0;false;false;63;95;191;;;
                                  -259585;2;0;false;false;;;;;;
                                  -259587;15;0;false;false;63;95;191;;;
                                  -259602;1;0;false;false;;;;;;
                                  -259603;1;0;false;false;127;127;159;;;
                                  -259604;1;0;false;false;;;;;;
                                  -259605;7;0;false;false;63;95;191;;;
                                  -259612;1;0;false;false;;;;;;
                                  -259613;5;0;false;false;63;95;191;;;
                                  -259618;1;0;false;false;;;;;;
                                  -259619;3;0;false;false;63;95;191;;;
                                  -259622;1;0;false;false;;;;;;
                                  -259623;5;0;false;false;63;95;191;;;
                                  -259628;1;0;false;false;;;;;;
                                  -259629;1;0;false;false;63;95;191;;;
                                  -259630;1;0;false;false;;;;;;
                                  -259631;17;0;false;false;63;95;191;;;
                                  -259648;1;0;false;false;;;;;;
                                  -259649;2;0;false;false;63;95;191;;;
                                  -259651;1;0;false;false;;;;;;
                                  -259652;3;0;false;false;63;95;191;;;
                                  -259655;3;0;false;false;;;;;;
                                  -259658;1;0;false;false;63;95;191;;;
                                  -259659;2;0;false;false;;;;;;
                                  -259661;2;0;false;false;63;95;191;;;
                                  -259663;1;0;false;false;;;;;;
                                  -259664;5;0;false;false;63;95;191;;;
                                  -259669;1;0;false;false;;;;;;
                                  -259670;6;0;false;false;63;95;191;;;
                                  -259676;1;0;false;false;;;;;;
                                  -259677;4;0;false;false;63;95;191;;;
                                  -259681;1;0;false;false;;;;;;
                                  -259682;2;0;false;false;63;95;191;;;
                                  -259684;1;0;false;false;;;;;;
                                  -259685;8;0;false;false;63;95;191;;;
                                  -259693;1;0;false;false;;;;;;
                                  -259694;12;0;false;false;63;95;191;;;
                                  -259706;3;0;false;false;;;;;;
                                  -259709;1;0;false;false;63;95;191;;;
                                  -259710;1;0;false;false;;;;;;
                                  -259711;11;1;false;false;127;159;191;;;
                                  -259722;12;0;false;false;63;95;191;;;
                                  -259734;1;0;false;false;;;;;;
                                  -259735;4;0;false;false;127;127;159;;;
                                  -259739;3;0;false;false;;;;;;
                                  -259742;1;0;false;false;63;95;191;;;
                                  -259743;4;0;false;false;;;;;;
                                  -259747;4;0;false;false;127;127;159;;;
                                  -259751;21;0;false;false;63;95;191;;;
                                  -259772;1;0;false;false;;;;;;
                                  -259773;1;0;false;false;127;127;159;;;
                                  -259774;1;0;false;false;;;;;;
                                  -259775;2;0;false;false;63;95;191;;;
                                  -259777;1;0;false;false;;;;;;
                                  -259778;3;0;false;false;63;95;191;;;
                                  -259781;1;0;false;false;;;;;;
                                  -259782;8;0;false;false;63;95;191;;;
                                  -259790;1;0;false;false;;;;;;
                                  -259791;3;0;false;false;63;95;191;;;
                                  -259794;1;0;false;false;;;;;;
                                  -259795;4;0;false;false;63;95;191;;;
                                  -259799;1;0;false;false;;;;;;
                                  -259800;8;0;false;false;63;95;191;;;
                                  -259808;5;0;false;false;127;127;159;;;
                                  -259813;3;0;false;false;;;;;;
                                  -259816;1;0;false;false;63;95;191;;;
                                  -259817;4;0;false;false;;;;;;
                                  -259821;4;0;false;false;127;127;159;;;
                                  -259825;27;0;false;false;63;95;191;;;
                                  -259852;1;0;false;false;;;;;;
                                  -259853;1;0;false;false;127;127;159;;;
                                  -259854;1;0;false;false;;;;;;
                                  -259855;2;0;false;false;63;95;191;;;
                                  -259857;1;0;false;false;;;;;;
                                  -259858;3;0;false;false;63;95;191;;;
                                  -259861;1;0;false;false;;;;;;
                                  -259862;6;0;false;false;63;95;191;;;
                                  -259868;1;0;false;false;;;;;;
                                  -259869;4;0;false;false;63;95;191;;;
                                  -259873;1;0;false;false;;;;;;
                                  -259874;3;0;false;false;63;95;191;;;
                                  -259877;1;0;false;false;;;;;;
                                  -259878;6;0;false;false;63;95;191;;;
                                  -259884;1;0;false;false;;;;;;
                                  -259885;4;0;false;false;63;95;191;;;
                                  -259889;1;0;false;false;;;;;;
                                  -259890;7;0;false;false;63;95;191;;;
                                  -259897;1;0;false;false;;;;;;
                                  -259898;3;0;false;false;63;95;191;;;
                                  -259901;1;0;false;false;;;;;;
                                  -259902;8;0;false;false;63;95;191;;;
                                  -259910;5;0;false;false;127;127;159;;;
                                  -259915;3;0;false;false;;;;;;
                                  -259918;1;0;false;false;63;95;191;;;
                                  -259919;1;0;false;false;;;;;;
                                  -259920;5;0;false;false;127;127;159;;;
                                  -259925;3;0;false;false;;;;;;
                                  -259928;1;0;false;false;63;95;191;;;
                                  -259929;1;0;false;false;;;;;;
                                  -259930;7;1;false;false;127;159;191;;;
                                  -259937;3;0;false;false;63;95;191;;;
                                  -259940;3;0;false;false;;;;;;
                                  -259943;2;0;false;false;63;95;191;;;
                                  -259945;2;0;false;false;;;;;;
                                  -259947;6;1;false;false;127;0;85;;;
                                  -259953;1;0;false;false;;;;;;
                                  -259954;4;1;false;false;127;0;85;;;
                                  -259958;1;0;false;false;;;;;;
                                  -259959;12;0;false;false;0;0;0;;;
                                  -259971;3;1;false;false;127;0;85;;;
                                  -259974;1;0;false;false;;;;;;
                                  -259975;6;0;false;false;0;0;0;;;
                                  -259981;1;0;false;false;;;;;;
                                  -259982;1;0;false;false;0;0;0;;;
                                  -259983;3;0;false;false;;;;;;
                                  -259986;14;0;false;false;0;0;0;;;
                                  -260000;3;0;false;false;;;;;;
                                  -260003;3;1;false;false;127;0;85;;;
                                  -260006;1;0;false;false;;;;;;
                                  -260007;9;0;false;false;0;0;0;;;
                                  -260016;1;0;false;false;;;;;;
                                  -260017;24;0;false;false;0;0;0;;;
                                  -260041;3;0;false;false;;;;;;
                                  -260044;3;1;false;false;127;0;85;;;
                                  -260047;1;0;false;false;;;;;;
                                  -260048;6;0;false;false;0;0;0;;;
                                  -260054;1;0;false;false;;;;;;
                                  -260055;1;0;false;false;0;0;0;;;
                                  -260056;1;0;false;false;;;;;;
                                  -260057;23;0;false;false;0;0;0;;;
                                  -260080;3;0;false;false;;;;;;
                                  -260083;3;1;false;false;127;0;85;;;
                                  -260086;1;0;false;false;;;;;;
                                  -260087;11;0;false;false;0;0;0;;;
                                  -260098;1;0;false;false;;;;;;
                                  -260099;1;0;false;false;0;0;0;;;
                                  -260100;1;0;false;false;;;;;;
                                  -260101;11;0;false;false;0;0;0;;;
                                  -260112;1;0;false;false;;;;;;
                                  -260113;9;0;false;false;0;0;0;;;
                                  -260122;1;0;false;false;;;;;;
                                  -260123;1;0;false;false;0;0;0;;;
                                  -260124;1;0;false;false;;;;;;
                                  -260125;22;0;false;false;0;0;0;;;
                                  -260147;1;0;false;false;;;;;;
                                  -260148;1;0;false;false;0;0;0;;;
                                  -260149;1;0;false;false;;;;;;
                                  -260150;8;0;false;false;0;0;0;;;
                                  -260158;6;0;false;false;;;;;;
                                  -260164;2;1;false;false;127;0;85;;;
                                  -260166;1;0;false;false;;;;;;
                                  -260167;15;0;false;false;0;0;0;;;
                                  -260182;1;0;false;false;;;;;;
                                  -260183;2;0;false;false;0;0;0;;;
                                  -260185;1;0;false;false;;;;;;
                                  -260186;2;0;false;false;0;0;0;;;
                                  -260188;1;0;false;false;;;;;;
                                  -260189;1;0;false;false;0;0;0;;;
                                  -260190;4;0;false;false;;;;;;
                                  -260194;6;1;false;false;127;0;85;;;
                                  -260200;1;0;false;false;0;0;0;;;
                                  -260201;3;0;false;false;;;;;;
                                  -260204;1;0;false;false;0;0;0;;;
                                  -260205;4;0;false;false;;;;;;
                                  -260209;2;1;false;false;127;0;85;;;
                                  -260211;1;0;false;false;;;;;;
                                  -260212;6;0;false;false;0;0;0;;;
                                  -260218;1;0;false;false;;;;;;
                                  -260219;1;0;false;false;0;0;0;;;
                                  -260220;1;0;false;false;;;;;;
                                  -260221;2;0;false;false;0;0;0;;;
                                  -260223;1;0;false;false;;;;;;
                                  -260224;1;0;false;false;0;0;0;;;
                                  -260225;4;0;false;false;;;;;;
                                  -260229;5;0;false;false;0;0;0;;;
                                  -260234;1;0;false;false;;;;;;
                                  -260235;1;0;false;false;0;0;0;;;
                                  -260236;1;0;false;false;;;;;;
                                  -260237;2;0;false;false;0;0;0;;;
                                  -260239;3;0;false;false;;;;;;
                                  -260242;1;0;false;false;0;0;0;;;
                                  -260243;3;0;false;false;;;;;;
                                  -260246;4;1;false;false;127;0;85;;;
                                  -260250;4;0;false;false;;;;;;
                                  -260254;2;1;false;false;127;0;85;;;
                                  -260256;1;0;false;false;;;;;;
                                  -260257;6;0;false;false;0;0;0;;;
                                  -260263;1;0;false;false;;;;;;
                                  -260264;1;0;false;false;0;0;0;;;
                                  -260265;1;0;false;false;;;;;;
                                  -260266;12;0;false;false;0;0;0;;;
                                  -260278;1;0;false;false;;;;;;
                                  -260279;1;0;false;false;0;0;0;;;
                                  -260280;4;0;false;false;;;;;;
                                  -260284;5;0;false;false;0;0;0;;;
                                  -260289;1;0;false;false;;;;;;
                                  -260290;1;0;false;false;0;0;0;;;
                                  -260291;1;0;false;false;;;;;;
                                  -260292;12;0;false;false;0;0;0;;;
                                  -260304;3;0;false;false;;;;;;
                                  -260307;1;0;false;false;0;0;0;;;
                                  -260308;3;0;false;false;;;;;;
                                  -260311;30;0;false;false;0;0;0;;;
                                  -260341;1;0;false;false;;;;;;
                                  -260342;4;1;false;false;127;0;85;;;
                                  -260346;2;0;false;false;0;0;0;;;
                                  -260348;2;0;false;false;;;;;;
                                  -260350;1;0;false;false;0;0;0;;;
                                  -260351;2;0;false;false;;;;;;
                                  -260353;3;0;false;false;63;95;191;;;
                                  -260356;3;0;false;false;;;;;;
                                  -260359;1;0;false;false;63;95;191;;;
                                  -260360;1;0;false;false;;;;;;
                                  -260361;7;0;false;false;63;95;191;;;
                                  -260368;1;0;false;false;;;;;;
                                  -260369;3;0;false;false;63;95;191;;;
                                  -260372;1;0;false;false;;;;;;
                                  -260373;6;0;false;false;63;95;191;;;
                                  -260379;1;0;false;false;;;;;;
                                  -260380;11;0;false;false;63;95;191;;;
                                  -260391;3;0;false;false;;;;;;
                                  -260394;1;0;false;false;63;95;191;;;
                                  -260395;1;0;false;false;;;;;;
                                  -260396;3;0;false;false;127;127;159;;;
                                  -260399;3;0;false;false;;;;;;
                                  -260402;1;0;false;false;63;95;191;;;
                                  -260403;3;0;false;false;;;;;;
                                  -260406;1;0;false;false;63;95;191;;;
                                  -260407;1;0;false;false;;;;;;
                                  -260408;7;1;false;false;127;159;191;;;
                                  -260415;11;0;false;false;63;95;191;;;
                                  -260426;1;0;false;false;;;;;;
                                  -260427;3;0;false;false;63;95;191;;;
                                  -260430;1;0;false;false;;;;;;
                                  -260431;3;0;false;false;63;95;191;;;
                                  -260434;1;0;false;false;;;;;;
                                  -260435;8;0;false;false;63;95;191;;;
                                  -260443;1;0;false;false;;;;;;
                                  -260444;6;0;false;false;63;95;191;;;
                                  -260450;1;0;false;false;;;;;;
                                  -260451;6;0;false;false;63;95;191;;;
                                  -260457;3;0;false;false;;;;;;
                                  -260460;1;0;false;false;63;95;191;;;
                                  -260461;1;0;false;false;;;;;;
                                  -260462;7;1;false;false;127;159;191;;;
                                  -260469;15;0;false;false;63;95;191;;;
                                  -260484;4;0;false;false;;;;;;
                                  -260488;1;0;false;false;63;95;191;;;
                                  -260489;2;0;false;false;;;;;;
                                  -260491;5;0;false;false;63;95;191;;;
                                  -260496;1;0;false;false;;;;;;
                                  -260497;3;0;false;false;63;95;191;;;
                                  -260500;1;0;false;false;;;;;;
                                  -260501;6;0;false;false;63;95;191;;;
                                  -260507;1;0;false;false;;;;;;
                                  -260508;5;0;false;false;63;95;191;;;
                                  -260513;1;0;false;false;;;;;;
                                  -260514;4;0;false;false;63;95;191;;;
                                  -260518;1;0;false;false;;;;;;
                                  -260519;2;0;false;false;63;95;191;;;
                                  -260521;1;0;false;false;;;;;;
                                  -260522;5;0;false;false;63;95;191;;;
                                  -260527;1;0;false;false;;;;;;
                                  -260528;2;0;false;false;63;95;191;;;
                                  -260530;1;0;false;false;;;;;;
                                  -260531;7;0;false;false;63;95;191;;;
                                  -260538;1;0;false;false;;;;;;
                                  -260539;3;0;false;false;63;95;191;;;
                                  -260542;1;0;false;false;;;;;;
                                  -260543;3;0;false;false;63;95;191;;;
                                  -260546;1;0;false;false;;;;;;
                                  -260547;6;0;false;false;63;95;191;;;
                                  -260553;1;0;false;false;;;;;;
                                  -260554;7;0;false;false;63;95;191;;;
                                  -260561;3;0;false;false;;;;;;
                                  -260564;1;0;false;false;63;95;191;;;
                                  -260565;2;0;false;false;;;;;;
                                  -260567;5;0;false;false;63;95;191;;;
                                  -260572;1;0;false;false;;;;;;
                                  -260573;1;0;false;false;63;95;191;;;
                                  -260574;1;0;false;false;;;;;;
                                  -260575;3;0;false;false;63;95;191;;;
                                  -260578;1;0;false;false;;;;;;
                                  -260579;6;0;false;false;63;95;191;;;
                                  -260585;1;0;false;false;;;;;;
                                  -260586;5;0;false;false;63;95;191;;;
                                  -260591;1;0;false;false;;;;;;
                                  -260592;4;0;false;false;63;95;191;;;
                                  -260596;1;0;false;false;;;;;;
                                  -260597;3;0;false;false;63;95;191;;;
                                  -260600;1;0;false;false;;;;;;
                                  -260601;2;0;false;false;63;95;191;;;
                                  -260603;1;0;false;false;;;;;;
                                  -260604;5;0;false;false;63;95;191;;;
                                  -260609;3;0;false;false;;;;;;
                                  -260612;1;0;false;false;63;95;191;;;
                                  -260613;1;0;false;false;;;;;;
                                  -260614;8;1;false;false;127;159;191;;;
                                  -260622;3;0;false;false;;;;;;
                                  -260625;1;0;false;false;63;95;191;;;
                                  -260626;1;0;false;false;;;;;;
                                  -260627;8;0;false;false;63;95;191;;;
                                  -260635;1;0;false;false;;;;;;
                                  -260636;6;0;false;false;63;95;191;;;
                                  -260642;1;0;false;false;;;;;;
                                  -260643;3;0;false;false;63;95;191;;;
                                  -260646;1;0;false;false;;;;;;
                                  -260647;8;0;false;false;63;95;191;;;
                                  -260655;4;0;false;false;;;;;;
                                  -260659;1;0;false;false;63;95;191;;;
                                  -260660;1;0;false;false;;;;;;
                                  -260661;9;0;false;false;63;95;191;;;
                                  -260670;1;0;false;false;;;;;;
                                  -260671;6;0;false;false;63;95;191;;;
                                  -260677;1;0;false;false;;;;;;
                                  -260678;3;0;false;false;63;95;191;;;
                                  -260681;1;0;false;false;;;;;;
                                  -260682;3;0;false;false;63;95;191;;;
                                  -260685;1;0;false;false;;;;;;
                                  -260686;9;0;false;false;63;95;191;;;
                                  -260695;1;0;false;false;;;;;;
                                  -260696;3;0;false;false;63;95;191;;;
                                  -260699;1;0;false;false;;;;;;
                                  -260700;5;0;false;false;63;95;191;;;
                                  -260705;1;0;false;false;;;;;;
                                  -260706;6;0;false;false;63;95;191;;;
                                  -260712;1;0;false;false;;;;;;
                                  -260713;2;0;false;false;63;95;191;;;
                                  -260715;1;0;false;false;;;;;;
                                  -260716;3;0;false;false;63;95;191;;;
                                  -260719;1;0;false;false;;;;;;
                                  -260720;6;0;false;false;63;95;191;;;
                                  -260726;3;0;false;false;;;;;;
                                  -260729;2;0;false;false;63;95;191;;;
                                  -260731;2;0;false;false;;;;;;
                                  -260733;7;1;false;false;127;0;85;;;
                                  -260740;1;0;false;false;;;;;;
                                  -260741;24;0;false;false;0;0;0;;;
                                  -260765;3;1;false;false;127;0;85;;;
                                  -260768;1;0;false;false;;;;;;
                                  -260769;12;0;false;false;0;0;0;;;
                                  -260781;1;0;false;false;;;;;;
                                  -260782;7;1;false;false;127;0;85;;;
                                  -260789;1;0;false;false;;;;;;
                                  -260790;16;0;false;false;0;0;0;;;
                                  -260806;1;0;false;false;;;;;;
                                  -260807;1;0;false;false;0;0;0;;;
                                  -260808;3;0;false;false;;;;;;
                                  -260811;9;0;false;false;0;0;0;;;
                                  -260820;1;0;false;false;;;;;;
                                  -260821;11;0;false;false;0;0;0;;;
                                  -260832;3;0;false;false;;;;;;
                                  -260835;9;0;false;false;0;0;0;;;
                                  -260844;1;0;false;false;;;;;;
                                  -260845;11;0;false;false;0;0;0;;;
                                  -260856;1;0;false;false;;;;;;
                                  -260857;1;0;false;false;0;0;0;;;
                                  -260858;1;0;false;false;;;;;;
                                  -260859;17;0;false;false;0;0;0;;;
                                  -260876;6;0;false;false;;;;;;
                                  -260882;2;1;false;false;127;0;85;;;
                                  -260884;1;0;false;false;;;;;;
                                  -260885;12;0;false;false;0;0;0;;;
                                  -260897;1;0;false;false;;;;;;
                                  -260898;2;0;false;false;0;0;0;;;
                                  -260900;1;0;false;false;;;;;;
                                  -260901;21;0;false;false;0;0;0;;;
                                  -260922;1;0;false;false;;;;;;
                                  -260923;1;0;false;false;0;0;0;;;
                                  -260924;4;0;false;false;;;;;;
                                  -260928;6;1;false;false;127;0;85;;;
                                  -260934;1;0;false;false;;;;;;
                                  -260935;5;1;false;false;127;0;85;;;
                                  -260940;1;0;false;false;0;0;0;;;
                                  -260941;3;0;false;false;;;;;;
                                  -260944;1;0;false;false;0;0;0;;;
                                  -260945;3;0;false;false;;;;;;
                                  -260948;2;1;false;false;127;0;85;;;
                                  -260950;1;0;false;false;;;;;;
                                  -260951;12;0;false;false;0;0;0;;;
                                  -260963;1;0;false;false;;;;;;
                                  -260964;2;0;false;false;0;0;0;;;
                                  -260966;1;0;false;false;;;;;;
                                  -260967;4;1;false;false;127;0;85;;;
                                  -260971;1;0;false;false;;;;;;
                                  -260972;2;0;false;false;0;0;0;;;
                                  -260974;1;0;false;false;;;;;;
                                  -260975;16;0;false;false;0;0;0;;;
                                  -260991;1;0;false;false;;;;;;
                                  -260992;1;0;false;false;0;0;0;;;
                                  -260993;4;0;false;false;;;;;;
                                  -260997;38;0;false;false;0;0;0;;;
                                  -261035;3;0;false;false;;;;;;
                                  -261038;1;0;false;false;0;0;0;;;
                                  -261039;3;0;false;false;;;;;;
                                  -261042;10;0;false;false;0;0;0;;;
                                  -261052;1;0;false;false;;;;;;
                                  -261053;1;0;false;false;0;0;0;;;
                                  -261054;1;0;false;false;;;;;;
                                  -261055;16;0;false;false;0;0;0;;;
                                  -261071;3;0;false;false;;;;;;
                                  -261074;7;0;false;false;0;0;0;;;
                                  -261081;4;0;false;false;;;;;;
                                  -261085;2;0;false;false;0;0;0;;;
                                  -261087;1;0;false;false;;;;;;
                                  -261088;2;0;false;false;0;0;0;;;
                                  -261090;10;0;false;false;;;;;;
                                  -261100;21;0;false;false;63;127;95;;;
                                  -261121;2;0;false;false;;;;;;
                                  -261123;2;0;false;false;0;0;0;;;
                                  -261125;1;0;false;false;;;;;;
                                  -261126;11;0;false;false;0;0;0;;;
                                  -261137;1;0;false;false;;;;;;
                                  -261138;1;0;false;false;0;0;0;;;
                                  -261139;1;0;false;false;;;;;;
                                  -261140;21;0;false;false;0;0;0;;;
                                  -261161;1;0;false;false;;;;;;
                                  -261162;16;0;false;false;63;127;95;;;
                                  -261178;2;0;false;false;;;;;;
                                  -261180;17;0;false;false;0;0;0;;;
                                  -261197;1;0;false;false;;;;;;
                                  -261198;18;0;false;false;0;0;0;;;
                                  -261216;1;0;false;false;;;;;;
                                  -261217;4;1;false;false;127;0;85;;;
                                  -261221;2;0;false;false;0;0;0;;;
                                  -261223;5;0;false;false;;;;;;
                                  -261228;20;0;false;false;0;0;0;;;
                                  -261248;1;0;false;false;;;;;;
                                  -261249;1;0;false;false;0;0;0;;;
                                  -261250;1;0;false;false;;;;;;
                                  -261251;12;0;false;false;0;0;0;;;
                                  -261263;3;0;false;false;;;;;;
                                  -261266;20;0;false;false;0;0;0;;;
                                  -261286;3;0;false;false;;;;;;
                                  -261289;3;1;false;false;127;0;85;;;
                                  -261292;1;0;false;false;;;;;;
                                  -261293;10;0;false;false;0;0;0;;;
                                  -261303;1;0;false;false;;;;;;
                                  -261304;1;0;false;false;0;0;0;;;
                                  -261305;1;0;false;false;;;;;;
                                  -261306;8;0;false;false;0;0;0;;;
                                  -261314;3;0;false;false;;;;;;
                                  -261317;19;0;false;false;0;0;0;;;
                                  -261336;3;0;false;false;;;;;;
                                  -261339;48;0;false;false;63;127;95;;;
                                  -261387;1;0;false;false;;;;;;
                                  -261388;7;0;false;false;0;0;0;;;
                                  -261395;1;0;false;false;;;;;;
                                  -261396;1;0;false;false;0;0;0;;;
                                  -261397;1;0;false;false;;;;;;
                                  -261398;11;0;false;false;0;0;0;;;
                                  -261409;3;0;false;false;;;;;;
                                  -261412;6;1;false;false;127;0;85;;;
                                  -261418;1;0;false;false;;;;;;
                                  -261419;4;1;false;false;127;0;85;;;
                                  -261423;1;0;false;false;0;0;0;;;
                                  -261424;2;0;false;false;;;;;;
                                  -261426;1;0;false;false;0;0;0;;;
                                  -261427;2;0;false;false;;;;;;
                                  -261429;3;0;false;false;63;95;191;;;
                                  -261432;3;0;false;false;;;;;;
                                  -261435;1;0;false;false;63;95;191;;;
                                  -261436;1;0;false;false;;;;;;
                                  -261437;7;0;false;false;63;95;191;;;
                                  -261444;1;0;false;false;;;;;;
                                  -261445;3;0;false;false;63;95;191;;;
                                  -261448;1;0;false;false;;;;;;
                                  -261449;9;0;false;false;63;95;191;;;
                                  -261458;1;0;false;false;;;;;;
                                  -261459;8;0;false;false;63;95;191;;;
                                  -261467;1;0;false;false;;;;;;
                                  -261468;4;0;false;false;63;95;191;;;
                                  -261472;1;0;false;false;;;;;;
                                  -261473;5;0;false;false;63;95;191;;;
                                  -261478;3;0;false;false;;;;;;
                                  -261481;1;0;false;false;63;95;191;;;
                                  -261482;1;0;false;false;;;;;;
                                  -261483;3;0;false;false;127;127;159;;;
                                  -261486;3;0;false;false;;;;;;
                                  -261489;1;0;false;false;63;95;191;;;
                                  -261490;4;0;false;false;;;;;;
                                  -261494;1;0;false;false;63;95;191;;;
                                  -261495;1;0;false;false;;;;;;
                                  -261496;7;1;false;false;127;159;191;;;
                                  -261503;1;0;false;false;63;95;191;;;
                                  -261504;1;0;false;false;;;;;;
                                  -261505;3;0;false;false;63;95;191;;;
                                  -261508;1;0;false;false;;;;;;
                                  -261509;1;0;false;false;63;95;191;;;
                                  -261510;1;0;false;false;;;;;;
                                  -261511;10;0;false;false;63;95;191;;;
                                  -261521;1;0;false;false;;;;;;
                                  -261522;4;0;false;false;63;95;191;;;
                                  -261526;1;0;false;false;;;;;;
                                  -261527;6;0;false;false;63;95;191;;;
                                  -261533;1;0;false;false;;;;;;
                                  -261534;2;0;false;false;63;95;191;;;
                                  -261536;1;0;false;false;;;;;;
                                  -261537;4;0;false;false;63;95;191;;;
                                  -261541;1;0;false;false;;;;;;
                                  -261542;8;0;false;false;63;95;191;;;
                                  -261550;3;0;false;false;;;;;;
                                  -261553;1;0;false;false;63;95;191;;;
                                  -261554;1;0;false;false;;;;;;
                                  -261555;7;1;false;false;127;159;191;;;
                                  -261562;4;0;false;false;63;95;191;;;
                                  -261566;1;0;false;false;;;;;;
                                  -261567;3;0;false;false;63;95;191;;;
                                  -261570;1;0;false;false;;;;;;
                                  -261571;4;0;false;false;63;95;191;;;
                                  -261575;1;0;false;false;;;;;;
                                  -261576;4;0;false;false;63;95;191;;;
                                  -261580;1;0;false;false;;;;;;
                                  -261581;6;0;false;false;63;95;191;;;
                                  -261587;1;0;false;false;;;;;;
                                  -261588;2;0;false;false;63;95;191;;;
                                  -261590;1;0;false;false;;;;;;
                                  -261591;4;0;false;false;63;95;191;;;
                                  -261595;1;0;false;false;;;;;;
                                  -261596;8;0;false;false;63;95;191;;;
                                  -261604;1;0;false;false;;;;;;
                                  -261605;8;0;false;false;63;95;191;;;
                                  -261613;1;0;false;false;;;;;;
                                  -261614;2;0;false;false;63;95;191;;;
                                  -261616;1;0;false;false;;;;;;
                                  -261617;3;0;false;false;63;95;191;;;
                                  -261620;3;0;false;false;;;;;;
                                  -261623;1;0;false;false;63;95;191;;;
                                  -261624;1;0;false;false;;;;;;
                                  -261625;5;0;false;false;63;95;191;;;
                                  -261630;1;0;false;false;;;;;;
                                  -261631;4;0;false;false;63;95;191;;;
                                  -261635;1;0;false;false;;;;;;
                                  -261636;2;0;false;false;63;95;191;;;
                                  -261638;1;0;false;false;;;;;;
                                  -261639;3;0;false;false;63;95;191;;;
                                  -261642;1;0;false;false;;;;;;
                                  -261643;9;0;false;false;63;95;191;;;
                                  -261652;3;0;false;false;;;;;;
                                  -261655;1;0;false;false;63;95;191;;;
                                  -261656;1;0;false;false;;;;;;
                                  -261657;8;1;false;false;127;159;191;;;
                                  -261665;3;0;false;false;;;;;;
                                  -261668;1;0;false;false;63;95;191;;;
                                  -261669;1;0;false;false;;;;;;
                                  -261670;8;0;false;false;63;95;191;;;
                                  -261678;1;0;false;false;;;;;;
                                  -261679;6;0;false;false;63;95;191;;;
                                  -261685;1;0;false;false;;;;;;
                                  -261686;3;0;false;false;63;95;191;;;
                                  -261689;1;0;false;false;;;;;;
                                  -261690;8;0;false;false;63;95;191;;;
                                  -261698;1;0;false;false;;;;;;
                                  -261699;2;0;false;false;63;95;191;;;
                                  -261701;1;0;false;false;;;;;;
                                  -261702;4;0;false;false;63;95;191;;;
                                  -261706;1;0;false;false;;;;;;
                                  -261707;3;0;false;false;63;95;191;;;
                                  -261710;1;0;false;false;;;;;;
                                  -261711;9;0;false;false;63;95;191;;;
                                  -261720;1;0;false;false;;;;;;
                                  -261721;8;0;false;false;63;95;191;;;
                                  -261729;1;0;false;false;;;;;;
                                  -261730;8;0;false;false;63;95;191;;;
                                  -261738;4;0;false;false;;;;;;
                                  -261742;1;0;false;false;63;95;191;;;
                                  -261743;1;0;false;false;;;;;;
                                  -261744;9;0;false;false;63;95;191;;;
                                  -261753;1;0;false;false;;;;;;
                                  -261754;9;0;false;false;63;95;191;;;
                                  -261763;1;0;false;false;;;;;;
                                  -261764;8;0;false;false;63;95;191;;;
                                  -261772;1;0;false;false;;;;;;
                                  -261773;2;0;false;false;63;95;191;;;
                                  -261775;1;0;false;false;;;;;;
                                  -261776;7;0;false;false;63;95;191;;;
                                  -261783;1;0;false;false;;;;;;
                                  -261784;8;0;false;false;63;95;191;;;
                                  -261792;1;0;false;false;;;;;;
                                  -261793;3;0;false;false;63;95;191;;;
                                  -261796;1;0;false;false;;;;;;
                                  -261797;6;0;false;false;63;95;191;;;
                                  -261803;1;0;false;false;;;;;;
                                  -261804;3;0;false;false;63;95;191;;;
                                  -261807;4;0;false;false;;;;;;
                                  -261811;1;0;false;false;63;95;191;;;
                                  -261812;1;0;false;false;;;;;;
                                  -261813;3;0;false;false;63;95;191;;;
                                  -261816;1;0;false;false;;;;;;
                                  -261817;9;0;false;false;63;95;191;;;
                                  -261826;5;0;false;false;;;;;;
                                  -261831;2;0;false;false;63;95;191;;;
                                  -261833;2;0;false;false;;;;;;
                                  -261835;7;1;false;false;127;0;85;;;
                                  -261842;1;0;false;false;;;;;;
                                  -261843;13;0;false;false;0;0;0;;;
                                  -261856;3;1;false;false;127;0;85;;;
                                  -261859;1;0;false;false;;;;;;
                                  -261860;2;0;false;false;0;0;0;;;
                                  -261862;1;0;false;false;;;;;;
                                  -261863;3;1;false;false;127;0;85;;;
                                  -261866;1;0;false;false;;;;;;
                                  -261867;5;0;false;false;0;0;0;;;
                                  -261872;1;0;false;false;;;;;;
                                  -261873;1;0;false;false;0;0;0;;;
                                  -261874;3;0;false;false;;;;;;
                                  -261877;3;1;false;false;127;0;85;;;
                                  -261880;1;0;false;false;;;;;;
                                  -261881;15;0;false;false;0;0;0;;;
                                  -261896;1;0;false;false;;;;;;
                                  -261897;1;0;false;false;0;0;0;;;
                                  -261898;1;0;false;false;;;;;;
                                  -261899;21;0;false;false;0;0;0;;;
                                  -261920;1;0;false;false;;;;;;
                                  -261921;1;0;false;false;0;0;0;;;
                                  -261922;1;0;false;false;;;;;;
                                  -261923;11;0;false;false;0;0;0;;;
                                  -261934;3;0;false;false;;;;;;
                                  -261937;3;1;false;false;127;0;85;;;
                                  -261940;1;0;false;false;;;;;;
                                  -261941;17;0;false;false;0;0;0;;;
                                  -261958;1;0;false;false;;;;;;
                                  -261959;1;0;false;false;0;0;0;;;
                                  -261960;1;0;false;false;;;;;;
                                  -261961;23;0;false;false;0;0;0;;;
                                  -261984;3;0;false;false;;;;;;
                                  -261987;3;1;false;false;127;0;85;;;
                                  -261990;1;0;false;false;;;;;;
                                  -261991;19;0;false;false;0;0;0;;;
                                  -262010;1;0;false;false;;;;;;
                                  -262011;1;0;false;false;0;0;0;;;
                                  -262012;1;0;false;false;;;;;;
                                  -262013;15;0;false;false;0;0;0;;;
                                  -262028;1;0;false;false;;;;;;
                                  -262029;1;0;false;false;0;0;0;;;
                                  -262030;1;0;false;false;;;;;;
                                  -262031;2;0;false;false;0;0;0;;;
                                  -262033;3;0;false;false;;;;;;
                                  -262036;7;1;false;false;127;0;85;;;
                                  -262043;1;0;false;false;;;;;;
                                  -262044;8;0;false;false;0;0;0;;;
                                  -262052;1;0;false;false;;;;;;
                                  -262053;1;0;false;false;0;0;0;;;
                                  -262054;1;0;false;false;;;;;;
                                  -262055;5;1;false;false;127;0;85;;;
                                  -262060;1;0;false;false;0;0;0;;;
                                  -262061;8;0;false;false;;;;;;
                                  -262069;2;1;false;false;127;0;85;;;
                                  -262071;1;0;false;false;;;;;;
                                  -262072;2;0;false;false;0;0;0;;;
                                  -262074;1;0;false;false;;;;;;
                                  -262075;1;0;false;false;0;0;0;;;
                                  -262076;1;0;false;false;;;;;;
                                  -262077;11;0;false;false;0;0;0;;;
                                  -262088;1;0;false;false;;;;;;
                                  -262089;1;0;false;false;0;0;0;;;
                                  -262090;4;0;false;false;;;;;;
                                  -262094;38;0;false;false;63;127;95;;;
                                  -262132;2;0;false;false;;;;;;
                                  -262134;1;0;false;false;0;0;0;;;
                                  -262135;1;0;false;false;;;;;;
                                  -262136;1;0;false;false;0;0;0;;;
                                  -262137;1;0;false;false;;;;;;
                                  -262138;31;0;false;false;0;0;0;;;
                                  -262169;1;0;false;false;;;;;;
                                  -262170;1;0;false;false;0;0;0;;;
                                  -262171;1;0;false;false;;;;;;
                                  -262172;3;0;false;false;0;0;0;;;
                                  -262175;1;0;false;false;;;;;;
                                  -262176;1;0;false;false;0;0;0;;;
                                  -262177;1;0;false;false;;;;;;
                                  -262178;1;0;false;false;0;0;0;;;
                                  -262179;1;0;false;false;;;;;;
                                  -262180;21;0;false;false;0;0;0;;;
                                  -262201;5;0;false;false;;;;;;
                                  -262206;8;0;false;false;0;0;0;;;
                                  -262214;1;0;false;false;;;;;;
                                  -262215;1;0;false;false;0;0;0;;;
                                  -262216;1;0;false;false;;;;;;
                                  -262217;23;0;false;false;0;0;0;;;
                                  -262240;3;0;false;false;;;;;;
                                  -262243;1;0;false;false;0;0;0;;;
                                  -262244;3;0;false;false;;;;;;
                                  -262247;4;1;false;false;127;0;85;;;
                                  -262251;4;0;false;false;;;;;;
                                  -262255;2;1;false;false;127;0;85;;;
                                  -262257;1;0;false;false;;;;;;
                                  -262258;2;0;false;false;0;0;0;;;
                                  -262260;1;0;false;false;;;;;;
                                  -262261;2;0;false;false;0;0;0;;;
                                  -262263;1;0;false;false;;;;;;
                                  -262264;16;0;false;false;0;0;0;;;
                                  -262280;1;0;false;false;;;;;;
                                  -262281;1;0;false;false;0;0;0;;;
                                  -262282;4;0;false;false;;;;;;
                                  -262286;38;0;false;false;63;127;95;;;
                                  -262324;2;0;false;false;;;;;;
                                  -262326;1;0;false;false;0;0;0;;;
                                  -262327;1;0;false;false;;;;;;
                                  -262328;1;0;false;false;0;0;0;;;
                                  -262329;1;0;false;false;;;;;;
                                  -262330;29;0;false;false;0;0;0;;;
                                  -262359;1;0;false;false;;;;;;
                                  -262360;1;0;false;false;0;0;0;;;
                                  -262361;1;0;false;false;;;;;;
                                  -262362;23;0;false;false;0;0;0;;;
                                  -262385;1;0;false;false;;;;;;
                                  -262386;1;0;false;false;0;0;0;;;
                                  -262387;1;0;false;false;;;;;;
                                  -262388;1;0;false;false;0;0;0;;;
                                  -262389;1;0;false;false;;;;;;
                                  -262390;21;0;false;false;0;0;0;;;
                                  -262411;4;0;false;false;;;;;;
                                  -262415;8;0;false;false;0;0;0;;;
                                  -262423;1;0;false;false;;;;;;
                                  -262424;1;0;false;false;0;0;0;;;
                                  -262425;1;0;false;false;;;;;;
                                  -262426;21;0;false;false;0;0;0;;;
                                  -262447;1;0;false;false;;;;;;
                                  -262448;1;0;false;false;0;0;0;;;
                                  -262449;1;0;false;false;;;;;;
                                  -262450;17;0;false;false;0;0;0;;;
                                  -262467;3;0;false;false;;;;;;
                                  -262470;1;0;false;false;0;0;0;;;
                                  -262471;3;0;false;false;;;;;;
                                  -262474;2;1;false;false;127;0;85;;;
                                  -262476;1;0;false;false;;;;;;
                                  -262477;5;0;false;false;0;0;0;;;
                                  -262482;1;0;false;false;;;;;;
                                  -262483;1;0;false;false;0;0;0;;;
                                  -262484;1;0;false;false;;;;;;
                                  -262485;9;0;false;false;0;0;0;;;
                                  -262494;1;0;false;false;;;;;;
                                  -262495;1;0;false;false;0;0;0;;;
                                  -262496;4;0;false;false;;;;;;
                                  -262500;8;0;false;false;0;0;0;;;
                                  -262508;1;0;false;false;;;;;;
                                  -262509;1;0;false;false;0;0;0;;;
                                  -262510;1;0;false;false;;;;;;
                                  -262511;28;0;false;false;0;0;0;;;
                                  -262539;1;0;false;false;;;;;;
                                  -262540;1;0;false;false;0;0;0;;;
                                  -262541;1;0;false;false;;;;;;
                                  -262542;18;0;false;false;0;0;0;;;
                                  -262560;1;0;false;false;;;;;;
                                  -262561;4;1;false;false;127;0;85;;;
                                  -262565;2;0;false;false;0;0;0;;;
                                  -262567;3;0;false;false;;;;;;
                                  -262570;1;0;false;false;0;0;0;;;
                                  -262571;3;0;false;false;;;;;;
                                  -262574;4;1;false;false;127;0;85;;;
                                  -262578;3;0;false;false;;;;;;
                                  -262581;2;1;false;false;127;0;85;;;
                                  -262583;1;0;false;false;;;;;;
                                  -262584;5;0;false;false;0;0;0;;;
                                  -262589;1;0;false;false;;;;;;
                                  -262590;1;0;false;false;0;0;0;;;
                                  -262591;1;0;false;false;;;;;;
                                  -262592;17;0;false;false;0;0;0;;;
                                  -262609;1;0;false;false;;;;;;
                                  -262610;1;0;false;false;0;0;0;;;
                                  -262611;4;0;false;false;;;;;;
                                  -262615;8;0;false;false;0;0;0;;;
                                  -262623;1;0;false;false;;;;;;
                                  -262624;1;0;false;false;0;0;0;;;
                                  -262625;1;0;false;false;;;;;;
                                  -262626;29;0;false;false;0;0;0;;;
                                  -262655;1;0;false;false;;;;;;
                                  -262656;1;0;false;false;0;0;0;;;
                                  -262657;1;0;false;false;;;;;;
                                  -262658;2;0;false;false;0;0;0;;;
                                  -262660;1;0;false;false;;;;;;
                                  -262661;1;0;false;false;0;0;0;;;
                                  -262662;1;0;false;false;;;;;;
                                  -262663;17;0;false;false;0;0;0;;;
                                  -262680;1;0;false;false;;;;;;
                                  -262681;1;0;false;false;0;0;0;;;
                                  -262682;1;0;false;false;;;;;;
                                  -262683;23;0;false;false;0;0;0;;;
                                  -262706;1;0;false;false;;;;;;
                                  -262707;4;1;false;false;127;0;85;;;
                                  -262711;2;0;false;false;0;0;0;;;
                                  -262713;3;0;false;false;;;;;;
                                  -262716;1;0;false;false;0;0;0;;;
                                  -262717;3;0;false;false;;;;;;
                                  -262720;6;1;false;false;127;0;85;;;
                                  -262726;1;0;false;false;;;;;;
                                  -262727;9;0;false;false;0;0;0;;;
                                  -262736;2;0;false;false;;;;;;
                                  -262738;1;0;false;false;0;0;0;;;
                                  -262739;2;0;false;false;;;;;;
                                  -262741;3;0;false;false;63;95;191;;;
                                  -262744;3;0;false;false;;;;;;
                                  -262747;1;0;false;false;63;95;191;;;
                                  -262748;1;0;false;false;;;;;;
                                  -262749;4;0;false;false;63;95;191;;;
                                  -262753;1;0;false;false;;;;;;
                                  -262754;3;0;false;false;63;95;191;;;
                                  -262757;1;0;false;false;;;;;;
                                  -262758;5;0;false;false;63;95;191;;;
                                  -262763;1;0;false;false;;;;;;
                                  -262764;8;0;false;false;63;95;191;;;
                                  -262772;1;0;false;false;;;;;;
                                  -262773;3;0;false;false;63;95;191;;;
                                  -262776;1;0;false;false;;;;;;
                                  -262777;7;0;false;false;63;95;191;;;
                                  -262784;1;0;false;false;;;;;;
                                  -262785;3;0;false;false;63;95;191;;;
                                  -262788;1;0;false;false;;;;;;
                                  -262789;5;0;false;false;63;95;191;;;
                                  -262794;1;0;false;false;;;;;;
                                  -262795;6;0;false;false;63;95;191;;;
                                  -262801;1;0;false;false;;;;;;
                                  -262802;4;0;false;false;63;95;191;;;
                                  -262806;1;0;false;false;;;;;;
                                  -262807;5;0;false;false;63;95;191;;;
                                  -262812;3;0;false;false;;;;;;
                                  -262815;2;0;false;false;63;95;191;;;
                                  -262817;2;0;false;false;;;;;;
                                  -262819;4;1;false;false;127;0;85;;;
                                  -262823;1;0;false;false;;;;;;
                                  -262824;11;0;false;false;0;0;0;;;
                                  -262835;1;0;false;false;;;;;;
                                  -262836;1;0;false;false;0;0;0;;;
                                  -262837;3;0;false;false;;;;;;
                                  -262840;3;1;false;false;127;0;85;;;
                                  -262843;1;0;false;false;;;;;;
                                  -262844;9;0;false;false;0;0;0;;;
                                  -262853;1;0;false;false;;;;;;
                                  -262854;1;0;false;false;0;0;0;;;
                                  -262855;1;0;false;false;;;;;;
                                  -262856;37;0;false;false;0;0;0;;;
                                  -262893;6;0;false;false;;;;;;
                                  -262899;21;0;false;false;0;0;0;;;
                                  -262920;2;0;false;false;;;;;;
                                  -262922;1;0;false;false;0;0;0;;;
                                  -262923;2;0;false;false;;;;;;
                                  -262925;3;0;false;false;63;95;191;;;
                                  -262928;3;0;false;false;;;;;;
                                  -262931;1;0;false;false;63;95;191;;;
                                  -262932;1;0;false;false;;;;;;
                                  -262933;4;0;false;false;63;95;191;;;
                                  -262937;1;0;false;false;;;;;;
                                  -262938;3;0;false;false;63;95;191;;;
                                  -262941;1;0;false;false;;;;;;
                                  -262942;5;0;false;false;63;95;191;;;
                                  -262947;1;0;false;false;;;;;;
                                  -262948;8;0;false;false;63;95;191;;;
                                  -262956;1;0;false;false;;;;;;
                                  -262957;3;0;false;false;63;95;191;;;
                                  -262960;1;0;false;false;;;;;;
                                  -262961;7;0;false;false;63;95;191;;;
                                  -262968;1;0;false;false;;;;;;
                                  -262969;3;0;false;false;63;95;191;;;
                                  -262972;1;0;false;false;;;;;;
                                  -262973;5;0;false;false;63;95;191;;;
                                  -262978;1;0;false;false;;;;;;
                                  -262979;6;0;false;false;63;95;191;;;
                                  -262985;1;0;false;false;;;;;;
                                  -262986;4;0;false;false;63;95;191;;;
                                  -262990;1;0;false;false;;;;;;
                                  -262991;5;0;false;false;63;95;191;;;
                                  -262996;3;0;false;false;;;;;;
                                  -262999;2;0;false;false;63;95;191;;;
                                  -263001;2;0;false;false;;;;;;
                                  -263003;4;1;false;false;127;0;85;;;
                                  -263007;1;0;false;false;;;;;;
                                  -263008;10;0;false;false;0;0;0;;;
                                  -263018;3;1;false;false;127;0;85;;;
                                  -263021;1;0;false;false;;;;;;
                                  -263022;10;0;false;false;0;0;0;;;
                                  -263032;1;0;false;false;;;;;;
                                  -263033;1;0;false;false;0;0;0;;;
                                  -263034;3;0;false;false;;;;;;
                                  -263037;3;1;false;false;127;0;85;;;
                                  -263040;1;0;false;false;;;;;;
                                  -263041;10;0;false;false;0;0;0;;;
                                  -263051;1;0;false;false;;;;;;
                                  -263052;1;0;false;false;0;0;0;;;
                                  -263053;1;0;false;false;;;;;;
                                  -263054;35;0;false;false;0;0;0;;;
                                  -263089;3;0;false;false;;;;;;
                                  -263092;6;0;false;false;0;0;0;;;
                                  -263098;1;0;false;false;;;;;;
                                  -263099;4;0;false;false;0;0;0;;;
                                  -263103;1;0;false;false;;;;;;
                                  -263104;1;0;false;false;0;0;0;;;
                                  -263105;1;0;false;false;;;;;;
                                  -263106;27;0;false;false;0;0;0;;;
                                  -263133;3;0;false;false;;;;;;
                                  -263136;3;1;false;false;127;0;85;;;
                                  -263139;1;0;false;false;;;;;;
                                  -263140;12;0;false;false;0;0;0;;;
                                  -263152;1;0;false;false;;;;;;
                                  -263153;1;0;false;false;0;0;0;;;
                                  -263154;1;0;false;false;;;;;;
                                  -263155;11;0;false;false;0;0;0;;;
                                  -263166;1;0;false;false;;;;;;
                                  -263167;1;0;false;false;0;0;0;;;
                                  -263168;1;0;false;false;;;;;;
                                  -263169;11;0;false;false;0;0;0;;;
                                  -263180;3;0;false;false;;;;;;
                                  -263183;3;1;false;false;127;0;85;;;
                                  -263186;1;0;false;false;;;;;;
                                  -263187;9;0;false;false;0;0;0;;;
                                  -263196;1;0;false;false;;;;;;
                                  -263197;1;0;false;false;0;0;0;;;
                                  -263198;1;0;false;false;;;;;;
                                  -263199;18;0;false;false;0;0;0;;;
                                  -263217;1;0;false;false;;;;;;
                                  -263218;10;0;false;false;0;0;0;;;
                                  -263228;1;0;false;false;;;;;;
                                  -263229;14;0;false;false;0;0;0;;;
                                  -263243;4;0;false;false;;;;;;
                                  -263247;7;1;false;false;127;0;85;;;
                                  -263254;1;0;false;false;;;;;;
                                  -263255;8;0;false;false;0;0;0;;;
                                  -263263;1;0;false;false;;;;;;
                                  -263264;1;0;false;false;0;0;0;;;
                                  -263265;1;0;false;false;;;;;;
                                  -263266;23;0;false;false;0;0;0;;;
                                  -263289;1;0;false;false;;;;;;
                                  -263290;11;0;false;false;0;0;0;;;
                                  -263301;3;0;false;false;;;;;;
                                  -263304;7;1;false;false;127;0;85;;;
                                  -263311;1;0;false;false;;;;;;
                                  -263312;20;0;false;false;0;0;0;;;
                                  -263332;1;0;false;false;;;;;;
                                  -263333;1;0;false;false;0;0;0;;;
                                  -263334;1;0;false;false;;;;;;
                                  -263335;5;1;false;false;127;0;85;;;
                                  -263340;1;0;false;false;0;0;0;;;
                                  -263341;3;0;false;false;;;;;;
                                  -263344;5;0;false;false;0;0;0;;;
                                  -263349;1;0;false;false;;;;;;
                                  -263350;5;0;false;false;0;0;0;;;
                                  -263355;1;0;false;false;;;;;;
                                  -263356;1;0;false;false;0;0;0;;;
                                  -263357;1;0;false;false;;;;;;
                                  -263358;11;0;false;false;0;0;0;;;
                                  -263369;5;0;false;false;;;;;;
                                  -263374;2;1;false;false;127;0;85;;;
                                  -263376;1;0;false;false;;;;;;
                                  -263377;9;0;false;false;0;0;0;;;
                                  -263386;1;0;false;false;;;;;;
                                  -263387;2;0;false;false;0;0;0;;;
                                  -263389;1;0;false;false;;;;;;
                                  -263390;5;0;false;false;0;0;0;;;
                                  -263395;1;0;false;false;;;;;;
                                  -263396;2;0;false;false;0;0;0;;;
                                  -263398;1;0;false;false;;;;;;
                                  -263399;4;1;false;false;127;0;85;;;
                                  -263403;1;0;false;false;0;0;0;;;
                                  -263404;1;0;false;false;;;;;;
                                  -263405;1;0;false;false;0;0;0;;;
                                  -263406;4;0;false;false;;;;;;
                                  -263410;3;1;false;false;127;0;85;;;
                                  -263413;1;0;false;false;;;;;;
                                  -263414;6;0;false;false;0;0;0;;;
                                  -263420;1;0;false;false;;;;;;
                                  -263421;1;0;false;false;0;0;0;;;
                                  -263422;1;0;false;false;;;;;;
                                  -263423;22;0;false;false;0;0;0;;;
                                  -263445;4;0;false;false;;;;;;
                                  -263449;2;1;false;false;127;0;85;;;
                                  -263451;1;0;false;false;;;;;;
                                  -263452;8;0;false;false;0;0;0;;;
                                  -263460;1;0;false;false;;;;;;
                                  -263461;1;0;false;false;0;0;0;;;
                                  -263462;1;0;false;false;;;;;;
                                  -263463;21;0;false;false;0;0;0;;;
                                  -263484;1;0;false;false;;;;;;
                                  -263485;1;0;false;false;0;0;0;;;
                                  -263486;1;0;false;false;;;;;;
                                  -263487;22;0;false;false;0;0;0;;;
                                  -263509;1;0;false;false;;;;;;
                                  -263510;1;0;false;false;0;0;0;;;
                                  -263511;1;0;false;false;;;;;;
                                  -263512;1;0;false;false;0;0;0;;;
                                  -263513;1;0;false;false;;;;;;
                                  -263514;2;0;false;false;0;0;0;;;
                                  -263516;1;0;false;false;;;;;;
                                  -263517;10;0;false;false;0;0;0;;;
                                  -263527;1;0;false;false;;;;;;
                                  -263528;1;0;false;false;0;0;0;;;
                                  -263529;5;0;false;false;;;;;;
                                  -263534;20;0;false;false;0;0;0;;;
                                  -263554;1;0;false;false;;;;;;
                                  -263555;1;0;false;false;0;0;0;;;
                                  -263556;1;0;false;false;;;;;;
                                  -263557;4;1;false;false;127;0;85;;;
                                  -263561;1;0;false;false;0;0;0;;;
                                  -263562;4;0;false;false;;;;;;
                                  -263566;1;0;false;false;0;0;0;;;
                                  -263567;3;0;false;false;;;;;;
                                  -263570;1;0;false;false;0;0;0;;;
                                  -263571;3;0;false;false;;;;;;
                                  -263574;2;1;false;false;127;0;85;;;
                                  -263576;1;0;false;false;;;;;;
                                  -263577;10;0;false;false;0;0;0;;;
                                  -263587;1;0;false;false;;;;;;
                                  -263588;2;0;false;false;0;0;0;;;
                                  -263590;1;0;false;false;;;;;;
                                  -263591;21;0;false;false;0;0;0;;;
                                  -263612;1;0;false;false;;;;;;
                                  -263613;1;0;false;false;0;0;0;;;
                                  -263614;4;0;false;false;;;;;;
                                  -263618;71;0;false;false;63;127;95;;;
                                  -263689;2;0;false;false;;;;;;
                                  -263691;70;0;false;false;63;127;95;;;
                                  -263761;2;0;false;false;;;;;;
                                  -263763;72;0;false;false;63;127;95;;;
                                  -263835;2;0;false;false;;;;;;
                                  -263837;75;0;false;false;63;127;95;;;
                                  -263912;2;0;false;false;;;;;;
                                  -263914;27;0;false;false;0;0;0;;;
                                  -263941;1;0;false;false;;;;;;
                                  -263942;10;0;false;false;0;0;0;;;
                                  -263952;1;0;false;false;;;;;;
                                  -263953;21;0;false;false;0;0;0;;;
                                  -263974;3;0;false;false;;;;;;
                                  -263977;1;0;false;false;0;0;0;;;
                                  -263978;2;0;false;false;;;;;;
                                  -263980;1;0;false;false;0;0;0;;;
                                  -263981;2;0;false;false;;;;;;
                                  -263983;3;0;false;false;63;95;191;;;
                                  -263986;3;0;false;false;;;;;;
                                  -263989;1;0;false;false;63;95;191;;;
                                  -263990;1;0;false;false;;;;;;
                                  -263991;7;0;false;false;63;95;191;;;
                                  -263998;1;0;false;false;;;;;;
                                  -263999;3;0;false;false;63;95;191;;;
                                  -264002;1;0;false;false;;;;;;
                                  -264003;9;0;false;false;63;95;191;;;
                                  -264012;1;0;false;false;;;;;;
                                  -264013;6;0;false;false;63;95;191;;;
                                  -264019;1;0;false;false;;;;;;
                                  -264020;4;0;false;false;63;95;191;;;
                                  -264024;1;0;false;false;;;;;;
                                  -264025;5;0;false;false;63;95;191;;;
                                  -264030;3;0;false;false;;;;;;
                                  -264033;1;0;false;false;63;95;191;;;
                                  -264034;1;0;false;false;;;;;;
                                  -264035;3;0;false;false;127;127;159;;;
                                  -264038;3;0;false;false;;;;;;
                                  -264041;1;0;false;false;63;95;191;;;
                                  -264042;3;0;false;false;;;;;;
                                  -264045;1;0;false;false;63;95;191;;;
                                  -264046;1;0;false;false;;;;;;
                                  -264047;7;1;false;false;127;159;191;;;
                                  -264054;6;0;false;false;63;95;191;;;
                                  -264060;1;0;false;false;;;;;;
                                  -264061;6;0;false;false;63;95;191;;;
                                  -264067;1;0;false;false;;;;;;
                                  -264068;4;0;false;false;63;95;191;;;
                                  -264072;1;0;false;false;;;;;;
                                  -264073;6;0;false;false;63;95;191;;;
                                  -264079;1;0;false;false;;;;;;
                                  -264080;2;0;false;false;63;95;191;;;
                                  -264082;1;0;false;false;;;;;;
                                  -264083;7;0;false;false;63;95;191;;;
                                  -264090;1;0;false;false;;;;;;
                                  -264091;4;0;false;false;63;95;191;;;
                                  -264095;1;0;false;false;;;;;;
                                  -264096;4;0;false;false;63;95;191;;;
                                  -264100;3;0;false;false;;;;;;
                                  -264103;2;0;false;false;63;95;191;;;
                                  -264105;2;0;false;false;;;;;;
                                  -264107;4;1;false;false;127;0;85;;;
                                  -264111;1;0;false;false;;;;;;
                                  -264112;11;0;false;false;0;0;0;;;
                                  -264123;3;1;false;false;127;0;85;;;
                                  -264126;1;0;false;false;;;;;;
                                  -264127;7;0;false;false;0;0;0;;;
                                  -264134;1;0;false;false;;;;;;
                                  -264135;1;0;false;false;0;0;0;;;
                                  -264136;3;0;false;false;;;;;;
                                  -264139;3;1;false;false;127;0;85;;;
                                  -264142;1;0;false;false;;;;;;
                                  -264143;4;0;false;false;0;0;0;;;
                                  -264147;1;0;false;false;;;;;;
                                  -264148;1;0;false;false;0;0;0;;;
                                  -264149;1;0;false;false;;;;;;
                                  -264150;32;0;false;false;0;0;0;;;
                                  -264182;3;0;false;false;;;;;;
                                  -264185;3;1;false;false;127;0;85;;;
                                  -264188;1;0;false;false;;;;;;
                                  -264189;10;0;false;false;0;0;0;;;
                                  -264199;1;0;false;false;;;;;;
                                  -264200;1;0;false;false;0;0;0;;;
                                  -264201;1;0;false;false;;;;;;
                                  -264202;30;0;false;false;0;0;0;;;
                                  -264232;3;0;false;false;;;;;;
                                  -264235;3;1;false;false;127;0;85;;;
                                  -264238;1;0;false;false;;;;;;
                                  -264239;12;0;false;false;0;0;0;;;
                                  -264251;1;0;false;false;;;;;;
                                  -264252;1;0;false;false;0;0;0;;;
                                  -264253;1;0;false;false;;;;;;
                                  -264254;6;0;false;false;0;0;0;;;
                                  -264260;1;0;false;false;;;;;;
                                  -264261;1;0;false;false;0;0;0;;;
                                  -264262;1;0;false;false;;;;;;
                                  -264263;11;0;false;false;0;0;0;;;
                                  -264274;3;0;false;false;;;;;;
                                  -264277;6;0;false;false;0;0;0;;;
                                  -264283;1;0;false;false;;;;;;
                                  -264284;8;0;false;false;0;0;0;;;
                                  -264292;1;0;false;false;;;;;;
                                  -264293;1;0;false;false;0;0;0;;;
                                  -264294;1;0;false;false;;;;;;
                                  -264295;22;0;false;false;0;0;0;;;
                                  -264317;3;0;false;false;;;;;;
                                  -264320;3;1;false;false;127;0;85;;;
                                  -264323;1;0;false;false;;;;;;
                                  -264324;9;0;false;false;0;0;0;;;
                                  -264333;1;0;false;false;;;;;;
                                  -264334;1;0;false;false;0;0;0;;;
                                  -264335;1;0;false;false;;;;;;
                                  -264336;22;0;false;false;0;0;0;;;
                                  -264358;1;0;false;false;;;;;;
                                  -264359;5;0;false;false;0;0;0;;;
                                  -264364;1;0;false;false;;;;;;
                                  -264365;14;0;false;false;0;0;0;;;
                                  -264379;6;0;false;false;;;;;;
                                  -264385;23;0;false;false;0;0;0;;;
                                  -264408;1;0;false;false;;;;;;
                                  -264409;6;0;false;false;0;0;0;;;
                                  -264415;3;0;false;false;;;;;;
                                  -264418;1;0;false;false;0;0;0;;;
                                  -264419;2;0;false;false;;;;;;
                                  -264421;3;0;false;false;63;95;191;;;
                                  -264424;2;0;false;false;;;;;;
                                  -264426;3;0;false;false;63;95;191;;;
                                  -264429;3;0;false;false;;;;;;
                                  -264432;1;0;false;false;63;95;191;;;
                                  -264433;1;0;false;false;;;;;;
                                  -264434;7;0;false;false;63;95;191;;;
                                  -264441;1;0;false;false;;;;;;
                                  -264442;3;0;false;false;63;95;191;;;
                                  -264445;1;0;false;false;;;;;;
                                  -264446;9;0;false;false;63;95;191;;;
                                  -264455;1;0;false;false;;;;;;
                                  -264456;4;0;false;false;63;95;191;;;
                                  -264460;1;0;false;false;;;;;;
                                  -264461;5;0;false;false;63;95;191;;;
                                  -264466;2;0;false;false;;;;;;
                                  -264468;3;0;false;false;63;95;191;;;
                                  -264471;1;0;false;false;;;;;;
                                  -264472;3;0;false;false;63;95;191;;;
                                  -264475;1;0;false;false;;;;;;
                                  -264476;2;0;false;false;63;95;191;;;
                                  -264478;1;0;false;false;;;;;;
                                  -264479;3;0;false;false;63;95;191;;;
                                  -264482;1;0;false;false;;;;;;
                                  -264483;9;0;false;false;63;95;191;;;
                                  -264492;1;0;false;false;;;;;;
                                  -264493;4;0;false;false;63;95;191;;;
                                  -264497;1;0;false;false;;;;;;
                                  -264498;2;0;false;false;63;95;191;;;
                                  -264500;1;0;false;false;;;;;;
                                  -264501;8;0;false;false;63;95;191;;;
                                  -264509;1;0;false;false;;;;;;
                                  -264510;4;0;false;false;63;95;191;;;
                                  -264514;3;0;false;false;;;;;;
                                  -264517;1;0;false;false;63;95;191;;;
                                  -264518;1;0;false;false;;;;;;
                                  -264519;5;0;false;false;63;95;191;;;
                                  -264524;2;0;false;false;;;;;;
                                  -264526;4;0;false;false;63;95;191;;;
                                  -264530;1;0;false;false;;;;;;
                                  -264531;4;0;false;false;63;95;191;;;
                                  -264535;1;0;false;false;;;;;;
                                  -264536;2;0;false;false;63;95;191;;;
                                  -264538;1;0;false;false;;;;;;
                                  -264539;1;0;false;false;63;95;191;;;
                                  -264540;1;0;false;false;;;;;;
                                  -264541;5;0;false;false;63;95;191;;;
                                  -264546;1;0;false;false;127;127;159;;;
                                  -264547;2;0;false;false;63;95;191;;;
                                  -264549;1;0;false;false;127;127;159;;;
                                  -264550;4;0;false;false;63;95;191;;;
                                  -264554;1;0;false;false;;;;;;
                                  -264555;9;0;false;false;63;95;191;;;
                                  -264564;1;0;false;false;;;;;;
                                  -264565;7;0;false;false;63;95;191;;;
                                  -264572;1;0;false;false;;;;;;
                                  -264573;3;0;false;false;63;95;191;;;
                                  -264576;1;0;false;false;;;;;;
                                  -264577;3;0;false;false;63;95;191;;;
                                  -264580;1;0;false;false;;;;;;
                                  -264581;2;0;false;false;63;95;191;;;
                                  -264583;1;0;false;false;;;;;;
                                  -264584;3;0;false;false;63;95;191;;;
                                  -264587;1;0;false;false;;;;;;
                                  -264588;9;0;false;false;63;95;191;;;
                                  -264597;1;0;false;false;;;;;;
                                  -264598;2;0;false;false;63;95;191;;;
                                  -264600;1;0;false;false;;;;;;
                                  -264601;3;0;false;false;63;95;191;;;
                                  -264604;3;0;false;false;;;;;;
                                  -264607;1;0;false;false;63;95;191;;;
                                  -264608;1;0;false;false;;;;;;
                                  -264609;6;0;false;false;63;95;191;;;
                                  -264615;1;0;false;false;;;;;;
                                  -264616;9;0;false;false;63;95;191;;;
                                  -264625;1;0;false;false;;;;;;
                                  -264626;2;0;false;false;63;95;191;;;
                                  -264628;1;0;false;false;;;;;;
                                  -264629;3;0;false;false;63;95;191;;;
                                  -264632;1;0;false;false;;;;;;
                                  -264633;9;0;false;false;63;95;191;;;
                                  -264642;1;0;false;false;;;;;;
                                  -264643;6;0;false;false;63;95;191;;;
                                  -264649;1;0;false;false;;;;;;
                                  -264650;5;0;false;false;63;95;191;;;
                                  -264655;1;0;false;false;;;;;;
                                  -264656;3;0;false;false;63;95;191;;;
                                  -264659;1;0;false;false;;;;;;
                                  -264660;5;0;false;false;63;95;191;;;
                                  -264665;1;0;false;false;;;;;;
                                  -264666;2;0;false;false;63;95;191;;;
                                  -264668;1;0;false;false;;;;;;
                                  -264669;9;0;false;false;63;95;191;;;
                                  -264678;3;0;false;false;;;;;;
                                  -264681;1;0;false;false;63;95;191;;;
                                  -264682;1;0;false;false;;;;;;
                                  -264683;3;0;false;false;127;127;159;;;
                                  -264686;3;0;false;false;;;;;;
                                  -264689;1;0;false;false;63;95;191;;;
                                  -264690;3;0;false;false;;;;;;
                                  -264693;1;0;false;false;63;95;191;;;
                                  -264694;1;0;false;false;;;;;;
                                  -264695;11;1;false;false;127;159;191;;;
                                  -264706;12;0;false;false;63;95;191;;;
                                  -264718;1;0;false;false;;;;;;
                                  -264719;4;0;false;false;127;127;159;;;
                                  -264723;3;0;false;false;;;;;;
                                  -264726;1;0;false;false;63;95;191;;;
                                  -264727;4;0;false;false;;;;;;
                                  -264731;4;0;false;false;127;127;159;;;
                                  -264735;21;0;false;false;63;95;191;;;
                                  -264756;1;0;false;false;;;;;;
                                  -264757;1;0;false;false;127;127;159;;;
                                  -264758;1;0;false;false;;;;;;
                                  -264759;2;0;false;false;63;95;191;;;
                                  -264761;1;0;false;false;;;;;;
                                  -264762;3;0;false;false;63;95;191;;;
                                  -264765;1;0;false;false;;;;;;
                                  -264766;8;0;false;false;63;95;191;;;
                                  -264774;1;0;false;false;;;;;;
                                  -264775;3;0;false;false;63;95;191;;;
                                  -264778;1;0;false;false;;;;;;
                                  -264779;4;0;false;false;63;95;191;;;
                                  -264783;1;0;false;false;;;;;;
                                  -264784;8;0;false;false;63;95;191;;;
                                  -264792;5;0;false;false;127;127;159;;;
                                  -264797;3;0;false;false;;;;;;
                                  -264800;1;0;false;false;63;95;191;;;
                                  -264801;4;0;false;false;;;;;;
                                  -264805;4;0;false;false;127;127;159;;;
                                  -264809;27;0;false;false;63;95;191;;;
                                  -264836;1;0;false;false;;;;;;
                                  -264837;1;0;false;false;127;127;159;;;
                                  -264838;1;0;false;false;;;;;;
                                  -264839;2;0;false;false;63;95;191;;;
                                  -264841;1;0;false;false;;;;;;
                                  -264842;3;0;false;false;63;95;191;;;
                                  -264845;1;0;false;false;;;;;;
                                  -264846;6;0;false;false;63;95;191;;;
                                  -264852;1;0;false;false;;;;;;
                                  -264853;4;0;false;false;63;95;191;;;
                                  -264857;1;0;false;false;;;;;;
                                  -264858;3;0;false;false;63;95;191;;;
                                  -264861;1;0;false;false;;;;;;
                                  -264862;6;0;false;false;63;95;191;;;
                                  -264868;1;0;false;false;;;;;;
                                  -264869;4;0;false;false;63;95;191;;;
                                  -264873;1;0;false;false;;;;;;
                                  -264874;7;0;false;false;63;95;191;;;
                                  -264881;1;0;false;false;;;;;;
                                  -264882;3;0;false;false;63;95;191;;;
                                  -264885;1;0;false;false;;;;;;
                                  -264886;8;0;false;false;63;95;191;;;
                                  -264894;5;0;false;false;127;127;159;;;
                                  -264899;3;0;false;false;;;;;;
                                  -264902;1;0;false;false;63;95;191;;;
                                  -264903;1;0;false;false;;;;;;
                                  -264904;5;0;false;false;127;127;159;;;
                                  -264909;3;0;false;false;;;;;;
                                  -264912;2;0;false;false;63;95;191;;;
                                  -264914;2;0;false;false;;;;;;
                                  -264916;6;1;false;false;127;0;85;;;
                                  -264922;1;0;false;false;;;;;;
                                  -264923;4;1;false;false;127;0;85;;;
                                  -264927;1;0;false;false;;;;;;
                                  -264928;15;0;false;false;0;0;0;;;
                                  -264943;1;0;false;false;;;;;;
                                  -264944;1;0;false;false;0;0;0;;;
                                  -264945;3;0;false;false;;;;;;
                                  -264948;14;0;false;false;0;0;0;;;
                                  -264962;3;0;false;false;;;;;;
                                  -264965;7;1;false;false;127;0;85;;;
                                  -264972;1;0;false;false;;;;;;
                                  -264973;14;0;false;false;0;0;0;;;
                                  -264987;3;0;false;false;;;;;;
                                  -264990;3;1;false;false;127;0;85;;;
                                  -264993;1;0;false;false;;;;;;
                                  -264994;12;0;false;false;0;0;0;;;
                                  -265006;1;0;false;false;;;;;;
                                  -265007;10;0;false;false;0;0;0;;;
                                  -265017;1;0;false;false;;;;;;
                                  -265018;7;0;false;false;0;0;0;;;
                                  -265025;1;0;false;false;;;;;;
                                  -265026;10;0;false;false;0;0;0;;;
                                  -265036;1;0;false;false;;;;;;
                                  -265037;8;0;false;false;0;0;0;;;
                                  -265045;1;0;false;false;;;;;;
                                  -265046;5;0;false;false;0;0;0;;;
                                  -265051;1;0;false;false;;;;;;
                                  -265052;13;0;false;false;0;0;0;;;
                                  -265065;5;0;false;false;;;;;;
                                  -265070;37;0;false;false;63;127;95;;;
                                  -265107;1;0;false;false;;;;;;
                                  -265108;7;1;false;false;127;0;85;;;
                                  -265115;1;0;false;false;;;;;;
                                  -265116;11;0;false;false;0;0;0;;;
                                  -265127;1;0;false;false;;;;;;
                                  -265128;1;0;false;false;0;0;0;;;
                                  -265129;1;0;false;false;;;;;;
                                  -265130;11;0;false;false;0;0;0;;;
                                  -265141;1;0;false;false;;;;;;
                                  -265142;2;0;false;false;0;0;0;;;
                                  -265144;1;0;false;false;;;;;;
                                  -265145;12;0;false;false;0;0;0;;;
                                  -265157;5;0;false;false;;;;;;
                                  -265162;2;1;false;false;127;0;85;;;
                                  -265164;1;0;false;false;;;;;;
                                  -265165;13;0;false;false;0;0;0;;;
                                  -265178;1;0;false;false;;;;;;
                                  -265179;1;0;false;false;0;0;0;;;
                                  -265180;4;0;false;false;;;;;;
                                  -265184;11;0;false;false;0;0;0;;;
                                  -265195;1;0;false;false;;;;;;
                                  -265196;1;0;false;false;0;0;0;;;
                                  -265197;1;0;false;false;;;;;;
                                  -265198;12;0;false;false;0;0;0;;;
                                  -265210;4;0;false;false;;;;;;
                                  -265214;9;0;false;false;0;0;0;;;
                                  -265223;1;0;false;false;;;;;;
                                  -265224;1;0;false;false;0;0;0;;;
                                  -265225;1;0;false;false;;;;;;
                                  -265226;12;0;false;false;0;0;0;;;
                                  -265238;3;0;false;false;;;;;;
                                  -265241;1;0;false;false;0;0;0;;;
                                  -265242;1;0;false;false;;;;;;
                                  -265243;4;1;false;false;127;0;85;;;
                                  -265247;1;0;false;false;;;;;;
                                  -265248;1;0;false;false;0;0;0;;;
                                  -265249;4;0;false;false;;;;;;
                                  -265253;11;0;false;false;0;0;0;;;
                                  -265264;1;0;false;false;;;;;;
                                  -265265;1;0;false;false;0;0;0;;;
                                  -265266;1;0;false;false;;;;;;
                                  -265267;12;0;false;false;0;0;0;;;
                                  -265279;4;0;false;false;;;;;;
                                  -265283;9;0;false;false;0;0;0;;;
                                  -265292;1;0;false;false;;;;;;
                                  -265293;1;0;false;false;0;0;0;;;
                                  -265294;1;0;false;false;;;;;;
                                  -265295;12;0;false;false;0;0;0;;;
                                  -265307;3;0;false;false;;;;;;
                                  -265310;1;0;false;false;0;0;0;;;
                                  -265311;6;0;false;false;;;;;;
                                  -265317;65;0;false;false;63;127;95;;;
                                  -265382;1;0;false;false;;;;;;
                                  -265383;9;0;false;false;0;0;0;;;
                                  -265392;1;0;false;false;;;;;;
                                  -265393;1;0;false;false;0;0;0;;;
                                  -265394;1;0;false;false;;;;;;
                                  -265395;37;0;false;false;0;0;0;;;
                                  -265432;3;0;false;false;;;;;;
                                  -265435;12;0;false;false;0;0;0;;;
                                  -265447;1;0;false;false;;;;;;
                                  -265448;1;0;false;false;0;0;0;;;
                                  -265449;1;0;false;false;;;;;;
                                  -265450;11;0;false;false;0;0;0;;;
                                  -265461;1;0;false;false;;;;;;
                                  -265462;1;0;false;false;0;0;0;;;
                                  -265463;1;0;false;false;;;;;;
                                  -265464;35;0;false;false;0;0;0;;;
                                  -265499;3;0;false;false;;;;;;
                                  -265502;6;0;false;false;0;0;0;;;
                                  -265508;1;0;false;false;;;;;;
                                  -265509;1;0;false;false;0;0;0;;;
                                  -265510;1;0;false;false;;;;;;
                                  -265511;40;0;false;false;0;0;0;;;
                                  -265551;1;0;false;false;;;;;;
                                  -265552;10;0;false;false;0;0;0;;;
                                  -265562;1;0;false;false;;;;;;
                                  -265563;14;0;false;false;0;0;0;;;
                                  -265577;4;0;false;false;;;;;;
                                  -265581;7;0;false;false;0;0;0;;;
                                  -265588;2;0;false;false;;;;;;
                                  -265590;1;0;false;false;0;0;0;;;
                                  -265591;1;0;false;false;;;;;;
                                  -265592;35;0;false;false;0;0;0;;;
                                  -265627;3;0;false;false;;;;;;
                                  -265630;12;0;false;false;0;0;0;;;
                                  -265642;1;0;false;false;;;;;;
                                  -265643;1;0;false;false;0;0;0;;;
                                  -265644;1;0;false;false;;;;;;
                                  -265645;9;0;false;false;0;0;0;;;
                                  -265654;1;0;false;false;;;;;;
                                  -265655;1;0;false;false;0;0;0;;;
                                  -265656;1;0;false;false;;;;;;
                                  -265657;33;0;false;false;0;0;0;;;
                                  -265690;3;0;false;false;;;;;;
                                  -265693;4;0;false;false;0;0;0;;;
                                  -265697;1;0;false;false;;;;;;
                                  -265698;1;0;false;false;0;0;0;;;
                                  -265699;1;0;false;false;;;;;;
                                  -265700;38;0;false;false;0;0;0;;;
                                  -265738;1;0;false;false;;;;;;
                                  -265739;8;0;false;false;0;0;0;;;
                                  -265747;1;0;false;false;;;;;;
                                  -265748;14;0;false;false;0;0;0;;;
                                  -265762;6;0;false;false;;;;;;
                                  -265768;76;0;false;false;63;127;95;;;
                                  -265844;1;0;false;false;;;;;;
                                  -265845;3;1;false;false;127;0;85;;;
                                  -265848;1;0;false;false;;;;;;
                                  -265849;1;0;false;false;0;0;0;;;
                                  -265850;1;0;false;false;;;;;;
                                  -265851;1;0;false;false;0;0;0;;;
                                  -265852;1;0;false;false;;;;;;
                                  -265853;22;0;false;false;0;0;0;;;
                                  -265875;3;0;false;false;;;;;;
                                  -265878;2;1;false;false;127;0;85;;;
                                  -265880;1;0;false;false;;;;;;
                                  -265881;13;0;false;false;0;0;0;;;
                                  -265894;1;0;false;false;;;;;;
                                  -265895;1;0;false;false;0;0;0;;;
                                  -265896;4;0;false;false;;;;;;
                                  -265900;13;0;false;false;0;0;0;;;
                                  -265913;1;0;false;false;;;;;;
                                  -265914;1;0;false;false;0;0;0;;;
                                  -265915;1;0;false;false;;;;;;
                                  -265916;6;0;false;false;0;0;0;;;
                                  -265922;1;0;false;false;;;;;;
                                  -265923;1;0;false;false;0;0;0;;;
                                  -265924;1;0;false;false;;;;;;
                                  -265925;4;0;false;false;0;0;0;;;
                                  -265929;1;0;false;false;;;;;;
                                  -265930;2;0;false;false;0;0;0;;;
                                  -265932;1;0;false;false;;;;;;
                                  -265933;2;0;false;false;0;0;0;;;
                                  -265935;3;0;false;false;;;;;;
                                  -265938;1;0;false;false;0;0;0;;;
                                  -265939;1;0;false;false;;;;;;
                                  -265940;4;1;false;false;127;0;85;;;
                                  -265944;1;0;false;false;;;;;;
                                  -265945;1;0;false;false;0;0;0;;;
                                  -265946;4;0;false;false;;;;;;
                                  -265950;13;0;false;false;0;0;0;;;
                                  -265963;1;0;false;false;;;;;;
                                  -265964;1;0;false;false;0;0;0;;;
                                  -265965;1;0;false;false;;;;;;
                                  -265966;4;0;false;false;0;0;0;;;
                                  -265970;1;0;false;false;;;;;;
                                  -265971;1;0;false;false;0;0;0;;;
                                  -265972;1;0;false;false;;;;;;
                                  -265973;6;0;false;false;0;0;0;;;
                                  -265979;1;0;false;false;;;;;;
                                  -265980;2;0;false;false;0;0;0;;;
                                  -265982;1;0;false;false;;;;;;
                                  -265983;2;0;false;false;0;0;0;;;
                                  -265985;3;0;false;false;;;;;;
                                  -265988;1;0;false;false;0;0;0;;;
                                  -265989;6;0;false;false;;;;;;
                                  -265995;2;1;false;false;127;0;85;;;
                                  -265997;1;0;false;false;;;;;;
                                  -265998;15;0;false;false;0;0;0;;;
                                  -266013;1;0;false;false;;;;;;
                                  -266014;1;0;false;false;0;0;0;;;
                                  -266015;4;0;false;false;;;;;;
                                  -266019;63;0;false;false;63;127;95;;;
                                  -266082;2;0;false;false;;;;;;
                                  -266084;31;0;false;false;63;127;95;;;
                                  -266115;2;0;false;false;;;;;;
                                  -266117;20;0;false;false;0;0;0;;;
                                  -266137;1;0;false;false;;;;;;
                                  -266138;11;0;false;false;0;0;0;;;
                                  -266149;4;0;false;false;;;;;;
                                  -266153;71;0;false;false;63;127;95;;;
                                  -266224;2;0;false;false;;;;;;
                                  -266226;4;0;false;false;0;0;0;;;
                                  -266230;1;0;false;false;;;;;;
                                  -266231;1;0;false;false;0;0;0;;;
                                  -266232;1;0;false;false;;;;;;
                                  -266233;38;0;false;false;0;0;0;;;
                                  -266271;1;0;false;false;;;;;;
                                  -266272;8;0;false;false;0;0;0;;;
                                  -266280;1;0;false;false;;;;;;
                                  -266281;14;0;false;false;0;0;0;;;
                                  -266295;5;0;false;false;;;;;;
                                  -266300;18;0;false;false;0;0;0;;;
                                  -266318;1;0;false;false;;;;;;
                                  -266319;9;0;false;false;0;0;0;;;
                                  -266328;3;0;false;false;;;;;;
                                  -266331;1;0;false;false;0;0;0;;;
                                  -266332;1;0;false;false;;;;;;
                                  -266333;4;1;false;false;127;0;85;;;
                                  -266337;1;0;false;false;;;;;;
                                  -266338;1;0;false;false;0;0;0;;;
                                  -266339;4;0;false;false;;;;;;
                                  -266343;66;0;false;false;63;127;95;;;
                                  -266409;2;0;false;false;;;;;;
                                  -266411;24;0;false;false;63;127;95;;;
                                  -266435;2;0;false;false;;;;;;
                                  -266437;18;0;false;false;0;0;0;;;
                                  -266455;1;0;false;false;;;;;;
                                  -266456;9;0;false;false;0;0;0;;;
                                  -266465;3;0;false;false;;;;;;
                                  -266468;1;0;false;false;0;0;0;;;
                                  -266469;4;0;false;false;;;;;;
                                  -266473;1;0;false;false;0;0;0;;;
                                  -266474;2;0;false;false;;;;;;
                                  -266476;7;1;false;false;127;0;85;;;
                                  -266483;1;0;false;false;;;;;;
                                  -266484;13;0;false;false;0;0;0;;;
                                  -266497;1;0;false;false;;;;;;
                                  -266498;1;0;false;false;0;0;0;;;
                                  -266499;3;0;false;false;;;;;;
                                  -266502;6;1;false;false;127;0;85;;;
                                  -266508;1;0;false;false;;;;;;
                                  -266509;26;0;false;false;0;0;0;;;
                                  -266535;2;0;false;false;;;;;;
                                  -266537;1;0;false;false;0;0;0;;;
                                  -266538;2;0;false;false;;;;;;
                                  -266540;3;0;false;false;63;95;191;;;
                                  -266543;3;0;false;false;;;;;;
                                  -266546;1;0;false;false;63;95;191;;;
                                  -266547;1;0;false;false;;;;;;
                                  -266548;7;0;false;false;63;95;191;;;
                                  -266555;1;0;false;false;;;;;;
                                  -266556;3;0;false;false;63;95;191;;;
                                  -266559;1;0;false;false;;;;;;
                                  -266560;9;0;false;false;63;95;191;;;
                                  -266569;1;0;false;false;;;;;;
                                  -266570;3;0;false;false;63;95;191;;;
                                  -266573;1;0;false;false;;;;;;
                                  -266574;5;0;false;false;63;95;191;;;
                                  -266579;1;0;false;false;;;;;;
                                  -266580;8;0;false;false;63;95;191;;;
                                  -266588;1;0;false;false;;;;;;
                                  -266589;9;0;false;false;63;95;191;;;
                                  -266598;1;0;false;false;;;;;;
                                  -266599;2;0;false;false;63;95;191;;;
                                  -266601;1;0;false;false;;;;;;
                                  -266602;3;0;false;false;63;95;191;;;
                                  -266605;1;0;false;false;;;;;;
                                  -266606;4;0;false;false;63;95;191;;;
                                  -266610;1;0;false;false;;;;;;
                                  -266611;7;0;false;false;63;95;191;;;
                                  -266618;3;0;false;false;;;;;;
                                  -266621;1;0;false;false;63;95;191;;;
                                  -266622;1;0;false;false;;;;;;
                                  -266623;2;0;false;false;63;95;191;;;
                                  -266625;1;0;false;false;;;;;;
                                  -266626;3;0;false;false;63;95;191;;;
                                  -266629;1;0;false;false;;;;;;
                                  -266630;9;0;false;false;63;95;191;;;
                                  -266639;1;0;false;false;;;;;;
                                  -266640;10;0;false;false;63;95;191;;;
                                  -266650;1;0;false;false;;;;;;
                                  -266651;4;0;false;false;63;95;191;;;
                                  -266655;1;0;false;false;;;;;;
                                  -266656;3;0;false;false;63;95;191;;;
                                  -266659;1;0;false;false;;;;;;
                                  -266660;8;0;false;false;63;95;191;;;
                                  -266668;1;0;false;false;;;;;;
                                  -266669;5;0;false;false;63;95;191;;;
                                  -266674;1;0;false;false;;;;;;
                                  -266675;3;0;false;false;63;95;191;;;
                                  -266678;1;0;false;false;;;;;;
                                  -266679;9;0;false;false;63;95;191;;;
                                  -266688;1;0;false;false;;;;;;
                                  -266689;2;0;false;false;63;95;191;;;
                                  -266691;4;0;false;false;;;;;;
                                  -266695;1;0;false;false;63;95;191;;;
                                  -266696;1;0;false;false;;;;;;
                                  -266697;5;0;false;false;63;95;191;;;
                                  -266702;1;0;false;false;;;;;;
                                  -266703;3;0;false;false;63;95;191;;;
                                  -266706;1;0;false;false;;;;;;
                                  -266707;3;0;false;false;63;95;191;;;
                                  -266710;1;0;false;false;;;;;;
                                  -266711;5;0;false;false;63;95;191;;;
                                  -266716;1;0;false;false;;;;;;
                                  -266717;5;0;false;false;63;95;191;;;
                                  -266722;1;0;false;false;;;;;;
                                  -266723;2;0;false;false;63;95;191;;;
                                  -266725;1;0;false;false;;;;;;
                                  -266726;3;0;false;false;63;95;191;;;
                                  -266729;1;0;false;false;;;;;;
                                  -266730;3;0;false;false;63;95;191;;;
                                  -266733;1;0;false;false;;;;;;
                                  -266734;2;0;false;false;63;95;191;;;
                                  -266736;1;0;false;false;;;;;;
                                  -266737;3;0;false;false;63;95;191;;;
                                  -266740;1;0;false;false;;;;;;
                                  -266741;3;0;false;false;63;95;191;;;
                                  -266744;1;0;false;false;;;;;;
                                  -266745;5;0;false;false;63;95;191;;;
                                  -266750;3;0;false;false;;;;;;
                                  -266753;1;0;false;false;63;95;191;;;
                                  -266754;1;0;false;false;;;;;;
                                  -266755;2;0;false;false;63;95;191;;;
                                  -266757;1;0;false;false;;;;;;
                                  -266758;3;0;false;false;63;95;191;;;
                                  -266761;1;0;false;false;;;;;;
                                  -266762;9;0;false;false;63;95;191;;;
                                  -266771;1;0;false;false;;;;;;
                                  -266772;2;0;false;false;63;95;191;;;
                                  -266774;1;0;false;false;;;;;;
                                  -266775;6;0;false;false;63;95;191;;;
                                  -266781;1;0;false;false;;;;;;
                                  -266782;3;0;false;false;63;95;191;;;
                                  -266785;1;0;false;false;;;;;;
                                  -266786;8;0;false;false;63;95;191;;;
                                  -266794;1;0;false;false;;;;;;
                                  -266795;4;0;false;false;63;95;191;;;
                                  -266799;1;0;false;false;;;;;;
                                  -266800;2;0;false;false;63;95;191;;;
                                  -266802;1;0;false;false;;;;;;
                                  -266803;2;0;false;false;63;95;191;;;
                                  -266805;1;0;false;false;;;;;;
                                  -266806;5;0;false;false;63;95;191;;;
                                  -266811;1;0;false;false;;;;;;
                                  -266812;2;0;false;false;63;95;191;;;
                                  -266814;1;0;false;false;;;;;;
                                  -266815;4;0;false;false;63;95;191;;;
                                  -266819;1;0;false;false;;;;;;
                                  -266820;3;0;false;false;63;95;191;;;
                                  -266823;3;0;false;false;;;;;;
                                  -266826;1;0;false;false;63;95;191;;;
                                  -266827;1;0;false;false;;;;;;
                                  -266828;4;0;false;false;63;95;191;;;
                                  -266832;1;0;false;false;;;;;;
                                  -266833;4;0;false;false;63;95;191;;;
                                  -266837;1;0;false;false;;;;;;
                                  -266838;7;0;false;false;63;95;191;;;
                                  -266845;1;0;false;false;;;;;;
                                  -266846;9;0;false;false;63;95;191;;;
                                  -266855;2;0;false;false;;;;;;
                                  -266857;2;0;false;false;63;95;191;;;
                                  -266859;1;0;false;false;;;;;;
                                  -266860;3;0;false;false;63;95;191;;;
                                  -266863;1;0;false;false;;;;;;
                                  -266864;9;0;false;false;63;95;191;;;
                                  -266873;1;0;false;false;;;;;;
                                  -266874;2;0;false;false;63;95;191;;;
                                  -266876;1;0;false;false;;;;;;
                                  -266877;6;0;false;false;63;95;191;;;
                                  -266883;1;0;false;false;;;;;;
                                  -266884;3;0;false;false;63;95;191;;;
                                  -266887;1;0;false;false;;;;;;
                                  -266888;8;0;false;false;63;95;191;;;
                                  -266896;1;0;false;false;;;;;;
                                  -266897;4;0;false;false;63;95;191;;;
                                  -266901;4;0;false;false;;;;;;
                                  -266905;1;0;false;false;63;95;191;;;
                                  -266906;1;0;false;false;;;;;;
                                  -266907;2;0;false;false;63;95;191;;;
                                  -266909;1;0;false;false;;;;;;
                                  -266910;2;0;false;false;63;95;191;;;
                                  -266912;1;0;false;false;;;;;;
                                  -266913;4;0;false;false;63;95;191;;;
                                  -266917;1;0;false;false;;;;;;
                                  -266918;10;0;false;false;63;95;191;;;
                                  -266928;3;0;false;false;;;;;;
                                  -266931;1;0;false;false;63;95;191;;;
                                  -266932;1;0;false;false;;;;;;
                                  -266933;3;0;false;false;127;127;159;;;
                                  -266936;3;0;false;false;;;;;;
                                  -266939;1;0;false;false;63;95;191;;;
                                  -266940;3;0;false;false;;;;;;
                                  -266943;1;0;false;false;63;95;191;;;
                                  -266944;1;0;false;false;;;;;;
                                  -266945;7;1;false;false;127;159;191;;;
                                  -266952;11;0;false;false;63;95;191;;;
                                  -266963;1;0;false;false;;;;;;
                                  -266964;6;0;false;false;63;95;191;;;
                                  -266970;1;0;false;false;;;;;;
                                  -266971;2;0;false;false;63;95;191;;;
                                  -266973;1;0;false;false;;;;;;
                                  -266974;3;0;false;false;63;95;191;;;
                                  -266977;1;0;false;false;;;;;;
                                  -266978;4;0;false;false;63;95;191;;;
                                  -266982;1;0;false;false;;;;;;
                                  -266983;6;0;false;false;63;95;191;;;
                                  -266989;3;0;false;false;;;;;;
                                  -266992;1;0;false;false;63;95;191;;;
                                  -266993;1;0;false;false;;;;;;
                                  -266994;7;1;false;false;127;159;191;;;
                                  -267001;14;0;false;false;63;95;191;;;
                                  -267015;1;0;false;false;;;;;;
                                  -267016;6;0;false;false;63;95;191;;;
                                  -267022;1;0;false;false;;;;;;
                                  -267023;2;0;false;false;63;95;191;;;
                                  -267025;1;0;false;false;;;;;;
                                  -267026;4;0;false;false;63;95;191;;;
                                  -267030;1;0;false;false;;;;;;
                                  -267031;5;0;false;false;63;95;191;;;
                                  -267036;1;0;false;false;;;;;;
                                  -267037;8;0;false;false;63;95;191;;;
                                  -267045;3;0;false;false;;;;;;
                                  -267048;1;0;false;false;63;95;191;;;
                                  -267049;1;0;false;false;;;;;;
                                  -267050;7;1;false;false;127;159;191;;;
                                  -267057;9;0;false;false;63;95;191;;;
                                  -267066;1;0;false;false;;;;;;
                                  -267067;6;0;false;false;63;95;191;;;
                                  -267073;1;0;false;false;;;;;;
                                  -267074;2;0;false;false;63;95;191;;;
                                  -267076;1;0;false;false;;;;;;
                                  -267077;3;0;false;false;63;95;191;;;
                                  -267080;1;0;false;false;;;;;;
                                  -267081;4;0;false;false;63;95;191;;;
                                  -267085;3;0;false;false;;;;;;
                                  -267088;2;0;false;false;63;95;191;;;
                                  -267090;2;0;false;false;;;;;;
                                  -267092;4;1;false;false;127;0;85;;;
                                  -267096;1;0;false;false;;;;;;
                                  -267097;16;0;false;false;0;0;0;;;
                                  -267113;3;1;false;false;127;0;85;;;
                                  -267116;1;0;false;false;;;;;;
                                  -267117;12;0;false;false;0;0;0;;;
                                  -267129;1;0;false;false;;;;;;
                                  -267130;3;1;false;false;127;0;85;;;
                                  -267133;1;0;false;false;;;;;;
                                  -267134;15;0;false;false;0;0;0;;;
                                  -267149;1;0;false;false;;;;;;
                                  -267150;3;1;false;false;127;0;85;;;
                                  -267153;1;0;false;false;;;;;;
                                  -267154;10;0;false;false;0;0;0;;;
                                  -267164;1;0;false;false;;;;;;
                                  -267165;1;0;false;false;0;0;0;;;
                                  -267166;3;0;false;false;;;;;;
                                  -267169;2;1;false;false;127;0;85;;;
                                  -267171;1;0;false;false;;;;;;
                                  -267172;12;0;false;false;0;0;0;;;
                                  -267184;1;0;false;false;;;;;;
                                  -267185;2;0;false;false;0;0;0;;;
                                  -267187;1;0;false;false;;;;;;
                                  -267188;12;0;false;false;0;0;0;;;
                                  -267200;1;0;false;false;;;;;;
                                  -267201;1;0;false;false;0;0;0;;;
                                  -267202;4;0;false;false;;;;;;
                                  -267206;38;0;false;false;63;127;95;;;
                                  -267244;2;0;false;false;;;;;;
                                  -267246;6;1;false;false;127;0;85;;;
                                  -267252;1;0;false;false;0;0;0;;;
                                  -267253;3;0;false;false;;;;;;
                                  -267256;1;0;false;false;0;0;0;;;
                                  -267257;3;0;false;false;;;;;;
                                  -267260;2;1;false;false;127;0;85;;;
                                  -267262;1;0;false;false;;;;;;
                                  -267263;12;0;false;false;0;0;0;;;
                                  -267275;1;0;false;false;;;;;;
                                  -267276;1;0;false;false;0;0;0;;;
                                  -267277;1;0;false;false;;;;;;
                                  -267278;12;0;false;false;0;0;0;;;
                                  -267290;1;0;false;false;;;;;;
                                  -267291;1;0;false;false;0;0;0;;;
                                  -267292;4;0;false;false;;;;;;
                                  -267296;48;0;false;false;63;127;95;;;
                                  -267344;2;0;false;false;;;;;;
                                  -267346;32;0;false;false;0;0;0;;;
                                  -267378;1;0;false;false;;;;;;
                                  -267379;11;0;false;false;0;0;0;;;
                                  -267390;1;0;false;false;;;;;;
                                  -267391;1;0;false;false;0;0;0;;;
                                  -267392;1;0;false;false;;;;;;
                                  -267393;12;0;false;false;0;0;0;;;
                                  -267405;1;0;false;false;;;;;;
                                  -267406;4;1;false;false;127;0;85;;;
                                  -267410;2;0;false;false;0;0;0;;;
                                  -267412;3;0;false;false;;;;;;
                                  -267415;1;0;false;false;0;0;0;;;
                                  -267416;3;0;false;false;;;;;;
                                  -267419;2;1;false;false;127;0;85;;;
                                  -267421;1;0;false;false;;;;;;
                                  -267422;12;0;false;false;0;0;0;;;
                                  -267434;1;0;false;false;;;;;;
                                  -267435;1;0;false;false;0;0;0;;;
                                  -267436;1;0;false;false;;;;;;
                                  -267437;11;0;false;false;0;0;0;;;
                                  -267448;1;0;false;false;;;;;;
                                  -267449;1;0;false;false;0;0;0;;;
                                  -267450;1;0;false;false;;;;;;
                                  -267451;14;0;false;false;0;0;0;;;
                                  -267465;1;0;false;false;;;;;;
                                  -267466;2;0;false;false;0;0;0;;;
                                  -267468;1;0;false;false;;;;;;
                                  -267469;11;0;false;false;0;0;0;;;
                                  -267480;1;0;false;false;;;;;;
                                  -267481;1;0;false;false;0;0;0;;;
                                  -267482;1;0;false;false;;;;;;
                                  -267483;11;0;false;false;0;0;0;;;
                                  -267494;1;0;false;false;;;;;;
                                  -267495;1;0;false;false;0;0;0;;;
                                  -267496;1;0;false;false;;;;;;
                                  -267497;15;0;false;false;0;0;0;;;
                                  -267512;1;0;false;false;;;;;;
                                  -267513;1;0;false;false;0;0;0;;;
                                  -267514;4;0;false;false;;;;;;
                                  -267518;48;0;false;false;63;127;95;;;
                                  -267566;2;0;false;false;;;;;;
                                  -267568;65;0;false;false;63;127;95;;;
                                  -267633;2;0;false;false;;;;;;
                                  -267635;78;0;false;false;63;127;95;;;
                                  -267713;2;0;false;false;;;;;;
                                  -267715;3;1;false;false;127;0;85;;;
                                  -267718;1;0;false;false;;;;;;
                                  -267719;12;0;false;false;0;0;0;;;
                                  -267731;1;0;false;false;;;;;;
                                  -267732;1;0;false;false;0;0;0;;;
                                  -267733;1;0;false;false;;;;;;
                                  -267734;9;0;false;false;0;0;0;;;
                                  -267743;1;0;false;false;;;;;;
                                  -267744;1;0;false;false;0;0;0;;;
                                  -267745;1;0;false;false;;;;;;
                                  -267746;15;0;false;false;0;0;0;;;
                                  -267761;4;0;false;false;;;;;;
                                  -267765;3;1;false;false;127;0;85;;;
                                  -267768;1;0;false;false;;;;;;
                                  -267769;11;0;false;false;0;0;0;;;
                                  -267780;1;0;false;false;;;;;;
                                  -267781;1;0;false;false;0;0;0;;;
                                  -267782;1;0;false;false;;;;;;
                                  -267783;11;0;false;false;0;0;0;;;
                                  -267794;1;0;false;false;;;;;;
                                  -267795;1;0;false;false;0;0;0;;;
                                  -267796;1;0;false;false;;;;;;
                                  -267797;10;0;false;false;0;0;0;;;
                                  -267807;4;0;false;false;;;;;;
                                  -267811;32;0;false;false;0;0;0;;;
                                  -267843;1;0;false;false;;;;;;
                                  -267844;11;0;false;false;0;0;0;;;
                                  -267855;1;0;false;false;;;;;;
                                  -267856;1;0;false;false;0;0;0;;;
                                  -267857;1;0;false;false;;;;;;
                                  -267858;12;0;false;false;0;0;0;;;
                                  -267870;1;0;false;false;;;;;;
                                  -267871;1;0;false;false;0;0;0;;;
                                  -267872;1;0;false;false;;;;;;
                                  -267873;12;0;false;false;0;0;0;;;
                                  -267885;1;0;false;false;;;;;;
                                  -267886;4;1;false;false;127;0;85;;;
                                  -267890;2;0;false;false;0;0;0;;;
                                  -267892;3;0;false;false;;;;;;
                                  -267895;1;0;false;false;0;0;0;;;
                                  -267896;3;0;false;false;;;;;;
                                  -267899;2;1;false;false;127;0;85;;;
                                  -267901;1;0;false;false;;;;;;
                                  -267902;12;0;false;false;0;0;0;;;
                                  -267914;1;0;false;false;;;;;;
                                  -267915;1;0;false;false;0;0;0;;;
                                  -267916;1;0;false;false;;;;;;
                                  -267917;11;0;false;false;0;0;0;;;
                                  -267928;1;0;false;false;;;;;;
                                  -267929;2;0;false;false;0;0;0;;;
                                  -267931;1;0;false;false;;;;;;
                                  -267932;11;0;false;false;0;0;0;;;
                                  -267943;1;0;false;false;;;;;;
                                  -267944;1;0;false;false;0;0;0;;;
                                  -267945;1;0;false;false;;;;;;
                                  -267946;11;0;false;false;0;0;0;;;
                                  -267957;1;0;false;false;;;;;;
                                  -267958;1;0;false;false;0;0;0;;;
                                  -267959;1;0;false;false;;;;;;
                                  -267960;15;0;false;false;0;0;0;;;
                                  -267975;1;0;false;false;;;;;;
                                  -267976;1;0;false;false;0;0;0;;;
                                  -267977;4;0;false;false;;;;;;
                                  -267981;69;0;false;false;63;127;95;;;
                                  -268050;2;0;false;false;;;;;;
                                  -268052;32;0;false;false;0;0;0;;;
                                  -268084;1;0;false;false;;;;;;
                                  -268085;1;0;false;false;0;0;0;;;
                                  -268086;1;0;false;false;;;;;;
                                  -268087;10;0;false;false;0;0;0;;;
                                  -268097;1;0;false;false;;;;;;
                                  -268098;2;0;false;false;0;0;0;;;
                                  -268100;1;0;false;false;;;;;;
                                  -268101;4;1;false;false;127;0;85;;;
                                  -268105;2;0;false;false;0;0;0;;;
                                  -268107;4;0;false;false;;;;;;
                                  -268111;52;0;false;false;63;127;95;;;
                                  -268163;2;0;false;false;;;;;;
                                  -268165;19;0;false;false;0;0;0;;;
                                  -268184;3;0;false;false;;;;;;
                                  -268187;1;0;false;false;0;0;0;;;
                                  -268188;3;0;false;false;;;;;;
                                  -268191;4;1;false;false;127;0;85;;;
                                  -268195;1;0;false;false;;;;;;
                                  -268196;1;0;false;false;0;0;0;;;
                                  -268197;4;0;false;false;;;;;;
                                  -268201;46;0;false;false;63;127;95;;;
                                  -268247;2;0;false;false;;;;;;
                                  -268249;32;0;false;false;0;0;0;;;
                                  -268281;1;0;false;false;;;;;;
                                  -268282;1;0;false;false;0;0;0;;;
                                  -268283;1;0;false;false;;;;;;
                                  -268284;9;0;false;false;0;0;0;;;
                                  -268293;1;0;false;false;;;;;;
                                  -268294;1;0;false;false;0;0;0;;;
                                  -268295;1;0;false;false;;;;;;
                                  -268296;15;0;false;false;0;0;0;;;
                                  -268311;1;0;false;false;;;;;;
                                  -268312;11;0;false;false;0;0;0;;;
                                  -268323;1;0;false;false;;;;;;
                                  -268324;1;0;false;false;0;0;0;;;
                                  -268325;1;0;false;false;;;;;;
                                  -268326;12;0;false;false;0;0;0;;;
                                  -268338;1;0;false;false;;;;;;
                                  -268339;4;1;false;false;127;0;85;;;
                                  -268343;2;0;false;false;0;0;0;;;
                                  -268345;4;0;false;false;;;;;;
                                  -268349;52;0;false;false;63;127;95;;;
                                  -268401;2;0;false;false;;;;;;
                                  -268403;19;0;false;false;0;0;0;;;
                                  -268422;3;0;false;false;;;;;;
                                  -268425;1;0;false;false;0;0;0;;;
                                  -268426;3;0;false;false;;;;;;
                                  -268429;1;0;false;false;0;0;0;;;
                                  -268430;2;0;false;false;;;;;;
                                  -268432;3;0;false;false;63;95;191;;;
                                  -268435;3;0;false;false;;;;;;
                                  -268438;1;0;false;false;63;95;191;;;
                                  -268439;1;0;false;false;;;;;;
                                  -268440;7;0;false;false;63;95;191;;;
                                  -268447;1;0;false;false;;;;;;
                                  -268448;3;0;false;false;63;95;191;;;
                                  -268451;1;0;false;false;;;;;;
                                  -268452;5;0;false;false;63;95;191;;;
                                  -268457;3;0;false;false;;;;;;
                                  -268460;1;0;false;false;63;95;191;;;
                                  -268461;1;0;false;false;;;;;;
                                  -268462;3;0;false;false;127;127;159;;;
                                  -268465;3;0;false;false;;;;;;
                                  -268468;1;0;false;false;63;95;191;;;
                                  -268469;4;0;false;false;;;;;;
                                  -268473;1;0;false;false;63;95;191;;;
                                  -268474;1;0;false;false;;;;;;
                                  -268475;7;1;false;false;127;159;191;;;
                                  -268482;18;0;false;false;63;95;191;;;
                                  -268500;1;0;false;false;;;;;;
                                  -268501;6;0;false;false;63;95;191;;;
                                  -268507;1;0;false;false;;;;;;
                                  -268508;4;0;false;false;63;95;191;;;
                                  -268512;1;0;false;false;;;;;;
                                  -268513;5;0;false;false;63;95;191;;;
                                  -268518;1;0;false;false;;;;;;
                                  -268519;6;0;false;false;63;95;191;;;
                                  -268525;1;0;false;false;;;;;;
                                  -268526;6;0;false;false;63;95;191;;;
                                  -268532;4;0;false;false;;;;;;
                                  -268536;1;0;false;false;63;95;191;;;
                                  -268537;2;0;false;false;;;;;;
                                  -268539;8;0;false;false;63;95;191;;;
                                  -268547;3;0;false;false;;;;;;
                                  -268550;2;0;false;false;63;95;191;;;
                                  -268552;2;0;false;false;;;;;;
                                  -268554;4;1;false;false;127;0;85;;;
                                  -268558;1;0;false;false;;;;;;
                                  -268559;15;0;false;false;0;0;0;;;
                                  -268574;3;1;false;false;127;0;85;;;
                                  -268577;1;0;false;false;;;;;;
                                  -268578;19;0;false;false;0;0;0;;;
                                  -268597;1;0;false;false;;;;;;
                                  -268598;1;0;false;false;0;0;0;;;
                                  -268599;3;0;false;false;;;;;;
                                  -268602;14;0;false;false;0;0;0;;;
                                  -268616;1;0;false;false;;;;;;
                                  -268617;14;0;false;false;0;0;0;;;
                                  -268631;1;0;false;false;;;;;;
                                  -268632;1;0;false;false;0;0;0;;;
                                  -268633;1;0;false;false;;;;;;
                                  -268634;16;0;false;false;0;0;0;;;
                                  -268650;1;0;false;false;;;;;;
                                  -268651;8;0;false;false;0;0;0;;;
                                  -268659;3;0;false;false;;;;;;
                                  -268662;3;1;false;false;127;0;85;;;
                                  -268665;1;0;false;false;;;;;;
                                  -268666;12;0;false;false;0;0;0;;;
                                  -268678;5;0;false;false;;;;;;
                                  -268683;72;0;false;false;63;127;95;;;
                                  -268755;1;0;false;false;;;;;;
                                  -268756;70;0;false;false;63;127;95;;;
                                  -268826;1;0;false;false;;;;;;
                                  -268827;37;0;false;false;63;127;95;;;
                                  -268864;1;0;false;false;;;;;;
                                  -268865;2;1;false;false;127;0;85;;;
                                  -268867;1;0;false;false;;;;;;
                                  -268868;19;0;false;false;0;0;0;;;
                                  -268887;1;0;false;false;;;;;;
                                  -268888;2;0;false;false;0;0;0;;;
                                  -268890;1;0;false;false;;;;;;
                                  -268891;1;0;false;false;0;0;0;;;
                                  -268892;1;0;false;false;;;;;;
                                  -268893;2;0;false;false;0;0;0;;;
                                  -268895;1;0;false;false;;;;;;
                                  -268896;15;0;false;false;0;0;0;;;
                                  -268911;1;0;false;false;;;;;;
                                  -268912;1;0;false;false;0;0;0;;;
                                  -268913;1;0;false;false;;;;;;
                                  -268914;18;0;false;false;0;0;0;;;
                                  -268932;1;0;false;false;;;;;;
                                  -268933;2;0;false;false;0;0;0;;;
                                  -268935;4;0;false;false;;;;;;
                                  -268939;29;0;false;false;0;0;0;;;
                                  -268968;1;0;false;false;;;;;;
                                  -268969;2;0;false;false;0;0;0;;;
                                  -268971;1;0;false;false;;;;;;
                                  -268972;30;0;false;false;0;0;0;;;
                                  -269002;1;0;false;false;;;;;;
                                  -269003;1;0;false;false;0;0;0;;;
                                  -269004;4;0;false;false;;;;;;
                                  -269008;6;1;false;false;127;0;85;;;
                                  -269014;1;0;false;false;0;0;0;;;
                                  -269015;3;0;false;false;;;;;;
                                  -269018;1;0;false;false;0;0;0;;;
                                  -269019;3;0;false;false;;;;;;
                                  -269022;27;0;false;false;0;0;0;;;
                                  -269049;9;0;false;false;;;;;;
                                  -269058;59;0;false;false;63;127;95;;;
                                  -269117;1;0;false;false;;;;;;
                                  -269118;11;0;false;false;0;0;0;;;
                                  -269129;1;0;false;false;;;;;;
                                  -269130;1;0;false;false;0;0;0;;;
                                  -269131;1;0;false;false;;;;;;
                                  -269132;35;0;false;false;0;0;0;;;
                                  -269167;3;0;false;false;;;;;;
                                  -269170;62;0;false;false;63;127;95;;;
                                  -269232;1;0;false;false;;;;;;
                                  -269233;65;0;false;false;63;127;95;;;
                                  -269298;1;0;false;false;;;;;;
                                  -269299;38;0;false;false;63;127;95;;;
                                  -269337;1;0;false;false;;;;;;
                                  -269338;2;1;false;false;127;0;85;;;
                                  -269340;1;0;false;false;;;;;;
                                  -269341;12;0;false;false;0;0;0;;;
                                  -269353;1;0;false;false;;;;;;
                                  -269354;1;0;false;false;0;0;0;;;
                                  -269355;1;0;false;false;;;;;;
                                  -269356;22;0;false;false;0;0;0;;;
                                  -269378;1;0;false;false;;;;;;
                                  -269379;1;0;false;false;0;0;0;;;
                                  -269380;1;0;false;false;;;;;;
                                  -269381;1;0;false;false;0;0;0;;;
                                  -269382;1;0;false;false;;;;;;
                                  -269383;2;0;false;false;0;0;0;;;
                                  -269385;4;0;false;false;;;;;;
                                  -269389;9;0;false;false;0;0;0;;;
                                  -269398;1;0;false;false;;;;;;
                                  -269399;2;0;false;false;0;0;0;;;
                                  -269401;1;0;false;false;;;;;;
                                  -269402;35;0;false;false;0;0;0;;;
                                  -269437;1;0;false;false;;;;;;
                                  -269438;1;0;false;false;0;0;0;;;
                                  -269439;1;0;false;false;;;;;;
                                  -269440;3;0;false;false;0;0;0;;;
                                  -269443;1;0;false;false;;;;;;
                                  -269444;1;0;false;false;0;0;0;;;
                                  -269445;4;0;false;false;;;;;;
                                  -269449;14;0;false;false;0;0;0;;;
                                  -269463;3;0;false;false;;;;;;
                                  -269466;1;0;false;false;0;0;0;;;
                                  -269467;3;0;false;false;;;;;;
                                  -269470;2;1;false;false;127;0;85;;;
                                  -269472;1;0;false;false;;;;;;
                                  -269473;12;0;false;false;0;0;0;;;
                                  -269485;1;0;false;false;;;;;;
                                  -269486;2;0;false;false;0;0;0;;;
                                  -269488;1;0;false;false;;;;;;
                                  -269489;9;0;false;false;0;0;0;;;
                                  -269498;1;0;false;false;;;;;;
                                  -269499;1;0;false;false;0;0;0;;;
                                  -269500;4;0;false;false;;;;;;
                                  -269504;9;0;false;false;0;0;0;;;
                                  -269513;1;0;false;false;;;;;;
                                  -269514;11;0;false;false;0;0;0;;;
                                  -269525;1;0;false;false;;;;;;
                                  -269526;1;0;false;false;0;0;0;;;
                                  -269527;1;0;false;false;;;;;;
                                  -269528;17;0;false;false;0;0;0;;;
                                  -269545;4;0;false;false;;;;;;
                                  -269549;62;0;false;false;63;127;95;;;
                                  -269611;2;0;false;false;;;;;;
                                  -269613;70;0;false;false;63;127;95;;;
                                  -269683;2;0;false;false;;;;;;
                                  -269685;44;0;false;false;63;127;95;;;
                                  -269729;2;0;false;false;;;;;;
                                  -269731;20;0;false;false;0;0;0;;;
                                  -269751;1;0;false;false;;;;;;
                                  -269752;2;0;false;false;0;0;0;;;
                                  -269754;1;0;false;false;;;;;;
                                  -269755;12;0;false;false;0;0;0;;;
                                  -269767;1;0;false;false;;;;;;
                                  -269768;1;0;false;false;0;0;0;;;
                                  -269769;1;0;false;false;;;;;;
                                  -269770;9;0;false;false;0;0;0;;;
                                  -269779;1;0;false;false;;;;;;
                                  -269780;1;0;false;false;0;0;0;;;
                                  -269781;1;0;false;false;;;;;;
                                  -269782;23;0;false;false;0;0;0;;;
                                  -269805;4;0;false;false;;;;;;
                                  -269809;64;0;false;false;63;127;95;;;
                                  -269873;2;0;false;false;;;;;;
                                  -269875;71;0;false;false;63;127;95;;;
                                  -269946;2;0;false;false;;;;;;
                                  -269948;27;0;false;false;63;127;95;;;
                                  -269975;2;0;false;false;;;;;;
                                  -269977;2;1;false;false;127;0;85;;;
                                  -269979;1;0;false;false;;;;;;
                                  -269980;21;0;false;false;0;0;0;;;
                                  -270001;1;0;false;false;;;;;;
                                  -270002;1;0;false;false;0;0;0;;;
                                  -270003;1;0;false;false;;;;;;
                                  -270004;2;0;false;false;0;0;0;;;
                                  -270006;1;0;false;false;;;;;;
                                  -270007;1;0;false;false;0;0;0;;;
                                  -270008;5;0;false;false;;;;;;
                                  -270013;20;0;false;false;0;0;0;;;
                                  -270033;1;0;false;false;;;;;;
                                  -270034;1;0;false;false;0;0;0;;;
                                  -270035;1;0;false;false;;;;;;
                                  -270036;2;0;false;false;0;0;0;;;
                                  -270038;4;0;false;false;;;;;;
                                  -270042;1;0;false;false;0;0;0;;;
                                  -270043;4;0;false;false;;;;;;
                                  -270047;8;0;false;false;0;0;0;;;
                                  -270055;1;0;false;false;;;;;;
                                  -270056;1;0;false;false;0;0;0;;;
                                  -270057;1;0;false;false;;;;;;
                                  -270058;12;0;false;false;0;0;0;;;
                                  -270070;4;0;false;false;;;;;;
                                  -270074;9;0;false;false;0;0;0;;;
                                  -270083;1;0;false;false;;;;;;
                                  -270084;1;0;false;false;0;0;0;;;
                                  -270085;1;0;false;false;;;;;;
                                  -270086;34;0;false;false;0;0;0;;;
                                  -270120;4;0;false;false;;;;;;
                                  -270124;2;1;false;false;127;0;85;;;
                                  -270126;1;0;false;false;;;;;;
                                  -270127;12;0;false;false;0;0;0;;;
                                  -270139;1;0;false;false;;;;;;
                                  -270140;2;0;false;false;0;0;0;;;
                                  -270142;1;0;false;false;;;;;;
                                  -270143;4;1;false;false;127;0;85;;;
                                  -270147;1;0;false;false;0;0;0;;;
                                  -270148;1;0;false;false;;;;;;
                                  -270149;1;0;false;false;0;0;0;;;
                                  -270150;5;0;false;false;;;;;;
                                  -270155;47;0;false;false;0;0;0;;;
                                  -270202;4;0;false;false;;;;;;
                                  -270206;1;0;false;false;0;0;0;;;
                                  -270207;3;0;false;false;;;;;;
                                  -270210;1;0;false;false;0;0;0;;;
                                  -270211;3;0;false;false;;;;;;
                                  -270214;53;0;false;false;63;127;95;;;
                                  -270267;1;0;false;false;;;;;;
                                  -270268;63;0;false;false;63;127;95;;;
                                  -270331;1;0;false;false;;;;;;
                                  -270332;19;0;false;false;0;0;0;;;
                                  -270351;7;0;false;false;;;;;;
                                  -270358;59;0;false;false;63;127;95;;;
                                  -270417;1;0;false;false;;;;;;
                                  -270418;5;1;false;false;127;0;85;;;
                                  -270423;10;0;false;false;0;0;0;;;
                                  -270433;2;0;false;false;;;;;;
                                  -270435;1;0;false;false;0;0;0;;;
                                  -270436;2;0;false;false;;;;;;
                                  -270438;1;0;false;false;0;0;0;;;
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/tab.png b/branches/flexBox/sandbox/sandbox/orion/samples/tab.png
                                  deleted file mode 100644
                                  index cca224fa..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion/samples/tab.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/text.txt b/branches/flexBox/sandbox/sandbox/orion/samples/text.txt
                                  deleted file mode 100644
                                  index 61429ef6..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/text.txt
                                  +++ /dev/null
                                  @@ -1,7951 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2000, 2005 IBM Corporation and others.
                                  - * All rights reserved. This program and the accompanying materials
                                  - * are made available under the terms of the Eclipse Public License v1.0
                                  - * which accompanies this distribution, and is available at
                                  - * http://www.eclipse.org/legal/epl-v10.html
                                  - *
                                  - * Contributors:
                                  - *     IBM Corporation - initial API and implementation
                                  - *******************************************************************************/
                                  -package org.eclipse.swt.custom;
                                  -
                                  -
                                  -import java.util.*;
                                  -
                                  -import org.eclipse.swt.*;
                                  -import org.eclipse.swt.accessibility.*;
                                  -import org.eclipse.swt.dnd.*;
                                  -import org.eclipse.swt.events.*;
                                  -import org.eclipse.swt.graphics.*;
                                  -import org.eclipse.swt.internal.*;
                                  -import org.eclipse.swt.printing.*;
                                  -import org.eclipse.swt.widgets.*;
                                  -
                                  -/**
                                  - * A StyledText is an editable user interface object that displays lines 
                                  - * of text.  The following style attributes can be defined for the text: 
                                  - * <ul>
                                  - * <li>foreground color 
                                  - * <li>background color
                                  - * <li>font style (bold, italic, bold-italic, regular)
                                  - * <li>underline
                                  - * <li>strikeout
                                  - * </ul>
                                  - * <p>
                                  - * In addition to text style attributes, the background color of a line may 
                                  - * be specified.
                                  - * </p>
                                  - * <p>
                                  - * There are two ways to use this widget when specifying text style information.  
                                  - * You may use the API that is defined for StyledText or you may define your own 
                                  - * LineStyleListener.  If you define your own listener, you will be responsible 
                                  - * for maintaining the text style information for the widget.  IMPORTANT: You may 
                                  - * not define your own listener and use the StyledText API.  The following
                                  - * StyledText API is not supported if you have defined a LineStyleListener:
                                  - * <ul>
                                  - * <li>getStyleRangeAtOffset(int)
                                  - * <li>getStyleRanges()
                                  - * <li>replaceStyleRanges(int,int,StyleRange[])
                                  - * <li>setStyleRange(StyleRange)
                                  - * <li>setStyleRanges(StyleRange[])
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * There are two ways to use this widget when specifying line background colors.
                                  - * You may use the API that is defined for StyledText or you may define your own 
                                  - * LineBackgroundListener.  If you define your own listener, you will be responsible 
                                  - * for maintaining the line background color information for the widget.  
                                  - * IMPORTANT: You may not define your own listener and use the StyledText API.  
                                  - * The following StyledText API is not supported if you have defined a 
                                  - * LineBackgroundListener:
                                  - * <ul>
                                  - * <li>getLineBackground(int)
                                  - * <li>setLineBackground(int,int,Color)
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * The content implementation for this widget may also be user-defined.  To do so,
                                  - * you must implement the StyledTextContent interface and use the StyledText API
                                  - * setContent(StyledTextContent) to initialize the widget. 
                                  - * </p>
                                  - * <p>
                                  - * IMPORTANT: This class is <em>not</em> intended to be subclassed.
                                  - * </p>
                                  - * <dl>
                                  - * <dt><b>Styles:</b><dd>FULL_SELECTION, MULTI, READ_ONLY, SINGLE, WRAP
                                  - * <dt><b>Events:</b><dd>ExtendedModify, LineGetBackground, LineGetSegments, LineGetStyle, Modify, Selection, Verify, VerifyKey
                                  - * </dl>
                                  - */
                                  -public class StyledText extends Canvas {
                                  -	static final char TAB = '\t';
                                  -	static final String PlatformLineDelimiter = System.getProperty("line.separator");
                                  -	static final int BIDI_CARET_WIDTH = 3;
                                  -	static final int DEFAULT_WIDTH	= 64;
                                  -	static final int DEFAULT_HEIGHT = 64;
                                  -	static final int V_SCROLL_RATE = 50;
                                  -	static final int H_SCROLL_RATE = 10;
                                  -	
                                  -	static final int ExtendedModify = 3000;
                                  -	static final int LineGetBackground = 3001;
                                  -	static final int LineGetStyle = 3002;
                                  -	static final int TextChanging = 3003;
                                  -	static final int TextSet = 3004;
                                  -	static final int VerifyKey = 3005;
                                  -	static final int TextChanged = 3006;
                                  -	static final int LineGetSegments = 3007;
                                  -	
                                  -	Color selectionBackground;	// selection background color
                                  -	Color selectionForeground;	// selection foreground color
                                  -	StyledTextContent logicalContent;	// native content (default or user specified)
                                  -	StyledTextContent content;			// line wrapping content, same as logicalContent if word wrap is off
                                  -	DisplayRenderer renderer;
                                  -	Listener listener;
                                  -	TextChangeListener textChangeListener;	// listener for TextChanging, TextChanged and TextSet events from StyledTextContent
                                  -	DefaultLineStyler defaultLineStyler;// used for setStyles API when no LineStyleListener is registered
                                  -	LineCache lineCache;
                                  -	boolean userLineStyle = false;		// true=widget is using a user defined line style listener for line styles. false=widget is using the default line styler to store line styles
                                  -	boolean userLineBackground = false;	// true=widget is using a user defined line background listener for line backgrounds. false=widget is using the default line styler to store line backgrounds
                                  -	int verticalScrollOffset = 0;		// pixel based
                                  -	int horizontalScrollOffset = 0;		// pixel based
                                  -	int topIndex = 0;					// top visible line
                                  -	int lastPaintTopIndex = -1;
                                  -	int topOffset = 0;					// offset of first character in top line
                                  -	int clientAreaHeight = 0;			// the client area height. Needed to calculate content width for new 
                                  -										// visible lines during Resize callback
                                  -	int clientAreaWidth = 0;			// the client area width. Needed during Resize callback to determine 
                                  -										// if line wrap needs to be recalculated
                                  -	int lineHeight;						// line height=font height
                                  -	int tabLength = 4;					// number of characters in a tab
                                  -	int leftMargin;
                                  -	int topMargin;
                                  -	int rightMargin;
                                  -	int bottomMargin;
                                  -	Cursor ibeamCursor;		
                                  -	int columnX;							// keep track of the horizontal caret position
                                  -										// when changing lines/pages. Fixes bug 5935
                                  -	int caretOffset = 0;
                                  -	Point selection = new Point(0, 0);	// x and y are start and end caret offsets of selection
                                  -	Point clipboardSelection;           // x and y are start and end caret offsets of previous selection
                                  -	int selectionAnchor;				// position of selection anchor. 0 based offset from beginning of text
                                  -	Point doubleClickSelection;			// selection after last mouse double click
                                  -	boolean editable = true;
                                  -	boolean wordWrap = false;
                                  -	boolean doubleClickEnabled = true;	// see getDoubleClickEnabled 
                                  -	boolean overwrite = false;			// insert/overwrite edit mode
                                  -	int textLimit = -1;					// limits the number of characters the user can type in the widget. Unlimited by default.
                                  -	Hashtable keyActionMap = new Hashtable();
                                  -	Color background = null;			// workaround for bug 4791
                                  -	Color foreground = null;			//
                                  -	Clipboard clipboard;
                                  -	boolean mouseDown = false;
                                  -	boolean mouseDoubleClick = false;	// true=a double click ocurred. Don't do mouse swipe selection.
                                  -	int autoScrollDirection = SWT.NULL;	// the direction of autoscrolling (up, down, right, left)
                                  -	int autoScrollDistance = 0;
                                  -	int lastTextChangeStart;			// cache data of the 
                                  -	int lastTextChangeNewLineCount;		// last text changing 
                                  -	int lastTextChangeNewCharCount;		// event for use in the 
                                  -	int lastTextChangeReplaceLineCount;	// text changed handler
                                  -	int lastTextChangeReplaceCharCount;	
                                  -	boolean isMirrored;
                                  -	boolean bidiColoring = false;		// apply the BIDI algorithm on text segments of the same color
                                  -	Image leftCaretBitmap = null;
                                  -	Image rightCaretBitmap = null;
                                  -	int caretDirection = SWT.NULL;
                                  -	boolean advancing = true;
                                  -	Caret defaultCaret = null;
                                  -	boolean updateCaretDirection = true;
                                  -
                                  -	final static boolean IS_CARBON, IS_GTK, IS_MOTIF;
                                  -	final static boolean DOUBLE_BUFFER;
                                  -	static {
                                  -		String platform = SWT.getPlatform();
                                  -		IS_CARBON = "carbon".equals(platform);
                                  -		IS_GTK = "gtk".equals(platform);
                                  -		IS_MOTIF = "motif".equals(platform);
                                  -		DOUBLE_BUFFER = !IS_CARBON;
                                  -	}
                                  -
                                  -	/**
                                  -	 * The Printing class implements printing of a range of text.
                                  -	 * An instance of <class>Printing </class> is returned in the 
                                  -	 * StyledText#print(Printer) API. The run() method may be 
                                  -	 * invoked from any thread.
                                  -	 */
                                  -	static class Printing implements Runnable {
                                  -		final static int LEFT = 0;						// left aligned header/footer segment
                                  -		final static int CENTER = 1;					// centered header/footer segment
                                  -		final static int RIGHT = 2;						// right aligned header/footer segment
                                  -
                                  -		StyledText parent;
                                  -		Printer printer;
                                  -		PrintRenderer renderer;
                                  -		StyledTextPrintOptions printOptions;
                                  -		StyledTextContent printerContent;				// copy of the widget content
                                  -		Rectangle clientArea;							// client area to print on
                                  -		Font printerFont;
                                  -		FontData displayFontData;
                                  -		Hashtable printerColors;						// printer color cache for line backgrounds and style
                                  -		Hashtable lineBackgrounds = new Hashtable();	// cached line backgrounds
                                  -		Hashtable lineStyles = new Hashtable();			// cached line styles
                                  -		Hashtable bidiSegments = new Hashtable();		// cached bidi segments when running on a bidi platform
                                  -		GC gc;											// printer GC
                                  -		int pageWidth;									// width of a printer page in pixels
                                  -		int startPage;									// first page to print
                                  -		int endPage;									// last page to print
                                  -		int pageSize;									// number of lines on a page
                                  -		int startLine;									// first (wrapped) line to print
                                  -		int endLine;									// last (wrapped) line to print
                                  -		boolean singleLine;								// widget single line mode
                                  -		Point selection = null;					// selected text
                                  -		boolean mirrored;						//indicates the printing gc should be mirrored
                                  -
                                  -	/**
                                  -	 * Creates an instance of <class>Printing</class>.
                                  -	 * Copies the widget content and rendering data that needs 
                                  -	 * to be requested from listeners.
                                  -	 * </p>
                                  -	 * @param parent StyledText widget to print.
                                  -	 * @param printer printer device to print on.
                                  -	 * @param printOptions print options
                                  -	 */		
                                  -	Printing(StyledText parent, Printer printer, StyledTextPrintOptions printOptions) {
                                  -		PrinterData data = printer.getPrinterData();
                                  -
                                  -		this.parent = parent;
                                  -		this.printer = printer;
                                  -		this.printOptions = printOptions;
                                  -		this.mirrored = (parent.getStyle() & SWT.MIRRORED) != 0;
                                  -		singleLine = parent.isSingleLine();
                                  -		startPage = 1;
                                  -		endPage = Integer.MAX_VALUE;
                                  -		if (data.scope == PrinterData.PAGE_RANGE) {
                                  -			startPage = data.startPage;
                                  -			endPage = data.endPage;
                                  -			if (endPage < startPage) {
                                  -				int temp = endPage;
                                  -				endPage = startPage;
                                  -				startPage = temp;
                                  -			}			
                                  -		} 
                                  -		else 
                                  -		if (data.scope == PrinterData.SELECTION) {
                                  -			selection = parent.getSelectionRange();
                                  -		}
                                  -
                                  -		displayFontData = parent.getFont().getFontData()[0];
                                  -		copyContent(parent.getContent());
                                  -		cacheLineData(printerContent);
                                  -	}
                                  -	/**
                                  -	 * Caches the bidi segments of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache bidi segments for. 
                                  -	 * 	Relative to the start of the document.
                                  -	 * @param line line to cache bidi segments for. 
                                  -	 */
                                  -	void cacheBidiSegments(int lineOffset, String line) {
                                  -		int[] segments = parent.getBidiSegments(lineOffset, line);
                                  -		
                                  -		if (segments != null) {
                                  -			bidiSegments.put(new Integer(lineOffset), segments);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches the line background color of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache the background 
                                  -	 * 	color for. Relative to the start of the document.
                                  -	 * @param line line to cache the background color for
                                  -	 */
                                  -	void cacheLineBackground(int lineOffset, String line) {
                                  -		StyledTextEvent event = parent.getLineBackgroundData(lineOffset, line);
                                  -		
                                  -		if (event != null) {
                                  -			lineBackgrounds.put(new Integer(lineOffset), event);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches all line data that needs to be requested from a listener.
                                  -	 * </p>
                                  -	 * @param printerContent <class>StyledTextContent</class> to request 
                                  -	 * 	line data for.
                                  -	 */
                                  -	void cacheLineData(StyledTextContent printerContent) {	
                                  -		for (int i = 0; i < printerContent.getLineCount(); i++) {
                                  -			int lineOffset = printerContent.getOffsetAtLine(i);
                                  -			String line = printerContent.getLine(i);
                                  -	
                                  -			if (printOptions.printLineBackground) {
                                  -				cacheLineBackground(lineOffset, line);
                                  -			}
                                  -			if (printOptions.printTextBackground ||
                                  -				printOptions.printTextForeground ||
                                  -				printOptions.printTextFontStyle) {
                                  -				cacheLineStyle(lineOffset, line);
                                  -			}
                                  -			if (parent.isBidi()) {
                                  -				cacheBidiSegments(lineOffset, line);
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches all line styles of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache the styles for.
                                  -	 * 	Relative to the start of the document.
                                  -	 * @param line line to cache the styles for.
                                  -	 */
                                  -	void cacheLineStyle(int lineOffset, String line) {
                                  -		StyledTextEvent event = parent.getLineStyleData(lineOffset, line);
                                  -		
                                  -		if (event != null) {
                                  -			StyleRange[] styles = event.styles;
                                  -			for (int i = 0; i < styles.length; i++) {
                                  -				StyleRange styleCopy = null;
                                  -				if (!printOptions.printTextBackground && styles[i].background != null) {
                                  -					styleCopy = (StyleRange) styles[i].clone();
                                  -					styleCopy.background = null;
                                  -				}
                                  -				if (!printOptions.printTextForeground && styles[i].foreground != null) {
                                  -					if (styleCopy == null) {
                                  -						styleCopy = (StyleRange) styles[i].clone();
                                  -					}
                                  -					styleCopy.foreground = null;
                                  -				}
                                  -				if (!printOptions.printTextFontStyle && styles[i].fontStyle != SWT.NORMAL) {
                                  -					if (styleCopy == null) {
                                  -						styleCopy = (StyleRange) styles[i].clone();
                                  -					}
                                  -					styleCopy.fontStyle = SWT.NORMAL;
                                  -				}
                                  -				if (styleCopy != null) {
                                  -					styles[i] = styleCopy;
                                  -				}
                                  -			}	
                                  -			lineStyles.put(new Integer(lineOffset), event);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Copies the text of the specified <class>StyledTextContent</class>.
                                  -	 * </p>
                                  -	 * @param original the <class>StyledTextContent</class> to copy.
                                  -	 */
                                  -	void copyContent(StyledTextContent original) {
                                  -		int insertOffset = 0;
                                  -		
                                  -		printerContent = new DefaultContent();
                                  -		for (int i = 0; i < original.getLineCount(); i++) {
                                  -			int insertEndOffset;
                                  -			if (i < original.getLineCount() - 1) {
                                  -				insertEndOffset = original.getOffsetAtLine(i + 1);
                                  -			}
                                  -			else {
                                  -				insertEndOffset = original.getCharCount();
                                  -			}
                                  -			printerContent.replaceTextRange(insertOffset, 0, original.getTextRange(insertOffset, insertEndOffset - insertOffset));
                                  -			insertOffset = insertEndOffset;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Replaces all display colors in the cached line backgrounds and 
                                  -	 * line styles with printer colors.
                                  -	 */
                                  -	void createPrinterColors() {
                                  -		Enumeration values = lineBackgrounds.elements();
                                  -		printerColors = new Hashtable();
                                  -		while (values.hasMoreElements()) {
                                  -			StyledTextEvent event = (StyledTextEvent) values.nextElement();
                                  -			event.lineBackground = getPrinterColor(event.lineBackground);
                                  -		}
                                  -		
                                  -		values = lineStyles.elements();
                                  -		while (values.hasMoreElements()) {
                                  -			StyledTextEvent event = (StyledTextEvent) values.nextElement();
                                  -			for (int i = 0; i < event.styles.length; i++) {
                                  -				StyleRange style = event.styles[i];
                                  -				Color printerBackground = getPrinterColor(style.background);
                                  -				Color printerForeground = getPrinterColor(style.foreground);
                                  -				
                                  -				if (printerBackground != style.background || 
                                  -					printerForeground != style.foreground) {
                                  -					style = (StyleRange) style.clone();
                                  -					style.background = printerBackground;
                                  -					style.foreground = printerForeground;
                                  -					event.styles[i] = style;
                                  -				}
                                  -			}
                                  -		}		
                                  -	}
                                  -	/**
                                  -	 * Disposes of the resources and the <class>PrintRenderer</class>.
                                  -	 */
                                  -	void dispose() {
                                  -		if (printerColors != null) {
                                  -			Enumeration colors = printerColors.elements();
                                  -			
                                  -			while (colors.hasMoreElements()) {
                                  -				Color color = (Color) colors.nextElement();
                                  -				color.dispose();
                                  -			}
                                  -			printerColors = null;
                                  -		}
                                  -		if (gc != null) {
                                  -			gc.dispose();
                                  -			gc = null;
                                  -		}
                                  -		if (printerFont != null) {
                                  -			printerFont.dispose();
                                  -			printerFont = null;
                                  -		}
                                  -		if (renderer != null) {
                                  -			renderer.dispose();
                                  -			renderer = null;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Finish printing the indicated page.
                                  -	 * 
                                  -	 * @param page page that was printed
                                  -	 */
                                  -	void endPage(int page) {
                                  -		printDecoration(page, false);
                                  -		printer.endPage();
                                  -	}
                                  -	/**
                                  -	 * Creates a <class>PrintRenderer</class> and calculate the line range
                                  -	 * to print.
                                  -	 */
                                  -	void initializeRenderer() {
                                  -		Rectangle trim = printer.computeTrim(0, 0, 0, 0);
                                  -		Point dpi = printer.getDPI();
                                  -		
                                  -		printerFont = new Font(printer, displayFontData.getName(), displayFontData.getHeight(), SWT.NORMAL);
                                  -		clientArea = printer.getClientArea();
                                  -		pageWidth = clientArea.width;
                                  -		// one inch margin around text
                                  -		clientArea.x = dpi.x + trim.x; 				
                                  -		clientArea.y = dpi.y + trim.y;
                                  -		clientArea.width -= (clientArea.x + trim.width);
                                  -		clientArea.height -= (clientArea.y + trim.height); 
                                  -		
                                  -		// make the orientation of the printer gc match the control
                                  -		int style = mirrored ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -		gc = new GC(printer, style);
                                  -		gc.setFont(printerFont);
                                  -		renderer = new PrintRenderer(
                                  -			printer, printerFont, gc, printerContent,
                                  -			lineBackgrounds, lineStyles, bidiSegments, 
                                  -			parent.tabLength, clientArea);
                                  -		if (printOptions.header != null) {
                                  -			int lineHeight = renderer.getLineHeight();
                                  -			clientArea.y += lineHeight * 2;
                                  -			clientArea.height -= lineHeight * 2;
                                  -		}
                                  -		if (printOptions.footer != null) {
                                  -			clientArea.height -= renderer.getLineHeight() * 2;
                                  -		}
                                  -		pageSize = clientArea.height / renderer.getLineHeight();
                                  -		StyledTextContent content = renderer.getContent();
                                  -		startLine = 0;
                                  -		if (singleLine) {
                                  -			endLine = 0;
                                  -		}
                                  -		else {
                                  -			endLine = content.getLineCount() - 1;
                                  -		}
                                  -		PrinterData data = printer.getPrinterData();
                                  -		if (data.scope == PrinterData.PAGE_RANGE) {
                                  -			startLine = (startPage - 1) * pageSize;
                                  -		} 
                                  -		else
                                  -		if (data.scope == PrinterData.SELECTION) {
                                  -			startLine = content.getLineAtOffset(selection.x);
                                  -			if (selection.y > 0) {
                                  -				endLine = content.getLineAtOffset(selection.x + selection.y - 1);
                                  -			} 
                                  -			else {
                                  -				endLine = startLine - 1;
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Returns the printer color for the given display color.
                                  -	 * </p>
                                  -	 * @param color display color
                                  -	 * @return color create on the printer with the same RGB values 
                                  -	 * 	as the display color.
                                  - 	 */
                                  -	Color getPrinterColor(Color color) {
                                  -		Color printerColor = null;
                                  -		
                                  -		if (color != null) {
                                  -			printerColor = (Color) printerColors.get(color);		
                                  -			if (printerColor == null) {
                                  -				printerColor = new Color(printer, color.getRGB());
                                  -				printerColors.put(color, printerColor);
                                  -			}
                                  -		}
                                  -		return printerColor;
                                  -	}
                                  -	/**
                                  -	 * Prints the lines in the specified page range.
                                  -	 */
                                  -	void print() {
                                  -		StyledTextContent content = renderer.getContent();
                                  -		Color background = gc.getBackground();
                                  -		Color foreground = gc.getForeground();
                                  -		int lineHeight = renderer.getLineHeight();
                                  -		int paintY = clientArea.y;
                                  -		int page = startPage;
                                  -		
                                  -		for (int i = startLine; i <= endLine && page <= endPage; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			
                                  -			if (paintY == clientArea.y) {
                                  -				startPage(page);
                                  -			}
                                  -			renderer.drawLine(
                                  -				line, i, paintY, gc, background, foreground, true);
                                  -			if (paintY + lineHeight * 2 > clientArea.y + clientArea.height) {
                                  -				// close full page
                                  -				endPage(page);
                                  -				paintY = clientArea.y - lineHeight;
                                  -				page++;
                                  -			}
                                  -		}
                                  -		if (paintY > clientArea.y) {
                                  -			// close partial page
                                  -			endPage(page);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Print header or footer decorations.
                                  -	 * 
                                  -	 * @param page page number to print, if specified in the StyledTextPrintOptions header or footer.
                                  -	 * @param header true = print the header, false = print the footer
                                  -	 */
                                  -	void printDecoration(int page, boolean header) {
                                  -		int lastSegmentIndex = 0;
                                  -		final int SegmentCount = 3;
                                  -		String text;
                                  -		
                                  -		if (header) {
                                  -			text = printOptions.header;
                                  -		}
                                  -		else {
                                  -			text = printOptions.footer;
                                  -		}
                                  -		if (text == null) {
                                  -			return;
                                  -		}
                                  -		for (int i = 0; i < SegmentCount; i++) {
                                  -			int segmentIndex = text.indexOf(StyledTextPrintOptions.SEPARATOR, lastSegmentIndex);
                                  -			String segment;
                                  -			
                                  -			if (segmentIndex == -1) {
                                  -				segment = text.substring(lastSegmentIndex);
                                  -				printDecorationSegment(segment, i, page, header);
                                  -				break;
                                  -			}
                                  -			else {
                                  -				segment = text.substring(lastSegmentIndex, segmentIndex);
                                  -				printDecorationSegment(segment, i, page, header);
                                  -				lastSegmentIndex = segmentIndex + StyledTextPrintOptions.SEPARATOR.length();
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Print one segment of a header or footer decoration.
                                  -	 * Headers and footers have three different segments.
                                  -	 * One each for left aligned, centered, and right aligned text.
                                  -	 * 
                                  -	 * @param segment decoration segment to print
                                  -	 * @param alignment alignment of the segment. 0=left, 1=center, 2=right 
                                  -	 * @param page page number to print, if specified in the decoration segment.
                                  -	 * @param header true = print the header, false = print the footer
                                  -	 */
                                  -	void printDecorationSegment(String segment, int alignment, int page, boolean header) {		
                                  -		int pageIndex = segment.indexOf(StyledTextPrintOptions.PAGE_TAG);
                                  -		
                                  -		if (pageIndex != -1) {
                                  -			final int PageTagLength = StyledTextPrintOptions.PAGE_TAG.length();
                                  -			StringBuffer buffer = new StringBuffer(segment.substring (0, pageIndex));
                                  -			buffer.append (page);
                                  -			buffer.append (segment.substring(pageIndex + PageTagLength));
                                  -			segment = buffer.toString();
                                  -		}
                                  -		if (segment.length() > 0) {
                                  -			int segmentWidth;
                                  -			int drawX = 0;
                                  -			int drawY = 0;
                                  -			TextLayout layout = new TextLayout(printer);
                                  -			layout.setText(segment);
                                  -			layout.setFont(printerFont);
                                  -			segmentWidth = layout.getLineBounds(0).width;
                                  -			if (header) {
                                  -				drawY = clientArea.y - renderer.getLineHeight() * 2;
                                  -			}
                                  -			else {
                                  -				drawY = clientArea.y + clientArea.height + renderer.getLineHeight();
                                  -			}
                                  -			if (alignment == LEFT) {
                                  -				drawX = clientArea.x;
                                  -			}
                                  -			else				
                                  -			if (alignment == CENTER) {
                                  -				drawX = (pageWidth - segmentWidth) / 2;
                                  -			}
                                  -			else 
                                  -			if (alignment == RIGHT) {
                                  -				drawX = clientArea.x + clientArea.width - segmentWidth;
                                  -			}
                                  -			layout.draw(gc, drawX, drawY);
                                  -			layout.dispose();
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Starts a print job and prints the pages specified in the constructor.
                                  -	 */
                                  -	public void run() {
                                  -		String jobName = printOptions.jobName;
                                  -		
                                  -		if (jobName == null) {
                                  -			jobName = "Printing";
                                  -		}		
                                  -		if (printer.startJob(jobName)) {
                                  -			createPrinterColors();
                                  -			initializeRenderer();
                                  -			print();
                                  -			dispose();
                                  -			printer.endJob();			
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Start printing a new page.
                                  -	 * 
                                  -	 * @param page page number to be started
                                  -	 */
                                  -	void startPage(int page) {
                                  -		printer.startPage();
                                  -		printDecoration(page, true);
                                  -	}	
                                  -	}
                                  -	/**
                                  -	 * The <code>RTFWriter</code> class is used to write widget content as
                                  -	 * rich text. The implementation complies with the RTF specification 
                                  -	 * version 1.5.
                                  -	 * <p>
                                  -	 * toString() is guaranteed to return a valid RTF string only after 
                                  -	 * close() has been called. 
                                  -	 * </p>
                                  -	 * <p>
                                  -	 * Whole and partial lines and line breaks can be written. Lines will be
                                  -	 * formatted using the styles queried from the LineStyleListener, if 
                                  -	 * set, or those set directly in the widget. All styles are applied to
                                  -	 * the RTF stream like they are rendered by the widget. In addition, the 
                                  -	 * widget font name and size is used for the whole text.
                                  -	 * </p>
                                  -	 */
                                  -	class RTFWriter extends TextWriter {
                                  -		static final int DEFAULT_FOREGROUND = 0;
                                  -		static final int DEFAULT_BACKGROUND = 1;
                                  -		Vector colorTable = new Vector();
                                  -		boolean WriteUnicode;
                                  -		
                                  -	/**
                                  -	 * Creates a RTF writer that writes content starting at offset "start"
                                  -	 * in the document.  <code>start</code> and <code>length</code>can be set to specify partial 
                                  -	 * lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param start start offset of content to write, 0 based from 
                                  -	 * 	beginning of document
                                  -	 * @param length length of content to write
                                  -	 */
                                  -	public RTFWriter(int start, int length) {
                                  -		super(start, length);
                                  -		colorTable.addElement(getForeground());
                                  -		colorTable.addElement(getBackground());		
                                  -		setUnicode();
                                  -	}
                                  -	/**
                                  -	 * Closes the RTF writer. Once closed no more content can be written.
                                  -	 * <b>NOTE:</b>  <code>toString()</code> does not return a valid RTF string until 
                                  -	 * <code>close()</code> has been called.
                                  -	 */
                                  -	public void close() {
                                  -		if (!isClosed()) {
                                  -			writeHeader();
                                  -			write("\n}}\0");
                                  -			super.close();
                                  -		}
                                  -	}	
                                  -	/**
                                  -	 * Returns the index of the specified color in the RTF color table.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param color the color
                                  -	 * @param defaultIndex return value if color is null
                                  -	 * @return the index of the specified color in the RTF color table
                                  -	 * 	or "defaultIndex" if "color" is null.
                                  -	 */
                                  -	int getColorIndex(Color color, int defaultIndex) {
                                  -		int index;
                                  -		
                                  -		if (color == null) {
                                  -			index = defaultIndex;
                                  -		}
                                  -		else {		
                                  -			index = colorTable.indexOf(color);
                                  -			if (index == -1) {
                                  -				index = colorTable.size();
                                  -				colorTable.addElement(color);
                                  -			}
                                  -		}
                                  -		return index;
                                  -	}
                                  -	/**
                                  -	 * Determines if Unicode RTF should be written.
                                  -	 * Don't write Unicode RTF on Windows 95/98/ME or NT.
                                  -	 */
                                  -	void setUnicode() {
                                  -		final String Win95 = "windows 95";
                                  -		final String Win98 = "windows 98";
                                  -		final String WinME = "windows me";		
                                  -		final String WinNT = "windows nt";
                                  -		String osName = System.getProperty("os.name").toLowerCase();
                                  -		String osVersion = System.getProperty("os.version");
                                  -		int majorVersion = 0;
                                  -		
                                  -		if (osName.startsWith(WinNT) && osVersion != null) {
                                  -			int majorIndex = osVersion.indexOf('.');
                                  -			if (majorIndex != -1) {
                                  -				osVersion = osVersion.substring(0, majorIndex);
                                  -				try {
                                  -					majorVersion = Integer.parseInt(osVersion);
                                  -				}
                                  -				catch (NumberFormatException exception) {
                                  -					// ignore exception. version number remains unknown.
                                  -					// will write without Unicode
                                  -				}
                                  -			}
                                  -		}
                                  -		if (!osName.startsWith(Win95) &&
                                  -			!osName.startsWith(Win98) &&
                                  -			!osName.startsWith(WinME) &&
                                  -			(!osName.startsWith(WinNT) || majorVersion > 4)) {
                                  -			WriteUnicode = true;
                                  -		}
                                  -		else {
                                  -			WriteUnicode = false;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Appends the specified segment of "string" to the RTF data.
                                  -	 * Copy from <code>start</code> up to, but excluding, <code>end</code>.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param string string to copy a segment from. Must not contain
                                  -	 * 	line breaks. Line breaks should be written using writeLineDelimiter()
                                  -	 * @param start start offset of segment. 0 based.
                                  -	 * @param end end offset of segment
                                  -	 */
                                  -	void write(String string, int start, int end) {
                                  -		for (int index = start; index < end; index++) {
                                  -			char ch = string.charAt(index);
                                  -			if (ch > 0xFF && WriteUnicode) {
                                  -				// write the sub string from the last escaped character 
                                  -				// to the current one. Fixes bug 21698.
                                  -				if (index > start) {
                                  -					write(string.substring(start, index));
                                  -				}
                                  -				write("\\u");
                                  -				write(Integer.toString((short) ch));
                                  -				write(' ');						// control word delimiter
                                  -				start = index + 1;
                                  -			}
                                  -			else
                                  -			if (ch == '}' || ch == '{' || ch == '\\') {
                                  -				// write the sub string from the last escaped character 
                                  -				// to the current one. Fixes bug 21698.
                                  -				if (index > start) {
                                  -					write(string.substring(start, index));
                                  -				}
                                  -				write('\\');
                                  -				write(ch);
                                  -				start = index + 1;
                                  -			}
                                  -		}
                                  -		// write from the last escaped character to the end.
                                  -		// Fixes bug 21698.
                                  -		if (start < end) {
                                  -			write(string.substring(start, end));
                                  -		}
                                  -	}	
                                  -	/**
                                  -	 * Writes the RTF header including font table and color table.
                                  -	 */
                                  -	void writeHeader() {
                                  -		StringBuffer header = new StringBuffer();
                                  -		FontData fontData = getFont().getFontData()[0];
                                  -		header.append("{\\rtf1\\ansi");
                                  -		// specify code page, necessary for copy to work in bidi 
                                  -		// systems that don't support Unicode RTF.
                                  -		String cpg = System.getProperty("file.encoding").toLowerCase();
                                  -		if (cpg.startsWith("cp") || cpg.startsWith("ms")) {
                                  -			cpg = cpg.substring(2, cpg.length());
                                  -			header.append("\\ansicpg");
                                  -			header.append(cpg);
                                  -		}
                                  -		header.append("\\uc0\\deff0{\\fonttbl{\\f0\\fnil ");
                                  -		header.append(fontData.getName());
                                  -		header.append(";}}\n{\\colortbl");
                                  -		for (int i = 0; i < colorTable.size(); i++) {
                                  -			Color color = (Color) colorTable.elementAt(i);
                                  -			header.append("\\red");
                                  -			header.append(color.getRed());
                                  -			header.append("\\green");
                                  -			header.append(color.getGreen());
                                  -			header.append("\\blue");
                                  -			header.append(color.getBlue());
                                  -			header.append(";");
                                  -		} 
                                  -		// some RTF readers ignore the deff0 font tag. Explicitly 
                                  -		// set the font for the whole document to work around this.
                                  -		header.append("}\n{\\f0\\fs");
                                  -		// font size is specified in half points
                                  -		header.append(fontData.getHeight() * 2);
                                  -		header.append(" ");
                                  -		write(header.toString(), 0);
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line text to the RTF data.  Lines will be formatted 
                                  -	 * using the styles queried from the LineStyleListener, if set, or those set 
                                  -	 * directly in the widget.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write as RTF. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 * 	end offset specified during object creation is ignored.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLine(String line, int lineOffset) {
                                  -		StyleRange[] styles = new StyleRange[0];
                                  -		Color lineBackground = null;
                                  -		StyledTextEvent event;
                                  -		
                                  -		if (isClosed()) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		event = renderer.getLineStyleData(lineOffset, line);
                                  -		if (event != null) {
                                  -			styles = event.styles;
                                  -		}
                                  -		event = renderer.getLineBackgroundData(lineOffset, line);
                                  -		if (event != null) {
                                  -			lineBackground = event.lineBackground;
                                  -		}
                                  -		if (lineBackground == null) {
                                  -			lineBackground = getBackground();
                                  -		}
                                  -		writeStyledLine(line, lineOffset, styles, lineBackground);
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line delmimiter to the RTF data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param lineDelimiter line delimiter to write as RTF.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLineDelimiter(String lineDelimiter) {
                                  -		if (isClosed()) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		write(lineDelimiter, 0, lineDelimiter.length());
                                  -		write("\\par ");
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line text to the RTF data.
                                  -	 * Use the colors and font styles specified in "styles" and "lineBackground".
                                  -	 * Formatting is written to reflect the text rendering by the text widget.
                                  -	 * Style background colors take precedence over the line background color.
                                  -	 * Background colors are written using the \highlight tag (vs. the \cb tag).
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write as RTF. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 * 	end offset specified during object creation is ignored.
                                  -	 * @param styles styles to use for formatting. Must not be null.
                                  -	 * @param lineBackground line background color to use for formatting. 
                                  -	 * 	May be null.
                                  -	 */
                                  -	void writeStyledLine(String line, int lineOffset, StyleRange[] styles, Color lineBackground) {
                                  -		int lineLength = line.length();
                                  -		int lineIndex;
                                  -		int copyEnd;
                                  -		int startOffset = getStart();		
                                  -		int endOffset = startOffset + super.getCharCount();
                                  -		int lineEndOffset = Math.min(lineLength, endOffset - lineOffset);
                                  -		int writeOffset = startOffset - lineOffset;
                                  -		
                                  -		if (writeOffset >= line.length()) {
                                  -			return;					// whole line is outside write range
                                  -		}
                                  -		else
                                  -		if (writeOffset > 0) {
                                  -			lineIndex = writeOffset;		// line starts before RTF write start
                                  -		}
                                  -		else {
                                  -			lineIndex = 0;
                                  -		}
                                  -		if (lineBackground != null) {
                                  -			write("{\\highlight");
                                  -			write(getColorIndex(lineBackground, DEFAULT_BACKGROUND));
                                  -			write(" "); 
                                  -		}
                                  -		for (int i = 0; i < styles.length; i++) {		
                                  -			StyleRange style = styles[i];
                                  -			int start = style.start - lineOffset;
                                  -			int end = start + style.length;
                                  -			int colorIndex;
                                  -			// skip over partial first line
                                  -			if (end < writeOffset) {
                                  -				continue;
                                  -			}
                                  -			// style starts beyond line end or RTF write end
                                  -			if (start >= lineEndOffset) {
                                  -				break;
                                  -			}
                                  -			// write any unstyled text
                                  -			if (lineIndex < start) { 
                                  -				// copy to start of style
                                  -				// style starting betond end of write range or end of line 
                                  -				// is guarded against above.
                                  -				write(line, lineIndex, start);
                                  -				lineIndex = start;
                                  -			}
                                  -			// write styled text
                                  -			colorIndex = getColorIndex(style.background, DEFAULT_BACKGROUND);
                                  -			write("{\\cf");
                                  -			write(getColorIndex(style.foreground, DEFAULT_FOREGROUND));
                                  -			if (colorIndex != DEFAULT_BACKGROUND) {
                                  -				write("\\highlight");
                                  -				write(colorIndex);
                                  -			}
                                  -			if ((style.fontStyle & SWT.BOLD) != 0) {
                                  -				write("\\b"); 
                                  -			}
                                  -			if ((style.fontStyle & SWT.ITALIC) != 0) {
                                  -				write("\\i"); 
                                  -			}
                                  -			if (style.underline) {
                                  -				write("\\ul");
                                  -			}
                                  -			if (style.strikeout) {
                                  -				write("\\strike");
                                  -			}
                                  -			write(" "); 
                                  -			// copy to end of style or end of write range or end of line
                                  -			copyEnd = Math.min(end, lineEndOffset);
                                  -			// guard against invalid styles and let style processing continue
                                  -			copyEnd = Math.max(copyEnd, lineIndex);
                                  -			write(line, lineIndex, copyEnd);
                                  -			if ((style.fontStyle & SWT.BOLD) != 0) {
                                  -				write("\\b0"); 
                                  -			}
                                  -			if ((style.fontStyle & SWT.ITALIC) != 0) {
                                  -				write("\\i0"); 
                                  -			}
                                  -			if (style.underline) {
                                  -				write("\\ul0");
                                  -			}			
                                  -			if (style.strikeout) {
                                  -				write("\\strike0");
                                  -			}
                                  -			write("}");
                                  -			lineIndex = copyEnd;
                                  -		}
                                  -		// write unstyled text at the end of the line
                                  -		if (lineIndex < lineEndOffset) {
                                  -			write(line, lineIndex, lineEndOffset);
                                  -		}
                                  -		if (lineBackground != null) {
                                  -			write("}");
                                  -		}
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * The <code>TextWriter</code> class is used to write widget content to
                                  -	 * a string.  Whole and partial lines and line breaks can be written. To write 
                                  -	 * partial lines, specify the start and length of the desired segment 
                                  -	 * during object creation.
                                  -	 * <p>
                                  -	 * </b>NOTE:</b> <code>toString()</code> is guaranteed to return a valid string only after close() 
                                  -	 * has been called. 
                                  -	 */
                                  -	class TextWriter {
                                  -		private StringBuffer buffer;
                                  -		private int startOffset;	// offset of first character that will be written
                                  -		private int endOffset;		// offset of last character that will be written. 
                                  -									// 0 based from the beginning of the widget text. 
                                  -		private boolean isClosed = false;
                                  -	
                                  -	/**
                                  -	 * Creates a writer that writes content starting at offset "start"
                                  -	 * in the document.  <code>start</code> and <code>length</code> can be set to specify partial lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param start start offset of content to write, 0 based from beginning of document
                                  -	 * @param length length of content to write
                                  -	 */
                                  -	public TextWriter(int start, int length) {
                                  -		buffer = new StringBuffer(length);
                                  -		startOffset = start;
                                  -		endOffset = start + length;
                                  -	}
                                  -	/**
                                  -	 * Closes the writer. Once closed no more content can be written.
                                  -	 * <b>NOTE:</b>  <code>toString()</code> is not guaranteed to return a valid string unless
                                  -	 * the writer is closed.
                                  -	 */
                                  -	public void close() {
                                  -		if (!isClosed) {
                                  -			isClosed = true;
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Returns the number of characters to write.
                                  -	 * @return the integer number of characters to write
                                  -	 */
                                  -	public int getCharCount() {
                                  -		return endOffset - startOffset;
                                  -	}	
                                  -	/** 
                                  -	 * Returns the offset where writing starts. 0 based from the start of 
                                  -	 * the widget text. Used to write partial lines.
                                  -	 * @return the integer offset where writing starts
                                  -	 */
                                  -	public int getStart() {
                                  -		return startOffset;
                                  -	}
                                  -	/**
                                  -	 * Returns whether the writer is closed.
                                  -	 * @return a boolean specifying whether or not the writer is closed
                                  -	 */
                                  -	public boolean isClosed() {
                                  -		return isClosed;
                                  -	}
                                  -	/**
                                  -	 * Returns the string.  <code>close()</code> must be called before <code>toString()</code> 
                                  -	 * is guaranteed to return a valid string.
                                  -	 *
                                  -	 * @return the string
                                  -	 */
                                  -	public String toString() {
                                  -		return buffer.toString();
                                  -	}
                                  -	/**
                                  -	 * Appends the given string to the data.
                                  -	 */
                                  -	void write(String string) {
                                  -		buffer.append(string);
                                  -	}	
                                  -	/**
                                  -	 * Inserts the given string to the data at the specified offset.
                                  -	 * Do nothing if "offset" is < 0 or > getCharCount()
                                  -	 * <p>
                                  -	 *
                                  -	 * @param string text to insert
                                  -	 * @param offset offset in the existing data to insert "string" at.
                                  -	 */
                                  -	void write(String string, int offset) {
                                  -		if (offset < 0 || offset > buffer.length()) {
                                  -			return;
                                  -		}
                                  -		buffer.insert(offset, string);
                                  -	}	
                                  -	/**
                                  -	 * Appends the given int to the data.
                                  -	 */
                                  -	void write(int i) {
                                  -		buffer.append(i);
                                  -	}
                                  -	/**
                                  -	 * Appends the given character to the data.
                                  -	 */
                                  -	void write(char i) {
                                  -		buffer.append(i);
                                  -	}			
                                  -	/**
                                  -	 * Appends the specified line text to the data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 *	end offset specified during object creation is ignored.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLine(String line, int lineOffset) {
                                  -		int lineLength = line.length();
                                  -		int lineIndex;
                                  -		int copyEnd;
                                  -		int writeOffset = startOffset - lineOffset;
                                  -		
                                  -		if (isClosed) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}		
                                  -		if (writeOffset >= lineLength) {
                                  -			return;							// whole line is outside write range
                                  -		}
                                  -		else
                                  -		if (writeOffset > 0) {
                                  -			lineIndex = writeOffset;		// line starts before write start
                                  -		}
                                  -		else {
                                  -			lineIndex = 0;
                                  -		}
                                  -		copyEnd = Math.min(lineLength, endOffset - lineOffset);
                                  -		if (lineIndex < copyEnd) {
                                  -			write(line.substring(lineIndex, copyEnd));
                                  -		}		
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line delmimiter to the data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param lineDelimiter line delimiter to write
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLineDelimiter(String lineDelimiter) {
                                  -		if (isClosed) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		write(lineDelimiter);
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * LineCache provides an interface to calculate and invalidate 
                                  -	 * line based data.
                                  -	 * Implementors need to return a line width in <code>getWidth</code>.
                                  -	 */
                                  -	interface LineCache {
                                  -	/**
                                  -	 * Calculates the lines in the specified range.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate
                                  -	 * @param lineCount number of lines to calculate
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount);
                                  -	/**
                                  -	 * Returns a width that will be used by the <code>StyledText</code> 
                                  -	 * widget to size a horizontal scroll bar.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the line width
                                  -	 */
                                  -	public int getWidth();
                                  -	/**
                                  -	 * Resets the lines in the specified range.
                                  -	 * This method is called in <code>StyledText.redraw()</code>
                                  -	 * and allows implementors to call redraw themselves during reset.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth);
                                  -	/**
                                  -	 * Resets the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth);
                                  -	/** 
                                  -	 * Called when a text change occurred.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount);
                                  -	}
                                  -	/**
                                  -	 * Keeps track of line widths and the longest line in the 
                                  -	 * StyledText document.
                                  -	 * Line widths are calculated when requested by a call to 
                                  -	 * <code>calculate</code> and cached until reset by a call 
                                  -	 * to <code>redrawReset</code> or <code>reset</code>.
                                  -	 */
                                  -	class ContentWidthCache implements LineCache {
                                  -		StyledText parent;				// parent widget, used to create a GC for line measuring
                                  -		int[] lineWidth;				// width in pixel of each line in the document, -1 for unknown width
                                  -		StyledTextContent content;		// content to use for line width calculation
                                  -		int lineCount;					// number of lines in lineWidth array
                                  -		int maxWidth;					// maximum line width of all measured lines
                                  -		int maxWidthLineIndex;			// index of the widest line
                                  -				
                                  -	/** 
                                  -	 * Creates a new <code>ContentWidthCache</code> and allocates space 
                                  -	 * for the given number of lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param parent the StyledText widget used to create a GC for 
                                  -	 * 	line measuring
                                  -	 * @param content a StyledTextContent containing the initial number
                                  -	 *  of lines to allocate space for
                                  -	 */
                                  -	public ContentWidthCache(StyledText parent, StyledTextContent content) {
                                  -		this.parent = parent;
                                  -		this.content = content;
                                  -		this.lineCount = content.getLineCount();
                                  -		lineWidth = new int[lineCount];
                                  -		reset(0, lineCount, false);
                                  -	}
                                  -	/**
                                  -	 * Calculates the width of each line in the given range if it has
                                  -	 * not been calculated yet.
                                  -	 * If any line in the given range is wider than the currently widest
                                  -	 * line, the maximum line width is updated,
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate the line width of
                                  -	 * @param lineCount number of lines to calculate the line width for
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount) {
                                  -		int caretWidth = 0;
                                  -		int endLine = startLine + lineCount;
                                  -			
                                  -		if (startLine < 0 || endLine > lineWidth.length) {
                                  -			return;
                                  -		}
                                  -		caretWidth = getCaretWidth();
                                  -		for (int i = startLine; i < endLine; i++) {
                                  -			if (lineWidth[i] == -1) {
                                  -				String line = content.getLine(i);
                                  -				int lineOffset = content.getOffsetAtLine(i);
                                  -				lineWidth[i] = contentWidth(line, lineOffset) + caretWidth;
                                  -			}
                                  -			if (lineWidth[i] > maxWidth) {
                                  -				maxWidth = lineWidth[i];
                                  -				maxWidthLineIndex = i;
                                  -			}
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Calculates the width of the visible lines in the specified 
                                  -	 * range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first changed line
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 */  
                                  -	void calculateVisible(int startLine, int newLineCount) {
                                  -		int topIndex = parent.getTopIndex();
                                  -		int bottomLine = Math.min(getPartialBottomIndex(), startLine + newLineCount);
                                  -		
                                  -		startLine = Math.max(startLine, topIndex);
                                  -		calculate(startLine, bottomLine - startLine + 1);
                                  -	}
                                  -	/**
                                  -	 * Measures the width of the given line.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param line the line to measure
                                  -	 * @param lineOffset start offset of the line to measure, relative 
                                  -	 * 	to the start of the document
                                  -	 * @return the width of the given line
                                  -	 */
                                  -	int contentWidth(String line, int lineOffset) {
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		Rectangle rect = layout.getLineBounds(0);
                                  -		renderer.disposeTextLayout(layout);
                                  -		return rect.x + rect.width + leftMargin + rightMargin;
                                  -	}
                                  -	/**
                                  -	 * Grows the <code>lineWidth</code> array to accomodate new line width
                                  -	 * information.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param numLines the number of elements to increase the array by
                                  -	 */
                                  -	void expandLines(int numLines) {
                                  -		int size = lineWidth.length;
                                  -		if (size - lineCount >= numLines) {
                                  -			return;
                                  -		}
                                  -		int[] newLines = new int[Math.max(size * 2, size + numLines)];
                                  -		System.arraycopy(lineWidth, 0, newLines, 0, size);
                                  -		lineWidth = newLines;
                                  -		reset(size, lineWidth.length - size, false);
                                  -	}
                                  -	/**
                                  -	 * Returns the width of the longest measured line.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the width of the longest measured line.
                                  -	 */
                                  -	public int getWidth() {
                                  -		return maxWidth;
                                  -	}
                                  -	/**
                                  -	 * Updates the line width array to reflect inserted or deleted lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the starting line of the change that took place
                                  -	 * @param delta	the number of lines in the change, > 0 indicates lines inserted,
                                  -	 * 	< 0 indicates lines deleted
                                  -	 */
                                  -	void linesChanged(int startLine, int delta) {
                                  -		boolean inserting = delta > 0;
                                  -		
                                  -		if (delta == 0) {
                                  -			return;
                                  -		}
                                  -		if (inserting) {
                                  -			// shift the lines down to make room for new lines
                                  -			expandLines(delta);
                                  -			for (int i = lineCount - 1; i >= startLine; i--) {
                                  -				lineWidth[i + delta] = lineWidth[i];
                                  -			}
                                  -			// reset the new lines
                                  -			for (int i = startLine + 1; i <= startLine + delta && i < lineWidth.length; i++) {
                                  -				lineWidth[i] = -1;
                                  -			}
                                  -			// have new lines been inserted above the longest line?
                                  -			if (maxWidthLineIndex >= startLine) {
                                  -				maxWidthLineIndex += delta;
                                  -			}
                                  -		} 
                                  -		else {
                                  -			// shift up the lines
                                  -			for (int i = startLine - delta; i < lineCount; i++) {
                                  -				lineWidth[i+delta] = lineWidth[i];
                                  -			}
                                  -			// has the longest line been removed?
                                  -			if (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine - delta) {
                                  -				maxWidth = 0;
                                  -				maxWidthLineIndex = -1;
                                  -			}
                                  -			else
                                  -			if (maxWidthLineIndex >= startLine - delta) {
                                  -				maxWidthLineIndex += delta;
                                  -			}
                                  -		}
                                  -		lineCount += delta;
                                  -	}
                                  -	/**
                                  -	 * Resets the line width of the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=if the widest line is being 
                                  -	 * 	reset the maximum width of all remaining cached lines is 
                                  -	 * 	calculated. false=the maximum width is set to 0 if the 
                                  -	 * 	widest line is being reset.
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		reset(startLine, lineCount, calculateMaxWidth);
                                  -	}
                                  -	/**
                                  -	 * Resets the line width of the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=if the widest line is being 
                                  -	 * 	reset the maximum width of all remaining cached lines is 
                                  -	 * 	calculated. false=the maximum width is set to 0 if the 
                                  -	 * 	widest line is being reset.
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		int endLine = startLine + lineCount;
                                  -		
                                  -		if (startLine < 0 || endLine > lineWidth.length) {
                                  -			return;
                                  -		}
                                  -		for (int i = startLine; i < endLine; i++) {
                                  -			lineWidth[i] = -1;
                                  -		}		
                                  -		// if the longest line is one of the reset lines, the maximum line 
                                  -		// width is no longer valid
                                  -		if (maxWidthLineIndex >= startLine && maxWidthLineIndex < endLine) {
                                  -			maxWidth = 0;
                                  -			maxWidthLineIndex = -1;
                                  -			if (calculateMaxWidth) {
                                  -				for (int i = 0; i < lineCount; i++) {
                                  -					if (lineWidth[i] > maxWidth) {
                                  -						maxWidth = lineWidth[i];
                                  -						maxWidthLineIndex = i;
                                  -					}
                                  -				}			
                                  -			}
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Updates the line width array to reflect a text change.
                                  -	 * Lines affected by the text change will be reset.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) {
                                  -		int startLine = parent.getLineAtOffset(startOffset);
                                  -		boolean removedMaxLine = (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine + replaceLineCount);
                                  -		// entire text deleted?
                                  -		if (startLine == 0 && replaceLineCount == lineCount) {
                                  -			lineCount = newLineCount;
                                  -			lineWidth = new int[lineCount];
                                  -			reset(0, lineCount, false);
                                  -			maxWidth = 0;
                                  -		}
                                  -		else {
                                  -			linesChanged(startLine, -replaceLineCount);
                                  -			linesChanged(startLine, newLineCount);
                                  -			lineWidth[startLine] = -1;
                                  -		}
                                  -		// only calculate the visible lines. otherwise measurements of changed lines 
                                  -		// outside the visible area may subsequently change again without the 
                                  -		// lines ever being visible.
                                  -		calculateVisible(startLine, newLineCount);
                                  -		// maxWidthLineIndex will be -1 (i.e., unknown line width) if the widget has 
                                  -		// not been visible yet and the changed lines have therefore not been
                                  -		// calculated above.
                                  -		if (removedMaxLine || 
                                  -			(maxWidthLineIndex != -1 && lineWidth[maxWidthLineIndex] < maxWidth)) {
                                  -			// longest line has been removed or changed and is now shorter.
                                  -			// need to recalculate maximum content width for all lines
                                  -			maxWidth = 0;
                                  -			for (int i = 0; i < lineCount; i++) {
                                  -				if (lineWidth[i] > maxWidth) {
                                  -					maxWidth = lineWidth[i];
                                  -					maxWidthLineIndex = i;
                                  -				}
                                  -			}			
                                  -		}
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * Updates the line wrapping of the content.
                                  -	 * The line wrapping must always be in a consistent state. 
                                  -	 * Therefore, when <code>reset</code> or <code>redrawReset</code>
                                  -	 * is called, the line wrapping is recalculated immediately 
                                  -	 * instead of in <code>calculate</code>.
                                  -	 */
                                  -	class WordWrapCache implements LineCache {
                                  -		StyledText parent;
                                  -		WrappedContent visualContent;
                                  -				
                                  -	/** 
                                  -	 * Creates a new <code>WordWrapCache</code> and calculates an initial
                                  -	 * line wrapping.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param parent the StyledText widget to wrap content in.
                                  -	 * @param content the content provider that does the actual line wrapping.
                                  -	 */
                                  -	public WordWrapCache(StyledText parent, WrappedContent content) {
                                  -		this.parent = parent;
                                  -		visualContent = content;
                                  -		visualContent.wrapLines();
                                  -	}
                                  -	/**
                                  -	 * Do nothing. Lines are wrapped immediately after reset.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate
                                  -	 * @param lineCount number of lines to calculate
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount) {
                                  -	}
                                  -	/**
                                  -	 * Returns the client area width. Lines are wrapped so there
                                  -	 * is no horizontal scroll bar.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the line width
                                  -	 */
                                  -	public int getWidth() {
                                  -		return parent.getClientArea().width;
                                  -	}
                                  -	/**
                                  -	 * Wraps the lines in the specified range.
                                  -	 * This method is called in <code>StyledText.redraw()</code>.
                                  -	 * A redraw is therefore not necessary.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -	    if (lineCount == visualContent.getLineCount()) {
                                  -			// do a full rewrap if all lines are reset
                                  -			visualContent.wrapLines();
                                  -	    }
                                  -	    else {
                                  -		    visualContent.reset(startLine, lineCount);
                                  -	    }
                                  -	}
                                  -	/**
                                  -	 * Rewraps the lines in the specified range and redraws
                                  -	 * the widget if the line wrapping has changed.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		int itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -	    int[] oldLineOffsets = new int[itemCount];
                                  -	    
                                  -	    for (int i = 0; i < itemCount; i++) {
                                  -	    	oldLineOffsets[i] = visualContent.getOffsetAtLine(i + topIndex);
                                  -	    }
                                  -	    redrawReset(startLine, lineCount, calculateMaxWidth);
                                  -		// check for cases which will require a full redraw
                                  -	    if (getPartialBottomIndex() - topIndex + 1 != itemCount) {
                                  -	    	// number of visible lines has changed
                                  -	    	parent.internalRedraw();
                                  -	    }
                                  -	    else {
                                  -		    for (int i = 0; i < itemCount; i++) {
                                  -		    	if (visualContent.getOffsetAtLine(i + topIndex) != oldLineOffsets[i]) {
                                  -		    		// wrapping of one of the visible lines has changed
                                  -		    		parent.internalRedraw();
                                  -		    		break;
                                  -		    	}
                                  -	    	}	    	
                                  -	    }
                                  -	}
                                  -	/** 
                                  -	 * Passes the text change notification to the line wrap content.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) {
                                  -		int startLine = visualContent.getLineAtOffset(startOffset);
                                  -		visualContent.textChanged(startOffset, newLineCount, replaceLineCount, newCharCount, replaceCharCount);
                                  -
                                  -		// if we are wrapping then it is possible for a deletion on the last
                                  -		// line of text to shorten the total text length by a line.  If this
                                  -		// occurs then the startIndex must be adjusted such that a redraw will
                                  -		// be performed if a visible region is affected.  fixes bug 42947.
                                  -		if (wordWrap) {
                                  -			int lineCount = content.getLineCount();
                                  -			if (startLine >= lineCount) startLine = lineCount - 1;  
                                  -		}
                                  -		if (startLine <= getPartialBottomIndex()) {
                                  -			// only redraw if the text change affects text inside or above 
                                  -			// the visible lines. if it is below the visible lines it will
                                  -			// not affect the word wrapping. fixes bug 14047.
                                  -			parent.internalRedraw();
                                  -		}
                                  -	}
                                  -	}
                                  -
                                  -/**
                                  - * Constructs a new instance of this class given its parent
                                  - * and a style value describing its behavior and appearance.
                                  - * <p>
                                  - * The style value is either one of the style constants defined in
                                  - * class <code>SWT</code> which is applicable to instances of this
                                  - * class, or must be built by <em>bitwise OR</em>'ing together 
                                  - * (that is, using the <code>int</code> "|" operator) two or more
                                  - * of those <code>SWT</code> style constants. The class description
                                  - * lists the style constants that are applicable to the class.
                                  - * Style bits are also inherited from superclasses.
                                  - * </p>
                                  - *
                                  - * @param parent a widget which will be the parent of the new instance (cannot be null)
                                  - * @param style the style of widget to construct
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
                                  - * </ul>
                                  - *
                                  - * @see SWT#FULL_SELECTION
                                  - * @see SWT#MULTI
                                  - * @see SWT#READ_ONLY
                                  - * @see SWT#SINGLE
                                  - * @see SWT#WRAP
                                  - * @see #getStyle
                                  - */
                                  -public StyledText(Composite parent, int style) {
                                  -	super(parent, checkStyle(style | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND));
                                  -	// set the bg/fg in the OS to ensure that these are the same as StyledText, necessary
                                  -	// for ensuring that the bg/fg the IME box uses is the same as what StyledText uses
                                  -	super.setForeground(getForeground());
                                  -	super.setBackground(getBackground());
                                  -	Display display = getDisplay();
                                  -	isMirrored = (super.getStyle() & SWT.MIRRORED) != 0;
                                  -	if ((style & SWT.READ_ONLY) != 0) {
                                  -		setEditable(false);
                                  -	}
                                  -	leftMargin = rightMargin = isBidiCaret() ? BIDI_CARET_WIDTH - 1: 0;
                                  -	if ((style & SWT.SINGLE) != 0 && (style & SWT.BORDER) != 0) {
                                  -		leftMargin = topMargin = rightMargin = bottomMargin = 2;
                                  -	}
                                  -	clipboard = new Clipboard(display);
                                  -	installDefaultContent();
                                  -	initializeRenderer();
                                  -	if ((style & SWT.WRAP) != 0) {
                                  -		setWordWrap(true);
                                  -	}
                                  -	else {
                                  -		lineCache = new ContentWidthCache(this, content);
                                  -	}	
                                  -	defaultCaret = new Caret(this, SWT.NULL);
                                  -	if (isBidiCaret()) {
                                  -		createCaretBitmaps();
                                  -		Runnable runnable = new Runnable() {
                                  -			public void run() {
                                  -				int direction = BidiUtil.getKeyboardLanguage() == BidiUtil.KEYBOARD_BIDI ? SWT.RIGHT : SWT.LEFT;
                                  -				if (direction == caretDirection) return;
                                  -				if (getCaret() != defaultCaret) return;
                                  -				int lineIndex = getCaretLine();
                                  -				String line = content.getLine(lineIndex);
                                  -				int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -				int offsetInLine = caretOffset - lineOffset;
                                  -				int newCaretX = getXAtOffset(line, lineIndex, offsetInLine);
                                  -				setCaretLocation(newCaretX, getCaretLine(), direction);
                                  -			}
                                  -		};
                                  -		BidiUtil.addLanguageListener(handle, runnable);
                                  -	}
                                  -	setCaret(defaultCaret);	
                                  -	calculateScrollBars();
                                  -	createKeyBindings();
                                  -	ibeamCursor = new Cursor(display, SWT.CURSOR_IBEAM);
                                  -	setCursor(ibeamCursor);
                                  -	installListeners();
                                  -	installDefaultLineStyler();
                                  -	initializeAccessible();
                                  -}
                                  -/**	 
                                  - * Adds an extended modify listener. An ExtendedModify event is sent by the 
                                  - * widget when the widget text has changed.
                                  - * <p>
                                  - *
                                  - * @param extendedModifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addExtendedModifyListener(ExtendedModifyListener extendedModifyListener) {
                                  -	checkWidget();
                                  -	if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	StyledTextListener typedListener = new StyledTextListener(extendedModifyListener);
                                  -	addListener(ExtendedModify, typedListener);
                                  -}
                                  -/** 
                                  - * Maps a key to an action.
                                  - * One action can be associated with N keys. However, each key can only 
                                  - * have one action (key:action is N:1 relation).
                                  - * <p>
                                  - *
                                  - * @param key a key code defined in SWT.java or a character. 
                                  - * 	Optionally ORd with a state mask.  Preferred state masks are one or more of
                                  - *  SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform 
                                  - *  differences.  However, there may be cases where using the specific state masks
                                  - *  (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense.
                                  - * @param action one of the predefined actions defined in ST.java. 
                                  - * 	Use SWT.NULL to remove a key binding.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setKeyBinding(int key, int action) {
                                  -	checkWidget(); 
                                  -	
                                  -	int keyValue = key & SWT.KEY_MASK;
                                  -	int modifierValue = key & SWT.MODIFIER_MASK;
                                  -	char keyChar = (char)keyValue;
                                  -
                                  -	if (Compatibility.isLetter(keyChar)) {
                                  -		// make the keybinding case insensitive by adding it
                                  -		// in its upper and lower case form
                                  -		char ch = Character.toUpperCase(keyChar);
                                  -		int newKey = ch | modifierValue;
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(newKey));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(newKey), new Integer(action));
                                  -		}
                                  -		ch = Character.toLowerCase(keyChar);
                                  -		newKey = ch | modifierValue;
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(newKey));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(newKey), new Integer(action));
                                  -		}
                                  -	} else {
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(key));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(key), new Integer(action));
                                  -		}
                                  -	}
                                  -		
                                  -}
                                  -/**
                                  - * Adds a bidirectional segment listener. A BidiSegmentEvent is sent 
                                  - * whenever a line of text is measured or rendered. The user can 
                                  - * specify text ranges in the line that should be treated as if they 
                                  - * had a different direction than the surrounding text.
                                  - * This may be used when adjacent segments of right-to-left text should
                                  - * not be reordered relative to each other. 
                                  - * E.g., Multiple Java string literals in a right-to-left language
                                  - * should generally remain in logical order to each other, that is, the
                                  - * way they are stored. 
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - * @see BidiSegmentEvent
                                  - * @since 2.0
                                  - */
                                  -public void addBidiSegmentListener(BidiSegmentListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetSegments, typedListener);	
                                  -}
                                  -/**
                                  - * Adds a line background listener. A LineGetBackground event is sent by the 
                                  - * widget to determine the background color for a line.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addLineBackgroundListener(LineBackgroundListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	if (!userLineBackground) {
                                  -		removeLineBackgroundListener(defaultLineStyler);
                                  -		defaultLineStyler.setLineBackground(0, logicalContent.getLineCount(), null);
                                  -		userLineBackground = true;
                                  -	}	
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetBackground, typedListener);	
                                  -}
                                  -/**
                                  - * Adds a line style listener. A LineGetStyle event is sent by the widget to 
                                  - * determine the styles for a line.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addLineStyleListener(LineStyleListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	if (!userLineStyle) {
                                  -		removeLineStyleListener(defaultLineStyler);
                                  -		defaultLineStyler.setStyleRange(null);
                                  -		userLineStyle = true;
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetStyle, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a modify listener. A Modify event is sent by the widget when the widget text 
                                  - * has changed.
                                  - * <p>
                                  - *
                                  - * @param modifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addModifyListener(ModifyListener modifyListener) {
                                  -	checkWidget();
                                  -	if (modifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(modifyListener);
                                  -	addListener(SWT.Modify, typedListener);
                                  -}
                                  -/**	 
                                  - * Adds a selection listener. A Selection event is sent by the widget when the 
                                  - * selection has changed.
                                  - * <p>
                                  - * When <code>widgetSelected</code> is called, the event x amd y fields contain
                                  - * the start and end caret indices of the selection.
                                  - * <code>widgetDefaultSelected</code> is not called for StyledTexts.
                                  - * </p>
                                  - * 
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addSelectionListener(SelectionListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(listener);
                                  -	addListener(SWT.Selection, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a verify key listener. A VerifyKey event is sent by the widget when a key 
                                  - * is pressed. The widget ignores the key press if the listener sets the doit field 
                                  - * of the event to false. 
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addVerifyKeyListener(VerifyKeyListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(VerifyKey, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a verify listener. A Verify event is sent by the widget when the widget text 
                                  - * is about to change. The listener can set the event text and the doit field to 
                                  - * change the text that is set in the widget or to force the widget to ignore the 
                                  - * text change.
                                  - * <p>
                                  - *
                                  - * @param verifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addVerifyListener(VerifyListener verifyListener) {
                                  -	checkWidget();
                                  -	if (verifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(verifyListener);
                                  -	addListener(SWT.Verify, typedListener);
                                  -}
                                  -/** 
                                  - * Appends a string to the text at the end of the widget.
                                  - * <p>
                                  - *
                                  - * @param string the string to be appended
                                  - * @see #replaceTextRange(int,int,String)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void append(String string) {
                                  -	checkWidget();
                                  -	if (string == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	int lastChar = Math.max(getCharCount(), 0);
                                  -	replaceTextRange(lastChar, 0, string);
                                  -}
                                  -/**
                                  - * Calculates the width of the widest visible line.
                                  - */
                                  -void calculateContentWidth() {
                                  -	lineCache = getLineCache(content);
                                  -	lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1);
                                  -}
                                  -/**
                                  - * Calculates the scroll bars
                                  - */
                                  -void calculateScrollBars() {
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	setScrollBars();
                                  -	if (verticalBar != null) {
                                  -		verticalBar.setIncrement(getVerticalIncrement());
                                  -	}	
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setIncrement(getHorizontalIncrement());
                                  -	}
                                  -}
                                  -/**
                                  - * Calculates the top index based on the current vertical scroll offset.
                                  - * The top index is the index of the topmost fully visible line or the
                                  - * topmost partially visible line if no line is fully visible.
                                  - * The top index starts at 0.
                                  - */
                                  -void calculateTopIndex() {
                                  -	int oldTopIndex = topIndex;
                                  -	int verticalIncrement = getVerticalIncrement();
                                  -	int clientAreaHeight = getClientArea().height;
                                  -	
                                  -	if (verticalIncrement == 0) {
                                  -		return;
                                  -	}
                                  -	topIndex = Compatibility.ceil(verticalScrollOffset, verticalIncrement);
                                  -	// Set top index to partially visible top line if no line is fully 
                                  -	// visible but at least some of the widget client area is visible.
                                  -	// Fixes bug 15088.
                                  -	if (topIndex > 0) {
                                  -		if (clientAreaHeight > 0) {
                                  -			int bottomPixel = verticalScrollOffset + clientAreaHeight;
                                  -			int fullLineTopPixel = topIndex * verticalIncrement;
                                  -			int fullLineVisibleHeight = bottomPixel - fullLineTopPixel;
                                  -			// set top index to partially visible line if no line fully fits in 
                                  -			// client area or if space is available but not used (the latter should
                                  -			// never happen because we use claimBottomFreeSpace)
                                  -			if (fullLineVisibleHeight < verticalIncrement) {
                                  -				topIndex--;
                                  -			}
                                  -		}
                                  -		else 
                                  -		if (topIndex >= content.getLineCount()) {
                                  -			topIndex = content.getLineCount() - 1;
                                  -		}
                                  -	}
                                  -	if (topIndex != oldTopIndex) {
                                  -		topOffset = content.getOffsetAtLine(topIndex);
                                  -		lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1);
                                  -		setHorizontalScrollBar();
                                  -	}
                                  -}
                                  -/**
                                  - * Hides the scroll bars if widget is created in single line mode.
                                  - */
                                  -static int checkStyle(int style) {
                                  -	if ((style & SWT.SINGLE) != 0) {
                                  -		style &= ~(SWT.H_SCROLL | SWT.V_SCROLL | SWT.WRAP | SWT.MULTI);
                                  -	} else {
                                  -		style |= SWT.MULTI;
                                  -		if ((style & SWT.WRAP) != 0) {
                                  -			style &= ~SWT.H_SCROLL;
                                  -		}
                                  -	}
                                  -	return style;
                                  -}
                                  -/**
                                  - * Scrolls down the text to use new space made available by a resize or by 
                                  - * deleted lines.
                                  - */
                                  -void claimBottomFreeSpace() {
                                  -	int newVerticalOffset = Math.max(0, content.getLineCount() * lineHeight - getClientArea().height);
                                  -	
                                  -	if (newVerticalOffset < verticalScrollOffset) {
                                  -		// Scroll up so that empty lines below last text line are used.
                                  -		// Fixes 1GEYJM0
                                  -		setVerticalScrollOffset(newVerticalOffset, true);
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls text to the right to use new space made available by a resize.
                                  - */
                                  -void claimRightFreeSpace() {
                                  -	int newHorizontalOffset = Math.max(0, lineCache.getWidth() - (getClientArea().width - leftMargin - rightMargin));
                                  -	
                                  -	if (newHorizontalOffset < horizontalScrollOffset) {			
                                  -		// item is no longer drawn past the right border of the client area
                                  -		// align the right end of the item with the right border of the 
                                  -		// client area (window is scrolled right).
                                  -		scrollHorizontalBar(newHorizontalOffset - horizontalScrollOffset);					
                                  -	}
                                  -}
                                  -/**
                                  - * Clears the widget margin.
                                  - * 
                                  - * @param gc GC to render on
                                  - * @param background background color to use for clearing the margin
                                  - * @param clientArea widget client area dimensions
                                  - */
                                  -void clearMargin(GC gc, Color background, Rectangle clientArea, int y) {
                                  -	// clear the margin background
                                  -	gc.setBackground(background);
                                  -	if (topMargin > 0) {
                                  -		gc.fillRectangle(0, -y, clientArea.width, topMargin);
                                  -	}
                                  -	if (bottomMargin > 0) {
                                  -		gc.fillRectangle(0, clientArea.height - bottomMargin - y, clientArea.width, bottomMargin);
                                  -	}
                                  -	if (leftMargin > 0) {
                                  -		gc.fillRectangle(0, -y, leftMargin, clientArea.height);
                                  -	}
                                  -	if (rightMargin > 0) {
                                  -		gc.fillRectangle(clientArea.width - rightMargin, -y, rightMargin, clientArea.height);
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the widget selection.
                                  - * <p>
                                  - *
                                  - * @param sendEvent a Selection event is sent when set to true and when the selection is actually reset.
                                  - */
                                  -void clearSelection(boolean sendEvent) {
                                  -	int selectionStart = selection.x;
                                  -	int selectionEnd = selection.y;
                                  -	int length = content.getCharCount();
                                  -	
                                  -	resetSelection();
                                  -	// redraw old selection, if any
                                  -	if (selectionEnd - selectionStart > 0) {
                                  -		// called internally to remove selection after text is removed
                                  -		// therefore make sure redraw range is valid.
                                  -		int redrawStart = Math.min(selectionStart, length);
                                  -		int redrawEnd = Math.min(selectionEnd, length);
                                  -		if (redrawEnd - redrawStart > 0) {
                                  -			internalRedrawRange(redrawStart, redrawEnd - redrawStart, true);
                                  -		}
                                  -		if (sendEvent) {
                                  -			sendSelectionEvent();
                                  -		}
                                  -	}
                                  -}
                                  -public Point computeSize (int wHint, int hHint, boolean changed) {
                                  -	checkWidget();
                                  -	int count, width, height;
                                  -	boolean singleLine = (getStyle() & SWT.SINGLE) != 0;
                                  -	
                                  -	if (singleLine) {
                                  -		count = 1;
                                  -	} else {
                                  -		count = content.getLineCount();
                                  -	}
                                  -	if (wHint != SWT.DEFAULT) {
                                  -		width = wHint;
                                  -	} 
                                  -	else {
                                  -		width = DEFAULT_WIDTH;
                                  -	}
                                  -	if (wHint == SWT.DEFAULT) {
                                  -		LineCache computeLineCache = lineCache;
                                  -		if (wordWrap) {
                                  -			// set non-wrapping content width calculator. Ensures ideal line width 
                                  -			// that does not required wrapping. Fixes bug 31195.
                                  -			computeLineCache = new ContentWidthCache(this, logicalContent);
                                  -			if (!singleLine) {
                                  -				count = logicalContent.getLineCount();
                                  -			}
                                  -		}
                                  -		// Only calculate what can actually be displayed.
                                  -		// Do this because measuring each text line is a 
                                  -		// time-consuming process.
                                  -		int visibleCount = Math.min (count, getDisplay().getBounds().height / lineHeight);
                                  -		computeLineCache.calculate(0, visibleCount);
                                  -		width = computeLineCache.getWidth() + leftMargin + rightMargin;
                                  -	}
                                  -	else
                                  -	if (wordWrap && !singleLine) {
                                  -		// calculate to wrap to width hint. Fixes bug 20377. 
                                  -		// don't wrap live content. Fixes bug 38344.
                                  -		WrappedContent wrappedContent = new WrappedContent(renderer, logicalContent);
                                  -		wrappedContent.wrapLines(width);
                                  -		count = wrappedContent.getLineCount();
                                  -	}
                                  -	if (hHint != SWT.DEFAULT) {
                                  -		height = hHint;
                                  -	} 
                                  -	else {
                                  -		height = count * lineHeight + topMargin + bottomMargin;
                                  -	}
                                  -	// Use default values if no text is defined.
                                  -	if (width == 0) {
                                  -		width = DEFAULT_WIDTH;
                                  -	}
                                  -	if (height == 0) {
                                  -		if (singleLine) {
                                  -			height = lineHeight;
                                  -		}
                                  -		else {
                                  -			height = DEFAULT_HEIGHT;
                                  -		}
                                  -	}
                                  -	Rectangle rect = computeTrim(0, 0, width, height);
                                  -	return new Point (rect.width, rect.height);
                                  -}
                                  -/**
                                  - * Copies the selected text to the <code>DND.CLIPBOARD</code> clipboard.
                                  - * The text will be put on the clipboard in plain text format and RTF format.
                                  - * The <code>DND.CLIPBOARD</code> clipboard is used for data that is
                                  - *  transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) or 
                                  - *  by menu action.
                                  - * 
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void copy() {
                                  -	checkWidget();
                                  -	copy(DND.CLIPBOARD);
                                  -}
                                  -
                                  -/**
                                  - * Copies the selected text to the specified clipboard.  The text will be put in the 
                                  - * clipboard in plain text format and RTF format.
                                  - * 
                                  - * <p>The clipboardType is  one of the clipboard constants defined in class 
                                  - * <code>DND</code>.  The <code>DND.CLIPBOARD</code>  clipboard is 
                                  - * used for data that is transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) 
                                  - * or by menu action.  The <code>DND.SELECTION_CLIPBOARD</code> 
                                  - * clipboard is used for data that is transferred by selecting text and pasting 
                                  - * with the middle mouse button.</p>
                                  - * 
                                  - * @param clipboardType indicates the type of clipboard
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 3.1
                                  - */
                                  -public void copy(int clipboardType) {
                                  -	checkWidget();
                                  -	if (clipboardType != DND.CLIPBOARD && 
                                  -		 clipboardType != DND.SELECTION_CLIPBOARD) return;
                                  -	int length = selection.y - selection.x;
                                  -	if (length > 0) {
                                  -		try {
                                  -			setClipboardContent(selection.x, length, clipboardType);
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Returns a string that uses only the line delimiter specified by the 
                                  - * StyledTextContent implementation.
                                  - * Returns only the first line if the widget has the SWT.SINGLE style.
                                  - * <p>
                                  - *
                                  - * @param text the text that may have line delimiters that don't 
                                  - * 	match the model line delimiter. Possible line delimiters 
                                  - * 	are CR ('\r'), LF ('\n'), CR/LF ("\r\n")
                                  - * @return the converted text that only uses the line delimiter 
                                  - * 	specified by the model. Returns only the first line if the widget 
                                  - * 	has the SWT.SINGLE style.
                                  - */
                                  -String getModelDelimitedText(String text) {
                                  -	StringBuffer convertedText;
                                  -	String delimiter = getLineDelimiter();
                                  -	int length = text.length();	
                                  -	int crIndex = 0;
                                  -	int lfIndex = 0;
                                  -	int i = 0;
                                  -	
                                  -	if (length == 0) {
                                  -		return text;
                                  -	}
                                  -	convertedText = new StringBuffer(length);
                                  -	while (i < length) {
                                  -		if (crIndex != -1) {
                                  -			crIndex = text.indexOf(SWT.CR, i);
                                  -		}
                                  -		if (lfIndex != -1) {
                                  -			lfIndex = text.indexOf(SWT.LF, i);
                                  -		}
                                  -		if (lfIndex == -1 && crIndex == -1) {	// no more line breaks?
                                  -			break;
                                  -		}
                                  -		else									// CR occurs before LF or no LF present?
                                  -		if ((crIndex < lfIndex && crIndex != -1) || lfIndex == -1) {	
                                  -			convertedText.append(text.substring(i, crIndex));
                                  -			if (lfIndex == crIndex + 1) {		// CR/LF combination?
                                  -				i = lfIndex + 1;
                                  -			}
                                  -			else {
                                  -				i = crIndex + 1;
                                  -			}
                                  -		}
                                  -		else {									// LF occurs before CR!
                                  -			convertedText.append(text.substring(i, lfIndex));
                                  -			i = lfIndex + 1;
                                  -		}
                                  -		if (isSingleLine()) {
                                  -			break;
                                  -		}
                                  -		convertedText.append(delimiter);
                                  -	}
                                  -	// copy remaining text if any and if not in single line mode or no 
                                  -	// text copied thus far (because there only is one line)
                                  -	if (i < length && (!isSingleLine() || convertedText.length() == 0)) {
                                  -		convertedText.append(text.substring(i));
                                  -	}
                                  -	return convertedText.toString();
                                  -}
                                  -/**
                                  - * Creates default key bindings.
                                  - */
                                  -void createKeyBindings() {
                                  -	int nextKey = isMirrored() ? SWT.ARROW_LEFT : SWT.ARROW_RIGHT;
                                  -	int previousKey = isMirrored() ? SWT.ARROW_RIGHT : SWT.ARROW_LEFT;
                                  -	
                                  -	// Navigation
                                  -	setKeyBinding(SWT.ARROW_UP, ST.LINE_UP);	
                                  -	setKeyBinding(SWT.ARROW_DOWN, ST.LINE_DOWN);
                                  -	setKeyBinding(SWT.HOME, ST.LINE_START);
                                  -	setKeyBinding(SWT.END, ST.LINE_END);
                                  -	setKeyBinding(SWT.PAGE_UP, ST.PAGE_UP);
                                  -	setKeyBinding(SWT.PAGE_DOWN, ST.PAGE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD1, ST.TEXT_START);
                                  -	setKeyBinding(SWT.END | SWT.MOD1, ST.TEXT_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD1, ST.WINDOW_START);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1, ST.WINDOW_END);
                                  -	setKeyBinding(nextKey, ST.COLUMN_NEXT);
                                  -	setKeyBinding(previousKey, ST.COLUMN_PREVIOUS);
                                  -	setKeyBinding(nextKey | SWT.MOD1, ST.WORD_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD1, ST.WORD_PREVIOUS);
                                  -	
                                  -	// Selection
                                  -	setKeyBinding(SWT.ARROW_UP | SWT.MOD2, ST.SELECT_LINE_UP);	
                                  -	setKeyBinding(SWT.ARROW_DOWN | SWT.MOD2, ST.SELECT_LINE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD2, ST.SELECT_LINE_START);
                                  -	setKeyBinding(SWT.END | SWT.MOD2, ST.SELECT_LINE_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD2, ST.SELECT_PAGE_UP);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD2, ST.SELECT_PAGE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_START);	
                                  -	setKeyBinding(SWT.END | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_START);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_END);
                                  -	setKeyBinding(nextKey | SWT.MOD2, ST.SELECT_COLUMN_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD2, ST.SELECT_COLUMN_PREVIOUS);	
                                  -	setKeyBinding(nextKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_PREVIOUS);
                                  -           	  	
                                  -	// Modification
                                  -	// Cut, Copy, Paste
                                  -	setKeyBinding('X' | SWT.MOD1, ST.CUT);
                                  -	setKeyBinding('C' | SWT.MOD1, ST.COPY);
                                  -	setKeyBinding('V' | SWT.MOD1, ST.PASTE);
                                  -	// Cut, Copy, Paste Wordstar style
                                  -	setKeyBinding(SWT.DEL | SWT.MOD2, ST.CUT);
                                  -	setKeyBinding(SWT.INSERT | SWT.MOD1, ST.COPY);
                                  -	setKeyBinding(SWT.INSERT | SWT.MOD2, ST.PASTE);
                                  -	setKeyBinding(SWT.BS | SWT.MOD2, ST.DELETE_PREVIOUS);
                                  -	
                                  -	setKeyBinding(SWT.BS, ST.DELETE_PREVIOUS);
                                  -	setKeyBinding(SWT.DEL, ST.DELETE_NEXT);
                                  -	setKeyBinding(SWT.BS | SWT.MOD1, ST.DELETE_WORD_PREVIOUS);
                                  -	setKeyBinding(SWT.DEL | SWT.MOD1, ST.DELETE_WORD_NEXT);
                                  -	
                                  -	// Miscellaneous
                                  -	setKeyBinding(SWT.INSERT, ST.TOGGLE_OVERWRITE);
                                  -}
                                  -/**
                                  - * Create the bitmaps to use for the caret in bidi mode.  This
                                  - * method only needs to be called upon widget creation and when the
                                  - * font changes (the caret bitmap height needs to match font height).
                                  - */
                                  -void createCaretBitmaps() {
                                  -	int caretWidth = BIDI_CARET_WIDTH;
                                  -	Display display = getDisplay();
                                  -	if (leftCaretBitmap != null) {
                                  -		if (defaultCaret != null && leftCaretBitmap.equals(defaultCaret.getImage())) {
                                  -			defaultCaret.setImage(null);
                                  -		}
                                  -		leftCaretBitmap.dispose();
                                  -	}
                                  -	leftCaretBitmap = new Image(display, caretWidth, lineHeight);
                                  -	GC gc = new GC (leftCaretBitmap); 
                                  -	gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
                                  -	gc.fillRectangle(0, 0, caretWidth, lineHeight);
                                  -	gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
                                  -	gc.drawLine(0,0,0,lineHeight);
                                  -	gc.drawLine(0,0,caretWidth-1,0);
                                  -	gc.drawLine(0,1,1,1);
                                  -	gc.dispose();	
                                  -	
                                  -	if (rightCaretBitmap != null) {
                                  -		if (defaultCaret != null && rightCaretBitmap.equals(defaultCaret.getImage())) {
                                  -			defaultCaret.setImage(null);
                                  -		}
                                  -		rightCaretBitmap.dispose();
                                  -	}
                                  -	rightCaretBitmap = new Image(display, caretWidth, lineHeight);
                                  -	gc = new GC (rightCaretBitmap); 
                                  -	gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
                                  -	gc.fillRectangle(0, 0, caretWidth, lineHeight);
                                  -	gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
                                  -	gc.drawLine(caretWidth-1,0,caretWidth-1,lineHeight);
                                  -	gc.drawLine(0,0,caretWidth-1,0);
                                  -	gc.drawLine(caretWidth-1,1,1,1);
                                  -	gc.dispose();
                                  -}
                                  -/**
                                  - * Moves the selected text to the clipboard.  The text will be put in the 
                                  - * clipboard in plain text format and RTF format.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void cut(){
                                  -	checkWidget();
                                  -	int length = selection.y - selection.x;
                                  -	
                                  -	if (length > 0) {
                                  -		try {
                                  -			setClipboardContent(selection.x, length, DND.CLIPBOARD);
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -			// Abort cut operation if copy to clipboard fails.
                                  -			// Fixes bug 21030.
                                  -			return;
                                  -		}
                                  -		doDelete();
                                  -	}
                                  -}
                                  -/** 
                                  - * A mouse move event has occurred.  See if we should start autoscrolling.  If
                                  - * the move position is outside of the client area, initiate autoscrolling.  
                                  - * Otherwise, we've moved back into the widget so end autoscrolling.
                                  - */
                                  -void doAutoScroll(Event event) {
                                  -	Rectangle area = getClientArea();		
                                  -	
                                  -	if (event.y > area.height) {
                                  -		doAutoScroll(SWT.DOWN, event.y - area.height);
                                  -	}
                                  -	else 
                                  -	if (event.y < 0) {
                                  -		doAutoScroll(SWT.UP, -event.y);
                                  -	}
                                  -	else 
                                  -	if (event.x < leftMargin && !wordWrap) {
                                  -		doAutoScroll(ST.COLUMN_PREVIOUS, leftMargin - event.x);
                                  -	}
                                  -	else 
                                  -	if (event.x > area.width - leftMargin - rightMargin && !wordWrap) {
                                  -		doAutoScroll(ST.COLUMN_NEXT, event.x - (area.width - leftMargin - rightMargin));
                                  -	}
                                  -	else {
                                  -		endAutoScroll();
                                  -	}
                                  -}
                                  -/** 
                                  - * Initiates autoscrolling.
                                  - * <p>
                                  - *
                                  - * @param direction SWT.UP, SWT.DOWN, SWT.COLUMN_NEXT, SWT.COLUMN_PREVIOUS
                                  - */
                                  -void doAutoScroll(int direction, int distance) {
                                  -	Runnable timer = null;
                                  -	
                                  -	autoScrollDistance = distance;
                                  -
                                  -	// If we're already autoscrolling in the given direction do nothing
                                  -	if (autoScrollDirection == direction) {
                                  -		return;
                                  -	}
                                  -	
                                  -	final Display display = getDisplay();
                                  -	// Set a timer that will simulate the user pressing and holding
                                  -	// down a cursor key (i.e., arrowUp, arrowDown).
                                  -	if (direction == SWT.UP) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == SWT.UP) {
                                  -					int lines = (autoScrollDistance / getLineHeight()) + 1;
                                  -					doSelectionPageUp(lines);
                                  -					display.timerExec(V_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(V_SCROLL_RATE, timer);
                                  -	} else if (direction == SWT.DOWN) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == SWT.DOWN) {
                                  -					int lines = (autoScrollDistance / getLineHeight()) + 1;
                                  -					doSelectionPageDown(lines);
                                  -					display.timerExec(V_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(V_SCROLL_RATE, timer);
                                  -	} else if (direction == ST.COLUMN_NEXT) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == ST.COLUMN_NEXT) {
                                  -					doVisualNext();
                                  -					setMouseWordSelectionAnchor();
                                  -					doMouseSelection();
                                  -					display.timerExec(H_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(H_SCROLL_RATE, timer);
                                  -	} else if (direction == ST.COLUMN_PREVIOUS) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == ST.COLUMN_PREVIOUS) {
                                  -					doVisualPrevious();
                                  -					setMouseWordSelectionAnchor();
                                  -					doMouseSelection();
                                  -					display.timerExec(H_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(H_SCROLL_RATE, timer);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the previous character. Delete the selected text if any.
                                  - * Move the caret in front of the deleted text.
                                  - */
                                  -void doBackspace() {
                                  -	Event event = new Event();
                                  -	event.text = "";
                                  -	if (selection.x != selection.y) {
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -	else
                                  -	if (caretOffset > 0) {
                                  -		int line = content.getLineAtOffset(caretOffset);
                                  -		int lineOffset = content.getOffsetAtLine(line);			
                                  -	
                                  -		if (caretOffset == lineOffset) {
                                  -			lineOffset = content.getOffsetAtLine(line - 1);
                                  -			event.start = lineOffset + content.getLine(line - 1).length();
                                  -			event.end = caretOffset;
                                  -		}
                                  -		else {
                                  -			String lineText = content.getLine(line);
                                  -			TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -			int start = layout.getPreviousOffset(caretOffset - lineOffset, SWT.MOVEMENT_CHAR);
                                  -			renderer.disposeTextLayout(layout); 
                                  -			event.start = start + lineOffset;
                                  -			event.end = caretOffset;
                                  -		}
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Replaces the selection with the character or insert the character at the 
                                  - * current caret position if no selection exists.
                                  - * If a carriage return was typed replace it with the line break character 
                                  - * used by the widget on this platform.
                                  - * <p>
                                  - *
                                  - * @param key the character typed by the user
                                  - */
                                  -void doContent(char key) {
                                  -	Event event;
                                  -	
                                  -	if (textLimit > 0 && 
                                  -		content.getCharCount() - (selection.y - selection.x) >= textLimit) {
                                  -		return;
                                  -	}	
                                  -	event = new Event();
                                  -	event.start = selection.x;
                                  -	event.end = selection.y;
                                  -	// replace a CR line break with the widget line break
                                  -	// CR does not make sense on Windows since most (all?) applications
                                  -	// don't recognize CR as a line break.
                                  -	if (key == SWT.CR || key == SWT.LF) {
                                  -		if (!isSingleLine()) {
                                  -			event.text = getLineDelimiter();
                                  -		}
                                  -	}
                                  -	// no selection and overwrite mode is on and the typed key is not a
                                  -	// tab character (tabs are always inserted without overwriting)?
                                  -	else
                                  -	if (selection.x == selection.y && overwrite && key != TAB) {
                                  -		int lineIndex = content.getLineAtOffset(event.end);
                                  -		int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -		String line = content.getLine(lineIndex);
                                  -		// replace character at caret offset if the caret is not at the 
                                  -		// end of the line
                                  -		if (event.end < lineOffset + line.length()) {
                                  -			event.end++;
                                  -		}
                                  -		event.text = new String(new char[] {key});
                                  -	}
                                  -	else {
                                  -		event.text = new String(new char[] {key});
                                  -	}
                                  -	if (event.text != null) {
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret after the last character of the widget content.
                                  - */
                                  -void doContentEnd() {
                                  -	// place caret at end of first line if receiver is in single 
                                  -	// line mode. fixes 4820.
                                  -	if (isSingleLine()) {
                                  -		doLineEnd();
                                  -	}
                                  -	else {
                                  -		int length = content.getCharCount();		
                                  -		if (caretOffset < length) {
                                  -			caretOffset = length;
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret in front of the first character of the widget content.
                                  - */
                                  -void doContentStart() {
                                  -	if (caretOffset > 0) {
                                  -		caretOffset = 0;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the selection if a selection exists.
                                  - * Otherwise, if no selection exists move the cursor according to the 
                                  - * cursor selection rules.
                                  - * <p>
                                  - *
                                  - * @see #doSelectionCursorPrevious
                                  - */
                                  -void doCursorPrevious() {
                                  -	advancing = false;
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.x;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionCursorPrevious();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the selection if a selection exists.
                                  - * Otherwise, if no selection exists move the cursor according to the 
                                  - * cursor selection rules.
                                  - * <p>
                                  - *
                                  - * @see #doSelectionCursorNext
                                  - */
                                  -void doCursorNext() {
                                  -	advancing = true;
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -
                                  -		caretOffset = selection.y;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionCursorNext();
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the next character. Delete the selected text if any.
                                  - */
                                  -void doDelete() {
                                  -	Event event = new Event();
                                  -	event.text = "";
                                  -	if (selection.x != selection.y) {
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -	else
                                  -	if (caretOffset < content.getCharCount()) {
                                  -		int line = content.getLineAtOffset(caretOffset);
                                  -		int lineOffset = content.getOffsetAtLine(line);
                                  -		int lineLength = content.getLine(line).length();
                                  -				
                                  -		if (caretOffset == lineOffset + lineLength) {
                                  -			event.start = caretOffset;
                                  -			event.end = content.getOffsetAtLine(line + 1);
                                  -		}
                                  -		else {
                                  -			event.start = caretOffset;
                                  -			event.end = getClusterNext(caretOffset, line);
                                  -		}
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the next word.
                                  - */
                                  -void doDeleteWordNext() {
                                  -	if (selection.x != selection.y) {
                                  -		// if a selection exists, treat the as if 
                                  -		// only the delete key was pressed
                                  -		doDelete();
                                  -	} else {
                                  -		Event event = new Event();
                                  -		event.text = "";
                                  -		event.start = caretOffset;
                                  -		event.end = getWordEnd(caretOffset);
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the previous word.
                                  - */
                                  -void doDeleteWordPrevious() {
                                  -	if (selection.x != selection.y) {
                                  -		// if a selection exists, treat as if 
                                  -		// only the backspace key was pressed
                                  -		doBackspace();
                                  -	} else {
                                  -		Event event = new Event();
                                  -		event.text = "";
                                  -		event.start = getWordStart(caretOffset);
                                  -		event.end = caretOffset;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line down and to the same character offset relative 
                                  - * to the beginning of the line. Move the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * 
                                  - * @return index of the new line relative to the first line in the document
                                  - */
                                  -int doLineDown() {
                                  -	if (isSingleLine()) {
                                  -		return 0;
                                  -	}
                                  -	// allow line down action only if receiver is not in single line mode.
                                  -	// fixes 4820.
                                  -	int caretLine = getCaretLine(); 
                                  -	if (caretLine < content.getLineCount() - 1) {
                                  -		caretLine++;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the line.
                                  - */
                                  -void doLineEnd() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);	
                                  -	int lineLength = content.getLine(caretLine).length();
                                  -	int lineEndOffset = lineOffset + lineLength;
                                  -	
                                  -	if (caretOffset < lineEndOffset) {
                                  -		caretOffset = lineEndOffset;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the beginning of the line.
                                  - */
                                  -void doLineStart() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	if (caretOffset > lineOffset) {
                                  -		caretOffset = lineOffset;
                                  -		showCaret(caretLine);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line up and to the same character offset relative 
                                  - * to the beginning of the line. Move the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * 
                                  - * @return index of the new line relative to the first line in the document
                                  - */
                                  -int doLineUp() {
                                  -	int caretLine = getCaretLine();
                                  -	if (caretLine > 0) {
                                  -		caretLine--;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Moves the caret to the specified location.
                                  - * <p>
                                  - *
                                  - * @param x x location of the new caret position
                                  - * @param y y location of the new caret position
                                  - * @param select the location change is a selection operation.
                                  - * 	include the line delimiter in the selection
                                  - */
                                  -void doMouseLocationChange(int x, int y, boolean select) {
                                  -	int line = (y + verticalScrollOffset) / lineHeight;
                                  -	int lineCount = content.getLineCount();
                                  -	int newCaretOffset;
                                  -	int newCaretLine;
                                  -	boolean oldAdvancing = advancing;
                                  -
                                  -	updateCaretDirection = true;
                                  -	if (line > lineCount - 1) {
                                  -		line = lineCount - 1;
                                  -	}	
                                  -	// allow caret to be placed below first line only if receiver is 
                                  -	// not in single line mode. fixes 4820.
                                  -	if (line < 0 || (isSingleLine() && line > 0)) {
                                  -		return;
                                  -	}
                                  -	newCaretOffset = getOffsetAtMouseLocation(x, line);
                                  -	
                                  -	if (mouseDoubleClick) {
                                  -		// double click word select the previous/next word. fixes bug 15610
                                  -		newCaretOffset = doMouseWordSelect(x, newCaretOffset, line);
                                  -	}
                                  -	newCaretLine = content.getLineAtOffset(newCaretOffset);
                                  -	// Is the mouse within the left client area border or on 
                                  -	// a different line? If not the autoscroll selection 
                                  -	// could be incorrectly reset. Fixes 1GKM3XS
                                  -	if (y >= 0 && y < getClientArea().height && 
                                  -		(x >= 0 && x < getClientArea().width || wordWrap ||	
                                  -		newCaretLine != content.getLineAtOffset(caretOffset))) {
                                  -		if (newCaretOffset != caretOffset || advancing != oldAdvancing) {
                                  -			caretOffset = newCaretOffset;
                                  -			if (select) {
                                  -				doMouseSelection();
                                  -			}
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -	if (!select) {
                                  -		caretOffset = newCaretOffset;
                                  -		clearSelection(true);
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the selection based on the caret position
                                  - */
                                  -void doMouseSelection() {
                                  -	if (caretOffset <= selection.x || 
                                  -		(caretOffset > selection.x && 
                                  -		 caretOffset < selection.y && selectionAnchor == selection.x)) {
                                  -		doSelection(ST.COLUMN_PREVIOUS);
                                  -	}
                                  -	else {
                                  -		doSelection(ST.COLUMN_NEXT);
                                  -	}
                                  -}
                                  -/**
                                  - * Returns the offset of the word at the specified offset. 
                                  - * If the current selection extends from high index to low index 
                                  - * (i.e., right to left, or caret is at left border of selecton on 
                                  - * non-bidi platforms) the start offset of the word preceeding the
                                  - * selection is returned. If the current selection extends from 
                                  - * low index to high index the end offset of the word following 
                                  - * the selection is returned.
                                  - * 
                                  - * @param x mouse x location
                                  - * @param newCaretOffset caret offset of the mouse cursor location
                                  - * @param line line index of the mouse cursor location
                                  - */
                                  -int doMouseWordSelect(int x, int newCaretOffset, int line) {
                                  -	int wordOffset;
                                  -
                                  -	// flip selection anchor based on word selection direction from 
                                  -	// base double click. Always do this here (and don't rely on doAutoScroll)
                                  -	// because auto scroll only does not cover all possible mouse selections
                                  -	// (e.g., mouse x < 0 && mouse y > caret line y)
                                  - 	if (newCaretOffset < selectionAnchor && selectionAnchor == selection.x) {
                                  -		selectionAnchor = doubleClickSelection.y;
                                  -	}
                                  -	else
                                  -	if (newCaretOffset > selectionAnchor && selectionAnchor == selection.y) {
                                  -		selectionAnchor = doubleClickSelection.x;
                                  -	}
                                  -	if (x >= 0 && x < getClientArea().width) {
                                  -		// find the previous/next word
                                  -		if (caretOffset == selection.x) {
                                  -			wordOffset = getWordStart(newCaretOffset);
                                  -		}
                                  -		else {
                                  -			wordOffset = getWordEndNoSpaces(newCaretOffset);
                                  -		}
                                  -		// mouse word select only on same line mouse cursor is on
                                  -		if (content.getLineAtOffset(wordOffset) == line) {
                                  -			newCaretOffset = wordOffset;
                                  -		}
                                  -	}
                                  -	return newCaretOffset;
                                  -}
                                  -/**
                                  - * Scrolls one page down so that the last line (truncated or whole)
                                  - * of the current page becomes the fully visible top line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the end 
                                  - * of the text where a full page scroll is not possible. In this case 
                                  - * the caret is moved after the last character.
                                  - * <p>
                                  - *
                                  - * @param select whether or not to select the page
                                  - */
                                  -void doPageDown(boolean select, int lines) {
                                  -	int lineCount = content.getLineCount();
                                  -	int oldColumnX = columnX;
                                  -	int oldHScrollOffset = horizontalScrollOffset;
                                  -	int caretLine;
                                  -	
                                  -	// do nothing if in single line mode. fixes 5673
                                  -	if (isSingleLine()) {
                                  -		return;
                                  -	}
                                  -	caretLine = getCaretLine();
                                  -	if (caretLine < lineCount - 1) {
                                  -		int verticalMaximum = lineCount * getVerticalIncrement();
                                  -		int pageSize = getClientArea().height;
                                  -		int scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -		int scrollOffset;
                                  -		
                                  -		// ensure that scrollLines never gets negative and at leat one 
                                  -		// line is scrolled. fixes bug 5602.
                                  -		scrollLines = Math.max(1, scrollLines);
                                  -		caretLine += scrollLines;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine); 
                                  -		if (select) {
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -		}
                                  -		// scroll one page down or to the bottom
                                  -		scrollOffset = verticalScrollOffset + scrollLines * getVerticalIncrement();
                                  -		if (scrollOffset + pageSize > verticalMaximum) {
                                  -			scrollOffset = verticalMaximum - pageSize;
                                  -		}
                                  -		if (scrollOffset > verticalScrollOffset) {		
                                  -			setVerticalScrollOffset(scrollOffset, true);
                                  -		}
                                  -	}
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// restore the original horizontal caret position
                                  -	int hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -	columnX = oldColumnX + hScrollChange;
                                  -}
                                  -/**
                                  - * Moves the cursor to the end of the last fully visible line.
                                  - */
                                  -void doPageEnd() {
                                  -	// go to end of line if in single line mode. fixes 5673
                                  -	if (isSingleLine()) {
                                  -		doLineEnd();
                                  -	}
                                  -	else {
                                  -		int line = getBottomIndex();
                                  -		int bottomCaretOffset = content.getOffsetAtLine(line) + content.getLine(line).length();	
                                  -
                                  -		if (caretOffset < bottomCaretOffset) {
                                  -			caretOffset = bottomCaretOffset;
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the cursor to the beginning of the first fully visible line.
                                  - */
                                  -void doPageStart() {
                                  -	int topCaretOffset = content.getOffsetAtLine(topIndex);
                                  -	
                                  -	if (caretOffset > topCaretOffset) {
                                  -		caretOffset = topCaretOffset;
                                  -		// explicitly go to the calculated caret line. may be different 
                                  -		// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -		showCaret(topIndex);
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls one page up so that the first line (truncated or whole)
                                  - * of the current page becomes the fully visible last line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the beginning 
                                  - * of the text where a full page scroll is not possible. In this case the
                                  - * caret is moved in front of the first character.
                                  - */
                                  -void doPageUp(boolean select, int lines) {
                                  -	int oldColumnX = columnX;
                                  -	int oldHScrollOffset = horizontalScrollOffset;
                                  -	int caretLine = getCaretLine();
                                  -	
                                  -	if (caretLine > 0) {	
                                  -		int scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -		int scrollOffset;
                                  -		
                                  -		caretLine -= scrollLines;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -		if (select) {
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -		}
                                  -		// scroll one page up or to the top
                                  -		scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * getVerticalIncrement());
                                  -		if (scrollOffset < verticalScrollOffset) {
                                  -			setVerticalScrollOffset(scrollOffset, true);
                                  -		}
                                  -	}
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// restore the original horizontal caret position
                                  -	int hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -	columnX = oldColumnX + hScrollChange;
                                  -}
                                  -/**
                                  - * Updates the selection to extend to the current caret position.
                                  - */
                                  -void doSelection(int direction) {
                                  -	int redrawStart = -1;
                                  -	int redrawEnd = -1;
                                  -	
                                  -	if (selectionAnchor == -1) {
                                  -		selectionAnchor = selection.x;
                                  -	}	
                                  -	if (direction == ST.COLUMN_PREVIOUS) {
                                  -		if (caretOffset < selection.x) {
                                  -			// grow selection
                                  -			redrawEnd = selection.x; 
                                  -			redrawStart = selection.x = caretOffset;		
                                  -			// check if selection has reversed direction
                                  -			if (selection.y != selectionAnchor) {
                                  -				redrawEnd = selection.y;
                                  -				selection.y = selectionAnchor;
                                  -			}
                                  -		}
                                  -		else	// test whether selection actually changed. Fixes 1G71EO1
                                  -		if (selectionAnchor == selection.x && caretOffset < selection.y) {
                                  -			// caret moved towards selection anchor (left side of selection). 
                                  -			// shrink selection			
                                  -			redrawEnd = selection.y;
                                  -			redrawStart = selection.y = caretOffset;		
                                  -		}
                                  -	}
                                  -	else {
                                  -		if (caretOffset > selection.y) {
                                  -			// grow selection
                                  -			redrawStart = selection.y;
                                  -			redrawEnd = selection.y = caretOffset;
                                  -			// check if selection has reversed direction
                                  -			if (selection.x != selectionAnchor) {
                                  -				redrawStart = selection.x;				
                                  -				selection.x = selectionAnchor;
                                  -			}
                                  -		}
                                  -		else	// test whether selection actually changed. Fixes 1G71EO1
                                  -		if (selectionAnchor == selection.y && caretOffset > selection.x) {
                                  -			// caret moved towards selection anchor (right side of selection). 
                                  -			// shrink selection			
                                  -			redrawStart = selection.x;
                                  -			redrawEnd = selection.x = caretOffset;		
                                  -		}
                                  -	}
                                  -	if (redrawStart != -1 && redrawEnd != -1) {
                                  -		internalRedrawRange(redrawStart, redrawEnd - redrawStart, true);
                                  -		sendSelectionEvent();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the next character or to the beginning of the 
                                  - * next line if the cursor is at the end of a line.
                                  - */
                                  -void doSelectionCursorNext() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	advancing = true;
                                  -	if (offsetInLine < content.getLine(caretLine).length()) {
                                  -		caretOffset = getClusterNext(caretOffset, caretLine);
                                  -		showCaret();
                                  -	}
                                  -	else
                                  -	if (caretLine < content.getLineCount() - 1 && !isSingleLine()) {
                                  -		// only go to next line if not in single line mode. fixes 5673
                                  -		caretLine++;		
                                  -		caretOffset = content.getOffsetAtLine(caretLine);
                                  -		// explicitly go to the calculated caret line. may be different 
                                  -		// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -		showCaret(caretLine);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the previous character or to the end of the previous 
                                  - * line if the cursor is at the beginning of a line.
                                  - */
                                  -void doSelectionCursorPrevious() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	advancing = false;
                                  -	if (offsetInLine > 0) {
                                  -		caretOffset = getClusterPrevious(caretOffset, caretLine);
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else
                                  -	if (caretLine > 0) {
                                  -		caretLine--;
                                  -		lineOffset = content.getOffsetAtLine(caretLine);
                                  -		caretOffset = lineOffset + content.getLine(caretLine).length();
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line down and to the same character offset relative 
                                  - * to the beginning of the line. Moves the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * Moves the caret to the end of the text if the caret already is on the 
                                  - * last line.
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - */
                                  -void doSelectionLineDown() {
                                  -	int oldColumnX;
                                  -	int caretLine;
                                  -	int lineStartOffset;
                                  -	
                                  -	if (isSingleLine()) {
                                  -		return;
                                  -	}
                                  -	caretLine = getCaretLine();	
                                  -	lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	if (caretLine == content.getLineCount() - 1) {
                                  -		caretOffset = content.getCharCount();
                                  -	}
                                  -	else {
                                  -		caretLine = doLineDown();
                                  -	}
                                  -	setMouseWordSelectionAnchor();	
                                  -	// select first and then scroll to reduce flash when key 
                                  -	// repeat scrolls lots of lines
                                  -	doSelection(ST.COLUMN_NEXT);
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// save the original horizontal caret position
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Moves the caret one line up and to the same character offset relative 
                                  - * to the beginning of the line. Moves the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * Moves the caret to the beginning of the document if it is already on the
                                  - * first line.
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - */
                                  -void doSelectionLineUp() {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();	
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);	
                                  -	if (caretLine == 0) {
                                  -		caretOffset = 0;
                                  -	}
                                  -	else {
                                  -		caretLine = doLineUp();
                                  -	}
                                  -	setMouseWordSelectionAnchor();
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	doSelection(ST.COLUMN_PREVIOUS);
                                  -	// save the original horizontal caret position	
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls one page down so that the last line (truncated or whole)
                                  - * of the current page becomes the fully visible top line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the end 
                                  - * of the text where a full page scroll is not possible. In this case 
                                  - * the caret is moved after the last character.
                                  - * <p>
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - * </p>
                                  - */
                                  -void doSelectionPageDown(int lines) {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	doPageDown(true, lines);
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls one page up so that the first line (truncated or whole)
                                  - * of the current page becomes the fully visible last line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the beginning 
                                  - * of the text where a full page scroll is not possible. In this case the
                                  - * caret is moved in front of the first character.
                                  - * <p>
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - * </p>
                                  - */
                                  -void doSelectionPageUp(int lines) {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	doPageUp(true, lines);
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the next word .
                                  - */
                                  -void doSelectionWordNext() {
                                  -	int newCaretOffset = getWordEnd(caretOffset);
                                  -	// Force symmetrical movement for word next and previous. Fixes 14536
                                  -	advancing = false;
                                  -	// don't change caret position if in single line mode and the cursor 
                                  -	// would be on a different line. fixes 5673
                                  -	if (!isSingleLine() || 
                                  -		content.getLineAtOffset(caretOffset) == content.getLineAtOffset(newCaretOffset)) {
                                  -		caretOffset = newCaretOffset;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the previous word.
                                  - */
                                  -void doSelectionWordPrevious() {
                                  -	int caretLine;	
                                  -	advancing = false;
                                  -	caretOffset = getWordStart(caretOffset);
                                  -	caretLine = content.getLineAtOffset(caretOffset);
                                  -	// word previous always comes from bottom line. when
                                  -	// wrapping lines, stay on bottom line when on line boundary
                                  -	if (wordWrap && caretLine < content.getLineCount() - 1 &&
                                  -		caretOffset == content.getOffsetAtLine(caretLine + 1)) {
                                  -		caretLine++;
                                  -	}
                                  -	showCaret(caretLine);
                                  -}
                                  -/**
                                  - * Moves the caret one character to the left.  Do not go to the previous line.
                                  - * When in a bidi locale and at a R2L character the caret is moved to the 
                                  - * beginning of the R2L segment (visually right) and then one character to the 
                                  - * left (visually left because it's now in a L2R segment).
                                  - */
                                  -void doVisualPrevious() {
                                  -	caretOffset = getClusterPrevious(caretOffset, getCaretLine());
                                  -	showCaret();
                                  -}
                                  -/**
                                  - * Moves the caret one character to the right.  Do not go to the next line.
                                  - * When in a bidi locale and at a R2L character the caret is moved to the 
                                  - * end of the R2L segment (visually left) and then one character to the 
                                  - * right (visually right because it's now in a L2R segment).
                                  - */
                                  -void doVisualNext() {
                                  -	caretOffset = getClusterNext(caretOffset, getCaretLine());
                                  -	showCaret();
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the next word.
                                  - * If a selection exists, move the caret to the end of the selection
                                  - * and remove the selection.
                                  - */
                                  -void doWordNext() {
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.y;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionWordNext();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the previous word.
                                  - * If a selection exists, move the caret to the start of the selection
                                  - * and remove the selection.
                                  - */
                                  -void doWordPrevious() {
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.x;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionWordPrevious();
                                  -	}
                                  -}
                                  -/**
                                  - * Draws the specified rectangle.
                                  - * Draw directly without invalidating the affected area when clearBackground is 
                                  - * false.
                                  - * <p>
                                  - *
                                  - * @param x the x position
                                  - * @param y the y position
                                  - * @param width the width
                                  - * @param height the height
                                  - * @param clearBackground true=clear the background by invalidating the requested 
                                  - * 	redraw area, false=draw the foreground directly without invalidating the 
                                  - * 	redraw area.
                                  - */
                                  -void draw(int x, int y, int width, int height, boolean clearBackground) {
                                  -	if (clearBackground) {
                                  -		redraw(x + leftMargin, y + topMargin, width, height, true);
                                  -	}
                                  -	else {
                                  -		int startLine = (y + verticalScrollOffset) / lineHeight;
                                  -		int endY = y + height;
                                  -		int paintYFromTopLine = (startLine - topIndex) * lineHeight;
                                  -		int topLineOffset = (topIndex * lineHeight - verticalScrollOffset);
                                  -		int paintY = paintYFromTopLine + topLineOffset + topMargin;	// adjust y position for pixel based scrolling
                                  -		int lineCount = content.getLineCount();
                                  -		Color background = getBackground();
                                  -		Color foreground = getForeground();
                                  -		GC gc = getGC();
                                  -	
                                  -		if (isSingleLine()) {
                                  -			lineCount = 1;
                                  -		}
                                  -		for (int i = startLine; paintY < endY && i < lineCount; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			renderer.drawLine(line, i, paintY, gc, background, foreground, clearBackground);
                                  -		}
                                  -		gc.dispose();	
                                  -	}
                                  -}
                                  -/** 
                                  - * Ends the autoscroll process.
                                  - */
                                  -void endAutoScroll() {
                                  -	autoScrollDirection = SWT.NULL;
                                  -}
                                  -public Color getBackground() {
                                  -	checkWidget();
                                  -	if (background == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
                                  -	}
                                  -	return background;
                                  -}
                                  -/**
                                  - * Returns the baseline, in pixels. 
                                  - * 
                                  - * @return baseline the baseline
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 3.0
                                  - */
                                  -public int getBaseline() {
                                  -	checkWidget();
                                  -	return renderer.getBaseline();
                                  -}
                                  -/**
                                  - * Gets the BIDI coloring mode.  When true the BIDI text display
                                  - * algorithm is applied to segments of text that are the same
                                  - * color.
                                  - *
                                  - * @return the current coloring mode
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * <p>
                                  - * @deprecated use BidiSegmentListener instead.
                                  - * </p>
                                  - */
                                  -public boolean getBidiColoring() {
                                  -	checkWidget();
                                  -	return bidiColoring;
                                  -}
                                  -/** 
                                  - * Returns the index of the last fully visible line.
                                  - * <p>
                                  - *
                                  - * @return index of the last fully visible line.
                                  - */
                                  -int getBottomIndex() {
                                  -	int lineCount = 1;
                                  -	
                                  -	if (lineHeight != 0) {
                                  -		// calculate the number of lines that are fully visible
                                  -		int partialTopLineHeight = topIndex * lineHeight - verticalScrollOffset;
                                  -		lineCount = (getClientArea().height - partialTopLineHeight) / lineHeight;
                                  -	}
                                  -	return Math.min(content.getLineCount() - 1, topIndex + Math.max(0, lineCount - 1));
                                  -}
                                  -/**
                                  - * Returns the caret position relative to the start of the text.
                                  - * <p>
                                  - *
                                  - * @return the caret position relative to the start of the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getCaretOffset() {
                                  -	checkWidget();
                                  -	
                                  -	return caretOffset;
                                  -}
                                  -/**
                                  - * Returns the caret offset at the given x location in the line.
                                  - * The caret offset is the offset of the character where the caret will be
                                  - * placed when a mouse click occurs. The caret offset will be the offset of 
                                  - * the character after the clicked one if the mouse click occurs at the second 
                                  - * half of a character.
                                  - * Doesn't properly handle ligatures and other context dependent characters 
                                  - * unless the current locale is a bidi locale. 
                                  - * Ligatures are handled properly as long as they don't occur at lineXOffset.
                                  - * <p>
                                  - *
                                  - * @param line text of the line to calculate the offset in
                                  - * @param lineOffset offset of the first character in the line. 
                                  - * 	0 based from the beginning of the document.
                                  - * @param lineXOffset x location in the line
                                  - * @return caret offset at the x location relative to the start of the line.
                                  - */
                                  -int getOffsetAtX(String line, int lineOffset, int lineXOffset) {
                                  -	int x = lineXOffset - leftMargin + horizontalScrollOffset;
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	int[] trailing = new int[1];
                                  -	int offsetInLine = layout.getOffset(x, 0, trailing);
                                  -	advancing = false;
                                  -	if (trailing[0] != 0) {
                                  -		int lineLength = line.length();
                                  -		if (offsetInLine + trailing[0] >= lineLength) {
                                  -			offsetInLine = lineLength;
                                  -			advancing = true;
                                  -		} else {
                                  -			int level;
                                  -			int offset = offsetInLine;
                                  -			while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--;
                                  -			if (offset == 0 && Character.isDigit(line.charAt(offset))) {
                                  -				level = isMirrored() ? 1 : 0;
                                  -			} else {
                                  -				level = layout.getLevel(offset) & 0x1;
                                  -			}
                                  -			offsetInLine += trailing[0];
                                  -			int trailingLevel = layout.getLevel(offsetInLine) & 0x1;
                                  -			advancing  = (level ^ trailingLevel) != 0;
                                  -		}
                                  -	}
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offsetInLine;
                                  -}
                                  -/**
                                  - * Returns the caret width.
                                  - * <p>
                                  - *
                                  - * @return the caret width, 0 if caret is null.
                                  - */
                                  -int getCaretWidth() {
                                  -	Caret caret = getCaret();
                                  -	if (caret == null) return 0;
                                  -	return caret.getSize().x;
                                  -}
                                  -Object getClipboardContent(int clipboardType) {
                                  -	TextTransfer plainTextTransfer = TextTransfer.getInstance();
                                  -	return clipboard.getContents(plainTextTransfer, clipboardType);
                                  -}
                                  -int getClusterNext(int offset, int lineIndex) {
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	offset -= lineOffset;
                                  -	offset = layout.getNextOffset(offset, SWT.MOVEMENT_CLUSTER);
                                  -	offset += lineOffset;
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offset;
                                  -}
                                  -int getClusterPrevious(int offset, int lineIndex) {
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	offset -= lineOffset;
                                  -	offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_CLUSTER);
                                  -	offset += lineOffset;
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the content implementation that is used for text storage
                                  - * or null if no user defined content implementation has been set.
                                  - * <p>
                                  - *
                                  - * @return content implementation that is used for text storage or null 
                                  - * if no user defined content implementation has been set.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public StyledTextContent getContent() {
                                  -	checkWidget();
                                  -	
                                  -	return logicalContent;
                                  -}
                                  -/** 
                                  - * Returns whether the widget implements double click mouse behavior.
                                  - * <p>
                                  - *
                                  - * @return true if double clicking a word selects the word, false if double clicks
                                  - * have the same effect as regular mouse clicks
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public boolean getDoubleClickEnabled() {
                                  -	checkWidget();
                                  -	return doubleClickEnabled;
                                  -}
                                  -/**
                                  - * Returns whether the widget content can be edited.
                                  - * <p>
                                  - *
                                  - * @return true if content can be edited, false otherwise
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public boolean getEditable() {
                                  -	checkWidget();
                                  -	return editable;
                                  -}
                                  -public Color getForeground() {
                                  -	checkWidget();
                                  -	if (foreground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
                                  -	}
                                  -	return foreground;
                                  -}
                                  -/** 
                                  - * Return a GC to use for rendering and update the cached font style to
                                  - * represent the current style.
                                  - * <p>
                                  - *
                                  - * @return GC.
                                  - */
                                  -GC getGC() {
                                  -	return new GC(this);
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll increment.
                                  - * <p>
                                  - *
                                  - * @return horizontal scroll increment.
                                  - */
                                  -int getHorizontalIncrement() {
                                  -	GC gc = getGC();
                                  -	int increment = gc.getFontMetrics().getAverageCharWidth();
                                  -	
                                  -	gc.dispose();
                                  -	return increment;
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll offset relative to the start of the line.
                                  - * <p>
                                  - *
                                  - * @return horizontal scroll offset relative to the start of the line,
                                  - * measured in character increments starting at 0, if > 0 the content is scrolled
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getHorizontalIndex() {	
                                  -	checkWidget();
                                  -	return horizontalScrollOffset / getHorizontalIncrement();
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll offset relative to the start of the line.
                                  - * <p>
                                  - *
                                  - * @return the horizontal scroll offset relative to the start of the line,
                                  - * measured in pixel starting at 0, if > 0 the content is scrolled.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getHorizontalPixel() {	
                                  -	checkWidget();
                                  -	return horizontalScrollOffset;
                                  -}
                                  -/** 
                                  - * Returns the action assigned to the key.
                                  - * Returns SWT.NULL if there is no action associated with the key.
                                  - * <p>
                                  - *
                                  - * @param key a key code defined in SWT.java or a character. 
                                  - * 	Optionally ORd with a state mask.  Preferred state masks are one or more of
                                  - *  SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform 
                                  - *  differences.  However, there may be cases where using the specific state masks
                                  - *  (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense.
                                  - * @return one of the predefined actions defined in ST.java or SWT.NULL 
                                  - * 	if there is no action associated with the key.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getKeyBinding(int key) {
                                  -	checkWidget();
                                  -	Integer action = (Integer) keyActionMap.get(new Integer(key));
                                  -	int intAction;
                                  -	
                                  -	if (action == null) {
                                  -		intAction = SWT.NULL;
                                  -	}
                                  -	else {
                                  -		intAction = action.intValue();
                                  -	}
                                  -	return intAction;
                                  -}
                                  -/**
                                  - * Gets the number of characters.
                                  - * <p>
                                  - *
                                  - * @return number of characters in the widget
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getCharCount() {
                                  -	checkWidget();
                                  -	return content.getCharCount();
                                  -}
                                  -/**
                                  - * Returns the background color of the line at the given index.
                                  - * Returns null if a LineBackgroundListener has been set or if no background 
                                  - * color has been specified for the line. Should not be called if a
                                  - * LineBackgroundListener has been set since the listener maintains the
                                  - * line background colors.
                                  - * 
                                  - * @param index the index of the line
                                  - * @return the background color of the line at the given index.
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT when the index is invalid</li>
                                  - * </ul>
                                  - */
                                  -public Color getLineBackground(int index) {
                                  -	checkWidget();
                                  -	Color lineBackground = null;
                                  -	
                                  -	if (index < 0 || index > logicalContent.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	if (!userLineBackground) {
                                  -		lineBackground = defaultLineStyler.getLineBackground(index);
                                  -	}
                                  -	return lineBackground;
                                  -}
                                  -/**
                                  - * Returns the line background data for the given line or null if 
                                  - * there is none.
                                  - * <p>
                                  - * @param lineOffset offset of the line start relative to the start
                                  - * 	of the content.
                                  - * @param line line to get line background data for
                                  - * @return line background data for the given line.
                                  - */
                                  -StyledTextEvent getLineBackgroundData(int lineOffset, String line) {
                                  -	return sendLineEvent(LineGetBackground, lineOffset, line);
                                  -}
                                  -/** 
                                  - * Gets the number of text lines.
                                  - * <p>
                                  - *
                                  - * @return the number of lines in the widget
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getLineCount() {
                                  -	checkWidget();
                                  -	return getLineAtOffset(getCharCount()) + 1;
                                  -}
                                  -/**
                                  - * Returns the number of lines that can be completely displayed in the 
                                  - * widget client area.
                                  - * <p>
                                  - *
                                  - * @return number of lines that can be completely displayed in the widget 
                                  - * 	client area.
                                  - */
                                  -int getLineCountWhole() {
                                  -	int lineCount;
                                  -	
                                  -	if (lineHeight != 0) {
                                  -		lineCount = getClientArea().height / lineHeight;
                                  -	}
                                  -	else {
                                  -		lineCount = 1;
                                  -	}
                                  -	return lineCount;
                                  -}
                                  -/**
                                  - * Returns the line at the specified offset in the text
                                  - * where 0 &lt= offset &lt= getCharCount() so that getLineAtOffset(getCharCount())
                                  - * returns the line of the insert location.
                                  - *
                                  - * @param offset offset relative to the start of the content. 
                                  - * 	0 <= offset <= getCharCount()
                                  - * @return line at the specified offset in the text
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public int getLineAtOffset(int offset) {
                                  -	checkWidget();
                                  -	
                                  -	if (offset < 0 || offset > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	return logicalContent.getLineAtOffset(offset);
                                  -}
                                  -/**
                                  - * Returns the line delimiter used for entering new lines by key down
                                  - * or paste operation.
                                  - * <p>
                                  - *
                                  - * @return line delimiter used for entering new lines by key down
                                  - * or paste operation.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getLineDelimiter() {
                                  -	checkWidget();
                                  -	return content.getLineDelimiter();
                                  -}
                                  -/**
                                  - * Returns a StyledTextEvent that can be used to request data such 
                                  - * as styles and background color for a line.
                                  - * The specified line may be a visual (wrapped) line if in word 
                                  - * wrap mode. The returned object will always be for a logical 
                                  - * (unwrapped) line.
                                  - * <p>
                                  - *
                                  - * @param lineOffset offset of the line. This may be the offset of
                                  - * 	a visual line if the widget is in word wrap mode.
                                  - * @param line line text. This may be the text of a visualline if 
                                  - * 	the widget is in word wrap mode.
                                  - * @return StyledTextEvent that can be used to request line data 
                                  - * 	for the given line.
                                  - */
                                  -StyledTextEvent sendLineEvent(int eventType, int lineOffset, String line) {
                                  -	StyledTextEvent event = null;
                                  -	
                                  -	if (isListening(eventType)) {
                                  -		event = new StyledTextEvent(logicalContent);		
                                  -		if (wordWrap) {
                                  -		    // if word wrap is on, the line offset and text may be visual (wrapped)
                                  -		    int lineIndex = logicalContent.getLineAtOffset(lineOffset);
                                  -		    
                                  -		    event.detail = logicalContent.getOffsetAtLine(lineIndex);
                                  -			event.text = logicalContent.getLine(lineIndex);
                                  -		}
                                  -		else {
                                  -			event.detail = lineOffset;
                                  -			event.text = line;
                                  -		}
                                  -		notifyListeners(eventType, event);
                                  -	}
                                  -	return event;	
                                  -}
                                  -/**
                                  - * Returns the line height.
                                  - * <p>
                                  - *
                                  - * @return line height in pixel.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getLineHeight() {
                                  -	checkWidget();
                                  -	return lineHeight;
                                  -}
                                  -/**
                                  - * Returns a LineCache implementation. Depending on whether or not
                                  - * word wrap is on this may be a line wrapping or line width 
                                  - * calculating implementaiton.
                                  - * <p>
                                  - * 
                                  - * @param content StyledTextContent to create the LineCache on.
                                  - * @return a LineCache implementation
                                  - */
                                  -LineCache getLineCache(StyledTextContent content) {
                                  -	LineCache lineCache;
                                  -    
                                  -	if (wordWrap) {
                                  -		lineCache = new WordWrapCache(this, (WrappedContent) content);
                                  -	}
                                  -	else {
                                  -		lineCache = new ContentWidthCache(this, content);
                                  -	}
                                  -	return lineCache;
                                  -}
                                  -/**
                                  - * Returns the line style data for the given line or null if there is 
                                  - * none. If there is a LineStyleListener but it does not set any styles, 
                                  - * the StyledTextEvent.styles field will be initialized to an empty 
                                  - * array.
                                  - * <p>
                                  - * 
                                  - * @param lineOffset offset of the line start relative to the start of 
                                  - * 	the content.
                                  - * @param line line to get line styles for
                                  - * @return line style data for the given line. Styles may start before 
                                  - * 	line start and end after line end
                                  - */
                                  -StyledTextEvent getLineStyleData(int lineOffset, String line) {
                                  -	return sendLineEvent(LineGetStyle, lineOffset, line);
                                  -}
                                  -/**
                                  - * Returns the x, y location of the upper left corner of the character 
                                  - * bounding box at the specified offset in the text. The point is 
                                  - * relative to the upper left corner of the widget client area.
                                  - * <p>
                                  - *
                                  - * @param offset offset relative to the start of the content. 
                                  - * 	0 <= offset <= getCharCount()
                                  - * @return x, y location of the upper left corner of the character 
                                  - * 	bounding box at the specified offset in the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public Point getLocationAtOffset(int offset) {
                                  -	checkWidget();
                                  -	if (offset < 0 || offset > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	String lineContent = content.getLine(line);
                                  -	int x = getXAtOffset(lineContent, line, offset - lineOffset);
                                  -	int y = line * lineHeight - verticalScrollOffset;
                                  -	
                                  -	return new Point(x, y);
                                  -}
                                  -/**
                                  - * Returns the character offset of the first character of the given line.
                                  - * <p>
                                  - *
                                  - * @param lineIndex index of the line, 0 based relative to the first 
                                  - * 	line in the content. 0 <= lineIndex < getLineCount(), except
                                  - * 	lineIndex may always be 0
                                  - * @return offset offset of the first character of the line, relative to
                                  - * 	the beginning of the document. The first character of the document is
                                  - *	at offset 0.  
                                  - *  When there are not any lines, getOffsetAtLine(0) is a valid call that 
                                  - * 	answers 0.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public int getOffsetAtLine(int lineIndex) {
                                  -	checkWidget();
                                  -	
                                  -	if (lineIndex < 0 || 
                                  -		(lineIndex > 0 && lineIndex >= logicalContent.getLineCount())) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	return logicalContent.getOffsetAtLine(lineIndex);
                                  -}
                                  -/**
                                  - * Returns the offset of the character at the given location relative 
                                  - * to the first character in the document.
                                  - * The return value reflects the character offset that the caret will
                                  - * be placed at if a mouse click occurred at the specified location.
                                  - * If the x coordinate of the location is beyond the center of a character
                                  - * the returned offset will be behind the character.
                                  - * <p>
                                  - *
                                  - * @param point the origin of character bounding box relative to 
                                  - * 	the origin of the widget client area.
                                  - * @return offset of the character at the given location relative 
                                  - * 	to the first character in the document.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_NULL_ARGUMENT when point is null</li>
                                  - *   <li>ERROR_INVALID_ARGUMENT when there is no character at the specified location</li>
                                  - * </ul>
                                  - */
                                  -public int getOffsetAtLocation(Point point) {
                                  -	checkWidget();
                                  -	TextLayout layout;
                                  -	int line;
                                  -	int lineOffset;
                                  -	int offsetInLine;
                                  -	String lineText;
                                  -	
                                  -	if (point == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	// is y above first line or is x before first column?
                                  -	if (point.y + verticalScrollOffset < 0 || point.x + horizontalScrollOffset < 0) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}	
                                  -	line = (getTopPixel() + point.y) / lineHeight;	
                                  -	// does the referenced line exist?
                                  -	if (line >= content.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}	
                                  -	lineText = content.getLine(line);
                                  -	lineOffset = content.getOffsetAtLine(line);	
                                  -	
                                  -	int x = point.x - leftMargin + horizontalScrollOffset;
                                  -	layout = renderer.getTextLayout(lineText, lineOffset);
                                  -	Rectangle rect = layout.getLineBounds(0);
                                  -	if (x > rect.x + rect.width) {
                                  -		renderer.disposeTextLayout(layout);
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	int[] trailing = new int[1];
                                  -	offsetInLine = layout.getOffset(x, 0, trailing);
                                  -	if (offsetInLine != lineText.length() - 1) {
                                  -		offsetInLine = Math.min(lineText.length(), offsetInLine + trailing[0]);		
                                  -	}
                                  -	renderer.disposeTextLayout(layout);
                                  -	return lineOffset + offsetInLine;
                                  -}
                                  -/**
                                  - * Returns the offset at the specified x location in the specified line.
                                  - * <p>
                                  - *
                                  - * @param x	x location of the mouse location
                                  - * @param line	line the mouse location is in
                                  - * @return the offset at the specified x location in the specified line,
                                  - * 	relative to the beginning of the document
                                  - */
                                  -int getOffsetAtMouseLocation(int x, int line) {
                                  -	String lineText = content.getLine(line);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	return getOffsetAtX(lineText, lineOffset, x) + lineOffset;
                                  -}
                                  -/**
                                  - * Return the orientation of the receiver.
                                  - *
                                  - * @return the orientation style
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 2.1.2
                                  - */
                                  -public int getOrientation () {
                                  -	checkWidget();
                                  -	return isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -}
                                  -/** 
                                  - * Returns the index of the last partially visible line.
                                  - *
                                  - * @return index of the last partially visible line.
                                  - */
                                  -int getPartialBottomIndex() {
                                  -	int partialLineCount = Compatibility.ceil(getClientArea().height, lineHeight);
                                  -	return Math.min(content.getLineCount(), topIndex + partialLineCount) - 1;
                                  -}
                                  -/**
                                  - * Returns the content in the specified range using the platform line 
                                  - * delimiter to separate lines.
                                  - * <p>
                                  - *
                                  - * @param writer the TextWriter to write line text into
                                  - * @return the content in the specified range using the platform line 
                                  - * 	delimiter to separate lines as written by the specified TextWriter.
                                  - */
                                  -String getPlatformDelimitedText(TextWriter writer) {
                                  -	int end = writer.getStart() + writer.getCharCount();
                                  -	int startLine = logicalContent.getLineAtOffset(writer.getStart());
                                  -	int endLine = logicalContent.getLineAtOffset(end);
                                  -	String endLineText = logicalContent.getLine(endLine);
                                  -	int endLineOffset = logicalContent.getOffsetAtLine(endLine);
                                  -	
                                  -	for (int i = startLine; i <= endLine; i++) {
                                  -		writer.writeLine(logicalContent.getLine(i), logicalContent.getOffsetAtLine(i));
                                  -		if (i < endLine) {
                                  -			writer.writeLineDelimiter(PlatformLineDelimiter);
                                  -		}
                                  -	}
                                  -	if (end > endLineOffset + endLineText.length()) {
                                  -		writer.writeLineDelimiter(PlatformLineDelimiter);
                                  -	}
                                  -	writer.close();
                                  -	return writer.toString();
                                  -}
                                  -/**
                                  - * Returns the selection.
                                  - * <p>
                                  - * Text selections are specified in terms of caret positions.  In a text
                                  - * widget that contains N characters, there are N+1 caret positions, 
                                  - * ranging from 0..N
                                  - * <p>
                                  - *
                                  - * @return start and end of the selection, x is the offset of the first 
                                  - * 	selected character, y is the offset after the last selected character.
                                  - *  The selection values returned are visual (i.e., x will always always be   
                                  - *  <= y).  To determine if a selection is right-to-left (RtoL) vs. left-to-right 
                                  - *  (LtoR), compare the caretOffset to the start and end of the selection 
                                  - *  (e.g., caretOffset == start of selection implies that the selection is RtoL).
                                  - * @see #getSelectionRange
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public Point getSelection() {
                                  -	checkWidget();
                                  -	return new Point(selection.x, selection.y);
                                  -}
                                  -/**
                                  - * Returns the selection.
                                  - * <p>
                                  - *
                                  - * @return start and length of the selection, x is the offset of the 
                                  - * 	first selected character, relative to the first character of the 
                                  - * 	widget content. y is the length of the selection. 
                                  - *  The selection values returned are visual (i.e., length will always always be   
                                  - *  positive).  To determine if a selection is right-to-left (RtoL) vs. left-to-right 
                                  - *  (LtoR), compare the caretOffset to the start and end of the selection 
                                  - *  (e.g., caretOffset == start of selection implies that the selection is RtoL).
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public Point getSelectionRange() {
                                  -	checkWidget();
                                  -	return new Point(selection.x, selection.y - selection.x);
                                  -}
                                  -/**
                                  - * Returns the receiver's selection background color.
                                  - *
                                  - * @return the selection background color
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Color getSelectionBackground() {
                                  -	checkWidget();
                                  -	if (selectionBackground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
                                  -	}
                                  -	return selectionBackground;
                                  -}
                                  -/**
                                  - * Gets the number of selected characters.
                                  - * <p>
                                  - *
                                  - * @return the number of selected characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getSelectionCount() {
                                  -	checkWidget();
                                  -	return getSelectionRange().y;
                                  -}
                                  -/**
                                  - * Returns the receiver's selection foreground color.
                                  - *
                                  - * @return the selection foreground color
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Color getSelectionForeground() {
                                  -	checkWidget();
                                  -	if (selectionForeground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT);
                                  -	}
                                  -	return selectionForeground;
                                  -}
                                  -/**
                                  - * Returns the selected text.
                                  - * <p>
                                  - *
                                  - * @return selected text, or an empty String if there is no selection.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getSelectionText() {
                                  -	checkWidget();
                                  -	return content.getTextRange(selection.x, selection.y - selection.x);
                                  -}
                                  -
                                  -public int getStyle() {
                                  -	int style = super.getStyle();
                                  -	style &= ~(SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT | SWT.MIRRORED);
                                  -	if (isMirrored()) {
                                  -		style |= SWT.RIGHT_TO_LEFT | SWT.MIRRORED;
                                  -	} else {
                                  -		style |= SWT.LEFT_TO_RIGHT;
                                  -	}
                                  -	return style;
                                  -}
                                  -
                                  -/**
                                  - * Returns the text segments that should be treated as if they 
                                  - * had a different direction than the surrounding text.
                                  - * <p>
                                  - *
                                  - * @param lineOffset offset of the first character in the line. 
                                  - * 	0 based from the beginning of the document.
                                  - * @param line text of the line to specify bidi segments for
                                  - * @return text segments that should be treated as if they had a
                                  - * 	different direction than the surrounding text. Only the start 
                                  - * 	index of a segment is specified, relative to the start of the 
                                  - * 	line. Always starts with 0 and ends with the line length. 
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the segment indices returned 
                                  - * 		by the listener do not start with 0, are not in ascending order,
                                  - * 		exceed the line length or have duplicates</li>
                                  - * </ul>
                                  - */
                                  -int [] getBidiSegments(int lineOffset, String line) {
                                  -	if (!isListening(LineGetSegments)) {
                                  -		return getBidiSegmentsCompatibility(line, lineOffset);
                                  -	}
                                  -	StyledTextEvent event = sendLineEvent(LineGetSegments, lineOffset, line);
                                  -	int lineLength = line.length();
                                  -	int[] segments;
                                  -	if (event == null || event.segments == null || event.segments.length == 0) {
                                  -		segments = new int[] {0, lineLength};
                                  -	}
                                  -	else {
                                  -		int segmentCount = event.segments.length;
                                  -		
                                  -		// test segment index consistency
                                  -		if (event.segments[0] != 0) {
                                  -			SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -		} 	
                                  -		for (int i = 1; i < segmentCount; i++) {
                                  -			if (event.segments[i] <= event.segments[i - 1] || event.segments[i] > lineLength) {
                                  -				SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -			} 	
                                  -		}
                                  -		// ensure that last segment index is line end offset
                                  -		if (event.segments[segmentCount - 1] != lineLength) {
                                  -			segments = new int[segmentCount + 1];
                                  -			System.arraycopy(event.segments, 0, segments, 0, segmentCount);
                                  -			segments[segmentCount] = lineLength;
                                  -		}
                                  -		else {
                                  -			segments = event.segments;
                                  -		}
                                  -	}
                                  -	return segments;
                                  -}
                                  -/**
                                  - * @see #getBidiSegments
                                  - * Supports deprecated setBidiColoring API. Remove when API is removed.
                                  - */
                                  -int [] getBidiSegmentsCompatibility(String line, int lineOffset) {
                                  -	StyledTextEvent event;
                                  -	StyleRange [] styles = new StyleRange [0];
                                  -	int lineLength = line.length();
                                  -	if (!bidiColoring) {
                                  -		return new int[] {0, lineLength};
                                  -	}
                                  -	event = renderer.getLineStyleData(lineOffset, line);
                                  -	if (event != null) {
                                  -		styles = event.styles;
                                  -	}
                                  -	if (styles.length == 0) {
                                  -		return new int[] {0, lineLength};
                                  -	}
                                  -	int k=0, count = 1;
                                  -	while (k < styles.length && styles[k].start == 0 && styles[k].length == lineLength) {
                                  -		k++;
                                  -	}
                                  -	int[] offsets = new int[(styles.length - k) * 2 + 2];
                                  -	for (int i = k; i < styles.length; i++) {
                                  -		StyleRange style = styles[i];
                                  -		int styleLineStart = Math.max(style.start - lineOffset, 0);
                                  -		int styleLineEnd = Math.max(style.start + style.length - lineOffset, styleLineStart);
                                  -		styleLineEnd = Math.min (styleLineEnd, line.length ());
                                  -		if (i > 0 && count > 1 &&
                                  -			((styleLineStart >= offsets[count-2] && styleLineStart <= offsets[count-1]) ||
                                  -			 (styleLineEnd >= offsets[count-2] && styleLineEnd <= offsets[count-1])) &&
                                  -			 style.similarTo(styles[i-1])) {
                                  -			offsets[count-2] = Math.min(offsets[count-2], styleLineStart);
                                  -			offsets[count-1] = Math.max(offsets[count-1], styleLineEnd);
                                  -		} else {
                                  -			if (styleLineStart > offsets[count - 1]) {
                                  -				offsets[count] = styleLineStart;
                                  -				count++;
                                  -			}
                                  -			offsets[count] = styleLineEnd;
                                  -			count++;
                                  -		}
                                  -	}
                                  -	// add offset for last non-colored segment in line, if any
                                  -	if (lineLength > offsets[count-1]) {
                                  -		offsets [count] = lineLength;
                                  -		count++;
                                  -	}		
                                  -	if (count == offsets.length) {
                                  -		return offsets;
                                  -	}
                                  -	int [] result = new int [count];
                                  -	System.arraycopy (offsets, 0, result, 0, count);
                                  -	return result;
                                  -}
                                  -/**
                                  - * Returns the style range at the given offset.
                                  - * Returns null if a LineStyleListener has been set or if a style is not set
                                  - * for the offset. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * <p>
                                  - *
                                  - * @param offset the offset to return the style for. 
                                  - * 	0 <= offset < getCharCount() must be true.
                                  - * @return a StyleRange with start == offset and length == 1, indicating
                                  - * 	the style at the given offset. null if a LineStyleListener has been set 
                                  - * 	or if a style is not set for the given offset.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when the offset is invalid</li>
                                  - * </ul>
                                  - */
                                  -public StyleRange getStyleRangeAtOffset(int offset) {
                                  -	checkWidget();
                                  -	if (offset < 0 || offset >= getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	} 	
                                  -	if (!userLineStyle) {
                                  -		return defaultLineStyler.getStyleRangeAtOffset(offset);
                                  -	} 
                                  -	return null;
                                  -}
                                  -/**
                                  - * Returns the styles.
                                  - * Returns an empty array if a LineStyleListener has been set. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * <p>
                                  - *
                                  - * @return the styles or an empty array if a LineStyleListener has been set.
                                  -  *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public StyleRange [] getStyleRanges() {
                                  -	checkWidget();
                                  -	StyleRange styles[];
                                  -	
                                  -	if (!userLineStyle) {
                                  -		styles = defaultLineStyler.getStyleRanges();
                                  -	}
                                  -	else {
                                  -		styles = new StyleRange[0];
                                  -	}
                                  -	return styles;
                                  -}
                                  -/**
                                  - * Returns the styles for the given text range.
                                  - * Returns an empty array if a LineStyleListener has been set. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * 
                                  - * @param start the start offset of the style ranges to return
                                  - * @param length the number of style ranges to return
                                  - *
                                  - * @return the styles or an empty array if a LineStyleListener has 
                                  - *  been set.  The returned styles will reflect the given range.  The first 
                                  - *  returned <code>StyleRange</code> will have a starting offset >= start 
                                  - *  and the last returned <code>StyleRange</code> will have an ending 
                                  - *  offset <= start + length - 1
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - * 
                                  - * @since 3.0
                                  - */
                                  -public StyleRange [] getStyleRanges(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	StyleRange styles[];
                                  -	
                                  -	if (!userLineStyle) {
                                  -		styles = defaultLineStyler.getStyleRangesFor(start, length);
                                  -		if (styles == null) return new StyleRange[0];
                                  -		// adjust the first and last style to reflect the specified 
                                  -		// range, clone these styles since the returned styles are the
                                  -		// styles cached by the widget
                                  -		if (styles.length == 1) {
                                  -			StyleRange style = styles[0];
                                  -			if (style.start < start) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = newStyle.length - (start - newStyle.start);
                                  -				newStyle.start = start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -			if (style.start + style.length > (start + length)) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = start + length - newStyle.start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -		} else if (styles.length > 1) {
                                  -			StyleRange style = styles[0];
                                  -			if (style.start < start) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = newStyle.length - (start - newStyle.start);
                                  -				newStyle.start = start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -			style = styles[styles.length - 1];
                                  -			if (style.start + style.length > (start + length)) {
                                  -				StyleRange newStyle = (StyleRange)styles[styles.length - 1].clone();
                                  -				newStyle.length = start + length - newStyle.start;
                                  -				styles[styles.length - 1] = newStyle;
                                  -			}
                                  -		}
                                  -	}
                                  -	else {
                                  -		styles = new StyleRange[0];
                                  -	}
                                  -	return styles;
                                  -}
                                  -/**
                                  - * Returns the tab width measured in characters.
                                  - *
                                  - * @return tab width measured in characters
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTabs() {
                                  -	checkWidget();
                                  -	return tabLength;
                                  -}
                                  -/**
                                  - * Returns a copy of the widget content.
                                  - * <p>
                                  - *
                                  - * @return copy of the widget content
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getText() {
                                  -	checkWidget();
                                  -	return content.getTextRange(0, getCharCount());
                                  -}	
                                  -/**
                                  - * Returns the widget content between the two offsets.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character in the returned String
                                  - * @param end offset of the last character in the returned String 
                                  - * @return widget content starting at start and ending at end
                                  - * @see #getTextRange(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public String getText(int start, int end) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	
                                  -	if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	return content.getTextRange(start, end - start + 1);
                                  -}
                                  -/**
                                  - * Returns the smallest bounding rectangle that includes the characters between two offsets.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character included in the bounding box
                                  - * @param end offset of the last character included in the bounding box 
                                  - * @return bounding box of the text between start and end
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - * @since 3.1
                                  - */
                                  -public Rectangle getTextBounds(int start, int end) {
                                  -	checkWidget();	
                                  -	int contentLength = getCharCount();	
                                  -	if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}
                                  -	int lineStart = content.getLineAtOffset(start);
                                  -	int lineEnd = content.getLineAtOffset(end);
                                  -	Rectangle rect;
                                  -	int y = lineStart * lineHeight;
                                  -	int height = (lineEnd + 1) * lineHeight - y;
                                  -	int left = 0x7fffffff, right = 0;
                                  -	for (int i = lineStart; i <= lineEnd; i++) {
                                  -		int lineOffset = content.getOffsetAtLine(i);
                                  -		String line = content.getLine(i);
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		if (i == lineStart && i == lineEnd) {
                                  -			rect = layout.getBounds(start - lineOffset, end - lineOffset);
                                  -		} else if (i == lineStart) {
                                  -			rect = layout.getBounds(start - lineOffset, line.length());
                                  -		}	else	if (i == lineEnd) {
                                  -			rect = layout.getBounds(0, end - lineOffset);
                                  -		} else {
                                  -			rect = layout.getLineBounds(0);
                                  -		}
                                  -		left = Math.min (left, rect.x);
                                  -		right = Math.max (right, rect.x + rect.width);
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	rect = new Rectangle (left, y, right-left, height);
                                  -	rect.x += leftMargin - horizontalScrollOffset;
                                  -	rect.y -= verticalScrollOffset;
                                  -	return rect;
                                  -}
                                  -/**
                                  - * Returns the widget content starting at start for length characters.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character in the returned String
                                  - * @param length number of characters to return 
                                  - * @return widget content starting at start and extending length characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or length are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public String getTextRange(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	return content.getTextRange(start, length);
                                  -}
                                  -/**
                                  - * Returns the maximum number of characters that the receiver is capable of holding.
                                  - * 
                                  - * @return the text limit
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTextLimit() {
                                  -	checkWidget();
                                  -	
                                  -	return textLimit;
                                  -}
                                  -/**
                                  - * Gets the top index.  The top index is the index of the fully visible line that
                                  - * is currently at the top of the widget or the topmost partially visible line if 
                                  - * no line is fully visible. 
                                  - * The top index changes when the widget is scrolled. Indexing is zero based.
                                  - * <p>
                                  - *
                                  - * @return the index of the top line
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTopIndex() {
                                  -	checkWidget();
                                  -	int logicalTopIndex = topIndex;
                                  -	
                                  -	if (wordWrap) {
                                  -		int visualLineOffset = content.getOffsetAtLine(topIndex);
                                  -		logicalTopIndex = logicalContent.getLineAtOffset(visualLineOffset);
                                  -	}
                                  -	return logicalTopIndex;
                                  -}
                                  -/**
                                  - * Gets the top pixel.  The top pixel is the pixel position of the line that is 
                                  - * currently at the top of the widget.The text widget can be scrolled by pixels 
                                  - * by dragging the scroll thumb so that a partial line may be displayed at the top 
                                  - * the widget.  The top pixel changes when the widget is scrolled.  The top pixel 
                                  - * does not include the widget trimming.
                                  - * <p>
                                  - *
                                  - * @return pixel position of the top line
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTopPixel() {
                                  -	checkWidget();
                                  -	return verticalScrollOffset;
                                  -}
                                  -/** 
                                  - * Returns the vertical scroll increment.
                                  - * <p>
                                  - *
                                  - * @return vertical scroll increment.
                                  - */
                                  -int getVerticalIncrement() {
                                  -	return lineHeight;
                                  -}
                                  -int getCaretDirection() {
                                  -	if (!isBidiCaret()) return SWT.DEFAULT;
                                  -	if (!updateCaretDirection && caretDirection != SWT.NULL) return caretDirection;
                                  -	updateCaretDirection = false;
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	String line = content.getLine(caretLine);
                                  -	int offset = caretOffset - lineOffset;
                                  -	int lineLength = line.length();
                                  -	if (lineLength == 0) return isMirrored() ? SWT.RIGHT : SWT.LEFT;
                                  -	if (advancing && offset > 0) offset--;
                                  -	if (offset == lineLength && offset > 0) offset--;
                                  -	while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--;
                                  -	if (offset == 0 && Character.isDigit(line.charAt(offset))) {
                                  -		return isMirrored() ? SWT.RIGHT : SWT.LEFT;
                                  -	}
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	int level = layout.getLevel(offset);
                                  -	renderer.disposeTextLayout(layout);
                                  -	return ((level & 1) != 0) ? SWT.RIGHT : SWT.LEFT;
                                  -}
                                  -/**
                                  - * Returns the index of the line the caret is on.
                                  - * When in word wrap mode and at the end of one wrapped line/ 
                                  - * beginning of the continuing wrapped line the caret offset
                                  - * is not sufficient to determine the caret line.
                                  - * 
                                  - * @return the index of the line the caret is on.
                                  - */
                                  -int getCaretLine() {
                                  -	int caretLine = content.getLineAtOffset(caretOffset);
                                  -	int leftColumnX = leftMargin;
                                  -	if (wordWrap && columnX <= leftColumnX &&
                                  -		caretLine < content.getLineCount() - 1 &&
                                  -		caretOffset == content.getOffsetAtLine(caretLine + 1)) {
                                  -		caretLine++;
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Returns the offset of the character after the word at the specified
                                  - * offset.
                                  - * <p>
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Space characters ' ' (ASCII 20) are special as they are treated as
                                  - * part of the word leading up to the space character.  Line breaks are 
                                  - * treated as one word.
                                  - * </p>
                                  - */
                                  -int getWordEnd(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -	int lineLength = lineText.length();
                                  -	
                                  -	if (offset >= getCharCount()) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset + lineLength) {
                                  -		line++;
                                  -		offset = logicalContent.getOffsetAtLine(line);
                                  -	}
                                  -	else {
                                  -		TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -		offset -= lineOffset;
                                  -		offset = layout.getNextOffset(offset, SWT.MOVEMENT_WORD);
                                  -		offset += lineOffset;
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the offset of the character after the word at the specified
                                  - * offset.
                                  - * <p>
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Spaces are ignored and do not represent a word.  Line breaks are treated 
                                  - * as one word.
                                  - * </p>
                                  - */
                                  -int getWordEndNoSpaces(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -	int lineLength = lineText.length();
                                  -	
                                  -	if (offset >= getCharCount()) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset + lineLength) {
                                  -		line++;
                                  -		offset = logicalContent.getOffsetAtLine(line);
                                  -	}
                                  -	else {
                                  -		offset -= lineOffset;
                                  -		char ch = lineText.charAt(offset);
                                  -		boolean letterOrDigit = Compatibility.isLetterOrDigit(ch);
                                  -		
                                  -		while (offset < lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) {
                                  -			offset++;
                                  -			ch = lineText.charAt(offset);
                                  -		}
                                  -		if (offset == lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) {
                                  -			offset++;
                                  -		}
                                  -		offset += lineOffset;
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the start offset of the word at the specified offset.
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <p>
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Space characters ' ' (ASCII 20) are special as they are treated as
                                  - * part of the word leading up to the space character.  Line breaks are treated 
                                  - * as one word.
                                  - * </p>
                                  - */
                                  -int getWordStart(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -
                                  -	if (offset <= 0) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset) {
                                  -		line--;
                                  -		lineText = logicalContent.getLine(line);
                                  -		offset = logicalContent.getOffsetAtLine(line) + lineText.length();
                                  -	}
                                  -	else {
                                  -		TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -		offset -= lineOffset;
                                  -		offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_WORD);
                                  -		offset += lineOffset;
                                  -		renderer.disposeTextLayout(layout); 
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns whether the widget wraps lines.
                                  - * <p>
                                  - *
                                  - * @return true if widget wraps lines, false otherwise
                                  - * @since 2.0
                                  - */
                                  -public boolean getWordWrap() {
                                  -	checkWidget();
                                  -	return wordWrap;
                                  -}
                                  -/** 
                                  - * Returns the x location of the character at the give offset in the line.
                                  - * <b>NOTE:</b> Does not return correct values for true italic fonts (vs. slanted fonts).
                                  - * <p>
                                  - *
                                  - * @return x location of the character at the given offset in the line.
                                  - */
                                  -int getXAtOffset(String line, int lineIndex, int offsetInLine) {
                                  -	int x = 0;
                                  -	int lineLength = line.length();
                                  -	if (lineIndex < content.getLineCount() - 1) {
                                  -		int endLineOffset = content.getOffsetAtLine(lineIndex + 1) - 1;
                                  -		if (lineLength < offsetInLine && offsetInLine <= endLineOffset) {
                                  -			offsetInLine = lineLength;
                                  -		}
                                  -	}
                                  -	if (lineLength != 0  && offsetInLine <= lineLength) {
                                  -		int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		if (!advancing || offsetInLine == 0) {
                                  -			x = layout.getLocation(offsetInLine, false).x;
                                  -		} else {
                                  -			x = layout.getLocation(offsetInLine - 1, true).x;
                                  -		}
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	return x + leftMargin - horizontalScrollOffset;
                                  -}
                                  -/** 
                                  - * Inserts a string.  The old selection is replaced with the new text.  
                                  - * <p>
                                  - *
                                  - * @param string the string
                                  - * @see #replaceTextRange(int,int,String)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void insert(String string) {
                                  -	checkWidget();
                                  -	if (string == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	Point sel = getSelectionRange();
                                  -	replaceTextRange(sel.x, sel.y, string);
                                  -}
                                  -/**
                                  - * Creates content change listeners and set the default content model.
                                  - */
                                  -void installDefaultContent() {
                                  -	textChangeListener = new TextChangeListener() {
                                  -		public void textChanging(TextChangingEvent event) {
                                  -			handleTextChanging(event);
                                  -		}
                                  -		public void textChanged(TextChangedEvent event) {
                                  -			handleTextChanged(event);
                                  -		}
                                  -		public void textSet(TextChangedEvent event) {
                                  -			handleTextSet(event);
                                  -		}
                                  -	};
                                  -	logicalContent = content = new DefaultContent();
                                  -	content.addTextChangeListener(textChangeListener);
                                  -}
                                  -/**
                                  - * Creates a default line style listener.
                                  - * Used to store line background colors and styles.
                                  - * Removed when the user sets a LineStyleListener.
                                  - * <p>
                                  - *
                                  - * @see #addLineStyleListener
                                  - */
                                  -void installDefaultLineStyler() {
                                  -	defaultLineStyler = new DefaultLineStyler(logicalContent);
                                  -	StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -	if (!userLineStyle) {
                                  -		addListener(LineGetStyle, typedListener);
                                  -	}
                                  -	if (!userLineBackground) {
                                  -		addListener(LineGetBackground, typedListener);
                                  -	}
                                  -}
                                  -/** 
                                  - * Adds event listeners
                                  - */
                                  -void installListeners() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	
                                  -	listener = new Listener() {
                                  -		public void handleEvent(Event event) {
                                  -			switch (event.type) {
                                  -				case SWT.Dispose: handleDispose(event); break;
                                  -				case SWT.KeyDown: handleKeyDown(event); break;
                                  -				case SWT.KeyUp: handleKeyUp(event); break;
                                  -				case SWT.MouseDown: handleMouseDown(event); break;
                                  -				case SWT.MouseUp: handleMouseUp(event); break;
                                  -				case SWT.MouseDoubleClick: handleMouseDoubleClick(event); break;
                                  -				case SWT.MouseMove: handleMouseMove(event); break;
                                  -				case SWT.Paint: handlePaint(event); break;
                                  -				case SWT.Resize: handleResize(event); break;
                                  -				case SWT.Traverse: handleTraverse(event); break;
                                  -			}
                                  -		}		
                                  -	};
                                  -	addListener(SWT.Dispose, listener);
                                  -	addListener(SWT.KeyDown, listener);
                                  -	addListener(SWT.KeyUp, listener);
                                  -	addListener(SWT.MouseDown, listener);
                                  -	addListener(SWT.MouseUp, listener);
                                  -	addListener(SWT.MouseDoubleClick, listener);
                                  -	addListener(SWT.MouseMove, listener);
                                  -	addListener(SWT.Paint, listener);
                                  -	addListener(SWT.Resize, listener);
                                  -	addListener(SWT.Traverse, listener);
                                  -	if (verticalBar != null) {
                                  -		verticalBar.addListener(SWT.Selection, new Listener() {
                                  -			public void handleEvent(Event event) {
                                  -				handleVerticalScroll(event);
                                  -			}
                                  -		});
                                  -	}
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.addListener(SWT.Selection, new Listener() {
                                  -			public void handleEvent(Event event) {
                                  -				handleHorizontalScroll(event);
                                  -			}
                                  -		});
                                  -	}
                                  -}
                                  -StyledTextContent internalGetContent() {
                                  -	return content;
                                  -}
                                  -int internalGetHorizontalPixel() {
                                  -	return horizontalScrollOffset;
                                  -}
                                  -Point internalGetSelection() {
                                  -	return selection;
                                  -}
                                  -boolean internalGetWordWrap() {
                                  -	return wordWrap;
                                  -}
                                  -/**
                                  - * Used by WordWrapCache to bypass StyledText.redraw which does
                                  - * an unwanted cache reset.
                                  - */
                                  -void internalRedraw() {
                                  -	super.redraw();
                                  -}
                                  -/** 
                                  - * Redraws the specified text range.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character to redraw
                                  - * @param length number of characters to redraw
                                  - * @param clearBackground true if the background should be cleared as 
                                  - * 	part of the redraw operation.  If true, the entire redraw range will
                                  - *  be cleared before anything is redrawn.  If the redraw range includes
                                  - *	the last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - *  The redraw operation will be faster and smoother if clearBackground is 
                                  - * 	set to false.  Whether or not the flag can be set to false depends on 
                                  - * 	the type of change that has taken place.  If font styles or background 
                                  - * 	colors for the redraw range have changed, clearBackground should be 
                                  - * 	set to true.  If only foreground colors have changed for the redraw 
                                  - * 	range, clearBackground can be set to false. 
                                  - */
                                  -void internalRedrawRange(int start, int length, boolean clearBackground) {
                                  -	int end = start + length;
                                  -	int firstLine = content.getLineAtOffset(start);
                                  -	int lastLine = content.getLineAtOffset(end);
                                  -	int offsetInFirstLine;
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	int partialTopIndex = verticalScrollOffset / lineHeight;
                                  -	// do nothing if redraw range is completely invisible	
                                  -	if (firstLine > partialBottomIndex || lastLine < partialTopIndex) {
                                  -		return;
                                  -	}
                                  -	// only redraw visible lines
                                  -	if (partialTopIndex > firstLine) {
                                  -		firstLine = partialTopIndex;
                                  -		offsetInFirstLine = 0;
                                  -	}
                                  -	else {
                                  -		offsetInFirstLine = start - content.getOffsetAtLine(firstLine);
                                  -	}
                                  -	if (partialBottomIndex + 1 < lastLine) {
                                  -		lastLine = partialBottomIndex + 1;	// + 1 to redraw whole bottom line, including line break
                                  -		end = content.getOffsetAtLine(lastLine);
                                  -	}
                                  -	redrawLines(firstLine, offsetInFirstLine, lastLine, end, clearBackground);
                                  -	
                                  -	// redraw entire center lines if redraw range includes more than two lines
                                  -	if (lastLine - firstLine > 1) {
                                  -		Rectangle clientArea = getClientArea();
                                  -		int redrawStopY = lastLine * lineHeight - verticalScrollOffset;		
                                  -		int redrawY = (firstLine + 1) * lineHeight - verticalScrollOffset;		
                                  -		draw(0, redrawY, clientArea.width, redrawStopY - redrawY, clearBackground);
                                  -	}
                                  -}
                                  -/**
                                  - * Returns the widget text with style information encoded using RTF format
                                  - * specification version 1.5.
                                  - *
                                  - * @return the widget text with style information encoded using RTF format
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -String getRtf(){
                                  -	checkWidget();
                                  -	RTFWriter rtfWriter = new RTFWriter(0, getCharCount());
                                  -	return getPlatformDelimitedText(rtfWriter);
                                  -}
                                  -/** 
                                  - * Frees resources.
                                  - */
                                  -void handleDispose(Event event) {
                                  -	removeListener(SWT.Dispose, listener);
                                  -	notifyListeners(SWT.Dispose, event);
                                  -	event.type = SWT.None;
                                  -
                                  -	clipboard.dispose();
                                  -	ibeamCursor.dispose();
                                  -	if (renderer != null) {
                                  -		renderer.dispose();
                                  -		renderer = null;
                                  -	}
                                  -	if (content != null) {
                                  -		content.removeTextChangeListener(textChangeListener);
                                  -		content = null;
                                  -	}
                                  -	if (defaultCaret != null) {
                                  -		defaultCaret.dispose();
                                  -		defaultCaret = null;
                                  -	}
                                  -	if (leftCaretBitmap != null) {
                                  -		leftCaretBitmap.dispose();
                                  -		leftCaretBitmap = null;
                                  -	}
                                  -	if (rightCaretBitmap != null) {
                                  -		rightCaretBitmap.dispose();
                                  -		rightCaretBitmap = null;
                                  -	}
                                  -	if (defaultLineStyler != null) {
                                  -		defaultLineStyler.release();
                                  -		defaultLineStyler = null;
                                  -	}
                                  -	if (isBidiCaret()) {
                                  -		BidiUtil.removeLanguageListener(handle);
                                  -	}
                                  -	selectionBackground = null;
                                  -	selectionForeground = null;
                                  -	logicalContent = null;
                                  -	textChangeListener = null;
                                  -	lineCache = null;
                                  -	ibeamCursor = null;
                                  -	selection = null;
                                  -	doubleClickSelection = null;
                                  -	keyActionMap = null;
                                  -	background = null;
                                  -	foreground = null;
                                  -	clipboard = null;
                                  -}
                                  -/** 
                                  - * Scrolls the widget horizontally.
                                  - */
                                  -void handleHorizontalScroll(Event event) {
                                  -	int scrollPixel = getHorizontalBar().getSelection() - horizontalScrollOffset;
                                  -	scrollHorizontal(scrollPixel);
                                  -}
                                  -/**
                                  - * If an action has been registered for the key stroke execute the action.
                                  - * Otherwise, if a character has been entered treat it as new content.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKey(Event event) {
                                  -	int action;
                                  -	advancing = true;
                                  -	if (event.keyCode != 0) {
                                  -		// special key pressed (e.g., F1)
                                  -		action = getKeyBinding(event.keyCode | event.stateMask);
                                  -	}
                                  -	else {
                                  -		// character key pressed
                                  -		action = getKeyBinding(event.character | event.stateMask);
                                  -		if (action == SWT.NULL) { 
                                  -			// see if we have a control character
                                  -			if ((event.stateMask & SWT.CTRL) != 0 && (event.character >= 0) && event.character <= 31) {
                                  -				// get the character from the CTRL+char sequence, the control
                                  -				// key subtracts 64 from the value of the key that it modifies
                                  -				int c = event.character + 64;
                                  -				action = getKeyBinding(c | event.stateMask);
                                  -			}
                                  -		}
                                  -	}
                                  -	if (action == SWT.NULL) {
                                  -		boolean ignore = false;
                                  -		
                                  -		if (IS_CARBON) {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Do not  
                                  -			// ignore COMMAND+ALT combinations since that key sequence
                                  -			// produces characters on the mac.
                                  -			ignore = (event.stateMask ^ SWT.COMMAND) == 0 ||
                                  -					(event.stateMask ^ (SWT.COMMAND | SWT.SHIFT)) == 0;
                                  -		} else if (IS_MOTIF) {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Do not  
                                  -			// ignore ALT combinations since this key sequence
                                  -			// produces characters on motif.
                                  -			ignore = (event.stateMask ^ SWT.CTRL) == 0 ||
                                  -					(event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0;
                                  -		} else {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Don't  
                                  -			// ignore CTRL+ALT combinations since that is the Alt Gr 
                                  -			// key on some keyboards.  See bug 20953. 
                                  -			ignore = (event.stateMask ^ SWT.ALT) == 0 || 
                                  -					(event.stateMask ^ SWT.CTRL) == 0 ||
                                  -					(event.stateMask ^ (SWT.ALT | SWT.SHIFT)) == 0 ||
                                  -					(event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0;
                                  -		}
                                  -		// -ignore anything below SPACE except for line delimiter keys and tab.
                                  -		// -ignore DEL 
                                  -		if (!ignore && event.character > 31 && event.character != SWT.DEL || 
                                  -		    event.character == SWT.CR || event.character == SWT.LF || 
                                  -		    event.character == TAB) {
                                  -			doContent(event.character);
                                  -		}
                                  -	}
                                  -	else {
                                  -		invokeAction(action);		
                                  -	}
                                  -}
                                  -/**
                                  - * If a VerifyKey listener exists, verify that the key that was entered
                                  - * should be processed.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKeyDown(Event event) {
                                  -	if (clipboardSelection == null) {
                                  -		clipboardSelection = new Point(selection.x, selection.y);
                                  -	}
                                  -	
                                  -	Event verifyEvent = new Event();
                                  -	verifyEvent.character = event.character;
                                  -	verifyEvent.keyCode = event.keyCode;
                                  -	verifyEvent.stateMask = event.stateMask;
                                  -	verifyEvent.doit = true;
                                  -	notifyListeners(VerifyKey, verifyEvent);
                                  -	if (verifyEvent.doit) {
                                  -		handleKey(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Update the Selection Clipboard.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKeyUp(Event event) {
                                  -	if (clipboardSelection != null) {
                                  -		if (clipboardSelection.x != selection.x || clipboardSelection.y != selection.y) {
                                  -			try {
                                  -				if (selection.y - selection.x > 0) {
                                  -					setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD);
                                  -				}
                                  -			}
                                  -			catch (SWTError error) {
                                  -				// Copy to clipboard failed. This happens when another application 
                                  -				// is accessing the clipboard while we copy. Ignore the error.
                                  -				// Fixes 1GDQAVN
                                  -				// Rethrow all other errors. Fixes bug 17578.
                                  -				if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -					throw error;
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -	clipboardSelection = null;
                                  -}
                                  -/**
                                  - * Updates the caret location and selection if mouse button 1 has been 
                                  - * pressed.
                                  - */
                                  -void handleMouseDoubleClick(Event event) {
                                  -	if (event.button != 1 || !doubleClickEnabled) {
                                  -		return;
                                  -	}
                                  -	event.y -= topMargin;
                                  -	mouseDoubleClick = true;
                                  -	caretOffset = getWordStart(caretOffset);
                                  -	resetSelection();
                                  -	caretOffset = getWordEndNoSpaces(caretOffset);
                                  -	showCaret();
                                  -	doMouseSelection();
                                  -	doubleClickSelection = new Point(selection.x, selection.y);
                                  -}
                                  -/** 
                                  - * Updates the caret location and selection if mouse button 1 has been 
                                  - * pressed.
                                  - */
                                  -void handleMouseDown(Event event) {
                                  -	mouseDown = true;
                                  -	mouseDoubleClick = false;
                                  -	if (event.button == 2) {
                                  -		String text = (String)getClipboardContent(DND.SELECTION_CLIPBOARD);
                                  -		if (text != null && text.length() > 0) {
                                  -			// position cursor
                                  -			int x = event.x;
                                  -			int y = event.y - topMargin;
                                  -			doMouseLocationChange(x, y, false);
                                  -			// insert text
                                  -			Event e = new Event();
                                  -			e.start = selection.x;
                                  -			e.end = selection.y;
                                  -			e.text = getModelDelimitedText(text);
                                  -			sendKeyEvent(e);
                                  -		}
                                  -	}
                                  -	if ((event.button != 1) || (IS_CARBON && (event.stateMask & SWT.MOD4) != 0)) {
                                  -		return;	
                                  -	}
                                  -	boolean select = (event.stateMask & SWT.MOD2) != 0;	
                                  -	event.y -= topMargin;
                                  -	doMouseLocationChange(event.x, event.y, select);
                                  -}
                                  -/** 
                                  - * Updates the caret location and selection if mouse button 1 is pressed 
                                  - * during the mouse move.
                                  - */
                                  -void handleMouseMove(Event event) {
                                  -	if (!mouseDown) return;
                                  -	if ((event.stateMask & SWT.BUTTON1) == 0) {
                                  -		return;
                                  -	}
                                  -	event.y -= topMargin;
                                  -	doMouseLocationChange(event.x, event.y, true);
                                  -	update();
                                  -	doAutoScroll(event);
                                  -}
                                  -/** 
                                  - * Autoscrolling ends when the mouse button is released.
                                  - */
                                  -void handleMouseUp(Event event) {
                                  -	mouseDown = false;
                                  -	mouseDoubleClick = false;
                                  -	event.y -= topMargin;
                                  -	endAutoScroll();
                                  -	if (event.button == 1) {
                                  -		try {
                                  -			if (selection.y - selection.x > 0) {
                                  -				setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD);
                                  -			}
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Renders the invalidated area specified in the paint event.
                                  - * <p>
                                  - *
                                  - * @param event paint event
                                  - */
                                  -void handlePaint(Event event) {
                                  -	// Check if there is work to do
                                  -	if (event.height == 0) return;
                                  -	int startLine = Math.max(0, (event.y - topMargin + verticalScrollOffset) / lineHeight);
                                  -	int paintYFromTopLine = (startLine - topIndex) * lineHeight;
                                  -	int topLineOffset = topIndex * lineHeight - verticalScrollOffset;
                                  -	int startY = paintYFromTopLine + topLineOffset + topMargin;	// adjust y position for pixel based scrolling and top margin
                                  -	int renderHeight = event.y + event.height - startY;
                                  -	performPaint(event.gc, startLine, startY, renderHeight);
                                  -}	
                                  -/**
                                  - * Recalculates the scroll bars. Rewraps all lines when in word 
                                  - * wrap mode.
                                  - * <p>
                                  - *
                                  - * @param event resize event
                                  - */
                                  -void handleResize(Event event) {
                                  -	int oldHeight = clientAreaHeight;
                                  -	int oldWidth = clientAreaWidth;
                                  -	
                                  -	Rectangle clientArea = getClientArea();
                                  -	clientAreaHeight = clientArea.height;
                                  -	clientAreaWidth = clientArea.width;
                                  -	/* Redraw the old or new right/bottom margin if needed */
                                  -	if (oldWidth != clientAreaWidth) {
                                  -		if (rightMargin > 0) {
                                  -			int x = (oldWidth < clientAreaWidth ? oldWidth : clientAreaWidth)- rightMargin; 
                                  -			redraw(x, 0, rightMargin, oldHeight, false);
                                  -		}
                                  -	}
                                  -	if (oldHeight != clientAreaHeight) {
                                  -		if (bottomMargin > 0) {
                                  -			int y = (oldHeight < clientAreaHeight ? oldHeight : clientAreaHeight)- bottomMargin; 
                                  -			redraw(0, y, oldWidth, bottomMargin, false);
                                  -		}
                                  -	}
                                  -	if (wordWrap) {
                                  -		if (oldWidth != clientAreaWidth) {	
                                  -			wordWrapResize(oldWidth);
                                  -		}
                                  -	}
                                  -	else
                                  -	if (clientAreaHeight > oldHeight) {
                                  -		int lineCount = content.getLineCount();
                                  -		int oldBottomIndex = topIndex + oldHeight / lineHeight;
                                  -		int newItemCount = Compatibility.ceil(clientAreaHeight - oldHeight, lineHeight);
                                  -		
                                  -		oldBottomIndex = Math.min(oldBottomIndex, lineCount);
                                  -		newItemCount = Math.min(newItemCount, lineCount - oldBottomIndex);
                                  -		lineCache.calculate(oldBottomIndex, newItemCount);
                                  -	}
                                  -	setScrollBars();
                                  -	claimBottomFreeSpace();
                                  -	claimRightFreeSpace();	
                                  -	if (oldHeight != clientAreaHeight) {
                                  -		calculateTopIndex();
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the caret position and selection and the scroll bars to reflect 
                                  - * the content change.
                                  - * <p>
                                  - */
                                  -void handleTextChanged(TextChangedEvent event) {
                                  -	lineCache.textChanged(lastTextChangeStart, 
                                  -		lastTextChangeNewLineCount, 
                                  -		lastTextChangeReplaceLineCount,
                                  -		lastTextChangeNewCharCount,
                                  -		lastTextChangeReplaceCharCount);
                                  -	setScrollBars();
                                  -	// update selection/caret location after styles have been changed.
                                  -	// otherwise any text measuring could be incorrect
                                  -	// 
                                  -	// also, this needs to be done after all scrolling. Otherwise, 
                                  -	// selection redraw would be flushed during scroll which is wrong.
                                  -	// in some cases new text would be drawn in scroll source area even 
                                  -	// though the intent is to scroll it.
                                  -	// fixes 1GB93QT
                                  -	updateSelection(
                                  -		lastTextChangeStart, 
                                  -		lastTextChangeReplaceCharCount, 
                                  -		lastTextChangeNewCharCount);
                                  -		
                                  -	if (lastTextChangeReplaceLineCount > 0) {
                                  -		// Only check for unused space when lines are deleted.
                                  -		// Fixes 1GFL4LY
                                  -		// Scroll up so that empty lines below last text line are used.
                                  -		// Fixes 1GEYJM0
                                  -		claimBottomFreeSpace();
                                  -	}
                                  -	if (lastTextChangeReplaceCharCount > 0) {
                                  -		// fixes bug 8273
                                  -		claimRightFreeSpace();
                                  -	}
                                  -	// do direct drawing if the text change is confined to a single line.
                                  -	// optimization and fixes bug 13999. see also handleTextChanging.
                                  -	if (lastTextChangeNewLineCount == 0 && lastTextChangeReplaceLineCount == 0) {
                                  -		int startLine = content.getLineAtOffset(lastTextChangeStart);
                                  -		int startY = startLine * lineHeight - verticalScrollOffset + topMargin;
                                  -
                                  -		if (DOUBLE_BUFFER) {
                                  -			GC gc = getGC();
                                  -			Caret caret = getCaret();
                                  -			boolean caretVisible = false;
                                  -			
                                  -			if (caret != null) {
                                  -				caretVisible = caret.getVisible();
                                  -				caret.setVisible(false);
                                  -			}
                                  -			performPaint(gc, startLine, startY, lineHeight);
                                  -			if (caret != null) {
                                  -				caret.setVisible(caretVisible);
                                  -			}
                                  -			gc.dispose();
                                  -		} else {
                                  -			redraw(0, startY, getClientArea().width, lineHeight, false);
                                  -			update();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the screen to reflect a pending content change.
                                  - * <p>
                                  - *
                                  - * @param event.start the start offset of the change
                                  - * @param event.newText text that is going to be inserted or empty String 
                                  - *	if no text will be inserted
                                  - * @param event.replaceCharCount length of text that is going to be replaced
                                  - * @param event.newCharCount length of text that is going to be inserted
                                  - * @param event.replaceLineCount number of lines that are going to be replaced
                                  - * @param event.newLineCount number of new lines that are going to be inserted
                                  - */
                                  -void handleTextChanging(TextChangingEvent event) {
                                  -	int firstLine;	
                                  -	int textChangeY;
                                  -	boolean isMultiLineChange = event.replaceLineCount > 0 || event.newLineCount > 0;
                                  -			
                                  -	if (event.replaceCharCount < 0) {
                                  -		event.start += event.replaceCharCount;
                                  -		event.replaceCharCount *= -1;
                                  -	}
                                  -	lastTextChangeStart = event.start;
                                  -	lastTextChangeNewLineCount = event.newLineCount;
                                  -	lastTextChangeNewCharCount = event.newCharCount;
                                  -	lastTextChangeReplaceLineCount = event.replaceLineCount;
                                  -	lastTextChangeReplaceCharCount = event.replaceCharCount;
                                  -	firstLine = content.getLineAtOffset(event.start);
                                  -	textChangeY = firstLine * lineHeight - verticalScrollOffset + topMargin;
                                  -	if (isMultiLineChange) {
                                  -		redrawMultiLineChange(textChangeY, event.newLineCount, event.replaceLineCount);
                                  -	}
                                  -	// notify default line styler about text change
                                  -	if (defaultLineStyler != null) {
                                  -		defaultLineStyler.textChanging(event);
                                  -	}
                                  -	
                                  -	// Update the caret offset if it is greater than the length of the content.
                                  -	// This is necessary since style range API may be called between the
                                  -	// handleTextChanging and handleTextChanged events and this API sets the
                                  -	// caretOffset.
                                  -	int newEndOfText = content.getCharCount() - event.replaceCharCount + event.newCharCount;
                                  -	if (caretOffset > newEndOfText) caretOffset = newEndOfText;
                                  -}
                                  -/**
                                  - * Called when the widget content is set programatically, overwriting 
                                  - * the old content. Resets the caret position, selection and scroll offsets. 
                                  - * Recalculates the content width and scroll bars. Redraws the widget.
                                  - * <p>
                                  - *
                                  - * @param event text change event. 
                                  - */
                                  -void handleTextSet(TextChangedEvent event) {
                                  -	reset();
                                  -}
                                  -/**
                                  - * Called when a traversal key is pressed.
                                  - * Allow tab next traversal to occur when the widget is in single 
                                  - * line mode or in multi line and non-editable mode . 
                                  - * When in editable multi line mode we want to prevent the tab 
                                  - * traversal and receive the tab key event instead.
                                  - * <p>
                                  - *
                                  - * @param event the event
                                  - */
                                  -void handleTraverse(Event event) {
                                  -	switch (event.detail) {
                                  -		case SWT.TRAVERSE_ESCAPE:
                                  -		case SWT.TRAVERSE_PAGE_NEXT:
                                  -		case SWT.TRAVERSE_PAGE_PREVIOUS:
                                  -			event.doit = true;
                                  -			break;
                                  -		case SWT.TRAVERSE_RETURN:
                                  -		case SWT.TRAVERSE_TAB_NEXT:
                                  -		case SWT.TRAVERSE_TAB_PREVIOUS:
                                  -			if ((getStyle() & SWT.SINGLE) != 0) {
                                  -				event.doit = true;
                                  -			} else {
                                  -				if (!editable || (event.stateMask & SWT.MODIFIER_MASK) != 0) {
                                  -					event.doit = true;
                                  -				}
                                  -			}
                                  -			break;
                                  -	}
                                  -}
                                  -/** 
                                  - * Scrolls the widget vertically.
                                  - */
                                  -void handleVerticalScroll(Event event) {
                                  -	setVerticalScrollOffset(getVerticalBar().getSelection(), false);
                                  -}
                                  -/**
                                  - * Add accessibility support for the widget.
                                  - */
                                  -void initializeAccessible() {
                                  -	final Accessible accessible = getAccessible();
                                  -	accessible.addAccessibleListener(new AccessibleAdapter() {
                                  -		public void getHelp(AccessibleEvent e) {
                                  -			e.result = getToolTipText();
                                  -		}
                                  -	});
                                  -	accessible.addAccessibleTextListener(new AccessibleTextAdapter() {
                                  -		public void getCaretOffset(AccessibleTextEvent e) {
                                  -			e.offset = StyledText.this.getCaretOffset();
                                  -		}
                                  -		public void getSelectionRange(AccessibleTextEvent e) {
                                  -			Point selection = StyledText.this.getSelectionRange();
                                  -			e.offset = selection.x;
                                  -			e.length = selection.y;
                                  -		}
                                  -	});
                                  -	accessible.addAccessibleControlListener(new AccessibleControlAdapter() {
                                  -		public void getRole(AccessibleControlEvent e) {
                                  -			e.detail = ACC.ROLE_TEXT;
                                  -		}
                                  -		public void getState(AccessibleControlEvent e) {
                                  -			int state = 0;
                                  -			if (isEnabled()) state |= ACC.STATE_FOCUSABLE;
                                  -			if (isFocusControl()) state |= ACC.STATE_FOCUSED;
                                  -			if (!isVisible()) state |= ACC.STATE_INVISIBLE;
                                  -			if (!getEditable()) state |= ACC.STATE_READONLY;
                                  -			e.detail = state;
                                  -		}
                                  -		public void getValue(AccessibleControlEvent e) {
                                  -			e.result = StyledText.this.getText();
                                  -		}
                                  -	});		
                                  -	addListener(SWT.FocusIn, new Listener() {
                                  -		public void handleEvent(Event event) {
                                  -			accessible.setFocus(ACC.CHILDID_SELF);
                                  -		}
                                  -	});
                                  -}
                                  -/** 
                                  - * Initializes the fonts used to render font styles.
                                  - * Presently only regular and bold fonts are supported.
                                  - */
                                  -void initializeRenderer() {
                                  -	if (renderer != null) {
                                  -		renderer.dispose();
                                  -	}
                                  -	renderer = new DisplayRenderer(getDisplay(), getFont(), this, tabLength);
                                  -	lineHeight = renderer.getLineHeight();
                                  -	if (wordWrap) {
                                  -		content = new WrappedContent(renderer, logicalContent);
                                  -	}
                                  -}
                                  -/**
                                  - * Executes the action.
                                  - * <p>
                                  - *
                                  - * @param action one of the actions defined in ST.java
                                  - */
                                  -public void invokeAction(int action) {
                                  -	int oldColumnX, oldHScrollOffset, hScrollChange;
                                  -	int caretLine;
                                  -	
                                  -	checkWidget();
                                  -	updateCaretDirection = true;
                                  -	switch (action) {
                                  -		// Navigation
                                  -		case ST.LINE_UP:
                                  -			caretLine = doLineUp();
                                  -			oldColumnX = columnX;
                                  -			oldHScrollOffset = horizontalScrollOffset;
                                  -			// explicitly go to the calculated caret line. may be different 
                                  -			// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -			showCaret(caretLine);
                                  -			// restore the original horizontal caret position
                                  -			hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -			columnX = oldColumnX + hScrollChange;
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_DOWN:
                                  -			caretLine = doLineDown();
                                  -			oldColumnX = columnX;
                                  -			oldHScrollOffset = horizontalScrollOffset;
                                  -			// explicitly go to the calculated caret line. may be different 
                                  -			// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -			showCaret(caretLine);
                                  -			// restore the original horizontal caret position
                                  -			hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -			columnX = oldColumnX + hScrollChange;
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_START:
                                  -			doLineStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_END:
                                  -			doLineEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.COLUMN_PREVIOUS:
                                  -			doCursorPrevious();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.COLUMN_NEXT:
                                  -			doCursorNext();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.PAGE_UP:
                                  -			doPageUp(false, getLineCountWhole());
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.PAGE_DOWN:
                                  -			doPageDown(false, getLineCountWhole());
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WORD_PREVIOUS:
                                  -			doWordPrevious();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WORD_NEXT:
                                  -			doWordNext();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.TEXT_START:
                                  -			doContentStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.TEXT_END:
                                  -			doContentEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WINDOW_START:
                                  -			doPageStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WINDOW_END:
                                  -			doPageEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		// Selection	
                                  -		case ST.SELECT_LINE_UP:
                                  -			doSelectionLineUp();
                                  -			break;
                                  -		case ST.SELECT_ALL:
                                  -			selectAll();
                                  -			break;
                                  -		case ST.SELECT_LINE_DOWN:
                                  -			doSelectionLineDown();
                                  -			break;
                                  -		case ST.SELECT_LINE_START:
                                  -			doLineStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_LINE_END:
                                  -			doLineEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_COLUMN_PREVIOUS:
                                  -			doSelectionCursorPrevious();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_COLUMN_NEXT:
                                  -			doSelectionCursorNext();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_PAGE_UP:
                                  -			doSelectionPageUp(getLineCountWhole());
                                  -			break;
                                  -		case ST.SELECT_PAGE_DOWN:
                                  -			doSelectionPageDown(getLineCountWhole());
                                  -			break;
                                  -		case ST.SELECT_WORD_PREVIOUS:
                                  -			doSelectionWordPrevious();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_WORD_NEXT:
                                  -			doSelectionWordNext();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_TEXT_START:
                                  -			doContentStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_TEXT_END:
                                  -			doContentEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_WINDOW_START:
                                  -			doPageStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_WINDOW_END:
                                  -			doPageEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		// Modification			
                                  -		case ST.CUT:
                                  -			cut();
                                  -			break;
                                  -		case ST.COPY:
                                  -			copy();
                                  -			break;
                                  -		case ST.PASTE:
                                  -			paste();
                                  -			break;
                                  -		case ST.DELETE_PREVIOUS:
                                  -			doBackspace();
                                  -			break;
                                  -		case ST.DELETE_NEXT:
                                  -			doDelete();
                                  -			break;
                                  -		case ST.DELETE_WORD_PREVIOUS:
                                  -			doDeleteWordPrevious();
                                  -			break;
                                  -		case ST.DELETE_WORD_NEXT:
                                  -			doDeleteWordNext();
                                  -			break;
                                  -		// Miscellaneous
                                  -		case ST.TOGGLE_OVERWRITE:
                                  -			overwrite = !overwrite;		// toggle insert/overwrite mode
                                  -			break;
                                  -	}
                                  -}
                                  -/**
                                  - * Temporary until SWT provides this
                                  - */
                                  -boolean isBidi() {
                                  -	return IS_GTK || BidiUtil.isBidiPlatform() || isMirrored;
                                  -}
                                  -/**
                                  - * Returns whether the given offset is inside a multi byte line delimiter.
                                  - * Example: 
                                  - * "Line1\r\n" isLineDelimiter(5) == false but isLineDelimiter(6) == true
                                  - * 
                                  - * @return true if the given offset is inside a multi byte line delimiter.
                                  - * false if the given offset is before or after a line delimiter.
                                  - */
                                  -boolean isLineDelimiter(int offset) {
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);	
                                  -	int offsetInLine = offset - lineOffset;
                                  -	// offsetInLine will be greater than line length if the line 
                                  -	// delimiter is longer than one character and the offset is set
                                  -	// in between parts of the line delimiter.
                                  -	return offsetInLine > content.getLine(line).length();
                                  -}
                                  -/**
                                  - * Returns whether the widget is mirrored (right oriented/right to left 
                                  - * writing order). 
                                  - * 
                                  - * @return isMirrored true=the widget is right oriented, false=the widget 
                                  - * 	is left oriented
                                  - */
                                  -boolean isMirrored() {
                                  -	return isMirrored;
                                  -}
                                  -/**
                                  - * Returns whether or not the given lines are visible.
                                  - * <p>
                                  - *
                                  - * @return true if any of the lines is visible
                                  - * false if none of the lines is visible
                                  - */
                                  -boolean isAreaVisible(int firstLine, int lastLine) {
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	int partialTopIndex = verticalScrollOffset / lineHeight;
                                  -	boolean notVisible = firstLine > partialBottomIndex || lastLine < partialTopIndex;
                                  -	return !notVisible;
                                  -}
                                  -/**
                                  - * Returns whether the widget can have only one line.
                                  - * <p>
                                  - *
                                  - * @return true if widget can have only one line, false if widget can have 
                                  - * 	multiple lines
                                  - */
                                  -boolean isSingleLine() {
                                  -	return (getStyle() & SWT.SINGLE) != 0;
                                  -}
                                  -/**
                                  - * Sends the specified verify event, replace/insert text as defined by 
                                  - * the event and send a modify event.
                                  - * <p>
                                  - *
                                  - * @param event	the text change event. 
                                  - *	<ul>
                                  - *	<li>event.start - the replace start offset</li>
                                  - * 	<li>event.end - the replace end offset</li>
                                  - * 	<li>event.text - the new text</li>
                                  - *	</ul>
                                  - * @param updateCaret whether or not he caret should be set behind
                                  - *	the new text
                                  - */
                                  -void modifyContent(Event event, boolean updateCaret) {
                                  -	event.doit = true;
                                  -	notifyListeners(SWT.Verify, event);
                                  -	if (event.doit) {
                                  -		StyledTextEvent styledTextEvent = null;
                                  -		int replacedLength = event.end - event.start;
                                  -		if (isListening(ExtendedModify)) {
                                  -			styledTextEvent = new StyledTextEvent(logicalContent);
                                  -			styledTextEvent.start = event.start;
                                  -			styledTextEvent.end = event.start + event.text.length();
                                  -			styledTextEvent.text = content.getTextRange(event.start, replacedLength);
                                  -		}
                                  -		if (updateCaret) {
                                  -			//Fix advancing flag for delete/backspace key on direction boundary
                                  -			if (event.text.length() == 0) {
                                  -				int lineIndex = content.getLineAtOffset(event.start);
                                  -				int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -				String lineText = content.getLine(lineIndex);
                                  -				TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -				int levelStart = layout.getLevel(event.start - lineOffset);
                                  -				int lineIndexEnd = content.getLineAtOffset(event.end);
                                  -				if (lineIndex != lineIndexEnd) {
                                  -					renderer.disposeTextLayout(layout);
                                  -					lineOffset = content.getOffsetAtLine(lineIndexEnd);
                                  -					lineText = content.getLine(lineIndexEnd);
                                  -					layout = renderer.getTextLayout(lineText, lineOffset);
                                  -				}
                                  -				int levelEnd = layout.getLevel(event.end - lineOffset);
                                  -				renderer.disposeTextLayout(layout);
                                  -				advancing = levelStart != levelEnd;
                                  -			}
                                  -		}
                                  -		content.replaceTextRange(event.start, replacedLength, event.text);
                                  -		// set the caret position prior to sending the modify event.
                                  -		// fixes 1GBB8NJ
                                  -		if (updateCaret) {
                                  -			// always update the caret location. fixes 1G8FODP
                                  -			internalSetSelection(event.start + event.text.length(), 0, true);
                                  -			showCaret();
                                  -		}
                                  -		sendModifyEvent(event);
                                  -		if (isListening(ExtendedModify)) {
                                  -			notifyListeners(ExtendedModify, styledTextEvent);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Replaces the selection with the text on the <code>DND.CLIPBOARD</code>  
                                  - * clipboard  or, if there is no selection,  inserts the text at the current 
                                  - * caret offset.   If the widget has the SWT.SINGLE style and the 
                                  - * clipboard text contains more than one line, only the first line without
                                  - * line delimiters is  inserted in the widget.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void paste(){
                                  -	checkWidget();	
                                  -	String text;
                                  -	text = (String) getClipboardContent(DND.CLIPBOARD);
                                  -	if (text != null && text.length() > 0) {
                                  -		Event event = new Event();
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		event.text = getModelDelimitedText(text);
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Render the specified area.  Broken out as its own method to support
                                  - * direct drawing.
                                  - * <p>
                                  - *
                                  - * @param gc GC to render on 
                                  - * @param startLine first line to render
                                  - * @param startY y pixel location to start rendering at
                                  - * @param renderHeight renderHeight widget area that needs to be filled with lines
                                  - */
                                  -void performPaint(GC gc,int startLine,int startY, int renderHeight)	{
                                  -	Rectangle clientArea = getClientArea();
                                  -	Color background = getBackground();
                                  -	
                                  -	// Check if there is work to do. We never want to try and create 
                                  -	// an Image with 0 width or 0 height.
                                  -	if (clientArea.width == 0) {
                                  -		return;
                                  -	}
                                  -	if (renderHeight > 0) {
                                  -		// renderHeight will be negative when only top margin needs redrawing
                                  -		Color foreground = getForeground();
                                  -		int lineCount = content.getLineCount();
                                  -		int gcStyle = isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -		if (isSingleLine()) {
                                  -			lineCount = 1;
                                  -		}
                                  -		int paintY, paintHeight;
                                  -		Image lineBuffer;
                                  -		GC lineGC;
                                  -		boolean doubleBuffer = DOUBLE_BUFFER && lastPaintTopIndex == topIndex;
                                  -		lastPaintTopIndex = topIndex;
                                  -		if (doubleBuffer) {
                                  -			paintY = 0;
                                  -			paintHeight = renderHeight;
                                  -			lineBuffer = new Image(getDisplay(), clientArea.width, renderHeight);
                                  -			lineGC = new GC(lineBuffer, gcStyle);
                                  -			lineGC.setFont(getFont());
                                  -			lineGC.setForeground(foreground);
                                  -			lineGC.setBackground(background);
                                  -		} else {
                                  -			paintY = startY;
                                  -			paintHeight = startY + renderHeight;
                                  -			lineBuffer = null;
                                  -			lineGC = gc;
                                  -		}		
                                  -		for (int i = startLine; paintY < paintHeight && i < lineCount; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			renderer.drawLine(line, i, paintY, lineGC, background, foreground, true);
                                  -		}
                                  -		if (paintY < paintHeight) {
                                  -			lineGC.setBackground(background);
                                  -			lineGC.fillRectangle(0, paintY, clientArea.width, paintHeight - paintY);
                                  -		}
                                  -		if (doubleBuffer) {
                                  -			clearMargin(lineGC, background, clientArea, startY);
                                  -			gc.drawImage(lineBuffer, 0, startY);
                                  -			lineGC.dispose();
                                  -			lineBuffer.dispose();
                                  -		}
                                  -	}
                                  -	clearMargin(gc, background, clientArea, 0);
                                  -}
                                  -/** 
                                  - * Prints the widget's text to the default printer.
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void print() {
                                  -	checkWidget();
                                  -	Printer printer = new Printer();
                                  -	StyledTextPrintOptions options = new StyledTextPrintOptions();
                                  -	
                                  -	options.printTextForeground = true;
                                  -	options.printTextBackground = true;
                                  -	options.printTextFontStyle = true;
                                  -	options.printLineBackground = true;	
                                  -	new Printing(this, printer, options).run();
                                  -	printer.dispose();
                                  -}
                                  -/** 
                                  - * Returns a runnable that will print the widget's text
                                  - * to the specified printer.
                                  - * <p>
                                  - * The runnable may be run in a non-UI thread.
                                  - * </p>
                                  - * 
                                  - * @param printer the printer to print to
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when printer is null</li>
                                  - * </ul>
                                  - */
                                  -public Runnable print(Printer printer) {
                                  -	checkWidget();	
                                  -	StyledTextPrintOptions options = new StyledTextPrintOptions();
                                  -	options.printTextForeground = true;
                                  -	options.printTextBackground = true;
                                  -	options.printTextFontStyle = true;
                                  -	options.printLineBackground = true;
                                  -	if (printer == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	return print(printer, options);
                                  -}
                                  -/** 
                                  - * Returns a runnable that will print the widget's text
                                  - * to the specified printer.
                                  - * <p>
                                  - * The runnable may be run in a non-UI thread.
                                  - * </p>
                                  - * 
                                  - * @param printer the printer to print to
                                  - * @param options print options to use during printing
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when printer or options is null</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Runnable print(Printer printer, StyledTextPrintOptions options) {
                                  -	checkWidget();
                                  -	if (printer == null || options == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	return new Printing(this, printer, options);
                                  -}
                                  -/**
                                  - * Causes the entire bounds of the receiver to be marked
                                  - * as needing to be redrawn. The next time a paint request
                                  - * is processed, the control will be completely painted.
                                  - * <p>
                                  - * Recalculates the content width for all lines in the bounds.
                                  - * When a <code>LineStyleListener</code> is used a redraw call 
                                  - * is the only notification to the widget that styles have changed 
                                  - * and that the content width may have changed.
                                  - * </p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - *
                                  - * @see Control#update
                                  - */
                                  -public void redraw() {
                                  -	int itemCount;
                                  -	
                                  -	super.redraw();
                                  -	itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -	lineCache.redrawReset(topIndex, itemCount, true);
                                  -	lineCache.calculate(topIndex, itemCount);
                                  -	setHorizontalScrollBar();
                                  -}
                                  -/**
                                  - * Causes the rectangular area of the receiver specified by
                                  - * the arguments to be marked as needing to be redrawn. 
                                  - * The next time a paint request is processed, that area of
                                  - * the receiver will be painted. If the <code>all</code> flag
                                  - * is <code>true</code>, any children of the receiver which
                                  - * intersect with the specified area will also paint their
                                  - * intersecting areas. If the <code>all</code> flag is 
                                  - * <code>false</code>, the children will not be painted.
                                  - * <p>
                                  - * Marks the content width of all lines in the specified rectangle
                                  - * as unknown. Recalculates the content width of all visible lines.
                                  - * When a <code>LineStyleListener</code> is used a redraw call 
                                  - * is the only notification to the widget that styles have changed 
                                  - * and that the content width may have changed.
                                  - * </p>
                                  - *
                                  - * @param x the x coordinate of the area to draw
                                  - * @param y the y coordinate of the area to draw
                                  - * @param width the width of the area to draw
                                  - * @param height the height of the area to draw
                                  - * @param all <code>true</code> if children should redraw, and <code>false</code> otherwise
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - *
                                  - * @see Control#update
                                  - */
                                  -public void redraw(int x, int y, int width, int height, boolean all) {
                                  -	super.redraw(x, y, width, height, all);
                                  -	if (height > 0) {
                                  -		int lineCount = content.getLineCount();
                                  -		int startLine = (getTopPixel() + y) / lineHeight;
                                  -		int endLine = startLine + Compatibility.ceil(height, lineHeight);
                                  -		int itemCount;
                                  -		
                                  -		// reset all lines in the redraw rectangle
                                  -		startLine = Math.min(startLine, lineCount);
                                  -		itemCount = Math.min(endLine, lineCount) - startLine;
                                  -		lineCache.reset(startLine, itemCount, true);
                                  -		// only calculate the visible lines
                                  -		itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -		lineCache.calculate(topIndex, itemCount);
                                  -		setHorizontalScrollBar();
                                  -	}
                                  -}
                                  -/** 
                                  - * Redraws a text range in the specified lines
                                  - * <p>
                                  - *
                                  - * @param firstLine first line to redraw at the specified offset
                                  - * @param offsetInFirstLine offset in firstLine to start redrawing
                                  - * @param lastLine last line to redraw
                                  - * @param endOffset offset in the last where redrawing should stop
                                  - * @param clearBackground true=clear the background by invalidating
                                  - *  the requested redraw range. If the redraw range includes the 
                                  - * 	last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - *  false=draw the foreground directly without invalidating the 
                                  - * 	redraw range.
                                  - */
                                  -void redrawLines(int firstLine, int offsetInFirstLine, int lastLine, int endOffset, boolean clearBackground) {
                                  -	String line = content.getLine(firstLine);
                                  -	int lineCount = lastLine - firstLine + 1;
                                  -	int redrawY, redrawWidth;
                                  -	int lineOffset = content.getOffsetAtLine(firstLine);
                                  -	boolean fullLineRedraw;
                                  -	Rectangle clientArea = getClientArea();
                                  -	
                                  -	fullLineRedraw = ((getStyle() & SWT.FULL_SELECTION) != 0 && lastLine > firstLine);
                                  -	// if redraw range includes last character on the first line, 
                                  -	// clear background to right widget border. fixes bug 19595.
                                  -	if (clearBackground && endOffset - lineOffset >= line.length()) {
                                  -		fullLineRedraw = true;
                                  -	}	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	Rectangle rect = layout.getBounds(offsetInFirstLine, Math.min(endOffset, line.length()) - 1);
                                  -	renderer.disposeTextLayout(layout);
                                  -	rect.x -= horizontalScrollOffset;
                                  -	rect.intersect(clientArea);
                                  -	redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -	redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width;
                                  -	draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground);
                                  -	
                                  -	// redraw last line if more than one line needs redrawing 
                                  -	if (lineCount > 1) {
                                  -		lineOffset = content.getOffsetAtLine(lastLine);
                                  -		int offsetInLastLine = endOffset - lineOffset;	
                                  -		// no redraw necessary if redraw offset is 0
                                  -		if (offsetInLastLine > 0) {
                                  -			line = content.getLine(lastLine);
                                  -			// if redraw range includes last character on the last line, 
                                  -			// clear background to right widget border. fixes bug 19595.
                                  -			if (clearBackground && offsetInLastLine >= line.length()) {
                                  -				fullLineRedraw = true;
                                  -			}
                                  -			line = content.getLine(lastLine);
                                  -			layout = renderer.getTextLayout(line, lineOffset);
                                  -			rect = layout.getBounds(0, offsetInLastLine - 1);
                                  -			renderer.disposeTextLayout(layout);
                                  -			rect.x -= horizontalScrollOffset;
                                  -			rect.intersect(clientArea);
                                  -			redrawY = lastLine * lineHeight - verticalScrollOffset;
                                  -			redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width;
                                  -			draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground);
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Fixes the widget to display a text change.
                                  - * Bit blitting and redrawing is done as necessary.
                                  - * <p>
                                  - *
                                  - * @param y y location of the text change
                                  - * @param newLineCount number of new lines.
                                  - * @param replacedLineCount number of replaced lines.
                                  - */
                                  -void redrawMultiLineChange(int y, int newLineCount, int replacedLineCount) {
                                  -	Rectangle clientArea = getClientArea();
                                  -	int lineCount = newLineCount - replacedLineCount;
                                  -	int sourceY;
                                  -	int destinationY;
                                  -		
                                  -	if (lineCount > 0) {
                                  -		sourceY = Math.max(0, y + lineHeight);
                                  -		destinationY = sourceY + lineCount * lineHeight;
                                  -	} 
                                  -	else {
                                  -		destinationY = Math.max(0, y + lineHeight);
                                  -		sourceY = destinationY - lineCount * lineHeight;
                                  -	}	
                                  -	scroll(
                                  -		0, destinationY,			// destination x, y
                                  -		0, sourceY,					// source x, y
                                  -		clientArea.width, clientArea.height, true);
                                  -	// Always redrawing causes the bottom line to flash when a line is
                                  -	// deleted. This is because SWT merges the paint area of the scroll
                                  -	// with the paint area of the redraw call below.
                                  -	// To prevent this we could call update after the scroll. However,
                                  -	// adding update can cause even more flash if the client does other 
                                  -	// redraw/update calls (ie. for syntax highlighting).
                                  -	// We could also redraw only when a line has been added or when 
                                  -	// contents has been added to a line. This would require getting 
                                  -	// line index info from the content and is not worth the trouble
                                  -	// (the flash is only on the bottom line and minor).
                                  -	// Specifying the NO_MERGE_PAINTS style bit prevents the merged 
                                  -	// redraw but could cause flash/slowness elsewhere.
                                  -	if (y + lineHeight > 0 && y <= clientArea.height) {
                                  -		// redraw first changed line in case a line was split/joined
                                  -		super.redraw(0, y, clientArea.width, lineHeight, true);
                                  -	}
                                  -	if (newLineCount > 0) {
                                  -		int redrawStartY = y + lineHeight;
                                  -		int redrawHeight = newLineCount * lineHeight;
                                  -		
                                  -		if (redrawStartY + redrawHeight > 0 && redrawStartY <= clientArea.height) {
                                  -			// display new text
                                  -			super.redraw(0, redrawStartY, clientArea.width, redrawHeight, true);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Redraws the specified text range.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character to redraw
                                  - * @param length number of characters to redraw
                                  - * @param clearBackground true if the background should be cleared as
                                  - *  part of the redraw operation.  If true, the entire redraw range will
                                  - *  be cleared before anything is redrawn.  If the redraw range includes
                                  - *	the last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - * 	The redraw operation will be faster and smoother if clearBackground 
                                  - * 	is set to false.  Whether or not the flag can be set to false depends 
                                  - * 	on the type of change that has taken place.  If font styles or 
                                  - * 	background colors for the redraw range have changed, clearBackground 
                                  - * 	should be set to true.  If only foreground colors have changed for 
                                  - * 	the redraw range, clearBackground can be set to false. 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public void redrawRange(int start, int length, boolean clearBackground) {
                                  -	checkWidget();
                                  -	int end = start + length;
                                  -	int contentLength = content.getCharCount();
                                  -	int firstLine;
                                  -	int lastLine;
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	firstLine = content.getLineAtOffset(start);
                                  -	lastLine = content.getLineAtOffset(end);
                                  -	// reset all affected lines but let the redraw recalculate only 
                                  -	// those that are visible.
                                  -	lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -	internalRedrawRange(start, length, clearBackground);
                                  -}
                                  -/**
                                  - * Removes the specified bidirectional segment listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void removeBidiSegmentListener(BidiSegmentListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(LineGetSegments, listener);	
                                  -}
                                  -/**
                                  - * Removes the specified extended modify listener.
                                  - * <p>
                                  - *
                                  - * @param extendedModifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeExtendedModifyListener(ExtendedModifyListener extendedModifyListener) {
                                  -	checkWidget();
                                  -	if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(ExtendedModify, extendedModifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified line background listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeLineBackgroundListener(LineBackgroundListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(LineGetBackground, listener);	
                                  -	// use default line styler if last user line styler was removed.
                                  -	if (!isListening(LineGetBackground) && userLineBackground) {
                                  -		StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -		addListener(LineGetBackground, typedListener);	
                                  -		userLineBackground = false;
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the specified line style listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeLineStyleListener(LineStyleListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(LineGetStyle, listener);	
                                  -	// use default line styler if last user line styler was removed. Fixes 1G7B1X2
                                  -	if (!isListening(LineGetStyle) && userLineStyle) {
                                  -		StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -		addListener(LineGetStyle, typedListener);	
                                  -		userLineStyle = false;
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the specified modify listener.
                                  - * <p>
                                  - *
                                  - * @param modifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeModifyListener(ModifyListener modifyListener) {
                                  -	checkWidget();
                                  -	if (modifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Modify, modifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified selection listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeSelectionListener(SelectionListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Selection, listener);	
                                  -}
                                  -/**
                                  - * Removes the specified verify listener.
                                  - * <p>
                                  - *
                                  - * @param verifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeVerifyListener(VerifyListener verifyListener) {
                                  -	checkWidget();
                                  -	if (verifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Verify, verifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified key verify listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeVerifyKeyListener(VerifyKeyListener listener) {
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(VerifyKey, listener);	
                                  -}
                                  -/** 
                                  - * Replaces the styles in the given range with new styles.  This method
                                  - * effectively deletes the styles in the given range and then adds the
                                  - * the new styles. 
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param start offset of first character where styles will be deleted
                                  - * @param length length of the range to delete styles in
                                  - * @param ranges StyleRange objects containing the new style information.
                                  - * The ranges should not overlap and should be within the specified start 
                                  - * and length. The style rendering is undefined if the ranges do overlap
                                  - * or are ill-defined. Must not be null.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> 
                                  - *   <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void replaceStyleRanges(int start, int length, StyleRange[] ranges) {
                                  -	checkWidget();
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	if (ranges == null) {
                                  - 		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  - 	}
                                  - 	if (ranges.length == 0) {
                                  - 		setStyleRange(new StyleRange(start, length, null, null));
                                  - 		return;
                                  - 	}
                                  -	int end = start + length;
                                  -	if (start > end || start < 0 || end > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	int firstLine = content.getLineAtOffset(start);
                                  -	int lastLine = content.getLineAtOffset(end);
                                  -
                                  -	defaultLineStyler.replaceStyleRanges(start, length, ranges);
                                  -	lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -
                                  -	// if the area is not visible, there is no need to redraw
                                  -	if (isAreaVisible(firstLine, lastLine)) {
                                  -		int redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -		int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset;		
                                  -		draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true);
                                  -	}
                                  -
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/**
                                  - * Replaces the given text range with new text.
                                  - * If the widget has the SWT.SINGLE style and "text" contains more than 
                                  - * one line, only the first line is rendered but the text is stored 
                                  - * unchanged. A subsequent call to getText will return the same text 
                                  - * that was set. Note that only a single line of text should be set when 
                                  - * the SWT.SINGLE style is used.
                                  - * <p>
                                  - * <b>NOTE:</b> During the replace operation the current selection is
                                  - * changed as follows:
                                  - * <ul>	
                                  - * <li>selection before replaced text: selection unchanged
                                  - * <li>selection after replaced text: adjust the selection so that same text 
                                  - * remains selected
                                  - * <li>selection intersects replaced text: selection is cleared and caret
                                  - * is placed after inserted text
                                  - * </ul>
                                  - * </p>
                                  - *
                                  - * @param start offset of first character to replace
                                  - * @param length number of characters to replace. Use 0 to insert text
                                  - * @param text new text. May be empty to delete text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> 
                                  - *   <li>ERROR_INVALID_ARGUMENT when either start or end is inside a multi byte line delimiter. 
                                  - * 		Splitting a line delimiter for example by inserting text in between the CR and LF and deleting part of a line delimiter is not supported</li>  
                                  - *   <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void replaceTextRange(int start, int length, String text) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	Event event = new Event();
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	if (text == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	event.start = start;
                                  -	event.end = end;
                                  -	event.text = text;
                                  -	modifyContent(event, false);
                                  -}
                                  -/**
                                  - * Resets the caret position, selection and scroll offsets. Recalculate
                                  - * the content width and scroll bars. Redraw the widget.
                                  - */
                                  -void reset() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	caretOffset = 0;
                                  -	topIndex = 0;
                                  -	topOffset = 0;
                                  -	verticalScrollOffset = 0;
                                  -	horizontalScrollOffset = 0;	
                                  -	resetSelection();
                                  -	// discard any styles that may have been set by creating a 
                                  -	// new default line styler
                                  -	if (defaultLineStyler != null) {
                                  -		removeLineBackgroundListener(defaultLineStyler);
                                  -		removeLineStyleListener(defaultLineStyler);
                                  -		installDefaultLineStyler();
                                  -	}	
                                  -	calculateContentWidth();
                                  -	if (verticalBar != null) {
                                  -		verticalBar.setSelection(0);
                                  -	}
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setSelection(0);	
                                  -	}
                                  -	setScrollBars();
                                  -	setCaretLocation();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * Resets the selection.
                                  - */
                                  -void resetSelection() {
                                  -	selection.x = selection.y = caretOffset;
                                  -	selectionAnchor = -1;
                                  -}
                                  -/**
                                  - * Scrolls the widget horizontally.
                                  - * <p>
                                  - *
                                  - * @param pixels number of pixels to scroll, > 0 = scroll left,
                                  - * 	< 0 scroll right
                                  - */
                                  -void scrollHorizontal(int pixels) {
                                  -	Rectangle clientArea;
                                  -	
                                  -	if (pixels == 0) {
                                  -		return;
                                  -	}
                                  -	clientArea = getClientArea();
                                  -	if (pixels > 0) {
                                  -		int sourceX = leftMargin + pixels;
                                  -		int scrollWidth = clientArea.width - sourceX - rightMargin;
                                  -		int scrollHeight = clientArea.height - topMargin - bottomMargin;
                                  -		scroll(
                                  -			leftMargin, topMargin, 						// destination x, y
                                  -			sourceX, topMargin,							// source x, y
                                  -			scrollWidth, scrollHeight, true);
                                  -		if (sourceX > scrollWidth) {
                                  -			// redraw from end of scrolled area to beginning of scroll 
                                  -			// invalidated area
                                  -			super.redraw(
                                  -				leftMargin + scrollWidth, topMargin, 
                                  -				pixels - scrollWidth, scrollHeight, true);
                                  -		}
                                  -	}
                                  -	else {
                                  -		int destinationX = leftMargin - pixels;
                                  -		int scrollWidth = clientArea.width - destinationX - rightMargin;
                                  -		int scrollHeight = clientArea.height - topMargin - bottomMargin;
                                  -		scroll(
                                  -			destinationX, topMargin,					// destination x, y
                                  -			leftMargin, topMargin,						// source x, y
                                  -			scrollWidth, scrollHeight, true);
                                  -		if (destinationX > scrollWidth) {
                                  -			// redraw from end of scroll invalidated area to scroll 
                                  -			// destination
                                  -			super.redraw(
                                  -				leftMargin + scrollWidth, topMargin, 
                                  -				-pixels - scrollWidth, scrollHeight, true);	
                                  -		}
                                  -	}
                                  -	horizontalScrollOffset += pixels;
                                  -	int oldColumnX = columnX - pixels;
                                  -	setCaretLocation();
                                  -	// restore the original horizontal caret index
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls the widget horizontally and adjust the horizontal scroll
                                  - * bar to reflect the new horizontal offset..
                                  - * <p>
                                  - *
                                  - * @param pixels number of pixels to scroll, > 0 = scroll left,
                                  - * 	< 0 scroll right
                                  - * @return
                                  - *	true=the widget was scrolled 
                                  - *	false=the widget was not scrolled, the given offset is not valid.
                                  - */
                                  -boolean scrollHorizontalBar(int pixels) {
                                  -	if (pixels == 0) {
                                  -		return false;
                                  -	}
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setSelection(horizontalScrollOffset + pixels);
                                  -	}
                                  -	scrollHorizontal(pixels);
                                  -	return true;
                                  -}
                                  -/** 
                                  - * Selects all the text.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void selectAll() {
                                  -	checkWidget();
                                  -	setSelection(0, Math.max(getCharCount(),0));
                                  -}
                                  -/**
                                  - * Replaces/inserts text as defined by the event.
                                  - * <p>
                                  - *
                                  - * @param event the text change event. 
                                  - *	<ul>
                                  - *	<li>event.start - the replace start offset</li>
                                  - * 	<li>event.end - the replace end offset</li>
                                  - * 	<li>event.text - the new text</li>
                                  - *	</ul>
                                  - */
                                  -void sendKeyEvent(Event event) {
                                  -	if (editable) {
                                  -		modifyContent(event, true);
                                  -	}
                                  -}
                                  -void sendModifyEvent(Event event) {
                                  -	Accessible accessible = getAccessible();
                                  -	if (event.text.length() == 0) {
                                  -		accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start);
                                  -	} else {
                                  -		if (event.start == event.end) {
                                  -			accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length());
                                  -		} else {
                                  -			accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start);
                                  -			accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length());	
                                  -		}
                                  -	}
                                  -	notifyListeners(SWT.Modify, event);
                                  -}
                                  -/**
                                  - * Sends the specified selection event.
                                  - */
                                  -void sendSelectionEvent() {
                                  -	getAccessible().textSelectionChanged();
                                  -	Event event = new Event();
                                  -	event.x = selection.x;
                                  -	event.y = selection.y;
                                  -	notifyListeners(SWT.Selection, event);
                                  -}
                                  -/**
                                  - * Sets whether the widget wraps lines.
                                  - * This overrides the creation style bit SWT.WRAP.
                                  - * <p>
                                  - *
                                  - * @param wrap true=widget wraps lines, false=widget does not wrap lines
                                  - * @since 2.0
                                  - */
                                  -public void setWordWrap(boolean wrap) {
                                  -	checkWidget();
                                  -	if ((getStyle() & SWT.SINGLE) != 0) return;
                                  -	
                                  -	if (wrap != wordWrap) {
                                  -		ScrollBar horizontalBar = getHorizontalBar();
                                  -		
                                  -		wordWrap = wrap;
                                  -		if (wordWrap) {
                                  -			logicalContent = content;
                                  -			content = new WrappedContent(renderer, logicalContent);
                                  -		}
                                  -		else {
                                  -			content = logicalContent;
                                  -		}
                                  -		calculateContentWidth();
                                  -		horizontalScrollOffset = 0;
                                  -		if (horizontalBar != null) {
                                  -			horizontalBar.setVisible(!wordWrap);
                                  -		}
                                  -		setScrollBars();
                                  -		setCaretLocation();
                                  -		super.redraw();		
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the receiver's caret.  Set the caret's height and location.
                                  - * 
                                  - * </p>
                                  - * @param caret the new caret for the receiver
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setCaret(Caret caret) {
                                  -	checkWidget ();
                                  -	super.setCaret(caret);
                                  -	caretDirection = SWT.NULL; 
                                  -	if (caret != null) {
                                  -		setCaretLocation();
                                  -	}
                                  -}
                                  -/**
                                  - * @see org.eclipse.swt.widgets.Control#setBackground
                                  - */
                                  -public void setBackground(Color color) {
                                  -	checkWidget();
                                  -	background = color;
                                  -	super.setBackground(getBackground());
                                  -	redraw();
                                  -}
                                  -/**
                                  - * Sets the BIDI coloring mode.  When true the BIDI text display
                                  - * algorithm is applied to segments of text that are the same
                                  - * color.
                                  - *
                                  - * @param mode the new coloring mode
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * <p>
                                  - * @deprecated use BidiSegmentListener instead.
                                  - * </p>
                                  - */
                                  -public void setBidiColoring(boolean mode) {
                                  -	checkWidget();
                                  -	bidiColoring = mode;
                                  -}
                                  -void setCaretLocation(int newCaretX, int line, int direction) {
                                  -	Caret caret = getCaret();
                                  -	if (caret != null) {
                                  -		boolean updateImage = caret == defaultCaret;
                                  -		int imageDirection = direction;
                                  -		if (isMirrored()) {
                                  -			if (imageDirection == SWT.LEFT) {
                                  -				imageDirection = SWT.RIGHT;
                                  -			} else if (imageDirection == SWT.RIGHT) {
                                  -				imageDirection = SWT.LEFT;
                                  -			}
                                  -		}
                                  -		if (updateImage && imageDirection == SWT.RIGHT) {
                                  -			newCaretX -= (caret.getSize().x - 1);
                                  -		}
                                  -		int newCaretY = line * lineHeight - verticalScrollOffset + topMargin;
                                  -		caret.setLocation(newCaretX, newCaretY);
                                  -		getAccessible().textCaretMoved(getCaretOffset());
                                  -		if (direction != caretDirection) {
                                  -			caretDirection = direction;
                                  -			if (updateImage) {
                                  -				if (imageDirection == SWT.DEFAULT) {
                                  -					defaultCaret.setImage(null);
                                  -				} else if (imageDirection == SWT.LEFT) {
                                  -					defaultCaret.setImage(leftCaretBitmap);
                                  -				} else if (imageDirection == SWT.RIGHT) {
                                  -					defaultCaret.setImage(rightCaretBitmap);
                                  -				}
                                  -			}
                                  -			caret.setSize(caret.getSize().x, lineHeight);
                                  -			if (caretDirection == SWT.LEFT) {
                                  -				BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_NON_BIDI);
                                  -			} else if (caretDirection == SWT.RIGHT) {
                                  -				BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_BIDI);
                                  -			}
                                  -		}
                                  -	}
                                  -	columnX = newCaretX;
                                  -}
                                  -/**
                                  - * Moves the Caret to the current caret offset.
                                  - */
                                  -void setCaretLocation() {
                                  -	int lineIndex = getCaretLine();
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	int newCaretX = getXAtOffset(line, lineIndex, offsetInLine);
                                  -	setCaretLocation(newCaretX, lineIndex, getCaretDirection());
                                  -}
                                  -/**
                                  - * Sets the caret offset.
                                  - *
                                  - * @param offset caret offset, relative to the first character in the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setCaretOffset(int offset) {
                                  -	checkWidget();
                                  -	int length = getCharCount();
                                  -				
                                  -	if (length > 0 && offset != caretOffset) {
                                  -		if (offset < 0) {
                                  -			caretOffset = 0;
                                  -		}
                                  -		else
                                  -		if (offset > length) {
                                  -			caretOffset = length;
                                  -		}
                                  -		else {
                                  -			if (isLineDelimiter(offset)) {
                                  -				// offset is inside a multi byte line delimiter. This is an 
                                  -				// illegal operation and an exception is thrown. Fixes 1GDKK3R
                                  -				SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -			}
                                  -			caretOffset = offset;
                                  -		}
                                  -		// clear the selection if the caret is moved.
                                  -		// don't notify listeners about the selection change.
                                  -		clearSelection(false);
                                  -	}
                                  -	// always update the caret location. fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}	
                                  -/**
                                  - * Copies the specified text range to the clipboard.  The text will be placed
                                  - * in the clipboard in plain text format and RTF format.
                                  - * <p>
                                  - *
                                  - * @param start start index of the text
                                  - * @param length length of text to place in clipboard
                                  - * 
                                  - * @exception SWTError, see Clipboard.setContents
                                  - * @see org.eclipse.swt.dnd.Clipboard#setContents
                                  - */
                                  -void setClipboardContent(int start, int length, int clipboardType) throws SWTError {
                                  -	if (clipboardType == DND.SELECTION_CLIPBOARD && !(IS_MOTIF || IS_GTK)) return;
                                  -	TextTransfer plainTextTransfer = TextTransfer.getInstance();
                                  -	TextWriter plainTextWriter = new TextWriter(start, length);
                                  -	String plainText = getPlatformDelimitedText(plainTextWriter);
                                  -	Object[] data;
                                  -	Transfer[] types;
                                  -	if (clipboardType == DND.SELECTION_CLIPBOARD) {
                                  -		data = new Object[]{plainText};
                                  -		types = new Transfer[]{plainTextTransfer};
                                  -	} else {
                                  -		RTFTransfer rtfTransfer = RTFTransfer.getInstance();
                                  -		RTFWriter rtfWriter = new RTFWriter(start, length);
                                  -		String rtfText = getPlatformDelimitedText(rtfWriter);
                                  -		data = new Object[]{rtfText, plainText};
                                  -		types = new Transfer[]{rtfTransfer, plainTextTransfer};
                                  -	}
                                  -	clipboard.setContents(data, types, clipboardType);
                                  -}
                                  -/**
                                  - * Sets the content implementation to use for text storage.
                                  - * <p>
                                  - *
                                  - * @param newContent StyledTextContent implementation to use for text storage.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void setContent(StyledTextContent newContent) {
                                  -	checkWidget();	
                                  -	if (newContent == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	if (content != null) {
                                  -		content.removeTextChangeListener(textChangeListener);
                                  -	}	
                                  -	logicalContent = newContent;
                                  -	if (wordWrap) {
                                  -		content = new WrappedContent(renderer, logicalContent);
                                  -	}
                                  -	else {
                                  -		content = logicalContent;
                                  -	}
                                  -	content.addTextChangeListener(textChangeListener);
                                  -	reset();
                                  -}
                                  -/**
                                  - * Sets the receiver's cursor to the cursor specified by the
                                  - * argument.  Overridden to handle the null case since the 
                                  - * StyledText widget uses an ibeam as its default cursor.
                                  - *
                                  - * @see org.eclipse.swt.widgets.Control#setCursor
                                  - */
                                  -public void setCursor (Cursor cursor) {
                                  -	if (cursor == null) {
                                  -		super.setCursor(ibeamCursor);
                                  -	} else {
                                  -		super.setCursor(cursor);
                                  -	}
                                  -}
                                  -/** 
                                  - * Sets whether the widget implements double click mouse behavior.
                                  - * </p>
                                  - *
                                  - * @param enable if true double clicking a word selects the word, if false
                                  - * 	double clicks have the same effect as regular mouse clicks.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setDoubleClickEnabled(boolean enable) {
                                  -	checkWidget();
                                  -	doubleClickEnabled = enable;
                                  -}
                                  -/**
                                  - * Sets whether the widget content can be edited.
                                  - * </p>
                                  - *
                                  - * @param editable if true content can be edited, if false content can not be 
                                  - * 	edited
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setEditable(boolean editable) {
                                  -	checkWidget();
                                  -	this.editable = editable;
                                  -}
                                  -/**
                                  - * Sets a new font to render text with.
                                  - * <p>
                                  - * <b>NOTE:</b> Italic fonts are not supported unless they have no overhang
                                  - * and the same baseline as regular fonts.
                                  - * </p>
                                  - *
                                  - * @param font new font
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setFont(Font font) {
                                  -	checkWidget();
                                  -	int oldLineHeight = lineHeight;
                                  -	
                                  -	super.setFont(font);	
                                  -	initializeRenderer();
                                  -	// keep the same top line visible. fixes 5815
                                  -	if (lineHeight != oldLineHeight) {
                                  -		setVerticalScrollOffset(verticalScrollOffset * lineHeight / oldLineHeight, true);
                                  -		claimBottomFreeSpace();
                                  -	}
                                  -	calculateContentWidth();
                                  -	calculateScrollBars();
                                  -	if (isBidiCaret()) createCaretBitmaps();
                                  -	caretDirection = SWT.NULL;
                                  -	// always set the caret location. Fixes 6685
                                  -	setCaretLocation();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * @see org.eclipse.swt.widgets.Control#setForeground
                                  - */
                                  -public void setForeground(Color color) {
                                  -	checkWidget();
                                  -	foreground = color;
                                  -	super.setForeground(getForeground());
                                  -	redraw();
                                  -}
                                  -/** 
                                  - * Sets the horizontal scroll offset relative to the start of the line.
                                  - * Do nothing if there is no text set.
                                  - * <p>
                                  - * <b>NOTE:</b> The horizontal index is reset to 0 when new text is set in the 
                                  - * widget.
                                  - * </p>
                                  - *
                                  - * @param offset horizontal scroll offset relative to the start 
                                  - * 	of the line, measured in character increments starting at 0, if 
                                  - * 	equal to 0 the content is not scrolled, if > 0 = the content is scrolled.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setHorizontalIndex(int offset) {
                                  -	checkWidget();
                                  -	int clientAreaWidth = getClientArea().width;
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (offset < 0) {
                                  -		offset = 0;
                                  -	}
                                  -	offset *= getHorizontalIncrement();
                                  -	// allow any value if client area width is unknown or 0. 
                                  -	// offset will be checked in resize handler.
                                  -	// don't use isVisible since width is known even if widget 
                                  -	// is temporarily invisible
                                  -	if (clientAreaWidth > 0) {
                                  -		int width = lineCache.getWidth();
                                  -		// prevent scrolling if the content fits in the client area.
                                  -		// align end of longest line with right border of client area
                                  -		// if offset is out of range.
                                  -		if (offset > width - clientAreaWidth) {
                                  -			offset = Math.max(0, width - clientAreaWidth);
                                  -		}
                                  -	}
                                  -	scrollHorizontalBar(offset - horizontalScrollOffset);
                                  -}
                                  -/** 
                                  - * Sets the horizontal pixel offset relative to the start of the line.
                                  - * Do nothing if there is no text set.
                                  - * <p>
                                  - * <b>NOTE:</b> The horizontal pixel offset is reset to 0 when new text 
                                  - * is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param pixel horizontal pixel offset relative to the start 
                                  - * 	of the line.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void setHorizontalPixel(int pixel) {
                                  -	checkWidget();
                                  -	int clientAreaWidth = getClientArea().width;
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (pixel < 0) {
                                  -		pixel = 0;
                                  -	}
                                  -	// allow any value if client area width is unknown or 0. 
                                  -	// offset will be checked in resize handler.
                                  -	// don't use isVisible since width is known even if widget 
                                  -	// is temporarily invisible
                                  -	if (clientAreaWidth > 0) {
                                  -		int width = lineCache.getWidth();
                                  -		// prevent scrolling if the content fits in the client area.
                                  -		// align end of longest line with right border of client area
                                  -		// if offset is out of range.
                                  -		if (pixel > width - clientAreaWidth) {
                                  -			pixel = Math.max(0, width - clientAreaWidth);
                                  -		}
                                  -	}
                                  -	scrollHorizontalBar(pixel - horizontalScrollOffset);
                                  -}
                                  -/**
                                  - * Adjusts the maximum and the page size of the horizontal scroll bar 
                                  - * to reflect content width changes.
                                  - */
                                  -void setHorizontalScrollBar() {
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	
                                  -	if (horizontalBar != null && horizontalBar.getVisible()) {
                                  -		final int INACTIVE = 1;
                                  -		Rectangle clientArea = getClientArea();
                                  -		// only set the real values if the scroll bar can be used 
                                  -		// (ie. because the thumb size is less than the scroll maximum)
                                  -		// avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92
                                  -		if (clientArea.width < lineCache.getWidth()) {
                                  -			horizontalBar.setValues(
                                  -				horizontalBar.getSelection(),
                                  -				horizontalBar.getMinimum(),
                                  -				lineCache.getWidth(),							// maximum
                                  -				clientArea.width - leftMargin - rightMargin,	// thumb size
                                  -				horizontalBar.getIncrement(),
                                  -				clientArea.width - leftMargin - rightMargin);	// page size
                                  -		}
                                  -		else 
                                  -		if (horizontalBar.getThumb() != INACTIVE || horizontalBar.getMaximum() != INACTIVE) {
                                  -			horizontalBar.setValues(
                                  -				horizontalBar.getSelection(),
                                  -				horizontalBar.getMinimum(),
                                  -				INACTIVE,
                                  -				INACTIVE,
                                  -				horizontalBar.getIncrement(),
                                  -				INACTIVE);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Sets the background color of the specified lines.
                                  - * The background color is drawn for the width of the widget. All
                                  - * line background colors are discarded when setText is called.
                                  - * The text background color if defined in a StyleRange overlays the 
                                  - * line background color. Should not be called if a LineBackgroundListener 
                                  - * has been set since the listener maintains the line backgrounds.
                                  - * <p>
                                  - * Line background colors are maintained relative to the line text, not the 
                                  - * line index that is specified in this method call.
                                  - * During text changes, when entire lines are inserted or removed, the line 
                                  - * background colors that are associated with the lines after the change 
                                  - * will "move" with their respective text. An entire line is defined as 
                                  - * extending from the first character on a line to the last and including the 
                                  - * line delimiter. 
                                  - * </p>
                                  - * <p>
                                  - * When two lines are joined by deleting a line delimiter, the top line 
                                  - * background takes precedence and the color of the bottom line is deleted. 
                                  - * For all other text changes line background colors will remain unchanged. 
                                  - * </p>
                                  - * 
                                  - * @param startLine first line the color is applied to, 0 based
                                  - * @param lineCount number of lines the color applies to.
                                  - * @param background line background color
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li>
                                  - * </ul>
                                  - */
                                  -public void setLineBackground(int startLine, int lineCount, Color background) {
                                  -	checkWidget();
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	
                                  -	// this API can not be used if the client is providing the line background
                                  -	if (userLineBackground) {
                                  -		return;
                                  -	}
                                  -	if (startLine < 0 || startLine + lineCount > logicalContent.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	} 
                                  -	defaultLineStyler.setLineBackground(startLine, lineCount, background);
                                  -	// do nothing if redraw range is completely invisible	
                                  -	if (startLine > partialBottomIndex || startLine + lineCount - 1 < topIndex) {
                                  -		return;
                                  -	}
                                  -	// only redraw visible lines
                                  -	if (startLine < topIndex) {
                                  -		lineCount -= topIndex - startLine;
                                  -		startLine = topIndex;
                                  -	}
                                  -	if (startLine + lineCount - 1 > partialBottomIndex) {
                                  -		lineCount = partialBottomIndex - startLine + 1;
                                  -	}
                                  -	startLine -= topIndex;
                                  -	super.redraw(
                                  -		leftMargin, startLine * lineHeight + topMargin, 
                                  -		getClientArea().width - leftMargin - rightMargin, lineCount * lineHeight, true);
                                  -}
                                  -/**
                                  - * Flips selection anchor based on word selection direction.
                                  - */
                                  -void setMouseWordSelectionAnchor() {
                                  -	if (mouseDoubleClick) {
                                  -		if (caretOffset < doubleClickSelection.x) {
                                  -			selectionAnchor = doubleClickSelection.y;
                                  -		}
                                  -		else if (caretOffset > doubleClickSelection.y) {
                                  -			selectionAnchor = doubleClickSelection.x;
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the orientation of the receiver, which must be one
                                  - * of the constants <code>SWT.LEFT_TO_RIGHT</code> or <code>SWT.RIGHT_TO_LEFT</code>.
                                  - * <p>
                                  - *
                                  - * @param orientation new orientation style
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 2.1.2
                                  - */
                                  -public void setOrientation(int orientation) {
                                  -	if ((orientation & (SWT.RIGHT_TO_LEFT | SWT.LEFT_TO_RIGHT)) == 0) { 
                                  -		return;
                                  -	}
                                  -	if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && (orientation & SWT.LEFT_TO_RIGHT) != 0) {
                                  -		return;	
                                  -	}
                                  -	if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && isMirrored()) {
                                  -		return;	
                                  -	} 
                                  -	if ((orientation & SWT.LEFT_TO_RIGHT) != 0 && !isMirrored()) {
                                  -		return;
                                  -	}
                                  -	if (!BidiUtil.setOrientation(handle, orientation)) {
                                  -		return;
                                  -	}
                                  -	isMirrored = (orientation & SWT.RIGHT_TO_LEFT) != 0;
                                  -	initializeRenderer();
                                  -	caretDirection = SWT.NULL;
                                  -	setCaretLocation();
                                  -	keyActionMap.clear();
                                  -	createKeyBindings();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * Adjusts the maximum and the page size of the scroll bars to 
                                  - * reflect content width/length changes.
                                  - */
                                  -void setScrollBars() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	if (verticalBar != null) {
                                  -		Rectangle clientArea = getClientArea();
                                  -		final int INACTIVE = 1;
                                  -		int maximum = content.getLineCount() * getVerticalIncrement();
                                  -		
                                  -		// only set the real values if the scroll bar can be used 
                                  -		// (ie. because the thumb size is less than the scroll maximum)
                                  -		// avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92
                                  -		if (clientArea.height < maximum) {
                                  -			verticalBar.setValues(
                                  -				verticalBar.getSelection(),
                                  -				verticalBar.getMinimum(),
                                  -				maximum,
                                  -				clientArea.height,				// thumb size
                                  -				verticalBar.getIncrement(),
                                  -				clientArea.height);				// page size
                                  -		}
                                  -		else
                                  -		if (verticalBar.getThumb() != INACTIVE || verticalBar.getMaximum() != INACTIVE) {
                                  -			verticalBar.setValues(
                                  -				verticalBar.getSelection(),
                                  -				verticalBar.getMinimum(),
                                  -				INACTIVE,
                                  -				INACTIVE,
                                  -				verticalBar.getIncrement(),
                                  -				INACTIVE);
                                  -		}		
                                  -	}
                                  -	setHorizontalScrollBar();
                                  -}
                                  -/** 
                                  - * Sets the selection to the given position and scrolls it into view.  Equivalent to setSelection(start,start).
                                  - * <p>
                                  - *
                                  - * @param start new caret position
                                  - * @see #setSelection(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul> 
                                  - */
                                  -public void setSelection(int start) {
                                  -	// checkWidget test done in setSelectionRange	
                                  -	setSelection(start, start);
                                  -}
                                  -/** 
                                  - * Sets the selection and scrolls it into view.
                                  - * <p>
                                  - * Indexing is zero based.  Text selections are specified in terms of
                                  - * caret positions.  In a text widget that contains N characters, there are 
                                  - * N+1 caret positions, ranging from 0..N
                                  - * </p>
                                  - *
                                  - * @param point x=selection start offset, y=selection end offset
                                  - * 	The caret will be placed at the selection start when x > y.
                                  - * @see #setSelection(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_NULL_ARGUMENT when point is null</li>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul> 
                                  - */
                                  -public void setSelection(Point point) {
                                  -	checkWidget();
                                  -	if (point == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);	
                                  -	setSelection(point.x, point.y);
                                  -}
                                  -/**
                                  - * Sets the receiver's selection background color to the color specified
                                  - * by the argument, or to the default system color for the control
                                  - * if the argument is null.
                                  - *
                                  - * @param color the new color (or null)
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public void setSelectionBackground (Color color) {
                                  -	checkWidget ();
                                  -	if (color != null) {
                                  -		if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	selectionBackground = color;
                                  -	redraw();
                                  -}	
                                  -/**
                                  - * Sets the receiver's selection foreground color to the color specified
                                  - * by the argument, or to the default system color for the control
                                  - * if the argument is null.
                                  - *
                                  - * @param color the new color (or null)
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public void setSelectionForeground (Color color) {
                                  -	checkWidget ();
                                  -	if (color != null) {
                                  -		if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	selectionForeground = color;
                                  -	redraw();
                                  -}	
                                  -/** 
                                  - * Sets the selection and scrolls it into view.
                                  - * <p>
                                  - * Indexing is zero based.  Text selections are specified in terms of
                                  - * caret positions.  In a text widget that contains N characters, there are 
                                  - * N+1 caret positions, ranging from 0..N
                                  - * </p>
                                  - *
                                  - * @param start selection start offset. The caret will be placed at the 
                                  - * 	selection start when start > end.
                                  - * @param end selection end offset
                                  - * @see #setSelectionRange(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setSelection(int start, int end) {
                                  -	// checkWidget test done in setSelectionRange
                                  -	setSelectionRange(start, end - start);
                                  -	showSelection();
                                  -}
                                  -/** 
                                  - * Sets the selection. The new selection may not be visible. Call showSelection to scroll 
                                  - * the selection into view. A negative length places the caret at the visual start of the 
                                  - * selection. <p>
                                  - *
                                  - * @param start offset of the first selected character
                                  - * @param length number of characters to select
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setSelectionRange(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	start = Math.max(0, Math.min (start, contentLength));
                                  -	int end = start + length;
                                  -	if (end < 0) {
                                  -		length = -start;
                                  -	} else {
                                  -		if (end > contentLength) length = contentLength - start;
                                  -	}
                                  -	if (isLineDelimiter(start) || isLineDelimiter(start + length)) {
                                  -		// the start offset or end offset of the selection range is inside a 
                                  -		// multi byte line delimiter. This is an illegal operation and an exception 
                                  -		// is thrown. Fixes 1GDKK3R
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}					
                                  -	internalSetSelection(start, length, false);
                                  -	// always update the caret location. fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets the selection. 
                                  - * The new selection may not be visible. Call showSelection to scroll 
                                  - * the selection into view.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first selected character, start >= 0 must be true.
                                  - * @param length number of characters to select, 0 <= start + length 
                                  - * 	<= getCharCount() must be true. 
                                  - * 	A negative length places the caret at the selection start.
                                  - * @param sendEvent a Selection event is sent when set to true and when 
                                  - * 	the selection is reset.
                                  - */
                                  -void internalSetSelection(int start, int length, boolean sendEvent) {
                                  -	int end = start + length;
                                  -	
                                  -	if (start > end) {
                                  -		int temp = end;
                                  -		end = start;
                                  -		start = temp;
                                  -	}
                                  -	// is the selection range different or is the selection direction 
                                  -	// different?
                                  -	if (selection.x != start || selection.y != end || 
                                  -		(length > 0 && selectionAnchor != selection.x) || 
                                  -		(length < 0 && selectionAnchor != selection.y)) {
                                  -		clearSelection(sendEvent);
                                  -		if (length < 0) {
                                  -			selectionAnchor = selection.y = end;
                                  -			caretOffset = selection.x = start;
                                  -		}
                                  -		else {
                                  -			selectionAnchor = selection.x = start;
                                  -			caretOffset = selection.y = end;
                                  -		}
                                  -		internalRedrawRange(selection.x, selection.y - selection.x, true);
                                  -	}
                                  -}
                                  -/** 
                                  - * Adds the specified style. The new style overwrites existing styles for the
                                  - * specified range.  Existing style ranges are adjusted if they partially 
                                  - * overlap with the new style, To clear an individual style, call setStyleRange 
                                  - * with a StyleRange that has null attributes. 
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param range StyleRange object containing the style information.
                                  - * Overwrites the old style in the given range. May be null to delete
                                  - * all styles.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the style range is outside the valid range (> getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public void setStyleRange(StyleRange range) {
                                  -	checkWidget();
                                  -	
                                  -	// this API can not be used if the client is providing the line styles
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	// check the range, make sure it falls within the range of the text 
                                  -	if (range != null && range.start + range.length > content.getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	} 	
                                  -	defaultLineStyler.setStyleRange(range);
                                  -	if (range != null) {
                                  -		int firstLine = content.getLineAtOffset(range.start);
                                  -		int lastLine = content.getLineAtOffset(range.start + range.length);
                                  -		lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -
                                  -		// if the style is not visible, there is no need to redraw
                                  -		if (isAreaVisible(firstLine, lastLine)) {
                                  -			int redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -			int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset;		
                                  -			draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true);
                                  -		}
                                  -	} else {
                                  -		// clearing all styles
                                  -		lineCache.reset(0, content.getLineCount(), false);
                                  -		redraw();
                                  -	}
                                  -	
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets styles to be used for rendering the widget content. All styles 
                                  - * in the widget will be replaced with the given set of styles.
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param ranges StyleRange objects containing the style information.
                                  - * The ranges should not overlap. The style rendering is undefined if 
                                  - * the ranges do overlap. Must not be null. The styles need to be in order.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - *    <li>ERROR_INVALID_RANGE when the last of the style ranges is outside the valid range (> getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public void setStyleRanges(StyleRange[] ranges) {
                                  -	checkWidget();
                                  -	// this API can not be used if the client is providing the line styles
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	if (ranges == null) {
                                  - 		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  - 	}
                                  - 	// check the last range, make sure it falls within the range of the
                                  - 	// current text 
                                  - 	if (ranges.length != 0) {
                                  - 		StyleRange last = ranges[ranges.length-1];
                                  - 		int lastEnd = last.start + last.length;
                                  -		int firstLine = content.getLineAtOffset(ranges[0].start);
                                  -		int lastLine;
                                  -		if (lastEnd > content.getCharCount()) {
                                  -			SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -		} 	
                                  -		lastLine = content.getLineAtOffset(lastEnd);
                                  -		// reset all lines affected by the style change
                                  -		lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  - 	}
                                  - 	else {
                                  -		// reset all lines
                                  -		lineCache.reset(0, content.getLineCount(), false);
                                  - 	}
                                  -	defaultLineStyler.setStyleRanges(ranges);
                                  -	redraw(); // should only redraw affected area to avoid flashing
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets the tab width. 
                                  - * <p>
                                  - *
                                  - * @param tabs tab width measured in characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setTabs(int tabs) {
                                  -	checkWidget();	
                                  -	tabLength = tabs;
                                  -	renderer.setTabLength(tabLength);
                                  -	if (caretOffset > 0) {
                                  -		caretOffset = 0;
                                  -		showCaret();
                                  -		clearSelection(false);
                                  -	}
                                  -	// reset all line widths when the tab width changes
                                  -	lineCache.reset(0, content.getLineCount(), false);
                                  -	redraw();
                                  -}
                                  -/** 
                                  - * Sets the widget content. 
                                  - * If the widget has the SWT.SINGLE style and "text" contains more than 
                                  - * one line, only the first line is rendered but the text is stored 
                                  - * unchanged. A subsequent call to getText will return the same text 
                                  - * that was set.
                                  - * <p>
                                  - * <b>Note:</b> Only a single line of text should be set when the SWT.SINGLE 
                                  - * style is used.
                                  - * </p>
                                  - *
                                  - * @param text new widget content. Replaces existing content. Line styles 
                                  - * 	that were set using StyledText API are discarded.  The
                                  - * 	current selection is also discarded.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void setText(String text) {
                                  -	checkWidget();
                                  -	Event event = new Event();
                                  -	
                                  -	if (text == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	event.start = 0;
                                  -	event.end = getCharCount();
                                  -	event.text = text;
                                  -	event.doit = true;	
                                  -	notifyListeners(SWT.Verify, event);
                                  -	if (event.doit) {
                                  -		StyledTextEvent styledTextEvent = null;
                                  -		
                                  -		if (isListening(ExtendedModify)) {		
                                  -			styledTextEvent = new StyledTextEvent(logicalContent);
                                  -			styledTextEvent.start = event.start;
                                  -			styledTextEvent.end = event.start + event.text.length();
                                  -			styledTextEvent.text = content.getTextRange(event.start, event.end - event.start);
                                  -		}
                                  -		content.setText(event.text);
                                  -		sendModifyEvent(event);	
                                  -		if (styledTextEvent != null) {
                                  -			notifyListeners(ExtendedModify, styledTextEvent);
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the text limit to the specified number of characters.
                                  - * <p>
                                  - * The text limit specifies the amount of text that
                                  - * the user can type into the widget.
                                  - * </p>
                                  - *
                                  - * @param limit the new text limit.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_CANNOT_BE_ZERO when limit is 0</li>
                                  - * </ul>
                                  - */
                                  -public void setTextLimit(int limit) {
                                  -	checkWidget();
                                  -	if (limit == 0) {
                                  -		SWT.error(SWT.ERROR_CANNOT_BE_ZERO);
                                  -	}
                                  -	textLimit = limit;
                                  -}
                                  -/**
                                  - * Sets the top index. Do nothing if there is no text set.
                                  - * <p>
                                  - * The top index is the index of the line that is currently at the top 
                                  - * of the widget. The top index changes when the widget is scrolled.
                                  - * Indexing starts from zero.
                                  - * Note: The top index is reset to 0 when new text is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param topIndex new top index. Must be between 0 and 
                                  - * 	getLineCount() - fully visible lines per page. If no lines are fully 
                                  - * 	visible the maximum value is getLineCount() - 1. An out of range 
                                  - * 	index will be adjusted accordingly.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setTopIndex(int topIndex) {
                                  -	checkWidget();
                                  -	int lineCount = logicalContent.getLineCount();
                                  -	int pageSize = Math.max(1, Math.min(lineCount, getLineCountWhole()));
                                  -	
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (topIndex < 0) {
                                  -		topIndex = 0;
                                  -	}
                                  -	else 
                                  -	if (topIndex > lineCount - pageSize) {
                                  -		topIndex = lineCount - pageSize;
                                  -	}
                                  -	if (wordWrap) {
                                  -		int logicalLineOffset = logicalContent.getOffsetAtLine(topIndex);
                                  -		topIndex = content.getLineAtOffset(logicalLineOffset);
                                  -	}
                                  -	setVerticalScrollOffset(topIndex * getVerticalIncrement(), true);
                                  -}
                                  -/**
                                  - * Sets the top pixel offset. Do nothing if there is no text set.
                                  - * <p>
                                  - * The top pixel offset is the vertical pixel offset of the widget. The
                                  - * widget is scrolled so that the given pixel position is at the top.
                                  - * The top index is adjusted to the corresponding top line.
                                  - * Note: The top pixel is reset to 0 when new text is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param pixel new top pixel offset. Must be between 0 and 
                                  - * 	(getLineCount() - visible lines per page) / getLineHeight()). An out
                                  - * 	of range offset will be adjusted accordingly.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void setTopPixel(int pixel) {
                                  -	checkWidget();
                                  -	int lineCount =content.getLineCount();
                                  -	int height = getClientArea().height;
                                  -	int maxTopPixel = Math.max(0, lineCount * getVerticalIncrement() - height);
                                  -	
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (pixel < 0) {
                                  -		pixel = 0;
                                  -	}
                                  -	else 
                                  -	if (pixel > maxTopPixel) {
                                  -		pixel = maxTopPixel;
                                  -	}
                                  -	setVerticalScrollOffset(pixel, true);
                                  -}
                                  -/**
                                  - * Scrolls the widget vertically.
                                  - * <p>
                                  - *
                                  - * @param pixelOffset the new vertical scroll offset
                                  - * @param adjustScrollBar 
                                  - * 	true= the scroll thumb will be moved to reflect the new scroll offset.
                                  - * 	false = the scroll thumb will not be moved
                                  - * @return 
                                  - *	true=the widget was scrolled 
                                  - *	false=the widget was not scrolled, the given offset is not valid.
                                  - */
                                  -boolean setVerticalScrollOffset(int pixelOffset, boolean adjustScrollBar) {
                                  -	Rectangle clientArea;
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	if (pixelOffset == verticalScrollOffset) {
                                  -		return false;
                                  -	}
                                  -	if (verticalBar != null && adjustScrollBar) {
                                  -		verticalBar.setSelection(pixelOffset);
                                  -	}
                                  -	clientArea = getClientArea();
                                  -	scroll(
                                  -		0, 0, 									// destination x, y
                                  -		0, pixelOffset - verticalScrollOffset,	// source x, y
                                  -		clientArea.width, clientArea.height, true);
                                  -
                                  -	verticalScrollOffset = pixelOffset;
                                  -	calculateTopIndex();
                                  -	int oldColumnX = columnX;
                                  -	setCaretLocation();
                                  -	// restore the original horizontal caret index
                                  -	columnX = oldColumnX;
                                  -	return true;
                                  -}
                                  -/**
                                  - * Scrolls the specified location into view.
                                  - * <p>
                                  - * 
                                  - * @param x the x coordinate that should be made visible.
                                  - * @param line the line that should be made visible. Relative to the
                                  - *	first line in the document.
                                  - * @return 
                                  - *	true=the widget was scrolled to make the specified location visible. 
                                  - *	false=the specified location is already visible, the widget was 
                                  - *	not scrolled. 	
                                  - */
                                  -boolean showLocation(int x, int line) {
                                  -	int clientAreaWidth = getClientArea().width - leftMargin;
                                  -	int verticalIncrement = getVerticalIncrement();
                                  -	int horizontalIncrement = clientAreaWidth / 4;
                                  -	boolean scrolled = false;		
                                  -	
                                  -	if (x < leftMargin) {
                                  -		// always make 1/4 of a page visible
                                  -		x = Math.max(horizontalScrollOffset * -1, x - horizontalIncrement);	
                                  -		scrolled = scrollHorizontalBar(x);
                                  -	}
                                  -	else 
                                  -	if (x >= clientAreaWidth) {
                                  -		// always make 1/4 of a page visible
                                  -		x = Math.min(lineCache.getWidth() - horizontalScrollOffset, x + horizontalIncrement);
                                  -		scrolled = scrollHorizontalBar(x - clientAreaWidth);
                                  -	}
                                  -	if (line < topIndex) {
                                  -		scrolled = setVerticalScrollOffset(line * verticalIncrement, true);
                                  -	}
                                  -	else
                                  -	if (line > getBottomIndex()) {
                                  -		scrolled = setVerticalScrollOffset((line + 1) * verticalIncrement - getClientArea().height, true);
                                  -	}
                                  -	return scrolled;
                                  -}
                                  -/**
                                  - * Sets the caret location and scrolls the caret offset into view.
                                  - */
                                  -void showCaret() {
                                  -	int caretLine = content.getLineAtOffset(caretOffset);
                                  -	
                                  -	showCaret(caretLine);
                                  -}
                                  -/**
                                  - * Sets the caret location and scrolls the caret offset into view.
                                  - */
                                  -void showCaret(int caretLine) {
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	String line = content.getLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	int newCaretX = getXAtOffset(line, caretLine, offsetInLine);	
                                  -	boolean scrolled = showLocation(newCaretX, caretLine);
                                  -	boolean setWrapCaretLocation = false;
                                  -	Caret caret = getCaret();
                                  -
                                  -	if (wordWrap && caret != null) {
                                  -		int caretY = caret.getLocation().y;
                                  -		if ((caretY + verticalScrollOffset) / getVerticalIncrement() - 1 != caretLine) {
                                  -			setWrapCaretLocation = true;
                                  -		}
                                  -	}
                                  -	if (!scrolled || setWrapCaretLocation) {
                                  -		// set the caret location if a scroll operation did not set it (as a 
                                  -		// sideeffect of scrolling) or when in word wrap mode and the caret 
                                  -		// line was explicitly specified (i.e., because getWrapCaretLine does 
                                  -		// not return the desired line causing scrolling to not set it correctly)
                                  -		setCaretLocation(newCaretX, caretLine, getCaretDirection());
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls the specified offset into view.
                                  - * <p>
                                  - *
                                  - * @param offset offset that should be scolled into view
                                  - */
                                  -void showOffset(int offset) {
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	int offsetInLine = offset - lineOffset;
                                  -	String lineText = content.getLine(line);
                                  -	int xAtOffset = getXAtOffset(lineText, line, offsetInLine);
                                  -	
                                  -	showLocation(xAtOffset, line);	
                                  -}
                                  -/**
                                  -/**
                                  - * Scrolls the selection into view.  The end of the selection will be scrolled into
                                  - * view.  Note that if a right-to-left selection exists, the end of the selection is the
                                  - * visual beginning of the selection (i.e., where the caret is located).
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void showSelection() {
                                  -	checkWidget();
                                  -	boolean selectionFits;
                                  -	int startOffset, startLine, startX, endOffset, endLine, endX, offsetInLine;
                                  -
                                  -	// is selection from right-to-left?
                                  -	boolean rightToLeft = caretOffset == selection.x;
                                  -
                                  -	if (rightToLeft) {
                                  -		startOffset = selection.y;
                                  -		endOffset = selection.x;
                                  -	} else {
                                  -		startOffset = selection.x;
                                  -		endOffset = selection.y;
                                  -	}
                                  -	
                                  -	// calculate the logical start and end values for the selection
                                  -	startLine = content.getLineAtOffset(startOffset);
                                  -	offsetInLine = startOffset - content.getOffsetAtLine(startLine);
                                  -	startX = getXAtOffset(content.getLine(startLine), startLine, offsetInLine);	
                                  -	endLine  = content.getLineAtOffset(endOffset);
                                  -	offsetInLine = endOffset - content.getOffsetAtLine(endLine);
                                  -	endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine);	
                                  -
                                  -	// can the selection be fully displayed within the widget's visible width?
                                  -	int w = getClientArea().width;
                                  -	if (rightToLeft) {
                                  -		selectionFits = startX - endX <= w;
                                  -	} else {
                                  -		selectionFits = endX - startX <= w;
                                  -	}
                                  -	
                                  -	if (selectionFits) {
                                  -		// show as much of the selection as possible by first showing
                                  -		// the start of the selection
                                  -		showLocation(startX, startLine);
                                  -		// endX value could change if showing startX caused a scroll to occur
                                  -		endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine);	
                                  -		showLocation(endX, endLine);
                                  -	} else {
                                  -		// just show the end of the selection since the selection start 
                                  -		// will not be visible
                                  -		showLocation(endX, endLine);
                                  -	}	 
                                  -}
                                  -boolean isBidiCaret() {
                                  -	return BidiUtil.isBidiPlatform();
                                  -}
                                  -/**
                                  - * Updates the selection and caret position depending on the text change.
                                  - * If the selection intersects with the replaced text, the selection is 
                                  - * reset and the caret moved to the end of the new text.
                                  - * If the selection is behind the replaced text it is moved so that the
                                  - * same text remains selected.  If the selection is before the replaced text 
                                  - * it is left unchanged.
                                  - * <p>
                                  - *
                                  - * @param startOffset offset of the text change
                                  - * @param replacedLength length of text being replaced
                                  - * @param newLength length of new text
                                  - */
                                  -void updateSelection(int startOffset, int replacedLength, int newLength) {
                                  -	if (selection.y <= startOffset) {
                                  -		// selection ends before text change
                                  -		return;
                                  -	}
                                  -	if (selection.x < startOffset) {
                                  -		// clear selection fragment before text change
                                  -		internalRedrawRange(selection.x, startOffset - selection.x, true);
                                  -	}
                                  -	if (selection.y > startOffset + replacedLength && selection.x < startOffset + replacedLength) {
                                  -		// clear selection fragment after text change.
                                  -		// do this only when the selection is actually affected by the 
                                  -		// change. Selection is only affected if it intersects the change (1GDY217).
                                  -		int netNewLength = newLength - replacedLength;
                                  -		int redrawStart = startOffset + newLength;
                                  -		internalRedrawRange(redrawStart, selection.y + netNewLength - redrawStart, true);
                                  -	}
                                  -	if (selection.y > startOffset && selection.x < startOffset + replacedLength) {
                                  -		// selection intersects replaced text. set caret behind text change
                                  -		internalSetSelection(startOffset + newLength, 0, true);
                                  -		// always update the caret location. fixes 1G8FODP
                                  -		setCaretLocation();
                                  -	}
                                  -	else {
                                  -		// move selection to keep same text selected
                                  -		internalSetSelection(selection.x + newLength - replacedLength, selection.y - selection.x, true);
                                  -		// always update the caret location. fixes 1G8FODP
                                  -		setCaretLocation();
                                  -	}	
                                  -}
                                  -/**
                                  - * Rewraps all lines
                                  - * <p>
                                  - * 
                                  - * @param oldClientAreaWidth client area width before resize 
                                  - * 	occurred
                                  - */
                                  -void wordWrapResize(int oldClientAreaWidth) {
                                  -	WrappedContent wrappedContent = (WrappedContent) content;
                                  -	int newTopIndex;
                                  -
                                  -	// all lines are wrapped and no rewrap required if widget has already 
                                  -	// been visible, client area is now wider and visual (wrapped) line 
                                  -	// count equals logical line count.
                                  -	if (oldClientAreaWidth != 0 && clientAreaWidth > oldClientAreaWidth &&
                                  -		wrappedContent.getLineCount() == logicalContent.getLineCount()) {
                                  -		return;
                                  -	}
                                  -	wrappedContent.wrapLines();
                                  -    
                                  -	// adjust the top index so that top line remains the same
                                  -	newTopIndex = content.getLineAtOffset(topOffset);
                                  -	// topOffset is the beginning of the top line. therefore it 
                                  -	// needs to be adjusted because in a wrapped line this is also 
                                  -	// the end of the preceeding line.  
                                  -	if (newTopIndex < content.getLineCount() - 1 &&
                                  -		topOffset == content.getOffsetAtLine(newTopIndex + 1)) {
                                  -		newTopIndex++;
                                  -	}
                                  -	if (newTopIndex != topIndex) {
                                  -		ScrollBar verticalBar = getVerticalBar();
                                  -		// adjust index and pixel offset manually instead of calling
                                  -		// setVerticalScrollOffset because the widget does not actually need
                                  -		// to be scrolled. causes flash otherwise.
                                  -		verticalScrollOffset += (newTopIndex - topIndex) * getVerticalIncrement();
                                  -		// verticalScrollOffset may become negative if first line was 
                                  -		// partially visible and second line was top line. prevent this from 
                                  -		// happening to fix 8503.
                                  -		if (verticalScrollOffset < 0) {
                                  -			verticalScrollOffset = 0;
                                  -		}
                                  -		topIndex = newTopIndex;
                                  -		topOffset = content.getOffsetAtLine(topIndex);
                                  -		if (verticalBar != null) {
                                  -			verticalBar.setSelection(verticalScrollOffset);
                                  -		}
                                  -	}
                                  -	// caret may be on a different line after a rewrap.
                                  -	// call setCaretLocation after fixing vertical scroll offset.
                                  -	setCaretLocation();    
                                  -	// word wrap may have changed on one of the visible lines
                                  -	super.redraw();
                                  -}
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/todo.gif b/branches/flexBox/sandbox/sandbox/orion/samples/todo.gif
                                  deleted file mode 100644
                                  index 0bbc98a7..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion/samples/todo.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion/samples/undoStack.js b/branches/flexBox/sandbox/sandbox/orion/samples/undoStack.js
                                  deleted file mode 100644
                                  index eab28efa..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion/samples/undoStack.js
                                  +++ /dev/null
                                  @@ -1,203 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.UndoStack = (function() {
                                  -	var Change = (function() {
                                  -		function Change(offset, text, previousText) {
                                  -			this.offset = offset;
                                  -			this.text = text;
                                  -			this.previousText = previousText;
                                  -		}
                                  -		Change.prototype = {
                                  -			undo: function (editor, select) {
                                  -				this._doUndoRedo(this.offset, this.previousText, this.text, editor, select);
                                  -			},
                                  -			redo: function (editor, select) {
                                  -				this._doUndoRedo(this.offset, this.text, this.previousText, editor, select);
                                  -			},
                                  -			_doUndoRedo: function(offset, text, previousText, editor, select) {
                                  -				editor.setText(text, offset, offset + previousText.length);
                                  -				if (select) {
                                  -					editor.setSelection(offset, offset + text.length);
                                  -				}
                                  -			}
                                  -		};
                                  -		return Change;
                                  -	}());
                                  -
                                  -	var CompoundChange = (function() {
                                  -		function CompoundChange (selection, caret) {
                                  -			this.selection = selection;
                                  -			this.caret = caret;
                                  -			this.changes = [];
                                  -		}
                                  -		CompoundChange.prototype = {
                                  -			add: function (change) {
                                  -				this.changes.push(change);
                                  -			},
                                  -			undo: function (editor, select) {
                                  -				for (var i=this.changes.length - 1; i >= 0; i--) {
                                  -					this.changes[i].undo(editor, false);
                                  -				}
                                  -				if (select) {
                                  -					var start = this.selection.start;
                                  -					var end = this.selection.end;
                                  -					editor.setSelection(this.caret ? start : end, this.caret ? end : start);
                                  -				}
                                  -			},
                                  -			redo: function (editor, select) {
                                  -				for (var i = 0; i < this.changes.length; i++) {
                                  -					this.changes[i].redo(editor, false);
                                  -				}
                                  -				if (select) {
                                  -					var start = this.selection.start;
                                  -					var end = this.selection.end;
                                  -					editor.setSelection(this.caret ? start : end, this.caret ? end : start);
                                  -				}
                                  -			}
                                  -		};
                                  -		return CompoundChange;
                                  -	}());
                                  -
                                  -	function UndoStack (editor, size) {
                                  -		this.editor = editor;
                                  -		this.size = size !== undefined ? size : 100;
                                  -		this.reset();
                                  -		editor.addEventListener("ModelChanging", this, this._onModelChanging);
                                  -		editor.addEventListener("Destroy", this, this._onDestroy);
                                  -	}
                                  -	UndoStack.prototype = {
                                  -		add: function (change) {
                                  -			if (this.compoundChange) {
                                  -				this.compoundChange.add(change);
                                  -			} else {
                                  -				var length = this.stack.length;
                                  -				this.stack.splice(this.index, length-this.index, change);
                                  -				this.index++;
                                  -				if (this.stack.length > this.size) {
                                  -					this.stack.shift();
                                  -					this.index--;
                                  -					this.cleanIndex--;
                                  -				}
                                  -			}
                                  -		},
                                  -		markClean: function() {
                                  -			this.endCompoundChange();
                                  -			this._commitUndo();
                                  -			this.cleanIndex = this.index;
                                  -		},
                                  -		isClean: function() {
                                  -			return this.cleanIndex === this.getSize().undo;
                                  -		},
                                  -		canUndo: function() {
                                  -			return this.getSize().undo > 0;
                                  -		},
                                  -		canRedo: function() {
                                  -			return this.getSize().redo > 0;
                                  -		},
                                  -		endCompoundChange: function() {
                                  -			this.compoundChange = undefined;
                                  -		},
                                  -		getSize: function() {
                                  -			var index = this.index;
                                  -			var length = this.stack.length;
                                  -			if (this._undoStart !== undefined) {
                                  -				index++;
                                  -			}
                                  -			return {undo: index, redo: (length - index)};
                                  -		},
                                  -		undo: function() {
                                  -			this._commitUndo();
                                  -			if (this.index <= 0) {
                                  -				return false;
                                  -			}
                                  -			var change = this.stack[--this.index];
                                  -			this._ignoreUndo = true;
                                  -			change.undo(this.editor, true);
                                  -			this._ignoreUndo = false;
                                  -			return true;
                                  -		},
                                  -		redo: function() {
                                  -			this._commitUndo();
                                  -			if (this.index >= this.stack.length) {
                                  -				return false;
                                  -			}
                                  -			var change = this.stack[this.index++];
                                  -			this._ignoreUndo = true;
                                  -			change.redo(this.editor, true);
                                  -			this._ignoreUndo = false;
                                  -			return true;
                                  -		},
                                  -		reset: function() {
                                  -			this.index = this.cleanIndex = 0;
                                  -			this.stack = [];
                                  -			this._undoStart = undefined;
                                  -			this._undoText = "";
                                  -			this._ignoreUndo = false;
                                  -			this._compoundChange = undefined;
                                  -		},
                                  -		startCompoundChange: function() {
                                  -			var change = new CompoundChange(this.editor.getSelection(), this.editor.getCaretOffset());
                                  -			this.add(change);
                                  -			this.compoundChange = change;
                                  -		},
                                  -		_commitUndo: function () {
                                  -			if (this._undoStart !== undefined) {
                                  -				if (this._undoStart < 0) {
                                  -					this.add(new Change(-this._undoStart, "", this._undoText, ""));
                                  -				} else {
                                  -					this.add(new Change(this._undoStart, this._undoText, ""));
                                  -				}
                                  -				this._undoStart = undefined;
                                  -				this._undoText = "";
                                  -			}
                                  -		},
                                  -		_onDestroy: function() {
                                  -			this.editor.removeEventListener("ModelChanging", this, this._onModelChanging);
                                  -			this.editor.removeEventListener("Destroy", this, this._onDestroy);
                                  -		},
                                  -		_onModelChanging: function(e) {
                                  -			var newText = e.text;
                                  -			var start = e.start;
                                  -			var removedCharCount = e.removedCharCount;
                                  -			var addedCharCount = e.addedCharCount;
                                  -			if (this._ignoreUndo) {
                                  -				return;
                                  -			}
                                  -			if (this._undoStart !== undefined && 
                                  -				!((addedCharCount === 1 && removedCharCount === 0 && start === this._undoStart + this._undoText.length) ||
                                  -					(addedCharCount === 0 && removedCharCount === 1 && (((start + 1) === -this._undoStart) || (start === -this._undoStart)))))
                                  -			{
                                  -				this._commitUndo();
                                  -			}
                                  -			if (!this.compoundChange) {
                                  -				if (addedCharCount === 1 && removedCharCount === 0) {
                                  -					if (this._undoStart === undefined) {
                                  -						this._undoStart = start;
                                  -					}
                                  -					this._undoText = this._undoText + newText;
                                  -					return;
                                  -				} else if (addedCharCount === 0 && removedCharCount === 1) {
                                  -					var deleting = this._undoText.length > 0 && -this._undoStart === start;
                                  -					this._undoStart = -start;
                                  -					if (deleting) {
                                  -						this._undoText = this._undoText + this.editor.getText(start, start + removedCharCount);
                                  -					} else {
                                  -						this._undoText = this.editor.getText(start, start + removedCharCount) + this._undoText;
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			this.add(new Change(start, newText, this.editor.getText(start, start + removedCharCount)));
                                  -		}
                                  -	};
                                  -	return UndoStack;
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/editor.css b/branches/flexBox/sandbox/sandbox/orion_nightly/editor.css
                                  deleted file mode 100644
                                  index 1a3a6f5a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/editor.css
                                  +++ /dev/null
                                  @@ -1,93 +0,0 @@
                                  -.editor {
                                  -	background-color: white;
                                  -}
                                  -
                                  -.editorContainer {
                                  -	font-family: monospace;
                                  -	font-size: 10pt;
                                  -}
                                  -
                                  -.editorContent {
                                  -}
                                  -
                                  -.token_comment {
                                  -	color: green;
                                  -}
                                  -
                                  -.token_javadoc {
                                  -	color: #00008F;
                                  -}
                                  -
                                  -.token_string {
                                  -	color: blue;
                                  -}
                                  -
                                  -.token_keyword {
                                  -	color: darkred;
                                  -	font-weight: bold;
                                  -}
                                  -
                                  -.token_bracket_outline {
                                  -	outline: 1px solid red;
                                  -}
                                  -
                                  -.token_bracket {
                                  -	color: white;
                                  -	background-color: grey;
                                  -}
                                  -
                                  -.token_space {
                                  -	background-image: url('/editor/samples/space.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: center center;
                                  -}
                                  -
                                  -.token_tab {
                                  -	background-image: url('/editor/samples/tab.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: left center;
                                  -}
                                  -
                                  -.line_caret {
                                  -	background-color: #EAF2FE;
                                  -}
                                  -
                                  -.ruler_annotation {
                                  -	background-color: #e1ebfb;
                                  -	width: 16px;
                                  -}
                                  -
                                  -.ruler_annotation_todo {
                                  -}
                                  -
                                  -.ruler_annotation_todo_overview {
                                  -	background-color: lightgreen;
                                  -	border: 1px solid green;
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint {
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint_overview {
                                  -	background-color: lightblue;
                                  -	border: 1px solid blue;
                                  -}
                                  -
                                  -.ruler_lines {
                                  -	background-color: #e1ebfb;
                                  -	border-right: 1px solid #b1badf;
                                  -	text-align: right;
                                  -}
                                  -
                                  -.ruler_overview {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_even {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_odd {
                                  -	background-color: white;
                                  -}
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-model.js b/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-model.js
                                  deleted file mode 100644
                                  index 7eaf8be5..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-model.js
                                  +++ /dev/null
                                  @@ -1,200 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global assertEquals eclipse */
                                  -
                                  -TextModelTestCase = TestCase("TextModelTestCase"); 
                                  -
                                  -TextModelTestCase.prototype = {
                                  -	test_Empty: function () {
                                  -		var content = new eclipse.TextModel();
                                  -		assertEquals(":1a:", content.getLineCount(), 1);
                                  -		assertEquals(":1b:", content.getLine(0), "");
                                  -
                                  -		content.setText("test");
                                  -		content.setText("", 0, 4);
                                  -		assertEquals(":2a:", content.getLineCount(), 1);
                                  -		assertEquals(":2b:", content.getLine(0), "");
                                  -	},
                                  -	test_Insert: function () {
                                  -		var content = new eclipse.TextModel();
                                  -		var newText;
                                  -		
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("test\n ", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":1a:", ("test\n This\nis a test\r"), newText);
                                  -		assertEquals(":1b:", 4, content.getLineCount());
                                  -		assertEquals(":1c:", ("test"), content.getLine(0));
                                  -		assertEquals(":1d:", (" This"), content.getLine(1));
                                  -		assertEquals(":1e:", ("is a test"), content.getLine(2));
                                  -		assertEquals(":1f:", (""), content.getLine(3));
                                  -
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("*** ", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":2a:", ("This\n*** is a test\r"), newText);
                                  -		assertEquals(":2b:", 3, content.getLineCount());
                                  -		assertEquals(":2c:", ("This"), content.getLine(0));
                                  -		assertEquals(":2d:", ("*** is a test"), content.getLine(1));
                                  -		assertEquals(":2e:", (""), content.getLine(2));
                                  -
                                  -		content.setText("Line 1\r\nLine 2");
                                  -		content.setText("\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":3a:", ("\rLine 1\r\nLine 2"), newText);
                                  -		assertEquals(":3b:", 3, content.getLineCount());
                                  -		assertEquals(":3c:", (""), content.getLine(0));
                                  -		assertEquals(":3d:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":3e:", ("Line 2"), content.getLine(2));
                                  -		content.setText("\r", 9, 9);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":3f:", ("\rLine 1\r\n\rLine 2"), newText);
                                  -		assertEquals(":3g:", 4, content.getLineCount());
                                  -		assertEquals(":3h:", (""), content.getLine(0));
                                  -		assertEquals(":3i:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":3j:", (""), content.getLine(2));
                                  -		assertEquals(":3k:", ("Line 2"), content.getLine(3));
                                  -
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":4a:", ("\nThis\nis a test\r"), newText);
                                  -		assertEquals(":4b:", 4, content.getLineCount());
                                  -		assertEquals(":4c:", (""), content.getLine(0));
                                  -		assertEquals(":4d:", ("This"), content.getLine(1));
                                  -		assertEquals(":4e:", ("is a test"), content.getLine(2));
                                  -		assertEquals(":4f:", (""), content.getLine(3));
                                  -		
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("\r\nnewLine", 7, 7);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":5a:", ("This\nis\r\nnewLine a test\r"), newText);
                                  -		assertEquals(":5b:", 4, content.getLineCount());
                                  -		assertEquals(":5c:", ("This"), content.getLine(0));
                                  -		assertEquals(":5d:", ("is"), content.getLine(1));
                                  -		assertEquals(":5e:", ("newLine a test"), content.getLine(2));
                                  -		assertEquals(":5f:", (""), content.getLine(3));
                                  -
                                  -		content.setText("");
                                  -		content.setText("This\nis\r\nnewLine a test\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":6a:", ("This\nis\r\nnewLine a test\r"), newText);
                                  -		assertEquals(":6b:", 4, content.getLineCount());
                                  -		assertEquals(":6c:", ("This"), content.getLine(0));
                                  -		assertEquals(":6d:", ("is"), content.getLine(1));
                                  -		assertEquals(":6e:", ("newLine a test"), content.getLine(2));
                                  -		assertEquals(":6f:", (""), content.getLine(3));
                                  -
                                  -		// insert at end
                                  -		content.setText("This");
                                  -		content.setText("\n ", 4, 4);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":7a:", ("This\n "), newText);
                                  -		assertEquals(":7b:", 2, content.getLineCount());
                                  -		assertEquals(":7c:", ("This"), content.getLine(0));
                                  -		assertEquals(":7d:", (" "), content.getLine(1));
                                  -		content.setText("This\n");
                                  -		content.setText("\n", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":7e:", ("This\n\n"), newText);
                                  -		assertEquals(":7f:", 3, content.getLineCount());
                                  -		assertEquals(":7g:", ("This"), content.getLine(0));
                                  -		assertEquals(":7h:", (""), content.getLine(1));
                                  -		assertEquals(":7i:", (""), content.getLine(2));
                                  -
                                  -		// insert at beginning
                                  -		content.setText("This");
                                  -		content.setText("\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":8a:", ("\nThis"), newText);
                                  -		assertEquals(":8b:", 2, content.getLineCount());
                                  -		assertEquals(":8c:", (""), content.getLine(0));
                                  -		assertEquals(":8d:", ("This"), content.getLine(1));
                                  -
                                  -		//insert at end
                                  -		content.setText("This");
                                  -		content.setText("\n", 4, 4);//passing 5, 5 runs into problem (text model doesn't not check range and fails)
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":8e:", "This\n", newText);
                                  -		//Note: This is different than StyledText, web editor always break line on \r \n \r\n, it uses lineDelimiter for enter key
                                  -		assertEquals(":8f:", 2, content.getLineCount());
                                  -		
                                  -		// insert text
                                  -		content.setText("This\nis a test\r");
                                  -		content.setText("*** ", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":9a:", newText, ("This\n*** is a test\r"));
                                  -		assertEquals(":9b:", 3, content.getLineCount());
                                  -		assertEquals(":9c:", ("This"), content.getLine(0));
                                  -		assertEquals(":9d:", ("*** is a test"), content.getLine(1));
                                  -		assertEquals(":9e:", (""), content.getLine(2));
                                  -		
                                  -		content.setText("This\n");
                                  -		content.setText("line", 5, 5);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":10a:", "This\nline", newText);
                                  -		assertEquals(":10b:", 2, content.getLineCount());
                                  -		assertEquals(":10c:", "This", content.getLine(0));
                                  -		assertEquals(":10d:", "line", content.getLine(1));
                                  -		assertEquals(":10e:", 1, content.getLineAtOffset(8));
                                  -		assertEquals(":10f:", 1, content.getLineAtOffset(9));
                                  -
                                  -		// insert at beginning 
                                  -		content.setText("This\n");
                                  -		content.setText("line\n", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":11a:", ("line\nThis\n"), newText);
                                  -		assertEquals(":11b:", 3, content.getLineCount());
                                  -		assertEquals(":11c:", ("line"), content.getLine(0));
                                  -		assertEquals(":11d:", ("This"), content.getLine(1));
                                  -		assertEquals(":11e:", 1, content.getLineAtOffset(5));
                                  -
                                  -		content.setText("Line 1\r\nLine 2\r\nLine 3");
                                  -		content.setText("\r", 0, 0);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":12a:", ("\rLine 1\r\nLine 2\r\nLine 3"), newText);
                                  -		assertEquals(":12b:", 4, content.getLineCount());
                                  -		assertEquals(":12c:", (""), content.getLine(0));
                                  -		assertEquals(":12d:", ("Line 1"), content.getLine(1));
                                  -		assertEquals(":12e:", ("Line 2"), content.getLine(2));
                                  -		assertEquals(":12f:", ("Line 3"), content.getLine(3));
                                  -
                                  -		content.setText("Line 1\nLine 2\nLine 3");
                                  -		content.setText("Line1a\nLine1b\n", 7, 7);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":13a:", ("Line 1\nLine1a\nLine1b\nLine 2\nLine 3"), newText);
                                  -		assertEquals(":13b:", 5, content.getLineCount());
                                  -		assertEquals(":13c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":13d:", ("Line1a"), content.getLine(1));
                                  -		assertEquals(":13e:", ("Line1b"), content.getLine(2));
                                  -		assertEquals(":13f:", ("Line 2"), content.getLine(3));
                                  -		assertEquals(":13g:", ("Line 3"), content.getLine(4));
                                  -
                                  -		content.setText("Line 1\nLine 2\nLine 3");
                                  -		content.setText("l1a", 11, 11);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":14a:", ("Line 1\nLinel1a 2\nLine 3"), newText);
                                  -		assertEquals(":14b:", 3, content.getLineCount());
                                  -		assertEquals(":14c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":14d:", ("Linel1a 2"), content.getLine(1));
                                  -		assertEquals(":14e:", ("Line 3"), content.getLine(2));
                                  -
                                  -		content.setText("Line 1\nLine 2 is a very long line that spans many words\nLine 3");
                                  -		content.setText("very, very, ", 19, 19);
                                  -		newText = content.getText(0, content.getCharCount());
                                  -		assertEquals(":15a:", ("Line 1\nLine 2 is a very, very, very long line that spans many words\nLine 3"), newText);
                                  -		assertEquals(":15b:", 3, content.getLineCount());
                                  -		assertEquals(":15c:", ("Line 1"), content.getLine(0));
                                  -		assertEquals(":15d:", ("Line 2 is a very, very, very long line that spans many words"), content.getLine(1));
                                  -		assertEquals(":15e:", ("Line 3"), content.getLine(2));
                                  -	}
                                  -		
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-performance.js b/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-performance.js
                                  deleted file mode 100644
                                  index b8c166f8..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/js-tests/test-performance.js
                                  +++ /dev/null
                                  @@ -1,189 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010, 2011 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global assertEquals eclipse */
                                  -
                                  -if (window.AsyncTestCase) {
                                  -	PerformanceTest = AsyncTestCase("Performance"); 
                                  -} else {
                                  -	function PerformanceTest (editor) {
                                  -		this.editor = editor;
                                  -		this.FakeQueue = function() {
                                  -		};
                                  -		this.FakeQueue.prototype = { 
                                  -		call: function (name, func) {
                                  -				var callback = {
                                  -					add: function(f) {return f;} 
                                  -				};
                                  -				func(callback);
                                  -			}
                                  -		};
                                  -	}
                                  -}
                                  -
                                  -PerformanceTest.prototype = {
                                  -	setUp: function () {
                                  -		/*:DOC += <div id="divParent" style="width:800px;height:800px;"></div>*/   
                                  -		assertNotNull(document.getElementById('divParent')); 
                                  -		var options = {
                                  -			parent: "divParent",
                                  -			model: new eclipse.TextModel(),
                                  -			stylesheet: "/editor/samples/editor.css",
                                  -			tabSize: 4
                                  -		};
                                  -		window.top.moveTo(0,0);
                                  -		window.top.resizeTo(screen.width,screen.height);
                                  -		this.editor = new eclipse.Editor(options);
                                  -	},
                                  -	tearDown: function () {
                                  -		this.editor.destroy();
                                  -	},
                                  -	doPage: function (queue, action, max) {
                                  -		var editor = this.editor;
                                  -		/*
                                  -		var objXml = new XMLHttpRequest();
                                  -		objXml.open("GET","/editor/samples/text.txt",false);
                                  -		objXml.send(null);
                                  -		this.styler = new eclipse.TextStyler(editor, "java");
                                  -		editor.setText(objXml.responseText);
                                  -		*/
                                  -		var model = editor.getModel();
                                  -		queue.call(action, function(callbacks) {
                                  -			function t() {
                                  -				var caretLine = model.getLineAtOffset(editor.getCaretOffset());
                                  -				editor.invokeAction(action);
                                  -				if (model.getLineAtOffset(editor.getCaretOffset()) !== caretLine && (max === undefined || --max > 0)) {
                                  -					setTimeout(callbacks.add(t), 0);
                                  -				} else {
                                  -					if (log) log ("time(",action,")=", (new Date().getTime() - start));
                                  -				}
                                  -			}
                                  -			if (action.toLowerCase().indexOf("down") !== -1) {
                                  -				editor.setSelection(0, 0);
                                  -			} else {
                                  -				var charCount = model.getCharCount();
                                  -				editor.setSelection(charCount, charCount);
                                  -			}
                                  -			editor.focus();
                                  -			var start = new Date().getTime();
                                  -			t();
                                  -		}); 
                                  -	
                                  -	},
                                  -	test_pageDown: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		this.doPage(queue, "pageDown");
                                  -	},
                                  -	test_pageUp: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		this.doPage(queue, "pageUp");
                                  -	},
                                  -	test_lineDown: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		this.doPage(queue, "lineDown", 300);
                                  -	},
                                  -	test_lineUp: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		this.doPage(queue, "lineUp", 300);
                                  -	},
                                  -	test_getLocationAtOffset: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		var editor = this.editor;
                                  -		var count = 10;
                                  -		var buffer = "";
                                  -		for (var i = 0; i < 10;i++) {
                                  -			buffer += "var nada for nada function " + i + " ";
                                  -		}
                                  -		
                                  -		//test hit test without any styles
                                  -		editor.setText(buffer);
                                  -		editor.focus();
                                  -		var length = buffer.length;
                                  -		queue.call('getLocationAtOffset', function(callbacks) {
                                  -			var start = new Date().getTime();
                                  -			for (i = 0; i < count;i++) {
                                  -				for (var j = 0; j < length;j++) {
                                  -					editor.getLocationAtOffset(j);
                                  -				}
                                  -			}
                                  -			if (log) log("time(getLocationAtOffset)=" + (new Date().getTime() - start));
                                  -		});
                                  -	},
                                  -	test_getLocationAtOffsetStyled: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		var editor = this.editor;
                                  -		var count = 10;
                                  -		var buffer = "";
                                  -		for (var i = 0; i < 10;i++) {
                                  -			buffer += "var nada for nada function " + i + " ";
                                  -		}
                                  -		
                                  -		//test hit test with styles
                                  -		editor.setText(buffer);
                                  -		styler = new eclipse.TextStyler(editor, "js");
                                  -		editor.focus();
                                  -		var length = buffer.length;
                                  -		queue.call('getLocationAtOffsetStyled', function(callbacks) {
                                  -			start = new Date().getTime();
                                  -			for (i = 0; i < count;i++) {
                                  -				for (j = 0; j < length;j++) {
                                  -					editor.getLocationAtOffset(j);
                                  -				}
                                  -			}
                                  -			if (log) log("time(getLocationAtOffset)[styled]=" + (new Date().getTime() - start));
                                  -		});
                                  -	},
                                  -	test_getOffsetAtLocation: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		var editor = this.editor;
                                  -		var count = 100;
                                  -		var buffer = "";
                                  -		for (var i = 0; i < 6;i++) {
                                  -			buffer += "var nada for nada function " + i + " ";
                                  -		}
                                  -		
                                  -		//test hit test without any styles
                                  -		editor.setText(buffer);
                                  -		editor.focus();
                                  -		var location = editor.getLocationAtOffset(length);
                                  -		queue.call('getLocationAtOffset', function(callbacks) {
                                  -			var start = new Date().getTime();
                                  -			for (i = 0; i < count;i++) {
                                  -				for (var j = 0; j < location.x; j++) {
                                  -					editor.getOffsetAtLocation(j, location.y);
                                  -				}
                                  -			}
                                  -			if (log) log("time(getOffseAtLocation)=" + (new Date().getTime() - start));
                                  -		});
                                  -	},
                                  -	test_getOffsetAtLocationStyled: function (queue) {
                                  -		if (!queue) var queue = new this.FakeQueue();
                                  -		var editor = this.editor;
                                  -		var count = 100;
                                  -		var buffer = "";
                                  -		for (var i = 0; i < 6;i++) {
                                  -			buffer += "var nada for nada function " + i + " ";
                                  -		}
                                  -		
                                  -		//test hit test with styles
                                  -		editor.setText(buffer);
                                  -		styler = new eclipse.TextStyler(editor, "js");
                                  -		editor.focus();
                                  -		var location = editor.getLocationAtOffset(length);
                                  -		queue.call('getLocationAtOffset[styled]', function(callbacks) {
                                  -			start = new Date().getTime();
                                  -			for (i = 0; i < count;i++) {
                                  -				for (var j = 0; j < location.x; j++) {
                                  -					editor.getOffsetAtLocation(j, location.y);
                                  -				}
                                  -			}
                                  -			if (log) log("time(getOffseAtLocation)[styled]=" + (new Date().getTime() - start));
                                  -		});
                                  -	}
                                  -};
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/js/editor.js b/branches/flexBox/sandbox/sandbox/orion_nightly/js/editor.js
                                  deleted file mode 100644
                                  index 537a7c95..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/js/editor.js
                                  +++ /dev/null
                                  @@ -1,4649 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window document navigator setTimeout clearTimeout alert XMLHttpRequest */
                                  -
                                  -/**
                                  - * @namespace The global container for Eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new key binding with the given key code and modifiers.
                                  - * 
                                  - * @param {String|Number} keyCode the key code.
                                  - * @param {Boolean} mod1 the primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @param {Boolean} mod2 the secondary modifier (usually Shift).
                                  - * @param {Boolean} mod3 the third modifier (usually Alt).
                                  - * @param {Boolean} mod4 the fourth modifier (usually Control on the Mac).
                                  - * 
                                  - * @class A KeyBinding represents of a key code and a modifier state that can be triggered by the user using the keyboard.
                                  - * @name eclipse.KeyBinding
                                  - * 
                                  - * @property {String|Number} keyCode The key code.
                                  - * @property {Boolean} mod1 The primary modifier (usually Command on Mac and Control on other platforms).
                                  - * @property {Boolean} mod2 The secondary modifier (usually Shift).
                                  - * @property {Boolean} mod3 The third modifier (usually Alt).
                                  - * @property {Boolean} mod4 The fourth modifier (usually Control on the Mac).
                                  - *
                                  - * @see eclipse.Editor#setKeyBinding
                                  - */
                                  -eclipse.KeyBinding = (function() {
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	/** @private */
                                  -	function KeyBinding (keyCode, mod1, mod2, mod3, mod4) {
                                  -		if (typeof(keyCode) === "string") {
                                  -			this.keyCode = keyCode.toUpperCase().charCodeAt(0);
                                  -		} else {
                                  -			this.keyCode = keyCode;
                                  -		}
                                  -		this.mod1 = mod1 !== undefined && mod1 !== null ? mod1 : false;
                                  -		this.mod2 = mod2 !== undefined && mod2 !== null ? mod2 : false;
                                  -		this.mod3 = mod3 !== undefined && mod3 !== null ? mod3 : false;
                                  -		this.mod4 = mod4 !== undefined && mod4 !== null ? mod4 : false;
                                  -	}
                                  -	KeyBinding.prototype = /** @lends eclipse.KeyBinding.prototype */ {
                                  -		/**
                                  -		 * Returns whether this key binding matches the given key event.
                                  -		 * 
                                  -		 * @param e the key event.
                                  -		 * @returns {Boolean} <code>true</code> whether the key binding matches the key event.
                                  -		 */
                                  -		match: function (e) {
                                  -			if (this.keyCode === e.keyCode) {
                                  -				var mod1 = isMac ? e.metaKey : e.ctrlKey;
                                  -				if (this.mod1 !== mod1) { return false; }
                                  -				if (this.mod2 !== e.shiftKey) { return false; }
                                  -				if (this.mod3 !== e.altKey) { return false; }
                                  -				if (isMac && this.mod4 !== e.ctrlKey) { return false; }
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * Returns whether this key binding is the same as the given parameter.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} kb the key binding to compare with.
                                  -		 * @returns {Boolean} whether or not the parameter and the receiver describe the same key binding.
                                  -		 */
                                  -		equals: function(kb) {
                                  -			if (!kb) { return false; }
                                  -			if (this.keyCode !== kb.keyCode) { return false; }
                                  -			if (this.mod1 !== kb.mod1) { return false; }
                                  -			if (this.mod2 !== kb.mod2) { return false; }
                                  -			if (this.mod3 !== kb.mod3) { return false; }
                                  -			if (this.mod4 !== kb.mod4) { return false; }
                                  -			return true;
                                  -		} 
                                  -	};
                                  -	return KeyBinding;
                                  -}());
                                  -
                                  -/**
                                  - * Constructs a new editor.
                                  - * 
                                  - * @param options the editor options.
                                  - * @param {String|DOMElement} options.parent the parent element for the editor, it can be either a DOM element or an ID for a DOM element.
                                  - * @param {eclipse.TextModel} [options.model] the text model for the editor. If this options is not set the editor creates an empty {@link eclipse.TextModel}.
                                  - * @param {Boolean} [options.readonly=false] whether or not the editor is read-only.
                                  - * @param {String|String[]} [options.stylesheet] one or more stylesheet URIs for the editor.
                                  - * @param {Number} [options.tabSize] The number of spaces in a tab.
                                  - * 
                                  - * @class A Editor is a user interface for editing text.
                                  - * @name eclipse.Editor
                                  - */
                                  -eclipse.Editor = (function() {
                                  -
                                  -	/** @private */
                                  -	function addHandler(node, type, handler, capture) {
                                  -		if (typeof node.addEventListener === "function") {
                                  -			node.addEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.attachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	/** @private */
                                  -	function removeHandler(node, type, handler, capture) {
                                  -		if (typeof node.removeEventListener === "function") {
                                  -			node.removeEventListener(type, handler, capture === true);
                                  -		} else {
                                  -			node.detachEvent("on" + type, handler);
                                  -		}
                                  -	}
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined;
                                  -	var isFirefox = parseFloat(navigator.userAgent.split("Firefox/")[1] || navigator.userAgent.split("Minefield/")[1]) || undefined;
                                  -	var isOpera = navigator.userAgent.indexOf("Opera") !== -1;
                                  -	var isChrome = navigator.userAgent.indexOf("Chrome") !== -1;
                                  -	var isSafari = navigator.userAgent.indexOf("Safari") !== -1;
                                  -	var isWebkit = navigator.userAgent.indexOf("WebKit") !== -1;
                                  -	var isPad = navigator.userAgent.indexOf("iPad") !== -1;
                                  -	var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -	var isW3CEvents = typeof window.document.documentElement.addEventListener === "function";
                                  -	var isRangeRects = (!isIE || isIE >= 9) && typeof window.document.createRange().getBoundingClientRect === "function";
                                  -
                                  -	/** 
                                  -	 * Constructs a new Selection object.
                                  -	 * 
                                  -	 * @class A Selection represents a range of selected text in the editor.
                                  -	 * @name eclipse.Selection
                                  -	 */
                                  -	var Selection = (function() {
                                  -		/** @private */
                                  -		function Selection (start, end, caret) {
                                  -			/**
                                  -			 * The selection start offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#start
                                  -			 */
                                  -			this.start = start;
                                  -			/**
                                  -			 * The selection end offset.
                                  -			 *
                                  -			 * @name eclipse.Selection#end
                                  -			 */
                                  -			this.end = end;
                                  -			/** @private */
                                  -			this.caret = caret; //true if the start, false if the caret is at end
                                  -		}
                                  -		Selection.prototype = /** @lends eclipse.Selection.prototype */ {
                                  -			/** @private */
                                  -			clone: function() {
                                  -				return new Selection(this.start, this.end, this.caret);
                                  -			},
                                  -			/** @private */
                                  -			collapse: function() {
                                  -				if (this.caret) {
                                  -					this.end = this.start;
                                  -				} else {
                                  -					this.start = this.end;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			extend: function (offset) {
                                  -				if (this.caret) {
                                  -					this.start = offset;
                                  -				} else {
                                  -					this.end = offset;
                                  -				}
                                  -				if (this.start > this.end) {
                                  -					var tmp = this.start;
                                  -					this.start = this.end;
                                  -					this.end = tmp;
                                  -					this.caret = !this.caret;
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			setCaret: function(offset) {
                                  -				this.start = offset;
                                  -				this.end = offset;
                                  -				this.caret = false;
                                  -			},
                                  -			/** @private */
                                  -			getCaret: function() {
                                  -				return this.caret ? this.start : this.end;
                                  -			},
                                  -			/** @private */
                                  -			toString: function() {
                                  -				return "start=" + this.start + " end=" + this.end + (this.caret ? " caret is at start" : " caret is at end");
                                  -			},
                                  -			/** @private */
                                  -			isEmpty: function() {
                                  -				return this.start === this.end;
                                  -			},
                                  -			/** @private */
                                  -			equals: function(object) {
                                  -				return this.caret === object.caret && this.start === object.start && this.end === object.end;
                                  -			}
                                  -		};
                                  -		return Selection;
                                  -	}());
                                  -
                                  -	/** 
                                  -	 * Constructs a new EventTable object.
                                  -	 * 
                                  -	 * @class 
                                  -	 * @name eclipse.EventTable
                                  -	 * @private
                                  -	 */
                                  -	var EventTable = (function() {
                                  -		/** @private */
                                  -		function EventTable(){
                                  -		    this._listeners = {};
                                  -		}
                                  -		EventTable.prototype = /** @lends EventTable.prototype */ {
                                  -			/** @private */
                                  -			addEventListener: function(type, context, func, data) {
                                  -				if (!this._listeners[type]) {
                                  -					this._listeners[type] = [];
                                  -				}
                                  -				var listener = {
                                  -						context: context,
                                  -						func: func,
                                  -						data: data
                                  -				};
                                  -				this._listeners[type].push(listener);
                                  -			},
                                  -			/** @private */
                                  -			sendEvent: function(type, event) {
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l && l.context && l.func) {
                                  -							l.func.call(l.context, event, l.data);
                                  -						}
                                  -					}
                                  -				}
                                  -			},
                                  -			/** @private */
                                  -			removeEventListener: function(type, context, func, data){
                                  -				var listeners = this._listeners[type];
                                  -				if (listeners) {
                                  -					for (var i=0, len=listeners.length; i < len; i++){
                                  -						var l = listeners[i];
                                  -						if (l.context === context && l.func === func && l.data === data) {
                                  -							listeners.splice(i, 1);
                                  -							break;
                                  -						}
                                  -					}
                                  -				}
                                  -			}
                                  -		};
                                  -		return EventTable;
                                  -	}());
                                  -	
                                  -	/** @private */
                                  -	function Editor (options) {
                                  -		this._init(options);
                                  -	}
                                  -	
                                  -	Editor.prototype = /** @lends eclipse.Editor.prototype */ {
                                  -		/**
                                  -		 * Adds an event listener to the editor.
                                  -		 * 
                                  -		 * @param {String} type the event type. The supported events are:
                                  -		 * <ul>
                                  -		 * <li>"Modify" See {@link #onModify} </li>
                                  -		 * <li>"Selection" See {@link #onSelection} </li>
                                  -		 * <li>"Scroll" See {@link #onScroll} </li>
                                  -		 * <li>"Verify" See {@link #onVerify} </li>
                                  -		 * <li>"Destroy" See {@link #onDestroy} </li>
                                  -		 * <li>"LineStyle" See {@link #onLineStyle} </li>
                                  -		 * <li>"ModelChanging" See {@link #onModelChanging} </li>
                                  -		 * <li>"ModelChanged" See {@link #onModelChanged} </li>
                                  -		 * </ul>
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 *   The function should take an event as the first parameter and optional data as the second parameter.
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #removeEventListener
                                  -		 */
                                  -		addEventListener: function(type, context, func, data) {
                                  -			this._eventTable.addEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * @class This interface represents a ruler for the editor.
                                  -		 * <p>
                                  -		 * A Ruler is a graphical element that is placed either on the left or on the right side of 
                                  -		 * the editor. It can be used to provide the editor with per line decoration such as line numbering,
                                  -		 * bookmarks, breakpoints, folding disclosures, etc. 
                                  -		 * </p><p>
                                  -		 * There are two types of rulers: page and document. A page ruler only shows the content for the lines that are
                                  -		 * visible, while a document ruler always shows the whole content.
                                  -		 * </p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#addRuler}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Ruler
                                  -		 * 
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler overview type.
                                  -		 *
                                  -		 * @name getOverview
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the overview type, which is either "page" or "document".
                                  -		 *
                                  -		 * @see #getLocation
                                  -		 */
                                  -		/**
                                  -		 * Returns the ruler location.
                                  -		 *
                                  -		 * @name getLocation
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {String} the ruler location, which is either "left" or "right".
                                  -		 */
                                  -		/**
                                  -		 * Returns the HTML content for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the HTML content for the decoration
                                  -		 * that determines the width of the ruler should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getHTML
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {String} the HTML content for a given line, or generic line.
                                  -		 *
                                  -		 * @see #getStyle
                                  -		 */
                                  -		/**
                                  -		 * Returns the CSS styling information for the decoration of a given line.
                                  -		 * <p>
                                  -		 * If the line index is <code>-1</code>, the CSS styling information for the decoration
                                  -		 * that determines the width of the ruler should be returned. If the line is
                                  -		 * <code>undefined</code>, the ruler styling information should be returned.
                                  -		 * </p>
                                  -		 *
                                  -		 * @name getStyle
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex
                                  -		 * @returns {eclipse.Style} the CSS styling for ruler, given line, or generic line.
                                  -		 *
                                  -		 * @see #getHTML
                                  -		 */
                                  -		/**
                                  -		 * Returns the indices of the lines that have decoration.
                                  -		 * <p>
                                  -		 * This function is only called for rulers with "document" overview type.
                                  -		 * </p>
                                  -		 * @name getAnnotations
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @returns {Number[]} an array of line indices.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user clicks a line decoration.
                                  -		 *
                                  -		 * @name onClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the clicked decoration
                                  -		 * @param {DOMEvent} e the click event
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the user double clicks a line decoration.
                                  -		 *
                                  -		 * @name onDblClick
                                  -		 * @event
                                  -		 * @methodOf eclipse.Ruler#
                                  -		 * @param {Number} lineIndex the line index of the double clicked decoration
                                  -		 * @param {DOMEvent} e the double click event
                                  -		 */
                                  -		/**
                                  -		 * Adds a ruler to the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		addRuler: function (ruler) {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			if (!rulerParent) {
                                  -				rulerParent = document.createElement("DIV");
                                  -				rulerParent.style.overflow = "hidden";
                                  -				rulerParent.style.MozUserSelect = "none";
                                  -				rulerParent.style.WebkitUserSelect = "none";
                                  -				if (isIE) {
                                  -					rulerParent.attachEvent("onselectstart", function() {return false;});
                                  -				}
                                  -				rulerParent.style.position = "absolute";
                                  -				rulerParent.style.top = "0px";
                                  -				rulerParent.style.cursor = "default";
                                  -				body.appendChild(rulerParent);
                                  -				if (side === "left") {
                                  -					this._leftDiv = rulerParent;
                                  -					rulerParent.className = "editorLeftRuler";
                                  -				} else {
                                  -					this._rightDiv = rulerParent;
                                  -					rulerParent.className = "editorRightRuler";
                                  -				}
                                  -				var table = document.createElement("TABLE");
                                  -				rulerParent.appendChild(table);
                                  -				table.cellPadding = "0px";
                                  -				table.cellSpacing = "0px";
                                  -				table.border = "0px";
                                  -				table.insertRow(0);
                                  -				var self = this;
                                  -				addHandler(rulerParent, "click", function(e) { self._handleRulerEvent(e); });
                                  -				addHandler(rulerParent, "dblclick", function(e) { self._handleRulerEvent(e); });
                                  -			}
                                  -			var div = document.createElement("DIV");
                                  -			div._ruler = ruler;
                                  -			div.rulerChanged = true;
                                  -			div.style.position = "relative";
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var index = row.cells.length;
                                  -			var cell = row.insertCell(index);
                                  -			cell.vAlign = "top";
                                  -			cell.appendChild(div);
                                  -			ruler.setEditor(this);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Converts the given rectangle from one coordinate spaces to another.
                                  -		 * <p>The supported coordinate spaces are:
                                  -		 * <ul>
                                  -		 *   <li>"document" - relative to document, the origin is the top-left corner of first line</li>
                                  -		 *   <li>"page" - relative to html page that contains the editor</li>
                                  -		 *   <li>"editor" - relative to editor, the origin is the top-left corner of the editor container</li>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 * <p>All methods in the editor that take or return a position are in the document coordinate space.</p>
                                  -		 *
                                  -		 * @param rect the rectangle to convert.
                                  -		 * @param rect.x the x of the rectangle.
                                  -		 * @param rect.y the y of the rectangle.
                                  -		 * @param rect.width the width of the rectangle.
                                  -		 * @param rect.height the height of the rectangle.
                                  -		 * @param {String} from the source coordinate space.
                                  -		 * @param {String} to the destination coordinate space.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 */
                                  -		convert: function(rect, from, to) {
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var frame = this._frame.getBoundingClientRect();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			switch(from) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - scroll.x + editorRect.left + editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - scroll.y + editorRect.top + editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += - frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += - frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -			//At this point rect is in the widget coordinate space
                                  -			switch (to) {
                                  -				case "document":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += scroll.x - editorRect.left - editorPad.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += scroll.y - editorRect.top - editorPad.top;
                                  -					}
                                  -					break;
                                  -				case "page":
                                  -					if (rect.x !== undefined) {
                                  -						rect.x += frame.left;
                                  -					}
                                  -					if (rect.y !== undefined) {
                                  -						rect.y += frame.top;
                                  -					}
                                  -					break;
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Destroys the editor. 
                                  -		 * <p>
                                  -		 * Removes the editor from the page and frees all resources created by the editor.
                                  -		 * Calling this function causes the "Destroy" event to be fire so that all components
                                  -		 * attached to editor can release their references.
                                  -		 * </p>
                                  -		 *
                                  -		 * @see #onDestroy
                                  -		 */
                                  -		destroy: function() {
                                  -			this._setGrab(null);
                                  -			this._unhookEvents();
                                  -			
                                  -			/* Destroy rulers*/
                                  -			var destroyRulers = function(rulerDiv) {
                                  -				if (!rulerDiv) {
                                  -					return;
                                  -				}
                                  -				var cells = rulerDiv.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					div._ruler.setEditor(null);
                                  -				}
                                  -			};
                                  -			destroyRulers (this._leftDiv);
                                  -			destroyRulers (this._rightDiv);
                                  -
                                  -			/* Destroy timers */
                                  -			if (this._autoScrollTimerID) {
                                  -				clearTimeout(this._autoScrollTimerID);
                                  -				this._autoScrollTimerID = null;
                                  -			}
                                  -			if (this._updateTimer) {
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			
                                  -			/* Destroy DOM */
                                  -			var parent = this._parent;
                                  -			var frame = this._frame;
                                  -			parent.removeChild(frame);
                                  -			
                                  -			if (isPad) {
                                  -				parent.removeChild(this._touchDiv);
                                  -				this._touchDiv = null;
                                  -				this._selDiv1 = null;
                                  -				this._selDiv2 = null;
                                  -				this._selDiv3 = null;
                                  -				this._textArea = null;
                                  -			}
                                  -			
                                  -			var e = {};
                                  -			this.onDestroy(e);
                                  -			
                                  -			this._parent = null;
                                  -			this._parentDocument = null;
                                  -			this._model = null;
                                  -			this._selection = null;
                                  -			this._doubleClickSelection = null;
                                  -			this._eventTable = null;
                                  -			this._frame = null;
                                  -			this._frameDocument = null;
                                  -			this._frameWindow = null;
                                  -			this._scrollDiv = null;
                                  -			this._editorDiv = null;
                                  -			this._clientDiv = null;
                                  -			this._overlayDiv = null;
                                  -			this._keyBindings = null;
                                  -			this._actions = null;
                                  -		},
                                  -		/**
                                  -		 * Gives focus to the editor.
                                  -		 */
                                  -		focus: function() {
                                  -			/*
                                  -			* Feature in Chrome. When focus is called in the clientDiv without
                                  -			* setting selection the browser will set the selection to the first dom 
                                  -			* element, which can be above the client area. When this happen the 
                                  -			* browser also scrolls the window to show that element.
                                  -			* The fix is to call _updateDOMSelection() before calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -			if (isPad) {
                                  -				this._textArea.focus();
                                  -			} else {
                                  -				if (isOpera) { this._clientDiv.blur(); }
                                  -				this._clientDiv.focus();
                                  -			}
                                  -			/*
                                  -			* Feature in Safari. When focus is called the browser selects the clientDiv
                                  -			* itself. The fix is to call _updateDOMSelection() after calling focus().
                                  -			*/
                                  -			this._updateDOMSelection();
                                  -		},
                                  -		/**
                                  -		 * Returns all action names defined in the editor.
                                  -		 * <p>
                                  -		 * There are two types of actions, the predefined actions of the editor 
                                  -		 * and the actions added by application code.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The predefined actions are:
                                  -		 * <ul>
                                  -		 *   <li>Navigation actions. These actions move the caret collapsing the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"lineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"lineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"lineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"lineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"charPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"charNext" - moves the caret to the next character</li>
                                  -		 *       <li>"pageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"pageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"wordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"wordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"textStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"textEnd" - moves the caret to the end of the document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Selection actions. These actions move the caret extending the selection.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"selectLineUp" - moves the caret up by one line</li>
                                  -		 *       <li>"selectLineDown" - moves the caret down by one line</li>
                                  -		 *       <li>"selectLineStart" - moves the caret to beginning of the current line</li>
                                  -		 *       <li>"selectLineEnd" - moves the caret to end of the current line </li>
                                  -		 *       <li>"selectCharPrevious" - moves the caret to the previous character</li>
                                  -		 *       <li>"selectCharNext" - moves the caret to the next character</li>
                                  -		 *       <li>"selectPageUp" - moves the caret up by one page</li>
                                  -		 *       <li>"selectPageDown" - moves the caret down by one page</li>
                                  -		 *       <li>"selectWordPrevious" - moves the caret to the previous word</li>
                                  -		 *       <li>"selectWordNext" - moves the caret to the next word</li>
                                  -		 *       <li>"selectTextStart" - moves the caret to the beginning of the document</li>
                                  -		 *       <li>"selectTextEnd" - moves the caret to the end of the document</li>
                                  -		 *       <li>"selectAll" - selects the entire document</li>
                                  -		 *     </ul>
                                  -		 *   <li>Edit actions. These actions modify the editor text</li>
                                  -		 *     <ul>
                                  -		 *       <li>"deletePrevious" - deletes the character preceding the caret</li>
                                  -		 *       <li>"deleteNext" - deletes the charecter following the caret</li>
                                  -		 *       <li>"deleteWordPrevious" - deletes the word preceding the caret</li>
                                  -		 *       <li>"deleteWordNext" - deletes the word following the caret</li>
                                  -		 *       <li>"tab" - inserts a tab character at the caret</li>
                                  -		 *       <li>"enter" - inserts a line delimiter at the caret</li>
                                  -		 *     </ul>
                                  -		 *   <li>Clipboard actions.</li>
                                  -		 *     <ul>
                                  -		 *       <li>"copy" - copies the selected text to the clipboard</li>
                                  -		 *       <li>"cut" - copies the selected text to the clipboard and deletes the selection</li>
                                  -		 *       <li>"paste" - replaces the selected text with the clipboard contents</li>
                                  -		 *     </ul>
                                  -		 * </ul>
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [defaultAction=false] whether or not the predefined actions are included.
                                  -		 * @returns {String[]} an array of action names defined in the editor.
                                  -		 *
                                  -		 * @see #invokeAction
                                  -		 * @see #setAction
                                  -		 * @see #setKeyBinding
                                  -		 * @see #getKeyBindings
                                  -		 */
                                  -		getActions: function (defaultAction) {
                                  -			var result = [];
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				if (!defaultAction && actions[i].defaultHandler) { continue; }
                                  -				result.push(actions[i].name);
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom index.
                                  -		 * <p>
                                  -		 * The bottom index is the line that is currently at the bottom of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the last fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the bottom line.
                                  -		 *
                                  -		 * @see #getTopIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getBottomIndex: function(fullyVisible) {
                                  -			return this._getBottomIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the bottom pixel.
                                  -		 * <p>
                                  -		 * The bottom pixel is the pixel position that is currently at
                                  -		 * the bottom edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the bottom pixel.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getBottomPixel: function() {
                                  -			return this._getScroll().y + this._getClientHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @returns the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @see #setCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		getCaretOffset: function () {
                                  -			var s = this._getSelection();
                                  -			return s.getCaret();
                                  -		},
                                  -		/**
                                  -		 * Returns the client area.
                                  -		 * <p>
                                  -		 * The client area is the portion in pixels of the document that is visible. The
                                  -		 * client area position is relative to the beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns the client area rectangle {x, y, width, height}.
                                  -		 *
                                  -		 * @see #getTopPixel
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getClientArea: function() {
                                  -			var scroll = this._getScroll();
                                  -			return {x: scroll.x, y: scroll.y, width: this._getClientWidth(), height: this._getClientHeight()};
                                  -		},
                                  -		/**
                                  -		 * Returns the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the horizontal pixel.
                                  -		 *
                                  -		 * @see #setHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getHorizontalPixel: function() {
                                  -			return this._getScroll().x;
                                  -		},
                                  -		/**
                                  -		 * Returns all the key bindings associated to the given action name.
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @returns {eclipse.KeyBinding[]} the array of key bindings associated to the given action name.
                                  -		 *
                                  -		 * @see #setKeyBinding
                                  -		 * @see #setAction
                                  -		 */
                                  -		getKeyBindings: function (name) {
                                  -			var result = [];
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				if (keyBindings[i].name === name) {
                                  -					result.push(keyBindings[i].keyBinding);
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		/**
                                  -		 * Returns the line height for a given line index.  Returns the default line
                                  -		 * height if the line index is not specified.
                                  -		 *
                                  -		 * @param {Number} [lineIndex] the line index.
                                  -		 * @returns {Number} the height of the line in pixels.
                                  -		 *
                                  -		 * @see #getLinePixel
                                  -		 */
                                  -		getLineHeight: function(lineIndex) {
                                  -			return this._getLineHeight();
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel position of a given line index relative to the beginning
                                  -		 * of the document.
                                  -		 * <p>
                                  -		 * Clamps out of range indices.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the line index.
                                  -		 * @returns {Number} the pixel position of the line.
                                  -		 *
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getLinePixel: function(lineIndex) {
                                  -			lineIndex = Math.min(Math.max(0, lineIndex), this._model.getLineCount());
                                  -			var lineHeight = this._getLineHeight();
                                  -			return lineHeight * lineIndex;
                                  -		},
                                  -		/**
                                  -		 * Returns the {x, y} pixel location of the top-left corner of the character
                                  -		 * bounding box at the specified offset in the document.  The pixel location
                                  -		 * is relative to the document.
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset the character offset
                                  -		 * @returns the {x, y} pixel location of the given offset.
                                  -		 *
                                  -		 * @see #getOffsetAtLocation
                                  -		 * @see #convert
                                  -		 */
                                  -		getLocationAtOffset: function(offset) {
                                  -			var model = this._model;
                                  -			offset = Math.min(Math.max(0, offset), model.getCharCount());
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var x = this._getOffsetToX(offset) + scroll.x - editorRect.left - editorPad.left;
                                  -			var y = this.getLinePixel(lineIndex);
                                  -			return {x: x, y: y};
                                  -		},
                                  -		/**
                                  -		 * Returns the text model of the editor.
                                  -		 *
                                  -		 * @returns {eclipse.TextModel} the text model of the editor.
                                  -		 */
                                  -		getModel: function() {
                                  -			return this._model;
                                  -		},
                                  -		/**
                                  -		 * Returns the character offset nearest to the given pixel location.  The
                                  -		 * pixel location is relative to the document.
                                  -		 *
                                  -		 * @param x the x of the location
                                  -		 * @param y the y of the location
                                  -		 * @returns the character offset at the given location.
                                  -		 *
                                  -		 * @see #getLocationAtOffset
                                  -		 */
                                  -		getOffsetAtLocation: function(x, y) {
                                  -			var model = this._model;
                                  -			var scroll = this._getScroll();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var lineIndex = this._getYToLine(y - scroll.y);
                                  -			x += -scroll.x + editorRect.left + editorPad.left;
                                  -			var offset = this._getXToOffset(lineIndex, x);
                                  -			return offset;
                                  -		},
                                  -		/**
                                  -		 * Returns the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @returns {eclipse.Selection} the editor selection
                                  -		 *
                                  -		 * @see #setSelection
                                  -		 */
                                  -		getSelection: function () {
                                  -			var s = this._getSelection();
                                  -			return {start: s.start, end: s.end};
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The text does not include the character at the end offset.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			var model = this._model;
                                  -			return model.getText(start, end);
                                  -		},
                                  -		/**
                                  -		 * Returns the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor. The parameter
                                  -		 * <code>fullyVisible</code> determines whether to return only fully visible lines. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Boolean} [fullyVisible=false] if <code>true</code>, returns the index of the first fully visible line. This
                                  -		 *    parameter is ignored if the editor is not big enough to show one line.
                                  -		 * @returns {Number} the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #setTopIndex
                                  -		 */
                                  -		getTopIndex: function(fullyVisible) {
                                  -			return this._getTopIndex(fullyVisible);
                                  -		},
                                  -		/**
                                  -		 * Returns the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #setTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		getTopPixel: function() {
                                  -			return this._getScroll().y;
                                  -		},
                                  -		/**
                                  -		 * Executes the action handler associated with the given name.
                                  -		 * <p>
                                  -		 * The application defined action takes precedence over predefined actions unless
                                  -		 * the <code>defaultAction</code> paramater is <code>true</code>.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * If the application defined action returns <code>false</code>, the editor predefined
                                  -		 * action is executed if present.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Boolean} [defaultAction] whether to always execute the predefined action.
                                  -		 * @returns {Boolean} <code>true</code> if the action was executed.
                                  -		 *
                                  -		 * @see #setAction
                                  -		 * @see #getActions
                                  -		 */
                                  -		invokeAction: function (name, defaultAction) {
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name && a.name === name) {
                                  -					if (!defaultAction && a.userHandler) {
                                  -						if (a.userHandler()) { return; }
                                  -					}
                                  -					if (a.defaultHandler) { return a.defaultHandler(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor is destroyed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onDestroy}
                                  -		 * </p>
                                  -		 * @name eclipse.DestroyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has been destroyed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.DestroyEvent} destroyEvent the event
                                  -		 *
                                  -		 * @see #destroy
                                  -		 */
                                  -		onDestroy: function(destroyEvent) {
                                  -			this._eventTable.sendEvent("Destroy", destroyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This object is used to define style information for the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.Style
                                  -		 * 
                                  -		 * @property {String} styleClass A CSS class name.
                                  -		 * @property {Object} style An object with CSS properties.
                                  -		 */
                                  -		/**
                                  -		 * @class This object is used to style range.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.StyleRange
                                  -		 * 
                                  -		 * @property {Number} start The start character offset, relative to the document, where the style should be applied.
                                  -		 * @property {Number} end The end character offset (exclusive), relative to the document, where the style should be applied.
                                  -		 * @property {eclipse.Style} style The style for the range.
                                  -		 */
                                  -		/**
                                  -		 * @class This is the event sent when the editor needs the style information for a line.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onLineStyle}
                                  -		 * </p>		 
                                  -		 * @name eclipse.LineStyleEvent
                                  -		 * 
                                  -		 * @property {Number} lineIndex The line index.
                                  -		 * @property {String} lineText The line text.
                                  -		 * @property {Number} lineStart The character offset, relative to document, of the first character in the line.
                                  -		 * @property {eclipse.Style} style The style for the entire line (output argument).
                                  -		 * @property {eclipse.StyleRange[]} ranges An array of style ranges for the line (output argument).		 
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor needs the style information for a line.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.LineStyleEvent} lineStyleEvent the event
                                  -		 */
                                  -		onLineStyle: function(lineStyleEvent) {
                                  -			this._eventTable.sendEvent("LineStyle", lineStyleEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model has changed.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanged}<br>
                                  -		 * {@link eclipse.TextModel#onChanged}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangedEvent
                                  -		 * 
                                  -		 * @property {Number} start The character offset in the model where the change has occurred.
                                  -		 * @property {Number} removedCharCount The number of characters removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanged: function(modelChangedEvent) {
                                  -			this._eventTable.sendEvent("ModelChanged", modelChangedEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text in the model is about to change.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModelChanging}<br>
                                  -		 * {@link eclipse.TextModel#onChanging}
                                  -		 * </p>
                                  -		 * @name eclipse.ModelChangingEvent
                                  -		 * 
                                  -		 * @property {String} text The text that is about to be inserted in the model.
                                  -		 * @property {Number} start The character offset in the model where the change will occur.
                                  -		 * @property {Number} removedCharCount The number of characters being removed from the model.
                                  -		 * @property {Number} addedCharCount The number of characters being added to the model.
                                  -		 * @property {Number} removedLineCount The number of lines being removed from the model.
                                  -		 * @property {Number} addedLineCount The number of lines being added to the model.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the text in the model is about to change.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModelChangingEvent} modelChangingEvent the event
                                  -		 */
                                  -		onModelChanging: function(modelChangingEvent) {
                                  -			this._eventTable.sendEvent("ModelChanging", modelChangingEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onModify}
                                  -		 * </p>
                                  -		 * @name eclipse.ModifyEvent
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor has changed text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ModifyEvent} modifyEvent the event
                                  -		 */
                                  -		onModify: function(modifyEvent) {
                                  -			this._eventTable.sendEvent("Modify", modifyEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the selection changes in the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onSelection}
                                  -		 * </p>		 
                                  -		 * @name eclipse.SelectionEvent
                                  -		 * 
                                  -		 * @property {eclipse.Selection} oldValue The old selection.
                                  -		 * @property {eclipse.Selection} newValue The new selection.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor selection has changed.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.SelectionEvent} selectionEvent the event
                                  -		 */
                                  -		onSelection: function(selectionEvent) {
                                  -			this._eventTable.sendEvent("Selection", selectionEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the editor scrolls.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onScroll}
                                  -		 * </p>		 
                                  -		 * @name eclipse.ScrollEvent
                                  -		 * 
                                  -		 * @property oldValue The old scroll {x,y}.
                                  -		 * @property newValue The new scroll {x,y}.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor scrolls vertically or horizontally.
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.ScrollEvent} scrollEvent the event
                                  -		 */
                                  -		onScroll: function(scrollEvent) {
                                  -			this._eventTable.sendEvent("Scroll", scrollEvent);
                                  -		},
                                  -		/**
                                  -		 * @class This is the event sent when the text is about to be modified by the editor.
                                  -		 * <p>
                                  -		 * <b>See:</b><br>
                                  -		 * {@link eclipse.Editor}<br>
                                  -		 * {@link eclipse.Editor#event:onVerify}
                                  -		 * </p>
                                  -		 * @name eclipse.VerifyEvent
                                  -		 * 
                                  -		 * @property {String} text The text being inserted.
                                  -		 * @property {Number} start The start offset of the text range to be replaced.
                                  -		 * @property {Number} end The end offset (exclusive) of the text range to be replaced.
                                  -		 */
                                  -		/**
                                  -		 * This event is sent when the editor is about to change text in the model.
                                  -		 * <p>
                                  -		 * If the text is changed directly through the model API, this event
                                  -		 * is not sent.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Listeners are allowed to change these parameters. Setting text to null
                                  -		 * or undefined stops the change.
                                  -		 * </p>
                                  -		 *
                                  -		 * @event
                                  -		 * @param {eclipse.VerifyEvent} verifyEvent the event
                                  -		 */
                                  -		onVerify: function(verifyEvent) {
                                  -			this._eventTable.sendEvent("Verify", verifyEvent);
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given line range.
                                  -		 * <p>
                                  -		 * The line at the end index is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [startLine=0] the start line
                                  -		 * @param {Number} [endLine=line count] the end line
                                  -		 */
                                  -		redrawLines: function(startLine, endLine, ruler) {
                                  -			if (startLine === undefined) { startLine = 0; }
                                  -			if (endLine === undefined) { endLine = this._model.getLineCount(); }
                                  -			if (startLine === endLine) { return; }
                                  -			var div = this._clientDiv;
                                  -			if (ruler) {
                                  -				var location = ruler.getLocation();//"left" or "right"
                                  -				var divRuler = location === "left" ? this._leftDiv : this._rightDiv;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					if (cells[i].firstChild._ruler === ruler) {
                                  -						div = cells[i].firstChild;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (ruler) {
                                  -				div.rulerChanged = true;
                                  -			}
                                  -			if (!ruler || ruler.getOverview() === "page") {
                                  -				var child = div.firstChild;
                                  -				while (child) {
                                  -					var lineIndex = child.lineIndex;
                                  -					if (startLine <= lineIndex && lineIndex < endLine) {
                                  -						child.lineChanged = true;
                                  -					}
                                  -					child = child.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!ruler) {
                                  -				if (startLine <= this._maxLineIndex && this._maxLineIndex < endLine) {
                                  -					this._maxLineIndex = -1;
                                  -					this._maxLineWidth = 0;
                                  -				}
                                  -			}
                                  -			this._queueUpdatePage();
                                  -		},
                                  -		/**
                                  -		 * Redraws the text in the given range.
                                  -		 * <p>
                                  -		 * The character at the end offset is not redrawn.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the start offset of text range
                                  -		 * @param {Number} [end=char count] the end offset of text range
                                  -		 */
                                  -		redrawRange: function(start, end) {
                                  -			var model = this._model;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = model.getCharCount(); }
                                  -			if (start === end) { return; }
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var endLine = model.getLineAtOffset(Math.max(0, end - 1)) + 1;
                                  -			this.redrawLines(startLine, endLine);
                                  -		},
                                  -		/**
                                  -		 * Removes an event listener from the editor.
                                  -		 * <p>
                                  -		 * All the parameters must be the same ones used to add the listener.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {String} type the event type.
                                  -		 * @param {Object} context the context of the function.
                                  -		 * @param {Function} func the function that will be executed when the event happens. 
                                  -		 * @param {Object} [data] optional data passed to the function.
                                  -		 * 
                                  -		 * @see #addEventListener
                                  -		 */
                                  -		removeEventListener: function(type, context, func, data) {
                                  -			this._eventTable.removeEventListener(type, context, func, data);
                                  -		},
                                  -		/**
                                  -		 * Removes a ruler from the editor.
                                  -		 *
                                  -		 * @param {eclipse.Ruler} ruler the ruler.
                                  -		 */
                                  -		removeRuler: function (ruler) {
                                  -			ruler.setEditor(null);
                                  -			var side = ruler.getLocation();
                                  -			var rulerParent = side === "left" ? this._leftDiv : this._rightDiv;
                                  -			var row = rulerParent.firstChild.rows[0];
                                  -			var cells = row.cells;
                                  -			for (var index = 0; index < cells.length; index++) {
                                  -				var cell = cells[index];
                                  -				if (cell.firstChild._ruler === ruler) { break; }
                                  -			}
                                  -			if (index === cells.length) { return; }
                                  -			row.cells[index]._ruler = undefined;
                                  -			row.deleteCell(index);
                                  -			this._updatePage();
                                  -		},
                                  -		/**
                                  -		 * Associates an application defined handler to an action name.
                                  -		 * <p>
                                  -		 * If the action name is a predefined action, the given handler executes before
                                  -		 * the default action handler.  If the given handler returns <code>true</code>, the
                                  -		 * default action handler is not called.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} name the action name.
                                  -		 * @param {Function} handler the action handler.
                                  -		 *
                                  -		 * @see #getActions
                                  -		 * @see #invokeAction
                                  -		 */
                                  -		setAction: function(name, handler) {
                                  -			if (!name) { return; }
                                  -			var actions = this._actions;
                                  -			for (var i = 0; i < actions.length; i++) {
                                  -				var a = actions[i];
                                  -				if (a.name === name) {
                                  -					a.userHandler = handler;
                                  -					return;
                                  -				}
                                  -			}
                                  -			actions.push({name: name, userHandler: handler});
                                  -		},
                                  -		/**
                                  -		 * Associates a key binding with the given action name. Any previous
                                  -		 * association with the specified key binding is overwriten. If the
                                  -		 * action name is <code>null</code>, the association is removed.
                                  -		 * 
                                  -		 * @param {eclipse.KeyBinding} keyBinding the key binding
                                  -		 * @param {String} name the action
                                  -		 */
                                  -		setKeyBinding: function(keyBinding, name) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i]; 
                                  -				if (kb.keyBinding.equals(keyBinding)) {
                                  -					if (name) {
                                  -						kb.name = name;
                                  -					} else {
                                  -						if (kb.predefined) {
                                  -							kb.name = null;
                                  -						} else {
                                  -							var oldName = kb.name; 
                                  -							keyBindings.splice(i, 1);
                                  -							var index = 0;
                                  -							while (index < keyBindings.length && oldName !== keyBindings[index].name) {
                                  -								index++;
                                  -							}
                                  -							if (index === keyBindings.length) {
                                  -								/* <p>
                                  -								 * Removing all the key bindings associated to an user action will cause
                                  -								 * the user action to be removed. Editor predefined actions are never
                                  -								 * removed (so they can be reinstalled in the future). 
                                  -								 * </p>
                                  -								 */
                                  -								var actions = this._actions;
                                  -								for (var j = 0; j < actions.length; j++) {
                                  -									if (actions[j].name === oldName) {
                                  -										if (!actions[j].defaultHandler) {
                                  -											actions.splice(j, 1);
                                  -										}
                                  -									}
                                  -								}
                                  -							}
                                  -						}
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			if (name) {
                                  -				keyBindings.push({keyBinding: keyBinding, name: name});
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the caret offset relative to the start of the document.
                                  -		 *
                                  -		 * @param {Number} caret the caret offset relative to the start of the document.
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getCaretOffset
                                  -		 * @see #setSelection
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setCaretOffset: function(offset, show) {
                                  -			var charCount = this._model.getCharCount();
                                  -			offset = Math.max(0, Math.min (offset, charCount));
                                  -			var selection = new Selection(offset, offset, false);
                                  -			this._setSelection (selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Sets the horizontal pixel.
                                  -		 * <p>
                                  -		 * The horizontal pixel is the pixel position that is currently at
                                  -		 * the left edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the horizontal pixel.
                                  -		 *
                                  -		 * @see #getHorizontalPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setHorizontalPixel: function(pixel) {
                                  -			pixel = Math.max(0, pixel);
                                  -			this._scrollView(pixel - this._getScroll().x, 0);
                                  -		},
                                  -		/**
                                  -		 * Sets the text model of the editor.
                                  -		 *
                                  -		 * @param {eclipse.TextModel} model the text model of the editor.
                                  -		 */
                                  -		setModel: function(model) {
                                  -			if (!model) { return; }
                                  -			this._model.removeListener(this._modelListener);
                                  -			var oldLineCount = this._model.getLineCount();
                                  -			var oldCharCount = this._model.getCharCount();
                                  -			var newLineCount = model.getLineCount();
                                  -			var newCharCount = model.getCharCount();
                                  -			var newText = model.getText();
                                  -			var e = {
                                  -				text: newText,
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanging(e); 
                                  -			this.redrawRange();
                                  -			this._model = model;
                                  -			e = {
                                  -				start: 0,
                                  -				removedCharCount: oldCharCount,
                                  -				addedCharCount: newCharCount,
                                  -				removedLineCount: oldLineCount,
                                  -				addedLineCount: newLineCount
                                  -			};
                                  -			this.onModelChanged(e); 
                                  -			this._model.addListener(this._modelListener);
                                  -			this.redrawRange();
                                  -		},
                                  -		/**
                                  -		 * Sets the editor selection.
                                  -		 * <p>
                                  -		 * The selection is defined by a start and end character offset relative to the
                                  -		 * document. The character at end offset is not included in the selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The caret is always placed at the end offset. The start offset can be
                                  -		 * greater than the end offset to place the caret at the beginning of the
                                  -		 * selection.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * Clamps out of range offsets.
                                  -		 * </p>
                                  -		 * 
                                  -		 * @param {Number} start the start offset of the selection
                                  -		 * @param {Number} end the end offset of the selection
                                  -		 * @param {Boolean} [show=true] if <code>true</coce>, the editor will scroll if needed to show the caret location.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 */
                                  -		setSelection: function (start, end, show) {
                                  -			var caret = start > end;
                                  -			if (caret) {
                                  -				var tmp = start;
                                  -				start = end;
                                  -				end = tmp;
                                  -			}
                                  -			var charCount = this._model.getCharCount();
                                  -			start = Math.max(0, Math.min (start, charCount));
                                  -			end = Math.max(0, Math.min (end, charCount));
                                  -			var selection = new Selection(start, end, caret);
                                  -			this._setSelection(selection, show === undefined || show);
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The character at the end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * When both <code>start</code> and <code>end</code> parameters
                                  -		 * are not specified, the editor places the caret at the beginning
                                  -		 * of the document and scrolls to make it visible.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the new text.
                                  -		 * @param {Number} [start=0] the start offset of text range.
                                  -		 * @param {Number} [end=char count] the end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function (text, start, end) {
                                  -			var reset = start === undefined && end === undefined;
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this._model.getCharCount(); }
                                  -			this._modifyContent({text: text, start: start, end: end, _code: true}, !reset);
                                  -			if (reset) {
                                  -				this._columnX = -1;
                                  -				this._setSelection(new Selection (0, 0, false), true);
                                  -				this._showCaret();
                                  -				
                                  -				/*
                                  -				* Bug in Firefox 4.  For some reason, the caret does not show after the
                                  -				* editor is refreshed.  The fix is to toggle the contentEditable state and
                                  -				* force the clientDiv to loose and receive focus.
                                  -				*/
                                  -				if (isFirefox >= 4) {
                                  -					var clientDiv = this._clientDiv;
                                  -					clientDiv.contentEditable = false;
                                  -					clientDiv.contentEditable = true;
                                  -					clientDiv.blur();
                                  -					clientDiv.focus();
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Sets the top index.
                                  -		 * <p>
                                  -		 * The top index is the line that is currently at the top of the editor.  This
                                  -		 * line may be partially visible depending on the vertical scroll of the editor.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} topIndex the index of the top line.
                                  -		 *
                                  -		 * @see #getBottomIndex
                                  -		 * @see #getTopIndex
                                  -		 */
                                  -		setTopIndex: function(topIndex) {
                                  -			var model = this._model;
                                  -			if (model.getCharCount() === 0) {
                                  -				return;
                                  -			}
                                  -			var lineCount = model.getLineCount();
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pageSize = Math.max(1, Math.min(lineCount, Math.floor(this._getClientHeight () / lineHeight)));
                                  -			if (topIndex < 0) {
                                  -				topIndex = 0;
                                  -			} else if (topIndex > lineCount - pageSize) {
                                  -				topIndex = lineCount - pageSize;
                                  -			}
                                  -			var pixel = topIndex * lineHeight - this._getScroll().y;
                                  -			this._scrollView(0, pixel);
                                  -		},
                                  -		/**
                                  -		 * Sets the top pixel.
                                  -		 * <p>
                                  -		 * The top pixel is the pixel position that is currently at
                                  -		 * the top edge of the editor.  This position is relative to the
                                  -		 * beginning of the document.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} pixel the top pixel.
                                  -		 *
                                  -		 * @see #getBottomPixel
                                  -		 * @see #getTopPixel
                                  -		 * @see #convert
                                  -		 */
                                  -		setTopPixel: function(pixel) {
                                  -			var lineHeight = this._getLineHeight();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var lineCount = this._model.getLineCount();
                                  -			pixel = Math.min(Math.max(0, pixel), lineHeight * lineCount - clientHeight);
                                  -			this._scrollView(0, pixel - this._getScroll().y);
                                  -		},
                                  -		/**
                                  -		 * Scrolls the selection into view if needed.
                                  -		 *
                                  -		 * @see #getSelection
                                  -		 * @see #setSelection
                                  -		 */
                                  -		showSelection: function() {
                                  -			return this._showCaret();
                                  -		},
                                  -		
                                  -		/**************************************** Event handlers *********************************/
                                  -		_handleBodyMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			 * Prevent clicks outside of the editor from taking focus 
                                  -			 * away the editor. Note that in Firefox and Opera clicking on the 
                                  -			 * scrollbar also take focus from the editor. Other browsers
                                  -			 * do not have this problem and stopping the click over the 
                                  -			 * scrollbar for them causes mouse capture problems.
                                  -			 */
                                  -			var topNode = isOpera ? this._clientDiv : this._overlayDiv || this._editorDiv;
                                  -			
                                  -			var temp = e.target ? e.target : e.srcElement;
                                  -			while (temp) {
                                  -				if (topNode === temp) {
                                  -					return;
                                  -				}
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			if (e.stopPropagation){ e.stopPropagation(); }
                                  -			if (!isW3CEvents) {
                                  -				/* In IE 8 is not possible to prevent the default handler from running
                                  -				*  during mouse down event using usual API. The workaround is to use
                                  -				*  setCapture/releaseCapture. 
                                  -				*/ 
                                  -				topNode.setCapture();
                                  -				setTimeout(function() { topNode.releaseCapture(); }, 0);
                                  -			}
                                  -		},
                                  -		_handleBlur: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = false;
                                  -			/*
                                  -			* Bug in IE 8 and earlier. For some reason when text is deselected
                                  -			* the overflow selection at the end of some lines does not get redrawn.
                                  -			* The fix is to create a DOM element in the body to force a redraw.
                                  -			*/
                                  -			if (isIE < 9) {
                                  -				if (!this._getSelection().isEmpty()) {
                                  -					var document = this._frameDocument;
                                  -					var child = document.createElement("DIV");
                                  -					var body = document.body;
                                  -					body.appendChild(child);
                                  -					body.removeChild(child);
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleContextMenu: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleCopy: function (e) {
                                  -			if (this._ignoreCopy) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCopy(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleCut: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doCut(e)) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleDataModified: function(e) {
                                  -			this._startIME();
                                  -		},
                                  -		_handleDblclick: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var time = e.timeStamp ? e.timeStamp : new Date().getTime();
                                  -			this._lastMouseTime = time;
                                  -			if (this._clickCount !== 2) {
                                  -				this._clickCount = 2;
                                  -				this._handleMouse(e);
                                  -			}
                                  -		},
                                  -		_handleDragStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDragOver: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			e.dataTransfer.dropEffect = "none";
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDrop: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (e.preventDefault) { e.preventDefault(); }
                                  -			return false;
                                  -		},
                                  -		_handleDocFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._clientDiv.focus();
                                  -		},
                                  -		_handleFocus: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._hasFocus = true;
                                  -			/*
                                  -			* Feature in IE.  The selection is not restored when the
                                  -			* editor gets focus and the caret is always placed at the
                                  -			* beginning of the document.  The fix is to update the DOM
                                  -			* selection during the focus event.
                                  -			*/
                                  -			if (isIE) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -		},
                                  -		_handleKeyDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (isPad) {
                                  -				if (e.keyCode === 8) {
                                  -					this._doBackspace({});
                                  -					e.preventDefault();
                                  -				}
                                  -				return;
                                  -			}			
                                  -			if (e.keyCode === 229) {
                                  -				if (this.readonly) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -				this._startIME();
                                  -			} else {
                                  -				this._commitIME();
                                  -			}
                                  -			/*
                                  -			* Feature in Firefox. When a key is held down the browser sends 
                                  -			* right number of keypress events but only one keydown. This is
                                  -			* unexpected and causes the editor to only execute an action
                                  -			* just one time. The fix is to ignore the keydown event and 
                                  -			* execute the actions from the keypress handler.
                                  -			* Note: This only happens on the Mac (Firefox).
                                  -			*
                                  -			* Feature in Opera.  Opera sends keypress events even for non-printable
                                  -			* keys.  The fix is to handle actions in keypress instead of keydown.
                                  -			*/
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				this._keyDownEvent = e;
                                  -				return true;
                                  -			}
                                  -			
                                  -			if (this._doAction(e)) {
                                  -				if (e.preventDefault) {
                                  -					e.preventDefault(); 
                                  -				} else {
                                  -					e.cancelBubble = true;
                                  -					e.returnValue = false;
                                  -					e.keyCode = 0;
                                  -				}
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleKeyPress: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if ((isMac && isFirefox) || isOpera) {
                                  -				if (this._doAction(this._keyDownEvent)) {
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -			var ctrlKey = isMac ? e.metaKey : e.ctrlKey;
                                  -			if (e.charCode !== undefined) {
                                  -				if (ctrlKey) {
                                  -					switch (e.charCode) {
                                  -						/*
                                  -						* In Firefox and Safari if ctrl+v, ctrl+c ctrl+x is canceled
                                  -						* the clipboard events are not sent. The fix to allow
                                  -						* the browser to handles these key events.
                                  -						*/
                                  -						case 99://c
                                  -						case 118://v
                                  -						case 120://x
                                  -							return true;
                                  -					}
                                  -				}
                                  -			}
                                  -			var ignore = false;
                                  -			if (isMac) {
                                  -				if (e.ctrlKey || e.metaKey) { ignore = true; }
                                  -			} else {
                                  -				if (isFirefox) {
                                  -					//Firefox clears the state mask when ALT GR generates input
                                  -					if (e.ctrlKey || e.altKey) { ignore = true; }
                                  -				} else {
                                  -					//IE and Chrome only send ALT GR when input is generated
                                  -					if (e.ctrlKey ^ e.altKey) { ignore = true; }
                                  -				}
                                  -			}
                                  -			if (!ignore) {
                                  -				var key = isOpera ? e.which : (e.charCode !== undefined ? e.charCode : e.keyCode);
                                  -				if (key !== 0) {
                                  -					this._doContent(String.fromCharCode (key));
                                  -					if (e.preventDefault) { e.preventDefault(); }
                                  -					return false;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleKeyUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			
                                  -			// don't commit for space (it happens during JP composition)  
                                  -			if (e.keyCode === 13) {
                                  -				this._commitIME();
                                  -			}
                                  -		},
                                  -		_handleMouse: function (e) {
                                  -			var target = this._frameWindow;
                                  -			if (isIE) { target = this._clientDiv; }
                                  -			if (this._overlayDiv) {
                                  -				var self = this;
                                  -				setTimeout(function () {
                                  -					self.focus();
                                  -				}, 0);
                                  -			}
                                  -			if (this._clickCount === 1) {
                                  -				this._setGrab(target);
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -			} else {
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(target); }
                                  -				
                                  -				this._doubleClickSelection = null;
                                  -				this._setSelectionTo(e.clientX, e.clientY, e.shiftKey);
                                  -				this._doubleClickSelection = this._getSelection();
                                  -			}
                                  -		},
                                  -		_handleMouseDown: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			this._commitIME();
                                  -			if (left) {
                                  -				this._isMouseDown = true;
                                  -				var deltaX = Math.abs(this._lastMouseX - e.clientX);
                                  -				var deltaY = Math.abs(this._lastMouseY - e.clientY);
                                  -				var time = e.timeStamp ? e.timeStamp : new Date().getTime();  
                                  -				if ((time - this._lastMouseTime) <= this._clickTime && deltaX <= this._clickDist && deltaY <= this._clickDist) {
                                  -					this._clickCount++;
                                  -				} else {
                                  -					this._clickCount = 1;
                                  -				}
                                  -				this._lastMouseX = e.clientX;
                                  -				this._lastMouseY = e.clientY;
                                  -				this._lastMouseTime = time;
                                  -				this._handleMouse(e);
                                  -				if (isOpera) {
                                  -						if (!this._hasFocus) {
                                  -							this.focus();
                                  -						}
                                  -						e.preventDefault();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseMove: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			/*
                                  -			* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -			* for a doule-click is:
                                  -			*
                                  -			*	down
                                  -			*	up
                                  -			*	up
                                  -			*	dblclick
                                  -			*
                                  -			* Given that the mouse down/up events are not balanced, it is not possible to
                                  -			* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -			* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -			*
                                  -			* In order to detect double-click and drag gestures, it is necessary to send
                                  -			* a mouse down event from mouse move when the button is still down and isMouseDown
                                  -			* flag is not set.
                                  -			*/
                                  -			if (!isW3CEvents) {
                                  -				if (e.button === 0) {
                                  -					this._setGrab(null);
                                  -					return true;
                                  -				}
                                  -				if (!this._isMouseDown && e.button === 1 && (this._clickCount & 1) !== 0) {
                                  -					this._clickCount = 2;
                                  -					return this._handleMouse(e, this._clickCount);
                                  -				}
                                  -			}
                                  -			
                                  -			var x = e.clientX;
                                  -			var y = e.clientY;
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var width = this._getClientWidth (), height = this._getClientHeight();
                                  -			var leftEdge = editorRect.left + editorPad.left;
                                  -			var topEdge = editorRect.top + editorPad.top;
                                  -			var rightEdge = editorRect.left + editorPad.left + width;
                                  -			var bottomEdge = editorRect.top + editorPad.top + height;
                                  -			var model = this._model;
                                  -			var caretLine = model.getLineAtOffset(this._getSelection().getCaret());
                                  -			if (y < topEdge && caretLine !== 0) {
                                  -				this._doAutoScroll("up", x, y - topEdge);
                                  -			} else if (y > bottomEdge && caretLine !== model.getLineCount() - 1) {
                                  -				this._doAutoScroll("down", x, y - bottomEdge);
                                  -			} else if (x < leftEdge) {
                                  -				this._doAutoScroll("left", x - leftEdge, y);
                                  -			} else if (x > rightEdge) {
                                  -				this._doAutoScroll("right", x - rightEdge, y);
                                  -			} else {
                                  -				this._endAutoScroll();
                                  -				this._setSelectionTo(x, y, true);
                                  -				/*
                                  -				* Feature in IE. IE does redraw the selection background right
                                  -				* away after the selection changes because of mouse move events.
                                  -				* The fix is to call getBoundingClientRect() on the
                                  -				* body element to force the selection to be redraw. Some how
                                  -				* calling this method forces a redraw.
                                  -				*/
                                  -				if (isIE) {
                                  -					var body = this._frameDocument.body;
                                  -					body.getBoundingClientRect();
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleMouseUp: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			this._endAutoScroll();
                                  -			var left = e.which ? e.button === 0 : e.button === 1;
                                  -			if (left) {
                                  -				this._isMouseDown=false;
                                  -				
                                  -				/*
                                  -				* Feature in IE8 and older, the sequence of events in the IE8 event model
                                  -				* for a doule-click is:
                                  -				*
                                  -				*	down
                                  -				*	up
                                  -				*	up
                                  -				*	dblclick
                                  -				*
                                  -				* Given that the mouse down/up events are not balanced, it is not possible to
                                  -				* grab on mouse down and ungrab on mouse up.  The fix is to grab on the first
                                  -				* mouse down and ungrab on mouse move when the button 1 is not set.
                                  -				*/
                                  -				if (isW3CEvents) { this._setGrab(null); }
                                  -			}
                                  -		},
                                  -		_handleMouseWheel: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var lineHeight = this._getLineHeight();
                                  -			var pixelX = 0, pixelY = 0;
                                  -			// Note: On the Mac the correct behaviour is to scroll by pixel.
                                  -			if (isFirefox) {
                                  -				var pixel;
                                  -				if (isMac) {
                                  -					pixel = e.detail * 3;
                                  -				} else {
                                  -					var limit = 256;
                                  -					pixel = Math.max(-limit, Math.min(limit, e.detail)) * lineHeight;
                                  -				}
                                  -				if (e.axis === e.HORIZONTAL_AXIS) {
                                  -					pixelX = pixel;
                                  -				} else {
                                  -					pixelY = pixel;
                                  -				}
                                  -			} else {
                                  -				//Webkit
                                  -				if (isMac) {
                                  -					/*
                                  -					* In Safari, the wheel delta is a multiple of 120. In order to
                                  -					* convert delta to pixel values, it is necessary to divide delta
                                  -					* by 40.
                                  -					*
                                  -					* In Chrome, the wheel delta depends on the type of the mouse. In
                                  -					* general, it is the pixel value for Mac mice and track pads, but
                                  -					* it is a multiple of 120 for other mice. There is no presise
                                  -					* way to determine if it is pixel value or a multiple of 120.
                                  -					* 
                                  -					* Note that the current approach does not calculate the correct
                                  -					* pixel value for Mac mice when the delta is a multiple of 120.
                                  -					*/
                                  -					var denominatorX = 40, denominatorY = 40;
                                  -					if (isChrome) {
                                  -						if (e.wheelDeltaX % 120 !== 0) { denominatorX = 1; }
                                  -						if (e.wheelDeltaY % 120 !== 0) { denominatorY = 1; }
                                  -					}
                                  -					pixelX = -e.wheelDeltaX / denominatorX;
                                  -					if (-1 < pixelX && pixelX < 0) { pixelX = -1; }
                                  -					if (0 < pixelX && pixelX < 1) { pixelX = 1; }
                                  -					pixelY = -e.wheelDeltaY / denominatorY;
                                  -					if (-1 < pixelY && pixelY < 0) { pixelY = -1; }
                                  -					if (0 < pixelY && pixelY < 1) { pixelY = 1; }
                                  -				} else {
                                  -					pixelX = -e.wheelDeltaX;
                                  -					var linesToScroll = 8;
                                  -					pixelY = (-e.wheelDeltaY / 120 * linesToScroll) * lineHeight;
                                  -				}
                                  -			}
                                  -			/* 
                                  -			* Feature in Safari. If the event target is removed from the DOM 
                                  -			* safari stops smooth scrolling. The fix is keep the element target
                                  -			* in the DOM and remove it on a later time. 
                                  -			*
                                  -			* Note: Using a timer is not a solution, because the timeout needs to
                                  -			* be at least as long as the gesture (which is too long).
                                  -			*/
                                  -			if (isSafari) {
                                  -				var lineDiv = e.target;
                                  -				while (lineDiv.lineIndex === undefined) { lineDiv = lineDiv.parentNode; }
                                  -				this._mouseWheelLine = lineDiv;
                                  -			}
                                  -			var oldScroll = this._getScroll();
                                  -			this._scrollView(pixelX, pixelY);
                                  -			var newScroll = this._getScroll();
                                  -			if (isSafari) { this._mouseWheelLine = null; }
                                  -			if (oldScroll.x !== newScroll.x || oldScroll.y !== newScroll.y) {
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handlePaste: function (e) {
                                  -			if (this._ignorePaste) { return; }
                                  -			if (!e) { e = window.event; }
                                  -			if (this._doPaste(e)) {
                                  -				if (isIE) {
                                  -					/*
                                  -					 * Bug in IE,  
                                  -					 */
                                  -					var self = this;
                                  -					setTimeout(function() {self._updateDOMSelection();}, 0);
                                  -				}
                                  -				if (e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleResize: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var document = this._frameDocument;
                                  -			var element = isIE < 9 ? document.documentElement : document.body;
                                  -			var newWidth = element.clientWidth;
                                  -			var newHeight = element.clientHeight;
                                  -			if (this._editorWidth !== newWidth || this._editorHeight !== newHeight) {
                                  -				this._editorWidth = newWidth;
                                  -				this._editorHeight = newHeight;
                                  -//				this._queueUpdatePage();
                                  -				this._updatePage();
                                  -			}
                                  -		},
                                  -		_handleRulerEvent: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			var target = e.target ? e.target : e.srcElement;
                                  -			var lineIndex = target.lineIndex;
                                  -			var element = target;
                                  -			while (element && !element._ruler) {
                                  -				if (lineIndex === undefined && element.lineIndex !== undefined) {
                                  -					lineIndex = element.lineIndex;
                                  -				}
                                  -				element = element.parentNode;
                                  -			}
                                  -			var ruler = element ? element._ruler : null;
                                  -			if (isPad && lineIndex === undefined && ruler && ruler.getOverview() === "document") {
                                  -				var buttonHeight = 17;
                                  -				var clientHeight = this._getClientHeight ();
                                  -				var lineHeight = this._getLineHeight ();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -				var pixels = this._model.getLineCount () * lineHeight;
                                  -				this.setTopPixel(Math.floor((e.clientY - buttonHeight - lineHeight) * pixels / trackHeight));
                                  -			}
                                  -			if (ruler) {
                                  -				switch (e.type) {
                                  -					case "click":
                                  -						if (ruler.onClick) { ruler.onClick(lineIndex, e); }
                                  -						break;
                                  -					case "dblclick": 
                                  -						if (ruler.onDblClick) { ruler.onDblClick(lineIndex, e); }
                                  -						break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_handleScroll: function () {
                                  -			this._doScroll(this._getScroll());
                                  -		},
                                  -		_handleSelectStart: function (e) {
                                  -			if (!e) { e = window.event; }
                                  -			if (this._ignoreSelect) {
                                  -				if (e && e.preventDefault) { e.preventDefault(); }
                                  -				return false;
                                  -			}
                                  -		},
                                  -		_handleInput: function (e) {
                                  -			var textArea = this._textArea;
                                  -			this._doContent(textArea.value);
                                  -			textArea.selectionStart = textArea.selectionEnd = 0;
                                  -			textArea.value = "";
                                  -			e.preventDefault();
                                  -		},
                                  -		_handleTextInput: function (e) {
                                  -			this._doContent(e.data);
                                  -			e.preventDefault();
                                  -		},
                                  -		_touchConvert: function (touch) {
                                  -			var rect = this._frame.getBoundingClientRect();
                                  -			var body = this._parentDocument.body;
                                  -			return {left: touch.clientX - rect.left - body.scrollLeft, top: touch.clientY - rect.top - body.scrollTop};
                                  -		},
                                  -		_handleTouchStart: function (e) {
                                  -			var touches = e.touches, touch, pt, sel;
                                  -			this._touchMoved = false;
                                  -			this._touchStartScroll = undefined;
                                  -			if (touches.length === 1) {
                                  -				touch = touches[0];
                                  -				var pageX = touch.pageX;
                                  -				var pageY = touch.pageY;
                                  -				this._touchStartX = pageX;
                                  -				this._touchStartY = pageY;
                                  -				this._touchStartTime = e.timeStamp;
                                  -				this._touchStartScroll = this._getScroll();
                                  -				sel = this._getSelection();
                                  -				pt = this._touchConvert(touches[0]);
                                  -				this._touchGesture = "none";
                                  -				if (!sel.isEmpty()) {
                                  -					if (this._hitOffset(sel.end, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendEnd";
                                  -					} else if (this._hitOffset(sel.start, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendStart";
                                  -					}
                                  -				}
                                  -				if (this._touchGesture === "none") {
                                  -					var textArea = this._textArea;
                                  -					textArea.value = "";
                                  -					textArea.style.left = "-1000px";
                                  -					textArea.style.top = "-1000px";
                                  -					textArea.style.width = "3000px";
                                  -					textArea.style.height = "3000px";
                                  -					var self = this;
                                  -					var f = function() {
                                  -						self._touchTimeout = null;
                                  -						self._clickCount = 1;
                                  -						self._setSelectionTo(pt.left, pt.top, false);
                                  -					};
                                  -					this._touchTimeout = setTimeout(f, 200);
                                  -				}
                                  -			} else if (touches.length === 2) {
                                  -				this._touchGesture = "select";
                                  -				if (this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -				}
                                  -				pt = this._touchConvert(touches[0]);
                                  -				var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				pt = this._touchConvert(touches[1]);
                                  -				var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				sel = this._getSelection();
                                  -				sel.setCaret(offset1);
                                  -				sel.extend(offset2);
                                  -				this._setSelection(sel, true, true);
                                  -			}
                                  -			//Cannot prevent to show maginifier
                                  -//			e.preventDefault();
                                  -		},
                                  -		_handleTouchMove: function (e) {
                                  -			this._touchMoved = true;
                                  -			var touches = e.touches, pt, sel;
                                  -			if (touches.length === 1) {
                                  -				var touch = touches[0];
                                  -				var pageX = touch.pageX;
                                  -				var pageY = touch.pageY;
                                  -				var deltaX = this._touchStartX - pageX;
                                  -				var deltaY = this._touchStartY - pageY;
                                  -				pt = this._touchConvert(touch);
                                  -				sel = this._getSelection();
                                  -				if (this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -				}
                                  -				if (this._touchGesture === "none") {
                                  -					if ((e.timeStamp - this._touchStartTime) < 200 && (Math.abs(deltaX) > 5 || Math.abs(deltaY) > 5)) {
                                  -						this._touchGesture = "scroll";
                                  -					} else {
                                  -						this._touchGesture = "caret";
                                  -					}
                                  -				}
                                  -				if (this._touchGesture === "select") {
                                  -					if (this._hitOffset(sel.end, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendEnd";
                                  -					} else if (this._hitOffset(sel.start, pt.left, pt.top)) {
                                  -						this._touchGesture = "extendStart";
                                  -					} else {
                                  -						this._touchGesture = "caret";
                                  -					}
                                  -				}
                                  -				switch (this._touchGesture) {
                                  -					case "scroll":
                                  -						this._touchStartX = pageX;
                                  -						this._touchStartY = pageY;
                                  -						this._scrollView(deltaX, deltaY);
                                  -						break;
                                  -					case "extendStart":
                                  -					case "extendEnd":
                                  -						this._clickCount = 1;
                                  -						var lineIndex = this._getYToLine(pt.top);
                                  -						var offset = this._getXToOffset(lineIndex, pt.left);
                                  -						sel.setCaret(this._touchGesture === "extendStart" ? sel.end : sel.start);
                                  -						sel.extend(offset);
                                  -						if (offset >= sel.end && this._touchGesture === "extendStart") {
                                  -							this._touchGesture = "extendEnd";
                                  -						}
                                  -						if (offset <= sel.start && this._touchGesture === "extendEnd") {
                                  -							this._touchGesture = "extendStart";
                                  -						}
                                  -						this._setSelection(sel, true, true);
                                  -						break;
                                  -					case "caret":
                                  -						this._setSelectionTo(pt.left, pt.top, false);
                                  -						break;
                                  -				}
                                  -			} else if (touches.length === 2) {
                                  -				pt = this._touchConvert(touches[0]);
                                  -				var offset1 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				pt = this._touchConvert(touches[1]);
                                  -				var offset2 = this._getXToOffset(this._getYToLine(pt.top), pt.left);
                                  -				sel = this._getSelection();
                                  -				sel.setCaret(offset1);
                                  -				sel.extend(offset2);
                                  -				this._setSelection(sel, true, true);
                                  -			}
                                  -			e.preventDefault();
                                  -		},
                                  -		_handleTouchEnd: function (e) {
                                  -			if (!this._touchMoved) {
                                  -				if (e.touches.length === 0 && e.changedTouches.length === 1 && this._touchTimeout) {
                                  -					clearTimeout(this._touchTimeout);
                                  -					this._touchTimeout = null;
                                  -					var touch = e.changedTouches[0];
                                  -					this._clickCount = 1;
                                  -					var pt = this._touchConvert(touch);
                                  -					this._setSelectionTo(pt.left, pt.top, false);
                                  -				}
                                  -			}
                                  -			if (e.touches.length === 0) {
                                  -				var self = this;
                                  -				setTimeout(function() {
                                  -					var selection = self._getSelection();
                                  -					var text = self._model.getText(selection.start, selection.end);
                                  -					var textArea = self._textArea;
                                  -					textArea.value = text;
                                  -					textArea.selectionStart = 0;
                                  -					textArea.selectionEnd = text.length;
                                  -					if (!selection.isEmpty()) {
                                  -						var touchRect = self._touchDiv.getBoundingClientRect();
                                  -						var bounds = self._getOffsetBounds(selection.start);
                                  -						textArea.style.left = (touchRect.width / 2) + "px";
                                  -						textArea.style.top = ((bounds.top > 40 ? bounds.top - 30 : bounds.top + 30)) + "px";
                                  -					}
                                  -				}, 0);
                                  -			}
                                  -			e.preventDefault();
                                  -		},
                                  -
                                  -		/************************************ Actions ******************************************/
                                  -		_doAction: function (e) {
                                  -			var keyBindings = this._keyBindings;
                                  -			for (var i = 0; i < keyBindings.length; i++) {
                                  -				var kb = keyBindings[i];
                                  -				if (kb.keyBinding.match(e)) {
                                  -					if (kb.name) {
                                  -						var actions = this._actions;
                                  -						for (var j = 0; j < actions.length; j++) {
                                  -							var a = actions[j];
                                  -							if (a.name === kb.name) {
                                  -								if (a.userHandler) {
                                  -									if (!a.userHandler()) {
                                  -										if (a.defaultHandler) {
                                  -											a.defaultHandler();
                                  -										}
                                  -									}
                                  -								} else if (a.defaultHandler) {
                                  -									a.defaultHandler();
                                  -								}
                                  -								break;
                                  -							}
                                  -						}
                                  -					}
                                  -					return true;
                                  -				}
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_doBackspace: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineStart(lineIndex)) {
                                  -					if (lineIndex > 0) {
                                  -						selection.extend(model.getLineEnd(lineIndex - 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, -1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doContent: function (text) {
                                  -			var selection = this._getSelection();
                                  -			this._modifyContent({text: text, start: selection.start, end: selection.end, _ignoreDOMSelection: true}, true);
                                  -		},
                                  -		_doCopy: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doCursorNext: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("next")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineEnd(lineIndex)) {
                                  -				if (lineIndex + 1 < model.getLineCount()) {
                                  -					selection.extend(model.getLineStart(lineIndex + 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, 1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCursorPrevious: function (args) {
                                  -			if (!args.select) {
                                  -				if (this._clearSelection("previous")) { return true; }
                                  -			}
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (caret === model.getLineStart(lineIndex)) {
                                  -				if (lineIndex > 0) {
                                  -					selection.extend(model.getLineEnd(lineIndex - 1));
                                  -				}
                                  -			} else {
                                  -				selection.extend(this._getOffset(caret, args.word, -1));
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doCut: function (e) {
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				var text = this._model.getText(selection.start, selection.end);
                                  -				this._doContent("");
                                  -				return this._setClipboardText(text, e);
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doDelete: function (args) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) {
                                  -				var model = this._model;
                                  -				var caret = selection.getCaret();
                                  -				var lineIndex = model.getLineAtOffset(caret);
                                  -				if (caret === model.getLineEnd (lineIndex)) {
                                  -					if (lineIndex + 1 < model.getLineCount()) {
                                  -						selection.extend(model.getLineStart(lineIndex + 1));
                                  -					}
                                  -				} else {
                                  -					selection.extend(this._getOffset(caret, args.word, 1));
                                  -				}
                                  -			}
                                  -			this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			return true;
                                  -		},
                                  -		_doEnd: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(model.getCharCount());
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineEnd(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doEnter: function (args) {
                                  -			var model = this._model;
                                  -			this._doContent(model.getLineDelimiter()); 
                                  -			return true;
                                  -		},
                                  -		_doHome: function (args) {
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			if (args.ctrl) {
                                  -				selection.extend(0);
                                  -			} else {
                                  -				var lineIndex = model.getLineAtOffset(selection.getCaret());
                                  -				selection.extend(model.getLineStart(lineIndex)); 
                                  -			}
                                  -			if (!args.select) { selection.collapse(); }
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_doLineDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex + 1 < model.getLineCount()) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex + 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doLineUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var lineIndex = model.getLineAtOffset(caret);
                                  -			if (lineIndex > 0) {
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(lineIndex - 1, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, true, true);
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageDown: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var lineCount = model.getLineCount();
                                  -			if (caretLine < lineCount - 1) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -				scrollLines = Math.max(1, scrollLines);
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine + scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalMaximum = lineCount * lineHeight;
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = verticalScrollOffset + scrollLines * lineHeight;
                                  -				if (scrollOffset + clientHeight > verticalMaximum) {
                                  -					scrollOffset = verticalMaximum - clientHeight;
                                  -				} 
                                  -				if (scrollOffset > verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPageUp: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var caret = selection.getCaret();
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			if (caretLine > 0) {
                                  -				var clientHeight = this._getClientHeight();
                                  -				var lineHeight = this._getLineHeight();
                                  -				var lines = Math.floor(clientHeight / lineHeight);
                                  -				var scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -				var x = this._columnX;
                                  -				if (x === -1 || args.select) {
                                  -					x = this._getOffsetToX(caret);
                                  -				}
                                  -				selection.extend(this._getXToOffset(caretLine - scrollLines, x));
                                  -				if (!args.select) { selection.collapse(); }
                                  -				this._setSelection(selection, false, false);
                                  -				
                                  -				var verticalScrollOffset = this._getScroll().y;
                                  -				var scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * lineHeight);
                                  -				if (scrollOffset < verticalScrollOffset) {
                                  -					this._scrollView(0, scrollOffset - verticalScrollOffset);
                                  -				} else {
                                  -					this._updateDOMSelection();
                                  -				}
                                  -				this._columnX = x;//fix x by scrolling
                                  -			}
                                  -			return true;
                                  -		},
                                  -		_doPaste: function(e) {
                                  -			var text = this._getClipboardText(e);
                                  -			if (text) {
                                  -				this._doContent(text);
                                  -			}
                                  -			return text !== null;
                                  -		},
                                  -		_doScroll: function (scroll) {
                                  -			var oldX = this._hScroll;
                                  -			var oldY = this._vScroll;
                                  -			if (oldX !== scroll.x || (oldY !== scroll.y)) {
                                  -				this._hScroll = scroll.x;
                                  -				this._vScroll = scroll.y;
                                  -				this._commitIME();
                                  -				this._updatePage();
                                  -				var e = {
                                  -					oldValue: {x: oldX, y: oldY},
                                  -					newValue: scroll
                                  -				};
                                  -				this.onScroll(e);
                                  -			}
                                  -		},
                                  -		_doSelectAll: function (args) {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			selection.setCaret(0);
                                  -			selection.extend(model.getCharCount());
                                  -			this._setSelection(selection, false);
                                  -			return true;
                                  -		},
                                  -		_doTab: function (args) {
                                  -			this._doContent("\t"); 
                                  -			return true;
                                  -		},
                                  -		
                                  -		/************************************ Internals ******************************************/
                                  -		_applyStyle: function(style, node) {
                                  -			if (!style) {
                                  -				return;
                                  -			}
                                  -			if (style.styleClass) {
                                  -				node.className = style.styleClass;
                                  -			}
                                  -			var properties = style.style;
                                  -			if (properties) {
                                  -				for (var s in properties) {
                                  -					if (properties.hasOwnProperty(s)) {
                                  -						node.style[s] = properties[s];
                                  -					}
                                  -				}
                                  -			}
                                  -		},
                                  -		_autoScroll: function () {
                                  -			var selection = this._getSelection();
                                  -			var line;
                                  -			var x = this._autoScrollX;
                                  -			if (this._autoScrollDir === "up" || this._autoScrollDir === "down") {
                                  -				var scroll = this._autoScrollY / this._getLineHeight();
                                  -				scroll = scroll < 0 ? Math.floor(scroll) : Math.ceil(scroll);
                                  -				line = this._model.getLineAtOffset(selection.getCaret());
                                  -				line = Math.max(0, Math.min(this._model.getLineCount() - 1, line + scroll));
                                  -			} else if (this._autoScrollDir === "left" || this._autoScrollDir === "right") {
                                  -				line = this._getYToLine(this._autoScrollY);
                                  -				x += this._getOffsetToX(selection.getCaret());
                                  -			}
                                  -			selection.extend(this._getXToOffset(line, x));
                                  -			this._setSelection(selection, true);
                                  -		},
                                  -		_autoScrollTimer: function () {
                                  -			this._autoScroll();
                                  -			var self = this;
                                  -			this._autoScrollTimerID = setTimeout(function () {self._autoScrollTimer();}, this._AUTO_SCROLL_RATE);
                                  -		},
                                  -		_calculateLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var parent = this._clientDiv;
                                  -			var span1 = document.createElement("SPAN");
                                  -			span1.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span1);
                                  -			var br = document.createElement("BR");
                                  -			parent.appendChild(br);
                                  -			var span2 = document.createElement("SPAN");
                                  -			span2.appendChild(document.createTextNode("W"));
                                  -			parent.appendChild(span2);
                                  -			var rect1 = span1.getBoundingClientRect();
                                  -			var rect2 = span2.getBoundingClientRect();
                                  -			var lineHeight = rect2.top - rect1.top;
                                  -			parent.removeChild(span1);
                                  -			parent.removeChild(br);
                                  -			parent.removeChild(span2);
                                  -			return lineHeight; 
                                  -		},
                                  -		_clearSelection: function (direction) {
                                  -			var selection = this._getSelection();
                                  -			if (selection.isEmpty()) { return false; }
                                  -			if (direction === "next") {
                                  -				selection.start = selection.end;
                                  -			} else {
                                  -				selection.end = selection.start;
                                  -			}
                                  -			this._setSelection(selection, true);
                                  -			return true;
                                  -		},
                                  -		_commitIME: function () {
                                  -			if (this._imeOffset === -1) { return; }
                                  -			// make the state of the IME match the state the editor expects it be in
                                  -			// when the editor commits the text and IME also need to be committed
                                  -			// this can be accomplished by changing the focus around
                                  -			this._scrollDiv.focus();
                                  -			this._clientDiv.focus();
                                  -			
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(this._imeOffset);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var newText = this._getDOMText(lineIndex);
                                  -			var oldText = model.getLine(lineIndex);
                                  -			var start = this._imeOffset - lineStart;
                                  -			var end = start + newText.length - oldText.length;
                                  -			if (start !== end) {
                                  -				var insertText = newText.substring(start, end);
                                  -				this._doContent(insertText);
                                  -			}
                                  -			this._imeOffset = -1;
                                  -		},
                                  -		_createActions: function () {
                                  -			var KeyBinding = eclipse.KeyBinding;
                                  -			//no duplicate keybindings
                                  -			var bindings = this._keyBindings = [];
                                  -
                                  -			// Cursor Navigation
                                  -			bindings.push({name: "lineUp",		keyBinding: new KeyBinding(38), predefined: true});
                                  -			bindings.push({name: "lineDown",	keyBinding: new KeyBinding(40), predefined: true});
                                  -			bindings.push({name: "charPrevious",	keyBinding: new KeyBinding(37), predefined: true});
                                  -			bindings.push({name: "charNext",	keyBinding: new KeyBinding(39), predefined: true});
                                  -			bindings.push({name: "pageUp",		keyBinding: new KeyBinding(33), predefined: true});
                                  -			bindings.push({name: "pageDown",	keyBinding: new KeyBinding(34), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, null, null, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, null, null, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(38, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(40, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "lineStart",	keyBinding: new KeyBinding(36), predefined: true});
                                  -				bindings.push({name: "lineEnd",		keyBinding: new KeyBinding(35), predefined: true});
                                  -				bindings.push({name: "wordPrevious",	keyBinding: new KeyBinding(37, true), predefined: true});
                                  -				bindings.push({name: "wordNext",	keyBinding: new KeyBinding(39, true), predefined: true});
                                  -				bindings.push({name: "textStart",	keyBinding: new KeyBinding(36, true), predefined: true});
                                  -				bindings.push({name: "textEnd",		keyBinding: new KeyBinding(35, true), predefined: true});
                                  -			}
                                  -
                                  -			// Select Cursor Navigation
                                  -			bindings.push({name: "selectLineUp",		keyBinding: new KeyBinding(38, null, true), predefined: true});
                                  -			bindings.push({name: "selectLineDown",		keyBinding: new KeyBinding(40, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharPrevious",	keyBinding: new KeyBinding(37, null, true), predefined: true});
                                  -			bindings.push({name: "selectCharNext",		keyBinding: new KeyBinding(39, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageUp",		keyBinding: new KeyBinding(33, null, true), predefined: true});
                                  -			bindings.push({name: "selectPageDown",		keyBinding: new KeyBinding(34, null, true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "selectLineStart",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",	keyBinding: new KeyBinding(39, null, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",	keyBinding: new KeyBinding(38, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(40, true, true), predefined: true});
                                  -			} else {
                                  -				bindings.push({name: "selectLineStart",		keyBinding: new KeyBinding(36, null, true), predefined: true});
                                  -				bindings.push({name: "selectLineEnd",		keyBinding: new KeyBinding(35, null, true), predefined: true});
                                  -				bindings.push({name: "selectWordPrevious",	keyBinding: new KeyBinding(37, true, true), predefined: true});
                                  -				bindings.push({name: "selectWordNext",		keyBinding: new KeyBinding(39, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextStart",		keyBinding: new KeyBinding(36, true, true), predefined: true});
                                  -				bindings.push({name: "selectTextEnd",		keyBinding: new KeyBinding(35, true, true), predefined: true});
                                  -			}
                                  -
                                  -			//Misc
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8), predefined: true});
                                  -			bindings.push({name: "deletePrevious",		keyBinding: new KeyBinding(8, null, true), predefined: true});
                                  -			bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true), predefined: true});
                                  -			bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, true, true), predefined: true});
                                  -			bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, true), predefined: true});
                                  -			bindings.push({name: "tab",			keyBinding: new KeyBinding(9), predefined: true});
                                  -			bindings.push({name: "enter",			keyBinding: new KeyBinding(13), predefined: true});
                                  -			bindings.push({name: "selectAll",		keyBinding: new KeyBinding('a', true), predefined: true});
                                  -			if (isMac) {
                                  -				bindings.push({name: "deleteNext",		keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordPrevious",	keyBinding: new KeyBinding(8, null, null, true), predefined: true});
                                  -				bindings.push({name: "deleteWordNext",		keyBinding: new KeyBinding(46, null, null, true), predefined: true});
                                  -			}
                                  -				
                                  -			/*
                                  -			* Feature in IE/Chrome: prevent ctrl+'u' and ctrl+'i' from applying styles to the text.
                                  -			*
                                  -			* Note that Chrome applies the styles on the Mac with Ctrl instead of Cmd.
                                  -			*/
                                  -			var isMacChrome = isMac && isChrome;
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('u', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -			bindings.push({name: null, keyBinding: new KeyBinding('i', !isMacChrome, false, false, isMacChrome), predefined: true});
                                  -
                                  -			if (isFirefox) {
                                  -				bindings.push({name: "copy", keyBinding: new KeyBinding(45, true), predefined: true});
                                  -				bindings.push({name: "paste", keyBinding: new KeyBinding(45, null, true), predefined: true});
                                  -				bindings.push({name: "cut", keyBinding: new KeyBinding(46, null, true), predefined: true});
                                  -			}
                                  -
                                  -			//1 to 1, no duplicates
                                  -			var self = this;
                                  -			this._actions = [
                                  -				{name: "lineUp",		defaultHandler: function() {return self._doLineUp({select: false});}},
                                  -				{name: "lineDown",		defaultHandler: function() {return self._doLineDown({select: false});}},
                                  -				{name: "lineStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:false});}},
                                  -				{name: "lineEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:false});}},
                                  -				{name: "charPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:false});}},
                                  -				{name: "charNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:false});}},
                                  -				{name: "pageUp",		defaultHandler: function() {return self._doPageUp({select: false});}},
                                  -				{name: "pageDown",		defaultHandler: function() {return self._doPageDown({select: false});}},
                                  -				{name: "wordPrevious",		defaultHandler: function() {return self._doCursorPrevious({select: false, word:true});}},
                                  -				{name: "wordNext",		defaultHandler: function() {return self._doCursorNext({select: false, word:true});}},
                                  -				{name: "textStart",		defaultHandler: function() {return self._doHome({select: false, ctrl:true});}},
                                  -				{name: "textEnd",		defaultHandler: function() {return self._doEnd({select: false, ctrl:true});}},
                                  -				
                                  -				{name: "selectLineUp",		defaultHandler: function() {return self._doLineUp({select: true});}},
                                  -				{name: "selectLineDown",	defaultHandler: function() {return self._doLineDown({select: true});}},
                                  -				{name: "selectLineStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:false});}},
                                  -				{name: "selectLineEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:false});}},
                                  -				{name: "selectCharPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:false});}},
                                  -				{name: "selectCharNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:false});}},
                                  -				{name: "selectPageUp",		defaultHandler: function() {return self._doPageUp({select: true});}},
                                  -				{name: "selectPageDown",	defaultHandler: function() {return self._doPageDown({select: true});}},
                                  -				{name: "selectWordPrevious",	defaultHandler: function() {return self._doCursorPrevious({select: true, word:true});}},
                                  -				{name: "selectWordNext",	defaultHandler: function() {return self._doCursorNext({select: true, word:true});}},
                                  -				{name: "selectTextStart",	defaultHandler: function() {return self._doHome({select: true, ctrl:true});}},
                                  -				{name: "selectTextEnd",		defaultHandler: function() {return self._doEnd({select: true, ctrl:true});}},
                                  -				
                                  -				{name: "deletePrevious",	defaultHandler: function() {return self._doBackspace({word:false});}},
                                  -				{name: "deleteNext",		defaultHandler: function() {return self._doDelete({word:false});}},
                                  -				{name: "deleteWordPrevious",	defaultHandler: function() {return self._doBackspace({word:true});}},
                                  -				{name: "deleteWordNext",	defaultHandler: function() {return self._doDelete({word:true});}},
                                  -				{name: "tab",			defaultHandler: function() {return self._doTab();}},
                                  -				{name: "enter",			defaultHandler: function() {return self._doEnter();}},
                                  -				{name: "selectAll",		defaultHandler: function() {return self._doSelectAll();}},
                                  -				{name: "copy",			defaultHandler: function() {return self._doCopy();}},
                                  -				{name: "cut",			defaultHandler: function() {return self._doCut();}},
                                  -				{name: "paste",			defaultHandler: function() {return self._doPaste();}}
                                  -			];
                                  -		},
                                  -		_createLine: function(parent, sibling, document, lineIndex, model) {
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var e = {lineIndex: lineIndex, lineText: lineText, lineStart: lineStart};
                                  -			this.onLineStyle(e);
                                  -			var child = document.createElement("DIV");
                                  -			child.lineIndex = lineIndex;
                                  -			this._applyStyle(e.style, child);
                                  -
                                  -			/*
                                  -			* Firefox does not extend the selection at the end of the line when the
                                  -			* line is fully selected. The fix is to add an extra space at the end of
                                  -			* the line.
                                  -			*/
                                  -			var extendSelection = isFirefox || isOpera || isIE >= 9;
                                  -			if (lineText.length === 0) {
                                  -				/*
                                  -				* When the span is empty the height of the line div becomes zero.
                                  -				* The fix is use a zero-width non-break space to preserve the default
                                  -				* height in the line div. Note that in Chrome this character shows
                                  -				* a glyph, for this reason the zero-width non-joiner character is
                                  -				* used instead.
                                  -				*/
                                  -				if (!extendSelection) {
                                  -					var span = document.createElement("SPAN");
                                  -					span.ignoreChars = 1;
                                  -					span.appendChild(document.createTextNode(isWebkit ? "\u200C" : "\uFEFF"));
                                  -					child.appendChild(span);
                                  -				}
                                  -			} else {
                                  -				var start = 0;
                                  -				var tabSize = this._tabSize;
                                  -				if (tabSize && tabSize !== 8) {
                                  -					var tabIndex = lineText.indexOf("\t"), ignoreChars = 0;
                                  -					while (tabIndex !== -1) {
                                  -						this._createRange(child, document, e.ranges, start, tabIndex, lineText, lineStart);
                                  -						var spacesCount = tabSize - ((tabIndex + ignoreChars) % tabSize);
                                  -						var spaces = "\u00A0";
                                  -						for (var i = 1; i < spacesCount; i++) {
                                  -							spaces += " ";
                                  -						}
                                  -						var tabSpan = document.createElement("SPAN");
                                  -						tabSpan.appendChild(document.createTextNode(spaces));
                                  -						tabSpan.ignoreChars = spacesCount - 1;
                                  -						ignoreChars += tabSpan.ignoreChars;
                                  -						if (e.ranges) {
                                  -							for (var j = 0; j < e.ranges.length; j++) {
                                  -								var range = e.ranges[j];
                                  -								var styleStart = range.start - lineStart;
                                  -								var styleEnd = range.end - lineStart;
                                  -								if (styleStart > tabIndex) { break; } 
                                  -								if (styleStart <= tabIndex && tabIndex < styleEnd) {
                                  -									this._applyStyle(range.style, tabSpan);
                                  -									break;
                                  -								}
                                  -							}
                                  -						} 
                                  -						child.appendChild(tabSpan);
                                  -						start = tabIndex + 1;
                                  -						tabIndex = lineText.indexOf("\t", start);
                                  -					}
                                  -				}
                                  -				this._createRange(child, document, e.ranges, start, lineText.length, lineText, lineStart);
                                  -			}
                                  -			if (extendSelection) {
                                  -				var ext = document.createElement("SPAN");
                                  -				ext.ignoreChars = 1;
                                  -				ext.appendChild(document.createTextNode(" "));
                                  -				child.appendChild(ext);
                                  -			}
                                  -			parent.insertBefore(child, sibling);
                                  -			return child;
                                  -		},
                                  -		_createRange: function(parent, document, ranges, start, end, text, lineStart) {
                                  -			if (start >= end) { return; }
                                  -			var span;
                                  -			if (ranges) {
                                  -				for (var i = 0; i < ranges.length; i++) {
                                  -					var range = ranges[i];
                                  -					if (range.end <= lineStart + start) { continue; }
                                  -					var styleStart = Math.max(lineStart + start, range.start) - lineStart;
                                  -					if (styleStart >= end) { break; }
                                  -					var styleEnd = Math.min(lineStart + end, range.end) - lineStart;
                                  -					if (styleStart < styleEnd) {
                                  -						styleStart = Math.max(start, styleStart);
                                  -						styleEnd = Math.min(end, styleEnd);
                                  -						if (start < styleStart) {
                                  -							span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(start, styleStart)));
                                  -							parent.appendChild(span);
                                  -						}
                                  -						span = document.createElement("SPAN");
                                  -						span.appendChild(document.createTextNode(text.substring(styleStart, styleEnd)));
                                  -						this._applyStyle(range.style, span);
                                  -						parent.appendChild(span);
                                  -						start = styleEnd;
                                  -					}
                                  -				}
                                  -			}
                                  -			if (start < end) {
                                  -				span = document.createElement("SPAN");
                                  -				span.appendChild(document.createTextNode(text.substring(start, end)));
                                  -				parent.appendChild(span);
                                  -			}
                                  -		},
                                  -		_doAutoScroll: function (direction, x, y) {
                                  -			this._autoScrollDir = direction;
                                  -			this._autoScrollX = x;
                                  -			this._autoScrollY = y;
                                  -			if (!this._autoScrollTimerID) {
                                  -				this._autoScrollTimer();
                                  -			}
                                  -		},
                                  -		_endAutoScroll: function () {
                                  -			if (this._autoScrollTimerID) { clearTimeout(this._autoScrollTimerID); }
                                  -			this._autoScrollDir = undefined;
                                  -			this._autoScrollTimerID = undefined;
                                  -		},
                                  -		_getBoundsAtOffset: function (offset) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = null;
                                  -			if (offset < model.getLineEnd(lineIndex)) {
                                  -				var lineOffset = model.getLineStart(lineIndex);
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length; 
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						var index = offset - lineOffset;
                                  -						var range;
                                  -						if (isRangeRects) {
                                  -							range = document.createRange();
                                  -							range.setStart(textNode, index);
                                  -							range.setEnd(textNode, index + 1);
                                  -							result = range.getBoundingClientRect();
                                  -						} else if (isIE) {
                                  -							range = document.body.createTextRange();
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", index + 1);
                                  -							range.moveStart("character", index);
                                  -							result = range.getBoundingClientRect();
                                  -						} else {
                                  -							var text = textNode.data;
                                  -							lineChild.removeChild(textNode);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(0, index)));
                                  -							var span = document.createElement("SPAN");
                                  -							span.appendChild(document.createTextNode(text.substring(index, index + 1)));
                                  -							lineChild.appendChild(span);
                                  -							lineChild.appendChild(document.createTextNode(text.substring(index + 1)));
                                  -							result = span.getBoundingClientRect();
                                  -							lineChild.innerHTML = "";
                                  -							lineChild.appendChild(textNode);
                                  -							if (!dummy) {
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((lineOffset <= s.start && s.start < lineOffset + nodeLength) ||  (lineOffset <= s.end && s.end < lineOffset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						if (isIE) {
                                  -							var logicalXDPI = window.screen.logicalXDPI;
                                  -							var deviceXDPI = window.screen.deviceXDPI;
                                  -							result.left = result.left * logicalXDPI / deviceXDPI;
                                  -							result.right = result.right * logicalXDPI / deviceXDPI;
                                  -						}
                                  -						break;
                                  -					}
                                  -					lineOffset += nodeLength;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (!result) {
                                  -				var rect = this._getLineBoundingClientRect(child);
                                  -				result = {left: rect.right, right: rect.right};
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getBottomIndex: function (fullyVisible) {
                                  -			var child = this._bottomChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var clientRect = this._clientDiv.getBoundingClientRect();
                                  -				if (rect.bottom > clientRect.bottom) {
                                  -					child = this._getLinePrevious(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getFrameHeight: function() {
                                  -			return this._frameDocument.documentElement.clientHeight;
                                  -		},
                                  -		_getFrameWidth: function() {
                                  -			return this._frameDocument.documentElement.clientWidth;
                                  -		},
                                  -		_getClientHeight: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientHeight - editorPad.top - editorPad.bottom);
                                  -		},
                                  -		_getClientWidth: function() {
                                  -			var editorPad = this._getEditorPadding();
                                  -			return Math.max(0, this._editorDiv.clientWidth - editorPad.left - editorPad.right);
                                  -		},
                                  -		_getClipboardText: function (event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.getData("Text");
                                  -			}
                                  -			if (isFirefox) {
                                  -				var window = this._frameWindow;
                                  -				var document = this._frameDocument;
                                  -				var child = document.createElement("PRE");
                                  -				child.style.position = "fixed";
                                  -				child.style.left = "-1000px";
                                  -				child.appendChild(document.createTextNode(" "));
                                  -				this._clientDiv.appendChild(child);
                                  -				var range = document.createRange();
                                  -				range.selectNodeContents(child);
                                  -				var sel = window.getSelection();
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				var self = this;
                                  -				var cleanup = function() {
                                  -					self._updateDOMSelection();
                                  -					self._clientDiv.removeChild(child);
                                  -				};
                                  -				var delimiter = this._model.getLineDelimiter();
                                  -				var _getText = function() {
                                  -					/*
                                  -					* Use the selection anchor to determine the end of the pasted text as it is possible that
                                  -					* some browsers (like Firefox) add extra elements (<BR>) after the pasted text.
                                  -					*/
                                  -					var endNode = null;
                                  -					if (sel.anchorNode.nodeType !== child.TEXT_NODE) {
                                  -						endNode = sel.anchorNode.childNodes[sel.anchorOffset];
                                  -					}
                                  -					var text = [];
                                  -					var getNodeText = function(node) {
                                  -						var nodeChild = node.firstChild;
                                  -						while (nodeChild !== endNode) {
                                  -							if (nodeChild.nodeType === child.TEXT_NODE) {
                                  -								text.push(nodeChild !== sel.anchorNode ? nodeChild.data : nodeChild.data.substring(0, sel.anchorOffset));
                                  -							} else if (nodeChild.tagName === "BR") {
                                  -								text.push(delimiter); 
                                  -							} else {
                                  -								getNodeText(nodeChild);
                                  -							}
                                  -							nodeChild = nodeChild.nextSibling;
                                  -						}
                                  -					};
                                  -					getNodeText(child);
                                  -					cleanup();
                                  -					return text.join("");
                                  -				};
                                  -				
                                  -				/* Try execCommand first. Works on firefox with clipboard permission. */
                                  -				var result = false;
                                  -				this._ignorePaste = true;
                                  -				try {
                                  -					result = document.execCommand("paste", false, null);
                                  -				} catch (ex) {}
                                  -				this._ignorePaste = false;
                                  -				if (!result) {
                                  -					/*
                                  -					* Try native paste in DOM, works for firefox during the paste event.
                                  -					*/
                                  -					if (event) {
                                  -						setTimeout(function() {
                                  -							var text = _getText();
                                  -							if (text) { self._doContent(text); }
                                  -						}, 0);
                                  -						return null;
                                  -					} else {
                                  -						/* no event and no clipboard permission, paste can't be performed */
                                  -						cleanup();
                                  -						return "";
                                  -					}
                                  -				}
                                  -				return _getText();
                                  -			}
                                  -			//webkit
                                  -			if (event && event.clipboardData) {
                                  -				/*
                                  -				* Webkit (Chrome/Safari) allows getData during the paste event
                                  -				* Note: setData is not allowed, not even during copy/cut event
                                  -				*/
                                  -				return event.clipboardData.getData("text/plain");
                                  -			} else {
                                  -				//TODO try paste using extension (Chrome only)
                                  -			}
                                  -			return "";
                                  -		},
                                  -		_getDOMText: function(lineIndex) {
                                  -			var child = this._getLineNode(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			var text = "";
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				while (textNode) {
                                  -					if (lineChild.ignoreChars) {
                                  -						for (var i = 0; i < textNode.length; i++) {
                                  -							var ch = textNode.data.substring(i, i + 1);
                                  -							if (ch !== " ") {
                                  -								text += ch;
                                  -							}
                                  -						}
                                  -					} else {
                                  -						text += textNode.data;
                                  -					}
                                  -					textNode = textNode.nextSibling;
                                  -				}
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			return text;
                                  -		},
                                  -		_getEditorPadding: function() {
                                  -			if (!this._editorPadding) {
                                  -				this._editorPadding = this._getPadding(this._editorDiv);
                                  -			}
                                  -			return this._editorPadding;
                                  -		},
                                  -		_getLineBoundingClientRect: function (child) {
                                  -			var rect = child.getBoundingClientRect();
                                  -			var lastChild = child.lastChild;
                                  -			//Remove any artificial trailing whitespace in the line
                                  -			if (lastChild && lastChild.ignoreChars === lastChild.firstChild.length) {
                                  -				lastChild = lastChild.previousSibling;
                                  -			}
                                  -			if (!lastChild) {
                                  -				return {left: rect.left, top: rect.top, right: rect.left, bottom: rect.bottom};
                                  -			}
                                  -			var lastRect = lastChild.getBoundingClientRect();
                                  -			return {left: rect.left, top: rect.top, right: lastRect.right, bottom: rect.bottom};
                                  -		},
                                  -		_getLineHeight: function() {
                                  -			var document = this._frameDocument;
                                  -			var body = document.body;
                                  -			return parseInt(body.style.lineHeight, 10);
                                  -		},
                                  -		_getLineNode: function (lineIndex) {
                                  -			var clientDiv = this._clientDiv;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				if (lineIndex === child.lineIndex) {
                                  -					return child;
                                  -				}
                                  -				child = child.nextSibling;
                                  -			}
                                  -			return undefined;
                                  -		},
                                  -		_getLineNext: function (lineNode) {
                                  -			var node = lineNode ? lineNode.nextSibling : this._clientDiv.firstChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.nextSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getLinePrevious: function (lineNode) {
                                  -			var node = lineNode ? lineNode.previousSibling : this._clientDiv.lastChild;
                                  -			while (node && node.lineIndex === -1) {
                                  -				node = node.previousSibling;
                                  -			}
                                  -			return node;
                                  -		},
                                  -		_getOffset: function (offset, word, direction) {
                                  -			return isIE ? this._getOffset_IE(offset, word, direction) : this._getOffset_W3C(offset, word, direction);
                                  -		},
                                  -		_getOffset_W3C: function (offset, word, direction) {
                                  -			function _isPunctuation(c) {
                                  -				return (33 <= c && c <= 47) || (58 <= c && c <= 64) || (91 <= c && c <= 94) || c === 96 || (123 <= c && c <= 126);
                                  -			}
                                  -			function _isWhitespace(c) {
                                  -				return c === 32 || c === 9;
                                  -			}
                                  -			if (word) {
                                  -				var model = this._model;
                                  -				var lineIndex = model.getLineAtOffset(offset);
                                  -				var lineText = model.getLine(lineIndex);
                                  -				var lineStart = model.getLineStart(lineIndex);
                                  -				var lineEnd = model.getLineEnd(lineIndex);
                                  -				var lineLength = lineText.length;
                                  -				var offsetInLine = offset - lineStart;
                                  -				
                                  -				
                                  -				var c, previousPunctuation, previousLetterOrDigit, punctuation, letterOrDigit;
                                  -				if (direction > 0) {
                                  -					if (offsetInLine === lineLength) { return lineEnd; }
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					offsetInLine++;
                                  -					while (offsetInLine < lineLength) {
                                  -						c = lineText.charCodeAt(offsetInLine);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (punctuation && !previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (letterOrDigit && !previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine++;
                                  -					}
                                  -				} else {
                                  -					if (offsetInLine === 0) { return lineStart; }
                                  -					offsetInLine--;
                                  -					c = lineText.charCodeAt(offsetInLine);
                                  -					previousPunctuation = _isPunctuation(c); 
                                  -					previousLetterOrDigit = !previousPunctuation && !_isWhitespace(c);
                                  -					while (0 < offsetInLine) {
                                  -						c = lineText.charCodeAt(offsetInLine - 1);
                                  -						punctuation = _isPunctuation(c);
                                  -						if (!punctuation && previousPunctuation) { break; }
                                  -						letterOrDigit  = !punctuation && !_isWhitespace(c);
                                  -						if (!letterOrDigit && previousLetterOrDigit) { break; }
                                  -						previousLetterOrDigit = letterOrDigit;
                                  -						previousPunctuation = punctuation;
                                  -						offsetInLine--;
                                  -					}
                                  -				}
                                  -				return lineStart + offsetInLine;
                                  -			}
                                  -			return offset + direction;
                                  -		},
                                  -		_getOffset_IE: function (offset, word, direction) {
                                  -			var document = this._frameDocument;
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var result = 0, range, length;
                                  -			var lineOffset = model.getLineStart(lineIndex);
                                  -			if (offset === model.getLineEnd(lineIndex)) {
                                  -				range = document.body.createTextRange();
                                  -				range.moveToElementText(child.lastChild);
                                  -				length = range.text.length;
                                  -				range.moveEnd(word ? "word" : "character", direction);
                                  -				result = offset + range.text.length - length;
                                  -			} else if (offset === lineOffset && direction < 0) {
                                  -				result = lineOffset;
                                  -			} else {
                                  -				var lineChild = child.firstChild;
                                  -				while (lineChild) {
                                  -					var textNode = lineChild.firstChild;
                                  -					var nodeLength = textNode.length;
                                  -					if (lineChild.ignoreChars) {
                                  -						nodeLength -= lineChild.ignoreChars;
                                  -					}
                                  -					if (lineOffset + nodeLength > offset) {
                                  -						range = document.body.createTextRange();
                                  -						if (offset === lineOffset && direction < 0) {
                                  -							range.moveToElementText(lineChild.previousSibling);
                                  -						} else {
                                  -							range.moveToElementText(lineChild);
                                  -							range.collapse();
                                  -							range.moveEnd("character", offset - lineOffset);
                                  -						}
                                  -						length = range.text.length;
                                  -						range.moveEnd(word ? "word" : "character", direction);
                                  -						result = offset + range.text.length - length;
                                  -						break;
                                  -					}
                                  -					lineOffset = nodeLength + lineOffset;
                                  -					lineChild = lineChild.nextSibling;
                                  -				}
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return result;
                                  -		},
                                  -		_getOffsetToX: function (offset) {
                                  -			return this._getBoundsAtOffset(offset).left;
                                  -		},
                                  -		_getPadding: function (node) {
                                  -			var left,top,right,bottom;
                                  -			if (node.currentStyle) {
                                  -				left = node.currentStyle.paddingLeft;
                                  -				top = node.currentStyle.paddingTop;
                                  -				right = node.currentStyle.paddingRight;
                                  -				bottom = node.currentStyle.paddingBottom;
                                  -			} else if (this._frameWindow.getComputedStyle) {
                                  -				var style = this._frameWindow.getComputedStyle(node, null);
                                  -				left = style.getPropertyValue("padding-left");
                                  -				top = style.getPropertyValue("padding-top");
                                  -				right = style.getPropertyValue("padding-right");
                                  -				bottom = style.getPropertyValue("padding-bottom");
                                  -			}
                                  -			return {
                                  -					left: parseInt(left, 10), 
                                  -					top: parseInt(top, 10),
                                  -					right: parseInt(right, 10),
                                  -					bottom: parseInt(bottom, 10)
                                  -			};
                                  -		},
                                  -		_getScroll: function() {
                                  -			var editorDiv = this._editorDiv;
                                  -			return {x: editorDiv.scrollLeft, y: editorDiv.scrollTop};
                                  -		},
                                  -		_getSelection: function () {
                                  -			return this._selection.clone();
                                  -		},
                                  -		_getTopIndex: function (fullyVisible) {
                                  -			var child = this._topChild;
                                  -			if (fullyVisible && this._getClientHeight() > this._getLineHeight()) {
                                  -				var rect = child.getBoundingClientRect();
                                  -				var editorPad = this._getEditorPadding();
                                  -				var editorRect = this._editorDiv.getBoundingClientRect();
                                  -				if (rect.top < editorRect.top + editorPad.top) {
                                  -					child = this._getLineNext(child) || child;
                                  -				}
                                  -			}
                                  -			return child.lineIndex;
                                  -		},
                                  -		_getXToOffset: function (lineIndex, x) {
                                  -			var model = this._model;
                                  -			var document = this._frameDocument;
                                  -			var clientDiv = this._clientDiv;
                                  -			var dummy;
                                  -			var child = this._getLineNode(lineIndex);
                                  -			if (!child) {
                                  -				child = dummy = this._createLine(clientDiv, null, document, lineIndex, model);
                                  -			}
                                  -			var lineRect = this._getLineBoundingClientRect(child);
                                  -			if (x < lineRect.left) { x = lineRect.left; }
                                  -			if (x > lineRect.right) { x = lineRect.right; }
                                  -			/*
                                  -			* Bug in IE 8 and earlier. The coordinates of getClientRects() are relative to
                                  -			* the browser window.  The fix is to convert to the frame window before using it. 
                                  -			*/
                                  -			var deltaX = 0, rects;
                                  -			if (isIE < 9) {
                                  -				rects = child.getClientRects();
                                  -				var minLeft = rects[0].left;
                                  -				for (var i=1; i<rects.length; i++) {
                                  -					minLeft = Math.min(rects[i].left, minLeft);
                                  -				}
                                  -				deltaX = minLeft - lineRect.left;
                                  -			}
                                  -			var scrollX = this._getScroll().x;
                                  -			function _getClientRects(element) {
                                  -				var rects, newRects, i, r;
                                  -				if (!element._rectsCache) {
                                  -					rects = element.getClientRects();
                                  -					newRects = [rects.length];
                                  -					for (i = 0; i<rects.length; i++) {
                                  -						r = rects[i];
                                  -						newRects[i] = {left: r.left - deltaX + scrollX, top: r.top, right: r.right - deltaX + scrollX, bottom: r.bottom};
                                  -					}
                                  -					element._rectsCache = newRects; 
                                  -				}
                                  -				rects = element._rectsCache;
                                  -				newRects = [rects.length];
                                  -				for (i = 0; i<rects.length; i++) {
                                  -					r = rects[i];
                                  -					newRects[i] = {left: r.left - scrollX, top: r.top, right: r.right - scrollX, bottom: r.bottom};
                                  -				}
                                  -				return newRects;
                                  -			}
                                  -			var logicalXDPI = isIE ? window.screen.logicalXDPI : 1;
                                  -			var deviceXDPI = isIE ? window.screen.deviceXDPI : 1;
                                  -			var offset = model.getLineStart(lineIndex);
                                  -			var lineChild = child.firstChild;
                                  -			done:
                                  -			while (lineChild) {
                                  -				var textNode = lineChild.firstChild;
                                  -				var nodeLength = textNode.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				rects = _getClientRects(lineChild);
                                  -				for (var j = 0; j < rects.length; j++) {
                                  -					var rect = rects[j];
                                  -					if (rect.left <= x && x < rect.right) {
                                  -						var range, start, end;
                                  -						if (isIE || isRangeRects) {
                                  -							range = isRangeRects ? document.createRange() : document.body.createTextRange();
                                  -							var high = nodeLength;
                                  -							var low = -1;
                                  -							while ((high - low) > 1) {
                                  -								var mid = Math.floor((high + low) / 2);
                                  -								start = low + 1;
                                  -								end = mid === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : mid + 1;
                                  -								if (isRangeRects) {
                                  -									range.setStart(textNode, start);
                                  -									range.setEnd(textNode, end);
                                  -								} else {
                                  -									range.moveToElementText(lineChild);
                                  -									range.move("character", start);
                                  -									range.moveEnd("character", end - start);
                                  -								}
                                  -								rects = range.getClientRects();
                                  -								var found = false;
                                  -								for (var k = 0; k < rects.length; k++) {
                                  -									rect = rects[k];
                                  -									var rangeLeft = rect.left * logicalXDPI / deviceXDPI - deltaX;
                                  -									var rangeRight = rect.right * logicalXDPI / deviceXDPI - deltaX;
                                  -									if (rangeLeft <= x && x < rangeRight) {
                                  -										found = true;
                                  -										break;
                                  -									}
                                  -								}
                                  -								if (found) {
                                  -									high = mid;
                                  -								} else {
                                  -									low = mid;
                                  -								}
                                  -							}
                                  -							offset += high;
                                  -							start = high;
                                  -							end = high === nodeLength - 1 && lineChild.ignoreChars ? textNode.length : high + 1;
                                  -							if (isRangeRects) {
                                  -								range.setStart(textNode, start);
                                  -								range.setEnd(textNode, end);
                                  -							} else {
                                  -								range.moveToElementText(lineChild);
                                  -								range.move("character", start);
                                  -								range.moveEnd("character", end - start);
                                  -							}
                                  -							rect = range.getClientRects()[0];
                                  -							//TODO test for character trailing (wrong for bidi)
                                  -							if (x > ((rect.left * logicalXDPI / deviceXDPI - deltaX) + ((rect.right - rect.left) * logicalXDPI / deviceXDPI / 2))) {
                                  -								offset++;
                                  -							}
                                  -						} else {
                                  -							var newText = [];
                                  -							for (var q = 0; q < nodeLength; q++) {
                                  -								newText.push("<span>");
                                  -								if (q === nodeLength - 1) {
                                  -									newText.push(textNode.data.substring(q));
                                  -								} else {
                                  -									newText.push(textNode.data.substring(q, q + 1));
                                  -								}
                                  -								newText.push("</span>");
                                  -							}
                                  -							lineChild.innerHTML = newText.join("");
                                  -							var rangeChild = lineChild.firstChild;
                                  -							while (rangeChild) {
                                  -								rect = rangeChild.getBoundingClientRect();
                                  -								if (rect.left <= x && x < rect.right) {
                                  -									//TODO test for character trailing (wrong for bidi)
                                  -									if (x > rect.left + (rect.right - rect.left) / 2) {
                                  -										offset++;
                                  -									}
                                  -									break;
                                  -								}
                                  -								offset++;
                                  -								rangeChild = rangeChild.nextSibling;
                                  -							}
                                  -							if (!dummy) {
                                  -								lineChild.innerHTML = "";
                                  -								lineChild.appendChild(textNode);
                                  -								/*
                                  -								 * Removing the element node that holds the selection start or end
                                  -								 * causes the selection to be lost. The fix is to detect this case
                                  -								 * and restore the selection. 
                                  -								 */
                                  -								var s = this._getSelection();
                                  -								if ((offset <= s.start && s.start < offset + nodeLength) || (offset <= s.end && s.end < offset + nodeLength)) {
                                  -									this._updateDOMSelection();
                                  -								}
                                  -							}
                                  -						}
                                  -						break done;
                                  -					}
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			if (dummy) { clientDiv.removeChild(dummy); }
                                  -			return offset;
                                  -		},
                                  -		_getYToLine: function (y) {
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			y -= editorRect.top + editorPad.top;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var lineIndex = Math.floor((y + this._getScroll().y) / lineHeight);
                                  -			var lineCount = this._model.getLineCount();
                                  -			return Math.max(0, Math.min(lineCount - 1, lineIndex));
                                  -		},
                                  -		_getOffsetBounds: function(offset) {
                                  -			var model = this._model;
                                  -			var lineIndex = model.getLineAtOffset(offset);
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scroll = this._getScroll();
                                  -			var editorPad = this._getEditorPadding();
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var bounds = this._getBoundsAtOffset(offset);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var top = (lineIndex * lineHeight) - scroll.y + editorRect.top + editorPad.top;
                                  -			var bottom = top + lineHeight;
                                  -			return {left: left, top: top, right: right, bottom: bottom};
                                  -		},
                                  -		_hitOffset: function (offset, x, y) {
                                  -			var bounds = this._getOffsetBounds(offset);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var top = bounds.top;
                                  -			var bottom = bounds.bottom;
                                  -			var area = 20;
                                  -			left -= area;
                                  -			top -= area;
                                  -			right += area;
                                  -			bottom += area;
                                  -			return (left <= x && x <= right && top <= y && y <= bottom);
                                  -		},
                                  -		_hookEvents: function() {
                                  -			var self = this;
                                  -			this._modelListener = {
                                  -				/** @private */
                                  -				onChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanging(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				},
                                  -				/** @private */
                                  -				onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -					self._onModelChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			};
                                  -			this._model.addListener(this._modelListener);
                                  -			
                                  -			this._mouseMoveClosure = function(e) { return self._handleMouseMove(e);};
                                  -			this._mouseUpClosure = function(e) { return self._handleMouseUp(e);};
                                  -			
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorDiv = this._editorDiv;
                                  -			var body = this._frameDocument.body; 
                                  -			var handlers = this._handlers = [];
                                  -			var resizeNode = isIE < 9 ? this._frame : this._frameWindow;
                                  -			var focusNode = isPad ? this._textArea : (isIE ? this._clientDiv: this._frameWindow);
                                  -			handlers.push({target: resizeNode, type: "resize", handler: function(e) { return self._handleResize(e);}});
                                  -			handlers.push({target: focusNode, type: "blur", handler: function(e) { return self._handleBlur(e);}});
                                  -			handlers.push({target: focusNode, type: "focus", handler: function(e) { return self._handleFocus(e);}});
                                  -			if (isPad) {
                                  -				var touchDiv = this._touchDiv;
                                  -				var textArea = this._textArea;
                                  -				handlers.push({target: textArea, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}});
                                  -				handlers.push({target: textArea, type: "input", handler: function(e) { return self._handleInput(e); }});
                                  -				handlers.push({target: textArea, type: "textInput", handler: function(e) { return self._handleTextInput(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchstart", handler: function(e) { return self._handleTouchStart(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchmove", handler: function(e) { return self._handleTouchMove(e); }});
                                  -				handlers.push({target: touchDiv, type: "touchend", handler: function(e) { return self._handleTouchEnd(e); }});
                                  -			} else {
                                  -				var topNode = this._overlayDiv || this._clientDiv;
                                  -				handlers.push({target: editorDiv, type: "scroll", handler: function(e) { return self._handleScroll(e);}});
                                  -				handlers.push({target: clientDiv, type: "keydown", handler: function(e) { return self._handleKeyDown(e);}});
                                  -				handlers.push({target: clientDiv, type: "keypress", handler: function(e) { return self._handleKeyPress(e);}});
                                  -				handlers.push({target: clientDiv, type: "keyup", handler: function(e) { return self._handleKeyUp(e);}});
                                  -				handlers.push({target: clientDiv, type: "selectstart", handler: function(e) { return self._handleSelectStart(e);}});
                                  -				handlers.push({target: clientDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e);}});
                                  -				handlers.push({target: clientDiv, type: "copy", handler: function(e) { return self._handleCopy(e);}});
                                  -				handlers.push({target: clientDiv, type: "cut", handler: function(e) { return self._handleCut(e);}});
                                  -				handlers.push({target: clientDiv, type: "paste", handler: function(e) { return self._handlePaste(e);}});
                                  -				handlers.push({target: topNode, type: "mousedown", handler: function(e) { return self._handleMouseDown(e);}});
                                  -				handlers.push({target: body, type: "mousedown", handler: function(e) { return self._handleBodyMouseDown(e);}});
                                  -				handlers.push({target: topNode, type: "dragstart", handler: function(e) { return self._handleDragStart(e);}});
                                  -				handlers.push({target: topNode, type: "dragover", handler: function(e) { return self._handleDragOver(e);}});
                                  -				handlers.push({target: topNode, type: "drop", handler: function(e) { return self._handleDrop(e);}});
                                  -				if (isIE) {
                                  -					handlers.push({target: this._frameDocument, type: "activate", handler: function(e) { return self._handleDocFocus(e); }});
                                  -				}
                                  -				if (isFirefox) {
                                  -					handlers.push({target: this._frameDocument, type: "focus", handler: function(e) { return self._handleDocFocus(e); }});
                                  -				}
                                  -				if (!isIE && !isOpera) {
                                  -					var wheelEvent = isFirefox ? "DOMMouseScroll" : "mousewheel";
                                  -					handlers.push({target: this._editorDiv, type: wheelEvent, handler: function(e) { return self._handleMouseWheel(e); }});
                                  -				}
                                  -				if (isFirefox && !isWindows) {
                                  -					handlers.push({target: this._clientDiv, type: "DOMCharacterDataModified", handler: function (e) { return self._handleDataModified(e); }});
                                  -				}
                                  -				if (this._overlayDiv) {
                                  -					handlers.push({target: this._overlayDiv, type: "contextmenu", handler: function(e) { return self._handleContextMenu(e); }});
                                  -				}
                                  -				if (!isW3CEvents) {
                                  -					handlers.push({target: this._clientDiv, type: "dblclick", handler: function(e) { return self._handleDblclick(e); }});
                                  -				}
                                  -			}
                                  -			for (var i=0; i<handlers.length; i++) {
                                  -				var h = handlers[i];
                                  -				addHandler(h.target, h.type, h.handler, h.capture);
                                  -			}
                                  -		},
                                  -		_init: function(options) {
                                  -			var parent = options.parent;
                                  -			if (typeof(parent) === "string") {
                                  -				parent = window.document.getElementById(parent);
                                  -			}
                                  -			if (!parent) { throw "no parent"; }
                                  -			this._parent = parent;
                                  -			this._model = options.model ? options.model : new eclipse.TextModel();
                                  -			this.readonly = options.readonly === true;
                                  -			this._selection = new Selection (0, 0, false);
                                  -			this._eventTable = new EventTable();
                                  -			this._maxLineWidth = 0;
                                  -			this._maxLineIndex = -1;
                                  -			this._ignoreSelect = true;
                                  -			this._columnX = -1;
                                  -
                                  -			/* Auto scroll */
                                  -			this._autoScrollX = null;
                                  -			this._autoScrollY = null;
                                  -			this._autoScrollTimerID = null;
                                  -			this._AUTO_SCROLL_RATE = 50;
                                  -			this._grabControl = null;
                                  -			this._moseMoveClosure  = null;
                                  -			this._mouseUpClosure = null;
                                  -			
                                  -			/* Double click */
                                  -			this._lastMouseX = 0;
                                  -			this._lastMouseY = 0;
                                  -			this._lastMouseTime = 0;
                                  -			this._clickCount = 0;
                                  -			this._clickTime = 250;
                                  -			this._clickDist = 5;
                                  -			this._isMouseDown = false;
                                  -			this._doubleClickSelection = null;
                                  -			
                                  -			/* Scroll */
                                  -			this._hScroll = 0;
                                  -			this._vScroll = 0;
                                  -
                                  -			/* IME */
                                  -			this._imeOffset = -1;
                                  -			
                                  -			/* Create elements */
                                  -			while (parent.hasChildNodes()) { parent.removeChild(parent.lastChild); }
                                  -			var parentDocument = parent.document || parent.ownerDocument;
                                  -			this._parentDocument = parentDocument;
                                  -			var frame = parentDocument.createElement("IFRAME");
                                  -			this._frame = frame;
                                  -			frame.frameBorder = "0px";//for IE, needs to be set before the frame is added to the parent
                                  -			frame.style.width = "100%";
                                  -			frame.style.height = "100%";
                                  -			frame.scrolling = "no";
                                  -			frame.style.border = "0px";
                                  -			parent.appendChild(frame);
                                  -
                                  -			var html = [];
                                  -			html.push("<!DOCTYPE html>");
                                  -			html.push("<html>");
                                  -			html.push("<head>");
                                  -			if (isIE < 9) {
                                  -				html.push("<meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7'/>");
                                  -			}
                                  -			html.push("<style>");
                                  -			html.push(".editorContainer {font-family: monospace; font-size: 10pt;}");
                                  -			html.push(".editor {padding: 1px 2px;}");
                                  -			html.push(".editorContent {}");
                                  -			html.push("</style>");
                                  -			if (options.stylesheet) {
                                  -				var stylesheet = typeof(options.stylesheet) === "string" ? [options.stylesheet] : options.stylesheet;
                                  -				for (var i = 0; i < stylesheet.length; i++) {
                                  -					try {
                                  -						//Force CSS to be loaded synchronously so lineHeight can be calculated
                                  -						var objXml = new XMLHttpRequest();
                                  -						objXml.open("GET", stylesheet[i], false);
                                  -						objXml.send(null);
                                  -						html.push("<style>");
                                  -						html.push(objXml.responseText);
                                  -						html.push("</style>");
                                  -					} catch (e) {
                                  -						html.push("<link rel='stylesheet' type='text/css' href='");
                                  -						html.push(stylesheet[i]);
                                  -						html.push("'></link>");
                                  -					}
                                  -				}
                                  -			}
                                  -			html.push("</head>");
                                  -			html.push("<body spellcheck='false'></body>");
                                  -			html.push("</html>");
                                  -
                                  -			var frameWindow = frame.contentWindow;
                                  -			this._frameWindow = frameWindow;
                                  -			var document = frameWindow.document;
                                  -			this._frameDocument = document;
                                  -			document.open();
                                  -			document.write(html.join(""));
                                  -			document.close();
                                  -			
                                  -			var body = document.body;
                                  -			body.className = "editorContainer";
                                  -			body.style.margin = "0px";
                                  -			body.style.borderWidth = "0px";
                                  -			body.style.padding = "0px";
                                  -			
                                  -			if (isPad) {
                                  -				var touchDiv = parentDocument.createElement("DIV");
                                  -				this._touchDiv = touchDiv;
                                  -				touchDiv.style.position = "absolute";
                                  -				touchDiv.style.border = "0px";
                                  -				touchDiv.style.padding = "0px";
                                  -				touchDiv.style.margin = "0px";
                                  -				touchDiv.style.zIndex = "2";
                                  -				touchDiv.style.overflow = "hidden";
                                  -				touchDiv.style.background="transparent";
                                  -//				touchDiv.style.background="green";
                                  -//				touchDiv.style.opacity="0.5";
                                  -				touchDiv.style.WebkitUserSelect = "none";
                                  -				parent.appendChild(touchDiv);
                                  -
                                  -				var textArea = parentDocument.createElement("TEXTAREA");
                                  -				this._textArea = textArea;
                                  -				textArea.style.position = "absolute";
                                  -				textArea.style.whiteSpace = "pre";
                                  -				textArea.style.left = "-1000px";
                                  -				textArea.tabIndex = 1;
                                  -				textArea.autocapitalize = false;
                                  -				textArea.autocorrect = false;
                                  -				textArea.className = "editorContainer";
                                  -				textArea.style.background = "transparent";
                                  -				textArea.style.color = "transparent";
                                  -				textArea.style.border = "0px";
                                  -				textArea.style.padding = "0px";
                                  -				textArea.style.margin = "0px";
                                  -				textArea.style.borderRadius = "0px";
                                  -				textArea.style.WebkitAppearance = "none";
                                  -				textArea.style.WebkitTapHighlightColor = "transparent";
                                  -				touchDiv.appendChild(textArea);
                                  -			}
                                  -
                                  -			var editorDiv = document.createElement("DIV");
                                  -			editorDiv.className = "editor";
                                  -			this._editorDiv = editorDiv;
                                  -			editorDiv.id = "editorDiv";
                                  -			editorDiv.tabIndex = -1;
                                  -			editorDiv.style.overflow = "auto";
                                  -			editorDiv.style.position = "absolute";
                                  -			editorDiv.style.top = "0px";
                                  -			editorDiv.style.borderWidth = "0px";
                                  -			editorDiv.style.margin = "0px";
                                  -			editorDiv.style.MozOutline = "none";
                                  -			editorDiv.style.outline = "none";
                                  -			body.appendChild(editorDiv);
                                  -				
                                  -			var scrollDiv = document.createElement("DIV");
                                  -			this._scrollDiv = scrollDiv;
                                  -			scrollDiv.id = "scrollDiv";
                                  -			scrollDiv.style.margin = "0px";
                                  -			scrollDiv.style.borderWidth = "0px";
                                  -			scrollDiv.style.padding = "0px";
                                  -			editorDiv.appendChild(scrollDiv);
                                  -
                                  -			if (isPad) {
                                  -				var selDiv1 = document.createElement("DIV");
                                  -				this._selDiv1 = selDiv1;
                                  -				selDiv1.id = "selDiv1";
                                  -				selDiv1.style.position = "fixed";
                                  -				selDiv1.style.borderWidth = "0px";
                                  -				selDiv1.style.margin = "0px";
                                  -				selDiv1.style.padding = "0px";
                                  -				selDiv1.style.MozOutline = "none";
                                  -				selDiv1.style.outline = "none";
                                  -				selDiv1.style.background = "lightblue";
                                  -				selDiv1.style.width="0px";
                                  -				selDiv1.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv1);
                                  -				var selDiv2 = document.createElement("DIV");
                                  -				this._selDiv2 = selDiv2;
                                  -				selDiv2.id = "selDiv2";
                                  -				selDiv2.style.position = "fixed";
                                  -				selDiv2.style.borderWidth = "0px";
                                  -				selDiv2.style.margin = "0px";
                                  -				selDiv2.style.padding = "0px";
                                  -				selDiv2.style.MozOutline = "none";
                                  -				selDiv2.style.outline = "none";
                                  -				selDiv2.style.background = "lightblue";
                                  -				selDiv2.style.width="0px";
                                  -				selDiv2.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv2);
                                  -				var selDiv3 = document.createElement("DIV");
                                  -				this._selDiv3 = selDiv3;
                                  -				selDiv3.id = "selDiv3";
                                  -				selDiv3.style.position = "fixed";
                                  -				selDiv3.style.borderWidth = "0px";
                                  -				selDiv3.style.margin = "0px";
                                  -				selDiv3.style.padding = "0px";
                                  -				selDiv3.style.MozOutline = "none";
                                  -				selDiv3.style.outline = "none";
                                  -				selDiv3.style.background = "lightblue";
                                  -				selDiv3.style.width="0px";
                                  -				selDiv3.style.height="0px";
                                  -				scrollDiv.appendChild(selDiv3);
                                  -			}
                                  -
                                  -			var clientDiv = document.createElement("DIV");
                                  -			clientDiv.className = "editorContent";
                                  -			this._clientDiv = clientDiv;
                                  -			clientDiv.id = "clientDiv";
                                  -			clientDiv.style.whiteSpace = "pre";
                                  -			clientDiv.style.position = "fixed";
                                  -			clientDiv.style.borderWidth = "0px";
                                  -			clientDiv.style.margin = "0px";
                                  -			clientDiv.style.padding = "0px";
                                  -			clientDiv.style.MozOutline = "none";
                                  -			clientDiv.style.outline = "none";
                                  -			if (isPad) {
                                  -				clientDiv.style.WebkitTapHighlightColor = "transparent";
                                  -			}
                                  -			scrollDiv.appendChild(clientDiv);
                                  -
                                  -			if (isFirefox) {
                                  -				var overlayDiv = document.createElement("DIV");
                                  -				this._overlayDiv = overlayDiv;
                                  -				overlayDiv.id = "overlayDiv";
                                  -				overlayDiv.style.position = clientDiv.style.position;
                                  -				overlayDiv.style.borderWidth = clientDiv.style.borderWidth;
                                  -				overlayDiv.style.margin = clientDiv.style.margin;
                                  -				overlayDiv.style.padding = clientDiv.style.padding;
                                  -				overlayDiv.style.cursor = "text";
                                  -				overlayDiv.style.zIndex = "1";
                                  -				scrollDiv.appendChild(overlayDiv);
                                  -			}
                                  -			if (!isPad) {
                                  -				clientDiv.contentEditable = "true";
                                  -			}
                                  -			body.style.lineHeight = this._calculateLineHeight() + "px";
                                  -			if (options.tabSize) {
                                  -				if (isOpera) {
                                  -					clientDiv.style.OTabSize = options.tabSize+"";
                                  -				} else if (isFirefox >= 4) {
                                  -					clientDiv.style.MozTabSize = options.tabSize+"";
                                  -				} else if (options.tabSize !== 8) {
                                  -					this._tabSize = options.tabSize;
                                  -				}
                                  -			}
                                  -			this._createActions();
                                  -			this._hookEvents();
                                  -		},
                                  -		_isDOMSelectionComplete: function() {
                                  -			var selection = this._getSelection();
                                  -			var topIndex = this._getTopIndex();
                                  -			var bottomIndex = this._getBottomIndex();
                                  -			var model = this._model;
                                  -			var firstLine = model.getLineAtOffset(selection.start);
                                  -			var lastLine = model.getLineAtOffset(selection.start !== selection.end ? selection.end - 1 : selection.end);
                                  -			if (topIndex <= firstLine && firstLine <= bottomIndex && topIndex <= lastLine && lastLine <= bottomIndex) {
                                  -				var child = this._getLineNode(firstLine);
                                  -				while (child && child.lineIndex <= lastLine) {
                                  -					var lineChild = child.firstChild;
                                  -					while (lineChild) {
                                  -						if (lineChild.ignoreChars) { return false; }
                                  -						lineChild = lineChild.nextSibling;
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_modifyContent: function(e, updateCaret) {
                                  -			if (this.readonly && !e._code) {
                                  -				return;
                                  -			}
                                  -
                                  -			this.onVerify(e);
                                  -
                                  -			if (e.text === null || e.text === undefined) { return; }
                                  -			
                                  -			var model = this._model;
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = true; }
                                  -			model.setText (e.text, e.start, e.end);
                                  -			if (e._ignoreDOMSelection) { this._ignoreDOMSelection = false; }
                                  -			
                                  -			if (updateCaret) {
                                  -				var selection = this._getSelection ();
                                  -				selection.setCaret(e.start + e.text.length);
                                  -				this._setSelection(selection, true);
                                  -				this._showCaret();
                                  -			}
                                  -			this.onModify({});
                                  -		},
                                  -		_onModelChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanged(e);
                                  -			
                                  -			var selection = this._getSelection();
                                  -			if (selection.end > start) {
                                  -				if (selection.end > start && selection.start < start + removedCharCount) {
                                  -					// selection intersects replaced text. set caret behind text change
                                  -					selection.setCaret(start + addedCharCount);
                                  -				} else {
                                  -					// move selection to keep same text selected
                                  -					selection.start +=  addedCharCount - removedCharCount;
                                  -					selection.end +=  addedCharCount - removedCharCount;
                                  -				}
                                  -				this._setSelection(selection, false, false);
                                  -			}
                                  -			
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var child = this._getLineNext();
                                  -			while (child) {
                                  -				var lineIndex = child.lineIndex;
                                  -				if (startLine <= lineIndex && lineIndex <= startLine + removedLineCount) {
                                  -					child.lineChanged = true;
                                  -				}
                                  -				if (lineIndex > startLine + removedLineCount) {
                                  -					child.lineIndex = lineIndex + addedLineCount - removedLineCount;
                                  -				}
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -			if (startLine <= this._maxLineIndex && this._maxLineIndex <= startLine + removedLineCount) {
                                  -				this._maxLineIndex = -1;
                                  -				this._maxLineWidth = 0;
                                  -			}
                                  -			this._updatePage();
                                  -		},
                                  -		_onModelChanging: function(newText, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			var e = {
                                  -				text: newText,
                                  -				start: start,
                                  -				removedCharCount: removedCharCount,
                                  -				addedCharCount: addedCharCount,
                                  -				removedLineCount: removedLineCount,
                                  -				addedLineCount: addedLineCount
                                  -			};
                                  -			this.onModelChanging(e);
                                  -		},
                                  -		_queueUpdatePage: function() {
                                  -			if (this._updateTimer) { return; }
                                  -			var self = this;
                                  -			this._updateTimer = setTimeout(function() { 
                                  -				self._updateTimer = null;
                                  -				self._updatePage();
                                  -			}, 0);
                                  -		},
                                  -		_resizeTouchDiv: function() {
                                  -			var editorRect = this._editorDiv.getBoundingClientRect();
                                  -			var parentRect = this._frame.getBoundingClientRect();
                                  -			var temp = this._frame;
                                  -			while (temp) {
                                  -				if (temp.style && temp.style.top) { break; }
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			var parentTop = parentRect.top;
                                  -			if (temp) {
                                  -				parentTop -= temp.getBoundingClientRect().top;
                                  -			} else {
                                  -				parentTop += this._parentDocument.body.scrollTop;
                                  -			}
                                  -			temp = this._frame;
                                  -			while (temp) {
                                  -				if (temp.style && temp.style.left) { break; }
                                  -				temp = temp.parentNode;
                                  -			}
                                  -			var parentLeft = parentRect.left;
                                  -			if (temp) {
                                  -				parentLeft -= temp.getBoundingClientRect().left;
                                  -			} else {
                                  -				parentLeft += this._parentDocument.body.scrollLeft;
                                  -			}
                                  -			var touchDiv = this._touchDiv;
                                  -			touchDiv.style.left = (parentLeft + editorRect.left) + "px";
                                  -			touchDiv.style.top = (parentTop + editorRect.top) + "px";
                                  -			touchDiv.style.width = editorRect.width + "px";
                                  -			touchDiv.style.height = editorRect.height + "px";
                                  -		},
                                  -		_scrollView: function (pixelX, pixelY) {
                                  -			/*
                                  -			* IE redraws the page when scrollTop is changed. This redraw is not necessary
                                  -			* while scrolling since updatePage() will be called in _handleScroll(). In order
                                  -			* to improve performance, the page is hidden during scroll causing only on redraw
                                  -			* to happen. Note that this approach causes flashing on Firefox.
                                  -			*
                                  -			* This code is intentionally commented. It causes editor to loose focus.
                                  -			*/
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "hidden";
                                  -//			}
                                  -			var editorDiv = this._editorDiv;
                                  -			var newX = editorDiv.scrollLeft + pixelX;
                                  -			if (pixelX) { editorDiv.scrollLeft = newX; }
                                  -			var newY = editorDiv.scrollTop + pixelY;
                                  -			if (pixelY) { editorDiv.scrollTop = newY; }
                                  -			this._doScroll({x: newX, y: newY});
                                  -//			if (isIE) {
                                  -//				this._frameDocument.body.style.visibility = "visible";
                                  -//				this.focus();
                                  -//			}
                                  -		},
                                  -		_setClipboardText: function (text, event) {
                                  -			if (this._frameWindow.clipboardData) {
                                  -				//IE
                                  -				return this._frameWindow.clipboardData.setData("Text", text);
                                  -			}
                                  -			/* Feature in Chrome, clipboardData.setData is no-op on Chrome even though it returns true */
                                  -			if (isChrome || isFirefox || !event) {
                                  -				var window = this._frameWindow;
                                  -				var document = this._frameDocument;
                                  -				var child = document.createElement("PRE");
                                  -				child.style.position = "fixed";
                                  -				child.style.left = "-1000px";
                                  -				var cr = 0, lf = 0, index = 0, length = text.length;
                                  -				while (index < length) {
                                  -					if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -					if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -					var start = index, end;
                                  -					if (lf === -1 && cr === -1) {
                                  -						child.appendChild(document.createTextNode(text.substring(index)));
                                  -						break;
                                  -					}
                                  -					if (cr !== -1 && lf !== -1) {
                                  -						if (cr + 1 === lf) {
                                  -							end = cr;
                                  -							index = lf + 1;
                                  -						} else {
                                  -							end = cr < lf ? cr : lf;
                                  -							index = (cr < lf ? cr : lf) + 1;
                                  -						}
                                  -					} else if (cr !== -1) {
                                  -						end = cr;
                                  -						index = cr + 1;
                                  -					} else {
                                  -						end = lf;
                                  -						index = lf + 1;
                                  -					}
                                  -					child.appendChild(document.createTextNode(text.substring(start, end)));
                                  -					child.appendChild(document.createElement("BR"));
                                  -				}
                                  -				child.appendChild(document.createTextNode(" "));
                                  -				this._clientDiv.appendChild(child);
                                  -				var range = document.createRange();
                                  -				range.setStart(child.firstChild, 0);
                                  -				range.setEndBefore(child.lastChild);
                                  -				var sel = window.getSelection();
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				var self = this;
                                  -				var cleanup = function() {
                                  -					self._clientDiv.removeChild(child);
                                  -					self._updateDOMSelection();
                                  -				};
                                  -				var result = false;
                                  -				/* 
                                  -				* Try execCommand first, it works on firefox with clipboard permission,
                                  -				* chrome 5, safari 4.
                                  -				*/
                                  -				this._ignoreCopy = true;
                                  -				try {
                                  -					result = document.execCommand("copy", false, null);
                                  -				} catch (e) {}
                                  -				this._ignoreCopy = false;
                                  -				if (!result) {
                                  -					if (event) {
                                  -						setTimeout(cleanup, 0);
                                  -						return false;
                                  -					}
                                  -				}
                                  -				/* no event and no permission, copy can not be done */
                                  -				cleanup();
                                  -				return true;
                                  -			}
                                  -			if (event && event.clipboardData) {
                                  -				//webkit
                                  -				return event.clipboardData.setData("text/plain", text); 
                                  -			}
                                  -		},
                                  -		_setDOMSelection: function (startNode, startOffset, endNode, endOffset) {
                                  -			var window = this._frameWindow;
                                  -			var document = this._frameDocument;
                                  -			var startLineNode, startLineOffset, endLineNode, endLineOffset;
                                  -			var offset = 0;
                                  -			var lineChild = startNode.firstChild;
                                  -			var node, nodeLength, model = this._model;
                                  -			var startLineEnd = model.getLine(startNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (offset + nodeLength > startOffset || offset + nodeLength >= startLineEnd) {
                                  -					startLineNode = node;
                                  -					startLineOffset = startOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && startLineOffset === nodeLength) {
                                  -						startLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			offset = 0;
                                  -			lineChild = endNode.firstChild;
                                  -			var endLineEnd = this._model.getLine(endNode.lineIndex).length;
                                  -			while (lineChild) {
                                  -				node = lineChild.firstChild;
                                  -				nodeLength = node.length;
                                  -				if (lineChild.ignoreChars) {
                                  -					nodeLength -= lineChild.ignoreChars;
                                  -				}
                                  -				if (nodeLength + offset > endOffset || offset + nodeLength >= endLineEnd) {
                                  -					endLineNode = node;
                                  -					endLineOffset = endOffset - offset;
                                  -					if (lineChild.ignoreChars && nodeLength > 0 && endLineOffset === nodeLength) {
                                  -						endLineOffset += lineChild.ignoreChars; 
                                  -					}
                                  -					break;
                                  -				}
                                  -				offset += nodeLength;
                                  -				lineChild = lineChild.nextSibling;
                                  -			}
                                  -			var range;
                                  -			
                                  -			if (isPad) {
                                  -				var startLineBounds, l;
                                  -				range = document.createRange();
                                  -				startLineBounds = this._getLineBoundingClientRect(startNode);
                                  -				if (startOffset === startLineEnd) {
                                  -					l = startLineBounds.right;
                                  -				} else {
                                  -					range.setStart(startLineNode, startLineOffset);
                                  -					range.setEnd(startLineNode, startLineOffset + 1);
                                  -					l = range.getBoundingClientRect().left;
                                  -				}
                                  -				var textArea = this._textArea;
                                  -				textArea.selectionStart = textArea.selectionEnd = 0;
                                  -				var rect = this._frame.getBoundingClientRect();
                                  -				var touchRect = this._touchDiv.getBoundingClientRect();
                                  -				var editorBounds = this._editorDiv.getBoundingClientRect();
                                  -				if (!(editorBounds.left <= l && l <= editorBounds.left + editorBounds.width &&
                                  -					editorBounds.top <= startLineBounds.top && startLineBounds.top <= editorBounds.top + editorBounds.height) ||
                                  -					!(startNode === endNode && startOffset === endOffset))
                                  -				{
                                  -					textArea.style.left = "-1000px";
                                  -				} else {
                                  -					textArea.style.left = (l - 4 + rect.left - touchRect.left) + "px";
                                  -				}
                                  -				textArea.style.top = (startLineBounds.top + rect.top - touchRect.top) + "px";
                                  -				textArea.style.width = "6px";
                                  -				textArea.style.height = (startLineBounds.bottom - startLineBounds.top) + "px";
                                  -			
                                  -				var selDiv = this._selDiv1;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				selDiv = this._selDiv2;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				selDiv = this._selDiv3;
                                  -				selDiv.style.width = "0px";
                                  -				selDiv.style.height = "0px";
                                  -				if (!(startNode === endNode && startOffset === endOffset)) {
                                  -					var handleWidth = 2;
                                  -					var handleBorder = handleWidth + "px blue solid";
                                  -					var clientBounds = this._clientDiv.getBoundingClientRect();
                                  -					var left = clientBounds.left;
                                  -					var right = clientBounds.right;
                                  -					selDiv = this._selDiv1;
                                  -					selDiv.style.left = l + "px";
                                  -					selDiv.style.top = startLineBounds.top + "px";
                                  -					selDiv.style.width = (right - l) + "px";
                                  -					selDiv.style.height = (startLineBounds.bottom - startLineBounds.top + 1) + "px";
                                  -					selDiv.style.borderLeft = handleBorder;
                                  -					selDiv.style.borderRight = "0px";
                                  -					var r;
                                  -					var endLineBounds = this._getLineBoundingClientRect(endNode);
                                  -					if (endOffset === 0) {
                                  -						r = endLineBounds.left;
                                  -					} else {
                                  -						if (endLineOffset === 0) {
                                  -							endLineNode = endLineNode.parentNode.previousSibling.firstChild;
                                  -							endLineOffset = endLineNode.length;
                                  -						}
                                  -						range.setStart(endLineNode, endLineOffset - 1);
                                  -						range.setEnd(endLineNode, endLineOffset);
                                  -						r = range.getBoundingClientRect().right;
                                  -					}
                                  -					if (startNode === endNode) {
                                  -						selDiv.style.width = (r - l - handleWidth * 2) + "px";
                                  -						selDiv.style.borderRight = handleBorder;
                                  -					} else {
                                  -						selDiv = this._selDiv3;
                                  -						selDiv.style.left = left + "px";
                                  -						selDiv.style.top = endLineBounds.top + "px";
                                  -						selDiv.style.width = (r - left - handleWidth) + "px";
                                  -						selDiv.style.height = (endLineBounds.bottom - endLineBounds.top) + "px";
                                  -						selDiv.style.borderRight = handleBorder;
                                  -						if (endNode.lineIndex - startNode.lineIndex > 1) {
                                  -							selDiv = this._selDiv2;
                                  -							selDiv.style.left = startLineBounds.left + "px";
                                  -							selDiv.style.top = startLineBounds.bottom + "px";
                                  -							selDiv.style.width = (right - left) + "px";
                                  -							selDiv.style.height = (endLineBounds.top - startLineBounds.bottom + 1) + "px";
                                  -						}
                                  -					}
                                  -				}
                                  -				return;
                                  -			}
                                  -			if (window.getSelection) {
                                  -				//W3C
                                  -				range = document.createRange();
                                  -				range.setStart(startLineNode, startLineOffset);
                                  -				range.setEnd(endLineNode, endLineOffset);
                                  -				var sel = window.getSelection();
                                  -				this._ignoreSelect = false;
                                  -				if (sel.rangeCount > 0) { sel.removeAllRanges(); }
                                  -				sel.addRange(range);
                                  -				this._ignoreSelect = true;
                                  -			} else if (document.selection) {
                                  -				//IE < 9
                                  -				var body = document.body;
                                  -
                                  -				/*
                                  -				* Bug in IE. For some reason when text is deselected the overflow
                                  -				* selection at the end of some lines does not get redrawn.  The
                                  -				* fix is to create a DOM element in the body to force a redraw.
                                  -				*/
                                  -				var child = document.createElement("DIV");
                                  -				body.appendChild(child);
                                  -				body.removeChild(child);
                                  -				
                                  -				range = body.createTextRange();
                                  -				range.moveToElementText(startLineNode.parentNode);
                                  -				range.moveStart("character", startLineOffset);
                                  -				var endRange = body.createTextRange();
                                  -				endRange.moveToElementText(endLineNode.parentNode);
                                  -				endRange.moveStart("character", endLineOffset);
                                  -				range.setEndPoint("EndToStart", endRange);
                                  -				this._ignoreSelect = false;
                                  -				range.select();
                                  -				this._ignoreSelect = true;
                                  -			}
                                  -		},
                                  -		_setGrab: function (target) {
                                  -			if (target === this._grabControl) { return; }
                                  -			if (target) {
                                  -				addHandler(target, "mousemove", this._mouseMoveClosure);
                                  -				addHandler(target, "mouseup", this._mouseUpClosure);
                                  -				if (target.setCapture) { target.setCapture(); }
                                  -				this._grabControl = target;
                                  -			} else {
                                  -				removeHandler(this._grabControl, "mousemove", this._mouseMoveClosure);
                                  -				removeHandler(this._grabControl, "mouseup", this._mouseUpClosure);
                                  -				if (this._grabControl.releaseCapture) { this._grabControl.releaseCapture(); }
                                  -				this._grabControl = null;
                                  -			}
                                  -		},
                                  -		_setSelection: function (selection, scroll, update) {
                                  -			if (selection) {
                                  -				this._columnX = -1;
                                  -				if (update === undefined) { update = true; }
                                  -				var oldSelection = this._selection; 
                                  -				if (!oldSelection.equals(selection)) {
                                  -					this._selection = selection;
                                  -					var e = {
                                  -						oldValue: {start:oldSelection.start, end:oldSelection.end},
                                  -						newValue: {start:selection.start, end:selection.end}
                                  -					};
                                  -					this.onSelection(e);
                                  -					if (scroll) { update = !this._showCaret(); }
                                  -				}
                                  -				
                                  -				/* Sometimes the browser changes the selection 
                                  -				 * as result of method calls or "leaked" events. 
                                  -				 * The fix is to set the visual selection even
                                  -				 * when the logical selection is not changed.
                                  -				 */
                                  -				if (update) { this._updateDOMSelection(); }
                                  -			}
                                  -		},
                                  -		_setSelectionTo: function (x,y,extent) {
                                  -			var model = this._model, offset;
                                  -			var selection = this._getSelection();
                                  -			var lineIndex = this._getYToLine(y);
                                  -			if (this._clickCount === 1) {
                                  -				offset = this._getXToOffset(lineIndex, x);
                                  -				selection.extend(offset);
                                  -				if (!extent) { selection.collapse(); }
                                  -			} else {
                                  -				var word = (this._clickCount & 1) === 0;
                                  -				var start, end;
                                  -				if (word) {
                                  -					offset = this._getXToOffset(lineIndex, x);
                                  -					if (this._doubleClickSelection) {
                                  -						if (offset >= this._doubleClickSelection.start) {
                                  -							start = this._doubleClickSelection.start;
                                  -							end = this._getOffset(offset, true, +1);
                                  -						} else {
                                  -							start = this._getOffset(offset, true, -1);
                                  -							end = this._doubleClickSelection.end;
                                  -						}
                                  -					} else {
                                  -						start = this._getOffset(offset, true, -1);
                                  -						end = this._getOffset(start, true, +1);
                                  -					}
                                  -				} else {
                                  -					if (this._doubleClickSelection) {
                                  -						var doubleClickLine = model.getLineAtOffset(this._doubleClickSelection.start);
                                  -						if (lineIndex >= doubleClickLine) {
                                  -							start = model.getLineStart(doubleClickLine);
                                  -							end = model.getLineEnd(lineIndex);
                                  -						} else {
                                  -							start = model.getLineStart(lineIndex);
                                  -							end = model.getLineEnd(doubleClickLine);
                                  -						}
                                  -					} else {
                                  -						start = model.getLineStart(lineIndex);
                                  -						end = model.getLineEnd(lineIndex);
                                  -					}
                                  -				}
                                  -				selection.setCaret(start);
                                  -				selection.extend(end);
                                  -			} 
                                  -			this._setSelection(selection, true, true);
                                  -		},
                                  -		_showCaret: function () {
                                  -			var model = this._model;
                                  -			var selection = this._getSelection();
                                  -			var scroll = this._getScroll();
                                  -			var caret = selection.getCaret();
                                  -			var start = selection.start;
                                  -			var end = selection.end;
                                  -			var startLine = model.getLineAtOffset(start); 
                                  -			var endLine = model.getLineAtOffset(end);
                                  -			var endInclusive = Math.max(Math.max(start, model.getLineStart(endLine)), end - 1);
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			var clientWidth = this._getClientWidth();
                                  -			var leftEdge = editorPad.left;
                                  -			var rightEdge = editorPad.left + clientWidth;
                                  -			var bounds = this._getBoundsAtOffset(caret === start ? start : endInclusive);
                                  -			var left = bounds.left;
                                  -			var right = bounds.right;
                                  -			var minScroll = clientWidth / 4;
                                  -			if (!selection.isEmpty() && startLine === endLine) {
                                  -				bounds = this._getBoundsAtOffset(caret === end ? start : endInclusive);
                                  -				var selectionWidth = caret === start ? bounds.right - left : right - bounds.left;
                                  -				if ((clientWidth - minScroll) > selectionWidth) {
                                  -					if (left > bounds.left) { left = bounds.left; }
                                  -					if (right < bounds.right) { right = bounds.right; }
                                  -				}
                                  -			}
                                  -			var editorRect = this._editorDiv.getBoundingClientRect(); 
                                  -			left -= editorRect.left;
                                  -			right -= editorRect.left;
                                  -			var pixelX = 0;
                                  -			if (left < leftEdge) {
                                  -				pixelX = Math.min(left - leftEdge, -minScroll);
                                  -			}
                                  -			if (right > rightEdge) {
                                  -				var maxScroll = this._scrollDiv.scrollWidth - scroll.x - clientWidth;
                                  -				pixelX = Math.min(maxScroll,  Math.max(right - rightEdge, minScroll));
                                  -			}
                                  -
                                  -			var pixelY = 0;
                                  -			var topIndex = this._getTopIndex(true);
                                  -			var bottomIndex = this._getBottomIndex(true);
                                  -			var caretLine = model.getLineAtOffset(caret);
                                  -			var clientHeight = this._getClientHeight();
                                  -			if (!(topIndex <= caretLine && caretLine <= bottomIndex)) {
                                  -				var lineHeight = this._getLineHeight();
                                  -				var selectionHeight = (endLine - startLine) * lineHeight;
                                  -				pixelY = caretLine * lineHeight;
                                  -				pixelY -= scroll.y;
                                  -				if (pixelY + lineHeight > clientHeight) {
                                  -					pixelY -= clientHeight - lineHeight;
                                  -					if (caret === start && start !== end) {
                                  -						pixelY += Math.min(clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				} else {
                                  -					if (caret === end) {
                                  -						pixelY -= Math.min (clientHeight - lineHeight, selectionHeight);
                                  -					}
                                  -				}
                                  -			}
                                  -
                                  -			if (pixelX !== 0 || pixelY !== 0) {
                                  -				this._scrollView (pixelX, pixelY);
                                  -				if (clientHeight !== this._getClientHeight() || clientWidth !== this._getClientWidth()) {
                                  -					this._showCaret();
                                  -				}
                                  -				return true;
                                  -			}
                                  -			return false;
                                  -		},
                                  -		_startIME: function () {
                                  -			if (this._imeOffset !== -1) { return; }
                                  -			var selection = this._getSelection();
                                  -			if (!selection.isEmpty()) {
                                  -				this._modifyContent({text: "", start: selection.start, end: selection.end}, true);
                                  -			}
                                  -			this._imeOffset = selection.start;
                                  -		},
                                  -		_unhookEvents: function() {
                                  -			this._model.removeListener(this._modelListener);
                                  -			this._modelListener = null;
                                  -
                                  -			this._mouseMoveClosure = null;
                                  -			this._mouseUpClosure = null;
                                  -
                                  -			for (var i=0; i<this._handlers.length; i++) {
                                  -				var h = this._handlers[i];
                                  -				removeHandler(h.target, h.type, h.handler);
                                  -			}
                                  -			this._handlers = null;
                                  -		},
                                  -		_updateDOMSelection: function () {
                                  -			if (this._ignoreDOMSelection) { return; }
                                  -			var selection = this._getSelection();
                                  -			var model = this._model;
                                  -			var startLine = model.getLineAtOffset(selection.start);
                                  -			var endLine = model.getLineAtOffset(selection.end);
                                  -			var firstNode = this._getLineNext();
                                  -			/*
                                  -			* Bug in Firefox. For some reason, after a update page sometimes the 
                                  -			* firstChild returns null incorrectly. The fix is to ignore show selection.
                                  -			*/
                                  -			if (!firstNode) { return; }
                                  -			var lastNode = this._getLinePrevious();
                                  -			
                                  -			var topNode, bottomNode, topOffset, bottomOffset;
                                  -			if (startLine < firstNode.lineIndex) {
                                  -				topNode = firstNode;
                                  -				topOffset = 0;
                                  -			} else if (startLine > lastNode.lineIndex) {
                                  -				topNode = lastNode;
                                  -				topOffset = 0;
                                  -			} else {
                                  -				topNode = this._getLineNode(startLine);
                                  -				topOffset = selection.start - model.getLineStart(startLine);
                                  -			}
                                  -
                                  -			if (endLine < firstNode.lineIndex) {
                                  -				bottomNode = firstNode;
                                  -				bottomOffset = 0;
                                  -			} else if (endLine > lastNode.lineIndex) {
                                  -				bottomNode = lastNode;
                                  -				bottomOffset = 0;
                                  -			} else {
                                  -				bottomNode = this._getLineNode(endLine);
                                  -				bottomOffset = selection.end - model.getLineStart(endLine);
                                  -			}
                                  -			this._setDOMSelection(topNode, topOffset, bottomNode, bottomOffset);
                                  -		},
                                  -		_updatePage: function() {
                                  -			if (this._updateTimer) { 
                                  -				clearTimeout(this._updateTimer);
                                  -				this._updateTimer = null;
                                  -			}
                                  -			var document = this._frameDocument;
                                  -			var frameWidth = this._getFrameWidth();
                                  -			var frameHeight = this._getFrameHeight();
                                  -			document.body.style.width = frameWidth + "px";
                                  -			document.body.style.height = frameHeight + "px";
                                  -			
                                  -			var editorDiv = this._editorDiv;
                                  -			var clientDiv = this._clientDiv;
                                  -			var editorPad = this._getEditorPadding();
                                  -			
                                  -			/* Update editor height in order to have client height computed */
                                  -			editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -			
                                  -			var model = this._model;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var scrollY = this._getScroll().y;
                                  -			var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -			var topIndex = Math.floor(firstLine);
                                  -			var lineStart = Math.max(0, topIndex - 1);
                                  -			var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -			var lineCount = model.getLineCount();
                                  -			var clientHeight = this._getClientHeight();
                                  -			var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -			var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -			var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -			var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -			this._partialY = partialY;
                                  -			
                                  -			var lineIndex, lineWidth;
                                  -			var child = clientDiv.firstChild;
                                  -			while (child) {
                                  -				lineIndex = child.lineIndex;
                                  -				var nextChild = child.nextSibling;
                                  -				if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -					if (this._mouseWheelLine === child) {
                                  -						child.style.display = "none";
                                  -						child.lineIndex = -1;
                                  -					} else {
                                  -						clientDiv.removeChild(child);
                                  -					}
                                  -				}
                                  -				child = nextChild;
                                  -			}
                                  -			// Webkit still wraps even if pre is used
                                  -			clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -			child = this._getLineNext();
                                  -			var frag = document.createDocumentFragment();
                                  -			for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -				if (!child || child.lineIndex > lineIndex) {
                                  -					this._createLine(frag, null, document, lineIndex, model);
                                  -				} else {
                                  -					if (frag.firstChild) {
                                  -						clientDiv.insertBefore(frag, child);
                                  -						frag = document.createDocumentFragment();
                                  -					}
                                  -					child = this._getLineNext(child);
                                  -				}
                                  -			}
                                  -			if (frag.firstChild) { clientDiv.insertBefore(frag, child); }
                                  -
                                  -			child = this._getLineNext();
                                  -			while (child) {
                                  -				lineWidth = child.lineWidth;
                                  -				if (lineWidth === undefined) {
                                  -					var rect = this._getLineBoundingClientRect(child);
                                  -					lineWidth = child.lineWidth = rect.right - rect.left;
                                  -				}
                                  -				if (lineWidth >= this._maxLineWidth) {
                                  -					this._maxLineWidth = lineWidth;
                                  -					this._maxLineIndex = child.lineIndex;
                                  -				}
                                  -				if (child.lineIndex === topIndex) { this._topChild = child; }
                                  -				if (child.lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -				child = this._getLineNext(child);
                                  -			}
                                  -
                                  -			// Update rulers
                                  -			this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -			this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -			
                                  -			var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -			var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -			editorDiv.style.left = leftWidth + "px";
                                  -			editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -			if (this._rightDiv) {
                                  -				this._rightDiv.style.left = (frameWidth - rightWidth) + "px"; 
                                  -			}
                                  -			
                                  -			var scrollDiv = this._scrollDiv;
                                  -			/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -			var scrollHeight = lineCount * lineHeight;
                                  -			scrollDiv.style.height = scrollHeight + "px";
                                  -			var clientWidth = this._getClientWidth();
                                  -			var width = Math.max(this._maxLineWidth, clientWidth);
                                  -			/*
                                  -			* Except by IE 8 and earlier, all other browsers are not allocating enough space for the right padding 
                                  -			* in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -			*/
                                  -			var scrollWidth = width;
                                  -			if (!isIE || isIE >= 9) { width += editorPad.right; }
                                  -			scrollDiv.style.width = width + "px";
                                  -
                                  -			/*
                                  -			* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -			* 
                                  -			* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -			* forces the client area to be recomputed.
                                  -			*/
                                  -			if (!isPad) {
                                  -				this._updateDOMSelection();
                                  -			}
                                  -			if (clientHeight !== this._getClientHeight()) {
                                  -				this._updatePage();
                                  -				return;
                                  -			}
                                  -			// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -			var scroll = this._getScroll();
                                  -			var left = scroll.x;
                                  -			var clipLeft = left;
                                  -			var clipTop = top;
                                  -			var clipRight = left + clientWidth;
                                  -			var clipBottom = top + clientHeight;
                                  -			if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -			if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -			if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -			if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -			clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -			clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -			clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -			clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -			clientDiv.style.height = (clientHeight + top) + "px";
                                  -			var overlayDiv = this._overlayDiv;
                                  -			if (overlayDiv) {
                                  -				overlayDiv.style.clip = clientDiv.style.clip;
                                  -				overlayDiv.style.left = clientDiv.style.left;
                                  -				overlayDiv.style.top = clientDiv.style.top;
                                  -				overlayDiv.style.width = clientDiv.style.width;
                                  -				overlayDiv.style.height = clientDiv.style.height;
                                  -			}
                                  -			function _updateRulerSize(divRuler) {
                                  -				if (!divRuler) { return; }
                                  -				var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -				var cells = divRuler.firstChild.rows[0].cells;
                                  -				for (var i = 0; i < cells.length; i++) {
                                  -					var div = cells[i].firstChild;
                                  -					var offset = lineHeight;
                                  -					if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -					div.style.top = -offset + "px";
                                  -					div.style.height = (rulerHeight + offset) + "px";
                                  -					div = div.nextSibling;
                                  -				}
                                  -				divRuler.style.height = rulerHeight + "px";
                                  -			}
                                  -			_updateRulerSize(this._leftDiv);
                                  -			_updateRulerSize(this._rightDiv);
                                  -			if (isPad) {
                                  -				this._updateDOMSelection();
                                  -				var self = this;
                                  -				setTimeout(function() {self._resizeTouchDiv();}, 0);
                                  -			}
                                  -		},
                                  -		_updateRuler: function (divRuler, topIndex, bottomIndex) {
                                  -			if (!divRuler) { return; }
                                  -			var cells = divRuler.firstChild.rows[0].cells;
                                  -			var lineHeight = this._getLineHeight();
                                  -			var parentDocument = this._frameDocument;
                                  -			var editorPad = this._getEditorPadding();
                                  -			for (var i = 0; i < cells.length; i++) {
                                  -				var div = cells[i].firstChild;
                                  -				var ruler = div._ruler, style;
                                  -				if (div.rulerChanged) {
                                  -					this._applyStyle(ruler.getStyle(), div);
                                  -				}
                                  -				
                                  -				var widthDiv;
                                  -				var child = div.firstChild;
                                  -				if (child) {
                                  -					widthDiv = child;
                                  -					child = child.nextSibling;
                                  -				} else {
                                  -					widthDiv = parentDocument.createElement("DIV");
                                  -					widthDiv.style.visibility = "hidden";
                                  -					div.appendChild(widthDiv);
                                  -				}
                                  -				var lineIndex;
                                  -				if (div.rulerChanged) {
                                  -					if (widthDiv) {
                                  -						lineIndex = -1;
                                  -						this._applyStyle(ruler.getStyle(lineIndex), widthDiv);
                                  -						widthDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -						widthDiv.lineIndex = lineIndex;
                                  -						widthDiv.style.height = (lineHeight + editorPad.top) + "px";
                                  -					}
                                  -				}
                                  -
                                  -				var overview = ruler.getOverview(), lineDiv, frag;
                                  -				if (overview === "page") {
                                  -					while (child) {
                                  -						lineIndex = child.lineIndex;
                                  -						var nextChild = child.nextSibling;
                                  -						if (!(topIndex <= lineIndex && lineIndex <= bottomIndex) || child.lineChanged) {
                                  -							div.removeChild(child);
                                  -						}
                                  -						child = nextChild;
                                  -					}
                                  -					child = div.firstChild.nextSibling;
                                  -					frag = document.createDocumentFragment();
                                  -					for (lineIndex=topIndex; lineIndex<=bottomIndex; lineIndex++) {
                                  -						if (!child || child.lineIndex > lineIndex) {
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							lineDiv.style.height = lineHeight + "px";
                                  -							frag.appendChild(lineDiv);
                                  -						} else {
                                  -							if (frag.firstChild) {
                                  -								div.insertBefore(frag, child);
                                  -								frag = document.createDocumentFragment();
                                  -							}
                                  -							if (child) {
                                  -								child = child.nextSibling;
                                  -							}
                                  -						}
                                  -					}
                                  -					if (frag.firstChild) { div.insertBefore(frag, child); }
                                  -				} else {
                                  -					var buttonHeight = 17;
                                  -					var clientHeight = this._getClientHeight ();
                                  -					var trackHeight = clientHeight + editorPad.top + editorPad.bottom - 2 * buttonHeight;
                                  -					var lineCount = this._model.getLineCount ();
                                  -					var divHeight = trackHeight / lineCount;
                                  -					if (div.rulerChanged) {
                                  -						var count = div.childNodes.length;
                                  -						while (count > 1) {
                                  -							div.removeChild(div.lastChild);
                                  -							count--;
                                  -						}
                                  -						var lines = ruler.getAnnotations ();
                                  -						frag = document.createDocumentFragment();
                                  -						for (var j = 0; j < lines.length; j++) {
                                  -							lineIndex = lines[j];
                                  -							lineDiv = parentDocument.createElement("DIV");
                                  -							this._applyStyle(ruler.getStyle(lineIndex), lineDiv);
                                  -							lineDiv.style.position = "absolute";
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineIndex * divHeight) + "px";
                                  -							lineDiv.innerHTML = ruler.getHTML(lineIndex);
                                  -							lineDiv.lineIndex = lineIndex;
                                  -							frag.appendChild(lineDiv);
                                  -						}
                                  -						div.appendChild(frag);
                                  -					} else if (div._oldTrackHeight !== trackHeight) {
                                  -						lineDiv = div.firstChild ? div.firstChild.nextSibling : null;
                                  -						while (lineDiv) {
                                  -							lineDiv.style.top = buttonHeight + lineHeight + Math.floor(lineDiv.lineIndex * divHeight) + "px";
                                  -							lineDiv = lineDiv.nextSibling;
                                  -						}
                                  -					}
                                  -					div._oldTrackHeight = trackHeight;
                                  -				}
                                  -				div.rulerChanged = false;
                                  -				div = div.nextSibling;
                                  -			}
                                  -		}
                                  -	};//end prototype
                                  -	
                                  -	return Editor;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/js/model.js b/branches/flexBox/sandbox/sandbox/orion_nightly/js/model.js
                                  deleted file mode 100644
                                  index 62ed5997..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/js/model.js
                                  +++ /dev/null
                                  @@ -1,450 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: 
                                  - *		Felipe Heidrich (IBM Corporation) - initial API and implementation
                                  - *		Silenio Quarti (IBM Corporation) - initial API and implementation
                                  - ******************************************************************************/
                                  - 
                                  -/*global navigator */
                                  -
                                  -/**
                                  - * @namespace The global container for eclipse APIs.
                                  - */ 
                                  -var eclipse = eclipse || {};
                                  -
                                  -/**
                                  - * Constructs a new TextModel with the given text and default line delimiter.
                                  - *
                                  - * @param {String} [text=""] the text that the model will store
                                  - * @param {String} [lineDelimiter=platform delimiter] the line delimiter used when inserting new lines to the model.
                                  - *
                                  - * @name eclipse.TextModel
                                  - * @class The TextModel is an interface that provides text for the editor. Applications may
                                  - * implement the TextModel interface to provide a custom store for the editor content. The
                                  - * editor interacts with its text model in order to access and update the text that is being
                                  - * displayed and edited in the editor. This is the default implementation.
                                  - * <p>
                                  - * <b>See:</b><br>
                                  - * {@link eclipse.Editor}<br>
                                  - * {@link eclipse.Editor#setModel}
                                  - * </p>
                                  - */
                                  -eclipse.TextModel = (function() {
                                  -	var isWindows = navigator.platform.indexOf("Win") !== -1;
                                  -
                                  -	/** @private */
                                  -	function TextModel(text, lineDelimiter) {
                                  -		this._listeners = [];
                                  -		this._lineDelimiter = lineDelimiter ? lineDelimiter : (isWindows ? "\r\n" : "\n"); 
                                  -		this._lastLineIndex = -1;
                                  -		this._text = [""];
                                  -		this._lineOffsets = [0];
                                  -		this.setText(text);
                                  -	}
                                  -
                                  -	TextModel.prototype = /** @lends eclipse.TextModel.prototype */ {
                                  -		/**
                                  -		 * Adds a listener to the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to add.
                                  -		 * @param {Function} [listener.onChanged] see {@link #onChanged}.
                                  -		 * @param {Function} [listener.onChanging] see {@link #onChanging}.
                                  -		 * 
                                  -		 * @see removeListener
                                  -		 */
                                  -		addListener: function(listener) {
                                  -			this._listeners.push(listener);
                                  -		},
                                  -		/**
                                  -		 * Removes a listener from the model.
                                  -		 * 
                                  -		 * @param {Object} listener the listener to remove
                                  -		 * 
                                  -		 * @see #addListener
                                  -		 */
                                  -		removeListener: function(listener) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				if (this._listeners[i] === listener) {
                                  -					this._listeners.splice(i, 1);
                                  -					return;
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the number of characters in the model.
                                  -		 *
                                  -		 * @returns {Number} the number of characters in the model.
                                  -		 */
                                  -		getCharCount: function() {
                                  -			var count = 0;
                                  -			for (var i = 0; i<this._text.length; i++) {
                                  -				count += this._text[i].length;
                                  -			}
                                  -			return count;
                                  -		},
                                  -		/**
                                  -		 * Returns the text of the line at the given index.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>null</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @returns {String} the line text or <code>null</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineAtOffset
                                  -		 */
                                  -		getLine: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return null;
                                  -			}
                                  -			var start = this._lineOffsets[lineIndex];
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var text = this.getText(start, this._lineOffsets[lineIndex + 1]);
                                  -				if (includeDelimiter) {
                                  -					return text;
                                  -				}
                                  -				var end = text.length, c;
                                  -				while (((c = text.charCodeAt(end - 1)) === 10) || (c === 13)) {
                                  -					end--;
                                  -				}
                                  -				return text.substring(0, end);
                                  -			} else {
                                  -				return this.getText(start); 
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the line index at the given character offset.
                                  -		 * <p>
                                  -		 * The valid offsets are 0 to char count inclusive. The line index for
                                  -		 * char count is <code>line count - 1</code>. Returns <code>-1</code> if
                                  -		 * the offset is out of range.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} offset a character offset.
                                  -		 * @returns {Number} the zero based line index or <code>-1</code> if out of range.
                                  -		 */
                                  -		getLineAtOffset: function(offset) {
                                  -			if (!(0 <= offset && offset <= this.getCharCount())) {
                                  -				return -1;
                                  -			}
                                  -			var lineCount = this.getLineCount();
                                  -			var charCount = this.getCharCount();
                                  -			if (offset === charCount) {
                                  -				return lineCount - 1; 
                                  -			}
                                  -			var lineStart, lineEnd;
                                  -			var index = this._lastLineIndex;
                                  -			if (0 <= index && index < lineCount) {
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (lineStart <= offset && offset < lineEnd) {
                                  -					return index;
                                  -				}
                                  -			}
                                  -			var high = lineCount;
                                  -			var low = -1;
                                  -			while (high - low > 1) {
                                  -				index = Math.floor((high + low) / 2);
                                  -				lineStart = this._lineOffsets[index];
                                  -				lineEnd = index + 1 < lineCount ? this._lineOffsets[index + 1] : charCount;
                                  -				if (offset <= lineStart) {
                                  -					high = index;
                                  -				} else if (offset < lineEnd) {
                                  -					high = index;
                                  -					break;
                                  -				} else {
                                  -					low = index;
                                  -				}
                                  -			}
                                  -			this._lastLineIndex = high;
                                  -			return high;
                                  -		},
                                  -		/**
                                  -		 * Returns the number of lines in the model.
                                  -		 * <p>
                                  -		 * The model always has at least one line.
                                  -		 * </p>
                                  -		 *
                                  -		 * @returns {Number} the number of lines.
                                  -		 */
                                  -		getLineCount: function() {
                                  -			return this._lineOffsets.length;
                                  -		},
                                  -		/**
                                  -		 * Returns the line delimiter that is used by the editor
                                  -		 * when inserting new lines. New lines entered using key strokes 
                                  -		 * and paste operations use this line delimiter.
                                  -		 *
                                  -		 * @return {String} the line delimiter that is used by the editor when inserting new lines.
                                  -		 */
                                  -		getLineDelimiter: function() {
                                  -			return this._lineDelimiter;
                                  -		},
                                  -		/**
                                  -		 * Returns the end character offset for the given line. 
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that when the line delimiter is included, the 
                                  -		 * offset is either the start offset of the next line or char count. When the line delimiter is
                                  -		 * not included, the offset is the offset of the line delimiter.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @param {Boolean} [includeDelimiter=false] whether or not to include the line delimiter. 
                                  -		 * @return {Number} the line end offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineStart
                                  -		 */
                                  -		getLineEnd: function(lineIndex, includeDelimiter) {
                                  -			var lineCount = this.getLineCount();
                                  -			if (!(0 <= lineIndex && lineIndex < lineCount)) {
                                  -				return -1;
                                  -			}
                                  -			if (lineIndex + 1 < lineCount) {
                                  -				var end = this._lineOffsets[lineIndex + 1];
                                  -				if (includeDelimiter) {
                                  -					return end;
                                  -				}
                                  -				var text = this.getText(Math.max(0, end - 2), end);
                                  -				var i = text.length, c;
                                  -				while (((c = text.charCodeAt(i - 1)) === 10) || (c === 13)) {
                                  -					i--;
                                  -				}
                                  -				return end - (text.length - i);
                                  -			} else {
                                  -				return this.getCharCount();
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Returns the start character offset for the given line.
                                  -		 * <p>
                                  -		 * The valid indices are 0 to line count exclusive.  Returns <code>-1</code> 
                                  -		 * if the index is out of range. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} lineIndex the zero based index of the line.
                                  -		 * @return {Number} the line start offset or <code>-1</code> if out of range.
                                  -		 *
                                  -		 * @see #getLineEnd
                                  -		 */
                                  -		getLineStart: function(lineIndex) {
                                  -			if (!(0 <= lineIndex && lineIndex < this.getLineCount())) {
                                  -				return -1;
                                  -			}
                                  -			return this._lineOffsets[lineIndex];
                                  -		},
                                  -		/**
                                  -		 * Returns the text for the given range.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that character at the end offset
                                  -		 * is not included in the returned text.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #setText
                                  -		 */
                                  -		getText: function(start, end) {
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			if (firstChunk === lastChunk) {
                                  -				return this._text[firstChunk].substring(start - firstOffset, end - lastOffset);
                                  -			}
                                  -			var beforeText = this._text[firstChunk].substring(start - firstOffset);
                                  -			var afterText = this._text[lastChunk].substring(0, end - lastOffset);
                                  -			return beforeText + this._text.slice(firstChunk+1, lastChunk).join("") + afterText; 
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text is about to change.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanging}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} text the text that is about to be inserted in the model.
                                  -		 * @param {Number} start the character offset in the model where the change will occur.
                                  -		 * @param {Number} removedCharCount the number of characters being removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters being added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines being removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines being added to the model.
                                  -		 */
                                  -		onChanging: function(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanging) { 
                                  -					l.onChanging(text, start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Notifies all listeners that the text has changed.
                                  -		 * <p>
                                  -		 * This notification is intended to be used only by the editor. Application clients should
                                  -		 * use {@link eclipse.Editor#event:onModelChanged}.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * NOTE: This method is not meant to called directly by application code. It is called internally by the TextModel
                                  -		 * as part of the implementation of {@link #setText}. This method is included in the public API for documentation
                                  -		 * purposes and to allow integration with other toolkit frameworks.
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {Number} start the character offset in the model where the change occurred.
                                  -		 * @param {Number} removedCharCount the number of characters removed from the model.
                                  -		 * @param {Number} addedCharCount the number of characters added to the model.
                                  -		 * @param {Number} removedLineCount the number of lines removed from the model.
                                  -		 * @param {Number} addedLineCount the number of lines added to the model.
                                  -		 */
                                  -		onChanged: function(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount) {
                                  -			for (var i = 0; i < this._listeners.length; i++) {
                                  -				var l = this._listeners[i]; 
                                  -				if (l && l.onChanged) { 
                                  -					l.onChanged(start, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -				}
                                  -			}
                                  -		},
                                  -		/**
                                  -		 * Replaces the text in the given range with the given text.
                                  -		 * <p>
                                  -		 * The end offset is not inclusive. This means that the character at the 
                                  -		 * end offset is not replaced.
                                  -		 * </p>
                                  -		 * <p>
                                  -		 * The text model must notify the listeners before and after the
                                  -		 * the text is changed by calling {@link #onChanging} and {@link #onChanged}
                                  -		 * respectively. 
                                  -		 * </p>
                                  -		 *
                                  -		 * @param {String} [text=""] the new text.
                                  -		 * @param {Number} [start=0] the zero based start offset of text range.
                                  -		 * @param {Number} [end=char count] the zero based end offset of text range.
                                  -		 *
                                  -		 * @see #getText
                                  -		 */
                                  -		setText: function(text, start, end) {
                                  -			if (text === undefined) { text = ""; }
                                  -			if (start === undefined) { start = 0; }
                                  -			if (end === undefined) { end = this.getCharCount(); }
                                  -			var startLine = this.getLineAtOffset(start);
                                  -			var endLine = this.getLineAtOffset(end);
                                  -			var eventStart = start;
                                  -			var removedCharCount = end - start;
                                  -			var removedLineCount = endLine - startLine;
                                  -			var addedCharCount = text.length;
                                  -			var addedLineCount = 0;
                                  -			var lineCount = this.getLineCount();
                                  -			
                                  -			var cr = 0, lf = 0, index = 0;
                                  -			var newLineOffsets = [];
                                  -			while (true) {
                                  -				if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -				if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -				if (lf === -1 && cr === -1) { break; }
                                  -				if (cr !== -1 && lf !== -1) {
                                  -					if (cr + 1 === lf) {
                                  -						index = lf + 1;
                                  -					} else {
                                  -						index = (cr < lf ? cr : lf) + 1;
                                  -					}
                                  -				} else if (cr !== -1) {
                                  -					index = cr + 1;
                                  -				} else {
                                  -					index = lf + 1;
                                  -				}
                                  -				newLineOffsets.push(start + index);
                                  -				addedLineCount++;
                                  -			}
                                  -		
                                  -			this.onChanging(text, eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -			
                                  -			//TODO this should be done the loops below to avoid getText()
                                  -			if (newLineOffsets.length === 0) {
                                  -				var startLineOffset = this.getLineStart(startLine), endLineOffset;
                                  -				if (endLine + 1 < lineCount) {
                                  -					endLineOffset = this.getLineStart(endLine + 1);
                                  -				} else {
                                  -					endLineOffset = this.getCharCount();
                                  -				}
                                  -				if (start !== startLineOffset) {
                                  -					text = this.getText(startLineOffset, start) + text;
                                  -					start = startLineOffset;
                                  -				}
                                  -				if (end !== endLineOffset) {
                                  -					text = text + this.getText(end, endLineOffset);
                                  -					end = endLineOffset;
                                  -				}
                                  -			}
                                  -			
                                  -			var changeCount = addedCharCount - removedCharCount;
                                  -			for (var j = startLine + removedLineCount + 1; j < lineCount; j++) {
                                  -				this._lineOffsets[j] += changeCount;
                                  -			}
                                  -			var args = [startLine + 1, removedLineCount].concat(newLineOffsets);
                                  -			Array.prototype.splice.apply(this._lineOffsets, args);
                                  -			
                                  -			var offset = 0, chunk = 0, length;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (start <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var firstOffset = offset;
                                  -			var firstChunk = chunk;
                                  -			while (chunk<this._text.length) {
                                  -				length = this._text[chunk].length; 
                                  -				if (end <= offset + length) { break; }
                                  -				offset += length;
                                  -				chunk++;
                                  -			}
                                  -			var lastOffset = offset;
                                  -			var lastChunk = chunk;
                                  -			var firstText = this._text[firstChunk];
                                  -			var lastText = this._text[lastChunk];
                                  -			var beforeText = firstText.substring(0, start - firstOffset);
                                  -			var afterText = lastText.substring(end - lastOffset);
                                  -			var params = [firstChunk, lastChunk - firstChunk + 1];
                                  -			if (beforeText) { params.push(beforeText); }
                                  -			if (text) { params.push(text); }
                                  -			if (afterText) { params.push(afterText); }
                                  -			Array.prototype.splice.apply(this._text, params);
                                  -			if (this._text.length === 0) { this._text = [""]; }
                                  -			
                                  -			this.onChanged(eventStart, removedCharCount, addedCharCount, removedLineCount, addedLineCount);
                                  -		}
                                  -	};
                                  -	
                                  -	return TextModel;
                                  -}()); 
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/orion.html b/branches/flexBox/sandbox/sandbox/orion_nightly/orion.html
                                  deleted file mode 100644
                                  index 2e770af4..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/orion.html
                                  +++ /dev/null
                                  @@ -1,301 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script src="js/model.js"></script>
                                  -  <script src="js/editor.js"></script>
                                  -  <script src="samples/rulers.js"></script>
                                  -  <script src="samples/styler.js"></script>
                                  -  <script src="js-tests/test-performance.js"></script>
                                  -  <script>
                                  -
                                  -var editor;
                                  -var tester = new PerformanceTest();
                                  -
                                  -function _updatePage_new () {
                                  -    var isPad = false;
                                  -    var isIE = 0;
                                  -    var isWebkit = 0;
                                  -    
                                  -	if (this._updateTimer) {
                                  -		clearTimeout(this._updateTimer);
                                  -		this._updateTimer = null;
                                  -	}
                                  -	var document = this._frameDocument;
                                  -	///var frameWidth = this._getFrameWidth();
                                  -	///var frameHeight = this._getFrameHeight();
                                  -	/// pedro: I guess this has no effect
                                  -	///document.body.style.width = frameWidth + "px";
                                  -	///document.body.style.height = frameHeight + "px";
                                  -
                                  -	var editorDiv = this._editorDiv;
                                  -	var clientDiv = this._clientDiv;
                                  -	///var editorPad = this._getEditorPadding();
                                  -	/// pedro: why not removing the editor padding? this way we could avoid calculating
                                  -	/// the padding each time _updatePage is called. If this is not possible or
                                  -	/// desirable why not having the padding hardcoded depeding on a static
                                  -	/// preference?
                                  -	var editorPad = {top:1, bottom:1, left: 2, right: 2};
                                  -
                                  -	/* Update editor height in order to have client height computed */
                                  -	///editorDiv.style.height = Math.max(0, (frameHeight - editorPad.top - editorPad.bottom)) + "px";
                                  -
                                  -	var model = this._model;
                                  -	///var lineHeight = this._getLineHeight();
                                  -	/// pedro: calculate the char height and width statically during initialization
                                  -    var lineHeight = this._staticLineHeight;
                                  -	///var scrollY = this._getScroll().y;
                                  -	/// pedro: get scroll values directly from editorDiv
                                  -	var scrollY = editorDiv.scrollTop;
                                  -	var scrollX = editorDiv.scrollLeft;
                                  -	var firstLine = Math.max(0, scrollY) / lineHeight;
                                  -	var topIndex = Math.floor(firstLine);
                                  -	var lineStart = Math.max(0, topIndex - 1);
                                  -	var top = Math.round((firstLine - lineStart) * lineHeight);
                                  -	var lineCount = model.getLineCount();
                                  -	///var clientHeight = this._getClientHeight();
                                  -	/// pedro: calculate client height statically during initialization (should be
                                  -    /// updated when the viewport is resized)
                                  -	var clientHeight = this._staticClientHeight;
                                  -	var partialY = Math.round((firstLine - topIndex) * lineHeight);
                                  -	var linesPerPage = Math.floor((clientHeight + partialY) / lineHeight);
                                  -	var bottomIndex = Math.min(topIndex + linesPerPage, lineCount - 1);
                                  -	var lineEnd = Math.min(bottomIndex + 1, lineCount - 1);
                                  -	this._partialY = partialY;
                                  -
                                  -	var lineIndex, lineWidth;
                                  -	var child = clientDiv.firstChild;
                                  -	while (child) {
                                  -		lineIndex = child.lineIndex;
                                  -		var nextChild = child.nextSibling;
                                  -		if (!(lineStart <= lineIndex && lineIndex <= lineEnd) || child.lineChanged || child.lineIndex === -1) {
                                  -			if (this._mouseWheelLine === child) {
                                  -				child.style.display = "none";
                                  -				child.lineIndex = -1;
                                  -			} else {
                                  -				clientDiv.removeChild(child);
                                  -			}
                                  -		}
                                  -		child = nextChild;
                                  -	}
                                  -	// Webkit still wraps even if pre is used
                                  -	/// pedro: do we really need this?
                                  -	///clientDiv.style.width = (0x7FFFF).toString() + "px";
                                  -
                                  -	child = this._getLineNext();
                                  -	var frag = document.createDocumentFragment();
                                  -	for (lineIndex=lineStart; lineIndex<=lineEnd; lineIndex++) {
                                  -		if (!child || child.lineIndex > lineIndex) {
                                  -			this._createLine(frag, null, document, lineIndex, model);
                                  -		} else {
                                  -			if (frag.firstChild) {
                                  -				clientDiv.insertBefore(frag, child);
                                  -				/// pedro: no need to create fragment here, it will always have
                                  -				/// zero childNodes at this point
                                  -				///frag = document.createDocumentFragment();
                                  -			}
                                  -			child = this._getLineNext(child);
                                  -		}
                                  -	}
                                  -	if (frag.firstChild) { clientDiv.insertBefore(frag, child); }
                                  -
                                  -	child = this._getLineNext();
                                  -	while (child) {
                                  -        /*
                                  -		lineWidth = child.lineWidth;
                                  -		if (lineWidth === undefined) {
                                  -			var rect = this._getLineBoundingClientRect(child);
                                  -			lineWidth = child.lineWidth = rect.right - rect.left;
                                  -		}
                                  -		if (lineWidth >= this._maxLineWidth) {
                                  -			this._maxLineWidth = lineWidth;
                                  -			this._maxLineIndex = child.lineIndex;
                                  -		}
                                  -		*/
                                  -		if (child.lineIndex === topIndex) { this._topChild = child; }
                                  -		if (child.lineIndex === bottomIndex) { this._bottomChild = child; }
                                  -		child = this._getLineNext(child);
                                  -	}
                                  -
                                  -	// Update rulers
                                  -	this._updateRuler(this._leftDiv, topIndex, bottomIndex);
                                  -	this._updateRuler(this._rightDiv, topIndex, bottomIndex);
                                  -
                                  -	var leftWidth = this._leftDiv ? this._leftDiv.scrollWidth : 0;
                                  -	///var rightWidth = this._rightDiv ? this._rightDiv.scrollWidth : 0;
                                  -	/*
                                  -	editorDiv.style.left = leftWidth + "px";
                                  -	editorDiv.style.width = Math.max(0, frameWidth - leftWidth - rightWidth - editorPad.left - editorPad.right) + "px";
                                  -	if (this._rightDiv) {
                                  -		this._rightDiv.style.left = (frameWidth - rightWidth) + "px";
                                  -	}*/
                                  -
                                  -	var scrollDiv = this._scrollDiv;
                                  -	/* Need to set the height first in order for the width to consider the vertical scrollbar */
                                  -	var scrollHeight = lineCount * lineHeight;
                                  -	//scrollDiv.style.height = scrollHeight + "px";
                                  -	///var clientWidth = this._getClientWidth();
                                  -	/// pedro: calculate client width statically during initialization (should be
                                  -    /// updated when the viewport is resized)
                                  -	var clientWidth = this._staticClientWidth;
                                  -	var width = Math.max(this._maxLineWidth, clientWidth);
                                  -	/*
                                  -	* Except by IE 8 and earlier, all other browsers are not allocating enough space for the right padding
                                  -	* in the scrollbar. It is possible this a bug since all other paddings are considered.
                                  -	*/
                                  -	var scrollWidth = width;
                                  -	if (!isIE || isIE >= 9) { width += editorPad.right; }
                                  -	//scrollDiv.style.width = width + "px";
                                  -
                                  -	/*
                                  -	* Get client height after both scrollbars are visible and updatePage again to recalculate top and bottom indices.
                                  -	*
                                  -	* Note that updateDOMSelection() has to be called on IE before getting the new client height because it
                                  -	* forces the client area to be recomputed.
                                  -	*/
                                  -	if (!isPad) {
                                  -		this._updateDOMSelection();
                                  -	}
                                  -	/*
                                  -	if (clientHeight !== this._getClientHeight()) {
                                  -		this._updatePage();
                                  -		return;
                                  -	}*/
                                  -	// Get the left scroll after setting the width of the scrollDiv as this can change the horizontal scroll offset.
                                  -	///var scroll = this._getScroll();
                                  -	///var left = scroll.x;
                                  -	/// pedro: we are not resizing the scrollDiv so we can safely use the value computed earlier
                                  -	var left = scrollX;
                                  -	var clipLeft = left;
                                  -	var clipTop = top;
                                  -	var clipRight = left + clientWidth;
                                  -	var clipBottom = top + clientHeight;
                                  -	if (clipLeft === 0) { clipLeft -= editorPad.left; }
                                  -	if (clipTop === 0) { clipTop -= editorPad.top; }
                                  -	if (clipRight === scrollWidth) { clipRight += editorPad.right; }
                                  -	///if (scroll.y + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -	if (scrollY + clientHeight === scrollHeight) { clipBottom += editorPad.bottom; }
                                  -	clientDiv.style.clip = "rect(" + clipTop + "px," + clipRight + "px," + clipBottom + "px," + clipLeft + "px)";
                                  -	clientDiv.style.left = (-left + leftWidth + editorPad.left) + "px";
                                  -	clientDiv.style.top = (-top + editorPad.top) + "px";
                                  -	clientDiv.style.width = (isWebkit ? scrollWidth : clientWidth + left) + "px";
                                  -	clientDiv.style.height = (clientHeight + top) + "px";
                                  -
                                  -	var overlayDiv = this._overlayDiv;
                                  -	if (overlayDiv) {
                                  -		overlayDiv.style.clip = clientDiv.style.clip;
                                  -		overlayDiv.style.left = clientDiv.style.left;
                                  -		overlayDiv.style.top = clientDiv.style.top;
                                  -		overlayDiv.style.width = clientDiv.style.width;
                                  -		overlayDiv.style.height = clientDiv.style.height;
                                  -	}
                                  -
                                  -	/*
                                  -	function _updateRulerSize(divRuler) {
                                  -		if (!divRuler) { return; }
                                  -		var rulerHeight = clientHeight + editorPad.top + editorPad.bottom;
                                  -		var cells = divRuler.firstChild.rows[0].cells;
                                  -		for (var i = 0; i < cells.length; i++) {
                                  -			var div = cells[i].firstChild;
                                  -			var offset = lineHeight;
                                  -			if (div._ruler.getOverview() === "page") { offset += partialY; }
                                  -			div.style.top = -offset + "px";
                                  -			div.style.height = (rulerHeight + offset) + "px";
                                  -			div = div.nextSibling;
                                  -		}
                                  -		divRuler.style.height = rulerHeight + "px";
                                  -	}*/
                                  -	//_updateRulerSize(this._leftDiv);
                                  -	//_updateRulerSize(this._rightDiv);
                                  -	if (isPad) {
                                  -		this._updateDOMSelection();
                                  -		var self = this;
                                  -		setTimeout(function() {self._resizeTouchDiv();}, 0);
                                  -	}
                                  -}
                                  -
                                  -function createEditor() {
                                  -
                                  -    // get source sample text
                                  -    var text;
                                  -    var xhr = new XMLHttpRequest();
                                  -    xhr.onreadystatechange = function(){
                                  -        if (xhr.readyState == 4 && xhr.status == 200)
                                  -        {
                                  -            text = xhr.responseText;
                                  -        }
                                  -    };
                                  -    xhr.open("get", "./js/editor.js", false);
                                  -    xhr.send();
                                  -    
                                  -    // create editor
                                  -    var parentNode = document.getElementById("orion");
                                  -    tester.editor = editor = new eclipse.Editor({
                                  -        parent: parentNode,
                                  -        readonly: false,
                                  -        stylesheet: "editor.css"
                                  -    });
                                  -
                                  -    // use javascript styler for now, there is no html/xml syntax highlighting yet
                                  -    var styler = new eclipse.TextStyler(editor, "js");
                                  -
                                  -    // add a ruler with line numbers to the left side
                                  -    var lines = new eclipse.LineNumberRuler("left", {
                                  -        styleClass: "ruler_lines"
                                  -    }, {
                                  -        styleClass: "ruler_lines_odd"
                                  -    }, {
                                  -        styleClass: "ruler_lines_even"
                                  -    });
                                  -    
                                  -    editor.setText(text);
                                  -    editor.addRuler(lines);
                                  -
                                  -    // fix the height of the containing div
                                  -    parentNode.style.height = (editor.getLineHeight() * (editor.getModel().getLineCount() + 1)) + 2 + 'px';
                                  -
                                  -    editor._staticLineHeight = editor.getLineHeight();
                                  -    editor._staticClientWidth = editor._getClientWidth();
                                  -    editor._staticClientHeight = editor._getClientHeight();
                                  -}
                                  -
                                  -function newUpdatePage() {
                                  -    editor._updatePage = _updatePage_new;
                                  -    editor._staticLineHeight = editor.getLineHeight();
                                  -    editor._staticClientWidth = editor._getClientWidth();
                                  -    editor._staticClientHeight = editor._getClientHeight();
                                  -}
                                  -
                                  -function log() {
                                  -    console.log.apply(console, arguments);
                                  -}
                                  -  </script>
                                  -  <style>
                                  -  html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -  }
                                  -  #orion {
                                  -    width: 100%;
                                  -    height: 100% !important;
                                  -  }
                                  -  #test {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    right: 18px;
                                  -    text-align: right;
                                  -  }
                                  -  </style>
                                  -  </head>
                                  -  <body onload="createEditor()">
                                  -    <div id="orion">
                                  -    </div>
                                  -    <div id="test">
                                  -        <input type="button" value="Test Line Up" onclick="tester.test_lineUp()"><br />
                                  -        <input type="button" value="Test Line Down" onclick="tester.test_lineDown()"><br />
                                  -        <input type="button" value="New _updatePage" onclick="newUpdatePage()">
                                  -    </div>
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif
                                  deleted file mode 100644
                                  index a831fe72..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/browserEditor.html b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/browserEditor.html
                                  deleted file mode 100644
                                  index 1f18d4b1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/browserEditor.html
                                  +++ /dev/null
                                  @@ -1,170 +0,0 @@
                                  -<!--
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  --->
                                  -
                                  -<html>
                                  -<head>
                                  -<title>Performance Test</title>
                                  -<script language="javascript" type="text/javascript">
                                  -
                                  -var delimiter = "\r\n";
                                  -
                                  -function getFile(file) {
                                  -	var objXml = new XMLHttpRequest();
                                  -	objXml.open("GET",file,false);
                                  -	objXml.send(null);
                                  -	return objXml.responseText;
                                  -}
                                  -
                                  -function changeDelimiter(text, delimiter) {
                                  -	var cr = 0, lf = 0, index = 0, start = 0;
                                  -	var lines = [];
                                  -	while (true) {
                                  -		if (cr !== -1 && cr <= index) { cr = text.indexOf("\r", index); }
                                  -		if (lf !== -1 && lf <= index) { lf = text.indexOf("\n", index); }
                                  -		if (lf === -1 && cr === -1) { break; }
                                  -		if (cr !== -1 && lf !== -1) {
                                  -			if (cr + 1 === lf) {
                                  -				end = cr;
                                  -				index = lf + 1;
                                  -			} else {
                                  -				end = cr < lf ? cr : lf;
                                  -				index = end + 1;
                                  -			}
                                  -		} else if (cr !== -1) {
                                  -			end = cr;
                                  -			index = cr + 1;
                                  -		} else {
                                  -			end = lf;
                                  -			index = lf + 1;
                                  -		}
                                  -		lines.push(text.substring(start, end));
                                  -		start = index;
                                  -	}
                                  -	if (start < text.length) {
                                  -		lines.push(text.substring(start, text.length));
                                  -	}
                                  -	return lines.join(delimiter);
                                  -}
                                  -
                                  -function test0 () {
                                  -	var text = changeDelimiter(getFile("text.txt"), delimiter);
                                  -	var styles = changeDelimiter(getFile("styles.txt"), delimiter);
                                  -	var time = new Date().getTime();
                                  -	createEditor(text, styles);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function test1 () {
                                  -	var text = changeDelimiter(getFile("text.txt"), delimiter);
                                  -	var time = new Date().getTime();
                                  -	createEditor(text);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function test2 () {
                                  -	var lines = [];
                                  -	var lineCount = 1000;
                                  -	for(var i = lines.length; i< lineCount; i++) {
                                  -		lines.push("This is the line of text number "+i);
                                  -	}
                                  -	createEditor(lines.join("\r\n"));
                                  -}
                                  -
                                  -function clean () {
                                  -	var time = new Date().getTime();
                                  -	var editor = window.document.getElementById('editor');
                                  -	var document = editor.contentWindow.document;
                                  -	var body = document.body;
                                  -	while (body.hasChildNodes()) body.removeChild(body.lastChild);
                                  -	alert ("time:" + ((new Date().getTime()) - time));
                                  -}
                                  -
                                  -function createEditor (text, styles) {
                                  -	var editor = window.document.getElementById('editor');
                                  -
                                  -	var document = editor.contentWindow.document;
                                  -	var body = document.body;
                                  -	body.contentEditable = "true";
                                  -	body.style.whiteSpace = "pre";
                                  -	while (body.hasChildNodes()) body.removeChild(body.lastChild);
                                  -	var lineOffset = 0;
                                  -	var styleOffset = 0;
                                  -	var charCount = text.length;
                                  -	while (lineOffset < charCount) {
                                  -		var lineEnd = text.indexOf(delimiter, lineOffset);
                                  -		if (lineEnd === -1) lineEnd = charCount;
                                  -
                                  -		if (styles) {
                                  -			while (styleOffset < styles.length) {
                                  -				var lineStyleEnd = styles.indexOf(delimiter, styleOffset);
                                  -				if (lineStyleEnd === -1) lineStyleEnd = styles.length;
                                  -				var style = styles.substring(styleOffset, lineStyleEnd).split(";");
                                  -				var styleStart = parseInt(style[0]);
                                  -				var styleEnd = styleStart + parseInt(style[1]); 
                                  -				if (styleStart >= lineEnd) break;
                                  -				
                                  -				var start = Math.max(lineOffset, styleStart);
                                  -				var end = Math.min(lineEnd, styleEnd);
                                  -				var styleText = text.substring(start, end);
                                  -				var span = document.createElement("SPAN");
                                  -				if ((parseInt(style[2]) & 1)) { 
                                  -					span.style.fontWeight = "bold"; 
                                  -				}
                                  -				if ((parseInt(style[2]) & 2)) { 
                                  -					span.style.fontStyle = "italic"; 
                                  -				}
                                  -				if (style[5]) {
                                  -					var r = Number(parseInt(style[5])).toString(16);
                                  -					var g = Number(parseInt(style[6])).toString(16);
                                  -					var b = Number(parseInt(style[7])).toString(16);
                                  -					if (r.length < 2) r = "0" + r;
                                  -					if (g.length < 2) g = "0" + g;
                                  -					if (b.length < 2) b = "0" + b;
                                  -					span.style.color = "#" + r + g + b;
                                  -				}
                                  -				var textNode  = document.createTextNode(styleText);
                                  -				span.appendChild(textNode);
                                  -				body.appendChild(span);
                                  -				styleOffset = lineStyleEnd;
                                  -				if (styleOffset < styles.length) styleOffset += delimiter.length;
                                  -			}
                                  -		} else {
                                  -			var lineText = text.substring(lineOffset, lineEnd);
                                  -			var span = document.createElement("SPAN");
                                  -			var textNode  = document.createTextNode(lineText);
                                  -			span.appendChild(textNode);
                                  -			body.appendChild(span);
                                  -		}
                                  -		lineOffset = lineEnd; 
                                  -		if (lineOffset < charCount) {
                                  -			var br = document.createElement("BR");
                                  -			body.appendChild(br);
                                  -			lineOffset += delimiter.length;
                                  -		}
                                  -	}
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body >
                                  -
                                  -<h1>Performance of content editable iframe with large amount of text and styles</h1>
                                  -<iframe id='editor' style="width:100%;height:500px;"></iframe>
                                  -<br></br>
                                  -<br>
                                  -<span onclick='test0()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor</span>  
                                  -<span onclick='test1()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor (without styles)</span> 
                                  -<span onclick='test2()' style='border: 2px dotted orange; padding: 0 2 0 2'>create editor with lines (no styles)</span>
                                  -<span onclick='clean()' style='border: 2px dotted orange; padding: 0 2 0 2'>clear editor</span>
                                  -<br>
                                  -
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/console.js b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/console.js
                                  deleted file mode 100644
                                  index 9f398e69..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/console.js
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global window setTimeout */
                                  -
                                  -function log (text) {
                                  -	var console = window.document.getElementById('console');
                                  -	if (!console) { return; }
                                  -	for (var n = 1; n < arguments.length; n++) {
                                  -		text += " ";
                                  -		text += arguments[n];
                                  -	}
                                  -	
                                  -	var document = console.contentWindow.document;
                                  -	var t = document.createTextNode(text);
                                  -	document.body.appendChild(t);
                                  -	var br = document.createElement("br");
                                  -	document.body.appendChild(br);
                                  -	if (!console.scroll) {
                                  -		console.scroll = true;
                                  -		setTimeout(function() {
                                  -			document.body.lastChild.scrollIntoView(false);
                                  -			console.scroll = false;
                                  -		}, 0);
                                  -	}
                                  -	
                                  -	//IE (causes all kinds of weird behaviour)
                                  -//	console.log(text);
                                  -}
                                  -
                                  -function clearLog () {
                                  -	var console = window.document.getElementById('console');
                                  -	if (!console) { return; }
                                  -	var document = console.contentWindow.document;
                                  -	var body = document.body;
                                  -	while (body.hasChildNodes()) { body.removeChild(body.lastChild); }
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/cr.png b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/cr.png
                                  deleted file mode 100644
                                  index e38fdc17..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/cr.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/demo.html b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/demo.html
                                  deleted file mode 100644
                                  index 14197715..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/demo.html
                                  +++ /dev/null
                                  @@ -1,202 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -<head>
                                  -<meta name="copyright" content="Copyright (c) IBM Corporation and others 2010."/>
                                  -<meta http-equiv="PRAGMA" content="NO-CACHE"/>
                                  -<meta http-equiv="Expires" content="-1"/>
                                  -<title>Orion Editor Demo</title>
                                  -<style>
                                  -.button {
                                  -  border: 2px dotted orange;
                                  -  padding: 0 2 0 2
                                  -}
                                  -</style>
                                  -
                                  -<script language="javascript" type="text/javascript" src="console.js"></script>
                                  -<script language="javascript" type="text/javascript" src="styler.js"></script>
                                  -<script language="javascript" type="text/javascript" src="rulers.js"></script>
                                  -<script language="javascript" type="text/javascript" src="undoStack.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js/editor.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js/model.js"></script>
                                  -<script language="javascript" type="text/javascript" src="../js-tests/test-performance.js"></script>
                                  -
                                  -<script language="javascript" type="text/javascript">
                                  -var editor = null;
                                  -var styler = null;
                                  -
                                  -var isMac = navigator.platform.indexOf("Mac") !== -1;
                                  -
                                  -function getFile(file) {
                                  -	try {
                                  -		var objXml = new XMLHttpRequest();
                                  -		objXml.open("GET",file,false);
                                  -		objXml.send(null);
                                  -		return objXml.responseText;
                                  -	} catch (e) {
                                  -		return null;
                                  -	}
                                  -}
                                  -
                                  -function checkEditor() {
                                  -	if (editor) return;
                                  -	var options = {
                                  -		parent: "divParent",
                                  -		model: new eclipse.TextModel(),
                                  -		stylesheet: "editor.css",
                                  -		tabSize: 4,
                                  -	};
                                  -	editor = new eclipse.Editor(options);
                                  -	
                                  -	/* Undo stack */
                                  -	var undoStack = new eclipse.UndoStack(editor, 200);
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('z', true), "undo");
                                  -	editor.setAction("undo", function() {
                                  -		undoStack.undo();
                                  -		return true;
                                  -	});
                                  -	editor.setKeyBinding(isMac ? new eclipse.KeyBinding('z', true, true) : new eclipse.KeyBinding('y', true), "redo");
                                  -	editor.setAction("redo", function() {
                                  -		undoStack.redo();
                                  -		return true;
                                  -	});
                                  -	
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('s', true), "save");
                                  -	editor.setAction("save", function() {
                                  -		log("*****************SAVE");
                                  -		return true;
                                  -	});
                                  -	editor.setKeyBinding(new eclipse.KeyBinding('f', true), "find");
                                  -	editor.setAction("find", function() {
                                  -		log("*****************FIND");
                                  -		return true;
                                  -	});
                                  -	
                                  -	var breakpoint = {
                                  -		html: "<img src='brkp_obj.gif'></img>",
                                  -		style: {styleClass: "ruler_annotation_breakpoint"},
                                  -		overviewStyle: {styleClass: "ruler_annotation_breakpoint_overview"}
                                  -	};
                                  -	var todo = {
                                  -		html: "<img src='todo.gif'></img>",
                                  -		style: {styleClass: "ruler_annotation_todo"},
                                  -		overviewStyle: {styleClass: "ruler_annotation_todo_overview"}
                                  -	};
                                  -	var annotation = new eclipse.AnnotationRuler("left", {styleClass: "ruler_annotation"}, breakpoint);
                                  -	annotation.onDblClick =  function(lineIndex, e) {
                                  -		if (lineIndex === undefined) return;
                                  -		annotation.setAnnotation(lineIndex, annotation.getAnnotation(lineIndex) !== undefined ? undefined : e.ctrlKey ? todo : breakpoint);
                                  -	};
                                  -	var lines = new eclipse.LineNumberRuler("left", {styleClass: "ruler_lines"}, {styleClass: "ruler_lines_odd"}, {styleClass: "ruler_lines_even"});
                                  -	lines.onDblClick = annotation.onDblClick;
                                  -	var overview = new eclipse.OverviewRuler("right", {styleClass: "ruler_overview"}, annotation);
                                  -	editor.addRuler(annotation);
                                  -	editor.addRuler(lines);
                                  -	editor.addRuler(overview);
                                  -}
                                  -
                                  -function createJavaSample() {
                                  -	checkEditor();
                                  -	var file =  getFile("text.txt");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	styler = new eclipse.TextStyler(editor, "java");
                                  -	editor.setText(file);
                                  -}
                                  -
                                  -function createJavaScriptSample() {
                                  -	checkEditor();
                                  -	var file =  getFile("../js/editor.js");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	styler = new eclipse.TextStyler(editor, "js");
                                  -	editor.setText(file);
                                  -}
                                  -
                                  -function createPlainTextSample() {
                                  -	checkEditor();
                                  -	var lineCount = 50000;
                                  -	var lines = [];
                                  -	for(var i = 0; i < lineCount; i++) {
                                  -		lines.push("This is the line of text number "+i);
                                  -	}
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	editor.setText(lines.join("\r\n"));
                                  -}
                                  -
                                  -function createBidiTextSample() {
                                  -	checkEditor();
                                  -	var lines = [];
                                  -	lines.push("Hello \u0644\u0645\u0646\u0647");
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	editor.setText(lines.join("\r\n"));
                                  -}
                                  -
                                  -function test() {
                                  -}
                                  -
                                  -function performanceTest() {
                                  -	checkEditor();
                                  -	if (styler) {
                                  -		styler.destroy();
                                  -		styler = null;
                                  -	}
                                  -	var test = new PerformanceTest(editor);
                                  -	var select = document.getElementById("test");
                                  -	test[select.value]();
                                  -}
                                  -
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -<h1>Orion Editor Demo</h1>
                                  -
                                  -<table width="100%">
                                  -<tr>
                                  -<th>Editor</th>
                                  -<th>Console</th>
                                  -</tr>
                                  -<tr>
                                  -<td width="100%">
                                  -<div id='divParent' style='border: 1px solid teal;width:100%;height:650px;'>
                                  -Create the editor by clicking one of the buttons at the bottom.
                                  -</div>
                                  -</td>
                                  -<td>
                                  -<div id='divParent' style='border: 1px solid teal;width:300px;height:650px;'>
                                  -<iframe id='console' frameBorder="0" style="width:100%;height:100%;"></iframe>
                                  -</div>
                                  -</td>
                                  -</tr>
                                  -</table>
                                  -<span onclick='createJavaSample()' class="button">Java file</span>
                                  -<span onclick='createJavaScriptSample()' class="button">JavaScript file</span>
                                  -<span onclick='createPlainTextSample()' class="button">Plain Text</span>
                                  -<span onclick='createBidiTextSample()' class="button">Bidi Text</span>
                                  -<span onclick='clearLog()' class="button">ClearConsole</span>
                                  -<span onclick='test()' class="button">Test</span>
                                  -Performance tests:
                                  -<select id="test">
                                  -  <option value="test_pageDown">Page Down</option>
                                  -  <option value="test_pageUp">Page Up</option>
                                  -  <option value="test_lineDown">Line Down</option>
                                  -  <option value="test_lineUp">Line Up</option>
                                  -  <option value="test_getLocationAtOffset">Location at Offset</option>
                                  -  <option value="test_getOffsetAtLocation">Offset at Location</option>
                                  -  <option value="test_getLocationAtOffsetStyled">Location at Offset[styles]</option>
                                  -  <option value="test_getOffsetAtLocationStyled">Offset at Location[styles]</option>
                                  -<select>
                                  -<span onclick='performanceTest()' class="button">Run</span>
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/editor.css b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/editor.css
                                  deleted file mode 100644
                                  index 1a3a6f5a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/editor.css
                                  +++ /dev/null
                                  @@ -1,93 +0,0 @@
                                  -.editor {
                                  -	background-color: white;
                                  -}
                                  -
                                  -.editorContainer {
                                  -	font-family: monospace;
                                  -	font-size: 10pt;
                                  -}
                                  -
                                  -.editorContent {
                                  -}
                                  -
                                  -.token_comment {
                                  -	color: green;
                                  -}
                                  -
                                  -.token_javadoc {
                                  -	color: #00008F;
                                  -}
                                  -
                                  -.token_string {
                                  -	color: blue;
                                  -}
                                  -
                                  -.token_keyword {
                                  -	color: darkred;
                                  -	font-weight: bold;
                                  -}
                                  -
                                  -.token_bracket_outline {
                                  -	outline: 1px solid red;
                                  -}
                                  -
                                  -.token_bracket {
                                  -	color: white;
                                  -	background-color: grey;
                                  -}
                                  -
                                  -.token_space {
                                  -	background-image: url('/editor/samples/space.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: center center;
                                  -}
                                  -
                                  -.token_tab {
                                  -	background-image: url('/editor/samples/tab.png');
                                  -	background-repeat: no-repeat;
                                  - 	background-position: left center;
                                  -}
                                  -
                                  -.line_caret {
                                  -	background-color: #EAF2FE;
                                  -}
                                  -
                                  -.ruler_annotation {
                                  -	background-color: #e1ebfb;
                                  -	width: 16px;
                                  -}
                                  -
                                  -.ruler_annotation_todo {
                                  -}
                                  -
                                  -.ruler_annotation_todo_overview {
                                  -	background-color: lightgreen;
                                  -	border: 1px solid green;
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint {
                                  -}
                                  -
                                  -.ruler_annotation_breakpoint_overview {
                                  -	background-color: lightblue;
                                  -	border: 1px solid blue;
                                  -}
                                  -
                                  -.ruler_lines {
                                  -	background-color: #e1ebfb;
                                  -	border-right: 1px solid #b1badf;
                                  -	text-align: right;
                                  -}
                                  -
                                  -.ruler_overview {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_even {
                                  -	background-color: #e1ebfb;
                                  -}
                                  -
                                  -.ruler_lines_odd {
                                  -	background-color: white;
                                  -}
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/rulers.js b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/rulers.js
                                  deleted file mode 100644
                                  index f929e1c4..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/rulers.js
                                  +++ /dev/null
                                  @@ -1,210 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.Ruler = (function() {
                                  -	function Ruler (rulerLocation, rulerOverview, rulerStyle) {
                                  -		this._location = rulerLocation || "left";
                                  -		this._overview = rulerOverview || "page";
                                  -		this._rulerStyle = rulerStyle;
                                  -		this._editor = null;
                                  -	}
                                  -	Ruler.prototype = {
                                  -		setEditor: function (editor) {
                                  -			if (this._onModelChanged && this._editor) {
                                  -				this._editor.removeEventListener("ModelChanged", this, this._onModelChanged); 
                                  -			}
                                  -			this._editor = editor;
                                  -			if (this._onModelChanged && this._editor) {
                                  -				this._editor.addEventListener("ModelChanged", this, this._onModelChanged);
                                  -			}
                                  -		},
                                  -		getLocation: function() {
                                  -			return this._location;
                                  -		},
                                  -		getOverview: function(editor) {
                                  -			return this._overview;
                                  -		}
                                  -	};
                                  -	return Ruler;
                                  -}());
                                  -
                                  -eclipse.LineNumberRuler = (function() {
                                  -	function LineNumberRuler (rulerLocation, rulerStyle, oddStyle, evenStyle) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle);
                                  -		this._oddStyle = oddStyle || {style: {backgroundColor: "white"}};
                                  -		this._evenStyle = evenStyle || {style: {backgroundColor: "white"}};
                                  -		this._numOfDigits = 0;
                                  -	}
                                  -	LineNumberRuler.prototype = new eclipse.Ruler(); 
                                  -	LineNumberRuler.prototype.getStyle = function(lineIndex) {
                                  -		if (lineIndex === undefined) {
                                  -			return this._rulerStyle;
                                  -		} else {
                                  -			return lineIndex & 1 ? this._oddStyle : this._evenStyle;
                                  -		}
                                  -	};
                                  -	LineNumberRuler.prototype.getHTML = function(lineIndex) {
                                  -		if (lineIndex === -1) {
                                  -			var model = this._editor.getModel();
                                  -			return model.getLineCount();
                                  -		} else {
                                  -			return lineIndex + 1;
                                  -		}
                                  -	};
                                  -	LineNumberRuler.prototype._onModelChanged = function(e) {
                                  -		var start = e.start;
                                  -		var model = this._editor.getModel();
                                  -		var lineCount = model.getLineCount();
                                  -		var numOfDigits = (lineCount+"").length;
                                  -		if (this._numOfDigits !== numOfDigits) {
                                  -			this._numOfDigits = numOfDigits;
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			this._editor.redrawLines(startLine, lineCount, this);
                                  -		}
                                  -	};
                                  -	return LineNumberRuler;
                                  -}());
                                  -
                                  -eclipse.AnnotationRuler = (function() {
                                  -	function AnnotationRuler (rulerLocation, rulerStyle, defaultAnnotation) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "page", rulerStyle);
                                  -		this._defaultAnnotation = defaultAnnotation;
                                  -		this._annotations = [];
                                  -	}
                                  -	AnnotationRuler.prototype = new eclipse.Ruler();
                                  -	AnnotationRuler.prototype.clearAnnotations = function() {
                                  -		this._annotations = [];
                                  -		var lineCount = this._editor.getModel().getLineCount();
                                  -		this._editor.redrawLines(0, lineCount, this);
                                  -		if (this._overviewRuler) {
                                  -			this._editor.redrawLines(0, lineCount, this._overviewRuler);
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.getAnnotation = function(lineIndex) {
                                  -		return this._annotations[lineIndex];
                                  -	};
                                  -	AnnotationRuler.prototype.getAnnotations = function() {
                                  -		return this._annotations;
                                  -	};
                                  -	AnnotationRuler.prototype.getStyle = function(lineIndex) {
                                  -		switch (lineIndex) {
                                  -			case undefined:
                                  -				return this._rulerStyle;
                                  -			case -1:
                                  -				return this._defaultAnnotation ? this._defaultAnnotation.style : null;
                                  -			default:
                                  -				return this._annotations[lineIndex] && this._annotations[lineIndex].style ? this._annotations[lineIndex].style : null;
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.getHTML = function(lineIndex) {
                                  -		if (lineIndex === -1) {
                                  -			return this._defaultAnnotation ? this._defaultAnnotation.html : "";
                                  -		} else {
                                  -			return this._annotations[lineIndex] && this._annotations[lineIndex].html ? this._annotations[lineIndex].html : "";
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype.setAnnotation = function(lineIndex, annotation) {
                                  -		if (lineIndex === undefined) { return; }
                                  -		this._annotations[lineIndex] = annotation;
                                  -		this._editor.redrawLines(lineIndex, lineIndex + 1, this);
                                  -		if (this._overviewRuler) {
                                  -			this._editor.redrawLines(lineIndex, lineIndex + 1, this._overviewRuler);
                                  -		}
                                  -	};
                                  -	AnnotationRuler.prototype._onModelChanged = function(e) {
                                  -		var start = e.start;
                                  -		var removedLineCount = e.removedLineCount;
                                  -		var addedLineCount = e.addedLineCount;
                                  -		var linesChanged = addedLineCount - removedLineCount;
                                  -		if (linesChanged) {
                                  -			var model = this._editor.getModel();
                                  -			var startLine = model.getLineAtOffset(start);
                                  -			var newLines = [], lines = this._annotations;
                                  -			var changed = false;
                                  -			for (var prop in lines) {
                                  -				var i = prop >>> 0;
                                  -				if (!(startLine < i && i < startLine + removedLineCount)) {
                                  -					var newIndex = i;
                                  -					if (i > startLine) {
                                  -						newIndex += linesChanged;
                                  -						changed = true;
                                  -					}
                                  -					newLines[newIndex] = lines[i];
                                  -				} else {
                                  -					changed = true;
                                  -				}
                                  -			}
                                  -			this._annotations = newLines;
                                  -			if (changed) {
                                  -				var lineCount = model.getLineCount();
                                  -				this._editor.redrawLines(startLine, lineCount, this);
                                  -				//TODO redraw overview (batch it for performance)
                                  -				if (this._overviewRuler) {
                                  -					this._editor.redrawLines(0, lineCount, this._overviewRuler);
                                  -				}
                                  -			}
                                  -		}
                                  -	};
                                  -	return AnnotationRuler;
                                  -}());
                                  -
                                  -eclipse.OverviewRuler = (function() {
                                  -	function OverviewRuler (rulerLocation, rulerStyle, annotationRuler) {
                                  -		eclipse.Ruler.call(this, rulerLocation, "document", rulerStyle);
                                  -		this._annotationRuler = annotationRuler;
                                  -		if (annotationRuler) {
                                  -			annotationRuler._overviewRuler = this;
                                  -		}
                                  -	}
                                  -	OverviewRuler.prototype = new eclipse.Ruler();
                                  -	OverviewRuler.prototype.getAnnotations = function() {
                                  -		var annotations = this._annotationRuler.getAnnotations();
                                  -		var lines = [];
                                  -		for (var prop in annotations) {
                                  -			var i = prop >>> 0;
                                  -			if (annotations[i] !== undefined) {
                                  -				lines.push(i);
                                  -			}
                                  -		}
                                  -		return lines;
                                  -	};
                                  -	OverviewRuler.prototype.getStyle = function(lineIndex) {
                                  -		var result, style;
                                  -		if (lineIndex === undefined) {
                                  -			result = this._rulerStyle || {};
                                  -			style = result.style || (result.style = {});
                                  -			style.lineHeight = "1px";
                                  -			style.fontSize = "1px";
                                  -			style.width = "14px";
                                  -		} else {
                                  -			if (lineIndex !== -1) {
                                  -				var annotation = this._annotationRuler.getAnnotation(lineIndex);
                                  -				result = annotation.overviewStyle || {};
                                  -			} else {
                                  -				result = {};
                                  -			}
                                  -			style = result.style || (result.style = {});
                                  -			style.cursor = "pointer";
                                  -			style.width = "8px";
                                  -			style.height = "3px";
                                  -			style.left = "2px";
                                  -		}
                                  -		return result;
                                  -	};
                                  -	OverviewRuler.prototype.getHTML = function(lineIndex) {
                                  -		return "&nbsp;";
                                  -	};
                                  -	OverviewRuler.prototype.onClick = function(lineIndex, e) {
                                  -		if (lineIndex === undefined) { return; }
                                  -		this._editor.setTopIndex(lineIndex);
                                  -	};
                                  -	return OverviewRuler;
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/space.png b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/space.png
                                  deleted file mode 100644
                                  index 9cb0a47d..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/space.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styler.js b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styler.js
                                  deleted file mode 100644
                                  index efe61be3..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styler.js
                                  +++ /dev/null
                                  @@ -1,705 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -/*global document window navigator */
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.TextStyler = (function() {
                                  -
                                  -	var JS_KEYWORDS =
                                  -		["break", "continue", "do", "for", /*"import",*/ "new", "this", /*"void",*/ 
                                  -		 "case", "default", "else", "function", "in", "return", "typeof", "while",
                                  -		 "comment", "delete", "export", "if", /*"label",*/ "switch", "var", "with",
                                  -		 "abstract", "implements", "protected", /*"boolean",*/ /*"instanceOf",*/ "public", 
                                  -		 /*"byte", "int", "short", "char",*/ "interface", "static", 
                                  -		 /*"double", "long",*/ "synchronized", "false", /*"native",*/ "throws", 
                                  -		 "final", "null", "transient", /*"float",*/ "package", "true", 
                                  -		 "goto", "private", "catch", "enum", "throw", "class", "extends", "try", 
                                  -		 "const", "finally", "debugger", "super", "undefined"];
                                  -
                                  -	var JAVA_KEYWORDS =
                                  -		["abstract",
                                  -		 "boolean", "break", "byte",
                                  -		 "case", "catch", "char", "class", "continue",
                                  -		 "default", "do", "double",
                                  -		 "else", "extends",
                                  -		 "false", "final", "finally", "float", "for",
                                  -		 "if", "implements", "import", "instanceof", "int", "interface",
                                  -		 "long",
                                  -		 "native", "new", "null",
                                  -		 "package", "private", "protected", "public",
                                  -		 "return",
                                  -		 "short", "static", "super", "switch", "synchronized",
                                  -		 "this", "throw", "throws", "transient", "true", "try",
                                  -		 "void", "volatile",
                                  -		 "while"];
                                  -
                                  -	var CSS_KEYWORDS =
                                  -		["color", "text-align", "text-indent", "text-decoration", 
                                  -		 "font", "font-style", "font-family", "font-weight", "font-size", "font-variant", "line-height",
                                  -		 "background", "background-color", "background-image", "background-position", "background-repeat", "background-attachment",
                                  -		 "list-style", "list-style-image", "list-style-position", "list-style-type", 
                                  -		 "outline", "outline-color", "outline-style", "outline-width",
                                  -		 "border", "border-left", "border-top", "border-bottom", "border-right", "border-color", "border-width", "border-style",
                                  -		 "border-bottom-color", "border-bottom-style", "border-bottom-width",
                                  -		 "border-left-color", "border-left-style", "border-left-width",
                                  -		 "border-top-color", "border-top-style", "border-top-width",
                                  -		 "border-right-color", "border-right-style", "border-right-width",
                                  -		 "padding", "padding-left", "padding-top", "padding-bottom", "padding-right",
                                  -		 "margin", "margin-left", "margin-top", "margin-bottom", "margin-right",
                                  -		 "width", "height", "left", "top", "right", "bottom",
                                  -		 "min-width", "max-width", "min-height", "max-height",
                                  -		 "display", "visibility",
                                  -		 "clip", "cursor", "overflow", "overflow-x", "overflow-y", "position", "z-index",
                                  -		 "vertical-align", "horizontal-align",
                                  -		 "float", "clear"
                                  -		];
                                  -
                                  -	// Scanner constants
                                  -	var UNKOWN = 1;
                                  -	var KEYWORD = 2;
                                  -	var STRING = 3;
                                  -	var COMMENT = 4;
                                  -	var WHITE = 5;
                                  -	var WHITE_TAB = 6;
                                  -	var WHITE_SPACE = 7;
                                  -
                                  -	// Styles 
                                  -	var isIE = document.selection && window.ActiveXObject && /MSIE/.test(navigator.userAgent) ? document.documentMode : undefined;
                                  -	var commentStyle = {styleClass: "token_comment"};
                                  -	var javadocStyle = {styleClass: "token_javadoc"};
                                  -	var stringStyle = {styleClass: "token_string"};
                                  -	var keywordStyle = {styleClass: "token_keyword"};
                                  -	var spaceStyle = {styleClass: "token_space"};
                                  -	var tabStyle = {styleClass: "token_tab"};
                                  -	var bracketStyle = {styleClass: isIE < 9 ? "token_bracket" : "token_bracket_outline"};
                                  -	var caretLineStyle = {styleClass: "line_caret"};
                                  -	
                                  -	var Scanner = (function() {
                                  -		function Scanner (keywords, whitespacesVisible) {
                                  -			this.keywords = keywords;
                                  -			this.whitespacesVisible = whitespacesVisible;
                                  -			this.setText("");
                                  -		}
                                  -		
                                  -		Scanner.prototype = {
                                  -			getOffset: function() {
                                  -				return this.offset;
                                  -			},
                                  -			getStartOffset: function() {
                                  -				return this.startOffset;
                                  -			},
                                  -			getData: function() {
                                  -				return this.text.substring(this.startOffset, this.offset);
                                  -			},
                                  -			getDataLength: function() {
                                  -				return this.offset - this.startOffset;
                                  -			},
                                  -			_read: function() {
                                  -				if (this.offset < this.text.length) {
                                  -					return this.text.charCodeAt(this.offset++);
                                  -				}
                                  -				return -1;
                                  -			},
                                  -			_unread: function(c) {
                                  -				if (c !== -1) { this.offset--; }
                                  -			},
                                  -			nextToken: function() {
                                  -				this.startOffset = this.offset;
                                  -				while (true) {
                                  -					var c = this._read();
                                  -					switch (c) {
                                  -						case -1: return null;
                                  -						case 47:	// SLASH -> comment
                                  -							c = this._read();
                                  -							if (c === 47) {
                                  -								while (true) {
                                  -									c = this._read();
                                  -									if ((c === -1) || (c === 10)) {
                                  -										this._unread(c);
                                  -										return COMMENT;
                                  -									}
                                  -								}
                                  -							}
                                  -							this._unread(c);
                                  -							return UNKOWN;
                                  -						case 39:	// SINGLE QUOTE -> char const
                                  -							while(true) {
                                  -								c = this._read();
                                  -								switch (c) {
                                  -									case 39:
                                  -										return STRING;
                                  -									case -1:
                                  -										this._unread(c);
                                  -										return STRING;
                                  -									case 92: // BACKSLASH
                                  -										c = this._read();
                                  -										break;
                                  -								}
                                  -							}
                                  -							break;
                                  -						case 34:	// DOUBLE QUOTE -> string
                                  -							while(true) {
                                  -								c = this._read();
                                  -								switch (c) {
                                  -									case 34: // DOUBLE QUOTE
                                  -										return STRING;
                                  -									case -1:
                                  -										this._unread(c);
                                  -										return STRING;
                                  -									case 92: // BACKSLASH
                                  -										c = this._read();
                                  -										break;
                                  -								}
                                  -							}
                                  -							break;
                                  -						case 32: // SPACE
                                  -						case 9: // TAB
                                  -							if (this.whitespacesVisible) {
                                  -								return c === 32 ? WHITE_SPACE : WHITE_TAB;
                                  -							}
                                  -							do {
                                  -								c = this._read();
                                  -							} while(c === 32 || c === 9);
                                  -							this._unread(c);
                                  -							return WHITE;
                                  -						default:
                                  -							var isCSS = this.isCSS;
                                  -							if ((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS)) { //LETTER OR UNDERSCORE OR NUMBER
                                  -								var off = this.offset - 1;
                                  -								do {
                                  -									c = this._read();
                                  -								} while((97 <= c && c <= 122) || (65 <= c && c <= 90) || c === 95 || (48 <= c && c <= 57) || (0x2d === c && isCSS));  //LETTER OR UNDERSCORE OR NUMBER
                                  -								this._unread(c);
                                  -								var word = this.text.substring(off, this.offset);
                                  -								//TODO slow
                                  -								for (var i=0; i<this.keywords.length; i++) {
                                  -									if (this.keywords[i] === word) { return KEYWORD; }
                                  -								}
                                  -							}
                                  -							return UNKOWN;
                                  -					}
                                  -				}
                                  -			},
                                  -			setText: function(text) {
                                  -				this.text = text;
                                  -				this.offset = 0;
                                  -				this.startOffset = 0;
                                  -			}
                                  -		};
                                  -		return Scanner;
                                  -	}());
                                  -	
                                  -	var WhitespaceScanner = (function() {
                                  -		function WhitespaceScanner () {
                                  -			Scanner.call(this, null, true);
                                  -		}
                                  -		WhitespaceScanner.prototype = new Scanner(null);
                                  -		WhitespaceScanner.prototype.nextToken = function() {
                                  -			this.startOffset = this.offset;
                                  -			while (true) {
                                  -				var c = this._read();
                                  -				switch (c) {
                                  -					case -1: return null;
                                  -					case 32: // SPACE
                                  -						return WHITE_SPACE;
                                  -					case 9: // TAB
                                  -						return WHITE_TAB;
                                  -					default:
                                  -						do {
                                  -							c = this._read();
                                  -						} while(!(c === 32 || c === 9 || c === -1));
                                  -						this._unread(c);
                                  -						return UNKOWN;
                                  -				}
                                  -			}
                                  -		};
                                  -		
                                  -		return WhitespaceScanner;
                                  -	}());
                                  -	
                                  -	function TextStyler (editor, lang) {
                                  -		this.commentStart = "/*";
                                  -		this.commentEnd = "*/";
                                  -		var keywords = [];
                                  -		switch (lang) {
                                  -			case "java": keywords = JAVA_KEYWORDS; break;
                                  -			case "js": keywords = JS_KEYWORDS; break;
                                  -			case "css": keywords = CSS_KEYWORDS; break;
                                  -		}
                                  -		this.whitespacesVisible = false;
                                  -		this.highlightCaretLine = true;
                                  -		this._scanner = new Scanner(keywords, this.whitespacesVisible);
                                  -		//TODO this scanner is not the best/correct way to parse CSS
                                  -		if (lang === "css") {
                                  -			this._scanner.isCSS = true;
                                  -		}
                                  -		this._whitespaceScanner = new WhitespaceScanner();
                                  -		this.editor = editor;
                                  -		this.commentOffset = 0;
                                  -		this.commentOffsets = [];
                                  -		this._currentBracket = undefined; 
                                  -		this._matchingBracket = undefined;
                                  -		
                                  -		editor.addEventListener("Selection", this, this._onSelection);
                                  -		editor.addEventListener("ModelChanged", this, this._onModelChanged);
                                  -		editor.addEventListener("Destroy", this, this._onDestroy);
                                  -		editor.addEventListener("LineStyle", this, this._onLineStyle);
                                  -		editor.redrawLines();
                                  -	}
                                  -	
                                  -	TextStyler.prototype = {
                                  -		destroy: function() {
                                  -			var editor = this.editor;
                                  -			if (editor) {
                                  -				editor.removeEventListener("Selection", this, this._onSelection);
                                  -				editor.removeEventListener("ModelChanged", this, this._onModelChanged);
                                  -				editor.removeEventListener("Destroy", this, this._onDestroy);
                                  -				editor.removeEventListener("LineStyle", this, this._onLineStyle);
                                  -				this.editor = null;
                                  -			}
                                  -		},
                                  -		setHighlightCaretLine: function(highlight) {
                                  -			this.highlightCaretLine = highlight;
                                  -		},
                                  -		setWhitespacesVisible: function(visible) {
                                  -			this.whitespacesVisible = visible;
                                  -			this._scanner.whitespacesVisible = visible;
                                  -		},
                                  -		_binarySearch: function(offsets, offset, low, high) {
                                  -			while (high - low > 2) {
                                  -				var index = (((high + low) >> 1) >> 1) << 1;
                                  -				var end = offsets[index + 1];
                                  -				if (end > offset) {
                                  -					high = index;
                                  -				} else {
                                  -					low = index;
                                  -				}
                                  -			}
                                  -			return high;
                                  -		},
                                  -		_computeComments: function(end) {
                                  -			// compute comments between commentOffset and end
                                  -			if (end <= this.commentOffset) { return; }
                                  -			var model = this.editor.getModel();
                                  -			var charCount = model.getCharCount();
                                  -			var e = end;
                                  -			// Uncomment to compute all comments
                                  -//			e = charCount;
                                  -			var t = /*start == this.commentOffset && e == end ? text : */model.getText(this.commentOffset, e);
                                  -			if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === charCount) {
                                  -				this.commentOffsets.length--;
                                  -			}
                                  -			var offset = 0;
                                  -			while (offset < t.length) {
                                  -				var begin = (this.commentOffsets.length & 1) === 0;
                                  -				var search = begin ? this.commentStart : this.commentEnd;
                                  -				var index = t.indexOf(search, offset);
                                  -				if (index !== -1) {
                                  -					this.commentOffsets.push(this.commentOffset + (begin ? index : index + search.length));
                                  -				} else {
                                  -					break;
                                  -				}
                                  -				offset = index + search.length;
                                  -			}
                                  -			if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); }
                                  -			this.commentOffset = e;
                                  -		},
                                  -		_getCommentRanges: function(start, end) {
                                  -			this._computeComments (end);
                                  -			var commentCount = this.commentOffsets.length;
                                  -			var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount);
                                  -			if (commentStart >= commentCount) { return []; }
                                  -			if (this.commentOffsets[commentStart] > end) { return []; }
                                  -			var commentEnd = Math.min(commentCount - 2, this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount));
                                  -			if (this.commentOffsets[commentEnd] > end) { commentEnd = Math.max(commentStart, commentEnd - 2); }
                                  -			return this.commentOffsets.slice(commentStart, commentEnd + 2);
                                  -		},
                                  -		_getLineStyle: function(lineIndex) {
                                  -			if (this.highlightCaretLine) {
                                  -				var editor = this.editor;
                                  -				var model = this.editor.getModel();
                                  -				var selection = editor.getSelection();
                                  -				if (selection.start === selection.end && model.getLineAtOffset(selection.start) === lineIndex) {
                                  -					return caretLineStyle;
                                  -				}
                                  -			}
                                  -			return null;
                                  -		},
                                  -		_getStyles: function(text, start) {
                                  -			var end = start + text.length;
                                  -			var model = this.editor.getModel();
                                  -			
                                  -			// get comment ranges that intersect with range
                                  -			var commentRanges = this._getCommentRanges (start, end);
                                  -			var styles = [];
                                  -			
                                  -			// for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc)
                                  -			var offset = start;
                                  -			for (var i = 0; i < commentRanges.length; i+= 2) {
                                  -				var commentStart = commentRanges[i];
                                  -				if (offset < commentStart) {
                                  -					this._parse(text.substring(offset - start, commentStart - start), offset, styles);
                                  -				}
                                  -				var style = commentStyle;
                                  -				if ((commentRanges[i+1] - commentStart) > (this.commentStart.length + this.commentEnd.length)) {
                                  -					var o = commentStart + this.commentStart.length;
                                  -					if (model.getText(o, o + 1) === "*") { style = javadocStyle; }
                                  -				}
                                  -				if (this.whitespacesVisible) {
                                  -					var s = Math.max(offset, commentStart);
                                  -					var e = Math.min(end, commentRanges[i+1]);
                                  -					this._parseWhitespace(text.substring(s - start, e - start), s, styles, style);
                                  -				} else {
                                  -					styles.push({start: commentRanges[i], end: commentRanges[i+1], style: style});
                                  -				}
                                  -				offset = commentRanges[i+1];
                                  -			}
                                  -			if (offset < end) {
                                  -				this._parse(text.substring(offset - start, end - start), offset, styles);
                                  -			}
                                  -			return styles;
                                  -		},
                                  -		_parse: function(text, offset, styles) {
                                  -			var scanner = this._scanner;
                                  -			scanner.setText(text);
                                  -			var token;
                                  -			while ((token = scanner.nextToken())) {
                                  -				var tokenStart = scanner.getStartOffset() + offset;
                                  -				var style = null;
                                  -				if (tokenStart === this._matchingBracket) {
                                  -					style = bracketStyle;
                                  -				} else {
                                  -					switch (token) {
                                  -						case KEYWORD: style = keywordStyle; break;
                                  -						case STRING:
                                  -							if (this.whitespacesVisible) {
                                  -								this._parseWhitespace(scanner.getData(), tokenStart, styles, stringStyle);
                                  -								continue;
                                  -							} else {
                                  -								style = stringStyle;
                                  -							}
                                  -							break;
                                  -						case COMMENT: 
                                  -							if (this.whitespacesVisible) {
                                  -								this._parseWhitespace(scanner.getData(), tokenStart, styles, commentStyle);
                                  -								continue;
                                  -							} else {
                                  -								style = commentStyle;
                                  -							}
                                  -							break;
                                  -						case WHITE_TAB:
                                  -							if (this.whitespacesVisible) {
                                  -								style = tabStyle;
                                  -							}
                                  -							break;
                                  -						case WHITE_SPACE:
                                  -							if (this.whitespacesVisible) {
                                  -								style = spaceStyle;
                                  -							}
                                  -							break;
                                  -					}
                                  -				}
                                  -				styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style});
                                  -			}
                                  -		},
                                  -		_parseWhitespace: function(text, offset, styles, s) {
                                  -			var scanner = this._whitespaceScanner;
                                  -			scanner.setText(text);
                                  -			var token;
                                  -			while ((token = scanner.nextToken())) {
                                  -				var tokenStart = scanner.getStartOffset() + offset;
                                  -				var style = s;
                                  -				switch (token) {
                                  -					case WHITE_TAB:
                                  -						style = tabStyle;
                                  -						break;
                                  -					case WHITE_SPACE:
                                  -						style = spaceStyle;
                                  -						break;
                                  -				}
                                  -				styles.push({start: tokenStart, end: scanner.getOffset() + offset, style: style});
                                  -			}
                                  -		},
                                  -		_findBrackets: function(bracket, closingBracket, text, textOffset, start, end) {
                                  -			var result = [];
                                  -			
                                  -			// get comment ranges that intersect with range
                                  -			var commentRanges = this._getCommentRanges (start, end);
                                  -			
                                  -			// for any sub range that is not a comment, parse code generating tokens (keywords, numbers, brackets, line comments, etc)
                                  -			var offset = start, scanner = this._scanner, token, tokenData;
                                  -			for (var i = 0; i < commentRanges.length; i+= 2) {
                                  -				var commentStart = commentRanges[i];
                                  -				if (offset < commentStart) {
                                  -					scanner.setText(text.substring(offset - start, commentStart - start));
                                  -					while ((token = scanner.nextToken())) {
                                  -						if (scanner.getDataLength() !== 1) { continue; }
                                  -						tokenData = scanner.getData();
                                  -						if (tokenData === bracket) {
                                  -							result.push(scanner.getStartOffset() + offset - start + textOffset);
                                  -						}
                                  -						if (tokenData === closingBracket) {
                                  -							result.push(-(scanner.getStartOffset() + offset - start + textOffset));
                                  -						}
                                  -					}
                                  -				}
                                  -				offset = commentRanges[i+1];
                                  -			}
                                  -			if (offset < end) {
                                  -				scanner.setText(text.substring(offset - start, end - start));
                                  -				while ((token = scanner.nextToken())) {
                                  -					if (scanner.getDataLength() !== 1) { continue; }
                                  -					tokenData = scanner.getData();
                                  -					if (tokenData === bracket) {
                                  -						result.push(scanner.getStartOffset() + offset - start + textOffset);
                                  -					}
                                  -					if (tokenData === closingBracket) {
                                  -						result.push(-(scanner.getStartOffset() + offset - start + textOffset));
                                  -					}
                                  -				}
                                  -			}
                                  -			return result;
                                  -		},
                                  -		_onDestroy: function(e) {
                                  -			this.destroy();
                                  -		},
                                  -		_onLineStyle: function (e) {
                                  -			e.style = this._getLineStyle(e.lineIndex);
                                  -			e.ranges = this._getStyles(e.lineText, e.lineStart);
                                  -		},
                                  -		_onSelection: function(e) {
                                  -			var oldSelection = e.oldValue;
                                  -			var newSelection = e.newValue;
                                  -			var editor = this.editor;
                                  -			var model = editor.getModel();
                                  -			var lineIndex;
                                  -			if (this._matchingBracket !== undefined) {
                                  -				lineIndex = model.getLineAtOffset(this._matchingBracket);
                                  -				editor.redrawLines(lineIndex, lineIndex + 1);
                                  -				this._matchingBracket = this._currentBracket = undefined;
                                  -			}
                                  -			if (this.highlightCaretLine) {
                                  -				var oldLineIndex = model.getLineAtOffset(oldSelection.start);
                                  -				lineIndex = model.getLineAtOffset(newSelection.start);
                                  -				var newEmpty = newSelection.start === newSelection.end;
                                  -				var oldEmpty = oldSelection.start === oldSelection.end;
                                  -				if (!(oldLineIndex === lineIndex && oldEmpty && newEmpty)) {
                                  -					if (oldEmpty) {
                                  -						editor.redrawLines(oldLineIndex, oldLineIndex + 1);
                                  -					}
                                  -					if ((oldLineIndex !== lineIndex || !oldEmpty) && newEmpty) {
                                  -						editor.redrawLines(lineIndex, lineIndex + 1);
                                  -					}
                                  -				}
                                  -			}
                                  -			if (newSelection.start !== newSelection.end || newSelection.start === 0) {
                                  -				return;
                                  -			}
                                  -			var caret = editor.getCaretOffset();
                                  -			if (caret === 0) { return; }
                                  -			var brackets = "{}()[]<>";
                                  -			var bracket = model.getText(caret - 1, caret);
                                  -			var bracketIndex = brackets.indexOf(bracket, 0);
                                  -			if (bracketIndex === -1) { return; }
                                  -			var closingBracket;
                                  -			if (bracketIndex & 1) {
                                  -				closingBracket = brackets.substring(bracketIndex - 1, bracketIndex);
                                  -			} else {
                                  -				closingBracket = brackets.substring(bracketIndex + 1, bracketIndex + 2);
                                  -			}
                                  -			lineIndex = model.getLineAtOffset(caret);
                                  -			var lineText = model.getLine(lineIndex);
                                  -			var lineStart = model.getLineStart(lineIndex);
                                  -			var lineEnd = model.getLineEnd(lineIndex);
                                  -			brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -			for (var i=0; i<brackets.length; i++) {
                                  -				var sign = brackets[i] >= 0 ? 1 : -1;
                                  -				if (brackets[i] * sign === caret - 1) {
                                  -					var level = 1;
                                  -					this._currentBracket = brackets[i] * sign;
                                  -					if (bracketIndex & 1) {
                                  -						i--;
                                  -						for (; i>=0; i--) {
                                  -							sign = brackets[i] >= 0 ? 1 : -1;
                                  -							level += sign;
                                  -							if (level === 0) {
                                  -								this._matchingBracket = brackets[i] * sign;
                                  -								editor.redrawLines(lineIndex, lineIndex + 1);
                                  -								return;
                                  -							}
                                  -						}
                                  -						lineIndex -= 1;
                                  -						while (lineIndex >= 0) {
                                  -							lineText = model.getLine(lineIndex);
                                  -							lineStart = model.getLineStart(lineIndex);
                                  -							lineEnd = model.getLineEnd(lineIndex);
                                  -							brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -							for (var j=brackets.length - 1; j>=0; j--) {
                                  -								sign = brackets[j] >= 0 ? 1 : -1;
                                  -								level += sign;
                                  -								if (level === 0) {
                                  -									this._matchingBracket = brackets[j] * sign;
                                  -									editor.redrawLines(lineIndex, lineIndex + 1);
                                  -									return;
                                  -								}
                                  -							}
                                  -							lineIndex--;
                                  -						}
                                  -					} else {
                                  -						i++;
                                  -						for (; i<brackets.length; i++) {
                                  -							sign = brackets[i] >= 0 ? 1 : -1;
                                  -							level += sign;
                                  -							if (level === 0) {
                                  -								this._matchingBracket = brackets[i] * sign;
                                  -								editor.redrawLines(lineIndex, lineIndex + 1);
                                  -								return;
                                  -							}
                                  -						}
                                  -						lineIndex += 1;
                                  -						var lineCount = model.getLineCount ();
                                  -						while (lineIndex < lineCount) {
                                  -							lineText = model.getLine(lineIndex);
                                  -							lineStart = model.getLineStart(lineIndex);
                                  -							lineEnd = model.getLineEnd(lineIndex);
                                  -							brackets = this._findBrackets(bracket, closingBracket, lineText, lineStart, lineStart, lineEnd);
                                  -							for (var k=0; k<brackets.length; k++) {
                                  -								sign = brackets[k] >= 0 ? 1 : -1;
                                  -								level += sign;
                                  -								if (level === 0) {
                                  -									this._matchingBracket = brackets[k] * sign;
                                  -									editor.redrawLines(lineIndex, lineIndex + 1);
                                  -									return;
                                  -								}
                                  -							}
                                  -							lineIndex++;
                                  -						}
                                  -					}
                                  -					break;
                                  -				}
                                  -			}
                                  -		},
                                  -		_onModelChanged: function(e) {
                                  -			var start = e.start;
                                  -			var removedCharCount = e.removedCharCount;
                                  -			var addedCharCount = e.addedCharCount;
                                  -			if (this._matchingBracket && start < this._matchingBracket) { this._matchingBracket += addedCharCount + removedCharCount; }
                                  -			if (this._currentBracket && start < this._currentBracket) { this._currentBracket += addedCharCount + removedCharCount; }
                                  -			if (start >= this.commentOffset) { return; }
                                  -			var model = this.editor.getModel();
                                  -			
                                  -//			window.console.log("start=" + start + " added=" + addedCharCount + " removed=" + removedCharCount)
                                  -//			for (var i=0; i< this.commentOffsets.length; i++) {
                                  -//				window.console.log(i +"="+ this.commentOffsets[i]);
                                  -//			}
                                  -
                                  -			var commentCount = this.commentOffsets.length;
                                  -			var extra = Math.max(this.commentStart.length - 1, this.commentEnd.length - 1);
                                  -			if (commentCount === 0) {
                                  -				this.commentOffset = Math.max(0, start - extra);
                                  -				return;
                                  -			}
                                  -			var charCount = model.getCharCount();
                                  -			var oldCharCount = charCount - addedCharCount + removedCharCount;
                                  -			var commentStart = this._binarySearch(this.commentOffsets, start, -1, commentCount);
                                  -			var end = start + removedCharCount;
                                  -			var commentEnd = this._binarySearch(this.commentOffsets, end, commentStart - 1, commentCount);
                                  -//			window.console.log("s=" + commentStart + " e=" + commentEnd);
                                  -			var ts;
                                  -			if (commentStart > 0) {
                                  -				ts = this.commentOffsets[--commentStart];
                                  -			} else {
                                  -				ts = Math.max(0, Math.min(this.commentOffsets[commentStart], start) - extra);
                                  -				--commentStart;
                                  -			}
                                  -			var te;
                                  -			var redrawEnd = charCount;
                                  -			if (commentEnd + 1 < this.commentOffsets.length) {
                                  -				te = this.commentOffsets[++commentEnd];
                                  -				if (end > (te - this.commentEnd.length)) {
                                  -					if (commentEnd + 2 < this.commentOffsets.length) { 
                                  -						commentEnd += 2;
                                  -						te = this.commentOffsets[commentEnd];
                                  -						redrawEnd = te + 1;
                                  -						if (redrawEnd > start) { redrawEnd += addedCharCount - removedCharCount; }
                                  -					} else {
                                  -						te = Math.min(oldCharCount, end + extra);
                                  -						this.commentOffset = te;
                                  -					}
                                  -				}
                                  -			} else {
                                  -				te = Math.min(oldCharCount, end + extra);
                                  -				this.commentOffset = te;
                                  -				if (commentEnd > 0 && commentEnd === this.commentOffsets.length) {
                                  -					commentEnd = this.commentOffsets.length - 1;
                                  -				}
                                  -			}
                                  -			if (ts > start) { ts += addedCharCount - removedCharCount; }
                                  -			if (te > start) { te += addedCharCount - removedCharCount; }
                                  -			
                                  -//			window.console.log("commentStart="+ commentStart + " commentEnd=" + commentEnd + " ts=" + ts + " te=" + te)
                                  -
                                  -			if (this.commentOffsets.length > 1 && this.commentOffsets[this.commentOffsets.length - 1] === oldCharCount) {
                                  -				this.commentOffsets.length--;
                                  -			}
                                  -			
                                  -			var offset = 0;
                                  -			var newComments = [];
                                  -			var t = model.getText(ts, te);
                                  -			if (this.commentOffset < te) { this.commentOffset = te; }
                                  -			while (offset < t.length) {
                                  -				var begin = ((commentStart + 1 + newComments.length) & 1) === 0;
                                  -				var search = begin ? this.commentStart : this.commentEnd;
                                  -				var index = t.indexOf(search, offset);
                                  -				if (index !== -1) {
                                  -					newComments.push(ts + (begin ? index : index + search.length));
                                  -				} else {
                                  -					break;
                                  -				}
                                  -				offset = index + search.length;
                                  -			}
                                  -//			window.console.log("lengths=" + newComments.length + " " + (commentEnd - commentStart) + " t=<" + t + ">")
                                  -//			for (var i=0; i< newComments.length; i++) {
                                  -//				window.console.log(i +"=>"+ newComments[i]);
                                  -//			}
                                  -			var redraw = (commentEnd - commentStart) !== newComments.length;
                                  -			if (!redraw) {
                                  -				for (var i=0; i<newComments.length; i++) {
                                  -					offset = this.commentOffsets[commentStart + 1 + i];
                                  -					if (offset > start) { offset += addedCharCount - removedCharCount; }
                                  -					if (offset !== newComments[i]) {
                                  -						redraw = true;
                                  -						break;
                                  -					} 
                                  -				}
                                  -			}
                                  -			
                                  -			var args = [commentStart + 1, (commentEnd - commentStart)].concat(newComments);
                                  -			Array.prototype.splice.apply(this.commentOffsets, args);
                                  -			for (var k=commentStart + 1 + newComments.length; k< this.commentOffsets.length; k++) {
                                  -				this.commentOffsets[k] += addedCharCount - removedCharCount;
                                  -			}
                                  -			
                                  -			if ((this.commentOffsets.length & 1) === 1) { this.commentOffsets.push(charCount); }
                                  -			
                                  -			if (redraw) {
                                  -//				window.console.log ("redraw " + (start + addedCharCount) + " " + redrawEnd);
                                  -				this.editor.redrawRange(start + addedCharCount, redrawEnd);
                                  -			}
                                  -
                                  -//			for (var i=0; i< this.commentOffsets.length; i++) {
                                  -//				window.console.log(i +"="+ this.commentOffsets[i]);
                                  -//			}
                                  -
                                  -		}
                                  -	};
                                  -	return TextStyler;
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styles.txt b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styles.txt
                                  deleted file mode 100644
                                  index 98677e34..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/styles.txt
                                  +++ /dev/null
                                  @@ -1,64602 +0,0 @@
                                  -0;80;0;false;false;63;95;191;;;
                                  -80;3;0;false;false;;;;;;
                                  -83;1;0;false;false;63;95;191;;;
                                  -84;1;0;false;false;;;;;;
                                  -85;9;0;false;false;63;95;191;;;
                                  -94;1;0;false;false;;;;;;
                                  -95;3;0;false;false;63;95;191;;;
                                  -98;1;0;false;false;;;;;;
                                  -99;5;0;false;false;63;95;191;;;
                                  -104;1;0;false;false;;;;;;
                                  -105;4;0;false;false;63;95;191;;;
                                  -109;1;0;false;false;;;;;;
                                  -110;3;0;false;false;63;95;191;;;
                                  -113;1;0;false;false;;;;;;
                                  -114;11;0;false;false;63;95;191;;;
                                  -125;1;0;false;false;;;;;;
                                  -126;3;0;false;false;63;95;191;;;
                                  -129;1;0;false;false;;;;;;
                                  -130;7;0;false;false;63;95;191;;;
                                  -137;3;0;false;false;;;;;;
                                  -140;1;0;false;false;63;95;191;;;
                                  -141;1;0;false;false;;;;;;
                                  -142;3;0;false;false;63;95;191;;;
                                  -145;1;0;false;false;;;;;;
                                  -146;6;0;false;false;63;95;191;;;
                                  -152;1;0;false;false;;;;;;
                                  -153;9;0;false;false;63;95;191;;;
                                  -162;1;0;false;false;;;;;;
                                  -163;4;0;false;false;63;95;191;;;
                                  -167;1;0;false;false;;;;;;
                                  -168;7;0;false;false;63;95;191;;;
                                  -175;1;0;false;false;;;;;;
                                  -176;3;0;false;false;63;95;191;;;
                                  -179;1;0;false;false;;;;;;
                                  -180;3;0;false;false;63;95;191;;;
                                  -183;1;0;false;false;;;;;;
                                  -184;12;0;false;false;63;95;191;;;
                                  -196;1;0;false;false;;;;;;
                                  -197;9;0;false;false;63;95;191;;;
                                  -206;3;0;false;false;;;;;;
                                  -209;1;0;false;false;63;95;191;;;
                                  -210;1;0;false;false;;;;;;
                                  -211;3;0;false;false;63;95;191;;;
                                  -214;1;0;false;false;;;;;;
                                  -215;4;0;false;false;63;95;191;;;
                                  -219;1;0;false;false;;;;;;
                                  -220;9;0;false;false;63;95;191;;;
                                  -229;1;0;false;false;;;;;;
                                  -230;5;0;false;false;63;95;191;;;
                                  -235;1;0;false;false;;;;;;
                                  -236;3;0;false;false;63;95;191;;;
                                  -239;1;0;false;false;;;;;;
                                  -240;5;0;false;false;63;95;191;;;
                                  -245;1;0;false;false;;;;;;
                                  -246;2;0;false;false;63;95;191;;;
                                  -248;1;0;false;false;;;;;;
                                  -249;3;0;false;false;63;95;191;;;
                                  -252;1;0;false;false;;;;;;
                                  -253;7;0;false;false;63;95;191;;;
                                  -260;1;0;false;false;;;;;;
                                  -261;6;0;false;false;63;95;191;;;
                                  -267;1;0;false;false;;;;;;
                                  -268;7;0;false;false;63;95;191;;;
                                  -275;1;0;false;false;;;;;;
                                  -276;4;0;false;false;63;95;191;;;
                                  -280;3;0;false;false;;;;;;
                                  -283;1;0;false;false;63;95;191;;;
                                  -284;1;0;false;false;;;;;;
                                  -285;5;0;false;false;63;95;191;;;
                                  -290;1;0;false;false;;;;;;
                                  -291;11;0;false;false;63;95;191;;;
                                  -302;1;0;false;false;;;;;;
                                  -303;4;0;false;false;63;95;191;;;
                                  -307;1;0;false;false;;;;;;
                                  -308;13;0;false;false;63;95;191;;;
                                  -321;1;0;false;false;;;;;;
                                  -322;3;0;false;false;63;95;191;;;
                                  -325;1;0;false;false;;;;;;
                                  -326;2;0;false;false;63;95;191;;;
                                  -328;1;0;false;false;;;;;;
                                  -329;9;0;false;false;63;95;191;;;
                                  -338;1;0;false;false;;;;;;
                                  -339;2;0;false;false;63;95;191;;;
                                  -341;3;0;false;false;;;;;;
                                  -344;1;0;false;false;63;95;191;;;
                                  -345;1;0;false;false;;;;;;
                                  -346;32;0;false;false;63;95;191;;;
                                  -378;1;0;false;false;127;127;159;;;
                                  -379;8;0;false;false;63;95;191;;;
                                  -387;3;0;false;false;;;;;;
                                  -390;1;0;false;false;63;95;191;;;
                                  -391;3;0;false;false;;;;;;
                                  -394;1;0;false;false;63;95;191;;;
                                  -395;1;0;false;false;;;;;;
                                  -396;13;0;false;false;63;95;191;;;
                                  -409;3;0;false;false;;;;;;
                                  -412;1;0;false;false;63;95;191;;;
                                  -413;5;0;false;false;;;;;;
                                  -418;3;0;false;false;63;95;191;;;
                                  -421;1;0;false;false;;;;;;
                                  -422;11;0;false;false;63;95;191;;;
                                  -433;1;0;false;false;;;;;;
                                  -434;1;0;false;false;127;127;159;;;
                                  -435;1;0;false;false;;;;;;
                                  -436;7;0;false;false;63;95;191;;;
                                  -443;1;0;false;false;;;;;;
                                  -444;3;0;false;false;63;95;191;;;
                                  -447;1;0;false;false;;;;;;
                                  -448;3;0;false;false;63;95;191;;;
                                  -451;1;0;false;false;;;;;;
                                  -452;14;0;false;false;63;95;191;;;
                                  -466;3;0;false;false;;;;;;
                                  -469;80;0;false;false;63;95;191;;;
                                  -549;2;0;false;false;;;;;;
                                  -551;7;1;false;false;127;0;85;;;
                                  -558;1;0;false;false;;;;;;
                                  -559;23;0;false;false;0;0;0;;;
                                  -582;6;0;false;false;;;;;;
                                  -588;6;1;false;false;127;0;85;;;
                                  -594;1;0;false;false;;;;;;
                                  -595;12;0;false;false;0;0;0;;;
                                  -607;4;0;false;false;;;;;;
                                  -611;6;1;false;false;127;0;85;;;
                                  -617;1;0;false;false;;;;;;
                                  -618;18;0;false;false;0;0;0;;;
                                  -636;2;0;false;false;;;;;;
                                  -638;6;1;false;false;127;0;85;;;
                                  -644;1;0;false;false;;;;;;
                                  -645;32;0;false;false;0;0;0;;;
                                  -677;2;0;false;false;;;;;;
                                  -679;6;1;false;false;127;0;85;;;
                                  -685;1;0;false;false;;;;;;
                                  -686;22;0;false;false;0;0;0;;;
                                  -708;2;0;false;false;;;;;;
                                  -710;6;1;false;false;127;0;85;;;
                                  -716;1;0;false;false;;;;;;
                                  -717;25;0;false;false;0;0;0;;;
                                  -742;2;0;false;false;;;;;;
                                  -744;6;1;false;false;127;0;85;;;
                                  -750;1;0;false;false;;;;;;
                                  -751;27;0;false;false;0;0;0;;;
                                  -778;2;0;false;false;;;;;;
                                  -780;6;1;false;false;127;0;85;;;
                                  -786;1;0;false;false;;;;;;
                                  -787;27;0;false;false;0;0;0;;;
                                  -814;2;0;false;false;;;;;;
                                  -816;6;1;false;false;127;0;85;;;
                                  -822;1;0;false;false;;;;;;
                                  -823;27;0;false;false;0;0;0;;;
                                  -850;2;0;false;false;;;;;;
                                  -852;6;1;false;false;127;0;85;;;
                                  -858;1;0;false;false;;;;;;
                                  -859;26;0;false;false;0;0;0;;;
                                  -885;4;0;false;false;;;;;;
                                  -889;3;0;false;false;63;95;191;;;
                                  -892;3;0;false;false;;;;;;
                                  -895;1;0;false;false;63;95;191;;;
                                  -896;1;0;false;false;;;;;;
                                  -897;1;0;false;false;63;95;191;;;
                                  -898;1;0;false;false;;;;;;
                                  -899;10;0;false;false;63;95;191;;;
                                  -909;1;0;false;false;;;;;;
                                  -910;2;0;false;false;63;95;191;;;
                                  -912;1;0;false;false;;;;;;
                                  -913;2;0;false;false;63;95;191;;;
                                  -915;1;0;false;false;;;;;;
                                  -916;8;0;false;false;63;95;191;;;
                                  -924;1;0;false;false;;;;;;
                                  -925;4;0;false;false;63;95;191;;;
                                  -929;1;0;false;false;;;;;;
                                  -930;9;0;false;false;63;95;191;;;
                                  -939;1;0;false;false;;;;;;
                                  -940;6;0;false;false;63;95;191;;;
                                  -946;1;0;false;false;;;;;;
                                  -947;4;0;false;false;63;95;191;;;
                                  -951;1;0;false;false;;;;;;
                                  -952;8;0;false;false;63;95;191;;;
                                  -960;1;0;false;false;;;;;;
                                  -961;5;0;false;false;63;95;191;;;
                                  -966;4;0;false;false;;;;;;
                                  -970;1;0;false;false;63;95;191;;;
                                  -971;1;0;false;false;;;;;;
                                  -972;2;0;false;false;63;95;191;;;
                                  -974;1;0;false;false;;;;;;
                                  -975;5;0;false;false;63;95;191;;;
                                  -980;2;0;false;false;;;;;;
                                  -982;3;0;false;false;63;95;191;;;
                                  -985;1;0;false;false;;;;;;
                                  -986;9;0;false;false;63;95;191;;;
                                  -995;1;0;false;false;;;;;;
                                  -996;5;0;false;false;63;95;191;;;
                                  -1001;1;0;false;false;;;;;;
                                  -1002;10;0;false;false;63;95;191;;;
                                  -1012;1;0;false;false;;;;;;
                                  -1013;3;0;false;false;63;95;191;;;
                                  -1016;1;0;false;false;;;;;;
                                  -1017;2;0;false;false;63;95;191;;;
                                  -1019;1;0;false;false;;;;;;
                                  -1020;7;0;false;false;63;95;191;;;
                                  -1027;1;0;false;false;;;;;;
                                  -1028;3;0;false;false;63;95;191;;;
                                  -1031;1;0;false;false;;;;;;
                                  -1032;3;0;false;false;63;95;191;;;
                                  -1035;1;0;false;false;;;;;;
                                  -1036;5;0;false;false;63;95;191;;;
                                  -1041;4;0;false;false;;;;;;
                                  -1045;1;0;false;false;63;95;191;;;
                                  -1046;1;0;false;false;;;;;;
                                  -1047;4;0;false;false;127;127;159;;;
                                  -1051;3;0;false;false;;;;;;
                                  -1054;1;0;false;false;63;95;191;;;
                                  -1055;1;0;false;false;;;;;;
                                  -1056;4;0;false;false;127;127;159;;;
                                  -1060;10;0;false;false;63;95;191;;;
                                  -1070;1;0;false;false;;;;;;
                                  -1071;5;0;false;false;63;95;191;;;
                                  -1076;4;0;false;false;;;;;;
                                  -1080;1;0;false;false;63;95;191;;;
                                  -1081;1;0;false;false;;;;;;
                                  -1082;4;0;false;false;127;127;159;;;
                                  -1086;10;0;false;false;63;95;191;;;
                                  -1096;1;0;false;false;;;;;;
                                  -1097;5;0;false;false;63;95;191;;;
                                  -1102;3;0;false;false;;;;;;
                                  -1105;1;0;false;false;63;95;191;;;
                                  -1106;1;0;false;false;;;;;;
                                  -1107;4;0;false;false;127;127;159;;;
                                  -1111;4;0;false;false;63;95;191;;;
                                  -1115;1;0;false;false;;;;;;
                                  -1116;5;0;false;false;63;95;191;;;
                                  -1121;1;0;false;false;;;;;;
                                  -1122;6;0;false;false;63;95;191;;;
                                  -1128;1;0;false;false;;;;;;
                                  -1129;7;0;false;false;63;95;191;;;
                                  -1136;1;0;false;false;;;;;;
                                  -1137;4;0;false;false;63;95;191;;;
                                  -1141;1;0;false;false;127;127;159;;;
                                  -1142;7;0;false;false;63;95;191;;;
                                  -1149;1;0;false;false;;;;;;
                                  -1150;8;0;false;false;63;95;191;;;
                                  -1158;3;0;false;false;;;;;;
                                  -1161;1;0;false;false;63;95;191;;;
                                  -1162;1;0;false;false;;;;;;
                                  -1163;4;0;false;false;127;127;159;;;
                                  -1167;9;0;false;false;63;95;191;;;
                                  -1176;3;0;false;false;;;;;;
                                  -1179;1;0;false;false;63;95;191;;;
                                  -1180;1;0;false;false;;;;;;
                                  -1181;4;0;false;false;127;127;159;;;
                                  -1185;9;0;false;false;63;95;191;;;
                                  -1194;3;0;false;false;;;;;;
                                  -1197;1;0;false;false;63;95;191;;;
                                  -1198;1;0;false;false;;;;;;
                                  -1199;5;0;false;false;127;127;159;;;
                                  -1204;3;0;false;false;;;;;;
                                  -1207;1;0;false;false;63;95;191;;;
                                  -1208;1;0;false;false;;;;;;
                                  -1209;3;0;false;false;127;127;159;;;
                                  -1212;3;0;false;false;;;;;;
                                  -1215;1;0;false;false;63;95;191;;;
                                  -1216;1;0;false;false;;;;;;
                                  -1217;2;0;false;false;63;95;191;;;
                                  -1219;1;0;false;false;;;;;;
                                  -1220;8;0;false;false;63;95;191;;;
                                  -1228;1;0;false;false;;;;;;
                                  -1229;2;0;false;false;63;95;191;;;
                                  -1231;1;0;false;false;;;;;;
                                  -1232;4;0;false;false;63;95;191;;;
                                  -1236;1;0;false;false;;;;;;
                                  -1237;5;0;false;false;63;95;191;;;
                                  -1242;1;0;false;false;;;;;;
                                  -1243;11;0;false;false;63;95;191;;;
                                  -1254;1;0;false;false;;;;;;
                                  -1255;3;0;false;false;63;95;191;;;
                                  -1258;1;0;false;false;;;;;;
                                  -1259;10;0;false;false;63;95;191;;;
                                  -1269;1;0;false;false;;;;;;
                                  -1270;5;0;false;false;63;95;191;;;
                                  -1275;1;0;false;false;;;;;;
                                  -1276;2;0;false;false;63;95;191;;;
                                  -1278;1;0;false;false;;;;;;
                                  -1279;1;0;false;false;63;95;191;;;
                                  -1280;1;0;false;false;;;;;;
                                  -1281;4;0;false;false;63;95;191;;;
                                  -1285;1;0;false;false;;;;;;
                                  -1286;3;0;false;false;63;95;191;;;
                                  -1289;4;0;false;false;;;;;;
                                  -1293;1;0;false;false;63;95;191;;;
                                  -1294;1;0;false;false;;;;;;
                                  -1295;2;0;false;false;63;95;191;;;
                                  -1297;1;0;false;false;;;;;;
                                  -1298;10;0;false;false;63;95;191;;;
                                  -1308;3;0;false;false;;;;;;
                                  -1311;1;0;false;false;63;95;191;;;
                                  -1312;1;0;false;false;;;;;;
                                  -1313;4;0;false;false;127;127;159;;;
                                  -1317;3;0;false;false;;;;;;
                                  -1320;1;0;false;false;63;95;191;;;
                                  -1321;1;0;false;false;;;;;;
                                  -1322;3;0;false;false;127;127;159;;;
                                  -1325;3;0;false;false;;;;;;
                                  -1328;1;0;false;false;63;95;191;;;
                                  -1329;1;0;false;false;;;;;;
                                  -1330;5;0;false;false;63;95;191;;;
                                  -1335;1;0;false;false;;;;;;
                                  -1336;3;0;false;false;63;95;191;;;
                                  -1339;1;0;false;false;;;;;;
                                  -1340;3;0;false;false;63;95;191;;;
                                  -1343;1;0;false;false;;;;;;
                                  -1344;4;0;false;false;63;95;191;;;
                                  -1348;1;0;false;false;;;;;;
                                  -1349;2;0;false;false;63;95;191;;;
                                  -1351;1;0;false;false;;;;;;
                                  -1352;3;0;false;false;63;95;191;;;
                                  -1355;1;0;false;false;;;;;;
                                  -1356;4;0;false;false;63;95;191;;;
                                  -1360;1;0;false;false;;;;;;
                                  -1361;6;0;false;false;63;95;191;;;
                                  -1367;1;0;false;false;;;;;;
                                  -1368;4;0;false;false;63;95;191;;;
                                  -1372;1;0;false;false;;;;;;
                                  -1373;10;0;false;false;63;95;191;;;
                                  -1383;1;0;false;false;;;;;;
                                  -1384;4;0;false;false;63;95;191;;;
                                  -1388;1;0;false;false;;;;;;
                                  -1389;5;0;false;false;63;95;191;;;
                                  -1394;1;0;false;false;;;;;;
                                  -1395;12;0;false;false;63;95;191;;;
                                  -1407;5;0;false;false;;;;;;
                                  -1412;1;0;false;false;63;95;191;;;
                                  -1413;1;0;false;false;;;;;;
                                  -1414;3;0;false;false;63;95;191;;;
                                  -1417;1;0;false;false;;;;;;
                                  -1418;3;0;false;false;63;95;191;;;
                                  -1421;1;0;false;false;;;;;;
                                  -1422;3;0;false;false;63;95;191;;;
                                  -1425;1;0;false;false;;;;;;
                                  -1426;3;0;false;false;63;95;191;;;
                                  -1429;1;0;false;false;;;;;;
                                  -1430;3;0;false;false;63;95;191;;;
                                  -1433;1;0;false;false;;;;;;
                                  -1434;4;0;false;false;63;95;191;;;
                                  -1438;1;0;false;false;;;;;;
                                  -1439;2;0;false;false;63;95;191;;;
                                  -1441;1;0;false;false;;;;;;
                                  -1442;7;0;false;false;63;95;191;;;
                                  -1449;1;0;false;false;;;;;;
                                  -1450;3;0;false;false;63;95;191;;;
                                  -1453;1;0;false;false;;;;;;
                                  -1454;10;0;false;false;63;95;191;;;
                                  -1464;1;0;false;false;;;;;;
                                  -1465;2;0;false;false;63;95;191;;;
                                  -1467;1;0;false;false;;;;;;
                                  -1468;3;0;false;false;63;95;191;;;
                                  -1471;1;0;false;false;;;;;;
                                  -1472;3;0;false;false;63;95;191;;;
                                  -1475;1;0;false;false;;;;;;
                                  -1476;6;0;false;false;63;95;191;;;
                                  -1482;1;0;false;false;;;;;;
                                  -1483;4;0;false;false;63;95;191;;;
                                  -1487;1;0;false;false;;;;;;
                                  -1488;3;0;false;false;63;95;191;;;
                                  -1491;4;0;false;false;;;;;;
                                  -1495;1;0;false;false;63;95;191;;;
                                  -1496;1;0;false;false;;;;;;
                                  -1497;18;0;false;false;63;95;191;;;
                                  -1515;2;0;false;false;;;;;;
                                  -1517;2;0;false;false;63;95;191;;;
                                  -1519;1;0;false;false;;;;;;
                                  -1520;3;0;false;false;63;95;191;;;
                                  -1523;1;0;false;false;;;;;;
                                  -1524;6;0;false;false;63;95;191;;;
                                  -1530;1;0;false;false;;;;;;
                                  -1531;4;0;false;false;63;95;191;;;
                                  -1535;1;0;false;false;;;;;;
                                  -1536;3;0;false;false;63;95;191;;;
                                  -1539;1;0;false;false;;;;;;
                                  -1540;9;0;false;false;63;95;191;;;
                                  -1549;1;0;false;false;;;;;;
                                  -1550;3;0;false;false;63;95;191;;;
                                  -1553;1;0;false;false;;;;;;
                                  -1554;4;0;false;false;63;95;191;;;
                                  -1558;1;0;false;false;;;;;;
                                  -1559;2;0;false;false;63;95;191;;;
                                  -1561;1;0;false;false;;;;;;
                                  -1562;11;0;false;false;63;95;191;;;
                                  -1573;4;0;false;false;;;;;;
                                  -1577;1;0;false;false;63;95;191;;;
                                  -1578;1;0;false;false;;;;;;
                                  -1579;3;0;false;false;63;95;191;;;
                                  -1582;1;0;false;false;;;;;;
                                  -1583;11;0;false;false;63;95;191;;;
                                  -1594;1;0;false;false;;;;;;
                                  -1595;3;0;false;false;63;95;191;;;
                                  -1598;1;0;false;false;;;;;;
                                  -1599;4;0;false;false;63;95;191;;;
                                  -1603;1;0;false;false;;;;;;
                                  -1604;5;0;false;false;63;95;191;;;
                                  -1609;1;0;false;false;;;;;;
                                  -1610;11;0;false;false;63;95;191;;;
                                  -1621;1;0;false;false;;;;;;
                                  -1622;3;0;false;false;63;95;191;;;
                                  -1625;1;0;false;false;;;;;;
                                  -1626;3;0;false;false;63;95;191;;;
                                  -1629;1;0;false;false;;;;;;
                                  -1630;7;0;false;false;63;95;191;;;
                                  -1637;2;0;false;false;;;;;;
                                  -1639;10;0;false;false;63;95;191;;;
                                  -1649;1;0;false;false;;;;;;
                                  -1650;3;0;false;false;63;95;191;;;
                                  -1653;1;0;false;false;;;;;;
                                  -1654;3;0;false;false;63;95;191;;;
                                  -1657;4;0;false;false;;;;;;
                                  -1661;1;0;false;false;63;95;191;;;
                                  -1662;1;0;false;false;;;;;;
                                  -1663;3;0;false;false;63;95;191;;;
                                  -1666;1;0;false;false;;;;;;
                                  -1667;6;0;false;false;63;95;191;;;
                                  -1673;1;0;false;false;;;;;;
                                  -1674;4;0;false;false;63;95;191;;;
                                  -1678;1;0;false;false;;;;;;
                                  -1679;3;0;false;false;63;95;191;;;
                                  -1682;1;0;false;false;;;;;;
                                  -1683;8;0;false;false;63;95;191;;;
                                  -1691;1;0;false;false;;;;;;
                                  -1692;3;0;false;false;63;95;191;;;
                                  -1695;1;0;false;false;;;;;;
                                  -1696;3;0;false;false;63;95;191;;;
                                  -1699;1;0;false;false;;;;;;
                                  -1700;3;0;false;false;63;95;191;;;
                                  -1703;1;0;false;false;;;;;;
                                  -1704;10;0;false;false;63;95;191;;;
                                  -1714;1;0;false;false;;;;;;
                                  -1715;4;0;false;false;63;95;191;;;
                                  -1719;2;0;false;false;;;;;;
                                  -1721;3;0;false;false;63;95;191;;;
                                  -1724;1;0;false;false;;;;;;
                                  -1725;9;0;false;false;63;95;191;;;
                                  -1734;3;0;false;false;;;;;;
                                  -1737;1;0;false;false;63;95;191;;;
                                  -1738;1;0;false;false;;;;;;
                                  -1739;10;0;false;false;63;95;191;;;
                                  -1749;1;0;false;false;;;;;;
                                  -1750;3;0;false;false;63;95;191;;;
                                  -1753;1;0;false;false;;;;;;
                                  -1754;2;0;false;false;63;95;191;;;
                                  -1756;1;0;false;false;;;;;;
                                  -1757;3;0;false;false;63;95;191;;;
                                  -1760;1;0;false;false;;;;;;
                                  -1761;9;0;false;false;63;95;191;;;
                                  -1770;1;0;false;false;;;;;;
                                  -1771;2;0;false;false;63;95;191;;;
                                  -1773;1;0;false;false;;;;;;
                                  -1774;3;0;false;false;63;95;191;;;
                                  -1777;1;0;false;false;;;;;;
                                  -1778;4;0;false;false;63;95;191;;;
                                  -1782;1;0;false;false;;;;;;
                                  -1783;7;0;false;false;63;95;191;;;
                                  -1790;1;0;false;false;;;;;;
                                  -1791;1;0;false;false;63;95;191;;;
                                  -1792;1;0;false;false;;;;;;
                                  -1793;18;0;false;false;63;95;191;;;
                                  -1811;3;0;false;false;;;;;;
                                  -1814;1;0;false;false;63;95;191;;;
                                  -1815;1;0;false;false;;;;;;
                                  -1816;4;0;false;false;127;127;159;;;
                                  -1820;3;0;false;false;;;;;;
                                  -1823;1;0;false;false;63;95;191;;;
                                  -1824;1;0;false;false;;;;;;
                                  -1825;4;0;false;false;127;127;159;;;
                                  -1829;26;0;false;false;63;95;191;;;
                                  -1855;3;0;false;false;;;;;;
                                  -1858;1;0;false;false;63;95;191;;;
                                  -1859;1;0;false;false;;;;;;
                                  -1860;4;0;false;false;127;127;159;;;
                                  -1864;16;0;false;false;63;95;191;;;
                                  -1880;3;0;false;false;;;;;;
                                  -1883;1;0;false;false;63;95;191;;;
                                  -1884;1;0;false;false;;;;;;
                                  -1885;4;0;false;false;127;127;159;;;
                                  -1889;40;0;false;false;63;95;191;;;
                                  -1929;3;0;false;false;;;;;;
                                  -1932;1;0;false;false;63;95;191;;;
                                  -1933;1;0;false;false;;;;;;
                                  -1934;4;0;false;false;127;127;159;;;
                                  -1938;25;0;false;false;63;95;191;;;
                                  -1963;3;0;false;false;;;;;;
                                  -1966;1;0;false;false;63;95;191;;;
                                  -1967;1;0;false;false;;;;;;
                                  -1968;4;0;false;false;127;127;159;;;
                                  -1972;28;0;false;false;63;95;191;;;
                                  -2000;3;0;false;false;;;;;;
                                  -2003;1;0;false;false;63;95;191;;;
                                  -2004;1;0;false;false;;;;;;
                                  -2005;5;0;false;false;127;127;159;;;
                                  -2010;3;0;false;false;;;;;;
                                  -2013;1;0;false;false;63;95;191;;;
                                  -2014;1;0;false;false;;;;;;
                                  -2015;4;0;false;false;127;127;159;;;
                                  -2019;3;0;false;false;;;;;;
                                  -2022;1;0;false;false;63;95;191;;;
                                  -2023;1;0;false;false;;;;;;
                                  -2024;3;0;false;false;127;127;159;;;
                                  -2027;3;0;false;false;;;;;;
                                  -2030;1;0;false;false;63;95;191;;;
                                  -2031;1;0;false;false;;;;;;
                                  -2032;5;0;false;false;63;95;191;;;
                                  -2037;1;0;false;false;;;;;;
                                  -2038;3;0;false;false;63;95;191;;;
                                  -2041;1;0;false;false;;;;;;
                                  -2042;3;0;false;false;63;95;191;;;
                                  -2045;1;0;false;false;;;;;;
                                  -2046;4;0;false;false;63;95;191;;;
                                  -2050;1;0;false;false;;;;;;
                                  -2051;2;0;false;false;63;95;191;;;
                                  -2053;1;0;false;false;;;;;;
                                  -2054;3;0;false;false;63;95;191;;;
                                  -2057;1;0;false;false;;;;;;
                                  -2058;4;0;false;false;63;95;191;;;
                                  -2062;1;0;false;false;;;;;;
                                  -2063;6;0;false;false;63;95;191;;;
                                  -2069;1;0;false;false;;;;;;
                                  -2070;4;0;false;false;63;95;191;;;
                                  -2074;1;0;false;false;;;;;;
                                  -2075;10;0;false;false;63;95;191;;;
                                  -2085;1;0;false;false;;;;;;
                                  -2086;4;0;false;false;63;95;191;;;
                                  -2090;1;0;false;false;;;;;;
                                  -2091;10;0;false;false;63;95;191;;;
                                  -2101;1;0;false;false;;;;;;
                                  -2102;7;0;false;false;63;95;191;;;
                                  -2109;3;0;false;false;;;;;;
                                  -2112;1;0;false;false;63;95;191;;;
                                  -2113;1;0;false;false;;;;;;
                                  -2114;3;0;false;false;63;95;191;;;
                                  -2117;1;0;false;false;;;;;;
                                  -2118;3;0;false;false;63;95;191;;;
                                  -2121;1;0;false;false;;;;;;
                                  -2122;3;0;false;false;63;95;191;;;
                                  -2125;1;0;false;false;;;;;;
                                  -2126;3;0;false;false;63;95;191;;;
                                  -2129;1;0;false;false;;;;;;
                                  -2130;3;0;false;false;63;95;191;;;
                                  -2133;1;0;false;false;;;;;;
                                  -2134;4;0;false;false;63;95;191;;;
                                  -2138;1;0;false;false;;;;;;
                                  -2139;2;0;false;false;63;95;191;;;
                                  -2141;1;0;false;false;;;;;;
                                  -2142;7;0;false;false;63;95;191;;;
                                  -2149;1;0;false;false;;;;;;
                                  -2150;3;0;false;false;63;95;191;;;
                                  -2153;1;0;false;false;;;;;;
                                  -2154;10;0;false;false;63;95;191;;;
                                  -2164;1;0;false;false;;;;;;
                                  -2165;2;0;false;false;63;95;191;;;
                                  -2167;1;0;false;false;;;;;;
                                  -2168;3;0;false;false;63;95;191;;;
                                  -2171;1;0;false;false;;;;;;
                                  -2172;3;0;false;false;63;95;191;;;
                                  -2175;1;0;false;false;;;;;;
                                  -2176;6;0;false;false;63;95;191;;;
                                  -2182;1;0;false;false;;;;;;
                                  -2183;4;0;false;false;63;95;191;;;
                                  -2187;1;0;false;false;;;;;;
                                  -2188;3;0;false;false;63;95;191;;;
                                  -2191;4;0;false;false;;;;;;
                                  -2195;1;0;false;false;63;95;191;;;
                                  -2196;1;0;false;false;;;;;;
                                  -2197;23;0;false;false;63;95;191;;;
                                  -2220;2;0;false;false;;;;;;
                                  -2222;2;0;false;false;63;95;191;;;
                                  -2224;1;0;false;false;;;;;;
                                  -2225;3;0;false;false;63;95;191;;;
                                  -2228;1;0;false;false;;;;;;
                                  -2229;6;0;false;false;63;95;191;;;
                                  -2235;1;0;false;false;;;;;;
                                  -2236;4;0;false;false;63;95;191;;;
                                  -2240;1;0;false;false;;;;;;
                                  -2241;3;0;false;false;63;95;191;;;
                                  -2244;1;0;false;false;;;;;;
                                  -2245;9;0;false;false;63;95;191;;;
                                  -2254;1;0;false;false;;;;;;
                                  -2255;3;0;false;false;63;95;191;;;
                                  -2258;1;0;false;false;;;;;;
                                  -2259;4;0;false;false;63;95;191;;;
                                  -2263;1;0;false;false;;;;;;
                                  -2264;2;0;false;false;63;95;191;;;
                                  -2266;1;0;false;false;;;;;;
                                  -2267;11;0;false;false;63;95;191;;;
                                  -2278;4;0;false;false;;;;;;
                                  -2282;1;0;false;false;63;95;191;;;
                                  -2283;1;0;false;false;;;;;;
                                  -2284;3;0;false;false;63;95;191;;;
                                  -2287;1;0;false;false;;;;;;
                                  -2288;11;0;false;false;63;95;191;;;
                                  -2299;1;0;false;false;;;;;;
                                  -2300;3;0;false;false;63;95;191;;;
                                  -2303;1;0;false;false;;;;;;
                                  -2304;4;0;false;false;63;95;191;;;
                                  -2308;1;0;false;false;;;;;;
                                  -2309;10;0;false;false;63;95;191;;;
                                  -2319;1;0;false;false;;;;;;
                                  -2320;5;0;false;false;63;95;191;;;
                                  -2325;1;0;false;false;;;;;;
                                  -2326;11;0;false;false;63;95;191;;;
                                  -2337;1;0;false;false;;;;;;
                                  -2338;3;0;false;false;63;95;191;;;
                                  -2341;1;0;false;false;;;;;;
                                  -2342;3;0;false;false;63;95;191;;;
                                  -2345;1;0;false;false;;;;;;
                                  -2346;7;0;false;false;63;95;191;;;
                                  -2353;5;0;false;false;;;;;;
                                  -2358;1;0;false;false;63;95;191;;;
                                  -2359;1;0;false;false;;;;;;
                                  -2360;10;0;false;false;63;95;191;;;
                                  -2370;1;0;false;false;;;;;;
                                  -2371;3;0;false;false;63;95;191;;;
                                  -2374;1;0;false;false;;;;;;
                                  -2375;3;0;false;false;63;95;191;;;
                                  -2378;1;0;false;false;;;;;;
                                  -2379;3;0;false;false;63;95;191;;;
                                  -2382;1;0;false;false;;;;;;
                                  -2383;6;0;false;false;63;95;191;;;
                                  -2389;1;0;false;false;;;;;;
                                  -2390;4;0;false;false;63;95;191;;;
                                  -2394;1;0;false;false;;;;;;
                                  -2395;3;0;false;false;63;95;191;;;
                                  -2398;1;0;false;false;;;;;;
                                  -2399;8;0;false;false;63;95;191;;;
                                  -2407;1;0;false;false;;;;;;
                                  -2408;3;0;false;false;63;95;191;;;
                                  -2411;1;0;false;false;;;;;;
                                  -2412;3;0;false;false;63;95;191;;;
                                  -2415;1;0;false;false;;;;;;
                                  -2416;3;0;false;false;63;95;191;;;
                                  -2419;1;0;false;false;;;;;;
                                  -2420;10;0;false;false;63;95;191;;;
                                  -2430;1;0;false;false;;;;;;
                                  -2431;4;0;false;false;63;95;191;;;
                                  -2435;5;0;false;false;;;;;;
                                  -2440;1;0;false;false;63;95;191;;;
                                  -2441;1;0;false;false;;;;;;
                                  -2442;3;0;false;false;63;95;191;;;
                                  -2445;1;0;false;false;;;;;;
                                  -2446;9;0;false;false;63;95;191;;;
                                  -2455;1;0;false;false;;;;;;
                                  -2456;10;0;false;false;63;95;191;;;
                                  -2466;1;0;false;false;;;;;;
                                  -2467;3;0;false;false;63;95;191;;;
                                  -2470;1;0;false;false;;;;;;
                                  -2471;2;0;false;false;63;95;191;;;
                                  -2473;1;0;false;false;;;;;;
                                  -2474;3;0;false;false;63;95;191;;;
                                  -2477;1;0;false;false;;;;;;
                                  -2478;9;0;false;false;63;95;191;;;
                                  -2487;1;0;false;false;;;;;;
                                  -2488;2;0;false;false;63;95;191;;;
                                  -2490;1;0;false;false;;;;;;
                                  -2491;3;0;false;false;63;95;191;;;
                                  -2494;1;0;false;false;;;;;;
                                  -2495;4;0;false;false;63;95;191;;;
                                  -2499;1;0;false;false;;;;;;
                                  -2500;7;0;false;false;63;95;191;;;
                                  -2507;1;0;false;false;;;;;;
                                  -2508;1;0;false;false;63;95;191;;;
                                  -2509;4;0;false;false;;;;;;
                                  -2513;1;0;false;false;63;95;191;;;
                                  -2514;1;0;false;false;;;;;;
                                  -2515;23;0;false;false;63;95;191;;;
                                  -2538;3;0;false;false;;;;;;
                                  -2541;1;0;false;false;63;95;191;;;
                                  -2542;1;0;false;false;;;;;;
                                  -2543;4;0;false;false;127;127;159;;;
                                  -2547;3;0;false;false;;;;;;
                                  -2550;1;0;false;false;63;95;191;;;
                                  -2551;1;0;false;false;;;;;;
                                  -2552;4;0;false;false;127;127;159;;;
                                  -2556;22;0;false;false;63;95;191;;;
                                  -2578;3;0;false;false;;;;;;
                                  -2581;1;0;false;false;63;95;191;;;
                                  -2582;1;0;false;false;;;;;;
                                  -2583;4;0;false;false;127;127;159;;;
                                  -2587;32;0;false;false;63;95;191;;;
                                  -2619;3;0;false;false;;;;;;
                                  -2622;1;0;false;false;63;95;191;;;
                                  -2623;1;0;false;false;;;;;;
                                  -2624;5;0;false;false;127;127;159;;;
                                  -2629;3;0;false;false;;;;;;
                                  -2632;1;0;false;false;63;95;191;;;
                                  -2633;1;0;false;false;;;;;;
                                  -2634;4;0;false;false;127;127;159;;;
                                  -2638;3;0;false;false;;;;;;
                                  -2641;1;0;false;false;63;95;191;;;
                                  -2642;1;0;false;false;;;;;;
                                  -2643;3;0;false;false;127;127;159;;;
                                  -2646;3;0;false;false;;;;;;
                                  -2649;1;0;false;false;63;95;191;;;
                                  -2650;1;0;false;false;;;;;;
                                  -2651;3;0;false;false;63;95;191;;;
                                  -2654;1;0;false;false;;;;;;
                                  -2655;7;0;false;false;63;95;191;;;
                                  -2662;1;0;false;false;;;;;;
                                  -2663;14;0;false;false;63;95;191;;;
                                  -2677;1;0;false;false;;;;;;
                                  -2678;3;0;false;false;63;95;191;;;
                                  -2681;1;0;false;false;;;;;;
                                  -2682;4;0;false;false;63;95;191;;;
                                  -2686;1;0;false;false;;;;;;
                                  -2687;6;0;false;false;63;95;191;;;
                                  -2693;1;0;false;false;;;;;;
                                  -2694;3;0;false;false;63;95;191;;;
                                  -2697;1;0;false;false;;;;;;
                                  -2698;4;0;false;false;63;95;191;;;
                                  -2702;1;0;false;false;;;;;;
                                  -2703;2;0;false;false;63;95;191;;;
                                  -2705;1;0;false;false;;;;;;
                                  -2706;4;0;false;false;63;95;191;;;
                                  -2710;1;0;false;false;127;127;159;;;
                                  -2711;8;0;false;false;63;95;191;;;
                                  -2719;2;0;false;false;;;;;;
                                  -2721;2;0;false;false;63;95;191;;;
                                  -2723;1;0;false;false;;;;;;
                                  -2724;2;0;false;false;63;95;191;;;
                                  -2726;1;0;false;false;;;;;;
                                  -2727;3;0;false;false;63;95;191;;;
                                  -2730;3;0;false;false;;;;;;
                                  -2733;1;0;false;false;63;95;191;;;
                                  -2734;1;0;false;false;;;;;;
                                  -2735;3;0;false;false;63;95;191;;;
                                  -2738;1;0;false;false;;;;;;
                                  -2739;4;0;false;false;63;95;191;;;
                                  -2743;1;0;false;false;;;;;;
                                  -2744;9;0;false;false;63;95;191;;;
                                  -2753;1;0;false;false;;;;;;
                                  -2754;3;0;false;false;63;95;191;;;
                                  -2757;1;0;false;false;;;;;;
                                  -2758;17;0;false;false;63;95;191;;;
                                  -2775;1;0;false;false;;;;;;
                                  -2776;9;0;false;false;63;95;191;;;
                                  -2785;1;0;false;false;;;;;;
                                  -2786;3;0;false;false;63;95;191;;;
                                  -2789;1;0;false;false;;;;;;
                                  -2790;3;0;false;false;63;95;191;;;
                                  -2793;1;0;false;false;;;;;;
                                  -2794;3;0;false;false;63;95;191;;;
                                  -2797;1;0;false;false;;;;;;
                                  -2798;10;0;false;false;63;95;191;;;
                                  -2808;1;0;false;false;;;;;;
                                  -2809;3;0;false;false;63;95;191;;;
                                  -2812;3;0;false;false;;;;;;
                                  -2815;1;0;false;false;63;95;191;;;
                                  -2816;1;0;false;false;;;;;;
                                  -2817;29;0;false;false;63;95;191;;;
                                  -2846;1;0;false;false;;;;;;
                                  -2847;2;0;false;false;63;95;191;;;
                                  -2849;1;0;false;false;;;;;;
                                  -2850;10;0;false;false;63;95;191;;;
                                  -2860;1;0;false;false;;;;;;
                                  -2861;3;0;false;false;63;95;191;;;
                                  -2864;1;0;false;false;;;;;;
                                  -2865;7;0;false;false;63;95;191;;;
                                  -2872;4;0;false;false;;;;;;
                                  -2876;1;0;false;false;63;95;191;;;
                                  -2877;1;0;false;false;;;;;;
                                  -2878;4;0;false;false;127;127;159;;;
                                  -2882;3;0;false;false;;;;;;
                                  -2885;1;0;false;false;63;95;191;;;
                                  -2886;1;0;false;false;;;;;;
                                  -2887;3;0;false;false;127;127;159;;;
                                  -2890;3;0;false;false;;;;;;
                                  -2893;1;0;false;false;63;95;191;;;
                                  -2894;1;0;false;false;;;;;;
                                  -2895;10;0;false;false;63;95;191;;;
                                  -2905;1;0;false;false;;;;;;
                                  -2906;4;0;false;false;63;95;191;;;
                                  -2910;1;0;false;false;;;;;;
                                  -2911;5;0;false;false;63;95;191;;;
                                  -2916;1;0;false;false;;;;;;
                                  -2917;2;0;false;false;63;95;191;;;
                                  -2919;1;0;false;false;;;;;;
                                  -2920;4;0;false;false;127;127;159;;;
                                  -2924;3;0;false;false;63;95;191;;;
                                  -2927;5;0;false;false;127;127;159;;;
                                  -2932;1;0;false;false;;;;;;
                                  -2933;8;0;false;false;63;95;191;;;
                                  -2941;1;0;false;false;;;;;;
                                  -2942;2;0;false;false;63;95;191;;;
                                  -2944;1;0;false;false;;;;;;
                                  -2945;2;0;false;false;63;95;191;;;
                                  -2947;1;0;false;false;;;;;;
                                  -2948;11;0;false;false;63;95;191;;;
                                  -2959;3;0;false;false;;;;;;
                                  -2962;1;0;false;false;63;95;191;;;
                                  -2963;1;0;false;false;;;;;;
                                  -2964;4;0;false;false;127;127;159;;;
                                  -2968;3;0;false;false;;;;;;
                                  -2971;1;0;false;false;63;95;191;;;
                                  -2972;1;0;false;false;;;;;;
                                  -2973;4;0;false;false;127;127;159;;;
                                  -2977;3;0;false;false;;;;;;
                                  -2980;1;0;false;false;63;95;191;;;
                                  -2981;1;0;false;false;;;;;;
                                  -2982;7;0;false;false;127;127;159;;;
                                  -2989;7;0;false;false;63;95;191;;;
                                  -2996;8;0;false;false;127;127;159;;;
                                  -3004;15;0;false;false;63;95;191;;;
                                  -3019;1;0;false;false;;;;;;
                                  -3020;6;0;false;false;63;95;191;;;
                                  -3026;1;0;false;false;;;;;;
                                  -3027;10;0;false;false;63;95;191;;;
                                  -3037;1;0;false;false;;;;;;
                                  -3038;7;0;false;false;63;95;191;;;
                                  -3045;1;0;false;false;;;;;;
                                  -3046;4;0;false;false;63;95;191;;;
                                  -3050;3;0;false;false;;;;;;
                                  -3053;1;0;false;false;63;95;191;;;
                                  -3054;1;0;false;false;;;;;;
                                  -3055;7;0;false;false;127;127;159;;;
                                  -3062;7;0;false;false;63;95;191;;;
                                  -3069;8;0;false;false;127;127;159;;;
                                  -3077;15;0;false;false;63;95;191;;;
                                  -3092;1;0;false;false;;;;;;
                                  -3093;18;0;false;false;63;95;191;;;
                                  -3111;1;0;false;false;;;;;;
                                  -3112;16;0;false;false;63;95;191;;;
                                  -3128;1;0;false;false;;;;;;
                                  -3129;13;0;false;false;63;95;191;;;
                                  -3142;1;0;false;false;;;;;;
                                  -3143;7;0;false;false;63;95;191;;;
                                  -3150;1;0;false;false;;;;;;
                                  -3151;10;0;false;false;63;95;191;;;
                                  -3161;1;0;false;false;;;;;;
                                  -3162;7;0;false;false;63;95;191;;;
                                  -3169;1;0;false;false;;;;;;
                                  -3170;9;0;false;false;63;95;191;;;
                                  -3179;3;0;false;false;;;;;;
                                  -3182;1;0;false;false;63;95;191;;;
                                  -3183;1;0;false;false;;;;;;
                                  -3184;5;0;false;false;127;127;159;;;
                                  -3189;3;0;false;false;;;;;;
                                  -3192;2;0;false;false;63;95;191;;;
                                  -3194;2;0;false;false;;;;;;
                                  -3196;6;1;false;false;127;0;85;;;
                                  -3202;1;0;false;false;;;;;;
                                  -3203;5;1;false;false;127;0;85;;;
                                  -3208;1;0;false;false;;;;;;
                                  -3209;10;0;false;false;0;0;0;;;
                                  -3219;1;0;false;false;;;;;;
                                  -3220;7;1;false;false;127;0;85;;;
                                  -3227;1;0;false;false;;;;;;
                                  -3228;6;0;false;false;0;0;0;;;
                                  -3234;1;0;false;false;;;;;;
                                  -3235;1;0;false;false;0;0;0;;;
                                  -3236;3;0;false;false;;;;;;
                                  -3239;6;1;false;false;127;0;85;;;
                                  -3245;1;0;false;false;;;;;;
                                  -3246;5;1;false;false;127;0;85;;;
                                  -3251;1;0;false;false;;;;;;
                                  -3252;4;1;false;false;127;0;85;;;
                                  -3256;1;0;false;false;;;;;;
                                  -3257;3;0;false;false;0;0;0;;;
                                  -3260;1;0;false;false;;;;;;
                                  -3261;1;0;false;false;0;0;0;;;
                                  -3262;1;0;false;false;;;;;;
                                  -3263;4;0;false;false;42;0;255;;;
                                  -3267;1;0;false;false;0;0;0;;;
                                  -3268;3;0;false;false;;;;;;
                                  -3271;6;1;false;false;127;0;85;;;
                                  -3277;1;0;false;false;;;;;;
                                  -3278;5;1;false;false;127;0;85;;;
                                  -3283;1;0;false;false;;;;;;
                                  -3284;6;0;false;false;0;0;0;;;
                                  -3290;1;0;false;false;;;;;;
                                  -3291;21;0;false;false;0;0;0;;;
                                  -3312;1;0;false;false;;;;;;
                                  -3313;1;0;false;false;0;0;0;;;
                                  -3314;1;0;false;false;;;;;;
                                  -3315;19;0;false;false;0;0;0;;;
                                  -3334;16;0;false;false;42;0;255;;;
                                  -3350;2;0;false;false;0;0;0;;;
                                  -3352;3;0;false;false;;;;;;
                                  -3355;6;1;false;false;127;0;85;;;
                                  -3361;1;0;false;false;;;;;;
                                  -3362;5;1;false;false;127;0;85;;;
                                  -3367;1;0;false;false;;;;;;
                                  -3368;3;1;false;false;127;0;85;;;
                                  -3371;1;0;false;false;;;;;;
                                  -3372;16;0;false;false;0;0;0;;;
                                  -3388;1;0;false;false;;;;;;
                                  -3389;1;0;false;false;0;0;0;;;
                                  -3390;1;0;false;false;;;;;;
                                  -3391;2;0;false;false;0;0;0;;;
                                  -3393;3;0;false;false;;;;;;
                                  -3396;6;1;false;false;127;0;85;;;
                                  -3402;1;0;false;false;;;;;;
                                  -3403;5;1;false;false;127;0;85;;;
                                  -3408;1;0;false;false;;;;;;
                                  -3409;3;1;false;false;127;0;85;;;
                                  -3412;1;0;false;false;;;;;;
                                  -3413;13;0;false;false;0;0;0;;;
                                  -3426;1;0;false;false;;;;;;
                                  -3427;1;0;false;false;0;0;0;;;
                                  -3428;1;0;false;false;;;;;;
                                  -3429;3;0;false;false;0;0;0;;;
                                  -3432;3;0;false;false;;;;;;
                                  -3435;6;1;false;false;127;0;85;;;
                                  -3441;1;0;false;false;;;;;;
                                  -3442;5;1;false;false;127;0;85;;;
                                  -3447;1;0;false;false;;;;;;
                                  -3448;3;1;false;false;127;0;85;;;
                                  -3451;1;0;false;false;;;;;;
                                  -3452;14;0;false;false;0;0;0;;;
                                  -3466;1;0;false;false;;;;;;
                                  -3467;1;0;false;false;0;0;0;;;
                                  -3468;1;0;false;false;;;;;;
                                  -3469;3;0;false;false;0;0;0;;;
                                  -3472;3;0;false;false;;;;;;
                                  -3475;6;1;false;false;127;0;85;;;
                                  -3481;1;0;false;false;;;;;;
                                  -3482;5;1;false;false;127;0;85;;;
                                  -3487;1;0;false;false;;;;;;
                                  -3488;3;1;false;false;127;0;85;;;
                                  -3491;1;0;false;false;;;;;;
                                  -3492;13;0;false;false;0;0;0;;;
                                  -3505;1;0;false;false;;;;;;
                                  -3506;1;0;false;false;0;0;0;;;
                                  -3507;1;0;false;false;;;;;;
                                  -3508;3;0;false;false;0;0;0;;;
                                  -3511;3;0;false;false;;;;;;
                                  -3514;6;1;false;false;127;0;85;;;
                                  -3520;1;0;false;false;;;;;;
                                  -3521;5;1;false;false;127;0;85;;;
                                  -3526;1;0;false;false;;;;;;
                                  -3527;3;1;false;false;127;0;85;;;
                                  -3530;1;0;false;false;;;;;;
                                  -3531;13;0;false;false;0;0;0;;;
                                  -3544;1;0;false;false;;;;;;
                                  -3545;1;0;false;false;0;0;0;;;
                                  -3546;1;0;false;false;;;;;;
                                  -3547;3;0;false;false;0;0;0;;;
                                  -3550;6;0;false;false;;;;;;
                                  -3556;6;1;false;false;127;0;85;;;
                                  -3562;1;0;false;false;;;;;;
                                  -3563;5;1;false;false;127;0;85;;;
                                  -3568;1;0;false;false;;;;;;
                                  -3569;3;1;false;false;127;0;85;;;
                                  -3572;1;0;false;false;;;;;;
                                  -3573;14;0;false;false;0;0;0;;;
                                  -3587;1;0;false;false;;;;;;
                                  -3588;1;0;false;false;0;0;0;;;
                                  -3589;1;0;false;false;;;;;;
                                  -3590;5;0;false;false;0;0;0;;;
                                  -3595;3;0;false;false;;;;;;
                                  -3598;6;1;false;false;127;0;85;;;
                                  -3604;1;0;false;false;;;;;;
                                  -3605;5;1;false;false;127;0;85;;;
                                  -3610;1;0;false;false;;;;;;
                                  -3611;3;1;false;false;127;0;85;;;
                                  -3614;1;0;false;false;;;;;;
                                  -3615;17;0;false;false;0;0;0;;;
                                  -3632;1;0;false;false;;;;;;
                                  -3633;1;0;false;false;0;0;0;;;
                                  -3634;1;0;false;false;;;;;;
                                  -3635;5;0;false;false;0;0;0;;;
                                  -3640;3;0;false;false;;;;;;
                                  -3643;6;1;false;false;127;0;85;;;
                                  -3649;1;0;false;false;;;;;;
                                  -3650;5;1;false;false;127;0;85;;;
                                  -3655;1;0;false;false;;;;;;
                                  -3656;3;1;false;false;127;0;85;;;
                                  -3659;1;0;false;false;;;;;;
                                  -3660;12;0;false;false;0;0;0;;;
                                  -3672;1;0;false;false;;;;;;
                                  -3673;1;0;false;false;0;0;0;;;
                                  -3674;1;0;false;false;;;;;;
                                  -3675;5;0;false;false;0;0;0;;;
                                  -3680;3;0;false;false;;;;;;
                                  -3683;6;1;false;false;127;0;85;;;
                                  -3689;1;0;false;false;;;;;;
                                  -3690;5;1;false;false;127;0;85;;;
                                  -3695;1;0;false;false;;;;;;
                                  -3696;3;1;false;false;127;0;85;;;
                                  -3699;1;0;false;false;;;;;;
                                  -3700;12;0;false;false;0;0;0;;;
                                  -3712;1;0;false;false;;;;;;
                                  -3713;1;0;false;false;0;0;0;;;
                                  -3714;1;0;false;false;;;;;;
                                  -3715;5;0;false;false;0;0;0;;;
                                  -3720;3;0;false;false;;;;;;
                                  -3723;6;1;false;false;127;0;85;;;
                                  -3729;1;0;false;false;;;;;;
                                  -3730;5;1;false;false;127;0;85;;;
                                  -3735;1;0;false;false;;;;;;
                                  -3736;3;1;false;false;127;0;85;;;
                                  -3739;1;0;false;false;;;;;;
                                  -3740;7;0;false;false;0;0;0;;;
                                  -3747;1;0;false;false;;;;;;
                                  -3748;1;0;false;false;0;0;0;;;
                                  -3749;1;0;false;false;;;;;;
                                  -3750;5;0;false;false;0;0;0;;;
                                  -3755;3;0;false;false;;;;;;
                                  -3758;6;1;false;false;127;0;85;;;
                                  -3764;1;0;false;false;;;;;;
                                  -3765;5;1;false;false;127;0;85;;;
                                  -3770;1;0;false;false;;;;;;
                                  -3771;3;1;false;false;127;0;85;;;
                                  -3774;1;0;false;false;;;;;;
                                  -3775;9;0;false;false;0;0;0;;;
                                  -3784;1;0;false;false;;;;;;
                                  -3785;1;0;false;false;0;0;0;;;
                                  -3786;1;0;false;false;;;;;;
                                  -3787;5;0;false;false;0;0;0;;;
                                  -3792;3;0;false;false;;;;;;
                                  -3795;6;1;false;false;127;0;85;;;
                                  -3801;1;0;false;false;;;;;;
                                  -3802;5;1;false;false;127;0;85;;;
                                  -3807;1;0;false;false;;;;;;
                                  -3808;3;1;false;false;127;0;85;;;
                                  -3811;1;0;false;false;;;;;;
                                  -3812;11;0;false;false;0;0;0;;;
                                  -3823;1;0;false;false;;;;;;
                                  -3824;1;0;false;false;0;0;0;;;
                                  -3825;1;0;false;false;;;;;;
                                  -3826;5;0;false;false;0;0;0;;;
                                  -3831;3;0;false;false;;;;;;
                                  -3834;6;1;false;false;127;0;85;;;
                                  -3840;1;0;false;false;;;;;;
                                  -3841;5;1;false;false;127;0;85;;;
                                  -3846;1;0;false;false;;;;;;
                                  -3847;3;1;false;false;127;0;85;;;
                                  -3850;1;0;false;false;;;;;;
                                  -3851;15;0;false;false;0;0;0;;;
                                  -3866;1;0;false;false;;;;;;
                                  -3867;1;0;false;false;0;0;0;;;
                                  -3868;1;0;false;false;;;;;;
                                  -3869;5;0;false;false;0;0;0;;;
                                  -3874;6;0;false;false;;;;;;
                                  -3880;5;0;false;false;0;0;0;;;
                                  -3885;1;0;false;false;;;;;;
                                  -3886;20;0;false;false;0;0;0;;;
                                  -3906;1;0;false;false;;;;;;
                                  -3907;31;0;false;false;63;127;95;;;
                                  -3938;1;0;false;false;;;;;;
                                  -3939;5;0;false;false;0;0;0;;;
                                  -3944;1;0;false;false;;;;;;
                                  -3945;20;0;false;false;0;0;0;;;
                                  -3965;1;0;false;false;;;;;;
                                  -3966;31;0;false;false;63;127;95;;;
                                  -3997;1;0;false;false;;;;;;
                                  -3998;17;0;false;false;0;0;0;;;
                                  -4015;1;0;false;false;;;;;;
                                  -4016;15;0;false;false;0;0;0;;;
                                  -4031;1;0;false;false;;;;;;
                                  -4032;47;0;false;false;63;127;95;;;
                                  -4079;1;0;false;false;;;;;;
                                  -4080;17;0;false;false;0;0;0;;;
                                  -4097;1;0;false;false;;;;;;
                                  -4098;8;0;false;false;0;0;0;;;
                                  -4106;3;0;false;false;;;;;;
                                  -4109;70;0;false;false;63;127;95;;;
                                  -4179;1;0;false;false;;;;;;
                                  -4180;15;0;false;false;0;0;0;;;
                                  -4195;1;0;false;false;;;;;;
                                  -4196;9;0;false;false;0;0;0;;;
                                  -4205;3;0;false;false;;;;;;
                                  -4208;8;0;false;false;0;0;0;;;
                                  -4216;1;0;false;false;;;;;;
                                  -4217;9;0;false;false;0;0;0;;;
                                  -4226;3;0;false;false;;;;;;
                                  -4229;18;0;false;false;0;0;0;;;
                                  -4247;1;0;false;false;;;;;;
                                  -4248;19;0;false;false;0;0;0;;;
                                  -4267;1;0;false;false;;;;;;
                                  -4268;85;0;false;false;63;127;95;;;
                                  -4353;1;0;false;false;;;;;;
                                  -4354;17;0;false;false;0;0;0;;;
                                  -4371;1;0;false;false;;;;;;
                                  -4372;18;0;false;false;0;0;0;;;
                                  -4390;67;0;false;false;63;127;95;;;
                                  -4457;1;0;false;false;;;;;;
                                  -4458;9;0;false;false;0;0;0;;;
                                  -4467;1;0;false;false;;;;;;
                                  -4468;10;0;false;false;0;0;0;;;
                                  -4478;3;0;false;false;;;;;;
                                  -4481;7;1;false;false;127;0;85;;;
                                  -4488;1;0;false;false;;;;;;
                                  -4489;13;0;false;false;0;0;0;;;
                                  -4502;1;0;false;false;;;;;;
                                  -4503;1;0;false;false;0;0;0;;;
                                  -4504;1;0;false;false;;;;;;
                                  -4505;5;1;false;false;127;0;85;;;
                                  -4510;1;0;false;false;0;0;0;;;
                                  -4511;2;0;false;false;;;;;;
                                  -4513;144;0;false;false;63;127;95;;;
                                  -4657;1;0;false;false;;;;;;
                                  -4658;7;1;false;false;127;0;85;;;
                                  -4665;1;0;false;false;;;;;;
                                  -4666;18;0;false;false;0;0;0;;;
                                  -4684;1;0;false;false;;;;;;
                                  -4685;1;0;false;false;0;0;0;;;
                                  -4686;1;0;false;false;;;;;;
                                  -4687;5;1;false;false;127;0;85;;;
                                  -4692;1;0;false;false;0;0;0;;;
                                  -4693;1;0;false;false;;;;;;
                                  -4694;159;0;false;false;63;127;95;;;
                                  -4853;1;0;false;false;;;;;;
                                  -4854;3;1;false;false;127;0;85;;;
                                  -4857;1;0;false;false;;;;;;
                                  -4858;20;0;false;false;0;0;0;;;
                                  -4878;1;0;false;false;;;;;;
                                  -4879;1;0;false;false;0;0;0;;;
                                  -4880;1;0;false;false;;;;;;
                                  -4881;2;0;false;false;0;0;0;;;
                                  -4883;2;0;false;false;;;;;;
                                  -4885;16;0;false;false;63;127;95;;;
                                  -4901;1;0;false;false;;;;;;
                                  -4902;3;1;false;false;127;0;85;;;
                                  -4905;1;0;false;false;;;;;;
                                  -4906;22;0;false;false;0;0;0;;;
                                  -4928;1;0;false;false;;;;;;
                                  -4929;1;0;false;false;0;0;0;;;
                                  -4930;1;0;false;false;;;;;;
                                  -4931;2;0;false;false;0;0;0;;;
                                  -4933;2;0;false;false;;;;;;
                                  -4935;16;0;false;false;63;127;95;;;
                                  -4951;1;0;false;false;;;;;;
                                  -4952;3;1;false;false;127;0;85;;;
                                  -4955;1;0;false;false;;;;;;
                                  -4956;8;0;false;false;0;0;0;;;
                                  -4964;1;0;false;false;;;;;;
                                  -4965;1;0;false;false;0;0;0;;;
                                  -4966;1;0;false;false;;;;;;
                                  -4967;2;0;false;false;0;0;0;;;
                                  -4969;5;0;false;false;;;;;;
                                  -4974;21;0;false;false;63;127;95;;;
                                  -4995;1;0;false;false;;;;;;
                                  -4996;3;1;false;false;127;0;85;;;
                                  -4999;1;0;false;false;;;;;;
                                  -5000;17;0;false;false;0;0;0;;;
                                  -5017;1;0;false;false;;;;;;
                                  -5018;1;0;false;false;0;0;0;;;
                                  -5019;1;0;false;false;;;;;;
                                  -5020;3;0;false;false;0;0;0;;;
                                  -5023;3;0;false;false;;;;;;
                                  -5026;3;1;false;false;127;0;85;;;
                                  -5029;1;0;false;false;;;;;;
                                  -5030;9;0;false;false;0;0;0;;;
                                  -5039;1;0;false;false;;;;;;
                                  -5040;1;0;false;false;0;0;0;;;
                                  -5041;1;0;false;false;;;;;;
                                  -5042;2;0;false;false;0;0;0;;;
                                  -5044;5;0;false;false;;;;;;
                                  -5049;42;0;false;false;63;127;95;;;
                                  -5091;1;0;false;false;;;;;;
                                  -5092;3;1;false;false;127;0;85;;;
                                  -5095;1;0;false;false;;;;;;
                                  -5096;16;0;false;false;0;0;0;;;
                                  -5112;1;0;false;false;;;;;;
                                  -5113;1;0;false;false;0;0;0;;;
                                  -5114;1;0;false;false;;;;;;
                                  -5115;2;0;false;false;0;0;0;;;
                                  -5117;3;0;false;false;;;;;;
                                  -5120;71;0;false;false;63;127;95;;;
                                  -5191;10;0;false;false;;;;;;
                                  -5201;41;0;false;false;63;127;95;;;
                                  -5242;1;0;false;false;;;;;;
                                  -5243;3;1;false;false;127;0;85;;;
                                  -5246;1;0;false;false;;;;;;
                                  -5247;15;0;false;false;0;0;0;;;
                                  -5262;1;0;false;false;;;;;;
                                  -5263;1;0;false;false;0;0;0;;;
                                  -5264;1;0;false;false;;;;;;
                                  -5265;2;0;false;false;0;0;0;;;
                                  -5267;3;0;false;false;;;;;;
                                  -5270;71;0;false;false;63;127;95;;;
                                  -5341;10;0;false;false;;;;;;
                                  -5351;42;0;false;false;63;127;95;;;
                                  -5393;1;0;false;false;;;;;;
                                  -5394;3;1;false;false;127;0;85;;;
                                  -5397;1;0;false;false;;;;;;
                                  -5398;11;0;false;false;0;0;0;;;
                                  -5409;6;0;false;false;;;;;;
                                  -5415;28;0;false;false;63;127;95;;;
                                  -5443;1;0;false;false;;;;;;
                                  -5444;3;1;false;false;127;0;85;;;
                                  -5447;1;0;false;false;;;;;;
                                  -5448;9;0;false;false;0;0;0;;;
                                  -5457;1;0;false;false;;;;;;
                                  -5458;1;0;false;false;0;0;0;;;
                                  -5459;1;0;false;false;;;;;;
                                  -5460;2;0;false;false;0;0;0;;;
                                  -5462;5;0;false;false;;;;;;
                                  -5467;34;0;false;false;63;127;95;;;
                                  -5501;1;0;false;false;;;;;;
                                  -5502;3;1;false;false;127;0;85;;;
                                  -5505;1;0;false;false;;;;;;
                                  -5506;11;0;false;false;0;0;0;;;
                                  -5517;3;0;false;false;;;;;;
                                  -5520;3;1;false;false;127;0;85;;;
                                  -5523;1;0;false;false;;;;;;
                                  -5524;10;0;false;false;0;0;0;;;
                                  -5534;3;0;false;false;;;;;;
                                  -5537;3;1;false;false;127;0;85;;;
                                  -5540;1;0;false;false;;;;;;
                                  -5541;12;0;false;false;0;0;0;;;
                                  -5553;3;0;false;false;;;;;;
                                  -5556;3;1;false;false;127;0;85;;;
                                  -5559;1;0;false;false;;;;;;
                                  -5560;13;0;false;false;0;0;0;;;
                                  -5573;3;0;false;false;;;;;;
                                  -5576;6;0;false;false;0;0;0;;;
                                  -5582;1;0;false;false;;;;;;
                                  -5583;12;0;false;false;0;0;0;;;
                                  -5595;5;0;false;false;;;;;;
                                  -5600;3;1;false;false;127;0;85;;;
                                  -5603;1;0;false;false;;;;;;
                                  -5604;8;0;false;false;0;0;0;;;
                                  -5612;7;0;false;false;;;;;;
                                  -5619;48;0;false;false;63;127;95;;;
                                  -5667;10;0;false;false;;;;;;
                                  -5677;46;0;false;false;63;127;95;;;
                                  -5723;1;0;false;false;;;;;;
                                  -5724;3;1;false;false;127;0;85;;;
                                  -5727;1;0;false;false;;;;;;
                                  -5728;11;0;false;false;0;0;0;;;
                                  -5739;1;0;false;false;;;;;;
                                  -5740;1;0;false;false;0;0;0;;;
                                  -5741;1;0;false;false;;;;;;
                                  -5742;2;0;false;false;0;0;0;;;
                                  -5744;3;0;false;false;;;;;;
                                  -5747;5;0;false;false;0;0;0;;;
                                  -5752;1;0;false;false;;;;;;
                                  -5753;9;0;false;false;0;0;0;;;
                                  -5762;1;0;false;false;;;;;;
                                  -5763;1;0;false;false;0;0;0;;;
                                  -5764;1;0;false;false;;;;;;
                                  -5765;3;1;false;false;127;0;85;;;
                                  -5768;1;0;false;false;;;;;;
                                  -5769;8;0;false;false;0;0;0;;;
                                  -5777;1;0;false;false;;;;;;
                                  -5778;3;0;false;false;0;0;0;;;
                                  -5781;1;0;false;false;;;;;;
                                  -5782;57;0;false;false;63;127;95;;;
                                  -5839;1;0;false;false;;;;;;
                                  -5840;5;0;false;false;0;0;0;;;
                                  -5845;1;0;false;false;;;;;;
                                  -5846;19;0;false;false;0;0;0;;;
                                  -5865;11;0;false;false;;;;;;
                                  -5876;66;0;false;false;63;127;95;;;
                                  -5942;1;0;false;false;;;;;;
                                  -5943;3;1;false;false;127;0;85;;;
                                  -5946;1;0;false;false;;;;;;
                                  -5947;16;0;false;false;0;0;0;;;
                                  -5963;4;0;false;false;;;;;;
                                  -5967;72;0;false;false;63;127;95;;;
                                  -6039;1;0;false;false;;;;;;
                                  -6040;5;0;false;false;0;0;0;;;
                                  -6045;1;0;false;false;;;;;;
                                  -6046;21;0;false;false;0;0;0;;;
                                  -6067;3;0;false;false;;;;;;
                                  -6070;44;0;false;false;63;127;95;;;
                                  -6114;1;0;false;false;;;;;;
                                  -6115;7;1;false;false;127;0;85;;;
                                  -6122;1;0;false;false;;;;;;
                                  -6123;8;0;false;false;0;0;0;;;
                                  -6131;1;0;false;false;;;;;;
                                  -6132;1;0;false;false;0;0;0;;;
                                  -6133;1;0;false;false;;;;;;
                                  -6134;4;1;false;false;127;0;85;;;
                                  -6138;1;0;false;false;0;0;0;;;
                                  -6139;3;0;false;false;;;;;;
                                  -6142;7;1;false;false;127;0;85;;;
                                  -6149;1;0;false;false;;;;;;
                                  -6150;8;0;false;false;0;0;0;;;
                                  -6158;1;0;false;false;;;;;;
                                  -6159;1;0;false;false;0;0;0;;;
                                  -6160;1;0;false;false;;;;;;
                                  -6161;5;1;false;false;127;0;85;;;
                                  -6166;1;0;false;false;0;0;0;;;
                                  -6167;3;0;false;false;;;;;;
                                  -6170;7;1;false;false;127;0;85;;;
                                  -6177;1;0;false;false;;;;;;
                                  -6178;18;0;false;false;0;0;0;;;
                                  -6196;1;0;false;false;;;;;;
                                  -6197;1;0;false;false;0;0;0;;;
                                  -6198;1;0;false;false;;;;;;
                                  -6199;4;1;false;false;127;0;85;;;
                                  -6203;1;0;false;false;0;0;0;;;
                                  -6204;1;0;false;false;;;;;;
                                  -6205;31;0;false;false;63;127;95;;;
                                  -6236;1;0;false;false;;;;;;
                                  -6237;7;1;false;false;127;0;85;;;
                                  -6244;1;0;false;false;;;;;;
                                  -6245;9;0;false;false;0;0;0;;;
                                  -6254;1;0;false;false;;;;;;
                                  -6255;1;0;false;false;0;0;0;;;
                                  -6256;1;0;false;false;;;;;;
                                  -6257;5;1;false;false;127;0;85;;;
                                  -6262;1;0;false;false;0;0;0;;;
                                  -6263;3;0;false;false;;;;;;
                                  -6266;31;0;false;false;63;127;95;;;
                                  -6297;1;0;false;false;;;;;;
                                  -6298;3;1;false;false;127;0;85;;;
                                  -6301;1;0;false;false;;;;;;
                                  -6302;9;0;false;false;0;0;0;;;
                                  -6311;1;0;false;false;;;;;;
                                  -6312;1;0;false;false;0;0;0;;;
                                  -6313;1;0;false;false;;;;;;
                                  -6314;3;0;false;false;0;0;0;;;
                                  -6317;5;0;false;false;;;;;;
                                  -6322;91;0;false;false;63;127;95;;;
                                  -6413;1;0;false;false;;;;;;
                                  -6414;9;0;false;false;0;0;0;;;
                                  -6423;1;0;false;false;;;;;;
                                  -6424;12;0;false;false;0;0;0;;;
                                  -6436;1;0;false;false;;;;;;
                                  -6437;1;0;false;false;0;0;0;;;
                                  -6438;1;0;false;false;;;;;;
                                  -6439;3;1;false;false;127;0;85;;;
                                  -6442;1;0;false;false;;;;;;
                                  -6443;12;0;false;false;0;0;0;;;
                                  -6455;3;0;false;false;;;;;;
                                  -6458;5;0;false;false;0;0;0;;;
                                  -6463;1;0;false;false;;;;;;
                                  -6464;10;0;false;false;0;0;0;;;
                                  -6474;1;0;false;false;;;;;;
                                  -6475;1;0;false;false;0;0;0;;;
                                  -6476;1;0;false;false;;;;;;
                                  -6477;4;1;false;false;127;0;85;;;
                                  -6481;1;0;false;false;0;0;0;;;
                                  -6482;3;0;false;false;;;;;;
                                  -6485;28;0;false;false;63;127;95;;;
                                  -6513;1;0;false;false;;;;;;
                                  -6514;5;0;false;false;0;0;0;;;
                                  -6519;1;0;false;false;;;;;;
                                  -6520;10;0;false;false;0;0;0;;;
                                  -6530;1;0;false;false;;;;;;
                                  -6531;1;0;false;false;0;0;0;;;
                                  -6532;1;0;false;false;;;;;;
                                  -6533;4;1;false;false;127;0;85;;;
                                  -6537;1;0;false;false;0;0;0;;;
                                  -6538;3;0;false;false;;;;;;
                                  -6541;4;0;false;false;63;127;95;;;
                                  -6545;1;0;false;false;;;;;;
                                  -6546;9;0;false;false;0;0;0;;;
                                  -6555;1;0;false;false;;;;;;
                                  -6556;10;0;false;false;0;0;0;;;
                                  -6566;3;0;false;false;;;;;;
                                  -6569;7;1;false;false;127;0;85;;;
                                  -6576;1;0;false;false;;;;;;
                                  -6577;9;0;false;false;0;0;0;;;
                                  -6586;1;0;false;false;;;;;;
                                  -6587;1;0;false;false;0;0;0;;;
                                  -6588;1;0;false;false;;;;;;
                                  -6589;5;1;false;false;127;0;85;;;
                                  -6594;1;0;false;false;0;0;0;;;
                                  -6595;3;0;false;false;;;;;;
                                  -6598;7;1;false;false;127;0;85;;;
                                  -6605;1;0;false;false;;;;;;
                                  -6606;16;0;false;false;0;0;0;;;
                                  -6622;1;0;false;false;;;;;;
                                  -6623;1;0;false;false;0;0;0;;;
                                  -6624;1;0;false;false;;;;;;
                                  -6625;5;1;false;false;127;0;85;;;
                                  -6630;1;0;false;false;0;0;0;;;
                                  -6631;1;0;false;false;;;;;;
                                  -6632;65;0;false;false;63;127;95;;;
                                  -6697;1;0;false;false;;;;;;
                                  -6698;3;1;false;false;127;0;85;;;
                                  -6701;1;0;false;false;;;;;;
                                  -6702;19;0;false;false;0;0;0;;;
                                  -6721;1;0;false;false;;;;;;
                                  -6722;1;0;false;false;0;0;0;;;
                                  -6723;1;0;false;false;;;;;;
                                  -6724;9;0;false;false;0;0;0;;;
                                  -6733;1;0;false;false;;;;;;
                                  -6734;59;0;false;false;63;127;95;;;
                                  -6793;1;0;false;false;;;;;;
                                  -6794;3;1;false;false;127;0;85;;;
                                  -6797;1;0;false;false;;;;;;
                                  -6798;18;0;false;false;0;0;0;;;
                                  -6816;1;0;false;false;;;;;;
                                  -6817;1;0;false;false;0;0;0;;;
                                  -6818;1;0;false;false;;;;;;
                                  -6819;2;0;false;false;0;0;0;;;
                                  -6821;3;0;false;false;;;;;;
                                  -6824;3;1;false;false;127;0;85;;;
                                  -6827;1;0;false;false;;;;;;
                                  -6828;20;0;false;false;0;0;0;;;
                                  -6848;3;0;false;false;;;;;;
                                  -6851;23;0;false;false;63;127;95;;;
                                  -6874;1;0;false;false;;;;;;
                                  -6875;3;1;false;false;127;0;85;;;
                                  -6878;1;0;false;false;;;;;;
                                  -6879;27;0;false;false;0;0;0;;;
                                  -6906;2;0;false;false;;;;;;
                                  -6908;24;0;false;false;63;127;95;;;
                                  -6932;1;0;false;false;;;;;;
                                  -6933;3;1;false;false;127;0;85;;;
                                  -6936;1;0;false;false;;;;;;
                                  -6937;27;0;false;false;0;0;0;;;
                                  -6964;2;0;false;false;;;;;;
                                  -6966;26;0;false;false;63;127;95;;;
                                  -6992;1;0;false;false;;;;;;
                                  -6993;3;1;false;false;127;0;85;;;
                                  -6996;1;0;false;false;;;;;;
                                  -6997;31;0;false;false;0;0;0;;;
                                  -7028;1;0;false;false;;;;;;
                                  -7029;25;0;false;false;63;127;95;;;
                                  -7054;1;0;false;false;;;;;;
                                  -7055;3;1;false;false;127;0;85;;;
                                  -7058;1;0;false;false;;;;;;
                                  -7059;31;0;false;false;0;0;0;;;
                                  -7090;4;0;false;false;;;;;;
                                  -7094;7;1;false;false;127;0;85;;;
                                  -7101;1;0;false;false;;;;;;
                                  -7102;11;0;false;false;0;0;0;;;
                                  -7113;3;0;false;false;;;;;;
                                  -7116;7;1;false;false;127;0;85;;;
                                  -7123;1;0;false;false;;;;;;
                                  -7124;12;0;false;false;0;0;0;;;
                                  -7136;1;0;false;false;;;;;;
                                  -7137;1;0;false;false;0;0;0;;;
                                  -7138;1;0;false;false;;;;;;
                                  -7139;5;1;false;false;127;0;85;;;
                                  -7144;1;0;false;false;0;0;0;;;
                                  -7145;2;0;false;false;;;;;;
                                  -7147;64;0;false;false;63;127;95;;;
                                  -7211;1;0;false;false;;;;;;
                                  -7212;5;0;false;false;0;0;0;;;
                                  -7217;1;0;false;false;;;;;;
                                  -7218;15;0;false;false;0;0;0;;;
                                  -7233;1;0;false;false;;;;;;
                                  -7234;1;0;false;false;0;0;0;;;
                                  -7235;1;0;false;false;;;;;;
                                  -7236;4;1;false;false;127;0;85;;;
                                  -7240;1;0;false;false;0;0;0;;;
                                  -7241;3;0;false;false;;;;;;
                                  -7244;5;0;false;false;0;0;0;;;
                                  -7249;1;0;false;false;;;;;;
                                  -7250;16;0;false;false;0;0;0;;;
                                  -7266;1;0;false;false;;;;;;
                                  -7267;1;0;false;false;0;0;0;;;
                                  -7268;1;0;false;false;;;;;;
                                  -7269;4;1;false;false;127;0;85;;;
                                  -7273;1;0;false;false;0;0;0;;;
                                  -7274;3;0;false;false;;;;;;
                                  -7277;3;1;false;false;127;0;85;;;
                                  -7280;1;0;false;false;;;;;;
                                  -7281;14;0;false;false;0;0;0;;;
                                  -7295;1;0;false;false;;;;;;
                                  -7296;1;0;false;false;0;0;0;;;
                                  -7297;1;0;false;false;;;;;;
                                  -7298;9;0;false;false;0;0;0;;;
                                  -7307;3;0;false;false;;;;;;
                                  -7310;7;1;false;false;127;0;85;;;
                                  -7317;1;0;false;false;;;;;;
                                  -7318;9;0;false;false;0;0;0;;;
                                  -7327;1;0;false;false;;;;;;
                                  -7328;1;0;false;false;0;0;0;;;
                                  -7329;1;0;false;false;;;;;;
                                  -7330;4;1;false;false;127;0;85;;;
                                  -7334;1;0;false;false;0;0;0;;;
                                  -7335;3;0;false;false;;;;;;
                                  -7338;5;0;false;false;0;0;0;;;
                                  -7343;1;0;false;false;;;;;;
                                  -7344;12;0;false;false;0;0;0;;;
                                  -7356;1;0;false;false;;;;;;
                                  -7357;1;0;false;false;0;0;0;;;
                                  -7358;1;0;false;false;;;;;;
                                  -7359;4;1;false;false;127;0;85;;;
                                  -7363;1;0;false;false;0;0;0;;;
                                  -7364;3;0;false;false;;;;;;
                                  -7367;7;1;false;false;127;0;85;;;
                                  -7374;1;0;false;false;;;;;;
                                  -7375;20;0;false;false;0;0;0;;;
                                  -7395;1;0;false;false;;;;;;
                                  -7396;1;0;false;false;0;0;0;;;
                                  -7397;1;0;false;false;;;;;;
                                  -7398;4;1;false;false;127;0;85;;;
                                  -7402;1;0;false;false;0;0;0;;;
                                  -7403;5;0;false;false;;;;;;
                                  -7408;5;1;false;false;127;0;85;;;
                                  -7413;1;0;false;false;;;;;;
                                  -7414;6;1;false;false;127;0;85;;;
                                  -7420;1;0;false;false;;;;;;
                                  -7421;7;1;false;false;127;0;85;;;
                                  -7428;1;0;false;false;;;;;;
                                  -7429;10;0;false;false;0;0;0;;;
                                  -7439;1;0;false;false;;;;;;
                                  -7440;7;0;false;false;0;0;0;;;
                                  -7447;1;0;false;false;;;;;;
                                  -7448;9;0;false;false;0;0;0;;;
                                  -7457;3;0;false;false;;;;;;
                                  -7460;5;1;false;false;127;0;85;;;
                                  -7465;1;0;false;false;;;;;;
                                  -7466;6;1;false;false;127;0;85;;;
                                  -7472;1;0;false;false;;;;;;
                                  -7473;7;1;false;false;127;0;85;;;
                                  -7480;1;0;false;false;;;;;;
                                  -7481;14;0;false;false;0;0;0;;;
                                  -7495;3;0;false;false;;;;;;
                                  -7498;6;1;false;false;127;0;85;;;
                                  -7504;1;0;false;false;;;;;;
                                  -7505;1;0;false;false;0;0;0;;;
                                  -7506;4;0;false;false;;;;;;
                                  -7510;6;0;false;false;0;0;0;;;
                                  -7516;1;0;false;false;;;;;;
                                  -7517;8;0;false;false;0;0;0;;;
                                  -7525;1;0;false;false;;;;;;
                                  -7526;1;0;false;false;0;0;0;;;
                                  -7527;1;0;false;false;;;;;;
                                  -7528;18;0;false;false;0;0;0;;;
                                  -7546;4;0;false;false;;;;;;
                                  -7550;9;0;false;false;0;0;0;;;
                                  -7559;1;0;false;false;;;;;;
                                  -7560;1;0;false;false;0;0;0;;;
                                  -7561;1;0;false;false;;;;;;
                                  -7562;8;0;false;false;42;0;255;;;
                                  -7570;18;0;false;false;0;0;0;;;
                                  -7588;4;0;false;false;;;;;;
                                  -7592;6;0;false;false;0;0;0;;;
                                  -7598;1;0;false;false;;;;;;
                                  -7599;1;0;false;false;0;0;0;;;
                                  -7600;1;0;false;false;;;;;;
                                  -7601;5;0;false;false;42;0;255;;;
                                  -7606;18;0;false;false;0;0;0;;;
                                  -7624;4;0;false;false;;;;;;
                                  -7628;8;0;false;false;0;0;0;;;
                                  -7636;1;0;false;false;;;;;;
                                  -7637;1;0;false;false;0;0;0;;;
                                  -7638;1;0;false;false;;;;;;
                                  -7639;7;0;false;false;42;0;255;;;
                                  -7646;18;0;false;false;0;0;0;;;
                                  -7664;4;0;false;false;;;;;;
                                  -7668;13;0;false;false;0;0;0;;;
                                  -7681;1;0;false;false;;;;;;
                                  -7682;1;0;false;false;0;0;0;;;
                                  -7683;1;0;false;false;;;;;;
                                  -7684;11;0;false;false;0;0;0;;;
                                  -7695;3;0;false;false;;;;;;
                                  -7698;1;0;false;false;0;0;0;;;
                                  -7699;5;0;false;false;;;;;;
                                  -7704;3;0;false;false;63;95;191;;;
                                  -7707;4;0;false;false;;;;;;
                                  -7711;1;0;false;false;63;95;191;;;
                                  -7712;1;0;false;false;;;;;;
                                  -7713;3;0;false;false;63;95;191;;;
                                  -7716;1;0;false;false;;;;;;
                                  -7717;8;0;false;false;63;95;191;;;
                                  -7725;1;0;false;false;;;;;;
                                  -7726;5;0;false;false;63;95;191;;;
                                  -7731;1;0;false;false;;;;;;
                                  -7732;10;0;false;false;63;95;191;;;
                                  -7742;1;0;false;false;;;;;;
                                  -7743;8;0;false;false;63;95;191;;;
                                  -7751;1;0;false;false;;;;;;
                                  -7752;2;0;false;false;63;95;191;;;
                                  -7754;1;0;false;false;;;;;;
                                  -7755;1;0;false;false;63;95;191;;;
                                  -7756;1;0;false;false;;;;;;
                                  -7757;5;0;false;false;63;95;191;;;
                                  -7762;1;0;false;false;;;;;;
                                  -7763;2;0;false;false;63;95;191;;;
                                  -7765;1;0;false;false;;;;;;
                                  -7766;5;0;false;false;63;95;191;;;
                                  -7771;4;0;false;false;;;;;;
                                  -7775;1;0;false;false;63;95;191;;;
                                  -7776;1;0;false;false;;;;;;
                                  -7777;2;0;false;false;63;95;191;;;
                                  -7779;1;0;false;false;;;;;;
                                  -7780;8;0;false;false;63;95;191;;;
                                  -7788;1;0;false;false;;;;;;
                                  -7789;2;0;false;false;63;95;191;;;
                                  -7791;1;0;false;false;;;;;;
                                  -7792;7;0;false;false;127;127;159;;;
                                  -7799;8;0;false;false;63;95;191;;;
                                  -7807;1;0;false;false;;;;;;
                                  -7808;8;0;false;false;127;127;159;;;
                                  -7816;1;0;false;false;;;;;;
                                  -7817;2;0;false;false;63;95;191;;;
                                  -7819;1;0;false;false;;;;;;
                                  -7820;8;0;false;false;63;95;191;;;
                                  -7828;1;0;false;false;;;;;;
                                  -7829;2;0;false;false;63;95;191;;;
                                  -7831;1;0;false;false;;;;;;
                                  -7832;3;0;false;false;63;95;191;;;
                                  -7835;5;0;false;false;;;;;;
                                  -7840;1;0;false;false;63;95;191;;;
                                  -7841;1;0;false;false;;;;;;
                                  -7842;25;0;false;false;63;95;191;;;
                                  -7867;1;0;false;false;;;;;;
                                  -7868;4;0;false;false;63;95;191;;;
                                  -7872;1;0;false;false;;;;;;
                                  -7873;3;0;false;false;63;95;191;;;
                                  -7876;1;0;false;false;;;;;;
                                  -7877;5;0;false;false;63;95;191;;;
                                  -7882;1;0;false;false;;;;;;
                                  -7883;6;0;false;false;63;95;191;;;
                                  -7889;1;0;false;false;;;;;;
                                  -7890;3;0;false;false;63;95;191;;;
                                  -7893;1;0;false;false;;;;;;
                                  -7894;2;0;false;false;63;95;191;;;
                                  -7896;5;0;false;false;;;;;;
                                  -7901;1;0;false;false;63;95;191;;;
                                  -7902;1;0;false;false;;;;;;
                                  -7903;7;0;false;false;63;95;191;;;
                                  -7910;1;0;false;false;;;;;;
                                  -7911;4;0;false;false;63;95;191;;;
                                  -7915;1;0;false;false;;;;;;
                                  -7916;3;0;false;false;63;95;191;;;
                                  -7919;1;0;false;false;;;;;;
                                  -7920;7;0;false;false;63;95;191;;;
                                  -7927;4;0;false;false;;;;;;
                                  -7931;2;0;false;false;63;95;191;;;
                                  -7933;3;0;false;false;;;;;;
                                  -7936;6;1;false;false;127;0;85;;;
                                  -7942;1;0;false;false;;;;;;
                                  -7943;5;1;false;false;127;0;85;;;
                                  -7948;1;0;false;false;;;;;;
                                  -7949;8;0;false;false;0;0;0;;;
                                  -7957;1;0;false;false;;;;;;
                                  -7958;10;1;false;false;127;0;85;;;
                                  -7968;1;0;false;false;;;;;;
                                  -7969;8;0;false;false;0;0;0;;;
                                  -7977;1;0;false;false;;;;;;
                                  -7978;1;0;false;false;0;0;0;;;
                                  -7979;4;0;false;false;;;;;;
                                  -7983;5;1;false;false;127;0;85;;;
                                  -7988;1;0;false;false;;;;;;
                                  -7989;6;1;false;false;127;0;85;;;
                                  -7995;1;0;false;false;;;;;;
                                  -7996;3;1;false;false;127;0;85;;;
                                  -7999;1;0;false;false;;;;;;
                                  -8000;4;0;false;false;0;0;0;;;
                                  -8004;1;0;false;false;;;;;;
                                  -8005;1;0;false;false;0;0;0;;;
                                  -8006;1;0;false;false;;;;;;
                                  -8007;2;0;false;false;0;0;0;;;
                                  -8009;6;0;false;false;;;;;;
                                  -8015;39;0;false;false;63;127;95;;;
                                  -8054;2;0;false;false;;;;;;
                                  -8056;5;1;false;false;127;0;85;;;
                                  -8061;1;0;false;false;;;;;;
                                  -8062;6;1;false;false;127;0;85;;;
                                  -8068;1;0;false;false;;;;;;
                                  -8069;3;1;false;false;127;0;85;;;
                                  -8072;1;0;false;false;;;;;;
                                  -8073;6;0;false;false;0;0;0;;;
                                  -8079;1;0;false;false;;;;;;
                                  -8080;1;0;false;false;0;0;0;;;
                                  -8081;1;0;false;false;;;;;;
                                  -8082;2;0;false;false;0;0;0;;;
                                  -8084;5;0;false;false;;;;;;
                                  -8089;35;0;false;false;63;127;95;;;
                                  -8124;2;0;false;false;;;;;;
                                  -8126;5;1;false;false;127;0;85;;;
                                  -8131;1;0;false;false;;;;;;
                                  -8132;6;1;false;false;127;0;85;;;
                                  -8138;1;0;false;false;;;;;;
                                  -8139;3;1;false;false;127;0;85;;;
                                  -8142;1;0;false;false;;;;;;
                                  -8143;5;0;false;false;0;0;0;;;
                                  -8148;1;0;false;false;;;;;;
                                  -8149;1;0;false;false;0;0;0;;;
                                  -8150;1;0;false;false;;;;;;
                                  -8151;2;0;false;false;0;0;0;;;
                                  -8153;6;0;false;false;;;;;;
                                  -8159;40;0;false;false;63;127;95;;;
                                  -8199;4;0;false;false;;;;;;
                                  -8203;10;0;false;false;0;0;0;;;
                                  -8213;1;0;false;false;;;;;;
                                  -8214;7;0;false;false;0;0;0;;;
                                  -8221;4;0;false;false;;;;;;
                                  -8225;7;0;false;false;0;0;0;;;
                                  -8232;1;0;false;false;;;;;;
                                  -8233;8;0;false;false;0;0;0;;;
                                  -8241;4;0;false;false;;;;;;
                                  -8245;13;0;false;false;0;0;0;;;
                                  -8258;1;0;false;false;;;;;;
                                  -8259;9;0;false;false;0;0;0;;;
                                  -8268;4;0;false;false;;;;;;
                                  -8272;22;0;false;false;0;0;0;;;
                                  -8294;1;0;false;false;;;;;;
                                  -8295;13;0;false;false;0;0;0;;;
                                  -8308;4;0;false;false;;;;;;
                                  -8312;17;0;false;false;0;0;0;;;
                                  -8329;1;0;false;false;;;;;;
                                  -8330;15;0;false;false;0;0;0;;;
                                  -8345;4;0;false;false;;;;;;
                                  -8349;31;0;false;false;63;127;95;;;
                                  -8380;2;0;false;false;;;;;;
                                  -8382;9;0;false;false;0;0;0;;;
                                  -8391;1;0;false;false;;;;;;
                                  -8392;11;0;false;false;0;0;0;;;
                                  -8403;7;0;false;false;;;;;;
                                  -8410;28;0;false;false;63;127;95;;;
                                  -8438;2;0;false;false;;;;;;
                                  -8440;4;0;false;false;0;0;0;;;
                                  -8444;1;0;false;false;;;;;;
                                  -8445;12;0;false;false;0;0;0;;;
                                  -8457;4;0;false;false;;;;;;
                                  -8461;8;0;false;false;0;0;0;;;
                                  -8469;1;0;false;false;;;;;;
                                  -8470;16;0;false;false;0;0;0;;;
                                  -8486;4;0;false;false;;;;;;
                                  -8490;9;0;false;false;0;0;0;;;
                                  -8499;1;0;false;false;;;;;;
                                  -8500;14;0;false;false;0;0;0;;;
                                  -8514;6;0;false;false;;;;;;
                                  -8520;55;0;false;false;63;127;95;;;
                                  -8575;2;0;false;false;;;;;;
                                  -8577;9;0;false;false;0;0;0;;;
                                  -8586;1;0;false;false;;;;;;
                                  -8587;15;0;false;false;0;0;0;;;
                                  -8602;1;0;false;false;;;;;;
                                  -8603;1;0;false;false;0;0;0;;;
                                  -8604;1;0;false;false;;;;;;
                                  -8605;3;1;false;false;127;0;85;;;
                                  -8608;1;0;false;false;;;;;;
                                  -8609;12;0;false;false;0;0;0;;;
                                  -8621;1;0;false;false;;;;;;
                                  -8622;28;0;false;false;63;127;95;;;
                                  -8650;2;0;false;false;;;;;;
                                  -8652;9;0;false;false;0;0;0;;;
                                  -8661;1;0;false;false;;;;;;
                                  -8662;10;0;false;false;0;0;0;;;
                                  -8672;1;0;false;false;;;;;;
                                  -8673;1;0;false;false;0;0;0;;;
                                  -8674;1;0;false;false;;;;;;
                                  -8675;3;1;false;false;127;0;85;;;
                                  -8678;1;0;false;false;;;;;;
                                  -8679;12;0;false;false;0;0;0;;;
                                  -8691;3;0;false;false;;;;;;
                                  -8694;23;0;false;false;63;127;95;;;
                                  -8717;2;0;false;false;;;;;;
                                  -8719;9;0;false;false;0;0;0;;;
                                  -8728;1;0;false;false;;;;;;
                                  -8729;12;0;false;false;0;0;0;;;
                                  -8741;1;0;false;false;;;;;;
                                  -8742;1;0;false;false;0;0;0;;;
                                  -8743;1;0;false;false;;;;;;
                                  -8744;3;1;false;false;127;0;85;;;
                                  -8747;1;0;false;false;;;;;;
                                  -8748;12;0;false;false;0;0;0;;;
                                  -8760;2;0;false;false;;;;;;
                                  -8762;57;0;false;false;63;127;95;;;
                                  -8819;2;0;false;false;;;;;;
                                  -8821;2;0;false;false;0;0;0;;;
                                  -8823;1;0;false;false;;;;;;
                                  -8824;3;0;false;false;0;0;0;;;
                                  -8827;11;0;false;false;;;;;;
                                  -8838;15;0;false;false;63;127;95;;;
                                  -8853;2;0;false;false;;;;;;
                                  -8855;3;1;false;false;127;0;85;;;
                                  -8858;1;0;false;false;;;;;;
                                  -8859;10;0;false;false;0;0;0;;;
                                  -8869;9;0;false;false;;;;;;
                                  -8878;38;0;false;false;63;127;95;;;
                                  -8916;2;0;false;false;;;;;;
                                  -8918;3;1;false;false;127;0;85;;;
                                  -8921;1;0;false;false;;;;;;
                                  -8922;10;0;false;false;0;0;0;;;
                                  -8932;9;0;false;false;;;;;;
                                  -8941;24;0;false;false;63;127;95;;;
                                  -8965;2;0;false;false;;;;;;
                                  -8967;3;1;false;false;127;0;85;;;
                                  -8970;1;0;false;false;;;;;;
                                  -8971;8;0;false;false;0;0;0;;;
                                  -8979;9;0;false;false;;;;;;
                                  -8988;23;0;false;false;63;127;95;;;
                                  -9011;2;0;false;false;;;;;;
                                  -9013;3;1;false;false;127;0;85;;;
                                  -9016;1;0;false;false;;;;;;
                                  -9017;9;0;false;false;0;0;0;;;
                                  -9026;9;0;false;false;;;;;;
                                  -9035;30;0;false;false;63;127;95;;;
                                  -9065;2;0;false;false;;;;;;
                                  -9067;3;1;false;false;127;0;85;;;
                                  -9070;1;0;false;false;;;;;;
                                  -9071;10;0;false;false;0;0;0;;;
                                  -9081;9;0;false;false;;;;;;
                                  -9090;34;0;false;false;63;127;95;;;
                                  -9124;2;0;false;false;;;;;;
                                  -9126;3;1;false;false;127;0;85;;;
                                  -9129;1;0;false;false;;;;;;
                                  -9130;8;0;false;false;0;0;0;;;
                                  -9138;9;0;false;false;;;;;;
                                  -9147;33;0;false;false;63;127;95;;;
                                  -9180;2;0;false;false;;;;;;
                                  -9182;7;1;false;false;127;0;85;;;
                                  -9189;1;0;false;false;;;;;;
                                  -9190;11;0;false;false;0;0;0;;;
                                  -9201;8;0;false;false;;;;;;
                                  -9209;28;0;false;false;63;127;95;;;
                                  -9237;2;0;false;false;;;;;;
                                  -9239;5;0;false;false;0;0;0;;;
                                  -9244;1;0;false;false;;;;;;
                                  -9245;9;0;false;false;0;0;0;;;
                                  -9254;1;0;false;false;;;;;;
                                  -9255;1;0;false;false;0;0;0;;;
                                  -9256;1;0;false;false;;;;;;
                                  -9257;4;1;false;false;127;0;85;;;
                                  -9261;1;0;false;false;0;0;0;;;
                                  -9262;5;0;false;false;;;;;;
                                  -9267;18;0;false;false;63;127;95;;;
                                  -9285;2;0;false;false;;;;;;
                                  -9287;7;1;false;false;127;0;85;;;
                                  -9294;1;0;false;false;;;;;;
                                  -9295;9;0;false;false;0;0;0;;;
                                  -9304;6;0;false;false;;;;;;
                                  -9310;48;0;false;false;63;127;95;;;
                                  -9358;3;0;false;false;;;;;;
                                  -9361;3;0;false;false;63;95;191;;;
                                  -9364;4;0;false;false;;;;;;
                                  -9368;1;0;false;false;63;95;191;;;
                                  -9369;1;0;false;false;;;;;;
                                  -9370;7;0;false;false;63;95;191;;;
                                  -9377;1;0;false;false;;;;;;
                                  -9378;2;0;false;false;63;95;191;;;
                                  -9380;1;0;false;false;;;;;;
                                  -9381;8;0;false;false;63;95;191;;;
                                  -9389;1;0;false;false;;;;;;
                                  -9390;2;0;false;false;63;95;191;;;
                                  -9392;1;0;false;false;;;;;;
                                  -9393;7;0;false;false;127;127;159;;;
                                  -9400;8;0;false;false;63;95;191;;;
                                  -9408;8;0;false;false;127;127;159;;;
                                  -9416;1;0;false;false;63;95;191;;;
                                  -9417;4;0;false;false;;;;;;
                                  -9421;1;0;false;false;63;95;191;;;
                                  -9422;1;0;false;false;;;;;;
                                  -9423;6;0;false;false;63;95;191;;;
                                  -9429;1;0;false;false;;;;;;
                                  -9430;3;0;false;false;63;95;191;;;
                                  -9433;1;0;false;false;;;;;;
                                  -9434;6;0;false;false;63;95;191;;;
                                  -9440;1;0;false;false;;;;;;
                                  -9441;7;0;false;false;63;95;191;;;
                                  -9448;1;0;false;false;;;;;;
                                  -9449;3;0;false;false;63;95;191;;;
                                  -9452;1;0;false;false;;;;;;
                                  -9453;9;0;false;false;63;95;191;;;
                                  -9462;1;0;false;false;;;;;;
                                  -9463;4;0;false;false;63;95;191;;;
                                  -9467;1;0;false;false;;;;;;
                                  -9468;4;0;false;false;63;95;191;;;
                                  -9472;1;0;false;false;;;;;;
                                  -9473;5;0;false;false;63;95;191;;;
                                  -9478;5;0;false;false;;;;;;
                                  -9483;1;0;false;false;63;95;191;;;
                                  -9484;1;0;false;false;;;;;;
                                  -9485;2;0;false;false;63;95;191;;;
                                  -9487;1;0;false;false;;;;;;
                                  -9488;2;0;false;false;63;95;191;;;
                                  -9490;1;0;false;false;;;;;;
                                  -9491;9;0;false;false;63;95;191;;;
                                  -9500;1;0;false;false;;;;;;
                                  -9501;4;0;false;false;63;95;191;;;
                                  -9505;1;0;false;false;;;;;;
                                  -9506;10;0;false;false;63;95;191;;;
                                  -9516;4;0;false;false;;;;;;
                                  -9520;1;0;false;false;63;95;191;;;
                                  -9521;1;0;false;false;;;;;;
                                  -9522;4;0;false;false;127;127;159;;;
                                  -9526;4;0;false;false;;;;;;
                                  -9530;1;0;false;false;63;95;191;;;
                                  -9531;1;0;false;false;;;;;;
                                  -9532;7;1;false;false;127;159;191;;;
                                  -9539;6;0;false;false;63;95;191;;;
                                  -9545;1;0;false;false;;;;;;
                                  -9546;10;0;false;false;63;95;191;;;
                                  -9556;1;0;false;false;;;;;;
                                  -9557;6;0;false;false;63;95;191;;;
                                  -9563;1;0;false;false;;;;;;
                                  -9564;2;0;false;false;63;95;191;;;
                                  -9566;1;0;false;false;;;;;;
                                  -9567;6;0;false;false;63;95;191;;;
                                  -9573;4;0;false;false;;;;;;
                                  -9577;1;0;false;false;63;95;191;;;
                                  -9578;1;0;false;false;;;;;;
                                  -9579;7;1;false;false;127;159;191;;;
                                  -9586;7;0;false;false;63;95;191;;;
                                  -9593;1;0;false;false;;;;;;
                                  -9594;7;0;false;false;63;95;191;;;
                                  -9601;1;0;false;false;;;;;;
                                  -9602;6;0;false;false;63;95;191;;;
                                  -9608;1;0;false;false;;;;;;
                                  -9609;2;0;false;false;63;95;191;;;
                                  -9611;1;0;false;false;;;;;;
                                  -9612;5;0;false;false;63;95;191;;;
                                  -9617;1;0;false;false;;;;;;
                                  -9618;3;0;false;false;63;95;191;;;
                                  -9621;4;0;false;false;;;;;;
                                  -9625;1;0;false;false;63;95;191;;;
                                  -9626;1;0;false;false;;;;;;
                                  -9627;7;1;false;false;127;159;191;;;
                                  -9634;12;0;false;false;63;95;191;;;
                                  -9646;1;0;false;false;;;;;;
                                  -9647;5;0;false;false;63;95;191;;;
                                  -9652;1;0;false;false;;;;;;
                                  -9653;7;0;false;false;63;95;191;;;
                                  -9660;4;0;false;false;;;;;;
                                  -9664;2;0;false;false;63;95;191;;;
                                  -9666;5;0;false;false;;;;;;
                                  -9671;19;0;false;false;0;0;0;;;
                                  -9690;1;0;false;false;;;;;;
                                  -9691;7;0;false;false;0;0;0;;;
                                  -9698;1;0;false;false;;;;;;
                                  -9699;7;0;false;false;0;0;0;;;
                                  -9706;1;0;false;false;;;;;;
                                  -9707;8;0;false;false;0;0;0;;;
                                  -9715;1;0;false;false;;;;;;
                                  -9716;22;0;false;false;0;0;0;;;
                                  -9738;1;0;false;false;;;;;;
                                  -9739;13;0;false;false;0;0;0;;;
                                  -9752;1;0;false;false;;;;;;
                                  -9753;1;0;false;false;0;0;0;;;
                                  -9754;4;0;false;false;;;;;;
                                  -9758;11;0;false;false;0;0;0;;;
                                  -9769;1;0;false;false;;;;;;
                                  -9770;4;0;false;false;0;0;0;;;
                                  -9774;1;0;false;false;;;;;;
                                  -9775;1;0;false;false;0;0;0;;;
                                  -9776;1;0;false;false;;;;;;
                                  -9777;25;0;false;false;0;0;0;;;
                                  -9802;6;0;false;false;;;;;;
                                  -9808;4;1;false;false;127;0;85;;;
                                  -9812;7;0;false;false;0;0;0;;;
                                  -9819;1;0;false;false;;;;;;
                                  -9820;1;0;false;false;0;0;0;;;
                                  -9821;1;0;false;false;;;;;;
                                  -9822;7;0;false;false;0;0;0;;;
                                  -9829;4;0;false;false;;;;;;
                                  -9833;4;1;false;false;127;0;85;;;
                                  -9837;8;0;false;false;0;0;0;;;
                                  -9845;1;0;false;false;;;;;;
                                  -9846;1;0;false;false;0;0;0;;;
                                  -9847;1;0;false;false;;;;;;
                                  -9848;8;0;false;false;0;0;0;;;
                                  -9856;4;0;false;false;;;;;;
                                  -9860;4;1;false;false;127;0;85;;;
                                  -9864;13;0;false;false;0;0;0;;;
                                  -9877;1;0;false;false;;;;;;
                                  -9878;1;0;false;false;0;0;0;;;
                                  -9879;1;0;false;false;;;;;;
                                  -9880;13;0;false;false;0;0;0;;;
                                  -9893;4;0;false;false;;;;;;
                                  -9897;4;1;false;false;127;0;85;;;
                                  -9901;9;0;false;false;0;0;0;;;
                                  -9910;1;0;false;false;;;;;;
                                  -9911;1;0;false;false;0;0;0;;;
                                  -9912;1;0;false;false;;;;;;
                                  -9913;18;0;false;false;0;0;0;;;
                                  -9931;1;0;false;false;;;;;;
                                  -9932;1;0;false;false;0;0;0;;;
                                  -9933;1;0;false;false;;;;;;
                                  -9934;13;0;false;false;0;0;0;;;
                                  -9947;1;0;false;false;;;;;;
                                  -9948;2;0;false;false;0;0;0;;;
                                  -9950;1;0;false;false;;;;;;
                                  -9951;2;0;false;false;0;0;0;;;
                                  -9953;4;0;false;false;;;;;;
                                  -9957;10;0;false;false;0;0;0;;;
                                  -9967;1;0;false;false;;;;;;
                                  -9968;1;0;false;false;0;0;0;;;
                                  -9969;1;0;false;false;;;;;;
                                  -9970;22;0;false;false;0;0;0;;;
                                  -9992;4;0;false;false;;;;;;
                                  -9996;9;0;false;false;0;0;0;;;
                                  -10005;1;0;false;false;;;;;;
                                  -10006;1;0;false;false;0;0;0;;;
                                  -10007;1;0;false;false;;;;;;
                                  -10008;2;0;false;false;0;0;0;;;
                                  -10010;4;0;false;false;;;;;;
                                  -10014;7;0;false;false;0;0;0;;;
                                  -10021;1;0;false;false;;;;;;
                                  -10022;1;0;false;false;0;0;0;;;
                                  -10023;1;0;false;false;;;;;;
                                  -10024;18;0;false;false;0;0;0;;;
                                  -10042;4;0;false;false;;;;;;
                                  -10046;2;1;false;false;127;0;85;;;
                                  -10048;1;0;false;false;;;;;;
                                  -10049;11;0;false;false;0;0;0;;;
                                  -10060;1;0;false;false;;;;;;
                                  -10061;2;0;false;false;0;0;0;;;
                                  -10063;1;0;false;false;;;;;;
                                  -10064;23;0;false;false;0;0;0;;;
                                  -10087;1;0;false;false;;;;;;
                                  -10088;1;0;false;false;0;0;0;;;
                                  -10089;5;0;false;false;;;;;;
                                  -10094;9;0;false;false;0;0;0;;;
                                  -10103;1;0;false;false;;;;;;
                                  -10104;1;0;false;false;0;0;0;;;
                                  -10105;1;0;false;false;;;;;;
                                  -10106;15;0;false;false;0;0;0;;;
                                  -10121;5;0;false;false;;;;;;
                                  -10126;7;0;false;false;0;0;0;;;
                                  -10133;1;0;false;false;;;;;;
                                  -10134;1;0;false;false;0;0;0;;;
                                  -10135;1;0;false;false;;;;;;
                                  -10136;13;0;false;false;0;0;0;;;
                                  -10149;5;0;false;false;;;;;;
                                  -10154;2;1;false;false;127;0;85;;;
                                  -10156;1;0;false;false;;;;;;
                                  -10157;8;0;false;false;0;0;0;;;
                                  -10165;1;0;false;false;;;;;;
                                  -10166;1;0;false;false;0;0;0;;;
                                  -10167;1;0;false;false;;;;;;
                                  -10168;10;0;false;false;0;0;0;;;
                                  -10178;1;0;false;false;;;;;;
                                  -10179;1;0;false;false;0;0;0;;;
                                  -10180;6;0;false;false;;;;;;
                                  -10186;3;1;false;false;127;0;85;;;
                                  -10189;1;0;false;false;;;;;;
                                  -10190;4;0;false;false;0;0;0;;;
                                  -10194;1;0;false;false;;;;;;
                                  -10195;1;0;false;false;0;0;0;;;
                                  -10196;1;0;false;false;;;;;;
                                  -10197;8;0;false;false;0;0;0;;;
                                  -10205;6;0;false;false;;;;;;
                                  -10211;7;0;false;false;0;0;0;;;
                                  -10218;1;0;false;false;;;;;;
                                  -10219;1;0;false;false;0;0;0;;;
                                  -10220;1;0;false;false;;;;;;
                                  -10221;10;0;false;false;0;0;0;;;
                                  -10231;6;0;false;false;;;;;;
                                  -10237;9;0;false;false;0;0;0;;;
                                  -10246;1;0;false;false;;;;;;
                                  -10247;1;0;false;false;0;0;0;;;
                                  -10248;1;0;false;false;;;;;;
                                  -10249;5;0;false;false;0;0;0;;;
                                  -10254;5;0;false;false;;;;;;
                                  -10259;1;0;false;false;0;0;0;;;
                                  -10260;7;0;false;false;;;;;;
                                  -10267;1;0;false;false;0;0;0;;;
                                  -10268;5;0;false;false;;;;;;
                                  -10273;4;1;false;false;127;0;85;;;
                                  -10277;5;0;false;false;;;;;;
                                  -10282;2;1;false;false;127;0;85;;;
                                  -10284;1;0;false;false;;;;;;
                                  -10285;11;0;false;false;0;0;0;;;
                                  -10296;1;0;false;false;;;;;;
                                  -10297;2;0;false;false;0;0;0;;;
                                  -10299;1;0;false;false;;;;;;
                                  -10300;22;0;false;false;0;0;0;;;
                                  -10322;1;0;false;false;;;;;;
                                  -10323;1;0;false;false;0;0;0;;;
                                  -10324;5;0;false;false;;;;;;
                                  -10329;9;0;false;false;0;0;0;;;
                                  -10338;1;0;false;false;;;;;;
                                  -10339;1;0;false;false;0;0;0;;;
                                  -10340;1;0;false;false;;;;;;
                                  -10341;27;0;false;false;0;0;0;;;
                                  -10368;4;0;false;false;;;;;;
                                  -10372;1;0;false;false;0;0;0;;;
                                  -10373;6;0;false;false;;;;;;
                                  -10379;15;0;false;false;0;0;0;;;
                                  -10394;1;0;false;false;;;;;;
                                  -10395;1;0;false;false;0;0;0;;;
                                  -10396;1;0;false;false;;;;;;
                                  -10397;34;0;false;false;0;0;0;;;
                                  -10431;4;0;false;false;;;;;;
                                  -10435;33;0;false;false;0;0;0;;;
                                  -10468;4;0;false;false;;;;;;
                                  -10472;30;0;false;false;0;0;0;;;
                                  -10502;3;0;false;false;;;;;;
                                  -10505;1;0;false;false;0;0;0;;;
                                  -10506;3;0;false;false;;;;;;
                                  -10509;3;0;false;false;63;95;191;;;
                                  -10512;4;0;false;false;;;;;;
                                  -10516;1;0;false;false;63;95;191;;;
                                  -10517;1;0;false;false;;;;;;
                                  -10518;6;0;false;false;63;95;191;;;
                                  -10524;1;0;false;false;;;;;;
                                  -10525;3;0;false;false;63;95;191;;;
                                  -10528;1;0;false;false;;;;;;
                                  -10529;4;0;false;false;63;95;191;;;
                                  -10533;1;0;false;false;;;;;;
                                  -10534;8;0;false;false;63;95;191;;;
                                  -10542;1;0;false;false;;;;;;
                                  -10543;2;0;false;false;63;95;191;;;
                                  -10545;1;0;false;false;;;;;;
                                  -10546;3;0;false;false;63;95;191;;;
                                  -10549;1;0;false;false;;;;;;
                                  -10550;5;0;false;false;63;95;191;;;
                                  -10555;1;0;false;false;;;;;;
                                  -10556;5;0;false;false;63;95;191;;;
                                  -10561;4;0;false;false;;;;;;
                                  -10565;1;0;false;false;63;95;191;;;
                                  -10566;1;0;false;false;;;;;;
                                  -10567;4;0;false;false;127;127;159;;;
                                  -10571;4;0;false;false;;;;;;
                                  -10575;1;0;false;false;63;95;191;;;
                                  -10576;1;0;false;false;;;;;;
                                  -10577;7;1;false;false;127;159;191;;;
                                  -10584;10;0;false;false;63;95;191;;;
                                  -10594;1;0;false;false;;;;;;
                                  -10595;6;0;false;false;63;95;191;;;
                                  -10601;1;0;false;false;;;;;;
                                  -10602;2;0;false;false;63;95;191;;;
                                  -10604;1;0;false;false;;;;;;
                                  -10605;3;0;false;false;63;95;191;;;
                                  -10608;1;0;false;false;;;;;;
                                  -10609;4;0;false;false;63;95;191;;;
                                  -10613;1;0;false;false;;;;;;
                                  -10614;2;0;false;false;63;95;191;;;
                                  -10616;1;0;false;false;;;;;;
                                  -10617;5;0;false;false;63;95;191;;;
                                  -10622;1;0;false;false;;;;;;
                                  -10623;4;0;false;false;63;95;191;;;
                                  -10627;1;0;false;false;;;;;;
                                  -10628;8;0;false;false;63;95;191;;;
                                  -10636;1;0;false;false;;;;;;
                                  -10637;4;0;false;false;63;95;191;;;
                                  -10641;5;0;false;false;;;;;;
                                  -10646;1;0;false;false;63;95;191;;;
                                  -10647;2;0;false;false;;;;;;
                                  -10649;8;0;false;false;63;95;191;;;
                                  -10657;1;0;false;false;;;;;;
                                  -10658;2;0;false;false;63;95;191;;;
                                  -10660;1;0;false;false;;;;;;
                                  -10661;3;0;false;false;63;95;191;;;
                                  -10664;1;0;false;false;;;;;;
                                  -10665;5;0;false;false;63;95;191;;;
                                  -10670;1;0;false;false;;;;;;
                                  -10671;2;0;false;false;63;95;191;;;
                                  -10673;1;0;false;false;;;;;;
                                  -10674;3;0;false;false;63;95;191;;;
                                  -10677;1;0;false;false;;;;;;
                                  -10678;9;0;false;false;63;95;191;;;
                                  -10687;4;0;false;false;;;;;;
                                  -10691;1;0;false;false;63;95;191;;;
                                  -10692;1;0;false;false;;;;;;
                                  -10693;7;1;false;false;127;159;191;;;
                                  -10700;4;0;false;false;63;95;191;;;
                                  -10704;1;0;false;false;;;;;;
                                  -10705;4;0;false;false;63;95;191;;;
                                  -10709;1;0;false;false;;;;;;
                                  -10710;2;0;false;false;63;95;191;;;
                                  -10712;1;0;false;false;;;;;;
                                  -10713;5;0;false;false;63;95;191;;;
                                  -10718;1;0;false;false;;;;;;
                                  -10719;4;0;false;false;63;95;191;;;
                                  -10723;1;0;false;false;;;;;;
                                  -10724;8;0;false;false;63;95;191;;;
                                  -10732;1;0;false;false;;;;;;
                                  -10733;4;0;false;false;63;95;191;;;
                                  -10737;5;0;false;false;;;;;;
                                  -10742;2;0;false;false;63;95;191;;;
                                  -10744;3;0;false;false;;;;;;
                                  -10747;4;1;false;false;127;0;85;;;
                                  -10751;1;0;false;false;;;;;;
                                  -10752;18;0;false;false;0;0;0;;;
                                  -10770;3;1;false;false;127;0;85;;;
                                  -10773;1;0;false;false;;;;;;
                                  -10774;11;0;false;false;0;0;0;;;
                                  -10785;1;0;false;false;;;;;;
                                  -10786;6;0;false;false;0;0;0;;;
                                  -10792;1;0;false;false;;;;;;
                                  -10793;5;0;false;false;0;0;0;;;
                                  -10798;1;0;false;false;;;;;;
                                  -10799;1;0;false;false;0;0;0;;;
                                  -10800;4;0;false;false;;;;;;
                                  -10804;3;1;false;false;127;0;85;;;
                                  -10807;2;0;false;false;0;0;0;;;
                                  -10809;1;0;false;false;;;;;;
                                  -10810;8;0;false;false;0;0;0;;;
                                  -10818;1;0;false;false;;;;;;
                                  -10819;1;0;false;false;0;0;0;;;
                                  -10820;1;0;false;false;;;;;;
                                  -10821;34;0;false;false;0;0;0;;;
                                  -10855;1;0;false;false;;;;;;
                                  -10856;6;0;false;false;0;0;0;;;
                                  -10862;8;0;false;false;;;;;;
                                  -10870;2;1;false;false;127;0;85;;;
                                  -10872;1;0;false;false;;;;;;
                                  -10873;9;0;false;false;0;0;0;;;
                                  -10882;1;0;false;false;;;;;;
                                  -10883;2;0;false;false;0;0;0;;;
                                  -10885;1;0;false;false;;;;;;
                                  -10886;4;1;false;false;127;0;85;;;
                                  -10890;1;0;false;false;0;0;0;;;
                                  -10891;1;0;false;false;;;;;;
                                  -10892;1;0;false;false;0;0;0;;;
                                  -10893;5;0;false;false;;;;;;
                                  -10898;17;0;false;false;0;0;0;;;
                                  -10915;3;1;false;false;127;0;85;;;
                                  -10918;1;0;false;false;;;;;;
                                  -10919;20;0;false;false;0;0;0;;;
                                  -10939;1;0;false;false;;;;;;
                                  -10940;10;0;false;false;0;0;0;;;
                                  -10950;4;0;false;false;;;;;;
                                  -10954;1;0;false;false;0;0;0;;;
                                  -10955;3;0;false;false;;;;;;
                                  -10958;1;0;false;false;0;0;0;;;
                                  -10959;3;0;false;false;;;;;;
                                  -10962;3;0;false;false;63;95;191;;;
                                  -10965;4;0;false;false;;;;;;
                                  -10969;1;0;false;false;63;95;191;;;
                                  -10970;1;0;false;false;;;;;;
                                  -10971;6;0;false;false;63;95;191;;;
                                  -10977;1;0;false;false;;;;;;
                                  -10978;3;0;false;false;63;95;191;;;
                                  -10981;1;0;false;false;;;;;;
                                  -10982;4;0;false;false;63;95;191;;;
                                  -10986;1;0;false;false;;;;;;
                                  -10987;10;0;false;false;63;95;191;;;
                                  -10997;1;0;false;false;;;;;;
                                  -10998;5;0;false;false;63;95;191;;;
                                  -11003;1;0;false;false;;;;;;
                                  -11004;2;0;false;false;63;95;191;;;
                                  -11006;1;0;false;false;;;;;;
                                  -11007;3;0;false;false;63;95;191;;;
                                  -11010;1;0;false;false;;;;;;
                                  -11011;5;0;false;false;63;95;191;;;
                                  -11016;1;0;false;false;;;;;;
                                  -11017;5;0;false;false;63;95;191;;;
                                  -11022;4;0;false;false;;;;;;
                                  -11026;1;0;false;false;63;95;191;;;
                                  -11027;1;0;false;false;;;;;;
                                  -11028;4;0;false;false;127;127;159;;;
                                  -11032;4;0;false;false;;;;;;
                                  -11036;1;0;false;false;63;95;191;;;
                                  -11037;1;0;false;false;;;;;;
                                  -11038;7;1;false;false;127;159;191;;;
                                  -11045;10;0;false;false;63;95;191;;;
                                  -11055;1;0;false;false;;;;;;
                                  -11056;6;0;false;false;63;95;191;;;
                                  -11062;1;0;false;false;;;;;;
                                  -11063;2;0;false;false;63;95;191;;;
                                  -11065;1;0;false;false;;;;;;
                                  -11066;3;0;false;false;63;95;191;;;
                                  -11069;1;0;false;false;;;;;;
                                  -11070;4;0;false;false;63;95;191;;;
                                  -11074;1;0;false;false;;;;;;
                                  -11075;2;0;false;false;63;95;191;;;
                                  -11077;1;0;false;false;;;;;;
                                  -11078;5;0;false;false;63;95;191;;;
                                  -11083;1;0;false;false;;;;;;
                                  -11084;3;0;false;false;63;95;191;;;
                                  -11087;1;0;false;false;;;;;;
                                  -11088;10;0;false;false;63;95;191;;;
                                  -11098;5;0;false;false;;;;;;
                                  -11103;1;0;false;false;63;95;191;;;
                                  -11104;2;0;false;false;;;;;;
                                  -11106;5;0;false;false;63;95;191;;;
                                  -11111;1;0;false;false;;;;;;
                                  -11112;4;0;false;false;63;95;191;;;
                                  -11116;1;0;false;false;;;;;;
                                  -11117;8;0;false;false;63;95;191;;;
                                  -11125;1;0;false;false;;;;;;
                                  -11126;2;0;false;false;63;95;191;;;
                                  -11128;1;0;false;false;;;;;;
                                  -11129;3;0;false;false;63;95;191;;;
                                  -11132;1;0;false;false;;;;;;
                                  -11133;5;0;false;false;63;95;191;;;
                                  -11138;1;0;false;false;;;;;;
                                  -11139;2;0;false;false;63;95;191;;;
                                  -11141;1;0;false;false;;;;;;
                                  -11142;3;0;false;false;63;95;191;;;
                                  -11145;1;0;false;false;;;;;;
                                  -11146;9;0;false;false;63;95;191;;;
                                  -11155;4;0;false;false;;;;;;
                                  -11159;1;0;false;false;63;95;191;;;
                                  -11160;1;0;false;false;;;;;;
                                  -11161;7;1;false;false;127;159;191;;;
                                  -11168;4;0;false;false;63;95;191;;;
                                  -11172;1;0;false;false;;;;;;
                                  -11173;4;0;false;false;63;95;191;;;
                                  -11177;1;0;false;false;;;;;;
                                  -11178;2;0;false;false;63;95;191;;;
                                  -11180;1;0;false;false;;;;;;
                                  -11181;5;0;false;false;63;95;191;;;
                                  -11186;1;0;false;false;;;;;;
                                  -11187;3;0;false;false;63;95;191;;;
                                  -11190;1;0;false;false;;;;;;
                                  -11191;10;0;false;false;63;95;191;;;
                                  -11201;1;0;false;false;;;;;;
                                  -11202;5;0;false;false;63;95;191;;;
                                  -11207;1;0;false;false;;;;;;
                                  -11208;3;0;false;false;63;95;191;;;
                                  -11211;4;0;false;false;;;;;;
                                  -11215;2;0;false;false;63;95;191;;;
                                  -11217;3;0;false;false;;;;;;
                                  -11220;4;1;false;false;127;0;85;;;
                                  -11224;1;0;false;false;;;;;;
                                  -11225;20;0;false;false;0;0;0;;;
                                  -11245;3;1;false;false;127;0;85;;;
                                  -11248;1;0;false;false;;;;;;
                                  -11249;11;0;false;false;0;0;0;;;
                                  -11260;1;0;false;false;;;;;;
                                  -11261;6;0;false;false;0;0;0;;;
                                  -11267;1;0;false;false;;;;;;
                                  -11268;5;0;false;false;0;0;0;;;
                                  -11273;1;0;false;false;;;;;;
                                  -11274;1;0;false;false;0;0;0;;;
                                  -11275;4;0;false;false;;;;;;
                                  -11279;15;0;false;false;0;0;0;;;
                                  -11294;1;0;false;false;;;;;;
                                  -11295;5;0;false;false;0;0;0;;;
                                  -11300;1;0;false;false;;;;;;
                                  -11301;1;0;false;false;0;0;0;;;
                                  -11302;1;0;false;false;;;;;;
                                  -11303;40;0;false;false;0;0;0;;;
                                  -11343;1;0;false;false;;;;;;
                                  -11344;6;0;false;false;0;0;0;;;
                                  -11350;8;0;false;false;;;;;;
                                  -11358;2;1;false;false;127;0;85;;;
                                  -11360;1;0;false;false;;;;;;
                                  -11361;6;0;false;false;0;0;0;;;
                                  -11367;1;0;false;false;;;;;;
                                  -11368;2;0;false;false;0;0;0;;;
                                  -11370;1;0;false;false;;;;;;
                                  -11371;4;1;false;false;127;0;85;;;
                                  -11375;1;0;false;false;0;0;0;;;
                                  -11376;1;0;false;false;;;;;;
                                  -11377;1;0;false;false;0;0;0;;;
                                  -11378;5;0;false;false;;;;;;
                                  -11383;20;0;false;false;0;0;0;;;
                                  -11403;3;1;false;false;127;0;85;;;
                                  -11406;1;0;false;false;;;;;;
                                  -11407;20;0;false;false;0;0;0;;;
                                  -11427;1;0;false;false;;;;;;
                                  -11428;7;0;false;false;0;0;0;;;
                                  -11435;4;0;false;false;;;;;;
                                  -11439;1;0;false;false;0;0;0;;;
                                  -11440;3;0;false;false;;;;;;
                                  -11443;1;0;false;false;0;0;0;;;
                                  -11444;3;0;false;false;;;;;;
                                  -11447;3;0;false;false;63;95;191;;;
                                  -11450;4;0;false;false;;;;;;
                                  -11454;1;0;false;false;63;95;191;;;
                                  -11455;1;0;false;false;;;;;;
                                  -11456;6;0;false;false;63;95;191;;;
                                  -11462;1;0;false;false;;;;;;
                                  -11463;3;0;false;false;63;95;191;;;
                                  -11466;1;0;false;false;;;;;;
                                  -11467;4;0;false;false;63;95;191;;;
                                  -11471;1;0;false;false;;;;;;
                                  -11472;4;0;false;false;63;95;191;;;
                                  -11476;1;0;false;false;;;;;;
                                  -11477;4;0;false;false;63;95;191;;;
                                  -11481;1;0;false;false;;;;;;
                                  -11482;5;0;false;false;63;95;191;;;
                                  -11487;1;0;false;false;;;;;;
                                  -11488;2;0;false;false;63;95;191;;;
                                  -11490;1;0;false;false;;;;;;
                                  -11491;2;0;false;false;63;95;191;;;
                                  -11493;1;0;false;false;;;;;;
                                  -11494;9;0;false;false;63;95;191;;;
                                  -11503;1;0;false;false;;;;;;
                                  -11504;4;0;false;false;63;95;191;;;
                                  -11508;1;0;false;false;;;;;;
                                  -11509;1;0;false;false;63;95;191;;;
                                  -11510;1;0;false;false;;;;;;
                                  -11511;9;0;false;false;63;95;191;;;
                                  -11520;4;0;false;false;;;;;;
                                  -11524;1;0;false;false;63;95;191;;;
                                  -11525;1;0;false;false;;;;;;
                                  -11526;4;0;false;false;127;127;159;;;
                                  -11530;4;0;false;false;;;;;;
                                  -11534;1;0;false;false;63;95;191;;;
                                  -11535;1;0;false;false;;;;;;
                                  -11536;7;1;false;false;127;159;191;;;
                                  -11543;14;0;false;false;63;95;191;;;
                                  -11557;1;0;false;false;;;;;;
                                  -11558;7;0;false;false;127;127;159;;;
                                  -11565;17;0;false;false;63;95;191;;;
                                  -11582;8;0;false;false;127;127;159;;;
                                  -11590;1;0;false;false;;;;;;
                                  -11591;2;0;false;false;63;95;191;;;
                                  -11593;1;0;false;false;;;;;;
                                  -11594;7;0;false;false;63;95;191;;;
                                  -11601;5;0;false;false;;;;;;
                                  -11606;1;0;false;false;63;95;191;;;
                                  -11607;2;0;false;false;;;;;;
                                  -11609;4;0;false;false;63;95;191;;;
                                  -11613;1;0;false;false;;;;;;
                                  -11614;4;0;false;false;63;95;191;;;
                                  -11618;1;0;false;false;;;;;;
                                  -11619;4;0;false;false;63;95;191;;;
                                  -11623;4;0;false;false;;;;;;
                                  -11627;2;0;false;false;63;95;191;;;
                                  -11629;3;0;false;false;;;;;;
                                  -11632;4;1;false;false;127;0;85;;;
                                  -11636;1;0;false;false;;;;;;
                                  -11637;31;0;false;false;0;0;0;;;
                                  -11668;1;0;false;false;;;;;;
                                  -11669;15;0;false;false;0;0;0;;;
                                  -11684;1;0;false;false;;;;;;
                                  -11685;1;0;false;false;0;0;0;;;
                                  -11686;5;0;false;false;;;;;;
                                  -11691;3;1;false;false;127;0;85;;;
                                  -11694;1;0;false;false;;;;;;
                                  -11695;1;0;false;false;0;0;0;;;
                                  -11696;3;1;false;false;127;0;85;;;
                                  -11699;1;0;false;false;;;;;;
                                  -11700;1;0;false;false;0;0;0;;;
                                  -11701;1;0;false;false;;;;;;
                                  -11702;1;0;false;false;0;0;0;;;
                                  -11703;1;0;false;false;;;;;;
                                  -11704;2;0;false;false;0;0;0;;;
                                  -11706;1;0;false;false;;;;;;
                                  -11707;1;0;false;false;0;0;0;;;
                                  -11708;1;0;false;false;;;;;;
                                  -11709;1;0;false;false;0;0;0;;;
                                  -11710;1;0;false;false;;;;;;
                                  -11711;30;0;false;false;0;0;0;;;
                                  -11741;1;0;false;false;;;;;;
                                  -11742;4;0;false;false;0;0;0;;;
                                  -11746;1;0;false;false;;;;;;
                                  -11747;1;0;false;false;0;0;0;;;
                                  -11748;5;0;false;false;;;;;;
                                  -11753;3;1;false;false;127;0;85;;;
                                  -11756;1;0;false;false;;;;;;
                                  -11757;10;0;false;false;0;0;0;;;
                                  -11767;1;0;false;false;;;;;;
                                  -11768;1;0;false;false;0;0;0;;;
                                  -11769;1;0;false;false;;;;;;
                                  -11770;34;0;false;false;0;0;0;;;
                                  -11804;5;0;false;false;;;;;;
                                  -11809;6;0;false;false;0;0;0;;;
                                  -11815;1;0;false;false;;;;;;
                                  -11816;4;0;false;false;0;0;0;;;
                                  -11820;1;0;false;false;;;;;;
                                  -11821;1;0;false;false;0;0;0;;;
                                  -11822;1;0;false;false;;;;;;
                                  -11823;26;0;false;false;0;0;0;;;
                                  -11849;8;0;false;false;;;;;;
                                  -11857;2;1;false;false;127;0;85;;;
                                  -11859;1;0;false;false;;;;;;
                                  -11860;34;0;false;false;0;0;0;;;
                                  -11894;1;0;false;false;;;;;;
                                  -11895;1;0;false;false;0;0;0;;;
                                  -11896;6;0;false;false;;;;;;
                                  -11902;31;0;false;false;0;0;0;;;
                                  -11933;1;0;false;false;;;;;;
                                  -11934;6;0;false;false;0;0;0;;;
                                  -11940;5;0;false;false;;;;;;
                                  -11945;1;0;false;false;0;0;0;;;
                                  -11946;5;0;false;false;;;;;;
                                  -11951;2;1;false;false;127;0;85;;;
                                  -11953;1;0;false;false;;;;;;
                                  -11954;33;0;false;false;0;0;0;;;
                                  -11987;1;0;false;false;;;;;;
                                  -11988;2;0;false;false;0;0;0;;;
                                  -11990;6;0;false;false;;;;;;
                                  -11996;32;0;false;false;0;0;0;;;
                                  -12028;1;0;false;false;;;;;;
                                  -12029;2;0;false;false;0;0;0;;;
                                  -12031;6;0;false;false;;;;;;
                                  -12037;32;0;false;false;0;0;0;;;
                                  -12069;1;0;false;false;;;;;;
                                  -12070;1;0;false;false;0;0;0;;;
                                  -12071;6;0;false;false;;;;;;
                                  -12077;26;0;false;false;0;0;0;;;
                                  -12103;1;0;false;false;;;;;;
                                  -12104;6;0;false;false;0;0;0;;;
                                  -12110;5;0;false;false;;;;;;
                                  -12115;1;0;false;false;0;0;0;;;
                                  -12116;5;0;false;false;;;;;;
                                  -12121;2;1;false;false;127;0;85;;;
                                  -12123;1;0;false;false;;;;;;
                                  -12124;17;0;false;false;0;0;0;;;
                                  -12141;1;0;false;false;;;;;;
                                  -12142;1;0;false;false;0;0;0;;;
                                  -12143;6;0;false;false;;;;;;
                                  -12149;29;0;false;false;0;0;0;;;
                                  -12178;1;0;false;false;;;;;;
                                  -12179;6;0;false;false;0;0;0;;;
                                  -12185;5;0;false;false;;;;;;
                                  -12190;1;0;false;false;0;0;0;;;
                                  -12191;4;0;false;false;;;;;;
                                  -12195;1;0;false;false;0;0;0;;;
                                  -12196;3;0;false;false;;;;;;
                                  -12199;1;0;false;false;0;0;0;;;
                                  -12200;3;0;false;false;;;;;;
                                  -12203;3;0;false;false;63;95;191;;;
                                  -12206;4;0;false;false;;;;;;
                                  -12210;1;0;false;false;63;95;191;;;
                                  -12211;1;0;false;false;;;;;;
                                  -12212;6;0;false;false;63;95;191;;;
                                  -12218;1;0;false;false;;;;;;
                                  -12219;3;0;false;false;63;95;191;;;
                                  -12222;1;0;false;false;;;;;;
                                  -12223;4;0;false;false;63;95;191;;;
                                  -12227;1;0;false;false;;;;;;
                                  -12228;6;0;false;false;63;95;191;;;
                                  -12234;1;0;false;false;;;;;;
                                  -12235;2;0;false;false;63;95;191;;;
                                  -12237;1;0;false;false;;;;;;
                                  -12238;3;0;false;false;63;95;191;;;
                                  -12241;1;0;false;false;;;;;;
                                  -12242;5;0;false;false;63;95;191;;;
                                  -12247;1;0;false;false;;;;;;
                                  -12248;5;0;false;false;63;95;191;;;
                                  -12253;4;0;false;false;;;;;;
                                  -12257;1;0;false;false;63;95;191;;;
                                  -12258;1;0;false;false;;;;;;
                                  -12259;4;0;false;false;127;127;159;;;
                                  -12263;4;0;false;false;;;;;;
                                  -12267;1;0;false;false;63;95;191;;;
                                  -12268;1;0;false;false;;;;;;
                                  -12269;7;1;false;false;127;159;191;;;
                                  -12276;10;0;false;false;63;95;191;;;
                                  -12286;1;0;false;false;;;;;;
                                  -12287;6;0;false;false;63;95;191;;;
                                  -12293;1;0;false;false;;;;;;
                                  -12294;2;0;false;false;63;95;191;;;
                                  -12296;1;0;false;false;;;;;;
                                  -12297;3;0;false;false;63;95;191;;;
                                  -12300;1;0;false;false;;;;;;
                                  -12301;4;0;false;false;63;95;191;;;
                                  -12305;1;0;false;false;;;;;;
                                  -12306;2;0;false;false;63;95;191;;;
                                  -12308;1;0;false;false;;;;;;
                                  -12309;5;0;false;false;63;95;191;;;
                                  -12314;1;0;false;false;;;;;;
                                  -12315;3;0;false;false;63;95;191;;;
                                  -12318;1;0;false;false;;;;;;
                                  -12319;6;0;false;false;63;95;191;;;
                                  -12325;1;0;false;false;;;;;;
                                  -12326;4;0;false;false;63;95;191;;;
                                  -12330;4;0;false;false;;;;;;
                                  -12334;1;0;false;false;63;95;191;;;
                                  -12335;2;0;false;false;;;;;;
                                  -12337;8;0;false;false;63;95;191;;;
                                  -12345;1;0;false;false;;;;;;
                                  -12346;2;0;false;false;63;95;191;;;
                                  -12348;1;0;false;false;;;;;;
                                  -12349;3;0;false;false;63;95;191;;;
                                  -12352;1;0;false;false;;;;;;
                                  -12353;5;0;false;false;63;95;191;;;
                                  -12358;1;0;false;false;;;;;;
                                  -12359;2;0;false;false;63;95;191;;;
                                  -12361;1;0;false;false;;;;;;
                                  -12362;3;0;false;false;63;95;191;;;
                                  -12365;1;0;false;false;;;;;;
                                  -12366;9;0;false;false;63;95;191;;;
                                  -12375;4;0;false;false;;;;;;
                                  -12379;1;0;false;false;63;95;191;;;
                                  -12380;1;0;false;false;;;;;;
                                  -12381;7;1;false;false;127;159;191;;;
                                  -12388;4;0;false;false;63;95;191;;;
                                  -12392;1;0;false;false;;;;;;
                                  -12393;4;0;false;false;63;95;191;;;
                                  -12397;1;0;false;false;;;;;;
                                  -12398;2;0;false;false;63;95;191;;;
                                  -12400;1;0;false;false;;;;;;
                                  -12401;5;0;false;false;63;95;191;;;
                                  -12406;1;0;false;false;;;;;;
                                  -12407;3;0;false;false;63;95;191;;;
                                  -12410;1;0;false;false;;;;;;
                                  -12411;6;0;false;false;63;95;191;;;
                                  -12417;1;0;false;false;;;;;;
                                  -12418;4;0;false;false;63;95;191;;;
                                  -12422;4;0;false;false;;;;;;
                                  -12426;2;0;false;false;63;95;191;;;
                                  -12428;3;0;false;false;;;;;;
                                  -12431;4;1;false;false;127;0;85;;;
                                  -12435;1;0;false;false;;;;;;
                                  -12436;15;0;false;false;0;0;0;;;
                                  -12451;3;1;false;false;127;0;85;;;
                                  -12454;1;0;false;false;;;;;;
                                  -12455;11;0;false;false;0;0;0;;;
                                  -12466;1;0;false;false;;;;;;
                                  -12467;6;0;false;false;0;0;0;;;
                                  -12473;1;0;false;false;;;;;;
                                  -12474;5;0;false;false;0;0;0;;;
                                  -12479;1;0;false;false;;;;;;
                                  -12480;1;0;false;false;0;0;0;;;
                                  -12481;4;0;false;false;;;;;;
                                  -12485;15;0;false;false;0;0;0;;;
                                  -12500;1;0;false;false;;;;;;
                                  -12501;5;0;false;false;0;0;0;;;
                                  -12506;1;0;false;false;;;;;;
                                  -12507;1;0;false;false;0;0;0;;;
                                  -12508;1;0;false;false;;;;;;
                                  -12509;35;0;false;false;0;0;0;;;
                                  -12544;1;0;false;false;;;;;;
                                  -12545;6;0;false;false;0;0;0;;;
                                  -12551;8;0;false;false;;;;;;
                                  -12559;2;1;false;false;127;0;85;;;
                                  -12561;1;0;false;false;;;;;;
                                  -12562;6;0;false;false;0;0;0;;;
                                  -12568;1;0;false;false;;;;;;
                                  -12569;2;0;false;false;0;0;0;;;
                                  -12571;1;0;false;false;;;;;;
                                  -12572;4;1;false;false;127;0;85;;;
                                  -12576;1;0;false;false;0;0;0;;;
                                  -12577;1;0;false;false;;;;;;
                                  -12578;1;0;false;false;0;0;0;;;
                                  -12579;5;0;false;false;;;;;;
                                  -12584;12;0;false;false;0;0;0;;;
                                  -12596;1;0;false;false;;;;;;
                                  -12597;6;0;false;false;0;0;0;;;
                                  -12603;1;0;false;false;;;;;;
                                  -12604;1;0;false;false;0;0;0;;;
                                  -12605;1;0;false;false;;;;;;
                                  -12606;13;0;false;false;0;0;0;;;
                                  -12619;5;0;false;false;;;;;;
                                  -12624;3;1;false;false;127;0;85;;;
                                  -12627;1;0;false;false;;;;;;
                                  -12628;1;0;false;false;0;0;0;;;
                                  -12629;3;1;false;false;127;0;85;;;
                                  -12632;1;0;false;false;;;;;;
                                  -12633;1;0;false;false;0;0;0;;;
                                  -12634;1;0;false;false;;;;;;
                                  -12635;1;0;false;false;0;0;0;;;
                                  -12636;1;0;false;false;;;;;;
                                  -12637;2;0;false;false;0;0;0;;;
                                  -12639;1;0;false;false;;;;;;
                                  -12640;1;0;false;false;0;0;0;;;
                                  -12641;1;0;false;false;;;;;;
                                  -12642;1;0;false;false;0;0;0;;;
                                  -12643;1;0;false;false;;;;;;
                                  -12644;14;0;false;false;0;0;0;;;
                                  -12658;1;0;false;false;;;;;;
                                  -12659;4;0;false;false;0;0;0;;;
                                  -12663;1;0;false;false;;;;;;
                                  -12664;1;0;false;false;0;0;0;;;
                                  -12665;6;0;false;false;;;;;;
                                  -12671;10;0;false;false;0;0;0;;;
                                  -12681;1;0;false;false;;;;;;
                                  -12682;9;0;false;false;0;0;0;;;
                                  -12691;1;0;false;false;;;;;;
                                  -12692;1;0;false;false;0;0;0;;;
                                  -12693;1;0;false;false;;;;;;
                                  -12694;4;1;false;false;127;0;85;;;
                                  -12698;1;0;false;false;0;0;0;;;
                                  -12699;6;0;false;false;;;;;;
                                  -12705;2;1;false;false;127;0;85;;;
                                  -12707;1;0;false;false;;;;;;
                                  -12708;34;0;false;false;0;0;0;;;
                                  -12742;1;0;false;false;;;;;;
                                  -12743;2;0;false;false;0;0;0;;;
                                  -12745;1;0;false;false;;;;;;
                                  -12746;20;0;false;false;0;0;0;;;
                                  -12766;1;0;false;false;;;;;;
                                  -12767;2;0;false;false;0;0;0;;;
                                  -12769;1;0;false;false;;;;;;
                                  -12770;4;1;false;false;127;0;85;;;
                                  -12774;1;0;false;false;0;0;0;;;
                                  -12775;1;0;false;false;;;;;;
                                  -12776;1;0;false;false;0;0;0;;;
                                  -12777;7;0;false;false;;;;;;
                                  -12784;9;0;false;false;0;0;0;;;
                                  -12793;1;0;false;false;;;;;;
                                  -12794;1;0;false;false;0;0;0;;;
                                  -12795;1;0;false;false;;;;;;
                                  -12796;12;0;false;false;0;0;0;;;
                                  -12808;1;0;false;false;;;;;;
                                  -12809;18;0;false;false;0;0;0;;;
                                  -12827;7;0;false;false;;;;;;
                                  -12834;20;0;false;false;0;0;0;;;
                                  -12854;1;0;false;false;;;;;;
                                  -12855;1;0;false;false;0;0;0;;;
                                  -12856;1;0;false;false;;;;;;
                                  -12857;4;1;false;false;127;0;85;;;
                                  -12861;1;0;false;false;0;0;0;;;
                                  -12862;6;0;false;false;;;;;;
                                  -12868;1;0;false;false;0;0;0;;;
                                  -12869;6;0;false;false;;;;;;
                                  -12875;2;1;false;false;127;0;85;;;
                                  -12877;1;0;false;false;;;;;;
                                  -12878;34;0;false;false;0;0;0;;;
                                  -12912;1;0;false;false;;;;;;
                                  -12913;2;0;false;false;0;0;0;;;
                                  -12915;1;0;false;false;;;;;;
                                  -12916;20;0;false;false;0;0;0;;;
                                  -12936;1;0;false;false;;;;;;
                                  -12937;2;0;false;false;0;0;0;;;
                                  -12939;1;0;false;false;;;;;;
                                  -12940;4;1;false;false;127;0;85;;;
                                  -12944;1;0;false;false;0;0;0;;;
                                  -12945;1;0;false;false;;;;;;
                                  -12946;1;0;false;false;0;0;0;;;
                                  -12947;7;0;false;false;;;;;;
                                  -12954;2;1;false;false;127;0;85;;;
                                  -12956;1;0;false;false;;;;;;
                                  -12957;10;0;false;false;0;0;0;;;
                                  -12967;1;0;false;false;;;;;;
                                  -12968;2;0;false;false;0;0;0;;;
                                  -12970;1;0;false;false;;;;;;
                                  -12971;4;1;false;false;127;0;85;;;
                                  -12975;1;0;false;false;0;0;0;;;
                                  -12976;1;0;false;false;;;;;;
                                  -12977;1;0;false;false;0;0;0;;;
                                  -12978;8;0;false;false;;;;;;
                                  -12986;9;0;false;false;0;0;0;;;
                                  -12995;1;0;false;false;;;;;;
                                  -12996;1;0;false;false;0;0;0;;;
                                  -12997;1;0;false;false;;;;;;
                                  -12998;12;0;false;false;0;0;0;;;
                                  -13010;1;0;false;false;;;;;;
                                  -13011;18;0;false;false;0;0;0;;;
                                  -13029;7;0;false;false;;;;;;
                                  -13036;1;0;false;false;0;0;0;;;
                                  -13037;7;0;false;false;;;;;;
                                  -13044;20;0;false;false;0;0;0;;;
                                  -13064;1;0;false;false;;;;;;
                                  -13065;1;0;false;false;0;0;0;;;
                                  -13066;1;0;false;false;;;;;;
                                  -13067;4;1;false;false;127;0;85;;;
                                  -13071;1;0;false;false;0;0;0;;;
                                  -13072;6;0;false;false;;;;;;
                                  -13078;1;0;false;false;0;0;0;;;
                                  -13079;6;0;false;false;;;;;;
                                  -13085;2;1;false;false;127;0;85;;;
                                  -13087;1;0;false;false;;;;;;
                                  -13088;33;0;false;false;0;0;0;;;
                                  -13121;1;0;false;false;;;;;;
                                  -13122;2;0;false;false;0;0;0;;;
                                  -13124;1;0;false;false;;;;;;
                                  -13125;19;0;false;false;0;0;0;;;
                                  -13144;1;0;false;false;;;;;;
                                  -13145;2;0;false;false;0;0;0;;;
                                  -13147;1;0;false;false;;;;;;
                                  -13148;11;0;false;false;0;0;0;;;
                                  -13159;1;0;false;false;;;;;;
                                  -13160;1;0;false;false;0;0;0;;;
                                  -13161;7;0;false;false;;;;;;
                                  -13168;2;1;false;false;127;0;85;;;
                                  -13170;1;0;false;false;;;;;;
                                  -13171;10;0;false;false;0;0;0;;;
                                  -13181;1;0;false;false;;;;;;
                                  -13182;2;0;false;false;0;0;0;;;
                                  -13184;1;0;false;false;;;;;;
                                  -13185;4;1;false;false;127;0;85;;;
                                  -13189;1;0;false;false;0;0;0;;;
                                  -13190;1;0;false;false;;;;;;
                                  -13191;1;0;false;false;0;0;0;;;
                                  -13192;8;0;false;false;;;;;;
                                  -13200;9;0;false;false;0;0;0;;;
                                  -13209;1;0;false;false;;;;;;
                                  -13210;1;0;false;false;0;0;0;;;
                                  -13211;1;0;false;false;;;;;;
                                  -13212;12;0;false;false;0;0;0;;;
                                  -13224;1;0;false;false;;;;;;
                                  -13225;18;0;false;false;0;0;0;;;
                                  -13243;7;0;false;false;;;;;;
                                  -13250;1;0;false;false;0;0;0;;;
                                  -13251;7;0;false;false;;;;;;
                                  -13258;19;0;false;false;0;0;0;;;
                                  -13277;1;0;false;false;;;;;;
                                  -13278;1;0;false;false;0;0;0;;;
                                  -13279;1;0;false;false;;;;;;
                                  -13280;11;0;false;false;0;0;0;;;
                                  -13291;6;0;false;false;;;;;;
                                  -13297;1;0;false;false;0;0;0;;;
                                  -13298;6;0;false;false;;;;;;
                                  -13304;2;1;false;false;127;0;85;;;
                                  -13306;1;0;false;false;;;;;;
                                  -13307;10;0;false;false;0;0;0;;;
                                  -13317;1;0;false;false;;;;;;
                                  -13318;2;0;false;false;0;0;0;;;
                                  -13320;1;0;false;false;;;;;;
                                  -13321;4;1;false;false;127;0;85;;;
                                  -13325;1;0;false;false;0;0;0;;;
                                  -13326;1;0;false;false;;;;;;
                                  -13327;1;0;false;false;0;0;0;;;
                                  -13328;7;0;false;false;;;;;;
                                  -13335;9;0;false;false;0;0;0;;;
                                  -13344;1;0;false;false;;;;;;
                                  -13345;1;0;false;false;0;0;0;;;
                                  -13346;1;0;false;false;;;;;;
                                  -13347;10;0;false;false;0;0;0;;;
                                  -13357;6;0;false;false;;;;;;
                                  -13363;1;0;false;false;0;0;0;;;
                                  -13364;5;0;false;false;;;;;;
                                  -13369;1;0;false;false;0;0;0;;;
                                  -13370;6;0;false;false;;;;;;
                                  -13376;15;0;false;false;0;0;0;;;
                                  -13391;3;1;false;false;127;0;85;;;
                                  -13394;1;0;false;false;;;;;;
                                  -13395;20;0;false;false;0;0;0;;;
                                  -13415;1;0;false;false;;;;;;
                                  -13416;7;0;false;false;0;0;0;;;
                                  -13423;4;0;false;false;;;;;;
                                  -13427;1;0;false;false;0;0;0;;;
                                  -13428;3;0;false;false;;;;;;
                                  -13431;1;0;false;false;0;0;0;;;
                                  -13432;3;0;false;false;;;;;;
                                  -13435;3;0;false;false;63;95;191;;;
                                  -13438;4;0;false;false;;;;;;
                                  -13442;1;0;false;false;63;95;191;;;
                                  -13443;1;0;false;false;;;;;;
                                  -13444;6;0;false;false;63;95;191;;;
                                  -13450;1;0;false;false;;;;;;
                                  -13451;3;0;false;false;63;95;191;;;
                                  -13454;1;0;false;false;;;;;;
                                  -13455;4;0;false;false;63;95;191;;;
                                  -13459;1;0;false;false;;;;;;
                                  -13460;2;0;false;false;63;95;191;;;
                                  -13462;1;0;false;false;;;;;;
                                  -13463;3;0;false;false;63;95;191;;;
                                  -13466;1;0;false;false;;;;;;
                                  -13467;9;0;false;false;63;95;191;;;
                                  -13476;1;0;false;false;;;;;;
                                  -13477;7;0;false;false;127;127;159;;;
                                  -13484;17;0;false;false;63;95;191;;;
                                  -13501;8;0;false;false;127;127;159;;;
                                  -13509;1;0;false;false;63;95;191;;;
                                  -13510;4;0;false;false;;;;;;
                                  -13514;1;0;false;false;63;95;191;;;
                                  -13515;1;0;false;false;;;;;;
                                  -13516;4;0;false;false;127;127;159;;;
                                  -13520;4;0;false;false;;;;;;
                                  -13524;1;0;false;false;63;95;191;;;
                                  -13525;1;0;false;false;;;;;;
                                  -13526;7;1;false;false;127;159;191;;;
                                  -13533;8;0;false;false;63;95;191;;;
                                  -13541;1;0;false;false;;;;;;
                                  -13542;3;0;false;false;63;95;191;;;
                                  -13545;1;0;false;false;;;;;;
                                  -13546;7;0;false;false;127;127;159;;;
                                  -13553;17;0;false;false;63;95;191;;;
                                  -13570;8;0;false;false;127;127;159;;;
                                  -13578;1;0;false;false;;;;;;
                                  -13579;2;0;false;false;63;95;191;;;
                                  -13581;1;0;false;false;;;;;;
                                  -13582;5;0;false;false;63;95;191;;;
                                  -13587;4;0;false;false;;;;;;
                                  -13591;2;0;false;false;63;95;191;;;
                                  -13593;3;0;false;false;;;;;;
                                  -13596;4;1;false;false;127;0;85;;;
                                  -13600;1;0;false;false;;;;;;
                                  -13601;29;0;false;false;0;0;0;;;
                                  -13630;1;0;false;false;;;;;;
                                  -13631;9;0;false;false;0;0;0;;;
                                  -13640;1;0;false;false;;;;;;
                                  -13641;1;0;false;false;0;0;0;;;
                                  -13642;4;0;false;false;;;;;;
                                  -13646;3;1;false;false;127;0;85;;;
                                  -13649;1;0;false;false;;;;;;
                                  -13650;12;0;false;false;0;0;0;;;
                                  -13662;1;0;false;false;;;;;;
                                  -13663;1;0;false;false;0;0;0;;;
                                  -13664;1;0;false;false;;;;;;
                                  -13665;2;0;false;false;0;0;0;;;
                                  -13667;8;0;false;false;;;;;;
                                  -13675;14;0;false;false;0;0;0;;;
                                  -13689;1;0;false;false;;;;;;
                                  -13690;1;0;false;false;0;0;0;;;
                                  -13691;1;0;false;false;;;;;;
                                  -13692;3;1;false;false;127;0;85;;;
                                  -13695;1;0;false;false;;;;;;
                                  -13696;17;0;false;false;0;0;0;;;
                                  -13713;4;0;false;false;;;;;;
                                  -13717;3;1;false;false;127;0;85;;;
                                  -13720;1;0;false;false;;;;;;
                                  -13721;1;0;false;false;0;0;0;;;
                                  -13722;3;1;false;false;127;0;85;;;
                                  -13725;1;0;false;false;;;;;;
                                  -13726;1;0;false;false;0;0;0;;;
                                  -13727;1;0;false;false;;;;;;
                                  -13728;1;0;false;false;0;0;0;;;
                                  -13729;1;0;false;false;;;;;;
                                  -13730;2;0;false;false;0;0;0;;;
                                  -13732;1;0;false;false;;;;;;
                                  -13733;1;0;false;false;0;0;0;;;
                                  -13734;1;0;false;false;;;;;;
                                  -13735;1;0;false;false;0;0;0;;;
                                  -13736;1;0;false;false;;;;;;
                                  -13737;24;0;false;false;0;0;0;;;
                                  -13761;1;0;false;false;;;;;;
                                  -13762;4;0;false;false;0;0;0;;;
                                  -13766;1;0;false;false;;;;;;
                                  -13767;1;0;false;false;0;0;0;;;
                                  -13768;5;0;false;false;;;;;;
                                  -13773;3;1;false;false;127;0;85;;;
                                  -13776;1;0;false;false;;;;;;
                                  -13777;16;0;false;false;0;0;0;;;
                                  -13793;5;0;false;false;;;;;;
                                  -13798;2;1;false;false;127;0;85;;;
                                  -13800;1;0;false;false;;;;;;
                                  -13801;2;0;false;false;0;0;0;;;
                                  -13803;1;0;false;false;;;;;;
                                  -13804;1;0;false;false;0;0;0;;;
                                  -13805;1;0;false;false;;;;;;
                                  -13806;23;0;false;false;0;0;0;;;
                                  -13829;1;0;false;false;;;;;;
                                  -13830;1;0;false;false;0;0;0;;;
                                  -13831;1;0;false;false;;;;;;
                                  -13832;2;0;false;false;0;0;0;;;
                                  -13834;1;0;false;false;;;;;;
                                  -13835;1;0;false;false;0;0;0;;;
                                  -13836;6;0;false;false;;;;;;
                                  -13842;15;0;false;false;0;0;0;;;
                                  -13857;1;0;false;false;;;;;;
                                  -13858;1;0;false;false;0;0;0;;;
                                  -13859;1;0;false;false;;;;;;
                                  -13860;26;0;false;false;0;0;0;;;
                                  -13886;1;0;false;false;;;;;;
                                  -13887;1;0;false;false;0;0;0;;;
                                  -13888;1;0;false;false;;;;;;
                                  -13889;3;0;false;false;0;0;0;;;
                                  -13892;5;0;false;false;;;;;;
                                  -13897;1;0;false;false;0;0;0;;;
                                  -13898;5;0;false;false;;;;;;
                                  -13903;4;1;false;false;127;0;85;;;
                                  -13907;1;0;false;false;;;;;;
                                  -13908;1;0;false;false;0;0;0;;;
                                  -13909;6;0;false;false;;;;;;
                                  -13915;15;0;false;false;0;0;0;;;
                                  -13930;1;0;false;false;;;;;;
                                  -13931;1;0;false;false;0;0;0;;;
                                  -13932;1;0;false;false;;;;;;
                                  -13933;24;0;false;false;0;0;0;;;
                                  -13957;5;0;false;false;;;;;;
                                  -13962;1;0;false;false;0;0;0;;;
                                  -13963;5;0;false;false;;;;;;
                                  -13968;45;0;false;false;0;0;0;;;
                                  -14013;1;0;false;false;;;;;;
                                  -14014;2;0;false;false;0;0;0;;;
                                  -14016;1;0;false;false;;;;;;
                                  -14017;35;0;false;false;0;0;0;;;
                                  -14052;1;0;false;false;;;;;;
                                  -14053;15;0;false;false;0;0;0;;;
                                  -14068;1;0;false;false;;;;;;
                                  -14069;1;0;false;false;0;0;0;;;
                                  -14070;1;0;false;false;;;;;;
                                  -14071;15;0;false;false;0;0;0;;;
                                  -14086;5;0;false;false;;;;;;
                                  -14091;12;0;false;false;0;0;0;;;
                                  -14103;1;0;false;false;;;;;;
                                  -14104;1;0;false;false;0;0;0;;;
                                  -14105;1;0;false;false;;;;;;
                                  -14106;16;0;false;false;0;0;0;;;
                                  -14122;4;0;false;false;;;;;;
                                  -14126;1;0;false;false;0;0;0;;;
                                  -14127;3;0;false;false;;;;;;
                                  -14130;1;0;false;false;0;0;0;;;
                                  -14131;3;0;false;false;;;;;;
                                  -14134;3;0;false;false;63;95;191;;;
                                  -14137;4;0;false;false;;;;;;
                                  -14141;1;0;false;false;63;95;191;;;
                                  -14142;1;0;false;false;;;;;;
                                  -14143;8;0;false;false;63;95;191;;;
                                  -14151;1;0;false;false;;;;;;
                                  -14152;3;0;false;false;63;95;191;;;
                                  -14155;1;0;false;false;;;;;;
                                  -14156;7;0;false;false;63;95;191;;;
                                  -14163;1;0;false;false;;;;;;
                                  -14164;6;0;false;false;63;95;191;;;
                                  -14170;1;0;false;false;;;;;;
                                  -14171;2;0;false;false;63;95;191;;;
                                  -14173;1;0;false;false;;;;;;
                                  -14174;3;0;false;false;63;95;191;;;
                                  -14177;1;0;false;false;;;;;;
                                  -14178;6;0;false;false;63;95;191;;;
                                  -14184;1;0;false;false;;;;;;
                                  -14185;4;0;false;false;63;95;191;;;
                                  -14189;1;0;false;false;;;;;;
                                  -14190;11;0;false;false;63;95;191;;;
                                  -14201;1;0;false;false;;;;;;
                                  -14202;3;0;false;false;63;95;191;;;
                                  -14205;5;0;false;false;;;;;;
                                  -14210;1;0;false;false;63;95;191;;;
                                  -14211;1;0;false;false;;;;;;
                                  -14212;4;0;false;false;63;95;191;;;
                                  -14216;1;0;false;false;;;;;;
                                  -14217;6;0;false;false;63;95;191;;;
                                  -14223;1;0;false;false;;;;;;
                                  -14224;4;0;false;false;63;95;191;;;
                                  -14228;1;0;false;false;;;;;;
                                  -14229;7;0;false;false;63;95;191;;;
                                  -14236;1;0;false;false;;;;;;
                                  -14237;7;0;false;false;63;95;191;;;
                                  -14244;4;0;false;false;;;;;;
                                  -14248;2;0;false;false;63;95;191;;;
                                  -14250;3;0;false;false;;;;;;
                                  -14253;4;1;false;false;127;0;85;;;
                                  -14257;1;0;false;false;;;;;;
                                  -14258;21;0;false;false;0;0;0;;;
                                  -14279;1;0;false;false;;;;;;
                                  -14280;1;0;false;false;0;0;0;;;
                                  -14281;4;0;false;false;;;;;;
                                  -14285;11;0;false;false;0;0;0;;;
                                  -14296;1;0;false;false;;;;;;
                                  -14297;6;0;false;false;0;0;0;;;
                                  -14303;1;0;false;false;;;;;;
                                  -14304;1;0;false;false;0;0;0;;;
                                  -14305;1;0;false;false;;;;;;
                                  -14306;27;0;false;false;0;0;0;;;
                                  -14333;4;0;false;false;;;;;;
                                  -14337;13;0;false;false;0;0;0;;;
                                  -14350;1;0;false;false;;;;;;
                                  -14351;1;0;false;false;0;0;0;;;
                                  -14352;1;0;false;false;;;;;;
                                  -14353;3;1;false;false;127;0;85;;;
                                  -14356;1;0;false;false;;;;;;
                                  -14357;12;0;false;false;0;0;0;;;
                                  -14369;4;0;false;false;;;;;;
                                  -14373;5;1;false;false;127;0;85;;;
                                  -14378;1;0;false;false;;;;;;
                                  -14379;26;0;false;false;0;0;0;;;
                                  -14405;1;0;false;false;;;;;;
                                  -14406;1;0;false;false;0;0;0;;;
                                  -14407;5;0;false;false;;;;;;
                                  -14412;15;0;false;false;0;0;0;;;
                                  -14427;1;0;false;false;;;;;;
                                  -14428;5;0;false;false;0;0;0;;;
                                  -14433;1;0;false;false;;;;;;
                                  -14434;1;0;false;false;0;0;0;;;
                                  -14435;1;0;false;false;;;;;;
                                  -14436;17;0;false;false;0;0;0;;;
                                  -14453;1;0;false;false;;;;;;
                                  -14454;21;0;false;false;0;0;0;;;
                                  -14475;5;0;false;false;;;;;;
                                  -14480;20;0;false;false;0;0;0;;;
                                  -14500;1;0;false;false;;;;;;
                                  -14501;1;0;false;false;0;0;0;;;
                                  -14502;1;0;false;false;;;;;;
                                  -14503;38;0;false;false;0;0;0;;;
                                  -14541;4;0;false;false;;;;;;
                                  -14545;1;0;false;false;0;0;0;;;
                                  -14546;8;0;false;false;;;;;;
                                  -14554;6;0;false;false;0;0;0;;;
                                  -14560;1;0;false;false;;;;;;
                                  -14561;1;0;false;false;0;0;0;;;
                                  -14562;1;0;false;false;;;;;;
                                  -14563;22;0;false;false;0;0;0;;;
                                  -14585;4;0;false;false;;;;;;
                                  -14589;5;1;false;false;127;0;85;;;
                                  -14594;1;0;false;false;;;;;;
                                  -14595;26;0;false;false;0;0;0;;;
                                  -14621;1;0;false;false;;;;;;
                                  -14622;1;0;false;false;0;0;0;;;
                                  -14623;5;0;false;false;;;;;;
                                  -14628;15;0;false;false;0;0;0;;;
                                  -14643;1;0;false;false;;;;;;
                                  -14644;5;0;false;false;0;0;0;;;
                                  -14649;1;0;false;false;;;;;;
                                  -14650;1;0;false;false;0;0;0;;;
                                  -14651;1;0;false;false;;;;;;
                                  -14652;17;0;false;false;0;0;0;;;
                                  -14669;1;0;false;false;;;;;;
                                  -14670;21;0;false;false;0;0;0;;;
                                  -14691;5;0;false;false;;;;;;
                                  -14696;3;1;false;false;127;0;85;;;
                                  -14699;1;0;false;false;;;;;;
                                  -14700;1;0;false;false;0;0;0;;;
                                  -14701;3;1;false;false;127;0;85;;;
                                  -14704;1;0;false;false;;;;;;
                                  -14705;1;0;false;false;0;0;0;;;
                                  -14706;1;0;false;false;;;;;;
                                  -14707;1;0;false;false;0;0;0;;;
                                  -14708;1;0;false;false;;;;;;
                                  -14709;2;0;false;false;0;0;0;;;
                                  -14711;1;0;false;false;;;;;;
                                  -14712;1;0;false;false;0;0;0;;;
                                  -14713;1;0;false;false;;;;;;
                                  -14714;1;0;false;false;0;0;0;;;
                                  -14715;1;0;false;false;;;;;;
                                  -14716;20;0;false;false;0;0;0;;;
                                  -14736;1;0;false;false;;;;;;
                                  -14737;4;0;false;false;0;0;0;;;
                                  -14741;1;0;false;false;;;;;;
                                  -14742;1;0;false;false;0;0;0;;;
                                  -14743;6;0;false;false;;;;;;
                                  -14749;10;0;false;false;0;0;0;;;
                                  -14759;1;0;false;false;;;;;;
                                  -14760;5;0;false;false;0;0;0;;;
                                  -14765;1;0;false;false;;;;;;
                                  -14766;1;0;false;false;0;0;0;;;
                                  -14767;1;0;false;false;;;;;;
                                  -14768;16;0;false;false;0;0;0;;;
                                  -14784;6;0;false;false;;;;;;
                                  -14790;5;0;false;false;0;0;0;;;
                                  -14795;1;0;false;false;;;;;;
                                  -14796;17;0;false;false;0;0;0;;;
                                  -14813;1;0;false;false;;;;;;
                                  -14814;1;0;false;false;0;0;0;;;
                                  -14815;1;0;false;false;;;;;;
                                  -14816;34;0;false;false;0;0;0;;;
                                  -14850;6;0;false;false;;;;;;
                                  -14856;5;0;false;false;0;0;0;;;
                                  -14861;1;0;false;false;;;;;;
                                  -14862;17;0;false;false;0;0;0;;;
                                  -14879;1;0;false;false;;;;;;
                                  -14880;1;0;false;false;0;0;0;;;
                                  -14881;1;0;false;false;;;;;;
                                  -14882;34;0;false;false;0;0;0;;;
                                  -14916;12;0;false;false;;;;;;
                                  -14928;2;1;false;false;127;0;85;;;
                                  -14930;1;0;false;false;;;;;;
                                  -14931;18;0;false;false;0;0;0;;;
                                  -14949;1;0;false;false;;;;;;
                                  -14950;2;0;false;false;0;0;0;;;
                                  -14952;1;0;false;false;;;;;;
                                  -14953;16;0;false;false;0;0;0;;;
                                  -14969;1;0;false;false;;;;;;
                                  -14970;2;0;false;false;0;0;0;;;
                                  -14972;8;0;false;false;;;;;;
                                  -14980;17;0;false;false;0;0;0;;;
                                  -14997;1;0;false;false;;;;;;
                                  -14998;2;0;false;false;0;0;0;;;
                                  -15000;1;0;false;false;;;;;;
                                  -15001;17;0;false;false;0;0;0;;;
                                  -15018;1;0;false;false;;;;;;
                                  -15019;1;0;false;false;0;0;0;;;
                                  -15020;7;0;false;false;;;;;;
                                  -15027;5;0;false;false;0;0;0;;;
                                  -15032;1;0;false;false;;;;;;
                                  -15033;1;0;false;false;0;0;0;;;
                                  -15034;1;0;false;false;;;;;;
                                  -15035;12;0;false;false;0;0;0;;;
                                  -15047;1;0;false;false;;;;;;
                                  -15048;14;0;false;false;0;0;0;;;
                                  -15062;7;0;false;false;;;;;;
                                  -15069;16;0;false;false;0;0;0;;;
                                  -15085;1;0;false;false;;;;;;
                                  -15086;1;0;false;false;0;0;0;;;
                                  -15087;1;0;false;false;;;;;;
                                  -15088;18;0;false;false;0;0;0;;;
                                  -15106;7;0;false;false;;;;;;
                                  -15113;16;0;false;false;0;0;0;;;
                                  -15129;1;0;false;false;;;;;;
                                  -15130;1;0;false;false;0;0;0;;;
                                  -15131;1;0;false;false;;;;;;
                                  -15132;18;0;false;false;0;0;0;;;
                                  -15150;7;0;false;false;;;;;;
                                  -15157;15;0;false;false;0;0;0;;;
                                  -15172;1;0;false;false;;;;;;
                                  -15173;1;0;false;false;0;0;0;;;
                                  -15174;1;0;false;false;;;;;;
                                  -15175;6;0;false;false;0;0;0;;;
                                  -15181;6;0;false;false;;;;;;
                                  -15187;1;0;false;false;0;0;0;;;
                                  -15188;5;0;false;false;;;;;;
                                  -15193;1;0;false;false;0;0;0;;;
                                  -15194;4;0;false;false;;;;;;
                                  -15198;1;0;false;false;0;0;0;;;
                                  -15199;5;0;false;false;;;;;;
                                  -15204;1;0;false;false;0;0;0;;;
                                  -15205;3;0;false;false;;;;;;
                                  -15208;3;0;false;false;63;95;191;;;
                                  -15211;4;0;false;false;;;;;;
                                  -15215;1;0;false;false;63;95;191;;;
                                  -15216;1;0;false;false;;;;;;
                                  -15217;8;0;false;false;63;95;191;;;
                                  -15225;1;0;false;false;;;;;;
                                  -15226;2;0;false;false;63;95;191;;;
                                  -15228;1;0;false;false;;;;;;
                                  -15229;3;0;false;false;63;95;191;;;
                                  -15232;1;0;false;false;;;;;;
                                  -15233;9;0;false;false;63;95;191;;;
                                  -15242;1;0;false;false;;;;;;
                                  -15243;3;0;false;false;63;95;191;;;
                                  -15246;1;0;false;false;;;;;;
                                  -15247;3;0;false;false;63;95;191;;;
                                  -15250;1;0;false;false;;;;;;
                                  -15251;7;0;false;false;127;127;159;;;
                                  -15258;13;0;false;false;63;95;191;;;
                                  -15271;8;0;false;false;127;127;159;;;
                                  -15279;1;0;false;false;63;95;191;;;
                                  -15280;4;0;false;false;;;;;;
                                  -15284;2;0;false;false;63;95;191;;;
                                  -15286;3;0;false;false;;;;;;
                                  -15289;4;1;false;false;127;0;85;;;
                                  -15293;1;0;false;false;;;;;;
                                  -15294;9;0;false;false;0;0;0;;;
                                  -15303;1;0;false;false;;;;;;
                                  -15304;1;0;false;false;0;0;0;;;
                                  -15305;4;0;false;false;;;;;;
                                  -15309;2;1;false;false;127;0;85;;;
                                  -15311;1;0;false;false;;;;;;
                                  -15312;14;0;false;false;0;0;0;;;
                                  -15326;1;0;false;false;;;;;;
                                  -15327;2;0;false;false;0;0;0;;;
                                  -15329;1;0;false;false;;;;;;
                                  -15330;4;1;false;false;127;0;85;;;
                                  -15334;1;0;false;false;0;0;0;;;
                                  -15335;1;0;false;false;;;;;;
                                  -15336;1;0;false;false;0;0;0;;;
                                  -15337;5;0;false;false;;;;;;
                                  -15342;11;0;false;false;0;0;0;;;
                                  -15353;1;0;false;false;;;;;;
                                  -15354;6;0;false;false;0;0;0;;;
                                  -15360;1;0;false;false;;;;;;
                                  -15361;1;0;false;false;0;0;0;;;
                                  -15362;1;0;false;false;;;;;;
                                  -15363;25;0;false;false;0;0;0;;;
                                  -15388;10;0;false;false;;;;;;
                                  -15398;5;1;false;false;127;0;85;;;
                                  -15403;1;0;false;false;;;;;;
                                  -15404;26;0;false;false;0;0;0;;;
                                  -15430;1;0;false;false;;;;;;
                                  -15431;1;0;false;false;0;0;0;;;
                                  -15432;6;0;false;false;;;;;;
                                  -15438;5;0;false;false;0;0;0;;;
                                  -15443;1;0;false;false;;;;;;
                                  -15444;5;0;false;false;0;0;0;;;
                                  -15449;1;0;false;false;;;;;;
                                  -15450;1;0;false;false;0;0;0;;;
                                  -15451;1;0;false;false;;;;;;
                                  -15452;7;0;false;false;0;0;0;;;
                                  -15459;1;0;false;false;;;;;;
                                  -15460;21;0;false;false;0;0;0;;;
                                  -15481;6;0;false;false;;;;;;
                                  -15487;16;0;false;false;0;0;0;;;
                                  -15503;5;0;false;false;;;;;;
                                  -15508;1;0;false;false;0;0;0;;;
                                  -15509;5;0;false;false;;;;;;
                                  -15514;13;0;false;false;0;0;0;;;
                                  -15527;1;0;false;false;;;;;;
                                  -15528;1;0;false;false;0;0;0;;;
                                  -15529;1;0;false;false;;;;;;
                                  -15530;4;1;false;false;127;0;85;;;
                                  -15534;1;0;false;false;0;0;0;;;
                                  -15535;4;0;false;false;;;;;;
                                  -15539;1;0;false;false;0;0;0;;;
                                  -15540;4;0;false;false;;;;;;
                                  -15544;2;1;false;false;127;0;85;;;
                                  -15546;1;0;false;false;;;;;;
                                  -15547;3;0;false;false;0;0;0;;;
                                  -15550;1;0;false;false;;;;;;
                                  -15551;2;0;false;false;0;0;0;;;
                                  -15553;1;0;false;false;;;;;;
                                  -15554;4;1;false;false;127;0;85;;;
                                  -15558;1;0;false;false;0;0;0;;;
                                  -15559;1;0;false;false;;;;;;
                                  -15560;1;0;false;false;0;0;0;;;
                                  -15561;5;0;false;false;;;;;;
                                  -15566;13;0;false;false;0;0;0;;;
                                  -15579;5;0;false;false;;;;;;
                                  -15584;2;0;false;false;0;0;0;;;
                                  -15586;1;0;false;false;;;;;;
                                  -15587;1;0;false;false;0;0;0;;;
                                  -15588;1;0;false;false;;;;;;
                                  -15589;4;1;false;false;127;0;85;;;
                                  -15593;1;0;false;false;0;0;0;;;
                                  -15594;4;0;false;false;;;;;;
                                  -15598;1;0;false;false;0;0;0;;;
                                  -15599;4;0;false;false;;;;;;
                                  -15603;2;1;false;false;127;0;85;;;
                                  -15605;1;0;false;false;;;;;;
                                  -15606;12;0;false;false;0;0;0;;;
                                  -15618;1;0;false;false;;;;;;
                                  -15619;2;0;false;false;0;0;0;;;
                                  -15621;1;0;false;false;;;;;;
                                  -15622;4;1;false;false;127;0;85;;;
                                  -15626;1;0;false;false;0;0;0;;;
                                  -15627;1;0;false;false;;;;;;
                                  -15628;1;0;false;false;0;0;0;;;
                                  -15629;5;0;false;false;;;;;;
                                  -15634;22;0;false;false;0;0;0;;;
                                  -15656;5;0;false;false;;;;;;
                                  -15661;11;0;false;false;0;0;0;;;
                                  -15672;1;0;false;false;;;;;;
                                  -15673;1;0;false;false;0;0;0;;;
                                  -15674;1;0;false;false;;;;;;
                                  -15675;4;1;false;false;127;0;85;;;
                                  -15679;1;0;false;false;0;0;0;;;
                                  -15680;4;0;false;false;;;;;;
                                  -15684;1;0;false;false;0;0;0;;;
                                  -15685;4;0;false;false;;;;;;
                                  -15689;2;1;false;false;127;0;85;;;
                                  -15691;1;0;false;false;;;;;;
                                  -15692;9;0;false;false;0;0;0;;;
                                  -15701;1;0;false;false;;;;;;
                                  -15702;2;0;false;false;0;0;0;;;
                                  -15704;1;0;false;false;;;;;;
                                  -15705;4;1;false;false;127;0;85;;;
                                  -15709;1;0;false;false;0;0;0;;;
                                  -15710;1;0;false;false;;;;;;
                                  -15711;1;0;false;false;0;0;0;;;
                                  -15712;5;0;false;false;;;;;;
                                  -15717;19;0;false;false;0;0;0;;;
                                  -15736;5;0;false;false;;;;;;
                                  -15741;8;0;false;false;0;0;0;;;
                                  -15749;1;0;false;false;;;;;;
                                  -15750;1;0;false;false;0;0;0;;;
                                  -15751;1;0;false;false;;;;;;
                                  -15752;4;1;false;false;127;0;85;;;
                                  -15756;1;0;false;false;0;0;0;;;
                                  -15757;4;0;false;false;;;;;;
                                  -15761;1;0;false;false;0;0;0;;;
                                  -15762;3;0;false;false;;;;;;
                                  -15765;1;0;false;false;0;0;0;;;
                                  -15766;3;0;false;false;;;;;;
                                  -15769;3;0;false;false;63;95;191;;;
                                  -15772;4;0;false;false;;;;;;
                                  -15776;1;0;false;false;63;95;191;;;
                                  -15777;1;0;false;false;;;;;;
                                  -15778;6;0;false;false;63;95;191;;;
                                  -15784;1;0;false;false;;;;;;
                                  -15785;8;0;false;false;63;95;191;;;
                                  -15793;1;0;false;false;;;;;;
                                  -15794;3;0;false;false;63;95;191;;;
                                  -15797;1;0;false;false;;;;;;
                                  -15798;9;0;false;false;63;95;191;;;
                                  -15807;1;0;false;false;;;;;;
                                  -15808;5;0;false;false;63;95;191;;;
                                  -15813;4;0;false;false;;;;;;
                                  -15817;1;0;false;false;63;95;191;;;
                                  -15818;5;0;false;false;;;;;;
                                  -15823;1;0;false;false;63;95;191;;;
                                  -15824;1;0;false;false;;;;;;
                                  -15825;7;1;false;false;127;159;191;;;
                                  -15832;4;0;false;false;63;95;191;;;
                                  -15836;1;0;false;false;;;;;;
                                  -15837;4;0;false;false;63;95;191;;;
                                  -15841;1;0;false;false;;;;;;
                                  -15842;4;0;false;false;63;95;191;;;
                                  -15846;1;0;false;false;;;;;;
                                  -15847;3;0;false;false;63;95;191;;;
                                  -15850;1;0;false;false;;;;;;
                                  -15851;7;0;false;false;63;95;191;;;
                                  -15858;4;0;false;false;;;;;;
                                  -15862;2;0;false;false;63;95;191;;;
                                  -15864;3;0;false;false;;;;;;
                                  -15867;4;1;false;false;127;0;85;;;
                                  -15871;1;0;false;false;;;;;;
                                  -15872;8;0;false;false;0;0;0;;;
                                  -15880;3;1;false;false;127;0;85;;;
                                  -15883;1;0;false;false;;;;;;
                                  -15884;5;0;false;false;0;0;0;;;
                                  -15889;1;0;false;false;;;;;;
                                  -15890;1;0;false;false;0;0;0;;;
                                  -15891;4;0;false;false;;;;;;
                                  -15895;21;0;false;false;0;0;0;;;
                                  -15916;1;0;false;false;;;;;;
                                  -15917;5;1;false;false;127;0;85;;;
                                  -15922;2;0;false;false;0;0;0;;;
                                  -15924;4;0;false;false;;;;;;
                                  -15928;18;0;false;false;0;0;0;;;
                                  -15946;3;0;false;false;;;;;;
                                  -15949;1;0;false;false;0;0;0;;;
                                  -15950;3;0;false;false;;;;;;
                                  -15953;3;0;false;false;63;95;191;;;
                                  -15956;4;0;false;false;;;;;;
                                  -15960;1;0;false;false;63;95;191;;;
                                  -15961;1;0;false;false;;;;;;
                                  -15962;7;0;false;false;63;95;191;;;
                                  -15969;1;0;false;false;;;;;;
                                  -15970;1;0;false;false;63;95;191;;;
                                  -15971;1;0;false;false;;;;;;
                                  -15972;7;0;false;false;127;127;159;;;
                                  -15979;13;0;false;false;63;95;191;;;
                                  -15992;8;0;false;false;127;127;159;;;
                                  -16000;1;0;false;false;;;;;;
                                  -16001;3;0;false;false;63;95;191;;;
                                  -16004;1;0;false;false;;;;;;
                                  -16005;9;0;false;false;63;95;191;;;
                                  -16014;1;0;false;false;;;;;;
                                  -16015;3;0;false;false;63;95;191;;;
                                  -16018;1;0;false;false;;;;;;
                                  -16019;4;0;false;false;63;95;191;;;
                                  -16023;1;0;false;false;;;;;;
                                  -16024;5;0;false;false;63;95;191;;;
                                  -16029;4;0;false;false;;;;;;
                                  -16033;1;0;false;false;63;95;191;;;
                                  -16034;1;0;false;false;;;;;;
                                  -16035;2;0;false;false;63;95;191;;;
                                  -16037;1;0;false;false;;;;;;
                                  -16038;6;0;false;false;63;95;191;;;
                                  -16044;4;0;false;false;;;;;;
                                  -16048;2;0;false;false;63;95;191;;;
                                  -16050;3;0;false;false;;;;;;
                                  -16053;4;1;false;false;127;0;85;;;
                                  -16057;1;0;false;false;;;;;;
                                  -16058;20;0;false;false;0;0;0;;;
                                  -16078;1;0;false;false;;;;;;
                                  -16079;1;0;false;false;0;0;0;;;
                                  -16080;4;0;false;false;;;;;;
                                  -16084;9;0;false;false;0;0;0;;;
                                  -16093;1;0;false;false;;;;;;
                                  -16094;4;0;false;false;0;0;0;;;
                                  -16098;1;0;false;false;;;;;;
                                  -16099;1;0;false;false;0;0;0;;;
                                  -16100;1;0;false;false;;;;;;
                                  -16101;22;0;false;false;0;0;0;;;
                                  -16123;1;0;false;false;;;;;;
                                  -16124;2;0;false;false;0;0;0;;;
                                  -16126;1;0;false;false;;;;;;
                                  -16127;2;0;false;false;0;0;0;;;
                                  -16129;1;0;false;false;;;;;;
                                  -16130;3;0;false;false;0;0;0;;;
                                  -16133;4;0;false;false;;;;;;
                                  -16137;5;0;false;false;0;0;0;;;
                                  -16142;1;0;false;false;;;;;;
                                  -16143;3;0;false;false;0;0;0;;;
                                  -16146;1;0;false;false;;;;;;
                                  -16147;1;0;false;false;0;0;0;;;
                                  -16148;1;0;false;false;;;;;;
                                  -16149;17;0;false;false;0;0;0;;;
                                  -16166;8;0;false;false;;;;;;
                                  -16174;11;0;false;false;0;0;0;;;
                                  -16185;1;0;false;false;;;;;;
                                  -16186;1;0;false;false;0;0;0;;;
                                  -16187;1;0;false;false;;;;;;
                                  -16188;3;1;false;false;127;0;85;;;
                                  -16191;1;0;false;false;;;;;;
                                  -16192;13;0;false;false;0;0;0;;;
                                  -16205;1;0;false;false;;;;;;
                                  -16206;26;0;false;false;0;0;0;;;
                                  -16232;1;0;false;false;;;;;;
                                  -16233;28;0;false;false;0;0;0;;;
                                  -16261;1;0;false;false;;;;;;
                                  -16262;12;0;false;false;0;0;0;;;
                                  -16274;4;0;false;false;;;;;;
                                  -16278;10;0;false;false;0;0;0;;;
                                  -16288;1;0;false;false;;;;;;
                                  -16289;1;0;false;false;0;0;0;;;
                                  -16290;1;0;false;false;;;;;;
                                  -16291;24;0;false;false;0;0;0;;;
                                  -16315;4;0;false;false;;;;;;
                                  -16319;9;0;false;false;0;0;0;;;
                                  -16328;1;0;false;false;;;;;;
                                  -16329;1;0;false;false;0;0;0;;;
                                  -16330;1;0;false;false;;;;;;
                                  -16331;17;0;false;false;0;0;0;;;
                                  -16348;4;0;false;false;;;;;;
                                  -16352;32;0;false;false;63;127;95;;;
                                  -16384;2;0;false;false;;;;;;
                                  -16386;12;0;false;false;0;0;0;;;
                                  -16398;1;0;false;false;;;;;;
                                  -16399;1;0;false;false;0;0;0;;;
                                  -16400;1;0;false;false;;;;;;
                                  -16401;5;0;false;false;0;0;0;;;
                                  -16406;1;0;false;false;;;;;;
                                  -16407;1;0;false;false;0;0;0;;;
                                  -16408;1;0;false;false;;;;;;
                                  -16409;7;0;false;false;0;0;0;;;
                                  -16416;9;0;false;false;;;;;;
                                  -16425;12;0;false;false;0;0;0;;;
                                  -16437;1;0;false;false;;;;;;
                                  -16438;1;0;false;false;0;0;0;;;
                                  -16439;1;0;false;false;;;;;;
                                  -16440;5;0;false;false;0;0;0;;;
                                  -16445;1;0;false;false;;;;;;
                                  -16446;1;0;false;false;0;0;0;;;
                                  -16447;1;0;false;false;;;;;;
                                  -16448;7;0;false;false;0;0;0;;;
                                  -16455;4;0;false;false;;;;;;
                                  -16459;16;0;false;false;0;0;0;;;
                                  -16475;1;0;false;false;;;;;;
                                  -16476;2;0;false;false;0;0;0;;;
                                  -16478;1;0;false;false;;;;;;
                                  -16479;13;0;false;false;0;0;0;;;
                                  -16492;1;0;false;false;;;;;;
                                  -16493;1;0;false;false;0;0;0;;;
                                  -16494;1;0;false;false;;;;;;
                                  -16495;12;0;false;false;0;0;0;;;
                                  -16507;4;0;false;false;;;;;;
                                  -16511;17;0;false;false;0;0;0;;;
                                  -16528;1;0;false;false;;;;;;
                                  -16529;2;0;false;false;0;0;0;;;
                                  -16531;1;0;false;false;;;;;;
                                  -16532;13;0;false;false;0;0;0;;;
                                  -16545;1;0;false;false;;;;;;
                                  -16546;1;0;false;false;0;0;0;;;
                                  -16547;1;0;false;false;;;;;;
                                  -16548;13;0;false;false;0;0;0;;;
                                  -16561;9;0;false;false;;;;;;
                                  -16570;61;0;false;false;63;127;95;;;
                                  -16631;2;0;false;false;;;;;;
                                  -16633;3;1;false;false;127;0;85;;;
                                  -16636;1;0;false;false;;;;;;
                                  -16637;5;0;false;false;0;0;0;;;
                                  -16642;1;0;false;false;;;;;;
                                  -16643;1;0;false;false;0;0;0;;;
                                  -16644;1;0;false;false;;;;;;
                                  -16645;8;0;false;false;0;0;0;;;
                                  -16653;1;0;false;false;;;;;;
                                  -16654;1;0;false;false;0;0;0;;;
                                  -16655;1;0;false;false;;;;;;
                                  -16656;17;0;false;false;0;0;0;;;
                                  -16673;1;0;false;false;;;;;;
                                  -16674;1;0;false;false;0;0;0;;;
                                  -16675;1;0;false;false;;;;;;
                                  -16676;18;0;false;false;0;0;0;;;
                                  -16694;4;0;false;false;;;;;;
                                  -16698;2;0;false;false;0;0;0;;;
                                  -16700;1;0;false;false;;;;;;
                                  -16701;1;0;false;false;0;0;0;;;
                                  -16702;1;0;false;false;;;;;;
                                  -16703;3;1;false;false;127;0;85;;;
                                  -16706;1;0;false;false;;;;;;
                                  -16707;11;0;false;false;0;0;0;;;
                                  -16718;1;0;false;false;;;;;;
                                  -16719;7;0;false;false;0;0;0;;;
                                  -16726;4;0;false;false;;;;;;
                                  -16730;24;0;false;false;0;0;0;;;
                                  -16754;4;0;false;false;;;;;;
                                  -16758;8;0;false;false;0;0;0;;;
                                  -16766;1;0;false;false;;;;;;
                                  -16767;1;0;false;false;0;0;0;;;
                                  -16768;1;0;false;false;;;;;;
                                  -16769;3;1;false;false;127;0;85;;;
                                  -16772;1;0;false;false;;;;;;
                                  -16773;14;0;false;false;0;0;0;;;
                                  -16787;5;0;false;false;;;;;;
                                  -16792;8;0;false;false;0;0;0;;;
                                  -16800;1;0;false;false;;;;;;
                                  -16801;12;0;false;false;0;0;0;;;
                                  -16813;1;0;false;false;;;;;;
                                  -16814;3;0;false;false;0;0;0;;;
                                  -16817;1;0;false;false;;;;;;
                                  -16818;15;0;false;false;0;0;0;;;
                                  -16833;5;0;false;false;;;;;;
                                  -16838;16;0;false;false;0;0;0;;;
                                  -16854;1;0;false;false;;;;;;
                                  -16855;11;0;false;false;0;0;0;;;
                                  -16866;1;0;false;false;;;;;;
                                  -16867;13;0;false;false;0;0;0;;;
                                  -16880;6;0;false;false;;;;;;
                                  -16886;17;0;false;false;0;0;0;;;
                                  -16903;1;0;false;false;;;;;;
                                  -16904;12;0;false;false;0;0;0;;;
                                  -16916;4;0;false;false;;;;;;
                                  -16920;2;1;false;false;127;0;85;;;
                                  -16922;1;0;false;false;;;;;;
                                  -16923;20;0;false;false;0;0;0;;;
                                  -16943;1;0;false;false;;;;;;
                                  -16944;2;0;false;false;0;0;0;;;
                                  -16946;1;0;false;false;;;;;;
                                  -16947;4;1;false;false;127;0;85;;;
                                  -16951;1;0;false;false;0;0;0;;;
                                  -16952;1;0;false;false;;;;;;
                                  -16953;1;0;false;false;0;0;0;;;
                                  -16954;5;0;false;false;;;;;;
                                  -16959;3;1;false;false;127;0;85;;;
                                  -16962;1;0;false;false;;;;;;
                                  -16963;10;0;false;false;0;0;0;;;
                                  -16973;1;0;false;false;;;;;;
                                  -16974;1;0;false;false;0;0;0;;;
                                  -16975;1;0;false;false;;;;;;
                                  -16976;25;0;false;false;0;0;0;;;
                                  -17001;5;0;false;false;;;;;;
                                  -17006;12;0;false;false;0;0;0;;;
                                  -17018;1;0;false;false;;;;;;
                                  -17019;2;0;false;false;0;0;0;;;
                                  -17021;1;0;false;false;;;;;;
                                  -17022;10;0;false;false;0;0;0;;;
                                  -17032;1;0;false;false;;;;;;
                                  -17033;1;0;false;false;0;0;0;;;
                                  -17034;1;0;false;false;;;;;;
                                  -17035;2;0;false;false;0;0;0;;;
                                  -17037;5;0;false;false;;;;;;
                                  -17042;17;0;false;false;0;0;0;;;
                                  -17059;1;0;false;false;;;;;;
                                  -17060;2;0;false;false;0;0;0;;;
                                  -17062;1;0;false;false;;;;;;
                                  -17063;10;0;false;false;0;0;0;;;
                                  -17073;1;0;false;false;;;;;;
                                  -17074;1;0;false;false;0;0;0;;;
                                  -17075;1;0;false;false;;;;;;
                                  -17076;2;0;false;false;0;0;0;;;
                                  -17078;4;0;false;false;;;;;;
                                  -17082;1;0;false;false;0;0;0;;;
                                  -17083;4;0;false;false;;;;;;
                                  -17087;2;1;false;false;127;0;85;;;
                                  -17089;1;0;false;false;;;;;;
                                  -17090;20;0;false;false;0;0;0;;;
                                  -17110;1;0;false;false;;;;;;
                                  -17111;2;0;false;false;0;0;0;;;
                                  -17113;1;0;false;false;;;;;;
                                  -17114;4;1;false;false;127;0;85;;;
                                  -17118;1;0;false;false;0;0;0;;;
                                  -17119;1;0;false;false;;;;;;
                                  -17120;1;0;false;false;0;0;0;;;
                                  -17121;5;0;false;false;;;;;;
                                  -17126;17;0;false;false;0;0;0;;;
                                  -17143;1;0;false;false;;;;;;
                                  -17144;2;0;false;false;0;0;0;;;
                                  -17146;1;0;false;false;;;;;;
                                  -17147;24;0;false;false;0;0;0;;;
                                  -17171;1;0;false;false;;;;;;
                                  -17172;1;0;false;false;0;0;0;;;
                                  -17173;1;0;false;false;;;;;;
                                  -17174;2;0;false;false;0;0;0;;;
                                  -17176;4;0;false;false;;;;;;
                                  -17180;1;0;false;false;0;0;0;;;
                                  -17181;4;0;false;false;;;;;;
                                  -17185;8;0;false;false;0;0;0;;;
                                  -17193;1;0;false;false;;;;;;
                                  -17194;1;0;false;false;0;0;0;;;
                                  -17195;1;0;false;false;;;;;;
                                  -17196;17;0;false;false;0;0;0;;;
                                  -17213;1;0;false;false;;;;;;
                                  -17214;1;0;false;false;0;0;0;;;
                                  -17215;1;0;false;false;;;;;;
                                  -17216;25;0;false;false;0;0;0;;;
                                  -17241;4;0;false;false;;;;;;
                                  -17245;17;0;false;false;0;0;0;;;
                                  -17262;1;0;false;false;;;;;;
                                  -17263;7;0;false;false;0;0;0;;;
                                  -17270;1;0;false;false;;;;;;
                                  -17271;1;0;false;false;0;0;0;;;
                                  -17272;1;0;false;false;;;;;;
                                  -17273;22;0;false;false;0;0;0;;;
                                  -17295;4;0;false;false;;;;;;
                                  -17299;9;0;false;false;0;0;0;;;
                                  -17308;1;0;false;false;;;;;;
                                  -17309;1;0;false;false;0;0;0;;;
                                  -17310;1;0;false;false;;;;;;
                                  -17311;2;0;false;false;0;0;0;;;
                                  -17313;4;0;false;false;;;;;;
                                  -17317;2;1;false;false;127;0;85;;;
                                  -17319;1;0;false;false;;;;;;
                                  -17320;12;0;false;false;0;0;0;;;
                                  -17332;1;0;false;false;;;;;;
                                  -17333;1;0;false;false;0;0;0;;;
                                  -17334;5;0;false;false;;;;;;
                                  -17339;7;0;false;false;0;0;0;;;
                                  -17346;1;0;false;false;;;;;;
                                  -17347;1;0;false;false;0;0;0;;;
                                  -17348;1;0;false;false;;;;;;
                                  -17349;2;0;false;false;0;0;0;;;
                                  -17351;4;0;false;false;;;;;;
                                  -17355;1;0;false;false;0;0;0;;;
                                  -17356;4;0;false;false;;;;;;
                                  -17360;4;1;false;false;127;0;85;;;
                                  -17364;1;0;false;false;;;;;;
                                  -17365;1;0;false;false;0;0;0;;;
                                  -17366;5;0;false;false;;;;;;
                                  -17371;7;0;false;false;0;0;0;;;
                                  -17378;1;0;false;false;;;;;;
                                  -17379;1;0;false;false;0;0;0;;;
                                  -17380;1;0;false;false;;;;;;
                                  -17381;22;0;false;false;0;0;0;;;
                                  -17403;1;0;false;false;;;;;;
                                  -17404;1;0;false;false;0;0;0;;;
                                  -17405;1;0;false;false;;;;;;
                                  -17406;2;0;false;false;0;0;0;;;
                                  -17408;4;0;false;false;;;;;;
                                  -17412;1;0;false;false;0;0;0;;;
                                  -17413;4;0;false;false;;;;;;
                                  -17417;11;0;false;false;0;0;0;;;
                                  -17428;1;0;false;false;;;;;;
                                  -17429;4;0;false;false;0;0;0;;;
                                  -17433;1;0;false;false;;;;;;
                                  -17434;1;0;false;false;0;0;0;;;
                                  -17435;1;0;false;false;;;;;;
                                  -17436;25;0;false;false;0;0;0;;;
                                  -17461;4;0;false;false;;;;;;
                                  -17465;2;1;false;false;127;0;85;;;
                                  -17467;1;0;false;false;;;;;;
                                  -17468;11;0;false;false;0;0;0;;;
                                  -17479;1;0;false;false;;;;;;
                                  -17480;2;0;false;false;0;0;0;;;
                                  -17482;1;0;false;false;;;;;;
                                  -17483;23;0;false;false;0;0;0;;;
                                  -17506;1;0;false;false;;;;;;
                                  -17507;1;0;false;false;0;0;0;;;
                                  -17508;5;0;false;false;;;;;;
                                  -17513;9;0;false;false;0;0;0;;;
                                  -17522;1;0;false;false;;;;;;
                                  -17523;1;0;false;false;0;0;0;;;
                                  -17524;1;0;false;false;;;;;;
                                  -17525;10;0;false;false;0;0;0;;;
                                  -17535;1;0;false;false;;;;;;
                                  -17536;1;0;false;false;0;0;0;;;
                                  -17537;1;0;false;false;;;;;;
                                  -17538;2;0;false;false;0;0;0;;;
                                  -17540;1;0;false;false;;;;;;
                                  -17541;1;0;false;false;0;0;0;;;
                                  -17542;1;0;false;false;;;;;;
                                  -17543;9;0;false;false;0;0;0;;;
                                  -17552;4;0;false;false;;;;;;
                                  -17556;1;0;false;false;0;0;0;;;
                                  -17557;5;0;false;false;;;;;;
                                  -17562;4;1;false;false;127;0;85;;;
                                  -17566;4;0;false;false;;;;;;
                                  -17570;2;1;false;false;127;0;85;;;
                                  -17572;1;0;false;false;;;;;;
                                  -17573;11;0;false;false;0;0;0;;;
                                  -17584;1;0;false;false;;;;;;
                                  -17585;2;0;false;false;0;0;0;;;
                                  -17587;1;0;false;false;;;;;;
                                  -17588;22;0;false;false;0;0;0;;;
                                  -17610;1;0;false;false;;;;;;
                                  -17611;1;0;false;false;0;0;0;;;
                                  -17612;5;0;false;false;;;;;;
                                  -17617;9;0;false;false;0;0;0;;;
                                  -17626;1;0;false;false;;;;;;
                                  -17627;1;0;false;false;0;0;0;;;
                                  -17628;1;0;false;false;;;;;;
                                  -17629;37;0;false;false;0;0;0;;;
                                  -17666;5;0;false;false;;;;;;
                                  -17671;2;1;false;false;127;0;85;;;
                                  -17673;1;0;false;false;;;;;;
                                  -17674;12;0;false;false;0;0;0;;;
                                  -17686;1;0;false;false;;;;;;
                                  -17687;1;0;false;false;0;0;0;;;
                                  -17688;1;0;false;false;;;;;;
                                  -17689;2;0;false;false;0;0;0;;;
                                  -17691;1;0;false;false;;;;;;
                                  -17692;1;0;false;false;0;0;0;;;
                                  -17693;6;0;false;false;;;;;;
                                  -17699;7;0;false;false;0;0;0;;;
                                  -17706;1;0;false;false;;;;;;
                                  -17707;1;0;false;false;0;0;0;;;
                                  -17708;1;0;false;false;;;;;;
                                  -17709;35;0;false;false;0;0;0;;;
                                  -17744;1;0;false;false;;;;;;
                                  -17745;1;0;false;false;0;0;0;;;
                                  -17746;1;0;false;false;;;;;;
                                  -17747;11;0;false;false;0;0;0;;;
                                  -17758;1;0;false;false;;;;;;
                                  -17759;1;0;false;false;0;0;0;;;
                                  -17760;1;0;false;false;;;;;;
                                  -17761;3;0;false;false;0;0;0;;;
                                  -17764;5;0;false;false;;;;;;
                                  -17769;1;0;false;false;0;0;0;;;
                                  -17770;6;0;false;false;;;;;;
                                  -17776;4;1;false;false;127;0;85;;;
                                  -17780;1;0;false;false;;;;;;
                                  -17781;1;0;false;false;0;0;0;;;
                                  -17782;6;0;false;false;;;;;;
                                  -17788;7;0;false;false;0;0;0;;;
                                  -17795;1;0;false;false;;;;;;
                                  -17796;1;0;false;false;0;0;0;;;
                                  -17797;1;0;false;false;;;;;;
                                  -17798;9;0;false;false;0;0;0;;;
                                  -17807;1;0;false;false;;;;;;
                                  -17808;1;0;false;false;0;0;0;;;
                                  -17809;1;0;false;false;;;;;;
                                  -17810;2;0;false;false;0;0;0;;;
                                  -17812;5;0;false;false;;;;;;
                                  -17817;1;0;false;false;0;0;0;;;
                                  -17818;4;0;false;false;;;;;;
                                  -17822;1;0;false;false;0;0;0;;;
                                  -17823;3;0;false;false;;;;;;
                                  -17826;1;0;false;false;0;0;0;;;
                                  -17827;3;0;false;false;;;;;;
                                  -17830;3;0;false;false;63;95;191;;;
                                  -17833;4;0;false;false;;;;;;
                                  -17837;1;0;false;false;63;95;191;;;
                                  -17838;1;0;false;false;;;;;;
                                  -17839;7;0;false;false;63;95;191;;;
                                  -17846;1;0;false;false;;;;;;
                                  -17847;3;0;false;false;63;95;191;;;
                                  -17850;1;0;false;false;;;;;;
                                  -17851;7;0;false;false;63;95;191;;;
                                  -17858;1;0;false;false;;;;;;
                                  -17859;5;0;false;false;63;95;191;;;
                                  -17864;1;0;false;false;;;;;;
                                  -17865;3;0;false;false;63;95;191;;;
                                  -17868;1;0;false;false;;;;;;
                                  -17869;3;0;false;false;63;95;191;;;
                                  -17872;1;0;false;false;;;;;;
                                  -17873;5;0;false;false;63;95;191;;;
                                  -17878;1;0;false;false;;;;;;
                                  -17879;7;0;false;false;63;95;191;;;
                                  -17886;1;0;false;false;;;;;;
                                  -17887;6;0;false;false;63;95;191;;;
                                  -17893;4;0;false;false;;;;;;
                                  -17897;1;0;false;false;63;95;191;;;
                                  -17898;1;0;false;false;;;;;;
                                  -17899;4;0;false;false;127;127;159;;;
                                  -17903;4;0;false;false;;;;;;
                                  -17907;1;0;false;false;63;95;191;;;
                                  -17908;1;0;false;false;;;;;;
                                  -17909;7;1;false;false;127;159;191;;;
                                  -17916;5;0;false;false;63;95;191;;;
                                  -17921;1;0;false;false;;;;;;
                                  -17922;7;0;false;false;63;95;191;;;
                                  -17929;1;0;false;false;;;;;;
                                  -17930;5;0;false;false;63;95;191;;;
                                  -17935;4;0;false;false;;;;;;
                                  -17939;1;0;false;false;63;95;191;;;
                                  -17940;1;0;false;false;;;;;;
                                  -17941;8;1;false;false;127;159;191;;;
                                  -17949;5;0;false;false;63;95;191;;;
                                  -17954;1;0;false;false;;;;;;
                                  -17955;6;0;false;false;63;95;191;;;
                                  -17961;1;0;false;false;;;;;;
                                  -17962;2;0;false;false;63;95;191;;;
                                  -17964;1;0;false;false;;;;;;
                                  -17965;3;0;false;false;63;95;191;;;
                                  -17968;1;0;false;false;;;;;;
                                  -17969;7;0;false;false;63;95;191;;;
                                  -17976;1;0;false;false;;;;;;
                                  -17977;4;0;false;false;63;95;191;;;
                                  -17981;1;0;false;false;;;;;;
                                  -17982;3;0;false;false;63;95;191;;;
                                  -17985;1;0;false;false;;;;;;
                                  -17986;4;0;false;false;63;95;191;;;
                                  -17990;1;0;false;false;;;;;;
                                  -17991;3;0;false;false;63;95;191;;;
                                  -17994;1;0;false;false;;;;;;
                                  -17995;6;0;false;false;63;95;191;;;
                                  -18001;5;0;false;false;;;;;;
                                  -18006;1;0;false;false;63;95;191;;;
                                  -18007;2;0;false;false;;;;;;
                                  -18009;2;0;false;false;63;95;191;;;
                                  -18011;1;0;false;false;;;;;;
                                  -18012;3;0;false;false;63;95;191;;;
                                  -18015;1;0;false;false;;;;;;
                                  -18016;7;0;false;false;63;95;191;;;
                                  -18023;1;0;false;false;;;;;;
                                  -18024;6;0;false;false;63;95;191;;;
                                  -18030;5;0;false;false;;;;;;
                                  -18035;2;0;false;false;63;95;191;;;
                                  -18037;3;0;false;false;;;;;;
                                  -18040;5;0;false;false;0;0;0;;;
                                  -18045;1;0;false;false;;;;;;
                                  -18046;21;0;false;false;0;0;0;;;
                                  -18067;1;0;false;false;;;;;;
                                  -18068;6;0;false;false;0;0;0;;;
                                  -18074;1;0;false;false;;;;;;
                                  -18075;1;0;false;false;0;0;0;;;
                                  -18076;4;0;false;false;;;;;;
                                  -18080;5;0;false;false;0;0;0;;;
                                  -18085;1;0;false;false;;;;;;
                                  -18086;12;0;false;false;0;0;0;;;
                                  -18098;1;0;false;false;;;;;;
                                  -18099;1;0;false;false;0;0;0;;;
                                  -18100;1;0;false;false;;;;;;
                                  -18101;4;1;false;false;127;0;85;;;
                                  -18105;1;0;false;false;0;0;0;;;
                                  -18106;8;0;false;false;;;;;;
                                  -18114;2;1;false;false;127;0;85;;;
                                  -18116;1;0;false;false;;;;;;
                                  -18117;6;0;false;false;0;0;0;;;
                                  -18123;1;0;false;false;;;;;;
                                  -18124;2;0;false;false;0;0;0;;;
                                  -18126;1;0;false;false;;;;;;
                                  -18127;4;1;false;false;127;0;85;;;
                                  -18131;1;0;false;false;0;0;0;;;
                                  -18132;1;0;false;false;;;;;;
                                  -18133;1;0;false;false;0;0;0;;;
                                  -18134;5;0;false;false;;;;;;
                                  -18139;12;0;false;false;0;0;0;;;
                                  -18151;1;0;false;false;;;;;;
                                  -18152;1;0;false;false;0;0;0;;;
                                  -18153;1;0;false;false;;;;;;
                                  -18154;7;0;false;false;0;0;0;;;
                                  -18161;1;0;false;false;;;;;;
                                  -18162;25;0;false;false;0;0;0;;;
                                  -18187;7;0;false;false;;;;;;
                                  -18194;2;1;false;false;127;0;85;;;
                                  -18196;1;0;false;false;;;;;;
                                  -18197;13;0;false;false;0;0;0;;;
                                  -18210;1;0;false;false;;;;;;
                                  -18211;2;0;false;false;0;0;0;;;
                                  -18213;1;0;false;false;;;;;;
                                  -18214;4;1;false;false;127;0;85;;;
                                  -18218;1;0;false;false;0;0;0;;;
                                  -18219;1;0;false;false;;;;;;
                                  -18220;1;0;false;false;0;0;0;;;
                                  -18221;6;0;false;false;;;;;;
                                  -18227;12;0;false;false;0;0;0;;;
                                  -18239;1;0;false;false;;;;;;
                                  -18240;1;0;false;false;0;0;0;;;
                                  -18241;1;0;false;false;;;;;;
                                  -18242;3;1;false;false;127;0;85;;;
                                  -18245;1;0;false;false;;;;;;
                                  -18246;14;0;false;false;0;0;0;;;
                                  -18260;1;0;false;false;;;;;;
                                  -18261;16;0;false;false;0;0;0;;;
                                  -18277;6;0;false;false;;;;;;
                                  -18283;24;0;false;false;0;0;0;;;
                                  -18307;1;0;false;false;;;;;;
                                  -18308;14;0;false;false;0;0;0;;;
                                  -18322;5;0;false;false;;;;;;
                                  -18327;1;0;false;false;0;0;0;;;
                                  -18328;4;0;false;false;;;;;;
                                  -18332;1;0;false;false;0;0;0;;;
                                  -18333;4;0;false;false;;;;;;
                                  -18337;6;1;false;false;127;0;85;;;
                                  -18343;1;0;false;false;;;;;;
                                  -18344;13;0;false;false;0;0;0;;;
                                  -18357;3;0;false;false;;;;;;
                                  -18360;1;0;false;false;0;0;0;;;
                                  -18361;3;0;false;false;;;;;;
                                  -18364;3;0;false;false;63;95;191;;;
                                  -18367;4;0;false;false;;;;;;
                                  -18371;1;0;false;false;63;95;191;;;
                                  -18372;1;0;false;false;;;;;;
                                  -18373;6;0;false;false;63;95;191;;;
                                  -18379;1;0;false;false;;;;;;
                                  -18380;3;0;false;false;63;95;191;;;
                                  -18383;1;0;false;false;;;;;;
                                  -18384;5;0;false;false;63;95;191;;;
                                  -18389;1;0;false;false;;;;;;
                                  -18390;2;0;false;false;63;95;191;;;
                                  -18392;1;0;false;false;;;;;;
                                  -18393;3;0;false;false;63;95;191;;;
                                  -18396;1;0;false;false;;;;;;
                                  -18397;9;0;false;false;63;95;191;;;
                                  -18406;1;0;false;false;;;;;;
                                  -18407;4;0;false;false;63;95;191;;;
                                  -18411;1;0;false;false;;;;;;
                                  -18412;6;0;false;false;63;95;191;;;
                                  -18418;4;0;false;false;;;;;;
                                  -18422;2;0;false;false;63;95;191;;;
                                  -18424;3;0;false;false;;;;;;
                                  -18427;4;1;false;false;127;0;85;;;
                                  -18431;1;0;false;false;;;;;;
                                  -18432;7;0;false;false;0;0;0;;;
                                  -18439;1;0;false;false;;;;;;
                                  -18440;1;0;false;false;0;0;0;;;
                                  -18441;4;0;false;false;;;;;;
                                  -18445;17;0;false;false;0;0;0;;;
                                  -18462;1;0;false;false;;;;;;
                                  -18463;7;0;false;false;0;0;0;;;
                                  -18470;1;0;false;false;;;;;;
                                  -18471;1;0;false;false;0;0;0;;;
                                  -18472;1;0;false;false;;;;;;
                                  -18473;22;0;false;false;0;0;0;;;
                                  -18495;4;0;false;false;;;;;;
                                  -18499;5;0;false;false;0;0;0;;;
                                  -18504;1;0;false;false;;;;;;
                                  -18505;10;0;false;false;0;0;0;;;
                                  -18515;1;0;false;false;;;;;;
                                  -18516;1;0;false;false;0;0;0;;;
                                  -18517;1;0;false;false;;;;;;
                                  -18518;19;0;false;false;0;0;0;;;
                                  -18537;4;0;false;false;;;;;;
                                  -18541;5;0;false;false;0;0;0;;;
                                  -18546;1;0;false;false;;;;;;
                                  -18547;10;0;false;false;0;0;0;;;
                                  -18557;1;0;false;false;;;;;;
                                  -18558;1;0;false;false;0;0;0;;;
                                  -18559;1;0;false;false;;;;;;
                                  -18560;19;0;false;false;0;0;0;;;
                                  -18579;4;0;false;false;;;;;;
                                  -18583;3;1;false;false;127;0;85;;;
                                  -18586;1;0;false;false;;;;;;
                                  -18587;10;0;false;false;0;0;0;;;
                                  -18597;1;0;false;false;;;;;;
                                  -18598;1;0;false;false;0;0;0;;;
                                  -18599;1;0;false;false;;;;;;
                                  -18600;25;0;false;false;0;0;0;;;
                                  -18625;4;0;false;false;;;;;;
                                  -18629;3;1;false;false;127;0;85;;;
                                  -18632;1;0;false;false;;;;;;
                                  -18633;6;0;false;false;0;0;0;;;
                                  -18639;1;0;false;false;;;;;;
                                  -18640;1;0;false;false;0;0;0;;;
                                  -18641;1;0;false;false;;;;;;
                                  -18642;13;0;false;false;0;0;0;;;
                                  -18655;4;0;false;false;;;;;;
                                  -18659;3;1;false;false;127;0;85;;;
                                  -18662;1;0;false;false;;;;;;
                                  -18663;4;0;false;false;0;0;0;;;
                                  -18667;1;0;false;false;;;;;;
                                  -18668;1;0;false;false;0;0;0;;;
                                  -18669;1;0;false;false;;;;;;
                                  -18670;10;0;false;false;0;0;0;;;
                                  -18680;8;0;false;false;;;;;;
                                  -18688;3;1;false;false;127;0;85;;;
                                  -18691;1;0;false;false;;;;;;
                                  -18692;1;0;false;false;0;0;0;;;
                                  -18693;3;1;false;false;127;0;85;;;
                                  -18696;1;0;false;false;;;;;;
                                  -18697;1;0;false;false;0;0;0;;;
                                  -18698;1;0;false;false;;;;;;
                                  -18699;1;0;false;false;0;0;0;;;
                                  -18700;1;0;false;false;;;;;;
                                  -18701;10;0;false;false;0;0;0;;;
                                  -18711;1;0;false;false;;;;;;
                                  -18712;1;0;false;false;0;0;0;;;
                                  -18713;1;0;false;false;;;;;;
                                  -18714;2;0;false;false;0;0;0;;;
                                  -18716;1;0;false;false;;;;;;
                                  -18717;7;0;false;false;0;0;0;;;
                                  -18724;1;0;false;false;;;;;;
                                  -18725;2;0;false;false;0;0;0;;;
                                  -18727;1;0;false;false;;;;;;
                                  -18728;4;0;false;false;0;0;0;;;
                                  -18732;1;0;false;false;;;;;;
                                  -18733;2;0;false;false;0;0;0;;;
                                  -18735;1;0;false;false;;;;;;
                                  -18736;8;0;false;false;0;0;0;;;
                                  -18744;1;0;false;false;;;;;;
                                  -18745;4;0;false;false;0;0;0;;;
                                  -18749;1;0;false;false;;;;;;
                                  -18750;6;0;false;false;0;0;0;;;
                                  -18756;1;0;false;false;;;;;;
                                  -18757;2;0;false;false;0;0;0;;;
                                  -18759;1;0;false;false;;;;;;
                                  -18760;11;0;false;false;0;0;0;;;
                                  -18771;1;0;false;false;;;;;;
                                  -18772;1;0;false;false;0;0;0;;;
                                  -18773;5;0;false;false;;;;;;
                                  -18778;6;0;false;false;0;0;0;;;
                                  -18784;1;0;false;false;;;;;;
                                  -18785;4;0;false;false;0;0;0;;;
                                  -18789;1;0;false;false;;;;;;
                                  -18790;1;0;false;false;0;0;0;;;
                                  -18791;1;0;false;false;;;;;;
                                  -18792;19;0;false;false;0;0;0;;;
                                  -18811;10;0;false;false;;;;;;
                                  -18821;2;1;false;false;127;0;85;;;
                                  -18823;1;0;false;false;;;;;;
                                  -18824;7;0;false;false;0;0;0;;;
                                  -18831;1;0;false;false;;;;;;
                                  -18832;2;0;false;false;0;0;0;;;
                                  -18834;1;0;false;false;;;;;;
                                  -18835;13;0;false;false;0;0;0;;;
                                  -18848;1;0;false;false;;;;;;
                                  -18849;1;0;false;false;0;0;0;;;
                                  -18850;6;0;false;false;;;;;;
                                  -18856;16;0;false;false;0;0;0;;;
                                  -18872;5;0;false;false;;;;;;
                                  -18877;1;0;false;false;0;0;0;;;
                                  -18878;5;0;false;false;;;;;;
                                  -18883;18;0;false;false;0;0;0;;;
                                  -18901;6;0;false;false;;;;;;
                                  -18907;5;0;false;false;0;0;0;;;
                                  -18912;1;0;false;false;;;;;;
                                  -18913;2;0;false;false;0;0;0;;;
                                  -18915;1;0;false;false;;;;;;
                                  -18916;7;0;false;false;0;0;0;;;
                                  -18923;1;0;false;false;;;;;;
                                  -18924;3;0;false;false;0;0;0;;;
                                  -18927;1;0;false;false;;;;;;
                                  -18928;11;0;false;false;0;0;0;;;
                                  -18939;1;0;false;false;;;;;;
                                  -18940;11;0;false;false;0;0;0;;;
                                  -18951;1;0;false;false;;;;;;
                                  -18952;4;1;false;false;127;0;85;;;
                                  -18956;2;0;false;false;0;0;0;;;
                                  -18958;5;0;false;false;;;;;;
                                  -18963;2;1;false;false;127;0;85;;;
                                  -18965;1;0;false;false;;;;;;
                                  -18966;7;0;false;false;0;0;0;;;
                                  -18973;1;0;false;false;;;;;;
                                  -18974;1;0;false;false;0;0;0;;;
                                  -18975;1;0;false;false;;;;;;
                                  -18976;10;0;false;false;0;0;0;;;
                                  -18986;1;0;false;false;;;;;;
                                  -18987;1;0;false;false;0;0;0;;;
                                  -18988;1;0;false;false;;;;;;
                                  -18989;1;0;false;false;0;0;0;;;
                                  -18990;1;0;false;false;;;;;;
                                  -18991;1;0;false;false;0;0;0;;;
                                  -18992;1;0;false;false;;;;;;
                                  -18993;12;0;false;false;0;0;0;;;
                                  -19005;1;0;false;false;;;;;;
                                  -19006;1;0;false;false;0;0;0;;;
                                  -19007;1;0;false;false;;;;;;
                                  -19008;18;0;false;false;0;0;0;;;
                                  -19026;1;0;false;false;;;;;;
                                  -19027;1;0;false;false;0;0;0;;;
                                  -19028;6;0;false;false;;;;;;
                                  -19034;20;0;false;false;63;127;95;;;
                                  -19054;4;0;false;false;;;;;;
                                  -19058;14;0;false;false;0;0;0;;;
                                  -19072;6;0;false;false;;;;;;
                                  -19078;6;0;false;false;0;0;0;;;
                                  -19084;1;0;false;false;;;;;;
                                  -19085;1;0;false;false;0;0;0;;;
                                  -19086;1;0;false;false;;;;;;
                                  -19087;12;0;false;false;0;0;0;;;
                                  -19099;1;0;false;false;;;;;;
                                  -19100;1;0;false;false;0;0;0;;;
                                  -19101;1;0;false;false;;;;;;
                                  -19102;11;0;false;false;0;0;0;;;
                                  -19113;6;0;false;false;;;;;;
                                  -19119;7;0;false;false;0;0;0;;;
                                  -19126;5;0;false;false;;;;;;
                                  -19131;1;0;false;false;0;0;0;;;
                                  -19132;4;0;false;false;;;;;;
                                  -19136;1;0;false;false;0;0;0;;;
                                  -19137;4;0;false;false;;;;;;
                                  -19141;2;1;false;false;127;0;85;;;
                                  -19143;1;0;false;false;;;;;;
                                  -19144;7;0;false;false;0;0;0;;;
                                  -19151;1;0;false;false;;;;;;
                                  -19152;1;0;false;false;0;0;0;;;
                                  -19153;1;0;false;false;;;;;;
                                  -19154;13;0;false;false;0;0;0;;;
                                  -19167;1;0;false;false;;;;;;
                                  -19168;1;0;false;false;0;0;0;;;
                                  -19169;5;0;false;false;;;;;;
                                  -19174;23;0;false;false;63;127;95;;;
                                  -19197;3;0;false;false;;;;;;
                                  -19200;14;0;false;false;0;0;0;;;
                                  -19214;4;0;false;false;;;;;;
                                  -19218;1;0;false;false;0;0;0;;;
                                  -19219;3;0;false;false;;;;;;
                                  -19222;1;0;false;false;0;0;0;;;
                                  -19223;3;0;false;false;;;;;;
                                  -19226;3;0;false;false;63;95;191;;;
                                  -19229;4;0;false;false;;;;;;
                                  -19233;1;0;false;false;63;95;191;;;
                                  -19234;1;0;false;false;;;;;;
                                  -19235;5;0;false;false;63;95;191;;;
                                  -19240;1;0;false;false;;;;;;
                                  -19241;6;0;false;false;63;95;191;;;
                                  -19247;1;0;false;false;;;;;;
                                  -19248;2;0;false;false;63;95;191;;;
                                  -19250;1;0;false;false;;;;;;
                                  -19251;6;0;false;false;63;95;191;;;
                                  -19257;1;0;false;false;;;;;;
                                  -19258;12;0;false;false;63;95;191;;;
                                  -19270;4;0;false;false;;;;;;
                                  -19274;1;0;false;false;63;95;191;;;
                                  -19275;5;0;false;false;;;;;;
                                  -19280;1;0;false;false;63;95;191;;;
                                  -19281;1;0;false;false;;;;;;
                                  -19282;7;1;false;false;127;159;191;;;
                                  -19289;4;0;false;false;63;95;191;;;
                                  -19293;1;0;false;false;;;;;;
                                  -19294;4;0;false;false;63;95;191;;;
                                  -19298;1;0;false;false;;;;;;
                                  -19299;6;0;false;false;63;95;191;;;
                                  -19305;1;0;false;false;;;;;;
                                  -19306;2;0;false;false;63;95;191;;;
                                  -19308;1;0;false;false;;;;;;
                                  -19309;6;0;false;false;63;95;191;;;
                                  -19315;1;0;false;false;;;;;;
                                  -19316;2;0;false;false;63;95;191;;;
                                  -19318;1;0;false;false;;;;;;
                                  -19319;9;0;false;false;63;95;191;;;
                                  -19328;1;0;false;false;;;;;;
                                  -19329;2;0;false;false;63;95;191;;;
                                  -19331;1;0;false;false;;;;;;
                                  -19332;3;0;false;false;63;95;191;;;
                                  -19335;1;0;false;false;;;;;;
                                  -19336;22;0;false;false;63;95;191;;;
                                  -19358;1;0;false;false;;;;;;
                                  -19359;6;0;false;false;63;95;191;;;
                                  -19365;1;0;false;false;;;;;;
                                  -19366;2;0;false;false;63;95;191;;;
                                  -19368;1;0;false;false;;;;;;
                                  -19369;7;0;false;false;63;95;191;;;
                                  -19376;4;0;false;false;;;;;;
                                  -19380;1;0;false;false;63;95;191;;;
                                  -19381;1;0;false;false;;;;;;
                                  -19382;7;1;false;false;127;159;191;;;
                                  -19389;6;0;false;false;63;95;191;;;
                                  -19395;1;0;false;false;;;;;;
                                  -19396;4;0;false;false;63;95;191;;;
                                  -19400;1;0;false;false;;;;;;
                                  -19401;1;0;false;false;63;95;191;;;
                                  -19402;1;0;false;false;;;;;;
                                  -19403;5;0;false;false;63;95;191;;;
                                  -19408;1;0;false;false;;;;;;
                                  -19409;3;0;false;false;63;95;191;;;
                                  -19412;1;0;false;false;;;;;;
                                  -19413;7;0;false;false;63;95;191;;;
                                  -19420;1;0;false;false;;;;;;
                                  -19421;5;0;false;false;63;95;191;;;
                                  -19426;1;0;false;false;;;;;;
                                  -19427;1;0;false;false;63;95;191;;;
                                  -19428;1;0;false;false;;;;;;
                                  -19429;5;0;false;false;63;95;191;;;
                                  -19434;1;0;false;false;;;;;;
                                  -19435;3;0;false;false;63;95;191;;;
                                  -19438;1;0;false;false;;;;;;
                                  -19439;6;0;false;false;63;95;191;;;
                                  -19445;4;0;false;false;;;;;;
                                  -19449;2;0;false;false;63;95;191;;;
                                  -19451;3;0;false;false;;;;;;
                                  -19454;4;1;false;false;127;0;85;;;
                                  -19458;1;0;false;false;;;;;;
                                  -19459;16;0;false;false;0;0;0;;;
                                  -19475;3;1;false;false;127;0;85;;;
                                  -19478;1;0;false;false;;;;;;
                                  -19479;5;0;false;false;0;0;0;;;
                                  -19484;1;0;false;false;;;;;;
                                  -19485;7;1;false;false;127;0;85;;;
                                  -19492;1;0;false;false;;;;;;
                                  -19493;7;0;false;false;0;0;0;;;
                                  -19500;1;0;false;false;;;;;;
                                  -19501;1;0;false;false;0;0;0;;;
                                  -19502;4;0;false;false;;;;;;
                                  -19506;3;1;false;false;127;0;85;;;
                                  -19509;1;0;false;false;;;;;;
                                  -19510;16;0;false;false;0;0;0;;;
                                  -19526;1;0;false;false;;;;;;
                                  -19527;1;0;false;false;0;0;0;;;
                                  -19528;1;0;false;false;;;;;;
                                  -19529;2;0;false;false;0;0;0;;;
                                  -19531;4;0;false;false;;;;;;
                                  -19535;5;1;false;false;127;0;85;;;
                                  -19540;1;0;false;false;;;;;;
                                  -19541;3;1;false;false;127;0;85;;;
                                  -19544;1;0;false;false;;;;;;
                                  -19545;12;0;false;false;0;0;0;;;
                                  -19557;1;0;false;false;;;;;;
                                  -19558;1;0;false;false;0;0;0;;;
                                  -19559;1;0;false;false;;;;;;
                                  -19560;2;0;false;false;0;0;0;;;
                                  -19562;4;0;false;false;;;;;;
                                  -19566;6;0;false;false;0;0;0;;;
                                  -19572;1;0;false;false;;;;;;
                                  -19573;5;0;false;false;0;0;0;;;
                                  -19578;8;0;false;false;;;;;;
                                  -19586;2;1;false;false;127;0;85;;;
                                  -19588;1;0;false;false;;;;;;
                                  -19589;8;0;false;false;0;0;0;;;
                                  -19597;1;0;false;false;;;;;;
                                  -19598;1;0;false;false;0;0;0;;;
                                  -19599;5;0;false;false;;;;;;
                                  -19604;4;0;false;false;0;0;0;;;
                                  -19608;1;0;false;false;;;;;;
                                  -19609;1;0;false;false;0;0;0;;;
                                  -19610;1;0;false;false;;;;;;
                                  -19611;20;0;false;false;0;0;0;;;
                                  -19631;4;0;false;false;;;;;;
                                  -19635;1;0;false;false;0;0;0;;;
                                  -19636;4;0;false;false;;;;;;
                                  -19640;4;1;false;false;127;0;85;;;
                                  -19644;1;0;false;false;;;;;;
                                  -19645;1;0;false;false;0;0;0;;;
                                  -19646;5;0;false;false;;;;;;
                                  -19651;4;0;false;false;0;0;0;;;
                                  -19655;1;0;false;false;;;;;;
                                  -19656;1;0;false;false;0;0;0;;;
                                  -19657;1;0;false;false;;;;;;
                                  -19658;20;0;false;false;0;0;0;;;
                                  -19678;4;0;false;false;;;;;;
                                  -19682;1;0;false;false;0;0;0;;;
                                  -19683;4;0;false;false;;;;;;
                                  -19687;2;1;false;false;127;0;85;;;
                                  -19689;1;0;false;false;;;;;;
                                  -19690;5;0;false;false;0;0;0;;;
                                  -19695;1;0;false;false;;;;;;
                                  -19696;2;0;false;false;0;0;0;;;
                                  -19698;1;0;false;false;;;;;;
                                  -19699;4;1;false;false;127;0;85;;;
                                  -19703;1;0;false;false;0;0;0;;;
                                  -19704;1;0;false;false;;;;;;
                                  -19705;1;0;false;false;0;0;0;;;
                                  -19706;5;0;false;false;;;;;;
                                  -19711;6;1;false;false;127;0;85;;;
                                  -19717;1;0;false;false;0;0;0;;;
                                  -19718;4;0;false;false;;;;;;
                                  -19722;1;0;false;false;0;0;0;;;
                                  -19723;4;0;false;false;;;;;;
                                  -19727;3;1;false;false;127;0;85;;;
                                  -19730;1;0;false;false;;;;;;
                                  -19731;1;0;false;false;0;0;0;;;
                                  -19732;3;1;false;false;127;0;85;;;
                                  -19735;1;0;false;false;;;;;;
                                  -19736;1;0;false;false;0;0;0;;;
                                  -19737;1;0;false;false;;;;;;
                                  -19738;1;0;false;false;0;0;0;;;
                                  -19739;1;0;false;false;;;;;;
                                  -19740;2;0;false;false;0;0;0;;;
                                  -19742;1;0;false;false;;;;;;
                                  -19743;1;0;false;false;0;0;0;;;
                                  -19744;1;0;false;false;;;;;;
                                  -19745;1;0;false;false;0;0;0;;;
                                  -19746;1;0;false;false;;;;;;
                                  -19747;13;0;false;false;0;0;0;;;
                                  -19760;1;0;false;false;;;;;;
                                  -19761;4;0;false;false;0;0;0;;;
                                  -19765;1;0;false;false;;;;;;
                                  -19766;1;0;false;false;0;0;0;;;
                                  -19767;5;0;false;false;;;;;;
                                  -19772;3;1;false;false;127;0;85;;;
                                  -19775;1;0;false;false;;;;;;
                                  -19776;12;0;false;false;0;0;0;;;
                                  -19788;1;0;false;false;;;;;;
                                  -19789;1;0;false;false;0;0;0;;;
                                  -19790;1;0;false;false;;;;;;
                                  -19791;46;0;false;false;0;0;0;;;
                                  -19837;1;0;false;false;;;;;;
                                  -19838;18;0;false;false;0;0;0;;;
                                  -19856;5;0;false;false;;;;;;
                                  -19861;6;0;false;false;0;0;0;;;
                                  -19867;1;0;false;false;;;;;;
                                  -19868;8;0;false;false;0;0;0;;;
                                  -19876;10;0;false;false;;;;;;
                                  -19886;2;1;false;false;127;0;85;;;
                                  -19888;1;0;false;false;;;;;;
                                  -19889;13;0;false;false;0;0;0;;;
                                  -19902;1;0;false;false;;;;;;
                                  -19903;2;0;false;false;0;0;0;;;
                                  -19905;1;0;false;false;;;;;;
                                  -19906;3;0;false;false;0;0;0;;;
                                  -19909;1;0;false;false;;;;;;
                                  -19910;1;0;false;false;0;0;0;;;
                                  -19911;6;0;false;false;;;;;;
                                  -19917;7;0;false;false;0;0;0;;;
                                  -19924;1;0;false;false;;;;;;
                                  -19925;1;0;false;false;0;0;0;;;
                                  -19926;1;0;false;false;;;;;;
                                  -19927;33;0;false;false;0;0;0;;;
                                  -19960;6;0;false;false;;;;;;
                                  -19966;31;0;false;false;0;0;0;;;
                                  -19997;1;0;false;false;;;;;;
                                  -19998;2;0;false;false;0;0;0;;;
                                  -20000;1;0;false;false;;;;;;
                                  -20001;5;0;false;false;0;0;0;;;
                                  -20006;1;0;false;false;;;;;;
                                  -20007;8;0;false;false;0;0;0;;;
                                  -20015;6;0;false;false;;;;;;
                                  -20021;5;1;false;false;127;0;85;;;
                                  -20026;1;0;false;false;0;0;0;;;
                                  -20027;5;0;false;false;;;;;;
                                  -20032;1;0;false;false;0;0;0;;;
                                  -20033;5;0;false;false;;;;;;
                                  -20038;4;1;false;false;127;0;85;;;
                                  -20042;1;0;false;false;;;;;;
                                  -20043;1;0;false;false;0;0;0;;;
                                  -20044;6;0;false;false;;;;;;
                                  -20050;7;0;false;false;0;0;0;;;
                                  -20057;1;0;false;false;;;;;;
                                  -20058;1;0;false;false;0;0;0;;;
                                  -20059;1;0;false;false;;;;;;
                                  -20060;32;0;false;false;0;0;0;;;
                                  -20092;1;0;false;false;;;;;;
                                  -20093;14;0;false;false;0;0;0;;;
                                  -20107;6;0;false;false;;;;;;
                                  -20113;31;0;false;false;0;0;0;;;
                                  -20144;1;0;false;false;;;;;;
                                  -20145;2;0;false;false;0;0;0;;;
                                  -20147;1;0;false;false;;;;;;
                                  -20148;5;0;false;false;0;0;0;;;
                                  -20153;1;0;false;false;;;;;;
                                  -20154;8;0;false;false;0;0;0;;;
                                  -20162;6;0;false;false;;;;;;
                                  -20168;16;0;false;false;0;0;0;;;
                                  -20184;1;0;false;false;;;;;;
                                  -20185;1;0;false;false;0;0;0;;;
                                  -20186;1;0;false;false;;;;;;
                                  -20187;12;0;false;false;0;0;0;;;
                                  -20199;1;0;false;false;;;;;;
                                  -20200;1;0;false;false;0;0;0;;;
                                  -20201;1;0;false;false;;;;;;
                                  -20202;42;0;false;false;0;0;0;;;
                                  -20244;5;0;false;false;;;;;;
                                  -20249;1;0;false;false;0;0;0;;;
                                  -20250;4;0;false;false;;;;;;
                                  -20254;1;0;false;false;0;0;0;;;
                                  -20255;3;0;false;false;;;;;;
                                  -20258;1;0;false;false;0;0;0;;;
                                  -20259;3;0;false;false;;;;;;
                                  -20262;3;0;false;false;63;95;191;;;
                                  -20265;4;0;false;false;;;;;;
                                  -20269;1;0;false;false;63;95;191;;;
                                  -20270;1;0;false;false;;;;;;
                                  -20271;5;0;false;false;63;95;191;;;
                                  -20276;1;0;false;false;;;;;;
                                  -20277;3;0;false;false;63;95;191;;;
                                  -20280;1;0;false;false;;;;;;
                                  -20281;7;0;false;false;63;95;191;;;
                                  -20288;1;0;false;false;;;;;;
                                  -20289;2;0;false;false;63;95;191;;;
                                  -20291;1;0;false;false;;;;;;
                                  -20292;1;0;false;false;63;95;191;;;
                                  -20293;1;0;false;false;;;;;;
                                  -20294;6;0;false;false;63;95;191;;;
                                  -20300;1;0;false;false;;;;;;
                                  -20301;2;0;false;false;63;95;191;;;
                                  -20303;1;0;false;false;;;;;;
                                  -20304;6;0;false;false;63;95;191;;;
                                  -20310;1;0;false;false;;;;;;
                                  -20311;11;0;false;false;63;95;191;;;
                                  -20322;4;0;false;false;;;;;;
                                  -20326;1;0;false;false;63;95;191;;;
                                  -20327;1;0;false;false;;;;;;
                                  -20328;7;0;false;false;63;95;191;;;
                                  -20335;1;0;false;false;;;;;;
                                  -20336;3;0;false;false;63;95;191;;;
                                  -20339;1;0;false;false;;;;;;
                                  -20340;7;0;false;false;63;95;191;;;
                                  -20347;1;0;false;false;;;;;;
                                  -20348;4;0;false;false;63;95;191;;;
                                  -20352;1;0;false;false;;;;;;
                                  -20353;5;0;false;false;63;95;191;;;
                                  -20358;1;0;false;false;;;;;;
                                  -20359;9;0;false;false;63;95;191;;;
                                  -20368;1;0;false;false;;;;;;
                                  -20369;9;0;false;false;63;95;191;;;
                                  -20378;4;0;false;false;;;;;;
                                  -20382;1;0;false;false;63;95;191;;;
                                  -20383;1;0;false;false;;;;;;
                                  -20384;3;0;false;false;63;95;191;;;
                                  -20387;1;0;false;false;;;;;;
                                  -20388;4;0;false;false;63;95;191;;;
                                  -20392;1;0;false;false;;;;;;
                                  -20393;3;0;false;false;63;95;191;;;
                                  -20396;1;0;false;false;;;;;;
                                  -20397;4;0;false;false;63;95;191;;;
                                  -20401;1;0;false;false;;;;;;
                                  -20402;8;0;false;false;63;95;191;;;
                                  -20410;1;0;false;false;;;;;;
                                  -20411;9;0;false;false;63;95;191;;;
                                  -20420;1;0;false;false;;;;;;
                                  -20421;3;0;false;false;63;95;191;;;
                                  -20424;1;0;false;false;;;;;;
                                  -20425;5;0;false;false;63;95;191;;;
                                  -20430;1;0;false;false;;;;;;
                                  -20431;7;0;false;false;63;95;191;;;
                                  -20438;1;0;false;false;;;;;;
                                  -20439;5;0;false;false;63;95;191;;;
                                  -20444;4;0;false;false;;;;;;
                                  -20448;1;0;false;false;63;95;191;;;
                                  -20449;5;0;false;false;;;;;;
                                  -20454;1;0;false;false;63;95;191;;;
                                  -20455;1;0;false;false;;;;;;
                                  -20456;7;1;false;false;127;159;191;;;
                                  -20463;7;0;false;false;63;95;191;;;
                                  -20470;1;0;false;false;;;;;;
                                  -20471;10;0;false;false;63;95;191;;;
                                  -20481;1;0;false;false;;;;;;
                                  -20482;7;0;false;false;63;95;191;;;
                                  -20489;1;0;false;false;;;;;;
                                  -20490;2;0;false;false;63;95;191;;;
                                  -20492;1;0;false;false;;;;;;
                                  -20493;5;0;false;false;63;95;191;;;
                                  -20498;4;0;false;false;;;;;;
                                  -20502;1;0;false;false;63;95;191;;;
                                  -20503;1;0;false;false;;;;;;
                                  -20504;7;1;false;false;127;159;191;;;
                                  -20511;9;0;false;false;63;95;191;;;
                                  -20520;1;0;false;false;;;;;;
                                  -20521;9;0;false;false;63;95;191;;;
                                  -20530;1;0;false;false;;;;;;
                                  -20531;2;0;false;false;63;95;191;;;
                                  -20533;1;0;false;false;;;;;;
                                  -20534;3;0;false;false;63;95;191;;;
                                  -20537;1;0;false;false;;;;;;
                                  -20538;8;0;false;false;63;95;191;;;
                                  -20546;1;0;false;false;;;;;;
                                  -20547;7;0;false;false;63;95;191;;;
                                  -20554;1;0;false;false;;;;;;
                                  -20555;9;0;false;false;63;95;191;;;
                                  -20564;1;0;false;false;;;;;;
                                  -20565;7;0;false;false;63;95;191;;;
                                  -20572;5;0;false;false;;;;;;
                                  -20577;1;0;false;false;63;95;191;;;
                                  -20578;1;0;false;false;;;;;;
                                  -20579;7;1;false;false;127;159;191;;;
                                  -20586;4;0;false;false;63;95;191;;;
                                  -20590;1;0;false;false;;;;;;
                                  -20591;4;0;false;false;63;95;191;;;
                                  -20595;1;0;false;false;;;;;;
                                  -20596;6;0;false;false;63;95;191;;;
                                  -20602;1;0;false;false;;;;;;
                                  -20603;2;0;false;false;63;95;191;;;
                                  -20605;1;0;false;false;;;;;;
                                  -20606;6;0;false;false;63;95;191;;;
                                  -20612;1;0;false;false;;;;;;
                                  -20613;2;0;false;false;63;95;191;;;
                                  -20615;1;0;false;false;;;;;;
                                  -20616;9;0;false;false;63;95;191;;;
                                  -20625;1;0;false;false;;;;;;
                                  -20626;2;0;false;false;63;95;191;;;
                                  -20628;1;0;false;false;;;;;;
                                  -20629;3;0;false;false;63;95;191;;;
                                  -20632;1;0;false;false;;;;;;
                                  -20633;10;0;false;false;63;95;191;;;
                                  -20643;1;0;false;false;;;;;;
                                  -20644;8;0;false;false;63;95;191;;;
                                  -20652;4;0;false;false;;;;;;
                                  -20656;1;0;false;false;63;95;191;;;
                                  -20657;1;0;false;false;;;;;;
                                  -20658;7;1;false;false;127;159;191;;;
                                  -20665;6;0;false;false;63;95;191;;;
                                  -20671;1;0;false;false;;;;;;
                                  -20672;4;0;false;false;63;95;191;;;
                                  -20676;1;0;false;false;;;;;;
                                  -20677;1;0;false;false;63;95;191;;;
                                  -20678;1;0;false;false;;;;;;
                                  -20679;5;0;false;false;63;95;191;;;
                                  -20684;1;0;false;false;;;;;;
                                  -20685;3;0;false;false;63;95;191;;;
                                  -20688;1;0;false;false;;;;;;
                                  -20689;7;0;false;false;63;95;191;;;
                                  -20696;1;0;false;false;;;;;;
                                  -20697;5;0;false;false;63;95;191;;;
                                  -20702;1;0;false;false;;;;;;
                                  -20703;1;0;false;false;63;95;191;;;
                                  -20704;1;0;false;false;;;;;;
                                  -20705;5;0;false;false;63;95;191;;;
                                  -20710;1;0;false;false;;;;;;
                                  -20711;3;0;false;false;63;95;191;;;
                                  -20714;1;0;false;false;;;;;;
                                  -20715;6;0;false;false;63;95;191;;;
                                  -20721;4;0;false;false;;;;;;
                                  -20725;2;0;false;false;63;95;191;;;
                                  -20727;3;0;false;false;;;;;;
                                  -20730;4;1;false;false;127;0;85;;;
                                  -20734;1;0;false;false;;;;;;
                                  -20735;29;0;false;false;0;0;0;;;
                                  -20764;1;0;false;false;;;;;;
                                  -20765;8;0;false;false;0;0;0;;;
                                  -20773;1;0;false;false;;;;;;
                                  -20774;3;1;false;false;127;0;85;;;
                                  -20777;1;0;false;false;;;;;;
                                  -20778;10;0;false;false;0;0;0;;;
                                  -20788;1;0;false;false;;;;;;
                                  -20789;3;1;false;false;127;0;85;;;
                                  -20792;1;0;false;false;;;;;;
                                  -20793;5;0;false;false;0;0;0;;;
                                  -20798;1;0;false;false;;;;;;
                                  -20799;7;1;false;false;127;0;85;;;
                                  -20806;1;0;false;false;;;;;;
                                  -20807;7;0;false;false;0;0;0;;;
                                  -20814;1;0;false;false;;;;;;
                                  -20815;1;0;false;false;0;0;0;;;
                                  -20816;6;0;false;false;;;;;;
                                  -20822;3;1;false;false;127;0;85;;;
                                  -20825;1;0;false;false;;;;;;
                                  -20826;9;0;false;false;0;0;0;;;
                                  -20835;1;0;false;false;;;;;;
                                  -20836;1;0;false;false;0;0;0;;;
                                  -20837;1;0;false;false;;;;;;
                                  -20838;49;0;false;false;0;0;0;;;
                                  -20887;8;0;false;false;;;;;;
                                  -20895;2;1;false;false;127;0;85;;;
                                  -20897;1;0;false;false;;;;;;
                                  -20898;10;0;false;false;0;0;0;;;
                                  -20908;1;0;false;false;;;;;;
                                  -20909;2;0;false;false;0;0;0;;;
                                  -20911;1;0;false;false;;;;;;
                                  -20912;3;0;false;false;0;0;0;;;
                                  -20915;1;0;false;false;;;;;;
                                  -20916;1;0;false;false;0;0;0;;;
                                  -20917;5;0;false;false;;;;;;
                                  -20922;5;1;false;false;127;0;85;;;
                                  -20927;1;0;false;false;;;;;;
                                  -20928;3;1;false;false;127;0;85;;;
                                  -20931;1;0;false;false;;;;;;
                                  -20932;13;0;false;false;0;0;0;;;
                                  -20945;1;0;false;false;;;;;;
                                  -20946;1;0;false;false;0;0;0;;;
                                  -20947;1;0;false;false;;;;;;
                                  -20948;41;0;false;false;0;0;0;;;
                                  -20989;5;0;false;false;;;;;;
                                  -20994;12;0;false;false;0;0;0;;;
                                  -21006;1;0;false;false;;;;;;
                                  -21007;6;0;false;false;0;0;0;;;
                                  -21013;1;0;false;false;;;;;;
                                  -21014;1;0;false;false;0;0;0;;;
                                  -21015;1;0;false;false;;;;;;
                                  -21016;3;1;false;false;127;0;85;;;
                                  -21019;1;0;false;false;;;;;;
                                  -21020;30;0;false;false;0;0;0;;;
                                  -21050;1;0;false;false;;;;;;
                                  -21051;3;0;false;false;0;0;0;;;
                                  -21054;1;0;false;false;;;;;;
                                  -21055;12;0;false;false;0;0;0;;;
                                  -21067;5;0;false;false;;;;;;
                                  -21072;13;0;false;false;0;0;0;;;
                                  -21085;1;0;false;false;;;;;;
                                  -21086;7;0;false;false;0;0;0;;;
                                  -21093;5;0;false;false;;;;;;
                                  -21098;13;0;false;false;0;0;0;;;
                                  -21111;1;0;false;false;;;;;;
                                  -21112;28;0;false;false;0;0;0;;;
                                  -21140;1;0;false;false;;;;;;
                                  -21141;1;0;false;false;0;0;0;;;
                                  -21142;1;0;false;false;;;;;;
                                  -21143;16;0;false;false;0;0;0;;;
                                  -21159;5;0;false;false;;;;;;
                                  -21164;7;0;false;false;0;0;0;;;
                                  -21171;1;0;false;false;;;;;;
                                  -21172;1;0;false;false;0;0;0;;;
                                  -21173;1;0;false;false;;;;;;
                                  -21174;18;0;false;false;0;0;0;;;
                                  -21192;4;0;false;false;;;;;;
                                  -21196;1;0;false;false;0;0;0;;;
                                  -21197;4;0;false;false;;;;;;
                                  -21201;2;1;false;false;127;0;85;;;
                                  -21203;1;0;false;false;;;;;;
                                  -21204;17;0;false;false;0;0;0;;;
                                  -21221;1;0;false;false;;;;;;
                                  -21222;1;0;false;false;0;0;0;;;
                                  -21223;1;0;false;false;;;;;;
                                  -21224;2;0;false;false;0;0;0;;;
                                  -21226;1;0;false;false;;;;;;
                                  -21227;1;0;false;false;0;0;0;;;
                                  -21228;5;0;false;false;;;;;;
                                  -21233;3;1;false;false;127;0;85;;;
                                  -21236;1;0;false;false;;;;;;
                                  -21237;13;0;false;false;0;0;0;;;
                                  -21250;5;0;false;false;;;;;;
                                  -21255;3;1;false;false;127;0;85;;;
                                  -21258;1;0;false;false;;;;;;
                                  -21259;5;0;false;false;0;0;0;;;
                                  -21264;1;0;false;false;;;;;;
                                  -21265;1;0;false;false;0;0;0;;;
                                  -21266;1;0;false;false;;;;;;
                                  -21267;2;0;false;false;0;0;0;;;
                                  -21269;5;0;false;false;;;;;;
                                  -21274;3;1;false;false;127;0;85;;;
                                  -21277;1;0;false;false;;;;;;
                                  -21278;5;0;false;false;0;0;0;;;
                                  -21283;1;0;false;false;;;;;;
                                  -21284;1;0;false;false;0;0;0;;;
                                  -21285;1;0;false;false;;;;;;
                                  -21286;2;0;false;false;0;0;0;;;
                                  -21288;5;0;false;false;;;;;;
                                  -21293;10;0;false;false;0;0;0;;;
                                  -21303;1;0;false;false;;;;;;
                                  -21304;6;0;false;false;0;0;0;;;
                                  -21310;1;0;false;false;;;;;;
                                  -21311;1;0;false;false;0;0;0;;;
                                  -21312;1;0;false;false;;;;;;
                                  -21313;3;1;false;false;127;0;85;;;
                                  -21316;1;0;false;false;;;;;;
                                  -21317;20;0;false;false;0;0;0;;;
                                  -21337;5;0;false;false;;;;;;
                                  -21342;24;0;false;false;0;0;0;;;
                                  -21366;5;0;false;false;;;;;;
                                  -21371;28;0;false;false;0;0;0;;;
                                  -21399;5;0;false;false;;;;;;
                                  -21404;12;0;false;false;0;0;0;;;
                                  -21416;1;0;false;false;;;;;;
                                  -21417;1;0;false;false;0;0;0;;;
                                  -21418;1;0;false;false;;;;;;
                                  -21419;30;0;false;false;0;0;0;;;
                                  -21449;5;0;false;false;;;;;;
                                  -21454;2;1;false;false;127;0;85;;;
                                  -21456;1;0;false;false;;;;;;
                                  -21457;8;0;false;false;0;0;0;;;
                                  -21465;1;0;false;false;;;;;;
                                  -21466;1;0;false;false;0;0;0;;;
                                  -21467;6;0;false;false;;;;;;
                                  -21473;5;0;false;false;0;0;0;;;
                                  -21478;1;0;false;false;;;;;;
                                  -21479;1;0;false;false;0;0;0;;;
                                  -21480;1;0;false;false;;;;;;
                                  -21481;12;0;false;false;0;0;0;;;
                                  -21493;1;0;false;false;;;;;;
                                  -21494;1;0;false;false;0;0;0;;;
                                  -21495;1;0;false;false;;;;;;
                                  -21496;24;0;false;false;0;0;0;;;
                                  -21520;1;0;false;false;;;;;;
                                  -21521;1;0;false;false;0;0;0;;;
                                  -21522;1;0;false;false;;;;;;
                                  -21523;2;0;false;false;0;0;0;;;
                                  -21525;5;0;false;false;;;;;;
                                  -21530;1;0;false;false;0;0;0;;;
                                  -21531;5;0;false;false;;;;;;
                                  -21536;4;1;false;false;127;0;85;;;
                                  -21540;1;0;false;false;;;;;;
                                  -21541;1;0;false;false;0;0;0;;;
                                  -21542;6;0;false;false;;;;;;
                                  -21548;5;0;false;false;0;0;0;;;
                                  -21553;1;0;false;false;;;;;;
                                  -21554;1;0;false;false;0;0;0;;;
                                  -21555;1;0;false;false;;;;;;
                                  -21556;12;0;false;false;0;0;0;;;
                                  -21568;1;0;false;false;;;;;;
                                  -21569;1;0;false;false;0;0;0;;;
                                  -21570;1;0;false;false;;;;;;
                                  -21571;17;0;false;false;0;0;0;;;
                                  -21588;1;0;false;false;;;;;;
                                  -21589;1;0;false;false;0;0;0;;;
                                  -21590;1;0;false;false;;;;;;
                                  -21591;25;0;false;false;0;0;0;;;
                                  -21616;5;0;false;false;;;;;;
                                  -21621;1;0;false;false;0;0;0;;;
                                  -21622;5;0;false;false;;;;;;
                                  -21627;2;1;false;false;127;0;85;;;
                                  -21629;1;0;false;false;;;;;;
                                  -21630;10;0;false;false;0;0;0;;;
                                  -21640;1;0;false;false;;;;;;
                                  -21641;2;0;false;false;0;0;0;;;
                                  -21643;1;0;false;false;;;;;;
                                  -21644;5;0;false;false;0;0;0;;;
                                  -21649;1;0;false;false;;;;;;
                                  -21650;1;0;false;false;0;0;0;;;
                                  -21651;6;0;false;false;;;;;;
                                  -21657;5;0;false;false;0;0;0;;;
                                  -21662;1;0;false;false;;;;;;
                                  -21663;1;0;false;false;0;0;0;;;
                                  -21664;1;0;false;false;;;;;;
                                  -21665;13;0;false;false;0;0;0;;;
                                  -21678;5;0;false;false;;;;;;
                                  -21683;1;0;false;false;0;0;0;;;
                                  -21684;5;0;false;false;;;;;;
                                  -21689;4;1;false;false;127;0;85;;;
                                  -21693;9;0;false;false;;;;;;
                                  -21702;2;1;false;false;127;0;85;;;
                                  -21704;1;0;false;false;;;;;;
                                  -21705;10;0;false;false;0;0;0;;;
                                  -21715;1;0;false;false;;;;;;
                                  -21716;2;0;false;false;0;0;0;;;
                                  -21718;1;0;false;false;;;;;;
                                  -21719;7;0;false;false;0;0;0;;;
                                  -21726;1;0;false;false;;;;;;
                                  -21727;1;0;false;false;0;0;0;;;
                                  -21728;6;0;false;false;;;;;;
                                  -21734;5;0;false;false;0;0;0;;;
                                  -21739;1;0;false;false;;;;;;
                                  -21740;1;0;false;false;0;0;0;;;
                                  -21741;1;0;false;false;;;;;;
                                  -21742;10;0;false;false;0;0;0;;;
                                  -21752;1;0;false;false;;;;;;
                                  -21753;1;0;false;false;0;0;0;;;
                                  -21754;1;0;false;false;;;;;;
                                  -21755;13;0;false;false;0;0;0;;;
                                  -21768;1;0;false;false;;;;;;
                                  -21769;1;0;false;false;0;0;0;;;
                                  -21770;1;0;false;false;;;;;;
                                  -21771;2;0;false;false;0;0;0;;;
                                  -21773;5;0;false;false;;;;;;
                                  -21778;1;0;false;false;0;0;0;;;
                                  -21779;5;0;false;false;;;;;;
                                  -21784;4;1;false;false;127;0;85;;;
                                  -21788;6;0;false;false;;;;;;
                                  -21794;2;1;false;false;127;0;85;;;
                                  -21796;1;0;false;false;;;;;;
                                  -21797;10;0;false;false;0;0;0;;;
                                  -21807;1;0;false;false;;;;;;
                                  -21808;2;0;false;false;0;0;0;;;
                                  -21810;1;0;false;false;;;;;;
                                  -21811;6;0;false;false;0;0;0;;;
                                  -21817;1;0;false;false;;;;;;
                                  -21818;1;0;false;false;0;0;0;;;
                                  -21819;6;0;false;false;;;;;;
                                  -21825;5;0;false;false;0;0;0;;;
                                  -21830;1;0;false;false;;;;;;
                                  -21831;1;0;false;false;0;0;0;;;
                                  -21832;1;0;false;false;;;;;;
                                  -21833;12;0;false;false;0;0;0;;;
                                  -21845;1;0;false;false;;;;;;
                                  -21846;1;0;false;false;0;0;0;;;
                                  -21847;1;0;false;false;;;;;;
                                  -21848;16;0;false;false;0;0;0;;;
                                  -21864;1;0;false;false;;;;;;
                                  -21865;1;0;false;false;0;0;0;;;
                                  -21866;1;0;false;false;;;;;;
                                  -21867;13;0;false;false;0;0;0;;;
                                  -21880;5;0;false;false;;;;;;
                                  -21885;1;0;false;false;0;0;0;;;
                                  -21886;5;0;false;false;;;;;;
                                  -21891;15;0;false;false;0;0;0;;;
                                  -21906;1;0;false;false;;;;;;
                                  -21907;6;0;false;false;0;0;0;;;
                                  -21913;1;0;false;false;;;;;;
                                  -21914;7;0;false;false;0;0;0;;;
                                  -21921;5;0;false;false;;;;;;
                                  -21926;17;0;false;false;0;0;0;;;
                                  -21943;4;0;false;false;;;;;;
                                  -21947;1;0;false;false;0;0;0;;;
                                  -21948;3;0;false;false;;;;;;
                                  -21951;1;0;false;false;0;0;0;;;
                                  -21952;3;0;false;false;;;;;;
                                  -21955;3;0;false;false;63;95;191;;;
                                  -21958;4;0;false;false;;;;;;
                                  -21962;1;0;false;false;63;95;191;;;
                                  -21963;1;0;false;false;;;;;;
                                  -21964;6;0;false;false;63;95;191;;;
                                  -21970;1;0;false;false;;;;;;
                                  -21971;1;0;false;false;63;95;191;;;
                                  -21972;1;0;false;false;;;;;;
                                  -21973;5;0;false;false;63;95;191;;;
                                  -21978;1;0;false;false;;;;;;
                                  -21979;3;0;false;false;63;95;191;;;
                                  -21982;1;0;false;false;;;;;;
                                  -21983;3;0;false;false;63;95;191;;;
                                  -21986;1;0;false;false;;;;;;
                                  -21987;6;0;false;false;63;95;191;;;
                                  -21993;1;0;false;false;;;;;;
                                  -21994;3;0;false;false;63;95;191;;;
                                  -21997;1;0;false;false;;;;;;
                                  -21998;5;0;false;false;63;95;191;;;
                                  -22003;1;0;false;false;;;;;;
                                  -22004;9;0;false;false;63;95;191;;;
                                  -22013;1;0;false;false;;;;;;
                                  -22014;2;0;false;false;63;95;191;;;
                                  -22016;1;0;false;false;;;;;;
                                  -22017;3;0;false;false;63;95;191;;;
                                  -22020;1;0;false;false;;;;;;
                                  -22021;12;0;false;false;63;95;191;;;
                                  -22033;4;0;false;false;;;;;;
                                  -22037;2;0;false;false;63;95;191;;;
                                  -22039;3;0;false;false;;;;;;
                                  -22042;6;1;false;false;127;0;85;;;
                                  -22048;1;0;false;false;;;;;;
                                  -22049;4;1;false;false;127;0;85;;;
                                  -22053;1;0;false;false;;;;;;
                                  -22054;5;0;false;false;0;0;0;;;
                                  -22059;1;0;false;false;;;;;;
                                  -22060;1;0;false;false;0;0;0;;;
                                  -22061;4;0;false;false;;;;;;
                                  -22065;6;0;false;false;0;0;0;;;
                                  -22071;1;0;false;false;;;;;;
                                  -22072;7;0;false;false;0;0;0;;;
                                  -22079;1;0;false;false;;;;;;
                                  -22080;1;0;false;false;0;0;0;;;
                                  -22081;1;0;false;false;;;;;;
                                  -22082;21;0;false;false;0;0;0;;;
                                  -22103;8;0;false;false;;;;;;
                                  -22111;2;1;false;false;127;0;85;;;
                                  -22113;1;0;false;false;;;;;;
                                  -22114;8;0;false;false;0;0;0;;;
                                  -22122;1;0;false;false;;;;;;
                                  -22123;2;0;false;false;0;0;0;;;
                                  -22125;1;0;false;false;;;;;;
                                  -22126;4;1;false;false;127;0;85;;;
                                  -22130;1;0;false;false;0;0;0;;;
                                  -22131;1;0;false;false;;;;;;
                                  -22132;1;0;false;false;0;0;0;;;
                                  -22133;5;0;false;false;;;;;;
                                  -22138;7;0;false;false;0;0;0;;;
                                  -22145;1;0;false;false;;;;;;
                                  -22146;1;0;false;false;0;0;0;;;
                                  -22147;1;0;false;false;;;;;;
                                  -22148;10;0;false;false;42;0;255;;;
                                  -22158;1;0;false;false;0;0;0;;;
                                  -22159;4;0;false;false;;;;;;
                                  -22163;1;0;false;false;0;0;0;;;
                                  -22164;6;0;false;false;;;;;;
                                  -22170;2;1;false;false;127;0;85;;;
                                  -22172;1;0;false;false;;;;;;
                                  -22173;27;0;false;false;0;0;0;;;
                                  -22200;1;0;false;false;;;;;;
                                  -22201;1;0;false;false;0;0;0;;;
                                  -22202;5;0;false;false;;;;;;
                                  -22207;22;0;false;false;0;0;0;;;
                                  -22229;5;0;false;false;;;;;;
                                  -22234;21;0;false;false;0;0;0;;;
                                  -22255;5;0;false;false;;;;;;
                                  -22260;8;0;false;false;0;0;0;;;
                                  -22268;5;0;false;false;;;;;;
                                  -22273;10;0;false;false;0;0;0;;;
                                  -22283;5;0;false;false;;;;;;
                                  -22288;17;0;false;false;0;0;0;;;
                                  -22305;7;0;false;false;;;;;;
                                  -22312;1;0;false;false;0;0;0;;;
                                  -22313;3;0;false;false;;;;;;
                                  -22316;1;0;false;false;0;0;0;;;
                                  -22317;3;0;false;false;;;;;;
                                  -22320;3;0;false;false;63;95;191;;;
                                  -22323;4;0;false;false;;;;;;
                                  -22327;1;0;false;false;63;95;191;;;
                                  -22328;1;0;false;false;;;;;;
                                  -22329;5;0;false;false;63;95;191;;;
                                  -22334;1;0;false;false;;;;;;
                                  -22335;8;0;false;false;63;95;191;;;
                                  -22343;1;0;false;false;;;;;;
                                  -22344;1;0;false;false;63;95;191;;;
                                  -22345;1;0;false;false;;;;;;
                                  -22346;3;0;false;false;63;95;191;;;
                                  -22349;1;0;false;false;;;;;;
                                  -22350;5;0;false;false;63;95;191;;;
                                  -22355;4;0;false;false;;;;;;
                                  -22359;1;0;false;false;63;95;191;;;
                                  -22360;5;0;false;false;;;;;;
                                  -22365;1;0;false;false;63;95;191;;;
                                  -22366;1;0;false;false;;;;;;
                                  -22367;7;1;false;false;127;159;191;;;
                                  -22374;4;0;false;false;63;95;191;;;
                                  -22378;1;0;false;false;;;;;;
                                  -22379;4;0;false;false;63;95;191;;;
                                  -22383;1;0;false;false;;;;;;
                                  -22384;6;0;false;false;63;95;191;;;
                                  -22390;1;0;false;false;;;;;;
                                  -22391;2;0;false;false;63;95;191;;;
                                  -22393;1;0;false;false;;;;;;
                                  -22394;2;0;false;false;63;95;191;;;
                                  -22396;1;0;false;false;;;;;;
                                  -22397;7;0;false;false;63;95;191;;;
                                  -22404;4;0;false;false;;;;;;
                                  -22408;2;0;false;false;63;95;191;;;
                                  -22410;3;0;false;false;;;;;;
                                  -22413;4;1;false;false;127;0;85;;;
                                  -22417;1;0;false;false;;;;;;
                                  -22418;10;0;false;false;0;0;0;;;
                                  -22428;3;1;false;false;127;0;85;;;
                                  -22431;1;0;false;false;;;;;;
                                  -22432;5;0;false;false;0;0;0;;;
                                  -22437;1;0;false;false;;;;;;
                                  -22438;1;0;false;false;0;0;0;;;
                                  -22439;4;0;false;false;;;;;;
                                  -22443;20;0;false;false;0;0;0;;;
                                  -22463;4;0;false;false;;;;;;
                                  -22467;21;0;false;false;0;0;0;;;
                                  -22488;1;0;false;false;;;;;;
                                  -22489;4;1;false;false;127;0;85;;;
                                  -22493;2;0;false;false;0;0;0;;;
                                  -22495;3;0;false;false;;;;;;
                                  -22498;1;0;false;false;0;0;0;;;
                                  -22499;4;0;false;false;;;;;;
                                  -22503;1;0;false;false;0;0;0;;;
                                  -22504;3;0;false;false;;;;;;
                                  -22507;3;0;false;false;63;95;191;;;
                                  -22510;4;0;false;false;;;;;;
                                  -22514;1;0;false;false;63;95;191;;;
                                  -22515;1;0;false;false;;;;;;
                                  -22516;3;0;false;false;63;95;191;;;
                                  -22519;1;0;false;false;;;;;;
                                  -22520;6;0;false;false;127;127;159;;;
                                  -22526;9;0;false;false;63;95;191;;;
                                  -22535;7;0;false;false;127;127;159;;;
                                  -22542;1;0;false;false;;;;;;
                                  -22543;5;0;false;false;63;95;191;;;
                                  -22548;1;0;false;false;;;;;;
                                  -22549;2;0;false;false;63;95;191;;;
                                  -22551;1;0;false;false;;;;;;
                                  -22552;4;0;false;false;63;95;191;;;
                                  -22556;1;0;false;false;;;;;;
                                  -22557;2;0;false;false;63;95;191;;;
                                  -22559;1;0;false;false;;;;;;
                                  -22560;5;0;false;false;63;95;191;;;
                                  -22565;1;0;false;false;;;;;;
                                  -22566;6;0;false;false;63;95;191;;;
                                  -22572;1;0;false;false;;;;;;
                                  -22573;7;0;false;false;63;95;191;;;
                                  -22580;1;0;false;false;;;;;;
                                  -22581;2;0;false;false;63;95;191;;;
                                  -22583;4;0;false;false;;;;;;
                                  -22587;1;0;false;false;63;95;191;;;
                                  -22588;1;0;false;false;;;;;;
                                  -22589;4;0;false;false;63;95;191;;;
                                  -22593;1;0;false;false;;;;;;
                                  -22594;5;0;false;false;63;95;191;;;
                                  -22599;1;0;false;false;;;;;;
                                  -22600;3;0;false;false;63;95;191;;;
                                  -22603;1;0;false;false;;;;;;
                                  -22604;14;0;false;false;63;95;191;;;
                                  -22618;1;0;false;false;;;;;;
                                  -22619;8;0;false;false;63;95;191;;;
                                  -22627;1;0;false;false;;;;;;
                                  -22628;4;0;false;false;63;95;191;;;
                                  -22632;1;0;false;false;;;;;;
                                  -22633;3;0;false;false;63;95;191;;;
                                  -22636;1;0;false;false;;;;;;
                                  -22637;3;0;false;false;63;95;191;;;
                                  -22640;1;0;false;false;;;;;;
                                  -22641;13;0;false;false;63;95;191;;;
                                  -22654;5;0;false;false;;;;;;
                                  -22659;1;0;false;false;63;95;191;;;
                                  -22660;1;0;false;false;;;;;;
                                  -22661;7;0;false;false;63;95;191;;;
                                  -22668;1;0;false;false;;;;;;
                                  -22669;4;0;false;false;63;95;191;;;
                                  -22673;4;0;false;false;;;;;;
                                  -22677;1;0;false;false;63;95;191;;;
                                  -22678;1;0;false;false;;;;;;
                                  -22679;3;0;false;false;127;127;159;;;
                                  -22682;4;0;false;false;;;;;;
                                  -22686;1;0;false;false;63;95;191;;;
                                  -22687;1;0;false;false;;;;;;
                                  -22688;10;0;false;false;63;95;191;;;
                                  -22698;1;0;false;false;;;;;;
                                  -22699;2;0;false;false;63;95;191;;;
                                  -22701;1;0;false;false;;;;;;
                                  -22702;10;0;false;false;63;95;191;;;
                                  -22712;1;0;false;false;;;;;;
                                  -22713;2;0;false;false;63;95;191;;;
                                  -22715;1;0;false;false;;;;;;
                                  -22716;6;0;false;false;63;95;191;;;
                                  -22722;1;0;false;false;;;;;;
                                  -22723;1;0;false;false;63;95;191;;;
                                  -22724;1;0;false;false;;;;;;
                                  -22725;5;0;false;false;63;95;191;;;
                                  -22730;1;0;false;false;;;;;;
                                  -22731;3;0;false;false;63;95;191;;;
                                  -22734;1;0;false;false;;;;;;
                                  -22735;6;0;false;false;63;95;191;;;
                                  -22741;1;0;false;false;;;;;;
                                  -22742;4;0;false;false;63;95;191;;;
                                  -22746;1;0;false;false;;;;;;
                                  -22747;5;0;false;false;63;95;191;;;
                                  -22752;5;0;false;false;;;;;;
                                  -22757;1;0;false;false;63;95;191;;;
                                  -22758;1;0;false;false;;;;;;
                                  -22759;7;0;false;false;63;95;191;;;
                                  -22766;1;0;false;false;;;;;;
                                  -22767;3;0;false;false;63;95;191;;;
                                  -22770;1;0;false;false;;;;;;
                                  -22771;4;0;false;false;63;95;191;;;
                                  -22775;1;0;false;false;;;;;;
                                  -22776;7;0;false;false;63;95;191;;;
                                  -22783;5;0;false;false;;;;;;
                                  -22788;1;0;false;false;63;95;191;;;
                                  -22789;1;0;false;false;;;;;;
                                  -22790;4;0;false;false;127;127;159;;;
                                  -22794;4;0;false;false;;;;;;
                                  -22798;1;0;false;false;63;95;191;;;
                                  -22799;1;0;false;false;;;;;;
                                  -22800;3;0;false;false;127;127;159;;;
                                  -22803;4;0;false;false;;;;;;
                                  -22807;1;0;false;false;63;95;191;;;
                                  -22808;1;0;false;false;;;;;;
                                  -22809;5;0;false;false;63;95;191;;;
                                  -22814;1;0;false;false;;;;;;
                                  -22815;3;0;false;false;63;95;191;;;
                                  -22818;1;0;false;false;;;;;;
                                  -22819;7;0;false;false;63;95;191;;;
                                  -22826;1;0;false;false;;;;;;
                                  -22827;5;0;false;false;63;95;191;;;
                                  -22832;1;0;false;false;;;;;;
                                  -22833;3;0;false;false;63;95;191;;;
                                  -22836;1;0;false;false;;;;;;
                                  -22837;4;0;false;false;63;95;191;;;
                                  -22841;1;0;false;false;;;;;;
                                  -22842;6;0;false;false;63;95;191;;;
                                  -22848;1;0;false;false;;;;;;
                                  -22849;3;0;false;false;63;95;191;;;
                                  -22852;1;0;false;false;;;;;;
                                  -22853;2;0;false;false;63;95;191;;;
                                  -22855;1;0;false;false;;;;;;
                                  -22856;8;0;false;false;63;95;191;;;
                                  -22864;1;0;false;false;;;;;;
                                  -22865;5;0;false;false;63;95;191;;;
                                  -22870;1;0;false;false;;;;;;
                                  -22871;4;0;false;false;63;95;191;;;
                                  -22875;1;0;false;false;;;;;;
                                  -22876;2;0;false;false;63;95;191;;;
                                  -22878;4;0;false;false;;;;;;
                                  -22882;1;0;false;false;63;95;191;;;
                                  -22883;1;0;false;false;;;;;;
                                  -22884;9;0;false;false;63;95;191;;;
                                  -22893;1;0;false;false;;;;;;
                                  -22894;5;0;false;false;63;95;191;;;
                                  -22899;1;0;false;false;;;;;;
                                  -22900;3;0;false;false;63;95;191;;;
                                  -22903;1;0;false;false;;;;;;
                                  -22904;6;0;false;false;63;95;191;;;
                                  -22910;1;0;false;false;;;;;;
                                  -22911;7;0;false;false;63;95;191;;;
                                  -22918;1;0;false;false;;;;;;
                                  -22919;4;0;false;false;63;95;191;;;
                                  -22923;1;0;false;false;;;;;;
                                  -22924;3;0;false;false;63;95;191;;;
                                  -22927;1;0;false;false;;;;;;
                                  -22928;18;0;false;false;63;95;191;;;
                                  -22946;1;0;false;false;;;;;;
                                  -22947;2;0;false;false;63;95;191;;;
                                  -22949;5;0;false;false;;;;;;
                                  -22954;1;0;false;false;63;95;191;;;
                                  -22955;1;0;false;false;;;;;;
                                  -22956;4;0;false;false;63;95;191;;;
                                  -22960;1;0;false;false;;;;;;
                                  -22961;2;0;false;false;63;95;191;;;
                                  -22963;1;0;false;false;;;;;;
                                  -22964;5;0;false;false;63;95;191;;;
                                  -22969;1;0;false;false;;;;;;
                                  -22970;3;0;false;false;63;95;191;;;
                                  -22973;1;0;false;false;;;;;;
                                  -22974;8;0;false;false;63;95;191;;;
                                  -22982;1;0;false;false;;;;;;
                                  -22983;2;0;false;false;63;95;191;;;
                                  -22985;1;0;false;false;;;;;;
                                  -22986;3;0;false;false;63;95;191;;;
                                  -22989;1;0;false;false;;;;;;
                                  -22990;7;0;false;false;63;95;191;;;
                                  -22997;1;0;false;false;;;;;;
                                  -22998;3;0;false;false;63;95;191;;;
                                  -23001;1;0;false;false;;;;;;
                                  -23002;6;0;false;false;63;95;191;;;
                                  -23008;1;0;false;false;;;;;;
                                  -23009;3;0;false;false;63;95;191;;;
                                  -23012;1;0;false;false;;;;;;
                                  -23013;7;0;false;false;63;95;191;;;
                                  -23020;1;0;false;false;;;;;;
                                  -23021;2;0;false;false;63;95;191;;;
                                  -23023;4;0;false;false;;;;;;
                                  -23027;1;0;false;false;63;95;191;;;
                                  -23028;1;0;false;false;;;;;;
                                  -23029;3;0;false;false;63;95;191;;;
                                  -23032;1;0;false;false;;;;;;
                                  -23033;3;0;false;false;63;95;191;;;
                                  -23036;1;0;false;false;;;;;;
                                  -23037;6;0;false;false;63;95;191;;;
                                  -23043;1;0;false;false;;;;;;
                                  -23044;4;0;false;false;63;95;191;;;
                                  -23048;1;0;false;false;;;;;;
                                  -23049;4;0;false;false;63;95;191;;;
                                  -23053;1;0;false;false;;;;;;
                                  -23054;3;0;false;false;63;95;191;;;
                                  -23057;1;0;false;false;;;;;;
                                  -23058;8;0;false;false;63;95;191;;;
                                  -23066;1;0;false;false;;;;;;
                                  -23067;2;0;false;false;63;95;191;;;
                                  -23069;1;0;false;false;;;;;;
                                  -23070;3;0;false;false;63;95;191;;;
                                  -23073;1;0;false;false;;;;;;
                                  -23074;7;0;false;false;63;95;191;;;
                                  -23081;1;0;false;false;;;;;;
                                  -23082;2;0;false;false;63;95;191;;;
                                  -23084;1;0;false;false;;;;;;
                                  -23085;9;0;false;false;63;95;191;;;
                                  -23094;1;0;false;false;;;;;;
                                  -23095;3;0;false;false;63;95;191;;;
                                  -23098;5;0;false;false;;;;;;
                                  -23103;1;0;false;false;63;95;191;;;
                                  -23104;1;0;false;false;;;;;;
                                  -23105;6;0;false;false;63;95;191;;;
                                  -23111;1;0;false;false;;;;;;
                                  -23112;4;0;false;false;63;95;191;;;
                                  -23116;1;0;false;false;;;;;;
                                  -23117;4;0;false;false;63;95;191;;;
                                  -23121;1;0;false;false;;;;;;
                                  -23122;3;0;false;false;63;95;191;;;
                                  -23125;1;0;false;false;;;;;;
                                  -23126;4;0;false;false;63;95;191;;;
                                  -23130;1;0;false;false;;;;;;
                                  -23131;2;0;false;false;63;95;191;;;
                                  -23133;1;0;false;false;;;;;;
                                  -23134;4;0;false;false;63;95;191;;;
                                  -23138;1;0;false;false;;;;;;
                                  -23139;3;0;false;false;63;95;191;;;
                                  -23142;1;0;false;false;;;;;;
                                  -23143;3;0;false;false;63;95;191;;;
                                  -23146;1;0;false;false;;;;;;
                                  -23147;5;0;false;false;63;95;191;;;
                                  -23152;1;0;false;false;;;;;;
                                  -23153;5;0;false;false;63;95;191;;;
                                  -23158;4;0;false;false;;;;;;
                                  -23162;1;0;false;false;63;95;191;;;
                                  -23163;1;0;false;false;;;;;;
                                  -23164;4;0;false;false;127;127;159;;;
                                  -23168;4;0;false;false;;;;;;
                                  -23172;2;0;false;false;63;95;191;;;
                                  -23174;3;0;false;false;;;;;;
                                  -23177;5;1;false;false;127;0;85;;;
                                  -23182;1;0;false;false;;;;;;
                                  -23183;9;0;false;false;0;0;0;;;
                                  -23192;1;0;false;false;;;;;;
                                  -23193;7;1;false;false;127;0;85;;;
                                  -23200;1;0;false;false;;;;;;
                                  -23201;10;0;false;false;0;0;0;;;
                                  -23211;1;0;false;false;;;;;;
                                  -23212;1;0;false;false;0;0;0;;;
                                  -23213;4;0;false;false;;;;;;
                                  -23217;6;1;false;false;127;0;85;;;
                                  -23223;1;0;false;false;;;;;;
                                  -23224;5;1;false;false;127;0;85;;;
                                  -23229;1;0;false;false;;;;;;
                                  -23230;3;1;false;false;127;0;85;;;
                                  -23233;1;0;false;false;;;;;;
                                  -23234;18;0;false;false;0;0;0;;;
                                  -23252;1;0;false;false;;;;;;
                                  -23253;1;0;false;false;0;0;0;;;
                                  -23254;1;0;false;false;;;;;;
                                  -23255;2;0;false;false;0;0;0;;;
                                  -23257;4;0;false;false;;;;;;
                                  -23261;6;1;false;false;127;0;85;;;
                                  -23267;1;0;false;false;;;;;;
                                  -23268;5;1;false;false;127;0;85;;;
                                  -23273;1;0;false;false;;;;;;
                                  -23274;3;1;false;false;127;0;85;;;
                                  -23277;1;0;false;false;;;;;;
                                  -23278;18;0;false;false;0;0;0;;;
                                  -23296;1;0;false;false;;;;;;
                                  -23297;1;0;false;false;0;0;0;;;
                                  -23298;1;0;false;false;;;;;;
                                  -23299;2;0;false;false;0;0;0;;;
                                  -23301;4;0;false;false;;;;;;
                                  -23305;6;0;false;false;0;0;0;;;
                                  -23311;1;0;false;false;;;;;;
                                  -23312;10;0;false;false;0;0;0;;;
                                  -23322;1;0;false;false;;;;;;
                                  -23323;1;0;false;false;0;0;0;;;
                                  -23324;1;0;false;false;;;;;;
                                  -23325;3;1;false;false;127;0;85;;;
                                  -23328;1;0;false;false;;;;;;
                                  -23329;9;0;false;false;0;0;0;;;
                                  -23338;4;0;false;false;;;;;;
                                  -23342;7;1;false;false;127;0;85;;;
                                  -23349;1;0;false;false;;;;;;
                                  -23350;13;0;false;false;0;0;0;;;
                                  -23363;7;0;false;false;;;;;;
                                  -23370;3;0;false;false;63;95;191;;;
                                  -23373;4;0;false;false;;;;;;
                                  -23377;1;0;false;false;63;95;191;;;
                                  -23378;1;0;false;false;;;;;;
                                  -23379;7;0;false;false;63;95;191;;;
                                  -23386;1;0;false;false;;;;;;
                                  -23387;1;0;false;false;63;95;191;;;
                                  -23388;1;0;false;false;;;;;;
                                  -23389;3;0;false;false;63;95;191;;;
                                  -23392;1;0;false;false;;;;;;
                                  -23393;6;0;false;false;63;95;191;;;
                                  -23399;1;0;false;false;;;;;;
                                  -23400;4;0;false;false;63;95;191;;;
                                  -23404;1;0;false;false;;;;;;
                                  -23405;6;0;false;false;63;95;191;;;
                                  -23411;1;0;false;false;;;;;;
                                  -23412;7;0;false;false;63;95;191;;;
                                  -23419;1;0;false;false;;;;;;
                                  -23420;8;0;false;false;63;95;191;;;
                                  -23428;1;0;false;false;;;;;;
                                  -23429;2;0;false;false;63;95;191;;;
                                  -23431;1;0;false;false;;;;;;
                                  -23432;6;0;false;false;63;95;191;;;
                                  -23438;1;0;false;false;;;;;;
                                  -23439;7;0;false;false;63;95;191;;;
                                  -23446;4;0;false;false;;;;;;
                                  -23450;1;0;false;false;63;95;191;;;
                                  -23451;1;0;false;false;;;;;;
                                  -23452;2;0;false;false;63;95;191;;;
                                  -23454;1;0;false;false;;;;;;
                                  -23455;3;0;false;false;63;95;191;;;
                                  -23458;1;0;false;false;;;;;;
                                  -23459;9;0;false;false;63;95;191;;;
                                  -23468;2;0;false;false;;;;;;
                                  -23470;6;0;false;false;127;127;159;;;
                                  -23476;5;0;false;false;63;95;191;;;
                                  -23481;7;0;false;false;127;127;159;;;
                                  -23488;1;0;false;false;;;;;;
                                  -23489;3;0;false;false;63;95;191;;;
                                  -23492;1;0;false;false;;;;;;
                                  -23493;6;0;false;false;127;127;159;;;
                                  -23499;6;0;false;false;63;95;191;;;
                                  -23505;7;0;false;false;127;127;159;;;
                                  -23512;3;0;false;false;63;95;191;;;
                                  -23515;1;0;false;false;;;;;;
                                  -23516;2;0;false;false;63;95;191;;;
                                  -23518;1;0;false;false;;;;;;
                                  -23519;3;0;false;false;63;95;191;;;
                                  -23522;1;0;false;false;;;;;;
                                  -23523;2;0;false;false;63;95;191;;;
                                  -23525;1;0;false;false;;;;;;
                                  -23526;7;0;false;false;63;95;191;;;
                                  -23533;1;0;false;false;;;;;;
                                  -23534;7;0;false;false;63;95;191;;;
                                  -23541;5;0;false;false;;;;;;
                                  -23546;1;0;false;false;63;95;191;;;
                                  -23547;1;0;false;false;;;;;;
                                  -23548;6;0;false;false;63;95;191;;;
                                  -23554;4;0;false;false;;;;;;
                                  -23558;1;0;false;false;63;95;191;;;
                                  -23559;1;0;false;false;;;;;;
                                  -23560;3;0;false;false;127;127;159;;;
                                  -23563;4;0;false;false;;;;;;
                                  -23567;1;0;false;false;63;95;191;;;
                                  -23568;4;0;false;false;;;;;;
                                  -23572;1;0;false;false;63;95;191;;;
                                  -23573;1;0;false;false;;;;;;
                                  -23574;7;1;false;false;127;159;191;;;
                                  -23581;5;0;false;false;63;95;191;;;
                                  -23586;1;0;false;false;;;;;;
                                  -23587;5;0;false;false;63;95;191;;;
                                  -23592;1;0;false;false;;;;;;
                                  -23593;6;0;false;false;63;95;191;;;
                                  -23599;1;0;false;false;;;;;;
                                  -23600;2;0;false;false;63;95;191;;;
                                  -23602;1;0;false;false;;;;;;
                                  -23603;7;0;false;false;63;95;191;;;
                                  -23610;1;0;false;false;;;;;;
                                  -23611;2;0;false;false;63;95;191;;;
                                  -23613;1;0;false;false;;;;;;
                                  -23614;6;0;false;false;63;95;191;;;
                                  -23620;1;0;false;false;;;;;;
                                  -23621;1;0;false;false;63;95;191;;;
                                  -23622;1;0;false;false;;;;;;
                                  -23623;5;0;false;false;63;95;191;;;
                                  -23628;1;0;false;false;;;;;;
                                  -23629;4;0;false;false;63;95;191;;;
                                  -23633;5;0;false;false;;;;;;
                                  -23638;1;0;false;false;63;95;191;;;
                                  -23639;2;0;false;false;;;;;;
                                  -23641;9;0;false;false;63;95;191;;;
                                  -23650;1;0;false;false;;;;;;
                                  -23651;2;0;false;false;63;95;191;;;
                                  -23653;1;0;false;false;;;;;;
                                  -23654;8;0;false;false;63;95;191;;;
                                  -23662;4;0;false;false;;;;;;
                                  -23666;1;0;false;false;63;95;191;;;
                                  -23667;1;0;false;false;;;;;;
                                  -23668;7;1;false;false;127;159;191;;;
                                  -23675;6;0;false;false;63;95;191;;;
                                  -23681;1;0;false;false;;;;;;
                                  -23682;6;0;false;false;63;95;191;;;
                                  -23688;1;0;false;false;;;;;;
                                  -23689;2;0;false;false;63;95;191;;;
                                  -23691;1;0;false;false;;;;;;
                                  -23692;7;0;false;false;63;95;191;;;
                                  -23699;1;0;false;false;;;;;;
                                  -23700;2;0;false;false;63;95;191;;;
                                  -23702;1;0;false;false;;;;;;
                                  -23703;5;0;false;false;63;95;191;;;
                                  -23708;4;0;false;false;;;;;;
                                  -23712;2;0;false;false;63;95;191;;;
                                  -23714;3;0;false;false;;;;;;
                                  -23717;6;1;false;false;127;0;85;;;
                                  -23723;1;0;false;false;;;;;;
                                  -23724;10;0;false;false;0;0;0;;;
                                  -23734;3;1;false;false;127;0;85;;;
                                  -23737;1;0;false;false;;;;;;
                                  -23738;6;0;false;false;0;0;0;;;
                                  -23744;1;0;false;false;;;;;;
                                  -23745;3;1;false;false;127;0;85;;;
                                  -23748;1;0;false;false;;;;;;
                                  -23749;7;0;false;false;0;0;0;;;
                                  -23756;1;0;false;false;;;;;;
                                  -23757;1;0;false;false;0;0;0;;;
                                  -23758;4;0;false;false;;;;;;
                                  -23762;5;1;false;false;127;0;85;;;
                                  -23767;7;0;false;false;0;0;0;;;
                                  -23774;1;0;false;false;;;;;;
                                  -23775;8;0;false;false;0;0;0;;;
                                  -23783;4;0;false;false;;;;;;
                                  -23787;39;0;false;false;0;0;0;;;
                                  -23826;4;0;false;false;;;;;;
                                  -23830;39;0;false;false;0;0;0;;;
                                  -23869;6;0;false;false;;;;;;
                                  -23875;13;0;false;false;0;0;0;;;
                                  -23888;3;0;false;false;;;;;;
                                  -23891;1;0;false;false;0;0;0;;;
                                  -23892;3;0;false;false;;;;;;
                                  -23895;3;0;false;false;63;95;191;;;
                                  -23898;4;0;false;false;;;;;;
                                  -23902;1;0;false;false;63;95;191;;;
                                  -23903;1;0;false;false;;;;;;
                                  -23904;6;0;false;false;63;95;191;;;
                                  -23910;1;0;false;false;;;;;;
                                  -23911;3;0;false;false;63;95;191;;;
                                  -23914;1;0;false;false;;;;;;
                                  -23915;3;0;false;false;63;95;191;;;
                                  -23918;1;0;false;false;;;;;;
                                  -23919;7;0;false;false;63;95;191;;;
                                  -23926;1;0;false;false;;;;;;
                                  -23927;4;0;false;false;63;95;191;;;
                                  -23931;1;0;false;false;;;;;;
                                  -23932;6;0;false;false;63;95;191;;;
                                  -23938;1;0;false;false;;;;;;
                                  -23939;2;0;false;false;63;95;191;;;
                                  -23941;1;0;false;false;;;;;;
                                  -23942;4;0;false;false;63;95;191;;;
                                  -23946;1;0;false;false;;;;;;
                                  -23947;7;0;false;false;63;95;191;;;
                                  -23954;1;0;false;false;;;;;;
                                  -23955;3;0;false;false;63;95;191;;;
                                  -23958;1;0;false;false;;;;;;
                                  -23959;2;0;false;false;63;95;191;;;
                                  -23961;1;0;false;false;;;;;;
                                  -23962;8;0;false;false;63;95;191;;;
                                  -23970;4;0;false;false;;;;;;
                                  -23974;1;0;false;false;63;95;191;;;
                                  -23975;1;0;false;false;;;;;;
                                  -23976;3;0;false;false;127;127;159;;;
                                  -23979;5;0;false;false;63;95;191;;;
                                  -23984;4;0;false;false;127;127;159;;;
                                  -23988;2;0;false;false;;;;;;
                                  -23990;6;0;false;false;127;127;159;;;
                                  -23996;10;0;false;false;63;95;191;;;
                                  -24006;7;0;false;false;127;127;159;;;
                                  -24013;1;0;false;false;;;;;;
                                  -24014;4;0;false;false;63;95;191;;;
                                  -24018;1;0;false;false;;;;;;
                                  -24019;3;0;false;false;63;95;191;;;
                                  -24022;1;0;false;false;;;;;;
                                  -24023;6;0;false;false;63;95;191;;;
                                  -24029;1;0;false;false;;;;;;
                                  -24030;1;0;false;false;63;95;191;;;
                                  -24031;1;0;false;false;;;;;;
                                  -24032;5;0;false;false;63;95;191;;;
                                  -24037;1;0;false;false;;;;;;
                                  -24038;3;0;false;false;63;95;191;;;
                                  -24041;1;0;false;false;;;;;;
                                  -24042;6;0;false;false;63;95;191;;;
                                  -24048;1;0;false;false;;;;;;
                                  -24049;5;0;false;false;63;95;191;;;
                                  -24054;5;0;false;false;;;;;;
                                  -24059;1;0;false;false;63;95;191;;;
                                  -24060;1;0;false;false;;;;;;
                                  -24061;6;0;false;false;127;127;159;;;
                                  -24067;7;0;false;false;63;95;191;;;
                                  -24074;7;0;false;false;127;127;159;;;
                                  -24081;1;0;false;false;;;;;;
                                  -24082;3;0;false;false;63;95;191;;;
                                  -24085;1;0;false;false;;;;;;
                                  -24086;4;0;false;false;63;95;191;;;
                                  -24090;1;0;false;false;;;;;;
                                  -24091;7;0;false;false;63;95;191;;;
                                  -24098;4;0;false;false;;;;;;
                                  -24102;2;0;false;false;63;95;191;;;
                                  -24104;3;0;false;false;;;;;;
                                  -24107;6;1;false;false;127;0;85;;;
                                  -24113;1;0;false;false;;;;;;
                                  -24114;4;1;false;false;127;0;85;;;
                                  -24118;1;0;false;false;;;;;;
                                  -24119;7;0;false;false;0;0;0;;;
                                  -24126;1;0;false;false;;;;;;
                                  -24127;1;0;false;false;0;0;0;;;
                                  -24128;4;0;false;false;;;;;;
                                  -24132;2;1;false;false;127;0;85;;;
                                  -24134;1;0;false;false;;;;;;
                                  -24135;13;0;false;false;0;0;0;;;
                                  -24148;1;0;false;false;;;;;;
                                  -24149;1;0;false;false;0;0;0;;;
                                  -24150;5;0;false;false;;;;;;
                                  -24155;14;0;false;false;0;0;0;;;
                                  -24169;5;0;false;false;;;;;;
                                  -24174;6;0;false;false;0;0;0;;;
                                  -24180;8;0;false;false;42;0;255;;;
                                  -24188;2;0;false;false;0;0;0;;;
                                  -24190;5;0;false;false;;;;;;
                                  -24195;5;1;false;false;127;0;85;;;
                                  -24200;9;0;false;false;0;0;0;;;
                                  -24209;4;0;false;false;;;;;;
                                  -24213;1;0;false;false;0;0;0;;;
                                  -24214;3;0;false;false;;;;;;
                                  -24217;1;0;false;false;0;0;0;;;
                                  -24218;4;0;false;false;;;;;;
                                  -24222;3;0;false;false;63;95;191;;;
                                  -24225;4;0;false;false;;;;;;
                                  -24229;1;0;false;false;63;95;191;;;
                                  -24230;1;0;false;false;;;;;;
                                  -24231;7;0;false;false;63;95;191;;;
                                  -24238;1;0;false;false;;;;;;
                                  -24239;3;0;false;false;63;95;191;;;
                                  -24242;1;0;false;false;;;;;;
                                  -24243;5;0;false;false;63;95;191;;;
                                  -24248;1;0;false;false;;;;;;
                                  -24249;2;0;false;false;63;95;191;;;
                                  -24251;1;0;false;false;;;;;;
                                  -24252;3;0;false;false;63;95;191;;;
                                  -24255;1;0;false;false;;;;;;
                                  -24256;9;0;false;false;63;95;191;;;
                                  -24265;1;0;false;false;;;;;;
                                  -24266;5;0;false;false;63;95;191;;;
                                  -24271;1;0;false;false;;;;;;
                                  -24272;2;0;false;false;63;95;191;;;
                                  -24274;1;0;false;false;;;;;;
                                  -24275;3;0;false;false;63;95;191;;;
                                  -24278;1;0;false;false;;;;;;
                                  -24279;3;0;false;false;63;95;191;;;
                                  -24282;1;0;false;false;;;;;;
                                  -24283;5;0;false;false;63;95;191;;;
                                  -24288;1;0;false;false;;;;;;
                                  -24289;6;0;false;false;63;95;191;;;
                                  -24295;4;0;false;false;;;;;;
                                  -24299;1;0;false;false;63;95;191;;;
                                  -24300;1;0;false;false;;;;;;
                                  -24301;3;0;false;false;127;127;159;;;
                                  -24304;4;0;false;false;;;;;;
                                  -24308;1;0;false;false;63;95;191;;;
                                  -24309;4;0;false;false;;;;;;
                                  -24313;1;0;false;false;63;95;191;;;
                                  -24314;1;0;false;false;;;;;;
                                  -24315;7;1;false;false;127;159;191;;;
                                  -24322;5;0;false;false;63;95;191;;;
                                  -24327;1;0;false;false;;;;;;
                                  -24328;3;0;false;false;63;95;191;;;
                                  -24331;1;0;false;false;;;;;;
                                  -24332;5;0;false;false;63;95;191;;;
                                  -24337;4;0;false;false;;;;;;
                                  -24341;1;0;false;false;63;95;191;;;
                                  -24342;1;0;false;false;;;;;;
                                  -24343;7;1;false;false;127;159;191;;;
                                  -24350;12;0;false;false;63;95;191;;;
                                  -24362;1;0;false;false;;;;;;
                                  -24363;6;0;false;false;63;95;191;;;
                                  -24369;1;0;false;false;;;;;;
                                  -24370;5;0;false;false;63;95;191;;;
                                  -24375;1;0;false;false;;;;;;
                                  -24376;2;0;false;false;63;95;191;;;
                                  -24378;1;0;false;false;;;;;;
                                  -24379;5;0;false;false;63;95;191;;;
                                  -24384;1;0;false;false;;;;;;
                                  -24385;2;0;false;false;63;95;191;;;
                                  -24387;1;0;false;false;;;;;;
                                  -24388;4;0;false;false;63;95;191;;;
                                  -24392;4;0;false;false;;;;;;
                                  -24396;1;0;false;false;63;95;191;;;
                                  -24397;1;0;false;false;;;;;;
                                  -24398;8;1;false;false;127;159;191;;;
                                  -24406;3;0;false;false;63;95;191;;;
                                  -24409;1;0;false;false;;;;;;
                                  -24410;5;0;false;false;63;95;191;;;
                                  -24415;1;0;false;false;;;;;;
                                  -24416;2;0;false;false;63;95;191;;;
                                  -24418;1;0;false;false;;;;;;
                                  -24419;3;0;false;false;63;95;191;;;
                                  -24422;1;0;false;false;;;;;;
                                  -24423;9;0;false;false;63;95;191;;;
                                  -24432;1;0;false;false;;;;;;
                                  -24433;5;0;false;false;63;95;191;;;
                                  -24438;1;0;false;false;;;;;;
                                  -24439;2;0;false;false;63;95;191;;;
                                  -24441;1;0;false;false;;;;;;
                                  -24442;3;0;false;false;63;95;191;;;
                                  -24445;1;0;false;false;;;;;;
                                  -24446;3;0;false;false;63;95;191;;;
                                  -24449;1;0;false;false;;;;;;
                                  -24450;5;0;false;false;63;95;191;;;
                                  -24455;1;0;false;false;;;;;;
                                  -24456;5;0;false;false;63;95;191;;;
                                  -24461;4;0;false;false;;;;;;
                                  -24465;1;0;false;false;63;95;191;;;
                                  -24466;2;0;false;false;;;;;;
                                  -24468;2;0;false;false;63;95;191;;;
                                  -24470;1;0;false;false;;;;;;
                                  -24471;14;0;false;false;63;95;191;;;
                                  -24485;1;0;false;false;;;;;;
                                  -24486;2;0;false;false;63;95;191;;;
                                  -24488;1;0;false;false;;;;;;
                                  -24489;7;0;false;false;63;95;191;;;
                                  -24496;1;0;false;false;;;;;;
                                  -24497;2;0;false;false;63;95;191;;;
                                  -24499;1;0;false;false;;;;;;
                                  -24500;5;0;false;false;63;95;191;;;
                                  -24505;4;0;false;false;;;;;;
                                  -24509;2;0;false;false;63;95;191;;;
                                  -24511;3;0;false;false;;;;;;
                                  -24514;3;1;false;false;127;0;85;;;
                                  -24517;1;0;false;false;;;;;;
                                  -24518;19;0;false;false;0;0;0;;;
                                  -24537;1;0;false;false;;;;;;
                                  -24538;6;0;false;false;0;0;0;;;
                                  -24544;1;0;false;false;;;;;;
                                  -24545;3;1;false;false;127;0;85;;;
                                  -24548;1;0;false;false;;;;;;
                                  -24549;13;0;false;false;0;0;0;;;
                                  -24562;1;0;false;false;;;;;;
                                  -24563;1;0;false;false;0;0;0;;;
                                  -24564;4;0;false;false;;;;;;
                                  -24568;3;1;false;false;127;0;85;;;
                                  -24571;1;0;false;false;;;;;;
                                  -24572;6;0;false;false;0;0;0;;;
                                  -24578;8;0;false;false;;;;;;
                                  -24586;2;1;false;false;127;0;85;;;
                                  -24588;1;0;false;false;;;;;;
                                  -24589;6;0;false;false;0;0;0;;;
                                  -24595;1;0;false;false;;;;;;
                                  -24596;2;0;false;false;0;0;0;;;
                                  -24598;1;0;false;false;;;;;;
                                  -24599;4;1;false;false;127;0;85;;;
                                  -24603;1;0;false;false;0;0;0;;;
                                  -24604;1;0;false;false;;;;;;
                                  -24605;1;0;false;false;0;0;0;;;
                                  -24606;5;0;false;false;;;;;;
                                  -24611;5;0;false;false;0;0;0;;;
                                  -24616;1;0;false;false;;;;;;
                                  -24617;1;0;false;false;0;0;0;;;
                                  -24618;1;0;false;false;;;;;;
                                  -24619;13;0;false;false;0;0;0;;;
                                  -24632;4;0;false;false;;;;;;
                                  -24636;1;0;false;false;0;0;0;;;
                                  -24637;4;0;false;false;;;;;;
                                  -24641;4;1;false;false;127;0;85;;;
                                  -24645;1;0;false;false;;;;;;
                                  -24646;1;0;false;false;0;0;0;;;
                                  -24647;7;0;false;false;;;;;;
                                  -24654;5;0;false;false;0;0;0;;;
                                  -24659;1;0;false;false;;;;;;
                                  -24660;1;0;false;false;0;0;0;;;
                                  -24661;1;0;false;false;;;;;;
                                  -24662;26;0;false;false;0;0;0;;;
                                  -24688;5;0;false;false;;;;;;
                                  -24693;2;1;false;false;127;0;85;;;
                                  -24695;1;0;false;false;;;;;;
                                  -24696;6;0;false;false;0;0;0;;;
                                  -24702;1;0;false;false;;;;;;
                                  -24703;2;0;false;false;0;0;0;;;
                                  -24705;1;0;false;false;;;;;;
                                  -24706;3;0;false;false;0;0;0;;;
                                  -24709;1;0;false;false;;;;;;
                                  -24710;1;0;false;false;0;0;0;;;
                                  -24711;6;0;false;false;;;;;;
                                  -24717;5;0;false;false;0;0;0;;;
                                  -24722;1;0;false;false;;;;;;
                                  -24723;1;0;false;false;0;0;0;;;
                                  -24724;1;0;false;false;;;;;;
                                  -24725;18;0;false;false;0;0;0;;;
                                  -24743;6;0;false;false;;;;;;
                                  -24749;29;0;false;false;0;0;0;;;
                                  -24778;5;0;false;false;;;;;;
                                  -24783;1;0;false;false;0;0;0;;;
                                  -24784;4;0;false;false;;;;;;
                                  -24788;1;0;false;false;0;0;0;;;
                                  -24789;4;0;false;false;;;;;;
                                  -24793;6;1;false;false;127;0;85;;;
                                  -24799;1;0;false;false;;;;;;
                                  -24800;6;0;false;false;0;0;0;;;
                                  -24806;3;0;false;false;;;;;;
                                  -24809;1;0;false;false;0;0;0;;;
                                  -24810;3;0;false;false;;;;;;
                                  -24813;3;0;false;false;63;95;191;;;
                                  -24816;4;0;false;false;;;;;;
                                  -24820;1;0;false;false;63;95;191;;;
                                  -24821;1;0;false;false;;;;;;
                                  -24822;10;0;false;false;63;95;191;;;
                                  -24832;1;0;false;false;;;;;;
                                  -24833;2;0;false;false;63;95;191;;;
                                  -24835;1;0;false;false;;;;;;
                                  -24836;7;0;false;false;63;95;191;;;
                                  -24843;1;0;false;false;;;;;;
                                  -24844;3;0;false;false;63;95;191;;;
                                  -24847;1;0;false;false;;;;;;
                                  -24848;6;0;false;false;63;95;191;;;
                                  -24854;1;0;false;false;;;;;;
                                  -24855;2;0;false;false;63;95;191;;;
                                  -24857;1;0;false;false;;;;;;
                                  -24858;8;0;false;false;63;95;191;;;
                                  -24866;4;0;false;false;;;;;;
                                  -24870;1;0;false;false;63;95;191;;;
                                  -24871;1;0;false;false;;;;;;
                                  -24872;5;0;false;false;63;95;191;;;
                                  -24877;1;0;false;false;;;;;;
                                  -24878;5;0;false;false;63;95;191;;;
                                  -24883;1;0;false;false;;;;;;
                                  -24884;7;0;false;false;63;95;191;;;
                                  -24891;1;0;false;false;;;;;;
                                  -24892;3;0;false;false;63;95;191;;;
                                  -24895;1;0;false;false;;;;;;
                                  -24896;2;0;false;false;63;95;191;;;
                                  -24898;1;0;false;false;;;;;;
                                  -24899;7;0;false;false;63;95;191;;;
                                  -24906;1;0;false;false;;;;;;
                                  -24907;8;0;false;false;63;95;191;;;
                                  -24915;1;0;false;false;;;;;;
                                  -24916;2;0;false;false;63;95;191;;;
                                  -24918;1;0;false;false;;;;;;
                                  -24919;3;0;false;false;63;95;191;;;
                                  -24922;4;0;false;false;;;;;;
                                  -24926;2;0;false;false;63;95;191;;;
                                  -24928;3;0;false;false;;;;;;
                                  -24931;4;1;false;false;127;0;85;;;
                                  -24935;1;0;false;false;;;;;;
                                  -24936;12;0;false;false;0;0;0;;;
                                  -24948;1;0;false;false;;;;;;
                                  -24949;1;0;false;false;0;0;0;;;
                                  -24950;4;0;false;false;;;;;;
                                  -24954;5;1;false;false;127;0;85;;;
                                  -24959;1;0;false;false;;;;;;
                                  -24960;6;0;false;false;0;0;0;;;
                                  -24966;1;0;false;false;;;;;;
                                  -24967;5;0;false;false;0;0;0;;;
                                  -24972;1;0;false;false;;;;;;
                                  -24973;1;0;false;false;0;0;0;;;
                                  -24974;1;0;false;false;;;;;;
                                  -24975;12;0;false;false;42;0;255;;;
                                  -24987;1;0;false;false;0;0;0;;;
                                  -24988;4;0;false;false;;;;;;
                                  -24992;5;1;false;false;127;0;85;;;
                                  -24997;1;0;false;false;;;;;;
                                  -24998;6;0;false;false;0;0;0;;;
                                  -25004;1;0;false;false;;;;;;
                                  -25005;5;0;false;false;0;0;0;;;
                                  -25010;1;0;false;false;;;;;;
                                  -25011;1;0;false;false;0;0;0;;;
                                  -25012;1;0;false;false;;;;;;
                                  -25013;12;0;false;false;42;0;255;;;
                                  -25025;1;0;false;false;0;0;0;;;
                                  -25026;4;0;false;false;;;;;;
                                  -25030;5;1;false;false;127;0;85;;;
                                  -25035;1;0;false;false;;;;;;
                                  -25036;6;0;false;false;0;0;0;;;
                                  -25042;1;0;false;false;;;;;;
                                  -25043;5;0;false;false;0;0;0;;;
                                  -25048;1;0;false;false;;;;;;
                                  -25049;1;0;false;false;0;0;0;;;
                                  -25050;1;0;false;false;;;;;;
                                  -25051;12;0;false;false;42;0;255;;;
                                  -25063;1;0;false;false;0;0;0;;;
                                  -25064;6;0;false;false;;;;;;
                                  -25070;5;1;false;false;127;0;85;;;
                                  -25075;1;0;false;false;;;;;;
                                  -25076;6;0;false;false;0;0;0;;;
                                  -25082;1;0;false;false;;;;;;
                                  -25083;5;0;false;false;0;0;0;;;
                                  -25088;1;0;false;false;;;;;;
                                  -25089;1;0;false;false;0;0;0;;;
                                  -25090;1;0;false;false;;;;;;
                                  -25091;12;0;false;false;42;0;255;;;
                                  -25103;1;0;false;false;0;0;0;;;
                                  -25104;4;0;false;false;;;;;;
                                  -25108;6;0;false;false;0;0;0;;;
                                  -25114;1;0;false;false;;;;;;
                                  -25115;6;0;false;false;0;0;0;;;
                                  -25121;1;0;false;false;;;;;;
                                  -25122;1;0;false;false;0;0;0;;;
                                  -25123;1;0;false;false;;;;;;
                                  -25124;19;0;false;false;0;0;0;;;
                                  -25143;9;0;false;false;42;0;255;;;
                                  -25152;16;0;false;false;0;0;0;;;
                                  -25168;4;0;false;false;;;;;;
                                  -25172;6;0;false;false;0;0;0;;;
                                  -25178;1;0;false;false;;;;;;
                                  -25179;9;0;false;false;0;0;0;;;
                                  -25188;1;0;false;false;;;;;;
                                  -25189;1;0;false;false;0;0;0;;;
                                  -25190;1;0;false;false;;;;;;
                                  -25191;19;0;false;false;0;0;0;;;
                                  -25210;12;0;false;false;42;0;255;;;
                                  -25222;2;0;false;false;0;0;0;;;
                                  -25224;4;0;false;false;;;;;;
                                  -25228;3;1;false;false;127;0;85;;;
                                  -25231;1;0;false;false;;;;;;
                                  -25232;12;0;false;false;0;0;0;;;
                                  -25244;1;0;false;false;;;;;;
                                  -25245;1;0;false;false;0;0;0;;;
                                  -25246;1;0;false;false;;;;;;
                                  -25247;2;0;false;false;0;0;0;;;
                                  -25249;8;0;false;false;;;;;;
                                  -25257;2;1;false;false;127;0;85;;;
                                  -25259;1;0;false;false;;;;;;
                                  -25260;25;0;false;false;0;0;0;;;
                                  -25285;1;0;false;false;;;;;;
                                  -25286;2;0;false;false;0;0;0;;;
                                  -25288;1;0;false;false;;;;;;
                                  -25289;9;0;false;false;0;0;0;;;
                                  -25298;1;0;false;false;;;;;;
                                  -25299;2;0;false;false;0;0;0;;;
                                  -25301;1;0;false;false;;;;;;
                                  -25302;4;1;false;false;127;0;85;;;
                                  -25306;1;0;false;false;0;0;0;;;
                                  -25307;1;0;false;false;;;;;;
                                  -25308;1;0;false;false;0;0;0;;;
                                  -25309;5;0;false;false;;;;;;
                                  -25314;3;1;false;false;127;0;85;;;
                                  -25317;1;0;false;false;;;;;;
                                  -25318;10;0;false;false;0;0;0;;;
                                  -25328;1;0;false;false;;;;;;
                                  -25329;1;0;false;false;0;0;0;;;
                                  -25330;1;0;false;false;;;;;;
                                  -25331;18;0;false;false;0;0;0;;;
                                  -25349;3;0;false;false;42;0;255;;;
                                  -25352;2;0;false;false;0;0;0;;;
                                  -25354;5;0;false;false;;;;;;
                                  -25359;2;1;false;false;127;0;85;;;
                                  -25361;1;0;false;false;;;;;;
                                  -25362;11;0;false;false;0;0;0;;;
                                  -25373;1;0;false;false;;;;;;
                                  -25374;2;0;false;false;0;0;0;;;
                                  -25376;1;0;false;false;;;;;;
                                  -25377;3;0;false;false;0;0;0;;;
                                  -25380;1;0;false;false;;;;;;
                                  -25381;1;0;false;false;0;0;0;;;
                                  -25382;6;0;false;false;;;;;;
                                  -25388;9;0;false;false;0;0;0;;;
                                  -25397;1;0;false;false;;;;;;
                                  -25398;1;0;false;false;0;0;0;;;
                                  -25399;1;0;false;false;;;;;;
                                  -25400;22;0;false;false;0;0;0;;;
                                  -25422;1;0;false;false;;;;;;
                                  -25423;12;0;false;false;0;0;0;;;
                                  -25435;6;0;false;false;;;;;;
                                  -25441;3;1;false;false;127;0;85;;;
                                  -25444;1;0;false;false;;;;;;
                                  -25445;1;0;false;false;0;0;0;;;
                                  -25446;7;0;false;false;;;;;;
                                  -25453;12;0;false;false;0;0;0;;;
                                  -25465;1;0;false;false;;;;;;
                                  -25466;1;0;false;false;0;0;0;;;
                                  -25467;1;0;false;false;;;;;;
                                  -25468;28;0;false;false;0;0;0;;;
                                  -25496;6;0;false;false;;;;;;
                                  -25502;1;0;false;false;0;0;0;;;
                                  -25503;6;0;false;false;;;;;;
                                  -25509;5;1;false;false;127;0;85;;;
                                  -25514;1;0;false;false;;;;;;
                                  -25515;22;0;false;false;0;0;0;;;
                                  -25537;1;0;false;false;;;;;;
                                  -25538;10;0;false;false;0;0;0;;;
                                  -25548;1;0;false;false;;;;;;
                                  -25549;1;0;false;false;0;0;0;;;
                                  -25550;7;0;false;false;;;;;;
                                  -25557;54;0;false;false;63;127;95;;;
                                  -25611;5;0;false;false;;;;;;
                                  -25616;31;0;false;false;63;127;95;;;
                                  -25647;4;0;false;false;;;;;;
                                  -25651;1;0;false;false;0;0;0;;;
                                  -25652;5;0;false;false;;;;;;
                                  -25657;1;0;false;false;0;0;0;;;
                                  -25658;4;0;false;false;;;;;;
                                  -25662;1;0;false;false;0;0;0;;;
                                  -25663;4;0;false;false;;;;;;
                                  -25667;2;1;false;false;127;0;85;;;
                                  -25669;1;0;false;false;;;;;;
                                  -25670;26;0;false;false;0;0;0;;;
                                  -25696;1;0;false;false;;;;;;
                                  -25697;2;0;false;false;0;0;0;;;
                                  -25699;5;0;false;false;;;;;;
                                  -25704;25;0;false;false;0;0;0;;;
                                  -25729;1;0;false;false;;;;;;
                                  -25730;2;0;false;false;0;0;0;;;
                                  -25732;5;0;false;false;;;;;;
                                  -25737;25;0;false;false;0;0;0;;;
                                  -25762;1;0;false;false;;;;;;
                                  -25763;2;0;false;false;0;0;0;;;
                                  -25765;5;0;false;false;;;;;;
                                  -25770;26;0;false;false;0;0;0;;;
                                  -25796;1;0;false;false;;;;;;
                                  -25797;2;0;false;false;0;0;0;;;
                                  -25799;1;0;false;false;;;;;;
                                  -25800;12;0;false;false;0;0;0;;;
                                  -25812;1;0;false;false;;;;;;
                                  -25813;1;0;false;false;0;0;0;;;
                                  -25814;1;0;false;false;;;;;;
                                  -25815;3;0;false;false;0;0;0;;;
                                  -25818;1;0;false;false;;;;;;
                                  -25819;1;0;false;false;0;0;0;;;
                                  -25820;5;0;false;false;;;;;;
                                  -25825;12;0;false;false;0;0;0;;;
                                  -25837;1;0;false;false;;;;;;
                                  -25838;1;0;false;false;0;0;0;;;
                                  -25839;1;0;false;false;;;;;;
                                  -25840;4;1;false;false;127;0;85;;;
                                  -25844;1;0;false;false;0;0;0;;;
                                  -25845;4;0;false;false;;;;;;
                                  -25849;1;0;false;false;0;0;0;;;
                                  -25850;4;0;false;false;;;;;;
                                  -25854;4;1;false;false;127;0;85;;;
                                  -25858;1;0;false;false;;;;;;
                                  -25859;1;0;false;false;0;0;0;;;
                                  -25860;5;0;false;false;;;;;;
                                  -25865;12;0;false;false;0;0;0;;;
                                  -25877;1;0;false;false;;;;;;
                                  -25878;1;0;false;false;0;0;0;;;
                                  -25879;1;0;false;false;;;;;;
                                  -25880;5;1;false;false;127;0;85;;;
                                  -25885;1;0;false;false;0;0;0;;;
                                  -25886;4;0;false;false;;;;;;
                                  -25890;1;0;false;false;0;0;0;;;
                                  -25891;3;0;false;false;;;;;;
                                  -25894;1;0;false;false;0;0;0;;;
                                  -25895;3;0;false;false;;;;;;
                                  -25898;3;0;false;false;63;95;191;;;
                                  -25901;4;0;false;false;;;;;;
                                  -25905;1;0;false;false;63;95;191;;;
                                  -25906;1;0;false;false;;;;;;
                                  -25907;7;0;false;false;63;95;191;;;
                                  -25914;1;0;false;false;;;;;;
                                  -25915;3;0;false;false;63;95;191;;;
                                  -25918;1;0;false;false;;;;;;
                                  -25919;9;0;false;false;63;95;191;;;
                                  -25928;1;0;false;false;;;;;;
                                  -25929;7;0;false;false;63;95;191;;;
                                  -25936;1;0;false;false;;;;;;
                                  -25937;2;0;false;false;63;95;191;;;
                                  -25939;1;0;false;false;;;;;;
                                  -25940;8;0;false;false;63;95;191;;;
                                  -25948;1;0;false;false;;;;;;
                                  -25949;2;0;false;false;63;95;191;;;
                                  -25951;1;0;false;false;;;;;;
                                  -25952;3;0;false;false;63;95;191;;;
                                  -25955;1;0;false;false;;;;;;
                                  -25956;3;0;false;false;63;95;191;;;
                                  -25959;1;0;false;false;;;;;;
                                  -25960;5;0;false;false;63;95;191;;;
                                  -25965;4;0;false;false;;;;;;
                                  -25969;1;0;false;false;63;95;191;;;
                                  -25970;1;0;false;false;;;;;;
                                  -25971;4;0;false;false;63;95;191;;;
                                  -25975;1;0;false;false;;;;;;
                                  -25976;4;0;false;false;63;95;191;;;
                                  -25980;1;0;false;false;;;;;;
                                  -25981;6;0;false;false;127;127;159;;;
                                  -25987;5;0;false;false;63;95;191;;;
                                  -25992;7;0;false;false;127;127;159;;;
                                  -25999;1;0;false;false;;;;;;
                                  -26000;2;0;false;false;63;95;191;;;
                                  -26002;1;0;false;false;;;;;;
                                  -26003;3;0;false;false;63;95;191;;;
                                  -26006;1;0;false;false;;;;;;
                                  -26007;3;0;false;false;63;95;191;;;
                                  -26010;1;0;false;false;;;;;;
                                  -26011;10;0;false;false;63;95;191;;;
                                  -26021;1;0;false;false;;;;;;
                                  -26022;6;0;false;false;127;127;159;;;
                                  -26028;3;0;false;false;63;95;191;;;
                                  -26031;7;0;false;false;127;127;159;;;
                                  -26038;1;0;false;false;63;95;191;;;
                                  -26039;4;0;false;false;;;;;;
                                  -26043;1;0;false;false;63;95;191;;;
                                  -26044;1;0;false;false;;;;;;
                                  -26045;3;0;false;false;127;127;159;;;
                                  -26048;4;0;false;false;;;;;;
                                  -26052;1;0;false;false;63;95;191;;;
                                  -26053;4;0;false;false;;;;;;
                                  -26057;1;0;false;false;63;95;191;;;
                                  -26058;1;0;false;false;;;;;;
                                  -26059;7;1;false;false;127;159;191;;;
                                  -26066;6;0;false;false;63;95;191;;;
                                  -26072;1;0;false;false;;;;;;
                                  -26073;6;0;false;false;63;95;191;;;
                                  -26079;1;0;false;false;;;;;;
                                  -26080;2;0;false;false;63;95;191;;;
                                  -26082;1;0;false;false;;;;;;
                                  -26083;4;0;false;false;63;95;191;;;
                                  -26087;1;0;false;false;;;;;;
                                  -26088;1;0;false;false;63;95;191;;;
                                  -26089;1;0;false;false;;;;;;
                                  -26090;7;0;false;false;63;95;191;;;
                                  -26097;1;0;false;false;;;;;;
                                  -26098;5;0;false;false;63;95;191;;;
                                  -26103;1;0;false;false;;;;;;
                                  -26104;4;0;false;false;63;95;191;;;
                                  -26108;1;0;false;false;;;;;;
                                  -26109;3;0;false;false;63;95;191;;;
                                  -26112;1;0;false;false;;;;;;
                                  -26113;7;0;false;false;63;95;191;;;
                                  -26120;4;0;false;false;;;;;;
                                  -26124;1;0;false;false;63;95;191;;;
                                  -26125;2;0;false;false;;;;;;
                                  -26127;4;0;false;false;63;95;191;;;
                                  -26131;1;0;false;false;;;;;;
                                  -26132;7;0;false;false;63;95;191;;;
                                  -26139;1;0;false;false;;;;;;
                                  -26140;4;0;false;false;63;95;191;;;
                                  -26144;1;0;false;false;;;;;;
                                  -26145;6;0;false;false;63;95;191;;;
                                  -26151;1;0;false;false;;;;;;
                                  -26152;6;0;false;false;63;95;191;;;
                                  -26158;1;0;false;false;;;;;;
                                  -26159;2;0;false;false;63;95;191;;;
                                  -26161;1;0;false;false;;;;;;
                                  -26162;7;0;false;false;63;95;191;;;
                                  -26169;1;0;false;false;;;;;;
                                  -26170;5;0;false;false;63;95;191;;;
                                  -26175;1;0;false;false;;;;;;
                                  -26176;20;0;false;false;63;95;191;;;
                                  -26196;4;0;false;false;;;;;;
                                  -26200;1;0;false;false;63;95;191;;;
                                  -26201;1;0;false;false;;;;;;
                                  -26202;7;1;false;false;127;159;191;;;
                                  -26209;5;0;false;false;63;95;191;;;
                                  -26214;1;0;false;false;;;;;;
                                  -26215;5;0;false;false;63;95;191;;;
                                  -26220;1;0;false;false;;;;;;
                                  -26221;6;0;false;false;63;95;191;;;
                                  -26227;1;0;false;false;;;;;;
                                  -26228;2;0;false;false;63;95;191;;;
                                  -26230;1;0;false;false;;;;;;
                                  -26231;8;0;false;false;63;95;191;;;
                                  -26239;1;0;false;false;;;;;;
                                  -26240;1;0;false;false;63;95;191;;;
                                  -26241;1;0;false;false;;;;;;
                                  -26242;6;0;false;false;63;95;191;;;
                                  -26248;4;0;false;false;;;;;;
                                  -26252;1;0;false;false;63;95;191;;;
                                  -26253;1;0;false;false;;;;;;
                                  -26254;7;1;false;false;127;159;191;;;
                                  -26261;3;0;false;false;63;95;191;;;
                                  -26264;1;0;false;false;;;;;;
                                  -26265;3;0;false;false;63;95;191;;;
                                  -26268;1;0;false;false;;;;;;
                                  -26269;6;0;false;false;63;95;191;;;
                                  -26275;1;0;false;false;;;;;;
                                  -26276;2;0;false;false;63;95;191;;;
                                  -26278;1;0;false;false;;;;;;
                                  -26279;7;0;false;false;63;95;191;;;
                                  -26286;4;0;false;false;;;;;;
                                  -26290;2;0;false;false;63;95;191;;;
                                  -26292;3;0;false;false;;;;;;
                                  -26295;4;1;false;false;127;0;85;;;
                                  -26299;1;0;false;false;;;;;;
                                  -26300;12;0;false;false;0;0;0;;;
                                  -26312;1;0;false;false;;;;;;
                                  -26313;7;0;false;false;0;0;0;;;
                                  -26320;1;0;false;false;;;;;;
                                  -26321;3;1;false;false;127;0;85;;;
                                  -26324;1;0;false;false;;;;;;
                                  -26325;6;0;false;false;0;0;0;;;
                                  -26331;1;0;false;false;;;;;;
                                  -26332;3;1;false;false;127;0;85;;;
                                  -26335;1;0;false;false;;;;;;
                                  -26336;4;0;false;false;0;0;0;;;
                                  -26340;1;0;false;false;;;;;;
                                  -26341;1;0;false;false;0;0;0;;;
                                  -26342;4;0;false;false;;;;;;
                                  -26346;3;1;false;false;127;0;85;;;
                                  -26349;1;0;false;false;;;;;;
                                  -26350;1;0;false;false;0;0;0;;;
                                  -26351;3;1;false;false;127;0;85;;;
                                  -26354;1;0;false;false;;;;;;
                                  -26355;5;0;false;false;0;0;0;;;
                                  -26360;1;0;false;false;;;;;;
                                  -26361;1;0;false;false;0;0;0;;;
                                  -26362;1;0;false;false;;;;;;
                                  -26363;6;0;false;false;0;0;0;;;
                                  -26369;1;0;false;false;;;;;;
                                  -26370;5;0;false;false;0;0;0;;;
                                  -26375;1;0;false;false;;;;;;
                                  -26376;1;0;false;false;0;0;0;;;
                                  -26377;1;0;false;false;;;;;;
                                  -26378;4;0;false;false;0;0;0;;;
                                  -26382;1;0;false;false;;;;;;
                                  -26383;8;0;false;false;0;0;0;;;
                                  -26391;1;0;false;false;;;;;;
                                  -26392;1;0;false;false;0;0;0;;;
                                  -26393;5;0;false;false;;;;;;
                                  -26398;4;1;false;false;127;0;85;;;
                                  -26402;1;0;false;false;;;;;;
                                  -26403;2;0;false;false;0;0;0;;;
                                  -26405;1;0;false;false;;;;;;
                                  -26406;1;0;false;false;0;0;0;;;
                                  -26407;1;0;false;false;;;;;;
                                  -26408;21;0;false;false;0;0;0;;;
                                  -26429;5;0;false;false;;;;;;
                                  -26434;2;1;false;false;127;0;85;;;
                                  -26436;1;0;false;false;;;;;;
                                  -26437;3;0;false;false;0;0;0;;;
                                  -26440;1;0;false;false;;;;;;
                                  -26441;1;0;false;false;0;0;0;;;
                                  -26442;1;0;false;false;;;;;;
                                  -26443;4;0;false;false;0;0;0;;;
                                  -26447;1;0;false;false;;;;;;
                                  -26448;2;0;false;false;0;0;0;;;
                                  -26450;1;0;false;false;;;;;;
                                  -26451;13;0;false;false;0;0;0;;;
                                  -26464;1;0;false;false;;;;;;
                                  -26465;1;0;false;false;0;0;0;;;
                                  -26466;6;0;false;false;;;;;;
                                  -26472;58;0;false;false;63;127;95;;;
                                  -26530;4;0;false;false;;;;;;
                                  -26534;41;0;false;false;63;127;95;;;
                                  -26575;4;0;false;false;;;;;;
                                  -26579;2;1;false;false;127;0;85;;;
                                  -26581;1;0;false;false;;;;;;
                                  -26582;6;0;false;false;0;0;0;;;
                                  -26588;1;0;false;false;;;;;;
                                  -26589;1;0;false;false;0;0;0;;;
                                  -26590;1;0;false;false;;;;;;
                                  -26591;6;0;false;false;0;0;0;;;
                                  -26597;1;0;false;false;;;;;;
                                  -26598;1;0;false;false;0;0;0;;;
                                  -26599;7;0;false;false;;;;;;
                                  -26606;29;0;false;false;0;0;0;;;
                                  -26635;1;0;false;false;;;;;;
                                  -26636;8;0;false;false;0;0;0;;;
                                  -26644;6;0;false;false;;;;;;
                                  -26650;1;0;false;false;0;0;0;;;
                                  -26651;6;0;false;false;;;;;;
                                  -26657;6;0;false;false;0;0;0;;;
                                  -26663;5;0;false;false;42;0;255;;;
                                  -26668;2;0;false;false;0;0;0;;;
                                  -26670;6;0;false;false;;;;;;
                                  -26676;24;0;false;false;0;0;0;;;
                                  -26700;5;1;false;false;127;0;85;;;
                                  -26705;1;0;false;false;0;0;0;;;
                                  -26706;1;0;false;false;;;;;;
                                  -26707;5;0;false;false;0;0;0;;;
                                  -26712;6;0;false;false;;;;;;
                                  -26718;6;0;false;false;0;0;0;;;
                                  -26724;3;0;false;false;42;0;255;;;
                                  -26727;2;0;false;false;0;0;0;;;
                                  -26729;6;0;false;false;;;;;;
                                  -26735;27;0;false;false;63;127;95;;;
                                  -26762;4;0;false;false;;;;;;
                                  -26766;5;0;false;false;0;0;0;;;
                                  -26771;1;0;false;false;;;;;;
                                  -26772;1;0;false;false;0;0;0;;;
                                  -26773;1;0;false;false;;;;;;
                                  -26774;5;0;false;false;0;0;0;;;
                                  -26779;1;0;false;false;;;;;;
                                  -26780;1;0;false;false;0;0;0;;;
                                  -26781;1;0;false;false;;;;;;
                                  -26782;2;0;false;false;0;0;0;;;
                                  -26784;5;0;false;false;;;;;;
                                  -26789;1;0;false;false;0;0;0;;;
                                  -26790;5;0;false;false;;;;;;
                                  -26795;4;1;false;false;127;0;85;;;
                                  -26799;5;0;false;false;;;;;;
                                  -26804;2;1;false;false;127;0;85;;;
                                  -26806;1;0;false;false;;;;;;
                                  -26807;3;0;false;false;0;0;0;;;
                                  -26810;1;0;false;false;;;;;;
                                  -26811;2;0;false;false;0;0;0;;;
                                  -26813;1;0;false;false;;;;;;
                                  -26814;3;0;false;false;42;0;255;;;
                                  -26817;1;0;false;false;;;;;;
                                  -26818;2;0;false;false;0;0;0;;;
                                  -26820;1;0;false;false;;;;;;
                                  -26821;2;0;false;false;0;0;0;;;
                                  -26823;1;0;false;false;;;;;;
                                  -26824;2;0;false;false;0;0;0;;;
                                  -26826;1;0;false;false;;;;;;
                                  -26827;3;0;false;false;42;0;255;;;
                                  -26830;1;0;false;false;;;;;;
                                  -26831;2;0;false;false;0;0;0;;;
                                  -26833;1;0;false;false;;;;;;
                                  -26834;2;0;false;false;0;0;0;;;
                                  -26836;1;0;false;false;;;;;;
                                  -26837;2;0;false;false;0;0;0;;;
                                  -26839;1;0;false;false;;;;;;
                                  -26840;4;0;false;false;42;0;255;;;
                                  -26844;1;0;false;false;0;0;0;;;
                                  -26845;1;0;false;false;;;;;;
                                  -26846;1;0;false;false;0;0;0;;;
                                  -26847;6;0;false;false;;;;;;
                                  -26853;58;0;false;false;63;127;95;;;
                                  -26911;4;0;false;false;;;;;;
                                  -26915;41;0;false;false;63;127;95;;;
                                  -26956;4;0;false;false;;;;;;
                                  -26960;2;1;false;false;127;0;85;;;
                                  -26962;1;0;false;false;;;;;;
                                  -26963;6;0;false;false;0;0;0;;;
                                  -26969;1;0;false;false;;;;;;
                                  -26970;1;0;false;false;0;0;0;;;
                                  -26971;1;0;false;false;;;;;;
                                  -26972;6;0;false;false;0;0;0;;;
                                  -26978;1;0;false;false;;;;;;
                                  -26979;1;0;false;false;0;0;0;;;
                                  -26980;7;0;false;false;;;;;;
                                  -26987;29;0;false;false;0;0;0;;;
                                  -27016;1;0;false;false;;;;;;
                                  -27017;8;0;false;false;0;0;0;;;
                                  -27025;6;0;false;false;;;;;;
                                  -27031;1;0;false;false;0;0;0;;;
                                  -27032;6;0;false;false;;;;;;
                                  -27038;6;0;false;false;0;0;0;;;
                                  -27044;4;0;false;false;42;0;255;;;
                                  -27048;2;0;false;false;0;0;0;;;
                                  -27050;6;0;false;false;;;;;;
                                  -27056;10;0;false;false;0;0;0;;;
                                  -27066;6;0;false;false;;;;;;
                                  -27072;5;0;false;false;0;0;0;;;
                                  -27077;1;0;false;false;;;;;;
                                  -27078;1;0;false;false;0;0;0;;;
                                  -27079;1;0;false;false;;;;;;
                                  -27080;5;0;false;false;0;0;0;;;
                                  -27085;1;0;false;false;;;;;;
                                  -27086;1;0;false;false;0;0;0;;;
                                  -27087;1;0;false;false;;;;;;
                                  -27088;2;0;false;false;0;0;0;;;
                                  -27090;5;0;false;false;;;;;;
                                  -27095;1;0;false;false;0;0;0;;;
                                  -27096;4;0;false;false;;;;;;
                                  -27100;1;0;false;false;0;0;0;;;
                                  -27101;4;0;false;false;;;;;;
                                  -27105;54;0;false;false;63;127;95;;;
                                  -27159;2;0;false;false;;;;;;
                                  -27161;21;0;false;false;63;127;95;;;
                                  -27182;2;0;false;false;;;;;;
                                  -27184;2;1;false;false;127;0;85;;;
                                  -27186;1;0;false;false;;;;;;
                                  -27187;6;0;false;false;0;0;0;;;
                                  -27193;1;0;false;false;;;;;;
                                  -27194;1;0;false;false;0;0;0;;;
                                  -27195;1;0;false;false;;;;;;
                                  -27196;4;0;false;false;0;0;0;;;
                                  -27200;1;0;false;false;;;;;;
                                  -27201;1;0;false;false;0;0;0;;;
                                  -27202;5;0;false;false;;;;;;
                                  -27207;29;0;false;false;0;0;0;;;
                                  -27236;1;0;false;false;;;;;;
                                  -27237;6;0;false;false;0;0;0;;;
                                  -27243;4;0;false;false;;;;;;
                                  -27247;1;0;false;false;0;0;0;;;
                                  -27248;3;0;false;false;;;;;;
                                  -27251;1;0;false;false;0;0;0;;;
                                  -27252;4;0;false;false;;;;;;
                                  -27256;3;0;false;false;63;95;191;;;
                                  -27259;4;0;false;false;;;;;;
                                  -27263;1;0;false;false;63;95;191;;;
                                  -27264;1;0;false;false;;;;;;
                                  -27265;6;0;false;false;63;95;191;;;
                                  -27271;1;0;false;false;;;;;;
                                  -27272;3;0;false;false;63;95;191;;;
                                  -27275;1;0;false;false;;;;;;
                                  -27276;3;0;false;false;63;95;191;;;
                                  -27279;1;0;false;false;;;;;;
                                  -27280;6;0;false;false;63;95;191;;;
                                  -27286;1;0;false;false;;;;;;
                                  -27287;9;0;false;false;63;95;191;;;
                                  -27296;1;0;false;false;;;;;;
                                  -27297;4;0;false;false;63;95;191;;;
                                  -27301;1;0;false;false;;;;;;
                                  -27302;5;0;false;false;63;95;191;;;
                                  -27307;1;0;false;false;;;;;;
                                  -27308;3;0;false;false;63;95;191;;;
                                  -27311;1;0;false;false;;;;;;
                                  -27312;5;0;false;false;63;95;191;;;
                                  -27317;1;0;false;false;;;;;;
                                  -27318;6;0;false;false;63;95;191;;;
                                  -27324;4;0;false;false;;;;;;
                                  -27328;2;0;false;false;63;95;191;;;
                                  -27330;3;0;false;false;;;;;;
                                  -27333;4;1;false;false;127;0;85;;;
                                  -27337;1;0;false;false;;;;;;
                                  -27338;13;0;false;false;0;0;0;;;
                                  -27351;1;0;false;false;;;;;;
                                  -27352;1;0;false;false;0;0;0;;;
                                  -27353;4;0;false;false;;;;;;
                                  -27357;12;0;false;false;0;0;0;;;
                                  -27369;1;0;false;false;;;;;;
                                  -27370;6;0;false;false;0;0;0;;;
                                  -27376;1;0;false;false;;;;;;
                                  -27377;1;0;false;false;0;0;0;;;
                                  -27378;1;0;false;false;;;;;;
                                  -27379;3;1;false;false;127;0;85;;;
                                  -27382;1;0;false;false;;;;;;
                                  -27383;15;0;false;false;0;0;0;;;
                                  -27398;4;0;false;false;;;;;;
                                  -27402;8;0;false;false;0;0;0;;;
                                  -27410;1;0;false;false;;;;;;
                                  -27411;8;0;false;false;0;0;0;;;
                                  -27419;1;0;false;false;;;;;;
                                  -27420;1;0;false;false;0;0;0;;;
                                  -27421;1;0;false;false;;;;;;
                                  -27422;27;0;false;false;0;0;0;;;
                                  -27449;4;0;false;false;;;;;;
                                  -27453;14;0;false;false;0;0;0;;;
                                  -27467;15;0;false;false;42;0;255;;;
                                  -27482;2;0;false;false;0;0;0;;;
                                  -27484;4;0;false;false;;;;;;
                                  -27488;59;0;false;false;63;127;95;;;
                                  -27547;2;0;false;false;;;;;;
                                  -27549;44;0;false;false;63;127;95;;;
                                  -27593;2;0;false;false;;;;;;
                                  -27595;6;0;false;false;0;0;0;;;
                                  -27601;1;0;false;false;;;;;;
                                  -27602;3;0;false;false;0;0;0;;;
                                  -27605;1;0;false;false;;;;;;
                                  -27606;1;0;false;false;0;0;0;;;
                                  -27607;1;0;false;false;;;;;;
                                  -27608;19;0;false;false;0;0;0;;;
                                  -27627;15;0;false;false;42;0;255;;;
                                  -27642;16;0;false;false;0;0;0;;;
                                  -27658;4;0;false;false;;;;;;
                                  -27662;2;1;false;false;127;0;85;;;
                                  -27664;1;0;false;false;;;;;;
                                  -27665;16;0;false;false;0;0;0;;;
                                  -27681;4;0;false;false;42;0;255;;;
                                  -27685;1;0;false;false;0;0;0;;;
                                  -27686;1;0;false;false;;;;;;
                                  -27687;2;0;false;false;0;0;0;;;
                                  -27689;1;0;false;false;;;;;;
                                  -27690;15;0;false;false;0;0;0;;;
                                  -27705;4;0;false;false;42;0;255;;;
                                  -27709;2;0;false;false;0;0;0;;;
                                  -27711;1;0;false;false;;;;;;
                                  -27712;1;0;false;false;0;0;0;;;
                                  -27713;5;0;false;false;;;;;;
                                  -27718;3;0;false;false;0;0;0;;;
                                  -27721;1;0;false;false;;;;;;
                                  -27722;1;0;false;false;0;0;0;;;
                                  -27723;1;0;false;false;;;;;;
                                  -27724;16;0;false;false;0;0;0;;;
                                  -27740;1;0;false;false;;;;;;
                                  -27741;14;0;false;false;0;0;0;;;
                                  -27755;5;0;false;false;;;;;;
                                  -27760;14;0;false;false;0;0;0;;;
                                  -27774;11;0;false;false;42;0;255;;;
                                  -27785;2;0;false;false;0;0;0;;;
                                  -27787;5;0;false;false;;;;;;
                                  -27792;19;0;false;false;0;0;0;;;
                                  -27811;4;0;false;false;;;;;;
                                  -27815;1;0;false;false;0;0;0;;;
                                  -27816;4;0;false;false;;;;;;
                                  -27820;14;0;false;false;0;0;0;;;
                                  -27834;36;0;false;false;42;0;255;;;
                                  -27870;2;0;false;false;0;0;0;;;
                                  -27872;4;0;false;false;;;;;;
                                  -27876;34;0;false;false;0;0;0;;;
                                  -27910;4;0;false;false;;;;;;
                                  -27914;14;0;false;false;0;0;0;;;
                                  -27928;18;0;false;false;42;0;255;;;
                                  -27946;2;0;false;false;0;0;0;;;
                                  -27948;4;0;false;false;;;;;;
                                  -27952;3;1;false;false;127;0;85;;;
                                  -27955;1;0;false;false;;;;;;
                                  -27956;1;0;false;false;0;0;0;;;
                                  -27957;3;1;false;false;127;0;85;;;
                                  -27960;1;0;false;false;;;;;;
                                  -27961;1;0;false;false;0;0;0;;;
                                  -27962;1;0;false;false;;;;;;
                                  -27963;1;0;false;false;0;0;0;;;
                                  -27964;1;0;false;false;;;;;;
                                  -27965;2;0;false;false;0;0;0;;;
                                  -27967;1;0;false;false;;;;;;
                                  -27968;1;0;false;false;0;0;0;;;
                                  -27969;1;0;false;false;;;;;;
                                  -27970;1;0;false;false;0;0;0;;;
                                  -27971;1;0;false;false;;;;;;
                                  -27972;18;0;false;false;0;0;0;;;
                                  -27990;1;0;false;false;;;;;;
                                  -27991;4;0;false;false;0;0;0;;;
                                  -27995;1;0;false;false;;;;;;
                                  -27996;1;0;false;false;0;0;0;;;
                                  -27997;5;0;false;false;;;;;;
                                  -28002;5;0;false;false;0;0;0;;;
                                  -28007;1;0;false;false;;;;;;
                                  -28008;5;0;false;false;0;0;0;;;
                                  -28013;1;0;false;false;;;;;;
                                  -28014;1;0;false;false;0;0;0;;;
                                  -28015;1;0;false;false;;;;;;
                                  -28016;7;0;false;false;0;0;0;;;
                                  -28023;1;0;false;false;;;;;;
                                  -28024;24;0;false;false;0;0;0;;;
                                  -28048;5;0;false;false;;;;;;
                                  -28053;14;0;false;false;0;0;0;;;
                                  -28067;7;0;false;false;42;0;255;;;
                                  -28074;2;0;false;false;0;0;0;;;
                                  -28076;5;0;false;false;;;;;;
                                  -28081;30;0;false;false;0;0;0;;;
                                  -28111;5;0;false;false;;;;;;
                                  -28116;14;0;false;false;0;0;0;;;
                                  -28130;9;0;false;false;42;0;255;;;
                                  -28139;2;0;false;false;0;0;0;;;
                                  -28141;5;0;false;false;;;;;;
                                  -28146;32;0;false;false;0;0;0;;;
                                  -28178;5;0;false;false;;;;;;
                                  -28183;14;0;false;false;0;0;0;;;
                                  -28197;8;0;false;false;42;0;255;;;
                                  -28205;2;0;false;false;0;0;0;;;
                                  -28207;5;0;false;false;;;;;;
                                  -28212;31;0;false;false;0;0;0;;;
                                  -28243;5;0;false;false;;;;;;
                                  -28248;14;0;false;false;0;0;0;;;
                                  -28262;3;0;false;false;42;0;255;;;
                                  -28265;2;0;false;false;0;0;0;;;
                                  -28267;4;0;false;false;;;;;;
                                  -28271;1;0;false;false;0;0;0;;;
                                  -28272;5;0;false;false;;;;;;
                                  -28277;60;0;false;false;63;127;95;;;
                                  -28337;2;0;false;false;;;;;;
                                  -28339;61;0;false;false;63;127;95;;;
                                  -28400;2;0;false;false;;;;;;
                                  -28402;14;0;false;false;0;0;0;;;
                                  -28416;14;0;false;false;42;0;255;;;
                                  -28430;2;0;false;false;0;0;0;;;
                                  -28432;4;0;false;false;;;;;;
                                  -28436;42;0;false;false;63;127;95;;;
                                  -28478;2;0;false;false;;;;;;
                                  -28480;34;0;false;false;0;0;0;;;
                                  -28514;1;0;false;false;;;;;;
                                  -28515;1;0;false;false;0;0;0;;;
                                  -28516;1;0;false;false;;;;;;
                                  -28517;3;0;false;false;0;0;0;;;
                                  -28520;4;0;false;false;;;;;;
                                  -28524;14;0;false;false;0;0;0;;;
                                  -28538;3;0;false;false;42;0;255;;;
                                  -28541;2;0;false;false;0;0;0;;;
                                  -28543;4;0;false;false;;;;;;
                                  -28547;24;0;false;false;0;0;0;;;
                                  -28571;1;0;false;false;;;;;;
                                  -28572;3;0;false;false;0;0;0;;;
                                  -28575;3;0;false;false;;;;;;
                                  -28578;1;0;false;false;0;0;0;;;
                                  -28579;3;0;false;false;;;;;;
                                  -28582;3;0;false;false;63;95;191;;;
                                  -28585;4;0;false;false;;;;;;
                                  -28589;1;0;false;false;63;95;191;;;
                                  -28590;1;0;false;false;;;;;;
                                  -28591;7;0;false;false;63;95;191;;;
                                  -28598;1;0;false;false;;;;;;
                                  -28599;3;0;false;false;63;95;191;;;
                                  -28602;1;0;false;false;;;;;;
                                  -28603;9;0;false;false;63;95;191;;;
                                  -28612;1;0;false;false;;;;;;
                                  -28613;4;0;false;false;63;95;191;;;
                                  -28617;1;0;false;false;;;;;;
                                  -28618;4;0;false;false;63;95;191;;;
                                  -28622;1;0;false;false;;;;;;
                                  -28623;2;0;false;false;63;95;191;;;
                                  -28625;1;0;false;false;;;;;;
                                  -28626;3;0;false;false;63;95;191;;;
                                  -28629;1;0;false;false;;;;;;
                                  -28630;3;0;false;false;63;95;191;;;
                                  -28633;1;0;false;false;;;;;;
                                  -28634;5;0;false;false;63;95;191;;;
                                  -28639;2;0;false;false;;;;;;
                                  -28641;5;0;false;false;63;95;191;;;
                                  -28646;1;0;false;false;;;;;;
                                  -28647;4;0;false;false;63;95;191;;;
                                  -28651;1;0;false;false;;;;;;
                                  -28652;2;0;false;false;63;95;191;;;
                                  -28654;1;0;false;false;;;;;;
                                  -28655;9;0;false;false;63;95;191;;;
                                  -28664;5;0;false;false;;;;;;
                                  -28669;1;0;false;false;63;95;191;;;
                                  -28670;1;0;false;false;;;;;;
                                  -28671;5;0;false;false;63;95;191;;;
                                  -28676;1;0;false;false;;;;;;
                                  -28677;3;0;false;false;63;95;191;;;
                                  -28680;1;0;false;false;;;;;;
                                  -28681;6;0;false;false;63;95;191;;;
                                  -28687;1;0;false;false;;;;;;
                                  -28688;7;0;false;false;63;95;191;;;
                                  -28695;1;0;false;false;;;;;;
                                  -28696;4;0;false;false;63;95;191;;;
                                  -28700;1;0;false;false;;;;;;
                                  -28701;3;0;false;false;63;95;191;;;
                                  -28704;1;0;false;false;;;;;;
                                  -28705;18;0;false;false;63;95;191;;;
                                  -28723;1;0;false;false;;;;;;
                                  -28724;2;0;false;false;63;95;191;;;
                                  -28726;1;0;false;false;;;;;;
                                  -28727;4;0;false;false;63;95;191;;;
                                  -28731;1;0;false;false;;;;;;
                                  -28732;2;0;false;false;63;95;191;;;
                                  -28734;1;0;false;false;;;;;;
                                  -28735;5;0;false;false;63;95;191;;;
                                  -28740;1;0;false;false;;;;;;
                                  -28741;3;0;false;false;63;95;191;;;
                                  -28744;5;0;false;false;;;;;;
                                  -28749;1;0;false;false;63;95;191;;;
                                  -28750;1;0;false;false;;;;;;
                                  -28751;8;0;false;false;63;95;191;;;
                                  -28759;1;0;false;false;;;;;;
                                  -28760;2;0;false;false;63;95;191;;;
                                  -28762;1;0;false;false;;;;;;
                                  -28763;3;0;false;false;63;95;191;;;
                                  -28766;1;0;false;false;;;;;;
                                  -28767;7;0;false;false;63;95;191;;;
                                  -28774;4;0;false;false;;;;;;
                                  -28778;1;0;false;false;63;95;191;;;
                                  -28779;1;0;false;false;;;;;;
                                  -28780;3;0;false;false;127;127;159;;;
                                  -28783;4;0;false;false;;;;;;
                                  -28787;1;0;false;false;63;95;191;;;
                                  -28788;4;0;false;false;;;;;;
                                  -28792;1;0;false;false;63;95;191;;;
                                  -28793;1;0;false;false;;;;;;
                                  -28794;7;1;false;false;127;159;191;;;
                                  -28801;4;0;false;false;63;95;191;;;
                                  -28805;1;0;false;false;;;;;;
                                  -28806;4;0;false;false;63;95;191;;;
                                  -28810;1;0;false;false;;;;;;
                                  -28811;4;0;false;false;63;95;191;;;
                                  -28815;1;0;false;false;;;;;;
                                  -28816;2;0;false;false;63;95;191;;;
                                  -28818;1;0;false;false;;;;;;
                                  -28819;5;0;false;false;63;95;191;;;
                                  -28824;1;0;false;false;;;;;;
                                  -28825;2;0;false;false;63;95;191;;;
                                  -28827;1;0;false;false;;;;;;
                                  -28828;4;0;false;false;63;95;191;;;
                                  -28832;1;0;false;false;;;;;;
                                  -28833;4;0;false;false;63;95;191;;;
                                  -28837;1;0;false;false;;;;;;
                                  -28838;3;0;false;false;63;95;191;;;
                                  -28841;1;0;false;false;;;;;;
                                  -28842;7;0;false;false;63;95;191;;;
                                  -28849;1;0;false;false;;;;;;
                                  -28850;4;0;false;false;63;95;191;;;
                                  -28854;1;0;false;false;;;;;;
                                  -28855;6;0;false;false;63;95;191;;;
                                  -28861;4;0;false;false;;;;;;
                                  -28865;1;0;false;false;63;95;191;;;
                                  -28866;2;0;false;false;;;;;;
                                  -28868;4;0;false;false;63;95;191;;;
                                  -28872;1;0;false;false;;;;;;
                                  -28873;6;0;false;false;63;95;191;;;
                                  -28879;1;0;false;false;;;;;;
                                  -28880;6;0;false;false;63;95;191;;;
                                  -28886;1;0;false;false;;;;;;
                                  -28887;2;0;false;false;63;95;191;;;
                                  -28889;1;0;false;false;;;;;;
                                  -28890;7;0;false;false;63;95;191;;;
                                  -28897;1;0;false;false;;;;;;
                                  -28898;5;0;false;false;63;95;191;;;
                                  -28903;1;0;false;false;;;;;;
                                  -28904;20;0;false;false;63;95;191;;;
                                  -28924;4;0;false;false;;;;;;
                                  -28928;1;0;false;false;63;95;191;;;
                                  -28929;1;0;false;false;;;;;;
                                  -28930;7;1;false;false;127;159;191;;;
                                  -28937;10;0;false;false;63;95;191;;;
                                  -28947;1;0;false;false;;;;;;
                                  -28948;6;0;false;false;63;95;191;;;
                                  -28954;1;0;false;false;;;;;;
                                  -28955;2;0;false;false;63;95;191;;;
                                  -28957;1;0;false;false;;;;;;
                                  -28958;3;0;false;false;63;95;191;;;
                                  -28961;1;0;false;false;;;;;;
                                  -28962;5;0;false;false;63;95;191;;;
                                  -28967;1;0;false;false;;;;;;
                                  -28968;1;0;false;false;63;95;191;;;
                                  -28969;1;0;false;false;;;;;;
                                  -28970;5;0;false;false;63;95;191;;;
                                  -28975;1;0;false;false;;;;;;
                                  -28976;4;0;false;false;63;95;191;;;
                                  -28980;1;0;false;false;;;;;;
                                  -28981;3;0;false;false;63;95;191;;;
                                  -28984;1;0;false;false;;;;;;
                                  -28985;5;0;false;false;63;95;191;;;
                                  -28990;1;0;false;false;;;;;;
                                  -28991;2;0;false;false;63;95;191;;;
                                  -28993;1;0;false;false;;;;;;
                                  -28994;3;0;false;false;63;95;191;;;
                                  -28997;5;0;false;false;;;;;;
                                  -29002;1;0;false;false;63;95;191;;;
                                  -29003;2;0;false;false;;;;;;
                                  -29005;6;0;false;false;63;95;191;;;
                                  -29011;1;0;false;false;;;;;;
                                  -29012;9;0;false;false;63;95;191;;;
                                  -29021;1;0;false;false;;;;;;
                                  -29022;3;0;false;false;63;95;191;;;
                                  -29025;1;0;false;false;;;;;;
                                  -29026;4;0;false;false;63;95;191;;;
                                  -29030;1;0;false;false;;;;;;
                                  -29031;9;0;false;false;63;95;191;;;
                                  -29040;1;0;false;false;;;;;;
                                  -29041;6;0;false;false;63;95;191;;;
                                  -29047;1;0;false;false;;;;;;
                                  -29048;3;0;false;false;63;95;191;;;
                                  -29051;1;0;false;false;;;;;;
                                  -29052;5;0;false;false;63;95;191;;;
                                  -29057;1;0;false;false;;;;;;
                                  -29058;6;0;false;false;63;95;191;;;
                                  -29064;1;0;false;false;;;;;;
                                  -29065;2;0;false;false;63;95;191;;;
                                  -29067;1;0;false;false;;;;;;
                                  -29068;5;0;false;false;63;95;191;;;
                                  -29073;1;0;false;false;;;;;;
                                  -29074;3;0;false;false;63;95;191;;;
                                  -29077;5;0;false;false;;;;;;
                                  -29082;1;0;false;false;63;95;191;;;
                                  -29083;2;0;false;false;;;;;;
                                  -29085;3;0;false;false;63;95;191;;;
                                  -29088;1;0;false;false;;;;;;
                                  -29089;6;0;false;false;63;95;191;;;
                                  -29095;1;0;false;false;;;;;;
                                  -29096;9;0;false;false;63;95;191;;;
                                  -29105;1;0;false;false;;;;;;
                                  -29106;6;0;false;false;63;95;191;;;
                                  -29112;1;0;false;false;;;;;;
                                  -29113;6;0;false;false;63;95;191;;;
                                  -29119;1;0;false;false;;;;;;
                                  -29120;8;0;false;false;63;95;191;;;
                                  -29128;1;0;false;false;;;;;;
                                  -29129;2;0;false;false;63;95;191;;;
                                  -29131;1;0;false;false;;;;;;
                                  -29132;8;0;false;false;63;95;191;;;
                                  -29140;4;0;false;false;;;;;;
                                  -29144;1;0;false;false;63;95;191;;;
                                  -29145;1;0;false;false;;;;;;
                                  -29146;11;1;false;false;127;159;191;;;
                                  -29157;12;0;false;false;63;95;191;;;
                                  -29169;1;0;false;false;;;;;;
                                  -29170;4;0;false;false;127;127;159;;;
                                  -29174;4;0;false;false;;;;;;
                                  -29178;1;0;false;false;63;95;191;;;
                                  -29179;3;0;false;false;;;;;;
                                  -29182;4;0;false;false;127;127;159;;;
                                  -29186;8;0;false;false;63;95;191;;;
                                  -29194;1;0;false;false;;;;;;
                                  -29195;4;0;false;false;63;95;191;;;
                                  -29199;1;0;false;false;;;;;;
                                  -29200;3;0;false;false;63;95;191;;;
                                  -29203;1;0;false;false;;;;;;
                                  -29204;6;0;false;false;63;95;191;;;
                                  -29210;1;0;false;false;;;;;;
                                  -29211;2;0;false;false;63;95;191;;;
                                  -29213;1;0;false;false;;;;;;
                                  -29214;7;0;false;false;63;95;191;;;
                                  -29221;5;0;false;false;127;127;159;;;
                                  -29226;4;0;false;false;;;;;;
                                  -29230;1;0;false;false;63;95;191;;;
                                  -29231;1;0;false;false;;;;;;
                                  -29232;5;0;false;false;127;127;159;;;
                                  -29237;4;0;false;false;;;;;;
                                  -29241;2;0;false;false;63;95;191;;;
                                  -29243;3;0;false;false;;;;;;
                                  -29246;6;1;false;false;127;0;85;;;
                                  -29252;1;0;false;false;;;;;;
                                  -29253;4;1;false;false;127;0;85;;;
                                  -29257;1;0;false;false;;;;;;
                                  -29258;16;0;false;false;0;0;0;;;
                                  -29274;1;0;false;false;;;;;;
                                  -29275;5;0;false;false;0;0;0;;;
                                  -29280;1;0;false;false;;;;;;
                                  -29281;3;1;false;false;127;0;85;;;
                                  -29284;1;0;false;false;;;;;;
                                  -29285;11;0;false;false;0;0;0;;;
                                  -29296;1;0;false;false;;;;;;
                                  -29297;1;0;false;false;0;0;0;;;
                                  -29298;4;0;false;false;;;;;;
                                  -29302;12;0;false;false;0;0;0;;;
                                  -29314;1;0;false;false;;;;;;
                                  -29315;6;0;false;false;0;0;0;;;
                                  -29321;1;0;false;false;;;;;;
                                  -29322;1;0;false;false;0;0;0;;;
                                  -29323;1;0;false;false;;;;;;
                                  -29324;3;1;false;false;127;0;85;;;
                                  -29327;1;0;false;false;;;;;;
                                  -29328;14;0;false;false;0;0;0;;;
                                  -29342;4;0;false;false;;;;;;
                                  -29346;5;0;false;false;0;0;0;;;
                                  -29351;1;0;false;false;;;;;;
                                  -29352;14;0;false;false;0;0;0;;;
                                  -29366;1;0;false;false;;;;;;
                                  -29367;1;0;false;false;0;0;0;;;
                                  -29368;1;0;false;false;;;;;;
                                  -29369;4;1;false;false;127;0;85;;;
                                  -29373;1;0;false;false;0;0;0;;;
                                  -29374;4;0;false;false;;;;;;
                                  -29378;15;0;false;false;0;0;0;;;
                                  -29393;1;0;false;false;;;;;;
                                  -29394;6;0;false;false;0;0;0;;;
                                  -29400;8;0;false;false;;;;;;
                                  -29408;2;1;false;false;127;0;85;;;
                                  -29410;1;0;false;false;;;;;;
                                  -29411;12;0;false;false;0;0;0;;;
                                  -29423;1;0;false;false;;;;;;
                                  -29424;1;0;false;false;0;0;0;;;
                                  -29425;5;0;false;false;;;;;;
                                  -29430;24;0;false;false;0;0;0;;;
                                  -29454;4;0;false;false;;;;;;
                                  -29458;1;0;false;false;0;0;0;;;
                                  -29459;4;0;false;false;;;;;;
                                  -29463;5;0;false;false;0;0;0;;;
                                  -29468;1;0;false;false;;;;;;
                                  -29469;1;0;false;false;0;0;0;;;
                                  -29470;1;0;false;false;;;;;;
                                  -29471;37;0;false;false;0;0;0;;;
                                  -29508;1;0;false;false;;;;;;
                                  -29509;6;0;false;false;0;0;0;;;
                                  -29515;4;0;false;false;;;;;;
                                  -29519;2;1;false;false;127;0;85;;;
                                  -29521;1;0;false;false;;;;;;
                                  -29522;6;0;false;false;0;0;0;;;
                                  -29528;1;0;false;false;;;;;;
                                  -29529;2;0;false;false;0;0;0;;;
                                  -29531;1;0;false;false;;;;;;
                                  -29532;4;1;false;false;127;0;85;;;
                                  -29536;1;0;false;false;0;0;0;;;
                                  -29537;1;0;false;false;;;;;;
                                  -29538;1;0;false;false;0;0;0;;;
                                  -29539;5;0;false;false;;;;;;
                                  -29544;6;0;false;false;0;0;0;;;
                                  -29550;1;0;false;false;;;;;;
                                  -29551;1;0;false;false;0;0;0;;;
                                  -29552;1;0;false;false;;;;;;
                                  -29553;13;0;false;false;0;0;0;;;
                                  -29566;4;0;false;false;;;;;;
                                  -29570;1;0;false;false;0;0;0;;;
                                  -29571;4;0;false;false;;;;;;
                                  -29575;5;0;false;false;0;0;0;;;
                                  -29580;1;0;false;false;;;;;;
                                  -29581;1;0;false;false;0;0;0;;;
                                  -29582;1;0;false;false;;;;;;
                                  -29583;42;0;false;false;0;0;0;;;
                                  -29625;1;0;false;false;;;;;;
                                  -29626;6;0;false;false;0;0;0;;;
                                  -29632;4;0;false;false;;;;;;
                                  -29636;2;1;false;false;127;0;85;;;
                                  -29638;1;0;false;false;;;;;;
                                  -29639;6;0;false;false;0;0;0;;;
                                  -29645;1;0;false;false;;;;;;
                                  -29646;2;0;false;false;0;0;0;;;
                                  -29648;1;0;false;false;;;;;;
                                  -29649;4;1;false;false;127;0;85;;;
                                  -29653;1;0;false;false;0;0;0;;;
                                  -29654;1;0;false;false;;;;;;
                                  -29655;1;0;false;false;0;0;0;;;
                                  -29656;5;0;false;false;;;;;;
                                  -29661;14;0;false;false;0;0;0;;;
                                  -29675;1;0;false;false;;;;;;
                                  -29676;1;0;false;false;0;0;0;;;
                                  -29677;1;0;false;false;;;;;;
                                  -29678;21;0;false;false;0;0;0;;;
                                  -29699;4;0;false;false;;;;;;
                                  -29703;1;0;false;false;0;0;0;;;
                                  -29704;4;0;false;false;;;;;;
                                  -29708;2;1;false;false;127;0;85;;;
                                  -29710;1;0;false;false;;;;;;
                                  -29711;15;0;false;false;0;0;0;;;
                                  -29726;1;0;false;false;;;;;;
                                  -29727;2;0;false;false;0;0;0;;;
                                  -29729;1;0;false;false;;;;;;
                                  -29730;4;1;false;false;127;0;85;;;
                                  -29734;1;0;false;false;0;0;0;;;
                                  -29735;1;0;false;false;;;;;;
                                  -29736;1;0;false;false;0;0;0;;;
                                  -29737;5;0;false;false;;;;;;
                                  -29742;14;0;false;false;0;0;0;;;
                                  -29756;1;0;false;false;;;;;;
                                  -29757;1;0;false;false;0;0;0;;;
                                  -29758;1;0;false;false;;;;;;
                                  -29759;16;0;false;false;0;0;0;;;
                                  -29775;4;0;false;false;;;;;;
                                  -29779;1;0;false;false;0;0;0;;;
                                  -29780;4;0;false;false;;;;;;
                                  -29784;21;0;false;false;0;0;0;;;
                                  -29805;1;0;false;false;;;;;;
                                  -29806;11;0;false;false;0;0;0;;;
                                  -29817;1;0;false;false;;;;;;
                                  -29818;7;0;false;false;0;0;0;;;
                                  -29825;1;0;false;false;;;;;;
                                  -29826;16;0;false;false;0;0;0;;;
                                  -29842;3;0;false;false;;;;;;
                                  -29845;1;0;false;false;0;0;0;;;
                                  -29846;3;0;false;false;;;;;;
                                  -29849;3;0;false;false;63;95;191;;;
                                  -29852;4;0;false;false;;;;;;
                                  -29856;1;0;false;false;63;95;191;;;
                                  -29857;1;0;false;false;;;;;;
                                  -29858;7;0;false;false;63;95;191;;;
                                  -29865;1;0;false;false;;;;;;
                                  -29866;3;0;false;false;63;95;191;;;
                                  -29869;1;0;false;false;;;;;;
                                  -29870;9;0;false;false;63;95;191;;;
                                  -29879;1;0;false;false;;;;;;
                                  -29880;4;0;false;false;63;95;191;;;
                                  -29884;1;0;false;false;;;;;;
                                  -29885;10;0;false;false;63;95;191;;;
                                  -29895;1;0;false;false;;;;;;
                                  -29896;2;0;false;false;63;95;191;;;
                                  -29898;1;0;false;false;;;;;;
                                  -29899;3;0;false;false;63;95;191;;;
                                  -29902;1;0;false;false;;;;;;
                                  -29903;3;0;false;false;63;95;191;;;
                                  -29906;1;0;false;false;;;;;;
                                  -29907;5;0;false;false;63;95;191;;;
                                  -29912;4;0;false;false;;;;;;
                                  -29916;1;0;false;false;63;95;191;;;
                                  -29917;1;0;false;false;;;;;;
                                  -29918;3;0;false;false;127;127;159;;;
                                  -29921;4;0;false;false;;;;;;
                                  -29925;1;0;false;false;63;95;191;;;
                                  -29926;4;0;false;false;;;;;;
                                  -29930;1;0;false;false;63;95;191;;;
                                  -29931;1;0;false;false;;;;;;
                                  -29932;7;1;false;false;127;159;191;;;
                                  -29939;13;0;false;false;63;95;191;;;
                                  -29952;1;0;false;false;;;;;;
                                  -29953;4;0;false;false;63;95;191;;;
                                  -29957;1;0;false;false;;;;;;
                                  -29958;9;0;false;false;63;95;191;;;
                                  -29967;1;0;false;false;;;;;;
                                  -29968;2;0;false;false;63;95;191;;;
                                  -29970;1;0;false;false;;;;;;
                                  -29971;5;0;false;false;63;95;191;;;
                                  -29976;1;0;false;false;;;;;;
                                  -29977;2;0;false;false;63;95;191;;;
                                  -29979;1;0;false;false;;;;;;
                                  -29980;4;0;false;false;63;95;191;;;
                                  -29984;4;0;false;false;;;;;;
                                  -29988;1;0;false;false;63;95;191;;;
                                  -29989;1;0;false;false;;;;;;
                                  -29990;11;1;false;false;127;159;191;;;
                                  -30001;12;0;false;false;63;95;191;;;
                                  -30013;1;0;false;false;;;;;;
                                  -30014;4;0;false;false;127;127;159;;;
                                  -30018;4;0;false;false;;;;;;
                                  -30022;1;0;false;false;63;95;191;;;
                                  -30023;3;0;false;false;;;;;;
                                  -30026;4;0;false;false;127;127;159;;;
                                  -30030;8;0;false;false;63;95;191;;;
                                  -30038;1;0;false;false;;;;;;
                                  -30039;4;0;false;false;63;95;191;;;
                                  -30043;1;0;false;false;;;;;;
                                  -30044;3;0;false;false;63;95;191;;;
                                  -30047;1;0;false;false;;;;;;
                                  -30048;6;0;false;false;63;95;191;;;
                                  -30054;1;0;false;false;;;;;;
                                  -30055;2;0;false;false;63;95;191;;;
                                  -30057;1;0;false;false;;;;;;
                                  -30058;7;0;false;false;63;95;191;;;
                                  -30065;5;0;false;false;127;127;159;;;
                                  -30070;4;0;false;false;;;;;;
                                  -30074;1;0;false;false;63;95;191;;;
                                  -30075;1;0;false;false;;;;;;
                                  -30076;5;0;false;false;127;127;159;;;
                                  -30081;4;0;false;false;;;;;;
                                  -30085;2;0;false;false;63;95;191;;;
                                  -30087;3;0;false;false;;;;;;
                                  -30090;6;1;false;false;127;0;85;;;
                                  -30096;1;0;false;false;;;;;;
                                  -30097;4;1;false;false;127;0;85;;;
                                  -30101;1;0;false;false;;;;;;
                                  -30102;25;0;false;false;0;0;0;;;
                                  -30127;1;0;false;false;;;;;;
                                  -30128;14;0;false;false;0;0;0;;;
                                  -30142;1;0;false;false;;;;;;
                                  -30143;1;0;false;false;0;0;0;;;
                                  -30144;4;0;false;false;;;;;;
                                  -30148;2;1;false;false;127;0;85;;;
                                  -30150;1;0;false;false;;;;;;
                                  -30151;12;0;false;false;0;0;0;;;
                                  -30163;1;0;false;false;;;;;;
                                  -30164;1;0;false;false;0;0;0;;;
                                  -30165;5;0;false;false;;;;;;
                                  -30170;24;0;false;false;0;0;0;;;
                                  -30194;4;0;false;false;;;;;;
                                  -30198;1;0;false;false;0;0;0;;;
                                  -30199;4;0;false;false;;;;;;
                                  -30203;20;0;false;false;0;0;0;;;
                                  -30223;1;0;false;false;;;;;;
                                  -30224;2;0;false;false;0;0;0;;;
                                  -30226;1;0;false;false;;;;;;
                                  -30227;24;0;false;false;0;0;0;;;
                                  -30251;4;0;false;false;;;;;;
                                  -30255;6;0;false;false;0;0;0;;;
                                  -30261;8;0;false;false;42;0;255;;;
                                  -30269;2;0;false;false;0;0;0;;;
                                  -30271;3;0;false;false;;;;;;
                                  -30274;1;0;false;false;0;0;0;;;
                                  -30275;3;0;false;false;;;;;;
                                  -30278;3;0;false;false;63;95;191;;;
                                  -30281;4;0;false;false;;;;;;
                                  -30285;1;0;false;false;63;95;191;;;
                                  -30286;1;0;false;false;;;;;;
                                  -30287;7;0;false;false;63;95;191;;;
                                  -30294;1;0;false;false;;;;;;
                                  -30295;3;0;false;false;63;95;191;;;
                                  -30298;1;0;false;false;;;;;;
                                  -30299;9;0;false;false;63;95;191;;;
                                  -30308;1;0;false;false;;;;;;
                                  -30309;4;0;false;false;63;95;191;;;
                                  -30313;1;0;false;false;;;;;;
                                  -30314;4;0;false;false;63;95;191;;;
                                  -30318;1;0;false;false;;;;;;
                                  -30319;2;0;false;false;63;95;191;;;
                                  -30321;1;0;false;false;;;;;;
                                  -30322;3;0;false;false;63;95;191;;;
                                  -30325;1;0;false;false;;;;;;
                                  -30326;3;0;false;false;63;95;191;;;
                                  -30329;1;0;false;false;;;;;;
                                  -30330;5;0;false;false;63;95;191;;;
                                  -30335;4;0;false;false;;;;;;
                                  -30339;1;0;false;false;63;95;191;;;
                                  -30340;1;0;false;false;;;;;;
                                  -30341;3;0;false;false;63;95;191;;;
                                  -30344;1;0;false;false;;;;;;
                                  -30345;3;0;false;false;63;95;191;;;
                                  -30348;1;0;false;false;;;;;;
                                  -30349;6;0;false;false;63;95;191;;;
                                  -30355;1;0;false;false;;;;;;
                                  -30356;3;0;false;false;63;95;191;;;
                                  -30359;1;0;false;false;;;;;;
                                  -30360;4;0;false;false;63;95;191;;;
                                  -30364;1;0;false;false;;;;;;
                                  -30365;6;0;false;false;63;95;191;;;
                                  -30371;1;0;false;false;;;;;;
                                  -30372;9;0;false;false;63;95;191;;;
                                  -30381;1;0;false;false;;;;;;
                                  -30382;2;0;false;false;63;95;191;;;
                                  -30384;1;0;false;false;;;;;;
                                  -30385;8;0;false;false;63;95;191;;;
                                  -30393;1;0;false;false;;;;;;
                                  -30394;3;0;false;false;63;95;191;;;
                                  -30397;1;0;false;false;;;;;;
                                  -30398;17;0;false;false;63;95;191;;;
                                  -30415;4;0;false;false;;;;;;
                                  -30419;1;0;false;false;63;95;191;;;
                                  -30420;1;0;false;false;;;;;;
                                  -30421;10;0;false;false;63;95;191;;;
                                  -30431;1;0;false;false;;;;;;
                                  -30432;2;0;false;false;63;95;191;;;
                                  -30434;1;0;false;false;;;;;;
                                  -30435;7;0;false;false;63;95;191;;;
                                  -30442;1;0;false;false;;;;;;
                                  -30443;2;0;false;false;63;95;191;;;
                                  -30445;1;0;false;false;;;;;;
                                  -30446;7;0;false;false;63;95;191;;;
                                  -30453;1;0;false;false;;;;;;
                                  -30454;3;0;false;false;63;95;191;;;
                                  -30457;1;0;false;false;;;;;;
                                  -30458;4;0;false;false;63;95;191;;;
                                  -30462;1;0;false;false;;;;;;
                                  -30463;9;0;false;false;63;95;191;;;
                                  -30472;1;0;false;false;;;;;;
                                  -30473;2;0;false;false;63;95;191;;;
                                  -30475;1;0;false;false;;;;;;
                                  -30476;3;0;false;false;63;95;191;;;
                                  -30479;1;0;false;false;;;;;;
                                  -30480;4;0;false;false;63;95;191;;;
                                  -30484;1;0;false;false;;;;;;
                                  -30485;7;0;false;false;63;95;191;;;
                                  -30492;4;0;false;false;;;;;;
                                  -30496;1;0;false;false;63;95;191;;;
                                  -30497;1;0;false;false;;;;;;
                                  -30498;5;0;false;false;63;95;191;;;
                                  -30503;1;0;false;false;;;;;;
                                  -30504;10;0;false;false;63;95;191;;;
                                  -30514;1;0;false;false;;;;;;
                                  -30515;6;0;false;false;63;95;191;;;
                                  -30521;1;0;false;false;;;;;;
                                  -30522;4;0;false;false;63;95;191;;;
                                  -30526;1;0;false;false;;;;;;
                                  -30527;10;0;false;false;63;95;191;;;
                                  -30537;1;0;false;false;;;;;;
                                  -30538;4;0;false;false;63;95;191;;;
                                  -30542;1;0;false;false;;;;;;
                                  -30543;3;0;false;false;63;95;191;;;
                                  -30546;1;0;false;false;;;;;;
                                  -30547;4;0;false;false;63;95;191;;;
                                  -30551;1;0;false;false;;;;;;
                                  -30552;10;0;false;false;63;95;191;;;
                                  -30562;1;0;false;false;;;;;;
                                  -30563;6;0;false;false;63;95;191;;;
                                  -30569;4;0;false;false;;;;;;
                                  -30573;1;0;false;false;63;95;191;;;
                                  -30574;1;0;false;false;;;;;;
                                  -30575;10;0;false;false;63;95;191;;;
                                  -30585;1;0;false;false;;;;;;
                                  -30586;6;0;false;false;63;95;191;;;
                                  -30592;1;0;false;false;;;;;;
                                  -30593;3;0;false;false;63;95;191;;;
                                  -30596;1;0;false;false;;;;;;
                                  -30597;7;0;false;false;63;95;191;;;
                                  -30604;1;0;false;false;;;;;;
                                  -30605;5;0;false;false;63;95;191;;;
                                  -30610;1;0;false;false;;;;;;
                                  -30611;3;0;false;false;63;95;191;;;
                                  -30614;1;0;false;false;;;;;;
                                  -30615;10;0;false;false;63;95;191;;;
                                  -30625;1;0;false;false;;;;;;
                                  -30626;3;0;false;false;63;95;191;;;
                                  -30629;1;0;false;false;;;;;;
                                  -30630;4;0;false;false;63;95;191;;;
                                  -30634;1;0;false;false;;;;;;
                                  -30635;3;0;false;false;63;95;191;;;
                                  -30638;1;0;false;false;;;;;;
                                  -30639;3;0;false;false;63;95;191;;;
                                  -30642;1;0;false;false;;;;;;
                                  -30643;5;0;false;false;63;95;191;;;
                                  -30648;4;0;false;false;;;;;;
                                  -30652;1;0;false;false;63;95;191;;;
                                  -30653;1;0;false;false;;;;;;
                                  -30654;3;0;false;false;127;127;159;;;
                                  -30657;4;0;false;false;;;;;;
                                  -30661;1;0;false;false;63;95;191;;;
                                  -30662;4;0;false;false;;;;;;
                                  -30666;1;0;false;false;63;95;191;;;
                                  -30667;1;0;false;false;;;;;;
                                  -30668;7;1;false;false;127;159;191;;;
                                  -30675;4;0;false;false;63;95;191;;;
                                  -30679;1;0;false;false;;;;;;
                                  -30680;4;0;false;false;63;95;191;;;
                                  -30684;1;0;false;false;;;;;;
                                  -30685;4;0;false;false;63;95;191;;;
                                  -30689;1;0;false;false;;;;;;
                                  -30690;2;0;false;false;63;95;191;;;
                                  -30692;1;0;false;false;;;;;;
                                  -30693;5;0;false;false;63;95;191;;;
                                  -30698;1;0;false;false;;;;;;
                                  -30699;2;0;false;false;63;95;191;;;
                                  -30701;1;0;false;false;;;;;;
                                  -30702;4;0;false;false;63;95;191;;;
                                  -30706;1;0;false;false;;;;;;
                                  -30707;4;0;false;false;63;95;191;;;
                                  -30711;1;0;false;false;;;;;;
                                  -30712;3;0;false;false;63;95;191;;;
                                  -30715;1;0;false;false;;;;;;
                                  -30716;7;0;false;false;63;95;191;;;
                                  -30723;1;0;false;false;;;;;;
                                  -30724;4;0;false;false;63;95;191;;;
                                  -30728;1;0;false;false;;;;;;
                                  -30729;6;0;false;false;63;95;191;;;
                                  -30735;4;0;false;false;;;;;;
                                  -30739;1;0;false;false;63;95;191;;;
                                  -30740;2;0;false;false;;;;;;
                                  -30742;4;0;false;false;63;95;191;;;
                                  -30746;1;0;false;false;;;;;;
                                  -30747;6;0;false;false;63;95;191;;;
                                  -30753;1;0;false;false;;;;;;
                                  -30754;6;0;false;false;63;95;191;;;
                                  -30760;1;0;false;false;;;;;;
                                  -30761;2;0;false;false;63;95;191;;;
                                  -30763;1;0;false;false;;;;;;
                                  -30764;7;0;false;false;63;95;191;;;
                                  -30771;1;0;false;false;;;;;;
                                  -30772;5;0;false;false;63;95;191;;;
                                  -30777;1;0;false;false;;;;;;
                                  -30778;20;0;false;false;63;95;191;;;
                                  -30798;4;0;false;false;;;;;;
                                  -30802;1;0;false;false;63;95;191;;;
                                  -30803;1;0;false;false;;;;;;
                                  -30804;7;1;false;false;127;159;191;;;
                                  -30811;10;0;false;false;63;95;191;;;
                                  -30821;1;0;false;false;;;;;;
                                  -30822;6;0;false;false;63;95;191;;;
                                  -30828;1;0;false;false;;;;;;
                                  -30829;2;0;false;false;63;95;191;;;
                                  -30831;1;0;false;false;;;;;;
                                  -30832;3;0;false;false;63;95;191;;;
                                  -30835;1;0;false;false;;;;;;
                                  -30836;5;0;false;false;63;95;191;;;
                                  -30841;1;0;false;false;;;;;;
                                  -30842;1;0;false;false;63;95;191;;;
                                  -30843;1;0;false;false;;;;;;
                                  -30844;5;0;false;false;63;95;191;;;
                                  -30849;1;0;false;false;;;;;;
                                  -30850;4;0;false;false;63;95;191;;;
                                  -30854;1;0;false;false;;;;;;
                                  -30855;3;0;false;false;63;95;191;;;
                                  -30858;1;0;false;false;;;;;;
                                  -30859;5;0;false;false;63;95;191;;;
                                  -30864;1;0;false;false;;;;;;
                                  -30865;2;0;false;false;63;95;191;;;
                                  -30867;1;0;false;false;;;;;;
                                  -30868;3;0;false;false;63;95;191;;;
                                  -30871;5;0;false;false;;;;;;
                                  -30876;1;0;false;false;63;95;191;;;
                                  -30877;2;0;false;false;;;;;;
                                  -30879;6;0;false;false;63;95;191;;;
                                  -30885;1;0;false;false;;;;;;
                                  -30886;9;0;false;false;63;95;191;;;
                                  -30895;1;0;false;false;;;;;;
                                  -30896;3;0;false;false;63;95;191;;;
                                  -30899;1;0;false;false;;;;;;
                                  -30900;4;0;false;false;63;95;191;;;
                                  -30904;1;0;false;false;;;;;;
                                  -30905;9;0;false;false;63;95;191;;;
                                  -30914;1;0;false;false;;;;;;
                                  -30915;6;0;false;false;63;95;191;;;
                                  -30921;1;0;false;false;;;;;;
                                  -30922;3;0;false;false;63;95;191;;;
                                  -30925;1;0;false;false;;;;;;
                                  -30926;5;0;false;false;63;95;191;;;
                                  -30931;1;0;false;false;;;;;;
                                  -30932;6;0;false;false;63;95;191;;;
                                  -30938;1;0;false;false;;;;;;
                                  -30939;2;0;false;false;63;95;191;;;
                                  -30941;1;0;false;false;;;;;;
                                  -30942;5;0;false;false;63;95;191;;;
                                  -30947;1;0;false;false;;;;;;
                                  -30948;3;0;false;false;63;95;191;;;
                                  -30951;5;0;false;false;;;;;;
                                  -30956;1;0;false;false;63;95;191;;;
                                  -30957;2;0;false;false;;;;;;
                                  -30959;3;0;false;false;63;95;191;;;
                                  -30962;1;0;false;false;;;;;;
                                  -30963;6;0;false;false;63;95;191;;;
                                  -30969;1;0;false;false;;;;;;
                                  -30970;9;0;false;false;63;95;191;;;
                                  -30979;1;0;false;false;;;;;;
                                  -30980;6;0;false;false;63;95;191;;;
                                  -30986;1;0;false;false;;;;;;
                                  -30987;6;0;false;false;63;95;191;;;
                                  -30993;1;0;false;false;;;;;;
                                  -30994;8;0;false;false;63;95;191;;;
                                  -31002;1;0;false;false;;;;;;
                                  -31003;2;0;false;false;63;95;191;;;
                                  -31005;1;0;false;false;;;;;;
                                  -31006;8;0;false;false;63;95;191;;;
                                  -31014;4;0;false;false;;;;;;
                                  -31018;1;0;false;false;63;95;191;;;
                                  -31019;1;0;false;false;;;;;;
                                  -31020;7;1;false;false;127;159;191;;;
                                  -31027;6;0;false;false;63;95;191;;;
                                  -31033;1;0;false;false;;;;;;
                                  -31034;6;0;false;false;63;95;191;;;
                                  -31040;1;0;false;false;;;;;;
                                  -31041;2;0;false;false;63;95;191;;;
                                  -31043;1;0;false;false;;;;;;
                                  -31044;3;0;false;false;63;95;191;;;
                                  -31047;1;0;false;false;;;;;;
                                  -31048;3;0;false;false;63;95;191;;;
                                  -31051;1;0;false;false;;;;;;
                                  -31052;11;0;false;false;63;95;191;;;
                                  -31063;1;0;false;false;;;;;;
                                  -31064;4;0;false;false;63;95;191;;;
                                  -31068;1;0;false;false;;;;;;
                                  -31069;3;0;false;false;63;95;191;;;
                                  -31072;1;0;false;false;;;;;;
                                  -31073;2;0;false;false;63;95;191;;;
                                  -31075;1;0;false;false;;;;;;
                                  -31076;5;0;false;false;63;95;191;;;
                                  -31081;4;0;false;false;;;;;;
                                  -31085;1;0;false;false;63;95;191;;;
                                  -31086;1;0;false;false;;;;;;
                                  -31087;7;1;false;false;127;159;191;;;
                                  -31094;14;0;false;false;63;95;191;;;
                                  -31108;1;0;false;false;;;;;;
                                  -31109;4;0;false;false;63;95;191;;;
                                  -31113;1;0;false;false;;;;;;
                                  -31114;10;0;false;false;63;95;191;;;
                                  -31124;1;0;false;false;;;;;;
                                  -31125;5;0;false;false;63;95;191;;;
                                  -31130;1;0;false;false;;;;;;
                                  -31131;2;0;false;false;63;95;191;;;
                                  -31133;1;0;false;false;;;;;;
                                  -31134;3;0;false;false;63;95;191;;;
                                  -31137;1;0;false;false;;;;;;
                                  -31138;3;0;false;false;63;95;191;;;
                                  -31141;1;0;false;false;;;;;;
                                  -31142;11;0;false;false;63;95;191;;;
                                  -31153;5;0;false;false;;;;;;
                                  -31158;1;0;false;false;63;95;191;;;
                                  -31159;2;0;false;false;;;;;;
                                  -31161;3;0;false;false;63;95;191;;;
                                  -31164;1;0;false;false;;;;;;
                                  -31165;2;0;false;false;63;95;191;;;
                                  -31167;1;0;false;false;;;;;;
                                  -31168;5;0;false;false;63;95;191;;;
                                  -31173;4;0;false;false;;;;;;
                                  -31177;2;0;false;false;63;95;191;;;
                                  -31179;3;0;false;false;;;;;;
                                  -31182;4;1;false;false;127;0;85;;;
                                  -31186;1;0;false;false;;;;;;
                                  -31187;22;0;false;false;0;0;0;;;
                                  -31209;1;0;false;false;;;;;;
                                  -31210;5;0;false;false;0;0;0;;;
                                  -31215;1;0;false;false;;;;;;
                                  -31216;3;1;false;false;127;0;85;;;
                                  -31219;1;0;false;false;;;;;;
                                  -31220;11;0;false;false;0;0;0;;;
                                  -31231;1;0;false;false;;;;;;
                                  -31232;12;0;false;false;0;0;0;;;
                                  -31244;1;0;false;false;;;;;;
                                  -31245;7;0;false;false;0;0;0;;;
                                  -31252;1;0;false;false;;;;;;
                                  -31253;5;0;false;false;0;0;0;;;
                                  -31258;1;0;false;false;;;;;;
                                  -31259;15;0;false;false;0;0;0;;;
                                  -31274;1;0;false;false;;;;;;
                                  -31275;1;0;false;false;0;0;0;;;
                                  -31276;4;0;false;false;;;;;;
                                  -31280;3;1;false;false;127;0;85;;;
                                  -31283;1;0;false;false;;;;;;
                                  -31284;10;0;false;false;0;0;0;;;
                                  -31294;1;0;false;false;;;;;;
                                  -31295;1;0;false;false;0;0;0;;;
                                  -31296;1;0;false;false;;;;;;
                                  -31297;14;0;false;false;0;0;0;;;
                                  -31311;4;0;false;false;;;;;;
                                  -31315;3;1;false;false;127;0;85;;;
                                  -31318;1;0;false;false;;;;;;
                                  -31319;10;0;false;false;0;0;0;;;
                                  -31329;4;0;false;false;;;;;;
                                  -31333;3;1;false;false;127;0;85;;;
                                  -31336;1;0;false;false;;;;;;
                                  -31337;8;0;false;false;0;0;0;;;
                                  -31345;4;0;false;false;;;;;;
                                  -31349;3;1;false;false;127;0;85;;;
                                  -31352;1;0;false;false;;;;;;
                                  -31353;11;0;false;false;0;0;0;;;
                                  -31364;1;0;false;false;;;;;;
                                  -31365;1;0;false;false;0;0;0;;;
                                  -31366;1;0;false;false;;;;;;
                                  -31367;11;0;false;false;0;0;0;;;
                                  -31378;6;0;false;false;;;;;;
                                  -31384;3;1;false;false;127;0;85;;;
                                  -31387;1;0;false;false;;;;;;
                                  -31388;9;0;false;false;0;0;0;;;
                                  -31397;1;0;false;false;;;;;;
                                  -31398;1;0;false;false;0;0;0;;;
                                  -31399;1;0;false;false;;;;;;
                                  -31400;11;0;false;false;0;0;0;;;
                                  -31411;1;0;false;false;;;;;;
                                  -31412;1;0;false;false;0;0;0;;;
                                  -31413;1;0;false;false;;;;;;
                                  -31414;5;1;false;false;127;0;85;;;
                                  -31419;16;0;false;false;0;0;0;;;
                                  -31435;4;0;false;false;;;;;;
                                  -31439;3;1;false;false;127;0;85;;;
                                  -31442;1;0;false;false;;;;;;
                                  -31443;13;0;false;false;0;0;0;;;
                                  -31456;1;0;false;false;;;;;;
                                  -31457;1;0;false;false;0;0;0;;;
                                  -31458;1;0;false;false;;;;;;
                                  -31459;20;0;false;false;0;0;0;;;
                                  -31479;1;0;false;false;;;;;;
                                  -31480;9;0;false;false;0;0;0;;;
                                  -31489;1;0;false;false;;;;;;
                                  -31490;1;0;false;false;0;0;0;;;
                                  -31491;1;0;false;false;;;;;;
                                  -31492;12;0;false;false;0;0;0;;;
                                  -31504;4;0;false;false;;;;;;
                                  -31508;3;1;false;false;127;0;85;;;
                                  -31511;1;0;false;false;;;;;;
                                  -31512;11;0;false;false;0;0;0;;;
                                  -31523;1;0;false;false;;;;;;
                                  -31524;1;0;false;false;0;0;0;;;
                                  -31525;1;0;false;false;;;;;;
                                  -31526;11;0;false;false;0;0;0;;;
                                  -31537;1;0;false;false;;;;;;
                                  -31538;1;0;false;false;0;0;0;;;
                                  -31539;1;0;false;false;;;;;;
                                  -31540;11;0;false;false;0;0;0;;;
                                  -31551;8;0;false;false;;;;;;
                                  -31559;2;1;false;false;127;0;85;;;
                                  -31561;1;0;false;false;;;;;;
                                  -31562;12;0;false;false;0;0;0;;;
                                  -31574;1;0;false;false;;;;;;
                                  -31575;2;0;false;false;0;0;0;;;
                                  -31577;1;0;false;false;;;;;;
                                  -31578;14;0;false;false;0;0;0;;;
                                  -31592;1;0;false;false;;;;;;
                                  -31593;1;0;false;false;0;0;0;;;
                                  -31594;5;0;false;false;;;;;;
                                  -31599;6;1;false;false;127;0;85;;;
                                  -31605;1;0;false;false;0;0;0;;;
                                  -31606;5;0;false;false;;;;;;
                                  -31611;38;0;false;false;63;127;95;;;
                                  -31649;2;0;false;false;;;;;;
                                  -31651;1;0;false;false;0;0;0;;;
                                  -31652;4;0;false;false;;;;;;
                                  -31656;4;1;false;false;127;0;85;;;
                                  -31660;4;0;false;false;;;;;;
                                  -31664;2;1;false;false;127;0;85;;;
                                  -31666;1;0;false;false;;;;;;
                                  -31667;12;0;false;false;0;0;0;;;
                                  -31679;1;0;false;false;;;;;;
                                  -31680;1;0;false;false;0;0;0;;;
                                  -31681;1;0;false;false;;;;;;
                                  -31682;2;0;false;false;0;0;0;;;
                                  -31684;1;0;false;false;;;;;;
                                  -31685;1;0;false;false;0;0;0;;;
                                  -31686;5;0;false;false;;;;;;
                                  -31691;9;0;false;false;0;0;0;;;
                                  -31700;1;0;false;false;;;;;;
                                  -31701;1;0;false;false;0;0;0;;;
                                  -31702;1;0;false;false;;;;;;
                                  -31703;12;0;false;false;0;0;0;;;
                                  -31715;2;0;false;false;;;;;;
                                  -31717;39;0;false;false;63;127;95;;;
                                  -31756;2;0;false;false;;;;;;
                                  -31758;1;0;false;false;0;0;0;;;
                                  -31759;4;0;false;false;;;;;;
                                  -31763;4;1;false;false;127;0;85;;;
                                  -31767;1;0;false;false;;;;;;
                                  -31768;1;0;false;false;0;0;0;;;
                                  -31769;5;0;false;false;;;;;;
                                  -31774;9;0;false;false;0;0;0;;;
                                  -31783;1;0;false;false;;;;;;
                                  -31784;1;0;false;false;0;0;0;;;
                                  -31785;1;0;false;false;;;;;;
                                  -31786;2;0;false;false;0;0;0;;;
                                  -31788;4;0;false;false;;;;;;
                                  -31792;1;0;false;false;0;0;0;;;
                                  -31793;4;0;false;false;;;;;;
                                  -31797;2;1;false;false;127;0;85;;;
                                  -31799;1;0;false;false;;;;;;
                                  -31800;15;0;false;false;0;0;0;;;
                                  -31815;1;0;false;false;;;;;;
                                  -31816;2;0;false;false;0;0;0;;;
                                  -31818;1;0;false;false;;;;;;
                                  -31819;4;1;false;false;127;0;85;;;
                                  -31823;1;0;false;false;0;0;0;;;
                                  -31824;1;0;false;false;;;;;;
                                  -31825;1;0;false;false;0;0;0;;;
                                  -31826;5;0;false;false;;;;;;
                                  -31831;6;0;false;false;0;0;0;;;
                                  -31837;14;0;false;false;42;0;255;;;
                                  -31851;2;0;false;false;0;0;0;;;
                                  -31853;5;0;false;false;;;;;;
                                  -31858;35;0;false;false;0;0;0;;;
                                  -31893;1;0;false;false;;;;;;
                                  -31894;21;0;false;false;0;0;0;;;
                                  -31915;5;0;false;false;;;;;;
                                  -31920;6;0;false;false;0;0;0;;;
                                  -31926;3;0;false;false;42;0;255;;;
                                  -31929;2;0;false;false;0;0;0;;;
                                  -31931;5;0;false;false;;;;;;
                                  -31936;1;0;false;false;0;0;0;;;
                                  -31937;4;0;false;false;;;;;;
                                  -31941;3;1;false;false;127;0;85;;;
                                  -31944;1;0;false;false;;;;;;
                                  -31945;1;0;false;false;0;0;0;;;
                                  -31946;3;1;false;false;127;0;85;;;
                                  -31949;1;0;false;false;;;;;;
                                  -31950;1;0;false;false;0;0;0;;;
                                  -31951;1;0;false;false;;;;;;
                                  -31952;1;0;false;false;0;0;0;;;
                                  -31953;1;0;false;false;;;;;;
                                  -31954;2;0;false;false;0;0;0;;;
                                  -31956;1;0;false;false;;;;;;
                                  -31957;1;0;false;false;0;0;0;;;
                                  -31958;1;0;false;false;;;;;;
                                  -31959;1;0;false;false;0;0;0;;;
                                  -31960;1;0;false;false;;;;;;
                                  -31961;14;0;false;false;0;0;0;;;
                                  -31975;1;0;false;false;;;;;;
                                  -31976;4;0;false;false;0;0;0;;;
                                  -31980;1;0;false;false;;;;;;
                                  -31981;1;0;false;false;0;0;0;;;
                                  -31982;7;0;false;false;;;;;;
                                  -31989;10;0;false;false;0;0;0;;;
                                  -31999;1;0;false;false;;;;;;
                                  -32000;5;0;false;false;0;0;0;;;
                                  -32005;1;0;false;false;;;;;;
                                  -32006;1;0;false;false;0;0;0;;;
                                  -32007;1;0;false;false;;;;;;
                                  -32008;10;0;false;false;0;0;0;;;
                                  -32018;5;0;false;false;;;;;;
                                  -32023;3;1;false;false;127;0;85;;;
                                  -32026;1;0;false;false;;;;;;
                                  -32027;5;0;false;false;0;0;0;;;
                                  -32032;1;0;false;false;;;;;;
                                  -32033;1;0;false;false;0;0;0;;;
                                  -32034;1;0;false;false;;;;;;
                                  -32035;11;0;false;false;0;0;0;;;
                                  -32046;1;0;false;false;;;;;;
                                  -32047;1;0;false;false;0;0;0;;;
                                  -32048;1;0;false;false;;;;;;
                                  -32049;11;0;false;false;0;0;0;;;
                                  -32060;5;0;false;false;;;;;;
                                  -32065;3;1;false;false;127;0;85;;;
                                  -32068;1;0;false;false;;;;;;
                                  -32069;3;0;false;false;0;0;0;;;
                                  -32072;1;0;false;false;;;;;;
                                  -32073;1;0;false;false;0;0;0;;;
                                  -32074;1;0;false;false;;;;;;
                                  -32075;5;0;false;false;0;0;0;;;
                                  -32080;1;0;false;false;;;;;;
                                  -32081;1;0;false;false;0;0;0;;;
                                  -32082;1;0;false;false;;;;;;
                                  -32083;13;0;false;false;0;0;0;;;
                                  -32096;5;0;false;false;;;;;;
                                  -32101;3;1;false;false;127;0;85;;;
                                  -32104;1;0;false;false;;;;;;
                                  -32105;11;0;false;false;0;0;0;;;
                                  -32116;5;0;false;false;;;;;;
                                  -32121;33;0;false;false;63;127;95;;;
                                  -32154;3;0;false;false;;;;;;
                                  -32157;2;1;false;false;127;0;85;;;
                                  -32159;1;0;false;false;;;;;;
                                  -32160;4;0;false;false;0;0;0;;;
                                  -32164;1;0;false;false;;;;;;
                                  -32165;1;0;false;false;0;0;0;;;
                                  -32166;1;0;false;false;;;;;;
                                  -32167;12;0;false;false;0;0;0;;;
                                  -32179;1;0;false;false;;;;;;
                                  -32180;1;0;false;false;0;0;0;;;
                                  -32181;6;0;false;false;;;;;;
                                  -32187;8;1;false;false;127;0;85;;;
                                  -32195;1;0;false;false;0;0;0;;;
                                  -32196;5;0;false;false;;;;;;
                                  -32201;1;0;false;false;0;0;0;;;
                                  -32202;5;0;false;false;;;;;;
                                  -32207;50;0;false;false;63;127;95;;;
                                  -32257;3;0;false;false;;;;;;
                                  -32260;2;1;false;false;127;0;85;;;
                                  -32262;1;0;false;false;;;;;;
                                  -32263;6;0;false;false;0;0;0;;;
                                  -32269;1;0;false;false;;;;;;
                                  -32270;2;0;false;false;0;0;0;;;
                                  -32272;1;0;false;false;;;;;;
                                  -32273;14;0;false;false;0;0;0;;;
                                  -32287;1;0;false;false;;;;;;
                                  -32288;1;0;false;false;0;0;0;;;
                                  -32289;6;0;false;false;;;;;;
                                  -32295;5;1;false;false;127;0;85;;;
                                  -32300;1;0;false;false;0;0;0;;;
                                  -32301;5;0;false;false;;;;;;
                                  -32306;1;0;false;false;0;0;0;;;
                                  -32307;5;0;false;false;;;;;;
                                  -32312;28;0;false;false;63;127;95;;;
                                  -32340;3;0;false;false;;;;;;
                                  -32343;2;1;false;false;127;0;85;;;
                                  -32345;1;0;false;false;;;;;;
                                  -32346;10;0;false;false;0;0;0;;;
                                  -32356;1;0;false;false;;;;;;
                                  -32357;1;0;false;false;0;0;0;;;
                                  -32358;1;0;false;false;;;;;;
                                  -32359;6;0;false;false;0;0;0;;;
                                  -32365;1;0;false;false;;;;;;
                                  -32366;1;0;false;false;0;0;0;;;
                                  -32367;7;0;false;false;;;;;;
                                  -32374;27;0;false;false;63;127;95;;;
                                  -32401;4;0;false;false;;;;;;
                                  -32405;61;0;false;false;63;127;95;;;
                                  -32466;4;0;false;false;;;;;;
                                  -32470;30;0;false;false;63;127;95;;;
                                  -32500;4;0;false;false;;;;;;
                                  -32504;11;0;false;false;0;0;0;;;
                                  -32515;1;0;false;false;;;;;;
                                  -32516;10;0;false;false;0;0;0;;;
                                  -32526;1;0;false;false;;;;;;
                                  -32527;7;0;false;false;0;0;0;;;
                                  -32534;6;0;false;false;;;;;;
                                  -32540;9;0;false;false;0;0;0;;;
                                  -32549;1;0;false;false;;;;;;
                                  -32550;1;0;false;false;0;0;0;;;
                                  -32551;1;0;false;false;;;;;;
                                  -32552;6;0;false;false;0;0;0;;;
                                  -32558;5;0;false;false;;;;;;
                                  -32563;1;0;false;false;0;0;0;;;
                                  -32564;5;0;false;false;;;;;;
                                  -32569;22;0;false;false;63;127;95;;;
                                  -32591;3;0;false;false;;;;;;
                                  -32594;10;0;false;false;0;0;0;;;
                                  -32604;1;0;false;false;;;;;;
                                  -32605;1;0;false;false;0;0;0;;;
                                  -32606;1;0;false;false;;;;;;
                                  -32607;31;0;false;false;0;0;0;;;
                                  -32638;1;0;false;false;;;;;;
                                  -32639;20;0;false;false;0;0;0;;;
                                  -32659;5;0;false;false;;;;;;
                                  -32664;6;0;false;false;0;0;0;;;
                                  -32670;7;0;false;false;42;0;255;;;
                                  -32677;2;0;false;false;0;0;0;;;
                                  -32679;5;0;false;false;;;;;;
                                  -32684;37;0;false;false;0;0;0;;;
                                  -32721;1;0;false;false;;;;;;
                                  -32722;21;0;false;false;0;0;0;;;
                                  -32743;5;0;false;false;;;;;;
                                  -32748;2;1;false;false;127;0;85;;;
                                  -32750;1;0;false;false;;;;;;
                                  -32751;11;0;false;false;0;0;0;;;
                                  -32762;1;0;false;false;;;;;;
                                  -32763;2;0;false;false;0;0;0;;;
                                  -32765;1;0;false;false;;;;;;
                                  -32766;19;0;false;false;0;0;0;;;
                                  -32785;1;0;false;false;;;;;;
                                  -32786;1;0;false;false;0;0;0;;;
                                  -32787;6;0;false;false;;;;;;
                                  -32793;6;0;false;false;0;0;0;;;
                                  -32799;13;0;false;false;42;0;255;;;
                                  -32812;2;0;false;false;0;0;0;;;
                                  -32814;6;0;false;false;;;;;;
                                  -32820;18;0;false;false;0;0;0;;;
                                  -32838;5;0;false;false;;;;;;
                                  -32843;1;0;false;false;0;0;0;;;
                                  -32844;5;0;false;false;;;;;;
                                  -32849;2;1;false;false;127;0;85;;;
                                  -32851;1;0;false;false;;;;;;
                                  -32852;17;0;false;false;0;0;0;;;
                                  -32869;1;0;false;false;;;;;;
                                  -32870;1;0;false;false;0;0;0;;;
                                  -32871;1;0;false;false;;;;;;
                                  -32872;9;0;false;false;0;0;0;;;
                                  -32881;1;0;false;false;;;;;;
                                  -32882;2;0;false;false;0;0;0;;;
                                  -32884;1;0;false;false;;;;;;
                                  -32885;2;0;false;false;0;0;0;;;
                                  -32887;1;0;false;false;;;;;;
                                  -32888;1;0;false;false;0;0;0;;;
                                  -32889;6;0;false;false;;;;;;
                                  -32895;6;0;false;false;0;0;0;;;
                                  -32901;5;0;false;false;42;0;255;;;
                                  -32906;2;0;false;false;0;0;0;;;
                                  -32908;6;0;false;false;;;;;;
                                  -32914;1;0;false;false;0;0;0;;;
                                  -32915;5;0;false;false;;;;;;
                                  -32920;2;1;false;false;127;0;85;;;
                                  -32922;1;0;false;false;;;;;;
                                  -32923;17;0;false;false;0;0;0;;;
                                  -32940;1;0;false;false;;;;;;
                                  -32941;1;0;false;false;0;0;0;;;
                                  -32942;1;0;false;false;;;;;;
                                  -32943;11;0;false;false;0;0;0;;;
                                  -32954;1;0;false;false;;;;;;
                                  -32955;2;0;false;false;0;0;0;;;
                                  -32957;1;0;false;false;;;;;;
                                  -32958;2;0;false;false;0;0;0;;;
                                  -32960;1;0;false;false;;;;;;
                                  -32961;1;0;false;false;0;0;0;;;
                                  -32962;6;0;false;false;;;;;;
                                  -32968;6;0;false;false;0;0;0;;;
                                  -32974;5;0;false;false;42;0;255;;;
                                  -32979;2;0;false;false;0;0;0;;;
                                  -32981;6;0;false;false;;;;;;
                                  -32987;1;0;false;false;0;0;0;;;
                                  -32988;5;0;false;false;;;;;;
                                  -32993;2;1;false;false;127;0;85;;;
                                  -32995;1;0;false;false;;;;;;
                                  -32996;17;0;false;false;0;0;0;;;
                                  -33013;1;0;false;false;;;;;;
                                  -33014;1;0;false;false;0;0;0;;;
                                  -33015;6;0;false;false;;;;;;
                                  -33021;6;0;false;false;0;0;0;;;
                                  -33027;6;0;false;false;42;0;255;;;
                                  -33033;2;0;false;false;0;0;0;;;
                                  -33035;5;0;false;false;;;;;;
                                  -33040;1;0;false;false;0;0;0;;;
                                  -33041;5;0;false;false;;;;;;
                                  -33046;2;1;false;false;127;0;85;;;
                                  -33048;1;0;false;false;;;;;;
                                  -33049;17;0;false;false;0;0;0;;;
                                  -33066;1;0;false;false;;;;;;
                                  -33067;1;0;false;false;0;0;0;;;
                                  -33068;6;0;false;false;;;;;;
                                  -33074;6;0;false;false;0;0;0;;;
                                  -33080;10;0;false;false;42;0;255;;;
                                  -33090;2;0;false;false;0;0;0;;;
                                  -33092;5;0;false;false;;;;;;
                                  -33097;1;0;false;false;0;0;0;;;
                                  -33098;5;0;false;false;;;;;;
                                  -33103;6;0;false;false;0;0;0;;;
                                  -33109;3;0;false;false;42;0;255;;;
                                  -33112;2;0;false;false;0;0;0;;;
                                  -33114;6;0;false;false;;;;;;
                                  -33120;62;0;false;false;63;127;95;;;
                                  -33182;3;0;false;false;;;;;;
                                  -33185;7;0;false;false;0;0;0;;;
                                  -33192;1;0;false;false;;;;;;
                                  -33193;1;0;false;false;0;0;0;;;
                                  -33194;1;0;false;false;;;;;;
                                  -33195;13;0;false;false;0;0;0;;;
                                  -33208;1;0;false;false;;;;;;
                                  -33209;15;0;false;false;0;0;0;;;
                                  -33224;5;0;false;false;;;;;;
                                  -33229;67;0;false;false;63;127;95;;;
                                  -33296;3;0;false;false;;;;;;
                                  -33299;7;0;false;false;0;0;0;;;
                                  -33306;1;0;false;false;;;;;;
                                  -33307;1;0;false;false;0;0;0;;;
                                  -33308;1;0;false;false;;;;;;
                                  -33309;17;0;false;false;0;0;0;;;
                                  -33326;1;0;false;false;;;;;;
                                  -33327;11;0;false;false;0;0;0;;;
                                  -33338;5;0;false;false;;;;;;
                                  -33343;11;0;false;false;0;0;0;;;
                                  -33354;1;0;false;false;;;;;;
                                  -33355;10;0;false;false;0;0;0;;;
                                  -33365;1;0;false;false;;;;;;
                                  -33366;9;0;false;false;0;0;0;;;
                                  -33375;5;0;false;false;;;;;;
                                  -33380;2;1;false;false;127;0;85;;;
                                  -33382;1;0;false;false;;;;;;
                                  -33383;17;0;false;false;0;0;0;;;
                                  -33400;1;0;false;false;;;;;;
                                  -33401;1;0;false;false;0;0;0;;;
                                  -33402;1;0;false;false;;;;;;
                                  -33403;9;0;false;false;0;0;0;;;
                                  -33412;1;0;false;false;;;;;;
                                  -33413;2;0;false;false;0;0;0;;;
                                  -33415;1;0;false;false;;;;;;
                                  -33416;2;0;false;false;0;0;0;;;
                                  -33418;1;0;false;false;;;;;;
                                  -33419;1;0;false;false;0;0;0;;;
                                  -33420;6;0;false;false;;;;;;
                                  -33426;6;0;false;false;0;0;0;;;
                                  -33432;6;0;false;false;42;0;255;;;
                                  -33438;2;0;false;false;0;0;0;;;
                                  -33440;6;0;false;false;;;;;;
                                  -33446;1;0;false;false;0;0;0;;;
                                  -33447;5;0;false;false;;;;;;
                                  -33452;2;1;false;false;127;0;85;;;
                                  -33454;1;0;false;false;;;;;;
                                  -33455;17;0;false;false;0;0;0;;;
                                  -33472;1;0;false;false;;;;;;
                                  -33473;1;0;false;false;0;0;0;;;
                                  -33474;1;0;false;false;;;;;;
                                  -33475;11;0;false;false;0;0;0;;;
                                  -33486;1;0;false;false;;;;;;
                                  -33487;2;0;false;false;0;0;0;;;
                                  -33489;1;0;false;false;;;;;;
                                  -33490;2;0;false;false;0;0;0;;;
                                  -33492;1;0;false;false;;;;;;
                                  -33493;1;0;false;false;0;0;0;;;
                                  -33494;6;0;false;false;;;;;;
                                  -33500;6;0;false;false;0;0;0;;;
                                  -33506;6;0;false;false;42;0;255;;;
                                  -33512;2;0;false;false;0;0;0;;;
                                  -33514;6;0;false;false;;;;;;
                                  -33520;1;0;false;false;0;0;0;;;
                                  -33521;5;0;false;false;;;;;;
                                  -33526;2;1;false;false;127;0;85;;;
                                  -33528;1;0;false;false;;;;;;
                                  -33529;17;0;false;false;0;0;0;;;
                                  -33546;1;0;false;false;;;;;;
                                  -33547;1;0;false;false;0;0;0;;;
                                  -33548;6;0;false;false;;;;;;
                                  -33554;6;0;false;false;0;0;0;;;
                                  -33560;7;0;false;false;42;0;255;;;
                                  -33567;2;0;false;false;0;0;0;;;
                                  -33569;5;0;false;false;;;;;;
                                  -33574;1;0;false;false;0;0;0;;;
                                  -33575;8;0;false;false;;;;;;
                                  -33583;2;1;false;false;127;0;85;;;
                                  -33585;1;0;false;false;;;;;;
                                  -33586;17;0;false;false;0;0;0;;;
                                  -33603;1;0;false;false;;;;;;
                                  -33604;1;0;false;false;0;0;0;;;
                                  -33605;6;0;false;false;;;;;;
                                  -33611;6;0;false;false;0;0;0;;;
                                  -33617;11;0;false;false;42;0;255;;;
                                  -33628;2;0;false;false;0;0;0;;;
                                  -33630;5;0;false;false;;;;;;
                                  -33635;1;0;false;false;0;0;0;;;
                                  -33636;5;0;false;false;;;;;;
                                  -33641;6;0;false;false;0;0;0;;;
                                  -33647;3;0;false;false;42;0;255;;;
                                  -33650;2;0;false;false;0;0;0;;;
                                  -33652;5;0;false;false;;;;;;
                                  -33657;9;0;false;false;0;0;0;;;
                                  -33666;1;0;false;false;;;;;;
                                  -33667;1;0;false;false;0;0;0;;;
                                  -33668;1;0;false;false;;;;;;
                                  -33669;8;0;false;false;0;0;0;;;
                                  -33677;4;0;false;false;;;;;;
                                  -33681;1;0;false;false;0;0;0;;;
                                  -33682;4;0;false;false;;;;;;
                                  -33686;47;0;false;false;63;127;95;;;
                                  -33733;2;0;false;false;;;;;;
                                  -33735;2;1;false;false;127;0;85;;;
                                  -33737;1;0;false;false;;;;;;
                                  -33738;10;0;false;false;0;0;0;;;
                                  -33748;1;0;false;false;;;;;;
                                  -33749;1;0;false;false;0;0;0;;;
                                  -33750;1;0;false;false;;;;;;
                                  -33751;14;0;false;false;0;0;0;;;
                                  -33765;1;0;false;false;;;;;;
                                  -33766;1;0;false;false;0;0;0;;;
                                  -33767;5;0;false;false;;;;;;
                                  -33772;11;0;false;false;0;0;0;;;
                                  -33783;1;0;false;false;;;;;;
                                  -33784;10;0;false;false;0;0;0;;;
                                  -33794;1;0;false;false;;;;;;
                                  -33795;15;0;false;false;0;0;0;;;
                                  -33810;4;0;false;false;;;;;;
                                  -33814;1;0;false;false;0;0;0;;;
                                  -33815;4;0;false;false;;;;;;
                                  -33819;2;1;false;false;127;0;85;;;
                                  -33821;1;0;false;false;;;;;;
                                  -33822;15;0;false;false;0;0;0;;;
                                  -33837;1;0;false;false;;;;;;
                                  -33838;2;0;false;false;0;0;0;;;
                                  -33840;1;0;false;false;;;;;;
                                  -33841;4;1;false;false;127;0;85;;;
                                  -33845;1;0;false;false;0;0;0;;;
                                  -33846;1;0;false;false;;;;;;
                                  -33847;1;0;false;false;0;0;0;;;
                                  -33848;5;0;false;false;;;;;;
                                  -33853;6;0;false;false;0;0;0;;;
                                  -33859;3;0;false;false;42;0;255;;;
                                  -33862;2;0;false;false;0;0;0;;;
                                  -33864;4;0;false;false;;;;;;
                                  -33868;1;0;false;false;0;0;0;;;
                                  -33869;3;0;false;false;;;;;;
                                  -33872;1;0;false;false;0;0;0;;;
                                  -33873;3;0;false;false;;;;;;
                                  -33876;1;0;false;false;0;0;0;;;
                                  -33877;3;0;false;false;;;;;;
                                  -33880;3;0;false;false;63;95;191;;;
                                  -33883;4;0;false;false;;;;;;
                                  -33887;1;0;false;false;63;95;191;;;
                                  -33888;1;0;false;false;;;;;;
                                  -33889;3;0;false;false;63;95;191;;;
                                  -33892;1;0;false;false;;;;;;
                                  -33893;6;0;false;false;127;127;159;;;
                                  -33899;10;0;false;false;63;95;191;;;
                                  -33909;7;0;false;false;127;127;159;;;
                                  -33916;1;0;false;false;;;;;;
                                  -33917;5;0;false;false;63;95;191;;;
                                  -33922;1;0;false;false;;;;;;
                                  -33923;2;0;false;false;63;95;191;;;
                                  -33925;1;0;false;false;;;;;;
                                  -33926;4;0;false;false;63;95;191;;;
                                  -33930;1;0;false;false;;;;;;
                                  -33931;2;0;false;false;63;95;191;;;
                                  -33933;1;0;false;false;;;;;;
                                  -33934;5;0;false;false;63;95;191;;;
                                  -33939;1;0;false;false;;;;;;
                                  -33940;6;0;false;false;63;95;191;;;
                                  -33946;1;0;false;false;;;;;;
                                  -33947;7;0;false;false;63;95;191;;;
                                  -33954;1;0;false;false;;;;;;
                                  -33955;2;0;false;false;63;95;191;;;
                                  -33957;4;0;false;false;;;;;;
                                  -33961;1;0;false;false;63;95;191;;;
                                  -33962;1;0;false;false;;;;;;
                                  -33963;1;0;false;false;63;95;191;;;
                                  -33964;1;0;false;false;;;;;;
                                  -33965;7;0;false;false;63;95;191;;;
                                  -33972;2;0;false;false;;;;;;
                                  -33974;5;0;false;false;63;95;191;;;
                                  -33979;1;0;false;false;;;;;;
                                  -33980;3;0;false;false;63;95;191;;;
                                  -33983;1;0;false;false;;;;;;
                                  -33984;7;0;false;false;63;95;191;;;
                                  -33991;1;0;false;false;;;;;;
                                  -33992;5;0;false;false;63;95;191;;;
                                  -33997;1;0;false;false;;;;;;
                                  -33998;3;0;false;false;63;95;191;;;
                                  -34001;1;0;false;false;;;;;;
                                  -34002;4;0;false;false;63;95;191;;;
                                  -34006;1;0;false;false;;;;;;
                                  -34007;6;0;false;false;63;95;191;;;
                                  -34013;1;0;false;false;;;;;;
                                  -34014;3;0;false;false;63;95;191;;;
                                  -34017;1;0;false;false;;;;;;
                                  -34018;2;0;false;false;63;95;191;;;
                                  -34020;1;0;false;false;;;;;;
                                  -34021;8;0;false;false;63;95;191;;;
                                  -34029;1;0;false;false;;;;;;
                                  -34030;2;0;false;false;63;95;191;;;
                                  -34032;1;0;false;false;;;;;;
                                  -34033;5;0;false;false;63;95;191;;;
                                  -34038;5;0;false;false;;;;;;
                                  -34043;1;0;false;false;63;95;191;;;
                                  -34044;1;0;false;false;;;;;;
                                  -34045;7;0;false;false;63;95;191;;;
                                  -34052;1;0;false;false;;;;;;
                                  -34053;6;0;false;false;63;95;191;;;
                                  -34059;1;0;false;false;;;;;;
                                  -34060;7;0;false;false;63;95;191;;;
                                  -34067;1;0;false;false;;;;;;
                                  -34068;3;0;false;false;63;95;191;;;
                                  -34071;1;0;false;false;;;;;;
                                  -34072;5;0;false;false;63;95;191;;;
                                  -34077;1;0;false;false;;;;;;
                                  -34078;3;0;false;false;63;95;191;;;
                                  -34081;1;0;false;false;;;;;;
                                  -34082;6;0;false;false;63;95;191;;;
                                  -34088;1;0;false;false;;;;;;
                                  -34089;2;0;false;false;63;95;191;;;
                                  -34091;1;0;false;false;;;;;;
                                  -34092;3;0;false;false;63;95;191;;;
                                  -34095;1;0;false;false;;;;;;
                                  -34096;7;0;false;false;63;95;191;;;
                                  -34103;1;0;false;false;;;;;;
                                  -34104;7;0;false;false;63;95;191;;;
                                  -34111;5;0;false;false;;;;;;
                                  -34116;1;0;false;false;63;95;191;;;
                                  -34117;1;0;false;false;;;;;;
                                  -34118;6;0;false;false;63;95;191;;;
                                  -34124;1;0;false;false;;;;;;
                                  -34125;6;0;false;false;63;95;191;;;
                                  -34131;1;0;false;false;;;;;;
                                  -34132;9;0;false;false;63;95;191;;;
                                  -34141;4;0;false;false;;;;;;
                                  -34145;1;0;false;false;63;95;191;;;
                                  -34146;1;0;false;false;;;;;;
                                  -34147;3;0;false;false;127;127;159;;;
                                  -34150;4;0;false;false;;;;;;
                                  -34154;1;0;false;false;63;95;191;;;
                                  -34155;1;0;false;false;;;;;;
                                  -34156;4;0;false;false;127;127;159;;;
                                  -34160;5;0;false;false;63;95;191;;;
                                  -34165;4;0;false;false;127;127;159;;;
                                  -34169;1;0;false;false;;;;;;
                                  -34170;6;0;false;false;127;127;159;;;
                                  -34176;10;0;false;false;63;95;191;;;
                                  -34186;7;0;false;false;127;127;159;;;
                                  -34193;1;0;false;false;;;;;;
                                  -34194;2;0;false;false;63;95;191;;;
                                  -34196;1;0;false;false;;;;;;
                                  -34197;10;0;false;false;63;95;191;;;
                                  -34207;1;0;false;false;;;;;;
                                  -34208;2;0;false;false;63;95;191;;;
                                  -34210;1;0;false;false;;;;;;
                                  -34211;6;0;false;false;63;95;191;;;
                                  -34217;1;0;false;false;;;;;;
                                  -34218;1;0;false;false;63;95;191;;;
                                  -34219;1;0;false;false;;;;;;
                                  -34220;5;0;false;false;63;95;191;;;
                                  -34225;1;0;false;false;;;;;;
                                  -34226;6;0;false;false;63;95;191;;;
                                  -34232;1;0;false;false;;;;;;
                                  -34233;4;0;false;false;63;95;191;;;
                                  -34237;1;0;false;false;;;;;;
                                  -34238;5;0;false;false;63;95;191;;;
                                  -34243;1;0;false;false;;;;;;
                                  -34244;7;0;false;false;63;95;191;;;
                                  -34251;5;0;false;false;;;;;;
                                  -34256;1;0;false;false;63;95;191;;;
                                  -34257;1;0;false;false;;;;;;
                                  -34258;3;0;false;false;63;95;191;;;
                                  -34261;1;0;false;false;;;;;;
                                  -34262;4;0;false;false;63;95;191;;;
                                  -34266;1;0;false;false;;;;;;
                                  -34267;7;0;false;false;63;95;191;;;
                                  -34274;5;0;false;false;;;;;;
                                  -34279;2;0;false;false;63;95;191;;;
                                  -34281;3;0;false;false;;;;;;
                                  -34284;5;1;false;false;127;0;85;;;
                                  -34289;1;0;false;false;;;;;;
                                  -34290;10;0;false;false;0;0;0;;;
                                  -34300;1;0;false;false;;;;;;
                                  -34301;1;0;false;false;0;0;0;;;
                                  -34302;4;0;false;false;;;;;;
                                  -34306;7;1;false;false;127;0;85;;;
                                  -34313;1;0;false;false;;;;;;
                                  -34314;12;0;false;false;0;0;0;;;
                                  -34326;1;0;false;false;;;;;;
                                  -34327;7;0;false;false;0;0;0;;;
                                  -34334;4;0;false;false;;;;;;
                                  -34338;7;1;false;false;127;0;85;;;
                                  -34345;1;0;false;false;;;;;;
                                  -34346;3;1;false;false;127;0;85;;;
                                  -34349;1;0;false;false;;;;;;
                                  -34350;12;0;false;false;0;0;0;;;
                                  -34362;1;0;false;false;;;;;;
                                  -34363;51;0;false;false;63;127;95;;;
                                  -34414;2;0;false;false;;;;;;
                                  -34416;7;1;false;false;127;0;85;;;
                                  -34423;1;0;false;false;;;;;;
                                  -34424;3;1;false;false;127;0;85;;;
                                  -34427;1;0;false;false;;;;;;
                                  -34428;10;0;false;false;0;0;0;;;
                                  -34438;2;0;false;false;;;;;;
                                  -34440;52;0;false;false;63;127;95;;;
                                  -34492;9;0;false;false;;;;;;
                                  -34501;52;0;false;false;63;127;95;;;
                                  -34553;2;0;false;false;;;;;;
                                  -34555;7;1;false;false;127;0;85;;;
                                  -34562;1;0;false;false;;;;;;
                                  -34563;7;1;false;false;127;0;85;;;
                                  -34570;1;0;false;false;;;;;;
                                  -34571;8;0;false;false;0;0;0;;;
                                  -34579;1;0;false;false;;;;;;
                                  -34580;1;0;false;false;0;0;0;;;
                                  -34581;1;0;false;false;;;;;;
                                  -34582;5;1;false;false;127;0;85;;;
                                  -34587;1;0;false;false;0;0;0;;;
                                  -34588;6;0;false;false;;;;;;
                                  -34594;3;0;false;false;63;95;191;;;
                                  -34597;4;0;false;false;;;;;;
                                  -34601;1;0;false;false;63;95;191;;;
                                  -34602;1;0;false;false;;;;;;
                                  -34603;7;0;false;false;63;95;191;;;
                                  -34610;1;0;false;false;;;;;;
                                  -34611;1;0;false;false;63;95;191;;;
                                  -34612;1;0;false;false;;;;;;
                                  -34613;6;0;false;false;63;95;191;;;
                                  -34619;1;0;false;false;;;;;;
                                  -34620;4;0;false;false;63;95;191;;;
                                  -34624;1;0;false;false;;;;;;
                                  -34625;6;0;false;false;63;95;191;;;
                                  -34631;1;0;false;false;;;;;;
                                  -34632;7;0;false;false;63;95;191;;;
                                  -34639;1;0;false;false;;;;;;
                                  -34640;8;0;false;false;63;95;191;;;
                                  -34648;1;0;false;false;;;;;;
                                  -34649;2;0;false;false;63;95;191;;;
                                  -34651;1;0;false;false;;;;;;
                                  -34652;6;0;false;false;63;95;191;;;
                                  -34658;1;0;false;false;;;;;;
                                  -34659;7;0;false;false;63;95;191;;;
                                  -34666;4;0;false;false;;;;;;
                                  -34670;1;0;false;false;63;95;191;;;
                                  -34671;1;0;false;false;;;;;;
                                  -34672;2;0;false;false;63;95;191;;;
                                  -34674;1;0;false;false;;;;;;
                                  -34675;3;0;false;false;63;95;191;;;
                                  -34678;1;0;false;false;;;;;;
                                  -34679;9;0;false;false;63;95;191;;;
                                  -34688;2;0;false;false;;;;;;
                                  -34690;6;0;false;false;127;127;159;;;
                                  -34696;5;0;false;false;63;95;191;;;
                                  -34701;7;0;false;false;127;127;159;;;
                                  -34708;1;0;false;false;;;;;;
                                  -34709;3;0;false;false;63;95;191;;;
                                  -34712;1;0;false;false;;;;;;
                                  -34713;6;0;false;false;127;127;159;;;
                                  -34719;6;0;false;false;63;95;191;;;
                                  -34725;7;0;false;false;127;127;159;;;
                                  -34732;1;0;false;false;;;;;;
                                  -34733;3;0;false;false;63;95;191;;;
                                  -34736;1;0;false;false;;;;;;
                                  -34737;2;0;false;false;63;95;191;;;
                                  -34739;1;0;false;false;;;;;;
                                  -34740;3;0;false;false;63;95;191;;;
                                  -34743;1;0;false;false;;;;;;
                                  -34744;2;0;false;false;63;95;191;;;
                                  -34746;1;0;false;false;;;;;;
                                  -34747;7;0;false;false;63;95;191;;;
                                  -34754;1;0;false;false;;;;;;
                                  -34755;7;0;false;false;63;95;191;;;
                                  -34762;1;0;false;false;;;;;;
                                  -34763;6;0;false;false;63;95;191;;;
                                  -34769;4;0;false;false;;;;;;
                                  -34773;1;0;false;false;63;95;191;;;
                                  -34774;1;0;false;false;;;;;;
                                  -34775;3;0;false;false;127;127;159;;;
                                  -34778;4;0;false;false;;;;;;
                                  -34782;1;0;false;false;63;95;191;;;
                                  -34783;4;0;false;false;;;;;;
                                  -34787;1;0;false;false;63;95;191;;;
                                  -34788;1;0;false;false;;;;;;
                                  -34789;7;1;false;false;127;159;191;;;
                                  -34796;5;0;false;false;63;95;191;;;
                                  -34801;1;0;false;false;;;;;;
                                  -34802;5;0;false;false;63;95;191;;;
                                  -34807;1;0;false;false;;;;;;
                                  -34808;6;0;false;false;63;95;191;;;
                                  -34814;1;0;false;false;;;;;;
                                  -34815;2;0;false;false;63;95;191;;;
                                  -34817;1;0;false;false;;;;;;
                                  -34818;7;0;false;false;63;95;191;;;
                                  -34825;1;0;false;false;;;;;;
                                  -34826;2;0;false;false;63;95;191;;;
                                  -34828;1;0;false;false;;;;;;
                                  -34829;6;0;false;false;63;95;191;;;
                                  -34835;1;0;false;false;;;;;;
                                  -34836;1;0;false;false;63;95;191;;;
                                  -34837;1;0;false;false;;;;;;
                                  -34838;5;0;false;false;63;95;191;;;
                                  -34843;1;0;false;false;;;;;;
                                  -34844;4;0;false;false;63;95;191;;;
                                  -34848;1;0;false;false;;;;;;
                                  -34849;9;0;false;false;63;95;191;;;
                                  -34858;1;0;false;false;;;;;;
                                  -34859;2;0;false;false;63;95;191;;;
                                  -34861;1;0;false;false;;;;;;
                                  -34862;8;0;false;false;63;95;191;;;
                                  -34870;4;0;false;false;;;;;;
                                  -34874;1;0;false;false;63;95;191;;;
                                  -34875;1;0;false;false;;;;;;
                                  -34876;7;1;false;false;127;159;191;;;
                                  -34883;6;0;false;false;63;95;191;;;
                                  -34889;1;0;false;false;;;;;;
                                  -34890;6;0;false;false;63;95;191;;;
                                  -34896;1;0;false;false;;;;;;
                                  -34897;2;0;false;false;63;95;191;;;
                                  -34899;1;0;false;false;;;;;;
                                  -34900;7;0;false;false;63;95;191;;;
                                  -34907;1;0;false;false;;;;;;
                                  -34908;2;0;false;false;63;95;191;;;
                                  -34910;1;0;false;false;;;;;;
                                  -34911;5;0;false;false;63;95;191;;;
                                  -34916;4;0;false;false;;;;;;
                                  -34920;2;0;false;false;63;95;191;;;
                                  -34922;3;0;false;false;;;;;;
                                  -34925;6;1;false;false;127;0;85;;;
                                  -34931;1;0;false;false;;;;;;
                                  -34932;11;0;false;false;0;0;0;;;
                                  -34943;3;1;false;false;127;0;85;;;
                                  -34946;1;0;false;false;;;;;;
                                  -34947;6;0;false;false;0;0;0;;;
                                  -34953;1;0;false;false;;;;;;
                                  -34954;3;1;false;false;127;0;85;;;
                                  -34957;1;0;false;false;;;;;;
                                  -34958;7;0;false;false;0;0;0;;;
                                  -34965;1;0;false;false;;;;;;
                                  -34966;1;0;false;false;0;0;0;;;
                                  -34967;4;0;false;false;;;;;;
                                  -34971;6;0;false;false;0;0;0;;;
                                  -34977;1;0;false;false;;;;;;
                                  -34978;1;0;false;false;0;0;0;;;
                                  -34979;1;0;false;false;;;;;;
                                  -34980;3;1;false;false;127;0;85;;;
                                  -34983;1;0;false;false;;;;;;
                                  -34984;21;0;false;false;0;0;0;;;
                                  -35005;4;0;false;false;;;;;;
                                  -35009;11;0;false;false;0;0;0;;;
                                  -35020;1;0;false;false;;;;;;
                                  -35021;1;0;false;false;0;0;0;;;
                                  -35022;1;0;false;false;;;;;;
                                  -35023;6;0;false;false;0;0;0;;;
                                  -35029;4;0;false;false;;;;;;
                                  -35033;9;0;false;false;0;0;0;;;
                                  -35042;1;0;false;false;;;;;;
                                  -35043;1;0;false;false;0;0;0;;;
                                  -35044;1;0;false;false;;;;;;
                                  -35045;5;0;false;false;0;0;0;;;
                                  -35050;1;0;false;false;;;;;;
                                  -35051;1;0;false;false;0;0;0;;;
                                  -35052;1;0;false;false;;;;;;
                                  -35053;7;0;false;false;0;0;0;;;
                                  -35060;3;0;false;false;;;;;;
                                  -35063;1;0;false;false;0;0;0;;;
                                  -35064;3;0;false;false;;;;;;
                                  -35067;3;0;false;false;63;95;191;;;
                                  -35070;4;0;false;false;;;;;;
                                  -35074;1;0;false;false;63;95;191;;;
                                  -35075;1;0;false;false;;;;;;
                                  -35076;6;0;false;false;63;95;191;;;
                                  -35082;1;0;false;false;;;;;;
                                  -35083;3;0;false;false;63;95;191;;;
                                  -35086;1;0;false;false;;;;;;
                                  -35087;7;0;false;false;63;95;191;;;
                                  -35094;1;0;false;false;;;;;;
                                  -35095;4;0;false;false;63;95;191;;;
                                  -35099;1;0;false;false;;;;;;
                                  -35100;6;0;false;false;63;95;191;;;
                                  -35106;1;0;false;false;;;;;;
                                  -35107;2;0;false;false;63;95;191;;;
                                  -35109;1;0;false;false;;;;;;
                                  -35110;4;0;false;false;63;95;191;;;
                                  -35114;1;0;false;false;;;;;;
                                  -35115;7;0;false;false;63;95;191;;;
                                  -35122;1;0;false;false;;;;;;
                                  -35123;3;0;false;false;63;95;191;;;
                                  -35126;1;0;false;false;;;;;;
                                  -35127;2;0;false;false;63;95;191;;;
                                  -35129;1;0;false;false;;;;;;
                                  -35130;8;0;false;false;63;95;191;;;
                                  -35138;4;0;false;false;;;;;;
                                  -35142;1;0;false;false;63;95;191;;;
                                  -35143;1;0;false;false;;;;;;
                                  -35144;3;0;false;false;127;127;159;;;
                                  -35147;5;0;false;false;63;95;191;;;
                                  -35152;4;0;false;false;127;127;159;;;
                                  -35156;2;0;false;false;;;;;;
                                  -35158;6;0;false;false;127;127;159;;;
                                  -35164;10;0;false;false;63;95;191;;;
                                  -35174;7;0;false;false;127;127;159;;;
                                  -35181;1;0;false;false;;;;;;
                                  -35182;2;0;false;false;63;95;191;;;
                                  -35184;1;0;false;false;;;;;;
                                  -35185;3;0;false;false;63;95;191;;;
                                  -35188;1;0;false;false;;;;;;
                                  -35189;10;0;false;false;63;95;191;;;
                                  -35199;1;0;false;false;;;;;;
                                  -35200;2;0;false;false;63;95;191;;;
                                  -35202;1;0;false;false;;;;;;
                                  -35203;6;0;false;false;63;95;191;;;
                                  -35209;1;0;false;false;;;;;;
                                  -35210;1;0;false;false;63;95;191;;;
                                  -35211;1;0;false;false;;;;;;
                                  -35212;5;0;false;false;63;95;191;;;
                                  -35217;1;0;false;false;;;;;;
                                  -35218;6;0;false;false;63;95;191;;;
                                  -35224;1;0;false;false;;;;;;
                                  -35225;6;0;false;false;63;95;191;;;
                                  -35231;4;0;false;false;;;;;;
                                  -35235;1;0;false;false;63;95;191;;;
                                  -35236;1;0;false;false;;;;;;
                                  -35237;3;0;false;false;63;95;191;;;
                                  -35240;1;0;false;false;;;;;;
                                  -35241;6;0;false;false;63;95;191;;;
                                  -35247;1;0;false;false;;;;;;
                                  -35248;2;0;false;false;63;95;191;;;
                                  -35250;1;0;false;false;;;;;;
                                  -35251;7;0;false;false;63;95;191;;;
                                  -35258;4;0;false;false;;;;;;
                                  -35262;2;0;false;false;63;95;191;;;
                                  -35264;3;0;false;false;;;;;;
                                  -35267;6;1;false;false;127;0;85;;;
                                  -35273;1;0;false;false;;;;;;
                                  -35274;4;1;false;false;127;0;85;;;
                                  -35278;1;0;false;false;;;;;;
                                  -35279;7;0;false;false;0;0;0;;;
                                  -35286;1;0;false;false;;;;;;
                                  -35287;1;0;false;false;0;0;0;;;
                                  -35288;4;0;false;false;;;;;;
                                  -35292;2;1;false;false;127;0;85;;;
                                  -35294;1;0;false;false;;;;;;
                                  -35295;11;0;false;false;0;0;0;;;
                                  -35306;1;0;false;false;;;;;;
                                  -35307;1;0;false;false;0;0;0;;;
                                  -35308;5;0;false;false;;;;;;
                                  -35313;8;0;false;false;0;0;0;;;
                                  -35321;1;0;false;false;;;;;;
                                  -35322;1;0;false;false;0;0;0;;;
                                  -35323;1;0;false;false;;;;;;
                                  -35324;4;1;false;false;127;0;85;;;
                                  -35328;1;0;false;false;0;0;0;;;
                                  -35329;4;0;false;false;;;;;;
                                  -35333;1;0;false;false;0;0;0;;;
                                  -35334;3;0;false;false;;;;;;
                                  -35337;1;0;false;false;0;0;0;;;
                                  -35338;3;0;false;false;;;;;;
                                  -35341;3;0;false;false;63;95;191;;;
                                  -35344;5;0;false;false;;;;;;
                                  -35349;1;0;false;false;63;95;191;;;
                                  -35350;1;0;false;false;;;;;;
                                  -35351;7;0;false;false;63;95;191;;;
                                  -35358;1;0;false;false;;;;;;
                                  -35359;3;0;false;false;63;95;191;;;
                                  -35362;1;0;false;false;;;;;;
                                  -35363;6;0;false;false;63;95;191;;;
                                  -35369;1;0;false;false;;;;;;
                                  -35370;2;0;false;false;63;95;191;;;
                                  -35372;1;0;false;false;;;;;;
                                  -35373;10;0;false;false;63;95;191;;;
                                  -35383;1;0;false;false;;;;;;
                                  -35384;2;0;false;false;63;95;191;;;
                                  -35386;1;0;false;false;;;;;;
                                  -35387;6;0;false;false;63;95;191;;;
                                  -35393;4;0;false;false;;;;;;
                                  -35397;1;0;false;false;63;95;191;;;
                                  -35398;1;0;false;false;;;;;;
                                  -35399;8;1;false;false;127;159;191;;;
                                  -35407;3;0;false;false;63;95;191;;;
                                  -35410;1;0;false;false;;;;;;
                                  -35411;7;0;false;false;63;95;191;;;
                                  -35418;1;0;false;false;;;;;;
                                  -35419;6;0;false;false;63;95;191;;;
                                  -35425;1;0;false;false;;;;;;
                                  -35426;2;0;false;false;63;95;191;;;
                                  -35428;1;0;false;false;;;;;;
                                  -35429;10;0;false;false;63;95;191;;;
                                  -35439;1;0;false;false;;;;;;
                                  -35440;2;0;false;false;63;95;191;;;
                                  -35442;1;0;false;false;;;;;;
                                  -35443;5;0;false;false;63;95;191;;;
                                  -35448;4;0;false;false;;;;;;
                                  -35452;2;0;false;false;63;95;191;;;
                                  -35454;3;0;false;false;;;;;;
                                  -35457;6;1;false;false;127;0;85;;;
                                  -35463;1;0;false;false;;;;;;
                                  -35464;3;1;false;false;127;0;85;;;
                                  -35467;1;0;false;false;;;;;;
                                  -35468;14;0;false;false;0;0;0;;;
                                  -35482;1;0;false;false;;;;;;
                                  -35483;1;0;false;false;0;0;0;;;
                                  -35484;4;0;false;false;;;;;;
                                  -35488;6;1;false;false;127;0;85;;;
                                  -35494;1;0;false;false;;;;;;
                                  -35495;9;0;false;false;0;0;0;;;
                                  -35504;1;0;false;false;;;;;;
                                  -35505;1;0;false;false;0;0;0;;;
                                  -35506;1;0;false;false;;;;;;
                                  -35507;12;0;false;false;0;0;0;;;
                                  -35519;3;0;false;false;;;;;;
                                  -35522;1;0;false;false;0;0;0;;;
                                  -35523;4;0;false;false;;;;;;
                                  -35527;3;0;false;false;63;95;191;;;
                                  -35530;5;0;false;false;;;;;;
                                  -35535;1;0;false;false;63;95;191;;;
                                  -35536;1;0;false;false;;;;;;
                                  -35537;7;0;false;false;63;95;191;;;
                                  -35544;1;0;false;false;;;;;;
                                  -35545;3;0;false;false;63;95;191;;;
                                  -35548;1;0;false;false;;;;;;
                                  -35549;6;0;false;false;63;95;191;;;
                                  -35555;1;0;false;false;;;;;;
                                  -35556;5;0;false;false;63;95;191;;;
                                  -35561;1;0;false;false;;;;;;
                                  -35562;7;0;false;false;63;95;191;;;
                                  -35569;1;0;false;false;;;;;;
                                  -35570;7;0;false;false;63;95;191;;;
                                  -35577;1;0;false;false;;;;;;
                                  -35578;1;0;false;false;63;95;191;;;
                                  -35579;1;0;false;false;;;;;;
                                  -35580;5;0;false;false;63;95;191;;;
                                  -35585;1;0;false;false;;;;;;
                                  -35586;4;0;false;false;63;95;191;;;
                                  -35590;1;0;false;false;;;;;;
                                  -35591;3;0;false;false;63;95;191;;;
                                  -35594;1;0;false;false;;;;;;
                                  -35595;5;0;false;false;63;95;191;;;
                                  -35600;1;0;false;false;;;;;;
                                  -35601;2;0;false;false;63;95;191;;;
                                  -35603;5;0;false;false;;;;;;
                                  -35608;1;0;false;false;63;95;191;;;
                                  -35609;1;0;false;false;;;;;;
                                  -35610;3;0;false;false;63;95;191;;;
                                  -35613;1;0;false;false;;;;;;
                                  -35614;6;0;false;false;63;95;191;;;
                                  -35620;1;0;false;false;;;;;;
                                  -35621;5;0;false;false;63;95;191;;;
                                  -35626;1;0;false;false;;;;;;
                                  -35627;4;0;false;false;63;95;191;;;
                                  -35631;1;0;false;false;;;;;;
                                  -35632;2;0;false;false;63;95;191;;;
                                  -35634;1;0;false;false;;;;;;
                                  -35635;5;0;false;false;63;95;191;;;
                                  -35640;1;0;false;false;;;;;;
                                  -35641;7;0;false;false;63;95;191;;;
                                  -35648;1;0;false;false;;;;;;
                                  -35649;6;0;false;false;63;95;191;;;
                                  -35655;4;0;false;false;;;;;;
                                  -35659;1;0;false;false;63;95;191;;;
                                  -35660;1;0;false;false;;;;;;
                                  -35661;8;1;false;false;127;159;191;;;
                                  -35669;3;0;false;false;63;95;191;;;
                                  -35672;1;0;false;false;;;;;;
                                  -35673;7;0;false;false;63;95;191;;;
                                  -35680;1;0;false;false;;;;;;
                                  -35681;6;0;false;false;63;95;191;;;
                                  -35687;1;0;false;false;;;;;;
                                  -35688;5;0;false;false;63;95;191;;;
                                  -35693;1;0;false;false;;;;;;
                                  -35694;7;0;false;false;63;95;191;;;
                                  -35701;1;0;false;false;;;;;;
                                  -35702;6;0;false;false;63;95;191;;;
                                  -35708;4;0;false;false;;;;;;
                                  -35712;2;0;false;false;63;95;191;;;
                                  -35714;3;0;false;false;;;;;;
                                  -35717;6;1;false;false;127;0;85;;;
                                  -35723;1;0;false;false;;;;;;
                                  -35724;3;1;false;false;127;0;85;;;
                                  -35727;1;0;false;false;;;;;;
                                  -35728;10;0;false;false;0;0;0;;;
                                  -35738;1;0;false;false;;;;;;
                                  -35739;1;0;false;false;0;0;0;;;
                                  -35740;4;0;false;false;;;;;;
                                  -35744;6;1;false;false;127;0;85;;;
                                  -35750;1;0;false;false;;;;;;
                                  -35751;12;0;false;false;0;0;0;;;
                                  -35763;3;0;false;false;;;;;;
                                  -35766;1;0;false;false;0;0;0;;;
                                  -35767;3;0;false;false;;;;;;
                                  -35770;3;0;false;false;63;95;191;;;
                                  -35773;4;0;false;false;;;;;;
                                  -35777;1;0;false;false;63;95;191;;;
                                  -35778;1;0;false;false;;;;;;
                                  -35779;7;0;false;false;63;95;191;;;
                                  -35786;1;0;false;false;;;;;;
                                  -35787;7;0;false;false;63;95;191;;;
                                  -35794;1;0;false;false;;;;;;
                                  -35795;3;0;false;false;63;95;191;;;
                                  -35798;1;0;false;false;;;;;;
                                  -35799;6;0;false;false;63;95;191;;;
                                  -35805;1;0;false;false;;;;;;
                                  -35806;2;0;false;false;63;95;191;;;
                                  -35808;1;0;false;false;;;;;;
                                  -35809;7;0;false;false;63;95;191;;;
                                  -35816;4;0;false;false;;;;;;
                                  -35820;1;0;false;false;63;95;191;;;
                                  -35821;1;0;false;false;;;;;;
                                  -35822;8;1;false;false;127;159;191;;;
                                  -35830;1;0;false;false;63;95;191;;;
                                  -35831;1;0;false;false;;;;;;
                                  -35832;7;0;false;false;63;95;191;;;
                                  -35839;1;0;false;false;;;;;;
                                  -35840;10;0;false;false;63;95;191;;;
                                  -35850;1;0;false;false;;;;;;
                                  -35851;7;0;false;false;63;95;191;;;
                                  -35858;1;0;false;false;;;;;;
                                  -35859;2;0;false;false;63;95;191;;;
                                  -35861;1;0;false;false;;;;;;
                                  -35862;3;0;false;false;63;95;191;;;
                                  -35865;1;0;false;false;;;;;;
                                  -35866;3;0;false;false;63;95;191;;;
                                  -35869;1;0;false;false;;;;;;
                                  -35870;6;0;false;false;63;95;191;;;
                                  -35876;1;0;false;false;;;;;;
                                  -35877;2;0;false;false;63;95;191;;;
                                  -35879;1;0;false;false;;;;;;
                                  -35880;6;0;false;false;63;95;191;;;
                                  -35886;4;0;false;false;;;;;;
                                  -35890;2;0;false;false;63;95;191;;;
                                  -35892;3;0;false;false;;;;;;
                                  -35895;6;1;false;false;127;0;85;;;
                                  -35901;1;0;false;false;;;;;;
                                  -35902;7;1;false;false;127;0;85;;;
                                  -35909;1;0;false;false;;;;;;
                                  -35910;10;0;false;false;0;0;0;;;
                                  -35920;1;0;false;false;;;;;;
                                  -35921;1;0;false;false;0;0;0;;;
                                  -35922;4;0;false;false;;;;;;
                                  -35926;6;1;false;false;127;0;85;;;
                                  -35932;1;0;false;false;;;;;;
                                  -35933;9;0;false;false;0;0;0;;;
                                  -35942;3;0;false;false;;;;;;
                                  -35945;1;0;false;false;0;0;0;;;
                                  -35946;3;0;false;false;;;;;;
                                  -35949;3;0;false;false;63;95;191;;;
                                  -35952;4;0;false;false;;;;;;
                                  -35956;1;0;false;false;63;95;191;;;
                                  -35957;1;0;false;false;;;;;;
                                  -35958;7;0;false;false;63;95;191;;;
                                  -35965;1;0;false;false;;;;;;
                                  -35966;3;0;false;false;63;95;191;;;
                                  -35969;1;0;false;false;;;;;;
                                  -35970;7;0;false;false;63;95;191;;;
                                  -35977;2;0;false;false;;;;;;
                                  -35979;6;0;false;false;127;127;159;;;
                                  -35985;7;0;false;false;63;95;191;;;
                                  -35992;7;0;false;false;127;127;159;;;
                                  -35999;1;0;false;false;;;;;;
                                  -36000;4;0;false;false;63;95;191;;;
                                  -36004;1;0;false;false;;;;;;
                                  -36005;2;0;false;false;63;95;191;;;
                                  -36007;1;0;false;false;;;;;;
                                  -36008;6;0;false;false;63;95;191;;;
                                  -36014;1;0;false;false;;;;;;
                                  -36015;6;0;false;false;63;95;191;;;
                                  -36021;1;0;false;false;;;;;;
                                  -36022;6;0;false;false;127;127;159;;;
                                  -36028;10;0;false;false;63;95;191;;;
                                  -36038;7;0;false;false;127;127;159;;;
                                  -36045;5;0;false;false;;;;;;
                                  -36050;1;0;false;false;63;95;191;;;
                                  -36051;1;0;false;false;;;;;;
                                  -36052;2;0;false;false;63;95;191;;;
                                  -36054;1;0;false;false;;;;;;
                                  -36055;10;0;false;false;63;95;191;;;
                                  -36065;1;0;false;false;;;;;;
                                  -36066;2;0;false;false;63;95;191;;;
                                  -36068;1;0;false;false;;;;;;
                                  -36069;6;0;false;false;63;95;191;;;
                                  -36075;1;0;false;false;;;;;;
                                  -36076;1;0;false;false;63;95;191;;;
                                  -36077;1;0;false;false;;;;;;
                                  -36078;5;0;false;false;63;95;191;;;
                                  -36083;1;0;false;false;;;;;;
                                  -36084;7;0;false;false;63;95;191;;;
                                  -36091;4;0;false;false;;;;;;
                                  -36095;1;0;false;false;63;95;191;;;
                                  -36096;4;0;false;false;;;;;;
                                  -36100;1;0;false;false;63;95;191;;;
                                  -36101;1;0;false;false;;;;;;
                                  -36102;8;1;false;false;127;159;191;;;
                                  -36110;3;0;false;false;63;95;191;;;
                                  -36113;1;0;false;false;;;;;;
                                  -36114;6;0;false;false;63;95;191;;;
                                  -36120;4;0;false;false;;;;;;
                                  -36124;2;0;false;false;63;95;191;;;
                                  -36126;3;0;false;false;;;;;;
                                  -36129;6;1;false;false;127;0;85;;;
                                  -36135;1;0;false;false;;;;;;
                                  -36136;6;0;false;false;0;0;0;;;
                                  -36142;1;0;false;false;;;;;;
                                  -36143;10;0;false;false;0;0;0;;;
                                  -36153;1;0;false;false;;;;;;
                                  -36154;1;0;false;false;0;0;0;;;
                                  -36155;4;0;false;false;;;;;;
                                  -36159;6;1;false;false;127;0;85;;;
                                  -36165;1;0;false;false;;;;;;
                                  -36166;18;0;false;false;0;0;0;;;
                                  -36184;3;0;false;false;;;;;;
                                  -36187;1;0;false;false;0;0;0;;;
                                  -36188;3;0;false;false;;;;;;
                                  -36191;3;0;false;false;63;95;191;;;
                                  -36194;4;0;false;false;;;;;;
                                  -36198;1;0;false;false;63;95;191;;;
                                  -36199;1;0;false;false;;;;;;
                                  -36200;7;0;false;false;63;95;191;;;
                                  -36207;1;0;false;false;;;;;;
                                  -36208;3;0;false;false;63;95;191;;;
                                  -36211;1;0;false;false;;;;;;
                                  -36212;5;0;false;false;63;95;191;;;
                                  -36217;1;0;false;false;;;;;;
                                  -36218;6;0;false;false;63;95;191;;;
                                  -36224;1;0;false;false;;;;;;
                                  -36225;2;0;false;false;63;95;191;;;
                                  -36227;1;0;false;false;;;;;;
                                  -36228;3;0;false;false;63;95;191;;;
                                  -36231;1;0;false;false;;;;;;
                                  -36232;5;0;false;false;63;95;191;;;
                                  -36237;4;0;false;false;;;;;;
                                  -36241;2;0;false;false;63;95;191;;;
                                  -36243;3;0;false;false;;;;;;
                                  -36246;4;1;false;false;127;0;85;;;
                                  -36250;1;0;false;false;;;;;;
                                  -36251;12;0;false;false;0;0;0;;;
                                  -36263;1;0;false;false;;;;;;
                                  -36264;7;0;false;false;0;0;0;;;
                                  -36271;1;0;false;false;;;;;;
                                  -36272;1;0;false;false;0;0;0;;;
                                  -36273;4;0;false;false;;;;;;
                                  -36277;22;0;false;false;0;0;0;;;
                                  -36299;3;0;false;false;;;;;;
                                  -36302;1;0;false;false;0;0;0;;;
                                  -36303;4;0;false;false;;;;;;
                                  -36307;3;0;false;false;63;95;191;;;
                                  -36310;4;0;false;false;;;;;;
                                  -36314;1;0;false;false;63;95;191;;;
                                  -36315;1;0;false;false;;;;;;
                                  -36316;7;0;false;false;63;95;191;;;
                                  -36323;1;0;false;false;;;;;;
                                  -36324;3;0;false;false;63;95;191;;;
                                  -36327;1;0;false;false;;;;;;
                                  -36328;5;0;false;false;63;95;191;;;
                                  -36333;1;0;false;false;;;;;;
                                  -36334;6;0;false;false;63;95;191;;;
                                  -36340;1;0;false;false;;;;;;
                                  -36341;2;0;false;false;63;95;191;;;
                                  -36343;1;0;false;false;;;;;;
                                  -36344;3;0;false;false;63;95;191;;;
                                  -36347;1;0;false;false;;;;;;
                                  -36348;4;0;false;false;63;95;191;;;
                                  -36352;1;0;false;false;;;;;;
                                  -36353;2;0;false;false;63;95;191;;;
                                  -36355;1;0;false;false;;;;;;
                                  -36356;3;0;false;false;63;95;191;;;
                                  -36359;1;0;false;false;;;;;;
                                  -36360;9;0;false;false;63;95;191;;;
                                  -36369;1;0;false;false;;;;;;
                                  -36370;7;0;false;false;63;95;191;;;
                                  -36377;4;0;false;false;;;;;;
                                  -36381;1;0;false;false;63;95;191;;;
                                  -36382;1;0;false;false;;;;;;
                                  -36383;2;0;false;false;63;95;191;;;
                                  -36385;1;0;false;false;;;;;;
                                  -36386;7;0;false;false;63;95;191;;;
                                  -36393;1;0;false;false;;;;;;
                                  -36394;2;0;false;false;63;95;191;;;
                                  -36396;1;0;false;false;;;;;;
                                  -36397;8;0;false;false;63;95;191;;;
                                  -36405;1;0;false;false;;;;;;
                                  -36406;2;0;false;false;63;95;191;;;
                                  -36408;1;0;false;false;;;;;;
                                  -36409;8;0;false;false;63;95;191;;;
                                  -36417;1;0;false;false;;;;;;
                                  -36418;14;0;false;false;63;95;191;;;
                                  -36432;4;0;false;false;;;;;;
                                  -36436;1;0;false;false;63;95;191;;;
                                  -36437;1;0;false;false;;;;;;
                                  -36438;3;0;false;false;127;127;159;;;
                                  -36441;4;0;false;false;;;;;;
                                  -36445;1;0;false;false;63;95;191;;;
                                  -36446;4;0;false;false;;;;;;
                                  -36450;1;0;false;false;63;95;191;;;
                                  -36451;1;0;false;false;;;;;;
                                  -36452;7;1;false;false;127;159;191;;;
                                  -36459;6;0;false;false;63;95;191;;;
                                  -36465;1;0;false;false;;;;;;
                                  -36466;4;0;false;false;63;95;191;;;
                                  -36470;1;0;false;false;;;;;;
                                  -36471;2;0;false;false;63;95;191;;;
                                  -36473;1;0;false;false;;;;;;
                                  -36474;6;0;false;false;63;95;191;;;
                                  -36480;4;0;false;false;;;;;;
                                  -36484;1;0;false;false;63;95;191;;;
                                  -36485;1;0;false;false;;;;;;
                                  -36486;7;1;false;false;127;159;191;;;
                                  -36493;6;0;false;false;63;95;191;;;
                                  -36499;1;0;false;false;;;;;;
                                  -36500;6;0;false;false;63;95;191;;;
                                  -36506;1;0;false;false;;;;;;
                                  -36507;2;0;false;false;63;95;191;;;
                                  -36509;1;0;false;false;;;;;;
                                  -36510;3;0;false;false;63;95;191;;;
                                  -36513;1;0;false;false;;;;;;
                                  -36514;8;0;false;false;63;95;191;;;
                                  -36522;1;0;false;false;;;;;;
                                  -36523;4;0;false;false;63;95;191;;;
                                  -36527;1;0;false;false;;;;;;
                                  -36528;2;0;false;false;63;95;191;;;
                                  -36530;1;0;false;false;;;;;;
                                  -36531;6;0;false;false;63;95;191;;;
                                  -36537;1;0;false;false;;;;;;
                                  -36538;8;0;false;false;63;95;191;;;
                                  -36546;1;0;false;false;;;;;;
                                  -36547;3;0;false;false;63;95;191;;;
                                  -36550;4;0;false;false;;;;;;
                                  -36554;2;0;false;false;63;95;191;;;
                                  -36556;3;0;false;false;;;;;;
                                  -36559;4;1;false;false;127;0;85;;;
                                  -36563;1;0;false;false;;;;;;
                                  -36564;12;0;false;false;0;0;0;;;
                                  -36576;1;0;false;false;;;;;;
                                  -36577;7;0;false;false;0;0;0;;;
                                  -36584;1;0;false;false;;;;;;
                                  -36585;3;1;false;false;127;0;85;;;
                                  -36588;1;0;false;false;;;;;;
                                  -36589;7;0;false;false;0;0;0;;;
                                  -36596;1;0;false;false;;;;;;
                                  -36597;1;0;false;false;0;0;0;;;
                                  -36598;4;0;false;false;;;;;;
                                  -36602;2;1;false;false;127;0;85;;;
                                  -36604;1;0;false;false;;;;;;
                                  -36605;7;0;false;false;0;0;0;;;
                                  -36612;1;0;false;false;;;;;;
                                  -36613;1;0;false;false;0;0;0;;;
                                  -36614;1;0;false;false;;;;;;
                                  -36615;1;0;false;false;0;0;0;;;
                                  -36616;1;0;false;false;;;;;;
                                  -36617;2;0;false;false;0;0;0;;;
                                  -36619;1;0;false;false;;;;;;
                                  -36620;6;0;false;false;0;0;0;;;
                                  -36626;1;0;false;false;;;;;;
                                  -36627;1;0;false;false;0;0;0;;;
                                  -36628;1;0;false;false;;;;;;
                                  -36629;16;0;false;false;0;0;0;;;
                                  -36645;1;0;false;false;;;;;;
                                  -36646;1;0;false;false;0;0;0;;;
                                  -36647;5;0;false;false;;;;;;
                                  -36652;6;1;false;false;127;0;85;;;
                                  -36658;1;0;false;false;0;0;0;;;
                                  -36659;4;0;false;false;;;;;;
                                  -36663;1;0;false;false;0;0;0;;;
                                  -36664;4;0;false;false;;;;;;
                                  -36668;21;0;false;false;0;0;0;;;
                                  -36689;1;0;false;false;;;;;;
                                  -36690;8;0;false;false;0;0;0;;;
                                  -36698;3;0;false;false;;;;;;
                                  -36701;1;0;false;false;0;0;0;;;
                                  -36702;4;0;false;false;;;;;;
                                  -36706;3;0;false;false;63;95;191;;;
                                  -36709;4;0;false;false;;;;;;
                                  -36713;1;0;false;false;63;95;191;;;
                                  -36714;1;0;false;false;;;;;;
                                  -36715;7;0;false;false;63;95;191;;;
                                  -36722;1;0;false;false;;;;;;
                                  -36723;3;0;false;false;63;95;191;;;
                                  -36726;1;0;false;false;;;;;;
                                  -36727;5;0;false;false;63;95;191;;;
                                  -36732;1;0;false;false;;;;;;
                                  -36733;3;0;false;false;63;95;191;;;
                                  -36736;1;0;false;false;;;;;;
                                  -36737;2;0;false;false;63;95;191;;;
                                  -36739;1;0;false;false;;;;;;
                                  -36740;3;0;false;false;63;95;191;;;
                                  -36743;1;0;false;false;;;;;;
                                  -36744;5;0;false;false;63;95;191;;;
                                  -36749;4;0;false;false;;;;;;
                                  -36753;2;0;false;false;63;95;191;;;
                                  -36755;3;0;false;false;;;;;;
                                  -36758;4;1;false;false;127;0;85;;;
                                  -36762;1;0;false;false;;;;;;
                                  -36763;6;0;false;false;0;0;0;;;
                                  -36769;3;1;false;false;127;0;85;;;
                                  -36772;1;0;false;false;;;;;;
                                  -36773;2;0;false;false;0;0;0;;;
                                  -36775;1;0;false;false;;;;;;
                                  -36776;1;0;false;false;0;0;0;;;
                                  -36777;4;0;false;false;;;;;;
                                  -36781;17;0;false;false;0;0;0;;;
                                  -36798;3;0;false;false;;;;;;
                                  -36801;1;0;false;false;0;0;0;;;
                                  -36802;3;0;false;false;;;;;;
                                  -36805;3;0;false;false;63;95;191;;;
                                  -36808;4;0;false;false;;;;;;
                                  -36812;1;0;false;false;63;95;191;;;
                                  -36813;1;0;false;false;;;;;;
                                  -36814;7;0;false;false;63;95;191;;;
                                  -36821;1;0;false;false;;;;;;
                                  -36822;3;0;false;false;63;95;191;;;
                                  -36825;1;0;false;false;;;;;;
                                  -36826;5;0;false;false;63;95;191;;;
                                  -36831;1;0;false;false;;;;;;
                                  -36832;9;0;false;false;63;95;191;;;
                                  -36841;1;0;false;false;;;;;;
                                  -36842;2;0;false;false;63;95;191;;;
                                  -36844;1;0;false;false;;;;;;
                                  -36845;3;0;false;false;63;95;191;;;
                                  -36848;1;0;false;false;;;;;;
                                  -36849;5;0;false;false;63;95;191;;;
                                  -36854;4;0;false;false;;;;;;
                                  -36858;2;0;false;false;63;95;191;;;
                                  -36860;3;0;false;false;;;;;;
                                  -36863;4;1;false;false;127;0;85;;;
                                  -36867;1;0;false;false;;;;;;
                                  -36868;6;0;false;false;0;0;0;;;
                                  -36874;4;1;false;false;127;0;85;;;
                                  -36878;1;0;false;false;;;;;;
                                  -36879;2;0;false;false;0;0;0;;;
                                  -36881;1;0;false;false;;;;;;
                                  -36882;1;0;false;false;0;0;0;;;
                                  -36883;4;0;false;false;;;;;;
                                  -36887;17;0;false;false;0;0;0;;;
                                  -36904;3;0;false;false;;;;;;
                                  -36907;1;0;false;false;0;0;0;;;
                                  -36908;6;0;false;false;;;;;;
                                  -36914;3;0;false;false;63;95;191;;;
                                  -36917;4;0;false;false;;;;;;
                                  -36921;1;0;false;false;63;95;191;;;
                                  -36922;1;0;false;false;;;;;;
                                  -36923;7;0;false;false;63;95;191;;;
                                  -36930;1;0;false;false;;;;;;
                                  -36931;3;0;false;false;63;95;191;;;
                                  -36934;1;0;false;false;;;;;;
                                  -36935;9;0;false;false;63;95;191;;;
                                  -36944;1;0;false;false;;;;;;
                                  -36945;4;0;false;false;63;95;191;;;
                                  -36949;1;0;false;false;;;;;;
                                  -36950;4;0;false;false;63;95;191;;;
                                  -36954;1;0;false;false;;;;;;
                                  -36955;2;0;false;false;63;95;191;;;
                                  -36957;1;0;false;false;;;;;;
                                  -36958;3;0;false;false;63;95;191;;;
                                  -36961;1;0;false;false;;;;;;
                                  -36962;5;0;false;false;63;95;191;;;
                                  -36967;4;0;false;false;;;;;;
                                  -36971;1;0;false;false;63;95;191;;;
                                  -36972;1;0;false;false;;;;;;
                                  -36973;3;0;false;false;127;127;159;;;
                                  -36976;4;0;false;false;;;;;;
                                  -36980;1;0;false;false;63;95;191;;;
                                  -36981;4;0;false;false;;;;;;
                                  -36985;1;0;false;false;63;95;191;;;
                                  -36986;1;0;false;false;;;;;;
                                  -36987;7;1;false;false;127;159;191;;;
                                  -36994;4;0;false;false;63;95;191;;;
                                  -36998;1;0;false;false;;;;;;
                                  -36999;4;0;false;false;63;95;191;;;
                                  -37003;1;0;false;false;;;;;;
                                  -37004;4;0;false;false;63;95;191;;;
                                  -37008;1;0;false;false;;;;;;
                                  -37009;2;0;false;false;63;95;191;;;
                                  -37011;1;0;false;false;;;;;;
                                  -37012;6;0;false;false;63;95;191;;;
                                  -37018;1;0;false;false;;;;;;
                                  -37019;4;0;false;false;63;95;191;;;
                                  -37023;1;0;false;false;;;;;;
                                  -37024;3;0;false;false;63;95;191;;;
                                  -37027;1;0;false;false;;;;;;
                                  -37028;7;0;false;false;63;95;191;;;
                                  -37035;1;0;false;false;;;;;;
                                  -37036;4;0;false;false;63;95;191;;;
                                  -37040;1;0;false;false;;;;;;
                                  -37041;6;0;false;false;63;95;191;;;
                                  -37047;4;0;false;false;;;;;;
                                  -37051;1;0;false;false;63;95;191;;;
                                  -37052;2;0;false;false;;;;;;
                                  -37054;4;0;false;false;63;95;191;;;
                                  -37058;1;0;false;false;;;;;;
                                  -37059;6;0;false;false;63;95;191;;;
                                  -37065;1;0;false;false;;;;;;
                                  -37066;6;0;false;false;63;95;191;;;
                                  -37072;1;0;false;false;;;;;;
                                  -37073;2;0;false;false;63;95;191;;;
                                  -37075;1;0;false;false;;;;;;
                                  -37076;7;0;false;false;63;95;191;;;
                                  -37083;1;0;false;false;;;;;;
                                  -37084;5;0;false;false;63;95;191;;;
                                  -37089;1;0;false;false;;;;;;
                                  -37090;20;0;false;false;63;95;191;;;
                                  -37110;4;0;false;false;;;;;;
                                  -37114;1;0;false;false;63;95;191;;;
                                  -37115;1;0;false;false;;;;;;
                                  -37116;7;1;false;false;127;159;191;;;
                                  -37123;10;0;false;false;63;95;191;;;
                                  -37133;1;0;false;false;;;;;;
                                  -37134;6;0;false;false;63;95;191;;;
                                  -37140;1;0;false;false;;;;;;
                                  -37141;2;0;false;false;63;95;191;;;
                                  -37143;1;0;false;false;;;;;;
                                  -37144;3;0;false;false;63;95;191;;;
                                  -37147;1;0;false;false;;;;;;
                                  -37148;5;0;false;false;63;95;191;;;
                                  -37153;1;0;false;false;;;;;;
                                  -37154;1;0;false;false;63;95;191;;;
                                  -37155;1;0;false;false;;;;;;
                                  -37156;5;0;false;false;63;95;191;;;
                                  -37161;1;0;false;false;;;;;;
                                  -37162;4;0;false;false;63;95;191;;;
                                  -37166;1;0;false;false;;;;;;
                                  -37167;3;0;false;false;63;95;191;;;
                                  -37170;1;0;false;false;;;;;;
                                  -37171;5;0;false;false;63;95;191;;;
                                  -37176;1;0;false;false;;;;;;
                                  -37177;2;0;false;false;63;95;191;;;
                                  -37179;1;0;false;false;;;;;;
                                  -37180;3;0;false;false;63;95;191;;;
                                  -37183;5;0;false;false;;;;;;
                                  -37188;1;0;false;false;63;95;191;;;
                                  -37189;2;0;false;false;;;;;;
                                  -37191;6;0;false;false;63;95;191;;;
                                  -37197;1;0;false;false;;;;;;
                                  -37198;9;0;false;false;63;95;191;;;
                                  -37207;1;0;false;false;;;;;;
                                  -37208;3;0;false;false;63;95;191;;;
                                  -37211;1;0;false;false;;;;;;
                                  -37212;4;0;false;false;63;95;191;;;
                                  -37216;1;0;false;false;;;;;;
                                  -37217;9;0;false;false;63;95;191;;;
                                  -37226;1;0;false;false;;;;;;
                                  -37227;6;0;false;false;63;95;191;;;
                                  -37233;1;0;false;false;;;;;;
                                  -37234;3;0;false;false;63;95;191;;;
                                  -37237;1;0;false;false;;;;;;
                                  -37238;5;0;false;false;63;95;191;;;
                                  -37243;1;0;false;false;;;;;;
                                  -37244;6;0;false;false;63;95;191;;;
                                  -37250;1;0;false;false;;;;;;
                                  -37251;2;0;false;false;63;95;191;;;
                                  -37253;1;0;false;false;;;;;;
                                  -37254;5;0;false;false;63;95;191;;;
                                  -37259;1;0;false;false;;;;;;
                                  -37260;3;0;false;false;63;95;191;;;
                                  -37263;5;0;false;false;;;;;;
                                  -37268;1;0;false;false;63;95;191;;;
                                  -37269;1;0;false;false;;;;;;
                                  -37270;3;0;false;false;63;95;191;;;
                                  -37273;1;0;false;false;;;;;;
                                  -37274;6;0;false;false;63;95;191;;;
                                  -37280;1;0;false;false;;;;;;
                                  -37281;9;0;false;false;63;95;191;;;
                                  -37290;1;0;false;false;;;;;;
                                  -37291;6;0;false;false;63;95;191;;;
                                  -37297;1;0;false;false;;;;;;
                                  -37298;6;0;false;false;63;95;191;;;
                                  -37304;1;0;false;false;;;;;;
                                  -37305;8;0;false;false;63;95;191;;;
                                  -37313;1;0;false;false;;;;;;
                                  -37314;2;0;false;false;63;95;191;;;
                                  -37316;1;0;false;false;;;;;;
                                  -37317;8;0;false;false;63;95;191;;;
                                  -37325;4;0;false;false;;;;;;
                                  -37329;1;0;false;false;63;95;191;;;
                                  -37330;1;0;false;false;;;;;;
                                  -37331;11;1;false;false;127;159;191;;;
                                  -37342;12;0;false;false;63;95;191;;;
                                  -37354;1;0;false;false;;;;;;
                                  -37355;4;0;false;false;127;127;159;;;
                                  -37359;4;0;false;false;;;;;;
                                  -37363;1;0;false;false;63;95;191;;;
                                  -37364;3;0;false;false;;;;;;
                                  -37367;4;0;false;false;127;127;159;;;
                                  -37371;8;0;false;false;63;95;191;;;
                                  -37379;1;0;false;false;;;;;;
                                  -37380;4;0;false;false;63;95;191;;;
                                  -37384;1;0;false;false;;;;;;
                                  -37385;3;0;false;false;63;95;191;;;
                                  -37388;1;0;false;false;;;;;;
                                  -37389;6;0;false;false;63;95;191;;;
                                  -37395;1;0;false;false;;;;;;
                                  -37396;2;0;false;false;63;95;191;;;
                                  -37398;1;0;false;false;;;;;;
                                  -37399;7;0;false;false;63;95;191;;;
                                  -37406;5;0;false;false;127;127;159;;;
                                  -37411;4;0;false;false;;;;;;
                                  -37415;1;0;false;false;63;95;191;;;
                                  -37416;1;0;false;false;;;;;;
                                  -37417;5;0;false;false;127;127;159;;;
                                  -37422;4;0;false;false;;;;;;
                                  -37426;2;0;false;false;63;95;191;;;
                                  -37428;3;0;false;false;;;;;;
                                  -37431;6;1;false;false;127;0;85;;;
                                  -37437;1;0;false;false;;;;;;
                                  -37438;4;1;false;false;127;0;85;;;
                                  -37442;1;0;false;false;;;;;;
                                  -37443;16;0;false;false;0;0;0;;;
                                  -37459;1;0;false;false;;;;;;
                                  -37460;5;0;false;false;0;0;0;;;
                                  -37465;1;0;false;false;;;;;;
                                  -37466;3;1;false;false;127;0;85;;;
                                  -37469;1;0;false;false;;;;;;
                                  -37470;11;0;false;false;0;0;0;;;
                                  -37481;1;0;false;false;;;;;;
                                  -37482;1;0;false;false;0;0;0;;;
                                  -37483;4;0;false;false;;;;;;
                                  -37487;3;1;false;false;127;0;85;;;
                                  -37490;1;0;false;false;;;;;;
                                  -37491;10;0;false;false;0;0;0;;;
                                  -37501;1;0;false;false;;;;;;
                                  -37502;1;0;false;false;0;0;0;;;
                                  -37503;1;0;false;false;;;;;;
                                  -37504;14;0;false;false;0;0;0;;;
                                  -37518;4;0;false;false;;;;;;
                                  -37522;3;1;false;false;127;0;85;;;
                                  -37525;1;0;false;false;;;;;;
                                  -37526;10;0;false;false;0;0;0;;;
                                  -37536;4;0;false;false;;;;;;
                                  -37540;3;1;false;false;127;0;85;;;
                                  -37543;1;0;false;false;;;;;;
                                  -37544;8;0;false;false;0;0;0;;;
                                  -37552;4;0;false;false;;;;;;
                                  -37556;3;1;false;false;127;0;85;;;
                                  -37559;1;0;false;false;;;;;;
                                  -37560;11;0;false;false;0;0;0;;;
                                  -37571;1;0;false;false;;;;;;
                                  -37572;1;0;false;false;0;0;0;;;
                                  -37573;1;0;false;false;;;;;;
                                  -37574;11;0;false;false;0;0;0;;;
                                  -37585;1;0;false;false;;;;;;
                                  -37586;1;0;false;false;0;0;0;;;
                                  -37587;1;0;false;false;;;;;;
                                  -37588;11;0;false;false;0;0;0;;;
                                  -37599;8;0;false;false;;;;;;
                                  -37607;2;1;false;false;127;0;85;;;
                                  -37609;1;0;false;false;;;;;;
                                  -37610;10;0;false;false;0;0;0;;;
                                  -37620;1;0;false;false;;;;;;
                                  -37621;1;0;false;false;0;0;0;;;
                                  -37622;5;0;false;false;;;;;;
                                  -37627;24;0;false;false;0;0;0;;;
                                  -37651;4;0;false;false;;;;;;
                                  -37655;1;0;false;false;0;0;0;;;
                                  -37656;6;0;false;false;;;;;;
                                  -37662;2;1;false;false;127;0;85;;;
                                  -37664;1;0;false;false;;;;;;
                                  -37665;12;0;false;false;0;0;0;;;
                                  -37677;1;0;false;false;;;;;;
                                  -37678;2;0;false;false;0;0;0;;;
                                  -37680;1;0;false;false;;;;;;
                                  -37681;11;0;false;false;0;0;0;;;
                                  -37692;1;0;false;false;;;;;;
                                  -37693;1;0;false;false;0;0;0;;;
                                  -37694;5;0;false;false;;;;;;
                                  -37699;6;1;false;false;127;0;85;;;
                                  -37705;1;0;false;false;0;0;0;;;
                                  -37706;7;0;false;false;;;;;;
                                  -37713;38;0;false;false;63;127;95;;;
                                  -37751;2;0;false;false;;;;;;
                                  -37753;1;0;false;false;0;0;0;;;
                                  -37754;4;0;false;false;;;;;;
                                  -37758;4;1;false;false;127;0;85;;;
                                  -37762;4;0;false;false;;;;;;
                                  -37766;2;1;false;false;127;0;85;;;
                                  -37768;1;0;false;false;;;;;;
                                  -37769;12;0;false;false;0;0;0;;;
                                  -37781;1;0;false;false;;;;;;
                                  -37782;1;0;false;false;0;0;0;;;
                                  -37783;1;0;false;false;;;;;;
                                  -37784;2;0;false;false;0;0;0;;;
                                  -37786;1;0;false;false;;;;;;
                                  -37787;1;0;false;false;0;0;0;;;
                                  -37788;5;0;false;false;;;;;;
                                  -37793;9;0;false;false;0;0;0;;;
                                  -37802;1;0;false;false;;;;;;
                                  -37803;1;0;false;false;0;0;0;;;
                                  -37804;1;0;false;false;;;;;;
                                  -37805;12;0;false;false;0;0;0;;;
                                  -37817;2;0;false;false;;;;;;
                                  -37819;35;0;false;false;63;127;95;;;
                                  -37854;2;0;false;false;;;;;;
                                  -37856;1;0;false;false;0;0;0;;;
                                  -37857;4;0;false;false;;;;;;
                                  -37861;4;1;false;false;127;0;85;;;
                                  -37865;1;0;false;false;;;;;;
                                  -37866;1;0;false;false;0;0;0;;;
                                  -37867;5;0;false;false;;;;;;
                                  -37872;9;0;false;false;0;0;0;;;
                                  -37881;1;0;false;false;;;;;;
                                  -37882;1;0;false;false;0;0;0;;;
                                  -37883;1;0;false;false;;;;;;
                                  -37884;2;0;false;false;0;0;0;;;
                                  -37886;4;0;false;false;;;;;;
                                  -37890;1;0;false;false;0;0;0;;;
                                  -37891;4;0;false;false;;;;;;
                                  -37895;7;0;false;false;0;0;0;;;
                                  -37902;1;0;false;false;;;;;;
                                  -37903;1;0;false;false;0;0;0;;;
                                  -37904;1;0;false;false;;;;;;
                                  -37905;20;0;false;false;0;0;0;;;
                                  -37925;1;0;false;false;;;;;;
                                  -37926;9;0;false;false;0;0;0;;;
                                  -37935;1;0;false;false;;;;;;
                                  -37936;1;0;false;false;0;0;0;;;
                                  -37937;1;0;false;false;;;;;;
                                  -37938;12;0;false;false;0;0;0;;;
                                  -37950;4;0;false;false;;;;;;
                                  -37954;2;1;false;false;127;0;85;;;
                                  -37956;1;0;false;false;;;;;;
                                  -37957;10;0;false;false;0;0;0;;;
                                  -37967;1;0;false;false;;;;;;
                                  -37968;1;0;false;false;0;0;0;;;
                                  -37969;1;0;false;false;;;;;;
                                  -37970;8;0;false;false;0;0;0;;;
                                  -37978;1;0;false;false;;;;;;
                                  -37979;1;0;false;false;0;0;0;;;
                                  -37980;5;0;false;false;;;;;;
                                  -37985;31;0;false;false;0;0;0;;;
                                  -38016;1;0;false;false;;;;;;
                                  -38017;10;0;false;false;0;0;0;;;
                                  -38027;4;0;false;false;;;;;;
                                  -38031;1;0;false;false;0;0;0;;;
                                  -38032;5;0;false;false;;;;;;
                                  -38037;1;0;false;false;0;0;0;;;
                                  -38038;3;0;false;false;;;;;;
                                  -38041;3;0;false;false;63;95;191;;;
                                  -38044;4;0;false;false;;;;;;
                                  -38048;1;0;false;false;63;95;191;;;
                                  -38049;1;0;false;false;;;;;;
                                  -38050;7;0;false;false;63;95;191;;;
                                  -38057;1;0;false;false;;;;;;
                                  -38058;3;0;false;false;63;95;191;;;
                                  -38061;1;0;false;false;;;;;;
                                  -38062;9;0;false;false;63;95;191;;;
                                  -38071;1;0;false;false;;;;;;
                                  -38072;4;0;false;false;63;95;191;;;
                                  -38076;1;0;false;false;;;;;;
                                  -38077;10;0;false;false;63;95;191;;;
                                  -38087;1;0;false;false;;;;;;
                                  -38088;2;0;false;false;63;95;191;;;
                                  -38090;1;0;false;false;;;;;;
                                  -38091;3;0;false;false;63;95;191;;;
                                  -38094;1;0;false;false;;;;;;
                                  -38095;5;0;false;false;63;95;191;;;
                                  -38100;4;0;false;false;;;;;;
                                  -38104;1;0;false;false;63;95;191;;;
                                  -38105;1;0;false;false;;;;;;
                                  -38106;3;0;false;false;127;127;159;;;
                                  -38109;4;0;false;false;;;;;;
                                  -38113;1;0;false;false;63;95;191;;;
                                  -38114;4;0;false;false;;;;;;
                                  -38118;1;0;false;false;63;95;191;;;
                                  -38119;1;0;false;false;;;;;;
                                  -38120;7;1;false;false;127;159;191;;;
                                  -38127;13;0;false;false;63;95;191;;;
                                  -38140;1;0;false;false;;;;;;
                                  -38141;4;0;false;false;63;95;191;;;
                                  -38145;1;0;false;false;;;;;;
                                  -38146;9;0;false;false;63;95;191;;;
                                  -38155;1;0;false;false;;;;;;
                                  -38156;2;0;false;false;63;95;191;;;
                                  -38158;1;0;false;false;;;;;;
                                  -38159;5;0;false;false;63;95;191;;;
                                  -38164;4;0;false;false;;;;;;
                                  -38168;1;0;false;false;63;95;191;;;
                                  -38169;1;0;false;false;;;;;;
                                  -38170;11;1;false;false;127;159;191;;;
                                  -38181;12;0;false;false;63;95;191;;;
                                  -38193;1;0;false;false;;;;;;
                                  -38194;4;0;false;false;127;127;159;;;
                                  -38198;4;0;false;false;;;;;;
                                  -38202;1;0;false;false;63;95;191;;;
                                  -38203;3;0;false;false;;;;;;
                                  -38206;4;0;false;false;127;127;159;;;
                                  -38210;8;0;false;false;63;95;191;;;
                                  -38218;1;0;false;false;;;;;;
                                  -38219;4;0;false;false;63;95;191;;;
                                  -38223;1;0;false;false;;;;;;
                                  -38224;3;0;false;false;63;95;191;;;
                                  -38227;1;0;false;false;;;;;;
                                  -38228;6;0;false;false;63;95;191;;;
                                  -38234;1;0;false;false;;;;;;
                                  -38235;2;0;false;false;63;95;191;;;
                                  -38237;1;0;false;false;;;;;;
                                  -38238;7;0;false;false;63;95;191;;;
                                  -38245;5;0;false;false;127;127;159;;;
                                  -38250;4;0;false;false;;;;;;
                                  -38254;1;0;false;false;63;95;191;;;
                                  -38255;1;0;false;false;;;;;;
                                  -38256;5;0;false;false;127;127;159;;;
                                  -38261;4;0;false;false;;;;;;
                                  -38265;2;0;false;false;63;95;191;;;
                                  -38267;3;0;false;false;;;;;;
                                  -38270;6;1;false;false;127;0;85;;;
                                  -38276;1;0;false;false;;;;;;
                                  -38277;4;1;false;false;127;0;85;;;
                                  -38281;1;0;false;false;;;;;;
                                  -38282;25;0;false;false;0;0;0;;;
                                  -38307;1;0;false;false;;;;;;
                                  -38308;14;0;false;false;0;0;0;;;
                                  -38322;1;0;false;false;;;;;;
                                  -38323;1;0;false;false;0;0;0;;;
                                  -38324;4;0;false;false;;;;;;
                                  -38328;2;1;false;false;127;0;85;;;
                                  -38330;1;0;false;false;;;;;;
                                  -38331;10;0;false;false;0;0;0;;;
                                  -38341;1;0;false;false;;;;;;
                                  -38342;1;0;false;false;0;0;0;;;
                                  -38343;5;0;false;false;;;;;;
                                  -38348;24;0;false;false;0;0;0;;;
                                  -38372;4;0;false;false;;;;;;
                                  -38376;1;0;false;false;0;0;0;;;
                                  -38377;4;0;false;false;;;;;;
                                  -38381;21;0;false;false;0;0;0;;;
                                  -38402;3;0;false;false;;;;;;
                                  -38405;1;0;false;false;0;0;0;;;
                                  -38406;3;0;false;false;;;;;;
                                  -38409;1;0;false;false;0;0;0;;;
                                  -38410;3;0;false;false;;;;;;
                                  -38413;3;0;false;false;63;95;191;;;
                                  -38416;4;0;false;false;;;;;;
                                  -38420;1;0;false;false;63;95;191;;;
                                  -38421;1;0;false;false;;;;;;
                                  -38422;9;0;false;false;63;95;191;;;
                                  -38431;1;0;false;false;;;;;;
                                  -38432;8;0;false;false;63;95;191;;;
                                  -38440;1;0;false;false;;;;;;
                                  -38441;2;0;false;false;63;95;191;;;
                                  -38443;1;0;false;false;;;;;;
                                  -38444;9;0;false;false;63;95;191;;;
                                  -38453;1;0;false;false;;;;;;
                                  -38454;2;0;false;false;63;95;191;;;
                                  -38456;1;0;false;false;;;;;;
                                  -38457;9;0;false;false;63;95;191;;;
                                  -38466;1;0;false;false;;;;;;
                                  -38467;3;0;false;false;63;95;191;;;
                                  -38470;1;0;false;false;;;;;;
                                  -38471;10;0;false;false;63;95;191;;;
                                  -38481;5;0;false;false;;;;;;
                                  -38486;1;0;false;false;63;95;191;;;
                                  -38487;1;0;false;false;;;;;;
                                  -38488;4;0;false;false;63;95;191;;;
                                  -38492;1;0;false;false;;;;;;
                                  -38493;5;0;false;false;63;95;191;;;
                                  -38498;1;0;false;false;;;;;;
                                  -38499;5;0;false;false;63;95;191;;;
                                  -38504;4;0;false;false;;;;;;
                                  -38508;1;0;false;false;63;95;191;;;
                                  -38509;1;0;false;false;;;;;;
                                  -38510;12;0;false;false;63;95;191;;;
                                  -38522;1;0;false;false;;;;;;
                                  -38523;4;0;false;false;63;95;191;;;
                                  -38527;1;0;false;false;;;;;;
                                  -38528;2;0;false;false;63;95;191;;;
                                  -38530;1;0;false;false;;;;;;
                                  -38531;6;0;false;false;63;95;191;;;
                                  -38537;1;0;false;false;;;;;;
                                  -38538;1;0;false;false;63;95;191;;;
                                  -38539;1;0;false;false;;;;;;
                                  -38540;4;0;false;false;63;95;191;;;
                                  -38544;1;0;false;false;;;;;;
                                  -38545;5;0;false;false;63;95;191;;;
                                  -38550;1;0;false;false;;;;;;
                                  -38551;2;0;false;false;63;95;191;;;
                                  -38553;1;0;false;false;;;;;;
                                  -38554;6;0;false;false;127;127;159;;;
                                  -38560;8;0;false;false;63;95;191;;;
                                  -38568;7;0;false;false;127;127;159;;;
                                  -38575;1;0;false;false;63;95;191;;;
                                  -38576;4;0;false;false;;;;;;
                                  -38580;2;0;false;false;63;95;191;;;
                                  -38582;3;0;false;false;;;;;;
                                  -38585;9;1;false;false;127;0;85;;;
                                  -38594;1;0;false;false;;;;;;
                                  -38595;9;0;false;false;0;0;0;;;
                                  -38604;1;0;false;false;;;;;;
                                  -38605;1;0;false;false;0;0;0;;;
                                  -38606;3;0;false;false;;;;;;
                                  -38609;3;0;false;false;63;95;191;;;
                                  -38612;4;0;false;false;;;;;;
                                  -38616;1;0;false;false;63;95;191;;;
                                  -38617;1;0;false;false;;;;;;
                                  -38618;10;0;false;false;63;95;191;;;
                                  -38628;1;0;false;false;;;;;;
                                  -38629;3;0;false;false;63;95;191;;;
                                  -38632;1;0;false;false;;;;;;
                                  -38633;5;0;false;false;63;95;191;;;
                                  -38638;1;0;false;false;;;;;;
                                  -38639;2;0;false;false;63;95;191;;;
                                  -38641;1;0;false;false;;;;;;
                                  -38642;3;0;false;false;63;95;191;;;
                                  -38645;1;0;false;false;;;;;;
                                  -38646;9;0;false;false;63;95;191;;;
                                  -38655;1;0;false;false;;;;;;
                                  -38656;6;0;false;false;63;95;191;;;
                                  -38662;4;0;false;false;;;;;;
                                  -38666;1;0;false;false;63;95;191;;;
                                  -38667;1;0;false;false;;;;;;
                                  -38668;3;0;false;false;127;127;159;;;
                                  -38671;4;0;false;false;;;;;;
                                  -38675;1;0;false;false;63;95;191;;;
                                  -38676;5;0;false;false;;;;;;
                                  -38681;1;0;false;false;63;95;191;;;
                                  -38682;1;0;false;false;;;;;;
                                  -38683;7;1;false;false;127;159;191;;;
                                  -38690;9;0;false;false;63;95;191;;;
                                  -38699;1;0;false;false;;;;;;
                                  -38700;5;0;false;false;63;95;191;;;
                                  -38705;1;0;false;false;;;;;;
                                  -38706;4;0;false;false;63;95;191;;;
                                  -38710;1;0;false;false;;;;;;
                                  -38711;2;0;false;false;63;95;191;;;
                                  -38713;1;0;false;false;;;;;;
                                  -38714;9;0;false;false;63;95;191;;;
                                  -38723;4;0;false;false;;;;;;
                                  -38727;1;0;false;false;63;95;191;;;
                                  -38728;1;0;false;false;;;;;;
                                  -38729;7;1;false;false;127;159;191;;;
                                  -38736;9;0;false;false;63;95;191;;;
                                  -38745;1;0;false;false;;;;;;
                                  -38746;6;0;false;false;63;95;191;;;
                                  -38752;1;0;false;false;;;;;;
                                  -38753;2;0;false;false;63;95;191;;;
                                  -38755;1;0;false;false;;;;;;
                                  -38756;5;0;false;false;63;95;191;;;
                                  -38761;1;0;false;false;;;;;;
                                  -38762;2;0;false;false;63;95;191;;;
                                  -38764;1;0;false;false;;;;;;
                                  -38765;9;0;false;false;63;95;191;;;
                                  -38774;4;0;false;false;;;;;;
                                  -38778;2;0;false;false;63;95;191;;;
                                  -38780;3;0;false;false;;;;;;
                                  -38783;6;1;false;false;127;0;85;;;
                                  -38789;1;0;false;false;;;;;;
                                  -38790;4;1;false;false;127;0;85;;;
                                  -38794;1;0;false;false;;;;;;
                                  -38795;10;0;false;false;0;0;0;;;
                                  -38805;3;1;false;false;127;0;85;;;
                                  -38808;1;0;false;false;;;;;;
                                  -38809;10;0;false;false;0;0;0;;;
                                  -38819;1;0;false;false;;;;;;
                                  -38820;3;1;false;false;127;0;85;;;
                                  -38823;1;0;false;false;;;;;;
                                  -38824;11;0;false;false;0;0;0;;;
                                  -38835;3;0;false;false;;;;;;
                                  -38838;3;0;false;false;63;95;191;;;
                                  -38841;4;0;false;false;;;;;;
                                  -38845;1;0;false;false;63;95;191;;;
                                  -38846;1;0;false;false;;;;;;
                                  -38847;7;0;false;false;63;95;191;;;
                                  -38854;1;0;false;false;;;;;;
                                  -38855;1;0;false;false;63;95;191;;;
                                  -38856;1;0;false;false;;;;;;
                                  -38857;5;0;false;false;63;95;191;;;
                                  -38862;1;0;false;false;;;;;;
                                  -38863;4;0;false;false;63;95;191;;;
                                  -38867;1;0;false;false;;;;;;
                                  -38868;4;0;false;false;63;95;191;;;
                                  -38872;1;0;false;false;;;;;;
                                  -38873;2;0;false;false;63;95;191;;;
                                  -38875;1;0;false;false;;;;;;
                                  -38876;4;0;false;false;63;95;191;;;
                                  -38880;1;0;false;false;;;;;;
                                  -38881;2;0;false;false;63;95;191;;;
                                  -38883;1;0;false;false;;;;;;
                                  -38884;3;0;false;false;63;95;191;;;
                                  -38887;1;0;false;false;;;;;;
                                  -38888;6;0;false;false;127;127;159;;;
                                  -38894;10;0;false;false;63;95;191;;;
                                  -38904;7;0;false;false;127;127;159;;;
                                  -38911;5;0;false;false;;;;;;
                                  -38916;1;0;false;false;63;95;191;;;
                                  -38917;1;0;false;false;;;;;;
                                  -38918;6;0;false;false;63;95;191;;;
                                  -38924;1;0;false;false;;;;;;
                                  -38925;2;0;false;false;63;95;191;;;
                                  -38927;1;0;false;false;;;;;;
                                  -38928;4;0;false;false;63;95;191;;;
                                  -38932;1;0;false;false;;;;;;
                                  -38933;1;0;false;false;63;95;191;;;
                                  -38934;1;0;false;false;;;;;;
                                  -38935;10;0;false;false;63;95;191;;;
                                  -38945;1;0;false;false;;;;;;
                                  -38946;6;0;false;false;63;95;191;;;
                                  -38952;1;0;false;false;;;;;;
                                  -38953;4;0;false;false;63;95;191;;;
                                  -38957;4;0;false;false;;;;;;
                                  -38961;1;0;false;false;63;95;191;;;
                                  -38962;1;0;false;false;;;;;;
                                  -38963;3;0;false;false;127;127;159;;;
                                  -38966;4;0;false;false;;;;;;
                                  -38970;1;0;false;false;63;95;191;;;
                                  -38971;4;0;false;false;;;;;;
                                  -38975;1;0;false;false;63;95;191;;;
                                  -38976;1;0;false;false;;;;;;
                                  -38977;8;1;false;false;127;159;191;;;
                                  -38985;3;0;false;false;63;95;191;;;
                                  -38988;1;0;false;false;;;;;;
                                  -38989;4;0;false;false;63;95;191;;;
                                  -38993;1;0;false;false;;;;;;
                                  -38994;5;0;false;false;63;95;191;;;
                                  -38999;4;0;false;false;;;;;;
                                  -39003;2;0;false;false;63;95;191;;;
                                  -39005;3;0;false;false;;;;;;
                                  -39008;6;1;false;false;127;0;85;;;
                                  -39014;1;0;false;false;;;;;;
                                  -39015;3;1;false;false;127;0;85;;;
                                  -39018;1;0;false;false;;;;;;
                                  -39019;11;0;false;false;0;0;0;;;
                                  -39030;3;0;false;false;;;;;;
                                  -39033;3;0;false;false;63;95;191;;;
                                  -39036;4;0;false;false;;;;;;
                                  -39040;1;0;false;false;63;95;191;;;
                                  -39041;1;0;false;false;;;;;;
                                  -39042;6;0;false;false;63;95;191;;;
                                  -39048;1;0;false;false;;;;;;
                                  -39049;3;0;false;false;63;95;191;;;
                                  -39052;1;0;false;false;;;;;;
                                  -39053;5;0;false;false;63;95;191;;;
                                  -39058;1;0;false;false;;;;;;
                                  -39059;2;0;false;false;63;95;191;;;
                                  -39061;1;0;false;false;;;;;;
                                  -39062;3;0;false;false;63;95;191;;;
                                  -39065;1;0;false;false;;;;;;
                                  -39066;9;0;false;false;63;95;191;;;
                                  -39075;1;0;false;false;;;;;;
                                  -39076;6;0;false;false;63;95;191;;;
                                  -39082;4;0;false;false;;;;;;
                                  -39086;1;0;false;false;63;95;191;;;
                                  -39087;1;0;false;false;;;;;;
                                  -39088;4;0;false;false;63;95;191;;;
                                  -39092;1;0;false;false;;;;;;
                                  -39093;6;0;false;false;63;95;191;;;
                                  -39099;1;0;false;false;;;;;;
                                  -39100;2;0;false;false;63;95;191;;;
                                  -39102;1;0;false;false;;;;;;
                                  -39103;6;0;false;false;63;95;191;;;
                                  -39109;1;0;false;false;;;;;;
                                  -39110;2;0;false;false;63;95;191;;;
                                  -39112;1;0;false;false;;;;;;
                                  -39113;6;0;false;false;127;127;159;;;
                                  -39119;19;0;false;false;63;95;191;;;
                                  -39138;7;0;false;false;127;127;159;;;
                                  -39145;4;0;false;false;;;;;;
                                  -39149;1;0;false;false;63;95;191;;;
                                  -39150;1;0;false;false;;;;;;
                                  -39151;3;0;false;false;63;95;191;;;
                                  -39154;1;0;false;false;;;;;;
                                  -39155;6;0;false;false;63;95;191;;;
                                  -39161;1;0;false;false;;;;;;
                                  -39162;12;0;false;false;63;95;191;;;
                                  -39174;1;0;false;false;;;;;;
                                  -39175;2;0;false;false;63;95;191;;;
                                  -39177;1;0;false;false;;;;;;
                                  -39178;4;0;false;false;63;95;191;;;
                                  -39182;1;0;false;false;;;;;;
                                  -39183;6;0;false;false;63;95;191;;;
                                  -39189;1;0;false;false;;;;;;
                                  -39190;10;0;false;false;63;95;191;;;
                                  -39200;1;0;false;false;;;;;;
                                  -39201;6;0;false;false;63;95;191;;;
                                  -39207;1;0;false;false;;;;;;
                                  -39208;6;0;false;false;63;95;191;;;
                                  -39214;4;0;false;false;;;;;;
                                  -39218;1;0;false;false;63;95;191;;;
                                  -39219;1;0;false;false;;;;;;
                                  -39220;3;0;false;false;127;127;159;;;
                                  -39223;4;0;false;false;;;;;;
                                  -39227;1;0;false;false;63;95;191;;;
                                  -39228;4;0;false;false;;;;;;
                                  -39232;1;0;false;false;63;95;191;;;
                                  -39233;1;0;false;false;;;;;;
                                  -39234;7;1;false;false;127;159;191;;;
                                  -39241;9;0;false;false;63;95;191;;;
                                  -39250;1;0;false;false;;;;;;
                                  -39251;3;0;false;false;63;95;191;;;
                                  -39254;1;0;false;false;;;;;;
                                  -39255;5;0;false;false;63;95;191;;;
                                  -39260;1;0;false;false;;;;;;
                                  -39261;4;0;false;false;63;95;191;;;
                                  -39265;1;0;false;false;;;;;;
                                  -39266;2;0;false;false;63;95;191;;;
                                  -39268;1;0;false;false;;;;;;
                                  -39269;5;0;false;false;63;95;191;;;
                                  -39274;4;0;false;false;;;;;;
                                  -39278;1;0;false;false;63;95;191;;;
                                  -39279;1;0;false;false;;;;;;
                                  -39280;7;1;false;false;127;159;191;;;
                                  -39287;9;0;false;false;63;95;191;;;
                                  -39296;1;0;false;false;;;;;;
                                  -39297;3;0;false;false;63;95;191;;;
                                  -39300;1;0;false;false;;;;;;
                                  -39301;6;0;false;false;63;95;191;;;
                                  -39307;1;0;false;false;;;;;;
                                  -39308;2;0;false;false;63;95;191;;;
                                  -39310;1;0;false;false;;;;;;
                                  -39311;5;0;false;false;63;95;191;;;
                                  -39316;1;0;false;false;;;;;;
                                  -39317;2;0;false;false;63;95;191;;;
                                  -39319;1;0;false;false;;;;;;
                                  -39320;5;0;false;false;63;95;191;;;
                                  -39325;4;0;false;false;;;;;;
                                  -39329;1;0;false;false;63;95;191;;;
                                  -39330;1;0;false;false;;;;;;
                                  -39331;7;1;false;false;127;159;191;;;
                                  -39338;17;0;false;false;63;95;191;;;
                                  -39355;1;0;false;false;;;;;;
                                  -39356;17;0;false;false;63;95;191;;;
                                  -39373;1;0;false;false;;;;;;
                                  -39374;6;0;false;false;63;95;191;;;
                                  -39380;1;0;false;false;;;;;;
                                  -39381;6;0;false;false;63;95;191;;;
                                  -39387;1;0;false;false;;;;;;
                                  -39388;1;0;false;false;63;95;191;;;
                                  -39389;5;0;false;false;;;;;;
                                  -39394;1;0;false;false;63;95;191;;;
                                  -39395;2;0;false;false;;;;;;
                                  -39397;5;0;false;false;63;95;191;;;
                                  -39402;1;0;false;false;;;;;;
                                  -39403;5;0;false;false;63;95;191;;;
                                  -39408;1;0;false;false;;;;;;
                                  -39409;4;0;false;false;63;95;191;;;
                                  -39413;1;0;false;false;;;;;;
                                  -39414;2;0;false;false;63;95;191;;;
                                  -39416;1;0;false;false;;;;;;
                                  -39417;2;0;false;false;63;95;191;;;
                                  -39419;1;0;false;false;;;;;;
                                  -39420;2;0;false;false;63;95;191;;;
                                  -39422;1;0;false;false;;;;;;
                                  -39423;8;0;false;false;63;95;191;;;
                                  -39431;1;0;false;false;;;;;;
                                  -39432;2;0;false;false;63;95;191;;;
                                  -39434;1;0;false;false;;;;;;
                                  -39435;3;0;false;false;63;95;191;;;
                                  -39438;1;0;false;false;;;;;;
                                  -39439;5;0;false;false;63;95;191;;;
                                  -39444;1;0;false;false;;;;;;
                                  -39445;10;0;false;false;63;95;191;;;
                                  -39455;4;0;false;false;;;;;;
                                  -39459;1;0;false;false;63;95;191;;;
                                  -39460;2;0;false;false;;;;;;
                                  -39462;9;0;false;false;63;95;191;;;
                                  -39471;1;0;false;false;;;;;;
                                  -39472;5;0;false;false;63;95;191;;;
                                  -39477;1;0;false;false;;;;;;
                                  -39478;3;0;false;false;63;95;191;;;
                                  -39481;1;0;false;false;;;;;;
                                  -39482;2;0;false;false;63;95;191;;;
                                  -39484;1;0;false;false;;;;;;
                                  -39485;3;0;false;false;63;95;191;;;
                                  -39488;1;0;false;false;;;;;;
                                  -39489;2;0;false;false;63;95;191;;;
                                  -39491;1;0;false;false;;;;;;
                                  -39492;1;0;false;false;63;95;191;;;
                                  -39493;4;0;false;false;;;;;;
                                  -39497;2;0;false;false;63;95;191;;;
                                  -39499;3;0;false;false;;;;;;
                                  -39502;6;1;false;false;127;0;85;;;
                                  -39508;1;0;false;false;;;;;;
                                  -39509;4;1;false;false;127;0;85;;;
                                  -39513;1;0;false;false;;;;;;
                                  -39514;12;0;false;false;0;0;0;;;
                                  -39526;3;1;false;false;127;0;85;;;
                                  -39529;1;0;false;false;;;;;;
                                  -39530;10;0;false;false;0;0;0;;;
                                  -39540;1;0;false;false;;;;;;
                                  -39541;3;1;false;false;127;0;85;;;
                                  -39544;1;0;false;false;;;;;;
                                  -39545;10;0;false;false;0;0;0;;;
                                  -39555;1;0;false;false;;;;;;
                                  -39556;7;1;false;false;127;0;85;;;
                                  -39563;1;0;false;false;;;;;;
                                  -39564;19;0;false;false;0;0;0;;;
                                  -39583;3;0;false;false;;;;;;
                                  -39586;3;0;false;false;63;95;191;;;
                                  -39589;4;0;false;false;;;;;;
                                  -39593;1;0;false;false;63;95;191;;;
                                  -39594;1;0;false;false;;;;;;
                                  -39595;6;0;false;false;63;95;191;;;
                                  -39601;1;0;false;false;;;;;;
                                  -39602;3;0;false;false;63;95;191;;;
                                  -39605;1;0;false;false;;;;;;
                                  -39606;5;0;false;false;63;95;191;;;
                                  -39611;1;0;false;false;;;;;;
                                  -39612;2;0;false;false;63;95;191;;;
                                  -39614;1;0;false;false;;;;;;
                                  -39615;3;0;false;false;63;95;191;;;
                                  -39618;1;0;false;false;;;;;;
                                  -39619;9;0;false;false;63;95;191;;;
                                  -39628;1;0;false;false;;;;;;
                                  -39629;6;0;false;false;63;95;191;;;
                                  -39635;4;0;false;false;;;;;;
                                  -39639;1;0;false;false;63;95;191;;;
                                  -39640;1;0;false;false;;;;;;
                                  -39641;3;0;false;false;127;127;159;;;
                                  -39644;4;0;false;false;;;;;;
                                  -39648;1;0;false;false;63;95;191;;;
                                  -39649;4;0;false;false;;;;;;
                                  -39653;1;0;false;false;63;95;191;;;
                                  -39654;1;0;false;false;;;;;;
                                  -39655;7;1;false;false;127;159;191;;;
                                  -39662;9;0;false;false;63;95;191;;;
                                  -39671;1;0;false;false;;;;;;
                                  -39672;3;0;false;false;63;95;191;;;
                                  -39675;1;0;false;false;;;;;;
                                  -39676;5;0;false;false;63;95;191;;;
                                  -39681;1;0;false;false;;;;;;
                                  -39682;4;0;false;false;63;95;191;;;
                                  -39686;1;0;false;false;;;;;;
                                  -39687;2;0;false;false;63;95;191;;;
                                  -39689;1;0;false;false;;;;;;
                                  -39690;5;0;false;false;63;95;191;;;
                                  -39695;4;0;false;false;;;;;;
                                  -39699;1;0;false;false;63;95;191;;;
                                  -39700;1;0;false;false;;;;;;
                                  -39701;7;1;false;false;127;159;191;;;
                                  -39708;9;0;false;false;63;95;191;;;
                                  -39717;1;0;false;false;;;;;;
                                  -39718;3;0;false;false;63;95;191;;;
                                  -39721;1;0;false;false;;;;;;
                                  -39722;6;0;false;false;63;95;191;;;
                                  -39728;1;0;false;false;;;;;;
                                  -39729;2;0;false;false;63;95;191;;;
                                  -39731;1;0;false;false;;;;;;
                                  -39732;5;0;false;false;63;95;191;;;
                                  -39737;1;0;false;false;;;;;;
                                  -39738;2;0;false;false;63;95;191;;;
                                  -39740;1;0;false;false;;;;;;
                                  -39741;5;0;false;false;63;95;191;;;
                                  -39746;4;0;false;false;;;;;;
                                  -39750;1;0;false;false;63;95;191;;;
                                  -39751;1;0;false;false;;;;;;
                                  -39752;7;1;false;false;127;159;191;;;
                                  -39759;17;0;false;false;63;95;191;;;
                                  -39776;1;0;false;false;;;;;;
                                  -39777;17;0;false;false;63;95;191;;;
                                  -39794;1;0;false;false;;;;;;
                                  -39795;6;0;false;false;63;95;191;;;
                                  -39801;1;0;false;false;;;;;;
                                  -39802;6;0;false;false;63;95;191;;;
                                  -39808;1;0;false;false;;;;;;
                                  -39809;1;0;false;false;63;95;191;;;
                                  -39810;5;0;false;false;;;;;;
                                  -39815;1;0;false;false;63;95;191;;;
                                  -39816;2;0;false;false;;;;;;
                                  -39818;5;0;false;false;63;95;191;;;
                                  -39823;1;0;false;false;;;;;;
                                  -39824;5;0;false;false;63;95;191;;;
                                  -39829;1;0;false;false;;;;;;
                                  -39830;4;0;false;false;63;95;191;;;
                                  -39834;1;0;false;false;;;;;;
                                  -39835;2;0;false;false;63;95;191;;;
                                  -39837;1;0;false;false;;;;;;
                                  -39838;2;0;false;false;63;95;191;;;
                                  -39840;1;0;false;false;;;;;;
                                  -39841;2;0;false;false;63;95;191;;;
                                  -39843;1;0;false;false;;;;;;
                                  -39844;8;0;false;false;63;95;191;;;
                                  -39852;1;0;false;false;;;;;;
                                  -39853;2;0;false;false;63;95;191;;;
                                  -39855;1;0;false;false;;;;;;
                                  -39856;3;0;false;false;63;95;191;;;
                                  -39859;1;0;false;false;;;;;;
                                  -39860;5;0;false;false;63;95;191;;;
                                  -39865;1;0;false;false;;;;;;
                                  -39866;10;0;false;false;63;95;191;;;
                                  -39876;4;0;false;false;;;;;;
                                  -39880;1;0;false;false;63;95;191;;;
                                  -39881;2;0;false;false;;;;;;
                                  -39883;9;0;false;false;63;95;191;;;
                                  -39892;1;0;false;false;;;;;;
                                  -39893;5;0;false;false;63;95;191;;;
                                  -39898;1;0;false;false;;;;;;
                                  -39899;3;0;false;false;63;95;191;;;
                                  -39902;1;0;false;false;;;;;;
                                  -39903;2;0;false;false;63;95;191;;;
                                  -39905;1;0;false;false;;;;;;
                                  -39906;3;0;false;false;63;95;191;;;
                                  -39909;1;0;false;false;;;;;;
                                  -39910;2;0;false;false;63;95;191;;;
                                  -39912;1;0;false;false;;;;;;
                                  -39913;1;0;false;false;63;95;191;;;
                                  -39914;4;0;false;false;;;;;;
                                  -39918;2;0;false;false;63;95;191;;;
                                  -39920;3;0;false;false;;;;;;
                                  -39923;6;1;false;false;127;0;85;;;
                                  -39929;1;0;false;false;;;;;;
                                  -39930;4;1;false;false;127;0;85;;;
                                  -39934;1;0;false;false;;;;;;
                                  -39935;6;0;false;false;0;0;0;;;
                                  -39941;3;1;false;false;127;0;85;;;
                                  -39944;1;0;false;false;;;;;;
                                  -39945;10;0;false;false;0;0;0;;;
                                  -39955;1;0;false;false;;;;;;
                                  -39956;3;1;false;false;127;0;85;;;
                                  -39959;1;0;false;false;;;;;;
                                  -39960;10;0;false;false;0;0;0;;;
                                  -39970;1;0;false;false;;;;;;
                                  -39971;7;1;false;false;127;0;85;;;
                                  -39978;1;0;false;false;;;;;;
                                  -39979;19;0;false;false;0;0;0;;;
                                  -39998;3;0;false;false;;;;;;
                                  -40001;3;0;false;false;63;95;191;;;
                                  -40004;5;0;false;false;;;;;;
                                  -40009;1;0;false;false;63;95;191;;;
                                  -40010;1;0;false;false;;;;;;
                                  -40011;6;0;false;false;63;95;191;;;
                                  -40017;1;0;false;false;;;;;;
                                  -40018;4;0;false;false;63;95;191;;;
                                  -40022;1;0;false;false;;;;;;
                                  -40023;1;0;false;false;63;95;191;;;
                                  -40024;1;0;false;false;;;;;;
                                  -40025;4;0;false;false;63;95;191;;;
                                  -40029;1;0;false;false;;;;;;
                                  -40030;6;0;false;false;63;95;191;;;
                                  -40036;1;0;false;false;;;;;;
                                  -40037;9;0;false;false;63;95;191;;;
                                  -40046;4;0;false;false;;;;;;
                                  -40050;1;0;false;false;63;95;191;;;
                                  -40051;1;0;false;false;;;;;;
                                  -40052;3;0;false;false;127;127;159;;;
                                  -40055;4;0;false;false;;;;;;
                                  -40059;1;0;false;false;63;95;191;;;
                                  -40060;4;0;false;false;;;;;;
                                  -40064;1;0;false;false;63;95;191;;;
                                  -40065;1;0;false;false;;;;;;
                                  -40066;7;1;false;false;127;159;191;;;
                                  -40073;11;0;false;false;63;95;191;;;
                                  -40084;1;0;false;false;;;;;;
                                  -40085;3;0;false;false;63;95;191;;;
                                  -40088;1;0;false;false;;;;;;
                                  -40089;5;0;false;false;63;95;191;;;
                                  -40094;1;0;false;false;;;;;;
                                  -40095;6;0;false;false;63;95;191;;;
                                  -40101;1;0;false;false;;;;;;
                                  -40102;2;0;false;false;63;95;191;;;
                                  -40104;1;0;false;false;;;;;;
                                  -40105;3;0;false;false;63;95;191;;;
                                  -40108;1;0;false;false;;;;;;
                                  -40109;4;0;false;false;63;95;191;;;
                                  -40113;1;0;false;false;;;;;;
                                  -40114;6;0;false;false;63;95;191;;;
                                  -40120;4;0;false;false;;;;;;
                                  -40124;1;0;false;false;63;95;191;;;
                                  -40125;1;0;false;false;;;;;;
                                  -40126;7;1;false;false;127;159;191;;;
                                  -40133;12;0;false;false;63;95;191;;;
                                  -40145;1;0;false;false;;;;;;
                                  -40146;3;0;false;false;63;95;191;;;
                                  -40149;1;0;false;false;;;;;;
                                  -40150;6;0;false;false;63;95;191;;;
                                  -40156;1;0;false;false;;;;;;
                                  -40157;2;0;false;false;63;95;191;;;
                                  -40159;1;0;false;false;;;;;;
                                  -40160;8;0;false;false;63;95;191;;;
                                  -40168;1;0;false;false;;;;;;
                                  -40169;5;0;false;false;63;95;191;;;
                                  -40174;4;0;false;false;;;;;;
                                  -40178;1;0;false;false;63;95;191;;;
                                  -40179;1;0;false;false;;;;;;
                                  -40180;7;1;false;false;127;159;191;;;
                                  -40187;16;0;false;false;63;95;191;;;
                                  -40203;1;0;false;false;;;;;;
                                  -40204;3;0;false;false;63;95;191;;;
                                  -40207;1;0;false;false;;;;;;
                                  -40208;6;0;false;false;63;95;191;;;
                                  -40214;1;0;false;false;;;;;;
                                  -40215;2;0;false;false;63;95;191;;;
                                  -40217;1;0;false;false;;;;;;
                                  -40218;7;0;false;false;63;95;191;;;
                                  -40225;1;0;false;false;;;;;;
                                  -40226;5;0;false;false;63;95;191;;;
                                  -40231;4;0;false;false;;;;;;
                                  -40235;1;0;false;false;63;95;191;;;
                                  -40236;1;0;false;false;;;;;;
                                  -40237;7;1;false;false;127;159;191;;;
                                  -40244;12;0;false;false;63;95;191;;;
                                  -40256;1;0;false;false;;;;;;
                                  -40257;3;0;false;false;63;95;191;;;
                                  -40260;1;0;false;false;;;;;;
                                  -40261;6;0;false;false;63;95;191;;;
                                  -40267;1;0;false;false;;;;;;
                                  -40268;2;0;false;false;63;95;191;;;
                                  -40270;1;0;false;false;;;;;;
                                  -40271;3;0;false;false;63;95;191;;;
                                  -40274;1;0;false;false;;;;;;
                                  -40275;10;0;false;false;63;95;191;;;
                                  -40285;4;0;false;false;;;;;;
                                  -40289;1;0;false;false;63;95;191;;;
                                  -40290;1;0;false;false;;;;;;
                                  -40291;7;1;false;false;127;159;191;;;
                                  -40298;16;0;false;false;63;95;191;;;
                                  -40314;1;0;false;false;;;;;;
                                  -40315;3;0;false;false;63;95;191;;;
                                  -40318;1;0;false;false;;;;;;
                                  -40319;6;0;false;false;63;95;191;;;
                                  -40325;1;0;false;false;;;;;;
                                  -40326;2;0;false;false;63;95;191;;;
                                  -40328;1;0;false;false;;;;;;
                                  -40329;7;0;false;false;63;95;191;;;
                                  -40336;1;0;false;false;;;;;;
                                  -40337;10;0;false;false;63;95;191;;;
                                  -40347;4;0;false;false;;;;;;
                                  -40351;2;0;false;false;63;95;191;;;
                                  -40353;5;0;false;false;;;;;;
                                  -40358;6;1;false;false;127;0;85;;;
                                  -40364;1;0;false;false;;;;;;
                                  -40365;4;1;false;false;127;0;85;;;
                                  -40369;1;0;false;false;;;;;;
                                  -40370;12;0;false;false;0;0;0;;;
                                  -40382;3;1;false;false;127;0;85;;;
                                  -40385;1;0;false;false;;;;;;
                                  -40386;12;0;false;false;0;0;0;;;
                                  -40398;1;0;false;false;;;;;;
                                  -40399;3;1;false;false;127;0;85;;;
                                  -40402;1;0;false;false;;;;;;
                                  -40403;13;0;false;false;0;0;0;;;
                                  -40416;1;0;false;false;;;;;;
                                  -40417;3;1;false;false;127;0;85;;;
                                  -40420;1;0;false;false;;;;;;
                                  -40421;17;0;false;false;0;0;0;;;
                                  -40438;1;0;false;false;;;;;;
                                  -40439;3;1;false;false;127;0;85;;;
                                  -40442;1;0;false;false;;;;;;
                                  -40443;13;0;false;false;0;0;0;;;
                                  -40456;1;0;false;false;;;;;;
                                  -40457;3;1;false;false;127;0;85;;;
                                  -40460;1;0;false;false;;;;;;
                                  -40461;18;0;false;false;0;0;0;;;
                                  -40479;3;0;false;false;;;;;;
                                  -40482;1;0;false;false;0;0;0;;;
                                  -40483;3;0;false;false;;;;;;
                                  -40486;3;0;false;false;63;95;191;;;
                                  -40489;4;0;false;false;;;;;;
                                  -40493;1;0;false;false;63;95;191;;;
                                  -40494;1;0;false;false;;;;;;
                                  -40495;5;0;false;false;63;95;191;;;
                                  -40500;1;0;false;false;;;;;;
                                  -40501;5;0;false;false;63;95;191;;;
                                  -40506;1;0;false;false;;;;;;
                                  -40507;2;0;false;false;63;95;191;;;
                                  -40509;1;0;false;false;;;;;;
                                  -40510;4;0;false;false;63;95;191;;;
                                  -40514;1;0;false;false;;;;;;
                                  -40515;6;0;false;false;63;95;191;;;
                                  -40521;1;0;false;false;;;;;;
                                  -40522;3;0;false;false;63;95;191;;;
                                  -40525;1;0;false;false;;;;;;
                                  -40526;3;0;false;false;63;95;191;;;
                                  -40529;1;0;false;false;;;;;;
                                  -40530;7;0;false;false;63;95;191;;;
                                  -40537;1;0;false;false;;;;;;
                                  -40538;4;0;false;false;63;95;191;;;
                                  -40542;1;0;false;false;;;;;;
                                  -40543;2;0;false;false;63;95;191;;;
                                  -40545;1;0;false;false;;;;;;
                                  -40546;3;0;false;false;63;95;191;;;
                                  -40549;5;0;false;false;;;;;;
                                  -40554;1;0;false;false;63;95;191;;;
                                  -40555;1;0;false;false;;;;;;
                                  -40556;10;0;false;false;63;95;191;;;
                                  -40566;1;0;false;false;;;;;;
                                  -40567;9;0;false;false;63;95;191;;;
                                  -40576;4;0;false;false;;;;;;
                                  -40580;1;0;false;false;63;95;191;;;
                                  -40581;1;0;false;false;;;;;;
                                  -40582;4;0;false;false;63;95;191;;;
                                  -40586;1;0;false;false;;;;;;
                                  -40587;6;0;false;false;63;95;191;;;
                                  -40593;1;0;false;false;;;;;;
                                  -40594;3;0;false;false;63;95;191;;;
                                  -40597;1;0;false;false;;;;;;
                                  -40598;10;0;false;false;63;95;191;;;
                                  -40608;1;0;false;false;;;;;;
                                  -40609;4;0;false;false;63;95;191;;;
                                  -40613;1;0;false;false;;;;;;
                                  -40614;9;0;false;false;63;95;191;;;
                                  -40623;1;0;false;false;;;;;;
                                  -40624;2;0;false;false;63;95;191;;;
                                  -40626;1;0;false;false;;;;;;
                                  -40627;1;0;false;false;63;95;191;;;
                                  -40628;1;0;false;false;;;;;;
                                  -40629;4;0;false;false;63;95;191;;;
                                  -40633;1;0;false;false;;;;;;
                                  -40634;2;0;false;false;63;95;191;;;
                                  -40636;5;0;false;false;;;;;;
                                  -40641;1;0;false;false;63;95;191;;;
                                  -40642;1;0;false;false;;;;;;
                                  -40643;6;0;false;false;127;127;159;;;
                                  -40649;9;0;false;false;63;95;191;;;
                                  -40658;7;0;false;false;127;127;159;;;
                                  -40665;1;0;false;false;;;;;;
                                  -40666;3;0;false;false;63;95;191;;;
                                  -40669;1;0;false;false;;;;;;
                                  -40670;6;0;false;false;63;95;191;;;
                                  -40676;1;0;false;false;;;;;;
                                  -40677;5;0;false;false;63;95;191;;;
                                  -40682;1;0;false;false;;;;;;
                                  -40683;5;0;false;false;63;95;191;;;
                                  -40688;1;0;false;false;;;;;;
                                  -40689;2;0;false;false;63;95;191;;;
                                  -40691;1;0;false;false;;;;;;
                                  -40692;1;0;false;false;63;95;191;;;
                                  -40693;1;0;false;false;;;;;;
                                  -40694;4;0;false;false;63;95;191;;;
                                  -40698;5;0;false;false;;;;;;
                                  -40703;1;0;false;false;63;95;191;;;
                                  -40704;1;0;false;false;;;;;;
                                  -40705;2;0;false;false;63;95;191;;;
                                  -40707;1;0;false;false;;;;;;
                                  -40708;6;0;false;false;127;127;159;;;
                                  -40714;11;0;false;false;63;95;191;;;
                                  -40725;7;0;false;false;127;127;159;;;
                                  -40732;1;0;false;false;;;;;;
                                  -40733;2;0;false;false;63;95;191;;;
                                  -40735;1;0;false;false;;;;;;
                                  -40736;6;0;false;false;127;127;159;;;
                                  -40742;5;0;false;false;63;95;191;;;
                                  -40747;7;0;false;false;127;127;159;;;
                                  -40754;1;0;false;false;63;95;191;;;
                                  -40755;4;0;false;false;;;;;;
                                  -40759;2;0;false;false;63;95;191;;;
                                  -40761;3;0;false;false;;;;;;
                                  -40764;5;1;false;false;127;0;85;;;
                                  -40769;1;0;false;false;;;;;;
                                  -40770;17;0;false;false;0;0;0;;;
                                  -40787;1;0;false;false;;;;;;
                                  -40788;10;1;false;false;127;0;85;;;
                                  -40798;1;0;false;false;;;;;;
                                  -40799;9;0;false;false;0;0;0;;;
                                  -40808;1;0;false;false;;;;;;
                                  -40809;1;0;false;false;0;0;0;;;
                                  -40810;4;0;false;false;;;;;;
                                  -40814;10;0;false;false;0;0;0;;;
                                  -40824;1;0;false;false;;;;;;
                                  -40825;7;0;false;false;0;0;0;;;
                                  -40832;4;0;false;false;;;;;;
                                  -40836;58;0;false;false;63;127;95;;;
                                  -40894;2;0;false;false;;;;;;
                                  -40896;3;1;false;false;127;0;85;;;
                                  -40899;2;0;false;false;0;0;0;;;
                                  -40901;1;0;false;false;;;;;;
                                  -40902;10;0;false;false;0;0;0;;;
                                  -40912;4;0;false;false;;;;;;
                                  -40916;70;0;false;false;63;127;95;;;
                                  -40986;2;0;false;false;;;;;;
                                  -40988;17;0;false;false;0;0;0;;;
                                  -41005;1;0;false;false;;;;;;
                                  -41006;8;0;false;false;0;0;0;;;
                                  -41014;2;0;false;false;;;;;;
                                  -41016;46;0;false;false;63;127;95;;;
                                  -41062;2;0;false;false;;;;;;
                                  -41064;3;1;false;false;127;0;85;;;
                                  -41067;1;0;false;false;;;;;;
                                  -41068;10;0;false;false;0;0;0;;;
                                  -41078;5;0;false;false;;;;;;
                                  -41083;39;0;false;false;63;127;95;;;
                                  -41122;2;0;false;false;;;;;;
                                  -41124;3;1;false;false;127;0;85;;;
                                  -41127;1;0;false;false;;;;;;
                                  -41128;9;0;false;false;0;0;0;;;
                                  -41137;5;0;false;false;;;;;;
                                  -41142;45;0;false;false;63;127;95;;;
                                  -41187;2;0;false;false;;;;;;
                                  -41189;3;1;false;false;127;0;85;;;
                                  -41192;1;0;false;false;;;;;;
                                  -41193;18;0;false;false;0;0;0;;;
                                  -41211;3;0;false;false;;;;;;
                                  -41214;29;0;false;false;63;127;95;;;
                                  -41243;7;0;false;false;;;;;;
                                  -41250;3;0;false;false;63;95;191;;;
                                  -41253;5;0;false;false;;;;;;
                                  -41258;1;0;false;false;63;95;191;;;
                                  -41259;1;0;false;false;;;;;;
                                  -41260;7;0;false;false;63;95;191;;;
                                  -41267;1;0;false;false;;;;;;
                                  -41268;1;0;false;false;63;95;191;;;
                                  -41269;1;0;false;false;;;;;;
                                  -41270;3;0;false;false;63;95;191;;;
                                  -41273;1;0;false;false;;;;;;
                                  -41274;6;0;false;false;127;127;159;;;
                                  -41280;17;0;false;false;63;95;191;;;
                                  -41297;7;0;false;false;127;127;159;;;
                                  -41304;1;0;false;false;;;;;;
                                  -41305;3;0;false;false;63;95;191;;;
                                  -41308;1;0;false;false;;;;;;
                                  -41309;9;0;false;false;63;95;191;;;
                                  -41318;1;0;false;false;;;;;;
                                  -41319;5;0;false;false;63;95;191;;;
                                  -41324;5;0;false;false;;;;;;
                                  -41329;1;0;false;false;63;95;191;;;
                                  -41330;1;0;false;false;;;;;;
                                  -41331;3;0;false;false;63;95;191;;;
                                  -41334;1;0;false;false;;;;;;
                                  -41335;3;0;false;false;63;95;191;;;
                                  -41338;1;0;false;false;;;;;;
                                  -41339;5;0;false;false;63;95;191;;;
                                  -41344;1;0;false;false;;;;;;
                                  -41345;6;0;false;false;63;95;191;;;
                                  -41351;1;0;false;false;;;;;;
                                  -41352;2;0;false;false;63;95;191;;;
                                  -41354;1;0;false;false;;;;;;
                                  -41355;6;0;false;false;63;95;191;;;
                                  -41361;4;0;false;false;;;;;;
                                  -41365;1;0;false;false;63;95;191;;;
                                  -41366;1;0;false;false;;;;;;
                                  -41367;3;0;false;false;127;127;159;;;
                                  -41370;4;0;false;false;;;;;;
                                  -41374;1;0;false;false;63;95;191;;;
                                  -41375;4;0;false;false;;;;;;
                                  -41379;1;0;false;false;63;95;191;;;
                                  -41380;1;0;false;false;;;;;;
                                  -41381;7;1;false;false;127;159;191;;;
                                  -41388;6;0;false;false;63;95;191;;;
                                  -41394;1;0;false;false;;;;;;
                                  -41395;3;0;false;false;63;95;191;;;
                                  -41398;1;0;false;false;;;;;;
                                  -41399;10;0;false;false;63;95;191;;;
                                  -41409;1;0;false;false;;;;;;
                                  -41410;6;0;false;false;63;95;191;;;
                                  -41416;1;0;false;false;;;;;;
                                  -41417;4;0;false;false;63;95;191;;;
                                  -41421;1;0;false;false;;;;;;
                                  -41422;2;0;false;false;63;95;191;;;
                                  -41424;1;0;false;false;;;;;;
                                  -41425;6;0;false;false;63;95;191;;;
                                  -41431;1;0;false;false;;;;;;
                                  -41432;1;0;false;false;63;95;191;;;
                                  -41433;1;0;false;false;;;;;;
                                  -41434;2;0;false;false;63;95;191;;;
                                  -41436;1;0;false;false;;;;;;
                                  -41437;3;0;false;false;63;95;191;;;
                                  -41440;5;0;false;false;;;;;;
                                  -41445;1;0;false;false;63;95;191;;;
                                  -41446;2;0;false;false;;;;;;
                                  -41448;4;0;false;false;63;95;191;;;
                                  -41452;1;0;false;false;;;;;;
                                  -41453;9;0;false;false;63;95;191;;;
                                  -41462;4;0;false;false;;;;;;
                                  -41466;1;0;false;false;63;95;191;;;
                                  -41467;1;0;false;false;;;;;;
                                  -41468;7;1;false;false;127;159;191;;;
                                  -41475;7;0;false;false;63;95;191;;;
                                  -41482;1;0;false;false;;;;;;
                                  -41483;1;0;false;false;63;95;191;;;
                                  -41484;1;0;false;false;;;;;;
                                  -41485;17;0;false;false;63;95;191;;;
                                  -41502;1;0;false;false;;;;;;
                                  -41503;10;0;false;false;63;95;191;;;
                                  -41513;1;0;false;false;;;;;;
                                  -41514;3;0;false;false;63;95;191;;;
                                  -41517;1;0;false;false;;;;;;
                                  -41518;7;0;false;false;63;95;191;;;
                                  -41525;1;0;false;false;;;;;;
                                  -41526;6;0;false;false;63;95;191;;;
                                  -41532;4;0;false;false;;;;;;
                                  -41536;1;0;false;false;63;95;191;;;
                                  -41537;2;0;false;false;;;;;;
                                  -41539;2;0;false;false;63;95;191;;;
                                  -41541;1;0;false;false;;;;;;
                                  -41542;5;0;false;false;63;95;191;;;
                                  -41547;1;0;false;false;;;;;;
                                  -41548;2;0;false;false;63;95;191;;;
                                  -41550;1;0;false;false;;;;;;
                                  -41551;8;0;false;false;63;95;191;;;
                                  -41559;1;0;false;false;;;;;;
                                  -41560;5;0;false;false;63;95;191;;;
                                  -41565;1;0;false;false;;;;;;
                                  -41566;3;0;false;false;63;95;191;;;
                                  -41569;4;0;false;false;;;;;;
                                  -41573;2;0;false;false;63;95;191;;;
                                  -41575;3;0;false;false;;;;;;
                                  -41578;6;1;false;false;127;0;85;;;
                                  -41584;1;0;false;false;;;;;;
                                  -41585;28;0;false;false;0;0;0;;;
                                  -41613;1;0;false;false;;;;;;
                                  -41614;7;0;false;false;0;0;0;;;
                                  -41621;1;0;false;false;;;;;;
                                  -41622;17;0;false;false;0;0;0;;;
                                  -41639;1;0;false;false;;;;;;
                                  -41640;8;0;false;false;0;0;0;;;
                                  -41648;1;0;false;false;;;;;;
                                  -41649;1;0;false;false;0;0;0;;;
                                  -41650;4;0;false;false;;;;;;
                                  -41654;4;1;false;false;127;0;85;;;
                                  -41658;7;0;false;false;0;0;0;;;
                                  -41665;1;0;false;false;;;;;;
                                  -41666;1;0;false;false;0;0;0;;;
                                  -41667;1;0;false;false;;;;;;
                                  -41668;7;0;false;false;0;0;0;;;
                                  -41675;4;0;false;false;;;;;;
                                  -41679;4;1;false;false;127;0;85;;;
                                  -41683;8;0;false;false;0;0;0;;;
                                  -41691;1;0;false;false;;;;;;
                                  -41692;1;0;false;false;0;0;0;;;
                                  -41693;1;0;false;false;;;;;;
                                  -41694;8;0;false;false;0;0;0;;;
                                  -41702;4;0;false;false;;;;;;
                                  -41706;4;1;false;false;127;0;85;;;
                                  -41710;10;0;false;false;0;0;0;;;
                                  -41720;1;0;false;false;;;;;;
                                  -41721;1;0;false;false;0;0;0;;;
                                  -41722;1;0;false;false;;;;;;
                                  -41723;23;0;false;false;0;0;0;;;
                                  -41746;4;0;false;false;;;;;;
                                  -41750;9;0;false;false;0;0;0;;;
                                  -41759;1;0;false;false;;;;;;
                                  -41760;1;0;false;false;0;0;0;;;
                                  -41761;1;0;false;false;;;;;;
                                  -41762;3;1;false;false;127;0;85;;;
                                  -41765;1;0;false;false;;;;;;
                                  -41766;3;1;false;false;127;0;85;;;
                                  -41769;12;0;false;false;0;0;0;;;
                                  -41781;4;0;false;false;;;;;;
                                  -41785;8;0;false;false;0;0;0;;;
                                  -41793;1;0;false;false;;;;;;
                                  -41794;10;0;false;false;0;0;0;;;
                                  -41804;1;0;false;false;;;;;;
                                  -41805;5;1;false;false;127;0;85;;;
                                  -41810;2;0;false;false;0;0;0;;;
                                  -41812;3;0;false;false;;;;;;
                                  -41815;1;0;false;false;0;0;0;;;
                                  -41816;3;0;false;false;;;;;;
                                  -41819;3;0;false;false;63;95;191;;;
                                  -41822;4;0;false;false;;;;;;
                                  -41826;1;0;false;false;63;95;191;;;
                                  -41827;1;0;false;false;;;;;;
                                  -41828;10;0;false;false;63;95;191;;;
                                  -41838;1;0;false;false;;;;;;
                                  -41839;3;0;false;false;63;95;191;;;
                                  -41842;1;0;false;false;;;;;;
                                  -41843;5;0;false;false;63;95;191;;;
                                  -41848;1;0;false;false;;;;;;
                                  -41849;2;0;false;false;63;95;191;;;
                                  -41851;1;0;false;false;;;;;;
                                  -41852;4;0;false;false;63;95;191;;;
                                  -41856;1;0;false;false;;;;;;
                                  -41857;4;0;false;false;63;95;191;;;
                                  -41861;1;0;false;false;;;;;;
                                  -41862;2;0;false;false;63;95;191;;;
                                  -41864;1;0;false;false;;;;;;
                                  -41865;3;0;false;false;63;95;191;;;
                                  -41868;1;0;false;false;;;;;;
                                  -41869;5;0;false;false;63;95;191;;;
                                  -41874;1;0;false;false;;;;;;
                                  -41875;5;0;false;false;63;95;191;;;
                                  -41880;1;0;false;false;;;;;;
                                  -41881;2;0;false;false;63;95;191;;;
                                  -41883;1;0;false;false;;;;;;
                                  -41884;2;0;false;false;63;95;191;;;
                                  -41886;1;0;false;false;;;;;;
                                  -41887;3;0;false;false;63;95;191;;;
                                  -41890;4;0;false;false;;;;;;
                                  -41894;1;0;false;false;63;95;191;;;
                                  -41895;1;0;false;false;;;;;;
                                  -41896;3;0;false;false;63;95;191;;;
                                  -41899;1;0;false;false;;;;;;
                                  -41900;4;0;false;false;63;95;191;;;
                                  -41904;1;0;false;false;;;;;;
                                  -41905;10;0;false;false;63;95;191;;;
                                  -41915;1;0;false;false;;;;;;
                                  -41916;4;0;false;false;63;95;191;;;
                                  -41920;4;0;false;false;;;;;;
                                  -41924;1;0;false;false;63;95;191;;;
                                  -41925;1;0;false;false;;;;;;
                                  -41926;2;0;false;false;63;95;191;;;
                                  -41928;1;0;false;false;;;;;;
                                  -41929;3;0;false;false;63;95;191;;;
                                  -41932;1;0;false;false;;;;;;
                                  -41933;4;0;false;false;63;95;191;;;
                                  -41937;1;0;false;false;;;;;;
                                  -41938;2;0;false;false;63;95;191;;;
                                  -41940;1;0;false;false;;;;;;
                                  -41941;3;0;false;false;63;95;191;;;
                                  -41944;1;0;false;false;;;;;;
                                  -41945;5;0;false;false;63;95;191;;;
                                  -41950;1;0;false;false;;;;;;
                                  -41951;5;0;false;false;63;95;191;;;
                                  -41956;1;0;false;false;;;;;;
                                  -41957;2;0;false;false;63;95;191;;;
                                  -41959;1;0;false;false;;;;;;
                                  -41960;5;0;false;false;63;95;191;;;
                                  -41965;1;0;false;false;;;;;;
                                  -41966;4;0;false;false;63;95;191;;;
                                  -41970;1;0;false;false;;;;;;
                                  -41971;3;0;false;false;63;95;191;;;
                                  -41974;1;0;false;false;;;;;;
                                  -41975;9;0;false;false;63;95;191;;;
                                  -41984;1;0;false;false;;;;;;
                                  -41985;6;0;false;false;63;95;191;;;
                                  -41991;4;0;false;false;;;;;;
                                  -41995;1;0;false;false;63;95;191;;;
                                  -41996;1;0;false;false;;;;;;
                                  -41997;5;0;false;false;63;95;191;;;
                                  -42002;1;0;false;false;;;;;;
                                  -42003;3;0;false;false;63;95;191;;;
                                  -42006;1;0;false;false;;;;;;
                                  -42007;7;0;false;false;63;95;191;;;
                                  -42014;1;0;false;false;;;;;;
                                  -42015;4;0;false;false;63;95;191;;;
                                  -42019;1;0;false;false;;;;;;
                                  -42020;5;0;false;false;63;95;191;;;
                                  -42025;1;0;false;false;;;;;;
                                  -42026;2;0;false;false;63;95;191;;;
                                  -42028;1;0;false;false;;;;;;
                                  -42029;8;0;false;false;63;95;191;;;
                                  -42037;4;0;false;false;;;;;;
                                  -42041;1;0;false;false;63;95;191;;;
                                  -42042;1;0;false;false;;;;;;
                                  -42043;3;0;false;false;127;127;159;;;
                                  -42046;4;0;false;false;;;;;;
                                  -42050;1;0;false;false;63;95;191;;;
                                  -42051;5;0;false;false;;;;;;
                                  -42056;1;0;false;false;63;95;191;;;
                                  -42057;1;0;false;false;;;;;;
                                  -42058;7;1;false;false;127;159;191;;;
                                  -42065;9;0;false;false;63;95;191;;;
                                  -42074;1;0;false;false;;;;;;
                                  -42075;5;0;false;false;63;95;191;;;
                                  -42080;1;0;false;false;;;;;;
                                  -42081;4;0;false;false;63;95;191;;;
                                  -42085;1;0;false;false;;;;;;
                                  -42086;2;0;false;false;63;95;191;;;
                                  -42088;1;0;false;false;;;;;;
                                  -42089;9;0;false;false;63;95;191;;;
                                  -42098;1;0;false;false;;;;;;
                                  -42099;3;0;false;false;63;95;191;;;
                                  -42102;1;0;false;false;;;;;;
                                  -42103;4;0;false;false;63;95;191;;;
                                  -42107;1;0;false;false;;;;;;
                                  -42108;5;0;false;false;63;95;191;;;
                                  -42113;1;0;false;false;;;;;;
                                  -42114;2;0;false;false;63;95;191;;;
                                  -42116;4;0;false;false;;;;;;
                                  -42120;1;0;false;false;63;95;191;;;
                                  -42121;1;0;false;false;;;;;;
                                  -42122;7;1;false;false;127;159;191;;;
                                  -42129;9;0;false;false;63;95;191;;;
                                  -42138;1;0;false;false;;;;;;
                                  -42139;6;0;false;false;63;95;191;;;
                                  -42145;1;0;false;false;;;;;;
                                  -42146;2;0;false;false;63;95;191;;;
                                  -42148;1;0;false;false;;;;;;
                                  -42149;5;0;false;false;63;95;191;;;
                                  -42154;1;0;false;false;;;;;;
                                  -42155;2;0;false;false;63;95;191;;;
                                  -42157;1;0;false;false;;;;;;
                                  -42158;9;0;false;false;63;95;191;;;
                                  -42167;1;0;false;false;;;;;;
                                  -42168;3;0;false;false;63;95;191;;;
                                  -42171;1;0;false;false;;;;;;
                                  -42172;4;0;false;false;63;95;191;;;
                                  -42176;1;0;false;false;;;;;;
                                  -42177;5;0;false;false;63;95;191;;;
                                  -42182;1;0;false;false;;;;;;
                                  -42183;3;0;false;false;63;95;191;;;
                                  -42186;4;0;false;false;;;;;;
                                  -42190;2;0;false;false;63;95;191;;;
                                  -42192;3;0;false;false;;;;;;
                                  -42195;6;1;false;false;127;0;85;;;
                                  -42201;1;0;false;false;;;;;;
                                  -42202;4;1;false;false;127;0;85;;;
                                  -42206;1;0;false;false;;;;;;
                                  -42207;10;0;false;false;0;0;0;;;
                                  -42217;3;1;false;false;127;0;85;;;
                                  -42220;1;0;false;false;;;;;;
                                  -42221;10;0;false;false;0;0;0;;;
                                  -42231;1;0;false;false;;;;;;
                                  -42232;3;1;false;false;127;0;85;;;
                                  -42235;1;0;false;false;;;;;;
                                  -42236;10;0;false;false;0;0;0;;;
                                  -42246;1;0;false;false;;;;;;
                                  -42247;1;0;false;false;0;0;0;;;
                                  -42248;4;0;false;false;;;;;;
                                  -42252;3;1;false;false;127;0;85;;;
                                  -42255;1;0;false;false;;;;;;
                                  -42256;10;0;false;false;0;0;0;;;
                                  -42266;1;0;false;false;;;;;;
                                  -42267;1;0;false;false;0;0;0;;;
                                  -42268;1;0;false;false;;;;;;
                                  -42269;2;0;false;false;0;0;0;;;
                                  -42271;4;0;false;false;;;;;;
                                  -42275;3;1;false;false;127;0;85;;;
                                  -42278;1;0;false;false;;;;;;
                                  -42279;7;0;false;false;0;0;0;;;
                                  -42286;1;0;false;false;;;;;;
                                  -42287;1;0;false;false;0;0;0;;;
                                  -42288;1;0;false;false;;;;;;
                                  -42289;9;0;false;false;0;0;0;;;
                                  -42298;1;0;false;false;;;;;;
                                  -42299;1;0;false;false;0;0;0;;;
                                  -42300;1;0;false;false;;;;;;
                                  -42301;10;0;false;false;0;0;0;;;
                                  -42311;9;0;false;false;;;;;;
                                  -42320;2;1;false;false;127;0;85;;;
                                  -42322;1;0;false;false;;;;;;
                                  -42323;10;0;false;false;0;0;0;;;
                                  -42333;1;0;false;false;;;;;;
                                  -42334;1;0;false;false;0;0;0;;;
                                  -42335;1;0;false;false;;;;;;
                                  -42336;1;0;false;false;0;0;0;;;
                                  -42337;1;0;false;false;;;;;;
                                  -42338;2;0;false;false;0;0;0;;;
                                  -42340;1;0;false;false;;;;;;
                                  -42341;7;0;false;false;0;0;0;;;
                                  -42348;1;0;false;false;;;;;;
                                  -42349;1;0;false;false;0;0;0;;;
                                  -42350;1;0;false;false;;;;;;
                                  -42351;17;0;false;false;0;0;0;;;
                                  -42368;1;0;false;false;;;;;;
                                  -42369;1;0;false;false;0;0;0;;;
                                  -42370;5;0;false;false;;;;;;
                                  -42375;6;1;false;false;127;0;85;;;
                                  -42381;1;0;false;false;0;0;0;;;
                                  -42382;4;0;false;false;;;;;;
                                  -42386;1;0;false;false;0;0;0;;;
                                  -42387;4;0;false;false;;;;;;
                                  -42391;10;0;false;false;0;0;0;;;
                                  -42401;1;0;false;false;;;;;;
                                  -42402;1;0;false;false;0;0;0;;;
                                  -42403;1;0;false;false;;;;;;
                                  -42404;16;0;false;false;0;0;0;;;
                                  -42420;4;0;false;false;;;;;;
                                  -42424;3;1;false;false;127;0;85;;;
                                  -42427;1;0;false;false;;;;;;
                                  -42428;1;0;false;false;0;0;0;;;
                                  -42429;3;1;false;false;127;0;85;;;
                                  -42432;1;0;false;false;;;;;;
                                  -42433;1;0;false;false;0;0;0;;;
                                  -42434;1;0;false;false;;;;;;
                                  -42435;1;0;false;false;0;0;0;;;
                                  -42436;1;0;false;false;;;;;;
                                  -42437;10;0;false;false;0;0;0;;;
                                  -42447;1;0;false;false;;;;;;
                                  -42448;1;0;false;false;0;0;0;;;
                                  -42449;1;0;false;false;;;;;;
                                  -42450;1;0;false;false;0;0;0;;;
                                  -42451;1;0;false;false;;;;;;
                                  -42452;8;0;false;false;0;0;0;;;
                                  -42460;1;0;false;false;;;;;;
                                  -42461;4;0;false;false;0;0;0;;;
                                  -42465;1;0;false;false;;;;;;
                                  -42466;1;0;false;false;0;0;0;;;
                                  -42467;5;0;false;false;;;;;;
                                  -42472;2;1;false;false;127;0;85;;;
                                  -42474;1;0;false;false;;;;;;
                                  -42475;13;0;false;false;0;0;0;;;
                                  -42488;1;0;false;false;;;;;;
                                  -42489;2;0;false;false;0;0;0;;;
                                  -42491;1;0;false;false;;;;;;
                                  -42492;3;0;false;false;0;0;0;;;
                                  -42495;1;0;false;false;;;;;;
                                  -42496;1;0;false;false;0;0;0;;;
                                  -42497;6;0;false;false;;;;;;
                                  -42503;6;0;false;false;0;0;0;;;
                                  -42509;1;0;false;false;;;;;;
                                  -42510;4;0;false;false;0;0;0;;;
                                  -42514;1;0;false;false;;;;;;
                                  -42515;1;0;false;false;0;0;0;;;
                                  -42516;1;0;false;false;;;;;;
                                  -42517;19;0;false;false;0;0;0;;;
                                  -42536;6;0;false;false;;;;;;
                                  -42542;3;1;false;false;127;0;85;;;
                                  -42545;1;0;false;false;;;;;;
                                  -42546;10;0;false;false;0;0;0;;;
                                  -42556;1;0;false;false;;;;;;
                                  -42557;1;0;false;false;0;0;0;;;
                                  -42558;1;0;false;false;;;;;;
                                  -42559;27;0;false;false;0;0;0;;;
                                  -42586;6;0;false;false;;;;;;
                                  -42592;12;0;false;false;0;0;0;;;
                                  -42604;1;0;false;false;;;;;;
                                  -42605;1;0;false;false;0;0;0;;;
                                  -42606;1;0;false;false;;;;;;
                                  -42607;18;0;false;false;0;0;0;;;
                                  -42625;1;0;false;false;;;;;;
                                  -42626;11;0;false;false;0;0;0;;;
                                  -42637;1;0;false;false;;;;;;
                                  -42638;1;0;false;false;0;0;0;;;
                                  -42639;1;0;false;false;;;;;;
                                  -42640;11;0;false;false;0;0;0;;;
                                  -42651;5;0;false;false;;;;;;
                                  -42656;1;0;false;false;0;0;0;;;
                                  -42657;5;0;false;false;;;;;;
                                  -42662;2;1;false;false;127;0;85;;;
                                  -42664;1;0;false;false;;;;;;
                                  -42665;13;0;false;false;0;0;0;;;
                                  -42678;1;0;false;false;;;;;;
                                  -42679;1;0;false;false;0;0;0;;;
                                  -42680;1;0;false;false;;;;;;
                                  -42681;9;0;false;false;0;0;0;;;
                                  -42690;1;0;false;false;;;;;;
                                  -42691;1;0;false;false;0;0;0;;;
                                  -42692;6;0;false;false;;;;;;
                                  -42698;8;0;false;false;0;0;0;;;
                                  -42706;1;0;false;false;;;;;;
                                  -42707;1;0;false;false;0;0;0;;;
                                  -42708;1;0;false;false;;;;;;
                                  -42709;13;0;false;false;0;0;0;;;
                                  -42722;6;0;false;false;;;;;;
                                  -42728;17;0;false;false;0;0;0;;;
                                  -42745;1;0;false;false;;;;;;
                                  -42746;1;0;false;false;0;0;0;;;
                                  -42747;1;0;false;false;;;;;;
                                  -42748;2;0;false;false;0;0;0;;;
                                  -42750;5;0;false;false;;;;;;
                                  -42755;1;0;false;false;0;0;0;;;
                                  -42756;4;0;false;false;;;;;;
                                  -42760;1;0;false;false;0;0;0;;;
                                  -42761;3;0;false;false;;;;;;
                                  -42764;1;0;false;false;0;0;0;;;
                                  -42765;3;0;false;false;;;;;;
                                  -42768;3;0;false;false;63;95;191;;;
                                  -42771;5;0;false;false;;;;;;
                                  -42776;1;0;false;false;63;95;191;;;
                                  -42777;1;0;false;false;;;;;;
                                  -42778;10;0;false;false;63;95;191;;;
                                  -42788;1;0;false;false;;;;;;
                                  -42789;3;0;false;false;63;95;191;;;
                                  -42792;1;0;false;false;;;;;;
                                  -42793;5;0;false;false;63;95;191;;;
                                  -42798;1;0;false;false;;;;;;
                                  -42799;2;0;false;false;63;95;191;;;
                                  -42801;1;0;false;false;;;;;;
                                  -42802;3;0;false;false;63;95;191;;;
                                  -42805;1;0;false;false;;;;;;
                                  -42806;7;0;false;false;63;95;191;;;
                                  -42813;1;0;false;false;;;;;;
                                  -42814;5;0;false;false;63;95;191;;;
                                  -42819;1;0;false;false;;;;;;
                                  -42820;2;0;false;false;63;95;191;;;
                                  -42822;1;0;false;false;;;;;;
                                  -42823;3;0;false;false;63;95;191;;;
                                  -42826;1;0;false;false;;;;;;
                                  -42827;9;0;false;false;63;95;191;;;
                                  -42836;5;0;false;false;;;;;;
                                  -42841;1;0;false;false;63;95;191;;;
                                  -42842;1;0;false;false;;;;;;
                                  -42843;6;0;false;false;63;95;191;;;
                                  -42849;4;0;false;false;;;;;;
                                  -42853;1;0;false;false;63;95;191;;;
                                  -42854;1;0;false;false;;;;;;
                                  -42855;3;0;false;false;127;127;159;;;
                                  -42858;4;0;false;false;;;;;;
                                  -42862;1;0;false;false;63;95;191;;;
                                  -42863;4;0;false;false;;;;;;
                                  -42867;1;0;false;false;63;95;191;;;
                                  -42868;1;0;false;false;;;;;;
                                  -42869;7;1;false;false;127;159;191;;;
                                  -42876;9;0;false;false;63;95;191;;;
                                  -42885;1;0;false;false;;;;;;
                                  -42886;3;0;false;false;63;95;191;;;
                                  -42889;1;0;false;false;;;;;;
                                  -42890;5;0;false;false;63;95;191;;;
                                  -42895;1;0;false;false;;;;;;
                                  -42896;7;0;false;false;63;95;191;;;
                                  -42903;1;0;false;false;;;;;;
                                  -42904;4;0;false;false;63;95;191;;;
                                  -42908;4;0;false;false;;;;;;
                                  -42912;1;0;false;false;63;95;191;;;
                                  -42913;1;0;false;false;;;;;;
                                  -42914;7;1;false;false;127;159;191;;;
                                  -42921;12;0;false;false;63;95;191;;;
                                  -42933;1;0;false;false;;;;;;
                                  -42934;3;0;false;false;63;95;191;;;
                                  -42937;1;0;false;false;;;;;;
                                  -42938;6;0;false;false;63;95;191;;;
                                  -42944;1;0;false;false;;;;;;
                                  -42945;2;0;false;false;63;95;191;;;
                                  -42947;1;0;false;false;;;;;;
                                  -42948;8;0;false;false;63;95;191;;;
                                  -42956;1;0;false;false;;;;;;
                                  -42957;5;0;false;false;63;95;191;;;
                                  -42962;4;0;false;false;;;;;;
                                  -42966;2;0;false;false;63;95;191;;;
                                  -42968;5;0;false;false;;;;;;
                                  -42973;4;1;false;false;127;0;85;;;
                                  -42977;1;0;false;false;;;;;;
                                  -42978;17;0;false;false;0;0;0;;;
                                  -42995;3;1;false;false;127;0;85;;;
                                  -42998;1;0;false;false;;;;;;
                                  -42999;10;0;false;false;0;0;0;;;
                                  -43009;1;0;false;false;;;;;;
                                  -43010;3;1;false;false;127;0;85;;;
                                  -43013;1;0;false;false;;;;;;
                                  -43014;13;0;false;false;0;0;0;;;
                                  -43027;1;0;false;false;;;;;;
                                  -43028;1;0;false;false;0;0;0;;;
                                  -43029;4;0;false;false;;;;;;
                                  -43033;3;1;false;false;127;0;85;;;
                                  -43036;1;0;false;false;;;;;;
                                  -43037;8;0;false;false;0;0;0;;;
                                  -43045;1;0;false;false;;;;;;
                                  -43046;1;0;false;false;0;0;0;;;
                                  -43047;1;0;false;false;;;;;;
                                  -43048;21;0;false;false;0;0;0;;;
                                  -43069;4;0;false;false;;;;;;
                                  -43073;3;1;false;false;127;0;85;;;
                                  -43076;1;0;false;false;;;;;;
                                  -43077;10;0;false;false;0;0;0;;;
                                  -43087;1;0;false;false;;;;;;
                                  -43088;1;0;false;false;0;0;0;;;
                                  -43089;1;0;false;false;;;;;;
                                  -43090;33;0;false;false;0;0;0;;;
                                  -43123;1;0;false;false;;;;;;
                                  -43124;9;0;false;false;0;0;0;;;
                                  -43133;1;0;false;false;;;;;;
                                  -43134;1;0;false;false;0;0;0;;;
                                  -43135;1;0;false;false;;;;;;
                                  -43136;14;0;false;false;0;0;0;;;
                                  -43150;8;0;false;false;;;;;;
                                  -43158;9;0;false;false;0;0;0;;;
                                  -43167;1;0;false;false;;;;;;
                                  -43168;1;0;false;false;0;0;0;;;
                                  -43169;1;0;false;false;;;;;;
                                  -43170;19;0;false;false;0;0;0;;;
                                  -43189;1;0;false;false;;;;;;
                                  -43190;10;0;false;false;0;0;0;;;
                                  -43200;4;0;false;false;;;;;;
                                  -43204;20;0;false;false;0;0;0;;;
                                  -43224;1;0;false;false;;;;;;
                                  -43225;10;0;false;false;0;0;0;;;
                                  -43235;1;0;false;false;;;;;;
                                  -43236;1;0;false;false;0;0;0;;;
                                  -43237;1;0;false;false;;;;;;
                                  -43238;9;0;false;false;0;0;0;;;
                                  -43247;1;0;false;false;;;;;;
                                  -43248;1;0;false;false;0;0;0;;;
                                  -43249;1;0;false;false;;;;;;
                                  -43250;3;0;false;false;0;0;0;;;
                                  -43253;3;0;false;false;;;;;;
                                  -43256;1;0;false;false;0;0;0;;;
                                  -43257;3;0;false;false;;;;;;
                                  -43260;3;0;false;false;63;95;191;;;
                                  -43263;4;0;false;false;;;;;;
                                  -43267;1;0;false;false;63;95;191;;;
                                  -43268;1;0;false;false;;;;;;
                                  -43269;8;0;false;false;63;95;191;;;
                                  -43277;1;0;false;false;;;;;;
                                  -43278;3;0;false;false;63;95;191;;;
                                  -43281;1;0;false;false;;;;;;
                                  -43282;5;0;false;false;63;95;191;;;
                                  -43287;1;0;false;false;;;;;;
                                  -43288;2;0;false;false;63;95;191;;;
                                  -43290;1;0;false;false;;;;;;
                                  -43291;3;0;false;false;63;95;191;;;
                                  -43294;1;0;false;false;;;;;;
                                  -43295;5;0;false;false;63;95;191;;;
                                  -43300;1;0;false;false;;;;;;
                                  -43301;5;0;false;false;63;95;191;;;
                                  -43306;4;0;false;false;;;;;;
                                  -43310;1;0;false;false;63;95;191;;;
                                  -43311;1;0;false;false;;;;;;
                                  -43312;3;0;false;false;127;127;159;;;
                                  -43315;4;0;false;false;;;;;;
                                  -43319;1;0;false;false;63;95;191;;;
                                  -43320;5;0;false;false;;;;;;
                                  -43325;1;0;false;false;63;95;191;;;
                                  -43326;1;0;false;false;;;;;;
                                  -43327;7;1;false;false;127;159;191;;;
                                  -43334;4;0;false;false;63;95;191;;;
                                  -43338;1;0;false;false;;;;;;
                                  -43339;3;0;false;false;63;95;191;;;
                                  -43342;1;0;false;false;;;;;;
                                  -43343;4;0;false;false;63;95;191;;;
                                  -43347;1;0;false;false;;;;;;
                                  -43348;2;0;false;false;63;95;191;;;
                                  -43350;1;0;false;false;;;;;;
                                  -43351;7;0;false;false;63;95;191;;;
                                  -43358;4;0;false;false;;;;;;
                                  -43362;1;0;false;false;63;95;191;;;
                                  -43363;1;0;false;false;;;;;;
                                  -43364;7;1;false;false;127;159;191;;;
                                  -43371;10;0;false;false;63;95;191;;;
                                  -43381;1;0;false;false;;;;;;
                                  -43382;5;0;false;false;63;95;191;;;
                                  -43387;1;0;false;false;;;;;;
                                  -43388;6;0;false;false;63;95;191;;;
                                  -43394;1;0;false;false;;;;;;
                                  -43395;2;0;false;false;63;95;191;;;
                                  -43397;1;0;false;false;;;;;;
                                  -43398;3;0;false;false;63;95;191;;;
                                  -43401;1;0;false;false;;;;;;
                                  -43402;4;0;false;false;63;95;191;;;
                                  -43406;1;0;false;false;;;;;;
                                  -43407;2;0;false;false;63;95;191;;;
                                  -43409;1;0;false;false;;;;;;
                                  -43410;8;0;false;false;63;95;191;;;
                                  -43418;1;0;false;false;;;;;;
                                  -43419;8;0;false;false;63;95;191;;;
                                  -43427;5;0;false;false;;;;;;
                                  -43432;1;0;false;false;63;95;191;;;
                                  -43433;2;0;false;false;;;;;;
                                  -43435;2;0;false;false;63;95;191;;;
                                  -43437;1;0;false;false;;;;;;
                                  -43438;3;0;false;false;63;95;191;;;
                                  -43441;1;0;false;false;;;;;;
                                  -43442;5;0;false;false;63;95;191;;;
                                  -43447;1;0;false;false;;;;;;
                                  -43448;2;0;false;false;63;95;191;;;
                                  -43450;1;0;false;false;;;;;;
                                  -43451;3;0;false;false;63;95;191;;;
                                  -43454;1;0;false;false;;;;;;
                                  -43455;8;0;false;false;63;95;191;;;
                                  -43463;4;0;false;false;;;;;;
                                  -43467;1;0;false;false;63;95;191;;;
                                  -43468;1;0;false;false;;;;;;
                                  -43469;8;1;false;false;127;159;191;;;
                                  -43477;3;0;false;false;63;95;191;;;
                                  -43480;1;0;false;false;;;;;;
                                  -43481;5;0;false;false;63;95;191;;;
                                  -43486;1;0;false;false;;;;;;
                                  -43487;2;0;false;false;63;95;191;;;
                                  -43489;1;0;false;false;;;;;;
                                  -43490;3;0;false;false;63;95;191;;;
                                  -43493;1;0;false;false;;;;;;
                                  -43494;5;0;false;false;63;95;191;;;
                                  -43499;1;0;false;false;;;;;;
                                  -43500;4;0;false;false;63;95;191;;;
                                  -43504;4;0;false;false;;;;;;
                                  -43508;2;0;false;false;63;95;191;;;
                                  -43510;3;0;false;false;;;;;;
                                  -43513;3;1;false;false;127;0;85;;;
                                  -43516;1;0;false;false;;;;;;
                                  -43517;19;0;false;false;0;0;0;;;
                                  -43536;1;0;false;false;;;;;;
                                  -43537;5;0;false;false;0;0;0;;;
                                  -43542;1;0;false;false;;;;;;
                                  -43543;3;1;false;false;127;0;85;;;
                                  -43546;1;0;false;false;;;;;;
                                  -43547;11;0;false;false;0;0;0;;;
                                  -43558;1;0;false;false;;;;;;
                                  -43559;1;0;false;false;0;0;0;;;
                                  -43560;4;0;false;false;;;;;;
                                  -43564;10;0;false;false;0;0;0;;;
                                  -43574;1;0;false;false;;;;;;
                                  -43575;6;0;false;false;0;0;0;;;
                                  -43581;1;0;false;false;;;;;;
                                  -43582;1;0;false;false;0;0;0;;;
                                  -43583;1;0;false;false;;;;;;
                                  -43584;28;0;false;false;0;0;0;;;
                                  -43612;1;0;false;false;;;;;;
                                  -43613;12;0;false;false;0;0;0;;;
                                  -43625;4;0;false;false;;;;;;
                                  -43629;9;0;false;false;0;0;0;;;
                                  -43638;1;0;false;false;;;;;;
                                  -43639;4;0;false;false;0;0;0;;;
                                  -43643;1;0;false;false;;;;;;
                                  -43644;1;0;false;false;0;0;0;;;
                                  -43645;1;0;false;false;;;;;;
                                  -43646;24;0;false;false;0;0;0;;;
                                  -43670;4;0;false;false;;;;;;
                                  -43674;35;0;false;false;0;0;0;;;
                                  -43709;4;0;false;false;;;;;;
                                  -43713;6;1;false;false;127;0;85;;;
                                  -43719;1;0;false;false;;;;;;
                                  -43720;6;0;false;false;0;0;0;;;
                                  -43726;1;0;false;false;;;;;;
                                  -43727;1;0;false;false;0;0;0;;;
                                  -43728;1;0;false;false;;;;;;
                                  -43729;10;0;false;false;0;0;0;;;
                                  -43739;1;0;false;false;;;;;;
                                  -43740;1;0;false;false;0;0;0;;;
                                  -43741;1;0;false;false;;;;;;
                                  -43742;10;0;false;false;0;0;0;;;
                                  -43752;1;0;false;false;;;;;;
                                  -43753;1;0;false;false;0;0;0;;;
                                  -43754;1;0;false;false;;;;;;
                                  -43755;12;0;false;false;0;0;0;;;
                                  -43767;3;0;false;false;;;;;;
                                  -43770;1;0;false;false;0;0;0;;;
                                  -43771;3;0;false;false;;;;;;
                                  -43774;3;0;false;false;63;95;191;;;
                                  -43777;4;0;false;false;;;;;;
                                  -43781;1;0;false;false;63;95;191;;;
                                  -43782;1;0;false;false;;;;;;
                                  -43783;5;0;false;false;63;95;191;;;
                                  -43788;1;0;false;false;;;;;;
                                  -43789;3;0;false;false;63;95;191;;;
                                  -43792;1;0;false;false;;;;;;
                                  -43793;6;0;false;false;127;127;159;;;
                                  -43799;9;0;false;false;63;95;191;;;
                                  -43808;7;0;false;false;127;127;159;;;
                                  -43815;1;0;false;false;;;;;;
                                  -43816;5;0;false;false;63;95;191;;;
                                  -43821;1;0;false;false;;;;;;
                                  -43822;2;0;false;false;63;95;191;;;
                                  -43824;1;0;false;false;;;;;;
                                  -43825;10;0;false;false;63;95;191;;;
                                  -43835;1;0;false;false;;;;;;
                                  -43836;3;0;false;false;63;95;191;;;
                                  -43839;1;0;false;false;;;;;;
                                  -43840;4;0;false;false;63;95;191;;;
                                  -43844;1;0;false;false;;;;;;
                                  -43845;5;0;false;false;63;95;191;;;
                                  -43850;4;0;false;false;;;;;;
                                  -43854;1;0;false;false;63;95;191;;;
                                  -43855;1;0;false;false;;;;;;
                                  -43856;12;0;false;false;63;95;191;;;
                                  -43868;4;0;false;false;;;;;;
                                  -43872;1;0;false;false;63;95;191;;;
                                  -43873;1;0;false;false;;;;;;
                                  -43874;3;0;false;false;127;127;159;;;
                                  -43877;4;0;false;false;;;;;;
                                  -43881;1;0;false;false;63;95;191;;;
                                  -43882;4;0;false;false;;;;;;
                                  -43886;1;0;false;false;63;95;191;;;
                                  -43887;1;0;false;false;;;;;;
                                  -43888;7;1;false;false;127;159;191;;;
                                  -43895;8;0;false;false;63;95;191;;;
                                  -43903;1;0;false;false;;;;;;
                                  -43904;3;0;false;false;63;95;191;;;
                                  -43907;1;0;false;false;;;;;;
                                  -43908;6;0;false;false;63;95;191;;;
                                  -43914;1;0;false;false;;;;;;
                                  -43915;2;0;false;false;63;95;191;;;
                                  -43917;1;0;false;false;;;;;;
                                  -43918;8;0;false;false;63;95;191;;;
                                  -43926;1;0;false;false;;;;;;
                                  -43927;2;0;false;false;63;95;191;;;
                                  -43929;1;0;false;false;;;;;;
                                  -43930;8;0;false;false;63;95;191;;;
                                  -43938;1;0;false;false;;;;;;
                                  -43939;3;0;false;false;63;95;191;;;
                                  -43942;1;0;false;false;;;;;;
                                  -43943;5;0;false;false;63;95;191;;;
                                  -43948;1;0;false;false;;;;;;
                                  -43949;2;0;false;false;63;95;191;;;
                                  -43951;4;0;false;false;;;;;;
                                  -43955;2;0;false;false;63;95;191;;;
                                  -43957;3;0;false;false;;;;;;
                                  -43960;4;1;false;false;127;0;85;;;
                                  -43964;1;0;false;false;;;;;;
                                  -43965;12;0;false;false;0;0;0;;;
                                  -43977;3;1;false;false;127;0;85;;;
                                  -43980;1;0;false;false;;;;;;
                                  -43981;9;0;false;false;0;0;0;;;
                                  -43990;1;0;false;false;;;;;;
                                  -43991;1;0;false;false;0;0;0;;;
                                  -43992;4;0;false;false;;;;;;
                                  -43996;3;1;false;false;127;0;85;;;
                                  -43999;1;0;false;false;;;;;;
                                  -44000;4;0;false;false;0;0;0;;;
                                  -44004;1;0;false;false;;;;;;
                                  -44005;1;0;false;false;0;0;0;;;
                                  -44006;1;0;false;false;;;;;;
                                  -44007;17;0;false;false;0;0;0;;;
                                  -44024;4;0;false;false;;;;;;
                                  -44028;2;1;false;false;127;0;85;;;
                                  -44030;1;0;false;false;;;;;;
                                  -44031;5;0;false;false;0;0;0;;;
                                  -44036;1;0;false;false;;;;;;
                                  -44037;1;0;false;false;0;0;0;;;
                                  -44038;1;0;false;false;;;;;;
                                  -44039;9;0;false;false;0;0;0;;;
                                  -44048;1;0;false;false;;;;;;
                                  -44049;2;0;false;false;0;0;0;;;
                                  -44051;1;0;false;false;;;;;;
                                  -44052;9;0;false;false;0;0;0;;;
                                  -44061;1;0;false;false;;;;;;
                                  -44062;1;0;false;false;0;0;0;;;
                                  -44063;5;0;false;false;;;;;;
                                  -44068;6;1;false;false;127;0;85;;;
                                  -44074;1;0;false;false;0;0;0;;;
                                  -44075;4;0;false;false;;;;;;
                                  -44079;1;0;false;false;0;0;0;;;
                                  -44080;4;0;false;false;;;;;;
                                  -44084;3;1;false;false;127;0;85;;;
                                  -44087;2;0;false;false;0;0;0;;;
                                  -44089;1;0;false;false;;;;;;
                                  -44090;8;0;false;false;0;0;0;;;
                                  -44098;1;0;false;false;;;;;;
                                  -44099;1;0;false;false;0;0;0;;;
                                  -44100;1;0;false;false;;;;;;
                                  -44101;3;1;false;false;127;0;85;;;
                                  -44104;1;0;false;false;;;;;;
                                  -44105;3;1;false;false;127;0;85;;;
                                  -44108;14;0;false;false;0;0;0;;;
                                  -44122;1;0;false;false;;;;;;
                                  -44123;1;0;false;false;0;0;0;;;
                                  -44124;1;0;false;false;;;;;;
                                  -44125;2;0;false;false;0;0;0;;;
                                  -44127;1;0;false;false;;;;;;
                                  -44128;4;0;false;false;0;0;0;;;
                                  -44132;1;0;false;false;;;;;;
                                  -44133;1;0;false;false;0;0;0;;;
                                  -44134;1;0;false;false;;;;;;
                                  -44135;11;0;false;false;0;0;0;;;
                                  -44146;4;0;false;false;;;;;;
                                  -44150;27;0;false;false;0;0;0;;;
                                  -44177;1;0;false;false;;;;;;
                                  -44178;2;0;false;false;0;0;0;;;
                                  -44180;1;0;false;false;;;;;;
                                  -44181;9;0;false;false;0;0;0;;;
                                  -44190;1;0;false;false;;;;;;
                                  -44191;2;0;false;false;0;0;0;;;
                                  -44193;1;0;false;false;;;;;;
                                  -44194;6;0;false;false;0;0;0;;;
                                  -44200;4;0;false;false;;;;;;
                                  -44204;9;0;false;false;0;0;0;;;
                                  -44213;1;0;false;false;;;;;;
                                  -44214;1;0;false;false;0;0;0;;;
                                  -44215;1;0;false;false;;;;;;
                                  -44216;9;0;false;false;0;0;0;;;
                                  -44225;4;0;false;false;;;;;;
                                  -44229;11;0;false;false;0;0;0;;;
                                  -44240;1;0;false;false;;;;;;
                                  -44241;16;0;false;false;0;0;0;;;
                                  -44257;1;0;false;false;;;;;;
                                  -44258;1;0;false;false;0;0;0;;;
                                  -44259;1;0;false;false;;;;;;
                                  -44260;5;0;false;false;0;0;0;;;
                                  -44265;1;0;false;false;;;;;;
                                  -44266;5;1;false;false;127;0;85;;;
                                  -44271;2;0;false;false;0;0;0;;;
                                  -44273;3;0;false;false;;;;;;
                                  -44276;1;0;false;false;0;0;0;;;
                                  -44277;3;0;false;false;;;;;;
                                  -44280;3;0;false;false;63;95;191;;;
                                  -44283;4;0;false;false;;;;;;
                                  -44287;1;0;false;false;63;95;191;;;
                                  -44288;1;0;false;false;;;;;;
                                  -44289;7;0;false;false;63;95;191;;;
                                  -44296;1;0;false;false;;;;;;
                                  -44297;3;0;false;false;63;95;191;;;
                                  -44300;1;0;false;false;;;;;;
                                  -44301;5;0;false;false;63;95;191;;;
                                  -44306;1;0;false;false;;;;;;
                                  -44307;2;0;false;false;63;95;191;;;
                                  -44309;1;0;false;false;;;;;;
                                  -44310;3;0;false;false;63;95;191;;;
                                  -44313;1;0;false;false;;;;;;
                                  -44314;7;0;false;false;63;95;191;;;
                                  -44321;1;0;false;false;;;;;;
                                  -44322;8;0;false;false;63;95;191;;;
                                  -44330;1;0;false;false;;;;;;
                                  -44331;5;0;false;false;63;95;191;;;
                                  -44336;4;0;false;false;;;;;;
                                  -44340;1;0;false;false;63;95;191;;;
                                  -44341;1;0;false;false;;;;;;
                                  -44342;3;0;false;false;127;127;159;;;
                                  -44345;4;0;false;false;;;;;;
                                  -44349;1;0;false;false;63;95;191;;;
                                  -44350;4;0;false;false;;;;;;
                                  -44354;1;0;false;false;63;95;191;;;
                                  -44355;1;0;false;false;;;;;;
                                  -44356;8;1;false;false;127;159;191;;;
                                  -44364;3;0;false;false;63;95;191;;;
                                  -44367;1;0;false;false;;;;;;
                                  -44368;5;0;false;false;63;95;191;;;
                                  -44373;1;0;false;false;;;;;;
                                  -44374;2;0;false;false;63;95;191;;;
                                  -44376;1;0;false;false;;;;;;
                                  -44377;3;0;false;false;63;95;191;;;
                                  -44380;1;0;false;false;;;;;;
                                  -44381;7;0;false;false;63;95;191;;;
                                  -44388;1;0;false;false;;;;;;
                                  -44389;8;0;false;false;63;95;191;;;
                                  -44397;1;0;false;false;;;;;;
                                  -44398;5;0;false;false;63;95;191;;;
                                  -44403;4;0;false;false;;;;;;
                                  -44407;2;0;false;false;63;95;191;;;
                                  -44409;3;0;false;false;;;;;;
                                  -44412;6;1;false;false;127;0;85;;;
                                  -44418;1;0;false;false;;;;;;
                                  -44419;3;1;false;false;127;0;85;;;
                                  -44422;1;0;false;false;;;;;;
                                  -44423;10;0;false;false;0;0;0;;;
                                  -44433;1;0;false;false;;;;;;
                                  -44434;1;0;false;false;0;0;0;;;
                                  -44435;4;0;false;false;;;;;;
                                  -44439;6;1;false;false;127;0;85;;;
                                  -44445;1;0;false;false;;;;;;
                                  -44446;9;0;false;false;0;0;0;;;
                                  -44455;3;0;false;false;;;;;;
                                  -44458;1;0;false;false;0;0;0;;;
                                  -44459;3;0;false;false;;;;;;
                                  -44462;3;0;false;false;63;95;191;;;
                                  -44465;4;0;false;false;;;;;;
                                  -44469;1;0;false;false;63;95;191;;;
                                  -44470;1;0;false;false;;;;;;
                                  -44471;7;0;false;false;63;95;191;;;
                                  -44478;1;0;false;false;;;;;;
                                  -44479;3;0;false;false;63;95;191;;;
                                  -44482;1;0;false;false;;;;;;
                                  -44483;4;0;false;false;63;95;191;;;
                                  -44487;1;0;false;false;;;;;;
                                  -44488;5;0;false;false;63;95;191;;;
                                  -44493;1;0;false;false;;;;;;
                                  -44494;5;0;false;false;63;95;191;;;
                                  -44499;1;0;false;false;;;;;;
                                  -44500;2;0;false;false;63;95;191;;;
                                  -44502;1;0;false;false;;;;;;
                                  -44503;7;0;false;false;63;95;191;;;
                                  -44510;1;0;false;false;;;;;;
                                  -44511;8;0;false;false;63;95;191;;;
                                  -44519;1;0;false;false;;;;;;
                                  -44520;2;0;false;false;63;95;191;;;
                                  -44522;1;0;false;false;;;;;;
                                  -44523;7;0;false;false;63;95;191;;;
                                  -44530;1;0;false;false;;;;;;
                                  -44531;6;0;false;false;63;95;191;;;
                                  -44537;4;0;false;false;;;;;;
                                  -44541;1;0;false;false;63;95;191;;;
                                  -44542;1;0;false;false;;;;;;
                                  -44543;3;0;false;false;127;127;159;;;
                                  -44546;4;0;false;false;;;;;;
                                  -44550;1;0;false;false;63;95;191;;;
                                  -44551;4;0;false;false;;;;;;
                                  -44555;1;0;false;false;63;95;191;;;
                                  -44556;1;0;false;false;;;;;;
                                  -44557;7;1;false;false;127;159;191;;;
                                  -44564;9;0;false;false;63;95;191;;;
                                  -44573;1;0;false;false;;;;;;
                                  -44574;3;0;false;false;63;95;191;;;
                                  -44577;1;0;false;false;;;;;;
                                  -44578;8;0;false;false;63;95;191;;;
                                  -44586;1;0;false;false;;;;;;
                                  -44587;4;0;false;false;63;95;191;;;
                                  -44591;1;0;false;false;;;;;;
                                  -44592;2;0;false;false;63;95;191;;;
                                  -44594;1;0;false;false;;;;;;
                                  -44595;3;0;false;false;63;95;191;;;
                                  -44598;1;0;false;false;;;;;;
                                  -44599;6;0;false;false;63;95;191;;;
                                  -44605;1;0;false;false;;;;;;
                                  -44606;4;0;false;false;63;95;191;;;
                                  -44610;1;0;false;false;;;;;;
                                  -44611;4;0;false;false;63;95;191;;;
                                  -44615;1;0;false;false;;;;;;
                                  -44616;5;0;false;false;63;95;191;;;
                                  -44621;4;0;false;false;;;;;;
                                  -44625;1;0;false;false;63;95;191;;;
                                  -44626;1;0;false;false;;;;;;
                                  -44627;7;1;false;false;127;159;191;;;
                                  -44634;5;0;false;false;63;95;191;;;
                                  -44639;1;0;false;false;;;;;;
                                  -44640;3;0;false;false;63;95;191;;;
                                  -44643;1;0;false;false;;;;;;
                                  -44644;6;0;false;false;63;95;191;;;
                                  -44650;1;0;false;false;;;;;;
                                  -44651;2;0;false;false;63;95;191;;;
                                  -44653;1;0;false;false;;;;;;
                                  -44654;5;0;false;false;63;95;191;;;
                                  -44659;1;0;false;false;;;;;;
                                  -44660;2;0;false;false;63;95;191;;;
                                  -44662;1;0;false;false;;;;;;
                                  -44663;3;0;false;false;63;95;191;;;
                                  -44666;1;0;false;false;;;;;;
                                  -44667;7;0;false;false;63;95;191;;;
                                  -44674;1;0;false;false;;;;;;
                                  -44675;1;0;false;false;63;95;191;;;
                                  -44676;1;0;false;false;;;;;;
                                  -44677;1;0;false;false;63;95;191;;;
                                  -44678;1;0;false;false;;;;;;
                                  -44679;9;0;false;false;63;95;191;;;
                                  -44688;1;0;false;false;;;;;;
                                  -44689;5;0;false;false;63;95;191;;;
                                  -44694;1;0;false;false;;;;;;
                                  -44695;9;0;false;false;63;95;191;;;
                                  -44704;4;0;false;false;;;;;;
                                  -44708;1;0;false;false;63;95;191;;;
                                  -44709;2;0;false;false;;;;;;
                                  -44711;29;0;false;false;63;95;191;;;
                                  -44740;2;0;false;false;;;;;;
                                  -44742;2;0;false;false;63;95;191;;;
                                  -44744;3;0;false;false;;;;;;
                                  -44747;4;1;false;false;127;0;85;;;
                                  -44751;1;0;false;false;;;;;;
                                  -44752;13;0;false;false;0;0;0;;;
                                  -44765;3;1;false;false;127;0;85;;;
                                  -44768;1;0;false;false;;;;;;
                                  -44769;10;0;false;false;0;0;0;;;
                                  -44779;1;0;false;false;;;;;;
                                  -44780;3;1;false;false;127;0;85;;;
                                  -44783;1;0;false;false;;;;;;
                                  -44784;6;0;false;false;0;0;0;;;
                                  -44790;1;0;false;false;;;;;;
                                  -44791;1;0;false;false;0;0;0;;;
                                  -44792;4;0;false;false;;;;;;
                                  -44796;7;1;false;false;127;0;85;;;
                                  -44803;1;0;false;false;;;;;;
                                  -44804;9;0;false;false;0;0;0;;;
                                  -44813;1;0;false;false;;;;;;
                                  -44814;1;0;false;false;0;0;0;;;
                                  -44815;1;0;false;false;;;;;;
                                  -44816;5;0;false;false;0;0;0;;;
                                  -44821;1;0;false;false;;;;;;
                                  -44822;1;0;false;false;0;0;0;;;
                                  -44823;1;0;false;false;;;;;;
                                  -44824;2;0;false;false;0;0;0;;;
                                  -44826;8;0;false;false;;;;;;
                                  -44834;2;1;false;false;127;0;85;;;
                                  -44836;1;0;false;false;;;;;;
                                  -44837;6;0;false;false;0;0;0;;;
                                  -44843;1;0;false;false;;;;;;
                                  -44844;2;0;false;false;0;0;0;;;
                                  -44846;1;0;false;false;;;;;;
                                  -44847;2;0;false;false;0;0;0;;;
                                  -44849;1;0;false;false;;;;;;
                                  -44850;1;0;false;false;0;0;0;;;
                                  -44851;5;0;false;false;;;;;;
                                  -44856;6;1;false;false;127;0;85;;;
                                  -44862;1;0;false;false;0;0;0;;;
                                  -44863;4;0;false;false;;;;;;
                                  -44867;1;0;false;false;0;0;0;;;
                                  -44868;4;0;false;false;;;;;;
                                  -44872;2;1;false;false;127;0;85;;;
                                  -44874;1;0;false;false;;;;;;
                                  -44875;11;0;false;false;0;0;0;;;
                                  -44886;1;0;false;false;;;;;;
                                  -44887;1;0;false;false;0;0;0;;;
                                  -44888;5;0;false;false;;;;;;
                                  -44893;52;0;false;false;63;127;95;;;
                                  -44945;3;0;false;false;;;;;;
                                  -44948;19;0;false;false;0;0;0;;;
                                  -44967;5;0;false;false;;;;;;
                                  -44972;3;1;false;false;127;0;85;;;
                                  -44975;1;0;false;false;;;;;;
                                  -44976;1;0;false;false;0;0;0;;;
                                  -44977;3;1;false;false;127;0;85;;;
                                  -44980;1;0;false;false;;;;;;
                                  -44981;1;0;false;false;0;0;0;;;
                                  -44982;1;0;false;false;;;;;;
                                  -44983;1;0;false;false;0;0;0;;;
                                  -44984;1;0;false;false;;;;;;
                                  -44985;9;0;false;false;0;0;0;;;
                                  -44994;1;0;false;false;;;;;;
                                  -44995;1;0;false;false;0;0;0;;;
                                  -44996;1;0;false;false;;;;;;
                                  -44997;2;0;false;false;0;0;0;;;
                                  -44999;1;0;false;false;;;;;;
                                  -45000;1;0;false;false;0;0;0;;;
                                  -45001;1;0;false;false;;;;;;
                                  -45002;2;0;false;false;0;0;0;;;
                                  -45004;1;0;false;false;;;;;;
                                  -45005;10;0;false;false;0;0;0;;;
                                  -45015;1;0;false;false;;;;;;
                                  -45016;4;0;false;false;0;0;0;;;
                                  -45020;1;0;false;false;;;;;;
                                  -45021;1;0;false;false;0;0;0;;;
                                  -45022;6;0;false;false;;;;;;
                                  -45028;11;0;false;false;0;0;0;;;
                                  -45039;1;0;false;false;;;;;;
                                  -45040;1;0;false;false;0;0;0;;;
                                  -45041;1;0;false;false;;;;;;
                                  -45042;6;0;false;false;0;0;0;;;
                                  -45048;1;0;false;false;;;;;;
                                  -45049;1;0;false;false;0;0;0;;;
                                  -45050;1;0;false;false;;;;;;
                                  -45051;13;0;false;false;0;0;0;;;
                                  -45064;5;0;false;false;;;;;;
                                  -45069;1;0;false;false;0;0;0;;;
                                  -45070;5;0;false;false;;;;;;
                                  -45075;24;0;false;false;63;127;95;;;
                                  -45099;3;0;false;false;;;;;;
                                  -45102;3;1;false;false;127;0;85;;;
                                  -45105;1;0;false;false;;;;;;
                                  -45106;1;0;false;false;0;0;0;;;
                                  -45107;3;1;false;false;127;0;85;;;
                                  -45110;1;0;false;false;;;;;;
                                  -45111;1;0;false;false;0;0;0;;;
                                  -45112;1;0;false;false;;;;;;
                                  -45113;1;0;false;false;0;0;0;;;
                                  -45114;1;0;false;false;;;;;;
                                  -45115;9;0;false;false;0;0;0;;;
                                  -45124;1;0;false;false;;;;;;
                                  -45125;1;0;false;false;0;0;0;;;
                                  -45126;1;0;false;false;;;;;;
                                  -45127;2;0;false;false;0;0;0;;;
                                  -45129;1;0;false;false;;;;;;
                                  -45130;1;0;false;false;0;0;0;;;
                                  -45131;1;0;false;false;;;;;;
                                  -45132;2;0;false;false;0;0;0;;;
                                  -45134;1;0;false;false;;;;;;
                                  -45135;9;0;false;false;0;0;0;;;
                                  -45144;1;0;false;false;;;;;;
                                  -45145;1;0;false;false;0;0;0;;;
                                  -45146;1;0;false;false;;;;;;
                                  -45147;5;0;false;false;0;0;0;;;
                                  -45152;1;0;false;false;;;;;;
                                  -45153;2;0;false;false;0;0;0;;;
                                  -45155;1;0;false;false;;;;;;
                                  -45156;1;0;false;false;0;0;0;;;
                                  -45157;1;0;false;false;;;;;;
                                  -45158;1;0;false;false;0;0;0;;;
                                  -45159;1;0;false;false;;;;;;
                                  -45160;17;0;false;false;0;0;0;;;
                                  -45177;1;0;false;false;;;;;;
                                  -45178;4;0;false;false;0;0;0;;;
                                  -45182;1;0;false;false;;;;;;
                                  -45183;1;0;false;false;0;0;0;;;
                                  -45184;6;0;false;false;;;;;;
                                  -45190;12;0;false;false;0;0;0;;;
                                  -45202;1;0;false;false;;;;;;
                                  -45203;1;0;false;false;0;0;0;;;
                                  -45204;1;0;false;false;;;;;;
                                  -45205;3;0;false;false;0;0;0;;;
                                  -45208;5;0;false;false;;;;;;
                                  -45213;1;0;false;false;0;0;0;;;
                                  -45214;5;0;false;false;;;;;;
                                  -45219;57;0;false;false;63;127;95;;;
                                  -45276;3;0;false;false;;;;;;
                                  -45279;2;1;false;false;127;0;85;;;
                                  -45281;1;0;false;false;;;;;;
                                  -45282;18;0;false;false;0;0;0;;;
                                  -45300;1;0;false;false;;;;;;
                                  -45301;2;0;false;false;0;0;0;;;
                                  -45303;1;0;false;false;;;;;;
                                  -45304;10;0;false;false;0;0;0;;;
                                  -45314;1;0;false;false;;;;;;
                                  -45315;1;0;false;false;0;0;0;;;
                                  -45316;6;0;false;false;;;;;;
                                  -45322;17;0;false;false;0;0;0;;;
                                  -45339;1;0;false;false;;;;;;
                                  -45340;2;0;false;false;0;0;0;;;
                                  -45342;1;0;false;false;;;;;;
                                  -45343;6;0;false;false;0;0;0;;;
                                  -45349;5;0;false;false;;;;;;
                                  -45354;1;0;false;false;0;0;0;;;
                                  -45355;4;0;false;false;;;;;;
                                  -45359;1;0;false;false;0;0;0;;;
                                  -45360;5;0;false;false;;;;;;
                                  -45365;4;1;false;false;127;0;85;;;
                                  -45369;1;0;false;false;;;;;;
                                  -45370;1;0;false;false;0;0;0;;;
                                  -45371;5;0;false;false;;;;;;
                                  -45376;23;0;false;false;63;127;95;;;
                                  -45399;3;0;false;false;;;;;;
                                  -45402;3;1;false;false;127;0;85;;;
                                  -45405;1;0;false;false;;;;;;
                                  -45406;1;0;false;false;0;0;0;;;
                                  -45407;3;1;false;false;127;0;85;;;
                                  -45410;1;0;false;false;;;;;;
                                  -45411;1;0;false;false;0;0;0;;;
                                  -45412;1;0;false;false;;;;;;
                                  -45413;1;0;false;false;0;0;0;;;
                                  -45414;1;0;false;false;;;;;;
                                  -45415;9;0;false;false;0;0;0;;;
                                  -45424;1;0;false;false;;;;;;
                                  -45425;1;0;false;false;0;0;0;;;
                                  -45426;1;0;false;false;;;;;;
                                  -45427;6;0;false;false;0;0;0;;;
                                  -45433;1;0;false;false;;;;;;
                                  -45434;1;0;false;false;0;0;0;;;
                                  -45435;1;0;false;false;;;;;;
                                  -45436;1;0;false;false;0;0;0;;;
                                  -45437;1;0;false;false;;;;;;
                                  -45438;10;0;false;false;0;0;0;;;
                                  -45448;1;0;false;false;;;;;;
                                  -45449;4;0;false;false;0;0;0;;;
                                  -45453;1;0;false;false;;;;;;
                                  -45454;1;0;false;false;0;0;0;;;
                                  -45455;6;0;false;false;;;;;;
                                  -45461;18;0;false;false;0;0;0;;;
                                  -45479;1;0;false;false;;;;;;
                                  -45480;1;0;false;false;0;0;0;;;
                                  -45481;1;0;false;false;;;;;;
                                  -45482;13;0;false;false;0;0;0;;;
                                  -45495;5;0;false;false;;;;;;
                                  -45500;1;0;false;false;0;0;0;;;
                                  -45501;5;0;false;false;;;;;;
                                  -45506;39;0;false;false;63;127;95;;;
                                  -45545;3;0;false;false;;;;;;
                                  -45548;2;1;false;false;127;0;85;;;
                                  -45550;1;0;false;false;;;;;;
                                  -45551;18;0;false;false;0;0;0;;;
                                  -45569;1;0;false;false;;;;;;
                                  -45570;1;0;false;false;0;0;0;;;
                                  -45571;1;0;false;false;;;;;;
                                  -45572;9;0;false;false;0;0;0;;;
                                  -45581;1;0;false;false;;;;;;
                                  -45582;2;0;false;false;0;0;0;;;
                                  -45584;1;0;false;false;;;;;;
                                  -45585;17;0;false;false;0;0;0;;;
                                  -45602;1;0;false;false;;;;;;
                                  -45603;2;0;false;false;0;0;0;;;
                                  -45605;1;0;false;false;;;;;;
                                  -45606;9;0;false;false;0;0;0;;;
                                  -45615;1;0;false;false;;;;;;
                                  -45616;1;0;false;false;0;0;0;;;
                                  -45617;1;0;false;false;;;;;;
                                  -45618;6;0;false;false;0;0;0;;;
                                  -45624;1;0;false;false;;;;;;
                                  -45625;1;0;false;false;0;0;0;;;
                                  -45626;6;0;false;false;;;;;;
                                  -45632;8;0;false;false;0;0;0;;;
                                  -45640;1;0;false;false;;;;;;
                                  -45641;1;0;false;false;0;0;0;;;
                                  -45642;1;0;false;false;;;;;;
                                  -45643;2;0;false;false;0;0;0;;;
                                  -45645;6;0;false;false;;;;;;
                                  -45651;17;0;false;false;0;0;0;;;
                                  -45668;1;0;false;false;;;;;;
                                  -45669;1;0;false;false;0;0;0;;;
                                  -45670;1;0;false;false;;;;;;
                                  -45671;3;0;false;false;0;0;0;;;
                                  -45674;5;0;false;false;;;;;;
                                  -45679;1;0;false;false;0;0;0;;;
                                  -45680;5;0;false;false;;;;;;
                                  -45685;4;1;false;false;127;0;85;;;
                                  -45689;5;0;false;false;;;;;;
                                  -45694;2;1;false;false;127;0;85;;;
                                  -45696;1;0;false;false;;;;;;
                                  -45697;18;0;false;false;0;0;0;;;
                                  -45715;1;0;false;false;;;;;;
                                  -45716;2;0;false;false;0;0;0;;;
                                  -45718;1;0;false;false;;;;;;
                                  -45719;9;0;false;false;0;0;0;;;
                                  -45728;1;0;false;false;;;;;;
                                  -45729;1;0;false;false;0;0;0;;;
                                  -45730;1;0;false;false;;;;;;
                                  -45731;6;0;false;false;0;0;0;;;
                                  -45737;1;0;false;false;;;;;;
                                  -45738;1;0;false;false;0;0;0;;;
                                  -45739;6;0;false;false;;;;;;
                                  -45745;17;0;false;false;0;0;0;;;
                                  -45762;1;0;false;false;;;;;;
                                  -45763;2;0;false;false;0;0;0;;;
                                  -45765;1;0;false;false;;;;;;
                                  -45766;6;0;false;false;0;0;0;;;
                                  -45772;5;0;false;false;;;;;;
                                  -45777;1;0;false;false;0;0;0;;;
                                  -45778;4;0;false;false;;;;;;
                                  -45782;1;0;false;false;0;0;0;;;
                                  -45783;4;0;false;false;;;;;;
                                  -45787;9;0;false;false;0;0;0;;;
                                  -45796;1;0;false;false;;;;;;
                                  -45797;2;0;false;false;0;0;0;;;
                                  -45799;1;0;false;false;;;;;;
                                  -45800;6;0;false;false;0;0;0;;;
                                  -45806;3;0;false;false;;;;;;
                                  -45809;1;0;false;false;0;0;0;;;
                                  -45810;3;0;false;false;;;;;;
                                  -45813;3;0;false;false;63;95;191;;;
                                  -45816;4;0;false;false;;;;;;
                                  -45820;1;0;false;false;63;95;191;;;
                                  -45821;1;0;false;false;;;;;;
                                  -45822;6;0;false;false;63;95;191;;;
                                  -45828;1;0;false;false;;;;;;
                                  -45829;3;0;false;false;63;95;191;;;
                                  -45832;1;0;false;false;;;;;;
                                  -45833;4;0;false;false;63;95;191;;;
                                  -45837;1;0;false;false;;;;;;
                                  -45838;5;0;false;false;63;95;191;;;
                                  -45843;1;0;false;false;;;;;;
                                  -45844;2;0;false;false;63;95;191;;;
                                  -45846;1;0;false;false;;;;;;
                                  -45847;3;0;false;false;63;95;191;;;
                                  -45850;1;0;false;false;;;;;;
                                  -45851;5;0;false;false;63;95;191;;;
                                  -45856;1;0;false;false;;;;;;
                                  -45857;2;0;false;false;63;95;191;;;
                                  -45859;1;0;false;false;;;;;;
                                  -45860;3;0;false;false;63;95;191;;;
                                  -45863;1;0;false;false;;;;;;
                                  -45864;9;0;false;false;63;95;191;;;
                                  -45873;1;0;false;false;;;;;;
                                  -45874;6;0;false;false;63;95;191;;;
                                  -45880;4;0;false;false;;;;;;
                                  -45884;1;0;false;false;63;95;191;;;
                                  -45885;1;0;false;false;;;;;;
                                  -45886;3;0;false;false;127;127;159;;;
                                  -45889;4;0;false;false;;;;;;
                                  -45893;1;0;false;false;63;95;191;;;
                                  -45894;4;0;false;false;;;;;;
                                  -45898;1;0;false;false;63;95;191;;;
                                  -45899;1;0;false;false;;;;;;
                                  -45900;7;1;false;false;127;159;191;;;
                                  -45907;9;0;false;false;63;95;191;;;
                                  -45916;1;0;false;false;;;;;;
                                  -45917;3;0;false;false;63;95;191;;;
                                  -45920;1;0;false;false;;;;;;
                                  -45921;5;0;false;false;63;95;191;;;
                                  -45926;1;0;false;false;;;;;;
                                  -45927;4;0;false;false;63;95;191;;;
                                  -45931;1;0;false;false;;;;;;
                                  -45932;2;0;false;false;63;95;191;;;
                                  -45934;1;0;false;false;;;;;;
                                  -45935;5;0;false;false;63;95;191;;;
                                  -45940;4;0;false;false;;;;;;
                                  -45944;1;0;false;false;63;95;191;;;
                                  -45945;1;0;false;false;;;;;;
                                  -45946;7;1;false;false;127;159;191;;;
                                  -45953;9;0;false;false;63;95;191;;;
                                  -45962;1;0;false;false;;;;;;
                                  -45963;3;0;false;false;63;95;191;;;
                                  -45966;1;0;false;false;;;;;;
                                  -45967;6;0;false;false;63;95;191;;;
                                  -45973;1;0;false;false;;;;;;
                                  -45974;2;0;false;false;63;95;191;;;
                                  -45976;1;0;false;false;;;;;;
                                  -45977;5;0;false;false;63;95;191;;;
                                  -45982;1;0;false;false;;;;;;
                                  -45983;2;0;false;false;63;95;191;;;
                                  -45985;1;0;false;false;;;;;;
                                  -45986;5;0;false;false;63;95;191;;;
                                  -45991;4;0;false;false;;;;;;
                                  -45995;1;0;false;false;63;95;191;;;
                                  -45996;1;0;false;false;;;;;;
                                  -45997;7;1;false;false;127;159;191;;;
                                  -46004;17;0;false;false;63;95;191;;;
                                  -46021;1;0;false;false;;;;;;
                                  -46022;7;0;false;false;63;95;191;;;
                                  -46029;1;0;false;false;;;;;;
                                  -46030;3;0;false;false;63;95;191;;;
                                  -46033;1;0;false;false;;;;;;
                                  -46034;6;0;false;false;63;95;191;;;
                                  -46040;1;0;false;false;;;;;;
                                  -46041;4;0;false;false;63;95;191;;;
                                  -46045;1;0;false;false;;;;;;
                                  -46046;2;0;false;false;63;95;191;;;
                                  -46048;1;0;false;false;;;;;;
                                  -46049;5;0;false;false;63;95;191;;;
                                  -46054;5;0;false;false;;;;;;
                                  -46059;1;0;false;false;63;95;191;;;
                                  -46060;2;0;false;false;;;;;;
                                  -46062;5;0;false;false;63;95;191;;;
                                  -46067;1;0;false;false;;;;;;
                                  -46068;3;0;false;false;63;95;191;;;
                                  -46071;1;0;false;false;;;;;;
                                  -46072;7;0;false;false;63;95;191;;;
                                  -46079;1;0;false;false;;;;;;
                                  -46080;5;0;false;false;63;95;191;;;
                                  -46085;1;0;false;false;;;;;;
                                  -46086;2;0;false;false;63;95;191;;;
                                  -46088;1;0;false;false;;;;;;
                                  -46089;3;0;false;false;63;95;191;;;
                                  -46092;1;0;false;false;;;;;;
                                  -46093;9;0;false;false;63;95;191;;;
                                  -46102;1;0;false;false;;;;;;
                                  -46103;6;0;false;false;63;95;191;;;
                                  -46109;1;0;false;false;;;;;;
                                  -46110;5;0;false;false;63;95;191;;;
                                  -46115;1;0;false;false;;;;;;
                                  -46116;2;0;false;false;63;95;191;;;
                                  -46118;5;0;false;false;;;;;;
                                  -46123;1;0;false;false;63;95;191;;;
                                  -46124;2;0;false;false;;;;;;
                                  -46126;11;0;false;false;63;95;191;;;
                                  -46137;1;0;false;false;;;;;;
                                  -46138;9;0;false;false;63;95;191;;;
                                  -46147;1;0;false;false;;;;;;
                                  -46148;7;0;false;false;63;95;191;;;
                                  -46155;1;0;false;false;;;;;;
                                  -46156;5;0;false;false;63;95;191;;;
                                  -46161;1;0;false;false;;;;;;
                                  -46162;2;0;false;false;63;95;191;;;
                                  -46164;1;0;false;false;;;;;;
                                  -46165;3;0;false;false;63;95;191;;;
                                  -46168;1;0;false;false;;;;;;
                                  -46169;2;0;false;false;63;95;191;;;
                                  -46171;1;0;false;false;;;;;;
                                  -46172;1;0;false;false;63;95;191;;;
                                  -46173;1;0;false;false;;;;;;
                                  -46174;2;0;false;false;63;95;191;;;
                                  -46176;1;0;false;false;;;;;;
                                  -46177;3;0;false;false;63;95;191;;;
                                  -46180;5;0;false;false;;;;;;
                                  -46185;1;0;false;false;63;95;191;;;
                                  -46186;2;0;false;false;;;;;;
                                  -46188;6;0;false;false;63;95;191;;;
                                  -46194;1;0;false;false;;;;;;
                                  -46195;4;0;false;false;63;95;191;;;
                                  -46199;1;0;false;false;;;;;;
                                  -46200;2;0;false;false;63;95;191;;;
                                  -46202;1;0;false;false;;;;;;
                                  -46203;5;0;false;false;63;95;191;;;
                                  -46208;1;0;false;false;;;;;;
                                  -46209;6;0;false;false;63;95;191;;;
                                  -46215;4;0;false;false;;;;;;
                                  -46219;2;0;false;false;63;95;191;;;
                                  -46221;3;0;false;false;;;;;;
                                  -46224;6;1;false;false;127;0;85;;;
                                  -46230;1;0;false;false;;;;;;
                                  -46231;4;1;false;false;127;0;85;;;
                                  -46235;1;0;false;false;;;;;;
                                  -46236;12;0;false;false;0;0;0;;;
                                  -46248;3;1;false;false;127;0;85;;;
                                  -46251;1;0;false;false;;;;;;
                                  -46252;10;0;false;false;0;0;0;;;
                                  -46262;1;0;false;false;;;;;;
                                  -46263;3;1;false;false;127;0;85;;;
                                  -46266;1;0;false;false;;;;;;
                                  -46267;10;0;false;false;0;0;0;;;
                                  -46277;1;0;false;false;;;;;;
                                  -46278;7;1;false;false;127;0;85;;;
                                  -46285;1;0;false;false;;;;;;
                                  -46286;18;0;false;false;0;0;0;;;
                                  -46304;1;0;false;false;;;;;;
                                  -46305;1;0;false;false;0;0;0;;;
                                  -46306;4;0;false;false;;;;;;
                                  -46310;16;0;false;false;0;0;0;;;
                                  -46326;1;0;false;false;;;;;;
                                  -46327;10;0;false;false;0;0;0;;;
                                  -46337;1;0;false;false;;;;;;
                                  -46338;19;0;false;false;0;0;0;;;
                                  -46357;3;0;false;false;;;;;;
                                  -46360;1;0;false;false;0;0;0;;;
                                  -46361;3;0;false;false;;;;;;
                                  -46364;3;0;false;false;63;95;191;;;
                                  -46367;4;0;false;false;;;;;;
                                  -46371;1;0;false;false;63;95;191;;;
                                  -46372;1;0;false;false;;;;;;
                                  -46373;6;0;false;false;63;95;191;;;
                                  -46379;1;0;false;false;;;;;;
                                  -46380;3;0;false;false;63;95;191;;;
                                  -46383;1;0;false;false;;;;;;
                                  -46384;4;0;false;false;63;95;191;;;
                                  -46388;1;0;false;false;;;;;;
                                  -46389;5;0;false;false;63;95;191;;;
                                  -46394;1;0;false;false;;;;;;
                                  -46395;2;0;false;false;63;95;191;;;
                                  -46397;1;0;false;false;;;;;;
                                  -46398;3;0;false;false;63;95;191;;;
                                  -46401;1;0;false;false;;;;;;
                                  -46402;5;0;false;false;63;95;191;;;
                                  -46407;1;0;false;false;;;;;;
                                  -46408;2;0;false;false;63;95;191;;;
                                  -46410;1;0;false;false;;;;;;
                                  -46411;3;0;false;false;63;95;191;;;
                                  -46414;1;0;false;false;;;;;;
                                  -46415;9;0;false;false;63;95;191;;;
                                  -46424;1;0;false;false;;;;;;
                                  -46425;6;0;false;false;63;95;191;;;
                                  -46431;4;0;false;false;;;;;;
                                  -46435;1;0;false;false;63;95;191;;;
                                  -46436;1;0;false;false;;;;;;
                                  -46437;3;0;false;false;127;127;159;;;
                                  -46440;4;0;false;false;;;;;;
                                  -46444;1;0;false;false;63;95;191;;;
                                  -46445;4;0;false;false;;;;;;
                                  -46449;1;0;false;false;63;95;191;;;
                                  -46450;1;0;false;false;;;;;;
                                  -46451;7;1;false;false;127;159;191;;;
                                  -46458;9;0;false;false;63;95;191;;;
                                  -46467;1;0;false;false;;;;;;
                                  -46468;3;0;false;false;63;95;191;;;
                                  -46471;1;0;false;false;;;;;;
                                  -46472;5;0;false;false;63;95;191;;;
                                  -46477;1;0;false;false;;;;;;
                                  -46478;4;0;false;false;63;95;191;;;
                                  -46482;1;0;false;false;;;;;;
                                  -46483;2;0;false;false;63;95;191;;;
                                  -46485;1;0;false;false;;;;;;
                                  -46486;5;0;false;false;63;95;191;;;
                                  -46491;4;0;false;false;;;;;;
                                  -46495;1;0;false;false;63;95;191;;;
                                  -46496;1;0;false;false;;;;;;
                                  -46497;7;1;false;false;127;159;191;;;
                                  -46504;9;0;false;false;63;95;191;;;
                                  -46513;1;0;false;false;;;;;;
                                  -46514;3;0;false;false;63;95;191;;;
                                  -46517;1;0;false;false;;;;;;
                                  -46518;6;0;false;false;63;95;191;;;
                                  -46524;1;0;false;false;;;;;;
                                  -46525;2;0;false;false;63;95;191;;;
                                  -46527;1;0;false;false;;;;;;
                                  -46528;5;0;false;false;63;95;191;;;
                                  -46533;1;0;false;false;;;;;;
                                  -46534;2;0;false;false;63;95;191;;;
                                  -46536;1;0;false;false;;;;;;
                                  -46537;5;0;false;false;63;95;191;;;
                                  -46542;4;0;false;false;;;;;;
                                  -46546;1;0;false;false;63;95;191;;;
                                  -46547;1;0;false;false;;;;;;
                                  -46548;7;1;false;false;127;159;191;;;
                                  -46555;17;0;false;false;63;95;191;;;
                                  -46572;1;0;false;false;;;;;;
                                  -46573;7;0;false;false;63;95;191;;;
                                  -46580;1;0;false;false;;;;;;
                                  -46581;3;0;false;false;63;95;191;;;
                                  -46584;1;0;false;false;;;;;;
                                  -46585;6;0;false;false;63;95;191;;;
                                  -46591;1;0;false;false;;;;;;
                                  -46592;4;0;false;false;63;95;191;;;
                                  -46596;1;0;false;false;;;;;;
                                  -46597;2;0;false;false;63;95;191;;;
                                  -46599;1;0;false;false;;;;;;
                                  -46600;5;0;false;false;63;95;191;;;
                                  -46605;5;0;false;false;;;;;;
                                  -46610;1;0;false;false;63;95;191;;;
                                  -46611;2;0;false;false;;;;;;
                                  -46613;5;0;false;false;63;95;191;;;
                                  -46618;1;0;false;false;;;;;;
                                  -46619;3;0;false;false;63;95;191;;;
                                  -46622;1;0;false;false;;;;;;
                                  -46623;7;0;false;false;63;95;191;;;
                                  -46630;1;0;false;false;;;;;;
                                  -46631;5;0;false;false;63;95;191;;;
                                  -46636;1;0;false;false;;;;;;
                                  -46637;2;0;false;false;63;95;191;;;
                                  -46639;1;0;false;false;;;;;;
                                  -46640;3;0;false;false;63;95;191;;;
                                  -46643;1;0;false;false;;;;;;
                                  -46644;9;0;false;false;63;95;191;;;
                                  -46653;1;0;false;false;;;;;;
                                  -46654;6;0;false;false;63;95;191;;;
                                  -46660;1;0;false;false;;;;;;
                                  -46661;5;0;false;false;63;95;191;;;
                                  -46666;1;0;false;false;;;;;;
                                  -46667;2;0;false;false;63;95;191;;;
                                  -46669;5;0;false;false;;;;;;
                                  -46674;1;0;false;false;63;95;191;;;
                                  -46675;2;0;false;false;;;;;;
                                  -46677;11;0;false;false;63;95;191;;;
                                  -46688;1;0;false;false;;;;;;
                                  -46689;9;0;false;false;63;95;191;;;
                                  -46698;1;0;false;false;;;;;;
                                  -46699;7;0;false;false;63;95;191;;;
                                  -46706;1;0;false;false;;;;;;
                                  -46707;5;0;false;false;63;95;191;;;
                                  -46712;1;0;false;false;;;;;;
                                  -46713;2;0;false;false;63;95;191;;;
                                  -46715;1;0;false;false;;;;;;
                                  -46716;3;0;false;false;63;95;191;;;
                                  -46719;1;0;false;false;;;;;;
                                  -46720;2;0;false;false;63;95;191;;;
                                  -46722;1;0;false;false;;;;;;
                                  -46723;1;0;false;false;63;95;191;;;
                                  -46724;1;0;false;false;;;;;;
                                  -46725;2;0;false;false;63;95;191;;;
                                  -46727;1;0;false;false;;;;;;
                                  -46728;3;0;false;false;63;95;191;;;
                                  -46731;5;0;false;false;;;;;;
                                  -46736;1;0;false;false;63;95;191;;;
                                  -46737;2;0;false;false;;;;;;
                                  -46739;6;0;false;false;63;95;191;;;
                                  -46745;1;0;false;false;;;;;;
                                  -46746;4;0;false;false;63;95;191;;;
                                  -46750;1;0;false;false;;;;;;
                                  -46751;2;0;false;false;63;95;191;;;
                                  -46753;1;0;false;false;;;;;;
                                  -46754;5;0;false;false;63;95;191;;;
                                  -46759;1;0;false;false;;;;;;
                                  -46760;6;0;false;false;63;95;191;;;
                                  -46766;4;0;false;false;;;;;;
                                  -46770;2;0;false;false;63;95;191;;;
                                  -46772;3;0;false;false;;;;;;
                                  -46775;6;1;false;false;127;0;85;;;
                                  -46781;1;0;false;false;;;;;;
                                  -46782;4;1;false;false;127;0;85;;;
                                  -46786;1;0;false;false;;;;;;
                                  -46787;6;0;false;false;0;0;0;;;
                                  -46793;3;1;false;false;127;0;85;;;
                                  -46796;1;0;false;false;;;;;;
                                  -46797;10;0;false;false;0;0;0;;;
                                  -46807;1;0;false;false;;;;;;
                                  -46808;3;1;false;false;127;0;85;;;
                                  -46811;1;0;false;false;;;;;;
                                  -46812;10;0;false;false;0;0;0;;;
                                  -46822;1;0;false;false;;;;;;
                                  -46823;7;1;false;false;127;0;85;;;
                                  -46830;1;0;false;false;;;;;;
                                  -46831;18;0;false;false;0;0;0;;;
                                  -46849;1;0;false;false;;;;;;
                                  -46850;1;0;false;false;0;0;0;;;
                                  -46851;4;0;false;false;;;;;;
                                  -46855;3;1;false;false;127;0;85;;;
                                  -46858;1;0;false;false;;;;;;
                                  -46859;7;0;false;false;0;0;0;;;
                                  -46866;1;0;false;false;;;;;;
                                  -46867;1;0;false;false;0;0;0;;;
                                  -46868;1;0;false;false;;;;;;
                                  -46869;9;0;false;false;0;0;0;;;
                                  -46878;1;0;false;false;;;;;;
                                  -46879;1;0;false;false;0;0;0;;;
                                  -46880;1;0;false;false;;;;;;
                                  -46881;10;0;false;false;0;0;0;;;
                                  -46891;8;0;false;false;;;;;;
                                  -46899;2;1;false;false;127;0;85;;;
                                  -46901;1;0;false;false;;;;;;
                                  -46902;10;0;false;false;0;0;0;;;
                                  -46912;1;0;false;false;;;;;;
                                  -46913;1;0;false;false;0;0;0;;;
                                  -46914;1;0;false;false;;;;;;
                                  -46915;1;0;false;false;0;0;0;;;
                                  -46916;1;0;false;false;;;;;;
                                  -46917;2;0;false;false;0;0;0;;;
                                  -46919;1;0;false;false;;;;;;
                                  -46920;7;0;false;false;0;0;0;;;
                                  -46927;1;0;false;false;;;;;;
                                  -46928;1;0;false;false;0;0;0;;;
                                  -46929;1;0;false;false;;;;;;
                                  -46930;17;0;false;false;0;0;0;;;
                                  -46947;1;0;false;false;;;;;;
                                  -46948;1;0;false;false;0;0;0;;;
                                  -46949;5;0;false;false;;;;;;
                                  -46954;6;1;false;false;127;0;85;;;
                                  -46960;1;0;false;false;0;0;0;;;
                                  -46961;4;0;false;false;;;;;;
                                  -46965;1;0;false;false;0;0;0;;;
                                  -46966;4;0;false;false;;;;;;
                                  -46970;3;1;false;false;127;0;85;;;
                                  -46973;1;0;false;false;;;;;;
                                  -46974;1;0;false;false;0;0;0;;;
                                  -46975;3;1;false;false;127;0;85;;;
                                  -46978;1;0;false;false;;;;;;
                                  -46979;1;0;false;false;0;0;0;;;
                                  -46980;1;0;false;false;;;;;;
                                  -46981;1;0;false;false;0;0;0;;;
                                  -46982;1;0;false;false;;;;;;
                                  -46983;10;0;false;false;0;0;0;;;
                                  -46993;1;0;false;false;;;;;;
                                  -46994;1;0;false;false;0;0;0;;;
                                  -46995;1;0;false;false;;;;;;
                                  -46996;1;0;false;false;0;0;0;;;
                                  -46997;1;0;false;false;;;;;;
                                  -46998;8;0;false;false;0;0;0;;;
                                  -47006;1;0;false;false;;;;;;
                                  -47007;4;0;false;false;0;0;0;;;
                                  -47011;1;0;false;false;;;;;;
                                  -47012;1;0;false;false;0;0;0;;;
                                  -47013;5;0;false;false;;;;;;
                                  -47018;12;0;false;false;0;0;0;;;
                                  -47030;1;0;false;false;;;;;;
                                  -47031;1;0;false;false;0;0;0;;;
                                  -47032;1;0;false;false;;;;;;
                                  -47033;3;0;false;false;0;0;0;;;
                                  -47036;4;0;false;false;;;;;;
                                  -47040;1;0;false;false;0;0;0;;;
                                  -47041;6;0;false;false;;;;;;
                                  -47047;69;0;false;false;63;127;95;;;
                                  -47116;2;0;false;false;;;;;;
                                  -47118;29;0;false;false;63;127;95;;;
                                  -47147;2;0;false;false;;;;;;
                                  -47149;2;1;false;false;127;0;85;;;
                                  -47151;1;0;false;false;;;;;;
                                  -47152;18;0;false;false;0;0;0;;;
                                  -47170;1;0;false;false;;;;;;
                                  -47171;2;0;false;false;0;0;0;;;
                                  -47173;1;0;false;false;;;;;;
                                  -47174;9;0;false;false;0;0;0;;;
                                  -47183;1;0;false;false;;;;;;
                                  -47184;2;0;false;false;0;0;0;;;
                                  -47186;1;0;false;false;;;;;;
                                  -47187;17;0;false;false;0;0;0;;;
                                  -47204;1;0;false;false;;;;;;
                                  -47205;1;0;false;false;0;0;0;;;
                                  -47206;1;0;false;false;;;;;;
                                  -47207;8;0;false;false;0;0;0;;;
                                  -47215;1;0;false;false;;;;;;
                                  -47216;1;0;false;false;0;0;0;;;
                                  -47217;5;0;false;false;;;;;;
                                  -47222;8;0;false;false;0;0;0;;;
                                  -47230;1;0;false;false;;;;;;
                                  -47231;1;0;false;false;0;0;0;;;
                                  -47232;1;0;false;false;;;;;;
                                  -47233;2;0;false;false;0;0;0;;;
                                  -47235;5;0;false;false;;;;;;
                                  -47240;17;0;false;false;0;0;0;;;
                                  -47257;1;0;false;false;;;;;;
                                  -47258;1;0;false;false;0;0;0;;;
                                  -47259;1;0;false;false;;;;;;
                                  -47260;3;0;false;false;0;0;0;;;
                                  -47263;5;0;false;false;;;;;;
                                  -47268;2;1;false;false;127;0;85;;;
                                  -47270;1;0;false;false;;;;;;
                                  -47271;19;0;false;false;0;0;0;;;
                                  -47290;1;0;false;false;;;;;;
                                  -47291;1;0;false;false;0;0;0;;;
                                  -47292;6;0;false;false;;;;;;
                                  -47298;3;1;false;false;127;0;85;;;
                                  -47301;1;0;false;false;;;;;;
                                  -47302;1;0;false;false;0;0;0;;;
                                  -47303;3;1;false;false;127;0;85;;;
                                  -47306;1;0;false;false;;;;;;
                                  -47307;1;0;false;false;0;0;0;;;
                                  -47308;1;0;false;false;;;;;;
                                  -47309;1;0;false;false;0;0;0;;;
                                  -47310;1;0;false;false;;;;;;
                                  -47311;2;0;false;false;0;0;0;;;
                                  -47313;1;0;false;false;;;;;;
                                  -47314;1;0;false;false;0;0;0;;;
                                  -47315;1;0;false;false;;;;;;
                                  -47316;1;0;false;false;0;0;0;;;
                                  -47317;1;0;false;false;;;;;;
                                  -47318;10;0;false;false;0;0;0;;;
                                  -47328;1;0;false;false;;;;;;
                                  -47329;4;0;false;false;0;0;0;;;
                                  -47333;1;0;false;false;;;;;;
                                  -47334;1;0;false;false;0;0;0;;;
                                  -47335;7;0;false;false;;;;;;
                                  -47342;2;1;false;false;127;0;85;;;
                                  -47344;1;0;false;false;;;;;;
                                  -47345;13;0;false;false;0;0;0;;;
                                  -47358;1;0;false;false;;;;;;
                                  -47359;1;0;false;false;0;0;0;;;
                                  -47360;1;0;false;false;;;;;;
                                  -47361;9;0;false;false;0;0;0;;;
                                  -47370;1;0;false;false;;;;;;
                                  -47371;1;0;false;false;0;0;0;;;
                                  -47372;8;0;false;false;;;;;;
                                  -47380;8;0;false;false;0;0;0;;;
                                  -47388;1;0;false;false;;;;;;
                                  -47389;1;0;false;false;0;0;0;;;
                                  -47390;1;0;false;false;;;;;;
                                  -47391;13;0;false;false;0;0;0;;;
                                  -47404;8;0;false;false;;;;;;
                                  -47412;17;0;false;false;0;0;0;;;
                                  -47429;1;0;false;false;;;;;;
                                  -47430;1;0;false;false;0;0;0;;;
                                  -47431;1;0;false;false;;;;;;
                                  -47432;2;0;false;false;0;0;0;;;
                                  -47434;7;0;false;false;;;;;;
                                  -47441;1;0;false;false;0;0;0;;;
                                  -47442;6;0;false;false;;;;;;
                                  -47448;1;0;false;false;0;0;0;;;
                                  -47449;8;0;false;false;;;;;;
                                  -47457;1;0;false;false;0;0;0;;;
                                  -47458;4;0;false;false;;;;;;
                                  -47462;1;0;false;false;0;0;0;;;
                                  -47463;3;0;false;false;;;;;;
                                  -47466;1;0;false;false;0;0;0;;;
                                  -47467;3;0;false;false;;;;;;
                                  -47470;3;0;false;false;63;95;191;;;
                                  -47473;5;0;false;false;;;;;;
                                  -47478;1;0;false;false;63;95;191;;;
                                  -47479;1;0;false;false;;;;;;
                                  -47480;7;0;false;false;63;95;191;;;
                                  -47487;1;0;false;false;;;;;;
                                  -47488;3;0;false;false;63;95;191;;;
                                  -47491;1;0;false;false;;;;;;
                                  -47492;4;0;false;false;63;95;191;;;
                                  -47496;1;0;false;false;;;;;;
                                  -47497;5;0;false;false;63;95;191;;;
                                  -47502;1;0;false;false;;;;;;
                                  -47503;5;0;false;false;63;95;191;;;
                                  -47508;1;0;false;false;;;;;;
                                  -47509;2;0;false;false;63;95;191;;;
                                  -47511;1;0;false;false;;;;;;
                                  -47512;7;0;false;false;63;95;191;;;
                                  -47519;1;0;false;false;;;;;;
                                  -47520;1;0;false;false;63;95;191;;;
                                  -47521;1;0;false;false;;;;;;
                                  -47522;4;0;false;false;63;95;191;;;
                                  -47526;1;0;false;false;;;;;;
                                  -47527;7;0;false;false;63;95;191;;;
                                  -47534;4;0;false;false;;;;;;
                                  -47538;1;0;false;false;63;95;191;;;
                                  -47539;1;0;false;false;;;;;;
                                  -47540;5;0;false;false;63;95;191;;;
                                  -47545;1;0;false;false;;;;;;
                                  -47546;8;0;false;false;63;95;191;;;
                                  -47554;1;0;false;false;;;;;;
                                  -47555;2;0;false;false;63;95;191;;;
                                  -47557;1;0;false;false;;;;;;
                                  -47558;3;0;false;false;63;95;191;;;
                                  -47561;1;0;false;false;;;;;;
                                  -47562;4;0;false;false;63;95;191;;;
                                  -47566;1;0;false;false;;;;;;
                                  -47567;6;0;false;false;63;95;191;;;
                                  -47573;1;0;false;false;;;;;;
                                  -47574;4;0;false;false;63;95;191;;;
                                  -47578;1;0;false;false;;;;;;
                                  -47579;2;0;false;false;63;95;191;;;
                                  -47581;1;0;false;false;;;;;;
                                  -47582;6;0;false;false;63;95;191;;;
                                  -47588;4;0;false;false;;;;;;
                                  -47592;1;0;false;false;63;95;191;;;
                                  -47593;1;0;false;false;;;;;;
                                  -47594;3;0;false;false;127;127;159;;;
                                  -47597;4;0;false;false;;;;;;
                                  -47601;1;0;false;false;63;95;191;;;
                                  -47602;4;0;false;false;;;;;;
                                  -47606;1;0;false;false;63;95;191;;;
                                  -47607;1;0;false;false;;;;;;
                                  -47608;7;1;false;false;127;159;191;;;
                                  -47615;11;0;false;false;63;95;191;;;
                                  -47626;1;0;false;false;;;;;;
                                  -47627;3;0;false;false;63;95;191;;;
                                  -47630;1;0;false;false;;;;;;
                                  -47631;5;0;false;false;63;95;191;;;
                                  -47636;1;0;false;false;;;;;;
                                  -47637;6;0;false;false;63;95;191;;;
                                  -47643;1;0;false;false;;;;;;
                                  -47644;2;0;false;false;63;95;191;;;
                                  -47646;1;0;false;false;;;;;;
                                  -47647;3;0;false;false;63;95;191;;;
                                  -47650;1;0;false;false;;;;;;
                                  -47651;4;0;false;false;63;95;191;;;
                                  -47655;1;0;false;false;;;;;;
                                  -47656;6;0;false;false;63;95;191;;;
                                  -47662;4;0;false;false;;;;;;
                                  -47666;1;0;false;false;63;95;191;;;
                                  -47667;1;0;false;false;;;;;;
                                  -47668;7;1;false;false;127;159;191;;;
                                  -47675;12;0;false;false;63;95;191;;;
                                  -47687;1;0;false;false;;;;;;
                                  -47688;3;0;false;false;63;95;191;;;
                                  -47691;1;0;false;false;;;;;;
                                  -47692;6;0;false;false;63;95;191;;;
                                  -47698;1;0;false;false;;;;;;
                                  -47699;2;0;false;false;63;95;191;;;
                                  -47701;1;0;false;false;;;;;;
                                  -47702;8;0;false;false;63;95;191;;;
                                  -47710;1;0;false;false;;;;;;
                                  -47711;5;0;false;false;63;95;191;;;
                                  -47716;4;0;false;false;;;;;;
                                  -47720;1;0;false;false;63;95;191;;;
                                  -47721;1;0;false;false;;;;;;
                                  -47722;7;1;false;false;127;159;191;;;
                                  -47729;16;0;false;false;63;95;191;;;
                                  -47745;1;0;false;false;;;;;;
                                  -47746;3;0;false;false;63;95;191;;;
                                  -47749;1;0;false;false;;;;;;
                                  -47750;6;0;false;false;63;95;191;;;
                                  -47756;1;0;false;false;;;;;;
                                  -47757;2;0;false;false;63;95;191;;;
                                  -47759;1;0;false;false;;;;;;
                                  -47760;7;0;false;false;63;95;191;;;
                                  -47767;1;0;false;false;;;;;;
                                  -47768;5;0;false;false;63;95;191;;;
                                  -47773;4;0;false;false;;;;;;
                                  -47777;1;0;false;false;63;95;191;;;
                                  -47778;1;0;false;false;;;;;;
                                  -47779;7;1;false;false;127;159;191;;;
                                  -47786;12;0;false;false;63;95;191;;;
                                  -47798;1;0;false;false;;;;;;
                                  -47799;3;0;false;false;63;95;191;;;
                                  -47802;1;0;false;false;;;;;;
                                  -47803;6;0;false;false;63;95;191;;;
                                  -47809;1;0;false;false;;;;;;
                                  -47810;2;0;false;false;63;95;191;;;
                                  -47812;1;0;false;false;;;;;;
                                  -47813;3;0;false;false;63;95;191;;;
                                  -47816;1;0;false;false;;;;;;
                                  -47817;10;0;false;false;63;95;191;;;
                                  -47827;4;0;false;false;;;;;;
                                  -47831;1;0;false;false;63;95;191;;;
                                  -47832;1;0;false;false;;;;;;
                                  -47833;7;1;false;false;127;159;191;;;
                                  -47840;16;0;false;false;63;95;191;;;
                                  -47856;1;0;false;false;;;;;;
                                  -47857;3;0;false;false;63;95;191;;;
                                  -47860;1;0;false;false;;;;;;
                                  -47861;6;0;false;false;63;95;191;;;
                                  -47867;1;0;false;false;;;;;;
                                  -47868;2;0;false;false;63;95;191;;;
                                  -47870;1;0;false;false;;;;;;
                                  -47871;7;0;false;false;63;95;191;;;
                                  -47878;1;0;false;false;;;;;;
                                  -47879;10;0;false;false;63;95;191;;;
                                  -47889;4;0;false;false;;;;;;
                                  -47893;2;0;false;false;63;95;191;;;
                                  -47895;5;0;false;false;;;;;;
                                  -47900;6;1;false;false;127;0;85;;;
                                  -47906;1;0;false;false;;;;;;
                                  -47907;4;1;false;false;127;0;85;;;
                                  -47911;1;0;false;false;;;;;;
                                  -47912;12;0;false;false;0;0;0;;;
                                  -47924;3;1;false;false;127;0;85;;;
                                  -47927;1;0;false;false;;;;;;
                                  -47928;12;0;false;false;0;0;0;;;
                                  -47940;1;0;false;false;;;;;;
                                  -47941;3;1;false;false;127;0;85;;;
                                  -47944;1;0;false;false;;;;;;
                                  -47945;13;0;false;false;0;0;0;;;
                                  -47958;1;0;false;false;;;;;;
                                  -47959;3;1;false;false;127;0;85;;;
                                  -47962;1;0;false;false;;;;;;
                                  -47963;17;0;false;false;0;0;0;;;
                                  -47980;1;0;false;false;;;;;;
                                  -47981;3;1;false;false;127;0;85;;;
                                  -47984;1;0;false;false;;;;;;
                                  -47985;13;0;false;false;0;0;0;;;
                                  -47998;1;0;false;false;;;;;;
                                  -47999;3;1;false;false;127;0;85;;;
                                  -48002;1;0;false;false;;;;;;
                                  -48003;17;0;false;false;0;0;0;;;
                                  -48020;1;0;false;false;;;;;;
                                  -48021;1;0;false;false;0;0;0;;;
                                  -48022;4;0;false;false;;;;;;
                                  -48026;3;1;false;false;127;0;85;;;
                                  -48029;1;0;false;false;;;;;;
                                  -48030;9;0;false;false;0;0;0;;;
                                  -48039;1;0;false;false;;;;;;
                                  -48040;1;0;false;false;0;0;0;;;
                                  -48041;1;0;false;false;;;;;;
                                  -48042;36;0;false;false;0;0;0;;;
                                  -48078;4;0;false;false;;;;;;
                                  -48082;7;1;false;false;127;0;85;;;
                                  -48089;1;0;false;false;;;;;;
                                  -48090;14;0;false;false;0;0;0;;;
                                  -48104;1;0;false;false;;;;;;
                                  -48105;1;0;false;false;0;0;0;;;
                                  -48106;1;0;false;false;;;;;;
                                  -48107;18;0;false;false;0;0;0;;;
                                  -48125;1;0;false;false;;;;;;
                                  -48126;1;0;false;false;0;0;0;;;
                                  -48127;1;0;false;false;;;;;;
                                  -48128;9;0;false;false;0;0;0;;;
                                  -48137;1;0;false;false;;;;;;
                                  -48138;2;0;false;false;0;0;0;;;
                                  -48140;1;0;false;false;;;;;;
                                  -48141;17;0;false;false;0;0;0;;;
                                  -48158;1;0;false;false;;;;;;
                                  -48159;2;0;false;false;0;0;0;;;
                                  -48161;1;0;false;false;;;;;;
                                  -48162;9;0;false;false;0;0;0;;;
                                  -48171;1;0;false;false;;;;;;
                                  -48172;1;0;false;false;0;0;0;;;
                                  -48173;1;0;false;false;;;;;;
                                  -48174;18;0;false;false;0;0;0;;;
                                  -48192;4;0;false;false;;;;;;
                                  -48196;25;0;false;false;63;127;95;;;
                                  -48221;2;0;false;false;;;;;;
                                  -48223;2;1;false;false;127;0;85;;;
                                  -48225;1;0;false;false;;;;;;
                                  -48226;10;0;false;false;0;0;0;;;
                                  -48236;1;0;false;false;;;;;;
                                  -48237;2;0;false;false;0;0;0;;;
                                  -48239;1;0;false;false;;;;;;
                                  -48240;1;0;false;false;0;0;0;;;
                                  -48241;1;0;false;false;;;;;;
                                  -48242;2;0;false;false;0;0;0;;;
                                  -48244;1;0;false;false;;;;;;
                                  -48245;16;0;false;false;0;0;0;;;
                                  -48261;1;0;false;false;;;;;;
                                  -48262;2;0;false;false;0;0;0;;;
                                  -48264;1;0;false;false;;;;;;
                                  -48265;10;0;false;false;0;0;0;;;
                                  -48275;1;0;false;false;;;;;;
                                  -48276;1;0;false;false;0;0;0;;;
                                  -48277;5;0;false;false;;;;;;
                                  -48282;9;0;false;false;0;0;0;;;
                                  -48291;1;0;false;false;;;;;;
                                  -48292;1;0;false;false;0;0;0;;;
                                  -48293;1;0;false;false;;;;;;
                                  -48294;13;0;false;false;0;0;0;;;
                                  -48307;5;0;false;false;;;;;;
                                  -48312;9;0;false;false;0;0;0;;;
                                  -48321;1;0;false;false;;;;;;
                                  -48322;1;0;false;false;0;0;0;;;
                                  -48323;1;0;false;false;;;;;;
                                  -48324;3;1;false;false;127;0;85;;;
                                  -48327;1;0;false;false;;;;;;
                                  -48328;3;1;false;false;127;0;85;;;
                                  -48331;12;0;false;false;0;0;0;;;
                                  -48343;5;0;false;false;;;;;;
                                  -48348;8;0;false;false;0;0;0;;;
                                  -48356;1;0;false;false;;;;;;
                                  -48357;10;0;false;false;0;0;0;;;
                                  -48367;1;0;false;false;;;;;;
                                  -48368;5;1;false;false;127;0;85;;;
                                  -48373;2;0;false;false;0;0;0;;;
                                  -48375;5;0;false;false;;;;;;
                                  -48380;8;0;false;false;0;0;0;;;
                                  -48388;1;0;false;false;;;;;;
                                  -48389;1;0;false;false;0;0;0;;;
                                  -48390;1;0;false;false;;;;;;
                                  -48391;2;0;false;false;0;0;0;;;
                                  -48393;4;0;false;false;;;;;;
                                  -48397;1;0;false;false;0;0;0;;;
                                  -48398;4;0;false;false;;;;;;
                                  -48402;4;1;false;false;127;0;85;;;
                                  -48406;1;0;false;false;;;;;;
                                  -48407;1;0;false;false;0;0;0;;;
                                  -48408;5;0;false;false;;;;;;
                                  -48413;23;0;false;false;0;0;0;;;
                                  -48436;1;0;false;false;;;;;;
                                  -48437;19;0;false;false;0;0;0;;;
                                  -48456;5;0;false;false;;;;;;
                                  -48461;23;0;false;false;0;0;0;;;
                                  -48484;1;0;false;false;;;;;;
                                  -48485;14;0;false;false;0;0;0;;;
                                  -48499;5;0;false;false;;;;;;
                                  -48504;20;0;false;false;0;0;0;;;
                                  -48524;1;0;false;false;;;;;;
                                  -48525;1;0;false;false;0;0;0;;;
                                  -48526;1;0;false;false;;;;;;
                                  -48527;3;0;false;false;0;0;0;;;
                                  -48530;4;0;false;false;;;;;;
                                  -48534;1;0;false;false;0;0;0;;;
                                  -48535;4;0;false;false;;;;;;
                                  -48539;79;0;false;false;63;127;95;;;
                                  -48618;2;0;false;false;;;;;;
                                  -48620;72;0;false;false;63;127;95;;;
                                  -48692;2;0;false;false;;;;;;
                                  -48694;30;0;false;false;63;127;95;;;
                                  -48724;2;0;false;false;;;;;;
                                  -48726;27;0;false;false;0;0;0;;;
                                  -48753;1;0;false;false;;;;;;
                                  -48754;14;0;false;false;0;0;0;;;
                                  -48768;4;0;false;false;;;;;;
                                  -48772;79;0;false;false;63;127;95;;;
                                  -48851;2;0;false;false;;;;;;
                                  -48853;71;0;false;false;63;127;95;;;
                                  -48924;2;0;false;false;;;;;;
                                  -48926;22;0;false;false;63;127;95;;;
                                  -48948;2;0;false;false;;;;;;
                                  -48950;2;1;false;false;127;0;85;;;
                                  -48952;1;0;false;false;;;;;;
                                  -48953;15;0;false;false;0;0;0;;;
                                  -48968;1;0;false;false;;;;;;
                                  -48969;2;0;false;false;0;0;0;;;
                                  -48971;6;0;false;false;;;;;;
                                  -48977;18;0;false;false;0;0;0;;;
                                  -48995;1;0;false;false;;;;;;
                                  -48996;2;0;false;false;0;0;0;;;
                                  -48998;1;0;false;false;;;;;;
                                  -48999;2;0;false;false;0;0;0;;;
                                  -49001;1;0;false;false;;;;;;
                                  -49002;2;0;false;false;0;0;0;;;
                                  -49004;1;0;false;false;;;;;;
                                  -49005;28;0;false;false;0;0;0;;;
                                  -49033;1;0;false;false;;;;;;
                                  -49034;1;0;false;false;0;0;0;;;
                                  -49035;1;0;false;false;;;;;;
                                  -49036;10;0;false;false;0;0;0;;;
                                  -49046;1;0;false;false;;;;;;
                                  -49047;1;0;false;false;0;0;0;;;
                                  -49048;5;0;false;false;;;;;;
                                  -49053;65;0;false;false;63;127;95;;;
                                  -49118;3;0;false;false;;;;;;
                                  -49121;60;0;false;false;63;127;95;;;
                                  -49181;3;0;false;false;;;;;;
                                  -49184;8;0;false;false;0;0;0;;;
                                  -49192;1;0;false;false;;;;;;
                                  -49193;1;0;false;false;0;0;0;;;
                                  -49194;1;0;false;false;;;;;;
                                  -49195;2;0;false;false;0;0;0;;;
                                  -49197;5;0;false;false;;;;;;
                                  -49202;3;1;false;false;127;0;85;;;
                                  -49205;1;0;false;false;;;;;;
                                  -49206;1;0;false;false;0;0;0;;;
                                  -49207;3;1;false;false;127;0;85;;;
                                  -49210;1;0;false;false;;;;;;
                                  -49211;1;0;false;false;0;0;0;;;
                                  -49212;1;0;false;false;;;;;;
                                  -49213;1;0;false;false;0;0;0;;;
                                  -49214;1;0;false;false;;;;;;
                                  -49215;2;0;false;false;0;0;0;;;
                                  -49217;1;0;false;false;;;;;;
                                  -49218;1;0;false;false;0;0;0;;;
                                  -49219;1;0;false;false;;;;;;
                                  -49220;1;0;false;false;0;0;0;;;
                                  -49221;1;0;false;false;;;;;;
                                  -49222;10;0;false;false;0;0;0;;;
                                  -49232;1;0;false;false;;;;;;
                                  -49233;4;0;false;false;0;0;0;;;
                                  -49237;1;0;false;false;;;;;;
                                  -49238;1;0;false;false;0;0;0;;;
                                  -49239;6;0;false;false;;;;;;
                                  -49245;2;1;false;false;127;0;85;;;
                                  -49247;1;0;false;false;;;;;;
                                  -49248;13;0;false;false;0;0;0;;;
                                  -49261;1;0;false;false;;;;;;
                                  -49262;1;0;false;false;0;0;0;;;
                                  -49263;1;0;false;false;;;;;;
                                  -49264;9;0;false;false;0;0;0;;;
                                  -49273;1;0;false;false;;;;;;
                                  -49274;1;0;false;false;0;0;0;;;
                                  -49275;7;0;false;false;;;;;;
                                  -49282;8;0;false;false;0;0;0;;;
                                  -49290;1;0;false;false;;;;;;
                                  -49291;1;0;false;false;0;0;0;;;
                                  -49292;1;0;false;false;;;;;;
                                  -49293;13;0;false;false;0;0;0;;;
                                  -49306;7;0;false;false;;;;;;
                                  -49313;17;0;false;false;0;0;0;;;
                                  -49330;1;0;false;false;;;;;;
                                  -49331;1;0;false;false;0;0;0;;;
                                  -49332;1;0;false;false;;;;;;
                                  -49333;2;0;false;false;0;0;0;;;
                                  -49335;6;0;false;false;;;;;;
                                  -49341;1;0;false;false;0;0;0;;;
                                  -49342;5;0;false;false;;;;;;
                                  -49347;1;0;false;false;0;0;0;;;
                                  -49348;7;0;false;false;;;;;;
                                  -49355;1;0;false;false;0;0;0;;;
                                  -49356;3;0;false;false;;;;;;
                                  -49359;1;0;false;false;0;0;0;;;
                                  -49360;3;0;false;false;;;;;;
                                  -49363;1;0;false;false;0;0;0;;;
                                  -49364;3;0;false;false;;;;;;
                                  -49367;3;0;false;false;63;95;191;;;
                                  -49370;4;0;false;false;;;;;;
                                  -49374;1;0;false;false;63;95;191;;;
                                  -49375;1;0;false;false;;;;;;
                                  -49376;7;0;false;false;63;95;191;;;
                                  -49383;1;0;false;false;;;;;;
                                  -49384;3;0;false;false;63;95;191;;;
                                  -49387;1;0;false;false;;;;;;
                                  -49388;4;0;false;false;63;95;191;;;
                                  -49392;1;0;false;false;;;;;;
                                  -49393;8;0;false;false;63;95;191;;;
                                  -49401;1;0;false;false;;;;;;
                                  -49402;2;0;false;false;63;95;191;;;
                                  -49404;1;0;false;false;;;;;;
                                  -49405;3;0;false;false;63;95;191;;;
                                  -49408;1;0;false;false;;;;;;
                                  -49409;8;0;false;false;63;95;191;;;
                                  -49417;4;0;false;false;;;;;;
                                  -49421;1;0;false;false;63;95;191;;;
                                  -49422;1;0;false;false;;;;;;
                                  -49423;3;0;false;false;63;95;191;;;
                                  -49426;1;0;false;false;;;;;;
                                  -49427;4;0;false;false;63;95;191;;;
                                  -49431;1;0;false;false;;;;;;
                                  -49432;8;0;false;false;63;95;191;;;
                                  -49440;1;0;false;false;;;;;;
                                  -49441;4;0;false;false;63;95;191;;;
                                  -49445;1;0;false;false;;;;;;
                                  -49446;6;0;false;false;63;95;191;;;
                                  -49452;1;0;false;false;;;;;;
                                  -49453;2;0;false;false;63;95;191;;;
                                  -49455;1;0;false;false;;;;;;
                                  -49456;2;0;false;false;63;95;191;;;
                                  -49458;1;0;false;false;;;;;;
                                  -49459;1;0;false;false;63;95;191;;;
                                  -49460;1;0;false;false;;;;;;
                                  -49461;10;0;false;false;63;95;191;;;
                                  -49471;1;0;false;false;;;;;;
                                  -49472;6;0;false;false;63;95;191;;;
                                  -49478;5;0;false;false;;;;;;
                                  -49483;1;0;false;false;63;95;191;;;
                                  -49484;1;0;false;false;;;;;;
                                  -49485;10;0;false;false;63;95;191;;;
                                  -49495;1;0;false;false;;;;;;
                                  -49496;4;0;false;false;63;95;191;;;
                                  -49500;1;0;false;false;;;;;;
                                  -49501;6;0;false;false;127;127;159;;;
                                  -49507;5;0;false;false;63;95;191;;;
                                  -49512;7;0;false;false;127;127;159;;;
                                  -49519;1;0;false;false;;;;;;
                                  -49520;2;0;false;false;63;95;191;;;
                                  -49522;1;0;false;false;;;;;;
                                  -49523;6;0;false;false;127;127;159;;;
                                  -49529;11;0;false;false;63;95;191;;;
                                  -49540;7;0;false;false;127;127;159;;;
                                  -49547;4;0;false;false;;;;;;
                                  -49551;1;0;false;false;63;95;191;;;
                                  -49552;1;0;false;false;;;;;;
                                  -49553;2;0;false;false;63;95;191;;;
                                  -49555;1;0;false;false;;;;;;
                                  -49556;7;0;false;false;63;95;191;;;
                                  -49563;1;0;false;false;;;;;;
                                  -49564;3;0;false;false;63;95;191;;;
                                  -49567;1;0;false;false;;;;;;
                                  -49568;4;0;false;false;63;95;191;;;
                                  -49572;1;0;false;false;;;;;;
                                  -49573;8;0;false;false;63;95;191;;;
                                  -49581;1;0;false;false;;;;;;
                                  -49582;2;0;false;false;63;95;191;;;
                                  -49584;1;0;false;false;;;;;;
                                  -49585;12;0;false;false;63;95;191;;;
                                  -49597;1;0;false;false;;;;;;
                                  -49598;11;0;false;false;63;95;191;;;
                                  -49609;5;0;false;false;;;;;;
                                  -49614;1;0;false;false;63;95;191;;;
                                  -49615;1;0;false;false;;;;;;
                                  -49616;7;0;false;false;63;95;191;;;
                                  -49623;1;0;false;false;;;;;;
                                  -49624;2;0;false;false;63;95;191;;;
                                  -49626;1;0;false;false;;;;;;
                                  -49627;2;0;false;false;63;95;191;;;
                                  -49629;1;0;false;false;;;;;;
                                  -49630;6;0;false;false;127;127;159;;;
                                  -49636;9;0;false;false;63;95;191;;;
                                  -49645;7;0;false;false;127;127;159;;;
                                  -49652;1;0;false;false;63;95;191;;;
                                  -49653;4;0;false;false;;;;;;
                                  -49657;2;0;false;false;63;95;191;;;
                                  -49659;3;0;false;false;;;;;;
                                  -49662;5;1;false;false;127;0;85;;;
                                  -49667;1;0;false;false;;;;;;
                                  -49668;13;0;false;false;0;0;0;;;
                                  -49681;1;0;false;false;;;;;;
                                  -49682;10;1;false;false;127;0;85;;;
                                  -49692;1;0;false;false;;;;;;
                                  -49693;9;0;false;false;0;0;0;;;
                                  -49702;1;0;false;false;;;;;;
                                  -49703;1;0;false;false;0;0;0;;;
                                  -49704;4;0;false;false;;;;;;
                                  -49708;10;0;false;false;0;0;0;;;
                                  -49718;1;0;false;false;;;;;;
                                  -49719;7;0;false;false;0;0;0;;;
                                  -49726;4;0;false;false;;;;;;
                                  -49730;14;0;false;false;0;0;0;;;
                                  -49744;1;0;false;false;;;;;;
                                  -49745;14;0;false;false;0;0;0;;;
                                  -49759;9;0;false;false;;;;;;
                                  -49768;3;0;false;false;63;95;191;;;
                                  -49771;5;0;false;false;;;;;;
                                  -49776;1;0;false;false;63;95;191;;;
                                  -49777;1;0;false;false;;;;;;
                                  -49778;7;0;false;false;63;95;191;;;
                                  -49785;1;0;false;false;;;;;;
                                  -49786;1;0;false;false;63;95;191;;;
                                  -49787;1;0;false;false;;;;;;
                                  -49788;3;0;false;false;63;95;191;;;
                                  -49791;1;0;false;false;;;;;;
                                  -49792;6;0;false;false;127;127;159;;;
                                  -49798;13;0;false;false;63;95;191;;;
                                  -49811;7;0;false;false;127;127;159;;;
                                  -49818;1;0;false;false;;;;;;
                                  -49819;3;0;false;false;63;95;191;;;
                                  -49822;1;0;false;false;;;;;;
                                  -49823;10;0;false;false;63;95;191;;;
                                  -49833;1;0;false;false;;;;;;
                                  -49834;2;0;false;false;63;95;191;;;
                                  -49836;1;0;false;false;;;;;;
                                  -49837;7;0;false;false;63;95;191;;;
                                  -49844;4;0;false;false;;;;;;
                                  -49848;1;0;false;false;63;95;191;;;
                                  -49849;1;0;false;false;;;;;;
                                  -49850;4;0;false;false;63;95;191;;;
                                  -49854;1;0;false;false;;;;;;
                                  -49855;9;0;false;false;63;95;191;;;
                                  -49864;4;0;false;false;;;;;;
                                  -49868;1;0;false;false;63;95;191;;;
                                  -49869;1;0;false;false;;;;;;
                                  -49870;3;0;false;false;127;127;159;;;
                                  -49873;4;0;false;false;;;;;;
                                  -49877;1;0;false;false;63;95;191;;;
                                  -49878;4;0;false;false;;;;;;
                                  -49882;1;0;false;false;63;95;191;;;
                                  -49883;1;0;false;false;;;;;;
                                  -49884;7;1;false;false;127;159;191;;;
                                  -49891;6;0;false;false;63;95;191;;;
                                  -49897;1;0;false;false;;;;;;
                                  -49898;3;0;false;false;63;95;191;;;
                                  -49901;1;0;false;false;;;;;;
                                  -49902;10;0;false;false;63;95;191;;;
                                  -49912;1;0;false;false;;;;;;
                                  -49913;6;0;false;false;63;95;191;;;
                                  -49919;1;0;false;false;;;;;;
                                  -49920;2;0;false;false;63;95;191;;;
                                  -49922;1;0;false;false;;;;;;
                                  -49923;4;0;false;false;63;95;191;;;
                                  -49927;1;0;false;false;;;;;;
                                  -49928;7;0;false;false;63;95;191;;;
                                  -49935;1;0;false;false;;;;;;
                                  -49936;3;0;false;false;63;95;191;;;
                                  -49939;4;0;false;false;;;;;;
                                  -49943;1;0;false;false;63;95;191;;;
                                  -49944;1;0;false;false;;;;;;
                                  -49945;7;1;false;false;127;159;191;;;
                                  -49952;7;0;false;false;63;95;191;;;
                                  -49959;1;0;false;false;;;;;;
                                  -49960;3;0;false;false;63;95;191;;;
                                  -49963;1;0;false;false;;;;;;
                                  -49964;7;0;false;false;63;95;191;;;
                                  -49971;1;0;false;false;;;;;;
                                  -49972;8;0;false;false;63;95;191;;;
                                  -49980;1;0;false;false;;;;;;
                                  -49981;4;0;false;false;63;95;191;;;
                                  -49985;1;0;false;false;;;;;;
                                  -49986;4;0;false;false;63;95;191;;;
                                  -49990;1;0;false;false;;;;;;
                                  -49991;3;0;false;false;63;95;191;;;
                                  -49994;1;0;false;false;;;;;;
                                  -49995;6;0;false;false;63;95;191;;;
                                  -50001;1;0;false;false;;;;;;
                                  -50002;4;0;false;false;63;95;191;;;
                                  -50006;1;0;false;false;;;;;;
                                  -50007;9;0;false;false;63;95;191;;;
                                  -50016;4;0;false;false;;;;;;
                                  -50020;2;0;false;false;63;95;191;;;
                                  -50022;3;0;false;false;;;;;;
                                  -50025;6;1;false;false;127;0;85;;;
                                  -50031;1;0;false;false;;;;;;
                                  -50032;24;0;false;false;0;0;0;;;
                                  -50056;1;0;false;false;;;;;;
                                  -50057;7;0;false;false;0;0;0;;;
                                  -50064;1;0;false;false;;;;;;
                                  -50065;14;0;false;false;0;0;0;;;
                                  -50079;1;0;false;false;;;;;;
                                  -50080;8;0;false;false;0;0;0;;;
                                  -50088;1;0;false;false;;;;;;
                                  -50089;1;0;false;false;0;0;0;;;
                                  -50090;4;0;false;false;;;;;;
                                  -50094;4;1;false;false;127;0;85;;;
                                  -50098;7;0;false;false;0;0;0;;;
                                  -50105;1;0;false;false;;;;;;
                                  -50106;1;0;false;false;0;0;0;;;
                                  -50107;1;0;false;false;;;;;;
                                  -50108;7;0;false;false;0;0;0;;;
                                  -50115;4;0;false;false;;;;;;
                                  -50119;13;0;false;false;0;0;0;;;
                                  -50132;1;0;false;false;;;;;;
                                  -50133;1;0;false;false;0;0;0;;;
                                  -50134;1;0;false;false;;;;;;
                                  -50135;8;0;false;false;0;0;0;;;
                                  -50143;4;0;false;false;;;;;;
                                  -50147;26;0;false;false;0;0;0;;;
                                  -50173;3;0;false;false;;;;;;
                                  -50176;1;0;false;false;0;0;0;;;
                                  -50177;3;0;false;false;;;;;;
                                  -50180;3;0;false;false;63;95;191;;;
                                  -50183;4;0;false;false;;;;;;
                                  -50187;1;0;false;false;63;95;191;;;
                                  -50188;1;0;false;false;;;;;;
                                  -50189;2;0;false;false;63;95;191;;;
                                  -50191;1;0;false;false;;;;;;
                                  -50192;8;0;false;false;63;95;191;;;
                                  -50200;1;0;false;false;;;;;;
                                  -50201;5;0;false;false;63;95;191;;;
                                  -50206;1;0;false;false;;;;;;
                                  -50207;3;0;false;false;63;95;191;;;
                                  -50210;1;0;false;false;;;;;;
                                  -50211;7;0;false;false;63;95;191;;;
                                  -50218;1;0;false;false;;;;;;
                                  -50219;11;0;false;false;63;95;191;;;
                                  -50230;1;0;false;false;;;;;;
                                  -50231;5;0;false;false;63;95;191;;;
                                  -50236;1;0;false;false;;;;;;
                                  -50237;6;0;false;false;63;95;191;;;
                                  -50243;4;0;false;false;;;;;;
                                  -50247;1;0;false;false;63;95;191;;;
                                  -50248;1;0;false;false;;;;;;
                                  -50249;3;0;false;false;127;127;159;;;
                                  -50252;4;0;false;false;;;;;;
                                  -50256;1;0;false;false;63;95;191;;;
                                  -50257;5;0;false;false;;;;;;
                                  -50262;1;0;false;false;63;95;191;;;
                                  -50263;1;0;false;false;;;;;;
                                  -50264;7;1;false;false;127;159;191;;;
                                  -50271;9;0;false;false;63;95;191;;;
                                  -50280;1;0;false;false;;;;;;
                                  -50281;5;0;false;false;63;95;191;;;
                                  -50286;1;0;false;false;;;;;;
                                  -50287;4;0;false;false;63;95;191;;;
                                  -50291;1;0;false;false;;;;;;
                                  -50292;2;0;false;false;63;95;191;;;
                                  -50294;1;0;false;false;;;;;;
                                  -50295;9;0;false;false;63;95;191;;;
                                  -50304;4;0;false;false;;;;;;
                                  -50308;1;0;false;false;63;95;191;;;
                                  -50309;1;0;false;false;;;;;;
                                  -50310;7;1;false;false;127;159;191;;;
                                  -50317;9;0;false;false;63;95;191;;;
                                  -50326;1;0;false;false;;;;;;
                                  -50327;6;0;false;false;63;95;191;;;
                                  -50333;1;0;false;false;;;;;;
                                  -50334;2;0;false;false;63;95;191;;;
                                  -50336;1;0;false;false;;;;;;
                                  -50337;5;0;false;false;63;95;191;;;
                                  -50342;1;0;false;false;;;;;;
                                  -50343;2;0;false;false;63;95;191;;;
                                  -50345;1;0;false;false;;;;;;
                                  -50346;9;0;false;false;63;95;191;;;
                                  -50355;4;0;false;false;;;;;;
                                  -50359;2;0;false;false;63;95;191;;;
                                  -50361;3;0;false;false;;;;;;
                                  -50364;6;1;false;false;127;0;85;;;
                                  -50370;1;0;false;false;;;;;;
                                  -50371;4;1;false;false;127;0;85;;;
                                  -50375;1;0;false;false;;;;;;
                                  -50376;10;0;false;false;0;0;0;;;
                                  -50386;3;1;false;false;127;0;85;;;
                                  -50389;1;0;false;false;;;;;;
                                  -50390;10;0;false;false;0;0;0;;;
                                  -50400;1;0;false;false;;;;;;
                                  -50401;3;1;false;false;127;0;85;;;
                                  -50404;1;0;false;false;;;;;;
                                  -50405;10;0;false;false;0;0;0;;;
                                  -50415;1;0;false;false;;;;;;
                                  -50416;1;0;false;false;0;0;0;;;
                                  -50417;3;0;false;false;;;;;;
                                  -50420;1;0;false;false;0;0;0;;;
                                  -50421;3;0;false;false;;;;;;
                                  -50424;3;0;false;false;63;95;191;;;
                                  -50427;4;0;false;false;;;;;;
                                  -50431;1;0;false;false;63;95;191;;;
                                  -50432;1;0;false;false;;;;;;
                                  -50433;7;0;false;false;63;95;191;;;
                                  -50440;1;0;false;false;;;;;;
                                  -50441;3;0;false;false;63;95;191;;;
                                  -50444;1;0;false;false;;;;;;
                                  -50445;6;0;false;false;63;95;191;;;
                                  -50451;1;0;false;false;;;;;;
                                  -50452;4;0;false;false;63;95;191;;;
                                  -50456;1;0;false;false;;;;;;
                                  -50457;6;0;false;false;63;95;191;;;
                                  -50463;1;0;false;false;;;;;;
                                  -50464;5;0;false;false;63;95;191;;;
                                  -50469;1;0;false;false;;;;;;
                                  -50470;3;0;false;false;63;95;191;;;
                                  -50473;1;0;false;false;;;;;;
                                  -50474;7;0;false;false;63;95;191;;;
                                  -50481;1;0;false;false;;;;;;
                                  -50482;2;0;false;false;63;95;191;;;
                                  -50484;1;0;false;false;;;;;;
                                  -50485;5;0;false;false;63;95;191;;;
                                  -50490;4;0;false;false;;;;;;
                                  -50494;1;0;false;false;63;95;191;;;
                                  -50495;1;0;false;false;;;;;;
                                  -50496;2;0;false;false;63;95;191;;;
                                  -50498;1;0;false;false;;;;;;
                                  -50499;2;0;false;false;63;95;191;;;
                                  -50501;1;0;false;false;;;;;;
                                  -50502;10;0;false;false;63;95;191;;;
                                  -50512;1;0;false;false;;;;;;
                                  -50513;6;0;false;false;63;95;191;;;
                                  -50519;1;0;false;false;;;;;;
                                  -50520;4;0;false;false;63;95;191;;;
                                  -50524;4;0;false;false;;;;;;
                                  -50528;1;0;false;false;63;95;191;;;
                                  -50529;1;0;false;false;;;;;;
                                  -50530;3;0;false;false;127;127;159;;;
                                  -50533;4;0;false;false;;;;;;
                                  -50537;1;0;false;false;63;95;191;;;
                                  -50538;4;0;false;false;;;;;;
                                  -50542;1;0;false;false;63;95;191;;;
                                  -50543;1;0;false;false;;;;;;
                                  -50544;8;1;false;false;127;159;191;;;
                                  -50552;3;0;false;false;63;95;191;;;
                                  -50555;1;0;false;false;;;;;;
                                  -50556;4;0;false;false;63;95;191;;;
                                  -50560;1;0;false;false;;;;;;
                                  -50561;5;0;false;false;63;95;191;;;
                                  -50566;4;0;false;false;;;;;;
                                  -50570;2;0;false;false;63;95;191;;;
                                  -50572;3;0;false;false;;;;;;
                                  -50575;6;1;false;false;127;0;85;;;
                                  -50581;1;0;false;false;;;;;;
                                  -50582;3;1;false;false;127;0;85;;;
                                  -50585;1;0;false;false;;;;;;
                                  -50586;10;0;false;false;0;0;0;;;
                                  -50596;1;0;false;false;;;;;;
                                  -50597;1;0;false;false;0;0;0;;;
                                  -50598;4;0;false;false;;;;;;
                                  -50602;6;1;false;false;127;0;85;;;
                                  -50608;1;0;false;false;;;;;;
                                  -50609;29;0;false;false;0;0;0;;;
                                  -50638;3;0;false;false;;;;;;
                                  -50641;1;0;false;false;0;0;0;;;
                                  -50642;3;0;false;false;;;;;;
                                  -50645;3;0;false;false;63;95;191;;;
                                  -50648;4;0;false;false;;;;;;
                                  -50652;1;0;false;false;63;95;191;;;
                                  -50653;1;0;false;false;;;;;;
                                  -50654;5;0;false;false;63;95;191;;;
                                  -50659;1;0;false;false;;;;;;
                                  -50660;3;0;false;false;63;95;191;;;
                                  -50663;1;0;false;false;;;;;;
                                  -50664;5;0;false;false;63;95;191;;;
                                  -50669;1;0;false;false;;;;;;
                                  -50670;2;0;false;false;63;95;191;;;
                                  -50672;1;0;false;false;;;;;;
                                  -50673;3;0;false;false;63;95;191;;;
                                  -50676;1;0;false;false;;;;;;
                                  -50677;9;0;false;false;63;95;191;;;
                                  -50686;1;0;false;false;;;;;;
                                  -50687;6;0;false;false;63;95;191;;;
                                  -50693;4;0;false;false;;;;;;
                                  -50697;1;0;false;false;63;95;191;;;
                                  -50698;1;0;false;false;;;;;;
                                  -50699;4;0;false;false;63;95;191;;;
                                  -50703;1;0;false;false;;;;;;
                                  -50704;6;0;false;false;63;95;191;;;
                                  -50710;1;0;false;false;;;;;;
                                  -50711;2;0;false;false;63;95;191;;;
                                  -50713;1;0;false;false;;;;;;
                                  -50714;6;0;false;false;63;95;191;;;
                                  -50720;1;0;false;false;;;;;;
                                  -50721;2;0;false;false;63;95;191;;;
                                  -50723;1;0;false;false;;;;;;
                                  -50724;6;0;false;false;127;127;159;;;
                                  -50730;19;0;false;false;63;95;191;;;
                                  -50749;7;0;false;false;127;127;159;;;
                                  -50756;1;0;false;false;63;95;191;;;
                                  -50757;4;0;false;false;;;;;;
                                  -50761;1;0;false;false;63;95;191;;;
                                  -50762;1;0;false;false;;;;;;
                                  -50763;1;0;false;false;63;95;191;;;
                                  -50764;1;0;false;false;;;;;;
                                  -50765;6;0;false;false;63;95;191;;;
                                  -50771;1;0;false;false;;;;;;
                                  -50772;2;0;false;false;63;95;191;;;
                                  -50774;1;0;false;false;;;;;;
                                  -50775;9;0;false;false;63;95;191;;;
                                  -50784;1;0;false;false;;;;;;
                                  -50785;3;0;false;false;63;95;191;;;
                                  -50788;1;0;false;false;;;;;;
                                  -50789;10;0;false;false;63;95;191;;;
                                  -50799;4;0;false;false;;;;;;
                                  -50803;1;0;false;false;63;95;191;;;
                                  -50804;1;0;false;false;;;;;;
                                  -50805;3;0;false;false;127;127;159;;;
                                  -50808;4;0;false;false;;;;;;
                                  -50812;1;0;false;false;63;95;191;;;
                                  -50813;4;0;false;false;;;;;;
                                  -50817;1;0;false;false;63;95;191;;;
                                  -50818;1;0;false;false;;;;;;
                                  -50819;7;1;false;false;127;159;191;;;
                                  -50826;9;0;false;false;63;95;191;;;
                                  -50835;1;0;false;false;;;;;;
                                  -50836;3;0;false;false;63;95;191;;;
                                  -50839;1;0;false;false;;;;;;
                                  -50840;5;0;false;false;63;95;191;;;
                                  -50845;1;0;false;false;;;;;;
                                  -50846;4;0;false;false;63;95;191;;;
                                  -50850;1;0;false;false;;;;;;
                                  -50851;2;0;false;false;63;95;191;;;
                                  -50853;1;0;false;false;;;;;;
                                  -50854;5;0;false;false;63;95;191;;;
                                  -50859;4;0;false;false;;;;;;
                                  -50863;1;0;false;false;63;95;191;;;
                                  -50864;1;0;false;false;;;;;;
                                  -50865;7;1;false;false;127;159;191;;;
                                  -50872;9;0;false;false;63;95;191;;;
                                  -50881;1;0;false;false;;;;;;
                                  -50882;3;0;false;false;63;95;191;;;
                                  -50885;1;0;false;false;;;;;;
                                  -50886;6;0;false;false;63;95;191;;;
                                  -50892;1;0;false;false;;;;;;
                                  -50893;2;0;false;false;63;95;191;;;
                                  -50895;1;0;false;false;;;;;;
                                  -50896;5;0;false;false;63;95;191;;;
                                  -50901;1;0;false;false;;;;;;
                                  -50902;2;0;false;false;63;95;191;;;
                                  -50904;1;0;false;false;;;;;;
                                  -50905;5;0;false;false;63;95;191;;;
                                  -50910;4;0;false;false;;;;;;
                                  -50914;1;0;false;false;63;95;191;;;
                                  -50915;1;0;false;false;;;;;;
                                  -50916;7;1;false;false;127;159;191;;;
                                  -50923;17;0;false;false;63;95;191;;;
                                  -50940;1;0;false;false;;;;;;
                                  -50941;17;0;false;false;63;95;191;;;
                                  -50958;1;0;false;false;;;;;;
                                  -50959;6;0;false;false;63;95;191;;;
                                  -50965;1;0;false;false;;;;;;
                                  -50966;6;0;false;false;63;95;191;;;
                                  -50972;1;0;false;false;;;;;;
                                  -50973;1;0;false;false;63;95;191;;;
                                  -50974;5;0;false;false;;;;;;
                                  -50979;1;0;false;false;63;95;191;;;
                                  -50980;2;0;false;false;;;;;;
                                  -50982;5;0;false;false;63;95;191;;;
                                  -50987;1;0;false;false;;;;;;
                                  -50988;5;0;false;false;63;95;191;;;
                                  -50993;1;0;false;false;;;;;;
                                  -50994;4;0;false;false;63;95;191;;;
                                  -50998;1;0;false;false;;;;;;
                                  -50999;2;0;false;false;63;95;191;;;
                                  -51001;1;0;false;false;;;;;;
                                  -51002;2;0;false;false;63;95;191;;;
                                  -51004;1;0;false;false;;;;;;
                                  -51005;2;0;false;false;63;95;191;;;
                                  -51007;1;0;false;false;;;;;;
                                  -51008;8;0;false;false;63;95;191;;;
                                  -51016;1;0;false;false;;;;;;
                                  -51017;2;0;false;false;63;95;191;;;
                                  -51019;1;0;false;false;;;;;;
                                  -51020;3;0;false;false;63;95;191;;;
                                  -51023;1;0;false;false;;;;;;
                                  -51024;5;0;false;false;63;95;191;;;
                                  -51029;1;0;false;false;;;;;;
                                  -51030;10;0;false;false;63;95;191;;;
                                  -51040;4;0;false;false;;;;;;
                                  -51044;1;0;false;false;63;95;191;;;
                                  -51045;2;0;false;false;;;;;;
                                  -51047;9;0;false;false;63;95;191;;;
                                  -51056;1;0;false;false;;;;;;
                                  -51057;5;0;false;false;63;95;191;;;
                                  -51062;1;0;false;false;;;;;;
                                  -51063;3;0;false;false;63;95;191;;;
                                  -51066;1;0;false;false;;;;;;
                                  -51067;2;0;false;false;63;95;191;;;
                                  -51069;1;0;false;false;;;;;;
                                  -51070;3;0;false;false;63;95;191;;;
                                  -51073;1;0;false;false;;;;;;
                                  -51074;2;0;false;false;63;95;191;;;
                                  -51076;1;0;false;false;;;;;;
                                  -51077;1;0;false;false;63;95;191;;;
                                  -51078;4;0;false;false;;;;;;
                                  -51082;2;0;false;false;63;95;191;;;
                                  -51084;3;0;false;false;;;;;;
                                  -51087;6;1;false;false;127;0;85;;;
                                  -51093;1;0;false;false;;;;;;
                                  -51094;4;1;false;false;127;0;85;;;
                                  -51098;1;0;false;false;;;;;;
                                  -51099;12;0;false;false;0;0;0;;;
                                  -51111;3;1;false;false;127;0;85;;;
                                  -51114;1;0;false;false;;;;;;
                                  -51115;10;0;false;false;0;0;0;;;
                                  -51125;1;0;false;false;;;;;;
                                  -51126;3;1;false;false;127;0;85;;;
                                  -51129;1;0;false;false;;;;;;
                                  -51130;10;0;false;false;0;0;0;;;
                                  -51140;1;0;false;false;;;;;;
                                  -51141;7;1;false;false;127;0;85;;;
                                  -51148;1;0;false;false;;;;;;
                                  -51149;18;0;false;false;0;0;0;;;
                                  -51167;1;0;false;false;;;;;;
                                  -51168;1;0;false;false;0;0;0;;;
                                  -51169;7;0;false;false;;;;;;
                                  -51176;2;1;false;false;127;0;85;;;
                                  -51178;1;0;false;false;;;;;;
                                  -51179;10;0;false;false;0;0;0;;;
                                  -51189;1;0;false;false;;;;;;
                                  -51190;2;0;false;false;0;0;0;;;
                                  -51192;1;0;false;false;;;;;;
                                  -51193;29;0;false;false;0;0;0;;;
                                  -51222;1;0;false;false;;;;;;
                                  -51223;1;0;false;false;0;0;0;;;
                                  -51224;5;0;false;false;;;;;;
                                  -51229;44;0;false;false;63;127;95;;;
                                  -51273;3;0;false;false;;;;;;
                                  -51276;26;0;false;false;0;0;0;;;
                                  -51302;7;0;false;false;;;;;;
                                  -51309;1;0;false;false;0;0;0;;;
                                  -51310;7;0;false;false;;;;;;
                                  -51317;4;1;false;false;127;0;85;;;
                                  -51321;1;0;false;false;;;;;;
                                  -51322;1;0;false;false;0;0;0;;;
                                  -51323;8;0;false;false;;;;;;
                                  -51331;30;0;false;false;0;0;0;;;
                                  -51361;1;0;false;false;;;;;;
                                  -51362;11;0;false;false;0;0;0;;;
                                  -51373;7;0;false;false;;;;;;
                                  -51380;1;0;false;false;0;0;0;;;
                                  -51381;3;0;false;false;;;;;;
                                  -51384;1;0;false;false;0;0;0;;;
                                  -51385;3;0;false;false;;;;;;
                                  -51388;3;0;false;false;63;95;191;;;
                                  -51391;4;0;false;false;;;;;;
                                  -51395;1;0;false;false;63;95;191;;;
                                  -51396;1;0;false;false;;;;;;
                                  -51397;7;0;false;false;63;95;191;;;
                                  -51404;1;0;false;false;;;;;;
                                  -51405;3;0;false;false;63;95;191;;;
                                  -51408;1;0;false;false;;;;;;
                                  -51409;5;0;false;false;63;95;191;;;
                                  -51414;1;0;false;false;;;;;;
                                  -51415;2;0;false;false;63;95;191;;;
                                  -51417;1;0;false;false;;;;;;
                                  -51418;3;0;false;false;63;95;191;;;
                                  -51421;1;0;false;false;;;;;;
                                  -51422;9;0;false;false;63;95;191;;;
                                  -51431;1;0;false;false;;;;;;
                                  -51432;5;0;false;false;63;95;191;;;
                                  -51437;1;0;false;false;;;;;;
                                  -51438;3;0;false;false;63;95;191;;;
                                  -51441;1;0;false;false;;;;;;
                                  -51442;7;0;false;false;63;95;191;;;
                                  -51449;4;0;false;false;;;;;;
                                  -51453;1;0;false;false;63;95;191;;;
                                  -51454;1;0;false;false;;;;;;
                                  -51455;3;0;false;false;63;95;191;;;
                                  -51458;1;0;false;false;;;;;;
                                  -51459;6;0;false;false;63;95;191;;;
                                  -51465;1;0;false;false;;;;;;
                                  -51466;2;0;false;false;63;95;191;;;
                                  -51468;1;0;false;false;;;;;;
                                  -51469;3;0;false;false;63;95;191;;;
                                  -51472;1;0;false;false;;;;;;
                                  -51473;4;0;false;false;63;95;191;;;
                                  -51477;1;0;false;false;;;;;;
                                  -51478;8;0;false;false;63;95;191;;;
                                  -51486;1;0;false;false;;;;;;
                                  -51487;3;0;false;false;63;95;191;;;
                                  -51490;1;0;false;false;;;;;;
                                  -51491;8;0;false;false;63;95;191;;;
                                  -51499;4;0;false;false;;;;;;
                                  -51503;1;0;false;false;63;95;191;;;
                                  -51504;1;0;false;false;;;;;;
                                  -51505;3;0;false;false;127;127;159;;;
                                  -51508;4;0;false;false;;;;;;
                                  -51512;1;0;false;false;63;95;191;;;
                                  -51513;4;0;false;false;;;;;;
                                  -51517;1;0;false;false;63;95;191;;;
                                  -51518;1;0;false;false;;;;;;
                                  -51519;7;1;false;false;127;159;191;;;
                                  -51526;9;0;false;false;63;95;191;;;
                                  -51535;1;0;false;false;;;;;;
                                  -51536;3;0;false;false;63;95;191;;;
                                  -51539;1;0;false;false;;;;;;
                                  -51540;5;0;false;false;63;95;191;;;
                                  -51545;1;0;false;false;;;;;;
                                  -51546;4;0;false;false;63;95;191;;;
                                  -51550;1;0;false;false;;;;;;
                                  -51551;2;0;false;false;63;95;191;;;
                                  -51553;1;0;false;false;;;;;;
                                  -51554;5;0;false;false;63;95;191;;;
                                  -51559;4;0;false;false;;;;;;
                                  -51563;1;0;false;false;63;95;191;;;
                                  -51564;1;0;false;false;;;;;;
                                  -51565;7;1;false;false;127;159;191;;;
                                  -51572;9;0;false;false;63;95;191;;;
                                  -51581;1;0;false;false;;;;;;
                                  -51582;3;0;false;false;63;95;191;;;
                                  -51585;1;0;false;false;;;;;;
                                  -51586;6;0;false;false;63;95;191;;;
                                  -51592;1;0;false;false;;;;;;
                                  -51593;2;0;false;false;63;95;191;;;
                                  -51595;1;0;false;false;;;;;;
                                  -51596;5;0;false;false;63;95;191;;;
                                  -51601;1;0;false;false;;;;;;
                                  -51602;2;0;false;false;63;95;191;;;
                                  -51604;1;0;false;false;;;;;;
                                  -51605;5;0;false;false;63;95;191;;;
                                  -51610;4;0;false;false;;;;;;
                                  -51614;1;0;false;false;63;95;191;;;
                                  -51615;1;0;false;false;;;;;;
                                  -51616;7;1;false;false;127;159;191;;;
                                  -51623;17;0;false;false;63;95;191;;;
                                  -51640;1;0;false;false;;;;;;
                                  -51641;17;0;false;false;63;95;191;;;
                                  -51658;1;0;false;false;;;;;;
                                  -51659;6;0;false;false;63;95;191;;;
                                  -51665;1;0;false;false;;;;;;
                                  -51666;6;0;false;false;63;95;191;;;
                                  -51672;1;0;false;false;;;;;;
                                  -51673;1;0;false;false;63;95;191;;;
                                  -51674;5;0;false;false;;;;;;
                                  -51679;1;0;false;false;63;95;191;;;
                                  -51680;2;0;false;false;;;;;;
                                  -51682;5;0;false;false;63;95;191;;;
                                  -51687;1;0;false;false;;;;;;
                                  -51688;5;0;false;false;63;95;191;;;
                                  -51693;1;0;false;false;;;;;;
                                  -51694;4;0;false;false;63;95;191;;;
                                  -51698;1;0;false;false;;;;;;
                                  -51699;2;0;false;false;63;95;191;;;
                                  -51701;1;0;false;false;;;;;;
                                  -51702;2;0;false;false;63;95;191;;;
                                  -51704;1;0;false;false;;;;;;
                                  -51705;2;0;false;false;63;95;191;;;
                                  -51707;1;0;false;false;;;;;;
                                  -51708;8;0;false;false;63;95;191;;;
                                  -51716;1;0;false;false;;;;;;
                                  -51717;2;0;false;false;63;95;191;;;
                                  -51719;1;0;false;false;;;;;;
                                  -51720;3;0;false;false;63;95;191;;;
                                  -51723;1;0;false;false;;;;;;
                                  -51724;5;0;false;false;63;95;191;;;
                                  -51729;1;0;false;false;;;;;;
                                  -51730;10;0;false;false;63;95;191;;;
                                  -51740;4;0;false;false;;;;;;
                                  -51744;1;0;false;false;63;95;191;;;
                                  -51745;2;0;false;false;;;;;;
                                  -51747;9;0;false;false;63;95;191;;;
                                  -51756;1;0;false;false;;;;;;
                                  -51757;5;0;false;false;63;95;191;;;
                                  -51762;1;0;false;false;;;;;;
                                  -51763;3;0;false;false;63;95;191;;;
                                  -51766;1;0;false;false;;;;;;
                                  -51767;2;0;false;false;63;95;191;;;
                                  -51769;1;0;false;false;;;;;;
                                  -51770;3;0;false;false;63;95;191;;;
                                  -51773;1;0;false;false;;;;;;
                                  -51774;2;0;false;false;63;95;191;;;
                                  -51776;1;0;false;false;;;;;;
                                  -51777;1;0;false;false;63;95;191;;;
                                  -51778;4;0;false;false;;;;;;
                                  -51782;2;0;false;false;63;95;191;;;
                                  -51784;3;0;false;false;;;;;;
                                  -51787;6;1;false;false;127;0;85;;;
                                  -51793;1;0;false;false;;;;;;
                                  -51794;4;1;false;false;127;0;85;;;
                                  -51798;1;0;false;false;;;;;;
                                  -51799;6;0;false;false;0;0;0;;;
                                  -51805;3;1;false;false;127;0;85;;;
                                  -51808;1;0;false;false;;;;;;
                                  -51809;10;0;false;false;0;0;0;;;
                                  -51819;1;0;false;false;;;;;;
                                  -51820;3;1;false;false;127;0;85;;;
                                  -51823;1;0;false;false;;;;;;
                                  -51824;10;0;false;false;0;0;0;;;
                                  -51834;1;0;false;false;;;;;;
                                  -51835;7;1;false;false;127;0;85;;;
                                  -51842;1;0;false;false;;;;;;
                                  -51843;18;0;false;false;0;0;0;;;
                                  -51861;1;0;false;false;;;;;;
                                  -51862;1;0;false;false;0;0;0;;;
                                  -51863;4;0;false;false;;;;;;
                                  -51867;3;1;false;false;127;0;85;;;
                                  -51870;1;0;false;false;;;;;;
                                  -51871;9;0;false;false;0;0;0;;;
                                  -51880;1;0;false;false;;;;;;
                                  -51881;1;0;false;false;0;0;0;;;
                                  -51882;1;0;false;false;;;;;;
                                  -51883;23;0;false;false;0;0;0;;;
                                  -51906;1;0;false;false;;;;;;
                                  -51907;1;0;false;false;0;0;0;;;
                                  -51908;1;0;false;false;;;;;;
                                  -51909;8;0;false;false;0;0;0;;;
                                  -51917;1;0;false;false;;;;;;
                                  -51918;1;0;false;false;0;0;0;;;
                                  -51919;1;0;false;false;;;;;;
                                  -51920;2;0;false;false;0;0;0;;;
                                  -51922;7;0;false;false;;;;;;
                                  -51929;3;1;false;false;127;0;85;;;
                                  -51932;2;0;false;false;0;0;0;;;
                                  -51934;1;0;false;false;;;;;;
                                  -51935;14;0;false;false;0;0;0;;;
                                  -51949;1;0;false;false;;;;;;
                                  -51950;1;0;false;false;0;0;0;;;
                                  -51951;1;0;false;false;;;;;;
                                  -51952;3;1;false;false;127;0;85;;;
                                  -51955;1;0;false;false;;;;;;
                                  -51956;3;1;false;false;127;0;85;;;
                                  -51959;12;0;false;false;0;0;0;;;
                                  -51971;14;0;false;false;;;;;;
                                  -51985;3;1;false;false;127;0;85;;;
                                  -51988;1;0;false;false;;;;;;
                                  -51989;1;0;false;false;0;0;0;;;
                                  -51990;3;1;false;false;127;0;85;;;
                                  -51993;1;0;false;false;;;;;;
                                  -51994;1;0;false;false;0;0;0;;;
                                  -51995;1;0;false;false;;;;;;
                                  -51996;1;0;false;false;0;0;0;;;
                                  -51997;1;0;false;false;;;;;;
                                  -51998;2;0;false;false;0;0;0;;;
                                  -52000;1;0;false;false;;;;;;
                                  -52001;1;0;false;false;0;0;0;;;
                                  -52002;1;0;false;false;;;;;;
                                  -52003;1;0;false;false;0;0;0;;;
                                  -52004;1;0;false;false;;;;;;
                                  -52005;10;0;false;false;0;0;0;;;
                                  -52015;1;0;false;false;;;;;;
                                  -52016;4;0;false;false;0;0;0;;;
                                  -52020;1;0;false;false;;;;;;
                                  -52021;1;0;false;false;0;0;0;;;
                                  -52022;8;0;false;false;;;;;;
                                  -52030;17;0;false;false;0;0;0;;;
                                  -52047;1;0;false;false;;;;;;
                                  -52048;1;0;false;false;0;0;0;;;
                                  -52049;1;0;false;false;;;;;;
                                  -52050;31;0;false;false;0;0;0;;;
                                  -52081;1;0;false;false;;;;;;
                                  -52082;1;0;false;false;0;0;0;;;
                                  -52083;1;0;false;false;;;;;;
                                  -52084;10;0;false;false;0;0;0;;;
                                  -52094;7;0;false;false;;;;;;
                                  -52101;1;0;false;false;0;0;0;;;
                                  -52102;7;0;false;false;;;;;;
                                  -52109;22;0;false;false;0;0;0;;;
                                  -52131;1;0;false;false;;;;;;
                                  -52132;10;0;false;false;0;0;0;;;
                                  -52142;1;0;false;false;;;;;;
                                  -52143;19;0;false;false;0;0;0;;;
                                  -52162;4;0;false;false;;;;;;
                                  -52166;53;0;false;false;63;127;95;;;
                                  -52219;5;0;false;false;;;;;;
                                  -52224;2;1;false;false;127;0;85;;;
                                  -52226;1;0;false;false;;;;;;
                                  -52227;24;0;false;false;0;0;0;;;
                                  -52251;1;0;false;false;;;;;;
                                  -52252;1;0;false;false;0;0;0;;;
                                  -52253;1;0;false;false;;;;;;
                                  -52254;8;0;false;false;0;0;0;;;
                                  -52262;1;0;false;false;;;;;;
                                  -52263;1;0;false;false;0;0;0;;;
                                  -52264;1;0;false;false;;;;;;
                                  -52265;1;0;false;false;0;0;0;;;
                                  -52266;1;0;false;false;;;;;;
                                  -52267;2;0;false;false;0;0;0;;;
                                  -52269;1;0;false;false;;;;;;
                                  -52270;10;0;false;false;0;0;0;;;
                                  -52280;1;0;false;false;;;;;;
                                  -52281;1;0;false;false;0;0;0;;;
                                  -52282;8;0;false;false;;;;;;
                                  -52290;40;0;false;false;63;127;95;;;
                                  -52330;6;0;false;false;;;;;;
                                  -52336;24;0;false;false;0;0;0;;;
                                  -52360;7;0;false;false;;;;;;
                                  -52367;1;0;false;false;0;0;0;;;
                                  -52368;7;0;false;false;;;;;;
                                  -52375;4;1;false;false;127;0;85;;;
                                  -52379;1;0;false;false;;;;;;
                                  -52380;1;0;false;false;0;0;0;;;
                                  -52381;8;0;false;false;;;;;;
                                  -52389;3;1;false;false;127;0;85;;;
                                  -52392;1;0;false;false;;;;;;
                                  -52393;1;0;false;false;0;0;0;;;
                                  -52394;3;1;false;false;127;0;85;;;
                                  -52397;1;0;false;false;;;;;;
                                  -52398;1;0;false;false;0;0;0;;;
                                  -52399;1;0;false;false;;;;;;
                                  -52400;1;0;false;false;0;0;0;;;
                                  -52401;1;0;false;false;;;;;;
                                  -52402;2;0;false;false;0;0;0;;;
                                  -52404;1;0;false;false;;;;;;
                                  -52405;1;0;false;false;0;0;0;;;
                                  -52406;1;0;false;false;;;;;;
                                  -52407;1;0;false;false;0;0;0;;;
                                  -52408;1;0;false;false;;;;;;
                                  -52409;10;0;false;false;0;0;0;;;
                                  -52419;1;0;false;false;;;;;;
                                  -52420;4;0;false;false;0;0;0;;;
                                  -52424;1;0;false;false;;;;;;
                                  -52425;1;0;false;false;0;0;0;;;
                                  -52426;9;0;false;false;;;;;;
                                  -52435;2;1;false;false;127;0;85;;;
                                  -52437;1;0;false;false;;;;;;
                                  -52438;32;0;false;false;0;0;0;;;
                                  -52470;1;0;false;false;;;;;;
                                  -52471;1;0;false;false;0;0;0;;;
                                  -52472;1;0;false;false;;;;;;
                                  -52473;9;0;false;false;0;0;0;;;
                                  -52482;1;0;false;false;;;;;;
                                  -52483;2;0;false;false;0;0;0;;;
                                  -52485;1;0;false;false;;;;;;
                                  -52486;18;0;false;false;0;0;0;;;
                                  -52504;1;0;false;false;;;;;;
                                  -52505;1;0;false;false;0;0;0;;;
                                  -52506;10;0;false;false;;;;;;
                                  -52516;53;0;false;false;63;127;95;;;
                                  -52569;8;0;false;false;;;;;;
                                  -52577;24;0;false;false;0;0;0;;;
                                  -52601;10;0;false;false;;;;;;
                                  -52611;5;1;false;false;127;0;85;;;
                                  -52616;1;0;false;false;0;0;0;;;
                                  -52617;9;0;false;false;;;;;;
                                  -52626;1;0;false;false;0;0;0;;;
                                  -52627;8;0;false;false;;;;;;
                                  -52635;1;0;false;false;0;0;0;;;
                                  -52636;13;0;false;false;;;;;;
                                  -52649;1;0;false;false;0;0;0;;;
                                  -52650;3;0;false;false;;;;;;
                                  -52653;1;0;false;false;0;0;0;;;
                                  -52654;3;0;false;false;;;;;;
                                  -52657;3;0;false;false;63;95;191;;;
                                  -52660;5;0;false;false;;;;;;
                                  -52665;1;0;false;false;63;95;191;;;
                                  -52666;1;0;false;false;;;;;;
                                  -52667;6;0;false;false;63;95;191;;;
                                  -52673;1;0;false;false;;;;;;
                                  -52674;3;0;false;false;63;95;191;;;
                                  -52677;1;0;false;false;;;;;;
                                  -52678;4;0;false;false;63;95;191;;;
                                  -52682;1;0;false;false;;;;;;
                                  -52683;6;0;false;false;63;95;191;;;
                                  -52689;1;0;false;false;;;;;;
                                  -52690;12;0;false;false;63;95;191;;;
                                  -52702;1;0;false;false;;;;;;
                                  -52703;2;0;false;false;63;95;191;;;
                                  -52705;1;0;false;false;;;;;;
                                  -52706;3;0;false;false;63;95;191;;;
                                  -52709;1;0;false;false;;;;;;
                                  -52710;4;0;false;false;63;95;191;;;
                                  -52714;1;0;false;false;;;;;;
                                  -52715;4;0;false;false;63;95;191;;;
                                  -52719;1;0;false;false;;;;;;
                                  -52720;8;0;false;false;63;95;191;;;
                                  -52728;4;0;false;false;;;;;;
                                  -52732;1;0;false;false;63;95;191;;;
                                  -52733;1;0;false;false;;;;;;
                                  -52734;3;0;false;false;127;127;159;;;
                                  -52737;4;0;false;false;;;;;;
                                  -52741;1;0;false;false;63;95;191;;;
                                  -52742;4;0;false;false;;;;;;
                                  -52746;1;0;false;false;63;95;191;;;
                                  -52747;1;0;false;false;;;;;;
                                  -52748;7;1;false;false;127;159;191;;;
                                  -52755;11;0;false;false;63;95;191;;;
                                  -52766;1;0;false;false;;;;;;
                                  -52767;3;0;false;false;63;95;191;;;
                                  -52770;1;0;false;false;;;;;;
                                  -52771;5;0;false;false;63;95;191;;;
                                  -52776;1;0;false;false;;;;;;
                                  -52777;6;0;false;false;63;95;191;;;
                                  -52783;1;0;false;false;;;;;;
                                  -52784;2;0;false;false;63;95;191;;;
                                  -52786;1;0;false;false;;;;;;
                                  -52787;3;0;false;false;63;95;191;;;
                                  -52790;1;0;false;false;;;;;;
                                  -52791;4;0;false;false;63;95;191;;;
                                  -52795;1;0;false;false;;;;;;
                                  -52796;6;0;false;false;63;95;191;;;
                                  -52802;4;0;false;false;;;;;;
                                  -52806;1;0;false;false;63;95;191;;;
                                  -52807;1;0;false;false;;;;;;
                                  -52808;7;1;false;false;127;159;191;;;
                                  -52815;12;0;false;false;63;95;191;;;
                                  -52827;1;0;false;false;;;;;;
                                  -52828;3;0;false;false;63;95;191;;;
                                  -52831;1;0;false;false;;;;;;
                                  -52832;6;0;false;false;63;95;191;;;
                                  -52838;1;0;false;false;;;;;;
                                  -52839;2;0;false;false;63;95;191;;;
                                  -52841;1;0;false;false;;;;;;
                                  -52842;8;0;false;false;63;95;191;;;
                                  -52850;1;0;false;false;;;;;;
                                  -52851;5;0;false;false;63;95;191;;;
                                  -52856;4;0;false;false;;;;;;
                                  -52860;1;0;false;false;63;95;191;;;
                                  -52861;1;0;false;false;;;;;;
                                  -52862;7;1;false;false;127;159;191;;;
                                  -52869;16;0;false;false;63;95;191;;;
                                  -52885;1;0;false;false;;;;;;
                                  -52886;3;0;false;false;63;95;191;;;
                                  -52889;1;0;false;false;;;;;;
                                  -52890;6;0;false;false;63;95;191;;;
                                  -52896;1;0;false;false;;;;;;
                                  -52897;2;0;false;false;63;95;191;;;
                                  -52899;1;0;false;false;;;;;;
                                  -52900;7;0;false;false;63;95;191;;;
                                  -52907;1;0;false;false;;;;;;
                                  -52908;5;0;false;false;63;95;191;;;
                                  -52913;4;0;false;false;;;;;;
                                  -52917;1;0;false;false;63;95;191;;;
                                  -52918;1;0;false;false;;;;;;
                                  -52919;7;1;false;false;127;159;191;;;
                                  -52926;12;0;false;false;63;95;191;;;
                                  -52938;1;0;false;false;;;;;;
                                  -52939;3;0;false;false;63;95;191;;;
                                  -52942;1;0;false;false;;;;;;
                                  -52943;6;0;false;false;63;95;191;;;
                                  -52949;1;0;false;false;;;;;;
                                  -52950;2;0;false;false;63;95;191;;;
                                  -52952;1;0;false;false;;;;;;
                                  -52953;3;0;false;false;63;95;191;;;
                                  -52956;1;0;false;false;;;;;;
                                  -52957;10;0;false;false;63;95;191;;;
                                  -52967;4;0;false;false;;;;;;
                                  -52971;1;0;false;false;63;95;191;;;
                                  -52972;1;0;false;false;;;;;;
                                  -52973;7;1;false;false;127;159;191;;;
                                  -52980;16;0;false;false;63;95;191;;;
                                  -52996;1;0;false;false;;;;;;
                                  -52997;3;0;false;false;63;95;191;;;
                                  -53000;1;0;false;false;;;;;;
                                  -53001;6;0;false;false;63;95;191;;;
                                  -53007;1;0;false;false;;;;;;
                                  -53008;2;0;false;false;63;95;191;;;
                                  -53010;1;0;false;false;;;;;;
                                  -53011;7;0;false;false;63;95;191;;;
                                  -53018;1;0;false;false;;;;;;
                                  -53019;10;0;false;false;63;95;191;;;
                                  -53029;4;0;false;false;;;;;;
                                  -53033;2;0;false;false;63;95;191;;;
                                  -53035;5;0;false;false;;;;;;
                                  -53040;6;1;false;false;127;0;85;;;
                                  -53046;1;0;false;false;;;;;;
                                  -53047;4;1;false;false;127;0;85;;;
                                  -53051;1;0;false;false;;;;;;
                                  -53052;12;0;false;false;0;0;0;;;
                                  -53064;3;1;false;false;127;0;85;;;
                                  -53067;1;0;false;false;;;;;;
                                  -53068;12;0;false;false;0;0;0;;;
                                  -53080;1;0;false;false;;;;;;
                                  -53081;3;1;false;false;127;0;85;;;
                                  -53084;1;0;false;false;;;;;;
                                  -53085;13;0;false;false;0;0;0;;;
                                  -53098;1;0;false;false;;;;;;
                                  -53099;3;1;false;false;127;0;85;;;
                                  -53102;1;0;false;false;;;;;;
                                  -53103;17;0;false;false;0;0;0;;;
                                  -53120;1;0;false;false;;;;;;
                                  -53121;3;1;false;false;127;0;85;;;
                                  -53124;1;0;false;false;;;;;;
                                  -53125;13;0;false;false;0;0;0;;;
                                  -53138;1;0;false;false;;;;;;
                                  -53139;3;1;false;false;127;0;85;;;
                                  -53142;1;0;false;false;;;;;;
                                  -53143;17;0;false;false;0;0;0;;;
                                  -53160;1;0;false;false;;;;;;
                                  -53161;1;0;false;false;0;0;0;;;
                                  -53162;4;0;false;false;;;;;;
                                  -53166;3;1;false;false;127;0;85;;;
                                  -53169;1;0;false;false;;;;;;
                                  -53170;9;0;false;false;0;0;0;;;
                                  -53179;1;0;false;false;;;;;;
                                  -53180;1;0;false;false;0;0;0;;;
                                  -53181;1;0;false;false;;;;;;
                                  -53182;43;0;false;false;0;0;0;;;
                                  -53225;4;0;false;false;;;;;;
                                  -53229;38;0;false;false;0;0;0;;;
                                  -53267;1;0;false;false;;;;;;
                                  -53268;13;0;false;false;0;0;0;;;
                                  -53281;1;0;false;false;;;;;;
                                  -53282;17;0;false;false;0;0;0;;;
                                  -53299;1;0;false;false;;;;;;
                                  -53300;13;0;false;false;0;0;0;;;
                                  -53313;1;0;false;false;;;;;;
                                  -53314;18;0;false;false;0;0;0;;;
                                  -53332;6;0;false;false;;;;;;
                                  -53338;70;0;false;false;63;127;95;;;
                                  -53408;2;0;false;false;;;;;;
                                  -53410;70;0;false;false;63;127;95;;;
                                  -53480;2;0;false;false;;;;;;
                                  -53482;72;0;false;false;63;127;95;;;
                                  -53554;2;0;false;false;;;;;;
                                  -53556;68;0;false;false;63;127;95;;;
                                  -53624;2;0;false;false;;;;;;
                                  -53626;2;1;false;false;127;0;85;;;
                                  -53628;1;0;false;false;;;;;;
                                  -53629;10;0;false;false;0;0;0;;;
                                  -53639;1;0;false;false;;;;;;
                                  -53640;1;0;false;false;0;0;0;;;
                                  -53641;5;0;false;false;;;;;;
                                  -53646;3;1;false;false;127;0;85;;;
                                  -53649;1;0;false;false;;;;;;
                                  -53650;9;0;false;false;0;0;0;;;
                                  -53659;1;0;false;false;;;;;;
                                  -53660;1;0;false;false;0;0;0;;;
                                  -53661;1;0;false;false;;;;;;
                                  -53662;23;0;false;false;0;0;0;;;
                                  -53685;5;0;false;false;;;;;;
                                  -53690;2;1;false;false;127;0;85;;;
                                  -53692;1;0;false;false;;;;;;
                                  -53693;10;0;false;false;0;0;0;;;
                                  -53703;1;0;false;false;;;;;;
                                  -53704;2;0;false;false;0;0;0;;;
                                  -53706;1;0;false;false;;;;;;
                                  -53707;10;0;false;false;0;0;0;;;
                                  -53717;1;0;false;false;;;;;;
                                  -53718;9;0;false;false;0;0;0;;;
                                  -53727;1;0;false;false;;;;;;
                                  -53728;1;0;false;false;0;0;0;;;
                                  -53729;1;0;false;false;;;;;;
                                  -53730;9;0;false;false;0;0;0;;;
                                  -53739;1;0;false;false;;;;;;
                                  -53740;1;0;false;false;0;0;0;;;
                                  -53741;1;0;false;false;;;;;;
                                  -53742;2;0;false;false;0;0;0;;;
                                  -53744;6;0;false;false;;;;;;
                                  -53750;1;0;false;false;0;0;0;;;
                                  -53751;4;0;false;false;;;;;;
                                  -53755;2;1;false;false;127;0;85;;;
                                  -53757;1;0;false;false;;;;;;
                                  -53758;10;0;false;false;0;0;0;;;
                                  -53768;1;0;false;false;;;;;;
                                  -53769;2;0;false;false;0;0;0;;;
                                  -53771;1;0;false;false;;;;;;
                                  -53772;24;0;false;false;0;0;0;;;
                                  -53796;1;0;false;false;;;;;;
                                  -53797;1;0;false;false;0;0;0;;;
                                  -53798;5;0;false;false;;;;;;
                                  -53803;65;0;false;false;63;127;95;;;
                                  -53868;3;0;false;false;;;;;;
                                  -53871;64;0;false;false;63;127;95;;;
                                  -53935;3;0;false;false;;;;;;
                                  -53938;51;0;false;false;63;127;95;;;
                                  -53989;3;0;false;false;;;;;;
                                  -53992;24;0;false;false;0;0;0;;;
                                  -54016;4;0;false;false;;;;;;
                                  -54020;1;0;false;false;0;0;0;;;
                                  -54021;3;0;false;false;;;;;;
                                  -54024;1;0;false;false;0;0;0;;;
                                  -54025;3;0;false;false;;;;;;
                                  -54028;1;0;false;false;0;0;0;;;
                                  -54029;4;0;false;false;;;;;;
                                  -54033;3;0;false;false;63;95;191;;;
                                  -54036;3;0;false;false;;;;;;
                                  -54039;1;0;false;false;63;95;191;;;
                                  -54040;1;0;false;false;;;;;;
                                  -54041;10;0;false;false;63;95;191;;;
                                  -54051;1;0;false;false;;;;;;
                                  -54052;1;0;false;false;63;95;191;;;
                                  -54053;1;0;false;false;;;;;;
                                  -54054;3;0;false;false;63;95;191;;;
                                  -54057;1;0;false;false;;;;;;
                                  -54058;8;0;false;false;63;95;191;;;
                                  -54066;1;0;false;false;;;;;;
                                  -54067;2;0;false;false;63;95;191;;;
                                  -54069;1;0;false;false;;;;;;
                                  -54070;4;0;false;false;63;95;191;;;
                                  -54074;1;0;false;false;;;;;;
                                  -54075;5;0;false;false;63;95;191;;;
                                  -54080;1;0;false;false;;;;;;
                                  -54081;5;0;false;false;63;95;191;;;
                                  -54086;1;0;false;false;;;;;;
                                  -54087;3;0;false;false;63;95;191;;;
                                  -54090;1;0;false;false;;;;;;
                                  -54091;6;0;false;false;63;95;191;;;
                                  -54097;3;0;false;false;;;;;;
                                  -54100;1;0;false;false;63;95;191;;;
                                  -54101;1;0;false;false;;;;;;
                                  -54102;3;0;false;false;63;95;191;;;
                                  -54105;1;0;false;false;;;;;;
                                  -54106;1;0;false;false;63;95;191;;;
                                  -54107;1;0;false;false;;;;;;
                                  -54108;5;0;false;false;63;95;191;;;
                                  -54113;1;0;false;false;;;;;;
                                  -54114;5;0;false;false;63;95;191;;;
                                  -54119;1;0;false;false;;;;;;
                                  -54120;10;0;false;false;63;95;191;;;
                                  -54130;1;0;false;false;;;;;;
                                  -54131;3;0;false;false;63;95;191;;;
                                  -54134;1;0;false;false;;;;;;
                                  -54135;8;0;false;false;63;95;191;;;
                                  -54143;1;0;false;false;;;;;;
                                  -54144;3;0;false;false;63;95;191;;;
                                  -54147;1;0;false;false;;;;;;
                                  -54148;11;0;false;false;63;95;191;;;
                                  -54159;3;0;false;false;;;;;;
                                  -54162;1;0;false;false;63;95;191;;;
                                  -54163;1;0;false;false;;;;;;
                                  -54164;3;0;false;false;127;127;159;;;
                                  -54167;3;0;false;false;;;;;;
                                  -54170;1;0;false;false;63;95;191;;;
                                  -54171;1;0;false;false;;;;;;
                                  -54172;3;0;false;false;63;95;191;;;
                                  -54175;1;0;false;false;;;;;;
                                  -54176;5;0;false;false;63;95;191;;;
                                  -54181;1;0;false;false;;;;;;
                                  -54182;5;0;false;false;63;95;191;;;
                                  -54187;1;0;false;false;;;;;;
                                  -54188;2;0;false;false;63;95;191;;;
                                  -54190;1;0;false;false;;;;;;
                                  -54191;6;0;false;false;63;95;191;;;
                                  -54197;1;0;false;false;;;;;;
                                  -54198;3;0;false;false;63;95;191;;;
                                  -54201;1;0;false;false;;;;;;
                                  -54202;2;0;false;false;63;95;191;;;
                                  -54204;1;0;false;false;;;;;;
                                  -54205;3;0;false;false;63;95;191;;;
                                  -54208;1;0;false;false;;;;;;
                                  -54209;5;0;false;false;63;95;191;;;
                                  -54214;1;0;false;false;;;;;;
                                  -54215;9;0;false;false;63;95;191;;;
                                  -54224;1;0;false;false;;;;;;
                                  -54225;7;0;false;false;63;95;191;;;
                                  -54232;1;0;false;false;;;;;;
                                  -54233;2;0;false;false;63;95;191;;;
                                  -54235;3;0;false;false;;;;;;
                                  -54238;1;0;false;false;63;95;191;;;
                                  -54239;1;0;false;false;;;;;;
                                  -54240;5;0;false;false;63;95;191;;;
                                  -54245;1;0;false;false;;;;;;
                                  -54246;6;0;false;false;127;127;159;;;
                                  -54252;3;0;false;false;63;95;191;;;
                                  -54255;7;0;false;false;127;127;159;;;
                                  -54262;1;0;false;false;;;;;;
                                  -54263;5;0;false;false;63;95;191;;;
                                  -54268;1;0;false;false;;;;;;
                                  -54269;2;0;false;false;63;95;191;;;
                                  -54271;1;0;false;false;;;;;;
                                  -54272;10;0;false;false;63;95;191;;;
                                  -54282;1;0;false;false;;;;;;
                                  -54283;2;0;false;false;63;95;191;;;
                                  -54285;1;0;false;false;;;;;;
                                  -54286;9;0;false;false;63;95;191;;;
                                  -54295;1;0;false;false;;;;;;
                                  -54296;2;0;false;false;63;95;191;;;
                                  -54298;1;0;false;false;;;;;;
                                  -54299;4;0;false;false;63;95;191;;;
                                  -54303;3;0;false;false;;;;;;
                                  -54306;1;0;false;false;63;95;191;;;
                                  -54307;1;0;false;false;;;;;;
                                  -54308;6;0;false;false;63;95;191;;;
                                  -54314;1;0;false;false;;;;;;
                                  -54315;2;0;false;false;63;95;191;;;
                                  -54317;1;0;false;false;;;;;;
                                  -54318;4;0;false;false;63;95;191;;;
                                  -54322;1;0;false;false;;;;;;
                                  -54323;2;0;false;false;63;95;191;;;
                                  -54325;1;0;false;false;;;;;;
                                  -54326;5;0;false;false;63;95;191;;;
                                  -54331;1;0;false;false;;;;;;
                                  -54332;2;0;false;false;63;95;191;;;
                                  -54334;1;0;false;false;;;;;;
                                  -54335;4;0;false;false;127;127;159;;;
                                  -54339;7;0;false;false;63;95;191;;;
                                  -54346;1;0;false;false;;;;;;
                                  -54347;2;0;false;false;63;95;191;;;
                                  -54349;5;0;false;false;127;127;159;;;
                                  -54354;4;0;false;false;63;95;191;;;
                                  -54358;1;0;false;false;;;;;;
                                  -54359;8;0;false;false;63;95;191;;;
                                  -54367;4;0;false;false;;;;;;
                                  -54371;1;0;false;false;63;95;191;;;
                                  -54372;1;0;false;false;;;;;;
                                  -54373;5;0;false;false;63;95;191;;;
                                  -54378;1;0;false;false;;;;;;
                                  -54379;3;0;false;false;63;95;191;;;
                                  -54382;1;0;false;false;;;;;;
                                  -54383;5;0;false;false;63;95;191;;;
                                  -54388;1;0;false;false;;;;;;
                                  -54389;3;0;false;false;63;95;191;;;
                                  -54392;1;0;false;false;;;;;;
                                  -54393;6;0;false;false;127;127;159;;;
                                  -54399;3;0;false;false;63;95;191;;;
                                  -54402;7;0;false;false;127;127;159;;;
                                  -54409;1;0;false;false;;;;;;
                                  -54410;3;0;false;false;63;95;191;;;
                                  -54413;1;0;false;false;;;;;;
                                  -54414;9;0;false;false;63;95;191;;;
                                  -54423;1;0;false;false;;;;;;
                                  -54424;3;0;false;false;63;95;191;;;
                                  -54427;1;0;false;false;;;;;;
                                  -54428;2;0;false;false;63;95;191;;;
                                  -54430;1;0;false;false;;;;;;
                                  -54431;4;0;false;false;63;95;191;;;
                                  -54435;3;0;false;false;;;;;;
                                  -54438;1;0;false;false;63;95;191;;;
                                  -54439;1;0;false;false;;;;;;
                                  -54440;2;0;false;false;63;95;191;;;
                                  -54442;1;0;false;false;;;;;;
                                  -54443;5;0;false;false;63;95;191;;;
                                  -54448;1;0;false;false;;;;;;
                                  -54449;6;0;false;false;127;127;159;;;
                                  -54455;3;0;false;false;63;95;191;;;
                                  -54458;7;0;false;false;127;127;159;;;
                                  -54465;1;0;false;false;;;;;;
                                  -54466;5;0;false;false;63;95;191;;;
                                  -54471;1;0;false;false;;;;;;
                                  -54472;10;0;false;false;63;95;191;;;
                                  -54482;1;0;false;false;;;;;;
                                  -54483;3;0;false;false;63;95;191;;;
                                  -54486;1;0;false;false;;;;;;
                                  -54487;5;0;false;false;63;95;191;;;
                                  -54492;1;0;false;false;;;;;;
                                  -54493;11;0;false;false;63;95;191;;;
                                  -54504;3;0;false;false;;;;;;
                                  -54507;1;0;false;false;63;95;191;;;
                                  -54508;1;0;false;false;;;;;;
                                  -54509;5;0;false;false;63;95;191;;;
                                  -54514;1;0;false;false;;;;;;
                                  -54515;3;0;false;false;63;95;191;;;
                                  -54518;1;0;false;false;;;;;;
                                  -54519;5;0;false;false;63;95;191;;;
                                  -54524;1;0;false;false;;;;;;
                                  -54525;9;0;false;false;63;95;191;;;
                                  -54534;1;0;false;false;;;;;;
                                  -54535;4;0;false;false;63;95;191;;;
                                  -54539;1;0;false;false;;;;;;
                                  -54540;3;0;false;false;63;95;191;;;
                                  -54543;1;0;false;false;;;;;;
                                  -54544;10;0;false;false;63;95;191;;;
                                  -54554;1;0;false;false;;;;;;
                                  -54555;2;0;false;false;63;95;191;;;
                                  -54557;1;0;false;false;;;;;;
                                  -54558;3;0;false;false;63;95;191;;;
                                  -54561;1;0;false;false;;;;;;
                                  -54562;6;0;false;false;63;95;191;;;
                                  -54568;3;0;false;false;;;;;;
                                  -54571;1;0;false;false;63;95;191;;;
                                  -54572;1;0;false;false;;;;;;
                                  -54573;5;0;false;false;63;95;191;;;
                                  -54578;1;0;false;false;;;;;;
                                  -54579;4;0;false;false;63;95;191;;;
                                  -54583;1;0;false;false;;;;;;
                                  -54584;3;0;false;false;63;95;191;;;
                                  -54587;1;0;false;false;;;;;;
                                  -54588;4;0;false;false;63;95;191;;;
                                  -54592;1;0;false;false;;;;;;
                                  -54593;9;0;false;false;63;95;191;;;
                                  -54602;1;0;false;false;;;;;;
                                  -54603;4;0;false;false;63;95;191;;;
                                  -54607;1;0;false;false;;;;;;
                                  -54608;13;0;false;false;63;95;191;;;
                                  -54621;3;0;false;false;;;;;;
                                  -54624;1;0;false;false;63;95;191;;;
                                  -54625;1;0;false;false;;;;;;
                                  -54626;4;0;false;false;127;127;159;;;
                                  -54630;3;0;false;false;;;;;;
                                  -54633;1;0;false;false;63;95;191;;;
                                  -54634;3;0;false;false;;;;;;
                                  -54637;1;0;false;false;63;95;191;;;
                                  -54638;1;0;false;false;;;;;;
                                  -54639;7;1;false;false;127;159;191;;;
                                  -54646;6;0;false;false;63;95;191;;;
                                  -54652;1;0;false;false;;;;;;
                                  -54653;1;0;false;false;63;95;191;;;
                                  -54654;1;0;false;false;;;;;;
                                  -54655;6;0;false;false;63;95;191;;;
                                  -54661;1;0;false;false;;;;;;
                                  -54662;5;0;false;false;63;95;191;;;
                                  -54667;1;0;false;false;;;;;;
                                  -54668;4;0;false;false;63;95;191;;;
                                  -54672;1;0;false;false;;;;;;
                                  -54673;2;0;false;false;63;95;191;;;
                                  -54675;1;0;false;false;;;;;;
                                  -54676;3;0;false;false;63;95;191;;;
                                  -54679;1;0;false;false;;;;;;
                                  -54680;6;0;false;false;63;95;191;;;
                                  -54686;1;0;false;false;;;;;;
                                  -54687;2;0;false;false;63;95;191;;;
                                  -54689;1;0;false;false;;;;;;
                                  -54690;3;0;false;false;63;95;191;;;
                                  -54693;1;0;false;false;;;;;;
                                  -54694;3;0;false;false;63;95;191;;;
                                  -54697;1;0;false;false;;;;;;
                                  -54698;8;0;false;false;63;95;191;;;
                                  -54706;1;0;false;false;;;;;;
                                  -54707;7;0;false;false;63;95;191;;;
                                  -54714;1;0;false;false;;;;;;
                                  -54715;2;0;false;false;63;95;191;;;
                                  -54717;1;0;false;false;;;;;;
                                  -54718;5;0;false;false;63;95;191;;;
                                  -54723;3;0;false;false;;;;;;
                                  -54726;1;0;false;false;63;95;191;;;
                                  -54727;1;0;false;false;;;;;;
                                  -54728;7;1;false;false;127;159;191;;;
                                  -54735;5;0;false;false;63;95;191;;;
                                  -54740;1;0;false;false;;;;;;
                                  -54741;3;0;false;false;63;95;191;;;
                                  -54744;1;0;false;false;;;;;;
                                  -54745;5;0;false;false;63;95;191;;;
                                  -54750;1;0;false;false;;;;;;
                                  -54751;2;0;false;false;63;95;191;;;
                                  -54753;1;0;false;false;;;;;;
                                  -54754;6;0;false;false;63;95;191;;;
                                  -54760;1;0;false;false;;;;;;
                                  -54761;2;0;false;false;63;95;191;;;
                                  -54763;1;0;false;false;;;;;;
                                  -54764;9;0;false;false;63;95;191;;;
                                  -54773;3;0;false;false;;;;;;
                                  -54776;1;0;false;false;63;95;191;;;
                                  -54777;3;0;false;false;;;;;;
                                  -54780;1;0;false;false;63;95;191;;;
                                  -54781;1;0;false;false;;;;;;
                                  -54782;11;1;false;false;127;159;191;;;
                                  -54793;24;0;false;false;63;95;191;;;
                                  -54817;1;0;false;false;;;;;;
                                  -54818;4;0;false;false;127;127;159;;;
                                  -54822;3;0;false;false;;;;;;
                                  -54825;1;0;false;false;63;95;191;;;
                                  -54826;4;0;false;false;;;;;;
                                  -54830;4;0;false;false;127;127;159;;;
                                  -54834;19;0;false;false;63;95;191;;;
                                  -54853;1;0;false;false;;;;;;
                                  -54854;1;0;false;false;127;127;159;;;
                                  -54855;1;0;false;false;;;;;;
                                  -54856;2;0;false;false;63;95;191;;;
                                  -54858;1;0;false;false;;;;;;
                                  -54859;3;0;false;false;63;95;191;;;
                                  -54862;1;0;false;false;;;;;;
                                  -54863;6;0;false;false;63;95;191;;;
                                  -54869;1;0;false;false;;;;;;
                                  -54870;2;0;false;false;63;95;191;;;
                                  -54872;1;0;false;false;;;;;;
                                  -54873;4;0;false;false;63;95;191;;;
                                  -54877;5;0;false;false;127;127;159;;;
                                  -54882;3;0;false;false;;;;;;
                                  -54885;1;0;false;false;63;95;191;;;
                                  -54886;1;0;false;false;;;;;;
                                  -54887;5;0;false;false;127;127;159;;;
                                  -54892;3;0;false;false;;;;;;
                                  -54895;1;0;false;false;63;95;191;;;
                                  -54896;1;0;false;false;;;;;;
                                  -54897;11;1;false;false;127;159;191;;;
                                  -54908;12;0;false;false;63;95;191;;;
                                  -54920;1;0;false;false;;;;;;
                                  -54921;4;0;false;false;127;127;159;;;
                                  -54925;3;0;false;false;;;;;;
                                  -54928;1;0;false;false;63;95;191;;;
                                  -54929;4;0;false;false;;;;;;
                                  -54933;4;0;false;false;127;127;159;;;
                                  -54937;27;0;false;false;63;95;191;;;
                                  -54964;1;0;false;false;;;;;;
                                  -54965;1;0;false;false;127;127;159;;;
                                  -54966;1;0;false;false;;;;;;
                                  -54967;2;0;false;false;63;95;191;;;
                                  -54969;1;0;false;false;;;;;;
                                  -54970;3;0;false;false;63;95;191;;;
                                  -54973;1;0;false;false;;;;;;
                                  -54974;6;0;false;false;63;95;191;;;
                                  -54980;1;0;false;false;;;;;;
                                  -54981;4;0;false;false;63;95;191;;;
                                  -54985;1;0;false;false;;;;;;
                                  -54986;3;0;false;false;63;95;191;;;
                                  -54989;1;0;false;false;;;;;;
                                  -54990;6;0;false;false;63;95;191;;;
                                  -54996;1;0;false;false;;;;;;
                                  -54997;4;0;false;false;63;95;191;;;
                                  -55001;1;0;false;false;;;;;;
                                  -55002;7;0;false;false;63;95;191;;;
                                  -55009;1;0;false;false;;;;;;
                                  -55010;3;0;false;false;63;95;191;;;
                                  -55013;1;0;false;false;;;;;;
                                  -55014;6;0;false;false;63;95;191;;;
                                  -55020;5;0;false;false;127;127;159;;;
                                  -55025;3;0;false;false;;;;;;
                                  -55028;1;0;false;false;63;95;191;;;
                                  -55029;1;0;false;false;;;;;;
                                  -55030;5;0;false;false;127;127;159;;;
                                  -55035;3;0;false;false;;;;;;
                                  -55038;1;0;false;false;63;95;191;;;
                                  -55039;3;0;false;false;;;;;;
                                  -55042;1;0;false;false;63;95;191;;;
                                  -55043;1;0;false;false;;;;;;
                                  -55044;5;1;false;false;127;159;191;;;
                                  -55049;18;0;false;false;63;95;191;;;
                                  -55067;3;0;false;false;;;;;;
                                  -55070;1;0;false;false;63;95;191;;;
                                  -55071;1;0;false;false;;;;;;
                                  -55072;5;1;false;false;127;159;191;;;
                                  -55077;9;0;false;false;63;95;191;;;
                                  -55086;3;0;false;false;;;;;;
                                  -55089;1;0;false;false;63;95;191;;;
                                  -55090;1;0;false;false;;;;;;
                                  -55091;5;1;false;false;127;159;191;;;
                                  -55096;13;0;false;false;63;95;191;;;
                                  -55109;3;0;false;false;;;;;;
                                  -55112;1;0;false;false;63;95;191;;;
                                  -55113;1;0;false;false;;;;;;
                                  -55114;5;1;false;false;127;159;191;;;
                                  -55119;10;0;false;false;63;95;191;;;
                                  -55129;3;0;false;false;;;;;;
                                  -55132;1;0;false;false;63;95;191;;;
                                  -55133;1;0;false;false;;;;;;
                                  -55134;5;1;false;false;127;159;191;;;
                                  -55139;8;0;false;false;63;95;191;;;
                                  -55147;3;0;false;false;;;;;;
                                  -55150;1;0;false;false;63;95;191;;;
                                  -55151;1;0;false;false;;;;;;
                                  -55152;5;1;false;false;127;159;191;;;
                                  -55157;9;0;false;false;63;95;191;;;
                                  -55166;3;0;false;false;;;;;;
                                  -55169;2;0;false;false;63;95;191;;;
                                  -55171;2;0;false;false;;;;;;
                                  -55173;6;1;false;false;127;0;85;;;
                                  -55179;1;0;false;false;;;;;;
                                  -55180;20;0;false;false;0;0;0;;;
                                  -55200;1;0;false;false;;;;;;
                                  -55201;7;0;false;false;0;0;0;;;
                                  -55208;1;0;false;false;;;;;;
                                  -55209;3;1;false;false;127;0;85;;;
                                  -55212;1;0;false;false;;;;;;
                                  -55213;6;0;false;false;0;0;0;;;
                                  -55219;1;0;false;false;;;;;;
                                  -55220;1;0;false;false;0;0;0;;;
                                  -55221;3;0;false;false;;;;;;
                                  -55224;5;1;false;false;127;0;85;;;
                                  -55229;8;0;false;false;0;0;0;;;
                                  -55237;1;0;false;false;;;;;;
                                  -55238;16;0;false;false;0;0;0;;;
                                  -55254;1;0;false;false;;;;;;
                                  -55255;1;0;false;false;0;0;0;;;
                                  -55256;1;0;false;false;;;;;;
                                  -55257;20;0;false;false;0;0;0;;;
                                  -55277;1;0;false;false;;;;;;
                                  -55278;1;0;false;false;0;0;0;;;
                                  -55279;1;0;false;false;;;;;;
                                  -55280;20;0;false;false;0;0;0;;;
                                  -55300;3;0;false;false;;;;;;
                                  -55303;87;0;false;false;63;127;95;;;
                                  -55390;1;0;false;false;;;;;;
                                  -55391;85;0;false;false;63;127;95;;;
                                  -55476;1;0;false;false;;;;;;
                                  -55477;5;1;false;false;127;0;85;;;
                                  -55482;32;0;false;false;0;0;0;;;
                                  -55514;3;0;false;false;;;;;;
                                  -55517;5;1;false;false;127;0;85;;;
                                  -55522;32;0;false;false;0;0;0;;;
                                  -55554;3;0;false;false;;;;;;
                                  -55557;7;0;false;false;0;0;0;;;
                                  -55564;1;0;false;false;;;;;;
                                  -55565;7;0;false;false;0;0;0;;;
                                  -55572;1;0;false;false;;;;;;
                                  -55573;1;0;false;false;0;0;0;;;
                                  -55574;1;0;false;false;;;;;;
                                  -55575;13;0;false;false;0;0;0;;;
                                  -55588;3;0;false;false;;;;;;
                                  -55591;10;0;false;false;0;0;0;;;
                                  -55601;1;0;false;false;;;;;;
                                  -55602;1;0;false;false;0;0;0;;;
                                  -55603;1;0;false;false;;;;;;
                                  -55604;1;0;false;false;0;0;0;;;
                                  -55605;5;1;false;false;127;0;85;;;
                                  -55610;11;0;false;false;0;0;0;;;
                                  -55621;1;0;false;false;;;;;;
                                  -55622;1;0;false;false;0;0;0;;;
                                  -55623;1;0;false;false;;;;;;
                                  -55624;13;0;false;false;0;0;0;;;
                                  -55637;1;0;false;false;;;;;;
                                  -55638;2;0;false;false;0;0;0;;;
                                  -55640;1;0;false;false;;;;;;
                                  -55641;2;0;false;false;0;0;0;;;
                                  -55643;3;0;false;false;;;;;;
                                  -55646;2;1;false;false;127;0;85;;;
                                  -55648;1;0;false;false;;;;;;
                                  -55649;7;0;false;false;0;0;0;;;
                                  -55656;1;0;false;false;;;;;;
                                  -55657;1;0;false;false;0;0;0;;;
                                  -55658;1;0;false;false;;;;;;
                                  -55659;14;0;false;false;0;0;0;;;
                                  -55673;1;0;false;false;;;;;;
                                  -55674;2;0;false;false;0;0;0;;;
                                  -55676;1;0;false;false;;;;;;
                                  -55677;2;0;false;false;0;0;0;;;
                                  -55679;1;0;false;false;;;;;;
                                  -55680;1;0;false;false;0;0;0;;;
                                  -55681;4;0;false;false;;;;;;
                                  -55685;12;0;false;false;0;0;0;;;
                                  -55697;5;1;false;false;127;0;85;;;
                                  -55702;2;0;false;false;0;0;0;;;
                                  -55704;3;0;false;false;;;;;;
                                  -55707;1;0;false;false;0;0;0;;;
                                  -55708;3;0;false;false;;;;;;
                                  -55711;10;0;false;false;0;0;0;;;
                                  -55721;1;0;false;false;;;;;;
                                  -55722;1;0;false;false;0;0;0;;;
                                  -55723;1;0;false;false;;;;;;
                                  -55724;11;0;false;false;0;0;0;;;
                                  -55735;1;0;false;false;;;;;;
                                  -55736;1;0;false;false;0;0;0;;;
                                  -55737;1;0;false;false;;;;;;
                                  -55738;13;0;false;false;0;0;0;;;
                                  -55751;1;0;false;false;;;;;;
                                  -55752;1;0;false;false;0;0;0;;;
                                  -55753;1;0;false;false;;;;;;
                                  -55754;16;0;false;false;0;0;0;;;
                                  -55770;1;0;false;false;;;;;;
                                  -55771;1;0;false;false;0;0;0;;;
                                  -55772;1;0;false;false;;;;;;
                                  -55773;2;0;false;false;0;0;0;;;
                                  -55775;1;0;false;false;;;;;;
                                  -55776;2;0;false;false;0;0;0;;;
                                  -55778;3;0;false;false;;;;;;
                                  -55781;2;1;false;false;127;0;85;;;
                                  -55783;1;0;false;false;;;;;;
                                  -55784;7;0;false;false;0;0;0;;;
                                  -55791;1;0;false;false;;;;;;
                                  -55792;1;0;false;false;0;0;0;;;
                                  -55793;1;0;false;false;;;;;;
                                  -55794;11;0;false;false;0;0;0;;;
                                  -55805;1;0;false;false;;;;;;
                                  -55806;2;0;false;false;0;0;0;;;
                                  -55808;1;0;false;false;;;;;;
                                  -55809;1;0;false;false;0;0;0;;;
                                  -55810;1;0;false;false;;;;;;
                                  -55811;2;0;false;false;0;0;0;;;
                                  -55813;1;0;false;false;;;;;;
                                  -55814;6;0;false;false;0;0;0;;;
                                  -55820;1;0;false;false;;;;;;
                                  -55821;1;0;false;false;0;0;0;;;
                                  -55822;1;0;false;false;;;;;;
                                  -55823;11;0;false;false;0;0;0;;;
                                  -55834;1;0;false;false;;;;;;
                                  -55835;2;0;false;false;0;0;0;;;
                                  -55837;1;0;false;false;;;;;;
                                  -55838;2;0;false;false;0;0;0;;;
                                  -55840;1;0;false;false;;;;;;
                                  -55841;1;0;false;false;0;0;0;;;
                                  -55842;4;0;false;false;;;;;;
                                  -55846;10;0;false;false;0;0;0;;;
                                  -55856;1;0;false;false;;;;;;
                                  -55857;1;0;false;false;0;0;0;;;
                                  -55858;1;0;false;false;;;;;;
                                  -55859;9;0;false;false;0;0;0;;;
                                  -55868;1;0;false;false;;;;;;
                                  -55869;1;0;false;false;0;0;0;;;
                                  -55870;1;0;false;false;;;;;;
                                  -55871;11;0;false;false;0;0;0;;;
                                  -55882;1;0;false;false;;;;;;
                                  -55883;1;0;false;false;0;0;0;;;
                                  -55884;1;0;false;false;;;;;;
                                  -55885;12;0;false;false;0;0;0;;;
                                  -55897;1;0;false;false;;;;;;
                                  -55898;1;0;false;false;0;0;0;;;
                                  -55899;1;0;false;false;;;;;;
                                  -55900;2;0;false;false;0;0;0;;;
                                  -55902;3;0;false;false;;;;;;
                                  -55905;1;0;false;false;0;0;0;;;
                                  -55906;3;0;false;false;;;;;;
                                  -55909;9;0;false;false;0;0;0;;;
                                  -55918;1;0;false;false;;;;;;
                                  -55919;1;0;false;false;0;0;0;;;
                                  -55920;1;0;false;false;;;;;;
                                  -55921;3;1;false;false;127;0;85;;;
                                  -55924;1;0;false;false;;;;;;
                                  -55925;19;0;false;false;0;0;0;;;
                                  -55944;3;0;false;false;;;;;;
                                  -55947;24;0;false;false;0;0;0;;;
                                  -55971;3;0;false;false;;;;;;
                                  -55974;21;0;false;false;0;0;0;;;
                                  -55995;3;0;false;false;;;;;;
                                  -55998;2;1;false;false;127;0;85;;;
                                  -56000;1;0;false;false;;;;;;
                                  -56001;7;0;false;false;0;0;0;;;
                                  -56008;1;0;false;false;;;;;;
                                  -56009;1;0;false;false;0;0;0;;;
                                  -56010;1;0;false;false;;;;;;
                                  -56011;9;0;false;false;0;0;0;;;
                                  -56020;1;0;false;false;;;;;;
                                  -56021;2;0;false;false;0;0;0;;;
                                  -56023;1;0;false;false;;;;;;
                                  -56024;2;0;false;false;0;0;0;;;
                                  -56026;1;0;false;false;;;;;;
                                  -56027;1;0;false;false;0;0;0;;;
                                  -56028;4;0;false;false;;;;;;
                                  -56032;12;0;false;false;0;0;0;;;
                                  -56044;4;1;false;false;127;0;85;;;
                                  -56048;2;0;false;false;0;0;0;;;
                                  -56050;3;0;false;false;;;;;;
                                  -56053;1;0;false;false;0;0;0;;;
                                  -56054;3;0;false;false;;;;;;
                                  -56057;4;1;false;false;127;0;85;;;
                                  -56061;1;0;false;false;;;;;;
                                  -56062;1;0;false;false;0;0;0;;;
                                  -56063;4;0;false;false;;;;;;
                                  -56067;9;0;false;false;0;0;0;;;
                                  -56076;1;0;false;false;;;;;;
                                  -56077;1;0;false;false;0;0;0;;;
                                  -56078;1;0;false;false;;;;;;
                                  -56079;3;1;false;false;127;0;85;;;
                                  -56082;1;0;false;false;;;;;;
                                  -56083;18;0;false;false;0;0;0;;;
                                  -56101;4;1;false;false;127;0;85;;;
                                  -56105;1;0;false;false;0;0;0;;;
                                  -56106;1;0;false;false;;;;;;
                                  -56107;9;0;false;false;0;0;0;;;
                                  -56116;3;0;false;false;;;;;;
                                  -56119;1;0;false;false;0;0;0;;;
                                  -56120;4;0;false;false;;;;;;
                                  -56124;12;0;false;false;0;0;0;;;
                                  -56136;1;0;false;false;;;;;;
                                  -56137;1;0;false;false;0;0;0;;;
                                  -56138;1;0;false;false;;;;;;
                                  -56139;3;1;false;false;127;0;85;;;
                                  -56142;1;0;false;false;;;;;;
                                  -56143;6;0;false;false;0;0;0;;;
                                  -56149;4;1;false;false;127;0;85;;;
                                  -56153;1;0;false;false;0;0;0;;;
                                  -56154;1;0;false;false;;;;;;
                                  -56155;10;0;false;false;0;0;0;;;
                                  -56165;3;0;false;false;;;;;;
                                  -56168;2;1;false;false;127;0;85;;;
                                  -56170;1;0;false;false;;;;;;
                                  -56171;15;0;false;false;0;0;0;;;
                                  -56186;1;0;false;false;;;;;;
                                  -56187;1;0;false;false;0;0;0;;;
                                  -56188;4;0;false;false;;;;;;
                                  -56192;21;0;false;false;0;0;0;;;
                                  -56213;4;0;false;false;;;;;;
                                  -56217;8;0;false;false;0;0;0;;;
                                  -56225;1;0;false;false;;;;;;
                                  -56226;8;0;false;false;0;0;0;;;
                                  -56234;1;0;false;false;;;;;;
                                  -56235;1;0;false;false;0;0;0;;;
                                  -56236;1;0;false;false;;;;;;
                                  -56237;3;1;false;false;127;0;85;;;
                                  -56240;1;0;false;false;;;;;;
                                  -56241;10;0;false;false;0;0;0;;;
                                  -56251;1;0;false;false;;;;;;
                                  -56252;1;0;false;false;0;0;0;;;
                                  -56253;5;0;false;false;;;;;;
                                  -56258;6;1;false;false;127;0;85;;;
                                  -56264;1;0;false;false;;;;;;
                                  -56265;4;1;false;false;127;0;85;;;
                                  -56269;1;0;false;false;;;;;;
                                  -56270;5;0;false;false;0;0;0;;;
                                  -56275;1;0;false;false;;;;;;
                                  -56276;1;0;false;false;0;0;0;;;
                                  -56277;6;0;false;false;;;;;;
                                  -56283;3;1;false;false;127;0;85;;;
                                  -56286;1;0;false;false;;;;;;
                                  -56287;9;0;false;false;0;0;0;;;
                                  -56296;1;0;false;false;;;;;;
                                  -56297;1;0;false;false;0;0;0;;;
                                  -56298;1;0;false;false;;;;;;
                                  -56299;30;0;false;false;0;0;0;;;
                                  -56329;1;0;false;false;;;;;;
                                  -56330;2;0;false;false;0;0;0;;;
                                  -56332;1;0;false;false;;;;;;
                                  -56333;22;0;false;false;0;0;0;;;
                                  -56355;1;0;false;false;;;;;;
                                  -56356;1;0;false;false;0;0;0;;;
                                  -56357;1;0;false;false;;;;;;
                                  -56358;9;0;false;false;0;0;0;;;
                                  -56367;1;0;false;false;;;;;;
                                  -56368;1;0;false;false;0;0;0;;;
                                  -56369;1;0;false;false;;;;;;
                                  -56370;9;0;false;false;0;0;0;;;
                                  -56379;6;0;false;false;;;;;;
                                  -56385;2;1;false;false;127;0;85;;;
                                  -56387;1;0;false;false;;;;;;
                                  -56388;10;0;false;false;0;0;0;;;
                                  -56398;1;0;false;false;;;;;;
                                  -56399;2;0;false;false;0;0;0;;;
                                  -56401;1;0;false;false;;;;;;
                                  -56402;15;0;false;false;0;0;0;;;
                                  -56417;1;0;false;false;;;;;;
                                  -56418;6;1;false;false;127;0;85;;;
                                  -56424;1;0;false;false;0;0;0;;;
                                  -56425;6;0;false;false;;;;;;
                                  -56431;2;1;false;false;127;0;85;;;
                                  -56433;1;0;false;false;;;;;;
                                  -56434;11;0;false;false;0;0;0;;;
                                  -56445;1;0;false;false;;;;;;
                                  -56446;2;0;false;false;0;0;0;;;
                                  -56448;1;0;false;false;;;;;;
                                  -56449;13;0;false;false;0;0;0;;;
                                  -56462;1;0;false;false;;;;;;
                                  -56463;6;1;false;false;127;0;85;;;
                                  -56469;1;0;false;false;0;0;0;;;
                                  -56470;6;0;false;false;;;;;;
                                  -56476;3;1;false;false;127;0;85;;;
                                  -56479;1;0;false;false;;;;;;
                                  -56480;9;0;false;false;0;0;0;;;
                                  -56489;1;0;false;false;;;;;;
                                  -56490;1;0;false;false;0;0;0;;;
                                  -56491;1;0;false;false;;;;;;
                                  -56492;15;0;false;false;0;0;0;;;
                                  -56507;6;0;false;false;;;;;;
                                  -56513;6;0;false;false;0;0;0;;;
                                  -56519;1;0;false;false;;;;;;
                                  -56520;4;0;false;false;0;0;0;;;
                                  -56524;1;0;false;false;;;;;;
                                  -56525;1;0;false;false;0;0;0;;;
                                  -56526;1;0;false;false;;;;;;
                                  -56527;27;0;false;false;0;0;0;;;
                                  -56554;6;0;false;false;;;;;;
                                  -56560;3;1;false;false;127;0;85;;;
                                  -56563;1;0;false;false;;;;;;
                                  -56564;10;0;false;false;0;0;0;;;
                                  -56574;1;0;false;false;;;;;;
                                  -56575;1;0;false;false;0;0;0;;;
                                  -56576;1;0;false;false;;;;;;
                                  -56577;35;0;false;false;0;0;0;;;
                                  -56612;6;0;false;false;;;;;;
                                  -56618;3;1;false;false;127;0;85;;;
                                  -56621;1;0;false;false;;;;;;
                                  -56622;12;0;false;false;0;0;0;;;
                                  -56634;1;0;false;false;;;;;;
                                  -56635;1;0;false;false;0;0;0;;;
                                  -56636;1;0;false;false;;;;;;
                                  -56637;11;0;false;false;0;0;0;;;
                                  -56648;1;0;false;false;;;;;;
                                  -56649;1;0;false;false;0;0;0;;;
                                  -56650;1;0;false;false;;;;;;
                                  -56651;11;0;false;false;0;0;0;;;
                                  -56662;6;0;false;false;;;;;;
                                  -56668;3;1;false;false;127;0;85;;;
                                  -56671;1;0;false;false;;;;;;
                                  -56672;9;0;false;false;0;0;0;;;
                                  -56681;1;0;false;false;;;;;;
                                  -56682;1;0;false;false;0;0;0;;;
                                  -56683;1;0;false;false;;;;;;
                                  -56684;18;0;false;false;0;0;0;;;
                                  -56702;1;0;false;false;;;;;;
                                  -56703;10;0;false;false;0;0;0;;;
                                  -56713;1;0;false;false;;;;;;
                                  -56714;14;0;false;false;0;0;0;;;
                                  -56728;6;0;false;false;;;;;;
                                  -56734;27;0;false;false;0;0;0;;;
                                  -56761;1;0;false;false;;;;;;
                                  -56762;15;0;false;false;0;0;0;;;
                                  -56777;1;0;false;false;;;;;;
                                  -56778;11;0;false;false;0;0;0;;;
                                  -56789;5;0;false;false;;;;;;
                                  -56794;1;0;false;false;0;0;0;;;
                                  -56795;4;0;false;false;;;;;;
                                  -56799;2;0;false;false;0;0;0;;;
                                  -56801;4;0;false;false;;;;;;
                                  -56805;36;0;false;false;0;0;0;;;
                                  -56841;1;0;false;false;;;;;;
                                  -56842;10;0;false;false;0;0;0;;;
                                  -56852;3;0;false;false;;;;;;
                                  -56855;1;0;false;false;0;0;0;;;
                                  -56856;3;0;false;false;;;;;;
                                  -56859;23;0;false;false;0;0;0;;;
                                  -56882;4;0;false;false;;;;;;
                                  -56886;22;0;false;false;0;0;0;;;
                                  -56908;3;0;false;false;;;;;;
                                  -56911;20;0;false;false;0;0;0;;;
                                  -56931;3;0;false;false;;;;;;
                                  -56934;11;0;false;false;0;0;0;;;
                                  -56945;1;0;false;false;;;;;;
                                  -56946;1;0;false;false;0;0;0;;;
                                  -56947;1;0;false;false;;;;;;
                                  -56948;3;1;false;false;127;0;85;;;
                                  -56951;1;0;false;false;;;;;;
                                  -56952;15;0;false;false;0;0;0;;;
                                  -56967;1;0;false;false;;;;;;
                                  -56968;18;0;false;false;0;0;0;;;
                                  -56986;3;0;false;false;;;;;;
                                  -56989;23;0;false;false;0;0;0;;;
                                  -57012;3;0;false;false;;;;;;
                                  -57015;19;0;false;false;0;0;0;;;
                                  -57034;3;0;false;false;;;;;;
                                  -57037;27;0;false;false;0;0;0;;;
                                  -57064;3;0;false;false;;;;;;
                                  -57067;23;0;false;false;0;0;0;;;
                                  -57090;2;0;false;false;;;;;;
                                  -57092;1;0;false;false;0;0;0;;;
                                  -57093;2;0;false;false;;;;;;
                                  -57095;3;0;false;false;63;95;191;;;
                                  -57098;5;0;false;false;;;;;;
                                  -57103;1;0;false;false;63;95;191;;;
                                  -57104;1;0;false;false;;;;;;
                                  -57105;4;0;false;false;63;95;191;;;
                                  -57109;1;0;false;false;;;;;;
                                  -57110;2;0;false;false;63;95;191;;;
                                  -57112;1;0;false;false;;;;;;
                                  -57113;8;0;false;false;63;95;191;;;
                                  -57121;1;0;false;false;;;;;;
                                  -57122;6;0;false;false;63;95;191;;;
                                  -57128;1;0;false;false;;;;;;
                                  -57129;9;0;false;false;63;95;191;;;
                                  -57138;1;0;false;false;;;;;;
                                  -57139;2;0;false;false;63;95;191;;;
                                  -57141;1;0;false;false;;;;;;
                                  -57142;14;0;false;false;63;95;191;;;
                                  -57156;1;0;false;false;;;;;;
                                  -57157;5;0;false;false;63;95;191;;;
                                  -57162;1;0;false;false;;;;;;
                                  -57163;2;0;false;false;63;95;191;;;
                                  -57165;1;0;false;false;;;;;;
                                  -57166;4;0;false;false;63;95;191;;;
                                  -57170;1;0;false;false;;;;;;
                                  -57171;2;0;false;false;63;95;191;;;
                                  -57173;1;0;false;false;;;;;;
                                  -57174;3;0;false;false;63;95;191;;;
                                  -57177;4;0;false;false;;;;;;
                                  -57181;1;0;false;false;63;95;191;;;
                                  -57182;1;0;false;false;;;;;;
                                  -57183;6;0;false;false;63;95;191;;;
                                  -57189;1;0;false;false;;;;;;
                                  -57190;4;0;false;false;63;95;191;;;
                                  -57194;1;0;false;false;;;;;;
                                  -57195;3;0;false;false;63;95;191;;;
                                  -57198;1;0;false;false;;;;;;
                                  -57199;6;0;false;false;63;95;191;;;
                                  -57205;1;0;false;false;;;;;;
                                  -57206;4;0;false;false;63;95;191;;;
                                  -57210;1;0;false;false;;;;;;
                                  -57211;3;0;false;false;63;95;191;;;
                                  -57214;1;0;false;false;;;;;;
                                  -57215;8;0;false;false;63;95;191;;;
                                  -57223;3;0;false;false;;;;;;
                                  -57226;1;0;false;false;63;95;191;;;
                                  -57227;1;0;false;false;;;;;;
                                  -57228;3;0;false;false;127;127;159;;;
                                  -57231;3;0;false;false;;;;;;
                                  -57234;1;0;false;false;63;95;191;;;
                                  -57235;3;0;false;false;;;;;;
                                  -57238;1;0;false;false;63;95;191;;;
                                  -57239;1;0;false;false;;;;;;
                                  -57240;7;1;false;false;127;159;191;;;
                                  -57247;22;0;false;false;63;95;191;;;
                                  -57269;1;0;false;false;;;;;;
                                  -57270;3;0;false;false;63;95;191;;;
                                  -57273;1;0;false;false;;;;;;
                                  -57274;8;0;false;false;63;95;191;;;
                                  -57282;3;0;false;false;;;;;;
                                  -57285;1;0;false;false;63;95;191;;;
                                  -57286;1;0;false;false;;;;;;
                                  -57287;11;1;false;false;127;159;191;;;
                                  -57298;12;0;false;false;63;95;191;;;
                                  -57310;1;0;false;false;;;;;;
                                  -57311;4;0;false;false;127;127;159;;;
                                  -57315;3;0;false;false;;;;;;
                                  -57318;1;0;false;false;63;95;191;;;
                                  -57319;4;0;false;false;;;;;;
                                  -57323;4;0;false;false;127;127;159;;;
                                  -57327;21;0;false;false;63;95;191;;;
                                  -57348;1;0;false;false;;;;;;
                                  -57349;1;0;false;false;127;127;159;;;
                                  -57350;1;0;false;false;;;;;;
                                  -57351;2;0;false;false;63;95;191;;;
                                  -57353;1;0;false;false;;;;;;
                                  -57354;3;0;false;false;63;95;191;;;
                                  -57357;1;0;false;false;;;;;;
                                  -57358;8;0;false;false;63;95;191;;;
                                  -57366;1;0;false;false;;;;;;
                                  -57367;3;0;false;false;63;95;191;;;
                                  -57370;1;0;false;false;;;;;;
                                  -57371;4;0;false;false;63;95;191;;;
                                  -57375;1;0;false;false;;;;;;
                                  -57376;8;0;false;false;63;95;191;;;
                                  -57384;5;0;false;false;127;127;159;;;
                                  -57389;3;0;false;false;;;;;;
                                  -57392;1;0;false;false;63;95;191;;;
                                  -57393;4;0;false;false;;;;;;
                                  -57397;4;0;false;false;127;127;159;;;
                                  -57401;27;0;false;false;63;95;191;;;
                                  -57428;1;0;false;false;;;;;;
                                  -57429;1;0;false;false;127;127;159;;;
                                  -57430;1;0;false;false;;;;;;
                                  -57431;2;0;false;false;63;95;191;;;
                                  -57433;1;0;false;false;;;;;;
                                  -57434;3;0;false;false;63;95;191;;;
                                  -57437;1;0;false;false;;;;;;
                                  -57438;6;0;false;false;63;95;191;;;
                                  -57444;1;0;false;false;;;;;;
                                  -57445;4;0;false;false;63;95;191;;;
                                  -57449;1;0;false;false;;;;;;
                                  -57450;3;0;false;false;63;95;191;;;
                                  -57453;1;0;false;false;;;;;;
                                  -57454;6;0;false;false;63;95;191;;;
                                  -57460;1;0;false;false;;;;;;
                                  -57461;4;0;false;false;63;95;191;;;
                                  -57465;1;0;false;false;;;;;;
                                  -57466;7;0;false;false;63;95;191;;;
                                  -57473;1;0;false;false;;;;;;
                                  -57474;3;0;false;false;63;95;191;;;
                                  -57477;1;0;false;false;;;;;;
                                  -57478;8;0;false;false;63;95;191;;;
                                  -57486;5;0;false;false;127;127;159;;;
                                  -57491;3;0;false;false;;;;;;
                                  -57494;1;0;false;false;63;95;191;;;
                                  -57495;1;0;false;false;;;;;;
                                  -57496;5;0;false;false;127;127;159;;;
                                  -57501;3;0;false;false;;;;;;
                                  -57504;1;0;false;false;63;95;191;;;
                                  -57505;1;0;false;false;;;;;;
                                  -57506;11;1;false;false;127;159;191;;;
                                  -57517;24;0;false;false;63;95;191;;;
                                  -57541;1;0;false;false;;;;;;
                                  -57542;4;0;false;false;127;127;159;;;
                                  -57546;3;0;false;false;;;;;;
                                  -57549;1;0;false;false;63;95;191;;;
                                  -57550;4;0;false;false;;;;;;
                                  -57554;4;0;false;false;127;127;159;;;
                                  -57558;19;0;false;false;63;95;191;;;
                                  -57577;1;0;false;false;;;;;;
                                  -57578;4;0;false;false;63;95;191;;;
                                  -57582;1;0;false;false;;;;;;
                                  -57583;8;0;false;false;63;95;191;;;
                                  -57591;1;0;false;false;;;;;;
                                  -57592;2;0;false;false;63;95;191;;;
                                  -57594;1;0;false;false;;;;;;
                                  -57595;4;0;false;false;63;95;191;;;
                                  -57599;5;0;false;false;127;127;159;;;
                                  -57604;3;0;false;false;;;;;;
                                  -57607;1;0;false;false;63;95;191;;;
                                  -57608;1;0;false;false;;;;;;
                                  -57609;5;0;false;false;127;127;159;;;
                                  -57614;3;0;false;false;;;;;;
                                  -57617;2;0;false;false;63;95;191;;;
                                  -57619;2;0;false;false;;;;;;
                                  -57621;6;1;false;false;127;0;85;;;
                                  -57627;1;0;false;false;;;;;;
                                  -57628;4;1;false;false;127;0;85;;;
                                  -57632;1;0;false;false;;;;;;
                                  -57633;48;0;false;false;0;0;0;;;
                                  -57681;1;0;false;false;;;;;;
                                  -57682;23;0;false;false;0;0;0;;;
                                  -57705;1;0;false;false;;;;;;
                                  -57706;1;0;false;false;0;0;0;;;
                                  -57707;3;0;false;false;;;;;;
                                  -57710;14;0;false;false;0;0;0;;;
                                  -57724;3;0;false;false;;;;;;
                                  -57727;2;1;false;false;127;0;85;;;
                                  -57729;1;0;false;false;;;;;;
                                  -57730;23;0;false;false;0;0;0;;;
                                  -57753;1;0;false;false;;;;;;
                                  -57754;2;0;false;false;0;0;0;;;
                                  -57756;1;0;false;false;;;;;;
                                  -57757;4;1;false;false;127;0;85;;;
                                  -57761;1;0;false;false;0;0;0;;;
                                  -57762;1;0;false;false;;;;;;
                                  -57763;35;0;false;false;0;0;0;;;
                                  -57798;3;0;false;false;;;;;;
                                  -57801;18;0;false;false;0;0;0;;;
                                  -57819;1;0;false;false;;;;;;
                                  -57820;13;0;false;false;0;0;0;;;
                                  -57833;1;0;false;false;;;;;;
                                  -57834;1;0;false;false;0;0;0;;;
                                  -57835;1;0;false;false;;;;;;
                                  -57836;3;1;false;false;127;0;85;;;
                                  -57839;1;0;false;false;;;;;;
                                  -57840;43;0;false;false;0;0;0;;;
                                  -57883;3;0;false;false;;;;;;
                                  -57886;27;0;false;false;0;0;0;;;
                                  -57913;1;0;false;false;;;;;;
                                  -57914;15;0;false;false;0;0;0;;;
                                  -57929;2;0;false;false;;;;;;
                                  -57931;1;0;false;false;0;0;0;;;
                                  -57932;2;0;false;false;;;;;;
                                  -57934;3;0;false;false;63;95;191;;;
                                  -57937;4;0;false;false;;;;;;
                                  -57941;1;0;false;false;63;95;191;;;
                                  -57942;1;0;false;false;;;;;;
                                  -57943;4;0;false;false;63;95;191;;;
                                  -57947;1;0;false;false;;;;;;
                                  -57948;1;0;false;false;63;95;191;;;
                                  -57949;1;0;false;false;;;;;;
                                  -57950;3;0;false;false;63;95;191;;;
                                  -57953;1;0;false;false;;;;;;
                                  -57954;2;0;false;false;63;95;191;;;
                                  -57956;1;0;false;false;;;;;;
                                  -57957;2;0;false;false;63;95;191;;;
                                  -57959;1;0;false;false;;;;;;
                                  -57960;7;0;false;false;63;95;191;;;
                                  -57967;3;0;false;false;;;;;;
                                  -57970;1;0;false;false;63;95;191;;;
                                  -57971;1;0;false;false;;;;;;
                                  -57972;3;0;false;false;63;95;191;;;
                                  -57975;1;0;false;false;;;;;;
                                  -57976;6;0;false;false;63;95;191;;;
                                  -57982;1;0;false;false;;;;;;
                                  -57983;3;0;false;false;63;95;191;;;
                                  -57986;1;0;false;false;;;;;;
                                  -57987;2;0;false;false;63;95;191;;;
                                  -57989;1;0;false;false;;;;;;
                                  -57990;10;0;false;false;63;95;191;;;
                                  -58000;1;0;false;false;;;;;;
                                  -58001;4;0;false;false;63;95;191;;;
                                  -58005;1;0;false;false;;;;;;
                                  -58006;1;0;false;false;63;95;191;;;
                                  -58007;1;0;false;false;;;;;;
                                  -58008;5;0;false;false;63;95;191;;;
                                  -58013;1;0;false;false;;;;;;
                                  -58014;8;0;false;false;63;95;191;;;
                                  -58022;1;0;false;false;;;;;;
                                  -58023;4;0;false;false;63;95;191;;;
                                  -58027;1;0;false;false;;;;;;
                                  -58028;3;0;false;false;63;95;191;;;
                                  -58031;1;0;false;false;;;;;;
                                  -58032;3;0;false;false;63;95;191;;;
                                  -58035;1;0;false;false;;;;;;
                                  -58036;4;0;false;false;63;95;191;;;
                                  -58040;4;0;false;false;;;;;;
                                  -58044;1;0;false;false;63;95;191;;;
                                  -58045;1;0;false;false;;;;;;
                                  -58046;4;0;false;false;63;95;191;;;
                                  -58050;1;0;false;false;;;;;;
                                  -58051;3;0;false;false;63;95;191;;;
                                  -58054;1;0;false;false;;;;;;
                                  -58055;6;0;false;false;63;95;191;;;
                                  -58061;1;0;false;false;;;;;;
                                  -58062;11;0;false;false;63;95;191;;;
                                  -58073;1;0;false;false;;;;;;
                                  -58074;2;0;false;false;63;95;191;;;
                                  -58076;1;0;false;false;;;;;;
                                  -58077;3;0;false;false;63;95;191;;;
                                  -58080;1;0;false;false;;;;;;
                                  -58081;10;0;false;false;63;95;191;;;
                                  -58091;3;0;false;false;;;;;;
                                  -58094;1;0;false;false;63;95;191;;;
                                  -58095;1;0;false;false;;;;;;
                                  -58096;3;0;false;false;127;127;159;;;
                                  -58099;3;0;false;false;;;;;;
                                  -58102;1;0;false;false;63;95;191;;;
                                  -58103;3;0;false;false;;;;;;
                                  -58106;1;0;false;false;63;95;191;;;
                                  -58107;1;0;false;false;;;;;;
                                  -58108;7;1;false;false;127;159;191;;;
                                  -58115;3;0;false;false;63;95;191;;;
                                  -58118;1;0;false;false;;;;;;
                                  -58119;1;0;false;false;63;95;191;;;
                                  -58120;1;0;false;false;;;;;;
                                  -58121;3;0;false;false;63;95;191;;;
                                  -58124;1;0;false;false;;;;;;
                                  -58125;4;0;false;false;63;95;191;;;
                                  -58129;1;0;false;false;;;;;;
                                  -58130;7;0;false;false;63;95;191;;;
                                  -58137;1;0;false;false;;;;;;
                                  -58138;2;0;false;false;63;95;191;;;
                                  -58140;1;0;false;false;;;;;;
                                  -58141;8;0;false;false;63;95;191;;;
                                  -58149;1;0;false;false;;;;;;
                                  -58150;2;0;false;false;63;95;191;;;
                                  -58152;1;0;false;false;;;;;;
                                  -58153;1;0;false;false;63;95;191;;;
                                  -58154;1;0;false;false;;;;;;
                                  -58155;10;0;false;false;63;95;191;;;
                                  -58165;4;0;false;false;;;;;;
                                  -58169;1;0;false;false;63;95;191;;;
                                  -58170;2;0;false;false;;;;;;
                                  -58172;10;0;false;false;63;95;191;;;
                                  -58182;1;0;false;false;;;;;;
                                  -58183;3;0;false;false;63;95;191;;;
                                  -58186;1;0;false;false;;;;;;
                                  -58187;4;0;false;false;63;95;191;;;
                                  -58191;1;0;false;false;;;;;;
                                  -58192;1;0;false;false;63;95;191;;;
                                  -58193;1;0;false;false;;;;;;
                                  -58194;5;0;false;false;63;95;191;;;
                                  -58199;1;0;false;false;;;;;;
                                  -58200;5;0;false;false;63;95;191;;;
                                  -58205;2;0;false;false;;;;;;
                                  -58207;9;0;false;false;63;95;191;;;
                                  -58216;1;0;false;false;;;;;;
                                  -58217;5;0;false;false;63;95;191;;;
                                  -58222;1;0;false;false;;;;;;
                                  -58223;5;0;false;false;63;95;191;;;
                                  -58228;1;0;false;false;;;;;;
                                  -58229;3;0;false;false;63;95;191;;;
                                  -58232;1;0;false;false;;;;;;
                                  -58233;3;0;false;false;63;95;191;;;
                                  -58236;1;0;false;false;;;;;;
                                  -58237;2;0;false;false;63;95;191;;;
                                  -58239;1;0;false;false;;;;;;
                                  -58240;4;0;false;false;63;95;191;;;
                                  -58244;1;0;false;false;;;;;;
                                  -58245;2;0;false;false;63;95;191;;;
                                  -58247;3;0;false;false;;;;;;
                                  -58250;1;0;false;false;63;95;191;;;
                                  -58251;2;0;false;false;;;;;;
                                  -58253;9;0;false;false;63;95;191;;;
                                  -58262;1;0;false;false;;;;;;
                                  -58263;9;0;false;false;63;95;191;;;
                                  -58272;1;0;false;false;;;;;;
                                  -58273;9;0;false;false;63;95;191;;;
                                  -58282;1;0;false;false;;;;;;
                                  -58283;5;0;false;false;63;95;191;;;
                                  -58288;1;0;false;false;;;;;;
                                  -58289;5;0;false;false;63;95;191;;;
                                  -58294;1;0;false;false;;;;;;
                                  -58295;5;0;false;false;63;95;191;;;
                                  -58300;1;0;false;false;;;;;;
                                  -58301;7;0;false;false;63;95;191;;;
                                  -58308;1;0;false;false;;;;;;
                                  -58309;3;0;false;false;63;95;191;;;
                                  -58312;1;0;false;false;;;;;;
                                  -58313;8;0;false;false;63;95;191;;;
                                  -58321;1;0;false;false;;;;;;
                                  -58322;8;0;false;false;63;95;191;;;
                                  -58330;4;0;false;false;;;;;;
                                  -58334;1;0;false;false;63;95;191;;;
                                  -58335;2;0;false;false;;;;;;
                                  -58337;12;0;false;false;63;95;191;;;
                                  -58349;2;0;false;false;;;;;;
                                  -58351;8;0;false;false;63;95;191;;;
                                  -58359;1;0;false;false;;;;;;
                                  -58360;5;0;false;false;63;95;191;;;
                                  -58365;1;0;false;false;;;;;;
                                  -58366;3;0;false;false;63;95;191;;;
                                  -58369;1;0;false;false;;;;;;
                                  -58370;2;0;false;false;63;95;191;;;
                                  -58372;1;0;false;false;;;;;;
                                  -58373;5;0;false;false;63;95;191;;;
                                  -58378;1;0;false;false;;;;;;
                                  -58379;5;0;false;false;63;95;191;;;
                                  -58384;1;0;false;false;;;;;;
                                  -58385;5;0;false;false;63;95;191;;;
                                  -58390;1;0;false;false;;;;;;
                                  -58391;3;0;false;false;63;95;191;;;
                                  -58394;1;0;false;false;;;;;;
                                  -58395;8;0;false;false;63;95;191;;;
                                  -58403;1;0;false;false;;;;;;
                                  -58404;5;0;false;false;63;95;191;;;
                                  -58409;1;0;false;false;;;;;;
                                  -58410;5;0;false;false;63;95;191;;;
                                  -58415;3;0;false;false;;;;;;
                                  -58418;1;0;false;false;63;95;191;;;
                                  -58419;2;0;false;false;;;;;;
                                  -58421;6;0;false;false;63;95;191;;;
                                  -58427;1;0;false;false;;;;;;
                                  -58428;9;0;false;false;63;95;191;;;
                                  -58437;1;0;false;false;;;;;;
                                  -58438;10;0;false;false;63;95;191;;;
                                  -58448;1;0;false;false;;;;;;
                                  -58449;8;0;false;false;63;95;191;;;
                                  -58457;1;0;false;false;;;;;;
                                  -58458;12;0;false;false;63;95;191;;;
                                  -58470;1;0;false;false;;;;;;
                                  -58471;5;0;false;false;63;95;191;;;
                                  -58476;1;0;false;false;;;;;;
                                  -58477;6;0;false;false;63;95;191;;;
                                  -58483;3;0;false;false;;;;;;
                                  -58486;1;0;false;false;63;95;191;;;
                                  -58487;1;0;false;false;;;;;;
                                  -58488;7;1;false;false;127;159;191;;;
                                  -58495;6;0;false;false;63;95;191;;;
                                  -58501;1;0;false;false;;;;;;
                                  -58502;3;0;false;false;63;95;191;;;
                                  -58505;1;0;false;false;;;;;;
                                  -58506;2;0;false;false;63;95;191;;;
                                  -58508;1;0;false;false;;;;;;
                                  -58509;3;0;false;false;63;95;191;;;
                                  -58512;1;0;false;false;;;;;;
                                  -58513;10;0;false;false;63;95;191;;;
                                  -58523;1;0;false;false;;;;;;
                                  -58524;7;0;false;false;63;95;191;;;
                                  -58531;1;0;false;false;;;;;;
                                  -58532;7;0;false;false;63;95;191;;;
                                  -58539;1;0;false;false;;;;;;
                                  -58540;2;0;false;false;63;95;191;;;
                                  -58542;1;0;false;false;;;;;;
                                  -58543;8;0;false;false;63;95;191;;;
                                  -58551;4;0;false;false;;;;;;
                                  -58555;1;0;false;false;63;95;191;;;
                                  -58556;2;0;false;false;;;;;;
                                  -58558;3;0;false;false;63;95;191;;;
                                  -58561;1;0;false;false;;;;;;
                                  -58562;8;0;false;false;63;95;191;;;
                                  -58570;1;0;false;false;;;;;;
                                  -58571;2;0;false;false;63;95;191;;;
                                  -58573;1;0;false;false;;;;;;
                                  -58574;6;0;false;false;63;95;191;;;
                                  -58580;1;0;false;false;;;;;;
                                  -58581;1;0;false;false;63;95;191;;;
                                  -58582;1;0;false;false;;;;;;
                                  -58583;3;0;false;false;63;95;191;;;
                                  -58586;1;0;false;false;;;;;;
                                  -58587;8;0;false;false;63;95;191;;;
                                  -58595;3;0;false;false;;;;;;
                                  -58598;1;0;false;false;63;95;191;;;
                                  -58599;1;0;false;false;;;;;;
                                  -58600;11;1;false;false;127;159;191;;;
                                  -58611;12;0;false;false;63;95;191;;;
                                  -58623;1;0;false;false;;;;;;
                                  -58624;4;0;false;false;127;127;159;;;
                                  -58628;3;0;false;false;;;;;;
                                  -58631;1;0;false;false;63;95;191;;;
                                  -58632;4;0;false;false;;;;;;
                                  -58636;4;0;false;false;127;127;159;;;
                                  -58640;21;0;false;false;63;95;191;;;
                                  -58661;1;0;false;false;;;;;;
                                  -58662;1;0;false;false;127;127;159;;;
                                  -58663;1;0;false;false;;;;;;
                                  -58664;2;0;false;false;63;95;191;;;
                                  -58666;1;0;false;false;;;;;;
                                  -58667;3;0;false;false;63;95;191;;;
                                  -58670;1;0;false;false;;;;;;
                                  -58671;8;0;false;false;63;95;191;;;
                                  -58679;1;0;false;false;;;;;;
                                  -58680;3;0;false;false;63;95;191;;;
                                  -58683;1;0;false;false;;;;;;
                                  -58684;4;0;false;false;63;95;191;;;
                                  -58688;1;0;false;false;;;;;;
                                  -58689;8;0;false;false;63;95;191;;;
                                  -58697;5;0;false;false;127;127;159;;;
                                  -58702;3;0;false;false;;;;;;
                                  -58705;1;0;false;false;63;95;191;;;
                                  -58706;4;0;false;false;;;;;;
                                  -58710;4;0;false;false;127;127;159;;;
                                  -58714;27;0;false;false;63;95;191;;;
                                  -58741;1;0;false;false;;;;;;
                                  -58742;1;0;false;false;127;127;159;;;
                                  -58743;1;0;false;false;;;;;;
                                  -58744;2;0;false;false;63;95;191;;;
                                  -58746;1;0;false;false;;;;;;
                                  -58747;3;0;false;false;63;95;191;;;
                                  -58750;1;0;false;false;;;;;;
                                  -58751;6;0;false;false;63;95;191;;;
                                  -58757;1;0;false;false;;;;;;
                                  -58758;4;0;false;false;63;95;191;;;
                                  -58762;1;0;false;false;;;;;;
                                  -58763;3;0;false;false;63;95;191;;;
                                  -58766;1;0;false;false;;;;;;
                                  -58767;6;0;false;false;63;95;191;;;
                                  -58773;1;0;false;false;;;;;;
                                  -58774;4;0;false;false;63;95;191;;;
                                  -58778;1;0;false;false;;;;;;
                                  -58779;7;0;false;false;63;95;191;;;
                                  -58786;1;0;false;false;;;;;;
                                  -58787;3;0;false;false;63;95;191;;;
                                  -58790;1;0;false;false;;;;;;
                                  -58791;8;0;false;false;63;95;191;;;
                                  -58799;5;0;false;false;127;127;159;;;
                                  -58804;3;0;false;false;;;;;;
                                  -58807;1;0;false;false;63;95;191;;;
                                  -58808;1;0;false;false;;;;;;
                                  -58809;5;0;false;false;127;127;159;;;
                                  -58814;3;0;false;false;;;;;;
                                  -58817;2;0;false;false;63;95;191;;;
                                  -58819;2;0;false;false;;;;;;
                                  -58821;6;1;false;false;127;0;85;;;
                                  -58827;1;0;false;false;;;;;;
                                  -58828;4;1;false;false;127;0;85;;;
                                  -58832;1;0;false;false;;;;;;
                                  -58833;14;0;false;false;0;0;0;;;
                                  -58847;3;1;false;false;127;0;85;;;
                                  -58850;1;0;false;false;;;;;;
                                  -58851;4;0;false;false;0;0;0;;;
                                  -58855;1;0;false;false;;;;;;
                                  -58856;3;1;false;false;127;0;85;;;
                                  -58859;1;0;false;false;;;;;;
                                  -58860;7;0;false;false;0;0;0;;;
                                  -58867;1;0;false;false;;;;;;
                                  -58868;1;0;false;false;0;0;0;;;
                                  -58869;3;0;false;false;;;;;;
                                  -58872;14;0;false;false;0;0;0;;;
                                  -58886;7;0;false;false;;;;;;
                                  -58893;3;1;false;false;127;0;85;;;
                                  -58896;1;0;false;false;;;;;;
                                  -58897;8;0;false;false;0;0;0;;;
                                  -58905;1;0;false;false;;;;;;
                                  -58906;1;0;false;false;0;0;0;;;
                                  -58907;1;0;false;false;;;;;;
                                  -58908;3;0;false;false;0;0;0;;;
                                  -58911;1;0;false;false;;;;;;
                                  -58912;1;0;false;false;0;0;0;;;
                                  -58913;1;0;false;false;;;;;;
                                  -58914;13;0;false;false;0;0;0;;;
                                  -58927;3;0;false;false;;;;;;
                                  -58930;3;1;false;false;127;0;85;;;
                                  -58933;1;0;false;false;;;;;;
                                  -58934;13;0;false;false;0;0;0;;;
                                  -58947;1;0;false;false;;;;;;
                                  -58948;1;0;false;false;0;0;0;;;
                                  -58949;1;0;false;false;;;;;;
                                  -58950;3;0;false;false;0;0;0;;;
                                  -58953;1;0;false;false;;;;;;
                                  -58954;1;0;false;false;0;0;0;;;
                                  -58955;1;0;false;false;;;;;;
                                  -58956;18;0;false;false;0;0;0;;;
                                  -58974;3;0;false;false;;;;;;
                                  -58977;4;1;false;false;127;0;85;;;
                                  -58981;1;0;false;false;;;;;;
                                  -58982;7;0;false;false;0;0;0;;;
                                  -58989;1;0;false;false;;;;;;
                                  -58990;1;0;false;false;0;0;0;;;
                                  -58991;1;0;false;false;;;;;;
                                  -58992;1;0;false;false;0;0;0;;;
                                  -58993;4;1;false;false;127;0;85;;;
                                  -58997;10;0;false;false;0;0;0;;;
                                  -59007;5;0;false;false;;;;;;
                                  -59012;2;1;false;false;127;0;85;;;
                                  -59014;1;0;false;false;;;;;;
                                  -59015;33;0;false;false;0;0;0;;;
                                  -59048;1;0;false;false;;;;;;
                                  -59049;1;0;false;false;0;0;0;;;
                                  -59050;4;0;false;false;;;;;;
                                  -59054;54;0;false;false;63;127;95;;;
                                  -59108;2;0;false;false;;;;;;
                                  -59110;37;0;false;false;63;127;95;;;
                                  -59147;2;0;false;false;;;;;;
                                  -59149;4;1;false;false;127;0;85;;;
                                  -59153;1;0;false;false;;;;;;
                                  -59154;2;0;false;false;0;0;0;;;
                                  -59156;1;0;false;false;;;;;;
                                  -59157;1;0;false;false;0;0;0;;;
                                  -59158;1;0;false;false;;;;;;
                                  -59159;31;0;false;false;0;0;0;;;
                                  -59190;4;0;false;false;;;;;;
                                  -59194;3;1;false;false;127;0;85;;;
                                  -59197;1;0;false;false;;;;;;
                                  -59198;6;0;false;false;0;0;0;;;
                                  -59204;1;0;false;false;;;;;;
                                  -59205;1;0;false;false;0;0;0;;;
                                  -59206;1;0;false;false;;;;;;
                                  -59207;2;0;false;false;0;0;0;;;
                                  -59209;1;0;false;false;;;;;;
                                  -59210;1;0;false;false;0;0;0;;;
                                  -59211;1;0;false;false;;;;;;
                                  -59212;14;0;false;false;0;0;0;;;
                                  -59226;4;0;false;false;;;;;;
                                  -59230;2;1;false;false;127;0;85;;;
                                  -59232;1;0;false;false;;;;;;
                                  -59233;7;0;false;false;0;0;0;;;
                                  -59240;1;0;false;false;;;;;;
                                  -59241;2;0;false;false;0;0;0;;;
                                  -59243;1;0;false;false;;;;;;
                                  -59244;9;0;false;false;0;0;0;;;
                                  -59253;1;0;false;false;;;;;;
                                  -59254;1;0;false;false;0;0;0;;;
                                  -59255;5;0;false;false;;;;;;
                                  -59260;20;0;false;false;0;0;0;;;
                                  -59280;3;1;false;false;127;0;85;;;
                                  -59283;1;0;false;false;;;;;;
                                  -59284;17;0;false;false;0;0;0;;;
                                  -59301;4;0;false;false;;;;;;
                                  -59305;1;0;false;false;0;0;0;;;
                                  -59306;4;0;false;false;;;;;;
                                  -59310;4;1;false;false;127;0;85;;;
                                  -59314;1;0;false;false;;;;;;
                                  -59315;1;0;false;false;0;0;0;;;
                                  -59316;6;0;false;false;;;;;;
                                  -59322;17;0;false;false;0;0;0;;;
                                  -59339;3;1;false;false;127;0;85;;;
                                  -59342;1;0;false;false;;;;;;
                                  -59343;16;0;false;false;0;0;0;;;
                                  -59359;1;0;false;false;;;;;;
                                  -59360;3;1;false;false;127;0;85;;;
                                  -59363;1;0;false;false;;;;;;
                                  -59364;17;0;false;false;0;0;0;;;
                                  -59381;4;0;false;false;;;;;;
                                  -59385;1;0;false;false;0;0;0;;;
                                  -59386;4;0;false;false;;;;;;
                                  -59390;2;0;false;false;0;0;0;;;
                                  -59392;1;0;false;false;;;;;;
                                  -59393;1;0;false;false;0;0;0;;;
                                  -59394;1;0;false;false;;;;;;
                                  -59395;31;0;false;false;0;0;0;;;
                                  -59426;4;0;false;false;;;;;;
                                  -59430;6;0;false;false;0;0;0;;;
                                  -59436;1;0;false;false;;;;;;
                                  -59437;1;0;false;false;0;0;0;;;
                                  -59438;1;0;false;false;;;;;;
                                  -59439;2;0;false;false;0;0;0;;;
                                  -59441;1;0;false;false;;;;;;
                                  -59442;1;0;false;false;0;0;0;;;
                                  -59443;1;0;false;false;;;;;;
                                  -59444;14;0;false;false;0;0;0;;;
                                  -59458;4;0;false;false;;;;;;
                                  -59462;2;1;false;false;127;0;85;;;
                                  -59464;1;0;false;false;;;;;;
                                  -59465;7;0;false;false;0;0;0;;;
                                  -59472;1;0;false;false;;;;;;
                                  -59473;2;0;false;false;0;0;0;;;
                                  -59475;1;0;false;false;;;;;;
                                  -59476;9;0;false;false;0;0;0;;;
                                  -59485;1;0;false;false;;;;;;
                                  -59486;1;0;false;false;0;0;0;;;
                                  -59487;5;0;false;false;;;;;;
                                  -59492;20;0;false;false;0;0;0;;;
                                  -59512;3;1;false;false;127;0;85;;;
                                  -59515;1;0;false;false;;;;;;
                                  -59516;17;0;false;false;0;0;0;;;
                                  -59533;4;0;false;false;;;;;;
                                  -59537;1;0;false;false;0;0;0;;;
                                  -59538;4;0;false;false;;;;;;
                                  -59542;4;1;false;false;127;0;85;;;
                                  -59546;1;0;false;false;;;;;;
                                  -59547;1;0;false;false;0;0;0;;;
                                  -59548;6;0;false;false;;;;;;
                                  -59554;17;0;false;false;0;0;0;;;
                                  -59571;3;1;false;false;127;0;85;;;
                                  -59574;1;0;false;false;;;;;;
                                  -59575;16;0;false;false;0;0;0;;;
                                  -59591;1;0;false;false;;;;;;
                                  -59592;3;1;false;false;127;0;85;;;
                                  -59595;1;0;false;false;;;;;;
                                  -59596;17;0;false;false;0;0;0;;;
                                  -59613;4;0;false;false;;;;;;
                                  -59617;1;0;false;false;0;0;0;;;
                                  -59618;3;0;false;false;;;;;;
                                  -59621;1;0;false;false;0;0;0;;;
                                  -59622;1;0;false;false;;;;;;
                                  -59623;4;1;false;false;127;0;85;;;
                                  -59627;1;0;false;false;;;;;;
                                  -59628;1;0;false;false;0;0;0;;;
                                  -59629;4;0;false;false;;;;;;
                                  -59633;2;1;false;false;127;0;85;;;
                                  -59635;1;0;false;false;;;;;;
                                  -59636;7;0;false;false;0;0;0;;;
                                  -59643;1;0;false;false;;;;;;
                                  -59644;2;0;false;false;0;0;0;;;
                                  -59646;1;0;false;false;;;;;;
                                  -59647;9;0;false;false;0;0;0;;;
                                  -59656;1;0;false;false;;;;;;
                                  -59657;1;0;false;false;0;0;0;;;
                                  -59658;5;0;false;false;;;;;;
                                  -59663;20;0;false;false;0;0;0;;;
                                  -59683;3;1;false;false;127;0;85;;;
                                  -59686;1;0;false;false;;;;;;
                                  -59687;14;0;false;false;0;0;0;;;
                                  -59701;4;0;false;false;;;;;;
                                  -59705;1;0;false;false;0;0;0;;;
                                  -59706;4;0;false;false;;;;;;
                                  -59710;4;1;false;false;127;0;85;;;
                                  -59714;1;0;false;false;;;;;;
                                  -59715;1;0;false;false;0;0;0;;;
                                  -59716;6;0;false;false;;;;;;
                                  -59722;17;0;false;false;0;0;0;;;
                                  -59739;3;1;false;false;127;0;85;;;
                                  -59742;1;0;false;false;;;;;;
                                  -59743;13;0;false;false;0;0;0;;;
                                  -59756;1;0;false;false;;;;;;
                                  -59757;3;1;false;false;127;0;85;;;
                                  -59760;1;0;false;false;;;;;;
                                  -59761;17;0;false;false;0;0;0;;;
                                  -59778;4;0;false;false;;;;;;
                                  -59782;1;0;false;false;0;0;0;;;
                                  -59783;3;0;false;false;;;;;;
                                  -59786;1;0;false;false;0;0;0;;;
                                  -59787;6;0;false;false;;;;;;
                                  -59793;1;0;false;false;0;0;0;;;
                                  -59794;2;0;false;false;;;;;;
                                  -59796;3;0;false;false;63;95;191;;;
                                  -59799;3;0;false;false;;;;;;
                                  -59802;1;0;false;false;63;95;191;;;
                                  -59803;1;0;false;false;;;;;;
                                  -59804;4;0;false;false;63;95;191;;;
                                  -59808;1;0;false;false;;;;;;
                                  -59809;1;0;false;false;63;95;191;;;
                                  -59810;1;0;false;false;;;;;;
                                  -59811;13;0;false;false;63;95;191;;;
                                  -59824;1;0;false;false;;;;;;
                                  -59825;7;0;false;false;63;95;191;;;
                                  -59832;1;0;false;false;;;;;;
                                  -59833;9;0;false;false;63;95;191;;;
                                  -59842;1;0;false;false;;;;;;
                                  -59843;1;0;false;false;63;95;191;;;
                                  -59844;1;0;false;false;;;;;;
                                  -59845;16;0;false;false;63;95;191;;;
                                  -59861;1;0;false;false;;;;;;
                                  -59862;2;0;false;false;63;95;191;;;
                                  -59864;1;0;false;false;;;;;;
                                  -59865;4;0;false;false;63;95;191;;;
                                  -59869;4;0;false;false;;;;;;
                                  -59873;1;0;false;false;63;95;191;;;
                                  -59874;1;0;false;false;;;;;;
                                  -59875;8;0;false;false;63;95;191;;;
                                  -59883;1;0;false;false;;;;;;
                                  -59884;1;0;false;false;63;95;191;;;
                                  -59885;1;0;false;false;;;;;;
                                  -59886;4;0;false;false;63;95;191;;;
                                  -59890;1;0;false;false;;;;;;
                                  -59891;2;0;false;false;63;95;191;;;
                                  -59893;1;0;false;false;;;;;;
                                  -59894;4;0;false;false;63;95;191;;;
                                  -59898;1;0;false;false;;;;;;
                                  -59899;2;0;false;false;63;95;191;;;
                                  -59901;1;0;false;false;;;;;;
                                  -59902;8;0;false;false;63;95;191;;;
                                  -59910;1;0;false;false;;;;;;
                                  -59911;2;0;false;false;63;95;191;;;
                                  -59913;1;0;false;false;;;;;;
                                  -59914;9;0;false;false;63;95;191;;;
                                  -59923;1;0;false;false;;;;;;
                                  -59924;3;0;false;false;63;95;191;;;
                                  -59927;1;0;false;false;;;;;;
                                  -59928;4;0;false;false;63;95;191;;;
                                  -59932;1;0;false;false;;;;;;
                                  -59933;3;0;false;false;63;95;191;;;
                                  -59936;4;0;false;false;;;;;;
                                  -59940;1;0;false;false;63;95;191;;;
                                  -59941;1;0;false;false;;;;;;
                                  -59942;7;0;false;false;63;95;191;;;
                                  -59949;1;0;false;false;;;;;;
                                  -59950;4;0;false;false;63;95;191;;;
                                  -59954;1;0;false;false;;;;;;
                                  -59955;6;0;false;false;63;95;191;;;
                                  -59961;1;0;false;false;;;;;;
                                  -59962;2;0;false;false;63;95;191;;;
                                  -59964;1;0;false;false;;;;;;
                                  -59965;3;0;false;false;63;95;191;;;
                                  -59968;1;0;false;false;;;;;;
                                  -59969;4;0;false;false;63;95;191;;;
                                  -59973;1;0;false;false;;;;;;
                                  -59974;4;0;false;false;63;95;191;;;
                                  -59978;1;0;false;false;;;;;;
                                  -59979;6;0;false;false;63;95;191;;;
                                  -59985;1;0;false;false;;;;;;
                                  -59986;2;0;false;false;63;95;191;;;
                                  -59988;1;0;false;false;;;;;;
                                  -59989;7;0;false;false;63;95;191;;;
                                  -59996;1;0;false;false;;;;;;
                                  -59997;2;0;false;false;63;95;191;;;
                                  -59999;1;0;false;false;;;;;;
                                  -60000;2;0;false;false;63;95;191;;;
                                  -60002;1;0;false;false;;;;;;
                                  -60003;4;0;false;false;63;95;191;;;
                                  -60007;4;0;false;false;;;;;;
                                  -60011;1;0;false;false;63;95;191;;;
                                  -60012;1;0;false;false;;;;;;
                                  -60013;3;0;false;false;63;95;191;;;
                                  -60016;1;0;false;false;;;;;;
                                  -60017;1;0;false;false;63;95;191;;;
                                  -60018;1;0;false;false;;;;;;
                                  -60019;9;0;false;false;63;95;191;;;
                                  -60028;1;0;false;false;;;;;;
                                  -60029;9;0;false;false;63;95;191;;;
                                  -60038;1;0;false;false;;;;;;
                                  -60039;4;0;false;false;63;95;191;;;
                                  -60043;1;0;false;false;;;;;;
                                  -60044;3;0;false;false;63;95;191;;;
                                  -60047;1;0;false;false;;;;;;
                                  -60048;11;0;false;false;63;95;191;;;
                                  -60059;1;0;false;false;;;;;;
                                  -60060;5;0;false;false;63;95;191;;;
                                  -60065;3;0;false;false;;;;;;
                                  -60068;1;0;false;false;63;95;191;;;
                                  -60069;1;0;false;false;;;;;;
                                  -60070;4;0;false;false;63;95;191;;;
                                  -60074;1;0;false;false;;;;;;
                                  -60075;3;0;false;false;63;95;191;;;
                                  -60078;1;0;false;false;;;;;;
                                  -60079;2;0;false;false;63;95;191;;;
                                  -60081;1;0;false;false;;;;;;
                                  -60082;4;0;false;false;63;95;191;;;
                                  -60086;1;0;false;false;;;;;;
                                  -60087;4;0;false;false;63;95;191;;;
                                  -60091;1;0;false;false;;;;;;
                                  -60092;8;0;false;false;63;95;191;;;
                                  -60100;1;0;false;false;;;;;;
                                  -60101;8;0;false;false;63;95;191;;;
                                  -60109;1;0;false;false;;;;;;
                                  -60110;2;0;false;false;63;95;191;;;
                                  -60112;1;0;false;false;;;;;;
                                  -60113;5;0;false;false;63;95;191;;;
                                  -60118;1;0;false;false;127;127;159;;;
                                  -60119;2;0;false;false;63;95;191;;;
                                  -60121;1;0;false;false;127;127;159;;;
                                  -60122;4;0;false;false;63;95;191;;;
                                  -60126;1;0;false;false;;;;;;
                                  -60127;4;0;false;false;63;95;191;;;
                                  -60131;1;0;false;false;;;;;;
                                  -60132;6;0;false;false;63;95;191;;;
                                  -60138;3;0;false;false;;;;;;
                                  -60141;1;0;false;false;63;95;191;;;
                                  -60142;1;0;false;false;;;;;;
                                  -60143;3;0;false;false;63;95;191;;;
                                  -60146;1;0;false;false;;;;;;
                                  -60147;2;0;false;false;63;95;191;;;
                                  -60149;1;0;false;false;;;;;;
                                  -60150;9;0;false;false;63;95;191;;;
                                  -60159;1;0;false;false;;;;;;
                                  -60160;8;0;false;false;63;95;191;;;
                                  -60168;1;0;false;false;;;;;;
                                  -60169;2;0;false;false;63;95;191;;;
                                  -60171;1;0;false;false;;;;;;
                                  -60172;4;0;false;false;63;95;191;;;
                                  -60176;1;0;false;false;;;;;;
                                  -60177;6;0;false;false;63;95;191;;;
                                  -60183;4;0;false;false;;;;;;
                                  -60187;1;0;false;false;63;95;191;;;
                                  -60188;1;0;false;false;;;;;;
                                  -60189;5;0;false;false;63;95;191;;;
                                  -60194;1;0;false;false;;;;;;
                                  -60195;8;0;false;false;63;95;191;;;
                                  -60203;1;0;false;false;;;;;;
                                  -60204;4;0;false;false;63;95;191;;;
                                  -60208;1;0;false;false;;;;;;
                                  -60209;6;0;false;false;63;95;191;;;
                                  -60215;1;0;false;false;;;;;;
                                  -60216;8;0;false;false;63;95;191;;;
                                  -60224;1;0;false;false;;;;;;
                                  -60225;2;0;false;false;63;95;191;;;
                                  -60227;1;0;false;false;;;;;;
                                  -60228;1;0;false;false;63;95;191;;;
                                  -60229;1;0;false;false;;;;;;
                                  -60230;5;0;false;false;63;95;191;;;
                                  -60235;1;0;false;false;127;127;159;;;
                                  -60236;2;0;false;false;63;95;191;;;
                                  -60238;1;0;false;false;127;127;159;;;
                                  -60239;4;0;false;false;63;95;191;;;
                                  -60243;1;0;false;false;;;;;;
                                  -60244;8;0;false;false;63;95;191;;;
                                  -60252;3;0;false;false;;;;;;
                                  -60255;1;0;false;false;63;95;191;;;
                                  -60256;1;0;false;false;;;;;;
                                  -60257;6;0;false;false;63;95;191;;;
                                  -60263;1;0;false;false;;;;;;
                                  -60264;9;0;false;false;63;95;191;;;
                                  -60273;1;0;false;false;;;;;;
                                  -60274;6;0;false;false;63;95;191;;;
                                  -60280;1;0;false;false;;;;;;
                                  -60281;2;0;false;false;63;95;191;;;
                                  -60283;1;0;false;false;;;;;;
                                  -60284;7;0;false;false;63;95;191;;;
                                  -60291;1;0;false;false;;;;;;
                                  -60292;5;0;false;false;63;95;191;;;
                                  -60297;1;0;false;false;;;;;;
                                  -60298;2;0;false;false;63;95;191;;;
                                  -60300;1;0;false;false;;;;;;
                                  -60301;4;0;false;false;63;95;191;;;
                                  -60305;1;0;false;false;;;;;;
                                  -60306;6;0;false;false;63;95;191;;;
                                  -60312;1;0;false;false;;;;;;
                                  -60313;4;0;false;false;63;95;191;;;
                                  -60317;1;0;false;false;;;;;;
                                  -60318;3;0;false;false;63;95;191;;;
                                  -60321;1;0;false;false;;;;;;
                                  -60322;3;0;false;false;63;95;191;;;
                                  -60325;3;0;false;false;;;;;;
                                  -60328;1;0;false;false;63;95;191;;;
                                  -60329;1;0;false;false;;;;;;
                                  -60330;3;0;false;false;63;95;191;;;
                                  -60333;1;0;false;false;;;;;;
                                  -60334;4;0;false;false;63;95;191;;;
                                  -60338;1;0;false;false;;;;;;
                                  -60339;3;0;false;false;63;95;191;;;
                                  -60342;1;0;false;false;;;;;;
                                  -60343;7;0;false;false;63;95;191;;;
                                  -60350;4;0;false;false;;;;;;
                                  -60354;1;0;false;false;63;95;191;;;
                                  -60355;1;0;false;false;;;;;;
                                  -60356;3;0;false;false;127;127;159;;;
                                  -60359;3;0;false;false;;;;;;
                                  -60362;1;0;false;false;63;95;191;;;
                                  -60363;3;0;false;false;;;;;;
                                  -60366;1;0;false;false;63;95;191;;;
                                  -60367;1;0;false;false;;;;;;
                                  -60368;7;1;false;false;127;159;191;;;
                                  -60375;8;0;false;false;63;95;191;;;
                                  -60383;1;0;false;false;;;;;;
                                  -60384;3;0;false;false;63;95;191;;;
                                  -60387;1;0;false;false;;;;;;
                                  -60388;8;0;false;false;63;95;191;;;
                                  -60396;3;0;false;false;;;;;;
                                  -60399;1;0;false;false;63;95;191;;;
                                  -60400;1;0;false;false;;;;;;
                                  -60401;11;1;false;false;127;159;191;;;
                                  -60412;12;0;false;false;63;95;191;;;
                                  -60424;1;0;false;false;;;;;;
                                  -60425;4;0;false;false;127;127;159;;;
                                  -60429;3;0;false;false;;;;;;
                                  -60432;1;0;false;false;63;95;191;;;
                                  -60433;4;0;false;false;;;;;;
                                  -60437;4;0;false;false;127;127;159;;;
                                  -60441;21;0;false;false;63;95;191;;;
                                  -60462;1;0;false;false;;;;;;
                                  -60463;1;0;false;false;127;127;159;;;
                                  -60464;1;0;false;false;;;;;;
                                  -60465;2;0;false;false;63;95;191;;;
                                  -60467;1;0;false;false;;;;;;
                                  -60468;3;0;false;false;63;95;191;;;
                                  -60471;1;0;false;false;;;;;;
                                  -60472;8;0;false;false;63;95;191;;;
                                  -60480;1;0;false;false;;;;;;
                                  -60481;3;0;false;false;63;95;191;;;
                                  -60484;1;0;false;false;;;;;;
                                  -60485;4;0;false;false;63;95;191;;;
                                  -60489;1;0;false;false;;;;;;
                                  -60490;8;0;false;false;63;95;191;;;
                                  -60498;5;0;false;false;127;127;159;;;
                                  -60503;3;0;false;false;;;;;;
                                  -60506;1;0;false;false;63;95;191;;;
                                  -60507;4;0;false;false;;;;;;
                                  -60511;4;0;false;false;127;127;159;;;
                                  -60515;27;0;false;false;63;95;191;;;
                                  -60542;1;0;false;false;;;;;;
                                  -60543;1;0;false;false;127;127;159;;;
                                  -60544;1;0;false;false;;;;;;
                                  -60545;2;0;false;false;63;95;191;;;
                                  -60547;1;0;false;false;;;;;;
                                  -60548;3;0;false;false;63;95;191;;;
                                  -60551;1;0;false;false;;;;;;
                                  -60552;6;0;false;false;63;95;191;;;
                                  -60558;1;0;false;false;;;;;;
                                  -60559;4;0;false;false;63;95;191;;;
                                  -60563;1;0;false;false;;;;;;
                                  -60564;3;0;false;false;63;95;191;;;
                                  -60567;1;0;false;false;;;;;;
                                  -60568;6;0;false;false;63;95;191;;;
                                  -60574;1;0;false;false;;;;;;
                                  -60575;4;0;false;false;63;95;191;;;
                                  -60579;1;0;false;false;;;;;;
                                  -60580;7;0;false;false;63;95;191;;;
                                  -60587;1;0;false;false;;;;;;
                                  -60588;3;0;false;false;63;95;191;;;
                                  -60591;1;0;false;false;;;;;;
                                  -60592;8;0;false;false;63;95;191;;;
                                  -60600;5;0;false;false;127;127;159;;;
                                  -60605;3;0;false;false;;;;;;
                                  -60608;1;0;false;false;63;95;191;;;
                                  -60609;1;0;false;false;;;;;;
                                  -60610;5;0;false;false;127;127;159;;;
                                  -60615;3;0;false;false;;;;;;
                                  -60618;1;0;false;false;63;95;191;;;
                                  -60619;1;0;false;false;;;;;;
                                  -60620;11;1;false;false;127;159;191;;;
                                  -60631;24;0;false;false;63;95;191;;;
                                  -60655;1;0;false;false;;;;;;
                                  -60656;4;0;false;false;127;127;159;;;
                                  -60660;3;0;false;false;;;;;;
                                  -60663;1;0;false;false;63;95;191;;;
                                  -60664;4;0;false;false;;;;;;
                                  -60668;4;0;false;false;127;127;159;;;
                                  -60672;19;0;false;false;63;95;191;;;
                                  -60691;1;0;false;false;;;;;;
                                  -60692;4;0;false;false;63;95;191;;;
                                  -60696;1;0;false;false;;;;;;
                                  -60697;8;0;false;false;63;95;191;;;
                                  -60705;1;0;false;false;;;;;;
                                  -60706;2;0;false;false;63;95;191;;;
                                  -60708;1;0;false;false;;;;;;
                                  -60709;4;0;false;false;63;95;191;;;
                                  -60713;5;0;false;false;127;127;159;;;
                                  -60718;3;0;false;false;;;;;;
                                  -60721;1;0;false;false;63;95;191;;;
                                  -60722;1;0;false;false;;;;;;
                                  -60723;5;0;false;false;127;127;159;;;
                                  -60728;3;0;false;false;;;;;;
                                  -60731;1;0;false;false;63;95;191;;;
                                  -60732;1;0;false;false;;;;;;
                                  -60733;5;1;false;false;127;159;191;;;
                                  -60738;16;0;false;false;63;95;191;;;
                                  -60754;3;0;false;false;;;;;;
                                  -60757;1;0;false;false;63;95;191;;;
                                  -60758;1;0;false;false;;;;;;
                                  -60759;7;1;false;false;127;159;191;;;
                                  -60766;3;0;false;false;63;95;191;;;
                                  -60769;3;0;false;false;;;;;;
                                  -60772;2;0;false;false;63;95;191;;;
                                  -60774;2;0;false;false;;;;;;
                                  -60776;6;1;false;false;127;0;85;;;
                                  -60782;1;0;false;false;;;;;;
                                  -60783;4;1;false;false;127;0;85;;;
                                  -60787;1;0;false;false;;;;;;
                                  -60788;42;0;false;false;0;0;0;;;
                                  -60830;1;0;false;false;;;;;;
                                  -60831;9;0;false;false;0;0;0;;;
                                  -60840;1;0;false;false;;;;;;
                                  -60841;1;0;false;false;0;0;0;;;
                                  -60842;3;0;false;false;;;;;;
                                  -60845;14;0;false;false;0;0;0;;;
                                  -60859;3;0;false;false;;;;;;
                                  -60862;2;1;false;false;127;0;85;;;
                                  -60864;1;0;false;false;;;;;;
                                  -60865;9;0;false;false;0;0;0;;;
                                  -60874;1;0;false;false;;;;;;
                                  -60875;2;0;false;false;0;0;0;;;
                                  -60877;1;0;false;false;;;;;;
                                  -60878;4;1;false;false;127;0;85;;;
                                  -60882;1;0;false;false;0;0;0;;;
                                  -60883;1;0;false;false;;;;;;
                                  -60884;1;0;false;false;0;0;0;;;
                                  -60885;4;0;false;false;;;;;;
                                  -60889;35;0;false;false;0;0;0;;;
                                  -60924;3;0;false;false;;;;;;
                                  -60927;1;0;false;false;0;0;0;;;
                                  -60928;3;0;false;false;;;;;;
                                  -60931;18;0;false;false;0;0;0;;;
                                  -60949;1;0;false;false;;;;;;
                                  -60950;13;0;false;false;0;0;0;;;
                                  -60963;1;0;false;false;;;;;;
                                  -60964;1;0;false;false;0;0;0;;;
                                  -60965;1;0;false;false;;;;;;
                                  -60966;3;1;false;false;127;0;85;;;
                                  -60969;1;0;false;false;;;;;;
                                  -60970;29;0;false;false;0;0;0;;;
                                  -60999;3;0;false;false;;;;;;
                                  -61002;28;0;false;false;0;0;0;;;
                                  -61030;1;0;false;false;;;;;;
                                  -61031;15;0;false;false;0;0;0;;;
                                  -61046;3;0;false;false;;;;;;
                                  -61049;1;0;false;false;0;0;0;;;
                                  -61050;2;0;false;false;;;;;;
                                  -61052;3;0;false;false;63;95;191;;;
                                  -61055;3;0;false;false;;;;;;
                                  -61058;1;0;false;false;63;95;191;;;
                                  -61059;1;0;false;false;;;;;;
                                  -61060;4;0;false;false;63;95;191;;;
                                  -61064;1;0;false;false;;;;;;
                                  -61065;1;0;false;false;63;95;191;;;
                                  -61066;1;0;false;false;;;;;;
                                  -61067;4;0;false;false;63;95;191;;;
                                  -61071;1;0;false;false;;;;;;
                                  -61072;10;0;false;false;63;95;191;;;
                                  -61082;1;0;false;false;;;;;;
                                  -61083;9;0;false;false;63;95;191;;;
                                  -61092;1;0;false;false;;;;;;
                                  -61093;1;0;false;false;63;95;191;;;
                                  -61094;1;0;false;false;;;;;;
                                  -61095;17;0;false;false;63;95;191;;;
                                  -61112;1;0;false;false;;;;;;
                                  -61113;5;0;false;false;63;95;191;;;
                                  -61118;1;0;false;false;;;;;;
                                  -61119;2;0;false;false;63;95;191;;;
                                  -61121;1;0;false;false;;;;;;
                                  -61122;4;0;false;false;63;95;191;;;
                                  -61126;1;0;false;false;;;;;;
                                  -61127;2;0;false;false;63;95;191;;;
                                  -61129;1;0;false;false;;;;;;
                                  -61130;3;0;false;false;63;95;191;;;
                                  -61133;4;0;false;false;;;;;;
                                  -61137;1;0;false;false;63;95;191;;;
                                  -61138;1;0;false;false;;;;;;
                                  -61139;6;0;false;false;63;95;191;;;
                                  -61145;1;0;false;false;;;;;;
                                  -61146;2;0;false;false;63;95;191;;;
                                  -61148;1;0;false;false;;;;;;
                                  -61149;9;0;false;false;63;95;191;;;
                                  -61158;1;0;false;false;;;;;;
                                  -61159;3;0;false;false;63;95;191;;;
                                  -61162;1;0;false;false;;;;;;
                                  -61163;10;0;false;false;63;95;191;;;
                                  -61173;1;0;false;false;;;;;;
                                  -61174;5;0;false;false;63;95;191;;;
                                  -61179;1;0;false;false;;;;;;
                                  -61180;3;0;false;false;63;95;191;;;
                                  -61183;1;0;false;false;;;;;;
                                  -61184;1;0;false;false;63;95;191;;;
                                  -61185;1;0;false;false;;;;;;
                                  -61186;5;0;false;false;63;95;191;;;
                                  -61191;3;0;false;false;;;;;;
                                  -61194;1;0;false;false;63;95;191;;;
                                  -61195;1;0;false;false;;;;;;
                                  -61196;3;0;false;false;127;127;159;;;
                                  -61199;3;0;false;false;;;;;;
                                  -61202;1;0;false;false;63;95;191;;;
                                  -61203;3;0;false;false;;;;;;
                                  -61206;1;0;false;false;63;95;191;;;
                                  -61207;1;0;false;false;;;;;;
                                  -61208;7;1;false;false;127;159;191;;;
                                  -61215;8;0;false;false;63;95;191;;;
                                  -61223;1;0;false;false;;;;;;
                                  -61224;3;0;false;false;63;95;191;;;
                                  -61227;1;0;false;false;;;;;;
                                  -61228;8;0;false;false;63;95;191;;;
                                  -61236;3;0;false;false;;;;;;
                                  -61239;1;0;false;false;63;95;191;;;
                                  -61240;1;0;false;false;;;;;;
                                  -61241;11;1;false;false;127;159;191;;;
                                  -61252;12;0;false;false;63;95;191;;;
                                  -61264;1;0;false;false;;;;;;
                                  -61265;4;0;false;false;127;127;159;;;
                                  -61269;3;0;false;false;;;;;;
                                  -61272;1;0;false;false;63;95;191;;;
                                  -61273;4;0;false;false;;;;;;
                                  -61277;4;0;false;false;127;127;159;;;
                                  -61281;21;0;false;false;63;95;191;;;
                                  -61302;1;0;false;false;;;;;;
                                  -61303;1;0;false;false;127;127;159;;;
                                  -61304;1;0;false;false;;;;;;
                                  -61305;2;0;false;false;63;95;191;;;
                                  -61307;1;0;false;false;;;;;;
                                  -61308;3;0;false;false;63;95;191;;;
                                  -61311;1;0;false;false;;;;;;
                                  -61312;8;0;false;false;63;95;191;;;
                                  -61320;1;0;false;false;;;;;;
                                  -61321;3;0;false;false;63;95;191;;;
                                  -61324;1;0;false;false;;;;;;
                                  -61325;4;0;false;false;63;95;191;;;
                                  -61329;1;0;false;false;;;;;;
                                  -61330;8;0;false;false;63;95;191;;;
                                  -61338;5;0;false;false;127;127;159;;;
                                  -61343;3;0;false;false;;;;;;
                                  -61346;1;0;false;false;63;95;191;;;
                                  -61347;4;0;false;false;;;;;;
                                  -61351;4;0;false;false;127;127;159;;;
                                  -61355;27;0;false;false;63;95;191;;;
                                  -61382;1;0;false;false;;;;;;
                                  -61383;1;0;false;false;127;127;159;;;
                                  -61384;1;0;false;false;;;;;;
                                  -61385;2;0;false;false;63;95;191;;;
                                  -61387;1;0;false;false;;;;;;
                                  -61388;3;0;false;false;63;95;191;;;
                                  -61391;1;0;false;false;;;;;;
                                  -61392;6;0;false;false;63;95;191;;;
                                  -61398;1;0;false;false;;;;;;
                                  -61399;4;0;false;false;63;95;191;;;
                                  -61403;1;0;false;false;;;;;;
                                  -61404;3;0;false;false;63;95;191;;;
                                  -61407;1;0;false;false;;;;;;
                                  -61408;6;0;false;false;63;95;191;;;
                                  -61414;1;0;false;false;;;;;;
                                  -61415;4;0;false;false;63;95;191;;;
                                  -61419;1;0;false;false;;;;;;
                                  -61420;7;0;false;false;63;95;191;;;
                                  -61427;1;0;false;false;;;;;;
                                  -61428;3;0;false;false;63;95;191;;;
                                  -61431;1;0;false;false;;;;;;
                                  -61432;8;0;false;false;63;95;191;;;
                                  -61440;5;0;false;false;127;127;159;;;
                                  -61445;3;0;false;false;;;;;;
                                  -61448;1;0;false;false;63;95;191;;;
                                  -61449;1;0;false;false;;;;;;
                                  -61450;5;0;false;false;127;127;159;;;
                                  -61455;3;0;false;false;;;;;;
                                  -61458;1;0;false;false;63;95;191;;;
                                  -61459;1;0;false;false;;;;;;
                                  -61460;11;1;false;false;127;159;191;;;
                                  -61471;24;0;false;false;63;95;191;;;
                                  -61495;1;0;false;false;;;;;;
                                  -61496;4;0;false;false;127;127;159;;;
                                  -61500;3;0;false;false;;;;;;
                                  -61503;1;0;false;false;63;95;191;;;
                                  -61504;4;0;false;false;;;;;;
                                  -61508;4;0;false;false;127;127;159;;;
                                  -61512;19;0;false;false;63;95;191;;;
                                  -61531;1;0;false;false;;;;;;
                                  -61532;4;0;false;false;63;95;191;;;
                                  -61536;1;0;false;false;;;;;;
                                  -61537;8;0;false;false;63;95;191;;;
                                  -61545;1;0;false;false;;;;;;
                                  -61546;2;0;false;false;63;95;191;;;
                                  -61548;1;0;false;false;;;;;;
                                  -61549;4;0;false;false;63;95;191;;;
                                  -61553;5;0;false;false;127;127;159;;;
                                  -61558;3;0;false;false;;;;;;
                                  -61561;1;0;false;false;63;95;191;;;
                                  -61562;1;0;false;false;;;;;;
                                  -61563;5;0;false;false;127;127;159;;;
                                  -61568;3;0;false;false;;;;;;
                                  -61571;2;0;false;false;63;95;191;;;
                                  -61573;2;0;false;false;;;;;;
                                  -61575;6;1;false;false;127;0;85;;;
                                  -61581;1;0;false;false;;;;;;
                                  -61582;4;1;false;false;127;0;85;;;
                                  -61586;1;0;false;false;;;;;;
                                  -61587;48;0;false;false;0;0;0;;;
                                  -61635;1;0;false;false;;;;;;
                                  -61636;9;0;false;false;0;0;0;;;
                                  -61645;1;0;false;false;;;;;;
                                  -61646;1;0;false;false;0;0;0;;;
                                  -61647;3;0;false;false;;;;;;
                                  -61650;14;0;false;false;0;0;0;;;
                                  -61664;3;0;false;false;;;;;;
                                  -61667;2;1;false;false;127;0;85;;;
                                  -61669;1;0;false;false;;;;;;
                                  -61670;9;0;false;false;0;0;0;;;
                                  -61679;1;0;false;false;;;;;;
                                  -61680;2;0;false;false;0;0;0;;;
                                  -61682;1;0;false;false;;;;;;
                                  -61683;4;1;false;false;127;0;85;;;
                                  -61687;1;0;false;false;0;0;0;;;
                                  -61688;1;0;false;false;;;;;;
                                  -61689;35;0;false;false;0;0;0;;;
                                  -61724;3;0;false;false;;;;;;
                                  -61727;2;1;false;false;127;0;85;;;
                                  -61729;1;0;false;false;;;;;;
                                  -61730;21;0;false;false;0;0;0;;;
                                  -61751;1;0;false;false;;;;;;
                                  -61752;1;0;false;false;0;0;0;;;
                                  -61753;4;0;false;false;;;;;;
                                  -61757;48;0;false;false;0;0;0;;;
                                  -61805;4;0;false;false;;;;;;
                                  -61809;38;0;false;false;0;0;0;;;
                                  -61847;1;0;false;false;;;;;;
                                  -61848;30;0;false;false;0;0;0;;;
                                  -61878;1;0;false;false;;;;;;
                                  -61879;4;1;false;false;127;0;85;;;
                                  -61883;2;0;false;false;0;0;0;;;
                                  -61885;4;0;false;false;;;;;;
                                  -61889;18;0;false;false;0;0;0;;;
                                  -61907;1;0;false;false;;;;;;
                                  -61908;1;0;false;false;0;0;0;;;
                                  -61909;1;0;false;false;;;;;;
                                  -61910;4;1;false;false;127;0;85;;;
                                  -61914;1;0;false;false;0;0;0;;;
                                  -61915;3;0;false;false;;;;;;
                                  -61918;1;0;false;false;0;0;0;;;
                                  -61919;4;0;false;false;;;;;;
                                  -61923;18;0;false;false;0;0;0;;;
                                  -61941;1;0;false;false;;;;;;
                                  -61942;13;0;false;false;0;0;0;;;
                                  -61955;1;0;false;false;;;;;;
                                  -61956;1;0;false;false;0;0;0;;;
                                  -61957;1;0;false;false;;;;;;
                                  -61958;3;1;false;false;127;0;85;;;
                                  -61961;1;0;false;false;;;;;;
                                  -61962;29;0;false;false;0;0;0;;;
                                  -61991;3;0;false;false;;;;;;
                                  -61994;30;0;false;false;0;0;0;;;
                                  -62024;1;0;false;false;;;;;;
                                  -62025;15;0;false;false;0;0;0;;;
                                  -62040;3;0;false;false;;;;;;
                                  -62043;1;0;false;false;0;0;0;;;
                                  -62044;2;0;false;false;;;;;;
                                  -62046;3;0;false;false;63;95;191;;;
                                  -62049;3;0;false;false;;;;;;
                                  -62052;1;0;false;false;63;95;191;;;
                                  -62053;1;0;false;false;;;;;;
                                  -62054;4;0;false;false;63;95;191;;;
                                  -62058;1;0;false;false;;;;;;
                                  -62059;1;0;false;false;63;95;191;;;
                                  -62060;1;0;false;false;;;;;;
                                  -62061;4;0;false;false;63;95;191;;;
                                  -62065;1;0;false;false;;;;;;
                                  -62066;5;0;false;false;63;95;191;;;
                                  -62071;1;0;false;false;;;;;;
                                  -62072;9;0;false;false;63;95;191;;;
                                  -62081;1;0;false;false;;;;;;
                                  -62082;1;0;false;false;63;95;191;;;
                                  -62083;1;0;false;false;;;;;;
                                  -62084;12;0;false;false;63;95;191;;;
                                  -62096;1;0;false;false;;;;;;
                                  -62097;5;0;false;false;63;95;191;;;
                                  -62102;1;0;false;false;;;;;;
                                  -62103;2;0;false;false;63;95;191;;;
                                  -62105;1;0;false;false;;;;;;
                                  -62106;4;0;false;false;63;95;191;;;
                                  -62110;1;0;false;false;;;;;;
                                  -62111;2;0;false;false;63;95;191;;;
                                  -62113;1;0;false;false;;;;;;
                                  -62114;3;0;false;false;63;95;191;;;
                                  -62117;1;0;false;false;;;;;;
                                  -62118;6;0;false;false;63;95;191;;;
                                  -62124;1;0;false;false;;;;;;
                                  -62125;2;0;false;false;63;95;191;;;
                                  -62127;4;0;false;false;;;;;;
                                  -62131;1;0;false;false;63;95;191;;;
                                  -62132;1;0;false;false;;;;;;
                                  -62133;9;0;false;false;63;95;191;;;
                                  -62142;1;0;false;false;;;;;;
                                  -62143;3;0;false;false;63;95;191;;;
                                  -62146;1;0;false;false;;;;;;
                                  -62147;6;0;false;false;63;95;191;;;
                                  -62153;1;0;false;false;;;;;;
                                  -62154;3;0;false;false;63;95;191;;;
                                  -62157;1;0;false;false;;;;;;
                                  -62158;1;0;false;false;63;95;191;;;
                                  -62159;1;0;false;false;;;;;;
                                  -62160;5;0;false;false;63;95;191;;;
                                  -62165;3;0;false;false;;;;;;
                                  -62168;1;0;false;false;63;95;191;;;
                                  -62169;1;0;false;false;;;;;;
                                  -62170;3;0;false;false;127;127;159;;;
                                  -62173;3;0;false;false;;;;;;
                                  -62176;1;0;false;false;63;95;191;;;
                                  -62177;3;0;false;false;;;;;;
                                  -62180;1;0;false;false;63;95;191;;;
                                  -62181;1;0;false;false;;;;;;
                                  -62182;7;1;false;false;127;159;191;;;
                                  -62189;8;0;false;false;63;95;191;;;
                                  -62197;1;0;false;false;;;;;;
                                  -62198;3;0;false;false;63;95;191;;;
                                  -62201;1;0;false;false;;;;;;
                                  -62202;8;0;false;false;63;95;191;;;
                                  -62210;3;0;false;false;;;;;;
                                  -62213;1;0;false;false;63;95;191;;;
                                  -62214;1;0;false;false;;;;;;
                                  -62215;11;1;false;false;127;159;191;;;
                                  -62226;12;0;false;false;63;95;191;;;
                                  -62238;1;0;false;false;;;;;;
                                  -62239;4;0;false;false;127;127;159;;;
                                  -62243;3;0;false;false;;;;;;
                                  -62246;1;0;false;false;63;95;191;;;
                                  -62247;4;0;false;false;;;;;;
                                  -62251;4;0;false;false;127;127;159;;;
                                  -62255;21;0;false;false;63;95;191;;;
                                  -62276;1;0;false;false;;;;;;
                                  -62277;1;0;false;false;127;127;159;;;
                                  -62278;1;0;false;false;;;;;;
                                  -62279;2;0;false;false;63;95;191;;;
                                  -62281;1;0;false;false;;;;;;
                                  -62282;3;0;false;false;63;95;191;;;
                                  -62285;1;0;false;false;;;;;;
                                  -62286;8;0;false;false;63;95;191;;;
                                  -62294;1;0;false;false;;;;;;
                                  -62295;3;0;false;false;63;95;191;;;
                                  -62298;1;0;false;false;;;;;;
                                  -62299;4;0;false;false;63;95;191;;;
                                  -62303;1;0;false;false;;;;;;
                                  -62304;8;0;false;false;63;95;191;;;
                                  -62312;5;0;false;false;127;127;159;;;
                                  -62317;3;0;false;false;;;;;;
                                  -62320;1;0;false;false;63;95;191;;;
                                  -62321;4;0;false;false;;;;;;
                                  -62325;4;0;false;false;127;127;159;;;
                                  -62329;27;0;false;false;63;95;191;;;
                                  -62356;1;0;false;false;;;;;;
                                  -62357;1;0;false;false;127;127;159;;;
                                  -62358;1;0;false;false;;;;;;
                                  -62359;2;0;false;false;63;95;191;;;
                                  -62361;1;0;false;false;;;;;;
                                  -62362;3;0;false;false;63;95;191;;;
                                  -62365;1;0;false;false;;;;;;
                                  -62366;6;0;false;false;63;95;191;;;
                                  -62372;1;0;false;false;;;;;;
                                  -62373;4;0;false;false;63;95;191;;;
                                  -62377;1;0;false;false;;;;;;
                                  -62378;3;0;false;false;63;95;191;;;
                                  -62381;1;0;false;false;;;;;;
                                  -62382;6;0;false;false;63;95;191;;;
                                  -62388;1;0;false;false;;;;;;
                                  -62389;4;0;false;false;63;95;191;;;
                                  -62393;1;0;false;false;;;;;;
                                  -62394;7;0;false;false;63;95;191;;;
                                  -62401;1;0;false;false;;;;;;
                                  -62402;3;0;false;false;63;95;191;;;
                                  -62405;1;0;false;false;;;;;;
                                  -62406;8;0;false;false;63;95;191;;;
                                  -62414;5;0;false;false;127;127;159;;;
                                  -62419;3;0;false;false;;;;;;
                                  -62422;1;0;false;false;63;95;191;;;
                                  -62423;1;0;false;false;;;;;;
                                  -62424;5;0;false;false;127;127;159;;;
                                  -62429;3;0;false;false;;;;;;
                                  -62432;1;0;false;false;63;95;191;;;
                                  -62433;1;0;false;false;;;;;;
                                  -62434;11;1;false;false;127;159;191;;;
                                  -62445;24;0;false;false;63;95;191;;;
                                  -62469;1;0;false;false;;;;;;
                                  -62470;4;0;false;false;127;127;159;;;
                                  -62474;3;0;false;false;;;;;;
                                  -62477;1;0;false;false;63;95;191;;;
                                  -62478;4;0;false;false;;;;;;
                                  -62482;4;0;false;false;127;127;159;;;
                                  -62486;19;0;false;false;63;95;191;;;
                                  -62505;1;0;false;false;;;;;;
                                  -62506;4;0;false;false;63;95;191;;;
                                  -62510;1;0;false;false;;;;;;
                                  -62511;8;0;false;false;63;95;191;;;
                                  -62519;1;0;false;false;;;;;;
                                  -62520;2;0;false;false;63;95;191;;;
                                  -62522;1;0;false;false;;;;;;
                                  -62523;4;0;false;false;63;95;191;;;
                                  -62527;5;0;false;false;127;127;159;;;
                                  -62532;3;0;false;false;;;;;;
                                  -62535;1;0;false;false;63;95;191;;;
                                  -62536;1;0;false;false;;;;;;
                                  -62537;5;0;false;false;127;127;159;;;
                                  -62542;3;0;false;false;;;;;;
                                  -62545;2;0;false;false;63;95;191;;;
                                  -62547;2;0;false;false;;;;;;
                                  -62549;6;1;false;false;127;0;85;;;
                                  -62555;1;0;false;false;;;;;;
                                  -62556;4;1;false;false;127;0;85;;;
                                  -62560;1;0;false;false;;;;;;
                                  -62561;38;0;false;false;0;0;0;;;
                                  -62599;1;0;false;false;;;;;;
                                  -62600;9;0;false;false;0;0;0;;;
                                  -62609;1;0;false;false;;;;;;
                                  -62610;1;0;false;false;0;0;0;;;
                                  -62611;3;0;false;false;;;;;;
                                  -62614;14;0;false;false;0;0;0;;;
                                  -62628;3;0;false;false;;;;;;
                                  -62631;2;1;false;false;127;0;85;;;
                                  -62633;1;0;false;false;;;;;;
                                  -62634;9;0;false;false;0;0;0;;;
                                  -62643;1;0;false;false;;;;;;
                                  -62644;2;0;false;false;0;0;0;;;
                                  -62646;1;0;false;false;;;;;;
                                  -62647;4;1;false;false;127;0;85;;;
                                  -62651;1;0;false;false;0;0;0;;;
                                  -62652;1;0;false;false;;;;;;
                                  -62653;1;0;false;false;0;0;0;;;
                                  -62654;4;0;false;false;;;;;;
                                  -62658;35;0;false;false;0;0;0;;;
                                  -62693;3;0;false;false;;;;;;
                                  -62696;1;0;false;false;0;0;0;;;
                                  -62697;3;0;false;false;;;;;;
                                  -62700;2;1;false;false;127;0;85;;;
                                  -62702;1;0;false;false;;;;;;
                                  -62703;16;0;false;false;0;0;0;;;
                                  -62719;1;0;false;false;;;;;;
                                  -62720;1;0;false;false;0;0;0;;;
                                  -62721;4;0;false;false;;;;;;
                                  -62725;43;0;false;false;0;0;0;;;
                                  -62768;4;0;false;false;;;;;;
                                  -62772;32;0;false;false;0;0;0;;;
                                  -62804;4;1;false;false;127;0;85;;;
                                  -62808;2;0;false;false;0;0;0;;;
                                  -62810;4;0;false;false;;;;;;
                                  -62814;13;0;false;false;0;0;0;;;
                                  -62827;1;0;false;false;;;;;;
                                  -62828;1;0;false;false;0;0;0;;;
                                  -62829;1;0;false;false;;;;;;
                                  -62830;4;1;false;false;127;0;85;;;
                                  -62834;1;0;false;false;0;0;0;;;
                                  -62835;3;0;false;false;;;;;;
                                  -62838;1;0;false;false;0;0;0;;;
                                  -62839;3;0;false;false;;;;;;
                                  -62842;18;0;false;false;0;0;0;;;
                                  -62860;1;0;false;false;;;;;;
                                  -62861;13;0;false;false;0;0;0;;;
                                  -62874;1;0;false;false;;;;;;
                                  -62875;1;0;false;false;0;0;0;;;
                                  -62876;1;0;false;false;;;;;;
                                  -62877;3;1;false;false;127;0;85;;;
                                  -62880;1;0;false;false;;;;;;
                                  -62881;29;0;false;false;0;0;0;;;
                                  -62910;3;0;false;false;;;;;;
                                  -62913;25;0;false;false;0;0;0;;;
                                  -62938;1;0;false;false;;;;;;
                                  -62939;15;0;false;false;0;0;0;;;
                                  -62954;3;0;false;false;;;;;;
                                  -62957;1;0;false;false;0;0;0;;;
                                  -62958;2;0;false;false;;;;;;
                                  -62960;3;0;false;false;63;95;191;;;
                                  -62963;5;0;false;false;;;;;;
                                  -62968;1;0;false;false;63;95;191;;;
                                  -62969;1;0;false;false;;;;;;
                                  -62970;4;0;false;false;63;95;191;;;
                                  -62974;1;0;false;false;;;;;;
                                  -62975;1;0;false;false;63;95;191;;;
                                  -62976;1;0;false;false;;;;;;
                                  -62977;6;0;false;false;63;95;191;;;
                                  -62983;1;0;false;false;;;;;;
                                  -62984;9;0;false;false;63;95;191;;;
                                  -62993;1;0;false;false;;;;;;
                                  -62994;1;0;false;false;63;95;191;;;
                                  -62995;1;0;false;false;;;;;;
                                  -62996;6;0;false;false;63;95;191;;;
                                  -63002;1;0;false;false;;;;;;
                                  -63003;5;0;false;false;63;95;191;;;
                                  -63008;1;0;false;false;;;;;;
                                  -63009;2;0;false;false;63;95;191;;;
                                  -63011;1;0;false;false;;;;;;
                                  -63012;4;0;false;false;63;95;191;;;
                                  -63016;1;0;false;false;;;;;;
                                  -63017;2;0;false;false;63;95;191;;;
                                  -63019;1;0;false;false;;;;;;
                                  -63020;3;0;false;false;63;95;191;;;
                                  -63023;1;0;false;false;;;;;;
                                  -63024;6;0;false;false;63;95;191;;;
                                  -63030;1;0;false;false;;;;;;
                                  -63031;4;0;false;false;63;95;191;;;
                                  -63035;1;0;false;false;;;;;;
                                  -63036;3;0;false;false;63;95;191;;;
                                  -63039;1;0;false;false;;;;;;
                                  -63040;6;0;false;false;63;95;191;;;
                                  -63046;1;0;false;false;;;;;;
                                  -63047;4;0;false;false;63;95;191;;;
                                  -63051;4;0;false;false;;;;;;
                                  -63055;1;0;false;false;63;95;191;;;
                                  -63056;1;0;false;false;;;;;;
                                  -63057;3;0;false;false;63;95;191;;;
                                  -63060;1;0;false;false;;;;;;
                                  -63061;8;0;false;false;63;95;191;;;
                                  -63069;3;0;false;false;;;;;;
                                  -63072;1;0;false;false;63;95;191;;;
                                  -63073;1;0;false;false;;;;;;
                                  -63074;3;0;false;false;127;127;159;;;
                                  -63077;3;0;false;false;;;;;;
                                  -63080;1;0;false;false;63;95;191;;;
                                  -63081;3;0;false;false;;;;;;
                                  -63084;1;0;false;false;63;95;191;;;
                                  -63085;1;0;false;false;;;;;;
                                  -63086;7;1;false;false;127;159;191;;;
                                  -63093;14;0;false;false;63;95;191;;;
                                  -63107;1;0;false;false;;;;;;
                                  -63108;3;0;false;false;63;95;191;;;
                                  -63111;1;0;false;false;;;;;;
                                  -63112;8;0;false;false;63;95;191;;;
                                  -63120;3;0;false;false;;;;;;
                                  -63123;1;0;false;false;63;95;191;;;
                                  -63124;1;0;false;false;;;;;;
                                  -63125;11;1;false;false;127;159;191;;;
                                  -63136;12;0;false;false;63;95;191;;;
                                  -63148;1;0;false;false;;;;;;
                                  -63149;4;0;false;false;127;127;159;;;
                                  -63153;3;0;false;false;;;;;;
                                  -63156;1;0;false;false;63;95;191;;;
                                  -63157;4;0;false;false;;;;;;
                                  -63161;4;0;false;false;127;127;159;;;
                                  -63165;21;0;false;false;63;95;191;;;
                                  -63186;1;0;false;false;;;;;;
                                  -63187;1;0;false;false;127;127;159;;;
                                  -63188;1;0;false;false;;;;;;
                                  -63189;2;0;false;false;63;95;191;;;
                                  -63191;1;0;false;false;;;;;;
                                  -63192;3;0;false;false;63;95;191;;;
                                  -63195;1;0;false;false;;;;;;
                                  -63196;8;0;false;false;63;95;191;;;
                                  -63204;1;0;false;false;;;;;;
                                  -63205;3;0;false;false;63;95;191;;;
                                  -63208;1;0;false;false;;;;;;
                                  -63209;4;0;false;false;63;95;191;;;
                                  -63213;1;0;false;false;;;;;;
                                  -63214;8;0;false;false;63;95;191;;;
                                  -63222;5;0;false;false;127;127;159;;;
                                  -63227;3;0;false;false;;;;;;
                                  -63230;1;0;false;false;63;95;191;;;
                                  -63231;4;0;false;false;;;;;;
                                  -63235;4;0;false;false;127;127;159;;;
                                  -63239;27;0;false;false;63;95;191;;;
                                  -63266;1;0;false;false;;;;;;
                                  -63267;1;0;false;false;127;127;159;;;
                                  -63268;1;0;false;false;;;;;;
                                  -63269;2;0;false;false;63;95;191;;;
                                  -63271;1;0;false;false;;;;;;
                                  -63272;3;0;false;false;63;95;191;;;
                                  -63275;1;0;false;false;;;;;;
                                  -63276;6;0;false;false;63;95;191;;;
                                  -63282;1;0;false;false;;;;;;
                                  -63283;4;0;false;false;63;95;191;;;
                                  -63287;1;0;false;false;;;;;;
                                  -63288;3;0;false;false;63;95;191;;;
                                  -63291;1;0;false;false;;;;;;
                                  -63292;6;0;false;false;63;95;191;;;
                                  -63298;1;0;false;false;;;;;;
                                  -63299;4;0;false;false;63;95;191;;;
                                  -63303;1;0;false;false;;;;;;
                                  -63304;7;0;false;false;63;95;191;;;
                                  -63311;1;0;false;false;;;;;;
                                  -63312;3;0;false;false;63;95;191;;;
                                  -63315;1;0;false;false;;;;;;
                                  -63316;8;0;false;false;63;95;191;;;
                                  -63324;5;0;false;false;127;127;159;;;
                                  -63329;3;0;false;false;;;;;;
                                  -63332;1;0;false;false;63;95;191;;;
                                  -63333;1;0;false;false;;;;;;
                                  -63334;5;0;false;false;127;127;159;;;
                                  -63339;3;0;false;false;;;;;;
                                  -63342;1;0;false;false;63;95;191;;;
                                  -63343;1;0;false;false;;;;;;
                                  -63344;11;1;false;false;127;159;191;;;
                                  -63355;24;0;false;false;63;95;191;;;
                                  -63379;1;0;false;false;;;;;;
                                  -63380;4;0;false;false;127;127;159;;;
                                  -63384;3;0;false;false;;;;;;
                                  -63387;1;0;false;false;63;95;191;;;
                                  -63388;4;0;false;false;;;;;;
                                  -63392;4;0;false;false;127;127;159;;;
                                  -63396;19;0;false;false;63;95;191;;;
                                  -63415;1;0;false;false;;;;;;
                                  -63416;4;0;false;false;63;95;191;;;
                                  -63420;1;0;false;false;;;;;;
                                  -63421;8;0;false;false;63;95;191;;;
                                  -63429;1;0;false;false;;;;;;
                                  -63430;2;0;false;false;63;95;191;;;
                                  -63432;1;0;false;false;;;;;;
                                  -63433;4;0;false;false;63;95;191;;;
                                  -63437;5;0;false;false;127;127;159;;;
                                  -63442;3;0;false;false;;;;;;
                                  -63445;1;0;false;false;63;95;191;;;
                                  -63446;1;0;false;false;;;;;;
                                  -63447;5;0;false;false;127;127;159;;;
                                  -63452;3;0;false;false;;;;;;
                                  -63455;2;0;false;false;63;95;191;;;
                                  -63457;2;0;false;false;;;;;;
                                  -63459;6;1;false;false;127;0;85;;;
                                  -63465;1;0;false;false;;;;;;
                                  -63466;4;1;false;false;127;0;85;;;
                                  -63470;1;0;false;false;;;;;;
                                  -63471;32;0;false;false;0;0;0;;;
                                  -63503;1;0;false;false;;;;;;
                                  -63504;15;0;false;false;0;0;0;;;
                                  -63519;1;0;false;false;;;;;;
                                  -63520;1;0;false;false;0;0;0;;;
                                  -63521;3;0;false;false;;;;;;
                                  -63524;14;0;false;false;0;0;0;;;
                                  -63538;3;0;false;false;;;;;;
                                  -63541;2;1;false;false;127;0;85;;;
                                  -63543;1;0;false;false;;;;;;
                                  -63544;15;0;false;false;0;0;0;;;
                                  -63559;1;0;false;false;;;;;;
                                  -63560;2;0;false;false;0;0;0;;;
                                  -63562;1;0;false;false;;;;;;
                                  -63563;4;1;false;false;127;0;85;;;
                                  -63567;1;0;false;false;0;0;0;;;
                                  -63568;1;0;false;false;;;;;;
                                  -63569;1;0;false;false;0;0;0;;;
                                  -63570;4;0;false;false;;;;;;
                                  -63574;35;0;false;false;0;0;0;;;
                                  -63609;3;0;false;false;;;;;;
                                  -63612;1;0;false;false;0;0;0;;;
                                  -63613;3;0;false;false;;;;;;
                                  -63616;13;0;false;false;0;0;0;;;
                                  -63629;1;0;false;false;;;;;;
                                  -63630;13;0;false;false;0;0;0;;;
                                  -63643;1;0;false;false;;;;;;
                                  -63644;1;0;false;false;0;0;0;;;
                                  -63645;1;0;false;false;;;;;;
                                  -63646;3;1;false;false;127;0;85;;;
                                  -63649;1;0;false;false;;;;;;
                                  -63650;30;0;false;false;0;0;0;;;
                                  -63680;3;0;false;false;;;;;;
                                  -63683;23;0;false;false;0;0;0;;;
                                  -63706;1;0;false;false;;;;;;
                                  -63707;15;0;false;false;0;0;0;;;
                                  -63722;2;0;false;false;;;;;;
                                  -63724;1;0;false;false;0;0;0;;;
                                  -63725;2;0;false;false;;;;;;
                                  -63727;3;0;false;false;63;95;191;;;
                                  -63730;5;0;false;false;;;;;;
                                  -63735;1;0;false;false;63;95;191;;;
                                  -63736;1;0;false;false;;;;;;
                                  -63737;4;0;false;false;63;95;191;;;
                                  -63741;1;0;false;false;;;;;;
                                  -63742;1;0;false;false;63;95;191;;;
                                  -63743;1;0;false;false;;;;;;
                                  -63744;9;0;false;false;63;95;191;;;
                                  -63753;1;0;false;false;;;;;;
                                  -63754;9;0;false;false;63;95;191;;;
                                  -63763;1;0;false;false;;;;;;
                                  -63764;1;0;false;false;63;95;191;;;
                                  -63765;1;0;false;false;;;;;;
                                  -63766;9;0;false;false;63;95;191;;;
                                  -63775;1;0;false;false;;;;;;
                                  -63776;5;0;false;false;63;95;191;;;
                                  -63781;1;0;false;false;;;;;;
                                  -63782;2;0;false;false;63;95;191;;;
                                  -63784;1;0;false;false;;;;;;
                                  -63785;4;0;false;false;63;95;191;;;
                                  -63789;1;0;false;false;;;;;;
                                  -63790;2;0;false;false;63;95;191;;;
                                  -63792;1;0;false;false;;;;;;
                                  -63793;3;0;false;false;63;95;191;;;
                                  -63796;1;0;false;false;;;;;;
                                  -63797;6;0;false;false;63;95;191;;;
                                  -63803;1;0;false;false;;;;;;
                                  -63804;4;0;false;false;63;95;191;;;
                                  -63808;1;0;false;false;;;;;;
                                  -63809;3;0;false;false;63;95;191;;;
                                  -63812;4;0;false;false;;;;;;
                                  -63816;1;0;false;false;63;95;191;;;
                                  -63817;1;0;false;false;;;;;;
                                  -63818;9;0;false;false;63;95;191;;;
                                  -63827;1;0;false;false;;;;;;
                                  -63828;3;0;false;false;63;95;191;;;
                                  -63831;1;0;false;false;;;;;;
                                  -63832;8;0;false;false;63;95;191;;;
                                  -63840;3;0;false;false;;;;;;
                                  -63843;1;0;false;false;63;95;191;;;
                                  -63844;1;0;false;false;;;;;;
                                  -63845;3;0;false;false;127;127;159;;;
                                  -63848;3;0;false;false;;;;;;
                                  -63851;1;0;false;false;63;95;191;;;
                                  -63852;1;0;false;false;;;;;;
                                  -63853;4;0;false;false;63;95;191;;;
                                  -63857;1;0;false;false;;;;;;
                                  -63858;6;0;false;false;127;127;159;;;
                                  -63864;14;0;false;false;63;95;191;;;
                                  -63878;7;0;false;false;127;127;159;;;
                                  -63885;1;0;false;false;;;;;;
                                  -63886;2;0;false;false;63;95;191;;;
                                  -63888;1;0;false;false;;;;;;
                                  -63889;7;0;false;false;63;95;191;;;
                                  -63896;1;0;false;false;;;;;;
                                  -63897;3;0;false;false;63;95;191;;;
                                  -63900;1;0;false;false;;;;;;
                                  -63901;5;0;false;false;63;95;191;;;
                                  -63906;1;0;false;false;;;;;;
                                  -63907;1;0;false;false;63;95;191;;;
                                  -63908;1;0;false;false;;;;;;
                                  -63909;3;0;false;false;63;95;191;;;
                                  -63912;1;0;false;false;;;;;;
                                  -63913;1;0;false;false;63;95;191;;;
                                  -63914;1;0;false;false;;;;;;
                                  -63915;6;0;false;false;63;95;191;;;
                                  -63921;1;0;false;false;;;;;;
                                  -63922;7;0;false;false;63;95;191;;;
                                  -63929;3;0;false;false;;;;;;
                                  -63932;1;0;false;false;63;95;191;;;
                                  -63933;1;0;false;false;;;;;;
                                  -63934;3;0;false;false;63;95;191;;;
                                  -63937;1;0;false;false;;;;;;
                                  -63938;5;0;false;false;63;95;191;;;
                                  -63943;1;0;false;false;;;;;;
                                  -63944;3;0;false;false;63;95;191;;;
                                  -63947;1;0;false;false;;;;;;
                                  -63948;3;0;false;false;63;95;191;;;
                                  -63951;1;0;false;false;;;;;;
                                  -63952;5;0;false;false;63;95;191;;;
                                  -63957;1;0;false;false;;;;;;
                                  -63958;7;0;false;false;63;95;191;;;
                                  -63965;1;0;false;false;;;;;;
                                  -63966;2;0;false;false;63;95;191;;;
                                  -63968;1;0;false;false;;;;;;
                                  -63969;3;0;false;false;63;95;191;;;
                                  -63972;1;0;false;false;;;;;;
                                  -63973;10;0;false;false;63;95;191;;;
                                  -63983;3;0;false;false;;;;;;
                                  -63986;1;0;false;false;63;95;191;;;
                                  -63987;1;0;false;false;;;;;;
                                  -63988;6;0;false;false;127;127;159;;;
                                  -63994;21;0;false;false;63;95;191;;;
                                  -64015;7;0;false;false;127;127;159;;;
                                  -64022;1;0;false;false;;;;;;
                                  -64023;2;0;false;false;63;95;191;;;
                                  -64025;1;0;false;false;;;;;;
                                  -64026;3;0;false;false;63;95;191;;;
                                  -64029;1;0;false;false;;;;;;
                                  -64030;6;0;false;false;63;95;191;;;
                                  -64036;1;0;false;false;;;;;;
                                  -64037;3;0;false;false;63;95;191;;;
                                  -64040;1;0;false;false;;;;;;
                                  -64041;12;0;false;false;63;95;191;;;
                                  -64053;3;0;false;false;;;;;;
                                  -64056;1;0;false;false;63;95;191;;;
                                  -64057;1;0;false;false;;;;;;
                                  -64058;4;0;false;false;127;127;159;;;
                                  -64062;3;0;false;false;;;;;;
                                  -64065;1;0;false;false;63;95;191;;;
                                  -64066;4;0;false;false;;;;;;
                                  -64070;1;0;false;false;63;95;191;;;
                                  -64071;1;0;false;false;;;;;;
                                  -64072;7;1;false;false;127;159;191;;;
                                  -64079;8;0;false;false;63;95;191;;;
                                  -64087;1;0;false;false;;;;;;
                                  -64088;3;0;false;false;63;95;191;;;
                                  -64091;1;0;false;false;;;;;;
                                  -64092;8;0;false;false;63;95;191;;;
                                  -64100;3;0;false;false;;;;;;
                                  -64103;1;0;false;false;63;95;191;;;
                                  -64104;1;0;false;false;;;;;;
                                  -64105;11;1;false;false;127;159;191;;;
                                  -64116;12;0;false;false;63;95;191;;;
                                  -64128;1;0;false;false;;;;;;
                                  -64129;4;0;false;false;127;127;159;;;
                                  -64133;3;0;false;false;;;;;;
                                  -64136;1;0;false;false;63;95;191;;;
                                  -64137;4;0;false;false;;;;;;
                                  -64141;4;0;false;false;127;127;159;;;
                                  -64145;21;0;false;false;63;95;191;;;
                                  -64166;1;0;false;false;;;;;;
                                  -64167;1;0;false;false;127;127;159;;;
                                  -64168;1;0;false;false;;;;;;
                                  -64169;2;0;false;false;63;95;191;;;
                                  -64171;1;0;false;false;;;;;;
                                  -64172;3;0;false;false;63;95;191;;;
                                  -64175;1;0;false;false;;;;;;
                                  -64176;8;0;false;false;63;95;191;;;
                                  -64184;1;0;false;false;;;;;;
                                  -64185;3;0;false;false;63;95;191;;;
                                  -64188;1;0;false;false;;;;;;
                                  -64189;4;0;false;false;63;95;191;;;
                                  -64193;1;0;false;false;;;;;;
                                  -64194;8;0;false;false;63;95;191;;;
                                  -64202;5;0;false;false;127;127;159;;;
                                  -64207;3;0;false;false;;;;;;
                                  -64210;1;0;false;false;63;95;191;;;
                                  -64211;4;0;false;false;;;;;;
                                  -64215;4;0;false;false;127;127;159;;;
                                  -64219;27;0;false;false;63;95;191;;;
                                  -64246;1;0;false;false;;;;;;
                                  -64247;1;0;false;false;127;127;159;;;
                                  -64248;1;0;false;false;;;;;;
                                  -64249;2;0;false;false;63;95;191;;;
                                  -64251;1;0;false;false;;;;;;
                                  -64252;3;0;false;false;63;95;191;;;
                                  -64255;1;0;false;false;;;;;;
                                  -64256;6;0;false;false;63;95;191;;;
                                  -64262;1;0;false;false;;;;;;
                                  -64263;4;0;false;false;63;95;191;;;
                                  -64267;1;0;false;false;;;;;;
                                  -64268;3;0;false;false;63;95;191;;;
                                  -64271;1;0;false;false;;;;;;
                                  -64272;6;0;false;false;63;95;191;;;
                                  -64278;1;0;false;false;;;;;;
                                  -64279;4;0;false;false;63;95;191;;;
                                  -64283;1;0;false;false;;;;;;
                                  -64284;7;0;false;false;63;95;191;;;
                                  -64291;1;0;false;false;;;;;;
                                  -64292;3;0;false;false;63;95;191;;;
                                  -64295;1;0;false;false;;;;;;
                                  -64296;8;0;false;false;63;95;191;;;
                                  -64304;5;0;false;false;127;127;159;;;
                                  -64309;3;0;false;false;;;;;;
                                  -64312;1;0;false;false;63;95;191;;;
                                  -64313;1;0;false;false;;;;;;
                                  -64314;5;0;false;false;127;127;159;;;
                                  -64319;3;0;false;false;;;;;;
                                  -64322;1;0;false;false;63;95;191;;;
                                  -64323;1;0;false;false;;;;;;
                                  -64324;11;1;false;false;127;159;191;;;
                                  -64335;24;0;false;false;63;95;191;;;
                                  -64359;1;0;false;false;;;;;;
                                  -64360;4;0;false;false;127;127;159;;;
                                  -64364;3;0;false;false;;;;;;
                                  -64367;1;0;false;false;63;95;191;;;
                                  -64368;4;0;false;false;;;;;;
                                  -64372;4;0;false;false;127;127;159;;;
                                  -64376;19;0;false;false;63;95;191;;;
                                  -64395;1;0;false;false;;;;;;
                                  -64396;4;0;false;false;63;95;191;;;
                                  -64400;1;0;false;false;;;;;;
                                  -64401;8;0;false;false;63;95;191;;;
                                  -64409;1;0;false;false;;;;;;
                                  -64410;2;0;false;false;63;95;191;;;
                                  -64412;1;0;false;false;;;;;;
                                  -64413;4;0;false;false;63;95;191;;;
                                  -64417;5;0;false;false;127;127;159;;;
                                  -64422;3;0;false;false;;;;;;
                                  -64425;1;0;false;false;63;95;191;;;
                                  -64426;1;0;false;false;;;;;;
                                  -64427;5;0;false;false;127;127;159;;;
                                  -64432;3;0;false;false;;;;;;
                                  -64435;2;0;false;false;63;95;191;;;
                                  -64437;2;0;false;false;;;;;;
                                  -64439;6;1;false;false;127;0;85;;;
                                  -64445;1;0;false;false;;;;;;
                                  -64446;4;1;false;false;127;0;85;;;
                                  -64450;1;0;false;false;;;;;;
                                  -64451;38;0;false;false;0;0;0;;;
                                  -64489;1;0;false;false;;;;;;
                                  -64490;9;0;false;false;0;0;0;;;
                                  -64499;1;0;false;false;;;;;;
                                  -64500;1;0;false;false;0;0;0;;;
                                  -64501;3;0;false;false;;;;;;
                                  -64504;14;0;false;false;0;0;0;;;
                                  -64518;3;0;false;false;;;;;;
                                  -64521;2;1;false;false;127;0;85;;;
                                  -64523;1;0;false;false;;;;;;
                                  -64524;9;0;false;false;0;0;0;;;
                                  -64533;1;0;false;false;;;;;;
                                  -64534;2;0;false;false;0;0;0;;;
                                  -64536;1;0;false;false;;;;;;
                                  -64537;4;1;false;false;127;0;85;;;
                                  -64541;1;0;false;false;0;0;0;;;
                                  -64542;1;0;false;false;;;;;;
                                  -64543;1;0;false;false;0;0;0;;;
                                  -64544;4;0;false;false;;;;;;
                                  -64548;35;0;false;false;0;0;0;;;
                                  -64583;3;0;false;false;;;;;;
                                  -64586;1;0;false;false;0;0;0;;;
                                  -64587;3;0;false;false;;;;;;
                                  -64590;13;0;false;false;0;0;0;;;
                                  -64603;1;0;false;false;;;;;;
                                  -64604;13;0;false;false;0;0;0;;;
                                  -64617;1;0;false;false;;;;;;
                                  -64618;1;0;false;false;0;0;0;;;
                                  -64619;1;0;false;false;;;;;;
                                  -64620;3;1;false;false;127;0;85;;;
                                  -64623;1;0;false;false;;;;;;
                                  -64624;24;0;false;false;0;0;0;;;
                                  -64648;3;0;false;false;;;;;;
                                  -64651;26;0;false;false;0;0;0;;;
                                  -64677;1;0;false;false;;;;;;
                                  -64678;15;0;false;false;0;0;0;;;
                                  -64693;3;0;false;false;;;;;;
                                  -64696;1;0;false;false;0;0;0;;;
                                  -64697;2;0;false;false;;;;;;
                                  -64699;3;0;false;false;63;95;191;;;
                                  -64702;5;0;false;false;;;;;;
                                  -64707;1;0;false;false;63;95;191;;;
                                  -64708;1;0;false;false;;;;;;
                                  -64709;4;0;false;false;63;95;191;;;
                                  -64713;1;0;false;false;;;;;;
                                  -64714;1;0;false;false;63;95;191;;;
                                  -64715;1;0;false;false;;;;;;
                                  -64716;6;0;false;false;63;95;191;;;
                                  -64722;1;0;false;false;;;;;;
                                  -64723;3;0;false;false;63;95;191;;;
                                  -64726;1;0;false;false;;;;;;
                                  -64727;9;0;false;false;63;95;191;;;
                                  -64736;1;0;false;false;;;;;;
                                  -64737;1;0;false;false;63;95;191;;;
                                  -64738;1;0;false;false;;;;;;
                                  -64739;9;0;false;false;63;95;191;;;
                                  -64748;1;0;false;false;;;;;;
                                  -64749;5;0;false;false;63;95;191;;;
                                  -64754;1;0;false;false;;;;;;
                                  -64755;2;0;false;false;63;95;191;;;
                                  -64757;1;0;false;false;;;;;;
                                  -64758;4;0;false;false;63;95;191;;;
                                  -64762;1;0;false;false;;;;;;
                                  -64763;2;0;false;false;63;95;191;;;
                                  -64765;1;0;false;false;;;;;;
                                  -64766;3;0;false;false;63;95;191;;;
                                  -64769;1;0;false;false;;;;;;
                                  -64770;6;0;false;false;63;95;191;;;
                                  -64776;1;0;false;false;;;;;;
                                  -64777;4;0;false;false;63;95;191;;;
                                  -64781;1;0;false;false;;;;;;
                                  -64782;1;0;false;false;63;95;191;;;
                                  -64783;1;0;false;false;;;;;;
                                  -64784;3;0;false;false;63;95;191;;;
                                  -64787;4;0;false;false;;;;;;
                                  -64791;1;0;false;false;63;95;191;;;
                                  -64792;1;0;false;false;;;;;;
                                  -64793;2;0;false;false;63;95;191;;;
                                  -64795;1;0;false;false;;;;;;
                                  -64796;8;0;false;false;63;95;191;;;
                                  -64804;1;0;false;false;;;;;;
                                  -64805;3;0;false;false;63;95;191;;;
                                  -64808;1;0;false;false;;;;;;
                                  -64809;6;0;false;false;63;95;191;;;
                                  -64815;1;0;false;false;;;;;;
                                  -64816;7;0;false;false;63;95;191;;;
                                  -64823;1;0;false;false;;;;;;
                                  -64824;3;0;false;false;63;95;191;;;
                                  -64827;1;0;false;false;;;;;;
                                  -64828;3;0;false;false;63;95;191;;;
                                  -64831;1;0;false;false;;;;;;
                                  -64832;5;0;false;false;63;95;191;;;
                                  -64837;1;0;false;false;;;;;;
                                  -64838;2;0;false;false;63;95;191;;;
                                  -64840;1;0;false;false;;;;;;
                                  -64841;3;0;false;false;63;95;191;;;
                                  -64844;1;0;false;false;;;;;;
                                  -64845;8;0;false;false;63;95;191;;;
                                  -64853;1;0;false;false;;;;;;
                                  -64854;4;0;false;false;63;95;191;;;
                                  -64858;1;0;false;false;;;;;;
                                  -64859;3;0;false;false;63;95;191;;;
                                  -64862;1;0;false;false;;;;;;
                                  -64863;4;0;false;false;63;95;191;;;
                                  -64867;1;0;false;false;;;;;;
                                  -64868;5;0;false;false;63;95;191;;;
                                  -64873;4;0;false;false;;;;;;
                                  -64877;1;0;false;false;63;95;191;;;
                                  -64878;1;0;false;false;;;;;;
                                  -64879;2;0;false;false;63;95;191;;;
                                  -64881;1;0;false;false;;;;;;
                                  -64882;3;0;false;false;63;95;191;;;
                                  -64885;1;0;false;false;;;;;;
                                  -64886;5;0;false;false;63;95;191;;;
                                  -64891;1;0;false;false;;;;;;
                                  -64892;2;0;false;false;63;95;191;;;
                                  -64894;1;0;false;false;;;;;;
                                  -64895;6;0;false;false;63;95;191;;;
                                  -64901;4;0;false;false;;;;;;
                                  -64905;1;0;false;false;63;95;191;;;
                                  -64906;1;0;false;false;;;;;;
                                  -64907;3;0;false;false;127;127;159;;;
                                  -64910;3;0;false;false;;;;;;
                                  -64913;1;0;false;false;63;95;191;;;
                                  -64914;3;0;false;false;;;;;;
                                  -64917;1;0;false;false;63;95;191;;;
                                  -64918;1;0;false;false;;;;;;
                                  -64919;7;1;false;false;127;159;191;;;
                                  -64926;8;0;false;false;63;95;191;;;
                                  -64934;1;0;false;false;;;;;;
                                  -64935;3;0;false;false;63;95;191;;;
                                  -64938;1;0;false;false;;;;;;
                                  -64939;8;0;false;false;63;95;191;;;
                                  -64947;3;0;false;false;;;;;;
                                  -64950;1;0;false;false;63;95;191;;;
                                  -64951;1;0;false;false;;;;;;
                                  -64952;11;1;false;false;127;159;191;;;
                                  -64963;12;0;false;false;63;95;191;;;
                                  -64975;1;0;false;false;;;;;;
                                  -64976;4;0;false;false;127;127;159;;;
                                  -64980;3;0;false;false;;;;;;
                                  -64983;1;0;false;false;63;95;191;;;
                                  -64984;4;0;false;false;;;;;;
                                  -64988;4;0;false;false;127;127;159;;;
                                  -64992;21;0;false;false;63;95;191;;;
                                  -65013;1;0;false;false;;;;;;
                                  -65014;1;0;false;false;127;127;159;;;
                                  -65015;1;0;false;false;;;;;;
                                  -65016;2;0;false;false;63;95;191;;;
                                  -65018;1;0;false;false;;;;;;
                                  -65019;3;0;false;false;63;95;191;;;
                                  -65022;1;0;false;false;;;;;;
                                  -65023;8;0;false;false;63;95;191;;;
                                  -65031;1;0;false;false;;;;;;
                                  -65032;3;0;false;false;63;95;191;;;
                                  -65035;1;0;false;false;;;;;;
                                  -65036;4;0;false;false;63;95;191;;;
                                  -65040;1;0;false;false;;;;;;
                                  -65041;8;0;false;false;63;95;191;;;
                                  -65049;5;0;false;false;127;127;159;;;
                                  -65054;3;0;false;false;;;;;;
                                  -65057;1;0;false;false;63;95;191;;;
                                  -65058;4;0;false;false;;;;;;
                                  -65062;4;0;false;false;127;127;159;;;
                                  -65066;27;0;false;false;63;95;191;;;
                                  -65093;1;0;false;false;;;;;;
                                  -65094;1;0;false;false;127;127;159;;;
                                  -65095;1;0;false;false;;;;;;
                                  -65096;2;0;false;false;63;95;191;;;
                                  -65098;1;0;false;false;;;;;;
                                  -65099;3;0;false;false;63;95;191;;;
                                  -65102;1;0;false;false;;;;;;
                                  -65103;6;0;false;false;63;95;191;;;
                                  -65109;1;0;false;false;;;;;;
                                  -65110;4;0;false;false;63;95;191;;;
                                  -65114;1;0;false;false;;;;;;
                                  -65115;3;0;false;false;63;95;191;;;
                                  -65118;1;0;false;false;;;;;;
                                  -65119;6;0;false;false;63;95;191;;;
                                  -65125;1;0;false;false;;;;;;
                                  -65126;4;0;false;false;63;95;191;;;
                                  -65130;1;0;false;false;;;;;;
                                  -65131;7;0;false;false;63;95;191;;;
                                  -65138;1;0;false;false;;;;;;
                                  -65139;3;0;false;false;63;95;191;;;
                                  -65142;1;0;false;false;;;;;;
                                  -65143;8;0;false;false;63;95;191;;;
                                  -65151;5;0;false;false;127;127;159;;;
                                  -65156;3;0;false;false;;;;;;
                                  -65159;1;0;false;false;63;95;191;;;
                                  -65160;1;0;false;false;;;;;;
                                  -65161;5;0;false;false;127;127;159;;;
                                  -65166;3;0;false;false;;;;;;
                                  -65169;1;0;false;false;63;95;191;;;
                                  -65170;1;0;false;false;;;;;;
                                  -65171;11;1;false;false;127;159;191;;;
                                  -65182;24;0;false;false;63;95;191;;;
                                  -65206;1;0;false;false;;;;;;
                                  -65207;4;0;false;false;127;127;159;;;
                                  -65211;3;0;false;false;;;;;;
                                  -65214;1;0;false;false;63;95;191;;;
                                  -65215;4;0;false;false;;;;;;
                                  -65219;4;0;false;false;127;127;159;;;
                                  -65223;19;0;false;false;63;95;191;;;
                                  -65242;1;0;false;false;;;;;;
                                  -65243;4;0;false;false;63;95;191;;;
                                  -65247;1;0;false;false;;;;;;
                                  -65248;8;0;false;false;63;95;191;;;
                                  -65256;1;0;false;false;;;;;;
                                  -65257;2;0;false;false;63;95;191;;;
                                  -65259;1;0;false;false;;;;;;
                                  -65260;4;0;false;false;63;95;191;;;
                                  -65264;5;0;false;false;127;127;159;;;
                                  -65269;3;0;false;false;;;;;;
                                  -65272;1;0;false;false;63;95;191;;;
                                  -65273;1;0;false;false;;;;;;
                                  -65274;5;0;false;false;127;127;159;;;
                                  -65279;3;0;false;false;;;;;;
                                  -65282;2;0;false;false;63;95;191;;;
                                  -65284;2;0;false;false;;;;;;
                                  -65286;6;1;false;false;127;0;85;;;
                                  -65292;1;0;false;false;;;;;;
                                  -65293;4;1;false;false;127;0;85;;;
                                  -65297;1;0;false;false;;;;;;
                                  -65298;38;0;false;false;0;0;0;;;
                                  -65336;1;0;false;false;;;;;;
                                  -65337;9;0;false;false;0;0;0;;;
                                  -65346;1;0;false;false;;;;;;
                                  -65347;1;0;false;false;0;0;0;;;
                                  -65348;3;0;false;false;;;;;;
                                  -65351;14;0;false;false;0;0;0;;;
                                  -65365;3;0;false;false;;;;;;
                                  -65368;2;1;false;false;127;0;85;;;
                                  -65370;1;0;false;false;;;;;;
                                  -65371;9;0;false;false;0;0;0;;;
                                  -65380;1;0;false;false;;;;;;
                                  -65381;2;0;false;false;0;0;0;;;
                                  -65383;1;0;false;false;;;;;;
                                  -65384;4;1;false;false;127;0;85;;;
                                  -65388;1;0;false;false;0;0;0;;;
                                  -65389;1;0;false;false;;;;;;
                                  -65390;1;0;false;false;0;0;0;;;
                                  -65391;4;0;false;false;;;;;;
                                  -65395;35;0;false;false;0;0;0;;;
                                  -65430;3;0;false;false;;;;;;
                                  -65433;1;0;false;false;0;0;0;;;
                                  -65434;3;0;false;false;;;;;;
                                  -65437;18;0;false;false;0;0;0;;;
                                  -65455;1;0;false;false;;;;;;
                                  -65456;13;0;false;false;0;0;0;;;
                                  -65469;1;0;false;false;;;;;;
                                  -65470;1;0;false;false;0;0;0;;;
                                  -65471;1;0;false;false;;;;;;
                                  -65472;3;1;false;false;127;0;85;;;
                                  -65475;1;0;false;false;;;;;;
                                  -65476;29;0;false;false;0;0;0;;;
                                  -65505;3;0;false;false;;;;;;
                                  -65508;22;0;false;false;0;0;0;;;
                                  -65530;1;0;false;false;;;;;;
                                  -65531;15;0;false;false;0;0;0;;;
                                  -65546;3;0;false;false;;;;;;
                                  -65549;1;0;false;false;0;0;0;;;
                                  -65550;2;0;false;false;;;;;;
                                  -65552;3;0;false;false;63;95;191;;;
                                  -65555;5;0;false;false;;;;;;
                                  -65560;1;0;false;false;63;95;191;;;
                                  -65561;1;0;false;false;;;;;;
                                  -65562;4;0;false;false;63;95;191;;;
                                  -65566;1;0;false;false;;;;;;
                                  -65567;1;0;false;false;63;95;191;;;
                                  -65568;1;0;false;false;;;;;;
                                  -65569;6;0;false;false;63;95;191;;;
                                  -65575;1;0;false;false;;;;;;
                                  -65576;9;0;false;false;63;95;191;;;
                                  -65585;1;0;false;false;;;;;;
                                  -65586;1;0;false;false;63;95;191;;;
                                  -65587;1;0;false;false;;;;;;
                                  -65588;6;0;false;false;63;95;191;;;
                                  -65594;1;0;false;false;;;;;;
                                  -65595;5;0;false;false;63;95;191;;;
                                  -65600;1;0;false;false;;;;;;
                                  -65601;2;0;false;false;63;95;191;;;
                                  -65603;1;0;false;false;;;;;;
                                  -65604;4;0;false;false;63;95;191;;;
                                  -65608;1;0;false;false;;;;;;
                                  -65609;2;0;false;false;63;95;191;;;
                                  -65611;1;0;false;false;;;;;;
                                  -65612;3;0;false;false;63;95;191;;;
                                  -65615;1;0;false;false;;;;;;
                                  -65616;6;0;false;false;63;95;191;;;
                                  -65622;1;0;false;false;;;;;;
                                  -65623;4;0;false;false;63;95;191;;;
                                  -65627;1;0;false;false;;;;;;
                                  -65628;3;0;false;false;63;95;191;;;
                                  -65631;1;0;false;false;;;;;;
                                  -65632;6;0;false;false;63;95;191;;;
                                  -65638;1;0;false;false;;;;;;
                                  -65639;4;0;false;false;63;95;191;;;
                                  -65643;4;0;false;false;;;;;;
                                  -65647;1;0;false;false;63;95;191;;;
                                  -65648;1;0;false;false;;;;;;
                                  -65649;2;0;false;false;63;95;191;;;
                                  -65651;1;0;false;false;;;;;;
                                  -65652;5;0;false;false;63;95;191;;;
                                  -65657;1;0;false;false;;;;;;
                                  -65658;2;0;false;false;63;95;191;;;
                                  -65660;1;0;false;false;;;;;;
                                  -65661;7;0;false;false;63;95;191;;;
                                  -65668;1;0;false;false;;;;;;
                                  -65669;3;0;false;false;63;95;191;;;
                                  -65672;1;0;false;false;;;;;;
                                  -65673;8;0;false;false;63;95;191;;;
                                  -65681;1;0;false;false;;;;;;
                                  -65682;3;0;false;false;63;95;191;;;
                                  -65685;1;0;false;false;;;;;;
                                  -65686;3;0;false;false;63;95;191;;;
                                  -65689;1;0;false;false;;;;;;
                                  -65690;3;0;false;false;63;95;191;;;
                                  -65693;1;0;false;false;;;;;;
                                  -65694;5;0;false;false;63;95;191;;;
                                  -65699;1;0;false;false;;;;;;
                                  -65700;4;0;false;false;63;95;191;;;
                                  -65704;1;0;false;false;;;;;;
                                  -65705;3;0;false;false;63;95;191;;;
                                  -65708;1;0;false;false;;;;;;
                                  -65709;3;0;false;false;63;95;191;;;
                                  -65712;1;0;false;false;;;;;;
                                  -65713;4;0;false;false;63;95;191;;;
                                  -65717;1;0;false;false;;;;;;
                                  -65718;5;0;false;false;63;95;191;;;
                                  -65723;1;0;false;false;;;;;;
                                  -65724;2;0;false;false;63;95;191;;;
                                  -65726;4;0;false;false;;;;;;
                                  -65730;1;0;false;false;63;95;191;;;
                                  -65731;1;0;false;false;;;;;;
                                  -65732;6;0;false;false;63;95;191;;;
                                  -65738;1;0;false;false;;;;;;
                                  -65739;3;0;false;false;63;95;191;;;
                                  -65742;1;0;false;false;;;;;;
                                  -65743;4;0;false;false;63;95;191;;;
                                  -65747;1;0;false;false;;;;;;
                                  -65748;4;0;false;false;63;95;191;;;
                                  -65752;1;0;false;false;;;;;;
                                  -65753;2;0;false;false;63;95;191;;;
                                  -65755;1;0;false;false;;;;;;
                                  -65756;3;0;false;false;63;95;191;;;
                                  -65759;1;0;false;false;;;;;;
                                  -65760;2;0;false;false;63;95;191;;;
                                  -65762;1;0;false;false;;;;;;
                                  -65763;3;0;false;false;63;95;191;;;
                                  -65766;1;0;false;false;;;;;;
                                  -65767;6;0;false;false;63;95;191;;;
                                  -65773;1;0;false;false;;;;;;
                                  -65774;2;0;false;false;63;95;191;;;
                                  -65776;1;0;false;false;;;;;;
                                  -65777;2;0;false;false;63;95;191;;;
                                  -65779;1;0;false;false;;;;;;
                                  -65780;5;0;false;false;63;95;191;;;
                                  -65785;1;0;false;false;;;;;;
                                  -65786;3;0;false;false;63;95;191;;;
                                  -65789;1;0;false;false;;;;;;
                                  -65790;6;0;false;false;63;95;191;;;
                                  -65796;1;0;false;false;;;;;;
                                  -65797;2;0;false;false;63;95;191;;;
                                  -65799;1;0;false;false;;;;;;
                                  -65800;6;0;false;false;63;95;191;;;
                                  -65806;1;0;false;false;;;;;;
                                  -65807;3;0;false;false;63;95;191;;;
                                  -65810;4;0;false;false;;;;;;
                                  -65814;1;0;false;false;63;95;191;;;
                                  -65815;1;0;false;false;;;;;;
                                  -65816;4;0;false;false;63;95;191;;;
                                  -65820;1;0;false;false;;;;;;
                                  -65821;7;0;false;false;63;95;191;;;
                                  -65828;3;0;false;false;;;;;;
                                  -65831;1;0;false;false;63;95;191;;;
                                  -65832;1;0;false;false;;;;;;
                                  -65833;3;0;false;false;127;127;159;;;
                                  -65836;3;0;false;false;;;;;;
                                  -65839;1;0;false;false;63;95;191;;;
                                  -65840;3;0;false;false;;;;;;
                                  -65843;1;0;false;false;63;95;191;;;
                                  -65844;1;0;false;false;;;;;;
                                  -65845;7;1;false;false;127;159;191;;;
                                  -65852;14;0;false;false;63;95;191;;;
                                  -65866;1;0;false;false;;;;;;
                                  -65867;3;0;false;false;63;95;191;;;
                                  -65870;1;0;false;false;;;;;;
                                  -65871;8;0;false;false;63;95;191;;;
                                  -65879;3;0;false;false;;;;;;
                                  -65882;1;0;false;false;63;95;191;;;
                                  -65883;1;0;false;false;;;;;;
                                  -65884;11;1;false;false;127;159;191;;;
                                  -65895;12;0;false;false;63;95;191;;;
                                  -65907;1;0;false;false;;;;;;
                                  -65908;4;0;false;false;127;127;159;;;
                                  -65912;3;0;false;false;;;;;;
                                  -65915;1;0;false;false;63;95;191;;;
                                  -65916;4;0;false;false;;;;;;
                                  -65920;4;0;false;false;127;127;159;;;
                                  -65924;21;0;false;false;63;95;191;;;
                                  -65945;1;0;false;false;;;;;;
                                  -65946;1;0;false;false;127;127;159;;;
                                  -65947;1;0;false;false;;;;;;
                                  -65948;2;0;false;false;63;95;191;;;
                                  -65950;1;0;false;false;;;;;;
                                  -65951;3;0;false;false;63;95;191;;;
                                  -65954;1;0;false;false;;;;;;
                                  -65955;8;0;false;false;63;95;191;;;
                                  -65963;1;0;false;false;;;;;;
                                  -65964;3;0;false;false;63;95;191;;;
                                  -65967;1;0;false;false;;;;;;
                                  -65968;4;0;false;false;63;95;191;;;
                                  -65972;1;0;false;false;;;;;;
                                  -65973;8;0;false;false;63;95;191;;;
                                  -65981;5;0;false;false;127;127;159;;;
                                  -65986;3;0;false;false;;;;;;
                                  -65989;1;0;false;false;63;95;191;;;
                                  -65990;4;0;false;false;;;;;;
                                  -65994;4;0;false;false;127;127;159;;;
                                  -65998;27;0;false;false;63;95;191;;;
                                  -66025;1;0;false;false;;;;;;
                                  -66026;1;0;false;false;127;127;159;;;
                                  -66027;1;0;false;false;;;;;;
                                  -66028;2;0;false;false;63;95;191;;;
                                  -66030;1;0;false;false;;;;;;
                                  -66031;3;0;false;false;63;95;191;;;
                                  -66034;1;0;false;false;;;;;;
                                  -66035;6;0;false;false;63;95;191;;;
                                  -66041;1;0;false;false;;;;;;
                                  -66042;4;0;false;false;63;95;191;;;
                                  -66046;1;0;false;false;;;;;;
                                  -66047;3;0;false;false;63;95;191;;;
                                  -66050;1;0;false;false;;;;;;
                                  -66051;6;0;false;false;63;95;191;;;
                                  -66057;1;0;false;false;;;;;;
                                  -66058;4;0;false;false;63;95;191;;;
                                  -66062;1;0;false;false;;;;;;
                                  -66063;7;0;false;false;63;95;191;;;
                                  -66070;1;0;false;false;;;;;;
                                  -66071;3;0;false;false;63;95;191;;;
                                  -66074;1;0;false;false;;;;;;
                                  -66075;8;0;false;false;63;95;191;;;
                                  -66083;5;0;false;false;127;127;159;;;
                                  -66088;3;0;false;false;;;;;;
                                  -66091;1;0;false;false;63;95;191;;;
                                  -66092;1;0;false;false;;;;;;
                                  -66093;5;0;false;false;127;127;159;;;
                                  -66098;3;0;false;false;;;;;;
                                  -66101;1;0;false;false;63;95;191;;;
                                  -66102;1;0;false;false;;;;;;
                                  -66103;11;1;false;false;127;159;191;;;
                                  -66114;24;0;false;false;63;95;191;;;
                                  -66138;1;0;false;false;;;;;;
                                  -66139;4;0;false;false;127;127;159;;;
                                  -66143;3;0;false;false;;;;;;
                                  -66146;1;0;false;false;63;95;191;;;
                                  -66147;4;0;false;false;;;;;;
                                  -66151;4;0;false;false;127;127;159;;;
                                  -66155;19;0;false;false;63;95;191;;;
                                  -66174;1;0;false;false;;;;;;
                                  -66175;4;0;false;false;63;95;191;;;
                                  -66179;1;0;false;false;;;;;;
                                  -66180;8;0;false;false;63;95;191;;;
                                  -66188;1;0;false;false;;;;;;
                                  -66189;2;0;false;false;63;95;191;;;
                                  -66191;1;0;false;false;;;;;;
                                  -66192;4;0;false;false;63;95;191;;;
                                  -66196;5;0;false;false;127;127;159;;;
                                  -66201;3;0;false;false;;;;;;
                                  -66204;1;0;false;false;63;95;191;;;
                                  -66205;1;0;false;false;;;;;;
                                  -66206;5;0;false;false;127;127;159;;;
                                  -66211;3;0;false;false;;;;;;
                                  -66214;2;0;false;false;63;95;191;;;
                                  -66216;2;0;false;false;;;;;;
                                  -66218;6;1;false;false;127;0;85;;;
                                  -66224;1;0;false;false;;;;;;
                                  -66225;4;1;false;false;127;0;85;;;
                                  -66229;1;0;false;false;;;;;;
                                  -66230;32;0;false;false;0;0;0;;;
                                  -66262;1;0;false;false;;;;;;
                                  -66263;15;0;false;false;0;0;0;;;
                                  -66278;1;0;false;false;;;;;;
                                  -66279;1;0;false;false;0;0;0;;;
                                  -66280;3;0;false;false;;;;;;
                                  -66283;14;0;false;false;0;0;0;;;
                                  -66297;3;0;false;false;;;;;;
                                  -66300;2;1;false;false;127;0;85;;;
                                  -66302;1;0;false;false;;;;;;
                                  -66303;15;0;false;false;0;0;0;;;
                                  -66318;1;0;false;false;;;;;;
                                  -66319;2;0;false;false;0;0;0;;;
                                  -66321;1;0;false;false;;;;;;
                                  -66322;4;1;false;false;127;0;85;;;
                                  -66326;1;0;false;false;0;0;0;;;
                                  -66327;1;0;false;false;;;;;;
                                  -66328;1;0;false;false;0;0;0;;;
                                  -66329;4;0;false;false;;;;;;
                                  -66333;35;0;false;false;0;0;0;;;
                                  -66368;3;0;false;false;;;;;;
                                  -66371;1;0;false;false;0;0;0;;;
                                  -66372;3;0;false;false;;;;;;
                                  -66375;13;0;false;false;0;0;0;;;
                                  -66388;1;0;false;false;;;;;;
                                  -66389;13;0;false;false;0;0;0;;;
                                  -66402;1;0;false;false;;;;;;
                                  -66403;1;0;false;false;0;0;0;;;
                                  -66404;1;0;false;false;;;;;;
                                  -66405;3;1;false;false;127;0;85;;;
                                  -66408;1;0;false;false;;;;;;
                                  -66409;30;0;false;false;0;0;0;;;
                                  -66439;3;0;false;false;;;;;;
                                  -66442;23;0;false;false;0;0;0;;;
                                  -66465;1;0;false;false;;;;;;
                                  -66466;15;0;false;false;0;0;0;;;
                                  -66481;2;0;false;false;;;;;;
                                  -66483;1;0;false;false;0;0;0;;;
                                  -66484;2;0;false;false;;;;;;
                                  -66486;3;0;false;false;63;95;191;;;
                                  -66489;4;0;false;false;;;;;;
                                  -66493;1;0;false;false;63;95;191;;;
                                  -66494;1;0;false;false;;;;;;
                                  -66495;7;0;false;false;63;95;191;;;
                                  -66502;1;0;false;false;;;;;;
                                  -66503;1;0;false;false;63;95;191;;;
                                  -66504;1;0;false;false;;;;;;
                                  -66505;6;0;false;false;63;95;191;;;
                                  -66511;1;0;false;false;;;;;;
                                  -66512;2;0;false;false;63;95;191;;;
                                  -66514;1;0;false;false;;;;;;
                                  -66515;3;0;false;false;63;95;191;;;
                                  -66518;1;0;false;false;;;;;;
                                  -66519;4;0;false;false;63;95;191;;;
                                  -66523;1;0;false;false;;;;;;
                                  -66524;2;0;false;false;63;95;191;;;
                                  -66526;1;0;false;false;;;;;;
                                  -66527;3;0;false;false;63;95;191;;;
                                  -66530;1;0;false;false;;;;;;
                                  -66531;3;0;false;false;63;95;191;;;
                                  -66534;1;0;false;false;;;;;;
                                  -66535;2;0;false;false;63;95;191;;;
                                  -66537;1;0;false;false;;;;;;
                                  -66538;3;0;false;false;63;95;191;;;
                                  -66541;1;0;false;false;;;;;;
                                  -66542;7;0;false;false;63;95;191;;;
                                  -66549;3;0;false;false;;;;;;
                                  -66552;1;0;false;false;63;95;191;;;
                                  -66553;1;0;false;false;;;;;;
                                  -66554;3;0;false;false;127;127;159;;;
                                  -66557;3;0;false;false;;;;;;
                                  -66560;1;0;false;false;63;95;191;;;
                                  -66561;3;0;false;false;;;;;;
                                  -66564;1;0;false;false;63;95;191;;;
                                  -66565;1;0;false;false;;;;;;
                                  -66566;7;1;false;false;127;159;191;;;
                                  -66573;6;0;false;false;63;95;191;;;
                                  -66579;1;0;false;false;;;;;;
                                  -66580;3;0;false;false;63;95;191;;;
                                  -66583;1;0;false;false;;;;;;
                                  -66584;6;0;false;false;63;95;191;;;
                                  -66590;1;0;false;false;;;;;;
                                  -66591;2;0;false;false;63;95;191;;;
                                  -66593;1;0;false;false;;;;;;
                                  -66594;2;0;false;false;63;95;191;;;
                                  -66596;1;0;false;false;;;;;;
                                  -66597;8;0;false;false;63;95;191;;;
                                  -66605;3;0;false;false;;;;;;
                                  -66608;1;0;false;false;63;95;191;;;
                                  -66609;1;0;false;false;;;;;;
                                  -66610;5;1;false;false;127;159;191;;;
                                  -66615;33;0;false;false;63;95;191;;;
                                  -66648;3;0;false;false;;;;;;
                                  -66651;1;0;false;false;63;95;191;;;
                                  -66652;1;0;false;false;;;;;;
                                  -66653;11;1;false;false;127;159;191;;;
                                  -66664;12;0;false;false;63;95;191;;;
                                  -66676;1;0;false;false;;;;;;
                                  -66677;4;0;false;false;127;127;159;;;
                                  -66681;3;0;false;false;;;;;;
                                  -66684;1;0;false;false;63;95;191;;;
                                  -66685;4;0;false;false;;;;;;
                                  -66689;4;0;false;false;127;127;159;;;
                                  -66693;21;0;false;false;63;95;191;;;
                                  -66714;1;0;false;false;;;;;;
                                  -66715;1;0;false;false;127;127;159;;;
                                  -66716;1;0;false;false;;;;;;
                                  -66717;2;0;false;false;63;95;191;;;
                                  -66719;1;0;false;false;;;;;;
                                  -66720;3;0;false;false;63;95;191;;;
                                  -66723;1;0;false;false;;;;;;
                                  -66724;8;0;false;false;63;95;191;;;
                                  -66732;1;0;false;false;;;;;;
                                  -66733;3;0;false;false;63;95;191;;;
                                  -66736;1;0;false;false;;;;;;
                                  -66737;4;0;false;false;63;95;191;;;
                                  -66741;1;0;false;false;;;;;;
                                  -66742;8;0;false;false;63;95;191;;;
                                  -66750;5;0;false;false;127;127;159;;;
                                  -66755;3;0;false;false;;;;;;
                                  -66758;1;0;false;false;63;95;191;;;
                                  -66759;4;0;false;false;;;;;;
                                  -66763;4;0;false;false;127;127;159;;;
                                  -66767;27;0;false;false;63;95;191;;;
                                  -66794;1;0;false;false;;;;;;
                                  -66795;1;0;false;false;127;127;159;;;
                                  -66796;1;0;false;false;;;;;;
                                  -66797;2;0;false;false;63;95;191;;;
                                  -66799;1;0;false;false;;;;;;
                                  -66800;3;0;false;false;63;95;191;;;
                                  -66803;1;0;false;false;;;;;;
                                  -66804;6;0;false;false;63;95;191;;;
                                  -66810;1;0;false;false;;;;;;
                                  -66811;4;0;false;false;63;95;191;;;
                                  -66815;1;0;false;false;;;;;;
                                  -66816;3;0;false;false;63;95;191;;;
                                  -66819;1;0;false;false;;;;;;
                                  -66820;6;0;false;false;63;95;191;;;
                                  -66826;1;0;false;false;;;;;;
                                  -66827;4;0;false;false;63;95;191;;;
                                  -66831;1;0;false;false;;;;;;
                                  -66832;7;0;false;false;63;95;191;;;
                                  -66839;1;0;false;false;;;;;;
                                  -66840;3;0;false;false;63;95;191;;;
                                  -66843;1;0;false;false;;;;;;
                                  -66844;8;0;false;false;63;95;191;;;
                                  -66852;5;0;false;false;127;127;159;;;
                                  -66857;3;0;false;false;;;;;;
                                  -66860;1;0;false;false;63;95;191;;;
                                  -66861;1;0;false;false;;;;;;
                                  -66862;5;0;false;false;127;127;159;;;
                                  -66867;3;0;false;false;;;;;;
                                  -66870;1;0;false;false;63;95;191;;;
                                  -66871;1;0;false;false;;;;;;
                                  -66872;11;1;false;false;127;159;191;;;
                                  -66883;24;0;false;false;63;95;191;;;
                                  -66907;1;0;false;false;;;;;;
                                  -66908;4;0;false;false;127;127;159;;;
                                  -66912;3;0;false;false;;;;;;
                                  -66915;1;0;false;false;63;95;191;;;
                                  -66916;4;0;false;false;;;;;;
                                  -66920;4;0;false;false;127;127;159;;;
                                  -66924;19;0;false;false;63;95;191;;;
                                  -66943;1;0;false;false;;;;;;
                                  -66944;4;0;false;false;63;95;191;;;
                                  -66948;1;0;false;false;;;;;;
                                  -66949;8;0;false;false;63;95;191;;;
                                  -66957;1;0;false;false;;;;;;
                                  -66958;2;0;false;false;63;95;191;;;
                                  -66960;1;0;false;false;;;;;;
                                  -66961;4;0;false;false;63;95;191;;;
                                  -66965;5;0;false;false;127;127;159;;;
                                  -66970;3;0;false;false;;;;;;
                                  -66973;1;0;false;false;63;95;191;;;
                                  -66974;1;0;false;false;;;;;;
                                  -66975;5;0;false;false;127;127;159;;;
                                  -66980;3;0;false;false;;;;;;
                                  -66983;2;0;false;false;63;95;191;;;
                                  -66985;2;0;false;false;;;;;;
                                  -66987;6;1;false;false;127;0;85;;;
                                  -66993;1;0;false;false;;;;;;
                                  -66994;4;1;false;false;127;0;85;;;
                                  -66998;1;0;false;false;;;;;;
                                  -66999;13;0;false;false;0;0;0;;;
                                  -67012;1;0;false;false;;;;;;
                                  -67013;7;0;false;false;0;0;0;;;
                                  -67020;1;0;false;false;;;;;;
                                  -67021;1;0;false;false;0;0;0;;;
                                  -67022;3;0;false;false;;;;;;
                                  -67025;14;0;false;false;0;0;0;;;
                                  -67039;3;0;false;false;;;;;;
                                  -67042;2;1;false;false;127;0;85;;;
                                  -67044;1;0;false;false;;;;;;
                                  -67045;7;0;false;false;0;0;0;;;
                                  -67052;1;0;false;false;;;;;;
                                  -67053;2;0;false;false;0;0;0;;;
                                  -67055;1;0;false;false;;;;;;
                                  -67056;4;1;false;false;127;0;85;;;
                                  -67060;1;0;false;false;0;0;0;;;
                                  -67061;1;0;false;false;;;;;;
                                  -67062;1;0;false;false;0;0;0;;;
                                  -67063;4;0;false;false;;;;;;
                                  -67067;35;0;false;false;0;0;0;;;
                                  -67102;3;0;false;false;;;;;;
                                  -67105;1;0;false;false;0;0;0;;;
                                  -67106;3;0;false;false;;;;;;
                                  -67109;3;1;false;false;127;0;85;;;
                                  -67112;1;0;false;false;;;;;;
                                  -67113;8;0;false;false;0;0;0;;;
                                  -67121;1;0;false;false;;;;;;
                                  -67122;1;0;false;false;0;0;0;;;
                                  -67123;1;0;false;false;;;;;;
                                  -67124;24;0;false;false;0;0;0;;;
                                  -67148;1;0;false;false;;;;;;
                                  -67149;3;0;false;false;0;0;0;;;
                                  -67152;3;0;false;false;;;;;;
                                  -67155;26;0;false;false;0;0;0;;;
                                  -67181;1;0;false;false;;;;;;
                                  -67182;2;0;false;false;0;0;0;;;
                                  -67184;1;0;false;false;;;;;;
                                  -67185;8;0;false;false;0;0;0;;;
                                  -67193;2;0;false;false;;;;;;
                                  -67195;1;0;false;false;0;0;0;;;
                                  -67196;2;0;false;false;;;;;;
                                  -67198;3;0;false;false;63;95;191;;;
                                  -67201;3;0;false;false;;;;;;
                                  -67204;1;0;false;false;63;95;191;;;
                                  -67205;1;0;false;false;;;;;;
                                  -67206;10;0;false;false;63;95;191;;;
                                  -67216;1;0;false;false;;;;;;
                                  -67217;3;0;false;false;63;95;191;;;
                                  -67220;1;0;false;false;;;;;;
                                  -67221;5;0;false;false;63;95;191;;;
                                  -67226;1;0;false;false;;;;;;
                                  -67227;2;0;false;false;63;95;191;;;
                                  -67229;1;0;false;false;;;;;;
                                  -67230;3;0;false;false;63;95;191;;;
                                  -67233;1;0;false;false;;;;;;
                                  -67234;6;0;false;false;63;95;191;;;
                                  -67240;1;0;false;false;;;;;;
                                  -67241;7;0;false;false;63;95;191;;;
                                  -67248;1;0;false;false;;;;;;
                                  -67249;5;0;false;false;63;95;191;;;
                                  -67254;3;0;false;false;;;;;;
                                  -67257;2;0;false;false;63;95;191;;;
                                  -67259;2;0;false;false;;;;;;
                                  -67261;4;1;false;false;127;0;85;;;
                                  -67265;1;0;false;false;;;;;;
                                  -67266;23;0;false;false;0;0;0;;;
                                  -67289;1;0;false;false;;;;;;
                                  -67290;1;0;false;false;0;0;0;;;
                                  -67291;3;0;false;false;;;;;;
                                  -67294;9;0;false;false;0;0;0;;;
                                  -67303;1;0;false;false;;;;;;
                                  -67304;1;0;false;false;0;0;0;;;
                                  -67305;1;0;false;false;;;;;;
                                  -67306;22;0;false;false;0;0;0;;;
                                  -67328;3;0;false;false;;;;;;
                                  -67331;29;0;false;false;0;0;0;;;
                                  -67360;1;0;false;false;;;;;;
                                  -67361;23;0;false;false;0;0;0;;;
                                  -67384;1;0;false;false;;;;;;
                                  -67385;1;0;false;false;0;0;0;;;
                                  -67386;1;0;false;false;;;;;;
                                  -67387;8;0;false;false;0;0;0;;;
                                  -67395;1;0;false;false;;;;;;
                                  -67396;1;0;false;false;0;0;0;;;
                                  -67397;1;0;false;false;;;;;;
                                  -67398;3;0;false;false;0;0;0;;;
                                  -67401;2;0;false;false;;;;;;
                                  -67403;1;0;false;false;0;0;0;;;
                                  -67404;2;0;false;false;;;;;;
                                  -67406;3;0;false;false;63;95;191;;;
                                  -67409;3;0;false;false;;;;;;
                                  -67412;1;0;false;false;63;95;191;;;
                                  -67413;1;0;false;false;;;;;;
                                  -67414;10;0;false;false;63;95;191;;;
                                  -67424;1;0;false;false;;;;;;
                                  -67425;3;0;false;false;63;95;191;;;
                                  -67428;1;0;false;false;;;;;;
                                  -67429;6;0;false;false;63;95;191;;;
                                  -67435;1;0;false;false;;;;;;
                                  -67436;4;0;false;false;63;95;191;;;
                                  -67440;3;0;false;false;;;;;;
                                  -67443;2;0;false;false;63;95;191;;;
                                  -67445;2;0;false;false;;;;;;
                                  -67447;4;1;false;false;127;0;85;;;
                                  -67451;1;0;false;false;;;;;;
                                  -67452;21;0;false;false;0;0;0;;;
                                  -67473;1;0;false;false;;;;;;
                                  -67474;1;0;false;false;0;0;0;;;
                                  -67475;3;0;false;false;;;;;;
                                  -67478;9;0;false;false;0;0;0;;;
                                  -67487;1;0;false;false;;;;;;
                                  -67488;13;0;false;false;0;0;0;;;
                                  -67501;1;0;false;false;;;;;;
                                  -67502;1;0;false;false;0;0;0;;;
                                  -67503;1;0;false;false;;;;;;
                                  -67504;19;0;false;false;0;0;0;;;
                                  -67523;3;0;false;false;;;;;;
                                  -67526;9;0;false;false;0;0;0;;;
                                  -67535;1;0;false;false;;;;;;
                                  -67536;11;0;false;false;0;0;0;;;
                                  -67547;1;0;false;false;;;;;;
                                  -67548;1;0;false;false;0;0;0;;;
                                  -67549;1;0;false;false;;;;;;
                                  -67550;17;0;false;false;0;0;0;;;
                                  -67567;6;0;false;false;;;;;;
                                  -67573;16;0;false;false;0;0;0;;;
                                  -67589;3;0;false;false;;;;;;
                                  -67592;2;1;false;false;127;0;85;;;
                                  -67594;1;0;false;false;;;;;;
                                  -67595;12;0;false;false;0;0;0;;;
                                  -67607;1;0;false;false;;;;;;
                                  -67608;2;0;false;false;0;0;0;;;
                                  -67610;1;0;false;false;;;;;;
                                  -67611;4;1;false;false;127;0;85;;;
                                  -67615;1;0;false;false;0;0;0;;;
                                  -67616;1;0;false;false;;;;;;
                                  -67617;1;0;false;false;0;0;0;;;
                                  -67618;4;0;false;false;;;;;;
                                  -67622;49;0;false;false;0;0;0;;;
                                  -67671;3;0;false;false;;;;;;
                                  -67674;1;0;false;false;0;0;0;;;
                                  -67675;4;0;false;false;;;;;;
                                  -67679;2;1;false;false;127;0;85;;;
                                  -67681;1;0;false;false;;;;;;
                                  -67682;14;0;false;false;0;0;0;;;
                                  -67696;1;0;false;false;;;;;;
                                  -67697;2;0;false;false;0;0;0;;;
                                  -67699;1;0;false;false;;;;;;
                                  -67700;4;1;false;false;127;0;85;;;
                                  -67704;1;0;false;false;0;0;0;;;
                                  -67705;1;0;false;false;;;;;;
                                  -67706;1;0;false;false;0;0;0;;;
                                  -67707;4;0;false;false;;;;;;
                                  -67711;53;0;false;false;0;0;0;;;
                                  -67764;3;0;false;false;;;;;;
                                  -67767;1;0;false;false;0;0;0;;;
                                  -67768;2;0;false;false;;;;;;
                                  -67770;1;0;false;false;0;0;0;;;
                                  -67771;2;0;false;false;;;;;;
                                  -67773;3;0;false;false;63;95;191;;;
                                  -67776;3;0;false;false;;;;;;
                                  -67779;1;0;false;false;63;95;191;;;
                                  -67780;1;0;false;false;;;;;;
                                  -67781;10;0;false;false;63;95;191;;;
                                  -67791;1;0;false;false;;;;;;
                                  -67792;3;0;false;false;63;95;191;;;
                                  -67795;1;0;false;false;;;;;;
                                  -67796;3;0;false;false;63;95;191;;;
                                  -67799;1;0;false;false;;;;;;
                                  -67800;5;0;false;false;63;95;191;;;
                                  -67805;1;0;false;false;;;;;;
                                  -67806;5;0;false;false;63;95;191;;;
                                  -67811;1;0;false;false;;;;;;
                                  -67812;2;0;false;false;63;95;191;;;
                                  -67814;1;0;false;false;;;;;;
                                  -67815;3;0;false;false;63;95;191;;;
                                  -67818;1;0;false;false;;;;;;
                                  -67819;7;0;false;false;63;95;191;;;
                                  -67826;1;0;false;false;;;;;;
                                  -67827;8;0;false;false;63;95;191;;;
                                  -67835;1;0;false;false;;;;;;
                                  -67836;6;0;false;false;63;95;191;;;
                                  -67842;1;0;false;false;;;;;;
                                  -67843;7;0;false;false;63;95;191;;;
                                  -67850;3;0;false;false;;;;;;
                                  -67853;1;0;false;false;63;95;191;;;
                                  -67854;1;0;false;false;;;;;;
                                  -67855;3;0;false;false;63;95;191;;;
                                  -67858;1;0;false;false;;;;;;
                                  -67859;3;0;false;false;63;95;191;;;
                                  -67862;1;0;false;false;;;;;;
                                  -67863;5;0;false;false;63;95;191;;;
                                  -67868;1;0;false;false;;;;;;
                                  -67869;2;0;false;false;63;95;191;;;
                                  -67871;1;0;false;false;;;;;;
                                  -67872;3;0;false;false;63;95;191;;;
                                  -67875;1;0;false;false;;;;;;
                                  -67876;5;0;false;false;63;95;191;;;
                                  -67881;1;0;false;false;;;;;;
                                  -67882;2;0;false;false;63;95;191;;;
                                  -67884;1;0;false;false;;;;;;
                                  -67885;3;0;false;false;63;95;191;;;
                                  -67888;1;0;false;false;;;;;;
                                  -67889;7;0;false;false;63;95;191;;;
                                  -67896;1;0;false;false;;;;;;
                                  -67897;5;0;false;false;63;95;191;;;
                                  -67902;1;0;false;false;;;;;;
                                  -67903;7;0;false;false;63;95;191;;;
                                  -67910;1;0;false;false;;;;;;
                                  -67911;4;0;false;false;63;95;191;;;
                                  -67915;1;0;false;false;;;;;;
                                  -67916;2;0;false;false;63;95;191;;;
                                  -67918;1;0;false;false;;;;;;
                                  -67919;3;0;false;false;63;95;191;;;
                                  -67922;3;0;false;false;;;;;;
                                  -67925;1;0;false;false;63;95;191;;;
                                  -67926;1;0;false;false;;;;;;
                                  -67927;7;0;false;false;63;95;191;;;
                                  -67934;1;0;false;false;;;;;;
                                  -67935;9;0;false;false;63;95;191;;;
                                  -67944;1;0;false;false;;;;;;
                                  -67945;7;0;false;false;63;95;191;;;
                                  -67952;1;0;false;false;;;;;;
                                  -67953;4;0;false;false;63;95;191;;;
                                  -67957;1;0;false;false;;;;;;
                                  -67958;2;0;false;false;63;95;191;;;
                                  -67960;1;0;false;false;;;;;;
                                  -67961;2;0;false;false;63;95;191;;;
                                  -67963;1;0;false;false;;;;;;
                                  -67964;4;0;false;false;63;95;191;;;
                                  -67968;1;0;false;false;;;;;;
                                  -67969;2;0;false;false;63;95;191;;;
                                  -67971;1;0;false;false;;;;;;
                                  -67972;5;0;false;false;63;95;191;;;
                                  -67977;1;0;false;false;;;;;;
                                  -67978;8;0;false;false;63;95;191;;;
                                  -67986;3;0;false;false;;;;;;
                                  -67989;1;0;false;false;63;95;191;;;
                                  -67990;1;0;false;false;;;;;;
                                  -67991;3;0;false;false;63;95;191;;;
                                  -67994;1;0;false;false;;;;;;
                                  -67995;3;0;false;false;63;95;191;;;
                                  -67998;1;0;false;false;;;;;;
                                  -67999;5;0;false;false;63;95;191;;;
                                  -68004;1;0;false;false;;;;;;
                                  -68005;6;0;false;false;63;95;191;;;
                                  -68011;1;0;false;false;;;;;;
                                  -68012;2;0;false;false;63;95;191;;;
                                  -68014;1;0;false;false;;;;;;
                                  -68015;2;0;false;false;63;95;191;;;
                                  -68017;3;0;false;false;;;;;;
                                  -68020;2;0;false;false;63;95;191;;;
                                  -68022;2;0;false;false;;;;;;
                                  -68024;4;1;false;false;127;0;85;;;
                                  -68028;1;0;false;false;;;;;;
                                  -68029;19;0;false;false;0;0;0;;;
                                  -68048;1;0;false;false;;;;;;
                                  -68049;1;0;false;false;0;0;0;;;
                                  -68050;3;0;false;false;;;;;;
                                  -68053;3;1;false;false;127;0;85;;;
                                  -68056;1;0;false;false;;;;;;
                                  -68057;11;0;false;false;0;0;0;;;
                                  -68068;1;0;false;false;;;;;;
                                  -68069;1;0;false;false;0;0;0;;;
                                  -68070;1;0;false;false;;;;;;
                                  -68071;9;0;false;false;0;0;0;;;
                                  -68080;3;0;false;false;;;;;;
                                  -68083;3;1;false;false;127;0;85;;;
                                  -68086;1;0;false;false;;;;;;
                                  -68087;17;0;false;false;0;0;0;;;
                                  -68104;1;0;false;false;;;;;;
                                  -68105;1;0;false;false;0;0;0;;;
                                  -68106;1;0;false;false;;;;;;
                                  -68107;23;0;false;false;0;0;0;;;
                                  -68130;3;0;false;false;;;;;;
                                  -68133;3;1;false;false;127;0;85;;;
                                  -68136;1;0;false;false;;;;;;
                                  -68137;16;0;false;false;0;0;0;;;
                                  -68153;1;0;false;false;;;;;;
                                  -68154;1;0;false;false;0;0;0;;;
                                  -68155;1;0;false;false;;;;;;
                                  -68156;23;0;false;false;0;0;0;;;
                                  -68179;6;0;false;false;;;;;;
                                  -68185;2;1;false;false;127;0;85;;;
                                  -68187;1;0;false;false;;;;;;
                                  -68188;18;0;false;false;0;0;0;;;
                                  -68206;1;0;false;false;;;;;;
                                  -68207;2;0;false;false;0;0;0;;;
                                  -68209;1;0;false;false;;;;;;
                                  -68210;2;0;false;false;0;0;0;;;
                                  -68212;1;0;false;false;;;;;;
                                  -68213;1;0;false;false;0;0;0;;;
                                  -68214;4;0;false;false;;;;;;
                                  -68218;6;1;false;false;127;0;85;;;
                                  -68224;1;0;false;false;0;0;0;;;
                                  -68225;3;0;false;false;;;;;;
                                  -68228;1;0;false;false;0;0;0;;;
                                  -68229;3;0;false;false;;;;;;
                                  -68232;8;0;false;false;0;0;0;;;
                                  -68240;1;0;false;false;;;;;;
                                  -68241;1;0;false;false;0;0;0;;;
                                  -68242;1;0;false;false;;;;;;
                                  -68243;40;0;false;false;0;0;0;;;
                                  -68283;1;0;false;false;;;;;;
                                  -68284;19;0;false;false;0;0;0;;;
                                  -68303;3;0;false;false;;;;;;
                                  -68306;69;0;false;false;63;127;95;;;
                                  -68375;1;0;false;false;;;;;;
                                  -68376;68;0;false;false;63;127;95;;;
                                  -68444;1;0;false;false;;;;;;
                                  -68445;21;0;false;false;63;127;95;;;
                                  -68466;1;0;false;false;;;;;;
                                  -68467;2;1;false;false;127;0;85;;;
                                  -68469;1;0;false;false;;;;;;
                                  -68470;9;0;false;false;0;0;0;;;
                                  -68479;1;0;false;false;;;;;;
                                  -68480;1;0;false;false;0;0;0;;;
                                  -68481;1;0;false;false;;;;;;
                                  -68482;2;0;false;false;0;0;0;;;
                                  -68484;1;0;false;false;;;;;;
                                  -68485;1;0;false;false;0;0;0;;;
                                  -68486;4;0;false;false;;;;;;
                                  -68490;2;1;false;false;127;0;85;;;
                                  -68492;1;0;false;false;;;;;;
                                  -68493;17;0;false;false;0;0;0;;;
                                  -68510;1;0;false;false;;;;;;
                                  -68511;1;0;false;false;0;0;0;;;
                                  -68512;1;0;false;false;;;;;;
                                  -68513;2;0;false;false;0;0;0;;;
                                  -68515;1;0;false;false;;;;;;
                                  -68516;1;0;false;false;0;0;0;;;
                                  -68517;5;0;false;false;;;;;;
                                  -68522;3;1;false;false;127;0;85;;;
                                  -68525;1;0;false;false;;;;;;
                                  -68526;11;0;false;false;0;0;0;;;
                                  -68537;1;0;false;false;;;;;;
                                  -68538;1;0;false;false;0;0;0;;;
                                  -68539;1;0;false;false;;;;;;
                                  -68540;20;0;false;false;0;0;0;;;
                                  -68560;1;0;false;false;;;;;;
                                  -68561;1;0;false;false;0;0;0;;;
                                  -68562;1;0;false;false;;;;;;
                                  -68563;17;0;false;false;0;0;0;;;
                                  -68580;5;0;false;false;;;;;;
                                  -68585;3;1;false;false;127;0;85;;;
                                  -68588;1;0;false;false;;;;;;
                                  -68589;16;0;false;false;0;0;0;;;
                                  -68605;1;0;false;false;;;;;;
                                  -68606;1;0;false;false;0;0;0;;;
                                  -68607;1;0;false;false;;;;;;
                                  -68608;8;0;false;false;0;0;0;;;
                                  -68616;1;0;false;false;;;;;;
                                  -68617;1;0;false;false;0;0;0;;;
                                  -68618;1;0;false;false;;;;;;
                                  -68619;18;0;false;false;0;0;0;;;
                                  -68637;5;0;false;false;;;;;;
                                  -68642;3;1;false;false;127;0;85;;;
                                  -68645;1;0;false;false;;;;;;
                                  -68646;21;0;false;false;0;0;0;;;
                                  -68667;1;0;false;false;;;;;;
                                  -68668;1;0;false;false;0;0;0;;;
                                  -68669;1;0;false;false;;;;;;
                                  -68670;11;0;false;false;0;0;0;;;
                                  -68681;1;0;false;false;;;;;;
                                  -68682;1;0;false;false;0;0;0;;;
                                  -68683;1;0;false;false;;;;;;
                                  -68684;17;0;false;false;0;0;0;;;
                                  -68701;5;0;false;false;;;;;;
                                  -68706;70;0;false;false;63;127;95;;;
                                  -68776;3;0;false;false;;;;;;
                                  -68779;73;0;false;false;63;127;95;;;
                                  -68852;3;0;false;false;;;;;;
                                  -68855;54;0;false;false;63;127;95;;;
                                  -68909;3;0;false;false;;;;;;
                                  -68912;2;1;false;false;127;0;85;;;
                                  -68914;1;0;false;false;;;;;;
                                  -68915;22;0;false;false;0;0;0;;;
                                  -68937;1;0;false;false;;;;;;
                                  -68938;1;0;false;false;0;0;0;;;
                                  -68939;1;0;false;false;;;;;;
                                  -68940;18;0;false;false;0;0;0;;;
                                  -68958;1;0;false;false;;;;;;
                                  -68959;1;0;false;false;0;0;0;;;
                                  -68960;6;0;false;false;;;;;;
                                  -68966;11;0;false;false;0;0;0;;;
                                  -68977;5;0;false;false;;;;;;
                                  -68982;1;0;false;false;0;0;0;;;
                                  -68983;4;0;false;false;;;;;;
                                  -68987;1;0;false;false;0;0;0;;;
                                  -68988;4;0;false;false;;;;;;
                                  -68992;4;1;false;false;127;0;85;;;
                                  -68996;5;0;false;false;;;;;;
                                  -69001;2;1;false;false;127;0;85;;;
                                  -69003;1;0;false;false;;;;;;
                                  -69004;9;0;false;false;0;0;0;;;
                                  -69013;1;0;false;false;;;;;;
                                  -69014;2;0;false;false;0;0;0;;;
                                  -69016;1;0;false;false;;;;;;
                                  -69017;23;0;false;false;0;0;0;;;
                                  -69040;1;0;false;false;;;;;;
                                  -69041;1;0;false;false;0;0;0;;;
                                  -69042;5;0;false;false;;;;;;
                                  -69047;8;0;false;false;0;0;0;;;
                                  -69055;1;0;false;false;;;;;;
                                  -69056;1;0;false;false;0;0;0;;;
                                  -69057;1;0;false;false;;;;;;
                                  -69058;22;0;false;false;0;0;0;;;
                                  -69080;1;0;false;false;;;;;;
                                  -69081;1;0;false;false;0;0;0;;;
                                  -69082;1;0;false;false;;;;;;
                                  -69083;2;0;false;false;0;0;0;;;
                                  -69085;4;0;false;false;;;;;;
                                  -69089;1;0;false;false;0;0;0;;;
                                  -69090;3;0;false;false;;;;;;
                                  -69093;1;0;false;false;0;0;0;;;
                                  -69094;3;0;false;false;;;;;;
                                  -69097;2;1;false;false;127;0;85;;;
                                  -69099;1;0;false;false;;;;;;
                                  -69100;9;0;false;false;0;0;0;;;
                                  -69109;1;0;false;false;;;;;;
                                  -69110;2;0;false;false;0;0;0;;;
                                  -69112;1;0;false;false;;;;;;
                                  -69113;12;0;false;false;0;0;0;;;
                                  -69125;1;0;false;false;;;;;;
                                  -69126;1;0;false;false;0;0;0;;;
                                  -69127;4;0;false;false;;;;;;
                                  -69131;9;0;false;false;0;0;0;;;
                                  -69140;1;0;false;false;;;;;;
                                  -69141;1;0;false;false;0;0;0;;;
                                  -69142;1;0;false;false;;;;;;
                                  -69143;34;0;false;false;0;0;0;;;
                                  -69177;4;0;false;false;;;;;;
                                  -69181;29;0;false;false;0;0;0;;;
                                  -69210;1;0;false;false;;;;;;
                                  -69211;23;0;false;false;0;0;0;;;
                                  -69234;1;0;false;false;;;;;;
                                  -69235;1;0;false;false;0;0;0;;;
                                  -69236;1;0;false;false;;;;;;
                                  -69237;8;0;false;false;0;0;0;;;
                                  -69245;1;0;false;false;;;;;;
                                  -69246;1;0;false;false;0;0;0;;;
                                  -69247;1;0;false;false;;;;;;
                                  -69248;3;0;false;false;0;0;0;;;
                                  -69251;4;0;false;false;;;;;;
                                  -69255;25;0;false;false;0;0;0;;;
                                  -69280;3;0;false;false;;;;;;
                                  -69283;1;0;false;false;0;0;0;;;
                                  -69284;2;0;false;false;;;;;;
                                  -69286;1;0;false;false;0;0;0;;;
                                  -69287;2;0;false;false;;;;;;
                                  -69289;3;0;false;false;63;95;191;;;
                                  -69292;3;0;false;false;;;;;;
                                  -69295;1;0;false;false;63;95;191;;;
                                  -69296;1;0;false;false;;;;;;
                                  -69297;5;0;false;false;63;95;191;;;
                                  -69302;1;0;false;false;;;;;;
                                  -69303;3;0;false;false;63;95;191;;;
                                  -69306;1;0;false;false;;;;;;
                                  -69307;6;0;false;false;63;95;191;;;
                                  -69313;1;0;false;false;;;;;;
                                  -69314;4;0;false;false;63;95;191;;;
                                  -69318;1;0;false;false;;;;;;
                                  -69319;2;0;false;false;63;95;191;;;
                                  -69321;1;0;false;false;;;;;;
                                  -69322;6;0;false;false;63;95;191;;;
                                  -69328;1;0;false;false;;;;;;
                                  -69329;2;0;false;false;63;95;191;;;
                                  -69331;1;0;false;false;;;;;;
                                  -69332;7;0;false;false;63;95;191;;;
                                  -69339;1;0;false;false;;;;;;
                                  -69340;2;0;false;false;63;95;191;;;
                                  -69342;1;0;false;false;;;;;;
                                  -69343;6;0;false;false;63;95;191;;;
                                  -69349;1;0;false;false;;;;;;
                                  -69350;4;0;false;false;63;95;191;;;
                                  -69354;1;0;false;false;;;;;;
                                  -69355;5;0;false;false;63;95;191;;;
                                  -69360;3;0;false;false;;;;;;
                                  -69363;2;0;false;false;63;95;191;;;
                                  -69365;2;0;false;false;;;;;;
                                  -69367;6;1;false;false;127;0;85;;;
                                  -69373;1;0;false;false;;;;;;
                                  -69374;3;1;false;false;127;0;85;;;
                                  -69377;1;0;false;false;;;;;;
                                  -69378;11;0;false;false;0;0;0;;;
                                  -69389;3;1;false;false;127;0;85;;;
                                  -69392;1;0;false;false;;;;;;
                                  -69393;6;0;false;false;0;0;0;;;
                                  -69399;1;0;false;false;;;;;;
                                  -69400;1;0;false;false;0;0;0;;;
                                  -69401;3;0;false;false;;;;;;
                                  -69404;2;1;false;false;127;0;85;;;
                                  -69406;1;0;false;false;;;;;;
                                  -69407;7;0;false;false;0;0;0;;;
                                  -69414;1;0;false;false;;;;;;
                                  -69415;1;0;false;false;0;0;0;;;
                                  -69416;1;0;false;false;;;;;;
                                  -69417;11;0;false;false;0;0;0;;;
                                  -69428;1;0;false;false;;;;;;
                                  -69429;2;0;false;false;0;0;0;;;
                                  -69431;1;0;false;false;;;;;;
                                  -69432;2;0;false;false;0;0;0;;;
                                  -69434;1;0;false;false;;;;;;
                                  -69435;1;0;false;false;0;0;0;;;
                                  -69436;4;0;false;false;;;;;;
                                  -69440;5;0;false;false;0;0;0;;;
                                  -69445;1;0;false;false;;;;;;
                                  -69446;2;0;false;false;0;0;0;;;
                                  -69448;1;0;false;false;;;;;;
                                  -69449;14;0;false;false;0;0;0;;;
                                  -69463;1;0;false;false;;;;;;
                                  -69464;1;0;false;false;0;0;0;;;
                                  -69465;1;0;false;false;;;;;;
                                  -69466;12;0;false;false;0;0;0;;;
                                  -69478;1;0;false;false;;;;;;
                                  -69479;1;0;false;false;0;0;0;;;
                                  -69480;1;0;false;false;;;;;;
                                  -69481;8;0;false;false;0;0;0;;;
                                  -69489;1;0;false;false;;;;;;
                                  -69490;1;0;false;false;0;0;0;;;
                                  -69491;1;0;false;false;;;;;;
                                  -69492;11;0;false;false;0;0;0;;;
                                  -69503;3;0;false;false;;;;;;
                                  -69506;1;0;false;false;0;0;0;;;
                                  -69507;1;0;false;false;;;;;;
                                  -69508;4;1;false;false;127;0;85;;;
                                  -69512;1;0;false;false;;;;;;
                                  -69513;1;0;false;false;0;0;0;;;
                                  -69514;4;0;false;false;;;;;;
                                  -69518;5;0;false;false;0;0;0;;;
                                  -69523;1;0;false;false;;;;;;
                                  -69524;2;0;false;false;0;0;0;;;
                                  -69526;1;0;false;false;;;;;;
                                  -69527;10;0;false;false;0;0;0;;;
                                  -69537;4;0;false;false;;;;;;
                                  -69541;2;1;false;false;127;0;85;;;
                                  -69543;1;0;false;false;;;;;;
                                  -69544;7;0;false;false;0;0;0;;;
                                  -69551;1;0;false;false;;;;;;
                                  -69552;1;0;false;false;0;0;0;;;
                                  -69553;1;0;false;false;;;;;;
                                  -69554;9;0;false;false;0;0;0;;;
                                  -69563;1;0;false;false;;;;;;
                                  -69564;2;0;false;false;0;0;0;;;
                                  -69566;1;0;false;false;;;;;;
                                  -69567;2;0;false;false;0;0;0;;;
                                  -69569;1;0;false;false;;;;;;
                                  -69570;1;0;false;false;0;0;0;;;
                                  -69571;5;0;false;false;;;;;;
                                  -69576;5;0;false;false;0;0;0;;;
                                  -69581;1;0;false;false;;;;;;
                                  -69582;2;0;false;false;0;0;0;;;
                                  -69584;1;0;false;false;;;;;;
                                  -69585;14;0;false;false;0;0;0;;;
                                  -69599;4;0;false;false;;;;;;
                                  -69603;1;0;false;false;0;0;0;;;
                                  -69604;3;0;false;false;;;;;;
                                  -69607;1;0;false;false;0;0;0;;;
                                  -69608;3;0;false;false;;;;;;
                                  -69611;6;1;false;false;127;0;85;;;
                                  -69617;1;0;false;false;;;;;;
                                  -69618;6;0;false;false;0;0;0;;;
                                  -69624;2;0;false;false;;;;;;
                                  -69626;1;0;false;false;0;0;0;;;
                                  -69627;2;0;false;false;;;;;;
                                  -69629;3;0;false;false;63;95;191;;;
                                  -69632;3;0;false;false;;;;;;
                                  -69635;1;0;false;false;63;95;191;;;
                                  -69636;1;0;false;false;;;;;;
                                  -69637;7;0;false;false;63;95;191;;;
                                  -69644;1;0;false;false;;;;;;
                                  -69645;4;0;false;false;63;95;191;;;
                                  -69649;1;0;false;false;;;;;;
                                  -69650;3;0;false;false;63;95;191;;;
                                  -69653;1;0;false;false;;;;;;
                                  -69654;4;0;false;false;63;95;191;;;
                                  -69658;1;0;false;false;;;;;;
                                  -69659;2;0;false;false;63;95;191;;;
                                  -69661;1;0;false;false;;;;;;
                                  -69662;3;0;false;false;63;95;191;;;
                                  -69665;1;0;false;false;;;;;;
                                  -69666;3;0;false;false;63;95;191;;;
                                  -69669;1;0;false;false;;;;;;
                                  -69670;5;0;false;false;63;95;191;;;
                                  -69675;1;0;false;false;;;;;;
                                  -69676;4;0;false;false;63;95;191;;;
                                  -69680;1;0;false;false;;;;;;
                                  -69681;9;0;false;false;63;95;191;;;
                                  -69690;1;0;false;false;;;;;;
                                  -69691;2;0;false;false;63;95;191;;;
                                  -69693;1;0;false;false;;;;;;
                                  -69694;1;0;false;false;63;95;191;;;
                                  -69695;1;0;false;false;;;;;;
                                  -69696;6;0;false;false;63;95;191;;;
                                  -69702;1;0;false;false;;;;;;
                                  -69703;2;0;false;false;63;95;191;;;
                                  -69705;1;0;false;false;;;;;;
                                  -69706;2;0;false;false;63;95;191;;;
                                  -69708;4;0;false;false;;;;;;
                                  -69712;1;0;false;false;63;95;191;;;
                                  -69713;1;0;false;false;;;;;;
                                  -69714;7;0;false;false;63;95;191;;;
                                  -69721;1;0;false;false;;;;;;
                                  -69722;6;0;false;false;63;95;191;;;
                                  -69728;3;0;false;false;;;;;;
                                  -69731;2;0;false;false;63;95;191;;;
                                  -69733;2;0;false;false;;;;;;
                                  -69735;4;1;false;false;127;0;85;;;
                                  -69739;1;0;false;false;;;;;;
                                  -69740;22;0;false;false;0;0;0;;;
                                  -69762;1;0;false;false;;;;;;
                                  -69763;1;0;false;false;0;0;0;;;
                                  -69764;3;0;false;false;;;;;;
                                  -69767;3;1;false;false;127;0;85;;;
                                  -69770;1;0;false;false;;;;;;
                                  -69771;17;0;false;false;0;0;0;;;
                                  -69788;1;0;false;false;;;;;;
                                  -69789;1;0;false;false;0;0;0;;;
                                  -69790;1;0;false;false;;;;;;
                                  -69791;11;0;false;false;0;0;0;;;
                                  -69802;1;0;false;false;;;;;;
                                  -69803;22;0;false;false;0;0;0;;;
                                  -69825;1;0;false;false;;;;;;
                                  -69826;1;0;false;false;0;0;0;;;
                                  -69827;1;0;false;false;;;;;;
                                  -69828;10;0;false;false;0;0;0;;;
                                  -69838;1;0;false;false;;;;;;
                                  -69839;1;0;false;false;0;0;0;;;
                                  -69840;1;0;false;false;;;;;;
                                  -69841;24;0;false;false;0;0;0;;;
                                  -69865;6;0;false;false;;;;;;
                                  -69871;2;1;false;false;127;0;85;;;
                                  -69873;1;0;false;false;;;;;;
                                  -69874;18;0;false;false;0;0;0;;;
                                  -69892;1;0;false;false;;;;;;
                                  -69893;1;0;false;false;0;0;0;;;
                                  -69894;1;0;false;false;;;;;;
                                  -69895;21;0;false;false;0;0;0;;;
                                  -69916;1;0;false;false;;;;;;
                                  -69917;1;0;false;false;0;0;0;;;
                                  -69918;4;0;false;false;;;;;;
                                  -69922;65;0;false;false;63;127;95;;;
                                  -69987;2;0;false;false;;;;;;
                                  -69989;18;0;false;false;63;127;95;;;
                                  -70007;2;0;false;false;;;;;;
                                  -70009;42;0;false;false;0;0;0;;;
                                  -70051;1;0;false;false;;;;;;
                                  -70052;4;1;false;false;127;0;85;;;
                                  -70056;2;0;false;false;0;0;0;;;
                                  -70058;3;0;false;false;;;;;;
                                  -70061;1;0;false;false;0;0;0;;;
                                  -70062;2;0;false;false;;;;;;
                                  -70064;1;0;false;false;0;0;0;;;
                                  -70065;2;0;false;false;;;;;;
                                  -70067;3;0;false;false;63;95;191;;;
                                  -70070;3;0;false;false;;;;;;
                                  -70073;1;0;false;false;63;95;191;;;
                                  -70074;1;0;false;false;;;;;;
                                  -70075;7;0;false;false;63;95;191;;;
                                  -70082;1;0;false;false;;;;;;
                                  -70083;4;0;false;false;63;95;191;;;
                                  -70087;1;0;false;false;;;;;;
                                  -70088;2;0;false;false;63;95;191;;;
                                  -70090;1;0;false;false;;;;;;
                                  -70091;3;0;false;false;63;95;191;;;
                                  -70094;1;0;false;false;;;;;;
                                  -70095;5;0;false;false;63;95;191;;;
                                  -70100;1;0;false;false;;;;;;
                                  -70101;2;0;false;false;63;95;191;;;
                                  -70103;1;0;false;false;;;;;;
                                  -70104;3;0;false;false;63;95;191;;;
                                  -70107;1;0;false;false;;;;;;
                                  -70108;3;0;false;false;63;95;191;;;
                                  -70111;1;0;false;false;;;;;;
                                  -70112;5;0;false;false;63;95;191;;;
                                  -70117;1;0;false;false;;;;;;
                                  -70118;4;0;false;false;63;95;191;;;
                                  -70122;1;0;false;false;;;;;;
                                  -70123;9;0;false;false;63;95;191;;;
                                  -70132;1;0;false;false;;;;;;
                                  -70133;2;0;false;false;63;95;191;;;
                                  -70135;1;0;false;false;;;;;;
                                  -70136;1;0;false;false;63;95;191;;;
                                  -70137;1;0;false;false;;;;;;
                                  -70138;7;0;false;false;63;95;191;;;
                                  -70145;3;0;false;false;;;;;;
                                  -70148;2;0;false;false;63;95;191;;;
                                  -70150;2;0;false;false;;;;;;
                                  -70152;4;1;false;false;127;0;85;;;
                                  -70156;1;0;false;false;;;;;;
                                  -70157;21;0;false;false;0;0;0;;;
                                  -70178;1;0;false;false;;;;;;
                                  -70179;1;0;false;false;0;0;0;;;
                                  -70180;3;0;false;false;;;;;;
                                  -70183;3;1;false;false;127;0;85;;;
                                  -70186;1;0;false;false;;;;;;
                                  -70187;19;0;false;false;0;0;0;;;
                                  -70206;1;0;false;false;;;;;;
                                  -70207;1;0;false;false;0;0;0;;;
                                  -70208;1;0;false;false;;;;;;
                                  -70209;11;0;false;false;0;0;0;;;
                                  -70220;1;0;false;false;;;;;;
                                  -70221;20;0;false;false;0;0;0;;;
                                  -70241;1;0;false;false;;;;;;
                                  -70242;1;0;false;false;0;0;0;;;
                                  -70243;1;0;false;false;;;;;;
                                  -70244;22;0;false;false;0;0;0;;;
                                  -70266;1;0;false;false;;;;;;
                                  -70267;1;0;false;false;0;0;0;;;
                                  -70268;1;0;false;false;;;;;;
                                  -70269;10;0;false;false;0;0;0;;;
                                  -70279;1;0;false;false;;;;;;
                                  -70280;1;0;false;false;0;0;0;;;
                                  -70281;1;0;false;false;;;;;;
                                  -70282;14;0;false;false;0;0;0;;;
                                  -70296;6;0;false;false;;;;;;
                                  -70302;2;1;false;false;127;0;85;;;
                                  -70304;1;0;false;false;;;;;;
                                  -70305;20;0;false;false;0;0;0;;;
                                  -70325;1;0;false;false;;;;;;
                                  -70326;1;0;false;false;0;0;0;;;
                                  -70327;1;0;false;false;;;;;;
                                  -70328;23;0;false;false;0;0;0;;;
                                  -70351;1;0;false;false;;;;;;
                                  -70352;1;0;false;false;0;0;0;;;
                                  -70353;7;0;false;false;;;;;;
                                  -70360;69;0;false;false;63;127;95;;;
                                  -70429;2;0;false;false;;;;;;
                                  -70431;66;0;false;false;63;127;95;;;
                                  -70497;2;0;false;false;;;;;;
                                  -70499;44;0;false;false;63;127;95;;;
                                  -70543;2;0;false;false;;;;;;
                                  -70545;39;0;false;false;0;0;0;;;
                                  -70584;1;0;false;false;;;;;;
                                  -70585;1;0;false;false;0;0;0;;;
                                  -70586;1;0;false;false;;;;;;
                                  -70587;24;0;false;false;0;0;0;;;
                                  -70611;8;0;false;false;;;;;;
                                  -70619;1;0;false;false;0;0;0;;;
                                  -70620;2;0;false;false;;;;;;
                                  -70622;1;0;false;false;0;0;0;;;
                                  -70623;2;0;false;false;;;;;;
                                  -70625;3;0;false;false;63;95;191;;;
                                  -70628;3;0;false;false;;;;;;
                                  -70631;1;0;false;false;63;95;191;;;
                                  -70632;1;0;false;false;;;;;;
                                  -70633;6;0;false;false;63;95;191;;;
                                  -70639;1;0;false;false;;;;;;
                                  -70640;3;0;false;false;63;95;191;;;
                                  -70643;1;0;false;false;;;;;;
                                  -70644;6;0;false;false;63;95;191;;;
                                  -70650;1;0;false;false;;;;;;
                                  -70651;7;0;false;false;63;95;191;;;
                                  -70658;3;0;false;false;;;;;;
                                  -70661;1;0;false;false;63;95;191;;;
                                  -70662;4;0;false;false;;;;;;
                                  -70666;1;0;false;false;63;95;191;;;
                                  -70667;1;0;false;false;;;;;;
                                  -70668;7;1;false;false;127;159;191;;;
                                  -70675;2;0;false;false;63;95;191;;;
                                  -70677;1;0;false;false;;;;;;
                                  -70678;2;0;false;false;63;95;191;;;
                                  -70680;1;0;false;false;;;;;;
                                  -70681;2;0;false;false;63;95;191;;;
                                  -70683;1;0;false;false;;;;;;
                                  -70684;6;0;false;false;63;95;191;;;
                                  -70690;1;0;false;false;;;;;;
                                  -70691;2;0;false;false;63;95;191;;;
                                  -70693;3;0;false;false;;;;;;
                                  -70696;1;0;false;false;63;95;191;;;
                                  -70697;1;0;false;false;;;;;;
                                  -70698;7;1;false;false;127;159;191;;;
                                  -70705;10;0;false;false;63;95;191;;;
                                  -70715;1;0;false;false;;;;;;
                                  -70716;10;0;false;false;63;95;191;;;
                                  -70726;1;0;false;false;;;;;;
                                  -70727;5;0;false;false;63;95;191;;;
                                  -70732;1;0;false;false;;;;;;
                                  -70733;2;0;false;false;63;95;191;;;
                                  -70735;1;0;false;false;;;;;;
                                  -70736;3;0;false;false;63;95;191;;;
                                  -70739;1;0;false;false;;;;;;
                                  -70740;3;0;false;false;63;95;191;;;
                                  -70743;1;0;false;false;;;;;;
                                  -70744;8;0;false;false;63;95;191;;;
                                  -70752;1;0;false;false;;;;;;
                                  -70753;3;0;false;false;63;95;191;;;
                                  -70756;1;0;false;false;;;;;;
                                  -70757;6;0;false;false;63;95;191;;;
                                  -70763;3;0;false;false;;;;;;
                                  -70766;1;0;false;false;63;95;191;;;
                                  -70767;1;0;false;false;;;;;;
                                  -70768;7;1;false;false;127;159;191;;;
                                  -70775;10;0;false;false;63;95;191;;;
                                  -70785;1;0;false;false;;;;;;
                                  -70786;6;0;false;false;63;95;191;;;
                                  -70792;1;0;false;false;;;;;;
                                  -70793;6;0;false;false;63;95;191;;;
                                  -70799;1;0;false;false;;;;;;
                                  -70800;4;0;false;false;63;95;191;;;
                                  -70804;1;0;false;false;;;;;;
                                  -70805;10;0;false;false;63;95;191;;;
                                  -70815;3;0;false;false;;;;;;
                                  -70818;2;0;false;false;63;95;191;;;
                                  -70820;2;0;false;false;;;;;;
                                  -70822;4;1;false;false;127;0;85;;;
                                  -70826;1;0;false;false;;;;;;
                                  -70827;14;0;false;false;0;0;0;;;
                                  -70841;1;0;false;false;;;;;;
                                  -70842;3;0;false;false;0;0;0;;;
                                  -70845;1;0;false;false;;;;;;
                                  -70846;5;0;false;false;0;0;0;;;
                                  -70851;1;0;false;false;;;;;;
                                  -70852;11;0;false;false;0;0;0;;;
                                  -70863;1;0;false;false;;;;;;
                                  -70864;9;0;false;false;0;0;0;;;
                                  -70873;1;0;false;false;;;;;;
                                  -70874;11;0;false;false;0;0;0;;;
                                  -70885;1;0;false;false;;;;;;
                                  -70886;3;1;false;false;127;0;85;;;
                                  -70889;1;0;false;false;;;;;;
                                  -70890;2;0;false;false;0;0;0;;;
                                  -70892;1;0;false;false;;;;;;
                                  -70893;1;0;false;false;0;0;0;;;
                                  -70894;3;0;false;false;;;;;;
                                  -70897;32;0;false;false;63;127;95;;;
                                  -70929;1;0;false;false;;;;;;
                                  -70930;29;0;false;false;0;0;0;;;
                                  -70959;3;0;false;false;;;;;;
                                  -70962;2;1;false;false;127;0;85;;;
                                  -70964;1;0;false;false;;;;;;
                                  -70965;10;0;false;false;0;0;0;;;
                                  -70975;1;0;false;false;;;;;;
                                  -70976;1;0;false;false;0;0;0;;;
                                  -70977;1;0;false;false;;;;;;
                                  -70978;2;0;false;false;0;0;0;;;
                                  -70980;1;0;false;false;;;;;;
                                  -70981;1;0;false;false;0;0;0;;;
                                  -70982;4;0;false;false;;;;;;
                                  -70986;19;0;false;false;0;0;0;;;
                                  -71005;1;0;false;false;;;;;;
                                  -71006;3;0;false;false;0;0;0;;;
                                  -71009;1;0;false;false;;;;;;
                                  -71010;17;0;false;false;0;0;0;;;
                                  -71027;1;0;false;false;;;;;;
                                  -71028;11;0;false;false;0;0;0;;;
                                  -71039;3;0;false;false;;;;;;
                                  -71042;1;0;false;false;0;0;0;;;
                                  -71043;3;0;false;false;;;;;;
                                  -71046;2;1;false;false;127;0;85;;;
                                  -71048;1;0;false;false;;;;;;
                                  -71049;13;0;false;false;0;0;0;;;
                                  -71062;1;0;false;false;;;;;;
                                  -71063;1;0;false;false;0;0;0;;;
                                  -71064;1;0;false;false;;;;;;
                                  -71065;2;0;false;false;0;0;0;;;
                                  -71067;1;0;false;false;;;;;;
                                  -71068;1;0;false;false;0;0;0;;;
                                  -71069;4;0;false;false;;;;;;
                                  -71073;19;0;false;false;0;0;0;;;
                                  -71092;1;0;false;false;;;;;;
                                  -71093;17;0;false;false;0;0;0;;;
                                  -71110;1;0;false;false;;;;;;
                                  -71111;1;0;false;false;0;0;0;;;
                                  -71112;1;0;false;false;;;;;;
                                  -71113;12;0;false;false;0;0;0;;;
                                  -71125;1;0;false;false;;;;;;
                                  -71126;1;0;false;false;0;0;0;;;
                                  -71127;1;0;false;false;;;;;;
                                  -71128;2;0;false;false;0;0;0;;;
                                  -71130;1;0;false;false;;;;;;
                                  -71131;17;0;false;false;0;0;0;;;
                                  -71148;1;0;false;false;;;;;;
                                  -71149;14;0;false;false;0;0;0;;;
                                  -71163;3;0;false;false;;;;;;
                                  -71166;1;0;false;false;0;0;0;;;
                                  -71167;3;0;false;false;;;;;;
                                  -71170;2;1;false;false;127;0;85;;;
                                  -71172;1;0;false;false;;;;;;
                                  -71173;11;0;false;false;0;0;0;;;
                                  -71184;1;0;false;false;;;;;;
                                  -71185;1;0;false;false;0;0;0;;;
                                  -71186;1;0;false;false;;;;;;
                                  -71187;2;0;false;false;0;0;0;;;
                                  -71189;1;0;false;false;;;;;;
                                  -71190;1;0;false;false;0;0;0;;;
                                  -71191;4;0;false;false;;;;;;
                                  -71195;19;0;false;false;0;0;0;;;
                                  -71214;1;0;false;false;;;;;;
                                  -71215;3;0;false;false;0;0;0;;;
                                  -71218;1;0;false;false;;;;;;
                                  -71219;11;0;false;false;0;0;0;;;
                                  -71230;1;0;false;false;;;;;;
                                  -71231;19;0;false;false;0;0;0;;;
                                  -71250;3;0;false;false;;;;;;
                                  -71253;1;0;false;false;0;0;0;;;
                                  -71254;3;0;false;false;;;;;;
                                  -71257;2;1;false;false;127;0;85;;;
                                  -71259;1;0;false;false;;;;;;
                                  -71260;12;0;false;false;0;0;0;;;
                                  -71272;1;0;false;false;;;;;;
                                  -71273;1;0;false;false;0;0;0;;;
                                  -71274;1;0;false;false;;;;;;
                                  -71275;2;0;false;false;0;0;0;;;
                                  -71277;1;0;false;false;;;;;;
                                  -71278;1;0;false;false;0;0;0;;;
                                  -71279;4;0;false;false;;;;;;
                                  -71283;33;0;false;false;0;0;0;;;
                                  -71316;1;0;false;false;;;;;;
                                  -71317;1;0;false;false;0;0;0;;;
                                  -71318;1;0;false;false;;;;;;
                                  -71319;12;0;false;false;0;0;0;;;
                                  -71331;1;0;false;false;;;;;;
                                  -71332;3;0;false;false;0;0;0;;;
                                  -71335;1;0;false;false;;;;;;
                                  -71336;12;0;false;false;0;0;0;;;
                                  -71348;1;0;false;false;;;;;;
                                  -71349;19;0;false;false;0;0;0;;;
                                  -71368;3;0;false;false;;;;;;
                                  -71371;1;0;false;false;0;0;0;;;
                                  -71372;2;0;false;false;;;;;;
                                  -71374;1;0;false;false;0;0;0;;;
                                  -71375;2;0;false;false;;;;;;
                                  -71377;3;0;false;false;63;95;191;;;
                                  -71380;3;0;false;false;;;;;;
                                  -71383;1;0;false;false;63;95;191;;;
                                  -71384;1;0;false;false;;;;;;
                                  -71385;7;0;false;false;63;95;191;;;
                                  -71392;1;0;false;false;;;;;;
                                  -71393;3;0;false;false;63;95;191;;;
                                  -71396;1;0;false;false;;;;;;
                                  -71397;6;0;false;false;63;95;191;;;
                                  -71403;1;0;false;false;;;;;;
                                  -71404;10;0;false;false;63;95;191;;;
                                  -71414;3;0;false;false;;;;;;
                                  -71417;1;0;false;false;63;95;191;;;
                                  -71418;1;0;false;false;;;;;;
                                  -71419;3;0;false;false;127;127;159;;;
                                  -71422;3;0;false;false;;;;;;
                                  -71425;1;0;false;false;63;95;191;;;
                                  -71426;3;0;false;false;;;;;;
                                  -71429;1;0;false;false;63;95;191;;;
                                  -71430;1;0;false;false;;;;;;
                                  -71431;7;1;false;false;127;159;191;;;
                                  -71438;9;0;false;false;63;95;191;;;
                                  -71447;1;0;false;false;;;;;;
                                  -71448;1;0;false;false;63;95;191;;;
                                  -71449;1;0;false;false;;;;;;
                                  -71450;9;0;false;false;63;95;191;;;
                                  -71459;1;0;false;false;;;;;;
                                  -71460;5;0;false;false;63;95;191;;;
                                  -71465;1;0;false;false;;;;;;
                                  -71466;2;0;false;false;63;95;191;;;
                                  -71468;1;0;false;false;;;;;;
                                  -71469;4;0;false;false;63;95;191;;;
                                  -71473;1;0;false;false;;;;;;
                                  -71474;4;0;false;false;63;95;191;;;
                                  -71478;1;0;false;false;;;;;;
                                  -71479;3;0;false;false;63;95;191;;;
                                  -71482;1;0;false;false;;;;;;
                                  -71483;2;0;false;false;63;95;191;;;
                                  -71485;1;0;false;false;;;;;;
                                  -71486;4;0;false;false;63;95;191;;;
                                  -71490;1;0;false;false;;;;;;
                                  -71491;3;0;false;false;63;95;191;;;
                                  -71494;1;0;false;false;;;;;;
                                  -71495;4;0;false;false;63;95;191;;;
                                  -71499;1;0;false;false;;;;;;
                                  -71500;3;0;false;false;63;95;191;;;
                                  -71503;1;0;false;false;;;;;;
                                  -71504;9;0;false;false;63;95;191;;;
                                  -71513;1;0;false;false;;;;;;
                                  -71514;2;0;false;false;63;95;191;;;
                                  -71516;1;0;false;false;;;;;;
                                  -71517;8;0;false;false;63;95;191;;;
                                  -71525;1;0;false;false;;;;;;
                                  -71526;6;0;false;false;63;95;191;;;
                                  -71532;3;0;false;false;;;;;;
                                  -71535;2;0;false;false;63;95;191;;;
                                  -71537;2;0;false;false;;;;;;
                                  -71539;4;1;false;false;127;0;85;;;
                                  -71543;1;0;false;false;;;;;;
                                  -71544;15;0;false;false;0;0;0;;;
                                  -71559;7;1;false;false;127;0;85;;;
                                  -71566;1;0;false;false;;;;;;
                                  -71567;10;0;false;false;0;0;0;;;
                                  -71577;1;0;false;false;;;;;;
                                  -71578;1;0;false;false;0;0;0;;;
                                  -71579;3;0;false;false;;;;;;
                                  -71582;3;1;false;false;127;0;85;;;
                                  -71585;1;0;false;false;;;;;;
                                  -71586;14;0;false;false;0;0;0;;;
                                  -71600;1;0;false;false;;;;;;
                                  -71601;1;0;false;false;0;0;0;;;
                                  -71602;1;0;false;false;;;;;;
                                  -71603;12;0;false;false;0;0;0;;;
                                  -71615;3;0;false;false;;;;;;
                                  -71618;3;1;false;false;127;0;85;;;
                                  -71621;1;0;false;false;;;;;;
                                  -71622;12;0;false;false;0;0;0;;;
                                  -71634;1;0;false;false;;;;;;
                                  -71635;1;0;false;false;0;0;0;;;
                                  -71636;1;0;false;false;;;;;;
                                  -71637;12;0;false;false;0;0;0;;;
                                  -71649;3;0;false;false;;;;;;
                                  -71652;3;1;false;false;127;0;85;;;
                                  -71655;1;0;false;false;;;;;;
                                  -71656;6;0;false;false;0;0;0;;;
                                  -71662;1;0;false;false;;;;;;
                                  -71663;1;0;false;false;0;0;0;;;
                                  -71664;1;0;false;false;;;;;;
                                  -71665;23;0;false;false;0;0;0;;;
                                  -71688;6;0;false;false;;;;;;
                                  -71694;17;0;false;false;0;0;0;;;
                                  -71711;3;0;false;false;;;;;;
                                  -71714;33;0;false;false;63;127;95;;;
                                  -71747;1;0;false;false;;;;;;
                                  -71748;2;1;false;false;127;0;85;;;
                                  -71750;1;0;false;false;;;;;;
                                  -71751;13;0;false;false;0;0;0;;;
                                  -71764;1;0;false;false;;;;;;
                                  -71765;1;0;false;false;0;0;0;;;
                                  -71766;1;0;false;false;;;;;;
                                  -71767;14;0;false;false;0;0;0;;;
                                  -71781;1;0;false;false;;;;;;
                                  -71782;1;0;false;false;0;0;0;;;
                                  -71783;1;0;false;false;;;;;;
                                  -71784;2;0;false;false;0;0;0;;;
                                  -71786;1;0;false;false;;;;;;
                                  -71787;1;0;false;false;0;0;0;;;
                                  -71788;4;0;false;false;;;;;;
                                  -71792;64;0;false;false;63;127;95;;;
                                  -71856;2;0;false;false;;;;;;
                                  -71858;47;0;false;false;63;127;95;;;
                                  -71905;2;0;false;false;;;;;;
                                  -71907;3;1;false;false;127;0;85;;;
                                  -71910;1;0;false;false;;;;;;
                                  -71911;11;0;false;false;0;0;0;;;
                                  -71922;1;0;false;false;;;;;;
                                  -71923;1;0;false;false;0;0;0;;;
                                  -71924;1;0;false;false;;;;;;
                                  -71925;24;0;false;false;0;0;0;;;
                                  -71949;1;0;false;false;;;;;;
                                  -71950;8;0;false;false;0;0;0;;;
                                  -71958;4;0;false;false;;;;;;
                                  -71962;3;1;false;false;127;0;85;;;
                                  -71965;1;0;false;false;;;;;;
                                  -71966;9;0;false;false;0;0;0;;;
                                  -71975;1;0;false;false;;;;;;
                                  -71976;1;0;false;false;0;0;0;;;
                                  -71977;1;0;false;false;;;;;;
                                  -71978;22;0;false;false;0;0;0;;;
                                  -72000;1;0;false;false;;;;;;
                                  -72001;8;0;false;false;0;0;0;;;
                                  -72009;4;0;false;false;;;;;;
                                  -72013;2;1;false;false;127;0;85;;;
                                  -72015;1;0;false;false;;;;;;
                                  -72016;10;0;false;false;0;0;0;;;
                                  -72026;1;0;false;false;;;;;;
                                  -72027;1;0;false;false;0;0;0;;;
                                  -72028;1;0;false;false;;;;;;
                                  -72029;11;0;false;false;0;0;0;;;
                                  -72040;1;0;false;false;;;;;;
                                  -72041;1;0;false;false;0;0;0;;;
                                  -72042;1;0;false;false;;;;;;
                                  -72043;2;0;false;false;0;0;0;;;
                                  -72045;1;0;false;false;;;;;;
                                  -72046;1;0;false;false;0;0;0;;;
                                  -72047;5;0;false;false;;;;;;
                                  -72052;32;0;false;false;0;0;0;;;
                                  -72084;1;0;false;false;;;;;;
                                  -72085;9;0;false;false;0;0;0;;;
                                  -72094;1;0;false;false;;;;;;
                                  -72095;1;0;false;false;0;0;0;;;
                                  -72096;1;0;false;false;;;;;;
                                  -72097;12;0;false;false;0;0;0;;;
                                  -72109;1;0;false;false;;;;;;
                                  -72110;4;1;false;false;127;0;85;;;
                                  -72114;2;0;false;false;0;0;0;;;
                                  -72116;4;0;false;false;;;;;;
                                  -72120;1;0;false;false;0;0;0;;;
                                  -72121;4;0;false;false;;;;;;
                                  -72125;2;1;false;false;127;0;85;;;
                                  -72127;1;0;false;false;;;;;;
                                  -72128;11;0;false;false;0;0;0;;;
                                  -72139;1;0;false;false;;;;;;
                                  -72140;1;0;false;false;0;0;0;;;
                                  -72141;5;0;false;false;;;;;;
                                  -72146;21;0;false;false;0;0;0;;;
                                  -72167;4;0;false;false;;;;;;
                                  -72171;1;0;false;false;0;0;0;;;
                                  -72172;3;0;false;false;;;;;;
                                  -72175;1;0;false;false;0;0;0;;;
                                  -72176;2;0;false;false;;;;;;
                                  -72178;1;0;false;false;0;0;0;;;
                                  -72179;2;0;false;false;;;;;;
                                  -72181;6;1;false;false;127;0;85;;;
                                  -72187;1;0;false;false;;;;;;
                                  -72188;5;0;false;false;0;0;0;;;
                                  -72193;1;0;false;false;;;;;;
                                  -72194;11;0;false;false;0;0;0;;;
                                  -72205;1;0;false;false;;;;;;
                                  -72206;1;0;false;false;0;0;0;;;
                                  -72207;3;1;false;false;127;0;85;;;
                                  -72210;1;0;false;false;;;;;;
                                  -72211;6;0;false;false;0;0;0;;;
                                  -72217;1;0;false;false;;;;;;
                                  -72218;3;1;false;false;127;0;85;;;
                                  -72221;1;0;false;false;;;;;;
                                  -72222;6;0;false;false;0;0;0;;;
                                  -72228;1;0;false;false;;;;;;
                                  -72229;7;1;false;false;127;0;85;;;
                                  -72236;1;0;false;false;;;;;;
                                  -72237;8;0;false;false;0;0;0;;;
                                  -72245;1;0;false;false;;;;;;
                                  -72246;1;0;false;false;0;0;0;;;
                                  -72247;3;0;false;false;;;;;;
                                  -72250;14;0;false;false;0;0;0;;;
                                  -72264;3;0;false;false;;;;;;
                                  -72267;3;1;false;false;127;0;85;;;
                                  -72270;1;0;false;false;;;;;;
                                  -72271;6;0;false;false;0;0;0;;;
                                  -72277;1;0;false;false;;;;;;
                                  -72278;6;0;false;false;0;0;0;;;
                                  -72284;1;0;false;false;;;;;;
                                  -72285;7;0;false;false;0;0;0;;;
                                  -72292;3;0;false;false;;;;;;
                                  -72295;7;1;false;false;127;0;85;;;
                                  -72302;1;0;false;false;;;;;;
                                  -72303;10;0;false;false;0;0;0;;;
                                  -72313;1;0;false;false;;;;;;
                                  -72314;1;0;false;false;0;0;0;;;
                                  -72315;1;0;false;false;;;;;;
                                  -72316;11;0;false;false;0;0;0;;;
                                  -72327;1;0;false;false;;;;;;
                                  -72328;1;0;false;false;0;0;0;;;
                                  -72329;1;0;false;false;;;;;;
                                  -72330;11;0;false;false;0;0;0;;;
                                  -72341;1;0;false;false;;;;;;
                                  -72342;2;0;false;false;0;0;0;;;
                                  -72344;1;0;false;false;;;;;;
                                  -72345;2;0;false;false;0;0;0;;;
                                  -72347;6;0;false;false;;;;;;
                                  -72353;2;1;false;false;127;0;85;;;
                                  -72355;1;0;false;false;;;;;;
                                  -72356;12;0;false;false;0;0;0;;;
                                  -72368;1;0;false;false;;;;;;
                                  -72369;1;0;false;false;0;0;0;;;
                                  -72370;4;0;false;false;;;;;;
                                  -72374;5;0;false;false;0;0;0;;;
                                  -72379;1;0;false;false;;;;;;
                                  -72380;1;0;false;false;0;0;0;;;
                                  -72381;1;0;false;false;;;;;;
                                  -72382;2;0;false;false;0;0;0;;;
                                  -72384;3;0;false;false;;;;;;
                                  -72387;1;0;false;false;0;0;0;;;
                                  -72388;1;0;false;false;;;;;;
                                  -72389;4;1;false;false;127;0;85;;;
                                  -72393;1;0;false;false;;;;;;
                                  -72394;1;0;false;false;0;0;0;;;
                                  -72395;4;0;false;false;;;;;;
                                  -72399;5;0;false;false;0;0;0;;;
                                  -72404;1;0;false;false;;;;;;
                                  -72405;1;0;false;false;0;0;0;;;
                                  -72406;1;0;false;false;;;;;;
                                  -72407;23;0;false;false;0;0;0;;;
                                  -72430;3;0;false;false;;;;;;
                                  -72433;1;0;false;false;0;0;0;;;
                                  -72434;3;0;false;false;;;;;;
                                  -72437;2;1;false;false;127;0;85;;;
                                  -72439;1;0;false;false;;;;;;
                                  -72440;6;0;false;false;0;0;0;;;
                                  -72446;1;0;false;false;;;;;;
                                  -72447;2;0;false;false;0;0;0;;;
                                  -72449;1;0;false;false;;;;;;
                                  -72450;12;0;false;false;0;0;0;;;
                                  -72462;1;0;false;false;;;;;;
                                  -72463;1;0;false;false;0;0;0;;;
                                  -72464;4;0;false;false;;;;;;
                                  -72468;5;0;false;false;0;0;0;;;
                                  -72473;1;0;false;false;;;;;;
                                  -72474;1;0;false;false;0;0;0;;;
                                  -72475;1;0;false;false;;;;;;
                                  -72476;6;0;false;false;0;0;0;;;
                                  -72482;3;0;false;false;;;;;;
                                  -72485;1;0;false;false;0;0;0;;;
                                  -72486;4;0;false;false;;;;;;
                                  -72490;4;1;false;false;127;0;85;;;
                                  -72494;1;0;false;false;;;;;;
                                  -72495;1;0;false;false;0;0;0;;;
                                  -72496;4;0;false;false;;;;;;
                                  -72500;5;0;false;false;0;0;0;;;
                                  -72505;1;0;false;false;;;;;;
                                  -72506;1;0;false;false;0;0;0;;;
                                  -72507;1;0;false;false;;;;;;
                                  -72508;14;0;false;false;0;0;0;;;
                                  -72522;3;0;false;false;;;;;;
                                  -72525;1;0;false;false;0;0;0;;;
                                  -72526;3;0;false;false;;;;;;
                                  -72529;2;1;false;false;127;0;85;;;
                                  -72531;1;0;false;false;;;;;;
                                  -72532;6;0;false;false;0;0;0;;;
                                  -72538;1;0;false;false;;;;;;
                                  -72539;2;0;false;false;0;0;0;;;
                                  -72541;1;0;false;false;;;;;;
                                  -72542;12;0;false;false;0;0;0;;;
                                  -72554;1;0;false;false;;;;;;
                                  -72555;1;0;false;false;0;0;0;;;
                                  -72556;4;0;false;false;;;;;;
                                  -72560;9;0;false;false;0;0;0;;;
                                  -72569;1;0;false;false;;;;;;
                                  -72570;16;0;false;false;0;0;0;;;
                                  -72586;1;0;false;false;;;;;;
                                  -72587;1;0;false;false;0;0;0;;;
                                  -72588;1;0;false;false;;;;;;
                                  -72589;10;0;false;false;0;0;0;;;
                                  -72599;4;0;false;false;;;;;;
                                  -72603;2;1;false;false;127;0;85;;;
                                  -72605;1;0;false;false;;;;;;
                                  -72606;10;0;false;false;0;0;0;;;
                                  -72616;1;0;false;false;;;;;;
                                  -72617;1;0;false;false;0;0;0;;;
                                  -72618;5;0;false;false;;;;;;
                                  -72623;73;0;false;false;63;127;95;;;
                                  -72696;3;0;false;false;;;;;;
                                  -72699;54;0;false;false;63;127;95;;;
                                  -72753;3;0;false;false;;;;;;
                                  -72756;16;0;false;false;0;0;0;;;
                                  -72772;1;0;false;false;;;;;;
                                  -72773;1;0;false;false;0;0;0;;;
                                  -72774;1;0;false;false;;;;;;
                                  -72775;3;1;false;false;127;0;85;;;
                                  -72778;1;0;false;false;;;;;;
                                  -72779;18;0;false;false;0;0;0;;;
                                  -72797;4;1;false;false;127;0;85;;;
                                  -72801;1;0;false;false;0;0;0;;;
                                  -72802;1;0;false;false;;;;;;
                                  -72803;16;0;false;false;0;0;0;;;
                                  -72819;5;0;false;false;;;;;;
                                  -72824;2;1;false;false;127;0;85;;;
                                  -72826;1;0;false;false;;;;;;
                                  -72827;13;0;false;false;0;0;0;;;
                                  -72840;1;0;false;false;;;;;;
                                  -72841;1;0;false;false;0;0;0;;;
                                  -72842;6;0;false;false;;;;;;
                                  -72848;5;0;false;false;0;0;0;;;
                                  -72853;1;0;false;false;;;;;;
                                  -72854;1;0;false;false;0;0;0;;;
                                  -72855;1;0;false;false;;;;;;
                                  -72856;30;0;false;false;0;0;0;;;
                                  -72886;5;0;false;false;;;;;;
                                  -72891;1;0;false;false;0;0;0;;;
                                  -72892;4;0;false;false;;;;;;
                                  -72896;1;0;false;false;0;0;0;;;
                                  -72897;4;0;false;false;;;;;;
                                  -72901;51;0;false;false;63;127;95;;;
                                  -72952;2;0;false;false;;;;;;
                                  -72954;51;0;false;false;63;127;95;;;
                                  -73005;2;0;false;false;;;;;;
                                  -73007;28;0;false;false;63;127;95;;;
                                  -73035;2;0;false;false;;;;;;
                                  -73037;3;1;false;false;127;0;85;;;
                                  -73040;1;0;false;false;;;;;;
                                  -73041;12;0;false;false;0;0;0;;;
                                  -73053;1;0;false;false;;;;;;
                                  -73054;1;0;false;false;0;0;0;;;
                                  -73055;1;0;false;false;;;;;;
                                  -73056;8;0;false;false;0;0;0;;;
                                  -73064;1;0;false;false;;;;;;
                                  -73065;7;0;false;false;0;0;0;;;
                                  -73072;1;0;false;false;;;;;;
                                  -73073;31;0;false;false;0;0;0;;;
                                  -73104;1;0;false;false;;;;;;
                                  -73105;1;0;false;false;0;0;0;;;
                                  -73106;1;0;false;false;;;;;;
                                  -73107;12;0;false;false;0;0;0;;;
                                  -73119;4;0;false;false;;;;;;
                                  -73123;29;0;false;false;0;0;0;;;
                                  -73152;1;0;false;false;;;;;;
                                  -73153;14;0;false;false;0;0;0;;;
                                  -73167;4;0;false;false;;;;;;
                                  -73171;5;0;false;false;0;0;0;;;
                                  -73176;1;0;false;false;;;;;;
                                  -73177;1;0;false;false;0;0;0;;;
                                  -73178;1;0;false;false;;;;;;
                                  -73179;27;0;false;false;0;0;0;;;
                                  -73206;1;0;false;false;;;;;;
                                  -73207;1;0;false;false;0;0;0;;;
                                  -73208;1;0;false;false;;;;;;
                                  -73209;10;0;false;false;0;0;0;;;
                                  -73219;1;0;false;false;;;;;;
                                  -73220;1;0;false;false;0;0;0;;;
                                  -73221;1;0;false;false;;;;;;
                                  -73222;12;0;false;false;0;0;0;;;
                                  -73234;3;0;false;false;;;;;;
                                  -73237;1;0;false;false;0;0;0;;;
                                  -73238;3;0;false;false;;;;;;
                                  -73241;4;1;false;false;127;0;85;;;
                                  -73245;3;0;false;false;;;;;;
                                  -73248;2;1;false;false;127;0;85;;;
                                  -73250;1;0;false;false;;;;;;
                                  -73251;9;0;false;false;0;0;0;;;
                                  -73260;1;0;false;false;;;;;;
                                  -73261;2;0;false;false;0;0;0;;;
                                  -73263;1;0;false;false;;;;;;
                                  -73264;12;0;false;false;0;0;0;;;
                                  -73276;1;0;false;false;;;;;;
                                  -73277;1;0;false;false;0;0;0;;;
                                  -73278;4;0;false;false;;;;;;
                                  -73282;55;0;false;false;63;127;95;;;
                                  -73337;2;0;false;false;;;;;;
                                  -73339;46;0;false;false;63;127;95;;;
                                  -73385;2;0;false;false;;;;;;
                                  -73387;14;0;false;false;0;0;0;;;
                                  -73401;1;0;false;false;;;;;;
                                  -73402;14;0;false;false;0;0;0;;;
                                  -73416;1;0;false;false;;;;;;
                                  -73417;1;0;false;false;0;0;0;;;
                                  -73418;1;0;false;false;;;;;;
                                  -73419;3;1;false;false;127;0;85;;;
                                  -73422;1;0;false;false;;;;;;
                                  -73423;24;0;false;false;0;0;0;;;
                                  -73447;1;0;false;false;;;;;;
                                  -73448;16;0;false;false;0;0;0;;;
                                  -73464;4;0;false;false;;;;;;
                                  -73468;32;0;false;false;0;0;0;;;
                                  -73500;4;0;false;false;;;;;;
                                  -73504;5;0;false;false;0;0;0;;;
                                  -73509;1;0;false;false;;;;;;
                                  -73510;1;0;false;false;0;0;0;;;
                                  -73511;1;0;false;false;;;;;;
                                  -73512;30;0;false;false;0;0;0;;;
                                  -73542;3;0;false;false;;;;;;
                                  -73545;1;0;false;false;0;0;0;;;
                                  -73546;3;0;false;false;;;;;;
                                  -73549;2;1;false;false;127;0;85;;;
                                  -73551;1;0;false;false;;;;;;
                                  -73552;6;0;false;false;0;0;0;;;
                                  -73558;1;0;false;false;;;;;;
                                  -73559;2;0;false;false;0;0;0;;;
                                  -73561;1;0;false;false;;;;;;
                                  -73562;12;0;false;false;0;0;0;;;
                                  -73574;1;0;false;false;;;;;;
                                  -73575;1;0;false;false;0;0;0;;;
                                  -73576;4;0;false;false;;;;;;
                                  -73580;6;0;false;false;0;0;0;;;
                                  -73586;1;0;false;false;;;;;;
                                  -73587;1;0;false;false;0;0;0;;;
                                  -73588;1;0;false;false;;;;;;
                                  -73589;6;0;false;false;0;0;0;;;
                                  -73595;3;0;false;false;;;;;;
                                  -73598;1;0;false;false;0;0;0;;;
                                  -73599;4;0;false;false;;;;;;
                                  -73603;4;1;false;false;127;0;85;;;
                                  -73607;1;0;false;false;;;;;;
                                  -73608;1;0;false;false;0;0;0;;;
                                  -73609;4;0;false;false;;;;;;
                                  -73613;6;0;false;false;0;0;0;;;
                                  -73619;1;0;false;false;;;;;;
                                  -73620;1;0;false;false;0;0;0;;;
                                  -73621;1;0;false;false;;;;;;
                                  -73622;5;0;false;false;0;0;0;;;
                                  -73627;1;0;false;false;;;;;;
                                  -73628;1;0;false;false;0;0;0;;;
                                  -73629;1;0;false;false;;;;;;
                                  -73630;10;0;false;false;0;0;0;;;
                                  -73640;1;0;false;false;;;;;;
                                  -73641;1;0;false;false;0;0;0;;;
                                  -73642;1;0;false;false;;;;;;
                                  -73643;9;0;false;false;0;0;0;;;
                                  -73652;1;0;false;false;;;;;;
                                  -73653;1;0;false;false;0;0;0;;;
                                  -73654;1;0;false;false;;;;;;
                                  -73655;13;0;false;false;0;0;0;;;
                                  -73668;3;0;false;false;;;;;;
                                  -73671;1;0;false;false;0;0;0;;;
                                  -73672;3;0;false;false;;;;;;
                                  -73675;46;0;false;false;63;127;95;;;
                                  -73721;1;0;false;false;;;;;;
                                  -73722;2;1;false;false;127;0;85;;;
                                  -73724;1;0;false;false;;;;;;
                                  -73725;6;0;false;false;0;0;0;;;
                                  -73731;1;0;false;false;;;;;;
                                  -73732;2;0;false;false;0;0;0;;;
                                  -73734;1;0;false;false;;;;;;
                                  -73735;2;0;false;false;0;0;0;;;
                                  -73737;1;0;false;false;;;;;;
                                  -73738;1;0;false;false;0;0;0;;;
                                  -73739;4;0;false;false;;;;;;
                                  -73743;5;0;false;false;0;0;0;;;
                                  -73748;1;0;false;false;;;;;;
                                  -73749;1;0;false;false;0;0;0;;;
                                  -73750;1;0;false;false;;;;;;
                                  -73751;14;0;false;false;0;0;0;;;
                                  -73765;3;0;false;false;;;;;;
                                  -73768;1;0;false;false;0;0;0;;;
                                  -73769;3;0;false;false;;;;;;
                                  -73772;2;1;false;false;127;0;85;;;
                                  -73774;1;0;false;false;;;;;;
                                  -73775;7;0;false;false;0;0;0;;;
                                  -73782;1;0;false;false;;;;;;
                                  -73783;2;0;false;false;0;0;0;;;
                                  -73785;1;0;false;false;;;;;;
                                  -73786;2;0;false;false;0;0;0;;;
                                  -73788;1;0;false;false;;;;;;
                                  -73789;1;0;false;false;0;0;0;;;
                                  -73790;4;0;false;false;;;;;;
                                  -73794;2;1;false;false;127;0;85;;;
                                  -73796;1;0;false;false;;;;;;
                                  -73797;12;0;false;false;0;0;0;;;
                                  -73809;1;0;false;false;;;;;;
                                  -73810;1;0;false;false;0;0;0;;;
                                  -73811;5;0;false;false;;;;;;
                                  -73816;6;0;false;false;0;0;0;;;
                                  -73822;1;0;false;false;;;;;;
                                  -73823;1;0;false;false;0;0;0;;;
                                  -73824;1;0;false;false;;;;;;
                                  -73825;11;0;false;false;0;0;0;;;
                                  -73836;4;0;false;false;;;;;;
                                  -73840;1;0;false;false;0;0;0;;;
                                  -73841;4;0;false;false;;;;;;
                                  -73845;4;1;false;false;127;0;85;;;
                                  -73849;1;0;false;false;;;;;;
                                  -73850;1;0;false;false;0;0;0;;;
                                  -73851;5;0;false;false;;;;;;
                                  -73856;6;0;false;false;0;0;0;;;
                                  -73862;1;0;false;false;;;;;;
                                  -73863;1;0;false;false;0;0;0;;;
                                  -73864;1;0;false;false;;;;;;
                                  -73865;15;0;false;false;0;0;0;;;
                                  -73880;4;0;false;false;;;;;;
                                  -73884;1;0;false;false;0;0;0;;;
                                  -73885;3;0;false;false;;;;;;
                                  -73888;1;0;false;false;0;0;0;;;
                                  -73889;3;0;false;false;;;;;;
                                  -73892;9;0;false;false;0;0;0;;;
                                  -73901;1;0;false;false;;;;;;
                                  -73902;4;0;false;false;0;0;0;;;
                                  -73906;1;0;false;false;;;;;;
                                  -73907;1;0;false;false;0;0;0;;;
                                  -73908;1;0;false;false;;;;;;
                                  -73909;14;0;false;false;0;0;0;;;
                                  -73923;1;0;false;false;;;;;;
                                  -73924;2;0;false;false;0;0;0;;;
                                  -73926;1;0;false;false;;;;;;
                                  -73927;6;0;false;false;0;0;0;;;
                                  -73933;1;0;false;false;;;;;;
                                  -73934;8;0;false;false;0;0;0;;;
                                  -73942;3;0;false;false;;;;;;
                                  -73945;6;1;false;false;127;0;85;;;
                                  -73951;1;0;false;false;;;;;;
                                  -73952;3;1;false;false;127;0;85;;;
                                  -73955;1;0;false;false;;;;;;
                                  -73956;5;0;false;false;0;0;0;;;
                                  -73961;1;0;false;false;;;;;;
                                  -73962;12;0;false;false;0;0;0;;;
                                  -73974;1;0;false;false;;;;;;
                                  -73975;13;0;false;false;0;0;0;;;
                                  -73988;2;0;false;false;;;;;;
                                  -73990;1;0;false;false;0;0;0;;;
                                  -73991;2;0;false;false;;;;;;
                                  -73993;3;0;false;false;63;95;191;;;
                                  -73996;3;0;false;false;;;;;;
                                  -73999;1;0;false;false;63;95;191;;;
                                  -74000;1;0;false;false;;;;;;
                                  -74001;6;0;false;false;63;95;191;;;
                                  -74007;1;0;false;false;;;;;;
                                  -74008;3;0;false;false;63;95;191;;;
                                  -74011;1;0;false;false;;;;;;
                                  -74012;8;0;false;false;63;95;191;;;
                                  -74020;1;0;false;false;;;;;;
                                  -74021;4;0;false;false;63;95;191;;;
                                  -74025;1;0;false;false;;;;;;
                                  -74026;2;0;false;false;63;95;191;;;
                                  -74028;1;0;false;false;;;;;;
                                  -74029;3;0;false;false;63;95;191;;;
                                  -74032;1;0;false;false;;;;;;
                                  -74033;6;0;false;false;127;127;159;;;
                                  -74039;13;0;false;false;63;95;191;;;
                                  -74052;7;0;false;false;127;127;159;;;
                                  -74059;1;0;false;false;;;;;;
                                  -74060;10;0;false;false;63;95;191;;;
                                  -74070;3;0;false;false;;;;;;
                                  -74073;1;0;false;false;63;95;191;;;
                                  -74074;1;0;false;false;;;;;;
                                  -74075;3;0;false;false;63;95;191;;;
                                  -74078;1;0;false;false;;;;;;
                                  -74079;4;0;false;false;63;95;191;;;
                                  -74083;1;0;false;false;;;;;;
                                  -74084;4;0;false;false;63;95;191;;;
                                  -74088;1;0;false;false;;;;;;
                                  -74089;2;0;false;false;63;95;191;;;
                                  -74091;1;0;false;false;;;;;;
                                  -74092;3;0;false;false;63;95;191;;;
                                  -74095;1;0;false;false;;;;;;
                                  -74096;2;0;false;false;63;95;191;;;
                                  -74098;1;0;false;false;;;;;;
                                  -74099;3;0;false;false;63;95;191;;;
                                  -74102;1;0;false;false;;;;;;
                                  -74103;9;0;false;false;63;95;191;;;
                                  -74112;1;0;false;false;;;;;;
                                  -74113;2;0;false;false;63;95;191;;;
                                  -74115;1;0;false;false;;;;;;
                                  -74116;5;0;false;false;63;95;191;;;
                                  -74121;1;0;false;false;;;;;;
                                  -74122;4;0;false;false;63;95;191;;;
                                  -74126;1;0;false;false;;;;;;
                                  -74127;6;0;false;false;63;95;191;;;
                                  -74133;1;0;false;false;;;;;;
                                  -74134;3;0;false;false;63;95;191;;;
                                  -74137;1;0;false;false;;;;;;
                                  -74138;3;0;false;false;63;95;191;;;
                                  -74141;1;0;false;false;;;;;;
                                  -74142;7;0;false;false;63;95;191;;;
                                  -74149;3;0;false;false;;;;;;
                                  -74152;1;0;false;false;63;95;191;;;
                                  -74153;1;0;false;false;;;;;;
                                  -74154;3;0;false;false;63;95;191;;;
                                  -74157;1;0;false;false;;;;;;
                                  -74158;6;0;false;false;127;127;159;;;
                                  -74164;13;0;false;false;63;95;191;;;
                                  -74177;7;0;false;false;127;127;159;;;
                                  -74184;1;0;false;false;;;;;;
                                  -74185;9;0;false;false;63;95;191;;;
                                  -74194;1;0;false;false;;;;;;
                                  -74195;2;0;false;false;63;95;191;;;
                                  -74197;1;0;false;false;;;;;;
                                  -74198;4;0;false;false;63;95;191;;;
                                  -74202;1;0;false;false;;;;;;
                                  -74203;3;0;false;false;63;95;191;;;
                                  -74206;1;0;false;false;;;;;;
                                  -74207;4;0;false;false;63;95;191;;;
                                  -74211;1;0;false;false;;;;;;
                                  -74212;4;0;false;false;63;95;191;;;
                                  -74216;1;0;false;false;;;;;;
                                  -74217;2;0;false;false;63;95;191;;;
                                  -74219;3;0;false;false;;;;;;
                                  -74222;1;0;false;false;63;95;191;;;
                                  -74223;2;0;false;false;;;;;;
                                  -74225;11;0;false;false;63;95;191;;;
                                  -74236;1;0;false;false;;;;;;
                                  -74237;2;0;false;false;63;95;191;;;
                                  -74239;1;0;false;false;;;;;;
                                  -74240;8;0;false;false;63;95;191;;;
                                  -74248;1;0;false;false;;;;;;
                                  -74249;11;0;false;false;63;95;191;;;
                                  -74260;1;0;false;false;;;;;;
                                  -74261;5;0;false;false;63;95;191;;;
                                  -74266;1;0;false;false;;;;;;
                                  -74267;2;0;false;false;63;95;191;;;
                                  -74269;1;0;false;false;;;;;;
                                  -74270;14;0;false;false;63;95;191;;;
                                  -74284;1;0;false;false;;;;;;
                                  -74285;2;0;false;false;63;95;191;;;
                                  -74287;4;0;false;false;;;;;;
                                  -74291;1;0;false;false;63;95;191;;;
                                  -74292;2;0;false;false;;;;;;
                                  -74294;2;0;false;false;63;95;191;;;
                                  -74296;1;0;false;false;;;;;;
                                  -74297;4;0;false;false;63;95;191;;;
                                  -74301;1;0;false;false;;;;;;
                                  -74302;7;0;false;false;63;95;191;;;
                                  -74309;3;0;false;false;;;;;;
                                  -74312;1;0;false;false;63;95;191;;;
                                  -74313;4;0;false;false;;;;;;
                                  -74317;1;0;false;false;63;95;191;;;
                                  -74318;1;0;false;false;;;;;;
                                  -74319;3;0;false;false;127;127;159;;;
                                  -74322;3;0;false;false;;;;;;
                                  -74325;1;0;false;false;63;95;191;;;
                                  -74326;3;0;false;false;;;;;;
                                  -74329;1;0;false;false;63;95;191;;;
                                  -74330;1;0;false;false;;;;;;
                                  -74331;11;1;false;false;127;159;191;;;
                                  -74342;12;0;false;false;63;95;191;;;
                                  -74354;1;0;false;false;;;;;;
                                  -74355;4;0;false;false;127;127;159;;;
                                  -74359;3;0;false;false;;;;;;
                                  -74362;1;0;false;false;63;95;191;;;
                                  -74363;4;0;false;false;;;;;;
                                  -74367;4;0;false;false;127;127;159;;;
                                  -74371;21;0;false;false;63;95;191;;;
                                  -74392;1;0;false;false;;;;;;
                                  -74393;1;0;false;false;127;127;159;;;
                                  -74394;1;0;false;false;;;;;;
                                  -74395;2;0;false;false;63;95;191;;;
                                  -74397;1;0;false;false;;;;;;
                                  -74398;3;0;false;false;63;95;191;;;
                                  -74401;1;0;false;false;;;;;;
                                  -74402;8;0;false;false;63;95;191;;;
                                  -74410;1;0;false;false;;;;;;
                                  -74411;3;0;false;false;63;95;191;;;
                                  -74414;1;0;false;false;;;;;;
                                  -74415;4;0;false;false;63;95;191;;;
                                  -74419;1;0;false;false;;;;;;
                                  -74420;8;0;false;false;63;95;191;;;
                                  -74428;5;0;false;false;127;127;159;;;
                                  -74433;3;0;false;false;;;;;;
                                  -74436;1;0;false;false;63;95;191;;;
                                  -74437;4;0;false;false;;;;;;
                                  -74441;4;0;false;false;127;127;159;;;
                                  -74445;27;0;false;false;63;95;191;;;
                                  -74472;1;0;false;false;;;;;;
                                  -74473;1;0;false;false;127;127;159;;;
                                  -74474;1;0;false;false;;;;;;
                                  -74475;2;0;false;false;63;95;191;;;
                                  -74477;1;0;false;false;;;;;;
                                  -74478;3;0;false;false;63;95;191;;;
                                  -74481;1;0;false;false;;;;;;
                                  -74482;6;0;false;false;63;95;191;;;
                                  -74488;1;0;false;false;;;;;;
                                  -74489;4;0;false;false;63;95;191;;;
                                  -74493;1;0;false;false;;;;;;
                                  -74494;3;0;false;false;63;95;191;;;
                                  -74497;1;0;false;false;;;;;;
                                  -74498;6;0;false;false;63;95;191;;;
                                  -74504;1;0;false;false;;;;;;
                                  -74505;4;0;false;false;63;95;191;;;
                                  -74509;1;0;false;false;;;;;;
                                  -74510;7;0;false;false;63;95;191;;;
                                  -74517;1;0;false;false;;;;;;
                                  -74518;3;0;false;false;63;95;191;;;
                                  -74521;1;0;false;false;;;;;;
                                  -74522;8;0;false;false;63;95;191;;;
                                  -74530;5;0;false;false;127;127;159;;;
                                  -74535;3;0;false;false;;;;;;
                                  -74538;1;0;false;false;63;95;191;;;
                                  -74539;1;0;false;false;;;;;;
                                  -74540;5;0;false;false;127;127;159;;;
                                  -74545;3;0;false;false;;;;;;
                                  -74548;2;0;false;false;63;95;191;;;
                                  -74550;2;0;false;false;;;;;;
                                  -74552;6;1;false;false;127;0;85;;;
                                  -74558;1;0;false;false;;;;;;
                                  -74559;4;1;false;false;127;0;85;;;
                                  -74563;1;0;false;false;;;;;;
                                  -74564;6;0;false;false;0;0;0;;;
                                  -74570;1;0;false;false;;;;;;
                                  -74571;1;0;false;false;0;0;0;;;
                                  -74572;3;0;false;false;;;;;;
                                  -74575;14;0;false;false;0;0;0;;;
                                  -74589;3;0;false;false;;;;;;
                                  -74592;20;0;false;false;0;0;0;;;
                                  -74612;2;0;false;false;;;;;;
                                  -74614;1;0;false;false;0;0;0;;;
                                  -74615;4;0;false;false;;;;;;
                                  -74619;3;0;false;false;63;95;191;;;
                                  -74622;3;0;false;false;;;;;;
                                  -74625;1;0;false;false;63;95;191;;;
                                  -74626;1;0;false;false;;;;;;
                                  -74627;6;0;false;false;63;95;191;;;
                                  -74633;1;0;false;false;;;;;;
                                  -74634;3;0;false;false;63;95;191;;;
                                  -74637;1;0;false;false;;;;;;
                                  -74638;8;0;false;false;63;95;191;;;
                                  -74646;1;0;false;false;;;;;;
                                  -74647;4;0;false;false;63;95;191;;;
                                  -74651;1;0;false;false;;;;;;
                                  -74652;2;0;false;false;63;95;191;;;
                                  -74654;1;0;false;false;;;;;;
                                  -74655;3;0;false;false;63;95;191;;;
                                  -74658;1;0;false;false;;;;;;
                                  -74659;9;0;false;false;63;95;191;;;
                                  -74668;1;0;false;false;;;;;;
                                  -74669;10;0;false;false;63;95;191;;;
                                  -74679;2;0;false;false;;;;;;
                                  -74681;3;0;false;false;63;95;191;;;
                                  -74684;1;0;false;false;;;;;;
                                  -74685;4;0;false;false;63;95;191;;;
                                  -74689;1;0;false;false;;;;;;
                                  -74690;4;0;false;false;63;95;191;;;
                                  -74694;1;0;false;false;;;;;;
                                  -74695;2;0;false;false;63;95;191;;;
                                  -74697;1;0;false;false;;;;;;
                                  -74698;3;0;false;false;63;95;191;;;
                                  -74701;1;0;false;false;;;;;;
                                  -74702;2;0;false;false;63;95;191;;;
                                  -74704;1;0;false;false;;;;;;
                                  -74705;3;0;false;false;63;95;191;;;
                                  -74708;4;0;false;false;;;;;;
                                  -74712;1;0;false;false;63;95;191;;;
                                  -74713;1;0;false;false;;;;;;
                                  -74714;9;0;false;false;63;95;191;;;
                                  -74723;1;0;false;false;;;;;;
                                  -74724;2;0;false;false;63;95;191;;;
                                  -74726;1;0;false;false;;;;;;
                                  -74727;5;0;false;false;63;95;191;;;
                                  -74732;1;0;false;false;;;;;;
                                  -74733;4;0;false;false;63;95;191;;;
                                  -74737;1;0;false;false;;;;;;
                                  -74738;6;0;false;false;63;95;191;;;
                                  -74744;1;0;false;false;;;;;;
                                  -74745;3;0;false;false;63;95;191;;;
                                  -74748;1;0;false;false;;;;;;
                                  -74749;3;0;false;false;63;95;191;;;
                                  -74752;1;0;false;false;;;;;;
                                  -74753;7;0;false;false;63;95;191;;;
                                  -74760;3;0;false;false;;;;;;
                                  -74763;1;0;false;false;63;95;191;;;
                                  -74764;4;0;false;false;;;;;;
                                  -74768;1;0;false;false;63;95;191;;;
                                  -74769;1;0;false;false;;;;;;
                                  -74770;3;0;false;false;127;127;159;;;
                                  -74773;3;0;false;false;63;95;191;;;
                                  -74776;1;0;false;false;;;;;;
                                  -74777;13;0;false;false;63;95;191;;;
                                  -74790;1;0;false;false;;;;;;
                                  -74791;2;0;false;false;63;95;191;;;
                                  -74793;2;0;false;false;;;;;;
                                  -74795;3;0;false;false;63;95;191;;;
                                  -74798;1;0;false;false;;;;;;
                                  -74799;2;0;false;false;63;95;191;;;
                                  -74801;1;0;false;false;;;;;;
                                  -74802;3;0;false;false;63;95;191;;;
                                  -74805;1;0;false;false;;;;;;
                                  -74806;9;0;false;false;63;95;191;;;
                                  -74815;1;0;false;false;;;;;;
                                  -74816;9;0;false;false;63;95;191;;;
                                  -74825;1;0;false;false;;;;;;
                                  -74826;7;0;false;false;63;95;191;;;
                                  -74833;1;0;false;false;;;;;;
                                  -74834;2;0;false;false;63;95;191;;;
                                  -74836;1;0;false;false;;;;;;
                                  -74837;5;0;false;false;63;95;191;;;
                                  -74842;4;0;false;false;;;;;;
                                  -74846;1;0;false;false;63;95;191;;;
                                  -74847;1;0;false;false;;;;;;
                                  -74848;6;0;false;false;127;127;159;;;
                                  -74854;3;0;false;false;63;95;191;;;
                                  -74857;7;0;false;false;127;127;159;;;
                                  -74864;1;0;false;false;63;95;191;;;
                                  -74865;2;0;false;false;;;;;;
                                  -74867;3;0;false;false;63;95;191;;;
                                  -74870;1;0;false;false;;;;;;
                                  -74871;6;0;false;false;127;127;159;;;
                                  -74877;13;0;false;false;63;95;191;;;
                                  -74890;7;0;false;false;127;127;159;;;
                                  -74897;2;0;false;false;;;;;;
                                  -74899;9;0;false;false;63;95;191;;;
                                  -74908;1;0;false;false;;;;;;
                                  -74909;2;0;false;false;63;95;191;;;
                                  -74911;4;0;false;false;;;;;;
                                  -74915;1;0;false;false;63;95;191;;;
                                  -74916;1;0;false;false;;;;;;
                                  -74917;4;0;false;false;63;95;191;;;
                                  -74921;1;0;false;false;;;;;;
                                  -74922;3;0;false;false;63;95;191;;;
                                  -74925;1;0;false;false;;;;;;
                                  -74926;4;0;false;false;63;95;191;;;
                                  -74930;1;0;false;false;;;;;;
                                  -74931;4;0;false;false;63;95;191;;;
                                  -74935;1;0;false;false;;;;;;
                                  -74936;2;0;false;false;63;95;191;;;
                                  -74938;1;0;false;false;;;;;;
                                  -74939;11;0;false;false;63;95;191;;;
                                  -74950;1;0;false;false;;;;;;
                                  -74951;2;0;false;false;63;95;191;;;
                                  -74953;1;0;false;false;;;;;;
                                  -74954;8;0;false;false;63;95;191;;;
                                  -74962;1;0;false;false;;;;;;
                                  -74963;11;0;false;false;63;95;191;;;
                                  -74974;1;0;false;false;;;;;;
                                  -74975;5;0;false;false;63;95;191;;;
                                  -74980;1;0;false;false;;;;;;
                                  -74981;2;0;false;false;63;95;191;;;
                                  -74983;1;0;false;false;;;;;;
                                  -74984;14;0;false;false;63;95;191;;;
                                  -74998;4;0;false;false;;;;;;
                                  -75002;1;0;false;false;63;95;191;;;
                                  -75003;1;0;false;false;;;;;;
                                  -75004;2;0;false;false;63;95;191;;;
                                  -75006;1;0;false;false;;;;;;
                                  -75007;2;0;false;false;63;95;191;;;
                                  -75009;1;0;false;false;;;;;;
                                  -75010;4;0;false;false;63;95;191;;;
                                  -75014;1;0;false;false;;;;;;
                                  -75015;7;0;false;false;63;95;191;;;
                                  -75022;2;0;false;false;;;;;;
                                  -75024;3;0;false;false;63;95;191;;;
                                  -75027;1;0;false;false;;;;;;
                                  -75028;6;0;false;false;127;127;159;;;
                                  -75034;23;0;false;false;63;95;191;;;
                                  -75057;7;0;false;false;127;127;159;;;
                                  -75064;4;0;false;false;;;;;;
                                  -75068;1;0;false;false;63;95;191;;;
                                  -75069;1;0;false;false;;;;;;
                                  -75070;9;0;false;false;63;95;191;;;
                                  -75079;1;0;false;false;;;;;;
                                  -75080;2;0;false;false;63;95;191;;;
                                  -75082;1;0;false;false;;;;;;
                                  -75083;4;0;false;false;63;95;191;;;
                                  -75087;1;0;false;false;;;;;;
                                  -75088;3;0;false;false;63;95;191;;;
                                  -75091;1;0;false;false;;;;;;
                                  -75092;4;0;false;false;63;95;191;;;
                                  -75096;1;0;false;false;;;;;;
                                  -75097;4;0;false;false;63;95;191;;;
                                  -75101;1;0;false;false;;;;;;
                                  -75102;2;0;false;false;63;95;191;;;
                                  -75104;1;0;false;false;;;;;;
                                  -75105;11;0;false;false;63;95;191;;;
                                  -75116;1;0;false;false;;;;;;
                                  -75117;2;0;false;false;63;95;191;;;
                                  -75119;1;0;false;false;;;;;;
                                  -75120;9;0;false;false;63;95;191;;;
                                  -75129;1;0;false;false;;;;;;
                                  -75130;4;0;false;false;63;95;191;;;
                                  -75134;1;0;false;false;;;;;;
                                  -75135;3;0;false;false;63;95;191;;;
                                  -75138;1;0;false;false;;;;;;
                                  -75139;7;0;false;false;63;95;191;;;
                                  -75146;4;0;false;false;;;;;;
                                  -75150;1;0;false;false;63;95;191;;;
                                  -75151;1;0;false;false;;;;;;
                                  -75152;4;0;false;false;63;95;191;;;
                                  -75156;1;0;false;false;;;;;;
                                  -75157;3;0;false;false;63;95;191;;;
                                  -75160;1;0;false;false;;;;;;
                                  -75161;6;0;false;false;63;95;191;;;
                                  -75167;1;0;false;false;;;;;;
                                  -75168;5;0;false;false;63;95;191;;;
                                  -75173;1;0;false;false;;;;;;
                                  -75174;7;0;false;false;63;95;191;;;
                                  -75181;4;0;false;false;127;127;159;;;
                                  -75185;3;0;false;false;;;;;;
                                  -75188;1;0;false;false;63;95;191;;;
                                  -75189;4;0;false;false;;;;;;
                                  -75193;1;0;false;false;63;95;191;;;
                                  -75194;1;0;false;false;;;;;;
                                  -75195;7;1;false;false;127;159;191;;;
                                  -75202;13;0;false;false;63;95;191;;;
                                  -75215;1;0;false;false;;;;;;
                                  -75216;9;0;false;false;63;95;191;;;
                                  -75225;1;0;false;false;;;;;;
                                  -75226;3;0;false;false;63;95;191;;;
                                  -75229;1;0;false;false;;;;;;
                                  -75230;4;0;false;false;63;95;191;;;
                                  -75234;1;0;false;false;;;;;;
                                  -75235;2;0;false;false;63;95;191;;;
                                  -75237;1;0;false;false;;;;;;
                                  -75238;9;0;false;false;63;95;191;;;
                                  -75247;3;0;false;false;;;;;;
                                  -75250;1;0;false;false;63;95;191;;;
                                  -75251;3;0;false;false;;;;;;
                                  -75254;1;0;false;false;63;95;191;;;
                                  -75255;1;0;false;false;;;;;;
                                  -75256;11;1;false;false;127;159;191;;;
                                  -75267;12;0;false;false;63;95;191;;;
                                  -75279;1;0;false;false;;;;;;
                                  -75280;4;0;false;false;127;127;159;;;
                                  -75284;3;0;false;false;;;;;;
                                  -75287;1;0;false;false;63;95;191;;;
                                  -75288;4;0;false;false;;;;;;
                                  -75292;4;0;false;false;127;127;159;;;
                                  -75296;21;0;false;false;63;95;191;;;
                                  -75317;1;0;false;false;;;;;;
                                  -75318;1;0;false;false;127;127;159;;;
                                  -75319;1;0;false;false;;;;;;
                                  -75320;2;0;false;false;63;95;191;;;
                                  -75322;1;0;false;false;;;;;;
                                  -75323;3;0;false;false;63;95;191;;;
                                  -75326;1;0;false;false;;;;;;
                                  -75327;8;0;false;false;63;95;191;;;
                                  -75335;1;0;false;false;;;;;;
                                  -75336;3;0;false;false;63;95;191;;;
                                  -75339;1;0;false;false;;;;;;
                                  -75340;4;0;false;false;63;95;191;;;
                                  -75344;1;0;false;false;;;;;;
                                  -75345;8;0;false;false;63;95;191;;;
                                  -75353;5;0;false;false;127;127;159;;;
                                  -75358;3;0;false;false;;;;;;
                                  -75361;1;0;false;false;63;95;191;;;
                                  -75362;4;0;false;false;;;;;;
                                  -75366;4;0;false;false;127;127;159;;;
                                  -75370;27;0;false;false;63;95;191;;;
                                  -75397;1;0;false;false;;;;;;
                                  -75398;1;0;false;false;127;127;159;;;
                                  -75399;1;0;false;false;;;;;;
                                  -75400;2;0;false;false;63;95;191;;;
                                  -75402;1;0;false;false;;;;;;
                                  -75403;3;0;false;false;63;95;191;;;
                                  -75406;1;0;false;false;;;;;;
                                  -75407;6;0;false;false;63;95;191;;;
                                  -75413;1;0;false;false;;;;;;
                                  -75414;4;0;false;false;63;95;191;;;
                                  -75418;1;0;false;false;;;;;;
                                  -75419;3;0;false;false;63;95;191;;;
                                  -75422;1;0;false;false;;;;;;
                                  -75423;6;0;false;false;63;95;191;;;
                                  -75429;1;0;false;false;;;;;;
                                  -75430;4;0;false;false;63;95;191;;;
                                  -75434;1;0;false;false;;;;;;
                                  -75435;7;0;false;false;63;95;191;;;
                                  -75442;1;0;false;false;;;;;;
                                  -75443;3;0;false;false;63;95;191;;;
                                  -75446;1;0;false;false;;;;;;
                                  -75447;8;0;false;false;63;95;191;;;
                                  -75455;5;0;false;false;127;127;159;;;
                                  -75460;3;0;false;false;;;;;;
                                  -75463;1;0;false;false;63;95;191;;;
                                  -75464;1;0;false;false;;;;;;
                                  -75465;5;0;false;false;127;127;159;;;
                                  -75470;3;0;false;false;;;;;;
                                  -75473;1;0;false;false;63;95;191;;;
                                  -75474;4;0;false;false;;;;;;
                                  -75478;1;0;false;false;63;95;191;;;
                                  -75479;1;0;false;false;;;;;;
                                  -75480;7;1;false;false;127;159;191;;;
                                  -75487;3;0;false;false;63;95;191;;;
                                  -75490;3;0;false;false;;;;;;
                                  -75493;2;0;false;false;63;95;191;;;
                                  -75495;2;0;false;false;;;;;;
                                  -75497;6;1;false;false;127;0;85;;;
                                  -75503;1;0;false;false;;;;;;
                                  -75504;4;1;false;false;127;0;85;;;
                                  -75508;1;0;false;false;;;;;;
                                  -75509;5;0;false;false;0;0;0;;;
                                  -75514;3;1;false;false;127;0;85;;;
                                  -75517;1;0;false;false;;;;;;
                                  -75518;14;0;false;false;0;0;0;;;
                                  -75532;1;0;false;false;;;;;;
                                  -75533;1;0;false;false;0;0;0;;;
                                  -75534;3;0;false;false;;;;;;
                                  -75537;14;0;false;false;0;0;0;;;
                                  -75551;3;0;false;false;;;;;;
                                  -75554;2;1;false;false;127;0;85;;;
                                  -75556;1;0;false;false;;;;;;
                                  -75557;14;0;false;false;0;0;0;;;
                                  -75571;1;0;false;false;;;;;;
                                  -75572;2;0;false;false;0;0;0;;;
                                  -75574;1;0;false;false;;;;;;
                                  -75575;13;0;false;false;0;0;0;;;
                                  -75588;1;0;false;false;;;;;;
                                  -75589;2;0;false;false;0;0;0;;;
                                  -75591;6;0;false;false;;;;;;
                                  -75597;13;0;false;false;0;0;0;;;
                                  -75610;1;0;false;false;;;;;;
                                  -75611;2;0;false;false;0;0;0;;;
                                  -75613;1;0;false;false;;;;;;
                                  -75614;24;0;false;false;0;0;0;;;
                                  -75638;1;0;false;false;;;;;;
                                  -75639;6;1;false;false;127;0;85;;;
                                  -75645;1;0;false;false;0;0;0;;;
                                  -75646;3;0;false;false;;;;;;
                                  -75649;3;1;false;false;127;0;85;;;
                                  -75652;1;0;false;false;;;;;;
                                  -75653;6;0;false;false;0;0;0;;;
                                  -75659;1;0;false;false;;;;;;
                                  -75660;1;0;false;false;0;0;0;;;
                                  -75661;1;0;false;false;;;;;;
                                  -75662;11;0;false;false;0;0;0;;;
                                  -75673;1;0;false;false;;;;;;
                                  -75674;1;0;false;false;0;0;0;;;
                                  -75675;1;0;false;false;;;;;;
                                  -75676;12;0;false;false;0;0;0;;;
                                  -75688;3;0;false;false;;;;;;
                                  -75691;2;1;false;false;127;0;85;;;
                                  -75693;1;0;false;false;;;;;;
                                  -75694;7;0;false;false;0;0;0;;;
                                  -75701;1;0;false;false;;;;;;
                                  -75702;1;0;false;false;0;0;0;;;
                                  -75703;1;0;false;false;;;;;;
                                  -75704;2;0;false;false;0;0;0;;;
                                  -75706;1;0;false;false;;;;;;
                                  -75707;1;0;false;false;0;0;0;;;
                                  -75708;4;0;false;false;;;;;;
                                  -75712;3;1;false;false;127;0;85;;;
                                  -75715;1;0;false;false;;;;;;
                                  -75716;1;0;false;false;0;0;0;;;
                                  -75717;5;0;false;false;;;;;;
                                  -75722;32;0;false;false;0;0;0;;;
                                  -75754;1;0;false;false;;;;;;
                                  -75755;7;0;false;false;0;0;0;;;
                                  -75762;1;0;false;false;;;;;;
                                  -75763;15;0;false;false;0;0;0;;;
                                  -75778;4;0;false;false;;;;;;
                                  -75782;1;0;false;false;0;0;0;;;
                                  -75783;4;0;false;false;;;;;;
                                  -75787;5;1;false;false;127;0;85;;;
                                  -75792;1;0;false;false;;;;;;
                                  -75793;9;0;false;false;0;0;0;;;
                                  -75802;1;0;false;false;;;;;;
                                  -75803;6;0;false;false;0;0;0;;;
                                  -75809;1;0;false;false;;;;;;
                                  -75810;1;0;false;false;0;0;0;;;
                                  -75811;5;0;false;false;;;;;;
                                  -75816;69;0;false;false;63;127;95;;;
                                  -75885;3;0;false;false;;;;;;
                                  -75888;64;0;false;false;63;127;95;;;
                                  -75952;3;0;false;false;;;;;;
                                  -75955;18;0;false;false;63;127;95;;;
                                  -75973;3;0;false;false;;;;;;
                                  -75976;47;0;false;false;63;127;95;;;
                                  -76023;3;0;false;false;;;;;;
                                  -76026;2;1;false;false;127;0;85;;;
                                  -76028;1;0;false;false;;;;;;
                                  -76029;11;0;false;false;0;0;0;;;
                                  -76040;1;0;false;false;;;;;;
                                  -76041;2;0;false;false;0;0;0;;;
                                  -76043;1;0;false;false;;;;;;
                                  -76044;31;0;false;false;0;0;0;;;
                                  -76075;1;0;false;false;;;;;;
                                  -76076;1;0;false;false;0;0;0;;;
                                  -76077;6;0;false;false;;;;;;
                                  -76083;5;1;false;false;127;0;85;;;
                                  -76088;1;0;false;false;;;;;;
                                  -76089;6;0;false;false;0;0;0;;;
                                  -76095;5;0;false;false;;;;;;
                                  -76100;1;0;false;false;0;0;0;;;
                                  -76101;4;0;false;false;;;;;;
                                  -76105;1;0;false;false;0;0;0;;;
                                  -76106;3;0;false;false;;;;;;
                                  -76109;1;0;false;false;0;0;0;;;
                                  -76110;2;0;false;false;;;;;;
                                  -76112;1;0;false;false;0;0;0;;;
                                  -76113;2;0;false;false;;;;;;
                                  -76115;3;0;false;false;63;95;191;;;
                                  -76118;3;0;false;false;;;;;;
                                  -76121;1;0;false;false;63;95;191;;;
                                  -76122;1;0;false;false;;;;;;
                                  -76123;7;0;false;false;63;95;191;;;
                                  -76130;1;0;false;false;;;;;;
                                  -76131;1;0;false;false;63;95;191;;;
                                  -76132;1;0;false;false;;;;;;
                                  -76133;6;0;false;false;63;95;191;;;
                                  -76139;1;0;false;false;;;;;;
                                  -76140;4;0;false;false;63;95;191;;;
                                  -76144;1;0;false;false;;;;;;
                                  -76145;4;0;false;false;63;95;191;;;
                                  -76149;1;0;false;false;;;;;;
                                  -76150;4;0;false;false;63;95;191;;;
                                  -76154;1;0;false;false;;;;;;
                                  -76155;3;0;false;false;63;95;191;;;
                                  -76158;1;0;false;false;;;;;;
                                  -76159;4;0;false;false;63;95;191;;;
                                  -76163;1;0;false;false;;;;;;
                                  -76164;9;0;false;false;63;95;191;;;
                                  -76173;1;0;false;false;;;;;;
                                  -76174;9;0;false;false;63;95;191;;;
                                  -76183;1;0;false;false;;;;;;
                                  -76184;2;0;false;false;63;95;191;;;
                                  -76186;1;0;false;false;;;;;;
                                  -76187;3;0;false;false;63;95;191;;;
                                  -76190;4;0;false;false;;;;;;
                                  -76194;1;0;false;false;63;95;191;;;
                                  -76195;1;0;false;false;;;;;;
                                  -76196;17;0;false;false;63;95;191;;;
                                  -76213;1;0;false;false;;;;;;
                                  -76214;15;0;false;false;63;95;191;;;
                                  -76229;3;0;false;false;;;;;;
                                  -76232;1;0;false;false;63;95;191;;;
                                  -76233;1;0;false;false;;;;;;
                                  -76234;7;0;false;false;63;95;191;;;
                                  -76241;1;0;false;false;;;;;;
                                  -76242;4;0;false;false;63;95;191;;;
                                  -76246;1;0;false;false;;;;;;
                                  -76247;3;0;false;false;63;95;191;;;
                                  -76250;1;0;false;false;;;;;;
                                  -76251;5;0;false;false;63;95;191;;;
                                  -76256;1;0;false;false;;;;;;
                                  -76257;4;0;false;false;63;95;191;;;
                                  -76261;1;0;false;false;;;;;;
                                  -76262;2;0;false;false;63;95;191;;;
                                  -76264;1;0;false;false;;;;;;
                                  -76265;3;0;false;false;63;95;191;;;
                                  -76268;1;0;false;false;;;;;;
                                  -76269;6;0;false;false;63;95;191;;;
                                  -76275;1;0;false;false;;;;;;
                                  -76276;3;0;false;false;63;95;191;;;
                                  -76279;1;0;false;false;;;;;;
                                  -76280;3;0;false;false;63;95;191;;;
                                  -76283;1;0;false;false;;;;;;
                                  -76284;10;0;false;false;63;95;191;;;
                                  -76294;1;0;false;false;;;;;;
                                  -76295;6;0;false;false;63;95;191;;;
                                  -76301;3;0;false;false;;;;;;
                                  -76304;1;0;false;false;63;95;191;;;
                                  -76305;1;0;false;false;;;;;;
                                  -76306;3;0;false;false;127;127;159;;;
                                  -76309;3;0;false;false;;;;;;
                                  -76312;1;0;false;false;63;95;191;;;
                                  -76313;3;0;false;false;;;;;;
                                  -76316;1;0;false;false;63;95;191;;;
                                  -76317;1;0;false;false;;;;;;
                                  -76318;7;1;false;false;127;159;191;;;
                                  -76325;4;0;false;false;63;95;191;;;
                                  -76329;1;0;false;false;;;;;;
                                  -76330;3;0;false;false;63;95;191;;;
                                  -76333;1;0;false;false;;;;;;
                                  -76334;4;0;false;false;63;95;191;;;
                                  -76338;1;0;false;false;;;;;;
                                  -76339;4;0;false;false;63;95;191;;;
                                  -76343;1;0;false;false;;;;;;
                                  -76344;3;0;false;false;63;95;191;;;
                                  -76347;1;0;false;false;;;;;;
                                  -76348;4;0;false;false;63;95;191;;;
                                  -76352;1;0;false;false;;;;;;
                                  -76353;4;0;false;false;63;95;191;;;
                                  -76357;1;0;false;false;;;;;;
                                  -76358;10;0;false;false;63;95;191;;;
                                  -76368;1;0;false;false;;;;;;
                                  -76369;4;0;false;false;63;95;191;;;
                                  -76373;1;0;false;false;;;;;;
                                  -76374;5;0;false;false;63;95;191;;;
                                  -76379;4;0;false;false;;;;;;
                                  -76383;1;0;false;false;63;95;191;;;
                                  -76384;2;0;false;false;;;;;;
                                  -76386;5;0;false;false;63;95;191;;;
                                  -76391;1;0;false;false;;;;;;
                                  -76392;3;0;false;false;63;95;191;;;
                                  -76395;1;0;false;false;;;;;;
                                  -76396;5;0;false;false;63;95;191;;;
                                  -76401;1;0;false;false;;;;;;
                                  -76402;4;0;false;false;63;95;191;;;
                                  -76406;1;0;false;false;;;;;;
                                  -76407;10;0;false;false;63;95;191;;;
                                  -76417;1;0;false;false;;;;;;
                                  -76418;8;0;false;false;63;95;191;;;
                                  -76426;1;0;false;false;;;;;;
                                  -76427;4;0;false;false;63;95;191;;;
                                  -76431;1;0;false;false;;;;;;
                                  -76432;10;0;false;false;63;95;191;;;
                                  -76442;4;0;false;false;;;;;;
                                  -76446;1;0;false;false;63;95;191;;;
                                  -76447;2;0;false;false;;;;;;
                                  -76449;3;0;false;false;63;95;191;;;
                                  -76452;1;0;false;false;;;;;;
                                  -76453;2;0;false;false;63;95;191;;;
                                  -76455;1;0;false;false;;;;;;
                                  -76456;7;0;false;false;63;95;191;;;
                                  -76463;1;0;false;false;;;;;;
                                  -76464;2;0;false;false;63;95;191;;;
                                  -76466;1;0;false;false;;;;;;
                                  -76467;7;0;false;false;63;95;191;;;
                                  -76474;1;0;false;false;;;;;;
                                  -76475;5;0;false;false;63;95;191;;;
                                  -76480;1;0;false;false;;;;;;
                                  -76481;8;0;false;false;63;95;191;;;
                                  -76489;3;0;false;false;;;;;;
                                  -76492;1;0;false;false;63;95;191;;;
                                  -76493;1;0;false;false;;;;;;
                                  -76494;8;1;false;false;127;159;191;;;
                                  -76502;3;0;false;false;63;95;191;;;
                                  -76505;1;0;false;false;;;;;;
                                  -76506;9;0;false;false;63;95;191;;;
                                  -76515;1;0;false;false;;;;;;
                                  -76516;4;0;false;false;63;95;191;;;
                                  -76520;1;0;false;false;;;;;;
                                  -76521;4;0;false;false;63;95;191;;;
                                  -76525;1;0;false;false;;;;;;
                                  -76526;4;0;false;false;63;95;191;;;
                                  -76530;1;0;false;false;;;;;;
                                  -76531;4;0;false;false;63;95;191;;;
                                  -76535;1;0;false;false;;;;;;
                                  -76536;3;0;false;false;63;95;191;;;
                                  -76539;1;0;false;false;;;;;;
                                  -76540;4;0;false;false;63;95;191;;;
                                  -76544;1;0;false;false;;;;;;
                                  -76545;9;0;false;false;63;95;191;;;
                                  -76554;4;0;false;false;;;;;;
                                  -76558;1;0;false;false;63;95;191;;;
                                  -76559;2;0;false;false;;;;;;
                                  -76561;9;0;false;false;63;95;191;;;
                                  -76570;1;0;false;false;;;;;;
                                  -76571;2;0;false;false;63;95;191;;;
                                  -76573;1;0;false;false;;;;;;
                                  -76574;3;0;false;false;63;95;191;;;
                                  -76577;1;0;false;false;;;;;;
                                  -76578;6;0;false;false;63;95;191;;;
                                  -76584;1;0;false;false;;;;;;
                                  -76585;7;0;false;false;63;95;191;;;
                                  -76592;1;0;false;false;;;;;;
                                  -76593;4;0;false;false;63;95;191;;;
                                  -76597;1;0;false;false;;;;;;
                                  -76598;3;0;false;false;63;95;191;;;
                                  -76601;1;0;false;false;;;;;;
                                  -76602;5;0;false;false;63;95;191;;;
                                  -76607;1;0;false;false;;;;;;
                                  -76608;4;0;false;false;63;95;191;;;
                                  -76612;1;0;false;false;;;;;;
                                  -76613;2;0;false;false;63;95;191;;;
                                  -76615;1;0;false;false;;;;;;
                                  -76616;3;0;false;false;63;95;191;;;
                                  -76619;1;0;false;false;;;;;;
                                  -76620;6;0;false;false;63;95;191;;;
                                  -76626;4;0;false;false;;;;;;
                                  -76630;1;0;false;false;63;95;191;;;
                                  -76631;2;0;false;false;;;;;;
                                  -76633;3;0;false;false;63;95;191;;;
                                  -76636;1;0;false;false;;;;;;
                                  -76637;3;0;false;false;63;95;191;;;
                                  -76640;1;0;false;false;;;;;;
                                  -76641;10;0;false;false;63;95;191;;;
                                  -76651;1;0;false;false;;;;;;
                                  -76652;6;0;false;false;63;95;191;;;
                                  -76658;3;0;false;false;;;;;;
                                  -76661;2;0;false;false;63;95;191;;;
                                  -76663;2;0;false;false;;;;;;
                                  -76665;6;0;false;false;0;0;0;;;
                                  -76671;1;0;false;false;;;;;;
                                  -76672;28;0;false;false;0;0;0;;;
                                  -76700;1;0;false;false;;;;;;
                                  -76701;5;0;false;false;0;0;0;;;
                                  -76706;1;0;false;false;;;;;;
                                  -76707;1;0;false;false;0;0;0;;;
                                  -76708;3;0;false;false;;;;;;
                                  -76711;12;0;false;false;0;0;0;;;
                                  -76723;1;0;false;false;;;;;;
                                  -76724;14;0;false;false;0;0;0;;;
                                  -76738;3;0;false;false;;;;;;
                                  -76741;6;0;false;false;0;0;0;;;
                                  -76747;1;0;false;false;;;;;;
                                  -76748;9;0;false;false;0;0;0;;;
                                  -76757;1;0;false;false;;;;;;
                                  -76758;1;0;false;false;0;0;0;;;
                                  -76759;1;0;false;false;;;;;;
                                  -76760;19;0;false;false;0;0;0;;;
                                  -76779;3;0;false;false;;;;;;
                                  -76782;3;1;false;false;127;0;85;;;
                                  -76785;1;0;false;false;;;;;;
                                  -76786;6;0;false;false;0;0;0;;;
                                  -76792;1;0;false;false;;;;;;
                                  -76793;1;0;false;false;0;0;0;;;
                                  -76794;1;0;false;false;;;;;;
                                  -76795;14;0;false;false;0;0;0;;;
                                  -76809;4;0;false;false;;;;;;
                                  -76813;3;1;false;false;127;0;85;;;
                                  -76816;1;0;false;false;;;;;;
                                  -76817;7;0;false;false;0;0;0;;;
                                  -76824;1;0;false;false;;;;;;
                                  -76825;1;0;false;false;0;0;0;;;
                                  -76826;1;0;false;false;;;;;;
                                  -76827;2;0;false;false;0;0;0;;;
                                  -76829;3;0;false;false;;;;;;
                                  -76832;3;1;false;false;127;0;85;;;
                                  -76835;1;0;false;false;;;;;;
                                  -76836;7;0;false;false;0;0;0;;;
                                  -76843;1;0;false;false;;;;;;
                                  -76844;1;0;false;false;0;0;0;;;
                                  -76845;1;0;false;false;;;;;;
                                  -76846;2;0;false;false;0;0;0;;;
                                  -76848;3;0;false;false;;;;;;
                                  -76851;3;1;false;false;127;0;85;;;
                                  -76854;1;0;false;false;;;;;;
                                  -76855;1;0;false;false;0;0;0;;;
                                  -76856;1;0;false;false;;;;;;
                                  -76857;1;0;false;false;0;0;0;;;
                                  -76858;1;0;false;false;;;;;;
                                  -76859;2;0;false;false;0;0;0;;;
                                  -76861;6;0;false;false;;;;;;
                                  -76867;2;1;false;false;127;0;85;;;
                                  -76869;1;0;false;false;;;;;;
                                  -76870;7;0;false;false;0;0;0;;;
                                  -76877;1;0;false;false;;;;;;
                                  -76878;2;0;false;false;0;0;0;;;
                                  -76880;1;0;false;false;;;;;;
                                  -76881;2;0;false;false;0;0;0;;;
                                  -76883;1;0;false;false;;;;;;
                                  -76884;1;0;false;false;0;0;0;;;
                                  -76885;4;0;false;false;;;;;;
                                  -76889;6;1;false;false;127;0;85;;;
                                  -76895;1;0;false;false;;;;;;
                                  -76896;5;0;false;false;0;0;0;;;
                                  -76901;3;0;false;false;;;;;;
                                  -76904;1;0;false;false;0;0;0;;;
                                  -76905;3;0;false;false;;;;;;
                                  -76908;13;0;false;false;0;0;0;;;
                                  -76921;1;0;false;false;;;;;;
                                  -76922;1;0;false;false;0;0;0;;;
                                  -76923;1;0;false;false;;;;;;
                                  -76924;3;1;false;false;127;0;85;;;
                                  -76927;1;0;false;false;;;;;;
                                  -76928;21;0;false;false;0;0;0;;;
                                  -76949;3;0;false;false;;;;;;
                                  -76952;5;1;false;false;127;0;85;;;
                                  -76957;1;0;false;false;;;;;;
                                  -76958;2;0;false;false;0;0;0;;;
                                  -76960;1;0;false;false;;;;;;
                                  -76961;1;0;false;false;0;0;0;;;
                                  -76962;1;0;false;false;;;;;;
                                  -76963;7;0;false;false;0;0;0;;;
                                  -76970;1;0;false;false;;;;;;
                                  -76971;1;0;false;false;0;0;0;;;
                                  -76972;4;0;false;false;;;;;;
                                  -76976;2;1;false;false;127;0;85;;;
                                  -76978;1;0;false;false;;;;;;
                                  -76979;8;0;false;false;0;0;0;;;
                                  -76987;1;0;false;false;;;;;;
                                  -76988;2;0;false;false;0;0;0;;;
                                  -76990;1;0;false;false;;;;;;
                                  -76991;3;0;false;false;0;0;0;;;
                                  -76994;1;0;false;false;;;;;;
                                  -76995;1;0;false;false;0;0;0;;;
                                  -76996;5;0;false;false;;;;;;
                                  -77001;7;0;false;false;0;0;0;;;
                                  -77008;1;0;false;false;;;;;;
                                  -77009;1;0;false;false;0;0;0;;;
                                  -77010;1;0;false;false;;;;;;
                                  -77011;20;0;false;false;0;0;0;;;
                                  -77031;1;0;false;false;;;;;;
                                  -77032;3;0;false;false;0;0;0;;;
                                  -77035;4;0;false;false;;;;;;
                                  -77039;1;0;false;false;0;0;0;;;
                                  -77040;4;0;false;false;;;;;;
                                  -77044;2;1;false;false;127;0;85;;;
                                  -77046;1;0;false;false;;;;;;
                                  -77047;8;0;false;false;0;0;0;;;
                                  -77055;1;0;false;false;;;;;;
                                  -77056;2;0;false;false;0;0;0;;;
                                  -77058;1;0;false;false;;;;;;
                                  -77059;3;0;false;false;0;0;0;;;
                                  -77062;1;0;false;false;;;;;;
                                  -77063;1;0;false;false;0;0;0;;;
                                  -77064;5;0;false;false;;;;;;
                                  -77069;7;0;false;false;0;0;0;;;
                                  -77076;1;0;false;false;;;;;;
                                  -77077;1;0;false;false;0;0;0;;;
                                  -77078;1;0;false;false;;;;;;
                                  -77079;20;0;false;false;0;0;0;;;
                                  -77099;1;0;false;false;;;;;;
                                  -77100;3;0;false;false;0;0;0;;;
                                  -77103;4;0;false;false;;;;;;
                                  -77107;1;0;false;false;0;0;0;;;
                                  -77108;4;0;false;false;;;;;;
                                  -77112;2;1;false;false;127;0;85;;;
                                  -77114;1;0;false;false;;;;;;
                                  -77115;8;0;false;false;0;0;0;;;
                                  -77123;1;0;false;false;;;;;;
                                  -77124;2;0;false;false;0;0;0;;;
                                  -77126;1;0;false;false;;;;;;
                                  -77127;2;0;false;false;0;0;0;;;
                                  -77129;1;0;false;false;;;;;;
                                  -77130;2;0;false;false;0;0;0;;;
                                  -77132;1;0;false;false;;;;;;
                                  -77133;7;0;false;false;0;0;0;;;
                                  -77140;1;0;false;false;;;;;;
                                  -77141;2;0;false;false;0;0;0;;;
                                  -77143;1;0;false;false;;;;;;
                                  -77144;3;0;false;false;0;0;0;;;
                                  -77147;1;0;false;false;;;;;;
                                  -77148;1;0;false;false;0;0;0;;;
                                  -77149;1;0;false;false;;;;;;
                                  -77150;25;0;false;false;63;127;95;;;
                                  -77175;3;0;false;false;;;;;;
                                  -77178;5;1;false;false;127;0;85;;;
                                  -77183;1;0;false;false;0;0;0;;;
                                  -77184;4;0;false;false;;;;;;
                                  -77188;1;0;false;false;0;0;0;;;
                                  -77189;4;0;false;false;;;;;;
                                  -77193;4;1;false;false;127;0;85;;;
                                  -77197;9;0;false;false;;;;;;
                                  -77206;42;0;false;false;63;127;95;;;
                                  -77248;2;0;false;false;;;;;;
                                  -77250;2;1;false;false;127;0;85;;;
                                  -77252;1;0;false;false;;;;;;
                                  -77253;9;0;false;false;0;0;0;;;
                                  -77262;1;0;false;false;;;;;;
                                  -77263;1;0;false;false;0;0;0;;;
                                  -77264;1;0;false;false;;;;;;
                                  -77265;7;0;false;false;0;0;0;;;
                                  -77272;1;0;false;false;;;;;;
                                  -77273;2;0;false;false;0;0;0;;;
                                  -77275;1;0;false;false;;;;;;
                                  -77276;7;0;false;false;0;0;0;;;
                                  -77283;1;0;false;false;;;;;;
                                  -77284;2;0;false;false;0;0;0;;;
                                  -77286;1;0;false;false;;;;;;
                                  -77287;3;0;false;false;0;0;0;;;
                                  -77290;1;0;false;false;;;;;;
                                  -77291;2;0;false;false;0;0;0;;;
                                  -77293;1;0;false;false;;;;;;
                                  -77294;7;0;false;false;0;0;0;;;
                                  -77301;1;0;false;false;;;;;;
                                  -77302;2;0;false;false;0;0;0;;;
                                  -77304;1;0;false;false;;;;;;
                                  -77305;3;0;false;false;0;0;0;;;
                                  -77308;1;0;false;false;;;;;;
                                  -77309;1;0;false;false;0;0;0;;;
                                  -77310;6;0;false;false;;;;;;
                                  -77316;38;0;false;false;0;0;0;;;
                                  -77354;1;0;false;false;;;;;;
                                  -77355;10;0;false;false;0;0;0;;;
                                  -77365;5;0;false;false;;;;;;
                                  -77370;2;1;false;false;127;0;85;;;
                                  -77372;1;0;false;false;;;;;;
                                  -77373;8;0;false;false;0;0;0;;;
                                  -77381;1;0;false;false;;;;;;
                                  -77382;2;0;false;false;0;0;0;;;
                                  -77384;1;0;false;false;;;;;;
                                  -77385;7;0;false;false;0;0;0;;;
                                  -77392;1;0;false;false;;;;;;
                                  -77393;1;0;false;false;0;0;0;;;
                                  -77394;1;0;false;false;;;;;;
                                  -77395;2;0;false;false;0;0;0;;;
                                  -77397;1;0;false;false;;;;;;
                                  -77398;1;0;false;false;0;0;0;;;
                                  -77399;2;0;false;false;;;;;;
                                  -77401;23;0;false;false;63;127;95;;;
                                  -77424;4;0;false;false;;;;;;
                                  -77428;1;0;false;false;0;0;0;;;
                                  -77429;1;0;false;false;;;;;;
                                  -77430;1;0;false;false;0;0;0;;;
                                  -77431;1;0;false;false;;;;;;
                                  -77432;7;0;false;false;0;0;0;;;
                                  -77439;1;0;false;false;;;;;;
                                  -77440;1;0;false;false;0;0;0;;;
                                  -77441;1;0;false;false;;;;;;
                                  -77442;2;0;false;false;0;0;0;;;
                                  -77444;5;0;false;false;;;;;;
                                  -77449;1;0;false;false;0;0;0;;;
                                  -77450;5;0;false;false;;;;;;
                                  -77455;4;1;false;false;127;0;85;;;
                                  -77459;1;0;false;false;;;;;;
                                  -77460;1;0;false;false;0;0;0;;;
                                  -77461;6;0;false;false;;;;;;
                                  -77467;1;0;false;false;0;0;0;;;
                                  -77468;1;0;false;false;;;;;;
                                  -77469;1;0;false;false;0;0;0;;;
                                  -77470;1;0;false;false;;;;;;
                                  -77471;7;0;false;false;0;0;0;;;
                                  -77478;1;0;false;false;;;;;;
                                  -77479;1;0;false;false;0;0;0;;;
                                  -77480;1;0;false;false;;;;;;
                                  -77481;2;0;false;false;0;0;0;;;
                                  -77483;5;0;false;false;;;;;;
                                  -77488;1;0;false;false;0;0;0;;;
                                  -77489;4;0;false;false;;;;;;
                                  -77493;1;0;false;false;0;0;0;;;
                                  -77494;4;0;false;false;;;;;;
                                  -77498;4;1;false;false;127;0;85;;;
                                  -77502;1;0;false;false;;;;;;
                                  -77503;1;0;false;false;0;0;0;;;
                                  -77504;9;0;false;false;;;;;;
                                  -77513;25;0;false;false;63;127;95;;;
                                  -77538;3;0;false;false;;;;;;
                                  -77541;38;0;false;false;0;0;0;;;
                                  -77579;1;0;false;false;;;;;;
                                  -77580;10;0;false;false;0;0;0;;;
                                  -77590;5;0;false;false;;;;;;
                                  -77595;1;0;false;false;0;0;0;;;
                                  -77596;1;0;false;false;;;;;;
                                  -77597;1;0;false;false;0;0;0;;;
                                  -77598;1;0;false;false;;;;;;
                                  -77599;7;0;false;false;0;0;0;;;
                                  -77606;1;0;false;false;;;;;;
                                  -77607;1;0;false;false;0;0;0;;;
                                  -77608;1;0;false;false;;;;;;
                                  -77609;2;0;false;false;0;0;0;;;
                                  -77611;4;0;false;false;;;;;;
                                  -77615;1;0;false;false;0;0;0;;;
                                  -77616;4;0;false;false;;;;;;
                                  -77620;2;1;false;false;127;0;85;;;
                                  -77622;1;0;false;false;;;;;;
                                  -77623;16;0;false;false;0;0;0;;;
                                  -77639;1;0;false;false;;;;;;
                                  -77640;1;0;false;false;0;0;0;;;
                                  -77641;5;0;false;false;;;;;;
                                  -77646;5;1;false;false;127;0;85;;;
                                  -77651;1;0;false;false;0;0;0;;;
                                  -77652;4;0;false;false;;;;;;
                                  -77656;1;0;false;false;0;0;0;;;
                                  -77657;4;0;false;false;;;;;;
                                  -77661;32;0;false;false;0;0;0;;;
                                  -77693;3;0;false;false;;;;;;
                                  -77696;1;0;false;false;0;0;0;;;
                                  -77697;3;0;false;false;;;;;;
                                  -77700;69;0;false;false;63;127;95;;;
                                  -77769;1;0;false;false;;;;;;
                                  -77770;58;0;false;false;63;127;95;;;
                                  -77828;1;0;false;false;;;;;;
                                  -77829;2;1;false;false;127;0;85;;;
                                  -77831;1;0;false;false;;;;;;
                                  -77832;2;0;false;false;0;0;0;;;
                                  -77834;1;0;false;false;;;;;;
                                  -77835;1;0;false;false;0;0;0;;;
                                  -77836;1;0;false;false;;;;;;
                                  -77837;6;0;false;false;0;0;0;;;
                                  -77843;1;0;false;false;;;;;;
                                  -77844;2;0;false;false;0;0;0;;;
                                  -77846;1;0;false;false;;;;;;
                                  -77847;16;0;false;false;0;0;0;;;
                                  -77863;1;0;false;false;;;;;;
                                  -77864;2;0;false;false;0;0;0;;;
                                  -77866;1;0;false;false;;;;;;
                                  -77867;22;0;false;false;0;0;0;;;
                                  -77889;1;0;false;false;;;;;;
                                  -77890;2;0;false;false;0;0;0;;;
                                  -77892;1;0;false;false;;;;;;
                                  -77893;3;0;false;false;0;0;0;;;
                                  -77896;1;0;false;false;;;;;;
                                  -77897;1;0;false;false;0;0;0;;;
                                  -77898;4;0;false;false;;;;;;
                                  -77902;40;0;false;false;0;0;0;;;
                                  -77942;3;0;false;false;;;;;;
                                  -77945;1;0;false;false;0;0;0;;;
                                  -77946;3;0;false;false;;;;;;
                                  -77949;6;1;false;false;127;0;85;;;
                                  -77955;1;0;false;false;;;;;;
                                  -77956;25;0;false;false;0;0;0;;;
                                  -77981;2;0;false;false;;;;;;
                                  -77983;1;0;false;false;0;0;0;;;
                                  -77984;2;0;false;false;;;;;;
                                  -77986;3;0;false;false;63;95;191;;;
                                  -77989;3;0;false;false;;;;;;
                                  -77992;1;0;false;false;63;95;191;;;
                                  -77993;1;0;false;false;;;;;;
                                  -77994;7;0;false;false;63;95;191;;;
                                  -78001;1;0;false;false;;;;;;
                                  -78002;7;0;false;false;63;95;191;;;
                                  -78009;1;0;false;false;;;;;;
                                  -78010;3;0;false;false;63;95;191;;;
                                  -78013;1;0;false;false;;;;;;
                                  -78014;9;0;false;false;63;95;191;;;
                                  -78023;3;0;false;false;;;;;;
                                  -78026;2;0;false;false;63;95;191;;;
                                  -78028;2;0;false;false;;;;;;
                                  -78030;4;1;false;false;127;0;85;;;
                                  -78034;1;0;false;false;;;;;;
                                  -78035;19;0;false;false;0;0;0;;;
                                  -78054;1;0;false;false;;;;;;
                                  -78055;1;0;false;false;0;0;0;;;
                                  -78056;3;0;false;false;;;;;;
                                  -78059;3;1;false;false;127;0;85;;;
                                  -78062;1;0;false;false;;;;;;
                                  -78063;7;0;false;false;0;0;0;;;
                                  -78070;1;0;false;false;;;;;;
                                  -78071;1;0;false;false;0;0;0;;;
                                  -78072;1;0;false;false;;;;;;
                                  -78073;12;0;false;false;0;0;0;;;
                                  -78085;1;0;false;false;;;;;;
                                  -78086;1;0;false;false;0;0;0;;;
                                  -78087;1;0;false;false;;;;;;
                                  -78088;14;0;false;false;0;0;0;;;
                                  -78102;1;0;false;false;;;;;;
                                  -78103;1;0;false;false;0;0;0;;;
                                  -78104;1;0;false;false;;;;;;
                                  -78105;16;0;false;false;0;0;0;;;
                                  -78121;3;0;false;false;;;;;;
                                  -78124;3;1;false;false;127;0;85;;;
                                  -78127;1;0;false;false;;;;;;
                                  -78128;11;0;false;false;0;0;0;;;
                                  -78139;1;0;false;false;;;;;;
                                  -78140;1;0;false;false;0;0;0;;;
                                  -78141;1;0;false;false;;;;;;
                                  -78142;12;0;false;false;0;0;0;;;
                                  -78154;1;0;false;false;;;;;;
                                  -78155;1;0;false;false;0;0;0;;;
                                  -78156;1;0;false;false;;;;;;
                                  -78157;15;0;false;false;0;0;0;;;
                                  -78172;1;0;false;false;;;;;;
                                  -78173;1;0;false;false;0;0;0;;;
                                  -78174;1;0;false;false;;;;;;
                                  -78175;15;0;false;false;0;0;0;;;
                                  -78190;6;0;false;false;;;;;;
                                  -78196;15;0;false;false;63;127;95;;;
                                  -78211;1;0;false;false;;;;;;
                                  -78212;27;0;false;false;0;0;0;;;
                                  -78239;1;0;false;false;;;;;;
                                  -78240;12;0;false;false;0;0;0;;;
                                  -78252;4;0;false;false;;;;;;
                                  -78256;29;0;false;false;0;0;0;;;
                                  -78285;1;0;false;false;;;;;;
                                  -78286;14;0;false;false;0;0;0;;;
                                  -78300;3;0;false;false;;;;;;
                                  -78303;23;0;false;false;0;0;0;;;
                                  -78326;1;0;false;false;;;;;;
                                  -78327;15;0;false;false;0;0;0;;;
                                  -78342;3;0;false;false;;;;;;
                                  -78345;22;0;false;false;0;0;0;;;
                                  -78367;1;0;false;false;;;;;;
                                  -78368;13;0;false;false;0;0;0;;;
                                  -78381;3;0;false;false;;;;;;
                                  -78384;26;0;false;false;0;0;0;;;
                                  -78410;1;0;false;false;;;;;;
                                  -78411;12;0;false;false;0;0;0;;;
                                  -78423;3;0;false;false;;;;;;
                                  -78426;28;0;false;false;0;0;0;;;
                                  -78454;1;0;false;false;;;;;;
                                  -78455;14;0;false;false;0;0;0;;;
                                  -78469;3;0;false;false;;;;;;
                                  -78472;22;0;false;false;0;0;0;;;
                                  -78494;1;0;false;false;;;;;;
                                  -78495;1;0;false;false;0;0;0;;;
                                  -78496;1;0;false;false;;;;;;
                                  -78497;9;0;false;false;0;0;0;;;
                                  -78506;1;0;false;false;;;;;;
                                  -78507;15;0;false;false;0;0;0;;;
                                  -78522;3;0;false;false;;;;;;
                                  -78525;21;0;false;false;0;0;0;;;
                                  -78546;1;0;false;false;;;;;;
                                  -78547;1;0;false;false;0;0;0;;;
                                  -78548;1;0;false;false;;;;;;
                                  -78549;9;0;false;false;0;0;0;;;
                                  -78558;1;0;false;false;;;;;;
                                  -78559;13;0;false;false;0;0;0;;;
                                  -78572;3;0;false;false;;;;;;
                                  -78575;25;0;false;false;0;0;0;;;
                                  -78600;1;0;false;false;;;;;;
                                  -78601;1;0;false;false;0;0;0;;;
                                  -78602;1;0;false;false;;;;;;
                                  -78603;9;0;false;false;0;0;0;;;
                                  -78612;1;0;false;false;;;;;;
                                  -78613;17;0;false;false;0;0;0;;;
                                  -78630;3;0;false;false;;;;;;
                                  -78633;27;0;false;false;0;0;0;;;
                                  -78660;1;0;false;false;;;;;;
                                  -78661;1;0;false;false;0;0;0;;;
                                  -78662;1;0;false;false;;;;;;
                                  -78663;9;0;false;false;0;0;0;;;
                                  -78672;1;0;false;false;;;;;;
                                  -78673;15;0;false;false;0;0;0;;;
                                  -78688;3;0;false;false;;;;;;
                                  -78691;22;0;false;false;0;0;0;;;
                                  -78713;1;0;false;false;;;;;;
                                  -78714;16;0;false;false;0;0;0;;;
                                  -78730;3;0;false;false;;;;;;
                                  -78733;26;0;false;false;0;0;0;;;
                                  -78759;1;0;false;false;;;;;;
                                  -78760;20;0;false;false;0;0;0;;;
                                  -78780;3;0;false;false;;;;;;
                                  -78783;21;0;false;false;0;0;0;;;
                                  -78804;1;0;false;false;;;;;;
                                  -78805;1;0;false;false;0;0;0;;;
                                  -78806;1;0;false;false;;;;;;
                                  -78807;9;0;false;false;0;0;0;;;
                                  -78816;1;0;false;false;;;;;;
                                  -78817;14;0;false;false;0;0;0;;;
                                  -78831;3;0;false;false;;;;;;
                                  -78834;25;0;false;false;0;0;0;;;
                                  -78859;1;0;false;false;;;;;;
                                  -78860;1;0;false;false;0;0;0;;;
                                  -78861;1;0;false;false;;;;;;
                                  -78862;9;0;false;false;0;0;0;;;
                                  -78871;1;0;false;false;;;;;;
                                  -78872;18;0;false;false;0;0;0;;;
                                  -78890;6;0;false;false;;;;;;
                                  -78896;14;0;false;false;63;127;95;;;
                                  -78910;1;0;false;false;;;;;;
                                  -78911;26;0;false;false;0;0;0;;;
                                  -78937;1;0;false;false;;;;;;
                                  -78938;1;0;false;false;0;0;0;;;
                                  -78939;1;0;false;false;;;;;;
                                  -78940;9;0;false;false;0;0;0;;;
                                  -78949;1;0;false;false;;;;;;
                                  -78950;19;0;false;false;0;0;0;;;
                                  -78969;4;0;false;false;;;;;;
                                  -78973;28;0;false;false;0;0;0;;;
                                  -79001;1;0;false;false;;;;;;
                                  -79002;1;0;false;false;0;0;0;;;
                                  -79003;1;0;false;false;;;;;;
                                  -79004;9;0;false;false;0;0;0;;;
                                  -79013;1;0;false;false;;;;;;
                                  -79014;21;0;false;false;0;0;0;;;
                                  -79035;3;0;false;false;;;;;;
                                  -79038;22;0;false;false;0;0;0;;;
                                  -79060;1;0;false;false;;;;;;
                                  -79061;1;0;false;false;0;0;0;;;
                                  -79062;1;0;false;false;;;;;;
                                  -79063;9;0;false;false;0;0;0;;;
                                  -79072;1;0;false;false;;;;;;
                                  -79073;22;0;false;false;0;0;0;;;
                                  -79095;3;0;false;false;;;;;;
                                  -79098;21;0;false;false;0;0;0;;;
                                  -79119;1;0;false;false;;;;;;
                                  -79120;1;0;false;false;0;0;0;;;
                                  -79121;1;0;false;false;;;;;;
                                  -79122;9;0;false;false;0;0;0;;;
                                  -79131;1;0;false;false;;;;;;
                                  -79132;20;0;false;false;0;0;0;;;
                                  -79152;3;0;false;false;;;;;;
                                  -79155;25;0;false;false;0;0;0;;;
                                  -79180;1;0;false;false;;;;;;
                                  -79181;1;0;false;false;0;0;0;;;
                                  -79182;1;0;false;false;;;;;;
                                  -79183;9;0;false;false;0;0;0;;;
                                  -79192;1;0;false;false;;;;;;
                                  -79193;19;0;false;false;0;0;0;;;
                                  -79212;3;0;false;false;;;;;;
                                  -79215;27;0;false;false;0;0;0;;;
                                  -79242;1;0;false;false;;;;;;
                                  -79243;1;0;false;false;0;0;0;;;
                                  -79244;1;0;false;false;;;;;;
                                  -79245;9;0;false;false;0;0;0;;;
                                  -79254;1;0;false;false;;;;;;
                                  -79255;21;0;false;false;0;0;0;;;
                                  -79276;3;0;false;false;;;;;;
                                  -79279;22;0;false;false;0;0;0;;;
                                  -79301;1;0;false;false;;;;;;
                                  -79302;1;0;false;false;0;0;0;;;
                                  -79303;1;0;false;false;;;;;;
                                  -79304;8;0;false;false;0;0;0;;;
                                  -79312;1;0;false;false;;;;;;
                                  -79313;1;0;false;false;0;0;0;;;
                                  -79314;1;0;false;false;;;;;;
                                  -79315;9;0;false;false;0;0;0;;;
                                  -79324;1;0;false;false;;;;;;
                                  -79325;22;0;false;false;0;0;0;;;
                                  -79347;4;0;false;false;;;;;;
                                  -79351;21;0;false;false;0;0;0;;;
                                  -79372;1;0;false;false;;;;;;
                                  -79373;1;0;false;false;0;0;0;;;
                                  -79374;1;0;false;false;;;;;;
                                  -79375;8;0;false;false;0;0;0;;;
                                  -79383;1;0;false;false;;;;;;
                                  -79384;1;0;false;false;0;0;0;;;
                                  -79385;1;0;false;false;;;;;;
                                  -79386;9;0;false;false;0;0;0;;;
                                  -79395;1;0;false;false;;;;;;
                                  -79396;20;0;false;false;0;0;0;;;
                                  -79416;3;0;false;false;;;;;;
                                  -79419;25;0;false;false;0;0;0;;;
                                  -79444;1;0;false;false;;;;;;
                                  -79445;1;0;false;false;0;0;0;;;
                                  -79446;1;0;false;false;;;;;;
                                  -79447;8;0;false;false;0;0;0;;;
                                  -79455;1;0;false;false;;;;;;
                                  -79456;1;0;false;false;0;0;0;;;
                                  -79457;1;0;false;false;;;;;;
                                  -79458;9;0;false;false;0;0;0;;;
                                  -79467;1;0;false;false;;;;;;
                                  -79468;24;0;false;false;0;0;0;;;
                                  -79492;3;0;false;false;;;;;;
                                  -79495;27;0;false;false;0;0;0;;;
                                  -79522;1;0;false;false;;;;;;
                                  -79523;1;0;false;false;0;0;0;;;
                                  -79524;1;0;false;false;;;;;;
                                  -79525;8;0;false;false;0;0;0;;;
                                  -79533;1;0;false;false;;;;;;
                                  -79534;1;0;false;false;0;0;0;;;
                                  -79535;1;0;false;false;;;;;;
                                  -79536;9;0;false;false;0;0;0;;;
                                  -79545;1;0;false;false;;;;;;
                                  -79546;22;0;false;false;0;0;0;;;
                                  -79568;3;0;false;false;;;;;;
                                  -79571;21;0;false;false;0;0;0;;;
                                  -79592;1;0;false;false;;;;;;
                                  -79593;1;0;false;false;0;0;0;;;
                                  -79594;1;0;false;false;;;;;;
                                  -79595;9;0;false;false;0;0;0;;;
                                  -79604;1;0;false;false;;;;;;
                                  -79605;23;0;false;false;0;0;0;;;
                                  -79628;3;0;false;false;;;;;;
                                  -79631;25;0;false;false;0;0;0;;;
                                  -79656;1;0;false;false;;;;;;
                                  -79657;1;0;false;false;0;0;0;;;
                                  -79658;1;0;false;false;;;;;;
                                  -79659;9;0;false;false;0;0;0;;;
                                  -79668;1;0;false;false;;;;;;
                                  -79669;27;0;false;false;0;0;0;;;
                                  -79696;4;0;false;false;;;;;;
                                  -79700;21;0;false;false;0;0;0;;;
                                  -79721;1;0;false;false;;;;;;
                                  -79722;1;0;false;false;0;0;0;;;
                                  -79723;1;0;false;false;;;;;;
                                  -79724;8;0;false;false;0;0;0;;;
                                  -79732;1;0;false;false;;;;;;
                                  -79733;1;0;false;false;0;0;0;;;
                                  -79734;1;0;false;false;;;;;;
                                  -79735;9;0;false;false;0;0;0;;;
                                  -79744;1;0;false;false;;;;;;
                                  -79745;21;0;false;false;0;0;0;;;
                                  -79766;3;0;false;false;;;;;;
                                  -79769;25;0;false;false;0;0;0;;;
                                  -79794;1;0;false;false;;;;;;
                                  -79795;1;0;false;false;0;0;0;;;
                                  -79796;1;0;false;false;;;;;;
                                  -79797;8;0;false;false;0;0;0;;;
                                  -79805;1;0;false;false;;;;;;
                                  -79806;1;0;false;false;0;0;0;;;
                                  -79807;1;0;false;false;;;;;;
                                  -79808;9;0;false;false;0;0;0;;;
                                  -79817;1;0;false;false;;;;;;
                                  -79818;25;0;false;false;0;0;0;;;
                                  -79843;20;0;false;false;;;;;;
                                  -79863;17;0;false;false;63;127;95;;;
                                  -79880;1;0;false;false;;;;;;
                                  -79881;21;0;false;false;63;127;95;;;
                                  -79902;1;0;false;false;;;;;;
                                  -79903;14;0;false;false;0;0;0;;;
                                  -79917;3;0;false;false;42;0;255;;;
                                  -79920;1;0;false;false;;;;;;
                                  -79921;1;0;false;false;0;0;0;;;
                                  -79922;1;0;false;false;;;;;;
                                  -79923;9;0;false;false;0;0;0;;;
                                  -79932;1;0;false;false;;;;;;
                                  -79933;8;0;false;false;0;0;0;;;
                                  -79941;3;0;false;false;;;;;;
                                  -79944;14;0;false;false;0;0;0;;;
                                  -79958;3;0;false;false;42;0;255;;;
                                  -79961;1;0;false;false;;;;;;
                                  -79962;1;0;false;false;0;0;0;;;
                                  -79963;1;0;false;false;;;;;;
                                  -79964;9;0;false;false;0;0;0;;;
                                  -79973;1;0;false;false;;;;;;
                                  -79974;9;0;false;false;0;0;0;;;
                                  -79983;3;0;false;false;;;;;;
                                  -79986;14;0;false;false;0;0;0;;;
                                  -80000;3;0;false;false;42;0;255;;;
                                  -80003;1;0;false;false;;;;;;
                                  -80004;1;0;false;false;0;0;0;;;
                                  -80005;1;0;false;false;;;;;;
                                  -80006;9;0;false;false;0;0;0;;;
                                  -80015;1;0;false;false;;;;;;
                                  -80016;10;0;false;false;0;0;0;;;
                                  -80026;3;0;false;false;;;;;;
                                  -80029;36;0;false;false;63;127;95;;;
                                  -80065;1;0;false;false;;;;;;
                                  -80066;21;0;false;false;0;0;0;;;
                                  -80087;1;0;false;false;;;;;;
                                  -80088;1;0;false;false;0;0;0;;;
                                  -80089;1;0;false;false;;;;;;
                                  -80090;9;0;false;false;0;0;0;;;
                                  -80099;1;0;false;false;;;;;;
                                  -80100;8;0;false;false;0;0;0;;;
                                  -80108;3;0;false;false;;;;;;
                                  -80111;24;0;false;false;0;0;0;;;
                                  -80135;1;0;false;false;;;;;;
                                  -80136;1;0;false;false;0;0;0;;;
                                  -80137;1;0;false;false;;;;;;
                                  -80138;9;0;false;false;0;0;0;;;
                                  -80147;1;0;false;false;;;;;;
                                  -80148;9;0;false;false;0;0;0;;;
                                  -80157;3;0;false;false;;;;;;
                                  -80160;24;0;false;false;0;0;0;;;
                                  -80184;1;0;false;false;;;;;;
                                  -80185;1;0;false;false;0;0;0;;;
                                  -80186;1;0;false;false;;;;;;
                                  -80187;9;0;false;false;0;0;0;;;
                                  -80196;1;0;false;false;;;;;;
                                  -80197;10;0;false;false;0;0;0;;;
                                  -80207;3;0;false;false;;;;;;
                                  -80210;20;0;false;false;0;0;0;;;
                                  -80230;1;0;false;false;;;;;;
                                  -80231;1;0;false;false;0;0;0;;;
                                  -80232;1;0;false;false;;;;;;
                                  -80233;9;0;false;false;0;0;0;;;
                                  -80242;1;0;false;false;;;;;;
                                  -80243;20;0;false;false;0;0;0;;;
                                  -80263;6;0;false;false;;;;;;
                                  -80269;21;0;false;false;0;0;0;;;
                                  -80290;1;0;false;false;;;;;;
                                  -80291;20;0;false;false;0;0;0;;;
                                  -80311;3;0;false;false;;;;;;
                                  -80314;22;0;false;false;0;0;0;;;
                                  -80336;1;0;false;false;;;;;;
                                  -80337;16;0;false;false;0;0;0;;;
                                  -80353;3;0;false;false;;;;;;
                                  -80356;20;0;false;false;0;0;0;;;
                                  -80376;1;0;false;false;;;;;;
                                  -80377;1;0;false;false;0;0;0;;;
                                  -80378;1;0;false;false;;;;;;
                                  -80379;9;0;false;false;0;0;0;;;
                                  -80388;1;0;false;false;;;;;;
                                  -80389;25;0;false;false;0;0;0;;;
                                  -80414;3;0;false;false;;;;;;
                                  -80417;21;0;false;false;0;0;0;;;
                                  -80438;1;0;false;false;;;;;;
                                  -80439;1;0;false;false;0;0;0;;;
                                  -80440;1;0;false;false;;;;;;
                                  -80441;9;0;false;false;0;0;0;;;
                                  -80450;1;0;false;false;;;;;;
                                  -80451;21;0;false;false;0;0;0;;;
                                  -80472;6;0;false;false;;;;;;
                                  -80478;18;0;false;false;63;127;95;;;
                                  -80496;1;0;false;false;;;;;;
                                  -80497;25;0;false;false;0;0;0;;;
                                  -80522;1;0;false;false;;;;;;
                                  -80523;21;0;false;false;0;0;0;;;
                                  -80544;2;0;false;false;;;;;;
                                  -80546;1;0;false;false;0;0;0;;;
                                  -80547;2;0;false;false;;;;;;
                                  -80549;3;0;false;false;63;95;191;;;
                                  -80552;3;0;false;false;;;;;;
                                  -80555;1;0;false;false;63;95;191;;;
                                  -80556;1;0;false;false;;;;;;
                                  -80557;6;0;false;false;63;95;191;;;
                                  -80563;1;0;false;false;;;;;;
                                  -80564;3;0;false;false;63;95;191;;;
                                  -80567;1;0;false;false;;;;;;
                                  -80568;7;0;false;false;63;95;191;;;
                                  -80575;1;0;false;false;;;;;;
                                  -80576;2;0;false;false;63;95;191;;;
                                  -80578;1;0;false;false;;;;;;
                                  -80579;3;0;false;false;63;95;191;;;
                                  -80582;1;0;false;false;;;;;;
                                  -80583;3;0;false;false;63;95;191;;;
                                  -80586;1;0;false;false;;;;;;
                                  -80587;3;0;false;false;63;95;191;;;
                                  -80590;1;0;false;false;;;;;;
                                  -80591;5;0;false;false;63;95;191;;;
                                  -80596;1;0;false;false;;;;;;
                                  -80597;2;0;false;false;63;95;191;;;
                                  -80599;1;0;false;false;;;;;;
                                  -80600;4;0;false;false;63;95;191;;;
                                  -80604;1;0;false;false;;;;;;
                                  -80605;5;0;false;false;63;95;191;;;
                                  -80610;2;0;false;false;;;;;;
                                  -80612;4;0;false;false;63;95;191;;;
                                  -80616;3;0;false;false;;;;;;
                                  -80619;1;0;false;false;63;95;191;;;
                                  -80620;1;0;false;false;;;;;;
                                  -80621;6;0;false;false;63;95;191;;;
                                  -80627;1;0;false;false;;;;;;
                                  -80628;4;0;false;false;63;95;191;;;
                                  -80632;1;0;false;false;;;;;;
                                  -80633;5;0;false;false;63;95;191;;;
                                  -80638;1;0;false;false;;;;;;
                                  -80639;2;0;false;false;63;95;191;;;
                                  -80641;1;0;false;false;;;;;;
                                  -80642;2;0;false;false;63;95;191;;;
                                  -80644;1;0;false;false;;;;;;
                                  -80645;6;0;false;false;63;95;191;;;
                                  -80651;1;0;false;false;;;;;;
                                  -80652;4;0;false;false;63;95;191;;;
                                  -80656;1;0;false;false;;;;;;
                                  -80657;6;0;false;false;63;95;191;;;
                                  -80663;1;0;false;false;;;;;;
                                  -80664;8;0;false;false;63;95;191;;;
                                  -80672;1;0;false;false;;;;;;
                                  -80673;3;0;false;false;63;95;191;;;
                                  -80676;1;0;false;false;;;;;;
                                  -80677;4;0;false;false;63;95;191;;;
                                  -80681;1;0;false;false;;;;;;
                                  -80682;3;0;false;false;63;95;191;;;
                                  -80685;3;0;false;false;;;;;;
                                  -80688;1;0;false;false;63;95;191;;;
                                  -80689;1;0;false;false;;;;;;
                                  -80690;4;0;false;false;63;95;191;;;
                                  -80694;1;0;false;false;;;;;;
                                  -80695;7;0;false;false;63;95;191;;;
                                  -80702;1;0;false;false;;;;;;
                                  -80703;4;0;false;false;63;95;191;;;
                                  -80707;1;0;false;false;;;;;;
                                  -80708;5;0;false;false;63;95;191;;;
                                  -80713;1;0;false;false;;;;;;
                                  -80714;6;0;false;false;63;95;191;;;
                                  -80720;1;0;false;false;;;;;;
                                  -80721;6;0;false;false;63;95;191;;;
                                  -80727;1;0;false;false;;;;;;
                                  -80728;5;0;false;false;63;95;191;;;
                                  -80733;1;0;false;false;;;;;;
                                  -80734;2;0;false;false;63;95;191;;;
                                  -80736;1;0;false;false;;;;;;
                                  -80737;5;0;false;false;63;95;191;;;
                                  -80742;1;0;false;false;;;;;;
                                  -80743;4;0;false;false;63;95;191;;;
                                  -80747;1;0;false;false;;;;;;
                                  -80748;8;0;false;false;63;95;191;;;
                                  -80756;3;0;false;false;;;;;;
                                  -80759;2;0;false;false;63;95;191;;;
                                  -80761;2;0;false;false;;;;;;
                                  -80763;4;1;false;false;127;0;85;;;
                                  -80767;1;0;false;false;;;;;;
                                  -80768;20;0;false;false;0;0;0;;;
                                  -80788;1;0;false;false;;;;;;
                                  -80789;1;0;false;false;0;0;0;;;
                                  -80790;3;0;false;false;;;;;;
                                  -80793;3;1;false;false;127;0;85;;;
                                  -80796;1;0;false;false;;;;;;
                                  -80797;10;0;false;false;0;0;0;;;
                                  -80807;1;0;false;false;;;;;;
                                  -80808;1;0;false;false;0;0;0;;;
                                  -80809;1;0;false;false;;;;;;
                                  -80810;17;0;false;false;0;0;0;;;
                                  -80827;3;0;false;false;;;;;;
                                  -80830;7;0;false;false;0;0;0;;;
                                  -80837;1;0;false;false;;;;;;
                                  -80838;7;0;false;false;0;0;0;;;
                                  -80845;1;0;false;false;;;;;;
                                  -80846;1;0;false;false;0;0;0;;;
                                  -80847;1;0;false;false;;;;;;
                                  -80848;13;0;false;false;0;0;0;;;
                                  -80861;3;0;false;false;;;;;;
                                  -80864;2;1;false;false;127;0;85;;;
                                  -80866;1;0;false;false;;;;;;
                                  -80867;16;0;false;false;0;0;0;;;
                                  -80883;1;0;false;false;;;;;;
                                  -80884;2;0;false;false;0;0;0;;;
                                  -80886;1;0;false;false;;;;;;
                                  -80887;4;1;false;false;127;0;85;;;
                                  -80891;1;0;false;false;0;0;0;;;
                                  -80892;1;0;false;false;;;;;;
                                  -80893;1;0;false;false;0;0;0;;;
                                  -80894;4;0;false;false;;;;;;
                                  -80898;2;1;false;false;127;0;85;;;
                                  -80900;1;0;false;false;;;;;;
                                  -80901;13;0;false;false;0;0;0;;;
                                  -80914;1;0;false;false;;;;;;
                                  -80915;2;0;false;false;0;0;0;;;
                                  -80917;1;0;false;false;;;;;;
                                  -80918;4;1;false;false;127;0;85;;;
                                  -80922;1;0;false;false;;;;;;
                                  -80923;2;0;false;false;0;0;0;;;
                                  -80925;1;0;false;false;;;;;;
                                  -80926;48;0;false;false;0;0;0;;;
                                  -80974;1;0;false;false;;;;;;
                                  -80975;1;0;false;false;0;0;0;;;
                                  -80976;5;0;false;false;;;;;;
                                  -80981;22;0;false;false;0;0;0;;;
                                  -81003;4;1;false;false;127;0;85;;;
                                  -81007;2;0;false;false;0;0;0;;;
                                  -81009;4;0;false;false;;;;;;
                                  -81013;1;0;false;false;0;0;0;;;
                                  -81014;4;0;false;false;;;;;;
                                  -81018;26;0;false;false;0;0;0;;;
                                  -81044;3;0;false;false;;;;;;
                                  -81047;1;0;false;false;0;0;0;;;
                                  -81048;3;0;false;false;;;;;;
                                  -81051;15;0;false;false;0;0;0;;;
                                  -81066;1;0;false;false;;;;;;
                                  -81067;1;0;false;false;0;0;0;;;
                                  -81068;1;0;false;false;;;;;;
                                  -81069;3;1;false;false;127;0;85;;;
                                  -81072;1;0;false;false;;;;;;
                                  -81073;14;0;false;false;0;0;0;;;
                                  -81087;1;0;false;false;;;;;;
                                  -81088;11;0;false;false;0;0;0;;;
                                  -81099;1;0;false;false;;;;;;
                                  -81100;12;0;false;false;0;0;0;;;
                                  -81112;3;0;false;false;;;;;;
                                  -81115;2;0;false;false;0;0;0;;;
                                  -81117;1;0;false;false;;;;;;
                                  -81118;2;0;false;false;0;0;0;;;
                                  -81120;1;0;false;false;;;;;;
                                  -81121;1;0;false;false;0;0;0;;;
                                  -81122;1;0;false;false;;;;;;
                                  -81123;3;1;false;false;127;0;85;;;
                                  -81126;1;0;false;false;;;;;;
                                  -81127;2;0;false;false;0;0;0;;;
                                  -81129;1;0;false;false;;;;;;
                                  -81130;18;0;false;false;0;0;0;;;
                                  -81148;4;0;false;false;;;;;;
                                  -81152;58;0;false;false;0;0;0;;;
                                  -81210;3;0;false;false;;;;;;
                                  -81213;19;0;false;false;0;0;0;;;
                                  -81232;1;0;false;false;;;;;;
                                  -81233;2;0;false;false;0;0;0;;;
                                  -81235;1;0;false;false;;;;;;
                                  -81236;11;0;false;false;0;0;0;;;
                                  -81247;1;0;false;false;;;;;;
                                  -81248;12;0;false;false;0;0;0;;;
                                  -81260;3;0;false;false;;;;;;
                                  -81263;58;0;false;false;0;0;0;;;
                                  -81321;3;0;false;false;;;;;;
                                  -81324;30;0;false;false;0;0;0;;;
                                  -81354;3;0;false;false;;;;;;
                                  -81357;32;0;false;false;0;0;0;;;
                                  -81389;3;0;false;false;;;;;;
                                  -81392;21;0;false;false;0;0;0;;;
                                  -81413;3;0;false;false;;;;;;
                                  -81416;13;0;false;false;0;0;0;;;
                                  -81429;7;0;false;false;;;;;;
                                  -81436;2;1;false;false;127;0;85;;;
                                  -81438;1;0;false;false;;;;;;
                                  -81439;17;0;false;false;0;0;0;;;
                                  -81456;1;0;false;false;;;;;;
                                  -81457;2;0;false;false;0;0;0;;;
                                  -81459;1;0;false;false;;;;;;
                                  -81460;4;1;false;false;127;0;85;;;
                                  -81464;1;0;false;false;0;0;0;;;
                                  -81465;1;0;false;false;;;;;;
                                  -81466;1;0;false;false;0;0;0;;;
                                  -81467;4;0;false;false;;;;;;
                                  -81471;2;1;false;false;127;0;85;;;
                                  -81473;1;0;false;false;;;;;;
                                  -81474;13;0;false;false;0;0;0;;;
                                  -81487;1;0;false;false;;;;;;
                                  -81488;2;0;false;false;0;0;0;;;
                                  -81490;1;0;false;false;;;;;;
                                  -81491;4;1;false;false;127;0;85;;;
                                  -81495;1;0;false;false;;;;;;
                                  -81496;2;0;false;false;0;0;0;;;
                                  -81498;1;0;false;false;;;;;;
                                  -81499;49;0;false;false;0;0;0;;;
                                  -81548;1;0;false;false;;;;;;
                                  -81549;1;0;false;false;0;0;0;;;
                                  -81550;5;0;false;false;;;;;;
                                  -81555;22;0;false;false;0;0;0;;;
                                  -81577;4;1;false;false;127;0;85;;;
                                  -81581;2;0;false;false;0;0;0;;;
                                  -81583;4;0;false;false;;;;;;
                                  -81587;1;0;false;false;0;0;0;;;
                                  -81588;4;0;false;false;;;;;;
                                  -81592;27;0;false;false;0;0;0;;;
                                  -81619;3;0;false;false;;;;;;
                                  -81622;1;0;false;false;0;0;0;;;
                                  -81623;3;0;false;false;;;;;;
                                  -81626;16;0;false;false;0;0;0;;;
                                  -81642;1;0;false;false;;;;;;
                                  -81643;1;0;false;false;0;0;0;;;
                                  -81644;1;0;false;false;;;;;;
                                  -81645;3;1;false;false;127;0;85;;;
                                  -81648;1;0;false;false;;;;;;
                                  -81649;14;0;false;false;0;0;0;;;
                                  -81663;1;0;false;false;;;;;;
                                  -81664;11;0;false;false;0;0;0;;;
                                  -81675;1;0;false;false;;;;;;
                                  -81676;12;0;false;false;0;0;0;;;
                                  -81688;3;0;false;false;;;;;;
                                  -81691;2;0;false;false;0;0;0;;;
                                  -81693;1;0;false;false;;;;;;
                                  -81694;1;0;false;false;0;0;0;;;
                                  -81695;1;0;false;false;;;;;;
                                  -81696;3;1;false;false;127;0;85;;;
                                  -81699;1;0;false;false;;;;;;
                                  -81700;2;0;false;false;0;0;0;;;
                                  -81702;1;0;false;false;;;;;;
                                  -81703;19;0;false;false;0;0;0;;;
                                  -81722;4;0;false;false;;;;;;
                                  -81726;58;0;false;false;0;0;0;;;
                                  -81784;3;0;false;false;;;;;;
                                  -81787;19;0;false;false;0;0;0;;;
                                  -81806;1;0;false;false;;;;;;
                                  -81807;2;0;false;false;0;0;0;;;
                                  -81809;1;0;false;false;;;;;;
                                  -81810;11;0;false;false;0;0;0;;;
                                  -81821;1;0;false;false;;;;;;
                                  -81822;12;0;false;false;0;0;0;;;
                                  -81834;3;0;false;false;;;;;;
                                  -81837;58;0;false;false;0;0;0;;;
                                  -81895;3;0;false;false;;;;;;
                                  -81898;52;0;false;false;0;0;0;;;
                                  -81950;3;0;false;false;;;;;;
                                  -81953;32;0;false;false;0;0;0;;;
                                  -81985;3;0;false;false;;;;;;
                                  -81988;32;0;false;false;0;0;0;;;
                                  -82020;3;0;false;false;;;;;;
                                  -82023;13;0;false;false;0;0;0;;;
                                  -82036;2;0;false;false;;;;;;
                                  -82038;1;0;false;false;0;0;0;;;
                                  -82039;2;0;false;false;;;;;;
                                  -82041;3;0;false;false;63;95;191;;;
                                  -82044;3;0;false;false;;;;;;
                                  -82047;1;0;false;false;63;95;191;;;
                                  -82048;1;0;false;false;;;;;;
                                  -82049;5;0;false;false;63;95;191;;;
                                  -82054;1;0;false;false;;;;;;
                                  -82055;3;0;false;false;63;95;191;;;
                                  -82058;1;0;false;false;;;;;;
                                  -82059;8;0;false;false;63;95;191;;;
                                  -82067;1;0;false;false;;;;;;
                                  -82068;4;0;false;false;63;95;191;;;
                                  -82072;1;0;false;false;;;;;;
                                  -82073;2;0;false;false;63;95;191;;;
                                  -82075;1;0;false;false;;;;;;
                                  -82076;3;0;false;false;63;95;191;;;
                                  -82079;1;0;false;false;;;;;;
                                  -82080;10;0;false;false;63;95;191;;;
                                  -82090;2;0;false;false;;;;;;
                                  -82092;3;0;false;false;63;95;191;;;
                                  -82095;1;0;false;false;;;;;;
                                  -82096;4;0;false;false;63;95;191;;;
                                  -82100;1;0;false;false;;;;;;
                                  -82101;4;0;false;false;63;95;191;;;
                                  -82105;1;0;false;false;;;;;;
                                  -82106;2;0;false;false;63;95;191;;;
                                  -82108;1;0;false;false;;;;;;
                                  -82109;3;0;false;false;63;95;191;;;
                                  -82112;1;0;false;false;;;;;;
                                  -82113;2;0;false;false;63;95;191;;;
                                  -82115;1;0;false;false;;;;;;
                                  -82116;3;0;false;false;63;95;191;;;
                                  -82119;4;0;false;false;;;;;;
                                  -82123;1;0;false;false;63;95;191;;;
                                  -82124;1;0;false;false;;;;;;
                                  -82125;9;0;false;false;63;95;191;;;
                                  -82134;1;0;false;false;;;;;;
                                  -82135;2;0;false;false;63;95;191;;;
                                  -82137;1;0;false;false;;;;;;
                                  -82138;5;0;false;false;63;95;191;;;
                                  -82143;1;0;false;false;;;;;;
                                  -82144;4;0;false;false;63;95;191;;;
                                  -82148;1;0;false;false;;;;;;
                                  -82149;6;0;false;false;63;95;191;;;
                                  -82155;1;0;false;false;;;;;;
                                  -82156;3;0;false;false;63;95;191;;;
                                  -82159;1;0;false;false;;;;;;
                                  -82160;3;0;false;false;63;95;191;;;
                                  -82163;1;0;false;false;;;;;;
                                  -82164;7;0;false;false;63;95;191;;;
                                  -82171;3;0;false;false;;;;;;
                                  -82174;1;0;false;false;63;95;191;;;
                                  -82175;1;0;false;false;;;;;;
                                  -82176;3;0;false;false;127;127;159;;;
                                  -82179;3;0;false;false;;;;;;
                                  -82182;1;0;false;false;63;95;191;;;
                                  -82183;3;0;false;false;;;;;;
                                  -82186;1;0;false;false;63;95;191;;;
                                  -82187;1;0;false;false;;;;;;
                                  -82188;11;1;false;false;127;159;191;;;
                                  -82199;12;0;false;false;63;95;191;;;
                                  -82211;1;0;false;false;;;;;;
                                  -82212;4;0;false;false;127;127;159;;;
                                  -82216;3;0;false;false;;;;;;
                                  -82219;1;0;false;false;63;95;191;;;
                                  -82220;4;0;false;false;;;;;;
                                  -82224;4;0;false;false;127;127;159;;;
                                  -82228;21;0;false;false;63;95;191;;;
                                  -82249;1;0;false;false;;;;;;
                                  -82250;1;0;false;false;127;127;159;;;
                                  -82251;1;0;false;false;;;;;;
                                  -82252;2;0;false;false;63;95;191;;;
                                  -82254;1;0;false;false;;;;;;
                                  -82255;3;0;false;false;63;95;191;;;
                                  -82258;1;0;false;false;;;;;;
                                  -82259;8;0;false;false;63;95;191;;;
                                  -82267;1;0;false;false;;;;;;
                                  -82268;3;0;false;false;63;95;191;;;
                                  -82271;1;0;false;false;;;;;;
                                  -82272;4;0;false;false;63;95;191;;;
                                  -82276;1;0;false;false;;;;;;
                                  -82277;8;0;false;false;63;95;191;;;
                                  -82285;5;0;false;false;127;127;159;;;
                                  -82290;3;0;false;false;;;;;;
                                  -82293;1;0;false;false;63;95;191;;;
                                  -82294;4;0;false;false;;;;;;
                                  -82298;4;0;false;false;127;127;159;;;
                                  -82302;27;0;false;false;63;95;191;;;
                                  -82329;1;0;false;false;;;;;;
                                  -82330;1;0;false;false;127;127;159;;;
                                  -82331;1;0;false;false;;;;;;
                                  -82332;2;0;false;false;63;95;191;;;
                                  -82334;1;0;false;false;;;;;;
                                  -82335;3;0;false;false;63;95;191;;;
                                  -82338;1;0;false;false;;;;;;
                                  -82339;6;0;false;false;63;95;191;;;
                                  -82345;1;0;false;false;;;;;;
                                  -82346;4;0;false;false;63;95;191;;;
                                  -82350;1;0;false;false;;;;;;
                                  -82351;3;0;false;false;63;95;191;;;
                                  -82354;1;0;false;false;;;;;;
                                  -82355;6;0;false;false;63;95;191;;;
                                  -82361;1;0;false;false;;;;;;
                                  -82362;4;0;false;false;63;95;191;;;
                                  -82366;1;0;false;false;;;;;;
                                  -82367;7;0;false;false;63;95;191;;;
                                  -82374;1;0;false;false;;;;;;
                                  -82375;3;0;false;false;63;95;191;;;
                                  -82378;1;0;false;false;;;;;;
                                  -82379;8;0;false;false;63;95;191;;;
                                  -82387;5;0;false;false;127;127;159;;;
                                  -82392;3;0;false;false;;;;;;
                                  -82395;1;0;false;false;63;95;191;;;
                                  -82396;1;0;false;false;;;;;;
                                  -82397;5;0;false;false;127;127;159;;;
                                  -82402;3;0;false;false;;;;;;
                                  -82405;2;0;false;false;63;95;191;;;
                                  -82407;2;0;false;false;;;;;;
                                  -82409;6;1;false;false;127;0;85;;;
                                  -82415;1;0;false;false;;;;;;
                                  -82416;4;1;false;false;127;0;85;;;
                                  -82420;1;0;false;false;;;;;;
                                  -82421;6;0;false;false;0;0;0;;;
                                  -82427;3;0;false;false;;;;;;
                                  -82430;14;0;false;false;0;0;0;;;
                                  -82444;3;0;false;false;;;;;;
                                  -82447;3;1;false;false;127;0;85;;;
                                  -82450;1;0;false;false;;;;;;
                                  -82451;6;0;false;false;0;0;0;;;
                                  -82457;1;0;false;false;;;;;;
                                  -82458;1;0;false;false;0;0;0;;;
                                  -82459;1;0;false;false;;;;;;
                                  -82460;11;0;false;false;0;0;0;;;
                                  -82471;1;0;false;false;;;;;;
                                  -82472;1;0;false;false;0;0;0;;;
                                  -82473;1;0;false;false;;;;;;
                                  -82474;12;0;false;false;0;0;0;;;
                                  -82486;6;0;false;false;;;;;;
                                  -82492;2;1;false;false;127;0;85;;;
                                  -82494;1;0;false;false;;;;;;
                                  -82495;7;0;false;false;0;0;0;;;
                                  -82502;1;0;false;false;;;;;;
                                  -82503;1;0;false;false;0;0;0;;;
                                  -82504;1;0;false;false;;;;;;
                                  -82505;2;0;false;false;0;0;0;;;
                                  -82507;1;0;false;false;;;;;;
                                  -82508;1;0;false;false;0;0;0;;;
                                  -82509;4;0;false;false;;;;;;
                                  -82513;3;1;false;false;127;0;85;;;
                                  -82516;1;0;false;false;;;;;;
                                  -82517;1;0;false;false;0;0;0;;;
                                  -82518;5;0;false;false;;;;;;
                                  -82523;32;0;false;false;0;0;0;;;
                                  -82555;1;0;false;false;;;;;;
                                  -82556;7;0;false;false;0;0;0;;;
                                  -82563;1;0;false;false;;;;;;
                                  -82564;15;0;false;false;0;0;0;;;
                                  -82579;4;0;false;false;;;;;;
                                  -82583;1;0;false;false;0;0;0;;;
                                  -82584;4;0;false;false;;;;;;
                                  -82588;5;1;false;false;127;0;85;;;
                                  -82593;1;0;false;false;;;;;;
                                  -82594;9;0;false;false;0;0;0;;;
                                  -82603;1;0;false;false;;;;;;
                                  -82604;6;0;false;false;0;0;0;;;
                                  -82610;1;0;false;false;;;;;;
                                  -82611;1;0;false;false;0;0;0;;;
                                  -82612;5;0;false;false;;;;;;
                                  -82617;69;0;false;false;63;127;95;;;
                                  -82686;3;0;false;false;;;;;;
                                  -82689;64;0;false;false;63;127;95;;;
                                  -82753;3;0;false;false;;;;;;
                                  -82756;18;0;false;false;63;127;95;;;
                                  -82774;3;0;false;false;;;;;;
                                  -82777;47;0;false;false;63;127;95;;;
                                  -82824;3;0;false;false;;;;;;
                                  -82827;2;1;false;false;127;0;85;;;
                                  -82829;1;0;false;false;;;;;;
                                  -82830;11;0;false;false;0;0;0;;;
                                  -82841;1;0;false;false;;;;;;
                                  -82842;2;0;false;false;0;0;0;;;
                                  -82844;1;0;false;false;;;;;;
                                  -82845;31;0;false;false;0;0;0;;;
                                  -82876;1;0;false;false;;;;;;
                                  -82877;1;0;false;false;0;0;0;;;
                                  -82878;6;0;false;false;;;;;;
                                  -82884;5;1;false;false;127;0;85;;;
                                  -82889;1;0;false;false;;;;;;
                                  -82890;6;0;false;false;0;0;0;;;
                                  -82896;5;0;false;false;;;;;;
                                  -82901;1;0;false;false;0;0;0;;;
                                  -82902;5;0;false;false;;;;;;
                                  -82907;52;0;false;false;63;127;95;;;
                                  -82959;3;0;false;false;;;;;;
                                  -82962;21;0;false;false;63;127;95;;;
                                  -82983;3;0;false;false;;;;;;
                                  -82986;6;1;false;false;127;0;85;;;
                                  -82992;1;0;false;false;0;0;0;;;
                                  -82993;4;0;false;false;;;;;;
                                  -82997;1;0;false;false;0;0;0;;;
                                  -82998;4;0;false;false;;;;;;
                                  -83002;11;0;false;false;0;0;0;;;
                                  -83013;3;0;false;false;;;;;;
                                  -83016;1;0;false;false;0;0;0;;;
                                  -83017;2;0;false;false;;;;;;
                                  -83019;1;0;false;false;0;0;0;;;
                                  -83020;2;0;false;false;;;;;;
                                  -83022;3;0;false;false;63;95;191;;;
                                  -83025;4;0;false;false;;;;;;
                                  -83029;1;0;false;false;63;95;191;;;
                                  -83030;1;0;false;false;;;;;;
                                  -83031;1;0;false;false;63;95;191;;;
                                  -83032;1;0;false;false;;;;;;
                                  -83033;5;0;false;false;63;95;191;;;
                                  -83038;1;0;false;false;;;;;;
                                  -83039;4;0;false;false;63;95;191;;;
                                  -83043;1;0;false;false;;;;;;
                                  -83044;5;0;false;false;63;95;191;;;
                                  -83049;1;0;false;false;;;;;;
                                  -83050;3;0;false;false;63;95;191;;;
                                  -83053;1;0;false;false;;;;;;
                                  -83054;9;0;false;false;63;95;191;;;
                                  -83063;2;0;false;false;;;;;;
                                  -83065;3;0;false;false;63;95;191;;;
                                  -83068;1;0;false;false;;;;;;
                                  -83069;2;0;false;false;63;95;191;;;
                                  -83071;1;0;false;false;;;;;;
                                  -83072;2;0;false;false;63;95;191;;;
                                  -83074;1;0;false;false;;;;;;
                                  -83075;6;0;false;false;63;95;191;;;
                                  -83081;1;0;false;false;;;;;;
                                  -83082;5;0;false;false;63;95;191;;;
                                  -83087;1;0;false;false;;;;;;
                                  -83088;14;0;false;false;63;95;191;;;
                                  -83102;2;0;false;false;;;;;;
                                  -83104;2;0;false;false;63;95;191;;;
                                  -83106;3;0;false;false;;;;;;
                                  -83109;1;0;false;false;63;95;191;;;
                                  -83110;1;0;false;false;;;;;;
                                  -83111;3;0;false;false;63;95;191;;;
                                  -83114;1;0;false;false;;;;;;
                                  -83115;4;0;false;false;63;95;191;;;
                                  -83119;1;0;false;false;;;;;;
                                  -83120;8;0;false;false;63;95;191;;;
                                  -83128;1;0;false;false;;;;;;
                                  -83129;2;0;false;false;63;95;191;;;
                                  -83131;1;0;false;false;;;;;;
                                  -83132;7;0;false;false;63;95;191;;;
                                  -83139;1;0;false;false;;;;;;
                                  -83140;2;0;false;false;63;95;191;;;
                                  -83142;1;0;false;false;;;;;;
                                  -83143;3;0;false;false;63;95;191;;;
                                  -83146;1;0;false;false;;;;;;
                                  -83147;6;0;false;false;63;95;191;;;
                                  -83153;1;0;false;false;;;;;;
                                  -83154;5;0;false;false;63;95;191;;;
                                  -83159;1;0;false;false;;;;;;
                                  -83160;8;0;false;false;63;95;191;;;
                                  -83168;1;0;false;false;;;;;;
                                  -83169;14;0;false;false;63;95;191;;;
                                  -83183;5;0;false;false;;;;;;
                                  -83188;1;0;false;false;63;95;191;;;
                                  -83189;1;0;false;false;;;;;;
                                  -83190;10;0;false;false;63;95;191;;;
                                  -83200;1;0;false;false;;;;;;
                                  -83201;5;0;false;false;63;95;191;;;
                                  -83206;1;0;false;false;;;;;;
                                  -83207;5;0;false;false;63;95;191;;;
                                  -83212;1;0;false;false;;;;;;
                                  -83213;4;0;false;false;63;95;191;;;
                                  -83217;1;0;false;false;;;;;;
                                  -83218;4;0;false;false;63;95;191;;;
                                  -83222;1;0;false;false;;;;;;
                                  -83223;3;0;false;false;63;95;191;;;
                                  -83226;1;0;false;false;;;;;;
                                  -83227;6;0;false;false;63;95;191;;;
                                  -83233;1;0;false;false;;;;;;
                                  -83234;2;0;false;false;63;95;191;;;
                                  -83236;1;0;false;false;;;;;;
                                  -83237;3;0;false;false;63;95;191;;;
                                  -83240;1;0;false;false;;;;;;
                                  -83241;14;0;false;false;63;95;191;;;
                                  -83255;3;0;false;false;;;;;;
                                  -83258;2;0;false;false;63;95;191;;;
                                  -83260;2;0;false;false;;;;;;
                                  -83262;4;1;false;false;127;0;85;;;
                                  -83266;1;0;false;false;;;;;;
                                  -83267;18;0;false;false;0;0;0;;;
                                  -83285;1;0;false;false;;;;;;
                                  -83286;6;0;false;false;0;0;0;;;
                                  -83292;1;0;false;false;;;;;;
                                  -83293;1;0;false;false;0;0;0;;;
                                  -83294;3;0;false;false;;;;;;
                                  -83297;9;0;false;false;0;0;0;;;
                                  -83306;1;0;false;false;;;;;;
                                  -83307;4;0;false;false;0;0;0;;;
                                  -83311;1;0;false;false;;;;;;
                                  -83312;1;0;false;false;0;0;0;;;
                                  -83313;1;0;false;false;;;;;;
                                  -83314;16;0;false;false;0;0;0;;;
                                  -83330;8;0;false;false;;;;;;
                                  -83338;2;1;false;false;127;0;85;;;
                                  -83340;1;0;false;false;;;;;;
                                  -83341;8;0;false;false;0;0;0;;;
                                  -83349;1;0;false;false;;;;;;
                                  -83350;1;0;false;false;0;0;0;;;
                                  -83351;1;0;false;false;;;;;;
                                  -83352;12;0;false;false;0;0;0;;;
                                  -83364;1;0;false;false;;;;;;
                                  -83365;1;0;false;false;0;0;0;;;
                                  -83366;4;0;false;false;;;;;;
                                  -83370;22;0;false;false;0;0;0;;;
                                  -83392;1;0;false;false;;;;;;
                                  -83393;7;0;false;false;0;0;0;;;
                                  -83400;1;0;false;false;;;;;;
                                  -83401;1;0;false;false;0;0;0;;;
                                  -83402;1;0;false;false;;;;;;
                                  -83403;13;0;false;false;0;0;0;;;
                                  -83416;3;0;false;false;;;;;;
                                  -83419;1;0;false;false;0;0;0;;;
                                  -83420;3;0;false;false;;;;;;
                                  -83423;4;1;false;false;127;0;85;;;
                                  -83427;4;0;false;false;;;;;;
                                  -83431;2;1;false;false;127;0;85;;;
                                  -83433;1;0;false;false;;;;;;
                                  -83434;8;0;false;false;0;0;0;;;
                                  -83442;1;0;false;false;;;;;;
                                  -83443;1;0;false;false;0;0;0;;;
                                  -83444;1;0;false;false;;;;;;
                                  -83445;2;0;false;false;0;0;0;;;
                                  -83447;1;0;false;false;;;;;;
                                  -83448;1;0;false;false;0;0;0;;;
                                  -83449;4;0;false;false;;;;;;
                                  -83453;20;0;false;false;0;0;0;;;
                                  -83473;1;0;false;false;;;;;;
                                  -83474;10;0;false;false;0;0;0;;;
                                  -83484;3;0;false;false;;;;;;
                                  -83487;1;0;false;false;0;0;0;;;
                                  -83488;3;0;false;false;;;;;;
                                  -83491;4;1;false;false;127;0;85;;;
                                  -83495;4;0;false;false;;;;;;
                                  -83499;2;1;false;false;127;0;85;;;
                                  -83501;1;0;false;false;;;;;;
                                  -83502;8;0;false;false;0;0;0;;;
                                  -83510;1;0;false;false;;;;;;
                                  -83511;1;0;false;false;0;0;0;;;
                                  -83512;1;0;false;false;;;;;;
                                  -83513;10;0;false;false;0;0;0;;;
                                  -83523;1;0;false;false;;;;;;
                                  -83524;2;0;false;false;0;0;0;;;
                                  -83526;1;0;false;false;;;;;;
                                  -83527;10;0;false;false;0;0;0;;;
                                  -83537;1;0;false;false;;;;;;
                                  -83538;1;0;false;false;0;0;0;;;
                                  -83539;4;0;false;false;;;;;;
                                  -83543;32;0;false;false;0;0;0;;;
                                  -83575;1;0;false;false;;;;;;
                                  -83576;10;0;false;false;0;0;0;;;
                                  -83586;1;0;false;false;;;;;;
                                  -83587;1;0;false;false;0;0;0;;;
                                  -83588;1;0;false;false;;;;;;
                                  -83589;9;0;false;false;0;0;0;;;
                                  -83598;3;0;false;false;;;;;;
                                  -83601;1;0;false;false;0;0;0;;;
                                  -83602;3;0;false;false;;;;;;
                                  -83605;4;1;false;false;127;0;85;;;
                                  -83609;4;0;false;false;;;;;;
                                  -83613;2;1;false;false;127;0;85;;;
                                  -83615;1;0;false;false;;;;;;
                                  -83616;8;0;false;false;0;0;0;;;
                                  -83624;1;0;false;false;;;;;;
                                  -83625;1;0;false;false;0;0;0;;;
                                  -83626;1;0;false;false;;;;;;
                                  -83627;10;0;false;false;0;0;0;;;
                                  -83637;1;0;false;false;;;;;;
                                  -83638;1;0;false;false;0;0;0;;;
                                  -83639;1;0;false;false;;;;;;
                                  -83640;10;0;false;false;0;0;0;;;
                                  -83650;1;0;false;false;;;;;;
                                  -83651;1;0;false;false;0;0;0;;;
                                  -83652;1;0;false;false;;;;;;
                                  -83653;11;0;false;false;0;0;0;;;
                                  -83664;1;0;false;false;;;;;;
                                  -83665;2;0;false;false;0;0;0;;;
                                  -83667;1;0;false;false;;;;;;
                                  -83668;10;0;false;false;0;0;0;;;
                                  -83678;1;0;false;false;;;;;;
                                  -83679;1;0;false;false;0;0;0;;;
                                  -83680;4;0;false;false;;;;;;
                                  -83684;28;0;false;false;0;0;0;;;
                                  -83712;1;0;false;false;;;;;;
                                  -83713;7;0;false;false;0;0;0;;;
                                  -83720;1;0;false;false;;;;;;
                                  -83721;1;0;false;false;0;0;0;;;
                                  -83722;1;0;false;false;;;;;;
                                  -83723;11;0;false;false;0;0;0;;;
                                  -83734;1;0;false;false;;;;;;
                                  -83735;1;0;false;false;0;0;0;;;
                                  -83736;1;0;false;false;;;;;;
                                  -83737;10;0;false;false;0;0;0;;;
                                  -83747;1;0;false;false;;;;;;
                                  -83748;1;0;false;false;0;0;0;;;
                                  -83749;1;0;false;false;;;;;;
                                  -83750;14;0;false;false;0;0;0;;;
                                  -83764;3;0;false;false;;;;;;
                                  -83767;1;0;false;false;0;0;0;;;
                                  -83768;3;0;false;false;;;;;;
                                  -83771;4;1;false;false;127;0;85;;;
                                  -83775;1;0;false;false;;;;;;
                                  -83776;1;0;false;false;0;0;0;;;
                                  -83777;4;0;false;false;;;;;;
                                  -83781;16;0;false;false;0;0;0;;;
                                  -83797;3;0;false;false;;;;;;
                                  -83800;1;0;false;false;0;0;0;;;
                                  -83801;2;0;false;false;;;;;;
                                  -83803;1;0;false;false;0;0;0;;;
                                  -83804;2;0;false;false;;;;;;
                                  -83806;3;0;false;false;63;95;191;;;
                                  -83809;4;0;false;false;;;;;;
                                  -83813;1;0;false;false;63;95;191;;;
                                  -83814;1;0;false;false;;;;;;
                                  -83815;9;0;false;false;63;95;191;;;
                                  -83824;1;0;false;false;;;;;;
                                  -83825;14;0;false;false;63;95;191;;;
                                  -83839;3;0;false;false;;;;;;
                                  -83842;1;0;false;false;63;95;191;;;
                                  -83843;1;0;false;false;;;;;;
                                  -83844;3;0;false;false;127;127;159;;;
                                  -83847;3;0;false;false;;;;;;
                                  -83850;1;0;false;false;63;95;191;;;
                                  -83851;3;0;false;false;;;;;;
                                  -83854;1;0;false;false;63;95;191;;;
                                  -83855;1;0;false;false;;;;;;
                                  -83856;7;1;false;false;127;159;191;;;
                                  -83863;9;0;false;false;63;95;191;;;
                                  -83872;1;0;false;false;;;;;;
                                  -83873;7;0;false;false;63;95;191;;;
                                  -83880;1;0;false;false;;;;;;
                                  -83881;9;0;false;false;63;95;191;;;
                                  -83890;1;0;false;false;;;;;;
                                  -83891;16;0;false;false;63;95;191;;;
                                  -83907;1;0;false;false;;;;;;
                                  -83908;19;0;false;false;63;95;191;;;
                                  -83927;3;0;false;false;;;;;;
                                  -83930;2;0;false;false;63;95;191;;;
                                  -83932;2;0;false;false;;;;;;
                                  -83934;4;1;false;false;127;0;85;;;
                                  -83938;1;0;false;false;;;;;;
                                  -83939;13;0;false;false;0;0;0;;;
                                  -83952;3;1;false;false;127;0;85;;;
                                  -83955;1;0;false;false;;;;;;
                                  -83956;10;0;false;false;0;0;0;;;
                                  -83966;1;0;false;false;;;;;;
                                  -83967;3;1;false;false;127;0;85;;;
                                  -83970;1;0;false;false;;;;;;
                                  -83971;9;0;false;false;0;0;0;;;
                                  -83980;1;0;false;false;;;;;;
                                  -83981;1;0;false;false;0;0;0;;;
                                  -83982;3;0;false;false;;;;;;
                                  -83985;8;0;false;false;0;0;0;;;
                                  -83993;1;0;false;false;;;;;;
                                  -83994;5;0;false;false;0;0;0;;;
                                  -83999;1;0;false;false;;;;;;
                                  -84000;1;0;false;false;0;0;0;;;
                                  -84001;1;0;false;false;;;;;;
                                  -84002;4;1;false;false;127;0;85;;;
                                  -84006;1;0;false;false;0;0;0;;;
                                  -84007;6;0;false;false;;;;;;
                                  -84013;18;0;false;false;0;0;0;;;
                                  -84031;1;0;false;false;;;;;;
                                  -84032;1;0;false;false;0;0;0;;;
                                  -84033;1;0;false;false;;;;;;
                                  -84034;9;0;false;false;0;0;0;;;
                                  -84043;5;0;false;false;;;;;;
                                  -84048;69;0;false;false;63;127;95;;;
                                  -84117;1;0;false;false;;;;;;
                                  -84118;2;1;false;false;127;0;85;;;
                                  -84120;1;0;false;false;;;;;;
                                  -84121;20;0;false;false;0;0;0;;;
                                  -84141;1;0;false;false;;;;;;
                                  -84142;2;0;false;false;0;0;0;;;
                                  -84144;1;0;false;false;;;;;;
                                  -84145;10;0;false;false;0;0;0;;;
                                  -84155;1;0;false;false;;;;;;
                                  -84156;1;0;false;false;0;0;0;;;
                                  -84157;4;0;false;false;;;;;;
                                  -84161;6;1;false;false;127;0;85;;;
                                  -84167;1;0;false;false;0;0;0;;;
                                  -84168;3;0;false;false;;;;;;
                                  -84171;1;0;false;false;0;0;0;;;
                                  -84172;6;0;false;false;;;;;;
                                  -84178;5;1;false;false;127;0;85;;;
                                  -84183;1;0;false;false;;;;;;
                                  -84184;7;0;false;false;0;0;0;;;
                                  -84191;1;0;false;false;;;;;;
                                  -84192;7;0;false;false;0;0;0;;;
                                  -84199;1;0;false;false;;;;;;
                                  -84200;1;0;false;false;0;0;0;;;
                                  -84201;1;0;false;false;;;;;;
                                  -84202;13;0;false;false;0;0;0;;;
                                  -84215;3;0;false;false;;;;;;
                                  -84218;65;0;false;false;63;127;95;;;
                                  -84283;1;0;false;false;;;;;;
                                  -84284;50;0;false;false;63;127;95;;;
                                  -84334;1;0;false;false;;;;;;
                                  -84335;2;1;false;false;127;0;85;;;
                                  -84337;1;0;false;false;;;;;;
                                  -84338;10;0;false;false;0;0;0;;;
                                  -84348;1;0;false;false;;;;;;
                                  -84349;2;0;false;false;0;0;0;;;
                                  -84351;1;0;false;false;;;;;;
                                  -84352;7;0;false;false;0;0;0;;;
                                  -84359;1;0;false;false;;;;;;
                                  -84360;1;0;false;false;0;0;0;;;
                                  -84361;4;0;false;false;;;;;;
                                  -84365;5;0;false;false;0;0;0;;;
                                  -84370;1;0;false;false;;;;;;
                                  -84371;1;0;false;false;0;0;0;;;
                                  -84372;1;0;false;false;;;;;;
                                  -84373;3;1;false;false;127;0;85;;;
                                  -84376;1;0;false;false;;;;;;
                                  -84377;10;0;false;false;0;0;0;;;
                                  -84387;1;0;false;false;;;;;;
                                  -84388;1;0;false;false;0;0;0;;;
                                  -84389;5;0;false;false;;;;;;
                                  -84394;6;1;false;false;127;0;85;;;
                                  -84400;1;0;false;false;;;;;;
                                  -84401;4;1;false;false;127;0;85;;;
                                  -84405;1;0;false;false;;;;;;
                                  -84406;5;0;false;false;0;0;0;;;
                                  -84411;1;0;false;false;;;;;;
                                  -84412;1;0;false;false;0;0;0;;;
                                  -84413;6;0;false;false;;;;;;
                                  -84419;2;1;false;false;127;0;85;;;
                                  -84421;1;0;false;false;;;;;;
                                  -84422;20;0;false;false;0;0;0;;;
                                  -84442;1;0;false;false;;;;;;
                                  -84443;2;0;false;false;0;0;0;;;
                                  -84445;1;0;false;false;;;;;;
                                  -84446;7;0;false;false;0;0;0;;;
                                  -84453;1;0;false;false;;;;;;
                                  -84454;1;0;false;false;0;0;0;;;
                                  -84455;7;0;false;false;;;;;;
                                  -84462;3;1;false;false;127;0;85;;;
                                  -84465;1;0;false;false;;;;;;
                                  -84466;5;0;false;false;0;0;0;;;
                                  -84471;1;0;false;false;;;;;;
                                  -84472;1;0;false;false;0;0;0;;;
                                  -84473;1;0;false;false;;;;;;
                                  -84474;19;0;false;false;0;0;0;;;
                                  -84493;1;0;false;false;;;;;;
                                  -84494;1;0;false;false;0;0;0;;;
                                  -84495;1;0;false;false;;;;;;
                                  -84496;16;0;false;false;0;0;0;;;
                                  -84512;1;0;false;false;;;;;;
                                  -84513;1;0;false;false;0;0;0;;;
                                  -84514;1;0;false;false;;;;;;
                                  -84515;2;0;false;false;0;0;0;;;
                                  -84517;7;0;false;false;;;;;;
                                  -84524;25;0;false;false;0;0;0;;;
                                  -84549;7;0;false;false;;;;;;
                                  -84556;32;0;false;false;0;0;0;;;
                                  -84588;1;0;false;false;;;;;;
                                  -84589;4;1;false;false;127;0;85;;;
                                  -84593;2;0;false;false;0;0;0;;;
                                  -84595;6;0;false;false;;;;;;
                                  -84601;1;0;false;false;0;0;0;;;
                                  -84602;5;0;false;false;;;;;;
                                  -84607;1;0;false;false;0;0;0;;;
                                  -84608;4;0;false;false;;;;;;
                                  -84612;2;0;false;false;0;0;0;;;
                                  -84614;4;0;false;false;;;;;;
                                  -84618;19;0;false;false;0;0;0;;;
                                  -84637;1;0;false;false;;;;;;
                                  -84638;1;0;false;false;0;0;0;;;
                                  -84639;1;0;false;false;;;;;;
                                  -84640;10;0;false;false;0;0;0;;;
                                  -84650;4;0;false;false;;;;;;
                                  -84654;32;0;false;false;0;0;0;;;
                                  -84686;1;0;false;false;;;;;;
                                  -84687;7;0;false;false;0;0;0;;;
                                  -84694;3;0;false;false;;;;;;
                                  -84697;1;0;false;false;0;0;0;;;
                                  -84698;1;0;false;false;;;;;;
                                  -84699;4;1;false;false;127;0;85;;;
                                  -84703;1;0;false;false;;;;;;
                                  -84704;2;1;false;false;127;0;85;;;
                                  -84706;1;0;false;false;;;;;;
                                  -84707;10;0;false;false;0;0;0;;;
                                  -84717;1;0;false;false;;;;;;
                                  -84718;2;0;false;false;0;0;0;;;
                                  -84720;1;0;false;false;;;;;;
                                  -84721;9;0;false;false;0;0;0;;;
                                  -84730;1;0;false;false;;;;;;
                                  -84731;1;0;false;false;0;0;0;;;
                                  -84732;4;0;false;false;;;;;;
                                  -84736;5;0;false;false;0;0;0;;;
                                  -84741;1;0;false;false;;;;;;
                                  -84742;1;0;false;false;0;0;0;;;
                                  -84743;1;0;false;false;;;;;;
                                  -84744;3;1;false;false;127;0;85;;;
                                  -84747;1;0;false;false;;;;;;
                                  -84748;10;0;false;false;0;0;0;;;
                                  -84758;1;0;false;false;;;;;;
                                  -84759;1;0;false;false;0;0;0;;;
                                  -84760;5;0;false;false;;;;;;
                                  -84765;6;1;false;false;127;0;85;;;
                                  -84771;1;0;false;false;;;;;;
                                  -84772;4;1;false;false;127;0;85;;;
                                  -84776;1;0;false;false;;;;;;
                                  -84777;5;0;false;false;0;0;0;;;
                                  -84782;1;0;false;false;;;;;;
                                  -84783;1;0;false;false;0;0;0;;;
                                  -84784;6;0;false;false;;;;;;
                                  -84790;2;1;false;false;127;0;85;;;
                                  -84792;1;0;false;false;;;;;;
                                  -84793;20;0;false;false;0;0;0;;;
                                  -84813;1;0;false;false;;;;;;
                                  -84814;2;0;false;false;0;0;0;;;
                                  -84816;1;0;false;false;;;;;;
                                  -84817;9;0;false;false;0;0;0;;;
                                  -84826;1;0;false;false;;;;;;
                                  -84827;1;0;false;false;0;0;0;;;
                                  -84828;7;0;false;false;;;;;;
                                  -84835;3;1;false;false;127;0;85;;;
                                  -84838;1;0;false;false;;;;;;
                                  -84839;5;0;false;false;0;0;0;;;
                                  -84844;1;0;false;false;;;;;;
                                  -84845;1;0;false;false;0;0;0;;;
                                  -84846;1;0;false;false;;;;;;
                                  -84847;19;0;false;false;0;0;0;;;
                                  -84866;1;0;false;false;;;;;;
                                  -84867;1;0;false;false;0;0;0;;;
                                  -84868;1;0;false;false;;;;;;
                                  -84869;16;0;false;false;0;0;0;;;
                                  -84885;1;0;false;false;;;;;;
                                  -84886;1;0;false;false;0;0;0;;;
                                  -84887;1;0;false;false;;;;;;
                                  -84888;2;0;false;false;0;0;0;;;
                                  -84890;7;0;false;false;;;;;;
                                  -84897;27;0;false;false;0;0;0;;;
                                  -84924;7;0;false;false;;;;;;
                                  -84931;32;0;false;false;0;0;0;;;
                                  -84963;1;0;false;false;;;;;;
                                  -84964;4;1;false;false;127;0;85;;;
                                  -84968;2;0;false;false;0;0;0;;;
                                  -84970;6;0;false;false;;;;;;
                                  -84976;1;0;false;false;0;0;0;;;
                                  -84977;5;0;false;false;;;;;;
                                  -84982;1;0;false;false;0;0;0;;;
                                  -84983;4;0;false;false;;;;;;
                                  -84987;2;0;false;false;0;0;0;;;
                                  -84989;4;0;false;false;;;;;;
                                  -84993;19;0;false;false;0;0;0;;;
                                  -85012;1;0;false;false;;;;;;
                                  -85013;1;0;false;false;0;0;0;;;
                                  -85014;1;0;false;false;;;;;;
                                  -85015;10;0;false;false;0;0;0;;;
                                  -85025;4;0;false;false;;;;;;
                                  -85029;32;0;false;false;0;0;0;;;
                                  -85061;1;0;false;false;;;;;;
                                  -85062;7;0;false;false;0;0;0;;;
                                  -85069;3;0;false;false;;;;;;
                                  -85072;1;0;false;false;0;0;0;;;
                                  -85073;1;0;false;false;;;;;;
                                  -85074;4;1;false;false;127;0;85;;;
                                  -85078;1;0;false;false;;;;;;
                                  -85079;2;1;false;false;127;0;85;;;
                                  -85081;1;0;false;false;;;;;;
                                  -85082;10;0;false;false;0;0;0;;;
                                  -85092;1;0;false;false;;;;;;
                                  -85093;2;0;false;false;0;0;0;;;
                                  -85095;1;0;false;false;;;;;;
                                  -85096;15;0;false;false;0;0;0;;;
                                  -85111;1;0;false;false;;;;;;
                                  -85112;1;0;false;false;0;0;0;;;
                                  -85113;4;0;false;false;;;;;;
                                  -85117;5;0;false;false;0;0;0;;;
                                  -85122;1;0;false;false;;;;;;
                                  -85123;1;0;false;false;0;0;0;;;
                                  -85124;1;0;false;false;;;;;;
                                  -85125;3;1;false;false;127;0;85;;;
                                  -85128;1;0;false;false;;;;;;
                                  -85129;10;0;false;false;0;0;0;;;
                                  -85139;1;0;false;false;;;;;;
                                  -85140;1;0;false;false;0;0;0;;;
                                  -85141;5;0;false;false;;;;;;
                                  -85146;6;1;false;false;127;0;85;;;
                                  -85152;1;0;false;false;;;;;;
                                  -85153;4;1;false;false;127;0;85;;;
                                  -85157;1;0;false;false;;;;;;
                                  -85158;5;0;false;false;0;0;0;;;
                                  -85163;1;0;false;false;;;;;;
                                  -85164;1;0;false;false;0;0;0;;;
                                  -85165;6;0;false;false;;;;;;
                                  -85171;2;1;false;false;127;0;85;;;
                                  -85173;1;0;false;false;;;;;;
                                  -85174;20;0;false;false;0;0;0;;;
                                  -85194;1;0;false;false;;;;;;
                                  -85195;2;0;false;false;0;0;0;;;
                                  -85197;1;0;false;false;;;;;;
                                  -85198;15;0;false;false;0;0;0;;;
                                  -85213;1;0;false;false;;;;;;
                                  -85214;1;0;false;false;0;0;0;;;
                                  -85215;7;0;false;false;;;;;;
                                  -85222;15;0;false;false;0;0;0;;;
                                  -85237;7;0;false;false;;;;;;
                                  -85244;30;0;false;false;0;0;0;;;
                                  -85274;7;0;false;false;;;;;;
                                  -85281;19;0;false;false;0;0;0;;;
                                  -85300;7;0;false;false;;;;;;
                                  -85307;32;0;false;false;0;0;0;;;
                                  -85339;1;0;false;false;;;;;;
                                  -85340;4;1;false;false;127;0;85;;;
                                  -85344;2;0;false;false;0;0;0;;;
                                  -85346;6;0;false;false;;;;;;
                                  -85352;1;0;false;false;0;0;0;;;
                                  -85353;5;0;false;false;;;;;;
                                  -85358;1;0;false;false;0;0;0;;;
                                  -85359;4;0;false;false;;;;;;
                                  -85363;2;0;false;false;0;0;0;;;
                                  -85365;4;0;false;false;;;;;;
                                  -85369;19;0;false;false;0;0;0;;;
                                  -85388;1;0;false;false;;;;;;
                                  -85389;1;0;false;false;0;0;0;;;
                                  -85390;1;0;false;false;;;;;;
                                  -85391;10;0;false;false;0;0;0;;;
                                  -85401;4;0;false;false;;;;;;
                                  -85405;32;0;false;false;0;0;0;;;
                                  -85437;1;0;false;false;;;;;;
                                  -85438;7;0;false;false;0;0;0;;;
                                  -85445;3;0;false;false;;;;;;
                                  -85448;1;0;false;false;0;0;0;;;
                                  -85449;1;0;false;false;;;;;;
                                  -85450;4;1;false;false;127;0;85;;;
                                  -85454;1;0;false;false;;;;;;
                                  -85455;2;1;false;false;127;0;85;;;
                                  -85457;1;0;false;false;;;;;;
                                  -85458;10;0;false;false;0;0;0;;;
                                  -85468;1;0;false;false;;;;;;
                                  -85469;2;0;false;false;0;0;0;;;
                                  -85471;1;0;false;false;;;;;;
                                  -85472;19;0;false;false;0;0;0;;;
                                  -85491;1;0;false;false;;;;;;
                                  -85492;1;0;false;false;0;0;0;;;
                                  -85493;4;0;false;false;;;;;;
                                  -85497;5;0;false;false;0;0;0;;;
                                  -85502;1;0;false;false;;;;;;
                                  -85503;1;0;false;false;0;0;0;;;
                                  -85504;1;0;false;false;;;;;;
                                  -85505;3;1;false;false;127;0;85;;;
                                  -85508;1;0;false;false;;;;;;
                                  -85509;10;0;false;false;0;0;0;;;
                                  -85519;1;0;false;false;;;;;;
                                  -85520;1;0;false;false;0;0;0;;;
                                  -85521;5;0;false;false;;;;;;
                                  -85526;6;1;false;false;127;0;85;;;
                                  -85532;1;0;false;false;;;;;;
                                  -85533;4;1;false;false;127;0;85;;;
                                  -85537;1;0;false;false;;;;;;
                                  -85538;5;0;false;false;0;0;0;;;
                                  -85543;1;0;false;false;;;;;;
                                  -85544;1;0;false;false;0;0;0;;;
                                  -85545;6;0;false;false;;;;;;
                                  -85551;2;1;false;false;127;0;85;;;
                                  -85553;1;0;false;false;;;;;;
                                  -85554;20;0;false;false;0;0;0;;;
                                  -85574;1;0;false;false;;;;;;
                                  -85575;2;0;false;false;0;0;0;;;
                                  -85577;1;0;false;false;;;;;;
                                  -85578;19;0;false;false;0;0;0;;;
                                  -85597;1;0;false;false;;;;;;
                                  -85598;1;0;false;false;0;0;0;;;
                                  -85599;7;0;false;false;;;;;;
                                  -85606;19;0;false;false;0;0;0;;;
                                  -85625;7;0;false;false;;;;;;
                                  -85632;30;0;false;false;0;0;0;;;
                                  -85662;7;0;false;false;;;;;;
                                  -85669;19;0;false;false;0;0;0;;;
                                  -85688;7;0;false;false;;;;;;
                                  -85695;32;0;false;false;0;0;0;;;
                                  -85727;1;0;false;false;;;;;;
                                  -85728;4;1;false;false;127;0;85;;;
                                  -85732;2;0;false;false;0;0;0;;;
                                  -85734;6;0;false;false;;;;;;
                                  -85740;1;0;false;false;0;0;0;;;
                                  -85741;5;0;false;false;;;;;;
                                  -85746;1;0;false;false;0;0;0;;;
                                  -85747;4;0;false;false;;;;;;
                                  -85751;2;0;false;false;0;0;0;;;
                                  -85753;4;0;false;false;;;;;;
                                  -85757;19;0;false;false;0;0;0;;;
                                  -85776;1;0;false;false;;;;;;
                                  -85777;1;0;false;false;0;0;0;;;
                                  -85778;1;0;false;false;;;;;;
                                  -85779;10;0;false;false;0;0;0;;;
                                  -85789;4;0;false;false;;;;;;
                                  -85793;32;0;false;false;0;0;0;;;
                                  -85825;1;0;false;false;;;;;;
                                  -85826;7;0;false;false;0;0;0;;;
                                  -85833;3;0;false;false;;;;;;
                                  -85836;1;0;false;false;0;0;0;;;
                                  -85837;2;0;false;false;;;;;;
                                  -85839;1;0;false;false;0;0;0;;;
                                  -85840;2;0;false;false;;;;;;
                                  -85842;3;0;false;false;63;95;191;;;
                                  -85845;3;0;false;false;;;;;;
                                  -85848;1;0;false;false;63;95;191;;;
                                  -85849;1;0;false;false;;;;;;
                                  -85850;7;0;false;false;63;95;191;;;
                                  -85857;1;0;false;false;;;;;;
                                  -85858;3;0;false;false;63;95;191;;;
                                  -85861;1;0;false;false;;;;;;
                                  -85862;8;0;false;false;63;95;191;;;
                                  -85870;1;0;false;false;;;;;;
                                  -85871;10;0;false;false;63;95;191;;;
                                  -85881;1;0;false;false;;;;;;
                                  -85882;6;0;false;false;63;95;191;;;
                                  -85888;1;0;false;false;;;;;;
                                  -85889;3;0;false;false;63;95;191;;;
                                  -85892;1;0;false;false;;;;;;
                                  -85893;8;0;false;false;63;95;191;;;
                                  -85901;1;0;false;false;;;;;;
                                  -85902;4;0;false;false;63;95;191;;;
                                  -85906;1;0;false;false;;;;;;
                                  -85907;2;0;false;false;63;95;191;;;
                                  -85909;1;0;false;false;;;;;;
                                  -85910;4;0;false;false;63;95;191;;;
                                  -85914;3;0;false;false;;;;;;
                                  -85917;1;0;false;false;63;95;191;;;
                                  -85918;1;0;false;false;;;;;;
                                  -85919;4;0;false;false;63;95;191;;;
                                  -85923;1;0;false;false;;;;;;
                                  -85924;3;0;false;false;63;95;191;;;
                                  -85927;1;0;false;false;;;;;;
                                  -85928;5;0;false;false;63;95;191;;;
                                  -85933;1;0;false;false;;;;;;
                                  -85934;2;0;false;false;63;95;191;;;
                                  -85936;1;0;false;false;;;;;;
                                  -85937;5;0;false;false;63;95;191;;;
                                  -85942;1;0;false;false;;;;;;
                                  -85943;2;0;false;false;63;95;191;;;
                                  -85945;1;0;false;false;;;;;;
                                  -85946;3;0;false;false;63;95;191;;;
                                  -85949;1;0;false;false;;;;;;
                                  -85950;7;0;false;false;63;95;191;;;
                                  -85957;1;0;false;false;;;;;;
                                  -85958;5;0;false;false;63;95;191;;;
                                  -85963;3;0;false;false;;;;;;
                                  -85966;2;0;false;false;63;95;191;;;
                                  -85968;2;0;false;false;;;;;;
                                  -85970;4;1;false;false;127;0;85;;;
                                  -85974;1;0;false;false;;;;;;
                                  -85975;13;0;false;false;0;0;0;;;
                                  -85988;1;0;false;false;;;;;;
                                  -85989;1;0;false;false;0;0;0;;;
                                  -85990;3;0;false;false;;;;;;
                                  -85993;5;0;false;false;0;0;0;;;
                                  -85998;1;0;false;false;;;;;;
                                  -85999;5;0;false;false;0;0;0;;;
                                  -86004;1;0;false;false;;;;;;
                                  -86005;1;0;false;false;0;0;0;;;
                                  -86006;1;0;false;false;;;;;;
                                  -86007;3;1;false;false;127;0;85;;;
                                  -86010;1;0;false;false;;;;;;
                                  -86011;8;0;false;false;0;0;0;;;
                                  -86019;3;0;false;false;;;;;;
                                  -86022;10;0;false;false;0;0;0;;;
                                  -86032;1;0;false;false;;;;;;
                                  -86033;1;0;false;false;0;0;0;;;
                                  -86034;1;0;false;false;;;;;;
                                  -86035;2;0;false;false;42;0;255;;;
                                  -86037;1;0;false;false;0;0;0;;;
                                  -86038;3;0;false;false;;;;;;
                                  -86041;2;1;false;false;127;0;85;;;
                                  -86043;1;0;false;false;;;;;;
                                  -86044;12;0;false;false;0;0;0;;;
                                  -86056;1;0;false;false;;;;;;
                                  -86057;2;0;false;false;0;0;0;;;
                                  -86059;1;0;false;false;;;;;;
                                  -86060;12;0;false;false;0;0;0;;;
                                  -86072;1;0;false;false;;;;;;
                                  -86073;1;0;false;false;0;0;0;;;
                                  -86074;4;0;false;false;;;;;;
                                  -86078;11;0;false;false;0;0;0;;;
                                  -86089;1;0;false;false;;;;;;
                                  -86090;1;0;false;false;0;0;0;;;
                                  -86091;1;0;false;false;;;;;;
                                  -86092;12;0;false;false;0;0;0;;;
                                  -86104;4;0;false;false;;;;;;
                                  -86108;9;0;false;false;0;0;0;;;
                                  -86117;1;0;false;false;;;;;;
                                  -86118;1;0;false;false;0;0;0;;;
                                  -86119;1;0;false;false;;;;;;
                                  -86120;12;0;false;false;0;0;0;;;
                                  -86132;4;0;false;false;;;;;;
                                  -86136;20;0;false;false;0;0;0;;;
                                  -86156;3;0;false;false;;;;;;
                                  -86159;1;0;false;false;0;0;0;;;
                                  -86160;3;0;false;false;;;;;;
                                  -86163;4;1;false;false;127;0;85;;;
                                  -86167;3;0;false;false;;;;;;
                                  -86170;2;1;false;false;127;0;85;;;
                                  -86172;1;0;false;false;;;;;;
                                  -86173;12;0;false;false;0;0;0;;;
                                  -86185;1;0;false;false;;;;;;
                                  -86186;1;0;false;false;0;0;0;;;
                                  -86187;1;0;false;false;;;;;;
                                  -86188;2;0;false;false;0;0;0;;;
                                  -86190;1;0;false;false;;;;;;
                                  -86191;1;0;false;false;0;0;0;;;
                                  -86192;4;0;false;false;;;;;;
                                  -86196;3;1;false;false;127;0;85;;;
                                  -86199;1;0;false;false;;;;;;
                                  -86200;4;0;false;false;0;0;0;;;
                                  -86204;1;0;false;false;;;;;;
                                  -86205;1;0;false;false;0;0;0;;;
                                  -86206;1;0;false;false;;;;;;
                                  -86207;37;0;false;false;0;0;0;;;
                                  -86244;4;0;false;false;;;;;;
                                  -86248;3;1;false;false;127;0;85;;;
                                  -86251;1;0;false;false;;;;;;
                                  -86252;10;0;false;false;0;0;0;;;
                                  -86262;1;0;false;false;;;;;;
                                  -86263;1;0;false;false;0;0;0;;;
                                  -86264;1;0;false;false;;;;;;
                                  -86265;30;0;false;false;0;0;0;;;
                                  -86295;10;0;false;false;;;;;;
                                  -86305;2;1;false;false;127;0;85;;;
                                  -86307;1;0;false;false;;;;;;
                                  -86308;12;0;false;false;0;0;0;;;
                                  -86320;1;0;false;false;;;;;;
                                  -86321;2;0;false;false;0;0;0;;;
                                  -86323;1;0;false;false;;;;;;
                                  -86324;11;0;false;false;0;0;0;;;
                                  -86335;1;0;false;false;;;;;;
                                  -86336;1;0;false;false;0;0;0;;;
                                  -86337;5;0;false;false;;;;;;
                                  -86342;10;0;false;false;0;0;0;;;
                                  -86352;1;0;false;false;;;;;;
                                  -86353;1;0;false;false;0;0;0;;;
                                  -86354;1;0;false;false;;;;;;
                                  -86355;28;0;false;false;0;0;0;;;
                                  -86383;1;0;false;false;;;;;;
                                  -86384;1;0;false;false;0;0;0;;;
                                  -86385;1;0;false;false;;;;;;
                                  -86386;3;0;false;false;0;0;0;;;
                                  -86389;5;0;false;false;;;;;;
                                  -86394;11;0;false;false;0;0;0;;;
                                  -86405;1;0;false;false;;;;;;
                                  -86406;1;0;false;false;0;0;0;;;
                                  -86407;1;0;false;false;;;;;;
                                  -86408;10;0;false;false;0;0;0;;;
                                  -86418;1;0;false;false;;;;;;
                                  -86419;1;0;false;false;0;0;0;;;
                                  -86420;1;0;false;false;;;;;;
                                  -86421;20;0;false;false;0;0;0;;;
                                  -86441;1;0;false;false;;;;;;
                                  -86442;1;0;false;false;0;0;0;;;
                                  -86443;1;0;false;false;;;;;;
                                  -86444;12;0;false;false;0;0;0;;;
                                  -86456;5;0;false;false;;;;;;
                                  -86461;9;0;false;false;0;0;0;;;
                                  -86470;1;0;false;false;;;;;;
                                  -86471;1;0;false;false;0;0;0;;;
                                  -86472;1;0;false;false;;;;;;
                                  -86473;12;0;false;false;0;0;0;;;
                                  -86485;4;0;false;false;;;;;;
                                  -86489;1;0;false;false;0;0;0;;;
                                  -86490;4;0;false;false;;;;;;
                                  -86494;4;1;false;false;127;0;85;;;
                                  -86498;1;0;false;false;;;;;;
                                  -86499;1;0;false;false;0;0;0;;;
                                  -86500;5;0;false;false;;;;;;
                                  -86505;6;0;false;false;0;0;0;;;
                                  -86511;1;0;false;false;;;;;;
                                  -86512;8;0;false;false;0;0;0;;;
                                  -86520;1;0;false;false;;;;;;
                                  -86521;1;0;false;false;0;0;0;;;
                                  -86522;1;0;false;false;;;;;;
                                  -86523;22;0;false;false;0;0;0;;;
                                  -86545;5;0;false;false;;;;;;
                                  -86550;10;0;false;false;0;0;0;;;
                                  -86560;1;0;false;false;;;;;;
                                  -86561;6;0;false;false;0;0;0;;;
                                  -86567;1;0;false;false;;;;;;
                                  -86568;1;0;false;false;0;0;0;;;
                                  -86569;1;0;false;false;;;;;;
                                  -86570;32;0;false;false;0;0;0;;;
                                  -86602;1;0;false;false;;;;;;
                                  -86603;12;0;false;false;0;0;0;;;
                                  -86615;5;0;false;false;;;;;;
                                  -86620;3;1;false;false;127;0;85;;;
                                  -86623;1;0;false;false;;;;;;
                                  -86624;5;0;false;false;0;0;0;;;
                                  -86629;1;0;false;false;;;;;;
                                  -86630;1;0;false;false;0;0;0;;;
                                  -86631;1;0;false;false;;;;;;
                                  -86632;36;0;false;false;0;0;0;;;
                                  -86668;1;0;false;false;;;;;;
                                  -86669;1;0;false;false;0;0;0;;;
                                  -86670;1;0;false;false;;;;;;
                                  -86671;11;0;false;false;0;0;0;;;
                                  -86682;1;0;false;false;;;;;;
                                  -86683;19;0;false;false;0;0;0;;;
                                  -86702;5;0;false;false;;;;;;
                                  -86707;35;0;false;false;0;0;0;;;
                                  -86742;6;0;false;false;;;;;;
                                  -86748;11;0;false;false;0;0;0;;;
                                  -86759;1;0;false;false;;;;;;
                                  -86760;1;0;false;false;0;0;0;;;
                                  -86761;1;0;false;false;;;;;;
                                  -86762;5;0;false;false;0;0;0;;;
                                  -86767;1;0;false;false;;;;;;
                                  -86768;1;0;false;false;0;0;0;;;
                                  -86769;1;0;false;false;;;;;;
                                  -86770;11;0;false;false;0;0;0;;;
                                  -86781;5;0;false;false;;;;;;
                                  -86786;9;0;false;false;0;0;0;;;
                                  -86795;1;0;false;false;;;;;;
                                  -86796;1;0;false;false;0;0;0;;;
                                  -86797;1;0;false;false;;;;;;
                                  -86798;12;0;false;false;0;0;0;;;
                                  -86810;4;0;false;false;;;;;;
                                  -86814;1;0;false;false;0;0;0;;;
                                  -86815;4;0;false;false;;;;;;
                                  -86819;20;0;false;false;0;0;0;;;
                                  -86839;3;0;false;false;;;;;;
                                  -86842;1;0;false;false;0;0;0;;;
                                  -86843;2;0;false;false;;;;;;
                                  -86845;1;0;false;false;0;0;0;;;
                                  -86846;2;0;false;false;;;;;;
                                  -86848;3;0;false;false;63;95;191;;;
                                  -86851;3;0;false;false;;;;;;
                                  -86854;1;0;false;false;63;95;191;;;
                                  -86855;1;0;false;false;;;;;;
                                  -86856;8;0;false;false;63;95;191;;;
                                  -86864;1;0;false;false;;;;;;
                                  -86865;3;0;false;false;63;95;191;;;
                                  -86868;1;0;false;false;;;;;;
                                  -86869;9;0;false;false;63;95;191;;;
                                  -86878;1;0;false;false;;;;;;
                                  -86879;4;0;false;false;63;95;191;;;
                                  -86883;1;0;false;false;;;;;;
                                  -86884;3;0;false;false;63;95;191;;;
                                  -86887;1;0;false;false;;;;;;
                                  -86888;9;0;false;false;63;95;191;;;
                                  -86897;1;0;false;false;;;;;;
                                  -86898;2;0;false;false;63;95;191;;;
                                  -86900;1;0;false;false;;;;;;
                                  -86901;6;0;false;false;63;95;191;;;
                                  -86907;1;0;false;false;;;;;;
                                  -86908;3;0;false;false;63;95;191;;;
                                  -86911;1;0;false;false;;;;;;
                                  -86912;9;0;false;false;63;95;191;;;
                                  -86921;1;0;false;false;;;;;;
                                  -86922;2;0;false;false;63;95;191;;;
                                  -86924;1;0;false;false;;;;;;
                                  -86925;3;0;false;false;63;95;191;;;
                                  -86928;4;0;false;false;;;;;;
                                  -86932;1;0;false;false;63;95;191;;;
                                  -86933;1;0;false;false;;;;;;
                                  -86934;7;0;false;false;63;95;191;;;
                                  -86941;1;0;false;false;;;;;;
                                  -86942;5;0;false;false;63;95;191;;;
                                  -86947;1;0;false;false;;;;;;
                                  -86948;8;0;false;false;63;95;191;;;
                                  -86956;1;0;false;false;;;;;;
                                  -86957;2;0;false;false;63;95;191;;;
                                  -86959;1;0;false;false;;;;;;
                                  -86960;2;0;false;false;63;95;191;;;
                                  -86962;1;0;false;false;;;;;;
                                  -86963;9;0;false;false;63;95;191;;;
                                  -86972;1;0;false;false;;;;;;
                                  -86973;7;0;false;false;63;95;191;;;
                                  -86980;3;0;false;false;;;;;;
                                  -86983;1;0;false;false;63;95;191;;;
                                  -86984;1;0;false;false;;;;;;
                                  -86985;2;0;false;false;63;95;191;;;
                                  -86987;1;0;false;false;;;;;;
                                  -86988;1;0;false;false;63;95;191;;;
                                  -86989;1;0;false;false;;;;;;
                                  -86990;8;0;false;false;63;95;191;;;
                                  -86998;1;0;false;false;;;;;;
                                  -86999;6;0;false;false;63;95;191;;;
                                  -87005;1;0;false;false;;;;;;
                                  -87006;3;0;false;false;63;95;191;;;
                                  -87009;1;0;false;false;;;;;;
                                  -87010;5;0;false;false;63;95;191;;;
                                  -87015;1;0;false;false;;;;;;
                                  -87016;7;0;false;false;63;95;191;;;
                                  -87023;1;0;false;false;;;;;;
                                  -87024;2;0;false;false;63;95;191;;;
                                  -87026;1;0;false;false;;;;;;
                                  -87027;4;0;false;false;63;95;191;;;
                                  -87031;1;0;false;false;;;;;;
                                  -87032;3;0;false;false;63;95;191;;;
                                  -87035;1;0;false;false;;;;;;
                                  -87036;4;0;false;false;63;95;191;;;
                                  -87040;1;0;false;false;;;;;;
                                  -87041;5;0;false;false;63;95;191;;;
                                  -87046;1;0;false;false;;;;;;
                                  -87047;9;0;false;false;63;95;191;;;
                                  -87056;4;0;false;false;;;;;;
                                  -87060;1;0;false;false;63;95;191;;;
                                  -87061;1;0;false;false;;;;;;
                                  -87062;4;0;false;false;63;95;191;;;
                                  -87066;1;0;false;false;;;;;;
                                  -87067;2;0;false;false;63;95;191;;;
                                  -87069;1;0;false;false;;;;;;
                                  -87070;3;0;false;false;63;95;191;;;
                                  -87073;1;0;false;false;;;;;;
                                  -87074;6;0;false;false;63;95;191;;;
                                  -87080;1;0;false;false;;;;;;
                                  -87081;2;0;false;false;63;95;191;;;
                                  -87083;1;0;false;false;;;;;;
                                  -87084;4;0;false;false;63;95;191;;;
                                  -87088;1;0;false;false;;;;;;
                                  -87089;9;0;false;false;63;95;191;;;
                                  -87098;3;0;false;false;;;;;;
                                  -87101;1;0;false;false;63;95;191;;;
                                  -87102;1;0;false;false;;;;;;
                                  -87103;3;0;false;false;127;127;159;;;
                                  -87106;3;0;false;false;;;;;;
                                  -87109;1;0;false;false;63;95;191;;;
                                  -87110;3;0;false;false;;;;;;
                                  -87113;1;0;false;false;63;95;191;;;
                                  -87114;1;0;false;false;;;;;;
                                  -87115;7;1;false;false;127;159;191;;;
                                  -87122;3;0;false;false;63;95;191;;;
                                  -87125;1;0;false;false;;;;;;
                                  -87126;3;0;false;false;63;95;191;;;
                                  -87129;1;0;false;false;;;;;;
                                  -87130;9;0;false;false;63;95;191;;;
                                  -87139;1;0;false;false;;;;;;
                                  -87140;5;0;false;false;63;95;191;;;
                                  -87145;1;0;false;false;;;;;;
                                  -87146;2;0;false;false;63;95;191;;;
                                  -87148;1;0;false;false;;;;;;
                                  -87149;3;0;false;false;63;95;191;;;
                                  -87152;1;0;false;false;;;;;;
                                  -87153;4;0;false;false;63;95;191;;;
                                  -87157;3;0;false;false;;;;;;
                                  -87160;2;0;false;false;63;95;191;;;
                                  -87162;2;0;false;false;;;;;;
                                  -87164;4;1;false;false;127;0;85;;;
                                  -87168;1;0;false;false;;;;;;
                                  -87169;10;0;false;false;0;0;0;;;
                                  -87179;4;1;false;false;127;0;85;;;
                                  -87183;1;0;false;false;;;;;;
                                  -87184;4;0;false;false;0;0;0;;;
                                  -87188;1;0;false;false;;;;;;
                                  -87189;1;0;false;false;0;0;0;;;
                                  -87190;3;0;false;false;;;;;;
                                  -87193;5;0;false;false;0;0;0;;;
                                  -87198;1;0;false;false;;;;;;
                                  -87199;6;0;false;false;0;0;0;;;
                                  -87205;6;0;false;false;;;;;;
                                  -87211;2;1;false;false;127;0;85;;;
                                  -87213;1;0;false;false;;;;;;
                                  -87214;10;0;false;false;0;0;0;;;
                                  -87224;1;0;false;false;;;;;;
                                  -87225;1;0;false;false;0;0;0;;;
                                  -87226;1;0;false;false;;;;;;
                                  -87227;1;0;false;false;0;0;0;;;
                                  -87228;1;0;false;false;;;;;;
                                  -87229;2;0;false;false;0;0;0;;;
                                  -87231;5;0;false;false;;;;;;
                                  -87236;22;0;false;false;0;0;0;;;
                                  -87258;1;0;false;false;;;;;;
                                  -87259;1;0;false;false;0;0;0;;;
                                  -87260;1;0;false;false;;;;;;
                                  -87261;12;0;false;false;0;0;0;;;
                                  -87273;1;0;false;false;;;;;;
                                  -87274;1;0;false;false;0;0;0;;;
                                  -87275;1;0;false;false;;;;;;
                                  -87276;12;0;false;false;0;0;0;;;
                                  -87288;1;0;false;false;;;;;;
                                  -87289;2;0;false;false;0;0;0;;;
                                  -87291;1;0;false;false;;;;;;
                                  -87292;10;0;false;false;0;0;0;;;
                                  -87302;1;0;false;false;;;;;;
                                  -87303;1;0;false;false;0;0;0;;;
                                  -87304;4;0;false;false;;;;;;
                                  -87308;6;1;false;false;127;0;85;;;
                                  -87314;1;0;false;false;0;0;0;;;
                                  -87315;3;0;false;false;;;;;;
                                  -87318;1;0;false;false;0;0;0;;;
                                  -87319;4;0;false;false;;;;;;
                                  -87323;5;0;false;false;0;0;0;;;
                                  -87328;1;0;false;false;;;;;;
                                  -87329;1;0;false;false;0;0;0;;;
                                  -87330;1;0;false;false;;;;;;
                                  -87331;3;1;false;false;127;0;85;;;
                                  -87334;1;0;false;false;;;;;;
                                  -87335;8;0;false;false;0;0;0;;;
                                  -87343;3;0;false;false;;;;;;
                                  -87346;11;0;false;false;0;0;0;;;
                                  -87357;1;0;false;false;;;;;;
                                  -87358;1;0;false;false;0;0;0;;;
                                  -87359;1;0;false;false;;;;;;
                                  -87360;12;0;false;false;0;0;0;;;
                                  -87372;3;0;false;false;;;;;;
                                  -87375;9;0;false;false;0;0;0;;;
                                  -87384;1;0;false;false;;;;;;
                                  -87385;1;0;false;false;0;0;0;;;
                                  -87386;1;0;false;false;;;;;;
                                  -87387;12;0;false;false;0;0;0;;;
                                  -87399;3;0;false;false;;;;;;
                                  -87402;55;0;false;false;63;127;95;;;
                                  -87457;1;0;false;false;;;;;;
                                  -87458;69;0;false;false;63;127;95;;;
                                  -87527;1;0;false;false;;;;;;
                                  -87528;40;0;false;false;63;127;95;;;
                                  -87568;1;0;false;false;;;;;;
                                  -87569;2;1;false;false;127;0;85;;;
                                  -87571;1;0;false;false;;;;;;
                                  -87572;4;0;false;false;0;0;0;;;
                                  -87576;1;0;false;false;;;;;;
                                  -87577;2;0;false;false;0;0;0;;;
                                  -87579;1;0;false;false;;;;;;
                                  -87580;6;0;false;false;0;0;0;;;
                                  -87586;1;0;false;false;;;;;;
                                  -87587;2;0;false;false;0;0;0;;;
                                  -87589;1;0;false;false;;;;;;
                                  -87590;3;0;false;false;0;0;0;;;
                                  -87593;1;0;false;false;;;;;;
                                  -87594;2;0;false;false;0;0;0;;;
                                  -87596;1;0;false;false;;;;;;
                                  -87597;7;0;false;false;0;0;0;;;
                                  -87604;1;0;false;false;;;;;;
                                  -87605;1;0;false;false;0;0;0;;;
                                  -87606;4;0;false;false;;;;;;
                                  -87610;2;1;false;false;127;0;85;;;
                                  -87612;1;0;false;false;;;;;;
                                  -87613;17;0;false;false;0;0;0;;;
                                  -87630;1;0;false;false;;;;;;
                                  -87631;1;0;false;false;0;0;0;;;
                                  -87632;5;0;false;false;;;;;;
                                  -87637;10;0;false;false;0;0;0;;;
                                  -87647;1;0;false;false;;;;;;
                                  -87648;1;0;false;false;0;0;0;;;
                                  -87649;1;0;false;false;;;;;;
                                  -87650;19;0;false;false;0;0;0;;;
                                  -87669;4;0;false;false;;;;;;
                                  -87673;1;0;false;false;0;0;0;;;
                                  -87674;3;0;false;false;;;;;;
                                  -87677;1;0;false;false;0;0;0;;;
                                  -87678;3;0;false;false;;;;;;
                                  -87681;69;0;false;false;63;127;95;;;
                                  -87750;1;0;false;false;;;;;;
                                  -87751;66;0;false;false;63;127;95;;;
                                  -87817;1;0;false;false;;;;;;
                                  -87818;4;1;false;false;127;0;85;;;
                                  -87822;3;0;false;false;;;;;;
                                  -87825;2;1;false;false;127;0;85;;;
                                  -87827;1;0;false;false;;;;;;
                                  -87828;12;0;false;false;0;0;0;;;
                                  -87840;1;0;false;false;;;;;;
                                  -87841;2;0;false;false;0;0;0;;;
                                  -87843;1;0;false;false;;;;;;
                                  -87844;11;0;false;false;0;0;0;;;
                                  -87855;1;0;false;false;;;;;;
                                  -87856;2;0;false;false;0;0;0;;;
                                  -87858;1;0;false;false;;;;;;
                                  -87859;9;0;false;false;0;0;0;;;
                                  -87868;1;0;false;false;;;;;;
                                  -87869;2;0;false;false;0;0;0;;;
                                  -87871;1;0;false;false;;;;;;
                                  -87872;3;0;false;false;0;0;0;;;
                                  -87875;1;0;false;false;;;;;;
                                  -87876;2;0;false;false;0;0;0;;;
                                  -87878;1;0;false;false;;;;;;
                                  -87879;4;0;false;false;0;0;0;;;
                                  -87883;1;0;false;false;;;;;;
                                  -87884;1;0;false;false;0;0;0;;;
                                  -87885;4;0;false;false;;;;;;
                                  -87889;3;1;false;false;127;0;85;;;
                                  -87892;1;0;false;false;;;;;;
                                  -87893;9;0;false;false;0;0;0;;;
                                  -87902;1;0;false;false;;;;;;
                                  -87903;1;0;false;false;0;0;0;;;
                                  -87904;1;0;false;false;;;;;;
                                  -87905;35;0;false;false;0;0;0;;;
                                  -87940;4;0;false;false;;;;;;
                                  -87944;3;1;false;false;127;0;85;;;
                                  -87947;1;0;false;false;;;;;;
                                  -87948;10;0;false;false;0;0;0;;;
                                  -87958;1;0;false;false;;;;;;
                                  -87959;1;0;false;false;0;0;0;;;
                                  -87960;1;0;false;false;;;;;;
                                  -87961;35;0;false;false;0;0;0;;;
                                  -87996;4;0;false;false;;;;;;
                                  -88000;6;0;false;false;0;0;0;;;
                                  -88006;1;0;false;false;;;;;;
                                  -88007;4;0;false;false;0;0;0;;;
                                  -88011;1;0;false;false;;;;;;
                                  -88012;1;0;false;false;0;0;0;;;
                                  -88013;1;0;false;false;;;;;;
                                  -88014;27;0;false;false;0;0;0;;;
                                  -88041;4;0;false;false;;;;;;
                                  -88045;66;0;false;false;63;127;95;;;
                                  -88111;2;0;false;false;;;;;;
                                  -88113;20;0;false;false;63;127;95;;;
                                  -88133;2;0;false;false;;;;;;
                                  -88135;2;1;false;false;127;0;85;;;
                                  -88137;1;0;false;false;;;;;;
                                  -88138;10;0;false;false;0;0;0;;;
                                  -88148;1;0;false;false;;;;;;
                                  -88149;1;0;false;false;0;0;0;;;
                                  -88150;1;0;false;false;;;;;;
                                  -88151;10;0;false;false;0;0;0;;;
                                  -88161;1;0;false;false;;;;;;
                                  -88162;1;0;false;false;0;0;0;;;
                                  -88163;1;0;false;false;;;;;;
                                  -88164;14;0;false;false;0;0;0;;;
                                  -88178;1;0;false;false;;;;;;
                                  -88179;1;0;false;false;0;0;0;;;
                                  -88180;5;0;false;false;;;;;;
                                  -88185;12;0;false;false;0;0;0;;;
                                  -88197;4;0;false;false;;;;;;
                                  -88201;1;0;false;false;0;0;0;;;
                                  -88202;4;0;false;false;;;;;;
                                  -88206;10;0;false;false;0;0;0;;;
                                  -88216;1;0;false;false;;;;;;
                                  -88217;1;0;false;false;0;0;0;;;
                                  -88218;1;0;false;false;;;;;;
                                  -88219;3;1;false;false;127;0;85;;;
                                  -88222;1;0;false;false;;;;;;
                                  -88223;7;0;false;false;0;0;0;;;
                                  -88230;3;1;false;false;127;0;85;;;
                                  -88233;1;0;false;false;;;;;;
                                  -88234;4;1;false;false;127;0;85;;;
                                  -88238;2;0;false;false;0;0;0;;;
                                  -88240;1;0;false;false;;;;;;
                                  -88241;7;0;false;false;0;0;0;;;
                                  -88248;3;0;false;false;;;;;;
                                  -88251;1;0;false;false;0;0;0;;;
                                  -88252;3;0;false;false;;;;;;
                                  -88255;4;1;false;false;127;0;85;;;
                                  -88259;1;0;false;false;;;;;;
                                  -88260;1;0;false;false;0;0;0;;;
                                  -88261;4;0;false;false;;;;;;
                                  -88265;10;0;false;false;0;0;0;;;
                                  -88275;1;0;false;false;;;;;;
                                  -88276;1;0;false;false;0;0;0;;;
                                  -88277;1;0;false;false;;;;;;
                                  -88278;3;1;false;false;127;0;85;;;
                                  -88281;1;0;false;false;;;;;;
                                  -88282;7;0;false;false;0;0;0;;;
                                  -88289;3;1;false;false;127;0;85;;;
                                  -88292;1;0;false;false;;;;;;
                                  -88293;4;1;false;false;127;0;85;;;
                                  -88297;2;0;false;false;0;0;0;;;
                                  -88299;1;0;false;false;;;;;;
                                  -88300;7;0;false;false;0;0;0;;;
                                  -88307;3;0;false;false;;;;;;
                                  -88310;1;0;false;false;0;0;0;;;
                                  -88311;3;0;false;false;;;;;;
                                  -88314;2;1;false;false;127;0;85;;;
                                  -88316;1;0;false;false;;;;;;
                                  -88317;11;0;false;false;0;0;0;;;
                                  -88328;1;0;false;false;;;;;;
                                  -88329;2;0;false;false;0;0;0;;;
                                  -88331;1;0;false;false;;;;;;
                                  -88332;4;1;false;false;127;0;85;;;
                                  -88336;1;0;false;false;0;0;0;;;
                                  -88337;1;0;false;false;;;;;;
                                  -88338;1;0;false;false;0;0;0;;;
                                  -88339;4;0;false;false;;;;;;
                                  -88343;20;0;false;false;0;0;0;;;
                                  -88363;3;0;false;false;;;;;;
                                  -88366;1;0;false;false;0;0;0;;;
                                  -88367;2;0;false;false;;;;;;
                                  -88369;1;0;false;false;0;0;0;;;
                                  -88370;2;0;false;false;;;;;;
                                  -88372;3;0;false;false;63;95;191;;;
                                  -88375;3;0;false;false;;;;;;
                                  -88378;1;0;false;false;63;95;191;;;
                                  -88379;1;0;false;false;;;;;;
                                  -88380;5;0;false;false;63;95;191;;;
                                  -88385;1;0;false;false;;;;;;
                                  -88386;3;0;false;false;63;95;191;;;
                                  -88389;1;0;false;false;;;;;;
                                  -88390;5;0;false;false;63;95;191;;;
                                  -88395;1;0;false;false;;;;;;
                                  -88396;5;0;false;false;63;95;191;;;
                                  -88401;1;0;false;false;;;;;;
                                  -88402;3;0;false;false;63;95;191;;;
                                  -88405;1;0;false;false;;;;;;
                                  -88406;4;0;false;false;63;95;191;;;
                                  -88410;1;0;false;false;;;;;;
                                  -88411;9;0;false;false;63;95;191;;;
                                  -88420;1;0;false;false;;;;;;
                                  -88421;2;0;false;false;63;95;191;;;
                                  -88423;1;0;false;false;;;;;;
                                  -88424;3;0;false;false;63;95;191;;;
                                  -88427;1;0;false;false;;;;;;
                                  -88428;6;0;false;false;63;95;191;;;
                                  -88434;1;0;false;false;;;;;;
                                  -88435;8;0;false;false;63;95;191;;;
                                  -88443;3;0;false;false;;;;;;
                                  -88446;2;0;false;false;63;95;191;;;
                                  -88448;2;0;false;false;;;;;;
                                  -88450;4;1;false;false;127;0;85;;;
                                  -88454;1;0;false;false;;;;;;
                                  -88455;14;0;false;false;0;0;0;;;
                                  -88469;1;0;false;false;;;;;;
                                  -88470;1;0;false;false;0;0;0;;;
                                  -88471;3;0;false;false;;;;;;
                                  -88474;63;0;false;false;63;127;95;;;
                                  -88537;1;0;false;false;;;;;;
                                  -88538;27;0;false;false;63;127;95;;;
                                  -88565;1;0;false;false;;;;;;
                                  -88566;2;1;false;false;127;0;85;;;
                                  -88568;1;0;false;false;;;;;;
                                  -88569;16;0;false;false;0;0;0;;;
                                  -88585;1;0;false;false;;;;;;
                                  -88586;1;0;false;false;0;0;0;;;
                                  -88587;4;0;false;false;;;;;;
                                  -88591;12;0;false;false;0;0;0;;;
                                  -88603;3;0;false;false;;;;;;
                                  -88606;1;0;false;false;0;0;0;;;
                                  -88607;3;0;false;false;;;;;;
                                  -88610;4;1;false;false;127;0;85;;;
                                  -88614;1;0;false;false;;;;;;
                                  -88615;1;0;false;false;0;0;0;;;
                                  -88616;4;0;false;false;;;;;;
                                  -88620;3;1;false;false;127;0;85;;;
                                  -88623;1;0;false;false;;;;;;
                                  -88624;6;0;false;false;0;0;0;;;
                                  -88630;1;0;false;false;;;;;;
                                  -88631;1;0;false;false;0;0;0;;;
                                  -88632;1;0;false;false;;;;;;
                                  -88633;23;0;false;false;0;0;0;;;
                                  -88656;6;0;false;false;;;;;;
                                  -88662;2;1;false;false;127;0;85;;;
                                  -88664;1;0;false;false;;;;;;
                                  -88665;12;0;false;false;0;0;0;;;
                                  -88677;1;0;false;false;;;;;;
                                  -88678;1;0;false;false;0;0;0;;;
                                  -88679;1;0;false;false;;;;;;
                                  -88680;7;0;false;false;0;0;0;;;
                                  -88687;1;0;false;false;;;;;;
                                  -88688;1;0;false;false;0;0;0;;;
                                  -88689;5;0;false;false;;;;;;
                                  -88694;11;0;false;false;0;0;0;;;
                                  -88705;1;0;false;false;;;;;;
                                  -88706;1;0;false;false;0;0;0;;;
                                  -88707;1;0;false;false;;;;;;
                                  -88708;7;0;false;false;0;0;0;;;
                                  -88715;5;0;false;false;;;;;;
                                  -88720;12;0;false;false;0;0;0;;;
                                  -88732;4;0;false;false;;;;;;
                                  -88736;1;0;false;false;0;0;0;;;
                                  -88737;3;0;false;false;;;;;;
                                  -88740;1;0;false;false;0;0;0;;;
                                  -88741;2;0;false;false;;;;;;
                                  -88743;1;0;false;false;0;0;0;;;
                                  -88744;2;0;false;false;;;;;;
                                  -88746;3;0;false;false;63;95;191;;;
                                  -88749;3;0;false;false;;;;;;
                                  -88752;1;0;false;false;63;95;191;;;
                                  -88753;1;0;false;false;;;;;;
                                  -88754;5;0;false;false;63;95;191;;;
                                  -88759;1;0;false;false;;;;;;
                                  -88760;3;0;false;false;63;95;191;;;
                                  -88763;1;0;false;false;;;;;;
                                  -88764;5;0;false;false;63;95;191;;;
                                  -88769;1;0;false;false;;;;;;
                                  -88770;2;0;false;false;63;95;191;;;
                                  -88772;1;0;false;false;;;;;;
                                  -88773;5;0;false;false;63;95;191;;;
                                  -88778;1;0;false;false;;;;;;
                                  -88779;2;0;false;false;63;95;191;;;
                                  -88781;1;0;false;false;;;;;;
                                  -88782;3;0;false;false;63;95;191;;;
                                  -88785;1;0;false;false;;;;;;
                                  -88786;5;0;false;false;63;95;191;;;
                                  -88791;1;0;false;false;;;;;;
                                  -88792;9;0;false;false;63;95;191;;;
                                  -88801;1;0;false;false;;;;;;
                                  -88802;2;0;false;false;63;95;191;;;
                                  -88804;1;0;false;false;;;;;;
                                  -88805;3;0;false;false;63;95;191;;;
                                  -88808;1;0;false;false;;;;;;
                                  -88809;6;0;false;false;63;95;191;;;
                                  -88815;1;0;false;false;;;;;;
                                  -88816;8;0;false;false;63;95;191;;;
                                  -88824;3;0;false;false;;;;;;
                                  -88827;2;0;false;false;63;95;191;;;
                                  -88829;2;0;false;false;;;;;;
                                  -88831;4;1;false;false;127;0;85;;;
                                  -88835;1;0;false;false;;;;;;
                                  -88836;16;0;false;false;0;0;0;;;
                                  -88852;1;0;false;false;;;;;;
                                  -88853;1;0;false;false;0;0;0;;;
                                  -88854;3;0;false;false;;;;;;
                                  -88857;2;1;false;false;127;0;85;;;
                                  -88859;1;0;false;false;;;;;;
                                  -88860;12;0;false;false;0;0;0;;;
                                  -88872;1;0;false;false;;;;;;
                                  -88873;1;0;false;false;0;0;0;;;
                                  -88874;1;0;false;false;;;;;;
                                  -88875;2;0;false;false;0;0;0;;;
                                  -88877;1;0;false;false;;;;;;
                                  -88878;1;0;false;false;0;0;0;;;
                                  -88879;4;0;false;false;;;;;;
                                  -88883;11;0;false;false;0;0;0;;;
                                  -88894;1;0;false;false;;;;;;
                                  -88895;1;0;false;false;0;0;0;;;
                                  -88896;1;0;false;false;;;;;;
                                  -88897;2;0;false;false;0;0;0;;;
                                  -88899;4;0;false;false;;;;;;
                                  -88903;12;0;false;false;0;0;0;;;
                                  -88915;3;0;false;false;;;;;;
                                  -88918;1;0;false;false;0;0;0;;;
                                  -88919;2;0;false;false;;;;;;
                                  -88921;1;0;false;false;0;0;0;;;
                                  -88922;2;0;false;false;;;;;;
                                  -88924;3;0;false;false;63;95;191;;;
                                  -88927;3;0;false;false;;;;;;
                                  -88930;1;0;false;false;63;95;191;;;
                                  -88931;1;0;false;false;;;;;;
                                  -88932;5;0;false;false;63;95;191;;;
                                  -88937;1;0;false;false;;;;;;
                                  -88938;3;0;false;false;63;95;191;;;
                                  -88941;1;0;false;false;;;;;;
                                  -88942;5;0;false;false;63;95;191;;;
                                  -88947;1;0;false;false;;;;;;
                                  -88948;2;0;false;false;63;95;191;;;
                                  -88950;1;0;false;false;;;;;;
                                  -88951;3;0;false;false;63;95;191;;;
                                  -88954;1;0;false;false;;;;;;
                                  -88955;5;0;false;false;63;95;191;;;
                                  -88960;1;0;false;false;;;;;;
                                  -88961;2;0;false;false;63;95;191;;;
                                  -88963;1;0;false;false;;;;;;
                                  -88964;3;0;false;false;63;95;191;;;
                                  -88967;1;0;false;false;;;;;;
                                  -88968;9;0;false;false;63;95;191;;;
                                  -88977;1;0;false;false;;;;;;
                                  -88978;2;0;false;false;63;95;191;;;
                                  -88980;1;0;false;false;;;;;;
                                  -88981;1;0;false;false;63;95;191;;;
                                  -88982;1;0;false;false;;;;;;
                                  -88983;9;0;false;false;63;95;191;;;
                                  -88992;1;0;false;false;;;;;;
                                  -88993;7;0;false;false;63;95;191;;;
                                  -89000;3;0;false;false;;;;;;
                                  -89003;1;0;false;false;63;95;191;;;
                                  -89004;1;0;false;false;;;;;;
                                  -89005;10;0;false;false;63;95;191;;;
                                  -89015;1;0;false;false;;;;;;
                                  -89016;2;0;false;false;63;95;191;;;
                                  -89018;1;0;false;false;;;;;;
                                  -89019;2;0;false;false;63;95;191;;;
                                  -89021;1;0;false;false;;;;;;
                                  -89022;9;0;false;false;63;95;191;;;
                                  -89031;1;0;false;false;;;;;;
                                  -89032;6;0;false;false;63;95;191;;;
                                  -89038;1;0;false;false;;;;;;
                                  -89039;4;0;false;false;63;95;191;;;
                                  -89043;1;0;false;false;;;;;;
                                  -89044;3;0;false;false;63;95;191;;;
                                  -89047;1;0;false;false;;;;;;
                                  -89048;6;0;false;false;63;95;191;;;
                                  -89054;1;0;false;false;;;;;;
                                  -89055;9;0;false;false;63;95;191;;;
                                  -89064;1;0;false;false;;;;;;
                                  -89065;2;0;false;false;63;95;191;;;
                                  -89067;1;0;false;false;;;;;;
                                  -89068;3;0;false;false;63;95;191;;;
                                  -89071;4;0;false;false;;;;;;
                                  -89075;1;0;false;false;63;95;191;;;
                                  -89076;1;0;false;false;;;;;;
                                  -89077;6;0;false;false;63;95;191;;;
                                  -89083;1;0;false;false;;;;;;
                                  -89084;9;0;false;false;63;95;191;;;
                                  -89093;1;0;false;false;;;;;;
                                  -89094;6;0;false;false;63;95;191;;;
                                  -89100;3;0;false;false;;;;;;
                                  -89103;1;0;false;false;63;95;191;;;
                                  -89104;1;0;false;false;;;;;;
                                  -89105;3;0;false;false;127;127;159;;;
                                  -89108;3;0;false;false;;;;;;
                                  -89111;1;0;false;false;63;95;191;;;
                                  -89112;3;0;false;false;;;;;;
                                  -89115;1;0;false;false;63;95;191;;;
                                  -89116;1;0;false;false;;;;;;
                                  -89117;5;1;false;false;127;159;191;;;
                                  -89122;26;0;false;false;63;95;191;;;
                                  -89148;3;0;false;false;;;;;;
                                  -89151;2;0;false;false;63;95;191;;;
                                  -89153;2;0;false;false;;;;;;
                                  -89155;4;1;false;false;127;0;85;;;
                                  -89159;1;0;false;false;;;;;;
                                  -89160;18;0;false;false;0;0;0;;;
                                  -89178;1;0;false;false;;;;;;
                                  -89179;1;0;false;false;0;0;0;;;
                                  -89180;3;0;false;false;;;;;;
                                  -89183;9;0;false;false;0;0;0;;;
                                  -89192;1;0;false;false;;;;;;
                                  -89193;1;0;false;false;0;0;0;;;
                                  -89194;1;0;false;false;;;;;;
                                  -89195;5;1;false;false;127;0;85;;;
                                  -89200;1;0;false;false;0;0;0;;;
                                  -89201;3;0;false;false;;;;;;
                                  -89204;2;1;false;false;127;0;85;;;
                                  -89206;1;0;false;false;;;;;;
                                  -89207;12;0;false;false;0;0;0;;;
                                  -89219;1;0;false;false;;;;;;
                                  -89220;1;0;false;false;0;0;0;;;
                                  -89221;1;0;false;false;;;;;;
                                  -89222;11;0;false;false;0;0;0;;;
                                  -89233;1;0;false;false;;;;;;
                                  -89234;1;0;false;false;0;0;0;;;
                                  -89235;1;0;false;false;;;;;;
                                  -89236;2;0;false;false;0;0;0;;;
                                  -89238;1;0;false;false;;;;;;
                                  -89239;1;0;false;false;0;0;0;;;
                                  -89240;4;0;false;false;;;;;;
                                  -89244;3;1;false;false;127;0;85;;;
                                  -89247;1;0;false;false;;;;;;
                                  -89248;10;0;false;false;0;0;0;;;
                                  -89258;8;0;false;false;;;;;;
                                  -89266;11;0;false;false;0;0;0;;;
                                  -89277;1;0;false;false;;;;;;
                                  -89278;1;0;false;false;0;0;0;;;
                                  -89279;1;0;false;false;;;;;;
                                  -89280;12;0;false;false;0;0;0;;;
                                  -89292;4;0;false;false;;;;;;
                                  -89296;9;0;false;false;0;0;0;;;
                                  -89305;1;0;false;false;;;;;;
                                  -89306;1;0;false;false;0;0;0;;;
                                  -89307;1;0;false;false;;;;;;
                                  -89308;15;0;false;false;0;0;0;;;
                                  -89323;4;0;false;false;;;;;;
                                  -89327;21;0;false;false;0;0;0;;;
                                  -89348;3;0;false;false;;;;;;
                                  -89351;1;0;false;false;0;0;0;;;
                                  -89352;3;0;false;false;;;;;;
                                  -89355;4;1;false;false;127;0;85;;;
                                  -89359;1;0;false;false;;;;;;
                                  -89360;1;0;false;false;0;0;0;;;
                                  -89361;4;0;false;false;;;;;;
                                  -89365;28;0;false;false;0;0;0;;;
                                  -89393;3;0;false;false;;;;;;
                                  -89396;1;0;false;false;0;0;0;;;
                                  -89397;2;0;false;false;;;;;;
                                  -89399;1;0;false;false;0;0;0;;;
                                  -89400;2;0;false;false;;;;;;
                                  -89402;3;0;false;false;63;95;191;;;
                                  -89405;3;0;false;false;;;;;;
                                  -89408;1;0;false;false;63;95;191;;;
                                  -89409;1;0;false;false;;;;;;
                                  -89410;5;0;false;false;63;95;191;;;
                                  -89415;1;0;false;false;;;;;;
                                  -89416;3;0;false;false;63;95;191;;;
                                  -89419;1;0;false;false;;;;;;
                                  -89420;5;0;false;false;63;95;191;;;
                                  -89425;1;0;false;false;;;;;;
                                  -89426;2;0;false;false;63;95;191;;;
                                  -89428;1;0;false;false;;;;;;
                                  -89429;3;0;false;false;63;95;191;;;
                                  -89432;1;0;false;false;;;;;;
                                  -89433;3;0;false;false;63;95;191;;;
                                  -89436;1;0;false;false;;;;;;
                                  -89437;2;0;false;false;63;95;191;;;
                                  -89439;1;0;false;false;;;;;;
                                  -89440;3;0;false;false;63;95;191;;;
                                  -89443;1;0;false;false;;;;;;
                                  -89444;9;0;false;false;63;95;191;;;
                                  -89453;1;0;false;false;;;;;;
                                  -89454;2;0;false;false;63;95;191;;;
                                  -89456;1;0;false;false;;;;;;
                                  -89457;1;0;false;false;63;95;191;;;
                                  -89458;1;0;false;false;;;;;;
                                  -89459;9;0;false;false;63;95;191;;;
                                  -89468;1;0;false;false;;;;;;
                                  -89469;7;0;false;false;63;95;191;;;
                                  -89476;3;0;false;false;;;;;;
                                  -89479;1;0;false;false;63;95;191;;;
                                  -89480;1;0;false;false;;;;;;
                                  -89481;10;0;false;false;63;95;191;;;
                                  -89491;1;0;false;false;;;;;;
                                  -89492;2;0;false;false;63;95;191;;;
                                  -89494;1;0;false;false;;;;;;
                                  -89495;2;0;false;false;63;95;191;;;
                                  -89497;1;0;false;false;;;;;;
                                  -89498;9;0;false;false;63;95;191;;;
                                  -89507;1;0;false;false;;;;;;
                                  -89508;6;0;false;false;63;95;191;;;
                                  -89514;1;0;false;false;;;;;;
                                  -89515;4;0;false;false;63;95;191;;;
                                  -89519;1;0;false;false;;;;;;
                                  -89520;3;0;false;false;63;95;191;;;
                                  -89523;1;0;false;false;;;;;;
                                  -89524;6;0;false;false;63;95;191;;;
                                  -89530;1;0;false;false;;;;;;
                                  -89531;9;0;false;false;63;95;191;;;
                                  -89540;1;0;false;false;;;;;;
                                  -89541;2;0;false;false;63;95;191;;;
                                  -89543;1;0;false;false;;;;;;
                                  -89544;3;0;false;false;63;95;191;;;
                                  -89547;4;0;false;false;;;;;;
                                  -89551;1;0;false;false;63;95;191;;;
                                  -89552;1;0;false;false;;;;;;
                                  -89553;6;0;false;false;63;95;191;;;
                                  -89559;1;0;false;false;;;;;;
                                  -89560;9;0;false;false;63;95;191;;;
                                  -89569;1;0;false;false;;;;;;
                                  -89570;6;0;false;false;63;95;191;;;
                                  -89576;3;0;false;false;;;;;;
                                  -89579;1;0;false;false;63;95;191;;;
                                  -89580;1;0;false;false;;;;;;
                                  -89581;3;0;false;false;127;127;159;;;
                                  -89584;3;0;false;false;;;;;;
                                  -89587;1;0;false;false;63;95;191;;;
                                  -89588;3;0;false;false;;;;;;
                                  -89591;1;0;false;false;63;95;191;;;
                                  -89592;1;0;false;false;;;;;;
                                  -89593;5;1;false;false;127;159;191;;;
                                  -89598;22;0;false;false;63;95;191;;;
                                  -89620;3;0;false;false;;;;;;
                                  -89623;2;0;false;false;63;95;191;;;
                                  -89625;2;0;false;false;;;;;;
                                  -89627;4;1;false;false;127;0;85;;;
                                  -89631;1;0;false;false;;;;;;
                                  -89632;14;0;false;false;0;0;0;;;
                                  -89646;1;0;false;false;;;;;;
                                  -89647;1;0;false;false;0;0;0;;;
                                  -89648;3;0;false;false;;;;;;
                                  -89651;9;0;false;false;0;0;0;;;
                                  -89660;1;0;false;false;;;;;;
                                  -89661;1;0;false;false;0;0;0;;;
                                  -89662;1;0;false;false;;;;;;
                                  -89663;4;1;false;false;127;0;85;;;
                                  -89667;1;0;false;false;0;0;0;;;
                                  -89668;3;0;false;false;;;;;;
                                  -89671;2;1;false;false;127;0;85;;;
                                  -89673;1;0;false;false;;;;;;
                                  -89674;12;0;false;false;0;0;0;;;
                                  -89686;1;0;false;false;;;;;;
                                  -89687;1;0;false;false;0;0;0;;;
                                  -89688;1;0;false;false;;;;;;
                                  -89689;11;0;false;false;0;0;0;;;
                                  -89700;1;0;false;false;;;;;;
                                  -89701;1;0;false;false;0;0;0;;;
                                  -89702;1;0;false;false;;;;;;
                                  -89703;2;0;false;false;0;0;0;;;
                                  -89705;1;0;false;false;;;;;;
                                  -89706;1;0;false;false;0;0;0;;;
                                  -89707;4;0;false;false;;;;;;
                                  -89711;3;1;false;false;127;0;85;;;
                                  -89714;1;0;false;false;;;;;;
                                  -89715;10;0;false;false;0;0;0;;;
                                  -89725;6;0;false;false;;;;;;
                                  -89731;11;0;false;false;0;0;0;;;
                                  -89742;1;0;false;false;;;;;;
                                  -89743;1;0;false;false;0;0;0;;;
                                  -89744;1;0;false;false;;;;;;
                                  -89745;12;0;false;false;0;0;0;;;
                                  -89757;4;0;false;false;;;;;;
                                  -89761;9;0;false;false;0;0;0;;;
                                  -89770;1;0;false;false;;;;;;
                                  -89771;1;0;false;false;0;0;0;;;
                                  -89772;1;0;false;false;;;;;;
                                  -89773;15;0;false;false;0;0;0;;;
                                  -89788;4;0;false;false;;;;;;
                                  -89792;21;0;false;false;0;0;0;;;
                                  -89813;3;0;false;false;;;;;;
                                  -89816;1;0;false;false;0;0;0;;;
                                  -89817;3;0;false;false;;;;;;
                                  -89820;4;1;false;false;127;0;85;;;
                                  -89824;1;0;false;false;;;;;;
                                  -89825;1;0;false;false;0;0;0;;;
                                  -89826;4;0;false;false;;;;;;
                                  -89830;24;0;false;false;0;0;0;;;
                                  -89854;3;0;false;false;;;;;;
                                  -89857;1;0;false;false;0;0;0;;;
                                  -89858;2;0;false;false;;;;;;
                                  -89860;1;0;false;false;0;0;0;;;
                                  -89861;2;0;false;false;;;;;;
                                  -89863;3;0;false;false;63;95;191;;;
                                  -89866;3;0;false;false;;;;;;
                                  -89869;1;0;false;false;63;95;191;;;
                                  -89870;1;0;false;false;;;;;;
                                  -89871;7;0;false;false;63;95;191;;;
                                  -89878;1;0;false;false;;;;;;
                                  -89879;3;0;false;false;63;95;191;;;
                                  -89882;1;0;false;false;;;;;;
                                  -89883;4;0;false;false;63;95;191;;;
                                  -89887;1;0;false;false;;;;;;
                                  -89888;10;0;false;false;63;95;191;;;
                                  -89898;1;0;false;false;;;;;;
                                  -89899;6;0;false;false;63;95;191;;;
                                  -89905;1;0;false;false;;;;;;
                                  -89906;3;0;false;false;63;95;191;;;
                                  -89909;1;0;false;false;;;;;;
                                  -89910;8;0;false;false;63;95;191;;;
                                  -89918;1;0;false;false;;;;;;
                                  -89919;4;0;false;false;63;95;191;;;
                                  -89923;1;0;false;false;;;;;;
                                  -89924;2;0;false;false;63;95;191;;;
                                  -89926;1;0;false;false;;;;;;
                                  -89927;4;0;false;false;63;95;191;;;
                                  -89931;3;0;false;false;;;;;;
                                  -89934;2;0;false;false;63;95;191;;;
                                  -89936;2;0;false;false;;;;;;
                                  -89938;4;1;false;false;127;0;85;;;
                                  -89942;1;0;false;false;;;;;;
                                  -89943;10;0;false;false;0;0;0;;;
                                  -89953;1;0;false;false;;;;;;
                                  -89954;1;0;false;false;0;0;0;;;
                                  -89955;3;0;false;false;;;;;;
                                  -89958;5;0;false;false;0;0;0;;;
                                  -89963;1;0;false;false;;;;;;
                                  -89964;5;0;false;false;0;0;0;;;
                                  -89969;1;0;false;false;;;;;;
                                  -89970;1;0;false;false;0;0;0;;;
                                  -89971;1;0;false;false;;;;;;
                                  -89972;3;1;false;false;127;0;85;;;
                                  -89975;1;0;false;false;;;;;;
                                  -89976;8;0;false;false;0;0;0;;;
                                  -89984;3;0;false;false;;;;;;
                                  -89987;10;0;false;false;0;0;0;;;
                                  -89997;1;0;false;false;;;;;;
                                  -89998;1;0;false;false;0;0;0;;;
                                  -89999;1;0;false;false;;;;;;
                                  -90000;2;0;false;false;42;0;255;;;
                                  -90002;1;0;false;false;0;0;0;;;
                                  -90003;3;0;false;false;;;;;;
                                  -90006;2;1;false;false;127;0;85;;;
                                  -90008;1;0;false;false;;;;;;
                                  -90009;12;0;false;false;0;0;0;;;
                                  -90021;1;0;false;false;;;;;;
                                  -90022;2;0;false;false;0;0;0;;;
                                  -90024;1;0;false;false;;;;;;
                                  -90025;12;0;false;false;0;0;0;;;
                                  -90037;1;0;false;false;;;;;;
                                  -90038;1;0;false;false;0;0;0;;;
                                  -90039;4;0;false;false;;;;;;
                                  -90043;11;0;false;false;0;0;0;;;
                                  -90054;1;0;false;false;;;;;;
                                  -90055;1;0;false;false;0;0;0;;;
                                  -90056;1;0;false;false;;;;;;
                                  -90057;12;0;false;false;0;0;0;;;
                                  -90069;4;0;false;false;;;;;;
                                  -90073;9;0;false;false;0;0;0;;;
                                  -90082;1;0;false;false;;;;;;
                                  -90083;1;0;false;false;0;0;0;;;
                                  -90084;1;0;false;false;;;;;;
                                  -90085;12;0;false;false;0;0;0;;;
                                  -90097;4;0;false;false;;;;;;
                                  -90101;20;0;false;false;0;0;0;;;
                                  -90121;3;0;false;false;;;;;;
                                  -90124;1;0;false;false;0;0;0;;;
                                  -90125;3;0;false;false;;;;;;
                                  -90128;4;1;false;false;127;0;85;;;
                                  -90132;3;0;false;false;;;;;;
                                  -90135;2;1;false;false;127;0;85;;;
                                  -90137;1;0;false;false;;;;;;
                                  -90138;12;0;false;false;0;0;0;;;
                                  -90150;1;0;false;false;;;;;;
                                  -90151;1;0;false;false;0;0;0;;;
                                  -90152;1;0;false;false;;;;;;
                                  -90153;23;0;false;false;0;0;0;;;
                                  -90176;1;0;false;false;;;;;;
                                  -90177;1;0;false;false;0;0;0;;;
                                  -90178;4;0;false;false;;;;;;
                                  -90182;3;1;false;false;127;0;85;;;
                                  -90185;1;0;false;false;;;;;;
                                  -90186;4;0;false;false;0;0;0;;;
                                  -90190;1;0;false;false;;;;;;
                                  -90191;1;0;false;false;0;0;0;;;
                                  -90192;1;0;false;false;;;;;;
                                  -90193;37;0;false;false;0;0;0;;;
                                  -90230;4;0;false;false;;;;;;
                                  -90234;3;1;false;false;127;0;85;;;
                                  -90237;1;0;false;false;;;;;;
                                  -90238;10;0;false;false;0;0;0;;;
                                  -90248;1;0;false;false;;;;;;
                                  -90249;1;0;false;false;0;0;0;;;
                                  -90250;1;0;false;false;;;;;;
                                  -90251;30;0;false;false;0;0;0;;;
                                  -90281;4;0;false;false;;;;;;
                                  -90285;3;1;false;false;127;0;85;;;
                                  -90288;1;0;false;false;;;;;;
                                  -90289;10;0;false;false;0;0;0;;;
                                  -90299;1;0;false;false;;;;;;
                                  -90300;1;0;false;false;0;0;0;;;
                                  -90301;1;0;false;false;;;;;;
                                  -90302;31;0;false;false;0;0;0;;;
                                  -90333;10;0;false;false;;;;;;
                                  -90343;2;1;false;false;127;0;85;;;
                                  -90345;1;0;false;false;;;;;;
                                  -90346;12;0;false;false;0;0;0;;;
                                  -90358;1;0;false;false;;;;;;
                                  -90359;2;0;false;false;0;0;0;;;
                                  -90361;1;0;false;false;;;;;;
                                  -90362;10;0;false;false;0;0;0;;;
                                  -90372;1;0;false;false;;;;;;
                                  -90373;1;0;false;false;0;0;0;;;
                                  -90374;1;0;false;false;;;;;;
                                  -90375;11;0;false;false;0;0;0;;;
                                  -90386;1;0;false;false;;;;;;
                                  -90387;1;0;false;false;0;0;0;;;
                                  -90388;5;0;false;false;;;;;;
                                  -90393;11;0;false;false;0;0;0;;;
                                  -90404;1;0;false;false;;;;;;
                                  -90405;1;0;false;false;0;0;0;;;
                                  -90406;1;0;false;false;;;;;;
                                  -90407;12;0;false;false;0;0;0;;;
                                  -90419;5;0;false;false;;;;;;
                                  -90424;9;0;false;false;0;0;0;;;
                                  -90433;1;0;false;false;;;;;;
                                  -90434;1;0;false;false;0;0;0;;;
                                  -90435;1;0;false;false;;;;;;
                                  -90436;28;0;false;false;0;0;0;;;
                                  -90464;1;0;false;false;;;;;;
                                  -90465;1;0;false;false;0;0;0;;;
                                  -90466;1;0;false;false;;;;;;
                                  -90467;3;0;false;false;0;0;0;;;
                                  -90470;4;0;false;false;;;;;;
                                  -90474;1;0;false;false;0;0;0;;;
                                  -90475;4;0;false;false;;;;;;
                                  -90479;4;1;false;false;127;0;85;;;
                                  -90483;1;0;false;false;;;;;;
                                  -90484;1;0;false;false;0;0;0;;;
                                  -90485;5;0;false;false;;;;;;
                                  -90490;11;0;false;false;0;0;0;;;
                                  -90501;1;0;false;false;;;;;;
                                  -90502;1;0;false;false;0;0;0;;;
                                  -90503;1;0;false;false;;;;;;
                                  -90504;12;0;false;false;0;0;0;;;
                                  -90516;5;0;false;false;;;;;;
                                  -90521;9;0;false;false;0;0;0;;;
                                  -90530;1;0;false;false;;;;;;
                                  -90531;1;0;false;false;0;0;0;;;
                                  -90532;1;0;false;false;;;;;;
                                  -90533;27;0;false;false;0;0;0;;;
                                  -90560;1;0;false;false;;;;;;
                                  -90561;6;0;false;false;0;0;0;;;
                                  -90567;4;0;false;false;;;;;;
                                  -90571;1;0;false;false;0;0;0;;;
                                  -90572;4;0;false;false;;;;;;
                                  -90576;20;0;false;false;0;0;0;;;
                                  -90596;3;0;false;false;;;;;;
                                  -90599;1;0;false;false;0;0;0;;;
                                  -90600;2;0;false;false;;;;;;
                                  -90602;1;0;false;false;0;0;0;;;
                                  -90603;2;0;false;false;;;;;;
                                  -90605;3;0;false;false;63;95;191;;;
                                  -90608;3;0;false;false;;;;;;
                                  -90611;1;0;false;false;63;95;191;;;
                                  -90612;1;0;false;false;;;;;;
                                  -90613;7;0;false;false;63;95;191;;;
                                  -90620;1;0;false;false;;;;;;
                                  -90621;3;0;false;false;63;95;191;;;
                                  -90624;1;0;false;false;;;;;;
                                  -90625;4;0;false;false;63;95;191;;;
                                  -90629;1;0;false;false;;;;;;
                                  -90630;5;0;false;false;63;95;191;;;
                                  -90635;3;0;false;false;;;;;;
                                  -90638;2;0;false;false;63;95;191;;;
                                  -90640;2;0;false;false;;;;;;
                                  -90642;4;1;false;false;127;0;85;;;
                                  -90646;1;0;false;false;;;;;;
                                  -90647;18;0;false;false;0;0;0;;;
                                  -90665;1;0;false;false;;;;;;
                                  -90666;1;0;false;false;0;0;0;;;
                                  -90667;3;0;false;false;;;;;;
                                  -90670;2;1;false;false;127;0;85;;;
                                  -90672;1;0;false;false;;;;;;
                                  -90673;12;0;false;false;0;0;0;;;
                                  -90685;1;0;false;false;;;;;;
                                  -90686;2;0;false;false;0;0;0;;;
                                  -90688;1;0;false;false;;;;;;
                                  -90689;12;0;false;false;0;0;0;;;
                                  -90701;1;0;false;false;;;;;;
                                  -90702;1;0;false;false;0;0;0;;;
                                  -90703;4;0;false;false;;;;;;
                                  -90707;44;0;false;false;63;127;95;;;
                                  -90751;2;0;false;false;;;;;;
                                  -90753;36;0;false;false;63;127;95;;;
                                  -90789;2;0;false;false;;;;;;
                                  -90791;11;0;false;false;0;0;0;;;
                                  -90802;3;0;false;false;;;;;;
                                  -90805;1;0;false;false;0;0;0;;;
                                  -90806;1;0;false;false;;;;;;
                                  -90807;4;1;false;false;127;0;85;;;
                                  -90811;1;0;false;false;;;;;;
                                  -90812;1;0;false;false;0;0;0;;;
                                  -90813;4;0;false;false;;;;;;
                                  -90817;5;0;false;false;0;0;0;;;
                                  -90822;1;0;false;false;;;;;;
                                  -90823;5;0;false;false;0;0;0;;;
                                  -90828;1;0;false;false;;;;;;
                                  -90829;1;0;false;false;0;0;0;;;
                                  -90830;1;0;false;false;;;;;;
                                  -90831;3;1;false;false;127;0;85;;;
                                  -90834;1;0;false;false;;;;;;
                                  -90835;8;0;false;false;0;0;0;;;
                                  -90843;4;0;false;false;;;;;;
                                  -90847;10;0;false;false;0;0;0;;;
                                  -90857;1;0;false;false;;;;;;
                                  -90858;1;0;false;false;0;0;0;;;
                                  -90859;1;0;false;false;;;;;;
                                  -90860;2;0;false;false;42;0;255;;;
                                  -90862;1;0;false;false;0;0;0;;;
                                  -90863;4;0;false;false;;;;;;
                                  -90867;11;0;false;false;0;0;0;;;
                                  -90878;1;0;false;false;;;;;;
                                  -90879;1;0;false;false;0;0;0;;;
                                  -90880;1;0;false;false;;;;;;
                                  -90881;12;0;false;false;0;0;0;;;
                                  -90893;4;0;false;false;;;;;;
                                  -90897;9;0;false;false;0;0;0;;;
                                  -90906;1;0;false;false;;;;;;
                                  -90907;1;0;false;false;0;0;0;;;
                                  -90908;1;0;false;false;;;;;;
                                  -90909;24;0;false;false;0;0;0;;;
                                  -90933;4;0;false;false;;;;;;
                                  -90937;20;0;false;false;0;0;0;;;
                                  -90957;3;0;false;false;;;;;;
                                  -90960;1;0;false;false;0;0;0;;;
                                  -90961;2;0;false;false;;;;;;
                                  -90963;1;0;false;false;0;0;0;;;
                                  -90964;2;0;false;false;;;;;;
                                  -90966;3;0;false;false;63;95;191;;;
                                  -90969;3;0;false;false;;;;;;
                                  -90972;1;0;false;false;63;95;191;;;
                                  -90973;1;0;false;false;;;;;;
                                  -90974;7;0;false;false;63;95;191;;;
                                  -90981;1;0;false;false;;;;;;
                                  -90982;3;0;false;false;63;95;191;;;
                                  -90985;1;0;false;false;;;;;;
                                  -90986;8;0;false;false;63;95;191;;;
                                  -90994;1;0;false;false;;;;;;
                                  -90995;5;0;false;false;63;95;191;;;
                                  -91000;3;0;false;false;;;;;;
                                  -91003;2;0;false;false;63;95;191;;;
                                  -91005;2;0;false;false;;;;;;
                                  -91007;4;1;false;false;127;0;85;;;
                                  -91011;1;0;false;false;;;;;;
                                  -91012;22;0;false;false;0;0;0;;;
                                  -91034;1;0;false;false;;;;;;
                                  -91035;1;0;false;false;0;0;0;;;
                                  -91036;3;0;false;false;;;;;;
                                  -91039;2;1;false;false;127;0;85;;;
                                  -91041;1;0;false;false;;;;;;
                                  -91042;12;0;false;false;0;0;0;;;
                                  -91054;1;0;false;false;;;;;;
                                  -91055;2;0;false;false;0;0;0;;;
                                  -91057;1;0;false;false;;;;;;
                                  -91058;12;0;false;false;0;0;0;;;
                                  -91070;1;0;false;false;;;;;;
                                  -91071;1;0;false;false;0;0;0;;;
                                  -91072;4;0;false;false;;;;;;
                                  -91076;40;0;false;false;63;127;95;;;
                                  -91116;2;0;false;false;;;;;;
                                  -91118;39;0;false;false;63;127;95;;;
                                  -91157;2;0;false;false;;;;;;
                                  -91159;14;0;false;false;0;0;0;;;
                                  -91173;3;0;false;false;;;;;;
                                  -91176;1;0;false;false;0;0;0;;;
                                  -91177;1;0;false;false;;;;;;
                                  -91178;4;1;false;false;127;0;85;;;
                                  -91182;1;0;false;false;;;;;;
                                  -91183;1;0;false;false;0;0;0;;;
                                  -91184;4;0;false;false;;;;;;
                                  -91188;5;0;false;false;0;0;0;;;
                                  -91193;1;0;false;false;;;;;;
                                  -91194;5;0;false;false;0;0;0;;;
                                  -91199;1;0;false;false;;;;;;
                                  -91200;1;0;false;false;0;0;0;;;
                                  -91201;1;0;false;false;;;;;;
                                  -91202;3;1;false;false;127;0;85;;;
                                  -91205;1;0;false;false;;;;;;
                                  -91206;8;0;false;false;0;0;0;;;
                                  -91214;4;0;false;false;;;;;;
                                  -91218;10;0;false;false;0;0;0;;;
                                  -91228;1;0;false;false;;;;;;
                                  -91229;1;0;false;false;0;0;0;;;
                                  -91230;1;0;false;false;;;;;;
                                  -91231;2;0;false;false;42;0;255;;;
                                  -91233;1;0;false;false;0;0;0;;;
                                  -91234;4;0;false;false;;;;;;
                                  -91238;11;0;false;false;0;0;0;;;
                                  -91249;1;0;false;false;;;;;;
                                  -91250;1;0;false;false;0;0;0;;;
                                  -91251;1;0;false;false;;;;;;
                                  -91252;26;0;false;false;0;0;0;;;
                                  -91278;4;0;false;false;;;;;;
                                  -91282;9;0;false;false;0;0;0;;;
                                  -91291;1;0;false;false;;;;;;
                                  -91292;1;0;false;false;0;0;0;;;
                                  -91293;1;0;false;false;;;;;;
                                  -91294;12;0;false;false;0;0;0;;;
                                  -91306;4;0;false;false;;;;;;
                                  -91310;20;0;false;false;0;0;0;;;
                                  -91330;3;0;false;false;;;;;;
                                  -91333;1;0;false;false;0;0;0;;;
                                  -91334;2;0;false;false;;;;;;
                                  -91336;1;0;false;false;0;0;0;;;
                                  -91337;2;0;false;false;;;;;;
                                  -91339;3;0;false;false;63;95;191;;;
                                  -91342;3;0;false;false;;;;;;
                                  -91345;1;0;false;false;63;95;191;;;
                                  -91346;1;0;false;false;;;;;;
                                  -91347;5;0;false;false;63;95;191;;;
                                  -91352;1;0;false;false;;;;;;
                                  -91353;3;0;false;false;63;95;191;;;
                                  -91356;1;0;false;false;;;;;;
                                  -91357;5;0;false;false;63;95;191;;;
                                  -91362;1;0;false;false;;;;;;
                                  -91363;3;0;false;false;63;95;191;;;
                                  -91366;1;0;false;false;;;;;;
                                  -91367;4;0;false;false;63;95;191;;;
                                  -91371;1;0;false;false;;;;;;
                                  -91372;4;0;false;false;63;95;191;;;
                                  -91376;1;0;false;false;;;;;;
                                  -91377;3;0;false;false;63;95;191;;;
                                  -91380;1;0;false;false;;;;;;
                                  -91381;2;0;false;false;63;95;191;;;
                                  -91383;1;0;false;false;;;;;;
                                  -91384;3;0;false;false;63;95;191;;;
                                  -91387;1;0;false;false;;;;;;
                                  -91388;4;0;false;false;63;95;191;;;
                                  -91392;1;0;false;false;;;;;;
                                  -91393;9;0;false;false;63;95;191;;;
                                  -91402;1;0;false;false;;;;;;
                                  -91403;6;0;false;false;63;95;191;;;
                                  -91409;1;0;false;false;;;;;;
                                  -91410;8;0;false;false;63;95;191;;;
                                  -91418;4;0;false;false;;;;;;
                                  -91422;1;0;false;false;63;95;191;;;
                                  -91423;1;0;false;false;;;;;;
                                  -91424;2;0;false;false;63;95;191;;;
                                  -91426;1;0;false;false;;;;;;
                                  -91427;3;0;false;false;63;95;191;;;
                                  -91430;1;0;false;false;;;;;;
                                  -91431;9;0;false;false;63;95;191;;;
                                  -91440;1;0;false;false;;;;;;
                                  -91441;2;0;false;false;63;95;191;;;
                                  -91443;1;0;false;false;;;;;;
                                  -91444;3;0;false;false;63;95;191;;;
                                  -91447;1;0;false;false;;;;;;
                                  -91448;5;0;false;false;63;95;191;;;
                                  -91453;1;0;false;false;;;;;;
                                  -91454;4;0;false;false;63;95;191;;;
                                  -91458;1;0;false;false;;;;;;
                                  -91459;3;0;false;false;63;95;191;;;
                                  -91462;1;0;false;false;;;;;;
                                  -91463;5;0;false;false;63;95;191;;;
                                  -91468;1;0;false;false;;;;;;
                                  -91469;2;0;false;false;63;95;191;;;
                                  -91471;1;0;false;false;;;;;;
                                  -91472;3;0;false;false;63;95;191;;;
                                  -91475;1;0;false;false;;;;;;
                                  -91476;3;0;false;false;63;95;191;;;
                                  -91479;1;0;false;false;;;;;;
                                  -91480;2;0;false;false;63;95;191;;;
                                  -91482;1;0;false;false;;;;;;
                                  -91483;3;0;false;false;63;95;191;;;
                                  -91486;1;0;false;false;;;;;;
                                  -91487;3;0;false;false;63;95;191;;;
                                  -91490;1;0;false;false;;;;;;
                                  -91491;4;0;false;false;63;95;191;;;
                                  -91495;4;0;false;false;;;;;;
                                  -91499;1;0;false;false;63;95;191;;;
                                  -91500;1;0;false;false;;;;;;
                                  -91501;2;0;false;false;63;95;191;;;
                                  -91503;1;0;false;false;;;;;;
                                  -91504;3;0;false;false;63;95;191;;;
                                  -91507;1;0;false;false;;;;;;
                                  -91508;3;0;false;false;63;95;191;;;
                                  -91511;1;0;false;false;;;;;;
                                  -91512;4;0;false;false;63;95;191;;;
                                  -91516;1;0;false;false;;;;;;
                                  -91517;2;0;false;false;63;95;191;;;
                                  -91519;1;0;false;false;;;;;;
                                  -91520;7;0;false;false;63;95;191;;;
                                  -91527;1;0;false;false;;;;;;
                                  -91528;4;0;false;false;63;95;191;;;
                                  -91532;1;0;false;false;;;;;;
                                  -91533;3;0;false;false;63;95;191;;;
                                  -91536;1;0;false;false;;;;;;
                                  -91537;9;0;false;false;63;95;191;;;
                                  -91546;1;0;false;false;;;;;;
                                  -91547;7;0;false;false;63;95;191;;;
                                  -91554;3;0;false;false;;;;;;
                                  -91557;1;0;false;false;63;95;191;;;
                                  -91558;4;0;false;false;;;;;;
                                  -91562;1;0;false;false;63;95;191;;;
                                  -91563;1;0;false;false;;;;;;
                                  -91564;8;1;false;false;127;159;191;;;
                                  -91572;5;0;false;false;63;95;191;;;
                                  -91577;1;0;false;false;;;;;;
                                  -91578;2;0;false;false;63;95;191;;;
                                  -91580;1;0;false;false;;;;;;
                                  -91581;3;0;false;false;63;95;191;;;
                                  -91584;1;0;false;false;;;;;;
                                  -91585;3;0;false;false;63;95;191;;;
                                  -91588;1;0;false;false;;;;;;
                                  -91589;4;0;false;false;63;95;191;;;
                                  -91593;1;0;false;false;;;;;;
                                  -91594;8;0;false;false;63;95;191;;;
                                  -91602;1;0;false;false;;;;;;
                                  -91603;2;0;false;false;63;95;191;;;
                                  -91605;1;0;false;false;;;;;;
                                  -91606;3;0;false;false;63;95;191;;;
                                  -91609;1;0;false;false;;;;;;
                                  -91610;5;0;false;false;63;95;191;;;
                                  -91615;1;0;false;false;;;;;;
                                  -91616;4;0;false;false;63;95;191;;;
                                  -91620;1;0;false;false;;;;;;
                                  -91621;2;0;false;false;63;95;191;;;
                                  -91623;1;0;false;false;;;;;;
                                  -91624;3;0;false;false;63;95;191;;;
                                  -91627;1;0;false;false;;;;;;
                                  -91628;8;0;false;false;63;95;191;;;
                                  -91636;3;0;false;false;;;;;;
                                  -91639;2;0;false;false;63;95;191;;;
                                  -91641;2;0;false;false;;;;;;
                                  -91643;3;1;false;false;127;0;85;;;
                                  -91646;1;0;false;false;;;;;;
                                  -91647;12;0;false;false;0;0;0;;;
                                  -91659;1;0;false;false;;;;;;
                                  -91660;1;0;false;false;0;0;0;;;
                                  -91661;3;0;false;false;;;;;;
                                  -91664;2;1;false;false;127;0;85;;;
                                  -91666;1;0;false;false;;;;;;
                                  -91667;16;0;false;false;0;0;0;;;
                                  -91683;1;0;false;false;;;;;;
                                  -91684;1;0;false;false;0;0;0;;;
                                  -91685;4;0;false;false;;;;;;
                                  -91689;6;1;false;false;127;0;85;;;
                                  -91695;1;0;false;false;;;;;;
                                  -91696;2;0;false;false;0;0;0;;;
                                  -91698;3;0;false;false;;;;;;
                                  -91701;1;0;false;false;0;0;0;;;
                                  -91702;3;0;false;false;;;;;;
                                  -91705;72;0;false;false;63;127;95;;;
                                  -91777;1;0;false;false;;;;;;
                                  -91778;16;0;false;false;63;127;95;;;
                                  -91794;1;0;false;false;;;;;;
                                  -91795;3;1;false;false;127;0;85;;;
                                  -91798;1;0;false;false;;;;;;
                                  -91799;9;0;false;false;0;0;0;;;
                                  -91808;1;0;false;false;;;;;;
                                  -91809;1;0;false;false;0;0;0;;;
                                  -91810;1;0;false;false;;;;;;
                                  -91811;15;0;false;false;0;0;0;;;
                                  -91826;4;0;false;false;;;;;;
                                  -91830;2;1;false;false;127;0;85;;;
                                  -91832;1;0;false;false;;;;;;
                                  -91833;10;0;false;false;0;0;0;;;
                                  -91843;1;0;false;false;;;;;;
                                  -91844;1;0;false;false;0;0;0;;;
                                  -91845;1;0;false;false;;;;;;
                                  -91846;22;0;false;false;0;0;0;;;
                                  -91868;1;0;false;false;;;;;;
                                  -91869;1;0;false;false;0;0;0;;;
                                  -91870;1;0;false;false;;;;;;
                                  -91871;2;0;false;false;0;0;0;;;
                                  -91873;1;0;false;false;;;;;;
                                  -91874;1;0;false;false;0;0;0;;;
                                  -91875;4;0;false;false;;;;;;
                                  -91879;12;0;false;false;0;0;0;;;
                                  -91891;4;0;false;false;;;;;;
                                  -91895;11;0;false;false;0;0;0;;;
                                  -91906;1;0;false;false;;;;;;
                                  -91907;1;0;false;false;0;0;0;;;
                                  -91908;1;0;false;false;;;;;;
                                  -91909;33;0;false;false;0;0;0;;;
                                  -91942;1;0;false;false;;;;;;
                                  -91943;11;0;false;false;0;0;0;;;
                                  -91954;3;0;false;false;;;;;;
                                  -91957;1;0;false;false;0;0;0;;;
                                  -91958;3;0;false;false;;;;;;
                                  -91961;6;1;false;false;127;0;85;;;
                                  -91967;1;0;false;false;;;;;;
                                  -91968;10;0;false;false;0;0;0;;;
                                  -91978;2;0;false;false;;;;;;
                                  -91980;1;0;false;false;0;0;0;;;
                                  -91981;2;0;false;false;;;;;;
                                  -91983;3;0;false;false;63;95;191;;;
                                  -91986;3;0;false;false;;;;;;
                                  -91989;1;0;false;false;63;95;191;;;
                                  -91990;1;0;false;false;;;;;;
                                  -91991;5;0;false;false;63;95;191;;;
                                  -91996;1;0;false;false;;;;;;
                                  -91997;3;0;false;false;63;95;191;;;
                                  -92000;1;0;false;false;;;;;;
                                  -92001;5;0;false;false;63;95;191;;;
                                  -92006;1;0;false;false;;;;;;
                                  -92007;2;0;false;false;63;95;191;;;
                                  -92009;1;0;false;false;;;;;;
                                  -92010;3;0;false;false;63;95;191;;;
                                  -92013;1;0;false;false;;;;;;
                                  -92014;3;0;false;false;63;95;191;;;
                                  -92017;1;0;false;false;;;;;;
                                  -92018;2;0;false;false;63;95;191;;;
                                  -92020;1;0;false;false;;;;;;
                                  -92021;3;0;false;false;63;95;191;;;
                                  -92024;1;0;false;false;;;;;;
                                  -92025;5;0;false;false;63;95;191;;;
                                  -92030;3;0;false;false;;;;;;
                                  -92033;2;0;false;false;63;95;191;;;
                                  -92035;2;0;false;false;;;;;;
                                  -92037;4;1;false;false;127;0;85;;;
                                  -92041;1;0;false;false;;;;;;
                                  -92042;11;0;false;false;0;0;0;;;
                                  -92053;1;0;false;false;;;;;;
                                  -92054;1;0;false;false;0;0;0;;;
                                  -92055;3;0;false;false;;;;;;
                                  -92058;3;1;false;false;127;0;85;;;
                                  -92061;1;0;false;false;;;;;;
                                  -92062;9;0;false;false;0;0;0;;;
                                  -92071;1;0;false;false;;;;;;
                                  -92072;1;0;false;false;0;0;0;;;
                                  -92073;1;0;false;false;;;;;;
                                  -92074;15;0;false;false;0;0;0;;;
                                  -92089;3;0;false;false;;;;;;
                                  -92092;3;1;false;false;127;0;85;;;
                                  -92095;1;0;false;false;;;;;;
                                  -92096;10;0;false;false;0;0;0;;;
                                  -92106;1;0;false;false;;;;;;
                                  -92107;1;0;false;false;0;0;0;;;
                                  -92108;1;0;false;false;;;;;;
                                  -92109;35;0;false;false;0;0;0;;;
                                  -92144;4;0;false;false;;;;;;
                                  -92148;3;1;false;false;127;0;85;;;
                                  -92151;1;0;false;false;;;;;;
                                  -92152;10;0;false;false;0;0;0;;;
                                  -92162;1;0;false;false;;;;;;
                                  -92163;1;0;false;false;0;0;0;;;
                                  -92164;1;0;false;false;;;;;;
                                  -92165;36;0;false;false;0;0;0;;;
                                  -92201;3;0;false;false;;;;;;
                                  -92204;3;1;false;false;127;0;85;;;
                                  -92207;1;0;false;false;;;;;;
                                  -92208;13;0;false;false;0;0;0;;;
                                  -92221;1;0;false;false;;;;;;
                                  -92222;1;0;false;false;0;0;0;;;
                                  -92223;1;0;false;false;;;;;;
                                  -92224;10;0;false;false;0;0;0;;;
                                  -92234;1;0;false;false;;;;;;
                                  -92235;1;0;false;false;0;0;0;;;
                                  -92236;1;0;false;false;;;;;;
                                  -92237;11;0;false;false;0;0;0;;;
                                  -92248;6;0;false;false;;;;;;
                                  -92254;2;1;false;false;127;0;85;;;
                                  -92256;1;0;false;false;;;;;;
                                  -92257;12;0;false;false;0;0;0;;;
                                  -92269;1;0;false;false;;;;;;
                                  -92270;1;0;false;false;0;0;0;;;
                                  -92271;1;0;false;false;;;;;;
                                  -92272;14;0;false;false;0;0;0;;;
                                  -92286;1;0;false;false;;;;;;
                                  -92287;1;0;false;false;0;0;0;;;
                                  -92288;4;0;false;false;;;;;;
                                  -92292;11;0;false;false;0;0;0;;;
                                  -92303;1;0;false;false;;;;;;
                                  -92304;1;0;false;false;0;0;0;;;
                                  -92305;1;0;false;false;;;;;;
                                  -92306;14;0;false;false;0;0;0;;;
                                  -92320;4;0;false;false;;;;;;
                                  -92324;12;0;false;false;0;0;0;;;
                                  -92336;3;0;false;false;;;;;;
                                  -92339;1;0;false;false;0;0;0;;;
                                  -92340;2;0;false;false;;;;;;
                                  -92342;1;0;false;false;0;0;0;;;
                                  -92343;2;0;false;false;;;;;;
                                  -92345;3;0;false;false;63;95;191;;;
                                  -92348;3;0;false;false;;;;;;
                                  -92351;1;0;false;false;63;95;191;;;
                                  -92352;1;0;false;false;;;;;;
                                  -92353;5;0;false;false;63;95;191;;;
                                  -92358;1;0;false;false;;;;;;
                                  -92359;3;0;false;false;63;95;191;;;
                                  -92362;1;0;false;false;;;;;;
                                  -92363;5;0;false;false;63;95;191;;;
                                  -92368;1;0;false;false;;;;;;
                                  -92369;2;0;false;false;63;95;191;;;
                                  -92371;1;0;false;false;;;;;;
                                  -92372;3;0;false;false;63;95;191;;;
                                  -92375;1;0;false;false;;;;;;
                                  -92376;9;0;false;false;63;95;191;;;
                                  -92385;1;0;false;false;;;;;;
                                  -92386;2;0;false;false;63;95;191;;;
                                  -92388;1;0;false;false;;;;;;
                                  -92389;3;0;false;false;63;95;191;;;
                                  -92392;1;0;false;false;;;;;;
                                  -92393;5;0;false;false;63;95;191;;;
                                  -92398;3;0;false;false;;;;;;
                                  -92401;2;0;false;false;63;95;191;;;
                                  -92403;2;0;false;false;;;;;;
                                  -92405;4;1;false;false;127;0;85;;;
                                  -92409;1;0;false;false;;;;;;
                                  -92410;13;0;false;false;0;0;0;;;
                                  -92423;1;0;false;false;;;;;;
                                  -92424;1;0;false;false;0;0;0;;;
                                  -92425;3;0;false;false;;;;;;
                                  -92428;3;1;false;false;127;0;85;;;
                                  -92431;1;0;false;false;;;;;;
                                  -92432;9;0;false;false;0;0;0;;;
                                  -92441;1;0;false;false;;;;;;
                                  -92442;1;0;false;false;0;0;0;;;
                                  -92443;1;0;false;false;;;;;;
                                  -92444;15;0;false;false;0;0;0;;;
                                  -92459;3;0;false;false;;;;;;
                                  -92462;3;1;false;false;127;0;85;;;
                                  -92465;1;0;false;false;;;;;;
                                  -92466;10;0;false;false;0;0;0;;;
                                  -92476;1;0;false;false;;;;;;
                                  -92477;1;0;false;false;0;0;0;;;
                                  -92478;1;0;false;false;;;;;;
                                  -92479;35;0;false;false;0;0;0;;;
                                  -92514;3;0;false;false;;;;;;
                                  -92517;2;1;false;false;127;0;85;;;
                                  -92519;1;0;false;false;;;;;;
                                  -92520;12;0;false;false;0;0;0;;;
                                  -92532;1;0;false;false;;;;;;
                                  -92533;1;0;false;false;0;0;0;;;
                                  -92534;1;0;false;false;;;;;;
                                  -92535;11;0;false;false;0;0;0;;;
                                  -92546;1;0;false;false;;;;;;
                                  -92547;1;0;false;false;0;0;0;;;
                                  -92548;4;0;false;false;;;;;;
                                  -92552;11;0;false;false;0;0;0;;;
                                  -92563;1;0;false;false;;;;;;
                                  -92564;1;0;false;false;0;0;0;;;
                                  -92565;1;0;false;false;;;;;;
                                  -92566;11;0;false;false;0;0;0;;;
                                  -92577;4;0;false;false;;;;;;
                                  -92581;21;0;false;false;0;0;0;;;
                                  -92602;3;0;false;false;;;;;;
                                  -92605;1;0;false;false;0;0;0;;;
                                  -92606;2;0;false;false;;;;;;
                                  -92608;1;0;false;false;0;0;0;;;
                                  -92609;2;0;false;false;;;;;;
                                  -92611;3;0;false;false;63;95;191;;;
                                  -92614;3;0;false;false;;;;;;
                                  -92617;1;0;false;false;63;95;191;;;
                                  -92618;1;0;false;false;;;;;;
                                  -92619;5;0;false;false;63;95;191;;;
                                  -92624;1;0;false;false;;;;;;
                                  -92625;3;0;false;false;63;95;191;;;
                                  -92628;1;0;false;false;;;;;;
                                  -92629;5;0;false;false;63;95;191;;;
                                  -92634;1;0;false;false;;;;;;
                                  -92635;3;0;false;false;63;95;191;;;
                                  -92638;1;0;false;false;;;;;;
                                  -92639;4;0;false;false;63;95;191;;;
                                  -92643;1;0;false;false;;;;;;
                                  -92644;2;0;false;false;63;95;191;;;
                                  -92646;1;0;false;false;;;;;;
                                  -92647;3;0;false;false;63;95;191;;;
                                  -92650;1;0;false;false;;;;;;
                                  -92651;2;0;false;false;63;95;191;;;
                                  -92653;1;0;false;false;;;;;;
                                  -92654;3;0;false;false;63;95;191;;;
                                  -92657;1;0;false;false;;;;;;
                                  -92658;4;0;false;false;63;95;191;;;
                                  -92662;1;0;false;false;;;;;;
                                  -92663;9;0;false;false;63;95;191;;;
                                  -92672;1;0;false;false;;;;;;
                                  -92673;6;0;false;false;63;95;191;;;
                                  -92679;1;0;false;false;;;;;;
                                  -92680;8;0;false;false;63;95;191;;;
                                  -92688;4;0;false;false;;;;;;
                                  -92692;1;0;false;false;63;95;191;;;
                                  -92693;1;0;false;false;;;;;;
                                  -92694;2;0;false;false;63;95;191;;;
                                  -92696;1;0;false;false;;;;;;
                                  -92697;3;0;false;false;63;95;191;;;
                                  -92700;1;0;false;false;;;;;;
                                  -92701;9;0;false;false;63;95;191;;;
                                  -92710;1;0;false;false;;;;;;
                                  -92711;2;0;false;false;63;95;191;;;
                                  -92713;1;0;false;false;;;;;;
                                  -92714;3;0;false;false;63;95;191;;;
                                  -92717;1;0;false;false;;;;;;
                                  -92718;5;0;false;false;63;95;191;;;
                                  -92723;1;0;false;false;;;;;;
                                  -92724;4;0;false;false;63;95;191;;;
                                  -92728;1;0;false;false;;;;;;
                                  -92729;3;0;false;false;63;95;191;;;
                                  -92732;1;0;false;false;;;;;;
                                  -92733;5;0;false;false;63;95;191;;;
                                  -92738;1;0;false;false;;;;;;
                                  -92739;2;0;false;false;63;95;191;;;
                                  -92741;1;0;false;false;;;;;;
                                  -92742;3;0;false;false;63;95;191;;;
                                  -92745;1;0;false;false;;;;;;
                                  -92746;3;0;false;false;63;95;191;;;
                                  -92749;1;0;false;false;;;;;;
                                  -92750;2;0;false;false;63;95;191;;;
                                  -92752;1;0;false;false;;;;;;
                                  -92753;3;0;false;false;63;95;191;;;
                                  -92756;1;0;false;false;;;;;;
                                  -92757;3;0;false;false;63;95;191;;;
                                  -92760;1;0;false;false;;;;;;
                                  -92761;4;0;false;false;63;95;191;;;
                                  -92765;4;0;false;false;;;;;;
                                  -92769;1;0;false;false;63;95;191;;;
                                  -92770;1;0;false;false;;;;;;
                                  -92771;2;0;false;false;63;95;191;;;
                                  -92773;1;0;false;false;;;;;;
                                  -92774;3;0;false;false;63;95;191;;;
                                  -92777;1;0;false;false;;;;;;
                                  -92778;3;0;false;false;63;95;191;;;
                                  -92781;1;0;false;false;;;;;;
                                  -92782;4;0;false;false;63;95;191;;;
                                  -92786;1;0;false;false;;;;;;
                                  -92787;2;0;false;false;63;95;191;;;
                                  -92789;1;0;false;false;;;;;;
                                  -92790;7;0;false;false;63;95;191;;;
                                  -92797;1;0;false;false;;;;;;
                                  -92798;4;0;false;false;63;95;191;;;
                                  -92802;1;0;false;false;;;;;;
                                  -92803;3;0;false;false;63;95;191;;;
                                  -92806;1;0;false;false;;;;;;
                                  -92807;9;0;false;false;63;95;191;;;
                                  -92816;1;0;false;false;;;;;;
                                  -92817;7;0;false;false;63;95;191;;;
                                  -92824;3;0;false;false;;;;;;
                                  -92827;1;0;false;false;63;95;191;;;
                                  -92828;4;0;false;false;;;;;;
                                  -92832;1;0;false;false;63;95;191;;;
                                  -92833;1;0;false;false;;;;;;
                                  -92834;8;1;false;false;127;159;191;;;
                                  -92842;5;0;false;false;63;95;191;;;
                                  -92847;1;0;false;false;;;;;;
                                  -92848;2;0;false;false;63;95;191;;;
                                  -92850;1;0;false;false;;;;;;
                                  -92851;3;0;false;false;63;95;191;;;
                                  -92854;1;0;false;false;;;;;;
                                  -92855;3;0;false;false;63;95;191;;;
                                  -92858;1;0;false;false;;;;;;
                                  -92859;4;0;false;false;63;95;191;;;
                                  -92863;1;0;false;false;;;;;;
                                  -92864;8;0;false;false;63;95;191;;;
                                  -92872;1;0;false;false;;;;;;
                                  -92873;2;0;false;false;63;95;191;;;
                                  -92875;1;0;false;false;;;;;;
                                  -92876;3;0;false;false;63;95;191;;;
                                  -92879;1;0;false;false;;;;;;
                                  -92880;5;0;false;false;63;95;191;;;
                                  -92885;1;0;false;false;;;;;;
                                  -92886;4;0;false;false;63;95;191;;;
                                  -92890;1;0;false;false;;;;;;
                                  -92891;2;0;false;false;63;95;191;;;
                                  -92893;1;0;false;false;;;;;;
                                  -92894;3;0;false;false;63;95;191;;;
                                  -92897;1;0;false;false;;;;;;
                                  -92898;8;0;false;false;63;95;191;;;
                                  -92906;3;0;false;false;;;;;;
                                  -92909;2;0;false;false;63;95;191;;;
                                  -92911;2;0;false;false;;;;;;
                                  -92913;3;1;false;false;127;0;85;;;
                                  -92916;1;0;false;false;;;;;;
                                  -92917;10;0;false;false;0;0;0;;;
                                  -92927;1;0;false;false;;;;;;
                                  -92928;1;0;false;false;0;0;0;;;
                                  -92929;3;0;false;false;;;;;;
                                  -92932;3;1;false;false;127;0;85;;;
                                  -92935;1;0;false;false;;;;;;
                                  -92936;9;0;false;false;0;0;0;;;
                                  -92945;1;0;false;false;;;;;;
                                  -92946;1;0;false;false;0;0;0;;;
                                  -92947;1;0;false;false;;;;;;
                                  -92948;15;0;false;false;0;0;0;;;
                                  -92963;3;0;false;false;;;;;;
                                  -92966;2;1;false;false;127;0;85;;;
                                  -92968;1;0;false;false;;;;;;
                                  -92969;10;0;false;false;0;0;0;;;
                                  -92979;1;0;false;false;;;;;;
                                  -92980;1;0;false;false;0;0;0;;;
                                  -92981;1;0;false;false;;;;;;
                                  -92982;2;0;false;false;0;0;0;;;
                                  -92984;1;0;false;false;;;;;;
                                  -92985;1;0;false;false;0;0;0;;;
                                  -92986;4;0;false;false;;;;;;
                                  -92990;12;0;false;false;0;0;0;;;
                                  -93002;4;0;false;false;;;;;;
                                  -93006;11;0;false;false;0;0;0;;;
                                  -93017;1;0;false;false;;;;;;
                                  -93018;1;0;false;false;0;0;0;;;
                                  -93019;1;0;false;false;;;;;;
                                  -93020;33;0;false;false;0;0;0;;;
                                  -93053;1;0;false;false;;;;;;
                                  -93054;11;0;false;false;0;0;0;;;
                                  -93065;3;0;false;false;;;;;;
                                  -93068;1;0;false;false;0;0;0;;;
                                  -93069;3;0;false;false;;;;;;
                                  -93072;6;1;false;false;127;0;85;;;
                                  -93078;1;0;false;false;;;;;;
                                  -93079;10;0;false;false;0;0;0;;;
                                  -93089;2;0;false;false;;;;;;
                                  -93091;1;0;false;false;0;0;0;;;
                                  -93092;2;0;false;false;;;;;;
                                  -93094;3;0;false;false;63;95;191;;;
                                  -93097;3;0;false;false;;;;;;
                                  -93100;1;0;false;false;63;95;191;;;
                                  -93101;1;0;false;false;;;;;;
                                  -93102;5;0;false;false;63;95;191;;;
                                  -93107;1;0;false;false;;;;;;
                                  -93108;3;0;false;false;63;95;191;;;
                                  -93111;1;0;false;false;;;;;;
                                  -93112;5;0;false;false;63;95;191;;;
                                  -93117;1;0;false;false;;;;;;
                                  -93118;2;0;false;false;63;95;191;;;
                                  -93120;1;0;false;false;;;;;;
                                  -93121;3;0;false;false;63;95;191;;;
                                  -93124;1;0;false;false;;;;;;
                                  -93125;9;0;false;false;63;95;191;;;
                                  -93134;1;0;false;false;;;;;;
                                  -93135;9;0;false;false;63;95;191;;;
                                  -93144;3;0;false;false;;;;;;
                                  -93147;1;0;false;false;63;95;191;;;
                                  -93148;1;0;false;false;;;;;;
                                  -93149;3;0;false;false;127;127;159;;;
                                  -93152;3;0;false;false;;;;;;
                                  -93155;1;0;false;false;63;95;191;;;
                                  -93156;3;0;false;false;;;;;;
                                  -93159;1;0;false;false;63;95;191;;;
                                  -93160;1;0;false;false;;;;;;
                                  -93161;7;1;false;false;127;159;191;;;
                                  -93168;1;0;false;false;63;95;191;;;
                                  -93169;1;0;false;false;;;;;;
                                  -93170;1;0;false;false;63;95;191;;;
                                  -93171;1;0;false;false;;;;;;
                                  -93172;8;0;false;false;63;95;191;;;
                                  -93180;1;0;false;false;;;;;;
                                  -93181;2;0;false;false;63;95;191;;;
                                  -93183;1;0;false;false;;;;;;
                                  -93184;3;0;false;false;63;95;191;;;
                                  -93187;1;0;false;false;;;;;;
                                  -93188;3;0;false;false;63;95;191;;;
                                  -93191;1;0;false;false;;;;;;
                                  -93192;5;0;false;false;63;95;191;;;
                                  -93197;1;0;false;false;;;;;;
                                  -93198;8;0;false;false;63;95;191;;;
                                  -93206;3;0;false;false;;;;;;
                                  -93209;1;0;false;false;63;95;191;;;
                                  -93210;1;0;false;false;;;;;;
                                  -93211;7;1;false;false;127;159;191;;;
                                  -93218;1;0;false;false;63;95;191;;;
                                  -93219;1;0;false;false;;;;;;
                                  -93220;1;0;false;false;63;95;191;;;
                                  -93221;1;0;false;false;;;;;;
                                  -93222;8;0;false;false;63;95;191;;;
                                  -93230;1;0;false;false;;;;;;
                                  -93231;2;0;false;false;63;95;191;;;
                                  -93233;1;0;false;false;;;;;;
                                  -93234;3;0;false;false;63;95;191;;;
                                  -93237;1;0;false;false;;;;;;
                                  -93238;3;0;false;false;63;95;191;;;
                                  -93241;1;0;false;false;;;;;;
                                  -93242;5;0;false;false;63;95;191;;;
                                  -93247;1;0;false;false;;;;;;
                                  -93248;8;0;false;false;63;95;191;;;
                                  -93256;3;0;false;false;;;;;;
                                  -93259;1;0;false;false;63;95;191;;;
                                  -93260;1;0;false;false;;;;;;
                                  -93261;7;1;false;false;127;159;191;;;
                                  -93268;6;0;false;false;63;95;191;;;
                                  -93274;1;0;false;false;;;;;;
                                  -93275;3;0;false;false;63;95;191;;;
                                  -93278;1;0;false;false;;;;;;
                                  -93279;8;0;false;false;63;95;191;;;
                                  -93287;1;0;false;false;;;;;;
                                  -93288;6;0;false;false;63;95;191;;;
                                  -93294;1;0;false;false;;;;;;
                                  -93295;2;0;false;false;63;95;191;;;
                                  -93297;1;0;false;false;;;;;;
                                  -93298;1;0;false;false;63;95;191;;;
                                  -93299;1;0;false;false;;;;;;
                                  -93300;9;0;false;false;63;95;191;;;
                                  -93309;1;0;false;false;;;;;;
                                  -93310;10;0;false;false;63;95;191;;;
                                  -93320;3;0;false;false;;;;;;
                                  -93323;1;0;false;false;63;95;191;;;
                                  -93324;2;0;false;false;;;;;;
                                  -93326;7;0;false;false;63;95;191;;;
                                  -93333;1;0;false;false;;;;;;
                                  -93334;3;0;false;false;63;95;191;;;
                                  -93337;1;0;false;false;;;;;;
                                  -93338;4;0;false;false;63;95;191;;;
                                  -93342;1;0;false;false;;;;;;
                                  -93343;9;0;false;false;63;95;191;;;
                                  -93352;1;0;false;false;;;;;;
                                  -93353;2;0;false;false;63;95;191;;;
                                  -93355;1;0;false;false;;;;;;
                                  -93356;3;0;false;false;63;95;191;;;
                                  -93359;1;0;false;false;;;;;;
                                  -93360;9;0;false;false;63;95;191;;;
                                  -93369;3;0;false;false;;;;;;
                                  -93372;2;0;false;false;63;95;191;;;
                                  -93374;2;0;false;false;;;;;;
                                  -93376;4;1;false;false;127;0;85;;;
                                  -93380;1;0;false;false;;;;;;
                                  -93381;22;0;false;false;0;0;0;;;
                                  -93403;3;1;false;false;127;0;85;;;
                                  -93406;1;0;false;false;;;;;;
                                  -93407;2;0;false;false;0;0;0;;;
                                  -93409;1;0;false;false;;;;;;
                                  -93410;3;1;false;false;127;0;85;;;
                                  -93413;1;0;false;false;;;;;;
                                  -93414;2;0;false;false;0;0;0;;;
                                  -93416;1;0;false;false;;;;;;
                                  -93417;7;1;false;false;127;0;85;;;
                                  -93424;1;0;false;false;;;;;;
                                  -93425;7;0;false;false;0;0;0;;;
                                  -93432;1;0;false;false;;;;;;
                                  -93433;1;0;false;false;0;0;0;;;
                                  -93434;3;0;false;false;;;;;;
                                  -93437;3;1;false;false;127;0;85;;;
                                  -93440;1;0;false;false;;;;;;
                                  -93441;4;0;false;false;0;0;0;;;
                                  -93445;1;0;false;false;;;;;;
                                  -93446;1;0;false;false;0;0;0;;;
                                  -93447;1;0;false;false;;;;;;
                                  -93448;2;0;false;false;0;0;0;;;
                                  -93450;1;0;false;false;;;;;;
                                  -93451;1;0;false;false;0;0;0;;;
                                  -93452;1;0;false;false;;;;;;
                                  -93453;21;0;false;false;0;0;0;;;
                                  -93474;1;0;false;false;;;;;;
                                  -93475;1;0;false;false;0;0;0;;;
                                  -93476;1;0;false;false;;;;;;
                                  -93477;11;0;false;false;0;0;0;;;
                                  -93488;3;0;false;false;;;;;;
                                  -93491;3;1;false;false;127;0;85;;;
                                  -93494;1;0;false;false;;;;;;
                                  -93495;9;0;false;false;0;0;0;;;
                                  -93504;1;0;false;false;;;;;;
                                  -93505;1;0;false;false;0;0;0;;;
                                  -93506;1;0;false;false;;;;;;
                                  -93507;23;0;false;false;0;0;0;;;
                                  -93530;3;0;false;false;;;;;;
                                  -93533;3;1;false;false;127;0;85;;;
                                  -93536;1;0;false;false;;;;;;
                                  -93537;15;0;false;false;0;0;0;;;
                                  -93552;3;0;false;false;;;;;;
                                  -93555;3;1;false;false;127;0;85;;;
                                  -93558;1;0;false;false;;;;;;
                                  -93559;13;0;false;false;0;0;0;;;
                                  -93572;3;0;false;false;;;;;;
                                  -93575;7;1;false;false;127;0;85;;;
                                  -93582;1;0;false;false;;;;;;
                                  -93583;12;0;false;false;0;0;0;;;
                                  -93595;1;0;false;false;;;;;;
                                  -93596;1;0;false;false;0;0;0;;;
                                  -93597;1;0;false;false;;;;;;
                                  -93598;10;0;false;false;0;0;0;;;
                                  -93608;5;0;false;false;;;;;;
                                  -93613;20;0;false;false;0;0;0;;;
                                  -93633;1;0;false;false;;;;;;
                                  -93634;1;0;false;false;0;0;0;;;
                                  -93635;1;0;false;false;;;;;;
                                  -93636;4;1;false;false;127;0;85;;;
                                  -93640;1;0;false;false;0;0;0;;;
                                  -93641;3;0;false;false;;;;;;
                                  -93644;2;1;false;false;127;0;85;;;
                                  -93646;1;0;false;false;;;;;;
                                  -93647;5;0;false;false;0;0;0;;;
                                  -93652;1;0;false;false;;;;;;
                                  -93653;1;0;false;false;0;0;0;;;
                                  -93654;1;0;false;false;;;;;;
                                  -93655;9;0;false;false;0;0;0;;;
                                  -93664;1;0;false;false;;;;;;
                                  -93665;1;0;false;false;0;0;0;;;
                                  -93666;1;0;false;false;;;;;;
                                  -93667;2;0;false;false;0;0;0;;;
                                  -93669;1;0;false;false;;;;;;
                                  -93670;1;0;false;false;0;0;0;;;
                                  -93671;4;0;false;false;;;;;;
                                  -93675;4;0;false;false;0;0;0;;;
                                  -93679;1;0;false;false;;;;;;
                                  -93680;1;0;false;false;0;0;0;;;
                                  -93681;1;0;false;false;;;;;;
                                  -93682;9;0;false;false;0;0;0;;;
                                  -93691;1;0;false;false;;;;;;
                                  -93692;1;0;false;false;0;0;0;;;
                                  -93693;1;0;false;false;;;;;;
                                  -93694;2;0;false;false;0;0;0;;;
                                  -93696;3;0;false;false;;;;;;
                                  -93699;1;0;false;false;0;0;0;;;
                                  -93700;4;0;false;false;;;;;;
                                  -93704;67;0;false;false;63;127;95;;;
                                  -93771;1;0;false;false;;;;;;
                                  -93772;41;0;false;false;63;127;95;;;
                                  -93813;1;0;false;false;;;;;;
                                  -93814;2;1;false;false;127;0;85;;;
                                  -93816;1;0;false;false;;;;;;
                                  -93817;5;0;false;false;0;0;0;;;
                                  -93822;1;0;false;false;;;;;;
                                  -93823;1;0;false;false;0;0;0;;;
                                  -93824;1;0;false;false;;;;;;
                                  -93825;1;0;false;false;0;0;0;;;
                                  -93826;1;0;false;false;;;;;;
                                  -93827;2;0;false;false;0;0;0;;;
                                  -93829;1;0;false;false;;;;;;
                                  -93830;15;0;false;false;0;0;0;;;
                                  -93845;1;0;false;false;;;;;;
                                  -93846;2;0;false;false;0;0;0;;;
                                  -93848;1;0;false;false;;;;;;
                                  -93849;4;0;false;false;0;0;0;;;
                                  -93853;1;0;false;false;;;;;;
                                  -93854;1;0;false;false;0;0;0;;;
                                  -93855;1;0;false;false;;;;;;
                                  -93856;3;0;false;false;0;0;0;;;
                                  -93859;1;0;false;false;;;;;;
                                  -93860;1;0;false;false;0;0;0;;;
                                  -93861;4;0;false;false;;;;;;
                                  -93865;6;1;false;false;127;0;85;;;
                                  -93871;1;0;false;false;0;0;0;;;
                                  -93872;3;0;false;false;;;;;;
                                  -93875;1;0;false;false;0;0;0;;;
                                  -93876;3;0;false;false;;;;;;
                                  -93879;14;0;false;false;0;0;0;;;
                                  -93893;1;0;false;false;;;;;;
                                  -93894;1;0;false;false;0;0;0;;;
                                  -93895;1;0;false;false;;;;;;
                                  -93896;27;0;false;false;0;0;0;;;
                                  -93923;1;0;false;false;;;;;;
                                  -93924;6;0;false;false;0;0;0;;;
                                  -93930;6;0;false;false;;;;;;
                                  -93936;2;1;false;false;127;0;85;;;
                                  -93938;1;0;false;false;;;;;;
                                  -93939;18;0;false;false;0;0;0;;;
                                  -93957;1;0;false;false;;;;;;
                                  -93958;1;0;false;false;0;0;0;;;
                                  -93959;4;0;false;false;;;;;;
                                  -93963;69;0;false;false;63;127;95;;;
                                  -94032;2;0;false;false;;;;;;
                                  -94034;14;0;false;false;0;0;0;;;
                                  -94048;1;0;false;false;;;;;;
                                  -94049;1;0;false;false;0;0;0;;;
                                  -94050;1;0;false;false;;;;;;
                                  -94051;20;0;false;false;0;0;0;;;
                                  -94071;1;0;false;false;;;;;;
                                  -94072;15;0;false;false;0;0;0;;;
                                  -94087;1;0;false;false;;;;;;
                                  -94088;6;0;false;false;0;0;0;;;
                                  -94094;3;0;false;false;;;;;;
                                  -94097;1;0;false;false;0;0;0;;;
                                  -94098;3;0;false;false;;;;;;
                                  -94101;12;0;false;false;0;0;0;;;
                                  -94113;1;0;false;false;;;;;;
                                  -94114;1;0;false;false;0;0;0;;;
                                  -94115;1;0;false;false;;;;;;
                                  -94116;40;0;false;false;0;0;0;;;
                                  -94156;3;0;false;false;;;;;;
                                  -94159;59;0;false;false;63;127;95;;;
                                  -94218;1;0;false;false;;;;;;
                                  -94219;55;0;false;false;63;127;95;;;
                                  -94274;1;0;false;false;;;;;;
                                  -94275;46;0;false;false;63;127;95;;;
                                  -94321;1;0;false;false;;;;;;
                                  -94322;2;1;false;false;127;0;85;;;
                                  -94324;1;0;false;false;;;;;;
                                  -94325;2;0;false;false;0;0;0;;;
                                  -94327;1;0;false;false;;;;;;
                                  -94328;2;0;false;false;0;0;0;;;
                                  -94330;1;0;false;false;;;;;;
                                  -94331;1;0;false;false;0;0;0;;;
                                  -94332;1;0;false;false;;;;;;
                                  -94333;2;0;false;false;0;0;0;;;
                                  -94335;1;0;false;false;;;;;;
                                  -94336;1;0;false;false;0;0;0;;;
                                  -94337;1;0;false;false;;;;;;
                                  -94338;1;0;false;false;0;0;0;;;
                                  -94339;1;0;false;false;;;;;;
                                  -94340;22;0;false;false;0;0;0;;;
                                  -94362;1;0;false;false;;;;;;
                                  -94363;2;0;false;false;0;0;0;;;
                                  -94365;5;0;false;false;;;;;;
                                  -94370;2;0;false;false;0;0;0;;;
                                  -94372;1;0;false;false;;;;;;
                                  -94373;2;0;false;false;0;0;0;;;
                                  -94375;1;0;false;false;;;;;;
                                  -94376;1;0;false;false;0;0;0;;;
                                  -94377;1;0;false;false;;;;;;
                                  -94378;2;0;false;false;0;0;0;;;
                                  -94380;1;0;false;false;;;;;;
                                  -94381;1;0;false;false;0;0;0;;;
                                  -94382;1;0;false;false;;;;;;
                                  -94383;1;0;false;false;0;0;0;;;
                                  -94384;1;0;false;false;;;;;;
                                  -94385;21;0;false;false;0;0;0;;;
                                  -94406;1;0;false;false;;;;;;
                                  -94407;2;0;false;false;0;0;0;;;
                                  -94409;1;0;false;false;;;;;;
                                  -94410;8;0;false;false;0;0;0;;;
                                  -94418;1;0;false;false;;;;;;
                                  -94419;2;0;false;false;0;0;0;;;
                                  -94421;5;0;false;false;;;;;;
                                  -94426;12;0;false;false;0;0;0;;;
                                  -94438;1;0;false;false;;;;;;
                                  -94439;2;0;false;false;0;0;0;;;
                                  -94441;1;0;false;false;;;;;;
                                  -94442;38;0;false;false;0;0;0;;;
                                  -94480;1;0;false;false;;;;;;
                                  -94481;1;0;false;false;0;0;0;;;
                                  -94482;4;0;false;false;;;;;;
                                  -94486;2;1;false;false;127;0;85;;;
                                  -94488;1;0;false;false;;;;;;
                                  -94489;15;0;false;false;0;0;0;;;
                                  -94504;1;0;false;false;;;;;;
                                  -94505;2;0;false;false;0;0;0;;;
                                  -94507;1;0;false;false;;;;;;
                                  -94508;11;0;false;false;0;0;0;;;
                                  -94519;1;0;false;false;;;;;;
                                  -94520;2;0;false;false;0;0;0;;;
                                  -94522;1;0;false;false;;;;;;
                                  -94523;9;0;false;false;0;0;0;;;
                                  -94532;1;0;false;false;;;;;;
                                  -94533;2;0;false;false;0;0;0;;;
                                  -94535;1;0;false;false;;;;;;
                                  -94536;13;0;false;false;0;0;0;;;
                                  -94549;1;0;false;false;;;;;;
                                  -94550;1;0;false;false;0;0;0;;;
                                  -94551;5;0;false;false;;;;;;
                                  -94556;11;0;false;false;0;0;0;;;
                                  -94567;1;0;false;false;;;;;;
                                  -94568;1;0;false;false;0;0;0;;;
                                  -94569;1;0;false;false;;;;;;
                                  -94570;15;0;false;false;0;0;0;;;
                                  -94585;5;0;false;false;;;;;;
                                  -94590;2;1;false;false;127;0;85;;;
                                  -94592;1;0;false;false;;;;;;
                                  -94593;8;0;false;false;0;0;0;;;
                                  -94601;1;0;false;false;;;;;;
                                  -94602;1;0;false;false;0;0;0;;;
                                  -94603;6;0;false;false;;;;;;
                                  -94609;19;0;false;false;0;0;0;;;
                                  -94628;5;0;false;false;;;;;;
                                  -94633;1;0;false;false;0;0;0;;;
                                  -94634;5;0;false;false;;;;;;
                                  -94639;12;0;false;false;0;0;0;;;
                                  -94651;4;0;false;false;;;;;;
                                  -94655;1;0;false;false;0;0;0;;;
                                  -94656;3;0;false;false;;;;;;
                                  -94659;1;0;false;false;0;0;0;;;
                                  -94660;3;0;false;false;;;;;;
                                  -94663;2;1;false;false;127;0;85;;;
                                  -94665;1;0;false;false;;;;;;
                                  -94666;9;0;false;false;0;0;0;;;
                                  -94675;1;0;false;false;;;;;;
                                  -94676;1;0;false;false;0;0;0;;;
                                  -94677;4;0;false;false;;;;;;
                                  -94681;11;0;false;false;0;0;0;;;
                                  -94692;1;0;false;false;;;;;;
                                  -94693;1;0;false;false;0;0;0;;;
                                  -94694;1;0;false;false;;;;;;
                                  -94695;15;0;false;false;0;0;0;;;
                                  -94710;4;0;false;false;;;;;;
                                  -94714;15;0;false;false;0;0;0;;;
                                  -94729;4;1;false;false;127;0;85;;;
                                  -94733;2;0;false;false;0;0;0;;;
                                  -94735;3;0;false;false;;;;;;
                                  -94738;1;0;false;false;0;0;0;;;
                                  -94739;2;0;false;false;;;;;;
                                  -94741;1;0;false;false;0;0;0;;;
                                  -94742;2;0;false;false;;;;;;
                                  -94744;3;0;false;false;63;95;191;;;
                                  -94747;3;0;false;false;;;;;;
                                  -94750;1;0;false;false;63;95;191;;;
                                  -94751;1;0;false;false;;;;;;
                                  -94752;7;0;false;false;63;95;191;;;
                                  -94759;1;0;false;false;;;;;;
                                  -94760;3;0;false;false;63;95;191;;;
                                  -94763;1;0;false;false;;;;;;
                                  -94764;9;0;false;false;63;95;191;;;
                                  -94773;1;0;false;false;;;;;;
                                  -94774;5;0;false;false;63;95;191;;;
                                  -94779;1;0;false;false;;;;;;
                                  -94780;2;0;false;false;63;95;191;;;
                                  -94782;1;0;false;false;;;;;;
                                  -94783;3;0;false;false;63;95;191;;;
                                  -94786;1;0;false;false;;;;;;
                                  -94787;5;0;false;false;63;95;191;;;
                                  -94792;1;0;false;false;;;;;;
                                  -94793;8;0;false;false;63;95;191;;;
                                  -94801;3;0;false;false;;;;;;
                                  -94804;2;0;false;false;63;95;191;;;
                                  -94806;2;0;false;false;;;;;;
                                  -94808;4;1;false;false;127;0;85;;;
                                  -94812;1;0;false;false;;;;;;
                                  -94813;18;0;false;false;0;0;0;;;
                                  -94831;1;0;false;false;;;;;;
                                  -94832;1;0;false;false;0;0;0;;;
                                  -94833;3;0;false;false;;;;;;
                                  -94836;2;1;false;false;127;0;85;;;
                                  -94838;1;0;false;false;;;;;;
                                  -94839;12;0;false;false;0;0;0;;;
                                  -94851;1;0;false;false;;;;;;
                                  -94852;2;0;false;false;0;0;0;;;
                                  -94854;1;0;false;false;;;;;;
                                  -94855;11;0;false;false;0;0;0;;;
                                  -94866;1;0;false;false;;;;;;
                                  -94867;2;0;false;false;0;0;0;;;
                                  -94869;5;0;false;false;;;;;;
                                  -94874;12;0;false;false;0;0;0;;;
                                  -94886;1;0;false;false;;;;;;
                                  -94887;1;0;false;false;0;0;0;;;
                                  -94888;1;0;false;false;;;;;;
                                  -94889;11;0;false;false;0;0;0;;;
                                  -94900;1;0;false;false;;;;;;
                                  -94901;2;0;false;false;0;0;0;;;
                                  -94903;6;0;false;false;;;;;;
                                  -94909;11;0;false;false;0;0;0;;;
                                  -94920;1;0;false;false;;;;;;
                                  -94921;1;0;false;false;0;0;0;;;
                                  -94922;1;0;false;false;;;;;;
                                  -94923;11;0;false;false;0;0;0;;;
                                  -94934;1;0;false;false;;;;;;
                                  -94935;2;0;false;false;0;0;0;;;
                                  -94937;1;0;false;false;;;;;;
                                  -94938;15;0;false;false;0;0;0;;;
                                  -94953;1;0;false;false;;;;;;
                                  -94954;2;0;false;false;0;0;0;;;
                                  -94956;1;0;false;false;;;;;;
                                  -94957;13;0;false;false;0;0;0;;;
                                  -94970;1;0;false;false;;;;;;
                                  -94971;1;0;false;false;0;0;0;;;
                                  -94972;4;0;false;false;;;;;;
                                  -94976;32;0;false;false;0;0;0;;;
                                  -95008;3;0;false;false;;;;;;
                                  -95011;1;0;false;false;0;0;0;;;
                                  -95012;3;0;false;false;;;;;;
                                  -95015;4;1;false;false;127;0;85;;;
                                  -95019;1;0;false;false;;;;;;
                                  -95020;1;0;false;false;0;0;0;;;
                                  -95021;4;0;false;false;;;;;;
                                  -95025;28;0;false;false;0;0;0;;;
                                  -95053;3;0;false;false;;;;;;
                                  -95056;1;0;false;false;0;0;0;;;
                                  -95057;2;0;false;false;;;;;;
                                  -95059;1;0;false;false;0;0;0;;;
                                  -95060;2;0;false;false;;;;;;
                                  -95062;3;0;false;false;63;95;191;;;
                                  -95065;3;0;false;false;;;;;;
                                  -95068;1;0;false;false;63;95;191;;;
                                  -95069;1;0;false;false;;;;;;
                                  -95070;7;0;false;false;63;95;191;;;
                                  -95077;1;0;false;false;;;;;;
                                  -95078;3;0;false;false;63;95;191;;;
                                  -95081;1;0;false;false;;;;;;
                                  -95082;6;0;false;false;63;95;191;;;
                                  -95088;1;0;false;false;;;;;;
                                  -95089;2;0;false;false;63;95;191;;;
                                  -95091;1;0;false;false;;;;;;
                                  -95092;3;0;false;false;63;95;191;;;
                                  -95095;1;0;false;false;;;;;;
                                  -95096;4;0;false;false;63;95;191;;;
                                  -95100;1;0;false;false;;;;;;
                                  -95101;2;0;false;false;63;95;191;;;
                                  -95103;1;0;false;false;;;;;;
                                  -95104;3;0;false;false;63;95;191;;;
                                  -95107;1;0;false;false;;;;;;
                                  -95108;9;0;false;false;63;95;191;;;
                                  -95117;1;0;false;false;;;;;;
                                  -95118;7;0;false;false;63;95;191;;;
                                  -95125;4;0;false;false;;;;;;
                                  -95129;1;0;false;false;63;95;191;;;
                                  -95130;1;0;false;false;;;;;;
                                  -95131;2;0;false;false;63;95;191;;;
                                  -95133;1;0;false;false;;;;;;
                                  -95134;3;0;false;false;63;95;191;;;
                                  -95137;1;0;false;false;;;;;;
                                  -95138;7;0;false;false;63;95;191;;;
                                  -95145;1;0;false;false;;;;;;
                                  -95146;9;0;false;false;63;95;191;;;
                                  -95155;1;0;false;false;;;;;;
                                  -95156;7;0;false;false;63;95;191;;;
                                  -95163;1;0;false;false;;;;;;
                                  -95164;4;0;false;false;63;95;191;;;
                                  -95168;1;0;false;false;;;;;;
                                  -95169;4;0;false;false;63;95;191;;;
                                  -95173;1;0;false;false;;;;;;
                                  -95174;5;0;false;false;63;95;191;;;
                                  -95179;1;0;false;false;;;;;;
                                  -95180;2;0;false;false;63;95;191;;;
                                  -95182;1;0;false;false;;;;;;
                                  -95183;3;0;false;false;63;95;191;;;
                                  -95186;1;0;false;false;;;;;;
                                  -95187;5;0;false;false;63;95;191;;;
                                  -95192;4;0;false;false;;;;;;
                                  -95196;1;0;false;false;63;95;191;;;
                                  -95197;1;0;false;false;;;;;;
                                  -95198;6;0;false;false;63;95;191;;;
                                  -95204;1;0;false;false;;;;;;
                                  -95205;5;0;false;false;63;95;191;;;
                                  -95210;1;0;false;false;;;;;;
                                  -95211;2;0;false;false;63;95;191;;;
                                  -95213;1;0;false;false;;;;;;
                                  -95214;5;0;false;false;63;95;191;;;
                                  -95219;1;0;false;false;;;;;;
                                  -95220;2;0;false;false;63;95;191;;;
                                  -95222;1;0;false;false;;;;;;
                                  -95223;5;0;false;false;63;95;191;;;
                                  -95228;1;0;false;false;;;;;;
                                  -95229;2;0;false;false;63;95;191;;;
                                  -95231;1;0;false;false;;;;;;
                                  -95232;2;0;false;false;63;95;191;;;
                                  -95234;1;0;false;false;;;;;;
                                  -95235;4;0;false;false;63;95;191;;;
                                  -95239;1;0;false;false;;;;;;
                                  -95240;6;0;false;false;63;95;191;;;
                                  -95246;1;0;false;false;;;;;;
                                  -95247;2;0;false;false;63;95;191;;;
                                  -95249;1;0;false;false;;;;;;
                                  -95250;8;0;false;false;63;95;191;;;
                                  -95258;1;0;false;false;;;;;;
                                  -95259;2;0;false;false;63;95;191;;;
                                  -95261;4;0;false;false;;;;;;
                                  -95265;1;0;false;false;63;95;191;;;
                                  -95266;1;0;false;false;;;;;;
                                  -95267;3;0;false;false;63;95;191;;;
                                  -95270;1;0;false;false;127;127;159;;;
                                  -95271;4;0;false;false;63;95;191;;;
                                  -95275;1;0;false;false;;;;;;
                                  -95276;10;0;false;false;63;95;191;;;
                                  -95286;1;0;false;false;;;;;;
                                  -95287;3;0;false;false;63;95;191;;;
                                  -95290;1;0;false;false;;;;;;
                                  -95291;5;0;false;false;63;95;191;;;
                                  -95296;1;0;false;false;;;;;;
                                  -95297;6;0;false;false;63;95;191;;;
                                  -95303;1;0;false;false;;;;;;
                                  -95304;2;0;false;false;63;95;191;;;
                                  -95306;1;0;false;false;;;;;;
                                  -95307;3;0;false;false;63;95;191;;;
                                  -95310;1;0;false;false;;;;;;
                                  -95311;4;0;false;false;63;95;191;;;
                                  -95315;1;0;false;false;;;;;;
                                  -95316;10;0;false;false;63;95;191;;;
                                  -95326;1;0;false;false;;;;;;
                                  -95327;3;0;false;false;63;95;191;;;
                                  -95330;3;0;false;false;;;;;;
                                  -95333;1;0;false;false;63;95;191;;;
                                  -95334;1;0;false;false;;;;;;
                                  -95335;9;0;false;false;63;95;191;;;
                                  -95344;1;0;false;false;;;;;;
                                  -95345;2;0;false;false;63;95;191;;;
                                  -95347;1;0;false;false;;;;;;
                                  -95348;9;0;false;false;63;95;191;;;
                                  -95357;1;0;false;false;;;;;;
                                  -95358;2;0;false;false;63;95;191;;;
                                  -95360;1;0;false;false;;;;;;
                                  -95361;3;0;false;false;63;95;191;;;
                                  -95364;1;0;false;false;;;;;;
                                  -95365;7;0;false;false;63;95;191;;;
                                  -95372;1;0;false;false;;;;;;
                                  -95373;9;0;false;false;63;95;191;;;
                                  -95382;1;0;false;false;;;;;;
                                  -95383;7;0;false;false;63;95;191;;;
                                  -95390;1;0;false;false;;;;;;
                                  -95391;4;0;false;false;63;95;191;;;
                                  -95395;4;0;false;false;;;;;;
                                  -95399;1;0;false;false;63;95;191;;;
                                  -95400;1;0;false;false;;;;;;
                                  -95401;3;0;false;false;63;95;191;;;
                                  -95404;1;0;false;false;;;;;;
                                  -95405;5;0;false;false;63;95;191;;;
                                  -95410;1;0;false;false;;;;;;
                                  -95411;2;0;false;false;63;95;191;;;
                                  -95413;1;0;false;false;;;;;;
                                  -95414;4;0;false;false;63;95;191;;;
                                  -95418;1;0;false;false;;;;;;
                                  -95419;5;0;false;false;63;95;191;;;
                                  -95424;1;0;false;false;;;;;;
                                  -95425;3;0;false;false;63;95;191;;;
                                  -95428;1;0;false;false;;;;;;
                                  -95429;3;0;false;false;63;95;191;;;
                                  -95432;1;0;false;false;;;;;;
                                  -95433;6;0;false;false;63;95;191;;;
                                  -95439;1;0;false;false;;;;;;
                                  -95440;2;0;false;false;63;95;191;;;
                                  -95442;1;0;false;false;;;;;;
                                  -95443;3;0;false;false;63;95;191;;;
                                  -95446;1;0;false;false;;;;;;
                                  -95447;4;0;false;false;63;95;191;;;
                                  -95451;1;0;false;false;;;;;;
                                  -95452;9;0;false;false;63;95;191;;;
                                  -95461;4;0;false;false;;;;;;
                                  -95465;1;0;false;false;63;95;191;;;
                                  -95466;1;0;false;false;;;;;;
                                  -95467;3;0;false;false;63;95;191;;;
                                  -95470;1;0;false;false;;;;;;
                                  -95471;9;0;false;false;63;95;191;;;
                                  -95480;1;0;false;false;;;;;;
                                  -95481;2;0;false;false;63;95;191;;;
                                  -95483;1;0;false;false;;;;;;
                                  -95484;9;0;false;false;63;95;191;;;
                                  -95493;3;0;false;false;;;;;;
                                  -95496;1;0;false;false;63;95;191;;;
                                  -95497;4;0;false;false;;;;;;
                                  -95501;1;0;false;false;63;95;191;;;
                                  -95502;1;0;false;false;;;;;;
                                  -95503;7;1;false;false;127;159;191;;;
                                  -95510;1;0;false;false;63;95;191;;;
                                  -95511;1;0;false;false;;;;;;
                                  -95512;5;0;false;false;63;95;191;;;
                                  -95517;1;0;false;false;;;;;;
                                  -95518;1;0;false;false;63;95;191;;;
                                  -95519;1;0;false;false;;;;;;
                                  -95520;8;0;false;false;63;95;191;;;
                                  -95528;3;0;false;false;;;;;;
                                  -95531;1;0;false;false;63;95;191;;;
                                  -95532;1;0;false;false;;;;;;
                                  -95533;7;1;false;false;127;159;191;;;
                                  -95540;14;0;false;false;63;95;191;;;
                                  -95554;1;0;false;false;;;;;;
                                  -95555;5;0;false;false;63;95;191;;;
                                  -95560;1;0;false;false;;;;;;
                                  -95561;6;0;false;false;63;95;191;;;
                                  -95567;1;0;false;false;;;;;;
                                  -95568;2;0;false;false;63;95;191;;;
                                  -95570;1;0;false;false;;;;;;
                                  -95571;3;0;false;false;63;95;191;;;
                                  -95574;1;0;false;false;;;;;;
                                  -95575;5;0;false;false;63;95;191;;;
                                  -95580;1;0;false;false;;;;;;
                                  -95581;6;0;false;false;63;95;191;;;
                                  -95587;1;0;false;false;;;;;;
                                  -95588;8;0;false;false;63;95;191;;;
                                  -95596;3;0;false;false;;;;;;
                                  -95599;1;0;false;false;63;95;191;;;
                                  -95600;1;0;false;false;;;;;;
                                  -95601;7;1;false;false;127;159;191;;;
                                  -95608;4;0;false;false;63;95;191;;;
                                  -95612;1;0;false;false;;;;;;
                                  -95613;4;0;false;false;63;95;191;;;
                                  -95617;1;0;false;false;;;;;;
                                  -95618;5;0;false;false;63;95;191;;;
                                  -95623;1;0;false;false;;;;;;
                                  -95624;2;0;false;false;63;95;191;;;
                                  -95626;1;0;false;false;;;;;;
                                  -95627;3;0;false;false;63;95;191;;;
                                  -95630;1;0;false;false;;;;;;
                                  -95631;5;0;false;false;63;95;191;;;
                                  -95636;1;0;false;false;;;;;;
                                  -95637;6;0;false;false;63;95;191;;;
                                  -95643;1;0;false;false;;;;;;
                                  -95644;8;0;false;false;63;95;191;;;
                                  -95652;3;0;false;false;;;;;;
                                  -95655;2;0;false;false;63;95;191;;;
                                  -95657;2;0;false;false;;;;;;
                                  -95659;3;1;false;false;127;0;85;;;
                                  -95662;1;0;false;false;;;;;;
                                  -95663;18;0;false;false;0;0;0;;;
                                  -95681;3;1;false;false;127;0;85;;;
                                  -95684;1;0;false;false;;;;;;
                                  -95685;2;0;false;false;0;0;0;;;
                                  -95687;1;0;false;false;;;;;;
                                  -95688;3;1;false;false;127;0;85;;;
                                  -95691;1;0;false;false;;;;;;
                                  -95692;15;0;false;false;0;0;0;;;
                                  -95707;1;0;false;false;;;;;;
                                  -95708;3;1;false;false;127;0;85;;;
                                  -95711;1;0;false;false;;;;;;
                                  -95712;5;0;false;false;0;0;0;;;
                                  -95717;1;0;false;false;;;;;;
                                  -95718;1;0;false;false;0;0;0;;;
                                  -95719;3;0;false;false;;;;;;
                                  -95722;3;1;false;false;127;0;85;;;
                                  -95725;1;0;false;false;;;;;;
                                  -95726;11;0;false;false;0;0;0;;;
                                  -95737;5;0;false;false;;;;;;
                                  -95742;66;0;false;false;63;127;95;;;
                                  -95808;1;0;false;false;;;;;;
                                  -95809;76;0;false;false;63;127;95;;;
                                  -95885;1;0;false;false;;;;;;
                                  -95886;74;0;false;false;63;127;95;;;
                                  -95960;1;0;false;false;;;;;;
                                  -95961;50;0;false;false;63;127;95;;;
                                  -96011;2;0;false;false;;;;;;
                                  -96013;2;1;false;false;127;0;85;;;
                                  -96015;1;0;false;false;;;;;;
                                  -96016;15;0;false;false;0;0;0;;;
                                  -96031;1;0;false;false;;;;;;
                                  -96032;1;0;false;false;0;0;0;;;
                                  -96033;1;0;false;false;;;;;;
                                  -96034;15;0;false;false;0;0;0;;;
                                  -96049;1;0;false;false;;;;;;
                                  -96050;2;0;false;false;0;0;0;;;
                                  -96052;1;0;false;false;;;;;;
                                  -96053;15;0;false;false;0;0;0;;;
                                  -96068;1;0;false;false;;;;;;
                                  -96069;2;0;false;false;0;0;0;;;
                                  -96071;1;0;false;false;;;;;;
                                  -96072;12;0;false;false;0;0;0;;;
                                  -96084;1;0;false;false;;;;;;
                                  -96085;1;0;false;false;0;0;0;;;
                                  -96086;4;0;false;false;;;;;;
                                  -96090;15;0;false;false;0;0;0;;;
                                  -96105;1;0;false;false;;;;;;
                                  -96106;1;0;false;false;0;0;0;;;
                                  -96107;1;0;false;false;;;;;;
                                  -96108;23;0;false;false;0;0;0;;;
                                  -96131;3;0;false;false;;;;;;
                                  -96134;1;0;false;false;0;0;0;;;
                                  -96135;3;0;false;false;;;;;;
                                  -96138;4;1;false;false;127;0;85;;;
                                  -96142;3;0;false;false;;;;;;
                                  -96145;2;1;false;false;127;0;85;;;
                                  -96147;1;0;false;false;;;;;;
                                  -96148;15;0;false;false;0;0;0;;;
                                  -96163;1;0;false;false;;;;;;
                                  -96164;1;0;false;false;0;0;0;;;
                                  -96165;1;0;false;false;;;;;;
                                  -96166;15;0;false;false;0;0;0;;;
                                  -96181;1;0;false;false;;;;;;
                                  -96182;2;0;false;false;0;0;0;;;
                                  -96184;1;0;false;false;;;;;;
                                  -96185;15;0;false;false;0;0;0;;;
                                  -96200;1;0;false;false;;;;;;
                                  -96201;2;0;false;false;0;0;0;;;
                                  -96203;1;0;false;false;;;;;;
                                  -96204;12;0;false;false;0;0;0;;;
                                  -96216;1;0;false;false;;;;;;
                                  -96217;1;0;false;false;0;0;0;;;
                                  -96218;4;0;false;false;;;;;;
                                  -96222;15;0;false;false;0;0;0;;;
                                  -96237;1;0;false;false;;;;;;
                                  -96238;1;0;false;false;0;0;0;;;
                                  -96239;1;0;false;false;;;;;;
                                  -96240;23;0;false;false;0;0;0;;;
                                  -96263;3;0;false;false;;;;;;
                                  -96266;1;0;false;false;0;0;0;;;
                                  -96267;3;0;false;false;;;;;;
                                  -96270;2;1;false;false;127;0;85;;;
                                  -96272;1;0;false;false;;;;;;
                                  -96273;2;0;false;false;0;0;0;;;
                                  -96275;1;0;false;false;;;;;;
                                  -96276;2;0;false;false;0;0;0;;;
                                  -96278;1;0;false;false;;;;;;
                                  -96279;1;0;false;false;0;0;0;;;
                                  -96280;1;0;false;false;;;;;;
                                  -96281;2;0;false;false;0;0;0;;;
                                  -96283;1;0;false;false;;;;;;
                                  -96284;1;0;false;false;0;0;0;;;
                                  -96285;1;0;false;false;;;;;;
                                  -96286;1;0;false;false;0;0;0;;;
                                  -96287;1;0;false;false;;;;;;
                                  -96288;22;0;false;false;0;0;0;;;
                                  -96310;1;0;false;false;;;;;;
                                  -96311;1;0;false;false;0;0;0;;;
                                  -96312;4;0;false;false;;;;;;
                                  -96316;32;0;false;false;63;127;95;;;
                                  -96348;2;0;false;false;;;;;;
                                  -96350;2;1;false;false;127;0;85;;;
                                  -96352;1;0;false;false;;;;;;
                                  -96353;12;0;false;false;0;0;0;;;
                                  -96365;1;0;false;false;;;;;;
                                  -96366;2;0;false;false;0;0;0;;;
                                  -96368;1;0;false;false;;;;;;
                                  -96369;12;0;false;false;0;0;0;;;
                                  -96381;1;0;false;false;;;;;;
                                  -96382;1;0;false;false;0;0;0;;;
                                  -96383;5;0;false;false;;;;;;
                                  -96388;10;0;false;false;0;0;0;;;
                                  -96398;1;0;false;false;;;;;;
                                  -96399;1;0;false;false;0;0;0;;;
                                  -96400;1;0;false;false;;;;;;
                                  -96401;29;0;false;false;0;0;0;;;
                                  -96430;4;0;false;false;;;;;;
                                  -96434;1;0;false;false;0;0;0;;;
                                  -96435;4;0;false;false;;;;;;
                                  -96439;4;1;false;false;127;0;85;;;
                                  -96443;1;0;false;false;;;;;;
                                  -96444;1;0;false;false;0;0;0;;;
                                  -96445;5;0;false;false;;;;;;
                                  -96450;10;0;false;false;0;0;0;;;
                                  -96460;1;0;false;false;;;;;;
                                  -96461;1;0;false;false;0;0;0;;;
                                  -96462;1;0;false;false;;;;;;
                                  -96463;35;0;false;false;0;0;0;;;
                                  -96498;4;0;false;false;;;;;;
                                  -96502;1;0;false;false;0;0;0;;;
                                  -96503;4;0;false;false;;;;;;
                                  -96507;59;0;false;false;63;127;95;;;
                                  -96566;2;0;false;false;;;;;;
                                  -96568;2;1;false;false;127;0;85;;;
                                  -96570;1;0;false;false;;;;;;
                                  -96571;36;0;false;false;0;0;0;;;
                                  -96607;1;0;false;false;;;;;;
                                  -96608;2;0;false;false;0;0;0;;;
                                  -96610;1;0;false;false;;;;;;
                                  -96611;5;0;false;false;0;0;0;;;
                                  -96616;1;0;false;false;;;;;;
                                  -96617;1;0;false;false;0;0;0;;;
                                  -96618;5;0;false;false;;;;;;
                                  -96623;14;0;false;false;0;0;0;;;
                                  -96637;1;0;false;false;;;;;;
                                  -96638;1;0;false;false;0;0;0;;;
                                  -96639;1;0;false;false;;;;;;
                                  -96640;11;0;false;false;0;0;0;;;
                                  -96651;4;0;false;false;;;;;;
                                  -96655;1;0;false;false;0;0;0;;;
                                  -96656;3;0;false;false;;;;;;
                                  -96659;1;0;false;false;0;0;0;;;
                                  -96660;3;0;false;false;;;;;;
                                  -96663;6;1;false;false;127;0;85;;;
                                  -96669;1;0;false;false;;;;;;
                                  -96670;15;0;false;false;0;0;0;;;
                                  -96685;2;0;false;false;;;;;;
                                  -96687;1;0;false;false;0;0;0;;;
                                  -96688;2;0;false;false;;;;;;
                                  -96690;3;0;false;false;63;95;191;;;
                                  -96693;3;0;false;false;;;;;;
                                  -96696;1;0;false;false;63;95;191;;;
                                  -96697;1;0;false;false;;;;;;
                                  -96698;7;0;false;false;63;95;191;;;
                                  -96705;1;0;false;false;;;;;;
                                  -96706;3;0;false;false;63;95;191;;;
                                  -96709;1;0;false;false;;;;;;
                                  -96710;4;0;false;false;63;95;191;;;
                                  -96714;1;0;false;false;;;;;;
                                  -96715;4;0;false;false;63;95;191;;;
                                  -96719;1;0;false;false;;;;;;
                                  -96720;2;0;false;false;63;95;191;;;
                                  -96722;1;0;false;false;;;;;;
                                  -96723;4;0;false;false;63;95;191;;;
                                  -96727;1;0;false;false;;;;;;
                                  -96728;3;0;false;false;63;95;191;;;
                                  -96731;1;0;false;false;;;;;;
                                  -96732;4;0;false;false;63;95;191;;;
                                  -96736;1;0;false;false;;;;;;
                                  -96737;4;0;false;false;63;95;191;;;
                                  -96741;1;0;false;false;;;;;;
                                  -96742;10;0;false;false;63;95;191;;;
                                  -96752;1;0;false;false;;;;;;
                                  -96753;2;0;false;false;63;95;191;;;
                                  -96755;1;0;false;false;;;;;;
                                  -96756;6;0;false;false;63;95;191;;;
                                  -96762;3;0;false;false;;;;;;
                                  -96765;1;0;false;false;63;95;191;;;
                                  -96766;1;0;false;false;;;;;;
                                  -96767;2;0;false;false;63;95;191;;;
                                  -96769;1;0;false;false;;;;;;
                                  -96770;3;0;false;false;63;95;191;;;
                                  -96773;1;0;false;false;;;;;;
                                  -96774;7;0;false;false;63;95;191;;;
                                  -96781;1;0;false;false;;;;;;
                                  -96782;4;0;false;false;63;95;191;;;
                                  -96786;1;0;false;false;;;;;;
                                  -96787;7;0;false;false;63;95;191;;;
                                  -96794;1;0;false;false;;;;;;
                                  -96795;3;0;false;false;63;95;191;;;
                                  -96798;1;0;false;false;;;;;;
                                  -96799;5;0;false;false;63;95;191;;;
                                  -96804;1;0;false;false;;;;;;
                                  -96805;7;0;false;false;63;95;191;;;
                                  -96812;1;0;false;false;;;;;;
                                  -96813;3;0;false;false;63;95;191;;;
                                  -96816;1;0;false;false;;;;;;
                                  -96817;5;0;false;false;63;95;191;;;
                                  -96822;3;0;false;false;;;;;;
                                  -96825;1;0;false;false;63;95;191;;;
                                  -96826;1;0;false;false;;;;;;
                                  -96827;3;0;false;false;63;95;191;;;
                                  -96830;1;0;false;false;;;;;;
                                  -96831;5;0;false;false;63;95;191;;;
                                  -96836;1;0;false;false;;;;;;
                                  -96837;2;0;false;false;63;95;191;;;
                                  -96839;1;0;false;false;;;;;;
                                  -96840;8;0;false;false;63;95;191;;;
                                  -96848;1;0;false;false;;;;;;
                                  -96849;3;0;false;false;63;95;191;;;
                                  -96852;1;0;false;false;;;;;;
                                  -96853;4;0;false;false;63;95;191;;;
                                  -96857;1;0;false;false;;;;;;
                                  -96858;6;0;false;false;63;95;191;;;
                                  -96864;1;0;false;false;;;;;;
                                  -96865;2;0;false;false;63;95;191;;;
                                  -96867;1;0;false;false;;;;;;
                                  -96868;5;0;false;false;63;95;191;;;
                                  -96873;1;0;false;false;;;;;;
                                  -96874;2;0;false;false;63;95;191;;;
                                  -96876;1;0;false;false;;;;;;
                                  -96877;4;0;false;false;63;95;191;;;
                                  -96881;1;0;false;false;;;;;;
                                  -96882;3;0;false;false;63;95;191;;;
                                  -96885;1;0;false;false;;;;;;
                                  -96886;8;0;false;false;63;95;191;;;
                                  -96894;4;0;false;false;;;;;;
                                  -96898;1;0;false;false;63;95;191;;;
                                  -96899;1;0;false;false;;;;;;
                                  -96900;8;0;false;false;63;95;191;;;
                                  -96908;1;0;false;false;;;;;;
                                  -96909;2;0;false;false;63;95;191;;;
                                  -96911;1;0;false;false;;;;;;
                                  -96912;3;0;false;false;63;95;191;;;
                                  -96915;1;0;false;false;;;;;;
                                  -96916;3;0;false;false;63;95;191;;;
                                  -96919;1;0;false;false;;;;;;
                                  -96920;4;0;false;false;63;95;191;;;
                                  -96924;1;0;false;false;;;;;;
                                  -96925;7;0;false;false;63;95;191;;;
                                  -96932;1;0;false;false;;;;;;
                                  -96933;3;0;false;false;63;95;191;;;
                                  -96936;1;0;false;false;;;;;;
                                  -96937;5;0;false;false;63;95;191;;;
                                  -96942;1;0;false;false;;;;;;
                                  -96943;3;0;false;false;63;95;191;;;
                                  -96946;1;0;false;false;;;;;;
                                  -96947;9;0;false;false;63;95;191;;;
                                  -96956;1;0;false;false;;;;;;
                                  -96957;2;0;false;false;63;95;191;;;
                                  -96959;1;0;false;false;;;;;;
                                  -96960;3;0;false;false;63;95;191;;;
                                  -96963;1;0;false;false;;;;;;
                                  -96964;3;0;false;false;63;95;191;;;
                                  -96967;4;0;false;false;;;;;;
                                  -96971;1;0;false;false;63;95;191;;;
                                  -96972;1;0;false;false;;;;;;
                                  -96973;2;0;false;false;63;95;191;;;
                                  -96975;1;0;false;false;;;;;;
                                  -96976;3;0;false;false;63;95;191;;;
                                  -96979;1;0;false;false;;;;;;
                                  -96980;4;0;false;false;63;95;191;;;
                                  -96984;1;0;false;false;;;;;;
                                  -96985;5;0;false;false;63;95;191;;;
                                  -96990;1;0;false;false;;;;;;
                                  -96991;1;0;false;false;63;95;191;;;
                                  -96992;1;0;false;false;;;;;;
                                  -96993;4;0;false;false;63;95;191;;;
                                  -96997;1;0;false;false;;;;;;
                                  -96998;4;0;false;false;63;95;191;;;
                                  -97002;1;0;false;false;;;;;;
                                  -97003;6;0;false;false;63;95;191;;;
                                  -97009;1;0;false;false;;;;;;
                                  -97010;2;0;false;false;63;95;191;;;
                                  -97012;1;0;false;false;;;;;;
                                  -97013;3;0;false;false;63;95;191;;;
                                  -97016;1;0;false;false;;;;;;
                                  -97017;9;0;false;false;63;95;191;;;
                                  -97026;1;0;false;false;;;;;;
                                  -97027;2;0;false;false;63;95;191;;;
                                  -97029;1;0;false;false;;;;;;
                                  -97030;4;0;false;false;63;95;191;;;
                                  -97034;1;0;false;false;;;;;;
                                  -97035;4;0;false;false;63;95;191;;;
                                  -97039;4;0;false;false;;;;;;
                                  -97043;1;0;false;false;63;95;191;;;
                                  -97044;1;0;false;false;;;;;;
                                  -97045;3;0;false;false;63;95;191;;;
                                  -97048;1;0;false;false;;;;;;
                                  -97049;5;0;false;false;63;95;191;;;
                                  -97054;1;0;false;false;;;;;;
                                  -97055;2;0;false;false;63;95;191;;;
                                  -97057;1;0;false;false;;;;;;
                                  -97058;5;0;false;false;63;95;191;;;
                                  -97063;1;0;false;false;;;;;;
                                  -97064;5;0;false;false;63;95;191;;;
                                  -97069;1;0;false;false;;;;;;
                                  -97070;3;0;false;false;63;95;191;;;
                                  -97073;1;0;false;false;;;;;;
                                  -97074;4;0;false;false;63;95;191;;;
                                  -97078;1;0;false;false;;;;;;
                                  -97079;10;0;false;false;63;95;191;;;
                                  -97089;3;0;false;false;;;;;;
                                  -97092;1;0;false;false;63;95;191;;;
                                  -97093;1;0;false;false;;;;;;
                                  -97094;3;0;false;false;127;127;159;;;
                                  -97097;3;0;false;false;;;;;;
                                  -97100;1;0;false;false;63;95;191;;;
                                  -97101;3;0;false;false;;;;;;
                                  -97104;1;0;false;false;63;95;191;;;
                                  -97105;1;0;false;false;;;;;;
                                  -97106;7;1;false;false;127;159;191;;;
                                  -97113;6;0;false;false;63;95;191;;;
                                  -97119;1;0;false;false;;;;;;
                                  -97120;7;0;false;false;63;95;191;;;
                                  -97127;1;0;false;false;;;;;;
                                  -97128;2;0;false;false;63;95;191;;;
                                  -97130;1;0;false;false;;;;;;
                                  -97131;3;0;false;false;63;95;191;;;
                                  -97134;1;0;false;false;;;;;;
                                  -97135;2;0;false;false;63;95;191;;;
                                  -97137;1;0;false;false;;;;;;
                                  -97138;6;0;false;false;63;95;191;;;
                                  -97144;1;0;false;false;;;;;;
                                  -97145;3;0;false;false;63;95;191;;;
                                  -97148;1;0;false;false;;;;;;
                                  -97149;4;0;false;false;63;95;191;;;
                                  -97153;3;0;false;false;;;;;;
                                  -97156;2;0;false;false;63;95;191;;;
                                  -97158;2;0;false;false;;;;;;
                                  -97160;4;1;false;false;127;0;85;;;
                                  -97164;1;0;false;false;;;;;;
                                  -97165;11;0;false;false;0;0;0;;;
                                  -97176;7;1;false;false;127;0;85;;;
                                  -97183;1;0;false;false;;;;;;
                                  -97184;7;0;false;false;0;0;0;;;
                                  -97191;1;0;false;false;;;;;;
                                  -97192;3;1;false;false;127;0;85;;;
                                  -97195;1;0;false;false;;;;;;
                                  -97196;6;0;false;false;0;0;0;;;
                                  -97202;1;0;false;false;;;;;;
                                  -97203;1;0;false;false;0;0;0;;;
                                  -97204;3;0;false;false;;;;;;
                                  -97207;3;1;false;false;127;0;85;;;
                                  -97210;1;0;false;false;;;;;;
                                  -97211;9;0;false;false;0;0;0;;;
                                  -97220;1;0;false;false;;;;;;
                                  -97221;1;0;false;false;0;0;0;;;
                                  -97222;1;0;false;false;;;;;;
                                  -97223;23;0;false;false;0;0;0;;;
                                  -97246;3;0;false;false;;;;;;
                                  -97249;3;1;false;false;127;0;85;;;
                                  -97252;1;0;false;false;;;;;;
                                  -97253;10;0;false;false;0;0;0;;;
                                  -97263;1;0;false;false;;;;;;
                                  -97264;1;0;false;false;0;0;0;;;
                                  -97265;1;0;false;false;;;;;;
                                  -97266;8;0;false;false;0;0;0;;;
                                  -97274;3;0;false;false;;;;;;
                                  -97277;3;1;false;false;127;0;85;;;
                                  -97280;1;0;false;false;;;;;;
                                  -97281;16;0;false;false;0;0;0;;;
                                  -97297;1;0;false;false;;;;;;
                                  -97298;1;0;false;false;0;0;0;;;
                                  -97299;1;0;false;false;;;;;;
                                  -97300;23;0;false;false;0;0;0;;;
                                  -97323;3;0;false;false;;;;;;
                                  -97326;3;1;false;false;127;0;85;;;
                                  -97329;1;0;false;false;;;;;;
                                  -97330;10;0;false;false;0;0;0;;;
                                  -97340;6;0;false;false;;;;;;
                                  -97346;50;0;false;false;63;127;95;;;
                                  -97396;1;0;false;false;;;;;;
                                  -97397;2;1;false;false;127;0;85;;;
                                  -97399;1;0;false;false;;;;;;
                                  -97400;16;0;false;false;0;0;0;;;
                                  -97416;1;0;false;false;;;;;;
                                  -97417;1;0;false;false;0;0;0;;;
                                  -97418;4;0;false;false;;;;;;
                                  -97422;6;1;false;false;127;0;85;;;
                                  -97428;1;0;false;false;0;0;0;;;
                                  -97429;3;0;false;false;;;;;;
                                  -97432;1;0;false;false;0;0;0;;;
                                  -97433;3;0;false;false;;;;;;
                                  -97436;9;0;false;false;0;0;0;;;
                                  -97445;1;0;false;false;;;;;;
                                  -97446;1;0;false;false;0;0;0;;;
                                  -97447;1;0;false;false;;;;;;
                                  -97448;15;0;false;false;0;0;0;;;
                                  -97463;3;0;false;false;;;;;;
                                  -97466;2;1;false;false;127;0;85;;;
                                  -97468;1;0;false;false;;;;;;
                                  -97469;10;0;false;false;0;0;0;;;
                                  -97479;1;0;false;false;;;;;;
                                  -97480;1;0;false;false;0;0;0;;;
                                  -97481;1;0;false;false;;;;;;
                                  -97482;9;0;false;false;0;0;0;;;
                                  -97491;1;0;false;false;;;;;;
                                  -97492;1;0;false;false;0;0;0;;;
                                  -97493;1;0;false;false;;;;;;
                                  -97494;2;0;false;false;0;0;0;;;
                                  -97496;1;0;false;false;;;;;;
                                  -97497;1;0;false;false;0;0;0;;;
                                  -97498;4;0;false;false;;;;;;
                                  -97502;3;1;false;false;127;0;85;;;
                                  -97505;1;0;false;false;;;;;;
                                  -97506;15;0;false;false;0;0;0;;;
                                  -97521;1;0;false;false;;;;;;
                                  -97522;1;0;false;false;0;0;0;;;
                                  -97523;1;0;false;false;;;;;;
                                  -97524;9;0;false;false;0;0;0;;;
                                  -97533;1;0;false;false;;;;;;
                                  -97534;1;0;false;false;0;0;0;;;
                                  -97535;1;0;false;false;;;;;;
                                  -97536;23;0;false;false;0;0;0;;;
                                  -97559;4;0;false;false;;;;;;
                                  -97563;3;1;false;false;127;0;85;;;
                                  -97566;1;0;false;false;;;;;;
                                  -97567;8;0;false;false;0;0;0;;;
                                  -97575;1;0;false;false;;;;;;
                                  -97576;1;0;false;false;0;0;0;;;
                                  -97577;1;0;false;false;;;;;;
                                  -97578;23;0;false;false;0;0;0;;;
                                  -97601;4;0;false;false;;;;;;
                                  -97605;3;1;false;false;127;0;85;;;
                                  -97608;1;0;false;false;;;;;;
                                  -97609;11;0;false;false;0;0;0;;;
                                  -97620;1;0;false;false;;;;;;
                                  -97621;1;0;false;false;0;0;0;;;
                                  -97622;1;0;false;false;;;;;;
                                  -97623;18;0;false;false;0;0;0;;;
                                  -97641;1;0;false;false;;;;;;
                                  -97642;1;0;false;false;0;0;0;;;
                                  -97643;1;0;false;false;;;;;;
                                  -97644;9;0;false;false;0;0;0;;;
                                  -97653;1;0;false;false;;;;;;
                                  -97654;1;0;false;false;0;0;0;;;
                                  -97655;1;0;false;false;;;;;;
                                  -97656;2;0;false;false;0;0;0;;;
                                  -97658;1;0;false;false;;;;;;
                                  -97659;7;0;false;false;0;0;0;;;
                                  -97666;4;0;false;false;;;;;;
                                  -97670;3;1;false;false;127;0;85;;;
                                  -97673;1;0;false;false;;;;;;
                                  -97674;13;0;false;false;0;0;0;;;
                                  -97687;8;0;false;false;;;;;;
                                  -97695;65;0;false;false;63;127;95;;;
                                  -97760;2;0;false;false;;;;;;
                                  -97762;38;0;false;false;63;127;95;;;
                                  -97800;2;0;false;false;;;;;;
                                  -97802;11;0;false;false;0;0;0;;;
                                  -97813;1;0;false;false;;;;;;
                                  -97814;1;0;false;false;0;0;0;;;
                                  -97815;1;0;false;false;;;;;;
                                  -97816;11;0;false;false;0;0;0;;;
                                  -97827;1;0;false;false;;;;;;
                                  -97828;13;0;false;false;0;0;0;;;
                                  -97841;4;0;false;false;;;;;;
                                  -97845;9;0;false;false;0;0;0;;;
                                  -97854;1;0;false;false;;;;;;
                                  -97855;2;0;false;false;0;0;0;;;
                                  -97857;1;0;false;false;;;;;;
                                  -97858;12;0;false;false;0;0;0;;;
                                  -97870;4;0;false;false;;;;;;
                                  -97874;11;0;false;false;0;0;0;;;
                                  -97885;1;0;false;false;;;;;;
                                  -97886;1;0;false;false;0;0;0;;;
                                  -97887;1;0;false;false;;;;;;
                                  -97888;33;0;false;false;0;0;0;;;
                                  -97921;1;0;false;false;;;;;;
                                  -97922;11;0;false;false;0;0;0;;;
                                  -97933;5;0;false;false;;;;;;
                                  -97938;2;1;false;false;127;0;85;;;
                                  -97940;1;0;false;false;;;;;;
                                  -97941;8;0;false;false;0;0;0;;;
                                  -97949;1;0;false;false;;;;;;
                                  -97950;1;0;false;false;0;0;0;;;
                                  -97951;5;0;false;false;;;;;;
                                  -97956;28;0;false;false;0;0;0;;;
                                  -97984;4;0;false;false;;;;;;
                                  -97988;1;0;false;false;0;0;0;;;
                                  -97989;4;0;false;false;;;;;;
                                  -97993;42;0;false;false;63;127;95;;;
                                  -98035;2;0;false;false;;;;;;
                                  -98037;12;0;false;false;0;0;0;;;
                                  -98049;1;0;false;false;;;;;;
                                  -98050;1;0;false;false;0;0;0;;;
                                  -98051;1;0;false;false;;;;;;
                                  -98052;20;0;false;false;0;0;0;;;
                                  -98072;1;0;false;false;;;;;;
                                  -98073;1;0;false;false;0;0;0;;;
                                  -98074;1;0;false;false;;;;;;
                                  -98075;11;0;false;false;0;0;0;;;
                                  -98086;1;0;false;false;;;;;;
                                  -98087;1;0;false;false;0;0;0;;;
                                  -98088;1;0;false;false;;;;;;
                                  -98089;23;0;false;false;0;0;0;;;
                                  -98112;4;0;false;false;;;;;;
                                  -98116;2;1;false;false;127;0;85;;;
                                  -98118;1;0;false;false;;;;;;
                                  -98119;13;0;false;false;0;0;0;;;
                                  -98132;1;0;false;false;;;;;;
                                  -98133;1;0;false;false;0;0;0;;;
                                  -98134;1;0;false;false;;;;;;
                                  -98135;8;0;false;false;0;0;0;;;
                                  -98143;1;0;false;false;;;;;;
                                  -98144;1;0;false;false;0;0;0;;;
                                  -98145;1;0;false;false;;;;;;
                                  -98146;16;0;false;false;0;0;0;;;
                                  -98162;1;0;false;false;;;;;;
                                  -98163;1;0;false;false;0;0;0;;;
                                  -98164;5;0;false;false;;;;;;
                                  -98169;12;0;false;false;0;0;0;;;
                                  -98181;1;0;false;false;;;;;;
                                  -98182;1;0;false;false;0;0;0;;;
                                  -98183;1;0;false;false;;;;;;
                                  -98184;15;0;false;false;0;0;0;;;
                                  -98199;1;0;false;false;;;;;;
                                  -98200;1;0;false;false;0;0;0;;;
                                  -98201;1;0;false;false;;;;;;
                                  -98202;9;0;false;false;0;0;0;;;
                                  -98211;4;0;false;false;;;;;;
                                  -98215;1;0;false;false;0;0;0;;;
                                  -98216;4;0;false;false;;;;;;
                                  -98220;2;1;false;false;127;0;85;;;
                                  -98222;1;0;false;false;;;;;;
                                  -98223;13;0;false;false;0;0;0;;;
                                  -98236;1;0;false;false;;;;;;
                                  -98237;1;0;false;false;0;0;0;;;
                                  -98238;1;0;false;false;;;;;;
                                  -98239;21;0;false;false;0;0;0;;;
                                  -98260;1;0;false;false;;;;;;
                                  -98261;1;0;false;false;0;0;0;;;
                                  -98262;7;0;false;false;;;;;;
                                  -98269;37;0;false;false;0;0;0;;;
                                  -98306;1;0;false;false;;;;;;
                                  -98307;4;1;false;false;127;0;85;;;
                                  -98311;2;0;false;false;0;0;0;;;
                                  -98313;4;0;false;false;;;;;;
                                  -98317;1;0;false;false;0;0;0;;;
                                  -98318;3;0;false;false;;;;;;
                                  -98321;1;0;false;false;0;0;0;;;
                                  -98322;3;0;false;false;;;;;;
                                  -98325;66;0;false;false;63;127;95;;;
                                  -98391;1;0;false;false;;;;;;
                                  -98392;69;0;false;false;63;127;95;;;
                                  -98461;1;0;false;false;;;;;;
                                  -98462;21;0;false;false;0;0;0;;;
                                  -98483;3;0;false;false;;;;;;
                                  -98486;51;0;false;false;63;127;95;;;
                                  -98537;1;0;false;false;;;;;;
                                  -98538;3;1;false;false;127;0;85;;;
                                  -98541;1;0;false;false;;;;;;
                                  -98542;13;0;false;false;0;0;0;;;
                                  -98555;1;0;false;false;;;;;;
                                  -98556;1;0;false;false;0;0;0;;;
                                  -98557;1;0;false;false;;;;;;
                                  -98558;16;0;false;false;0;0;0;;;
                                  -98574;1;0;false;false;;;;;;
                                  -98575;1;0;false;false;0;0;0;;;
                                  -98576;1;0;false;false;;;;;;
                                  -98577;23;0;false;false;0;0;0;;;
                                  -98600;3;0;false;false;;;;;;
                                  -98603;7;0;false;false;0;0;0;;;
                                  -98610;1;0;false;false;;;;;;
                                  -98611;1;0;false;false;0;0;0;;;
                                  -98612;1;0;false;false;;;;;;
                                  -98613;10;0;false;false;0;0;0;;;
                                  -98623;1;0;false;false;;;;;;
                                  -98624;1;0;false;false;0;0;0;;;
                                  -98625;1;0;false;false;;;;;;
                                  -98626;14;0;false;false;0;0;0;;;
                                  -98640;2;0;false;false;;;;;;
                                  -98642;1;0;false;false;0;0;0;;;
                                  -98643;2;0;false;false;;;;;;
                                  -98645;3;0;false;false;63;95;191;;;
                                  -98648;3;0;false;false;;;;;;
                                  -98651;1;0;false;false;63;95;191;;;
                                  -98652;1;0;false;false;;;;;;
                                  -98653;5;0;false;false;63;95;191;;;
                                  -98658;1;0;false;false;;;;;;
                                  -98659;3;0;false;false;63;95;191;;;
                                  -98662;1;0;false;false;;;;;;
                                  -98663;6;0;false;false;63;95;191;;;
                                  -98669;1;0;false;false;;;;;;
                                  -98670;2;0;false;false;63;95;191;;;
                                  -98672;1;0;false;false;;;;;;
                                  -98673;3;0;false;false;63;95;191;;;
                                  -98676;1;0;false;false;;;;;;
                                  -98677;3;0;false;false;63;95;191;;;
                                  -98680;1;0;false;false;;;;;;
                                  -98681;2;0;false;false;63;95;191;;;
                                  -98683;1;0;false;false;;;;;;
                                  -98684;3;0;false;false;63;95;191;;;
                                  -98687;1;0;false;false;;;;;;
                                  -98688;4;0;false;false;63;95;191;;;
                                  -98692;1;0;false;false;;;;;;
                                  -98693;5;0;false;false;63;95;191;;;
                                  -98698;1;0;false;false;;;;;;
                                  -98699;7;0;false;false;63;95;191;;;
                                  -98706;1;0;false;false;;;;;;
                                  -98707;5;0;false;false;63;95;191;;;
                                  -98712;3;0;false;false;;;;;;
                                  -98715;2;0;false;false;63;95;191;;;
                                  -98717;2;0;false;false;;;;;;
                                  -98719;4;1;false;false;127;0;85;;;
                                  -98723;1;0;false;false;;;;;;
                                  -98724;11;0;false;false;0;0;0;;;
                                  -98735;1;0;false;false;;;;;;
                                  -98736;1;0;false;false;0;0;0;;;
                                  -98737;3;0;false;false;;;;;;
                                  -98740;57;0;false;false;63;127;95;;;
                                  -98797;1;0;false;false;;;;;;
                                  -98798;2;1;false;false;127;0;85;;;
                                  -98800;1;0;false;false;;;;;;
                                  -98801;16;0;false;false;0;0;0;;;
                                  -98817;1;0;false;false;;;;;;
                                  -98818;1;0;false;false;0;0;0;;;
                                  -98819;4;0;false;false;;;;;;
                                  -98823;12;0;false;false;0;0;0;;;
                                  -98835;3;0;false;false;;;;;;
                                  -98838;1;0;false;false;0;0;0;;;
                                  -98839;3;0;false;false;;;;;;
                                  -98842;4;1;false;false;127;0;85;;;
                                  -98846;1;0;false;false;;;;;;
                                  -98847;1;0;false;false;0;0;0;;;
                                  -98848;4;0;false;false;;;;;;
                                  -98852;3;1;false;false;127;0;85;;;
                                  -98855;1;0;false;false;;;;;;
                                  -98856;4;0;false;false;0;0;0;;;
                                  -98860;1;0;false;false;;;;;;
                                  -98861;1;0;false;false;0;0;0;;;
                                  -98862;1;0;false;false;;;;;;
                                  -98863;17;0;false;false;0;0;0;;;
                                  -98880;4;0;false;false;;;;;;
                                  -98884;3;1;false;false;127;0;85;;;
                                  -98887;1;0;false;false;;;;;;
                                  -98888;17;0;false;false;0;0;0;;;
                                  -98905;1;0;false;false;;;;;;
                                  -98906;1;0;false;false;0;0;0;;;
                                  -98907;1;0;false;false;;;;;;
                                  -98908;29;0;false;false;0;0;0;;;
                                  -98937;1;0;false;false;;;;;;
                                  -98938;1;0;false;false;0;0;0;;;
                                  -98939;1;0;false;false;;;;;;
                                  -98940;31;0;false;false;0;0;0;;;
                                  -98971;7;0;false;false;;;;;;
                                  -98978;2;1;false;false;127;0;85;;;
                                  -98980;1;0;false;false;;;;;;
                                  -98981;12;0;false;false;0;0;0;;;
                                  -98993;1;0;false;false;;;;;;
                                  -98994;1;0;false;false;0;0;0;;;
                                  -98995;1;0;false;false;;;;;;
                                  -98996;18;0;false;false;0;0;0;;;
                                  -99014;1;0;false;false;;;;;;
                                  -99015;1;0;false;false;0;0;0;;;
                                  -99016;5;0;false;false;;;;;;
                                  -99021;11;0;false;false;0;0;0;;;
                                  -99032;1;0;false;false;;;;;;
                                  -99033;1;0;false;false;0;0;0;;;
                                  -99034;1;0;false;false;;;;;;
                                  -99035;18;0;false;false;0;0;0;;;
                                  -99053;5;0;false;false;;;;;;
                                  -99058;12;0;false;false;0;0;0;;;
                                  -99070;4;0;false;false;;;;;;
                                  -99074;1;0;false;false;0;0;0;;;
                                  -99075;3;0;false;false;;;;;;
                                  -99078;1;0;false;false;0;0;0;;;
                                  -99079;2;0;false;false;;;;;;
                                  -99081;1;0;false;false;0;0;0;;;
                                  -99082;2;0;false;false;;;;;;
                                  -99084;3;0;false;false;63;95;191;;;
                                  -99087;3;0;false;false;;;;;;
                                  -99090;1;0;false;false;63;95;191;;;
                                  -99091;1;0;false;false;;;;;;
                                  -99092;5;0;false;false;63;95;191;;;
                                  -99097;1;0;false;false;;;;;;
                                  -99098;3;0;false;false;63;95;191;;;
                                  -99101;1;0;false;false;;;;;;
                                  -99102;6;0;false;false;63;95;191;;;
                                  -99108;1;0;false;false;;;;;;
                                  -99109;2;0;false;false;63;95;191;;;
                                  -99111;1;0;false;false;;;;;;
                                  -99112;3;0;false;false;63;95;191;;;
                                  -99115;1;0;false;false;;;;;;
                                  -99116;9;0;false;false;63;95;191;;;
                                  -99125;1;0;false;false;;;;;;
                                  -99126;2;0;false;false;63;95;191;;;
                                  -99128;1;0;false;false;;;;;;
                                  -99129;3;0;false;false;63;95;191;;;
                                  -99132;1;0;false;false;;;;;;
                                  -99133;5;0;false;false;63;95;191;;;
                                  -99138;1;0;false;false;;;;;;
                                  -99139;5;0;false;false;63;95;191;;;
                                  -99144;1;0;false;false;;;;;;
                                  -99145;7;0;false;false;63;95;191;;;
                                  -99152;1;0;false;false;;;;;;
                                  -99153;5;0;false;false;63;95;191;;;
                                  -99158;3;0;false;false;;;;;;
                                  -99161;2;0;false;false;63;95;191;;;
                                  -99163;2;0;false;false;;;;;;
                                  -99165;4;1;false;false;127;0;85;;;
                                  -99169;1;0;false;false;;;;;;
                                  -99170;13;0;false;false;0;0;0;;;
                                  -99183;1;0;false;false;;;;;;
                                  -99184;1;0;false;false;0;0;0;;;
                                  -99185;3;0;false;false;;;;;;
                                  -99188;3;1;false;false;127;0;85;;;
                                  -99191;1;0;false;false;;;;;;
                                  -99192;14;0;false;false;0;0;0;;;
                                  -99206;1;0;false;false;;;;;;
                                  -99207;1;0;false;false;0;0;0;;;
                                  -99208;1;0;false;false;;;;;;
                                  -99209;34;0;false;false;0;0;0;;;
                                  -99243;6;0;false;false;;;;;;
                                  -99249;2;1;false;false;127;0;85;;;
                                  -99251;1;0;false;false;;;;;;
                                  -99252;12;0;false;false;0;0;0;;;
                                  -99264;1;0;false;false;;;;;;
                                  -99265;1;0;false;false;0;0;0;;;
                                  -99266;1;0;false;false;;;;;;
                                  -99267;15;0;false;false;0;0;0;;;
                                  -99282;1;0;false;false;;;;;;
                                  -99283;1;0;false;false;0;0;0;;;
                                  -99284;4;0;false;false;;;;;;
                                  -99288;11;0;false;false;0;0;0;;;
                                  -99299;1;0;false;false;;;;;;
                                  -99300;1;0;false;false;0;0;0;;;
                                  -99301;1;0;false;false;;;;;;
                                  -99302;15;0;false;false;0;0;0;;;
                                  -99317;4;0;false;false;;;;;;
                                  -99321;66;0;false;false;63;127;95;;;
                                  -99387;2;0;false;false;;;;;;
                                  -99389;69;0;false;false;63;127;95;;;
                                  -99458;2;0;false;false;;;;;;
                                  -99460;20;0;false;false;0;0;0;;;
                                  -99480;3;0;false;false;;;;;;
                                  -99483;1;0;false;false;0;0;0;;;
                                  -99484;2;0;false;false;;;;;;
                                  -99486;1;0;false;false;0;0;0;;;
                                  -99487;2;0;false;false;;;;;;
                                  -99489;3;0;false;false;63;95;191;;;
                                  -99492;3;0;false;false;;;;;;
                                  -99495;1;0;false;false;63;95;191;;;
                                  -99496;1;0;false;false;;;;;;
                                  -99497;7;0;false;false;63;95;191;;;
                                  -99504;1;0;false;false;;;;;;
                                  -99505;3;0;false;false;63;95;191;;;
                                  -99508;1;0;false;false;;;;;;
                                  -99509;4;0;false;false;63;95;191;;;
                                  -99513;1;0;false;false;;;;;;
                                  -99514;2;0;false;false;63;95;191;;;
                                  -99516;1;0;false;false;;;;;;
                                  -99517;2;0;false;false;63;95;191;;;
                                  -99519;1;0;false;false;;;;;;
                                  -99520;4;0;false;false;63;95;191;;;
                                  -99524;1;0;false;false;;;;;;
                                  -99525;3;0;false;false;63;95;191;;;
                                  -99528;1;0;false;false;;;;;;
                                  -99529;5;0;false;false;63;95;191;;;
                                  -99534;1;0;false;false;;;;;;
                                  -99535;4;0;false;false;63;95;191;;;
                                  -99539;1;0;false;false;;;;;;
                                  -99540;10;0;false;false;63;95;191;;;
                                  -99550;1;0;false;false;;;;;;
                                  -99551;2;0;false;false;63;95;191;;;
                                  -99553;1;0;false;false;;;;;;
                                  -99554;6;0;false;false;63;95;191;;;
                                  -99560;3;0;false;false;;;;;;
                                  -99563;1;0;false;false;63;95;191;;;
                                  -99564;1;0;false;false;;;;;;
                                  -99565;2;0;false;false;63;95;191;;;
                                  -99567;1;0;false;false;;;;;;
                                  -99568;3;0;false;false;63;95;191;;;
                                  -99571;1;0;false;false;;;;;;
                                  -99572;7;0;false;false;63;95;191;;;
                                  -99579;1;0;false;false;;;;;;
                                  -99580;4;0;false;false;63;95;191;;;
                                  -99584;1;0;false;false;;;;;;
                                  -99585;7;0;false;false;63;95;191;;;
                                  -99592;1;0;false;false;;;;;;
                                  -99593;3;0;false;false;63;95;191;;;
                                  -99596;1;0;false;false;;;;;;
                                  -99597;5;0;false;false;63;95;191;;;
                                  -99602;1;0;false;false;;;;;;
                                  -99603;7;0;false;false;63;95;191;;;
                                  -99610;1;0;false;false;;;;;;
                                  -99611;4;0;false;false;63;95;191;;;
                                  -99615;1;0;false;false;;;;;;
                                  -99616;5;0;false;false;63;95;191;;;
                                  -99621;3;0;false;false;;;;;;
                                  -99624;1;0;false;false;63;95;191;;;
                                  -99625;1;0;false;false;;;;;;
                                  -99626;3;0;false;false;63;95;191;;;
                                  -99629;1;0;false;false;;;;;;
                                  -99630;5;0;false;false;63;95;191;;;
                                  -99635;1;0;false;false;;;;;;
                                  -99636;2;0;false;false;63;95;191;;;
                                  -99638;1;0;false;false;;;;;;
                                  -99639;8;0;false;false;63;95;191;;;
                                  -99647;1;0;false;false;;;;;;
                                  -99648;3;0;false;false;63;95;191;;;
                                  -99651;1;0;false;false;;;;;;
                                  -99652;4;0;false;false;63;95;191;;;
                                  -99656;1;0;false;false;;;;;;
                                  -99657;6;0;false;false;63;95;191;;;
                                  -99663;1;0;false;false;;;;;;
                                  -99664;2;0;false;false;63;95;191;;;
                                  -99666;1;0;false;false;;;;;;
                                  -99667;5;0;false;false;63;95;191;;;
                                  -99672;1;0;false;false;;;;;;
                                  -99673;2;0;false;false;63;95;191;;;
                                  -99675;1;0;false;false;;;;;;
                                  -99676;4;0;false;false;63;95;191;;;
                                  -99680;1;0;false;false;;;;;;
                                  -99681;3;0;false;false;63;95;191;;;
                                  -99684;1;0;false;false;;;;;;
                                  -99685;8;0;false;false;63;95;191;;;
                                  -99693;4;0;false;false;;;;;;
                                  -99697;1;0;false;false;63;95;191;;;
                                  -99698;1;0;false;false;;;;;;
                                  -99699;8;0;false;false;63;95;191;;;
                                  -99707;1;0;false;false;;;;;;
                                  -99708;2;0;false;false;63;95;191;;;
                                  -99710;1;0;false;false;;;;;;
                                  -99711;3;0;false;false;63;95;191;;;
                                  -99714;1;0;false;false;;;;;;
                                  -99715;3;0;false;false;63;95;191;;;
                                  -99718;1;0;false;false;;;;;;
                                  -99719;4;0;false;false;63;95;191;;;
                                  -99723;1;0;false;false;;;;;;
                                  -99724;7;0;false;false;63;95;191;;;
                                  -99731;1;0;false;false;;;;;;
                                  -99732;3;0;false;false;63;95;191;;;
                                  -99735;1;0;false;false;;;;;;
                                  -99736;5;0;false;false;63;95;191;;;
                                  -99741;1;0;false;false;;;;;;
                                  -99742;3;0;false;false;63;95;191;;;
                                  -99745;1;0;false;false;;;;;;
                                  -99746;9;0;false;false;63;95;191;;;
                                  -99755;1;0;false;false;;;;;;
                                  -99756;2;0;false;false;63;95;191;;;
                                  -99758;1;0;false;false;;;;;;
                                  -99759;3;0;false;false;63;95;191;;;
                                  -99762;1;0;false;false;;;;;;
                                  -99763;9;0;false;false;63;95;191;;;
                                  -99772;4;0;false;false;;;;;;
                                  -99776;1;0;false;false;63;95;191;;;
                                  -99777;1;0;false;false;;;;;;
                                  -99778;2;0;false;false;63;95;191;;;
                                  -99780;1;0;false;false;;;;;;
                                  -99781;3;0;false;false;63;95;191;;;
                                  -99784;1;0;false;false;;;;;;
                                  -99785;4;0;false;false;63;95;191;;;
                                  -99789;1;0;false;false;;;;;;
                                  -99790;5;0;false;false;63;95;191;;;
                                  -99795;1;0;false;false;;;;;;
                                  -99796;1;0;false;false;63;95;191;;;
                                  -99797;1;0;false;false;;;;;;
                                  -99798;4;0;false;false;63;95;191;;;
                                  -99802;1;0;false;false;;;;;;
                                  -99803;4;0;false;false;63;95;191;;;
                                  -99807;1;0;false;false;;;;;;
                                  -99808;6;0;false;false;63;95;191;;;
                                  -99814;1;0;false;false;;;;;;
                                  -99815;2;0;false;false;63;95;191;;;
                                  -99817;1;0;false;false;;;;;;
                                  -99818;3;0;false;false;63;95;191;;;
                                  -99821;1;0;false;false;;;;;;
                                  -99822;9;0;false;false;63;95;191;;;
                                  -99831;1;0;false;false;;;;;;
                                  -99832;2;0;false;false;63;95;191;;;
                                  -99834;1;0;false;false;;;;;;
                                  -99835;4;0;false;false;63;95;191;;;
                                  -99839;1;0;false;false;;;;;;
                                  -99840;4;0;false;false;63;95;191;;;
                                  -99844;1;0;false;false;;;;;;
                                  -99845;3;0;false;false;63;95;191;;;
                                  -99848;3;0;false;false;;;;;;
                                  -99851;1;0;false;false;63;95;191;;;
                                  -99852;1;0;false;false;;;;;;
                                  -99853;5;0;false;false;63;95;191;;;
                                  -99858;1;0;false;false;;;;;;
                                  -99859;2;0;false;false;63;95;191;;;
                                  -99861;1;0;false;false;;;;;;
                                  -99862;5;0;false;false;63;95;191;;;
                                  -99867;1;0;false;false;;;;;;
                                  -99868;2;0;false;false;63;95;191;;;
                                  -99870;1;0;false;false;;;;;;
                                  -99871;5;0;false;false;63;95;191;;;
                                  -99876;1;0;false;false;;;;;;
                                  -99877;2;0;false;false;63;95;191;;;
                                  -99879;1;0;false;false;;;;;;
                                  -99880;3;0;false;false;63;95;191;;;
                                  -99883;1;0;false;false;;;;;;
                                  -99884;5;0;false;false;63;95;191;;;
                                  -99889;1;0;false;false;;;;;;
                                  -99890;10;0;false;false;63;95;191;;;
                                  -99900;3;0;false;false;;;;;;
                                  -99903;2;0;false;false;63;95;191;;;
                                  -99905;2;0;false;false;;;;;;
                                  -99907;4;1;false;false;127;0;85;;;
                                  -99911;1;0;false;false;;;;;;
                                  -99912;9;0;false;false;0;0;0;;;
                                  -99921;7;1;false;false;127;0;85;;;
                                  -99928;1;0;false;false;;;;;;
                                  -99929;7;0;false;false;0;0;0;;;
                                  -99936;1;0;false;false;;;;;;
                                  -99937;3;1;false;false;127;0;85;;;
                                  -99940;1;0;false;false;;;;;;
                                  -99941;6;0;false;false;0;0;0;;;
                                  -99947;1;0;false;false;;;;;;
                                  -99948;1;0;false;false;0;0;0;;;
                                  -99949;3;0;false;false;;;;;;
                                  -99952;3;1;false;false;127;0;85;;;
                                  -99955;1;0;false;false;;;;;;
                                  -99956;10;0;false;false;0;0;0;;;
                                  -99966;1;0;false;false;;;;;;
                                  -99967;1;0;false;false;0;0;0;;;
                                  -99968;1;0;false;false;;;;;;
                                  -99969;8;0;false;false;0;0;0;;;
                                  -99977;3;0;false;false;;;;;;
                                  -99980;3;1;false;false;127;0;85;;;
                                  -99983;1;0;false;false;;;;;;
                                  -99984;16;0;false;false;0;0;0;;;
                                  -100000;1;0;false;false;;;;;;
                                  -100001;1;0;false;false;0;0;0;;;
                                  -100002;1;0;false;false;;;;;;
                                  -100003;23;0;false;false;0;0;0;;;
                                  -100026;3;0;false;false;;;;;;
                                  -100029;3;1;false;false;127;0;85;;;
                                  -100032;1;0;false;false;;;;;;
                                  -100033;9;0;false;false;0;0;0;;;
                                  -100042;1;0;false;false;;;;;;
                                  -100043;1;0;false;false;0;0;0;;;
                                  -100044;1;0;false;false;;;;;;
                                  -100045;15;0;false;false;0;0;0;;;
                                  -100060;6;0;false;false;;;;;;
                                  -100066;2;1;false;false;127;0;85;;;
                                  -100068;1;0;false;false;;;;;;
                                  -100069;10;0;false;false;0;0;0;;;
                                  -100079;1;0;false;false;;;;;;
                                  -100080;1;0;false;false;0;0;0;;;
                                  -100081;1;0;false;false;;;;;;
                                  -100082;2;0;false;false;0;0;0;;;
                                  -100084;1;0;false;false;;;;;;
                                  -100085;1;0;false;false;0;0;0;;;
                                  -100086;5;0;false;false;;;;;;
                                  -100091;3;1;false;false;127;0;85;;;
                                  -100094;1;0;false;false;;;;;;
                                  -100095;11;0;false;false;0;0;0;;;
                                  -100106;1;0;false;false;;;;;;
                                  -100107;1;0;false;false;0;0;0;;;
                                  -100108;1;0;false;false;;;;;;
                                  -100109;11;0;false;false;0;0;0;;;
                                  -100120;1;0;false;false;;;;;;
                                  -100121;19;0;false;false;0;0;0;;;
                                  -100140;1;0;false;false;;;;;;
                                  -100141;8;0;false;false;0;0;0;;;
                                  -100149;4;0;false;false;;;;;;
                                  -100153;3;1;false;false;127;0;85;;;
                                  -100156;1;0;false;false;;;;;;
                                  -100157;13;0;false;false;0;0;0;;;
                                  -100170;8;0;false;false;;;;;;
                                  -100178;9;0;false;false;0;0;0;;;
                                  -100187;1;0;false;false;;;;;;
                                  -100188;2;0;false;false;0;0;0;;;
                                  -100190;1;0;false;false;;;;;;
                                  -100191;12;0;false;false;0;0;0;;;
                                  -100203;4;0;false;false;;;;;;
                                  -100207;11;0;false;false;0;0;0;;;
                                  -100218;1;0;false;false;;;;;;
                                  -100219;1;0;false;false;0;0;0;;;
                                  -100220;1;0;false;false;;;;;;
                                  -100221;33;0;false;false;0;0;0;;;
                                  -100254;1;0;false;false;;;;;;
                                  -100255;11;0;false;false;0;0;0;;;
                                  -100266;4;0;false;false;;;;;;
                                  -100270;2;1;false;false;127;0;85;;;
                                  -100272;1;0;false;false;;;;;;
                                  -100273;8;0;false;false;0;0;0;;;
                                  -100281;1;0;false;false;;;;;;
                                  -100282;1;0;false;false;0;0;0;;;
                                  -100283;5;0;false;false;;;;;;
                                  -100288;32;0;false;false;0;0;0;;;
                                  -100320;4;0;false;false;;;;;;
                                  -100324;1;0;false;false;0;0;0;;;
                                  -100325;4;0;false;false;;;;;;
                                  -100329;37;0;false;false;63;127;95;;;
                                  -100366;2;0;false;false;;;;;;
                                  -100368;12;0;false;false;0;0;0;;;
                                  -100380;1;0;false;false;;;;;;
                                  -100381;1;0;false;false;0;0;0;;;
                                  -100382;1;0;false;false;;;;;;
                                  -100383;11;0;false;false;0;0;0;;;
                                  -100394;1;0;false;false;;;;;;
                                  -100395;20;0;false;false;0;0;0;;;
                                  -100415;1;0;false;false;;;;;;
                                  -100416;1;0;false;false;0;0;0;;;
                                  -100417;1;0;false;false;;;;;;
                                  -100418;11;0;false;false;0;0;0;;;
                                  -100429;1;0;false;false;;;;;;
                                  -100430;1;0;false;false;0;0;0;;;
                                  -100431;1;0;false;false;;;;;;
                                  -100432;24;0;false;false;0;0;0;;;
                                  -100456;4;0;false;false;;;;;;
                                  -100460;2;1;false;false;127;0;85;;;
                                  -100462;1;0;false;false;;;;;;
                                  -100463;13;0;false;false;0;0;0;;;
                                  -100476;1;0;false;false;;;;;;
                                  -100477;1;0;false;false;0;0;0;;;
                                  -100478;1;0;false;false;;;;;;
                                  -100479;21;0;false;false;0;0;0;;;
                                  -100500;1;0;false;false;;;;;;
                                  -100501;1;0;false;false;0;0;0;;;
                                  -100502;5;0;false;false;;;;;;
                                  -100507;37;0;false;false;0;0;0;;;
                                  -100544;1;0;false;false;;;;;;
                                  -100545;4;1;false;false;127;0;85;;;
                                  -100549;2;0;false;false;0;0;0;;;
                                  -100551;4;0;false;false;;;;;;
                                  -100555;1;0;false;false;0;0;0;;;
                                  -100556;3;0;false;false;;;;;;
                                  -100559;1;0;false;false;0;0;0;;;
                                  -100560;3;0;false;false;;;;;;
                                  -100563;66;0;false;false;63;127;95;;;
                                  -100629;1;0;false;false;;;;;;
                                  -100630;69;0;false;false;63;127;95;;;
                                  -100699;1;0;false;false;;;;;;
                                  -100700;21;0;false;false;0;0;0;;;
                                  -100721;3;0;false;false;;;;;;
                                  -100724;51;0;false;false;63;127;95;;;
                                  -100775;1;0;false;false;;;;;;
                                  -100776;3;1;false;false;127;0;85;;;
                                  -100779;1;0;false;false;;;;;;
                                  -100780;13;0;false;false;0;0;0;;;
                                  -100793;1;0;false;false;;;;;;
                                  -100794;1;0;false;false;0;0;0;;;
                                  -100795;1;0;false;false;;;;;;
                                  -100796;16;0;false;false;0;0;0;;;
                                  -100812;1;0;false;false;;;;;;
                                  -100813;1;0;false;false;0;0;0;;;
                                  -100814;1;0;false;false;;;;;;
                                  -100815;23;0;false;false;0;0;0;;;
                                  -100838;3;0;false;false;;;;;;
                                  -100841;7;0;false;false;0;0;0;;;
                                  -100848;1;0;false;false;;;;;;
                                  -100849;1;0;false;false;0;0;0;;;
                                  -100850;1;0;false;false;;;;;;
                                  -100851;10;0;false;false;0;0;0;;;
                                  -100861;1;0;false;false;;;;;;
                                  -100862;1;0;false;false;0;0;0;;;
                                  -100863;1;0;false;false;;;;;;
                                  -100864;14;0;false;false;0;0;0;;;
                                  -100878;2;0;false;false;;;;;;
                                  -100880;1;0;false;false;0;0;0;;;
                                  -100881;2;0;false;false;;;;;;
                                  -100883;3;0;false;false;63;95;191;;;
                                  -100886;3;0;false;false;;;;;;
                                  -100889;1;0;false;false;63;95;191;;;
                                  -100890;1;0;false;false;;;;;;
                                  -100891;7;0;false;false;63;95;191;;;
                                  -100898;1;0;false;false;;;;;;
                                  -100899;3;0;false;false;63;95;191;;;
                                  -100902;1;0;false;false;;;;;;
                                  -100903;9;0;false;false;63;95;191;;;
                                  -100912;1;0;false;false;;;;;;
                                  -100913;2;0;false;false;63;95;191;;;
                                  -100915;1;0;false;false;;;;;;
                                  -100916;6;0;false;false;63;95;191;;;
                                  -100922;1;0;false;false;;;;;;
                                  -100923;2;0;false;false;63;95;191;;;
                                  -100925;1;0;false;false;;;;;;
                                  -100926;3;0;false;false;63;95;191;;;
                                  -100929;1;0;false;false;;;;;;
                                  -100930;7;0;false;false;63;95;191;;;
                                  -100937;1;0;false;false;;;;;;
                                  -100938;5;0;false;false;63;95;191;;;
                                  -100943;1;0;false;false;;;;;;
                                  -100944;9;0;false;false;63;95;191;;;
                                  -100953;3;0;false;false;;;;;;
                                  -100956;2;0;false;false;63;95;191;;;
                                  -100958;2;0;false;false;;;;;;
                                  -100960;4;1;false;false;127;0;85;;;
                                  -100964;1;0;false;false;;;;;;
                                  -100965;12;0;false;false;0;0;0;;;
                                  -100977;3;1;false;false;127;0;85;;;
                                  -100980;1;0;false;false;;;;;;
                                  -100981;10;0;false;false;0;0;0;;;
                                  -100991;1;0;false;false;;;;;;
                                  -100992;1;0;false;false;0;0;0;;;
                                  -100993;3;0;false;false;;;;;;
                                  -100996;3;1;false;false;127;0;85;;;
                                  -100999;1;0;false;false;;;;;;
                                  -101000;11;0;false;false;0;0;0;;;
                                  -101011;1;0;false;false;;;;;;
                                  -101012;1;0;false;false;0;0;0;;;
                                  -101013;1;0;false;false;;;;;;
                                  -101014;3;0;false;false;0;0;0;;;
                                  -101017;3;0;false;false;;;;;;
                                  -101020;3;1;false;false;127;0;85;;;
                                  -101023;1;0;false;false;;;;;;
                                  -101024;9;0;false;false;0;0;0;;;
                                  -101033;1;0;false;false;;;;;;
                                  -101034;1;0;false;false;0;0;0;;;
                                  -101035;1;0;false;false;;;;;;
                                  -101036;3;0;false;false;0;0;0;;;
                                  -101039;6;0;false;false;;;;;;
                                  -101045;2;1;false;false;127;0;85;;;
                                  -101047;1;0;false;false;;;;;;
                                  -101048;16;0;false;false;0;0;0;;;
                                  -101064;1;0;false;false;;;;;;
                                  -101065;2;0;false;false;0;0;0;;;
                                  -101067;1;0;false;false;;;;;;
                                  -101068;3;0;false;false;0;0;0;;;
                                  -101071;1;0;false;false;;;;;;
                                  -101072;1;0;false;false;0;0;0;;;
                                  -101073;4;0;false;false;;;;;;
                                  -101077;15;0;false;false;0;0;0;;;
                                  -101092;1;0;false;false;;;;;;
                                  -101093;1;0;false;false;0;0;0;;;
                                  -101094;1;0;false;false;;;;;;
                                  -101095;12;0;false;false;0;0;0;;;
                                  -101107;3;0;false;false;;;;;;
                                  -101110;1;0;false;false;0;0;0;;;
                                  -101111;4;0;false;false;;;;;;
                                  -101115;2;1;false;false;127;0;85;;;
                                  -101117;1;0;false;false;;;;;;
                                  -101118;10;0;false;false;0;0;0;;;
                                  -101128;1;0;false;false;;;;;;
                                  -101129;2;0;false;false;0;0;0;;;
                                  -101131;1;0;false;false;;;;;;
                                  -101132;19;0;false;false;0;0;0;;;
                                  -101151;1;0;false;false;;;;;;
                                  -101152;1;0;false;false;0;0;0;;;
                                  -101153;4;0;false;false;;;;;;
                                  -101157;2;1;false;false;127;0;85;;;
                                  -101159;1;0;false;false;;;;;;
                                  -101160;12;0;false;false;0;0;0;;;
                                  -101172;1;0;false;false;;;;;;
                                  -101173;1;0;false;false;0;0;0;;;
                                  -101174;1;0;false;false;;;;;;
                                  -101175;12;0;false;false;0;0;0;;;
                                  -101187;1;0;false;false;;;;;;
                                  -101188;1;0;false;false;0;0;0;;;
                                  -101189;5;0;false;false;;;;;;
                                  -101194;19;0;false;false;63;127;95;;;
                                  -101213;3;0;false;false;;;;;;
                                  -101216;9;0;false;false;0;0;0;;;
                                  -101225;1;0;false;false;;;;;;
                                  -101226;1;0;false;false;0;0;0;;;
                                  -101227;1;0;false;false;;;;;;
                                  -101228;12;0;false;false;0;0;0;;;
                                  -101240;6;0;false;false;;;;;;
                                  -101246;11;0;false;false;0;0;0;;;
                                  -101257;1;0;false;false;;;;;;
                                  -101258;1;0;false;false;0;0;0;;;
                                  -101259;1;0;false;false;;;;;;
                                  -101260;11;0;false;false;0;0;0;;;
                                  -101271;1;0;false;false;;;;;;
                                  -101272;1;0;false;false;0;0;0;;;
                                  -101273;1;0;false;false;;;;;;
                                  -101274;12;0;false;false;0;0;0;;;
                                  -101286;7;0;false;false;;;;;;
                                  -101293;46;0;false;false;63;127;95;;;
                                  -101339;3;0;false;false;;;;;;
                                  -101342;2;1;false;false;127;0;85;;;
                                  -101344;1;0;false;false;;;;;;
                                  -101345;12;0;false;false;0;0;0;;;
                                  -101357;1;0;false;false;;;;;;
                                  -101358;2;0;false;false;0;0;0;;;
                                  -101360;1;0;false;false;;;;;;
                                  -101361;16;0;false;false;0;0;0;;;
                                  -101377;1;0;false;false;;;;;;
                                  -101378;1;0;false;false;0;0;0;;;
                                  -101379;6;0;false;false;;;;;;
                                  -101385;9;0;false;false;0;0;0;;;
                                  -101394;1;0;false;false;;;;;;
                                  -101395;1;0;false;false;0;0;0;;;
                                  -101396;1;0;false;false;;;;;;
                                  -101397;12;0;false;false;0;0;0;;;
                                  -101409;6;0;false;false;;;;;;
                                  -101415;11;0;false;false;0;0;0;;;
                                  -101426;1;0;false;false;;;;;;
                                  -101427;1;0;false;false;0;0;0;;;
                                  -101428;1;0;false;false;;;;;;
                                  -101429;16;0;false;false;0;0;0;;;
                                  -101445;5;0;false;false;;;;;;
                                  -101450;1;0;false;false;0;0;0;;;
                                  -101451;4;0;false;false;;;;;;
                                  -101455;1;0;false;false;0;0;0;;;
                                  -101456;4;0;false;false;;;;;;
                                  -101460;4;1;false;false;127;0;85;;;
                                  -101464;1;0;false;false;;;;;;
                                  -101465;59;0;false;false;63;127;95;;;
                                  -101524;2;0;false;false;;;;;;
                                  -101526;2;1;false;false;127;0;85;;;
                                  -101528;1;0;false;false;;;;;;
                                  -101529;16;0;false;false;0;0;0;;;
                                  -101545;1;0;false;false;;;;;;
                                  -101546;2;0;false;false;0;0;0;;;
                                  -101548;1;0;false;false;;;;;;
                                  -101549;11;0;false;false;0;0;0;;;
                                  -101560;1;0;false;false;;;;;;
                                  -101561;2;0;false;false;0;0;0;;;
                                  -101563;1;0;false;false;;;;;;
                                  -101564;11;0;false;false;0;0;0;;;
                                  -101575;1;0;false;false;;;;;;
                                  -101576;1;0;false;false;0;0;0;;;
                                  -101577;1;0;false;false;;;;;;
                                  -101578;12;0;false;false;0;0;0;;;
                                  -101590;1;0;false;false;;;;;;
                                  -101591;1;0;false;false;0;0;0;;;
                                  -101592;5;0;false;false;;;;;;
                                  -101597;68;0;false;false;63;127;95;;;
                                  -101665;3;0;false;false;;;;;;
                                  -101668;24;0;false;false;63;127;95;;;
                                  -101692;3;0;false;false;;;;;;
                                  -101695;9;0;false;false;0;0;0;;;
                                  -101704;1;0;false;false;;;;;;
                                  -101705;1;0;false;false;0;0;0;;;
                                  -101706;1;0;false;false;;;;;;
                                  -101707;12;0;false;false;0;0;0;;;
                                  -101719;5;0;false;false;;;;;;
                                  -101724;11;0;false;false;0;0;0;;;
                                  -101735;1;0;false;false;;;;;;
                                  -101736;1;0;false;false;0;0;0;;;
                                  -101737;1;0;false;false;;;;;;
                                  -101738;11;0;false;false;0;0;0;;;
                                  -101749;1;0;false;false;;;;;;
                                  -101750;1;0;false;false;0;0;0;;;
                                  -101751;1;0;false;false;;;;;;
                                  -101752;12;0;false;false;0;0;0;;;
                                  -101764;6;0;false;false;;;;;;
                                  -101770;1;0;false;false;0;0;0;;;
                                  -101771;3;0;false;false;;;;;;
                                  -101774;1;0;false;false;0;0;0;;;
                                  -101775;3;0;false;false;;;;;;
                                  -101778;4;1;false;false;127;0;85;;;
                                  -101782;1;0;false;false;;;;;;
                                  -101783;1;0;false;false;0;0;0;;;
                                  -101784;4;0;false;false;;;;;;
                                  -101788;2;1;false;false;127;0;85;;;
                                  -101790;1;0;false;false;;;;;;
                                  -101791;12;0;false;false;0;0;0;;;
                                  -101803;1;0;false;false;;;;;;
                                  -101804;1;0;false;false;0;0;0;;;
                                  -101805;1;0;false;false;;;;;;
                                  -101806;12;0;false;false;0;0;0;;;
                                  -101818;1;0;false;false;;;;;;
                                  -101819;1;0;false;false;0;0;0;;;
                                  -101820;5;0;false;false;;;;;;
                                  -101825;19;0;false;false;63;127;95;;;
                                  -101844;3;0;false;false;;;;;;
                                  -101847;11;0;false;false;0;0;0;;;
                                  -101858;1;0;false;false;;;;;;
                                  -101859;1;0;false;false;0;0;0;;;
                                  -101860;1;0;false;false;;;;;;
                                  -101861;12;0;false;false;0;0;0;;;
                                  -101873;5;0;false;false;;;;;;
                                  -101878;9;0;false;false;0;0;0;;;
                                  -101887;1;0;false;false;;;;;;
                                  -101888;1;0;false;false;0;0;0;;;
                                  -101889;1;0;false;false;;;;;;
                                  -101890;11;0;false;false;0;0;0;;;
                                  -101901;1;0;false;false;;;;;;
                                  -101902;1;0;false;false;0;0;0;;;
                                  -101903;1;0;false;false;;;;;;
                                  -101904;12;0;false;false;0;0;0;;;
                                  -101916;5;0;false;false;;;;;;
                                  -101921;46;0;false;false;63;127;95;;;
                                  -101967;3;0;false;false;;;;;;
                                  -101970;2;1;false;false;127;0;85;;;
                                  -101972;1;0;false;false;;;;;;
                                  -101973;12;0;false;false;0;0;0;;;
                                  -101985;1;0;false;false;;;;;;
                                  -101986;2;0;false;false;0;0;0;;;
                                  -101988;1;0;false;false;;;;;;
                                  -101989;16;0;false;false;0;0;0;;;
                                  -102005;1;0;false;false;;;;;;
                                  -102006;1;0;false;false;0;0;0;;;
                                  -102007;6;0;false;false;;;;;;
                                  -102013;11;0;false;false;0;0;0;;;
                                  -102024;1;0;false;false;;;;;;
                                  -102025;1;0;false;false;0;0;0;;;
                                  -102026;1;0;false;false;;;;;;
                                  -102027;12;0;false;false;0;0;0;;;
                                  -102039;10;0;false;false;;;;;;
                                  -102049;11;0;false;false;0;0;0;;;
                                  -102060;1;0;false;false;;;;;;
                                  -102061;1;0;false;false;0;0;0;;;
                                  -102062;1;0;false;false;;;;;;
                                  -102063;16;0;false;false;0;0;0;;;
                                  -102079;5;0;false;false;;;;;;
                                  -102084;1;0;false;false;0;0;0;;;
                                  -102085;4;0;false;false;;;;;;
                                  -102089;1;0;false;false;0;0;0;;;
                                  -102090;4;0;false;false;;;;;;
                                  -102094;4;1;false;false;127;0;85;;;
                                  -102098;1;0;false;false;;;;;;
                                  -102099;59;0;false;false;63;127;95;;;
                                  -102158;2;0;false;false;;;;;;
                                  -102160;2;1;false;false;127;0;85;;;
                                  -102162;1;0;false;false;;;;;;
                                  -102163;16;0;false;false;0;0;0;;;
                                  -102179;1;0;false;false;;;;;;
                                  -102180;2;0;false;false;0;0;0;;;
                                  -102182;1;0;false;false;;;;;;
                                  -102183;11;0;false;false;0;0;0;;;
                                  -102194;1;0;false;false;;;;;;
                                  -102195;2;0;false;false;0;0;0;;;
                                  -102197;1;0;false;false;;;;;;
                                  -102198;11;0;false;false;0;0;0;;;
                                  -102209;1;0;false;false;;;;;;
                                  -102210;1;0;false;false;0;0;0;;;
                                  -102211;1;0;false;false;;;;;;
                                  -102212;12;0;false;false;0;0;0;;;
                                  -102224;1;0;false;false;;;;;;
                                  -102225;1;0;false;false;0;0;0;;;
                                  -102226;5;0;false;false;;;;;;
                                  -102231;69;0;false;false;63;127;95;;;
                                  -102300;3;0;false;false;;;;;;
                                  -102303;24;0;false;false;63;127;95;;;
                                  -102327;3;0;false;false;;;;;;
                                  -102330;11;0;false;false;0;0;0;;;
                                  -102341;1;0;false;false;;;;;;
                                  -102342;1;0;false;false;0;0;0;;;
                                  -102343;1;0;false;false;;;;;;
                                  -102344;12;0;false;false;0;0;0;;;
                                  -102356;5;0;false;false;;;;;;
                                  -102361;9;0;false;false;0;0;0;;;
                                  -102370;1;0;false;false;;;;;;
                                  -102371;1;0;false;false;0;0;0;;;
                                  -102372;1;0;false;false;;;;;;
                                  -102373;11;0;false;false;0;0;0;;;
                                  -102384;1;0;false;false;;;;;;
                                  -102385;1;0;false;false;0;0;0;;;
                                  -102386;1;0;false;false;;;;;;
                                  -102387;12;0;false;false;0;0;0;;;
                                  -102399;6;0;false;false;;;;;;
                                  -102405;1;0;false;false;0;0;0;;;
                                  -102406;3;0;false;false;;;;;;
                                  -102409;1;0;false;false;0;0;0;;;
                                  -102410;3;0;false;false;;;;;;
                                  -102413;2;1;false;false;127;0;85;;;
                                  -102415;1;0;false;false;;;;;;
                                  -102416;12;0;false;false;0;0;0;;;
                                  -102428;1;0;false;false;;;;;;
                                  -102429;2;0;false;false;0;0;0;;;
                                  -102431;1;0;false;false;;;;;;
                                  -102432;2;0;false;false;0;0;0;;;
                                  -102434;1;0;false;false;;;;;;
                                  -102435;2;0;false;false;0;0;0;;;
                                  -102437;1;0;false;false;;;;;;
                                  -102438;9;0;false;false;0;0;0;;;
                                  -102447;1;0;false;false;;;;;;
                                  -102448;2;0;false;false;0;0;0;;;
                                  -102450;1;0;false;false;;;;;;
                                  -102451;3;0;false;false;0;0;0;;;
                                  -102454;1;0;false;false;;;;;;
                                  -102455;1;0;false;false;0;0;0;;;
                                  -102456;4;0;false;false;;;;;;
                                  -102460;32;0;false;false;0;0;0;;;
                                  -102492;1;0;false;false;;;;;;
                                  -102493;9;0;false;false;0;0;0;;;
                                  -102502;1;0;false;false;;;;;;
                                  -102503;1;0;false;false;0;0;0;;;
                                  -102504;1;0;false;false;;;;;;
                                  -102505;12;0;false;false;0;0;0;;;
                                  -102517;1;0;false;false;;;;;;
                                  -102518;4;1;false;false;127;0;85;;;
                                  -102522;2;0;false;false;0;0;0;;;
                                  -102524;4;0;false;false;;;;;;
                                  -102528;21;0;false;false;0;0;0;;;
                                  -102549;3;0;false;false;;;;;;
                                  -102552;1;0;false;false;0;0;0;;;
                                  -102553;2;0;false;false;;;;;;
                                  -102555;1;0;false;false;0;0;0;;;
                                  -102556;2;0;false;false;;;;;;
                                  -102558;3;0;false;false;63;95;191;;;
                                  -102561;3;0;false;false;;;;;;
                                  -102564;1;0;false;false;63;95;191;;;
                                  -102565;1;0;false;false;;;;;;
                                  -102566;5;0;false;false;63;95;191;;;
                                  -102571;1;0;false;false;;;;;;
                                  -102572;3;0;false;false;63;95;191;;;
                                  -102575;1;0;false;false;;;;;;
                                  -102576;5;0;false;false;63;95;191;;;
                                  -102581;1;0;false;false;;;;;;
                                  -102582;2;0;false;false;63;95;191;;;
                                  -102584;1;0;false;false;;;;;;
                                  -102585;3;0;false;false;63;95;191;;;
                                  -102588;1;0;false;false;;;;;;
                                  -102589;4;0;false;false;63;95;191;;;
                                  -102593;1;0;false;false;;;;;;
                                  -102594;9;0;false;false;63;95;191;;;
                                  -102603;1;0;false;false;;;;;;
                                  -102604;2;0;false;false;63;95;191;;;
                                  -102606;1;0;false;false;;;;;;
                                  -102607;2;0;false;false;63;95;191;;;
                                  -102609;1;0;false;false;;;;;;
                                  -102610;3;0;false;false;63;95;191;;;
                                  -102613;1;0;false;false;;;;;;
                                  -102614;9;0;false;false;63;95;191;;;
                                  -102623;1;0;false;false;;;;;;
                                  -102624;2;0;false;false;63;95;191;;;
                                  -102626;1;0;false;false;;;;;;
                                  -102627;3;0;false;false;63;95;191;;;
                                  -102630;4;0;false;false;;;;;;
                                  -102634;1;0;false;false;63;95;191;;;
                                  -102635;1;0;false;false;;;;;;
                                  -102636;4;0;false;false;63;95;191;;;
                                  -102640;1;0;false;false;;;;;;
                                  -102641;4;0;false;false;63;95;191;;;
                                  -102645;1;0;false;false;;;;;;
                                  -102646;2;0;false;false;63;95;191;;;
                                  -102648;1;0;false;false;;;;;;
                                  -102649;3;0;false;false;63;95;191;;;
                                  -102652;1;0;false;false;;;;;;
                                  -102653;6;0;false;false;63;95;191;;;
                                  -102659;1;0;false;false;;;;;;
                                  -102660;2;0;false;false;63;95;191;;;
                                  -102662;1;0;false;false;;;;;;
                                  -102663;2;0;false;false;63;95;191;;;
                                  -102665;1;0;false;false;;;;;;
                                  -102666;3;0;false;false;63;95;191;;;
                                  -102669;1;0;false;false;;;;;;
                                  -102670;3;0;false;false;63;95;191;;;
                                  -102673;1;0;false;false;;;;;;
                                  -102674;2;0;false;false;63;95;191;;;
                                  -102676;1;0;false;false;;;;;;
                                  -102677;1;0;false;false;63;95;191;;;
                                  -102678;1;0;false;false;;;;;;
                                  -102679;5;0;false;false;63;95;191;;;
                                  -102684;3;0;false;false;;;;;;
                                  -102687;2;0;false;false;63;95;191;;;
                                  -102689;2;0;false;false;;;;;;
                                  -102691;4;1;false;false;127;0;85;;;
                                  -102695;1;0;false;false;;;;;;
                                  -102696;23;0;false;false;0;0;0;;;
                                  -102719;1;0;false;false;;;;;;
                                  -102720;1;0;false;false;0;0;0;;;
                                  -102721;3;0;false;false;;;;;;
                                  -102724;3;1;false;false;127;0;85;;;
                                  -102727;1;0;false;false;;;;;;
                                  -102728;9;0;false;false;0;0;0;;;
                                  -102737;1;0;false;false;;;;;;
                                  -102738;1;0;false;false;0;0;0;;;
                                  -102739;1;0;false;false;;;;;;
                                  -102740;15;0;false;false;0;0;0;;;
                                  -102755;3;0;false;false;;;;;;
                                  -102758;3;1;false;false;127;0;85;;;
                                  -102761;1;0;false;false;;;;;;
                                  -102762;10;0;false;false;0;0;0;;;
                                  -102772;1;0;false;false;;;;;;
                                  -102773;1;0;false;false;0;0;0;;;
                                  -102774;1;0;false;false;;;;;;
                                  -102775;35;0;false;false;0;0;0;;;
                                  -102810;3;0;false;false;;;;;;
                                  -102813;3;1;false;false;127;0;85;;;
                                  -102816;1;0;false;false;;;;;;
                                  -102817;12;0;false;false;0;0;0;;;
                                  -102829;1;0;false;false;;;;;;
                                  -102830;1;0;false;false;0;0;0;;;
                                  -102831;1;0;false;false;;;;;;
                                  -102832;11;0;false;false;0;0;0;;;
                                  -102843;1;0;false;false;;;;;;
                                  -102844;1;0;false;false;0;0;0;;;
                                  -102845;1;0;false;false;;;;;;
                                  -102846;11;0;false;false;0;0;0;;;
                                  -102857;3;0;false;false;;;;;;
                                  -102860;9;0;false;false;0;0;0;;;
                                  -102869;1;0;false;false;;;;;;
                                  -102870;1;0;false;false;0;0;0;;;
                                  -102871;1;0;false;false;;;;;;
                                  -102872;4;1;false;false;127;0;85;;;
                                  -102876;1;0;false;false;0;0;0;;;
                                  -102877;3;0;false;false;;;;;;
                                  -102880;2;1;false;false;127;0;85;;;
                                  -102882;1;0;false;false;;;;;;
                                  -102883;13;0;false;false;0;0;0;;;
                                  -102896;1;0;false;false;;;;;;
                                  -102897;1;0;false;false;0;0;0;;;
                                  -102898;1;0;false;false;;;;;;
                                  -102899;36;0;false;false;0;0;0;;;
                                  -102935;1;0;false;false;;;;;;
                                  -102936;1;0;false;false;0;0;0;;;
                                  -102937;4;0;false;false;;;;;;
                                  -102941;11;0;false;false;0;0;0;;;
                                  -102952;1;0;false;false;;;;;;
                                  -102953;1;0;false;false;0;0;0;;;
                                  -102954;1;0;false;false;;;;;;
                                  -102955;27;0;false;false;0;0;0;;;
                                  -102982;1;0;false;false;;;;;;
                                  -102983;11;0;false;false;0;0;0;;;
                                  -102994;4;0;false;false;;;;;;
                                  -102998;12;0;false;false;0;0;0;;;
                                  -103010;3;0;false;false;;;;;;
                                  -103013;1;0;false;false;0;0;0;;;
                                  -103014;3;0;false;false;;;;;;
                                  -103017;4;1;false;false;127;0;85;;;
                                  -103021;3;0;false;false;;;;;;
                                  -103024;2;1;false;false;127;0;85;;;
                                  -103026;1;0;false;false;;;;;;
                                  -103027;10;0;false;false;0;0;0;;;
                                  -103037;1;0;false;false;;;;;;
                                  -103038;1;0;false;false;0;0;0;;;
                                  -103039;1;0;false;false;;;;;;
                                  -103040;22;0;false;false;0;0;0;;;
                                  -103062;1;0;false;false;;;;;;
                                  -103063;1;0;false;false;0;0;0;;;
                                  -103064;1;0;false;false;;;;;;
                                  -103065;1;0;false;false;0;0;0;;;
                                  -103066;1;0;false;false;;;;;;
                                  -103067;2;0;false;false;0;0;0;;;
                                  -103069;1;0;false;false;;;;;;
                                  -103070;16;0;false;false;0;0;0;;;
                                  -103086;1;0;false;false;;;;;;
                                  -103087;1;0;false;false;0;0;0;;;
                                  -103088;4;0;false;false;;;;;;
                                  -103092;64;0;false;false;63;127;95;;;
                                  -103156;2;0;false;false;;;;;;
                                  -103158;12;0;false;false;0;0;0;;;
                                  -103170;6;0;false;false;;;;;;
                                  -103176;11;0;false;false;0;0;0;;;
                                  -103187;1;0;false;false;;;;;;
                                  -103188;1;0;false;false;0;0;0;;;
                                  -103189;1;0;false;false;;;;;;
                                  -103190;35;0;false;false;0;0;0;;;
                                  -103225;4;0;false;false;;;;;;
                                  -103229;66;0;false;false;63;127;95;;;
                                  -103295;2;0;false;false;;;;;;
                                  -103297;69;0;false;false;63;127;95;;;
                                  -103366;2;0;false;false;;;;;;
                                  -103368;21;0;false;false;0;0;0;;;
                                  -103389;3;0;false;false;;;;;;
                                  -103392;1;0;false;false;0;0;0;;;
                                  -103393;2;0;false;false;;;;;;
                                  -103395;1;0;false;false;0;0;0;;;
                                  -103396;2;0;false;false;;;;;;
                                  -103398;3;0;false;false;63;95;191;;;
                                  -103401;3;0;false;false;;;;;;
                                  -103404;1;0;false;false;63;95;191;;;
                                  -103405;1;0;false;false;;;;;;
                                  -103406;5;0;false;false;63;95;191;;;
                                  -103411;1;0;false;false;;;;;;
                                  -103412;3;0;false;false;63;95;191;;;
                                  -103415;1;0;false;false;;;;;;
                                  -103416;5;0;false;false;63;95;191;;;
                                  -103421;1;0;false;false;;;;;;
                                  -103422;2;0;false;false;63;95;191;;;
                                  -103424;1;0;false;false;;;;;;
                                  -103425;3;0;false;false;63;95;191;;;
                                  -103428;1;0;false;false;;;;;;
                                  -103429;8;0;false;false;63;95;191;;;
                                  -103437;1;0;false;false;;;;;;
                                  -103438;9;0;false;false;63;95;191;;;
                                  -103447;1;0;false;false;;;;;;
                                  -103448;2;0;false;false;63;95;191;;;
                                  -103450;1;0;false;false;;;;;;
                                  -103451;2;0;false;false;63;95;191;;;
                                  -103453;1;0;false;false;;;;;;
                                  -103454;3;0;false;false;63;95;191;;;
                                  -103457;1;0;false;false;;;;;;
                                  -103458;3;0;false;false;63;95;191;;;
                                  -103461;1;0;false;false;;;;;;
                                  -103462;2;0;false;false;63;95;191;;;
                                  -103464;1;0;false;false;;;;;;
                                  -103465;3;0;false;false;63;95;191;;;
                                  -103468;1;0;false;false;;;;;;
                                  -103469;8;0;false;false;63;95;191;;;
                                  -103477;4;0;false;false;;;;;;
                                  -103481;1;0;false;false;63;95;191;;;
                                  -103482;1;0;false;false;;;;;;
                                  -103483;4;0;false;false;63;95;191;;;
                                  -103487;1;0;false;false;;;;;;
                                  -103488;2;0;false;false;63;95;191;;;
                                  -103490;1;0;false;false;;;;;;
                                  -103491;3;0;false;false;63;95;191;;;
                                  -103494;1;0;false;false;;;;;;
                                  -103495;6;0;false;false;63;95;191;;;
                                  -103501;1;0;false;false;;;;;;
                                  -103502;2;0;false;false;63;95;191;;;
                                  -103504;1;0;false;false;;;;;;
                                  -103505;2;0;false;false;63;95;191;;;
                                  -103507;1;0;false;false;;;;;;
                                  -103508;3;0;false;false;63;95;191;;;
                                  -103511;1;0;false;false;;;;;;
                                  -103512;9;0;false;false;63;95;191;;;
                                  -103521;1;0;false;false;;;;;;
                                  -103522;2;0;false;false;63;95;191;;;
                                  -103524;1;0;false;false;;;;;;
                                  -103525;1;0;false;false;63;95;191;;;
                                  -103526;1;0;false;false;;;;;;
                                  -103527;5;0;false;false;63;95;191;;;
                                  -103532;3;0;false;false;;;;;;
                                  -103535;2;0;false;false;63;95;191;;;
                                  -103537;2;0;false;false;;;;;;
                                  -103539;4;1;false;false;127;0;85;;;
                                  -103543;1;0;false;false;;;;;;
                                  -103544;27;0;false;false;0;0;0;;;
                                  -103571;1;0;false;false;;;;;;
                                  -103572;1;0;false;false;0;0;0;;;
                                  -103573;3;0;false;false;;;;;;
                                  -103576;3;1;false;false;127;0;85;;;
                                  -103579;1;0;false;false;;;;;;
                                  -103580;9;0;false;false;0;0;0;;;
                                  -103589;1;0;false;false;;;;;;
                                  -103590;1;0;false;false;0;0;0;;;
                                  -103591;1;0;false;false;;;;;;
                                  -103592;15;0;false;false;0;0;0;;;
                                  -103607;3;0;false;false;;;;;;
                                  -103610;3;1;false;false;127;0;85;;;
                                  -103613;1;0;false;false;;;;;;
                                  -103614;10;0;false;false;0;0;0;;;
                                  -103624;1;0;false;false;;;;;;
                                  -103625;1;0;false;false;0;0;0;;;
                                  -103626;1;0;false;false;;;;;;
                                  -103627;35;0;false;false;0;0;0;;;
                                  -103662;3;0;false;false;;;;;;
                                  -103665;3;1;false;false;127;0;85;;;
                                  -103668;1;0;false;false;;;;;;
                                  -103669;12;0;false;false;0;0;0;;;
                                  -103681;1;0;false;false;;;;;;
                                  -103682;1;0;false;false;0;0;0;;;
                                  -103683;1;0;false;false;;;;;;
                                  -103684;11;0;false;false;0;0;0;;;
                                  -103695;1;0;false;false;;;;;;
                                  -103696;1;0;false;false;0;0;0;;;
                                  -103697;1;0;false;false;;;;;;
                                  -103698;11;0;false;false;0;0;0;;;
                                  -103709;3;0;false;false;;;;;;
                                  -103712;9;0;false;false;0;0;0;;;
                                  -103721;1;0;false;false;;;;;;
                                  -103722;1;0;false;false;0;0;0;;;
                                  -103723;1;0;false;false;;;;;;
                                  -103724;5;1;false;false;127;0;85;;;
                                  -103729;1;0;false;false;0;0;0;;;
                                  -103730;3;0;false;false;;;;;;
                                  -103733;2;1;false;false;127;0;85;;;
                                  -103735;1;0;false;false;;;;;;
                                  -103736;13;0;false;false;0;0;0;;;
                                  -103749;1;0;false;false;;;;;;
                                  -103750;1;0;false;false;0;0;0;;;
                                  -103751;1;0;false;false;;;;;;
                                  -103752;2;0;false;false;0;0;0;;;
                                  -103754;1;0;false;false;;;;;;
                                  -103755;1;0;false;false;0;0;0;;;
                                  -103756;4;0;false;false;;;;;;
                                  -103760;11;0;false;false;0;0;0;;;
                                  -103771;1;0;false;false;;;;;;
                                  -103772;1;0;false;false;0;0;0;;;
                                  -103773;1;0;false;false;;;;;;
                                  -103774;31;0;false;false;0;0;0;;;
                                  -103805;1;0;false;false;;;;;;
                                  -103806;11;0;false;false;0;0;0;;;
                                  -103817;4;0;false;false;;;;;;
                                  -103821;21;0;false;false;0;0;0;;;
                                  -103842;3;0;false;false;;;;;;
                                  -103845;1;0;false;false;0;0;0;;;
                                  -103846;3;0;false;false;;;;;;
                                  -103849;4;1;false;false;127;0;85;;;
                                  -103853;3;0;false;false;;;;;;
                                  -103856;2;1;false;false;127;0;85;;;
                                  -103858;1;0;false;false;;;;;;
                                  -103859;10;0;false;false;0;0;0;;;
                                  -103869;1;0;false;false;;;;;;
                                  -103870;1;0;false;false;0;0;0;;;
                                  -103871;1;0;false;false;;;;;;
                                  -103872;2;0;false;false;0;0;0;;;
                                  -103874;1;0;false;false;;;;;;
                                  -103875;1;0;false;false;0;0;0;;;
                                  -103876;4;0;false;false;;;;;;
                                  -103880;12;0;false;false;0;0;0;;;
                                  -103892;4;0;false;false;;;;;;
                                  -103896;10;0;false;false;0;0;0;;;
                                  -103906;1;0;false;false;;;;;;
                                  -103907;1;0;false;false;0;0;0;;;
                                  -103908;1;0;false;false;;;;;;
                                  -103909;35;0;false;false;0;0;0;;;
                                  -103944;4;0;false;false;;;;;;
                                  -103948;11;0;false;false;0;0;0;;;
                                  -103959;1;0;false;false;;;;;;
                                  -103960;1;0;false;false;0;0;0;;;
                                  -103961;1;0;false;false;;;;;;
                                  -103962;10;0;false;false;0;0;0;;;
                                  -103972;1;0;false;false;;;;;;
                                  -103973;1;0;false;false;0;0;0;;;
                                  -103974;1;0;false;false;;;;;;
                                  -103975;36;0;false;false;0;0;0;;;
                                  -104011;4;0;false;false;;;;;;
                                  -104015;12;0;false;false;0;0;0;;;
                                  -104027;3;0;false;false;;;;;;
                                  -104030;1;0;false;false;0;0;0;;;
                                  -104031;2;0;false;false;;;;;;
                                  -104033;1;0;false;false;0;0;0;;;
                                  -104034;2;0;false;false;;;;;;
                                  -104036;3;0;false;false;63;95;191;;;
                                  -104039;3;0;false;false;;;;;;
                                  -104042;1;0;false;false;63;95;191;;;
                                  -104043;1;0;false;false;;;;;;
                                  -104044;5;0;false;false;63;95;191;;;
                                  -104049;1;0;false;false;;;;;;
                                  -104050;3;0;false;false;63;95;191;;;
                                  -104053;1;0;false;false;;;;;;
                                  -104054;5;0;false;false;63;95;191;;;
                                  -104059;1;0;false;false;;;;;;
                                  -104060;3;0;false;false;63;95;191;;;
                                  -104063;1;0;false;false;;;;;;
                                  -104064;4;0;false;false;63;95;191;;;
                                  -104068;1;0;false;false;;;;;;
                                  -104069;4;0;false;false;63;95;191;;;
                                  -104073;1;0;false;false;;;;;;
                                  -104074;3;0;false;false;63;95;191;;;
                                  -104077;1;0;false;false;;;;;;
                                  -104078;2;0;false;false;63;95;191;;;
                                  -104080;1;0;false;false;;;;;;
                                  -104081;3;0;false;false;63;95;191;;;
                                  -104084;1;0;false;false;;;;;;
                                  -104085;4;0;false;false;63;95;191;;;
                                  -104089;1;0;false;false;;;;;;
                                  -104090;9;0;false;false;63;95;191;;;
                                  -104099;1;0;false;false;;;;;;
                                  -104100;6;0;false;false;63;95;191;;;
                                  -104106;1;0;false;false;;;;;;
                                  -104107;8;0;false;false;63;95;191;;;
                                  -104115;4;0;false;false;;;;;;
                                  -104119;1;0;false;false;63;95;191;;;
                                  -104120;1;0;false;false;;;;;;
                                  -104121;2;0;false;false;63;95;191;;;
                                  -104123;1;0;false;false;;;;;;
                                  -104124;3;0;false;false;63;95;191;;;
                                  -104127;1;0;false;false;;;;;;
                                  -104128;9;0;false;false;63;95;191;;;
                                  -104137;1;0;false;false;;;;;;
                                  -104138;2;0;false;false;63;95;191;;;
                                  -104140;1;0;false;false;;;;;;
                                  -104141;3;0;false;false;63;95;191;;;
                                  -104144;1;0;false;false;;;;;;
                                  -104145;5;0;false;false;63;95;191;;;
                                  -104150;1;0;false;false;;;;;;
                                  -104151;5;0;false;false;63;95;191;;;
                                  -104156;1;0;false;false;;;;;;
                                  -104157;3;0;false;false;63;95;191;;;
                                  -104160;1;0;false;false;;;;;;
                                  -104161;5;0;false;false;63;95;191;;;
                                  -104166;1;0;false;false;;;;;;
                                  -104167;2;0;false;false;63;95;191;;;
                                  -104169;1;0;false;false;;;;;;
                                  -104170;3;0;false;false;63;95;191;;;
                                  -104173;1;0;false;false;;;;;;
                                  -104174;3;0;false;false;63;95;191;;;
                                  -104177;1;0;false;false;;;;;;
                                  -104178;2;0;false;false;63;95;191;;;
                                  -104180;1;0;false;false;;;;;;
                                  -104181;3;0;false;false;63;95;191;;;
                                  -104184;1;0;false;false;;;;;;
                                  -104185;3;0;false;false;63;95;191;;;
                                  -104188;1;0;false;false;;;;;;
                                  -104189;4;0;false;false;63;95;191;;;
                                  -104193;4;0;false;false;;;;;;
                                  -104197;1;0;false;false;63;95;191;;;
                                  -104198;1;0;false;false;;;;;;
                                  -104199;2;0;false;false;63;95;191;;;
                                  -104201;1;0;false;false;;;;;;
                                  -104202;3;0;false;false;63;95;191;;;
                                  -104205;1;0;false;false;;;;;;
                                  -104206;3;0;false;false;63;95;191;;;
                                  -104209;1;0;false;false;;;;;;
                                  -104210;4;0;false;false;63;95;191;;;
                                  -104214;1;0;false;false;;;;;;
                                  -104215;2;0;false;false;63;95;191;;;
                                  -104217;1;0;false;false;;;;;;
                                  -104218;7;0;false;false;63;95;191;;;
                                  -104225;1;0;false;false;;;;;;
                                  -104226;4;0;false;false;63;95;191;;;
                                  -104230;1;0;false;false;;;;;;
                                  -104231;3;0;false;false;63;95;191;;;
                                  -104234;1;0;false;false;;;;;;
                                  -104235;9;0;false;false;63;95;191;;;
                                  -104244;1;0;false;false;;;;;;
                                  -104245;7;0;false;false;63;95;191;;;
                                  -104252;3;0;false;false;;;;;;
                                  -104255;1;0;false;false;63;95;191;;;
                                  -104256;1;0;false;false;;;;;;
                                  -104257;5;0;false;false;63;95;191;;;
                                  -104262;1;0;false;false;;;;;;
                                  -104263;3;0;false;false;63;95;191;;;
                                  -104266;1;0;false;false;;;;;;
                                  -104267;5;0;false;false;63;95;191;;;
                                  -104272;1;0;false;false;;;;;;
                                  -104273;2;0;false;false;63;95;191;;;
                                  -104275;1;0;false;false;;;;;;
                                  -104276;3;0;false;false;63;95;191;;;
                                  -104279;1;0;false;false;;;;;;
                                  -104280;3;0;false;false;63;95;191;;;
                                  -104283;1;0;false;false;;;;;;
                                  -104284;2;0;false;false;63;95;191;;;
                                  -104286;1;0;false;false;;;;;;
                                  -104287;3;0;false;false;63;95;191;;;
                                  -104290;1;0;false;false;;;;;;
                                  -104291;4;0;false;false;63;95;191;;;
                                  -104295;1;0;false;false;;;;;;
                                  -104296;2;0;false;false;63;95;191;;;
                                  -104298;1;0;false;false;;;;;;
                                  -104299;3;0;false;false;63;95;191;;;
                                  -104302;1;0;false;false;;;;;;
                                  -104303;5;0;false;false;63;95;191;;;
                                  -104308;1;0;false;false;;;;;;
                                  -104309;7;0;false;false;63;95;191;;;
                                  -104316;1;0;false;false;;;;;;
                                  -104317;2;0;false;false;63;95;191;;;
                                  -104319;1;0;false;false;;;;;;
                                  -104320;2;0;false;false;63;95;191;;;
                                  -104322;1;0;false;false;;;;;;
                                  -104323;3;0;false;false;63;95;191;;;
                                  -104326;4;0;false;false;;;;;;
                                  -104330;1;0;false;false;63;95;191;;;
                                  -104331;1;0;false;false;;;;;;
                                  -104332;4;0;false;false;63;95;191;;;
                                  -104336;1;0;false;false;;;;;;
                                  -104337;5;0;false;false;63;95;191;;;
                                  -104342;3;0;false;false;;;;;;
                                  -104345;1;0;false;false;63;95;191;;;
                                  -104346;1;0;false;false;;;;;;
                                  -104347;7;0;false;false;63;95;191;;;
                                  -104354;1;0;false;false;;;;;;
                                  -104355;3;0;false;false;63;95;191;;;
                                  -104358;1;0;false;false;;;;;;
                                  -104359;9;0;false;false;63;95;191;;;
                                  -104368;1;0;false;false;;;;;;
                                  -104369;9;0;false;false;63;95;191;;;
                                  -104378;1;0;false;false;;;;;;
                                  -104379;2;0;false;false;63;95;191;;;
                                  -104381;1;0;false;false;;;;;;
                                  -104382;3;0;false;false;63;95;191;;;
                                  -104385;1;0;false;false;;;;;;
                                  -104386;5;0;false;false;63;95;191;;;
                                  -104391;1;0;false;false;;;;;;
                                  -104392;7;0;false;false;63;95;191;;;
                                  -104399;1;0;false;false;;;;;;
                                  -104400;4;0;false;false;63;95;191;;;
                                  -104404;1;0;false;false;;;;;;
                                  -104405;3;0;false;false;63;95;191;;;
                                  -104408;1;0;false;false;;;;;;
                                  -104409;6;0;false;false;63;95;191;;;
                                  -104415;1;0;false;false;;;;;;
                                  -104416;3;0;false;false;63;95;191;;;
                                  -104419;3;0;false;false;;;;;;
                                  -104422;1;0;false;false;63;95;191;;;
                                  -104423;1;0;false;false;;;;;;
                                  -104424;2;0;false;false;63;95;191;;;
                                  -104426;1;0;false;false;;;;;;
                                  -104427;2;0;false;false;63;95;191;;;
                                  -104429;1;0;false;false;;;;;;
                                  -104430;8;0;false;false;63;95;191;;;
                                  -104438;1;0;false;false;;;;;;
                                  -104439;4;0;false;false;63;95;191;;;
                                  -104443;1;0;false;false;;;;;;
                                  -104444;3;0;false;false;63;95;191;;;
                                  -104447;1;0;false;false;;;;;;
                                  -104448;3;0;false;false;63;95;191;;;
                                  -104451;1;0;false;false;;;;;;
                                  -104452;10;0;false;false;63;95;191;;;
                                  -104462;1;0;false;false;;;;;;
                                  -104463;9;0;false;false;63;95;191;;;
                                  -104472;1;0;false;false;;;;;;
                                  -104473;2;0;false;false;63;95;191;;;
                                  -104475;1;0;false;false;;;;;;
                                  -104476;3;0;false;false;63;95;191;;;
                                  -104479;1;0;false;false;;;;;;
                                  -104480;8;0;false;false;63;95;191;;;
                                  -104488;1;0;false;false;;;;;;
                                  -104489;9;0;false;false;63;95;191;;;
                                  -104498;3;0;false;false;;;;;;
                                  -104501;1;0;false;false;63;95;191;;;
                                  -104502;1;0;false;false;;;;;;
                                  -104503;10;0;false;false;63;95;191;;;
                                  -104513;3;0;false;false;;;;;;
                                  -104516;2;0;false;false;63;95;191;;;
                                  -104518;2;0;false;false;;;;;;
                                  -104520;4;1;false;false;127;0;85;;;
                                  -104524;1;0;false;false;;;;;;
                                  -104525;21;0;false;false;0;0;0;;;
                                  -104546;1;0;false;false;;;;;;
                                  -104547;1;0;false;false;0;0;0;;;
                                  -104548;3;0;false;false;;;;;;
                                  -104551;3;1;false;false;127;0;85;;;
                                  -104554;1;0;false;false;;;;;;
                                  -104555;11;0;false;false;0;0;0;;;
                                  -104566;3;0;false;false;;;;;;
                                  -104569;3;1;false;false;127;0;85;;;
                                  -104572;1;0;false;false;;;;;;
                                  -104573;10;0;false;false;0;0;0;;;
                                  -104583;3;0;false;false;;;;;;
                                  -104586;3;1;false;false;127;0;85;;;
                                  -104589;1;0;false;false;;;;;;
                                  -104590;16;0;false;false;0;0;0;;;
                                  -104606;6;0;false;false;;;;;;
                                  -104612;2;1;false;false;127;0;85;;;
                                  -104614;1;0;false;false;;;;;;
                                  -104615;16;0;false;false;0;0;0;;;
                                  -104631;1;0;false;false;;;;;;
                                  -104632;1;0;false;false;0;0;0;;;
                                  -104633;4;0;false;false;;;;;;
                                  -104637;6;1;false;false;127;0;85;;;
                                  -104643;1;0;false;false;0;0;0;;;
                                  -104644;3;0;false;false;;;;;;
                                  -104647;1;0;false;false;0;0;0;;;
                                  -104648;3;0;false;false;;;;;;
                                  -104651;9;0;false;false;0;0;0;;;
                                  -104660;1;0;false;false;;;;;;
                                  -104661;1;0;false;false;0;0;0;;;
                                  -104662;1;0;false;false;;;;;;
                                  -104663;15;0;false;false;0;0;0;;;
                                  -104678;4;0;false;false;;;;;;
                                  -104682;15;0;false;false;0;0;0;;;
                                  -104697;1;0;false;false;;;;;;
                                  -104698;1;0;false;false;0;0;0;;;
                                  -104699;1;0;false;false;;;;;;
                                  -104700;35;0;false;false;0;0;0;;;
                                  -104735;3;0;false;false;;;;;;
                                  -104738;31;0;false;false;63;127;95;;;
                                  -104769;1;0;false;false;;;;;;
                                  -104770;10;0;false;false;0;0;0;;;
                                  -104780;1;0;false;false;;;;;;
                                  -104781;1;0;false;false;0;0;0;;;
                                  -104782;1;0;false;false;;;;;;
                                  -104783;7;0;false;false;0;0;0;;;
                                  -104790;1;0;false;false;;;;;;
                                  -104791;1;0;false;false;0;0;0;;;
                                  -104792;1;0;false;false;;;;;;
                                  -104793;13;0;false;false;0;0;0;;;
                                  -104806;4;0;false;false;;;;;;
                                  -104810;27;0;false;false;0;0;0;;;
                                  -104837;1;0;false;false;;;;;;
                                  -104838;10;0;false;false;0;0;0;;;
                                  -104848;1;0;false;false;;;;;;
                                  -104849;11;0;false;false;0;0;0;;;
                                  -104860;1;0;false;false;;;;;;
                                  -104861;1;0;false;false;0;0;0;;;
                                  -104862;1;0;false;false;;;;;;
                                  -104863;17;0;false;false;0;0;0;;;
                                  -104880;3;0;false;false;;;;;;
                                  -104883;2;1;false;false;127;0;85;;;
                                  -104885;1;0;false;false;;;;;;
                                  -104886;10;0;false;false;0;0;0;;;
                                  -104896;1;0;false;false;;;;;;
                                  -104897;2;0;false;false;0;0;0;;;
                                  -104899;1;0;false;false;;;;;;
                                  -104900;22;0;false;false;0;0;0;;;
                                  -104922;1;0;false;false;;;;;;
                                  -104923;1;0;false;false;0;0;0;;;
                                  -104924;1;0;false;false;;;;;;
                                  -104925;2;0;false;false;0;0;0;;;
                                  -104927;1;0;false;false;;;;;;
                                  -104928;1;0;false;false;0;0;0;;;
                                  -104929;4;0;false;false;;;;;;
                                  -104933;11;0;false;false;0;0;0;;;
                                  -104944;1;0;false;false;;;;;;
                                  -104945;1;0;false;false;0;0;0;;;
                                  -104946;1;0;false;false;;;;;;
                                  -104947;23;0;false;false;0;0;0;;;
                                  -104970;3;0;false;false;;;;;;
                                  -104973;1;0;false;false;0;0;0;;;
                                  -104974;3;0;false;false;;;;;;
                                  -104977;4;1;false;false;127;0;85;;;
                                  -104981;1;0;false;false;;;;;;
                                  -104982;1;0;false;false;0;0;0;;;
                                  -104983;4;0;false;false;;;;;;
                                  -104987;9;0;false;false;0;0;0;;;
                                  -104996;1;0;false;false;;;;;;
                                  -104997;1;0;false;false;0;0;0;;;
                                  -104998;1;0;false;false;;;;;;
                                  -104999;13;0;false;false;0;0;0;;;
                                  -105012;3;0;false;false;;;;;;
                                  -105015;1;0;false;false;0;0;0;;;
                                  -105016;3;0;false;false;;;;;;
                                  -105019;30;0;false;false;0;0;0;;;
                                  -105049;4;0;false;false;;;;;;
                                  -105053;59;0;false;false;63;127;95;;;
                                  -105112;1;0;false;false;;;;;;
                                  -105113;33;0;false;false;63;127;95;;;
                                  -105146;1;0;false;false;;;;;;
                                  -105147;28;0;false;false;0;0;0;;;
                                  -105175;3;0;false;false;;;;;;
                                  -105178;66;0;false;false;63;127;95;;;
                                  -105244;1;0;false;false;;;;;;
                                  -105245;69;0;false;false;63;127;95;;;
                                  -105314;1;0;false;false;;;;;;
                                  -105315;21;0;false;false;0;0;0;;;
                                  -105336;3;0;false;false;;;;;;
                                  -105339;48;0;false;false;63;127;95;;;
                                  -105387;1;0;false;false;;;;;;
                                  -105388;7;0;false;false;0;0;0;;;
                                  -105395;1;0;false;false;;;;;;
                                  -105396;1;0;false;false;0;0;0;;;
                                  -105397;1;0;false;false;;;;;;
                                  -105398;11;0;false;false;0;0;0;;;
                                  -105409;2;0;false;false;;;;;;
                                  -105411;1;0;false;false;0;0;0;;;
                                  -105412;2;0;false;false;;;;;;
                                  -105414;3;0;false;false;63;95;191;;;
                                  -105417;3;0;false;false;;;;;;
                                  -105420;1;0;false;false;63;95;191;;;
                                  -105421;1;0;false;false;;;;;;
                                  -105422;5;0;false;false;63;95;191;;;
                                  -105427;1;0;false;false;;;;;;
                                  -105428;3;0;false;false;63;95;191;;;
                                  -105431;1;0;false;false;;;;;;
                                  -105432;5;0;false;false;63;95;191;;;
                                  -105437;1;0;false;false;;;;;;
                                  -105438;3;0;false;false;63;95;191;;;
                                  -105441;1;0;false;false;;;;;;
                                  -105442;4;0;false;false;63;95;191;;;
                                  -105446;1;0;false;false;;;;;;
                                  -105447;2;0;false;false;63;95;191;;;
                                  -105449;1;0;false;false;;;;;;
                                  -105450;3;0;false;false;63;95;191;;;
                                  -105453;1;0;false;false;;;;;;
                                  -105454;2;0;false;false;63;95;191;;;
                                  -105456;1;0;false;false;;;;;;
                                  -105457;3;0;false;false;63;95;191;;;
                                  -105460;1;0;false;false;;;;;;
                                  -105461;4;0;false;false;63;95;191;;;
                                  -105465;1;0;false;false;;;;;;
                                  -105466;9;0;false;false;63;95;191;;;
                                  -105475;1;0;false;false;;;;;;
                                  -105476;6;0;false;false;63;95;191;;;
                                  -105482;1;0;false;false;;;;;;
                                  -105483;8;0;false;false;63;95;191;;;
                                  -105491;4;0;false;false;;;;;;
                                  -105495;1;0;false;false;63;95;191;;;
                                  -105496;1;0;false;false;;;;;;
                                  -105497;2;0;false;false;63;95;191;;;
                                  -105499;1;0;false;false;;;;;;
                                  -105500;3;0;false;false;63;95;191;;;
                                  -105503;1;0;false;false;;;;;;
                                  -105504;9;0;false;false;63;95;191;;;
                                  -105513;1;0;false;false;;;;;;
                                  -105514;2;0;false;false;63;95;191;;;
                                  -105516;1;0;false;false;;;;;;
                                  -105517;3;0;false;false;63;95;191;;;
                                  -105520;1;0;false;false;;;;;;
                                  -105521;5;0;false;false;63;95;191;;;
                                  -105526;1;0;false;false;;;;;;
                                  -105527;5;0;false;false;63;95;191;;;
                                  -105532;1;0;false;false;;;;;;
                                  -105533;3;0;false;false;63;95;191;;;
                                  -105536;1;0;false;false;;;;;;
                                  -105537;5;0;false;false;63;95;191;;;
                                  -105542;1;0;false;false;;;;;;
                                  -105543;2;0;false;false;63;95;191;;;
                                  -105545;1;0;false;false;;;;;;
                                  -105546;3;0;false;false;63;95;191;;;
                                  -105549;1;0;false;false;;;;;;
                                  -105550;3;0;false;false;63;95;191;;;
                                  -105553;1;0;false;false;;;;;;
                                  -105554;2;0;false;false;63;95;191;;;
                                  -105556;1;0;false;false;;;;;;
                                  -105557;3;0;false;false;63;95;191;;;
                                  -105560;1;0;false;false;;;;;;
                                  -105561;3;0;false;false;63;95;191;;;
                                  -105564;1;0;false;false;;;;;;
                                  -105565;4;0;false;false;63;95;191;;;
                                  -105569;4;0;false;false;;;;;;
                                  -105573;1;0;false;false;63;95;191;;;
                                  -105574;1;0;false;false;;;;;;
                                  -105575;2;0;false;false;63;95;191;;;
                                  -105577;1;0;false;false;;;;;;
                                  -105578;3;0;false;false;63;95;191;;;
                                  -105581;1;0;false;false;;;;;;
                                  -105582;3;0;false;false;63;95;191;;;
                                  -105585;1;0;false;false;;;;;;
                                  -105586;4;0;false;false;63;95;191;;;
                                  -105590;1;0;false;false;;;;;;
                                  -105591;2;0;false;false;63;95;191;;;
                                  -105593;1;0;false;false;;;;;;
                                  -105594;7;0;false;false;63;95;191;;;
                                  -105601;1;0;false;false;;;;;;
                                  -105602;4;0;false;false;63;95;191;;;
                                  -105606;1;0;false;false;;;;;;
                                  -105607;3;0;false;false;63;95;191;;;
                                  -105610;1;0;false;false;;;;;;
                                  -105611;9;0;false;false;63;95;191;;;
                                  -105620;1;0;false;false;;;;;;
                                  -105621;7;0;false;false;63;95;191;;;
                                  -105628;3;0;false;false;;;;;;
                                  -105631;1;0;false;false;63;95;191;;;
                                  -105632;1;0;false;false;;;;;;
                                  -105633;5;0;false;false;63;95;191;;;
                                  -105638;1;0;false;false;;;;;;
                                  -105639;3;0;false;false;63;95;191;;;
                                  -105642;1;0;false;false;;;;;;
                                  -105643;5;0;false;false;63;95;191;;;
                                  -105648;1;0;false;false;;;;;;
                                  -105649;2;0;false;false;63;95;191;;;
                                  -105651;1;0;false;false;;;;;;
                                  -105652;3;0;false;false;63;95;191;;;
                                  -105655;1;0;false;false;;;;;;
                                  -105656;9;0;false;false;63;95;191;;;
                                  -105665;1;0;false;false;;;;;;
                                  -105666;2;0;false;false;63;95;191;;;
                                  -105668;1;0;false;false;;;;;;
                                  -105669;3;0;false;false;63;95;191;;;
                                  -105672;1;0;false;false;;;;;;
                                  -105673;8;0;false;false;63;95;191;;;
                                  -105681;1;0;false;false;;;;;;
                                  -105682;2;0;false;false;63;95;191;;;
                                  -105684;1;0;false;false;;;;;;
                                  -105685;2;0;false;false;63;95;191;;;
                                  -105687;1;0;false;false;;;;;;
                                  -105688;2;0;false;false;63;95;191;;;
                                  -105690;1;0;false;false;;;;;;
                                  -105691;7;0;false;false;63;95;191;;;
                                  -105698;1;0;false;false;;;;;;
                                  -105699;2;0;false;false;63;95;191;;;
                                  -105701;1;0;false;false;;;;;;
                                  -105702;3;0;false;false;63;95;191;;;
                                  -105705;3;0;false;false;;;;;;
                                  -105708;1;0;false;false;63;95;191;;;
                                  -105709;1;0;false;false;;;;;;
                                  -105710;5;0;false;false;63;95;191;;;
                                  -105715;1;0;false;false;;;;;;
                                  -105716;5;0;false;false;63;95;191;;;
                                  -105721;3;0;false;false;;;;;;
                                  -105724;1;0;false;false;63;95;191;;;
                                  -105725;1;0;false;false;;;;;;
                                  -105726;7;0;false;false;63;95;191;;;
                                  -105733;1;0;false;false;;;;;;
                                  -105734;3;0;false;false;63;95;191;;;
                                  -105737;1;0;false;false;;;;;;
                                  -105738;9;0;false;false;63;95;191;;;
                                  -105747;1;0;false;false;;;;;;
                                  -105748;9;0;false;false;63;95;191;;;
                                  -105757;1;0;false;false;;;;;;
                                  -105758;2;0;false;false;63;95;191;;;
                                  -105760;1;0;false;false;;;;;;
                                  -105761;3;0;false;false;63;95;191;;;
                                  -105764;1;0;false;false;;;;;;
                                  -105765;5;0;false;false;63;95;191;;;
                                  -105770;1;0;false;false;;;;;;
                                  -105771;7;0;false;false;63;95;191;;;
                                  -105778;1;0;false;false;;;;;;
                                  -105779;4;0;false;false;63;95;191;;;
                                  -105783;1;0;false;false;;;;;;
                                  -105784;3;0;false;false;63;95;191;;;
                                  -105787;1;0;false;false;;;;;;
                                  -105788;6;0;false;false;63;95;191;;;
                                  -105794;1;0;false;false;;;;;;
                                  -105795;3;0;false;false;63;95;191;;;
                                  -105798;3;0;false;false;;;;;;
                                  -105801;1;0;false;false;63;95;191;;;
                                  -105802;1;0;false;false;;;;;;
                                  -105803;2;0;false;false;63;95;191;;;
                                  -105805;1;0;false;false;;;;;;
                                  -105806;2;0;false;false;63;95;191;;;
                                  -105808;1;0;false;false;;;;;;
                                  -105809;8;0;false;false;63;95;191;;;
                                  -105817;1;0;false;false;;;;;;
                                  -105818;4;0;false;false;63;95;191;;;
                                  -105822;1;0;false;false;;;;;;
                                  -105823;3;0;false;false;63;95;191;;;
                                  -105826;1;0;false;false;;;;;;
                                  -105827;3;0;false;false;63;95;191;;;
                                  -105830;1;0;false;false;;;;;;
                                  -105831;10;0;false;false;63;95;191;;;
                                  -105841;1;0;false;false;;;;;;
                                  -105842;9;0;false;false;63;95;191;;;
                                  -105851;1;0;false;false;;;;;;
                                  -105852;2;0;false;false;63;95;191;;;
                                  -105854;1;0;false;false;;;;;;
                                  -105855;3;0;false;false;63;95;191;;;
                                  -105858;1;0;false;false;;;;;;
                                  -105859;8;0;false;false;63;95;191;;;
                                  -105867;1;0;false;false;;;;;;
                                  -105868;9;0;false;false;63;95;191;;;
                                  -105877;3;0;false;false;;;;;;
                                  -105880;1;0;false;false;63;95;191;;;
                                  -105881;1;0;false;false;;;;;;
                                  -105882;10;0;false;false;63;95;191;;;
                                  -105892;3;0;false;false;;;;;;
                                  -105895;2;0;false;false;63;95;191;;;
                                  -105897;2;0;false;false;;;;;;
                                  -105899;4;1;false;false;127;0;85;;;
                                  -105903;1;0;false;false;;;;;;
                                  -105904;19;0;false;false;0;0;0;;;
                                  -105923;1;0;false;false;;;;;;
                                  -105924;1;0;false;false;0;0;0;;;
                                  -105925;3;0;false;false;;;;;;
                                  -105928;3;1;false;false;127;0;85;;;
                                  -105931;1;0;false;false;;;;;;
                                  -105932;11;0;false;false;0;0;0;;;
                                  -105943;3;0;false;false;;;;;;
                                  -105946;3;1;false;false;127;0;85;;;
                                  -105949;1;0;false;false;;;;;;
                                  -105950;9;0;false;false;0;0;0;;;
                                  -105959;1;0;false;false;;;;;;
                                  -105960;1;0;false;false;0;0;0;;;
                                  -105961;1;0;false;false;;;;;;
                                  -105962;15;0;false;false;0;0;0;;;
                                  -105977;4;0;false;false;;;;;;
                                  -105981;3;1;false;false;127;0;85;;;
                                  -105984;1;0;false;false;;;;;;
                                  -105985;15;0;false;false;0;0;0;;;
                                  -106000;1;0;false;false;;;;;;
                                  -106001;1;0;false;false;0;0;0;;;
                                  -106002;1;0;false;false;;;;;;
                                  -106003;35;0;false;false;0;0;0;;;
                                  -106038;6;0;false;false;;;;;;
                                  -106044;31;0;false;false;63;127;95;;;
                                  -106075;1;0;false;false;;;;;;
                                  -106076;10;0;false;false;0;0;0;;;
                                  -106086;1;0;false;false;;;;;;
                                  -106087;1;0;false;false;0;0;0;;;
                                  -106088;1;0;false;false;;;;;;
                                  -106089;7;0;false;false;0;0;0;;;
                                  -106096;1;0;false;false;;;;;;
                                  -106097;1;0;false;false;0;0;0;;;
                                  -106098;1;0;false;false;;;;;;
                                  -106099;13;0;false;false;0;0;0;;;
                                  -106112;4;0;false;false;;;;;;
                                  -106116;27;0;false;false;0;0;0;;;
                                  -106143;1;0;false;false;;;;;;
                                  -106144;10;0;false;false;0;0;0;;;
                                  -106154;1;0;false;false;;;;;;
                                  -106155;11;0;false;false;0;0;0;;;
                                  -106166;1;0;false;false;;;;;;
                                  -106167;1;0;false;false;0;0;0;;;
                                  -106168;1;0;false;false;;;;;;
                                  -106169;17;0;false;false;0;0;0;;;
                                  -106186;4;0;false;false;;;;;;
                                  -106190;2;1;false;false;127;0;85;;;
                                  -106192;1;0;false;false;;;;;;
                                  -106193;10;0;false;false;0;0;0;;;
                                  -106203;1;0;false;false;;;;;;
                                  -106204;2;0;false;false;0;0;0;;;
                                  -106206;1;0;false;false;;;;;;
                                  -106207;2;0;false;false;0;0;0;;;
                                  -106209;1;0;false;false;;;;;;
                                  -106210;1;0;false;false;0;0;0;;;
                                  -106211;4;0;false;false;;;;;;
                                  -106215;11;0;false;false;0;0;0;;;
                                  -106226;1;0;false;false;;;;;;
                                  -106227;1;0;false;false;0;0;0;;;
                                  -106228;1;0;false;false;;;;;;
                                  -106229;2;0;false;false;0;0;0;;;
                                  -106231;3;0;false;false;;;;;;
                                  -106234;1;0;false;false;0;0;0;;;
                                  -106235;3;0;false;false;;;;;;
                                  -106238;4;1;false;false;127;0;85;;;
                                  -106242;1;0;false;false;;;;;;
                                  -106243;1;0;false;false;0;0;0;;;
                                  -106244;4;0;false;false;;;;;;
                                  -106248;9;0;false;false;0;0;0;;;
                                  -106257;1;0;false;false;;;;;;
                                  -106258;1;0;false;false;0;0;0;;;
                                  -106259;1;0;false;false;;;;;;
                                  -106260;11;0;false;false;0;0;0;;;
                                  -106271;3;0;false;false;;;;;;
                                  -106274;1;0;false;false;0;0;0;;;
                                  -106275;3;0;false;false;;;;;;
                                  -106278;30;0;false;false;0;0;0;;;
                                  -106308;3;0;false;false;;;;;;
                                  -106311;66;0;false;false;63;127;95;;;
                                  -106377;1;0;false;false;;;;;;
                                  -106378;69;0;false;false;63;127;95;;;
                                  -106447;1;0;false;false;;;;;;
                                  -106448;21;0;false;false;0;0;0;;;
                                  -106469;3;0;false;false;;;;;;
                                  -106472;32;0;false;false;0;0;0;;;
                                  -106504;3;0;false;false;;;;;;
                                  -106507;49;0;false;false;63;127;95;;;
                                  -106556;1;0;false;false;;;;;;
                                  -106557;7;0;false;false;0;0;0;;;
                                  -106564;1;0;false;false;;;;;;
                                  -106565;1;0;false;false;0;0;0;;;
                                  -106566;1;0;false;false;;;;;;
                                  -106567;11;0;false;false;0;0;0;;;
                                  -106578;2;0;false;false;;;;;;
                                  -106580;1;0;false;false;0;0;0;;;
                                  -106581;2;0;false;false;;;;;;
                                  -106583;3;0;false;false;63;95;191;;;
                                  -106586;3;0;false;false;;;;;;
                                  -106589;1;0;false;false;63;95;191;;;
                                  -106590;1;0;false;false;;;;;;
                                  -106591;7;0;false;false;63;95;191;;;
                                  -106598;1;0;false;false;;;;;;
                                  -106599;3;0;false;false;63;95;191;;;
                                  -106602;1;0;false;false;;;;;;
                                  -106603;4;0;false;false;63;95;191;;;
                                  -106607;1;0;false;false;;;;;;
                                  -106608;4;0;false;false;63;95;191;;;
                                  -106612;1;0;false;false;;;;;;
                                  -106613;2;0;false;false;63;95;191;;;
                                  -106615;1;0;false;false;;;;;;
                                  -106616;4;0;false;false;63;95;191;;;
                                  -106620;1;0;false;false;;;;;;
                                  -106621;3;0;false;false;63;95;191;;;
                                  -106624;1;0;false;false;;;;;;
                                  -106625;4;0;false;false;63;95;191;;;
                                  -106629;1;0;false;false;;;;;;
                                  -106630;4;0;false;false;63;95;191;;;
                                  -106634;1;0;false;false;;;;;;
                                  -106635;10;0;false;false;63;95;191;;;
                                  -106645;1;0;false;false;;;;;;
                                  -106646;2;0;false;false;63;95;191;;;
                                  -106648;1;0;false;false;;;;;;
                                  -106649;6;0;false;false;63;95;191;;;
                                  -106655;3;0;false;false;;;;;;
                                  -106658;1;0;false;false;63;95;191;;;
                                  -106659;1;0;false;false;;;;;;
                                  -106660;2;0;false;false;63;95;191;;;
                                  -106662;1;0;false;false;;;;;;
                                  -106663;3;0;false;false;63;95;191;;;
                                  -106666;1;0;false;false;;;;;;
                                  -106667;7;0;false;false;63;95;191;;;
                                  -106674;1;0;false;false;;;;;;
                                  -106675;4;0;false;false;63;95;191;;;
                                  -106679;1;0;false;false;;;;;;
                                  -106680;7;0;false;false;63;95;191;;;
                                  -106687;1;0;false;false;;;;;;
                                  -106688;3;0;false;false;63;95;191;;;
                                  -106691;1;0;false;false;;;;;;
                                  -106692;5;0;false;false;63;95;191;;;
                                  -106697;1;0;false;false;;;;;;
                                  -106698;7;0;false;false;63;95;191;;;
                                  -106705;1;0;false;false;;;;;;
                                  -106706;3;0;false;false;63;95;191;;;
                                  -106709;1;0;false;false;;;;;;
                                  -106710;5;0;false;false;63;95;191;;;
                                  -106715;3;0;false;false;;;;;;
                                  -106718;1;0;false;false;63;95;191;;;
                                  -106719;1;0;false;false;;;;;;
                                  -106720;3;0;false;false;63;95;191;;;
                                  -106723;1;0;false;false;;;;;;
                                  -106724;5;0;false;false;63;95;191;;;
                                  -106729;1;0;false;false;;;;;;
                                  -106730;2;0;false;false;63;95;191;;;
                                  -106732;1;0;false;false;;;;;;
                                  -106733;8;0;false;false;63;95;191;;;
                                  -106741;1;0;false;false;;;;;;
                                  -106742;3;0;false;false;63;95;191;;;
                                  -106745;1;0;false;false;;;;;;
                                  -106746;4;0;false;false;63;95;191;;;
                                  -106750;1;0;false;false;;;;;;
                                  -106751;6;0;false;false;63;95;191;;;
                                  -106757;1;0;false;false;;;;;;
                                  -106758;2;0;false;false;63;95;191;;;
                                  -106760;1;0;false;false;;;;;;
                                  -106761;5;0;false;false;63;95;191;;;
                                  -106766;1;0;false;false;;;;;;
                                  -106767;2;0;false;false;63;95;191;;;
                                  -106769;1;0;false;false;;;;;;
                                  -106770;4;0;false;false;63;95;191;;;
                                  -106774;1;0;false;false;;;;;;
                                  -106775;3;0;false;false;63;95;191;;;
                                  -106778;1;0;false;false;;;;;;
                                  -106779;8;0;false;false;63;95;191;;;
                                  -106787;4;0;false;false;;;;;;
                                  -106791;1;0;false;false;63;95;191;;;
                                  -106792;1;0;false;false;;;;;;
                                  -106793;8;0;false;false;63;95;191;;;
                                  -106801;1;0;false;false;;;;;;
                                  -106802;2;0;false;false;63;95;191;;;
                                  -106804;1;0;false;false;;;;;;
                                  -106805;3;0;false;false;63;95;191;;;
                                  -106808;1;0;false;false;;;;;;
                                  -106809;3;0;false;false;63;95;191;;;
                                  -106812;1;0;false;false;;;;;;
                                  -106813;4;0;false;false;63;95;191;;;
                                  -106817;1;0;false;false;;;;;;
                                  -106818;7;0;false;false;63;95;191;;;
                                  -106825;1;0;false;false;;;;;;
                                  -106826;3;0;false;false;63;95;191;;;
                                  -106829;1;0;false;false;;;;;;
                                  -106830;5;0;false;false;63;95;191;;;
                                  -106835;1;0;false;false;;;;;;
                                  -106836;3;0;false;false;63;95;191;;;
                                  -106839;1;0;false;false;;;;;;
                                  -106840;9;0;false;false;63;95;191;;;
                                  -106849;1;0;false;false;;;;;;
                                  -106850;2;0;false;false;63;95;191;;;
                                  -106852;1;0;false;false;;;;;;
                                  -106853;3;0;false;false;63;95;191;;;
                                  -106856;1;0;false;false;;;;;;
                                  -106857;3;0;false;false;63;95;191;;;
                                  -106860;4;0;false;false;;;;;;
                                  -106864;1;0;false;false;63;95;191;;;
                                  -106865;1;0;false;false;;;;;;
                                  -106866;2;0;false;false;63;95;191;;;
                                  -106868;1;0;false;false;;;;;;
                                  -106869;3;0;false;false;63;95;191;;;
                                  -106872;1;0;false;false;;;;;;
                                  -106873;4;0;false;false;63;95;191;;;
                                  -106877;1;0;false;false;;;;;;
                                  -106878;5;0;false;false;63;95;191;;;
                                  -106883;1;0;false;false;;;;;;
                                  -106884;1;0;false;false;63;95;191;;;
                                  -106885;1;0;false;false;;;;;;
                                  -106886;4;0;false;false;63;95;191;;;
                                  -106890;1;0;false;false;;;;;;
                                  -106891;4;0;false;false;63;95;191;;;
                                  -106895;1;0;false;false;;;;;;
                                  -106896;6;0;false;false;63;95;191;;;
                                  -106902;1;0;false;false;;;;;;
                                  -106903;2;0;false;false;63;95;191;;;
                                  -106905;1;0;false;false;;;;;;
                                  -106906;3;0;false;false;63;95;191;;;
                                  -106909;1;0;false;false;;;;;;
                                  -106910;9;0;false;false;63;95;191;;;
                                  -106919;1;0;false;false;;;;;;
                                  -106920;2;0;false;false;63;95;191;;;
                                  -106922;1;0;false;false;;;;;;
                                  -106923;4;0;false;false;63;95;191;;;
                                  -106927;1;0;false;false;;;;;;
                                  -106928;4;0;false;false;63;95;191;;;
                                  -106932;4;0;false;false;;;;;;
                                  -106936;1;0;false;false;63;95;191;;;
                                  -106937;1;0;false;false;;;;;;
                                  -106938;3;0;false;false;63;95;191;;;
                                  -106941;1;0;false;false;;;;;;
                                  -106942;5;0;false;false;63;95;191;;;
                                  -106947;1;0;false;false;;;;;;
                                  -106948;2;0;false;false;63;95;191;;;
                                  -106950;1;0;false;false;;;;;;
                                  -106951;5;0;false;false;63;95;191;;;
                                  -106956;1;0;false;false;;;;;;
                                  -106957;5;0;false;false;63;95;191;;;
                                  -106962;1;0;false;false;;;;;;
                                  -106963;3;0;false;false;63;95;191;;;
                                  -106966;1;0;false;false;;;;;;
                                  -106967;4;0;false;false;63;95;191;;;
                                  -106971;1;0;false;false;;;;;;
                                  -106972;10;0;false;false;63;95;191;;;
                                  -106982;3;0;false;false;;;;;;
                                  -106985;1;0;false;false;63;95;191;;;
                                  -106986;1;0;false;false;;;;;;
                                  -106987;3;0;false;false;127;127;159;;;
                                  -106990;3;0;false;false;;;;;;
                                  -106993;1;0;false;false;63;95;191;;;
                                  -106994;1;0;false;false;;;;;;
                                  -106995;7;0;false;false;63;95;191;;;
                                  -107002;1;0;false;false;;;;;;
                                  -107003;3;0;false;false;63;95;191;;;
                                  -107006;1;0;false;false;;;;;;
                                  -107007;9;0;false;false;63;95;191;;;
                                  -107016;1;0;false;false;;;;;;
                                  -107017;9;0;false;false;63;95;191;;;
                                  -107026;1;0;false;false;;;;;;
                                  -107027;2;0;false;false;63;95;191;;;
                                  -107029;1;0;false;false;;;;;;
                                  -107030;3;0;false;false;63;95;191;;;
                                  -107033;1;0;false;false;;;;;;
                                  -107034;5;0;false;false;63;95;191;;;
                                  -107039;1;0;false;false;;;;;;
                                  -107040;7;0;false;false;63;95;191;;;
                                  -107047;1;0;false;false;;;;;;
                                  -107048;4;0;false;false;63;95;191;;;
                                  -107052;1;0;false;false;;;;;;
                                  -107053;3;0;false;false;63;95;191;;;
                                  -107056;1;0;false;false;;;;;;
                                  -107057;6;0;false;false;63;95;191;;;
                                  -107063;1;0;false;false;;;;;;
                                  -107064;3;0;false;false;63;95;191;;;
                                  -107067;3;0;false;false;;;;;;
                                  -107070;1;0;false;false;63;95;191;;;
                                  -107071;1;0;false;false;;;;;;
                                  -107072;2;0;false;false;63;95;191;;;
                                  -107074;1;0;false;false;;;;;;
                                  -107075;2;0;false;false;63;95;191;;;
                                  -107077;1;0;false;false;;;;;;
                                  -107078;8;0;false;false;63;95;191;;;
                                  -107086;1;0;false;false;;;;;;
                                  -107087;4;0;false;false;63;95;191;;;
                                  -107091;1;0;false;false;;;;;;
                                  -107092;3;0;false;false;63;95;191;;;
                                  -107095;1;0;false;false;;;;;;
                                  -107096;3;0;false;false;63;95;191;;;
                                  -107099;1;0;false;false;;;;;;
                                  -107100;10;0;false;false;63;95;191;;;
                                  -107110;1;0;false;false;;;;;;
                                  -107111;9;0;false;false;63;95;191;;;
                                  -107120;1;0;false;false;;;;;;
                                  -107121;2;0;false;false;63;95;191;;;
                                  -107123;1;0;false;false;;;;;;
                                  -107124;3;0;false;false;63;95;191;;;
                                  -107127;1;0;false;false;;;;;;
                                  -107128;8;0;false;false;63;95;191;;;
                                  -107136;1;0;false;false;;;;;;
                                  -107137;9;0;false;false;63;95;191;;;
                                  -107146;3;0;false;false;;;;;;
                                  -107149;1;0;false;false;63;95;191;;;
                                  -107150;1;0;false;false;;;;;;
                                  -107151;10;0;false;false;63;95;191;;;
                                  -107161;3;0;false;false;;;;;;
                                  -107164;1;0;false;false;63;95;191;;;
                                  -107165;1;0;false;false;;;;;;
                                  -107166;4;0;false;false;127;127;159;;;
                                  -107170;3;0;false;false;;;;;;
                                  -107173;2;0;false;false;63;95;191;;;
                                  -107175;2;0;false;false;;;;;;
                                  -107177;4;1;false;false;127;0;85;;;
                                  -107181;1;0;false;false;;;;;;
                                  -107182;20;0;false;false;0;0;0;;;
                                  -107202;3;1;false;false;127;0;85;;;
                                  -107205;1;0;false;false;;;;;;
                                  -107206;6;0;false;false;0;0;0;;;
                                  -107212;1;0;false;false;;;;;;
                                  -107213;1;0;false;false;0;0;0;;;
                                  -107214;3;0;false;false;;;;;;
                                  -107217;3;1;false;false;127;0;85;;;
                                  -107220;1;0;false;false;;;;;;
                                  -107221;11;0;false;false;0;0;0;;;
                                  -107232;3;0;false;false;;;;;;
                                  -107235;3;1;false;false;127;0;85;;;
                                  -107238;1;0;false;false;;;;;;
                                  -107239;9;0;false;false;0;0;0;;;
                                  -107248;1;0;false;false;;;;;;
                                  -107249;1;0;false;false;0;0;0;;;
                                  -107250;1;0;false;false;;;;;;
                                  -107251;15;0;false;false;0;0;0;;;
                                  -107266;3;0;false;false;;;;;;
                                  -107269;3;1;false;false;127;0;85;;;
                                  -107272;1;0;false;false;;;;;;
                                  -107273;15;0;false;false;0;0;0;;;
                                  -107288;1;0;false;false;;;;;;
                                  -107289;1;0;false;false;0;0;0;;;
                                  -107290;1;0;false;false;;;;;;
                                  -107291;35;0;false;false;0;0;0;;;
                                  -107326;6;0;false;false;;;;;;
                                  -107332;31;0;false;false;63;127;95;;;
                                  -107363;1;0;false;false;;;;;;
                                  -107364;10;0;false;false;0;0;0;;;
                                  -107374;1;0;false;false;;;;;;
                                  -107375;1;0;false;false;0;0;0;;;
                                  -107376;1;0;false;false;;;;;;
                                  -107377;7;0;false;false;0;0;0;;;
                                  -107384;1;0;false;false;;;;;;
                                  -107385;1;0;false;false;0;0;0;;;
                                  -107386;1;0;false;false;;;;;;
                                  -107387;13;0;false;false;0;0;0;;;
                                  -107400;4;0;false;false;;;;;;
                                  -107404;27;0;false;false;0;0;0;;;
                                  -107431;1;0;false;false;;;;;;
                                  -107432;10;0;false;false;0;0;0;;;
                                  -107442;1;0;false;false;;;;;;
                                  -107443;11;0;false;false;0;0;0;;;
                                  -107454;1;0;false;false;;;;;;
                                  -107455;1;0;false;false;0;0;0;;;
                                  -107456;1;0;false;false;;;;;;
                                  -107457;17;0;false;false;0;0;0;;;
                                  -107474;3;0;false;false;;;;;;
                                  -107477;11;0;false;false;0;0;0;;;
                                  -107488;4;1;false;false;127;0;85;;;
                                  -107492;1;0;false;false;0;0;0;;;
                                  -107493;1;0;false;false;;;;;;
                                  -107494;7;0;false;false;0;0;0;;;
                                  -107501;3;0;false;false;;;;;;
                                  -107504;7;0;false;false;0;0;0;;;
                                  -107511;1;0;false;false;;;;;;
                                  -107512;1;0;false;false;0;0;0;;;
                                  -107513;1;0;false;false;;;;;;
                                  -107514;11;0;false;false;0;0;0;;;
                                  -107525;2;0;false;false;;;;;;
                                  -107527;1;0;false;false;0;0;0;;;
                                  -107528;2;0;false;false;;;;;;
                                  -107530;3;0;false;false;63;95;191;;;
                                  -107533;3;0;false;false;;;;;;
                                  -107536;1;0;false;false;63;95;191;;;
                                  -107537;1;0;false;false;;;;;;
                                  -107538;7;0;false;false;63;95;191;;;
                                  -107545;1;0;false;false;;;;;;
                                  -107546;3;0;false;false;63;95;191;;;
                                  -107549;1;0;false;false;;;;;;
                                  -107550;4;0;false;false;63;95;191;;;
                                  -107554;1;0;false;false;;;;;;
                                  -107555;2;0;false;false;63;95;191;;;
                                  -107557;1;0;false;false;;;;;;
                                  -107558;2;0;false;false;63;95;191;;;
                                  -107560;1;0;false;false;;;;;;
                                  -107561;4;0;false;false;63;95;191;;;
                                  -107565;1;0;false;false;;;;;;
                                  -107566;3;0;false;false;63;95;191;;;
                                  -107569;1;0;false;false;;;;;;
                                  -107570;5;0;false;false;63;95;191;;;
                                  -107575;1;0;false;false;;;;;;
                                  -107576;4;0;false;false;63;95;191;;;
                                  -107580;1;0;false;false;;;;;;
                                  -107581;10;0;false;false;63;95;191;;;
                                  -107591;1;0;false;false;;;;;;
                                  -107592;2;0;false;false;63;95;191;;;
                                  -107594;1;0;false;false;;;;;;
                                  -107595;6;0;false;false;63;95;191;;;
                                  -107601;3;0;false;false;;;;;;
                                  -107604;1;0;false;false;63;95;191;;;
                                  -107605;1;0;false;false;;;;;;
                                  -107606;2;0;false;false;63;95;191;;;
                                  -107608;1;0;false;false;;;;;;
                                  -107609;3;0;false;false;63;95;191;;;
                                  -107612;1;0;false;false;;;;;;
                                  -107613;7;0;false;false;63;95;191;;;
                                  -107620;1;0;false;false;;;;;;
                                  -107621;4;0;false;false;63;95;191;;;
                                  -107625;1;0;false;false;;;;;;
                                  -107626;7;0;false;false;63;95;191;;;
                                  -107633;1;0;false;false;;;;;;
                                  -107634;3;0;false;false;63;95;191;;;
                                  -107637;1;0;false;false;;;;;;
                                  -107638;5;0;false;false;63;95;191;;;
                                  -107643;1;0;false;false;;;;;;
                                  -107644;7;0;false;false;63;95;191;;;
                                  -107651;1;0;false;false;;;;;;
                                  -107652;4;0;false;false;63;95;191;;;
                                  -107656;1;0;false;false;;;;;;
                                  -107657;5;0;false;false;63;95;191;;;
                                  -107662;3;0;false;false;;;;;;
                                  -107665;1;0;false;false;63;95;191;;;
                                  -107666;1;0;false;false;;;;;;
                                  -107667;3;0;false;false;63;95;191;;;
                                  -107670;1;0;false;false;;;;;;
                                  -107671;5;0;false;false;63;95;191;;;
                                  -107676;1;0;false;false;;;;;;
                                  -107677;2;0;false;false;63;95;191;;;
                                  -107679;1;0;false;false;;;;;;
                                  -107680;8;0;false;false;63;95;191;;;
                                  -107688;1;0;false;false;;;;;;
                                  -107689;3;0;false;false;63;95;191;;;
                                  -107692;1;0;false;false;;;;;;
                                  -107693;4;0;false;false;63;95;191;;;
                                  -107697;1;0;false;false;;;;;;
                                  -107698;6;0;false;false;63;95;191;;;
                                  -107704;1;0;false;false;;;;;;
                                  -107705;2;0;false;false;63;95;191;;;
                                  -107707;1;0;false;false;;;;;;
                                  -107708;5;0;false;false;63;95;191;;;
                                  -107713;1;0;false;false;;;;;;
                                  -107714;2;0;false;false;63;95;191;;;
                                  -107716;1;0;false;false;;;;;;
                                  -107717;4;0;false;false;63;95;191;;;
                                  -107721;1;0;false;false;;;;;;
                                  -107722;3;0;false;false;63;95;191;;;
                                  -107725;1;0;false;false;;;;;;
                                  -107726;8;0;false;false;63;95;191;;;
                                  -107734;4;0;false;false;;;;;;
                                  -107738;1;0;false;false;63;95;191;;;
                                  -107739;1;0;false;false;;;;;;
                                  -107740;8;0;false;false;63;95;191;;;
                                  -107748;1;0;false;false;;;;;;
                                  -107749;2;0;false;false;63;95;191;;;
                                  -107751;1;0;false;false;;;;;;
                                  -107752;3;0;false;false;63;95;191;;;
                                  -107755;1;0;false;false;;;;;;
                                  -107756;3;0;false;false;63;95;191;;;
                                  -107759;1;0;false;false;;;;;;
                                  -107760;4;0;false;false;63;95;191;;;
                                  -107764;1;0;false;false;;;;;;
                                  -107765;7;0;false;false;63;95;191;;;
                                  -107772;1;0;false;false;;;;;;
                                  -107773;3;0;false;false;63;95;191;;;
                                  -107776;1;0;false;false;;;;;;
                                  -107777;5;0;false;false;63;95;191;;;
                                  -107782;1;0;false;false;;;;;;
                                  -107783;3;0;false;false;63;95;191;;;
                                  -107786;1;0;false;false;;;;;;
                                  -107787;9;0;false;false;63;95;191;;;
                                  -107796;1;0;false;false;;;;;;
                                  -107797;2;0;false;false;63;95;191;;;
                                  -107799;1;0;false;false;;;;;;
                                  -107800;3;0;false;false;63;95;191;;;
                                  -107803;1;0;false;false;;;;;;
                                  -107804;9;0;false;false;63;95;191;;;
                                  -107813;4;0;false;false;;;;;;
                                  -107817;1;0;false;false;63;95;191;;;
                                  -107818;1;0;false;false;;;;;;
                                  -107819;2;0;false;false;63;95;191;;;
                                  -107821;1;0;false;false;;;;;;
                                  -107822;3;0;false;false;63;95;191;;;
                                  -107825;1;0;false;false;;;;;;
                                  -107826;4;0;false;false;63;95;191;;;
                                  -107830;1;0;false;false;;;;;;
                                  -107831;5;0;false;false;63;95;191;;;
                                  -107836;1;0;false;false;;;;;;
                                  -107837;1;0;false;false;63;95;191;;;
                                  -107838;1;0;false;false;;;;;;
                                  -107839;4;0;false;false;63;95;191;;;
                                  -107843;1;0;false;false;;;;;;
                                  -107844;4;0;false;false;63;95;191;;;
                                  -107848;1;0;false;false;;;;;;
                                  -107849;6;0;false;false;63;95;191;;;
                                  -107855;1;0;false;false;;;;;;
                                  -107856;2;0;false;false;63;95;191;;;
                                  -107858;1;0;false;false;;;;;;
                                  -107859;3;0;false;false;63;95;191;;;
                                  -107862;1;0;false;false;;;;;;
                                  -107863;9;0;false;false;63;95;191;;;
                                  -107872;1;0;false;false;;;;;;
                                  -107873;2;0;false;false;63;95;191;;;
                                  -107875;1;0;false;false;;;;;;
                                  -107876;4;0;false;false;63;95;191;;;
                                  -107880;1;0;false;false;;;;;;
                                  -107881;4;0;false;false;63;95;191;;;
                                  -107885;1;0;false;false;;;;;;
                                  -107886;3;0;false;false;63;95;191;;;
                                  -107889;3;0;false;false;;;;;;
                                  -107892;1;0;false;false;63;95;191;;;
                                  -107893;1;0;false;false;;;;;;
                                  -107894;5;0;false;false;63;95;191;;;
                                  -107899;1;0;false;false;;;;;;
                                  -107900;2;0;false;false;63;95;191;;;
                                  -107902;1;0;false;false;;;;;;
                                  -107903;5;0;false;false;63;95;191;;;
                                  -107908;1;0;false;false;;;;;;
                                  -107909;2;0;false;false;63;95;191;;;
                                  -107911;1;0;false;false;;;;;;
                                  -107912;5;0;false;false;63;95;191;;;
                                  -107917;1;0;false;false;;;;;;
                                  -107918;2;0;false;false;63;95;191;;;
                                  -107920;1;0;false;false;;;;;;
                                  -107921;3;0;false;false;63;95;191;;;
                                  -107924;1;0;false;false;;;;;;
                                  -107925;5;0;false;false;63;95;191;;;
                                  -107930;1;0;false;false;;;;;;
                                  -107931;10;0;false;false;63;95;191;;;
                                  -107941;3;0;false;false;;;;;;
                                  -107944;1;0;false;false;63;95;191;;;
                                  -107945;1;0;false;false;;;;;;
                                  -107946;3;0;false;false;127;127;159;;;
                                  -107949;3;0;false;false;;;;;;
                                  -107952;1;0;false;false;63;95;191;;;
                                  -107953;1;0;false;false;;;;;;
                                  -107954;7;0;false;false;63;95;191;;;
                                  -107961;1;0;false;false;;;;;;
                                  -107962;3;0;false;false;63;95;191;;;
                                  -107965;1;0;false;false;;;;;;
                                  -107966;9;0;false;false;63;95;191;;;
                                  -107975;1;0;false;false;;;;;;
                                  -107976;9;0;false;false;63;95;191;;;
                                  -107985;1;0;false;false;;;;;;
                                  -107986;2;0;false;false;63;95;191;;;
                                  -107988;1;0;false;false;;;;;;
                                  -107989;3;0;false;false;63;95;191;;;
                                  -107992;1;0;false;false;;;;;;
                                  -107993;5;0;false;false;63;95;191;;;
                                  -107998;1;0;false;false;;;;;;
                                  -107999;7;0;false;false;63;95;191;;;
                                  -108006;1;0;false;false;;;;;;
                                  -108007;4;0;false;false;63;95;191;;;
                                  -108011;1;0;false;false;;;;;;
                                  -108012;3;0;false;false;63;95;191;;;
                                  -108015;1;0;false;false;;;;;;
                                  -108016;6;0;false;false;63;95;191;;;
                                  -108022;1;0;false;false;;;;;;
                                  -108023;3;0;false;false;63;95;191;;;
                                  -108026;3;0;false;false;;;;;;
                                  -108029;1;0;false;false;63;95;191;;;
                                  -108030;1;0;false;false;;;;;;
                                  -108031;2;0;false;false;63;95;191;;;
                                  -108033;1;0;false;false;;;;;;
                                  -108034;2;0;false;false;63;95;191;;;
                                  -108036;1;0;false;false;;;;;;
                                  -108037;8;0;false;false;63;95;191;;;
                                  -108045;1;0;false;false;;;;;;
                                  -108046;4;0;false;false;63;95;191;;;
                                  -108050;1;0;false;false;;;;;;
                                  -108051;3;0;false;false;63;95;191;;;
                                  -108054;1;0;false;false;;;;;;
                                  -108055;3;0;false;false;63;95;191;;;
                                  -108058;1;0;false;false;;;;;;
                                  -108059;10;0;false;false;63;95;191;;;
                                  -108069;1;0;false;false;;;;;;
                                  -108070;9;0;false;false;63;95;191;;;
                                  -108079;1;0;false;false;;;;;;
                                  -108080;2;0;false;false;63;95;191;;;
                                  -108082;1;0;false;false;;;;;;
                                  -108083;3;0;false;false;63;95;191;;;
                                  -108086;1;0;false;false;;;;;;
                                  -108087;8;0;false;false;63;95;191;;;
                                  -108095;1;0;false;false;;;;;;
                                  -108096;9;0;false;false;63;95;191;;;
                                  -108105;3;0;false;false;;;;;;
                                  -108108;1;0;false;false;63;95;191;;;
                                  -108109;1;0;false;false;;;;;;
                                  -108110;10;0;false;false;63;95;191;;;
                                  -108120;3;0;false;false;;;;;;
                                  -108123;1;0;false;false;63;95;191;;;
                                  -108124;1;0;false;false;;;;;;
                                  -108125;4;0;false;false;127;127;159;;;
                                  -108129;3;0;false;false;;;;;;
                                  -108132;2;0;false;false;63;95;191;;;
                                  -108134;2;0;false;false;;;;;;
                                  -108136;4;1;false;false;127;0;85;;;
                                  -108140;1;0;false;false;;;;;;
                                  -108141;18;0;false;false;0;0;0;;;
                                  -108159;3;1;false;false;127;0;85;;;
                                  -108162;1;0;false;false;;;;;;
                                  -108163;6;0;false;false;0;0;0;;;
                                  -108169;1;0;false;false;;;;;;
                                  -108170;1;0;false;false;0;0;0;;;
                                  -108171;3;0;false;false;;;;;;
                                  -108174;3;1;false;false;127;0;85;;;
                                  -108177;1;0;false;false;;;;;;
                                  -108178;11;0;false;false;0;0;0;;;
                                  -108189;3;0;false;false;;;;;;
                                  -108192;3;1;false;false;127;0;85;;;
                                  -108195;1;0;false;false;;;;;;
                                  -108196;9;0;false;false;0;0;0;;;
                                  -108205;1;0;false;false;;;;;;
                                  -108206;1;0;false;false;0;0;0;;;
                                  -108207;1;0;false;false;;;;;;
                                  -108208;15;0;false;false;0;0;0;;;
                                  -108223;3;0;false;false;;;;;;
                                  -108226;3;1;false;false;127;0;85;;;
                                  -108229;1;0;false;false;;;;;;
                                  -108230;15;0;false;false;0;0;0;;;
                                  -108245;1;0;false;false;;;;;;
                                  -108246;1;0;false;false;0;0;0;;;
                                  -108247;1;0;false;false;;;;;;
                                  -108248;35;0;false;false;0;0;0;;;
                                  -108283;6;0;false;false;;;;;;
                                  -108289;31;0;false;false;63;127;95;;;
                                  -108320;1;0;false;false;;;;;;
                                  -108321;10;0;false;false;0;0;0;;;
                                  -108331;1;0;false;false;;;;;;
                                  -108332;1;0;false;false;0;0;0;;;
                                  -108333;1;0;false;false;;;;;;
                                  -108334;7;0;false;false;0;0;0;;;
                                  -108341;1;0;false;false;;;;;;
                                  -108342;1;0;false;false;0;0;0;;;
                                  -108343;1;0;false;false;;;;;;
                                  -108344;13;0;false;false;0;0;0;;;
                                  -108357;4;0;false;false;;;;;;
                                  -108361;27;0;false;false;0;0;0;;;
                                  -108388;1;0;false;false;;;;;;
                                  -108389;10;0;false;false;0;0;0;;;
                                  -108399;1;0;false;false;;;;;;
                                  -108400;11;0;false;false;0;0;0;;;
                                  -108411;1;0;false;false;;;;;;
                                  -108412;1;0;false;false;0;0;0;;;
                                  -108413;1;0;false;false;;;;;;
                                  -108414;17;0;false;false;0;0;0;;;
                                  -108431;3;0;false;false;;;;;;
                                  -108434;9;0;false;false;0;0;0;;;
                                  -108443;4;1;false;false;127;0;85;;;
                                  -108447;1;0;false;false;0;0;0;;;
                                  -108448;1;0;false;false;;;;;;
                                  -108449;7;0;false;false;0;0;0;;;
                                  -108456;3;0;false;false;;;;;;
                                  -108459;7;0;false;false;0;0;0;;;
                                  -108466;1;0;false;false;;;;;;
                                  -108467;1;0;false;false;0;0;0;;;
                                  -108468;1;0;false;false;;;;;;
                                  -108469;11;0;false;false;0;0;0;;;
                                  -108480;2;0;false;false;;;;;;
                                  -108482;1;0;false;false;0;0;0;;;
                                  -108483;2;0;false;false;;;;;;
                                  -108485;3;0;false;false;63;95;191;;;
                                  -108488;3;0;false;false;;;;;;
                                  -108491;1;0;false;false;63;95;191;;;
                                  -108492;1;0;false;false;;;;;;
                                  -108493;5;0;false;false;63;95;191;;;
                                  -108498;1;0;false;false;;;;;;
                                  -108499;3;0;false;false;63;95;191;;;
                                  -108502;1;0;false;false;;;;;;
                                  -108503;5;0;false;false;63;95;191;;;
                                  -108508;1;0;false;false;;;;;;
                                  -108509;2;0;false;false;63;95;191;;;
                                  -108511;1;0;false;false;;;;;;
                                  -108512;3;0;false;false;63;95;191;;;
                                  -108515;1;0;false;false;;;;;;
                                  -108516;3;0;false;false;63;95;191;;;
                                  -108519;1;0;false;false;;;;;;
                                  -108520;2;0;false;false;63;95;191;;;
                                  -108522;1;0;false;false;;;;;;
                                  -108523;3;0;false;false;63;95;191;;;
                                  -108526;1;0;false;false;;;;;;
                                  -108527;4;0;false;false;63;95;191;;;
                                  -108531;1;0;false;false;;;;;;
                                  -108532;4;0;false;false;63;95;191;;;
                                  -108536;1;0;false;false;;;;;;
                                  -108537;1;0;false;false;63;95;191;;;
                                  -108538;3;0;false;false;;;;;;
                                  -108541;2;0;false;false;63;95;191;;;
                                  -108543;2;0;false;false;;;;;;
                                  -108545;4;1;false;false;127;0;85;;;
                                  -108549;1;0;false;false;;;;;;
                                  -108550;21;0;false;false;0;0;0;;;
                                  -108571;1;0;false;false;;;;;;
                                  -108572;1;0;false;false;0;0;0;;;
                                  -108573;3;0;false;false;;;;;;
                                  -108576;3;1;false;false;127;0;85;;;
                                  -108579;1;0;false;false;;;;;;
                                  -108580;14;0;false;false;0;0;0;;;
                                  -108594;1;0;false;false;;;;;;
                                  -108595;1;0;false;false;0;0;0;;;
                                  -108596;1;0;false;false;;;;;;
                                  -108597;24;0;false;false;0;0;0;;;
                                  -108621;3;0;false;false;;;;;;
                                  -108624;71;0;false;false;63;127;95;;;
                                  -108695;1;0;false;false;;;;;;
                                  -108696;9;0;false;false;0;0;0;;;
                                  -108705;1;0;false;false;;;;;;
                                  -108706;1;0;false;false;0;0;0;;;
                                  -108707;1;0;false;false;;;;;;
                                  -108708;5;1;false;false;127;0;85;;;
                                  -108713;1;0;false;false;0;0;0;;;
                                  -108714;3;0;false;false;;;;;;
                                  -108717;71;0;false;false;63;127;95;;;
                                  -108788;1;0;false;false;;;;;;
                                  -108789;45;0;false;false;63;127;95;;;
                                  -108834;1;0;false;false;;;;;;
                                  -108835;2;1;false;false;127;0;85;;;
                                  -108837;1;0;false;false;;;;;;
                                  -108838;16;0;false;false;0;0;0;;;
                                  -108854;1;0;false;false;;;;;;
                                  -108855;2;0;false;false;0;0;0;;;
                                  -108857;5;0;false;false;;;;;;
                                  -108862;36;0;false;false;0;0;0;;;
                                  -108898;1;0;false;false;;;;;;
                                  -108899;2;0;false;false;0;0;0;;;
                                  -108901;1;0;false;false;;;;;;
                                  -108902;40;0;false;false;0;0;0;;;
                                  -108942;1;0;false;false;;;;;;
                                  -108943;1;0;false;false;0;0;0;;;
                                  -108944;4;0;false;false;;;;;;
                                  -108948;11;0;false;false;0;0;0;;;
                                  -108959;1;0;false;false;;;;;;
                                  -108960;1;0;false;false;0;0;0;;;
                                  -108961;1;0;false;false;;;;;;
                                  -108962;15;0;false;false;0;0;0;;;
                                  -108977;4;0;false;false;;;;;;
                                  -108981;12;0;false;false;0;0;0;;;
                                  -108993;3;0;false;false;;;;;;
                                  -108996;1;0;false;false;0;0;0;;;
                                  -108997;2;0;false;false;;;;;;
                                  -108999;1;0;false;false;0;0;0;;;
                                  -109000;2;0;false;false;;;;;;
                                  -109002;3;0;false;false;63;95;191;;;
                                  -109005;3;0;false;false;;;;;;
                                  -109008;1;0;false;false;63;95;191;;;
                                  -109009;1;0;false;false;;;;;;
                                  -109010;5;0;false;false;63;95;191;;;
                                  -109015;1;0;false;false;;;;;;
                                  -109016;3;0;false;false;63;95;191;;;
                                  -109019;1;0;false;false;;;;;;
                                  -109020;5;0;false;false;63;95;191;;;
                                  -109025;1;0;false;false;;;;;;
                                  -109026;2;0;false;false;63;95;191;;;
                                  -109028;1;0;false;false;;;;;;
                                  -109029;3;0;false;false;63;95;191;;;
                                  -109032;1;0;false;false;;;;;;
                                  -109033;5;0;false;false;63;95;191;;;
                                  -109038;1;0;false;false;;;;;;
                                  -109039;2;0;false;false;63;95;191;;;
                                  -109041;1;0;false;false;;;;;;
                                  -109042;3;0;false;false;63;95;191;;;
                                  -109045;1;0;false;false;;;;;;
                                  -109046;8;0;false;false;63;95;191;;;
                                  -109054;1;0;false;false;;;;;;
                                  -109055;5;0;false;false;63;95;191;;;
                                  -109060;3;0;false;false;;;;;;
                                  -109063;2;0;false;false;63;95;191;;;
                                  -109065;2;0;false;false;;;;;;
                                  -109067;4;1;false;false;127;0;85;;;
                                  -109071;1;0;false;false;;;;;;
                                  -109072;25;0;false;false;0;0;0;;;
                                  -109097;1;0;false;false;;;;;;
                                  -109098;1;0;false;false;0;0;0;;;
                                  -109099;3;0;false;false;;;;;;
                                  -109102;3;1;false;false;127;0;85;;;
                                  -109105;1;0;false;false;;;;;;
                                  -109106;10;0;false;false;0;0;0;;;
                                  -109116;4;0;false;false;;;;;;
                                  -109120;9;0;false;false;0;0;0;;;
                                  -109129;1;0;false;false;;;;;;
                                  -109130;1;0;false;false;0;0;0;;;
                                  -109131;1;0;false;false;;;;;;
                                  -109132;5;1;false;false;127;0;85;;;
                                  -109137;1;0;false;false;0;0;0;;;
                                  -109138;3;0;false;false;;;;;;
                                  -109141;11;0;false;false;0;0;0;;;
                                  -109152;1;0;false;false;;;;;;
                                  -109153;1;0;false;false;0;0;0;;;
                                  -109154;1;0;false;false;;;;;;
                                  -109155;26;0;false;false;0;0;0;;;
                                  -109181;3;0;false;false;;;;;;
                                  -109184;9;0;false;false;0;0;0;;;
                                  -109193;1;0;false;false;;;;;;
                                  -109194;1;0;false;false;0;0;0;;;
                                  -109195;1;0;false;false;;;;;;
                                  -109196;37;0;false;false;0;0;0;;;
                                  -109233;3;0;false;false;;;;;;
                                  -109236;54;0;false;false;63;127;95;;;
                                  -109290;1;0;false;false;;;;;;
                                  -109291;62;0;false;false;63;127;95;;;
                                  -109353;1;0;false;false;;;;;;
                                  -109354;2;1;false;false;127;0;85;;;
                                  -109356;1;0;false;false;;;;;;
                                  -109357;9;0;false;false;0;0;0;;;
                                  -109366;1;0;false;false;;;;;;
                                  -109367;2;0;false;false;0;0;0;;;
                                  -109369;1;0;false;false;;;;;;
                                  -109370;9;0;false;false;0;0;0;;;
                                  -109379;1;0;false;false;;;;;;
                                  -109380;1;0;false;false;0;0;0;;;
                                  -109381;1;0;false;false;;;;;;
                                  -109382;22;0;false;false;0;0;0;;;
                                  -109404;1;0;false;false;;;;;;
                                  -109405;1;0;false;false;0;0;0;;;
                                  -109406;1;0;false;false;;;;;;
                                  -109407;1;0;false;false;0;0;0;;;
                                  -109408;1;0;false;false;;;;;;
                                  -109409;2;0;false;false;0;0;0;;;
                                  -109411;4;0;false;false;;;;;;
                                  -109415;11;0;false;false;0;0;0;;;
                                  -109426;1;0;false;false;;;;;;
                                  -109427;2;0;false;false;0;0;0;;;
                                  -109429;1;0;false;false;;;;;;
                                  -109430;33;0;false;false;0;0;0;;;
                                  -109463;1;0;false;false;;;;;;
                                  -109464;1;0;false;false;0;0;0;;;
                                  -109465;1;0;false;false;;;;;;
                                  -109466;3;0;false;false;0;0;0;;;
                                  -109469;1;0;false;false;;;;;;
                                  -109470;1;0;false;false;0;0;0;;;
                                  -109471;4;0;false;false;;;;;;
                                  -109475;12;0;false;false;0;0;0;;;
                                  -109487;3;0;false;false;;;;;;
                                  -109490;1;0;false;false;0;0;0;;;
                                  -109491;3;0;false;false;;;;;;
                                  -109494;21;0;false;false;0;0;0;;;
                                  -109515;2;0;false;false;;;;;;
                                  -109517;1;0;false;false;0;0;0;;;
                                  -109518;2;0;false;false;;;;;;
                                  -109520;3;0;false;false;63;95;191;;;
                                  -109523;3;0;false;false;;;;;;
                                  -109526;1;0;false;false;63;95;191;;;
                                  -109527;1;0;false;false;;;;;;
                                  -109528;5;0;false;false;63;95;191;;;
                                  -109533;1;0;false;false;;;;;;
                                  -109534;3;0;false;false;63;95;191;;;
                                  -109537;1;0;false;false;;;;;;
                                  -109538;5;0;false;false;63;95;191;;;
                                  -109543;1;0;false;false;;;;;;
                                  -109544;3;0;false;false;63;95;191;;;
                                  -109547;1;0;false;false;;;;;;
                                  -109548;9;0;false;false;63;95;191;;;
                                  -109557;1;0;false;false;;;;;;
                                  -109558;2;0;false;false;63;95;191;;;
                                  -109560;1;0;false;false;;;;;;
                                  -109561;3;0;false;false;63;95;191;;;
                                  -109564;1;0;false;false;;;;;;
                                  -109565;5;0;false;false;63;95;191;;;
                                  -109570;2;0;false;false;;;;;;
                                  -109572;2;0;false;false;63;95;191;;;
                                  -109574;1;0;false;false;;;;;;
                                  -109575;3;0;false;false;63;95;191;;;
                                  -109578;1;0;false;false;;;;;;
                                  -109579;2;0;false;false;63;95;191;;;
                                  -109581;1;0;false;false;;;;;;
                                  -109582;2;0;false;false;63;95;191;;;
                                  -109584;1;0;false;false;;;;;;
                                  -109585;3;0;false;false;63;95;191;;;
                                  -109588;1;0;false;false;;;;;;
                                  -109589;8;0;false;false;63;95;191;;;
                                  -109597;1;0;false;false;;;;;;
                                  -109598;5;0;false;false;63;95;191;;;
                                  -109603;3;0;false;false;;;;;;
                                  -109606;1;0;false;false;63;95;191;;;
                                  -109607;1;0;false;false;;;;;;
                                  -109608;4;0;false;false;63;95;191;;;
                                  -109612;1;0;false;false;;;;;;
                                  -109613;2;0;false;false;63;95;191;;;
                                  -109615;1;0;false;false;;;;;;
                                  -109616;1;0;false;false;63;95;191;;;
                                  -109617;1;0;false;false;;;;;;
                                  -109618;4;0;false;false;63;95;191;;;
                                  -109622;1;0;false;false;;;;;;
                                  -109623;6;0;false;false;63;95;191;;;
                                  -109629;1;0;false;false;;;;;;
                                  -109630;3;0;false;false;63;95;191;;;
                                  -109633;1;0;false;false;;;;;;
                                  -109634;2;0;false;false;63;95;191;;;
                                  -109636;1;0;false;false;;;;;;
                                  -109637;1;0;false;false;63;95;191;;;
                                  -109638;1;0;false;false;;;;;;
                                  -109639;3;0;false;false;63;95;191;;;
                                  -109642;1;0;false;false;;;;;;
                                  -109643;9;0;false;false;63;95;191;;;
                                  -109652;1;0;false;false;;;;;;
                                  -109653;3;0;false;false;63;95;191;;;
                                  -109656;1;0;false;false;;;;;;
                                  -109657;5;0;false;false;63;95;191;;;
                                  -109662;1;0;false;false;;;;;;
                                  -109663;2;0;false;false;63;95;191;;;
                                  -109665;1;0;false;false;;;;;;
                                  -109666;5;0;false;false;63;95;191;;;
                                  -109671;1;0;false;false;;;;;;
                                  -109672;2;0;false;false;63;95;191;;;
                                  -109674;1;0;false;false;;;;;;
                                  -109675;3;0;false;false;63;95;191;;;
                                  -109678;4;0;false;false;;;;;;
                                  -109682;1;0;false;false;63;95;191;;;
                                  -109683;1;0;false;false;;;;;;
                                  -109684;9;0;false;false;63;95;191;;;
                                  -109693;1;0;false;false;;;;;;
                                  -109694;2;0;false;false;63;95;191;;;
                                  -109696;1;0;false;false;;;;;;
                                  -109697;3;0;false;false;63;95;191;;;
                                  -109700;1;0;false;false;;;;;;
                                  -109701;3;0;false;false;63;95;191;;;
                                  -109704;1;0;false;false;;;;;;
                                  -109705;7;0;false;false;63;95;191;;;
                                  -109712;1;0;false;false;;;;;;
                                  -109713;9;0;false;false;63;95;191;;;
                                  -109722;1;0;false;false;;;;;;
                                  -109723;6;0;false;false;63;95;191;;;
                                  -109729;1;0;false;false;;;;;;
                                  -109730;3;0;false;false;63;95;191;;;
                                  -109733;1;0;false;false;;;;;;
                                  -109734;4;0;false;false;63;95;191;;;
                                  -109738;1;0;false;false;;;;;;
                                  -109739;3;0;false;false;63;95;191;;;
                                  -109742;1;0;false;false;;;;;;
                                  -109743;9;0;false;false;63;95;191;;;
                                  -109752;1;0;false;false;;;;;;
                                  -109753;2;0;false;false;63;95;191;;;
                                  -109755;1;0;false;false;;;;;;
                                  -109756;3;0;false;false;63;95;191;;;
                                  -109759;4;0;false;false;;;;;;
                                  -109763;1;0;false;false;63;95;191;;;
                                  -109764;1;0;false;false;;;;;;
                                  -109765;4;0;false;false;63;95;191;;;
                                  -109769;1;0;false;false;;;;;;
                                  -109770;9;0;false;false;63;95;191;;;
                                  -109779;1;0;false;false;;;;;;
                                  -109780;4;0;false;false;63;95;191;;;
                                  -109784;1;0;false;false;;;;;;
                                  -109785;7;0;false;false;63;95;191;;;
                                  -109792;1;0;false;false;;;;;;
                                  -109793;4;0;false;false;63;95;191;;;
                                  -109797;1;0;false;false;;;;;;
                                  -109798;3;0;false;false;63;95;191;;;
                                  -109801;1;0;false;false;;;;;;
                                  -109802;2;0;false;false;63;95;191;;;
                                  -109804;1;0;false;false;;;;;;
                                  -109805;1;0;false;false;63;95;191;;;
                                  -109806;1;0;false;false;;;;;;
                                  -109807;3;0;false;false;63;95;191;;;
                                  -109810;1;0;false;false;;;;;;
                                  -109811;9;0;false;false;63;95;191;;;
                                  -109820;3;0;false;false;;;;;;
                                  -109823;2;0;false;false;63;95;191;;;
                                  -109825;2;0;false;false;;;;;;
                                  -109827;4;1;false;false;127;0;85;;;
                                  -109831;1;0;false;false;;;;;;
                                  -109832;18;0;false;false;0;0;0;;;
                                  -109850;1;0;false;false;;;;;;
                                  -109851;1;0;false;false;0;0;0;;;
                                  -109852;3;0;false;false;;;;;;
                                  -109855;11;0;false;false;0;0;0;;;
                                  -109866;1;0;false;false;;;;;;
                                  -109867;1;0;false;false;0;0;0;;;
                                  -109868;1;0;false;false;;;;;;
                                  -109869;31;0;false;false;0;0;0;;;
                                  -109900;1;0;false;false;;;;;;
                                  -109901;16;0;false;false;0;0;0;;;
                                  -109917;3;0;false;false;;;;;;
                                  -109920;12;0;false;false;0;0;0;;;
                                  -109932;2;0;false;false;;;;;;
                                  -109934;1;0;false;false;0;0;0;;;
                                  -109935;2;0;false;false;;;;;;
                                  -109937;3;0;false;false;63;95;191;;;
                                  -109940;3;0;false;false;;;;;;
                                  -109943;1;0;false;false;63;95;191;;;
                                  -109944;1;0;false;false;;;;;;
                                  -109945;5;0;false;false;63;95;191;;;
                                  -109950;1;0;false;false;;;;;;
                                  -109951;3;0;false;false;63;95;191;;;
                                  -109954;1;0;false;false;;;;;;
                                  -109955;5;0;false;false;63;95;191;;;
                                  -109960;1;0;false;false;;;;;;
                                  -109961;3;0;false;false;63;95;191;;;
                                  -109964;1;0;false;false;;;;;;
                                  -109965;9;0;false;false;63;95;191;;;
                                  -109974;1;0;false;false;;;;;;
                                  -109975;2;0;false;false;63;95;191;;;
                                  -109977;1;0;false;false;;;;;;
                                  -109978;3;0;false;false;63;95;191;;;
                                  -109981;1;0;false;false;;;;;;
                                  -109982;6;0;false;false;63;95;191;;;
                                  -109988;2;0;false;false;;;;;;
                                  -109990;2;0;false;false;63;95;191;;;
                                  -109992;1;0;false;false;;;;;;
                                  -109993;3;0;false;false;63;95;191;;;
                                  -109996;1;0;false;false;;;;;;
                                  -109997;2;0;false;false;63;95;191;;;
                                  -109999;1;0;false;false;;;;;;
                                  -110000;2;0;false;false;63;95;191;;;
                                  -110002;1;0;false;false;;;;;;
                                  -110003;3;0;false;false;63;95;191;;;
                                  -110006;1;0;false;false;;;;;;
                                  -110007;4;0;false;false;63;95;191;;;
                                  -110011;1;0;false;false;;;;;;
                                  -110012;5;0;false;false;63;95;191;;;
                                  -110017;3;0;false;false;;;;;;
                                  -110020;1;0;false;false;63;95;191;;;
                                  -110021;1;0;false;false;;;;;;
                                  -110022;4;0;false;false;63;95;191;;;
                                  -110026;1;0;false;false;;;;;;
                                  -110027;2;0;false;false;63;95;191;;;
                                  -110029;1;0;false;false;;;;;;
                                  -110030;1;0;false;false;63;95;191;;;
                                  -110031;1;0;false;false;;;;;;
                                  -110032;4;0;false;false;63;95;191;;;
                                  -110036;1;0;false;false;;;;;;
                                  -110037;6;0;false;false;63;95;191;;;
                                  -110043;1;0;false;false;;;;;;
                                  -110044;3;0;false;false;63;95;191;;;
                                  -110047;1;0;false;false;;;;;;
                                  -110048;2;0;false;false;63;95;191;;;
                                  -110050;1;0;false;false;;;;;;
                                  -110051;1;0;false;false;63;95;191;;;
                                  -110052;1;0;false;false;;;;;;
                                  -110053;3;0;false;false;63;95;191;;;
                                  -110056;1;0;false;false;;;;;;
                                  -110057;9;0;false;false;63;95;191;;;
                                  -110066;1;0;false;false;;;;;;
                                  -110067;3;0;false;false;63;95;191;;;
                                  -110070;1;0;false;false;;;;;;
                                  -110071;5;0;false;false;63;95;191;;;
                                  -110076;1;0;false;false;;;;;;
                                  -110077;2;0;false;false;63;95;191;;;
                                  -110079;1;0;false;false;;;;;;
                                  -110080;5;0;false;false;63;95;191;;;
                                  -110085;1;0;false;false;;;;;;
                                  -110086;2;0;false;false;63;95;191;;;
                                  -110088;1;0;false;false;;;;;;
                                  -110089;3;0;false;false;63;95;191;;;
                                  -110092;4;0;false;false;;;;;;
                                  -110096;1;0;false;false;63;95;191;;;
                                  -110097;1;0;false;false;;;;;;
                                  -110098;3;0;false;false;63;95;191;;;
                                  -110101;1;0;false;false;;;;;;
                                  -110102;2;0;false;false;63;95;191;;;
                                  -110104;1;0;false;false;;;;;;
                                  -110105;3;0;false;false;63;95;191;;;
                                  -110108;1;0;false;false;;;;;;
                                  -110109;3;0;false;false;63;95;191;;;
                                  -110112;1;0;false;false;;;;;;
                                  -110113;7;0;false;false;63;95;191;;;
                                  -110120;1;0;false;false;;;;;;
                                  -110121;9;0;false;false;63;95;191;;;
                                  -110130;1;0;false;false;;;;;;
                                  -110131;5;0;false;false;63;95;191;;;
                                  -110136;1;0;false;false;;;;;;
                                  -110137;3;0;false;false;63;95;191;;;
                                  -110140;1;0;false;false;;;;;;
                                  -110141;4;0;false;false;63;95;191;;;
                                  -110145;1;0;false;false;;;;;;
                                  -110146;3;0;false;false;63;95;191;;;
                                  -110149;1;0;false;false;;;;;;
                                  -110150;9;0;false;false;63;95;191;;;
                                  -110159;1;0;false;false;;;;;;
                                  -110160;2;0;false;false;63;95;191;;;
                                  -110162;1;0;false;false;;;;;;
                                  -110163;3;0;false;false;63;95;191;;;
                                  -110166;4;0;false;false;;;;;;
                                  -110170;1;0;false;false;63;95;191;;;
                                  -110171;1;0;false;false;;;;;;
                                  -110172;5;0;false;false;63;95;191;;;
                                  -110177;1;0;false;false;;;;;;
                                  -110178;9;0;false;false;63;95;191;;;
                                  -110187;1;0;false;false;;;;;;
                                  -110188;5;0;false;false;63;95;191;;;
                                  -110193;1;0;false;false;;;;;;
                                  -110194;7;0;false;false;63;95;191;;;
                                  -110201;1;0;false;false;;;;;;
                                  -110202;4;0;false;false;63;95;191;;;
                                  -110206;1;0;false;false;;;;;;
                                  -110207;3;0;false;false;63;95;191;;;
                                  -110210;1;0;false;false;;;;;;
                                  -110211;2;0;false;false;63;95;191;;;
                                  -110213;1;0;false;false;;;;;;
                                  -110214;1;0;false;false;63;95;191;;;
                                  -110215;1;0;false;false;;;;;;
                                  -110216;3;0;false;false;63;95;191;;;
                                  -110219;1;0;false;false;;;;;;
                                  -110220;9;0;false;false;63;95;191;;;
                                  -110229;3;0;false;false;;;;;;
                                  -110232;2;0;false;false;63;95;191;;;
                                  -110234;2;0;false;false;;;;;;
                                  -110236;4;1;false;false;127;0;85;;;
                                  -110240;1;0;false;false;;;;;;
                                  -110241;14;0;false;false;0;0;0;;;
                                  -110255;1;0;false;false;;;;;;
                                  -110256;1;0;false;false;0;0;0;;;
                                  -110257;3;0;false;false;;;;;;
                                  -110260;11;0;false;false;0;0;0;;;
                                  -110271;1;0;false;false;;;;;;
                                  -110272;1;0;false;false;0;0;0;;;
                                  -110273;1;0;false;false;;;;;;
                                  -110274;27;0;false;false;0;0;0;;;
                                  -110301;1;0;false;false;;;;;;
                                  -110302;16;0;false;false;0;0;0;;;
                                  -110318;3;0;false;false;;;;;;
                                  -110321;12;0;false;false;0;0;0;;;
                                  -110333;2;0;false;false;;;;;;
                                  -110335;1;0;false;false;0;0;0;;;
                                  -110336;2;0;false;false;;;;;;
                                  -110338;3;0;false;false;63;95;191;;;
                                  -110341;3;0;false;false;;;;;;
                                  -110344;1;0;false;false;63;95;191;;;
                                  -110345;1;0;false;false;;;;;;
                                  -110346;5;0;false;false;63;95;191;;;
                                  -110351;1;0;false;false;;;;;;
                                  -110352;3;0;false;false;63;95;191;;;
                                  -110355;1;0;false;false;;;;;;
                                  -110356;5;0;false;false;63;95;191;;;
                                  -110361;1;0;false;false;;;;;;
                                  -110362;2;0;false;false;63;95;191;;;
                                  -110364;1;0;false;false;;;;;;
                                  -110365;3;0;false;false;63;95;191;;;
                                  -110368;1;0;false;false;;;;;;
                                  -110369;3;0;false;false;63;95;191;;;
                                  -110372;1;0;false;false;;;;;;
                                  -110373;2;0;false;false;63;95;191;;;
                                  -110375;1;0;false;false;;;;;;
                                  -110376;3;0;false;false;63;95;191;;;
                                  -110379;1;0;false;false;;;;;;
                                  -110380;4;0;false;false;63;95;191;;;
                                  -110384;1;0;false;false;;;;;;
                                  -110385;5;0;false;false;63;95;191;;;
                                  -110390;3;0;false;false;;;;;;
                                  -110393;1;0;false;false;63;95;191;;;
                                  -110394;1;0;false;false;;;;;;
                                  -110395;2;0;false;false;63;95;191;;;
                                  -110397;1;0;false;false;;;;;;
                                  -110398;1;0;false;false;63;95;191;;;
                                  -110399;1;0;false;false;;;;;;
                                  -110400;9;0;false;false;63;95;191;;;
                                  -110409;1;0;false;false;;;;;;
                                  -110410;7;0;false;false;63;95;191;;;
                                  -110417;1;0;false;false;;;;;;
                                  -110418;4;0;false;false;63;95;191;;;
                                  -110422;1;0;false;false;;;;;;
                                  -110423;3;0;false;false;63;95;191;;;
                                  -110426;1;0;false;false;;;;;;
                                  -110427;5;0;false;false;63;95;191;;;
                                  -110432;1;0;false;false;;;;;;
                                  -110433;2;0;false;false;63;95;191;;;
                                  -110435;1;0;false;false;;;;;;
                                  -110436;3;0;false;false;63;95;191;;;
                                  -110439;1;0;false;false;;;;;;
                                  -110440;3;0;false;false;63;95;191;;;
                                  -110443;1;0;false;false;;;;;;
                                  -110444;2;0;false;false;63;95;191;;;
                                  -110446;1;0;false;false;;;;;;
                                  -110447;3;0;false;false;63;95;191;;;
                                  -110450;1;0;false;false;;;;;;
                                  -110451;9;0;false;false;63;95;191;;;
                                  -110460;3;0;false;false;;;;;;
                                  -110463;1;0;false;false;63;95;191;;;
                                  -110464;1;0;false;false;;;;;;
                                  -110465;3;0;false;false;63;95;191;;;
                                  -110468;1;0;false;false;;;;;;
                                  -110469;6;0;false;false;63;95;191;;;
                                  -110475;1;0;false;false;;;;;;
                                  -110476;3;0;false;false;63;95;191;;;
                                  -110479;1;0;false;false;;;;;;
                                  -110480;10;0;false;false;63;95;191;;;
                                  -110490;3;0;false;false;;;;;;
                                  -110493;2;0;false;false;63;95;191;;;
                                  -110495;2;0;false;false;;;;;;
                                  -110497;4;1;false;false;127;0;85;;;
                                  -110501;1;0;false;false;;;;;;
                                  -110502;12;0;false;false;0;0;0;;;
                                  -110514;1;0;false;false;;;;;;
                                  -110515;1;0;false;false;0;0;0;;;
                                  -110516;3;0;false;false;;;;;;
                                  -110519;2;1;false;false;127;0;85;;;
                                  -110521;1;0;false;false;;;;;;
                                  -110522;12;0;false;false;0;0;0;;;
                                  -110534;1;0;false;false;;;;;;
                                  -110535;1;0;false;false;0;0;0;;;
                                  -110536;1;0;false;false;;;;;;
                                  -110537;11;0;false;false;0;0;0;;;
                                  -110548;1;0;false;false;;;;;;
                                  -110549;1;0;false;false;0;0;0;;;
                                  -110550;1;0;false;false;;;;;;
                                  -110551;2;0;false;false;0;0;0;;;
                                  -110553;1;0;false;false;;;;;;
                                  -110554;1;0;false;false;0;0;0;;;
                                  -110555;4;0;false;false;;;;;;
                                  -110559;3;1;false;false;127;0;85;;;
                                  -110562;1;0;false;false;;;;;;
                                  -110563;10;0;false;false;0;0;0;;;
                                  -110573;8;0;false;false;;;;;;
                                  -110581;11;0;false;false;0;0;0;;;
                                  -110592;1;0;false;false;;;;;;
                                  -110593;1;0;false;false;0;0;0;;;
                                  -110594;1;0;false;false;;;;;;
                                  -110595;12;0;false;false;0;0;0;;;
                                  -110607;4;0;false;false;;;;;;
                                  -110611;9;0;false;false;0;0;0;;;
                                  -110620;1;0;false;false;;;;;;
                                  -110621;1;0;false;false;0;0;0;;;
                                  -110622;1;0;false;false;;;;;;
                                  -110623;15;0;false;false;0;0;0;;;
                                  -110638;4;0;false;false;;;;;;
                                  -110642;21;0;false;false;0;0;0;;;
                                  -110663;3;0;false;false;;;;;;
                                  -110666;1;0;false;false;0;0;0;;;
                                  -110667;3;0;false;false;;;;;;
                                  -110670;4;1;false;false;127;0;85;;;
                                  -110674;1;0;false;false;;;;;;
                                  -110675;1;0;false;false;0;0;0;;;
                                  -110676;4;0;false;false;;;;;;
                                  -110680;22;0;false;false;0;0;0;;;
                                  -110702;3;0;false;false;;;;;;
                                  -110705;1;0;false;false;0;0;0;;;
                                  -110706;2;0;false;false;;;;;;
                                  -110708;1;0;false;false;0;0;0;;;
                                  -110709;2;0;false;false;;;;;;
                                  -110711;3;0;false;false;63;95;191;;;
                                  -110714;3;0;false;false;;;;;;
                                  -110717;1;0;false;false;63;95;191;;;
                                  -110718;1;0;false;false;;;;;;
                                  -110719;5;0;false;false;63;95;191;;;
                                  -110724;1;0;false;false;;;;;;
                                  -110725;3;0;false;false;63;95;191;;;
                                  -110728;1;0;false;false;;;;;;
                                  -110729;5;0;false;false;63;95;191;;;
                                  -110734;1;0;false;false;;;;;;
                                  -110735;2;0;false;false;63;95;191;;;
                                  -110737;1;0;false;false;;;;;;
                                  -110738;3;0;false;false;63;95;191;;;
                                  -110741;1;0;false;false;;;;;;
                                  -110742;5;0;false;false;63;95;191;;;
                                  -110747;1;0;false;false;;;;;;
                                  -110748;2;0;false;false;63;95;191;;;
                                  -110750;1;0;false;false;;;;;;
                                  -110751;3;0;false;false;63;95;191;;;
                                  -110754;1;0;false;false;;;;;;
                                  -110755;8;0;false;false;63;95;191;;;
                                  -110763;1;0;false;false;;;;;;
                                  -110764;5;0;false;false;63;95;191;;;
                                  -110769;3;0;false;false;;;;;;
                                  -110772;1;0;false;false;63;95;191;;;
                                  -110773;1;0;false;false;;;;;;
                                  -110774;2;0;false;false;63;95;191;;;
                                  -110776;1;0;false;false;;;;;;
                                  -110777;1;0;false;false;63;95;191;;;
                                  -110778;1;0;false;false;;;;;;
                                  -110779;9;0;false;false;63;95;191;;;
                                  -110788;1;0;false;false;;;;;;
                                  -110789;7;0;false;false;63;95;191;;;
                                  -110796;1;0;false;false;;;;;;
                                  -110797;4;0;false;false;63;95;191;;;
                                  -110801;1;0;false;false;;;;;;
                                  -110802;3;0;false;false;63;95;191;;;
                                  -110805;1;0;false;false;;;;;;
                                  -110806;5;0;false;false;63;95;191;;;
                                  -110811;1;0;false;false;;;;;;
                                  -110812;2;0;false;false;63;95;191;;;
                                  -110814;1;0;false;false;;;;;;
                                  -110815;3;0;false;false;63;95;191;;;
                                  -110818;1;0;false;false;;;;;;
                                  -110819;5;0;false;false;63;95;191;;;
                                  -110824;1;0;false;false;;;;;;
                                  -110825;2;0;false;false;63;95;191;;;
                                  -110827;1;0;false;false;;;;;;
                                  -110828;3;0;false;false;63;95;191;;;
                                  -110831;1;0;false;false;;;;;;
                                  -110832;9;0;false;false;63;95;191;;;
                                  -110841;3;0;false;false;;;;;;
                                  -110844;1;0;false;false;63;95;191;;;
                                  -110845;1;0;false;false;;;;;;
                                  -110846;3;0;false;false;63;95;191;;;
                                  -110849;1;0;false;false;;;;;;
                                  -110850;6;0;false;false;63;95;191;;;
                                  -110856;1;0;false;false;;;;;;
                                  -110857;3;0;false;false;63;95;191;;;
                                  -110860;1;0;false;false;;;;;;
                                  -110861;10;0;false;false;63;95;191;;;
                                  -110871;3;0;false;false;;;;;;
                                  -110874;2;0;false;false;63;95;191;;;
                                  -110876;2;0;false;false;;;;;;
                                  -110878;4;1;false;false;127;0;85;;;
                                  -110882;1;0;false;false;;;;;;
                                  -110883;16;0;false;false;0;0;0;;;
                                  -110899;1;0;false;false;;;;;;
                                  -110900;1;0;false;false;0;0;0;;;
                                  -110901;3;0;false;false;;;;;;
                                  -110904;2;1;false;false;127;0;85;;;
                                  -110906;1;0;false;false;;;;;;
                                  -110907;12;0;false;false;0;0;0;;;
                                  -110919;1;0;false;false;;;;;;
                                  -110920;1;0;false;false;0;0;0;;;
                                  -110921;1;0;false;false;;;;;;
                                  -110922;11;0;false;false;0;0;0;;;
                                  -110933;1;0;false;false;;;;;;
                                  -110934;1;0;false;false;0;0;0;;;
                                  -110935;1;0;false;false;;;;;;
                                  -110936;2;0;false;false;0;0;0;;;
                                  -110938;1;0;false;false;;;;;;
                                  -110939;1;0;false;false;0;0;0;;;
                                  -110940;4;0;false;false;;;;;;
                                  -110944;3;1;false;false;127;0;85;;;
                                  -110947;1;0;false;false;;;;;;
                                  -110948;10;0;false;false;0;0;0;;;
                                  -110958;8;0;false;false;;;;;;
                                  -110966;11;0;false;false;0;0;0;;;
                                  -110977;1;0;false;false;;;;;;
                                  -110978;1;0;false;false;0;0;0;;;
                                  -110979;1;0;false;false;;;;;;
                                  -110980;12;0;false;false;0;0;0;;;
                                  -110992;4;0;false;false;;;;;;
                                  -110996;9;0;false;false;0;0;0;;;
                                  -111005;1;0;false;false;;;;;;
                                  -111006;1;0;false;false;0;0;0;;;
                                  -111007;1;0;false;false;;;;;;
                                  -111008;15;0;false;false;0;0;0;;;
                                  -111023;4;0;false;false;;;;;;
                                  -111027;21;0;false;false;0;0;0;;;
                                  -111048;3;0;false;false;;;;;;
                                  -111051;1;0;false;false;0;0;0;;;
                                  -111052;3;0;false;false;;;;;;
                                  -111055;4;1;false;false;127;0;85;;;
                                  -111059;1;0;false;false;;;;;;
                                  -111060;1;0;false;false;0;0;0;;;
                                  -111061;4;0;false;false;;;;;;
                                  -111065;26;0;false;false;0;0;0;;;
                                  -111091;3;0;false;false;;;;;;
                                  -111094;1;0;false;false;0;0;0;;;
                                  -111095;2;0;false;false;;;;;;
                                  -111097;1;0;false;false;0;0;0;;;
                                  -111098;2;0;false;false;;;;;;
                                  -111100;3;0;false;false;63;95;191;;;
                                  -111103;3;0;false;false;;;;;;
                                  -111106;1;0;false;false;63;95;191;;;
                                  -111107;1;0;false;false;;;;;;
                                  -111108;5;0;false;false;63;95;191;;;
                                  -111113;1;0;false;false;;;;;;
                                  -111114;3;0;false;false;63;95;191;;;
                                  -111117;1;0;false;false;;;;;;
                                  -111118;9;0;false;false;63;95;191;;;
                                  -111127;1;0;false;false;;;;;;
                                  -111128;10;0;false;false;63;95;191;;;
                                  -111138;3;0;false;false;;;;;;
                                  -111141;1;0;false;false;63;95;191;;;
                                  -111142;1;0;false;false;;;;;;
                                  -111143;4;0;false;false;63;95;191;;;
                                  -111147;1;0;false;false;;;;;;
                                  -111148;8;0;false;false;63;95;191;;;
                                  -111156;1;0;false;false;;;;;;
                                  -111157;7;0;false;false;63;95;191;;;
                                  -111164;1;0;false;false;;;;;;
                                  -111165;12;0;false;false;63;95;191;;;
                                  -111177;1;0;false;false;;;;;;
                                  -111178;3;0;false;false;63;95;191;;;
                                  -111181;1;0;false;false;;;;;;
                                  -111182;8;0;false;false;63;95;191;;;
                                  -111190;1;0;false;false;;;;;;
                                  -111191;4;0;false;false;63;95;191;;;
                                  -111195;1;0;false;false;;;;;;
                                  -111196;4;0;false;false;63;95;191;;;
                                  -111200;1;0;false;false;;;;;;
                                  -111201;15;0;false;false;63;95;191;;;
                                  -111216;1;0;false;false;;;;;;
                                  -111217;2;0;false;false;63;95;191;;;
                                  -111219;4;0;false;false;;;;;;
                                  -111223;1;0;false;false;63;95;191;;;
                                  -111224;1;0;false;false;;;;;;
                                  -111225;6;0;false;false;63;95;191;;;
                                  -111231;3;0;false;false;;;;;;
                                  -111234;1;0;false;false;63;95;191;;;
                                  -111235;1;0;false;false;;;;;;
                                  -111236;3;0;false;false;127;127;159;;;
                                  -111239;3;0;false;false;;;;;;
                                  -111242;1;0;false;false;63;95;191;;;
                                  -111243;3;0;false;false;;;;;;
                                  -111246;1;0;false;false;63;95;191;;;
                                  -111247;1;0;false;false;;;;;;
                                  -111248;7;1;false;false;127;159;191;;;
                                  -111255;1;0;false;false;63;95;191;;;
                                  -111256;1;0;false;false;;;;;;
                                  -111257;3;0;false;false;63;95;191;;;
                                  -111260;1;0;false;false;;;;;;
                                  -111261;1;0;false;false;63;95;191;;;
                                  -111262;1;0;false;false;;;;;;
                                  -111263;8;0;false;false;63;95;191;;;
                                  -111271;3;0;false;false;;;;;;
                                  -111274;1;0;false;false;63;95;191;;;
                                  -111275;1;0;false;false;;;;;;
                                  -111276;7;1;false;false;127;159;191;;;
                                  -111283;1;0;false;false;63;95;191;;;
                                  -111284;1;0;false;false;;;;;;
                                  -111285;3;0;false;false;63;95;191;;;
                                  -111288;1;0;false;false;;;;;;
                                  -111289;1;0;false;false;63;95;191;;;
                                  -111290;1;0;false;false;;;;;;
                                  -111291;8;0;false;false;63;95;191;;;
                                  -111299;3;0;false;false;;;;;;
                                  -111302;1;0;false;false;63;95;191;;;
                                  -111303;1;0;false;false;;;;;;
                                  -111304;7;1;false;false;127;159;191;;;
                                  -111311;5;0;false;false;63;95;191;;;
                                  -111316;1;0;false;false;;;;;;
                                  -111317;3;0;false;false;63;95;191;;;
                                  -111320;1;0;false;false;;;;;;
                                  -111321;5;0;false;false;63;95;191;;;
                                  -111326;3;0;false;false;;;;;;
                                  -111329;1;0;false;false;63;95;191;;;
                                  -111330;1;0;false;false;;;;;;
                                  -111331;7;1;false;false;127;159;191;;;
                                  -111338;6;0;false;false;63;95;191;;;
                                  -111344;1;0;false;false;;;;;;
                                  -111345;3;0;false;false;63;95;191;;;
                                  -111348;1;0;false;false;;;;;;
                                  -111349;6;0;false;false;63;95;191;;;
                                  -111355;3;0;false;false;;;;;;
                                  -111358;1;0;false;false;63;95;191;;;
                                  -111359;1;0;false;false;;;;;;
                                  -111360;7;1;false;false;127;159;191;;;
                                  -111367;15;0;false;false;63;95;191;;;
                                  -111382;1;0;false;false;;;;;;
                                  -111383;10;0;false;false;63;95;191;;;
                                  -111393;1;0;false;false;;;;;;
                                  -111394;3;0;false;false;63;95;191;;;
                                  -111397;1;0;false;false;;;;;;
                                  -111398;10;0;false;false;63;95;191;;;
                                  -111408;1;0;false;false;;;;;;
                                  -111409;2;0;false;false;63;95;191;;;
                                  -111411;1;0;false;false;;;;;;
                                  -111412;12;0;false;false;63;95;191;;;
                                  -111424;1;0;false;false;;;;;;
                                  -111425;3;0;false;false;63;95;191;;;
                                  -111428;1;0;false;false;;;;;;
                                  -111429;9;0;false;false;63;95;191;;;
                                  -111438;4;0;false;false;;;;;;
                                  -111442;1;0;false;false;63;95;191;;;
                                  -111443;2;0;false;false;;;;;;
                                  -111445;6;0;false;false;63;95;191;;;
                                  -111451;1;0;false;false;;;;;;
                                  -111452;5;0;false;false;63;95;191;;;
                                  -111457;1;0;false;false;;;;;;
                                  -111458;10;0;false;false;63;95;191;;;
                                  -111468;1;0;false;false;;;;;;
                                  -111469;3;0;false;false;63;95;191;;;
                                  -111472;1;0;false;false;;;;;;
                                  -111473;10;0;false;false;63;95;191;;;
                                  -111483;1;0;false;false;;;;;;
                                  -111484;8;0;false;false;63;95;191;;;
                                  -111492;1;0;false;false;;;;;;
                                  -111493;7;0;false;false;63;95;191;;;
                                  -111500;1;0;false;false;;;;;;
                                  -111501;12;0;false;false;63;95;191;;;
                                  -111513;1;0;false;false;;;;;;
                                  -111514;3;0;false;false;63;95;191;;;
                                  -111517;4;0;false;false;;;;;;
                                  -111521;1;0;false;false;63;95;191;;;
                                  -111522;2;0;false;false;;;;;;
                                  -111524;6;0;false;false;63;95;191;;;
                                  -111530;1;0;false;false;;;;;;
                                  -111531;5;0;false;false;63;95;191;;;
                                  -111536;3;0;false;false;;;;;;
                                  -111539;2;0;false;false;63;95;191;;;
                                  -111541;2;0;false;false;;;;;;
                                  -111543;4;1;false;false;127;0;85;;;
                                  -111547;1;0;false;false;;;;;;
                                  -111548;5;0;false;false;0;0;0;;;
                                  -111553;3;1;false;false;127;0;85;;;
                                  -111556;1;0;false;false;;;;;;
                                  -111557;2;0;false;false;0;0;0;;;
                                  -111559;1;0;false;false;;;;;;
                                  -111560;3;1;false;false;127;0;85;;;
                                  -111563;1;0;false;false;;;;;;
                                  -111564;2;0;false;false;0;0;0;;;
                                  -111566;1;0;false;false;;;;;;
                                  -111567;3;1;false;false;127;0;85;;;
                                  -111570;1;0;false;false;;;;;;
                                  -111571;6;0;false;false;0;0;0;;;
                                  -111577;1;0;false;false;;;;;;
                                  -111578;3;1;false;false;127;0;85;;;
                                  -111581;1;0;false;false;;;;;;
                                  -111582;7;0;false;false;0;0;0;;;
                                  -111589;1;0;false;false;;;;;;
                                  -111590;7;1;false;false;127;0;85;;;
                                  -111597;1;0;false;false;;;;;;
                                  -111598;16;0;false;false;0;0;0;;;
                                  -111614;1;0;false;false;;;;;;
                                  -111615;1;0;false;false;0;0;0;;;
                                  -111616;3;0;false;false;;;;;;
                                  -111619;2;1;false;false;127;0;85;;;
                                  -111621;1;0;false;false;;;;;;
                                  -111622;17;0;false;false;0;0;0;;;
                                  -111639;1;0;false;false;;;;;;
                                  -111640;1;0;false;false;0;0;0;;;
                                  -111641;4;0;false;false;;;;;;
                                  -111645;8;0;false;false;0;0;0;;;
                                  -111653;1;0;false;false;;;;;;
                                  -111654;1;0;false;false;0;0;0;;;
                                  -111655;1;0;false;false;;;;;;
                                  -111656;11;0;false;false;0;0;0;;;
                                  -111667;1;0;false;false;;;;;;
                                  -111668;1;0;false;false;0;0;0;;;
                                  -111669;1;0;false;false;;;;;;
                                  -111670;1;0;false;false;0;0;0;;;
                                  -111671;1;0;false;false;;;;;;
                                  -111672;10;0;false;false;0;0;0;;;
                                  -111682;1;0;false;false;;;;;;
                                  -111683;6;0;false;false;0;0;0;;;
                                  -111689;1;0;false;false;;;;;;
                                  -111690;7;0;false;false;0;0;0;;;
                                  -111697;1;0;false;false;;;;;;
                                  -111698;4;1;false;false;127;0;85;;;
                                  -111702;2;0;false;false;0;0;0;;;
                                  -111704;3;0;false;false;;;;;;
                                  -111707;1;0;false;false;0;0;0;;;
                                  -111708;3;0;false;false;;;;;;
                                  -111711;4;1;false;false;127;0;85;;;
                                  -111715;1;0;false;false;;;;;;
                                  -111716;1;0;false;false;0;0;0;;;
                                  -111717;4;0;false;false;;;;;;
                                  -111721;3;1;false;false;127;0;85;;;
                                  -111724;1;0;false;false;;;;;;
                                  -111725;9;0;false;false;0;0;0;;;
                                  -111734;1;0;false;false;;;;;;
                                  -111735;1;0;false;false;0;0;0;;;
                                  -111736;1;0;false;false;;;;;;
                                  -111737;2;0;false;false;0;0;0;;;
                                  -111739;1;0;false;false;;;;;;
                                  -111740;1;0;false;false;0;0;0;;;
                                  -111741;1;0;false;false;;;;;;
                                  -111742;21;0;false;false;0;0;0;;;
                                  -111763;1;0;false;false;;;;;;
                                  -111764;1;0;false;false;0;0;0;;;
                                  -111765;1;0;false;false;;;;;;
                                  -111766;11;0;false;false;0;0;0;;;
                                  -111777;4;0;false;false;;;;;;
                                  -111781;3;1;false;false;127;0;85;;;
                                  -111784;1;0;false;false;;;;;;
                                  -111785;4;0;false;false;0;0;0;;;
                                  -111789;1;0;false;false;;;;;;
                                  -111790;1;0;false;false;0;0;0;;;
                                  -111791;1;0;false;false;;;;;;
                                  -111792;1;0;false;false;0;0;0;;;
                                  -111793;1;0;false;false;;;;;;
                                  -111794;1;0;false;false;0;0;0;;;
                                  -111795;1;0;false;false;;;;;;
                                  -111796;7;0;false;false;0;0;0;;;
                                  -111803;4;0;false;false;;;;;;
                                  -111807;3;1;false;false;127;0;85;;;
                                  -111810;1;0;false;false;;;;;;
                                  -111811;17;0;false;false;0;0;0;;;
                                  -111828;1;0;false;false;;;;;;
                                  -111829;1;0;false;false;0;0;0;;;
                                  -111830;1;0;false;false;;;;;;
                                  -111831;10;0;false;false;0;0;0;;;
                                  -111841;1;0;false;false;;;;;;
                                  -111842;1;0;false;false;0;0;0;;;
                                  -111843;1;0;false;false;;;;;;
                                  -111844;9;0;false;false;0;0;0;;;
                                  -111853;1;0;false;false;;;;;;
                                  -111854;1;0;false;false;0;0;0;;;
                                  -111855;1;0;false;false;;;;;;
                                  -111856;11;0;false;false;0;0;0;;;
                                  -111867;4;0;false;false;;;;;;
                                  -111871;3;1;false;false;127;0;85;;;
                                  -111874;1;0;false;false;;;;;;
                                  -111875;13;0;false;false;0;0;0;;;
                                  -111888;1;0;false;false;;;;;;
                                  -111889;1;0;false;false;0;0;0;;;
                                  -111890;1;0;false;false;;;;;;
                                  -111891;9;0;false;false;0;0;0;;;
                                  -111900;1;0;false;false;;;;;;
                                  -111901;1;0;false;false;0;0;0;;;
                                  -111902;1;0;false;false;;;;;;
                                  -111903;10;0;false;false;0;0;0;;;
                                  -111913;1;0;false;false;;;;;;
                                  -111914;1;0;false;false;0;0;0;;;
                                  -111915;1;0;false;false;;;;;;
                                  -111916;22;0;false;false;0;0;0;;;
                                  -111938;4;0;false;false;;;;;;
                                  -111942;3;1;false;false;127;0;85;;;
                                  -111945;1;0;false;false;;;;;;
                                  -111946;6;0;false;false;0;0;0;;;
                                  -111952;1;0;false;false;;;;;;
                                  -111953;1;0;false;false;0;0;0;;;
                                  -111954;1;0;false;false;;;;;;
                                  -111955;17;0;false;false;0;0;0;;;
                                  -111972;1;0;false;false;;;;;;
                                  -111973;1;0;false;false;0;0;0;;;
                                  -111974;1;0;false;false;;;;;;
                                  -111975;13;0;false;false;0;0;0;;;
                                  -111988;1;0;false;false;;;;;;
                                  -111989;1;0;false;false;0;0;0;;;
                                  -111990;1;0;false;false;;;;;;
                                  -111991;10;0;false;false;0;0;0;;;
                                  -112001;1;0;false;false;;;;;;
                                  -112002;48;0;false;false;63;127;95;;;
                                  -112050;2;0;false;false;;;;;;
                                  -112052;3;1;false;false;127;0;85;;;
                                  -112055;1;0;false;false;;;;;;
                                  -112056;9;0;false;false;0;0;0;;;
                                  -112065;1;0;false;false;;;;;;
                                  -112066;1;0;false;false;0;0;0;;;
                                  -112067;1;0;false;false;;;;;;
                                  -112068;23;0;false;false;0;0;0;;;
                                  -112091;4;0;false;false;;;;;;
                                  -112095;5;0;false;false;0;0;0;;;
                                  -112100;1;0;false;false;;;;;;
                                  -112101;10;0;false;false;0;0;0;;;
                                  -112111;1;0;false;false;;;;;;
                                  -112112;1;0;false;false;0;0;0;;;
                                  -112113;1;0;false;false;;;;;;
                                  -112114;16;0;false;false;0;0;0;;;
                                  -112130;4;0;false;false;;;;;;
                                  -112134;5;0;false;false;0;0;0;;;
                                  -112139;1;0;false;false;;;;;;
                                  -112140;10;0;false;false;0;0;0;;;
                                  -112150;1;0;false;false;;;;;;
                                  -112151;1;0;false;false;0;0;0;;;
                                  -112152;1;0;false;false;;;;;;
                                  -112153;16;0;false;false;0;0;0;;;
                                  -112169;4;0;false;false;;;;;;
                                  -112173;2;0;false;false;0;0;0;;;
                                  -112175;1;0;false;false;;;;;;
                                  -112176;2;0;false;false;0;0;0;;;
                                  -112178;1;0;false;false;;;;;;
                                  -112179;1;0;false;false;0;0;0;;;
                                  -112180;1;0;false;false;;;;;;
                                  -112181;8;0;false;false;0;0;0;;;
                                  -112189;7;0;false;false;;;;;;
                                  -112196;2;1;false;false;127;0;85;;;
                                  -112198;1;0;false;false;;;;;;
                                  -112199;16;0;false;false;0;0;0;;;
                                  -112215;1;0;false;false;;;;;;
                                  -112216;1;0;false;false;0;0;0;;;
                                  -112217;5;0;false;false;;;;;;
                                  -112222;9;0;false;false;0;0;0;;;
                                  -112231;1;0;false;false;;;;;;
                                  -112232;1;0;false;false;0;0;0;;;
                                  -112233;1;0;false;false;;;;;;
                                  -112234;2;0;false;false;0;0;0;;;
                                  -112236;4;0;false;false;;;;;;
                                  -112240;1;0;false;false;0;0;0;;;
                                  -112241;4;0;false;false;;;;;;
                                  -112245;3;1;false;false;127;0;85;;;
                                  -112248;1;0;false;false;;;;;;
                                  -112249;1;0;false;false;0;0;0;;;
                                  -112250;3;1;false;false;127;0;85;;;
                                  -112253;1;0;false;false;;;;;;
                                  -112254;1;0;false;false;0;0;0;;;
                                  -112255;1;0;false;false;;;;;;
                                  -112256;1;0;false;false;0;0;0;;;
                                  -112257;1;0;false;false;;;;;;
                                  -112258;10;0;false;false;0;0;0;;;
                                  -112268;1;0;false;false;;;;;;
                                  -112269;6;0;false;false;0;0;0;;;
                                  -112275;1;0;false;false;;;;;;
                                  -112276;1;0;false;false;0;0;0;;;
                                  -112277;1;0;false;false;;;;;;
                                  -112278;4;0;false;false;0;0;0;;;
                                  -112282;1;0;false;false;;;;;;
                                  -112283;2;0;false;false;0;0;0;;;
                                  -112285;1;0;false;false;;;;;;
                                  -112286;1;0;false;false;0;0;0;;;
                                  -112287;1;0;false;false;;;;;;
                                  -112288;1;0;false;false;0;0;0;;;
                                  -112289;1;0;false;false;;;;;;
                                  -112290;10;0;false;false;0;0;0;;;
                                  -112300;1;0;false;false;;;;;;
                                  -112301;4;0;false;false;0;0;0;;;
                                  -112305;1;0;false;false;;;;;;
                                  -112306;6;0;false;false;0;0;0;;;
                                  -112312;1;0;false;false;;;;;;
                                  -112313;2;0;false;false;0;0;0;;;
                                  -112315;1;0;false;false;;;;;;
                                  -112316;11;0;false;false;0;0;0;;;
                                  -112327;1;0;false;false;;;;;;
                                  -112328;1;0;false;false;0;0;0;;;
                                  -112329;5;0;false;false;;;;;;
                                  -112334;6;0;false;false;0;0;0;;;
                                  -112340;1;0;false;false;;;;;;
                                  -112341;4;0;false;false;0;0;0;;;
                                  -112345;1;0;false;false;;;;;;
                                  -112346;1;0;false;false;0;0;0;;;
                                  -112347;1;0;false;false;;;;;;
                                  -112348;19;0;false;false;0;0;0;;;
                                  -112367;5;0;false;false;;;;;;
                                  -112372;23;0;false;false;0;0;0;;;
                                  -112395;1;0;false;false;;;;;;
                                  -112396;2;0;false;false;0;0;0;;;
                                  -112398;1;0;false;false;;;;;;
                                  -112399;7;0;false;false;0;0;0;;;
                                  -112406;1;0;false;false;;;;;;
                                  -112407;3;0;false;false;0;0;0;;;
                                  -112410;1;0;false;false;;;;;;
                                  -112411;11;0;false;false;0;0;0;;;
                                  -112422;1;0;false;false;;;;;;
                                  -112423;11;0;false;false;0;0;0;;;
                                  -112434;1;0;false;false;;;;;;
                                  -112435;17;0;false;false;0;0;0;;;
                                  -112452;4;0;false;false;;;;;;
                                  -112456;1;0;false;false;0;0;0;;;
                                  -112457;4;0;false;false;;;;;;
                                  -112461;13;0;false;false;0;0;0;;;
                                  -112474;4;0;false;false;;;;;;
                                  -112478;1;0;false;false;0;0;0;;;
                                  -112479;2;0;false;false;;;;;;
                                  -112481;1;0;false;false;0;0;0;;;
                                  -112482;2;0;false;false;;;;;;
                                  -112484;3;0;false;false;63;95;191;;;
                                  -112487;4;0;false;false;;;;;;
                                  -112491;1;0;false;false;63;95;191;;;
                                  -112492;1;0;false;false;;;;;;
                                  -112493;4;0;false;false;63;95;191;;;
                                  -112497;1;0;false;false;;;;;;
                                  -112498;3;0;false;false;63;95;191;;;
                                  -112501;1;0;false;false;;;;;;
                                  -112502;10;0;false;false;63;95;191;;;
                                  -112512;1;0;false;false;;;;;;
                                  -112513;8;0;false;false;63;95;191;;;
                                  -112521;3;0;false;false;;;;;;
                                  -112524;2;0;false;false;63;95;191;;;
                                  -112526;2;0;false;false;;;;;;
                                  -112528;4;1;false;false;127;0;85;;;
                                  -112532;1;0;false;false;;;;;;
                                  -112533;15;0;false;false;0;0;0;;;
                                  -112548;1;0;false;false;;;;;;
                                  -112549;1;0;false;false;0;0;0;;;
                                  -112550;3;0;false;false;;;;;;
                                  -112553;19;0;false;false;0;0;0;;;
                                  -112572;1;0;false;false;;;;;;
                                  -112573;1;0;false;false;0;0;0;;;
                                  -112574;1;0;false;false;;;;;;
                                  -112575;9;0;false;false;0;0;0;;;
                                  -112584;2;0;false;false;;;;;;
                                  -112586;1;0;false;false;0;0;0;;;
                                  -112587;2;0;false;false;;;;;;
                                  -112589;6;1;false;false;127;0;85;;;
                                  -112595;1;0;false;false;;;;;;
                                  -112596;5;0;false;false;0;0;0;;;
                                  -112601;1;0;false;false;;;;;;
                                  -112602;15;0;false;false;0;0;0;;;
                                  -112617;1;0;false;false;;;;;;
                                  -112618;1;0;false;false;0;0;0;;;
                                  -112619;3;0;false;false;;;;;;
                                  -112622;14;0;false;false;0;0;0;;;
                                  -112636;3;0;false;false;;;;;;
                                  -112639;2;1;false;false;127;0;85;;;
                                  -112641;1;0;false;false;;;;;;
                                  -112642;11;0;false;false;0;0;0;;;
                                  -112653;1;0;false;false;;;;;;
                                  -112654;2;0;false;false;0;0;0;;;
                                  -112656;1;0;false;false;;;;;;
                                  -112657;4;1;false;false;127;0;85;;;
                                  -112661;1;0;false;false;0;0;0;;;
                                  -112662;1;0;false;false;;;;;;
                                  -112663;1;0;false;false;0;0;0;;;
                                  -112664;4;0;false;false;;;;;;
                                  -112668;6;1;false;false;127;0;85;;;
                                  -112674;1;0;false;false;;;;;;
                                  -112675;55;0;false;false;0;0;0;;;
                                  -112730;3;0;false;false;;;;;;
                                  -112733;1;0;false;false;0;0;0;;;
                                  -112734;3;0;false;false;;;;;;
                                  -112737;6;1;false;false;127;0;85;;;
                                  -112743;1;0;false;false;;;;;;
                                  -112744;11;0;false;false;0;0;0;;;
                                  -112755;2;0;false;false;;;;;;
                                  -112757;1;0;false;false;0;0;0;;;
                                  -112758;2;0;false;false;;;;;;
                                  -112760;3;0;false;false;63;95;191;;;
                                  -112763;3;0;false;false;;;;;;
                                  -112766;1;0;false;false;63;95;191;;;
                                  -112767;1;0;false;false;;;;;;
                                  -112768;7;0;false;false;63;95;191;;;
                                  -112775;1;0;false;false;;;;;;
                                  -112776;3;0;false;false;63;95;191;;;
                                  -112779;1;0;false;false;;;;;;
                                  -112780;9;0;false;false;63;95;191;;;
                                  -112789;1;0;false;false;;;;;;
                                  -112790;2;0;false;false;63;95;191;;;
                                  -112792;1;0;false;false;;;;;;
                                  -112793;7;0;false;false;63;95;191;;;
                                  -112800;4;0;false;false;;;;;;
                                  -112804;1;0;false;false;63;95;191;;;
                                  -112805;4;0;false;false;;;;;;
                                  -112809;1;0;false;false;63;95;191;;;
                                  -112810;1;0;false;false;;;;;;
                                  -112811;8;1;false;false;127;159;191;;;
                                  -112819;8;0;false;false;63;95;191;;;
                                  -112827;1;0;false;false;;;;;;
                                  -112828;3;0;false;false;63;95;191;;;
                                  -112831;1;0;false;false;;;;;;
                                  -112832;8;0;false;false;63;95;191;;;
                                  -112840;3;0;false;false;;;;;;
                                  -112843;1;0;false;false;63;95;191;;;
                                  -112844;1;0;false;false;;;;;;
                                  -112845;11;1;false;false;127;159;191;;;
                                  -112856;12;0;false;false;63;95;191;;;
                                  -112868;1;0;false;false;;;;;;
                                  -112869;4;0;false;false;127;127;159;;;
                                  -112873;3;0;false;false;;;;;;
                                  -112876;1;0;false;false;63;95;191;;;
                                  -112877;4;0;false;false;;;;;;
                                  -112881;4;0;false;false;127;127;159;;;
                                  -112885;21;0;false;false;63;95;191;;;
                                  -112906;1;0;false;false;;;;;;
                                  -112907;1;0;false;false;127;127;159;;;
                                  -112908;1;0;false;false;;;;;;
                                  -112909;2;0;false;false;63;95;191;;;
                                  -112911;1;0;false;false;;;;;;
                                  -112912;3;0;false;false;63;95;191;;;
                                  -112915;1;0;false;false;;;;;;
                                  -112916;8;0;false;false;63;95;191;;;
                                  -112924;1;0;false;false;;;;;;
                                  -112925;3;0;false;false;63;95;191;;;
                                  -112928;1;0;false;false;;;;;;
                                  -112929;4;0;false;false;63;95;191;;;
                                  -112933;1;0;false;false;;;;;;
                                  -112934;8;0;false;false;63;95;191;;;
                                  -112942;5;0;false;false;127;127;159;;;
                                  -112947;3;0;false;false;;;;;;
                                  -112950;1;0;false;false;63;95;191;;;
                                  -112951;4;0;false;false;;;;;;
                                  -112955;4;0;false;false;127;127;159;;;
                                  -112959;27;0;false;false;63;95;191;;;
                                  -112986;1;0;false;false;;;;;;
                                  -112987;1;0;false;false;127;127;159;;;
                                  -112988;1;0;false;false;;;;;;
                                  -112989;2;0;false;false;63;95;191;;;
                                  -112991;1;0;false;false;;;;;;
                                  -112992;3;0;false;false;63;95;191;;;
                                  -112995;1;0;false;false;;;;;;
                                  -112996;6;0;false;false;63;95;191;;;
                                  -113002;1;0;false;false;;;;;;
                                  -113003;4;0;false;false;63;95;191;;;
                                  -113007;1;0;false;false;;;;;;
                                  -113008;3;0;false;false;63;95;191;;;
                                  -113011;1;0;false;false;;;;;;
                                  -113012;6;0;false;false;63;95;191;;;
                                  -113018;1;0;false;false;;;;;;
                                  -113019;4;0;false;false;63;95;191;;;
                                  -113023;1;0;false;false;;;;;;
                                  -113024;7;0;false;false;63;95;191;;;
                                  -113031;1;0;false;false;;;;;;
                                  -113032;3;0;false;false;63;95;191;;;
                                  -113035;1;0;false;false;;;;;;
                                  -113036;8;0;false;false;63;95;191;;;
                                  -113044;5;0;false;false;127;127;159;;;
                                  -113049;3;0;false;false;;;;;;
                                  -113052;1;0;false;false;63;95;191;;;
                                  -113053;1;0;false;false;;;;;;
                                  -113054;5;0;false;false;127;127;159;;;
                                  -113059;3;0;false;false;;;;;;
                                  -113062;1;0;false;false;63;95;191;;;
                                  -113063;1;0;false;false;;;;;;
                                  -113064;7;1;false;false;127;159;191;;;
                                  -113071;3;0;false;false;63;95;191;;;
                                  -113074;3;0;false;false;;;;;;
                                  -113077;2;0;false;false;63;95;191;;;
                                  -113079;2;0;false;false;;;;;;
                                  -113081;6;1;false;false;127;0;85;;;
                                  -113087;1;0;false;false;;;;;;
                                  -113088;3;1;false;false;127;0;85;;;
                                  -113091;1;0;false;false;;;;;;
                                  -113092;13;0;false;false;0;0;0;;;
                                  -113105;1;0;false;false;;;;;;
                                  -113106;1;0;false;false;0;0;0;;;
                                  -113107;3;0;false;false;;;;;;
                                  -113110;14;0;false;false;0;0;0;;;
                                  -113124;3;0;false;false;;;;;;
                                  -113127;6;1;false;false;127;0;85;;;
                                  -113133;1;0;false;false;;;;;;
                                  -113134;23;0;false;false;0;0;0;;;
                                  -113157;2;0;false;false;;;;;;
                                  -113159;1;0;false;false;0;0;0;;;
                                  -113160;2;0;false;false;;;;;;
                                  -113162;3;0;false;false;63;95;191;;;
                                  -113165;3;0;false;false;;;;;;
                                  -113168;1;0;false;false;63;95;191;;;
                                  -113169;1;0;false;false;;;;;;
                                  -113170;4;0;false;false;63;95;191;;;
                                  -113174;1;0;false;false;;;;;;
                                  -113175;3;0;false;false;63;95;191;;;
                                  -113178;1;0;false;false;;;;;;
                                  -113179;4;0;false;false;63;95;191;;;
                                  -113183;1;0;false;false;;;;;;
                                  -113184;8;0;false;false;63;95;191;;;
                                  -113192;1;0;false;false;;;;;;
                                  -113193;5;0;false;false;63;95;191;;;
                                  -113198;2;0;false;false;;;;;;
                                  -113200;4;0;false;false;63;95;191;;;
                                  -113204;1;0;false;false;;;;;;
                                  -113205;4;0;false;false;63;95;191;;;
                                  -113209;1;0;false;false;;;;;;
                                  -113210;3;0;false;false;63;95;191;;;
                                  -113213;1;0;false;false;;;;;;
                                  -113214;4;0;false;false;63;95;191;;;
                                  -113218;1;0;false;false;;;;;;
                                  -113219;4;0;false;false;63;95;191;;;
                                  -113223;1;0;false;false;;;;;;
                                  -113224;7;0;false;false;63;95;191;;;
                                  -113231;3;0;false;false;;;;;;
                                  -113234;1;0;false;false;63;95;191;;;
                                  -113235;1;0;false;false;;;;;;
                                  -113236;9;0;false;false;63;95;191;;;
                                  -113245;1;0;false;false;;;;;;
                                  -113246;2;0;false;false;63;95;191;;;
                                  -113248;1;0;false;false;;;;;;
                                  -113249;7;0;false;false;63;95;191;;;
                                  -113256;1;0;false;false;;;;;;
                                  -113257;2;0;false;false;63;95;191;;;
                                  -113259;1;0;false;false;;;;;;
                                  -113260;8;0;false;false;63;95;191;;;
                                  -113268;1;0;false;false;;;;;;
                                  -113269;2;0;false;false;63;95;191;;;
                                  -113271;1;0;false;false;;;;;;
                                  -113272;4;0;false;false;63;95;191;;;
                                  -113276;1;0;false;false;;;;;;
                                  -113277;4;0;false;false;63;95;191;;;
                                  -113281;1;0;false;false;;;;;;
                                  -113282;3;0;false;false;63;95;191;;;
                                  -113285;1;0;false;false;;;;;;
                                  -113286;3;0;false;false;63;95;191;;;
                                  -113289;1;0;false;false;;;;;;
                                  -113290;4;0;false;false;63;95;191;;;
                                  -113294;3;0;false;false;;;;;;
                                  -113297;1;0;false;false;63;95;191;;;
                                  -113298;1;0;false;false;;;;;;
                                  -113299;6;0;false;false;63;95;191;;;
                                  -113305;3;0;false;false;;;;;;
                                  -113308;1;0;false;false;63;95;191;;;
                                  -113309;3;0;false;false;;;;;;
                                  -113312;1;0;false;false;63;95;191;;;
                                  -113313;1;0;false;false;;;;;;
                                  -113314;8;1;false;false;127;159;191;;;
                                  -113322;3;0;false;false;63;95;191;;;
                                  -113325;1;0;false;false;;;;;;
                                  -113326;7;0;false;false;63;95;191;;;
                                  -113333;1;0;false;false;;;;;;
                                  -113334;8;0;false;false;63;95;191;;;
                                  -113342;1;0;false;false;;;;;;
                                  -113343;4;0;false;false;63;95;191;;;
                                  -113347;3;0;false;false;;;;;;
                                  -113350;1;0;false;false;63;95;191;;;
                                  -113351;1;0;false;false;;;;;;
                                  -113352;11;1;false;false;127;159;191;;;
                                  -113363;12;0;false;false;63;95;191;;;
                                  -113375;1;0;false;false;;;;;;
                                  -113376;4;0;false;false;127;127;159;;;
                                  -113380;3;0;false;false;;;;;;
                                  -113383;1;0;false;false;63;95;191;;;
                                  -113384;4;0;false;false;;;;;;
                                  -113388;4;0;false;false;127;127;159;;;
                                  -113392;21;0;false;false;63;95;191;;;
                                  -113413;1;0;false;false;;;;;;
                                  -113414;1;0;false;false;127;127;159;;;
                                  -113415;1;0;false;false;;;;;;
                                  -113416;2;0;false;false;63;95;191;;;
                                  -113418;1;0;false;false;;;;;;
                                  -113419;3;0;false;false;63;95;191;;;
                                  -113422;1;0;false;false;;;;;;
                                  -113423;8;0;false;false;63;95;191;;;
                                  -113431;1;0;false;false;;;;;;
                                  -113432;3;0;false;false;63;95;191;;;
                                  -113435;1;0;false;false;;;;;;
                                  -113436;4;0;false;false;63;95;191;;;
                                  -113440;1;0;false;false;;;;;;
                                  -113441;8;0;false;false;63;95;191;;;
                                  -113449;5;0;false;false;127;127;159;;;
                                  -113454;3;0;false;false;;;;;;
                                  -113457;1;0;false;false;63;95;191;;;
                                  -113458;4;0;false;false;;;;;;
                                  -113462;4;0;false;false;127;127;159;;;
                                  -113466;27;0;false;false;63;95;191;;;
                                  -113493;1;0;false;false;;;;;;
                                  -113494;1;0;false;false;127;127;159;;;
                                  -113495;1;0;false;false;;;;;;
                                  -113496;2;0;false;false;63;95;191;;;
                                  -113498;1;0;false;false;;;;;;
                                  -113499;3;0;false;false;63;95;191;;;
                                  -113502;1;0;false;false;;;;;;
                                  -113503;6;0;false;false;63;95;191;;;
                                  -113509;1;0;false;false;;;;;;
                                  -113510;4;0;false;false;63;95;191;;;
                                  -113514;1;0;false;false;;;;;;
                                  -113515;3;0;false;false;63;95;191;;;
                                  -113518;1;0;false;false;;;;;;
                                  -113519;6;0;false;false;63;95;191;;;
                                  -113525;1;0;false;false;;;;;;
                                  -113526;4;0;false;false;63;95;191;;;
                                  -113530;1;0;false;false;;;;;;
                                  -113531;7;0;false;false;63;95;191;;;
                                  -113538;1;0;false;false;;;;;;
                                  -113539;3;0;false;false;63;95;191;;;
                                  -113542;1;0;false;false;;;;;;
                                  -113543;8;0;false;false;63;95;191;;;
                                  -113551;5;0;false;false;127;127;159;;;
                                  -113556;3;0;false;false;;;;;;
                                  -113559;1;0;false;false;63;95;191;;;
                                  -113560;1;0;false;false;;;;;;
                                  -113561;5;0;false;false;127;127;159;;;
                                  -113566;3;0;false;false;;;;;;
                                  -113569;1;0;false;false;63;95;191;;;
                                  -113570;1;0;false;false;;;;;;
                                  -113571;3;0;false;false;127;127;159;;;
                                  -113574;3;0;false;false;;;;;;
                                  -113577;1;0;false;false;63;95;191;;;
                                  -113578;1;0;false;false;;;;;;
                                  -113579;12;1;false;false;127;159;191;;;
                                  -113591;3;0;false;false;63;95;191;;;
                                  -113594;1;0;false;false;;;;;;
                                  -113595;19;0;false;false;63;95;191;;;
                                  -113614;1;0;false;false;;;;;;
                                  -113615;8;0;false;false;63;95;191;;;
                                  -113623;3;0;false;false;;;;;;
                                  -113626;1;0;false;false;63;95;191;;;
                                  -113627;1;0;false;false;;;;;;
                                  -113628;4;0;false;false;127;127;159;;;
                                  -113632;3;0;false;false;;;;;;
                                  -113635;2;0;false;false;63;95;191;;;
                                  -113637;2;0;false;false;;;;;;
                                  -113639;6;1;false;false;127;0;85;;;
                                  -113645;1;0;false;false;;;;;;
                                  -113646;7;1;false;false;127;0;85;;;
                                  -113653;1;0;false;false;;;;;;
                                  -113654;17;0;false;false;0;0;0;;;
                                  -113671;1;0;false;false;;;;;;
                                  -113672;1;0;false;false;0;0;0;;;
                                  -113673;3;0;false;false;;;;;;
                                  -113676;14;0;false;false;0;0;0;;;
                                  -113690;3;0;false;false;;;;;;
                                  -113693;6;1;false;false;127;0;85;;;
                                  -113699;1;0;false;false;;;;;;
                                  -113700;13;0;false;false;0;0;0;;;
                                  -113713;2;0;false;false;;;;;;
                                  -113715;1;0;false;false;0;0;0;;;
                                  -113716;2;0;false;false;;;;;;
                                  -113718;3;0;false;false;63;95;191;;;
                                  -113721;4;0;false;false;;;;;;
                                  -113725;1;0;false;false;63;95;191;;;
                                  -113726;1;0;false;false;;;;;;
                                  -113727;7;0;false;false;63;95;191;;;
                                  -113734;1;0;false;false;;;;;;
                                  -113735;3;0;false;false;63;95;191;;;
                                  -113738;1;0;false;false;;;;;;
                                  -113739;5;0;false;false;63;95;191;;;
                                  -113744;1;0;false;false;;;;;;
                                  -113745;2;0;false;false;63;95;191;;;
                                  -113747;1;0;false;false;;;;;;
                                  -113748;3;0;false;false;63;95;191;;;
                                  -113751;1;0;false;false;;;;;;
                                  -113752;4;0;false;false;63;95;191;;;
                                  -113756;1;0;false;false;;;;;;
                                  -113757;5;0;false;false;63;95;191;;;
                                  -113762;1;0;false;false;;;;;;
                                  -113763;7;0;false;false;63;95;191;;;
                                  -113770;1;0;false;false;;;;;;
                                  -113771;5;0;false;false;63;95;191;;;
                                  -113776;3;0;false;false;;;;;;
                                  -113779;1;0;false;false;63;95;191;;;
                                  -113780;1;0;false;false;;;;;;
                                  -113781;3;0;false;false;127;127;159;;;
                                  -113784;3;0;false;false;;;;;;
                                  -113787;1;0;false;false;63;95;191;;;
                                  -113788;3;0;false;false;;;;;;
                                  -113791;1;0;false;false;63;95;191;;;
                                  -113792;1;0;false;false;;;;;;
                                  -113793;8;1;false;false;127;159;191;;;
                                  -113801;5;0;false;false;63;95;191;;;
                                  -113806;1;0;false;false;;;;;;
                                  -113807;2;0;false;false;63;95;191;;;
                                  -113809;1;0;false;false;;;;;;
                                  -113810;3;0;false;false;63;95;191;;;
                                  -113813;1;0;false;false;;;;;;
                                  -113814;4;0;false;false;63;95;191;;;
                                  -113818;1;0;false;false;;;;;;
                                  -113819;5;0;false;false;63;95;191;;;
                                  -113824;1;0;false;false;;;;;;
                                  -113825;7;0;false;false;63;95;191;;;
                                  -113832;1;0;false;false;;;;;;
                                  -113833;5;0;false;false;63;95;191;;;
                                  -113838;3;0;false;false;;;;;;
                                  -113841;2;0;false;false;63;95;191;;;
                                  -113843;2;0;false;false;;;;;;
                                  -113845;3;1;false;false;127;0;85;;;
                                  -113848;1;0;false;false;;;;;;
                                  -113849;16;0;false;false;0;0;0;;;
                                  -113865;1;0;false;false;;;;;;
                                  -113866;1;0;false;false;0;0;0;;;
                                  -113867;3;0;false;false;;;;;;
                                  -113870;3;1;false;false;127;0;85;;;
                                  -113873;1;0;false;false;;;;;;
                                  -113874;9;0;false;false;0;0;0;;;
                                  -113883;1;0;false;false;;;;;;
                                  -113884;1;0;false;false;0;0;0;;;
                                  -113885;1;0;false;false;;;;;;
                                  -113886;2;0;false;false;0;0;0;;;
                                  -113888;6;0;false;false;;;;;;
                                  -113894;2;1;false;false;127;0;85;;;
                                  -113896;1;0;false;false;;;;;;
                                  -113897;11;0;false;false;0;0;0;;;
                                  -113908;1;0;false;false;;;;;;
                                  -113909;2;0;false;false;0;0;0;;;
                                  -113911;1;0;false;false;;;;;;
                                  -113912;2;0;false;false;0;0;0;;;
                                  -113914;1;0;false;false;;;;;;
                                  -113915;1;0;false;false;0;0;0;;;
                                  -113916;4;0;false;false;;;;;;
                                  -113920;57;0;false;false;63;127;95;;;
                                  -113977;2;0;false;false;;;;;;
                                  -113979;3;1;false;false;127;0;85;;;
                                  -113982;1;0;false;false;;;;;;
                                  -113983;20;0;false;false;0;0;0;;;
                                  -114003;1;0;false;false;;;;;;
                                  -114004;1;0;false;false;0;0;0;;;
                                  -114005;1;0;false;false;;;;;;
                                  -114006;8;0;false;false;0;0;0;;;
                                  -114014;1;0;false;false;;;;;;
                                  -114015;1;0;false;false;0;0;0;;;
                                  -114016;1;0;false;false;;;;;;
                                  -114017;10;0;false;false;0;0;0;;;
                                  -114027;1;0;false;false;;;;;;
                                  -114028;1;0;false;false;0;0;0;;;
                                  -114029;1;0;false;false;;;;;;
                                  -114030;21;0;false;false;0;0;0;;;
                                  -114051;4;0;false;false;;;;;;
                                  -114055;9;0;false;false;0;0;0;;;
                                  -114064;1;0;false;false;;;;;;
                                  -114065;1;0;false;false;0;0;0;;;
                                  -114066;1;0;false;false;;;;;;
                                  -114067;23;0;false;false;0;0;0;;;
                                  -114090;1;0;false;false;;;;;;
                                  -114091;1;0;false;false;0;0;0;;;
                                  -114092;1;0;false;false;;;;;;
                                  -114093;21;0;false;false;0;0;0;;;
                                  -114114;1;0;false;false;;;;;;
                                  -114115;1;0;false;false;0;0;0;;;
                                  -114116;1;0;false;false;;;;;;
                                  -114117;11;0;false;false;0;0;0;;;
                                  -114128;3;0;false;false;;;;;;
                                  -114131;1;0;false;false;0;0;0;;;
                                  -114132;3;0;false;false;;;;;;
                                  -114135;6;1;false;false;127;0;85;;;
                                  -114141;1;0;false;false;;;;;;
                                  -114142;31;0;false;false;0;0;0;;;
                                  -114173;1;0;false;false;;;;;;
                                  -114174;1;0;false;false;0;0;0;;;
                                  -114175;1;0;false;false;;;;;;
                                  -114176;2;0;false;false;0;0;0;;;
                                  -114178;1;0;false;false;;;;;;
                                  -114179;8;0;false;false;0;0;0;;;
                                  -114187;1;0;false;false;;;;;;
                                  -114188;1;0;false;false;0;0;0;;;
                                  -114189;1;0;false;false;;;;;;
                                  -114190;11;0;false;false;0;0;0;;;
                                  -114201;1;0;false;false;;;;;;
                                  -114202;9;0;false;false;0;0;0;;;
                                  -114211;1;0;false;false;;;;;;
                                  -114212;1;0;false;false;0;0;0;;;
                                  -114213;1;0;false;false;;;;;;
                                  -114214;4;0;false;false;0;0;0;;;
                                  -114218;2;0;false;false;;;;;;
                                  -114220;1;0;false;false;0;0;0;;;
                                  -114221;2;0;false;false;;;;;;
                                  -114223;3;0;false;false;63;95;191;;;
                                  -114226;3;0;false;false;;;;;;
                                  -114229;1;0;false;false;63;95;191;;;
                                  -114230;1;0;false;false;;;;;;
                                  -114231;7;0;false;false;63;95;191;;;
                                  -114238;1;0;false;false;;;;;;
                                  -114239;3;0;false;false;63;95;191;;;
                                  -114242;1;0;false;false;;;;;;
                                  -114243;5;0;false;false;63;95;191;;;
                                  -114248;1;0;false;false;;;;;;
                                  -114249;8;0;false;false;63;95;191;;;
                                  -114257;1;0;false;false;;;;;;
                                  -114258;8;0;false;false;63;95;191;;;
                                  -114266;1;0;false;false;;;;;;
                                  -114267;2;0;false;false;63;95;191;;;
                                  -114269;1;0;false;false;;;;;;
                                  -114270;3;0;false;false;63;95;191;;;
                                  -114273;1;0;false;false;;;;;;
                                  -114274;5;0;false;false;63;95;191;;;
                                  -114279;1;0;false;false;;;;;;
                                  -114280;2;0;false;false;63;95;191;;;
                                  -114282;1;0;false;false;;;;;;
                                  -114283;3;0;false;false;63;95;191;;;
                                  -114286;1;0;false;false;;;;;;
                                  -114287;5;0;false;false;63;95;191;;;
                                  -114292;3;0;false;false;;;;;;
                                  -114295;1;0;false;false;63;95;191;;;
                                  -114296;1;0;false;false;;;;;;
                                  -114297;3;0;false;false;127;127;159;;;
                                  -114300;3;0;false;false;;;;;;
                                  -114303;1;0;false;false;63;95;191;;;
                                  -114304;3;0;false;false;;;;;;
                                  -114307;1;0;false;false;63;95;191;;;
                                  -114308;1;0;false;false;;;;;;
                                  -114309;8;1;false;false;127;159;191;;;
                                  -114317;3;0;false;false;63;95;191;;;
                                  -114320;1;0;false;false;;;;;;
                                  -114321;5;0;false;false;63;95;191;;;
                                  -114326;1;0;false;false;;;;;;
                                  -114327;8;0;false;false;63;95;191;;;
                                  -114335;1;0;false;false;;;;;;
                                  -114336;8;0;false;false;63;95;191;;;
                                  -114344;1;0;false;false;;;;;;
                                  -114345;2;0;false;false;63;95;191;;;
                                  -114347;1;0;false;false;;;;;;
                                  -114348;3;0;false;false;63;95;191;;;
                                  -114351;1;0;false;false;;;;;;
                                  -114352;5;0;false;false;63;95;191;;;
                                  -114357;1;0;false;false;;;;;;
                                  -114358;2;0;false;false;63;95;191;;;
                                  -114360;1;0;false;false;;;;;;
                                  -114361;3;0;false;false;63;95;191;;;
                                  -114364;1;0;false;false;;;;;;
                                  -114365;5;0;false;false;63;95;191;;;
                                  -114370;3;0;false;false;;;;;;
                                  -114373;1;0;false;false;63;95;191;;;
                                  -114374;1;0;false;false;;;;;;
                                  -114375;11;1;false;false;127;159;191;;;
                                  -114386;12;0;false;false;63;95;191;;;
                                  -114398;1;0;false;false;;;;;;
                                  -114399;4;0;false;false;127;127;159;;;
                                  -114403;3;0;false;false;;;;;;
                                  -114406;1;0;false;false;63;95;191;;;
                                  -114407;4;0;false;false;;;;;;
                                  -114411;4;0;false;false;127;127;159;;;
                                  -114415;21;0;false;false;63;95;191;;;
                                  -114436;1;0;false;false;;;;;;
                                  -114437;1;0;false;false;127;127;159;;;
                                  -114438;1;0;false;false;;;;;;
                                  -114439;2;0;false;false;63;95;191;;;
                                  -114441;1;0;false;false;;;;;;
                                  -114442;3;0;false;false;63;95;191;;;
                                  -114445;1;0;false;false;;;;;;
                                  -114446;8;0;false;false;63;95;191;;;
                                  -114454;1;0;false;false;;;;;;
                                  -114455;3;0;false;false;63;95;191;;;
                                  -114458;1;0;false;false;;;;;;
                                  -114459;4;0;false;false;63;95;191;;;
                                  -114463;1;0;false;false;;;;;;
                                  -114464;8;0;false;false;63;95;191;;;
                                  -114472;5;0;false;false;127;127;159;;;
                                  -114477;3;0;false;false;;;;;;
                                  -114480;1;0;false;false;63;95;191;;;
                                  -114481;4;0;false;false;;;;;;
                                  -114485;4;0;false;false;127;127;159;;;
                                  -114489;27;0;false;false;63;95;191;;;
                                  -114516;1;0;false;false;;;;;;
                                  -114517;1;0;false;false;127;127;159;;;
                                  -114518;1;0;false;false;;;;;;
                                  -114519;2;0;false;false;63;95;191;;;
                                  -114521;1;0;false;false;;;;;;
                                  -114522;3;0;false;false;63;95;191;;;
                                  -114525;1;0;false;false;;;;;;
                                  -114526;6;0;false;false;63;95;191;;;
                                  -114532;1;0;false;false;;;;;;
                                  -114533;4;0;false;false;63;95;191;;;
                                  -114537;1;0;false;false;;;;;;
                                  -114538;3;0;false;false;63;95;191;;;
                                  -114541;1;0;false;false;;;;;;
                                  -114542;6;0;false;false;63;95;191;;;
                                  -114548;1;0;false;false;;;;;;
                                  -114549;4;0;false;false;63;95;191;;;
                                  -114553;1;0;false;false;;;;;;
                                  -114554;7;0;false;false;63;95;191;;;
                                  -114561;1;0;false;false;;;;;;
                                  -114562;3;0;false;false;63;95;191;;;
                                  -114565;1;0;false;false;;;;;;
                                  -114566;8;0;false;false;63;95;191;;;
                                  -114574;5;0;false;false;127;127;159;;;
                                  -114579;3;0;false;false;;;;;;
                                  -114582;1;0;false;false;63;95;191;;;
                                  -114583;1;0;false;false;;;;;;
                                  -114584;5;0;false;false;127;127;159;;;
                                  -114589;3;0;false;false;;;;;;
                                  -114592;2;0;false;false;63;95;191;;;
                                  -114594;2;0;false;false;;;;;;
                                  -114596;6;1;false;false;127;0;85;;;
                                  -114602;1;0;false;false;;;;;;
                                  -114603;3;1;false;false;127;0;85;;;
                                  -114606;1;0;false;false;;;;;;
                                  -114607;16;0;false;false;0;0;0;;;
                                  -114623;1;0;false;false;;;;;;
                                  -114624;1;0;false;false;0;0;0;;;
                                  -114625;3;0;false;false;;;;;;
                                  -114628;14;0;false;false;0;0;0;;;
                                  -114642;6;0;false;false;;;;;;
                                  -114648;6;1;false;false;127;0;85;;;
                                  -114654;1;0;false;false;;;;;;
                                  -114655;12;0;false;false;0;0;0;;;
                                  -114667;2;0;false;false;;;;;;
                                  -114669;1;0;false;false;0;0;0;;;
                                  -114670;2;0;false;false;;;;;;
                                  -114672;3;0;false;false;63;95;191;;;
                                  -114675;3;0;false;false;;;;;;
                                  -114678;1;0;false;false;63;95;191;;;
                                  -114679;1;0;false;false;;;;;;
                                  -114680;7;0;false;false;63;95;191;;;
                                  -114687;1;0;false;false;;;;;;
                                  -114688;3;0;false;false;63;95;191;;;
                                  -114691;1;0;false;false;;;;;;
                                  -114692;5;0;false;false;63;95;191;;;
                                  -114697;1;0;false;false;;;;;;
                                  -114698;6;0;false;false;63;95;191;;;
                                  -114704;1;0;false;false;;;;;;
                                  -114705;2;0;false;false;63;95;191;;;
                                  -114707;1;0;false;false;;;;;;
                                  -114708;3;0;false;false;63;95;191;;;
                                  -114711;1;0;false;false;;;;;;
                                  -114712;5;0;false;false;63;95;191;;;
                                  -114717;1;0;false;false;;;;;;
                                  -114718;1;0;false;false;63;95;191;;;
                                  -114719;1;0;false;false;;;;;;
                                  -114720;8;0;false;false;63;95;191;;;
                                  -114728;1;0;false;false;;;;;;
                                  -114729;2;0;false;false;63;95;191;;;
                                  -114731;1;0;false;false;;;;;;
                                  -114732;3;0;false;false;63;95;191;;;
                                  -114735;1;0;false;false;;;;;;
                                  -114736;5;0;false;false;63;95;191;;;
                                  -114741;3;0;false;false;;;;;;
                                  -114744;1;0;false;false;63;95;191;;;
                                  -114745;1;0;false;false;;;;;;
                                  -114746;3;0;false;false;63;95;191;;;
                                  -114749;1;0;false;false;;;;;;
                                  -114750;5;0;false;false;63;95;191;;;
                                  -114755;1;0;false;false;;;;;;
                                  -114756;6;0;false;false;63;95;191;;;
                                  -114762;1;0;false;false;;;;;;
                                  -114763;2;0;false;false;63;95;191;;;
                                  -114765;1;0;false;false;;;;;;
                                  -114766;3;0;false;false;63;95;191;;;
                                  -114769;1;0;false;false;;;;;;
                                  -114770;6;0;false;false;63;95;191;;;
                                  -114776;1;0;false;false;;;;;;
                                  -114777;2;0;false;false;63;95;191;;;
                                  -114779;1;0;false;false;;;;;;
                                  -114780;3;0;false;false;63;95;191;;;
                                  -114783;1;0;false;false;;;;;;
                                  -114784;9;0;false;false;63;95;191;;;
                                  -114793;1;0;false;false;;;;;;
                                  -114794;5;0;false;false;63;95;191;;;
                                  -114799;1;0;false;false;;;;;;
                                  -114800;3;0;false;false;63;95;191;;;
                                  -114803;1;0;false;false;;;;;;
                                  -114804;5;0;false;false;63;95;191;;;
                                  -114809;1;0;false;false;;;;;;
                                  -114810;4;0;false;false;63;95;191;;;
                                  -114814;1;0;false;false;;;;;;
                                  -114815;2;0;false;false;63;95;191;;;
                                  -114817;3;0;false;false;;;;;;
                                  -114820;1;0;false;false;63;95;191;;;
                                  -114821;1;0;false;false;;;;;;
                                  -114822;6;0;false;false;63;95;191;;;
                                  -114828;1;0;false;false;;;;;;
                                  -114829;4;0;false;false;63;95;191;;;
                                  -114833;1;0;false;false;;;;;;
                                  -114834;1;0;false;false;63;95;191;;;
                                  -114835;1;0;false;false;;;;;;
                                  -114836;5;0;false;false;63;95;191;;;
                                  -114841;1;0;false;false;;;;;;
                                  -114842;5;0;false;false;63;95;191;;;
                                  -114847;1;0;false;false;;;;;;
                                  -114848;7;0;false;false;63;95;191;;;
                                  -114855;1;0;false;false;;;;;;
                                  -114856;3;0;false;false;63;95;191;;;
                                  -114859;1;0;false;false;;;;;;
                                  -114860;5;0;false;false;63;95;191;;;
                                  -114865;1;0;false;false;;;;;;
                                  -114866;6;0;false;false;63;95;191;;;
                                  -114872;1;0;false;false;;;;;;
                                  -114873;4;0;false;false;63;95;191;;;
                                  -114877;1;0;false;false;;;;;;
                                  -114878;2;0;false;false;63;95;191;;;
                                  -114880;1;0;false;false;;;;;;
                                  -114881;3;0;false;false;63;95;191;;;
                                  -114884;1;0;false;false;;;;;;
                                  -114885;6;0;false;false;63;95;191;;;
                                  -114891;1;0;false;false;;;;;;
                                  -114892;2;0;false;false;63;95;191;;;
                                  -114894;4;0;false;false;;;;;;
                                  -114898;1;0;false;false;63;95;191;;;
                                  -114899;1;0;false;false;;;;;;
                                  -114900;3;0;false;false;63;95;191;;;
                                  -114903;1;0;false;false;;;;;;
                                  -114904;9;0;false;false;63;95;191;;;
                                  -114913;1;0;false;false;;;;;;
                                  -114914;5;0;false;false;63;95;191;;;
                                  -114919;1;0;false;false;;;;;;
                                  -114920;3;0;false;false;63;95;191;;;
                                  -114923;1;0;false;false;;;;;;
                                  -114924;7;0;false;false;63;95;191;;;
                                  -114931;1;0;false;false;;;;;;
                                  -114932;3;0;false;false;63;95;191;;;
                                  -114935;1;0;false;false;;;;;;
                                  -114936;2;0;false;false;63;95;191;;;
                                  -114938;1;0;false;false;;;;;;
                                  -114939;3;0;false;false;63;95;191;;;
                                  -114942;1;0;false;false;;;;;;
                                  -114943;5;0;false;false;63;95;191;;;
                                  -114948;1;0;false;false;;;;;;
                                  -114949;5;0;false;false;63;95;191;;;
                                  -114954;1;0;false;false;;;;;;
                                  -114955;6;0;false;false;63;95;191;;;
                                  -114961;1;0;false;false;;;;;;
                                  -114962;2;0;false;false;63;95;191;;;
                                  -114964;1;0;false;false;;;;;;
                                  -114965;3;0;false;false;63;95;191;;;
                                  -114968;1;0;false;false;;;;;;
                                  -114969;6;0;false;false;63;95;191;;;
                                  -114975;4;0;false;false;;;;;;
                                  -114979;1;0;false;false;63;95;191;;;
                                  -114980;1;0;false;false;;;;;;
                                  -114981;4;0;false;false;63;95;191;;;
                                  -114985;1;0;false;false;;;;;;
                                  -114986;2;0;false;false;63;95;191;;;
                                  -114988;1;0;false;false;;;;;;
                                  -114989;1;0;false;false;63;95;191;;;
                                  -114990;1;0;false;false;;;;;;
                                  -114991;10;0;false;false;63;95;191;;;
                                  -115001;3;0;false;false;;;;;;
                                  -115004;1;0;false;false;63;95;191;;;
                                  -115005;1;0;false;false;;;;;;
                                  -115006;7;0;false;false;63;95;191;;;
                                  -115013;1;0;false;false;;;;;;
                                  -115014;8;0;false;false;63;95;191;;;
                                  -115022;1;0;false;false;;;;;;
                                  -115023;6;0;false;false;63;95;191;;;
                                  -115029;1;0;false;false;;;;;;
                                  -115030;9;0;false;false;63;95;191;;;
                                  -115039;1;0;false;false;;;;;;
                                  -115040;3;0;false;false;63;95;191;;;
                                  -115043;1;0;false;false;;;;;;
                                  -115044;5;0;false;false;63;95;191;;;
                                  -115049;1;0;false;false;;;;;;
                                  -115050;7;0;false;false;63;95;191;;;
                                  -115057;1;0;false;false;;;;;;
                                  -115058;9;0;false;false;63;95;191;;;
                                  -115067;1;0;false;false;;;;;;
                                  -115068;10;0;false;false;63;95;191;;;
                                  -115078;4;0;false;false;;;;;;
                                  -115082;1;0;false;false;63;95;191;;;
                                  -115083;1;0;false;false;;;;;;
                                  -115084;6;0;false;false;63;95;191;;;
                                  -115090;1;0;false;false;;;;;;
                                  -115091;3;0;false;false;63;95;191;;;
                                  -115094;1;0;false;false;;;;;;
                                  -115095;7;0;false;false;63;95;191;;;
                                  -115102;1;0;false;false;;;;;;
                                  -115103;6;0;false;false;63;95;191;;;
                                  -115109;1;0;false;false;;;;;;
                                  -115110;2;0;false;false;63;95;191;;;
                                  -115112;1;0;false;false;;;;;;
                                  -115113;1;0;false;false;63;95;191;;;
                                  -115114;1;0;false;false;;;;;;
                                  -115115;4;0;false;false;63;95;191;;;
                                  -115119;1;0;false;false;;;;;;
                                  -115120;7;0;false;false;63;95;191;;;
                                  -115127;4;0;false;false;;;;;;
                                  -115131;1;0;false;false;63;95;191;;;
                                  -115132;1;0;false;false;;;;;;
                                  -115133;9;0;false;false;63;95;191;;;
                                  -115142;1;0;false;false;;;;;;
                                  -115143;3;0;false;false;63;95;191;;;
                                  -115146;1;0;false;false;;;;;;
                                  -115147;7;0;false;false;63;95;191;;;
                                  -115154;1;0;false;false;;;;;;
                                  -115155;8;0;false;false;63;95;191;;;
                                  -115163;1;0;false;false;;;;;;
                                  -115164;2;0;false;false;63;95;191;;;
                                  -115166;1;0;false;false;;;;;;
                                  -115167;4;0;false;false;63;95;191;;;
                                  -115171;1;0;false;false;;;;;;
                                  -115172;2;0;false;false;63;95;191;;;
                                  -115174;1;0;false;false;;;;;;
                                  -115175;4;0;false;false;63;95;191;;;
                                  -115179;1;0;false;false;;;;;;
                                  -115180;5;0;false;false;63;95;191;;;
                                  -115185;1;0;false;false;;;;;;
                                  -115186;5;0;false;false;63;95;191;;;
                                  -115191;1;0;false;false;;;;;;
                                  -115192;2;0;false;false;63;95;191;;;
                                  -115194;1;0;false;false;;;;;;
                                  -115195;12;0;false;false;63;95;191;;;
                                  -115207;3;0;false;false;;;;;;
                                  -115210;1;0;false;false;63;95;191;;;
                                  -115211;1;0;false;false;;;;;;
                                  -115212;3;0;false;false;127;127;159;;;
                                  -115215;3;0;false;false;;;;;;
                                  -115218;1;0;false;false;63;95;191;;;
                                  -115219;3;0;false;false;;;;;;
                                  -115222;1;0;false;false;63;95;191;;;
                                  -115223;1;0;false;false;;;;;;
                                  -115224;7;1;false;false;127;159;191;;;
                                  -115231;4;0;false;false;63;95;191;;;
                                  -115235;1;0;false;false;;;;;;
                                  -115236;4;0;false;false;63;95;191;;;
                                  -115240;1;0;false;false;;;;;;
                                  -115241;2;0;false;false;63;95;191;;;
                                  -115243;1;0;false;false;;;;;;
                                  -115244;3;0;false;false;63;95;191;;;
                                  -115247;1;0;false;false;;;;;;
                                  -115248;4;0;false;false;63;95;191;;;
                                  -115252;1;0;false;false;;;;;;
                                  -115253;2;0;false;false;63;95;191;;;
                                  -115255;1;0;false;false;;;;;;
                                  -115256;9;0;false;false;63;95;191;;;
                                  -115265;1;0;false;false;;;;;;
                                  -115266;3;0;false;false;63;95;191;;;
                                  -115269;1;0;false;false;;;;;;
                                  -115270;6;0;false;false;63;95;191;;;
                                  -115276;1;0;false;false;;;;;;
                                  -115277;2;0;false;false;63;95;191;;;
                                  -115279;3;0;false;false;;;;;;
                                  -115282;1;0;false;false;63;95;191;;;
                                  -115283;1;0;false;false;;;;;;
                                  -115284;7;1;false;false;127;159;191;;;
                                  -115291;10;0;false;false;63;95;191;;;
                                  -115301;1;0;false;false;;;;;;
                                  -115302;6;0;false;false;63;95;191;;;
                                  -115308;1;0;false;false;;;;;;
                                  -115309;2;0;false;false;63;95;191;;;
                                  -115311;1;0;false;false;;;;;;
                                  -115312;3;0;false;false;63;95;191;;;
                                  -115315;1;0;false;false;;;;;;
                                  -115316;5;0;false;false;63;95;191;;;
                                  -115321;1;0;false;false;;;;;;
                                  -115322;9;0;false;false;63;95;191;;;
                                  -115331;1;0;false;false;;;;;;
                                  -115332;2;0;false;false;63;95;191;;;
                                  -115334;1;0;false;false;;;;;;
                                  -115335;3;0;false;false;63;95;191;;;
                                  -115338;1;0;false;false;;;;;;
                                  -115339;5;0;false;false;63;95;191;;;
                                  -115344;4;0;false;false;;;;;;
                                  -115348;1;0;false;false;63;95;191;;;
                                  -115349;2;0;false;false;;;;;;
                                  -115351;1;0;false;false;63;95;191;;;
                                  -115352;1;0;false;false;;;;;;
                                  -115353;5;0;false;false;63;95;191;;;
                                  -115358;1;0;false;false;;;;;;
                                  -115359;4;0;false;false;63;95;191;;;
                                  -115363;1;0;false;false;;;;;;
                                  -115364;3;0;false;false;63;95;191;;;
                                  -115367;1;0;false;false;;;;;;
                                  -115368;9;0;false;false;63;95;191;;;
                                  -115377;1;0;false;false;;;;;;
                                  -115378;2;0;false;false;63;95;191;;;
                                  -115380;1;0;false;false;;;;;;
                                  -115381;3;0;false;false;63;95;191;;;
                                  -115384;1;0;false;false;;;;;;
                                  -115385;9;0;false;false;63;95;191;;;
                                  -115394;3;0;false;false;;;;;;
                                  -115397;1;0;false;false;63;95;191;;;
                                  -115398;1;0;false;false;;;;;;
                                  -115399;7;1;false;false;127;159;191;;;
                                  -115406;11;0;false;false;63;95;191;;;
                                  -115417;1;0;false;false;;;;;;
                                  -115418;1;0;false;false;63;95;191;;;
                                  -115419;1;0;false;false;;;;;;
                                  -115420;8;0;false;false;63;95;191;;;
                                  -115428;1;0;false;false;;;;;;
                                  -115429;2;0;false;false;63;95;191;;;
                                  -115431;1;0;false;false;;;;;;
                                  -115432;3;0;false;false;63;95;191;;;
                                  -115435;1;0;false;false;;;;;;
                                  -115436;4;0;false;false;63;95;191;;;
                                  -115440;3;0;false;false;;;;;;
                                  -115443;1;0;false;false;63;95;191;;;
                                  -115444;1;0;false;false;;;;;;
                                  -115445;8;1;false;false;127;159;191;;;
                                  -115453;5;0;false;false;63;95;191;;;
                                  -115458;1;0;false;false;;;;;;
                                  -115459;6;0;false;false;63;95;191;;;
                                  -115465;1;0;false;false;;;;;;
                                  -115466;2;0;false;false;63;95;191;;;
                                  -115468;1;0;false;false;;;;;;
                                  -115469;3;0;false;false;63;95;191;;;
                                  -115472;1;0;false;false;;;;;;
                                  -115473;1;0;false;false;63;95;191;;;
                                  -115474;1;0;false;false;;;;;;
                                  -115475;8;0;false;false;63;95;191;;;
                                  -115483;1;0;false;false;;;;;;
                                  -115484;8;0;false;false;63;95;191;;;
                                  -115492;1;0;false;false;;;;;;
                                  -115493;2;0;false;false;63;95;191;;;
                                  -115495;1;0;false;false;;;;;;
                                  -115496;3;0;false;false;63;95;191;;;
                                  -115499;1;0;false;false;;;;;;
                                  -115500;5;0;false;false;63;95;191;;;
                                  -115505;1;0;false;false;;;;;;
                                  -115506;2;0;false;false;63;95;191;;;
                                  -115508;1;0;false;false;;;;;;
                                  -115509;3;0;false;false;63;95;191;;;
                                  -115512;1;0;false;false;;;;;;
                                  -115513;5;0;false;false;63;95;191;;;
                                  -115518;3;0;false;false;;;;;;
                                  -115521;2;0;false;false;63;95;191;;;
                                  -115523;2;0;false;false;;;;;;
                                  -115525;3;1;false;false;127;0;85;;;
                                  -115528;1;0;false;false;;;;;;
                                  -115529;19;0;false;false;0;0;0;;;
                                  -115548;1;0;false;false;;;;;;
                                  -115549;5;0;false;false;0;0;0;;;
                                  -115554;1;0;false;false;;;;;;
                                  -115555;3;1;false;false;127;0;85;;;
                                  -115558;1;0;false;false;;;;;;
                                  -115559;11;0;false;false;0;0;0;;;
                                  -115570;1;0;false;false;;;;;;
                                  -115571;3;1;false;false;127;0;85;;;
                                  -115574;1;0;false;false;;;;;;
                                  -115575;12;0;false;false;0;0;0;;;
                                  -115587;1;0;false;false;;;;;;
                                  -115588;1;0;false;false;0;0;0;;;
                                  -115589;3;0;false;false;;;;;;
                                  -115592;3;1;false;false;127;0;85;;;
                                  -115595;1;0;false;false;;;;;;
                                  -115596;1;0;false;false;0;0;0;;;
                                  -115597;1;0;false;false;;;;;;
                                  -115598;1;0;false;false;0;0;0;;;
                                  -115599;1;0;false;false;;;;;;
                                  -115600;11;0;false;false;0;0;0;;;
                                  -115611;1;0;false;false;;;;;;
                                  -115612;1;0;false;false;0;0;0;;;
                                  -115613;1;0;false;false;;;;;;
                                  -115614;10;0;false;false;0;0;0;;;
                                  -115624;1;0;false;false;;;;;;
                                  -115625;1;0;false;false;0;0;0;;;
                                  -115626;1;0;false;false;;;;;;
                                  -115627;23;0;false;false;0;0;0;;;
                                  -115650;3;0;false;false;;;;;;
                                  -115653;10;0;false;false;0;0;0;;;
                                  -115663;1;0;false;false;;;;;;
                                  -115664;6;0;false;false;0;0;0;;;
                                  -115670;1;0;false;false;;;;;;
                                  -115671;1;0;false;false;0;0;0;;;
                                  -115672;1;0;false;false;;;;;;
                                  -115673;28;0;false;false;0;0;0;;;
                                  -115701;1;0;false;false;;;;;;
                                  -115702;12;0;false;false;0;0;0;;;
                                  -115714;3;0;false;false;;;;;;
                                  -115717;3;1;false;false;127;0;85;;;
                                  -115720;2;0;false;false;0;0;0;;;
                                  -115722;1;0;false;false;;;;;;
                                  -115723;8;0;false;false;0;0;0;;;
                                  -115731;1;0;false;false;;;;;;
                                  -115732;1;0;false;false;0;0;0;;;
                                  -115733;1;0;false;false;;;;;;
                                  -115734;3;1;false;false;127;0;85;;;
                                  -115737;1;0;false;false;;;;;;
                                  -115738;3;1;false;false;127;0;85;;;
                                  -115741;4;0;false;false;0;0;0;;;
                                  -115745;3;0;false;false;;;;;;
                                  -115748;3;1;false;false;127;0;85;;;
                                  -115751;1;0;false;false;;;;;;
                                  -115752;12;0;false;false;0;0;0;;;
                                  -115764;1;0;false;false;;;;;;
                                  -115765;1;0;false;false;0;0;0;;;
                                  -115766;1;0;false;false;;;;;;
                                  -115767;19;0;false;false;0;0;0;;;
                                  -115786;1;0;false;false;;;;;;
                                  -115787;2;0;false;false;0;0;0;;;
                                  -115789;1;0;false;false;;;;;;
                                  -115790;10;0;false;false;0;0;0;;;
                                  -115800;3;0;false;false;;;;;;
                                  -115803;9;0;false;false;0;0;0;;;
                                  -115812;1;0;false;false;;;;;;
                                  -115813;1;0;false;false;0;0;0;;;
                                  -115814;1;0;false;false;;;;;;
                                  -115815;5;1;false;false;127;0;85;;;
                                  -115820;1;0;false;false;0;0;0;;;
                                  -115821;3;0;false;false;;;;;;
                                  -115824;2;1;false;false;127;0;85;;;
                                  -115826;1;0;false;false;;;;;;
                                  -115827;12;0;false;false;0;0;0;;;
                                  -115839;1;0;false;false;;;;;;
                                  -115840;2;0;false;false;0;0;0;;;
                                  -115842;1;0;false;false;;;;;;
                                  -115843;2;0;false;false;0;0;0;;;
                                  -115845;1;0;false;false;;;;;;
                                  -115846;1;0;false;false;0;0;0;;;
                                  -115847;4;0;false;false;;;;;;
                                  -115851;3;1;false;false;127;0;85;;;
                                  -115854;1;0;false;false;;;;;;
                                  -115855;10;0;false;false;0;0;0;;;
                                  -115865;1;0;false;false;;;;;;
                                  -115866;1;0;false;false;0;0;0;;;
                                  -115867;1;0;false;false;;;;;;
                                  -115868;14;0;false;false;0;0;0;;;
                                  -115882;4;0;false;false;;;;;;
                                  -115886;2;1;false;false;127;0;85;;;
                                  -115888;1;0;false;false;;;;;;
                                  -115889;13;0;false;false;0;0;0;;;
                                  -115902;1;0;false;false;;;;;;
                                  -115903;1;0;false;false;0;0;0;;;
                                  -115904;1;0;false;false;;;;;;
                                  -115905;11;0;false;false;0;0;0;;;
                                  -115916;1;0;false;false;;;;;;
                                  -115917;2;0;false;false;0;0;0;;;
                                  -115919;1;0;false;false;;;;;;
                                  -115920;11;0;false;false;0;0;0;;;
                                  -115931;1;0;false;false;;;;;;
                                  -115932;1;0;false;false;0;0;0;;;
                                  -115933;5;0;false;false;;;;;;
                                  -115938;12;0;false;false;0;0;0;;;
                                  -115950;1;0;false;false;;;;;;
                                  -115951;1;0;false;false;0;0;0;;;
                                  -115952;1;0;false;false;;;;;;
                                  -115953;11;0;false;false;0;0;0;;;
                                  -115964;5;0;false;false;;;;;;
                                  -115969;9;0;false;false;0;0;0;;;
                                  -115978;1;0;false;false;;;;;;
                                  -115979;1;0;false;false;0;0;0;;;
                                  -115980;1;0;false;false;;;;;;
                                  -115981;4;1;false;false;127;0;85;;;
                                  -115985;1;0;false;false;0;0;0;;;
                                  -115986;4;0;false;false;;;;;;
                                  -115990;1;0;false;false;0;0;0;;;
                                  -115991;1;0;false;false;;;;;;
                                  -115992;4;1;false;false;127;0;85;;;
                                  -115996;1;0;false;false;;;;;;
                                  -115997;1;0;false;false;0;0;0;;;
                                  -115998;5;0;false;false;;;;;;
                                  -116003;3;1;false;false;127;0;85;;;
                                  -116006;1;0;false;false;;;;;;
                                  -116007;6;0;false;false;0;0;0;;;
                                  -116013;5;0;false;false;;;;;;
                                  -116018;3;1;false;false;127;0;85;;;
                                  -116021;1;0;false;false;;;;;;
                                  -116022;6;0;false;false;0;0;0;;;
                                  -116028;1;0;false;false;;;;;;
                                  -116029;1;0;false;false;0;0;0;;;
                                  -116030;1;0;false;false;;;;;;
                                  -116031;13;0;false;false;0;0;0;;;
                                  -116044;5;0;false;false;;;;;;
                                  -116049;5;1;false;false;127;0;85;;;
                                  -116054;1;0;false;false;;;;;;
                                  -116055;7;0;false;false;0;0;0;;;
                                  -116062;1;0;false;false;;;;;;
                                  -116063;1;0;false;false;0;0;0;;;
                                  -116064;1;0;false;false;;;;;;
                                  -116065;1;0;false;false;0;0;0;;;
                                  -116066;1;0;false;false;;;;;;
                                  -116067;2;0;false;false;0;0;0;;;
                                  -116069;1;0;false;false;;;;;;
                                  -116070;39;0;false;false;0;0;0;;;
                                  -116109;1;0;false;false;;;;;;
                                  -116110;9;0;false;false;0;0;0;;;
                                  -116119;5;0;false;false;;;;;;
                                  -116124;2;1;false;false;127;0;85;;;
                                  -116126;1;0;false;false;;;;;;
                                  -116127;7;0;false;false;0;0;0;;;
                                  -116134;1;0;false;false;;;;;;
                                  -116135;2;0;false;false;0;0;0;;;
                                  -116137;1;0;false;false;;;;;;
                                  -116138;1;0;false;false;0;0;0;;;
                                  -116139;1;0;false;false;;;;;;
                                  -116140;2;0;false;false;0;0;0;;;
                                  -116142;1;0;false;false;;;;;;
                                  -116143;39;0;false;false;0;0;0;;;
                                  -116182;1;0;false;false;;;;;;
                                  -116183;1;0;false;false;0;0;0;;;
                                  -116184;6;0;false;false;;;;;;
                                  -116190;5;0;false;false;0;0;0;;;
                                  -116195;1;0;false;false;;;;;;
                                  -116196;1;0;false;false;0;0;0;;;
                                  -116197;1;0;false;false;;;;;;
                                  -116198;12;0;false;false;0;0;0;;;
                                  -116210;1;0;false;false;;;;;;
                                  -116211;1;0;false;false;0;0;0;;;
                                  -116212;1;0;false;false;;;;;;
                                  -116213;1;0;false;false;0;0;0;;;
                                  -116214;1;0;false;false;;;;;;
                                  -116215;1;0;false;false;0;0;0;;;
                                  -116216;1;0;false;false;;;;;;
                                  -116217;2;0;false;false;0;0;0;;;
                                  -116219;5;0;false;false;;;;;;
                                  -116224;1;0;false;false;0;0;0;;;
                                  -116225;1;0;false;false;;;;;;
                                  -116226;4;1;false;false;127;0;85;;;
                                  -116230;1;0;false;false;;;;;;
                                  -116231;1;0;false;false;0;0;0;;;
                                  -116232;6;0;false;false;;;;;;
                                  -116238;5;0;false;false;0;0;0;;;
                                  -116243;1;0;false;false;;;;;;
                                  -116244;1;0;false;false;0;0;0;;;
                                  -116245;1;0;false;false;;;;;;
                                  -116246;23;0;false;false;0;0;0;;;
                                  -116269;1;0;false;false;;;;;;
                                  -116270;1;0;false;false;0;0;0;;;
                                  -116271;1;0;false;false;;;;;;
                                  -116272;4;0;false;false;0;0;0;;;
                                  -116276;5;0;false;false;;;;;;
                                  -116281;1;0;false;false;0;0;0;;;
                                  -116282;5;0;false;false;;;;;;
                                  -116287;12;0;false;false;0;0;0;;;
                                  -116299;1;0;false;false;;;;;;
                                  -116300;2;0;false;false;0;0;0;;;
                                  -116302;1;0;false;false;;;;;;
                                  -116303;12;0;false;false;0;0;0;;;
                                  -116315;5;0;false;false;;;;;;
                                  -116320;3;1;false;false;127;0;85;;;
                                  -116323;1;0;false;false;;;;;;
                                  -116324;13;0;false;false;0;0;0;;;
                                  -116337;1;0;false;false;;;;;;
                                  -116338;1;0;false;false;0;0;0;;;
                                  -116339;1;0;false;false;;;;;;
                                  -116340;29;0;false;false;0;0;0;;;
                                  -116369;1;0;false;false;;;;;;
                                  -116370;1;0;false;false;0;0;0;;;
                                  -116371;1;0;false;false;;;;;;
                                  -116372;4;0;false;false;0;0;0;;;
                                  -116376;5;0;false;false;;;;;;
                                  -116381;9;0;false;false;0;0;0;;;
                                  -116390;2;0;false;false;;;;;;
                                  -116392;1;0;false;false;0;0;0;;;
                                  -116393;1;0;false;false;;;;;;
                                  -116394;6;0;false;false;0;0;0;;;
                                  -116400;1;0;false;false;;;;;;
                                  -116401;1;0;false;false;0;0;0;;;
                                  -116402;1;0;false;false;;;;;;
                                  -116403;14;0;false;false;0;0;0;;;
                                  -116417;1;0;false;false;;;;;;
                                  -116418;2;0;false;false;0;0;0;;;
                                  -116420;1;0;false;false;;;;;;
                                  -116421;2;0;false;false;0;0;0;;;
                                  -116423;4;0;false;false;;;;;;
                                  -116427;1;0;false;false;0;0;0;;;
                                  -116428;3;0;false;false;;;;;;
                                  -116431;1;0;false;false;0;0;0;;;
                                  -116432;3;0;false;false;;;;;;
                                  -116435;35;0;false;false;0;0;0;;;
                                  -116470;3;0;false;false;;;;;;
                                  -116473;6;1;false;false;127;0;85;;;
                                  -116479;1;0;false;false;;;;;;
                                  -116480;13;0;false;false;0;0;0;;;
                                  -116493;2;0;false;false;;;;;;
                                  -116495;1;0;false;false;0;0;0;;;
                                  -116496;2;0;false;false;;;;;;
                                  -116498;3;0;false;false;63;95;191;;;
                                  -116501;3;0;false;false;;;;;;
                                  -116504;1;0;false;false;63;95;191;;;
                                  -116505;1;0;false;false;;;;;;
                                  -116506;7;0;false;false;63;95;191;;;
                                  -116513;1;0;false;false;;;;;;
                                  -116514;3;0;false;false;63;95;191;;;
                                  -116517;1;0;false;false;;;;;;
                                  -116518;5;0;false;false;63;95;191;;;
                                  -116523;1;0;false;false;;;;;;
                                  -116524;6;0;false;false;63;95;191;;;
                                  -116530;3;0;false;false;;;;;;
                                  -116533;1;0;false;false;63;95;191;;;
                                  -116534;1;0;false;false;;;;;;
                                  -116535;3;0;false;false;127;127;159;;;
                                  -116538;3;0;false;false;;;;;;
                                  -116541;1;0;false;false;63;95;191;;;
                                  -116542;3;0;false;false;;;;;;
                                  -116545;1;0;false;false;63;95;191;;;
                                  -116546;1;0;false;false;;;;;;
                                  -116547;8;1;false;false;127;159;191;;;
                                  -116555;3;0;false;false;63;95;191;;;
                                  -116558;1;0;false;false;;;;;;
                                  -116559;5;0;false;false;63;95;191;;;
                                  -116564;1;0;false;false;;;;;;
                                  -116565;6;0;false;false;63;95;191;;;
                                  -116571;1;0;false;false;;;;;;
                                  -116572;1;0;false;false;63;95;191;;;
                                  -116573;1;0;false;false;;;;;;
                                  -116574;2;0;false;false;63;95;191;;;
                                  -116576;1;0;false;false;;;;;;
                                  -116577;5;0;false;false;63;95;191;;;
                                  -116582;1;0;false;false;;;;;;
                                  -116583;2;0;false;false;63;95;191;;;
                                  -116585;1;0;false;false;;;;;;
                                  -116586;5;0;false;false;63;95;191;;;
                                  -116591;3;0;false;false;;;;;;
                                  -116594;2;0;false;false;63;95;191;;;
                                  -116596;2;0;false;false;;;;;;
                                  -116598;3;1;false;false;127;0;85;;;
                                  -116601;1;0;false;false;;;;;;
                                  -116602;15;0;false;false;0;0;0;;;
                                  -116617;1;0;false;false;;;;;;
                                  -116618;1;0;false;false;0;0;0;;;
                                  -116619;3;0;false;false;;;;;;
                                  -116622;5;0;false;false;0;0;0;;;
                                  -116627;1;0;false;false;;;;;;
                                  -116628;5;0;false;false;0;0;0;;;
                                  -116633;1;0;false;false;;;;;;
                                  -116634;1;0;false;false;0;0;0;;;
                                  -116635;1;0;false;false;;;;;;
                                  -116636;11;0;false;false;0;0;0;;;
                                  -116647;3;0;false;false;;;;;;
                                  -116650;2;1;false;false;127;0;85;;;
                                  -116652;1;0;false;false;;;;;;
                                  -116653;6;0;false;false;0;0;0;;;
                                  -116659;1;0;false;false;;;;;;
                                  -116660;2;0;false;false;0;0;0;;;
                                  -116662;1;0;false;false;;;;;;
                                  -116663;4;1;false;false;127;0;85;;;
                                  -116667;1;0;false;false;0;0;0;;;
                                  -116668;1;0;false;false;;;;;;
                                  -116669;6;1;false;false;127;0;85;;;
                                  -116675;1;0;false;false;;;;;;
                                  -116676;2;0;false;false;0;0;0;;;
                                  -116678;3;0;false;false;;;;;;
                                  -116681;6;1;false;false;127;0;85;;;
                                  -116687;1;0;false;false;;;;;;
                                  -116688;18;0;false;false;0;0;0;;;
                                  -116706;2;0;false;false;;;;;;
                                  -116708;1;0;false;false;0;0;0;;;
                                  -116709;2;0;false;false;;;;;;
                                  -116711;6;0;false;false;0;0;0;;;
                                  -116717;1;0;false;false;;;;;;
                                  -116718;20;0;false;false;0;0;0;;;
                                  -116738;3;1;false;false;127;0;85;;;
                                  -116741;1;0;false;false;;;;;;
                                  -116742;14;0;false;false;0;0;0;;;
                                  -116756;1;0;false;false;;;;;;
                                  -116757;1;0;false;false;0;0;0;;;
                                  -116758;3;0;false;false;;;;;;
                                  -116761;12;0;false;false;0;0;0;;;
                                  -116773;1;0;false;false;;;;;;
                                  -116774;17;0;false;false;0;0;0;;;
                                  -116791;1;0;false;false;;;;;;
                                  -116792;1;0;false;false;0;0;0;;;
                                  -116793;1;0;false;false;;;;;;
                                  -116794;27;0;false;false;0;0;0;;;
                                  -116821;3;0;false;false;;;;;;
                                  -116824;6;1;false;false;127;0;85;;;
                                  -116830;1;0;false;false;;;;;;
                                  -116831;40;0;false;false;0;0;0;;;
                                  -116871;1;0;false;false;;;;;;
                                  -116872;15;0;false;false;0;0;0;;;
                                  -116887;2;0;false;false;;;;;;
                                  -116889;1;0;false;false;0;0;0;;;
                                  -116890;2;0;false;false;;;;;;
                                  -116892;3;1;false;false;127;0;85;;;
                                  -116895;1;0;false;false;;;;;;
                                  -116896;15;0;false;false;0;0;0;;;
                                  -116911;3;1;false;false;127;0;85;;;
                                  -116914;1;0;false;false;;;;;;
                                  -116915;7;0;false;false;0;0;0;;;
                                  -116922;1;0;false;false;;;;;;
                                  -116923;3;1;false;false;127;0;85;;;
                                  -116926;1;0;false;false;;;;;;
                                  -116927;10;0;false;false;0;0;0;;;
                                  -116937;1;0;false;false;;;;;;
                                  -116938;1;0;false;false;0;0;0;;;
                                  -116939;3;0;false;false;;;;;;
                                  -116942;6;0;false;false;0;0;0;;;
                                  -116948;1;0;false;false;;;;;;
                                  -116949;4;0;false;false;0;0;0;;;
                                  -116953;1;0;false;false;;;;;;
                                  -116954;1;0;false;false;0;0;0;;;
                                  -116955;1;0;false;false;;;;;;
                                  -116956;27;0;false;false;0;0;0;;;
                                  -116983;3;0;false;false;;;;;;
                                  -116986;3;1;false;false;127;0;85;;;
                                  -116989;1;0;false;false;;;;;;
                                  -116990;10;0;false;false;0;0;0;;;
                                  -117000;1;0;false;false;;;;;;
                                  -117001;1;0;false;false;0;0;0;;;
                                  -117002;1;0;false;false;;;;;;
                                  -117003;35;0;false;false;0;0;0;;;
                                  -117038;4;0;false;false;;;;;;
                                  -117042;10;0;false;false;0;0;0;;;
                                  -117052;1;0;false;false;;;;;;
                                  -117053;6;0;false;false;0;0;0;;;
                                  -117059;1;0;false;false;;;;;;
                                  -117060;1;0;false;false;0;0;0;;;
                                  -117061;1;0;false;false;;;;;;
                                  -117062;28;0;false;false;0;0;0;;;
                                  -117090;1;0;false;false;;;;;;
                                  -117091;12;0;false;false;0;0;0;;;
                                  -117103;3;0;false;false;;;;;;
                                  -117106;6;0;false;false;0;0;0;;;
                                  -117112;1;0;false;false;;;;;;
                                  -117113;2;0;false;false;0;0;0;;;
                                  -117115;1;0;false;false;;;;;;
                                  -117116;11;0;false;false;0;0;0;;;
                                  -117127;3;0;false;false;;;;;;
                                  -117130;6;0;false;false;0;0;0;;;
                                  -117136;1;0;false;false;;;;;;
                                  -117137;1;0;false;false;0;0;0;;;
                                  -117138;1;0;false;false;;;;;;
                                  -117139;28;0;false;false;0;0;0;;;
                                  -117167;1;0;false;false;;;;;;
                                  -117168;22;0;false;false;0;0;0;;;
                                  -117190;3;0;false;false;;;;;;
                                  -117193;6;0;false;false;0;0;0;;;
                                  -117199;1;0;false;false;;;;;;
                                  -117200;2;0;false;false;0;0;0;;;
                                  -117202;1;0;false;false;;;;;;
                                  -117203;11;0;false;false;0;0;0;;;
                                  -117214;3;0;false;false;;;;;;
                                  -117217;35;0;false;false;0;0;0;;;
                                  -117252;3;0;false;false;;;;;;
                                  -117255;6;1;false;false;127;0;85;;;
                                  -117261;1;0;false;false;;;;;;
                                  -117262;7;0;false;false;0;0;0;;;
                                  -117269;2;0;false;false;;;;;;
                                  -117271;1;0;false;false;0;0;0;;;
                                  -117272;2;0;false;false;;;;;;
                                  -117274;3;1;false;false;127;0;85;;;
                                  -117277;1;0;false;false;;;;;;
                                  -117278;19;0;false;false;0;0;0;;;
                                  -117297;3;1;false;false;127;0;85;;;
                                  -117300;1;0;false;false;;;;;;
                                  -117301;7;0;false;false;0;0;0;;;
                                  -117308;1;0;false;false;;;;;;
                                  -117309;3;1;false;false;127;0;85;;;
                                  -117312;1;0;false;false;;;;;;
                                  -117313;10;0;false;false;0;0;0;;;
                                  -117323;1;0;false;false;;;;;;
                                  -117324;1;0;false;false;0;0;0;;;
                                  -117325;3;0;false;false;;;;;;
                                  -117328;6;0;false;false;0;0;0;;;
                                  -117334;1;0;false;false;;;;;;
                                  -117335;4;0;false;false;0;0;0;;;
                                  -117339;1;0;false;false;;;;;;
                                  -117340;1;0;false;false;0;0;0;;;
                                  -117341;1;0;false;false;;;;;;
                                  -117342;27;0;false;false;0;0;0;;;
                                  -117369;3;0;false;false;;;;;;
                                  -117372;3;1;false;false;127;0;85;;;
                                  -117375;1;0;false;false;;;;;;
                                  -117376;10;0;false;false;0;0;0;;;
                                  -117386;1;0;false;false;;;;;;
                                  -117387;1;0;false;false;0;0;0;;;
                                  -117388;1;0;false;false;;;;;;
                                  -117389;35;0;false;false;0;0;0;;;
                                  -117424;4;0;false;false;;;;;;
                                  -117428;10;0;false;false;0;0;0;;;
                                  -117438;1;0;false;false;;;;;;
                                  -117439;6;0;false;false;0;0;0;;;
                                  -117445;1;0;false;false;;;;;;
                                  -117446;1;0;false;false;0;0;0;;;
                                  -117447;1;0;false;false;;;;;;
                                  -117448;28;0;false;false;0;0;0;;;
                                  -117476;1;0;false;false;;;;;;
                                  -117477;12;0;false;false;0;0;0;;;
                                  -117489;3;0;false;false;;;;;;
                                  -117492;6;0;false;false;0;0;0;;;
                                  -117498;1;0;false;false;;;;;;
                                  -117499;2;0;false;false;0;0;0;;;
                                  -117501;1;0;false;false;;;;;;
                                  -117502;11;0;false;false;0;0;0;;;
                                  -117513;3;0;false;false;;;;;;
                                  -117516;6;0;false;false;0;0;0;;;
                                  -117522;1;0;false;false;;;;;;
                                  -117523;1;0;false;false;0;0;0;;;
                                  -117524;1;0;false;false;;;;;;
                                  -117525;32;0;false;false;0;0;0;;;
                                  -117557;1;0;false;false;;;;;;
                                  -117558;22;0;false;false;0;0;0;;;
                                  -117580;3;0;false;false;;;;;;
                                  -117583;6;0;false;false;0;0;0;;;
                                  -117589;1;0;false;false;;;;;;
                                  -117590;2;0;false;false;0;0;0;;;
                                  -117592;1;0;false;false;;;;;;
                                  -117593;11;0;false;false;0;0;0;;;
                                  -117604;3;0;false;false;;;;;;
                                  -117607;35;0;false;false;0;0;0;;;
                                  -117642;3;0;false;false;;;;;;
                                  -117645;6;1;false;false;127;0;85;;;
                                  -117651;1;0;false;false;;;;;;
                                  -117652;7;0;false;false;0;0;0;;;
                                  -117659;2;0;false;false;;;;;;
                                  -117661;1;0;false;false;0;0;0;;;
                                  -117662;2;0;false;false;;;;;;
                                  -117664;3;0;false;false;63;95;191;;;
                                  -117667;3;0;false;false;;;;;;
                                  -117670;1;0;false;false;63;95;191;;;
                                  -117671;1;0;false;false;;;;;;
                                  -117672;7;0;false;false;63;95;191;;;
                                  -117679;1;0;false;false;;;;;;
                                  -117680;3;0;false;false;63;95;191;;;
                                  -117683;1;0;false;false;;;;;;
                                  -117684;7;0;false;false;63;95;191;;;
                                  -117691;1;0;false;false;;;;;;
                                  -117692;14;0;false;false;63;95;191;;;
                                  -117706;1;0;false;false;;;;;;
                                  -117707;4;0;false;false;63;95;191;;;
                                  -117711;1;0;false;false;;;;;;
                                  -117712;2;0;false;false;63;95;191;;;
                                  -117714;1;0;false;false;;;;;;
                                  -117715;4;0;false;false;63;95;191;;;
                                  -117719;1;0;false;false;;;;;;
                                  -117720;3;0;false;false;63;95;191;;;
                                  -117723;1;0;false;false;;;;;;
                                  -117724;4;0;false;false;63;95;191;;;
                                  -117728;1;0;false;false;;;;;;
                                  -117729;7;0;false;false;63;95;191;;;
                                  -117736;3;0;false;false;;;;;;
                                  -117739;1;0;false;false;63;95;191;;;
                                  -117740;1;0;false;false;;;;;;
                                  -117741;2;0;false;false;63;95;191;;;
                                  -117743;1;0;false;false;;;;;;
                                  -117744;4;0;false;false;63;95;191;;;
                                  -117748;1;0;false;false;;;;;;
                                  -117749;2;0;false;false;63;95;191;;;
                                  -117751;1;0;false;false;;;;;;
                                  -117752;2;0;false;false;63;95;191;;;
                                  -117754;1;0;false;false;;;;;;
                                  -117755;4;0;false;false;63;95;191;;;
                                  -117759;1;0;false;false;;;;;;
                                  -117760;7;0;false;false;63;95;191;;;
                                  -117767;1;0;false;false;;;;;;
                                  -117768;7;0;false;false;63;95;191;;;
                                  -117775;1;0;false;false;;;;;;
                                  -117776;14;0;false;false;63;95;191;;;
                                  -117790;1;0;false;false;;;;;;
                                  -117791;3;0;false;false;63;95;191;;;
                                  -117794;1;0;false;false;;;;;;
                                  -117795;4;0;false;false;63;95;191;;;
                                  -117799;1;0;false;false;;;;;;
                                  -117800;4;0;false;false;63;95;191;;;
                                  -117804;3;0;false;false;;;;;;
                                  -117807;1;0;false;false;63;95;191;;;
                                  -117808;1;0;false;false;;;;;;
                                  -117809;3;0;false;false;127;127;159;;;
                                  -117812;3;0;false;false;;;;;;
                                  -117815;1;0;false;false;63;95;191;;;
                                  -117816;3;0;false;false;;;;;;
                                  -117819;1;0;false;false;63;95;191;;;
                                  -117820;1;0;false;false;;;;;;
                                  -117821;8;1;false;false;127;159;191;;;
                                  -117829;7;0;false;false;63;95;191;;;
                                  -117836;1;0;false;false;;;;;;
                                  -117837;14;0;false;false;63;95;191;;;
                                  -117851;1;0;false;false;;;;;;
                                  -117852;4;0;false;false;63;95;191;;;
                                  -117856;1;0;false;false;;;;;;
                                  -117857;2;0;false;false;63;95;191;;;
                                  -117859;1;0;false;false;;;;;;
                                  -117860;4;0;false;false;63;95;191;;;
                                  -117864;1;0;false;false;;;;;;
                                  -117865;3;0;false;false;63;95;191;;;
                                  -117868;1;0;false;false;;;;;;
                                  -117869;4;0;false;false;63;95;191;;;
                                  -117873;1;0;false;false;;;;;;
                                  -117874;7;0;false;false;63;95;191;;;
                                  -117881;1;0;false;false;;;;;;
                                  -117882;2;0;false;false;63;95;191;;;
                                  -117884;1;0;false;false;;;;;;
                                  -117885;4;0;false;false;63;95;191;;;
                                  -117889;4;0;false;false;;;;;;
                                  -117893;1;0;false;false;63;95;191;;;
                                  -117894;1;0;false;false;;;;;;
                                  -117895;2;0;false;false;63;95;191;;;
                                  -117897;1;0;false;false;;;;;;
                                  -117898;2;0;false;false;63;95;191;;;
                                  -117900;1;0;false;false;;;;;;
                                  -117901;4;0;false;false;63;95;191;;;
                                  -117905;1;0;false;false;;;;;;
                                  -117906;7;0;false;false;63;95;191;;;
                                  -117913;1;0;false;false;;;;;;
                                  -117914;7;0;false;false;63;95;191;;;
                                  -117921;1;0;false;false;;;;;;
                                  -117922;14;0;false;false;63;95;191;;;
                                  -117936;1;0;false;false;;;;;;
                                  -117937;3;0;false;false;63;95;191;;;
                                  -117940;1;0;false;false;;;;;;
                                  -117941;4;0;false;false;63;95;191;;;
                                  -117945;1;0;false;false;;;;;;
                                  -117946;4;0;false;false;63;95;191;;;
                                  -117950;3;0;false;false;;;;;;
                                  -117953;1;0;false;false;63;95;191;;;
                                  -117954;1;0;false;false;;;;;;
                                  -117955;11;1;false;false;127;159;191;;;
                                  -117966;12;0;false;false;63;95;191;;;
                                  -117978;1;0;false;false;;;;;;
                                  -117979;4;0;false;false;127;127;159;;;
                                  -117983;3;0;false;false;;;;;;
                                  -117986;1;0;false;false;63;95;191;;;
                                  -117987;4;0;false;false;;;;;;
                                  -117991;4;0;false;false;127;127;159;;;
                                  -117995;21;0;false;false;63;95;191;;;
                                  -118016;1;0;false;false;;;;;;
                                  -118017;1;0;false;false;127;127;159;;;
                                  -118018;1;0;false;false;;;;;;
                                  -118019;2;0;false;false;63;95;191;;;
                                  -118021;1;0;false;false;;;;;;
                                  -118022;3;0;false;false;63;95;191;;;
                                  -118025;1;0;false;false;;;;;;
                                  -118026;8;0;false;false;63;95;191;;;
                                  -118034;1;0;false;false;;;;;;
                                  -118035;3;0;false;false;63;95;191;;;
                                  -118038;1;0;false;false;;;;;;
                                  -118039;4;0;false;false;63;95;191;;;
                                  -118043;1;0;false;false;;;;;;
                                  -118044;8;0;false;false;63;95;191;;;
                                  -118052;5;0;false;false;127;127;159;;;
                                  -118057;3;0;false;false;;;;;;
                                  -118060;1;0;false;false;63;95;191;;;
                                  -118061;4;0;false;false;;;;;;
                                  -118065;4;0;false;false;127;127;159;;;
                                  -118069;27;0;false;false;63;95;191;;;
                                  -118096;1;0;false;false;;;;;;
                                  -118097;1;0;false;false;127;127;159;;;
                                  -118098;1;0;false;false;;;;;;
                                  -118099;2;0;false;false;63;95;191;;;
                                  -118101;1;0;false;false;;;;;;
                                  -118102;3;0;false;false;63;95;191;;;
                                  -118105;1;0;false;false;;;;;;
                                  -118106;6;0;false;false;63;95;191;;;
                                  -118112;1;0;false;false;;;;;;
                                  -118113;4;0;false;false;63;95;191;;;
                                  -118117;1;0;false;false;;;;;;
                                  -118118;3;0;false;false;63;95;191;;;
                                  -118121;1;0;false;false;;;;;;
                                  -118122;6;0;false;false;63;95;191;;;
                                  -118128;1;0;false;false;;;;;;
                                  -118129;4;0;false;false;63;95;191;;;
                                  -118133;1;0;false;false;;;;;;
                                  -118134;7;0;false;false;63;95;191;;;
                                  -118141;1;0;false;false;;;;;;
                                  -118142;3;0;false;false;63;95;191;;;
                                  -118145;1;0;false;false;;;;;;
                                  -118146;8;0;false;false;63;95;191;;;
                                  -118154;5;0;false;false;127;127;159;;;
                                  -118159;3;0;false;false;;;;;;
                                  -118162;1;0;false;false;63;95;191;;;
                                  -118163;1;0;false;false;;;;;;
                                  -118164;5;0;false;false;127;127;159;;;
                                  -118169;3;0;false;false;;;;;;
                                  -118172;2;0;false;false;63;95;191;;;
                                  -118174;2;0;false;false;;;;;;
                                  -118176;6;1;false;false;127;0;85;;;
                                  -118182;1;0;false;false;;;;;;
                                  -118183;17;0;false;false;0;0;0;;;
                                  -118200;1;0;false;false;;;;;;
                                  -118201;12;0;false;false;0;0;0;;;
                                  -118213;1;0;false;false;;;;;;
                                  -118214;1;0;false;false;0;0;0;;;
                                  -118215;3;0;false;false;;;;;;
                                  -118218;14;0;false;false;0;0;0;;;
                                  -118232;6;0;false;false;;;;;;
                                  -118238;6;1;false;false;127;0;85;;;
                                  -118244;1;0;false;false;;;;;;
                                  -118245;15;0;false;false;0;0;0;;;
                                  -118260;2;0;false;false;;;;;;
                                  -118262;1;0;false;false;0;0;0;;;
                                  -118263;2;0;false;false;;;;;;
                                  -118265;3;0;false;false;63;95;191;;;
                                  -118268;4;0;false;false;;;;;;
                                  -118272;1;0;false;false;63;95;191;;;
                                  -118273;1;0;false;false;;;;;;
                                  -118274;7;0;false;false;63;95;191;;;
                                  -118281;1;0;false;false;;;;;;
                                  -118282;7;0;false;false;63;95;191;;;
                                  -118289;1;0;false;false;;;;;;
                                  -118290;3;0;false;false;63;95;191;;;
                                  -118293;1;0;false;false;;;;;;
                                  -118294;6;0;false;false;63;95;191;;;
                                  -118300;1;0;false;false;;;;;;
                                  -118301;10;0;false;false;63;95;191;;;
                                  -118311;1;0;false;false;;;;;;
                                  -118312;6;0;false;false;63;95;191;;;
                                  -118318;1;0;false;false;;;;;;
                                  -118319;5;0;false;false;63;95;191;;;
                                  -118324;1;0;false;false;;;;;;
                                  -118325;5;0;false;false;63;95;191;;;
                                  -118330;1;0;false;false;;;;;;
                                  -118331;9;0;false;false;63;95;191;;;
                                  -118340;3;0;false;false;;;;;;
                                  -118343;1;0;false;false;63;95;191;;;
                                  -118344;1;0;false;false;;;;;;
                                  -118345;3;0;false;false;127;127;159;;;
                                  -118348;3;0;false;false;;;;;;
                                  -118351;1;0;false;false;63;95;191;;;
                                  -118352;3;0;false;false;;;;;;
                                  -118355;1;0;false;false;63;95;191;;;
                                  -118356;1;0;false;false;;;;;;
                                  -118357;8;1;false;false;127;159;191;;;
                                  -118365;4;0;false;false;63;95;191;;;
                                  -118369;1;0;false;false;;;;;;
                                  -118370;2;0;false;false;63;95;191;;;
                                  -118372;1;0;false;false;;;;;;
                                  -118373;6;0;false;false;63;95;191;;;
                                  -118379;1;0;false;false;;;;;;
                                  -118380;8;0;false;false;63;95;191;;;
                                  -118388;1;0;false;false;;;;;;
                                  -118389;1;0;false;false;63;95;191;;;
                                  -118390;1;0;false;false;;;;;;
                                  -118391;4;0;false;false;63;95;191;;;
                                  -118395;1;0;false;false;;;;;;
                                  -118396;7;0;false;false;63;95;191;;;
                                  -118403;1;0;false;false;;;;;;
                                  -118404;3;0;false;false;63;95;191;;;
                                  -118407;1;0;false;false;;;;;;
                                  -118408;5;0;false;false;63;95;191;;;
                                  -118413;1;0;false;false;;;;;;
                                  -118414;5;0;false;false;63;95;191;;;
                                  -118419;1;0;false;false;;;;;;
                                  -118420;2;0;false;false;63;95;191;;;
                                  -118422;1;0;false;false;;;;;;
                                  -118423;6;0;false;false;63;95;191;;;
                                  -118429;1;0;false;false;;;;;;
                                  -118430;6;0;false;false;63;95;191;;;
                                  -118436;3;0;false;false;;;;;;
                                  -118439;1;0;false;false;63;95;191;;;
                                  -118440;1;0;false;false;;;;;;
                                  -118441;4;0;false;false;63;95;191;;;
                                  -118445;1;0;false;false;;;;;;
                                  -118446;3;0;false;false;63;95;191;;;
                                  -118449;1;0;false;false;;;;;;
                                  -118450;4;0;false;false;63;95;191;;;
                                  -118454;1;0;false;false;;;;;;
                                  -118455;6;0;false;false;63;95;191;;;
                                  -118461;1;0;false;false;;;;;;
                                  -118462;2;0;false;false;63;95;191;;;
                                  -118464;1;0;false;false;;;;;;
                                  -118465;7;0;false;false;63;95;191;;;
                                  -118472;1;0;false;false;;;;;;
                                  -118473;5;0;false;false;63;95;191;;;
                                  -118478;1;0;false;false;;;;;;
                                  -118479;6;0;false;false;63;95;191;;;
                                  -118485;3;0;false;false;;;;;;
                                  -118488;1;0;false;false;63;95;191;;;
                                  -118489;1;0;false;false;;;;;;
                                  -118490;11;1;false;false;127;159;191;;;
                                  -118501;12;0;false;false;63;95;191;;;
                                  -118513;1;0;false;false;;;;;;
                                  -118514;4;0;false;false;127;127;159;;;
                                  -118518;3;0;false;false;;;;;;
                                  -118521;1;0;false;false;63;95;191;;;
                                  -118522;4;0;false;false;;;;;;
                                  -118526;4;0;false;false;127;127;159;;;
                                  -118530;21;0;false;false;63;95;191;;;
                                  -118551;1;0;false;false;;;;;;
                                  -118552;1;0;false;false;127;127;159;;;
                                  -118553;1;0;false;false;;;;;;
                                  -118554;2;0;false;false;63;95;191;;;
                                  -118556;1;0;false;false;;;;;;
                                  -118557;3;0;false;false;63;95;191;;;
                                  -118560;1;0;false;false;;;;;;
                                  -118561;8;0;false;false;63;95;191;;;
                                  -118569;1;0;false;false;;;;;;
                                  -118570;3;0;false;false;63;95;191;;;
                                  -118573;1;0;false;false;;;;;;
                                  -118574;4;0;false;false;63;95;191;;;
                                  -118578;1;0;false;false;;;;;;
                                  -118579;8;0;false;false;63;95;191;;;
                                  -118587;5;0;false;false;127;127;159;;;
                                  -118592;3;0;false;false;;;;;;
                                  -118595;1;0;false;false;63;95;191;;;
                                  -118596;4;0;false;false;;;;;;
                                  -118600;4;0;false;false;127;127;159;;;
                                  -118604;27;0;false;false;63;95;191;;;
                                  -118631;1;0;false;false;;;;;;
                                  -118632;1;0;false;false;127;127;159;;;
                                  -118633;1;0;false;false;;;;;;
                                  -118634;2;0;false;false;63;95;191;;;
                                  -118636;1;0;false;false;;;;;;
                                  -118637;3;0;false;false;63;95;191;;;
                                  -118640;1;0;false;false;;;;;;
                                  -118641;6;0;false;false;63;95;191;;;
                                  -118647;1;0;false;false;;;;;;
                                  -118648;4;0;false;false;63;95;191;;;
                                  -118652;1;0;false;false;;;;;;
                                  -118653;3;0;false;false;63;95;191;;;
                                  -118656;1;0;false;false;;;;;;
                                  -118657;6;0;false;false;63;95;191;;;
                                  -118663;1;0;false;false;;;;;;
                                  -118664;4;0;false;false;63;95;191;;;
                                  -118668;1;0;false;false;;;;;;
                                  -118669;7;0;false;false;63;95;191;;;
                                  -118676;1;0;false;false;;;;;;
                                  -118677;3;0;false;false;63;95;191;;;
                                  -118680;1;0;false;false;;;;;;
                                  -118681;8;0;false;false;63;95;191;;;
                                  -118689;5;0;false;false;127;127;159;;;
                                  -118694;3;0;false;false;;;;;;
                                  -118697;1;0;false;false;63;95;191;;;
                                  -118698;1;0;false;false;;;;;;
                                  -118699;5;0;false;false;127;127;159;;;
                                  -118704;3;0;false;false;;;;;;
                                  -118707;2;0;false;false;63;95;191;;;
                                  -118709;2;0;false;false;;;;;;
                                  -118711;6;1;false;false;127;0;85;;;
                                  -118717;1;0;false;false;;;;;;
                                  -118718;7;1;false;false;127;0;85;;;
                                  -118725;1;0;false;false;;;;;;
                                  -118726;23;0;false;false;0;0;0;;;
                                  -118749;1;0;false;false;;;;;;
                                  -118750;1;0;false;false;0;0;0;;;
                                  -118751;3;0;false;false;;;;;;
                                  -118754;14;0;false;false;0;0;0;;;
                                  -118768;3;0;false;false;;;;;;
                                  -118771;6;1;false;false;127;0;85;;;
                                  -118777;1;0;false;false;;;;;;
                                  -118778;19;0;false;false;0;0;0;;;
                                  -118797;2;0;false;false;;;;;;
                                  -118799;1;0;false;false;0;0;0;;;
                                  -118800;2;0;false;false;;;;;;
                                  -118802;3;0;false;false;63;95;191;;;
                                  -118805;3;0;false;false;;;;;;
                                  -118808;1;0;false;false;63;95;191;;;
                                  -118809;1;0;false;false;;;;;;
                                  -118810;7;0;false;false;63;95;191;;;
                                  -118817;1;0;false;false;;;;;;
                                  -118818;7;0;false;false;63;95;191;;;
                                  -118825;1;0;false;false;;;;;;
                                  -118826;3;0;false;false;63;95;191;;;
                                  -118829;1;0;false;false;;;;;;
                                  -118830;6;0;false;false;63;95;191;;;
                                  -118836;1;0;false;false;;;;;;
                                  -118837;7;0;false;false;63;95;191;;;
                                  -118844;1;0;false;false;;;;;;
                                  -118845;3;0;false;false;63;95;191;;;
                                  -118848;1;0;false;false;;;;;;
                                  -118849;2;0;false;false;63;95;191;;;
                                  -118851;1;0;false;false;;;;;;
                                  -118852;7;0;false;false;63;95;191;;;
                                  -118859;3;0;false;false;;;;;;
                                  -118862;1;0;false;false;63;95;191;;;
                                  -118863;1;0;false;false;;;;;;
                                  -118864;3;0;false;false;127;127;159;;;
                                  -118867;3;0;false;false;;;;;;
                                  -118870;1;0;false;false;63;95;191;;;
                                  -118871;3;0;false;false;;;;;;
                                  -118874;1;0;false;false;63;95;191;;;
                                  -118875;1;0;false;false;;;;;;
                                  -118876;8;1;false;false;127;159;191;;;
                                  -118884;4;0;false;false;63;95;191;;;
                                  -118888;1;0;false;false;;;;;;
                                  -118889;2;0;false;false;63;95;191;;;
                                  -118891;1;0;false;false;;;;;;
                                  -118892;7;0;false;false;63;95;191;;;
                                  -118899;1;0;false;false;;;;;;
                                  -118900;3;0;false;false;63;95;191;;;
                                  -118903;1;0;false;false;;;;;;
                                  -118904;2;0;false;false;63;95;191;;;
                                  -118906;1;0;false;false;;;;;;
                                  -118907;7;0;false;false;63;95;191;;;
                                  -118914;1;0;false;false;;;;;;
                                  -118915;5;0;false;false;63;95;191;;;
                                  -118920;1;0;false;false;;;;;;
                                  -118921;9;0;false;false;63;95;191;;;
                                  -118930;3;0;false;false;;;;;;
                                  -118933;1;0;false;false;63;95;191;;;
                                  -118934;1;0;false;false;;;;;;
                                  -118935;11;1;false;false;127;159;191;;;
                                  -118946;12;0;false;false;63;95;191;;;
                                  -118958;1;0;false;false;;;;;;
                                  -118959;4;0;false;false;127;127;159;;;
                                  -118963;3;0;false;false;;;;;;
                                  -118966;1;0;false;false;63;95;191;;;
                                  -118967;4;0;false;false;;;;;;
                                  -118971;4;0;false;false;127;127;159;;;
                                  -118975;21;0;false;false;63;95;191;;;
                                  -118996;1;0;false;false;;;;;;
                                  -118997;1;0;false;false;127;127;159;;;
                                  -118998;1;0;false;false;;;;;;
                                  -118999;2;0;false;false;63;95;191;;;
                                  -119001;1;0;false;false;;;;;;
                                  -119002;3;0;false;false;63;95;191;;;
                                  -119005;1;0;false;false;;;;;;
                                  -119006;8;0;false;false;63;95;191;;;
                                  -119014;1;0;false;false;;;;;;
                                  -119015;3;0;false;false;63;95;191;;;
                                  -119018;1;0;false;false;;;;;;
                                  -119019;4;0;false;false;63;95;191;;;
                                  -119023;1;0;false;false;;;;;;
                                  -119024;8;0;false;false;63;95;191;;;
                                  -119032;5;0;false;false;127;127;159;;;
                                  -119037;3;0;false;false;;;;;;
                                  -119040;1;0;false;false;63;95;191;;;
                                  -119041;4;0;false;false;;;;;;
                                  -119045;4;0;false;false;127;127;159;;;
                                  -119049;27;0;false;false;63;95;191;;;
                                  -119076;1;0;false;false;;;;;;
                                  -119077;1;0;false;false;127;127;159;;;
                                  -119078;1;0;false;false;;;;;;
                                  -119079;2;0;false;false;63;95;191;;;
                                  -119081;1;0;false;false;;;;;;
                                  -119082;3;0;false;false;63;95;191;;;
                                  -119085;1;0;false;false;;;;;;
                                  -119086;6;0;false;false;63;95;191;;;
                                  -119092;1;0;false;false;;;;;;
                                  -119093;4;0;false;false;63;95;191;;;
                                  -119097;1;0;false;false;;;;;;
                                  -119098;3;0;false;false;63;95;191;;;
                                  -119101;1;0;false;false;;;;;;
                                  -119102;6;0;false;false;63;95;191;;;
                                  -119108;1;0;false;false;;;;;;
                                  -119109;4;0;false;false;63;95;191;;;
                                  -119113;1;0;false;false;;;;;;
                                  -119114;7;0;false;false;63;95;191;;;
                                  -119121;1;0;false;false;;;;;;
                                  -119122;3;0;false;false;63;95;191;;;
                                  -119125;1;0;false;false;;;;;;
                                  -119126;8;0;false;false;63;95;191;;;
                                  -119134;5;0;false;false;127;127;159;;;
                                  -119139;3;0;false;false;;;;;;
                                  -119142;1;0;false;false;63;95;191;;;
                                  -119143;1;0;false;false;;;;;;
                                  -119144;5;0;false;false;127;127;159;;;
                                  -119149;3;0;false;false;;;;;;
                                  -119152;2;0;false;false;63;95;191;;;
                                  -119154;2;0;false;false;;;;;;
                                  -119156;6;1;false;false;127;0;85;;;
                                  -119162;1;0;false;false;;;;;;
                                  -119163;7;1;false;false;127;0;85;;;
                                  -119170;1;0;false;false;;;;;;
                                  -119171;13;0;false;false;0;0;0;;;
                                  -119184;1;0;false;false;;;;;;
                                  -119185;1;0;false;false;0;0;0;;;
                                  -119186;3;0;false;false;;;;;;
                                  -119189;14;0;false;false;0;0;0;;;
                                  -119203;3;0;false;false;;;;;;
                                  -119206;6;1;false;false;127;0;85;;;
                                  -119212;1;0;false;false;;;;;;
                                  -119213;9;0;false;false;0;0;0;;;
                                  -119222;2;0;false;false;;;;;;
                                  -119224;1;0;false;false;0;0;0;;;
                                  -119225;2;0;false;false;;;;;;
                                  -119227;6;1;false;false;127;0;85;;;
                                  -119233;1;0;false;false;;;;;;
                                  -119234;5;0;false;false;0;0;0;;;
                                  -119239;1;0;false;false;;;;;;
                                  -119240;15;0;false;false;0;0;0;;;
                                  -119255;1;0;false;false;;;;;;
                                  -119256;1;0;false;false;0;0;0;;;
                                  -119257;3;0;false;false;;;;;;
                                  -119260;14;0;false;false;0;0;0;;;
                                  -119274;3;0;false;false;;;;;;
                                  -119277;2;1;false;false;127;0;85;;;
                                  -119279;1;0;false;false;;;;;;
                                  -119280;11;0;false;false;0;0;0;;;
                                  -119291;1;0;false;false;;;;;;
                                  -119292;2;0;false;false;0;0;0;;;
                                  -119294;1;0;false;false;;;;;;
                                  -119295;4;1;false;false;127;0;85;;;
                                  -119299;1;0;false;false;0;0;0;;;
                                  -119300;1;0;false;false;;;;;;
                                  -119301;1;0;false;false;0;0;0;;;
                                  -119302;4;0;false;false;;;;;;
                                  -119306;6;1;false;false;127;0;85;;;
                                  -119312;1;0;false;false;;;;;;
                                  -119313;55;0;false;false;0;0;0;;;
                                  -119368;3;0;false;false;;;;;;
                                  -119371;1;0;false;false;0;0;0;;;
                                  -119372;3;0;false;false;;;;;;
                                  -119375;6;1;false;false;127;0;85;;;
                                  -119381;1;0;false;false;;;;;;
                                  -119382;11;0;false;false;0;0;0;;;
                                  -119393;2;0;false;false;;;;;;
                                  -119395;1;0;false;false;0;0;0;;;
                                  -119396;2;0;false;false;;;;;;
                                  -119398;3;0;false;false;63;95;191;;;
                                  -119401;4;0;false;false;;;;;;
                                  -119405;1;0;false;false;63;95;191;;;
                                  -119406;1;0;false;false;;;;;;
                                  -119407;6;0;false;false;63;95;191;;;
                                  -119413;1;0;false;false;;;;;;
                                  -119414;1;0;false;false;63;95;191;;;
                                  -119415;1;0;false;false;;;;;;
                                  -119416;2;0;false;false;63;95;191;;;
                                  -119418;1;0;false;false;;;;;;
                                  -119419;2;0;false;false;63;95;191;;;
                                  -119421;1;0;false;false;;;;;;
                                  -119422;3;0;false;false;63;95;191;;;
                                  -119425;1;0;false;false;;;;;;
                                  -119426;3;0;false;false;63;95;191;;;
                                  -119429;1;0;false;false;;;;;;
                                  -119430;9;0;false;false;63;95;191;;;
                                  -119439;1;0;false;false;;;;;;
                                  -119440;3;0;false;false;63;95;191;;;
                                  -119443;1;0;false;false;;;;;;
                                  -119444;6;0;false;false;63;95;191;;;
                                  -119450;1;0;false;false;;;;;;
                                  -119451;3;0;false;false;63;95;191;;;
                                  -119454;1;0;false;false;;;;;;
                                  -119455;6;0;false;false;63;95;191;;;
                                  -119461;1;0;false;false;;;;;;
                                  -119462;4;0;false;false;63;95;191;;;
                                  -119466;1;0;false;false;;;;;;
                                  -119467;5;0;false;false;63;95;191;;;
                                  -119472;1;0;false;false;;;;;;
                                  -119473;2;0;false;false;63;95;191;;;
                                  -119475;3;0;false;false;;;;;;
                                  -119478;1;0;false;false;63;95;191;;;
                                  -119479;1;0;false;false;;;;;;
                                  -119480;9;0;false;false;63;95;191;;;
                                  -119489;1;0;false;false;;;;;;
                                  -119490;3;0;false;false;63;95;191;;;
                                  -119493;1;0;false;false;;;;;;
                                  -119494;7;0;false;false;63;95;191;;;
                                  -119501;1;0;false;false;;;;;;
                                  -119502;6;0;false;false;63;95;191;;;
                                  -119508;3;0;false;false;;;;;;
                                  -119511;1;0;false;false;63;95;191;;;
                                  -119512;1;0;false;false;;;;;;
                                  -119513;3;0;false;false;127;127;159;;;
                                  -119516;3;0;false;false;;;;;;
                                  -119519;1;0;false;false;63;95;191;;;
                                  -119520;3;0;false;false;;;;;;
                                  -119523;1;0;false;false;63;95;191;;;
                                  -119524;1;0;false;false;;;;;;
                                  -119525;8;1;false;false;127;159;191;;;
                                  -119533;3;0;false;false;63;95;191;;;
                                  -119536;3;0;false;false;;;;;;
                                  -119539;2;0;false;false;63;95;191;;;
                                  -119541;2;0;false;false;;;;;;
                                  -119543;2;0;false;false;0;0;0;;;
                                  -119545;1;0;false;false;;;;;;
                                  -119546;7;0;false;false;0;0;0;;;
                                  -119553;1;0;false;false;;;;;;
                                  -119554;1;0;false;false;0;0;0;;;
                                  -119555;3;0;false;false;;;;;;
                                  -119558;6;1;false;false;127;0;85;;;
                                  -119564;1;0;false;false;;;;;;
                                  -119565;3;1;false;false;127;0;85;;;
                                  -119568;1;0;false;false;;;;;;
                                  -119569;3;0;false;false;0;0;0;;;
                                  -119572;4;1;false;false;127;0;85;;;
                                  -119576;2;0;false;false;0;0;0;;;
                                  -119578;2;0;false;false;;;;;;
                                  -119580;1;0;false;false;0;0;0;;;
                                  -119581;2;0;false;false;;;;;;
                                  -119583;3;0;false;false;63;95;191;;;
                                  -119586;4;0;false;false;;;;;;
                                  -119590;1;0;false;false;63;95;191;;;
                                  -119591;1;0;false;false;;;;;;
                                  -119592;7;0;false;false;63;95;191;;;
                                  -119599;1;0;false;false;;;;;;
                                  -119600;3;0;false;false;63;95;191;;;
                                  -119603;1;0;false;false;;;;;;
                                  -119604;10;0;false;false;63;95;191;;;
                                  -119614;1;0;false;false;;;;;;
                                  -119615;6;0;false;false;63;95;191;;;
                                  -119621;1;0;false;false;;;;;;
                                  -119622;10;0;false;false;63;95;191;;;
                                  -119632;3;0;false;false;;;;;;
                                  -119635;1;0;false;false;63;95;191;;;
                                  -119636;1;0;false;false;;;;;;
                                  -119637;3;0;false;false;127;127;159;;;
                                  -119640;3;0;false;false;;;;;;
                                  -119643;1;0;false;false;63;95;191;;;
                                  -119644;3;0;false;false;;;;;;
                                  -119647;1;0;false;false;63;95;191;;;
                                  -119648;1;0;false;false;;;;;;
                                  -119649;8;1;false;false;127;159;191;;;
                                  -119657;10;0;false;false;63;95;191;;;
                                  -119667;1;0;false;false;;;;;;
                                  -119668;6;0;false;false;63;95;191;;;
                                  -119674;1;0;false;false;;;;;;
                                  -119675;10;0;false;false;63;95;191;;;
                                  -119685;3;0;false;false;;;;;;
                                  -119688;2;0;false;false;63;95;191;;;
                                  -119690;2;0;false;false;;;;;;
                                  -119692;3;1;false;false;127;0;85;;;
                                  -119695;1;0;false;false;;;;;;
                                  -119696;24;0;false;false;0;0;0;;;
                                  -119720;1;0;false;false;;;;;;
                                  -119721;1;0;false;false;0;0;0;;;
                                  -119722;3;0;false;false;;;;;;
                                  -119725;2;0;false;false;0;0;0;;;
                                  -119727;1;0;false;false;;;;;;
                                  -119728;2;0;false;false;0;0;0;;;
                                  -119730;1;0;false;false;;;;;;
                                  -119731;1;0;false;false;0;0;0;;;
                                  -119732;1;0;false;false;;;;;;
                                  -119733;8;0;false;false;0;0;0;;;
                                  -119741;3;0;false;false;;;;;;
                                  -119744;3;1;false;false;127;0;85;;;
                                  -119747;1;0;false;false;;;;;;
                                  -119748;9;0;false;false;0;0;0;;;
                                  -119757;1;0;false;false;;;;;;
                                  -119758;1;0;false;false;0;0;0;;;
                                  -119759;1;0;false;false;;;;;;
                                  -119760;42;0;false;false;0;0;0;;;
                                  -119802;6;0;false;false;;;;;;
                                  -119808;13;0;false;false;0;0;0;;;
                                  -119821;3;0;false;false;;;;;;
                                  -119824;6;1;false;false;127;0;85;;;
                                  -119830;1;0;false;false;;;;;;
                                  -119831;10;0;false;false;0;0;0;;;
                                  -119841;2;0;false;false;;;;;;
                                  -119843;1;0;false;false;0;0;0;;;
                                  -119844;2;0;false;false;;;;;;
                                  -119846;3;0;false;false;63;95;191;;;
                                  -119849;4;0;false;false;;;;;;
                                  -119853;1;0;false;false;63;95;191;;;
                                  -119854;1;0;false;false;;;;;;
                                  -119855;7;0;false;false;63;95;191;;;
                                  -119862;1;0;false;false;;;;;;
                                  -119863;3;0;false;false;63;95;191;;;
                                  -119866;1;0;false;false;;;;;;
                                  -119867;10;0;false;false;63;95;191;;;
                                  -119877;1;0;false;false;;;;;;
                                  -119878;6;0;false;false;63;95;191;;;
                                  -119884;1;0;false;false;;;;;;
                                  -119885;6;0;false;false;63;95;191;;;
                                  -119891;1;0;false;false;;;;;;
                                  -119892;8;0;false;false;63;95;191;;;
                                  -119900;1;0;false;false;;;;;;
                                  -119901;2;0;false;false;63;95;191;;;
                                  -119903;1;0;false;false;;;;;;
                                  -119904;3;0;false;false;63;95;191;;;
                                  -119907;1;0;false;false;;;;;;
                                  -119908;5;0;false;false;63;95;191;;;
                                  -119913;1;0;false;false;;;;;;
                                  -119914;2;0;false;false;63;95;191;;;
                                  -119916;1;0;false;false;;;;;;
                                  -119917;3;0;false;false;63;95;191;;;
                                  -119920;1;0;false;false;;;;;;
                                  -119921;5;0;false;false;63;95;191;;;
                                  -119926;3;0;false;false;;;;;;
                                  -119929;1;0;false;false;63;95;191;;;
                                  -119930;1;0;false;false;;;;;;
                                  -119931;3;0;false;false;127;127;159;;;
                                  -119934;3;0;false;false;;;;;;
                                  -119937;1;0;false;false;63;95;191;;;
                                  -119938;3;0;false;false;;;;;;
                                  -119941;1;0;false;false;63;95;191;;;
                                  -119942;1;0;false;false;;;;;;
                                  -119943;8;1;false;false;127;159;191;;;
                                  -119951;10;0;false;false;63;95;191;;;
                                  -119961;1;0;false;false;;;;;;
                                  -119962;6;0;false;false;63;95;191;;;
                                  -119968;1;0;false;false;;;;;;
                                  -119969;6;0;false;false;63;95;191;;;
                                  -119975;1;0;false;false;;;;;;
                                  -119976;8;0;false;false;63;95;191;;;
                                  -119984;1;0;false;false;;;;;;
                                  -119985;2;0;false;false;63;95;191;;;
                                  -119987;1;0;false;false;;;;;;
                                  -119988;3;0;false;false;63;95;191;;;
                                  -119991;1;0;false;false;;;;;;
                                  -119992;5;0;false;false;63;95;191;;;
                                  -119997;1;0;false;false;;;;;;
                                  -119998;2;0;false;false;63;95;191;;;
                                  -120000;1;0;false;false;;;;;;
                                  -120001;3;0;false;false;63;95;191;;;
                                  -120004;1;0;false;false;;;;;;
                                  -120005;5;0;false;false;63;95;191;;;
                                  -120010;3;0;false;false;;;;;;
                                  -120013;1;0;false;false;63;95;191;;;
                                  -120014;1;0;false;false;;;;;;
                                  -120015;8;0;false;false;63;95;191;;;
                                  -120023;1;0;false;false;;;;;;
                                  -120024;2;0;false;false;63;95;191;;;
                                  -120026;1;0;false;false;;;;;;
                                  -120027;9;0;false;false;63;95;191;;;
                                  -120036;1;0;false;false;;;;;;
                                  -120037;10;0;false;false;63;95;191;;;
                                  -120047;1;0;false;false;;;;;;
                                  -120048;8;0;false;false;63;95;191;;;
                                  -120056;1;0;false;false;;;;;;
                                  -120057;2;0;false;false;63;95;191;;;
                                  -120059;1;0;false;false;;;;;;
                                  -120060;2;0;false;false;63;95;191;;;
                                  -120062;1;0;false;false;;;;;;
                                  -120063;2;0;false;false;63;95;191;;;
                                  -120065;1;0;false;false;;;;;;
                                  -120066;1;0;false;false;63;95;191;;;
                                  -120067;1;0;false;false;;;;;;
                                  -120068;1;0;false;false;63;95;191;;;
                                  -120069;1;0;false;false;;;;;;
                                  -120070;3;0;false;false;63;95;191;;;
                                  -120073;1;0;false;false;;;;;;
                                  -120074;7;0;false;false;63;95;191;;;
                                  -120081;1;0;false;false;;;;;;
                                  -120082;2;0;false;false;63;95;191;;;
                                  -120084;1;0;false;false;;;;;;
                                  -120085;8;0;false;false;63;95;191;;;
                                  -120093;3;0;false;false;;;;;;
                                  -120096;1;0;false;false;63;95;191;;;
                                  -120097;1;0;false;false;;;;;;
                                  -120098;11;1;false;false;127;159;191;;;
                                  -120109;12;0;false;false;63;95;191;;;
                                  -120121;1;0;false;false;;;;;;
                                  -120122;4;0;false;false;127;127;159;;;
                                  -120126;3;0;false;false;;;;;;
                                  -120129;1;0;false;false;63;95;191;;;
                                  -120130;4;0;false;false;;;;;;
                                  -120134;4;0;false;false;127;127;159;;;
                                  -120138;21;0;false;false;63;95;191;;;
                                  -120159;1;0;false;false;;;;;;
                                  -120160;1;0;false;false;127;127;159;;;
                                  -120161;1;0;false;false;;;;;;
                                  -120162;2;0;false;false;63;95;191;;;
                                  -120164;1;0;false;false;;;;;;
                                  -120165;3;0;false;false;63;95;191;;;
                                  -120168;1;0;false;false;;;;;;
                                  -120169;8;0;false;false;63;95;191;;;
                                  -120177;1;0;false;false;;;;;;
                                  -120178;3;0;false;false;63;95;191;;;
                                  -120181;1;0;false;false;;;;;;
                                  -120182;4;0;false;false;63;95;191;;;
                                  -120186;1;0;false;false;;;;;;
                                  -120187;8;0;false;false;63;95;191;;;
                                  -120195;5;0;false;false;127;127;159;;;
                                  -120200;3;0;false;false;;;;;;
                                  -120203;1;0;false;false;63;95;191;;;
                                  -120204;4;0;false;false;;;;;;
                                  -120208;4;0;false;false;127;127;159;;;
                                  -120212;27;0;false;false;63;95;191;;;
                                  -120239;1;0;false;false;;;;;;
                                  -120240;1;0;false;false;127;127;159;;;
                                  -120241;1;0;false;false;;;;;;
                                  -120242;2;0;false;false;63;95;191;;;
                                  -120244;1;0;false;false;;;;;;
                                  -120245;3;0;false;false;63;95;191;;;
                                  -120248;1;0;false;false;;;;;;
                                  -120249;6;0;false;false;63;95;191;;;
                                  -120255;1;0;false;false;;;;;;
                                  -120256;4;0;false;false;63;95;191;;;
                                  -120260;1;0;false;false;;;;;;
                                  -120261;3;0;false;false;63;95;191;;;
                                  -120264;1;0;false;false;;;;;;
                                  -120265;6;0;false;false;63;95;191;;;
                                  -120271;1;0;false;false;;;;;;
                                  -120272;4;0;false;false;63;95;191;;;
                                  -120276;1;0;false;false;;;;;;
                                  -120277;7;0;false;false;63;95;191;;;
                                  -120284;1;0;false;false;;;;;;
                                  -120285;3;0;false;false;63;95;191;;;
                                  -120288;1;0;false;false;;;;;;
                                  -120289;8;0;false;false;63;95;191;;;
                                  -120297;5;0;false;false;127;127;159;;;
                                  -120302;3;0;false;false;;;;;;
                                  -120305;1;0;false;false;63;95;191;;;
                                  -120306;1;0;false;false;;;;;;
                                  -120307;5;0;false;false;127;127;159;;;
                                  -120312;3;0;false;false;;;;;;
                                  -120315;2;0;false;false;63;95;191;;;
                                  -120317;2;0;false;false;;;;;;
                                  -120319;6;1;false;false;127;0;85;;;
                                  -120325;1;0;false;false;;;;;;
                                  -120326;3;1;false;false;127;0;85;;;
                                  -120329;1;0;false;false;;;;;;
                                  -120330;20;0;false;false;0;0;0;;;
                                  -120350;1;0;false;false;;;;;;
                                  -120351;1;0;false;false;0;0;0;;;
                                  -120352;4;0;false;false;;;;;;
                                  -120356;14;0;false;false;0;0;0;;;
                                  -120370;3;0;false;false;;;;;;
                                  -120373;6;1;false;false;127;0;85;;;
                                  -120379;1;0;false;false;;;;;;
                                  -120380;22;0;false;false;0;0;0;;;
                                  -120402;1;0;false;false;;;;;;
                                  -120403;1;0;false;false;0;0;0;;;
                                  -120404;1;0;false;false;;;;;;
                                  -120405;25;0;false;false;0;0;0;;;
                                  -120430;2;0;false;false;;;;;;
                                  -120432;1;0;false;false;0;0;0;;;
                                  -120433;2;0;false;false;;;;;;
                                  -120435;3;0;false;false;63;95;191;;;
                                  -120438;4;0;false;false;;;;;;
                                  -120442;1;0;false;false;63;95;191;;;
                                  -120443;1;0;false;false;;;;;;
                                  -120444;7;0;false;false;63;95;191;;;
                                  -120451;1;0;false;false;;;;;;
                                  -120452;3;0;false;false;63;95;191;;;
                                  -120455;1;0;false;false;;;;;;
                                  -120456;10;0;false;false;63;95;191;;;
                                  -120466;1;0;false;false;;;;;;
                                  -120467;6;0;false;false;63;95;191;;;
                                  -120473;1;0;false;false;;;;;;
                                  -120474;6;0;false;false;63;95;191;;;
                                  -120480;1;0;false;false;;;;;;
                                  -120481;8;0;false;false;63;95;191;;;
                                  -120489;1;0;false;false;;;;;;
                                  -120490;2;0;false;false;63;95;191;;;
                                  -120492;1;0;false;false;;;;;;
                                  -120493;3;0;false;false;63;95;191;;;
                                  -120496;1;0;false;false;;;;;;
                                  -120497;5;0;false;false;63;95;191;;;
                                  -120502;1;0;false;false;;;;;;
                                  -120503;2;0;false;false;63;95;191;;;
                                  -120505;1;0;false;false;;;;;;
                                  -120506;3;0;false;false;63;95;191;;;
                                  -120509;1;0;false;false;;;;;;
                                  -120510;5;0;false;false;63;95;191;;;
                                  -120515;3;0;false;false;;;;;;
                                  -120518;1;0;false;false;63;95;191;;;
                                  -120519;1;0;false;false;;;;;;
                                  -120520;3;0;false;false;127;127;159;;;
                                  -120523;3;0;false;false;;;;;;
                                  -120526;1;0;false;false;63;95;191;;;
                                  -120527;3;0;false;false;;;;;;
                                  -120530;1;0;false;false;63;95;191;;;
                                  -120531;1;0;false;false;;;;;;
                                  -120532;8;1;false;false;127;159;191;;;
                                  -120540;3;0;false;false;63;95;191;;;
                                  -120543;1;0;false;false;;;;;;
                                  -120544;10;0;false;false;63;95;191;;;
                                  -120554;1;0;false;false;;;;;;
                                  -120555;6;0;false;false;63;95;191;;;
                                  -120561;1;0;false;false;;;;;;
                                  -120562;6;0;false;false;63;95;191;;;
                                  -120568;1;0;false;false;;;;;;
                                  -120569;8;0;false;false;63;95;191;;;
                                  -120577;1;0;false;false;;;;;;
                                  -120578;2;0;false;false;63;95;191;;;
                                  -120580;1;0;false;false;;;;;;
                                  -120581;3;0;false;false;63;95;191;;;
                                  -120584;1;0;false;false;;;;;;
                                  -120585;5;0;false;false;63;95;191;;;
                                  -120590;1;0;false;false;;;;;;
                                  -120591;2;0;false;false;63;95;191;;;
                                  -120593;1;0;false;false;;;;;;
                                  -120594;3;0;false;false;63;95;191;;;
                                  -120597;1;0;false;false;;;;;;
                                  -120598;5;0;false;false;63;95;191;;;
                                  -120603;3;0;false;false;;;;;;
                                  -120606;1;0;false;false;63;95;191;;;
                                  -120607;1;0;false;false;;;;;;
                                  -120608;8;0;false;false;63;95;191;;;
                                  -120616;1;0;false;false;;;;;;
                                  -120617;2;0;false;false;63;95;191;;;
                                  -120619;1;0;false;false;;;;;;
                                  -120620;5;0;false;false;63;95;191;;;
                                  -120625;1;0;false;false;;;;;;
                                  -120626;8;0;false;false;63;95;191;;;
                                  -120634;1;0;false;false;;;;;;
                                  -120635;2;0;false;false;63;95;191;;;
                                  -120637;1;0;false;false;;;;;;
                                  -120638;2;0;false;false;63;95;191;;;
                                  -120640;1;0;false;false;;;;;;
                                  -120641;2;0;false;false;63;95;191;;;
                                  -120643;1;0;false;false;;;;;;
                                  -120644;1;0;false;false;63;95;191;;;
                                  -120645;1;0;false;false;;;;;;
                                  -120646;1;0;false;false;63;95;191;;;
                                  -120647;1;0;false;false;;;;;;
                                  -120648;3;0;false;false;63;95;191;;;
                                  -120651;1;0;false;false;;;;;;
                                  -120652;7;0;false;false;63;95;191;;;
                                  -120659;1;0;false;false;;;;;;
                                  -120660;2;0;false;false;63;95;191;;;
                                  -120662;1;0;false;false;;;;;;
                                  -120663;9;0;false;false;63;95;191;;;
                                  -120672;3;0;false;false;;;;;;
                                  -120675;1;0;false;false;63;95;191;;;
                                  -120676;1;0;false;false;;;;;;
                                  -120677;11;1;false;false;127;159;191;;;
                                  -120688;12;0;false;false;63;95;191;;;
                                  -120700;1;0;false;false;;;;;;
                                  -120701;4;0;false;false;127;127;159;;;
                                  -120705;3;0;false;false;;;;;;
                                  -120708;1;0;false;false;63;95;191;;;
                                  -120709;4;0;false;false;;;;;;
                                  -120713;4;0;false;false;127;127;159;;;
                                  -120717;21;0;false;false;63;95;191;;;
                                  -120738;1;0;false;false;;;;;;
                                  -120739;1;0;false;false;127;127;159;;;
                                  -120740;1;0;false;false;;;;;;
                                  -120741;2;0;false;false;63;95;191;;;
                                  -120743;1;0;false;false;;;;;;
                                  -120744;3;0;false;false;63;95;191;;;
                                  -120747;1;0;false;false;;;;;;
                                  -120748;8;0;false;false;63;95;191;;;
                                  -120756;1;0;false;false;;;;;;
                                  -120757;3;0;false;false;63;95;191;;;
                                  -120760;1;0;false;false;;;;;;
                                  -120761;4;0;false;false;63;95;191;;;
                                  -120765;1;0;false;false;;;;;;
                                  -120766;8;0;false;false;63;95;191;;;
                                  -120774;5;0;false;false;127;127;159;;;
                                  -120779;3;0;false;false;;;;;;
                                  -120782;1;0;false;false;63;95;191;;;
                                  -120783;4;0;false;false;;;;;;
                                  -120787;4;0;false;false;127;127;159;;;
                                  -120791;27;0;false;false;63;95;191;;;
                                  -120818;1;0;false;false;;;;;;
                                  -120819;1;0;false;false;127;127;159;;;
                                  -120820;1;0;false;false;;;;;;
                                  -120821;2;0;false;false;63;95;191;;;
                                  -120823;1;0;false;false;;;;;;
                                  -120824;3;0;false;false;63;95;191;;;
                                  -120827;1;0;false;false;;;;;;
                                  -120828;6;0;false;false;63;95;191;;;
                                  -120834;1;0;false;false;;;;;;
                                  -120835;4;0;false;false;63;95;191;;;
                                  -120839;1;0;false;false;;;;;;
                                  -120840;3;0;false;false;63;95;191;;;
                                  -120843;1;0;false;false;;;;;;
                                  -120844;6;0;false;false;63;95;191;;;
                                  -120850;1;0;false;false;;;;;;
                                  -120851;4;0;false;false;63;95;191;;;
                                  -120855;1;0;false;false;;;;;;
                                  -120856;7;0;false;false;63;95;191;;;
                                  -120863;1;0;false;false;;;;;;
                                  -120864;3;0;false;false;63;95;191;;;
                                  -120867;1;0;false;false;;;;;;
                                  -120868;8;0;false;false;63;95;191;;;
                                  -120876;5;0;false;false;127;127;159;;;
                                  -120881;3;0;false;false;;;;;;
                                  -120884;1;0;false;false;63;95;191;;;
                                  -120885;1;0;false;false;;;;;;
                                  -120886;5;0;false;false;127;127;159;;;
                                  -120891;3;0;false;false;;;;;;
                                  -120894;2;0;false;false;63;95;191;;;
                                  -120896;2;0;false;false;;;;;;
                                  -120898;6;1;false;false;127;0;85;;;
                                  -120904;1;0;false;false;;;;;;
                                  -120905;3;1;false;false;127;0;85;;;
                                  -120908;1;0;false;false;;;;;;
                                  -120909;20;0;false;false;0;0;0;;;
                                  -120929;1;0;false;false;;;;;;
                                  -120930;1;0;false;false;0;0;0;;;
                                  -120931;4;0;false;false;;;;;;
                                  -120935;14;0;false;false;0;0;0;;;
                                  -120949;3;0;false;false;;;;;;
                                  -120952;6;1;false;false;127;0;85;;;
                                  -120958;1;0;false;false;;;;;;
                                  -120959;23;0;false;false;0;0;0;;;
                                  -120982;2;0;false;false;;;;;;
                                  -120984;1;0;false;false;0;0;0;;;
                                  -120985;2;0;false;false;;;;;;
                                  -120987;3;0;false;false;63;95;191;;;
                                  -120990;4;0;false;false;;;;;;
                                  -120994;1;0;false;false;63;95;191;;;
                                  -120995;1;0;false;false;;;;;;
                                  -120996;7;0;false;false;63;95;191;;;
                                  -121003;1;0;false;false;;;;;;
                                  -121004;3;0;false;false;63;95;191;;;
                                  -121007;1;0;false;false;;;;;;
                                  -121008;6;0;false;false;63;95;191;;;
                                  -121014;1;0;false;false;;;;;;
                                  -121015;8;0;false;false;63;95;191;;;
                                  -121023;1;0;false;false;;;;;;
                                  -121024;2;0;false;false;63;95;191;;;
                                  -121026;1;0;false;false;;;;;;
                                  -121027;3;0;false;false;63;95;191;;;
                                  -121030;1;0;false;false;;;;;;
                                  -121031;4;0;false;false;63;95;191;;;
                                  -121035;3;0;false;false;;;;;;
                                  -121038;1;0;false;false;63;95;191;;;
                                  -121039;1;0;false;false;;;;;;
                                  -121040;7;0;false;false;63;95;191;;;
                                  -121047;1;0;false;false;;;;;;
                                  -121048;8;0;false;false;63;95;191;;;
                                  -121056;1;0;false;false;;;;;;
                                  -121057;2;0;false;false;63;95;191;;;
                                  -121059;1;0;false;false;;;;;;
                                  -121060;5;0;false;false;63;95;191;;;
                                  -121065;1;0;false;false;;;;;;
                                  -121066;2;0;false;false;63;95;191;;;
                                  -121068;1;0;false;false;;;;;;
                                  -121069;2;0;false;false;63;95;191;;;
                                  -121071;1;0;false;false;;;;;;
                                  -121072;6;0;false;false;63;95;191;;;
                                  -121078;1;0;false;false;;;;;;
                                  -121079;10;0;false;false;63;95;191;;;
                                  -121089;1;0;false;false;;;;;;
                                  -121090;4;0;false;false;63;95;191;;;
                                  -121094;1;0;false;false;;;;;;
                                  -121095;3;0;false;false;63;95;191;;;
                                  -121098;1;0;false;false;;;;;;
                                  -121099;4;0;false;false;63;95;191;;;
                                  -121103;3;0;false;false;;;;;;
                                  -121106;1;0;false;false;63;95;191;;;
                                  -121107;1;0;false;false;;;;;;
                                  -121108;3;0;false;false;127;127;159;;;
                                  -121111;3;0;false;false;;;;;;
                                  -121114;1;0;false;false;63;95;191;;;
                                  -121115;3;0;false;false;;;;;;
                                  -121118;1;0;false;false;63;95;191;;;
                                  -121119;1;0;false;false;;;;;;
                                  -121120;7;1;false;false;127;159;191;;;
                                  -121127;3;0;false;false;63;95;191;;;
                                  -121130;1;0;false;false;;;;;;
                                  -121131;1;0;false;false;63;95;191;;;
                                  -121132;1;0;false;false;;;;;;
                                  -121133;3;0;false;false;63;95;191;;;
                                  -121136;1;0;false;false;;;;;;
                                  -121137;4;0;false;false;63;95;191;;;
                                  -121141;1;0;false;false;;;;;;
                                  -121142;7;0;false;false;63;95;191;;;
                                  -121149;1;0;false;false;;;;;;
                                  -121150;2;0;false;false;63;95;191;;;
                                  -121152;1;0;false;false;;;;;;
                                  -121153;8;0;false;false;63;95;191;;;
                                  -121161;1;0;false;false;;;;;;
                                  -121162;2;0;false;false;63;95;191;;;
                                  -121164;1;0;false;false;;;;;;
                                  -121165;1;0;false;false;63;95;191;;;
                                  -121166;1;0;false;false;;;;;;
                                  -121167;10;0;false;false;63;95;191;;;
                                  -121177;4;0;false;false;;;;;;
                                  -121181;1;0;false;false;63;95;191;;;
                                  -121182;2;0;false;false;;;;;;
                                  -121184;10;0;false;false;63;95;191;;;
                                  -121194;1;0;false;false;;;;;;
                                  -121195;3;0;false;false;63;95;191;;;
                                  -121198;1;0;false;false;;;;;;
                                  -121199;4;0;false;false;63;95;191;;;
                                  -121203;1;0;false;false;;;;;;
                                  -121204;1;0;false;false;63;95;191;;;
                                  -121205;1;0;false;false;;;;;;
                                  -121206;5;0;false;false;63;95;191;;;
                                  -121211;1;0;false;false;;;;;;
                                  -121212;5;0;false;false;63;95;191;;;
                                  -121217;2;0;false;false;;;;;;
                                  -121219;9;0;false;false;63;95;191;;;
                                  -121228;1;0;false;false;;;;;;
                                  -121229;5;0;false;false;63;95;191;;;
                                  -121234;1;0;false;false;;;;;;
                                  -121235;5;0;false;false;63;95;191;;;
                                  -121240;1;0;false;false;;;;;;
                                  -121241;3;0;false;false;63;95;191;;;
                                  -121244;1;0;false;false;;;;;;
                                  -121245;3;0;false;false;63;95;191;;;
                                  -121248;1;0;false;false;;;;;;
                                  -121249;2;0;false;false;63;95;191;;;
                                  -121251;1;0;false;false;;;;;;
                                  -121252;4;0;false;false;63;95;191;;;
                                  -121256;1;0;false;false;;;;;;
                                  -121257;2;0;false;false;63;95;191;;;
                                  -121259;3;0;false;false;;;;;;
                                  -121262;1;0;false;false;63;95;191;;;
                                  -121263;2;0;false;false;;;;;;
                                  -121265;9;0;false;false;63;95;191;;;
                                  -121274;1;0;false;false;;;;;;
                                  -121275;9;0;false;false;63;95;191;;;
                                  -121284;1;0;false;false;;;;;;
                                  -121285;9;0;false;false;63;95;191;;;
                                  -121294;1;0;false;false;;;;;;
                                  -121295;5;0;false;false;63;95;191;;;
                                  -121300;1;0;false;false;;;;;;
                                  -121301;5;0;false;false;63;95;191;;;
                                  -121306;1;0;false;false;;;;;;
                                  -121307;5;0;false;false;63;95;191;;;
                                  -121312;1;0;false;false;;;;;;
                                  -121313;7;0;false;false;63;95;191;;;
                                  -121320;1;0;false;false;;;;;;
                                  -121321;3;0;false;false;63;95;191;;;
                                  -121324;1;0;false;false;;;;;;
                                  -121325;8;0;false;false;63;95;191;;;
                                  -121333;1;0;false;false;;;;;;
                                  -121334;8;0;false;false;63;95;191;;;
                                  -121342;4;0;false;false;;;;;;
                                  -121346;1;0;false;false;63;95;191;;;
                                  -121347;2;0;false;false;;;;;;
                                  -121349;12;0;false;false;63;95;191;;;
                                  -121361;2;0;false;false;;;;;;
                                  -121363;8;0;false;false;63;95;191;;;
                                  -121371;1;0;false;false;;;;;;
                                  -121372;5;0;false;false;63;95;191;;;
                                  -121377;1;0;false;false;;;;;;
                                  -121378;3;0;false;false;63;95;191;;;
                                  -121381;1;0;false;false;;;;;;
                                  -121382;2;0;false;false;63;95;191;;;
                                  -121384;1;0;false;false;;;;;;
                                  -121385;5;0;false;false;63;95;191;;;
                                  -121390;1;0;false;false;;;;;;
                                  -121391;5;0;false;false;63;95;191;;;
                                  -121396;1;0;false;false;;;;;;
                                  -121397;5;0;false;false;63;95;191;;;
                                  -121402;1;0;false;false;;;;;;
                                  -121403;3;0;false;false;63;95;191;;;
                                  -121406;1;0;false;false;;;;;;
                                  -121407;8;0;false;false;63;95;191;;;
                                  -121415;1;0;false;false;;;;;;
                                  -121416;5;0;false;false;63;95;191;;;
                                  -121421;1;0;false;false;;;;;;
                                  -121422;5;0;false;false;63;95;191;;;
                                  -121427;3;0;false;false;;;;;;
                                  -121430;1;0;false;false;63;95;191;;;
                                  -121431;2;0;false;false;;;;;;
                                  -121433;6;0;false;false;63;95;191;;;
                                  -121439;1;0;false;false;;;;;;
                                  -121440;9;0;false;false;63;95;191;;;
                                  -121449;1;0;false;false;;;;;;
                                  -121450;10;0;false;false;63;95;191;;;
                                  -121460;1;0;false;false;;;;;;
                                  -121461;8;0;false;false;63;95;191;;;
                                  -121469;1;0;false;false;;;;;;
                                  -121470;12;0;false;false;63;95;191;;;
                                  -121482;1;0;false;false;;;;;;
                                  -121483;5;0;false;false;63;95;191;;;
                                  -121488;1;0;false;false;;;;;;
                                  -121489;6;0;false;false;63;95;191;;;
                                  -121495;3;0;false;false;;;;;;
                                  -121498;1;0;false;false;63;95;191;;;
                                  -121499;1;0;false;false;;;;;;
                                  -121500;8;1;false;false;127;159;191;;;
                                  -121508;3;0;false;false;63;95;191;;;
                                  -121511;1;0;false;false;;;;;;
                                  -121512;2;0;false;false;63;95;191;;;
                                  -121514;1;0;false;false;;;;;;
                                  -121515;3;0;false;false;63;95;191;;;
                                  -121518;1;0;false;false;;;;;;
                                  -121519;10;0;false;false;63;95;191;;;
                                  -121529;1;0;false;false;;;;;;
                                  -121530;7;0;false;false;63;95;191;;;
                                  -121537;1;0;false;false;;;;;;
                                  -121538;7;0;false;false;63;95;191;;;
                                  -121545;1;0;false;false;;;;;;
                                  -121546;2;0;false;false;63;95;191;;;
                                  -121548;1;0;false;false;;;;;;
                                  -121549;7;0;false;false;63;95;191;;;
                                  -121556;1;0;false;false;;;;;;
                                  -121557;2;0;false;false;63;95;191;;;
                                  -121559;1;0;false;false;;;;;;
                                  -121560;8;0;false;false;63;95;191;;;
                                  -121568;4;0;false;false;;;;;;
                                  -121572;1;0;false;false;63;95;191;;;
                                  -121573;2;0;false;false;;;;;;
                                  -121575;2;0;false;false;63;95;191;;;
                                  -121577;1;0;false;false;;;;;;
                                  -121578;5;0;false;false;63;95;191;;;
                                  -121583;1;0;false;false;;;;;;
                                  -121584;2;0;false;false;63;95;191;;;
                                  -121586;1;0;false;false;;;;;;
                                  -121587;2;0;false;false;63;95;191;;;
                                  -121589;1;0;false;false;;;;;;
                                  -121590;6;0;false;false;63;95;191;;;
                                  -121596;1;0;false;false;;;;;;
                                  -121597;10;0;false;false;63;95;191;;;
                                  -121607;1;0;false;false;;;;;;
                                  -121608;4;0;false;false;63;95;191;;;
                                  -121612;1;0;false;false;;;;;;
                                  -121613;3;0;false;false;63;95;191;;;
                                  -121616;1;0;false;false;;;;;;
                                  -121617;4;0;false;false;63;95;191;;;
                                  -121621;3;0;false;false;;;;;;
                                  -121624;1;0;false;false;63;95;191;;;
                                  -121625;1;0;false;false;;;;;;
                                  -121626;11;1;false;false;127;159;191;;;
                                  -121637;12;0;false;false;63;95;191;;;
                                  -121649;1;0;false;false;;;;;;
                                  -121650;4;0;false;false;127;127;159;;;
                                  -121654;3;0;false;false;;;;;;
                                  -121657;1;0;false;false;63;95;191;;;
                                  -121658;4;0;false;false;;;;;;
                                  -121662;4;0;false;false;127;127;159;;;
                                  -121666;21;0;false;false;63;95;191;;;
                                  -121687;1;0;false;false;;;;;;
                                  -121688;1;0;false;false;127;127;159;;;
                                  -121689;1;0;false;false;;;;;;
                                  -121690;2;0;false;false;63;95;191;;;
                                  -121692;1;0;false;false;;;;;;
                                  -121693;3;0;false;false;63;95;191;;;
                                  -121696;1;0;false;false;;;;;;
                                  -121697;8;0;false;false;63;95;191;;;
                                  -121705;1;0;false;false;;;;;;
                                  -121706;3;0;false;false;63;95;191;;;
                                  -121709;1;0;false;false;;;;;;
                                  -121710;4;0;false;false;63;95;191;;;
                                  -121714;1;0;false;false;;;;;;
                                  -121715;8;0;false;false;63;95;191;;;
                                  -121723;5;0;false;false;127;127;159;;;
                                  -121728;3;0;false;false;;;;;;
                                  -121731;1;0;false;false;63;95;191;;;
                                  -121732;4;0;false;false;;;;;;
                                  -121736;4;0;false;false;127;127;159;;;
                                  -121740;27;0;false;false;63;95;191;;;
                                  -121767;1;0;false;false;;;;;;
                                  -121768;1;0;false;false;127;127;159;;;
                                  -121769;1;0;false;false;;;;;;
                                  -121770;2;0;false;false;63;95;191;;;
                                  -121772;1;0;false;false;;;;;;
                                  -121773;3;0;false;false;63;95;191;;;
                                  -121776;1;0;false;false;;;;;;
                                  -121777;6;0;false;false;63;95;191;;;
                                  -121783;1;0;false;false;;;;;;
                                  -121784;4;0;false;false;63;95;191;;;
                                  -121788;1;0;false;false;;;;;;
                                  -121789;3;0;false;false;63;95;191;;;
                                  -121792;1;0;false;false;;;;;;
                                  -121793;6;0;false;false;63;95;191;;;
                                  -121799;1;0;false;false;;;;;;
                                  -121800;4;0;false;false;63;95;191;;;
                                  -121804;1;0;false;false;;;;;;
                                  -121805;7;0;false;false;63;95;191;;;
                                  -121812;1;0;false;false;;;;;;
                                  -121813;3;0;false;false;63;95;191;;;
                                  -121816;1;0;false;false;;;;;;
                                  -121817;8;0;false;false;63;95;191;;;
                                  -121825;5;0;false;false;127;127;159;;;
                                  -121830;3;0;false;false;;;;;;
                                  -121833;1;0;false;false;63;95;191;;;
                                  -121834;1;0;false;false;;;;;;
                                  -121835;5;0;false;false;127;127;159;;;
                                  -121840;3;0;false;false;;;;;;
                                  -121843;2;0;false;false;63;95;191;;;
                                  -121845;2;0;false;false;;;;;;
                                  -121847;6;1;false;false;127;0;85;;;
                                  -121853;1;0;false;false;;;;;;
                                  -121854;3;1;false;false;127;0;85;;;
                                  -121857;1;0;false;false;;;;;;
                                  -121858;14;0;false;false;0;0;0;;;
                                  -121872;3;1;false;false;127;0;85;;;
                                  -121875;1;0;false;false;;;;;;
                                  -121876;4;0;false;false;0;0;0;;;
                                  -121880;1;0;false;false;;;;;;
                                  -121881;1;0;false;false;0;0;0;;;
                                  -121882;3;0;false;false;;;;;;
                                  -121885;14;0;false;false;0;0;0;;;
                                  -121899;3;0;false;false;;;;;;
                                  -121902;7;0;false;false;0;0;0;;;
                                  -121909;1;0;false;false;;;;;;
                                  -121910;6;0;false;false;0;0;0;;;
                                  -121916;1;0;false;false;;;;;;
                                  -121917;1;0;false;false;0;0;0;;;
                                  -121918;1;0;false;false;;;;;;
                                  -121919;9;0;false;false;0;0;0;;;
                                  -121928;1;0;false;false;;;;;;
                                  -121929;17;0;false;false;0;0;0;;;
                                  -121946;3;1;false;false;127;0;85;;;
                                  -121949;1;0;false;false;;;;;;
                                  -121950;14;0;false;false;0;0;0;;;
                                  -121964;3;0;false;false;;;;;;
                                  -121967;3;1;false;false;127;0;85;;;
                                  -121970;1;0;false;false;;;;;;
                                  -121971;10;0;false;false;0;0;0;;;
                                  -121981;6;0;false;false;;;;;;
                                  -121987;2;1;false;false;127;0;85;;;
                                  -121989;1;0;false;false;;;;;;
                                  -121990;7;0;false;false;0;0;0;;;
                                  -121997;1;0;false;false;;;;;;
                                  -121998;2;0;false;false;0;0;0;;;
                                  -122000;1;0;false;false;;;;;;
                                  -122001;4;1;false;false;127;0;85;;;
                                  -122005;1;0;false;false;0;0;0;;;
                                  -122006;1;0;false;false;;;;;;
                                  -122007;1;0;false;false;0;0;0;;;
                                  -122008;4;0;false;false;;;;;;
                                  -122012;9;0;false;false;0;0;0;;;
                                  -122021;1;0;false;false;;;;;;
                                  -122022;1;0;false;false;0;0;0;;;
                                  -122023;1;0;false;false;;;;;;
                                  -122024;9;0;false;false;0;0;0;;;
                                  -122033;3;0;false;false;;;;;;
                                  -122036;1;0;false;false;0;0;0;;;
                                  -122037;3;0;false;false;;;;;;
                                  -122040;4;1;false;false;127;0;85;;;
                                  -122044;1;0;false;false;;;;;;
                                  -122045;1;0;false;false;0;0;0;;;
                                  -122046;4;0;false;false;;;;;;
                                  -122050;9;0;false;false;0;0;0;;;
                                  -122059;1;0;false;false;;;;;;
                                  -122060;1;0;false;false;0;0;0;;;
                                  -122061;1;0;false;false;;;;;;
                                  -122062;18;0;false;false;0;0;0;;;
                                  -122080;3;0;false;false;;;;;;
                                  -122083;1;0;false;false;0;0;0;;;
                                  -122084;3;0;false;false;;;;;;
                                  -122087;6;1;false;false;127;0;85;;;
                                  -122093;1;0;false;false;;;;;;
                                  -122094;10;0;false;false;0;0;0;;;
                                  -122104;2;0;false;false;;;;;;
                                  -122106;1;0;false;false;0;0;0;;;
                                  -122107;2;0;false;false;;;;;;
                                  -122109;3;0;false;false;63;95;191;;;
                                  -122112;3;0;false;false;;;;;;
                                  -122115;1;0;false;false;63;95;191;;;
                                  -122116;1;0;false;false;;;;;;
                                  -122117;4;0;false;false;63;95;191;;;
                                  -122121;1;0;false;false;;;;;;
                                  -122122;3;0;false;false;63;95;191;;;
                                  -122125;1;0;false;false;;;;;;
                                  -122126;6;0;false;false;63;95;191;;;
                                  -122132;1;0;false;false;;;;;;
                                  -122133;2;0;false;false;63;95;191;;;
                                  -122135;1;0;false;false;;;;;;
                                  -122136;11;0;false;false;63;95;191;;;
                                  -122147;3;0;false;false;;;;;;
                                  -122150;1;0;false;false;63;95;191;;;
                                  -122151;1;0;false;false;;;;;;
                                  -122152;3;0;false;false;127;127;159;;;
                                  -122155;3;0;false;false;;;;;;
                                  -122158;1;0;false;false;63;95;191;;;
                                  -122159;3;0;false;false;;;;;;
                                  -122162;1;0;false;false;63;95;191;;;
                                  -122163;1;0;false;false;;;;;;
                                  -122164;8;1;false;false;127;159;191;;;
                                  -122172;6;0;false;false;63;95;191;;;
                                  -122178;1;0;false;false;;;;;;
                                  -122179;2;0;false;false;63;95;191;;;
                                  -122181;1;0;false;false;;;;;;
                                  -122182;10;0;false;false;63;95;191;;;
                                  -122192;1;0;false;false;;;;;;
                                  -122193;2;0;false;false;63;95;191;;;
                                  -122195;1;0;false;false;;;;;;
                                  -122196;3;0;false;false;63;95;191;;;
                                  -122199;1;0;false;false;;;;;;
                                  -122200;6;0;false;false;63;95;191;;;
                                  -122206;3;0;false;false;;;;;;
                                  -122209;1;0;false;false;63;95;191;;;
                                  -122210;1;0;false;false;;;;;;
                                  -122211;11;1;false;false;127;159;191;;;
                                  -122222;12;0;false;false;63;95;191;;;
                                  -122234;1;0;false;false;;;;;;
                                  -122235;4;0;false;false;127;127;159;;;
                                  -122239;3;0;false;false;;;;;;
                                  -122242;1;0;false;false;63;95;191;;;
                                  -122243;4;0;false;false;;;;;;
                                  -122247;4;0;false;false;127;127;159;;;
                                  -122251;21;0;false;false;63;95;191;;;
                                  -122272;1;0;false;false;;;;;;
                                  -122273;1;0;false;false;127;127;159;;;
                                  -122274;1;0;false;false;;;;;;
                                  -122275;2;0;false;false;63;95;191;;;
                                  -122277;1;0;false;false;;;;;;
                                  -122278;3;0;false;false;63;95;191;;;
                                  -122281;1;0;false;false;;;;;;
                                  -122282;8;0;false;false;63;95;191;;;
                                  -122290;1;0;false;false;;;;;;
                                  -122291;3;0;false;false;63;95;191;;;
                                  -122294;1;0;false;false;;;;;;
                                  -122295;4;0;false;false;63;95;191;;;
                                  -122299;1;0;false;false;;;;;;
                                  -122300;8;0;false;false;63;95;191;;;
                                  -122308;5;0;false;false;127;127;159;;;
                                  -122313;3;0;false;false;;;;;;
                                  -122316;1;0;false;false;63;95;191;;;
                                  -122317;4;0;false;false;;;;;;
                                  -122321;4;0;false;false;127;127;159;;;
                                  -122325;27;0;false;false;63;95;191;;;
                                  -122352;1;0;false;false;;;;;;
                                  -122353;1;0;false;false;127;127;159;;;
                                  -122354;1;0;false;false;;;;;;
                                  -122355;2;0;false;false;63;95;191;;;
                                  -122357;1;0;false;false;;;;;;
                                  -122358;3;0;false;false;63;95;191;;;
                                  -122361;1;0;false;false;;;;;;
                                  -122362;6;0;false;false;63;95;191;;;
                                  -122368;1;0;false;false;;;;;;
                                  -122369;4;0;false;false;63;95;191;;;
                                  -122373;1;0;false;false;;;;;;
                                  -122374;3;0;false;false;63;95;191;;;
                                  -122377;1;0;false;false;;;;;;
                                  -122378;6;0;false;false;63;95;191;;;
                                  -122384;1;0;false;false;;;;;;
                                  -122385;4;0;false;false;63;95;191;;;
                                  -122389;1;0;false;false;;;;;;
                                  -122390;7;0;false;false;63;95;191;;;
                                  -122397;1;0;false;false;;;;;;
                                  -122398;3;0;false;false;63;95;191;;;
                                  -122401;1;0;false;false;;;;;;
                                  -122402;8;0;false;false;63;95;191;;;
                                  -122410;5;0;false;false;127;127;159;;;
                                  -122415;3;0;false;false;;;;;;
                                  -122418;1;0;false;false;63;95;191;;;
                                  -122419;1;0;false;false;;;;;;
                                  -122420;5;0;false;false;127;127;159;;;
                                  -122425;3;0;false;false;;;;;;
                                  -122428;2;0;false;false;63;95;191;;;
                                  -122430;2;0;false;false;;;;;;
                                  -122432;6;1;false;false;127;0;85;;;
                                  -122438;1;0;false;false;;;;;;
                                  -122439;3;1;false;false;127;0;85;;;
                                  -122442;1;0;false;false;;;;;;
                                  -122443;14;0;false;false;0;0;0;;;
                                  -122457;1;0;false;false;;;;;;
                                  -122458;1;0;false;false;0;0;0;;;
                                  -122459;3;0;false;false;;;;;;
                                  -122462;14;0;false;false;0;0;0;;;
                                  -122476;3;0;false;false;;;;;;
                                  -122479;6;1;false;false;127;0;85;;;
                                  -122485;1;0;false;false;;;;;;
                                  -122486;23;0;false;false;0;0;0;;;
                                  -122509;2;0;false;false;;;;;;
                                  -122511;1;0;false;false;0;0;0;;;
                                  -122512;2;0;false;false;;;;;;
                                  -122514;3;0;false;false;63;95;191;;;
                                  -122517;3;0;false;false;;;;;;
                                  -122520;1;0;false;false;63;95;191;;;
                                  -122521;1;0;false;false;;;;;;
                                  -122522;7;0;false;false;63;95;191;;;
                                  -122529;1;0;false;false;;;;;;
                                  -122530;3;0;false;false;63;95;191;;;
                                  -122533;1;0;false;false;;;;;;
                                  -122534;10;0;false;false;63;95;191;;;
                                  -122544;1;0;false;false;;;;;;
                                  -122545;5;0;false;false;63;95;191;;;
                                  -122550;1;0;false;false;;;;;;
                                  -122551;2;0;false;false;63;95;191;;;
                                  -122553;1;0;false;false;;;;;;
                                  -122554;3;0;false;false;63;95;191;;;
                                  -122557;1;0;false;false;;;;;;
                                  -122558;4;0;false;false;63;95;191;;;
                                  -122562;1;0;false;false;;;;;;
                                  -122563;2;0;false;false;63;95;191;;;
                                  -122565;1;0;false;false;;;;;;
                                  -122566;3;0;false;false;63;95;191;;;
                                  -122569;1;0;false;false;;;;;;
                                  -122570;5;0;false;false;63;95;191;;;
                                  -122575;1;0;false;false;;;;;;
                                  -122576;6;0;false;false;63;95;191;;;
                                  -122582;3;0;false;false;;;;;;
                                  -122585;1;0;false;false;63;95;191;;;
                                  -122586;1;0;false;false;;;;;;
                                  -122587;7;0;false;false;63;95;191;;;
                                  -122594;1;0;false;false;;;;;;
                                  -122595;4;0;false;false;63;95;191;;;
                                  -122599;1;0;false;false;;;;;;
                                  -122600;2;0;false;false;63;95;191;;;
                                  -122602;1;0;false;false;;;;;;
                                  -122603;1;0;false;false;63;95;191;;;
                                  -122604;1;0;false;false;;;;;;
                                  -122605;22;0;false;false;63;95;191;;;
                                  -122627;1;0;false;false;;;;;;
                                  -122628;3;0;false;false;63;95;191;;;
                                  -122631;1;0;false;false;;;;;;
                                  -122632;4;0;false;false;63;95;191;;;
                                  -122636;1;0;false;false;;;;;;
                                  -122637;3;0;false;false;63;95;191;;;
                                  -122640;1;0;false;false;;;;;;
                                  -122641;2;0;false;false;63;95;191;;;
                                  -122643;1;0;false;false;;;;;;
                                  -122644;2;0;false;false;63;95;191;;;
                                  -122646;1;0;false;false;;;;;;
                                  -122647;2;0;false;false;63;95;191;;;
                                  -122649;1;0;false;false;;;;;;
                                  -122650;10;0;false;false;63;95;191;;;
                                  -122660;4;0;false;false;;;;;;
                                  -122664;1;0;false;false;63;95;191;;;
                                  -122665;1;0;false;false;;;;;;
                                  -122666;5;0;false;false;63;95;191;;;
                                  -122671;1;0;false;false;;;;;;
                                  -122672;3;0;false;false;63;95;191;;;
                                  -122675;1;0;false;false;;;;;;
                                  -122676;4;0;false;false;63;95;191;;;
                                  -122680;1;0;false;false;;;;;;
                                  -122681;9;0;false;false;63;95;191;;;
                                  -122690;1;0;false;false;;;;;;
                                  -122691;3;0;false;false;63;95;191;;;
                                  -122694;1;0;false;false;;;;;;
                                  -122695;3;0;false;false;63;95;191;;;
                                  -122698;1;0;false;false;;;;;;
                                  -122699;5;0;false;false;63;95;191;;;
                                  -122704;1;0;false;false;;;;;;
                                  -122705;6;0;false;false;63;95;191;;;
                                  -122711;1;0;false;false;;;;;;
                                  -122712;3;0;false;false;63;95;191;;;
                                  -122715;1;0;false;false;;;;;;
                                  -122716;2;0;false;false;63;95;191;;;
                                  -122718;1;0;false;false;;;;;;
                                  -122719;6;0;false;false;63;95;191;;;
                                  -122725;1;0;false;false;;;;;;
                                  -122726;2;0;false;false;63;95;191;;;
                                  -122728;1;0;false;false;;;;;;
                                  -122729;1;0;false;false;63;95;191;;;
                                  -122730;3;0;false;false;;;;;;
                                  -122733;1;0;false;false;63;95;191;;;
                                  -122734;1;0;false;false;;;;;;
                                  -122735;22;0;false;false;63;95;191;;;
                                  -122757;1;0;false;false;;;;;;
                                  -122758;3;0;false;false;63;95;191;;;
                                  -122761;1;0;false;false;;;;;;
                                  -122762;4;0;false;false;63;95;191;;;
                                  -122766;1;0;false;false;;;;;;
                                  -122767;3;0;false;false;63;95;191;;;
                                  -122770;1;0;false;false;;;;;;
                                  -122771;5;0;false;false;63;95;191;;;
                                  -122776;1;0;false;false;;;;;;
                                  -122777;3;0;false;false;63;95;191;;;
                                  -122780;1;0;false;false;;;;;;
                                  -122781;8;0;false;false;63;95;191;;;
                                  -122789;1;0;false;false;;;;;;
                                  -122790;9;0;false;false;63;95;191;;;
                                  -122799;1;0;false;false;;;;;;
                                  -122800;3;0;false;false;63;95;191;;;
                                  -122803;3;0;false;false;;;;;;
                                  -122806;1;0;false;false;63;95;191;;;
                                  -122807;1;0;false;false;;;;;;
                                  -122808;4;0;false;false;63;95;191;;;
                                  -122812;1;0;false;false;;;;;;
                                  -122813;10;0;false;false;63;95;191;;;
                                  -122823;1;0;false;false;;;;;;
                                  -122824;7;0;false;false;63;95;191;;;
                                  -122831;3;0;false;false;;;;;;
                                  -122834;1;0;false;false;63;95;191;;;
                                  -122835;4;0;false;false;;;;;;
                                  -122839;1;0;false;false;63;95;191;;;
                                  -122840;1;0;false;false;;;;;;
                                  -122841;7;1;false;false;127;159;191;;;
                                  -122848;5;0;false;false;63;95;191;;;
                                  -122853;1;0;false;false;;;;;;
                                  -122854;3;0;false;false;63;95;191;;;
                                  -122857;1;0;false;false;;;;;;
                                  -122858;5;0;false;false;63;95;191;;;
                                  -122863;1;0;false;false;;;;;;
                                  -122864;2;0;false;false;63;95;191;;;
                                  -122866;1;0;false;false;;;;;;
                                  -122867;3;0;false;false;63;95;191;;;
                                  -122870;1;0;false;false;;;;;;
                                  -122871;4;0;false;false;63;95;191;;;
                                  -122875;3;0;false;false;;;;;;
                                  -122878;1;0;false;false;63;95;191;;;
                                  -122879;1;0;false;false;;;;;;
                                  -122880;8;1;false;false;127;159;191;;;
                                  -122888;3;0;false;false;63;95;191;;;
                                  -122891;1;0;false;false;;;;;;
                                  -122892;10;0;false;false;63;95;191;;;
                                  -122902;1;0;false;false;;;;;;
                                  -122903;5;0;false;false;63;95;191;;;
                                  -122908;1;0;false;false;;;;;;
                                  -122909;2;0;false;false;63;95;191;;;
                                  -122911;1;0;false;false;;;;;;
                                  -122912;3;0;false;false;63;95;191;;;
                                  -122915;1;0;false;false;;;;;;
                                  -122916;4;0;false;false;63;95;191;;;
                                  -122920;1;0;false;false;;;;;;
                                  -122921;2;0;false;false;63;95;191;;;
                                  -122923;1;0;false;false;;;;;;
                                  -122924;3;0;false;false;63;95;191;;;
                                  -122927;1;0;false;false;;;;;;
                                  -122928;5;0;false;false;63;95;191;;;
                                  -122933;1;0;false;false;;;;;;
                                  -122934;6;0;false;false;63;95;191;;;
                                  -122940;3;0;false;false;;;;;;
                                  -122943;1;0;false;false;63;95;191;;;
                                  -122944;4;0;false;false;;;;;;
                                  -122948;1;0;false;false;63;95;191;;;
                                  -122949;1;0;false;false;;;;;;
                                  -122950;11;1;false;false;127;159;191;;;
                                  -122961;12;0;false;false;63;95;191;;;
                                  -122973;1;0;false;false;;;;;;
                                  -122974;4;0;false;false;127;127;159;;;
                                  -122978;3;0;false;false;;;;;;
                                  -122981;1;0;false;false;63;95;191;;;
                                  -122982;4;0;false;false;;;;;;
                                  -122986;4;0;false;false;127;127;159;;;
                                  -122990;21;0;false;false;63;95;191;;;
                                  -123011;1;0;false;false;;;;;;
                                  -123012;1;0;false;false;127;127;159;;;
                                  -123013;1;0;false;false;;;;;;
                                  -123014;2;0;false;false;63;95;191;;;
                                  -123016;1;0;false;false;;;;;;
                                  -123017;3;0;false;false;63;95;191;;;
                                  -123020;1;0;false;false;;;;;;
                                  -123021;8;0;false;false;63;95;191;;;
                                  -123029;1;0;false;false;;;;;;
                                  -123030;3;0;false;false;63;95;191;;;
                                  -123033;1;0;false;false;;;;;;
                                  -123034;4;0;false;false;63;95;191;;;
                                  -123038;1;0;false;false;;;;;;
                                  -123039;8;0;false;false;63;95;191;;;
                                  -123047;5;0;false;false;127;127;159;;;
                                  -123052;3;0;false;false;;;;;;
                                  -123055;1;0;false;false;63;95;191;;;
                                  -123056;4;0;false;false;;;;;;
                                  -123060;4;0;false;false;127;127;159;;;
                                  -123064;27;0;false;false;63;95;191;;;
                                  -123091;1;0;false;false;;;;;;
                                  -123092;1;0;false;false;127;127;159;;;
                                  -123093;1;0;false;false;;;;;;
                                  -123094;2;0;false;false;63;95;191;;;
                                  -123096;1;0;false;false;;;;;;
                                  -123097;3;0;false;false;63;95;191;;;
                                  -123100;1;0;false;false;;;;;;
                                  -123101;6;0;false;false;63;95;191;;;
                                  -123107;1;0;false;false;;;;;;
                                  -123108;4;0;false;false;63;95;191;;;
                                  -123112;1;0;false;false;;;;;;
                                  -123113;3;0;false;false;63;95;191;;;
                                  -123116;1;0;false;false;;;;;;
                                  -123117;6;0;false;false;63;95;191;;;
                                  -123123;1;0;false;false;;;;;;
                                  -123124;4;0;false;false;63;95;191;;;
                                  -123128;1;0;false;false;;;;;;
                                  -123129;7;0;false;false;63;95;191;;;
                                  -123136;1;0;false;false;;;;;;
                                  -123137;3;0;false;false;63;95;191;;;
                                  -123140;1;0;false;false;;;;;;
                                  -123141;8;0;false;false;63;95;191;;;
                                  -123149;5;0;false;false;127;127;159;;;
                                  -123154;3;0;false;false;;;;;;
                                  -123157;1;0;false;false;63;95;191;;;
                                  -123158;1;0;false;false;;;;;;
                                  -123159;5;0;false;false;127;127;159;;;
                                  -123164;3;0;false;false;;;;;;
                                  -123167;1;0;false;false;63;95;191;;;
                                  -123168;1;0;false;false;;;;;;
                                  -123169;11;1;false;false;127;159;191;;;
                                  -123180;24;0;false;false;63;95;191;;;
                                  -123204;1;0;false;false;;;;;;
                                  -123205;4;0;false;false;127;127;159;;;
                                  -123209;3;0;false;false;;;;;;
                                  -123212;1;0;false;false;63;95;191;;;
                                  -123213;4;0;false;false;;;;;;
                                  -123217;4;0;false;false;127;127;159;;;
                                  -123221;22;0;false;false;63;95;191;;;
                                  -123243;1;0;false;false;;;;;;
                                  -123244;4;0;false;false;63;95;191;;;
                                  -123248;1;0;false;false;;;;;;
                                  -123249;3;0;false;false;63;95;191;;;
                                  -123252;1;0;false;false;;;;;;
                                  -123253;5;0;false;false;63;95;191;;;
                                  -123258;1;0;false;false;;;;;;
                                  -123259;2;0;false;false;63;95;191;;;
                                  -123261;1;0;false;false;;;;;;
                                  -123262;7;0;false;false;63;95;191;;;
                                  -123269;5;0;false;false;127;127;159;;;
                                  -123274;3;0;false;false;;;;;;
                                  -123277;1;0;false;false;63;95;191;;;
                                  -123278;1;0;false;false;;;;;;
                                  -123279;5;0;false;false;127;127;159;;;
                                  -123284;3;0;false;false;;;;;;
                                  -123287;2;0;false;false;63;95;191;;;
                                  -123289;2;0;false;false;;;;;;
                                  -123291;6;1;false;false;127;0;85;;;
                                  -123297;1;0;false;false;;;;;;
                                  -123298;5;0;false;false;0;0;0;;;
                                  -123303;1;0;false;false;;;;;;
                                  -123304;18;0;false;false;0;0;0;;;
                                  -123322;3;1;false;false;127;0;85;;;
                                  -123325;1;0;false;false;;;;;;
                                  -123326;6;0;false;false;0;0;0;;;
                                  -123332;1;0;false;false;;;;;;
                                  -123333;1;0;false;false;0;0;0;;;
                                  -123334;3;0;false;false;;;;;;
                                  -123337;14;0;false;false;0;0;0;;;
                                  -123351;3;0;false;false;;;;;;
                                  -123354;5;0;false;false;0;0;0;;;
                                  -123359;1;0;false;false;;;;;;
                                  -123360;14;0;false;false;0;0;0;;;
                                  -123374;1;0;false;false;;;;;;
                                  -123375;1;0;false;false;0;0;0;;;
                                  -123376;1;0;false;false;;;;;;
                                  -123377;4;1;false;false;127;0;85;;;
                                  -123381;1;0;false;false;0;0;0;;;
                                  -123382;6;0;false;false;;;;;;
                                  -123388;2;1;false;false;127;0;85;;;
                                  -123390;1;0;false;false;;;;;;
                                  -123391;6;0;false;false;0;0;0;;;
                                  -123397;1;0;false;false;;;;;;
                                  -123398;1;0;false;false;0;0;0;;;
                                  -123399;1;0;false;false;;;;;;
                                  -123400;1;0;false;false;0;0;0;;;
                                  -123401;1;0;false;false;;;;;;
                                  -123402;2;0;false;false;0;0;0;;;
                                  -123404;1;0;false;false;;;;;;
                                  -123405;5;0;false;false;0;0;0;;;
                                  -123410;1;0;false;false;;;;;;
                                  -123411;1;0;false;false;0;0;0;;;
                                  -123412;1;0;false;false;;;;;;
                                  -123413;30;0;false;false;0;0;0;;;
                                  -123443;1;0;false;false;;;;;;
                                  -123444;1;0;false;false;0;0;0;;;
                                  -123445;4;0;false;false;;;;;;
                                  -123449;38;0;false;false;0;0;0;;;
                                  -123487;3;0;false;false;;;;;;
                                  -123490;1;0;false;false;0;0;0;;;
                                  -123491;3;0;false;false;;;;;;
                                  -123494;2;1;false;false;127;0;85;;;
                                  -123496;1;0;false;false;;;;;;
                                  -123497;21;0;false;false;0;0;0;;;
                                  -123518;1;0;false;false;;;;;;
                                  -123519;1;0;false;false;0;0;0;;;
                                  -123520;4;0;false;false;;;;;;
                                  -123524;14;0;false;false;0;0;0;;;
                                  -123538;1;0;false;false;;;;;;
                                  -123539;1;0;false;false;0;0;0;;;
                                  -123540;1;0;false;false;;;;;;
                                  -123541;43;0;false;false;0;0;0;;;
                                  -123584;3;0;false;false;;;;;;
                                  -123587;1;0;false;false;0;0;0;;;
                                  -123588;3;0;false;false;;;;;;
                                  -123591;6;1;false;false;127;0;85;;;
                                  -123597;1;0;false;false;;;;;;
                                  -123598;15;0;false;false;0;0;0;;;
                                  -123613;2;0;false;false;;;;;;
                                  -123615;1;0;false;false;0;0;0;;;
                                  -123616;2;0;false;false;;;;;;
                                  -123618;3;0;false;false;63;95;191;;;
                                  -123621;3;0;false;false;;;;;;
                                  -123624;1;0;false;false;63;95;191;;;
                                  -123625;1;0;false;false;;;;;;
                                  -123626;7;0;false;false;63;95;191;;;
                                  -123633;1;0;false;false;;;;;;
                                  -123634;3;0;false;false;63;95;191;;;
                                  -123637;1;0;false;false;;;;;;
                                  -123638;4;0;false;false;63;95;191;;;
                                  -123642;1;0;false;false;;;;;;
                                  -123643;10;0;false;false;63;95;191;;;
                                  -123653;1;0;false;false;;;;;;
                                  -123654;4;0;false;false;63;95;191;;;
                                  -123658;1;0;false;false;;;;;;
                                  -123659;3;0;false;false;63;95;191;;;
                                  -123662;1;0;false;false;;;;;;
                                  -123663;3;0;false;false;63;95;191;;;
                                  -123666;1;0;false;false;;;;;;
                                  -123667;5;0;false;false;63;95;191;;;
                                  -123672;1;0;false;false;;;;;;
                                  -123673;4;0;false;false;63;95;191;;;
                                  -123677;1;0;false;false;;;;;;
                                  -123678;2;0;false;false;63;95;191;;;
                                  -123680;1;0;false;false;;;;;;
                                  -123681;4;0;false;false;63;95;191;;;
                                  -123685;1;0;false;false;;;;;;
                                  -123686;2;0;false;false;63;95;191;;;
                                  -123688;4;0;false;false;;;;;;
                                  -123692;1;0;false;false;63;95;191;;;
                                  -123693;1;0;false;false;;;;;;
                                  -123694;5;0;false;false;63;95;191;;;
                                  -123699;1;0;false;false;;;;;;
                                  -123700;2;0;false;false;63;95;191;;;
                                  -123702;1;0;false;false;;;;;;
                                  -123703;5;0;false;false;63;95;191;;;
                                  -123708;3;0;false;false;;;;;;
                                  -123711;1;0;false;false;63;95;191;;;
                                  -123712;1;0;false;false;;;;;;
                                  -123713;3;0;false;false;127;127;159;;;
                                  -123716;3;0;false;false;;;;;;
                                  -123719;1;0;false;false;63;95;191;;;
                                  -123720;1;0;false;false;;;;;;
                                  -123721;7;1;false;false;127;159;191;;;
                                  -123728;10;0;false;false;63;95;191;;;
                                  -123738;1;0;false;false;;;;;;
                                  -123739;6;0;false;false;63;95;191;;;
                                  -123745;1;0;false;false;;;;;;
                                  -123746;2;0;false;false;63;95;191;;;
                                  -123748;1;0;false;false;;;;;;
                                  -123749;3;0;false;false;63;95;191;;;
                                  -123752;1;0;false;false;;;;;;
                                  -123753;4;0;false;false;63;95;191;;;
                                  -123757;1;0;false;false;;;;;;
                                  -123758;5;0;false;false;63;95;191;;;
                                  -123763;1;0;false;false;;;;;;
                                  -123764;8;0;false;false;63;95;191;;;
                                  -123772;1;0;false;false;;;;;;
                                  -123773;2;0;false;false;63;95;191;;;
                                  -123775;1;0;false;false;;;;;;
                                  -123776;3;0;false;false;63;95;191;;;
                                  -123779;1;0;false;false;;;;;;
                                  -123780;5;0;false;false;63;95;191;;;
                                  -123785;3;0;false;false;;;;;;
                                  -123788;1;0;false;false;63;95;191;;;
                                  -123789;2;0;false;false;;;;;;
                                  -123791;2;0;false;false;63;95;191;;;
                                  -123793;1;0;false;false;;;;;;
                                  -123794;3;0;false;false;63;95;191;;;
                                  -123797;1;0;false;false;;;;;;
                                  -123798;8;0;false;false;63;95;191;;;
                                  -123806;3;0;false;false;;;;;;
                                  -123809;1;0;false;false;63;95;191;;;
                                  -123810;1;0;false;false;;;;;;
                                  -123811;7;1;false;false;127;159;191;;;
                                  -123818;4;0;false;false;63;95;191;;;
                                  -123822;1;0;false;false;;;;;;
                                  -123823;4;0;false;false;63;95;191;;;
                                  -123827;1;0;false;false;;;;;;
                                  -123828;2;0;false;false;63;95;191;;;
                                  -123830;1;0;false;false;;;;;;
                                  -123831;3;0;false;false;63;95;191;;;
                                  -123834;1;0;false;false;;;;;;
                                  -123835;4;0;false;false;63;95;191;;;
                                  -123839;1;0;false;false;;;;;;
                                  -123840;10;0;false;false;63;95;191;;;
                                  -123850;1;0;false;false;;;;;;
                                  -123851;4;0;false;false;63;95;191;;;
                                  -123855;1;0;false;false;;;;;;
                                  -123856;3;0;false;false;63;95;191;;;
                                  -123859;3;0;false;false;;;;;;
                                  -123862;1;0;false;false;63;95;191;;;
                                  -123863;1;0;false;false;;;;;;
                                  -123864;8;1;false;false;127;159;191;;;
                                  -123872;4;0;false;false;63;95;191;;;
                                  -123876;1;0;false;false;;;;;;
                                  -123877;10;0;false;false;63;95;191;;;
                                  -123887;1;0;false;false;;;;;;
                                  -123888;4;0;false;false;63;95;191;;;
                                  -123892;1;0;false;false;;;;;;
                                  -123893;3;0;false;false;63;95;191;;;
                                  -123896;1;0;false;false;;;;;;
                                  -123897;3;0;false;false;63;95;191;;;
                                  -123900;1;0;false;false;;;;;;
                                  -123901;5;0;false;false;63;95;191;;;
                                  -123906;1;0;false;false;;;;;;
                                  -123907;5;0;false;false;63;95;191;;;
                                  -123912;3;0;false;false;;;;;;
                                  -123915;2;0;false;false;63;95;191;;;
                                  -123917;2;0;false;false;;;;;;
                                  -123919;15;0;false;false;0;0;0;;;
                                  -123934;1;0;false;false;;;;;;
                                  -123935;22;0;false;false;0;0;0;;;
                                  -123957;3;1;false;false;127;0;85;;;
                                  -123960;1;0;false;false;;;;;;
                                  -123961;11;0;false;false;0;0;0;;;
                                  -123972;1;0;false;false;;;;;;
                                  -123973;6;0;false;false;0;0;0;;;
                                  -123979;1;0;false;false;;;;;;
                                  -123980;5;0;false;false;0;0;0;;;
                                  -123985;1;0;false;false;;;;;;
                                  -123986;1;0;false;false;0;0;0;;;
                                  -123987;3;0;false;false;;;;;;
                                  -123990;6;1;false;false;127;0;85;;;
                                  -123996;1;0;false;false;;;;;;
                                  -123997;32;0;false;false;0;0;0;;;
                                  -124029;1;0;false;false;;;;;;
                                  -124030;11;0;false;false;0;0;0;;;
                                  -124041;1;0;false;false;;;;;;
                                  -124042;6;0;false;false;0;0;0;;;
                                  -124048;2;0;false;false;;;;;;
                                  -124050;1;0;false;false;0;0;0;;;
                                  -124051;2;0;false;false;;;;;;
                                  -124053;3;0;false;false;63;95;191;;;
                                  -124056;4;0;false;false;;;;;;
                                  -124060;1;0;false;false;63;95;191;;;
                                  -124061;1;0;false;false;;;;;;
                                  -124062;4;0;false;false;63;95;191;;;
                                  -124066;1;0;false;false;;;;;;
                                  -124067;3;0;false;false;63;95;191;;;
                                  -124070;1;0;false;false;;;;;;
                                  -124071;6;0;false;false;63;95;191;;;
                                  -124077;1;0;false;false;;;;;;
                                  -124078;2;0;false;false;63;95;191;;;
                                  -124080;1;0;false;false;;;;;;
                                  -124081;4;0;false;false;63;95;191;;;
                                  -124085;1;0;false;false;;;;;;
                                  -124086;6;0;false;false;63;95;191;;;
                                  -124092;3;0;false;false;;;;;;
                                  -124095;1;0;false;false;63;95;191;;;
                                  -124096;1;0;false;false;;;;;;
                                  -124097;3;0;false;false;127;127;159;;;
                                  -124100;3;0;false;false;;;;;;
                                  -124103;1;0;false;false;63;95;191;;;
                                  -124104;3;0;false;false;;;;;;
                                  -124107;1;0;false;false;63;95;191;;;
                                  -124108;1;0;false;false;;;;;;
                                  -124109;8;1;false;false;127;159;191;;;
                                  -124117;3;0;false;false;63;95;191;;;
                                  -124120;1;0;false;false;;;;;;
                                  -124121;6;0;false;false;63;95;191;;;
                                  -124127;1;0;false;false;;;;;;
                                  -124128;2;0;false;false;63;95;191;;;
                                  -124130;1;0;false;false;;;;;;
                                  -124131;5;0;false;false;63;95;191;;;
                                  -124136;1;0;false;false;;;;;;
                                  -124137;2;0;false;false;63;95;191;;;
                                  -124139;1;0;false;false;;;;;;
                                  -124140;3;0;false;false;63;95;191;;;
                                  -124143;1;0;false;false;;;;;;
                                  -124144;6;0;false;false;63;95;191;;;
                                  -124150;3;0;false;false;;;;;;
                                  -124153;1;0;false;false;63;95;191;;;
                                  -124154;1;0;false;false;;;;;;
                                  -124155;11;1;false;false;127;159;191;;;
                                  -124166;12;0;false;false;63;95;191;;;
                                  -124178;1;0;false;false;;;;;;
                                  -124179;4;0;false;false;127;127;159;;;
                                  -124183;3;0;false;false;;;;;;
                                  -124186;1;0;false;false;63;95;191;;;
                                  -124187;4;0;false;false;;;;;;
                                  -124191;4;0;false;false;127;127;159;;;
                                  -124195;21;0;false;false;63;95;191;;;
                                  -124216;1;0;false;false;;;;;;
                                  -124217;1;0;false;false;127;127;159;;;
                                  -124218;1;0;false;false;;;;;;
                                  -124219;2;0;false;false;63;95;191;;;
                                  -124221;1;0;false;false;;;;;;
                                  -124222;3;0;false;false;63;95;191;;;
                                  -124225;1;0;false;false;;;;;;
                                  -124226;8;0;false;false;63;95;191;;;
                                  -124234;1;0;false;false;;;;;;
                                  -124235;3;0;false;false;63;95;191;;;
                                  -124238;1;0;false;false;;;;;;
                                  -124239;4;0;false;false;63;95;191;;;
                                  -124243;1;0;false;false;;;;;;
                                  -124244;8;0;false;false;63;95;191;;;
                                  -124252;5;0;false;false;127;127;159;;;
                                  -124257;3;0;false;false;;;;;;
                                  -124260;1;0;false;false;63;95;191;;;
                                  -124261;4;0;false;false;;;;;;
                                  -124265;4;0;false;false;127;127;159;;;
                                  -124269;27;0;false;false;63;95;191;;;
                                  -124296;1;0;false;false;;;;;;
                                  -124297;1;0;false;false;127;127;159;;;
                                  -124298;1;0;false;false;;;;;;
                                  -124299;2;0;false;false;63;95;191;;;
                                  -124301;1;0;false;false;;;;;;
                                  -124302;3;0;false;false;63;95;191;;;
                                  -124305;1;0;false;false;;;;;;
                                  -124306;6;0;false;false;63;95;191;;;
                                  -124312;1;0;false;false;;;;;;
                                  -124313;4;0;false;false;63;95;191;;;
                                  -124317;1;0;false;false;;;;;;
                                  -124318;3;0;false;false;63;95;191;;;
                                  -124321;1;0;false;false;;;;;;
                                  -124322;6;0;false;false;63;95;191;;;
                                  -124328;1;0;false;false;;;;;;
                                  -124329;4;0;false;false;63;95;191;;;
                                  -124333;1;0;false;false;;;;;;
                                  -124334;7;0;false;false;63;95;191;;;
                                  -124341;1;0;false;false;;;;;;
                                  -124342;3;0;false;false;63;95;191;;;
                                  -124345;1;0;false;false;;;;;;
                                  -124346;8;0;false;false;63;95;191;;;
                                  -124354;5;0;false;false;127;127;159;;;
                                  -124359;3;0;false;false;;;;;;
                                  -124362;1;0;false;false;63;95;191;;;
                                  -124363;1;0;false;false;;;;;;
                                  -124364;5;0;false;false;127;127;159;;;
                                  -124369;3;0;false;false;;;;;;
                                  -124372;2;0;false;false;63;95;191;;;
                                  -124374;2;0;false;false;;;;;;
                                  -124376;6;1;false;false;127;0;85;;;
                                  -124382;1;0;false;false;;;;;;
                                  -124383;3;1;false;false;127;0;85;;;
                                  -124386;1;0;false;false;;;;;;
                                  -124387;14;0;false;false;0;0;0;;;
                                  -124401;1;0;false;false;;;;;;
                                  -124402;1;0;false;false;0;0;0;;;
                                  -124403;3;0;false;false;;;;;;
                                  -124406;14;0;false;false;0;0;0;;;
                                  -124420;3;0;false;false;;;;;;
                                  -124423;6;1;false;false;127;0;85;;;
                                  -124429;1;0;false;false;;;;;;
                                  -124430;31;0;false;false;0;0;0;;;
                                  -124461;1;0;false;false;;;;;;
                                  -124462;1;0;false;false;0;0;0;;;
                                  -124463;1;0;false;false;;;;;;
                                  -124464;2;0;false;false;0;0;0;;;
                                  -124466;2;0;false;false;;;;;;
                                  -124468;1;0;false;false;0;0;0;;;
                                  -124469;2;0;false;false;;;;;;
                                  -124471;3;0;false;false;63;95;191;;;
                                  -124474;3;0;false;false;;;;;;
                                  -124477;1;0;false;false;63;95;191;;;
                                  -124478;1;0;false;false;;;;;;
                                  -124479;7;0;false;false;63;95;191;;;
                                  -124486;1;0;false;false;;;;;;
                                  -124487;3;0;false;false;63;95;191;;;
                                  -124490;1;0;false;false;;;;;;
                                  -124491;6;0;false;false;63;95;191;;;
                                  -124497;1;0;false;false;;;;;;
                                  -124498;2;0;false;false;63;95;191;;;
                                  -124500;1;0;false;false;;;;;;
                                  -124501;5;0;false;false;63;95;191;;;
                                  -124506;1;0;false;false;;;;;;
                                  -124507;4;0;false;false;63;95;191;;;
                                  -124511;1;0;false;false;;;;;;
                                  -124512;3;0;false;false;63;95;191;;;
                                  -124515;1;0;false;false;;;;;;
                                  -124516;2;0;false;false;63;95;191;;;
                                  -124518;1;0;false;false;;;;;;
                                  -124519;10;0;false;false;63;95;191;;;
                                  -124529;1;0;false;false;;;;;;
                                  -124530;9;0;false;false;63;95;191;;;
                                  -124539;1;0;false;false;;;;;;
                                  -124540;2;0;false;false;63;95;191;;;
                                  -124542;1;0;false;false;;;;;;
                                  -124543;3;0;false;false;63;95;191;;;
                                  -124546;4;0;false;false;;;;;;
                                  -124550;1;0;false;false;63;95;191;;;
                                  -124551;1;0;false;false;;;;;;
                                  -124552;6;0;false;false;63;95;191;;;
                                  -124558;1;0;false;false;;;;;;
                                  -124559;6;0;false;false;63;95;191;;;
                                  -124565;1;0;false;false;;;;;;
                                  -124566;5;0;false;false;63;95;191;;;
                                  -124571;3;0;false;false;;;;;;
                                  -124574;1;0;false;false;63;95;191;;;
                                  -124575;1;0;false;false;;;;;;
                                  -124576;3;0;false;false;127;127;159;;;
                                  -124579;3;0;false;false;;;;;;
                                  -124582;1;0;false;false;63;95;191;;;
                                  -124583;3;0;false;false;;;;;;
                                  -124586;1;0;false;false;63;95;191;;;
                                  -124587;1;0;false;false;;;;;;
                                  -124588;8;1;false;false;127;159;191;;;
                                  -124596;6;0;false;false;63;95;191;;;
                                  -124602;1;0;false;false;;;;;;
                                  -124603;2;0;false;false;63;95;191;;;
                                  -124605;1;0;false;false;;;;;;
                                  -124606;5;0;false;false;63;95;191;;;
                                  -124611;1;0;false;false;;;;;;
                                  -124612;4;0;false;false;63;95;191;;;
                                  -124616;1;0;false;false;;;;;;
                                  -124617;3;0;false;false;63;95;191;;;
                                  -124620;1;0;false;false;;;;;;
                                  -124621;2;0;false;false;63;95;191;;;
                                  -124623;1;0;false;false;;;;;;
                                  -124624;10;0;false;false;63;95;191;;;
                                  -124634;1;0;false;false;;;;;;
                                  -124635;9;0;false;false;63;95;191;;;
                                  -124644;1;0;false;false;;;;;;
                                  -124645;2;0;false;false;63;95;191;;;
                                  -124647;1;0;false;false;;;;;;
                                  -124648;3;0;false;false;63;95;191;;;
                                  -124651;1;0;false;false;;;;;;
                                  -124652;6;0;false;false;63;95;191;;;
                                  -124658;4;0;false;false;;;;;;
                                  -124662;1;0;false;false;63;95;191;;;
                                  -124663;2;0;false;false;;;;;;
                                  -124665;6;0;false;false;63;95;191;;;
                                  -124671;1;0;false;false;;;;;;
                                  -124672;5;0;false;false;63;95;191;;;
                                  -124677;3;0;false;false;;;;;;
                                  -124680;2;0;false;false;63;95;191;;;
                                  -124682;2;0;false;false;;;;;;
                                  -124684;3;1;false;false;127;0;85;;;
                                  -124687;1;0;false;false;;;;;;
                                  -124688;19;0;false;false;0;0;0;;;
                                  -124707;1;0;false;false;;;;;;
                                  -124708;1;0;false;false;0;0;0;;;
                                  -124709;3;0;false;false;;;;;;
                                  -124712;3;1;false;false;127;0;85;;;
                                  -124715;1;0;false;false;;;;;;
                                  -124716;10;0;false;false;0;0;0;;;
                                  -124726;6;0;false;false;;;;;;
                                  -124732;2;1;false;false;127;0;85;;;
                                  -124734;1;0;false;false;;;;;;
                                  -124735;11;0;false;false;0;0;0;;;
                                  -124746;1;0;false;false;;;;;;
                                  -124747;2;0;false;false;0;0;0;;;
                                  -124749;1;0;false;false;;;;;;
                                  -124750;2;0;false;false;0;0;0;;;
                                  -124752;1;0;false;false;;;;;;
                                  -124753;1;0;false;false;0;0;0;;;
                                  -124754;4;0;false;false;;;;;;
                                  -124758;9;0;false;false;0;0;0;;;
                                  -124767;1;0;false;false;;;;;;
                                  -124768;1;0;false;false;0;0;0;;;
                                  -124769;1;0;false;false;;;;;;
                                  -124770;22;0;false;false;0;0;0;;;
                                  -124792;1;0;false;false;;;;;;
                                  -124793;1;0;false;false;0;0;0;;;
                                  -124794;1;0;false;false;;;;;;
                                  -124795;11;0;false;false;0;0;0;;;
                                  -124806;3;0;false;false;;;;;;
                                  -124809;1;0;false;false;0;0;0;;;
                                  -124810;3;0;false;false;;;;;;
                                  -124813;4;1;false;false;127;0;85;;;
                                  -124817;1;0;false;false;;;;;;
                                  -124818;1;0;false;false;0;0;0;;;
                                  -124819;4;0;false;false;;;;;;
                                  -124823;9;0;false;false;0;0;0;;;
                                  -124832;1;0;false;false;;;;;;
                                  -124833;1;0;false;false;0;0;0;;;
                                  -124834;1;0;false;false;;;;;;
                                  -124835;2;0;false;false;0;0;0;;;
                                  -124837;3;0;false;false;;;;;;
                                  -124840;1;0;false;false;0;0;0;;;
                                  -124841;3;0;false;false;;;;;;
                                  -124844;6;1;false;false;127;0;85;;;
                                  -124850;1;0;false;false;;;;;;
                                  -124851;10;0;false;false;0;0;0;;;
                                  -124861;2;0;false;false;;;;;;
                                  -124863;1;0;false;false;0;0;0;;;
                                  -124864;2;0;false;false;;;;;;
                                  -124866;3;0;false;false;63;95;191;;;
                                  -124869;3;0;false;false;;;;;;
                                  -124872;1;0;false;false;63;95;191;;;
                                  -124873;1;0;false;false;;;;;;
                                  -124874;7;0;false;false;63;95;191;;;
                                  -124881;1;0;false;false;;;;;;
                                  -124882;3;0;false;false;63;95;191;;;
                                  -124885;1;0;false;false;;;;;;
                                  -124886;4;0;false;false;63;95;191;;;
                                  -124890;1;0;false;false;;;;;;
                                  -124891;2;0;false;false;63;95;191;;;
                                  -124893;1;0;false;false;;;;;;
                                  -124894;3;0;false;false;63;95;191;;;
                                  -124897;1;0;false;false;;;;;;
                                  -124898;9;0;false;false;63;95;191;;;
                                  -124907;1;0;false;false;;;;;;
                                  -124908;6;0;false;false;63;95;191;;;
                                  -124914;1;0;false;false;;;;;;
                                  -124915;2;0;false;false;63;95;191;;;
                                  -124917;1;0;false;false;;;;;;
                                  -124918;3;0;false;false;63;95;191;;;
                                  -124921;1;0;false;false;;;;;;
                                  -124922;4;0;false;false;63;95;191;;;
                                  -124926;3;0;false;false;;;;;;
                                  -124929;1;0;false;false;63;95;191;;;
                                  -124930;1;0;false;false;;;;;;
                                  -124931;5;0;false;false;63;95;191;;;
                                  -124936;1;0;false;false;;;;;;
                                  -124937;1;0;false;false;63;95;191;;;
                                  -124938;1;0;false;false;;;;;;
                                  -124939;4;0;false;false;63;95;191;;;
                                  -124943;1;0;false;false;;;;;;
                                  -124944;6;0;false;false;63;95;191;;;
                                  -124950;1;0;false;false;;;;;;
                                  -124951;4;0;false;false;63;95;191;;;
                                  -124955;1;0;false;false;;;;;;
                                  -124956;14;0;false;false;63;95;191;;;
                                  -124970;1;0;false;false;;;;;;
                                  -124971;2;0;false;false;63;95;191;;;
                                  -124973;1;0;false;false;;;;;;
                                  -124974;4;0;false;false;63;95;191;;;
                                  -124978;1;0;false;false;;;;;;
                                  -124979;31;0;false;false;63;95;191;;;
                                  -125010;3;0;false;false;;;;;;
                                  -125013;1;0;false;false;63;95;191;;;
                                  -125014;1;0;false;false;;;;;;
                                  -125015;7;0;false;false;63;95;191;;;
                                  -125022;1;0;false;false;;;;;;
                                  -125023;3;0;false;false;63;95;191;;;
                                  -125026;1;0;false;false;;;;;;
                                  -125027;4;0;false;false;63;95;191;;;
                                  -125031;1;0;false;false;;;;;;
                                  -125032;2;0;false;false;63;95;191;;;
                                  -125034;1;0;false;false;;;;;;
                                  -125035;3;0;false;false;63;95;191;;;
                                  -125038;1;0;false;false;;;;;;
                                  -125039;6;0;false;false;63;95;191;;;
                                  -125045;1;0;false;false;;;;;;
                                  -125046;9;0;false;false;63;95;191;;;
                                  -125055;3;0;false;false;;;;;;
                                  -125058;1;0;false;false;63;95;191;;;
                                  -125059;3;0;false;false;;;;;;
                                  -125062;1;0;false;false;63;95;191;;;
                                  -125063;1;0;false;false;;;;;;
                                  -125064;7;1;false;false;127;159;191;;;
                                  -125071;6;0;false;false;63;95;191;;;
                                  -125077;1;0;false;false;;;;;;
                                  -125078;6;0;false;false;63;95;191;;;
                                  -125084;1;0;false;false;;;;;;
                                  -125085;8;0;false;false;63;95;191;;;
                                  -125093;1;0;false;false;;;;;;
                                  -125094;2;0;false;false;63;95;191;;;
                                  -125096;1;0;false;false;;;;;;
                                  -125097;3;0;false;false;63;95;191;;;
                                  -125100;1;0;false;false;;;;;;
                                  -125101;5;0;false;false;63;95;191;;;
                                  -125106;1;0;false;false;;;;;;
                                  -125107;2;0;false;false;63;95;191;;;
                                  -125109;1;0;false;false;;;;;;
                                  -125110;3;0;false;false;63;95;191;;;
                                  -125113;1;0;false;false;;;;;;
                                  -125114;8;0;false;false;63;95;191;;;
                                  -125122;4;0;false;false;;;;;;
                                  -125126;1;0;false;false;63;95;191;;;
                                  -125127;2;0;false;false;;;;;;
                                  -125129;1;0;false;false;63;95;191;;;
                                  -125130;1;0;false;false;;;;;;
                                  -125131;29;0;false;false;63;95;191;;;
                                  -125160;1;0;false;false;;;;;;
                                  -125161;1;0;false;false;63;95;191;;;
                                  -125162;1;0;false;false;;;;;;
                                  -125163;8;1;false;false;127;159;191;;;
                                  -125171;4;0;false;false;63;95;191;;;
                                  -125175;1;0;false;false;;;;;;
                                  -125176;2;0;false;false;63;95;191;;;
                                  -125178;1;0;false;false;;;;;;
                                  -125179;3;0;false;false;63;95;191;;;
                                  -125182;1;0;false;false;;;;;;
                                  -125183;9;0;false;false;63;95;191;;;
                                  -125192;1;0;false;false;;;;;;
                                  -125193;6;0;false;false;63;95;191;;;
                                  -125199;1;0;false;false;;;;;;
                                  -125200;2;0;false;false;63;95;191;;;
                                  -125202;1;0;false;false;;;;;;
                                  -125203;3;0;false;false;63;95;191;;;
                                  -125206;1;0;false;false;;;;;;
                                  -125207;4;0;false;false;63;95;191;;;
                                  -125211;3;0;false;false;;;;;;
                                  -125214;1;0;false;false;63;95;191;;;
                                  -125215;1;0;false;false;;;;;;
                                  -125216;11;1;false;false;127;159;191;;;
                                  -125227;12;0;false;false;63;95;191;;;
                                  -125239;1;0;false;false;;;;;;
                                  -125240;4;0;false;false;127;127;159;;;
                                  -125244;3;0;false;false;;;;;;
                                  -125247;1;0;false;false;63;95;191;;;
                                  -125248;4;0;false;false;;;;;;
                                  -125252;4;0;false;false;127;127;159;;;
                                  -125256;21;0;false;false;63;95;191;;;
                                  -125277;1;0;false;false;;;;;;
                                  -125278;1;0;false;false;127;127;159;;;
                                  -125279;1;0;false;false;;;;;;
                                  -125280;2;0;false;false;63;95;191;;;
                                  -125282;1;0;false;false;;;;;;
                                  -125283;3;0;false;false;63;95;191;;;
                                  -125286;1;0;false;false;;;;;;
                                  -125287;8;0;false;false;63;95;191;;;
                                  -125295;1;0;false;false;;;;;;
                                  -125296;3;0;false;false;63;95;191;;;
                                  -125299;1;0;false;false;;;;;;
                                  -125300;4;0;false;false;63;95;191;;;
                                  -125304;1;0;false;false;;;;;;
                                  -125305;8;0;false;false;63;95;191;;;
                                  -125313;5;0;false;false;127;127;159;;;
                                  -125318;3;0;false;false;;;;;;
                                  -125321;1;0;false;false;63;95;191;;;
                                  -125322;4;0;false;false;;;;;;
                                  -125326;4;0;false;false;127;127;159;;;
                                  -125330;27;0;false;false;63;95;191;;;
                                  -125357;1;0;false;false;;;;;;
                                  -125358;1;0;false;false;127;127;159;;;
                                  -125359;1;0;false;false;;;;;;
                                  -125360;2;0;false;false;63;95;191;;;
                                  -125362;1;0;false;false;;;;;;
                                  -125363;3;0;false;false;63;95;191;;;
                                  -125366;1;0;false;false;;;;;;
                                  -125367;6;0;false;false;63;95;191;;;
                                  -125373;1;0;false;false;;;;;;
                                  -125374;4;0;false;false;63;95;191;;;
                                  -125378;1;0;false;false;;;;;;
                                  -125379;3;0;false;false;63;95;191;;;
                                  -125382;1;0;false;false;;;;;;
                                  -125383;6;0;false;false;63;95;191;;;
                                  -125389;1;0;false;false;;;;;;
                                  -125390;4;0;false;false;63;95;191;;;
                                  -125394;1;0;false;false;;;;;;
                                  -125395;7;0;false;false;63;95;191;;;
                                  -125402;1;0;false;false;;;;;;
                                  -125403;3;0;false;false;63;95;191;;;
                                  -125406;1;0;false;false;;;;;;
                                  -125407;8;0;false;false;63;95;191;;;
                                  -125415;5;0;false;false;127;127;159;;;
                                  -125420;3;0;false;false;;;;;;
                                  -125423;1;0;false;false;63;95;191;;;
                                  -125424;1;0;false;false;;;;;;
                                  -125425;5;0;false;false;127;127;159;;;
                                  -125430;3;0;false;false;;;;;;
                                  -125433;1;0;false;false;63;95;191;;;
                                  -125434;1;0;false;false;;;;;;
                                  -125435;11;1;false;false;127;159;191;;;
                                  -125446;24;0;false;false;63;95;191;;;
                                  -125470;1;0;false;false;;;;;;
                                  -125471;4;0;false;false;127;127;159;;;
                                  -125475;3;0;false;false;;;;;;
                                  -125478;1;0;false;false;63;95;191;;;
                                  -125479;3;0;false;false;;;;;;
                                  -125482;4;0;false;false;127;127;159;;;
                                  -125486;19;0;false;false;63;95;191;;;
                                  -125505;1;0;false;false;;;;;;
                                  -125506;4;0;false;false;63;95;191;;;
                                  -125510;1;0;false;false;;;;;;
                                  -125511;3;0;false;false;63;95;191;;;
                                  -125514;1;0;false;false;;;;;;
                                  -125515;6;0;false;false;63;95;191;;;
                                  -125521;1;0;false;false;;;;;;
                                  -125522;2;0;false;false;63;95;191;;;
                                  -125524;1;0;false;false;;;;;;
                                  -125525;7;0;false;false;63;95;191;;;
                                  -125532;1;0;false;false;;;;;;
                                  -125533;3;0;false;false;63;95;191;;;
                                  -125536;1;0;false;false;;;;;;
                                  -125537;5;0;false;false;63;95;191;;;
                                  -125542;1;0;false;false;;;;;;
                                  -125543;5;0;false;false;63;95;191;;;
                                  -125548;1;0;false;false;;;;;;
                                  -125549;9;0;false;false;63;95;191;;;
                                  -125558;1;0;false;false;;;;;;
                                  -125559;15;0;false;false;63;95;191;;;
                                  -125574;5;0;false;false;127;127;159;;;
                                  -125579;4;0;false;false;;;;;;
                                  -125583;1;0;false;false;63;95;191;;;
                                  -125584;1;0;false;false;;;;;;
                                  -125585;5;0;false;false;127;127;159;;;
                                  -125590;3;0;false;false;;;;;;
                                  -125593;2;0;false;false;63;95;191;;;
                                  -125595;2;0;false;false;;;;;;
                                  -125597;6;1;false;false;127;0;85;;;
                                  -125603;1;0;false;false;;;;;;
                                  -125604;3;1;false;false;127;0;85;;;
                                  -125607;1;0;false;false;;;;;;
                                  -125608;16;0;false;false;0;0;0;;;
                                  -125624;3;1;false;false;127;0;85;;;
                                  -125627;1;0;false;false;;;;;;
                                  -125628;7;0;false;false;0;0;0;;;
                                  -125635;1;0;false;false;;;;;;
                                  -125636;1;0;false;false;0;0;0;;;
                                  -125637;3;0;false;false;;;;;;
                                  -125640;14;0;false;false;0;0;0;;;
                                  -125654;6;0;false;false;;;;;;
                                  -125660;2;1;false;false;127;0;85;;;
                                  -125662;1;0;false;false;;;;;;
                                  -125663;7;0;false;false;0;0;0;;;
                                  -125670;1;0;false;false;;;;;;
                                  -125671;1;0;false;false;0;0;0;;;
                                  -125672;1;0;false;false;;;;;;
                                  -125673;1;0;false;false;0;0;0;;;
                                  -125674;1;0;false;false;;;;;;
                                  -125675;2;0;false;false;0;0;0;;;
                                  -125677;1;0;false;false;;;;;;
                                  -125678;6;0;false;false;0;0;0;;;
                                  -125684;1;0;false;false;;;;;;
                                  -125685;1;0;false;false;0;0;0;;;
                                  -125686;1;0;false;false;;;;;;
                                  -125687;15;0;false;false;0;0;0;;;
                                  -125702;1;0;false;false;;;;;;
                                  -125703;1;0;false;false;0;0;0;;;
                                  -125704;4;0;false;false;;;;;;
                                  -125708;35;0;false;false;0;0;0;;;
                                  -125743;5;0;false;false;;;;;;
                                  -125748;1;0;false;false;0;0;0;;;
                                  -125749;3;0;false;false;;;;;;
                                  -125752;6;1;false;false;127;0;85;;;
                                  -125758;1;0;false;false;;;;;;
                                  -125759;39;0;false;false;0;0;0;;;
                                  -125798;2;0;false;false;;;;;;
                                  -125800;1;0;false;false;0;0;0;;;
                                  -125801;2;0;false;false;;;;;;
                                  -125803;3;0;false;false;63;95;191;;;
                                  -125806;3;0;false;false;;;;;;
                                  -125809;1;0;false;false;63;95;191;;;
                                  -125810;1;0;false;false;;;;;;
                                  -125811;7;0;false;false;63;95;191;;;
                                  -125818;1;0;false;false;;;;;;
                                  -125819;3;0;false;false;63;95;191;;;
                                  -125822;1;0;false;false;;;;;;
                                  -125823;4;0;false;false;63;95;191;;;
                                  -125827;1;0;false;false;;;;;;
                                  -125828;9;0;false;false;63;95;191;;;
                                  -125837;1;0;false;false;;;;;;
                                  -125838;4;0;false;false;63;95;191;;;
                                  -125842;1;0;false;false;;;;;;
                                  -125843;3;0;false;false;63;95;191;;;
                                  -125846;1;0;false;false;;;;;;
                                  -125847;8;0;false;false;63;95;191;;;
                                  -125855;1;0;false;false;;;;;;
                                  -125856;3;0;false;false;63;95;191;;;
                                  -125859;1;0;false;false;;;;;;
                                  -125860;5;0;false;false;63;95;191;;;
                                  -125865;1;0;false;false;;;;;;
                                  -125866;2;0;false;false;63;95;191;;;
                                  -125868;1;0;false;false;;;;;;
                                  -125869;3;0;false;false;63;95;191;;;
                                  -125872;1;0;false;false;;;;;;
                                  -125873;4;0;false;false;63;95;191;;;
                                  -125877;3;0;false;false;;;;;;
                                  -125880;1;0;false;false;63;95;191;;;
                                  -125881;1;0;false;false;;;;;;
                                  -125882;2;0;false;false;63;95;191;;;
                                  -125884;1;0;false;false;;;;;;
                                  -125885;5;0;false;false;63;95;191;;;
                                  -125890;1;0;false;false;;;;;;
                                  -125891;10;0;false;false;63;95;191;;;
                                  -125901;3;0;false;false;;;;;;
                                  -125904;1;0;false;false;63;95;191;;;
                                  -125905;1;0;false;false;;;;;;
                                  -125906;3;0;false;false;127;127;159;;;
                                  -125909;3;0;false;false;;;;;;
                                  -125912;1;0;false;false;63;95;191;;;
                                  -125913;3;0;false;false;;;;;;
                                  -125916;1;0;false;false;63;95;191;;;
                                  -125917;1;0;false;false;;;;;;
                                  -125918;8;1;false;false;127;159;191;;;
                                  -125926;4;0;false;false;63;95;191;;;
                                  -125930;1;0;false;false;;;;;;
                                  -125931;9;0;false;false;63;95;191;;;
                                  -125940;1;0;false;false;;;;;;
                                  -125941;4;0;false;false;63;95;191;;;
                                  -125945;1;0;false;false;;;;;;
                                  -125946;3;0;false;false;63;95;191;;;
                                  -125949;1;0;false;false;;;;;;
                                  -125950;8;0;false;false;63;95;191;;;
                                  -125958;1;0;false;false;;;;;;
                                  -125959;3;0;false;false;63;95;191;;;
                                  -125962;1;0;false;false;;;;;;
                                  -125963;5;0;false;false;63;95;191;;;
                                  -125968;1;0;false;false;;;;;;
                                  -125969;2;0;false;false;63;95;191;;;
                                  -125971;1;0;false;false;;;;;;
                                  -125972;3;0;false;false;63;95;191;;;
                                  -125975;1;0;false;false;;;;;;
                                  -125976;4;0;false;false;63;95;191;;;
                                  -125980;3;0;false;false;;;;;;
                                  -125983;1;0;false;false;63;95;191;;;
                                  -125984;1;0;false;false;;;;;;
                                  -125985;2;0;false;false;63;95;191;;;
                                  -125987;1;0;false;false;;;;;;
                                  -125988;5;0;false;false;63;95;191;;;
                                  -125993;1;0;false;false;;;;;;
                                  -125994;10;0;false;false;63;95;191;;;
                                  -126004;3;0;false;false;;;;;;
                                  -126007;1;0;false;false;63;95;191;;;
                                  -126008;1;0;false;false;;;;;;
                                  -126009;11;1;false;false;127;159;191;;;
                                  -126020;12;0;false;false;63;95;191;;;
                                  -126032;1;0;false;false;;;;;;
                                  -126033;4;0;false;false;127;127;159;;;
                                  -126037;3;0;false;false;;;;;;
                                  -126040;1;0;false;false;63;95;191;;;
                                  -126041;4;0;false;false;;;;;;
                                  -126045;4;0;false;false;127;127;159;;;
                                  -126049;21;0;false;false;63;95;191;;;
                                  -126070;1;0;false;false;;;;;;
                                  -126071;1;0;false;false;127;127;159;;;
                                  -126072;1;0;false;false;;;;;;
                                  -126073;2;0;false;false;63;95;191;;;
                                  -126075;1;0;false;false;;;;;;
                                  -126076;3;0;false;false;63;95;191;;;
                                  -126079;1;0;false;false;;;;;;
                                  -126080;8;0;false;false;63;95;191;;;
                                  -126088;1;0;false;false;;;;;;
                                  -126089;3;0;false;false;63;95;191;;;
                                  -126092;1;0;false;false;;;;;;
                                  -126093;4;0;false;false;63;95;191;;;
                                  -126097;1;0;false;false;;;;;;
                                  -126098;8;0;false;false;63;95;191;;;
                                  -126106;5;0;false;false;127;127;159;;;
                                  -126111;3;0;false;false;;;;;;
                                  -126114;1;0;false;false;63;95;191;;;
                                  -126115;4;0;false;false;;;;;;
                                  -126119;4;0;false;false;127;127;159;;;
                                  -126123;27;0;false;false;63;95;191;;;
                                  -126150;1;0;false;false;;;;;;
                                  -126151;1;0;false;false;127;127;159;;;
                                  -126152;1;0;false;false;;;;;;
                                  -126153;2;0;false;false;63;95;191;;;
                                  -126155;1;0;false;false;;;;;;
                                  -126156;3;0;false;false;63;95;191;;;
                                  -126159;1;0;false;false;;;;;;
                                  -126160;6;0;false;false;63;95;191;;;
                                  -126166;1;0;false;false;;;;;;
                                  -126167;4;0;false;false;63;95;191;;;
                                  -126171;1;0;false;false;;;;;;
                                  -126172;3;0;false;false;63;95;191;;;
                                  -126175;1;0;false;false;;;;;;
                                  -126176;6;0;false;false;63;95;191;;;
                                  -126182;1;0;false;false;;;;;;
                                  -126183;4;0;false;false;63;95;191;;;
                                  -126187;1;0;false;false;;;;;;
                                  -126188;7;0;false;false;63;95;191;;;
                                  -126195;1;0;false;false;;;;;;
                                  -126196;3;0;false;false;63;95;191;;;
                                  -126199;1;0;false;false;;;;;;
                                  -126200;8;0;false;false;63;95;191;;;
                                  -126208;5;0;false;false;127;127;159;;;
                                  -126213;3;0;false;false;;;;;;
                                  -126216;1;0;false;false;63;95;191;;;
                                  -126217;1;0;false;false;;;;;;
                                  -126218;5;0;false;false;127;127;159;;;
                                  -126223;3;0;false;false;;;;;;
                                  -126226;2;0;false;false;63;95;191;;;
                                  -126228;2;0;false;false;;;;;;
                                  -126230;6;1;false;false;127;0;85;;;
                                  -126236;1;0;false;false;;;;;;
                                  -126237;6;0;false;false;0;0;0;;;
                                  -126243;1;0;false;false;;;;;;
                                  -126244;18;0;false;false;0;0;0;;;
                                  -126262;1;0;false;false;;;;;;
                                  -126263;1;0;false;false;0;0;0;;;
                                  -126264;3;0;false;false;;;;;;
                                  -126267;14;0;false;false;0;0;0;;;
                                  -126281;3;0;false;false;;;;;;
                                  -126284;6;1;false;false;127;0;85;;;
                                  -126290;1;0;false;false;;;;;;
                                  -126291;27;0;false;false;0;0;0;;;
                                  -126318;2;0;false;false;;;;;;
                                  -126320;1;0;false;false;0;0;0;;;
                                  -126321;2;0;false;false;;;;;;
                                  -126323;3;0;false;false;63;95;191;;;
                                  -126326;3;0;false;false;;;;;;
                                  -126329;1;0;false;false;63;95;191;;;
                                  -126330;1;0;false;false;;;;;;
                                  -126331;7;0;false;false;63;95;191;;;
                                  -126338;1;0;false;false;;;;;;
                                  -126339;1;0;false;false;63;95;191;;;
                                  -126340;1;0;false;false;;;;;;
                                  -126341;15;0;false;false;63;95;191;;;
                                  -126356;1;0;false;false;;;;;;
                                  -126357;4;0;false;false;63;95;191;;;
                                  -126361;1;0;false;false;;;;;;
                                  -126362;3;0;false;false;63;95;191;;;
                                  -126365;1;0;false;false;;;;;;
                                  -126366;2;0;false;false;63;95;191;;;
                                  -126368;1;0;false;false;;;;;;
                                  -126369;4;0;false;false;63;95;191;;;
                                  -126373;1;0;false;false;;;;;;
                                  -126374;2;0;false;false;63;95;191;;;
                                  -126376;1;0;false;false;;;;;;
                                  -126377;7;0;false;false;63;95;191;;;
                                  -126384;1;0;false;false;;;;;;
                                  -126385;4;0;false;false;63;95;191;;;
                                  -126389;1;0;false;false;;;;;;
                                  -126390;4;0;false;false;63;95;191;;;
                                  -126394;4;0;false;false;;;;;;
                                  -126398;1;0;false;false;63;95;191;;;
                                  -126399;1;0;false;false;;;;;;
                                  -126400;2;0;false;false;63;95;191;;;
                                  -126402;1;0;false;false;;;;;;
                                  -126403;6;0;false;false;63;95;191;;;
                                  -126409;1;0;false;false;;;;;;
                                  -126410;3;0;false;false;63;95;191;;;
                                  -126413;1;0;false;false;;;;;;
                                  -126414;10;0;false;false;63;95;191;;;
                                  -126424;1;0;false;false;;;;;;
                                  -126425;5;0;false;false;63;95;191;;;
                                  -126430;1;0;false;false;;;;;;
                                  -126431;3;0;false;false;63;95;191;;;
                                  -126434;1;0;false;false;;;;;;
                                  -126435;1;0;false;false;63;95;191;;;
                                  -126436;1;0;false;false;;;;;;
                                  -126437;5;0;false;false;63;95;191;;;
                                  -126442;3;0;false;false;;;;;;
                                  -126445;1;0;false;false;63;95;191;;;
                                  -126446;1;0;false;false;;;;;;
                                  -126447;3;0;false;false;63;95;191;;;
                                  -126450;1;0;false;false;;;;;;
                                  -126451;9;0;false;false;63;95;191;;;
                                  -126460;1;0;false;false;;;;;;
                                  -126461;4;0;false;false;63;95;191;;;
                                  -126465;1;0;false;false;;;;;;
                                  -126466;3;0;false;false;63;95;191;;;
                                  -126469;1;0;false;false;;;;;;
                                  -126470;2;0;false;false;63;95;191;;;
                                  -126472;1;0;false;false;;;;;;
                                  -126473;1;0;false;false;63;95;191;;;
                                  -126474;1;0;false;false;;;;;;
                                  -126475;6;0;false;false;63;95;191;;;
                                  -126481;1;0;false;false;;;;;;
                                  -126482;9;0;false;false;63;95;191;;;
                                  -126491;1;0;false;false;;;;;;
                                  -126492;4;0;false;false;63;95;191;;;
                                  -126496;1;0;false;false;;;;;;
                                  -126497;2;0;false;false;63;95;191;;;
                                  -126499;1;0;false;false;;;;;;
                                  -126500;2;0;false;false;63;95;191;;;
                                  -126502;1;0;false;false;;;;;;
                                  -126503;4;0;false;false;63;95;191;;;
                                  -126507;4;0;false;false;;;;;;
                                  -126511;1;0;false;false;63;95;191;;;
                                  -126512;1;0;false;false;;;;;;
                                  -126513;4;0;false;false;63;95;191;;;
                                  -126517;1;0;false;false;;;;;;
                                  -126518;5;0;false;false;63;95;191;;;
                                  -126523;1;0;false;false;;;;;;
                                  -126524;3;0;false;false;63;95;191;;;
                                  -126527;1;0;false;false;;;;;;
                                  -126528;8;0;false;false;63;95;191;;;
                                  -126536;1;0;false;false;;;;;;
                                  -126537;6;0;false;false;63;95;191;;;
                                  -126543;1;0;false;false;;;;;;
                                  -126544;4;0;false;false;63;95;191;;;
                                  -126548;1;0;false;false;;;;;;
                                  -126549;6;0;false;false;63;95;191;;;
                                  -126555;1;0;false;false;;;;;;
                                  -126556;2;0;false;false;63;95;191;;;
                                  -126558;1;0;false;false;;;;;;
                                  -126559;3;0;false;false;63;95;191;;;
                                  -126562;1;0;false;false;;;;;;
                                  -126563;1;0;false;false;63;95;191;;;
                                  -126564;1;0;false;false;;;;;;
                                  -126565;7;0;false;false;63;95;191;;;
                                  -126572;4;0;false;false;;;;;;
                                  -126576;1;0;false;false;63;95;191;;;
                                  -126577;1;0;false;false;;;;;;
                                  -126578;11;0;false;false;63;95;191;;;
                                  -126589;1;0;false;false;;;;;;
                                  -126590;5;0;false;false;63;95;191;;;
                                  -126595;3;0;false;false;;;;;;
                                  -126598;1;0;false;false;63;95;191;;;
                                  -126599;1;0;false;false;;;;;;
                                  -126600;3;0;false;false;127;127;159;;;
                                  -126603;3;0;false;false;;;;;;
                                  -126606;1;0;false;false;63;95;191;;;
                                  -126607;3;0;false;false;;;;;;
                                  -126610;1;0;false;false;63;95;191;;;
                                  -126611;1;0;false;false;;;;;;
                                  -126612;7;1;false;false;127;159;191;;;
                                  -126619;10;0;false;false;63;95;191;;;
                                  -126629;1;0;false;false;;;;;;
                                  -126630;6;0;false;false;63;95;191;;;
                                  -126636;1;0;false;false;;;;;;
                                  -126637;2;0;false;false;63;95;191;;;
                                  -126639;1;0;false;false;;;;;;
                                  -126640;3;0;false;false;63;95;191;;;
                                  -126643;1;0;false;false;;;;;;
                                  -126644;5;0;false;false;63;95;191;;;
                                  -126649;1;0;false;false;;;;;;
                                  -126650;4;0;false;false;63;95;191;;;
                                  -126654;1;0;false;false;;;;;;
                                  -126655;3;0;false;false;63;95;191;;;
                                  -126658;1;0;false;false;;;;;;
                                  -126659;2;0;false;false;63;95;191;;;
                                  -126661;1;0;false;false;;;;;;
                                  -126662;3;0;false;false;63;95;191;;;
                                  -126665;1;0;false;false;;;;;;
                                  -126666;6;0;false;false;63;95;191;;;
                                  -126672;1;0;false;false;;;;;;
                                  -126673;2;0;false;false;63;95;191;;;
                                  -126675;3;0;false;false;;;;;;
                                  -126678;1;0;false;false;63;95;191;;;
                                  -126679;2;0;false;false;;;;;;
                                  -126681;1;0;false;false;63;95;191;;;
                                  -126682;1;0;false;false;;;;;;
                                  -126683;6;0;false;false;63;95;191;;;
                                  -126689;1;0;false;false;;;;;;
                                  -126690;4;0;false;false;63;95;191;;;
                                  -126694;1;0;false;false;;;;;;
                                  -126695;2;0;false;false;63;95;191;;;
                                  -126697;1;0;false;false;;;;;;
                                  -126698;3;0;false;false;63;95;191;;;
                                  -126701;1;0;false;false;;;;;;
                                  -126702;6;0;false;false;63;95;191;;;
                                  -126708;1;0;false;false;;;;;;
                                  -126709;2;0;false;false;63;95;191;;;
                                  -126711;1;0;false;false;;;;;;
                                  -126712;2;0;false;false;63;95;191;;;
                                  -126714;1;0;false;false;;;;;;
                                  -126715;4;0;false;false;63;95;191;;;
                                  -126719;1;0;false;false;;;;;;
                                  -126720;4;0;false;false;63;95;191;;;
                                  -126724;1;0;false;false;;;;;;
                                  -126725;5;0;false;false;63;95;191;;;
                                  -126730;3;0;false;false;;;;;;
                                  -126733;1;0;false;false;63;95;191;;;
                                  -126734;1;0;false;false;;;;;;
                                  -126735;7;1;false;false;127;159;191;;;
                                  -126742;4;0;false;false;63;95;191;;;
                                  -126746;1;0;false;false;;;;;;
                                  -126747;4;0;false;false;63;95;191;;;
                                  -126751;1;0;false;false;;;;;;
                                  -126752;5;0;false;false;63;95;191;;;
                                  -126757;1;0;false;false;;;;;;
                                  -126758;4;0;false;false;63;95;191;;;
                                  -126762;1;0;false;false;;;;;;
                                  -126763;3;0;false;false;63;95;191;;;
                                  -126766;1;0;false;false;;;;;;
                                  -126767;2;0;false;false;63;95;191;;;
                                  -126769;1;0;false;false;;;;;;
                                  -126770;3;0;false;false;63;95;191;;;
                                  -126773;1;0;false;false;;;;;;
                                  -126774;4;0;false;false;63;95;191;;;
                                  -126778;1;0;false;false;;;;;;
                                  -126779;2;0;false;false;63;95;191;;;
                                  -126781;1;0;false;false;;;;;;
                                  -126782;1;0;false;false;63;95;191;;;
                                  -126783;1;0;false;false;;;;;;
                                  -126784;10;0;false;false;63;95;191;;;
                                  -126794;1;0;false;false;;;;;;
                                  -126795;2;0;false;false;63;95;191;;;
                                  -126797;4;0;false;false;;;;;;
                                  -126801;1;0;false;false;63;95;191;;;
                                  -126802;2;0;false;false;;;;;;
                                  -126804;3;0;false;false;63;95;191;;;
                                  -126807;1;0;false;false;;;;;;
                                  -126808;6;0;false;false;63;95;191;;;
                                  -126814;1;0;false;false;;;;;;
                                  -126815;2;0;false;false;63;95;191;;;
                                  -126817;1;0;false;false;;;;;;
                                  -126818;2;0;false;false;63;95;191;;;
                                  -126820;1;0;false;false;;;;;;
                                  -126821;4;0;false;false;63;95;191;;;
                                  -126825;1;0;false;false;;;;;;
                                  -126826;4;0;false;false;63;95;191;;;
                                  -126830;1;0;false;false;;;;;;
                                  -126831;5;0;false;false;63;95;191;;;
                                  -126836;3;0;false;false;;;;;;
                                  -126839;1;0;false;false;63;95;191;;;
                                  -126840;1;0;false;false;;;;;;
                                  -126841;8;1;false;false;127;159;191;;;
                                  -126849;15;0;false;false;63;95;191;;;
                                  -126864;1;0;false;false;;;;;;
                                  -126865;4;0;false;false;63;95;191;;;
                                  -126869;1;0;false;false;;;;;;
                                  -126870;3;0;false;false;63;95;191;;;
                                  -126873;1;0;false;false;;;;;;
                                  -126874;2;0;false;false;63;95;191;;;
                                  -126876;1;0;false;false;;;;;;
                                  -126877;4;0;false;false;63;95;191;;;
                                  -126881;1;0;false;false;;;;;;
                                  -126882;2;0;false;false;63;95;191;;;
                                  -126884;1;0;false;false;;;;;;
                                  -126885;7;0;false;false;63;95;191;;;
                                  -126892;1;0;false;false;;;;;;
                                  -126893;4;0;false;false;63;95;191;;;
                                  -126897;1;0;false;false;;;;;;
                                  -126898;4;0;false;false;63;95;191;;;
                                  -126902;4;0;false;false;;;;;;
                                  -126906;1;0;false;false;63;95;191;;;
                                  -126907;2;0;false;false;;;;;;
                                  -126909;3;0;false;false;63;95;191;;;
                                  -126912;1;0;false;false;;;;;;
                                  -126913;3;0;false;false;63;95;191;;;
                                  -126916;1;0;false;false;;;;;;
                                  -126917;5;0;false;false;63;95;191;;;
                                  -126922;1;0;false;false;;;;;;
                                  -126923;5;0;false;false;63;95;191;;;
                                  -126928;3;0;false;false;;;;;;
                                  -126931;2;0;false;false;63;95;191;;;
                                  -126933;2;0;false;false;;;;;;
                                  -126935;15;0;false;false;0;0;0;;;
                                  -126950;1;0;false;false;;;;;;
                                  -126951;14;0;false;false;0;0;0;;;
                                  -126965;3;1;false;false;127;0;85;;;
                                  -126968;1;0;false;false;;;;;;
                                  -126969;10;0;false;false;0;0;0;;;
                                  -126979;1;0;false;false;;;;;;
                                  -126980;3;1;false;false;127;0;85;;;
                                  -126983;1;0;false;false;;;;;;
                                  -126984;11;0;false;false;0;0;0;;;
                                  -126995;1;0;false;false;;;;;;
                                  -126996;6;0;false;false;0;0;0;;;
                                  -127002;1;0;false;false;;;;;;
                                  -127003;5;0;false;false;0;0;0;;;
                                  -127008;1;0;false;false;;;;;;
                                  -127009;1;0;false;false;0;0;0;;;
                                  -127010;3;0;false;false;;;;;;
                                  -127013;15;0;false;false;0;0;0;;;
                                  -127028;1;0;false;false;;;;;;
                                  -127029;5;0;false;false;0;0;0;;;
                                  -127034;1;0;false;false;;;;;;
                                  -127035;1;0;false;false;0;0;0;;;
                                  -127036;1;0;false;false;;;;;;
                                  -127037;4;1;false;false;127;0;85;;;
                                  -127041;1;0;false;false;0;0;0;;;
                                  -127042;6;0;false;false;;;;;;
                                  -127048;2;1;false;false;127;0;85;;;
                                  -127050;1;0;false;false;;;;;;
                                  -127051;24;0;false;false;0;0;0;;;
                                  -127075;1;0;false;false;;;;;;
                                  -127076;1;0;false;false;0;0;0;;;
                                  -127077;4;0;false;false;;;;;;
                                  -127081;5;0;false;false;0;0;0;;;
                                  -127086;1;0;false;false;;;;;;
                                  -127087;1;0;false;false;0;0;0;;;
                                  -127088;1;0;false;false;;;;;;
                                  -127089;3;1;false;false;127;0;85;;;
                                  -127092;1;0;false;false;;;;;;
                                  -127093;32;0;false;false;0;0;0;;;
                                  -127125;6;0;false;false;;;;;;
                                  -127131;2;1;false;false;127;0;85;;;
                                  -127133;1;0;false;false;;;;;;
                                  -127134;10;0;false;false;0;0;0;;;
                                  -127144;1;0;false;false;;;;;;
                                  -127145;1;0;false;false;0;0;0;;;
                                  -127146;8;0;false;false;;;;;;
                                  -127154;73;0;false;false;63;127;95;;;
                                  -127227;6;0;false;false;;;;;;
                                  -127233;3;1;false;false;127;0;85;;;
                                  -127236;1;0;false;false;;;;;;
                                  -127237;9;0;false;false;0;0;0;;;
                                  -127246;1;0;false;false;;;;;;
                                  -127247;1;0;false;false;0;0;0;;;
                                  -127248;1;0;false;false;;;;;;
                                  -127249;43;0;false;false;0;0;0;;;
                                  -127292;16;0;false;false;;;;;;
                                  -127308;12;0;false;false;0;0;0;;;
                                  -127320;1;0;false;false;;;;;;
                                  -127321;1;0;false;false;0;0;0;;;
                                  -127322;1;0;false;false;;;;;;
                                  -127323;42;0;false;false;0;0;0;;;
                                  -127365;5;0;false;false;;;;;;
                                  -127370;10;0;false;false;0;0;0;;;
                                  -127380;1;0;false;false;;;;;;
                                  -127381;1;0;false;false;0;0;0;;;
                                  -127382;1;0;false;false;;;;;;
                                  -127383;34;0;false;false;0;0;0;;;
                                  -127417;4;0;false;false;;;;;;
                                  -127421;1;0;false;false;0;0;0;;;
                                  -127422;4;0;false;false;;;;;;
                                  -127426;4;1;false;false;127;0;85;;;
                                  -127430;1;0;false;false;;;;;;
                                  -127431;1;0;false;false;0;0;0;;;
                                  -127432;5;0;false;false;;;;;;
                                  -127437;12;0;false;false;0;0;0;;;
                                  -127449;1;0;false;false;;;;;;
                                  -127450;1;0;false;false;0;0;0;;;
                                  -127451;1;0;false;false;;;;;;
                                  -127452;11;0;false;false;0;0;0;;;
                                  -127463;5;0;false;false;;;;;;
                                  -127468;10;0;false;false;0;0;0;;;
                                  -127478;1;0;false;false;;;;;;
                                  -127479;1;0;false;false;0;0;0;;;
                                  -127480;1;0;false;false;;;;;;
                                  -127481;5;0;false;false;0;0;0;;;
                                  -127486;4;0;false;false;;;;;;
                                  -127490;1;0;false;false;0;0;0;;;
                                  -127491;4;0;false;false;;;;;;
                                  -127495;26;0;false;false;0;0;0;;;
                                  -127521;1;0;false;false;;;;;;
                                  -127522;7;0;false;false;0;0;0;;;
                                  -127529;3;0;false;false;;;;;;
                                  -127532;1;0;false;false;0;0;0;;;
                                  -127533;3;0;false;false;;;;;;
                                  -127536;6;1;false;false;127;0;85;;;
                                  -127542;1;0;false;false;;;;;;
                                  -127543;6;0;false;false;0;0;0;;;
                                  -127549;3;0;false;false;;;;;;
                                  -127552;1;0;false;false;0;0;0;;;
                                  -127553;2;0;false;false;;;;;;
                                  -127555;3;0;false;false;63;95;191;;;
                                  -127558;3;0;false;false;;;;;;
                                  -127561;1;0;false;false;63;95;191;;;
                                  -127562;1;0;false;false;;;;;;
                                  -127563;7;0;false;false;63;95;191;;;
                                  -127570;1;0;false;false;;;;;;
                                  -127571;3;0;false;false;63;95;191;;;
                                  -127574;1;0;false;false;;;;;;
                                  -127575;4;0;false;false;63;95;191;;;
                                  -127579;1;0;false;false;;;;;;
                                  -127580;7;0;false;false;63;95;191;;;
                                  -127587;3;0;false;false;;;;;;
                                  -127590;1;0;false;false;63;95;191;;;
                                  -127591;1;0;false;false;;;;;;
                                  -127592;3;0;false;false;127;127;159;;;
                                  -127595;3;0;false;false;;;;;;
                                  -127598;1;0;false;false;63;95;191;;;
                                  -127599;3;0;false;false;;;;;;
                                  -127602;1;0;false;false;63;95;191;;;
                                  -127603;1;0;false;false;;;;;;
                                  -127604;8;1;false;false;127;159;191;;;
                                  -127612;4;0;false;false;63;95;191;;;
                                  -127616;1;0;false;false;;;;;;
                                  -127617;6;0;false;false;63;95;191;;;
                                  -127623;1;0;false;false;;;;;;
                                  -127624;2;0;false;false;63;95;191;;;
                                  -127626;1;0;false;false;;;;;;
                                  -127627;6;0;false;false;63;95;191;;;
                                  -127633;3;0;false;false;;;;;;
                                  -127636;1;0;false;false;63;95;191;;;
                                  -127637;1;0;false;false;;;;;;
                                  -127638;11;1;false;false;127;159;191;;;
                                  -127649;12;0;false;false;63;95;191;;;
                                  -127661;1;0;false;false;;;;;;
                                  -127662;4;0;false;false;127;127;159;;;
                                  -127666;3;0;false;false;;;;;;
                                  -127669;1;0;false;false;63;95;191;;;
                                  -127670;4;0;false;false;;;;;;
                                  -127674;4;0;false;false;127;127;159;;;
                                  -127678;21;0;false;false;63;95;191;;;
                                  -127699;1;0;false;false;;;;;;
                                  -127700;1;0;false;false;127;127;159;;;
                                  -127701;1;0;false;false;;;;;;
                                  -127702;2;0;false;false;63;95;191;;;
                                  -127704;1;0;false;false;;;;;;
                                  -127705;3;0;false;false;63;95;191;;;
                                  -127708;1;0;false;false;;;;;;
                                  -127709;8;0;false;false;63;95;191;;;
                                  -127717;1;0;false;false;;;;;;
                                  -127718;3;0;false;false;63;95;191;;;
                                  -127721;1;0;false;false;;;;;;
                                  -127722;4;0;false;false;63;95;191;;;
                                  -127726;1;0;false;false;;;;;;
                                  -127727;8;0;false;false;63;95;191;;;
                                  -127735;5;0;false;false;127;127;159;;;
                                  -127740;3;0;false;false;;;;;;
                                  -127743;1;0;false;false;63;95;191;;;
                                  -127744;4;0;false;false;;;;;;
                                  -127748;4;0;false;false;127;127;159;;;
                                  -127752;27;0;false;false;63;95;191;;;
                                  -127779;1;0;false;false;;;;;;
                                  -127780;1;0;false;false;127;127;159;;;
                                  -127781;1;0;false;false;;;;;;
                                  -127782;2;0;false;false;63;95;191;;;
                                  -127784;1;0;false;false;;;;;;
                                  -127785;3;0;false;false;63;95;191;;;
                                  -127788;1;0;false;false;;;;;;
                                  -127789;6;0;false;false;63;95;191;;;
                                  -127795;1;0;false;false;;;;;;
                                  -127796;4;0;false;false;63;95;191;;;
                                  -127800;1;0;false;false;;;;;;
                                  -127801;3;0;false;false;63;95;191;;;
                                  -127804;1;0;false;false;;;;;;
                                  -127805;6;0;false;false;63;95;191;;;
                                  -127811;1;0;false;false;;;;;;
                                  -127812;4;0;false;false;63;95;191;;;
                                  -127816;1;0;false;false;;;;;;
                                  -127817;7;0;false;false;63;95;191;;;
                                  -127824;1;0;false;false;;;;;;
                                  -127825;3;0;false;false;63;95;191;;;
                                  -127828;1;0;false;false;;;;;;
                                  -127829;8;0;false;false;63;95;191;;;
                                  -127837;5;0;false;false;127;127;159;;;
                                  -127842;3;0;false;false;;;;;;
                                  -127845;1;0;false;false;63;95;191;;;
                                  -127846;1;0;false;false;;;;;;
                                  -127847;5;0;false;false;127;127;159;;;
                                  -127852;3;0;false;false;;;;;;
                                  -127855;2;0;false;false;63;95;191;;;
                                  -127857;2;0;false;false;;;;;;
                                  -127859;6;1;false;false;127;0;85;;;
                                  -127865;1;0;false;false;;;;;;
                                  -127866;3;1;false;false;127;0;85;;;
                                  -127869;1;0;false;false;;;;;;
                                  -127870;15;0;false;false;0;0;0;;;
                                  -127885;1;0;false;false;;;;;;
                                  -127886;1;0;false;false;0;0;0;;;
                                  -127887;3;0;false;false;;;;;;
                                  -127890;14;0;false;false;0;0;0;;;
                                  -127904;3;0;false;false;;;;;;
                                  -127907;6;1;false;false;127;0;85;;;
                                  -127913;1;0;false;false;;;;;;
                                  -127914;11;0;false;false;0;0;0;;;
                                  -127925;2;0;false;false;;;;;;
                                  -127927;1;0;false;false;0;0;0;;;
                                  -127928;2;0;false;false;;;;;;
                                  -127930;3;0;false;false;63;95;191;;;
                                  -127933;3;0;false;false;;;;;;
                                  -127936;1;0;false;false;63;95;191;;;
                                  -127937;1;0;false;false;;;;;;
                                  -127938;7;0;false;false;63;95;191;;;
                                  -127945;1;0;false;false;;;;;;
                                  -127946;1;0;false;false;63;95;191;;;
                                  -127947;1;0;false;false;;;;;;
                                  -127948;9;0;false;false;63;95;191;;;
                                  -127957;1;0;false;false;;;;;;
                                  -127958;15;0;false;false;63;95;191;;;
                                  -127973;1;0;false;false;;;;;;
                                  -127974;9;0;false;false;63;95;191;;;
                                  -127983;1;0;false;false;;;;;;
                                  -127984;2;0;false;false;63;95;191;;;
                                  -127986;1;0;false;false;;;;;;
                                  -127987;7;0;false;false;63;95;191;;;
                                  -127994;1;0;false;false;;;;;;
                                  -127995;2;0;false;false;63;95;191;;;
                                  -127997;1;0;false;false;;;;;;
                                  -127998;3;0;false;false;63;95;191;;;
                                  -128001;3;0;false;false;;;;;;
                                  -128004;1;0;false;false;63;95;191;;;
                                  -128005;1;0;false;false;;;;;;
                                  -128006;4;0;false;false;63;95;191;;;
                                  -128010;1;0;false;false;;;;;;
                                  -128011;4;0;false;false;63;95;191;;;
                                  -128015;1;0;false;false;;;;;;
                                  -128016;2;0;false;false;63;95;191;;;
                                  -128018;1;0;false;false;;;;;;
                                  -128019;2;0;false;false;63;95;191;;;
                                  -128021;1;0;false;false;;;;;;
                                  -128022;4;0;false;false;63;95;191;;;
                                  -128026;1;0;false;false;;;;;;
                                  -128027;3;0;false;false;63;95;191;;;
                                  -128030;1;0;false;false;;;;;;
                                  -128031;2;0;false;false;63;95;191;;;
                                  -128033;1;0;false;false;;;;;;
                                  -128034;1;0;false;false;63;95;191;;;
                                  -128035;1;0;false;false;;;;;;
                                  -128036;4;0;false;false;63;95;191;;;
                                  -128040;1;0;false;false;;;;;;
                                  -128041;8;0;false;false;63;95;191;;;
                                  -128049;1;0;false;false;;;;;;
                                  -128050;2;0;false;false;63;95;191;;;
                                  -128052;1;0;false;false;;;;;;
                                  -128053;4;0;false;false;63;95;191;;;
                                  -128057;1;0;false;false;;;;;;
                                  -128058;5;0;false;false;63;95;191;;;
                                  -128063;4;0;false;false;;;;;;
                                  -128067;1;0;false;false;63;95;191;;;
                                  -128068;1;0;false;false;;;;;;
                                  -128069;11;0;false;false;63;95;191;;;
                                  -128080;1;0;false;false;;;;;;
                                  -128081;15;0;false;false;63;95;191;;;
                                  -128096;3;0;false;false;;;;;;
                                  -128099;1;0;false;false;63;95;191;;;
                                  -128100;1;0;false;false;;;;;;
                                  -128101;3;0;false;false;127;127;159;;;
                                  -128104;3;0;false;false;;;;;;
                                  -128107;1;0;false;false;63;95;191;;;
                                  -128108;4;0;false;false;;;;;;
                                  -128112;1;0;false;false;63;95;191;;;
                                  -128113;1;0;false;false;;;;;;
                                  -128114;7;1;false;false;127;159;191;;;
                                  -128121;7;0;false;false;63;95;191;;;
                                  -128128;1;0;false;false;;;;;;
                                  -128129;17;0;false;false;63;95;191;;;
                                  -128146;1;0;false;false;;;;;;
                                  -128147;2;0;false;false;63;95;191;;;
                                  -128149;1;0;false;false;;;;;;
                                  -128150;6;0;false;false;63;95;191;;;
                                  -128156;1;0;false;false;;;;;;
                                  -128157;3;0;false;false;63;95;191;;;
                                  -128160;1;0;false;false;;;;;;
                                  -128161;9;0;false;false;63;95;191;;;
                                  -128170;1;0;false;false;;;;;;
                                  -128171;3;0;false;false;63;95;191;;;
                                  -128174;3;0;false;false;;;;;;
                                  -128177;1;0;false;false;63;95;191;;;
                                  -128178;1;0;false;false;;;;;;
                                  -128179;8;1;false;false;127;159;191;;;
                                  -128187;1;0;false;false;63;95;191;;;
                                  -128188;1;0;false;false;;;;;;
                                  -128189;9;0;false;false;63;95;191;;;
                                  -128198;1;0;false;false;;;;;;
                                  -128199;14;0;false;false;63;95;191;;;
                                  -128213;3;0;false;false;;;;;;
                                  -128216;2;0;false;false;63;95;191;;;
                                  -128218;2;0;false;false;;;;;;
                                  -128220;9;0;false;false;0;0;0;;;
                                  -128229;1;0;false;false;;;;;;
                                  -128230;30;0;false;false;0;0;0;;;
                                  -128260;1;0;false;false;;;;;;
                                  -128261;8;0;false;false;0;0;0;;;
                                  -128269;1;0;false;false;;;;;;
                                  -128270;1;0;false;false;0;0;0;;;
                                  -128271;3;0;false;false;;;;;;
                                  -128274;9;0;false;false;0;0;0;;;
                                  -128283;1;0;false;false;;;;;;
                                  -128284;10;0;false;false;0;0;0;;;
                                  -128294;9;0;false;false;;;;;;
                                  -128303;2;1;false;false;127;0;85;;;
                                  -128305;1;0;false;false;;;;;;
                                  -128306;10;0;false;false;0;0;0;;;
                                  -128316;1;0;false;false;;;;;;
                                  -128317;1;0;false;false;0;0;0;;;
                                  -128318;4;0;false;false;;;;;;
                                  -128322;9;0;false;false;0;0;0;;;
                                  -128331;1;0;false;false;;;;;;
                                  -128332;1;0;false;false;0;0;0;;;
                                  -128333;1;0;false;false;;;;;;
                                  -128334;3;1;false;false;127;0;85;;;
                                  -128337;1;0;false;false;;;;;;
                                  -128338;14;0;false;false;0;0;0;;;
                                  -128352;4;1;false;false;127;0;85;;;
                                  -128356;1;0;false;false;0;0;0;;;
                                  -128357;1;0;false;false;;;;;;
                                  -128358;16;0;false;false;0;0;0;;;
                                  -128374;1;0;false;false;;;;;;
                                  -128375;9;0;false;false;0;0;0;;;
                                  -128384;3;0;false;false;;;;;;
                                  -128387;1;0;false;false;0;0;0;;;
                                  -128388;3;0;false;false;;;;;;
                                  -128391;4;1;false;false;127;0;85;;;
                                  -128395;1;0;false;false;;;;;;
                                  -128396;1;0;false;false;0;0;0;;;
                                  -128397;4;0;false;false;;;;;;
                                  -128401;9;0;false;false;0;0;0;;;
                                  -128410;1;0;false;false;;;;;;
                                  -128411;1;0;false;false;0;0;0;;;
                                  -128412;1;0;false;false;;;;;;
                                  -128413;3;1;false;false;127;0;85;;;
                                  -128416;1;0;false;false;;;;;;
                                  -128417;18;0;false;false;0;0;0;;;
                                  -128435;4;1;false;false;127;0;85;;;
                                  -128439;1;0;false;false;0;0;0;;;
                                  -128440;1;0;false;false;;;;;;
                                  -128441;9;0;false;false;0;0;0;;;
                                  -128450;3;0;false;false;;;;;;
                                  -128453;1;0;false;false;0;0;0;;;
                                  -128454;3;0;false;false;;;;;;
                                  -128457;6;1;false;false;127;0;85;;;
                                  -128463;1;0;false;false;;;;;;
                                  -128464;10;0;false;false;0;0;0;;;
                                  -128474;2;0;false;false;;;;;;
                                  -128476;1;0;false;false;0;0;0;;;
                                  -128477;2;0;false;false;;;;;;
                                  -128479;3;0;false;false;63;95;191;;;
                                  -128482;3;0;false;false;;;;;;
                                  -128485;1;0;false;false;63;95;191;;;
                                  -128486;1;0;false;false;;;;;;
                                  -128487;7;0;false;false;63;95;191;;;
                                  -128494;1;0;false;false;;;;;;
                                  -128495;3;0;false;false;63;95;191;;;
                                  -128498;1;0;false;false;;;;;;
                                  -128499;4;0;false;false;63;95;191;;;
                                  -128503;1;0;false;false;;;;;;
                                  -128504;5;0;false;false;63;95;191;;;
                                  -128509;1;0;false;false;;;;;;
                                  -128510;4;0;false;false;63;95;191;;;
                                  -128514;1;0;false;false;;;;;;
                                  -128515;3;0;false;false;63;95;191;;;
                                  -128518;1;0;false;false;;;;;;
                                  -128519;3;0;false;false;63;95;191;;;
                                  -128522;1;0;false;false;;;;;;
                                  -128523;5;0;false;false;63;95;191;;;
                                  -128528;1;0;false;false;;;;;;
                                  -128529;4;0;false;false;63;95;191;;;
                                  -128533;1;0;false;false;;;;;;
                                  -128534;2;0;false;false;63;95;191;;;
                                  -128536;1;0;false;false;;;;;;
                                  -128537;4;0;false;false;63;95;191;;;
                                  -128541;1;0;false;false;;;;;;
                                  -128542;2;0;false;false;63;95;191;;;
                                  -128544;1;0;false;false;;;;;;
                                  -128545;5;0;false;false;63;95;191;;;
                                  -128550;1;0;false;false;;;;;;
                                  -128551;2;0;false;false;63;95;191;;;
                                  -128553;4;0;false;false;;;;;;
                                  -128557;1;0;false;false;63;95;191;;;
                                  -128558;1;0;false;false;;;;;;
                                  -128559;5;0;false;false;63;95;191;;;
                                  -128564;1;0;false;false;;;;;;
                                  -128565;2;0;false;false;63;95;191;;;
                                  -128567;1;0;false;false;;;;;;
                                  -128568;5;0;false;false;63;95;191;;;
                                  -128573;1;0;false;false;;;;;;
                                  -128574;2;0;false;false;63;95;191;;;
                                  -128576;1;0;false;false;;;;;;
                                  -128577;1;0;false;false;63;95;191;;;
                                  -128578;1;0;false;false;;;;;;
                                  -128579;17;0;false;false;63;95;191;;;
                                  -128596;1;0;false;false;;;;;;
                                  -128597;3;0;false;false;63;95;191;;;
                                  -128600;1;0;false;false;;;;;;
                                  -128601;2;0;false;false;63;95;191;;;
                                  -128603;1;0;false;false;;;;;;
                                  -128604;4;0;false;false;63;95;191;;;
                                  -128608;1;0;false;false;;;;;;
                                  -128609;3;0;false;false;63;95;191;;;
                                  -128612;1;0;false;false;;;;;;
                                  -128613;3;0;false;false;63;95;191;;;
                                  -128616;1;0;false;false;;;;;;
                                  -128617;3;0;false;false;63;95;191;;;
                                  -128620;1;0;false;false;;;;;;
                                  -128621;7;0;false;false;63;95;191;;;
                                  -128628;4;0;false;false;;;;;;
                                  -128632;1;0;false;false;63;95;191;;;
                                  -128633;1;0;false;false;;;;;;
                                  -128634;3;0;false;false;63;95;191;;;
                                  -128637;1;0;false;false;;;;;;
                                  -128638;22;0;false;false;63;95;191;;;
                                  -128660;1;0;false;false;;;;;;
                                  -128661;5;0;false;false;63;95;191;;;
                                  -128666;1;0;false;false;;;;;;
                                  -128667;4;0;false;false;63;95;191;;;
                                  -128671;1;0;false;false;;;;;;
                                  -128672;2;0;false;false;63;95;191;;;
                                  -128674;1;0;false;false;;;;;;
                                  -128675;11;0;false;false;63;95;191;;;
                                  -128686;1;0;false;false;;;;;;
                                  -128687;2;0;false;false;63;95;191;;;
                                  -128689;1;0;false;false;;;;;;
                                  -128690;2;0;false;false;63;95;191;;;
                                  -128692;1;0;false;false;;;;;;
                                  -128693;5;0;false;false;63;95;191;;;
                                  -128698;4;0;false;false;;;;;;
                                  -128702;1;0;false;false;63;95;191;;;
                                  -128703;1;0;false;false;;;;;;
                                  -128704;6;0;false;false;63;95;191;;;
                                  -128710;3;0;false;false;;;;;;
                                  -128713;1;0;false;false;63;95;191;;;
                                  -128714;1;0;false;false;;;;;;
                                  -128715;3;0;false;false;127;127;159;;;
                                  -128718;3;0;false;false;;;;;;
                                  -128721;1;0;false;false;63;95;191;;;
                                  -128722;4;0;false;false;;;;;;
                                  -128726;1;0;false;false;63;95;191;;;
                                  -128727;1;0;false;false;;;;;;
                                  -128728;7;1;false;false;127;159;191;;;
                                  -128735;10;0;false;false;63;95;191;;;
                                  -128745;1;0;false;false;;;;;;
                                  -128746;6;0;false;false;63;95;191;;;
                                  -128752;1;0;false;false;;;;;;
                                  -128753;2;0;false;false;63;95;191;;;
                                  -128755;1;0;false;false;;;;;;
                                  -128756;3;0;false;false;63;95;191;;;
                                  -128759;1;0;false;false;;;;;;
                                  -128760;4;0;false;false;63;95;191;;;
                                  -128764;1;0;false;false;;;;;;
                                  -128765;5;0;false;false;63;95;191;;;
                                  -128770;1;0;false;false;;;;;;
                                  -128771;8;0;false;false;63;95;191;;;
                                  -128779;1;0;false;false;;;;;;
                                  -128780;2;0;false;false;63;95;191;;;
                                  -128782;1;0;false;false;;;;;;
                                  -128783;3;0;false;false;63;95;191;;;
                                  -128786;1;0;false;false;;;;;;
                                  -128787;5;0;false;false;63;95;191;;;
                                  -128792;1;0;false;false;;;;;;
                                  -128793;2;0;false;false;63;95;191;;;
                                  -128795;4;0;false;false;;;;;;
                                  -128799;1;0;false;false;63;95;191;;;
                                  -128800;2;0;false;false;;;;;;
                                  -128802;3;0;false;false;63;95;191;;;
                                  -128805;1;0;false;false;;;;;;
                                  -128806;8;0;false;false;63;95;191;;;
                                  -128814;3;0;false;false;;;;;;
                                  -128817;1;0;false;false;63;95;191;;;
                                  -128818;1;0;false;false;;;;;;
                                  -128819;7;1;false;false;127;159;191;;;
                                  -128826;4;0;false;false;63;95;191;;;
                                  -128830;1;0;false;false;;;;;;
                                  -128831;4;0;false;false;63;95;191;;;
                                  -128835;1;0;false;false;;;;;;
                                  -128836;2;0;false;false;63;95;191;;;
                                  -128838;1;0;false;false;;;;;;
                                  -128839;3;0;false;false;63;95;191;;;
                                  -128842;1;0;false;false;;;;;;
                                  -128843;4;0;false;false;63;95;191;;;
                                  -128847;1;0;false;false;;;;;;
                                  -128848;6;0;false;false;63;95;191;;;
                                  -128854;1;0;false;false;;;;;;
                                  -128855;3;0;false;false;63;95;191;;;
                                  -128858;3;0;false;false;;;;;;
                                  -128861;1;0;false;false;63;95;191;;;
                                  -128862;1;0;false;false;;;;;;
                                  -128863;8;1;false;false;127;159;191;;;
                                  -128871;4;0;false;false;63;95;191;;;
                                  -128875;1;0;false;false;;;;;;
                                  -128876;5;0;false;false;63;95;191;;;
                                  -128881;1;0;false;false;;;;;;
                                  -128882;4;0;false;false;63;95;191;;;
                                  -128886;1;0;false;false;;;;;;
                                  -128887;3;0;false;false;63;95;191;;;
                                  -128890;1;0;false;false;;;;;;
                                  -128891;3;0;false;false;63;95;191;;;
                                  -128894;1;0;false;false;;;;;;
                                  -128895;5;0;false;false;63;95;191;;;
                                  -128900;1;0;false;false;;;;;;
                                  -128901;5;0;false;false;63;95;191;;;
                                  -128906;1;0;false;false;;;;;;
                                  -128907;6;0;false;false;63;95;191;;;
                                  -128913;1;0;false;false;;;;;;
                                  -128914;3;0;false;false;63;95;191;;;
                                  -128917;1;0;false;false;;;;;;
                                  -128918;5;0;false;false;63;95;191;;;
                                  -128923;1;0;false;false;;;;;;
                                  -128924;6;0;false;false;63;95;191;;;
                                  -128930;4;0;false;false;;;;;;
                                  -128934;1;0;false;false;63;95;191;;;
                                  -128935;2;0;false;false;;;;;;
                                  -128937;4;0;false;false;63;95;191;;;
                                  -128941;1;0;false;false;;;;;;
                                  -128942;5;0;false;false;63;95;191;;;
                                  -128947;1;0;false;false;;;;;;
                                  -128948;3;0;false;false;63;95;191;;;
                                  -128951;1;0;false;false;;;;;;
                                  -128952;3;0;false;false;63;95;191;;;
                                  -128955;1;0;false;false;;;;;;
                                  -128956;5;0;false;false;63;95;191;;;
                                  -128961;1;0;false;false;;;;;;
                                  -128962;4;0;false;false;63;95;191;;;
                                  -128966;1;0;false;false;;;;;;
                                  -128967;3;0;false;false;63;95;191;;;
                                  -128970;3;0;false;false;;;;;;
                                  -128973;2;0;false;false;63;95;191;;;
                                  -128975;2;0;false;false;;;;;;
                                  -128977;15;0;false;false;0;0;0;;;
                                  -128992;1;0;false;false;;;;;;
                                  -128993;17;0;false;false;0;0;0;;;
                                  -129010;3;1;false;false;127;0;85;;;
                                  -129013;1;0;false;false;;;;;;
                                  -129014;11;0;false;false;0;0;0;;;
                                  -129025;1;0;false;false;;;;;;
                                  -129026;6;0;false;false;0;0;0;;;
                                  -129032;1;0;false;false;;;;;;
                                  -129033;5;0;false;false;0;0;0;;;
                                  -129038;1;0;false;false;;;;;;
                                  -129039;1;0;false;false;0;0;0;;;
                                  -129040;3;0;false;false;;;;;;
                                  -129043;6;1;false;false;127;0;85;;;
                                  -129049;1;0;false;false;;;;;;
                                  -129050;27;0;false;false;0;0;0;;;
                                  -129077;1;0;false;false;;;;;;
                                  -129078;11;0;false;false;0;0;0;;;
                                  -129089;1;0;false;false;;;;;;
                                  -129090;6;0;false;false;0;0;0;;;
                                  -129096;2;0;false;false;;;;;;
                                  -129098;1;0;false;false;0;0;0;;;
                                  -129099;2;0;false;false;;;;;;
                                  -129101;3;0;false;false;63;95;191;;;
                                  -129104;3;0;false;false;;;;;;
                                  -129107;1;0;false;false;63;95;191;;;
                                  -129108;1;0;false;false;;;;;;
                                  -129109;7;0;false;false;63;95;191;;;
                                  -129116;1;0;false;false;;;;;;
                                  -129117;3;0;false;false;63;95;191;;;
                                  -129120;1;0;false;false;;;;;;
                                  -129121;2;0;false;false;63;95;191;;;
                                  -129123;1;0;false;false;;;;;;
                                  -129124;1;0;false;false;63;95;191;;;
                                  -129125;1;0;false;false;;;;;;
                                  -129126;8;0;false;false;63;95;191;;;
                                  -129134;1;0;false;false;;;;;;
                                  -129135;2;0;false;false;63;95;191;;;
                                  -129137;1;0;false;false;;;;;;
                                  -129138;3;0;false;false;63;95;191;;;
                                  -129141;1;0;false;false;;;;;;
                                  -129142;5;0;false;false;63;95;191;;;
                                  -129147;1;0;false;false;;;;;;
                                  -129148;4;0;false;false;63;95;191;;;
                                  -129152;1;0;false;false;;;;;;
                                  -129153;6;0;false;false;63;95;191;;;
                                  -129159;1;0;false;false;;;;;;
                                  -129160;2;0;false;false;63;95;191;;;
                                  -129162;1;0;false;false;;;;;;
                                  -129163;3;0;false;false;63;95;191;;;
                                  -129166;1;0;false;false;;;;;;
                                  -129167;9;0;false;false;63;95;191;;;
                                  -129176;4;0;false;false;;;;;;
                                  -129180;1;0;false;false;63;95;191;;;
                                  -129181;1;0;false;false;;;;;;
                                  -129182;8;0;false;false;63;95;191;;;
                                  -129190;1;0;false;false;;;;;;
                                  -129191;3;0;false;false;63;95;191;;;
                                  -129194;1;0;false;false;;;;;;
                                  -129195;2;0;false;false;63;95;191;;;
                                  -129197;1;0;false;false;;;;;;
                                  -129198;3;0;false;false;63;95;191;;;
                                  -129201;1;0;false;false;;;;;;
                                  -129202;9;0;false;false;63;95;191;;;
                                  -129211;1;0;false;false;;;;;;
                                  -129212;6;0;false;false;63;95;191;;;
                                  -129218;1;0;false;false;;;;;;
                                  -129219;2;0;false;false;63;95;191;;;
                                  -129221;1;0;false;false;;;;;;
                                  -129222;3;0;false;false;63;95;191;;;
                                  -129225;1;0;false;false;;;;;;
                                  -129226;5;0;false;false;63;95;191;;;
                                  -129231;1;0;false;false;;;;;;
                                  -129232;3;0;false;false;63;95;191;;;
                                  -129235;1;0;false;false;;;;;;
                                  -129236;5;0;false;false;63;95;191;;;
                                  -129241;1;0;false;false;;;;;;
                                  -129242;2;0;false;false;63;95;191;;;
                                  -129244;4;0;false;false;;;;;;
                                  -129248;1;0;false;false;63;95;191;;;
                                  -129249;1;0;false;false;;;;;;
                                  -129250;8;0;false;false;63;95;191;;;
                                  -129258;1;0;false;false;;;;;;
                                  -129259;2;0;false;false;63;95;191;;;
                                  -129261;1;0;false;false;;;;;;
                                  -129262;3;0;false;false;63;95;191;;;
                                  -129265;1;0;false;false;;;;;;
                                  -129266;5;0;false;false;63;95;191;;;
                                  -129271;1;0;false;false;;;;;;
                                  -129272;4;0;false;false;63;95;191;;;
                                  -129276;1;0;false;false;;;;;;
                                  -129277;6;0;false;false;63;95;191;;;
                                  -129283;1;0;false;false;;;;;;
                                  -129284;2;0;false;false;63;95;191;;;
                                  -129286;1;0;false;false;;;;;;
                                  -129287;3;0;false;false;63;95;191;;;
                                  -129290;1;0;false;false;;;;;;
                                  -129291;6;0;false;false;63;95;191;;;
                                  -129297;1;0;false;false;;;;;;
                                  -129298;6;0;false;false;63;95;191;;;
                                  -129304;1;0;false;false;;;;;;
                                  -129305;5;0;false;false;63;95;191;;;
                                  -129310;3;0;false;false;;;;;;
                                  -129313;1;0;false;false;63;95;191;;;
                                  -129314;1;0;false;false;;;;;;
                                  -129315;3;0;false;false;127;127;159;;;
                                  -129318;3;0;false;false;;;;;;
                                  -129321;1;0;false;false;63;95;191;;;
                                  -129322;3;0;false;false;;;;;;
                                  -129325;1;0;false;false;63;95;191;;;
                                  -129326;1;0;false;false;;;;;;
                                  -129327;7;1;false;false;127;159;191;;;
                                  -129334;6;0;false;false;63;95;191;;;
                                  -129340;1;0;false;false;;;;;;
                                  -129341;6;0;false;false;63;95;191;;;
                                  -129347;1;0;false;false;;;;;;
                                  -129348;8;0;false;false;63;95;191;;;
                                  -129356;1;0;false;false;;;;;;
                                  -129357;2;0;false;false;63;95;191;;;
                                  -129359;1;0;false;false;;;;;;
                                  -129360;3;0;false;false;63;95;191;;;
                                  -129363;1;0;false;false;;;;;;
                                  -129364;5;0;false;false;63;95;191;;;
                                  -129369;1;0;false;false;;;;;;
                                  -129370;2;0;false;false;63;95;191;;;
                                  -129372;1;0;false;false;;;;;;
                                  -129373;3;0;false;false;63;95;191;;;
                                  -129376;1;0;false;false;;;;;;
                                  -129377;8;0;false;false;63;95;191;;;
                                  -129385;4;0;false;false;;;;;;
                                  -129389;1;0;false;false;63;95;191;;;
                                  -129390;2;0;false;false;;;;;;
                                  -129392;1;0;false;false;63;95;191;;;
                                  -129393;1;0;false;false;;;;;;
                                  -129394;29;0;false;false;63;95;191;;;
                                  -129423;1;0;false;false;;;;;;
                                  -129424;1;0;false;false;63;95;191;;;
                                  -129425;1;0;false;false;;;;;;
                                  -129426;8;1;false;false;127;159;191;;;
                                  -129434;2;0;false;false;63;95;191;;;
                                  -129436;1;0;false;false;;;;;;
                                  -129437;1;0;false;false;63;95;191;;;
                                  -129438;1;0;false;false;;;;;;
                                  -129439;8;0;false;false;63;95;191;;;
                                  -129447;1;0;false;false;;;;;;
                                  -129448;2;0;false;false;63;95;191;;;
                                  -129450;1;0;false;false;;;;;;
                                  -129451;3;0;false;false;63;95;191;;;
                                  -129454;1;0;false;false;;;;;;
                                  -129455;5;0;false;false;63;95;191;;;
                                  -129460;1;0;false;false;;;;;;
                                  -129461;4;0;false;false;63;95;191;;;
                                  -129465;1;0;false;false;;;;;;
                                  -129466;6;0;false;false;63;95;191;;;
                                  -129472;1;0;false;false;;;;;;
                                  -129473;2;0;false;false;63;95;191;;;
                                  -129475;1;0;false;false;;;;;;
                                  -129476;3;0;false;false;63;95;191;;;
                                  -129479;1;0;false;false;;;;;;
                                  -129480;9;0;false;false;63;95;191;;;
                                  -129489;4;0;false;false;;;;;;
                                  -129493;1;0;false;false;63;95;191;;;
                                  -129494;2;0;false;false;;;;;;
                                  -129496;8;0;false;false;63;95;191;;;
                                  -129504;1;0;false;false;;;;;;
                                  -129505;3;0;false;false;63;95;191;;;
                                  -129508;1;0;false;false;;;;;;
                                  -129509;2;0;false;false;63;95;191;;;
                                  -129511;1;0;false;false;;;;;;
                                  -129512;3;0;false;false;63;95;191;;;
                                  -129515;1;0;false;false;;;;;;
                                  -129516;9;0;false;false;63;95;191;;;
                                  -129525;1;0;false;false;;;;;;
                                  -129526;6;0;false;false;63;95;191;;;
                                  -129532;1;0;false;false;;;;;;
                                  -129533;2;0;false;false;63;95;191;;;
                                  -129535;1;0;false;false;;;;;;
                                  -129536;3;0;false;false;63;95;191;;;
                                  -129539;1;0;false;false;;;;;;
                                  -129540;5;0;false;false;63;95;191;;;
                                  -129545;3;0;false;false;;;;;;
                                  -129548;1;0;false;false;63;95;191;;;
                                  -129549;1;0;false;false;;;;;;
                                  -129550;11;1;false;false;127;159;191;;;
                                  -129561;12;0;false;false;63;95;191;;;
                                  -129573;1;0;false;false;;;;;;
                                  -129574;4;0;false;false;127;127;159;;;
                                  -129578;3;0;false;false;;;;;;
                                  -129581;1;0;false;false;63;95;191;;;
                                  -129582;4;0;false;false;;;;;;
                                  -129586;4;0;false;false;127;127;159;;;
                                  -129590;21;0;false;false;63;95;191;;;
                                  -129611;1;0;false;false;;;;;;
                                  -129612;1;0;false;false;127;127;159;;;
                                  -129613;1;0;false;false;;;;;;
                                  -129614;2;0;false;false;63;95;191;;;
                                  -129616;1;0;false;false;;;;;;
                                  -129617;3;0;false;false;63;95;191;;;
                                  -129620;1;0;false;false;;;;;;
                                  -129621;8;0;false;false;63;95;191;;;
                                  -129629;1;0;false;false;;;;;;
                                  -129630;3;0;false;false;63;95;191;;;
                                  -129633;1;0;false;false;;;;;;
                                  -129634;4;0;false;false;63;95;191;;;
                                  -129638;1;0;false;false;;;;;;
                                  -129639;8;0;false;false;63;95;191;;;
                                  -129647;5;0;false;false;127;127;159;;;
                                  -129652;3;0;false;false;;;;;;
                                  -129655;1;0;false;false;63;95;191;;;
                                  -129656;4;0;false;false;;;;;;
                                  -129660;4;0;false;false;127;127;159;;;
                                  -129664;27;0;false;false;63;95;191;;;
                                  -129691;1;0;false;false;;;;;;
                                  -129692;1;0;false;false;127;127;159;;;
                                  -129693;1;0;false;false;;;;;;
                                  -129694;2;0;false;false;63;95;191;;;
                                  -129696;1;0;false;false;;;;;;
                                  -129697;3;0;false;false;63;95;191;;;
                                  -129700;1;0;false;false;;;;;;
                                  -129701;6;0;false;false;63;95;191;;;
                                  -129707;1;0;false;false;;;;;;
                                  -129708;4;0;false;false;63;95;191;;;
                                  -129712;1;0;false;false;;;;;;
                                  -129713;3;0;false;false;63;95;191;;;
                                  -129716;1;0;false;false;;;;;;
                                  -129717;6;0;false;false;63;95;191;;;
                                  -129723;1;0;false;false;;;;;;
                                  -129724;4;0;false;false;63;95;191;;;
                                  -129728;1;0;false;false;;;;;;
                                  -129729;7;0;false;false;63;95;191;;;
                                  -129736;1;0;false;false;;;;;;
                                  -129737;3;0;false;false;63;95;191;;;
                                  -129740;1;0;false;false;;;;;;
                                  -129741;8;0;false;false;63;95;191;;;
                                  -129749;5;0;false;false;127;127;159;;;
                                  -129754;3;0;false;false;;;;;;
                                  -129757;1;0;false;false;63;95;191;;;
                                  -129758;1;0;false;false;;;;;;
                                  -129759;5;0;false;false;127;127;159;;;
                                  -129764;3;0;false;false;;;;;;
                                  -129767;1;0;false;false;63;95;191;;;
                                  -129768;1;0;false;false;;;;;;
                                  -129769;11;1;false;false;127;159;191;;;
                                  -129780;24;0;false;false;63;95;191;;;
                                  -129804;1;0;false;false;;;;;;
                                  -129805;4;0;false;false;127;127;159;;;
                                  -129809;3;0;false;false;;;;;;
                                  -129812;1;0;false;false;63;95;191;;;
                                  -129813;3;0;false;false;;;;;;
                                  -129816;4;0;false;false;127;127;159;;;
                                  -129820;19;0;false;false;63;95;191;;;
                                  -129839;1;0;false;false;;;;;;
                                  -129840;4;0;false;false;63;95;191;;;
                                  -129844;1;0;false;false;;;;;;
                                  -129845;3;0;false;false;63;95;191;;;
                                  -129848;1;0;false;false;;;;;;
                                  -129849;6;0;false;false;63;95;191;;;
                                  -129855;1;0;false;false;;;;;;
                                  -129856;2;0;false;false;63;95;191;;;
                                  -129858;1;0;false;false;;;;;;
                                  -129859;7;0;false;false;63;95;191;;;
                                  -129866;1;0;false;false;;;;;;
                                  -129867;3;0;false;false;63;95;191;;;
                                  -129870;1;0;false;false;;;;;;
                                  -129871;5;0;false;false;63;95;191;;;
                                  -129876;1;0;false;false;;;;;;
                                  -129877;5;0;false;false;63;95;191;;;
                                  -129882;1;0;false;false;;;;;;
                                  -129883;9;0;false;false;63;95;191;;;
                                  -129892;1;0;false;false;;;;;;
                                  -129893;15;0;false;false;63;95;191;;;
                                  -129908;5;0;false;false;127;127;159;;;
                                  -129913;4;0;false;false;;;;;;
                                  -129917;1;0;false;false;63;95;191;;;
                                  -129918;1;0;false;false;;;;;;
                                  -129919;5;0;false;false;127;127;159;;;
                                  -129924;3;0;false;false;;;;;;
                                  -129927;2;0;false;false;63;95;191;;;
                                  -129929;2;0;false;false;;;;;;
                                  -129931;6;1;false;false;127;0;85;;;
                                  -129937;1;0;false;false;;;;;;
                                  -129938;5;0;false;false;0;0;0;;;
                                  -129943;1;0;false;false;;;;;;
                                  -129944;20;0;false;false;0;0;0;;;
                                  -129964;3;1;false;false;127;0;85;;;
                                  -129967;1;0;false;false;;;;;;
                                  -129968;7;0;false;false;0;0;0;;;
                                  -129975;1;0;false;false;;;;;;
                                  -129976;1;0;false;false;0;0;0;;;
                                  -129977;3;0;false;false;;;;;;
                                  -129980;14;0;false;false;0;0;0;;;
                                  -129994;3;0;false;false;;;;;;
                                  -129997;2;1;false;false;127;0;85;;;
                                  -129999;1;0;false;false;;;;;;
                                  -130000;7;0;false;false;0;0;0;;;
                                  -130007;1;0;false;false;;;;;;
                                  -130008;1;0;false;false;0;0;0;;;
                                  -130009;1;0;false;false;;;;;;
                                  -130010;1;0;false;false;0;0;0;;;
                                  -130011;1;0;false;false;;;;;;
                                  -130012;2;0;false;false;0;0;0;;;
                                  -130014;1;0;false;false;;;;;;
                                  -130015;6;0;false;false;0;0;0;;;
                                  -130021;1;0;false;false;;;;;;
                                  -130022;1;0;false;false;0;0;0;;;
                                  -130023;1;0;false;false;;;;;;
                                  -130024;15;0;false;false;0;0;0;;;
                                  -130039;1;0;false;false;;;;;;
                                  -130040;1;0;false;false;0;0;0;;;
                                  -130041;4;0;false;false;;;;;;
                                  -130045;35;0;false;false;0;0;0;;;
                                  -130080;5;0;false;false;;;;;;
                                  -130085;1;0;false;false;0;0;0;;;
                                  -130086;3;0;false;false;;;;;;
                                  -130089;3;1;false;false;127;0;85;;;
                                  -130092;1;0;false;false;;;;;;
                                  -130093;4;0;false;false;0;0;0;;;
                                  -130097;1;0;false;false;;;;;;
                                  -130098;1;0;false;false;0;0;0;;;
                                  -130099;1;0;false;false;;;;;;
                                  -130100;32;0;false;false;0;0;0;;;
                                  -130132;3;0;false;false;;;;;;
                                  -130135;3;1;false;false;127;0;85;;;
                                  -130138;1;0;false;false;;;;;;
                                  -130139;10;0;false;false;0;0;0;;;
                                  -130149;1;0;false;false;;;;;;
                                  -130150;1;0;false;false;0;0;0;;;
                                  -130151;1;0;false;false;;;;;;
                                  -130152;30;0;false;false;0;0;0;;;
                                  -130182;3;0;false;false;;;;;;
                                  -130185;6;0;false;false;0;0;0;;;
                                  -130191;1;0;false;false;;;;;;
                                  -130192;11;0;false;false;0;0;0;;;
                                  -130203;1;0;false;false;;;;;;
                                  -130204;1;0;false;false;0;0;0;;;
                                  -130205;1;0;false;false;;;;;;
                                  -130206;22;0;false;false;0;0;0;;;
                                  -130228;3;0;false;false;;;;;;
                                  -130231;3;1;false;false;127;0;85;;;
                                  -130234;1;0;false;false;;;;;;
                                  -130235;1;0;false;false;0;0;0;;;
                                  -130236;1;0;false;false;;;;;;
                                  -130237;1;0;false;false;0;0;0;;;
                                  -130238;1;0;false;false;;;;;;
                                  -130239;25;0;false;false;0;0;0;;;
                                  -130264;1;0;false;false;;;;;;
                                  -130265;5;0;false;false;0;0;0;;;
                                  -130270;1;0;false;false;;;;;;
                                  -130271;6;0;false;false;0;0;0;;;
                                  -130277;1;0;false;false;;;;;;
                                  -130278;1;0;false;false;0;0;0;;;
                                  -130279;1;0;false;false;;;;;;
                                  -130280;12;0;false;false;0;0;0;;;
                                  -130292;3;0;false;false;;;;;;
                                  -130295;3;1;false;false;127;0;85;;;
                                  -130298;1;0;false;false;;;;;;
                                  -130299;1;0;false;false;0;0;0;;;
                                  -130300;1;0;false;false;;;;;;
                                  -130301;1;0;false;false;0;0;0;;;
                                  -130302;1;0;false;false;;;;;;
                                  -130303;4;0;false;false;0;0;0;;;
                                  -130307;1;0;false;false;;;;;;
                                  -130308;1;0;false;false;0;0;0;;;
                                  -130309;1;0;false;false;;;;;;
                                  -130310;10;0;false;false;0;0;0;;;
                                  -130320;1;0;false;false;;;;;;
                                  -130321;1;0;false;false;0;0;0;;;
                                  -130322;1;0;false;false;;;;;;
                                  -130323;21;0;false;false;0;0;0;;;
                                  -130344;6;0;false;false;;;;;;
                                  -130350;6;1;false;false;127;0;85;;;
                                  -130356;1;0;false;false;;;;;;
                                  -130357;3;1;false;false;127;0;85;;;
                                  -130360;1;0;false;false;;;;;;
                                  -130361;8;0;false;false;0;0;0;;;
                                  -130369;1;0;false;false;;;;;;
                                  -130370;3;0;false;false;0;0;0;;;
                                  -130373;2;0;false;false;;;;;;
                                  -130375;1;0;false;false;0;0;0;;;
                                  -130376;2;0;false;false;;;;;;
                                  -130378;3;0;false;false;63;95;191;;;
                                  -130381;3;0;false;false;;;;;;
                                  -130384;1;0;false;false;63;95;191;;;
                                  -130385;1;0;false;false;;;;;;
                                  -130386;7;0;false;false;63;95;191;;;
                                  -130393;1;0;false;false;;;;;;
                                  -130394;3;0;false;false;63;95;191;;;
                                  -130397;1;0;false;false;;;;;;
                                  -130398;9;0;false;false;63;95;191;;;
                                  -130407;1;0;false;false;;;;;;
                                  -130408;6;0;false;false;63;95;191;;;
                                  -130414;1;0;false;false;;;;;;
                                  -130415;2;0;false;false;63;95;191;;;
                                  -130417;1;0;false;false;;;;;;
                                  -130418;3;0;false;false;63;95;191;;;
                                  -130421;1;0;false;false;;;;;;
                                  -130422;5;0;false;false;63;95;191;;;
                                  -130427;1;0;false;false;;;;;;
                                  -130428;9;0;false;false;63;95;191;;;
                                  -130437;1;0;false;false;;;;;;
                                  -130438;2;0;false;false;63;95;191;;;
                                  -130440;1;0;false;false;;;;;;
                                  -130441;3;0;false;false;63;95;191;;;
                                  -130444;1;0;false;false;;;;;;
                                  -130445;5;0;false;false;63;95;191;;;
                                  -130450;1;0;false;false;;;;;;
                                  -130451;5;0;false;false;63;95;191;;;
                                  -130456;3;0;false;false;;;;;;
                                  -130459;1;0;false;false;63;95;191;;;
                                  -130460;1;0;false;false;;;;;;
                                  -130461;3;0;false;false;127;127;159;;;
                                  -130464;3;0;false;false;;;;;;
                                  -130467;1;0;false;false;63;95;191;;;
                                  -130468;3;0;false;false;;;;;;
                                  -130471;1;0;false;false;63;95;191;;;
                                  -130472;1;0;false;false;;;;;;
                                  -130473;7;1;false;false;127;159;191;;;
                                  -130480;9;0;false;false;63;95;191;;;
                                  -130489;1;0;false;false;;;;;;
                                  -130490;5;0;false;false;63;95;191;;;
                                  -130495;1;0;false;false;;;;;;
                                  -130496;2;0;false;false;63;95;191;;;
                                  -130498;1;0;false;false;;;;;;
                                  -130499;3;0;false;false;63;95;191;;;
                                  -130502;1;0;false;false;;;;;;
                                  -130503;5;0;false;false;63;95;191;;;
                                  -130508;1;0;false;false;;;;;;
                                  -130509;1;0;false;false;63;95;191;;;
                                  -130510;1;0;false;false;;;;;;
                                  -130511;5;0;false;false;63;95;191;;;
                                  -130516;1;0;false;false;;;;;;
                                  -130517;8;0;false;false;63;95;191;;;
                                  -130525;1;0;false;false;;;;;;
                                  -130526;2;0;false;false;63;95;191;;;
                                  -130528;1;0;false;false;;;;;;
                                  -130529;3;0;false;false;63;95;191;;;
                                  -130532;1;0;false;false;;;;;;
                                  -130533;5;0;false;false;63;95;191;;;
                                  -130538;4;0;false;false;;;;;;
                                  -130542;1;0;false;false;63;95;191;;;
                                  -130543;2;0;false;false;;;;;;
                                  -130545;4;0;false;false;63;95;191;;;
                                  -130549;1;0;false;false;;;;;;
                                  -130550;2;0;false;false;63;95;191;;;
                                  -130552;1;0;false;false;;;;;;
                                  -130553;3;0;false;false;63;95;191;;;
                                  -130556;1;0;false;false;;;;;;
                                  -130557;8;0;false;false;63;95;191;;;
                                  -130565;1;0;false;false;;;;;;
                                  -130566;1;0;false;false;63;95;191;;;
                                  -130567;1;0;false;false;;;;;;
                                  -130568;39;0;false;false;63;95;191;;;
                                  -130607;1;0;false;false;;;;;;
                                  -130608;1;0;false;false;63;95;191;;;
                                  -130609;2;0;false;false;;;;;;
                                  -130611;9;0;false;false;63;95;191;;;
                                  -130620;1;0;false;false;;;;;;
                                  -130621;3;0;false;false;63;95;191;;;
                                  -130624;1;0;false;false;;;;;;
                                  -130625;6;0;false;false;63;95;191;;;
                                  -130631;1;0;false;false;;;;;;
                                  -130632;2;0;false;false;63;95;191;;;
                                  -130634;1;0;false;false;;;;;;
                                  -130635;1;0;false;false;63;95;191;;;
                                  -130636;3;0;false;false;;;;;;
                                  -130639;1;0;false;false;63;95;191;;;
                                  -130640;1;0;false;false;;;;;;
                                  -130641;8;1;false;false;127;159;191;;;
                                  -130649;6;0;false;false;63;95;191;;;
                                  -130655;1;0;false;false;;;;;;
                                  -130656;6;0;false;false;63;95;191;;;
                                  -130662;1;0;false;false;;;;;;
                                  -130663;2;0;false;false;63;95;191;;;
                                  -130665;1;0;false;false;;;;;;
                                  -130666;3;0;false;false;63;95;191;;;
                                  -130669;1;0;false;false;;;;;;
                                  -130670;5;0;false;false;63;95;191;;;
                                  -130675;1;0;false;false;;;;;;
                                  -130676;9;0;false;false;63;95;191;;;
                                  -130685;1;0;false;false;;;;;;
                                  -130686;2;0;false;false;63;95;191;;;
                                  -130688;1;0;false;false;;;;;;
                                  -130689;3;0;false;false;63;95;191;;;
                                  -130692;1;0;false;false;;;;;;
                                  -130693;5;0;false;false;63;95;191;;;
                                  -130698;1;0;false;false;;;;;;
                                  -130699;8;0;false;false;63;95;191;;;
                                  -130707;1;0;false;false;;;;;;
                                  -130708;2;0;false;false;63;95;191;;;
                                  -130710;3;0;false;false;;;;;;
                                  -130713;1;0;false;false;63;95;191;;;
                                  -130714;2;0;false;false;;;;;;
                                  -130716;3;0;false;false;63;95;191;;;
                                  -130719;1;0;false;false;;;;;;
                                  -130720;9;0;false;false;63;95;191;;;
                                  -130729;1;0;false;false;;;;;;
                                  -130730;2;0;false;false;63;95;191;;;
                                  -130732;1;0;false;false;;;;;;
                                  -130733;3;0;false;false;63;95;191;;;
                                  -130736;1;0;false;false;;;;;;
                                  -130737;9;0;false;false;63;95;191;;;
                                  -130746;1;0;false;false;;;;;;
                                  -130747;3;0;false;false;63;95;191;;;
                                  -130750;1;0;false;false;;;;;;
                                  -130751;5;0;false;false;63;95;191;;;
                                  -130756;1;0;false;false;;;;;;
                                  -130757;9;0;false;false;63;95;191;;;
                                  -130766;1;0;false;false;;;;;;
                                  -130767;2;0;false;false;63;95;191;;;
                                  -130769;1;0;false;false;;;;;;
                                  -130770;3;0;false;false;63;95;191;;;
                                  -130773;1;0;false;false;;;;;;
                                  -130774;8;0;false;false;63;95;191;;;
                                  -130782;1;0;false;false;;;;;;
                                  -130783;2;0;false;false;63;95;191;;;
                                  -130785;3;0;false;false;;;;;;
                                  -130788;1;0;false;false;63;95;191;;;
                                  -130789;1;0;false;false;;;;;;
                                  -130790;2;0;false;false;63;95;191;;;
                                  -130792;1;0;false;false;;;;;;
                                  -130793;6;0;false;false;63;95;191;;;
                                  -130799;1;0;false;false;;;;;;
                                  -130800;2;0;false;false;63;95;191;;;
                                  -130802;5;0;false;false;;;;;;
                                  -130807;1;0;false;false;63;95;191;;;
                                  -130808;2;0;false;false;;;;;;
                                  -130810;4;0;false;false;63;95;191;;;
                                  -130814;1;0;false;false;;;;;;
                                  -130815;5;0;false;false;63;95;191;;;
                                  -130820;1;0;false;false;;;;;;
                                  -130821;3;0;false;false;63;95;191;;;
                                  -130824;1;0;false;false;;;;;;
                                  -130825;3;0;false;false;63;95;191;;;
                                  -130828;1;0;false;false;;;;;;
                                  -130829;3;0;false;false;63;95;191;;;
                                  -130832;1;0;false;false;;;;;;
                                  -130833;6;0;false;false;63;95;191;;;
                                  -130839;1;0;false;false;;;;;;
                                  -130840;18;0;false;false;63;95;191;;;
                                  -130858;1;0;false;false;;;;;;
                                  -130859;2;0;false;false;63;95;191;;;
                                  -130861;1;0;false;false;;;;;;
                                  -130862;1;0;false;false;63;95;191;;;
                                  -130863;1;0;false;false;;;;;;
                                  -130864;5;0;false;false;63;95;191;;;
                                  -130869;1;0;false;false;;;;;;
                                  -130870;4;0;false;false;63;95;191;;;
                                  -130874;1;0;false;false;;;;;;
                                  -130875;4;0;false;false;63;95;191;;;
                                  -130879;4;0;false;false;;;;;;
                                  -130883;1;0;false;false;63;95;191;;;
                                  -130884;2;0;false;false;;;;;;
                                  -130886;7;0;false;false;63;95;191;;;
                                  -130893;1;0;false;false;;;;;;
                                  -130894;2;0;false;false;63;95;191;;;
                                  -130896;3;0;false;false;;;;;;
                                  -130899;1;0;false;false;63;95;191;;;
                                  -130900;1;0;false;false;;;;;;
                                  -130901;11;1;false;false;127;159;191;;;
                                  -130912;12;0;false;false;63;95;191;;;
                                  -130924;1;0;false;false;;;;;;
                                  -130925;4;0;false;false;127;127;159;;;
                                  -130929;3;0;false;false;;;;;;
                                  -130932;1;0;false;false;63;95;191;;;
                                  -130933;4;0;false;false;;;;;;
                                  -130937;4;0;false;false;127;127;159;;;
                                  -130941;21;0;false;false;63;95;191;;;
                                  -130962;1;0;false;false;;;;;;
                                  -130963;1;0;false;false;127;127;159;;;
                                  -130964;1;0;false;false;;;;;;
                                  -130965;2;0;false;false;63;95;191;;;
                                  -130967;1;0;false;false;;;;;;
                                  -130968;3;0;false;false;63;95;191;;;
                                  -130971;1;0;false;false;;;;;;
                                  -130972;8;0;false;false;63;95;191;;;
                                  -130980;1;0;false;false;;;;;;
                                  -130981;3;0;false;false;63;95;191;;;
                                  -130984;1;0;false;false;;;;;;
                                  -130985;4;0;false;false;63;95;191;;;
                                  -130989;1;0;false;false;;;;;;
                                  -130990;8;0;false;false;63;95;191;;;
                                  -130998;5;0;false;false;127;127;159;;;
                                  -131003;3;0;false;false;;;;;;
                                  -131006;1;0;false;false;63;95;191;;;
                                  -131007;4;0;false;false;;;;;;
                                  -131011;4;0;false;false;127;127;159;;;
                                  -131015;27;0;false;false;63;95;191;;;
                                  -131042;1;0;false;false;;;;;;
                                  -131043;1;0;false;false;127;127;159;;;
                                  -131044;1;0;false;false;;;;;;
                                  -131045;2;0;false;false;63;95;191;;;
                                  -131047;1;0;false;false;;;;;;
                                  -131048;3;0;false;false;63;95;191;;;
                                  -131051;1;0;false;false;;;;;;
                                  -131052;6;0;false;false;63;95;191;;;
                                  -131058;1;0;false;false;;;;;;
                                  -131059;4;0;false;false;63;95;191;;;
                                  -131063;1;0;false;false;;;;;;
                                  -131064;3;0;false;false;63;95;191;;;
                                  -131067;1;0;false;false;;;;;;
                                  -131068;6;0;false;false;63;95;191;;;
                                  -131074;1;0;false;false;;;;;;
                                  -131075;4;0;false;false;63;95;191;;;
                                  -131079;1;0;false;false;;;;;;
                                  -131080;7;0;false;false;63;95;191;;;
                                  -131087;1;0;false;false;;;;;;
                                  -131088;3;0;false;false;63;95;191;;;
                                  -131091;1;0;false;false;;;;;;
                                  -131092;8;0;false;false;63;95;191;;;
                                  -131100;5;0;false;false;127;127;159;;;
                                  -131105;3;0;false;false;;;;;;
                                  -131108;1;0;false;false;63;95;191;;;
                                  -131109;1;0;false;false;;;;;;
                                  -131110;5;0;false;false;127;127;159;;;
                                  -131115;3;0;false;false;;;;;;
                                  -131118;1;0;false;false;63;95;191;;;
                                  -131119;1;0;false;false;;;;;;
                                  -131120;11;1;false;false;127;159;191;;;
                                  -131131;24;0;false;false;63;95;191;;;
                                  -131155;1;0;false;false;;;;;;
                                  -131156;4;0;false;false;127;127;159;;;
                                  -131160;3;0;false;false;;;;;;
                                  -131163;1;0;false;false;63;95;191;;;
                                  -131164;3;0;false;false;;;;;;
                                  -131167;4;0;false;false;127;127;159;;;
                                  -131171;19;0;false;false;63;95;191;;;
                                  -131190;1;0;false;false;;;;;;
                                  -131191;4;0;false;false;63;95;191;;;
                                  -131195;1;0;false;false;;;;;;
                                  -131196;3;0;false;false;63;95;191;;;
                                  -131199;1;0;false;false;;;;;;
                                  -131200;6;0;false;false;63;95;191;;;
                                  -131206;1;0;false;false;;;;;;
                                  -131207;2;0;false;false;63;95;191;;;
                                  -131209;1;0;false;false;;;;;;
                                  -131210;7;0;false;false;63;95;191;;;
                                  -131217;1;0;false;false;;;;;;
                                  -131218;3;0;false;false;63;95;191;;;
                                  -131221;1;0;false;false;;;;;;
                                  -131222;5;0;false;false;63;95;191;;;
                                  -131227;1;0;false;false;;;;;;
                                  -131228;5;0;false;false;63;95;191;;;
                                  -131233;1;0;false;false;;;;;;
                                  -131234;9;0;false;false;63;95;191;;;
                                  -131243;1;0;false;false;;;;;;
                                  -131244;15;0;false;false;63;95;191;;;
                                  -131259;5;0;false;false;127;127;159;;;
                                  -131264;4;0;false;false;;;;;;
                                  -131268;1;0;false;false;63;95;191;;;
                                  -131269;1;0;false;false;;;;;;
                                  -131270;5;0;false;false;127;127;159;;;
                                  -131275;3;0;false;false;;;;;;
                                  -131278;1;0;false;false;63;95;191;;;
                                  -131279;1;0;false;false;;;;;;
                                  -131280;7;1;false;false;127;159;191;;;
                                  -131287;3;0;false;false;63;95;191;;;
                                  -131290;3;0;false;false;;;;;;
                                  -131293;2;0;false;false;63;95;191;;;
                                  -131295;2;0;false;false;;;;;;
                                  -131297;6;1;false;false;127;0;85;;;
                                  -131303;1;0;false;false;;;;;;
                                  -131304;3;1;false;false;127;0;85;;;
                                  -131307;1;0;false;false;;;;;;
                                  -131308;16;0;false;false;0;0;0;;;
                                  -131324;3;1;false;false;127;0;85;;;
                                  -131327;1;0;false;false;;;;;;
                                  -131328;10;0;false;false;0;0;0;;;
                                  -131338;1;0;false;false;;;;;;
                                  -131339;1;0;false;false;0;0;0;;;
                                  -131340;3;0;false;false;;;;;;
                                  -131343;14;0;false;false;0;0;0;;;
                                  -131357;6;0;false;false;;;;;;
                                  -131363;2;1;false;false;127;0;85;;;
                                  -131365;1;0;false;false;;;;;;
                                  -131366;10;0;false;false;0;0;0;;;
                                  -131376;1;0;false;false;;;;;;
                                  -131377;1;0;false;false;0;0;0;;;
                                  -131378;1;0;false;false;;;;;;
                                  -131379;1;0;false;false;0;0;0;;;
                                  -131380;1;0;false;false;;;;;;
                                  -131381;2;0;false;false;0;0;0;;;
                                  -131383;5;0;false;false;;;;;;
                                  -131388;10;0;false;false;0;0;0;;;
                                  -131398;1;0;false;false;;;;;;
                                  -131399;1;0;false;false;0;0;0;;;
                                  -131400;1;0;false;false;;;;;;
                                  -131401;1;0;false;false;0;0;0;;;
                                  -131402;1;0;false;false;;;;;;
                                  -131403;2;0;false;false;0;0;0;;;
                                  -131405;1;0;false;false;;;;;;
                                  -131406;9;0;false;false;0;0;0;;;
                                  -131415;1;0;false;false;;;;;;
                                  -131416;2;0;false;false;0;0;0;;;
                                  -131418;1;0;false;false;;;;;;
                                  -131419;31;0;false;false;0;0;0;;;
                                  -131450;1;0;false;false;;;;;;
                                  -131451;1;0;false;false;0;0;0;;;
                                  -131452;4;0;false;false;;;;;;
                                  -131456;35;0;false;false;0;0;0;;;
                                  -131491;5;0;false;false;;;;;;
                                  -131496;1;0;false;false;0;0;0;;;
                                  -131497;3;0;false;false;;;;;;
                                  -131500;6;1;false;false;127;0;85;;;
                                  -131506;1;0;false;false;;;;;;
                                  -131507;42;0;false;false;0;0;0;;;
                                  -131549;2;0;false;false;;;;;;
                                  -131551;1;0;false;false;0;0;0;;;
                                  -131552;2;0;false;false;;;;;;
                                  -131554;3;0;false;false;63;95;191;;;
                                  -131557;3;0;false;false;;;;;;
                                  -131560;1;0;false;false;63;95;191;;;
                                  -131561;1;0;false;false;;;;;;
                                  -131562;7;0;false;false;63;95;191;;;
                                  -131569;1;0;false;false;;;;;;
                                  -131570;3;0;false;false;63;95;191;;;
                                  -131573;1;0;false;false;;;;;;
                                  -131574;6;0;false;false;63;95;191;;;
                                  -131580;1;0;false;false;;;;;;
                                  -131581;2;0;false;false;63;95;191;;;
                                  -131583;1;0;false;false;;;;;;
                                  -131584;3;0;false;false;63;95;191;;;
                                  -131587;1;0;false;false;;;;;;
                                  -131588;9;0;false;false;63;95;191;;;
                                  -131597;1;0;false;false;;;;;;
                                  -131598;2;0;false;false;63;95;191;;;
                                  -131600;1;0;false;false;;;;;;
                                  -131601;3;0;false;false;63;95;191;;;
                                  -131604;1;0;false;false;;;;;;
                                  -131605;5;0;false;false;63;95;191;;;
                                  -131610;1;0;false;false;;;;;;
                                  -131611;8;0;false;false;63;95;191;;;
                                  -131619;1;0;false;false;;;;;;
                                  -131620;8;0;false;false;63;95;191;;;
                                  -131628;4;0;false;false;;;;;;
                                  -131632;1;0;false;false;63;95;191;;;
                                  -131633;1;0;false;false;;;;;;
                                  -131634;2;0;false;false;63;95;191;;;
                                  -131636;1;0;false;false;;;;;;
                                  -131637;3;0;false;false;63;95;191;;;
                                  -131640;1;0;false;false;;;;;;
                                  -131641;5;0;false;false;63;95;191;;;
                                  -131646;1;0;false;false;;;;;;
                                  -131647;9;0;false;false;63;95;191;;;
                                  -131656;1;0;false;false;;;;;;
                                  -131657;2;0;false;false;63;95;191;;;
                                  -131659;1;0;false;false;;;;;;
                                  -131660;3;0;false;false;63;95;191;;;
                                  -131663;1;0;false;false;;;;;;
                                  -131664;9;0;false;false;63;95;191;;;
                                  -131673;3;0;false;false;;;;;;
                                  -131676;1;0;false;false;63;95;191;;;
                                  -131677;1;0;false;false;;;;;;
                                  -131678;3;0;false;false;63;95;191;;;
                                  -131681;1;0;false;false;;;;;;
                                  -131682;6;0;false;false;63;95;191;;;
                                  -131688;1;0;false;false;;;;;;
                                  -131689;5;0;false;false;63;95;191;;;
                                  -131694;1;0;false;false;;;;;;
                                  -131695;8;0;false;false;63;95;191;;;
                                  -131703;1;0;false;false;;;;;;
                                  -131704;3;0;false;false;63;95;191;;;
                                  -131707;1;0;false;false;;;;;;
                                  -131708;9;0;false;false;63;95;191;;;
                                  -131717;1;0;false;false;;;;;;
                                  -131718;6;0;false;false;63;95;191;;;
                                  -131724;1;0;false;false;;;;;;
                                  -131725;4;0;false;false;63;95;191;;;
                                  -131729;1;0;false;false;;;;;;
                                  -131730;3;0;false;false;63;95;191;;;
                                  -131733;1;0;false;false;;;;;;
                                  -131734;5;0;false;false;63;95;191;;;
                                  -131739;1;0;false;false;;;;;;
                                  -131740;4;0;false;false;63;95;191;;;
                                  -131744;3;0;false;false;;;;;;
                                  -131747;1;0;false;false;63;95;191;;;
                                  -131748;1;0;false;false;;;;;;
                                  -131749;2;0;false;false;63;95;191;;;
                                  -131751;1;0;false;false;;;;;;
                                  -131752;6;0;false;false;63;95;191;;;
                                  -131758;1;0;false;false;;;;;;
                                  -131759;2;0;false;false;63;95;191;;;
                                  -131761;1;0;false;false;;;;;;
                                  -131762;2;0;false;false;63;95;191;;;
                                  -131764;1;0;false;false;;;;;;
                                  -131765;1;0;false;false;63;95;191;;;
                                  -131766;1;0;false;false;;;;;;
                                  -131767;5;0;false;false;63;95;191;;;
                                  -131772;1;0;false;false;;;;;;
                                  -131773;5;0;false;false;63;95;191;;;
                                  -131778;1;0;false;false;;;;;;
                                  -131779;8;0;false;false;63;95;191;;;
                                  -131787;1;0;false;false;;;;;;
                                  -131788;2;0;false;false;63;95;191;;;
                                  -131790;1;0;false;false;;;;;;
                                  -131791;3;0;false;false;63;95;191;;;
                                  -131794;1;0;false;false;;;;;;
                                  -131795;9;0;false;false;63;95;191;;;
                                  -131804;1;0;false;false;;;;;;
                                  -131805;9;0;false;false;63;95;191;;;
                                  -131814;3;0;false;false;;;;;;
                                  -131817;1;0;false;false;63;95;191;;;
                                  -131818;1;0;false;false;;;;;;
                                  -131819;2;0;false;false;63;95;191;;;
                                  -131821;1;0;false;false;;;;;;
                                  -131822;3;0;false;false;63;95;191;;;
                                  -131825;1;0;false;false;;;;;;
                                  -131826;1;0;false;false;63;95;191;;;
                                  -131827;1;0;false;false;;;;;;
                                  -131828;10;0;false;false;63;95;191;;;
                                  -131838;1;0;false;false;;;;;;
                                  -131839;2;0;false;false;63;95;191;;;
                                  -131841;1;0;false;false;;;;;;
                                  -131842;3;0;false;false;63;95;191;;;
                                  -131845;1;0;false;false;;;;;;
                                  -131846;8;0;false;false;63;95;191;;;
                                  -131854;1;0;false;false;;;;;;
                                  -131855;2;0;false;false;63;95;191;;;
                                  -131857;1;0;false;false;;;;;;
                                  -131858;6;0;false;false;63;95;191;;;
                                  -131864;1;0;false;false;;;;;;
                                  -131865;3;0;false;false;63;95;191;;;
                                  -131868;1;0;false;false;;;;;;
                                  -131869;6;0;false;false;63;95;191;;;
                                  -131875;1;0;false;false;;;;;;
                                  -131876;2;0;false;false;63;95;191;;;
                                  -131878;1;0;false;false;;;;;;
                                  -131879;1;0;false;false;63;95;191;;;
                                  -131880;1;0;false;false;;;;;;
                                  -131881;9;0;false;false;63;95;191;;;
                                  -131890;3;0;false;false;;;;;;
                                  -131893;1;0;false;false;63;95;191;;;
                                  -131894;1;0;false;false;;;;;;
                                  -131895;3;0;false;false;63;95;191;;;
                                  -131898;1;0;false;false;;;;;;
                                  -131899;8;0;false;false;63;95;191;;;
                                  -131907;1;0;false;false;;;;;;
                                  -131908;6;0;false;false;63;95;191;;;
                                  -131914;1;0;false;false;;;;;;
                                  -131915;4;0;false;false;63;95;191;;;
                                  -131919;1;0;false;false;;;;;;
                                  -131920;2;0;false;false;63;95;191;;;
                                  -131922;1;0;false;false;;;;;;
                                  -131923;6;0;false;false;63;95;191;;;
                                  -131929;1;0;false;false;;;;;;
                                  -131930;3;0;false;false;63;95;191;;;
                                  -131933;1;0;false;false;;;;;;
                                  -131934;10;0;false;false;63;95;191;;;
                                  -131944;3;0;false;false;;;;;;
                                  -131947;1;0;false;false;63;95;191;;;
                                  -131948;1;0;false;false;;;;;;
                                  -131949;3;0;false;false;127;127;159;;;
                                  -131952;3;0;false;false;;;;;;
                                  -131955;1;0;false;false;63;95;191;;;
                                  -131956;3;0;false;false;;;;;;
                                  -131959;1;0;false;false;63;95;191;;;
                                  -131960;1;0;false;false;;;;;;
                                  -131961;7;1;false;false;127;159;191;;;
                                  -131968;5;0;false;false;63;95;191;;;
                                  -131973;1;0;false;false;;;;;;
                                  -131974;3;0;false;false;63;95;191;;;
                                  -131977;1;0;false;false;;;;;;
                                  -131978;6;0;false;false;63;95;191;;;
                                  -131984;1;0;false;false;;;;;;
                                  -131985;2;0;false;false;63;95;191;;;
                                  -131987;1;0;false;false;;;;;;
                                  -131988;9;0;false;false;63;95;191;;;
                                  -131997;1;0;false;false;;;;;;
                                  -131998;8;0;false;false;63;95;191;;;
                                  -132006;1;0;false;false;;;;;;
                                  -132007;3;0;false;false;63;95;191;;;
                                  -132010;1;0;false;false;;;;;;
                                  -132011;8;0;false;false;63;95;191;;;
                                  -132019;1;0;false;false;;;;;;
                                  -132020;2;0;false;false;63;95;191;;;
                                  -132022;4;0;false;false;;;;;;
                                  -132026;1;0;false;false;63;95;191;;;
                                  -132027;2;0;false;false;;;;;;
                                  -132029;3;0;false;false;63;95;191;;;
                                  -132032;1;0;false;false;;;;;;
                                  -132033;6;0;false;false;63;95;191;;;
                                  -132039;1;0;false;false;;;;;;
                                  -132040;2;0;false;false;63;95;191;;;
                                  -132042;1;0;false;false;;;;;;
                                  -132043;3;0;false;false;63;95;191;;;
                                  -132046;1;0;false;false;;;;;;
                                  -132047;6;0;false;false;63;95;191;;;
                                  -132053;1;0;false;false;;;;;;
                                  -132054;6;0;false;false;63;95;191;;;
                                  -132060;1;0;false;false;;;;;;
                                  -132061;5;0;false;false;63;95;191;;;
                                  -132066;3;0;false;false;;;;;;
                                  -132069;1;0;false;false;63;95;191;;;
                                  -132070;1;0;false;false;;;;;;
                                  -132071;8;1;false;false;127;159;191;;;
                                  -132079;6;0;false;false;63;95;191;;;
                                  -132085;1;0;false;false;;;;;;
                                  -132086;2;0;false;false;63;95;191;;;
                                  -132088;1;0;false;false;;;;;;
                                  -132089;3;0;false;false;63;95;191;;;
                                  -132092;1;0;false;false;;;;;;
                                  -132093;9;0;false;false;63;95;191;;;
                                  -132102;1;0;false;false;;;;;;
                                  -132103;2;0;false;false;63;95;191;;;
                                  -132105;1;0;false;false;;;;;;
                                  -132106;3;0;false;false;63;95;191;;;
                                  -132109;1;0;false;false;;;;;;
                                  -132110;5;0;false;false;63;95;191;;;
                                  -132115;1;0;false;false;;;;;;
                                  -132116;8;0;false;false;63;95;191;;;
                                  -132124;1;0;false;false;;;;;;
                                  -132125;8;0;false;false;63;95;191;;;
                                  -132133;4;0;false;false;;;;;;
                                  -132137;1;0;false;false;63;95;191;;;
                                  -132138;2;0;false;false;;;;;;
                                  -132140;2;0;false;false;63;95;191;;;
                                  -132142;1;0;false;false;;;;;;
                                  -132143;3;0;false;false;63;95;191;;;
                                  -132146;1;0;false;false;;;;;;
                                  -132147;5;0;false;false;63;95;191;;;
                                  -132152;1;0;false;false;;;;;;
                                  -132153;9;0;false;false;63;95;191;;;
                                  -132162;1;0;false;false;;;;;;
                                  -132163;2;0;false;false;63;95;191;;;
                                  -132165;1;0;false;false;;;;;;
                                  -132166;3;0;false;false;63;95;191;;;
                                  -132169;1;0;false;false;;;;;;
                                  -132170;9;0;false;false;63;95;191;;;
                                  -132179;3;0;false;false;;;;;;
                                  -132182;1;0;false;false;63;95;191;;;
                                  -132183;1;0;false;false;;;;;;
                                  -132184;11;1;false;false;127;159;191;;;
                                  -132195;12;0;false;false;63;95;191;;;
                                  -132207;1;0;false;false;;;;;;
                                  -132208;4;0;false;false;127;127;159;;;
                                  -132212;3;0;false;false;;;;;;
                                  -132215;1;0;false;false;63;95;191;;;
                                  -132216;4;0;false;false;;;;;;
                                  -132220;4;0;false;false;127;127;159;;;
                                  -132224;21;0;false;false;63;95;191;;;
                                  -132245;1;0;false;false;;;;;;
                                  -132246;1;0;false;false;127;127;159;;;
                                  -132247;1;0;false;false;;;;;;
                                  -132248;2;0;false;false;63;95;191;;;
                                  -132250;1;0;false;false;;;;;;
                                  -132251;3;0;false;false;63;95;191;;;
                                  -132254;1;0;false;false;;;;;;
                                  -132255;8;0;false;false;63;95;191;;;
                                  -132263;1;0;false;false;;;;;;
                                  -132264;3;0;false;false;63;95;191;;;
                                  -132267;1;0;false;false;;;;;;
                                  -132268;4;0;false;false;63;95;191;;;
                                  -132272;1;0;false;false;;;;;;
                                  -132273;8;0;false;false;63;95;191;;;
                                  -132281;5;0;false;false;127;127;159;;;
                                  -132286;3;0;false;false;;;;;;
                                  -132289;1;0;false;false;63;95;191;;;
                                  -132290;4;0;false;false;;;;;;
                                  -132294;4;0;false;false;127;127;159;;;
                                  -132298;27;0;false;false;63;95;191;;;
                                  -132325;1;0;false;false;;;;;;
                                  -132326;1;0;false;false;127;127;159;;;
                                  -132327;1;0;false;false;;;;;;
                                  -132328;2;0;false;false;63;95;191;;;
                                  -132330;1;0;false;false;;;;;;
                                  -132331;3;0;false;false;63;95;191;;;
                                  -132334;1;0;false;false;;;;;;
                                  -132335;6;0;false;false;63;95;191;;;
                                  -132341;1;0;false;false;;;;;;
                                  -132342;4;0;false;false;63;95;191;;;
                                  -132346;1;0;false;false;;;;;;
                                  -132347;3;0;false;false;63;95;191;;;
                                  -132350;1;0;false;false;;;;;;
                                  -132351;6;0;false;false;63;95;191;;;
                                  -132357;1;0;false;false;;;;;;
                                  -132358;4;0;false;false;63;95;191;;;
                                  -132362;1;0;false;false;;;;;;
                                  -132363;7;0;false;false;63;95;191;;;
                                  -132370;1;0;false;false;;;;;;
                                  -132371;3;0;false;false;63;95;191;;;
                                  -132374;1;0;false;false;;;;;;
                                  -132375;8;0;false;false;63;95;191;;;
                                  -132383;5;0;false;false;127;127;159;;;
                                  -132388;3;0;false;false;;;;;;
                                  -132391;1;0;false;false;63;95;191;;;
                                  -132392;1;0;false;false;;;;;;
                                  -132393;5;0;false;false;127;127;159;;;
                                  -132398;3;0;false;false;;;;;;
                                  -132401;1;0;false;false;63;95;191;;;
                                  -132402;1;0;false;false;;;;;;
                                  -132403;11;1;false;false;127;159;191;;;
                                  -132414;24;0;false;false;63;95;191;;;
                                  -132438;1;0;false;false;;;;;;
                                  -132439;4;0;false;false;127;127;159;;;
                                  -132443;3;0;false;false;;;;;;
                                  -132446;1;0;false;false;63;95;191;;;
                                  -132447;3;0;false;false;;;;;;
                                  -132450;4;0;false;false;127;127;159;;;
                                  -132454;19;0;false;false;63;95;191;;;
                                  -132473;1;0;false;false;;;;;;
                                  -132474;4;0;false;false;63;95;191;;;
                                  -132478;1;0;false;false;;;;;;
                                  -132479;5;0;false;false;63;95;191;;;
                                  -132484;1;0;false;false;;;;;;
                                  -132485;2;0;false;false;63;95;191;;;
                                  -132487;1;0;false;false;;;;;;
                                  -132488;4;0;false;false;63;95;191;;;
                                  -132492;5;0;false;false;127;127;159;;;
                                  -132497;3;0;false;false;;;;;;
                                  -132500;1;0;false;false;63;95;191;;;
                                  -132501;3;0;false;false;;;;;;
                                  -132504;4;0;false;false;127;127;159;;;
                                  -132508;22;0;false;false;63;95;191;;;
                                  -132530;1;0;false;false;;;;;;
                                  -132531;4;0;false;false;63;95;191;;;
                                  -132535;1;0;false;false;;;;;;
                                  -132536;5;0;false;false;63;95;191;;;
                                  -132541;1;0;false;false;;;;;;
                                  -132542;2;0;false;false;63;95;191;;;
                                  -132544;1;0;false;false;;;;;;
                                  -132545;2;0;false;false;63;95;191;;;
                                  -132547;1;0;false;false;;;;;;
                                  -132548;9;0;false;false;63;95;191;;;
                                  -132557;1;0;false;false;;;;;;
                                  -132558;2;0;false;false;63;95;191;;;
                                  -132560;1;0;false;false;;;;;;
                                  -132561;3;0;false;false;63;95;191;;;
                                  -132564;1;0;false;false;;;;;;
                                  -132565;9;0;false;false;63;95;191;;;
                                  -132574;1;0;false;false;;;;;;
                                  -132575;8;0;false;false;63;95;191;;;
                                  -132583;5;0;false;false;127;127;159;;;
                                  -132588;3;0;false;false;;;;;;
                                  -132591;1;0;false;false;63;95;191;;;
                                  -132592;1;0;false;false;;;;;;
                                  -132593;5;0;false;false;127;127;159;;;
                                  -132598;3;0;false;false;;;;;;
                                  -132601;2;0;false;false;63;95;191;;;
                                  -132603;2;0;false;false;;;;;;
                                  -132605;6;1;false;false;127;0;85;;;
                                  -132611;1;0;false;false;;;;;;
                                  -132612;3;1;false;false;127;0;85;;;
                                  -132615;1;0;false;false;;;;;;
                                  -132616;25;0;false;false;0;0;0;;;
                                  -132641;1;0;false;false;;;;;;
                                  -132642;6;0;false;false;0;0;0;;;
                                  -132648;1;0;false;false;;;;;;
                                  -132649;1;0;false;false;0;0;0;;;
                                  -132650;3;0;false;false;;;;;;
                                  -132653;14;0;false;false;0;0;0;;;
                                  -132667;3;0;false;false;;;;;;
                                  -132670;10;0;false;false;0;0;0;;;
                                  -132680;1;0;false;false;;;;;;
                                  -132681;7;0;false;false;0;0;0;;;
                                  -132688;3;0;false;false;;;;;;
                                  -132691;3;1;false;false;127;0;85;;;
                                  -132694;1;0;false;false;;;;;;
                                  -132695;5;0;false;false;0;0;0;;;
                                  -132700;3;0;false;false;;;;;;
                                  -132703;3;1;false;false;127;0;85;;;
                                  -132706;1;0;false;false;;;;;;
                                  -132707;11;0;false;false;0;0;0;;;
                                  -132718;3;0;false;false;;;;;;
                                  -132721;3;1;false;false;127;0;85;;;
                                  -132724;1;0;false;false;;;;;;
                                  -132725;13;0;false;false;0;0;0;;;
                                  -132738;3;0;false;false;;;;;;
                                  -132741;6;0;false;false;0;0;0;;;
                                  -132747;1;0;false;false;;;;;;
                                  -132748;9;0;false;false;0;0;0;;;
                                  -132757;6;0;false;false;;;;;;
                                  -132763;2;1;false;false;127;0;85;;;
                                  -132765;1;0;false;false;;;;;;
                                  -132766;6;0;false;false;0;0;0;;;
                                  -132772;1;0;false;false;;;;;;
                                  -132773;2;0;false;false;0;0;0;;;
                                  -132775;1;0;false;false;;;;;;
                                  -132776;4;1;false;false;127;0;85;;;
                                  -132780;1;0;false;false;0;0;0;;;
                                  -132781;1;0;false;false;;;;;;
                                  -132782;1;0;false;false;0;0;0;;;
                                  -132783;4;0;false;false;;;;;;
                                  -132787;35;0;false;false;0;0;0;;;
                                  -132822;3;0;false;false;;;;;;
                                  -132825;1;0;false;false;0;0;0;;;
                                  -132826;3;0;false;false;;;;;;
                                  -132829;55;0;false;false;63;127;95;;;
                                  -132884;1;0;false;false;;;;;;
                                  -132885;2;1;false;false;127;0;85;;;
                                  -132887;1;0;false;false;;;;;;
                                  -132888;8;0;false;false;0;0;0;;;
                                  -132896;1;0;false;false;;;;;;
                                  -132897;1;0;false;false;0;0;0;;;
                                  -132898;1;0;false;false;;;;;;
                                  -132899;20;0;false;false;0;0;0;;;
                                  -132919;1;0;false;false;;;;;;
                                  -132920;1;0;false;false;0;0;0;;;
                                  -132921;1;0;false;false;;;;;;
                                  -132922;1;0;false;false;0;0;0;;;
                                  -132923;1;0;false;false;;;;;;
                                  -132924;2;0;false;false;0;0;0;;;
                                  -132926;1;0;false;false;;;;;;
                                  -132927;7;0;false;false;0;0;0;;;
                                  -132934;1;0;false;false;;;;;;
                                  -132935;1;0;false;false;0;0;0;;;
                                  -132936;1;0;false;false;;;;;;
                                  -132937;22;0;false;false;0;0;0;;;
                                  -132959;1;0;false;false;;;;;;
                                  -132960;1;0;false;false;0;0;0;;;
                                  -132961;1;0;false;false;;;;;;
                                  -132962;2;0;false;false;0;0;0;;;
                                  -132964;1;0;false;false;;;;;;
                                  -132965;1;0;false;false;0;0;0;;;
                                  -132966;4;0;false;false;;;;;;
                                  -132970;38;0;false;false;0;0;0;;;
                                  -133008;3;0;false;false;;;;;;
                                  -133011;1;0;false;false;0;0;0;;;
                                  -133012;4;0;false;false;;;;;;
                                  -133016;4;0;false;false;0;0;0;;;
                                  -133020;1;0;false;false;;;;;;
                                  -133021;1;0;false;false;0;0;0;;;
                                  -133022;1;0;false;false;;;;;;
                                  -133023;14;0;false;false;0;0;0;;;
                                  -133037;1;0;false;false;;;;;;
                                  -133038;1;0;false;false;0;0;0;;;
                                  -133039;1;0;false;false;;;;;;
                                  -133040;8;0;false;false;0;0;0;;;
                                  -133048;1;0;false;false;;;;;;
                                  -133049;1;0;false;false;0;0;0;;;
                                  -133050;1;0;false;false;;;;;;
                                  -133051;11;0;false;false;0;0;0;;;
                                  -133062;4;0;false;false;;;;;;
                                  -133066;36;0;false;false;63;127;95;;;
                                  -133102;1;0;false;false;;;;;;
                                  -133103;2;1;false;false;127;0;85;;;
                                  -133105;1;0;false;false;;;;;;
                                  -133106;5;0;false;false;0;0;0;;;
                                  -133111;1;0;false;false;;;;;;
                                  -133112;2;0;false;false;0;0;0;;;
                                  -133114;1;0;false;false;;;;;;
                                  -133115;23;0;false;false;0;0;0;;;
                                  -133138;1;0;false;false;;;;;;
                                  -133139;1;0;false;false;0;0;0;;;
                                  -133140;4;0;false;false;;;;;;
                                  -133144;38;0;false;false;0;0;0;;;
                                  -133182;3;0;false;false;;;;;;
                                  -133185;1;0;false;false;0;0;0;;;
                                  -133186;4;0;false;false;;;;;;
                                  -133190;8;0;false;false;0;0;0;;;
                                  -133198;1;0;false;false;;;;;;
                                  -133199;1;0;false;false;0;0;0;;;
                                  -133200;1;0;false;false;;;;;;
                                  -133201;22;0;false;false;0;0;0;;;
                                  -133223;3;0;false;false;;;;;;
                                  -133226;10;0;false;false;0;0;0;;;
                                  -133236;1;0;false;false;;;;;;
                                  -133237;1;0;false;false;0;0;0;;;
                                  -133238;1;0;false;false;;;;;;
                                  -133239;30;0;false;false;0;0;0;;;
                                  -133269;7;0;false;false;;;;;;
                                  -133276;3;1;false;false;127;0;85;;;
                                  -133279;1;0;false;false;;;;;;
                                  -133280;1;0;false;false;0;0;0;;;
                                  -133281;1;0;false;false;;;;;;
                                  -133282;1;0;false;false;0;0;0;;;
                                  -133283;1;0;false;false;;;;;;
                                  -133284;7;0;false;false;0;0;0;;;
                                  -133291;1;0;false;false;;;;;;
                                  -133292;1;0;false;false;0;0;0;;;
                                  -133293;1;0;false;false;;;;;;
                                  -133294;10;0;false;false;0;0;0;;;
                                  -133304;1;0;false;false;;;;;;
                                  -133305;1;0;false;false;0;0;0;;;
                                  -133306;1;0;false;false;;;;;;
                                  -133307;23;0;false;false;0;0;0;;;
                                  -133330;3;0;false;false;;;;;;
                                  -133333;6;0;false;false;0;0;0;;;
                                  -133339;1;0;false;false;;;;;;
                                  -133340;1;0;false;false;0;0;0;;;
                                  -133341;1;0;false;false;;;;;;
                                  -133342;32;0;false;false;0;0;0;;;
                                  -133374;1;0;false;false;;;;;;
                                  -133375;12;0;false;false;0;0;0;;;
                                  -133387;3;0;false;false;;;;;;
                                  -133390;9;0;false;false;0;0;0;;;
                                  -133399;1;0;false;false;;;;;;
                                  -133400;4;0;false;false;0;0;0;;;
                                  -133404;1;0;false;false;;;;;;
                                  -133405;1;0;false;false;0;0;0;;;
                                  -133406;1;0;false;false;;;;;;
                                  -133407;24;0;false;false;0;0;0;;;
                                  -133431;3;0;false;false;;;;;;
                                  -133434;2;1;false;false;127;0;85;;;
                                  -133436;1;0;false;false;;;;;;
                                  -133437;2;0;false;false;0;0;0;;;
                                  -133439;1;0;false;false;;;;;;
                                  -133440;1;0;false;false;0;0;0;;;
                                  -133441;1;0;false;false;;;;;;
                                  -133442;6;0;false;false;0;0;0;;;
                                  -133448;1;0;false;false;;;;;;
                                  -133449;1;0;false;false;0;0;0;;;
                                  -133450;1;0;false;false;;;;;;
                                  -133451;11;0;false;false;0;0;0;;;
                                  -133462;1;0;false;false;;;;;;
                                  -133463;1;0;false;false;0;0;0;;;
                                  -133464;4;0;false;false;;;;;;
                                  -133468;35;0;false;false;0;0;0;;;
                                  -133503;4;0;false;false;;;;;;
                                  -133507;38;0;false;false;0;0;0;;;
                                  -133545;3;0;false;false;;;;;;
                                  -133548;1;0;false;false;0;0;0;;;
                                  -133549;3;0;false;false;;;;;;
                                  -133552;3;1;false;false;127;0;85;;;
                                  -133555;2;0;false;false;0;0;0;;;
                                  -133557;1;0;false;false;;;;;;
                                  -133558;8;0;false;false;0;0;0;;;
                                  -133566;1;0;false;false;;;;;;
                                  -133567;1;0;false;false;0;0;0;;;
                                  -133568;1;0;false;false;;;;;;
                                  -133569;3;1;false;false;127;0;85;;;
                                  -133572;1;0;false;false;;;;;;
                                  -133573;3;1;false;false;127;0;85;;;
                                  -133576;4;0;false;false;0;0;0;;;
                                  -133580;3;0;false;false;;;;;;
                                  -133583;12;0;false;false;0;0;0;;;
                                  -133595;1;0;false;false;;;;;;
                                  -133596;1;0;false;false;0;0;0;;;
                                  -133597;1;0;false;false;;;;;;
                                  -133598;19;0;false;false;0;0;0;;;
                                  -133617;1;0;false;false;;;;;;
                                  -133618;2;0;false;false;0;0;0;;;
                                  -133620;1;0;false;false;;;;;;
                                  -133621;10;0;false;false;0;0;0;;;
                                  -133631;3;0;false;false;;;;;;
                                  -133634;2;1;false;false;127;0;85;;;
                                  -133636;1;0;false;false;;;;;;
                                  -133637;13;0;false;false;0;0;0;;;
                                  -133650;1;0;false;false;;;;;;
                                  -133651;2;0;false;false;0;0;0;;;
                                  -133653;1;0;false;false;;;;;;
                                  -133654;17;0;false;false;0;0;0;;;
                                  -133671;1;0;false;false;;;;;;
                                  -133672;1;0;false;false;0;0;0;;;
                                  -133673;1;0;false;false;;;;;;
                                  -133674;2;0;false;false;0;0;0;;;
                                  -133676;1;0;false;false;;;;;;
                                  -133677;1;0;false;false;0;0;0;;;
                                  -133678;4;0;false;false;;;;;;
                                  -133682;12;0;false;false;0;0;0;;;
                                  -133694;1;0;false;false;;;;;;
                                  -133695;1;0;false;false;0;0;0;;;
                                  -133696;1;0;false;false;;;;;;
                                  -133697;27;0;false;false;0;0;0;;;
                                  -133724;1;0;false;false;;;;;;
                                  -133725;12;0;false;false;0;0;0;;;
                                  -133737;1;0;false;false;;;;;;
                                  -133738;1;0;false;false;0;0;0;;;
                                  -133739;1;0;false;false;;;;;;
                                  -133740;13;0;false;false;0;0;0;;;
                                  -133753;5;0;false;false;;;;;;
                                  -133758;1;0;false;false;0;0;0;;;
                                  -133759;3;0;false;false;;;;;;
                                  -133762;35;0;false;false;0;0;0;;;
                                  -133797;3;0;false;false;;;;;;
                                  -133800;6;1;false;false;127;0;85;;;
                                  -133806;1;0;false;false;;;;;;
                                  -133807;10;0;false;false;0;0;0;;;
                                  -133817;1;0;false;false;;;;;;
                                  -133818;1;0;false;false;0;0;0;;;
                                  -133819;1;0;false;false;;;;;;
                                  -133820;13;0;false;false;0;0;0;;;
                                  -133833;2;0;false;false;;;;;;
                                  -133835;1;0;false;false;0;0;0;;;
                                  -133836;2;0;false;false;;;;;;
                                  -133838;3;0;false;false;63;95;191;;;
                                  -133841;3;0;false;false;;;;;;
                                  -133844;1;0;false;false;63;95;191;;;
                                  -133845;1;0;false;false;;;;;;
                                  -133846;7;0;false;false;63;95;191;;;
                                  -133853;1;0;false;false;;;;;;
                                  -133854;3;0;false;false;63;95;191;;;
                                  -133857;1;0;false;false;;;;;;
                                  -133858;6;0;false;false;63;95;191;;;
                                  -133864;1;0;false;false;;;;;;
                                  -133865;2;0;false;false;63;95;191;;;
                                  -133867;1;0;false;false;;;;;;
                                  -133868;3;0;false;false;63;95;191;;;
                                  -133871;1;0;false;false;;;;;;
                                  -133872;9;0;false;false;63;95;191;;;
                                  -133881;1;0;false;false;;;;;;
                                  -133882;1;0;false;false;63;95;191;;;
                                  -133883;1;0;false;false;;;;;;
                                  -133884;8;0;false;false;63;95;191;;;
                                  -133892;1;0;false;false;;;;;;
                                  -133893;2;0;false;false;63;95;191;;;
                                  -133895;1;0;false;false;;;;;;
                                  -133896;3;0;false;false;63;95;191;;;
                                  -133899;1;0;false;false;;;;;;
                                  -133900;9;0;false;false;63;95;191;;;
                                  -133909;1;0;false;false;;;;;;
                                  -133910;5;0;false;false;63;95;191;;;
                                  -133915;3;0;false;false;;;;;;
                                  -133918;1;0;false;false;63;95;191;;;
                                  -133919;1;0;false;false;;;;;;
                                  -133920;3;0;false;false;127;127;159;;;
                                  -133923;3;0;false;false;;;;;;
                                  -133926;1;0;false;false;63;95;191;;;
                                  -133927;3;0;false;false;;;;;;
                                  -133930;1;0;false;false;63;95;191;;;
                                  -133931;1;0;false;false;;;;;;
                                  -133932;7;1;false;false;127;159;191;;;
                                  -133939;1;0;false;false;63;95;191;;;
                                  -133940;1;0;false;false;;;;;;
                                  -133941;1;0;false;false;63;95;191;;;
                                  -133942;1;0;false;false;;;;;;
                                  -133943;8;0;false;false;63;95;191;;;
                                  -133951;1;0;false;false;;;;;;
                                  -133952;2;0;false;false;63;95;191;;;
                                  -133954;1;0;false;false;;;;;;
                                  -133955;3;0;false;false;63;95;191;;;
                                  -133958;1;0;false;false;;;;;;
                                  -133959;5;0;false;false;63;95;191;;;
                                  -133964;1;0;false;false;;;;;;
                                  -133965;8;0;false;false;63;95;191;;;
                                  -133973;3;0;false;false;;;;;;
                                  -133976;1;0;false;false;63;95;191;;;
                                  -133977;1;0;false;false;;;;;;
                                  -133978;7;1;false;false;127;159;191;;;
                                  -133985;4;0;false;false;63;95;191;;;
                                  -133989;1;0;false;false;;;;;;
                                  -133990;4;0;false;false;63;95;191;;;
                                  -133994;1;0;false;false;;;;;;
                                  -133995;3;0;false;false;63;95;191;;;
                                  -133998;1;0;false;false;;;;;;
                                  -133999;5;0;false;false;63;95;191;;;
                                  -134004;1;0;false;false;;;;;;
                                  -134005;8;0;false;false;63;95;191;;;
                                  -134013;1;0;false;false;;;;;;
                                  -134014;2;0;false;false;63;95;191;;;
                                  -134016;1;0;false;false;;;;;;
                                  -134017;2;0;false;false;63;95;191;;;
                                  -134019;3;0;false;false;;;;;;
                                  -134022;1;0;false;false;63;95;191;;;
                                  -134023;1;0;false;false;;;;;;
                                  -134024;8;1;false;false;127;159;191;;;
                                  -134032;3;0;false;false;63;95;191;;;
                                  -134035;1;0;false;false;;;;;;
                                  -134036;6;0;false;false;63;95;191;;;
                                  -134042;1;0;false;false;;;;;;
                                  -134043;2;0;false;false;63;95;191;;;
                                  -134045;1;0;false;false;;;;;;
                                  -134046;3;0;false;false;63;95;191;;;
                                  -134049;1;0;false;false;;;;;;
                                  -134050;9;0;false;false;63;95;191;;;
                                  -134059;1;0;false;false;;;;;;
                                  -134060;1;0;false;false;63;95;191;;;
                                  -134061;1;0;false;false;;;;;;
                                  -134062;8;0;false;false;63;95;191;;;
                                  -134070;1;0;false;false;;;;;;
                                  -134071;2;0;false;false;63;95;191;;;
                                  -134073;1;0;false;false;;;;;;
                                  -134074;3;0;false;false;63;95;191;;;
                                  -134077;1;0;false;false;;;;;;
                                  -134078;9;0;false;false;63;95;191;;;
                                  -134087;1;0;false;false;;;;;;
                                  -134088;5;0;false;false;63;95;191;;;
                                  -134093;3;0;false;false;;;;;;
                                  -134096;1;0;false;false;63;95;191;;;
                                  -134097;2;0;false;false;;;;;;
                                  -134099;8;0;false;false;63;95;191;;;
                                  -134107;1;0;false;false;;;;;;
                                  -134108;2;0;false;false;63;95;191;;;
                                  -134110;1;0;false;false;;;;;;
                                  -134111;3;0;false;false;63;95;191;;;
                                  -134114;1;0;false;false;;;;;;
                                  -134115;9;0;false;false;63;95;191;;;
                                  -134124;1;0;false;false;;;;;;
                                  -134125;2;0;false;false;63;95;191;;;
                                  -134127;1;0;false;false;;;;;;
                                  -134128;3;0;false;false;63;95;191;;;
                                  -134131;1;0;false;false;;;;;;
                                  -134132;8;0;false;false;63;95;191;;;
                                  -134140;3;0;false;false;;;;;;
                                  -134143;2;0;false;false;63;95;191;;;
                                  -134145;2;0;false;false;;;;;;
                                  -134147;3;1;false;false;127;0;85;;;
                                  -134150;1;0;false;false;;;;;;
                                  -134151;25;0;false;false;0;0;0;;;
                                  -134176;3;1;false;false;127;0;85;;;
                                  -134179;1;0;false;false;;;;;;
                                  -134180;2;0;false;false;0;0;0;;;
                                  -134182;1;0;false;false;;;;;;
                                  -134183;3;1;false;false;127;0;85;;;
                                  -134186;1;0;false;false;;;;;;
                                  -134187;5;0;false;false;0;0;0;;;
                                  -134192;1;0;false;false;;;;;;
                                  -134193;1;0;false;false;0;0;0;;;
                                  -134194;3;0;false;false;;;;;;
                                  -134197;6;0;false;false;0;0;0;;;
                                  -134203;1;0;false;false;;;;;;
                                  -134204;8;0;false;false;0;0;0;;;
                                  -134212;1;0;false;false;;;;;;
                                  -134213;1;0;false;false;0;0;0;;;
                                  -134214;1;0;false;false;;;;;;
                                  -134215;22;0;false;false;0;0;0;;;
                                  -134237;3;0;false;false;;;;;;
                                  -134240;3;1;false;false;127;0;85;;;
                                  -134243;1;0;false;false;;;;;;
                                  -134244;10;0;false;false;0;0;0;;;
                                  -134254;1;0;false;false;;;;;;
                                  -134255;1;0;false;false;0;0;0;;;
                                  -134256;1;0;false;false;;;;;;
                                  -134257;30;0;false;false;0;0;0;;;
                                  -134287;3;0;false;false;;;;;;
                                  -134290;6;1;false;false;127;0;85;;;
                                  -134296;1;0;false;false;;;;;;
                                  -134297;22;0;false;false;0;0;0;;;
                                  -134319;1;0;false;false;;;;;;
                                  -134320;11;0;false;false;0;0;0;;;
                                  -134331;1;0;false;false;;;;;;
                                  -134332;2;0;false;false;0;0;0;;;
                                  -134334;1;0;false;false;;;;;;
                                  -134335;1;0;false;false;0;0;0;;;
                                  -134336;1;0;false;false;;;;;;
                                  -134337;11;0;false;false;0;0;0;;;
                                  -134348;2;0;false;false;;;;;;
                                  -134350;1;0;false;false;0;0;0;;;
                                  -134351;2;0;false;false;;;;;;
                                  -134353;3;0;false;false;63;95;191;;;
                                  -134356;3;0;false;false;;;;;;
                                  -134359;1;0;false;false;63;95;191;;;
                                  -134360;1;0;false;false;;;;;;
                                  -134361;6;0;false;false;63;95;191;;;
                                  -134367;1;0;false;false;;;;;;
                                  -134368;3;0;false;false;63;95;191;;;
                                  -134371;1;0;false;false;;;;;;
                                  -134372;11;0;false;false;63;95;191;;;
                                  -134383;1;0;false;false;;;;;;
                                  -134384;2;0;false;false;63;95;191;;;
                                  -134386;1;0;false;false;;;;;;
                                  -134387;3;0;false;false;63;95;191;;;
                                  -134390;1;0;false;false;;;;;;
                                  -134391;9;0;false;false;63;95;191;;;
                                  -134400;3;0;false;false;;;;;;
                                  -134403;1;0;false;false;63;95;191;;;
                                  -134404;3;0;false;false;;;;;;
                                  -134407;1;0;false;false;63;95;191;;;
                                  -134408;1;0;false;false;;;;;;
                                  -134409;8;1;false;false;127;159;191;;;
                                  -134417;3;0;false;false;63;95;191;;;
                                  -134420;1;0;false;false;;;;;;
                                  -134421;11;0;false;false;63;95;191;;;
                                  -134432;1;0;false;false;;;;;;
                                  -134433;5;0;false;false;63;95;191;;;
                                  -134438;3;0;false;false;;;;;;
                                  -134441;1;0;false;false;63;95;191;;;
                                  -134442;4;0;false;false;;;;;;
                                  -134446;1;0;false;false;63;95;191;;;
                                  -134447;1;0;false;false;;;;;;
                                  -134448;11;1;false;false;127;159;191;;;
                                  -134459;12;0;false;false;63;95;191;;;
                                  -134471;1;0;false;false;;;;;;
                                  -134472;4;0;false;false;127;127;159;;;
                                  -134476;3;0;false;false;;;;;;
                                  -134479;1;0;false;false;63;95;191;;;
                                  -134480;4;0;false;false;;;;;;
                                  -134484;4;0;false;false;127;127;159;;;
                                  -134488;21;0;false;false;63;95;191;;;
                                  -134509;1;0;false;false;;;;;;
                                  -134510;1;0;false;false;127;127;159;;;
                                  -134511;1;0;false;false;;;;;;
                                  -134512;2;0;false;false;63;95;191;;;
                                  -134514;1;0;false;false;;;;;;
                                  -134515;3;0;false;false;63;95;191;;;
                                  -134518;1;0;false;false;;;;;;
                                  -134519;8;0;false;false;63;95;191;;;
                                  -134527;1;0;false;false;;;;;;
                                  -134528;3;0;false;false;63;95;191;;;
                                  -134531;1;0;false;false;;;;;;
                                  -134532;4;0;false;false;63;95;191;;;
                                  -134536;1;0;false;false;;;;;;
                                  -134537;8;0;false;false;63;95;191;;;
                                  -134545;5;0;false;false;127;127;159;;;
                                  -134550;3;0;false;false;;;;;;
                                  -134553;1;0;false;false;63;95;191;;;
                                  -134554;4;0;false;false;;;;;;
                                  -134558;4;0;false;false;127;127;159;;;
                                  -134562;27;0;false;false;63;95;191;;;
                                  -134589;1;0;false;false;;;;;;
                                  -134590;1;0;false;false;127;127;159;;;
                                  -134591;1;0;false;false;;;;;;
                                  -134592;2;0;false;false;63;95;191;;;
                                  -134594;1;0;false;false;;;;;;
                                  -134595;3;0;false;false;63;95;191;;;
                                  -134598;1;0;false;false;;;;;;
                                  -134599;6;0;false;false;63;95;191;;;
                                  -134605;1;0;false;false;;;;;;
                                  -134606;4;0;false;false;63;95;191;;;
                                  -134610;1;0;false;false;;;;;;
                                  -134611;3;0;false;false;63;95;191;;;
                                  -134614;1;0;false;false;;;;;;
                                  -134615;6;0;false;false;63;95;191;;;
                                  -134621;1;0;false;false;;;;;;
                                  -134622;4;0;false;false;63;95;191;;;
                                  -134626;1;0;false;false;;;;;;
                                  -134627;7;0;false;false;63;95;191;;;
                                  -134634;1;0;false;false;;;;;;
                                  -134635;3;0;false;false;63;95;191;;;
                                  -134638;1;0;false;false;;;;;;
                                  -134639;8;0;false;false;63;95;191;;;
                                  -134647;5;0;false;false;127;127;159;;;
                                  -134652;3;0;false;false;;;;;;
                                  -134655;1;0;false;false;63;95;191;;;
                                  -134656;1;0;false;false;;;;;;
                                  -134657;5;0;false;false;127;127;159;;;
                                  -134662;3;0;false;false;;;;;;
                                  -134665;1;0;false;false;63;95;191;;;
                                  -134666;4;0;false;false;;;;;;
                                  -134670;1;0;false;false;63;95;191;;;
                                  -134671;1;0;false;false;;;;;;
                                  -134672;7;1;false;false;127;159;191;;;
                                  -134679;5;0;false;false;63;95;191;;;
                                  -134684;3;0;false;false;;;;;;
                                  -134687;2;0;false;false;63;95;191;;;
                                  -134689;2;0;false;false;;;;;;
                                  -134691;6;1;false;false;127;0;85;;;
                                  -134697;1;0;false;false;;;;;;
                                  -134698;3;1;false;false;127;0;85;;;
                                  -134701;1;0;false;false;;;;;;
                                  -134702;14;0;false;false;0;0;0;;;
                                  -134716;1;0;false;false;;;;;;
                                  -134717;2;0;false;false;0;0;0;;;
                                  -134719;1;0;false;false;;;;;;
                                  -134720;1;0;false;false;0;0;0;;;
                                  -134721;3;0;false;false;;;;;;
                                  -134724;14;0;false;false;0;0;0;;;
                                  -134738;3;0;false;false;;;;;;
                                  -134741;6;1;false;false;127;0;85;;;
                                  -134747;1;0;false;false;;;;;;
                                  -134748;12;0;false;false;0;0;0;;;
                                  -134760;1;0;false;false;;;;;;
                                  -134761;1;0;false;false;0;0;0;;;
                                  -134762;1;0;false;false;;;;;;
                                  -134763;17;0;false;false;0;0;0;;;
                                  -134780;1;0;false;false;;;;;;
                                  -134781;1;0;false;false;0;0;0;;;
                                  -134782;1;0;false;false;;;;;;
                                  -134783;18;0;false;false;0;0;0;;;
                                  -134801;2;0;false;false;;;;;;
                                  -134803;1;0;false;false;0;0;0;;;
                                  -134804;2;0;false;false;;;;;;
                                  -134806;3;0;false;false;63;95;191;;;
                                  -134809;4;0;false;false;;;;;;
                                  -134813;1;0;false;false;63;95;191;;;
                                  -134814;1;0;false;false;;;;;;
                                  -134815;7;0;false;false;63;95;191;;;
                                  -134822;1;0;false;false;;;;;;
                                  -134823;3;0;false;false;63;95;191;;;
                                  -134826;1;0;false;false;;;;;;
                                  -134827;5;0;false;false;63;95;191;;;
                                  -134832;1;0;false;false;;;;;;
                                  -134833;2;0;false;false;63;95;191;;;
                                  -134835;1;0;false;false;;;;;;
                                  -134836;3;0;false;false;63;95;191;;;
                                  -134839;1;0;false;false;;;;;;
                                  -134840;4;0;false;false;63;95;191;;;
                                  -134844;1;0;false;false;;;;;;
                                  -134845;9;0;false;false;63;95;191;;;
                                  -134854;1;0;false;false;;;;;;
                                  -134855;7;0;false;false;63;95;191;;;
                                  -134862;1;0;false;false;;;;;;
                                  -134863;5;0;false;false;63;95;191;;;
                                  -134868;3;0;false;false;;;;;;
                                  -134871;1;0;false;false;63;95;191;;;
                                  -134872;3;0;false;false;;;;;;
                                  -134875;1;0;false;false;63;95;191;;;
                                  -134876;1;0;false;false;;;;;;
                                  -134877;8;1;false;false;127;159;191;;;
                                  -134885;5;0;false;false;63;95;191;;;
                                  -134890;1;0;false;false;;;;;;
                                  -134891;2;0;false;false;63;95;191;;;
                                  -134893;1;0;false;false;;;;;;
                                  -134894;3;0;false;false;63;95;191;;;
                                  -134897;1;0;false;false;;;;;;
                                  -134898;4;0;false;false;63;95;191;;;
                                  -134902;1;0;false;false;;;;;;
                                  -134903;9;0;false;false;63;95;191;;;
                                  -134912;1;0;false;false;;;;;;
                                  -134913;7;0;false;false;63;95;191;;;
                                  -134920;1;0;false;false;;;;;;
                                  -134921;5;0;false;false;63;95;191;;;
                                  -134926;3;0;false;false;;;;;;
                                  -134929;2;0;false;false;63;95;191;;;
                                  -134931;2;0;false;false;;;;;;
                                  -134933;3;1;false;false;127;0;85;;;
                                  -134936;1;0;false;false;;;;;;
                                  -134937;23;0;false;false;0;0;0;;;
                                  -134960;1;0;false;false;;;;;;
                                  -134961;1;0;false;false;0;0;0;;;
                                  -134962;3;0;false;false;;;;;;
                                  -134965;3;1;false;false;127;0;85;;;
                                  -134968;1;0;false;false;;;;;;
                                  -134969;16;0;false;false;0;0;0;;;
                                  -134985;1;0;false;false;;;;;;
                                  -134986;1;0;false;false;0;0;0;;;
                                  -134987;1;0;false;false;;;;;;
                                  -134988;42;0;false;false;0;0;0;;;
                                  -135030;1;0;false;false;;;;;;
                                  -135031;12;0;false;false;0;0;0;;;
                                  -135043;3;0;false;false;;;;;;
                                  -135046;6;1;false;false;127;0;85;;;
                                  -135052;1;0;false;false;;;;;;
                                  -135053;32;0;false;false;0;0;0;;;
                                  -135085;1;0;false;false;;;;;;
                                  -135086;8;0;false;false;0;0;0;;;
                                  -135094;1;0;false;false;;;;;;
                                  -135095;1;0;false;false;0;0;0;;;
                                  -135096;1;0;false;false;;;;;;
                                  -135097;17;0;false;false;0;0;0;;;
                                  -135114;1;0;false;false;;;;;;
                                  -135115;1;0;false;false;0;0;0;;;
                                  -135116;1;0;false;false;;;;;;
                                  -135117;2;0;false;false;0;0;0;;;
                                  -135119;2;0;false;false;;;;;;
                                  -135121;1;0;false;false;0;0;0;;;
                                  -135122;2;0;false;false;;;;;;
                                  -135124;3;0;false;false;63;95;191;;;
                                  -135127;3;0;false;false;;;;;;
                                  -135130;1;0;false;false;63;95;191;;;
                                  -135131;1;0;false;false;;;;;;
                                  -135132;7;0;false;false;63;95;191;;;
                                  -135139;1;0;false;false;;;;;;
                                  -135140;3;0;false;false;63;95;191;;;
                                  -135143;1;0;false;false;;;;;;
                                  -135144;7;0;false;false;63;95;191;;;
                                  -135151;1;0;false;false;;;;;;
                                  -135152;2;0;false;false;63;95;191;;;
                                  -135154;1;0;false;false;;;;;;
                                  -135155;3;0;false;false;63;95;191;;;
                                  -135158;1;0;false;false;;;;;;
                                  -135159;9;0;false;false;63;95;191;;;
                                  -135168;1;0;false;false;;;;;;
                                  -135169;5;0;false;false;63;95;191;;;
                                  -135174;1;0;false;false;;;;;;
                                  -135175;5;0;false;false;63;95;191;;;
                                  -135180;1;0;false;false;;;;;;
                                  -135181;3;0;false;false;63;95;191;;;
                                  -135184;1;0;false;false;;;;;;
                                  -135185;8;0;false;false;63;95;191;;;
                                  -135193;1;0;false;false;;;;;;
                                  -135194;4;0;false;false;63;95;191;;;
                                  -135198;4;0;false;false;;;;;;
                                  -135202;1;0;false;false;63;95;191;;;
                                  -135203;1;0;false;false;;;;;;
                                  -135204;9;0;false;false;63;95;191;;;
                                  -135213;1;0;false;false;;;;;;
                                  -135214;2;0;false;false;63;95;191;;;
                                  -135216;1;0;false;false;;;;;;
                                  -135217;8;0;false;false;63;95;191;;;
                                  -135225;1;0;false;false;;;;;;
                                  -135226;6;0;false;false;63;95;191;;;
                                  -135232;3;0;false;false;;;;;;
                                  -135235;1;0;false;false;63;95;191;;;
                                  -135236;1;0;false;false;;;;;;
                                  -135237;3;0;false;false;127;127;159;;;
                                  -135240;3;0;false;false;;;;;;
                                  -135243;1;0;false;false;63;95;191;;;
                                  -135244;3;0;false;false;;;;;;
                                  -135247;1;0;false;false;63;95;191;;;
                                  -135248;1;0;false;false;;;;;;
                                  -135249;7;1;false;false;127;159;191;;;
                                  -135256;6;0;false;false;63;95;191;;;
                                  -135262;1;0;false;false;;;;;;
                                  -135263;3;0;false;false;63;95;191;;;
                                  -135266;1;0;false;false;;;;;;
                                  -135267;10;0;false;false;63;95;191;;;
                                  -135277;1;0;false;false;;;;;;
                                  -135278;2;0;false;false;63;95;191;;;
                                  -135280;1;0;false;false;;;;;;
                                  -135281;5;0;false;false;63;95;191;;;
                                  -135286;1;0;false;false;;;;;;
                                  -135287;4;0;false;false;63;95;191;;;
                                  -135291;1;0;false;false;;;;;;
                                  -135292;4;0;false;false;63;95;191;;;
                                  -135296;1;0;false;false;;;;;;
                                  -135297;4;0;false;false;63;95;191;;;
                                  -135301;3;0;false;false;;;;;;
                                  -135304;1;0;false;false;63;95;191;;;
                                  -135305;1;0;false;false;;;;;;
                                  -135306;8;1;false;false;127;159;191;;;
                                  -135314;3;0;false;false;63;95;191;;;
                                  -135317;1;0;false;false;;;;;;
                                  -135318;7;0;false;false;63;95;191;;;
                                  -135325;1;0;false;false;;;;;;
                                  -135326;2;0;false;false;63;95;191;;;
                                  -135328;1;0;false;false;;;;;;
                                  -135329;3;0;false;false;63;95;191;;;
                                  -135332;1;0;false;false;;;;;;
                                  -135333;9;0;false;false;63;95;191;;;
                                  -135342;1;0;false;false;;;;;;
                                  -135343;5;0;false;false;63;95;191;;;
                                  -135348;1;0;false;false;;;;;;
                                  -135349;5;0;false;false;63;95;191;;;
                                  -135354;1;0;false;false;;;;;;
                                  -135355;3;0;false;false;63;95;191;;;
                                  -135358;1;0;false;false;;;;;;
                                  -135359;8;0;false;false;63;95;191;;;
                                  -135367;1;0;false;false;;;;;;
                                  -135368;4;0;false;false;63;95;191;;;
                                  -135372;4;0;false;false;;;;;;
                                  -135376;1;0;false;false;63;95;191;;;
                                  -135377;2;0;false;false;;;;;;
                                  -135379;9;0;false;false;63;95;191;;;
                                  -135388;1;0;false;false;;;;;;
                                  -135389;2;0;false;false;63;95;191;;;
                                  -135391;1;0;false;false;;;;;;
                                  -135392;8;0;false;false;63;95;191;;;
                                  -135400;1;0;false;false;;;;;;
                                  -135401;5;0;false;false;63;95;191;;;
                                  -135406;1;0;false;false;;;;;;
                                  -135407;2;0;false;false;63;95;191;;;
                                  -135409;1;0;false;false;;;;;;
                                  -135410;7;0;false;false;63;95;191;;;
                                  -135417;1;0;false;false;;;;;;
                                  -135418;2;0;false;false;63;95;191;;;
                                  -135420;1;0;false;false;;;;;;
                                  -135421;3;0;false;false;63;95;191;;;
                                  -135424;1;0;false;false;;;;;;
                                  -135425;9;0;false;false;63;95;191;;;
                                  -135434;1;0;false;false;;;;;;
                                  -135435;11;0;false;false;63;95;191;;;
                                  -135446;3;0;false;false;;;;;;
                                  -135449;2;0;false;false;63;95;191;;;
                                  -135451;2;0;false;false;;;;;;
                                  -135453;6;0;false;false;0;0;0;;;
                                  -135459;1;0;false;false;;;;;;
                                  -135460;35;0;false;false;0;0;0;;;
                                  -135495;1;0;false;false;;;;;;
                                  -135496;7;0;false;false;0;0;0;;;
                                  -135503;1;0;false;false;;;;;;
                                  -135504;1;0;false;false;0;0;0;;;
                                  -135505;3;0;false;false;;;;;;
                                  -135508;3;1;false;false;127;0;85;;;
                                  -135511;1;0;false;false;;;;;;
                                  -135512;3;0;false;false;0;0;0;;;
                                  -135515;1;0;false;false;;;;;;
                                  -135516;1;0;false;false;0;0;0;;;
                                  -135517;1;0;false;false;;;;;;
                                  -135518;17;0;false;false;0;0;0;;;
                                  -135535;1;0;false;false;;;;;;
                                  -135536;1;0;false;false;0;0;0;;;
                                  -135537;1;0;false;false;;;;;;
                                  -135538;22;0;false;false;0;0;0;;;
                                  -135560;3;0;false;false;;;;;;
                                  -135563;3;1;false;false;127;0;85;;;
                                  -135566;1;0;false;false;;;;;;
                                  -135567;9;0;false;false;0;0;0;;;
                                  -135576;1;0;false;false;;;;;;
                                  -135577;1;0;false;false;0;0;0;;;
                                  -135578;1;0;false;false;;;;;;
                                  -135579;50;0;false;false;0;0;0;;;
                                  -135629;3;0;false;false;;;;;;
                                  -135632;3;1;false;false;127;0;85;;;
                                  -135635;1;0;false;false;;;;;;
                                  -135636;7;0;false;false;0;0;0;;;
                                  -135643;1;0;false;false;;;;;;
                                  -135644;1;0;false;false;0;0;0;;;
                                  -135645;1;0;false;false;;;;;;
                                  -135646;36;0;false;false;0;0;0;;;
                                  -135682;3;0;false;false;;;;;;
                                  -135685;6;0;false;false;0;0;0;;;
                                  -135691;1;0;false;false;;;;;;
                                  -135692;11;0;false;false;0;0;0;;;
                                  -135703;1;0;false;false;;;;;;
                                  -135704;1;0;false;false;0;0;0;;;
                                  -135705;1;0;false;false;;;;;;
                                  -135706;32;0;false;false;0;0;0;;;
                                  -135738;3;0;false;false;;;;;;
                                  -135741;3;1;false;false;127;0;85;;;
                                  -135744;1;0;false;false;;;;;;
                                  -135745;13;0;false;false;0;0;0;;;
                                  -135758;1;0;false;false;;;;;;
                                  -135759;1;0;false;false;0;0;0;;;
                                  -135760;1;0;false;false;;;;;;
                                  -135761;40;0;false;false;0;0;0;;;
                                  -135801;6;0;false;false;;;;;;
                                  -135807;3;1;false;false;127;0;85;;;
                                  -135810;1;0;false;false;;;;;;
                                  -135811;1;0;false;false;0;0;0;;;
                                  -135812;3;1;false;false;127;0;85;;;
                                  -135815;1;0;false;false;;;;;;
                                  -135816;1;0;false;false;0;0;0;;;
                                  -135817;1;0;false;false;;;;;;
                                  -135818;1;0;false;false;0;0;0;;;
                                  -135819;1;0;false;false;;;;;;
                                  -135820;10;0;false;false;0;0;0;;;
                                  -135830;1;0;false;false;;;;;;
                                  -135831;1;0;false;false;0;0;0;;;
                                  -135832;1;0;false;false;;;;;;
                                  -135833;2;0;false;false;0;0;0;;;
                                  -135835;1;0;false;false;;;;;;
                                  -135836;8;0;false;false;0;0;0;;;
                                  -135844;1;0;false;false;;;;;;
                                  -135845;4;0;false;false;0;0;0;;;
                                  -135849;1;0;false;false;;;;;;
                                  -135850;1;0;false;false;0;0;0;;;
                                  -135851;4;0;false;false;;;;;;
                                  -135855;43;0;false;false;0;0;0;;;
                                  -135898;1;0;false;false;;;;;;
                                  -135899;35;0;false;false;0;0;0;;;
                                  -135934;4;0;false;false;;;;;;
                                  -135938;2;1;false;false;127;0;85;;;
                                  -135940;1;0;false;false;;;;;;
                                  -135941;2;0;false;false;0;0;0;;;
                                  -135943;1;0;false;false;;;;;;
                                  -135944;1;0;false;false;0;0;0;;;
                                  -135945;1;0;false;false;;;;;;
                                  -135946;8;0;false;false;0;0;0;;;
                                  -135954;1;0;false;false;;;;;;
                                  -135955;1;0;false;false;0;0;0;;;
                                  -135956;5;0;false;false;;;;;;
                                  -135961;49;0;false;false;0;0;0;;;
                                  -136010;4;0;false;false;;;;;;
                                  -136014;1;0;false;false;0;0;0;;;
                                  -136015;3;0;false;false;;;;;;
                                  -136018;1;0;false;false;0;0;0;;;
                                  -136019;3;0;false;false;;;;;;
                                  -136022;2;1;false;false;127;0;85;;;
                                  -136024;1;0;false;false;;;;;;
                                  -136025;4;0;false;false;0;0;0;;;
                                  -136029;1;0;false;false;;;;;;
                                  -136030;1;0;false;false;0;0;0;;;
                                  -136031;1;0;false;false;;;;;;
                                  -136032;13;0;false;false;0;0;0;;;
                                  -136045;1;0;false;false;;;;;;
                                  -136046;1;0;false;false;0;0;0;;;
                                  -136047;1;0;false;false;;;;;;
                                  -136048;21;0;false;false;0;0;0;;;
                                  -136069;1;0;false;false;;;;;;
                                  -136070;1;0;false;false;0;0;0;;;
                                  -136071;4;0;false;false;;;;;;
                                  -136075;49;0;false;false;0;0;0;;;
                                  -136124;3;0;false;false;;;;;;
                                  -136127;1;0;false;false;0;0;0;;;
                                  -136128;3;0;false;false;;;;;;
                                  -136131;15;0;false;false;0;0;0;;;
                                  -136146;3;0;false;false;;;;;;
                                  -136149;6;1;false;false;127;0;85;;;
                                  -136155;1;0;false;false;;;;;;
                                  -136156;18;0;false;false;0;0;0;;;
                                  -136174;2;0;false;false;;;;;;
                                  -136176;1;0;false;false;0;0;0;;;
                                  -136177;2;0;false;false;;;;;;
                                  -136179;3;0;false;false;63;95;191;;;
                                  -136182;3;0;false;false;;;;;;
                                  -136185;1;0;false;false;63;95;191;;;
                                  -136186;1;0;false;false;;;;;;
                                  -136187;7;0;false;false;63;95;191;;;
                                  -136194;1;0;false;false;;;;;;
                                  -136195;3;0;false;false;63;95;191;;;
                                  -136198;1;0;false;false;;;;;;
                                  -136199;10;0;false;false;63;95;191;;;
                                  -136209;3;0;false;false;;;;;;
                                  -136212;1;0;false;false;63;95;191;;;
                                  -136213;1;0;false;false;;;;;;
                                  -136214;3;0;false;false;127;127;159;;;
                                  -136217;3;0;false;false;;;;;;
                                  -136220;1;0;false;false;63;95;191;;;
                                  -136221;1;0;false;false;;;;;;
                                  -136222;4;0;false;false;63;95;191;;;
                                  -136226;1;0;false;false;;;;;;
                                  -136227;10;0;false;false;63;95;191;;;
                                  -136237;1;0;false;false;;;;;;
                                  -136238;3;0;false;false;63;95;191;;;
                                  -136241;1;0;false;false;;;;;;
                                  -136242;9;0;false;false;63;95;191;;;
                                  -136251;1;0;false;false;;;;;;
                                  -136252;2;0;false;false;63;95;191;;;
                                  -136254;1;0;false;false;;;;;;
                                  -136255;5;0;false;false;63;95;191;;;
                                  -136260;1;0;false;false;;;;;;
                                  -136261;2;0;false;false;63;95;191;;;
                                  -136263;1;0;false;false;;;;;;
                                  -136264;5;0;false;false;63;95;191;;;
                                  -136269;1;0;false;false;;;;;;
                                  -136270;10;0;false;false;63;95;191;;;
                                  -136280;2;0;false;false;;;;;;
                                  -136282;2;0;false;false;63;95;191;;;
                                  -136284;1;0;false;false;;;;;;
                                  -136285;1;0;false;false;63;95;191;;;
                                  -136286;1;0;false;false;;;;;;
                                  -136287;4;0;false;false;63;95;191;;;
                                  -136291;3;0;false;false;;;;;;
                                  -136294;1;0;false;false;63;95;191;;;
                                  -136295;1;0;false;false;;;;;;
                                  -136296;6;0;false;false;63;95;191;;;
                                  -136302;1;0;false;false;;;;;;
                                  -136303;4;0;false;false;63;95;191;;;
                                  -136307;1;0;false;false;;;;;;
                                  -136308;8;0;false;false;63;95;191;;;
                                  -136316;1;0;false;false;;;;;;
                                  -136317;1;0;false;false;63;95;191;;;
                                  -136318;1;0;false;false;;;;;;
                                  -136319;11;0;false;false;63;95;191;;;
                                  -136330;1;0;false;false;;;;;;
                                  -136331;5;0;false;false;63;95;191;;;
                                  -136336;1;0;false;false;;;;;;
                                  -136337;3;0;false;false;63;95;191;;;
                                  -136340;1;0;false;false;;;;;;
                                  -136341;3;0;false;false;63;95;191;;;
                                  -136344;1;0;false;false;;;;;;
                                  -136345;5;0;false;false;63;95;191;;;
                                  -136350;1;0;false;false;;;;;;
                                  -136351;10;0;false;false;63;95;191;;;
                                  -136361;4;0;false;false;;;;;;
                                  -136365;1;0;false;false;63;95;191;;;
                                  -136366;1;0;false;false;;;;;;
                                  -136367;7;0;false;false;63;95;191;;;
                                  -136374;1;0;false;false;;;;;;
                                  -136375;4;0;false;false;63;95;191;;;
                                  -136379;1;0;false;false;;;;;;
                                  -136380;4;0;false;false;63;95;191;;;
                                  -136384;3;0;false;false;;;;;;
                                  -136387;1;0;false;false;63;95;191;;;
                                  -136388;1;0;false;false;;;;;;
                                  -136389;3;0;false;false;127;127;159;;;
                                  -136392;3;0;false;false;;;;;;
                                  -136395;1;0;false;false;63;95;191;;;
                                  -136396;3;0;false;false;;;;;;
                                  -136399;1;0;false;false;63;95;191;;;
                                  -136400;1;0;false;false;;;;;;
                                  -136401;8;1;false;false;127;159;191;;;
                                  -136409;5;0;false;false;63;95;191;;;
                                  -136414;1;0;false;false;;;;;;
                                  -136415;3;0;false;false;63;95;191;;;
                                  -136418;1;0;false;false;;;;;;
                                  -136419;3;0;false;false;63;95;191;;;
                                  -136422;1;0;false;false;;;;;;
                                  -136423;2;0;false;false;63;95;191;;;
                                  -136425;1;0;false;false;;;;;;
                                  -136426;3;0;false;false;63;95;191;;;
                                  -136429;1;0;false;false;;;;;;
                                  -136430;10;0;false;false;63;95;191;;;
                                  -136440;1;0;false;false;;;;;;
                                  -136441;1;0;false;false;63;95;191;;;
                                  -136442;1;0;false;false;;;;;;
                                  -136443;2;0;false;false;63;95;191;;;
                                  -136445;1;0;false;false;;;;;;
                                  -136446;3;0;false;false;63;95;191;;;
                                  -136449;1;0;false;false;;;;;;
                                  -136450;6;0;false;false;63;95;191;;;
                                  -136456;1;0;false;false;;;;;;
                                  -136457;2;0;false;false;63;95;191;;;
                                  -136459;1;0;false;false;;;;;;
                                  -136460;3;0;false;false;63;95;191;;;
                                  -136463;1;0;false;false;;;;;;
                                  -136464;5;0;false;false;63;95;191;;;
                                  -136469;4;0;false;false;;;;;;
                                  -136473;1;0;false;false;63;95;191;;;
                                  -136474;2;0;false;false;;;;;;
                                  -136476;8;0;false;false;63;95;191;;;
                                  -136484;1;0;false;false;;;;;;
                                  -136485;10;0;false;false;63;95;191;;;
                                  -136495;1;0;false;false;;;;;;
                                  -136496;1;0;false;false;63;95;191;;;
                                  -136497;1;0;false;false;;;;;;
                                  -136498;2;0;false;false;63;95;191;;;
                                  -136500;1;0;false;false;;;;;;
                                  -136501;3;0;false;false;63;95;191;;;
                                  -136504;1;0;false;false;;;;;;
                                  -136505;6;0;false;false;63;95;191;;;
                                  -136511;1;0;false;false;;;;;;
                                  -136512;5;0;false;false;63;95;191;;;
                                  -136517;1;0;false;false;;;;;;
                                  -136518;3;0;false;false;63;95;191;;;
                                  -136521;1;0;false;false;;;;;;
                                  -136522;4;0;false;false;63;95;191;;;
                                  -136526;1;0;false;false;;;;;;
                                  -136527;8;0;false;false;63;95;191;;;
                                  -136535;1;0;false;false;;;;;;
                                  -136536;10;0;false;false;63;95;191;;;
                                  -136546;3;0;false;false;;;;;;
                                  -136549;1;0;false;false;63;95;191;;;
                                  -136550;2;0;false;false;;;;;;
                                  -136552;3;0;false;false;63;95;191;;;
                                  -136555;1;0;false;false;;;;;;
                                  -136556;9;0;false;false;63;95;191;;;
                                  -136565;1;0;false;false;;;;;;
                                  -136566;6;0;false;false;63;95;191;;;
                                  -136572;1;0;false;false;;;;;;
                                  -136573;8;0;false;false;63;95;191;;;
                                  -136581;1;0;false;false;;;;;;
                                  -136582;3;0;false;false;63;95;191;;;
                                  -136585;1;0;false;false;;;;;;
                                  -136586;6;0;false;false;63;95;191;;;
                                  -136592;1;0;false;false;;;;;;
                                  -136593;6;0;false;false;63;95;191;;;
                                  -136599;1;0;false;false;;;;;;
                                  -136600;1;0;false;false;63;95;191;;;
                                  -136601;1;0;false;false;;;;;;
                                  -136602;4;0;false;false;63;95;191;;;
                                  -136606;1;0;false;false;;;;;;
                                  -136607;6;0;false;false;63;95;191;;;
                                  -136613;1;0;false;false;;;;;;
                                  -136614;6;0;false;false;63;95;191;;;
                                  -136620;1;0;false;false;;;;;;
                                  -136621;2;0;false;false;63;95;191;;;
                                  -136623;6;0;false;false;;;;;;
                                  -136629;1;0;false;false;63;95;191;;;
                                  -136630;2;0;false;false;;;;;;
                                  -136632;80;0;false;false;63;95;191;;;
                                  -136712;1;0;false;false;;;;;;
                                  -136713;1;0;false;false;63;95;191;;;
                                  -136714;2;0;false;false;;;;;;
                                  -136716;7;0;false;false;63;95;191;;;
                                  -136723;1;0;false;false;;;;;;
                                  -136724;7;0;false;false;63;95;191;;;
                                  -136731;1;0;false;false;;;;;;
                                  -136732;3;0;false;false;63;95;191;;;
                                  -136735;1;0;false;false;;;;;;
                                  -136736;11;0;false;false;63;95;191;;;
                                  -136747;1;0;false;false;;;;;;
                                  -136748;2;0;false;false;63;95;191;;;
                                  -136750;1;0;false;false;;;;;;
                                  -136751;3;0;false;false;63;95;191;;;
                                  -136754;1;0;false;false;;;;;;
                                  -136755;5;0;false;false;63;95;191;;;
                                  -136760;1;0;false;false;;;;;;
                                  -136761;3;0;false;false;63;95;191;;;
                                  -136764;1;0;false;false;;;;;;
                                  -136765;3;0;false;false;63;95;191;;;
                                  -136768;1;0;false;false;;;;;;
                                  -136769;2;0;false;false;63;95;191;;;
                                  -136771;1;0;false;false;;;;;;
                                  -136772;3;0;false;false;63;95;191;;;
                                  -136775;1;0;false;false;;;;;;
                                  -136776;9;0;false;false;63;95;191;;;
                                  -136785;4;0;false;false;;;;;;
                                  -136789;1;0;false;false;63;95;191;;;
                                  -136790;2;0;false;false;;;;;;
                                  -136792;6;0;false;false;63;95;191;;;
                                  -136798;1;0;false;false;;;;;;
                                  -136799;11;0;false;false;63;95;191;;;
                                  -136810;1;0;false;false;;;;;;
                                  -136811;2;0;false;false;63;95;191;;;
                                  -136813;1;0;false;false;;;;;;
                                  -136814;5;0;false;false;63;95;191;;;
                                  -136819;1;0;false;false;;;;;;
                                  -136820;2;0;false;false;63;95;191;;;
                                  -136822;1;0;false;false;;;;;;
                                  -136823;9;0;false;false;63;95;191;;;
                                  -136832;1;0;false;false;;;;;;
                                  -136833;7;0;false;false;63;95;191;;;
                                  -136840;1;0;false;false;;;;;;
                                  -136841;4;0;false;false;63;95;191;;;
                                  -136845;1;0;false;false;;;;;;
                                  -136846;3;0;false;false;63;95;191;;;
                                  -136849;1;0;false;false;;;;;;
                                  -136850;9;0;false;false;63;95;191;;;
                                  -136859;1;0;false;false;;;;;;
                                  -136860;2;0;false;false;63;95;191;;;
                                  -136862;1;0;false;false;;;;;;
                                  -136863;6;0;false;false;63;95;191;;;
                                  -136869;3;0;false;false;;;;;;
                                  -136872;1;0;false;false;63;95;191;;;
                                  -136873;1;0;false;false;;;;;;
                                  -136874;5;1;false;false;127;159;191;;;
                                  -136879;18;0;false;false;63;95;191;;;
                                  -136897;3;0;false;false;;;;;;
                                  -136900;1;0;false;false;63;95;191;;;
                                  -136901;1;0;false;false;;;;;;
                                  -136902;11;1;false;false;127;159;191;;;
                                  -136913;12;0;false;false;63;95;191;;;
                                  -136925;1;0;false;false;;;;;;
                                  -136926;4;0;false;false;127;127;159;;;
                                  -136930;3;0;false;false;;;;;;
                                  -136933;1;0;false;false;63;95;191;;;
                                  -136934;4;0;false;false;;;;;;
                                  -136938;4;0;false;false;127;127;159;;;
                                  -136942;21;0;false;false;63;95;191;;;
                                  -136963;1;0;false;false;;;;;;
                                  -136964;1;0;false;false;127;127;159;;;
                                  -136965;1;0;false;false;;;;;;
                                  -136966;2;0;false;false;63;95;191;;;
                                  -136968;1;0;false;false;;;;;;
                                  -136969;3;0;false;false;63;95;191;;;
                                  -136972;1;0;false;false;;;;;;
                                  -136973;8;0;false;false;63;95;191;;;
                                  -136981;1;0;false;false;;;;;;
                                  -136982;3;0;false;false;63;95;191;;;
                                  -136985;1;0;false;false;;;;;;
                                  -136986;4;0;false;false;63;95;191;;;
                                  -136990;1;0;false;false;;;;;;
                                  -136991;8;0;false;false;63;95;191;;;
                                  -136999;5;0;false;false;127;127;159;;;
                                  -137004;3;0;false;false;;;;;;
                                  -137007;1;0;false;false;63;95;191;;;
                                  -137008;4;0;false;false;;;;;;
                                  -137012;4;0;false;false;127;127;159;;;
                                  -137016;27;0;false;false;63;95;191;;;
                                  -137043;1;0;false;false;;;;;;
                                  -137044;1;0;false;false;127;127;159;;;
                                  -137045;1;0;false;false;;;;;;
                                  -137046;2;0;false;false;63;95;191;;;
                                  -137048;1;0;false;false;;;;;;
                                  -137049;3;0;false;false;63;95;191;;;
                                  -137052;1;0;false;false;;;;;;
                                  -137053;6;0;false;false;63;95;191;;;
                                  -137059;1;0;false;false;;;;;;
                                  -137060;4;0;false;false;63;95;191;;;
                                  -137064;1;0;false;false;;;;;;
                                  -137065;3;0;false;false;63;95;191;;;
                                  -137068;1;0;false;false;;;;;;
                                  -137069;6;0;false;false;63;95;191;;;
                                  -137075;1;0;false;false;;;;;;
                                  -137076;4;0;false;false;63;95;191;;;
                                  -137080;1;0;false;false;;;;;;
                                  -137081;7;0;false;false;63;95;191;;;
                                  -137088;1;0;false;false;;;;;;
                                  -137089;3;0;false;false;63;95;191;;;
                                  -137092;1;0;false;false;;;;;;
                                  -137093;8;0;false;false;63;95;191;;;
                                  -137101;5;0;false;false;127;127;159;;;
                                  -137106;3;0;false;false;;;;;;
                                  -137109;1;0;false;false;63;95;191;;;
                                  -137110;1;0;false;false;;;;;;
                                  -137111;5;0;false;false;127;127;159;;;
                                  -137116;3;0;false;false;;;;;;
                                  -137119;2;0;false;false;63;95;191;;;
                                  -137121;2;0;false;false;;;;;;
                                  -137123;6;1;false;false;127;0;85;;;
                                  -137129;1;0;false;false;;;;;;
                                  -137130;5;0;false;false;0;0;0;;;
                                  -137135;1;0;false;false;;;;;;
                                  -137136;14;0;false;false;0;0;0;;;
                                  -137150;1;0;false;false;;;;;;
                                  -137151;1;0;false;false;0;0;0;;;
                                  -137152;3;0;false;false;;;;;;
                                  -137155;14;0;false;false;0;0;0;;;
                                  -137169;3;0;false;false;;;;;;
                                  -137172;6;1;false;false;127;0;85;;;
                                  -137178;1;0;false;false;;;;;;
                                  -137179;3;1;false;false;127;0;85;;;
                                  -137182;1;0;false;false;;;;;;
                                  -137183;18;0;false;false;0;0;0;;;
                                  -137201;1;0;false;false;;;;;;
                                  -137202;13;0;false;false;0;0;0;;;
                                  -137215;2;0;false;false;;;;;;
                                  -137217;1;0;false;false;0;0;0;;;
                                  -137218;2;0;false;false;;;;;;
                                  -137220;3;0;false;false;63;95;191;;;
                                  -137223;3;0;false;false;;;;;;
                                  -137226;1;0;false;false;63;95;191;;;
                                  -137227;1;0;false;false;;;;;;
                                  -137228;7;0;false;false;63;95;191;;;
                                  -137235;1;0;false;false;;;;;;
                                  -137236;3;0;false;false;63;95;191;;;
                                  -137239;1;0;false;false;;;;;;
                                  -137240;10;0;false;false;63;95;191;;;
                                  -137250;3;0;false;false;;;;;;
                                  -137253;1;0;false;false;63;95;191;;;
                                  -137254;1;0;false;false;;;;;;
                                  -137255;3;0;false;false;127;127;159;;;
                                  -137258;3;0;false;false;;;;;;
                                  -137261;1;0;false;false;63;95;191;;;
                                  -137262;3;0;false;false;;;;;;
                                  -137265;1;0;false;false;63;95;191;;;
                                  -137266;1;0;false;false;;;;;;
                                  -137267;8;1;false;false;127;159;191;;;
                                  -137275;5;0;false;false;63;95;191;;;
                                  -137280;1;0;false;false;;;;;;
                                  -137281;3;0;false;false;63;95;191;;;
                                  -137284;1;0;false;false;;;;;;
                                  -137285;6;0;false;false;63;95;191;;;
                                  -137291;1;0;false;false;;;;;;
                                  -137292;2;0;false;false;63;95;191;;;
                                  -137294;1;0;false;false;;;;;;
                                  -137295;3;0;false;false;63;95;191;;;
                                  -137298;1;0;false;false;;;;;;
                                  -137299;10;0;false;false;63;95;191;;;
                                  -137309;1;0;false;false;;;;;;
                                  -137310;1;0;false;false;63;95;191;;;
                                  -137311;1;0;false;false;;;;;;
                                  -137312;2;0;false;false;63;95;191;;;
                                  -137314;1;0;false;false;;;;;;
                                  -137315;3;0;false;false;63;95;191;;;
                                  -137318;1;0;false;false;;;;;;
                                  -137319;6;0;false;false;63;95;191;;;
                                  -137325;1;0;false;false;;;;;;
                                  -137326;2;0;false;false;63;95;191;;;
                                  -137328;1;0;false;false;;;;;;
                                  -137329;3;0;false;false;63;95;191;;;
                                  -137332;4;0;false;false;;;;;;
                                  -137336;1;0;false;false;63;95;191;;;
                                  -137337;2;0;false;false;;;;;;
                                  -137339;5;0;false;false;63;95;191;;;
                                  -137344;1;0;false;false;;;;;;
                                  -137345;8;0;false;false;63;95;191;;;
                                  -137353;1;0;false;false;;;;;;
                                  -137354;10;0;false;false;63;95;191;;;
                                  -137364;1;0;false;false;;;;;;
                                  -137365;8;0;false;false;63;95;191;;;
                                  -137373;1;0;false;false;;;;;;
                                  -137374;2;0;false;false;63;95;191;;;
                                  -137376;1;0;false;false;;;;;;
                                  -137377;3;0;false;false;63;95;191;;;
                                  -137380;1;0;false;false;;;;;;
                                  -137381;5;0;false;false;63;95;191;;;
                                  -137386;1;0;false;false;;;;;;
                                  -137387;9;0;false;false;63;95;191;;;
                                  -137396;1;0;false;false;;;;;;
                                  -137397;2;0;false;false;63;95;191;;;
                                  -137399;1;0;false;false;;;;;;
                                  -137400;3;0;false;false;63;95;191;;;
                                  -137403;4;0;false;false;;;;;;
                                  -137407;1;0;false;false;63;95;191;;;
                                  -137408;2;0;false;false;;;;;;
                                  -137410;6;0;false;false;63;95;191;;;
                                  -137416;1;0;false;false;;;;;;
                                  -137417;8;0;false;false;63;95;191;;;
                                  -137425;1;0;false;false;;;;;;
                                  -137426;1;0;false;false;63;95;191;;;
                                  -137427;1;0;false;false;;;;;;
                                  -137428;2;0;false;false;63;95;191;;;
                                  -137430;1;0;false;false;;;;;;
                                  -137431;3;0;false;false;63;95;191;;;
                                  -137434;1;0;false;false;;;;;;
                                  -137435;6;0;false;false;63;95;191;;;
                                  -137441;1;0;false;false;;;;;;
                                  -137442;2;0;false;false;63;95;191;;;
                                  -137444;1;0;false;false;;;;;;
                                  -137445;3;0;false;false;63;95;191;;;
                                  -137448;1;0;false;false;;;;;;
                                  -137449;10;0;false;false;63;95;191;;;
                                  -137459;4;0;false;false;;;;;;
                                  -137463;1;0;false;false;63;95;191;;;
                                  -137464;2;0;false;false;;;;;;
                                  -137466;3;0;false;false;63;95;191;;;
                                  -137469;1;0;false;false;;;;;;
                                  -137470;9;0;false;false;63;95;191;;;
                                  -137479;1;0;false;false;;;;;;
                                  -137480;6;0;false;false;63;95;191;;;
                                  -137486;1;0;false;false;;;;;;
                                  -137487;8;0;false;false;63;95;191;;;
                                  -137495;1;0;false;false;;;;;;
                                  -137496;3;0;false;false;63;95;191;;;
                                  -137499;1;0;false;false;;;;;;
                                  -137500;6;0;false;false;63;95;191;;;
                                  -137506;1;0;false;false;;;;;;
                                  -137507;6;0;false;false;63;95;191;;;
                                  -137513;1;0;false;false;;;;;;
                                  -137514;6;0;false;false;63;95;191;;;
                                  -137520;1;0;false;false;;;;;;
                                  -137521;4;0;false;false;63;95;191;;;
                                  -137525;1;0;false;false;;;;;;
                                  -137526;6;0;false;false;63;95;191;;;
                                  -137532;1;0;false;false;;;;;;
                                  -137533;6;0;false;false;63;95;191;;;
                                  -137539;1;0;false;false;;;;;;
                                  -137540;2;0;false;false;63;95;191;;;
                                  -137542;6;0;false;false;;;;;;
                                  -137548;1;0;false;false;63;95;191;;;
                                  -137549;2;0;false;false;;;;;;
                                  -137551;10;0;false;false;63;95;191;;;
                                  -137561;2;0;false;false;;;;;;
                                  -137563;2;0;false;false;63;95;191;;;
                                  -137565;1;0;false;false;;;;;;
                                  -137566;9;0;false;false;63;95;191;;;
                                  -137575;1;0;false;false;;;;;;
                                  -137576;2;0;false;false;63;95;191;;;
                                  -137578;1;0;false;false;;;;;;
                                  -137579;1;0;false;false;63;95;191;;;
                                  -137580;1;0;false;false;;;;;;
                                  -137581;9;0;false;false;63;95;191;;;
                                  -137590;1;0;false;false;;;;;;
                                  -137591;2;0;false;false;63;95;191;;;
                                  -137593;1;0;false;false;;;;;;
                                  -137594;5;0;false;false;63;95;191;;;
                                  -137599;1;0;false;false;127;127;159;;;
                                  -137600;2;0;false;false;63;95;191;;;
                                  -137602;1;0;false;false;127;127;159;;;
                                  -137603;4;0;false;false;63;95;191;;;
                                  -137607;1;0;false;false;;;;;;
                                  -137608;6;0;false;false;63;95;191;;;
                                  -137614;1;0;false;false;;;;;;
                                  -137615;3;0;false;false;63;95;191;;;
                                  -137618;1;0;false;false;;;;;;
                                  -137619;4;0;false;false;63;95;191;;;
                                  -137623;1;0;false;false;127;127;159;;;
                                  -137624;2;0;false;false;63;95;191;;;
                                  -137626;1;0;false;false;127;127;159;;;
                                  -137627;5;0;false;false;63;95;191;;;
                                  -137632;4;0;false;false;;;;;;
                                  -137636;1;0;false;false;63;95;191;;;
                                  -137637;2;0;false;false;;;;;;
                                  -137639;7;0;false;false;63;95;191;;;
                                  -137646;1;0;false;false;;;;;;
                                  -137647;7;0;false;false;63;95;191;;;
                                  -137654;1;0;false;false;;;;;;
                                  -137655;3;0;false;false;63;95;191;;;
                                  -137658;1;0;false;false;;;;;;
                                  -137659;11;0;false;false;63;95;191;;;
                                  -137670;1;0;false;false;;;;;;
                                  -137671;2;0;false;false;63;95;191;;;
                                  -137673;1;0;false;false;;;;;;
                                  -137674;3;0;false;false;63;95;191;;;
                                  -137677;1;0;false;false;;;;;;
                                  -137678;5;0;false;false;63;95;191;;;
                                  -137683;1;0;false;false;;;;;;
                                  -137684;3;0;false;false;63;95;191;;;
                                  -137687;1;0;false;false;;;;;;
                                  -137688;3;0;false;false;63;95;191;;;
                                  -137691;1;0;false;false;;;;;;
                                  -137692;2;0;false;false;63;95;191;;;
                                  -137694;1;0;false;false;;;;;;
                                  -137695;3;0;false;false;63;95;191;;;
                                  -137698;1;0;false;false;;;;;;
                                  -137699;9;0;false;false;63;95;191;;;
                                  -137708;4;0;false;false;;;;;;
                                  -137712;1;0;false;false;63;95;191;;;
                                  -137713;2;0;false;false;;;;;;
                                  -137715;6;0;false;false;63;95;191;;;
                                  -137721;1;0;false;false;;;;;;
                                  -137722;11;0;false;false;63;95;191;;;
                                  -137733;1;0;false;false;;;;;;
                                  -137734;2;0;false;false;63;95;191;;;
                                  -137736;1;0;false;false;;;;;;
                                  -137737;5;0;false;false;63;95;191;;;
                                  -137742;1;0;false;false;;;;;;
                                  -137743;2;0;false;false;63;95;191;;;
                                  -137745;1;0;false;false;;;;;;
                                  -137746;9;0;false;false;63;95;191;;;
                                  -137755;1;0;false;false;;;;;;
                                  -137756;7;0;false;false;63;95;191;;;
                                  -137763;1;0;false;false;;;;;;
                                  -137764;4;0;false;false;63;95;191;;;
                                  -137768;1;0;false;false;;;;;;
                                  -137769;3;0;false;false;63;95;191;;;
                                  -137772;1;0;false;false;;;;;;
                                  -137773;9;0;false;false;63;95;191;;;
                                  -137782;1;0;false;false;;;;;;
                                  -137783;2;0;false;false;63;95;191;;;
                                  -137785;1;0;false;false;;;;;;
                                  -137786;6;0;false;false;63;95;191;;;
                                  -137792;3;0;false;false;;;;;;
                                  -137795;1;0;false;false;63;95;191;;;
                                  -137796;1;0;false;false;;;;;;
                                  -137797;11;1;false;false;127;159;191;;;
                                  -137808;12;0;false;false;63;95;191;;;
                                  -137820;1;0;false;false;;;;;;
                                  -137821;4;0;false;false;127;127;159;;;
                                  -137825;3;0;false;false;;;;;;
                                  -137828;1;0;false;false;63;95;191;;;
                                  -137829;4;0;false;false;;;;;;
                                  -137833;4;0;false;false;127;127;159;;;
                                  -137837;21;0;false;false;63;95;191;;;
                                  -137858;1;0;false;false;;;;;;
                                  -137859;1;0;false;false;127;127;159;;;
                                  -137860;1;0;false;false;;;;;;
                                  -137861;2;0;false;false;63;95;191;;;
                                  -137863;1;0;false;false;;;;;;
                                  -137864;3;0;false;false;63;95;191;;;
                                  -137867;1;0;false;false;;;;;;
                                  -137868;8;0;false;false;63;95;191;;;
                                  -137876;1;0;false;false;;;;;;
                                  -137877;3;0;false;false;63;95;191;;;
                                  -137880;1;0;false;false;;;;;;
                                  -137881;4;0;false;false;63;95;191;;;
                                  -137885;1;0;false;false;;;;;;
                                  -137886;8;0;false;false;63;95;191;;;
                                  -137894;5;0;false;false;127;127;159;;;
                                  -137899;3;0;false;false;;;;;;
                                  -137902;1;0;false;false;63;95;191;;;
                                  -137903;4;0;false;false;;;;;;
                                  -137907;4;0;false;false;127;127;159;;;
                                  -137911;27;0;false;false;63;95;191;;;
                                  -137938;1;0;false;false;;;;;;
                                  -137939;1;0;false;false;127;127;159;;;
                                  -137940;1;0;false;false;;;;;;
                                  -137941;2;0;false;false;63;95;191;;;
                                  -137943;1;0;false;false;;;;;;
                                  -137944;3;0;false;false;63;95;191;;;
                                  -137947;1;0;false;false;;;;;;
                                  -137948;6;0;false;false;63;95;191;;;
                                  -137954;1;0;false;false;;;;;;
                                  -137955;4;0;false;false;63;95;191;;;
                                  -137959;1;0;false;false;;;;;;
                                  -137960;3;0;false;false;63;95;191;;;
                                  -137963;1;0;false;false;;;;;;
                                  -137964;6;0;false;false;63;95;191;;;
                                  -137970;1;0;false;false;;;;;;
                                  -137971;4;0;false;false;63;95;191;;;
                                  -137975;1;0;false;false;;;;;;
                                  -137976;7;0;false;false;63;95;191;;;
                                  -137983;1;0;false;false;;;;;;
                                  -137984;3;0;false;false;63;95;191;;;
                                  -137987;1;0;false;false;;;;;;
                                  -137988;8;0;false;false;63;95;191;;;
                                  -137996;5;0;false;false;127;127;159;;;
                                  -138001;3;0;false;false;;;;;;
                                  -138004;1;0;false;false;63;95;191;;;
                                  -138005;1;0;false;false;;;;;;
                                  -138006;5;0;false;false;127;127;159;;;
                                  -138011;3;0;false;false;;;;;;
                                  -138014;2;0;false;false;63;95;191;;;
                                  -138016;2;0;false;false;;;;;;
                                  -138018;6;1;false;false;127;0;85;;;
                                  -138024;1;0;false;false;;;;;;
                                  -138025;5;0;false;false;0;0;0;;;
                                  -138030;1;0;false;false;;;;;;
                                  -138031;19;0;false;false;0;0;0;;;
                                  -138050;1;0;false;false;;;;;;
                                  -138051;1;0;false;false;0;0;0;;;
                                  -138052;3;0;false;false;;;;;;
                                  -138055;14;0;false;false;0;0;0;;;
                                  -138069;3;0;false;false;;;;;;
                                  -138072;6;1;false;false;127;0;85;;;
                                  -138078;1;0;false;false;;;;;;
                                  -138079;3;1;false;false;127;0;85;;;
                                  -138082;1;0;false;false;;;;;;
                                  -138083;18;0;false;false;0;0;0;;;
                                  -138101;1;0;false;false;;;;;;
                                  -138102;11;0;false;false;0;0;0;;;
                                  -138113;1;0;false;false;;;;;;
                                  -138114;1;0;false;false;0;0;0;;;
                                  -138115;1;0;false;false;;;;;;
                                  -138116;13;0;false;false;0;0;0;;;
                                  -138129;2;0;false;false;;;;;;
                                  -138131;1;0;false;false;0;0;0;;;
                                  -138132;2;0;false;false;;;;;;
                                  -138134;3;0;false;false;63;95;191;;;
                                  -138137;3;0;false;false;;;;;;
                                  -138140;1;0;false;false;63;95;191;;;
                                  -138141;1;0;false;false;;;;;;
                                  -138142;7;0;false;false;63;95;191;;;
                                  -138149;1;0;false;false;;;;;;
                                  -138150;3;0;false;false;63;95;191;;;
                                  -138153;1;0;false;false;;;;;;
                                  -138154;10;0;false;false;63;95;191;;;
                                  -138164;1;0;false;false;;;;;;
                                  -138165;9;0;false;false;63;95;191;;;
                                  -138174;1;0;false;false;;;;;;
                                  -138175;10;0;false;false;63;95;191;;;
                                  -138185;1;0;false;false;;;;;;
                                  -138186;6;0;false;false;63;95;191;;;
                                  -138192;3;0;false;false;;;;;;
                                  -138195;1;0;false;false;63;95;191;;;
                                  -138196;3;0;false;false;;;;;;
                                  -138199;1;0;false;false;63;95;191;;;
                                  -138200;1;0;false;false;;;;;;
                                  -138201;8;1;false;false;127;159;191;;;
                                  -138209;3;0;false;false;63;95;191;;;
                                  -138212;1;0;false;false;;;;;;
                                  -138213;9;0;false;false;63;95;191;;;
                                  -138222;1;0;false;false;;;;;;
                                  -138223;10;0;false;false;63;95;191;;;
                                  -138233;1;0;false;false;;;;;;
                                  -138234;5;0;false;false;63;95;191;;;
                                  -138239;3;0;false;false;;;;;;
                                  -138242;1;0;false;false;63;95;191;;;
                                  -138243;3;0;false;false;;;;;;
                                  -138246;1;0;false;false;63;95;191;;;
                                  -138247;1;0;false;false;;;;;;
                                  -138248;11;1;false;false;127;159;191;;;
                                  -138259;12;0;false;false;63;95;191;;;
                                  -138271;1;0;false;false;;;;;;
                                  -138272;4;0;false;false;127;127;159;;;
                                  -138276;3;0;false;false;;;;;;
                                  -138279;1;0;false;false;63;95;191;;;
                                  -138280;4;0;false;false;;;;;;
                                  -138284;4;0;false;false;127;127;159;;;
                                  -138288;21;0;false;false;63;95;191;;;
                                  -138309;1;0;false;false;;;;;;
                                  -138310;1;0;false;false;127;127;159;;;
                                  -138311;1;0;false;false;;;;;;
                                  -138312;2;0;false;false;63;95;191;;;
                                  -138314;1;0;false;false;;;;;;
                                  -138315;3;0;false;false;63;95;191;;;
                                  -138318;1;0;false;false;;;;;;
                                  -138319;8;0;false;false;63;95;191;;;
                                  -138327;1;0;false;false;;;;;;
                                  -138328;3;0;false;false;63;95;191;;;
                                  -138331;1;0;false;false;;;;;;
                                  -138332;4;0;false;false;63;95;191;;;
                                  -138336;1;0;false;false;;;;;;
                                  -138337;8;0;false;false;63;95;191;;;
                                  -138345;5;0;false;false;127;127;159;;;
                                  -138350;3;0;false;false;;;;;;
                                  -138353;1;0;false;false;63;95;191;;;
                                  -138354;4;0;false;false;;;;;;
                                  -138358;4;0;false;false;127;127;159;;;
                                  -138362;27;0;false;false;63;95;191;;;
                                  -138389;1;0;false;false;;;;;;
                                  -138390;1;0;false;false;127;127;159;;;
                                  -138391;1;0;false;false;;;;;;
                                  -138392;2;0;false;false;63;95;191;;;
                                  -138394;1;0;false;false;;;;;;
                                  -138395;3;0;false;false;63;95;191;;;
                                  -138398;1;0;false;false;;;;;;
                                  -138399;6;0;false;false;63;95;191;;;
                                  -138405;1;0;false;false;;;;;;
                                  -138406;4;0;false;false;63;95;191;;;
                                  -138410;1;0;false;false;;;;;;
                                  -138411;3;0;false;false;63;95;191;;;
                                  -138414;1;0;false;false;;;;;;
                                  -138415;6;0;false;false;63;95;191;;;
                                  -138421;1;0;false;false;;;;;;
                                  -138422;4;0;false;false;63;95;191;;;
                                  -138426;1;0;false;false;;;;;;
                                  -138427;7;0;false;false;63;95;191;;;
                                  -138434;1;0;false;false;;;;;;
                                  -138435;3;0;false;false;63;95;191;;;
                                  -138438;1;0;false;false;;;;;;
                                  -138439;8;0;false;false;63;95;191;;;
                                  -138447;5;0;false;false;127;127;159;;;
                                  -138452;3;0;false;false;;;;;;
                                  -138455;1;0;false;false;63;95;191;;;
                                  -138456;1;0;false;false;;;;;;
                                  -138457;5;0;false;false;127;127;159;;;
                                  -138462;3;0;false;false;;;;;;
                                  -138465;1;0;false;false;63;95;191;;;
                                  -138466;1;0;false;false;;;;;;
                                  -138467;7;1;false;false;127;159;191;;;
                                  -138474;3;0;false;false;63;95;191;;;
                                  -138477;3;0;false;false;;;;;;
                                  -138480;2;0;false;false;63;95;191;;;
                                  -138482;2;0;false;false;;;;;;
                                  -138484;6;1;false;false;127;0;85;;;
                                  -138490;1;0;false;false;;;;;;
                                  -138491;5;0;false;false;0;0;0;;;
                                  -138496;1;0;false;false;;;;;;
                                  -138497;24;0;false;false;0;0;0;;;
                                  -138521;1;0;false;false;;;;;;
                                  -138522;1;0;false;false;0;0;0;;;
                                  -138523;3;0;false;false;;;;;;
                                  -138526;14;0;false;false;0;0;0;;;
                                  -138540;3;0;false;false;;;;;;
                                  -138543;2;1;false;false;127;0;85;;;
                                  -138545;1;0;false;false;;;;;;
                                  -138546;20;0;false;false;0;0;0;;;
                                  -138566;1;0;false;false;;;;;;
                                  -138567;2;0;false;false;0;0;0;;;
                                  -138569;1;0;false;false;;;;;;
                                  -138570;4;1;false;false;127;0;85;;;
                                  -138574;1;0;false;false;0;0;0;;;
                                  -138575;1;0;false;false;;;;;;
                                  -138576;1;0;false;false;0;0;0;;;
                                  -138577;4;0;false;false;;;;;;
                                  -138581;6;1;false;false;127;0;85;;;
                                  -138587;1;0;false;false;;;;;;
                                  -138588;54;0;false;false;0;0;0;;;
                                  -138642;3;0;false;false;;;;;;
                                  -138645;1;0;false;false;0;0;0;;;
                                  -138646;3;0;false;false;;;;;;
                                  -138649;6;1;false;false;127;0;85;;;
                                  -138655;1;0;false;false;;;;;;
                                  -138656;20;0;false;false;0;0;0;;;
                                  -138676;2;0;false;false;;;;;;
                                  -138678;1;0;false;false;0;0;0;;;
                                  -138679;2;0;false;false;;;;;;
                                  -138681;3;0;false;false;63;95;191;;;
                                  -138684;3;0;false;false;;;;;;
                                  -138687;1;0;false;false;63;95;191;;;
                                  -138688;1;0;false;false;;;;;;
                                  -138689;4;0;false;false;63;95;191;;;
                                  -138693;1;0;false;false;;;;;;
                                  -138694;3;0;false;false;63;95;191;;;
                                  -138697;1;0;false;false;;;;;;
                                  -138698;6;0;false;false;63;95;191;;;
                                  -138704;1;0;false;false;;;;;;
                                  -138705;2;0;false;false;63;95;191;;;
                                  -138707;1;0;false;false;;;;;;
                                  -138708;8;0;false;false;63;95;191;;;
                                  -138716;1;0;false;false;;;;;;
                                  -138717;11;0;false;false;63;95;191;;;
                                  -138728;3;0;false;false;;;;;;
                                  -138731;1;0;false;false;63;95;191;;;
                                  -138732;1;0;false;false;;;;;;
                                  -138733;3;0;false;false;127;127;159;;;
                                  -138736;3;0;false;false;;;;;;
                                  -138739;1;0;false;false;63;95;191;;;
                                  -138740;3;0;false;false;;;;;;
                                  -138743;1;0;false;false;63;95;191;;;
                                  -138744;1;0;false;false;;;;;;
                                  -138745;8;1;false;false;127;159;191;;;
                                  -138753;3;0;false;false;63;95;191;;;
                                  -138756;1;0;false;false;;;;;;
                                  -138757;6;0;false;false;63;95;191;;;
                                  -138763;1;0;false;false;;;;;;
                                  -138764;2;0;false;false;63;95;191;;;
                                  -138766;1;0;false;false;;;;;;
                                  -138767;8;0;false;false;63;95;191;;;
                                  -138775;1;0;false;false;;;;;;
                                  -138776;11;0;false;false;63;95;191;;;
                                  -138787;3;0;false;false;;;;;;
                                  -138790;1;0;false;false;63;95;191;;;
                                  -138791;1;0;false;false;;;;;;
                                  -138792;11;1;false;false;127;159;191;;;
                                  -138803;12;0;false;false;63;95;191;;;
                                  -138815;1;0;false;false;;;;;;
                                  -138816;4;0;false;false;127;127;159;;;
                                  -138820;3;0;false;false;;;;;;
                                  -138823;1;0;false;false;63;95;191;;;
                                  -138824;4;0;false;false;;;;;;
                                  -138828;4;0;false;false;127;127;159;;;
                                  -138832;21;0;false;false;63;95;191;;;
                                  -138853;1;0;false;false;;;;;;
                                  -138854;1;0;false;false;127;127;159;;;
                                  -138855;1;0;false;false;;;;;;
                                  -138856;2;0;false;false;63;95;191;;;
                                  -138858;1;0;false;false;;;;;;
                                  -138859;3;0;false;false;63;95;191;;;
                                  -138862;1;0;false;false;;;;;;
                                  -138863;8;0;false;false;63;95;191;;;
                                  -138871;1;0;false;false;;;;;;
                                  -138872;3;0;false;false;63;95;191;;;
                                  -138875;1;0;false;false;;;;;;
                                  -138876;4;0;false;false;63;95;191;;;
                                  -138880;1;0;false;false;;;;;;
                                  -138881;8;0;false;false;63;95;191;;;
                                  -138889;5;0;false;false;127;127;159;;;
                                  -138894;3;0;false;false;;;;;;
                                  -138897;1;0;false;false;63;95;191;;;
                                  -138898;4;0;false;false;;;;;;
                                  -138902;4;0;false;false;127;127;159;;;
                                  -138906;27;0;false;false;63;95;191;;;
                                  -138933;1;0;false;false;;;;;;
                                  -138934;1;0;false;false;127;127;159;;;
                                  -138935;1;0;false;false;;;;;;
                                  -138936;2;0;false;false;63;95;191;;;
                                  -138938;1;0;false;false;;;;;;
                                  -138939;3;0;false;false;63;95;191;;;
                                  -138942;1;0;false;false;;;;;;
                                  -138943;6;0;false;false;63;95;191;;;
                                  -138949;1;0;false;false;;;;;;
                                  -138950;4;0;false;false;63;95;191;;;
                                  -138954;1;0;false;false;;;;;;
                                  -138955;3;0;false;false;63;95;191;;;
                                  -138958;1;0;false;false;;;;;;
                                  -138959;6;0;false;false;63;95;191;;;
                                  -138965;1;0;false;false;;;;;;
                                  -138966;4;0;false;false;63;95;191;;;
                                  -138970;1;0;false;false;;;;;;
                                  -138971;7;0;false;false;63;95;191;;;
                                  -138978;1;0;false;false;;;;;;
                                  -138979;3;0;false;false;63;95;191;;;
                                  -138982;1;0;false;false;;;;;;
                                  -138983;8;0;false;false;63;95;191;;;
                                  -138991;5;0;false;false;127;127;159;;;
                                  -138996;3;0;false;false;;;;;;
                                  -138999;1;0;false;false;63;95;191;;;
                                  -139000;1;0;false;false;;;;;;
                                  -139001;5;0;false;false;127;127;159;;;
                                  -139006;3;0;false;false;;;;;;
                                  -139009;2;0;false;false;63;95;191;;;
                                  -139011;2;0;false;false;;;;;;
                                  -139013;6;1;false;false;127;0;85;;;
                                  -139019;1;0;false;false;;;;;;
                                  -139020;3;1;false;false;127;0;85;;;
                                  -139023;1;0;false;false;;;;;;
                                  -139024;19;0;false;false;0;0;0;;;
                                  -139043;1;0;false;false;;;;;;
                                  -139044;1;0;false;false;0;0;0;;;
                                  -139045;3;0;false;false;;;;;;
                                  -139048;14;0;false;false;0;0;0;;;
                                  -139062;3;0;false;false;;;;;;
                                  -139065;6;1;false;false;127;0;85;;;
                                  -139071;1;0;false;false;;;;;;
                                  -139072;22;0;false;false;0;0;0;;;
                                  -139094;2;0;false;false;;;;;;
                                  -139096;1;0;false;false;0;0;0;;;
                                  -139097;2;0;false;false;;;;;;
                                  -139099;3;0;false;false;63;95;191;;;
                                  -139102;3;0;false;false;;;;;;
                                  -139105;1;0;false;false;63;95;191;;;
                                  -139106;1;0;false;false;;;;;;
                                  -139107;7;0;false;false;63;95;191;;;
                                  -139114;1;0;false;false;;;;;;
                                  -139115;3;0;false;false;63;95;191;;;
                                  -139118;1;0;false;false;;;;;;
                                  -139119;10;0;false;false;63;95;191;;;
                                  -139129;1;0;false;false;;;;;;
                                  -139130;9;0;false;false;63;95;191;;;
                                  -139139;1;0;false;false;;;;;;
                                  -139140;10;0;false;false;63;95;191;;;
                                  -139150;1;0;false;false;;;;;;
                                  -139151;6;0;false;false;63;95;191;;;
                                  -139157;3;0;false;false;;;;;;
                                  -139160;1;0;false;false;63;95;191;;;
                                  -139161;3;0;false;false;;;;;;
                                  -139164;1;0;false;false;63;95;191;;;
                                  -139165;1;0;false;false;;;;;;
                                  -139166;8;1;false;false;127;159;191;;;
                                  -139174;3;0;false;false;63;95;191;;;
                                  -139177;1;0;false;false;;;;;;
                                  -139178;9;0;false;false;63;95;191;;;
                                  -139187;1;0;false;false;;;;;;
                                  -139188;10;0;false;false;63;95;191;;;
                                  -139198;1;0;false;false;;;;;;
                                  -139199;5;0;false;false;63;95;191;;;
                                  -139204;3;0;false;false;;;;;;
                                  -139207;1;0;false;false;63;95;191;;;
                                  -139208;3;0;false;false;;;;;;
                                  -139211;1;0;false;false;63;95;191;;;
                                  -139212;1;0;false;false;;;;;;
                                  -139213;11;1;false;false;127;159;191;;;
                                  -139224;12;0;false;false;63;95;191;;;
                                  -139236;1;0;false;false;;;;;;
                                  -139237;4;0;false;false;127;127;159;;;
                                  -139241;3;0;false;false;;;;;;
                                  -139244;1;0;false;false;63;95;191;;;
                                  -139245;4;0;false;false;;;;;;
                                  -139249;4;0;false;false;127;127;159;;;
                                  -139253;21;0;false;false;63;95;191;;;
                                  -139274;1;0;false;false;;;;;;
                                  -139275;1;0;false;false;127;127;159;;;
                                  -139276;1;0;false;false;;;;;;
                                  -139277;2;0;false;false;63;95;191;;;
                                  -139279;1;0;false;false;;;;;;
                                  -139280;3;0;false;false;63;95;191;;;
                                  -139283;1;0;false;false;;;;;;
                                  -139284;8;0;false;false;63;95;191;;;
                                  -139292;1;0;false;false;;;;;;
                                  -139293;3;0;false;false;63;95;191;;;
                                  -139296;1;0;false;false;;;;;;
                                  -139297;4;0;false;false;63;95;191;;;
                                  -139301;1;0;false;false;;;;;;
                                  -139302;8;0;false;false;63;95;191;;;
                                  -139310;5;0;false;false;127;127;159;;;
                                  -139315;3;0;false;false;;;;;;
                                  -139318;1;0;false;false;63;95;191;;;
                                  -139319;4;0;false;false;;;;;;
                                  -139323;4;0;false;false;127;127;159;;;
                                  -139327;27;0;false;false;63;95;191;;;
                                  -139354;1;0;false;false;;;;;;
                                  -139355;1;0;false;false;127;127;159;;;
                                  -139356;1;0;false;false;;;;;;
                                  -139357;2;0;false;false;63;95;191;;;
                                  -139359;1;0;false;false;;;;;;
                                  -139360;3;0;false;false;63;95;191;;;
                                  -139363;1;0;false;false;;;;;;
                                  -139364;6;0;false;false;63;95;191;;;
                                  -139370;1;0;false;false;;;;;;
                                  -139371;4;0;false;false;63;95;191;;;
                                  -139375;1;0;false;false;;;;;;
                                  -139376;3;0;false;false;63;95;191;;;
                                  -139379;1;0;false;false;;;;;;
                                  -139380;6;0;false;false;63;95;191;;;
                                  -139386;1;0;false;false;;;;;;
                                  -139387;4;0;false;false;63;95;191;;;
                                  -139391;1;0;false;false;;;;;;
                                  -139392;7;0;false;false;63;95;191;;;
                                  -139399;1;0;false;false;;;;;;
                                  -139400;3;0;false;false;63;95;191;;;
                                  -139403;1;0;false;false;;;;;;
                                  -139404;8;0;false;false;63;95;191;;;
                                  -139412;5;0;false;false;127;127;159;;;
                                  -139417;3;0;false;false;;;;;;
                                  -139420;1;0;false;false;63;95;191;;;
                                  -139421;1;0;false;false;;;;;;
                                  -139422;5;0;false;false;127;127;159;;;
                                  -139427;3;0;false;false;;;;;;
                                  -139430;1;0;false;false;63;95;191;;;
                                  -139431;1;0;false;false;;;;;;
                                  -139432;7;1;false;false;127;159;191;;;
                                  -139439;3;0;false;false;63;95;191;;;
                                  -139442;3;0;false;false;;;;;;
                                  -139445;2;0;false;false;63;95;191;;;
                                  -139447;2;0;false;false;;;;;;
                                  -139449;6;1;false;false;127;0;85;;;
                                  -139455;1;0;false;false;;;;;;
                                  -139456;5;0;false;false;0;0;0;;;
                                  -139461;1;0;false;false;;;;;;
                                  -139462;24;0;false;false;0;0;0;;;
                                  -139486;1;0;false;false;;;;;;
                                  -139487;1;0;false;false;0;0;0;;;
                                  -139488;3;0;false;false;;;;;;
                                  -139491;14;0;false;false;0;0;0;;;
                                  -139505;3;0;false;false;;;;;;
                                  -139508;2;1;false;false;127;0;85;;;
                                  -139510;1;0;false;false;;;;;;
                                  -139511;20;0;false;false;0;0;0;;;
                                  -139531;1;0;false;false;;;;;;
                                  -139532;2;0;false;false;0;0;0;;;
                                  -139534;1;0;false;false;;;;;;
                                  -139535;4;1;false;false;127;0;85;;;
                                  -139539;1;0;false;false;0;0;0;;;
                                  -139540;1;0;false;false;;;;;;
                                  -139541;1;0;false;false;0;0;0;;;
                                  -139542;4;0;false;false;;;;;;
                                  -139546;6;1;false;false;127;0;85;;;
                                  -139552;1;0;false;false;;;;;;
                                  -139553;59;0;false;false;0;0;0;;;
                                  -139612;3;0;false;false;;;;;;
                                  -139615;1;0;false;false;0;0;0;;;
                                  -139616;3;0;false;false;;;;;;
                                  -139619;6;1;false;false;127;0;85;;;
                                  -139625;1;0;false;false;;;;;;
                                  -139626;20;0;false;false;0;0;0;;;
                                  -139646;2;0;false;false;;;;;;
                                  -139648;1;0;false;false;0;0;0;;;
                                  -139649;2;0;false;false;;;;;;
                                  -139651;3;0;false;false;63;95;191;;;
                                  -139654;3;0;false;false;;;;;;
                                  -139657;1;0;false;false;63;95;191;;;
                                  -139658;1;0;false;false;;;;;;
                                  -139659;7;0;false;false;63;95;191;;;
                                  -139666;1;0;false;false;;;;;;
                                  -139667;3;0;false;false;63;95;191;;;
                                  -139670;1;0;false;false;;;;;;
                                  -139671;8;0;false;false;63;95;191;;;
                                  -139679;1;0;false;false;;;;;;
                                  -139680;5;0;false;false;63;95;191;;;
                                  -139685;3;0;false;false;;;;;;
                                  -139688;1;0;false;false;63;95;191;;;
                                  -139689;1;0;false;false;;;;;;
                                  -139690;3;0;false;false;127;127;159;;;
                                  -139693;3;0;false;false;;;;;;
                                  -139696;1;0;false;false;63;95;191;;;
                                  -139697;3;0;false;false;;;;;;
                                  -139700;1;0;false;false;63;95;191;;;
                                  -139701;1;0;false;false;;;;;;
                                  -139702;8;1;false;false;127;159;191;;;
                                  -139710;8;0;false;false;63;95;191;;;
                                  -139718;1;0;false;false;;;;;;
                                  -139719;5;0;false;false;63;95;191;;;
                                  -139724;1;0;false;false;;;;;;
                                  -139725;2;0;false;false;63;95;191;;;
                                  -139727;1;0;false;false;;;;;;
                                  -139728;2;0;false;false;63;95;191;;;
                                  -139730;1;0;false;false;;;;;;
                                  -139731;5;0;false;false;63;95;191;;;
                                  -139736;1;0;false;false;;;;;;
                                  -139737;6;0;false;false;63;95;191;;;
                                  -139743;1;0;false;false;;;;;;
                                  -139744;2;0;false;false;63;95;191;;;
                                  -139746;1;0;false;false;;;;;;
                                  -139747;5;0;false;false;63;95;191;;;
                                  -139752;1;0;false;false;;;;;;
                                  -139753;2;0;false;false;63;95;191;;;
                                  -139755;1;0;false;false;;;;;;
                                  -139756;2;0;false;false;63;95;191;;;
                                  -139758;1;0;false;false;;;;;;
                                  -139759;10;0;false;false;63;95;191;;;
                                  -139769;3;0;false;false;;;;;;
                                  -139772;1;0;false;false;63;95;191;;;
                                  -139773;1;0;false;false;;;;;;
                                  -139774;11;1;false;false;127;159;191;;;
                                  -139785;12;0;false;false;63;95;191;;;
                                  -139797;1;0;false;false;;;;;;
                                  -139798;4;0;false;false;127;127;159;;;
                                  -139802;3;0;false;false;;;;;;
                                  -139805;1;0;false;false;63;95;191;;;
                                  -139806;4;0;false;false;;;;;;
                                  -139810;4;0;false;false;127;127;159;;;
                                  -139814;21;0;false;false;63;95;191;;;
                                  -139835;1;0;false;false;;;;;;
                                  -139836;1;0;false;false;127;127;159;;;
                                  -139837;1;0;false;false;;;;;;
                                  -139838;2;0;false;false;63;95;191;;;
                                  -139840;1;0;false;false;;;;;;
                                  -139841;3;0;false;false;63;95;191;;;
                                  -139844;1;0;false;false;;;;;;
                                  -139845;8;0;false;false;63;95;191;;;
                                  -139853;1;0;false;false;;;;;;
                                  -139854;3;0;false;false;63;95;191;;;
                                  -139857;1;0;false;false;;;;;;
                                  -139858;4;0;false;false;63;95;191;;;
                                  -139862;1;0;false;false;;;;;;
                                  -139863;8;0;false;false;63;95;191;;;
                                  -139871;5;0;false;false;127;127;159;;;
                                  -139876;3;0;false;false;;;;;;
                                  -139879;1;0;false;false;63;95;191;;;
                                  -139880;4;0;false;false;;;;;;
                                  -139884;4;0;false;false;127;127;159;;;
                                  -139888;27;0;false;false;63;95;191;;;
                                  -139915;1;0;false;false;;;;;;
                                  -139916;1;0;false;false;127;127;159;;;
                                  -139917;1;0;false;false;;;;;;
                                  -139918;2;0;false;false;63;95;191;;;
                                  -139920;1;0;false;false;;;;;;
                                  -139921;3;0;false;false;63;95;191;;;
                                  -139924;1;0;false;false;;;;;;
                                  -139925;6;0;false;false;63;95;191;;;
                                  -139931;1;0;false;false;;;;;;
                                  -139932;4;0;false;false;63;95;191;;;
                                  -139936;1;0;false;false;;;;;;
                                  -139937;3;0;false;false;63;95;191;;;
                                  -139940;1;0;false;false;;;;;;
                                  -139941;6;0;false;false;63;95;191;;;
                                  -139947;1;0;false;false;;;;;;
                                  -139948;4;0;false;false;63;95;191;;;
                                  -139952;1;0;false;false;;;;;;
                                  -139953;7;0;false;false;63;95;191;;;
                                  -139960;1;0;false;false;;;;;;
                                  -139961;3;0;false;false;63;95;191;;;
                                  -139964;1;0;false;false;;;;;;
                                  -139965;8;0;false;false;63;95;191;;;
                                  -139973;5;0;false;false;127;127;159;;;
                                  -139978;3;0;false;false;;;;;;
                                  -139981;1;0;false;false;63;95;191;;;
                                  -139982;1;0;false;false;;;;;;
                                  -139983;5;0;false;false;127;127;159;;;
                                  -139988;3;0;false;false;;;;;;
                                  -139991;2;0;false;false;63;95;191;;;
                                  -139993;2;0;false;false;;;;;;
                                  -139995;6;1;false;false;127;0;85;;;
                                  -140001;1;0;false;false;;;;;;
                                  -140002;6;0;false;false;0;0;0;;;
                                  -140008;1;0;false;false;;;;;;
                                  -140009;18;0;false;false;0;0;0;;;
                                  -140027;1;0;false;false;;;;;;
                                  -140028;1;0;false;false;0;0;0;;;
                                  -140029;3;0;false;false;;;;;;
                                  -140032;14;0;false;false;0;0;0;;;
                                  -140046;3;0;false;false;;;;;;
                                  -140049;6;1;false;false;127;0;85;;;
                                  -140055;1;0;false;false;;;;;;
                                  -140056;33;0;false;false;0;0;0;;;
                                  -140089;1;0;false;false;;;;;;
                                  -140090;11;0;false;false;0;0;0;;;
                                  -140101;1;0;false;false;;;;;;
                                  -140102;1;0;false;false;0;0;0;;;
                                  -140103;1;0;false;false;;;;;;
                                  -140104;13;0;false;false;0;0;0;;;
                                  -140117;2;0;false;false;;;;;;
                                  -140119;1;0;false;false;0;0;0;;;
                                  -140120;4;0;false;false;;;;;;
                                  -140124;6;1;false;false;127;0;85;;;
                                  -140130;1;0;false;false;;;;;;
                                  -140131;3;1;false;false;127;0;85;;;
                                  -140134;1;0;false;false;;;;;;
                                  -140135;10;0;false;false;0;0;0;;;
                                  -140145;1;0;false;false;;;;;;
                                  -140146;1;0;false;false;0;0;0;;;
                                  -140147;3;0;false;false;;;;;;
                                  -140150;3;1;false;false;127;0;85;;;
                                  -140153;1;0;false;false;;;;;;
                                  -140154;5;0;false;false;0;0;0;;;
                                  -140159;1;0;false;false;;;;;;
                                  -140160;1;0;false;false;0;0;0;;;
                                  -140161;1;0;false;false;;;;;;
                                  -140162;5;1;false;false;127;0;85;;;
                                  -140167;12;0;false;false;0;0;0;;;
                                  -140179;3;0;false;false;;;;;;
                                  -140182;5;0;false;false;0;0;0;;;
                                  -140187;1;0;false;false;;;;;;
                                  -140188;2;0;false;false;0;0;0;;;
                                  -140190;1;0;false;false;;;;;;
                                  -140191;19;0;false;false;0;0;0;;;
                                  -140210;1;0;false;false;;;;;;
                                  -140211;1;0;false;false;0;0;0;;;
                                  -140212;1;0;false;false;;;;;;
                                  -140213;17;0;false;false;0;0;0;;;
                                  -140230;1;0;false;false;;;;;;
                                  -140231;1;0;false;false;0;0;0;;;
                                  -140232;1;0;false;false;;;;;;
                                  -140233;14;0;false;false;0;0;0;;;
                                  -140247;3;0;false;false;;;;;;
                                  -140250;2;1;false;false;127;0;85;;;
                                  -140252;1;0;false;false;;;;;;
                                  -140253;14;0;false;false;0;0;0;;;
                                  -140267;1;0;false;false;;;;;;
                                  -140268;1;0;false;false;0;0;0;;;
                                  -140269;4;0;false;false;;;;;;
                                  -140273;5;0;false;false;0;0;0;;;
                                  -140278;1;0;false;false;;;;;;
                                  -140279;2;0;false;false;0;0;0;;;
                                  -140281;1;0;false;false;;;;;;
                                  -140282;17;0;false;false;0;0;0;;;
                                  -140299;1;0;false;false;;;;;;
                                  -140300;1;0;false;false;0;0;0;;;
                                  -140301;1;0;false;false;;;;;;
                                  -140302;13;0;false;false;0;0;0;;;
                                  -140315;3;0;false;false;;;;;;
                                  -140318;1;0;false;false;0;0;0;;;
                                  -140319;1;0;false;false;;;;;;
                                  -140320;4;1;false;false;127;0;85;;;
                                  -140324;1;0;false;false;;;;;;
                                  -140325;1;0;false;false;0;0;0;;;
                                  -140326;4;0;false;false;;;;;;
                                  -140330;5;0;false;false;0;0;0;;;
                                  -140335;1;0;false;false;;;;;;
                                  -140336;2;0;false;false;0;0;0;;;
                                  -140338;1;0;false;false;;;;;;
                                  -140339;18;0;false;false;0;0;0;;;
                                  -140357;3;0;false;false;;;;;;
                                  -140360;1;0;false;false;0;0;0;;;
                                  -140361;3;0;false;false;;;;;;
                                  -140364;6;1;false;false;127;0;85;;;
                                  -140370;1;0;false;false;;;;;;
                                  -140371;6;0;false;false;0;0;0;;;
                                  -140377;2;0;false;false;;;;;;
                                  -140379;1;0;false;false;0;0;0;;;
                                  -140380;4;0;false;false;;;;;;
                                  -140384;3;0;false;false;63;95;191;;;
                                  -140387;3;0;false;false;;;;;;
                                  -140390;1;0;false;false;63;95;191;;;
                                  -140391;1;0;false;false;;;;;;
                                  -140392;7;0;false;false;63;95;191;;;
                                  -140399;1;0;false;false;;;;;;
                                  -140400;3;0;false;false;63;95;191;;;
                                  -140403;1;0;false;false;;;;;;
                                  -140404;4;0;false;false;63;95;191;;;
                                  -140408;1;0;false;false;;;;;;
                                  -140409;8;0;false;false;63;95;191;;;
                                  -140417;1;0;false;false;;;;;;
                                  -140418;4;0;false;false;63;95;191;;;
                                  -140422;1;0;false;false;;;;;;
                                  -140423;6;0;false;false;63;95;191;;;
                                  -140429;1;0;false;false;;;;;;
                                  -140430;2;0;false;false;63;95;191;;;
                                  -140432;1;0;false;false;;;;;;
                                  -140433;7;0;false;false;63;95;191;;;
                                  -140440;1;0;false;false;;;;;;
                                  -140441;2;0;false;false;63;95;191;;;
                                  -140443;1;0;false;false;;;;;;
                                  -140444;2;0;false;false;63;95;191;;;
                                  -140446;1;0;false;false;;;;;;
                                  -140447;4;0;false;false;63;95;191;;;
                                  -140451;4;0;false;false;;;;;;
                                  -140455;1;0;false;false;63;95;191;;;
                                  -140456;1;0;false;false;;;;;;
                                  -140457;3;0;false;false;63;95;191;;;
                                  -140460;1;0;false;false;;;;;;
                                  -140461;1;0;false;false;63;95;191;;;
                                  -140462;1;0;false;false;;;;;;
                                  -140463;9;0;false;false;63;95;191;;;
                                  -140472;1;0;false;false;;;;;;
                                  -140473;9;0;false;false;63;95;191;;;
                                  -140482;1;0;false;false;;;;;;
                                  -140483;4;0;false;false;63;95;191;;;
                                  -140487;1;0;false;false;;;;;;
                                  -140488;3;0;false;false;63;95;191;;;
                                  -140491;1;0;false;false;;;;;;
                                  -140492;11;0;false;false;63;95;191;;;
                                  -140503;1;0;false;false;;;;;;
                                  -140504;5;0;false;false;63;95;191;;;
                                  -140509;3;0;false;false;;;;;;
                                  -140512;1;0;false;false;63;95;191;;;
                                  -140513;1;0;false;false;;;;;;
                                  -140514;3;0;false;false;127;127;159;;;
                                  -140517;3;0;false;false;;;;;;
                                  -140520;1;0;false;false;63;95;191;;;
                                  -140521;3;0;false;false;;;;;;
                                  -140524;1;0;false;false;63;95;191;;;
                                  -140525;1;0;false;false;;;;;;
                                  -140526;7;1;false;false;127;159;191;;;
                                  -140533;10;0;false;false;63;95;191;;;
                                  -140543;1;0;false;false;;;;;;
                                  -140544;6;0;false;false;63;95;191;;;
                                  -140550;1;0;false;false;;;;;;
                                  -140551;2;0;false;false;63;95;191;;;
                                  -140553;1;0;false;false;;;;;;
                                  -140554;3;0;false;false;63;95;191;;;
                                  -140557;1;0;false;false;;;;;;
                                  -140558;5;0;false;false;63;95;191;;;
                                  -140563;1;0;false;false;;;;;;
                                  -140564;9;0;false;false;63;95;191;;;
                                  -140573;1;0;false;false;;;;;;
                                  -140574;2;0;false;false;63;95;191;;;
                                  -140576;1;0;false;false;;;;;;
                                  -140577;3;0;false;false;63;95;191;;;
                                  -140580;1;0;false;false;;;;;;
                                  -140581;5;0;false;false;63;95;191;;;
                                  -140586;4;0;false;false;;;;;;
                                  -140590;1;0;false;false;63;95;191;;;
                                  -140591;2;0;false;false;;;;;;
                                  -140593;1;0;false;false;63;95;191;;;
                                  -140594;1;0;false;false;;;;;;
                                  -140595;5;0;false;false;63;95;191;;;
                                  -140600;1;0;false;false;;;;;;
                                  -140601;4;0;false;false;63;95;191;;;
                                  -140605;1;0;false;false;;;;;;
                                  -140606;3;0;false;false;63;95;191;;;
                                  -140609;1;0;false;false;;;;;;
                                  -140610;9;0;false;false;63;95;191;;;
                                  -140619;1;0;false;false;;;;;;
                                  -140620;2;0;false;false;63;95;191;;;
                                  -140622;1;0;false;false;;;;;;
                                  -140623;3;0;false;false;63;95;191;;;
                                  -140626;1;0;false;false;;;;;;
                                  -140627;9;0;false;false;63;95;191;;;
                                  -140636;3;0;false;false;;;;;;
                                  -140639;1;0;false;false;63;95;191;;;
                                  -140640;1;0;false;false;;;;;;
                                  -140641;7;1;false;false;127;159;191;;;
                                  -140648;4;0;false;false;63;95;191;;;
                                  -140652;1;0;false;false;;;;;;
                                  -140653;4;0;false;false;63;95;191;;;
                                  -140657;1;0;false;false;;;;;;
                                  -140658;2;0;false;false;63;95;191;;;
                                  -140660;1;0;false;false;;;;;;
                                  -140661;3;0;false;false;63;95;191;;;
                                  -140664;1;0;false;false;;;;;;
                                  -140665;4;0;false;false;63;95;191;;;
                                  -140669;1;0;false;false;;;;;;
                                  -140670;2;0;false;false;63;95;191;;;
                                  -140672;1;0;false;false;;;;;;
                                  -140673;7;0;false;false;63;95;191;;;
                                  -140680;1;0;false;false;;;;;;
                                  -140681;4;0;false;false;63;95;191;;;
                                  -140685;1;0;false;false;;;;;;
                                  -140686;8;0;false;false;63;95;191;;;
                                  -140694;1;0;false;false;;;;;;
                                  -140695;3;0;false;false;63;95;191;;;
                                  -140698;3;0;false;false;;;;;;
                                  -140701;1;0;false;false;63;95;191;;;
                                  -140702;1;0;false;false;;;;;;
                                  -140703;8;1;false;false;127;159;191;;;
                                  -140711;4;0;false;false;63;95;191;;;
                                  -140715;1;0;false;false;;;;;;
                                  -140716;8;0;false;false;63;95;191;;;
                                  -140724;1;0;false;false;;;;;;
                                  -140725;4;0;false;false;63;95;191;;;
                                  -140729;1;0;false;false;;;;;;
                                  -140730;6;0;false;false;63;95;191;;;
                                  -140736;1;0;false;false;;;;;;
                                  -140737;2;0;false;false;63;95;191;;;
                                  -140739;1;0;false;false;;;;;;
                                  -140740;7;0;false;false;63;95;191;;;
                                  -140747;1;0;false;false;;;;;;
                                  -140748;2;0;false;false;63;95;191;;;
                                  -140750;1;0;false;false;;;;;;
                                  -140751;2;0;false;false;63;95;191;;;
                                  -140753;1;0;false;false;;;;;;
                                  -140754;4;0;false;false;63;95;191;;;
                                  -140758;1;0;false;false;;;;;;
                                  -140759;3;0;false;false;63;95;191;;;
                                  -140762;1;0;false;false;;;;;;
                                  -140763;1;0;false;false;63;95;191;;;
                                  -140764;3;0;false;false;;;;;;
                                  -140767;1;0;false;false;63;95;191;;;
                                  -140768;2;0;false;false;;;;;;
                                  -140770;9;0;false;false;63;95;191;;;
                                  -140779;1;0;false;false;;;;;;
                                  -140780;9;0;false;false;63;95;191;;;
                                  -140789;1;0;false;false;;;;;;
                                  -140790;4;0;false;false;63;95;191;;;
                                  -140794;1;0;false;false;;;;;;
                                  -140795;3;0;false;false;63;95;191;;;
                                  -140798;1;0;false;false;;;;;;
                                  -140799;11;0;false;false;63;95;191;;;
                                  -140810;1;0;false;false;;;;;;
                                  -140811;5;0;false;false;63;95;191;;;
                                  -140816;1;0;false;false;;;;;;
                                  -140817;4;0;false;false;63;95;191;;;
                                  -140821;1;0;false;false;;;;;;
                                  -140822;3;0;false;false;63;95;191;;;
                                  -140825;1;0;false;false;;;;;;
                                  -140826;5;0;false;false;63;95;191;;;
                                  -140831;4;0;false;false;;;;;;
                                  -140835;1;0;false;false;63;95;191;;;
                                  -140836;2;0;false;false;;;;;;
                                  -140838;5;0;false;false;63;95;191;;;
                                  -140843;1;0;false;false;;;;;;
                                  -140844;2;0;false;false;63;95;191;;;
                                  -140846;1;0;false;false;;;;;;
                                  -140847;1;0;false;false;63;95;191;;;
                                  -140848;1;0;false;false;;;;;;
                                  -140849;7;0;false;false;63;95;191;;;
                                  -140856;1;0;false;false;;;;;;
                                  -140857;2;0;false;false;63;95;191;;;
                                  -140859;1;0;false;false;;;;;;
                                  -140860;10;0;false;false;63;95;191;;;
                                  -140870;1;0;false;false;;;;;;
                                  -140871;8;0;false;false;63;95;191;;;
                                  -140879;1;0;false;false;;;;;;
                                  -140880;2;0;false;false;63;95;191;;;
                                  -140882;1;0;false;false;;;;;;
                                  -140883;3;0;false;false;63;95;191;;;
                                  -140886;1;0;false;false;;;;;;
                                  -140887;5;0;false;false;63;95;191;;;
                                  -140892;1;0;false;false;;;;;;
                                  -140893;2;0;false;false;63;95;191;;;
                                  -140895;1;0;false;false;;;;;;
                                  -140896;3;0;false;false;63;95;191;;;
                                  -140899;4;0;false;false;;;;;;
                                  -140903;1;0;false;false;63;95;191;;;
                                  -140904;2;0;false;false;;;;;;
                                  -140906;5;0;false;false;63;95;191;;;
                                  -140911;1;0;false;false;;;;;;
                                  -140912;6;0;false;false;63;95;191;;;
                                  -140918;1;0;false;false;;;;;;
                                  -140919;6;0;false;false;63;95;191;;;
                                  -140925;1;0;false;false;;;;;;
                                  -140926;4;0;false;false;63;95;191;;;
                                  -140930;1;0;false;false;;;;;;
                                  -140931;1;0;false;false;63;95;191;;;
                                  -140932;1;0;false;false;;;;;;
                                  -140933;3;0;false;false;63;95;191;;;
                                  -140936;1;0;false;false;;;;;;
                                  -140937;4;0;false;false;63;95;191;;;
                                  -140941;1;0;false;false;;;;;;
                                  -140942;4;0;false;false;63;95;191;;;
                                  -140946;1;0;false;false;;;;;;
                                  -140947;3;0;false;false;63;95;191;;;
                                  -140950;1;0;false;false;;;;;;
                                  -140951;4;0;false;false;63;95;191;;;
                                  -140955;1;0;false;false;;;;;;
                                  -140956;7;0;false;false;63;95;191;;;
                                  -140963;4;0;false;false;;;;;;
                                  -140967;1;0;false;false;63;95;191;;;
                                  -140968;1;0;false;false;;;;;;
                                  -140969;11;1;false;false;127;159;191;;;
                                  -140980;24;0;false;false;63;95;191;;;
                                  -141004;1;0;false;false;;;;;;
                                  -141005;4;0;false;false;127;127;159;;;
                                  -141009;3;0;false;false;;;;;;
                                  -141012;1;0;false;false;63;95;191;;;
                                  -141013;4;0;false;false;;;;;;
                                  -141017;4;0;false;false;127;127;159;;;
                                  -141021;22;0;false;false;63;95;191;;;
                                  -141043;1;0;false;false;;;;;;
                                  -141044;1;0;false;false;127;127;159;;;
                                  -141045;1;0;false;false;;;;;;
                                  -141046;2;0;false;false;63;95;191;;;
                                  -141048;1;0;false;false;;;;;;
                                  -141049;3;0;false;false;63;95;191;;;
                                  -141052;1;0;false;false;;;;;;
                                  -141053;7;0;false;false;63;95;191;;;
                                  -141060;1;0;false;false;;;;;;
                                  -141061;7;0;false;false;63;95;191;;;
                                  -141068;1;0;false;false;;;;;;
                                  -141069;8;0;false;false;63;95;191;;;
                                  -141077;4;0;false;false;;;;;;
                                  -141081;1;0;false;false;63;95;191;;;
                                  -141082;3;0;false;false;;;;;;
                                  -141085;2;0;false;false;63;95;191;;;
                                  -141087;1;0;false;false;;;;;;
                                  -141088;3;0;false;false;63;95;191;;;
                                  -141091;1;0;false;false;;;;;;
                                  -141092;8;0;false;false;63;95;191;;;
                                  -141100;1;0;false;false;;;;;;
                                  -141101;2;0;false;false;63;95;191;;;
                                  -141103;1;0;false;false;;;;;;
                                  -141104;3;0;false;false;63;95;191;;;
                                  -141107;1;0;false;false;;;;;;
                                  -141108;5;0;false;false;63;95;191;;;
                                  -141113;1;0;false;false;;;;;;
                                  -141114;4;0;false;false;63;95;191;;;
                                  -141118;1;0;false;false;;;;;;
                                  -141119;2;0;false;false;63;95;191;;;
                                  -141121;1;0;false;false;;;;;;
                                  -141122;3;0;false;false;63;95;191;;;
                                  -141125;1;0;false;false;;;;;;
                                  -141126;3;0;false;false;63;95;191;;;
                                  -141129;1;0;false;false;;;;;;
                                  -141130;2;0;false;false;63;95;191;;;
                                  -141132;1;0;false;false;;;;;;
                                  -141133;9;0;false;false;63;95;191;;;
                                  -141142;1;0;false;false;;;;;;
                                  -141143;6;0;false;false;63;95;191;;;
                                  -141149;3;0;false;false;;;;;;
                                  -141152;1;0;false;false;63;95;191;;;
                                  -141153;3;0;false;false;;;;;;
                                  -141156;6;0;false;false;63;95;191;;;
                                  -141162;1;0;false;false;;;;;;
                                  -141163;3;0;false;false;63;95;191;;;
                                  -141166;1;0;false;false;;;;;;
                                  -141167;4;0;false;false;63;95;191;;;
                                  -141171;1;0;false;false;;;;;;
                                  -141172;6;0;false;false;63;95;191;;;
                                  -141178;1;0;false;false;;;;;;
                                  -141179;2;0;false;false;63;95;191;;;
                                  -141181;1;0;false;false;;;;;;
                                  -141182;4;0;false;false;63;95;191;;;
                                  -141186;1;0;false;false;;;;;;
                                  -141187;10;0;false;false;63;95;191;;;
                                  -141197;5;0;false;false;127;127;159;;;
                                  -141202;3;0;false;false;;;;;;
                                  -141205;1;0;false;false;63;95;191;;;
                                  -141206;1;0;false;false;;;;;;
                                  -141207;5;0;false;false;127;127;159;;;
                                  -141212;3;0;false;false;;;;;;
                                  -141215;2;0;false;false;63;95;191;;;
                                  -141217;2;0;false;false;;;;;;
                                  -141219;3;1;false;false;127;0;85;;;
                                  -141222;1;0;false;false;;;;;;
                                  -141223;2;0;false;false;0;0;0;;;
                                  -141225;1;0;false;false;;;;;;
                                  -141226;16;0;false;false;0;0;0;;;
                                  -141242;3;1;false;false;127;0;85;;;
                                  -141245;1;0;false;false;;;;;;
                                  -141246;11;0;false;false;0;0;0;;;
                                  -141257;1;0;false;false;;;;;;
                                  -141258;6;0;false;false;0;0;0;;;
                                  -141264;1;0;false;false;;;;;;
                                  -141265;5;0;false;false;0;0;0;;;
                                  -141270;1;0;false;false;;;;;;
                                  -141271;1;0;false;false;0;0;0;;;
                                  -141272;3;0;false;false;;;;;;
                                  -141275;2;1;false;false;127;0;85;;;
                                  -141277;1;0;false;false;;;;;;
                                  -141278;31;0;false;false;0;0;0;;;
                                  -141309;1;0;false;false;;;;;;
                                  -141310;1;0;false;false;0;0;0;;;
                                  -141311;4;0;false;false;;;;;;
                                  -141315;6;1;false;false;127;0;85;;;
                                  -141321;1;0;false;false;;;;;;
                                  -141322;34;0;false;false;0;0;0;;;
                                  -141356;1;0;false;false;;;;;;
                                  -141357;12;0;false;false;0;0;0;;;
                                  -141369;3;0;false;false;;;;;;
                                  -141372;1;0;false;false;0;0;0;;;
                                  -141373;3;0;false;false;;;;;;
                                  -141376;15;0;false;false;0;0;0;;;
                                  -141391;1;0;false;false;;;;;;
                                  -141392;5;0;false;false;0;0;0;;;
                                  -141397;1;0;false;false;;;;;;
                                  -141398;1;0;false;false;0;0;0;;;
                                  -141399;1;0;false;false;;;;;;
                                  -141400;30;0;false;false;0;0;0;;;
                                  -141430;1;0;false;false;;;;;;
                                  -141431;11;0;false;false;0;0;0;;;
                                  -141442;1;0;false;false;;;;;;
                                  -141443;6;0;false;false;0;0;0;;;
                                  -141449;3;0;false;false;;;;;;
                                  -141452;3;1;false;false;127;0;85;;;
                                  -141455;1;0;false;false;;;;;;
                                  -141456;10;0;false;false;0;0;0;;;
                                  -141466;1;0;false;false;;;;;;
                                  -141467;1;0;false;false;0;0;0;;;
                                  -141468;1;0;false;false;;;;;;
                                  -141469;14;0;false;false;0;0;0;;;
                                  -141483;3;0;false;false;;;;;;
                                  -141486;3;1;false;false;127;0;85;;;
                                  -141489;2;0;false;false;0;0;0;;;
                                  -141491;1;0;false;false;;;;;;
                                  -141492;9;0;false;false;0;0;0;;;
                                  -141501;3;0;false;false;;;;;;
                                  -141504;2;1;false;false;127;0;85;;;
                                  -141506;1;0;false;false;;;;;;
                                  -141507;6;0;false;false;0;0;0;;;
                                  -141513;1;0;false;false;;;;;;
                                  -141514;2;0;false;false;0;0;0;;;
                                  -141516;1;0;false;false;;;;;;
                                  -141517;4;1;false;false;127;0;85;;;
                                  -141521;1;0;false;false;;;;;;
                                  -141522;2;0;false;false;0;0;0;;;
                                  -141524;1;0;false;false;;;;;;
                                  -141525;14;0;false;false;0;0;0;;;
                                  -141539;1;0;false;false;;;;;;
                                  -141540;2;0;false;false;0;0;0;;;
                                  -141542;1;0;false;false;;;;;;
                                  -141543;4;1;false;false;127;0;85;;;
                                  -141547;1;0;false;false;;;;;;
                                  -141548;2;0;false;false;0;0;0;;;
                                  -141550;1;0;false;false;;;;;;
                                  -141551;21;0;false;false;0;0;0;;;
                                  -141572;1;0;false;false;;;;;;
                                  -141573;2;0;false;false;0;0;0;;;
                                  -141575;1;0;false;false;;;;;;
                                  -141576;2;0;false;false;0;0;0;;;
                                  -141578;1;0;false;false;;;;;;
                                  -141579;1;0;false;false;0;0;0;;;
                                  -141580;4;0;false;false;;;;;;
                                  -141584;8;0;false;false;0;0;0;;;
                                  -141592;1;0;false;false;;;;;;
                                  -141593;1;0;false;false;0;0;0;;;
                                  -141594;1;0;false;false;;;;;;
                                  -141595;3;1;false;false;127;0;85;;;
                                  -141598;1;0;false;false;;;;;;
                                  -141599;3;1;false;false;127;0;85;;;
                                  -141602;2;0;false;false;0;0;0;;;
                                  -141604;1;0;false;false;;;;;;
                                  -141605;3;0;false;false;0;0;0;;;
                                  -141608;1;0;false;false;;;;;;
                                  -141609;12;0;false;false;0;0;0;;;
                                  -141621;3;0;false;false;;;;;;
                                  -141624;1;0;false;false;0;0;0;;;
                                  -141625;3;0;false;false;;;;;;
                                  -141628;4;1;false;false;127;0;85;;;
                                  -141632;1;0;false;false;;;;;;
                                  -141633;1;0;false;false;0;0;0;;;
                                  -141634;4;0;false;false;;;;;;
                                  -141638;3;1;false;false;127;0;85;;;
                                  -141641;1;0;false;false;;;;;;
                                  -141642;12;0;false;false;0;0;0;;;
                                  -141654;1;0;false;false;;;;;;
                                  -141655;1;0;false;false;0;0;0;;;
                                  -141656;1;0;false;false;;;;;;
                                  -141657;22;0;false;false;0;0;0;;;
                                  -141679;8;0;false;false;;;;;;
                                  -141687;35;0;false;false;63;127;95;;;
                                  -141722;2;0;false;false;;;;;;
                                  -141724;2;1;false;false;127;0;85;;;
                                  -141726;1;0;false;false;;;;;;
                                  -141727;18;0;false;false;0;0;0;;;
                                  -141745;1;0;false;false;;;;;;
                                  -141746;2;0;false;false;0;0;0;;;
                                  -141748;1;0;false;false;;;;;;
                                  -141749;2;0;false;false;0;0;0;;;
                                  -141751;1;0;false;false;;;;;;
                                  -141752;1;0;false;false;0;0;0;;;
                                  -141753;5;0;false;false;;;;;;
                                  -141758;38;0;false;false;0;0;0;;;
                                  -141796;4;0;false;false;;;;;;
                                  -141800;1;0;false;false;0;0;0;;;
                                  -141801;6;0;false;false;;;;;;
                                  -141807;3;1;false;false;127;0;85;;;
                                  -141810;1;0;false;false;;;;;;
                                  -141811;1;0;false;false;0;0;0;;;
                                  -141812;3;1;false;false;127;0;85;;;
                                  -141815;1;0;false;false;;;;;;
                                  -141816;1;0;false;false;0;0;0;;;
                                  -141817;1;0;false;false;;;;;;
                                  -141818;1;0;false;false;0;0;0;;;
                                  -141819;1;0;false;false;;;;;;
                                  -141820;2;0;false;false;0;0;0;;;
                                  -141822;1;0;false;false;;;;;;
                                  -141823;1;0;false;false;0;0;0;;;
                                  -141824;1;0;false;false;;;;;;
                                  -141825;1;0;false;false;0;0;0;;;
                                  -141826;1;0;false;false;;;;;;
                                  -141827;13;0;false;false;0;0;0;;;
                                  -141840;1;0;false;false;;;;;;
                                  -141841;4;0;false;false;0;0;0;;;
                                  -141845;1;0;false;false;;;;;;
                                  -141846;1;0;false;false;0;0;0;;;
                                  -141847;5;0;false;false;;;;;;
                                  -141852;2;1;false;false;127;0;85;;;
                                  -141854;1;0;false;false;;;;;;
                                  -141855;18;0;false;false;0;0;0;;;
                                  -141873;1;0;false;false;;;;;;
                                  -141874;2;0;false;false;0;0;0;;;
                                  -141876;1;0;false;false;;;;;;
                                  -141877;16;0;false;false;0;0;0;;;
                                  -141893;1;0;false;false;;;;;;
                                  -141894;1;0;false;false;0;0;0;;;
                                  -141895;1;0;false;false;;;;;;
                                  -141896;2;0;false;false;0;0;0;;;
                                  -141898;1;0;false;false;;;;;;
                                  -141899;2;0;false;false;0;0;0;;;
                                  -141901;1;0;false;false;;;;;;
                                  -141902;17;0;false;false;0;0;0;;;
                                  -141919;1;0;false;false;;;;;;
                                  -141920;1;0;false;false;0;0;0;;;
                                  -141921;1;0;false;false;;;;;;
                                  -141922;11;0;false;false;0;0;0;;;
                                  -141933;1;0;false;false;;;;;;
                                  -141934;1;0;false;false;0;0;0;;;
                                  -141935;6;0;false;false;;;;;;
                                  -141941;38;0;false;false;0;0;0;;;
                                  -141979;5;0;false;false;;;;;;
                                  -141984;1;0;false;false;0;0;0;;;
                                  -141985;6;0;false;false;;;;;;
                                  -141991;1;0;false;false;0;0;0;;;
                                  -141992;4;0;false;false;;;;;;
                                  -141996;54;0;false;false;63;127;95;;;
                                  -142050;2;0;false;false;;;;;;
                                  -142052;2;1;false;false;127;0;85;;;
                                  -142054;1;0;false;false;;;;;;
                                  -142055;28;0;false;false;0;0;0;;;
                                  -142083;1;0;false;false;;;;;;
                                  -142084;1;0;false;false;0;0;0;;;
                                  -142085;1;0;false;false;;;;;;
                                  -142086;2;0;false;false;0;0;0;;;
                                  -142088;1;0;false;false;;;;;;
                                  -142089;2;0;false;false;0;0;0;;;
                                  -142091;1;0;false;false;;;;;;
                                  -142092;11;0;false;false;0;0;0;;;
                                  -142103;1;0;false;false;;;;;;
                                  -142104;1;0;false;false;0;0;0;;;
                                  -142105;5;0;false;false;;;;;;
                                  -142110;8;0;false;false;0;0;0;;;
                                  -142118;1;0;false;false;;;;;;
                                  -142119;1;0;false;false;0;0;0;;;
                                  -142120;1;0;false;false;;;;;;
                                  -142121;3;1;false;false;127;0;85;;;
                                  -142124;1;0;false;false;;;;;;
                                  -142125;3;1;false;false;127;0;85;;;
                                  -142128;13;0;false;false;0;0;0;;;
                                  -142141;1;0;false;false;;;;;;
                                  -142142;1;0;false;false;0;0;0;;;
                                  -142143;1;0;false;false;;;;;;
                                  -142144;3;0;false;false;0;0;0;;;
                                  -142147;5;0;false;false;;;;;;
                                  -142152;32;0;false;false;0;0;0;;;
                                  -142184;1;0;false;false;;;;;;
                                  -142185;2;0;false;false;0;0;0;;;
                                  -142187;1;0;false;false;;;;;;
                                  -142188;9;0;false;false;0;0;0;;;
                                  -142197;1;0;false;false;;;;;;
                                  -142198;2;0;false;false;0;0;0;;;
                                  -142200;1;0;false;false;;;;;;
                                  -142201;14;0;false;false;0;0;0;;;
                                  -142215;5;0;false;false;;;;;;
                                  -142220;22;0;false;false;0;0;0;;;
                                  -142242;1;0;false;false;;;;;;
                                  -142243;1;0;false;false;0;0;0;;;
                                  -142244;1;0;false;false;;;;;;
                                  -142245;11;0;false;false;0;0;0;;;
                                  -142256;4;0;false;false;;;;;;
                                  -142260;1;0;false;false;0;0;0;;;
                                  -142261;4;0;false;false;;;;;;
                                  -142265;4;1;false;false;127;0;85;;;
                                  -142269;1;0;false;false;;;;;;
                                  -142270;1;0;false;false;0;0;0;;;
                                  -142271;5;0;false;false;;;;;;
                                  -142276;8;0;false;false;0;0;0;;;
                                  -142284;1;0;false;false;;;;;;
                                  -142285;1;0;false;false;0;0;0;;;
                                  -142286;1;0;false;false;;;;;;
                                  -142287;15;0;false;false;0;0;0;;;
                                  -142302;4;0;false;false;;;;;;
                                  -142306;1;0;false;false;0;0;0;;;
                                  -142307;3;0;false;false;;;;;;
                                  -142310;1;0;false;false;0;0;0;;;
                                  -142311;3;0;false;false;;;;;;
                                  -142314;6;1;false;false;127;0;85;;;
                                  -142320;1;0;false;false;;;;;;
                                  -142321;9;0;false;false;0;0;0;;;
                                  -142330;2;0;false;false;;;;;;
                                  -142332;1;0;false;false;0;0;0;;;
                                  -142333;2;0;false;false;;;;;;
                                  -142335;3;0;false;false;63;95;191;;;
                                  -142338;3;0;false;false;;;;;;
                                  -142341;1;0;false;false;63;95;191;;;
                                  -142342;1;0;false;false;;;;;;
                                  -142343;5;1;false;false;127;159;191;;;
                                  -142348;16;0;false;false;63;95;191;;;
                                  -142364;3;0;false;false;;;;;;
                                  -142367;1;0;false;false;63;95;191;;;
                                  -142368;1;0;false;false;;;;;;
                                  -142369;8;0;false;false;63;95;191;;;
                                  -142377;1;0;false;false;;;;;;
                                  -142378;10;0;false;false;63;95;191;;;
                                  -142388;1;0;false;false;;;;;;
                                  -142389;15;0;false;false;63;95;191;;;
                                  -142404;1;0;false;false;;;;;;
                                  -142405;4;0;false;false;63;95;191;;;
                                  -142409;1;0;false;false;;;;;;
                                  -142410;6;0;false;false;63;95;191;;;
                                  -142416;1;0;false;false;;;;;;
                                  -142417;4;0;false;false;63;95;191;;;
                                  -142421;1;0;false;false;;;;;;
                                  -142422;3;0;false;false;63;95;191;;;
                                  -142425;1;0;false;false;;;;;;
                                  -142426;2;0;false;false;63;95;191;;;
                                  -142428;1;0;false;false;;;;;;
                                  -142429;8;0;false;false;63;95;191;;;
                                  -142437;3;0;false;false;;;;;;
                                  -142440;2;0;false;false;63;95;191;;;
                                  -142442;2;0;false;false;;;;;;
                                  -142444;3;1;false;false;127;0;85;;;
                                  -142447;1;0;false;false;;;;;;
                                  -142448;2;0;false;false;0;0;0;;;
                                  -142450;1;0;false;false;;;;;;
                                  -142451;35;0;false;false;0;0;0;;;
                                  -142486;1;0;false;false;;;;;;
                                  -142487;5;0;false;false;0;0;0;;;
                                  -142492;1;0;false;false;;;;;;
                                  -142493;3;1;false;false;127;0;85;;;
                                  -142496;1;0;false;false;;;;;;
                                  -142497;11;0;false;false;0;0;0;;;
                                  -142508;1;0;false;false;;;;;;
                                  -142509;1;0;false;false;0;0;0;;;
                                  -142510;3;0;false;false;;;;;;
                                  -142513;15;0;false;false;0;0;0;;;
                                  -142528;1;0;false;false;;;;;;
                                  -142529;6;0;false;false;0;0;0;;;
                                  -142535;3;0;false;false;;;;;;
                                  -142538;10;0;false;false;0;0;0;;;
                                  -142548;1;0;false;false;;;;;;
                                  -142549;2;0;false;false;0;0;0;;;
                                  -142551;1;0;false;false;;;;;;
                                  -142552;6;0;false;false;0;0;0;;;
                                  -142558;1;0;false;false;;;;;;
                                  -142559;1;0;false;false;0;0;0;;;
                                  -142560;1;0;false;false;;;;;;
                                  -142561;3;1;false;false;127;0;85;;;
                                  -142564;1;0;false;false;;;;;;
                                  -142565;10;0;false;false;0;0;0;;;
                                  -142575;1;0;false;false;;;;;;
                                  -142576;4;0;false;false;0;0;0;;;
                                  -142580;3;0;false;false;;;;;;
                                  -142583;3;1;false;false;127;0;85;;;
                                  -142586;1;0;false;false;;;;;;
                                  -142587;10;0;false;false;0;0;0;;;
                                  -142597;1;0;false;false;;;;;;
                                  -142598;1;0;false;false;0;0;0;;;
                                  -142599;1;0;false;false;;;;;;
                                  -142600;14;0;false;false;0;0;0;;;
                                  -142614;3;0;false;false;;;;;;
                                  -142617;2;1;false;false;127;0;85;;;
                                  -142619;1;0;false;false;;;;;;
                                  -142620;15;0;false;false;0;0;0;;;
                                  -142635;1;0;false;false;;;;;;
                                  -142636;1;0;false;false;0;0;0;;;
                                  -142637;4;0;false;false;;;;;;
                                  -142641;6;1;false;false;127;0;85;;;
                                  -142647;1;0;false;false;;;;;;
                                  -142648;3;1;false;false;127;0;85;;;
                                  -142651;1;0;false;false;;;;;;
                                  -142652;3;1;false;false;127;0;85;;;
                                  -142655;2;0;false;false;0;0;0;;;
                                  -142657;1;0;false;false;;;;;;
                                  -142658;3;0;false;false;0;0;0;;;
                                  -142661;1;0;false;false;;;;;;
                                  -142662;12;0;false;false;0;0;0;;;
                                  -142674;3;0;false;false;;;;;;
                                  -142677;1;0;false;false;0;0;0;;;
                                  -142678;3;0;false;false;;;;;;
                                  -142681;5;0;false;false;0;0;0;;;
                                  -142686;1;0;false;false;;;;;;
                                  -142687;1;0;false;false;0;0;0;;;
                                  -142688;1;0;false;false;;;;;;
                                  -142689;37;0;false;false;0;0;0;;;
                                  -142726;1;0;false;false;;;;;;
                                  -142727;6;0;false;false;0;0;0;;;
                                  -142733;3;0;false;false;;;;;;
                                  -142736;2;1;false;false;127;0;85;;;
                                  -142738;1;0;false;false;;;;;;
                                  -142739;6;0;false;false;0;0;0;;;
                                  -142745;1;0;false;false;;;;;;
                                  -142746;2;0;false;false;0;0;0;;;
                                  -142748;1;0;false;false;;;;;;
                                  -142749;4;1;false;false;127;0;85;;;
                                  -142753;1;0;false;false;0;0;0;;;
                                  -142754;1;0;false;false;;;;;;
                                  -142755;1;0;false;false;0;0;0;;;
                                  -142756;4;0;false;false;;;;;;
                                  -142760;6;0;false;false;0;0;0;;;
                                  -142766;1;0;false;false;;;;;;
                                  -142767;1;0;false;false;0;0;0;;;
                                  -142768;1;0;false;false;;;;;;
                                  -142769;13;0;false;false;0;0;0;;;
                                  -142782;3;0;false;false;;;;;;
                                  -142785;1;0;false;false;0;0;0;;;
                                  -142786;3;0;false;false;;;;;;
                                  -142789;2;1;false;false;127;0;85;;;
                                  -142791;1;0;false;false;;;;;;
                                  -142792;14;0;false;false;0;0;0;;;
                                  -142806;1;0;false;false;;;;;;
                                  -142807;2;0;false;false;0;0;0;;;
                                  -142809;1;0;false;false;;;;;;
                                  -142810;2;0;false;false;0;0;0;;;
                                  -142812;1;0;false;false;;;;;;
                                  -142813;1;0;false;false;0;0;0;;;
                                  -142814;4;0;false;false;;;;;;
                                  -142818;6;1;false;false;127;0;85;;;
                                  -142824;1;0;false;false;;;;;;
                                  -142825;3;1;false;false;127;0;85;;;
                                  -142828;1;0;false;false;;;;;;
                                  -142829;3;1;false;false;127;0;85;;;
                                  -142832;2;0;false;false;0;0;0;;;
                                  -142834;1;0;false;false;;;;;;
                                  -142835;3;0;false;false;0;0;0;;;
                                  -142838;1;0;false;false;;;;;;
                                  -142839;12;0;false;false;0;0;0;;;
                                  -142851;3;0;false;false;;;;;;
                                  -142854;1;0;false;false;0;0;0;;;
                                  -142855;3;0;false;false;;;;;;
                                  -142858;3;1;false;false;127;0;85;;;
                                  -142861;1;0;false;false;;;;;;
                                  -142862;4;0;false;false;0;0;0;;;
                                  -142866;1;0;false;false;;;;;;
                                  -142867;5;0;false;false;0;0;0;;;
                                  -142872;1;0;false;false;;;;;;
                                  -142873;1;0;false;false;0;0;0;;;
                                  -142874;1;0;false;false;;;;;;
                                  -142875;2;0;false;false;0;0;0;;;
                                  -142877;3;0;false;false;;;;;;
                                  -142880;5;1;false;false;127;0;85;;;
                                  -142885;1;0;false;false;;;;;;
                                  -142886;2;0;false;false;0;0;0;;;
                                  -142888;1;0;false;false;;;;;;
                                  -142889;1;0;false;false;0;0;0;;;
                                  -142890;1;0;false;false;;;;;;
                                  -142891;13;0;false;false;0;0;0;;;
                                  -142904;1;0;false;false;;;;;;
                                  -142905;2;0;false;false;0;0;0;;;
                                  -142907;1;0;false;false;;;;;;
                                  -142908;15;0;false;false;0;0;0;;;
                                  -142923;1;0;false;false;;;;;;
                                  -142924;2;0;false;false;0;0;0;;;
                                  -142926;1;0;false;false;;;;;;
                                  -142927;1;0;false;false;0;0;0;;;
                                  -142928;1;0;false;false;;;;;;
                                  -142929;2;0;false;false;0;0;0;;;
                                  -142931;1;0;false;false;;;;;;
                                  -142932;16;0;false;false;0;0;0;;;
                                  -142948;1;0;false;false;;;;;;
                                  -142949;2;0;false;false;0;0;0;;;
                                  -142951;1;0;false;false;;;;;;
                                  -142952;11;0;false;false;0;0;0;;;
                                  -142963;1;0;false;false;;;;;;
                                  -142964;1;0;false;false;0;0;0;;;
                                  -142965;4;0;false;false;;;;;;
                                  -142969;4;0;false;false;0;0;0;;;
                                  -142973;3;0;false;false;;;;;;
                                  -142976;1;0;false;false;0;0;0;;;
                                  -142977;3;0;false;false;;;;;;
                                  -142980;3;1;false;false;127;0;85;;;
                                  -142983;2;0;false;false;0;0;0;;;
                                  -142985;1;0;false;false;;;;;;
                                  -142986;7;0;false;false;0;0;0;;;
                                  -142993;1;0;false;false;;;;;;
                                  -142994;1;0;false;false;0;0;0;;;
                                  -142995;1;0;false;false;;;;;;
                                  -142996;3;1;false;false;127;0;85;;;
                                  -142999;1;0;false;false;;;;;;
                                  -143000;3;1;false;false;127;0;85;;;
                                  -143003;15;0;false;false;0;0;0;;;
                                  -143018;1;0;false;false;;;;;;
                                  -143019;1;0;false;false;0;0;0;;;
                                  -143020;1;0;false;false;;;;;;
                                  -143021;2;0;false;false;0;0;0;;;
                                  -143023;1;0;false;false;;;;;;
                                  -143024;1;0;false;false;0;0;0;;;
                                  -143025;1;0;false;false;;;;;;
                                  -143026;1;0;false;false;0;0;0;;;
                                  -143027;1;0;false;false;;;;;;
                                  -143028;1;0;false;false;0;0;0;;;
                                  -143029;1;0;false;false;;;;;;
                                  -143030;3;0;false;false;0;0;0;;;
                                  -143033;3;0;false;false;;;;;;
                                  -143036;3;1;false;false;127;0;85;;;
                                  -143039;1;0;false;false;;;;;;
                                  -143040;1;0;false;false;0;0;0;;;
                                  -143041;3;1;false;false;127;0;85;;;
                                  -143044;1;0;false;false;;;;;;
                                  -143045;1;0;false;false;0;0;0;;;
                                  -143046;1;0;false;false;;;;;;
                                  -143047;1;0;false;false;0;0;0;;;
                                  -143048;1;0;false;false;;;;;;
                                  -143049;2;0;false;false;0;0;0;;;
                                  -143051;1;0;false;false;;;;;;
                                  -143052;1;0;false;false;0;0;0;;;
                                  -143053;1;0;false;false;;;;;;
                                  -143054;1;0;false;false;0;0;0;;;
                                  -143055;1;0;false;false;;;;;;
                                  -143056;14;0;false;false;0;0;0;;;
                                  -143070;1;0;false;false;;;;;;
                                  -143071;4;0;false;false;0;0;0;;;
                                  -143075;1;0;false;false;;;;;;
                                  -143076;1;0;false;false;0;0;0;;;
                                  -143077;4;0;false;false;;;;;;
                                  -143081;10;0;false;false;0;0;0;;;
                                  -143091;1;0;false;false;;;;;;
                                  -143092;5;0;false;false;0;0;0;;;
                                  -143097;1;0;false;false;;;;;;
                                  -143098;1;0;false;false;0;0;0;;;
                                  -143099;1;0;false;false;;;;;;
                                  -143100;10;0;false;false;0;0;0;;;
                                  -143110;4;0;false;false;;;;;;
                                  -143114;3;1;false;false;127;0;85;;;
                                  -143117;1;0;false;false;;;;;;
                                  -143118;14;0;false;false;0;0;0;;;
                                  -143132;1;0;false;false;;;;;;
                                  -143133;1;0;false;false;0;0;0;;;
                                  -143134;1;0;false;false;;;;;;
                                  -143135;20;0;false;false;0;0;0;;;
                                  -143155;1;0;false;false;;;;;;
                                  -143156;1;0;false;false;0;0;0;;;
                                  -143157;1;0;false;false;;;;;;
                                  -143158;11;0;false;false;0;0;0;;;
                                  -143169;1;0;false;false;;;;;;
                                  -143170;3;0;false;false;0;0;0;;;
                                  -143173;4;0;false;false;;;;;;
                                  -143177;3;1;false;false;127;0;85;;;
                                  -143180;1;0;false;false;;;;;;
                                  -143181;12;0;false;false;0;0;0;;;
                                  -143193;1;0;false;false;;;;;;
                                  -143194;1;0;false;false;0;0;0;;;
                                  -143195;1;0;false;false;;;;;;
                                  -143196;20;0;false;false;0;0;0;;;
                                  -143216;1;0;false;false;;;;;;
                                  -143217;1;0;false;false;0;0;0;;;
                                  -143218;1;0;false;false;;;;;;
                                  -143219;12;0;false;false;0;0;0;;;
                                  -143231;1;0;false;false;;;;;;
                                  -143232;1;0;false;false;0;0;0;;;
                                  -143233;1;0;false;false;;;;;;
                                  -143234;11;0;false;false;0;0;0;;;
                                  -143245;1;0;false;false;;;;;;
                                  -143246;16;0;false;false;0;0;0;;;
                                  -143262;4;0;false;false;;;;;;
                                  -143266;12;0;false;false;0;0;0;;;
                                  -143278;1;0;false;false;;;;;;
                                  -143279;1;0;false;false;0;0;0;;;
                                  -143280;1;0;false;false;;;;;;
                                  -143281;8;0;false;false;0;0;0;;;
                                  -143289;1;0;false;false;;;;;;
                                  -143290;14;0;false;false;0;0;0;;;
                                  -143304;1;0;false;false;;;;;;
                                  -143305;11;0;false;false;0;0;0;;;
                                  -143316;1;0;false;false;;;;;;
                                  -143317;4;0;false;false;0;0;0;;;
                                  -143321;4;0;false;false;;;;;;
                                  -143325;2;1;false;false;127;0;85;;;
                                  -143327;1;0;false;false;;;;;;
                                  -143328;2;0;false;false;0;0;0;;;
                                  -143330;1;0;false;false;;;;;;
                                  -143331;1;0;false;false;0;0;0;;;
                                  -143332;1;0;false;false;;;;;;
                                  -143333;1;0;false;false;0;0;0;;;
                                  -143334;1;0;false;false;;;;;;
                                  -143335;2;0;false;false;0;0;0;;;
                                  -143337;1;0;false;false;;;;;;
                                  -143338;5;0;false;false;0;0;0;;;
                                  -143343;1;0;false;false;;;;;;
                                  -143344;1;0;false;false;0;0;0;;;
                                  -143345;1;0;false;false;;;;;;
                                  -143346;1;0;false;false;0;0;0;;;
                                  -143347;1;0;false;false;;;;;;
                                  -143348;2;0;false;false;0;0;0;;;
                                  -143350;5;0;false;false;;;;;;
                                  -143355;16;0;false;false;0;0;0;;;
                                  -143371;1;0;false;false;;;;;;
                                  -143372;2;0;false;false;0;0;0;;;
                                  -143374;1;0;false;false;;;;;;
                                  -143375;16;0;false;false;0;0;0;;;
                                  -143391;1;0;false;false;;;;;;
                                  -143392;2;0;false;false;0;0;0;;;
                                  -143394;1;0;false;false;;;;;;
                                  -143395;14;0;false;false;0;0;0;;;
                                  -143409;1;0;false;false;;;;;;
                                  -143410;2;0;false;false;0;0;0;;;
                                  -143412;1;0;false;false;;;;;;
                                  -143413;17;0;false;false;0;0;0;;;
                                  -143430;1;0;false;false;;;;;;
                                  -143431;2;0;false;false;0;0;0;;;
                                  -143433;6;0;false;false;;;;;;
                                  -143439;13;0;false;false;0;0;0;;;
                                  -143452;1;0;false;false;;;;;;
                                  -143453;2;0;false;false;0;0;0;;;
                                  -143455;1;0;false;false;;;;;;
                                  -143456;16;0;false;false;0;0;0;;;
                                  -143472;1;0;false;false;;;;;;
                                  -143473;2;0;false;false;0;0;0;;;
                                  -143475;1;0;false;false;;;;;;
                                  -143476;12;0;false;false;0;0;0;;;
                                  -143488;1;0;false;false;;;;;;
                                  -143489;2;0;false;false;0;0;0;;;
                                  -143491;1;0;false;false;;;;;;
                                  -143492;18;0;false;false;0;0;0;;;
                                  -143510;1;0;false;false;;;;;;
                                  -143511;2;0;false;false;0;0;0;;;
                                  -143513;6;0;false;false;;;;;;
                                  -143519;29;0;false;false;0;0;0;;;
                                  -143548;1;0;false;false;;;;;;
                                  -143549;1;0;false;false;0;0;0;;;
                                  -143550;5;0;false;false;;;;;;
                                  -143555;16;0;false;false;0;0;0;;;
                                  -143571;1;0;false;false;;;;;;
                                  -143572;1;0;false;false;0;0;0;;;
                                  -143573;1;0;false;false;;;;;;
                                  -143574;26;0;false;false;0;0;0;;;
                                  -143600;1;0;false;false;;;;;;
                                  -143601;16;0;false;false;0;0;0;;;
                                  -143617;5;0;false;false;;;;;;
                                  -143622;16;0;false;false;0;0;0;;;
                                  -143638;1;0;false;false;;;;;;
                                  -143639;1;0;false;false;0;0;0;;;
                                  -143640;1;0;false;false;;;;;;
                                  -143641;26;0;false;false;0;0;0;;;
                                  -143667;1;0;false;false;;;;;;
                                  -143668;14;0;false;false;0;0;0;;;
                                  -143682;4;0;false;false;;;;;;
                                  -143686;1;0;false;false;0;0;0;;;
                                  -143687;1;0;false;false;;;;;;
                                  -143688;4;1;false;false;127;0;85;;;
                                  -143692;1;0;false;false;;;;;;
                                  -143693;1;0;false;false;0;0;0;;;
                                  -143694;5;0;false;false;;;;;;
                                  -143699;2;1;false;false;127;0;85;;;
                                  -143701;1;0;false;false;;;;;;
                                  -143702;15;0;false;false;0;0;0;;;
                                  -143717;1;0;false;false;;;;;;
                                  -143718;1;0;false;false;0;0;0;;;
                                  -143719;1;0;false;false;;;;;;
                                  -143720;13;0;false;false;0;0;0;;;
                                  -143733;1;0;false;false;;;;;;
                                  -143734;1;0;false;false;0;0;0;;;
                                  -143735;1;0;false;false;;;;;;
                                  -143736;3;0;false;false;0;0;0;;;
                                  -143739;1;0;false;false;;;;;;
                                  -143740;1;0;false;false;0;0;0;;;
                                  -143741;6;0;false;false;;;;;;
                                  -143747;14;0;false;false;0;0;0;;;
                                  -143761;1;0;false;false;;;;;;
                                  -143762;1;0;false;false;0;0;0;;;
                                  -143763;1;0;false;false;;;;;;
                                  -143764;15;0;false;false;0;0;0;;;
                                  -143779;6;0;false;false;;;;;;
                                  -143785;8;0;false;false;0;0;0;;;
                                  -143793;5;0;false;false;;;;;;
                                  -143798;1;0;false;false;0;0;0;;;
                                  -143799;5;0;false;false;;;;;;
                                  -143804;14;0;false;false;0;0;0;;;
                                  -143818;1;0;false;false;;;;;;
                                  -143819;1;0;false;false;0;0;0;;;
                                  -143820;1;0;false;false;;;;;;
                                  -143821;13;0;false;false;0;0;0;;;
                                  -143834;5;0;false;false;;;;;;
                                  -143839;8;0;false;false;0;0;0;;;
                                  -143847;4;0;false;false;;;;;;
                                  -143851;1;0;false;false;0;0;0;;;
                                  -143852;3;0;false;false;;;;;;
                                  -143855;1;0;false;false;0;0;0;;;
                                  -143856;3;0;false;false;;;;;;
                                  -143859;60;0;false;false;63;127;95;;;
                                  -143919;1;0;false;false;;;;;;
                                  -143920;2;1;false;false;127;0;85;;;
                                  -143922;1;0;false;false;;;;;;
                                  -143923;11;0;false;false;0;0;0;;;
                                  -143934;1;0;false;false;;;;;;
                                  -143935;1;0;false;false;0;0;0;;;
                                  -143936;1;0;false;false;;;;;;
                                  -143937;17;0;false;false;0;0;0;;;
                                  -143954;1;0;false;false;;;;;;
                                  -143955;1;0;false;false;0;0;0;;;
                                  -143956;4;0;false;false;;;;;;
                                  -143960;7;0;false;false;0;0;0;;;
                                  -143967;1;0;false;false;;;;;;
                                  -143968;7;0;false;false;0;0;0;;;
                                  -143975;1;0;false;false;;;;;;
                                  -143976;1;0;false;false;0;0;0;;;
                                  -143977;1;0;false;false;;;;;;
                                  -143978;11;0;false;false;0;0;0;;;
                                  -143989;4;0;false;false;;;;;;
                                  -143993;8;0;false;false;0;0;0;;;
                                  -144001;3;0;false;false;;;;;;
                                  -144004;1;0;false;false;0;0;0;;;
                                  -144005;5;0;false;false;;;;;;
                                  -144010;2;1;false;false;127;0;85;;;
                                  -144012;1;0;false;false;;;;;;
                                  -144013;6;0;false;false;0;0;0;;;
                                  -144019;1;0;false;false;;;;;;
                                  -144020;2;0;false;false;0;0;0;;;
                                  -144022;1;0;false;false;;;;;;
                                  -144023;15;0;false;false;0;0;0;;;
                                  -144038;1;0;false;false;;;;;;
                                  -144039;1;0;false;false;0;0;0;;;
                                  -144040;4;0;false;false;;;;;;
                                  -144044;6;1;false;false;127;0;85;;;
                                  -144050;1;0;false;false;;;;;;
                                  -144051;8;0;false;false;0;0;0;;;
                                  -144059;3;0;false;false;;;;;;
                                  -144062;1;0;false;false;0;0;0;;;
                                  -144063;3;0;false;false;;;;;;
                                  -144066;3;1;false;false;127;0;85;;;
                                  -144069;1;0;false;false;;;;;;
                                  -144070;2;0;false;false;0;0;0;;;
                                  -144072;1;0;false;false;;;;;;
                                  -144073;6;0;false;false;0;0;0;;;
                                  -144079;1;0;false;false;;;;;;
                                  -144080;1;0;false;false;0;0;0;;;
                                  -144081;1;0;false;false;;;;;;
                                  -144082;3;1;false;false;127;0;85;;;
                                  -144085;1;0;false;false;;;;;;
                                  -144086;3;1;false;false;127;0;85;;;
                                  -144089;1;0;false;false;;;;;;
                                  -144090;8;0;false;false;0;0;0;;;
                                  -144098;3;0;false;false;;;;;;
                                  -144101;16;0;false;false;0;0;0;;;
                                  -144117;1;0;false;false;;;;;;
                                  -144118;9;0;false;false;0;0;0;;;
                                  -144127;1;0;false;false;;;;;;
                                  -144128;2;0;false;false;0;0;0;;;
                                  -144130;1;0;false;false;;;;;;
                                  -144131;7;0;false;false;0;0;0;;;
                                  -144138;1;0;false;false;;;;;;
                                  -144139;2;0;false;false;0;0;0;;;
                                  -144141;1;0;false;false;;;;;;
                                  -144142;7;0;false;false;0;0;0;;;
                                  -144149;3;0;false;false;;;;;;
                                  -144152;6;1;false;false;127;0;85;;;
                                  -144158;1;0;false;false;;;;;;
                                  -144159;7;0;false;false;0;0;0;;;
                                  -144166;2;0;false;false;;;;;;
                                  -144168;1;0;false;false;0;0;0;;;
                                  -144169;2;0;false;false;;;;;;
                                  -144171;3;0;false;false;63;95;191;;;
                                  -144174;3;0;false;false;;;;;;
                                  -144177;1;0;false;false;63;95;191;;;
                                  -144178;1;0;false;false;;;;;;
                                  -144179;7;0;false;false;63;95;191;;;
                                  -144186;1;0;false;false;;;;;;
                                  -144187;3;0;false;false;63;95;191;;;
                                  -144190;1;0;false;false;;;;;;
                                  -144191;5;0;false;false;63;95;191;;;
                                  -144196;1;0;false;false;;;;;;
                                  -144197;5;0;false;false;63;95;191;;;
                                  -144202;1;0;false;false;;;;;;
                                  -144203;2;0;false;false;63;95;191;;;
                                  -144205;1;0;false;false;;;;;;
                                  -144206;3;0;false;false;63;95;191;;;
                                  -144209;1;0;false;false;;;;;;
                                  -144210;5;0;false;false;63;95;191;;;
                                  -144215;1;0;false;false;;;;;;
                                  -144216;7;0;false;false;63;95;191;;;
                                  -144223;3;0;false;false;;;;;;
                                  -144226;1;0;false;false;63;95;191;;;
                                  -144227;1;0;false;false;;;;;;
                                  -144228;7;0;false;false;63;95;191;;;
                                  -144235;1;0;false;false;;;;;;
                                  -144236;4;0;false;false;63;95;191;;;
                                  -144240;1;0;false;false;;;;;;
                                  -144241;2;0;false;false;63;95;191;;;
                                  -144243;1;0;false;false;;;;;;
                                  -144244;1;0;false;false;63;95;191;;;
                                  -144245;1;0;false;false;;;;;;
                                  -144246;17;0;false;false;63;95;191;;;
                                  -144263;1;0;false;false;;;;;;
                                  -144264;3;0;false;false;63;95;191;;;
                                  -144267;1;0;false;false;;;;;;
                                  -144268;4;0;false;false;63;95;191;;;
                                  -144272;1;0;false;false;;;;;;
                                  -144273;3;0;false;false;63;95;191;;;
                                  -144276;1;0;false;false;;;;;;
                                  -144277;2;0;false;false;63;95;191;;;
                                  -144279;1;0;false;false;;;;;;
                                  -144280;2;0;false;false;63;95;191;;;
                                  -144282;1;0;false;false;;;;;;
                                  -144283;1;0;false;false;63;95;191;;;
                                  -144284;1;0;false;false;;;;;;
                                  -144285;5;0;false;false;63;95;191;;;
                                  -144290;1;0;false;false;;;;;;
                                  -144291;2;0;false;false;63;95;191;;;
                                  -144293;1;0;false;false;;;;;;
                                  -144294;3;0;false;false;63;95;191;;;
                                  -144297;1;0;false;false;;;;;;
                                  -144298;3;0;false;false;63;95;191;;;
                                  -144301;3;0;false;false;;;;;;
                                  -144304;1;0;false;false;63;95;191;;;
                                  -144305;1;0;false;false;;;;;;
                                  -144306;3;0;false;false;63;95;191;;;
                                  -144309;1;0;false;false;;;;;;
                                  -144310;3;0;false;false;63;95;191;;;
                                  -144313;1;0;false;false;;;;;;
                                  -144314;7;0;false;false;63;95;191;;;
                                  -144321;4;0;false;false;;;;;;
                                  -144325;1;0;false;false;63;95;191;;;
                                  -144326;1;0;false;false;;;;;;
                                  -144327;6;0;false;false;63;95;191;;;
                                  -144333;1;0;false;false;;;;;;
                                  -144334;3;0;false;false;63;95;191;;;
                                  -144337;1;0;false;false;;;;;;
                                  -144338;2;0;false;false;63;95;191;;;
                                  -144340;1;0;false;false;;;;;;
                                  -144341;6;0;false;false;63;95;191;;;
                                  -144347;1;0;false;false;;;;;;
                                  -144348;2;0;false;false;63;95;191;;;
                                  -144350;1;0;false;false;;;;;;
                                  -144351;1;0;false;false;63;95;191;;;
                                  -144352;1;0;false;false;;;;;;
                                  -144353;17;0;false;false;63;95;191;;;
                                  -144370;1;0;false;false;;;;;;
                                  -144371;3;0;false;false;63;95;191;;;
                                  -144374;1;0;false;false;;;;;;
                                  -144375;4;0;false;false;63;95;191;;;
                                  -144379;1;0;false;false;;;;;;
                                  -144380;3;0;false;false;63;95;191;;;
                                  -144383;1;0;false;false;;;;;;
                                  -144384;5;0;false;false;63;95;191;;;
                                  -144389;1;0;false;false;;;;;;
                                  -144390;3;0;false;false;63;95;191;;;
                                  -144393;4;0;false;false;;;;;;
                                  -144397;1;0;false;false;63;95;191;;;
                                  -144398;1;0;false;false;;;;;;
                                  -144399;8;0;false;false;63;95;191;;;
                                  -144407;1;0;false;false;;;;;;
                                  -144408;9;0;false;false;63;95;191;;;
                                  -144417;1;0;false;false;;;;;;
                                  -144418;3;0;false;false;63;95;191;;;
                                  -144421;1;0;false;false;;;;;;
                                  -144422;7;0;false;false;63;95;191;;;
                                  -144429;3;0;false;false;;;;;;
                                  -144432;1;0;false;false;63;95;191;;;
                                  -144433;1;0;false;false;;;;;;
                                  -144434;3;0;false;false;127;127;159;;;
                                  -144437;3;0;false;false;;;;;;
                                  -144440;1;0;false;false;63;95;191;;;
                                  -144441;3;0;false;false;;;;;;
                                  -144444;1;0;false;false;63;95;191;;;
                                  -144445;1;0;false;false;;;;;;
                                  -144446;7;1;false;false;127;159;191;;;
                                  -144453;6;0;false;false;63;95;191;;;
                                  -144459;1;0;false;false;;;;;;
                                  -144460;3;0;false;false;63;95;191;;;
                                  -144463;1;0;false;false;;;;;;
                                  -144464;6;0;false;false;63;95;191;;;
                                  -144470;1;0;false;false;;;;;;
                                  -144471;2;0;false;false;63;95;191;;;
                                  -144473;1;0;false;false;;;;;;
                                  -144474;6;0;false;false;63;95;191;;;
                                  -144480;1;0;false;false;;;;;;
                                  -144481;3;0;false;false;63;95;191;;;
                                  -144484;1;0;false;false;;;;;;
                                  -144485;5;0;false;false;63;95;191;;;
                                  -144490;1;0;false;false;;;;;;
                                  -144491;4;0;false;false;63;95;191;;;
                                  -144495;4;0;false;false;;;;;;
                                  -144499;1;0;false;false;63;95;191;;;
                                  -144500;2;0;false;false;;;;;;
                                  -144502;1;0;false;false;63;95;191;;;
                                  -144503;1;0;false;false;;;;;;
                                  -144504;42;0;false;false;63;95;191;;;
                                  -144546;1;0;false;false;;;;;;
                                  -144547;1;0;false;false;63;95;191;;;
                                  -144548;1;0;false;false;;;;;;
                                  -144549;8;1;false;false;127;159;191;;;
                                  -144557;1;0;false;false;63;95;191;;;
                                  -144558;1;0;false;false;;;;;;
                                  -144559;10;0;false;false;63;95;191;;;
                                  -144569;1;0;false;false;;;;;;
                                  -144570;4;0;false;false;63;95;191;;;
                                  -144574;1;0;false;false;;;;;;
                                  -144575;5;0;false;false;63;95;191;;;
                                  -144580;1;0;false;false;;;;;;
                                  -144581;2;0;false;false;63;95;191;;;
                                  -144583;1;0;false;false;;;;;;
                                  -144584;6;0;false;false;63;95;191;;;
                                  -144590;1;0;false;false;;;;;;
                                  -144591;3;0;false;false;63;95;191;;;
                                  -144594;1;0;false;false;;;;;;
                                  -144595;6;0;false;false;63;95;191;;;
                                  -144601;1;0;false;false;;;;;;
                                  -144602;2;0;false;false;63;95;191;;;
                                  -144604;1;0;false;false;;;;;;
                                  -144605;2;0;false;false;63;95;191;;;
                                  -144607;1;0;false;false;;;;;;
                                  -144608;10;0;false;false;63;95;191;;;
                                  -144618;3;0;false;false;;;;;;
                                  -144621;1;0;false;false;63;95;191;;;
                                  -144622;2;0;false;false;;;;;;
                                  -144624;3;0;false;false;63;95;191;;;
                                  -144627;1;0;false;false;;;;;;
                                  -144628;5;0;false;false;63;95;191;;;
                                  -144633;1;0;false;false;;;;;;
                                  -144634;2;0;false;false;63;95;191;;;
                                  -144636;1;0;false;false;;;;;;
                                  -144637;3;0;false;false;63;95;191;;;
                                  -144640;1;0;false;false;;;;;;
                                  -144641;5;0;false;false;63;95;191;;;
                                  -144646;1;0;false;false;;;;;;
                                  -144647;7;0;false;false;63;95;191;;;
                                  -144654;1;0;false;false;;;;;;
                                  -144655;4;0;false;false;63;95;191;;;
                                  -144659;1;0;false;false;;;;;;
                                  -144660;2;0;false;false;63;95;191;;;
                                  -144662;1;0;false;false;;;;;;
                                  -144663;1;0;false;false;63;95;191;;;
                                  -144664;1;0;false;false;;;;;;
                                  -144665;17;0;false;false;63;95;191;;;
                                  -144682;1;0;false;false;;;;;;
                                  -144683;3;0;false;false;63;95;191;;;
                                  -144686;1;0;false;false;;;;;;
                                  -144687;4;0;false;false;63;95;191;;;
                                  -144691;1;0;false;false;;;;;;
                                  -144692;3;0;false;false;63;95;191;;;
                                  -144695;4;0;false;false;;;;;;
                                  -144699;1;0;false;false;63;95;191;;;
                                  -144700;2;0;false;false;;;;;;
                                  -144702;2;0;false;false;63;95;191;;;
                                  -144704;1;0;false;false;;;;;;
                                  -144705;2;0;false;false;63;95;191;;;
                                  -144707;1;0;false;false;;;;;;
                                  -144708;1;0;false;false;63;95;191;;;
                                  -144709;1;0;false;false;;;;;;
                                  -144710;5;0;false;false;63;95;191;;;
                                  -144715;1;0;false;false;;;;;;
                                  -144716;2;0;false;false;63;95;191;;;
                                  -144718;1;0;false;false;;;;;;
                                  -144719;3;0;false;false;63;95;191;;;
                                  -144722;1;0;false;false;;;;;;
                                  -144723;3;0;false;false;63;95;191;;;
                                  -144726;1;0;false;false;;;;;;
                                  -144727;3;0;false;false;63;95;191;;;
                                  -144730;1;0;false;false;;;;;;
                                  -144731;3;0;false;false;63;95;191;;;
                                  -144734;1;0;false;false;;;;;;
                                  -144735;5;0;false;false;63;95;191;;;
                                  -144740;1;0;false;false;;;;;;
                                  -144741;7;0;false;false;63;95;191;;;
                                  -144748;3;0;false;false;;;;;;
                                  -144751;1;0;false;false;63;95;191;;;
                                  -144752;1;0;false;false;;;;;;
                                  -144753;11;1;false;false;127;159;191;;;
                                  -144764;12;0;false;false;63;95;191;;;
                                  -144776;1;0;false;false;;;;;;
                                  -144777;4;0;false;false;127;127;159;;;
                                  -144781;3;0;false;false;;;;;;
                                  -144784;1;0;false;false;63;95;191;;;
                                  -144785;4;0;false;false;;;;;;
                                  -144789;4;0;false;false;127;127;159;;;
                                  -144793;21;0;false;false;63;95;191;;;
                                  -144814;1;0;false;false;;;;;;
                                  -144815;1;0;false;false;127;127;159;;;
                                  -144816;1;0;false;false;;;;;;
                                  -144817;2;0;false;false;63;95;191;;;
                                  -144819;1;0;false;false;;;;;;
                                  -144820;3;0;false;false;63;95;191;;;
                                  -144823;1;0;false;false;;;;;;
                                  -144824;8;0;false;false;63;95;191;;;
                                  -144832;1;0;false;false;;;;;;
                                  -144833;3;0;false;false;63;95;191;;;
                                  -144836;1;0;false;false;;;;;;
                                  -144837;4;0;false;false;63;95;191;;;
                                  -144841;1;0;false;false;;;;;;
                                  -144842;8;0;false;false;63;95;191;;;
                                  -144850;5;0;false;false;127;127;159;;;
                                  -144855;3;0;false;false;;;;;;
                                  -144858;1;0;false;false;63;95;191;;;
                                  -144859;4;0;false;false;;;;;;
                                  -144863;4;0;false;false;127;127;159;;;
                                  -144867;27;0;false;false;63;95;191;;;
                                  -144894;1;0;false;false;;;;;;
                                  -144895;1;0;false;false;127;127;159;;;
                                  -144896;1;0;false;false;;;;;;
                                  -144897;2;0;false;false;63;95;191;;;
                                  -144899;1;0;false;false;;;;;;
                                  -144900;3;0;false;false;63;95;191;;;
                                  -144903;1;0;false;false;;;;;;
                                  -144904;6;0;false;false;63;95;191;;;
                                  -144910;1;0;false;false;;;;;;
                                  -144911;4;0;false;false;63;95;191;;;
                                  -144915;1;0;false;false;;;;;;
                                  -144916;3;0;false;false;63;95;191;;;
                                  -144919;1;0;false;false;;;;;;
                                  -144920;6;0;false;false;63;95;191;;;
                                  -144926;1;0;false;false;;;;;;
                                  -144927;4;0;false;false;63;95;191;;;
                                  -144931;1;0;false;false;;;;;;
                                  -144932;7;0;false;false;63;95;191;;;
                                  -144939;1;0;false;false;;;;;;
                                  -144940;3;0;false;false;63;95;191;;;
                                  -144943;1;0;false;false;;;;;;
                                  -144944;8;0;false;false;63;95;191;;;
                                  -144952;5;0;false;false;127;127;159;;;
                                  -144957;3;0;false;false;;;;;;
                                  -144960;1;0;false;false;63;95;191;;;
                                  -144961;1;0;false;false;;;;;;
                                  -144962;5;0;false;false;127;127;159;;;
                                  -144967;3;0;false;false;;;;;;
                                  -144970;1;0;false;false;63;95;191;;;
                                  -144971;1;0;false;false;;;;;;
                                  -144972;11;1;false;false;127;159;191;;;
                                  -144983;24;0;false;false;63;95;191;;;
                                  -145007;1;0;false;false;;;;;;
                                  -145008;4;0;false;false;127;127;159;;;
                                  -145012;3;0;false;false;;;;;;
                                  -145015;1;0;false;false;63;95;191;;;
                                  -145016;3;0;false;false;;;;;;
                                  -145019;4;0;false;false;127;127;159;;;
                                  -145023;22;0;false;false;63;95;191;;;
                                  -145045;1;0;false;false;;;;;;
                                  -145046;4;0;false;false;63;95;191;;;
                                  -145050;1;0;false;false;;;;;;
                                  -145051;3;0;false;false;63;95;191;;;
                                  -145054;1;0;false;false;;;;;;
                                  -145055;6;0;false;false;63;95;191;;;
                                  -145061;1;0;false;false;;;;;;
                                  -145062;2;0;false;false;63;95;191;;;
                                  -145064;1;0;false;false;;;;;;
                                  -145065;7;0;false;false;63;95;191;;;
                                  -145072;5;0;false;false;127;127;159;;;
                                  -145077;3;0;false;false;;;;;;
                                  -145080;1;0;false;false;63;95;191;;;
                                  -145081;1;0;false;false;;;;;;
                                  -145082;5;0;false;false;127;127;159;;;
                                  -145087;3;0;false;false;;;;;;
                                  -145090;2;0;false;false;63;95;191;;;
                                  -145092;2;0;false;false;;;;;;
                                  -145094;6;1;false;false;127;0;85;;;
                                  -145100;1;0;false;false;;;;;;
                                  -145101;10;0;false;false;0;0;0;;;
                                  -145111;1;0;false;false;;;;;;
                                  -145112;22;0;false;false;0;0;0;;;
                                  -145134;3;1;false;false;127;0;85;;;
                                  -145137;1;0;false;false;;;;;;
                                  -145138;7;0;false;false;0;0;0;;;
                                  -145145;1;0;false;false;;;;;;
                                  -145146;1;0;false;false;0;0;0;;;
                                  -145147;3;0;false;false;;;;;;
                                  -145150;14;0;false;false;0;0;0;;;
                                  -145164;3;0;false;false;;;;;;
                                  -145167;2;1;false;false;127;0;85;;;
                                  -145169;1;0;false;false;;;;;;
                                  -145170;7;0;false;false;0;0;0;;;
                                  -145177;1;0;false;false;;;;;;
                                  -145178;1;0;false;false;0;0;0;;;
                                  -145179;1;0;false;false;;;;;;
                                  -145180;1;0;false;false;0;0;0;;;
                                  -145181;1;0;false;false;;;;;;
                                  -145182;2;0;false;false;0;0;0;;;
                                  -145184;1;0;false;false;;;;;;
                                  -145185;6;0;false;false;0;0;0;;;
                                  -145191;1;0;false;false;;;;;;
                                  -145192;2;0;false;false;0;0;0;;;
                                  -145194;1;0;false;false;;;;;;
                                  -145195;15;0;false;false;0;0;0;;;
                                  -145210;1;0;false;false;;;;;;
                                  -145211;1;0;false;false;0;0;0;;;
                                  -145212;4;0;false;false;;;;;;
                                  -145216;38;0;false;false;0;0;0;;;
                                  -145254;3;0;false;false;;;;;;
                                  -145257;1;0;false;false;0;0;0;;;
                                  -145258;5;0;false;false;;;;;;
                                  -145263;2;1;false;false;127;0;85;;;
                                  -145265;1;0;false;false;;;;;;
                                  -145266;16;0;false;false;0;0;0;;;
                                  -145282;1;0;false;false;;;;;;
                                  -145283;1;0;false;false;0;0;0;;;
                                  -145284;4;0;false;false;;;;;;
                                  -145288;6;1;false;false;127;0;85;;;
                                  -145294;1;0;false;false;;;;;;
                                  -145295;48;0;false;false;0;0;0;;;
                                  -145343;3;0;false;false;;;;;;
                                  -145346;1;0;false;false;0;0;0;;;
                                  -145347;4;0;false;false;;;;;;
                                  -145351;6;1;false;false;127;0;85;;;
                                  -145357;1;0;false;false;;;;;;
                                  -145358;4;1;false;false;127;0;85;;;
                                  -145362;1;0;false;false;0;0;0;;;
                                  -145363;2;0;false;false;;;;;;
                                  -145365;1;0;false;false;0;0;0;;;
                                  -145366;2;0;false;false;;;;;;
                                  -145368;3;0;false;false;63;95;191;;;
                                  -145371;3;0;false;false;;;;;;
                                  -145374;1;0;false;false;63;95;191;;;
                                  -145375;1;0;false;false;;;;;;
                                  -145376;7;0;false;false;63;95;191;;;
                                  -145383;1;0;false;false;;;;;;
                                  -145384;3;0;false;false;63;95;191;;;
                                  -145387;1;0;false;false;;;;;;
                                  -145388;7;0;false;false;63;95;191;;;
                                  -145395;3;0;false;false;;;;;;
                                  -145398;1;0;false;false;63;95;191;;;
                                  -145399;1;0;false;false;;;;;;
                                  -145400;7;0;false;false;63;95;191;;;
                                  -145407;1;0;false;false;;;;;;
                                  -145408;2;0;false;false;63;95;191;;;
                                  -145410;1;0;false;false;;;;;;
                                  -145411;5;0;false;false;63;95;191;;;
                                  -145416;1;0;false;false;;;;;;
                                  -145417;5;0;false;false;63;95;191;;;
                                  -145422;1;0;false;false;;;;;;
                                  -145423;2;0;false;false;63;95;191;;;
                                  -145425;1;0;false;false;;;;;;
                                  -145426;1;0;false;false;63;95;191;;;
                                  -145427;1;0;false;false;;;;;;
                                  -145428;17;0;false;false;63;95;191;;;
                                  -145445;1;0;false;false;;;;;;
                                  -145446;3;0;false;false;63;95;191;;;
                                  -145449;1;0;false;false;;;;;;
                                  -145450;4;0;false;false;63;95;191;;;
                                  -145454;1;0;false;false;;;;;;
                                  -145455;4;0;false;false;63;95;191;;;
                                  -145459;4;0;false;false;;;;;;
                                  -145463;1;0;false;false;63;95;191;;;
                                  -145464;1;0;false;false;;;;;;
                                  -145465;6;0;false;false;63;95;191;;;
                                  -145471;1;0;false;false;;;;;;
                                  -145472;3;0;false;false;63;95;191;;;
                                  -145475;1;0;false;false;;;;;;
                                  -145476;2;0;false;false;63;95;191;;;
                                  -145478;1;0;false;false;;;;;;
                                  -145479;6;0;false;false;63;95;191;;;
                                  -145485;1;0;false;false;;;;;;
                                  -145486;2;0;false;false;63;95;191;;;
                                  -145488;1;0;false;false;;;;;;
                                  -145489;1;0;false;false;63;95;191;;;
                                  -145490;1;0;false;false;;;;;;
                                  -145491;17;0;false;false;63;95;191;;;
                                  -145508;1;0;false;false;;;;;;
                                  -145509;3;0;false;false;63;95;191;;;
                                  -145512;1;0;false;false;;;;;;
                                  -145513;4;0;false;false;63;95;191;;;
                                  -145517;1;0;false;false;;;;;;
                                  -145518;3;0;false;false;63;95;191;;;
                                  -145521;1;0;false;false;;;;;;
                                  -145522;5;0;false;false;63;95;191;;;
                                  -145527;1;0;false;false;;;;;;
                                  -145528;3;0;false;false;63;95;191;;;
                                  -145531;4;0;false;false;;;;;;
                                  -145535;1;0;false;false;63;95;191;;;
                                  -145536;1;0;false;false;;;;;;
                                  -145537;8;0;false;false;63;95;191;;;
                                  -145545;1;0;false;false;;;;;;
                                  -145546;9;0;false;false;63;95;191;;;
                                  -145555;1;0;false;false;;;;;;
                                  -145556;3;0;false;false;63;95;191;;;
                                  -145559;1;0;false;false;;;;;;
                                  -145560;7;0;false;false;63;95;191;;;
                                  -145567;3;0;false;false;;;;;;
                                  -145570;1;0;false;false;63;95;191;;;
                                  -145571;1;0;false;false;;;;;;
                                  -145572;3;0;false;false;127;127;159;;;
                                  -145575;3;0;false;false;;;;;;
                                  -145578;1;0;false;false;63;95;191;;;
                                  -145579;3;0;false;false;;;;;;
                                  -145582;1;0;false;false;63;95;191;;;
                                  -145583;1;0;false;false;;;;;;
                                  -145584;8;1;false;false;127;159;191;;;
                                  -145592;3;0;false;false;63;95;191;;;
                                  -145595;1;0;false;false;;;;;;
                                  -145596;6;0;false;false;63;95;191;;;
                                  -145602;1;0;false;false;;;;;;
                                  -145603;2;0;false;false;63;95;191;;;
                                  -145605;1;0;false;false;;;;;;
                                  -145606;2;0;false;false;63;95;191;;;
                                  -145608;1;0;false;false;;;;;;
                                  -145609;5;0;false;false;63;95;191;;;
                                  -145614;1;0;false;false;;;;;;
                                  -145615;5;0;false;false;63;95;191;;;
                                  -145620;1;0;false;false;;;;;;
                                  -145621;2;0;false;false;63;95;191;;;
                                  -145623;1;0;false;false;;;;;;
                                  -145624;1;0;false;false;63;95;191;;;
                                  -145625;1;0;false;false;;;;;;
                                  -145626;17;0;false;false;63;95;191;;;
                                  -145643;1;0;false;false;;;;;;
                                  -145644;3;0;false;false;63;95;191;;;
                                  -145647;1;0;false;false;;;;;;
                                  -145648;4;0;false;false;63;95;191;;;
                                  -145652;1;0;false;false;;;;;;
                                  -145653;4;0;false;false;63;95;191;;;
                                  -145657;4;0;false;false;;;;;;
                                  -145661;1;0;false;false;63;95;191;;;
                                  -145662;3;0;false;false;;;;;;
                                  -145665;1;0;false;false;63;95;191;;;
                                  -145666;1;0;false;false;;;;;;
                                  -145667;11;1;false;false;127;159;191;;;
                                  -145678;12;0;false;false;63;95;191;;;
                                  -145690;1;0;false;false;;;;;;
                                  -145691;4;0;false;false;127;127;159;;;
                                  -145695;3;0;false;false;;;;;;
                                  -145698;1;0;false;false;63;95;191;;;
                                  -145699;4;0;false;false;;;;;;
                                  -145703;4;0;false;false;127;127;159;;;
                                  -145707;21;0;false;false;63;95;191;;;
                                  -145728;1;0;false;false;;;;;;
                                  -145729;1;0;false;false;127;127;159;;;
                                  -145730;1;0;false;false;;;;;;
                                  -145731;2;0;false;false;63;95;191;;;
                                  -145733;1;0;false;false;;;;;;
                                  -145734;3;0;false;false;63;95;191;;;
                                  -145737;1;0;false;false;;;;;;
                                  -145738;8;0;false;false;63;95;191;;;
                                  -145746;1;0;false;false;;;;;;
                                  -145747;3;0;false;false;63;95;191;;;
                                  -145750;1;0;false;false;;;;;;
                                  -145751;4;0;false;false;63;95;191;;;
                                  -145755;1;0;false;false;;;;;;
                                  -145756;8;0;false;false;63;95;191;;;
                                  -145764;5;0;false;false;127;127;159;;;
                                  -145769;3;0;false;false;;;;;;
                                  -145772;1;0;false;false;63;95;191;;;
                                  -145773;4;0;false;false;;;;;;
                                  -145777;4;0;false;false;127;127;159;;;
                                  -145781;27;0;false;false;63;95;191;;;
                                  -145808;1;0;false;false;;;;;;
                                  -145809;1;0;false;false;127;127;159;;;
                                  -145810;1;0;false;false;;;;;;
                                  -145811;2;0;false;false;63;95;191;;;
                                  -145813;1;0;false;false;;;;;;
                                  -145814;3;0;false;false;63;95;191;;;
                                  -145817;1;0;false;false;;;;;;
                                  -145818;6;0;false;false;63;95;191;;;
                                  -145824;1;0;false;false;;;;;;
                                  -145825;4;0;false;false;63;95;191;;;
                                  -145829;1;0;false;false;;;;;;
                                  -145830;3;0;false;false;63;95;191;;;
                                  -145833;1;0;false;false;;;;;;
                                  -145834;6;0;false;false;63;95;191;;;
                                  -145840;1;0;false;false;;;;;;
                                  -145841;4;0;false;false;63;95;191;;;
                                  -145845;1;0;false;false;;;;;;
                                  -145846;7;0;false;false;63;95;191;;;
                                  -145853;1;0;false;false;;;;;;
                                  -145854;3;0;false;false;63;95;191;;;
                                  -145857;1;0;false;false;;;;;;
                                  -145858;8;0;false;false;63;95;191;;;
                                  -145866;5;0;false;false;127;127;159;;;
                                  -145871;3;0;false;false;;;;;;
                                  -145874;1;0;false;false;63;95;191;;;
                                  -145875;1;0;false;false;;;;;;
                                  -145876;5;0;false;false;127;127;159;;;
                                  -145881;3;0;false;false;;;;;;
                                  -145884;2;0;false;false;63;95;191;;;
                                  -145886;2;0;false;false;;;;;;
                                  -145888;6;1;false;false;127;0;85;;;
                                  -145894;1;0;false;false;;;;;;
                                  -145895;10;0;false;false;0;0;0;;;
                                  -145905;1;0;false;false;;;;;;
                                  -145906;2;0;false;false;0;0;0;;;
                                  -145908;1;0;false;false;;;;;;
                                  -145909;16;0;false;false;0;0;0;;;
                                  -145925;1;0;false;false;;;;;;
                                  -145926;1;0;false;false;0;0;0;;;
                                  -145927;3;0;false;false;;;;;;
                                  -145930;14;0;false;false;0;0;0;;;
                                  -145944;3;0;false;false;;;;;;
                                  -145947;10;0;false;false;0;0;0;;;
                                  -145957;1;0;false;false;;;;;;
                                  -145958;9;0;false;false;0;0;0;;;
                                  -145967;6;0;false;false;;;;;;
                                  -145973;2;1;false;false;127;0;85;;;
                                  -145975;1;0;false;false;;;;;;
                                  -145976;16;0;false;false;0;0;0;;;
                                  -145992;1;0;false;false;;;;;;
                                  -145993;1;0;false;false;0;0;0;;;
                                  -145994;4;0;false;false;;;;;;
                                  -145998;6;0;false;false;0;0;0;;;
                                  -146004;1;0;false;false;;;;;;
                                  -146005;1;0;false;false;0;0;0;;;
                                  -146006;1;0;false;false;;;;;;
                                  -146007;35;0;false;false;0;0;0;;;
                                  -146042;3;0;false;false;;;;;;
                                  -146045;1;0;false;false;0;0;0;;;
                                  -146046;3;0;false;false;;;;;;
                                  -146049;4;1;false;false;127;0;85;;;
                                  -146053;1;0;false;false;;;;;;
                                  -146054;1;0;false;false;0;0;0;;;
                                  -146055;4;0;false;false;;;;;;
                                  -146059;6;0;false;false;0;0;0;;;
                                  -146065;1;0;false;false;;;;;;
                                  -146066;1;0;false;false;0;0;0;;;
                                  -146067;1;0;false;false;;;;;;
                                  -146068;3;1;false;false;127;0;85;;;
                                  -146071;1;0;false;false;;;;;;
                                  -146072;14;0;false;false;0;0;0;;;
                                  -146086;3;0;false;false;;;;;;
                                  -146089;1;0;false;false;0;0;0;;;
                                  -146090;3;0;false;false;;;;;;
                                  -146093;6;1;false;false;127;0;85;;;
                                  -146099;1;0;false;false;;;;;;
                                  -146100;7;0;false;false;0;0;0;;;
                                  -146107;2;0;false;false;;;;;;
                                  -146109;1;0;false;false;0;0;0;;;
                                  -146110;2;0;false;false;;;;;;
                                  -146112;3;0;false;false;63;95;191;;;
                                  -146115;3;0;false;false;;;;;;
                                  -146118;1;0;false;false;63;95;191;;;
                                  -146119;1;0;false;false;;;;;;
                                  -146120;7;0;false;false;63;95;191;;;
                                  -146127;1;0;false;false;;;;;;
                                  -146128;3;0;false;false;63;95;191;;;
                                  -146131;1;0;false;false;;;;;;
                                  -146132;6;0;false;false;63;95;191;;;
                                  -146138;1;0;false;false;;;;;;
                                  -146139;3;0;false;false;63;95;191;;;
                                  -146142;1;0;false;false;;;;;;
                                  -146143;3;0;false;false;63;95;191;;;
                                  -146146;1;0;false;false;;;;;;
                                  -146147;5;0;false;false;63;95;191;;;
                                  -146152;1;0;false;false;;;;;;
                                  -146153;4;0;false;false;63;95;191;;;
                                  -146157;1;0;false;false;;;;;;
                                  -146158;6;0;false;false;63;95;191;;;
                                  -146164;3;0;false;false;;;;;;
                                  -146167;1;0;false;false;63;95;191;;;
                                  -146168;1;0;false;false;;;;;;
                                  -146169;7;0;false;false;63;95;191;;;
                                  -146176;1;0;false;false;;;;;;
                                  -146177;2;0;false;false;63;95;191;;;
                                  -146179;1;0;false;false;;;;;;
                                  -146180;5;0;false;false;63;95;191;;;
                                  -146185;1;0;false;false;;;;;;
                                  -146186;5;0;false;false;63;95;191;;;
                                  -146191;1;0;false;false;;;;;;
                                  -146192;2;0;false;false;63;95;191;;;
                                  -146194;1;0;false;false;;;;;;
                                  -146195;1;0;false;false;63;95;191;;;
                                  -146196;1;0;false;false;;;;;;
                                  -146197;17;0;false;false;63;95;191;;;
                                  -146214;1;0;false;false;;;;;;
                                  -146215;3;0;false;false;63;95;191;;;
                                  -146218;1;0;false;false;;;;;;
                                  -146219;4;0;false;false;63;95;191;;;
                                  -146223;1;0;false;false;;;;;;
                                  -146224;4;0;false;false;63;95;191;;;
                                  -146228;4;0;false;false;;;;;;
                                  -146232;1;0;false;false;63;95;191;;;
                                  -146233;1;0;false;false;;;;;;
                                  -146234;6;0;false;false;63;95;191;;;
                                  -146240;1;0;false;false;;;;;;
                                  -146241;3;0;false;false;63;95;191;;;
                                  -146244;1;0;false;false;;;;;;
                                  -146245;2;0;false;false;63;95;191;;;
                                  -146247;1;0;false;false;;;;;;
                                  -146248;6;0;false;false;63;95;191;;;
                                  -146254;1;0;false;false;;;;;;
                                  -146255;2;0;false;false;63;95;191;;;
                                  -146257;1;0;false;false;;;;;;
                                  -146258;1;0;false;false;63;95;191;;;
                                  -146259;1;0;false;false;;;;;;
                                  -146260;17;0;false;false;63;95;191;;;
                                  -146277;1;0;false;false;;;;;;
                                  -146278;3;0;false;false;63;95;191;;;
                                  -146281;1;0;false;false;;;;;;
                                  -146282;4;0;false;false;63;95;191;;;
                                  -146286;1;0;false;false;;;;;;
                                  -146287;3;0;false;false;63;95;191;;;
                                  -146290;1;0;false;false;;;;;;
                                  -146291;5;0;false;false;63;95;191;;;
                                  -146296;1;0;false;false;;;;;;
                                  -146297;3;0;false;false;63;95;191;;;
                                  -146300;4;0;false;false;;;;;;
                                  -146304;1;0;false;false;63;95;191;;;
                                  -146305;1;0;false;false;;;;;;
                                  -146306;8;0;false;false;63;95;191;;;
                                  -146314;1;0;false;false;;;;;;
                                  -146315;9;0;false;false;63;95;191;;;
                                  -146324;1;0;false;false;;;;;;
                                  -146325;3;0;false;false;63;95;191;;;
                                  -146328;1;0;false;false;;;;;;
                                  -146329;7;0;false;false;63;95;191;;;
                                  -146336;3;0;false;false;;;;;;
                                  -146339;1;0;false;false;63;95;191;;;
                                  -146340;4;0;false;false;;;;;;
                                  -146344;1;0;false;false;63;95;191;;;
                                  -146345;1;0;false;false;;;;;;
                                  -146346;7;1;false;false;127;159;191;;;
                                  -146353;5;0;false;false;63;95;191;;;
                                  -146358;1;0;false;false;;;;;;
                                  -146359;3;0;false;false;63;95;191;;;
                                  -146362;1;0;false;false;;;;;;
                                  -146363;5;0;false;false;63;95;191;;;
                                  -146368;1;0;false;false;;;;;;
                                  -146369;6;0;false;false;63;95;191;;;
                                  -146375;1;0;false;false;;;;;;
                                  -146376;2;0;false;false;63;95;191;;;
                                  -146378;1;0;false;false;;;;;;
                                  -146379;3;0;false;false;63;95;191;;;
                                  -146382;1;0;false;false;;;;;;
                                  -146383;5;0;false;false;63;95;191;;;
                                  -146388;1;0;false;false;;;;;;
                                  -146389;6;0;false;false;63;95;191;;;
                                  -146395;1;0;false;false;;;;;;
                                  -146396;2;0;false;false;63;95;191;;;
                                  -146398;1;0;false;false;;;;;;
                                  -146399;6;0;false;false;63;95;191;;;
                                  -146405;3;0;false;false;;;;;;
                                  -146408;1;0;false;false;63;95;191;;;
                                  -146409;1;0;false;false;;;;;;
                                  -146410;7;1;false;false;127;159;191;;;
                                  -146417;6;0;false;false;63;95;191;;;
                                  -146423;1;0;false;false;;;;;;
                                  -146424;3;0;false;false;63;95;191;;;
                                  -146427;1;0;false;false;;;;;;
                                  -146428;6;0;false;false;63;95;191;;;
                                  -146434;1;0;false;false;;;;;;
                                  -146435;2;0;false;false;63;95;191;;;
                                  -146437;1;0;false;false;;;;;;
                                  -146438;5;0;false;false;63;95;191;;;
                                  -146443;1;0;false;false;;;;;;
                                  -146444;6;0;false;false;63;95;191;;;
                                  -146450;1;0;false;false;;;;;;
                                  -146451;2;0;false;false;63;95;191;;;
                                  -146453;1;0;false;false;;;;;;
                                  -146454;6;0;false;false;63;95;191;;;
                                  -146460;3;0;false;false;;;;;;
                                  -146463;1;0;false;false;63;95;191;;;
                                  -146464;3;0;false;false;;;;;;
                                  -146467;1;0;false;false;63;95;191;;;
                                  -146468;1;0;false;false;;;;;;
                                  -146469;8;1;false;false;127;159;191;;;
                                  -146477;3;0;false;false;63;95;191;;;
                                  -146480;1;0;false;false;;;;;;
                                  -146481;6;0;false;false;63;95;191;;;
                                  -146487;1;0;false;false;;;;;;
                                  -146488;2;0;false;false;63;95;191;;;
                                  -146490;1;0;false;false;;;;;;
                                  -146491;2;0;false;false;63;95;191;;;
                                  -146493;1;0;false;false;;;;;;
                                  -146494;5;0;false;false;63;95;191;;;
                                  -146499;1;0;false;false;;;;;;
                                  -146500;5;0;false;false;63;95;191;;;
                                  -146505;1;0;false;false;;;;;;
                                  -146506;2;0;false;false;63;95;191;;;
                                  -146508;1;0;false;false;;;;;;
                                  -146509;1;0;false;false;63;95;191;;;
                                  -146510;1;0;false;false;;;;;;
                                  -146511;17;0;false;false;63;95;191;;;
                                  -146528;1;0;false;false;;;;;;
                                  -146529;3;0;false;false;63;95;191;;;
                                  -146532;4;0;false;false;;;;;;
                                  -146536;1;0;false;false;63;95;191;;;
                                  -146537;2;0;false;false;;;;;;
                                  -146539;4;0;false;false;63;95;191;;;
                                  -146543;1;0;false;false;;;;;;
                                  -146544;4;0;false;false;63;95;191;;;
                                  -146548;2;0;false;false;;;;;;
                                  -146550;3;0;false;false;63;95;191;;;
                                  -146553;1;0;false;false;;;;;;
                                  -146554;8;0;false;false;63;95;191;;;
                                  -146562;1;0;false;false;;;;;;
                                  -146563;6;0;false;false;63;95;191;;;
                                  -146569;1;0;false;false;;;;;;
                                  -146570;4;0;false;false;63;95;191;;;
                                  -146574;1;0;false;false;;;;;;
                                  -146575;7;0;false;false;63;95;191;;;
                                  -146582;1;0;false;false;;;;;;
                                  -146583;3;0;false;false;63;95;191;;;
                                  -146586;1;0;false;false;;;;;;
                                  -146587;5;0;false;false;63;95;191;;;
                                  -146592;1;0;false;false;;;;;;
                                  -146593;6;0;false;false;63;95;191;;;
                                  -146599;2;0;false;false;;;;;;
                                  -146601;3;0;false;false;63;95;191;;;
                                  -146604;1;0;false;false;;;;;;
                                  -146605;5;0;false;false;63;95;191;;;
                                  -146610;4;0;false;false;;;;;;
                                  -146614;1;0;false;false;63;95;191;;;
                                  -146615;2;0;false;false;;;;;;
                                  -146617;8;0;false;false;63;95;191;;;
                                  -146625;1;0;false;false;;;;;;
                                  -146626;6;0;false;false;127;127;159;;;
                                  -146632;10;0;false;false;63;95;191;;;
                                  -146642;7;0;false;false;127;127;159;;;
                                  -146649;1;0;false;false;;;;;;
                                  -146650;4;0;false;false;63;95;191;;;
                                  -146654;1;0;false;false;;;;;;
                                  -146655;4;0;false;false;63;95;191;;;
                                  -146659;1;0;false;false;;;;;;
                                  -146660;1;0;false;false;63;95;191;;;
                                  -146661;1;0;false;false;;;;;;
                                  -146662;8;0;false;false;63;95;191;;;
                                  -146670;1;0;false;false;;;;;;
                                  -146671;6;0;false;false;63;95;191;;;
                                  -146677;1;0;false;false;;;;;;
                                  -146678;2;0;false;false;63;95;191;;;
                                  -146680;1;0;false;false;;;;;;
                                  -146681;5;0;false;false;63;95;191;;;
                                  -146686;4;0;false;false;;;;;;
                                  -146690;1;0;false;false;63;95;191;;;
                                  -146691;2;0;false;false;;;;;;
                                  -146693;3;0;false;false;63;95;191;;;
                                  -146696;1;0;false;false;;;;;;
                                  -146697;3;0;false;false;63;95;191;;;
                                  -146700;1;0;false;false;;;;;;
                                  -146701;4;0;false;false;63;95;191;;;
                                  -146705;1;0;false;false;;;;;;
                                  -146706;8;0;false;false;63;95;191;;;
                                  -146714;1;0;false;false;;;;;;
                                  -146715;6;0;false;false;127;127;159;;;
                                  -146721;10;0;false;false;63;95;191;;;
                                  -146731;7;0;false;false;127;127;159;;;
                                  -146738;1;0;false;false;;;;;;
                                  -146739;4;0;false;false;63;95;191;;;
                                  -146743;1;0;false;false;;;;;;
                                  -146744;4;0;false;false;63;95;191;;;
                                  -146748;1;0;false;false;;;;;;
                                  -146749;2;0;false;false;63;95;191;;;
                                  -146751;1;0;false;false;;;;;;
                                  -146752;6;0;false;false;63;95;191;;;
                                  -146758;4;0;false;false;;;;;;
                                  -146762;1;0;false;false;63;95;191;;;
                                  -146763;2;0;false;false;;;;;;
                                  -146765;6;0;false;false;63;95;191;;;
                                  -146771;1;0;false;false;;;;;;
                                  -146772;23;0;false;false;63;95;191;;;
                                  -146795;1;0;false;false;;;;;;
                                  -146796;1;0;false;false;63;95;191;;;
                                  -146797;3;0;false;false;;;;;;
                                  -146800;1;0;false;false;63;95;191;;;
                                  -146801;1;0;false;false;;;;;;
                                  -146802;11;1;false;false;127;159;191;;;
                                  -146813;12;0;false;false;63;95;191;;;
                                  -146825;1;0;false;false;;;;;;
                                  -146826;4;0;false;false;127;127;159;;;
                                  -146830;3;0;false;false;;;;;;
                                  -146833;1;0;false;false;63;95;191;;;
                                  -146834;4;0;false;false;;;;;;
                                  -146838;4;0;false;false;127;127;159;;;
                                  -146842;21;0;false;false;63;95;191;;;
                                  -146863;1;0;false;false;;;;;;
                                  -146864;1;0;false;false;127;127;159;;;
                                  -146865;1;0;false;false;;;;;;
                                  -146866;2;0;false;false;63;95;191;;;
                                  -146868;1;0;false;false;;;;;;
                                  -146869;3;0;false;false;63;95;191;;;
                                  -146872;1;0;false;false;;;;;;
                                  -146873;8;0;false;false;63;95;191;;;
                                  -146881;1;0;false;false;;;;;;
                                  -146882;3;0;false;false;63;95;191;;;
                                  -146885;1;0;false;false;;;;;;
                                  -146886;4;0;false;false;63;95;191;;;
                                  -146890;1;0;false;false;;;;;;
                                  -146891;8;0;false;false;63;95;191;;;
                                  -146899;5;0;false;false;127;127;159;;;
                                  -146904;3;0;false;false;;;;;;
                                  -146907;1;0;false;false;63;95;191;;;
                                  -146908;4;0;false;false;;;;;;
                                  -146912;4;0;false;false;127;127;159;;;
                                  -146916;27;0;false;false;63;95;191;;;
                                  -146943;1;0;false;false;;;;;;
                                  -146944;1;0;false;false;127;127;159;;;
                                  -146945;1;0;false;false;;;;;;
                                  -146946;2;0;false;false;63;95;191;;;
                                  -146948;1;0;false;false;;;;;;
                                  -146949;3;0;false;false;63;95;191;;;
                                  -146952;1;0;false;false;;;;;;
                                  -146953;6;0;false;false;63;95;191;;;
                                  -146959;1;0;false;false;;;;;;
                                  -146960;4;0;false;false;63;95;191;;;
                                  -146964;1;0;false;false;;;;;;
                                  -146965;3;0;false;false;63;95;191;;;
                                  -146968;1;0;false;false;;;;;;
                                  -146969;6;0;false;false;63;95;191;;;
                                  -146975;1;0;false;false;;;;;;
                                  -146976;4;0;false;false;63;95;191;;;
                                  -146980;1;0;false;false;;;;;;
                                  -146981;7;0;false;false;63;95;191;;;
                                  -146988;1;0;false;false;;;;;;
                                  -146989;3;0;false;false;63;95;191;;;
                                  -146992;1;0;false;false;;;;;;
                                  -146993;8;0;false;false;63;95;191;;;
                                  -147001;5;0;false;false;127;127;159;;;
                                  -147006;3;0;false;false;;;;;;
                                  -147009;1;0;false;false;63;95;191;;;
                                  -147010;1;0;false;false;;;;;;
                                  -147011;5;0;false;false;127;127;159;;;
                                  -147016;3;0;false;false;;;;;;
                                  -147019;1;0;false;false;63;95;191;;;
                                  -147020;1;0;false;false;;;;;;
                                  -147021;11;1;false;false;127;159;191;;;
                                  -147032;24;0;false;false;63;95;191;;;
                                  -147056;1;0;false;false;;;;;;
                                  -147057;4;0;false;false;127;127;159;;;
                                  -147061;3;0;false;false;;;;;;
                                  -147064;1;0;false;false;63;95;191;;;
                                  -147065;3;0;false;false;;;;;;
                                  -147068;4;0;false;false;127;127;159;;;
                                  -147072;19;0;false;false;63;95;191;;;
                                  -147091;1;0;false;false;;;;;;
                                  -147092;4;0;false;false;63;95;191;;;
                                  -147096;1;0;false;false;;;;;;
                                  -147097;5;0;false;false;63;95;191;;;
                                  -147102;1;0;false;false;;;;;;
                                  -147103;6;0;false;false;63;95;191;;;
                                  -147109;1;0;false;false;;;;;;
                                  -147110;3;0;false;false;63;95;191;;;
                                  -147113;1;0;false;false;;;;;;
                                  -147114;3;0;false;false;63;95;191;;;
                                  -147117;1;0;false;false;;;;;;
                                  -147118;7;0;false;false;63;95;191;;;
                                  -147125;1;0;false;false;;;;;;
                                  -147126;3;0;false;false;63;95;191;;;
                                  -147129;1;0;false;false;;;;;;
                                  -147130;6;0;false;false;63;95;191;;;
                                  -147136;1;0;false;false;;;;;;
                                  -147137;7;0;false;false;63;95;191;;;
                                  -147144;5;0;false;false;127;127;159;;;
                                  -147149;4;0;false;false;;;;;;
                                  -147153;1;0;false;false;63;95;191;;;
                                  -147154;1;0;false;false;;;;;;
                                  -147155;5;0;false;false;127;127;159;;;
                                  -147160;3;0;false;false;;;;;;
                                  -147163;1;0;false;false;63;95;191;;;
                                  -147164;4;0;false;false;;;;;;
                                  -147168;1;0;false;false;63;95;191;;;
                                  -147169;1;0;false;false;;;;;;
                                  -147170;7;1;false;false;127;159;191;;;
                                  -147177;3;0;false;false;63;95;191;;;
                                  -147180;3;0;false;false;;;;;;
                                  -147183;2;0;false;false;63;95;191;;;
                                  -147185;2;0;false;false;;;;;;
                                  -147187;6;1;false;false;127;0;85;;;
                                  -147193;1;0;false;false;;;;;;
                                  -147194;10;0;false;false;0;0;0;;;
                                  -147204;1;0;false;false;;;;;;
                                  -147205;2;0;false;false;0;0;0;;;
                                  -147207;1;0;false;false;;;;;;
                                  -147208;15;0;false;false;0;0;0;;;
                                  -147223;3;1;false;false;127;0;85;;;
                                  -147226;1;0;false;false;;;;;;
                                  -147227;6;0;false;false;0;0;0;;;
                                  -147233;1;0;false;false;;;;;;
                                  -147234;3;1;false;false;127;0;85;;;
                                  -147237;1;0;false;false;;;;;;
                                  -147238;7;0;false;false;0;0;0;;;
                                  -147245;1;0;false;false;;;;;;
                                  -147246;1;0;false;false;0;0;0;;;
                                  -147247;3;0;false;false;;;;;;
                                  -147250;14;0;false;false;0;0;0;;;
                                  -147264;3;0;false;false;;;;;;
                                  -147267;3;1;false;false;127;0;85;;;
                                  -147270;1;0;false;false;;;;;;
                                  -147271;13;0;false;false;0;0;0;;;
                                  -147284;1;0;false;false;;;;;;
                                  -147285;1;0;false;false;0;0;0;;;
                                  -147286;1;0;false;false;;;;;;
                                  -147287;15;0;false;false;0;0;0;;;
                                  -147302;3;0;false;false;;;;;;
                                  -147305;3;1;false;false;127;0;85;;;
                                  -147308;1;0;false;false;;;;;;
                                  -147309;3;0;false;false;0;0;0;;;
                                  -147312;1;0;false;false;;;;;;
                                  -147313;1;0;false;false;0;0;0;;;
                                  -147314;1;0;false;false;;;;;;
                                  -147315;5;0;false;false;0;0;0;;;
                                  -147320;1;0;false;false;;;;;;
                                  -147321;1;0;false;false;0;0;0;;;
                                  -147322;1;0;false;false;;;;;;
                                  -147323;7;0;false;false;0;0;0;;;
                                  -147330;3;0;false;false;;;;;;
                                  -147333;2;1;false;false;127;0;85;;;
                                  -147335;1;0;false;false;;;;;;
                                  -147336;6;0;false;false;0;0;0;;;
                                  -147342;1;0;false;false;;;;;;
                                  -147343;1;0;false;false;0;0;0;;;
                                  -147344;1;0;false;false;;;;;;
                                  -147345;3;0;false;false;0;0;0;;;
                                  -147348;1;0;false;false;;;;;;
                                  -147349;2;0;false;false;0;0;0;;;
                                  -147351;1;0;false;false;;;;;;
                                  -147352;5;0;false;false;0;0;0;;;
                                  -147357;1;0;false;false;;;;;;
                                  -147358;1;0;false;false;0;0;0;;;
                                  -147359;1;0;false;false;;;;;;
                                  -147360;1;0;false;false;0;0;0;;;
                                  -147361;1;0;false;false;;;;;;
                                  -147362;2;0;false;false;0;0;0;;;
                                  -147364;1;0;false;false;;;;;;
                                  -147365;3;0;false;false;0;0;0;;;
                                  -147368;1;0;false;false;;;;;;
                                  -147369;1;0;false;false;0;0;0;;;
                                  -147370;1;0;false;false;;;;;;
                                  -147371;14;0;false;false;0;0;0;;;
                                  -147385;1;0;false;false;;;;;;
                                  -147386;1;0;false;false;0;0;0;;;
                                  -147387;4;0;false;false;;;;;;
                                  -147391;35;0;false;false;0;0;0;;;
                                  -147426;3;0;false;false;;;;;;
                                  -147429;1;0;false;false;0;0;0;;;
                                  -147430;4;0;false;false;;;;;;
                                  -147434;10;0;false;false;0;0;0;;;
                                  -147444;1;0;false;false;;;;;;
                                  -147445;9;0;false;false;0;0;0;;;
                                  -147454;6;0;false;false;;;;;;
                                  -147460;2;1;false;false;127;0;85;;;
                                  -147462;1;0;false;false;;;;;;
                                  -147463;16;0;false;false;0;0;0;;;
                                  -147479;1;0;false;false;;;;;;
                                  -147480;1;0;false;false;0;0;0;;;
                                  -147481;4;0;false;false;;;;;;
                                  -147485;6;0;false;false;0;0;0;;;
                                  -147491;1;0;false;false;;;;;;
                                  -147492;1;0;false;false;0;0;0;;;
                                  -147493;1;0;false;false;;;;;;
                                  -147494;42;0;false;false;0;0;0;;;
                                  -147536;1;0;false;false;;;;;;
                                  -147537;8;0;false;false;0;0;0;;;
                                  -147545;4;0;false;false;;;;;;
                                  -147549;2;1;false;false;127;0;85;;;
                                  -147551;1;0;false;false;;;;;;
                                  -147552;7;0;false;false;0;0;0;;;
                                  -147559;1;0;false;false;;;;;;
                                  -147560;2;0;false;false;0;0;0;;;
                                  -147562;1;0;false;false;;;;;;
                                  -147563;4;1;false;false;127;0;85;;;
                                  -147567;1;0;false;false;0;0;0;;;
                                  -147568;1;0;false;false;;;;;;
                                  -147569;6;1;false;false;127;0;85;;;
                                  -147575;1;0;false;false;;;;;;
                                  -147576;3;1;false;false;127;0;85;;;
                                  -147579;1;0;false;false;;;;;;
                                  -147580;14;0;false;false;0;0;0;;;
                                  -147594;4;0;false;false;;;;;;
                                  -147598;62;0;false;false;63;127;95;;;
                                  -147660;2;0;false;false;;;;;;
                                  -147662;64;0;false;false;63;127;95;;;
                                  -147726;2;0;false;false;;;;;;
                                  -147728;32;0;false;false;63;127;95;;;
                                  -147760;2;0;false;false;;;;;;
                                  -147762;2;1;false;false;127;0;85;;;
                                  -147764;1;0;false;false;;;;;;
                                  -147765;14;0;false;false;0;0;0;;;
                                  -147779;1;0;false;false;;;;;;
                                  -147780;2;0;false;false;0;0;0;;;
                                  -147782;1;0;false;false;;;;;;
                                  -147783;2;0;false;false;0;0;0;;;
                                  -147785;1;0;false;false;;;;;;
                                  -147786;1;0;false;false;0;0;0;;;
                                  -147787;5;0;false;false;;;;;;
                                  -147792;10;0;false;false;0;0;0;;;
                                  -147802;1;0;false;false;;;;;;
                                  -147803;5;0;false;false;0;0;0;;;
                                  -147808;1;0;false;false;;;;;;
                                  -147809;1;0;false;false;0;0;0;;;
                                  -147810;1;0;false;false;;;;;;
                                  -147811;10;0;false;false;0;0;0;;;
                                  -147821;5;0;false;false;;;;;;
                                  -147826;2;1;false;false;127;0;85;;;
                                  -147828;1;0;false;false;;;;;;
                                  -147829;12;0;false;false;0;0;0;;;
                                  -147841;1;0;false;false;;;;;;
                                  -147842;1;0;false;false;0;0;0;;;
                                  -147843;1;0;false;false;;;;;;
                                  -147844;6;0;false;false;0;0;0;;;
                                  -147850;1;0;false;false;;;;;;
                                  -147851;1;0;false;false;0;0;0;;;
                                  -147852;6;0;false;false;;;;;;
                                  -147858;10;0;false;false;0;0;0;;;
                                  -147868;1;0;false;false;;;;;;
                                  -147869;8;0;false;false;0;0;0;;;
                                  -147877;1;0;false;false;;;;;;
                                  -147878;1;0;false;false;0;0;0;;;
                                  -147879;1;0;false;false;;;;;;
                                  -147880;30;0;false;false;0;0;0;;;
                                  -147910;6;0;false;false;;;;;;
                                  -147916;15;0;false;false;0;0;0;;;
                                  -147931;1;0;false;false;;;;;;
                                  -147932;1;0;false;false;0;0;0;;;
                                  -147933;1;0;false;false;;;;;;
                                  -147934;15;0;false;false;0;0;0;;;
                                  -147949;1;0;false;false;;;;;;
                                  -147950;1;0;false;false;0;0;0;;;
                                  -147951;1;0;false;false;;;;;;
                                  -147952;6;0;false;false;0;0;0;;;
                                  -147958;1;0;false;false;;;;;;
                                  -147959;1;0;false;false;0;0;0;;;
                                  -147960;1;0;false;false;;;;;;
                                  -147961;16;0;false;false;0;0;0;;;
                                  -147977;6;0;false;false;;;;;;
                                  -147983;14;0;false;false;0;0;0;;;
                                  -147997;1;0;false;false;;;;;;
                                  -147998;1;0;false;false;0;0;0;;;
                                  -147999;1;0;false;false;;;;;;
                                  -148000;6;0;false;false;0;0;0;;;
                                  -148006;6;0;false;false;;;;;;
                                  -148012;9;0;false;false;0;0;0;;;
                                  -148021;1;0;false;false;;;;;;
                                  -148022;1;0;false;false;0;0;0;;;
                                  -148023;1;0;false;false;;;;;;
                                  -148024;9;0;false;false;0;0;0;;;
                                  -148033;5;0;false;false;;;;;;
                                  -148038;1;0;false;false;0;0;0;;;
                                  -148039;5;0;false;false;;;;;;
                                  -148044;2;1;false;false;127;0;85;;;
                                  -148046;1;0;false;false;;;;;;
                                  -148047;12;0;false;false;0;0;0;;;
                                  -148059;1;0;false;false;;;;;;
                                  -148060;1;0;false;false;0;0;0;;;
                                  -148061;1;0;false;false;;;;;;
                                  -148062;12;0;false;false;0;0;0;;;
                                  -148074;1;0;false;false;;;;;;
                                  -148075;1;0;false;false;0;0;0;;;
                                  -148076;1;0;false;false;;;;;;
                                  -148077;6;0;false;false;0;0;0;;;
                                  -148083;1;0;false;false;;;;;;
                                  -148084;1;0;false;false;0;0;0;;;
                                  -148085;1;0;false;false;;;;;;
                                  -148086;8;0;false;false;0;0;0;;;
                                  -148094;1;0;false;false;;;;;;
                                  -148095;1;0;false;false;0;0;0;;;
                                  -148096;6;0;false;false;;;;;;
                                  -148102;10;0;false;false;0;0;0;;;
                                  -148112;1;0;false;false;;;;;;
                                  -148113;8;0;false;false;0;0;0;;;
                                  -148121;1;0;false;false;;;;;;
                                  -148122;1;0;false;false;0;0;0;;;
                                  -148123;1;0;false;false;;;;;;
                                  -148124;30;0;false;false;0;0;0;;;
                                  -148154;6;0;false;false;;;;;;
                                  -148160;15;0;false;false;0;0;0;;;
                                  -148175;1;0;false;false;;;;;;
                                  -148176;1;0;false;false;0;0;0;;;
                                  -148177;1;0;false;false;;;;;;
                                  -148178;5;0;false;false;0;0;0;;;
                                  -148183;1;0;false;false;;;;;;
                                  -148184;1;0;false;false;0;0;0;;;
                                  -148185;1;0;false;false;;;;;;
                                  -148186;6;0;false;false;0;0;0;;;
                                  -148192;1;0;false;false;;;;;;
                                  -148193;1;0;false;false;0;0;0;;;
                                  -148194;1;0;false;false;;;;;;
                                  -148195;15;0;false;false;0;0;0;;;
                                  -148210;6;0;false;false;;;;;;
                                  -148216;9;0;false;false;0;0;0;;;
                                  -148225;1;0;false;false;;;;;;
                                  -148226;1;0;false;false;0;0;0;;;
                                  -148227;1;0;false;false;;;;;;
                                  -148228;9;0;false;false;0;0;0;;;
                                  -148237;5;0;false;false;;;;;;
                                  -148242;1;0;false;false;0;0;0;;;
                                  -148243;4;0;false;false;;;;;;
                                  -148247;1;0;false;false;0;0;0;;;
                                  -148248;1;0;false;false;;;;;;
                                  -148249;4;1;false;false;127;0;85;;;
                                  -148253;1;0;false;false;;;;;;
                                  -148254;2;1;false;false;127;0;85;;;
                                  -148256;1;0;false;false;;;;;;
                                  -148257;14;0;false;false;0;0;0;;;
                                  -148271;1;0;false;false;;;;;;
                                  -148272;1;0;false;false;0;0;0;;;
                                  -148273;1;0;false;false;;;;;;
                                  -148274;2;0;false;false;0;0;0;;;
                                  -148276;1;0;false;false;;;;;;
                                  -148277;1;0;false;false;0;0;0;;;
                                  -148278;5;0;false;false;;;;;;
                                  -148283;10;0;false;false;0;0;0;;;
                                  -148293;1;0;false;false;;;;;;
                                  -148294;5;0;false;false;0;0;0;;;
                                  -148299;1;0;false;false;;;;;;
                                  -148300;1;0;false;false;0;0;0;;;
                                  -148301;1;0;false;false;;;;;;
                                  -148302;10;0;false;false;0;0;0;;;
                                  -148312;5;0;false;false;;;;;;
                                  -148317;2;1;false;false;127;0;85;;;
                                  -148319;1;0;false;false;;;;;;
                                  -148320;12;0;false;false;0;0;0;;;
                                  -148332;1;0;false;false;;;;;;
                                  -148333;1;0;false;false;0;0;0;;;
                                  -148334;1;0;false;false;;;;;;
                                  -148335;6;0;false;false;0;0;0;;;
                                  -148341;1;0;false;false;;;;;;
                                  -148342;1;0;false;false;0;0;0;;;
                                  -148343;6;0;false;false;;;;;;
                                  -148349;10;0;false;false;0;0;0;;;
                                  -148359;1;0;false;false;;;;;;
                                  -148360;8;0;false;false;0;0;0;;;
                                  -148368;1;0;false;false;;;;;;
                                  -148369;1;0;false;false;0;0;0;;;
                                  -148370;1;0;false;false;;;;;;
                                  -148371;30;0;false;false;0;0;0;;;
                                  -148401;6;0;false;false;;;;;;
                                  -148407;15;0;false;false;0;0;0;;;
                                  -148422;1;0;false;false;;;;;;
                                  -148423;1;0;false;false;0;0;0;;;
                                  -148424;1;0;false;false;;;;;;
                                  -148425;15;0;false;false;0;0;0;;;
                                  -148440;1;0;false;false;;;;;;
                                  -148441;1;0;false;false;0;0;0;;;
                                  -148442;1;0;false;false;;;;;;
                                  -148443;6;0;false;false;0;0;0;;;
                                  -148449;1;0;false;false;;;;;;
                                  -148450;1;0;false;false;0;0;0;;;
                                  -148451;1;0;false;false;;;;;;
                                  -148452;16;0;false;false;0;0;0;;;
                                  -148468;6;0;false;false;;;;;;
                                  -148474;14;0;false;false;0;0;0;;;
                                  -148488;1;0;false;false;;;;;;
                                  -148489;1;0;false;false;0;0;0;;;
                                  -148490;1;0;false;false;;;;;;
                                  -148491;6;0;false;false;0;0;0;;;
                                  -148497;6;0;false;false;;;;;;
                                  -148503;9;0;false;false;0;0;0;;;
                                  -148512;1;0;false;false;;;;;;
                                  -148513;1;0;false;false;0;0;0;;;
                                  -148514;1;0;false;false;;;;;;
                                  -148515;9;0;false;false;0;0;0;;;
                                  -148524;5;0;false;false;;;;;;
                                  -148529;1;0;false;false;0;0;0;;;
                                  -148530;5;0;false;false;;;;;;
                                  -148535;5;0;false;false;0;0;0;;;
                                  -148540;1;0;false;false;;;;;;
                                  -148541;1;0;false;false;0;0;0;;;
                                  -148542;1;0;false;false;;;;;;
                                  -148543;20;0;false;false;0;0;0;;;
                                  -148563;1;0;false;false;;;;;;
                                  -148564;1;0;false;false;0;0;0;;;
                                  -148565;1;0;false;false;;;;;;
                                  -148566;3;0;false;false;0;0;0;;;
                                  -148569;5;0;false;false;;;;;;
                                  -148574;2;1;false;false;127;0;85;;;
                                  -148576;1;0;false;false;;;;;;
                                  -148577;12;0;false;false;0;0;0;;;
                                  -148589;1;0;false;false;;;;;;
                                  -148590;1;0;false;false;0;0;0;;;
                                  -148591;1;0;false;false;;;;;;
                                  -148592;12;0;false;false;0;0;0;;;
                                  -148604;1;0;false;false;;;;;;
                                  -148605;1;0;false;false;0;0;0;;;
                                  -148606;1;0;false;false;;;;;;
                                  -148607;6;0;false;false;0;0;0;;;
                                  -148613;1;0;false;false;;;;;;
                                  -148614;1;0;false;false;0;0;0;;;
                                  -148615;1;0;false;false;;;;;;
                                  -148616;8;0;false;false;0;0;0;;;
                                  -148624;1;0;false;false;;;;;;
                                  -148625;1;0;false;false;0;0;0;;;
                                  -148626;6;0;false;false;;;;;;
                                  -148632;10;0;false;false;0;0;0;;;
                                  -148642;1;0;false;false;;;;;;
                                  -148643;8;0;false;false;0;0;0;;;
                                  -148651;1;0;false;false;;;;;;
                                  -148652;1;0;false;false;0;0;0;;;
                                  -148653;1;0;false;false;;;;;;
                                  -148654;32;0;false;false;0;0;0;;;
                                  -148686;1;0;false;false;;;;;;
                                  -148687;1;0;false;false;0;0;0;;;
                                  -148688;1;0;false;false;;;;;;
                                  -148689;11;0;false;false;0;0;0;;;
                                  -148700;6;0;false;false;;;;;;
                                  -148706;15;0;false;false;0;0;0;;;
                                  -148721;1;0;false;false;;;;;;
                                  -148722;1;0;false;false;0;0;0;;;
                                  -148723;1;0;false;false;;;;;;
                                  -148724;5;0;false;false;0;0;0;;;
                                  -148729;1;0;false;false;;;;;;
                                  -148730;1;0;false;false;0;0;0;;;
                                  -148731;1;0;false;false;;;;;;
                                  -148732;6;0;false;false;0;0;0;;;
                                  -148738;1;0;false;false;;;;;;
                                  -148739;1;0;false;false;0;0;0;;;
                                  -148740;1;0;false;false;;;;;;
                                  -148741;15;0;false;false;0;0;0;;;
                                  -148756;6;0;false;false;;;;;;
                                  -148762;20;0;false;false;0;0;0;;;
                                  -148782;1;0;false;false;;;;;;
                                  -148783;1;0;false;false;0;0;0;;;
                                  -148784;1;0;false;false;;;;;;
                                  -148785;2;0;false;false;0;0;0;;;
                                  -148787;1;0;false;false;;;;;;
                                  -148788;1;0;false;false;0;0;0;;;
                                  -148789;1;0;false;false;;;;;;
                                  -148790;9;0;false;false;0;0;0;;;
                                  -148799;5;0;false;false;;;;;;
                                  -148804;1;0;false;false;0;0;0;;;
                                  -148805;4;0;false;false;;;;;;
                                  -148809;1;0;false;false;0;0;0;;;
                                  -148810;3;0;false;false;;;;;;
                                  -148813;1;0;false;false;0;0;0;;;
                                  -148814;3;0;false;false;;;;;;
                                  -148817;4;1;false;false;127;0;85;;;
                                  -148821;1;0;false;false;;;;;;
                                  -148822;1;0;false;false;0;0;0;;;
                                  -148823;4;0;false;false;;;;;;
                                  -148827;6;0;false;false;0;0;0;;;
                                  -148833;1;0;false;false;;;;;;
                                  -148834;1;0;false;false;0;0;0;;;
                                  -148835;1;0;false;false;;;;;;
                                  -148836;3;1;false;false;127;0;85;;;
                                  -148839;1;0;false;false;;;;;;
                                  -148840;14;0;false;false;0;0;0;;;
                                  -148854;3;0;false;false;;;;;;
                                  -148857;1;0;false;false;0;0;0;;;
                                  -148858;3;0;false;false;;;;;;
                                  -148861;6;1;false;false;127;0;85;;;
                                  -148867;1;0;false;false;;;;;;
                                  -148868;7;0;false;false;0;0;0;;;
                                  -148875;2;0;false;false;;;;;;
                                  -148877;1;0;false;false;0;0;0;;;
                                  -148878;2;0;false;false;;;;;;
                                  -148880;3;0;false;false;63;95;191;;;
                                  -148883;3;0;false;false;;;;;;
                                  -148886;1;0;false;false;63;95;191;;;
                                  -148887;1;0;false;false;;;;;;
                                  -148888;7;0;false;false;63;95;191;;;
                                  -148895;1;0;false;false;;;;;;
                                  -148896;3;0;false;false;63;95;191;;;
                                  -148899;1;0;false;false;;;;;;
                                  -148900;3;0;false;false;63;95;191;;;
                                  -148903;1;0;false;false;;;;;;
                                  -148904;5;0;false;false;63;95;191;;;
                                  -148909;1;0;false;false;;;;;;
                                  -148910;8;0;false;false;63;95;191;;;
                                  -148918;1;0;false;false;;;;;;
                                  -148919;2;0;false;false;63;95;191;;;
                                  -148921;1;0;false;false;;;;;;
                                  -148922;11;0;false;false;63;95;191;;;
                                  -148933;3;0;false;false;;;;;;
                                  -148936;1;0;false;false;63;95;191;;;
                                  -148937;3;0;false;false;;;;;;
                                  -148940;1;0;false;false;63;95;191;;;
                                  -148941;1;0;false;false;;;;;;
                                  -148942;8;1;false;false;127;159;191;;;
                                  -148950;3;0;false;false;63;95;191;;;
                                  -148953;1;0;false;false;;;;;;
                                  -148954;5;0;false;false;63;95;191;;;
                                  -148959;1;0;false;false;;;;;;
                                  -148960;8;0;false;false;63;95;191;;;
                                  -148968;1;0;false;false;;;;;;
                                  -148969;2;0;false;false;63;95;191;;;
                                  -148971;1;0;false;false;;;;;;
                                  -148972;10;0;false;false;63;95;191;;;
                                  -148982;3;0;false;false;;;;;;
                                  -148985;1;0;false;false;63;95;191;;;
                                  -148986;1;0;false;false;;;;;;
                                  -148987;11;1;false;false;127;159;191;;;
                                  -148998;12;0;false;false;63;95;191;;;
                                  -149010;1;0;false;false;;;;;;
                                  -149011;4;0;false;false;127;127;159;;;
                                  -149015;3;0;false;false;;;;;;
                                  -149018;1;0;false;false;63;95;191;;;
                                  -149019;4;0;false;false;;;;;;
                                  -149023;4;0;false;false;127;127;159;;;
                                  -149027;21;0;false;false;63;95;191;;;
                                  -149048;1;0;false;false;;;;;;
                                  -149049;1;0;false;false;127;127;159;;;
                                  -149050;1;0;false;false;;;;;;
                                  -149051;2;0;false;false;63;95;191;;;
                                  -149053;1;0;false;false;;;;;;
                                  -149054;3;0;false;false;63;95;191;;;
                                  -149057;1;0;false;false;;;;;;
                                  -149058;8;0;false;false;63;95;191;;;
                                  -149066;1;0;false;false;;;;;;
                                  -149067;3;0;false;false;63;95;191;;;
                                  -149070;1;0;false;false;;;;;;
                                  -149071;4;0;false;false;63;95;191;;;
                                  -149075;1;0;false;false;;;;;;
                                  -149076;8;0;false;false;63;95;191;;;
                                  -149084;5;0;false;false;127;127;159;;;
                                  -149089;3;0;false;false;;;;;;
                                  -149092;1;0;false;false;63;95;191;;;
                                  -149093;4;0;false;false;;;;;;
                                  -149097;4;0;false;false;127;127;159;;;
                                  -149101;27;0;false;false;63;95;191;;;
                                  -149128;1;0;false;false;;;;;;
                                  -149129;1;0;false;false;127;127;159;;;
                                  -149130;1;0;false;false;;;;;;
                                  -149131;2;0;false;false;63;95;191;;;
                                  -149133;1;0;false;false;;;;;;
                                  -149134;3;0;false;false;63;95;191;;;
                                  -149137;1;0;false;false;;;;;;
                                  -149138;6;0;false;false;63;95;191;;;
                                  -149144;1;0;false;false;;;;;;
                                  -149145;4;0;false;false;63;95;191;;;
                                  -149149;1;0;false;false;;;;;;
                                  -149150;3;0;false;false;63;95;191;;;
                                  -149153;1;0;false;false;;;;;;
                                  -149154;6;0;false;false;63;95;191;;;
                                  -149160;1;0;false;false;;;;;;
                                  -149161;4;0;false;false;63;95;191;;;
                                  -149165;1;0;false;false;;;;;;
                                  -149166;7;0;false;false;63;95;191;;;
                                  -149173;1;0;false;false;;;;;;
                                  -149174;3;0;false;false;63;95;191;;;
                                  -149177;1;0;false;false;;;;;;
                                  -149178;8;0;false;false;63;95;191;;;
                                  -149186;5;0;false;false;127;127;159;;;
                                  -149191;3;0;false;false;;;;;;
                                  -149194;1;0;false;false;63;95;191;;;
                                  -149195;1;0;false;false;;;;;;
                                  -149196;5;0;false;false;127;127;159;;;
                                  -149201;3;0;false;false;;;;;;
                                  -149204;2;0;false;false;63;95;191;;;
                                  -149206;2;0;false;false;;;;;;
                                  -149208;6;1;false;false;127;0;85;;;
                                  -149214;1;0;false;false;;;;;;
                                  -149215;3;1;false;false;127;0;85;;;
                                  -149218;1;0;false;false;;;;;;
                                  -149219;9;0;false;false;0;0;0;;;
                                  -149228;1;0;false;false;;;;;;
                                  -149229;1;0;false;false;0;0;0;;;
                                  -149230;3;0;false;false;;;;;;
                                  -149233;14;0;false;false;0;0;0;;;
                                  -149247;3;0;false;false;;;;;;
                                  -149250;6;1;false;false;127;0;85;;;
                                  -149256;1;0;false;false;;;;;;
                                  -149257;10;0;false;false;0;0;0;;;
                                  -149267;2;0;false;false;;;;;;
                                  -149269;1;0;false;false;0;0;0;;;
                                  -149270;2;0;false;false;;;;;;
                                  -149272;3;0;false;false;63;95;191;;;
                                  -149275;3;0;false;false;;;;;;
                                  -149278;1;0;false;false;63;95;191;;;
                                  -149279;1;0;false;false;;;;;;
                                  -149280;7;0;false;false;63;95;191;;;
                                  -149287;1;0;false;false;;;;;;
                                  -149288;1;0;false;false;63;95;191;;;
                                  -149289;1;0;false;false;;;;;;
                                  -149290;4;0;false;false;63;95;191;;;
                                  -149294;1;0;false;false;;;;;;
                                  -149295;2;0;false;false;63;95;191;;;
                                  -149297;1;0;false;false;;;;;;
                                  -149298;3;0;false;false;63;95;191;;;
                                  -149301;1;0;false;false;;;;;;
                                  -149302;6;0;false;false;63;95;191;;;
                                  -149308;1;0;false;false;;;;;;
                                  -149309;8;0;false;false;63;95;191;;;
                                  -149317;3;0;false;false;;;;;;
                                  -149320;1;0;false;false;63;95;191;;;
                                  -149321;1;0;false;false;;;;;;
                                  -149322;3;0;false;false;127;127;159;;;
                                  -149325;3;0;false;false;;;;;;
                                  -149328;1;0;false;false;63;95;191;;;
                                  -149329;3;0;false;false;;;;;;
                                  -149332;1;0;false;false;63;95;191;;;
                                  -149333;1;0;false;false;;;;;;
                                  -149334;8;1;false;false;127;159;191;;;
                                  -149342;4;0;false;false;63;95;191;;;
                                  -149346;1;0;false;false;;;;;;
                                  -149347;2;0;false;false;63;95;191;;;
                                  -149349;1;0;false;false;;;;;;
                                  -149350;3;0;false;false;63;95;191;;;
                                  -149353;1;0;false;false;;;;;;
                                  -149354;6;0;false;false;63;95;191;;;
                                  -149360;1;0;false;false;;;;;;
                                  -149361;7;0;false;false;63;95;191;;;
                                  -149368;3;0;false;false;;;;;;
                                  -149371;1;0;false;false;63;95;191;;;
                                  -149372;1;0;false;false;;;;;;
                                  -149373;11;1;false;false;127;159;191;;;
                                  -149384;12;0;false;false;63;95;191;;;
                                  -149396;1;0;false;false;;;;;;
                                  -149397;4;0;false;false;127;127;159;;;
                                  -149401;3;0;false;false;;;;;;
                                  -149404;1;0;false;false;63;95;191;;;
                                  -149405;4;0;false;false;;;;;;
                                  -149409;4;0;false;false;127;127;159;;;
                                  -149413;21;0;false;false;63;95;191;;;
                                  -149434;1;0;false;false;;;;;;
                                  -149435;1;0;false;false;127;127;159;;;
                                  -149436;1;0;false;false;;;;;;
                                  -149437;2;0;false;false;63;95;191;;;
                                  -149439;1;0;false;false;;;;;;
                                  -149440;3;0;false;false;63;95;191;;;
                                  -149443;1;0;false;false;;;;;;
                                  -149444;8;0;false;false;63;95;191;;;
                                  -149452;1;0;false;false;;;;;;
                                  -149453;3;0;false;false;63;95;191;;;
                                  -149456;1;0;false;false;;;;;;
                                  -149457;4;0;false;false;63;95;191;;;
                                  -149461;1;0;false;false;;;;;;
                                  -149462;8;0;false;false;63;95;191;;;
                                  -149470;5;0;false;false;127;127;159;;;
                                  -149475;3;0;false;false;;;;;;
                                  -149478;1;0;false;false;63;95;191;;;
                                  -149479;4;0;false;false;;;;;;
                                  -149483;4;0;false;false;127;127;159;;;
                                  -149487;27;0;false;false;63;95;191;;;
                                  -149514;1;0;false;false;;;;;;
                                  -149515;1;0;false;false;127;127;159;;;
                                  -149516;1;0;false;false;;;;;;
                                  -149517;2;0;false;false;63;95;191;;;
                                  -149519;1;0;false;false;;;;;;
                                  -149520;3;0;false;false;63;95;191;;;
                                  -149523;1;0;false;false;;;;;;
                                  -149524;6;0;false;false;63;95;191;;;
                                  -149530;1;0;false;false;;;;;;
                                  -149531;4;0;false;false;63;95;191;;;
                                  -149535;1;0;false;false;;;;;;
                                  -149536;3;0;false;false;63;95;191;;;
                                  -149539;1;0;false;false;;;;;;
                                  -149540;6;0;false;false;63;95;191;;;
                                  -149546;1;0;false;false;;;;;;
                                  -149547;4;0;false;false;63;95;191;;;
                                  -149551;1;0;false;false;;;;;;
                                  -149552;7;0;false;false;63;95;191;;;
                                  -149559;1;0;false;false;;;;;;
                                  -149560;3;0;false;false;63;95;191;;;
                                  -149563;1;0;false;false;;;;;;
                                  -149564;8;0;false;false;63;95;191;;;
                                  -149572;5;0;false;false;127;127;159;;;
                                  -149577;3;0;false;false;;;;;;
                                  -149580;1;0;false;false;63;95;191;;;
                                  -149581;1;0;false;false;;;;;;
                                  -149582;5;0;false;false;127;127;159;;;
                                  -149587;3;0;false;false;;;;;;
                                  -149590;2;0;false;false;63;95;191;;;
                                  -149592;2;0;false;false;;;;;;
                                  -149594;6;1;false;false;127;0;85;;;
                                  -149600;1;0;false;false;;;;;;
                                  -149601;6;0;false;false;0;0;0;;;
                                  -149607;1;0;false;false;;;;;;
                                  -149608;9;0;false;false;0;0;0;;;
                                  -149617;1;0;false;false;;;;;;
                                  -149618;1;0;false;false;0;0;0;;;
                                  -149619;3;0;false;false;;;;;;
                                  -149622;14;0;false;false;0;0;0;;;
                                  -149636;3;0;false;false;;;;;;
                                  -149639;6;1;false;false;127;0;85;;;
                                  -149645;1;0;false;false;;;;;;
                                  -149646;23;0;false;false;0;0;0;;;
                                  -149669;1;0;false;false;;;;;;
                                  -149670;16;0;false;false;0;0;0;;;
                                  -149686;2;0;false;false;;;;;;
                                  -149688;1;0;false;false;0;0;0;;;
                                  -149689;3;0;false;false;;;;;;
                                  -149692;3;0;false;false;63;95;191;;;
                                  -149695;3;0;false;false;;;;;;
                                  -149698;1;0;false;false;63;95;191;;;
                                  -149699;1;0;false;false;;;;;;
                                  -149700;7;0;false;false;63;95;191;;;
                                  -149707;1;0;false;false;;;;;;
                                  -149708;3;0;false;false;63;95;191;;;
                                  -149711;1;0;false;false;;;;;;
                                  -149712;6;0;false;false;63;95;191;;;
                                  -149718;1;0;false;false;;;;;;
                                  -149719;7;0;false;false;63;95;191;;;
                                  -149726;1;0;false;false;;;;;;
                                  -149727;7;0;false;false;63;95;191;;;
                                  -149734;1;0;false;false;;;;;;
                                  -149735;3;0;false;false;63;95;191;;;
                                  -149738;1;0;false;false;;;;;;
                                  -149739;3;0;false;false;63;95;191;;;
                                  -149742;1;0;false;false;;;;;;
                                  -149743;8;0;false;false;63;95;191;;;
                                  -149751;3;0;false;false;;;;;;
                                  -149754;1;0;false;false;63;95;191;;;
                                  -149755;1;0;false;false;;;;;;
                                  -149756;3;0;false;false;127;127;159;;;
                                  -149759;3;0;false;false;;;;;;
                                  -149762;1;0;false;false;63;95;191;;;
                                  -149763;3;0;false;false;;;;;;
                                  -149766;1;0;false;false;63;95;191;;;
                                  -149767;1;0;false;false;;;;;;
                                  -149768;7;1;false;false;127;159;191;;;
                                  -149775;5;0;false;false;63;95;191;;;
                                  -149780;1;0;false;false;;;;;;
                                  -149781;6;0;false;false;63;95;191;;;
                                  -149787;1;0;false;false;;;;;;
                                  -149788;2;0;false;false;63;95;191;;;
                                  -149790;1;0;false;false;;;;;;
                                  -149791;3;0;false;false;63;95;191;;;
                                  -149794;1;0;false;false;;;;;;
                                  -149795;5;0;false;false;63;95;191;;;
                                  -149800;1;0;false;false;;;;;;
                                  -149801;9;0;false;false;63;95;191;;;
                                  -149810;1;0;false;false;;;;;;
                                  -149811;2;0;false;false;63;95;191;;;
                                  -149813;1;0;false;false;;;;;;
                                  -149814;3;0;false;false;63;95;191;;;
                                  -149817;1;0;false;false;;;;;;
                                  -149818;8;0;false;false;63;95;191;;;
                                  -149826;1;0;false;false;;;;;;
                                  -149827;6;0;false;false;63;95;191;;;
                                  -149833;3;0;false;false;;;;;;
                                  -149836;1;0;false;false;63;95;191;;;
                                  -149837;1;0;false;false;;;;;;
                                  -149838;7;1;false;false;127;159;191;;;
                                  -149845;3;0;false;false;63;95;191;;;
                                  -149848;1;0;false;false;;;;;;
                                  -149849;6;0;false;false;63;95;191;;;
                                  -149855;1;0;false;false;;;;;;
                                  -149856;2;0;false;false;63;95;191;;;
                                  -149858;1;0;false;false;;;;;;
                                  -149859;3;0;false;false;63;95;191;;;
                                  -149862;1;0;false;false;;;;;;
                                  -149863;4;0;false;false;63;95;191;;;
                                  -149867;1;0;false;false;;;;;;
                                  -149868;9;0;false;false;63;95;191;;;
                                  -149877;1;0;false;false;;;;;;
                                  -149878;2;0;false;false;63;95;191;;;
                                  -149880;1;0;false;false;;;;;;
                                  -149881;3;0;false;false;63;95;191;;;
                                  -149884;1;0;false;false;;;;;;
                                  -149885;8;0;false;false;63;95;191;;;
                                  -149893;1;0;false;false;;;;;;
                                  -149894;6;0;false;false;63;95;191;;;
                                  -149900;4;0;false;false;;;;;;
                                  -149904;1;0;false;false;63;95;191;;;
                                  -149905;1;0;false;false;;;;;;
                                  -149906;8;1;false;false;127;159;191;;;
                                  -149914;6;0;false;false;63;95;191;;;
                                  -149920;1;0;false;false;;;;;;
                                  -149921;7;0;false;false;63;95;191;;;
                                  -149928;1;0;false;false;;;;;;
                                  -149929;8;0;false;false;63;95;191;;;
                                  -149937;1;0;false;false;;;;;;
                                  -149938;2;0;false;false;63;95;191;;;
                                  -149940;1;0;false;false;;;;;;
                                  -149941;5;0;false;false;63;95;191;;;
                                  -149946;1;0;false;false;;;;;;
                                  -149947;3;0;false;false;63;95;191;;;
                                  -149950;1;0;false;false;;;;;;
                                  -149951;6;0;false;false;63;95;191;;;
                                  -149957;1;0;false;false;;;;;;
                                  -149958;2;0;false;false;63;95;191;;;
                                  -149960;1;0;false;false;;;;;;
                                  -149961;3;0;false;false;63;95;191;;;
                                  -149964;3;0;false;false;;;;;;
                                  -149967;1;0;false;false;63;95;191;;;
                                  -149968;1;0;false;false;;;;;;
                                  -149969;5;1;false;false;127;159;191;;;
                                  -149974;22;0;false;false;63;95;191;;;
                                  -149996;3;0;false;false;;;;;;
                                  -149999;1;0;false;false;63;95;191;;;
                                  -150000;1;0;false;false;;;;;;
                                  -150001;11;1;false;false;127;159;191;;;
                                  -150012;12;0;false;false;63;95;191;;;
                                  -150024;1;0;false;false;;;;;;
                                  -150025;4;0;false;false;127;127;159;;;
                                  -150029;3;0;false;false;;;;;;
                                  -150032;1;0;false;false;63;95;191;;;
                                  -150033;4;0;false;false;;;;;;
                                  -150037;4;0;false;false;127;127;159;;;
                                  -150041;21;0;false;false;63;95;191;;;
                                  -150062;1;0;false;false;;;;;;
                                  -150063;1;0;false;false;127;127;159;;;
                                  -150064;1;0;false;false;;;;;;
                                  -150065;2;0;false;false;63;95;191;;;
                                  -150067;1;0;false;false;;;;;;
                                  -150068;3;0;false;false;63;95;191;;;
                                  -150071;1;0;false;false;;;;;;
                                  -150072;8;0;false;false;63;95;191;;;
                                  -150080;1;0;false;false;;;;;;
                                  -150081;3;0;false;false;63;95;191;;;
                                  -150084;1;0;false;false;;;;;;
                                  -150085;4;0;false;false;63;95;191;;;
                                  -150089;1;0;false;false;;;;;;
                                  -150090;8;0;false;false;63;95;191;;;
                                  -150098;5;0;false;false;127;127;159;;;
                                  -150103;3;0;false;false;;;;;;
                                  -150106;1;0;false;false;63;95;191;;;
                                  -150107;4;0;false;false;;;;;;
                                  -150111;4;0;false;false;127;127;159;;;
                                  -150115;27;0;false;false;63;95;191;;;
                                  -150142;1;0;false;false;;;;;;
                                  -150143;1;0;false;false;127;127;159;;;
                                  -150144;1;0;false;false;;;;;;
                                  -150145;2;0;false;false;63;95;191;;;
                                  -150147;1;0;false;false;;;;;;
                                  -150148;3;0;false;false;63;95;191;;;
                                  -150151;1;0;false;false;;;;;;
                                  -150152;6;0;false;false;63;95;191;;;
                                  -150158;1;0;false;false;;;;;;
                                  -150159;4;0;false;false;63;95;191;;;
                                  -150163;1;0;false;false;;;;;;
                                  -150164;3;0;false;false;63;95;191;;;
                                  -150167;1;0;false;false;;;;;;
                                  -150168;6;0;false;false;63;95;191;;;
                                  -150174;1;0;false;false;;;;;;
                                  -150175;4;0;false;false;63;95;191;;;
                                  -150179;1;0;false;false;;;;;;
                                  -150180;7;0;false;false;63;95;191;;;
                                  -150187;1;0;false;false;;;;;;
                                  -150188;3;0;false;false;63;95;191;;;
                                  -150191;1;0;false;false;;;;;;
                                  -150192;8;0;false;false;63;95;191;;;
                                  -150200;5;0;false;false;127;127;159;;;
                                  -150205;3;0;false;false;;;;;;
                                  -150208;1;0;false;false;63;95;191;;;
                                  -150209;1;0;false;false;;;;;;
                                  -150210;5;0;false;false;127;127;159;;;
                                  -150215;3;0;false;false;;;;;;
                                  -150218;1;0;false;false;63;95;191;;;
                                  -150219;1;0;false;false;;;;;;
                                  -150220;11;1;false;false;127;159;191;;;
                                  -150231;24;0;false;false;63;95;191;;;
                                  -150255;1;0;false;false;;;;;;
                                  -150256;4;0;false;false;127;127;159;;;
                                  -150260;3;0;false;false;;;;;;
                                  -150263;1;0;false;false;63;95;191;;;
                                  -150264;3;0;false;false;;;;;;
                                  -150267;4;0;false;false;127;127;159;;;
                                  -150271;19;0;false;false;63;95;191;;;
                                  -150290;1;0;false;false;;;;;;
                                  -150291;4;0;false;false;63;95;191;;;
                                  -150295;1;0;false;false;;;;;;
                                  -150296;5;0;false;false;63;95;191;;;
                                  -150301;1;0;false;false;;;;;;
                                  -150302;6;0;false;false;63;95;191;;;
                                  -150308;1;0;false;false;;;;;;
                                  -150309;3;0;false;false;63;95;191;;;
                                  -150312;1;0;false;false;;;;;;
                                  -150313;3;0;false;false;63;95;191;;;
                                  -150316;1;0;false;false;;;;;;
                                  -150317;7;0;false;false;63;95;191;;;
                                  -150324;1;0;false;false;;;;;;
                                  -150325;3;0;false;false;63;95;191;;;
                                  -150328;1;0;false;false;;;;;;
                                  -150329;6;0;false;false;63;95;191;;;
                                  -150335;1;0;false;false;;;;;;
                                  -150336;7;0;false;false;63;95;191;;;
                                  -150343;5;0;false;false;127;127;159;;;
                                  -150348;4;0;false;false;;;;;;
                                  -150352;1;0;false;false;63;95;191;;;
                                  -150353;1;0;false;false;;;;;;
                                  -150354;5;0;false;false;127;127;159;;;
                                  -150359;3;0;false;false;;;;;;
                                  -150362;2;0;false;false;63;95;191;;;
                                  -150364;2;0;false;false;;;;;;
                                  -150366;6;1;false;false;127;0;85;;;
                                  -150372;1;0;false;false;;;;;;
                                  -150373;6;0;false;false;0;0;0;;;
                                  -150379;1;0;false;false;;;;;;
                                  -150380;8;0;false;false;0;0;0;;;
                                  -150388;3;1;false;false;127;0;85;;;
                                  -150391;1;0;false;false;;;;;;
                                  -150392;6;0;false;false;0;0;0;;;
                                  -150398;1;0;false;false;;;;;;
                                  -150399;3;1;false;false;127;0;85;;;
                                  -150402;1;0;false;false;;;;;;
                                  -150403;4;0;false;false;0;0;0;;;
                                  -150407;1;0;false;false;;;;;;
                                  -150408;1;0;false;false;0;0;0;;;
                                  -150409;3;0;false;false;;;;;;
                                  -150412;14;0;false;false;0;0;0;;;
                                  -150426;3;0;false;false;;;;;;
                                  -150429;3;1;false;false;127;0;85;;;
                                  -150432;1;0;false;false;;;;;;
                                  -150433;13;0;false;false;0;0;0;;;
                                  -150446;1;0;false;false;;;;;;
                                  -150447;1;0;false;false;0;0;0;;;
                                  -150448;1;0;false;false;;;;;;
                                  -150449;15;0;false;false;0;0;0;;;
                                  -150464;6;0;false;false;;;;;;
                                  -150470;2;1;false;false;127;0;85;;;
                                  -150472;1;0;false;false;;;;;;
                                  -150473;6;0;false;false;0;0;0;;;
                                  -150479;1;0;false;false;;;;;;
                                  -150480;1;0;false;false;0;0;0;;;
                                  -150481;1;0;false;false;;;;;;
                                  -150482;1;0;false;false;0;0;0;;;
                                  -150483;1;0;false;false;;;;;;
                                  -150484;2;0;false;false;0;0;0;;;
                                  -150486;1;0;false;false;;;;;;
                                  -150487;5;0;false;false;0;0;0;;;
                                  -150492;1;0;false;false;;;;;;
                                  -150493;2;0;false;false;0;0;0;;;
                                  -150495;1;0;false;false;;;;;;
                                  -150496;13;0;false;false;0;0;0;;;
                                  -150509;1;0;false;false;;;;;;
                                  -150510;2;0;false;false;0;0;0;;;
                                  -150512;1;0;false;false;;;;;;
                                  -150513;3;0;false;false;0;0;0;;;
                                  -150516;1;0;false;false;;;;;;
                                  -150517;1;0;false;false;0;0;0;;;
                                  -150518;1;0;false;false;;;;;;
                                  -150519;1;0;false;false;0;0;0;;;
                                  -150520;1;0;false;false;;;;;;
                                  -150521;2;0;false;false;0;0;0;;;
                                  -150523;1;0;false;false;;;;;;
                                  -150524;3;0;false;false;0;0;0;;;
                                  -150527;1;0;false;false;;;;;;
                                  -150528;2;0;false;false;0;0;0;;;
                                  -150530;1;0;false;false;;;;;;
                                  -150531;13;0;false;false;0;0;0;;;
                                  -150544;1;0;false;false;;;;;;
                                  -150545;2;0;false;false;0;0;0;;;
                                  -150547;1;0;false;false;;;;;;
                                  -150548;5;0;false;false;0;0;0;;;
                                  -150553;1;0;false;false;;;;;;
                                  -150554;1;0;false;false;0;0;0;;;
                                  -150555;1;0;false;false;;;;;;
                                  -150556;4;0;false;false;0;0;0;;;
                                  -150560;1;0;false;false;;;;;;
                                  -150561;1;0;false;false;0;0;0;;;
                                  -150562;4;0;false;false;;;;;;
                                  -150566;35;0;false;false;0;0;0;;;
                                  -150601;3;0;false;false;;;;;;
                                  -150604;1;0;false;false;0;0;0;;;
                                  -150605;4;0;false;false;;;;;;
                                  -150609;6;1;false;false;127;0;85;;;
                                  -150615;1;0;false;false;;;;;;
                                  -150616;27;0;false;false;0;0;0;;;
                                  -150643;1;0;false;false;;;;;;
                                  -150644;3;0;false;false;0;0;0;;;
                                  -150647;1;0;false;false;;;;;;
                                  -150648;1;0;false;false;0;0;0;;;
                                  -150649;1;0;false;false;;;;;;
                                  -150650;5;0;false;false;0;0;0;;;
                                  -150655;1;0;false;false;;;;;;
                                  -150656;1;0;false;false;0;0;0;;;
                                  -150657;1;0;false;false;;;;;;
                                  -150658;3;0;false;false;0;0;0;;;
                                  -150661;2;0;false;false;;;;;;
                                  -150663;1;0;false;false;0;0;0;;;
                                  -150664;2;0;false;false;;;;;;
                                  -150666;3;0;false;false;63;95;191;;;
                                  -150669;3;0;false;false;;;;;;
                                  -150672;1;0;false;false;63;95;191;;;
                                  -150673;1;0;false;false;;;;;;
                                  -150674;7;0;false;false;63;95;191;;;
                                  -150681;1;0;false;false;;;;;;
                                  -150682;3;0;false;false;63;95;191;;;
                                  -150685;1;0;false;false;;;;;;
                                  -150686;8;0;false;false;63;95;191;;;
                                  -150694;1;0;false;false;;;;;;
                                  -150695;8;0;false;false;63;95;191;;;
                                  -150703;1;0;false;false;;;;;;
                                  -150704;9;0;false;false;63;95;191;;;
                                  -150713;1;0;false;false;;;;;;
                                  -150714;4;0;false;false;63;95;191;;;
                                  -150718;1;0;false;false;;;;;;
                                  -150719;8;0;false;false;63;95;191;;;
                                  -150727;1;0;false;false;;;;;;
                                  -150728;3;0;false;false;63;95;191;;;
                                  -150731;1;0;false;false;;;;;;
                                  -150732;10;0;false;false;63;95;191;;;
                                  -150742;1;0;false;false;;;;;;
                                  -150743;7;0;false;false;63;95;191;;;
                                  -150750;1;0;false;false;;;;;;
                                  -150751;3;0;false;false;63;95;191;;;
                                  -150754;1;0;false;false;;;;;;
                                  -150755;8;0;false;false;63;95;191;;;
                                  -150763;3;0;false;false;;;;;;
                                  -150766;1;0;false;false;63;95;191;;;
                                  -150767;1;0;false;false;;;;;;
                                  -150768;3;0;false;false;127;127;159;;;
                                  -150771;3;0;false;false;;;;;;
                                  -150774;1;0;false;false;63;95;191;;;
                                  -150775;3;0;false;false;;;;;;
                                  -150778;1;0;false;false;63;95;191;;;
                                  -150779;1;0;false;false;;;;;;
                                  -150780;7;1;false;false;127;159;191;;;
                                  -150787;5;0;false;false;63;95;191;;;
                                  -150792;1;0;false;false;;;;;;
                                  -150793;6;0;false;false;63;95;191;;;
                                  -150799;1;0;false;false;;;;;;
                                  -150800;2;0;false;false;63;95;191;;;
                                  -150802;1;0;false;false;;;;;;
                                  -150803;3;0;false;false;63;95;191;;;
                                  -150806;1;0;false;false;;;;;;
                                  -150807;5;0;false;false;63;95;191;;;
                                  -150812;1;0;false;false;;;;;;
                                  -150813;9;0;false;false;63;95;191;;;
                                  -150822;1;0;false;false;;;;;;
                                  -150823;8;0;false;false;63;95;191;;;
                                  -150831;1;0;false;false;;;;;;
                                  -150832;2;0;false;false;63;95;191;;;
                                  -150834;1;0;false;false;;;;;;
                                  -150835;3;0;false;false;63;95;191;;;
                                  -150838;1;0;false;false;;;;;;
                                  -150839;8;0;false;false;63;95;191;;;
                                  -150847;1;0;false;false;;;;;;
                                  -150848;3;0;false;false;63;95;191;;;
                                  -150851;3;0;false;false;;;;;;
                                  -150854;1;0;false;false;63;95;191;;;
                                  -150855;1;0;false;false;;;;;;
                                  -150856;7;1;false;false;127;159;191;;;
                                  -150863;3;0;false;false;63;95;191;;;
                                  -150866;1;0;false;false;;;;;;
                                  -150867;6;0;false;false;63;95;191;;;
                                  -150873;1;0;false;false;;;;;;
                                  -150874;2;0;false;false;63;95;191;;;
                                  -150876;1;0;false;false;;;;;;
                                  -150877;3;0;false;false;63;95;191;;;
                                  -150880;1;0;false;false;;;;;;
                                  -150881;4;0;false;false;63;95;191;;;
                                  -150885;1;0;false;false;;;;;;
                                  -150886;9;0;false;false;63;95;191;;;
                                  -150895;1;0;false;false;;;;;;
                                  -150896;8;0;false;false;63;95;191;;;
                                  -150904;1;0;false;false;;;;;;
                                  -150905;2;0;false;false;63;95;191;;;
                                  -150907;1;0;false;false;;;;;;
                                  -150908;3;0;false;false;63;95;191;;;
                                  -150911;1;0;false;false;;;;;;
                                  -150912;8;0;false;false;63;95;191;;;
                                  -150920;1;0;false;false;;;;;;
                                  -150921;3;0;false;false;63;95;191;;;
                                  -150924;4;0;false;false;;;;;;
                                  -150928;1;0;false;false;63;95;191;;;
                                  -150929;1;0;false;false;;;;;;
                                  -150930;8;1;false;false;127;159;191;;;
                                  -150938;8;0;false;false;63;95;191;;;
                                  -150946;1;0;false;false;;;;;;
                                  -150947;3;0;false;false;63;95;191;;;
                                  -150950;1;0;false;false;;;;;;
                                  -150951;2;0;false;false;63;95;191;;;
                                  -150953;1;0;false;false;;;;;;
                                  -150954;3;0;false;false;63;95;191;;;
                                  -150957;1;0;false;false;;;;;;
                                  -150958;4;0;false;false;63;95;191;;;
                                  -150962;1;0;false;false;;;;;;
                                  -150963;7;0;false;false;63;95;191;;;
                                  -150970;1;0;false;false;;;;;;
                                  -150971;5;0;false;false;63;95;191;;;
                                  -150976;1;0;false;false;;;;;;
                                  -150977;3;0;false;false;63;95;191;;;
                                  -150980;1;0;false;false;;;;;;
                                  -150981;3;0;false;false;63;95;191;;;
                                  -150984;3;0;false;false;;;;;;
                                  -150987;1;0;false;false;63;95;191;;;
                                  -150988;1;0;false;false;;;;;;
                                  -150989;11;1;false;false;127;159;191;;;
                                  -151000;12;0;false;false;63;95;191;;;
                                  -151012;1;0;false;false;;;;;;
                                  -151013;4;0;false;false;127;127;159;;;
                                  -151017;3;0;false;false;;;;;;
                                  -151020;1;0;false;false;63;95;191;;;
                                  -151021;4;0;false;false;;;;;;
                                  -151025;4;0;false;false;127;127;159;;;
                                  -151029;21;0;false;false;63;95;191;;;
                                  -151050;1;0;false;false;;;;;;
                                  -151051;1;0;false;false;127;127;159;;;
                                  -151052;1;0;false;false;;;;;;
                                  -151053;2;0;false;false;63;95;191;;;
                                  -151055;1;0;false;false;;;;;;
                                  -151056;3;0;false;false;63;95;191;;;
                                  -151059;1;0;false;false;;;;;;
                                  -151060;8;0;false;false;63;95;191;;;
                                  -151068;1;0;false;false;;;;;;
                                  -151069;3;0;false;false;63;95;191;;;
                                  -151072;1;0;false;false;;;;;;
                                  -151073;4;0;false;false;63;95;191;;;
                                  -151077;1;0;false;false;;;;;;
                                  -151078;8;0;false;false;63;95;191;;;
                                  -151086;5;0;false;false;127;127;159;;;
                                  -151091;3;0;false;false;;;;;;
                                  -151094;1;0;false;false;63;95;191;;;
                                  -151095;4;0;false;false;;;;;;
                                  -151099;4;0;false;false;127;127;159;;;
                                  -151103;27;0;false;false;63;95;191;;;
                                  -151130;1;0;false;false;;;;;;
                                  -151131;1;0;false;false;127;127;159;;;
                                  -151132;1;0;false;false;;;;;;
                                  -151133;2;0;false;false;63;95;191;;;
                                  -151135;1;0;false;false;;;;;;
                                  -151136;3;0;false;false;63;95;191;;;
                                  -151139;1;0;false;false;;;;;;
                                  -151140;6;0;false;false;63;95;191;;;
                                  -151146;1;0;false;false;;;;;;
                                  -151147;4;0;false;false;63;95;191;;;
                                  -151151;1;0;false;false;;;;;;
                                  -151152;3;0;false;false;63;95;191;;;
                                  -151155;1;0;false;false;;;;;;
                                  -151156;6;0;false;false;63;95;191;;;
                                  -151162;1;0;false;false;;;;;;
                                  -151163;4;0;false;false;63;95;191;;;
                                  -151167;1;0;false;false;;;;;;
                                  -151168;7;0;false;false;63;95;191;;;
                                  -151175;1;0;false;false;;;;;;
                                  -151176;3;0;false;false;63;95;191;;;
                                  -151179;1;0;false;false;;;;;;
                                  -151180;8;0;false;false;63;95;191;;;
                                  -151188;5;0;false;false;127;127;159;;;
                                  -151193;3;0;false;false;;;;;;
                                  -151196;1;0;false;false;63;95;191;;;
                                  -151197;1;0;false;false;;;;;;
                                  -151198;5;0;false;false;127;127;159;;;
                                  -151203;3;0;false;false;;;;;;
                                  -151206;1;0;false;false;63;95;191;;;
                                  -151207;1;0;false;false;;;;;;
                                  -151208;11;1;false;false;127;159;191;;;
                                  -151219;24;0;false;false;63;95;191;;;
                                  -151243;1;0;false;false;;;;;;
                                  -151244;4;0;false;false;127;127;159;;;
                                  -151248;3;0;false;false;;;;;;
                                  -151251;1;0;false;false;63;95;191;;;
                                  -151252;3;0;false;false;;;;;;
                                  -151255;4;0;false;false;127;127;159;;;
                                  -151259;19;0;false;false;63;95;191;;;
                                  -151278;1;0;false;false;;;;;;
                                  -151279;4;0;false;false;63;95;191;;;
                                  -151283;1;0;false;false;;;;;;
                                  -151284;5;0;false;false;63;95;191;;;
                                  -151289;1;0;false;false;;;;;;
                                  -151290;6;0;false;false;63;95;191;;;
                                  -151296;1;0;false;false;;;;;;
                                  -151297;3;0;false;false;63;95;191;;;
                                  -151300;1;0;false;false;;;;;;
                                  -151301;3;0;false;false;63;95;191;;;
                                  -151304;1;0;false;false;;;;;;
                                  -151305;7;0;false;false;63;95;191;;;
                                  -151312;1;0;false;false;;;;;;
                                  -151313;3;0;false;false;63;95;191;;;
                                  -151316;1;0;false;false;;;;;;
                                  -151317;6;0;false;false;63;95;191;;;
                                  -151323;1;0;false;false;;;;;;
                                  -151324;7;0;false;false;63;95;191;;;
                                  -151331;5;0;false;false;127;127;159;;;
                                  -151336;4;0;false;false;;;;;;
                                  -151340;1;0;false;false;63;95;191;;;
                                  -151341;1;0;false;false;;;;;;
                                  -151342;5;0;false;false;127;127;159;;;
                                  -151347;3;0;false;false;;;;;;
                                  -151350;1;0;false;false;63;95;191;;;
                                  -151351;1;0;false;false;;;;;;
                                  -151352;7;1;false;false;127;159;191;;;
                                  -151359;3;0;false;false;63;95;191;;;
                                  -151362;3;0;false;false;;;;;;
                                  -151365;2;0;false;false;63;95;191;;;
                                  -151367;2;0;false;false;;;;;;
                                  -151369;6;1;false;false;127;0;85;;;
                                  -151375;1;0;false;false;;;;;;
                                  -151376;9;0;false;false;0;0;0;;;
                                  -151385;1;0;false;false;;;;;;
                                  -151386;14;0;false;false;0;0;0;;;
                                  -151400;3;1;false;false;127;0;85;;;
                                  -151403;1;0;false;false;;;;;;
                                  -151404;6;0;false;false;0;0;0;;;
                                  -151410;1;0;false;false;;;;;;
                                  -151411;3;1;false;false;127;0;85;;;
                                  -151414;1;0;false;false;;;;;;
                                  -151415;4;0;false;false;0;0;0;;;
                                  -151419;1;0;false;false;;;;;;
                                  -151420;1;0;false;false;0;0;0;;;
                                  -151421;3;0;false;false;;;;;;
                                  -151424;14;0;false;false;0;0;0;;;
                                  -151438;4;0;false;false;;;;;;
                                  -151442;3;1;false;false;127;0;85;;;
                                  -151445;1;0;false;false;;;;;;
                                  -151446;13;0;false;false;0;0;0;;;
                                  -151459;1;0;false;false;;;;;;
                                  -151460;1;0;false;false;0;0;0;;;
                                  -151461;1;0;false;false;;;;;;
                                  -151462;15;0;false;false;0;0;0;;;
                                  -151477;4;0;false;false;;;;;;
                                  -151481;2;1;false;false;127;0;85;;;
                                  -151483;1;0;false;false;;;;;;
                                  -151484;6;0;false;false;0;0;0;;;
                                  -151490;1;0;false;false;;;;;;
                                  -151491;1;0;false;false;0;0;0;;;
                                  -151492;1;0;false;false;;;;;;
                                  -151493;1;0;false;false;0;0;0;;;
                                  -151494;1;0;false;false;;;;;;
                                  -151495;2;0;false;false;0;0;0;;;
                                  -151497;1;0;false;false;;;;;;
                                  -151498;5;0;false;false;0;0;0;;;
                                  -151503;1;0;false;false;;;;;;
                                  -151504;2;0;false;false;0;0;0;;;
                                  -151506;1;0;false;false;;;;;;
                                  -151507;13;0;false;false;0;0;0;;;
                                  -151520;1;0;false;false;;;;;;
                                  -151521;2;0;false;false;0;0;0;;;
                                  -151523;1;0;false;false;;;;;;
                                  -151524;3;0;false;false;0;0;0;;;
                                  -151527;1;0;false;false;;;;;;
                                  -151528;1;0;false;false;0;0;0;;;
                                  -151529;1;0;false;false;;;;;;
                                  -151530;1;0;false;false;0;0;0;;;
                                  -151531;1;0;false;false;;;;;;
                                  -151532;2;0;false;false;0;0;0;;;
                                  -151534;1;0;false;false;;;;;;
                                  -151535;3;0;false;false;0;0;0;;;
                                  -151538;1;0;false;false;;;;;;
                                  -151539;2;0;false;false;0;0;0;;;
                                  -151541;1;0;false;false;;;;;;
                                  -151542;13;0;false;false;0;0;0;;;
                                  -151555;1;0;false;false;;;;;;
                                  -151556;2;0;false;false;0;0;0;;;
                                  -151558;1;0;false;false;;;;;;
                                  -151559;5;0;false;false;0;0;0;;;
                                  -151564;1;0;false;false;;;;;;
                                  -151565;1;0;false;false;0;0;0;;;
                                  -151566;1;0;false;false;;;;;;
                                  -151567;4;0;false;false;0;0;0;;;
                                  -151571;1;0;false;false;;;;;;
                                  -151572;1;0;false;false;0;0;0;;;
                                  -151573;4;0;false;false;;;;;;
                                  -151577;35;0;false;false;0;0;0;;;
                                  -151612;3;0;false;false;;;;;;
                                  -151615;1;0;false;false;0;0;0;;;
                                  -151616;3;0;false;false;;;;;;
                                  -151619;3;1;false;false;127;0;85;;;
                                  -151622;1;0;false;false;;;;;;
                                  -151623;9;0;false;false;0;0;0;;;
                                  -151632;1;0;false;false;;;;;;
                                  -151633;1;0;false;false;0;0;0;;;
                                  -151634;1;0;false;false;;;;;;
                                  -151635;31;0;false;false;0;0;0;;;
                                  -151666;3;0;false;false;;;;;;
                                  -151669;3;1;false;false;127;0;85;;;
                                  -151672;1;0;false;false;;;;;;
                                  -151673;7;0;false;false;0;0;0;;;
                                  -151680;1;0;false;false;;;;;;
                                  -151681;1;0;false;false;0;0;0;;;
                                  -151682;1;0;false;false;;;;;;
                                  -151683;29;0;false;false;0;0;0;;;
                                  -151712;3;0;false;false;;;;;;
                                  -151715;9;0;false;false;0;0;0;;;
                                  -151724;1;0;false;false;;;;;;
                                  -151725;5;0;false;false;0;0;0;;;
                                  -151730;3;0;false;false;;;;;;
                                  -151733;3;1;false;false;127;0;85;;;
                                  -151736;1;0;false;false;;;;;;
                                  -151737;1;0;false;false;0;0;0;;;
                                  -151738;1;0;false;false;;;;;;
                                  -151739;1;0;false;false;0;0;0;;;
                                  -151740;1;0;false;false;;;;;;
                                  -151741;9;0;false;false;0;0;0;;;
                                  -151750;1;0;false;false;;;;;;
                                  -151751;1;0;false;false;0;0;0;;;
                                  -151752;1;0;false;false;;;;;;
                                  -151753;11;0;false;false;0;0;0;;;
                                  -151764;3;0;false;false;;;;;;
                                  -151767;3;1;false;false;127;0;85;;;
                                  -151770;1;0;false;false;;;;;;
                                  -151771;6;0;false;false;0;0;0;;;
                                  -151777;1;0;false;false;;;;;;
                                  -151778;1;0;false;false;0;0;0;;;
                                  -151779;1;0;false;false;;;;;;
                                  -151780;8;0;false;false;0;0;0;;;
                                  -151788;1;0;false;false;;;;;;
                                  -151789;1;0;false;false;0;0;0;;;
                                  -151790;1;0;false;false;;;;;;
                                  -151791;2;0;false;false;0;0;0;;;
                                  -151793;1;0;false;false;;;;;;
                                  -151794;1;0;false;false;0;0;0;;;
                                  -151795;1;0;false;false;;;;;;
                                  -151796;10;0;false;false;0;0;0;;;
                                  -151806;1;0;false;false;;;;;;
                                  -151807;1;0;false;false;0;0;0;;;
                                  -151808;1;0;false;false;;;;;;
                                  -151809;2;0;false;false;0;0;0;;;
                                  -151811;3;0;false;false;;;;;;
                                  -151814;3;1;false;false;127;0;85;;;
                                  -151817;1;0;false;false;;;;;;
                                  -151818;4;0;false;false;0;0;0;;;
                                  -151822;1;0;false;false;;;;;;
                                  -151823;1;0;false;false;0;0;0;;;
                                  -151824;1;0;false;false;;;;;;
                                  -151825;11;0;false;false;0;0;0;;;
                                  -151836;1;0;false;false;;;;;;
                                  -151837;5;0;false;false;0;0;0;;;
                                  -151842;1;0;false;false;;;;;;
                                  -151843;1;0;false;false;0;0;0;;;
                                  -151844;1;0;false;false;;;;;;
                                  -151845;2;0;false;false;0;0;0;;;
                                  -151847;3;0;false;false;;;;;;
                                  -151850;3;1;false;false;127;0;85;;;
                                  -151853;1;0;false;false;;;;;;
                                  -151854;1;0;false;false;0;0;0;;;
                                  -151855;3;1;false;false;127;0;85;;;
                                  -151858;1;0;false;false;;;;;;
                                  -151859;1;0;false;false;0;0;0;;;
                                  -151860;1;0;false;false;;;;;;
                                  -151861;1;0;false;false;0;0;0;;;
                                  -151862;1;0;false;false;;;;;;
                                  -151863;10;0;false;false;0;0;0;;;
                                  -151873;1;0;false;false;;;;;;
                                  -151874;1;0;false;false;0;0;0;;;
                                  -151875;1;0;false;false;;;;;;
                                  -151876;2;0;false;false;0;0;0;;;
                                  -151878;1;0;false;false;;;;;;
                                  -151879;8;0;false;false;0;0;0;;;
                                  -151887;1;0;false;false;;;;;;
                                  -151888;4;0;false;false;0;0;0;;;
                                  -151892;1;0;false;false;;;;;;
                                  -151893;1;0;false;false;0;0;0;;;
                                  -151894;4;0;false;false;;;;;;
                                  -151898;3;1;false;false;127;0;85;;;
                                  -151901;1;0;false;false;;;;;;
                                  -151902;10;0;false;false;0;0;0;;;
                                  -151912;1;0;false;false;;;;;;
                                  -151913;1;0;false;false;0;0;0;;;
                                  -151914;1;0;false;false;;;;;;
                                  -151915;27;0;false;false;0;0;0;;;
                                  -151942;4;0;false;false;;;;;;
                                  -151946;6;0;false;false;0;0;0;;;
                                  -151952;1;0;false;false;;;;;;
                                  -151953;4;0;false;false;0;0;0;;;
                                  -151957;1;0;false;false;;;;;;
                                  -151958;1;0;false;false;0;0;0;;;
                                  -151959;1;0;false;false;;;;;;
                                  -151960;19;0;false;false;0;0;0;;;
                                  -151979;4;0;false;false;;;;;;
                                  -151983;10;0;false;false;0;0;0;;;
                                  -151993;1;0;false;false;;;;;;
                                  -151994;6;0;false;false;0;0;0;;;
                                  -152000;1;0;false;false;;;;;;
                                  -152001;1;0;false;false;0;0;0;;;
                                  -152002;1;0;false;false;;;;;;
                                  -152003;28;0;false;false;0;0;0;;;
                                  -152031;1;0;false;false;;;;;;
                                  -152032;12;0;false;false;0;0;0;;;
                                  -152044;4;0;false;false;;;;;;
                                  -152048;2;1;false;false;127;0;85;;;
                                  -152050;1;0;false;false;;;;;;
                                  -152051;2;0;false;false;0;0;0;;;
                                  -152053;1;0;false;false;;;;;;
                                  -152054;2;0;false;false;0;0;0;;;
                                  -152056;1;0;false;false;;;;;;
                                  -152057;9;0;false;false;0;0;0;;;
                                  -152066;1;0;false;false;;;;;;
                                  -152067;2;0;false;false;0;0;0;;;
                                  -152069;1;0;false;false;;;;;;
                                  -152070;1;0;false;false;0;0;0;;;
                                  -152071;1;0;false;false;;;;;;
                                  -152072;2;0;false;false;0;0;0;;;
                                  -152074;1;0;false;false;;;;;;
                                  -152075;8;0;false;false;0;0;0;;;
                                  -152083;1;0;false;false;;;;;;
                                  -152084;1;0;false;false;0;0;0;;;
                                  -152085;5;0;false;false;;;;;;
                                  -152090;4;0;false;false;0;0;0;;;
                                  -152094;1;0;false;false;;;;;;
                                  -152095;1;0;false;false;0;0;0;;;
                                  -152096;1;0;false;false;;;;;;
                                  -152097;22;0;false;false;0;0;0;;;
                                  -152119;1;0;false;false;;;;;;
                                  -152120;1;0;false;false;0;0;0;;;
                                  -152121;1;0;false;false;;;;;;
                                  -152122;11;0;false;false;0;0;0;;;
                                  -152133;1;0;false;false;;;;;;
                                  -152134;3;0;false;false;0;0;0;;;
                                  -152137;1;0;false;false;;;;;;
                                  -152138;1;0;false;false;0;0;0;;;
                                  -152139;1;0;false;false;;;;;;
                                  -152140;12;0;false;false;0;0;0;;;
                                  -152152;4;0;false;false;;;;;;
                                  -152156;1;0;false;false;0;0;0;;;
                                  -152157;1;0;false;false;;;;;;
                                  -152158;4;1;false;false;127;0;85;;;
                                  -152162;1;0;false;false;;;;;;
                                  -152163;2;1;false;false;127;0;85;;;
                                  -152165;1;0;false;false;;;;;;
                                  -152166;2;0;false;false;0;0;0;;;
                                  -152168;1;0;false;false;;;;;;
                                  -152169;2;0;false;false;0;0;0;;;
                                  -152171;1;0;false;false;;;;;;
                                  -152172;10;0;false;false;0;0;0;;;
                                  -152182;1;0;false;false;;;;;;
                                  -152183;1;0;false;false;0;0;0;;;
                                  -152184;5;0;false;false;;;;;;
                                  -152189;4;0;false;false;0;0;0;;;
                                  -152193;1;0;false;false;;;;;;
                                  -152194;1;0;false;false;0;0;0;;;
                                  -152195;1;0;false;false;;;;;;
                                  -152196;22;0;false;false;0;0;0;;;
                                  -152218;1;0;false;false;;;;;;
                                  -152219;1;0;false;false;0;0;0;;;
                                  -152220;1;0;false;false;;;;;;
                                  -152221;11;0;false;false;0;0;0;;;
                                  -152232;1;0;false;false;;;;;;
                                  -152233;15;0;false;false;0;0;0;;;
                                  -152248;4;0;false;false;;;;;;
                                  -152252;1;0;false;false;0;0;0;;;
                                  -152253;1;0;false;false;;;;;;
                                  -152254;4;1;false;false;127;0;85;;;
                                  -152258;1;0;false;false;;;;;;
                                  -152259;2;1;false;false;127;0;85;;;
                                  -152261;1;0;false;false;;;;;;
                                  -152262;2;0;false;false;0;0;0;;;
                                  -152264;1;0;false;false;;;;;;
                                  -152265;2;0;false;false;0;0;0;;;
                                  -152267;1;0;false;false;;;;;;
                                  -152268;8;0;false;false;0;0;0;;;
                                  -152276;1;0;false;false;;;;;;
                                  -152277;1;0;false;false;0;0;0;;;
                                  -152278;5;0;false;false;;;;;;
                                  -152283;4;0;false;false;0;0;0;;;
                                  -152287;1;0;false;false;;;;;;
                                  -152288;1;0;false;false;0;0;0;;;
                                  -152289;1;0;false;false;;;;;;
                                  -152290;19;0;false;false;0;0;0;;;
                                  -152309;1;0;false;false;;;;;;
                                  -152310;3;0;false;false;0;0;0;;;
                                  -152313;1;0;false;false;;;;;;
                                  -152314;1;0;false;false;0;0;0;;;
                                  -152315;1;0;false;false;;;;;;
                                  -152316;12;0;false;false;0;0;0;;;
                                  -152328;4;0;false;false;;;;;;
                                  -152332;1;0;false;false;0;0;0;;;
                                  -152333;1;0;false;false;;;;;;
                                  -152334;4;1;false;false;127;0;85;;;
                                  -152338;1;0;false;false;;;;;;
                                  -152339;1;0;false;false;0;0;0;;;
                                  -152340;5;0;false;false;;;;;;
                                  -152345;4;0;false;false;0;0;0;;;
                                  -152349;1;0;false;false;;;;;;
                                  -152350;1;0;false;false;0;0;0;;;
                                  -152351;1;0;false;false;;;;;;
                                  -152352;24;0;false;false;0;0;0;;;
                                  -152376;4;0;false;false;;;;;;
                                  -152380;1;0;false;false;0;0;0;;;
                                  -152381;4;0;false;false;;;;;;
                                  -152385;4;0;false;false;0;0;0;;;
                                  -152389;1;0;false;false;;;;;;
                                  -152390;1;0;false;false;0;0;0;;;
                                  -152391;1;0;false;false;;;;;;
                                  -152392;8;0;false;false;0;0;0;;;
                                  -152400;1;0;false;false;;;;;;
                                  -152401;6;0;false;false;0;0;0;;;
                                  -152407;1;0;false;false;;;;;;
                                  -152408;8;0;false;false;0;0;0;;;
                                  -152416;4;0;false;false;;;;;;
                                  -152420;5;0;false;false;0;0;0;;;
                                  -152425;1;0;false;false;;;;;;
                                  -152426;1;0;false;false;0;0;0;;;
                                  -152427;1;0;false;false;;;;;;
                                  -152428;8;0;false;false;0;0;0;;;
                                  -152436;1;0;false;false;;;;;;
                                  -152437;7;0;false;false;0;0;0;;;
                                  -152444;1;0;false;false;;;;;;
                                  -152445;6;0;false;false;0;0;0;;;
                                  -152451;1;0;false;false;;;;;;
                                  -152452;1;0;false;false;0;0;0;;;
                                  -152453;1;0;false;false;;;;;;
                                  -152454;12;0;false;false;0;0;0;;;
                                  -152466;4;0;false;false;;;;;;
                                  -152470;35;0;false;false;0;0;0;;;
                                  -152505;3;0;false;false;;;;;;
                                  -152508;1;0;false;false;0;0;0;;;
                                  -152509;3;0;false;false;;;;;;
                                  -152512;4;0;false;false;0;0;0;;;
                                  -152516;1;0;false;false;;;;;;
                                  -152517;1;0;false;false;0;0;0;;;
                                  -152518;1;0;false;false;;;;;;
                                  -152519;3;1;false;false;127;0;85;;;
                                  -152522;1;0;false;false;;;;;;
                                  -152523;9;0;false;false;0;0;0;;;
                                  -152532;1;0;false;false;;;;;;
                                  -152533;6;0;false;false;0;0;0;;;
                                  -152539;1;0;false;false;;;;;;
                                  -152540;2;0;false;false;0;0;0;;;
                                  -152542;1;0;false;false;;;;;;
                                  -152543;11;0;false;false;0;0;0;;;
                                  -152554;1;0;false;false;;;;;;
                                  -152555;8;0;false;false;0;0;0;;;
                                  -152563;3;0;false;false;;;;;;
                                  -152566;6;0;false;false;0;0;0;;;
                                  -152572;1;0;false;false;;;;;;
                                  -152573;2;0;false;false;0;0;0;;;
                                  -152575;1;0;false;false;;;;;;
                                  -152576;10;0;false;false;0;0;0;;;
                                  -152586;1;0;false;false;;;;;;
                                  -152587;1;0;false;false;0;0;0;;;
                                  -152588;1;0;false;false;;;;;;
                                  -152589;23;0;false;false;0;0;0;;;
                                  -152612;3;0;false;false;;;;;;
                                  -152615;6;0;false;false;0;0;0;;;
                                  -152621;1;0;false;false;;;;;;
                                  -152622;2;0;false;false;0;0;0;;;
                                  -152624;1;0;false;false;;;;;;
                                  -152625;21;0;false;false;0;0;0;;;
                                  -152646;3;0;false;false;;;;;;
                                  -152649;6;1;false;false;127;0;85;;;
                                  -152655;1;0;false;false;;;;;;
                                  -152656;5;0;false;false;0;0;0;;;
                                  -152661;2;0;false;false;;;;;;
                                  -152663;1;0;false;false;0;0;0;;;
                                  -152664;2;0;false;false;;;;;;
                                  -152666;3;0;false;false;63;95;191;;;
                                  -152669;3;0;false;false;;;;;;
                                  -152672;1;0;false;false;63;95;191;;;
                                  -152673;1;0;false;false;;;;;;
                                  -152674;7;0;false;false;63;95;191;;;
                                  -152681;1;0;false;false;;;;;;
                                  -152682;3;0;false;false;63;95;191;;;
                                  -152685;1;0;false;false;;;;;;
                                  -152686;6;0;false;false;63;95;191;;;
                                  -152692;1;0;false;false;;;;;;
                                  -152693;7;0;false;false;63;95;191;;;
                                  -152700;1;0;false;false;;;;;;
                                  -152701;8;0;false;false;63;95;191;;;
                                  -152709;1;0;false;false;;;;;;
                                  -152710;2;0;false;false;63;95;191;;;
                                  -152712;1;0;false;false;;;;;;
                                  -152713;5;0;false;false;63;95;191;;;
                                  -152718;1;0;false;false;;;;;;
                                  -152719;3;0;false;false;63;95;191;;;
                                  -152722;1;0;false;false;;;;;;
                                  -152723;6;0;false;false;63;95;191;;;
                                  -152729;1;0;false;false;;;;;;
                                  -152730;11;0;false;false;63;95;191;;;
                                  -152741;3;0;false;false;;;;;;
                                  -152744;1;0;false;false;63;95;191;;;
                                  -152745;1;0;false;false;;;;;;
                                  -152746;3;0;false;false;127;127;159;;;
                                  -152749;3;0;false;false;;;;;;
                                  -152752;1;0;false;false;63;95;191;;;
                                  -152753;3;0;false;false;;;;;;
                                  -152756;1;0;false;false;63;95;191;;;
                                  -152757;1;0;false;false;;;;;;
                                  -152758;7;1;false;false;127;159;191;;;
                                  -152765;5;0;false;false;63;95;191;;;
                                  -152770;1;0;false;false;;;;;;
                                  -152771;6;0;false;false;63;95;191;;;
                                  -152777;1;0;false;false;;;;;;
                                  -152778;2;0;false;false;63;95;191;;;
                                  -152780;1;0;false;false;;;;;;
                                  -152781;3;0;false;false;63;95;191;;;
                                  -152784;1;0;false;false;;;;;;
                                  -152785;5;0;false;false;63;95;191;;;
                                  -152790;1;0;false;false;;;;;;
                                  -152791;9;0;false;false;63;95;191;;;
                                  -152800;1;0;false;false;;;;;;
                                  -152801;2;0;false;false;63;95;191;;;
                                  -152803;1;0;false;false;;;;;;
                                  -152804;3;0;false;false;63;95;191;;;
                                  -152807;1;0;false;false;;;;;;
                                  -152808;8;0;false;false;63;95;191;;;
                                  -152816;1;0;false;false;;;;;;
                                  -152817;6;0;false;false;63;95;191;;;
                                  -152823;3;0;false;false;;;;;;
                                  -152826;1;0;false;false;63;95;191;;;
                                  -152827;1;0;false;false;;;;;;
                                  -152828;7;1;false;false;127;159;191;;;
                                  -152835;6;0;false;false;63;95;191;;;
                                  -152841;1;0;false;false;;;;;;
                                  -152842;6;0;false;false;63;95;191;;;
                                  -152848;1;0;false;false;;;;;;
                                  -152849;2;0;false;false;63;95;191;;;
                                  -152851;1;0;false;false;;;;;;
                                  -152852;10;0;false;false;63;95;191;;;
                                  -152862;1;0;false;false;;;;;;
                                  -152863;2;0;false;false;63;95;191;;;
                                  -152865;1;0;false;false;;;;;;
                                  -152866;6;0;false;false;63;95;191;;;
                                  -152872;4;0;false;false;;;;;;
                                  -152876;1;0;false;false;63;95;191;;;
                                  -152877;1;0;false;false;;;;;;
                                  -152878;8;1;false;false;127;159;191;;;
                                  -152886;6;0;false;false;63;95;191;;;
                                  -152892;1;0;false;false;;;;;;
                                  -152893;7;0;false;false;63;95;191;;;
                                  -152900;1;0;false;false;;;;;;
                                  -152901;8;0;false;false;63;95;191;;;
                                  -152909;1;0;false;false;;;;;;
                                  -152910;2;0;false;false;63;95;191;;;
                                  -152912;1;0;false;false;;;;;;
                                  -152913;5;0;false;false;63;95;191;;;
                                  -152918;1;0;false;false;;;;;;
                                  -152919;3;0;false;false;63;95;191;;;
                                  -152922;1;0;false;false;;;;;;
                                  -152923;9;0;false;false;63;95;191;;;
                                  -152932;1;0;false;false;;;;;;
                                  -152933;6;0;false;false;63;95;191;;;
                                  -152939;1;0;false;false;;;;;;
                                  -152940;11;0;false;false;63;95;191;;;
                                  -152951;3;0;false;false;;;;;;
                                  -152954;1;0;false;false;63;95;191;;;
                                  -152955;1;0;false;false;;;;;;
                                  -152956;11;1;false;false;127;159;191;;;
                                  -152967;12;0;false;false;63;95;191;;;
                                  -152979;1;0;false;false;;;;;;
                                  -152980;4;0;false;false;127;127;159;;;
                                  -152984;3;0;false;false;;;;;;
                                  -152987;1;0;false;false;63;95;191;;;
                                  -152988;4;0;false;false;;;;;;
                                  -152992;4;0;false;false;127;127;159;;;
                                  -152996;21;0;false;false;63;95;191;;;
                                  -153017;1;0;false;false;;;;;;
                                  -153018;1;0;false;false;127;127;159;;;
                                  -153019;1;0;false;false;;;;;;
                                  -153020;2;0;false;false;63;95;191;;;
                                  -153022;1;0;false;false;;;;;;
                                  -153023;3;0;false;false;63;95;191;;;
                                  -153026;1;0;false;false;;;;;;
                                  -153027;8;0;false;false;63;95;191;;;
                                  -153035;1;0;false;false;;;;;;
                                  -153036;3;0;false;false;63;95;191;;;
                                  -153039;1;0;false;false;;;;;;
                                  -153040;4;0;false;false;63;95;191;;;
                                  -153044;1;0;false;false;;;;;;
                                  -153045;8;0;false;false;63;95;191;;;
                                  -153053;5;0;false;false;127;127;159;;;
                                  -153058;3;0;false;false;;;;;;
                                  -153061;1;0;false;false;63;95;191;;;
                                  -153062;4;0;false;false;;;;;;
                                  -153066;4;0;false;false;127;127;159;;;
                                  -153070;27;0;false;false;63;95;191;;;
                                  -153097;1;0;false;false;;;;;;
                                  -153098;1;0;false;false;127;127;159;;;
                                  -153099;1;0;false;false;;;;;;
                                  -153100;2;0;false;false;63;95;191;;;
                                  -153102;1;0;false;false;;;;;;
                                  -153103;3;0;false;false;63;95;191;;;
                                  -153106;1;0;false;false;;;;;;
                                  -153107;6;0;false;false;63;95;191;;;
                                  -153113;1;0;false;false;;;;;;
                                  -153114;4;0;false;false;63;95;191;;;
                                  -153118;1;0;false;false;;;;;;
                                  -153119;3;0;false;false;63;95;191;;;
                                  -153122;1;0;false;false;;;;;;
                                  -153123;6;0;false;false;63;95;191;;;
                                  -153129;1;0;false;false;;;;;;
                                  -153130;4;0;false;false;63;95;191;;;
                                  -153134;1;0;false;false;;;;;;
                                  -153135;7;0;false;false;63;95;191;;;
                                  -153142;1;0;false;false;;;;;;
                                  -153143;3;0;false;false;63;95;191;;;
                                  -153146;1;0;false;false;;;;;;
                                  -153147;8;0;false;false;63;95;191;;;
                                  -153155;5;0;false;false;127;127;159;;;
                                  -153160;3;0;false;false;;;;;;
                                  -153163;1;0;false;false;63;95;191;;;
                                  -153164;1;0;false;false;;;;;;
                                  -153165;5;0;false;false;127;127;159;;;
                                  -153170;3;0;false;false;;;;;;
                                  -153173;1;0;false;false;63;95;191;;;
                                  -153174;1;0;false;false;;;;;;
                                  -153175;11;1;false;false;127;159;191;;;
                                  -153186;24;0;false;false;63;95;191;;;
                                  -153210;1;0;false;false;;;;;;
                                  -153211;4;0;false;false;127;127;159;;;
                                  -153215;3;0;false;false;;;;;;
                                  -153218;1;0;false;false;63;95;191;;;
                                  -153219;3;0;false;false;;;;;;
                                  -153222;4;0;false;false;127;127;159;;;
                                  -153226;19;0;false;false;63;95;191;;;
                                  -153245;1;0;false;false;;;;;;
                                  -153246;4;0;false;false;63;95;191;;;
                                  -153250;1;0;false;false;;;;;;
                                  -153251;5;0;false;false;63;95;191;;;
                                  -153256;1;0;false;false;;;;;;
                                  -153257;6;0;false;false;63;95;191;;;
                                  -153263;1;0;false;false;;;;;;
                                  -153264;6;0;false;false;63;95;191;;;
                                  -153270;1;0;false;false;;;;;;
                                  -153271;3;0;false;false;63;95;191;;;
                                  -153274;1;0;false;false;;;;;;
                                  -153275;7;0;false;false;63;95;191;;;
                                  -153282;1;0;false;false;;;;;;
                                  -153283;3;0;false;false;63;95;191;;;
                                  -153286;1;0;false;false;;;;;;
                                  -153287;6;0;false;false;63;95;191;;;
                                  -153293;1;0;false;false;;;;;;
                                  -153294;7;0;false;false;63;95;191;;;
                                  -153301;5;0;false;false;127;127;159;;;
                                  -153306;4;0;false;false;;;;;;
                                  -153310;1;0;false;false;63;95;191;;;
                                  -153311;1;0;false;false;;;;;;
                                  -153312;5;0;false;false;127;127;159;;;
                                  -153317;3;0;false;false;;;;;;
                                  -153320;2;0;false;false;63;95;191;;;
                                  -153322;2;0;false;false;;;;;;
                                  -153324;6;1;false;false;127;0;85;;;
                                  -153330;1;0;false;false;;;;;;
                                  -153331;6;0;false;false;0;0;0;;;
                                  -153337;1;0;false;false;;;;;;
                                  -153338;13;0;false;false;0;0;0;;;
                                  -153351;3;1;false;false;127;0;85;;;
                                  -153354;1;0;false;false;;;;;;
                                  -153355;6;0;false;false;0;0;0;;;
                                  -153361;1;0;false;false;;;;;;
                                  -153362;3;1;false;false;127;0;85;;;
                                  -153365;1;0;false;false;;;;;;
                                  -153366;7;0;false;false;0;0;0;;;
                                  -153373;1;0;false;false;;;;;;
                                  -153374;1;0;false;false;0;0;0;;;
                                  -153375;3;0;false;false;;;;;;
                                  -153378;14;0;false;false;0;0;0;;;
                                  -153392;3;0;false;false;;;;;;
                                  -153395;3;1;false;false;127;0;85;;;
                                  -153398;1;0;false;false;;;;;;
                                  -153399;13;0;false;false;0;0;0;;;
                                  -153412;1;0;false;false;;;;;;
                                  -153413;1;0;false;false;0;0;0;;;
                                  -153414;1;0;false;false;;;;;;
                                  -153415;15;0;false;false;0;0;0;;;
                                  -153430;3;0;false;false;;;;;;
                                  -153433;3;1;false;false;127;0;85;;;
                                  -153436;1;0;false;false;;;;;;
                                  -153437;3;0;false;false;0;0;0;;;
                                  -153440;1;0;false;false;;;;;;
                                  -153441;1;0;false;false;0;0;0;;;
                                  -153442;1;0;false;false;;;;;;
                                  -153443;5;0;false;false;0;0;0;;;
                                  -153448;1;0;false;false;;;;;;
                                  -153449;1;0;false;false;0;0;0;;;
                                  -153450;1;0;false;false;;;;;;
                                  -153451;7;0;false;false;0;0;0;;;
                                  -153458;6;0;false;false;;;;;;
                                  -153464;2;1;false;false;127;0;85;;;
                                  -153466;1;0;false;false;;;;;;
                                  -153467;6;0;false;false;0;0;0;;;
                                  -153473;1;0;false;false;;;;;;
                                  -153474;1;0;false;false;0;0;0;;;
                                  -153475;1;0;false;false;;;;;;
                                  -153476;3;0;false;false;0;0;0;;;
                                  -153479;1;0;false;false;;;;;;
                                  -153480;2;0;false;false;0;0;0;;;
                                  -153482;1;0;false;false;;;;;;
                                  -153483;5;0;false;false;0;0;0;;;
                                  -153488;1;0;false;false;;;;;;
                                  -153489;1;0;false;false;0;0;0;;;
                                  -153490;1;0;false;false;;;;;;
                                  -153491;1;0;false;false;0;0;0;;;
                                  -153492;1;0;false;false;;;;;;
                                  -153493;2;0;false;false;0;0;0;;;
                                  -153495;1;0;false;false;;;;;;
                                  -153496;3;0;false;false;0;0;0;;;
                                  -153499;1;0;false;false;;;;;;
                                  -153500;1;0;false;false;0;0;0;;;
                                  -153501;1;0;false;false;;;;;;
                                  -153502;14;0;false;false;0;0;0;;;
                                  -153516;1;0;false;false;;;;;;
                                  -153517;1;0;false;false;0;0;0;;;
                                  -153518;4;0;false;false;;;;;;
                                  -153522;35;0;false;false;0;0;0;;;
                                  -153557;3;0;false;false;;;;;;
                                  -153560;1;0;false;false;0;0;0;;;
                                  -153561;4;0;false;false;;;;;;
                                  -153565;6;1;false;false;127;0;85;;;
                                  -153571;1;0;false;false;;;;;;
                                  -153572;27;0;false;false;0;0;0;;;
                                  -153599;1;0;false;false;;;;;;
                                  -153600;8;0;false;false;0;0;0;;;
                                  -153608;2;0;false;false;;;;;;
                                  -153610;1;0;false;false;0;0;0;;;
                                  -153611;2;0;false;false;;;;;;
                                  -153613;3;0;false;false;63;95;191;;;
                                  -153616;3;0;false;false;;;;;;
                                  -153619;1;0;false;false;63;95;191;;;
                                  -153620;1;0;false;false;;;;;;
                                  -153621;7;0;false;false;63;95;191;;;
                                  -153628;1;0;false;false;;;;;;
                                  -153629;3;0;false;false;63;95;191;;;
                                  -153632;1;0;false;false;;;;;;
                                  -153633;7;0;false;false;63;95;191;;;
                                  -153640;1;0;false;false;;;;;;
                                  -153641;6;0;false;false;63;95;191;;;
                                  -153647;1;0;false;false;;;;;;
                                  -153648;2;0;false;false;63;95;191;;;
                                  -153650;1;0;false;false;;;;;;
                                  -153651;10;0;false;false;63;95;191;;;
                                  -153661;1;0;false;false;;;;;;
                                  -153662;4;0;false;false;63;95;191;;;
                                  -153666;1;0;false;false;;;;;;
                                  -153667;3;0;false;false;63;95;191;;;
                                  -153670;1;0;false;false;;;;;;
                                  -153671;8;0;false;false;63;95;191;;;
                                  -153679;1;0;false;false;;;;;;
                                  -153680;2;0;false;false;63;95;191;;;
                                  -153682;1;0;false;false;;;;;;
                                  -153683;7;0;false;false;63;95;191;;;
                                  -153690;1;0;false;false;;;;;;
                                  -153691;2;0;false;false;63;95;191;;;
                                  -153693;1;0;false;false;;;;;;
                                  -153694;8;0;false;false;63;95;191;;;
                                  -153702;3;0;false;false;;;;;;
                                  -153705;1;0;false;false;63;95;191;;;
                                  -153706;4;0;false;false;;;;;;
                                  -153710;1;0;false;false;63;95;191;;;
                                  -153711;1;0;false;false;;;;;;
                                  -153712;8;1;false;false;127;159;191;;;
                                  -153720;3;0;false;false;63;95;191;;;
                                  -153723;1;0;false;false;;;;;;
                                  -153724;4;0;false;false;63;95;191;;;
                                  -153728;1;0;false;false;;;;;;
                                  -153729;5;0;false;false;63;95;191;;;
                                  -153734;3;0;false;false;;;;;;
                                  -153737;1;0;false;false;63;95;191;;;
                                  -153738;3;0;false;false;;;;;;
                                  -153741;1;0;false;false;63;95;191;;;
                                  -153742;1;0;false;false;;;;;;
                                  -153743;11;1;false;false;127;159;191;;;
                                  -153754;12;0;false;false;63;95;191;;;
                                  -153766;1;0;false;false;;;;;;
                                  -153767;4;0;false;false;127;127;159;;;
                                  -153771;3;0;false;false;;;;;;
                                  -153774;1;0;false;false;63;95;191;;;
                                  -153775;4;0;false;false;;;;;;
                                  -153779;4;0;false;false;127;127;159;;;
                                  -153783;21;0;false;false;63;95;191;;;
                                  -153804;1;0;false;false;;;;;;
                                  -153805;1;0;false;false;127;127;159;;;
                                  -153806;1;0;false;false;;;;;;
                                  -153807;2;0;false;false;63;95;191;;;
                                  -153809;1;0;false;false;;;;;;
                                  -153810;3;0;false;false;63;95;191;;;
                                  -153813;1;0;false;false;;;;;;
                                  -153814;8;0;false;false;63;95;191;;;
                                  -153822;1;0;false;false;;;;;;
                                  -153823;3;0;false;false;63;95;191;;;
                                  -153826;1;0;false;false;;;;;;
                                  -153827;4;0;false;false;63;95;191;;;
                                  -153831;1;0;false;false;;;;;;
                                  -153832;8;0;false;false;63;95;191;;;
                                  -153840;5;0;false;false;127;127;159;;;
                                  -153845;3;0;false;false;;;;;;
                                  -153848;1;0;false;false;63;95;191;;;
                                  -153849;4;0;false;false;;;;;;
                                  -153853;4;0;false;false;127;127;159;;;
                                  -153857;27;0;false;false;63;95;191;;;
                                  -153884;1;0;false;false;;;;;;
                                  -153885;1;0;false;false;127;127;159;;;
                                  -153886;1;0;false;false;;;;;;
                                  -153887;2;0;false;false;63;95;191;;;
                                  -153889;1;0;false;false;;;;;;
                                  -153890;3;0;false;false;63;95;191;;;
                                  -153893;1;0;false;false;;;;;;
                                  -153894;6;0;false;false;63;95;191;;;
                                  -153900;1;0;false;false;;;;;;
                                  -153901;4;0;false;false;63;95;191;;;
                                  -153905;1;0;false;false;;;;;;
                                  -153906;3;0;false;false;63;95;191;;;
                                  -153909;1;0;false;false;;;;;;
                                  -153910;6;0;false;false;63;95;191;;;
                                  -153916;1;0;false;false;;;;;;
                                  -153917;4;0;false;false;63;95;191;;;
                                  -153921;1;0;false;false;;;;;;
                                  -153922;7;0;false;false;63;95;191;;;
                                  -153929;1;0;false;false;;;;;;
                                  -153930;3;0;false;false;63;95;191;;;
                                  -153933;1;0;false;false;;;;;;
                                  -153934;8;0;false;false;63;95;191;;;
                                  -153942;5;0;false;false;127;127;159;;;
                                  -153947;3;0;false;false;;;;;;
                                  -153950;1;0;false;false;63;95;191;;;
                                  -153951;1;0;false;false;;;;;;
                                  -153952;5;0;false;false;127;127;159;;;
                                  -153957;3;0;false;false;;;;;;
                                  -153960;2;0;false;false;63;95;191;;;
                                  -153962;2;0;false;false;;;;;;
                                  -153964;6;1;false;false;127;0;85;;;
                                  -153970;1;0;false;false;;;;;;
                                  -153971;3;1;false;false;127;0;85;;;
                                  -153974;1;0;false;false;;;;;;
                                  -153975;14;0;false;false;0;0;0;;;
                                  -153989;1;0;false;false;;;;;;
                                  -153990;1;0;false;false;0;0;0;;;
                                  -153991;3;0;false;false;;;;;;
                                  -153994;14;0;false;false;0;0;0;;;
                                  -154008;6;0;false;false;;;;;;
                                  -154014;6;1;false;false;127;0;85;;;
                                  -154020;1;0;false;false;;;;;;
                                  -154021;10;0;false;false;0;0;0;;;
                                  -154031;2;0;false;false;;;;;;
                                  -154033;1;0;false;false;0;0;0;;;
                                  -154034;2;0;false;false;;;;;;
                                  -154036;3;0;false;false;63;95;191;;;
                                  -154039;3;0;false;false;;;;;;
                                  -154042;1;0;false;false;63;95;191;;;
                                  -154043;1;0;false;false;;;;;;
                                  -154044;4;0;false;false;63;95;191;;;
                                  -154048;1;0;false;false;;;;;;
                                  -154049;3;0;false;false;63;95;191;;;
                                  -154052;1;0;false;false;;;;;;
                                  -154053;3;0;false;false;63;95;191;;;
                                  -154056;1;0;false;false;;;;;;
                                  -154057;6;0;false;false;63;95;191;;;
                                  -154063;2;0;false;false;;;;;;
                                  -154065;3;0;false;false;63;95;191;;;
                                  -154068;1;0;false;false;;;;;;
                                  -154069;3;0;false;false;63;95;191;;;
                                  -154072;1;0;false;false;;;;;;
                                  -154073;5;0;false;false;63;95;191;;;
                                  -154078;1;0;false;false;;;;;;
                                  -154079;2;0;false;false;63;95;191;;;
                                  -154081;1;0;false;false;;;;;;
                                  -154082;3;0;false;false;63;95;191;;;
                                  -154085;1;0;false;false;;;;;;
                                  -154086;5;0;false;false;63;95;191;;;
                                  -154091;1;0;false;false;;;;;;
                                  -154092;2;0;false;false;63;95;191;;;
                                  -154094;1;0;false;false;;;;;;
                                  -154095;3;0;false;false;63;95;191;;;
                                  -154098;1;0;false;false;;;;;;
                                  -154099;5;0;false;false;63;95;191;;;
                                  -154104;1;0;false;false;;;;;;
                                  -154105;7;0;false;false;63;95;191;;;
                                  -154112;1;0;false;false;;;;;;
                                  -154113;4;0;false;false;63;95;191;;;
                                  -154117;1;0;false;false;;;;;;
                                  -154118;4;0;false;false;63;95;191;;;
                                  -154122;3;0;false;false;;;;;;
                                  -154125;1;0;false;false;63;95;191;;;
                                  -154126;1;0;false;false;;;;;;
                                  -154127;2;0;false;false;63;95;191;;;
                                  -154129;1;0;false;false;;;;;;
                                  -154130;9;0;false;false;63;95;191;;;
                                  -154139;1;0;false;false;;;;;;
                                  -154140;2;0;false;false;63;95;191;;;
                                  -154142;1;0;false;false;;;;;;
                                  -154143;3;0;false;false;63;95;191;;;
                                  -154146;1;0;false;false;;;;;;
                                  -154147;3;0;false;false;63;95;191;;;
                                  -154150;1;0;false;false;;;;;;
                                  -154151;2;0;false;false;63;95;191;;;
                                  -154153;1;0;false;false;;;;;;
                                  -154154;3;0;false;false;63;95;191;;;
                                  -154157;1;0;false;false;;;;;;
                                  -154158;6;0;false;false;63;95;191;;;
                                  -154164;1;0;false;false;;;;;;
                                  -154165;2;0;false;false;63;95;191;;;
                                  -154167;1;0;false;false;;;;;;
                                  -154168;3;0;false;false;63;95;191;;;
                                  -154171;1;0;false;false;;;;;;
                                  -154172;7;0;false;false;63;95;191;;;
                                  -154179;1;0;false;false;;;;;;
                                  -154180;9;0;false;false;63;95;191;;;
                                  -154189;1;0;false;false;;;;;;
                                  -154190;7;0;false;false;63;95;191;;;
                                  -154197;1;0;false;false;;;;;;
                                  -154198;4;0;false;false;63;95;191;;;
                                  -154202;1;0;false;false;;;;;;
                                  -154203;2;0;false;false;63;95;191;;;
                                  -154205;4;0;false;false;;;;;;
                                  -154209;1;0;false;false;63;95;191;;;
                                  -154210;1;0;false;false;;;;;;
                                  -154211;2;0;false;false;63;95;191;;;
                                  -154213;1;0;false;false;;;;;;
                                  -154214;4;0;false;false;63;95;191;;;
                                  -154218;1;0;false;false;;;;;;
                                  -154219;2;0;false;false;63;95;191;;;
                                  -154221;1;0;false;false;;;;;;
                                  -154222;5;0;false;false;63;95;191;;;
                                  -154227;1;0;false;false;;;;;;
                                  -154228;8;0;false;false;63;95;191;;;
                                  -154236;4;0;false;false;;;;;;
                                  -154240;1;0;false;false;63;95;191;;;
                                  -154241;1;0;false;false;;;;;;
                                  -154242;3;0;false;false;63;95;191;;;
                                  -154245;1;0;false;false;;;;;;
                                  -154246;3;0;false;false;63;95;191;;;
                                  -154249;1;0;false;false;;;;;;
                                  -154250;5;0;false;false;63;95;191;;;
                                  -154255;1;0;false;false;;;;;;
                                  -154256;7;0;false;false;63;95;191;;;
                                  -154263;1;0;false;false;;;;;;
                                  -154264;4;0;false;false;63;95;191;;;
                                  -154268;1;0;false;false;;;;;;
                                  -154269;3;0;false;false;63;95;191;;;
                                  -154272;1;0;false;false;;;;;;
                                  -154273;6;0;false;false;63;95;191;;;
                                  -154279;1;0;false;false;;;;;;
                                  -154280;2;0;false;false;63;95;191;;;
                                  -154282;1;0;false;false;;;;;;
                                  -154283;9;0;false;false;63;95;191;;;
                                  -154292;1;0;false;false;;;;;;
                                  -154293;8;0;false;false;63;95;191;;;
                                  -154301;1;0;false;false;;;;;;
                                  -154302;2;0;false;false;63;95;191;;;
                                  -154304;1;0;false;false;;;;;;
                                  -154305;4;0;false;false;63;95;191;;;
                                  -154309;1;0;false;false;;;;;;
                                  -154310;6;0;false;false;63;95;191;;;
                                  -154316;3;0;false;false;;;;;;
                                  -154319;1;0;false;false;63;95;191;;;
                                  -154320;1;0;false;false;;;;;;
                                  -154321;3;0;false;false;127;127;159;;;
                                  -154324;3;0;false;false;;;;;;
                                  -154327;1;0;false;false;63;95;191;;;
                                  -154328;3;0;false;false;;;;;;
                                  -154331;1;0;false;false;63;95;191;;;
                                  -154332;1;0;false;false;;;;;;
                                  -154333;8;1;false;false;127;159;191;;;
                                  -154341;3;0;false;false;63;95;191;;;
                                  -154344;1;0;false;false;;;;;;
                                  -154345;5;0;false;false;63;95;191;;;
                                  -154350;1;0;false;false;;;;;;
                                  -154351;2;0;false;false;63;95;191;;;
                                  -154353;1;0;false;false;;;;;;
                                  -154354;3;0;false;false;63;95;191;;;
                                  -154357;1;0;false;false;;;;;;
                                  -154358;3;0;false;false;63;95;191;;;
                                  -154361;1;0;false;false;;;;;;
                                  -154362;4;0;false;false;63;95;191;;;
                                  -154366;3;0;false;false;;;;;;
                                  -154369;1;0;false;false;63;95;191;;;
                                  -154370;1;0;false;false;;;;;;
                                  -154371;11;1;false;false;127;159;191;;;
                                  -154382;12;0;false;false;63;95;191;;;
                                  -154394;1;0;false;false;;;;;;
                                  -154395;4;0;false;false;127;127;159;;;
                                  -154399;3;0;false;false;;;;;;
                                  -154402;1;0;false;false;63;95;191;;;
                                  -154403;4;0;false;false;;;;;;
                                  -154407;4;0;false;false;127;127;159;;;
                                  -154411;21;0;false;false;63;95;191;;;
                                  -154432;1;0;false;false;;;;;;
                                  -154433;1;0;false;false;127;127;159;;;
                                  -154434;1;0;false;false;;;;;;
                                  -154435;2;0;false;false;63;95;191;;;
                                  -154437;1;0;false;false;;;;;;
                                  -154438;3;0;false;false;63;95;191;;;
                                  -154441;1;0;false;false;;;;;;
                                  -154442;8;0;false;false;63;95;191;;;
                                  -154450;1;0;false;false;;;;;;
                                  -154451;3;0;false;false;63;95;191;;;
                                  -154454;1;0;false;false;;;;;;
                                  -154455;4;0;false;false;63;95;191;;;
                                  -154459;1;0;false;false;;;;;;
                                  -154460;8;0;false;false;63;95;191;;;
                                  -154468;5;0;false;false;127;127;159;;;
                                  -154473;3;0;false;false;;;;;;
                                  -154476;1;0;false;false;63;95;191;;;
                                  -154477;4;0;false;false;;;;;;
                                  -154481;4;0;false;false;127;127;159;;;
                                  -154485;27;0;false;false;63;95;191;;;
                                  -154512;1;0;false;false;;;;;;
                                  -154513;1;0;false;false;127;127;159;;;
                                  -154514;1;0;false;false;;;;;;
                                  -154515;2;0;false;false;63;95;191;;;
                                  -154517;1;0;false;false;;;;;;
                                  -154518;3;0;false;false;63;95;191;;;
                                  -154521;1;0;false;false;;;;;;
                                  -154522;6;0;false;false;63;95;191;;;
                                  -154528;1;0;false;false;;;;;;
                                  -154529;4;0;false;false;63;95;191;;;
                                  -154533;1;0;false;false;;;;;;
                                  -154534;3;0;false;false;63;95;191;;;
                                  -154537;1;0;false;false;;;;;;
                                  -154538;6;0;false;false;63;95;191;;;
                                  -154544;1;0;false;false;;;;;;
                                  -154545;4;0;false;false;63;95;191;;;
                                  -154549;1;0;false;false;;;;;;
                                  -154550;7;0;false;false;63;95;191;;;
                                  -154557;1;0;false;false;;;;;;
                                  -154558;3;0;false;false;63;95;191;;;
                                  -154561;1;0;false;false;;;;;;
                                  -154562;8;0;false;false;63;95;191;;;
                                  -154570;5;0;false;false;127;127;159;;;
                                  -154575;3;0;false;false;;;;;;
                                  -154578;1;0;false;false;63;95;191;;;
                                  -154579;1;0;false;false;;;;;;
                                  -154580;5;0;false;false;127;127;159;;;
                                  -154585;3;0;false;false;;;;;;
                                  -154588;2;0;false;false;63;95;191;;;
                                  -154590;2;0;false;false;;;;;;
                                  -154592;6;1;false;false;127;0;85;;;
                                  -154598;1;0;false;false;;;;;;
                                  -154599;3;1;false;false;127;0;85;;;
                                  -154602;1;0;false;false;;;;;;
                                  -154603;13;0;false;false;0;0;0;;;
                                  -154616;1;0;false;false;;;;;;
                                  -154617;1;0;false;false;0;0;0;;;
                                  -154618;3;0;false;false;;;;;;
                                  -154621;14;0;false;false;0;0;0;;;
                                  -154635;3;0;false;false;;;;;;
                                  -154638;3;1;false;false;127;0;85;;;
                                  -154641;1;0;false;false;;;;;;
                                  -154642;15;0;false;false;0;0;0;;;
                                  -154657;1;0;false;false;;;;;;
                                  -154658;1;0;false;false;0;0;0;;;
                                  -154659;1;0;false;false;;;;;;
                                  -154660;9;0;false;false;0;0;0;;;
                                  -154669;6;0;false;false;;;;;;
                                  -154675;2;1;false;false;127;0;85;;;
                                  -154677;1;0;false;false;;;;;;
                                  -154678;10;0;false;false;0;0;0;;;
                                  -154688;1;0;false;false;;;;;;
                                  -154689;1;0;false;false;0;0;0;;;
                                  -154690;4;0;false;false;;;;;;
                                  -154694;3;1;false;false;127;0;85;;;
                                  -154697;1;0;false;false;;;;;;
                                  -154698;16;0;false;false;0;0;0;;;
                                  -154714;1;0;false;false;;;;;;
                                  -154715;1;0;false;false;0;0;0;;;
                                  -154716;1;0;false;false;;;;;;
                                  -154717;34;0;false;false;0;0;0;;;
                                  -154751;4;0;false;false;;;;;;
                                  -154755;15;0;false;false;0;0;0;;;
                                  -154770;1;0;false;false;;;;;;
                                  -154771;1;0;false;false;0;0;0;;;
                                  -154772;1;0;false;false;;;;;;
                                  -154773;49;0;false;false;0;0;0;;;
                                  -154822;3;0;false;false;;;;;;
                                  -154825;1;0;false;false;0;0;0;;;
                                  -154826;3;0;false;false;;;;;;
                                  -154829;6;1;false;false;127;0;85;;;
                                  -154835;1;0;false;false;;;;;;
                                  -154836;16;0;false;false;0;0;0;;;
                                  -154852;2;0;false;false;;;;;;
                                  -154854;1;0;false;false;0;0;0;;;
                                  -154855;2;0;false;false;;;;;;
                                  -154857;3;0;false;false;63;95;191;;;
                                  -154860;3;0;false;false;;;;;;
                                  -154863;1;0;false;false;63;95;191;;;
                                  -154864;1;0;false;false;;;;;;
                                  -154865;4;0;false;false;63;95;191;;;
                                  -154869;1;0;false;false;;;;;;
                                  -154870;3;0;false;false;63;95;191;;;
                                  -154873;1;0;false;false;;;;;;
                                  -154874;3;0;false;false;63;95;191;;;
                                  -154877;1;0;false;false;;;;;;
                                  -154878;6;0;false;false;63;95;191;;;
                                  -154884;2;0;false;false;;;;;;
                                  -154886;3;0;false;false;63;95;191;;;
                                  -154889;1;0;false;false;;;;;;
                                  -154890;3;0;false;false;63;95;191;;;
                                  -154893;1;0;false;false;;;;;;
                                  -154894;5;0;false;false;63;95;191;;;
                                  -154899;1;0;false;false;;;;;;
                                  -154900;2;0;false;false;63;95;191;;;
                                  -154902;1;0;false;false;;;;;;
                                  -154903;3;0;false;false;63;95;191;;;
                                  -154906;1;0;false;false;;;;;;
                                  -154907;5;0;false;false;63;95;191;;;
                                  -154912;1;0;false;false;;;;;;
                                  -154913;8;0;false;false;63;95;191;;;
                                  -154921;1;0;false;false;;;;;;
                                  -154922;2;0;false;false;63;95;191;;;
                                  -154924;1;0;false;false;;;;;;
                                  -154925;3;0;false;false;63;95;191;;;
                                  -154928;1;0;false;false;;;;;;
                                  -154929;4;0;false;false;63;95;191;;;
                                  -154933;1;0;false;false;;;;;;
                                  -154934;4;0;false;false;63;95;191;;;
                                  -154938;1;0;false;false;;;;;;
                                  -154939;2;0;false;false;63;95;191;;;
                                  -154941;4;0;false;false;;;;;;
                                  -154945;1;0;false;false;63;95;191;;;
                                  -154946;1;0;false;false;;;;;;
                                  -154947;9;0;false;false;63;95;191;;;
                                  -154956;1;0;false;false;;;;;;
                                  -154957;2;0;false;false;63;95;191;;;
                                  -154959;1;0;false;false;;;;;;
                                  -154960;3;0;false;false;63;95;191;;;
                                  -154963;1;0;false;false;;;;;;
                                  -154964;3;0;false;false;63;95;191;;;
                                  -154967;1;0;false;false;;;;;;
                                  -154968;2;0;false;false;63;95;191;;;
                                  -154970;1;0;false;false;;;;;;
                                  -154971;3;0;false;false;63;95;191;;;
                                  -154974;1;0;false;false;;;;;;
                                  -154975;10;0;false;false;63;95;191;;;
                                  -154985;1;0;false;false;;;;;;
                                  -154986;4;0;false;false;63;95;191;;;
                                  -154990;1;0;false;false;;;;;;
                                  -154991;6;0;false;false;63;95;191;;;
                                  -154997;1;0;false;false;;;;;;
                                  -154998;3;0;false;false;63;95;191;;;
                                  -155001;1;0;false;false;;;;;;
                                  -155002;2;0;false;false;63;95;191;;;
                                  -155004;1;0;false;false;;;;;;
                                  -155005;8;0;false;false;63;95;191;;;
                                  -155013;1;0;false;false;;;;;;
                                  -155014;2;0;false;false;63;95;191;;;
                                  -155016;1;0;false;false;;;;;;
                                  -155017;6;0;false;false;63;95;191;;;
                                  -155023;4;0;false;false;;;;;;
                                  -155027;1;0;false;false;63;95;191;;;
                                  -155028;1;0;false;false;;;;;;
                                  -155029;2;0;false;false;63;95;191;;;
                                  -155031;1;0;false;false;;;;;;
                                  -155032;8;0;false;false;63;95;191;;;
                                  -155040;1;0;false;false;;;;;;
                                  -155041;3;0;false;false;63;95;191;;;
                                  -155044;1;0;false;false;;;;;;
                                  -155045;6;0;false;false;63;95;191;;;
                                  -155051;1;0;false;false;;;;;;
                                  -155052;5;0;false;false;63;95;191;;;
                                  -155057;1;0;false;false;;;;;;
                                  -155058;2;0;false;false;63;95;191;;;
                                  -155060;1;0;false;false;;;;;;
                                  -155061;4;0;false;false;63;95;191;;;
                                  -155065;1;0;false;false;;;;;;
                                  -155066;1;0;false;false;63;95;191;;;
                                  -155067;1;0;false;false;;;;;;
                                  -155068;7;0;false;false;63;95;191;;;
                                  -155075;1;0;false;false;;;;;;
                                  -155076;4;0;false;false;63;95;191;;;
                                  -155080;1;0;false;false;;;;;;
                                  -155081;3;0;false;false;63;95;191;;;
                                  -155084;1;0;false;false;;;;;;
                                  -155085;2;0;false;false;63;95;191;;;
                                  -155087;1;0;false;false;;;;;;
                                  -155088;9;0;false;false;63;95;191;;;
                                  -155097;1;0;false;false;;;;;;
                                  -155098;2;0;false;false;63;95;191;;;
                                  -155100;1;0;false;false;;;;;;
                                  -155101;3;0;false;false;63;95;191;;;
                                  -155104;1;0;false;false;;;;;;
                                  -155105;3;0;false;false;63;95;191;;;
                                  -155108;4;0;false;false;;;;;;
                                  -155112;1;0;false;false;63;95;191;;;
                                  -155113;1;0;false;false;;;;;;
                                  -155114;3;0;false;false;63;95;191;;;
                                  -155117;1;0;false;false;;;;;;
                                  -155118;7;0;false;false;63;95;191;;;
                                  -155125;2;0;false;false;;;;;;
                                  -155127;3;0;false;false;63;95;191;;;
                                  -155130;1;0;false;false;;;;;;
                                  -155131;3;0;false;false;63;95;191;;;
                                  -155134;1;0;false;false;;;;;;
                                  -155135;5;0;false;false;63;95;191;;;
                                  -155140;1;0;false;false;;;;;;
                                  -155141;7;0;false;false;63;95;191;;;
                                  -155148;1;0;false;false;;;;;;
                                  -155149;4;0;false;false;63;95;191;;;
                                  -155153;1;0;false;false;;;;;;
                                  -155154;3;0;false;false;63;95;191;;;
                                  -155157;1;0;false;false;;;;;;
                                  -155158;6;0;false;false;63;95;191;;;
                                  -155164;1;0;false;false;;;;;;
                                  -155165;2;0;false;false;63;95;191;;;
                                  -155167;1;0;false;false;;;;;;
                                  -155168;9;0;false;false;63;95;191;;;
                                  -155177;2;0;false;false;;;;;;
                                  -155179;3;0;false;false;63;95;191;;;
                                  -155182;1;0;false;false;;;;;;
                                  -155183;3;0;false;false;63;95;191;;;
                                  -155186;1;0;false;false;;;;;;
                                  -155187;5;0;false;false;63;95;191;;;
                                  -155192;4;0;false;false;;;;;;
                                  -155196;1;0;false;false;63;95;191;;;
                                  -155197;1;0;false;false;;;;;;
                                  -155198;4;0;false;false;63;95;191;;;
                                  -155202;1;0;false;false;;;;;;
                                  -155203;3;0;false;false;63;95;191;;;
                                  -155206;1;0;false;false;;;;;;
                                  -155207;7;0;false;false;63;95;191;;;
                                  -155214;1;0;false;false;;;;;;
                                  -155215;3;0;false;false;63;95;191;;;
                                  -155218;1;0;false;false;;;;;;
                                  -155219;6;0;false;false;63;95;191;;;
                                  -155225;1;0;false;false;;;;;;
                                  -155226;9;0;false;false;63;95;191;;;
                                  -155235;3;0;false;false;;;;;;
                                  -155238;1;0;false;false;63;95;191;;;
                                  -155239;1;0;false;false;;;;;;
                                  -155240;3;0;false;false;127;127;159;;;
                                  -155243;3;0;false;false;;;;;;
                                  -155246;1;0;false;false;63;95;191;;;
                                  -155247;3;0;false;false;;;;;;
                                  -155250;1;0;false;false;63;95;191;;;
                                  -155251;1;0;false;false;;;;;;
                                  -155252;8;1;false;false;127;159;191;;;
                                  -155260;5;0;false;false;63;95;191;;;
                                  -155265;1;0;false;false;;;;;;
                                  -155266;8;0;false;false;63;95;191;;;
                                  -155274;1;0;false;false;;;;;;
                                  -155275;2;0;false;false;63;95;191;;;
                                  -155277;1;0;false;false;;;;;;
                                  -155278;3;0;false;false;63;95;191;;;
                                  -155281;1;0;false;false;;;;;;
                                  -155282;3;0;false;false;63;95;191;;;
                                  -155285;1;0;false;false;;;;;;
                                  -155286;4;0;false;false;63;95;191;;;
                                  -155290;3;0;false;false;;;;;;
                                  -155293;1;0;false;false;63;95;191;;;
                                  -155294;1;0;false;false;;;;;;
                                  -155295;11;1;false;false;127;159;191;;;
                                  -155306;12;0;false;false;63;95;191;;;
                                  -155318;1;0;false;false;;;;;;
                                  -155319;4;0;false;false;127;127;159;;;
                                  -155323;3;0;false;false;;;;;;
                                  -155326;1;0;false;false;63;95;191;;;
                                  -155327;4;0;false;false;;;;;;
                                  -155331;4;0;false;false;127;127;159;;;
                                  -155335;21;0;false;false;63;95;191;;;
                                  -155356;1;0;false;false;;;;;;
                                  -155357;1;0;false;false;127;127;159;;;
                                  -155358;1;0;false;false;;;;;;
                                  -155359;2;0;false;false;63;95;191;;;
                                  -155361;1;0;false;false;;;;;;
                                  -155362;3;0;false;false;63;95;191;;;
                                  -155365;1;0;false;false;;;;;;
                                  -155366;8;0;false;false;63;95;191;;;
                                  -155374;1;0;false;false;;;;;;
                                  -155375;3;0;false;false;63;95;191;;;
                                  -155378;1;0;false;false;;;;;;
                                  -155379;4;0;false;false;63;95;191;;;
                                  -155383;1;0;false;false;;;;;;
                                  -155384;8;0;false;false;63;95;191;;;
                                  -155392;5;0;false;false;127;127;159;;;
                                  -155397;3;0;false;false;;;;;;
                                  -155400;1;0;false;false;63;95;191;;;
                                  -155401;4;0;false;false;;;;;;
                                  -155405;4;0;false;false;127;127;159;;;
                                  -155409;27;0;false;false;63;95;191;;;
                                  -155436;1;0;false;false;;;;;;
                                  -155437;1;0;false;false;127;127;159;;;
                                  -155438;1;0;false;false;;;;;;
                                  -155439;2;0;false;false;63;95;191;;;
                                  -155441;1;0;false;false;;;;;;
                                  -155442;3;0;false;false;63;95;191;;;
                                  -155445;1;0;false;false;;;;;;
                                  -155446;6;0;false;false;63;95;191;;;
                                  -155452;1;0;false;false;;;;;;
                                  -155453;4;0;false;false;63;95;191;;;
                                  -155457;1;0;false;false;;;;;;
                                  -155458;3;0;false;false;63;95;191;;;
                                  -155461;1;0;false;false;;;;;;
                                  -155462;6;0;false;false;63;95;191;;;
                                  -155468;1;0;false;false;;;;;;
                                  -155469;4;0;false;false;63;95;191;;;
                                  -155473;1;0;false;false;;;;;;
                                  -155474;7;0;false;false;63;95;191;;;
                                  -155481;1;0;false;false;;;;;;
                                  -155482;3;0;false;false;63;95;191;;;
                                  -155485;1;0;false;false;;;;;;
                                  -155486;8;0;false;false;63;95;191;;;
                                  -155494;5;0;false;false;127;127;159;;;
                                  -155499;3;0;false;false;;;;;;
                                  -155502;1;0;false;false;63;95;191;;;
                                  -155503;1;0;false;false;;;;;;
                                  -155504;5;0;false;false;127;127;159;;;
                                  -155509;3;0;false;false;;;;;;
                                  -155512;2;0;false;false;63;95;191;;;
                                  -155514;2;0;false;false;;;;;;
                                  -155516;6;1;false;false;127;0;85;;;
                                  -155522;1;0;false;false;;;;;;
                                  -155523;3;1;false;false;127;0;85;;;
                                  -155526;1;0;false;false;;;;;;
                                  -155527;13;0;false;false;0;0;0;;;
                                  -155540;1;0;false;false;;;;;;
                                  -155541;1;0;false;false;0;0;0;;;
                                  -155542;3;0;false;false;;;;;;
                                  -155545;14;0;false;false;0;0;0;;;
                                  -155559;3;0;false;false;;;;;;
                                  -155562;6;1;false;false;127;0;85;;;
                                  -155568;1;0;false;false;;;;;;
                                  -155569;21;0;false;false;0;0;0;;;
                                  -155590;2;0;false;false;;;;;;
                                  -155592;1;0;false;false;0;0;0;;;
                                  -155593;2;0;false;false;;;;;;
                                  -155595;3;0;false;false;63;95;191;;;
                                  -155598;4;0;false;false;;;;;;
                                  -155602;1;0;false;false;63;95;191;;;
                                  -155603;1;0;false;false;;;;;;
                                  -155604;7;0;false;false;63;95;191;;;
                                  -155611;1;0;false;false;;;;;;
                                  -155612;3;0;false;false;63;95;191;;;
                                  -155615;1;0;false;false;;;;;;
                                  -155616;8;0;false;false;63;95;191;;;
                                  -155624;1;0;false;false;;;;;;
                                  -155625;6;0;false;false;63;95;191;;;
                                  -155631;1;0;false;false;;;;;;
                                  -155632;10;0;false;false;63;95;191;;;
                                  -155642;3;0;false;false;;;;;;
                                  -155645;1;0;false;false;63;95;191;;;
                                  -155646;1;0;false;false;;;;;;
                                  -155647;3;0;false;false;127;127;159;;;
                                  -155650;3;0;false;false;;;;;;
                                  -155653;1;0;false;false;63;95;191;;;
                                  -155654;3;0;false;false;;;;;;
                                  -155657;1;0;false;false;63;95;191;;;
                                  -155658;1;0;false;false;;;;;;
                                  -155659;8;1;false;false;127;159;191;;;
                                  -155667;8;0;false;false;63;95;191;;;
                                  -155675;1;0;false;false;;;;;;
                                  -155676;6;0;false;false;63;95;191;;;
                                  -155682;1;0;false;false;;;;;;
                                  -155683;10;0;false;false;63;95;191;;;
                                  -155693;3;0;false;false;;;;;;
                                  -155696;2;0;false;false;63;95;191;;;
                                  -155698;2;0;false;false;;;;;;
                                  -155700;3;1;false;false;127;0;85;;;
                                  -155703;1;0;false;false;;;;;;
                                  -155704;22;0;false;false;0;0;0;;;
                                  -155726;1;0;false;false;;;;;;
                                  -155727;1;0;false;false;0;0;0;;;
                                  -155728;3;0;false;false;;;;;;
                                  -155731;6;1;false;false;127;0;85;;;
                                  -155737;1;0;false;false;;;;;;
                                  -155738;11;0;false;false;0;0;0;;;
                                  -155749;2;0;false;false;;;;;;
                                  -155751;1;0;false;false;0;0;0;;;
                                  -155752;2;0;false;false;;;;;;
                                  -155754;3;1;false;false;127;0;85;;;
                                  -155757;1;0;false;false;;;;;;
                                  -155758;19;0;false;false;0;0;0;;;
                                  -155777;1;0;false;false;;;;;;
                                  -155778;1;0;false;false;0;0;0;;;
                                  -155779;3;0;false;false;;;;;;
                                  -155782;2;1;false;false;127;0;85;;;
                                  -155784;1;0;false;false;;;;;;
                                  -155785;16;0;false;false;0;0;0;;;
                                  -155801;1;0;false;false;;;;;;
                                  -155802;6;1;false;false;127;0;85;;;
                                  -155808;1;0;false;false;;;;;;
                                  -155809;12;0;false;false;0;0;0;;;
                                  -155821;3;0;false;false;;;;;;
                                  -155824;2;1;false;false;127;0;85;;;
                                  -155826;1;0;false;false;;;;;;
                                  -155827;22;0;false;false;0;0;0;;;
                                  -155849;1;0;false;false;;;;;;
                                  -155850;2;0;false;false;0;0;0;;;
                                  -155852;1;0;false;false;;;;;;
                                  -155853;14;0;false;false;0;0;0;;;
                                  -155867;1;0;false;false;;;;;;
                                  -155868;2;0;false;false;0;0;0;;;
                                  -155870;1;0;false;false;;;;;;
                                  -155871;9;0;false;false;0;0;0;;;
                                  -155880;1;0;false;false;;;;;;
                                  -155881;6;1;false;false;127;0;85;;;
                                  -155887;1;0;false;false;;;;;;
                                  -155888;15;0;false;false;0;0;0;;;
                                  -155903;3;0;false;false;;;;;;
                                  -155906;20;0;false;false;0;0;0;;;
                                  -155926;1;0;false;false;;;;;;
                                  -155927;1;0;false;false;0;0;0;;;
                                  -155928;1;0;false;false;;;;;;
                                  -155929;5;1;false;false;127;0;85;;;
                                  -155934;1;0;false;false;0;0;0;;;
                                  -155935;3;0;false;false;;;;;;
                                  -155938;3;1;false;false;127;0;85;;;
                                  -155941;1;0;false;false;;;;;;
                                  -155942;9;0;false;false;0;0;0;;;
                                  -155951;1;0;false;false;;;;;;
                                  -155952;1;0;false;false;0;0;0;;;
                                  -155953;1;0;false;false;;;;;;
                                  -155954;15;0;false;false;0;0;0;;;
                                  -155969;3;0;false;false;;;;;;
                                  -155972;3;1;false;false;127;0;85;;;
                                  -155975;1;0;false;false;;;;;;
                                  -155976;10;0;false;false;0;0;0;;;
                                  -155986;1;0;false;false;;;;;;
                                  -155987;1;0;false;false;0;0;0;;;
                                  -155988;1;0;false;false;;;;;;
                                  -155989;35;0;false;false;0;0;0;;;
                                  -156024;3;0;false;false;;;;;;
                                  -156027;6;0;false;false;0;0;0;;;
                                  -156033;1;0;false;false;;;;;;
                                  -156034;4;0;false;false;0;0;0;;;
                                  -156038;1;0;false;false;;;;;;
                                  -156039;1;0;false;false;0;0;0;;;
                                  -156040;1;0;false;false;;;;;;
                                  -156041;27;0;false;false;0;0;0;;;
                                  -156068;3;0;false;false;;;;;;
                                  -156071;3;1;false;false;127;0;85;;;
                                  -156074;1;0;false;false;;;;;;
                                  -156075;6;0;false;false;0;0;0;;;
                                  -156081;1;0;false;false;;;;;;
                                  -156082;1;0;false;false;0;0;0;;;
                                  -156083;1;0;false;false;;;;;;
                                  -156084;11;0;false;false;0;0;0;;;
                                  -156095;1;0;false;false;;;;;;
                                  -156096;1;0;false;false;0;0;0;;;
                                  -156097;1;0;false;false;;;;;;
                                  -156098;11;0;false;false;0;0;0;;;
                                  -156109;3;0;false;false;;;;;;
                                  -156112;3;1;false;false;127;0;85;;;
                                  -156115;1;0;false;false;;;;;;
                                  -156116;10;0;false;false;0;0;0;;;
                                  -156126;1;0;false;false;;;;;;
                                  -156127;1;0;false;false;0;0;0;;;
                                  -156128;1;0;false;false;;;;;;
                                  -156129;14;0;false;false;0;0;0;;;
                                  -156143;3;0;false;false;;;;;;
                                  -156146;2;1;false;false;127;0;85;;;
                                  -156148;1;0;false;false;;;;;;
                                  -156149;11;0;false;false;0;0;0;;;
                                  -156160;1;0;false;false;;;;;;
                                  -156161;2;0;false;false;0;0;0;;;
                                  -156163;1;0;false;false;;;;;;
                                  -156164;2;0;false;false;0;0;0;;;
                                  -156166;1;0;false;false;;;;;;
                                  -156167;6;1;false;false;127;0;85;;;
                                  -156173;1;0;false;false;;;;;;
                                  -156174;12;0;false;false;0;0;0;;;
                                  -156186;1;0;false;false;;;;;;
                                  -156187;1;0;false;false;0;0;0;;;
                                  -156188;1;0;false;false;;;;;;
                                  -156189;9;0;false;false;0;0;0;;;
                                  -156198;1;0;false;false;;;;;;
                                  -156199;1;0;false;false;0;0;0;;;
                                  -156200;1;0;false;false;;;;;;
                                  -156201;9;0;false;false;0;0;0;;;
                                  -156210;3;0;false;false;;;;;;
                                  -156213;2;1;false;false;127;0;85;;;
                                  -156215;1;0;false;false;;;;;;
                                  -156216;10;0;false;false;0;0;0;;;
                                  -156226;1;0;false;false;;;;;;
                                  -156227;2;0;false;false;0;0;0;;;
                                  -156229;1;0;false;false;;;;;;
                                  -156230;6;0;false;false;0;0;0;;;
                                  -156236;1;0;false;false;;;;;;
                                  -156237;1;0;false;false;0;0;0;;;
                                  -156238;1;0;false;false;;;;;;
                                  -156239;2;0;false;false;0;0;0;;;
                                  -156241;1;0;false;false;;;;;;
                                  -156242;9;0;false;false;0;0;0;;;
                                  -156251;3;0;false;false;;;;;;
                                  -156254;2;1;false;false;127;0;85;;;
                                  -156256;1;0;false;false;;;;;;
                                  -156257;7;0;false;false;0;0;0;;;
                                  -156264;1;0;false;false;;;;;;
                                  -156265;2;0;false;false;0;0;0;;;
                                  -156267;1;0;false;false;;;;;;
                                  -156268;10;0;false;false;0;0;0;;;
                                  -156278;1;0;false;false;;;;;;
                                  -156279;2;0;false;false;0;0;0;;;
                                  -156281;1;0;false;false;;;;;;
                                  -156282;6;0;false;false;0;0;0;;;
                                  -156288;1;0;false;false;;;;;;
                                  -156289;1;0;false;false;0;0;0;;;
                                  -156290;1;0;false;false;;;;;;
                                  -156291;2;0;false;false;0;0;0;;;
                                  -156293;1;0;false;false;;;;;;
                                  -156294;9;0;false;false;0;0;0;;;
                                  -156303;3;0;false;false;;;;;;
                                  -156306;5;1;false;false;127;0;85;;;
                                  -156311;1;0;false;false;;;;;;
                                  -156312;7;0;false;false;0;0;0;;;
                                  -156319;1;0;false;false;;;;;;
                                  -156320;1;0;false;false;0;0;0;;;
                                  -156321;1;0;false;false;;;;;;
                                  -156322;1;0;false;false;0;0;0;;;
                                  -156323;1;0;false;false;;;;;;
                                  -156324;2;0;false;false;0;0;0;;;
                                  -156326;1;0;false;false;;;;;;
                                  -156327;39;0;false;false;0;0;0;;;
                                  -156366;1;0;false;false;;;;;;
                                  -156367;9;0;false;false;0;0;0;;;
                                  -156376;3;0;false;false;;;;;;
                                  -156379;2;1;false;false;127;0;85;;;
                                  -156381;1;0;false;false;;;;;;
                                  -156382;7;0;false;false;0;0;0;;;
                                  -156389;1;0;false;false;;;;;;
                                  -156390;2;0;false;false;0;0;0;;;
                                  -156392;1;0;false;false;;;;;;
                                  -156393;1;0;false;false;0;0;0;;;
                                  -156394;1;0;false;false;;;;;;
                                  -156395;2;0;false;false;0;0;0;;;
                                  -156397;1;0;false;false;;;;;;
                                  -156398;39;0;false;false;0;0;0;;;
                                  -156437;1;0;false;false;;;;;;
                                  -156438;1;0;false;false;0;0;0;;;
                                  -156439;4;0;false;false;;;;;;
                                  -156443;6;1;false;false;127;0;85;;;
                                  -156449;1;0;false;false;;;;;;
                                  -156450;12;0;false;false;0;0;0;;;
                                  -156462;1;0;false;false;;;;;;
                                  -156463;1;0;false;false;0;0;0;;;
                                  -156464;1;0;false;false;;;;;;
                                  -156465;9;0;false;false;0;0;0;;;
                                  -156474;1;0;false;false;;;;;;
                                  -156475;1;0;false;false;0;0;0;;;
                                  -156476;1;0;false;false;;;;;;
                                  -156477;9;0;false;false;0;0;0;;;
                                  -156486;3;0;false;false;;;;;;
                                  -156489;1;0;false;false;0;0;0;;;
                                  -156490;3;0;false;false;;;;;;
                                  -156493;10;0;false;false;0;0;0;;;
                                  -156503;1;0;false;false;;;;;;
                                  -156504;6;0;false;false;0;0;0;;;
                                  -156510;1;0;false;false;;;;;;
                                  -156511;1;0;false;false;0;0;0;;;
                                  -156512;1;0;false;false;;;;;;
                                  -156513;28;0;false;false;0;0;0;;;
                                  -156541;1;0;false;false;;;;;;
                                  -156542;12;0;false;false;0;0;0;;;
                                  -156554;3;0;false;false;;;;;;
                                  -156557;3;1;false;false;127;0;85;;;
                                  -156560;1;0;false;false;;;;;;
                                  -156561;5;0;false;false;0;0;0;;;
                                  -156566;1;0;false;false;;;;;;
                                  -156567;1;0;false;false;0;0;0;;;
                                  -156568;1;0;false;false;;;;;;
                                  -156569;24;0;false;false;0;0;0;;;
                                  -156593;3;0;false;false;;;;;;
                                  -156596;35;0;false;false;0;0;0;;;
                                  -156631;3;0;false;false;;;;;;
                                  -156634;6;1;false;false;127;0;85;;;
                                  -156640;1;0;false;false;;;;;;
                                  -156641;7;0;false;false;0;0;0;;;
                                  -156648;1;0;false;false;;;;;;
                                  -156649;1;0;false;false;0;0;0;;;
                                  -156650;1;0;false;false;;;;;;
                                  -156651;2;0;false;false;0;0;0;;;
                                  -156653;1;0;false;false;;;;;;
                                  -156654;2;0;false;false;0;0;0;;;
                                  -156656;1;0;false;false;;;;;;
                                  -156657;2;0;false;false;0;0;0;;;
                                  -156659;1;0;false;false;;;;;;
                                  -156660;1;0;false;false;0;0;0;;;
                                  -156661;1;0;false;false;;;;;;
                                  -156662;9;0;false;false;0;0;0;;;
                                  -156671;1;0;false;false;;;;;;
                                  -156672;1;0;false;false;0;0;0;;;
                                  -156673;1;0;false;false;;;;;;
                                  -156674;9;0;false;false;0;0;0;;;
                                  -156683;2;0;false;false;;;;;;
                                  -156685;1;0;false;false;0;0;0;;;
                                  -156686;2;0;false;false;;;;;;
                                  -156688;3;0;false;false;63;95;191;;;
                                  -156691;3;0;false;false;;;;;;
                                  -156694;1;0;false;false;63;95;191;;;
                                  -156695;1;0;false;false;;;;;;
                                  -156696;7;0;false;false;63;95;191;;;
                                  -156703;1;0;false;false;;;;;;
                                  -156704;3;0;false;false;63;95;191;;;
                                  -156707;1;0;false;false;;;;;;
                                  -156708;5;0;false;false;63;95;191;;;
                                  -156713;1;0;false;false;;;;;;
                                  -156714;2;0;false;false;63;95;191;;;
                                  -156716;1;0;false;false;;;;;;
                                  -156717;3;0;false;false;63;95;191;;;
                                  -156720;1;0;false;false;;;;;;
                                  -156721;4;0;false;false;63;95;191;;;
                                  -156725;1;0;false;false;;;;;;
                                  -156726;3;0;false;false;63;95;191;;;
                                  -156729;1;0;false;false;;;;;;
                                  -156730;5;0;false;false;63;95;191;;;
                                  -156735;1;0;false;false;;;;;;
                                  -156736;2;0;false;false;63;95;191;;;
                                  -156738;1;0;false;false;;;;;;
                                  -156739;3;0;false;false;63;95;191;;;
                                  -156742;3;0;false;false;;;;;;
                                  -156745;1;0;false;false;63;95;191;;;
                                  -156746;1;0;false;false;;;;;;
                                  -156747;4;0;false;false;63;95;191;;;
                                  -156751;1;0;false;false;;;;;;
                                  -156752;2;0;false;false;63;95;191;;;
                                  -156754;1;0;false;false;;;;;;
                                  -156755;4;0;false;false;63;95;191;;;
                                  -156759;1;0;false;false;;;;;;
                                  -156760;4;0;false;false;63;95;191;;;
                                  -156764;1;0;false;false;;;;;;
                                  -156765;4;0;false;false;63;95;191;;;
                                  -156769;1;0;false;false;;;;;;
                                  -156770;3;0;false;false;63;95;191;;;
                                  -156773;1;0;false;false;;;;;;
                                  -156774;2;0;false;false;63;95;191;;;
                                  -156776;1;0;false;false;;;;;;
                                  -156777;3;0;false;false;63;95;191;;;
                                  -156780;1;0;false;false;;;;;;
                                  -156781;3;0;false;false;63;95;191;;;
                                  -156784;1;0;false;false;;;;;;
                                  -156785;2;0;false;false;63;95;191;;;
                                  -156787;1;0;false;false;;;;;;
                                  -156788;3;0;false;false;63;95;191;;;
                                  -156791;1;0;false;false;;;;;;
                                  -156792;7;0;false;false;63;95;191;;;
                                  -156799;1;0;false;false;;;;;;
                                  -156800;5;0;false;false;63;95;191;;;
                                  -156805;4;0;false;false;;;;;;
                                  -156809;1;0;false;false;63;95;191;;;
                                  -156810;1;0;false;false;;;;;;
                                  -156811;9;0;false;false;63;95;191;;;
                                  -156820;1;0;false;false;;;;;;
                                  -156821;2;0;false;false;63;95;191;;;
                                  -156823;1;0;false;false;;;;;;
                                  -156824;3;0;false;false;63;95;191;;;
                                  -156827;1;0;false;false;;;;;;
                                  -156828;10;0;false;false;63;95;191;;;
                                  -156838;1;0;false;false;;;;;;
                                  -156839;7;0;false;false;63;95;191;;;
                                  -156846;1;0;false;false;;;;;;
                                  -156847;4;0;false;false;63;95;191;;;
                                  -156851;1;0;false;false;;;;;;
                                  -156852;3;0;false;false;63;95;191;;;
                                  -156855;1;0;false;false;;;;;;
                                  -156856;5;0;false;false;63;95;191;;;
                                  -156861;1;0;false;false;;;;;;
                                  -156862;6;0;false;false;63;95;191;;;
                                  -156868;3;0;false;false;;;;;;
                                  -156871;1;0;false;false;63;95;191;;;
                                  -156872;1;0;false;false;;;;;;
                                  -156873;2;0;false;false;63;95;191;;;
                                  -156875;1;0;false;false;;;;;;
                                  -156876;3;0;false;false;63;95;191;;;
                                  -156879;1;0;false;false;;;;;;
                                  -156880;10;0;false;false;63;95;191;;;
                                  -156890;1;0;false;false;;;;;;
                                  -156891;2;0;false;false;63;95;191;;;
                                  -156893;1;0;false;false;;;;;;
                                  -156894;9;0;false;false;63;95;191;;;
                                  -156903;1;0;false;false;;;;;;
                                  -156904;3;0;false;false;63;95;191;;;
                                  -156907;1;0;false;false;;;;;;
                                  -156908;5;0;false;false;63;95;191;;;
                                  -156913;1;0;false;false;;;;;;
                                  -156914;5;0;false;false;63;95;191;;;
                                  -156919;3;0;false;false;;;;;;
                                  -156922;1;0;false;false;63;95;191;;;
                                  -156923;4;0;false;false;;;;;;
                                  -156927;1;0;false;false;63;95;191;;;
                                  -156928;1;0;false;false;;;;;;
                                  -156929;8;1;false;false;127;159;191;;;
                                  -156937;3;0;false;false;63;95;191;;;
                                  -156940;1;0;false;false;;;;;;
                                  -156941;5;0;false;false;63;95;191;;;
                                  -156946;1;0;false;false;;;;;;
                                  -156947;2;0;false;false;63;95;191;;;
                                  -156949;1;0;false;false;;;;;;
                                  -156950;3;0;false;false;63;95;191;;;
                                  -156953;1;0;false;false;;;;;;
                                  -156954;4;0;false;false;63;95;191;;;
                                  -156958;1;0;false;false;;;;;;
                                  -156959;3;0;false;false;63;95;191;;;
                                  -156962;1;0;false;false;;;;;;
                                  -156963;5;0;false;false;63;95;191;;;
                                  -156968;1;0;false;false;;;;;;
                                  -156969;2;0;false;false;63;95;191;;;
                                  -156971;1;0;false;false;;;;;;
                                  -156972;3;0;false;false;63;95;191;;;
                                  -156975;3;0;false;false;;;;;;
                                  -156978;2;0;false;false;63;95;191;;;
                                  -156980;2;0;false;false;;;;;;
                                  -156982;3;1;false;false;127;0;85;;;
                                  -156985;1;0;false;false;;;;;;
                                  -156986;14;0;false;false;0;0;0;;;
                                  -157000;1;0;false;false;;;;;;
                                  -157001;1;0;false;false;0;0;0;;;
                                  -157002;3;0;false;false;;;;;;
                                  -157005;3;1;false;false;127;0;85;;;
                                  -157008;1;0;false;false;;;;;;
                                  -157009;9;0;false;false;0;0;0;;;
                                  -157018;1;0;false;false;;;;;;
                                  -157019;1;0;false;false;0;0;0;;;
                                  -157020;1;0;false;false;;;;;;
                                  -157021;37;0;false;false;0;0;0;;;
                                  -157058;3;0;false;false;;;;;;
                                  -157061;3;1;false;false;127;0;85;;;
                                  -157064;1;0;false;false;;;;;;
                                  -157065;11;0;false;false;0;0;0;;;
                                  -157076;1;0;false;false;;;;;;
                                  -157077;1;0;false;false;0;0;0;;;
                                  -157078;1;0;false;false;;;;;;
                                  -157079;11;0;false;false;0;0;0;;;
                                  -157090;3;0;false;false;;;;;;
                                  -157093;2;1;false;false;127;0;85;;;
                                  -157095;1;0;false;false;;;;;;
                                  -157096;9;0;false;false;0;0;0;;;
                                  -157105;1;0;false;false;;;;;;
                                  -157106;2;0;false;false;0;0;0;;;
                                  -157108;1;0;false;false;;;;;;
                                  -157109;7;0;false;false;0;0;0;;;
                                  -157116;1;0;false;false;;;;;;
                                  -157117;2;0;false;false;0;0;0;;;
                                  -157119;1;0;false;false;;;;;;
                                  -157120;11;0;false;false;0;0;0;;;
                                  -157131;1;0;false;false;;;;;;
                                  -157132;2;0;false;false;0;0;0;;;
                                  -157134;4;0;false;false;;;;;;
                                  -157138;9;0;false;false;0;0;0;;;
                                  -157147;1;0;false;false;;;;;;
                                  -157148;1;0;false;false;0;0;0;;;
                                  -157149;1;0;false;false;;;;;;
                                  -157150;22;0;false;false;0;0;0;;;
                                  -157172;1;0;false;false;;;;;;
                                  -157173;1;0;false;false;0;0;0;;;
                                  -157174;1;0;false;false;;;;;;
                                  -157175;1;0;false;false;0;0;0;;;
                                  -157176;1;0;false;false;;;;;;
                                  -157177;2;0;false;false;0;0;0;;;
                                  -157179;4;0;false;false;;;;;;
                                  -157183;11;0;false;false;0;0;0;;;
                                  -157194;1;0;false;false;;;;;;
                                  -157195;2;0;false;false;0;0;0;;;
                                  -157197;1;0;false;false;;;;;;
                                  -157198;33;0;false;false;0;0;0;;;
                                  -157231;1;0;false;false;;;;;;
                                  -157232;1;0;false;false;0;0;0;;;
                                  -157233;1;0;false;false;;;;;;
                                  -157234;3;0;false;false;0;0;0;;;
                                  -157237;1;0;false;false;;;;;;
                                  -157238;1;0;false;false;0;0;0;;;
                                  -157239;4;0;false;false;;;;;;
                                  -157243;12;0;false;false;0;0;0;;;
                                  -157255;3;0;false;false;;;;;;
                                  -157258;1;0;false;false;0;0;0;;;
                                  -157259;3;0;false;false;;;;;;
                                  -157262;6;1;false;false;127;0;85;;;
                                  -157268;1;0;false;false;;;;;;
                                  -157269;10;0;false;false;0;0;0;;;
                                  -157279;2;0;false;false;;;;;;
                                  -157281;1;0;false;false;0;0;0;;;
                                  -157282;2;0;false;false;;;;;;
                                  -157284;3;0;false;false;63;95;191;;;
                                  -157287;3;0;false;false;;;;;;
                                  -157290;1;0;false;false;63;95;191;;;
                                  -157291;1;0;false;false;;;;;;
                                  -157292;7;0;false;false;63;95;191;;;
                                  -157299;1;0;false;false;;;;;;
                                  -157300;3;0;false;false;63;95;191;;;
                                  -157303;1;0;false;false;;;;;;
                                  -157304;6;0;false;false;63;95;191;;;
                                  -157310;1;0;false;false;;;;;;
                                  -157311;2;0;false;false;63;95;191;;;
                                  -157313;1;0;false;false;;;;;;
                                  -157314;3;0;false;false;63;95;191;;;
                                  -157317;1;0;false;false;;;;;;
                                  -157318;9;0;false;false;63;95;191;;;
                                  -157327;1;0;false;false;;;;;;
                                  -157328;5;0;false;false;63;95;191;;;
                                  -157333;1;0;false;false;;;;;;
                                  -157334;3;0;false;false;63;95;191;;;
                                  -157337;1;0;false;false;;;;;;
                                  -157338;4;0;false;false;63;95;191;;;
                                  -157342;1;0;false;false;;;;;;
                                  -157343;2;0;false;false;63;95;191;;;
                                  -157345;1;0;false;false;;;;;;
                                  -157346;3;0;false;false;63;95;191;;;
                                  -157349;1;0;false;false;;;;;;
                                  -157350;9;0;false;false;63;95;191;;;
                                  -157359;3;0;false;false;;;;;;
                                  -157362;1;0;false;false;63;95;191;;;
                                  -157363;1;0;false;false;;;;;;
                                  -157364;7;0;false;false;63;95;191;;;
                                  -157371;3;0;false;false;;;;;;
                                  -157374;1;0;false;false;63;95;191;;;
                                  -157375;1;0;false;false;;;;;;
                                  -157376;3;0;false;false;127;127;159;;;
                                  -157379;3;0;false;false;;;;;;
                                  -157382;1;0;false;false;63;95;191;;;
                                  -157383;1;0;false;false;;;;;;
                                  -157384;5;0;false;false;63;95;191;;;
                                  -157389;1;0;false;false;;;;;;
                                  -157390;3;0;false;false;63;95;191;;;
                                  -157393;1;0;false;false;;;;;;
                                  -157394;3;0;false;false;63;95;191;;;
                                  -157397;1;0;false;false;;;;;;
                                  -157398;7;0;false;false;63;95;191;;;
                                  -157405;1;0;false;false;;;;;;
                                  -157406;2;0;false;false;63;95;191;;;
                                  -157408;1;0;false;false;;;;;;
                                  -157409;5;0;false;false;63;95;191;;;
                                  -157414;1;0;false;false;;;;;;
                                  -157415;6;0;false;false;63;95;191;;;
                                  -157421;1;0;false;false;;;;;;
                                  -157422;2;0;false;false;63;95;191;;;
                                  -157424;1;0;false;false;;;;;;
                                  -157425;1;0;false;false;63;95;191;;;
                                  -157426;1;0;false;false;;;;;;
                                  -157427;8;0;false;false;63;95;191;;;
                                  -157435;1;0;false;false;;;;;;
                                  -157436;2;0;false;false;63;95;191;;;
                                  -157438;1;0;false;false;;;;;;
                                  -157439;11;0;false;false;63;95;191;;;
                                  -157450;3;0;false;false;;;;;;
                                  -157453;1;0;false;false;63;95;191;;;
                                  -157454;1;0;false;false;;;;;;
                                  -157455;4;0;false;false;127;127;159;;;
                                  -157459;3;0;false;false;;;;;;
                                  -157462;1;0;false;false;63;95;191;;;
                                  -157463;1;0;false;false;;;;;;
                                  -157464;4;0;false;false;127;127;159;;;
                                  -157468;4;0;false;false;63;95;191;;;
                                  -157472;1;0;false;false;;;;;;
                                  -157473;1;0;false;false;63;95;191;;;
                                  -157474;1;0;false;false;127;127;159;;;
                                  -157475;1;0;false;false;63;95;191;;;
                                  -157476;1;0;false;false;;;;;;
                                  -157477;3;0;false;false;63;95;191;;;
                                  -157480;1;0;false;false;;;;;;
                                  -157481;1;0;false;false;63;95;191;;;
                                  -157482;1;0;false;false;127;127;159;;;
                                  -157483;1;0;false;false;63;95;191;;;
                                  -157484;1;0;false;false;;;;;;
                                  -157485;6;0;false;false;63;95;191;;;
                                  -157491;1;0;false;false;;;;;;
                                  -157492;2;0;false;false;63;95;191;;;
                                  -157494;1;0;false;false;127;127;159;;;
                                  -157495;2;0;false;false;63;95;191;;;
                                  -157497;1;0;false;false;;;;;;
                                  -157498;3;0;false;false;63;95;191;;;
                                  -157501;1;0;false;false;;;;;;
                                  -157502;2;0;false;false;63;95;191;;;
                                  -157504;1;0;false;false;127;127;159;;;
                                  -157505;4;0;false;false;63;95;191;;;
                                  -157509;3;0;false;false;;;;;;
                                  -157512;1;0;false;false;63;95;191;;;
                                  -157513;1;0;false;false;;;;;;
                                  -157514;4;0;false;false;127;127;159;;;
                                  -157518;5;0;false;false;63;95;191;;;
                                  -157523;1;0;false;false;;;;;;
                                  -157524;5;0;false;false;63;95;191;;;
                                  -157529;1;0;false;false;;;;;;
                                  -157530;9;0;false;false;63;95;191;;;
                                  -157539;1;0;false;false;;;;;;
                                  -157540;6;0;false;false;63;95;191;;;
                                  -157546;1;0;false;false;;;;;;
                                  -157547;4;0;false;false;63;95;191;;;
                                  -157551;1;0;false;false;;;;;;
                                  -157552;6;0;false;false;63;95;191;;;
                                  -157558;3;0;false;false;;;;;;
                                  -157561;1;0;false;false;63;95;191;;;
                                  -157562;1;0;false;false;;;;;;
                                  -157563;5;0;false;false;127;127;159;;;
                                  -157568;3;0;false;false;;;;;;
                                  -157571;1;0;false;false;63;95;191;;;
                                  -157572;1;0;false;false;;;;;;
                                  -157573;4;0;false;false;127;127;159;;;
                                  -157577;3;0;false;false;;;;;;
                                  -157580;1;0;false;false;63;95;191;;;
                                  -157581;1;0;false;false;;;;;;
                                  -157582;3;0;false;false;127;127;159;;;
                                  -157585;3;0;false;false;;;;;;
                                  -157588;1;0;false;false;63;95;191;;;
                                  -157589;1;0;false;false;;;;;;
                                  -157590;5;0;false;false;63;95;191;;;
                                  -157595;1;0;false;false;;;;;;
                                  -157596;10;0;false;false;63;95;191;;;
                                  -157606;1;0;false;false;;;;;;
                                  -157607;1;0;false;false;63;95;191;;;
                                  -157608;1;0;false;false;;;;;;
                                  -157609;1;0;false;false;63;95;191;;;
                                  -157610;1;0;false;false;;;;;;
                                  -157611;6;0;false;false;63;95;191;;;
                                  -157617;1;0;false;false;;;;;;
                                  -157618;3;0;false;false;63;95;191;;;
                                  -157621;1;0;false;false;;;;;;
                                  -157622;3;0;false;false;63;95;191;;;
                                  -157625;1;0;false;false;;;;;;
                                  -157626;7;0;false;false;63;95;191;;;
                                  -157633;1;0;false;false;;;;;;
                                  -157634;2;0;false;false;63;95;191;;;
                                  -157636;1;0;false;false;;;;;;
                                  -157637;4;0;false;false;63;95;191;;;
                                  -157641;1;0;false;false;;;;;;
                                  -157642;3;0;false;false;63;95;191;;;
                                  -157645;1;0;false;false;;;;;;
                                  -157646;7;0;false;false;63;95;191;;;
                                  -157653;1;0;false;false;;;;;;
                                  -157654;2;0;false;false;63;95;191;;;
                                  -157656;3;0;false;false;;;;;;
                                  -157659;1;0;false;false;63;95;191;;;
                                  -157660;1;0;false;false;;;;;;
                                  -157661;4;0;false;false;63;95;191;;;
                                  -157665;1;0;false;false;;;;;;
                                  -157666;2;0;false;false;63;95;191;;;
                                  -157668;1;0;false;false;;;;;;
                                  -157669;3;0;false;false;63;95;191;;;
                                  -157672;1;0;false;false;;;;;;
                                  -157673;4;0;false;false;63;95;191;;;
                                  -157677;1;0;false;false;;;;;;
                                  -157678;7;0;false;false;63;95;191;;;
                                  -157685;1;0;false;false;;;;;;
                                  -157686;2;0;false;false;63;95;191;;;
                                  -157688;1;0;false;false;;;;;;
                                  -157689;2;0;false;false;63;95;191;;;
                                  -157691;1;0;false;false;;;;;;
                                  -157692;3;0;false;false;63;95;191;;;
                                  -157695;1;0;false;false;;;;;;
                                  -157696;5;0;false;false;63;95;191;;;
                                  -157701;1;0;false;false;;;;;;
                                  -157702;10;0;false;false;63;95;191;;;
                                  -157712;2;0;false;false;;;;;;
                                  -157714;4;0;false;false;63;95;191;;;
                                  -157718;1;0;false;false;;;;;;
                                  -157719;6;0;false;false;63;95;191;;;
                                  -157725;1;0;false;false;;;;;;
                                  -157726;3;0;false;false;63;95;191;;;
                                  -157729;4;0;false;false;;;;;;
                                  -157733;1;0;false;false;63;95;191;;;
                                  -157734;1;0;false;false;;;;;;
                                  -157735;7;0;false;false;63;95;191;;;
                                  -157742;1;0;false;false;;;;;;
                                  -157743;2;0;false;false;63;95;191;;;
                                  -157745;1;0;false;false;;;;;;
                                  -157746;3;0;false;false;63;95;191;;;
                                  -157749;1;0;false;false;;;;;;
                                  -157750;5;0;false;false;63;95;191;;;
                                  -157755;3;0;false;false;;;;;;
                                  -157758;1;0;false;false;63;95;191;;;
                                  -157759;1;0;false;false;;;;;;
                                  -157760;4;0;false;false;127;127;159;;;
                                  -157764;3;0;false;false;;;;;;
                                  -157767;2;0;false;false;63;95;191;;;
                                  -157769;2;0;false;false;;;;;;
                                  -157771;3;1;false;false;127;0;85;;;
                                  -157774;1;0;false;false;;;;;;
                                  -157775;11;0;false;false;0;0;0;;;
                                  -157786;3;1;false;false;127;0;85;;;
                                  -157789;1;0;false;false;;;;;;
                                  -157790;7;0;false;false;0;0;0;;;
                                  -157797;1;0;false;false;;;;;;
                                  -157798;1;0;false;false;0;0;0;;;
                                  -157799;3;0;false;false;;;;;;
                                  -157802;3;1;false;false;127;0;85;;;
                                  -157805;1;0;false;false;;;;;;
                                  -157806;4;0;false;false;0;0;0;;;
                                  -157810;1;0;false;false;;;;;;
                                  -157811;1;0;false;false;0;0;0;;;
                                  -157812;1;0;false;false;;;;;;
                                  -157813;39;0;false;false;0;0;0;;;
                                  -157852;3;0;false;false;;;;;;
                                  -157855;3;1;false;false;127;0;85;;;
                                  -157858;1;0;false;false;;;;;;
                                  -157859;10;0;false;false;0;0;0;;;
                                  -157869;1;0;false;false;;;;;;
                                  -157870;1;0;false;false;0;0;0;;;
                                  -157871;1;0;false;false;;;;;;
                                  -157872;37;0;false;false;0;0;0;;;
                                  -157909;3;0;false;false;;;;;;
                                  -157912;6;0;false;false;0;0;0;;;
                                  -157918;1;0;false;false;;;;;;
                                  -157919;8;0;false;false;0;0;0;;;
                                  -157927;1;0;false;false;;;;;;
                                  -157928;1;0;false;false;0;0;0;;;
                                  -157929;1;0;false;false;;;;;;
                                  -157930;29;0;false;false;0;0;0;;;
                                  -157959;3;0;false;false;;;;;;
                                  -157962;3;1;false;false;127;0;85;;;
                                  -157965;1;0;false;false;;;;;;
                                  -157966;10;0;false;false;0;0;0;;;
                                  -157976;1;0;false;false;;;;;;
                                  -157977;1;0;false;false;0;0;0;;;
                                  -157978;1;0;false;false;;;;;;
                                  -157979;18;0;false;false;0;0;0;;;
                                  -157997;6;0;false;false;;;;;;
                                  -158003;2;1;false;false;127;0;85;;;
                                  -158005;1;0;false;false;;;;;;
                                  -158006;7;0;false;false;0;0;0;;;
                                  -158013;1;0;false;false;;;;;;
                                  -158014;2;0;false;false;0;0;0;;;
                                  -158016;1;0;false;false;;;;;;
                                  -158017;15;0;false;false;0;0;0;;;
                                  -158032;1;0;false;false;;;;;;
                                  -158033;1;0;false;false;0;0;0;;;
                                  -158034;4;0;false;false;;;;;;
                                  -158038;6;1;false;false;127;0;85;;;
                                  -158044;1;0;false;false;;;;;;
                                  -158045;7;0;false;false;0;0;0;;;
                                  -158052;3;0;false;false;;;;;;
                                  -158055;1;0;false;false;0;0;0;;;
                                  -158056;3;0;false;false;;;;;;
                                  -158059;2;1;false;false;127;0;85;;;
                                  -158061;1;0;false;false;;;;;;
                                  -158062;7;0;false;false;0;0;0;;;
                                  -158069;1;0;false;false;;;;;;
                                  -158070;2;0;false;false;0;0;0;;;
                                  -158072;1;0;false;false;;;;;;
                                  -158073;10;0;false;false;0;0;0;;;
                                  -158083;1;0;false;false;;;;;;
                                  -158084;1;0;false;false;0;0;0;;;
                                  -158085;1;0;false;false;;;;;;
                                  -158086;11;0;false;false;0;0;0;;;
                                  -158097;1;0;false;false;;;;;;
                                  -158098;1;0;false;false;0;0;0;;;
                                  -158099;4;0;false;false;;;;;;
                                  -158103;7;0;false;false;0;0;0;;;
                                  -158110;4;0;false;false;;;;;;
                                  -158114;6;0;false;false;0;0;0;;;
                                  -158120;1;0;false;false;;;;;;
                                  -158121;1;0;false;false;0;0;0;;;
                                  -158122;1;0;false;false;;;;;;
                                  -158123;37;0;false;false;0;0;0;;;
                                  -158160;3;0;false;false;;;;;;
                                  -158163;1;0;false;false;0;0;0;;;
                                  -158164;3;0;false;false;;;;;;
                                  -158167;4;1;false;false;127;0;85;;;
                                  -158171;1;0;false;false;;;;;;
                                  -158172;1;0;false;false;0;0;0;;;
                                  -158173;4;0;false;false;;;;;;
                                  -158177;10;0;false;false;0;0;0;;;
                                  -158187;1;0;false;false;;;;;;
                                  -158188;6;0;false;false;0;0;0;;;
                                  -158194;1;0;false;false;;;;;;
                                  -158195;1;0;false;false;0;0;0;;;
                                  -158196;1;0;false;false;;;;;;
                                  -158197;32;0;false;false;0;0;0;;;
                                  -158229;1;0;false;false;;;;;;
                                  -158230;12;0;false;false;0;0;0;;;
                                  -158242;4;0;false;false;;;;;;
                                  -158246;6;0;false;false;0;0;0;;;
                                  -158252;1;0;false;false;;;;;;
                                  -158253;2;0;false;false;0;0;0;;;
                                  -158255;1;0;false;false;;;;;;
                                  -158256;11;0;false;false;0;0;0;;;
                                  -158267;4;0;false;false;;;;;;
                                  -158271;6;0;false;false;0;0;0;;;
                                  -158277;1;0;false;false;;;;;;
                                  -158278;1;0;false;false;0;0;0;;;
                                  -158279;1;0;false;false;;;;;;
                                  -158280;28;0;false;false;0;0;0;;;
                                  -158308;1;0;false;false;;;;;;
                                  -158309;19;0;false;false;0;0;0;;;
                                  -158328;4;0;false;false;;;;;;
                                  -158332;6;0;false;false;0;0;0;;;
                                  -158338;1;0;false;false;;;;;;
                                  -158339;2;0;false;false;0;0;0;;;
                                  -158341;1;0;false;false;;;;;;
                                  -158342;11;0;false;false;0;0;0;;;
                                  -158353;4;0;false;false;;;;;;
                                  -158357;35;0;false;false;0;0;0;;;
                                  -158392;3;0;false;false;;;;;;
                                  -158395;1;0;false;false;0;0;0;;;
                                  -158396;3;0;false;false;;;;;;
                                  -158399;6;1;false;false;127;0;85;;;
                                  -158405;1;0;false;false;;;;;;
                                  -158406;7;0;false;false;0;0;0;;;
                                  -158413;2;0;false;false;;;;;;
                                  -158415;1;0;false;false;0;0;0;;;
                                  -158416;2;0;false;false;;;;;;
                                  -158418;3;0;false;false;63;95;191;;;
                                  -158421;3;0;false;false;;;;;;
                                  -158424;1;0;false;false;63;95;191;;;
                                  -158425;1;0;false;false;;;;;;
                                  -158426;7;0;false;false;63;95;191;;;
                                  -158433;1;0;false;false;;;;;;
                                  -158434;3;0;false;false;63;95;191;;;
                                  -158437;1;0;false;false;;;;;;
                                  -158438;6;0;false;false;63;95;191;;;
                                  -158444;1;0;false;false;;;;;;
                                  -158445;2;0;false;false;63;95;191;;;
                                  -158447;1;0;false;false;;;;;;
                                  -158448;3;0;false;false;63;95;191;;;
                                  -158451;1;0;false;false;;;;;;
                                  -158452;9;0;false;false;63;95;191;;;
                                  -158461;1;0;false;false;;;;;;
                                  -158462;5;0;false;false;63;95;191;;;
                                  -158467;1;0;false;false;;;;;;
                                  -158468;3;0;false;false;63;95;191;;;
                                  -158471;1;0;false;false;;;;;;
                                  -158472;4;0;false;false;63;95;191;;;
                                  -158476;1;0;false;false;;;;;;
                                  -158477;2;0;false;false;63;95;191;;;
                                  -158479;1;0;false;false;;;;;;
                                  -158480;3;0;false;false;63;95;191;;;
                                  -158483;1;0;false;false;;;;;;
                                  -158484;9;0;false;false;63;95;191;;;
                                  -158493;3;0;false;false;;;;;;
                                  -158496;1;0;false;false;63;95;191;;;
                                  -158497;1;0;false;false;;;;;;
                                  -158498;7;0;false;false;63;95;191;;;
                                  -158505;3;0;false;false;;;;;;
                                  -158508;1;0;false;false;63;95;191;;;
                                  -158509;1;0;false;false;;;;;;
                                  -158510;3;0;false;false;127;127;159;;;
                                  -158513;3;0;false;false;;;;;;
                                  -158516;1;0;false;false;63;95;191;;;
                                  -158517;1;0;false;false;;;;;;
                                  -158518;5;0;false;false;63;95;191;;;
                                  -158523;1;0;false;false;;;;;;
                                  -158524;3;0;false;false;63;95;191;;;
                                  -158527;1;0;false;false;;;;;;
                                  -158528;3;0;false;false;63;95;191;;;
                                  -158531;1;0;false;false;;;;;;
                                  -158532;7;0;false;false;63;95;191;;;
                                  -158539;1;0;false;false;;;;;;
                                  -158540;2;0;false;false;63;95;191;;;
                                  -158542;1;0;false;false;;;;;;
                                  -158543;5;0;false;false;63;95;191;;;
                                  -158548;1;0;false;false;;;;;;
                                  -158549;6;0;false;false;63;95;191;;;
                                  -158555;1;0;false;false;;;;;;
                                  -158556;2;0;false;false;63;95;191;;;
                                  -158558;1;0;false;false;;;;;;
                                  -158559;1;0;false;false;63;95;191;;;
                                  -158560;1;0;false;false;;;;;;
                                  -158561;8;0;false;false;63;95;191;;;
                                  -158569;1;0;false;false;;;;;;
                                  -158570;2;0;false;false;63;95;191;;;
                                  -158572;1;0;false;false;;;;;;
                                  -158573;11;0;false;false;63;95;191;;;
                                  -158584;3;0;false;false;;;;;;
                                  -158587;1;0;false;false;63;95;191;;;
                                  -158588;1;0;false;false;;;;;;
                                  -158589;4;0;false;false;127;127;159;;;
                                  -158593;3;0;false;false;;;;;;
                                  -158596;1;0;false;false;63;95;191;;;
                                  -158597;1;0;false;false;;;;;;
                                  -158598;4;0;false;false;127;127;159;;;
                                  -158602;4;0;false;false;63;95;191;;;
                                  -158606;1;0;false;false;;;;;;
                                  -158607;1;0;false;false;63;95;191;;;
                                  -158608;1;0;false;false;127;127;159;;;
                                  -158609;1;0;false;false;63;95;191;;;
                                  -158610;1;0;false;false;;;;;;
                                  -158611;3;0;false;false;63;95;191;;;
                                  -158614;1;0;false;false;;;;;;
                                  -158615;1;0;false;false;63;95;191;;;
                                  -158616;1;0;false;false;127;127;159;;;
                                  -158617;1;0;false;false;63;95;191;;;
                                  -158618;1;0;false;false;;;;;;
                                  -158619;6;0;false;false;63;95;191;;;
                                  -158625;1;0;false;false;;;;;;
                                  -158626;2;0;false;false;63;95;191;;;
                                  -158628;1;0;false;false;127;127;159;;;
                                  -158629;2;0;false;false;63;95;191;;;
                                  -158631;1;0;false;false;;;;;;
                                  -158632;3;0;false;false;63;95;191;;;
                                  -158635;1;0;false;false;;;;;;
                                  -158636;2;0;false;false;63;95;191;;;
                                  -158638;1;0;false;false;127;127;159;;;
                                  -158639;4;0;false;false;63;95;191;;;
                                  -158643;3;0;false;false;;;;;;
                                  -158646;1;0;false;false;63;95;191;;;
                                  -158647;1;0;false;false;;;;;;
                                  -158648;4;0;false;false;127;127;159;;;
                                  -158652;5;0;false;false;63;95;191;;;
                                  -158657;1;0;false;false;;;;;;
                                  -158658;5;0;false;false;63;95;191;;;
                                  -158663;1;0;false;false;;;;;;
                                  -158664;9;0;false;false;63;95;191;;;
                                  -158673;1;0;false;false;;;;;;
                                  -158674;6;0;false;false;63;95;191;;;
                                  -158680;1;0;false;false;;;;;;
                                  -158681;4;0;false;false;63;95;191;;;
                                  -158685;1;0;false;false;;;;;;
                                  -158686;6;0;false;false;63;95;191;;;
                                  -158692;3;0;false;false;;;;;;
                                  -158695;1;0;false;false;63;95;191;;;
                                  -158696;1;0;false;false;;;;;;
                                  -158697;5;0;false;false;127;127;159;;;
                                  -158702;3;0;false;false;;;;;;
                                  -158705;1;0;false;false;63;95;191;;;
                                  -158706;1;0;false;false;;;;;;
                                  -158707;4;0;false;false;127;127;159;;;
                                  -158711;3;0;false;false;;;;;;
                                  -158714;1;0;false;false;63;95;191;;;
                                  -158715;1;0;false;false;;;;;;
                                  -158716;3;0;false;false;127;127;159;;;
                                  -158719;3;0;false;false;;;;;;
                                  -158722;1;0;false;false;63;95;191;;;
                                  -158723;1;0;false;false;;;;;;
                                  -158724;6;0;false;false;63;95;191;;;
                                  -158730;1;0;false;false;;;;;;
                                  -158731;3;0;false;false;63;95;191;;;
                                  -158734;1;0;false;false;;;;;;
                                  -158735;7;0;false;false;63;95;191;;;
                                  -158742;1;0;false;false;;;;;;
                                  -158743;3;0;false;false;63;95;191;;;
                                  -158746;1;0;false;false;;;;;;
                                  -158747;2;0;false;false;63;95;191;;;
                                  -158749;1;0;false;false;;;;;;
                                  -158750;3;0;false;false;63;95;191;;;
                                  -158753;1;0;false;false;;;;;;
                                  -158754;9;0;false;false;63;95;191;;;
                                  -158763;1;0;false;false;;;;;;
                                  -158764;1;0;false;false;63;95;191;;;
                                  -158765;1;0;false;false;;;;;;
                                  -158766;5;0;false;false;63;95;191;;;
                                  -158771;2;0;false;false;;;;;;
                                  -158773;4;0;false;false;63;95;191;;;
                                  -158777;1;0;false;false;;;;;;
                                  -158778;6;0;false;false;63;95;191;;;
                                  -158784;1;0;false;false;;;;;;
                                  -158785;3;0;false;false;63;95;191;;;
                                  -158788;1;0;false;false;;;;;;
                                  -158789;7;0;false;false;63;95;191;;;
                                  -158796;4;0;false;false;;;;;;
                                  -158800;1;0;false;false;63;95;191;;;
                                  -158801;1;0;false;false;;;;;;
                                  -158802;2;0;false;false;63;95;191;;;
                                  -158804;1;0;false;false;;;;;;
                                  -158805;3;0;false;false;63;95;191;;;
                                  -158808;1;0;false;false;;;;;;
                                  -158809;5;0;false;false;63;95;191;;;
                                  -158814;3;0;false;false;;;;;;
                                  -158817;1;0;false;false;63;95;191;;;
                                  -158818;1;0;false;false;;;;;;
                                  -158819;4;0;false;false;127;127;159;;;
                                  -158823;3;0;false;false;;;;;;
                                  -158826;2;0;false;false;63;95;191;;;
                                  -158828;2;0;false;false;;;;;;
                                  -158830;3;1;false;false;127;0;85;;;
                                  -158833;1;0;false;false;;;;;;
                                  -158834;19;0;false;false;0;0;0;;;
                                  -158853;3;1;false;false;127;0;85;;;
                                  -158856;1;0;false;false;;;;;;
                                  -158857;7;0;false;false;0;0;0;;;
                                  -158864;1;0;false;false;;;;;;
                                  -158865;1;0;false;false;0;0;0;;;
                                  -158866;3;0;false;false;;;;;;
                                  -158869;3;1;false;false;127;0;85;;;
                                  -158872;1;0;false;false;;;;;;
                                  -158873;4;0;false;false;0;0;0;;;
                                  -158877;1;0;false;false;;;;;;
                                  -158878;1;0;false;false;0;0;0;;;
                                  -158879;1;0;false;false;;;;;;
                                  -158880;39;0;false;false;0;0;0;;;
                                  -158919;3;0;false;false;;;;;;
                                  -158922;3;1;false;false;127;0;85;;;
                                  -158925;1;0;false;false;;;;;;
                                  -158926;10;0;false;false;0;0;0;;;
                                  -158936;1;0;false;false;;;;;;
                                  -158937;1;0;false;false;0;0;0;;;
                                  -158938;1;0;false;false;;;;;;
                                  -158939;37;0;false;false;0;0;0;;;
                                  -158976;3;0;false;false;;;;;;
                                  -158979;6;0;false;false;0;0;0;;;
                                  -158985;1;0;false;false;;;;;;
                                  -158986;8;0;false;false;0;0;0;;;
                                  -158994;1;0;false;false;;;;;;
                                  -158995;1;0;false;false;0;0;0;;;
                                  -158996;1;0;false;false;;;;;;
                                  -158997;29;0;false;false;0;0;0;;;
                                  -159026;3;0;false;false;;;;;;
                                  -159029;3;1;false;false;127;0;85;;;
                                  -159032;1;0;false;false;;;;;;
                                  -159033;10;0;false;false;0;0;0;;;
                                  -159043;1;0;false;false;;;;;;
                                  -159044;1;0;false;false;0;0;0;;;
                                  -159045;1;0;false;false;;;;;;
                                  -159046;18;0;false;false;0;0;0;;;
                                  -159064;6;0;false;false;;;;;;
                                  -159070;2;1;false;false;127;0;85;;;
                                  -159072;1;0;false;false;;;;;;
                                  -159073;7;0;false;false;0;0;0;;;
                                  -159080;1;0;false;false;;;;;;
                                  -159081;2;0;false;false;0;0;0;;;
                                  -159083;1;0;false;false;;;;;;
                                  -159084;15;0;false;false;0;0;0;;;
                                  -159099;1;0;false;false;;;;;;
                                  -159100;1;0;false;false;0;0;0;;;
                                  -159101;4;0;false;false;;;;;;
                                  -159105;6;1;false;false;127;0;85;;;
                                  -159111;1;0;false;false;;;;;;
                                  -159112;7;0;false;false;0;0;0;;;
                                  -159119;3;0;false;false;;;;;;
                                  -159122;1;0;false;false;0;0;0;;;
                                  -159123;3;0;false;false;;;;;;
                                  -159126;2;1;false;false;127;0;85;;;
                                  -159128;1;0;false;false;;;;;;
                                  -159129;7;0;false;false;0;0;0;;;
                                  -159136;1;0;false;false;;;;;;
                                  -159137;2;0;false;false;0;0;0;;;
                                  -159139;1;0;false;false;;;;;;
                                  -159140;10;0;false;false;0;0;0;;;
                                  -159150;1;0;false;false;;;;;;
                                  -159151;1;0;false;false;0;0;0;;;
                                  -159152;1;0;false;false;;;;;;
                                  -159153;11;0;false;false;0;0;0;;;
                                  -159164;1;0;false;false;;;;;;
                                  -159165;1;0;false;false;0;0;0;;;
                                  -159166;4;0;false;false;;;;;;
                                  -159170;7;0;false;false;0;0;0;;;
                                  -159177;4;0;false;false;;;;;;
                                  -159181;6;0;false;false;0;0;0;;;
                                  -159187;1;0;false;false;;;;;;
                                  -159188;1;0;false;false;0;0;0;;;
                                  -159189;1;0;false;false;;;;;;
                                  -159190;37;0;false;false;0;0;0;;;
                                  -159227;3;0;false;false;;;;;;
                                  -159230;1;0;false;false;0;0;0;;;
                                  -159231;3;0;false;false;;;;;;
                                  -159234;4;1;false;false;127;0;85;;;
                                  -159238;1;0;false;false;;;;;;
                                  -159239;1;0;false;false;0;0;0;;;
                                  -159240;4;0;false;false;;;;;;
                                  -159244;6;0;false;false;0;0;0;;;
                                  -159250;1;0;false;false;;;;;;
                                  -159251;2;0;false;false;0;0;0;;;
                                  -159253;1;0;false;false;;;;;;
                                  -159254;11;0;false;false;0;0;0;;;
                                  -159265;4;0;false;false;;;;;;
                                  -159269;4;1;false;false;127;0;85;;;
                                  -159273;1;0;false;false;;;;;;
                                  -159274;2;0;false;false;0;0;0;;;
                                  -159276;1;0;false;false;;;;;;
                                  -159277;1;0;false;false;0;0;0;;;
                                  -159278;1;0;false;false;;;;;;
                                  -159279;24;0;false;false;0;0;0;;;
                                  -159303;4;0;false;false;;;;;;
                                  -159307;7;1;false;false;127;0;85;;;
                                  -159314;1;0;false;false;;;;;;
                                  -159315;13;0;false;false;0;0;0;;;
                                  -159328;1;0;false;false;;;;;;
                                  -159329;1;0;false;false;0;0;0;;;
                                  -159330;1;0;false;false;;;;;;
                                  -159331;34;0;false;false;0;0;0;;;
                                  -159365;8;0;false;false;;;;;;
                                  -159373;5;1;false;false;127;0;85;;;
                                  -159378;1;0;false;false;;;;;;
                                  -159379;7;0;false;false;0;0;0;;;
                                  -159386;1;0;false;false;;;;;;
                                  -159387;1;0;false;false;0;0;0;;;
                                  -159388;1;0;false;false;;;;;;
                                  -159389;10;0;false;false;0;0;0;;;
                                  -159399;1;0;false;false;;;;;;
                                  -159400;1;0;false;false;0;0;0;;;
                                  -159401;1;0;false;false;;;;;;
                                  -159402;1;0;false;false;0;0;0;;;
                                  -159403;1;0;false;false;;;;;;
                                  -159404;2;0;false;false;0;0;0;;;
                                  -159406;1;0;false;false;;;;;;
                                  -159407;33;0;false;false;0;0;0;;;
                                  -159440;1;0;false;false;;;;;;
                                  -159441;2;0;false;false;0;0;0;;;
                                  -159443;1;0;false;false;;;;;;
                                  -159444;13;0;false;false;0;0;0;;;
                                  -159457;1;0;false;false;;;;;;
                                  -159458;2;0;false;false;0;0;0;;;
                                  -159460;1;0;false;false;;;;;;
                                  -159461;31;0;false;false;0;0;0;;;
                                  -159492;1;0;false;false;;;;;;
                                  -159493;1;0;false;false;0;0;0;;;
                                  -159494;5;0;false;false;;;;;;
                                  -159499;9;0;false;false;0;0;0;;;
                                  -159508;5;0;false;false;;;;;;
                                  -159513;2;0;false;false;0;0;0;;;
                                  -159515;1;0;false;false;;;;;;
                                  -159516;1;0;false;false;0;0;0;;;
                                  -159517;1;0;false;false;;;;;;
                                  -159518;24;0;false;false;0;0;0;;;
                                  -159542;4;0;false;false;;;;;;
                                  -159546;1;0;false;false;0;0;0;;;
                                  -159547;4;0;false;false;;;;;;
                                  -159551;2;1;false;false;127;0;85;;;
                                  -159553;1;0;false;false;;;;;;
                                  -159554;7;0;false;false;0;0;0;;;
                                  -159561;1;0;false;false;;;;;;
                                  -159562;2;0;false;false;0;0;0;;;
                                  -159564;1;0;false;false;;;;;;
                                  -159565;10;0;false;false;0;0;0;;;
                                  -159575;1;0;false;false;;;;;;
                                  -159576;1;0;false;false;0;0;0;;;
                                  -159577;1;0;false;false;;;;;;
                                  -159578;1;0;false;false;0;0;0;;;
                                  -159579;1;0;false;false;;;;;;
                                  -159580;2;0;false;false;0;0;0;;;
                                  -159582;1;0;false;false;;;;;;
                                  -159583;33;0;false;false;0;0;0;;;
                                  -159616;1;0;false;false;;;;;;
                                  -159617;2;0;false;false;0;0;0;;;
                                  -159619;1;0;false;false;;;;;;
                                  -159620;13;0;false;false;0;0;0;;;
                                  -159633;1;0;false;false;;;;;;
                                  -159634;2;0;false;false;0;0;0;;;
                                  -159636;1;0;false;false;;;;;;
                                  -159637;31;0;false;false;0;0;0;;;
                                  -159668;1;0;false;false;;;;;;
                                  -159669;1;0;false;false;0;0;0;;;
                                  -159670;5;0;false;false;;;;;;
                                  -159675;9;0;false;false;0;0;0;;;
                                  -159684;4;0;false;false;;;;;;
                                  -159688;1;0;false;false;0;0;0;;;
                                  -159689;4;0;false;false;;;;;;
                                  -159693;6;0;false;false;0;0;0;;;
                                  -159699;1;0;false;false;;;;;;
                                  -159700;2;0;false;false;0;0;0;;;
                                  -159702;1;0;false;false;;;;;;
                                  -159703;11;0;false;false;0;0;0;;;
                                  -159714;3;0;false;false;;;;;;
                                  -159717;1;0;false;false;0;0;0;;;
                                  -159718;3;0;false;false;;;;;;
                                  -159721;6;1;false;false;127;0;85;;;
                                  -159727;1;0;false;false;;;;;;
                                  -159728;7;0;false;false;0;0;0;;;
                                  -159735;2;0;false;false;;;;;;
                                  -159737;1;0;false;false;0;0;0;;;
                                  -159738;2;0;false;false;;;;;;
                                  -159740;3;0;false;false;63;95;191;;;
                                  -159743;3;0;false;false;;;;;;
                                  -159746;1;0;false;false;63;95;191;;;
                                  -159747;1;0;false;false;;;;;;
                                  -159748;7;0;false;false;63;95;191;;;
                                  -159755;1;0;false;false;;;;;;
                                  -159756;3;0;false;false;63;95;191;;;
                                  -159759;1;0;false;false;;;;;;
                                  -159760;5;0;false;false;63;95;191;;;
                                  -159765;1;0;false;false;;;;;;
                                  -159766;6;0;false;false;63;95;191;;;
                                  -159772;1;0;false;false;;;;;;
                                  -159773;2;0;false;false;63;95;191;;;
                                  -159775;1;0;false;false;;;;;;
                                  -159776;3;0;false;false;63;95;191;;;
                                  -159779;1;0;false;false;;;;;;
                                  -159780;4;0;false;false;63;95;191;;;
                                  -159784;1;0;false;false;;;;;;
                                  -159785;2;0;false;false;63;95;191;;;
                                  -159787;1;0;false;false;;;;;;
                                  -159788;3;0;false;false;63;95;191;;;
                                  -159791;1;0;false;false;;;;;;
                                  -159792;9;0;false;false;63;95;191;;;
                                  -159801;1;0;false;false;;;;;;
                                  -159802;7;0;false;false;63;95;191;;;
                                  -159809;3;0;false;false;;;;;;
                                  -159812;1;0;false;false;63;95;191;;;
                                  -159813;1;0;false;false;;;;;;
                                  -159814;5;0;false;false;63;95;191;;;
                                  -159819;1;0;false;false;;;;;;
                                  -159820;3;0;false;false;63;95;191;;;
                                  -159823;1;0;false;false;;;;;;
                                  -159824;3;0;false;false;63;95;191;;;
                                  -159827;1;0;false;false;;;;;;
                                  -159828;7;0;false;false;63;95;191;;;
                                  -159835;1;0;false;false;;;;;;
                                  -159836;2;0;false;false;63;95;191;;;
                                  -159838;1;0;false;false;;;;;;
                                  -159839;5;0;false;false;63;95;191;;;
                                  -159844;1;0;false;false;;;;;;
                                  -159845;6;0;false;false;63;95;191;;;
                                  -159851;1;0;false;false;;;;;;
                                  -159852;2;0;false;false;63;95;191;;;
                                  -159854;1;0;false;false;;;;;;
                                  -159855;1;0;false;false;63;95;191;;;
                                  -159856;1;0;false;false;;;;;;
                                  -159857;8;0;false;false;63;95;191;;;
                                  -159865;1;0;false;false;;;;;;
                                  -159866;2;0;false;false;63;95;191;;;
                                  -159868;1;0;false;false;;;;;;
                                  -159869;11;0;false;false;63;95;191;;;
                                  -159880;3;0;false;false;;;;;;
                                  -159883;1;0;false;false;63;95;191;;;
                                  -159884;1;0;false;false;;;;;;
                                  -159885;3;0;false;false;127;127;159;;;
                                  -159888;3;0;false;false;;;;;;
                                  -159891;1;0;false;false;63;95;191;;;
                                  -159892;1;0;false;false;;;;;;
                                  -159893;4;0;false;false;127;127;159;;;
                                  -159897;3;0;false;false;;;;;;
                                  -159900;1;0;false;false;63;95;191;;;
                                  -159901;1;0;false;false;;;;;;
                                  -159902;4;0;false;false;127;127;159;;;
                                  -159906;4;0;false;false;63;95;191;;;
                                  -159910;1;0;false;false;;;;;;
                                  -159911;1;0;false;false;63;95;191;;;
                                  -159912;1;0;false;false;127;127;159;;;
                                  -159913;1;0;false;false;63;95;191;;;
                                  -159914;1;0;false;false;;;;;;
                                  -159915;3;0;false;false;63;95;191;;;
                                  -159918;1;0;false;false;;;;;;
                                  -159919;1;0;false;false;63;95;191;;;
                                  -159920;1;0;false;false;127;127;159;;;
                                  -159921;1;0;false;false;63;95;191;;;
                                  -159922;1;0;false;false;;;;;;
                                  -159923;6;0;false;false;63;95;191;;;
                                  -159929;1;0;false;false;;;;;;
                                  -159930;2;0;false;false;63;95;191;;;
                                  -159932;1;0;false;false;127;127;159;;;
                                  -159933;2;0;false;false;63;95;191;;;
                                  -159935;1;0;false;false;;;;;;
                                  -159936;3;0;false;false;63;95;191;;;
                                  -159939;1;0;false;false;;;;;;
                                  -159940;2;0;false;false;63;95;191;;;
                                  -159942;1;0;false;false;127;127;159;;;
                                  -159943;4;0;false;false;63;95;191;;;
                                  -159947;3;0;false;false;;;;;;
                                  -159950;1;0;false;false;63;95;191;;;
                                  -159951;1;0;false;false;;;;;;
                                  -159952;4;0;false;false;127;127;159;;;
                                  -159956;5;0;false;false;63;95;191;;;
                                  -159961;1;0;false;false;;;;;;
                                  -159962;5;0;false;false;63;95;191;;;
                                  -159967;1;0;false;false;;;;;;
                                  -159968;9;0;false;false;63;95;191;;;
                                  -159977;1;0;false;false;;;;;;
                                  -159978;6;0;false;false;63;95;191;;;
                                  -159984;1;0;false;false;;;;;;
                                  -159985;4;0;false;false;63;95;191;;;
                                  -159989;1;0;false;false;;;;;;
                                  -159990;6;0;false;false;63;95;191;;;
                                  -159996;3;0;false;false;;;;;;
                                  -159999;1;0;false;false;63;95;191;;;
                                  -160000;1;0;false;false;;;;;;
                                  -160001;5;0;false;false;127;127;159;;;
                                  -160006;3;0;false;false;;;;;;
                                  -160009;1;0;false;false;63;95;191;;;
                                  -160010;1;0;false;false;;;;;;
                                  -160011;4;0;false;false;127;127;159;;;
                                  -160015;3;0;false;false;;;;;;
                                  -160018;1;0;false;false;63;95;191;;;
                                  -160019;1;0;false;false;;;;;;
                                  -160020;3;0;false;false;127;127;159;;;
                                  -160023;3;0;false;false;;;;;;
                                  -160026;1;0;false;false;63;95;191;;;
                                  -160027;1;0;false;false;;;;;;
                                  -160028;5;0;false;false;63;95;191;;;
                                  -160033;1;0;false;false;;;;;;
                                  -160034;10;0;false;false;63;95;191;;;
                                  -160044;1;0;false;false;;;;;;
                                  -160045;1;0;false;false;63;95;191;;;
                                  -160046;1;0;false;false;;;;;;
                                  -160047;1;0;false;false;63;95;191;;;
                                  -160048;1;0;false;false;;;;;;
                                  -160049;6;0;false;false;63;95;191;;;
                                  -160055;1;0;false;false;;;;;;
                                  -160056;3;0;false;false;63;95;191;;;
                                  -160059;1;0;false;false;;;;;;
                                  -160060;3;0;false;false;63;95;191;;;
                                  -160063;1;0;false;false;;;;;;
                                  -160064;7;0;false;false;63;95;191;;;
                                  -160071;1;0;false;false;;;;;;
                                  -160072;2;0;false;false;63;95;191;;;
                                  -160074;1;0;false;false;;;;;;
                                  -160075;4;0;false;false;63;95;191;;;
                                  -160079;1;0;false;false;;;;;;
                                  -160080;3;0;false;false;63;95;191;;;
                                  -160083;1;0;false;false;;;;;;
                                  -160084;7;0;false;false;63;95;191;;;
                                  -160091;1;0;false;false;;;;;;
                                  -160092;2;0;false;false;63;95;191;;;
                                  -160094;3;0;false;false;;;;;;
                                  -160097;1;0;false;false;63;95;191;;;
                                  -160098;1;0;false;false;;;;;;
                                  -160099;4;0;false;false;63;95;191;;;
                                  -160103;1;0;false;false;;;;;;
                                  -160104;2;0;false;false;63;95;191;;;
                                  -160106;1;0;false;false;;;;;;
                                  -160107;3;0;false;false;63;95;191;;;
                                  -160110;1;0;false;false;;;;;;
                                  -160111;4;0;false;false;63;95;191;;;
                                  -160115;1;0;false;false;;;;;;
                                  -160116;7;0;false;false;63;95;191;;;
                                  -160123;1;0;false;false;;;;;;
                                  -160124;2;0;false;false;63;95;191;;;
                                  -160126;1;0;false;false;;;;;;
                                  -160127;2;0;false;false;63;95;191;;;
                                  -160129;1;0;false;false;;;;;;
                                  -160130;3;0;false;false;63;95;191;;;
                                  -160133;1;0;false;false;;;;;;
                                  -160134;5;0;false;false;63;95;191;;;
                                  -160139;1;0;false;false;;;;;;
                                  -160140;10;0;false;false;63;95;191;;;
                                  -160150;2;0;false;false;;;;;;
                                  -160152;4;0;false;false;63;95;191;;;
                                  -160156;1;0;false;false;;;;;;
                                  -160157;6;0;false;false;63;95;191;;;
                                  -160163;1;0;false;false;;;;;;
                                  -160164;3;0;false;false;63;95;191;;;
                                  -160167;1;0;false;false;;;;;;
                                  -160168;7;0;false;false;63;95;191;;;
                                  -160175;4;0;false;false;;;;;;
                                  -160179;1;0;false;false;63;95;191;;;
                                  -160180;1;0;false;false;;;;;;
                                  -160181;2;0;false;false;63;95;191;;;
                                  -160183;1;0;false;false;;;;;;
                                  -160184;3;0;false;false;63;95;191;;;
                                  -160187;1;0;false;false;;;;;;
                                  -160188;5;0;false;false;63;95;191;;;
                                  -160193;3;0;false;false;;;;;;
                                  -160196;1;0;false;false;63;95;191;;;
                                  -160197;1;0;false;false;;;;;;
                                  -160198;4;0;false;false;127;127;159;;;
                                  -160202;3;0;false;false;;;;;;
                                  -160205;2;0;false;false;63;95;191;;;
                                  -160207;2;0;false;false;;;;;;
                                  -160209;3;1;false;false;127;0;85;;;
                                  -160212;1;0;false;false;;;;;;
                                  -160213;13;0;false;false;0;0;0;;;
                                  -160226;3;1;false;false;127;0;85;;;
                                  -160229;1;0;false;false;;;;;;
                                  -160230;7;0;false;false;0;0;0;;;
                                  -160237;1;0;false;false;;;;;;
                                  -160238;1;0;false;false;0;0;0;;;
                                  -160239;3;0;false;false;;;;;;
                                  -160242;3;1;false;false;127;0;85;;;
                                  -160245;1;0;false;false;;;;;;
                                  -160246;4;0;false;false;0;0;0;;;
                                  -160250;1;0;false;false;;;;;;
                                  -160251;1;0;false;false;0;0;0;;;
                                  -160252;1;0;false;false;;;;;;
                                  -160253;39;0;false;false;0;0;0;;;
                                  -160292;3;0;false;false;;;;;;
                                  -160295;3;1;false;false;127;0;85;;;
                                  -160298;1;0;false;false;;;;;;
                                  -160299;10;0;false;false;0;0;0;;;
                                  -160309;1;0;false;false;;;;;;
                                  -160310;1;0;false;false;0;0;0;;;
                                  -160311;1;0;false;false;;;;;;
                                  -160312;37;0;false;false;0;0;0;;;
                                  -160349;3;0;false;false;;;;;;
                                  -160352;6;0;false;false;0;0;0;;;
                                  -160358;1;0;false;false;;;;;;
                                  -160359;8;0;false;false;0;0;0;;;
                                  -160367;1;0;false;false;;;;;;
                                  -160368;1;0;false;false;0;0;0;;;
                                  -160369;1;0;false;false;;;;;;
                                  -160370;29;0;false;false;0;0;0;;;
                                  -160399;5;0;false;false;;;;;;
                                  -160404;2;1;false;false;127;0;85;;;
                                  -160406;1;0;false;false;;;;;;
                                  -160407;7;0;false;false;0;0;0;;;
                                  -160414;1;0;false;false;;;;;;
                                  -160415;2;0;false;false;0;0;0;;;
                                  -160417;1;0;false;false;;;;;;
                                  -160418;2;0;false;false;0;0;0;;;
                                  -160420;1;0;false;false;;;;;;
                                  -160421;1;0;false;false;0;0;0;;;
                                  -160422;4;0;false;false;;;;;;
                                  -160426;6;1;false;false;127;0;85;;;
                                  -160432;1;0;false;false;;;;;;
                                  -160433;7;0;false;false;0;0;0;;;
                                  -160440;3;0;false;false;;;;;;
                                  -160443;1;0;false;false;0;0;0;;;
                                  -160444;3;0;false;false;;;;;;
                                  -160447;2;1;false;false;127;0;85;;;
                                  -160449;1;0;false;false;;;;;;
                                  -160450;7;0;false;false;0;0;0;;;
                                  -160457;1;0;false;false;;;;;;
                                  -160458;2;0;false;false;0;0;0;;;
                                  -160460;1;0;false;false;;;;;;
                                  -160461;11;0;false;false;0;0;0;;;
                                  -160472;1;0;false;false;;;;;;
                                  -160473;1;0;false;false;0;0;0;;;
                                  -160474;4;0;false;false;;;;;;
                                  -160478;7;0;false;false;0;0;0;;;
                                  -160485;4;0;false;false;;;;;;
                                  -160489;8;0;false;false;0;0;0;;;
                                  -160497;1;0;false;false;;;;;;
                                  -160498;1;0;false;false;0;0;0;;;
                                  -160499;1;0;false;false;;;;;;
                                  -160500;29;0;false;false;0;0;0;;;
                                  -160529;4;0;false;false;;;;;;
                                  -160533;6;0;false;false;0;0;0;;;
                                  -160539;1;0;false;false;;;;;;
                                  -160540;1;0;false;false;0;0;0;;;
                                  -160541;1;0;false;false;;;;;;
                                  -160542;36;0;false;false;0;0;0;;;
                                  -160578;1;0;false;false;;;;;;
                                  -160579;1;0;false;false;0;0;0;;;
                                  -160580;1;0;false;false;;;;;;
                                  -160581;18;0;false;false;0;0;0;;;
                                  -160599;3;0;false;false;;;;;;
                                  -160602;1;0;false;false;0;0;0;;;
                                  -160603;3;0;false;false;;;;;;
                                  -160606;4;1;false;false;127;0;85;;;
                                  -160610;1;0;false;false;;;;;;
                                  -160611;1;0;false;false;0;0;0;;;
                                  -160612;4;0;false;false;;;;;;
                                  -160616;10;0;false;false;0;0;0;;;
                                  -160626;1;0;false;false;;;;;;
                                  -160627;6;0;false;false;0;0;0;;;
                                  -160633;1;0;false;false;;;;;;
                                  -160634;1;0;false;false;0;0;0;;;
                                  -160635;1;0;false;false;;;;;;
                                  -160636;32;0;false;false;0;0;0;;;
                                  -160668;1;0;false;false;;;;;;
                                  -160669;12;0;false;false;0;0;0;;;
                                  -160681;4;0;false;false;;;;;;
                                  -160685;6;0;false;false;0;0;0;;;
                                  -160691;1;0;false;false;;;;;;
                                  -160692;2;0;false;false;0;0;0;;;
                                  -160694;1;0;false;false;;;;;;
                                  -160695;11;0;false;false;0;0;0;;;
                                  -160706;4;0;false;false;;;;;;
                                  -160710;6;0;false;false;0;0;0;;;
                                  -160716;1;0;false;false;;;;;;
                                  -160717;1;0;false;false;0;0;0;;;
                                  -160718;1;0;false;false;;;;;;
                                  -160719;32;0;false;false;0;0;0;;;
                                  -160751;1;0;false;false;;;;;;
                                  -160752;19;0;false;false;0;0;0;;;
                                  -160771;4;0;false;false;;;;;;
                                  -160775;6;0;false;false;0;0;0;;;
                                  -160781;1;0;false;false;;;;;;
                                  -160782;2;0;false;false;0;0;0;;;
                                  -160784;1;0;false;false;;;;;;
                                  -160785;11;0;false;false;0;0;0;;;
                                  -160796;4;0;false;false;;;;;;
                                  -160800;35;0;false;false;0;0;0;;;
                                  -160835;4;0;false;false;;;;;;
                                  -160839;1;0;false;false;0;0;0;;;
                                  -160840;3;0;false;false;;;;;;
                                  -160843;6;1;false;false;127;0;85;;;
                                  -160849;1;0;false;false;;;;;;
                                  -160850;7;0;false;false;0;0;0;;;
                                  -160857;2;0;false;false;;;;;;
                                  -160859;1;0;false;false;0;0;0;;;
                                  -160860;2;0;false;false;;;;;;
                                  -160862;3;0;false;false;63;95;191;;;
                                  -160865;3;0;false;false;;;;;;
                                  -160868;1;0;false;false;63;95;191;;;
                                  -160869;1;0;false;false;;;;;;
                                  -160870;7;0;false;false;63;95;191;;;
                                  -160877;1;0;false;false;;;;;;
                                  -160878;7;0;false;false;63;95;191;;;
                                  -160885;1;0;false;false;;;;;;
                                  -160886;3;0;false;false;63;95;191;;;
                                  -160889;1;0;false;false;;;;;;
                                  -160890;6;0;false;false;63;95;191;;;
                                  -160896;1;0;false;false;;;;;;
                                  -160897;5;0;false;false;63;95;191;;;
                                  -160902;1;0;false;false;;;;;;
                                  -160903;6;0;false;false;63;95;191;;;
                                  -160909;3;0;false;false;;;;;;
                                  -160912;1;0;false;false;63;95;191;;;
                                  -160913;1;0;false;false;;;;;;
                                  -160914;3;0;false;false;127;127;159;;;
                                  -160917;3;0;false;false;;;;;;
                                  -160920;1;0;false;false;63;95;191;;;
                                  -160921;3;0;false;false;;;;;;
                                  -160924;1;0;false;false;63;95;191;;;
                                  -160925;1;0;false;false;;;;;;
                                  -160926;8;1;false;false;127;159;191;;;
                                  -160934;4;0;false;false;63;95;191;;;
                                  -160938;1;0;false;false;;;;;;
                                  -160939;2;0;false;false;63;95;191;;;
                                  -160941;1;0;false;false;;;;;;
                                  -160942;6;0;false;false;63;95;191;;;
                                  -160948;1;0;false;false;;;;;;
                                  -160949;5;0;false;false;63;95;191;;;
                                  -160954;1;0;false;false;;;;;;
                                  -160955;6;0;false;false;63;95;191;;;
                                  -160961;1;0;false;false;;;;;;
                                  -160962;5;0;false;false;63;95;191;;;
                                  -160967;1;0;false;false;;;;;;
                                  -160968;9;0;false;false;63;95;191;;;
                                  -160977;3;0;false;false;;;;;;
                                  -160980;1;0;false;false;63;95;191;;;
                                  -160981;1;0;false;false;;;;;;
                                  -160982;7;1;false;false;127;159;191;;;
                                  -160989;3;0;false;false;63;95;191;;;
                                  -160992;3;0;false;false;;;;;;
                                  -160995;2;0;false;false;63;95;191;;;
                                  -160997;2;0;false;false;;;;;;
                                  -160999;6;1;false;false;127;0;85;;;
                                  -161005;1;0;false;false;;;;;;
                                  -161006;7;1;false;false;127;0;85;;;
                                  -161013;1;0;false;false;;;;;;
                                  -161014;13;0;false;false;0;0;0;;;
                                  -161027;1;0;false;false;;;;;;
                                  -161028;1;0;false;false;0;0;0;;;
                                  -161029;3;0;false;false;;;;;;
                                  -161032;14;0;false;false;0;0;0;;;
                                  -161046;3;0;false;false;;;;;;
                                  -161049;6;1;false;false;127;0;85;;;
                                  -161055;1;0;false;false;;;;;;
                                  -161056;9;0;false;false;0;0;0;;;
                                  -161065;2;0;false;false;;;;;;
                                  -161067;1;0;false;false;0;0;0;;;
                                  -161068;2;0;false;false;;;;;;
                                  -161070;3;0;false;false;63;95;191;;;
                                  -161073;4;0;false;false;;;;;;
                                  -161077;1;0;false;false;63;95;191;;;
                                  -161078;1;0;false;false;;;;;;
                                  -161079;7;0;false;false;63;95;191;;;
                                  -161086;1;0;false;false;;;;;;
                                  -161087;3;0;false;false;63;95;191;;;
                                  -161090;1;0;false;false;;;;;;
                                  -161091;1;0;false;false;63;95;191;;;
                                  -161092;1;0;false;false;;;;;;
                                  -161093;8;0;false;false;63;95;191;;;
                                  -161101;1;0;false;false;;;;;;
                                  -161102;2;0;false;false;63;95;191;;;
                                  -161104;1;0;false;false;;;;;;
                                  -161105;3;0;false;false;63;95;191;;;
                                  -161108;1;0;false;false;;;;;;
                                  -161109;9;0;false;false;63;95;191;;;
                                  -161118;1;0;false;false;;;;;;
                                  -161119;2;0;false;false;63;95;191;;;
                                  -161121;1;0;false;false;;;;;;
                                  -161122;3;0;false;false;63;95;191;;;
                                  -161125;1;0;false;false;;;;;;
                                  -161126;4;0;false;false;63;95;191;;;
                                  -161130;1;0;false;false;;;;;;
                                  -161131;6;0;false;false;63;95;191;;;
                                  -161137;1;0;false;false;;;;;;
                                  -161138;2;0;false;false;63;95;191;;;
                                  -161140;1;0;false;false;;;;;;
                                  -161141;3;0;false;false;63;95;191;;;
                                  -161144;1;0;false;false;;;;;;
                                  -161145;5;0;false;false;63;95;191;;;
                                  -161150;3;0;false;false;;;;;;
                                  -161153;1;0;false;false;63;95;191;;;
                                  -161154;1;0;false;false;;;;;;
                                  -161155;3;0;false;false;127;127;159;;;
                                  -161158;5;0;false;false;63;95;191;;;
                                  -161163;4;0;false;false;127;127;159;;;
                                  -161167;1;0;false;false;;;;;;
                                  -161168;4;0;false;false;63;95;191;;;
                                  -161172;1;0;false;false;;;;;;
                                  -161173;3;0;false;false;63;95;191;;;
                                  -161176;1;0;false;false;;;;;;
                                  -161177;6;0;false;false;63;95;191;;;
                                  -161183;1;0;false;false;;;;;;
                                  -161184;7;0;false;false;63;95;191;;;
                                  -161191;1;0;false;false;;;;;;
                                  -161192;6;0;false;false;63;95;191;;;
                                  -161198;1;0;false;false;;;;;;
                                  -161199;3;0;false;false;63;95;191;;;
                                  -161202;1;0;false;false;;;;;;
                                  -161203;4;0;false;false;63;95;191;;;
                                  -161207;1;0;false;false;;;;;;
                                  -161208;6;0;false;false;63;95;191;;;
                                  -161214;1;0;false;false;;;;;;
                                  -161215;5;0;false;false;63;95;191;;;
                                  -161220;1;0;false;false;;;;;;
                                  -161221;4;0;false;false;63;95;191;;;
                                  -161225;1;0;false;false;;;;;;
                                  -161226;7;0;false;false;63;95;191;;;
                                  -161233;1;0;false;false;;;;;;
                                  -161234;7;0;false;false;63;95;191;;;
                                  -161241;3;0;false;false;;;;;;
                                  -161244;1;0;false;false;63;95;191;;;
                                  -161245;1;0;false;false;;;;;;
                                  -161246;3;0;false;false;127;127;159;;;
                                  -161249;3;0;false;false;;;;;;
                                  -161252;1;0;false;false;63;95;191;;;
                                  -161253;3;0;false;false;;;;;;
                                  -161256;1;0;false;false;63;95;191;;;
                                  -161257;1;0;false;false;;;;;;
                                  -161258;8;1;false;false;127;159;191;;;
                                  -161266;1;0;false;false;63;95;191;;;
                                  -161267;1;0;false;false;;;;;;
                                  -161268;8;0;false;false;63;95;191;;;
                                  -161276;1;0;false;false;;;;;;
                                  -161277;2;0;false;false;63;95;191;;;
                                  -161279;1;0;false;false;;;;;;
                                  -161280;3;0;false;false;63;95;191;;;
                                  -161283;1;0;false;false;;;;;;
                                  -161284;9;0;false;false;63;95;191;;;
                                  -161293;1;0;false;false;;;;;;
                                  -161294;2;0;false;false;63;95;191;;;
                                  -161296;1;0;false;false;;;;;;
                                  -161297;3;0;false;false;63;95;191;;;
                                  -161300;1;0;false;false;;;;;;
                                  -161301;5;0;false;false;63;95;191;;;
                                  -161306;1;0;false;false;;;;;;
                                  -161307;6;0;false;false;63;95;191;;;
                                  -161313;1;0;false;false;;;;;;
                                  -161314;2;0;false;false;63;95;191;;;
                                  -161316;1;0;false;false;;;;;;
                                  -161317;3;0;false;false;63;95;191;;;
                                  -161320;1;0;false;false;;;;;;
                                  -161321;5;0;false;false;63;95;191;;;
                                  -161326;3;0;false;false;;;;;;
                                  -161329;2;0;false;false;63;95;191;;;
                                  -161331;2;0;false;false;;;;;;
                                  -161333;3;1;false;false;127;0;85;;;
                                  -161336;1;0;false;false;;;;;;
                                  -161337;19;0;false;false;0;0;0;;;
                                  -161356;1;0;false;false;;;;;;
                                  -161357;5;0;false;false;0;0;0;;;
                                  -161362;1;0;false;false;;;;;;
                                  -161363;3;1;false;false;127;0;85;;;
                                  -161366;1;0;false;false;;;;;;
                                  -161367;10;0;false;false;0;0;0;;;
                                  -161377;1;0;false;false;;;;;;
                                  -161378;3;1;false;false;127;0;85;;;
                                  -161381;1;0;false;false;;;;;;
                                  -161382;13;0;false;false;0;0;0;;;
                                  -161395;1;0;false;false;;;;;;
                                  -161396;1;0;false;false;0;0;0;;;
                                  -161397;3;0;false;false;;;;;;
                                  -161400;3;1;false;false;127;0;85;;;
                                  -161403;1;0;false;false;;;;;;
                                  -161404;1;0;false;false;0;0;0;;;
                                  -161405;1;0;false;false;;;;;;
                                  -161406;1;0;false;false;0;0;0;;;
                                  -161407;1;0;false;false;;;;;;
                                  -161408;2;0;false;false;0;0;0;;;
                                  -161410;3;0;false;false;;;;;;
                                  -161413;3;1;false;false;127;0;85;;;
                                  -161416;1;0;false;false;;;;;;
                                  -161417;10;0;false;false;0;0;0;;;
                                  -161427;1;0;false;false;;;;;;
                                  -161428;1;0;false;false;0;0;0;;;
                                  -161429;1;0;false;false;;;;;;
                                  -161430;14;0;false;false;0;0;0;;;
                                  -161444;3;0;false;false;;;;;;
                                  -161447;2;1;false;false;127;0;85;;;
                                  -161449;1;0;false;false;;;;;;
                                  -161450;10;0;false;false;0;0;0;;;
                                  -161460;1;0;false;false;;;;;;
                                  -161461;1;0;false;false;0;0;0;;;
                                  -161462;1;0;false;false;;;;;;
                                  -161463;22;0;false;false;0;0;0;;;
                                  -161485;1;0;false;false;;;;;;
                                  -161486;1;0;false;false;0;0;0;;;
                                  -161487;1;0;false;false;;;;;;
                                  -161488;2;0;false;false;0;0;0;;;
                                  -161490;1;0;false;false;;;;;;
                                  -161491;1;0;false;false;0;0;0;;;
                                  -161492;4;0;false;false;;;;;;
                                  -161496;3;1;false;false;127;0;85;;;
                                  -161499;1;0;false;false;;;;;;
                                  -161500;13;0;false;false;0;0;0;;;
                                  -161513;1;0;false;false;;;;;;
                                  -161514;1;0;false;false;0;0;0;;;
                                  -161515;1;0;false;false;;;;;;
                                  -161516;33;0;false;false;0;0;0;;;
                                  -161549;1;0;false;false;;;;;;
                                  -161550;1;0;false;false;0;0;0;;;
                                  -161551;1;0;false;false;;;;;;
                                  -161552;2;0;false;false;0;0;0;;;
                                  -161554;1;0;false;false;;;;;;
                                  -161555;1;0;false;false;0;0;0;;;
                                  -161556;1;0;false;false;;;;;;
                                  -161557;2;0;false;false;0;0;0;;;
                                  -161559;4;0;false;false;;;;;;
                                  -161563;2;1;false;false;127;0;85;;;
                                  -161565;1;0;false;false;;;;;;
                                  -161566;11;0;false;false;0;0;0;;;
                                  -161577;1;0;false;false;;;;;;
                                  -161578;1;0;false;false;0;0;0;;;
                                  -161579;1;0;false;false;;;;;;
                                  -161580;12;0;false;false;0;0;0;;;
                                  -161592;1;0;false;false;;;;;;
                                  -161593;2;0;false;false;0;0;0;;;
                                  -161595;1;0;false;false;;;;;;
                                  -161596;12;0;false;false;0;0;0;;;
                                  -161608;1;0;false;false;;;;;;
                                  -161609;2;0;false;false;0;0;0;;;
                                  -161611;1;0;false;false;;;;;;
                                  -161612;14;0;false;false;0;0;0;;;
                                  -161626;1;0;false;false;;;;;;
                                  -161627;1;0;false;false;0;0;0;;;
                                  -161628;5;0;false;false;;;;;;
                                  -161633;12;0;false;false;0;0;0;;;
                                  -161645;1;0;false;false;;;;;;
                                  -161646;1;0;false;false;0;0;0;;;
                                  -161647;1;0;false;false;;;;;;
                                  -161648;11;0;false;false;0;0;0;;;
                                  -161659;4;0;false;false;;;;;;
                                  -161663;1;0;false;false;0;0;0;;;
                                  -161664;3;0;false;false;;;;;;
                                  -161667;1;0;false;false;0;0;0;;;
                                  -161668;3;0;false;false;;;;;;
                                  -161671;2;1;false;false;127;0;85;;;
                                  -161673;1;0;false;false;;;;;;
                                  -161674;11;0;false;false;0;0;0;;;
                                  -161685;1;0;false;false;;;;;;
                                  -161686;2;0;false;false;0;0;0;;;
                                  -161688;1;0;false;false;;;;;;
                                  -161689;1;0;false;false;0;0;0;;;
                                  -161690;2;0;false;false;;;;;;
                                  -161692;2;0;false;false;0;0;0;;;
                                  -161694;1;0;false;false;;;;;;
                                  -161695;12;0;false;false;0;0;0;;;
                                  -161707;1;0;false;false;;;;;;
                                  -161708;2;0;false;false;0;0;0;;;
                                  -161710;1;0;false;false;;;;;;
                                  -161711;11;0;false;false;0;0;0;;;
                                  -161722;1;0;false;false;;;;;;
                                  -161723;1;0;false;false;0;0;0;;;
                                  -161724;4;0;false;false;;;;;;
                                  -161728;3;1;false;false;127;0;85;;;
                                  -161731;1;0;false;false;;;;;;
                                  -161732;10;0;false;false;0;0;0;;;
                                  -161742;1;0;false;false;;;;;;
                                  -161743;1;0;false;false;0;0;0;;;
                                  -161744;1;0;false;false;;;;;;
                                  -161745;35;0;false;false;0;0;0;;;
                                  -161780;4;0;false;false;;;;;;
                                  -161784;10;0;false;false;0;0;0;;;
                                  -161794;1;0;false;false;;;;;;
                                  -161795;6;0;false;false;0;0;0;;;
                                  -161801;1;0;false;false;;;;;;
                                  -161802;1;0;false;false;0;0;0;;;
                                  -161803;1;0;false;false;;;;;;
                                  -161804;28;0;false;false;0;0;0;;;
                                  -161832;1;0;false;false;;;;;;
                                  -161833;12;0;false;false;0;0;0;;;
                                  -161845;4;0;false;false;;;;;;
                                  -161849;2;1;false;false;127;0;85;;;
                                  -161851;1;0;false;false;;;;;;
                                  -161852;11;0;false;false;0;0;0;;;
                                  -161863;1;0;false;false;;;;;;
                                  -161864;2;0;false;false;0;0;0;;;
                                  -161866;1;0;false;false;;;;;;
                                  -161867;12;0;false;false;0;0;0;;;
                                  -161879;1;0;false;false;;;;;;
                                  -161880;2;0;false;false;0;0;0;;;
                                  -161882;1;0;false;false;;;;;;
                                  -161883;2;0;false;false;0;0;0;;;
                                  -161885;1;0;false;false;;;;;;
                                  -161886;1;0;false;false;0;0;0;;;
                                  -161887;5;0;false;false;;;;;;
                                  -161892;1;0;false;false;0;0;0;;;
                                  -161893;1;0;false;false;;;;;;
                                  -161894;1;0;false;false;0;0;0;;;
                                  -161895;1;0;false;false;;;;;;
                                  -161896;32;0;false;false;0;0;0;;;
                                  -161928;1;0;false;false;;;;;;
                                  -161929;5;1;false;false;127;0;85;;;
                                  -161934;4;0;false;false;0;0;0;;;
                                  -161938;4;0;false;false;;;;;;
                                  -161942;1;0;false;false;0;0;0;;;
                                  -161943;1;0;false;false;;;;;;
                                  -161944;4;1;false;false;127;0;85;;;
                                  -161948;1;0;false;false;;;;;;
                                  -161949;1;0;false;false;0;0;0;;;
                                  -161950;5;0;false;false;;;;;;
                                  -161955;1;0;false;false;0;0;0;;;
                                  -161956;1;0;false;false;;;;;;
                                  -161957;1;0;false;false;0;0;0;;;
                                  -161958;1;0;false;false;;;;;;
                                  -161959;31;0;false;false;0;0;0;;;
                                  -161990;1;0;false;false;;;;;;
                                  -161991;1;0;false;false;0;0;0;;;
                                  -161992;1;0;false;false;;;;;;
                                  -161993;2;0;false;false;0;0;0;;;
                                  -161995;1;0;false;false;;;;;;
                                  -161996;4;1;false;false;127;0;85;;;
                                  -162000;4;0;false;false;0;0;0;;;
                                  -162004;4;0;false;false;;;;;;
                                  -162008;1;0;false;false;0;0;0;;;
                                  -162009;4;0;false;false;;;;;;
                                  -162013;35;0;false;false;0;0;0;;;
                                  -162048;3;0;false;false;;;;;;
                                  -162051;1;0;false;false;0;0;0;;;
                                  -162052;3;0;false;false;;;;;;
                                  -162055;6;1;false;false;127;0;85;;;
                                  -162061;1;0;false;false;;;;;;
                                  -162062;1;0;false;false;0;0;0;;;
                                  -162063;1;0;false;false;;;;;;
                                  -162064;1;0;false;false;0;0;0;;;
                                  -162065;1;0;false;false;;;;;;
                                  -162066;10;0;false;false;0;0;0;;;
                                  -162076;1;0;false;false;;;;;;
                                  -162077;1;0;false;false;0;0;0;;;
                                  -162078;1;0;false;false;;;;;;
                                  -162079;23;0;false;false;0;0;0;;;
                                  -162102;2;0;false;false;;;;;;
                                  -162104;1;0;false;false;0;0;0;;;
                                  -162105;2;0;false;false;;;;;;
                                  -162107;3;0;false;false;63;95;191;;;
                                  -162110;4;0;false;false;;;;;;
                                  -162114;1;0;false;false;63;95;191;;;
                                  -162115;1;0;false;false;;;;;;
                                  -162116;7;0;false;false;63;95;191;;;
                                  -162123;1;0;false;false;;;;;;
                                  -162124;1;0;false;false;63;95;191;;;
                                  -162125;1;0;false;false;;;;;;
                                  -162126;7;0;false;false;63;95;191;;;
                                  -162133;2;0;false;false;;;;;;
                                  -162135;3;0;false;false;63;95;191;;;
                                  -162138;1;0;false;false;;;;;;
                                  -162139;3;0;false;false;63;95;191;;;
                                  -162142;1;0;false;false;;;;;;
                                  -162143;9;0;false;false;63;95;191;;;
                                  -162152;1;0;false;false;;;;;;
                                  -162153;2;0;false;false;63;95;191;;;
                                  -162155;1;0;false;false;;;;;;
                                  -162156;8;0;false;false;63;95;191;;;
                                  -162164;1;0;false;false;;;;;;
                                  -162165;4;0;false;false;63;95;191;;;
                                  -162169;1;0;false;false;;;;;;
                                  -162170;3;0;false;false;63;95;191;;;
                                  -162173;1;0;false;false;;;;;;
                                  -162174;3;0;false;false;63;95;191;;;
                                  -162177;1;0;false;false;;;;;;
                                  -162178;5;0;false;false;63;95;191;;;
                                  -162183;5;0;false;false;;;;;;
                                  -162188;1;0;false;false;63;95;191;;;
                                  -162189;1;0;false;false;;;;;;
                                  -162190;3;0;false;false;127;127;159;;;
                                  -162193;3;0;false;false;;;;;;
                                  -162196;1;0;false;false;63;95;191;;;
                                  -162197;3;0;false;false;;;;;;
                                  -162200;1;0;false;false;63;95;191;;;
                                  -162201;1;0;false;false;;;;;;
                                  -162202;7;1;false;false;127;159;191;;;
                                  -162209;6;0;false;false;63;95;191;;;
                                  -162215;1;0;false;false;;;;;;
                                  -162216;3;0;false;false;63;95;191;;;
                                  -162219;1;0;false;false;;;;;;
                                  -162220;6;0;false;false;63;95;191;;;
                                  -162226;3;0;false;false;;;;;;
                                  -162229;1;0;false;false;63;95;191;;;
                                  -162230;1;0;false;false;;;;;;
                                  -162231;5;1;false;false;127;159;191;;;
                                  -162236;33;0;false;false;63;95;191;;;
                                  -162269;3;0;false;false;;;;;;
                                  -162272;1;0;false;false;63;95;191;;;
                                  -162273;1;0;false;false;;;;;;
                                  -162274;11;1;false;false;127;159;191;;;
                                  -162285;12;0;false;false;63;95;191;;;
                                  -162297;1;0;false;false;;;;;;
                                  -162298;4;0;false;false;127;127;159;;;
                                  -162302;3;0;false;false;;;;;;
                                  -162305;1;0;false;false;63;95;191;;;
                                  -162306;4;0;false;false;;;;;;
                                  -162310;4;0;false;false;127;127;159;;;
                                  -162314;21;0;false;false;63;95;191;;;
                                  -162335;1;0;false;false;;;;;;
                                  -162336;1;0;false;false;127;127;159;;;
                                  -162337;1;0;false;false;;;;;;
                                  -162338;2;0;false;false;63;95;191;;;
                                  -162340;1;0;false;false;;;;;;
                                  -162341;3;0;false;false;63;95;191;;;
                                  -162344;1;0;false;false;;;;;;
                                  -162345;8;0;false;false;63;95;191;;;
                                  -162353;1;0;false;false;;;;;;
                                  -162354;3;0;false;false;63;95;191;;;
                                  -162357;1;0;false;false;;;;;;
                                  -162358;4;0;false;false;63;95;191;;;
                                  -162362;1;0;false;false;;;;;;
                                  -162363;8;0;false;false;63;95;191;;;
                                  -162371;5;0;false;false;127;127;159;;;
                                  -162376;3;0;false;false;;;;;;
                                  -162379;1;0;false;false;63;95;191;;;
                                  -162380;4;0;false;false;;;;;;
                                  -162384;4;0;false;false;127;127;159;;;
                                  -162388;27;0;false;false;63;95;191;;;
                                  -162415;1;0;false;false;;;;;;
                                  -162416;1;0;false;false;127;127;159;;;
                                  -162417;1;0;false;false;;;;;;
                                  -162418;2;0;false;false;63;95;191;;;
                                  -162420;1;0;false;false;;;;;;
                                  -162421;3;0;false;false;63;95;191;;;
                                  -162424;1;0;false;false;;;;;;
                                  -162425;6;0;false;false;63;95;191;;;
                                  -162431;1;0;false;false;;;;;;
                                  -162432;4;0;false;false;63;95;191;;;
                                  -162436;1;0;false;false;;;;;;
                                  -162437;3;0;false;false;63;95;191;;;
                                  -162440;1;0;false;false;;;;;;
                                  -162441;6;0;false;false;63;95;191;;;
                                  -162447;1;0;false;false;;;;;;
                                  -162448;4;0;false;false;63;95;191;;;
                                  -162452;1;0;false;false;;;;;;
                                  -162453;7;0;false;false;63;95;191;;;
                                  -162460;1;0;false;false;;;;;;
                                  -162461;3;0;false;false;63;95;191;;;
                                  -162464;1;0;false;false;;;;;;
                                  -162465;8;0;false;false;63;95;191;;;
                                  -162473;5;0;false;false;127;127;159;;;
                                  -162478;3;0;false;false;;;;;;
                                  -162481;1;0;false;false;63;95;191;;;
                                  -162482;1;0;false;false;;;;;;
                                  -162483;5;0;false;false;127;127;159;;;
                                  -162488;3;0;false;false;;;;;;
                                  -162491;1;0;false;false;63;95;191;;;
                                  -162492;1;0;false;false;;;;;;
                                  -162493;11;1;false;false;127;159;191;;;
                                  -162504;24;0;false;false;63;95;191;;;
                                  -162528;1;0;false;false;;;;;;
                                  -162529;4;0;false;false;127;127;159;;;
                                  -162533;3;0;false;false;;;;;;
                                  -162536;1;0;false;false;63;95;191;;;
                                  -162537;4;0;false;false;;;;;;
                                  -162541;4;0;false;false;127;127;159;;;
                                  -162545;19;0;false;false;63;95;191;;;
                                  -162564;1;0;false;false;;;;;;
                                  -162565;4;0;false;false;63;95;191;;;
                                  -162569;1;0;false;false;;;;;;
                                  -162570;6;0;false;false;63;95;191;;;
                                  -162576;1;0;false;false;;;;;;
                                  -162577;2;0;false;false;63;95;191;;;
                                  -162579;1;0;false;false;;;;;;
                                  -162580;4;0;false;false;63;95;191;;;
                                  -162584;5;0;false;false;127;127;159;;;
                                  -162589;3;0;false;false;;;;;;
                                  -162592;1;0;false;false;63;95;191;;;
                                  -162593;1;0;false;false;;;;;;
                                  -162594;5;0;false;false;127;127;159;;;
                                  -162599;3;0;false;false;;;;;;
                                  -162602;2;0;false;false;63;95;191;;;
                                  -162604;2;0;false;false;;;;;;
                                  -162606;6;1;false;false;127;0;85;;;
                                  -162612;1;0;false;false;;;;;;
                                  -162613;4;1;false;false;127;0;85;;;
                                  -162617;1;0;false;false;;;;;;
                                  -162618;13;0;false;false;0;0;0;;;
                                  -162631;1;0;false;false;;;;;;
                                  -162632;7;0;false;false;0;0;0;;;
                                  -162639;1;0;false;false;;;;;;
                                  -162640;1;0;false;false;0;0;0;;;
                                  -162641;3;0;false;false;;;;;;
                                  -162644;14;0;false;false;0;0;0;;;
                                  -162658;3;0;false;false;;;;;;
                                  -162661;2;1;false;false;127;0;85;;;
                                  -162663;1;0;false;false;;;;;;
                                  -162664;7;0;false;false;0;0;0;;;
                                  -162671;1;0;false;false;;;;;;
                                  -162672;2;0;false;false;0;0;0;;;
                                  -162674;1;0;false;false;;;;;;
                                  -162675;4;1;false;false;127;0;85;;;
                                  -162679;1;0;false;false;0;0;0;;;
                                  -162680;1;0;false;false;;;;;;
                                  -162681;1;0;false;false;0;0;0;;;
                                  -162682;4;0;false;false;;;;;;
                                  -162686;35;0;false;false;0;0;0;;;
                                  -162721;3;0;false;false;;;;;;
                                  -162724;1;0;false;false;0;0;0;;;
                                  -162725;3;0;false;false;;;;;;
                                  -162728;5;0;false;false;0;0;0;;;
                                  -162733;1;0;false;false;;;;;;
                                  -162734;3;0;false;false;0;0;0;;;
                                  -162737;1;0;false;false;;;;;;
                                  -162738;1;0;false;false;0;0;0;;;
                                  -162739;1;0;false;false;;;;;;
                                  -162740;20;0;false;false;0;0;0;;;
                                  -162760;3;0;false;false;;;;;;
                                  -162763;23;0;false;false;0;0;0;;;
                                  -162786;1;0;false;false;;;;;;
                                  -162787;6;0;false;false;0;0;0;;;
                                  -162793;1;0;false;false;;;;;;
                                  -162794;8;0;false;false;0;0;0;;;
                                  -162802;2;0;false;false;;;;;;
                                  -162804;1;0;false;false;0;0;0;;;
                                  -162805;2;0;false;false;;;;;;
                                  -162807;3;0;false;false;63;95;191;;;
                                  -162810;3;0;false;false;;;;;;
                                  -162813;1;0;false;false;63;95;191;;;
                                  -162814;1;0;false;false;;;;;;
                                  -162815;7;0;false;false;63;95;191;;;
                                  -162822;1;0;false;false;;;;;;
                                  -162823;7;0;false;false;63;95;191;;;
                                  -162830;1;0;false;false;;;;;;
                                  -162831;6;0;false;false;63;95;191;;;
                                  -162837;1;0;false;false;;;;;;
                                  -162838;9;0;false;false;63;95;191;;;
                                  -162847;1;0;false;false;;;;;;
                                  -162848;3;0;false;false;63;95;191;;;
                                  -162851;1;0;false;false;;;;;;
                                  -162852;3;0;false;false;63;95;191;;;
                                  -162855;1;0;false;false;;;;;;
                                  -162856;3;0;false;false;63;95;191;;;
                                  -162859;1;0;false;false;;;;;;
                                  -162860;7;0;false;false;63;95;191;;;
                                  -162867;1;0;false;false;;;;;;
                                  -162868;7;0;false;false;63;95;191;;;
                                  -162875;1;0;false;false;;;;;;
                                  -162876;6;0;false;false;63;95;191;;;
                                  -162882;3;0;false;false;;;;;;
                                  -162885;2;0;false;false;63;95;191;;;
                                  -162887;2;0;false;false;;;;;;
                                  -162889;4;1;false;false;127;0;85;;;
                                  -162893;1;0;false;false;;;;;;
                                  -162894;23;0;false;false;0;0;0;;;
                                  -162917;1;0;false;false;;;;;;
                                  -162918;1;0;false;false;0;0;0;;;
                                  -162919;3;0;false;false;;;;;;
                                  -162922;18;0;false;false;0;0;0;;;
                                  -162940;1;0;false;false;;;;;;
                                  -162941;1;0;false;false;0;0;0;;;
                                  -162942;1;0;false;false;;;;;;
                                  -162943;3;1;false;false;127;0;85;;;
                                  -162946;1;0;false;false;;;;;;
                                  -162947;20;0;false;false;0;0;0;;;
                                  -162967;1;0;false;false;;;;;;
                                  -162968;1;0;false;false;0;0;0;;;
                                  -162969;4;0;false;false;;;;;;
                                  -162973;6;1;false;false;127;0;85;;;
                                  -162979;1;0;false;false;;;;;;
                                  -162980;4;1;false;false;127;0;85;;;
                                  -162984;1;0;false;false;;;;;;
                                  -162985;30;0;false;false;0;0;0;;;
                                  -163015;1;0;false;false;;;;;;
                                  -163016;6;0;false;false;0;0;0;;;
                                  -163022;1;0;false;false;;;;;;
                                  -163023;1;0;false;false;0;0;0;;;
                                  -163024;5;0;false;false;;;;;;
                                  -163029;26;0;false;false;0;0;0;;;
                                  -163055;4;0;false;false;;;;;;
                                  -163059;1;0;false;false;0;0;0;;;
                                  -163060;4;0;false;false;;;;;;
                                  -163064;6;1;false;false;127;0;85;;;
                                  -163070;1;0;false;false;;;;;;
                                  -163071;4;1;false;false;127;0;85;;;
                                  -163075;1;0;false;false;;;;;;
                                  -163076;28;0;false;false;0;0;0;;;
                                  -163104;1;0;false;false;;;;;;
                                  -163105;6;0;false;false;0;0;0;;;
                                  -163111;1;0;false;false;;;;;;
                                  -163112;1;0;false;false;0;0;0;;;
                                  -163113;5;0;false;false;;;;;;
                                  -163118;25;0;false;false;0;0;0;;;
                                  -163143;4;0;false;false;;;;;;
                                  -163147;1;0;false;false;0;0;0;;;
                                  -163148;4;0;false;false;;;;;;
                                  -163152;6;1;false;false;127;0;85;;;
                                  -163158;1;0;false;false;;;;;;
                                  -163159;4;1;false;false;127;0;85;;;
                                  -163163;1;0;false;false;;;;;;
                                  -163164;24;0;false;false;0;0;0;;;
                                  -163188;1;0;false;false;;;;;;
                                  -163189;6;0;false;false;0;0;0;;;
                                  -163195;1;0;false;false;;;;;;
                                  -163196;1;0;false;false;0;0;0;;;
                                  -163197;5;0;false;false;;;;;;
                                  -163202;21;0;false;false;0;0;0;;;
                                  -163223;4;0;false;false;;;;;;
                                  -163227;1;0;false;false;0;0;0;;;
                                  -163228;3;0;false;false;;;;;;
                                  -163231;2;0;false;false;0;0;0;;;
                                  -163233;3;0;false;false;;;;;;
                                  -163236;14;0;false;false;0;0;0;;;
                                  -163250;1;0;false;false;;;;;;
                                  -163251;1;0;false;false;0;0;0;;;
                                  -163252;1;0;false;false;;;;;;
                                  -163253;7;0;false;false;0;0;0;;;
                                  -163260;1;0;false;false;;;;;;
                                  -163261;1;0;false;false;0;0;0;;;
                                  -163262;1;0;false;false;;;;;;
                                  -163263;3;1;false;false;127;0;85;;;
                                  -163266;1;0;false;false;;;;;;
                                  -163267;17;0;false;false;0;0;0;;;
                                  -163284;3;0;false;false;;;;;;
                                  -163287;50;0;false;false;0;0;0;;;
                                  -163337;2;0;false;false;;;;;;
                                  -163339;1;0;false;false;0;0;0;;;
                                  -163340;2;0;false;false;;;;;;
                                  -163342;3;0;false;false;63;95;191;;;
                                  -163345;3;0;false;false;;;;;;
                                  -163348;1;0;false;false;63;95;191;;;
                                  -163349;1;0;false;false;;;;;;
                                  -163350;7;0;false;false;63;95;191;;;
                                  -163357;1;0;false;false;;;;;;
                                  -163358;1;0;false;false;63;95;191;;;
                                  -163359;1;0;false;false;;;;;;
                                  -163360;7;0;false;false;63;95;191;;;
                                  -163367;1;0;false;false;;;;;;
                                  -163368;4;0;false;false;63;95;191;;;
                                  -163372;1;0;false;false;;;;;;
                                  -163373;5;0;false;false;63;95;191;;;
                                  -163378;1;0;false;false;;;;;;
                                  -163379;9;0;false;false;63;95;191;;;
                                  -163388;3;0;false;false;;;;;;
                                  -163391;1;0;false;false;63;95;191;;;
                                  -163392;1;0;false;false;;;;;;
                                  -163393;4;0;false;false;63;95;191;;;
                                  -163397;1;0;false;false;;;;;;
                                  -163398;2;0;false;false;63;95;191;;;
                                  -163400;1;0;false;false;;;;;;
                                  -163401;5;0;false;false;63;95;191;;;
                                  -163406;1;0;false;false;;;;;;
                                  -163407;4;0;false;false;63;95;191;;;
                                  -163411;1;0;false;false;;;;;;
                                  -163412;10;0;false;false;63;95;191;;;
                                  -163422;1;0;false;false;;;;;;
                                  -163423;6;0;false;false;63;95;191;;;
                                  -163429;1;0;false;false;;;;;;
                                  -163430;3;0;false;false;63;95;191;;;
                                  -163433;1;0;false;false;;;;;;
                                  -163434;7;0;false;false;63;95;191;;;
                                  -163441;3;0;false;false;;;;;;
                                  -163444;1;0;false;false;63;95;191;;;
                                  -163445;1;0;false;false;;;;;;
                                  -163446;7;0;false;false;63;95;191;;;
                                  -163453;1;0;false;false;;;;;;
                                  -163454;4;0;false;false;63;95;191;;;
                                  -163458;1;0;false;false;;;;;;
                                  -163459;3;0;false;false;63;95;191;;;
                                  -163462;1;0;false;false;;;;;;
                                  -163463;4;0;false;false;63;95;191;;;
                                  -163467;1;0;false;false;;;;;;
                                  -163468;4;0;false;false;63;95;191;;;
                                  -163472;1;0;false;false;;;;;;
                                  -163473;1;0;false;false;63;95;191;;;
                                  -163474;1;0;false;false;;;;;;
                                  -163475;18;0;false;false;63;95;191;;;
                                  -163493;3;0;false;false;;;;;;
                                  -163496;1;0;false;false;63;95;191;;;
                                  -163497;1;0;false;false;;;;;;
                                  -163498;3;0;false;false;127;127;159;;;
                                  -163501;3;0;false;false;;;;;;
                                  -163504;1;0;false;false;63;95;191;;;
                                  -163505;3;0;false;false;;;;;;
                                  -163508;1;0;false;false;63;95;191;;;
                                  -163509;1;0;false;false;;;;;;
                                  -163510;5;1;false;false;127;159;191;;;
                                  -163515;21;0;false;false;63;95;191;;;
                                  -163536;3;0;false;false;;;;;;
                                  -163539;2;0;false;false;63;95;191;;;
                                  -163541;2;0;false;false;;;;;;
                                  -163543;4;1;false;false;127;0;85;;;
                                  -163547;1;0;false;false;;;;;;
                                  -163548;26;0;false;false;0;0;0;;;
                                  -163574;1;0;false;false;;;;;;
                                  -163575;1;0;false;false;0;0;0;;;
                                  -163576;3;0;false;false;;;;;;
                                  -163579;17;0;false;false;0;0;0;;;
                                  -163596;1;0;false;false;;;;;;
                                  -163597;1;0;false;false;0;0;0;;;
                                  -163598;1;0;false;false;;;;;;
                                  -163599;3;1;false;false;127;0;85;;;
                                  -163602;1;0;false;false;;;;;;
                                  -163603;34;0;false;false;0;0;0;;;
                                  -163637;3;0;false;false;;;;;;
                                  -163640;18;0;false;false;0;0;0;;;
                                  -163658;1;0;false;false;;;;;;
                                  -163659;13;0;false;false;0;0;0;;;
                                  -163672;1;0;false;false;;;;;;
                                  -163673;1;0;false;false;0;0;0;;;
                                  -163674;1;0;false;false;;;;;;
                                  -163675;3;1;false;false;127;0;85;;;
                                  -163678;1;0;false;false;;;;;;
                                  -163679;38;0;false;false;0;0;0;;;
                                  -163717;3;0;false;false;;;;;;
                                  -163720;2;1;false;false;127;0;85;;;
                                  -163722;1;0;false;false;;;;;;
                                  -163723;16;0;false;false;0;0;0;;;
                                  -163739;1;0;false;false;;;;;;
                                  -163740;1;0;false;false;0;0;0;;;
                                  -163741;4;0;false;false;;;;;;
                                  -163745;25;0;false;false;0;0;0;;;
                                  -163770;1;0;false;false;;;;;;
                                  -163771;15;0;false;false;0;0;0;;;
                                  -163786;3;0;false;false;;;;;;
                                  -163789;1;0;false;false;0;0;0;;;
                                  -163790;3;0;false;false;;;;;;
                                  -163793;2;1;false;false;127;0;85;;;
                                  -163795;1;0;false;false;;;;;;
                                  -163796;21;0;false;false;0;0;0;;;
                                  -163817;1;0;false;false;;;;;;
                                  -163818;1;0;false;false;0;0;0;;;
                                  -163819;4;0;false;false;;;;;;
                                  -163823;30;0;false;false;0;0;0;;;
                                  -163853;1;0;false;false;;;;;;
                                  -163854;15;0;false;false;0;0;0;;;
                                  -163869;3;0;false;false;;;;;;
                                  -163872;1;0;false;false;0;0;0;;;
                                  -163873;2;0;false;false;;;;;;
                                  -163875;1;0;false;false;0;0;0;;;
                                  -163876;2;0;false;false;;;;;;
                                  -163878;3;0;false;false;63;95;191;;;
                                  -163881;4;0;false;false;;;;;;
                                  -163885;1;0;false;false;63;95;191;;;
                                  -163886;1;0;false;false;;;;;;
                                  -163887;4;0;false;false;63;95;191;;;
                                  -163891;1;0;false;false;;;;;;
                                  -163892;5;0;false;false;63;95;191;;;
                                  -163897;1;0;false;false;;;;;;
                                  -163898;9;0;false;false;63;95;191;;;
                                  -163907;3;0;false;false;;;;;;
                                  -163910;2;0;false;false;63;95;191;;;
                                  -163912;2;0;false;false;;;;;;
                                  -163914;4;1;false;false;127;0;85;;;
                                  -163918;1;0;false;false;;;;;;
                                  -163919;18;0;false;false;0;0;0;;;
                                  -163937;1;0;false;false;;;;;;
                                  -163938;1;0;false;false;0;0;0;;;
                                  -163939;3;0;false;false;;;;;;
                                  -163942;9;0;false;false;0;0;0;;;
                                  -163951;1;0;false;false;;;;;;
                                  -163952;11;0;false;false;0;0;0;;;
                                  -163963;1;0;false;false;;;;;;
                                  -163964;1;0;false;false;0;0;0;;;
                                  -163965;1;0;false;false;;;;;;
                                  -163966;17;0;false;false;0;0;0;;;
                                  -163983;3;0;false;false;;;;;;
                                  -163986;9;0;false;false;0;0;0;;;
                                  -163995;1;0;false;false;;;;;;
                                  -163996;13;0;false;false;0;0;0;;;
                                  -164009;1;0;false;false;;;;;;
                                  -164010;1;0;false;false;0;0;0;;;
                                  -164011;1;0;false;false;;;;;;
                                  -164012;19;0;false;false;0;0;0;;;
                                  -164031;6;0;false;false;;;;;;
                                  -164037;8;0;false;false;0;0;0;;;
                                  -164045;1;0;false;false;;;;;;
                                  -164046;1;0;false;false;0;0;0;;;
                                  -164047;1;0;false;false;;;;;;
                                  -164048;3;1;false;false;127;0;85;;;
                                  -164051;1;0;false;false;;;;;;
                                  -164052;10;0;false;false;0;0;0;;;
                                  -164062;1;0;false;false;;;;;;
                                  -164063;1;0;false;false;0;0;0;;;
                                  -164064;4;0;false;false;;;;;;
                                  -164068;6;1;false;false;127;0;85;;;
                                  -164074;1;0;false;false;;;;;;
                                  -164075;4;1;false;false;127;0;85;;;
                                  -164079;1;0;false;false;;;;;;
                                  -164080;17;0;false;false;0;0;0;;;
                                  -164097;1;0;false;false;;;;;;
                                  -164098;6;0;false;false;0;0;0;;;
                                  -164104;1;0;false;false;;;;;;
                                  -164105;1;0;false;false;0;0;0;;;
                                  -164106;5;0;false;false;;;;;;
                                  -164111;6;1;false;false;127;0;85;;;
                                  -164117;1;0;false;false;;;;;;
                                  -164118;12;0;false;false;0;0;0;;;
                                  -164130;1;0;false;false;;;;;;
                                  -164131;1;0;false;false;0;0;0;;;
                                  -164132;6;0;false;false;;;;;;
                                  -164138;4;1;false;false;127;0;85;;;
                                  -164142;1;0;false;false;;;;;;
                                  -164143;12;0;false;false;0;0;0;;;
                                  -164155;1;0;false;false;;;;;;
                                  -164156;21;0;false;false;0;0;0;;;
                                  -164177;1;0;false;false;;;;;;
                                  -164178;5;1;false;false;127;0;85;;;
                                  -164183;1;0;false;false;0;0;0;;;
                                  -164184;6;0;false;false;;;;;;
                                  -164190;4;1;false;false;127;0;85;;;
                                  -164194;1;0;false;false;;;;;;
                                  -164195;12;0;false;false;0;0;0;;;
                                  -164207;1;0;false;false;;;;;;
                                  -164208;21;0;false;false;0;0;0;;;
                                  -164229;1;0;false;false;;;;;;
                                  -164230;5;1;false;false;127;0;85;;;
                                  -164235;1;0;false;false;0;0;0;;;
                                  -164236;6;0;false;false;;;;;;
                                  -164242;4;1;false;false;127;0;85;;;
                                  -164246;1;0;false;false;;;;;;
                                  -164247;10;0;false;false;0;0;0;;;
                                  -164257;1;0;false;false;;;;;;
                                  -164258;19;0;false;false;0;0;0;;;
                                  -164277;1;0;false;false;;;;;;
                                  -164278;5;1;false;false;127;0;85;;;
                                  -164283;1;0;false;false;0;0;0;;;
                                  -164284;6;0;false;false;;;;;;
                                  -164290;4;1;false;false;127;0;85;;;
                                  -164294;1;0;false;false;;;;;;
                                  -164295;14;0;false;false;0;0;0;;;
                                  -164309;1;0;false;false;;;;;;
                                  -164310;23;0;false;false;0;0;0;;;
                                  -164333;1;0;false;false;;;;;;
                                  -164334;5;1;false;false;127;0;85;;;
                                  -164339;1;0;false;false;0;0;0;;;
                                  -164340;6;0;false;false;;;;;;
                                  -164346;4;1;false;false;127;0;85;;;
                                  -164350;1;0;false;false;;;;;;
                                  -164351;12;0;false;false;0;0;0;;;
                                  -164363;1;0;false;false;;;;;;
                                  -164364;21;0;false;false;0;0;0;;;
                                  -164385;1;0;false;false;;;;;;
                                  -164386;5;1;false;false;127;0;85;;;
                                  -164391;1;0;false;false;0;0;0;;;
                                  -164392;6;0;false;false;;;;;;
                                  -164398;4;1;false;false;127;0;85;;;
                                  -164402;1;0;false;false;;;;;;
                                  -164403;21;0;false;false;0;0;0;;;
                                  -164424;1;0;false;false;;;;;;
                                  -164425;30;0;false;false;0;0;0;;;
                                  -164455;1;0;false;false;;;;;;
                                  -164456;5;1;false;false;127;0;85;;;
                                  -164461;1;0;false;false;0;0;0;;;
                                  -164462;6;0;false;false;;;;;;
                                  -164468;4;1;false;false;127;0;85;;;
                                  -164472;1;0;false;false;;;;;;
                                  -164473;14;0;false;false;0;0;0;;;
                                  -164487;1;0;false;false;;;;;;
                                  -164488;23;0;false;false;0;0;0;;;
                                  -164511;1;0;false;false;;;;;;
                                  -164512;5;1;false;false;127;0;85;;;
                                  -164517;1;0;false;false;0;0;0;;;
                                  -164518;6;0;false;false;;;;;;
                                  -164524;4;1;false;false;127;0;85;;;
                                  -164528;1;0;false;false;;;;;;
                                  -164529;10;0;false;false;0;0;0;;;
                                  -164539;1;0;false;false;;;;;;
                                  -164540;19;0;false;false;0;0;0;;;
                                  -164559;1;0;false;false;;;;;;
                                  -164560;5;1;false;false;127;0;85;;;
                                  -164565;1;0;false;false;0;0;0;;;
                                  -164566;6;0;false;false;;;;;;
                                  -164572;4;1;false;false;127;0;85;;;
                                  -164576;1;0;false;false;;;;;;
                                  -164577;11;0;false;false;0;0;0;;;
                                  -164588;1;0;false;false;;;;;;
                                  -164589;20;0;false;false;0;0;0;;;
                                  -164609;1;0;false;false;;;;;;
                                  -164610;5;1;false;false;127;0;85;;;
                                  -164615;1;0;false;false;0;0;0;;;
                                  -164616;6;0;false;false;;;;;;
                                  -164622;4;1;false;false;127;0;85;;;
                                  -164626;1;0;false;false;;;;;;
                                  -164627;13;0;false;false;0;0;0;;;
                                  -164640;1;0;false;false;;;;;;
                                  -164641;22;0;false;false;0;0;0;;;
                                  -164663;1;0;false;false;;;;;;
                                  -164664;5;1;false;false;127;0;85;;;
                                  -164669;1;0;false;false;0;0;0;;;
                                  -164670;5;0;false;false;;;;;;
                                  -164675;1;0;false;false;0;0;0;;;
                                  -164676;4;0;false;false;;;;;;
                                  -164680;1;0;false;false;0;0;0;;;
                                  -164681;5;0;false;false;;;;;;
                                  -164686;2;0;false;false;0;0;0;;;
                                  -164688;3;0;false;false;;;;;;
                                  -164691;24;0;false;false;0;0;0;;;
                                  -164715;1;0;false;false;;;;;;
                                  -164716;10;0;false;false;0;0;0;;;
                                  -164726;3;0;false;false;;;;;;
                                  -164729;24;0;false;false;0;0;0;;;
                                  -164753;1;0;false;false;;;;;;
                                  -164754;10;0;false;false;0;0;0;;;
                                  -164764;3;0;false;false;;;;;;
                                  -164767;22;0;false;false;0;0;0;;;
                                  -164789;1;0;false;false;;;;;;
                                  -164790;10;0;false;false;0;0;0;;;
                                  -164800;3;0;false;false;;;;;;
                                  -164803;26;0;false;false;0;0;0;;;
                                  -164829;1;0;false;false;;;;;;
                                  -164830;10;0;false;false;0;0;0;;;
                                  -164840;3;0;false;false;;;;;;
                                  -164843;24;0;false;false;0;0;0;;;
                                  -164867;1;0;false;false;;;;;;
                                  -164868;10;0;false;false;0;0;0;;;
                                  -164878;3;0;false;false;;;;;;
                                  -164881;33;0;false;false;0;0;0;;;
                                  -164914;1;0;false;false;;;;;;
                                  -164915;10;0;false;false;0;0;0;;;
                                  -164925;3;0;false;false;;;;;;
                                  -164928;26;0;false;false;0;0;0;;;
                                  -164954;1;0;false;false;;;;;;
                                  -164955;10;0;false;false;0;0;0;;;
                                  -164965;3;0;false;false;;;;;;
                                  -164968;22;0;false;false;0;0;0;;;
                                  -164990;1;0;false;false;;;;;;
                                  -164991;10;0;false;false;0;0;0;;;
                                  -165001;3;0;false;false;;;;;;
                                  -165004;23;0;false;false;0;0;0;;;
                                  -165027;1;0;false;false;;;;;;
                                  -165028;10;0;false;false;0;0;0;;;
                                  -165038;3;0;false;false;;;;;;
                                  -165041;25;0;false;false;0;0;0;;;
                                  -165066;1;0;false;false;;;;;;
                                  -165067;10;0;false;false;0;0;0;;;
                                  -165077;3;0;false;false;;;;;;
                                  -165080;2;1;false;false;127;0;85;;;
                                  -165082;1;0;false;false;;;;;;
                                  -165083;12;0;false;false;0;0;0;;;
                                  -165095;1;0;false;false;;;;;;
                                  -165096;2;0;false;false;0;0;0;;;
                                  -165098;1;0;false;false;;;;;;
                                  -165099;4;1;false;false;127;0;85;;;
                                  -165103;1;0;false;false;0;0;0;;;
                                  -165104;1;0;false;false;;;;;;
                                  -165105;1;0;false;false;0;0;0;;;
                                  -165106;4;0;false;false;;;;;;
                                  -165110;38;0;false;false;0;0;0;;;
                                  -165148;1;0;false;false;;;;;;
                                  -165149;3;1;false;false;127;0;85;;;
                                  -165152;1;0;false;false;;;;;;
                                  -165153;10;0;false;false;0;0;0;;;
                                  -165163;1;0;false;false;;;;;;
                                  -165164;1;0;false;false;0;0;0;;;
                                  -165165;5;0;false;false;;;;;;
                                  -165170;6;1;false;false;127;0;85;;;
                                  -165176;1;0;false;false;;;;;;
                                  -165177;4;1;false;false;127;0;85;;;
                                  -165181;1;0;false;false;;;;;;
                                  -165182;17;0;false;false;0;0;0;;;
                                  -165199;1;0;false;false;;;;;;
                                  -165200;6;0;false;false;0;0;0;;;
                                  -165206;1;0;false;false;;;;;;
                                  -165207;1;0;false;false;0;0;0;;;
                                  -165208;6;0;false;false;;;;;;
                                  -165214;28;0;false;false;0;0;0;;;
                                  -165242;5;0;false;false;;;;;;
                                  -165247;1;0;false;false;0;0;0;;;
                                  -165248;4;0;false;false;;;;;;
                                  -165252;3;0;false;false;0;0;0;;;
                                  -165255;3;0;false;false;;;;;;
                                  -165258;1;0;false;false;0;0;0;;;
                                  -165259;3;0;false;false;;;;;;
                                  -165262;2;1;false;false;127;0;85;;;
                                  -165264;1;0;false;false;;;;;;
                                  -165265;14;0;false;false;0;0;0;;;
                                  -165279;1;0;false;false;;;;;;
                                  -165280;2;0;false;false;0;0;0;;;
                                  -165282;1;0;false;false;;;;;;
                                  -165283;4;1;false;false;127;0;85;;;
                                  -165287;1;0;false;false;0;0;0;;;
                                  -165288;1;0;false;false;;;;;;
                                  -165289;1;0;false;false;0;0;0;;;
                                  -165290;4;0;false;false;;;;;;
                                  -165294;40;0;false;false;0;0;0;;;
                                  -165334;1;0;false;false;;;;;;
                                  -165335;3;1;false;false;127;0;85;;;
                                  -165338;1;0;false;false;;;;;;
                                  -165339;10;0;false;false;0;0;0;;;
                                  -165349;1;0;false;false;;;;;;
                                  -165350;1;0;false;false;0;0;0;;;
                                  -165351;5;0;false;false;;;;;;
                                  -165356;6;1;false;false;127;0;85;;;
                                  -165362;1;0;false;false;;;;;;
                                  -165363;4;1;false;false;127;0;85;;;
                                  -165367;1;0;false;false;;;;;;
                                  -165368;17;0;false;false;0;0;0;;;
                                  -165385;1;0;false;false;;;;;;
                                  -165386;6;0;false;false;0;0;0;;;
                                  -165392;1;0;false;false;;;;;;
                                  -165393;1;0;false;false;0;0;0;;;
                                  -165394;6;0;false;false;;;;;;
                                  -165400;30;0;false;false;0;0;0;;;
                                  -165430;5;0;false;false;;;;;;
                                  -165435;1;0;false;false;0;0;0;;;
                                  -165436;4;0;false;false;;;;;;
                                  -165440;3;0;false;false;0;0;0;;;
                                  -165443;3;0;false;false;;;;;;
                                  -165446;1;0;false;false;0;0;0;;;
                                  -165447;2;0;false;false;;;;;;
                                  -165449;1;0;false;false;0;0;0;;;
                                  -165450;2;0;false;false;;;;;;
                                  -165452;17;0;false;false;0;0;0;;;
                                  -165469;1;0;false;false;;;;;;
                                  -165470;20;0;false;false;0;0;0;;;
                                  -165490;1;0;false;false;;;;;;
                                  -165491;1;0;false;false;0;0;0;;;
                                  -165492;3;0;false;false;;;;;;
                                  -165495;6;1;false;false;127;0;85;;;
                                  -165501;1;0;false;false;;;;;;
                                  -165502;8;0;false;false;0;0;0;;;
                                  -165510;2;0;false;false;;;;;;
                                  -165512;1;0;false;false;0;0;0;;;
                                  -165513;2;0;false;false;;;;;;
                                  -165515;3;1;false;false;127;0;85;;;
                                  -165518;1;0;false;false;;;;;;
                                  -165519;28;0;false;false;0;0;0;;;
                                  -165547;1;0;false;false;;;;;;
                                  -165548;1;0;false;false;0;0;0;;;
                                  -165549;3;0;false;false;;;;;;
                                  -165552;6;1;false;false;127;0;85;;;
                                  -165558;1;0;false;false;;;;;;
                                  -165559;23;0;false;false;0;0;0;;;
                                  -165582;2;0;false;false;;;;;;
                                  -165584;1;0;false;false;0;0;0;;;
                                  -165585;2;0;false;false;;;;;;
                                  -165587;5;0;false;false;0;0;0;;;
                                  -165592;1;0;false;false;;;;;;
                                  -165593;22;0;false;false;0;0;0;;;
                                  -165615;1;0;false;false;;;;;;
                                  -165616;1;0;false;false;0;0;0;;;
                                  -165617;3;0;false;false;;;;;;
                                  -165620;6;1;false;false;127;0;85;;;
                                  -165626;1;0;false;false;;;;;;
                                  -165627;10;0;false;false;0;0;0;;;
                                  -165637;2;0;false;false;;;;;;
                                  -165639;1;0;false;false;0;0;0;;;
                                  -165640;2;0;false;false;;;;;;
                                  -165642;7;1;false;false;127;0;85;;;
                                  -165649;1;0;false;false;;;;;;
                                  -165650;21;0;false;false;0;0;0;;;
                                  -165671;1;0;false;false;;;;;;
                                  -165672;1;0;false;false;0;0;0;;;
                                  -165673;3;0;false;false;;;;;;
                                  -165676;6;1;false;false;127;0;85;;;
                                  -165682;1;0;false;false;;;;;;
                                  -165683;9;0;false;false;0;0;0;;;
                                  -165692;2;0;false;false;;;;;;
                                  -165694;1;0;false;false;0;0;0;;;
                                  -165695;2;0;false;false;;;;;;
                                  -165697;3;0;false;false;63;95;191;;;
                                  -165700;3;0;false;false;;;;;;
                                  -165703;1;0;false;false;63;95;191;;;
                                  -165704;1;0;false;false;;;;;;
                                  -165705;4;0;false;false;63;95;191;;;
                                  -165709;1;0;false;false;;;;;;
                                  -165710;2;0;false;false;63;95;191;;;
                                  -165712;1;0;false;false;;;;;;
                                  -165713;13;0;false;false;63;95;191;;;
                                  -165726;1;0;false;false;;;;;;
                                  -165727;2;0;false;false;63;95;191;;;
                                  -165729;1;0;false;false;;;;;;
                                  -165730;6;0;false;false;63;95;191;;;
                                  -165736;1;0;false;false;;;;;;
                                  -165737;17;0;false;false;63;95;191;;;
                                  -165754;1;0;false;false;;;;;;
                                  -165755;5;0;false;false;63;95;191;;;
                                  -165760;1;0;false;false;;;;;;
                                  -165761;4;0;false;false;63;95;191;;;
                                  -165765;3;0;false;false;;;;;;
                                  -165768;1;0;false;false;63;95;191;;;
                                  -165769;1;0;false;false;;;;;;
                                  -165770;2;0;false;false;63;95;191;;;
                                  -165772;1;0;false;false;;;;;;
                                  -165773;8;0;false;false;63;95;191;;;
                                  -165781;1;0;false;false;;;;;;
                                  -165782;5;0;false;false;63;95;191;;;
                                  -165787;1;0;false;false;;;;;;
                                  -165788;6;0;false;false;63;95;191;;;
                                  -165794;3;0;false;false;;;;;;
                                  -165797;2;0;false;false;63;95;191;;;
                                  -165799;2;0;false;false;;;;;;
                                  -165801;4;1;false;false;127;0;85;;;
                                  -165805;1;0;false;false;;;;;;
                                  -165806;16;0;false;false;0;0;0;;;
                                  -165822;1;0;false;false;;;;;;
                                  -165823;1;0;false;false;0;0;0;;;
                                  -165824;3;0;false;false;;;;;;
                                  -165827;5;1;false;false;127;0;85;;;
                                  -165832;10;0;false;false;0;0;0;;;
                                  -165842;2;0;false;false;;;;;;
                                  -165844;1;0;false;false;0;0;0;;;
                                  -165845;2;0;false;false;;;;;;
                                  -165847;3;0;false;false;63;95;191;;;
                                  -165850;4;0;false;false;;;;;;
                                  -165854;1;0;false;false;63;95;191;;;
                                  -165855;1;0;false;false;;;;;;
                                  -165856;7;0;false;false;63;95;191;;;
                                  -165863;1;0;false;false;;;;;;
                                  -165864;3;0;false;false;63;95;191;;;
                                  -165867;1;0;false;false;;;;;;
                                  -165868;9;0;false;false;63;95;191;;;
                                  -165877;1;0;false;false;;;;;;
                                  -165878;4;0;false;false;63;95;191;;;
                                  -165882;1;0;false;false;;;;;;
                                  -165883;6;0;false;false;63;95;191;;;
                                  -165889;3;0;false;false;;;;;;
                                  -165892;1;0;false;false;63;95;191;;;
                                  -165893;1;0;false;false;;;;;;
                                  -165894;3;0;false;false;127;127;159;;;
                                  -165897;3;0;false;false;;;;;;
                                  -165900;1;0;false;false;63;95;191;;;
                                  -165901;3;0;false;false;;;;;;
                                  -165904;1;0;false;false;63;95;191;;;
                                  -165905;1;0;false;false;;;;;;
                                  -165906;7;1;false;false;127;159;191;;;
                                  -165913;5;0;false;false;63;95;191;;;
                                  -165918;1;0;false;false;;;;;;
                                  -165919;6;0;false;false;63;95;191;;;
                                  -165925;1;0;false;false;;;;;;
                                  -165926;2;0;false;false;63;95;191;;;
                                  -165928;1;0;false;false;;;;;;
                                  -165929;3;0;false;false;63;95;191;;;
                                  -165932;1;0;false;false;;;;;;
                                  -165933;5;0;false;false;63;95;191;;;
                                  -165938;1;0;false;false;;;;;;
                                  -165939;9;0;false;false;63;95;191;;;
                                  -165948;1;0;false;false;;;;;;
                                  -165949;2;0;false;false;63;95;191;;;
                                  -165951;1;0;false;false;;;;;;
                                  -165952;6;0;false;false;63;95;191;;;
                                  -165958;3;0;false;false;;;;;;
                                  -165961;1;0;false;false;63;95;191;;;
                                  -165962;1;0;false;false;;;;;;
                                  -165963;7;1;false;false;127;159;191;;;
                                  -165970;6;0;false;false;63;95;191;;;
                                  -165976;1;0;false;false;;;;;;
                                  -165977;6;0;false;false;63;95;191;;;
                                  -165983;1;0;false;false;;;;;;
                                  -165984;2;0;false;false;63;95;191;;;
                                  -165986;1;0;false;false;;;;;;
                                  -165987;10;0;false;false;63;95;191;;;
                                  -165997;1;0;false;false;;;;;;
                                  -165998;2;0;false;false;63;95;191;;;
                                  -166000;1;0;false;false;;;;;;
                                  -166001;6;0;false;false;63;95;191;;;
                                  -166007;3;0;false;false;;;;;;
                                  -166010;1;0;false;false;63;95;191;;;
                                  -166011;1;0;false;false;;;;;;
                                  -166012;7;1;false;false;127;159;191;;;
                                  -166019;15;0;false;false;63;95;191;;;
                                  -166034;1;0;false;false;;;;;;
                                  -166035;4;0;false;false;63;95;191;;;
                                  -166039;1;0;false;false;;;;;;
                                  -166040;2;0;false;false;63;95;191;;;
                                  -166042;1;0;false;false;;;;;;
                                  -166043;3;0;false;false;63;95;191;;;
                                  -166046;1;0;false;false;;;;;;
                                  -166047;10;0;false;false;63;95;191;;;
                                  -166057;1;0;false;false;;;;;;
                                  -166058;6;0;false;false;63;95;191;;;
                                  -166064;1;0;false;false;;;;;;
                                  -166065;2;0;false;false;63;95;191;;;
                                  -166067;1;0;false;false;;;;;;
                                  -166068;7;0;false;false;63;95;191;;;
                                  -166075;1;0;false;false;;;;;;
                                  -166076;2;0;false;false;63;95;191;;;
                                  -166078;4;0;false;false;;;;;;
                                  -166082;1;0;false;false;63;95;191;;;
                                  -166083;2;0;false;false;;;;;;
                                  -166085;4;0;false;false;63;95;191;;;
                                  -166089;1;0;false;false;;;;;;
                                  -166090;2;0;false;false;63;95;191;;;
                                  -166092;1;0;false;false;;;;;;
                                  -166093;3;0;false;false;63;95;191;;;
                                  -166096;1;0;false;false;;;;;;
                                  -166097;6;0;false;false;63;95;191;;;
                                  -166103;1;0;false;false;;;;;;
                                  -166104;10;0;false;false;63;95;191;;;
                                  -166114;2;0;false;false;;;;;;
                                  -166116;2;0;false;false;63;95;191;;;
                                  -166118;1;0;false;false;;;;;;
                                  -166119;5;0;false;false;63;95;191;;;
                                  -166124;1;0;false;false;;;;;;
                                  -166125;3;0;false;false;63;95;191;;;
                                  -166128;1;0;false;false;;;;;;
                                  -166129;6;0;false;false;63;95;191;;;
                                  -166135;1;0;false;false;;;;;;
                                  -166136;6;0;false;false;63;95;191;;;
                                  -166142;1;0;false;false;;;;;;
                                  -166143;5;0;false;false;63;95;191;;;
                                  -166148;1;0;false;false;;;;;;
                                  -166149;4;0;false;false;63;95;191;;;
                                  -166153;3;0;false;false;;;;;;
                                  -166156;1;0;false;false;63;95;191;;;
                                  -166157;2;0;false;false;;;;;;
                                  -166159;2;0;false;false;63;95;191;;;
                                  -166161;1;0;false;false;;;;;;
                                  -166162;7;0;false;false;63;95;191;;;
                                  -166169;1;0;false;false;;;;;;
                                  -166170;6;0;false;false;63;95;191;;;
                                  -166176;1;0;false;false;;;;;;
                                  -166177;8;0;false;false;63;95;191;;;
                                  -166185;1;0;false;false;;;;;;
                                  -166186;2;0;false;false;63;95;191;;;
                                  -166188;1;0;false;false;;;;;;
                                  -166189;8;0;false;false;63;95;191;;;
                                  -166197;2;0;false;false;;;;;;
                                  -166199;2;0;false;false;63;95;191;;;
                                  -166201;1;0;false;false;;;;;;
                                  -166202;3;0;false;false;63;95;191;;;
                                  -166205;1;0;false;false;;;;;;
                                  -166206;6;0;false;false;63;95;191;;;
                                  -166212;1;0;false;false;;;;;;
                                  -166213;5;0;false;false;63;95;191;;;
                                  -166218;1;0;false;false;;;;;;
                                  -166219;8;0;false;false;63;95;191;;;
                                  -166227;3;0;false;false;;;;;;
                                  -166230;1;0;false;false;63;95;191;;;
                                  -166231;1;0;false;false;;;;;;
                                  -166232;3;0;false;false;63;95;191;;;
                                  -166235;1;0;false;false;;;;;;
                                  -166236;4;0;false;false;63;95;191;;;
                                  -166240;1;0;false;false;;;;;;
                                  -166241;9;0;false;false;63;95;191;;;
                                  -166250;1;0;false;false;;;;;;
                                  -166251;2;0;false;false;63;95;191;;;
                                  -166253;1;0;false;false;;;;;;
                                  -166254;1;0;false;false;63;95;191;;;
                                  -166255;1;0;false;false;;;;;;
                                  -166256;4;0;false;false;63;95;191;;;
                                  -166260;1;0;false;false;;;;;;
                                  -166261;6;0;false;false;63;95;191;;;
                                  -166267;1;0;false;false;;;;;;
                                  -166268;3;0;false;false;63;95;191;;;
                                  -166271;1;0;false;false;;;;;;
                                  -166272;6;0;false;false;63;95;191;;;
                                  -166278;1;0;false;false;;;;;;
                                  -166279;4;0;false;false;63;95;191;;;
                                  -166283;1;0;false;false;;;;;;
                                  -166284;2;0;false;false;63;95;191;;;
                                  -166286;1;0;false;false;;;;;;
                                  -166287;8;0;false;false;63;95;191;;;
                                  -166295;1;0;false;false;;;;;;
                                  -166296;3;0;false;false;63;95;191;;;
                                  -166299;4;0;false;false;;;;;;
                                  -166303;1;0;false;false;63;95;191;;;
                                  -166304;2;0;false;false;;;;;;
                                  -166306;4;0;false;false;63;95;191;;;
                                  -166310;1;0;false;false;;;;;;
                                  -166311;2;0;false;false;63;95;191;;;
                                  -166313;1;0;false;false;;;;;;
                                  -166314;7;0;false;false;63;95;191;;;
                                  -166321;1;0;false;false;;;;;;
                                  -166322;3;0;false;false;63;95;191;;;
                                  -166325;1;0;false;false;;;;;;
                                  -166326;3;0;false;false;63;95;191;;;
                                  -166329;1;0;false;false;;;;;;
                                  -166330;3;0;false;false;63;95;191;;;
                                  -166333;1;0;false;false;;;;;;
                                  -166334;2;0;false;false;63;95;191;;;
                                  -166336;1;0;false;false;;;;;;
                                  -166337;3;0;false;false;63;95;191;;;
                                  -166340;1;0;false;false;;;;;;
                                  -166341;5;0;false;false;63;95;191;;;
                                  -166346;1;0;false;false;;;;;;
                                  -166347;6;0;false;false;63;95;191;;;
                                  -166353;1;0;false;false;;;;;;
                                  -166354;2;0;false;false;63;95;191;;;
                                  -166356;1;0;false;false;;;;;;
                                  -166357;3;0;false;false;63;95;191;;;
                                  -166360;1;0;false;false;;;;;;
                                  -166361;7;0;false;false;63;95;191;;;
                                  -166368;3;0;false;false;;;;;;
                                  -166371;1;0;false;false;63;95;191;;;
                                  -166372;2;0;false;false;;;;;;
                                  -166374;3;0;false;false;63;95;191;;;
                                  -166377;1;0;false;false;;;;;;
                                  -166378;6;0;false;false;63;95;191;;;
                                  -166384;1;0;false;false;;;;;;
                                  -166385;9;0;false;false;63;95;191;;;
                                  -166394;1;0;false;false;;;;;;
                                  -166395;4;0;false;false;63;95;191;;;
                                  -166399;1;0;false;false;;;;;;
                                  -166400;2;0;false;false;63;95;191;;;
                                  -166402;1;0;false;false;;;;;;
                                  -166403;6;0;false;false;63;95;191;;;
                                  -166409;1;0;false;false;;;;;;
                                  -166410;3;0;false;false;63;95;191;;;
                                  -166413;1;0;false;false;;;;;;
                                  -166414;8;0;false;false;63;95;191;;;
                                  -166422;1;0;false;false;;;;;;
                                  -166423;2;0;false;false;63;95;191;;;
                                  -166425;1;0;false;false;;;;;;
                                  -166426;15;0;false;false;63;95;191;;;
                                  -166441;1;0;false;false;;;;;;
                                  -166442;2;0;false;false;63;95;191;;;
                                  -166444;4;0;false;false;;;;;;
                                  -166448;1;0;false;false;63;95;191;;;
                                  -166449;2;0;false;false;;;;;;
                                  -166451;3;0;false;false;63;95;191;;;
                                  -166454;1;0;false;false;;;;;;
                                  -166455;2;0;false;false;63;95;191;;;
                                  -166457;1;0;false;false;;;;;;
                                  -166458;6;0;false;false;63;95;191;;;
                                  -166464;2;0;false;false;;;;;;
                                  -166466;7;0;false;false;63;95;191;;;
                                  -166473;1;0;false;false;;;;;;
                                  -166474;2;0;false;false;63;95;191;;;
                                  -166476;1;0;false;false;;;;;;
                                  -166477;3;0;false;false;63;95;191;;;
                                  -166480;1;0;false;false;;;;;;
                                  -166481;3;0;false;false;63;95;191;;;
                                  -166484;1;0;false;false;;;;;;
                                  -166485;4;0;false;false;63;95;191;;;
                                  -166489;1;0;false;false;;;;;;
                                  -166490;3;0;false;false;63;95;191;;;
                                  -166493;1;0;false;false;;;;;;
                                  -166494;2;0;false;false;63;95;191;;;
                                  -166496;1;0;false;false;;;;;;
                                  -166497;3;0;false;false;63;95;191;;;
                                  -166500;1;0;false;false;;;;;;
                                  -166501;2;0;false;false;63;95;191;;;
                                  -166503;1;0;false;false;;;;;;
                                  -166504;5;0;false;false;63;95;191;;;
                                  -166509;1;0;false;false;;;;;;
                                  -166510;7;0;false;false;63;95;191;;;
                                  -166517;1;0;false;false;;;;;;
                                  -166518;2;0;false;false;63;95;191;;;
                                  -166520;4;0;false;false;;;;;;
                                  -166524;1;0;false;false;63;95;191;;;
                                  -166525;2;0;false;false;;;;;;
                                  -166527;3;0;false;false;63;95;191;;;
                                  -166530;1;0;false;false;;;;;;
                                  -166531;4;0;false;false;63;95;191;;;
                                  -166535;1;0;false;false;;;;;;
                                  -166536;2;0;false;false;63;95;191;;;
                                  -166538;1;0;false;false;;;;;;
                                  -166539;6;0;false;false;63;95;191;;;
                                  -166545;1;0;false;false;;;;;;
                                  -166546;4;0;false;false;63;95;191;;;
                                  -166550;1;0;false;false;;;;;;
                                  -166551;3;0;false;false;63;95;191;;;
                                  -166554;1;0;false;false;;;;;;
                                  -166555;5;0;false;false;63;95;191;;;
                                  -166560;1;0;false;false;;;;;;
                                  -166561;6;0;false;false;63;95;191;;;
                                  -166567;2;0;false;false;;;;;;
                                  -166569;2;0;false;false;63;95;191;;;
                                  -166571;1;0;false;false;;;;;;
                                  -166572;4;0;false;false;63;95;191;;;
                                  -166576;1;0;false;false;;;;;;
                                  -166577;6;0;false;false;63;95;191;;;
                                  -166583;1;0;false;false;;;;;;
                                  -166584;2;0;false;false;63;95;191;;;
                                  -166586;1;0;false;false;;;;;;
                                  -166587;10;0;false;false;63;95;191;;;
                                  -166597;4;0;false;false;;;;;;
                                  -166601;1;0;false;false;63;95;191;;;
                                  -166602;2;0;false;false;;;;;;
                                  -166604;6;0;false;false;63;95;191;;;
                                  -166610;1;0;false;false;;;;;;
                                  -166611;3;0;false;false;63;95;191;;;
                                  -166614;1;0;false;false;;;;;;
                                  -166615;3;0;false;false;63;95;191;;;
                                  -166618;1;0;false;false;;;;;;
                                  -166619;6;0;false;false;63;95;191;;;
                                  -166625;1;0;false;false;;;;;;
                                  -166626;5;0;false;false;63;95;191;;;
                                  -166631;1;0;false;false;;;;;;
                                  -166632;4;0;false;false;63;95;191;;;
                                  -166636;1;0;false;false;;;;;;
                                  -166637;8;0;false;false;63;95;191;;;
                                  -166645;1;0;false;false;;;;;;
                                  -166646;15;0;false;false;63;95;191;;;
                                  -166661;1;0;false;false;;;;;;
                                  -166662;6;0;false;false;63;95;191;;;
                                  -166668;1;0;false;false;;;;;;
                                  -166669;2;0;false;false;63;95;191;;;
                                  -166671;4;0;false;false;;;;;;
                                  -166675;1;0;false;false;63;95;191;;;
                                  -166676;2;0;false;false;;;;;;
                                  -166678;3;0;false;false;63;95;191;;;
                                  -166681;1;0;false;false;;;;;;
                                  -166682;2;0;false;false;63;95;191;;;
                                  -166684;1;0;false;false;;;;;;
                                  -166685;5;0;false;false;63;95;191;;;
                                  -166690;2;0;false;false;;;;;;
                                  -166692;2;0;false;false;63;95;191;;;
                                  -166694;1;0;false;false;;;;;;
                                  -166695;4;0;false;false;63;95;191;;;
                                  -166699;1;0;false;false;;;;;;
                                  -166700;10;0;false;false;63;95;191;;;
                                  -166710;1;0;false;false;;;;;;
                                  -166711;6;0;false;false;63;95;191;;;
                                  -166717;1;0;false;false;;;;;;
                                  -166718;4;0;false;false;63;95;191;;;
                                  -166722;1;0;false;false;;;;;;
                                  -166723;7;0;false;false;63;95;191;;;
                                  -166730;1;0;false;false;;;;;;
                                  -166731;3;0;false;false;63;95;191;;;
                                  -166734;1;0;false;false;;;;;;
                                  -166735;3;0;false;false;63;95;191;;;
                                  -166738;1;0;false;false;;;;;;
                                  -166739;6;0;false;false;63;95;191;;;
                                  -166745;4;0;false;false;;;;;;
                                  -166749;1;0;false;false;63;95;191;;;
                                  -166750;2;0;false;false;;;;;;
                                  -166752;6;0;false;false;63;95;191;;;
                                  -166758;1;0;false;false;;;;;;
                                  -166759;15;0;false;false;63;95;191;;;
                                  -166774;1;0;false;false;;;;;;
                                  -166775;3;0;false;false;63;95;191;;;
                                  -166778;1;0;false;false;;;;;;
                                  -166779;2;0;false;false;63;95;191;;;
                                  -166781;1;0;false;false;;;;;;
                                  -166782;3;0;false;false;63;95;191;;;
                                  -166785;1;0;false;false;;;;;;
                                  -166786;2;0;false;false;63;95;191;;;
                                  -166788;1;0;false;false;;;;;;
                                  -166789;6;0;false;false;63;95;191;;;
                                  -166795;4;0;false;false;;;;;;
                                  -166799;2;0;false;false;63;95;191;;;
                                  -166801;2;0;false;false;;;;;;
                                  -166803;4;1;false;false;127;0;85;;;
                                  -166807;1;0;false;false;;;;;;
                                  -166808;20;0;false;false;0;0;0;;;
                                  -166828;3;1;false;false;127;0;85;;;
                                  -166831;1;0;false;false;;;;;;
                                  -166832;6;0;false;false;0;0;0;;;
                                  -166838;1;0;false;false;;;;;;
                                  -166839;3;1;false;false;127;0;85;;;
                                  -166842;1;0;false;false;;;;;;
                                  -166843;7;0;false;false;0;0;0;;;
                                  -166850;1;0;false;false;;;;;;
                                  -166851;7;1;false;false;127;0;85;;;
                                  -166858;1;0;false;false;;;;;;
                                  -166859;16;0;false;false;0;0;0;;;
                                  -166875;1;0;false;false;;;;;;
                                  -166876;1;0;false;false;0;0;0;;;
                                  -166877;3;0;false;false;;;;;;
                                  -166880;3;1;false;false;127;0;85;;;
                                  -166883;1;0;false;false;;;;;;
                                  -166884;3;0;false;false;0;0;0;;;
                                  -166887;1;0;false;false;;;;;;
                                  -166888;1;0;false;false;0;0;0;;;
                                  -166889;1;0;false;false;;;;;;
                                  -166890;5;0;false;false;0;0;0;;;
                                  -166895;1;0;false;false;;;;;;
                                  -166896;1;0;false;false;0;0;0;;;
                                  -166897;1;0;false;false;;;;;;
                                  -166898;7;0;false;false;0;0;0;;;
                                  -166905;3;0;false;false;;;;;;
                                  -166908;3;1;false;false;127;0;85;;;
                                  -166911;1;0;false;false;;;;;;
                                  -166912;9;0;false;false;0;0;0;;;
                                  -166921;1;0;false;false;;;;;;
                                  -166922;1;0;false;false;0;0;0;;;
                                  -166923;1;0;false;false;;;;;;
                                  -166924;31;0;false;false;0;0;0;;;
                                  -166955;3;0;false;false;;;;;;
                                  -166958;3;1;false;false;127;0;85;;;
                                  -166961;1;0;false;false;;;;;;
                                  -166962;8;0;false;false;0;0;0;;;
                                  -166970;1;0;false;false;;;;;;
                                  -166971;1;0;false;false;0;0;0;;;
                                  -166972;1;0;false;false;;;;;;
                                  -166973;29;0;false;false;0;0;0;;;
                                  -167002;3;0;false;false;;;;;;
                                  -167005;3;1;false;false;127;0;85;;;
                                  -167008;1;0;false;false;;;;;;
                                  -167009;18;0;false;false;0;0;0;;;
                                  -167027;3;0;false;false;;;;;;
                                  -167030;3;1;false;false;127;0;85;;;
                                  -167033;1;0;false;false;;;;;;
                                  -167034;18;0;false;false;0;0;0;;;
                                  -167052;1;0;false;false;;;;;;
                                  -167053;1;0;false;false;0;0;0;;;
                                  -167054;1;0;false;false;;;;;;
                                  -167055;24;0;false;false;0;0;0;;;
                                  -167079;3;0;false;false;;;;;;
                                  -167082;3;1;false;false;127;0;85;;;
                                  -167085;1;0;false;false;;;;;;
                                  -167086;15;0;false;false;0;0;0;;;
                                  -167101;1;0;false;false;;;;;;
                                  -167102;1;0;false;false;0;0;0;;;
                                  -167103;1;0;false;false;;;;;;
                                  -167104;20;0;false;false;0;0;0;;;
                                  -167124;1;0;false;false;;;;;;
                                  -167125;1;0;false;false;0;0;0;;;
                                  -167126;1;0;false;false;;;;;;
                                  -167127;11;0;false;false;0;0;0;;;
                                  -167138;3;0;false;false;;;;;;
                                  -167141;56;0;false;false;63;127;95;;;
                                  -167197;1;0;false;false;;;;;;
                                  -167198;2;1;false;false;127;0;85;;;
                                  -167200;1;0;false;false;;;;;;
                                  -167201;10;0;false;false;0;0;0;;;
                                  -167211;1;0;false;false;;;;;;
                                  -167212;1;0;false;false;0;0;0;;;
                                  -167213;1;0;false;false;;;;;;
                                  -167214;18;0;false;false;0;0;0;;;
                                  -167232;1;0;false;false;;;;;;
                                  -167233;2;0;false;false;0;0;0;;;
                                  -167235;1;0;false;false;;;;;;
                                  -167236;8;0;false;false;0;0;0;;;
                                  -167244;1;0;false;false;;;;;;
                                  -167245;1;0;false;false;0;0;0;;;
                                  -167246;1;0;false;false;;;;;;
                                  -167247;16;0;false;false;0;0;0;;;
                                  -167263;1;0;false;false;;;;;;
                                  -167264;1;0;false;false;0;0;0;;;
                                  -167265;4;0;false;false;;;;;;
                                  -167269;6;1;false;false;127;0;85;;;
                                  -167275;1;0;false;false;0;0;0;;;
                                  -167276;3;0;false;false;;;;;;
                                  -167279;1;0;false;false;0;0;0;;;
                                  -167280;3;0;false;false;;;;;;
                                  -167283;30;0;false;false;63;127;95;;;
                                  -167313;1;0;false;false;;;;;;
                                  -167314;2;1;false;false;127;0;85;;;
                                  -167316;1;0;false;false;;;;;;
                                  -167317;16;0;false;false;0;0;0;;;
                                  -167333;1;0;false;false;;;;;;
                                  -167334;1;0;false;false;0;0;0;;;
                                  -167335;1;0;false;false;;;;;;
                                  -167336;10;0;false;false;0;0;0;;;
                                  -167346;1;0;false;false;;;;;;
                                  -167347;1;0;false;false;0;0;0;;;
                                  -167348;4;0;false;false;;;;;;
                                  -167352;9;0;false;false;0;0;0;;;
                                  -167361;1;0;false;false;;;;;;
                                  -167362;1;0;false;false;0;0;0;;;
                                  -167363;1;0;false;false;;;;;;
                                  -167364;16;0;false;false;0;0;0;;;
                                  -167380;4;0;false;false;;;;;;
                                  -167384;17;0;false;false;0;0;0;;;
                                  -167401;1;0;false;false;;;;;;
                                  -167402;1;0;false;false;0;0;0;;;
                                  -167403;1;0;false;false;;;;;;
                                  -167404;2;0;false;false;0;0;0;;;
                                  -167406;3;0;false;false;;;;;;
                                  -167409;1;0;false;false;0;0;0;;;
                                  -167410;3;0;false;false;;;;;;
                                  -167413;4;1;false;false;127;0;85;;;
                                  -167417;1;0;false;false;;;;;;
                                  -167418;1;0;false;false;0;0;0;;;
                                  -167419;4;0;false;false;;;;;;
                                  -167423;17;0;false;false;0;0;0;;;
                                  -167440;1;0;false;false;;;;;;
                                  -167441;1;0;false;false;0;0;0;;;
                                  -167442;1;0;false;false;;;;;;
                                  -167443;5;0;false;false;0;0;0;;;
                                  -167448;1;0;false;false;;;;;;
                                  -167449;1;0;false;false;0;0;0;;;
                                  -167450;1;0;false;false;;;;;;
                                  -167451;35;0;false;false;0;0;0;;;
                                  -167486;3;0;false;false;;;;;;
                                  -167489;1;0;false;false;0;0;0;;;
                                  -167490;3;0;false;false;;;;;;
                                  -167493;2;1;false;false;127;0;85;;;
                                  -167495;1;0;false;false;;;;;;
                                  -167496;19;0;false;false;0;0;0;;;
                                  -167515;1;0;false;false;;;;;;
                                  -167516;1;0;false;false;0;0;0;;;
                                  -167517;1;0;false;false;;;;;;
                                  -167518;1;0;false;false;0;0;0;;;
                                  -167519;1;0;false;false;;;;;;
                                  -167520;1;0;false;false;0;0;0;;;
                                  -167521;1;0;false;false;;;;;;
                                  -167522;9;0;false;false;0;0;0;;;
                                  -167531;1;0;false;false;;;;;;
                                  -167532;1;0;false;false;0;0;0;;;
                                  -167533;4;0;false;false;;;;;;
                                  -167537;8;0;false;false;0;0;0;;;
                                  -167545;1;0;false;false;;;;;;
                                  -167546;1;0;false;false;0;0;0;;;
                                  -167547;1;0;false;false;;;;;;
                                  -167548;18;0;false;false;0;0;0;;;
                                  -167566;1;0;false;false;;;;;;
                                  -167567;1;0;false;false;0;0;0;;;
                                  -167568;1;0;false;false;;;;;;
                                  -167569;2;0;false;false;0;0;0;;;
                                  -167571;1;0;false;false;;;;;;
                                  -167572;58;0;false;false;63;127;95;;;
                                  -167630;2;0;false;false;;;;;;
                                  -167632;3;0;false;false;0;0;0;;;
                                  -167635;1;0;false;false;;;;;;
                                  -167636;1;0;false;false;0;0;0;;;
                                  -167637;1;0;false;false;;;;;;
                                  -167638;34;0;false;false;0;0;0;;;
                                  -167672;3;0;false;false;;;;;;
                                  -167675;1;0;false;false;0;0;0;;;
                                  -167676;3;0;false;false;;;;;;
                                  -167679;22;0;false;false;0;0;0;;;
                                  -167701;1;0;false;false;;;;;;
                                  -167702;18;0;false;false;0;0;0;;;
                                  -167720;1;0;false;false;;;;;;
                                  -167721;9;0;false;false;0;0;0;;;
                                  -167730;1;0;false;false;;;;;;
                                  -167731;4;0;false;false;0;0;0;;;
                                  -167735;1;0;false;false;;;;;;
                                  -167736;17;0;false;false;0;0;0;;;
                                  -167753;6;0;false;false;;;;;;
                                  -167759;76;0;false;false;63;127;95;;;
                                  -167835;1;0;false;false;;;;;;
                                  -167836;2;1;false;false;127;0;85;;;
                                  -167838;1;0;false;false;;;;;;
                                  -167839;9;0;false;false;0;0;0;;;
                                  -167848;1;0;false;false;;;;;;
                                  -167849;1;0;false;false;0;0;0;;;
                                  -167850;1;0;false;false;;;;;;
                                  -167851;9;0;false;false;0;0;0;;;
                                  -167860;1;0;false;false;;;;;;
                                  -167861;1;0;false;false;0;0;0;;;
                                  -167862;1;0;false;false;;;;;;
                                  -167863;2;0;false;false;0;0;0;;;
                                  -167865;1;0;false;false;;;;;;
                                  -167866;1;0;false;false;0;0;0;;;
                                  -167867;4;0;false;false;;;;;;
                                  -167871;9;0;false;false;0;0;0;;;
                                  -167880;1;0;false;false;;;;;;
                                  -167881;10;0;false;false;0;0;0;;;
                                  -167891;1;0;false;false;;;;;;
                                  -167892;1;0;false;false;0;0;0;;;
                                  -167893;1;0;false;false;;;;;;
                                  -167894;16;0;false;false;0;0;0;;;
                                  -167910;4;0;false;false;;;;;;
                                  -167914;3;1;false;false;127;0;85;;;
                                  -167917;1;0;false;false;;;;;;
                                  -167918;11;0;false;false;0;0;0;;;
                                  -167929;1;0;false;false;;;;;;
                                  -167930;1;0;false;false;0;0;0;;;
                                  -167931;1;0;false;false;;;;;;
                                  -167932;8;0;false;false;0;0;0;;;
                                  -167940;1;0;false;false;;;;;;
                                  -167941;1;0;false;false;0;0;0;;;
                                  -167942;1;0;false;false;;;;;;
                                  -167943;10;0;false;false;0;0;0;;;
                                  -167953;1;0;false;false;;;;;;
                                  -167954;1;0;false;false;0;0;0;;;
                                  -167955;1;0;false;false;;;;;;
                                  -167956;21;0;false;false;0;0;0;;;
                                  -167977;6;0;false;false;;;;;;
                                  -167983;3;1;false;false;127;0;85;;;
                                  -167986;1;0;false;false;;;;;;
                                  -167987;7;0;false;false;0;0;0;;;
                                  -167994;1;0;false;false;;;;;;
                                  -167995;1;0;false;false;0;0;0;;;
                                  -167996;1;0;false;false;;;;;;
                                  -167997;10;0;false;false;0;0;0;;;
                                  -168007;1;0;false;false;;;;;;
                                  -168008;1;0;false;false;0;0;0;;;
                                  -168009;1;0;false;false;;;;;;
                                  -168010;2;0;false;false;0;0;0;;;
                                  -168012;1;0;false;false;;;;;;
                                  -168013;1;0;false;false;0;0;0;;;
                                  -168014;1;0;false;false;;;;;;
                                  -168015;10;0;false;false;0;0;0;;;
                                  -168025;1;0;false;false;;;;;;
                                  -168026;1;0;false;false;0;0;0;;;
                                  -168027;1;0;false;false;;;;;;
                                  -168028;21;0;false;false;0;0;0;;;
                                  -168049;6;0;false;false;;;;;;
                                  -168055;7;0;false;false;0;0;0;;;
                                  -168062;1;0;false;false;;;;;;
                                  -168063;8;0;false;false;0;0;0;;;
                                  -168071;1;0;false;false;;;;;;
                                  -168072;17;0;false;false;0;0;0;;;
                                  -168089;1;0;false;false;;;;;;
                                  -168090;11;0;false;false;0;0;0;;;
                                  -168101;1;0;false;false;;;;;;
                                  -168102;1;0;false;false;0;0;0;;;
                                  -168103;1;0;false;false;;;;;;
                                  -168104;8;0;false;false;0;0;0;;;
                                  -168112;1;0;false;false;;;;;;
                                  -168113;17;0;false;false;0;0;0;;;
                                  -168130;3;0;false;false;;;;;;
                                  -168133;1;0;false;false;0;0;0;;;
                                  -168134;2;0;false;false;;;;;;
                                  -168136;1;0;false;false;0;0;0;;;
                                  -168137;2;0;false;false;;;;;;
                                  -168139;3;0;false;false;63;95;191;;;
                                  -168142;3;0;false;false;;;;;;
                                  -168145;1;0;false;false;63;95;191;;;
                                  -168146;1;0;false;false;;;;;;
                                  -168147;7;0;false;false;63;95;191;;;
                                  -168154;1;0;false;false;;;;;;
                                  -168155;3;0;false;false;63;95;191;;;
                                  -168158;1;0;false;false;;;;;;
                                  -168159;6;0;false;false;63;95;191;;;
                                  -168165;1;0;false;false;;;;;;
                                  -168166;4;0;false;false;63;95;191;;;
                                  -168170;1;0;false;false;;;;;;
                                  -168171;4;0;false;false;63;95;191;;;
                                  -168175;1;0;false;false;;;;;;
                                  -168176;5;0;false;false;63;95;191;;;
                                  -168181;1;0;false;false;;;;;;
                                  -168182;11;0;false;false;63;95;191;;;
                                  -168193;1;0;false;false;;;;;;
                                  -168194;7;0;false;false;63;95;191;;;
                                  -168201;1;0;false;false;;;;;;
                                  -168202;5;0;false;false;63;95;191;;;
                                  -168207;1;0;false;false;;;;;;
                                  -168208;3;0;false;false;63;95;191;;;
                                  -168211;1;0;false;false;;;;;;
                                  -168212;6;0;false;false;63;95;191;;;
                                  -168218;3;0;false;false;;;;;;
                                  -168221;1;0;false;false;63;95;191;;;
                                  -168222;1;0;false;false;;;;;;
                                  -168223;13;0;false;false;63;95;191;;;
                                  -168236;1;0;false;false;;;;;;
                                  -168237;7;0;false;false;63;95;191;;;
                                  -168244;1;0;false;false;;;;;;
                                  -168245;4;0;false;false;63;95;191;;;
                                  -168249;3;0;false;false;;;;;;
                                  -168252;1;0;false;false;63;95;191;;;
                                  -168253;3;0;false;false;;;;;;
                                  -168256;1;0;false;false;63;95;191;;;
                                  -168257;1;0;false;false;;;;;;
                                  -168258;8;1;false;false;127;159;191;;;
                                  -168266;3;0;false;false;63;95;191;;;
                                  -168269;1;0;false;false;;;;;;
                                  -168270;6;0;false;false;63;95;191;;;
                                  -168276;1;0;false;false;;;;;;
                                  -168277;4;0;false;false;63;95;191;;;
                                  -168281;1;0;false;false;;;;;;
                                  -168282;4;0;false;false;63;95;191;;;
                                  -168286;1;0;false;false;;;;;;
                                  -168287;5;0;false;false;63;95;191;;;
                                  -168292;1;0;false;false;;;;;;
                                  -168293;11;0;false;false;63;95;191;;;
                                  -168304;1;0;false;false;;;;;;
                                  -168305;7;0;false;false;63;95;191;;;
                                  -168312;1;0;false;false;;;;;;
                                  -168313;5;0;false;false;63;95;191;;;
                                  -168318;1;0;false;false;;;;;;
                                  -168319;3;0;false;false;63;95;191;;;
                                  -168322;1;0;false;false;;;;;;
                                  -168323;6;0;false;false;63;95;191;;;
                                  -168329;3;0;false;false;;;;;;
                                  -168332;1;0;false;false;63;95;191;;;
                                  -168333;1;0;false;false;;;;;;
                                  -168334;11;1;false;false;127;159;191;;;
                                  -168345;12;0;false;false;63;95;191;;;
                                  -168357;1;0;false;false;;;;;;
                                  -168358;4;0;false;false;127;127;159;;;
                                  -168362;3;0;false;false;;;;;;
                                  -168365;1;0;false;false;63;95;191;;;
                                  -168366;4;0;false;false;;;;;;
                                  -168370;4;0;false;false;127;127;159;;;
                                  -168374;21;0;false;false;63;95;191;;;
                                  -168395;1;0;false;false;;;;;;
                                  -168396;1;0;false;false;127;127;159;;;
                                  -168397;1;0;false;false;;;;;;
                                  -168398;2;0;false;false;63;95;191;;;
                                  -168400;1;0;false;false;;;;;;
                                  -168401;3;0;false;false;63;95;191;;;
                                  -168404;1;0;false;false;;;;;;
                                  -168405;8;0;false;false;63;95;191;;;
                                  -168413;1;0;false;false;;;;;;
                                  -168414;3;0;false;false;63;95;191;;;
                                  -168417;1;0;false;false;;;;;;
                                  -168418;4;0;false;false;63;95;191;;;
                                  -168422;1;0;false;false;;;;;;
                                  -168423;8;0;false;false;63;95;191;;;
                                  -168431;5;0;false;false;127;127;159;;;
                                  -168436;3;0;false;false;;;;;;
                                  -168439;1;0;false;false;63;95;191;;;
                                  -168440;4;0;false;false;;;;;;
                                  -168444;4;0;false;false;127;127;159;;;
                                  -168448;27;0;false;false;63;95;191;;;
                                  -168475;1;0;false;false;;;;;;
                                  -168476;1;0;false;false;127;127;159;;;
                                  -168477;1;0;false;false;;;;;;
                                  -168478;2;0;false;false;63;95;191;;;
                                  -168480;1;0;false;false;;;;;;
                                  -168481;3;0;false;false;63;95;191;;;
                                  -168484;1;0;false;false;;;;;;
                                  -168485;6;0;false;false;63;95;191;;;
                                  -168491;1;0;false;false;;;;;;
                                  -168492;4;0;false;false;63;95;191;;;
                                  -168496;1;0;false;false;;;;;;
                                  -168497;3;0;false;false;63;95;191;;;
                                  -168500;1;0;false;false;;;;;;
                                  -168501;6;0;false;false;63;95;191;;;
                                  -168507;1;0;false;false;;;;;;
                                  -168508;4;0;false;false;63;95;191;;;
                                  -168512;1;0;false;false;;;;;;
                                  -168513;7;0;false;false;63;95;191;;;
                                  -168520;1;0;false;false;;;;;;
                                  -168521;3;0;false;false;63;95;191;;;
                                  -168524;1;0;false;false;;;;;;
                                  -168525;8;0;false;false;63;95;191;;;
                                  -168533;5;0;false;false;127;127;159;;;
                                  -168538;3;0;false;false;;;;;;
                                  -168541;1;0;false;false;63;95;191;;;
                                  -168542;1;0;false;false;;;;;;
                                  -168543;5;0;false;false;127;127;159;;;
                                  -168548;3;0;false;false;;;;;;
                                  -168551;2;0;false;false;63;95;191;;;
                                  -168553;2;0;false;false;;;;;;
                                  -168555;6;0;false;false;0;0;0;;;
                                  -168561;1;0;false;false;;;;;;
                                  -168562;9;0;false;false;0;0;0;;;
                                  -168571;3;0;false;false;;;;;;
                                  -168574;14;0;false;false;0;0;0;;;
                                  -168588;3;0;false;false;;;;;;
                                  -168591;9;0;false;false;0;0;0;;;
                                  -168600;1;0;false;false;;;;;;
                                  -168601;9;0;false;false;0;0;0;;;
                                  -168610;1;0;false;false;;;;;;
                                  -168611;1;0;false;false;0;0;0;;;
                                  -168612;1;0;false;false;;;;;;
                                  -168613;3;1;false;false;127;0;85;;;
                                  -168616;1;0;false;false;;;;;;
                                  -168617;12;0;false;false;0;0;0;;;
                                  -168629;1;0;false;false;;;;;;
                                  -168630;16;0;false;false;0;0;0;;;
                                  -168646;3;0;false;false;;;;;;
                                  -168649;6;1;false;false;127;0;85;;;
                                  -168655;1;0;false;false;;;;;;
                                  -168656;36;0;false;false;0;0;0;;;
                                  -168692;2;0;false;false;;;;;;
                                  -168694;1;0;false;false;0;0;0;;;
                                  -168695;2;0;false;false;;;;;;
                                  -168697;3;0;false;false;63;95;191;;;
                                  -168700;4;0;false;false;;;;;;
                                  -168704;1;0;false;false;63;95;191;;;
                                  -168705;1;0;false;false;;;;;;
                                  -168706;5;0;false;false;63;95;191;;;
                                  -168711;1;0;false;false;;;;;;
                                  -168712;10;0;false;false;63;95;191;;;
                                  -168722;3;0;false;false;;;;;;
                                  -168725;2;0;false;false;63;95;191;;;
                                  -168727;2;0;false;false;;;;;;
                                  -168729;4;1;false;false;127;0;85;;;
                                  -168733;1;0;false;false;;;;;;
                                  -168734;19;0;false;false;0;0;0;;;
                                  -168753;1;0;false;false;;;;;;
                                  -168754;6;0;false;false;0;0;0;;;
                                  -168760;1;0;false;false;;;;;;
                                  -168761;1;0;false;false;0;0;0;;;
                                  -168762;3;0;false;false;;;;;;
                                  -168765;27;0;false;false;0;0;0;;;
                                  -168792;1;0;false;false;;;;;;
                                  -168793;10;0;false;false;0;0;0;;;
                                  -168803;3;0;false;false;;;;;;
                                  -168806;28;0;false;false;0;0;0;;;
                                  -168834;1;0;false;false;;;;;;
                                  -168835;7;0;false;false;0;0;0;;;
                                  -168842;3;0;false;false;;;;;;
                                  -168845;10;0;false;false;0;0;0;;;
                                  -168855;1;0;false;false;;;;;;
                                  -168856;1;0;false;false;0;0;0;;;
                                  -168857;1;0;false;false;;;;;;
                                  -168858;9;0;false;false;0;0;0;;;
                                  -168867;5;0;false;false;;;;;;
                                  -168872;20;0;false;false;0;0;0;;;
                                  -168892;3;0;false;false;;;;;;
                                  -168895;22;0;false;false;0;0;0;;;
                                  -168917;3;0;false;false;;;;;;
                                  -168920;2;1;false;false;127;0;85;;;
                                  -168922;1;0;false;false;;;;;;
                                  -168923;9;0;false;false;0;0;0;;;
                                  -168932;1;0;false;false;;;;;;
                                  -168933;2;0;false;false;0;0;0;;;
                                  -168935;1;0;false;false;;;;;;
                                  -168936;4;1;false;false;127;0;85;;;
                                  -168940;1;0;false;false;0;0;0;;;
                                  -168941;1;0;false;false;;;;;;
                                  -168942;1;0;false;false;0;0;0;;;
                                  -168943;4;0;false;false;;;;;;
                                  -168947;19;0;false;false;0;0;0;;;
                                  -168966;4;0;false;false;;;;;;
                                  -168970;8;0;false;false;0;0;0;;;
                                  -168978;1;0;false;false;;;;;;
                                  -168979;1;0;false;false;0;0;0;;;
                                  -168980;1;0;false;false;;;;;;
                                  -168981;4;1;false;false;127;0;85;;;
                                  -168985;1;0;false;false;0;0;0;;;
                                  -168986;3;0;false;false;;;;;;
                                  -168989;1;0;false;false;0;0;0;;;
                                  -168990;3;0;false;false;;;;;;
                                  -168993;2;1;false;false;127;0;85;;;
                                  -168995;1;0;false;false;;;;;;
                                  -168996;8;0;false;false;0;0;0;;;
                                  -169004;1;0;false;false;;;;;;
                                  -169005;2;0;false;false;0;0;0;;;
                                  -169007;1;0;false;false;;;;;;
                                  -169008;4;1;false;false;127;0;85;;;
                                  -169012;1;0;false;false;0;0;0;;;
                                  -169013;1;0;false;false;;;;;;
                                  -169014;1;0;false;false;0;0;0;;;
                                  -169015;4;0;false;false;;;;;;
                                  -169019;53;0;false;false;0;0;0;;;
                                  -169072;4;0;false;false;;;;;;
                                  -169076;7;0;false;false;0;0;0;;;
                                  -169083;1;0;false;false;;;;;;
                                  -169084;1;0;false;false;0;0;0;;;
                                  -169085;1;0;false;false;;;;;;
                                  -169086;4;1;false;false;127;0;85;;;
                                  -169090;1;0;false;false;0;0;0;;;
                                  -169091;3;0;false;false;;;;;;
                                  -169094;1;0;false;false;0;0;0;;;
                                  -169095;3;0;false;false;;;;;;
                                  -169098;2;1;false;false;127;0;85;;;
                                  -169100;1;0;false;false;;;;;;
                                  -169101;13;0;false;false;0;0;0;;;
                                  -169114;1;0;false;false;;;;;;
                                  -169115;2;0;false;false;0;0;0;;;
                                  -169117;1;0;false;false;;;;;;
                                  -169118;4;1;false;false;127;0;85;;;
                                  -169122;1;0;false;false;0;0;0;;;
                                  -169123;1;0;false;false;;;;;;
                                  -169124;1;0;false;false;0;0;0;;;
                                  -169125;4;0;false;false;;;;;;
                                  -169129;23;0;false;false;0;0;0;;;
                                  -169152;4;0;false;false;;;;;;
                                  -169156;12;0;false;false;0;0;0;;;
                                  -169168;1;0;false;false;;;;;;
                                  -169169;1;0;false;false;0;0;0;;;
                                  -169170;1;0;false;false;;;;;;
                                  -169171;4;1;false;false;127;0;85;;;
                                  -169175;1;0;false;false;0;0;0;;;
                                  -169176;3;0;false;false;;;;;;
                                  -169179;1;0;false;false;0;0;0;;;
                                  -169180;3;0;false;false;;;;;;
                                  -169183;2;1;false;false;127;0;85;;;
                                  -169185;1;0;false;false;;;;;;
                                  -169186;16;0;false;false;0;0;0;;;
                                  -169202;1;0;false;false;;;;;;
                                  -169203;2;0;false;false;0;0;0;;;
                                  -169205;1;0;false;false;;;;;;
                                  -169206;4;1;false;false;127;0;85;;;
                                  -169210;1;0;false;false;0;0;0;;;
                                  -169211;1;0;false;false;;;;;;
                                  -169212;1;0;false;false;0;0;0;;;
                                  -169213;4;0;false;false;;;;;;
                                  -169217;26;0;false;false;0;0;0;;;
                                  -169243;4;0;false;false;;;;;;
                                  -169247;15;0;false;false;0;0;0;;;
                                  -169262;1;0;false;false;;;;;;
                                  -169263;1;0;false;false;0;0;0;;;
                                  -169264;1;0;false;false;;;;;;
                                  -169265;4;1;false;false;127;0;85;;;
                                  -169269;1;0;false;false;0;0;0;;;
                                  -169270;3;0;false;false;;;;;;
                                  -169273;1;0;false;false;0;0;0;;;
                                  -169274;3;0;false;false;;;;;;
                                  -169277;2;1;false;false;127;0;85;;;
                                  -169279;1;0;false;false;;;;;;
                                  -169280;17;0;false;false;0;0;0;;;
                                  -169297;1;0;false;false;;;;;;
                                  -169298;2;0;false;false;0;0;0;;;
                                  -169300;1;0;false;false;;;;;;
                                  -169301;4;1;false;false;127;0;85;;;
                                  -169305;1;0;false;false;0;0;0;;;
                                  -169306;1;0;false;false;;;;;;
                                  -169307;1;0;false;false;0;0;0;;;
                                  -169308;4;0;false;false;;;;;;
                                  -169312;27;0;false;false;0;0;0;;;
                                  -169339;4;0;false;false;;;;;;
                                  -169343;16;0;false;false;0;0;0;;;
                                  -169359;1;0;false;false;;;;;;
                                  -169360;1;0;false;false;0;0;0;;;
                                  -169361;1;0;false;false;;;;;;
                                  -169362;4;1;false;false;127;0;85;;;
                                  -169366;1;0;false;false;0;0;0;;;
                                  -169367;3;0;false;false;;;;;;
                                  -169370;1;0;false;false;0;0;0;;;
                                  -169371;3;0;false;false;;;;;;
                                  -169374;2;1;false;false;127;0;85;;;
                                  -169376;1;0;false;false;;;;;;
                                  -169377;18;0;false;false;0;0;0;;;
                                  -169395;1;0;false;false;;;;;;
                                  -169396;2;0;false;false;0;0;0;;;
                                  -169398;1;0;false;false;;;;;;
                                  -169399;4;1;false;false;127;0;85;;;
                                  -169403;1;0;false;false;0;0;0;;;
                                  -169404;1;0;false;false;;;;;;
                                  -169405;1;0;false;false;0;0;0;;;
                                  -169406;4;0;false;false;;;;;;
                                  -169410;28;0;false;false;0;0;0;;;
                                  -169438;4;0;false;false;;;;;;
                                  -169442;17;0;false;false;0;0;0;;;
                                  -169459;1;0;false;false;;;;;;
                                  -169460;1;0;false;false;0;0;0;;;
                                  -169461;1;0;false;false;;;;;;
                                  -169462;4;1;false;false;127;0;85;;;
                                  -169466;1;0;false;false;0;0;0;;;
                                  -169467;3;0;false;false;;;;;;
                                  -169470;1;0;false;false;0;0;0;;;
                                  -169471;3;0;false;false;;;;;;
                                  -169474;2;1;false;false;127;0;85;;;
                                  -169476;1;0;false;false;;;;;;
                                  -169477;15;0;false;false;0;0;0;;;
                                  -169492;1;0;false;false;;;;;;
                                  -169493;1;0;false;false;0;0;0;;;
                                  -169494;4;0;false;false;;;;;;
                                  -169498;40;0;false;false;0;0;0;;;
                                  -169538;3;0;false;false;;;;;;
                                  -169541;1;0;false;false;0;0;0;;;
                                  -169542;3;0;false;false;;;;;;
                                  -169545;19;0;false;false;0;0;0;;;
                                  -169564;1;0;false;false;;;;;;
                                  -169565;1;0;false;false;0;0;0;;;
                                  -169566;1;0;false;false;;;;;;
                                  -169567;4;1;false;false;127;0;85;;;
                                  -169571;1;0;false;false;0;0;0;;;
                                  -169572;3;0;false;false;;;;;;
                                  -169575;19;0;false;false;0;0;0;;;
                                  -169594;1;0;false;false;;;;;;
                                  -169595;1;0;false;false;0;0;0;;;
                                  -169596;1;0;false;false;;;;;;
                                  -169597;4;1;false;false;127;0;85;;;
                                  -169601;1;0;false;false;0;0;0;;;
                                  -169602;3;0;false;false;;;;;;
                                  -169605;14;0;false;false;0;0;0;;;
                                  -169619;1;0;false;false;;;;;;
                                  -169620;1;0;false;false;0;0;0;;;
                                  -169621;1;0;false;false;;;;;;
                                  -169622;4;1;false;false;127;0;85;;;
                                  -169626;1;0;false;false;0;0;0;;;
                                  -169627;3;0;false;false;;;;;;
                                  -169630;18;0;false;false;0;0;0;;;
                                  -169648;1;0;false;false;;;;;;
                                  -169649;1;0;false;false;0;0;0;;;
                                  -169650;1;0;false;false;;;;;;
                                  -169651;4;1;false;false;127;0;85;;;
                                  -169655;1;0;false;false;0;0;0;;;
                                  -169656;3;0;false;false;;;;;;
                                  -169659;9;0;false;false;0;0;0;;;
                                  -169668;1;0;false;false;;;;;;
                                  -169669;1;0;false;false;0;0;0;;;
                                  -169670;1;0;false;false;;;;;;
                                  -169671;4;1;false;false;127;0;85;;;
                                  -169675;1;0;false;false;0;0;0;;;
                                  -169676;3;0;false;false;;;;;;
                                  -169679;11;0;false;false;0;0;0;;;
                                  -169690;1;0;false;false;;;;;;
                                  -169691;1;0;false;false;0;0;0;;;
                                  -169692;1;0;false;false;;;;;;
                                  -169693;4;1;false;false;127;0;85;;;
                                  -169697;1;0;false;false;0;0;0;;;
                                  -169698;3;0;false;false;;;;;;
                                  -169701;9;0;false;false;0;0;0;;;
                                  -169710;1;0;false;false;;;;;;
                                  -169711;1;0;false;false;0;0;0;;;
                                  -169712;1;0;false;false;;;;;;
                                  -169713;4;1;false;false;127;0;85;;;
                                  -169717;1;0;false;false;0;0;0;;;
                                  -169718;3;0;false;false;;;;;;
                                  -169721;20;0;false;false;0;0;0;;;
                                  -169741;1;0;false;false;;;;;;
                                  -169742;1;0;false;false;0;0;0;;;
                                  -169743;1;0;false;false;;;;;;
                                  -169744;4;1;false;false;127;0;85;;;
                                  -169748;1;0;false;false;0;0;0;;;
                                  -169749;3;0;false;false;;;;;;
                                  -169752;12;0;false;false;0;0;0;;;
                                  -169764;1;0;false;false;;;;;;
                                  -169765;1;0;false;false;0;0;0;;;
                                  -169766;1;0;false;false;;;;;;
                                  -169767;4;1;false;false;127;0;85;;;
                                  -169771;1;0;false;false;0;0;0;;;
                                  -169772;3;0;false;false;;;;;;
                                  -169775;10;0;false;false;0;0;0;;;
                                  -169785;1;0;false;false;;;;;;
                                  -169786;1;0;false;false;0;0;0;;;
                                  -169787;1;0;false;false;;;;;;
                                  -169788;4;1;false;false;127;0;85;;;
                                  -169792;1;0;false;false;0;0;0;;;
                                  -169793;3;0;false;false;;;;;;
                                  -169796;10;0;false;false;0;0;0;;;
                                  -169806;1;0;false;false;;;;;;
                                  -169807;1;0;false;false;0;0;0;;;
                                  -169808;1;0;false;false;;;;;;
                                  -169809;4;1;false;false;127;0;85;;;
                                  -169813;1;0;false;false;0;0;0;;;
                                  -169814;3;0;false;false;;;;;;
                                  -169817;9;0;false;false;0;0;0;;;
                                  -169826;1;0;false;false;;;;;;
                                  -169827;1;0;false;false;0;0;0;;;
                                  -169828;1;0;false;false;;;;;;
                                  -169829;4;1;false;false;127;0;85;;;
                                  -169833;1;0;false;false;0;0;0;;;
                                  -169834;2;0;false;false;;;;;;
                                  -169836;1;0;false;false;0;0;0;;;
                                  -169837;2;0;false;false;;;;;;
                                  -169839;3;0;false;false;63;95;191;;;
                                  -169842;4;0;false;false;;;;;;
                                  -169846;1;0;false;false;63;95;191;;;
                                  -169847;1;0;false;false;;;;;;
                                  -169848;7;0;false;false;63;95;191;;;
                                  -169855;1;0;false;false;;;;;;
                                  -169856;3;0;false;false;63;95;191;;;
                                  -169859;1;0;false;false;;;;;;
                                  -169860;6;0;false;false;63;95;191;;;
                                  -169866;1;0;false;false;;;;;;
                                  -169867;13;0;false;false;63;95;191;;;
                                  -169880;3;0;false;false;;;;;;
                                  -169883;2;0;false;false;63;95;191;;;
                                  -169885;2;0;false;false;;;;;;
                                  -169887;4;1;false;false;127;0;85;;;
                                  -169891;1;0;false;false;;;;;;
                                  -169892;28;0;false;false;0;0;0;;;
                                  -169920;1;0;false;false;;;;;;
                                  -169921;6;0;false;false;0;0;0;;;
                                  -169927;1;0;false;false;;;;;;
                                  -169928;1;0;false;false;0;0;0;;;
                                  -169929;3;0;false;false;;;;;;
                                  -169932;3;1;false;false;127;0;85;;;
                                  -169935;1;0;false;false;;;;;;
                                  -169936;11;0;false;false;0;0;0;;;
                                  -169947;1;0;false;false;;;;;;
                                  -169948;1;0;false;false;0;0;0;;;
                                  -169949;1;0;false;false;;;;;;
                                  -169950;33;0;false;false;0;0;0;;;
                                  -169983;1;0;false;false;;;;;;
                                  -169984;1;0;false;false;0;0;0;;;
                                  -169985;1;0;false;false;;;;;;
                                  -169986;23;0;false;false;0;0;0;;;
                                  -170009;3;0;false;false;;;;;;
                                  -170012;30;0;false;false;0;0;0;;;
                                  -170042;2;0;false;false;;;;;;
                                  -170044;1;0;false;false;0;0;0;;;
                                  -170045;2;0;false;false;;;;;;
                                  -170047;3;0;false;false;63;95;191;;;
                                  -170050;3;0;false;false;;;;;;
                                  -170053;1;0;false;false;63;95;191;;;
                                  -170054;1;0;false;false;;;;;;
                                  -170055;2;0;false;false;63;95;191;;;
                                  -170057;1;0;false;false;;;;;;
                                  -170058;2;0;false;false;63;95;191;;;
                                  -170060;1;0;false;false;;;;;;
                                  -170061;6;0;false;false;63;95;191;;;
                                  -170067;1;0;false;false;;;;;;
                                  -170068;3;0;false;false;63;95;191;;;
                                  -170071;1;0;false;false;;;;;;
                                  -170072;4;0;false;false;63;95;191;;;
                                  -170076;1;0;false;false;;;;;;
                                  -170077;10;0;false;false;63;95;191;;;
                                  -170087;1;0;false;false;;;;;;
                                  -170088;3;0;false;false;63;95;191;;;
                                  -170091;1;0;false;false;;;;;;
                                  -170092;3;0;false;false;63;95;191;;;
                                  -170095;1;0;false;false;;;;;;
                                  -170096;3;0;false;false;63;95;191;;;
                                  -170099;1;0;false;false;;;;;;
                                  -170100;6;0;false;false;63;95;191;;;
                                  -170106;1;0;false;false;;;;;;
                                  -170107;7;0;false;false;63;95;191;;;
                                  -170114;1;0;false;false;;;;;;
                                  -170115;3;0;false;false;63;95;191;;;
                                  -170118;1;0;false;false;;;;;;
                                  -170119;7;0;false;false;63;95;191;;;
                                  -170126;3;0;false;false;;;;;;
                                  -170129;1;0;false;false;63;95;191;;;
                                  -170130;1;0;false;false;;;;;;
                                  -170131;10;0;false;false;63;95;191;;;
                                  -170141;1;0;false;false;;;;;;
                                  -170142;2;0;false;false;63;95;191;;;
                                  -170144;1;0;false;false;;;;;;
                                  -170145;1;0;false;false;63;95;191;;;
                                  -170146;1;0;false;false;;;;;;
                                  -170147;9;0;false;false;63;95;191;;;
                                  -170156;1;0;false;false;;;;;;
                                  -170157;3;0;false;false;63;95;191;;;
                                  -170160;1;0;false;false;;;;;;
                                  -170161;4;0;false;false;63;95;191;;;
                                  -170165;1;0;false;false;;;;;;
                                  -170166;7;0;false;false;63;95;191;;;
                                  -170173;1;0;false;false;;;;;;
                                  -170174;5;0;false;false;63;95;191;;;
                                  -170179;1;0;false;false;;;;;;
                                  -170180;2;0;false;false;63;95;191;;;
                                  -170182;1;0;false;false;;;;;;
                                  -170183;2;0;false;false;63;95;191;;;
                                  -170185;1;0;false;false;;;;;;
                                  -170186;3;0;false;false;63;95;191;;;
                                  -170189;1;0;false;false;;;;;;
                                  -170190;8;0;false;false;63;95;191;;;
                                  -170198;3;0;false;false;;;;;;
                                  -170201;1;0;false;false;63;95;191;;;
                                  -170202;1;0;false;false;;;;;;
                                  -170203;3;0;false;false;127;127;159;;;
                                  -170206;3;0;false;false;;;;;;
                                  -170209;1;0;false;false;63;95;191;;;
                                  -170210;3;0;false;false;;;;;;
                                  -170213;1;0;false;false;63;95;191;;;
                                  -170214;1;0;false;false;;;;;;
                                  -170215;7;1;false;false;127;159;191;;;
                                  -170222;5;0;false;false;63;95;191;;;
                                  -170227;1;0;false;false;;;;;;
                                  -170228;8;0;false;false;63;95;191;;;
                                  -170236;1;0;false;false;;;;;;
                                  -170237;5;0;false;false;63;95;191;;;
                                  -170242;3;0;false;false;;;;;;
                                  -170245;2;0;false;false;63;95;191;;;
                                  -170247;2;0;false;false;;;;;;
                                  -170249;4;1;false;false;127;0;85;;;
                                  -170253;1;0;false;false;;;;;;
                                  -170254;15;0;false;false;0;0;0;;;
                                  -170269;1;0;false;false;;;;;;
                                  -170270;6;0;false;false;0;0;0;;;
                                  -170276;1;0;false;false;;;;;;
                                  -170277;1;0;false;false;0;0;0;;;
                                  -170278;3;0;false;false;;;;;;
                                  -170281;3;1;false;false;127;0;85;;;
                                  -170284;1;0;false;false;;;;;;
                                  -170285;7;0;false;false;0;0;0;;;
                                  -170292;3;0;false;false;;;;;;
                                  -170295;9;0;false;false;0;0;0;;;
                                  -170304;1;0;false;false;;;;;;
                                  -170305;1;0;false;false;0;0;0;;;
                                  -170306;1;0;false;false;;;;;;
                                  -170307;4;1;false;false;127;0;85;;;
                                  -170311;1;0;false;false;0;0;0;;;
                                  -170312;3;0;false;false;;;;;;
                                  -170315;2;1;false;false;127;0;85;;;
                                  -170317;1;0;false;false;;;;;;
                                  -170318;14;0;false;false;0;0;0;;;
                                  -170332;1;0;false;false;;;;;;
                                  -170333;2;0;false;false;0;0;0;;;
                                  -170335;1;0;false;false;;;;;;
                                  -170336;2;0;false;false;0;0;0;;;
                                  -170338;1;0;false;false;;;;;;
                                  -170339;1;0;false;false;0;0;0;;;
                                  -170340;4;0;false;false;;;;;;
                                  -170344;35;0;false;false;63;127;95;;;
                                  -170379;2;0;false;false;;;;;;
                                  -170381;6;0;false;false;0;0;0;;;
                                  -170387;1;0;false;false;;;;;;
                                  -170388;1;0;false;false;0;0;0;;;
                                  -170389;1;0;false;false;;;;;;
                                  -170390;27;0;false;false;0;0;0;;;
                                  -170417;1;0;false;false;;;;;;
                                  -170418;1;0;false;false;0;0;0;;;
                                  -170419;1;0;false;false;;;;;;
                                  -170420;17;0;false;false;0;0;0;;;
                                  -170437;3;0;false;false;;;;;;
                                  -170440;1;0;false;false;0;0;0;;;
                                  -170441;3;0;false;false;;;;;;
                                  -170444;4;1;false;false;127;0;85;;;
                                  -170448;1;0;false;false;;;;;;
                                  -170449;1;0;false;false;0;0;0;;;
                                  -170450;4;0;false;false;;;;;;
                                  -170454;26;0;false;false;63;127;95;;;
                                  -170480;2;0;false;false;;;;;;
                                  -170482;6;0;false;false;0;0;0;;;
                                  -170488;1;0;false;false;;;;;;
                                  -170489;1;0;false;false;0;0;0;;;
                                  -170490;1;0;false;false;;;;;;
                                  -170491;29;0;false;false;0;0;0;;;
                                  -170520;1;0;false;false;;;;;;
                                  -170521;1;0;false;false;0;0;0;;;
                                  -170522;1;0;false;false;;;;;;
                                  -170523;17;0;false;false;0;0;0;;;
                                  -170540;4;0;false;false;;;;;;
                                  -170544;2;1;false;false;127;0;85;;;
                                  -170546;1;0;false;false;;;;;;
                                  -170547;7;0;false;false;0;0;0;;;
                                  -170554;1;0;false;false;;;;;;
                                  -170555;2;0;false;false;0;0;0;;;
                                  -170557;1;0;false;false;;;;;;
                                  -170558;9;0;false;false;0;0;0;;;
                                  -170567;1;0;false;false;;;;;;
                                  -170568;1;0;false;false;0;0;0;;;
                                  -170569;6;0;false;false;;;;;;
                                  -170575;39;0;false;false;63;127;95;;;
                                  -170614;3;0;false;false;;;;;;
                                  -170617;2;1;false;false;127;0;85;;;
                                  -170619;1;0;false;false;;;;;;
                                  -170620;17;0;false;false;0;0;0;;;
                                  -170637;1;0;false;false;;;;;;
                                  -170638;1;0;false;false;0;0;0;;;
                                  -170639;1;0;false;false;;;;;;
                                  -170640;9;0;false;false;0;0;0;;;
                                  -170649;1;0;false;false;;;;;;
                                  -170650;2;0;false;false;0;0;0;;;
                                  -170652;1;0;false;false;;;;;;
                                  -170653;1;0;false;false;0;0;0;;;
                                  -170654;1;0;false;false;;;;;;
                                  -170655;2;0;false;false;0;0;0;;;
                                  -170657;1;0;false;false;;;;;;
                                  -170658;16;0;false;false;0;0;0;;;
                                  -170674;1;0;false;false;;;;;;
                                  -170675;2;0;false;false;0;0;0;;;
                                  -170677;1;0;false;false;;;;;;
                                  -170678;2;0;false;false;0;0;0;;;
                                  -170680;1;0;false;false;;;;;;
                                  -170681;2;0;false;false;0;0;0;;;
                                  -170683;1;0;false;false;;;;;;
                                  -170684;15;0;false;false;0;0;0;;;
                                  -170699;1;0;false;false;;;;;;
                                  -170700;2;0;false;false;0;0;0;;;
                                  -170702;1;0;false;false;;;;;;
                                  -170703;3;0;false;false;0;0;0;;;
                                  -170706;1;0;false;false;;;;;;
                                  -170707;1;0;false;false;0;0;0;;;
                                  -170708;6;0;false;false;;;;;;
                                  -170714;63;0;false;false;63;127;95;;;
                                  -170777;4;0;false;false;;;;;;
                                  -170781;64;0;false;false;63;127;95;;;
                                  -170845;4;0;false;false;;;;;;
                                  -170849;3;1;false;false;127;0;85;;;
                                  -170852;1;0;false;false;;;;;;
                                  -170853;1;0;false;false;0;0;0;;;
                                  -170854;1;0;false;false;;;;;;
                                  -170855;1;0;false;false;0;0;0;;;
                                  -170856;1;0;false;false;;;;;;
                                  -170857;15;0;false;false;0;0;0;;;
                                  -170872;1;0;false;false;;;;;;
                                  -170873;1;0;false;false;0;0;0;;;
                                  -170874;1;0;false;false;;;;;;
                                  -170875;3;0;false;false;0;0;0;;;
                                  -170878;6;0;false;false;;;;;;
                                  -170884;6;0;false;false;0;0;0;;;
                                  -170890;1;0;false;false;;;;;;
                                  -170891;1;0;false;false;0;0;0;;;
                                  -170892;1;0;false;false;;;;;;
                                  -170893;15;0;false;false;0;0;0;;;
                                  -170908;1;0;false;false;;;;;;
                                  -170909;1;0;false;false;0;0;0;;;
                                  -170910;1;0;false;false;;;;;;
                                  -170911;17;0;false;false;0;0;0;;;
                                  -170928;5;0;false;false;;;;;;
                                  -170933;1;0;false;false;0;0;0;;;
                                  -170934;4;0;false;false;;;;;;
                                  -170938;1;0;false;false;0;0;0;;;
                                  -170939;3;0;false;false;;;;;;
                                  -170942;1;0;false;false;0;0;0;;;
                                  -170943;3;0;false;false;;;;;;
                                  -170946;2;1;false;false;127;0;85;;;
                                  -170948;1;0;false;false;;;;;;
                                  -170949;7;0;false;false;0;0;0;;;
                                  -170956;1;0;false;false;;;;;;
                                  -170957;2;0;false;false;0;0;0;;;
                                  -170959;1;0;false;false;;;;;;
                                  -170960;9;0;false;false;0;0;0;;;
                                  -170969;1;0;false;false;;;;;;
                                  -170970;1;0;false;false;0;0;0;;;
                                  -170971;4;0;false;false;;;;;;
                                  -170975;7;1;false;false;127;0;85;;;
                                  -170982;1;0;false;false;;;;;;
                                  -170983;6;0;false;false;0;0;0;;;
                                  -170989;1;0;false;false;;;;;;
                                  -170990;1;0;false;false;0;0;0;;;
                                  -170991;1;0;false;false;;;;;;
                                  -170992;5;1;false;false;127;0;85;;;
                                  -170997;1;0;false;false;0;0;0;;;
                                  -170998;8;0;false;false;;;;;;
                                  -171006;2;1;false;false;127;0;85;;;
                                  -171008;1;0;false;false;;;;;;
                                  -171009;11;0;false;false;0;0;0;;;
                                  -171020;1;0;false;false;;;;;;
                                  -171021;1;0;false;false;0;0;0;;;
                                  -171022;5;0;false;false;;;;;;
                                  -171027;60;0;false;false;63;127;95;;;
                                  -171087;3;0;false;false;;;;;;
                                  -171090;63;0;false;false;63;127;95;;;
                                  -171153;3;0;false;false;;;;;;
                                  -171156;60;0;false;false;63;127;95;;;
                                  -171216;3;0;false;false;;;;;;
                                  -171219;36;0;false;false;63;127;95;;;
                                  -171255;3;0;false;false;;;;;;
                                  -171258;6;0;false;false;0;0;0;;;
                                  -171264;1;0;false;false;;;;;;
                                  -171265;1;0;false;false;0;0;0;;;
                                  -171266;1;0;false;false;;;;;;
                                  -171267;16;0;false;false;0;0;0;;;
                                  -171283;1;0;false;false;;;;;;
                                  -171284;1;0;false;false;0;0;0;;;
                                  -171285;1;0;false;false;;;;;;
                                  -171286;12;0;false;false;0;0;0;;;
                                  -171298;1;0;false;false;;;;;;
                                  -171299;2;0;false;false;0;0;0;;;
                                  -171301;1;0;false;false;;;;;;
                                  -171302;1;0;false;false;0;0;0;;;
                                  -171303;1;0;false;false;;;;;;
                                  -171304;2;0;false;false;0;0;0;;;
                                  -171306;7;0;false;false;;;;;;
                                  -171313;16;0;false;false;0;0;0;;;
                                  -171329;1;0;false;false;;;;;;
                                  -171330;1;0;false;false;0;0;0;;;
                                  -171331;1;0;false;false;;;;;;
                                  -171332;12;0;false;false;0;0;0;;;
                                  -171344;1;0;false;false;;;;;;
                                  -171345;1;0;false;false;0;0;0;;;
                                  -171346;1;0;false;false;;;;;;
                                  -171347;11;0;false;false;0;0;0;;;
                                  -171358;1;0;false;false;;;;;;
                                  -171359;2;0;false;false;0;0;0;;;
                                  -171361;1;0;false;false;;;;;;
                                  -171362;2;0;false;false;0;0;0;;;
                                  -171364;4;0;false;false;;;;;;
                                  -171368;1;0;false;false;0;0;0;;;
                                  -171369;1;0;false;false;;;;;;
                                  -171370;4;1;false;false;127;0;85;;;
                                  -171374;1;0;false;false;;;;;;
                                  -171375;2;1;false;false;127;0;85;;;
                                  -171377;1;0;false;false;;;;;;
                                  -171378;10;0;false;false;0;0;0;;;
                                  -171388;1;0;false;false;;;;;;
                                  -171389;1;0;false;false;0;0;0;;;
                                  -171390;5;0;false;false;;;;;;
                                  -171395;60;0;false;false;63;127;95;;;
                                  -171455;3;0;false;false;;;;;;
                                  -171458;63;0;false;false;63;127;95;;;
                                  -171521;3;0;false;false;;;;;;
                                  -171524;52;0;false;false;63;127;95;;;
                                  -171576;3;0;false;false;;;;;;
                                  -171579;34;0;false;false;63;127;95;;;
                                  -171613;3;0;false;false;;;;;;
                                  -171616;6;0;false;false;0;0;0;;;
                                  -171622;1;0;false;false;;;;;;
                                  -171623;1;0;false;false;0;0;0;;;
                                  -171624;1;0;false;false;;;;;;
                                  -171625;16;0;false;false;0;0;0;;;
                                  -171641;1;0;false;false;;;;;;
                                  -171642;1;0;false;false;0;0;0;;;
                                  -171643;1;0;false;false;;;;;;
                                  -171644;9;0;false;false;0;0;0;;;
                                  -171653;1;0;false;false;;;;;;
                                  -171654;2;0;false;false;0;0;0;;;
                                  -171656;1;0;false;false;;;;;;
                                  -171657;1;0;false;false;0;0;0;;;
                                  -171658;1;0;false;false;;;;;;
                                  -171659;2;0;false;false;0;0;0;;;
                                  -171661;7;0;false;false;;;;;;
                                  -171668;16;0;false;false;0;0;0;;;
                                  -171684;1;0;false;false;;;;;;
                                  -171685;1;0;false;false;0;0;0;;;
                                  -171686;1;0;false;false;;;;;;
                                  -171687;9;0;false;false;0;0;0;;;
                                  -171696;1;0;false;false;;;;;;
                                  -171697;1;0;false;false;0;0;0;;;
                                  -171698;1;0;false;false;;;;;;
                                  -171699;11;0;false;false;0;0;0;;;
                                  -171710;1;0;false;false;;;;;;
                                  -171711;2;0;false;false;0;0;0;;;
                                  -171713;1;0;false;false;;;;;;
                                  -171714;2;0;false;false;0;0;0;;;
                                  -171716;4;0;false;false;;;;;;
                                  -171720;1;0;false;false;0;0;0;;;
                                  -171721;1;0;false;false;;;;;;
                                  -171722;4;1;false;false;127;0;85;;;
                                  -171726;1;0;false;false;;;;;;
                                  -171727;1;0;false;false;0;0;0;;;
                                  -171728;5;0;false;false;;;;;;
                                  -171733;60;0;false;false;63;127;95;;;
                                  -171793;3;0;false;false;;;;;;
                                  -171796;62;0;false;false;63;127;95;;;
                                  -171858;3;0;false;false;;;;;;
                                  -171861;59;0;false;false;63;127;95;;;
                                  -171920;3;0;false;false;;;;;;
                                  -171923;44;0;false;false;63;127;95;;;
                                  -171967;3;0;false;false;;;;;;
                                  -171970;6;0;false;false;0;0;0;;;
                                  -171976;1;0;false;false;;;;;;
                                  -171977;1;0;false;false;0;0;0;;;
                                  -171978;1;0;false;false;;;;;;
                                  -171979;16;0;false;false;0;0;0;;;
                                  -171995;1;0;false;false;;;;;;
                                  -171996;1;0;false;false;0;0;0;;;
                                  -171997;1;0;false;false;;;;;;
                                  -171998;8;0;false;false;0;0;0;;;
                                  -172006;1;0;false;false;;;;;;
                                  -172007;2;0;false;false;0;0;0;;;
                                  -172009;1;0;false;false;;;;;;
                                  -172010;1;0;false;false;0;0;0;;;
                                  -172011;1;0;false;false;;;;;;
                                  -172012;2;0;false;false;0;0;0;;;
                                  -172014;8;0;false;false;;;;;;
                                  -172022;16;0;false;false;0;0;0;;;
                                  -172038;1;0;false;false;;;;;;
                                  -172039;1;0;false;false;0;0;0;;;
                                  -172040;1;0;false;false;;;;;;
                                  -172041;9;0;false;false;0;0;0;;;
                                  -172050;1;0;false;false;;;;;;
                                  -172051;2;0;false;false;0;0;0;;;
                                  -172053;1;0;false;false;;;;;;
                                  -172054;1;0;false;false;0;0;0;;;
                                  -172055;1;0;false;false;;;;;;
                                  -172056;2;0;false;false;0;0;0;;;
                                  -172058;7;0;false;false;;;;;;
                                  -172065;16;0;false;false;0;0;0;;;
                                  -172081;1;0;false;false;;;;;;
                                  -172082;1;0;false;false;0;0;0;;;
                                  -172083;1;0;false;false;;;;;;
                                  -172084;8;0;false;false;0;0;0;;;
                                  -172092;1;0;false;false;;;;;;
                                  -172093;1;0;false;false;0;0;0;;;
                                  -172094;1;0;false;false;;;;;;
                                  -172095;11;0;false;false;0;0;0;;;
                                  -172106;1;0;false;false;;;;;;
                                  -172107;2;0;false;false;0;0;0;;;
                                  -172109;1;0;false;false;;;;;;
                                  -172110;1;0;false;false;0;0;0;;;
                                  -172111;1;0;false;false;;;;;;
                                  -172112;2;0;false;false;0;0;0;;;
                                  -172114;7;0;false;false;;;;;;
                                  -172121;16;0;false;false;0;0;0;;;
                                  -172137;1;0;false;false;;;;;;
                                  -172138;1;0;false;false;0;0;0;;;
                                  -172139;1;0;false;false;;;;;;
                                  -172140;9;0;false;false;0;0;0;;;
                                  -172149;1;0;false;false;;;;;;
                                  -172150;1;0;false;false;0;0;0;;;
                                  -172151;1;0;false;false;;;;;;
                                  -172152;11;0;false;false;0;0;0;;;
                                  -172163;1;0;false;false;;;;;;
                                  -172164;2;0;false;false;0;0;0;;;
                                  -172166;1;0;false;false;;;;;;
                                  -172167;2;0;false;false;0;0;0;;;
                                  -172169;4;0;false;false;;;;;;
                                  -172173;1;0;false;false;0;0;0;;;
                                  -172174;4;0;false;false;;;;;;
                                  -172178;73;0;false;false;63;127;95;;;
                                  -172251;2;0;false;false;;;;;;
                                  -172253;17;0;false;false;63;127;95;;;
                                  -172270;2;0;false;false;;;;;;
                                  -172272;2;1;false;false;127;0;85;;;
                                  -172274;1;0;false;false;;;;;;
                                  -172275;8;0;false;false;0;0;0;;;
                                  -172283;1;0;false;false;;;;;;
                                  -172284;2;0;false;false;0;0;0;;;
                                  -172286;1;0;false;false;;;;;;
                                  -172287;15;0;false;false;0;0;0;;;
                                  -172302;1;0;false;false;;;;;;
                                  -172303;1;0;false;false;0;0;0;;;
                                  -172304;1;0;false;false;;;;;;
                                  -172305;2;0;false;false;0;0;0;;;
                                  -172307;1;0;false;false;;;;;;
                                  -172308;2;0;false;false;0;0;0;;;
                                  -172310;1;0;false;false;;;;;;
                                  -172311;15;0;false;false;0;0;0;;;
                                  -172326;1;0;false;false;;;;;;
                                  -172327;2;0;false;false;0;0;0;;;
                                  -172329;1;0;false;false;;;;;;
                                  -172330;7;0;false;false;0;0;0;;;
                                  -172337;1;0;false;false;;;;;;
                                  -172338;2;0;false;false;0;0;0;;;
                                  -172340;9;0;false;false;;;;;;
                                  -172349;15;0;false;false;0;0;0;;;
                                  -172364;1;0;false;false;;;;;;
                                  -172365;2;0;false;false;0;0;0;;;
                                  -172367;1;0;false;false;;;;;;
                                  -172368;6;0;false;false;0;0;0;;;
                                  -172374;1;0;false;false;;;;;;
                                  -172375;2;0;false;false;0;0;0;;;
                                  -172377;1;0;false;false;;;;;;
                                  -172378;15;0;false;false;0;0;0;;;
                                  -172393;1;0;false;false;;;;;;
                                  -172394;2;0;false;false;0;0;0;;;
                                  -172396;1;0;false;false;;;;;;
                                  -172397;6;0;false;false;0;0;0;;;
                                  -172403;1;0;false;false;;;;;;
                                  -172404;2;0;false;false;0;0;0;;;
                                  -172406;9;0;false;false;;;;;;
                                  -172415;15;0;false;false;0;0;0;;;
                                  -172430;1;0;false;false;;;;;;
                                  -172431;2;0;false;false;0;0;0;;;
                                  -172433;1;0;false;false;;;;;;
                                  -172434;4;0;false;false;0;0;0;;;
                                  -172438;1;0;false;false;;;;;;
                                  -172439;1;0;false;false;0;0;0;;;
                                  -172440;5;0;false;false;;;;;;
                                  -172445;27;0;false;false;0;0;0;;;
                                  -172472;4;0;false;false;;;;;;
                                  -172476;1;0;false;false;0;0;0;;;
                                  -172477;3;0;false;false;;;;;;
                                  -172480;1;0;false;false;0;0;0;;;
                                  -172481;3;0;false;false;;;;;;
                                  -172484;4;1;false;false;127;0;85;;;
                                  -172488;1;0;false;false;;;;;;
                                  -172489;1;0;false;false;0;0;0;;;
                                  -172490;4;0;false;false;;;;;;
                                  -172494;21;0;false;false;0;0;0;;;
                                  -172515;5;0;false;false;;;;;;
                                  -172520;1;0;false;false;0;0;0;;;
                                  -172521;2;0;false;false;;;;;;
                                  -172523;1;0;false;false;0;0;0;;;
                                  -172524;2;0;false;false;;;;;;
                                  -172526;3;0;false;false;63;95;191;;;
                                  -172529;3;0;false;false;;;;;;
                                  -172532;1;0;false;false;63;95;191;;;
                                  -172533;1;0;false;false;;;;;;
                                  -172534;2;0;false;false;63;95;191;;;
                                  -172536;1;0;false;false;;;;;;
                                  -172537;1;0;false;false;63;95;191;;;
                                  -172538;1;0;false;false;;;;;;
                                  -172539;9;0;false;false;63;95;191;;;
                                  -172548;1;0;false;false;;;;;;
                                  -172549;8;0;false;false;63;95;191;;;
                                  -172557;1;0;false;false;;;;;;
                                  -172558;7;0;false;false;63;95;191;;;
                                  -172565;1;0;false;false;;;;;;
                                  -172566;6;0;false;false;63;95;191;;;
                                  -172572;1;0;false;false;;;;;;
                                  -172573;4;0;false;false;63;95;191;;;
                                  -172577;1;0;false;false;;;;;;
                                  -172578;3;0;false;false;63;95;191;;;
                                  -172581;1;0;false;false;;;;;;
                                  -172582;3;0;false;false;63;95;191;;;
                                  -172585;1;0;false;false;;;;;;
                                  -172586;4;0;false;false;63;95;191;;;
                                  -172590;1;0;false;false;;;;;;
                                  -172591;3;0;false;false;63;95;191;;;
                                  -172594;1;0;false;false;;;;;;
                                  -172595;7;0;false;false;63;95;191;;;
                                  -172602;3;0;false;false;;;;;;
                                  -172605;1;0;false;false;63;95;191;;;
                                  -172606;1;0;false;false;;;;;;
                                  -172607;6;0;false;false;63;95;191;;;
                                  -172613;1;0;false;false;;;;;;
                                  -172614;2;0;false;false;63;95;191;;;
                                  -172616;1;0;false;false;;;;;;
                                  -172617;10;0;false;false;63;95;191;;;
                                  -172627;3;0;false;false;;;;;;
                                  -172630;1;0;false;false;63;95;191;;;
                                  -172631;1;0;false;false;;;;;;
                                  -172632;3;0;false;false;127;127;159;;;
                                  -172635;3;0;false;false;;;;;;
                                  -172638;1;0;false;false;63;95;191;;;
                                  -172639;3;0;false;false;;;;;;
                                  -172642;1;0;false;false;63;95;191;;;
                                  -172643;1;0;false;false;;;;;;
                                  -172644;7;1;false;false;127;159;191;;;
                                  -172651;5;0;false;false;63;95;191;;;
                                  -172656;1;0;false;false;;;;;;
                                  -172657;8;0;false;false;63;95;191;;;
                                  -172665;1;0;false;false;;;;;;
                                  -172666;5;0;false;false;63;95;191;;;
                                  -172671;3;0;false;false;;;;;;
                                  -172674;2;0;false;false;63;95;191;;;
                                  -172676;2;0;false;false;;;;;;
                                  -172678;4;1;false;false;127;0;85;;;
                                  -172682;1;0;false;false;;;;;;
                                  -172683;19;0;false;false;0;0;0;;;
                                  -172702;1;0;false;false;;;;;;
                                  -172703;6;0;false;false;0;0;0;;;
                                  -172709;1;0;false;false;;;;;;
                                  -172710;1;0;false;false;0;0;0;;;
                                  -172711;3;0;false;false;;;;;;
                                  -172714;2;1;false;false;127;0;85;;;
                                  -172716;1;0;false;false;;;;;;
                                  -172717;19;0;false;false;0;0;0;;;
                                  -172736;1;0;false;false;;;;;;
                                  -172737;2;0;false;false;0;0;0;;;
                                  -172739;1;0;false;false;;;;;;
                                  -172740;4;1;false;false;127;0;85;;;
                                  -172744;1;0;false;false;0;0;0;;;
                                  -172745;1;0;false;false;;;;;;
                                  -172746;1;0;false;false;0;0;0;;;
                                  -172747;4;0;false;false;;;;;;
                                  -172751;18;0;false;false;0;0;0;;;
                                  -172769;1;0;false;false;;;;;;
                                  -172770;1;0;false;false;0;0;0;;;
                                  -172771;1;0;false;false;;;;;;
                                  -172772;3;1;false;false;127;0;85;;;
                                  -172775;1;0;false;false;;;;;;
                                  -172776;18;0;false;false;0;0;0;;;
                                  -172794;1;0;false;false;;;;;;
                                  -172795;13;0;false;false;0;0;0;;;
                                  -172808;3;0;false;false;;;;;;
                                  -172811;1;0;false;false;0;0;0;;;
                                  -172812;6;0;false;false;;;;;;
                                  -172818;5;0;false;false;0;0;0;;;
                                  -172823;1;0;false;false;;;;;;
                                  -172824;11;0;false;false;0;0;0;;;
                                  -172835;1;0;false;false;;;;;;
                                  -172836;1;0;false;false;0;0;0;;;
                                  -172837;1;0;false;false;;;;;;
                                  -172838;3;1;false;false;127;0;85;;;
                                  -172841;1;0;false;false;;;;;;
                                  -172842;8;0;false;false;0;0;0;;;
                                  -172850;3;0;false;false;;;;;;
                                  -172853;21;0;false;false;0;0;0;;;
                                  -172874;1;0;false;false;;;;;;
                                  -172875;1;0;false;false;0;0;0;;;
                                  -172876;1;0;false;false;;;;;;
                                  -172877;16;0;false;false;0;0;0;;;
                                  -172893;3;0;false;false;;;;;;
                                  -172896;19;0;false;false;0;0;0;;;
                                  -172915;1;0;false;false;;;;;;
                                  -172916;1;0;false;false;0;0;0;;;
                                  -172917;1;0;false;false;;;;;;
                                  -172918;14;0;false;false;0;0;0;;;
                                  -172932;3;0;false;false;;;;;;
                                  -172935;21;0;false;false;0;0;0;;;
                                  -172956;1;0;false;false;;;;;;
                                  -172957;1;0;false;false;0;0;0;;;
                                  -172958;1;0;false;false;;;;;;
                                  -172959;16;0;false;false;0;0;0;;;
                                  -172975;3;0;false;false;;;;;;
                                  -172978;16;0;false;false;0;0;0;;;
                                  -172994;1;0;false;false;;;;;;
                                  -172995;1;0;false;false;0;0;0;;;
                                  -172996;1;0;false;false;;;;;;
                                  -172997;4;1;false;false;127;0;85;;;
                                  -173001;1;0;false;false;0;0;0;;;
                                  -173002;3;0;false;false;;;;;;
                                  -173005;26;0;false;false;0;0;0;;;
                                  -173031;1;0;false;false;;;;;;
                                  -173032;13;0;false;false;0;0;0;;;
                                  -173045;3;0;false;false;;;;;;
                                  -173048;2;1;false;false;127;0;85;;;
                                  -173050;1;0;false;false;;;;;;
                                  -173051;18;0;false;false;0;0;0;;;
                                  -173069;1;0;false;false;;;;;;
                                  -173070;1;0;false;false;0;0;0;;;
                                  -173071;4;0;false;false;;;;;;
                                  -173075;17;0;false;false;0;0;0;;;
                                  -173092;3;0;false;false;;;;;;
                                  -173095;1;0;false;false;0;0;0;;;
                                  -173096;2;0;false;false;;;;;;
                                  -173098;1;0;false;false;0;0;0;;;
                                  -173099;2;0;false;false;;;;;;
                                  -173101;3;0;false;false;63;95;191;;;
                                  -173104;3;0;false;false;;;;;;
                                  -173107;1;0;false;false;63;95;191;;;
                                  -173108;1;0;false;false;;;;;;
                                  -173109;6;0;false;false;63;95;191;;;
                                  -173115;1;0;false;false;;;;;;
                                  -173116;3;0;false;false;63;95;191;;;
                                  -173119;1;0;false;false;;;;;;
                                  -173120;9;0;false;false;63;95;191;;;
                                  -173129;1;0;false;false;;;;;;
                                  -173130;10;0;false;false;63;95;191;;;
                                  -173140;3;0;false;false;;;;;;
                                  -173143;1;0;false;false;63;95;191;;;
                                  -173144;1;0;false;false;;;;;;
                                  -173145;3;0;false;false;127;127;159;;;
                                  -173148;3;0;false;false;;;;;;
                                  -173151;1;0;false;false;63;95;191;;;
                                  -173152;3;0;false;false;;;;;;
                                  -173155;1;0;false;false;63;95;191;;;
                                  -173156;1;0;false;false;;;;;;
                                  -173157;7;1;false;false;127;159;191;;;
                                  -173164;5;0;false;false;63;95;191;;;
                                  -173169;1;0;false;false;;;;;;
                                  -173170;8;0;false;false;63;95;191;;;
                                  -173178;1;0;false;false;;;;;;
                                  -173179;5;0;false;false;63;95;191;;;
                                  -173184;3;0;false;false;;;;;;
                                  -173187;2;0;false;false;63;95;191;;;
                                  -173189;2;0;false;false;;;;;;
                                  -173191;4;1;false;false;127;0;85;;;
                                  -173195;1;0;false;false;;;;;;
                                  -173196;17;0;false;false;0;0;0;;;
                                  -173213;1;0;false;false;;;;;;
                                  -173214;6;0;false;false;0;0;0;;;
                                  -173220;1;0;false;false;;;;;;
                                  -173221;1;0;false;false;0;0;0;;;
                                  -173222;3;0;false;false;;;;;;
                                  -173225;2;1;false;false;127;0;85;;;
                                  -173227;1;0;false;false;;;;;;
                                  -173228;19;0;false;false;0;0;0;;;
                                  -173247;1;0;false;false;;;;;;
                                  -173248;2;0;false;false;0;0;0;;;
                                  -173250;1;0;false;false;;;;;;
                                  -173251;4;1;false;false;127;0;85;;;
                                  -173255;1;0;false;false;0;0;0;;;
                                  -173256;1;0;false;false;;;;;;
                                  -173257;1;0;false;false;0;0;0;;;
                                  -173258;4;0;false;false;;;;;;
                                  -173262;2;1;false;false;127;0;85;;;
                                  -173264;1;0;false;false;;;;;;
                                  -173265;21;0;false;false;0;0;0;;;
                                  -173286;1;0;false;false;;;;;;
                                  -173287;2;0;false;false;0;0;0;;;
                                  -173289;1;0;false;false;;;;;;
                                  -173290;11;0;false;false;0;0;0;;;
                                  -173301;1;0;false;false;;;;;;
                                  -173302;2;0;false;false;0;0;0;;;
                                  -173304;1;0;false;false;;;;;;
                                  -173305;20;0;false;false;0;0;0;;;
                                  -173325;1;0;false;false;;;;;;
                                  -173326;2;0;false;false;0;0;0;;;
                                  -173328;1;0;false;false;;;;;;
                                  -173329;12;0;false;false;0;0;0;;;
                                  -173341;1;0;false;false;;;;;;
                                  -173342;1;0;false;false;0;0;0;;;
                                  -173343;5;0;false;false;;;;;;
                                  -173348;3;1;false;false;127;0;85;;;
                                  -173351;1;0;false;false;;;;;;
                                  -173352;1;0;false;false;0;0;0;;;
                                  -173353;6;0;false;false;;;;;;
                                  -173359;2;1;false;false;127;0;85;;;
                                  -173361;1;0;false;false;;;;;;
                                  -173362;12;0;false;false;0;0;0;;;
                                  -173374;1;0;false;false;;;;;;
                                  -173375;1;0;false;false;0;0;0;;;
                                  -173376;1;0;false;false;;;;;;
                                  -173377;11;0;false;false;0;0;0;;;
                                  -173388;1;0;false;false;;;;;;
                                  -173389;1;0;false;false;0;0;0;;;
                                  -173390;1;0;false;false;;;;;;
                                  -173391;2;0;false;false;0;0;0;;;
                                  -173393;1;0;false;false;;;;;;
                                  -173394;1;0;false;false;0;0;0;;;
                                  -173395;7;0;false;false;;;;;;
                                  -173402;32;0;false;false;0;0;0;;;
                                  -173434;1;0;false;false;;;;;;
                                  -173435;11;0;false;false;0;0;0;;;
                                  -173446;1;0;false;false;;;;;;
                                  -173447;1;0;false;false;0;0;0;;;
                                  -173448;1;0;false;false;;;;;;
                                  -173449;12;0;false;false;0;0;0;;;
                                  -173461;1;0;false;false;;;;;;
                                  -173462;25;0;false;false;0;0;0;;;
                                  -173487;6;0;false;false;;;;;;
                                  -173493;1;0;false;false;0;0;0;;;
                                  -173494;5;0;false;false;;;;;;
                                  -173499;1;0;false;false;0;0;0;;;
                                  -173500;5;0;false;false;;;;;;
                                  -173505;5;1;false;false;127;0;85;;;
                                  -173510;1;0;false;false;;;;;;
                                  -173511;9;0;false;false;0;0;0;;;
                                  -173520;1;0;false;false;;;;;;
                                  -173521;6;0;false;false;0;0;0;;;
                                  -173527;1;0;false;false;;;;;;
                                  -173528;1;0;false;false;0;0;0;;;
                                  -173529;6;0;false;false;;;;;;
                                  -173535;69;0;false;false;63;127;95;;;
                                  -173604;4;0;false;false;;;;;;
                                  -173608;64;0;false;false;63;127;95;;;
                                  -173672;4;0;false;false;;;;;;
                                  -173676;18;0;false;false;63;127;95;;;
                                  -173694;4;0;false;false;;;;;;
                                  -173698;47;0;false;false;63;127;95;;;
                                  -173745;4;0;false;false;;;;;;
                                  -173749;2;1;false;false;127;0;85;;;
                                  -173751;1;0;false;false;;;;;;
                                  -173752;11;0;false;false;0;0;0;;;
                                  -173763;1;0;false;false;;;;;;
                                  -173764;2;0;false;false;0;0;0;;;
                                  -173766;1;0;false;false;;;;;;
                                  -173767;31;0;false;false;0;0;0;;;
                                  -173798;1;0;false;false;;;;;;
                                  -173799;1;0;false;false;0;0;0;;;
                                  -173800;7;0;false;false;;;;;;
                                  -173807;5;1;false;false;127;0;85;;;
                                  -173812;1;0;false;false;;;;;;
                                  -173813;6;0;false;false;0;0;0;;;
                                  -173819;6;0;false;false;;;;;;
                                  -173825;1;0;false;false;0;0;0;;;
                                  -173826;5;0;false;false;;;;;;
                                  -173831;1;0;false;false;0;0;0;;;
                                  -173832;4;0;false;false;;;;;;
                                  -173836;1;0;false;false;0;0;0;;;
                                  -173837;3;0;false;false;;;;;;
                                  -173840;1;0;false;false;0;0;0;;;
                                  -173841;3;0;false;false;;;;;;
                                  -173844;18;0;false;false;0;0;0;;;
                                  -173862;1;0;false;false;;;;;;
                                  -173863;1;0;false;false;0;0;0;;;
                                  -173864;1;0;false;false;;;;;;
                                  -173865;4;1;false;false;127;0;85;;;
                                  -173869;1;0;false;false;0;0;0;;;
                                  -173870;2;0;false;false;;;;;;
                                  -173872;1;0;false;false;0;0;0;;;
                                  -173873;2;0;false;false;;;;;;
                                  -173875;3;0;false;false;63;95;191;;;
                                  -173878;3;0;false;false;;;;;;
                                  -173881;1;0;false;false;63;95;191;;;
                                  -173882;1;0;false;false;;;;;;
                                  -173883;7;0;false;false;63;95;191;;;
                                  -173890;1;0;false;false;;;;;;
                                  -173891;3;0;false;false;63;95;191;;;
                                  -173894;1;0;false;false;;;;;;
                                  -173895;5;0;false;false;63;95;191;;;
                                  -173900;1;0;false;false;;;;;;
                                  -173901;8;0;false;false;63;95;191;;;
                                  -173909;1;0;false;false;;;;;;
                                  -173910;3;0;false;false;63;95;191;;;
                                  -173913;1;0;false;false;;;;;;
                                  -173914;9;0;false;false;63;95;191;;;
                                  -173923;1;0;false;false;;;;;;
                                  -173924;2;0;false;false;63;95;191;;;
                                  -173926;1;0;false;false;;;;;;
                                  -173927;5;0;false;false;63;95;191;;;
                                  -173932;1;0;false;false;;;;;;
                                  -173933;6;0;false;false;63;95;191;;;
                                  -173939;1;0;false;false;;;;;;
                                  -173940;1;0;false;false;63;95;191;;;
                                  -173941;1;0;false;false;;;;;;
                                  -173942;3;0;false;false;63;95;191;;;
                                  -173945;1;0;false;false;;;;;;
                                  -173946;4;0;false;false;63;95;191;;;
                                  -173950;4;0;false;false;;;;;;
                                  -173954;1;0;false;false;63;95;191;;;
                                  -173955;1;0;false;false;;;;;;
                                  -173956;8;0;false;false;63;95;191;;;
                                  -173964;3;0;false;false;;;;;;
                                  -173967;2;0;false;false;63;95;191;;;
                                  -173969;2;0;false;false;;;;;;
                                  -173971;4;1;false;false;127;0;85;;;
                                  -173975;1;0;false;false;;;;;;
                                  -173976;28;0;false;false;0;0;0;;;
                                  -174004;1;0;false;false;;;;;;
                                  -174005;6;0;false;false;0;0;0;;;
                                  -174011;1;0;false;false;;;;;;
                                  -174012;1;0;false;false;0;0;0;;;
                                  -174013;3;0;false;false;;;;;;
                                  -174016;2;1;false;false;127;0;85;;;
                                  -174018;1;0;false;false;;;;;;
                                  -174019;13;0;false;false;0;0;0;;;
                                  -174032;1;0;false;false;;;;;;
                                  -174033;2;0;false;false;0;0;0;;;
                                  -174035;1;0;false;false;;;;;;
                                  -174036;1;0;false;false;0;0;0;;;
                                  -174037;1;0;false;false;;;;;;
                                  -174038;2;0;false;false;0;0;0;;;
                                  -174040;1;0;false;false;;;;;;
                                  -174041;20;0;false;false;0;0;0;;;
                                  -174061;1;0;false;false;;;;;;
                                  -174062;1;0;false;false;0;0;0;;;
                                  -174063;4;0;false;false;;;;;;
                                  -174067;6;1;false;false;127;0;85;;;
                                  -174073;1;0;false;false;0;0;0;;;
                                  -174074;3;0;false;false;;;;;;
                                  -174077;1;0;false;false;0;0;0;;;
                                  -174078;3;0;false;false;;;;;;
                                  -174081;7;0;false;false;0;0;0;;;
                                  -174088;1;0;false;false;;;;;;
                                  -174089;2;0;false;false;0;0;0;;;
                                  -174091;1;0;false;false;;;;;;
                                  -174092;10;0;false;false;0;0;0;;;
                                  -174102;3;0;false;false;;;;;;
                                  -174105;16;0;false;false;0;0;0;;;
                                  -174121;1;0;false;false;;;;;;
                                  -174122;1;0;false;false;0;0;0;;;
                                  -174123;1;0;false;false;;;;;;
                                  -174124;4;1;false;false;127;0;85;;;
                                  -174128;1;0;false;false;0;0;0;;;
                                  -174129;3;0;false;false;;;;;;
                                  -174132;11;0;false;false;0;0;0;;;
                                  -174143;1;0;false;false;;;;;;
                                  -174144;1;0;false;false;0;0;0;;;
                                  -174145;1;0;false;false;;;;;;
                                  -174146;26;0;false;false;0;0;0;;;
                                  -174172;3;0;false;false;;;;;;
                                  -174175;17;0;false;false;0;0;0;;;
                                  -174192;3;0;false;false;;;;;;
                                  -174195;11;0;false;false;0;0;0;;;
                                  -174206;1;0;false;false;;;;;;
                                  -174207;1;0;false;false;0;0;0;;;
                                  -174208;1;0;false;false;;;;;;
                                  -174209;32;0;false;false;0;0;0;;;
                                  -174241;3;0;false;false;;;;;;
                                  -174244;12;0;false;false;0;0;0;;;
                                  -174256;3;0;false;false;;;;;;
                                  -174259;19;0;false;false;0;0;0;;;
                                  -174278;3;0;false;false;;;;;;
                                  -174281;20;0;false;false;0;0;0;;;
                                  -174301;1;0;false;false;;;;;;
                                  -174302;1;0;false;false;0;0;0;;;
                                  -174303;1;0;false;false;;;;;;
                                  -174304;3;1;false;false;127;0;85;;;
                                  -174307;1;0;false;false;;;;;;
                                  -174308;18;0;false;false;0;0;0;;;
                                  -174326;1;0;false;false;;;;;;
                                  -174327;13;0;false;false;0;0;0;;;
                                  -174340;2;0;false;false;;;;;;
                                  -174342;1;0;false;false;0;0;0;;;
                                  -174343;2;0;false;false;;;;;;
                                  -174345;3;0;false;false;63;95;191;;;
                                  -174348;4;0;false;false;;;;;;
                                  -174352;1;0;false;false;63;95;191;;;
                                  -174353;1;0;false;false;;;;;;
                                  -174354;7;0;false;false;63;95;191;;;
                                  -174361;1;0;false;false;;;;;;
                                  -174362;3;0;false;false;63;95;191;;;
                                  -174365;1;0;false;false;;;;;;
                                  -174366;5;0;false;false;63;95;191;;;
                                  -174371;1;0;false;false;;;;;;
                                  -174372;8;0;false;false;63;95;191;;;
                                  -174380;1;0;false;false;;;;;;
                                  -174381;3;0;false;false;63;95;191;;;
                                  -174384;1;0;false;false;;;;;;
                                  -174385;9;0;false;false;63;95;191;;;
                                  -174394;1;0;false;false;;;;;;
                                  -174395;2;0;false;false;63;95;191;;;
                                  -174397;1;0;false;false;;;;;;
                                  -174398;5;0;false;false;63;95;191;;;
                                  -174403;1;0;false;false;;;;;;
                                  -174404;6;0;false;false;63;95;191;;;
                                  -174410;1;0;false;false;;;;;;
                                  -174411;1;0;false;false;63;95;191;;;
                                  -174412;1;0;false;false;;;;;;
                                  -174413;3;0;false;false;63;95;191;;;
                                  -174416;1;0;false;false;;;;;;
                                  -174417;4;0;false;false;63;95;191;;;
                                  -174421;4;0;false;false;;;;;;
                                  -174425;1;0;false;false;63;95;191;;;
                                  -174426;1;0;false;false;;;;;;
                                  -174427;8;0;false;false;63;95;191;;;
                                  -174435;3;0;false;false;;;;;;
                                  -174438;2;0;false;false;63;95;191;;;
                                  -174440;2;0;false;false;;;;;;
                                  -174442;4;1;false;false;127;0;85;;;
                                  -174446;1;0;false;false;;;;;;
                                  -174447;21;0;false;false;0;0;0;;;
                                  -174468;1;0;false;false;;;;;;
                                  -174469;6;0;false;false;0;0;0;;;
                                  -174475;1;0;false;false;;;;;;
                                  -174476;1;0;false;false;0;0;0;;;
                                  -174477;3;0;false;false;;;;;;
                                  -174480;9;0;false;false;0;0;0;;;
                                  -174489;1;0;false;false;;;;;;
                                  -174490;1;0;false;false;0;0;0;;;
                                  -174491;1;0;false;false;;;;;;
                                  -174492;4;1;false;false;127;0;85;;;
                                  -174496;1;0;false;false;0;0;0;;;
                                  -174497;3;0;false;false;;;;;;
                                  -174500;16;0;false;false;0;0;0;;;
                                  -174516;1;0;false;false;;;;;;
                                  -174517;1;0;false;false;0;0;0;;;
                                  -174518;1;0;false;false;;;;;;
                                  -174519;5;1;false;false;127;0;85;;;
                                  -174524;1;0;false;false;0;0;0;;;
                                  -174525;3;0;false;false;;;;;;
                                  -174528;2;1;false;false;127;0;85;;;
                                  -174530;1;0;false;false;;;;;;
                                  -174531;13;0;false;false;0;0;0;;;
                                  -174544;1;0;false;false;;;;;;
                                  -174545;2;0;false;false;0;0;0;;;
                                  -174547;1;0;false;false;;;;;;
                                  -174548;2;0;false;false;0;0;0;;;
                                  -174550;1;0;false;false;;;;;;
                                  -174551;1;0;false;false;0;0;0;;;
                                  -174552;4;0;false;false;;;;;;
                                  -174556;6;0;false;false;0;0;0;;;
                                  -174562;1;0;false;false;;;;;;
                                  -174563;4;0;false;false;0;0;0;;;
                                  -174567;1;0;false;false;;;;;;
                                  -174568;1;0;false;false;0;0;0;;;
                                  -174569;1;0;false;false;;;;;;
                                  -174570;53;0;false;false;0;0;0;;;
                                  -174623;4;0;false;false;;;;;;
                                  -174627;2;1;false;false;127;0;85;;;
                                  -174629;1;0;false;false;;;;;;
                                  -174630;5;0;false;false;0;0;0;;;
                                  -174635;1;0;false;false;;;;;;
                                  -174636;2;0;false;false;0;0;0;;;
                                  -174638;1;0;false;false;;;;;;
                                  -174639;4;1;false;false;127;0;85;;;
                                  -174643;1;0;false;false;;;;;;
                                  -174644;2;0;false;false;0;0;0;;;
                                  -174646;1;0;false;false;;;;;;
                                  -174647;13;0;false;false;0;0;0;;;
                                  -174660;1;0;false;false;;;;;;
                                  -174661;1;0;false;false;0;0;0;;;
                                  -174662;1;0;false;false;;;;;;
                                  -174663;2;0;false;false;0;0;0;;;
                                  -174665;1;0;false;false;;;;;;
                                  -174666;1;0;false;false;0;0;0;;;
                                  -174667;5;0;false;false;;;;;;
                                  -174672;20;0;false;false;63;127;95;;;
                                  -174692;3;0;false;false;;;;;;
                                  -174695;3;1;false;false;127;0;85;;;
                                  -174698;1;0;false;false;;;;;;
                                  -174699;1;0;false;false;0;0;0;;;
                                  -174700;1;0;false;false;;;;;;
                                  -174701;1;0;false;false;0;0;0;;;
                                  -174702;1;0;false;false;;;;;;
                                  -174703;8;0;false;false;0;0;0;;;
                                  -174711;5;0;false;false;;;;;;
                                  -174716;3;1;false;false;127;0;85;;;
                                  -174719;1;0;false;false;;;;;;
                                  -174720;1;0;false;false;0;0;0;;;
                                  -174721;1;0;false;false;;;;;;
                                  -174722;1;0;false;false;0;0;0;;;
                                  -174723;1;0;false;false;;;;;;
                                  -174724;7;0;false;false;0;0;0;;;
                                  -174731;1;0;false;false;;;;;;
                                  -174732;1;0;false;false;0;0;0;;;
                                  -174733;1;0;false;false;;;;;;
                                  -174734;10;0;false;false;0;0;0;;;
                                  -174744;5;0;false;false;;;;;;
                                  -174749;24;0;false;false;0;0;0;;;
                                  -174773;1;0;false;false;;;;;;
                                  -174774;2;0;false;false;0;0;0;;;
                                  -174776;1;0;false;false;;;;;;
                                  -174777;5;1;false;false;127;0;85;;;
                                  -174782;2;0;false;false;0;0;0;;;
                                  -174784;5;0;false;false;;;;;;
                                  -174789;16;0;false;false;63;127;95;;;
                                  -174805;3;0;false;false;;;;;;
                                  -174808;5;0;false;false;0;0;0;;;
                                  -174813;1;0;false;false;;;;;;
                                  -174814;1;0;false;false;0;0;0;;;
                                  -174815;1;0;false;false;;;;;;
                                  -174816;1;0;false;false;0;0;0;;;
                                  -174817;1;0;false;false;;;;;;
                                  -174818;3;1;false;false;127;0;85;;;
                                  -174821;1;0;false;false;;;;;;
                                  -174822;8;0;false;false;0;0;0;;;
                                  -174830;5;0;false;false;;;;;;
                                  -174835;7;0;false;false;0;0;0;;;
                                  -174842;1;0;false;false;;;;;;
                                  -174843;1;0;false;false;0;0;0;;;
                                  -174844;1;0;false;false;;;;;;
                                  -174845;12;0;false;false;0;0;0;;;
                                  -174857;5;0;false;false;;;;;;
                                  -174862;5;0;false;false;0;0;0;;;
                                  -174867;1;0;false;false;;;;;;
                                  -174868;1;0;false;false;0;0;0;;;
                                  -174869;1;0;false;false;;;;;;
                                  -174870;12;0;false;false;0;0;0;;;
                                  -174882;5;0;false;false;;;;;;
                                  -174887;6;0;false;false;0;0;0;;;
                                  -174893;1;0;false;false;;;;;;
                                  -174894;1;0;false;false;0;0;0;;;
                                  -174895;1;0;false;false;;;;;;
                                  -174896;28;0;false;false;0;0;0;;;
                                  -174924;5;0;false;false;;;;;;
                                  -174929;16;0;false;false;0;0;0;;;
                                  -174945;4;0;false;false;;;;;;
                                  -174949;1;0;false;false;0;0;0;;;
                                  -174950;3;0;false;false;;;;;;
                                  -174953;1;0;false;false;0;0;0;;;
                                  -174954;3;0;false;false;;;;;;
                                  -174957;2;1;false;false;127;0;85;;;
                                  -174959;1;0;false;false;;;;;;
                                  -174960;14;0;false;false;0;0;0;;;
                                  -174974;1;0;false;false;;;;;;
                                  -174975;2;0;false;false;0;0;0;;;
                                  -174977;1;0;false;false;;;;;;
                                  -174978;2;0;false;false;0;0;0;;;
                                  -174980;1;0;false;false;;;;;;
                                  -174981;2;0;false;false;0;0;0;;;
                                  -174983;1;0;false;false;;;;;;
                                  -174984;10;0;false;false;0;0;0;;;
                                  -174994;1;0;false;false;;;;;;
                                  -174995;2;0;false;false;0;0;0;;;
                                  -174997;1;0;false;false;;;;;;
                                  -174998;16;0;false;false;0;0;0;;;
                                  -175014;1;0;false;false;;;;;;
                                  -175015;1;0;false;false;0;0;0;;;
                                  -175016;1;0;false;false;;;;;;
                                  -175017;9;0;false;false;0;0;0;;;
                                  -175026;1;0;false;false;;;;;;
                                  -175027;2;0;false;false;0;0;0;;;
                                  -175029;1;0;false;false;;;;;;
                                  -175030;3;0;false;false;0;0;0;;;
                                  -175033;1;0;false;false;;;;;;
                                  -175034;1;0;false;false;0;0;0;;;
                                  -175035;4;0;false;false;;;;;;
                                  -175039;6;1;false;false;127;0;85;;;
                                  -175045;1;0;false;false;0;0;0;;;
                                  -175046;4;0;false;false;;;;;;
                                  -175050;1;0;false;false;0;0;0;;;
                                  -175051;3;0;false;false;;;;;;
                                  -175054;7;1;false;false;127;0;85;;;
                                  -175061;1;0;false;false;;;;;;
                                  -175062;6;0;false;false;0;0;0;;;
                                  -175068;1;0;false;false;;;;;;
                                  -175069;1;0;false;false;0;0;0;;;
                                  -175070;1;0;false;false;;;;;;
                                  -175071;16;0;false;false;0;0;0;;;
                                  -175087;1;0;false;false;;;;;;
                                  -175088;1;0;false;false;0;0;0;;;
                                  -175089;1;0;false;false;;;;;;
                                  -175090;9;0;false;false;0;0;0;;;
                                  -175099;1;0;false;false;;;;;;
                                  -175100;2;0;false;false;0;0;0;;;
                                  -175102;1;0;false;false;;;;;;
                                  -175103;2;0;false;false;0;0;0;;;
                                  -175105;4;0;false;false;;;;;;
                                  -175109;7;0;false;false;0;0;0;;;
                                  -175116;1;0;false;false;;;;;;
                                  -175117;2;0;false;false;0;0;0;;;
                                  -175119;1;0;false;false;;;;;;
                                  -175120;10;0;false;false;0;0;0;;;
                                  -175130;3;0;false;false;;;;;;
                                  -175133;30;0;false;false;0;0;0;;;
                                  -175163;1;0;false;false;;;;;;
                                  -175164;8;0;false;false;0;0;0;;;
                                  -175172;1;0;false;false;;;;;;
                                  -175173;8;0;false;false;0;0;0;;;
                                  -175181;2;0;false;false;;;;;;
                                  -175183;1;0;false;false;0;0;0;;;
                                  -175184;2;0;false;false;;;;;;
                                  -175186;3;0;false;false;63;95;191;;;
                                  -175189;4;0;false;false;;;;;;
                                  -175193;1;0;false;false;63;95;191;;;
                                  -175194;1;0;false;false;;;;;;
                                  -175195;7;0;false;false;63;95;191;;;
                                  -175202;1;0;false;false;;;;;;
                                  -175203;3;0;false;false;63;95;191;;;
                                  -175206;1;0;false;false;;;;;;
                                  -175207;5;0;false;false;63;95;191;;;
                                  -175212;1;0;false;false;;;;;;
                                  -175213;8;0;false;false;63;95;191;;;
                                  -175221;1;0;false;false;;;;;;
                                  -175222;3;0;false;false;63;95;191;;;
                                  -175225;1;0;false;false;;;;;;
                                  -175226;9;0;false;false;63;95;191;;;
                                  -175235;1;0;false;false;;;;;;
                                  -175236;2;0;false;false;63;95;191;;;
                                  -175238;1;0;false;false;;;;;;
                                  -175239;5;0;false;false;63;95;191;;;
                                  -175244;1;0;false;false;;;;;;
                                  -175245;6;0;false;false;63;95;191;;;
                                  -175251;1;0;false;false;;;;;;
                                  -175252;1;0;false;false;63;95;191;;;
                                  -175253;1;0;false;false;;;;;;
                                  -175254;2;0;false;false;63;95;191;;;
                                  -175256;1;0;false;false;;;;;;
                                  -175257;7;0;false;false;63;95;191;;;
                                  -175264;4;0;false;false;;;;;;
                                  -175268;1;0;false;false;63;95;191;;;
                                  -175269;1;0;false;false;;;;;;
                                  -175270;6;0;false;false;63;95;191;;;
                                  -175276;1;0;false;false;;;;;;
                                  -175277;3;0;false;false;63;95;191;;;
                                  -175280;1;0;false;false;;;;;;
                                  -175281;5;0;false;false;63;95;191;;;
                                  -175286;1;0;false;false;;;;;;
                                  -175287;5;0;false;false;63;95;191;;;
                                  -175292;3;0;false;false;;;;;;
                                  -175295;2;0;false;false;63;95;191;;;
                                  -175297;2;0;false;false;;;;;;
                                  -175299;4;1;false;false;127;0;85;;;
                                  -175303;1;0;false;false;;;;;;
                                  -175304;21;0;false;false;0;0;0;;;
                                  -175325;1;0;false;false;;;;;;
                                  -175326;6;0;false;false;0;0;0;;;
                                  -175332;1;0;false;false;;;;;;
                                  -175333;1;0;false;false;0;0;0;;;
                                  -175334;3;0;false;false;;;;;;
                                  -175337;2;1;false;false;127;0;85;;;
                                  -175339;1;0;false;false;;;;;;
                                  -175340;12;0;false;false;0;0;0;;;
                                  -175352;1;0;false;false;;;;;;
                                  -175353;6;1;false;false;127;0;85;;;
                                  -175359;1;0;false;false;0;0;0;;;
                                  -175360;3;0;false;false;;;;;;
                                  -175363;2;1;false;false;127;0;85;;;
                                  -175365;1;0;false;false;;;;;;
                                  -175366;17;0;false;false;0;0;0;;;
                                  -175383;1;0;false;false;;;;;;
                                  -175384;1;0;false;false;0;0;0;;;
                                  -175385;1;0;false;false;;;;;;
                                  -175386;12;0;false;false;0;0;0;;;
                                  -175398;1;0;false;false;;;;;;
                                  -175399;2;0;false;false;0;0;0;;;
                                  -175401;1;0;false;false;;;;;;
                                  -175402;2;0;false;false;0;0;0;;;
                                  -175404;1;0;false;false;;;;;;
                                  -175405;1;0;false;false;0;0;0;;;
                                  -175406;4;0;false;false;;;;;;
                                  -175410;6;1;false;false;127;0;85;;;
                                  -175416;1;0;false;false;0;0;0;;;
                                  -175417;3;0;false;false;;;;;;
                                  -175420;1;0;false;false;0;0;0;;;
                                  -175421;3;0;false;false;;;;;;
                                  -175424;7;0;false;false;0;0;0;;;
                                  -175431;1;0;false;false;;;;;;
                                  -175432;2;0;false;false;0;0;0;;;
                                  -175434;1;0;false;false;;;;;;
                                  -175435;10;0;false;false;0;0;0;;;
                                  -175445;3;0;false;false;;;;;;
                                  -175448;30;0;false;false;0;0;0;;;
                                  -175478;1;0;false;false;;;;;;
                                  -175479;8;0;false;false;0;0;0;;;
                                  -175487;1;0;false;false;;;;;;
                                  -175488;4;1;false;false;127;0;85;;;
                                  -175492;2;0;false;false;0;0;0;;;
                                  -175494;3;0;false;false;;;;;;
                                  -175497;9;0;false;false;0;0;0;;;
                                  -175506;3;0;false;false;;;;;;
                                  -175509;20;0;false;false;0;0;0;;;
                                  -175529;2;0;false;false;;;;;;
                                  -175531;1;0;false;false;0;0;0;;;
                                  -175532;2;0;false;false;;;;;;
                                  -175534;3;0;false;false;63;95;191;;;
                                  -175537;4;0;false;false;;;;;;
                                  -175541;1;0;false;false;63;95;191;;;
                                  -175542;1;0;false;false;;;;;;
                                  -175543;13;0;false;false;63;95;191;;;
                                  -175556;1;0;false;false;;;;;;
                                  -175557;4;0;false;false;63;95;191;;;
                                  -175561;1;0;false;false;;;;;;
                                  -175562;4;0;false;false;63;95;191;;;
                                  -175566;1;0;false;false;;;;;;
                                  -175567;3;0;false;false;63;95;191;;;
                                  -175570;1;0;false;false;;;;;;
                                  -175571;5;0;false;false;63;95;191;;;
                                  -175576;1;0;false;false;;;;;;
                                  -175577;6;0;false;false;63;95;191;;;
                                  -175583;1;0;false;false;;;;;;
                                  -175584;2;0;false;false;63;95;191;;;
                                  -175586;1;0;false;false;;;;;;
                                  -175587;9;0;false;false;63;95;191;;;
                                  -175596;3;0;false;false;;;;;;
                                  -175599;2;0;false;false;63;95;191;;;
                                  -175601;2;0;false;false;;;;;;
                                  -175603;4;1;false;false;127;0;85;;;
                                  -175607;1;0;false;false;;;;;;
                                  -175608;19;0;false;false;0;0;0;;;
                                  -175627;1;0;false;false;;;;;;
                                  -175628;6;0;false;false;0;0;0;;;
                                  -175634;1;0;false;false;;;;;;
                                  -175635;1;0;false;false;0;0;0;;;
                                  -175636;3;0;false;false;;;;;;
                                  -175639;9;0;false;false;0;0;0;;;
                                  -175648;1;0;false;false;;;;;;
                                  -175649;1;0;false;false;0;0;0;;;
                                  -175650;1;0;false;false;;;;;;
                                  -175651;5;1;false;false;127;0;85;;;
                                  -175656;1;0;false;false;0;0;0;;;
                                  -175657;3;0;false;false;;;;;;
                                  -175660;16;0;false;false;0;0;0;;;
                                  -175676;1;0;false;false;;;;;;
                                  -175677;1;0;false;false;0;0;0;;;
                                  -175678;1;0;false;false;;;;;;
                                  -175679;5;1;false;false;127;0;85;;;
                                  -175684;1;0;false;false;0;0;0;;;
                                  -175685;3;0;false;false;;;;;;
                                  -175688;7;0;false;false;0;0;0;;;
                                  -175695;1;0;false;false;;;;;;
                                  -175696;2;0;false;false;0;0;0;;;
                                  -175698;1;0;false;false;;;;;;
                                  -175699;10;0;false;false;0;0;0;;;
                                  -175709;3;0;false;false;;;;;;
                                  -175712;16;0;false;false;0;0;0;;;
                                  -175728;3;0;false;false;;;;;;
                                  -175731;2;1;false;false;127;0;85;;;
                                  -175733;1;0;false;false;;;;;;
                                  -175734;13;0;false;false;0;0;0;;;
                                  -175747;1;0;false;false;;;;;;
                                  -175748;2;0;false;false;0;0;0;;;
                                  -175750;1;0;false;false;;;;;;
                                  -175751;2;0;false;false;0;0;0;;;
                                  -175753;1;0;false;false;;;;;;
                                  -175754;1;0;false;false;0;0;0;;;
                                  -175755;4;0;false;false;;;;;;
                                  -175759;3;1;false;false;127;0;85;;;
                                  -175762;1;0;false;false;;;;;;
                                  -175763;1;0;false;false;0;0;0;;;
                                  -175764;5;0;false;false;;;;;;
                                  -175769;2;1;false;false;127;0;85;;;
                                  -175771;1;0;false;false;;;;;;
                                  -175772;12;0;false;false;0;0;0;;;
                                  -175784;1;0;false;false;;;;;;
                                  -175785;1;0;false;false;0;0;0;;;
                                  -175786;1;0;false;false;;;;;;
                                  -175787;11;0;false;false;0;0;0;;;
                                  -175798;1;0;false;false;;;;;;
                                  -175799;1;0;false;false;0;0;0;;;
                                  -175800;1;0;false;false;;;;;;
                                  -175801;2;0;false;false;0;0;0;;;
                                  -175803;1;0;false;false;;;;;;
                                  -175804;1;0;false;false;0;0;0;;;
                                  -175805;6;0;false;false;;;;;;
                                  -175811;32;0;false;false;0;0;0;;;
                                  -175843;1;0;false;false;;;;;;
                                  -175844;11;0;false;false;0;0;0;;;
                                  -175855;1;0;false;false;;;;;;
                                  -175856;1;0;false;false;0;0;0;;;
                                  -175857;1;0;false;false;;;;;;
                                  -175858;12;0;false;false;0;0;0;;;
                                  -175870;1;0;false;false;;;;;;
                                  -175871;25;0;false;false;0;0;0;;;
                                  -175896;5;0;false;false;;;;;;
                                  -175901;1;0;false;false;0;0;0;;;
                                  -175902;4;0;false;false;;;;;;
                                  -175906;1;0;false;false;0;0;0;;;
                                  -175907;4;0;false;false;;;;;;
                                  -175911;5;1;false;false;127;0;85;;;
                                  -175916;1;0;false;false;;;;;;
                                  -175917;9;0;false;false;0;0;0;;;
                                  -175926;1;0;false;false;;;;;;
                                  -175927;6;0;false;false;0;0;0;;;
                                  -175933;1;0;false;false;;;;;;
                                  -175934;1;0;false;false;0;0;0;;;
                                  -175935;5;0;false;false;;;;;;
                                  -175940;69;0;false;false;63;127;95;;;
                                  -176009;3;0;false;false;;;;;;
                                  -176012;64;0;false;false;63;127;95;;;
                                  -176076;3;0;false;false;;;;;;
                                  -176079;18;0;false;false;63;127;95;;;
                                  -176097;3;0;false;false;;;;;;
                                  -176100;47;0;false;false;63;127;95;;;
                                  -176147;3;0;false;false;;;;;;
                                  -176150;2;1;false;false;127;0;85;;;
                                  -176152;1;0;false;false;;;;;;
                                  -176153;11;0;false;false;0;0;0;;;
                                  -176164;1;0;false;false;;;;;;
                                  -176165;2;0;false;false;0;0;0;;;
                                  -176167;1;0;false;false;;;;;;
                                  -176168;31;0;false;false;0;0;0;;;
                                  -176199;1;0;false;false;;;;;;
                                  -176200;1;0;false;false;0;0;0;;;
                                  -176201;6;0;false;false;;;;;;
                                  -176207;5;1;false;false;127;0;85;;;
                                  -176212;1;0;false;false;;;;;;
                                  -176213;6;0;false;false;0;0;0;;;
                                  -176219;5;0;false;false;;;;;;
                                  -176224;1;0;false;false;0;0;0;;;
                                  -176225;4;0;false;false;;;;;;
                                  -176229;1;0;false;false;0;0;0;;;
                                  -176230;3;0;false;false;;;;;;
                                  -176233;1;0;false;false;0;0;0;;;
                                  -176234;2;0;false;false;;;;;;
                                  -176236;1;0;false;false;0;0;0;;;
                                  -176237;2;0;false;false;;;;;;
                                  -176239;3;0;false;false;63;95;191;;;
                                  -176242;3;0;false;false;;;;;;
                                  -176245;1;0;false;false;63;95;191;;;
                                  -176246;1;0;false;false;;;;;;
                                  -176247;7;0;false;false;63;95;191;;;
                                  -176254;1;0;false;false;;;;;;
                                  -176255;3;0;false;false;63;95;191;;;
                                  -176258;1;0;false;false;;;;;;
                                  -176259;11;0;false;false;63;95;191;;;
                                  -176270;1;0;false;false;;;;;;
                                  -176271;4;0;false;false;63;95;191;;;
                                  -176275;1;0;false;false;;;;;;
                                  -176276;9;0;false;false;63;95;191;;;
                                  -176285;1;0;false;false;;;;;;
                                  -176286;2;0;false;false;63;95;191;;;
                                  -176288;1;0;false;false;;;;;;
                                  -176289;3;0;false;false;63;95;191;;;
                                  -176292;1;0;false;false;;;;;;
                                  -176293;5;0;false;false;63;95;191;;;
                                  -176298;1;0;false;false;;;;;;
                                  -176299;6;0;false;false;63;95;191;;;
                                  -176305;3;0;false;false;;;;;;
                                  -176308;1;0;false;false;63;95;191;;;
                                  -176309;1;0;false;false;;;;;;
                                  -176310;3;0;false;false;127;127;159;;;
                                  -176313;3;0;false;false;;;;;;
                                  -176316;1;0;false;false;63;95;191;;;
                                  -176317;3;0;false;false;;;;;;
                                  -176320;1;0;false;false;63;95;191;;;
                                  -176321;1;0;false;false;;;;;;
                                  -176322;7;1;false;false;127;159;191;;;
                                  -176329;5;0;false;false;63;95;191;;;
                                  -176334;1;0;false;false;;;;;;
                                  -176335;5;0;false;false;63;95;191;;;
                                  -176340;1;0;false;false;;;;;;
                                  -176341;5;0;false;false;63;95;191;;;
                                  -176346;3;0;false;false;;;;;;
                                  -176349;2;0;false;false;63;95;191;;;
                                  -176351;2;0;false;false;;;;;;
                                  -176353;4;1;false;false;127;0;85;;;
                                  -176357;1;0;false;false;;;;;;
                                  -176358;17;0;false;false;0;0;0;;;
                                  -176375;1;0;false;false;;;;;;
                                  -176376;6;0;false;false;0;0;0;;;
                                  -176382;1;0;false;false;;;;;;
                                  -176383;1;0;false;false;0;0;0;;;
                                  -176384;3;0;false;false;;;;;;
                                  -176387;33;0;false;false;63;127;95;;;
                                  -176420;1;0;false;false;;;;;;
                                  -176421;2;1;false;false;127;0;85;;;
                                  -176423;1;0;false;false;;;;;;
                                  -176424;13;0;false;false;0;0;0;;;
                                  -176437;1;0;false;false;;;;;;
                                  -176438;2;0;false;false;0;0;0;;;
                                  -176440;1;0;false;false;;;;;;
                                  -176441;2;0;false;false;0;0;0;;;
                                  -176443;1;0;false;false;;;;;;
                                  -176444;6;1;false;false;127;0;85;;;
                                  -176450;1;0;false;false;0;0;0;;;
                                  -176451;3;0;false;false;;;;;;
                                  -176454;3;1;false;false;127;0;85;;;
                                  -176457;1;0;false;false;;;;;;
                                  -176458;9;0;false;false;0;0;0;;;
                                  -176467;1;0;false;false;;;;;;
                                  -176468;1;0;false;false;0;0;0;;;
                                  -176469;1;0;false;false;;;;;;
                                  -176470;11;0;false;false;0;0;0;;;
                                  -176481;1;0;false;false;;;;;;
                                  -176482;8;0;false;false;0;0;0;;;
                                  -176490;1;0;false;false;;;;;;
                                  -176491;1;0;false;false;0;0;0;;;
                                  -176492;1;0;false;false;;;;;;
                                  -176493;9;0;false;false;0;0;0;;;
                                  -176502;1;0;false;false;;;;;;
                                  -176503;1;0;false;false;0;0;0;;;
                                  -176504;1;0;false;false;;;;;;
                                  -176505;21;0;false;false;0;0;0;;;
                                  -176526;1;0;false;false;;;;;;
                                  -176527;1;0;false;false;0;0;0;;;
                                  -176528;1;0;false;false;;;;;;
                                  -176529;12;0;false;false;0;0;0;;;
                                  -176541;3;0;false;false;;;;;;
                                  -176544;3;1;false;false;127;0;85;;;
                                  -176547;1;0;false;false;;;;;;
                                  -176548;17;0;false;false;0;0;0;;;
                                  -176565;1;0;false;false;;;;;;
                                  -176566;1;0;false;false;0;0;0;;;
                                  -176567;1;0;false;false;;;;;;
                                  -176568;10;0;false;false;0;0;0;;;
                                  -176578;1;0;false;false;;;;;;
                                  -176579;1;0;false;false;0;0;0;;;
                                  -176580;1;0;false;false;;;;;;
                                  -176581;9;0;false;false;0;0;0;;;
                                  -176590;1;0;false;false;;;;;;
                                  -176591;1;0;false;false;0;0;0;;;
                                  -176592;1;0;false;false;;;;;;
                                  -176593;11;0;false;false;0;0;0;;;
                                  -176604;3;0;false;false;;;;;;
                                  -176607;3;1;false;false;127;0;85;;;
                                  -176610;1;0;false;false;;;;;;
                                  -176611;13;0;false;false;0;0;0;;;
                                  -176624;1;0;false;false;;;;;;
                                  -176625;1;0;false;false;0;0;0;;;
                                  -176626;1;0;false;false;;;;;;
                                  -176627;8;0;false;false;0;0;0;;;
                                  -176635;1;0;false;false;;;;;;
                                  -176636;1;0;false;false;0;0;0;;;
                                  -176637;1;0;false;false;;;;;;
                                  -176638;10;0;false;false;0;0;0;;;
                                  -176648;1;0;false;false;;;;;;
                                  -176649;1;0;false;false;0;0;0;;;
                                  -176650;1;0;false;false;;;;;;
                                  -176651;21;0;false;false;0;0;0;;;
                                  -176672;3;0;false;false;;;;;;
                                  -176675;3;1;false;false;127;0;85;;;
                                  -176678;1;0;false;false;;;;;;
                                  -176679;6;0;false;false;0;0;0;;;
                                  -176685;1;0;false;false;;;;;;
                                  -176686;1;0;false;false;0;0;0;;;
                                  -176687;1;0;false;false;;;;;;
                                  -176688;17;0;false;false;0;0;0;;;
                                  -176705;1;0;false;false;;;;;;
                                  -176706;1;0;false;false;0;0;0;;;
                                  -176707;1;0;false;false;;;;;;
                                  -176708;13;0;false;false;0;0;0;;;
                                  -176721;1;0;false;false;;;;;;
                                  -176722;1;0;false;false;0;0;0;;;
                                  -176723;1;0;false;false;;;;;;
                                  -176724;10;0;false;false;0;0;0;;;
                                  -176734;1;0;false;false;;;;;;
                                  -176735;63;0;false;false;63;127;95;;;
                                  -176798;1;0;false;false;;;;;;
                                  -176799;3;1;false;false;127;0;85;;;
                                  -176802;1;0;false;false;;;;;;
                                  -176803;12;0;false;false;0;0;0;;;
                                  -176815;1;0;false;false;;;;;;
                                  -176816;1;0;false;false;0;0;0;;;
                                  -176817;1;0;false;false;;;;;;
                                  -176818;7;0;false;false;0;0;0;;;
                                  -176825;1;0;false;false;;;;;;
                                  -176826;1;0;false;false;0;0;0;;;
                                  -176827;1;0;false;false;;;;;;
                                  -176828;12;0;false;false;0;0;0;;;
                                  -176840;1;0;false;false;;;;;;
                                  -176841;1;0;false;false;0;0;0;;;
                                  -176842;1;0;false;false;;;;;;
                                  -176843;7;0;false;false;0;0;0;;;
                                  -176850;3;0;false;false;;;;;;
                                  -176853;22;0;false;false;0;0;0;;;
                                  -176875;1;0;false;false;;;;;;
                                  -176876;10;0;false;false;0;0;0;;;
                                  -176886;1;0;false;false;;;;;;
                                  -176887;7;0;false;false;0;0;0;;;
                                  -176894;1;0;false;false;;;;;;
                                  -176895;14;0;false;false;0;0;0;;;
                                  -176909;2;0;false;false;;;;;;
                                  -176911;1;0;false;false;0;0;0;;;
                                  -176912;3;0;false;false;;;;;;
                                  -176915;3;0;false;false;63;95;191;;;
                                  -176918;3;0;false;false;;;;;;
                                  -176921;1;0;false;false;63;95;191;;;
                                  -176922;1;0;false;false;;;;;;
                                  -176923;12;0;false;false;63;95;191;;;
                                  -176935;1;0;false;false;;;;;;
                                  -176936;3;0;false;false;63;95;191;;;
                                  -176939;1;0;false;false;;;;;;
                                  -176940;6;0;false;false;63;95;191;;;
                                  -176946;1;0;false;false;;;;;;
                                  -176947;5;0;false;false;63;95;191;;;
                                  -176952;1;0;false;false;;;;;;
                                  -176953;7;0;false;false;63;95;191;;;
                                  -176960;1;0;false;false;;;;;;
                                  -176961;3;0;false;false;63;95;191;;;
                                  -176964;1;0;false;false;;;;;;
                                  -176965;5;0;false;false;63;95;191;;;
                                  -176970;1;0;false;false;;;;;;
                                  -176971;4;0;false;false;63;95;191;;;
                                  -176975;1;0;false;false;;;;;;
                                  -176976;2;0;false;false;63;95;191;;;
                                  -176978;1;0;false;false;;;;;;
                                  -176979;4;0;false;false;63;95;191;;;
                                  -176983;4;0;false;false;;;;;;
                                  -176987;1;0;false;false;63;95;191;;;
                                  -176988;1;0;false;false;;;;;;
                                  -176989;4;0;false;false;63;95;191;;;
                                  -176993;1;0;false;false;;;;;;
                                  -176994;5;0;false;false;63;95;191;;;
                                  -176999;3;0;false;false;;;;;;
                                  -177002;1;0;false;false;63;95;191;;;
                                  -177003;1;0;false;false;;;;;;
                                  -177004;3;0;false;false;127;127;159;;;
                                  -177007;3;0;false;false;;;;;;
                                  -177010;1;0;false;false;63;95;191;;;
                                  -177011;3;0;false;false;;;;;;
                                  -177014;1;0;false;false;63;95;191;;;
                                  -177015;1;0;false;false;;;;;;
                                  -177016;7;1;false;false;127;159;191;;;
                                  -177023;5;0;false;false;63;95;191;;;
                                  -177028;1;0;false;false;;;;;;
                                  -177029;6;0;false;false;63;95;191;;;
                                  -177035;1;0;false;false;;;;;;
                                  -177036;5;0;false;false;63;95;191;;;
                                  -177041;3;0;false;false;;;;;;
                                  -177044;2;0;false;false;63;95;191;;;
                                  -177046;2;0;false;false;;;;;;
                                  -177048;4;1;false;false;127;0;85;;;
                                  -177052;1;0;false;false;;;;;;
                                  -177053;18;0;false;false;0;0;0;;;
                                  -177071;1;0;false;false;;;;;;
                                  -177072;6;0;false;false;0;0;0;;;
                                  -177078;1;0;false;false;;;;;;
                                  -177079;1;0;false;false;0;0;0;;;
                                  -177080;3;0;false;false;;;;;;
                                  -177083;3;1;false;false;127;0;85;;;
                                  -177086;1;0;false;false;;;;;;
                                  -177087;9;0;false;false;0;0;0;;;
                                  -177096;1;0;false;false;;;;;;
                                  -177097;1;0;false;false;0;0;0;;;
                                  -177098;1;0;false;false;;;;;;
                                  -177099;17;0;false;false;0;0;0;;;
                                  -177116;3;0;false;false;;;;;;
                                  -177119;3;1;false;false;127;0;85;;;
                                  -177122;1;0;false;false;;;;;;
                                  -177123;8;0;false;false;0;0;0;;;
                                  -177131;1;0;false;false;;;;;;
                                  -177132;1;0;false;false;0;0;0;;;
                                  -177133;1;0;false;false;;;;;;
                                  -177134;16;0;false;false;0;0;0;;;
                                  -177150;6;0;false;false;;;;;;
                                  -177156;9;0;false;false;0;0;0;;;
                                  -177165;1;0;false;false;;;;;;
                                  -177166;10;0;false;false;0;0;0;;;
                                  -177176;1;0;false;false;;;;;;
                                  -177177;1;0;false;false;0;0;0;;;
                                  -177178;1;0;false;false;;;;;;
                                  -177179;16;0;false;false;0;0;0;;;
                                  -177195;3;0;false;false;;;;;;
                                  -177198;16;0;false;false;0;0;0;;;
                                  -177214;1;0;false;false;;;;;;
                                  -177215;1;0;false;false;0;0;0;;;
                                  -177216;1;0;false;false;;;;;;
                                  -177217;18;0;false;false;0;0;0;;;
                                  -177235;3;0;false;false;;;;;;
                                  -177238;15;0;false;false;0;0;0;;;
                                  -177253;1;0;false;false;;;;;;
                                  -177254;1;0;false;false;0;0;0;;;
                                  -177255;1;0;false;false;;;;;;
                                  -177256;17;0;false;false;0;0;0;;;
                                  -177273;3;0;false;false;;;;;;
                                  -177276;57;0;false;false;63;127;95;;;
                                  -177333;3;0;false;false;;;;;;
                                  -177336;2;1;false;false;127;0;85;;;
                                  -177338;1;0;false;false;;;;;;
                                  -177339;9;0;false;false;0;0;0;;;
                                  -177348;1;0;false;false;;;;;;
                                  -177349;2;0;false;false;0;0;0;;;
                                  -177351;1;0;false;false;;;;;;
                                  -177352;16;0;false;false;0;0;0;;;
                                  -177368;1;0;false;false;;;;;;
                                  -177369;1;0;false;false;0;0;0;;;
                                  -177370;4;0;false;false;;;;;;
                                  -177374;2;1;false;false;127;0;85;;;
                                  -177376;1;0;false;false;;;;;;
                                  -177377;12;0;false;false;0;0;0;;;
                                  -177389;1;0;false;false;;;;;;
                                  -177390;1;0;false;false;0;0;0;;;
                                  -177391;1;0;false;false;;;;;;
                                  -177392;2;0;false;false;0;0;0;;;
                                  -177394;1;0;false;false;;;;;;
                                  -177395;1;0;false;false;0;0;0;;;
                                  -177396;5;0;false;false;;;;;;
                                  -177401;3;1;false;false;127;0;85;;;
                                  -177404;1;0;false;false;;;;;;
                                  -177405;1;0;false;false;0;0;0;;;
                                  -177406;1;0;false;false;;;;;;
                                  -177407;1;0;false;false;0;0;0;;;
                                  -177408;1;0;false;false;;;;;;
                                  -177409;9;0;false;false;0;0;0;;;
                                  -177418;1;0;false;false;;;;;;
                                  -177419;1;0;false;false;0;0;0;;;
                                  -177420;1;0;false;false;;;;;;
                                  -177421;15;0;false;false;0;0;0;;;
                                  -177436;1;0;false;false;;;;;;
                                  -177437;1;0;false;false;0;0;0;;;
                                  -177438;1;0;false;false;;;;;;
                                  -177439;8;0;false;false;0;0;0;;;
                                  -177447;1;0;false;false;;;;;;
                                  -177448;1;0;false;false;0;0;0;;;
                                  -177449;1;0;false;false;;;;;;
                                  -177450;17;0;false;false;0;0;0;;;
                                  -177467;1;0;false;false;;;;;;
                                  -177468;12;0;false;false;0;0;0;;;
                                  -177480;6;0;false;false;;;;;;
                                  -177486;9;0;false;false;0;0;0;;;
                                  -177495;1;0;false;false;;;;;;
                                  -177496;2;0;false;false;0;0;0;;;
                                  -177498;1;0;false;false;;;;;;
                                  -177499;12;0;false;false;0;0;0;;;
                                  -177511;1;0;false;false;;;;;;
                                  -177512;10;0;false;false;0;0;0;;;
                                  -177522;1;0;false;false;;;;;;
                                  -177523;5;1;false;false;127;0;85;;;
                                  -177528;2;0;false;false;0;0;0;;;
                                  -177530;4;0;false;false;;;;;;
                                  -177534;1;0;false;false;0;0;0;;;
                                  -177535;3;0;false;false;;;;;;
                                  -177538;1;0;false;false;0;0;0;;;
                                  -177539;3;0;false;false;;;;;;
                                  -177542;2;1;false;false;127;0;85;;;
                                  -177544;1;0;false;false;;;;;;
                                  -177545;10;0;false;false;0;0;0;;;
                                  -177555;1;0;false;false;;;;;;
                                  -177556;2;0;false;false;0;0;0;;;
                                  -177558;1;0;false;false;;;;;;
                                  -177559;17;0;false;false;0;0;0;;;
                                  -177576;1;0;false;false;;;;;;
                                  -177577;1;0;false;false;0;0;0;;;
                                  -177578;4;0;false;false;;;;;;
                                  -177582;2;1;false;false;127;0;85;;;
                                  -177584;1;0;false;false;;;;;;
                                  -177585;13;0;false;false;0;0;0;;;
                                  -177598;1;0;false;false;;;;;;
                                  -177599;1;0;false;false;0;0;0;;;
                                  -177600;1;0;false;false;;;;;;
                                  -177601;2;0;false;false;0;0;0;;;
                                  -177603;1;0;false;false;;;;;;
                                  -177604;1;0;false;false;0;0;0;;;
                                  -177605;5;0;false;false;;;;;;
                                  -177610;3;1;false;false;127;0;85;;;
                                  -177613;1;0;false;false;;;;;;
                                  -177614;1;0;false;false;0;0;0;;;
                                  -177615;1;0;false;false;;;;;;
                                  -177616;1;0;false;false;0;0;0;;;
                                  -177617;1;0;false;false;;;;;;
                                  -177618;10;0;false;false;0;0;0;;;
                                  -177628;1;0;false;false;;;;;;
                                  -177629;1;0;false;false;0;0;0;;;
                                  -177630;1;0;false;false;;;;;;
                                  -177631;16;0;false;false;0;0;0;;;
                                  -177647;1;0;false;false;;;;;;
                                  -177648;1;0;false;false;0;0;0;;;
                                  -177649;1;0;false;false;;;;;;
                                  -177650;9;0;false;false;0;0;0;;;
                                  -177659;1;0;false;false;;;;;;
                                  -177660;1;0;false;false;0;0;0;;;
                                  -177661;1;0;false;false;;;;;;
                                  -177662;18;0;false;false;0;0;0;;;
                                  -177680;1;0;false;false;;;;;;
                                  -177681;13;0;false;false;0;0;0;;;
                                  -177694;6;0;false;false;;;;;;
                                  -177700;9;0;false;false;0;0;0;;;
                                  -177709;1;0;false;false;;;;;;
                                  -177710;2;0;false;false;0;0;0;;;
                                  -177712;1;0;false;false;;;;;;
                                  -177713;9;0;false;false;0;0;0;;;
                                  -177722;1;0;false;false;;;;;;
                                  -177723;13;0;false;false;0;0;0;;;
                                  -177736;1;0;false;false;;;;;;
                                  -177737;5;1;false;false;127;0;85;;;
                                  -177742;2;0;false;false;0;0;0;;;
                                  -177744;4;0;false;false;;;;;;
                                  -177748;1;0;false;false;0;0;0;;;
                                  -177749;3;0;false;false;;;;;;
                                  -177752;1;0;false;false;0;0;0;;;
                                  -177753;3;0;false;false;;;;;;
                                  -177756;2;1;false;false;127;0;85;;;
                                  -177758;1;0;false;false;;;;;;
                                  -177759;10;0;false;false;0;0;0;;;
                                  -177769;1;0;false;false;;;;;;
                                  -177770;1;0;false;false;0;0;0;;;
                                  -177771;4;0;false;false;;;;;;
                                  -177775;2;1;false;false;127;0;85;;;
                                  -177777;1;0;false;false;;;;;;
                                  -177778;9;0;false;false;0;0;0;;;
                                  -177787;1;0;false;false;;;;;;
                                  -177788;2;0;false;false;0;0;0;;;
                                  -177790;1;0;false;false;;;;;;
                                  -177791;16;0;false;false;0;0;0;;;
                                  -177807;1;0;false;false;;;;;;
                                  -177808;1;0;false;false;0;0;0;;;
                                  -177809;6;0;false;false;;;;;;
                                  -177815;25;0;false;false;0;0;0;;;
                                  -177840;4;0;false;false;;;;;;
                                  -177844;1;0;false;false;0;0;0;;;
                                  -177845;3;0;false;false;;;;;;
                                  -177848;1;0;false;false;0;0;0;;;
                                  -177849;3;0;false;false;;;;;;
                                  -177852;4;1;false;false;127;0;85;;;
                                  -177856;3;0;false;false;;;;;;
                                  -177859;2;1;false;false;127;0;85;;;
                                  -177861;1;0;false;false;;;;;;
                                  -177862;17;0;false;false;0;0;0;;;
                                  -177879;1;0;false;false;;;;;;
                                  -177880;1;0;false;false;0;0;0;;;
                                  -177881;1;0;false;false;;;;;;
                                  -177882;10;0;false;false;0;0;0;;;
                                  -177892;1;0;false;false;;;;;;
                                  -177893;1;0;false;false;0;0;0;;;
                                  -177894;4;0;false;false;;;;;;
                                  -177898;3;1;false;false;127;0;85;;;
                                  -177901;1;0;false;false;;;;;;
                                  -177902;9;0;false;false;0;0;0;;;
                                  -177911;1;0;false;false;;;;;;
                                  -177912;1;0;false;false;0;0;0;;;
                                  -177913;1;0;false;false;;;;;;
                                  -177914;23;0;false;false;0;0;0;;;
                                  -177937;4;0;false;false;;;;;;
                                  -177941;3;1;false;false;127;0;85;;;
                                  -177944;1;0;false;false;;;;;;
                                  -177945;14;0;false;false;0;0;0;;;
                                  -177959;1;0;false;false;;;;;;
                                  -177960;1;0;false;false;0;0;0;;;
                                  -177961;1;0;false;false;;;;;;
                                  -177962;8;0;false;false;0;0;0;;;
                                  -177970;1;0;false;false;;;;;;
                                  -177971;1;0;false;false;0;0;0;;;
                                  -177972;1;0;false;false;;;;;;
                                  -177973;9;0;false;false;0;0;0;;;
                                  -177982;1;0;false;false;;;;;;
                                  -177983;1;0;false;false;0;0;0;;;
                                  -177984;1;0;false;false;;;;;;
                                  -177985;11;0;false;false;0;0;0;;;
                                  -177996;4;0;false;false;;;;;;
                                  -178000;3;1;false;false;127;0;85;;;
                                  -178003;1;0;false;false;;;;;;
                                  -178004;12;0;false;false;0;0;0;;;
                                  -178016;1;0;false;false;;;;;;
                                  -178017;1;0;false;false;0;0;0;;;
                                  -178018;1;0;false;false;;;;;;
                                  -178019;35;0;false;false;0;0;0;;;
                                  -178054;1;0;false;false;;;;;;
                                  -178055;1;0;false;false;0;0;0;;;
                                  -178056;1;0;false;false;;;;;;
                                  -178057;10;0;false;false;0;0;0;;;
                                  -178067;1;0;false;false;;;;;;
                                  -178068;12;0;false;false;0;0;0;;;
                                  -178080;8;0;false;false;;;;;;
                                  -178088;14;0;false;false;0;0;0;;;
                                  -178102;1;0;false;false;;;;;;
                                  -178103;1;0;false;false;0;0;0;;;
                                  -178104;1;0;false;false;;;;;;
                                  -178105;24;0;false;false;0;0;0;;;
                                  -178129;1;0;false;false;;;;;;
                                  -178130;11;0;false;false;0;0;0;;;
                                  -178141;4;0;false;false;;;;;;
                                  -178145;12;0;false;false;0;0;0;;;
                                  -178157;1;0;false;false;;;;;;
                                  -178158;1;0;false;false;0;0;0;;;
                                  -178159;1;0;false;false;;;;;;
                                  -178160;22;0;false;false;0;0;0;;;
                                  -178182;1;0;false;false;;;;;;
                                  -178183;9;0;false;false;0;0;0;;;
                                  -178192;1;0;false;false;;;;;;
                                  -178193;1;0;false;false;0;0;0;;;
                                  -178194;1;0;false;false;;;;;;
                                  -178195;16;0;false;false;0;0;0;;;
                                  -178211;4;0;false;false;;;;;;
                                  -178215;35;0;false;false;0;0;0;;;
                                  -178250;1;0;false;false;;;;;;
                                  -178251;14;0;false;false;0;0;0;;;
                                  -178265;3;0;false;false;;;;;;
                                  -178268;1;0;false;false;0;0;0;;;
                                  -178269;3;0;false;false;;;;;;
                                  -178272;16;0;false;false;0;0;0;;;
                                  -178288;3;0;false;false;;;;;;
                                  -178291;23;0;false;false;0;0;0;;;
                                  -178314;3;0;false;false;;;;;;
                                  -178317;22;0;false;false;0;0;0;;;
                                  -178339;4;0;false;false;;;;;;
                                  -178343;2;1;false;false;127;0;85;;;
                                  -178345;1;0;false;false;;;;;;
                                  -178346;10;0;false;false;0;0;0;;;
                                  -178356;1;0;false;false;;;;;;
                                  -178357;2;0;false;false;0;0;0;;;
                                  -178359;1;0;false;false;;;;;;
                                  -178360;17;0;false;false;0;0;0;;;
                                  -178377;1;0;false;false;;;;;;
                                  -178378;1;0;false;false;0;0;0;;;
                                  -178379;4;0;false;false;;;;;;
                                  -178383;20;0;false;false;0;0;0;;;
                                  -178403;3;0;false;false;;;;;;
                                  -178406;1;0;false;false;0;0;0;;;
                                  -178407;2;0;false;false;;;;;;
                                  -178409;1;0;false;false;0;0;0;;;
                                  -178410;2;0;false;false;;;;;;
                                  -178412;3;0;false;false;63;95;191;;;
                                  -178415;3;0;false;false;;;;;;
                                  -178418;1;0;false;false;63;95;191;;;
                                  -178419;1;0;false;false;;;;;;
                                  -178420;7;0;false;false;63;95;191;;;
                                  -178427;1;0;false;false;;;;;;
                                  -178428;3;0;false;false;63;95;191;;;
                                  -178431;1;0;false;false;;;;;;
                                  -178432;5;0;false;false;63;95;191;;;
                                  -178437;1;0;false;false;;;;;;
                                  -178438;8;0;false;false;63;95;191;;;
                                  -178446;1;0;false;false;;;;;;
                                  -178447;3;0;false;false;63;95;191;;;
                                  -178450;1;0;false;false;;;;;;
                                  -178451;9;0;false;false;63;95;191;;;
                                  -178460;1;0;false;false;;;;;;
                                  -178461;3;0;false;false;63;95;191;;;
                                  -178464;1;0;false;false;;;;;;
                                  -178465;3;0;false;false;63;95;191;;;
                                  -178468;1;0;false;false;;;;;;
                                  -178469;6;0;false;false;63;95;191;;;
                                  -178475;1;0;false;false;;;;;;
                                  -178476;4;0;false;false;63;95;191;;;
                                  -178480;1;0;false;false;;;;;;
                                  -178481;2;0;false;false;63;95;191;;;
                                  -178483;1;0;false;false;;;;;;
                                  -178484;7;0;false;false;63;95;191;;;
                                  -178491;4;0;false;false;;;;;;
                                  -178495;1;0;false;false;63;95;191;;;
                                  -178496;1;0;false;false;;;;;;
                                  -178497;3;0;false;false;63;95;191;;;
                                  -178500;1;0;false;false;;;;;;
                                  -178501;7;0;false;false;63;95;191;;;
                                  -178508;1;0;false;false;;;;;;
                                  -178509;7;0;false;false;63;95;191;;;
                                  -178516;3;0;false;false;;;;;;
                                  -178519;1;0;false;false;63;95;191;;;
                                  -178520;1;0;false;false;;;;;;
                                  -178521;3;0;false;false;127;127;159;;;
                                  -178524;3;0;false;false;;;;;;
                                  -178527;2;0;false;false;63;95;191;;;
                                  -178529;2;0;false;false;;;;;;
                                  -178531;4;1;false;false;127;0;85;;;
                                  -178535;1;0;false;false;;;;;;
                                  -178536;34;0;false;false;0;0;0;;;
                                  -178570;1;0;false;false;;;;;;
                                  -178571;6;0;false;false;0;0;0;;;
                                  -178577;1;0;false;false;;;;;;
                                  -178578;1;0;false;false;0;0;0;;;
                                  -178579;3;0;false;false;;;;;;
                                  -178582;42;0;false;false;0;0;0;;;
                                  -178624;5;0;false;false;;;;;;
                                  -178629;27;0;false;false;0;0;0;;;
                                  -178656;5;0;false;false;;;;;;
                                  -178661;31;0;false;false;0;0;0;;;
                                  -178692;4;0;false;false;;;;;;
                                  -178696;27;0;false;false;0;0;0;;;
                                  -178723;4;0;false;false;;;;;;
                                  -178727;32;0;false;false;0;0;0;;;
                                  -178759;3;0;false;false;;;;;;
                                  -178762;16;0;false;false;0;0;0;;;
                                  -178778;3;0;false;false;;;;;;
                                  -178781;68;0;false;false;63;127;95;;;
                                  -178849;1;0;false;false;;;;;;
                                  -178850;52;0;false;false;63;127;95;;;
                                  -178902;1;0;false;false;;;;;;
                                  -178903;5;0;false;false;63;127;95;;;
                                  -178908;1;0;false;false;;;;;;
                                  -178909;65;0;false;false;63;127;95;;;
                                  -178974;1;0;false;false;;;;;;
                                  -178975;68;0;false;false;63;127;95;;;
                                  -179043;1;0;false;false;;;;;;
                                  -179044;70;0;false;false;63;127;95;;;
                                  -179114;1;0;false;false;;;;;;
                                  -179115;39;0;false;false;63;127;95;;;
                                  -179154;1;0;false;false;;;;;;
                                  -179155;18;0;false;false;63;127;95;;;
                                  -179173;1;0;false;false;;;;;;
                                  -179174;16;0;false;false;0;0;0;;;
                                  -179190;4;0;false;false;;;;;;
                                  -179194;20;0;false;false;0;0;0;;;
                                  -179214;5;0;false;false;;;;;;
                                  -179219;31;0;false;false;0;0;0;;;
                                  -179250;5;0;false;false;;;;;;
                                  -179255;28;0;false;false;0;0;0;;;
                                  -179283;7;0;false;false;;;;;;
                                  -179290;2;1;false;false;127;0;85;;;
                                  -179292;1;0;false;false;;;;;;
                                  -179293;31;0;false;false;0;0;0;;;
                                  -179324;1;0;false;false;;;;;;
                                  -179325;1;0;false;false;0;0;0;;;
                                  -179326;1;0;false;false;;;;;;
                                  -179327;2;0;false;false;0;0;0;;;
                                  -179329;1;0;false;false;;;;;;
                                  -179330;1;0;false;false;0;0;0;;;
                                  -179331;4;0;false;false;;;;;;
                                  -179335;56;0;false;false;63;127;95;;;
                                  -179391;2;0;false;false;;;;;;
                                  -179393;18;0;false;false;63;127;95;;;
                                  -179411;2;0;false;false;;;;;;
                                  -179413;65;0;false;false;63;127;95;;;
                                  -179478;2;0;false;false;;;;;;
                                  -179480;18;0;false;false;63;127;95;;;
                                  -179498;2;0;false;false;;;;;;
                                  -179500;23;0;false;false;0;0;0;;;
                                  -179523;3;0;false;false;;;;;;
                                  -179526;1;0;false;false;0;0;0;;;
                                  -179527;3;0;false;false;;;;;;
                                  -179530;2;1;false;false;127;0;85;;;
                                  -179532;1;0;false;false;;;;;;
                                  -179533;31;0;false;false;0;0;0;;;
                                  -179564;1;0;false;false;;;;;;
                                  -179565;1;0;false;false;0;0;0;;;
                                  -179566;1;0;false;false;;;;;;
                                  -179567;2;0;false;false;0;0;0;;;
                                  -179569;1;0;false;false;;;;;;
                                  -179570;1;0;false;false;0;0;0;;;
                                  -179571;4;0;false;false;;;;;;
                                  -179575;19;0;false;false;63;127;95;;;
                                  -179594;2;0;false;false;;;;;;
                                  -179596;22;0;false;false;0;0;0;;;
                                  -179618;3;0;false;false;;;;;;
                                  -179621;1;0;false;false;0;0;0;;;
                                  -179622;3;0;false;false;;;;;;
                                  -179625;71;0;false;false;63;127;95;;;
                                  -179696;1;0;false;false;;;;;;
                                  -179697;67;0;false;false;63;127;95;;;
                                  -179764;1;0;false;false;;;;;;
                                  -179765;2;1;false;false;127;0;85;;;
                                  -179767;1;0;false;false;;;;;;
                                  -179768;27;0;false;false;0;0;0;;;
                                  -179795;1;0;false;false;;;;;;
                                  -179796;2;0;false;false;0;0;0;;;
                                  -179798;1;0;false;false;;;;;;
                                  -179799;1;0;false;false;0;0;0;;;
                                  -179800;1;0;false;false;;;;;;
                                  -179801;2;0;false;false;0;0;0;;;
                                  -179803;1;0;false;false;;;;;;
                                  -179804;30;0;false;false;0;0;0;;;
                                  -179834;1;0;false;false;;;;;;
                                  -179835;2;0;false;false;0;0;0;;;
                                  -179837;1;0;false;false;;;;;;
                                  -179838;2;0;false;false;0;0;0;;;
                                  -179840;1;0;false;false;;;;;;
                                  -179841;1;0;false;false;0;0;0;;;
                                  -179842;4;0;false;false;;;;;;
                                  -179846;3;1;false;false;127;0;85;;;
                                  -179849;1;0;false;false;;;;;;
                                  -179850;9;0;false;false;0;0;0;;;
                                  -179859;1;0;false;false;;;;;;
                                  -179860;1;0;false;false;0;0;0;;;
                                  -179861;1;0;false;false;;;;;;
                                  -179862;45;0;false;false;0;0;0;;;
                                  -179907;4;0;false;false;;;;;;
                                  -179911;3;1;false;false;127;0;85;;;
                                  -179914;1;0;false;false;;;;;;
                                  -179915;6;0;false;false;0;0;0;;;
                                  -179921;1;0;false;false;;;;;;
                                  -179922;1;0;false;false;0;0;0;;;
                                  -179923;1;0;false;false;;;;;;
                                  -179924;9;0;false;false;0;0;0;;;
                                  -179933;1;0;false;false;;;;;;
                                  -179934;1;0;false;false;0;0;0;;;
                                  -179935;1;0;false;false;;;;;;
                                  -179936;10;0;false;false;0;0;0;;;
                                  -179946;1;0;false;false;;;;;;
                                  -179947;1;0;false;false;0;0;0;;;
                                  -179948;1;0;false;false;;;;;;
                                  -179949;20;0;false;false;0;0;0;;;
                                  -179969;1;0;false;false;;;;;;
                                  -179970;1;0;false;false;0;0;0;;;
                                  -179971;1;0;false;false;;;;;;
                                  -179972;10;0;false;false;0;0;0;;;
                                  -179982;6;0;false;false;;;;;;
                                  -179988;2;1;false;false;127;0;85;;;
                                  -179990;1;0;false;false;;;;;;
                                  -179991;15;0;false;false;0;0;0;;;
                                  -180006;1;0;false;false;;;;;;
                                  -180007;1;0;false;false;0;0;0;;;
                                  -180008;5;0;false;false;;;;;;
                                  -180013;2;0;false;false;0;0;0;;;
                                  -180015;1;0;false;false;;;;;;
                                  -180016;2;0;false;false;0;0;0;;;
                                  -180018;1;0;false;false;;;;;;
                                  -180019;1;0;false;false;0;0;0;;;
                                  -180020;1;0;false;false;;;;;;
                                  -180021;8;0;false;false;0;0;0;;;
                                  -180029;5;0;false;false;;;;;;
                                  -180034;5;0;false;false;0;0;0;;;
                                  -180039;1;0;false;false;;;;;;
                                  -180040;5;0;false;false;0;0;0;;;
                                  -180045;1;0;false;false;;;;;;
                                  -180046;1;0;false;false;0;0;0;;;
                                  -180047;1;0;false;false;;;;;;
                                  -180048;11;0;false;false;0;0;0;;;
                                  -180059;5;0;false;false;;;;;;
                                  -180064;7;1;false;false;127;0;85;;;
                                  -180071;1;0;false;false;;;;;;
                                  -180072;12;0;false;false;0;0;0;;;
                                  -180084;1;0;false;false;;;;;;
                                  -180085;1;0;false;false;0;0;0;;;
                                  -180086;1;0;false;false;;;;;;
                                  -180087;5;1;false;false;127;0;85;;;
                                  -180092;1;0;false;false;0;0;0;;;
                                  -180093;10;0;false;false;;;;;;
                                  -180103;2;1;false;false;127;0;85;;;
                                  -180105;1;0;false;false;;;;;;
                                  -180106;6;0;false;false;0;0;0;;;
                                  -180112;1;0;false;false;;;;;;
                                  -180113;2;0;false;false;0;0;0;;;
                                  -180115;1;0;false;false;;;;;;
                                  -180116;4;1;false;false;127;0;85;;;
                                  -180120;1;0;false;false;0;0;0;;;
                                  -180121;1;0;false;false;;;;;;
                                  -180122;1;0;false;false;0;0;0;;;
                                  -180123;6;0;false;false;;;;;;
                                  -180129;12;0;false;false;0;0;0;;;
                                  -180141;1;0;false;false;;;;;;
                                  -180142;1;0;false;false;0;0;0;;;
                                  -180143;1;0;false;false;;;;;;
                                  -180144;19;0;false;false;0;0;0;;;
                                  -180163;6;0;false;false;;;;;;
                                  -180169;17;0;false;false;0;0;0;;;
                                  -180186;5;1;false;false;127;0;85;;;
                                  -180191;2;0;false;false;0;0;0;;;
                                  -180193;5;0;false;false;;;;;;
                                  -180198;1;0;false;false;0;0;0;;;
                                  -180199;5;0;false;false;;;;;;
                                  -180204;16;0;false;false;0;0;0;;;
                                  -180220;1;0;false;false;;;;;;
                                  -180221;10;0;false;false;0;0;0;;;
                                  -180231;1;0;false;false;;;;;;
                                  -180232;7;0;false;false;0;0;0;;;
                                  -180239;1;0;false;false;;;;;;
                                  -180240;12;0;false;false;0;0;0;;;
                                  -180252;5;0;false;false;;;;;;
                                  -180257;2;1;false;false;127;0;85;;;
                                  -180259;1;0;false;false;;;;;;
                                  -180260;6;0;false;false;0;0;0;;;
                                  -180266;1;0;false;false;;;;;;
                                  -180267;2;0;false;false;0;0;0;;;
                                  -180269;1;0;false;false;;;;;;
                                  -180270;4;1;false;false;127;0;85;;;
                                  -180274;1;0;false;false;0;0;0;;;
                                  -180275;1;0;false;false;;;;;;
                                  -180276;1;0;false;false;0;0;0;;;
                                  -180277;6;0;false;false;;;;;;
                                  -180283;31;0;false;false;0;0;0;;;
                                  -180314;5;0;false;false;;;;;;
                                  -180319;1;0;false;false;0;0;0;;;
                                  -180320;5;0;false;false;;;;;;
                                  -180325;13;0;false;false;0;0;0;;;
                                  -180338;4;0;false;false;;;;;;
                                  -180342;1;0;false;false;0;0;0;;;
                                  -180343;1;0;false;false;;;;;;
                                  -180344;4;1;false;false;127;0;85;;;
                                  -180348;1;0;false;false;;;;;;
                                  -180349;1;0;false;false;0;0;0;;;
                                  -180350;5;0;false;false;;;;;;
                                  -180355;9;0;false;false;0;0;0;;;
                                  -180364;1;0;false;false;;;;;;
                                  -180365;7;0;false;false;0;0;0;;;
                                  -180372;1;0;false;false;;;;;;
                                  -180373;22;0;false;false;0;0;0;;;
                                  -180395;1;0;false;false;;;;;;
                                  -180396;11;0;false;false;0;0;0;;;
                                  -180407;1;0;false;false;;;;;;
                                  -180408;5;1;false;false;127;0;85;;;
                                  -180413;2;0;false;false;0;0;0;;;
                                  -180415;5;0;false;false;;;;;;
                                  -180420;9;0;false;false;0;0;0;;;
                                  -180429;4;0;false;false;;;;;;
                                  -180433;1;0;false;false;0;0;0;;;
                                  -180434;3;0;false;false;;;;;;
                                  -180437;1;0;false;false;0;0;0;;;
                                  -180438;2;0;false;false;;;;;;
                                  -180440;1;0;false;false;0;0;0;;;
                                  -180441;2;0;false;false;;;;;;
                                  -180443;3;0;false;false;63;95;191;;;
                                  -180446;3;0;false;false;;;;;;
                                  -180449;1;0;false;false;63;95;191;;;
                                  -180450;1;0;false;false;;;;;;
                                  -180451;7;0;false;false;63;95;191;;;
                                  -180458;1;0;false;false;;;;;;
                                  -180459;3;0;false;false;63;95;191;;;
                                  -180462;1;0;false;false;;;;;;
                                  -180463;6;0;false;false;63;95;191;;;
                                  -180469;1;0;false;false;;;;;;
                                  -180470;2;0;false;false;63;95;191;;;
                                  -180472;1;0;false;false;;;;;;
                                  -180473;7;0;false;false;63;95;191;;;
                                  -180480;1;0;false;false;;;;;;
                                  -180481;1;0;false;false;63;95;191;;;
                                  -180482;1;0;false;false;;;;;;
                                  -180483;7;0;false;false;63;95;191;;;
                                  -180490;1;0;false;false;;;;;;
                                  -180491;7;0;false;false;63;95;191;;;
                                  -180498;1;0;false;false;;;;;;
                                  -180499;7;0;false;false;63;95;191;;;
                                  -180506;3;0;false;false;;;;;;
                                  -180509;1;0;false;false;63;95;191;;;
                                  -180510;1;0;false;false;;;;;;
                                  -180511;3;0;false;false;127;127;159;;;
                                  -180514;3;0;false;false;;;;;;
                                  -180517;1;0;false;false;63;95;191;;;
                                  -180518;3;0;false;false;;;;;;
                                  -180521;1;0;false;false;63;95;191;;;
                                  -180522;1;0;false;false;;;;;;
                                  -180523;7;1;false;false;127;159;191;;;
                                  -180530;11;0;false;false;63;95;191;;;
                                  -180541;1;0;false;false;;;;;;
                                  -180542;3;0;false;false;63;95;191;;;
                                  -180545;1;0;false;false;;;;;;
                                  -180546;5;0;false;false;63;95;191;;;
                                  -180551;1;0;false;false;;;;;;
                                  -180552;6;0;false;false;63;95;191;;;
                                  -180558;1;0;false;false;;;;;;
                                  -180559;2;0;false;false;63;95;191;;;
                                  -180561;1;0;false;false;;;;;;
                                  -180562;3;0;false;false;63;95;191;;;
                                  -180565;1;0;false;false;;;;;;
                                  -180566;6;0;false;false;63;95;191;;;
                                  -180572;3;0;false;false;;;;;;
                                  -180575;1;0;false;false;63;95;191;;;
                                  -180576;1;0;false;false;;;;;;
                                  -180577;7;1;false;false;127;159;191;;;
                                  -180584;13;0;false;false;63;95;191;;;
                                  -180597;1;0;false;false;;;;;;
                                  -180598;4;0;false;false;63;95;191;;;
                                  -180602;1;0;false;false;;;;;;
                                  -180603;4;0;false;false;63;95;191;;;
                                  -180607;1;0;false;false;;;;;;
                                  -180608;2;0;false;false;63;95;191;;;
                                  -180610;1;0;false;false;;;;;;
                                  -180611;5;0;false;false;63;95;191;;;
                                  -180616;1;0;false;false;;;;;;
                                  -180617;2;0;false;false;63;95;191;;;
                                  -180619;1;0;false;false;;;;;;
                                  -180620;2;0;false;false;63;95;191;;;
                                  -180622;1;0;false;false;;;;;;
                                  -180623;8;0;false;false;63;95;191;;;
                                  -180631;1;0;false;false;;;;;;
                                  -180632;2;0;false;false;63;95;191;;;
                                  -180634;1;0;false;false;;;;;;
                                  -180635;5;0;false;false;63;95;191;;;
                                  -180640;1;0;false;false;;;;;;
                                  -180641;6;0;false;false;63;95;191;;;
                                  -180647;4;0;false;false;;;;;;
                                  -180651;1;0;false;false;63;95;191;;;
                                  -180652;1;0;false;false;;;;;;
                                  -180653;2;0;false;false;63;95;191;;;
                                  -180655;1;0;false;false;;;;;;
                                  -180656;2;0;false;false;63;95;191;;;
                                  -180658;1;0;false;false;;;;;;
                                  -180659;4;0;false;false;63;95;191;;;
                                  -180663;1;0;false;false;;;;;;
                                  -180664;4;0;false;false;63;95;191;;;
                                  -180668;1;0;false;false;;;;;;
                                  -180669;2;0;false;false;63;95;191;;;
                                  -180671;1;0;false;false;;;;;;
                                  -180672;8;0;false;false;63;95;191;;;
                                  -180680;3;0;false;false;;;;;;
                                  -180683;1;0;false;false;63;95;191;;;
                                  -180684;1;0;false;false;;;;;;
                                  -180685;7;1;false;false;127;159;191;;;
                                  -180692;22;0;false;false;63;95;191;;;
                                  -180714;1;0;false;false;;;;;;
                                  -180715;6;0;false;false;63;95;191;;;
                                  -180721;1;0;false;false;;;;;;
                                  -180722;2;0;false;false;63;95;191;;;
                                  -180724;1;0;false;false;;;;;;
                                  -180725;4;0;false;false;63;95;191;;;
                                  -180729;1;0;false;false;;;;;;
                                  -180730;4;0;false;false;63;95;191;;;
                                  -180734;1;0;false;false;;;;;;
                                  -180735;2;0;false;false;63;95;191;;;
                                  -180737;1;0;false;false;;;;;;
                                  -180738;5;0;false;false;63;95;191;;;
                                  -180743;1;0;false;false;;;;;;
                                  -180744;2;0;false;false;63;95;191;;;
                                  -180746;1;0;false;false;;;;;;
                                  -180747;2;0;false;false;63;95;191;;;
                                  -180749;1;0;false;false;;;;;;
                                  -180750;8;0;false;false;63;95;191;;;
                                  -180758;3;0;false;false;;;;;;
                                  -180761;1;0;false;false;63;95;191;;;
                                  -180762;1;0;false;false;;;;;;
                                  -180763;7;1;false;false;127;159;191;;;
                                  -180770;18;0;false;false;63;95;191;;;
                                  -180788;1;0;false;false;;;;;;
                                  -180789;6;0;false;false;63;95;191;;;
                                  -180795;1;0;false;false;;;;;;
                                  -180796;2;0;false;false;63;95;191;;;
                                  -180798;1;0;false;false;;;;;;
                                  -180799;4;0;false;false;63;95;191;;;
                                  -180803;1;0;false;false;;;;;;
                                  -180804;4;0;false;false;63;95;191;;;
                                  -180808;1;0;false;false;;;;;;
                                  -180809;2;0;false;false;63;95;191;;;
                                  -180811;1;0;false;false;;;;;;
                                  -180812;5;0;false;false;63;95;191;;;
                                  -180817;1;0;false;false;;;;;;
                                  -180818;2;0;false;false;63;95;191;;;
                                  -180820;1;0;false;false;;;;;;
                                  -180821;2;0;false;false;63;95;191;;;
                                  -180823;1;0;false;false;;;;;;
                                  -180824;8;0;false;false;63;95;191;;;
                                  -180832;3;0;false;false;;;;;;
                                  -180835;1;0;false;false;63;95;191;;;
                                  -180836;1;0;false;false;;;;;;
                                  -180837;7;1;false;false;127;159;191;;;
                                  -180844;22;0;false;false;63;95;191;;;
                                  -180866;1;0;false;false;;;;;;
                                  -180867;6;0;false;false;63;95;191;;;
                                  -180873;1;0;false;false;;;;;;
                                  -180874;2;0;false;false;63;95;191;;;
                                  -180876;1;0;false;false;;;;;;
                                  -180877;5;0;false;false;63;95;191;;;
                                  -180882;1;0;false;false;;;;;;
                                  -180883;4;0;false;false;63;95;191;;;
                                  -180887;1;0;false;false;;;;;;
                                  -180888;3;0;false;false;63;95;191;;;
                                  -180891;1;0;false;false;;;;;;
                                  -180892;5;0;false;false;63;95;191;;;
                                  -180897;1;0;false;false;;;;;;
                                  -180898;2;0;false;false;63;95;191;;;
                                  -180900;1;0;false;false;;;;;;
                                  -180901;2;0;false;false;63;95;191;;;
                                  -180903;1;0;false;false;;;;;;
                                  -180904;8;0;false;false;63;95;191;;;
                                  -180912;3;0;false;false;;;;;;
                                  -180915;1;0;false;false;63;95;191;;;
                                  -180916;1;0;false;false;;;;;;
                                  -180917;7;1;false;false;127;159;191;;;
                                  -180924;18;0;false;false;63;95;191;;;
                                  -180942;1;0;false;false;;;;;;
                                  -180943;6;0;false;false;63;95;191;;;
                                  -180949;1;0;false;false;;;;;;
                                  -180950;2;0;false;false;63;95;191;;;
                                  -180952;1;0;false;false;;;;;;
                                  -180953;3;0;false;false;63;95;191;;;
                                  -180956;1;0;false;false;;;;;;
                                  -180957;5;0;false;false;63;95;191;;;
                                  -180962;1;0;false;false;;;;;;
                                  -180963;4;0;false;false;63;95;191;;;
                                  -180967;1;0;false;false;;;;;;
                                  -180968;3;0;false;false;63;95;191;;;
                                  -180971;1;0;false;false;;;;;;
                                  -180972;5;0;false;false;63;95;191;;;
                                  -180977;1;0;false;false;;;;;;
                                  -180978;2;0;false;false;63;95;191;;;
                                  -180980;1;0;false;false;;;;;;
                                  -180981;2;0;false;false;63;95;191;;;
                                  -180983;1;0;false;false;;;;;;
                                  -180984;8;0;false;false;63;95;191;;;
                                  -180992;3;0;false;false;;;;;;
                                  -180995;2;0;false;false;63;95;191;;;
                                  -180997;2;0;false;false;;;;;;
                                  -180999;4;1;false;false;127;0;85;;;
                                  -181003;1;0;false;false;;;;;;
                                  -181004;36;0;false;false;0;0;0;;;
                                  -181040;1;0;false;false;;;;;;
                                  -181041;6;0;false;false;0;0;0;;;
                                  -181047;1;0;false;false;;;;;;
                                  -181048;1;0;false;false;0;0;0;;;
                                  -181049;3;0;false;false;;;;;;
                                  -181052;3;1;false;false;127;0;85;;;
                                  -181055;1;0;false;false;;;;;;
                                  -181056;10;0;false;false;0;0;0;;;
                                  -181066;4;0;false;false;;;;;;
                                  -181070;3;1;false;false;127;0;85;;;
                                  -181073;1;0;false;false;;;;;;
                                  -181074;12;0;false;false;0;0;0;;;
                                  -181086;3;0;false;false;;;;;;
                                  -181089;7;1;false;false;127;0;85;;;
                                  -181096;1;0;false;false;;;;;;
                                  -181097;17;0;false;false;0;0;0;;;
                                  -181114;1;0;false;false;;;;;;
                                  -181115;1;0;false;false;0;0;0;;;
                                  -181116;1;0;false;false;;;;;;
                                  -181117;22;0;false;false;0;0;0;;;
                                  -181139;1;0;false;false;;;;;;
                                  -181140;1;0;false;false;0;0;0;;;
                                  -181141;1;0;false;false;;;;;;
                                  -181142;1;0;false;false;0;0;0;;;
                                  -181143;1;0;false;false;;;;;;
                                  -181144;2;0;false;false;0;0;0;;;
                                  -181146;1;0;false;false;;;;;;
                                  -181147;18;0;false;false;0;0;0;;;
                                  -181165;1;0;false;false;;;;;;
                                  -181166;1;0;false;false;0;0;0;;;
                                  -181167;1;0;false;false;;;;;;
                                  -181168;2;0;false;false;0;0;0;;;
                                  -181170;8;0;false;false;;;;;;
                                  -181178;2;1;false;false;127;0;85;;;
                                  -181180;1;0;false;false;;;;;;
                                  -181181;23;0;false;false;0;0;0;;;
                                  -181204;1;0;false;false;;;;;;
                                  -181205;1;0;false;false;0;0;0;;;
                                  -181206;1;0;false;false;;;;;;
                                  -181207;2;0;false;false;0;0;0;;;
                                  -181209;1;0;false;false;;;;;;
                                  -181210;1;0;false;false;0;0;0;;;
                                  -181211;4;0;false;false;;;;;;
                                  -181215;11;0;false;false;0;0;0;;;
                                  -181226;1;0;false;false;;;;;;
                                  -181227;2;0;false;false;0;0;0;;;
                                  -181229;1;0;false;false;;;;;;
                                  -181230;23;0;false;false;0;0;0;;;
                                  -181253;4;0;false;false;;;;;;
                                  -181257;22;0;false;false;0;0;0;;;
                                  -181279;1;0;false;false;;;;;;
                                  -181280;2;0;false;false;0;0;0;;;
                                  -181282;1;0;false;false;;;;;;
                                  -181283;3;0;false;false;0;0;0;;;
                                  -181286;3;0;false;false;;;;;;
                                  -181289;1;0;false;false;0;0;0;;;
                                  -181290;3;0;false;false;;;;;;
                                  -181293;19;0;false;false;0;0;0;;;
                                  -181312;1;0;false;false;;;;;;
                                  -181313;1;0;false;false;0;0;0;;;
                                  -181314;1;0;false;false;;;;;;
                                  -181315;12;0;false;false;0;0;0;;;
                                  -181327;3;0;false;false;;;;;;
                                  -181330;26;0;false;false;0;0;0;;;
                                  -181356;1;0;false;false;;;;;;
                                  -181357;1;0;false;false;0;0;0;;;
                                  -181358;1;0;false;false;;;;;;
                                  -181359;19;0;false;false;0;0;0;;;
                                  -181378;3;0;false;false;;;;;;
                                  -181381;26;0;false;false;0;0;0;;;
                                  -181407;1;0;false;false;;;;;;
                                  -181408;1;0;false;false;0;0;0;;;
                                  -181409;1;0;false;false;;;;;;
                                  -181410;19;0;false;false;0;0;0;;;
                                  -181429;3;0;false;false;;;;;;
                                  -181432;30;0;false;false;0;0;0;;;
                                  -181462;1;0;false;false;;;;;;
                                  -181463;1;0;false;false;0;0;0;;;
                                  -181464;1;0;false;false;;;;;;
                                  -181465;23;0;false;false;0;0;0;;;
                                  -181488;3;0;false;false;;;;;;
                                  -181491;30;0;false;false;0;0;0;;;
                                  -181521;1;0;false;false;;;;;;
                                  -181522;1;0;false;false;0;0;0;;;
                                  -181523;1;0;false;false;;;;;;
                                  -181524;23;0;false;false;0;0;0;;;
                                  -181547;3;0;false;false;;;;;;
                                  -181550;9;0;false;false;0;0;0;;;
                                  -181559;1;0;false;false;;;;;;
                                  -181560;1;0;false;false;0;0;0;;;
                                  -181561;1;0;false;false;;;;;;
                                  -181562;37;0;false;false;0;0;0;;;
                                  -181599;3;0;false;false;;;;;;
                                  -181602;11;0;false;false;0;0;0;;;
                                  -181613;1;0;false;false;;;;;;
                                  -181614;1;0;false;false;0;0;0;;;
                                  -181615;1;0;false;false;;;;;;
                                  -181616;9;0;false;false;0;0;0;;;
                                  -181625;1;0;false;false;;;;;;
                                  -181626;1;0;false;false;0;0;0;;;
                                  -181627;1;0;false;false;;;;;;
                                  -181628;10;0;false;false;0;0;0;;;
                                  -181638;1;0;false;false;;;;;;
                                  -181639;1;0;false;false;0;0;0;;;
                                  -181640;1;0;false;false;;;;;;
                                  -181641;20;0;false;false;0;0;0;;;
                                  -181661;1;0;false;false;;;;;;
                                  -181662;1;0;false;false;0;0;0;;;
                                  -181663;1;0;false;false;;;;;;
                                  -181664;10;0;false;false;0;0;0;;;
                                  -181674;3;0;false;false;;;;;;
                                  -181677;2;1;false;false;127;0;85;;;
                                  -181679;1;0;false;false;;;;;;
                                  -181680;19;0;false;false;0;0;0;;;
                                  -181699;1;0;false;false;;;;;;
                                  -181700;1;0;false;false;0;0;0;;;
                                  -181701;4;0;false;false;;;;;;
                                  -181705;34;0;false;false;0;0;0;;;
                                  -181739;1;0;false;false;;;;;;
                                  -181740;19;0;false;false;0;0;0;;;
                                  -181759;1;0;false;false;;;;;;
                                  -181760;24;0;false;false;0;0;0;;;
                                  -181784;3;0;false;false;;;;;;
                                  -181787;1;0;false;false;0;0;0;;;
                                  -181788;3;0;false;false;;;;;;
                                  -181791;49;0;false;false;63;127;95;;;
                                  -181840;1;0;false;false;;;;;;
                                  -181841;2;1;false;false;127;0;85;;;
                                  -181843;1;0;false;false;;;;;;
                                  -181844;18;0;false;false;0;0;0;;;
                                  -181862;1;0;false;false;;;;;;
                                  -181863;2;0;false;false;0;0;0;;;
                                  -181865;1;0;false;false;;;;;;
                                  -181866;4;1;false;false;127;0;85;;;
                                  -181870;1;0;false;false;0;0;0;;;
                                  -181871;1;0;false;false;;;;;;
                                  -181872;1;0;false;false;0;0;0;;;
                                  -181873;4;0;false;false;;;;;;
                                  -181877;38;0;false;false;0;0;0;;;
                                  -181915;3;0;false;false;;;;;;
                                  -181918;1;0;false;false;0;0;0;;;
                                  -181919;6;0;false;false;;;;;;
                                  -181925;77;0;false;false;63;127;95;;;
                                  -182002;1;0;false;false;;;;;;
                                  -182003;70;0;false;false;63;127;95;;;
                                  -182073;1;0;false;false;;;;;;
                                  -182074;74;0;false;false;63;127;95;;;
                                  -182148;1;0;false;false;;;;;;
                                  -182149;17;0;false;false;63;127;95;;;
                                  -182166;1;0;false;false;;;;;;
                                  -182167;3;1;false;false;127;0;85;;;
                                  -182170;1;0;false;false;;;;;;
                                  -182171;12;0;false;false;0;0;0;;;
                                  -182183;1;0;false;false;;;;;;
                                  -182184;1;0;false;false;0;0;0;;;
                                  -182185;1;0;false;false;;;;;;
                                  -182186;22;0;false;false;0;0;0;;;
                                  -182208;1;0;false;false;;;;;;
                                  -182209;1;0;false;false;0;0;0;;;
                                  -182210;1;0;false;false;;;;;;
                                  -182211;22;0;false;false;0;0;0;;;
                                  -182233;1;0;false;false;;;;;;
                                  -182234;1;0;false;false;0;0;0;;;
                                  -182235;1;0;false;false;;;;;;
                                  -182236;19;0;false;false;0;0;0;;;
                                  -182255;3;0;false;false;;;;;;
                                  -182258;2;1;false;false;127;0;85;;;
                                  -182260;1;0;false;false;;;;;;
                                  -182261;12;0;false;false;0;0;0;;;
                                  -182273;1;0;false;false;;;;;;
                                  -182274;1;0;false;false;0;0;0;;;
                                  -182275;1;0;false;false;;;;;;
                                  -182276;13;0;false;false;0;0;0;;;
                                  -182289;1;0;false;false;;;;;;
                                  -182290;11;0;false;false;0;0;0;;;
                                  -182301;1;0;false;false;;;;;;
                                  -182302;1;0;false;false;0;0;0;;;
                                  -182303;1;0;false;false;;;;;;
                                  -182304;13;0;false;false;0;0;0;;;
                                  -182317;2;0;false;false;;;;;;
                                  -182319;1;0;false;false;0;0;0;;;
                                  -182320;2;0;false;false;;;;;;
                                  -182322;3;0;false;false;63;95;191;;;
                                  -182325;3;0;false;false;;;;;;
                                  -182328;1;0;false;false;63;95;191;;;
                                  -182329;1;0;false;false;;;;;;
                                  -182330;6;0;false;false;63;95;191;;;
                                  -182336;1;0;false;false;;;;;;
                                  -182337;4;0;false;false;63;95;191;;;
                                  -182341;1;0;false;false;;;;;;
                                  -182342;3;0;false;false;63;95;191;;;
                                  -182345;1;0;false;false;;;;;;
                                  -182346;6;0;false;false;63;95;191;;;
                                  -182352;1;0;false;false;;;;;;
                                  -182353;7;0;false;false;63;95;191;;;
                                  -182360;1;0;false;false;;;;;;
                                  -182361;2;0;false;false;63;95;191;;;
                                  -182363;1;0;false;false;;;;;;
                                  -182364;3;0;false;false;63;95;191;;;
                                  -182367;1;0;false;false;;;;;;
                                  -182368;16;0;false;false;63;95;191;;;
                                  -182384;1;0;false;false;;;;;;
                                  -182385;11;0;false;false;63;95;191;;;
                                  -182396;4;0;false;false;;;;;;
                                  -182400;1;0;false;false;63;95;191;;;
                                  -182401;1;0;false;false;;;;;;
                                  -182402;3;0;false;false;63;95;191;;;
                                  -182405;1;0;false;false;;;;;;
                                  -182406;3;0;false;false;63;95;191;;;
                                  -182409;1;0;false;false;;;;;;
                                  -182410;8;0;false;false;63;95;191;;;
                                  -182418;1;0;false;false;;;;;;
                                  -182419;6;0;false;false;63;95;191;;;
                                  -182425;1;0;false;false;;;;;;
                                  -182426;3;0;false;false;63;95;191;;;
                                  -182429;1;0;false;false;;;;;;
                                  -182430;5;0;false;false;63;95;191;;;
                                  -182435;1;0;false;false;;;;;;
                                  -182436;9;0;false;false;63;95;191;;;
                                  -182445;1;0;false;false;;;;;;
                                  -182446;9;0;false;false;63;95;191;;;
                                  -182455;1;0;false;false;;;;;;
                                  -182456;3;0;false;false;63;95;191;;;
                                  -182459;1;0;false;false;;;;;;
                                  -182460;6;0;false;false;63;95;191;;;
                                  -182466;1;0;false;false;;;;;;
                                  -182467;8;0;false;false;63;95;191;;;
                                  -182475;4;0;false;false;;;;;;
                                  -182479;1;0;false;false;63;95;191;;;
                                  -182480;1;0;false;false;;;;;;
                                  -182481;12;0;false;false;63;95;191;;;
                                  -182493;1;0;false;false;;;;;;
                                  -182494;3;0;false;false;63;95;191;;;
                                  -182497;1;0;false;false;;;;;;
                                  -182498;7;0;false;false;63;95;191;;;
                                  -182505;1;0;false;false;;;;;;
                                  -182506;5;0;false;false;63;95;191;;;
                                  -182511;1;0;false;false;;;;;;
                                  -182512;3;0;false;false;63;95;191;;;
                                  -182515;1;0;false;false;;;;;;
                                  -182516;6;0;false;false;63;95;191;;;
                                  -182522;1;0;false;false;;;;;;
                                  -182523;5;0;false;false;63;95;191;;;
                                  -182528;1;0;false;false;;;;;;
                                  -182529;7;0;false;false;63;95;191;;;
                                  -182536;1;0;false;false;;;;;;
                                  -182537;3;0;false;false;63;95;191;;;
                                  -182540;1;0;false;false;;;;;;
                                  -182541;7;0;false;false;63;95;191;;;
                                  -182548;3;0;false;false;;;;;;
                                  -182551;1;0;false;false;63;95;191;;;
                                  -182552;1;0;false;false;;;;;;
                                  -182553;3;0;false;false;127;127;159;;;
                                  -182556;3;0;false;false;;;;;;
                                  -182559;1;0;false;false;63;95;191;;;
                                  -182560;3;0;false;false;;;;;;
                                  -182563;1;0;false;false;63;95;191;;;
                                  -182564;1;0;false;false;;;;;;
                                  -182565;7;1;false;false;127;159;191;;;
                                  -182572;5;0;false;false;63;95;191;;;
                                  -182577;1;0;false;false;;;;;;
                                  -182578;4;0;false;false;63;95;191;;;
                                  -182582;1;0;false;false;;;;;;
                                  -182583;6;0;false;false;63;95;191;;;
                                  -182589;1;0;false;false;;;;;;
                                  -182590;6;0;false;false;63;95;191;;;
                                  -182596;4;0;false;false;;;;;;
                                  -182600;2;0;false;false;63;95;191;;;
                                  -182602;2;0;false;false;;;;;;
                                  -182604;4;1;false;false;127;0;85;;;
                                  -182608;1;0;false;false;;;;;;
                                  -182609;30;0;false;false;0;0;0;;;
                                  -182639;1;0;false;false;;;;;;
                                  -182640;6;0;false;false;0;0;0;;;
                                  -182646;1;0;false;false;;;;;;
                                  -182647;1;0;false;false;0;0;0;;;
                                  -182648;3;0;false;false;;;;;;
                                  -182651;8;0;false;false;0;0;0;;;
                                  -182659;2;0;false;false;;;;;;
                                  -182661;1;0;false;false;0;0;0;;;
                                  -182662;2;0;false;false;;;;;;
                                  -182664;3;0;false;false;63;95;191;;;
                                  -182667;3;0;false;false;;;;;;
                                  -182670;1;0;false;false;63;95;191;;;
                                  -182671;1;0;false;false;;;;;;
                                  -182672;6;0;false;false;63;95;191;;;
                                  -182678;1;0;false;false;;;;;;
                                  -182679;4;0;false;false;63;95;191;;;
                                  -182683;1;0;false;false;;;;;;
                                  -182684;1;0;false;false;63;95;191;;;
                                  -182685;1;0;false;false;;;;;;
                                  -182686;9;0;false;false;63;95;191;;;
                                  -182695;1;0;false;false;;;;;;
                                  -182696;3;0;false;false;63;95;191;;;
                                  -182699;1;0;false;false;;;;;;
                                  -182700;2;0;false;false;63;95;191;;;
                                  -182702;1;0;false;false;;;;;;
                                  -182703;8;0;false;false;63;95;191;;;
                                  -182711;3;0;false;false;;;;;;
                                  -182714;1;0;false;false;63;95;191;;;
                                  -182715;1;0;false;false;;;;;;
                                  -182716;5;0;false;false;63;95;191;;;
                                  -182721;1;0;false;false;;;;;;
                                  -182722;3;0;false;false;63;95;191;;;
                                  -182725;1;0;false;false;;;;;;
                                  -182726;4;0;false;false;63;95;191;;;
                                  -182730;1;0;false;false;;;;;;
                                  -182731;9;0;false;false;63;95;191;;;
                                  -182740;1;0;false;false;;;;;;
                                  -182741;2;0;false;false;63;95;191;;;
                                  -182743;1;0;false;false;;;;;;
                                  -182744;5;0;false;false;63;95;191;;;
                                  -182749;1;0;false;false;;;;;;
                                  -182750;4;0;false;false;63;95;191;;;
                                  -182754;1;0;false;false;;;;;;
                                  -182755;3;0;false;false;63;95;191;;;
                                  -182758;1;0;false;false;;;;;;
                                  -182759;6;0;false;false;63;95;191;;;
                                  -182765;1;0;false;false;;;;;;
                                  -182766;2;0;false;false;63;95;191;;;
                                  -182768;1;0;false;false;;;;;;
                                  -182769;2;0;false;false;63;95;191;;;
                                  -182771;1;0;false;false;;;;;;
                                  -182772;6;0;false;false;63;95;191;;;
                                  -182778;4;0;false;false;;;;;;
                                  -182782;1;0;false;false;63;95;191;;;
                                  -182783;1;0;false;false;;;;;;
                                  -182784;4;0;false;false;63;95;191;;;
                                  -182788;1;0;false;false;;;;;;
                                  -182789;4;0;false;false;63;95;191;;;
                                  -182793;1;0;false;false;;;;;;
                                  -182794;2;0;false;false;63;95;191;;;
                                  -182796;1;0;false;false;;;;;;
                                  -182797;2;0;false;false;63;95;191;;;
                                  -182799;1;0;false;false;;;;;;
                                  -182800;5;0;false;false;63;95;191;;;
                                  -182805;1;0;false;false;;;;;;
                                  -182806;4;0;false;false;63;95;191;;;
                                  -182810;1;0;false;false;;;;;;
                                  -182811;3;0;false;false;63;95;191;;;
                                  -182814;1;0;false;false;;;;;;
                                  -182815;3;0;false;false;63;95;191;;;
                                  -182818;1;0;false;false;127;127;159;;;
                                  -182819;8;0;false;false;63;95;191;;;
                                  -182827;1;0;false;false;;;;;;
                                  -182828;4;0;false;false;63;95;191;;;
                                  -182832;1;0;false;false;;;;;;
                                  -182833;1;0;false;false;63;95;191;;;
                                  -182834;4;0;false;false;;;;;;
                                  -182838;1;0;false;false;63;95;191;;;
                                  -182839;1;0;false;false;;;;;;
                                  -182840;4;0;false;false;63;95;191;;;
                                  -182844;1;0;false;false;;;;;;
                                  -182845;2;0;false;false;63;95;191;;;
                                  -182847;1;0;false;false;;;;;;
                                  -182848;8;0;false;false;63;95;191;;;
                                  -182856;1;0;false;false;;;;;;
                                  -182857;5;0;false;false;63;95;191;;;
                                  -182862;1;0;false;false;;;;;;
                                  -182863;4;0;false;false;63;95;191;;;
                                  -182867;1;0;false;false;;;;;;
                                  -182868;4;0;false;false;63;95;191;;;
                                  -182872;1;0;false;false;;;;;;
                                  -182873;2;0;false;false;63;95;191;;;
                                  -182875;1;0;false;false;;;;;;
                                  -182876;4;0;false;false;63;95;191;;;
                                  -182880;1;0;false;false;;;;;;
                                  -182881;2;0;false;false;63;95;191;;;
                                  -182883;1;0;false;false;;;;;;
                                  -182884;7;0;false;false;63;95;191;;;
                                  -182891;1;0;false;false;;;;;;
                                  -182892;3;0;false;false;63;95;191;;;
                                  -182895;1;0;false;false;;;;;;
                                  -182896;3;0;false;false;63;95;191;;;
                                  -182899;4;0;false;false;;;;;;
                                  -182903;1;0;false;false;63;95;191;;;
                                  -182904;1;0;false;false;;;;;;
                                  -182905;9;0;false;false;63;95;191;;;
                                  -182914;1;0;false;false;;;;;;
                                  -182915;3;0;false;false;63;95;191;;;
                                  -182918;1;0;false;false;;;;;;
                                  -182919;7;0;false;false;63;95;191;;;
                                  -182926;1;0;false;false;;;;;;
                                  -182927;3;0;false;false;63;95;191;;;
                                  -182930;1;0;false;false;;;;;;
                                  -182931;3;0;false;false;63;95;191;;;
                                  -182934;1;0;false;false;;;;;;
                                  -182935;3;0;false;false;63;95;191;;;
                                  -182938;1;0;false;false;;;;;;
                                  -182939;5;0;false;false;63;95;191;;;
                                  -182944;1;0;false;false;;;;;;
                                  -182945;8;0;false;false;63;95;191;;;
                                  -182953;3;0;false;false;;;;;;
                                  -182956;1;0;false;false;63;95;191;;;
                                  -182957;1;0;false;false;;;;;;
                                  -182958;3;0;false;false;127;127;159;;;
                                  -182961;3;0;false;false;;;;;;
                                  -182964;1;0;false;false;63;95;191;;;
                                  -182965;3;0;false;false;;;;;;
                                  -182968;1;0;false;false;63;95;191;;;
                                  -182969;1;0;false;false;;;;;;
                                  -182970;7;1;false;false;127;159;191;;;
                                  -182977;5;0;false;false;63;95;191;;;
                                  -182982;1;0;false;false;;;;;;
                                  -182983;3;0;false;false;63;95;191;;;
                                  -182986;1;0;false;false;;;;;;
                                  -182987;5;0;false;false;63;95;191;;;
                                  -182992;3;0;false;false;;;;;;
                                  -182995;2;0;false;false;63;95;191;;;
                                  -182997;2;0;false;false;;;;;;
                                  -182999;4;1;false;false;127;0;85;;;
                                  -183003;1;0;false;false;;;;;;
                                  -183004;20;0;false;false;0;0;0;;;
                                  -183024;1;0;false;false;;;;;;
                                  -183025;6;0;false;false;0;0;0;;;
                                  -183031;1;0;false;false;;;;;;
                                  -183032;1;0;false;false;0;0;0;;;
                                  -183033;3;0;false;false;;;;;;
                                  -183036;6;1;false;false;127;0;85;;;
                                  -183042;1;0;false;false;;;;;;
                                  -183043;14;0;false;false;0;0;0;;;
                                  -183057;1;0;false;false;;;;;;
                                  -183058;1;0;false;false;0;0;0;;;
                                  -183059;4;0;false;false;;;;;;
                                  -183063;4;1;false;false;127;0;85;;;
                                  -183067;1;0;false;false;;;;;;
                                  -183068;20;0;false;false;0;0;0;;;
                                  -183088;4;0;false;false;;;;;;
                                  -183092;4;1;false;false;127;0;85;;;
                                  -183096;1;0;false;false;;;;;;
                                  -183097;23;0;false;false;0;0;0;;;
                                  -183120;4;0;false;false;;;;;;
                                  -183124;4;1;false;false;127;0;85;;;
                                  -183128;1;0;false;false;;;;;;
                                  -183129;27;0;false;false;0;0;0;;;
                                  -183156;5;0;false;false;;;;;;
                                  -183161;10;0;false;false;0;0;0;;;
                                  -183171;1;0;false;false;;;;;;
                                  -183172;1;0;false;false;0;0;0;;;
                                  -183173;1;0;false;false;;;;;;
                                  -183174;4;1;false;false;127;0;85;;;
                                  -183178;1;0;false;false;0;0;0;;;
                                  -183179;5;0;false;false;;;;;;
                                  -183184;5;1;false;false;127;0;85;;;
                                  -183189;1;0;false;false;0;0;0;;;
                                  -183190;4;0;false;false;;;;;;
                                  -183194;4;1;false;false;127;0;85;;;
                                  -183198;1;0;false;false;;;;;;
                                  -183199;20;0;false;false;0;0;0;;;
                                  -183219;4;0;false;false;;;;;;
                                  -183223;4;1;false;false;127;0;85;;;
                                  -183227;1;0;false;false;;;;;;
                                  -183228;22;0;false;false;0;0;0;;;
                                  -183250;4;0;false;false;;;;;;
                                  -183254;4;1;false;false;127;0;85;;;
                                  -183258;1;0;false;false;;;;;;
                                  -183259;26;0;false;false;0;0;0;;;
                                  -183285;5;0;false;false;;;;;;
                                  -183290;2;1;false;false;127;0;85;;;
                                  -183292;1;0;false;false;;;;;;
                                  -183293;12;0;false;false;0;0;0;;;
                                  -183305;1;0;false;false;;;;;;
                                  -183306;1;0;false;false;0;0;0;;;
                                  -183307;1;0;false;false;;;;;;
                                  -183308;11;0;false;false;0;0;0;;;
                                  -183319;1;0;false;false;;;;;;
                                  -183320;2;0;false;false;0;0;0;;;
                                  -183322;1;0;false;false;;;;;;
                                  -183323;2;0;false;false;0;0;0;;;
                                  -183325;1;0;false;false;;;;;;
                                  -183326;1;0;false;false;0;0;0;;;
                                  -183327;6;0;false;false;;;;;;
                                  -183333;10;0;false;false;0;0;0;;;
                                  -183343;1;0;false;false;;;;;;
                                  -183344;1;0;false;false;0;0;0;;;
                                  -183345;1;0;false;false;;;;;;
                                  -183346;4;1;false;false;127;0;85;;;
                                  -183350;1;0;false;false;0;0;0;;;
                                  -183351;5;0;false;false;;;;;;
                                  -183356;1;0;false;false;0;0;0;;;
                                  -183357;1;0;false;false;;;;;;
                                  -183358;4;1;false;false;127;0;85;;;
                                  -183362;1;0;false;false;;;;;;
                                  -183363;1;0;false;false;0;0;0;;;
                                  -183364;6;0;false;false;;;;;;
                                  -183370;2;1;false;false;127;0;85;;;
                                  -183372;1;0;false;false;;;;;;
                                  -183373;10;0;false;false;0;0;0;;;
                                  -183383;1;0;false;false;;;;;;
                                  -183384;2;0;false;false;0;0;0;;;
                                  -183386;1;0;false;false;;;;;;
                                  -183387;16;0;false;false;0;0;0;;;
                                  -183403;1;0;false;false;;;;;;
                                  -183404;1;0;false;false;0;0;0;;;
                                  -183405;1;0;false;false;;;;;;
                                  -183406;18;0;false;false;0;0;0;;;
                                  -183424;1;0;false;false;;;;;;
                                  -183425;2;0;false;false;0;0;0;;;
                                  -183427;1;0;false;false;;;;;;
                                  -183428;2;0;false;false;0;0;0;;;
                                  -183430;1;0;false;false;;;;;;
                                  -183431;1;0;false;false;0;0;0;;;
                                  -183432;7;0;false;false;;;;;;
                                  -183439;10;0;false;false;0;0;0;;;
                                  -183449;1;0;false;false;;;;;;
                                  -183450;1;0;false;false;0;0;0;;;
                                  -183451;1;0;false;false;;;;;;
                                  -183452;4;1;false;false;127;0;85;;;
                                  -183456;1;0;false;false;0;0;0;;;
                                  -183457;6;0;false;false;;;;;;
                                  -183463;1;0;false;false;0;0;0;;;
                                  -183464;5;0;false;false;;;;;;
                                  -183469;1;0;false;false;0;0;0;;;
                                  -183470;5;0;false;false;;;;;;
                                  -183475;5;1;false;false;127;0;85;;;
                                  -183480;1;0;false;false;0;0;0;;;
                                  -183481;3;0;false;false;;;;;;
                                  -183484;1;0;false;false;0;0;0;;;
                                  -183485;2;0;false;false;;;;;;
                                  -183487;1;0;false;false;0;0;0;;;
                                  -183488;2;0;false;false;;;;;;
                                  -183490;3;0;false;false;63;95;191;;;
                                  -183493;4;0;false;false;;;;;;
                                  -183497;1;0;false;false;63;95;191;;;
                                  -183498;1;0;false;false;;;;;;
                                  -183499;7;0;false;false;63;95;191;;;
                                  -183506;1;0;false;false;;;;;;
                                  -183507;3;0;false;false;63;95;191;;;
                                  -183510;1;0;false;false;;;;;;
                                  -183511;6;0;false;false;63;95;191;;;
                                  -183517;1;0;false;false;;;;;;
                                  -183518;11;0;false;false;63;95;191;;;
                                  -183529;3;0;false;false;;;;;;
                                  -183532;2;0;false;false;63;95;191;;;
                                  -183534;2;0;false;false;;;;;;
                                  -183536;4;1;false;false;127;0;85;;;
                                  -183540;1;0;false;false;;;;;;
                                  -183541;26;0;false;false;0;0;0;;;
                                  -183567;1;0;false;false;;;;;;
                                  -183568;6;0;false;false;0;0;0;;;
                                  -183574;1;0;false;false;;;;;;
                                  -183575;1;0;false;false;0;0;0;;;
                                  -183576;3;0;false;false;;;;;;
                                  -183579;56;0;false;false;0;0;0;;;
                                  -183635;1;0;false;false;;;;;;
                                  -183636;5;1;false;false;127;0;85;;;
                                  -183641;2;0;false;false;0;0;0;;;
                                  -183643;2;0;false;false;;;;;;
                                  -183645;1;0;false;false;0;0;0;;;
                                  -183646;2;0;false;false;;;;;;
                                  -183648;3;0;false;false;63;95;191;;;
                                  -183651;3;0;false;false;;;;;;
                                  -183654;1;0;false;false;63;95;191;;;
                                  -183655;1;0;false;false;;;;;;
                                  -183656;3;0;false;false;63;95;191;;;
                                  -183659;1;0;false;false;;;;;;
                                  -183660;13;0;false;false;63;95;191;;;
                                  -183673;1;0;false;false;;;;;;
                                  -183674;7;0;false;false;63;95;191;;;
                                  -183681;1;0;false;false;;;;;;
                                  -183682;3;0;false;false;63;95;191;;;
                                  -183685;1;0;false;false;;;;;;
                                  -183686;3;0;false;false;63;95;191;;;
                                  -183689;1;0;false;false;;;;;;
                                  -183690;7;0;false;false;63;95;191;;;
                                  -183697;3;0;false;false;;;;;;
                                  -183700;2;0;false;false;63;95;191;;;
                                  -183702;2;0;false;false;;;;;;
                                  -183704;4;1;false;false;127;0;85;;;
                                  -183708;1;0;false;false;;;;;;
                                  -183709;22;0;false;false;0;0;0;;;
                                  -183731;1;0;false;false;;;;;;
                                  -183732;1;0;false;false;0;0;0;;;
                                  -183733;3;0;false;false;;;;;;
                                  -183736;5;1;false;false;127;0;85;;;
                                  -183741;1;0;false;false;;;;;;
                                  -183742;10;0;false;false;0;0;0;;;
                                  -183752;1;0;false;false;;;;;;
                                  -183753;10;0;false;false;0;0;0;;;
                                  -183763;1;0;false;false;;;;;;
                                  -183764;1;0;false;false;0;0;0;;;
                                  -183765;1;0;false;false;;;;;;
                                  -183766;16;0;false;false;0;0;0;;;
                                  -183782;3;0;false;false;;;;;;
                                  -183785;33;0;false;false;0;0;0;;;
                                  -183818;3;1;false;false;127;0;85;;;
                                  -183821;1;0;false;false;;;;;;
                                  -183822;19;0;false;false;0;0;0;;;
                                  -183841;1;0;false;false;;;;;;
                                  -183842;1;0;false;false;0;0;0;;;
                                  -183843;4;0;false;false;;;;;;
                                  -183847;6;1;false;false;127;0;85;;;
                                  -183853;1;0;false;false;;;;;;
                                  -183854;4;1;false;false;127;0;85;;;
                                  -183858;1;0;false;false;;;;;;
                                  -183859;23;0;false;false;0;0;0;;;
                                  -183882;1;0;false;false;;;;;;
                                  -183883;2;0;false;false;0;0;0;;;
                                  -183885;1;0;false;false;;;;;;
                                  -183886;1;0;false;false;0;0;0;;;
                                  -183887;5;0;false;false;;;;;;
                                  -183892;8;0;false;false;0;0;0;;;
                                  -183900;1;0;false;false;;;;;;
                                  -183901;1;0;false;false;0;0;0;;;
                                  -183902;1;0;false;false;;;;;;
                                  -183903;17;0;false;false;0;0;0;;;
                                  -183920;4;0;false;false;;;;;;
                                  -183924;1;0;false;false;0;0;0;;;
                                  -183925;3;0;false;false;;;;;;
                                  -183928;3;0;false;false;0;0;0;;;
                                  -183931;3;0;false;false;;;;;;
                                  -183934;37;0;false;false;0;0;0;;;
                                  -183971;3;1;false;false;127;0;85;;;
                                  -183974;1;0;false;false;;;;;;
                                  -183975;23;0;false;false;0;0;0;;;
                                  -183998;1;0;false;false;;;;;;
                                  -183999;1;0;false;false;0;0;0;;;
                                  -184000;4;0;false;false;;;;;;
                                  -184004;6;1;false;false;127;0;85;;;
                                  -184010;1;0;false;false;;;;;;
                                  -184011;4;1;false;false;127;0;85;;;
                                  -184015;1;0;false;false;;;;;;
                                  -184016;34;0;false;false;0;0;0;;;
                                  -184050;1;0;false;false;;;;;;
                                  -184051;2;0;false;false;0;0;0;;;
                                  -184053;1;0;false;false;;;;;;
                                  -184054;1;0;false;false;0;0;0;;;
                                  -184055;5;0;false;false;;;;;;
                                  -184060;8;0;false;false;0;0;0;;;
                                  -184068;1;0;false;false;;;;;;
                                  -184069;1;0;false;false;0;0;0;;;
                                  -184070;1;0;false;false;;;;;;
                                  -184071;11;0;false;false;0;0;0;;;
                                  -184082;4;1;false;false;127;0;85;;;
                                  -184086;18;0;false;false;0;0;0;;;
                                  -184104;4;0;false;false;;;;;;
                                  -184108;1;0;false;false;0;0;0;;;
                                  -184109;4;0;false;false;;;;;;
                                  -184113;6;1;false;false;127;0;85;;;
                                  -184119;1;0;false;false;;;;;;
                                  -184120;4;1;false;false;127;0;85;;;
                                  -184124;1;0;false;false;;;;;;
                                  -184125;37;0;false;false;0;0;0;;;
                                  -184162;1;0;false;false;;;;;;
                                  -184163;2;0;false;false;0;0;0;;;
                                  -184165;1;0;false;false;;;;;;
                                  -184166;1;0;false;false;0;0;0;;;
                                  -184167;5;0;false;false;;;;;;
                                  -184172;5;0;false;false;0;0;0;;;
                                  -184177;1;0;false;false;;;;;;
                                  -184178;9;0;false;false;0;0;0;;;
                                  -184187;1;0;false;false;;;;;;
                                  -184188;1;0;false;false;0;0;0;;;
                                  -184189;1;0;false;false;;;;;;
                                  -184190;11;0;false;false;0;0;0;;;
                                  -184201;4;1;false;false;127;0;85;;;
                                  -184205;21;0;false;false;0;0;0;;;
                                  -184226;5;0;false;false;;;;;;
                                  -184231;8;0;false;false;0;0;0;;;
                                  -184239;1;0;false;false;;;;;;
                                  -184240;1;0;false;false;0;0;0;;;
                                  -184241;1;0;false;false;;;;;;
                                  -184242;12;0;false;false;0;0;0;;;
                                  -184254;5;0;false;false;;;;;;
                                  -184259;8;0;false;false;0;0;0;;;
                                  -184267;1;0;false;false;;;;;;
                                  -184268;1;0;false;false;0;0;0;;;
                                  -184269;1;0;false;false;;;;;;
                                  -184270;12;0;false;false;0;0;0;;;
                                  -184282;4;0;false;false;;;;;;
                                  -184286;1;0;false;false;0;0;0;;;
                                  -184287;3;0;false;false;;;;;;
                                  -184290;3;0;false;false;0;0;0;;;
                                  -184293;3;0;false;false;;;;;;
                                  -184296;40;0;false;false;0;0;0;;;
                                  -184336;3;1;false;false;127;0;85;;;
                                  -184339;1;0;false;false;;;;;;
                                  -184340;26;0;false;false;0;0;0;;;
                                  -184366;1;0;false;false;;;;;;
                                  -184367;1;0;false;false;0;0;0;;;
                                  -184368;4;0;false;false;;;;;;
                                  -184372;6;1;false;false;127;0;85;;;
                                  -184378;1;0;false;false;;;;;;
                                  -184379;4;1;false;false;127;0;85;;;
                                  -184383;1;0;false;false;;;;;;
                                  -184384;30;0;false;false;0;0;0;;;
                                  -184414;1;0;false;false;;;;;;
                                  -184415;2;0;false;false;0;0;0;;;
                                  -184417;1;0;false;false;;;;;;
                                  -184418;1;0;false;false;0;0;0;;;
                                  -184419;5;0;false;false;;;;;;
                                  -184424;8;0;false;false;0;0;0;;;
                                  -184432;1;0;false;false;;;;;;
                                  -184433;1;0;false;false;0;0;0;;;
                                  -184434;1;0;false;false;;;;;;
                                  -184435;14;0;false;false;0;0;0;;;
                                  -184449;4;0;false;false;;;;;;
                                  -184453;1;0;false;false;0;0;0;;;
                                  -184454;4;0;false;false;;;;;;
                                  -184458;6;1;false;false;127;0;85;;;
                                  -184464;1;0;false;false;;;;;;
                                  -184465;4;1;false;false;127;0;85;;;
                                  -184469;1;0;false;false;;;;;;
                                  -184470;31;0;false;false;0;0;0;;;
                                  -184501;1;0;false;false;;;;;;
                                  -184502;2;0;false;false;0;0;0;;;
                                  -184504;1;0;false;false;;;;;;
                                  -184505;1;0;false;false;0;0;0;;;
                                  -184506;5;0;false;false;;;;;;
                                  -184511;3;1;false;false;127;0;85;;;
                                  -184514;1;0;false;false;;;;;;
                                  -184515;5;0;false;false;0;0;0;;;
                                  -184520;1;0;false;false;;;;;;
                                  -184521;1;0;false;false;0;0;0;;;
                                  -184522;1;0;false;false;;;;;;
                                  -184523;2;0;false;false;0;0;0;;;
                                  -184525;5;0;false;false;;;;;;
                                  -184530;2;1;false;false;127;0;85;;;
                                  -184532;1;0;false;false;;;;;;
                                  -184533;13;0;false;false;0;0;0;;;
                                  -184546;1;0;false;false;;;;;;
                                  -184547;5;0;false;false;0;0;0;;;
                                  -184552;1;0;false;false;;;;;;
                                  -184553;2;0;false;false;0;0;0;;;
                                  -184555;1;0;false;false;;;;;;
                                  -184556;20;0;false;false;0;0;0;;;
                                  -184576;5;0;false;false;;;;;;
                                  -184581;2;1;false;false;127;0;85;;;
                                  -184583;1;0;false;false;;;;;;
                                  -184584;18;0;false;false;0;0;0;;;
                                  -184602;1;0;false;false;;;;;;
                                  -184603;5;0;false;false;0;0;0;;;
                                  -184608;1;0;false;false;;;;;;
                                  -184609;2;0;false;false;0;0;0;;;
                                  -184611;1;0;false;false;;;;;;
                                  -184612;18;0;false;false;0;0;0;;;
                                  -184630;5;0;false;false;;;;;;
                                  -184635;2;1;false;false;127;0;85;;;
                                  -184637;1;0;false;false;;;;;;
                                  -184638;14;0;false;false;0;0;0;;;
                                  -184652;1;0;false;false;;;;;;
                                  -184653;5;0;false;false;0;0;0;;;
                                  -184658;1;0;false;false;;;;;;
                                  -184659;2;0;false;false;0;0;0;;;
                                  -184661;1;0;false;false;;;;;;
                                  -184662;20;0;false;false;0;0;0;;;
                                  -184682;5;0;false;false;;;;;;
                                  -184687;2;1;false;false;127;0;85;;;
                                  -184689;1;0;false;false;;;;;;
                                  -184690;16;0;false;false;0;0;0;;;
                                  -184706;1;0;false;false;;;;;;
                                  -184707;5;0;false;false;0;0;0;;;
                                  -184712;1;0;false;false;;;;;;
                                  -184713;2;0;false;false;0;0;0;;;
                                  -184715;1;0;false;false;;;;;;
                                  -184716;19;0;false;false;0;0;0;;;
                                  -184735;5;0;false;false;;;;;;
                                  -184740;8;0;false;false;0;0;0;;;
                                  -184748;1;0;false;false;;;;;;
                                  -184749;1;0;false;false;0;0;0;;;
                                  -184750;1;0;false;false;;;;;;
                                  -184751;6;0;false;false;0;0;0;;;
                                  -184757;4;0;false;false;;;;;;
                                  -184761;1;0;false;false;0;0;0;;;
                                  -184762;4;0;false;false;;;;;;
                                  -184766;6;1;false;false;127;0;85;;;
                                  -184772;1;0;false;false;;;;;;
                                  -184773;4;1;false;false;127;0;85;;;
                                  -184777;1;0;false;false;;;;;;
                                  -184778;31;0;false;false;0;0;0;;;
                                  -184809;1;0;false;false;;;;;;
                                  -184810;2;0;false;false;0;0;0;;;
                                  -184812;1;0;false;false;;;;;;
                                  -184813;1;0;false;false;0;0;0;;;
                                  -184814;5;0;false;false;;;;;;
                                  -184819;8;0;false;false;0;0;0;;;
                                  -184827;1;0;false;false;;;;;;
                                  -184828;1;0;false;false;0;0;0;;;
                                  -184829;1;0;false;false;;;;;;
                                  -184830;11;0;false;false;0;0;0;;;
                                  -184841;4;1;false;false;127;0;85;;;
                                  -184845;11;0;false;false;0;0;0;;;
                                  -184856;4;0;false;false;;;;;;
                                  -184860;1;0;false;false;0;0;0;;;
                                  -184861;3;0;false;false;;;;;;
                                  -184864;3;0;false;false;0;0;0;;;
                                  -184867;5;0;false;false;;;;;;
                                  -184872;24;0;false;false;0;0;0;;;
                                  -184896;1;0;false;false;;;;;;
                                  -184897;3;1;false;false;127;0;85;;;
                                  -184900;1;0;false;false;;;;;;
                                  -184901;10;0;false;false;0;0;0;;;
                                  -184911;1;0;false;false;;;;;;
                                  -184912;1;0;false;false;0;0;0;;;
                                  -184913;4;0;false;false;;;;;;
                                  -184917;6;1;false;false;127;0;85;;;
                                  -184923;1;0;false;false;;;;;;
                                  -184924;4;1;false;false;127;0;85;;;
                                  -184928;1;0;false;false;;;;;;
                                  -184929;17;0;false;false;0;0;0;;;
                                  -184946;1;0;false;false;;;;;;
                                  -184947;6;0;false;false;0;0;0;;;
                                  -184953;1;0;false;false;;;;;;
                                  -184954;1;0;false;false;0;0;0;;;
                                  -184955;5;0;false;false;;;;;;
                                  -184960;38;0;false;false;0;0;0;;;
                                  -184998;4;0;false;false;;;;;;
                                  -185002;1;0;false;false;0;0;0;;;
                                  -185003;3;0;false;false;;;;;;
                                  -185006;3;0;false;false;0;0;0;;;
                                  -185009;2;0;false;false;;;;;;
                                  -185011;1;0;false;false;0;0;0;;;
                                  -185012;2;0;false;false;;;;;;
                                  -185014;3;0;false;false;63;95;191;;;
                                  -185017;4;0;false;false;;;;;;
                                  -185021;1;0;false;false;63;95;191;;;
                                  -185022;1;0;false;false;;;;;;
                                  -185023;11;0;false;false;63;95;191;;;
                                  -185034;1;0;false;false;;;;;;
                                  -185035;3;0;false;false;63;95;191;;;
                                  -185038;1;0;false;false;;;;;;
                                  -185039;5;0;false;false;63;95;191;;;
                                  -185044;1;0;false;false;;;;;;
                                  -185045;4;0;false;false;63;95;191;;;
                                  -185049;1;0;false;false;;;;;;
                                  -185050;2;0;false;false;63;95;191;;;
                                  -185052;1;0;false;false;;;;;;
                                  -185053;6;0;false;false;63;95;191;;;
                                  -185059;1;0;false;false;;;;;;
                                  -185060;4;0;false;false;63;95;191;;;
                                  -185064;1;0;false;false;;;;;;
                                  -185065;7;0;false;false;63;95;191;;;
                                  -185072;3;0;false;false;;;;;;
                                  -185075;1;0;false;false;63;95;191;;;
                                  -185076;1;0;false;false;;;;;;
                                  -185077;9;0;false;false;63;95;191;;;
                                  -185086;1;0;false;false;;;;;;
                                  -185087;4;0;false;false;63;95;191;;;
                                  -185091;1;0;false;false;;;;;;
                                  -185092;7;0;false;false;63;95;191;;;
                                  -185099;1;0;false;false;;;;;;
                                  -185100;3;0;false;false;63;95;191;;;
                                  -185103;1;0;false;false;;;;;;
                                  -185104;4;0;false;false;63;95;191;;;
                                  -185108;1;0;false;false;;;;;;
                                  -185109;5;0;false;false;63;95;191;;;
                                  -185114;1;0;false;false;;;;;;
                                  -185115;3;0;false;false;63;95;191;;;
                                  -185118;1;0;false;false;;;;;;
                                  -185119;10;0;false;false;63;95;191;;;
                                  -185129;3;0;false;false;;;;;;
                                  -185132;2;0;false;false;63;95;191;;;
                                  -185134;2;0;false;false;;;;;;
                                  -185136;4;1;false;false;127;0;85;;;
                                  -185140;1;0;false;false;;;;;;
                                  -185141;20;0;false;false;0;0;0;;;
                                  -185161;1;0;false;false;;;;;;
                                  -185162;1;0;false;false;0;0;0;;;
                                  -185163;3;0;false;false;;;;;;
                                  -185166;2;1;false;false;127;0;85;;;
                                  -185168;1;0;false;false;;;;;;
                                  -185169;9;0;false;false;0;0;0;;;
                                  -185178;1;0;false;false;;;;;;
                                  -185179;2;0;false;false;0;0;0;;;
                                  -185181;1;0;false;false;;;;;;
                                  -185182;4;1;false;false;127;0;85;;;
                                  -185186;1;0;false;false;0;0;0;;;
                                  -185187;1;0;false;false;;;;;;
                                  -185188;1;0;false;false;0;0;0;;;
                                  -185189;4;0;false;false;;;;;;
                                  -185193;19;0;false;false;0;0;0;;;
                                  -185212;3;0;false;false;;;;;;
                                  -185215;1;0;false;false;0;0;0;;;
                                  -185216;3;0;false;false;;;;;;
                                  -185219;8;0;false;false;0;0;0;;;
                                  -185227;1;0;false;false;;;;;;
                                  -185228;1;0;false;false;0;0;0;;;
                                  -185229;1;0;false;false;;;;;;
                                  -185230;3;1;false;false;127;0;85;;;
                                  -185233;1;0;false;false;;;;;;
                                  -185234;29;0;false;false;0;0;0;;;
                                  -185263;1;0;false;false;;;;;;
                                  -185264;10;0;false;false;0;0;0;;;
                                  -185274;1;0;false;false;;;;;;
                                  -185275;4;1;false;false;127;0;85;;;
                                  -185279;1;0;false;false;0;0;0;;;
                                  -185280;1;0;false;false;;;;;;
                                  -185281;11;0;false;false;0;0;0;;;
                                  -185292;3;0;false;false;;;;;;
                                  -185295;10;0;false;false;0;0;0;;;
                                  -185305;1;0;false;false;;;;;;
                                  -185306;1;0;false;false;0;0;0;;;
                                  -185307;1;0;false;false;;;;;;
                                  -185308;25;0;false;false;0;0;0;;;
                                  -185333;3;0;false;false;;;;;;
                                  -185336;2;1;false;false;127;0;85;;;
                                  -185338;1;0;false;false;;;;;;
                                  -185339;10;0;false;false;0;0;0;;;
                                  -185349;1;0;false;false;;;;;;
                                  -185350;1;0;false;false;0;0;0;;;
                                  -185351;4;0;false;false;;;;;;
                                  -185355;7;0;false;false;0;0;0;;;
                                  -185362;1;0;false;false;;;;;;
                                  -185363;1;0;false;false;0;0;0;;;
                                  -185364;1;0;false;false;;;;;;
                                  -185365;3;1;false;false;127;0;85;;;
                                  -185368;1;0;false;false;;;;;;
                                  -185369;24;0;false;false;0;0;0;;;
                                  -185393;1;0;false;false;;;;;;
                                  -185394;16;0;false;false;0;0;0;;;
                                  -185410;3;0;false;false;;;;;;
                                  -185413;1;0;false;false;0;0;0;;;
                                  -185414;2;0;false;false;;;;;;
                                  -185416;1;0;false;false;0;0;0;;;
                                  -185417;2;0;false;false;;;;;;
                                  -185419;3;0;false;false;63;95;191;;;
                                  -185422;3;0;false;false;;;;;;
                                  -185425;1;0;false;false;63;95;191;;;
                                  -185426;1;0;false;false;;;;;;
                                  -185427;8;0;false;false;63;95;191;;;
                                  -185435;1;0;false;false;;;;;;
                                  -185436;3;0;false;false;63;95;191;;;
                                  -185439;1;0;false;false;;;;;;
                                  -185440;7;0;false;false;63;95;191;;;
                                  -185447;3;0;false;false;;;;;;
                                  -185450;1;0;false;false;63;95;191;;;
                                  -185451;1;0;false;false;;;;;;
                                  -185452;3;0;false;false;127;127;159;;;
                                  -185455;3;0;false;false;;;;;;
                                  -185458;1;0;false;false;63;95;191;;;
                                  -185459;3;0;false;false;;;;;;
                                  -185462;1;0;false;false;63;95;191;;;
                                  -185463;1;0;false;false;;;;;;
                                  -185464;7;1;false;false;127;159;191;;;
                                  -185471;6;0;false;false;63;95;191;;;
                                  -185477;1;0;false;false;;;;;;
                                  -185478;3;0;false;false;63;95;191;;;
                                  -185481;1;0;false;false;;;;;;
                                  -185482;2;0;false;false;63;95;191;;;
                                  -185484;1;0;false;false;;;;;;
                                  -185485;3;0;false;false;63;95;191;;;
                                  -185488;1;0;false;false;;;;;;
                                  -185489;7;0;false;false;63;95;191;;;
                                  -185496;1;0;false;false;;;;;;
                                  -185497;7;0;false;false;63;95;191;;;
                                  -185504;1;0;false;false;;;;;;
                                  -185505;2;0;false;false;63;95;191;;;
                                  -185507;1;0;false;false;;;;;;
                                  -185508;7;0;false;false;63;95;191;;;
                                  -185515;3;0;false;false;;;;;;
                                  -185518;2;0;false;false;63;95;191;;;
                                  -185520;2;0;false;false;;;;;;
                                  -185522;6;1;false;false;127;0;85;;;
                                  -185528;1;0;false;false;;;;;;
                                  -185529;4;1;false;false;127;0;85;;;
                                  -185533;1;0;false;false;;;;;;
                                  -185534;13;0;false;false;0;0;0;;;
                                  -185547;3;1;false;false;127;0;85;;;
                                  -185550;1;0;false;false;;;;;;
                                  -185551;7;0;false;false;0;0;0;;;
                                  -185558;1;0;false;false;;;;;;
                                  -185559;1;0;false;false;0;0;0;;;
                                  -185560;3;0;false;false;;;;;;
                                  -185563;3;1;false;false;127;0;85;;;
                                  -185566;1;0;false;false;;;;;;
                                  -185567;11;0;false;false;0;0;0;;;
                                  -185578;1;0;false;false;;;;;;
                                  -185579;17;0;false;false;0;0;0;;;
                                  -185596;1;0;false;false;;;;;;
                                  -185597;14;0;false;false;0;0;0;;;
                                  -185611;3;0;false;false;;;;;;
                                  -185614;3;1;false;false;127;0;85;;;
                                  -185617;1;0;false;false;;;;;;
                                  -185618;10;0;false;false;0;0;0;;;
                                  -185628;6;0;false;false;;;;;;
                                  -185634;14;0;false;false;0;0;0;;;
                                  -185648;3;0;false;false;;;;;;
                                  -185651;20;0;false;false;0;0;0;;;
                                  -185671;1;0;false;false;;;;;;
                                  -185672;1;0;false;false;0;0;0;;;
                                  -185673;1;0;false;false;;;;;;
                                  -185674;4;1;false;false;127;0;85;;;
                                  -185678;1;0;false;false;0;0;0;;;
                                  -185679;3;0;false;false;;;;;;
                                  -185682;6;1;false;false;127;0;85;;;
                                  -185688;1;0;false;false;;;;;;
                                  -185689;8;0;false;false;0;0;0;;;
                                  -185697;1;0;false;false;;;;;;
                                  -185698;1;0;false;false;0;0;0;;;
                                  -185699;4;0;false;false;;;;;;
                                  -185703;15;0;false;false;63;127;95;;;
                                  -185718;2;0;false;false;;;;;;
                                  -185720;4;1;false;false;127;0;85;;;
                                  -185724;1;0;false;false;;;;;;
                                  -185725;11;0;false;false;0;0;0;;;
                                  -185736;5;0;false;false;;;;;;
                                  -185741;9;0;false;false;0;0;0;;;
                                  -185750;1;0;false;false;;;;;;
                                  -185751;1;0;false;false;0;0;0;;;
                                  -185752;1;0;false;false;;;;;;
                                  -185753;11;0;false;false;0;0;0;;;
                                  -185764;5;0;false;false;;;;;;
                                  -185769;10;0;false;false;0;0;0;;;
                                  -185779;1;0;false;false;;;;;;
                                  -185780;1;0;false;false;0;0;0;;;
                                  -185781;1;0;false;false;;;;;;
                                  -185782;8;0;false;false;0;0;0;;;
                                  -185790;5;0;false;false;;;;;;
                                  -185795;16;0;false;false;0;0;0;;;
                                  -185811;1;0;false;false;;;;;;
                                  -185812;1;0;false;false;0;0;0;;;
                                  -185813;1;0;false;false;;;;;;
                                  -185814;23;0;false;false;0;0;0;;;
                                  -185837;5;0;false;false;;;;;;
                                  -185842;66;0;false;false;63;127;95;;;
                                  -185908;3;0;false;false;;;;;;
                                  -185911;69;0;false;false;63;127;95;;;
                                  -185980;3;0;false;false;;;;;;
                                  -185983;21;0;false;false;0;0;0;;;
                                  -186004;5;0;false;false;;;;;;
                                  -186009;51;0;false;false;63;127;95;;;
                                  -186060;3;0;false;false;;;;;;
                                  -186063;13;0;false;false;0;0;0;;;
                                  -186076;1;0;false;false;;;;;;
                                  -186077;1;0;false;false;0;0;0;;;
                                  -186078;1;0;false;false;;;;;;
                                  -186079;16;0;false;false;0;0;0;;;
                                  -186095;1;0;false;false;;;;;;
                                  -186096;1;0;false;false;0;0;0;;;
                                  -186097;1;0;false;false;;;;;;
                                  -186098;23;0;false;false;0;0;0;;;
                                  -186121;5;0;false;false;;;;;;
                                  -186126;7;0;false;false;0;0;0;;;
                                  -186133;1;0;false;false;;;;;;
                                  -186134;1;0;false;false;0;0;0;;;
                                  -186135;1;0;false;false;;;;;;
                                  -186136;10;0;false;false;0;0;0;;;
                                  -186146;1;0;false;false;;;;;;
                                  -186147;1;0;false;false;0;0;0;;;
                                  -186148;1;0;false;false;;;;;;
                                  -186149;14;0;false;false;0;0;0;;;
                                  -186163;5;0;false;false;;;;;;
                                  -186168;15;0;false;false;0;0;0;;;
                                  -186183;4;1;false;false;127;0;85;;;
                                  -186187;2;0;false;false;0;0;0;;;
                                  -186189;5;0;false;false;;;;;;
                                  -186194;5;1;false;false;127;0;85;;;
                                  -186199;1;0;false;false;0;0;0;;;
                                  -186200;4;0;false;false;;;;;;
                                  -186204;4;1;false;false;127;0;85;;;
                                  -186208;1;0;false;false;;;;;;
                                  -186209;13;0;false;false;0;0;0;;;
                                  -186222;5;0;false;false;;;;;;
                                  -186227;9;0;false;false;0;0;0;;;
                                  -186236;1;0;false;false;;;;;;
                                  -186237;1;0;false;false;0;0;0;;;
                                  -186238;1;0;false;false;;;;;;
                                  -186239;13;0;false;false;0;0;0;;;
                                  -186252;5;0;false;false;;;;;;
                                  -186257;10;0;false;false;0;0;0;;;
                                  -186267;1;0;false;false;;;;;;
                                  -186268;1;0;false;false;0;0;0;;;
                                  -186269;1;0;false;false;;;;;;
                                  -186270;8;0;false;false;0;0;0;;;
                                  -186278;5;0;false;false;;;;;;
                                  -186283;16;0;false;false;0;0;0;;;
                                  -186299;1;0;false;false;;;;;;
                                  -186300;1;0;false;false;0;0;0;;;
                                  -186301;1;0;false;false;;;;;;
                                  -186302;23;0;false;false;0;0;0;;;
                                  -186325;5;0;false;false;;;;;;
                                  -186330;66;0;false;false;63;127;95;;;
                                  -186396;3;0;false;false;;;;;;
                                  -186399;69;0;false;false;63;127;95;;;
                                  -186468;3;0;false;false;;;;;;
                                  -186471;21;0;false;false;0;0;0;;;
                                  -186492;5;0;false;false;;;;;;
                                  -186497;51;0;false;false;63;127;95;;;
                                  -186548;3;0;false;false;;;;;;
                                  -186551;13;0;false;false;0;0;0;;;
                                  -186564;1;0;false;false;;;;;;
                                  -186565;1;0;false;false;0;0;0;;;
                                  -186566;1;0;false;false;;;;;;
                                  -186567;16;0;false;false;0;0;0;;;
                                  -186583;1;0;false;false;;;;;;
                                  -186584;1;0;false;false;0;0;0;;;
                                  -186585;1;0;false;false;;;;;;
                                  -186586;23;0;false;false;0;0;0;;;
                                  -186609;5;0;false;false;;;;;;
                                  -186614;7;0;false;false;0;0;0;;;
                                  -186621;1;0;false;false;;;;;;
                                  -186622;1;0;false;false;0;0;0;;;
                                  -186623;1;0;false;false;;;;;;
                                  -186624;10;0;false;false;0;0;0;;;
                                  -186634;1;0;false;false;;;;;;
                                  -186635;1;0;false;false;0;0;0;;;
                                  -186636;1;0;false;false;;;;;;
                                  -186637;14;0;false;false;0;0;0;;;
                                  -186651;5;0;false;false;;;;;;
                                  -186656;15;0;false;false;0;0;0;;;
                                  -186671;4;1;false;false;127;0;85;;;
                                  -186675;2;0;false;false;0;0;0;;;
                                  -186677;5;0;false;false;;;;;;
                                  -186682;5;1;false;false;127;0;85;;;
                                  -186687;1;0;false;false;0;0;0;;;
                                  -186688;4;0;false;false;;;;;;
                                  -186692;4;1;false;false;127;0;85;;;
                                  -186696;1;0;false;false;;;;;;
                                  -186697;14;0;false;false;0;0;0;;;
                                  -186711;5;0;false;false;;;;;;
                                  -186716;14;0;false;false;0;0;0;;;
                                  -186730;5;0;false;false;;;;;;
                                  -186735;15;0;false;false;0;0;0;;;
                                  -186750;4;1;false;false;127;0;85;;;
                                  -186754;2;0;false;false;0;0;0;;;
                                  -186756;5;0;false;false;;;;;;
                                  -186761;5;1;false;false;127;0;85;;;
                                  -186766;1;0;false;false;0;0;0;;;
                                  -186767;4;0;false;false;;;;;;
                                  -186771;4;1;false;false;127;0;85;;;
                                  -186775;1;0;false;false;;;;;;
                                  -186776;12;0;false;false;0;0;0;;;
                                  -186788;5;0;false;false;;;;;;
                                  -186793;12;0;false;false;0;0;0;;;
                                  -186805;5;0;false;false;;;;;;
                                  -186810;15;0;false;false;0;0;0;;;
                                  -186825;4;1;false;false;127;0;85;;;
                                  -186829;2;0;false;false;0;0;0;;;
                                  -186831;5;0;false;false;;;;;;
                                  -186836;5;1;false;false;127;0;85;;;
                                  -186841;1;0;false;false;0;0;0;;;
                                  -186842;4;0;false;false;;;;;;
                                  -186846;4;1;false;false;127;0;85;;;
                                  -186850;1;0;false;false;;;;;;
                                  -186851;19;0;false;false;0;0;0;;;
                                  -186870;5;0;false;false;;;;;;
                                  -186875;19;0;false;false;0;0;0;;;
                                  -186894;5;0;false;false;;;;;;
                                  -186899;15;0;false;false;0;0;0;;;
                                  -186914;4;1;false;false;127;0;85;;;
                                  -186918;2;0;false;false;0;0;0;;;
                                  -186920;5;0;false;false;;;;;;
                                  -186925;5;1;false;false;127;0;85;;;
                                  -186930;1;0;false;false;0;0;0;;;
                                  -186931;4;0;false;false;;;;;;
                                  -186935;4;1;false;false;127;0;85;;;
                                  -186939;1;0;false;false;;;;;;
                                  -186940;15;0;false;false;0;0;0;;;
                                  -186955;5;0;false;false;;;;;;
                                  -186960;15;0;false;false;0;0;0;;;
                                  -186975;5;0;false;false;;;;;;
                                  -186980;15;0;false;false;0;0;0;;;
                                  -186995;4;1;false;false;127;0;85;;;
                                  -186999;2;0;false;false;0;0;0;;;
                                  -187001;5;0;false;false;;;;;;
                                  -187006;5;1;false;false;127;0;85;;;
                                  -187011;1;0;false;false;0;0;0;;;
                                  -187012;4;0;false;false;;;;;;
                                  -187016;4;1;false;false;127;0;85;;;
                                  -187020;1;0;false;false;;;;;;
                                  -187021;11;0;false;false;0;0;0;;;
                                  -187032;5;0;false;false;;;;;;
                                  -187037;9;0;false;false;0;0;0;;;
                                  -187046;5;1;false;false;127;0;85;;;
                                  -187051;1;0;false;false;0;0;0;;;
                                  -187052;1;0;false;false;;;;;;
                                  -187053;21;0;false;false;0;0;0;;;
                                  -187074;5;0;false;false;;;;;;
                                  -187079;15;0;false;false;0;0;0;;;
                                  -187094;4;1;false;false;127;0;85;;;
                                  -187098;2;0;false;false;0;0;0;;;
                                  -187100;5;0;false;false;;;;;;
                                  -187105;5;1;false;false;127;0;85;;;
                                  -187110;1;0;false;false;0;0;0;;;
                                  -187111;4;0;false;false;;;;;;
                                  -187115;4;1;false;false;127;0;85;;;
                                  -187119;1;0;false;false;;;;;;
                                  -187120;13;0;false;false;0;0;0;;;
                                  -187133;5;0;false;false;;;;;;
                                  -187138;11;0;false;false;0;0;0;;;
                                  -187149;5;1;false;false;127;0;85;;;
                                  -187154;1;0;false;false;0;0;0;;;
                                  -187155;1;0;false;false;;;;;;
                                  -187156;21;0;false;false;0;0;0;;;
                                  -187177;5;0;false;false;;;;;;
                                  -187182;15;0;false;false;0;0;0;;;
                                  -187197;4;1;false;false;127;0;85;;;
                                  -187201;2;0;false;false;0;0;0;;;
                                  -187203;5;0;false;false;;;;;;
                                  -187208;5;1;false;false;127;0;85;;;
                                  -187213;1;0;false;false;0;0;0;;;
                                  -187214;4;0;false;false;;;;;;
                                  -187218;4;1;false;false;127;0;85;;;
                                  -187222;1;0;false;false;;;;;;
                                  -187223;17;0;false;false;0;0;0;;;
                                  -187240;5;0;false;false;;;;;;
                                  -187245;17;0;false;false;0;0;0;;;
                                  -187262;5;0;false;false;;;;;;
                                  -187267;15;0;false;false;0;0;0;;;
                                  -187282;4;1;false;false;127;0;85;;;
                                  -187286;2;0;false;false;0;0;0;;;
                                  -187288;5;0;false;false;;;;;;
                                  -187293;5;1;false;false;127;0;85;;;
                                  -187298;1;0;false;false;0;0;0;;;
                                  -187299;4;0;false;false;;;;;;
                                  -187303;4;1;false;false;127;0;85;;;
                                  -187307;1;0;false;false;;;;;;
                                  -187308;13;0;false;false;0;0;0;;;
                                  -187321;5;0;false;false;;;;;;
                                  -187326;13;0;false;false;0;0;0;;;
                                  -187339;5;0;false;false;;;;;;
                                  -187344;15;0;false;false;0;0;0;;;
                                  -187359;4;1;false;false;127;0;85;;;
                                  -187363;2;0;false;false;0;0;0;;;
                                  -187365;5;0;false;false;;;;;;
                                  -187370;5;1;false;false;127;0;85;;;
                                  -187375;1;0;false;false;0;0;0;;;
                                  -187376;4;0;false;false;;;;;;
                                  -187380;4;1;false;false;127;0;85;;;
                                  -187384;1;0;false;false;;;;;;
                                  -187385;14;0;false;false;0;0;0;;;
                                  -187399;5;0;false;false;;;;;;
                                  -187404;17;0;false;false;0;0;0;;;
                                  -187421;5;0;false;false;;;;;;
                                  -187426;15;0;false;false;0;0;0;;;
                                  -187441;4;1;false;false;127;0;85;;;
                                  -187445;2;0;false;false;0;0;0;;;
                                  -187447;5;0;false;false;;;;;;
                                  -187452;5;1;false;false;127;0;85;;;
                                  -187457;1;0;false;false;0;0;0;;;
                                  -187458;4;0;false;false;;;;;;
                                  -187462;4;1;false;false;127;0;85;;;
                                  -187466;1;0;false;false;;;;;;
                                  -187467;12;0;false;false;0;0;0;;;
                                  -187479;5;0;false;false;;;;;;
                                  -187484;15;0;false;false;0;0;0;;;
                                  -187499;5;0;false;false;;;;;;
                                  -187504;15;0;false;false;0;0;0;;;
                                  -187519;4;1;false;false;127;0;85;;;
                                  -187523;2;0;false;false;0;0;0;;;
                                  -187525;5;0;false;false;;;;;;
                                  -187530;5;1;false;false;127;0;85;;;
                                  -187535;1;0;false;false;0;0;0;;;
                                  -187536;4;0;false;false;;;;;;
                                  -187540;4;1;false;false;127;0;85;;;
                                  -187544;1;0;false;false;;;;;;
                                  -187545;16;0;false;false;0;0;0;;;
                                  -187561;5;0;false;false;;;;;;
                                  -187566;14;0;false;false;0;0;0;;;
                                  -187580;5;0;false;false;;;;;;
                                  -187585;15;0;false;false;0;0;0;;;
                                  -187600;4;1;false;false;127;0;85;;;
                                  -187604;2;0;false;false;0;0;0;;;
                                  -187606;5;0;false;false;;;;;;
                                  -187611;5;1;false;false;127;0;85;;;
                                  -187616;1;0;false;false;0;0;0;;;
                                  -187617;4;0;false;false;;;;;;
                                  -187621;4;1;false;false;127;0;85;;;
                                  -187625;1;0;false;false;;;;;;
                                  -187626;14;0;false;false;0;0;0;;;
                                  -187640;5;0;false;false;;;;;;
                                  -187645;12;0;false;false;0;0;0;;;
                                  -187657;5;0;false;false;;;;;;
                                  -187662;15;0;false;false;0;0;0;;;
                                  -187677;4;1;false;false;127;0;85;;;
                                  -187681;2;0;false;false;0;0;0;;;
                                  -187683;5;0;false;false;;;;;;
                                  -187688;5;1;false;false;127;0;85;;;
                                  -187693;1;0;false;false;0;0;0;;;
                                  -187694;4;0;false;false;;;;;;
                                  -187698;15;0;false;false;63;127;95;;;
                                  -187713;2;0;false;false;;;;;;
                                  -187715;4;1;false;false;127;0;85;;;
                                  -187719;1;0;false;false;;;;;;
                                  -187720;18;0;false;false;0;0;0;;;
                                  -187738;5;0;false;false;;;;;;
                                  -187743;20;0;false;false;0;0;0;;;
                                  -187763;5;0;false;false;;;;;;
                                  -187768;5;1;false;false;127;0;85;;;
                                  -187773;1;0;false;false;0;0;0;;;
                                  -187774;4;0;false;false;;;;;;
                                  -187778;4;1;false;false;127;0;85;;;
                                  -187782;1;0;false;false;;;;;;
                                  -187783;14;0;false;false;0;0;0;;;
                                  -187797;5;0;false;false;;;;;;
                                  -187802;12;0;false;false;0;0;0;;;
                                  -187814;5;0;false;false;;;;;;
                                  -187819;5;1;false;false;127;0;85;;;
                                  -187824;1;0;false;false;0;0;0;;;
                                  -187825;4;0;false;false;;;;;;
                                  -187829;4;1;false;false;127;0;85;;;
                                  -187833;1;0;false;false;;;;;;
                                  -187834;20;0;false;false;0;0;0;;;
                                  -187854;5;0;false;false;;;;;;
                                  -187859;22;0;false;false;0;0;0;;;
                                  -187881;5;0;false;false;;;;;;
                                  -187886;5;1;false;false;127;0;85;;;
                                  -187891;1;0;false;false;0;0;0;;;
                                  -187892;4;0;false;false;;;;;;
                                  -187896;4;1;false;false;127;0;85;;;
                                  -187900;1;0;false;false;;;;;;
                                  -187901;21;0;false;false;0;0;0;;;
                                  -187922;5;0;false;false;;;;;;
                                  -187927;14;0;false;false;0;0;0;;;
                                  -187941;5;0;false;false;;;;;;
                                  -187946;32;0;false;false;0;0;0;;;
                                  -187978;5;0;false;false;;;;;;
                                  -187983;5;1;false;false;127;0;85;;;
                                  -187988;1;0;false;false;0;0;0;;;
                                  -187989;4;0;false;false;;;;;;
                                  -187993;4;1;false;false;127;0;85;;;
                                  -187997;1;0;false;false;;;;;;
                                  -187998;19;0;false;false;0;0;0;;;
                                  -188017;5;0;false;false;;;;;;
                                  -188022;12;0;false;false;0;0;0;;;
                                  -188034;5;0;false;false;;;;;;
                                  -188039;28;0;false;false;0;0;0;;;
                                  -188067;5;0;false;false;;;;;;
                                  -188072;5;1;false;false;127;0;85;;;
                                  -188077;1;0;false;false;0;0;0;;;
                                  -188078;4;0;false;false;;;;;;
                                  -188082;4;1;false;false;127;0;85;;;
                                  -188086;1;0;false;false;;;;;;
                                  -188087;26;0;false;false;0;0;0;;;
                                  -188113;5;0;false;false;;;;;;
                                  -188118;28;0;false;false;0;0;0;;;
                                  -188146;5;0;false;false;;;;;;
                                  -188151;32;0;false;false;0;0;0;;;
                                  -188183;5;0;false;false;;;;;;
                                  -188188;5;1;false;false;127;0;85;;;
                                  -188193;1;0;false;false;0;0;0;;;
                                  -188194;4;0;false;false;;;;;;
                                  -188198;4;1;false;false;127;0;85;;;
                                  -188202;1;0;false;false;;;;;;
                                  -188203;22;0;false;false;0;0;0;;;
                                  -188225;5;0;false;false;;;;;;
                                  -188230;24;0;false;false;0;0;0;;;
                                  -188254;5;0;false;false;;;;;;
                                  -188259;28;0;false;false;0;0;0;;;
                                  -188287;5;0;false;false;;;;;;
                                  -188292;5;1;false;false;127;0;85;;;
                                  -188297;1;0;false;false;0;0;0;;;
                                  -188298;4;0;false;false;;;;;;
                                  -188302;4;1;false;false;127;0;85;;;
                                  -188306;1;0;false;false;;;;;;
                                  -188307;18;0;false;false;0;0;0;;;
                                  -188325;5;0;false;false;;;;;;
                                  -188330;39;0;false;false;0;0;0;;;
                                  -188369;5;0;false;false;;;;;;
                                  -188374;5;1;false;false;127;0;85;;;
                                  -188379;1;0;false;false;0;0;0;;;
                                  -188380;4;0;false;false;;;;;;
                                  -188384;4;1;false;false;127;0;85;;;
                                  -188388;1;0;false;false;;;;;;
                                  -188389;20;0;false;false;0;0;0;;;
                                  -188409;5;0;false;false;;;;;;
                                  -188414;41;0;false;false;0;0;0;;;
                                  -188455;5;0;false;false;;;;;;
                                  -188460;5;1;false;false;127;0;85;;;
                                  -188465;1;0;false;false;0;0;0;;;
                                  -188466;4;0;false;false;;;;;;
                                  -188470;4;1;false;false;127;0;85;;;
                                  -188474;1;0;false;false;;;;;;
                                  -188475;24;0;false;false;0;0;0;;;
                                  -188499;5;0;false;false;;;;;;
                                  -188504;26;0;false;false;0;0;0;;;
                                  -188530;5;0;false;false;;;;;;
                                  -188535;32;0;false;false;0;0;0;;;
                                  -188567;5;0;false;false;;;;;;
                                  -188572;5;1;false;false;127;0;85;;;
                                  -188577;1;0;false;false;0;0;0;;;
                                  -188578;4;0;false;false;;;;;;
                                  -188582;4;1;false;false;127;0;85;;;
                                  -188586;1;0;false;false;;;;;;
                                  -188587;20;0;false;false;0;0;0;;;
                                  -188607;5;0;false;false;;;;;;
                                  -188612;22;0;false;false;0;0;0;;;
                                  -188634;5;0;false;false;;;;;;
                                  -188639;28;0;false;false;0;0;0;;;
                                  -188667;5;0;false;false;;;;;;
                                  -188672;5;1;false;false;127;0;85;;;
                                  -188677;1;0;false;false;0;0;0;;;
                                  -188678;4;0;false;false;;;;;;
                                  -188682;4;1;false;false;127;0;85;;;
                                  -188686;1;0;false;false;;;;;;
                                  -188687;21;0;false;false;0;0;0;;;
                                  -188708;5;0;false;false;;;;;;
                                  -188713;17;0;false;false;0;0;0;;;
                                  -188730;5;0;false;false;;;;;;
                                  -188735;32;0;false;false;0;0;0;;;
                                  -188767;5;0;false;false;;;;;;
                                  -188772;5;1;false;false;127;0;85;;;
                                  -188777;1;0;false;false;0;0;0;;;
                                  -188778;4;0;false;false;;;;;;
                                  -188782;4;1;false;false;127;0;85;;;
                                  -188786;1;0;false;false;;;;;;
                                  -188787;19;0;false;false;0;0;0;;;
                                  -188806;5;0;false;false;;;;;;
                                  -188811;15;0;false;false;0;0;0;;;
                                  -188826;5;0;false;false;;;;;;
                                  -188831;28;0;false;false;0;0;0;;;
                                  -188859;5;0;false;false;;;;;;
                                  -188864;5;1;false;false;127;0;85;;;
                                  -188869;1;0;false;false;0;0;0;;;
                                  -188870;4;0;false;false;;;;;;
                                  -188874;4;1;false;false;127;0;85;;;
                                  -188878;1;0;false;false;;;;;;
                                  -188879;23;0;false;false;0;0;0;;;
                                  -188902;5;0;false;false;;;;;;
                                  -188907;14;0;false;false;0;0;0;;;
                                  -188921;5;0;false;false;;;;;;
                                  -188926;32;0;false;false;0;0;0;;;
                                  -188958;5;0;false;false;;;;;;
                                  -188963;5;1;false;false;127;0;85;;;
                                  -188968;1;0;false;false;0;0;0;;;
                                  -188969;4;0;false;false;;;;;;
                                  -188973;4;1;false;false;127;0;85;;;
                                  -188977;1;0;false;false;;;;;;
                                  -188978;21;0;false;false;0;0;0;;;
                                  -188999;5;0;false;false;;;;;;
                                  -189004;12;0;false;false;0;0;0;;;
                                  -189016;5;0;false;false;;;;;;
                                  -189021;28;0;false;false;0;0;0;;;
                                  -189049;5;0;false;false;;;;;;
                                  -189054;5;1;false;false;127;0;85;;;
                                  -189059;1;0;false;false;0;0;0;;;
                                  -189060;4;0;false;false;;;;;;
                                  -189064;20;0;false;false;63;127;95;;;
                                  -189084;2;0;false;false;;;;;;
                                  -189086;4;1;false;false;127;0;85;;;
                                  -189090;1;0;false;false;;;;;;
                                  -189091;7;0;false;false;0;0;0;;;
                                  -189098;5;0;false;false;;;;;;
                                  -189103;6;0;false;false;0;0;0;;;
                                  -189109;5;0;false;false;;;;;;
                                  -189114;5;1;false;false;127;0;85;;;
                                  -189119;1;0;false;false;0;0;0;;;
                                  -189120;4;0;false;false;;;;;;
                                  -189124;4;1;false;false;127;0;85;;;
                                  -189128;1;0;false;false;;;;;;
                                  -189129;8;0;false;false;0;0;0;;;
                                  -189137;5;0;false;false;;;;;;
                                  -189142;7;0;false;false;0;0;0;;;
                                  -189149;5;0;false;false;;;;;;
                                  -189154;5;1;false;false;127;0;85;;;
                                  -189159;1;0;false;false;0;0;0;;;
                                  -189160;4;0;false;false;;;;;;
                                  -189164;4;1;false;false;127;0;85;;;
                                  -189168;1;0;false;false;;;;;;
                                  -189169;9;0;false;false;0;0;0;;;
                                  -189178;5;0;false;false;;;;;;
                                  -189183;8;0;false;false;0;0;0;;;
                                  -189191;5;0;false;false;;;;;;
                                  -189196;5;1;false;false;127;0;85;;;
                                  -189201;1;0;false;false;0;0;0;;;
                                  -189202;4;0;false;false;;;;;;
                                  -189206;4;1;false;false;127;0;85;;;
                                  -189210;1;0;false;false;;;;;;
                                  -189211;19;0;false;false;0;0;0;;;
                                  -189230;5;0;false;false;;;;;;
                                  -189235;14;0;false;false;0;0;0;;;
                                  -189249;5;0;false;false;;;;;;
                                  -189254;5;1;false;false;127;0;85;;;
                                  -189259;1;0;false;false;0;0;0;;;
                                  -189260;4;0;false;false;;;;;;
                                  -189264;4;1;false;false;127;0;85;;;
                                  -189268;1;0;false;false;;;;;;
                                  -189269;15;0;false;false;0;0;0;;;
                                  -189284;5;0;false;false;;;;;;
                                  -189289;11;0;false;false;0;0;0;;;
                                  -189300;5;0;false;false;;;;;;
                                  -189305;5;1;false;false;127;0;85;;;
                                  -189310;1;0;false;false;0;0;0;;;
                                  -189311;4;0;false;false;;;;;;
                                  -189315;4;1;false;false;127;0;85;;;
                                  -189319;1;0;false;false;;;;;;
                                  -189320;24;0;false;false;0;0;0;;;
                                  -189344;5;0;false;false;;;;;;
                                  -189349;23;0;false;false;0;0;0;;;
                                  -189372;5;0;false;false;;;;;;
                                  -189377;5;1;false;false;127;0;85;;;
                                  -189382;1;0;false;false;0;0;0;;;
                                  -189383;4;0;false;false;;;;;;
                                  -189387;4;1;false;false;127;0;85;;;
                                  -189391;1;0;false;false;;;;;;
                                  -189392;20;0;false;false;0;0;0;;;
                                  -189412;5;0;false;false;;;;;;
                                  -189417;19;0;false;false;0;0;0;;;
                                  -189436;5;0;false;false;;;;;;
                                  -189441;5;1;false;false;127;0;85;;;
                                  -189446;1;0;false;false;0;0;0;;;
                                  -189447;4;0;false;false;;;;;;
                                  -189451;18;0;false;false;63;127;95;;;
                                  -189469;2;0;false;false;;;;;;
                                  -189471;4;1;false;false;127;0;85;;;
                                  -189475;1;0;false;false;;;;;;
                                  -189476;20;0;false;false;0;0;0;;;
                                  -189496;5;0;false;false;;;;;;
                                  -189501;9;0;false;false;0;0;0;;;
                                  -189510;1;0;false;false;;;;;;
                                  -189511;1;0;false;false;0;0;0;;;
                                  -189512;1;0;false;false;;;;;;
                                  -189513;11;0;false;false;0;0;0;;;
                                  -189524;2;0;false;false;;;;;;
                                  -189526;33;0;false;false;63;127;95;;;
                                  -189559;3;0;false;false;;;;;;
                                  -189562;5;1;false;false;127;0;85;;;
                                  -189567;1;0;false;false;0;0;0;;;
                                  -189568;3;0;false;false;;;;;;
                                  -189571;1;0;false;false;0;0;0;;;
                                  -189572;2;0;false;false;;;;;;
                                  -189574;1;0;false;false;0;0;0;;;
                                  -189575;2;0;false;false;;;;;;
                                  -189577;3;0;false;false;63;95;191;;;
                                  -189580;3;0;false;false;;;;;;
                                  -189583;1;0;false;false;63;95;191;;;
                                  -189584;1;0;false;false;;;;;;
                                  -189585;9;0;false;false;63;95;191;;;
                                  -189594;1;0;false;false;;;;;;
                                  -189595;5;0;false;false;63;95;191;;;
                                  -189600;1;0;false;false;;;;;;
                                  -189601;3;0;false;false;63;95;191;;;
                                  -189604;1;0;false;false;;;;;;
                                  -189605;8;0;false;false;63;95;191;;;
                                  -189613;1;0;false;false;;;;;;
                                  -189614;4;0;false;false;63;95;191;;;
                                  -189618;3;0;false;false;;;;;;
                                  -189621;2;0;false;false;63;95;191;;;
                                  -189623;2;0;false;false;;;;;;
                                  -189625;7;1;false;false;127;0;85;;;
                                  -189632;1;0;false;false;;;;;;
                                  -189633;8;0;false;false;0;0;0;;;
                                  -189641;1;0;false;false;;;;;;
                                  -189642;1;0;false;false;0;0;0;;;
                                  -189643;3;0;false;false;;;;;;
                                  -189646;6;1;false;false;127;0;85;;;
                                  -189652;1;0;false;false;;;;;;
                                  -189653;6;0;false;false;0;0;0;;;
                                  -189659;1;0;false;false;;;;;;
                                  -189660;2;0;false;false;0;0;0;;;
                                  -189662;1;0;false;false;;;;;;
                                  -189663;25;0;false;false;0;0;0;;;
                                  -189688;1;0;false;false;;;;;;
                                  -189689;2;0;false;false;0;0;0;;;
                                  -189691;1;0;false;false;;;;;;
                                  -189692;11;0;false;false;0;0;0;;;
                                  -189703;2;0;false;false;;;;;;
                                  -189705;1;0;false;false;0;0;0;;;
                                  -189706;2;0;false;false;;;;;;
                                  -189708;3;0;false;false;63;95;191;;;
                                  -189711;3;0;false;false;;;;;;
                                  -189714;1;0;false;false;63;95;191;;;
                                  -189715;1;0;false;false;;;;;;
                                  -189716;7;0;false;false;63;95;191;;;
                                  -189723;1;0;false;false;;;;;;
                                  -189724;7;0;false;false;63;95;191;;;
                                  -189731;1;0;false;false;;;;;;
                                  -189732;3;0;false;false;63;95;191;;;
                                  -189735;1;0;false;false;;;;;;
                                  -189736;5;0;false;false;63;95;191;;;
                                  -189741;1;0;false;false;;;;;;
                                  -189742;6;0;false;false;63;95;191;;;
                                  -189748;1;0;false;false;;;;;;
                                  -189749;2;0;false;false;63;95;191;;;
                                  -189751;1;0;false;false;;;;;;
                                  -189752;6;0;false;false;63;95;191;;;
                                  -189758;1;0;false;false;;;;;;
                                  -189759;1;0;false;false;63;95;191;;;
                                  -189760;1;0;false;false;;;;;;
                                  -189761;5;0;false;false;63;95;191;;;
                                  -189766;1;0;false;false;;;;;;
                                  -189767;4;0;false;false;63;95;191;;;
                                  -189771;1;0;false;false;;;;;;
                                  -189772;4;0;false;false;63;95;191;;;
                                  -189776;1;0;false;false;;;;;;
                                  -189777;10;0;false;false;63;95;191;;;
                                  -189787;3;0;false;false;;;;;;
                                  -189790;1;0;false;false;63;95;191;;;
                                  -189791;1;0;false;false;;;;;;
                                  -189792;8;0;false;false;63;95;191;;;
                                  -189800;4;0;false;false;;;;;;
                                  -189804;1;0;false;false;63;95;191;;;
                                  -189805;1;0;false;false;;;;;;
                                  -189806;11;0;false;false;63;95;191;;;
                                  -189817;1;0;false;false;;;;;;
                                  -189818;18;0;false;false;63;95;191;;;
                                  -189836;1;0;false;false;;;;;;
                                  -189837;2;0;false;false;63;95;191;;;
                                  -189839;1;0;false;false;;;;;;
                                  -189840;5;0;false;false;63;95;191;;;
                                  -189845;1;0;false;false;;;;;;
                                  -189846;3;0;false;false;63;95;191;;;
                                  -189849;1;0;false;false;;;;;;
                                  -189850;18;0;false;false;63;95;191;;;
                                  -189868;1;0;false;false;;;;;;
                                  -189869;2;0;false;false;63;95;191;;;
                                  -189871;1;0;false;false;;;;;;
                                  -189872;4;0;false;false;63;95;191;;;
                                  -189876;3;0;false;false;;;;;;
                                  -189879;1;0;false;false;63;95;191;;;
                                  -189880;4;0;false;false;;;;;;
                                  -189884;1;0;false;false;63;95;191;;;
                                  -189885;1;0;false;false;;;;;;
                                  -189886;8;1;false;false;127;159;191;;;
                                  -189894;4;0;false;false;63;95;191;;;
                                  -189898;1;0;false;false;;;;;;
                                  -189899;2;0;false;false;63;95;191;;;
                                  -189901;1;0;false;false;;;;;;
                                  -189902;3;0;false;false;63;95;191;;;
                                  -189905;1;0;false;false;;;;;;
                                  -189906;5;0;false;false;63;95;191;;;
                                  -189911;1;0;false;false;;;;;;
                                  -189912;6;0;false;false;63;95;191;;;
                                  -189918;1;0;false;false;;;;;;
                                  -189919;2;0;false;false;63;95;191;;;
                                  -189921;1;0;false;false;;;;;;
                                  -189922;6;0;false;false;63;95;191;;;
                                  -189928;1;0;false;false;;;;;;
                                  -189929;1;0;false;false;63;95;191;;;
                                  -189930;1;0;false;false;;;;;;
                                  -189931;5;0;false;false;63;95;191;;;
                                  -189936;1;0;false;false;;;;;;
                                  -189937;4;0;false;false;63;95;191;;;
                                  -189941;1;0;false;false;;;;;;
                                  -189942;4;0;false;false;63;95;191;;;
                                  -189946;1;0;false;false;;;;;;
                                  -189947;10;0;false;false;63;95;191;;;
                                  -189957;3;0;false;false;;;;;;
                                  -189960;1;0;false;false;63;95;191;;;
                                  -189961;1;0;false;false;;;;;;
                                  -189962;5;0;false;false;63;95;191;;;
                                  -189967;1;0;false;false;;;;;;
                                  -189968;2;0;false;false;63;95;191;;;
                                  -189970;1;0;false;false;;;;;;
                                  -189971;3;0;false;false;63;95;191;;;
                                  -189974;1;0;false;false;;;;;;
                                  -189975;5;0;false;false;63;95;191;;;
                                  -189980;1;0;false;false;;;;;;
                                  -189981;6;0;false;false;63;95;191;;;
                                  -189987;1;0;false;false;;;;;;
                                  -189988;2;0;false;false;63;95;191;;;
                                  -189990;1;0;false;false;;;;;;
                                  -189991;6;0;false;false;63;95;191;;;
                                  -189997;1;0;false;false;;;;;;
                                  -189998;2;0;false;false;63;95;191;;;
                                  -190000;1;0;false;false;;;;;;
                                  -190001;5;0;false;false;63;95;191;;;
                                  -190006;1;0;false;false;;;;;;
                                  -190007;1;0;false;false;63;95;191;;;
                                  -190008;1;0;false;false;;;;;;
                                  -190009;4;0;false;false;63;95;191;;;
                                  -190013;1;0;false;false;;;;;;
                                  -190014;10;0;false;false;63;95;191;;;
                                  -190024;3;0;false;false;;;;;;
                                  -190027;2;0;false;false;63;95;191;;;
                                  -190029;2;0;false;false;;;;;;
                                  -190031;7;1;false;false;127;0;85;;;
                                  -190038;1;0;false;false;;;;;;
                                  -190039;16;0;false;false;0;0;0;;;
                                  -190055;3;1;false;false;127;0;85;;;
                                  -190058;1;0;false;false;;;;;;
                                  -190059;7;0;false;false;0;0;0;;;
                                  -190066;1;0;false;false;;;;;;
                                  -190067;1;0;false;false;0;0;0;;;
                                  -190068;3;0;false;false;;;;;;
                                  -190071;3;1;false;false;127;0;85;;;
                                  -190074;1;0;false;false;;;;;;
                                  -190075;4;0;false;false;0;0;0;;;
                                  -190079;1;0;false;false;;;;;;
                                  -190080;1;0;false;false;0;0;0;;;
                                  -190081;1;0;false;false;;;;;;
                                  -190082;32;0;false;false;0;0;0;;;
                                  -190114;3;0;false;false;;;;;;
                                  -190117;3;1;false;false;127;0;85;;;
                                  -190120;1;0;false;false;;;;;;
                                  -190121;10;0;false;false;0;0;0;;;
                                  -190131;1;0;false;false;;;;;;
                                  -190132;1;0;false;false;0;0;0;;;
                                  -190133;1;0;false;false;;;;;;
                                  -190134;30;0;false;false;0;0;0;;;
                                  -190164;4;0;false;false;;;;;;
                                  -190168;3;1;false;false;127;0;85;;;
                                  -190171;1;0;false;false;;;;;;
                                  -190172;12;0;false;false;0;0;0;;;
                                  -190184;1;0;false;false;;;;;;
                                  -190185;1;0;false;false;0;0;0;;;
                                  -190186;1;0;false;false;;;;;;
                                  -190187;6;0;false;false;0;0;0;;;
                                  -190193;1;0;false;false;;;;;;
                                  -190194;1;0;false;false;0;0;0;;;
                                  -190195;1;0;false;false;;;;;;
                                  -190196;11;0;false;false;0;0;0;;;
                                  -190207;3;0;false;false;;;;;;
                                  -190210;63;0;false;false;63;127;95;;;
                                  -190273;1;0;false;false;;;;;;
                                  -190274;65;0;false;false;63;127;95;;;
                                  -190339;1;0;false;false;;;;;;
                                  -190340;44;0;false;false;63;127;95;;;
                                  -190384;1;0;false;false;;;;;;
                                  -190385;6;1;false;false;127;0;85;;;
                                  -190391;1;0;false;false;;;;;;
                                  -190392;12;0;false;false;0;0;0;;;
                                  -190404;1;0;false;false;;;;;;
                                  -190405;1;0;false;false;0;0;0;;;
                                  -190406;1;0;false;false;;;;;;
                                  -190407;31;0;false;false;0;0;0;;;
                                  -190438;2;0;false;false;;;;;;
                                  -190440;1;0;false;false;0;0;0;;;
                                  -190441;2;0;false;false;;;;;;
                                  -190443;3;0;false;false;63;95;191;;;
                                  -190446;3;0;false;false;;;;;;
                                  -190449;1;0;false;false;63;95;191;;;
                                  -190450;1;0;false;false;;;;;;
                                  -190451;7;0;false;false;63;95;191;;;
                                  -190458;1;0;false;false;;;;;;
                                  -190459;7;0;false;false;63;95;191;;;
                                  -190466;1;0;false;false;;;;;;
                                  -190467;3;0;false;false;63;95;191;;;
                                  -190470;1;0;false;false;;;;;;
                                  -190471;6;0;false;false;63;95;191;;;
                                  -190477;1;0;false;false;;;;;;
                                  -190478;2;0;false;false;63;95;191;;;
                                  -190480;1;0;false;false;;;;;;
                                  -190481;8;0;false;false;63;95;191;;;
                                  -190489;1;0;false;false;;;;;;
                                  -190490;6;0;false;false;63;95;191;;;
                                  -190496;1;0;false;false;;;;;;
                                  -190497;14;0;false;false;63;95;191;;;
                                  -190511;1;0;false;false;;;;;;
                                  -190512;2;0;false;false;63;95;191;;;
                                  -190514;1;0;false;false;;;;;;
                                  -190515;4;0;false;false;63;95;191;;;
                                  -190519;4;0;false;false;;;;;;
                                  -190523;1;0;false;false;63;95;191;;;
                                  -190524;1;0;false;false;;;;;;
                                  -190525;7;0;false;false;63;95;191;;;
                                  -190532;1;0;false;false;;;;;;
                                  -190533;7;0;false;false;63;95;191;;;
                                  -190540;4;0;false;false;;;;;;
                                  -190544;1;0;false;false;63;95;191;;;
                                  -190545;4;0;false;false;;;;;;
                                  -190549;1;0;false;false;63;95;191;;;
                                  -190550;1;0;false;false;;;;;;
                                  -190551;8;1;false;false;127;159;191;;;
                                  -190559;10;0;false;false;63;95;191;;;
                                  -190569;1;0;false;false;;;;;;
                                  -190570;8;0;false;false;63;95;191;;;
                                  -190578;1;0;false;false;;;;;;
                                  -190579;6;0;false;false;63;95;191;;;
                                  -190585;1;0;false;false;;;;;;
                                  -190586;2;0;false;false;63;95;191;;;
                                  -190588;1;0;false;false;;;;;;
                                  -190589;5;0;false;false;63;95;191;;;
                                  -190594;1;0;false;false;;;;;;
                                  -190595;9;0;false;false;63;95;191;;;
                                  -190604;1;0;false;false;;;;;;
                                  -190605;9;0;false;false;63;95;191;;;
                                  -190614;1;0;false;false;;;;;;
                                  -190615;6;0;false;false;63;95;191;;;
                                  -190621;4;0;false;false;;;;;;
                                  -190625;1;0;false;false;63;95;191;;;
                                  -190626;2;0;false;false;;;;;;
                                  -190628;2;0;false;false;63;95;191;;;
                                  -190630;1;0;false;false;;;;;;
                                  -190631;4;0;false;false;63;95;191;;;
                                  -190635;1;0;false;false;;;;;;
                                  -190636;8;0;false;false;63;95;191;;;
                                  -190644;3;0;false;false;;;;;;
                                  -190647;2;0;false;false;63;95;191;;;
                                  -190649;2;0;false;false;;;;;;
                                  -190651;7;1;false;false;127;0;85;;;
                                  -190658;1;0;false;false;;;;;;
                                  -190659;12;0;false;false;0;0;0;;;
                                  -190671;1;0;false;false;;;;;;
                                  -190672;1;0;false;false;0;0;0;;;
                                  -190673;3;0;false;false;;;;;;
                                  -190676;6;1;false;false;127;0;85;;;
                                  -190682;1;0;false;false;;;;;;
                                  -190683;11;0;false;false;0;0;0;;;
                                  -190694;2;0;false;false;;;;;;
                                  -190696;1;0;false;false;0;0;0;;;
                                  -190697;2;0;false;false;;;;;;
                                  -190699;3;0;false;false;63;95;191;;;
                                  -190702;3;0;false;false;;;;;;
                                  -190705;1;0;false;false;63;95;191;;;
                                  -190706;1;0;false;false;;;;;;
                                  -190707;7;0;false;false;63;95;191;;;
                                  -190714;1;0;false;false;;;;;;
                                  -190715;7;0;false;false;63;95;191;;;
                                  -190722;1;0;false;false;;;;;;
                                  -190723;2;0;false;false;63;95;191;;;
                                  -190725;1;0;false;false;;;;;;
                                  -190726;3;0;false;false;63;95;191;;;
                                  -190729;1;0;false;false;;;;;;
                                  -190730;3;0;false;false;63;95;191;;;
                                  -190733;1;0;false;false;;;;;;
                                  -190734;5;0;false;false;63;95;191;;;
                                  -190739;1;0;false;false;;;;;;
                                  -190740;5;0;false;false;63;95;191;;;
                                  -190745;1;0;false;false;;;;;;
                                  -190746;3;0;false;false;63;95;191;;;
                                  -190749;1;0;false;false;;;;;;
                                  -190750;8;0;false;false;63;95;191;;;
                                  -190758;3;0;false;false;;;;;;
                                  -190761;1;0;false;false;63;95;191;;;
                                  -190762;1;0;false;false;;;;;;
                                  -190763;3;0;false;false;127;127;159;;;
                                  -190766;3;0;false;false;;;;;;
                                  -190769;1;0;false;false;63;95;191;;;
                                  -190770;3;0;false;false;;;;;;
                                  -190773;1;0;false;false;63;95;191;;;
                                  -190774;1;0;false;false;;;;;;
                                  -190775;8;1;false;false;127;159;191;;;
                                  -190783;4;0;false;false;63;95;191;;;
                                  -190787;1;0;false;false;;;;;;
                                  -190788;2;0;false;false;63;95;191;;;
                                  -190790;1;0;false;false;;;;;;
                                  -190791;3;0;false;false;63;95;191;;;
                                  -190794;1;0;false;false;;;;;;
                                  -190795;2;0;false;false;63;95;191;;;
                                  -190797;1;0;false;false;;;;;;
                                  -190798;3;0;false;false;63;95;191;;;
                                  -190801;1;0;false;false;;;;;;
                                  -190802;5;0;false;false;63;95;191;;;
                                  -190807;1;0;false;false;;;;;;
                                  -190808;2;0;false;false;63;95;191;;;
                                  -190810;1;0;false;false;;;;;;
                                  -190811;7;0;false;false;63;95;191;;;
                                  -190818;3;0;false;false;;;;;;
                                  -190821;1;0;false;false;63;95;191;;;
                                  -190822;1;0;false;false;;;;;;
                                  -190823;5;0;false;false;63;95;191;;;
                                  -190828;1;0;false;false;;;;;;
                                  -190829;2;0;false;false;63;95;191;;;
                                  -190831;1;0;false;false;;;;;;
                                  -190832;4;0;false;false;63;95;191;;;
                                  -190836;1;0;false;false;;;;;;
                                  -190837;2;0;false;false;63;95;191;;;
                                  -190839;1;0;false;false;;;;;;
                                  -190840;3;0;false;false;63;95;191;;;
                                  -190843;1;0;false;false;;;;;;
                                  -190844;5;0;false;false;63;95;191;;;
                                  -190849;1;0;false;false;;;;;;
                                  -190850;2;0;false;false;63;95;191;;;
                                  -190852;1;0;false;false;;;;;;
                                  -190853;7;0;false;false;63;95;191;;;
                                  -190860;3;0;false;false;;;;;;
                                  -190863;2;0;false;false;63;95;191;;;
                                  -190865;2;0;false;false;;;;;;
                                  -190867;7;1;false;false;127;0;85;;;
                                  -190874;1;0;false;false;;;;;;
                                  -190875;14;0;false;false;0;0;0;;;
                                  -190889;3;1;false;false;127;0;85;;;
                                  -190892;1;0;false;false;;;;;;
                                  -190893;10;0;false;false;0;0;0;;;
                                  -190903;1;0;false;false;;;;;;
                                  -190904;3;1;false;false;127;0;85;;;
                                  -190907;1;0;false;false;;;;;;
                                  -190908;9;0;false;false;0;0;0;;;
                                  -190917;1;0;false;false;;;;;;
                                  -190918;1;0;false;false;0;0;0;;;
                                  -190919;3;0;false;false;;;;;;
                                  -190922;3;1;false;false;127;0;85;;;
                                  -190925;1;0;false;false;;;;;;
                                  -190926;18;0;false;false;0;0;0;;;
                                  -190944;1;0;false;false;;;;;;
                                  -190945;1;0;false;false;0;0;0;;;
                                  -190946;1;0;false;false;;;;;;
                                  -190947;24;0;false;false;0;0;0;;;
                                  -190971;3;0;false;false;;;;;;
                                  -190974;3;1;false;false;127;0;85;;;
                                  -190977;1;0;false;false;;;;;;
                                  -190978;15;0;false;false;0;0;0;;;
                                  -190993;1;0;false;false;;;;;;
                                  -190994;1;0;false;false;0;0;0;;;
                                  -190995;1;0;false;false;;;;;;
                                  -190996;20;0;false;false;0;0;0;;;
                                  -191016;1;0;false;false;;;;;;
                                  -191017;1;0;false;false;0;0;0;;;
                                  -191018;1;0;false;false;;;;;;
                                  -191019;11;0;false;false;0;0;0;;;
                                  -191030;3;0;false;false;;;;;;
                                  -191033;7;1;false;false;127;0;85;;;
                                  -191040;1;0;false;false;;;;;;
                                  -191041;10;0;false;false;0;0;0;;;
                                  -191051;1;0;false;false;;;;;;
                                  -191052;1;0;false;false;0;0;0;;;
                                  -191053;1;0;false;false;;;;;;
                                  -191054;9;0;false;false;0;0;0;;;
                                  -191063;1;0;false;false;;;;;;
                                  -191064;1;0;false;false;0;0;0;;;
                                  -191065;1;0;false;false;;;;;;
                                  -191066;18;0;false;false;0;0;0;;;
                                  -191084;1;0;false;false;;;;;;
                                  -191085;2;0;false;false;0;0;0;;;
                                  -191087;1;0;false;false;;;;;;
                                  -191088;8;0;false;false;0;0;0;;;
                                  -191096;1;0;false;false;;;;;;
                                  -191097;1;0;false;false;0;0;0;;;
                                  -191098;1;0;false;false;;;;;;
                                  -191099;16;0;false;false;0;0;0;;;
                                  -191115;3;0;false;false;;;;;;
                                  -191118;6;1;false;false;127;0;85;;;
                                  -191124;1;0;false;false;;;;;;
                                  -191125;12;0;false;false;0;0;0;;;
                                  -191137;2;0;false;false;;;;;;
                                  -191139;1;0;false;false;0;0;0;;;
                                  -191140;2;0;false;false;;;;;;
                                  -191142;3;0;false;false;63;95;191;;;
                                  -191145;3;0;false;false;;;;;;
                                  -191148;1;0;false;false;63;95;191;;;
                                  -191149;1;0;false;false;;;;;;
                                  -191150;7;0;false;false;63;95;191;;;
                                  -191157;1;0;false;false;;;;;;
                                  -191158;7;0;false;false;63;95;191;;;
                                  -191165;1;0;false;false;;;;;;
                                  -191166;3;0;false;false;63;95;191;;;
                                  -191169;1;0;false;false;;;;;;
                                  -191170;6;0;false;false;63;95;191;;;
                                  -191176;1;0;false;false;;;;;;
                                  -191177;3;0;false;false;63;95;191;;;
                                  -191180;1;0;false;false;;;;;;
                                  -191181;4;0;false;false;63;95;191;;;
                                  -191185;1;0;false;false;;;;;;
                                  -191186;4;0;false;false;63;95;191;;;
                                  -191190;1;0;false;false;;;;;;
                                  -191191;3;0;false;false;63;95;191;;;
                                  -191194;1;0;false;false;;;;;;
                                  -191195;5;0;false;false;63;95;191;;;
                                  -191200;3;0;false;false;;;;;;
                                  -191203;1;0;false;false;63;95;191;;;
                                  -191204;1;0;false;false;;;;;;
                                  -191205;3;0;false;false;127;127;159;;;
                                  -191208;3;0;false;false;;;;;;
                                  -191211;1;0;false;false;63;95;191;;;
                                  -191212;3;0;false;false;;;;;;
                                  -191215;1;0;false;false;63;95;191;;;
                                  -191216;1;0;false;false;;;;;;
                                  -191217;8;1;false;false;127;159;191;;;
                                  -191225;4;0;false;false;63;95;191;;;
                                  -191229;1;0;false;false;;;;;;
                                  -191230;2;0;false;false;63;95;191;;;
                                  -191232;1;0;false;false;;;;;;
                                  -191233;6;0;false;false;63;95;191;;;
                                  -191239;1;0;false;false;;;;;;
                                  -191240;3;0;false;false;63;95;191;;;
                                  -191243;1;0;false;false;;;;;;
                                  -191244;4;0;false;false;63;95;191;;;
                                  -191248;1;0;false;false;;;;;;
                                  -191249;4;0;false;false;63;95;191;;;
                                  -191253;1;0;false;false;;;;;;
                                  -191254;3;0;false;false;63;95;191;;;
                                  -191257;1;0;false;false;;;;;;
                                  -191258;5;0;false;false;63;95;191;;;
                                  -191263;1;0;false;false;;;;;;
                                  -191264;5;0;false;false;63;95;191;;;
                                  -191269;1;0;false;false;;;;;;
                                  -191270;2;0;false;false;63;95;191;;;
                                  -191272;1;0;false;false;;;;;;
                                  -191273;6;0;false;false;63;95;191;;;
                                  -191279;1;0;false;false;;;;;;
                                  -191280;3;0;false;false;63;95;191;;;
                                  -191283;1;0;false;false;;;;;;
                                  -191284;4;0;false;false;63;95;191;;;
                                  -191288;4;0;false;false;;;;;;
                                  -191292;1;0;false;false;63;95;191;;;
                                  -191293;2;0;false;false;;;;;;
                                  -191295;8;0;false;false;63;95;191;;;
                                  -191303;1;0;false;false;;;;;;
                                  -191304;5;0;false;false;63;95;191;;;
                                  -191309;3;0;false;false;;;;;;
                                  -191312;2;0;false;false;63;95;191;;;
                                  -191314;2;0;false;false;;;;;;
                                  -191316;7;1;false;false;127;0;85;;;
                                  -191323;1;0;false;false;;;;;;
                                  -191324;14;0;false;false;0;0;0;;;
                                  -191338;1;0;false;false;;;;;;
                                  -191339;1;0;false;false;0;0;0;;;
                                  -191340;3;0;false;false;;;;;;
                                  -191343;6;1;false;false;127;0;85;;;
                                  -191349;1;0;false;false;;;;;;
                                  -191350;11;0;false;false;0;0;0;;;
                                  -191361;1;0;false;false;;;;;;
                                  -191362;1;0;false;false;0;0;0;;;
                                  -191363;1;0;false;false;;;;;;
                                  -191364;11;0;false;false;0;0;0;;;
                                  -191375;1;0;false;false;;;;;;
                                  -191376;2;0;false;false;0;0;0;;;
                                  -191378;1;0;false;false;;;;;;
                                  -191379;2;0;false;false;0;0;0;;;
                                  -191381;2;0;false;false;;;;;;
                                  -191383;1;0;false;false;0;0;0;;;
                                  -191384;2;0;false;false;;;;;;
                                  -191386;3;0;false;false;63;95;191;;;
                                  -191389;3;0;false;false;;;;;;
                                  -191392;1;0;false;false;63;95;191;;;
                                  -191393;1;0;false;false;;;;;;
                                  -191394;5;0;false;false;63;95;191;;;
                                  -191399;1;0;false;false;;;;;;
                                  -191400;3;0;false;false;63;95;191;;;
                                  -191403;1;0;false;false;;;;;;
                                  -191404;9;0;false;false;63;95;191;;;
                                  -191413;1;0;false;false;;;;;;
                                  -191414;6;0;false;false;63;95;191;;;
                                  -191420;1;0;false;false;;;;;;
                                  -191421;6;0;false;false;63;95;191;;;
                                  -191427;1;0;false;false;;;;;;
                                  -191428;14;0;false;false;63;95;191;;;
                                  -191442;1;0;false;false;;;;;;
                                  -191443;4;0;false;false;63;95;191;;;
                                  -191447;1;0;false;false;;;;;;
                                  -191448;2;0;false;false;63;95;191;;;
                                  -191450;1;0;false;false;;;;;;
                                  -191451;7;0;false;false;63;95;191;;;
                                  -191458;1;0;false;false;;;;;;
                                  -191459;2;0;false;false;63;95;191;;;
                                  -191461;4;0;false;false;;;;;;
                                  -191465;1;0;false;false;63;95;191;;;
                                  -191466;1;0;false;false;;;;;;
                                  -191467;3;0;false;false;63;95;191;;;
                                  -191470;1;0;false;false;;;;;;
                                  -191471;5;0;false;false;63;95;191;;;
                                  -191476;1;0;false;false;;;;;;
                                  -191477;3;0;false;false;63;95;191;;;
                                  -191480;1;0;false;false;;;;;;
                                  -191481;4;0;false;false;63;95;191;;;
                                  -191485;1;0;false;false;;;;;;
                                  -191486;1;0;false;false;63;95;191;;;
                                  -191487;1;0;false;false;;;;;;
                                  -191488;6;0;false;false;63;95;191;;;
                                  -191494;1;0;false;false;;;;;;
                                  -191495;6;0;false;false;63;95;191;;;
                                  -191501;3;0;false;false;;;;;;
                                  -191504;1;0;false;false;63;95;191;;;
                                  -191505;1;0;false;false;;;;;;
                                  -191506;3;0;false;false;127;127;159;;;
                                  -191509;3;0;false;false;;;;;;
                                  -191512;1;0;false;false;63;95;191;;;
                                  -191513;3;0;false;false;;;;;;
                                  -191516;1;0;false;false;63;95;191;;;
                                  -191517;1;0;false;false;;;;;;
                                  -191518;7;1;false;false;127;159;191;;;
                                  -191525;5;0;false;false;63;95;191;;;
                                  -191530;1;0;false;false;;;;;;
                                  -191531;3;0;false;false;63;95;191;;;
                                  -191534;1;0;false;false;;;;;;
                                  -191535;4;0;false;false;63;95;191;;;
                                  -191539;1;0;false;false;;;;;;
                                  -191540;6;0;false;false;63;95;191;;;
                                  -191546;1;0;false;false;;;;;;
                                  -191547;6;0;false;false;63;95;191;;;
                                  -191553;4;0;false;false;;;;;;
                                  -191557;1;0;false;false;63;95;191;;;
                                  -191558;1;0;false;false;;;;;;
                                  -191559;4;0;false;false;127;127;159;;;
                                  -191563;3;0;false;false;;;;;;
                                  -191566;1;0;false;false;63;95;191;;;
                                  -191567;1;0;false;false;;;;;;
                                  -191568;4;0;false;false;127;127;159;;;
                                  -191572;11;0;false;false;63;95;191;;;
                                  -191583;1;0;false;false;;;;;;
                                  -191584;1;0;false;false;127;127;159;;;
                                  -191585;1;0;false;false;;;;;;
                                  -191586;3;0;false;false;63;95;191;;;
                                  -191589;1;0;false;false;;;;;;
                                  -191590;7;0;false;false;63;95;191;;;
                                  -191597;1;0;false;false;;;;;;
                                  -191598;5;0;false;false;63;95;191;;;
                                  -191603;1;0;false;false;;;;;;
                                  -191604;6;0;false;false;63;95;191;;;
                                  -191610;5;0;false;false;127;127;159;;;
                                  -191615;3;0;false;false;;;;;;
                                  -191618;1;0;false;false;63;95;191;;;
                                  -191619;2;0;false;false;;;;;;
                                  -191621;4;0;false;false;127;127;159;;;
                                  -191625;9;0;false;false;63;95;191;;;
                                  -191634;1;0;false;false;;;;;;
                                  -191635;1;0;false;false;127;127;159;;;
                                  -191636;1;0;false;false;;;;;;
                                  -191637;3;0;false;false;63;95;191;;;
                                  -191640;1;0;false;false;;;;;;
                                  -191641;7;0;false;false;63;95;191;;;
                                  -191648;1;0;false;false;;;;;;
                                  -191649;3;0;false;false;63;95;191;;;
                                  -191652;1;0;false;false;;;;;;
                                  -191653;6;0;false;false;63;95;191;;;
                                  -191659;5;0;false;false;127;127;159;;;
                                  -191664;3;0;false;false;;;;;;
                                  -191667;1;0;false;false;63;95;191;;;
                                  -191668;2;0;false;false;;;;;;
                                  -191670;4;0;false;false;127;127;159;;;
                                  -191674;10;0;false;false;63;95;191;;;
                                  -191684;1;0;false;false;;;;;;
                                  -191685;1;0;false;false;127;127;159;;;
                                  -191686;1;0;false;false;;;;;;
                                  -191687;3;0;false;false;63;95;191;;;
                                  -191690;1;0;false;false;;;;;;
                                  -191691;3;0;false;false;63;95;191;;;
                                  -191694;1;0;false;false;;;;;;
                                  -191695;4;0;false;false;63;95;191;;;
                                  -191699;5;0;false;false;127;127;159;;;
                                  -191704;3;0;false;false;;;;;;
                                  -191707;1;0;false;false;63;95;191;;;
                                  -191708;1;0;false;false;;;;;;
                                  -191709;5;0;false;false;127;127;159;;;
                                  -191714;3;0;false;false;;;;;;
                                  -191717;1;0;false;false;63;95;191;;;
                                  -191718;1;0;false;false;;;;;;
                                  -191719;7;1;false;false;127;159;191;;;
                                  -191726;11;0;false;false;63;95;191;;;
                                  -191737;1;0;false;false;;;;;;
                                  -191738;7;0;false;false;63;95;191;;;
                                  -191745;1;0;false;false;;;;;;
                                  -191746;2;0;false;false;63;95;191;;;
                                  -191748;1;0;false;false;;;;;;
                                  -191749;3;0;false;false;63;95;191;;;
                                  -191752;1;0;false;false;;;;;;
                                  -191753;2;0;false;false;63;95;191;;;
                                  -191755;1;0;false;false;;;;;;
                                  -191756;5;0;false;false;63;95;191;;;
                                  -191761;1;0;false;false;;;;;;
                                  -191762;6;0;false;false;63;95;191;;;
                                  -191768;1;0;false;false;;;;;;
                                  -191769;2;0;false;false;63;95;191;;;
                                  -191771;1;0;false;false;;;;;;
                                  -191772;3;0;false;false;63;95;191;;;
                                  -191775;1;0;false;false;;;;;;
                                  -191776;6;0;false;false;63;95;191;;;
                                  -191782;3;0;false;false;;;;;;
                                  -191785;1;0;false;false;63;95;191;;;
                                  -191786;1;0;false;false;;;;;;
                                  -191787;3;0;false;false;63;95;191;;;
                                  -191790;1;0;false;false;;;;;;
                                  -191791;3;0;false;false;63;95;191;;;
                                  -191794;1;0;false;false;;;;;;
                                  -191795;4;0;false;false;63;95;191;;;
                                  -191799;3;0;false;false;;;;;;
                                  -191802;2;0;false;false;63;95;191;;;
                                  -191804;2;0;false;false;;;;;;
                                  -191806;4;1;false;false;127;0;85;;;
                                  -191810;1;0;false;false;;;;;;
                                  -191811;19;0;false;false;0;0;0;;;
                                  -191830;1;0;false;false;;;;;;
                                  -191831;6;0;false;false;0;0;0;;;
                                  -191837;1;0;false;false;;;;;;
                                  -191838;7;1;false;false;127;0;85;;;
                                  -191845;1;0;false;false;;;;;;
                                  -191846;12;0;false;false;0;0;0;;;
                                  -191858;1;0;false;false;;;;;;
                                  -191859;1;0;false;false;0;0;0;;;
                                  -191860;3;0;false;false;;;;;;
                                  -191863;10;0;false;false;0;0;0;;;
                                  -191873;1;0;false;false;;;;;;
                                  -191874;1;0;false;false;0;0;0;;;
                                  -191875;1;0;false;false;;;;;;
                                  -191876;4;1;false;false;127;0;85;;;
                                  -191880;1;0;false;false;0;0;0;;;
                                  -191881;3;0;false;false;;;;;;
                                  -191884;27;0;false;false;0;0;0;;;
                                  -191911;1;0;false;false;;;;;;
                                  -191912;7;0;false;false;0;0;0;;;
                                  -191919;3;0;false;false;;;;;;
                                  -191922;2;1;false;false;127;0;85;;;
                                  -191924;1;0;false;false;;;;;;
                                  -191925;12;0;false;false;0;0;0;;;
                                  -191937;1;0;false;false;;;;;;
                                  -191938;1;0;false;false;0;0;0;;;
                                  -191939;4;0;false;false;;;;;;
                                  -191943;15;0;false;false;0;0;0;;;
                                  -191958;1;0;false;false;;;;;;
                                  -191959;15;0;false;false;0;0;0;;;
                                  -191974;1;0;false;false;;;;;;
                                  -191975;1;0;false;false;0;0;0;;;
                                  -191976;1;0;false;false;;;;;;
                                  -191977;4;1;false;false;127;0;85;;;
                                  -191981;1;0;false;false;0;0;0;;;
                                  -191982;4;0;false;false;;;;;;
                                  -191986;3;1;false;false;127;0;85;;;
                                  -191989;1;0;false;false;;;;;;
                                  -191990;14;0;false;false;0;0;0;;;
                                  -192004;1;0;false;false;;;;;;
                                  -192005;1;0;false;false;0;0;0;;;
                                  -192006;1;0;false;false;;;;;;
                                  -192007;9;0;false;false;0;0;0;;;
                                  -192016;1;0;false;false;;;;;;
                                  -192017;1;0;false;false;0;0;0;;;
                                  -192018;1;0;false;false;;;;;;
                                  -192019;12;0;false;false;0;0;0;;;
                                  -192031;4;0;false;false;;;;;;
                                  -192035;2;1;false;false;127;0;85;;;
                                  -192037;1;0;false;false;;;;;;
                                  -192038;29;0;false;false;0;0;0;;;
                                  -192067;1;0;false;false;;;;;;
                                  -192068;1;0;false;false;0;0;0;;;
                                  -192069;5;0;false;false;;;;;;
                                  -192074;15;0;false;false;0;0;0;;;
                                  -192089;1;0;false;false;;;;;;
                                  -192090;1;0;false;false;0;0;0;;;
                                  -192091;1;0;false;false;;;;;;
                                  -192092;3;1;false;false;127;0;85;;;
                                  -192095;1;0;false;false;;;;;;
                                  -192096;32;0;false;false;0;0;0;;;
                                  -192128;5;0;false;false;;;;;;
                                  -192133;21;0;false;false;0;0;0;;;
                                  -192154;1;0;false;false;;;;;;
                                  -192155;1;0;false;false;0;0;0;;;
                                  -192156;1;0;false;false;;;;;;
                                  -192157;12;0;false;false;0;0;0;;;
                                  -192169;5;0;false;false;;;;;;
                                  -192174;19;0;false;false;0;0;0;;;
                                  -192193;1;0;false;false;;;;;;
                                  -192194;1;0;false;false;0;0;0;;;
                                  -192195;1;0;false;false;;;;;;
                                  -192196;11;0;false;false;0;0;0;;;
                                  -192207;1;0;false;false;;;;;;
                                  -192208;1;0;false;false;0;0;0;;;
                                  -192209;1;0;false;false;;;;;;
                                  -192210;20;0;false;false;0;0;0;;;
                                  -192230;5;0;false;false;;;;;;
                                  -192235;20;0;false;false;0;0;0;;;
                                  -192255;1;0;false;false;;;;;;
                                  -192256;1;0;false;false;0;0;0;;;
                                  -192257;1;0;false;false;;;;;;
                                  -192258;33;0;false;false;0;0;0;;;
                                  -192291;1;0;false;false;;;;;;
                                  -192292;16;0;false;false;0;0;0;;;
                                  -192308;4;0;false;false;;;;;;
                                  -192312;1;0;false;false;0;0;0;;;
                                  -192313;4;0;false;false;;;;;;
                                  -192317;2;1;false;false;127;0;85;;;
                                  -192319;1;0;false;false;;;;;;
                                  -192320;13;0;false;false;0;0;0;;;
                                  -192333;1;0;false;false;;;;;;
                                  -192334;1;0;false;false;0;0;0;;;
                                  -192335;5;0;false;false;;;;;;
                                  -192340;69;0;false;false;63;127;95;;;
                                  -192409;3;0;false;false;;;;;;
                                  -192412;2;1;false;false;127;0;85;;;
                                  -192414;1;0;false;false;;;;;;
                                  -192415;20;0;false;false;0;0;0;;;
                                  -192435;1;0;false;false;;;;;;
                                  -192436;2;0;false;false;0;0;0;;;
                                  -192438;1;0;false;false;;;;;;
                                  -192439;2;0;false;false;0;0;0;;;
                                  -192441;1;0;false;false;;;;;;
                                  -192442;1;0;false;false;0;0;0;;;
                                  -192443;6;0;false;false;;;;;;
                                  -192449;3;1;false;false;127;0;85;;;
                                  -192452;1;0;false;false;;;;;;
                                  -192453;9;0;false;false;0;0;0;;;
                                  -192462;1;0;false;false;;;;;;
                                  -192463;1;0;false;false;0;0;0;;;
                                  -192464;1;0;false;false;;;;;;
                                  -192465;37;0;false;false;0;0;0;;;
                                  -192502;6;0;false;false;;;;;;
                                  -192508;3;1;false;false;127;0;85;;;
                                  -192511;1;0;false;false;;;;;;
                                  -192512;10;0;false;false;0;0;0;;;
                                  -192522;1;0;false;false;;;;;;
                                  -192523;1;0;false;false;0;0;0;;;
                                  -192524;1;0;false;false;;;;;;
                                  -192525;35;0;false;false;0;0;0;;;
                                  -192560;6;0;false;false;;;;;;
                                  -192566;6;0;false;false;0;0;0;;;
                                  -192572;1;0;false;false;;;;;;
                                  -192573;8;0;false;false;0;0;0;;;
                                  -192581;1;0;false;false;;;;;;
                                  -192582;1;0;false;false;0;0;0;;;
                                  -192583;1;0;false;false;;;;;;
                                  -192584;27;0;false;false;0;0;0;;;
                                  -192611;6;0;false;false;;;;;;
                                  -192617;10;0;false;false;0;0;0;;;
                                  -192627;1;0;false;false;;;;;;
                                  -192628;6;0;false;false;0;0;0;;;
                                  -192634;1;0;false;false;;;;;;
                                  -192635;1;0;false;false;0;0;0;;;
                                  -192636;1;0;false;false;;;;;;
                                  -192637;32;0;false;false;0;0;0;;;
                                  -192669;1;0;false;false;;;;;;
                                  -192670;12;0;false;false;0;0;0;;;
                                  -192682;6;0;false;false;;;;;;
                                  -192688;3;1;false;false;127;0;85;;;
                                  -192691;1;0;false;false;;;;;;
                                  -192692;10;0;false;false;0;0;0;;;
                                  -192702;1;0;false;false;;;;;;
                                  -192703;1;0;false;false;0;0;0;;;
                                  -192704;1;0;false;false;;;;;;
                                  -192705;27;0;false;false;0;0;0;;;
                                  -192732;1;0;false;false;;;;;;
                                  -192733;1;0;false;false;0;0;0;;;
                                  -192734;1;0;false;false;;;;;;
                                  -192735;12;0;false;false;0;0;0;;;
                                  -192747;6;0;false;false;;;;;;
                                  -192753;3;1;false;false;127;0;85;;;
                                  -192756;1;0;false;false;;;;;;
                                  -192757;12;0;false;false;0;0;0;;;
                                  -192769;1;0;false;false;;;;;;
                                  -192770;1;0;false;false;0;0;0;;;
                                  -192771;1;0;false;false;;;;;;
                                  -192772;35;0;false;false;0;0;0;;;
                                  -192807;6;0;false;false;;;;;;
                                  -192813;2;1;false;false;127;0;85;;;
                                  -192815;1;0;false;false;;;;;;
                                  -192816;10;0;false;false;0;0;0;;;
                                  -192826;1;0;false;false;;;;;;
                                  -192827;2;0;false;false;0;0;0;;;
                                  -192829;1;0;false;false;;;;;;
                                  -192830;13;0;false;false;0;0;0;;;
                                  -192843;1;0;false;false;;;;;;
                                  -192844;1;0;false;false;0;0;0;;;
                                  -192845;7;0;false;false;;;;;;
                                  -192852;35;0;false;false;0;0;0;;;
                                  -192887;7;0;false;false;;;;;;
                                  -192894;10;0;false;false;0;0;0;;;
                                  -192904;1;0;false;false;;;;;;
                                  -192905;1;0;false;false;0;0;0;;;
                                  -192906;1;0;false;false;;;;;;
                                  -192907;38;0;false;false;0;0;0;;;
                                  -192945;7;0;false;false;;;;;;
                                  -192952;8;0;false;false;0;0;0;;;
                                  -192960;1;0;false;false;;;;;;
                                  -192961;1;0;false;false;0;0;0;;;
                                  -192962;1;0;false;false;;;;;;
                                  -192963;30;0;false;false;0;0;0;;;
                                  -192993;7;0;false;false;;;;;;
                                  -193000;6;0;false;false;0;0;0;;;
                                  -193006;1;0;false;false;;;;;;
                                  -193007;1;0;false;false;0;0;0;;;
                                  -193008;1;0;false;false;;;;;;
                                  -193009;32;0;false;false;0;0;0;;;
                                  -193041;1;0;false;false;;;;;;
                                  -193042;12;0;false;false;0;0;0;;;
                                  -193054;6;0;false;false;;;;;;
                                  -193060;1;0;false;false;0;0;0;;;
                                  -193061;6;0;false;false;;;;;;
                                  -193067;3;1;false;false;127;0;85;;;
                                  -193070;1;0;false;false;;;;;;
                                  -193071;8;0;false;false;0;0;0;;;
                                  -193079;1;0;false;false;;;;;;
                                  -193080;1;0;false;false;0;0;0;;;
                                  -193081;1;0;false;false;;;;;;
                                  -193082;25;0;false;false;0;0;0;;;
                                  -193107;1;0;false;false;;;;;;
                                  -193108;1;0;false;false;0;0;0;;;
                                  -193109;1;0;false;false;;;;;;
                                  -193110;12;0;false;false;0;0;0;;;
                                  -193122;6;0;false;false;;;;;;
                                  -193128;35;0;false;false;0;0;0;;;
                                  -193163;6;0;false;false;;;;;;
                                  -193169;9;0;false;false;0;0;0;;;
                                  -193178;1;0;false;false;;;;;;
                                  -193179;1;0;false;false;0;0;0;;;
                                  -193180;1;0;false;false;;;;;;
                                  -193181;10;0;false;false;0;0;0;;;
                                  -193191;1;0;false;false;;;;;;
                                  -193192;2;0;false;false;0;0;0;;;
                                  -193194;1;0;false;false;;;;;;
                                  -193195;9;0;false;false;0;0;0;;;
                                  -193204;5;0;false;false;;;;;;
                                  -193209;1;0;false;false;0;0;0;;;
                                  -193210;4;0;false;false;;;;;;
                                  -193214;1;0;false;false;0;0;0;;;
                                  -193215;4;0;false;false;;;;;;
                                  -193219;37;0;false;false;0;0;0;;;
                                  -193256;1;0;false;false;;;;;;
                                  -193257;15;0;false;false;0;0;0;;;
                                  -193272;1;0;false;false;;;;;;
                                  -193273;12;0;false;false;0;0;0;;;
                                  -193285;4;0;false;false;;;;;;
                                  -193289;62;0;false;false;63;127;95;;;
                                  -193351;2;0;false;false;;;;;;
                                  -193353;18;0;false;false;63;127;95;;;
                                  -193371;2;0;false;false;;;;;;
                                  -193373;2;1;false;false;127;0;85;;;
                                  -193375;1;0;false;false;;;;;;
                                  -193376;13;0;false;false;0;0;0;;;
                                  -193389;1;0;false;false;;;;;;
                                  -193390;1;0;false;false;0;0;0;;;
                                  -193391;5;0;false;false;;;;;;
                                  -193396;52;0;false;false;63;127;95;;;
                                  -193448;3;0;false;false;;;;;;
                                  -193451;32;0;false;false;0;0;0;;;
                                  -193483;1;0;false;false;;;;;;
                                  -193484;1;0;false;false;0;0;0;;;
                                  -193485;1;0;false;false;;;;;;
                                  -193486;20;0;false;false;0;0;0;;;
                                  -193506;1;0;false;false;;;;;;
                                  -193507;2;0;false;false;0;0;0;;;
                                  -193509;1;0;false;false;;;;;;
                                  -193510;4;1;false;false;127;0;85;;;
                                  -193514;2;0;false;false;0;0;0;;;
                                  -193516;5;0;false;false;;;;;;
                                  -193521;12;0;false;false;0;0;0;;;
                                  -193533;4;0;false;false;;;;;;
                                  -193537;1;0;false;false;0;0;0;;;
                                  -193538;4;0;false;false;;;;;;
                                  -193542;23;0;false;false;0;0;0;;;
                                  -193565;4;0;false;false;;;;;;
                                  -193569;2;1;false;false;127;0;85;;;
                                  -193571;1;0;false;false;;;;;;
                                  -193572;29;0;false;false;0;0;0;;;
                                  -193601;1;0;false;false;;;;;;
                                  -193602;1;0;false;false;0;0;0;;;
                                  -193603;5;0;false;false;;;;;;
                                  -193608;31;0;false;false;0;0;0;;;
                                  -193639;1;0;false;false;;;;;;
                                  -193640;17;0;false;false;0;0;0;;;
                                  -193657;4;0;false;false;;;;;;
                                  -193661;1;0;false;false;0;0;0;;;
                                  -193662;3;0;false;false;;;;;;
                                  -193665;1;0;false;false;0;0;0;;;
                                  -193666;2;0;false;false;;;;;;
                                  -193668;1;0;false;false;0;0;0;;;
                                  -193669;2;0;false;false;;;;;;
                                  -193671;3;0;false;false;63;95;191;;;
                                  -193674;4;0;false;false;;;;;;
                                  -193678;1;0;false;false;63;95;191;;;
                                  -193679;1;0;false;false;;;;;;
                                  -193680;8;0;false;false;63;95;191;;;
                                  -193688;1;0;false;false;;;;;;
                                  -193689;3;0;false;false;63;95;191;;;
                                  -193692;1;0;false;false;;;;;;
                                  -193693;9;0;false;false;63;95;191;;;
                                  -193702;1;0;false;false;;;;;;
                                  -193703;4;0;false;false;63;95;191;;;
                                  -193707;1;0;false;false;;;;;;
                                  -193708;3;0;false;false;63;95;191;;;
                                  -193711;1;0;false;false;;;;;;
                                  -193712;4;0;false;false;63;95;191;;;
                                  -193716;1;0;false;false;;;;;;
                                  -193717;2;0;false;false;63;95;191;;;
                                  -193719;1;0;false;false;;;;;;
                                  -193720;3;0;false;false;63;95;191;;;
                                  -193723;1;0;false;false;;;;;;
                                  -193724;6;0;false;false;127;127;159;;;
                                  -193730;13;0;false;false;63;95;191;;;
                                  -193743;7;0;false;false;127;127;159;;;
                                  -193750;5;0;false;false;;;;;;
                                  -193755;1;0;false;false;63;95;191;;;
                                  -193756;1;0;false;false;;;;;;
                                  -193757;9;0;false;false;63;95;191;;;
                                  -193766;2;0;false;false;;;;;;
                                  -193768;3;0;false;false;63;95;191;;;
                                  -193771;1;0;false;false;;;;;;
                                  -193772;2;0;false;false;63;95;191;;;
                                  -193774;1;0;false;false;;;;;;
                                  -193775;5;0;false;false;63;95;191;;;
                                  -193780;1;0;false;false;;;;;;
                                  -193781;2;0;false;false;63;95;191;;;
                                  -193783;1;0;false;false;;;;;;
                                  -193784;2;0;false;false;63;95;191;;;
                                  -193786;1;0;false;false;;;;;;
                                  -193787;10;0;false;false;63;95;191;;;
                                  -193797;2;0;false;false;;;;;;
                                  -193799;7;0;false;false;63;95;191;;;
                                  -193806;1;0;false;false;;;;;;
                                  -193807;3;0;false;false;63;95;191;;;
                                  -193810;1;0;false;false;;;;;;
                                  -193811;4;0;false;false;63;95;191;;;
                                  -193815;1;0;false;false;;;;;;
                                  -193816;2;0;false;false;63;95;191;;;
                                  -193818;1;0;false;false;;;;;;
                                  -193819;3;0;false;false;63;95;191;;;
                                  -193822;1;0;false;false;;;;;;
                                  -193823;7;0;false;false;63;95;191;;;
                                  -193830;4;0;false;false;;;;;;
                                  -193834;1;0;false;false;63;95;191;;;
                                  -193835;1;0;false;false;;;;;;
                                  -193836;5;0;false;false;63;95;191;;;
                                  -193841;1;0;false;false;;;;;;
                                  -193842;7;0;false;false;63;95;191;;;
                                  -193849;3;0;false;false;;;;;;
                                  -193852;2;0;false;false;63;95;191;;;
                                  -193854;1;0;false;false;;;;;;
                                  -193855;3;0;false;false;63;95;191;;;
                                  -193858;1;0;false;false;;;;;;
                                  -193859;6;0;false;false;63;95;191;;;
                                  -193865;1;0;false;false;;;;;;
                                  -193866;3;0;false;false;63;95;191;;;
                                  -193869;1;0;false;false;;;;;;
                                  -193870;3;0;false;false;63;95;191;;;
                                  -193873;1;0;false;false;;;;;;
                                  -193874;10;0;false;false;63;95;191;;;
                                  -193884;1;0;false;false;;;;;;
                                  -193885;5;0;false;false;63;95;191;;;
                                  -193890;1;0;false;false;;;;;;
                                  -193891;3;0;false;false;63;95;191;;;
                                  -193894;1;0;false;false;;;;;;
                                  -193895;3;0;false;false;63;95;191;;;
                                  -193898;4;0;false;false;;;;;;
                                  -193902;1;0;false;false;63;95;191;;;
                                  -193903;1;0;false;false;;;;;;
                                  -193904;9;0;false;false;63;95;191;;;
                                  -193913;1;0;false;false;;;;;;
                                  -193914;4;0;false;false;63;95;191;;;
                                  -193918;1;0;false;false;;;;;;
                                  -193919;8;0;false;false;63;95;191;;;
                                  -193927;1;0;false;false;;;;;;
                                  -193928;4;0;false;false;63;95;191;;;
                                  -193932;1;0;false;false;;;;;;
                                  -193933;4;0;false;false;63;95;191;;;
                                  -193937;1;0;false;false;;;;;;
                                  -193938;3;0;false;false;63;95;191;;;
                                  -193941;1;0;false;false;;;;;;
                                  -193942;5;0;false;false;63;95;191;;;
                                  -193947;1;0;false;false;;;;;;
                                  -193948;4;0;false;false;63;95;191;;;
                                  -193952;1;0;false;false;;;;;;
                                  -193953;3;0;false;false;63;95;191;;;
                                  -193956;1;0;false;false;;;;;;
                                  -193957;5;0;false;false;63;95;191;;;
                                  -193962;1;0;false;false;;;;;;
                                  -193963;4;0;false;false;63;95;191;;;
                                  -193967;1;0;false;false;;;;;;
                                  -193968;7;0;false;false;63;95;191;;;
                                  -193975;3;0;false;false;;;;;;
                                  -193978;1;0;false;false;63;95;191;;;
                                  -193979;1;0;false;false;;;;;;
                                  -193980;4;0;false;false;63;95;191;;;
                                  -193984;1;0;false;false;;;;;;
                                  -193985;10;0;false;false;63;95;191;;;
                                  -193995;1;0;false;false;;;;;;
                                  -193996;2;0;false;false;63;95;191;;;
                                  -193998;2;0;false;false;;;;;;
                                  -194000;8;0;false;false;63;95;191;;;
                                  -194008;1;0;false;false;;;;;;
                                  -194009;2;0;false;false;63;95;191;;;
                                  -194011;1;0;false;false;;;;;;
                                  -194012;3;0;false;false;63;95;191;;;
                                  -194015;1;0;false;false;;;;;;
                                  -194016;7;0;false;false;63;95;191;;;
                                  -194023;3;0;false;false;;;;;;
                                  -194026;1;0;false;false;63;95;191;;;
                                  -194027;1;0;false;false;;;;;;
                                  -194028;3;0;false;false;127;127;159;;;
                                  -194031;3;0;false;false;;;;;;
                                  -194034;1;0;false;false;63;95;191;;;
                                  -194035;3;0;false;false;;;;;;
                                  -194038;1;0;false;false;63;95;191;;;
                                  -194039;1;0;false;false;;;;;;
                                  -194040;11;1;false;false;127;159;191;;;
                                  -194051;12;0;false;false;63;95;191;;;
                                  -194063;1;0;false;false;;;;;;
                                  -194064;4;0;false;false;127;127;159;;;
                                  -194068;3;0;false;false;;;;;;
                                  -194071;1;0;false;false;63;95;191;;;
                                  -194072;4;0;false;false;;;;;;
                                  -194076;4;0;false;false;127;127;159;;;
                                  -194080;21;0;false;false;63;95;191;;;
                                  -194101;1;0;false;false;;;;;;
                                  -194102;1;0;false;false;127;127;159;;;
                                  -194103;1;0;false;false;;;;;;
                                  -194104;2;0;false;false;63;95;191;;;
                                  -194106;1;0;false;false;;;;;;
                                  -194107;3;0;false;false;63;95;191;;;
                                  -194110;1;0;false;false;;;;;;
                                  -194111;8;0;false;false;63;95;191;;;
                                  -194119;1;0;false;false;;;;;;
                                  -194120;3;0;false;false;63;95;191;;;
                                  -194123;1;0;false;false;;;;;;
                                  -194124;4;0;false;false;63;95;191;;;
                                  -194128;1;0;false;false;;;;;;
                                  -194129;8;0;false;false;63;95;191;;;
                                  -194137;5;0;false;false;127;127;159;;;
                                  -194142;3;0;false;false;;;;;;
                                  -194145;1;0;false;false;63;95;191;;;
                                  -194146;4;0;false;false;;;;;;
                                  -194150;4;0;false;false;127;127;159;;;
                                  -194154;27;0;false;false;63;95;191;;;
                                  -194181;1;0;false;false;;;;;;
                                  -194182;1;0;false;false;127;127;159;;;
                                  -194183;1;0;false;false;;;;;;
                                  -194184;2;0;false;false;63;95;191;;;
                                  -194186;1;0;false;false;;;;;;
                                  -194187;3;0;false;false;63;95;191;;;
                                  -194190;1;0;false;false;;;;;;
                                  -194191;6;0;false;false;63;95;191;;;
                                  -194197;1;0;false;false;;;;;;
                                  -194198;4;0;false;false;63;95;191;;;
                                  -194202;1;0;false;false;;;;;;
                                  -194203;3;0;false;false;63;95;191;;;
                                  -194206;1;0;false;false;;;;;;
                                  -194207;6;0;false;false;63;95;191;;;
                                  -194213;1;0;false;false;;;;;;
                                  -194214;4;0;false;false;63;95;191;;;
                                  -194218;1;0;false;false;;;;;;
                                  -194219;7;0;false;false;63;95;191;;;
                                  -194226;1;0;false;false;;;;;;
                                  -194227;3;0;false;false;63;95;191;;;
                                  -194230;1;0;false;false;;;;;;
                                  -194231;8;0;false;false;63;95;191;;;
                                  -194239;5;0;false;false;127;127;159;;;
                                  -194244;3;0;false;false;;;;;;
                                  -194247;1;0;false;false;63;95;191;;;
                                  -194248;1;0;false;false;;;;;;
                                  -194249;5;0;false;false;127;127;159;;;
                                  -194254;3;0;false;false;;;;;;
                                  -194257;2;0;false;false;63;95;191;;;
                                  -194259;2;0;false;false;;;;;;
                                  -194261;6;1;false;false;127;0;85;;;
                                  -194267;1;0;false;false;;;;;;
                                  -194268;4;1;false;false;127;0;85;;;
                                  -194272;1;0;false;false;;;;;;
                                  -194273;8;0;false;false;0;0;0;;;
                                  -194281;3;0;false;false;;;;;;
                                  -194284;14;0;false;false;0;0;0;;;
                                  -194298;4;0;false;false;;;;;;
                                  -194302;6;0;false;false;0;0;0;;;
                                  -194308;1;0;false;false;;;;;;
                                  -194309;5;0;false;false;0;0;0;;;
                                  -194314;3;0;false;false;;;;;;
                                  -194317;4;0;false;false;0;0;0;;;
                                  -194321;1;0;false;false;;;;;;
                                  -194322;1;0;false;false;0;0;0;;;
                                  -194323;1;0;false;false;;;;;;
                                  -194324;8;0;false;false;0;0;0;;;
                                  -194332;1;0;false;false;;;;;;
                                  -194333;35;0;false;false;0;0;0;;;
                                  -194368;3;0;false;false;;;;;;
                                  -194371;2;1;false;false;127;0;85;;;
                                  -194373;1;0;false;false;;;;;;
                                  -194374;5;0;false;false;0;0;0;;;
                                  -194379;1;0;false;false;;;;;;
                                  -194380;2;0;false;false;0;0;0;;;
                                  -194382;1;0;false;false;;;;;;
                                  -194383;4;1;false;false;127;0;85;;;
                                  -194387;1;0;false;false;;;;;;
                                  -194388;2;0;false;false;0;0;0;;;
                                  -194390;1;0;false;false;;;;;;
                                  -194391;13;0;false;false;0;0;0;;;
                                  -194404;1;0;false;false;;;;;;
                                  -194405;1;0;false;false;0;0;0;;;
                                  -194406;1;0;false;false;;;;;;
                                  -194407;2;0;false;false;0;0;0;;;
                                  -194409;1;0;false;false;;;;;;
                                  -194410;1;0;false;false;0;0;0;;;
                                  -194411;4;0;false;false;;;;;;
                                  -194415;5;0;false;false;0;0;0;;;
                                  -194420;1;0;false;false;;;;;;
                                  -194421;5;0;false;false;0;0;0;;;
                                  -194426;1;0;false;false;;;;;;
                                  -194427;1;0;false;false;0;0;0;;;
                                  -194428;1;0;false;false;;;;;;
                                  -194429;3;1;false;false;127;0;85;;;
                                  -194432;1;0;false;false;;;;;;
                                  -194433;8;0;false;false;0;0;0;;;
                                  -194441;4;0;false;false;;;;;;
                                  -194445;11;0;false;false;0;0;0;;;
                                  -194456;1;0;false;false;;;;;;
                                  -194457;1;0;false;false;0;0;0;;;
                                  -194458;1;0;false;false;;;;;;
                                  -194459;12;0;false;false;0;0;0;;;
                                  -194471;4;0;false;false;;;;;;
                                  -194475;9;0;false;false;0;0;0;;;
                                  -194484;1;0;false;false;;;;;;
                                  -194485;1;0;false;false;0;0;0;;;
                                  -194486;1;0;false;false;;;;;;
                                  -194487;12;0;false;false;0;0;0;;;
                                  -194499;4;0;false;false;;;;;;
                                  -194503;10;0;false;false;0;0;0;;;
                                  -194513;1;0;false;false;;;;;;
                                  -194514;1;0;false;false;0;0;0;;;
                                  -194515;1;0;false;false;;;;;;
                                  -194516;28;0;false;false;0;0;0;;;
                                  -194544;4;0;false;false;;;;;;
                                  -194548;20;0;false;false;0;0;0;;;
                                  -194568;3;0;false;false;;;;;;
                                  -194571;1;0;false;false;0;0;0;;;
                                  -194572;2;0;false;false;;;;;;
                                  -194574;1;0;false;false;0;0;0;;;
                                  -194575;2;0;false;false;;;;;;
                                  -194577;3;0;false;false;63;95;191;;;
                                  -194580;3;0;false;false;;;;;;
                                  -194583;1;0;false;false;63;95;191;;;
                                  -194584;1;0;false;false;;;;;;
                                  -194585;6;0;false;false;63;95;191;;;
                                  -194591;1;0;false;false;;;;;;
                                  -194592;3;0;false;false;63;95;191;;;
                                  -194595;1;0;false;false;;;;;;
                                  -194596;9;0;false;false;63;95;191;;;
                                  -194605;1;0;false;false;;;;;;
                                  -194606;5;0;false;false;63;95;191;;;
                                  -194611;2;0;false;false;;;;;;
                                  -194613;6;0;false;false;63;95;191;;;
                                  -194619;1;0;false;false;;;;;;
                                  -194620;3;0;false;false;63;95;191;;;
                                  -194623;1;0;false;false;;;;;;
                                  -194624;2;0;false;false;63;95;191;;;
                                  -194626;1;0;false;false;;;;;;
                                  -194627;3;0;false;false;63;95;191;;;
                                  -194630;1;0;false;false;;;;;;
                                  -194631;3;0;false;false;63;95;191;;;
                                  -194634;1;0;false;false;;;;;;
                                  -194635;6;0;false;false;63;95;191;;;
                                  -194641;1;0;false;false;;;;;;
                                  -194642;2;0;false;false;63;95;191;;;
                                  -194644;1;0;false;false;;;;;;
                                  -194645;7;0;false;false;63;95;191;;;
                                  -194652;3;0;false;false;;;;;;
                                  -194655;1;0;false;false;63;95;191;;;
                                  -194656;1;0;false;false;;;;;;
                                  -194657;6;0;false;false;63;95;191;;;
                                  -194663;1;0;false;false;;;;;;
                                  -194664;8;0;false;false;63;95;191;;;
                                  -194672;3;0;false;false;;;;;;
                                  -194675;1;0;false;false;63;95;191;;;
                                  -194676;1;0;false;false;;;;;;
                                  -194677;3;0;false;false;127;127;159;;;
                                  -194680;3;0;false;false;;;;;;
                                  -194683;1;0;false;false;63;95;191;;;
                                  -194684;3;0;false;false;;;;;;
                                  -194687;1;0;false;false;63;95;191;;;
                                  -194688;1;0;false;false;;;;;;
                                  -194689;7;1;false;false;127;159;191;;;
                                  -194696;2;0;false;false;63;95;191;;;
                                  -194698;1;0;false;false;;;;;;
                                  -194699;2;0;false;false;63;95;191;;;
                                  -194701;1;0;false;false;;;;;;
                                  -194702;2;0;false;false;63;95;191;;;
                                  -194704;1;0;false;false;;;;;;
                                  -194705;6;0;false;false;63;95;191;;;
                                  -194711;1;0;false;false;;;;;;
                                  -194712;2;0;false;false;63;95;191;;;
                                  -194714;4;0;false;false;;;;;;
                                  -194718;1;0;false;false;63;95;191;;;
                                  -194719;1;0;false;false;;;;;;
                                  -194720;7;1;false;false;127;159;191;;;
                                  -194727;9;0;false;false;63;95;191;;;
                                  -194736;1;0;false;false;;;;;;
                                  -194737;5;0;false;false;63;95;191;;;
                                  -194742;1;0;false;false;;;;;;
                                  -194743;4;0;false;false;63;95;191;;;
                                  -194747;1;0;false;false;;;;;;
                                  -194748;2;0;false;false;63;95;191;;;
                                  -194750;1;0;false;false;;;;;;
                                  -194751;6;0;false;false;63;95;191;;;
                                  -194757;3;0;false;false;;;;;;
                                  -194760;1;0;false;false;63;95;191;;;
                                  -194761;1;0;false;false;;;;;;
                                  -194762;7;1;false;false;127;159;191;;;
                                  -194769;6;0;false;false;63;95;191;;;
                                  -194775;1;0;false;false;;;;;;
                                  -194776;1;0;false;false;63;95;191;;;
                                  -194777;1;0;false;false;;;;;;
                                  -194778;5;0;false;false;63;95;191;;;
                                  -194783;1;0;false;false;;;;;;
                                  -194784;8;0;false;false;63;95;191;;;
                                  -194792;1;0;false;false;;;;;;
                                  -194793;2;0;false;false;63;95;191;;;
                                  -194795;1;0;false;false;;;;;;
                                  -194796;5;0;false;false;63;95;191;;;
                                  -194801;1;0;false;false;;;;;;
                                  -194802;9;0;false;false;63;95;191;;;
                                  -194811;1;0;false;false;;;;;;
                                  -194812;2;0;false;false;63;95;191;;;
                                  -194814;3;0;false;false;;;;;;
                                  -194817;1;0;false;false;63;95;191;;;
                                  -194818;1;0;false;false;;;;;;
                                  -194819;7;1;false;false;127;159;191;;;
                                  -194826;12;0;false;false;63;95;191;;;
                                  -194838;1;0;false;false;;;;;;
                                  -194839;12;0;false;false;63;95;191;;;
                                  -194851;1;0;false;false;;;;;;
                                  -194852;6;0;false;false;63;95;191;;;
                                  -194858;1;0;false;false;;;;;;
                                  -194859;4;0;false;false;63;95;191;;;
                                  -194863;1;0;false;false;;;;;;
                                  -194864;4;0;false;false;63;95;191;;;
                                  -194868;1;0;false;false;;;;;;
                                  -194869;5;0;false;false;63;95;191;;;
                                  -194874;1;0;false;false;;;;;;
                                  -194875;2;0;false;false;63;95;191;;;
                                  -194877;1;0;false;false;;;;;;
                                  -194878;2;0;false;false;63;95;191;;;
                                  -194880;1;0;false;false;;;;;;
                                  -194881;6;0;false;false;63;95;191;;;
                                  -194887;1;0;false;false;;;;;;
                                  -194888;4;0;false;false;63;95;191;;;
                                  -194892;1;0;false;false;;;;;;
                                  -194893;5;0;false;false;63;95;191;;;
                                  -194898;3;0;false;false;;;;;;
                                  -194901;2;0;false;false;63;95;191;;;
                                  -194903;2;0;false;false;;;;;;
                                  -194905;4;1;false;false;127;0;85;;;
                                  -194909;1;0;false;false;;;;;;
                                  -194910;15;0;false;false;0;0;0;;;
                                  -194925;1;0;false;false;;;;;;
                                  -194926;3;0;false;false;0;0;0;;;
                                  -194929;3;1;false;false;127;0;85;;;
                                  -194932;1;0;false;false;;;;;;
                                  -194933;10;0;false;false;0;0;0;;;
                                  -194943;3;1;false;false;127;0;85;;;
                                  -194946;1;0;false;false;;;;;;
                                  -194947;7;0;false;false;0;0;0;;;
                                  -194954;1;0;false;false;;;;;;
                                  -194955;3;1;false;false;127;0;85;;;
                                  -194958;1;0;false;false;;;;;;
                                  -194959;13;0;false;false;0;0;0;;;
                                  -194972;1;0;false;false;;;;;;
                                  -194973;1;0;false;false;0;0;0;;;
                                  -194974;3;0;false;false;;;;;;
                                  -194977;9;0;false;false;0;0;0;;;
                                  -194986;1;0;false;false;;;;;;
                                  -194987;10;0;false;false;0;0;0;;;
                                  -194997;1;0;false;false;;;;;;
                                  -194998;1;0;false;false;0;0;0;;;
                                  -194999;1;0;false;false;;;;;;
                                  -195000;16;0;false;false;0;0;0;;;
                                  -195016;3;0;false;false;;;;;;
                                  -195019;5;0;false;false;0;0;0;;;
                                  -195024;1;0;false;false;;;;;;
                                  -195025;10;0;false;false;0;0;0;;;
                                  -195035;1;0;false;false;;;;;;
                                  -195036;1;0;false;false;0;0;0;;;
                                  -195037;1;0;false;false;;;;;;
                                  -195038;16;0;false;false;0;0;0;;;
                                  -195054;6;0;false;false;;;;;;
                                  -195060;67;0;false;false;63;127;95;;;
                                  -195127;1;0;false;false;;;;;;
                                  -195128;39;0;false;false;63;127;95;;;
                                  -195167;1;0;false;false;;;;;;
                                  -195168;2;1;false;false;127;0;85;;;
                                  -195170;1;0;false;false;;;;;;
                                  -195171;17;0;false;false;0;0;0;;;
                                  -195188;1;0;false;false;;;;;;
                                  -195189;2;0;false;false;0;0;0;;;
                                  -195191;1;0;false;false;;;;;;
                                  -195192;2;0;false;false;0;0;0;;;
                                  -195194;1;0;false;false;;;;;;
                                  -195195;1;0;false;false;0;0;0;;;
                                  -195196;4;0;false;false;;;;;;
                                  -195200;6;1;false;false;127;0;85;;;
                                  -195206;1;0;false;false;0;0;0;;;
                                  -195207;3;0;false;false;;;;;;
                                  -195210;1;0;false;false;0;0;0;;;
                                  -195211;3;0;false;false;;;;;;
                                  -195214;2;1;false;false;127;0;85;;;
                                  -195216;1;0;false;false;;;;;;
                                  -195217;13;0;false;false;0;0;0;;;
                                  -195230;1;0;false;false;;;;;;
                                  -195231;1;0;false;false;0;0;0;;;
                                  -195232;1;0;false;false;;;;;;
                                  -195233;2;0;false;false;0;0;0;;;
                                  -195235;1;0;false;false;;;;;;
                                  -195236;1;0;false;false;0;0;0;;;
                                  -195237;4;0;false;false;;;;;;
                                  -195241;71;0;false;false;63;127;95;;;
                                  -195312;2;0;false;false;;;;;;
                                  -195314;5;0;false;false;0;0;0;;;
                                  -195319;1;0;false;false;;;;;;
                                  -195320;10;0;false;false;0;0;0;;;
                                  -195330;1;0;false;false;;;;;;
                                  -195331;1;0;false;false;0;0;0;;;
                                  -195332;1;0;false;false;;;;;;
                                  -195333;16;0;false;false;0;0;0;;;
                                  -195349;4;0;false;false;;;;;;
                                  -195353;3;1;false;false;127;0;85;;;
                                  -195356;1;0;false;false;;;;;;
                                  -195357;9;0;false;false;0;0;0;;;
                                  -195366;1;0;false;false;;;;;;
                                  -195367;1;0;false;false;0;0;0;;;
                                  -195368;1;0;false;false;;;;;;
                                  -195369;23;0;false;false;0;0;0;;;
                                  -195392;4;0;false;false;;;;;;
                                  -195396;3;1;false;false;127;0;85;;;
                                  -195399;1;0;false;false;;;;;;
                                  -195400;7;0;false;false;0;0;0;;;
                                  -195407;1;0;false;false;;;;;;
                                  -195408;1;0;false;false;0;0;0;;;
                                  -195409;1;0;false;false;;;;;;
                                  -195410;12;0;false;false;0;0;0;;;
                                  -195422;1;0;false;false;;;;;;
                                  -195423;1;0;false;false;0;0;0;;;
                                  -195424;1;0;false;false;;;;;;
                                  -195425;17;0;false;false;0;0;0;;;
                                  -195442;1;0;false;false;;;;;;
                                  -195443;1;0;false;false;0;0;0;;;
                                  -195444;1;0;false;false;;;;;;
                                  -195445;18;0;false;false;0;0;0;;;
                                  -195463;4;0;false;false;;;;;;
                                  -195467;2;1;false;false;127;0;85;;;
                                  -195469;1;0;false;false;;;;;;
                                  -195470;16;0;false;false;0;0;0;;;
                                  -195486;1;0;false;false;;;;;;
                                  -195487;1;0;false;false;0;0;0;;;
                                  -195488;5;0;false;false;;;;;;
                                  -195493;9;0;false;false;0;0;0;;;
                                  -195502;1;0;false;false;;;;;;
                                  -195503;1;0;false;false;0;0;0;;;
                                  -195504;1;0;false;false;;;;;;
                                  -195505;2;0;false;false;0;0;0;;;
                                  -195507;4;0;false;false;;;;;;
                                  -195511;1;0;false;false;0;0;0;;;
                                  -195512;4;0;false;false;;;;;;
                                  -195516;3;1;false;false;127;0;85;;;
                                  -195519;1;0;false;false;;;;;;
                                  -195520;7;0;false;false;0;0;0;;;
                                  -195527;1;0;false;false;;;;;;
                                  -195528;12;0;false;false;0;0;0;;;
                                  -195540;4;0;false;false;;;;;;
                                  -195544;5;0;false;false;0;0;0;;;
                                  -195549;1;0;false;false;;;;;;
                                  -195550;11;0;false;false;0;0;0;;;
                                  -195561;4;0;false;false;;;;;;
                                  -195565;2;0;false;false;0;0;0;;;
                                  -195567;1;0;false;false;;;;;;
                                  -195568;7;0;false;false;0;0;0;;;
                                  -195575;4;0;false;false;;;;;;
                                  -195579;7;1;false;false;127;0;85;;;
                                  -195586;1;0;false;false;;;;;;
                                  -195587;12;0;false;false;0;0;0;;;
                                  -195599;1;0;false;false;;;;;;
                                  -195600;1;0;false;false;0;0;0;;;
                                  -195601;1;0;false;false;;;;;;
                                  -195602;13;0;false;false;0;0;0;;;
                                  -195615;1;0;false;false;;;;;;
                                  -195616;2;0;false;false;0;0;0;;;
                                  -195618;1;0;false;false;;;;;;
                                  -195619;17;0;false;false;0;0;0;;;
                                  -195636;1;0;false;false;;;;;;
                                  -195637;2;0;false;false;0;0;0;;;
                                  -195639;1;0;false;false;;;;;;
                                  -195640;9;0;false;false;0;0;0;;;
                                  -195649;4;0;false;false;;;;;;
                                  -195653;17;0;false;false;0;0;0;;;
                                  -195670;1;0;false;false;;;;;;
                                  -195671;1;0;false;false;0;0;0;;;
                                  -195672;1;0;false;false;;;;;;
                                  -195673;9;0;false;false;0;0;0;;;
                                  -195682;4;0;false;false;;;;;;
                                  -195686;2;1;false;false;127;0;85;;;
                                  -195688;1;0;false;false;;;;;;
                                  -195689;14;0;false;false;0;0;0;;;
                                  -195703;1;0;false;false;;;;;;
                                  -195704;1;0;false;false;0;0;0;;;
                                  -195705;5;0;false;false;;;;;;
                                  -195710;6;0;false;false;0;0;0;;;
                                  -195716;1;0;false;false;;;;;;
                                  -195717;1;0;false;false;0;0;0;;;
                                  -195718;1;0;false;false;;;;;;
                                  -195719;2;0;false;false;0;0;0;;;
                                  -195721;5;0;false;false;;;;;;
                                  -195726;11;0;false;false;0;0;0;;;
                                  -195737;1;0;false;false;;;;;;
                                  -195738;1;0;false;false;0;0;0;;;
                                  -195739;1;0;false;false;;;;;;
                                  -195740;13;0;false;false;0;0;0;;;
                                  -195753;5;0;false;false;;;;;;
                                  -195758;10;0;false;false;0;0;0;;;
                                  -195768;1;0;false;false;;;;;;
                                  -195769;1;0;false;false;0;0;0;;;
                                  -195770;1;0;false;false;;;;;;
                                  -195771;3;1;false;false;127;0;85;;;
                                  -195774;1;0;false;false;;;;;;
                                  -195775;19;0;false;false;0;0;0;;;
                                  -195794;1;0;false;false;;;;;;
                                  -195795;17;0;false;false;0;0;0;;;
                                  -195812;1;0;false;false;;;;;;
                                  -195813;14;0;false;false;0;0;0;;;
                                  -195827;5;0;false;false;;;;;;
                                  -195832;6;0;false;false;0;0;0;;;
                                  -195838;1;0;false;false;;;;;;
                                  -195839;1;0;false;false;0;0;0;;;
                                  -195840;1;0;false;false;;;;;;
                                  -195841;3;1;false;false;127;0;85;;;
                                  -195844;1;0;false;false;;;;;;
                                  -195845;14;0;false;false;0;0;0;;;
                                  -195859;1;0;false;false;;;;;;
                                  -195860;9;0;false;false;0;0;0;;;
                                  -195869;5;0;false;false;;;;;;
                                  -195874;26;0;false;false;0;0;0;;;
                                  -195900;5;0;false;false;;;;;;
                                  -195905;33;0;false;false;0;0;0;;;
                                  -195938;5;0;false;false;;;;;;
                                  -195943;33;0;false;false;0;0;0;;;
                                  -195976;4;0;false;false;;;;;;
                                  -195980;1;0;false;false;0;0;0;;;
                                  -195981;1;0;false;false;;;;;;
                                  -195982;4;1;false;false;127;0;85;;;
                                  -195986;1;0;false;false;;;;;;
                                  -195987;1;0;false;false;0;0;0;;;
                                  -195988;5;0;false;false;;;;;;
                                  -195993;6;0;false;false;0;0;0;;;
                                  -195999;1;0;false;false;;;;;;
                                  -196000;1;0;false;false;0;0;0;;;
                                  -196001;1;0;false;false;;;;;;
                                  -196002;7;0;false;false;0;0;0;;;
                                  -196009;5;0;false;false;;;;;;
                                  -196014;11;0;false;false;0;0;0;;;
                                  -196025;1;0;false;false;;;;;;
                                  -196026;1;0;false;false;0;0;0;;;
                                  -196027;1;0;false;false;;;;;;
                                  -196028;6;0;false;false;0;0;0;;;
                                  -196034;1;0;false;false;;;;;;
                                  -196035;1;0;false;false;0;0;0;;;
                                  -196036;1;0;false;false;;;;;;
                                  -196037;13;0;false;false;0;0;0;;;
                                  -196050;5;0;false;false;;;;;;
                                  -196055;10;0;false;false;0;0;0;;;
                                  -196065;1;0;false;false;;;;;;
                                  -196066;1;0;false;false;0;0;0;;;
                                  -196067;1;0;false;false;;;;;;
                                  -196068;4;1;false;false;127;0;85;;;
                                  -196072;1;0;false;false;0;0;0;;;
                                  -196073;5;0;false;false;;;;;;
                                  -196078;6;0;false;false;0;0;0;;;
                                  -196084;1;0;false;false;;;;;;
                                  -196085;1;0;false;false;0;0;0;;;
                                  -196086;1;0;false;false;;;;;;
                                  -196087;3;0;false;false;0;0;0;;;
                                  -196090;4;0;false;false;;;;;;
                                  -196094;1;0;false;false;0;0;0;;;
                                  -196095;6;0;false;false;;;;;;
                                  -196101;3;1;false;false;127;0;85;;;
                                  -196104;1;0;false;false;;;;;;
                                  -196105;1;0;false;false;0;0;0;;;
                                  -196106;3;1;false;false;127;0;85;;;
                                  -196109;1;0;false;false;;;;;;
                                  -196110;1;0;false;false;0;0;0;;;
                                  -196111;1;0;false;false;;;;;;
                                  -196112;1;0;false;false;0;0;0;;;
                                  -196113;1;0;false;false;;;;;;
                                  -196114;10;0;false;false;0;0;0;;;
                                  -196124;1;0;false;false;;;;;;
                                  -196125;6;0;false;false;0;0;0;;;
                                  -196131;1;0;false;false;;;;;;
                                  -196132;1;0;false;false;0;0;0;;;
                                  -196133;1;0;false;false;;;;;;
                                  -196134;11;0;false;false;0;0;0;;;
                                  -196145;1;0;false;false;;;;;;
                                  -196146;2;0;false;false;0;0;0;;;
                                  -196148;1;0;false;false;;;;;;
                                  -196149;1;0;false;false;0;0;0;;;
                                  -196150;1;0;false;false;;;;;;
                                  -196151;1;0;false;false;0;0;0;;;
                                  -196152;1;0;false;false;;;;;;
                                  -196153;10;0;false;false;0;0;0;;;
                                  -196163;1;0;false;false;;;;;;
                                  -196164;4;0;false;false;0;0;0;;;
                                  -196168;1;0;false;false;;;;;;
                                  -196169;6;0;false;false;0;0;0;;;
                                  -196175;1;0;false;false;;;;;;
                                  -196176;2;0;false;false;0;0;0;;;
                                  -196178;1;0;false;false;;;;;;
                                  -196179;11;0;false;false;0;0;0;;;
                                  -196190;1;0;false;false;;;;;;
                                  -196191;1;0;false;false;0;0;0;;;
                                  -196192;5;0;false;false;;;;;;
                                  -196197;6;0;false;false;0;0;0;;;
                                  -196203;1;0;false;false;;;;;;
                                  -196204;4;0;false;false;0;0;0;;;
                                  -196208;1;0;false;false;;;;;;
                                  -196209;1;0;false;false;0;0;0;;;
                                  -196210;1;0;false;false;;;;;;
                                  -196211;19;0;false;false;0;0;0;;;
                                  -196230;5;0;false;false;;;;;;
                                  -196235;23;0;false;false;0;0;0;;;
                                  -196258;1;0;false;false;;;;;;
                                  -196259;2;0;false;false;0;0;0;;;
                                  -196261;1;0;false;false;;;;;;
                                  -196262;7;0;false;false;0;0;0;;;
                                  -196269;1;0;false;false;;;;;;
                                  -196270;7;0;false;false;0;0;0;;;
                                  -196277;1;0;false;false;;;;;;
                                  -196278;11;0;false;false;0;0;0;;;
                                  -196289;1;0;false;false;;;;;;
                                  -196290;11;0;false;false;0;0;0;;;
                                  -196301;1;0;false;false;;;;;;
                                  -196302;4;1;false;false;127;0;85;;;
                                  -196306;2;0;false;false;0;0;0;;;
                                  -196308;4;0;false;false;;;;;;
                                  -196312;1;0;false;false;0;0;0;;;
                                  -196313;4;0;false;false;;;;;;
                                  -196317;2;1;false;false;127;0;85;;;
                                  -196319;1;0;false;false;;;;;;
                                  -196320;7;0;false;false;0;0;0;;;
                                  -196327;1;0;false;false;;;;;;
                                  -196328;1;0;false;false;0;0;0;;;
                                  -196329;1;0;false;false;;;;;;
                                  -196330;12;0;false;false;0;0;0;;;
                                  -196342;1;0;false;false;;;;;;
                                  -196343;1;0;false;false;0;0;0;;;
                                  -196344;5;0;false;false;;;;;;
                                  -196349;33;0;false;false;0;0;0;;;
                                  -196382;5;0;false;false;;;;;;
                                  -196387;23;0;false;false;0;0;0;;;
                                  -196410;1;0;false;false;;;;;;
                                  -196411;7;0;false;false;0;0;0;;;
                                  -196418;1;0;false;false;;;;;;
                                  -196419;17;0;false;false;0;0;0;;;
                                  -196436;1;0;false;false;;;;;;
                                  -196437;11;0;false;false;0;0;0;;;
                                  -196448;1;0;false;false;;;;;;
                                  -196449;1;0;false;false;0;0;0;;;
                                  -196450;1;0;false;false;;;;;;
                                  -196451;8;0;false;false;0;0;0;;;
                                  -196459;4;0;false;false;;;;;;
                                  -196463;1;0;false;false;0;0;0;;;
                                  -196464;4;0;false;false;;;;;;
                                  -196468;2;1;false;false;127;0;85;;;
                                  -196470;1;0;false;false;;;;;;
                                  -196471;14;0;false;false;0;0;0;;;
                                  -196485;1;0;false;false;;;;;;
                                  -196486;1;0;false;false;0;0;0;;;
                                  -196487;5;0;false;false;;;;;;
                                  -196492;19;0;false;false;0;0;0;;;
                                  -196511;1;0;false;false;;;;;;
                                  -196512;11;0;false;false;0;0;0;;;
                                  -196523;1;0;false;false;;;;;;
                                  -196524;11;0;false;false;0;0;0;;;
                                  -196535;1;0;false;false;;;;;;
                                  -196536;8;0;false;false;0;0;0;;;
                                  -196544;5;0;false;false;;;;;;
                                  -196549;24;0;false;false;0;0;0;;;
                                  -196573;1;0;false;false;;;;;;
                                  -196574;2;0;false;false;0;0;0;;;
                                  -196576;1;0;false;false;;;;;;
                                  -196577;8;0;false;false;0;0;0;;;
                                  -196585;5;0;false;false;;;;;;
                                  -196590;17;0;false;false;0;0;0;;;
                                  -196607;5;0;false;false;;;;;;
                                  -196612;21;0;false;false;0;0;0;;;
                                  -196633;4;0;false;false;;;;;;
                                  -196637;1;0;false;false;0;0;0;;;
                                  -196638;3;0;false;false;;;;;;
                                  -196641;1;0;false;false;0;0;0;;;
                                  -196642;3;0;false;false;;;;;;
                                  -196645;15;0;false;false;0;0;0;;;
                                  -196660;1;0;false;false;;;;;;
                                  -196661;11;0;false;false;0;0;0;;;
                                  -196672;1;0;false;false;;;;;;
                                  -196673;11;0;false;false;0;0;0;;;
                                  -196684;1;0;false;false;;;;;;
                                  -196685;3;0;false;false;0;0;0;;;
                                  -196688;2;0;false;false;;;;;;
                                  -196690;1;0;false;false;0;0;0;;;
                                  -196691;2;0;false;false;;;;;;
                                  -196693;3;0;false;false;63;95;191;;;
                                  -196696;4;0;false;false;;;;;;
                                  -196700;1;0;false;false;63;95;191;;;
                                  -196701;1;0;false;false;;;;;;
                                  -196702;6;0;false;false;63;95;191;;;
                                  -196708;1;0;false;false;;;;;;
                                  -196709;3;0;false;false;63;95;191;;;
                                  -196712;1;0;false;false;;;;;;
                                  -196713;8;0;false;false;63;95;191;;;
                                  -196721;1;0;false;false;;;;;;
                                  -196722;4;0;false;false;63;95;191;;;
                                  -196726;1;0;false;false;;;;;;
                                  -196727;2;0;false;false;63;95;191;;;
                                  -196729;1;0;false;false;;;;;;
                                  -196730;3;0;false;false;63;95;191;;;
                                  -196733;1;0;false;false;;;;;;
                                  -196734;7;0;false;false;63;95;191;;;
                                  -196741;1;0;false;false;;;;;;
                                  -196742;8;0;false;false;63;95;191;;;
                                  -196750;3;0;false;false;;;;;;
                                  -196753;1;0;false;false;63;95;191;;;
                                  -196754;3;0;false;false;;;;;;
                                  -196757;1;0;false;false;63;95;191;;;
                                  -196758;1;0;false;false;;;;;;
                                  -196759;11;1;false;false;127;159;191;;;
                                  -196770;12;0;false;false;63;95;191;;;
                                  -196782;1;0;false;false;;;;;;
                                  -196783;4;0;false;false;127;127;159;;;
                                  -196787;3;0;false;false;;;;;;
                                  -196790;1;0;false;false;63;95;191;;;
                                  -196791;4;0;false;false;;;;;;
                                  -196795;4;0;false;false;127;127;159;;;
                                  -196799;21;0;false;false;63;95;191;;;
                                  -196820;1;0;false;false;;;;;;
                                  -196821;1;0;false;false;127;127;159;;;
                                  -196822;1;0;false;false;;;;;;
                                  -196823;2;0;false;false;63;95;191;;;
                                  -196825;1;0;false;false;;;;;;
                                  -196826;3;0;false;false;63;95;191;;;
                                  -196829;1;0;false;false;;;;;;
                                  -196830;8;0;false;false;63;95;191;;;
                                  -196838;1;0;false;false;;;;;;
                                  -196839;3;0;false;false;63;95;191;;;
                                  -196842;1;0;false;false;;;;;;
                                  -196843;4;0;false;false;63;95;191;;;
                                  -196847;1;0;false;false;;;;;;
                                  -196848;8;0;false;false;63;95;191;;;
                                  -196856;5;0;false;false;127;127;159;;;
                                  -196861;3;0;false;false;;;;;;
                                  -196864;1;0;false;false;63;95;191;;;
                                  -196865;4;0;false;false;;;;;;
                                  -196869;4;0;false;false;127;127;159;;;
                                  -196873;27;0;false;false;63;95;191;;;
                                  -196900;1;0;false;false;;;;;;
                                  -196901;1;0;false;false;127;127;159;;;
                                  -196902;1;0;false;false;;;;;;
                                  -196903;2;0;false;false;63;95;191;;;
                                  -196905;1;0;false;false;;;;;;
                                  -196906;3;0;false;false;63;95;191;;;
                                  -196909;1;0;false;false;;;;;;
                                  -196910;6;0;false;false;63;95;191;;;
                                  -196916;1;0;false;false;;;;;;
                                  -196917;4;0;false;false;63;95;191;;;
                                  -196921;1;0;false;false;;;;;;
                                  -196922;3;0;false;false;63;95;191;;;
                                  -196925;1;0;false;false;;;;;;
                                  -196926;6;0;false;false;63;95;191;;;
                                  -196932;1;0;false;false;;;;;;
                                  -196933;4;0;false;false;63;95;191;;;
                                  -196937;1;0;false;false;;;;;;
                                  -196938;7;0;false;false;63;95;191;;;
                                  -196945;1;0;false;false;;;;;;
                                  -196946;3;0;false;false;63;95;191;;;
                                  -196949;1;0;false;false;;;;;;
                                  -196950;8;0;false;false;63;95;191;;;
                                  -196958;5;0;false;false;127;127;159;;;
                                  -196963;3;0;false;false;;;;;;
                                  -196966;1;0;false;false;63;95;191;;;
                                  -196967;1;0;false;false;;;;;;
                                  -196968;5;0;false;false;127;127;159;;;
                                  -196973;3;0;false;false;;;;;;
                                  -196976;2;0;false;false;63;95;191;;;
                                  -196978;2;0;false;false;;;;;;
                                  -196980;6;1;false;false;127;0;85;;;
                                  -196986;1;0;false;false;;;;;;
                                  -196987;4;1;false;false;127;0;85;;;
                                  -196991;1;0;false;false;;;;;;
                                  -196992;7;0;false;false;0;0;0;;;
                                  -196999;1;0;false;false;;;;;;
                                  -197000;1;0;false;false;0;0;0;;;
                                  -197001;3;0;false;false;;;;;;
                                  -197004;14;0;false;false;0;0;0;;;
                                  -197018;3;0;false;false;;;;;;
                                  -197021;7;0;false;false;0;0;0;;;
                                  -197028;1;0;false;false;;;;;;
                                  -197029;7;0;false;false;0;0;0;;;
                                  -197036;1;0;false;false;;;;;;
                                  -197037;1;0;false;false;0;0;0;;;
                                  -197038;1;0;false;false;;;;;;
                                  -197039;3;1;false;false;127;0;85;;;
                                  -197042;1;0;false;false;;;;;;
                                  -197043;10;0;false;false;0;0;0;;;
                                  -197053;3;0;false;false;;;;;;
                                  -197056;22;0;false;false;0;0;0;;;
                                  -197078;1;0;false;false;;;;;;
                                  -197079;7;0;false;false;0;0;0;;;
                                  -197086;1;0;false;false;;;;;;
                                  -197087;1;0;false;false;0;0;0;;;
                                  -197088;1;0;false;false;;;;;;
                                  -197089;3;1;false;false;127;0;85;;;
                                  -197092;1;0;false;false;;;;;;
                                  -197093;25;0;false;false;0;0;0;;;
                                  -197118;6;0;false;false;;;;;;
                                  -197124;27;0;false;false;0;0;0;;;
                                  -197151;1;0;false;false;;;;;;
                                  -197152;1;0;false;false;0;0;0;;;
                                  -197153;1;0;false;false;;;;;;
                                  -197154;4;1;false;false;127;0;85;;;
                                  -197158;1;0;false;false;0;0;0;;;
                                  -197159;3;0;false;false;;;;;;
                                  -197162;27;0;false;false;0;0;0;;;
                                  -197189;1;0;false;false;;;;;;
                                  -197190;1;0;false;false;0;0;0;;;
                                  -197191;1;0;false;false;;;;;;
                                  -197192;4;1;false;false;127;0;85;;;
                                  -197196;1;0;false;false;0;0;0;;;
                                  -197197;3;0;false;false;;;;;;
                                  -197200;26;0;false;false;0;0;0;;;
                                  -197226;1;0;false;false;;;;;;
                                  -197227;1;0;false;false;0;0;0;;;
                                  -197228;1;0;false;false;;;;;;
                                  -197229;4;1;false;false;127;0;85;;;
                                  -197233;1;0;false;false;0;0;0;;;
                                  -197234;3;0;false;false;;;;;;
                                  -197237;27;0;false;false;0;0;0;;;
                                  -197264;1;0;false;false;;;;;;
                                  -197265;1;0;false;false;0;0;0;;;
                                  -197266;1;0;false;false;;;;;;
                                  -197267;4;1;false;false;127;0;85;;;
                                  -197271;1;0;false;false;0;0;0;;;
                                  -197272;4;0;false;false;;;;;;
                                  -197276;3;1;false;false;127;0;85;;;
                                  -197279;1;0;false;false;;;;;;
                                  -197280;9;0;false;false;0;0;0;;;
                                  -197289;4;1;false;false;127;0;85;;;
                                  -197293;1;0;false;false;0;0;0;;;
                                  -197294;1;0;false;false;;;;;;
                                  -197295;8;0;false;false;0;0;0;;;
                                  -197303;1;0;false;false;;;;;;
                                  -197304;15;0;false;false;0;0;0;;;
                                  -197319;3;0;false;false;;;;;;
                                  -197322;18;0;false;false;0;0;0;;;
                                  -197340;2;0;false;false;;;;;;
                                  -197342;1;0;false;false;0;0;0;;;
                                  -197343;2;0;false;false;;;;;;
                                  -197345;3;0;false;false;63;95;191;;;
                                  -197348;4;0;false;false;;;;;;
                                  -197352;1;0;false;false;63;95;191;;;
                                  -197353;1;0;false;false;;;;;;
                                  -197354;7;0;false;false;63;95;191;;;
                                  -197361;1;0;false;false;;;;;;
                                  -197362;1;0;false;false;63;95;191;;;
                                  -197363;1;0;false;false;;;;;;
                                  -197364;8;0;false;false;63;95;191;;;
                                  -197372;1;0;false;false;;;;;;
                                  -197373;4;0;false;false;63;95;191;;;
                                  -197377;1;0;false;false;;;;;;
                                  -197378;4;0;false;false;63;95;191;;;
                                  -197382;1;0;false;false;;;;;;
                                  -197383;5;0;false;false;63;95;191;;;
                                  -197388;1;0;false;false;;;;;;
                                  -197389;3;0;false;false;63;95;191;;;
                                  -197392;1;0;false;false;;;;;;
                                  -197393;8;0;false;false;63;95;191;;;
                                  -197401;1;0;false;false;;;;;;
                                  -197402;4;0;false;false;63;95;191;;;
                                  -197406;3;0;false;false;;;;;;
                                  -197409;1;0;false;false;63;95;191;;;
                                  -197410;1;0;false;false;;;;;;
                                  -197411;2;0;false;false;63;95;191;;;
                                  -197413;1;0;false;false;;;;;;
                                  -197414;3;0;false;false;63;95;191;;;
                                  -197417;1;0;false;false;;;;;;
                                  -197418;9;0;false;false;63;95;191;;;
                                  -197427;1;0;false;false;;;;;;
                                  -197428;8;0;false;false;63;95;191;;;
                                  -197436;3;0;false;false;;;;;;
                                  -197439;1;0;false;false;63;95;191;;;
                                  -197440;1;0;false;false;;;;;;
                                  -197441;3;0;false;false;127;127;159;;;
                                  -197444;3;0;false;false;;;;;;
                                  -197447;1;0;false;false;63;95;191;;;
                                  -197448;1;0;false;false;;;;;;
                                  -197449;3;0;false;false;63;95;191;;;
                                  -197452;1;0;false;false;;;;;;
                                  -197453;8;0;false;false;63;95;191;;;
                                  -197461;1;0;false;false;;;;;;
                                  -197462;3;0;false;false;63;95;191;;;
                                  -197465;1;0;false;false;;;;;;
                                  -197466;2;0;false;false;63;95;191;;;
                                  -197468;1;0;false;false;;;;;;
                                  -197469;3;0;false;false;63;95;191;;;
                                  -197472;1;0;false;false;;;;;;
                                  -197473;2;0;false;false;63;95;191;;;
                                  -197475;1;0;false;false;;;;;;
                                  -197476;1;0;false;false;63;95;191;;;
                                  -197477;1;0;false;false;;;;;;
                                  -197478;3;0;false;false;63;95;191;;;
                                  -197481;1;0;false;false;127;127;159;;;
                                  -197482;2;0;false;false;63;95;191;;;
                                  -197484;1;0;false;false;;;;;;
                                  -197485;7;0;false;false;63;95;191;;;
                                  -197492;3;0;false;false;;;;;;
                                  -197495;1;0;false;false;63;95;191;;;
                                  -197496;1;0;false;false;;;;;;
                                  -197497;4;0;false;false;127;127;159;;;
                                  -197501;3;0;false;false;;;;;;
                                  -197504;1;0;false;false;63;95;191;;;
                                  -197505;4;0;false;false;;;;;;
                                  -197509;1;0;false;false;63;95;191;;;
                                  -197510;1;0;false;false;;;;;;
                                  -197511;7;1;false;false;127;159;191;;;
                                  -197518;7;0;false;false;63;95;191;;;
                                  -197525;1;0;false;false;;;;;;
                                  -197526;3;0;false;false;63;95;191;;;
                                  -197529;1;0;false;false;;;;;;
                                  -197530;7;0;false;false;63;95;191;;;
                                  -197537;1;0;false;false;;;;;;
                                  -197538;2;0;false;false;63;95;191;;;
                                  -197540;1;0;false;false;;;;;;
                                  -197541;5;0;false;false;63;95;191;;;
                                  -197546;1;0;false;false;;;;;;
                                  -197547;2;0;false;false;63;95;191;;;
                                  -197549;3;0;false;false;;;;;;
                                  -197552;1;0;false;false;63;95;191;;;
                                  -197553;1;0;false;false;;;;;;
                                  -197554;11;1;false;false;127;159;191;;;
                                  -197565;12;0;false;false;63;95;191;;;
                                  -197577;1;0;false;false;;;;;;
                                  -197578;4;0;false;false;127;127;159;;;
                                  -197582;3;0;false;false;;;;;;
                                  -197585;1;0;false;false;63;95;191;;;
                                  -197586;4;0;false;false;;;;;;
                                  -197590;4;0;false;false;127;127;159;;;
                                  -197594;21;0;false;false;63;95;191;;;
                                  -197615;1;0;false;false;;;;;;
                                  -197616;1;0;false;false;127;127;159;;;
                                  -197617;1;0;false;false;;;;;;
                                  -197618;2;0;false;false;63;95;191;;;
                                  -197620;1;0;false;false;;;;;;
                                  -197621;3;0;false;false;63;95;191;;;
                                  -197624;1;0;false;false;;;;;;
                                  -197625;8;0;false;false;63;95;191;;;
                                  -197633;1;0;false;false;;;;;;
                                  -197634;3;0;false;false;63;95;191;;;
                                  -197637;1;0;false;false;;;;;;
                                  -197638;4;0;false;false;63;95;191;;;
                                  -197642;1;0;false;false;;;;;;
                                  -197643;8;0;false;false;63;95;191;;;
                                  -197651;5;0;false;false;127;127;159;;;
                                  -197656;3;0;false;false;;;;;;
                                  -197659;1;0;false;false;63;95;191;;;
                                  -197660;4;0;false;false;;;;;;
                                  -197664;4;0;false;false;127;127;159;;;
                                  -197668;27;0;false;false;63;95;191;;;
                                  -197695;1;0;false;false;;;;;;
                                  -197696;1;0;false;false;127;127;159;;;
                                  -197697;1;0;false;false;;;;;;
                                  -197698;2;0;false;false;63;95;191;;;
                                  -197700;1;0;false;false;;;;;;
                                  -197701;3;0;false;false;63;95;191;;;
                                  -197704;1;0;false;false;;;;;;
                                  -197705;6;0;false;false;63;95;191;;;
                                  -197711;1;0;false;false;;;;;;
                                  -197712;4;0;false;false;63;95;191;;;
                                  -197716;1;0;false;false;;;;;;
                                  -197717;3;0;false;false;63;95;191;;;
                                  -197720;1;0;false;false;;;;;;
                                  -197721;6;0;false;false;63;95;191;;;
                                  -197727;1;0;false;false;;;;;;
                                  -197728;4;0;false;false;63;95;191;;;
                                  -197732;1;0;false;false;;;;;;
                                  -197733;7;0;false;false;63;95;191;;;
                                  -197740;1;0;false;false;;;;;;
                                  -197741;3;0;false;false;63;95;191;;;
                                  -197744;1;0;false;false;;;;;;
                                  -197745;8;0;false;false;63;95;191;;;
                                  -197753;5;0;false;false;127;127;159;;;
                                  -197758;3;0;false;false;;;;;;
                                  -197761;1;0;false;false;63;95;191;;;
                                  -197762;1;0;false;false;;;;;;
                                  -197763;5;0;false;false;127;127;159;;;
                                  -197768;3;0;false;false;;;;;;
                                  -197771;1;0;false;false;63;95;191;;;
                                  -197772;1;0;false;false;;;;;;
                                  -197773;11;1;false;false;127;159;191;;;
                                  -197784;24;0;false;false;63;95;191;;;
                                  -197808;1;0;false;false;;;;;;
                                  -197809;4;0;false;false;127;127;159;;;
                                  -197813;3;0;false;false;;;;;;
                                  -197816;1;0;false;false;63;95;191;;;
                                  -197817;4;0;false;false;;;;;;
                                  -197821;4;0;false;false;127;127;159;;;
                                  -197825;19;0;false;false;63;95;191;;;
                                  -197844;1;0;false;false;;;;;;
                                  -197845;4;0;false;false;63;95;191;;;
                                  -197849;1;0;false;false;;;;;;
                                  -197850;7;0;false;false;63;95;191;;;
                                  -197857;1;0;false;false;;;;;;
                                  -197858;2;0;false;false;63;95;191;;;
                                  -197860;1;0;false;false;;;;;;
                                  -197861;4;0;false;false;63;95;191;;;
                                  -197865;5;0;false;false;127;127;159;;;
                                  -197870;3;0;false;false;;;;;;
                                  -197873;1;0;false;false;63;95;191;;;
                                  -197874;1;0;false;false;;;;;;
                                  -197875;5;0;false;false;127;127;159;;;
                                  -197880;3;0;false;false;;;;;;
                                  -197883;2;0;false;false;63;95;191;;;
                                  -197885;2;0;false;false;;;;;;
                                  -197887;6;1;false;false;127;0;85;;;
                                  -197893;1;0;false;false;;;;;;
                                  -197894;8;0;false;false;0;0;0;;;
                                  -197902;1;0;false;false;;;;;;
                                  -197903;13;0;false;false;0;0;0;;;
                                  -197916;1;0;false;false;;;;;;
                                  -197917;8;0;false;false;0;0;0;;;
                                  -197925;1;0;false;false;;;;;;
                                  -197926;1;0;false;false;0;0;0;;;
                                  -197927;3;0;false;false;;;;;;
                                  -197930;14;0;false;false;0;0;0;;;
                                  -197944;4;0;false;false;;;;;;
                                  -197948;22;0;false;false;0;0;0;;;
                                  -197970;1;0;false;false;;;;;;
                                  -197971;7;0;false;false;0;0;0;;;
                                  -197978;1;0;false;false;;;;;;
                                  -197979;1;0;false;false;0;0;0;;;
                                  -197980;1;0;false;false;;;;;;
                                  -197981;3;1;false;false;127;0;85;;;
                                  -197984;1;0;false;false;;;;;;
                                  -197985;25;0;false;false;0;0;0;;;
                                  -198010;3;0;false;false;;;;;;
                                  -198013;27;0;false;false;0;0;0;;;
                                  -198040;1;0;false;false;;;;;;
                                  -198041;1;0;false;false;0;0;0;;;
                                  -198042;1;0;false;false;;;;;;
                                  -198043;4;1;false;false;127;0;85;;;
                                  -198047;1;0;false;false;0;0;0;;;
                                  -198048;3;0;false;false;;;;;;
                                  -198051;27;0;false;false;0;0;0;;;
                                  -198078;1;0;false;false;;;;;;
                                  -198079;1;0;false;false;0;0;0;;;
                                  -198080;1;0;false;false;;;;;;
                                  -198081;4;1;false;false;127;0;85;;;
                                  -198085;1;0;false;false;0;0;0;;;
                                  -198086;3;0;false;false;;;;;;
                                  -198089;26;0;false;false;0;0;0;;;
                                  -198115;1;0;false;false;;;;;;
                                  -198116;1;0;false;false;0;0;0;;;
                                  -198117;1;0;false;false;;;;;;
                                  -198118;4;1;false;false;127;0;85;;;
                                  -198122;1;0;false;false;0;0;0;;;
                                  -198123;3;0;false;false;;;;;;
                                  -198126;27;0;false;false;0;0;0;;;
                                  -198153;1;0;false;false;;;;;;
                                  -198154;1;0;false;false;0;0;0;;;
                                  -198155;1;0;false;false;;;;;;
                                  -198156;4;1;false;false;127;0;85;;;
                                  -198160;1;0;false;false;0;0;0;;;
                                  -198161;3;0;false;false;;;;;;
                                  -198164;2;1;false;false;127;0;85;;;
                                  -198166;1;0;false;false;;;;;;
                                  -198167;8;0;false;false;0;0;0;;;
                                  -198175;1;0;false;false;;;;;;
                                  -198176;2;0;false;false;0;0;0;;;
                                  -198178;1;0;false;false;;;;;;
                                  -198179;4;1;false;false;127;0;85;;;
                                  -198183;1;0;false;false;0;0;0;;;
                                  -198184;1;0;false;false;;;;;;
                                  -198185;1;0;false;false;0;0;0;;;
                                  -198186;4;0;false;false;;;;;;
                                  -198190;35;0;false;false;0;0;0;;;
                                  -198225;3;0;false;false;;;;;;
                                  -198228;1;0;false;false;0;0;0;;;
                                  -198229;3;0;false;false;;;;;;
                                  -198232;6;1;false;false;127;0;85;;;
                                  -198238;1;0;false;false;;;;;;
                                  -198239;14;0;false;false;0;0;0;;;
                                  -198253;1;0;false;false;;;;;;
                                  -198254;9;0;false;false;0;0;0;;;
                                  -198263;2;0;false;false;;;;;;
                                  -198265;1;0;false;false;0;0;0;;;
                                  -198266;2;0;false;false;;;;;;
                                  -198268;3;0;false;false;63;95;191;;;
                                  -198271;4;0;false;false;;;;;;
                                  -198275;1;0;false;false;63;95;191;;;
                                  -198276;1;0;false;false;;;;;;
                                  -198277;7;0;false;false;63;95;191;;;
                                  -198284;1;0;false;false;;;;;;
                                  -198285;1;0;false;false;63;95;191;;;
                                  -198286;1;0;false;false;;;;;;
                                  -198287;8;0;false;false;63;95;191;;;
                                  -198295;1;0;false;false;;;;;;
                                  -198296;4;0;false;false;63;95;191;;;
                                  -198300;1;0;false;false;;;;;;
                                  -198301;4;0;false;false;63;95;191;;;
                                  -198305;1;0;false;false;;;;;;
                                  -198306;5;0;false;false;63;95;191;;;
                                  -198311;1;0;false;false;;;;;;
                                  -198312;3;0;false;false;63;95;191;;;
                                  -198315;1;0;false;false;;;;;;
                                  -198316;8;0;false;false;63;95;191;;;
                                  -198324;1;0;false;false;;;;;;
                                  -198325;4;0;false;false;63;95;191;;;
                                  -198329;3;0;false;false;;;;;;
                                  -198332;1;0;false;false;63;95;191;;;
                                  -198333;1;0;false;false;;;;;;
                                  -198334;2;0;false;false;63;95;191;;;
                                  -198336;1;0;false;false;;;;;;
                                  -198337;3;0;false;false;63;95;191;;;
                                  -198340;1;0;false;false;;;;;;
                                  -198341;9;0;false;false;63;95;191;;;
                                  -198350;1;0;false;false;;;;;;
                                  -198351;8;0;false;false;63;95;191;;;
                                  -198359;3;0;false;false;;;;;;
                                  -198362;1;0;false;false;63;95;191;;;
                                  -198363;1;0;false;false;;;;;;
                                  -198364;3;0;false;false;127;127;159;;;
                                  -198367;3;0;false;false;;;;;;
                                  -198370;1;0;false;false;63;95;191;;;
                                  -198371;1;0;false;false;;;;;;
                                  -198372;3;0;false;false;63;95;191;;;
                                  -198375;1;0;false;false;;;;;;
                                  -198376;8;0;false;false;63;95;191;;;
                                  -198384;1;0;false;false;;;;;;
                                  -198385;3;0;false;false;63;95;191;;;
                                  -198388;1;0;false;false;;;;;;
                                  -198389;2;0;false;false;63;95;191;;;
                                  -198391;1;0;false;false;;;;;;
                                  -198392;3;0;false;false;63;95;191;;;
                                  -198395;1;0;false;false;;;;;;
                                  -198396;2;0;false;false;63;95;191;;;
                                  -198398;1;0;false;false;;;;;;
                                  -198399;1;0;false;false;63;95;191;;;
                                  -198400;1;0;false;false;;;;;;
                                  -198401;3;0;false;false;63;95;191;;;
                                  -198404;1;0;false;false;127;127;159;;;
                                  -198405;2;0;false;false;63;95;191;;;
                                  -198407;1;0;false;false;;;;;;
                                  -198408;7;0;false;false;63;95;191;;;
                                  -198415;3;0;false;false;;;;;;
                                  -198418;1;0;false;false;63;95;191;;;
                                  -198419;1;0;false;false;;;;;;
                                  -198420;4;0;false;false;127;127;159;;;
                                  -198424;3;0;false;false;;;;;;
                                  -198427;1;0;false;false;63;95;191;;;
                                  -198428;4;0;false;false;;;;;;
                                  -198432;1;0;false;false;63;95;191;;;
                                  -198433;1;0;false;false;;;;;;
                                  -198434;7;1;false;false;127;159;191;;;
                                  -198441;7;0;false;false;63;95;191;;;
                                  -198448;1;0;false;false;;;;;;
                                  -198449;3;0;false;false;63;95;191;;;
                                  -198452;1;0;false;false;;;;;;
                                  -198453;7;0;false;false;63;95;191;;;
                                  -198460;1;0;false;false;;;;;;
                                  -198461;2;0;false;false;63;95;191;;;
                                  -198463;1;0;false;false;;;;;;
                                  -198464;5;0;false;false;63;95;191;;;
                                  -198469;1;0;false;false;;;;;;
                                  -198470;2;0;false;false;63;95;191;;;
                                  -198472;3;0;false;false;;;;;;
                                  -198475;1;0;false;false;63;95;191;;;
                                  -198476;1;0;false;false;;;;;;
                                  -198477;7;1;false;false;127;159;191;;;
                                  -198484;7;0;false;false;63;95;191;;;
                                  -198491;1;0;false;false;;;;;;
                                  -198492;5;0;false;false;63;95;191;;;
                                  -198497;1;0;false;false;;;;;;
                                  -198498;7;0;false;false;63;95;191;;;
                                  -198505;1;0;false;false;;;;;;
                                  -198506;2;0;false;false;63;95;191;;;
                                  -198508;1;0;false;false;;;;;;
                                  -198509;3;0;false;false;63;95;191;;;
                                  -198512;1;0;false;false;;;;;;
                                  -198513;6;0;false;false;63;95;191;;;
                                  -198519;1;0;false;false;;;;;;
                                  -198520;8;0;false;false;63;95;191;;;
                                  -198528;3;0;false;false;;;;;;
                                  -198531;1;0;false;false;63;95;191;;;
                                  -198532;1;0;false;false;;;;;;
                                  -198533;11;1;false;false;127;159;191;;;
                                  -198544;12;0;false;false;63;95;191;;;
                                  -198556;1;0;false;false;;;;;;
                                  -198557;4;0;false;false;127;127;159;;;
                                  -198561;3;0;false;false;;;;;;
                                  -198564;1;0;false;false;63;95;191;;;
                                  -198565;4;0;false;false;;;;;;
                                  -198569;4;0;false;false;127;127;159;;;
                                  -198573;21;0;false;false;63;95;191;;;
                                  -198594;1;0;false;false;;;;;;
                                  -198595;1;0;false;false;127;127;159;;;
                                  -198596;1;0;false;false;;;;;;
                                  -198597;2;0;false;false;63;95;191;;;
                                  -198599;1;0;false;false;;;;;;
                                  -198600;3;0;false;false;63;95;191;;;
                                  -198603;1;0;false;false;;;;;;
                                  -198604;8;0;false;false;63;95;191;;;
                                  -198612;1;0;false;false;;;;;;
                                  -198613;3;0;false;false;63;95;191;;;
                                  -198616;1;0;false;false;;;;;;
                                  -198617;4;0;false;false;63;95;191;;;
                                  -198621;1;0;false;false;;;;;;
                                  -198622;8;0;false;false;63;95;191;;;
                                  -198630;5;0;false;false;127;127;159;;;
                                  -198635;3;0;false;false;;;;;;
                                  -198638;1;0;false;false;63;95;191;;;
                                  -198639;4;0;false;false;;;;;;
                                  -198643;4;0;false;false;127;127;159;;;
                                  -198647;27;0;false;false;63;95;191;;;
                                  -198674;1;0;false;false;;;;;;
                                  -198675;1;0;false;false;127;127;159;;;
                                  -198676;1;0;false;false;;;;;;
                                  -198677;2;0;false;false;63;95;191;;;
                                  -198679;1;0;false;false;;;;;;
                                  -198680;3;0;false;false;63;95;191;;;
                                  -198683;1;0;false;false;;;;;;
                                  -198684;6;0;false;false;63;95;191;;;
                                  -198690;1;0;false;false;;;;;;
                                  -198691;4;0;false;false;63;95;191;;;
                                  -198695;1;0;false;false;;;;;;
                                  -198696;3;0;false;false;63;95;191;;;
                                  -198699;1;0;false;false;;;;;;
                                  -198700;6;0;false;false;63;95;191;;;
                                  -198706;1;0;false;false;;;;;;
                                  -198707;4;0;false;false;63;95;191;;;
                                  -198711;1;0;false;false;;;;;;
                                  -198712;7;0;false;false;63;95;191;;;
                                  -198719;1;0;false;false;;;;;;
                                  -198720;3;0;false;false;63;95;191;;;
                                  -198723;1;0;false;false;;;;;;
                                  -198724;8;0;false;false;63;95;191;;;
                                  -198732;5;0;false;false;127;127;159;;;
                                  -198737;3;0;false;false;;;;;;
                                  -198740;1;0;false;false;63;95;191;;;
                                  -198741;1;0;false;false;;;;;;
                                  -198742;5;0;false;false;127;127;159;;;
                                  -198747;3;0;false;false;;;;;;
                                  -198750;1;0;false;false;63;95;191;;;
                                  -198751;1;0;false;false;;;;;;
                                  -198752;11;1;false;false;127;159;191;;;
                                  -198763;24;0;false;false;63;95;191;;;
                                  -198787;1;0;false;false;;;;;;
                                  -198788;4;0;false;false;127;127;159;;;
                                  -198792;3;0;false;false;;;;;;
                                  -198795;1;0;false;false;63;95;191;;;
                                  -198796;4;0;false;false;;;;;;
                                  -198800;4;0;false;false;127;127;159;;;
                                  -198804;19;0;false;false;63;95;191;;;
                                  -198823;1;0;false;false;;;;;;
                                  -198824;4;0;false;false;63;95;191;;;
                                  -198828;1;0;false;false;;;;;;
                                  -198829;7;0;false;false;63;95;191;;;
                                  -198836;1;0;false;false;;;;;;
                                  -198837;2;0;false;false;63;95;191;;;
                                  -198839;1;0;false;false;;;;;;
                                  -198840;7;0;false;false;63;95;191;;;
                                  -198847;1;0;false;false;;;;;;
                                  -198848;2;0;false;false;63;95;191;;;
                                  -198850;1;0;false;false;;;;;;
                                  -198851;4;0;false;false;63;95;191;;;
                                  -198855;5;0;false;false;127;127;159;;;
                                  -198860;3;0;false;false;;;;;;
                                  -198863;1;0;false;false;63;95;191;;;
                                  -198864;1;0;false;false;;;;;;
                                  -198865;5;0;false;false;127;127;159;;;
                                  -198870;3;0;false;false;;;;;;
                                  -198873;1;0;false;false;63;95;191;;;
                                  -198874;1;0;false;false;;;;;;
                                  -198875;7;1;false;false;127;159;191;;;
                                  -198882;3;0;false;false;63;95;191;;;
                                  -198885;3;0;false;false;;;;;;
                                  -198888;2;0;false;false;63;95;191;;;
                                  -198890;2;0;false;false;;;;;;
                                  -198892;6;1;false;false;127;0;85;;;
                                  -198898;1;0;false;false;;;;;;
                                  -198899;8;0;false;false;0;0;0;;;
                                  -198907;1;0;false;false;;;;;;
                                  -198908;13;0;false;false;0;0;0;;;
                                  -198921;1;0;false;false;;;;;;
                                  -198922;8;0;false;false;0;0;0;;;
                                  -198930;1;0;false;false;;;;;;
                                  -198931;22;0;false;false;0;0;0;;;
                                  -198953;1;0;false;false;;;;;;
                                  -198954;8;0;false;false;0;0;0;;;
                                  -198962;1;0;false;false;;;;;;
                                  -198963;1;0;false;false;0;0;0;;;
                                  -198964;3;0;false;false;;;;;;
                                  -198967;14;0;false;false;0;0;0;;;
                                  -198981;3;0;false;false;;;;;;
                                  -198984;2;1;false;false;127;0;85;;;
                                  -198986;1;0;false;false;;;;;;
                                  -198987;8;0;false;false;0;0;0;;;
                                  -198995;1;0;false;false;;;;;;
                                  -198996;2;0;false;false;0;0;0;;;
                                  -198998;1;0;false;false;;;;;;
                                  -198999;4;1;false;false;127;0;85;;;
                                  -199003;1;0;false;false;;;;;;
                                  -199004;2;0;false;false;0;0;0;;;
                                  -199006;1;0;false;false;;;;;;
                                  -199007;7;0;false;false;0;0;0;;;
                                  -199014;1;0;false;false;;;;;;
                                  -199015;2;0;false;false;0;0;0;;;
                                  -199017;1;0;false;false;;;;;;
                                  -199018;4;1;false;false;127;0;85;;;
                                  -199022;1;0;false;false;0;0;0;;;
                                  -199023;1;0;false;false;;;;;;
                                  -199024;1;0;false;false;0;0;0;;;
                                  -199025;4;0;false;false;;;;;;
                                  -199029;35;0;false;false;0;0;0;;;
                                  -199064;3;0;false;false;;;;;;
                                  -199067;1;0;false;false;0;0;0;;;
                                  -199068;3;0;false;false;;;;;;
                                  -199071;6;1;false;false;127;0;85;;;
                                  -199077;1;0;false;false;;;;;;
                                  -199078;3;1;false;false;127;0;85;;;
                                  -199081;1;0;false;false;;;;;;
                                  -199082;9;0;false;false;0;0;0;;;
                                  -199091;4;1;false;false;127;0;85;;;
                                  -199095;1;0;false;false;0;0;0;;;
                                  -199096;1;0;false;false;;;;;;
                                  -199097;8;0;false;false;0;0;0;;;
                                  -199105;1;0;false;false;;;;;;
                                  -199106;9;0;false;false;0;0;0;;;
                                  -199115;2;0;false;false;;;;;;
                                  -199117;1;0;false;false;0;0;0;;;
                                  -199118;2;0;false;false;;;;;;
                                  -199120;3;0;false;false;63;95;191;;;
                                  -199123;3;0;false;false;;;;;;
                                  -199126;1;0;false;false;63;95;191;;;
                                  -199127;1;0;false;false;;;;;;
                                  -199128;6;0;false;false;63;95;191;;;
                                  -199134;1;0;false;false;;;;;;
                                  -199135;3;0;false;false;63;95;191;;;
                                  -199138;1;0;false;false;;;;;;
                                  -199139;6;0;false;false;63;95;191;;;
                                  -199145;1;0;false;false;;;;;;
                                  -199146;6;0;false;false;63;95;191;;;
                                  -199152;1;0;false;false;;;;;;
                                  -199153;2;0;false;false;63;95;191;;;
                                  -199155;1;0;false;false;;;;;;
                                  -199156;3;0;false;false;63;95;191;;;
                                  -199159;1;0;false;false;;;;;;
                                  -199160;8;0;false;false;63;95;191;;;
                                  -199168;1;0;false;false;;;;;;
                                  -199169;2;0;false;false;63;95;191;;;
                                  -199171;1;0;false;false;;;;;;
                                  -199172;2;0;false;false;63;95;191;;;
                                  -199174;1;0;false;false;;;;;;
                                  -199175;6;0;false;false;63;95;191;;;
                                  -199181;3;0;false;false;;;;;;
                                  -199184;1;0;false;false;63;95;191;;;
                                  -199185;1;0;false;false;;;;;;
                                  -199186;2;0;false;false;63;95;191;;;
                                  -199188;1;0;false;false;;;;;;
                                  -199189;7;0;false;false;63;95;191;;;
                                  -199196;1;0;false;false;;;;;;
                                  -199197;2;0;false;false;63;95;191;;;
                                  -199199;1;0;false;false;;;;;;
                                  -199200;2;0;false;false;63;95;191;;;
                                  -199202;1;0;false;false;;;;;;
                                  -199203;8;0;false;false;63;95;191;;;
                                  -199211;1;0;false;false;;;;;;
                                  -199212;3;0;false;false;63;95;191;;;
                                  -199215;1;0;false;false;;;;;;
                                  -199216;4;0;false;false;63;95;191;;;
                                  -199220;1;0;false;false;;;;;;
                                  -199221;4;0;false;false;63;95;191;;;
                                  -199225;1;0;false;false;;;;;;
                                  -199226;1;0;false;false;63;95;191;;;
                                  -199227;1;0;false;false;;;;;;
                                  -199228;5;0;false;false;63;95;191;;;
                                  -199233;1;0;false;false;;;;;;
                                  -199234;7;0;false;false;63;95;191;;;
                                  -199241;3;0;false;false;;;;;;
                                  -199244;1;0;false;false;63;95;191;;;
                                  -199245;1;0;false;false;;;;;;
                                  -199246;2;0;false;false;63;95;191;;;
                                  -199248;1;0;false;false;;;;;;
                                  -199249;10;0;false;false;63;95;191;;;
                                  -199259;1;0;false;false;;;;;;
                                  -199260;3;0;false;false;63;95;191;;;
                                  -199263;1;0;false;false;;;;;;
                                  -199264;7;0;false;false;63;95;191;;;
                                  -199271;1;0;false;false;;;;;;
                                  -199272;4;0;false;false;63;95;191;;;
                                  -199276;1;0;false;false;;;;;;
                                  -199277;2;0;false;false;63;95;191;;;
                                  -199279;1;0;false;false;;;;;;
                                  -199280;10;0;false;false;63;95;191;;;
                                  -199290;1;0;false;false;;;;;;
                                  -199291;8;0;false;false;63;95;191;;;
                                  -199299;3;0;false;false;;;;;;
                                  -199302;1;0;false;false;63;95;191;;;
                                  -199303;1;0;false;false;;;;;;
                                  -199304;3;0;false;false;127;127;159;;;
                                  -199307;3;0;false;false;;;;;;
                                  -199310;1;0;false;false;63;95;191;;;
                                  -199311;1;0;false;false;;;;;;
                                  -199312;12;0;false;false;63;95;191;;;
                                  -199324;1;0;false;false;;;;;;
                                  -199325;3;0;false;false;63;95;191;;;
                                  -199328;1;0;false;false;;;;;;
                                  -199329;7;0;false;false;63;95;191;;;
                                  -199336;1;0;false;false;;;;;;
                                  -199337;5;0;false;false;63;95;191;;;
                                  -199342;1;0;false;false;;;;;;
                                  -199343;3;0;false;false;63;95;191;;;
                                  -199346;1;0;false;false;;;;;;
                                  -199347;3;0;false;false;63;95;191;;;
                                  -199350;1;0;false;false;;;;;;
                                  -199351;5;0;false;false;63;95;191;;;
                                  -199356;1;0;false;false;;;;;;
                                  -199357;2;0;false;false;63;95;191;;;
                                  -199359;1;0;false;false;;;;;;
                                  -199360;3;0;false;false;63;95;191;;;
                                  -199363;1;0;false;false;;;;;;
                                  -199364;7;0;false;false;63;95;191;;;
                                  -199371;3;0;false;false;;;;;;
                                  -199374;1;0;false;false;63;95;191;;;
                                  -199375;1;0;false;false;;;;;;
                                  -199376;4;0;false;false;63;95;191;;;
                                  -199380;1;0;false;false;;;;;;
                                  -199381;1;0;false;false;63;95;191;;;
                                  -199382;1;0;false;false;;;;;;
                                  -199383;6;0;false;false;127;127;159;;;
                                  -199389;17;0;false;false;63;95;191;;;
                                  -199406;7;0;false;false;127;127;159;;;
                                  -199413;1;0;false;false;;;;;;
                                  -199414;2;0;false;false;63;95;191;;;
                                  -199416;1;0;false;false;;;;;;
                                  -199417;4;0;false;false;63;95;191;;;
                                  -199421;1;0;false;false;;;;;;
                                  -199422;1;0;false;false;63;95;191;;;
                                  -199423;1;0;false;false;;;;;;
                                  -199424;6;0;false;false;63;95;191;;;
                                  -199430;1;0;false;false;;;;;;
                                  -199431;4;0;false;false;63;95;191;;;
                                  -199435;4;0;false;false;;;;;;
                                  -199439;1;0;false;false;63;95;191;;;
                                  -199440;1;0;false;false;;;;;;
                                  -199441;2;0;false;false;63;95;191;;;
                                  -199443;1;0;false;false;;;;;;
                                  -199444;3;0;false;false;63;95;191;;;
                                  -199447;1;0;false;false;;;;;;
                                  -199448;4;0;false;false;63;95;191;;;
                                  -199452;1;0;false;false;;;;;;
                                  -199453;12;0;false;false;63;95;191;;;
                                  -199465;1;0;false;false;;;;;;
                                  -199466;2;0;false;false;63;95;191;;;
                                  -199468;1;0;false;false;;;;;;
                                  -199469;3;0;false;false;63;95;191;;;
                                  -199472;1;0;false;false;;;;;;
                                  -199473;6;0;false;false;63;95;191;;;
                                  -199479;1;0;false;false;;;;;;
                                  -199480;4;0;false;false;63;95;191;;;
                                  -199484;1;0;false;false;;;;;;
                                  -199485;6;0;false;false;63;95;191;;;
                                  -199491;1;0;false;false;;;;;;
                                  -199492;4;0;false;false;63;95;191;;;
                                  -199496;1;0;false;false;;;;;;
                                  -199497;7;0;false;false;63;95;191;;;
                                  -199504;4;0;false;false;;;;;;
                                  -199508;1;0;false;false;63;95;191;;;
                                  -199509;1;0;false;false;;;;;;
                                  -199510;3;0;false;false;63;95;191;;;
                                  -199513;1;0;false;false;;;;;;
                                  -199514;4;0;false;false;63;95;191;;;
                                  -199518;1;0;false;false;;;;;;
                                  -199519;3;0;false;false;63;95;191;;;
                                  -199522;1;0;false;false;;;;;;
                                  -199523;7;0;false;false;63;95;191;;;
                                  -199530;1;0;false;false;;;;;;
                                  -199531;5;0;false;false;63;95;191;;;
                                  -199536;1;0;false;false;;;;;;
                                  -199537;3;0;false;false;63;95;191;;;
                                  -199540;1;0;false;false;;;;;;
                                  -199541;4;0;false;false;63;95;191;;;
                                  -199545;1;0;false;false;;;;;;
                                  -199546;8;0;false;false;63;95;191;;;
                                  -199554;3;0;false;false;;;;;;
                                  -199557;1;0;false;false;63;95;191;;;
                                  -199558;1;0;false;false;;;;;;
                                  -199559;4;0;false;false;127;127;159;;;
                                  -199563;3;0;false;false;;;;;;
                                  -199566;1;0;false;false;63;95;191;;;
                                  -199567;3;0;false;false;;;;;;
                                  -199570;1;0;false;false;63;95;191;;;
                                  -199571;1;0;false;false;;;;;;
                                  -199572;11;1;false;false;127;159;191;;;
                                  -199583;12;0;false;false;63;95;191;;;
                                  -199595;1;0;false;false;;;;;;
                                  -199596;4;0;false;false;127;127;159;;;
                                  -199600;3;0;false;false;;;;;;
                                  -199603;1;0;false;false;63;95;191;;;
                                  -199604;4;0;false;false;;;;;;
                                  -199608;4;0;false;false;127;127;159;;;
                                  -199612;21;0;false;false;63;95;191;;;
                                  -199633;1;0;false;false;;;;;;
                                  -199634;1;0;false;false;127;127;159;;;
                                  -199635;1;0;false;false;;;;;;
                                  -199636;2;0;false;false;63;95;191;;;
                                  -199638;1;0;false;false;;;;;;
                                  -199639;3;0;false;false;63;95;191;;;
                                  -199642;1;0;false;false;;;;;;
                                  -199643;8;0;false;false;63;95;191;;;
                                  -199651;1;0;false;false;;;;;;
                                  -199652;3;0;false;false;63;95;191;;;
                                  -199655;1;0;false;false;;;;;;
                                  -199656;4;0;false;false;63;95;191;;;
                                  -199660;1;0;false;false;;;;;;
                                  -199661;8;0;false;false;63;95;191;;;
                                  -199669;5;0;false;false;127;127;159;;;
                                  -199674;3;0;false;false;;;;;;
                                  -199677;1;0;false;false;63;95;191;;;
                                  -199678;4;0;false;false;;;;;;
                                  -199682;4;0;false;false;127;127;159;;;
                                  -199686;27;0;false;false;63;95;191;;;
                                  -199713;1;0;false;false;;;;;;
                                  -199714;1;0;false;false;127;127;159;;;
                                  -199715;1;0;false;false;;;;;;
                                  -199716;2;0;false;false;63;95;191;;;
                                  -199718;1;0;false;false;;;;;;
                                  -199719;3;0;false;false;63;95;191;;;
                                  -199722;1;0;false;false;;;;;;
                                  -199723;6;0;false;false;63;95;191;;;
                                  -199729;1;0;false;false;;;;;;
                                  -199730;4;0;false;false;63;95;191;;;
                                  -199734;1;0;false;false;;;;;;
                                  -199735;3;0;false;false;63;95;191;;;
                                  -199738;1;0;false;false;;;;;;
                                  -199739;6;0;false;false;63;95;191;;;
                                  -199745;1;0;false;false;;;;;;
                                  -199746;4;0;false;false;63;95;191;;;
                                  -199750;1;0;false;false;;;;;;
                                  -199751;7;0;false;false;63;95;191;;;
                                  -199758;1;0;false;false;;;;;;
                                  -199759;3;0;false;false;63;95;191;;;
                                  -199762;1;0;false;false;;;;;;
                                  -199763;8;0;false;false;63;95;191;;;
                                  -199771;5;0;false;false;127;127;159;;;
                                  -199776;3;0;false;false;;;;;;
                                  -199779;1;0;false;false;63;95;191;;;
                                  -199780;1;0;false;false;;;;;;
                                  -199781;5;0;false;false;127;127;159;;;
                                  -199786;3;0;false;false;;;;;;
                                  -199789;1;0;false;false;63;95;191;;;
                                  -199790;3;0;false;false;;;;;;
                                  -199793;1;0;false;false;63;95;191;;;
                                  -199794;1;0;false;false;;;;;;
                                  -199795;5;1;false;false;127;159;191;;;
                                  -199800;14;0;false;false;63;95;191;;;
                                  -199814;3;0;false;false;;;;;;
                                  -199817;2;0;false;false;63;95;191;;;
                                  -199819;2;0;false;false;;;;;;
                                  -199821;6;1;false;false;127;0;85;;;
                                  -199827;1;0;false;false;;;;;;
                                  -199828;4;1;false;false;127;0;85;;;
                                  -199832;1;0;false;false;;;;;;
                                  -199833;8;0;false;false;0;0;0;;;
                                  -199841;1;0;false;false;;;;;;
                                  -199842;1;0;false;false;0;0;0;;;
                                  -199843;3;0;false;false;;;;;;
                                  -199846;3;1;false;false;127;0;85;;;
                                  -199849;1;0;false;false;;;;;;
                                  -199850;10;0;false;false;0;0;0;;;
                                  -199860;6;0;false;false;;;;;;
                                  -199866;5;1;false;false;127;0;85;;;
                                  -199871;10;0;false;false;0;0;0;;;
                                  -199881;3;0;false;false;;;;;;
                                  -199884;9;0;false;false;0;0;0;;;
                                  -199893;1;0;false;false;;;;;;
                                  -199894;1;0;false;false;0;0;0;;;
                                  -199895;1;0;false;false;;;;;;
                                  -199896;23;0;false;false;0;0;0;;;
                                  -199919;1;0;false;false;;;;;;
                                  -199920;1;0;false;false;0;0;0;;;
                                  -199921;1;0;false;false;;;;;;
                                  -199922;8;0;false;false;0;0;0;;;
                                  -199930;1;0;false;false;;;;;;
                                  -199931;1;0;false;false;0;0;0;;;
                                  -199932;1;0;false;false;;;;;;
                                  -199933;2;0;false;false;0;0;0;;;
                                  -199935;3;0;false;false;;;;;;
                                  -199938;31;0;false;false;0;0;0;;;
                                  -199969;1;0;false;false;;;;;;
                                  -199970;10;0;false;false;0;0;0;;;
                                  -199980;1;0;false;false;;;;;;
                                  -199981;4;1;false;false;127;0;85;;;
                                  -199985;2;0;false;false;0;0;0;;;
                                  -199987;3;0;false;false;;;;;;
                                  -199990;29;0;false;false;0;0;0;;;
                                  -200019;1;0;false;false;;;;;;
                                  -200020;11;0;false;false;0;0;0;;;
                                  -200031;3;0;false;false;;;;;;
                                  -200034;25;0;false;false;0;0;0;;;
                                  -200059;2;0;false;false;;;;;;
                                  -200061;1;0;false;false;0;0;0;;;
                                  -200062;2;0;false;false;;;;;;
                                  -200064;3;0;false;false;63;95;191;;;
                                  -200067;3;0;false;false;;;;;;
                                  -200070;1;0;false;false;63;95;191;;;
                                  -200071;1;0;false;false;;;;;;
                                  -200072;6;0;false;false;63;95;191;;;
                                  -200078;1;0;false;false;;;;;;
                                  -200079;3;0;false;false;63;95;191;;;
                                  -200082;1;0;false;false;;;;;;
                                  -200083;11;0;false;false;63;95;191;;;
                                  -200094;1;0;false;false;;;;;;
                                  -200095;4;0;false;false;63;95;191;;;
                                  -200099;1;0;false;false;;;;;;
                                  -200100;2;0;false;false;63;95;191;;;
                                  -200102;1;0;false;false;;;;;;
                                  -200103;3;0;false;false;63;95;191;;;
                                  -200106;1;0;false;false;;;;;;
                                  -200107;8;0;false;false;63;95;191;;;
                                  -200115;1;0;false;false;;;;;;
                                  -200116;9;0;false;false;63;95;191;;;
                                  -200125;1;0;false;false;;;;;;
                                  -200126;2;0;false;false;63;95;191;;;
                                  -200128;3;0;false;false;;;;;;
                                  -200131;1;0;false;false;63;95;191;;;
                                  -200132;1;0;false;false;;;;;;
                                  -200133;3;0;false;false;63;95;191;;;
                                  -200136;1;0;false;false;;;;;;
                                  -200137;9;0;false;false;63;95;191;;;
                                  -200146;1;0;false;false;;;;;;
                                  -200147;2;0;false;false;63;95;191;;;
                                  -200149;1;0;false;false;;;;;;
                                  -200150;2;0;false;false;63;95;191;;;
                                  -200152;1;0;false;false;;;;;;
                                  -200153;6;0;false;false;63;95;191;;;
                                  -200159;1;0;false;false;;;;;;
                                  -200160;2;0;false;false;63;95;191;;;
                                  -200162;1;0;false;false;;;;;;
                                  -200163;7;0;false;false;63;95;191;;;
                                  -200170;1;0;false;false;;;;;;
                                  -200171;2;0;false;false;63;95;191;;;
                                  -200173;1;0;false;false;;;;;;
                                  -200174;2;0;false;false;63;95;191;;;
                                  -200176;1;0;false;false;;;;;;
                                  -200177;8;0;false;false;63;95;191;;;
                                  -200185;4;0;false;false;;;;;;
                                  -200189;1;0;false;false;63;95;191;;;
                                  -200190;1;0;false;false;;;;;;
                                  -200191;3;0;false;false;63;95;191;;;
                                  -200194;1;0;false;false;;;;;;
                                  -200195;4;0;false;false;63;95;191;;;
                                  -200199;1;0;false;false;;;;;;
                                  -200200;4;0;false;false;63;95;191;;;
                                  -200204;1;0;false;false;;;;;;
                                  -200205;1;0;false;false;63;95;191;;;
                                  -200206;1;0;false;false;;;;;;
                                  -200207;5;0;false;false;63;95;191;;;
                                  -200212;1;0;false;false;;;;;;
                                  -200213;7;0;false;false;63;95;191;;;
                                  -200220;1;0;false;false;;;;;;
                                  -200221;2;0;false;false;63;95;191;;;
                                  -200223;1;0;false;false;;;;;;
                                  -200224;10;0;false;false;63;95;191;;;
                                  -200234;1;0;false;false;;;;;;
                                  -200235;4;0;false;false;63;95;191;;;
                                  -200239;1;0;false;false;;;;;;
                                  -200240;4;0;false;false;63;95;191;;;
                                  -200244;1;0;false;false;;;;;;
                                  -200245;2;0;false;false;63;95;191;;;
                                  -200247;3;0;false;false;;;;;;
                                  -200250;1;0;false;false;63;95;191;;;
                                  -200251;1;0;false;false;;;;;;
                                  -200252;3;0;false;false;63;95;191;;;
                                  -200255;1;0;false;false;;;;;;
                                  -200256;8;0;false;false;63;95;191;;;
                                  -200264;1;0;false;false;;;;;;
                                  -200265;4;0;false;false;63;95;191;;;
                                  -200269;1;0;false;false;;;;;;
                                  -200270;2;0;false;false;63;95;191;;;
                                  -200272;1;0;false;false;;;;;;
                                  -200273;8;0;false;false;63;95;191;;;
                                  -200281;1;0;false;false;;;;;;
                                  -200282;2;0;false;false;63;95;191;;;
                                  -200284;1;0;false;false;;;;;;
                                  -200285;3;0;false;false;63;95;191;;;
                                  -200288;1;0;false;false;;;;;;
                                  -200289;6;0;false;false;127;127;159;;;
                                  -200295;3;0;false;false;63;95;191;;;
                                  -200298;7;0;false;false;127;127;159;;;
                                  -200305;1;0;false;false;;;;;;
                                  -200306;4;0;false;false;63;95;191;;;
                                  -200310;3;0;false;false;;;;;;
                                  -200313;1;0;false;false;63;95;191;;;
                                  -200314;1;0;false;false;;;;;;
                                  -200315;2;0;false;false;63;95;191;;;
                                  -200317;1;0;false;false;;;;;;
                                  -200318;6;0;false;false;127;127;159;;;
                                  -200324;4;0;false;false;63;95;191;;;
                                  -200328;7;0;false;false;127;127;159;;;
                                  -200335;1;0;false;false;63;95;191;;;
                                  -200336;1;0;false;false;;;;;;
                                  -200337;3;0;false;false;63;95;191;;;
                                  -200340;1;0;false;false;;;;;;
                                  -200341;8;0;false;false;63;95;191;;;
                                  -200349;1;0;false;false;;;;;;
                                  -200350;2;0;false;false;63;95;191;;;
                                  -200352;1;0;false;false;;;;;;
                                  -200353;3;0;false;false;63;95;191;;;
                                  -200356;1;0;false;false;;;;;;
                                  -200357;8;0;false;false;63;95;191;;;
                                  -200365;1;0;false;false;;;;;;
                                  -200366;5;0;false;false;63;95;191;;;
                                  -200371;3;0;false;false;;;;;;
                                  -200374;1;0;false;false;63;95;191;;;
                                  -200375;1;0;false;false;;;;;;
                                  -200376;9;0;false;false;63;95;191;;;
                                  -200385;1;0;false;false;;;;;;
                                  -200386;4;0;false;false;63;95;191;;;
                                  -200390;1;0;false;false;;;;;;
                                  -200391;3;0;false;false;63;95;191;;;
                                  -200394;1;0;false;false;;;;;;
                                  -200395;9;0;false;false;63;95;191;;;
                                  -200404;1;0;false;false;;;;;;
                                  -200405;4;0;false;false;63;95;191;;;
                                  -200409;1;0;false;false;;;;;;
                                  -200410;4;0;false;false;63;95;191;;;
                                  -200414;1;0;false;false;;;;;;
                                  -200415;4;0;false;false;63;95;191;;;
                                  -200419;1;0;false;false;;;;;;
                                  -200420;5;0;false;false;63;95;191;;;
                                  -200425;1;0;false;false;;;;;;
                                  -200426;5;0;false;false;63;95;191;;;
                                  -200431;3;0;false;false;;;;;;
                                  -200434;1;0;false;false;63;95;191;;;
                                  -200435;1;0;false;false;;;;;;
                                  -200436;12;0;false;false;63;95;191;;;
                                  -200448;1;0;false;false;;;;;;
                                  -200449;6;0;false;false;63;95;191;;;
                                  -200455;1;0;false;false;;;;;;
                                  -200456;2;0;false;false;63;95;191;;;
                                  -200458;1;0;false;false;;;;;;
                                  -200459;3;0;false;false;63;95;191;;;
                                  -200462;1;0;false;false;;;;;;
                                  -200463;6;0;false;false;127;127;159;;;
                                  -200469;3;0;false;false;63;95;191;;;
                                  -200472;7;0;false;false;127;127;159;;;
                                  -200479;1;0;false;false;;;;;;
                                  -200480;4;0;false;false;63;95;191;;;
                                  -200484;1;0;false;false;;;;;;
                                  -200485;2;0;false;false;63;95;191;;;
                                  -200487;4;0;false;false;;;;;;
                                  -200491;1;0;false;false;63;95;191;;;
                                  -200492;1;0;false;false;;;;;;
                                  -200493;6;0;false;false;127;127;159;;;
                                  -200499;5;0;false;false;63;95;191;;;
                                  -200504;7;0;false;false;127;127;159;;;
                                  -200511;1;0;false;false;63;95;191;;;
                                  -200512;1;0;false;false;;;;;;
                                  -200513;3;0;false;false;63;95;191;;;
                                  -200516;1;0;false;false;;;;;;
                                  -200517;8;0;false;false;63;95;191;;;
                                  -200525;1;0;false;false;;;;;;
                                  -200526;4;0;false;false;63;95;191;;;
                                  -200530;1;0;false;false;;;;;;
                                  -200531;3;0;false;false;63;95;191;;;
                                  -200534;1;0;false;false;;;;;;
                                  -200535;2;0;false;false;63;95;191;;;
                                  -200537;1;0;false;false;;;;;;
                                  -200538;8;0;false;false;63;95;191;;;
                                  -200546;3;0;false;false;;;;;;
                                  -200549;1;0;false;false;63;95;191;;;
                                  -200550;1;0;false;false;;;;;;
                                  -200551;3;0;false;false;127;127;159;;;
                                  -200554;3;0;false;false;;;;;;
                                  -200557;1;0;false;false;63;95;191;;;
                                  -200558;1;0;false;false;;;;;;
                                  -200559;5;0;false;false;63;95;191;;;
                                  -200564;1;0;false;false;;;;;;
                                  -200565;3;0;false;false;63;95;191;;;
                                  -200568;1;0;false;false;;;;;;
                                  -200569;7;0;false;false;63;95;191;;;
                                  -200576;1;0;false;false;;;;;;
                                  -200577;5;0;false;false;63;95;191;;;
                                  -200582;1;0;false;false;;;;;;
                                  -200583;2;0;false;false;63;95;191;;;
                                  -200585;1;0;false;false;;;;;;
                                  -200586;3;0;false;false;63;95;191;;;
                                  -200589;1;0;false;false;;;;;;
                                  -200590;5;0;false;false;63;95;191;;;
                                  -200595;1;0;false;false;;;;;;
                                  -200596;2;0;false;false;63;95;191;;;
                                  -200598;1;0;false;false;;;;;;
                                  -200599;3;0;false;false;63;95;191;;;
                                  -200602;1;0;false;false;;;;;;
                                  -200603;9;0;false;false;63;95;191;;;
                                  -200612;1;0;false;false;;;;;;
                                  -200613;9;0;false;false;63;95;191;;;
                                  -200622;3;0;false;false;;;;;;
                                  -200625;1;0;false;false;63;95;191;;;
                                  -200626;1;0;false;false;;;;;;
                                  -200627;2;0;false;false;63;95;191;;;
                                  -200629;1;0;false;false;;;;;;
                                  -200630;8;0;false;false;63;95;191;;;
                                  -200638;1;0;false;false;;;;;;
                                  -200639;12;0;false;false;63;95;191;;;
                                  -200651;1;0;false;false;;;;;;
                                  -200652;3;0;false;false;63;95;191;;;
                                  -200655;1;0;false;false;;;;;;
                                  -200656;7;0;false;false;63;95;191;;;
                                  -200663;1;0;false;false;;;;;;
                                  -200664;5;0;false;false;63;95;191;;;
                                  -200669;1;0;false;false;;;;;;
                                  -200670;2;0;false;false;63;95;191;;;
                                  -200672;1;0;false;false;;;;;;
                                  -200673;3;0;false;false;63;95;191;;;
                                  -200676;1;0;false;false;;;;;;
                                  -200677;7;0;false;false;63;95;191;;;
                                  -200684;1;0;false;false;;;;;;
                                  -200685;6;0;false;false;63;95;191;;;
                                  -200691;3;0;false;false;;;;;;
                                  -200694;1;0;false;false;63;95;191;;;
                                  -200695;1;0;false;false;;;;;;
                                  -200696;4;0;false;false;63;95;191;;;
                                  -200700;1;0;false;false;;;;;;
                                  -200701;1;0;false;false;63;95;191;;;
                                  -200702;1;0;false;false;;;;;;
                                  -200703;6;0;false;false;127;127;159;;;
                                  -200709;17;0;false;false;63;95;191;;;
                                  -200726;7;0;false;false;127;127;159;;;
                                  -200733;1;0;false;false;;;;;;
                                  -200734;2;0;false;false;63;95;191;;;
                                  -200736;1;0;false;false;;;;;;
                                  -200737;4;0;false;false;63;95;191;;;
                                  -200741;1;0;false;false;;;;;;
                                  -200742;1;0;false;false;63;95;191;;;
                                  -200743;1;0;false;false;;;;;;
                                  -200744;6;0;false;false;63;95;191;;;
                                  -200750;1;0;false;false;;;;;;
                                  -200751;4;0;false;false;63;95;191;;;
                                  -200755;4;0;false;false;;;;;;
                                  -200759;1;0;false;false;63;95;191;;;
                                  -200760;1;0;false;false;;;;;;
                                  -200761;2;0;false;false;63;95;191;;;
                                  -200763;1;0;false;false;;;;;;
                                  -200764;3;0;false;false;63;95;191;;;
                                  -200767;1;0;false;false;;;;;;
                                  -200768;4;0;false;false;63;95;191;;;
                                  -200772;1;0;false;false;;;;;;
                                  -200773;12;0;false;false;63;95;191;;;
                                  -200785;1;0;false;false;;;;;;
                                  -200786;2;0;false;false;63;95;191;;;
                                  -200788;1;0;false;false;;;;;;
                                  -200789;3;0;false;false;63;95;191;;;
                                  -200792;1;0;false;false;;;;;;
                                  -200793;6;0;false;false;63;95;191;;;
                                  -200799;1;0;false;false;;;;;;
                                  -200800;4;0;false;false;63;95;191;;;
                                  -200804;1;0;false;false;;;;;;
                                  -200805;6;0;false;false;63;95;191;;;
                                  -200811;1;0;false;false;;;;;;
                                  -200812;4;0;false;false;63;95;191;;;
                                  -200816;1;0;false;false;;;;;;
                                  -200817;7;0;false;false;63;95;191;;;
                                  -200824;4;0;false;false;;;;;;
                                  -200828;1;0;false;false;63;95;191;;;
                                  -200829;1;0;false;false;;;;;;
                                  -200830;3;0;false;false;63;95;191;;;
                                  -200833;1;0;false;false;;;;;;
                                  -200834;4;0;false;false;63;95;191;;;
                                  -200838;1;0;false;false;;;;;;
                                  -200839;3;0;false;false;63;95;191;;;
                                  -200842;1;0;false;false;;;;;;
                                  -200843;7;0;false;false;63;95;191;;;
                                  -200850;1;0;false;false;;;;;;
                                  -200851;5;0;false;false;63;95;191;;;
                                  -200856;1;0;false;false;;;;;;
                                  -200857;3;0;false;false;63;95;191;;;
                                  -200860;1;0;false;false;;;;;;
                                  -200861;4;0;false;false;63;95;191;;;
                                  -200865;1;0;false;false;;;;;;
                                  -200866;8;0;false;false;63;95;191;;;
                                  -200874;3;0;false;false;;;;;;
                                  -200877;1;0;false;false;63;95;191;;;
                                  -200878;1;0;false;false;;;;;;
                                  -200879;4;0;false;false;127;127;159;;;
                                  -200883;3;0;false;false;;;;;;
                                  -200886;1;0;false;false;63;95;191;;;
                                  -200887;3;0;false;false;;;;;;
                                  -200890;1;0;false;false;63;95;191;;;
                                  -200891;1;0;false;false;;;;;;
                                  -200892;7;1;false;false;127;159;191;;;
                                  -200899;1;0;false;false;63;95;191;;;
                                  -200900;1;0;false;false;;;;;;
                                  -200901;3;0;false;false;63;95;191;;;
                                  -200904;1;0;false;false;;;;;;
                                  -200905;1;0;false;false;63;95;191;;;
                                  -200906;1;0;false;false;;;;;;
                                  -200907;10;0;false;false;63;95;191;;;
                                  -200917;1;0;false;false;;;;;;
                                  -200918;2;0;false;false;63;95;191;;;
                                  -200920;1;0;false;false;;;;;;
                                  -200921;3;0;false;false;63;95;191;;;
                                  -200924;1;0;false;false;;;;;;
                                  -200925;4;0;false;false;63;95;191;;;
                                  -200929;1;0;false;false;;;;;;
                                  -200930;2;0;false;false;63;95;191;;;
                                  -200932;1;0;false;false;;;;;;
                                  -200933;4;0;false;false;63;95;191;;;
                                  -200937;3;0;false;false;;;;;;
                                  -200940;1;0;false;false;63;95;191;;;
                                  -200941;1;0;false;false;;;;;;
                                  -200942;7;1;false;false;127;159;191;;;
                                  -200949;1;0;false;false;63;95;191;;;
                                  -200950;1;0;false;false;;;;;;
                                  -200951;3;0;false;false;63;95;191;;;
                                  -200954;1;0;false;false;;;;;;
                                  -200955;1;0;false;false;63;95;191;;;
                                  -200956;1;0;false;false;;;;;;
                                  -200957;10;0;false;false;63;95;191;;;
                                  -200967;1;0;false;false;;;;;;
                                  -200968;2;0;false;false;63;95;191;;;
                                  -200970;1;0;false;false;;;;;;
                                  -200971;3;0;false;false;63;95;191;;;
                                  -200974;1;0;false;false;;;;;;
                                  -200975;4;0;false;false;63;95;191;;;
                                  -200979;1;0;false;false;;;;;;
                                  -200980;2;0;false;false;63;95;191;;;
                                  -200982;1;0;false;false;;;;;;
                                  -200983;4;0;false;false;63;95;191;;;
                                  -200987;3;0;false;false;;;;;;
                                  -200990;1;0;false;false;63;95;191;;;
                                  -200991;1;0;false;false;;;;;;
                                  -200992;7;1;false;false;127;159;191;;;
                                  -200999;5;0;false;false;63;95;191;;;
                                  -201004;1;0;false;false;;;;;;
                                  -201005;3;0;false;false;63;95;191;;;
                                  -201008;1;0;false;false;;;;;;
                                  -201009;5;0;false;false;63;95;191;;;
                                  -201014;1;0;false;false;;;;;;
                                  -201015;2;0;false;false;63;95;191;;;
                                  -201017;1;0;false;false;;;;;;
                                  -201018;3;0;false;false;63;95;191;;;
                                  -201021;1;0;false;false;;;;;;
                                  -201022;4;0;false;false;63;95;191;;;
                                  -201026;1;0;false;false;;;;;;
                                  -201027;2;0;false;false;63;95;191;;;
                                  -201029;1;0;false;false;;;;;;
                                  -201030;4;0;false;false;63;95;191;;;
                                  -201034;3;0;false;false;;;;;;
                                  -201037;1;0;false;false;63;95;191;;;
                                  -201038;1;0;false;false;;;;;;
                                  -201039;7;1;false;false;127;159;191;;;
                                  -201046;6;0;false;false;63;95;191;;;
                                  -201052;1;0;false;false;;;;;;
                                  -201053;3;0;false;false;63;95;191;;;
                                  -201056;1;0;false;false;;;;;;
                                  -201057;6;0;false;false;63;95;191;;;
                                  -201063;1;0;false;false;;;;;;
                                  -201064;2;0;false;false;63;95;191;;;
                                  -201066;1;0;false;false;;;;;;
                                  -201067;3;0;false;false;63;95;191;;;
                                  -201070;1;0;false;false;;;;;;
                                  -201071;4;0;false;false;63;95;191;;;
                                  -201075;1;0;false;false;;;;;;
                                  -201076;2;0;false;false;63;95;191;;;
                                  -201078;1;0;false;false;;;;;;
                                  -201079;4;0;false;false;63;95;191;;;
                                  -201083;3;0;false;false;;;;;;
                                  -201086;1;0;false;false;63;95;191;;;
                                  -201087;1;0;false;false;;;;;;
                                  -201088;7;1;false;false;127;159;191;;;
                                  -201095;3;0;false;false;63;95;191;;;
                                  -201098;1;0;false;false;;;;;;
                                  -201099;6;0;false;false;127;127;159;;;
                                  -201105;4;0;false;false;63;95;191;;;
                                  -201109;7;0;false;false;127;127;159;;;
                                  -201116;1;0;false;false;;;;;;
                                  -201117;2;0;false;false;63;95;191;;;
                                  -201119;1;0;false;false;;;;;;
                                  -201120;8;0;false;false;63;95;191;;;
                                  -201128;1;0;false;false;;;;;;
                                  -201129;6;0;false;false;63;95;191;;;
                                  -201135;1;0;false;false;;;;;;
                                  -201136;7;0;false;false;63;95;191;;;
                                  -201143;1;0;false;false;;;;;;
                                  -201144;3;0;false;false;63;95;191;;;
                                  -201147;1;0;false;false;;;;;;
                                  -201148;6;0;false;false;127;127;159;;;
                                  -201154;5;0;false;false;63;95;191;;;
                                  -201159;7;0;false;false;127;127;159;;;
                                  -201166;1;0;false;false;;;;;;
                                  -201167;9;0;false;false;63;95;191;;;
                                  -201176;3;0;false;false;;;;;;
                                  -201179;1;0;false;false;63;95;191;;;
                                  -201180;3;0;false;false;;;;;;
                                  -201183;1;0;false;false;63;95;191;;;
                                  -201184;1;0;false;false;;;;;;
                                  -201185;11;1;false;false;127;159;191;;;
                                  -201196;12;0;false;false;63;95;191;;;
                                  -201208;1;0;false;false;;;;;;
                                  -201209;4;0;false;false;127;127;159;;;
                                  -201213;3;0;false;false;;;;;;
                                  -201216;1;0;false;false;63;95;191;;;
                                  -201217;4;0;false;false;;;;;;
                                  -201221;4;0;false;false;127;127;159;;;
                                  -201225;21;0;false;false;63;95;191;;;
                                  -201246;1;0;false;false;;;;;;
                                  -201247;1;0;false;false;127;127;159;;;
                                  -201248;1;0;false;false;;;;;;
                                  -201249;2;0;false;false;63;95;191;;;
                                  -201251;1;0;false;false;;;;;;
                                  -201252;3;0;false;false;63;95;191;;;
                                  -201255;1;0;false;false;;;;;;
                                  -201256;8;0;false;false;63;95;191;;;
                                  -201264;1;0;false;false;;;;;;
                                  -201265;3;0;false;false;63;95;191;;;
                                  -201268;1;0;false;false;;;;;;
                                  -201269;4;0;false;false;63;95;191;;;
                                  -201273;1;0;false;false;;;;;;
                                  -201274;8;0;false;false;63;95;191;;;
                                  -201282;5;0;false;false;127;127;159;;;
                                  -201287;3;0;false;false;;;;;;
                                  -201290;1;0;false;false;63;95;191;;;
                                  -201291;4;0;false;false;;;;;;
                                  -201295;4;0;false;false;127;127;159;;;
                                  -201299;27;0;false;false;63;95;191;;;
                                  -201326;1;0;false;false;;;;;;
                                  -201327;1;0;false;false;127;127;159;;;
                                  -201328;1;0;false;false;;;;;;
                                  -201329;2;0;false;false;63;95;191;;;
                                  -201331;1;0;false;false;;;;;;
                                  -201332;3;0;false;false;63;95;191;;;
                                  -201335;1;0;false;false;;;;;;
                                  -201336;6;0;false;false;63;95;191;;;
                                  -201342;1;0;false;false;;;;;;
                                  -201343;4;0;false;false;63;95;191;;;
                                  -201347;1;0;false;false;;;;;;
                                  -201348;3;0;false;false;63;95;191;;;
                                  -201351;1;0;false;false;;;;;;
                                  -201352;6;0;false;false;63;95;191;;;
                                  -201358;1;0;false;false;;;;;;
                                  -201359;4;0;false;false;63;95;191;;;
                                  -201363;1;0;false;false;;;;;;
                                  -201364;7;0;false;false;63;95;191;;;
                                  -201371;1;0;false;false;;;;;;
                                  -201372;3;0;false;false;63;95;191;;;
                                  -201375;1;0;false;false;;;;;;
                                  -201376;8;0;false;false;63;95;191;;;
                                  -201384;5;0;false;false;127;127;159;;;
                                  -201389;3;0;false;false;;;;;;
                                  -201392;1;0;false;false;63;95;191;;;
                                  -201393;1;0;false;false;;;;;;
                                  -201394;5;0;false;false;127;127;159;;;
                                  -201399;3;0;false;false;;;;;;
                                  -201402;1;0;false;false;63;95;191;;;
                                  -201403;3;0;false;false;;;;;;
                                  -201406;1;0;false;false;63;95;191;;;
                                  -201407;1;0;false;false;;;;;;
                                  -201408;5;1;false;false;127;159;191;;;
                                  -201413;14;0;false;false;63;95;191;;;
                                  -201427;3;0;false;false;;;;;;
                                  -201430;2;0;false;false;63;95;191;;;
                                  -201432;2;0;false;false;;;;;;
                                  -201434;6;1;false;false;127;0;85;;;
                                  -201440;1;0;false;false;;;;;;
                                  -201441;4;1;false;false;127;0;85;;;
                                  -201445;1;0;false;false;;;;;;
                                  -201446;7;0;false;false;0;0;0;;;
                                  -201453;3;1;false;false;127;0;85;;;
                                  -201456;1;0;false;false;;;;;;
                                  -201457;2;0;false;false;0;0;0;;;
                                  -201459;1;0;false;false;;;;;;
                                  -201460;3;1;false;false;127;0;85;;;
                                  -201463;1;0;false;false;;;;;;
                                  -201464;2;0;false;false;0;0;0;;;
                                  -201466;1;0;false;false;;;;;;
                                  -201467;3;1;false;false;127;0;85;;;
                                  -201470;1;0;false;false;;;;;;
                                  -201471;6;0;false;false;0;0;0;;;
                                  -201477;1;0;false;false;;;;;;
                                  -201478;3;1;false;false;127;0;85;;;
                                  -201481;1;0;false;false;;;;;;
                                  -201482;7;0;false;false;0;0;0;;;
                                  -201489;1;0;false;false;;;;;;
                                  -201490;7;1;false;false;127;0;85;;;
                                  -201497;1;0;false;false;;;;;;
                                  -201498;4;0;false;false;0;0;0;;;
                                  -201502;1;0;false;false;;;;;;
                                  -201503;1;0;false;false;0;0;0;;;
                                  -201504;3;0;false;false;;;;;;
                                  -201507;5;1;false;false;127;0;85;;;
                                  -201512;10;0;false;false;0;0;0;;;
                                  -201522;1;0;false;false;;;;;;
                                  -201523;2;0;false;false;0;0;0;;;
                                  -201525;1;0;false;false;;;;;;
                                  -201526;6;0;false;false;0;0;0;;;
                                  -201532;1;0;false;false;;;;;;
                                  -201533;7;0;false;false;0;0;0;;;
                                  -201540;1;0;false;false;;;;;;
                                  -201541;5;0;false;false;0;0;0;;;
                                  -201546;3;0;false;false;;;;;;
                                  -201549;2;1;false;false;127;0;85;;;
                                  -201551;1;0;false;false;;;;;;
                                  -201552;7;0;false;false;0;0;0;;;
                                  -201559;1;0;false;false;;;;;;
                                  -201560;1;0;false;false;0;0;0;;;
                                  -201561;1;0;false;false;;;;;;
                                  -201562;2;0;false;false;0;0;0;;;
                                  -201564;1;0;false;false;;;;;;
                                  -201565;1;0;false;false;0;0;0;;;
                                  -201566;4;0;false;false;;;;;;
                                  -201570;3;1;false;false;127;0;85;;;
                                  -201573;1;0;false;false;;;;;;
                                  -201574;9;0;false;false;0;0;0;;;
                                  -201583;1;0;false;false;;;;;;
                                  -201584;1;0;false;false;0;0;0;;;
                                  -201585;1;0;false;false;;;;;;
                                  -201586;23;0;false;false;0;0;0;;;
                                  -201609;4;0;false;false;;;;;;
                                  -201613;3;1;false;false;127;0;85;;;
                                  -201616;1;0;false;false;;;;;;
                                  -201617;9;0;false;false;0;0;0;;;
                                  -201626;1;0;false;false;;;;;;
                                  -201627;1;0;false;false;0;0;0;;;
                                  -201628;1;0;false;false;;;;;;
                                  -201629;14;0;false;false;0;0;0;;;
                                  -201643;1;0;false;false;;;;;;
                                  -201644;1;0;false;false;0;0;0;;;
                                  -201645;1;0;false;false;;;;;;
                                  -201646;2;0;false;false;0;0;0;;;
                                  -201648;1;0;false;false;;;;;;
                                  -201649;1;0;false;false;0;0;0;;;
                                  -201650;1;0;false;false;;;;;;
                                  -201651;11;0;false;false;0;0;0;;;
                                  -201662;4;0;false;false;;;;;;
                                  -201666;3;1;false;false;127;0;85;;;
                                  -201669;1;0;false;false;;;;;;
                                  -201670;7;0;false;false;0;0;0;;;
                                  -201677;1;0;false;false;;;;;;
                                  -201678;1;0;false;false;0;0;0;;;
                                  -201679;1;0;false;false;;;;;;
                                  -201680;9;0;false;false;0;0;0;;;
                                  -201689;1;0;false;false;;;;;;
                                  -201690;1;0;false;false;0;0;0;;;
                                  -201691;1;0;false;false;;;;;;
                                  -201692;26;0;false;false;0;0;0;;;
                                  -201718;1;0;false;false;;;;;;
                                  -201719;12;0;false;false;0;0;0;;;
                                  -201731;4;0;false;false;;;;;;
                                  -201735;3;1;false;false;127;0;85;;;
                                  -201738;1;0;false;false;;;;;;
                                  -201739;10;0;false;false;0;0;0;;;
                                  -201749;8;0;false;false;;;;;;
                                  -201757;44;0;false;false;63;127;95;;;
                                  -201801;2;0;false;false;;;;;;
                                  -201803;9;0;false;false;0;0;0;;;
                                  -201812;1;0;false;false;;;;;;
                                  -201813;1;0;false;false;0;0;0;;;
                                  -201814;1;0;false;false;;;;;;
                                  -201815;19;0;false;false;0;0;0;;;
                                  -201834;1;0;false;false;;;;;;
                                  -201835;11;0;false;false;0;0;0;;;
                                  -201846;4;0;false;false;;;;;;
                                  -201850;9;0;false;false;0;0;0;;;
                                  -201859;1;0;false;false;;;;;;
                                  -201860;1;0;false;false;0;0;0;;;
                                  -201861;1;0;false;false;;;;;;
                                  -201862;17;0;false;false;0;0;0;;;
                                  -201879;1;0;false;false;;;;;;
                                  -201880;10;0;false;false;0;0;0;;;
                                  -201890;1;0;false;false;;;;;;
                                  -201891;1;0;false;false;0;0;0;;;
                                  -201892;1;0;false;false;;;;;;
                                  -201893;10;0;false;false;0;0;0;;;
                                  -201903;4;0;false;false;;;;;;
                                  -201907;26;0;false;false;0;0;0;;;
                                  -201933;1;0;false;false;;;;;;
                                  -201934;10;0;false;false;0;0;0;;;
                                  -201944;1;0;false;false;;;;;;
                                  -201945;4;1;false;false;127;0;85;;;
                                  -201949;2;0;false;false;0;0;0;;;
                                  -201951;4;0;false;false;;;;;;
                                  -201955;37;0;false;false;63;127;95;;;
                                  -201992;2;0;false;false;;;;;;
                                  -201994;9;0;false;false;0;0;0;;;
                                  -202003;1;0;false;false;;;;;;
                                  -202004;1;0;false;false;0;0;0;;;
                                  -202005;1;0;false;false;;;;;;
                                  -202006;23;0;false;false;0;0;0;;;
                                  -202029;1;0;false;false;;;;;;
                                  -202030;1;0;false;false;0;0;0;;;
                                  -202031;1;0;false;false;;;;;;
                                  -202032;8;0;false;false;0;0;0;;;
                                  -202040;1;0;false;false;;;;;;
                                  -202041;1;0;false;false;0;0;0;;;
                                  -202042;1;0;false;false;;;;;;
                                  -202043;2;0;false;false;0;0;0;;;
                                  -202045;4;0;false;false;;;;;;
                                  -202049;29;0;false;false;0;0;0;;;
                                  -202078;1;0;false;false;;;;;;
                                  -202079;11;0;false;false;0;0;0;;;
                                  -202090;4;0;false;false;;;;;;
                                  -202094;25;0;false;false;0;0;0;;;
                                  -202119;3;0;false;false;;;;;;
                                  -202122;1;0;false;false;0;0;0;;;
                                  -202123;2;0;false;false;;;;;;
                                  -202125;1;0;false;false;0;0;0;;;
                                  -202126;2;0;false;false;;;;;;
                                  -202128;3;0;false;false;63;95;191;;;
                                  -202131;4;0;false;false;;;;;;
                                  -202135;1;0;false;false;63;95;191;;;
                                  -202136;1;0;false;false;;;;;;
                                  -202137;7;0;false;false;63;95;191;;;
                                  -202144;1;0;false;false;;;;;;
                                  -202145;1;0;false;false;63;95;191;;;
                                  -202146;1;0;false;false;;;;;;
                                  -202147;4;0;false;false;63;95;191;;;
                                  -202151;1;0;false;false;;;;;;
                                  -202152;5;0;false;false;63;95;191;;;
                                  -202157;1;0;false;false;;;;;;
                                  -202158;2;0;false;false;63;95;191;;;
                                  -202160;1;0;false;false;;;;;;
                                  -202161;3;0;false;false;63;95;191;;;
                                  -202164;1;0;false;false;;;;;;
                                  -202165;9;0;false;false;63;95;191;;;
                                  -202174;1;0;false;false;;;;;;
                                  -202175;5;0;false;false;63;95;191;;;
                                  -202180;3;0;false;false;;;;;;
                                  -202183;1;0;false;false;63;95;191;;;
                                  -202184;1;0;false;false;;;;;;
                                  -202185;3;0;false;false;127;127;159;;;
                                  -202188;3;0;false;false;;;;;;
                                  -202191;1;0;false;false;63;95;191;;;
                                  -202192;3;0;false;false;;;;;;
                                  -202195;1;0;false;false;63;95;191;;;
                                  -202196;1;0;false;false;;;;;;
                                  -202197;7;1;false;false;127;159;191;;;
                                  -202204;9;0;false;false;63;95;191;;;
                                  -202213;1;0;false;false;;;;;;
                                  -202214;5;0;false;false;63;95;191;;;
                                  -202219;1;0;false;false;;;;;;
                                  -202220;4;0;false;false;63;95;191;;;
                                  -202224;1;0;false;false;;;;;;
                                  -202225;2;0;false;false;63;95;191;;;
                                  -202227;1;0;false;false;;;;;;
                                  -202228;6;0;false;false;63;95;191;;;
                                  -202234;1;0;false;false;;;;;;
                                  -202235;2;0;false;false;63;95;191;;;
                                  -202237;1;0;false;false;;;;;;
                                  -202238;3;0;false;false;63;95;191;;;
                                  -202241;1;0;false;false;;;;;;
                                  -202242;9;0;false;false;63;95;191;;;
                                  -202251;1;0;false;false;;;;;;
                                  -202252;6;0;false;false;63;95;191;;;
                                  -202258;3;0;false;false;;;;;;
                                  -202261;1;0;false;false;63;95;191;;;
                                  -202262;1;0;false;false;;;;;;
                                  -202263;7;1;false;false;127;159;191;;;
                                  -202270;17;0;false;false;63;95;191;;;
                                  -202287;1;0;false;false;;;;;;
                                  -202288;6;0;false;false;63;95;191;;;
                                  -202294;1;0;false;false;;;;;;
                                  -202295;2;0;false;false;63;95;191;;;
                                  -202297;1;0;false;false;;;;;;
                                  -202298;9;0;false;false;63;95;191;;;
                                  -202307;1;0;false;false;;;;;;
                                  -202308;2;0;false;false;63;95;191;;;
                                  -202310;1;0;false;false;;;;;;
                                  -202311;5;0;false;false;63;95;191;;;
                                  -202316;1;0;false;false;;;;;;
                                  -202317;9;0;false;false;63;95;191;;;
                                  -202326;3;0;false;false;;;;;;
                                  -202329;1;0;false;false;63;95;191;;;
                                  -202330;1;0;false;false;;;;;;
                                  -202331;7;1;false;false;127;159;191;;;
                                  -202338;8;0;false;false;63;95;191;;;
                                  -202346;1;0;false;false;;;;;;
                                  -202347;4;0;false;false;63;95;191;;;
                                  -202351;1;0;false;false;;;;;;
                                  -202352;4;0;false;false;63;95;191;;;
                                  -202356;1;0;false;false;;;;;;
                                  -202357;2;0;false;false;63;95;191;;;
                                  -202359;1;0;false;false;;;;;;
                                  -202360;6;0;false;false;63;95;191;;;
                                  -202366;3;0;false;false;;;;;;
                                  -202369;1;0;false;false;63;95;191;;;
                                  -202370;1;0;false;false;;;;;;
                                  -202371;7;1;false;false;127;159;191;;;
                                  -202378;9;0;false;false;63;95;191;;;
                                  -202387;1;0;false;false;;;;;;
                                  -202388;6;0;false;false;63;95;191;;;
                                  -202394;1;0;false;false;;;;;;
                                  -202395;2;0;false;false;63;95;191;;;
                                  -202397;1;0;false;false;;;;;;
                                  -202398;3;0;false;false;63;95;191;;;
                                  -202401;1;0;false;false;;;;;;
                                  -202402;4;0;false;false;63;95;191;;;
                                  -202406;1;0;false;false;;;;;;
                                  -202407;5;0;false;false;63;95;191;;;
                                  -202412;1;0;false;false;;;;;;
                                  -202413;9;0;false;false;63;95;191;;;
                                  -202422;1;0;false;false;;;;;;
                                  -202423;6;0;false;false;63;95;191;;;
                                  -202429;1;0;false;false;;;;;;
                                  -202430;4;0;false;false;63;95;191;;;
                                  -202434;3;0;false;false;;;;;;
                                  -202437;1;0;false;false;63;95;191;;;
                                  -202438;1;0;false;false;;;;;;
                                  -202439;7;1;false;false;127;159;191;;;
                                  -202446;15;0;false;false;63;95;191;;;
                                  -202461;1;0;false;false;;;;;;
                                  -202462;10;0;false;false;63;95;191;;;
                                  -202472;1;0;false;false;;;;;;
                                  -202473;3;0;false;false;63;95;191;;;
                                  -202476;1;0;false;false;;;;;;
                                  -202477;10;0;false;false;63;95;191;;;
                                  -202487;1;0;false;false;;;;;;
                                  -202488;2;0;false;false;63;95;191;;;
                                  -202490;1;0;false;false;;;;;;
                                  -202491;12;0;false;false;63;95;191;;;
                                  -202503;3;0;false;false;;;;;;
                                  -202506;1;0;false;false;63;95;191;;;
                                  -202507;2;0;false;false;;;;;;
                                  -202509;3;0;false;false;63;95;191;;;
                                  -202512;1;0;false;false;;;;;;
                                  -202513;9;0;false;false;63;95;191;;;
                                  -202522;1;0;false;false;;;;;;
                                  -202523;6;0;false;false;63;95;191;;;
                                  -202529;1;0;false;false;;;;;;
                                  -202530;6;0;false;false;63;95;191;;;
                                  -202536;1;0;false;false;;;;;;
                                  -202537;2;0;false;false;63;95;191;;;
                                  -202539;1;0;false;false;;;;;;
                                  -202540;3;0;false;false;63;95;191;;;
                                  -202543;1;0;false;false;;;;;;
                                  -202544;6;0;false;false;63;95;191;;;
                                  -202550;1;0;false;false;;;;;;
                                  -202551;5;0;false;false;63;95;191;;;
                                  -202556;1;0;false;false;;;;;;
                                  -202557;8;0;false;false;63;95;191;;;
                                  -202565;1;0;false;false;;;;;;
                                  -202566;3;0;false;false;63;95;191;;;
                                  -202569;4;0;false;false;;;;;;
                                  -202573;1;0;false;false;63;95;191;;;
                                  -202574;2;0;false;false;;;;;;
                                  -202576;4;0;false;false;63;95;191;;;
                                  -202580;1;0;false;false;;;;;;
                                  -202581;9;0;false;false;63;95;191;;;
                                  -202590;1;0;false;false;;;;;;
                                  -202591;2;0;false;false;63;95;191;;;
                                  -202593;1;0;false;false;;;;;;
                                  -202594;1;0;false;false;63;95;191;;;
                                  -202595;1;0;false;false;;;;;;
                                  -202596;4;0;false;false;63;95;191;;;
                                  -202600;1;0;false;false;;;;;;
                                  -202601;6;0;false;false;63;95;191;;;
                                  -202607;1;0;false;false;;;;;;
                                  -202608;3;0;false;false;63;95;191;;;
                                  -202611;1;0;false;false;;;;;;
                                  -202612;6;0;false;false;63;95;191;;;
                                  -202618;1;0;false;false;;;;;;
                                  -202619;4;0;false;false;63;95;191;;;
                                  -202623;1;0;false;false;;;;;;
                                  -202624;2;0;false;false;63;95;191;;;
                                  -202626;1;0;false;false;;;;;;
                                  -202627;8;0;false;false;63;95;191;;;
                                  -202635;1;0;false;false;;;;;;
                                  -202636;3;0;false;false;63;95;191;;;
                                  -202639;4;0;false;false;;;;;;
                                  -202643;1;0;false;false;63;95;191;;;
                                  -202644;2;0;false;false;;;;;;
                                  -202646;4;0;false;false;63;95;191;;;
                                  -202650;1;0;false;false;;;;;;
                                  -202651;2;0;false;false;63;95;191;;;
                                  -202653;1;0;false;false;;;;;;
                                  -202654;7;0;false;false;63;95;191;;;
                                  -202661;1;0;false;false;;;;;;
                                  -202662;3;0;false;false;63;95;191;;;
                                  -202665;1;0;false;false;;;;;;
                                  -202666;3;0;false;false;63;95;191;;;
                                  -202669;1;0;false;false;;;;;;
                                  -202670;3;0;false;false;63;95;191;;;
                                  -202673;1;0;false;false;;;;;;
                                  -202674;2;0;false;false;63;95;191;;;
                                  -202676;1;0;false;false;;;;;;
                                  -202677;3;0;false;false;63;95;191;;;
                                  -202680;1;0;false;false;;;;;;
                                  -202681;5;0;false;false;63;95;191;;;
                                  -202686;1;0;false;false;;;;;;
                                  -202687;6;0;false;false;63;95;191;;;
                                  -202693;1;0;false;false;;;;;;
                                  -202694;2;0;false;false;63;95;191;;;
                                  -202696;1;0;false;false;;;;;;
                                  -202697;3;0;false;false;63;95;191;;;
                                  -202700;1;0;false;false;;;;;;
                                  -202701;7;0;false;false;63;95;191;;;
                                  -202708;3;0;false;false;;;;;;
                                  -202711;1;0;false;false;63;95;191;;;
                                  -202712;2;0;false;false;;;;;;
                                  -202714;10;0;false;false;63;95;191;;;
                                  -202724;1;0;false;false;;;;;;
                                  -202725;3;0;false;false;63;95;191;;;
                                  -202728;1;0;false;false;;;;;;
                                  -202729;10;0;false;false;63;95;191;;;
                                  -202739;1;0;false;false;;;;;;
                                  -202740;8;0;false;false;63;95;191;;;
                                  -202748;1;0;false;false;;;;;;
                                  -202749;7;0;false;false;63;95;191;;;
                                  -202756;1;0;false;false;;;;;;
                                  -202757;12;0;false;false;63;95;191;;;
                                  -202769;1;0;false;false;;;;;;
                                  -202770;3;0;false;false;63;95;191;;;
                                  -202773;4;0;false;false;;;;;;
                                  -202777;1;0;false;false;63;95;191;;;
                                  -202778;2;0;false;false;;;;;;
                                  -202780;6;0;false;false;63;95;191;;;
                                  -202786;1;0;false;false;;;;;;
                                  -202787;6;0;false;false;63;95;191;;;
                                  -202793;3;0;false;false;;;;;;
                                  -202796;2;0;false;false;63;95;191;;;
                                  -202798;2;0;false;false;;;;;;
                                  -202800;4;1;false;false;127;0;85;;;
                                  -202804;1;0;false;false;;;;;;
                                  -202805;12;0;false;false;0;0;0;;;
                                  -202817;3;1;false;false;127;0;85;;;
                                  -202820;1;0;false;false;;;;;;
                                  -202821;10;0;false;false;0;0;0;;;
                                  -202831;1;0;false;false;;;;;;
                                  -202832;3;1;false;false;127;0;85;;;
                                  -202835;1;0;false;false;;;;;;
                                  -202836;18;0;false;false;0;0;0;;;
                                  -202854;1;0;false;false;;;;;;
                                  -202855;3;1;false;false;127;0;85;;;
                                  -202858;1;0;false;false;;;;;;
                                  -202859;9;0;false;false;0;0;0;;;
                                  -202868;1;0;false;false;;;;;;
                                  -202869;3;1;false;false;127;0;85;;;
                                  -202872;1;0;false;false;;;;;;
                                  -202873;10;0;false;false;0;0;0;;;
                                  -202883;1;0;false;false;;;;;;
                                  -202884;7;1;false;false;127;0;85;;;
                                  -202891;1;0;false;false;;;;;;
                                  -202892;16;0;false;false;0;0;0;;;
                                  -202908;1;0;false;false;;;;;;
                                  -202909;1;0;false;false;0;0;0;;;
                                  -202910;3;0;false;false;;;;;;
                                  -202913;6;0;false;false;0;0;0;;;
                                  -202919;1;0;false;false;;;;;;
                                  -202920;4;0;false;false;0;0;0;;;
                                  -202924;1;0;false;false;;;;;;
                                  -202925;1;0;false;false;0;0;0;;;
                                  -202926;1;0;false;false;;;;;;
                                  -202927;27;0;false;false;0;0;0;;;
                                  -202954;3;0;false;false;;;;;;
                                  -202957;3;1;false;false;127;0;85;;;
                                  -202960;1;0;false;false;;;;;;
                                  -202961;9;0;false;false;0;0;0;;;
                                  -202970;1;0;false;false;;;;;;
                                  -202971;1;0;false;false;0;0;0;;;
                                  -202972;1;0;false;false;;;;;;
                                  -202973;8;0;false;false;0;0;0;;;
                                  -202981;1;0;false;false;;;;;;
                                  -202982;1;0;false;false;0;0;0;;;
                                  -202983;1;0;false;false;;;;;;
                                  -202984;9;0;false;false;0;0;0;;;
                                  -202993;1;0;false;false;;;;;;
                                  -202994;1;0;false;false;0;0;0;;;
                                  -202995;1;0;false;false;;;;;;
                                  -202996;2;0;false;false;0;0;0;;;
                                  -202998;3;0;false;false;;;;;;
                                  -203001;3;1;false;false;127;0;85;;;
                                  -203004;1;0;false;false;;;;;;
                                  -203005;8;0;false;false;0;0;0;;;
                                  -203013;1;0;false;false;;;;;;
                                  -203014;12;0;false;false;0;0;0;;;
                                  -203026;3;0;false;false;;;;;;
                                  -203029;3;1;false;false;127;0;85;;;
                                  -203032;1;0;false;false;;;;;;
                                  -203033;10;0;false;false;0;0;0;;;
                                  -203043;1;0;false;false;;;;;;
                                  -203044;1;0;false;false;0;0;0;;;
                                  -203045;1;0;false;false;;;;;;
                                  -203046;35;0;false;false;0;0;0;;;
                                  -203081;3;0;false;false;;;;;;
                                  -203084;7;1;false;false;127;0;85;;;
                                  -203091;1;0;false;false;;;;;;
                                  -203092;15;0;false;false;0;0;0;;;
                                  -203107;3;0;false;false;;;;;;
                                  -203110;9;0;false;false;0;0;0;;;
                                  -203119;1;0;false;false;;;;;;
                                  -203120;10;0;false;false;0;0;0;;;
                                  -203130;1;0;false;false;;;;;;
                                  -203131;1;0;false;false;0;0;0;;;
                                  -203132;1;0;false;false;;;;;;
                                  -203133;16;0;false;false;0;0;0;;;
                                  -203149;6;0;false;false;;;;;;
                                  -203155;14;0;false;false;0;0;0;;;
                                  -203169;1;0;false;false;;;;;;
                                  -203170;1;0;false;false;0;0;0;;;
                                  -203171;1;0;false;false;;;;;;
                                  -203172;12;0;false;false;0;0;0;;;
                                  -203184;1;0;false;false;;;;;;
                                  -203185;1;0;false;false;0;0;0;;;
                                  -203186;1;0;false;false;;;;;;
                                  -203187;19;0;false;false;0;0;0;;;
                                  -203206;1;0;false;false;;;;;;
                                  -203207;2;0;false;false;0;0;0;;;
                                  -203209;1;0;false;false;;;;;;
                                  -203210;1;0;false;false;0;0;0;;;
                                  -203211;1;0;false;false;;;;;;
                                  -203212;2;0;false;false;0;0;0;;;
                                  -203214;1;0;false;false;;;;;;
                                  -203215;8;0;false;false;0;0;0;;;
                                  -203223;1;0;false;false;;;;;;
                                  -203224;1;0;false;false;0;0;0;;;
                                  -203225;1;0;false;false;;;;;;
                                  -203226;11;0;false;false;0;0;0;;;
                                  -203237;3;0;false;false;;;;;;
                                  -203240;64;0;false;false;63;127;95;;;
                                  -203304;1;0;false;false;;;;;;
                                  -203305;62;0;false;false;63;127;95;;;
                                  -203367;1;0;false;false;;;;;;
                                  -203368;2;1;false;false;127;0;85;;;
                                  -203370;1;0;false;false;;;;;;
                                  -203371;16;0;false;false;0;0;0;;;
                                  -203387;1;0;false;false;;;;;;
                                  -203388;2;0;false;false;0;0;0;;;
                                  -203390;1;0;false;false;;;;;;
                                  -203391;9;0;false;false;0;0;0;;;
                                  -203400;1;0;false;false;;;;;;
                                  -203401;1;0;false;false;0;0;0;;;
                                  -203402;1;0;false;false;;;;;;
                                  -203403;10;0;false;false;0;0;0;;;
                                  -203413;1;0;false;false;;;;;;
                                  -203414;2;0;false;false;0;0;0;;;
                                  -203416;1;0;false;false;;;;;;
                                  -203417;14;0;false;false;0;0;0;;;
                                  -203431;1;0;false;false;;;;;;
                                  -203432;1;0;false;false;0;0;0;;;
                                  -203433;4;0;false;false;;;;;;
                                  -203437;14;0;false;false;0;0;0;;;
                                  -203451;1;0;false;false;;;;;;
                                  -203452;1;0;false;false;0;0;0;;;
                                  -203453;1;0;false;false;;;;;;
                                  -203454;4;1;false;false;127;0;85;;;
                                  -203458;1;0;false;false;0;0;0;;;
                                  -203459;3;0;false;false;;;;;;
                                  -203462;1;0;false;false;0;0;0;;;
                                  -203463;4;0;false;false;;;;;;
                                  -203467;10;0;false;false;0;0;0;;;
                                  -203477;1;0;false;false;;;;;;
                                  -203478;6;0;false;false;0;0;0;;;
                                  -203484;1;0;false;false;;;;;;
                                  -203485;1;0;false;false;0;0;0;;;
                                  -203486;1;0;false;false;;;;;;
                                  -203487;28;0;false;false;0;0;0;;;
                                  -203515;1;0;false;false;;;;;;
                                  -203516;12;0;false;false;0;0;0;;;
                                  -203528;3;0;false;false;;;;;;
                                  -203531;9;0;false;false;0;0;0;;;
                                  -203540;1;0;false;false;;;;;;
                                  -203541;4;0;false;false;0;0;0;;;
                                  -203545;1;0;false;false;;;;;;
                                  -203546;1;0;false;false;0;0;0;;;
                                  -203547;1;0;false;false;;;;;;
                                  -203548;35;0;false;false;0;0;0;;;
                                  -203583;1;0;false;false;;;;;;
                                  -203584;19;0;false;false;0;0;0;;;
                                  -203603;1;0;false;false;;;;;;
                                  -203604;14;0;false;false;0;0;0;;;
                                  -203618;1;0;false;false;;;;;;
                                  -203619;1;0;false;false;0;0;0;;;
                                  -203620;1;0;false;false;;;;;;
                                  -203621;3;0;false;false;0;0;0;;;
                                  -203624;3;0;false;false;;;;;;
                                  -203627;35;0;false;false;0;0;0;;;
                                  -203662;3;0;false;false;;;;;;
                                  -203665;6;0;false;false;0;0;0;;;
                                  -203671;1;0;false;false;;;;;;
                                  -203672;2;0;false;false;0;0;0;;;
                                  -203674;1;0;false;false;;;;;;
                                  -203675;23;0;false;false;0;0;0;;;
                                  -203698;3;0;false;false;;;;;;
                                  -203701;27;0;false;false;0;0;0;;;
                                  -203728;3;0;false;false;;;;;;
                                  -203731;7;0;false;false;0;0;0;;;
                                  -203738;1;0;false;false;;;;;;
                                  -203739;1;0;false;false;0;0;0;;;
                                  -203740;1;0;false;false;;;;;;
                                  -203741;9;0;false;false;0;0;0;;;
                                  -203750;1;0;false;false;;;;;;
                                  -203751;1;0;false;false;0;0;0;;;
                                  -203752;1;0;false;false;;;;;;
                                  -203753;10;0;false;false;0;0;0;;;
                                  -203763;1;0;false;false;;;;;;
                                  -203764;1;0;false;false;0;0;0;;;
                                  -203765;1;0;false;false;;;;;;
                                  -203766;21;0;false;false;0;0;0;;;
                                  -203787;3;0;false;false;;;;;;
                                  -203790;11;0;false;false;0;0;0;;;
                                  -203801;1;0;false;false;;;;;;
                                  -203802;1;0;false;false;0;0;0;;;
                                  -203803;1;0;false;false;;;;;;
                                  -203804;14;0;false;false;0;0;0;;;
                                  -203818;1;0;false;false;;;;;;
                                  -203819;1;0;false;false;0;0;0;;;
                                  -203820;1;0;false;false;;;;;;
                                  -203821;16;0;false;false;0;0;0;;;
                                  -203837;1;0;false;false;;;;;;
                                  -203838;1;0;false;false;0;0;0;;;
                                  -203839;1;0;false;false;;;;;;
                                  -203840;10;0;false;false;0;0;0;;;
                                  -203850;1;0;false;false;;;;;;
                                  -203851;1;0;false;false;0;0;0;;;
                                  -203852;1;0;false;false;;;;;;
                                  -203853;11;0;false;false;0;0;0;;;
                                  -203864;1;0;false;false;;;;;;
                                  -203865;1;0;false;false;0;0;0;;;
                                  -203866;1;0;false;false;;;;;;
                                  -203867;11;0;false;false;0;0;0;;;
                                  -203878;3;0;false;false;;;;;;
                                  -203881;12;0;false;false;0;0;0;;;
                                  -203893;1;0;false;false;;;;;;
                                  -203894;8;0;false;false;0;0;0;;;
                                  -203902;1;0;false;false;;;;;;
                                  -203903;12;0;false;false;0;0;0;;;
                                  -203915;1;0;false;false;;;;;;
                                  -203916;11;0;false;false;0;0;0;;;
                                  -203927;1;0;false;false;;;;;;
                                  -203928;17;0;false;false;0;0;0;;;
                                  -203945;6;0;false;false;;;;;;
                                  -203951;60;0;false;false;63;127;95;;;
                                  -204011;1;0;false;false;;;;;;
                                  -204012;2;1;false;false;127;0;85;;;
                                  -204014;1;0;false;false;;;;;;
                                  -204015;10;0;false;false;0;0;0;;;
                                  -204025;1;0;false;false;;;;;;
                                  -204026;1;0;false;false;0;0;0;;;
                                  -204027;1;0;false;false;;;;;;
                                  -204028;2;0;false;false;0;0;0;;;
                                  -204030;1;0;false;false;;;;;;
                                  -204031;1;0;false;false;0;0;0;;;
                                  -204032;4;0;false;false;;;;;;
                                  -204036;10;0;false;false;0;0;0;;;
                                  -204046;1;0;false;false;;;;;;
                                  -204047;1;0;false;false;0;0;0;;;
                                  -204048;1;0;false;false;;;;;;
                                  -204049;34;0;false;false;0;0;0;;;
                                  -204083;4;0;false;false;;;;;;
                                  -204087;3;1;false;false;127;0;85;;;
                                  -204090;1;0;false;false;;;;;;
                                  -204091;16;0;false;false;0;0;0;;;
                                  -204107;1;0;false;false;;;;;;
                                  -204108;1;0;false;false;0;0;0;;;
                                  -204109;1;0;false;false;;;;;;
                                  -204110;9;0;false;false;0;0;0;;;
                                  -204119;1;0;false;false;;;;;;
                                  -204120;1;0;false;false;0;0;0;;;
                                  -204121;1;0;false;false;;;;;;
                                  -204122;11;0;false;false;0;0;0;;;
                                  -204133;5;0;false;false;;;;;;
                                  -204138;46;0;false;false;63;127;95;;;
                                  -204184;2;0;false;false;;;;;;
                                  -204186;2;1;false;false;127;0;85;;;
                                  -204188;1;0;false;false;;;;;;
                                  -204189;17;0;false;false;0;0;0;;;
                                  -204206;1;0;false;false;;;;;;
                                  -204207;1;0;false;false;0;0;0;;;
                                  -204208;1;0;false;false;;;;;;
                                  -204209;2;0;false;false;0;0;0;;;
                                  -204211;1;0;false;false;;;;;;
                                  -204212;1;0;false;false;0;0;0;;;
                                  -204213;5;0;false;false;;;;;;
                                  -204218;4;0;false;false;0;0;0;;;
                                  -204222;1;0;false;false;;;;;;
                                  -204223;1;0;false;false;0;0;0;;;
                                  -204224;1;0;false;false;;;;;;
                                  -204225;26;0;false;false;0;0;0;;;
                                  -204251;5;0;false;false;;;;;;
                                  -204256;63;0;false;false;63;127;95;;;
                                  -204319;3;0;false;false;;;;;;
                                  -204322;62;0;false;false;63;127;95;;;
                                  -204384;3;0;false;false;;;;;;
                                  -204387;2;1;false;false;127;0;85;;;
                                  -204389;1;0;false;false;;;;;;
                                  -204390;16;0;false;false;0;0;0;;;
                                  -204406;1;0;false;false;;;;;;
                                  -204407;2;0;false;false;0;0;0;;;
                                  -204409;1;0;false;false;;;;;;
                                  -204410;16;0;false;false;0;0;0;;;
                                  -204426;1;0;false;false;;;;;;
                                  -204427;2;0;false;false;0;0;0;;;
                                  -204429;1;0;false;false;;;;;;
                                  -204430;14;0;false;false;0;0;0;;;
                                  -204444;1;0;false;false;;;;;;
                                  -204445;1;0;false;false;0;0;0;;;
                                  -204446;6;0;false;false;;;;;;
                                  -204452;14;0;false;false;0;0;0;;;
                                  -204466;1;0;false;false;;;;;;
                                  -204467;1;0;false;false;0;0;0;;;
                                  -204468;1;0;false;false;;;;;;
                                  -204469;4;1;false;false;127;0;85;;;
                                  -204473;1;0;false;false;0;0;0;;;
                                  -204474;5;0;false;false;;;;;;
                                  -204479;1;0;false;false;0;0;0;;;
                                  -204480;5;0;false;false;;;;;;
                                  -204485;4;0;false;false;0;0;0;;;
                                  -204489;1;0;false;false;;;;;;
                                  -204490;1;0;false;false;0;0;0;;;
                                  -204491;1;0;false;false;;;;;;
                                  -204492;26;0;false;false;0;0;0;;;
                                  -204518;5;0;false;false;;;;;;
                                  -204523;6;0;false;false;0;0;0;;;
                                  -204529;1;0;false;false;;;;;;
                                  -204530;1;0;false;false;0;0;0;;;
                                  -204531;1;0;false;false;;;;;;
                                  -204532;28;0;false;false;0;0;0;;;
                                  -204560;1;0;false;false;;;;;;
                                  -204561;12;0;false;false;0;0;0;;;
                                  -204573;5;0;false;false;;;;;;
                                  -204578;4;0;false;false;0;0;0;;;
                                  -204582;1;0;false;false;;;;;;
                                  -204583;1;0;false;false;0;0;0;;;
                                  -204584;1;0;false;false;;;;;;
                                  -204585;19;0;false;false;0;0;0;;;
                                  -204604;1;0;false;false;;;;;;
                                  -204605;16;0;false;false;0;0;0;;;
                                  -204621;1;0;false;false;;;;;;
                                  -204622;1;0;false;false;0;0;0;;;
                                  -204623;1;0;false;false;;;;;;
                                  -204624;3;0;false;false;0;0;0;;;
                                  -204627;5;0;false;false;;;;;;
                                  -204632;35;0;false;false;0;0;0;;;
                                  -204667;5;0;false;false;;;;;;
                                  -204672;6;0;false;false;0;0;0;;;
                                  -204678;1;0;false;false;;;;;;
                                  -204679;2;0;false;false;0;0;0;;;
                                  -204681;1;0;false;false;;;;;;
                                  -204682;23;0;false;false;0;0;0;;;
                                  -204705;5;0;false;false;;;;;;
                                  -204710;27;0;false;false;0;0;0;;;
                                  -204737;5;0;false;false;;;;;;
                                  -204742;7;0;false;false;0;0;0;;;
                                  -204749;1;0;false;false;;;;;;
                                  -204750;1;0;false;false;0;0;0;;;
                                  -204751;1;0;false;false;;;;;;
                                  -204752;8;0;false;false;0;0;0;;;
                                  -204760;1;0;false;false;;;;;;
                                  -204761;1;0;false;false;0;0;0;;;
                                  -204762;1;0;false;false;;;;;;
                                  -204763;10;0;false;false;0;0;0;;;
                                  -204773;1;0;false;false;;;;;;
                                  -204774;1;0;false;false;0;0;0;;;
                                  -204775;1;0;false;false;;;;;;
                                  -204776;21;0;false;false;0;0;0;;;
                                  -204797;5;0;false;false;;;;;;
                                  -204802;11;0;false;false;0;0;0;;;
                                  -204813;1;0;false;false;;;;;;
                                  -204814;1;0;false;false;0;0;0;;;
                                  -204815;1;0;false;false;;;;;;
                                  -204816;14;0;false;false;0;0;0;;;
                                  -204830;1;0;false;false;;;;;;
                                  -204831;1;0;false;false;0;0;0;;;
                                  -204832;1;0;false;false;;;;;;
                                  -204833;16;0;false;false;0;0;0;;;
                                  -204849;1;0;false;false;;;;;;
                                  -204850;1;0;false;false;0;0;0;;;
                                  -204851;1;0;false;false;;;;;;
                                  -204852;10;0;false;false;0;0;0;;;
                                  -204862;1;0;false;false;;;;;;
                                  -204863;1;0;false;false;0;0;0;;;
                                  -204864;1;0;false;false;;;;;;
                                  -204865;11;0;false;false;0;0;0;;;
                                  -204876;1;0;false;false;;;;;;
                                  -204877;1;0;false;false;0;0;0;;;
                                  -204878;1;0;false;false;;;;;;
                                  -204879;11;0;false;false;0;0;0;;;
                                  -204890;5;0;false;false;;;;;;
                                  -204895;12;0;false;false;0;0;0;;;
                                  -204907;1;0;false;false;;;;;;
                                  -204908;8;0;false;false;0;0;0;;;
                                  -204916;1;0;false;false;;;;;;
                                  -204917;12;0;false;false;0;0;0;;;
                                  -204929;1;0;false;false;;;;;;
                                  -204930;11;0;false;false;0;0;0;;;
                                  -204941;1;0;false;false;;;;;;
                                  -204942;17;0;false;false;0;0;0;;;
                                  -204959;4;0;false;false;;;;;;
                                  -204963;1;0;false;false;0;0;0;;;
                                  -204964;3;0;false;false;;;;;;
                                  -204967;1;0;false;false;0;0;0;;;
                                  -204968;2;0;false;false;;;;;;
                                  -204970;1;0;false;false;0;0;0;;;
                                  -204971;2;0;false;false;;;;;;
                                  -204973;3;0;false;false;63;95;191;;;
                                  -204976;3;0;false;false;;;;;;
                                  -204979;1;0;false;false;63;95;191;;;
                                  -204980;1;0;false;false;;;;;;
                                  -204981;5;0;false;false;63;95;191;;;
                                  -204986;1;0;false;false;;;;;;
                                  -204987;3;0;false;false;63;95;191;;;
                                  -204990;1;0;false;false;;;;;;
                                  -204991;6;0;false;false;63;95;191;;;
                                  -204997;1;0;false;false;;;;;;
                                  -204998;2;0;false;false;63;95;191;;;
                                  -205000;1;0;false;false;;;;;;
                                  -205001;7;0;false;false;63;95;191;;;
                                  -205008;1;0;false;false;;;;;;
                                  -205009;1;0;false;false;63;95;191;;;
                                  -205010;1;0;false;false;;;;;;
                                  -205011;4;0;false;false;63;95;191;;;
                                  -205015;1;0;false;false;;;;;;
                                  -205016;7;0;false;false;63;95;191;;;
                                  -205023;3;0;false;false;;;;;;
                                  -205026;1;0;false;false;63;95;191;;;
                                  -205027;1;0;false;false;;;;;;
                                  -205028;3;0;false;false;63;95;191;;;
                                  -205031;1;0;false;false;;;;;;
                                  -205032;8;0;false;false;63;95;191;;;
                                  -205040;1;0;false;false;;;;;;
                                  -205041;3;0;false;false;63;95;191;;;
                                  -205044;1;0;false;false;;;;;;
                                  -205045;9;0;false;false;63;95;191;;;
                                  -205054;1;0;false;false;;;;;;
                                  -205055;2;0;false;false;63;95;191;;;
                                  -205057;1;0;false;false;;;;;;
                                  -205058;4;0;false;false;63;95;191;;;
                                  -205062;1;0;false;false;;;;;;
                                  -205063;2;0;false;false;63;95;191;;;
                                  -205065;1;0;false;false;;;;;;
                                  -205066;10;0;false;false;63;95;191;;;
                                  -205076;3;0;false;false;;;;;;
                                  -205079;1;0;false;false;63;95;191;;;
                                  -205080;1;0;false;false;;;;;;
                                  -205081;3;0;false;false;127;127;159;;;
                                  -205084;3;0;false;false;;;;;;
                                  -205087;1;0;false;false;63;95;191;;;
                                  -205088;3;0;false;false;;;;;;
                                  -205091;1;0;false;false;63;95;191;;;
                                  -205092;1;0;false;false;;;;;;
                                  -205093;7;1;false;false;127;159;191;;;
                                  -205100;1;0;false;false;63;95;191;;;
                                  -205101;1;0;false;false;;;;;;
                                  -205102;1;0;false;false;63;95;191;;;
                                  -205103;1;0;false;false;;;;;;
                                  -205104;8;0;false;false;63;95;191;;;
                                  -205112;1;0;false;false;;;;;;
                                  -205113;2;0;false;false;63;95;191;;;
                                  -205115;1;0;false;false;;;;;;
                                  -205116;3;0;false;false;63;95;191;;;
                                  -205119;1;0;false;false;;;;;;
                                  -205120;4;0;false;false;63;95;191;;;
                                  -205124;1;0;false;false;;;;;;
                                  -205125;6;0;false;false;63;95;191;;;
                                  -205131;3;0;false;false;;;;;;
                                  -205134;1;0;false;false;63;95;191;;;
                                  -205135;1;0;false;false;;;;;;
                                  -205136;7;1;false;false;127;159;191;;;
                                  -205143;12;0;false;false;63;95;191;;;
                                  -205155;1;0;false;false;;;;;;
                                  -205156;6;0;false;false;63;95;191;;;
                                  -205162;1;0;false;false;;;;;;
                                  -205163;2;0;false;false;63;95;191;;;
                                  -205165;1;0;false;false;;;;;;
                                  -205166;3;0;false;false;63;95;191;;;
                                  -205169;1;0;false;false;;;;;;
                                  -205170;6;0;false;false;63;95;191;;;
                                  -205176;3;0;false;false;;;;;;
                                  -205179;1;0;false;false;63;95;191;;;
                                  -205180;1;0;false;false;;;;;;
                                  -205181;7;1;false;false;127;159;191;;;
                                  -205188;17;0;false;false;63;95;191;;;
                                  -205205;1;0;false;false;;;;;;
                                  -205206;6;0;false;false;63;95;191;;;
                                  -205212;1;0;false;false;;;;;;
                                  -205213;2;0;false;false;63;95;191;;;
                                  -205215;1;0;false;false;;;;;;
                                  -205216;8;0;false;false;63;95;191;;;
                                  -205224;1;0;false;false;;;;;;
                                  -205225;6;0;false;false;63;95;191;;;
                                  -205231;3;0;false;false;;;;;;
                                  -205234;2;0;false;false;63;95;191;;;
                                  -205236;2;0;false;false;;;;;;
                                  -205238;4;1;false;false;127;0;85;;;
                                  -205242;1;0;false;false;;;;;;
                                  -205243;22;0;false;false;0;0;0;;;
                                  -205265;3;1;false;false;127;0;85;;;
                                  -205268;1;0;false;false;;;;;;
                                  -205269;2;0;false;false;0;0;0;;;
                                  -205271;1;0;false;false;;;;;;
                                  -205272;3;1;false;false;127;0;85;;;
                                  -205275;1;0;false;false;;;;;;
                                  -205276;13;0;false;false;0;0;0;;;
                                  -205289;1;0;false;false;;;;;;
                                  -205290;3;1;false;false;127;0;85;;;
                                  -205293;1;0;false;false;;;;;;
                                  -205294;18;0;false;false;0;0;0;;;
                                  -205312;1;0;false;false;;;;;;
                                  -205313;1;0;false;false;0;0;0;;;
                                  -205314;3;0;false;false;;;;;;
                                  -205317;9;0;false;false;0;0;0;;;
                                  -205326;1;0;false;false;;;;;;
                                  -205327;10;0;false;false;0;0;0;;;
                                  -205337;1;0;false;false;;;;;;
                                  -205338;1;0;false;false;0;0;0;;;
                                  -205339;1;0;false;false;;;;;;
                                  -205340;16;0;false;false;0;0;0;;;
                                  -205356;3;0;false;false;;;;;;
                                  -205359;3;1;false;false;127;0;85;;;
                                  -205362;1;0;false;false;;;;;;
                                  -205363;9;0;false;false;0;0;0;;;
                                  -205372;1;0;false;false;;;;;;
                                  -205373;1;0;false;false;0;0;0;;;
                                  -205374;1;0;false;false;;;;;;
                                  -205375;12;0;false;false;0;0;0;;;
                                  -205387;1;0;false;false;;;;;;
                                  -205388;1;0;false;false;0;0;0;;;
                                  -205389;1;0;false;false;;;;;;
                                  -205390;18;0;false;false;0;0;0;;;
                                  -205408;3;0;false;false;;;;;;
                                  -205411;3;1;false;false;127;0;85;;;
                                  -205414;1;0;false;false;;;;;;
                                  -205415;8;0;false;false;0;0;0;;;
                                  -205423;3;0;false;false;;;;;;
                                  -205426;3;1;false;false;127;0;85;;;
                                  -205429;1;0;false;false;;;;;;
                                  -205430;13;0;false;false;0;0;0;;;
                                  -205443;7;0;false;false;;;;;;
                                  -205450;2;1;false;false;127;0;85;;;
                                  -205452;1;0;false;false;;;;;;
                                  -205453;10;0;false;false;0;0;0;;;
                                  -205463;1;0;false;false;;;;;;
                                  -205464;1;0;false;false;0;0;0;;;
                                  -205465;1;0;false;false;;;;;;
                                  -205466;2;0;false;false;0;0;0;;;
                                  -205468;1;0;false;false;;;;;;
                                  -205469;1;0;false;false;0;0;0;;;
                                  -205470;4;0;false;false;;;;;;
                                  -205474;7;0;false;false;0;0;0;;;
                                  -205481;1;0;false;false;;;;;;
                                  -205482;1;0;false;false;0;0;0;;;
                                  -205483;1;0;false;false;;;;;;
                                  -205484;11;0;false;false;0;0;0;;;
                                  -205495;1;0;false;false;;;;;;
                                  -205496;1;0;false;false;0;0;0;;;
                                  -205497;1;0;false;false;;;;;;
                                  -205498;1;0;false;false;0;0;0;;;
                                  -205499;1;0;false;false;;;;;;
                                  -205500;12;0;false;false;0;0;0;;;
                                  -205512;4;0;false;false;;;;;;
                                  -205516;12;0;false;false;0;0;0;;;
                                  -205528;1;0;false;false;;;;;;
                                  -205529;1;0;false;false;0;0;0;;;
                                  -205530;1;0;false;false;;;;;;
                                  -205531;7;0;false;false;0;0;0;;;
                                  -205538;1;0;false;false;;;;;;
                                  -205539;1;0;false;false;0;0;0;;;
                                  -205540;1;0;false;false;;;;;;
                                  -205541;9;0;false;false;0;0;0;;;
                                  -205550;1;0;false;false;;;;;;
                                  -205551;1;0;false;false;0;0;0;;;
                                  -205552;1;0;false;false;;;;;;
                                  -205553;11;0;false;false;0;0;0;;;
                                  -205564;3;0;false;false;;;;;;
                                  -205567;1;0;false;false;0;0;0;;;
                                  -205568;4;0;false;false;;;;;;
                                  -205572;4;1;false;false;127;0;85;;;
                                  -205576;1;0;false;false;;;;;;
                                  -205577;1;0;false;false;0;0;0;;;
                                  -205578;4;0;false;false;;;;;;
                                  -205582;12;0;false;false;0;0;0;;;
                                  -205594;1;0;false;false;;;;;;
                                  -205595;1;0;false;false;0;0;0;;;
                                  -205596;1;0;false;false;;;;;;
                                  -205597;11;0;false;false;0;0;0;;;
                                  -205608;1;0;false;false;;;;;;
                                  -205609;1;0;false;false;0;0;0;;;
                                  -205610;1;0;false;false;;;;;;
                                  -205611;1;0;false;false;0;0;0;;;
                                  -205612;1;0;false;false;;;;;;
                                  -205613;12;0;false;false;0;0;0;;;
                                  -205625;4;0;false;false;;;;;;
                                  -205629;7;0;false;false;0;0;0;;;
                                  -205636;1;0;false;false;;;;;;
                                  -205637;1;0;false;false;0;0;0;;;
                                  -205638;1;0;false;false;;;;;;
                                  -205639;12;0;false;false;0;0;0;;;
                                  -205651;1;0;false;false;;;;;;
                                  -205652;1;0;false;false;0;0;0;;;
                                  -205653;1;0;false;false;;;;;;
                                  -205654;9;0;false;false;0;0;0;;;
                                  -205663;1;0;false;false;;;;;;
                                  -205664;1;0;false;false;0;0;0;;;
                                  -205665;1;0;false;false;;;;;;
                                  -205666;11;0;false;false;0;0;0;;;
                                  -205677;3;0;false;false;;;;;;
                                  -205680;1;0;false;false;0;0;0;;;
                                  -205681;4;0;false;false;;;;;;
                                  -205685;7;0;false;false;0;0;0;;;
                                  -205692;4;0;false;false;;;;;;
                                  -205696;2;0;false;false;0;0;0;;;
                                  -205698;1;0;false;false;;;;;;
                                  -205699;13;0;false;false;0;0;0;;;
                                  -205712;3;0;false;false;;;;;;
                                  -205715;21;0;false;false;63;127;95;;;
                                  -205736;2;0;false;false;;;;;;
                                  -205738;2;0;false;false;0;0;0;;;
                                  -205740;1;0;false;false;;;;;;
                                  -205741;8;0;false;false;0;0;0;;;
                                  -205749;5;0;false;false;;;;;;
                                  -205754;16;0;false;false;63;127;95;;;
                                  -205770;2;0;false;false;;;;;;
                                  -205772;17;0;false;false;0;0;0;;;
                                  -205789;1;0;false;false;;;;;;
                                  -205790;18;0;false;false;0;0;0;;;
                                  -205808;1;0;false;false;;;;;;
                                  -205809;4;1;false;false;127;0;85;;;
                                  -205813;2;0;false;false;0;0;0;;;
                                  -205815;3;0;false;false;;;;;;
                                  -205818;68;0;false;false;63;127;95;;;
                                  -205886;1;0;false;false;;;;;;
                                  -205887;69;0;false;false;63;127;95;;;
                                  -205956;1;0;false;false;;;;;;
                                  -205957;50;0;false;false;63;127;95;;;
                                  -206007;1;0;false;false;;;;;;
                                  -206008;68;0;false;false;63;127;95;;;
                                  -206076;1;0;false;false;;;;;;
                                  -206077;70;0;false;false;63;127;95;;;
                                  -206147;1;0;false;false;;;;;;
                                  -206148;55;0;false;false;63;127;95;;;
                                  -206203;1;0;false;false;;;;;;
                                  -206204;66;0;false;false;63;127;95;;;
                                  -206270;1;0;false;false;;;;;;
                                  -206271;67;0;false;false;63;127;95;;;
                                  -206338;1;0;false;false;;;;;;
                                  -206339;66;0;false;false;63;127;95;;;
                                  -206405;1;0;false;false;;;;;;
                                  -206406;54;0;false;false;63;127;95;;;
                                  -206460;1;0;false;false;;;;;;
                                  -206461;66;0;false;false;63;127;95;;;
                                  -206527;1;0;false;false;;;;;;
                                  -206528;53;0;false;false;63;127;95;;;
                                  -206581;1;0;false;false;;;;;;
                                  -206582;2;1;false;false;127;0;85;;;
                                  -206584;1;0;false;false;;;;;;
                                  -206585;2;0;false;false;0;0;0;;;
                                  -206587;1;0;false;false;;;;;;
                                  -206588;1;0;false;false;0;0;0;;;
                                  -206589;1;0;false;false;;;;;;
                                  -206590;10;0;false;false;0;0;0;;;
                                  -206600;1;0;false;false;;;;;;
                                  -206601;1;0;false;false;0;0;0;;;
                                  -206602;1;0;false;false;;;;;;
                                  -206603;1;0;false;false;0;0;0;;;
                                  -206604;1;0;false;false;;;;;;
                                  -206605;2;0;false;false;0;0;0;;;
                                  -206607;1;0;false;false;;;;;;
                                  -206608;1;0;false;false;0;0;0;;;
                                  -206609;1;0;false;false;;;;;;
                                  -206610;2;0;false;false;0;0;0;;;
                                  -206612;1;0;false;false;;;;;;
                                  -206613;18;0;false;false;0;0;0;;;
                                  -206631;1;0;false;false;;;;;;
                                  -206632;1;0;false;false;0;0;0;;;
                                  -206633;4;0;false;false;;;;;;
                                  -206637;62;0;false;false;63;127;95;;;
                                  -206699;2;0;false;false;;;;;;
                                  -206701;5;1;false;false;127;0;85;;;
                                  -206706;10;0;false;false;0;0;0;;;
                                  -206716;1;0;false;false;;;;;;
                                  -206717;2;0;false;false;0;0;0;;;
                                  -206719;1;0;false;false;;;;;;
                                  -206720;17;0;false;false;0;0;0;;;
                                  -206737;1;0;false;false;;;;;;
                                  -206738;11;0;false;false;0;0;0;;;
                                  -206749;1;0;false;false;;;;;;
                                  -206750;4;1;false;false;127;0;85;;;
                                  -206754;2;0;false;false;0;0;0;;;
                                  -206756;3;0;false;false;;;;;;
                                  -206759;1;0;false;false;0;0;0;;;
                                  -206760;3;0;false;false;;;;;;
                                  -206763;2;1;false;false;127;0;85;;;
                                  -206765;1;0;false;false;;;;;;
                                  -206766;13;0;false;false;0;0;0;;;
                                  -206779;1;0;false;false;;;;;;
                                  -206780;1;0;false;false;0;0;0;;;
                                  -206781;1;0;false;false;;;;;;
                                  -206782;2;0;false;false;0;0;0;;;
                                  -206784;1;0;false;false;;;;;;
                                  -206785;1;0;false;false;0;0;0;;;
                                  -206786;4;0;false;false;;;;;;
                                  -206790;3;1;false;false;127;0;85;;;
                                  -206793;1;0;false;false;;;;;;
                                  -206794;12;0;false;false;0;0;0;;;
                                  -206806;1;0;false;false;;;;;;
                                  -206807;1;0;false;false;0;0;0;;;
                                  -206808;1;0;false;false;;;;;;
                                  -206809;1;0;false;false;0;0;0;;;
                                  -206810;1;0;false;false;;;;;;
                                  -206811;1;0;false;false;0;0;0;;;
                                  -206812;1;0;false;false;;;;;;
                                  -206813;11;0;false;false;0;0;0;;;
                                  -206824;4;0;false;false;;;;;;
                                  -206828;3;1;false;false;127;0;85;;;
                                  -206831;1;0;false;false;;;;;;
                                  -206832;12;0;false;false;0;0;0;;;
                                  -206844;1;0;false;false;;;;;;
                                  -206845;1;0;false;false;0;0;0;;;
                                  -206846;1;0;false;false;;;;;;
                                  -206847;12;0;false;false;0;0;0;;;
                                  -206859;1;0;false;false;;;;;;
                                  -206860;1;0;false;false;0;0;0;;;
                                  -206861;1;0;false;false;;;;;;
                                  -206862;11;0;false;false;0;0;0;;;
                                  -206873;8;0;false;false;;;;;;
                                  -206881;2;1;false;false;127;0;85;;;
                                  -206883;1;0;false;false;;;;;;
                                  -206884;13;0;false;false;0;0;0;;;
                                  -206897;1;0;false;false;;;;;;
                                  -206898;1;0;false;false;0;0;0;;;
                                  -206899;1;0;false;false;;;;;;
                                  -206900;12;0;false;false;0;0;0;;;
                                  -206912;1;0;false;false;;;;;;
                                  -206913;1;0;false;false;0;0;0;;;
                                  -206914;1;0;false;false;;;;;;
                                  -206915;1;0;false;false;0;0;0;;;
                                  -206916;1;0;false;false;;;;;;
                                  -206917;2;0;false;false;0;0;0;;;
                                  -206919;1;0;false;false;;;;;;
                                  -206920;12;0;false;false;0;0;0;;;
                                  -206932;1;0;false;false;;;;;;
                                  -206933;2;0;false;false;0;0;0;;;
                                  -206935;1;0;false;false;;;;;;
                                  -206936;18;0;false;false;0;0;0;;;
                                  -206954;1;0;false;false;;;;;;
                                  -206955;1;0;false;false;0;0;0;;;
                                  -206956;5;0;false;false;;;;;;
                                  -206961;21;0;false;false;63;127;95;;;
                                  -206982;3;0;false;false;;;;;;
                                  -206985;5;1;false;false;127;0;85;;;
                                  -206990;10;0;false;false;0;0;0;;;
                                  -207000;1;0;false;false;;;;;;
                                  -207001;13;0;false;false;0;0;0;;;
                                  -207014;1;0;false;false;;;;;;
                                  -207015;17;0;false;false;0;0;0;;;
                                  -207032;1;0;false;false;;;;;;
                                  -207033;13;0;false;false;0;0;0;;;
                                  -207046;1;0;false;false;;;;;;
                                  -207047;4;1;false;false;127;0;85;;;
                                  -207051;2;0;false;false;0;0;0;;;
                                  -207053;4;0;false;false;;;;;;
                                  -207057;1;0;false;false;0;0;0;;;
                                  -207058;3;0;false;false;;;;;;
                                  -207061;1;0;false;false;0;0;0;;;
                                  -207062;2;0;false;false;;;;;;
                                  -207064;1;0;false;false;0;0;0;;;
                                  -207065;2;0;false;false;;;;;;
                                  -207067;3;0;false;false;63;95;191;;;
                                  -207070;4;0;false;false;;;;;;
                                  -207074;1;0;false;false;63;95;191;;;
                                  -207075;1;0;false;false;;;;;;
                                  -207076;7;0;false;false;63;95;191;;;
                                  -207083;1;0;false;false;;;;;;
                                  -207084;3;0;false;false;63;95;191;;;
                                  -207087;1;0;false;false;;;;;;
                                  -207088;9;0;false;false;63;95;191;;;
                                  -207097;1;0;false;false;;;;;;
                                  -207098;4;0;false;false;63;95;191;;;
                                  -207102;1;0;false;false;;;;;;
                                  -207103;6;0;false;false;63;95;191;;;
                                  -207109;3;0;false;false;;;;;;
                                  -207112;1;0;false;false;63;95;191;;;
                                  -207113;1;0;false;false;;;;;;
                                  -207114;3;0;false;false;127;127;159;;;
                                  -207117;3;0;false;false;;;;;;
                                  -207120;1;0;false;false;63;95;191;;;
                                  -207121;3;0;false;false;;;;;;
                                  -207124;1;0;false;false;63;95;191;;;
                                  -207125;1;0;false;false;;;;;;
                                  -207126;7;1;false;false;127;159;191;;;
                                  -207133;5;0;false;false;63;95;191;;;
                                  -207138;1;0;false;false;;;;;;
                                  -207139;6;0;false;false;63;95;191;;;
                                  -207145;1;0;false;false;;;;;;
                                  -207146;2;0;false;false;63;95;191;;;
                                  -207148;1;0;false;false;;;;;;
                                  -207149;3;0;false;false;63;95;191;;;
                                  -207152;1;0;false;false;;;;;;
                                  -207153;5;0;false;false;63;95;191;;;
                                  -207158;1;0;false;false;;;;;;
                                  -207159;9;0;false;false;63;95;191;;;
                                  -207168;1;0;false;false;;;;;;
                                  -207169;2;0;false;false;63;95;191;;;
                                  -207171;1;0;false;false;;;;;;
                                  -207172;6;0;false;false;63;95;191;;;
                                  -207178;3;0;false;false;;;;;;
                                  -207181;1;0;false;false;63;95;191;;;
                                  -207182;1;0;false;false;;;;;;
                                  -207183;7;1;false;false;127;159;191;;;
                                  -207190;6;0;false;false;63;95;191;;;
                                  -207196;1;0;false;false;;;;;;
                                  -207197;6;0;false;false;63;95;191;;;
                                  -207203;1;0;false;false;;;;;;
                                  -207204;2;0;false;false;63;95;191;;;
                                  -207206;1;0;false;false;;;;;;
                                  -207207;10;0;false;false;63;95;191;;;
                                  -207217;1;0;false;false;;;;;;
                                  -207218;2;0;false;false;63;95;191;;;
                                  -207220;1;0;false;false;;;;;;
                                  -207221;6;0;false;false;63;95;191;;;
                                  -207227;3;0;false;false;;;;;;
                                  -207230;1;0;false;false;63;95;191;;;
                                  -207231;1;0;false;false;;;;;;
                                  -207232;7;1;false;false;127;159;191;;;
                                  -207239;15;0;false;false;63;95;191;;;
                                  -207254;1;0;false;false;;;;;;
                                  -207255;4;0;false;false;63;95;191;;;
                                  -207259;1;0;false;false;;;;;;
                                  -207260;2;0;false;false;63;95;191;;;
                                  -207262;1;0;false;false;;;;;;
                                  -207263;3;0;false;false;63;95;191;;;
                                  -207266;1;0;false;false;;;;;;
                                  -207267;10;0;false;false;63;95;191;;;
                                  -207277;1;0;false;false;;;;;;
                                  -207278;6;0;false;false;63;95;191;;;
                                  -207284;1;0;false;false;;;;;;
                                  -207285;2;0;false;false;63;95;191;;;
                                  -207287;1;0;false;false;;;;;;
                                  -207288;7;0;false;false;63;95;191;;;
                                  -207295;1;0;false;false;;;;;;
                                  -207296;2;0;false;false;63;95;191;;;
                                  -207298;3;0;false;false;;;;;;
                                  -207301;1;0;false;false;63;95;191;;;
                                  -207302;2;0;false;false;;;;;;
                                  -207304;4;0;false;false;63;95;191;;;
                                  -207308;1;0;false;false;;;;;;
                                  -207309;2;0;false;false;63;95;191;;;
                                  -207311;1;0;false;false;;;;;;
                                  -207312;3;0;false;false;63;95;191;;;
                                  -207315;1;0;false;false;;;;;;
                                  -207316;6;0;false;false;63;95;191;;;
                                  -207322;1;0;false;false;;;;;;
                                  -207323;10;0;false;false;63;95;191;;;
                                  -207333;2;0;false;false;;;;;;
                                  -207335;2;0;false;false;63;95;191;;;
                                  -207337;1;0;false;false;;;;;;
                                  -207338;5;0;false;false;63;95;191;;;
                                  -207343;1;0;false;false;;;;;;
                                  -207344;3;0;false;false;63;95;191;;;
                                  -207347;1;0;false;false;;;;;;
                                  -207348;6;0;false;false;63;95;191;;;
                                  -207354;1;0;false;false;;;;;;
                                  -207355;6;0;false;false;63;95;191;;;
                                  -207361;1;0;false;false;;;;;;
                                  -207362;5;0;false;false;63;95;191;;;
                                  -207367;1;0;false;false;;;;;;
                                  -207368;4;0;false;false;63;95;191;;;
                                  -207372;3;0;false;false;;;;;;
                                  -207375;1;0;false;false;63;95;191;;;
                                  -207376;2;0;false;false;;;;;;
                                  -207378;2;0;false;false;63;95;191;;;
                                  -207380;1;0;false;false;;;;;;
                                  -207381;7;0;false;false;63;95;191;;;
                                  -207388;1;0;false;false;;;;;;
                                  -207389;6;0;false;false;63;95;191;;;
                                  -207395;1;0;false;false;;;;;;
                                  -207396;8;0;false;false;63;95;191;;;
                                  -207404;1;0;false;false;;;;;;
                                  -207405;2;0;false;false;63;95;191;;;
                                  -207407;1;0;false;false;;;;;;
                                  -207408;8;0;false;false;63;95;191;;;
                                  -207416;2;0;false;false;;;;;;
                                  -207418;2;0;false;false;63;95;191;;;
                                  -207420;1;0;false;false;;;;;;
                                  -207421;3;0;false;false;63;95;191;;;
                                  -207424;1;0;false;false;;;;;;
                                  -207425;6;0;false;false;63;95;191;;;
                                  -207431;1;0;false;false;;;;;;
                                  -207432;5;0;false;false;63;95;191;;;
                                  -207437;1;0;false;false;;;;;;
                                  -207438;8;0;false;false;63;95;191;;;
                                  -207446;3;0;false;false;;;;;;
                                  -207449;1;0;false;false;63;95;191;;;
                                  -207450;1;0;false;false;;;;;;
                                  -207451;3;0;false;false;63;95;191;;;
                                  -207454;1;0;false;false;;;;;;
                                  -207455;4;0;false;false;63;95;191;;;
                                  -207459;1;0;false;false;;;;;;
                                  -207460;9;0;false;false;63;95;191;;;
                                  -207469;1;0;false;false;;;;;;
                                  -207470;2;0;false;false;63;95;191;;;
                                  -207472;1;0;false;false;;;;;;
                                  -207473;1;0;false;false;63;95;191;;;
                                  -207474;1;0;false;false;;;;;;
                                  -207475;4;0;false;false;63;95;191;;;
                                  -207479;1;0;false;false;;;;;;
                                  -207480;6;0;false;false;63;95;191;;;
                                  -207486;1;0;false;false;;;;;;
                                  -207487;3;0;false;false;63;95;191;;;
                                  -207490;1;0;false;false;;;;;;
                                  -207491;6;0;false;false;63;95;191;;;
                                  -207497;1;0;false;false;;;;;;
                                  -207498;4;0;false;false;63;95;191;;;
                                  -207502;1;0;false;false;;;;;;
                                  -207503;2;0;false;false;63;95;191;;;
                                  -207505;1;0;false;false;;;;;;
                                  -207506;8;0;false;false;63;95;191;;;
                                  -207514;1;0;false;false;;;;;;
                                  -207515;3;0;false;false;63;95;191;;;
                                  -207518;4;0;false;false;;;;;;
                                  -207522;1;0;false;false;63;95;191;;;
                                  -207523;2;0;false;false;;;;;;
                                  -207525;4;0;false;false;63;95;191;;;
                                  -207529;1;0;false;false;;;;;;
                                  -207530;2;0;false;false;63;95;191;;;
                                  -207532;1;0;false;false;;;;;;
                                  -207533;7;0;false;false;63;95;191;;;
                                  -207540;1;0;false;false;;;;;;
                                  -207541;3;0;false;false;63;95;191;;;
                                  -207544;1;0;false;false;;;;;;
                                  -207545;3;0;false;false;63;95;191;;;
                                  -207548;1;0;false;false;;;;;;
                                  -207549;3;0;false;false;63;95;191;;;
                                  -207552;1;0;false;false;;;;;;
                                  -207553;2;0;false;false;63;95;191;;;
                                  -207555;1;0;false;false;;;;;;
                                  -207556;3;0;false;false;63;95;191;;;
                                  -207559;1;0;false;false;;;;;;
                                  -207560;5;0;false;false;63;95;191;;;
                                  -207565;1;0;false;false;;;;;;
                                  -207566;6;0;false;false;63;95;191;;;
                                  -207572;1;0;false;false;;;;;;
                                  -207573;2;0;false;false;63;95;191;;;
                                  -207575;1;0;false;false;;;;;;
                                  -207576;3;0;false;false;63;95;191;;;
                                  -207579;1;0;false;false;;;;;;
                                  -207580;7;0;false;false;63;95;191;;;
                                  -207587;3;0;false;false;;;;;;
                                  -207590;1;0;false;false;63;95;191;;;
                                  -207591;2;0;false;false;;;;;;
                                  -207593;3;0;false;false;63;95;191;;;
                                  -207596;1;0;false;false;;;;;;
                                  -207597;6;0;false;false;63;95;191;;;
                                  -207603;1;0;false;false;;;;;;
                                  -207604;9;0;false;false;63;95;191;;;
                                  -207613;1;0;false;false;;;;;;
                                  -207614;4;0;false;false;63;95;191;;;
                                  -207618;1;0;false;false;;;;;;
                                  -207619;2;0;false;false;63;95;191;;;
                                  -207621;1;0;false;false;;;;;;
                                  -207622;6;0;false;false;63;95;191;;;
                                  -207628;1;0;false;false;;;;;;
                                  -207629;3;0;false;false;63;95;191;;;
                                  -207632;1;0;false;false;;;;;;
                                  -207633;8;0;false;false;63;95;191;;;
                                  -207641;1;0;false;false;;;;;;
                                  -207642;2;0;false;false;63;95;191;;;
                                  -207644;1;0;false;false;;;;;;
                                  -207645;15;0;false;false;63;95;191;;;
                                  -207660;4;0;false;false;;;;;;
                                  -207664;1;0;false;false;63;95;191;;;
                                  -207665;2;0;false;false;;;;;;
                                  -207667;2;0;false;false;63;95;191;;;
                                  -207669;1;0;false;false;;;;;;
                                  -207670;3;0;false;false;63;95;191;;;
                                  -207673;1;0;false;false;;;;;;
                                  -207674;2;0;false;false;63;95;191;;;
                                  -207676;1;0;false;false;;;;;;
                                  -207677;6;0;false;false;63;95;191;;;
                                  -207683;2;0;false;false;;;;;;
                                  -207685;7;0;false;false;63;95;191;;;
                                  -207692;1;0;false;false;;;;;;
                                  -207693;2;0;false;false;63;95;191;;;
                                  -207695;1;0;false;false;;;;;;
                                  -207696;3;0;false;false;63;95;191;;;
                                  -207699;1;0;false;false;;;;;;
                                  -207700;3;0;false;false;63;95;191;;;
                                  -207703;1;0;false;false;;;;;;
                                  -207704;4;0;false;false;63;95;191;;;
                                  -207708;1;0;false;false;;;;;;
                                  -207709;3;0;false;false;63;95;191;;;
                                  -207712;1;0;false;false;;;;;;
                                  -207713;2;0;false;false;63;95;191;;;
                                  -207715;1;0;false;false;;;;;;
                                  -207716;3;0;false;false;63;95;191;;;
                                  -207719;1;0;false;false;;;;;;
                                  -207720;2;0;false;false;63;95;191;;;
                                  -207722;1;0;false;false;;;;;;
                                  -207723;5;0;false;false;63;95;191;;;
                                  -207728;1;0;false;false;;;;;;
                                  -207729;7;0;false;false;63;95;191;;;
                                  -207736;4;0;false;false;;;;;;
                                  -207740;1;0;false;false;63;95;191;;;
                                  -207741;2;0;false;false;;;;;;
                                  -207743;2;0;false;false;63;95;191;;;
                                  -207745;1;0;false;false;;;;;;
                                  -207746;3;0;false;false;63;95;191;;;
                                  -207749;1;0;false;false;;;;;;
                                  -207750;4;0;false;false;63;95;191;;;
                                  -207754;1;0;false;false;;;;;;
                                  -207755;2;0;false;false;63;95;191;;;
                                  -207757;1;0;false;false;;;;;;
                                  -207758;6;0;false;false;63;95;191;;;
                                  -207764;1;0;false;false;;;;;;
                                  -207765;4;0;false;false;63;95;191;;;
                                  -207769;1;0;false;false;;;;;;
                                  -207770;3;0;false;false;63;95;191;;;
                                  -207773;1;0;false;false;;;;;;
                                  -207774;5;0;false;false;63;95;191;;;
                                  -207779;1;0;false;false;;;;;;
                                  -207780;6;0;false;false;63;95;191;;;
                                  -207786;2;0;false;false;;;;;;
                                  -207788;2;0;false;false;63;95;191;;;
                                  -207790;1;0;false;false;;;;;;
                                  -207791;4;0;false;false;63;95;191;;;
                                  -207795;1;0;false;false;;;;;;
                                  -207796;6;0;false;false;63;95;191;;;
                                  -207802;1;0;false;false;;;;;;
                                  -207803;2;0;false;false;63;95;191;;;
                                  -207805;4;0;false;false;;;;;;
                                  -207809;1;0;false;false;63;95;191;;;
                                  -207810;2;0;false;false;;;;;;
                                  -207812;10;0;false;false;63;95;191;;;
                                  -207822;1;0;false;false;;;;;;
                                  -207823;6;0;false;false;63;95;191;;;
                                  -207829;1;0;false;false;;;;;;
                                  -207830;3;0;false;false;63;95;191;;;
                                  -207833;1;0;false;false;;;;;;
                                  -207834;3;0;false;false;63;95;191;;;
                                  -207837;1;0;false;false;;;;;;
                                  -207838;6;0;false;false;63;95;191;;;
                                  -207844;1;0;false;false;;;;;;
                                  -207845;5;0;false;false;63;95;191;;;
                                  -207850;1;0;false;false;;;;;;
                                  -207851;4;0;false;false;63;95;191;;;
                                  -207855;1;0;false;false;;;;;;
                                  -207856;8;0;false;false;63;95;191;;;
                                  -207864;1;0;false;false;;;;;;
                                  -207865;15;0;false;false;63;95;191;;;
                                  -207880;4;0;false;false;;;;;;
                                  -207884;1;0;false;false;63;95;191;;;
                                  -207885;2;0;false;false;;;;;;
                                  -207887;6;0;false;false;63;95;191;;;
                                  -207893;1;0;false;false;;;;;;
                                  -207894;2;0;false;false;63;95;191;;;
                                  -207896;1;0;false;false;;;;;;
                                  -207897;3;0;false;false;63;95;191;;;
                                  -207900;1;0;false;false;;;;;;
                                  -207901;2;0;false;false;63;95;191;;;
                                  -207903;1;0;false;false;;;;;;
                                  -207904;5;0;false;false;63;95;191;;;
                                  -207909;2;0;false;false;;;;;;
                                  -207911;2;0;false;false;63;95;191;;;
                                  -207913;1;0;false;false;;;;;;
                                  -207914;4;0;false;false;63;95;191;;;
                                  -207918;1;0;false;false;;;;;;
                                  -207919;10;0;false;false;63;95;191;;;
                                  -207929;1;0;false;false;;;;;;
                                  -207930;6;0;false;false;63;95;191;;;
                                  -207936;1;0;false;false;;;;;;
                                  -207937;4;0;false;false;63;95;191;;;
                                  -207941;1;0;false;false;;;;;;
                                  -207942;7;0;false;false;63;95;191;;;
                                  -207949;1;0;false;false;;;;;;
                                  -207950;3;0;false;false;63;95;191;;;
                                  -207953;4;0;false;false;;;;;;
                                  -207957;1;0;false;false;63;95;191;;;
                                  -207958;2;0;false;false;;;;;;
                                  -207960;3;0;false;false;63;95;191;;;
                                  -207963;1;0;false;false;;;;;;
                                  -207964;6;0;false;false;63;95;191;;;
                                  -207970;1;0;false;false;;;;;;
                                  -207971;6;0;false;false;63;95;191;;;
                                  -207977;1;0;false;false;;;;;;
                                  -207978;15;0;false;false;63;95;191;;;
                                  -207993;1;0;false;false;;;;;;
                                  -207994;3;0;false;false;63;95;191;;;
                                  -207997;1;0;false;false;;;;;;
                                  -207998;2;0;false;false;63;95;191;;;
                                  -208000;1;0;false;false;;;;;;
                                  -208001;3;0;false;false;63;95;191;;;
                                  -208004;1;0;false;false;;;;;;
                                  -208005;2;0;false;false;63;95;191;;;
                                  -208007;1;0;false;false;;;;;;
                                  -208008;6;0;false;false;63;95;191;;;
                                  -208014;4;0;false;false;;;;;;
                                  -208018;1;0;false;false;63;95;191;;;
                                  -208019;1;0;false;false;;;;;;
                                  -208020;11;1;false;false;127;159;191;;;
                                  -208031;12;0;false;false;63;95;191;;;
                                  -208043;1;0;false;false;;;;;;
                                  -208044;4;0;false;false;127;127;159;;;
                                  -208048;3;0;false;false;;;;;;
                                  -208051;1;0;false;false;63;95;191;;;
                                  -208052;4;0;false;false;;;;;;
                                  -208056;4;0;false;false;127;127;159;;;
                                  -208060;21;0;false;false;63;95;191;;;
                                  -208081;1;0;false;false;;;;;;
                                  -208082;1;0;false;false;127;127;159;;;
                                  -208083;1;0;false;false;;;;;;
                                  -208084;2;0;false;false;63;95;191;;;
                                  -208086;1;0;false;false;;;;;;
                                  -208087;3;0;false;false;63;95;191;;;
                                  -208090;1;0;false;false;;;;;;
                                  -208091;8;0;false;false;63;95;191;;;
                                  -208099;1;0;false;false;;;;;;
                                  -208100;3;0;false;false;63;95;191;;;
                                  -208103;1;0;false;false;;;;;;
                                  -208104;4;0;false;false;63;95;191;;;
                                  -208108;1;0;false;false;;;;;;
                                  -208109;8;0;false;false;63;95;191;;;
                                  -208117;5;0;false;false;127;127;159;;;
                                  -208122;3;0;false;false;;;;;;
                                  -208125;1;0;false;false;63;95;191;;;
                                  -208126;4;0;false;false;;;;;;
                                  -208130;4;0;false;false;127;127;159;;;
                                  -208134;27;0;false;false;63;95;191;;;
                                  -208161;1;0;false;false;;;;;;
                                  -208162;1;0;false;false;127;127;159;;;
                                  -208163;1;0;false;false;;;;;;
                                  -208164;2;0;false;false;63;95;191;;;
                                  -208166;1;0;false;false;;;;;;
                                  -208167;3;0;false;false;63;95;191;;;
                                  -208170;1;0;false;false;;;;;;
                                  -208171;6;0;false;false;63;95;191;;;
                                  -208177;1;0;false;false;;;;;;
                                  -208178;4;0;false;false;63;95;191;;;
                                  -208182;1;0;false;false;;;;;;
                                  -208183;3;0;false;false;63;95;191;;;
                                  -208186;1;0;false;false;;;;;;
                                  -208187;6;0;false;false;63;95;191;;;
                                  -208193;1;0;false;false;;;;;;
                                  -208194;4;0;false;false;63;95;191;;;
                                  -208198;1;0;false;false;;;;;;
                                  -208199;7;0;false;false;63;95;191;;;
                                  -208206;1;0;false;false;;;;;;
                                  -208207;3;0;false;false;63;95;191;;;
                                  -208210;1;0;false;false;;;;;;
                                  -208211;8;0;false;false;63;95;191;;;
                                  -208219;5;0;false;false;127;127;159;;;
                                  -208224;3;0;false;false;;;;;;
                                  -208227;1;0;false;false;63;95;191;;;
                                  -208228;1;0;false;false;;;;;;
                                  -208229;5;0;false;false;127;127;159;;;
                                  -208234;3;0;false;false;;;;;;
                                  -208237;1;0;false;false;63;95;191;;;
                                  -208238;1;0;false;false;;;;;;
                                  -208239;11;1;false;false;127;159;191;;;
                                  -208250;24;0;false;false;63;95;191;;;
                                  -208274;1;0;false;false;;;;;;
                                  -208275;4;0;false;false;127;127;159;;;
                                  -208279;3;0;false;false;;;;;;
                                  -208282;1;0;false;false;63;95;191;;;
                                  -208283;3;0;false;false;;;;;;
                                  -208286;4;0;false;false;127;127;159;;;
                                  -208290;19;0;false;false;63;95;191;;;
                                  -208309;1;0;false;false;;;;;;
                                  -208310;4;0;false;false;63;95;191;;;
                                  -208314;1;0;false;false;;;;;;
                                  -208315;5;0;false;false;63;95;191;;;
                                  -208320;1;0;false;false;;;;;;
                                  -208321;6;0;false;false;63;95;191;;;
                                  -208327;1;0;false;false;;;;;;
                                  -208328;3;0;false;false;63;95;191;;;
                                  -208331;1;0;false;false;;;;;;
                                  -208332;3;0;false;false;63;95;191;;;
                                  -208335;1;0;false;false;;;;;;
                                  -208336;7;0;false;false;63;95;191;;;
                                  -208343;1;0;false;false;;;;;;
                                  -208344;3;0;false;false;63;95;191;;;
                                  -208347;1;0;false;false;;;;;;
                                  -208348;6;0;false;false;63;95;191;;;
                                  -208354;1;0;false;false;;;;;;
                                  -208355;7;0;false;false;63;95;191;;;
                                  -208362;5;0;false;false;127;127;159;;;
                                  -208367;4;0;false;false;;;;;;
                                  -208371;1;0;false;false;63;95;191;;;
                                  -208372;1;0;false;false;;;;;;
                                  -208373;5;0;false;false;127;127;159;;;
                                  -208378;3;0;false;false;;;;;;
                                  -208381;2;0;false;false;63;95;191;;;
                                  -208383;2;0;false;false;;;;;;
                                  -208385;6;1;false;false;127;0;85;;;
                                  -208391;1;0;false;false;;;;;;
                                  -208392;4;1;false;false;127;0;85;;;
                                  -208396;1;0;false;false;;;;;;
                                  -208397;12;0;false;false;0;0;0;;;
                                  -208409;3;1;false;false;127;0;85;;;
                                  -208412;1;0;false;false;;;;;;
                                  -208413;6;0;false;false;0;0;0;;;
                                  -208419;1;0;false;false;;;;;;
                                  -208420;3;1;false;false;127;0;85;;;
                                  -208423;1;0;false;false;;;;;;
                                  -208424;7;0;false;false;0;0;0;;;
                                  -208431;1;0;false;false;;;;;;
                                  -208432;7;1;false;false;127;0;85;;;
                                  -208439;1;0;false;false;;;;;;
                                  -208440;16;0;false;false;0;0;0;;;
                                  -208456;1;0;false;false;;;;;;
                                  -208457;1;0;false;false;0;0;0;;;
                                  -208458;3;0;false;false;;;;;;
                                  -208461;14;0;false;false;0;0;0;;;
                                  -208475;3;0;false;false;;;;;;
                                  -208478;3;1;false;false;127;0;85;;;
                                  -208481;1;0;false;false;;;;;;
                                  -208482;3;0;false;false;0;0;0;;;
                                  -208485;1;0;false;false;;;;;;
                                  -208486;1;0;false;false;0;0;0;;;
                                  -208487;1;0;false;false;;;;;;
                                  -208488;5;0;false;false;0;0;0;;;
                                  -208493;1;0;false;false;;;;;;
                                  -208494;1;0;false;false;0;0;0;;;
                                  -208495;1;0;false;false;;;;;;
                                  -208496;7;0;false;false;0;0;0;;;
                                  -208503;3;0;false;false;;;;;;
                                  -208506;3;1;false;false;127;0;85;;;
                                  -208509;1;0;false;false;;;;;;
                                  -208510;13;0;false;false;0;0;0;;;
                                  -208523;1;0;false;false;;;;;;
                                  -208524;1;0;false;false;0;0;0;;;
                                  -208525;1;0;false;false;;;;;;
                                  -208526;23;0;false;false;0;0;0;;;
                                  -208549;3;0;false;false;;;;;;
                                  -208552;3;1;false;false;127;0;85;;;
                                  -208555;1;0;false;false;;;;;;
                                  -208556;10;0;false;false;0;0;0;;;
                                  -208566;3;0;false;false;;;;;;
                                  -208569;3;1;false;false;127;0;85;;;
                                  -208572;1;0;false;false;;;;;;
                                  -208573;9;0;false;false;0;0;0;;;
                                  -208582;6;0;false;false;;;;;;
                                  -208588;2;1;false;false;127;0;85;;;
                                  -208590;1;0;false;false;;;;;;
                                  -208591;6;0;false;false;0;0;0;;;
                                  -208597;1;0;false;false;;;;;;
                                  -208598;1;0;false;false;0;0;0;;;
                                  -208599;1;0;false;false;;;;;;
                                  -208600;3;0;false;false;0;0;0;;;
                                  -208603;1;0;false;false;;;;;;
                                  -208604;2;0;false;false;0;0;0;;;
                                  -208606;1;0;false;false;;;;;;
                                  -208607;5;0;false;false;0;0;0;;;
                                  -208612;1;0;false;false;;;;;;
                                  -208613;1;0;false;false;0;0;0;;;
                                  -208614;1;0;false;false;;;;;;
                                  -208615;1;0;false;false;0;0;0;;;
                                  -208616;1;0;false;false;;;;;;
                                  -208617;2;0;false;false;0;0;0;;;
                                  -208619;1;0;false;false;;;;;;
                                  -208620;3;0;false;false;0;0;0;;;
                                  -208623;1;0;false;false;;;;;;
                                  -208624;1;0;false;false;0;0;0;;;
                                  -208625;1;0;false;false;;;;;;
                                  -208626;14;0;false;false;0;0;0;;;
                                  -208640;1;0;false;false;;;;;;
                                  -208641;1;0;false;false;0;0;0;;;
                                  -208642;4;0;false;false;;;;;;
                                  -208646;35;0;false;false;0;0;0;;;
                                  -208681;3;0;false;false;;;;;;
                                  -208684;1;0;false;false;0;0;0;;;
                                  -208685;4;0;false;false;;;;;;
                                  -208689;9;0;false;false;0;0;0;;;
                                  -208698;1;0;false;false;;;;;;
                                  -208699;1;0;false;false;0;0;0;;;
                                  -208700;1;0;false;false;;;;;;
                                  -208701;31;0;false;false;0;0;0;;;
                                  -208732;3;0;false;false;;;;;;
                                  -208735;8;0;false;false;0;0;0;;;
                                  -208743;1;0;false;false;;;;;;
                                  -208744;1;0;false;false;0;0;0;;;
                                  -208745;1;0;false;false;;;;;;
                                  -208746;29;0;false;false;0;0;0;;;
                                  -208775;3;0;false;false;;;;;;
                                  -208778;66;0;false;false;63;127;95;;;
                                  -208844;1;0;false;false;;;;;;
                                  -208845;28;0;false;false;63;127;95;;;
                                  -208873;1;0;false;false;;;;;;
                                  -208874;26;0;false;false;0;0;0;;;
                                  -208900;1;0;false;false;;;;;;
                                  -208901;8;0;false;false;0;0;0;;;
                                  -208909;1;0;false;false;;;;;;
                                  -208910;1;0;false;false;0;0;0;;;
                                  -208911;1;0;false;false;;;;;;
                                  -208912;9;0;false;false;0;0;0;;;
                                  -208921;1;0;false;false;;;;;;
                                  -208922;1;0;false;false;0;0;0;;;
                                  -208923;1;0;false;false;;;;;;
                                  -208924;2;0;false;false;0;0;0;;;
                                  -208926;1;0;false;false;;;;;;
                                  -208927;4;1;false;false;127;0;85;;;
                                  -208931;2;0;false;false;0;0;0;;;
                                  -208933;3;0;false;false;;;;;;
                                  -208936;26;0;false;false;0;0;0;;;
                                  -208962;1;0;false;false;;;;;;
                                  -208963;7;0;false;false;0;0;0;;;
                                  -208970;1;0;false;false;;;;;;
                                  -208971;17;0;false;false;0;0;0;;;
                                  -208988;2;0;false;false;;;;;;
                                  -208990;1;0;false;false;0;0;0;;;
                                  -208991;2;0;false;false;;;;;;
                                  -208993;3;0;false;false;63;95;191;;;
                                  -208996;3;0;false;false;;;;;;
                                  -208999;1;0;false;false;63;95;191;;;
                                  -209000;1;0;false;false;;;;;;
                                  -209001;7;0;false;false;63;95;191;;;
                                  -209008;1;0;false;false;;;;;;
                                  -209009;3;0;false;false;63;95;191;;;
                                  -209012;1;0;false;false;;;;;;
                                  -209013;9;0;false;false;63;95;191;;;
                                  -209022;1;0;false;false;;;;;;
                                  -209023;13;0;false;false;63;95;191;;;
                                  -209036;1;0;false;false;;;;;;
                                  -209037;7;0;false;false;63;95;191;;;
                                  -209044;1;0;false;false;;;;;;
                                  -209045;9;0;false;false;63;95;191;;;
                                  -209054;3;0;false;false;;;;;;
                                  -209057;1;0;false;false;63;95;191;;;
                                  -209058;1;0;false;false;;;;;;
                                  -209059;3;0;false;false;127;127;159;;;
                                  -209062;3;0;false;false;;;;;;
                                  -209065;1;0;false;false;63;95;191;;;
                                  -209066;3;0;false;false;;;;;;
                                  -209069;1;0;false;false;63;95;191;;;
                                  -209070;1;0;false;false;;;;;;
                                  -209071;7;1;false;false;127;159;191;;;
                                  -209078;8;0;false;false;63;95;191;;;
                                  -209086;1;0;false;false;;;;;;
                                  -209087;3;0;false;false;63;95;191;;;
                                  -209090;1;0;false;false;;;;;;
                                  -209091;8;0;false;false;63;95;191;;;
                                  -209099;3;0;false;false;;;;;;
                                  -209102;1;0;false;false;63;95;191;;;
                                  -209103;1;0;false;false;;;;;;
                                  -209104;11;1;false;false;127;159;191;;;
                                  -209115;12;0;false;false;63;95;191;;;
                                  -209127;1;0;false;false;;;;;;
                                  -209128;4;0;false;false;127;127;159;;;
                                  -209132;3;0;false;false;;;;;;
                                  -209135;1;0;false;false;63;95;191;;;
                                  -209136;4;0;false;false;;;;;;
                                  -209140;4;0;false;false;127;127;159;;;
                                  -209144;21;0;false;false;63;95;191;;;
                                  -209165;1;0;false;false;;;;;;
                                  -209166;1;0;false;false;127;127;159;;;
                                  -209167;1;0;false;false;;;;;;
                                  -209168;2;0;false;false;63;95;191;;;
                                  -209170;1;0;false;false;;;;;;
                                  -209171;3;0;false;false;63;95;191;;;
                                  -209174;1;0;false;false;;;;;;
                                  -209175;8;0;false;false;63;95;191;;;
                                  -209183;1;0;false;false;;;;;;
                                  -209184;3;0;false;false;63;95;191;;;
                                  -209187;1;0;false;false;;;;;;
                                  -209188;4;0;false;false;63;95;191;;;
                                  -209192;1;0;false;false;;;;;;
                                  -209193;8;0;false;false;63;95;191;;;
                                  -209201;5;0;false;false;127;127;159;;;
                                  -209206;3;0;false;false;;;;;;
                                  -209209;1;0;false;false;63;95;191;;;
                                  -209210;4;0;false;false;;;;;;
                                  -209214;4;0;false;false;127;127;159;;;
                                  -209218;27;0;false;false;63;95;191;;;
                                  -209245;1;0;false;false;;;;;;
                                  -209246;1;0;false;false;127;127;159;;;
                                  -209247;1;0;false;false;;;;;;
                                  -209248;2;0;false;false;63;95;191;;;
                                  -209250;1;0;false;false;;;;;;
                                  -209251;3;0;false;false;63;95;191;;;
                                  -209254;1;0;false;false;;;;;;
                                  -209255;6;0;false;false;63;95;191;;;
                                  -209261;1;0;false;false;;;;;;
                                  -209262;4;0;false;false;63;95;191;;;
                                  -209266;1;0;false;false;;;;;;
                                  -209267;3;0;false;false;63;95;191;;;
                                  -209270;1;0;false;false;;;;;;
                                  -209271;6;0;false;false;63;95;191;;;
                                  -209277;1;0;false;false;;;;;;
                                  -209278;4;0;false;false;63;95;191;;;
                                  -209282;1;0;false;false;;;;;;
                                  -209283;7;0;false;false;63;95;191;;;
                                  -209290;1;0;false;false;;;;;;
                                  -209291;3;0;false;false;63;95;191;;;
                                  -209294;1;0;false;false;;;;;;
                                  -209295;8;0;false;false;63;95;191;;;
                                  -209303;5;0;false;false;127;127;159;;;
                                  -209308;3;0;false;false;;;;;;
                                  -209311;1;0;false;false;63;95;191;;;
                                  -209312;1;0;false;false;;;;;;
                                  -209313;5;0;false;false;127;127;159;;;
                                  -209318;3;0;false;false;;;;;;
                                  -209321;1;0;false;false;63;95;191;;;
                                  -209322;1;0;false;false;;;;;;
                                  -209323;11;1;false;false;127;159;191;;;
                                  -209334;24;0;false;false;63;95;191;;;
                                  -209358;1;0;false;false;;;;;;
                                  -209359;4;0;false;false;127;127;159;;;
                                  -209363;3;0;false;false;;;;;;
                                  -209366;1;0;false;false;63;95;191;;;
                                  -209367;4;0;false;false;;;;;;
                                  -209371;4;0;false;false;127;127;159;;;
                                  -209375;19;0;false;false;63;95;191;;;
                                  -209394;1;0;false;false;;;;;;
                                  -209395;4;0;false;false;63;95;191;;;
                                  -209399;1;0;false;false;;;;;;
                                  -209400;8;0;false;false;63;95;191;;;
                                  -209408;1;0;false;false;;;;;;
                                  -209409;2;0;false;false;63;95;191;;;
                                  -209411;1;0;false;false;;;;;;
                                  -209412;4;0;false;false;63;95;191;;;
                                  -209416;5;0;false;false;127;127;159;;;
                                  -209421;3;0;false;false;;;;;;
                                  -209424;1;0;false;false;63;95;191;;;
                                  -209425;1;0;false;false;;;;;;
                                  -209426;5;0;false;false;127;127;159;;;
                                  -209431;3;0;false;false;;;;;;
                                  -209434;1;0;false;false;63;95;191;;;
                                  -209435;1;0;false;false;;;;;;
                                  -209436;7;1;false;false;127;159;191;;;
                                  -209443;3;0;false;false;63;95;191;;;
                                  -209446;3;0;false;false;;;;;;
                                  -209449;2;0;false;false;63;95;191;;;
                                  -209451;2;0;false;false;;;;;;
                                  -209453;6;1;false;false;127;0;85;;;
                                  -209459;1;0;false;false;;;;;;
                                  -209460;4;1;false;false;127;0;85;;;
                                  -209464;1;0;false;false;;;;;;
                                  -209465;45;0;false;false;0;0;0;;;
                                  -209510;1;0;false;false;;;;;;
                                  -209511;9;0;false;false;0;0;0;;;
                                  -209520;1;0;false;false;;;;;;
                                  -209521;1;0;false;false;0;0;0;;;
                                  -209522;3;0;false;false;;;;;;
                                  -209525;14;0;false;false;0;0;0;;;
                                  -209539;3;0;false;false;;;;;;
                                  -209542;2;1;false;false;127;0;85;;;
                                  -209544;1;0;false;false;;;;;;
                                  -209545;9;0;false;false;0;0;0;;;
                                  -209554;1;0;false;false;;;;;;
                                  -209555;2;0;false;false;0;0;0;;;
                                  -209557;1;0;false;false;;;;;;
                                  -209558;4;1;false;false;127;0;85;;;
                                  -209562;1;0;false;false;0;0;0;;;
                                  -209563;1;0;false;false;;;;;;
                                  -209564;35;0;false;false;0;0;0;;;
                                  -209599;3;0;false;false;;;;;;
                                  -209602;31;0;false;false;0;0;0;;;
                                  -209633;1;0;false;false;;;;;;
                                  -209634;10;0;false;false;0;0;0;;;
                                  -209644;3;0;false;false;;;;;;
                                  -209647;1;0;false;false;0;0;0;;;
                                  -209648;2;0;false;false;;;;;;
                                  -209650;3;0;false;false;63;95;191;;;
                                  -209653;3;0;false;false;;;;;;
                                  -209656;1;0;false;false;63;95;191;;;
                                  -209657;1;0;false;false;;;;;;
                                  -209658;7;0;false;false;63;95;191;;;
                                  -209665;1;0;false;false;;;;;;
                                  -209666;3;0;false;false;63;95;191;;;
                                  -209669;1;0;false;false;;;;;;
                                  -209670;9;0;false;false;63;95;191;;;
                                  -209679;1;0;false;false;;;;;;
                                  -209680;8;0;false;false;63;95;191;;;
                                  -209688;1;0;false;false;;;;;;
                                  -209689;6;0;false;false;63;95;191;;;
                                  -209695;1;0;false;false;;;;;;
                                  -209696;9;0;false;false;63;95;191;;;
                                  -209705;3;0;false;false;;;;;;
                                  -209708;1;0;false;false;63;95;191;;;
                                  -209709;1;0;false;false;;;;;;
                                  -209710;3;0;false;false;127;127;159;;;
                                  -209713;3;0;false;false;;;;;;
                                  -209716;1;0;false;false;63;95;191;;;
                                  -209717;3;0;false;false;;;;;;
                                  -209720;1;0;false;false;63;95;191;;;
                                  -209721;1;0;false;false;;;;;;
                                  -209722;7;1;false;false;127;159;191;;;
                                  -209729;22;0;false;false;63;95;191;;;
                                  -209751;1;0;false;false;;;;;;
                                  -209752;3;0;false;false;63;95;191;;;
                                  -209755;1;0;false;false;;;;;;
                                  -209756;8;0;false;false;63;95;191;;;
                                  -209764;3;0;false;false;;;;;;
                                  -209767;1;0;false;false;63;95;191;;;
                                  -209768;1;0;false;false;;;;;;
                                  -209769;11;1;false;false;127;159;191;;;
                                  -209780;12;0;false;false;63;95;191;;;
                                  -209792;1;0;false;false;;;;;;
                                  -209793;4;0;false;false;127;127;159;;;
                                  -209797;3;0;false;false;;;;;;
                                  -209800;1;0;false;false;63;95;191;;;
                                  -209801;4;0;false;false;;;;;;
                                  -209805;4;0;false;false;127;127;159;;;
                                  -209809;21;0;false;false;63;95;191;;;
                                  -209830;1;0;false;false;;;;;;
                                  -209831;1;0;false;false;127;127;159;;;
                                  -209832;1;0;false;false;;;;;;
                                  -209833;2;0;false;false;63;95;191;;;
                                  -209835;1;0;false;false;;;;;;
                                  -209836;3;0;false;false;63;95;191;;;
                                  -209839;1;0;false;false;;;;;;
                                  -209840;8;0;false;false;63;95;191;;;
                                  -209848;1;0;false;false;;;;;;
                                  -209849;3;0;false;false;63;95;191;;;
                                  -209852;1;0;false;false;;;;;;
                                  -209853;4;0;false;false;63;95;191;;;
                                  -209857;1;0;false;false;;;;;;
                                  -209858;8;0;false;false;63;95;191;;;
                                  -209866;5;0;false;false;127;127;159;;;
                                  -209871;3;0;false;false;;;;;;
                                  -209874;1;0;false;false;63;95;191;;;
                                  -209875;4;0;false;false;;;;;;
                                  -209879;4;0;false;false;127;127;159;;;
                                  -209883;27;0;false;false;63;95;191;;;
                                  -209910;1;0;false;false;;;;;;
                                  -209911;1;0;false;false;127;127;159;;;
                                  -209912;1;0;false;false;;;;;;
                                  -209913;2;0;false;false;63;95;191;;;
                                  -209915;1;0;false;false;;;;;;
                                  -209916;3;0;false;false;63;95;191;;;
                                  -209919;1;0;false;false;;;;;;
                                  -209920;6;0;false;false;63;95;191;;;
                                  -209926;1;0;false;false;;;;;;
                                  -209927;4;0;false;false;63;95;191;;;
                                  -209931;1;0;false;false;;;;;;
                                  -209932;3;0;false;false;63;95;191;;;
                                  -209935;1;0;false;false;;;;;;
                                  -209936;6;0;false;false;63;95;191;;;
                                  -209942;1;0;false;false;;;;;;
                                  -209943;4;0;false;false;63;95;191;;;
                                  -209947;1;0;false;false;;;;;;
                                  -209948;7;0;false;false;63;95;191;;;
                                  -209955;1;0;false;false;;;;;;
                                  -209956;3;0;false;false;63;95;191;;;
                                  -209959;1;0;false;false;;;;;;
                                  -209960;8;0;false;false;63;95;191;;;
                                  -209968;5;0;false;false;127;127;159;;;
                                  -209973;3;0;false;false;;;;;;
                                  -209976;1;0;false;false;63;95;191;;;
                                  -209977;1;0;false;false;;;;;;
                                  -209978;5;0;false;false;127;127;159;;;
                                  -209983;3;0;false;false;;;;;;
                                  -209986;1;0;false;false;63;95;191;;;
                                  -209987;1;0;false;false;;;;;;
                                  -209988;11;1;false;false;127;159;191;;;
                                  -209999;24;0;false;false;63;95;191;;;
                                  -210023;1;0;false;false;;;;;;
                                  -210024;4;0;false;false;127;127;159;;;
                                  -210028;3;0;false;false;;;;;;
                                  -210031;1;0;false;false;63;95;191;;;
                                  -210032;4;0;false;false;;;;;;
                                  -210036;4;0;false;false;127;127;159;;;
                                  -210040;19;0;false;false;63;95;191;;;
                                  -210059;1;0;false;false;;;;;;
                                  -210060;4;0;false;false;63;95;191;;;
                                  -210064;1;0;false;false;;;;;;
                                  -210065;8;0;false;false;63;95;191;;;
                                  -210073;1;0;false;false;;;;;;
                                  -210074;2;0;false;false;63;95;191;;;
                                  -210076;1;0;false;false;;;;;;
                                  -210077;4;0;false;false;63;95;191;;;
                                  -210081;5;0;false;false;127;127;159;;;
                                  -210086;3;0;false;false;;;;;;
                                  -210089;1;0;false;false;63;95;191;;;
                                  -210090;1;0;false;false;;;;;;
                                  -210091;5;0;false;false;127;127;159;;;
                                  -210096;3;0;false;false;;;;;;
                                  -210099;2;0;false;false;63;95;191;;;
                                  -210101;2;0;false;false;;;;;;
                                  -210103;6;1;false;false;127;0;85;;;
                                  -210109;1;0;false;false;;;;;;
                                  -210110;4;1;false;false;127;0;85;;;
                                  -210114;1;0;false;false;;;;;;
                                  -210115;51;0;false;false;0;0;0;;;
                                  -210166;1;0;false;false;;;;;;
                                  -210167;23;0;false;false;0;0;0;;;
                                  -210190;1;0;false;false;;;;;;
                                  -210191;1;0;false;false;0;0;0;;;
                                  -210192;3;0;false;false;;;;;;
                                  -210195;14;0;false;false;0;0;0;;;
                                  -210209;3;0;false;false;;;;;;
                                  -210212;2;1;false;false;127;0;85;;;
                                  -210214;1;0;false;false;;;;;;
                                  -210215;23;0;false;false;0;0;0;;;
                                  -210238;1;0;false;false;;;;;;
                                  -210239;2;0;false;false;0;0;0;;;
                                  -210241;1;0;false;false;;;;;;
                                  -210242;4;1;false;false;127;0;85;;;
                                  -210246;1;0;false;false;0;0;0;;;
                                  -210247;1;0;false;false;;;;;;
                                  -210248;35;0;false;false;0;0;0;;;
                                  -210283;3;0;false;false;;;;;;
                                  -210286;30;0;false;false;0;0;0;;;
                                  -210316;1;0;false;false;;;;;;
                                  -210317;24;0;false;false;0;0;0;;;
                                  -210341;3;0;false;false;;;;;;
                                  -210344;1;0;false;false;0;0;0;;;
                                  -210345;2;0;false;false;;;;;;
                                  -210347;3;0;false;false;63;95;191;;;
                                  -210350;3;0;false;false;;;;;;
                                  -210353;1;0;false;false;63;95;191;;;
                                  -210354;1;0;false;false;;;;;;
                                  -210355;7;0;false;false;63;95;191;;;
                                  -210362;1;0;false;false;;;;;;
                                  -210363;3;0;false;false;63;95;191;;;
                                  -210366;1;0;false;false;;;;;;
                                  -210367;9;0;false;false;63;95;191;;;
                                  -210376;1;0;false;false;;;;;;
                                  -210377;4;0;false;false;63;95;191;;;
                                  -210381;1;0;false;false;;;;;;
                                  -210382;10;0;false;false;63;95;191;;;
                                  -210392;1;0;false;false;;;;;;
                                  -210393;9;0;false;false;63;95;191;;;
                                  -210402;3;0;false;false;;;;;;
                                  -210405;1;0;false;false;63;95;191;;;
                                  -210406;1;0;false;false;;;;;;
                                  -210407;3;0;false;false;127;127;159;;;
                                  -210410;3;0;false;false;;;;;;
                                  -210413;1;0;false;false;63;95;191;;;
                                  -210414;3;0;false;false;;;;;;
                                  -210417;1;0;false;false;63;95;191;;;
                                  -210418;1;0;false;false;;;;;;
                                  -210419;7;1;false;false;127;159;191;;;
                                  -210426;8;0;false;false;63;95;191;;;
                                  -210434;1;0;false;false;;;;;;
                                  -210435;3;0;false;false;63;95;191;;;
                                  -210438;1;0;false;false;;;;;;
                                  -210439;8;0;false;false;63;95;191;;;
                                  -210447;3;0;false;false;;;;;;
                                  -210450;1;0;false;false;63;95;191;;;
                                  -210451;1;0;false;false;;;;;;
                                  -210452;11;1;false;false;127;159;191;;;
                                  -210463;12;0;false;false;63;95;191;;;
                                  -210475;1;0;false;false;;;;;;
                                  -210476;4;0;false;false;127;127;159;;;
                                  -210480;3;0;false;false;;;;;;
                                  -210483;1;0;false;false;63;95;191;;;
                                  -210484;4;0;false;false;;;;;;
                                  -210488;4;0;false;false;127;127;159;;;
                                  -210492;21;0;false;false;63;95;191;;;
                                  -210513;1;0;false;false;;;;;;
                                  -210514;1;0;false;false;127;127;159;;;
                                  -210515;1;0;false;false;;;;;;
                                  -210516;2;0;false;false;63;95;191;;;
                                  -210518;1;0;false;false;;;;;;
                                  -210519;3;0;false;false;63;95;191;;;
                                  -210522;1;0;false;false;;;;;;
                                  -210523;8;0;false;false;63;95;191;;;
                                  -210531;1;0;false;false;;;;;;
                                  -210532;3;0;false;false;63;95;191;;;
                                  -210535;1;0;false;false;;;;;;
                                  -210536;4;0;false;false;63;95;191;;;
                                  -210540;1;0;false;false;;;;;;
                                  -210541;8;0;false;false;63;95;191;;;
                                  -210549;5;0;false;false;127;127;159;;;
                                  -210554;3;0;false;false;;;;;;
                                  -210557;1;0;false;false;63;95;191;;;
                                  -210558;4;0;false;false;;;;;;
                                  -210562;4;0;false;false;127;127;159;;;
                                  -210566;27;0;false;false;63;95;191;;;
                                  -210593;1;0;false;false;;;;;;
                                  -210594;1;0;false;false;127;127;159;;;
                                  -210595;1;0;false;false;;;;;;
                                  -210596;2;0;false;false;63;95;191;;;
                                  -210598;1;0;false;false;;;;;;
                                  -210599;3;0;false;false;63;95;191;;;
                                  -210602;1;0;false;false;;;;;;
                                  -210603;6;0;false;false;63;95;191;;;
                                  -210609;1;0;false;false;;;;;;
                                  -210610;4;0;false;false;63;95;191;;;
                                  -210614;1;0;false;false;;;;;;
                                  -210615;3;0;false;false;63;95;191;;;
                                  -210618;1;0;false;false;;;;;;
                                  -210619;6;0;false;false;63;95;191;;;
                                  -210625;1;0;false;false;;;;;;
                                  -210626;4;0;false;false;63;95;191;;;
                                  -210630;1;0;false;false;;;;;;
                                  -210631;7;0;false;false;63;95;191;;;
                                  -210638;1;0;false;false;;;;;;
                                  -210639;3;0;false;false;63;95;191;;;
                                  -210642;1;0;false;false;;;;;;
                                  -210643;8;0;false;false;63;95;191;;;
                                  -210651;5;0;false;false;127;127;159;;;
                                  -210656;3;0;false;false;;;;;;
                                  -210659;1;0;false;false;63;95;191;;;
                                  -210660;1;0;false;false;;;;;;
                                  -210661;5;0;false;false;127;127;159;;;
                                  -210666;3;0;false;false;;;;;;
                                  -210669;1;0;false;false;63;95;191;;;
                                  -210670;1;0;false;false;;;;;;
                                  -210671;11;1;false;false;127;159;191;;;
                                  -210682;24;0;false;false;63;95;191;;;
                                  -210706;1;0;false;false;;;;;;
                                  -210707;4;0;false;false;127;127;159;;;
                                  -210711;3;0;false;false;;;;;;
                                  -210714;1;0;false;false;63;95;191;;;
                                  -210715;4;0;false;false;;;;;;
                                  -210719;4;0;false;false;127;127;159;;;
                                  -210723;19;0;false;false;63;95;191;;;
                                  -210742;1;0;false;false;;;;;;
                                  -210743;4;0;false;false;63;95;191;;;
                                  -210747;1;0;false;false;;;;;;
                                  -210748;8;0;false;false;63;95;191;;;
                                  -210756;1;0;false;false;;;;;;
                                  -210757;2;0;false;false;63;95;191;;;
                                  -210759;1;0;false;false;;;;;;
                                  -210760;4;0;false;false;63;95;191;;;
                                  -210764;5;0;false;false;127;127;159;;;
                                  -210769;3;0;false;false;;;;;;
                                  -210772;1;0;false;false;63;95;191;;;
                                  -210773;1;0;false;false;;;;;;
                                  -210774;5;0;false;false;127;127;159;;;
                                  -210779;3;0;false;false;;;;;;
                                  -210782;2;0;false;false;63;95;191;;;
                                  -210784;2;0;false;false;;;;;;
                                  -210786;6;1;false;false;127;0;85;;;
                                  -210792;1;0;false;false;;;;;;
                                  -210793;4;1;false;false;127;0;85;;;
                                  -210797;1;0;false;false;;;;;;
                                  -210798;51;0;false;false;0;0;0;;;
                                  -210849;1;0;false;false;;;;;;
                                  -210850;9;0;false;false;0;0;0;;;
                                  -210859;1;0;false;false;;;;;;
                                  -210860;1;0;false;false;0;0;0;;;
                                  -210861;3;0;false;false;;;;;;
                                  -210864;14;0;false;false;0;0;0;;;
                                  -210878;3;0;false;false;;;;;;
                                  -210881;2;1;false;false;127;0;85;;;
                                  -210883;1;0;false;false;;;;;;
                                  -210884;9;0;false;false;0;0;0;;;
                                  -210893;1;0;false;false;;;;;;
                                  -210894;2;0;false;false;0;0;0;;;
                                  -210896;1;0;false;false;;;;;;
                                  -210897;4;1;false;false;127;0;85;;;
                                  -210901;1;0;false;false;0;0;0;;;
                                  -210902;1;0;false;false;;;;;;
                                  -210903;35;0;false;false;0;0;0;;;
                                  -210938;3;0;false;false;;;;;;
                                  -210941;33;0;false;false;0;0;0;;;
                                  -210974;1;0;false;false;;;;;;
                                  -210975;10;0;false;false;0;0;0;;;
                                  -210985;4;0;false;false;;;;;;
                                  -210989;66;0;false;false;63;127;95;;;
                                  -211055;1;0;false;false;;;;;;
                                  -211056;2;1;false;false;127;0;85;;;
                                  -211058;1;0;false;false;;;;;;
                                  -211059;32;0;false;false;0;0;0;;;
                                  -211091;1;0;false;false;;;;;;
                                  -211092;2;0;false;false;0;0;0;;;
                                  -211094;1;0;false;false;;;;;;
                                  -211095;19;0;false;false;0;0;0;;;
                                  -211114;1;0;false;false;;;;;;
                                  -211115;1;0;false;false;0;0;0;;;
                                  -211116;4;0;false;false;;;;;;
                                  -211120;18;0;false;false;0;0;0;;;
                                  -211138;1;0;false;false;;;;;;
                                  -211139;13;0;false;false;0;0;0;;;
                                  -211152;1;0;false;false;;;;;;
                                  -211153;1;0;false;false;0;0;0;;;
                                  -211154;1;0;false;false;;;;;;
                                  -211155;3;1;false;false;127;0;85;;;
                                  -211158;1;0;false;false;;;;;;
                                  -211159;38;0;false;false;0;0;0;;;
                                  -211197;4;0;false;false;;;;;;
                                  -211201;30;0;false;false;0;0;0;;;
                                  -211231;1;0;false;false;;;;;;
                                  -211232;15;0;false;false;0;0;0;;;
                                  -211247;5;0;false;false;;;;;;
                                  -211252;18;0;false;false;0;0;0;;;
                                  -211270;1;0;false;false;;;;;;
                                  -211271;1;0;false;false;0;0;0;;;
                                  -211272;1;0;false;false;;;;;;
                                  -211273;5;1;false;false;127;0;85;;;
                                  -211278;1;0;false;false;0;0;0;;;
                                  -211279;3;0;false;false;;;;;;
                                  -211282;1;0;false;false;0;0;0;;;
                                  -211283;2;0;false;false;;;;;;
                                  -211285;1;0;false;false;0;0;0;;;
                                  -211286;2;0;false;false;;;;;;
                                  -211288;3;0;false;false;63;95;191;;;
                                  -211291;3;0;false;false;;;;;;
                                  -211294;1;0;false;false;63;95;191;;;
                                  -211295;1;0;false;false;;;;;;
                                  -211296;7;0;false;false;63;95;191;;;
                                  -211303;1;0;false;false;;;;;;
                                  -211304;3;0;false;false;63;95;191;;;
                                  -211307;1;0;false;false;;;;;;
                                  -211308;9;0;false;false;63;95;191;;;
                                  -211317;1;0;false;false;;;;;;
                                  -211318;4;0;false;false;63;95;191;;;
                                  -211322;1;0;false;false;;;;;;
                                  -211323;5;0;false;false;63;95;191;;;
                                  -211328;1;0;false;false;;;;;;
                                  -211329;9;0;false;false;63;95;191;;;
                                  -211338;3;0;false;false;;;;;;
                                  -211341;1;0;false;false;63;95;191;;;
                                  -211342;1;0;false;false;;;;;;
                                  -211343;3;0;false;false;127;127;159;;;
                                  -211346;3;0;false;false;;;;;;
                                  -211349;1;0;false;false;63;95;191;;;
                                  -211350;3;0;false;false;;;;;;
                                  -211353;1;0;false;false;63;95;191;;;
                                  -211354;1;0;false;false;;;;;;
                                  -211355;7;1;false;false;127;159;191;;;
                                  -211362;8;0;false;false;63;95;191;;;
                                  -211370;1;0;false;false;;;;;;
                                  -211371;3;0;false;false;63;95;191;;;
                                  -211374;1;0;false;false;;;;;;
                                  -211375;8;0;false;false;63;95;191;;;
                                  -211383;3;0;false;false;;;;;;
                                  -211386;1;0;false;false;63;95;191;;;
                                  -211387;1;0;false;false;;;;;;
                                  -211388;11;1;false;false;127;159;191;;;
                                  -211399;12;0;false;false;63;95;191;;;
                                  -211411;1;0;false;false;;;;;;
                                  -211412;4;0;false;false;127;127;159;;;
                                  -211416;3;0;false;false;;;;;;
                                  -211419;1;0;false;false;63;95;191;;;
                                  -211420;4;0;false;false;;;;;;
                                  -211424;4;0;false;false;127;127;159;;;
                                  -211428;21;0;false;false;63;95;191;;;
                                  -211449;1;0;false;false;;;;;;
                                  -211450;1;0;false;false;127;127;159;;;
                                  -211451;1;0;false;false;;;;;;
                                  -211452;2;0;false;false;63;95;191;;;
                                  -211454;1;0;false;false;;;;;;
                                  -211455;3;0;false;false;63;95;191;;;
                                  -211458;1;0;false;false;;;;;;
                                  -211459;8;0;false;false;63;95;191;;;
                                  -211467;1;0;false;false;;;;;;
                                  -211468;3;0;false;false;63;95;191;;;
                                  -211471;1;0;false;false;;;;;;
                                  -211472;4;0;false;false;63;95;191;;;
                                  -211476;1;0;false;false;;;;;;
                                  -211477;8;0;false;false;63;95;191;;;
                                  -211485;5;0;false;false;127;127;159;;;
                                  -211490;3;0;false;false;;;;;;
                                  -211493;1;0;false;false;63;95;191;;;
                                  -211494;4;0;false;false;;;;;;
                                  -211498;4;0;false;false;127;127;159;;;
                                  -211502;27;0;false;false;63;95;191;;;
                                  -211529;1;0;false;false;;;;;;
                                  -211530;1;0;false;false;127;127;159;;;
                                  -211531;1;0;false;false;;;;;;
                                  -211532;2;0;false;false;63;95;191;;;
                                  -211534;1;0;false;false;;;;;;
                                  -211535;3;0;false;false;63;95;191;;;
                                  -211538;1;0;false;false;;;;;;
                                  -211539;6;0;false;false;63;95;191;;;
                                  -211545;1;0;false;false;;;;;;
                                  -211546;4;0;false;false;63;95;191;;;
                                  -211550;1;0;false;false;;;;;;
                                  -211551;3;0;false;false;63;95;191;;;
                                  -211554;1;0;false;false;;;;;;
                                  -211555;6;0;false;false;63;95;191;;;
                                  -211561;1;0;false;false;;;;;;
                                  -211562;4;0;false;false;63;95;191;;;
                                  -211566;1;0;false;false;;;;;;
                                  -211567;7;0;false;false;63;95;191;;;
                                  -211574;1;0;false;false;;;;;;
                                  -211575;3;0;false;false;63;95;191;;;
                                  -211578;1;0;false;false;;;;;;
                                  -211579;8;0;false;false;63;95;191;;;
                                  -211587;5;0;false;false;127;127;159;;;
                                  -211592;3;0;false;false;;;;;;
                                  -211595;1;0;false;false;63;95;191;;;
                                  -211596;1;0;false;false;;;;;;
                                  -211597;5;0;false;false;127;127;159;;;
                                  -211602;3;0;false;false;;;;;;
                                  -211605;1;0;false;false;63;95;191;;;
                                  -211606;1;0;false;false;;;;;;
                                  -211607;11;1;false;false;127;159;191;;;
                                  -211618;24;0;false;false;63;95;191;;;
                                  -211642;1;0;false;false;;;;;;
                                  -211643;4;0;false;false;127;127;159;;;
                                  -211647;3;0;false;false;;;;;;
                                  -211650;1;0;false;false;63;95;191;;;
                                  -211651;4;0;false;false;;;;;;
                                  -211655;4;0;false;false;127;127;159;;;
                                  -211659;19;0;false;false;63;95;191;;;
                                  -211678;1;0;false;false;;;;;;
                                  -211679;4;0;false;false;63;95;191;;;
                                  -211683;1;0;false;false;;;;;;
                                  -211684;8;0;false;false;63;95;191;;;
                                  -211692;1;0;false;false;;;;;;
                                  -211693;2;0;false;false;63;95;191;;;
                                  -211695;1;0;false;false;;;;;;
                                  -211696;4;0;false;false;63;95;191;;;
                                  -211700;5;0;false;false;127;127;159;;;
                                  -211705;3;0;false;false;;;;;;
                                  -211708;1;0;false;false;63;95;191;;;
                                  -211709;1;0;false;false;;;;;;
                                  -211710;5;0;false;false;127;127;159;;;
                                  -211715;3;0;false;false;;;;;;
                                  -211718;2;0;false;false;63;95;191;;;
                                  -211720;2;0;false;false;;;;;;
                                  -211722;6;1;false;false;127;0;85;;;
                                  -211728;1;0;false;false;;;;;;
                                  -211729;4;1;false;false;127;0;85;;;
                                  -211733;1;0;false;false;;;;;;
                                  -211734;41;0;false;false;0;0;0;;;
                                  -211775;1;0;false;false;;;;;;
                                  -211776;9;0;false;false;0;0;0;;;
                                  -211785;1;0;false;false;;;;;;
                                  -211786;1;0;false;false;0;0;0;;;
                                  -211787;3;0;false;false;;;;;;
                                  -211790;14;0;false;false;0;0;0;;;
                                  -211804;3;0;false;false;;;;;;
                                  -211807;2;1;false;false;127;0;85;;;
                                  -211809;1;0;false;false;;;;;;
                                  -211810;9;0;false;false;0;0;0;;;
                                  -211819;1;0;false;false;;;;;;
                                  -211820;2;0;false;false;0;0;0;;;
                                  -211822;1;0;false;false;;;;;;
                                  -211823;4;1;false;false;127;0;85;;;
                                  -211827;1;0;false;false;0;0;0;;;
                                  -211828;1;0;false;false;;;;;;
                                  -211829;1;0;false;false;0;0;0;;;
                                  -211830;4;0;false;false;;;;;;
                                  -211834;35;0;false;false;0;0;0;;;
                                  -211869;3;0;false;false;;;;;;
                                  -211872;1;0;false;false;0;0;0;;;
                                  -211873;3;0;false;false;;;;;;
                                  -211876;28;0;false;false;0;0;0;;;
                                  -211904;1;0;false;false;;;;;;
                                  -211905;10;0;false;false;0;0;0;;;
                                  -211915;4;0;false;false;;;;;;
                                  -211919;80;0;false;false;63;127;95;;;
                                  -211999;1;0;false;false;;;;;;
                                  -212000;2;1;false;false;127;0;85;;;
                                  -212002;1;0;false;false;;;;;;
                                  -212003;27;0;false;false;0;0;0;;;
                                  -212030;1;0;false;false;;;;;;
                                  -212031;2;0;false;false;0;0;0;;;
                                  -212033;1;0;false;false;;;;;;
                                  -212034;14;0;false;false;0;0;0;;;
                                  -212048;1;0;false;false;;;;;;
                                  -212049;1;0;false;false;0;0;0;;;
                                  -212050;4;0;false;false;;;;;;
                                  -212054;18;0;false;false;0;0;0;;;
                                  -212072;1;0;false;false;;;;;;
                                  -212073;13;0;false;false;0;0;0;;;
                                  -212086;1;0;false;false;;;;;;
                                  -212087;1;0;false;false;0;0;0;;;
                                  -212088;1;0;false;false;;;;;;
                                  -212089;3;1;false;false;127;0;85;;;
                                  -212092;1;0;false;false;;;;;;
                                  -212093;38;0;false;false;0;0;0;;;
                                  -212131;4;0;false;false;;;;;;
                                  -212135;25;0;false;false;0;0;0;;;
                                  -212160;1;0;false;false;;;;;;
                                  -212161;15;0;false;false;0;0;0;;;
                                  -212176;5;0;false;false;;;;;;
                                  -212181;13;0;false;false;0;0;0;;;
                                  -212194;1;0;false;false;;;;;;
                                  -212195;1;0;false;false;0;0;0;;;
                                  -212196;1;0;false;false;;;;;;
                                  -212197;5;1;false;false;127;0;85;;;
                                  -212202;1;0;false;false;0;0;0;;;
                                  -212203;3;0;false;false;;;;;;
                                  -212206;1;0;false;false;0;0;0;;;
                                  -212207;2;0;false;false;;;;;;
                                  -212209;1;0;false;false;0;0;0;;;
                                  -212210;2;0;false;false;;;;;;
                                  -212212;3;0;false;false;63;95;191;;;
                                  -212215;3;0;false;false;;;;;;
                                  -212218;1;0;false;false;63;95;191;;;
                                  -212219;1;0;false;false;;;;;;
                                  -212220;7;0;false;false;63;95;191;;;
                                  -212227;1;0;false;false;;;;;;
                                  -212228;3;0;false;false;63;95;191;;;
                                  -212231;1;0;false;false;;;;;;
                                  -212232;9;0;false;false;63;95;191;;;
                                  -212241;1;0;false;false;;;;;;
                                  -212242;6;0;false;false;63;95;191;;;
                                  -212248;1;0;false;false;;;;;;
                                  -212249;9;0;false;false;63;95;191;;;
                                  -212258;3;0;false;false;;;;;;
                                  -212261;1;0;false;false;63;95;191;;;
                                  -212262;1;0;false;false;;;;;;
                                  -212263;3;0;false;false;127;127;159;;;
                                  -212266;3;0;false;false;;;;;;
                                  -212269;1;0;false;false;63;95;191;;;
                                  -212270;3;0;false;false;;;;;;
                                  -212273;1;0;false;false;63;95;191;;;
                                  -212274;1;0;false;false;;;;;;
                                  -212275;7;1;false;false;127;159;191;;;
                                  -212282;14;0;false;false;63;95;191;;;
                                  -212296;1;0;false;false;;;;;;
                                  -212297;3;0;false;false;63;95;191;;;
                                  -212300;1;0;false;false;;;;;;
                                  -212301;8;0;false;false;63;95;191;;;
                                  -212309;3;0;false;false;;;;;;
                                  -212312;1;0;false;false;63;95;191;;;
                                  -212313;1;0;false;false;;;;;;
                                  -212314;11;1;false;false;127;159;191;;;
                                  -212325;12;0;false;false;63;95;191;;;
                                  -212337;1;0;false;false;;;;;;
                                  -212338;4;0;false;false;127;127;159;;;
                                  -212342;3;0;false;false;;;;;;
                                  -212345;1;0;false;false;63;95;191;;;
                                  -212346;4;0;false;false;;;;;;
                                  -212350;4;0;false;false;127;127;159;;;
                                  -212354;21;0;false;false;63;95;191;;;
                                  -212375;1;0;false;false;;;;;;
                                  -212376;1;0;false;false;127;127;159;;;
                                  -212377;1;0;false;false;;;;;;
                                  -212378;2;0;false;false;63;95;191;;;
                                  -212380;1;0;false;false;;;;;;
                                  -212381;3;0;false;false;63;95;191;;;
                                  -212384;1;0;false;false;;;;;;
                                  -212385;8;0;false;false;63;95;191;;;
                                  -212393;1;0;false;false;;;;;;
                                  -212394;3;0;false;false;63;95;191;;;
                                  -212397;1;0;false;false;;;;;;
                                  -212398;4;0;false;false;63;95;191;;;
                                  -212402;1;0;false;false;;;;;;
                                  -212403;8;0;false;false;63;95;191;;;
                                  -212411;5;0;false;false;127;127;159;;;
                                  -212416;3;0;false;false;;;;;;
                                  -212419;1;0;false;false;63;95;191;;;
                                  -212420;4;0;false;false;;;;;;
                                  -212424;4;0;false;false;127;127;159;;;
                                  -212428;27;0;false;false;63;95;191;;;
                                  -212455;1;0;false;false;;;;;;
                                  -212456;1;0;false;false;127;127;159;;;
                                  -212457;1;0;false;false;;;;;;
                                  -212458;2;0;false;false;63;95;191;;;
                                  -212460;1;0;false;false;;;;;;
                                  -212461;3;0;false;false;63;95;191;;;
                                  -212464;1;0;false;false;;;;;;
                                  -212465;6;0;false;false;63;95;191;;;
                                  -212471;1;0;false;false;;;;;;
                                  -212472;4;0;false;false;63;95;191;;;
                                  -212476;1;0;false;false;;;;;;
                                  -212477;3;0;false;false;63;95;191;;;
                                  -212480;1;0;false;false;;;;;;
                                  -212481;6;0;false;false;63;95;191;;;
                                  -212487;1;0;false;false;;;;;;
                                  -212488;4;0;false;false;63;95;191;;;
                                  -212492;1;0;false;false;;;;;;
                                  -212493;7;0;false;false;63;95;191;;;
                                  -212500;1;0;false;false;;;;;;
                                  -212501;3;0;false;false;63;95;191;;;
                                  -212504;1;0;false;false;;;;;;
                                  -212505;8;0;false;false;63;95;191;;;
                                  -212513;5;0;false;false;127;127;159;;;
                                  -212518;3;0;false;false;;;;;;
                                  -212521;1;0;false;false;63;95;191;;;
                                  -212522;1;0;false;false;;;;;;
                                  -212523;5;0;false;false;127;127;159;;;
                                  -212528;3;0;false;false;;;;;;
                                  -212531;1;0;false;false;63;95;191;;;
                                  -212532;1;0;false;false;;;;;;
                                  -212533;11;1;false;false;127;159;191;;;
                                  -212544;24;0;false;false;63;95;191;;;
                                  -212568;1;0;false;false;;;;;;
                                  -212569;4;0;false;false;127;127;159;;;
                                  -212573;3;0;false;false;;;;;;
                                  -212576;1;0;false;false;63;95;191;;;
                                  -212577;4;0;false;false;;;;;;
                                  -212581;4;0;false;false;127;127;159;;;
                                  -212585;19;0;false;false;63;95;191;;;
                                  -212604;1;0;false;false;;;;;;
                                  -212605;4;0;false;false;63;95;191;;;
                                  -212609;1;0;false;false;;;;;;
                                  -212610;8;0;false;false;63;95;191;;;
                                  -212618;1;0;false;false;;;;;;
                                  -212619;2;0;false;false;63;95;191;;;
                                  -212621;1;0;false;false;;;;;;
                                  -212622;4;0;false;false;63;95;191;;;
                                  -212626;5;0;false;false;127;127;159;;;
                                  -212631;3;0;false;false;;;;;;
                                  -212634;1;0;false;false;63;95;191;;;
                                  -212635;1;0;false;false;;;;;;
                                  -212636;5;0;false;false;127;127;159;;;
                                  -212641;3;0;false;false;;;;;;
                                  -212644;2;0;false;false;63;95;191;;;
                                  -212646;2;0;false;false;;;;;;
                                  -212648;6;1;false;false;127;0;85;;;
                                  -212654;1;0;false;false;;;;;;
                                  -212655;4;1;false;false;127;0;85;;;
                                  -212659;1;0;false;false;;;;;;
                                  -212660;35;0;false;false;0;0;0;;;
                                  -212695;1;0;false;false;;;;;;
                                  -212696;15;0;false;false;0;0;0;;;
                                  -212711;1;0;false;false;;;;;;
                                  -212712;1;0;false;false;0;0;0;;;
                                  -212713;3;0;false;false;;;;;;
                                  -212716;14;0;false;false;0;0;0;;;
                                  -212730;3;0;false;false;;;;;;
                                  -212733;2;1;false;false;127;0;85;;;
                                  -212735;1;0;false;false;;;;;;
                                  -212736;15;0;false;false;0;0;0;;;
                                  -212751;1;0;false;false;;;;;;
                                  -212752;2;0;false;false;0;0;0;;;
                                  -212754;1;0;false;false;;;;;;
                                  -212755;4;1;false;false;127;0;85;;;
                                  -212759;1;0;false;false;0;0;0;;;
                                  -212760;1;0;false;false;;;;;;
                                  -212761;1;0;false;false;0;0;0;;;
                                  -212762;4;0;false;false;;;;;;
                                  -212766;35;0;false;false;0;0;0;;;
                                  -212801;3;0;false;false;;;;;;
                                  -212804;1;0;false;false;0;0;0;;;
                                  -212805;3;0;false;false;;;;;;
                                  -212808;26;0;false;false;0;0;0;;;
                                  -212834;1;0;false;false;;;;;;
                                  -212835;16;0;false;false;0;0;0;;;
                                  -212851;3;0;false;false;;;;;;
                                  -212854;1;0;false;false;0;0;0;;;
                                  -212855;2;0;false;false;;;;;;
                                  -212857;3;0;false;false;63;95;191;;;
                                  -212860;3;0;false;false;;;;;;
                                  -212863;1;0;false;false;63;95;191;;;
                                  -212864;1;0;false;false;;;;;;
                                  -212865;7;0;false;false;63;95;191;;;
                                  -212872;1;0;false;false;;;;;;
                                  -212873;3;0;false;false;63;95;191;;;
                                  -212876;1;0;false;false;;;;;;
                                  -212877;9;0;false;false;63;95;191;;;
                                  -212886;1;0;false;false;;;;;;
                                  -212887;9;0;false;false;63;95;191;;;
                                  -212896;1;0;false;false;;;;;;
                                  -212897;9;0;false;false;63;95;191;;;
                                  -212906;3;0;false;false;;;;;;
                                  -212909;1;0;false;false;63;95;191;;;
                                  -212910;1;0;false;false;;;;;;
                                  -212911;3;0;false;false;127;127;159;;;
                                  -212914;3;0;false;false;;;;;;
                                  -212917;1;0;false;false;63;95;191;;;
                                  -212918;3;0;false;false;;;;;;
                                  -212921;1;0;false;false;63;95;191;;;
                                  -212922;1;0;false;false;;;;;;
                                  -212923;7;1;false;false;127;159;191;;;
                                  -212930;8;0;false;false;63;95;191;;;
                                  -212938;1;0;false;false;;;;;;
                                  -212939;3;0;false;false;63;95;191;;;
                                  -212942;1;0;false;false;;;;;;
                                  -212943;8;0;false;false;63;95;191;;;
                                  -212951;3;0;false;false;;;;;;
                                  -212954;1;0;false;false;63;95;191;;;
                                  -212955;1;0;false;false;;;;;;
                                  -212956;11;1;false;false;127;159;191;;;
                                  -212967;12;0;false;false;63;95;191;;;
                                  -212979;1;0;false;false;;;;;;
                                  -212980;4;0;false;false;127;127;159;;;
                                  -212984;3;0;false;false;;;;;;
                                  -212987;1;0;false;false;63;95;191;;;
                                  -212988;4;0;false;false;;;;;;
                                  -212992;4;0;false;false;127;127;159;;;
                                  -212996;21;0;false;false;63;95;191;;;
                                  -213017;1;0;false;false;;;;;;
                                  -213018;1;0;false;false;127;127;159;;;
                                  -213019;1;0;false;false;;;;;;
                                  -213020;2;0;false;false;63;95;191;;;
                                  -213022;1;0;false;false;;;;;;
                                  -213023;3;0;false;false;63;95;191;;;
                                  -213026;1;0;false;false;;;;;;
                                  -213027;8;0;false;false;63;95;191;;;
                                  -213035;1;0;false;false;;;;;;
                                  -213036;3;0;false;false;63;95;191;;;
                                  -213039;1;0;false;false;;;;;;
                                  -213040;4;0;false;false;63;95;191;;;
                                  -213044;1;0;false;false;;;;;;
                                  -213045;8;0;false;false;63;95;191;;;
                                  -213053;5;0;false;false;127;127;159;;;
                                  -213058;3;0;false;false;;;;;;
                                  -213061;1;0;false;false;63;95;191;;;
                                  -213062;4;0;false;false;;;;;;
                                  -213066;4;0;false;false;127;127;159;;;
                                  -213070;27;0;false;false;63;95;191;;;
                                  -213097;1;0;false;false;;;;;;
                                  -213098;1;0;false;false;127;127;159;;;
                                  -213099;1;0;false;false;;;;;;
                                  -213100;2;0;false;false;63;95;191;;;
                                  -213102;1;0;false;false;;;;;;
                                  -213103;3;0;false;false;63;95;191;;;
                                  -213106;1;0;false;false;;;;;;
                                  -213107;6;0;false;false;63;95;191;;;
                                  -213113;1;0;false;false;;;;;;
                                  -213114;4;0;false;false;63;95;191;;;
                                  -213118;1;0;false;false;;;;;;
                                  -213119;3;0;false;false;63;95;191;;;
                                  -213122;1;0;false;false;;;;;;
                                  -213123;6;0;false;false;63;95;191;;;
                                  -213129;1;0;false;false;;;;;;
                                  -213130;4;0;false;false;63;95;191;;;
                                  -213134;1;0;false;false;;;;;;
                                  -213135;7;0;false;false;63;95;191;;;
                                  -213142;1;0;false;false;;;;;;
                                  -213143;3;0;false;false;63;95;191;;;
                                  -213146;1;0;false;false;;;;;;
                                  -213147;8;0;false;false;63;95;191;;;
                                  -213155;5;0;false;false;127;127;159;;;
                                  -213160;3;0;false;false;;;;;;
                                  -213163;1;0;false;false;63;95;191;;;
                                  -213164;1;0;false;false;;;;;;
                                  -213165;5;0;false;false;127;127;159;;;
                                  -213170;3;0;false;false;;;;;;
                                  -213173;1;0;false;false;63;95;191;;;
                                  -213174;1;0;false;false;;;;;;
                                  -213175;11;1;false;false;127;159;191;;;
                                  -213186;24;0;false;false;63;95;191;;;
                                  -213210;1;0;false;false;;;;;;
                                  -213211;4;0;false;false;127;127;159;;;
                                  -213215;3;0;false;false;;;;;;
                                  -213218;1;0;false;false;63;95;191;;;
                                  -213219;4;0;false;false;;;;;;
                                  -213223;4;0;false;false;127;127;159;;;
                                  -213227;19;0;false;false;63;95;191;;;
                                  -213246;1;0;false;false;;;;;;
                                  -213247;4;0;false;false;63;95;191;;;
                                  -213251;1;0;false;false;;;;;;
                                  -213252;8;0;false;false;63;95;191;;;
                                  -213260;1;0;false;false;;;;;;
                                  -213261;2;0;false;false;63;95;191;;;
                                  -213263;1;0;false;false;;;;;;
                                  -213264;4;0;false;false;63;95;191;;;
                                  -213268;5;0;false;false;127;127;159;;;
                                  -213273;3;0;false;false;;;;;;
                                  -213276;1;0;false;false;63;95;191;;;
                                  -213277;1;0;false;false;;;;;;
                                  -213278;5;0;false;false;127;127;159;;;
                                  -213283;3;0;false;false;;;;;;
                                  -213286;2;0;false;false;63;95;191;;;
                                  -213288;2;0;false;false;;;;;;
                                  -213290;6;1;false;false;127;0;85;;;
                                  -213296;1;0;false;false;;;;;;
                                  -213297;4;1;false;false;127;0;85;;;
                                  -213301;1;0;false;false;;;;;;
                                  -213302;41;0;false;false;0;0;0;;;
                                  -213343;1;0;false;false;;;;;;
                                  -213344;9;0;false;false;0;0;0;;;
                                  -213353;1;0;false;false;;;;;;
                                  -213354;1;0;false;false;0;0;0;;;
                                  -213355;3;0;false;false;;;;;;
                                  -213358;14;0;false;false;0;0;0;;;
                                  -213372;3;0;false;false;;;;;;
                                  -213375;2;1;false;false;127;0;85;;;
                                  -213377;1;0;false;false;;;;;;
                                  -213378;9;0;false;false;0;0;0;;;
                                  -213387;1;0;false;false;;;;;;
                                  -213388;2;0;false;false;0;0;0;;;
                                  -213390;1;0;false;false;;;;;;
                                  -213391;4;1;false;false;127;0;85;;;
                                  -213395;1;0;false;false;0;0;0;;;
                                  -213396;1;0;false;false;;;;;;
                                  -213397;1;0;false;false;0;0;0;;;
                                  -213398;4;0;false;false;;;;;;
                                  -213402;35;0;false;false;0;0;0;;;
                                  -213437;3;0;false;false;;;;;;
                                  -213440;1;0;false;false;0;0;0;;;
                                  -213441;3;0;false;false;;;;;;
                                  -213444;29;0;false;false;0;0;0;;;
                                  -213473;1;0;false;false;;;;;;
                                  -213474;10;0;false;false;0;0;0;;;
                                  -213484;3;0;false;false;;;;;;
                                  -213487;1;0;false;false;0;0;0;;;
                                  -213488;2;0;false;false;;;;;;
                                  -213490;3;0;false;false;63;95;191;;;
                                  -213493;3;0;false;false;;;;;;
                                  -213496;1;0;false;false;63;95;191;;;
                                  -213497;1;0;false;false;;;;;;
                                  -213498;7;0;false;false;63;95;191;;;
                                  -213505;1;0;false;false;;;;;;
                                  -213506;3;0;false;false;63;95;191;;;
                                  -213509;1;0;false;false;;;;;;
                                  -213510;9;0;false;false;63;95;191;;;
                                  -213519;1;0;false;false;;;;;;
                                  -213520;6;0;false;false;63;95;191;;;
                                  -213526;1;0;false;false;;;;;;
                                  -213527;9;0;false;false;63;95;191;;;
                                  -213536;3;0;false;false;;;;;;
                                  -213539;1;0;false;false;63;95;191;;;
                                  -213540;1;0;false;false;;;;;;
                                  -213541;3;0;false;false;127;127;159;;;
                                  -213544;3;0;false;false;;;;;;
                                  -213547;1;0;false;false;63;95;191;;;
                                  -213548;3;0;false;false;;;;;;
                                  -213551;1;0;false;false;63;95;191;;;
                                  -213552;1;0;false;false;;;;;;
                                  -213553;7;1;false;false;127;159;191;;;
                                  -213560;14;0;false;false;63;95;191;;;
                                  -213574;1;0;false;false;;;;;;
                                  -213575;3;0;false;false;63;95;191;;;
                                  -213578;1;0;false;false;;;;;;
                                  -213579;8;0;false;false;63;95;191;;;
                                  -213587;3;0;false;false;;;;;;
                                  -213590;1;0;false;false;63;95;191;;;
                                  -213591;1;0;false;false;;;;;;
                                  -213592;11;1;false;false;127;159;191;;;
                                  -213603;12;0;false;false;63;95;191;;;
                                  -213615;1;0;false;false;;;;;;
                                  -213616;4;0;false;false;127;127;159;;;
                                  -213620;3;0;false;false;;;;;;
                                  -213623;1;0;false;false;63;95;191;;;
                                  -213624;4;0;false;false;;;;;;
                                  -213628;4;0;false;false;127;127;159;;;
                                  -213632;21;0;false;false;63;95;191;;;
                                  -213653;1;0;false;false;;;;;;
                                  -213654;1;0;false;false;127;127;159;;;
                                  -213655;1;0;false;false;;;;;;
                                  -213656;2;0;false;false;63;95;191;;;
                                  -213658;1;0;false;false;;;;;;
                                  -213659;3;0;false;false;63;95;191;;;
                                  -213662;1;0;false;false;;;;;;
                                  -213663;8;0;false;false;63;95;191;;;
                                  -213671;1;0;false;false;;;;;;
                                  -213672;3;0;false;false;63;95;191;;;
                                  -213675;1;0;false;false;;;;;;
                                  -213676;4;0;false;false;63;95;191;;;
                                  -213680;1;0;false;false;;;;;;
                                  -213681;8;0;false;false;63;95;191;;;
                                  -213689;5;0;false;false;127;127;159;;;
                                  -213694;3;0;false;false;;;;;;
                                  -213697;1;0;false;false;63;95;191;;;
                                  -213698;4;0;false;false;;;;;;
                                  -213702;4;0;false;false;127;127;159;;;
                                  -213706;27;0;false;false;63;95;191;;;
                                  -213733;1;0;false;false;;;;;;
                                  -213734;1;0;false;false;127;127;159;;;
                                  -213735;1;0;false;false;;;;;;
                                  -213736;2;0;false;false;63;95;191;;;
                                  -213738;1;0;false;false;;;;;;
                                  -213739;3;0;false;false;63;95;191;;;
                                  -213742;1;0;false;false;;;;;;
                                  -213743;6;0;false;false;63;95;191;;;
                                  -213749;1;0;false;false;;;;;;
                                  -213750;4;0;false;false;63;95;191;;;
                                  -213754;1;0;false;false;;;;;;
                                  -213755;3;0;false;false;63;95;191;;;
                                  -213758;1;0;false;false;;;;;;
                                  -213759;6;0;false;false;63;95;191;;;
                                  -213765;1;0;false;false;;;;;;
                                  -213766;4;0;false;false;63;95;191;;;
                                  -213770;1;0;false;false;;;;;;
                                  -213771;7;0;false;false;63;95;191;;;
                                  -213778;1;0;false;false;;;;;;
                                  -213779;3;0;false;false;63;95;191;;;
                                  -213782;1;0;false;false;;;;;;
                                  -213783;8;0;false;false;63;95;191;;;
                                  -213791;5;0;false;false;127;127;159;;;
                                  -213796;3;0;false;false;;;;;;
                                  -213799;1;0;false;false;63;95;191;;;
                                  -213800;1;0;false;false;;;;;;
                                  -213801;5;0;false;false;127;127;159;;;
                                  -213806;3;0;false;false;;;;;;
                                  -213809;1;0;false;false;63;95;191;;;
                                  -213810;1;0;false;false;;;;;;
                                  -213811;11;1;false;false;127;159;191;;;
                                  -213822;24;0;false;false;63;95;191;;;
                                  -213846;1;0;false;false;;;;;;
                                  -213847;4;0;false;false;127;127;159;;;
                                  -213851;3;0;false;false;;;;;;
                                  -213854;1;0;false;false;63;95;191;;;
                                  -213855;4;0;false;false;;;;;;
                                  -213859;4;0;false;false;127;127;159;;;
                                  -213863;19;0;false;false;63;95;191;;;
                                  -213882;1;0;false;false;;;;;;
                                  -213883;4;0;false;false;63;95;191;;;
                                  -213887;1;0;false;false;;;;;;
                                  -213888;8;0;false;false;63;95;191;;;
                                  -213896;1;0;false;false;;;;;;
                                  -213897;2;0;false;false;63;95;191;;;
                                  -213899;1;0;false;false;;;;;;
                                  -213900;4;0;false;false;63;95;191;;;
                                  -213904;5;0;false;false;127;127;159;;;
                                  -213909;3;0;false;false;;;;;;
                                  -213912;1;0;false;false;63;95;191;;;
                                  -213913;1;0;false;false;;;;;;
                                  -213914;5;0;false;false;127;127;159;;;
                                  -213919;3;0;false;false;;;;;;
                                  -213922;2;0;false;false;63;95;191;;;
                                  -213924;2;0;false;false;;;;;;
                                  -213926;6;1;false;false;127;0;85;;;
                                  -213932;1;0;false;false;;;;;;
                                  -213933;4;1;false;false;127;0;85;;;
                                  -213937;1;0;false;false;;;;;;
                                  -213938;35;0;false;false;0;0;0;;;
                                  -213973;1;0;false;false;;;;;;
                                  -213974;15;0;false;false;0;0;0;;;
                                  -213989;1;0;false;false;;;;;;
                                  -213990;1;0;false;false;0;0;0;;;
                                  -213991;3;0;false;false;;;;;;
                                  -213994;14;0;false;false;0;0;0;;;
                                  -214008;3;0;false;false;;;;;;
                                  -214011;2;1;false;false;127;0;85;;;
                                  -214013;1;0;false;false;;;;;;
                                  -214014;15;0;false;false;0;0;0;;;
                                  -214029;1;0;false;false;;;;;;
                                  -214030;2;0;false;false;0;0;0;;;
                                  -214032;1;0;false;false;;;;;;
                                  -214033;4;1;false;false;127;0;85;;;
                                  -214037;1;0;false;false;0;0;0;;;
                                  -214038;1;0;false;false;;;;;;
                                  -214039;1;0;false;false;0;0;0;;;
                                  -214040;4;0;false;false;;;;;;
                                  -214044;35;0;false;false;0;0;0;;;
                                  -214079;3;0;false;false;;;;;;
                                  -214082;1;0;false;false;0;0;0;;;
                                  -214083;3;0;false;false;;;;;;
                                  -214086;26;0;false;false;0;0;0;;;
                                  -214112;1;0;false;false;;;;;;
                                  -214113;16;0;false;false;0;0;0;;;
                                  -214129;3;0;false;false;;;;;;
                                  -214132;1;0;false;false;0;0;0;;;
                                  -214133;2;0;false;false;;;;;;
                                  -214135;3;0;false;false;63;95;191;;;
                                  -214138;3;0;false;false;;;;;;
                                  -214141;1;0;false;false;63;95;191;;;
                                  -214142;1;0;false;false;;;;;;
                                  -214143;7;0;false;false;63;95;191;;;
                                  -214150;1;0;false;false;;;;;;
                                  -214151;3;0;false;false;63;95;191;;;
                                  -214154;1;0;false;false;;;;;;
                                  -214155;9;0;false;false;63;95;191;;;
                                  -214164;1;0;false;false;;;;;;
                                  -214165;3;0;false;false;63;95;191;;;
                                  -214168;1;0;false;false;;;;;;
                                  -214169;6;0;false;false;63;95;191;;;
                                  -214175;1;0;false;false;;;;;;
                                  -214176;9;0;false;false;63;95;191;;;
                                  -214185;3;0;false;false;;;;;;
                                  -214188;1;0;false;false;63;95;191;;;
                                  -214189;1;0;false;false;;;;;;
                                  -214190;3;0;false;false;127;127;159;;;
                                  -214193;3;0;false;false;;;;;;
                                  -214196;1;0;false;false;63;95;191;;;
                                  -214197;3;0;false;false;;;;;;
                                  -214200;1;0;false;false;63;95;191;;;
                                  -214201;1;0;false;false;;;;;;
                                  -214202;7;1;false;false;127;159;191;;;
                                  -214209;8;0;false;false;63;95;191;;;
                                  -214217;1;0;false;false;;;;;;
                                  -214218;3;0;false;false;63;95;191;;;
                                  -214221;1;0;false;false;;;;;;
                                  -214222;8;0;false;false;63;95;191;;;
                                  -214230;3;0;false;false;;;;;;
                                  -214233;1;0;false;false;63;95;191;;;
                                  -214234;1;0;false;false;;;;;;
                                  -214235;11;1;false;false;127;159;191;;;
                                  -214246;12;0;false;false;63;95;191;;;
                                  -214258;1;0;false;false;;;;;;
                                  -214259;4;0;false;false;127;127;159;;;
                                  -214263;3;0;false;false;;;;;;
                                  -214266;1;0;false;false;63;95;191;;;
                                  -214267;4;0;false;false;;;;;;
                                  -214271;4;0;false;false;127;127;159;;;
                                  -214275;21;0;false;false;63;95;191;;;
                                  -214296;1;0;false;false;;;;;;
                                  -214297;1;0;false;false;127;127;159;;;
                                  -214298;1;0;false;false;;;;;;
                                  -214299;2;0;false;false;63;95;191;;;
                                  -214301;1;0;false;false;;;;;;
                                  -214302;3;0;false;false;63;95;191;;;
                                  -214305;1;0;false;false;;;;;;
                                  -214306;8;0;false;false;63;95;191;;;
                                  -214314;1;0;false;false;;;;;;
                                  -214315;3;0;false;false;63;95;191;;;
                                  -214318;1;0;false;false;;;;;;
                                  -214319;4;0;false;false;63;95;191;;;
                                  -214323;1;0;false;false;;;;;;
                                  -214324;8;0;false;false;63;95;191;;;
                                  -214332;5;0;false;false;127;127;159;;;
                                  -214337;3;0;false;false;;;;;;
                                  -214340;1;0;false;false;63;95;191;;;
                                  -214341;4;0;false;false;;;;;;
                                  -214345;4;0;false;false;127;127;159;;;
                                  -214349;27;0;false;false;63;95;191;;;
                                  -214376;1;0;false;false;;;;;;
                                  -214377;1;0;false;false;127;127;159;;;
                                  -214378;1;0;false;false;;;;;;
                                  -214379;2;0;false;false;63;95;191;;;
                                  -214381;1;0;false;false;;;;;;
                                  -214382;3;0;false;false;63;95;191;;;
                                  -214385;1;0;false;false;;;;;;
                                  -214386;6;0;false;false;63;95;191;;;
                                  -214392;1;0;false;false;;;;;;
                                  -214393;4;0;false;false;63;95;191;;;
                                  -214397;1;0;false;false;;;;;;
                                  -214398;3;0;false;false;63;95;191;;;
                                  -214401;1;0;false;false;;;;;;
                                  -214402;6;0;false;false;63;95;191;;;
                                  -214408;1;0;false;false;;;;;;
                                  -214409;4;0;false;false;63;95;191;;;
                                  -214413;1;0;false;false;;;;;;
                                  -214414;7;0;false;false;63;95;191;;;
                                  -214421;1;0;false;false;;;;;;
                                  -214422;3;0;false;false;63;95;191;;;
                                  -214425;1;0;false;false;;;;;;
                                  -214426;8;0;false;false;63;95;191;;;
                                  -214434;5;0;false;false;127;127;159;;;
                                  -214439;3;0;false;false;;;;;;
                                  -214442;1;0;false;false;63;95;191;;;
                                  -214443;1;0;false;false;;;;;;
                                  -214444;5;0;false;false;127;127;159;;;
                                  -214449;3;0;false;false;;;;;;
                                  -214452;1;0;false;false;63;95;191;;;
                                  -214453;1;0;false;false;;;;;;
                                  -214454;11;1;false;false;127;159;191;;;
                                  -214465;24;0;false;false;63;95;191;;;
                                  -214489;1;0;false;false;;;;;;
                                  -214490;4;0;false;false;127;127;159;;;
                                  -214494;3;0;false;false;;;;;;
                                  -214497;1;0;false;false;63;95;191;;;
                                  -214498;4;0;false;false;;;;;;
                                  -214502;4;0;false;false;127;127;159;;;
                                  -214506;19;0;false;false;63;95;191;;;
                                  -214525;1;0;false;false;;;;;;
                                  -214526;4;0;false;false;63;95;191;;;
                                  -214530;1;0;false;false;;;;;;
                                  -214531;8;0;false;false;63;95;191;;;
                                  -214539;1;0;false;false;;;;;;
                                  -214540;2;0;false;false;63;95;191;;;
                                  -214542;1;0;false;false;;;;;;
                                  -214543;4;0;false;false;63;95;191;;;
                                  -214547;5;0;false;false;127;127;159;;;
                                  -214552;3;0;false;false;;;;;;
                                  -214555;1;0;false;false;63;95;191;;;
                                  -214556;1;0;false;false;;;;;;
                                  -214557;5;0;false;false;127;127;159;;;
                                  -214562;3;0;false;false;;;;;;
                                  -214565;2;0;false;false;63;95;191;;;
                                  -214567;2;0;false;false;;;;;;
                                  -214569;6;1;false;false;127;0;85;;;
                                  -214575;1;0;false;false;;;;;;
                                  -214576;4;1;false;false;127;0;85;;;
                                  -214580;1;0;false;false;;;;;;
                                  -214581;41;0;false;false;0;0;0;;;
                                  -214622;1;0;false;false;;;;;;
                                  -214623;9;0;false;false;0;0;0;;;
                                  -214632;1;0;false;false;;;;;;
                                  -214633;1;0;false;false;0;0;0;;;
                                  -214634;3;0;false;false;;;;;;
                                  -214637;2;1;false;false;127;0;85;;;
                                  -214639;1;0;false;false;;;;;;
                                  -214640;9;0;false;false;0;0;0;;;
                                  -214649;1;0;false;false;;;;;;
                                  -214650;2;0;false;false;0;0;0;;;
                                  -214652;1;0;false;false;;;;;;
                                  -214653;4;1;false;false;127;0;85;;;
                                  -214657;1;0;false;false;0;0;0;;;
                                  -214658;1;0;false;false;;;;;;
                                  -214659;35;0;false;false;0;0;0;;;
                                  -214694;3;0;false;false;;;;;;
                                  -214697;25;0;false;false;0;0;0;;;
                                  -214722;1;0;false;false;;;;;;
                                  -214723;10;0;false;false;0;0;0;;;
                                  -214733;3;0;false;false;;;;;;
                                  -214736;1;0;false;false;0;0;0;;;
                                  -214737;2;0;false;false;;;;;;
                                  -214739;3;0;false;false;63;95;191;;;
                                  -214742;4;0;false;false;;;;;;
                                  -214746;1;0;false;false;63;95;191;;;
                                  -214747;1;0;false;false;;;;;;
                                  -214748;8;0;false;false;63;95;191;;;
                                  -214756;1;0;false;false;;;;;;
                                  -214757;3;0;false;false;63;95;191;;;
                                  -214760;1;0;false;false;;;;;;
                                  -214761;6;0;false;false;63;95;191;;;
                                  -214767;1;0;false;false;;;;;;
                                  -214768;2;0;false;false;63;95;191;;;
                                  -214770;1;0;false;false;;;;;;
                                  -214771;3;0;false;false;63;95;191;;;
                                  -214774;1;0;false;false;;;;;;
                                  -214775;5;0;false;false;63;95;191;;;
                                  -214780;1;0;false;false;;;;;;
                                  -214781;5;0;false;false;63;95;191;;;
                                  -214786;1;0;false;false;;;;;;
                                  -214787;4;0;false;false;63;95;191;;;
                                  -214791;1;0;false;false;;;;;;
                                  -214792;3;0;false;false;63;95;191;;;
                                  -214795;1;0;false;false;;;;;;
                                  -214796;7;0;false;false;63;95;191;;;
                                  -214803;2;0;false;false;;;;;;
                                  -214805;4;0;false;false;63;95;191;;;
                                  -214809;1;0;false;false;;;;;;
                                  -214810;6;0;false;false;63;95;191;;;
                                  -214816;3;0;false;false;;;;;;
                                  -214819;1;0;false;false;63;95;191;;;
                                  -214820;1;0;false;false;;;;;;
                                  -214821;11;0;false;false;63;95;191;;;
                                  -214832;1;0;false;false;;;;;;
                                  -214833;7;0;false;false;63;95;191;;;
                                  -214840;1;0;false;false;;;;;;
                                  -214841;3;0;false;false;63;95;191;;;
                                  -214844;1;0;false;false;;;;;;
                                  -214845;6;0;false;false;63;95;191;;;
                                  -214851;1;0;false;false;;;;;;
                                  -214852;2;0;false;false;63;95;191;;;
                                  -214854;1;0;false;false;;;;;;
                                  -214855;3;0;false;false;63;95;191;;;
                                  -214858;1;0;false;false;;;;;;
                                  -214859;5;0;false;false;63;95;191;;;
                                  -214864;1;0;false;false;;;;;;
                                  -214865;5;0;false;false;63;95;191;;;
                                  -214870;1;0;false;false;;;;;;
                                  -214871;3;0;false;false;63;95;191;;;
                                  -214874;1;0;false;false;;;;;;
                                  -214875;4;0;false;false;63;95;191;;;
                                  -214879;1;0;false;false;;;;;;
                                  -214880;4;0;false;false;63;95;191;;;
                                  -214884;1;0;false;false;;;;;;
                                  -214885;3;0;false;false;63;95;191;;;
                                  -214888;3;0;false;false;;;;;;
                                  -214891;1;0;false;false;63;95;191;;;
                                  -214892;1;0;false;false;;;;;;
                                  -214893;3;0;false;false;63;95;191;;;
                                  -214896;1;0;false;false;;;;;;
                                  -214897;3;0;false;false;63;95;191;;;
                                  -214900;1;0;false;false;;;;;;
                                  -214901;7;0;false;false;63;95;191;;;
                                  -214908;4;0;false;false;;;;;;
                                  -214912;1;0;false;false;63;95;191;;;
                                  -214913;1;0;false;false;;;;;;
                                  -214914;3;0;false;false;127;127;159;;;
                                  -214917;3;0;false;false;;;;;;
                                  -214920;1;0;false;false;63;95;191;;;
                                  -214921;1;0;false;false;;;;;;
                                  -214922;6;0;false;false;63;95;191;;;
                                  -214928;1;0;false;false;;;;;;
                                  -214929;3;0;false;false;63;95;191;;;
                                  -214932;1;0;false;false;;;;;;
                                  -214933;2;0;false;false;63;95;191;;;
                                  -214935;1;0;false;false;;;;;;
                                  -214936;6;0;false;false;63;95;191;;;
                                  -214942;1;0;false;false;;;;;;
                                  -214943;2;0;false;false;63;95;191;;;
                                  -214945;1;0;false;false;;;;;;
                                  -214946;1;0;false;false;63;95;191;;;
                                  -214947;1;0;false;false;;;;;;
                                  -214948;17;0;false;false;63;95;191;;;
                                  -214965;1;0;false;false;;;;;;
                                  -214966;3;0;false;false;63;95;191;;;
                                  -214969;1;0;false;false;;;;;;
                                  -214970;4;0;false;false;63;95;191;;;
                                  -214974;1;0;false;false;;;;;;
                                  -214975;3;0;false;false;63;95;191;;;
                                  -214978;1;0;false;false;;;;;;
                                  -214979;5;0;false;false;63;95;191;;;
                                  -214984;1;0;false;false;;;;;;
                                  -214985;3;0;false;false;63;95;191;;;
                                  -214988;4;0;false;false;;;;;;
                                  -214992;1;0;false;false;63;95;191;;;
                                  -214993;1;0;false;false;;;;;;
                                  -214994;8;0;false;false;63;95;191;;;
                                  -215002;1;0;false;false;;;;;;
                                  -215003;9;0;false;false;63;95;191;;;
                                  -215012;1;0;false;false;;;;;;
                                  -215013;3;0;false;false;63;95;191;;;
                                  -215016;1;0;false;false;;;;;;
                                  -215017;7;0;false;false;63;95;191;;;
                                  -215024;3;0;false;false;;;;;;
                                  -215027;1;0;false;false;63;95;191;;;
                                  -215028;1;0;false;false;;;;;;
                                  -215029;4;0;false;false;127;127;159;;;
                                  -215033;3;0;false;false;;;;;;
                                  -215036;1;0;false;false;63;95;191;;;
                                  -215037;3;0;false;false;;;;;;
                                  -215040;1;0;false;false;63;95;191;;;
                                  -215041;1;0;false;false;;;;;;
                                  -215042;7;1;false;false;127;159;191;;;
                                  -215049;5;0;false;false;63;95;191;;;
                                  -215054;1;0;false;false;;;;;;
                                  -215055;6;0;false;false;63;95;191;;;
                                  -215061;1;0;false;false;;;;;;
                                  -215062;2;0;false;false;63;95;191;;;
                                  -215064;1;0;false;false;;;;;;
                                  -215065;5;0;false;false;63;95;191;;;
                                  -215070;1;0;false;false;;;;;;
                                  -215071;9;0;false;false;63;95;191;;;
                                  -215080;1;0;false;false;;;;;;
                                  -215081;5;0;false;false;63;95;191;;;
                                  -215086;1;0;false;false;;;;;;
                                  -215087;6;0;false;false;63;95;191;;;
                                  -215093;1;0;false;false;;;;;;
                                  -215094;4;0;false;false;63;95;191;;;
                                  -215098;1;0;false;false;;;;;;
                                  -215099;2;0;false;false;63;95;191;;;
                                  -215101;1;0;false;false;;;;;;
                                  -215102;7;0;false;false;63;95;191;;;
                                  -215109;3;0;false;false;;;;;;
                                  -215112;1;0;false;false;63;95;191;;;
                                  -215113;1;0;false;false;;;;;;
                                  -215114;7;1;false;false;127;159;191;;;
                                  -215121;6;0;false;false;63;95;191;;;
                                  -215127;1;0;false;false;;;;;;
                                  -215128;6;0;false;false;63;95;191;;;
                                  -215134;1;0;false;false;;;;;;
                                  -215135;2;0;false;false;63;95;191;;;
                                  -215137;1;0;false;false;;;;;;
                                  -215138;3;0;false;false;63;95;191;;;
                                  -215141;1;0;false;false;;;;;;
                                  -215142;5;0;false;false;63;95;191;;;
                                  -215147;1;0;false;false;;;;;;
                                  -215148;2;0;false;false;63;95;191;;;
                                  -215150;1;0;false;false;;;;;;
                                  -215151;6;0;false;false;63;95;191;;;
                                  -215157;1;0;false;false;;;;;;
                                  -215158;6;0;false;false;63;95;191;;;
                                  -215164;1;0;false;false;;;;;;
                                  -215165;2;0;false;false;63;95;191;;;
                                  -215167;3;0;false;false;;;;;;
                                  -215170;1;0;false;false;63;95;191;;;
                                  -215171;1;0;false;false;;;;;;
                                  -215172;7;1;false;false;127;159;191;;;
                                  -215179;6;0;false;false;63;95;191;;;
                                  -215185;1;0;false;false;;;;;;
                                  -215186;10;0;false;false;63;95;191;;;
                                  -215196;1;0;false;false;;;;;;
                                  -215197;7;0;false;false;63;95;191;;;
                                  -215204;1;0;false;false;;;;;;
                                  -215205;10;0;false;false;63;95;191;;;
                                  -215215;1;0;false;false;;;;;;
                                  -215216;3;0;false;false;63;95;191;;;
                                  -215219;1;0;false;false;;;;;;
                                  -215220;3;0;false;false;63;95;191;;;
                                  -215223;1;0;false;false;;;;;;
                                  -215224;5;0;false;false;63;95;191;;;
                                  -215229;1;0;false;false;;;;;;
                                  -215230;12;0;false;false;63;95;191;;;
                                  -215242;3;0;false;false;;;;;;
                                  -215245;1;0;false;false;63;95;191;;;
                                  -215246;1;0;false;false;;;;;;
                                  -215247;3;0;false;false;63;95;191;;;
                                  -215250;1;0;false;false;;;;;;
                                  -215251;6;0;false;false;63;95;191;;;
                                  -215257;1;0;false;false;;;;;;
                                  -215258;6;0;false;false;63;95;191;;;
                                  -215264;1;0;false;false;;;;;;
                                  -215265;3;0;false;false;63;95;191;;;
                                  -215268;1;0;false;false;;;;;;
                                  -215269;7;0;false;false;63;95;191;;;
                                  -215276;1;0;false;false;;;;;;
                                  -215277;3;0;false;false;63;95;191;;;
                                  -215280;1;0;false;false;;;;;;
                                  -215281;6;0;false;false;63;95;191;;;
                                  -215287;1;0;false;false;;;;;;
                                  -215288;2;0;false;false;63;95;191;;;
                                  -215290;1;0;false;false;;;;;;
                                  -215291;6;0;false;false;63;95;191;;;
                                  -215297;1;0;false;false;;;;;;
                                  -215298;3;0;false;false;63;95;191;;;
                                  -215301;1;0;false;false;;;;;;
                                  -215302;9;0;false;false;63;95;191;;;
                                  -215311;1;0;false;false;;;;;;
                                  -215312;5;0;false;false;63;95;191;;;
                                  -215317;4;0;false;false;;;;;;
                                  -215321;1;0;false;false;63;95;191;;;
                                  -215322;1;0;false;false;;;;;;
                                  -215323;3;0;false;false;63;95;191;;;
                                  -215326;1;0;false;false;;;;;;
                                  -215327;7;0;false;false;63;95;191;;;
                                  -215334;1;0;false;false;;;;;;
                                  -215335;3;0;false;false;63;95;191;;;
                                  -215338;1;0;false;false;;;;;;
                                  -215339;5;0;false;false;63;95;191;;;
                                  -215344;1;0;false;false;;;;;;
                                  -215345;9;0;false;false;63;95;191;;;
                                  -215354;1;0;false;false;;;;;;
                                  -215355;2;0;false;false;63;95;191;;;
                                  -215357;1;0;false;false;;;;;;
                                  -215358;9;0;false;false;63;95;191;;;
                                  -215367;1;0;false;false;;;;;;
                                  -215368;2;0;false;false;63;95;191;;;
                                  -215370;1;0;false;false;;;;;;
                                  -215371;3;0;false;false;63;95;191;;;
                                  -215374;1;0;false;false;;;;;;
                                  -215375;6;0;false;false;63;95;191;;;
                                  -215381;1;0;false;false;;;;;;
                                  -215382;2;0;false;false;63;95;191;;;
                                  -215384;1;0;false;false;;;;;;
                                  -215385;7;0;false;false;63;95;191;;;
                                  -215392;3;0;false;false;;;;;;
                                  -215395;1;0;false;false;63;95;191;;;
                                  -215396;1;0;false;false;;;;;;
                                  -215397;2;0;false;false;63;95;191;;;
                                  -215399;1;0;false;false;;;;;;
                                  -215400;3;0;false;false;63;95;191;;;
                                  -215403;1;0;false;false;;;;;;
                                  -215404;3;0;false;false;63;95;191;;;
                                  -215407;1;0;false;false;127;127;159;;;
                                  -215408;8;0;false;false;63;95;191;;;
                                  -215416;1;0;false;false;;;;;;
                                  -215417;4;0;false;false;63;95;191;;;
                                  -215421;1;0;false;false;;;;;;
                                  -215422;3;0;false;false;63;95;191;;;
                                  -215425;1;0;false;false;;;;;;
                                  -215426;2;0;false;false;63;95;191;;;
                                  -215428;1;0;false;false;;;;;;
                                  -215429;5;0;false;false;63;95;191;;;
                                  -215434;3;0;false;false;;;;;;
                                  -215437;1;0;false;false;63;95;191;;;
                                  -215438;1;0;false;false;;;;;;
                                  -215439;11;1;false;false;127;159;191;;;
                                  -215450;12;0;false;false;63;95;191;;;
                                  -215462;1;0;false;false;;;;;;
                                  -215463;4;0;false;false;127;127;159;;;
                                  -215467;3;0;false;false;;;;;;
                                  -215470;1;0;false;false;63;95;191;;;
                                  -215471;4;0;false;false;;;;;;
                                  -215475;4;0;false;false;127;127;159;;;
                                  -215479;21;0;false;false;63;95;191;;;
                                  -215500;1;0;false;false;;;;;;
                                  -215501;1;0;false;false;127;127;159;;;
                                  -215502;1;0;false;false;;;;;;
                                  -215503;2;0;false;false;63;95;191;;;
                                  -215505;1;0;false;false;;;;;;
                                  -215506;3;0;false;false;63;95;191;;;
                                  -215509;1;0;false;false;;;;;;
                                  -215510;8;0;false;false;63;95;191;;;
                                  -215518;1;0;false;false;;;;;;
                                  -215519;3;0;false;false;63;95;191;;;
                                  -215522;1;0;false;false;;;;;;
                                  -215523;4;0;false;false;63;95;191;;;
                                  -215527;1;0;false;false;;;;;;
                                  -215528;8;0;false;false;63;95;191;;;
                                  -215536;5;0;false;false;127;127;159;;;
                                  -215541;3;0;false;false;;;;;;
                                  -215544;1;0;false;false;63;95;191;;;
                                  -215545;4;0;false;false;;;;;;
                                  -215549;4;0;false;false;127;127;159;;;
                                  -215553;27;0;false;false;63;95;191;;;
                                  -215580;1;0;false;false;;;;;;
                                  -215581;1;0;false;false;127;127;159;;;
                                  -215582;1;0;false;false;;;;;;
                                  -215583;2;0;false;false;63;95;191;;;
                                  -215585;1;0;false;false;;;;;;
                                  -215586;3;0;false;false;63;95;191;;;
                                  -215589;1;0;false;false;;;;;;
                                  -215590;6;0;false;false;63;95;191;;;
                                  -215596;1;0;false;false;;;;;;
                                  -215597;4;0;false;false;63;95;191;;;
                                  -215601;1;0;false;false;;;;;;
                                  -215602;3;0;false;false;63;95;191;;;
                                  -215605;1;0;false;false;;;;;;
                                  -215606;6;0;false;false;63;95;191;;;
                                  -215612;1;0;false;false;;;;;;
                                  -215613;4;0;false;false;63;95;191;;;
                                  -215617;1;0;false;false;;;;;;
                                  -215618;7;0;false;false;63;95;191;;;
                                  -215625;1;0;false;false;;;;;;
                                  -215626;3;0;false;false;63;95;191;;;
                                  -215629;1;0;false;false;;;;;;
                                  -215630;8;0;false;false;63;95;191;;;
                                  -215638;5;0;false;false;127;127;159;;;
                                  -215643;3;0;false;false;;;;;;
                                  -215646;1;0;false;false;63;95;191;;;
                                  -215647;1;0;false;false;;;;;;
                                  -215648;5;0;false;false;127;127;159;;;
                                  -215653;3;0;false;false;;;;;;
                                  -215656;1;0;false;false;63;95;191;;;
                                  -215657;1;0;false;false;;;;;;
                                  -215658;11;1;false;false;127;159;191;;;
                                  -215669;24;0;false;false;63;95;191;;;
                                  -215693;1;0;false;false;;;;;;
                                  -215694;4;0;false;false;127;127;159;;;
                                  -215698;3;0;false;false;;;;;;
                                  -215701;1;0;false;false;63;95;191;;;
                                  -215702;3;0;false;false;;;;;;
                                  -215705;4;0;false;false;127;127;159;;;
                                  -215709;19;0;false;false;63;95;191;;;
                                  -215728;1;0;false;false;;;;;;
                                  -215729;4;0;false;false;63;95;191;;;
                                  -215733;1;0;false;false;;;;;;
                                  -215734;6;0;false;false;63;95;191;;;
                                  -215740;1;0;false;false;;;;;;
                                  -215741;5;0;false;false;63;95;191;;;
                                  -215746;1;0;false;false;;;;;;
                                  -215747;2;0;false;false;63;95;191;;;
                                  -215749;1;0;false;false;;;;;;
                                  -215750;3;0;false;false;63;95;191;;;
                                  -215753;1;0;false;false;;;;;;
                                  -215754;2;0;false;false;63;95;191;;;
                                  -215756;1;0;false;false;;;;;;
                                  -215757;7;0;false;false;63;95;191;;;
                                  -215764;1;0;false;false;;;;;;
                                  -215765;3;0;false;false;63;95;191;;;
                                  -215768;1;0;false;false;;;;;;
                                  -215769;5;0;false;false;63;95;191;;;
                                  -215774;1;0;false;false;;;;;;
                                  -215775;5;0;false;false;63;95;191;;;
                                  -215780;1;0;false;false;;;;;;
                                  -215781;2;0;false;false;63;95;191;;;
                                  -215783;1;0;false;false;;;;;;
                                  -215784;33;0;false;false;63;95;191;;;
                                  -215817;4;0;false;false;;;;;;
                                  -215821;1;0;false;false;63;95;191;;;
                                  -215822;3;0;false;false;;;;;;
                                  -215825;4;0;false;false;127;127;159;;;
                                  -215829;19;0;false;false;63;95;191;;;
                                  -215848;1;0;false;false;;;;;;
                                  -215849;4;0;false;false;63;95;191;;;
                                  -215853;1;0;false;false;;;;;;
                                  -215854;6;0;false;false;63;95;191;;;
                                  -215860;1;0;false;false;;;;;;
                                  -215861;2;0;false;false;63;95;191;;;
                                  -215863;1;0;false;false;;;;;;
                                  -215864;4;0;false;false;63;95;191;;;
                                  -215868;5;0;false;false;127;127;159;;;
                                  -215873;3;0;false;false;;;;;;
                                  -215876;1;0;false;false;63;95;191;;;
                                  -215877;1;0;false;false;;;;;;
                                  -215878;5;0;false;false;127;127;159;;;
                                  -215883;3;0;false;false;;;;;;
                                  -215886;1;0;false;false;63;95;191;;;
                                  -215887;1;0;false;false;;;;;;
                                  -215888;7;1;false;false;127;159;191;;;
                                  -215895;3;0;false;false;63;95;191;;;
                                  -215898;3;0;false;false;;;;;;
                                  -215901;2;0;false;false;63;95;191;;;
                                  -215903;2;0;false;false;;;;;;
                                  -215905;6;1;false;false;127;0;85;;;
                                  -215911;1;0;false;false;;;;;;
                                  -215912;4;1;false;false;127;0;85;;;
                                  -215916;1;0;false;false;;;;;;
                                  -215917;19;0;false;false;0;0;0;;;
                                  -215936;3;1;false;false;127;0;85;;;
                                  -215939;1;0;false;false;;;;;;
                                  -215940;6;0;false;false;0;0;0;;;
                                  -215946;1;0;false;false;;;;;;
                                  -215947;3;1;false;false;127;0;85;;;
                                  -215950;1;0;false;false;;;;;;
                                  -215951;7;0;false;false;0;0;0;;;
                                  -215958;1;0;false;false;;;;;;
                                  -215959;12;0;false;false;0;0;0;;;
                                  -215971;1;0;false;false;;;;;;
                                  -215972;7;0;false;false;0;0;0;;;
                                  -215979;1;0;false;false;;;;;;
                                  -215980;1;0;false;false;0;0;0;;;
                                  -215981;3;0;false;false;;;;;;
                                  -215984;14;0;false;false;0;0;0;;;
                                  -215998;3;0;false;false;;;;;;
                                  -216001;2;1;false;false;127;0;85;;;
                                  -216003;1;0;false;false;;;;;;
                                  -216004;15;0;false;false;0;0;0;;;
                                  -216019;1;0;false;false;;;;;;
                                  -216020;1;0;false;false;0;0;0;;;
                                  -216021;4;0;false;false;;;;;;
                                  -216025;6;1;false;false;127;0;85;;;
                                  -216031;1;0;false;false;0;0;0;;;
                                  -216032;3;0;false;false;;;;;;
                                  -216035;1;0;false;false;0;0;0;;;
                                  -216036;4;0;false;false;;;;;;
                                  -216040;2;1;false;false;127;0;85;;;
                                  -216042;1;0;false;false;;;;;;
                                  -216043;7;0;false;false;0;0;0;;;
                                  -216050;1;0;false;false;;;;;;
                                  -216051;2;0;false;false;0;0;0;;;
                                  -216053;1;0;false;false;;;;;;
                                  -216054;4;1;false;false;127;0;85;;;
                                  -216058;1;0;false;false;0;0;0;;;
                                  -216059;1;0;false;false;;;;;;
                                  -216060;1;0;false;false;0;0;0;;;
                                  -216061;5;0;false;false;;;;;;
                                  -216066;35;0;false;false;0;0;0;;;
                                  -216101;4;0;false;false;;;;;;
                                  -216105;1;0;false;false;0;0;0;;;
                                  -216106;4;0;false;false;;;;;;
                                  -216110;2;1;false;false;127;0;85;;;
                                  -216112;1;0;false;false;;;;;;
                                  -216113;14;0;false;false;0;0;0;;;
                                  -216127;1;0;false;false;;;;;;
                                  -216128;2;0;false;false;0;0;0;;;
                                  -216130;1;0;false;false;;;;;;
                                  -216131;2;0;false;false;0;0;0;;;
                                  -216133;1;0;false;false;;;;;;
                                  -216134;1;0;false;false;0;0;0;;;
                                  -216135;5;0;false;false;;;;;;
                                  -216140;14;0;false;false;0;0;0;;;
                                  -216154;3;1;false;false;127;0;85;;;
                                  -216157;1;0;false;false;;;;;;
                                  -216158;17;0;false;false;0;0;0;;;
                                  -216175;1;0;false;false;;;;;;
                                  -216176;7;0;false;false;0;0;0;;;
                                  -216183;1;0;false;false;;;;;;
                                  -216184;4;1;false;false;127;0;85;;;
                                  -216188;1;0;false;false;0;0;0;;;
                                  -216189;1;0;false;false;;;;;;
                                  -216190;4;1;false;false;127;0;85;;;
                                  -216194;3;0;false;false;0;0;0;;;
                                  -216197;5;0;false;false;;;;;;
                                  -216202;6;1;false;false;127;0;85;;;
                                  -216208;1;0;false;false;0;0;0;;;
                                  -216209;4;0;false;false;;;;;;
                                  -216213;1;0;false;false;0;0;0;;;
                                  -216214;3;0;false;false;;;;;;
                                  -216217;3;1;false;false;127;0;85;;;
                                  -216220;1;0;false;false;;;;;;
                                  -216221;3;0;false;false;0;0;0;;;
                                  -216224;1;0;false;false;;;;;;
                                  -216225;1;0;false;false;0;0;0;;;
                                  -216226;1;0;false;false;;;;;;
                                  -216227;5;0;false;false;0;0;0;;;
                                  -216232;1;0;false;false;;;;;;
                                  -216233;1;0;false;false;0;0;0;;;
                                  -216234;1;0;false;false;;;;;;
                                  -216235;7;0;false;false;0;0;0;;;
                                  -216242;3;0;false;false;;;;;;
                                  -216245;2;1;false;false;127;0;85;;;
                                  -216247;1;0;false;false;;;;;;
                                  -216248;6;0;false;false;0;0;0;;;
                                  -216254;1;0;false;false;;;;;;
                                  -216255;1;0;false;false;0;0;0;;;
                                  -216256;1;0;false;false;;;;;;
                                  -216257;3;0;false;false;0;0;0;;;
                                  -216260;1;0;false;false;;;;;;
                                  -216261;2;0;false;false;0;0;0;;;
                                  -216263;1;0;false;false;;;;;;
                                  -216264;5;0;false;false;0;0;0;;;
                                  -216269;1;0;false;false;;;;;;
                                  -216270;1;0;false;false;0;0;0;;;
                                  -216271;1;0;false;false;;;;;;
                                  -216272;1;0;false;false;0;0;0;;;
                                  -216273;1;0;false;false;;;;;;
                                  -216274;2;0;false;false;0;0;0;;;
                                  -216276;1;0;false;false;;;;;;
                                  -216277;3;0;false;false;0;0;0;;;
                                  -216280;1;0;false;false;;;;;;
                                  -216281;1;0;false;false;0;0;0;;;
                                  -216282;1;0;false;false;;;;;;
                                  -216283;15;0;false;false;0;0;0;;;
                                  -216298;1;0;false;false;;;;;;
                                  -216299;1;0;false;false;0;0;0;;;
                                  -216300;4;0;false;false;;;;;;
                                  -216304;35;0;false;false;0;0;0;;;
                                  -216339;3;0;false;false;;;;;;
                                  -216342;1;0;false;false;0;0;0;;;
                                  -216343;4;0;false;false;;;;;;
                                  -216347;3;1;false;false;127;0;85;;;
                                  -216350;1;0;false;false;;;;;;
                                  -216351;9;0;false;false;0;0;0;;;
                                  -216360;1;0;false;false;;;;;;
                                  -216361;1;0;false;false;0;0;0;;;
                                  -216362;1;0;false;false;;;;;;
                                  -216363;31;0;false;false;0;0;0;;;
                                  -216394;3;0;false;false;;;;;;
                                  -216397;3;1;false;false;127;0;85;;;
                                  -216400;1;0;false;false;;;;;;
                                  -216401;8;0;false;false;0;0;0;;;
                                  -216409;1;0;false;false;;;;;;
                                  -216410;1;0;false;false;0;0;0;;;
                                  -216411;1;0;false;false;;;;;;
                                  -216412;29;0;false;false;0;0;0;;;
                                  -216441;5;0;false;false;;;;;;
                                  -216446;43;0;false;false;0;0;0;;;
                                  -216489;1;0;false;false;;;;;;
                                  -216490;7;0;false;false;0;0;0;;;
                                  -216497;1;0;false;false;;;;;;
                                  -216498;8;0;false;false;0;0;0;;;
                                  -216506;3;0;false;false;;;;;;
                                  -216509;26;0;false;false;0;0;0;;;
                                  -216535;1;0;false;false;;;;;;
                                  -216536;8;0;false;false;0;0;0;;;
                                  -216544;1;0;false;false;;;;;;
                                  -216545;1;0;false;false;0;0;0;;;
                                  -216546;1;0;false;false;;;;;;
                                  -216547;9;0;false;false;0;0;0;;;
                                  -216556;1;0;false;false;;;;;;
                                  -216557;1;0;false;false;0;0;0;;;
                                  -216558;1;0;false;false;;;;;;
                                  -216559;2;0;false;false;0;0;0;;;
                                  -216561;1;0;false;false;;;;;;
                                  -216562;4;1;false;false;127;0;85;;;
                                  -216566;2;0;false;false;0;0;0;;;
                                  -216568;5;0;false;false;;;;;;
                                  -216573;59;0;false;false;63;127;95;;;
                                  -216632;1;0;false;false;;;;;;
                                  -216633;2;1;false;false;127;0;85;;;
                                  -216635;1;0;false;false;;;;;;
                                  -216636;25;0;false;false;0;0;0;;;
                                  -216661;1;0;false;false;;;;;;
                                  -216662;10;0;false;false;0;0;0;;;
                                  -216672;1;0;false;false;;;;;;
                                  -216673;1;0;false;false;0;0;0;;;
                                  -216674;4;0;false;false;;;;;;
                                  -216678;3;1;false;false;127;0;85;;;
                                  -216681;1;0;false;false;;;;;;
                                  -216682;7;0;false;false;0;0;0;;;
                                  -216689;1;0;false;false;;;;;;
                                  -216690;1;0;false;false;0;0;0;;;
                                  -216691;1;0;false;false;;;;;;
                                  -216692;9;0;false;false;0;0;0;;;
                                  -216701;1;0;false;false;;;;;;
                                  -216702;1;0;false;false;0;0;0;;;
                                  -216703;1;0;false;false;;;;;;
                                  -216704;10;0;false;false;0;0;0;;;
                                  -216714;1;0;false;false;;;;;;
                                  -216715;1;0;false;false;0;0;0;;;
                                  -216716;1;0;false;false;;;;;;
                                  -216717;21;0;false;false;0;0;0;;;
                                  -216738;4;0;false;false;;;;;;
                                  -216742;3;1;false;false;127;0;85;;;
                                  -216745;1;0;false;false;;;;;;
                                  -216746;11;0;false;false;0;0;0;;;
                                  -216757;1;0;false;false;;;;;;
                                  -216758;1;0;false;false;0;0;0;;;
                                  -216759;1;0;false;false;;;;;;
                                  -216760;9;0;false;false;0;0;0;;;
                                  -216769;1;0;false;false;;;;;;
                                  -216770;1;0;false;false;0;0;0;;;
                                  -216771;1;0;false;false;;;;;;
                                  -216772;2;0;false;false;0;0;0;;;
                                  -216774;1;0;false;false;;;;;;
                                  -216775;1;0;false;false;0;0;0;;;
                                  -216776;1;0;false;false;;;;;;
                                  -216777;10;0;false;false;0;0;0;;;
                                  -216787;1;0;false;false;;;;;;
                                  -216788;1;0;false;false;0;0;0;;;
                                  -216789;1;0;false;false;;;;;;
                                  -216790;21;0;false;false;0;0;0;;;
                                  -216811;6;0;false;false;;;;;;
                                  -216817;7;0;false;false;0;0;0;;;
                                  -216824;1;0;false;false;;;;;;
                                  -216825;8;0;false;false;0;0;0;;;
                                  -216833;1;0;false;false;;;;;;
                                  -216834;22;0;false;false;0;0;0;;;
                                  -216856;1;0;false;false;;;;;;
                                  -216857;11;0;false;false;0;0;0;;;
                                  -216868;1;0;false;false;;;;;;
                                  -216869;1;0;false;false;0;0;0;;;
                                  -216870;1;0;false;false;;;;;;
                                  -216871;8;0;false;false;0;0;0;;;
                                  -216879;1;0;false;false;;;;;;
                                  -216880;4;1;false;false;127;0;85;;;
                                  -216884;2;0;false;false;0;0;0;;;
                                  -216886;3;0;false;false;;;;;;
                                  -216889;1;0;false;false;0;0;0;;;
                                  -216890;5;0;false;false;;;;;;
                                  -216895;54;0;false;false;63;127;95;;;
                                  -216949;1;0;false;false;;;;;;
                                  -216950;53;0;false;false;63;127;95;;;
                                  -217003;1;0;false;false;;;;;;
                                  -217004;18;0;false;false;63;127;95;;;
                                  -217022;1;0;false;false;;;;;;
                                  -217023;19;0;false;false;0;0;0;;;
                                  -217042;2;0;false;false;;;;;;
                                  -217044;1;0;false;false;0;0;0;;;
                                  -217045;2;0;false;false;;;;;;
                                  -217047;3;0;false;false;63;95;191;;;
                                  -217050;3;0;false;false;;;;;;
                                  -217053;1;0;false;false;63;95;191;;;
                                  -217054;1;0;false;false;;;;;;
                                  -217055;8;0;false;false;63;95;191;;;
                                  -217063;1;0;false;false;;;;;;
                                  -217064;3;0;false;false;63;95;191;;;
                                  -217067;1;0;false;false;;;;;;
                                  -217068;5;0;false;false;63;95;191;;;
                                  -217073;1;0;false;false;;;;;;
                                  -217074;4;0;false;false;63;95;191;;;
                                  -217078;1;0;false;false;;;;;;
                                  -217079;5;0;false;false;63;95;191;;;
                                  -217084;1;0;false;false;;;;;;
                                  -217085;4;0;false;false;63;95;191;;;
                                  -217089;1;0;false;false;;;;;;
                                  -217090;3;0;false;false;63;95;191;;;
                                  -217093;1;0;false;false;;;;;;
                                  -217094;5;0;false;false;63;95;191;;;
                                  -217099;3;0;false;false;;;;;;
                                  -217102;1;0;false;false;63;95;191;;;
                                  -217103;1;0;false;false;;;;;;
                                  -217104;2;0;false;false;63;95;191;;;
                                  -217106;1;0;false;false;;;;;;
                                  -217107;3;0;false;false;63;95;191;;;
                                  -217110;1;0;false;false;;;;;;
                                  -217111;6;0;false;false;63;95;191;;;
                                  -217117;1;0;false;false;;;;;;
                                  -217118;3;0;false;false;63;95;191;;;
                                  -217121;1;0;false;false;;;;;;
                                  -217122;3;0;false;false;63;95;191;;;
                                  -217125;1;0;false;false;;;;;;
                                  -217126;10;0;false;false;63;95;191;;;
                                  -217136;1;0;false;false;;;;;;
                                  -217137;5;0;false;false;63;95;191;;;
                                  -217142;1;0;false;false;;;;;;
                                  -217143;3;0;false;false;63;95;191;;;
                                  -217146;1;0;false;false;;;;;;
                                  -217147;6;0;false;false;63;95;191;;;
                                  -217153;1;0;false;false;;;;;;
                                  -217154;8;0;false;false;63;95;191;;;
                                  -217162;1;0;false;false;;;;;;
                                  -217163;4;0;false;false;63;95;191;;;
                                  -217167;1;0;false;false;;;;;;
                                  -217168;4;0;false;false;63;95;191;;;
                                  -217172;4;0;false;false;;;;;;
                                  -217176;1;0;false;false;63;95;191;;;
                                  -217177;1;0;false;false;;;;;;
                                  -217178;3;0;false;false;63;95;191;;;
                                  -217181;1;0;false;false;;;;;;
                                  -217182;5;0;false;false;63;95;191;;;
                                  -217187;1;0;false;false;;;;;;
                                  -217188;4;0;false;false;63;95;191;;;
                                  -217192;1;0;false;false;;;;;;
                                  -217193;3;0;false;false;63;95;191;;;
                                  -217196;1;0;false;false;;;;;;
                                  -217197;5;0;false;false;63;95;191;;;
                                  -217202;1;0;false;false;;;;;;
                                  -217203;4;0;false;false;63;95;191;;;
                                  -217207;1;0;false;false;;;;;;
                                  -217208;2;0;false;false;63;95;191;;;
                                  -217210;1;0;false;false;;;;;;
                                  -217211;8;0;false;false;63;95;191;;;
                                  -217219;1;0;false;false;;;;;;
                                  -217220;3;0;false;false;63;95;191;;;
                                  -217223;1;0;false;false;;;;;;
                                  -217224;3;0;false;false;63;95;191;;;
                                  -217227;1;0;false;false;;;;;;
                                  -217228;4;0;false;false;63;95;191;;;
                                  -217232;1;0;false;false;;;;;;
                                  -217233;2;0;false;false;63;95;191;;;
                                  -217235;1;0;false;false;;;;;;
                                  -217236;6;0;false;false;63;95;191;;;
                                  -217242;4;0;false;false;;;;;;
                                  -217246;1;0;false;false;63;95;191;;;
                                  -217247;1;0;false;false;;;;;;
                                  -217248;10;0;false;false;63;95;191;;;
                                  -217258;1;0;false;false;;;;;;
                                  -217259;1;0;false;false;63;95;191;;;
                                  -217260;1;0;false;false;;;;;;
                                  -217261;10;0;false;false;63;95;191;;;
                                  -217271;1;0;false;false;;;;;;
                                  -217272;4;0;false;false;63;95;191;;;
                                  -217276;1;0;false;false;;;;;;
                                  -217277;2;0;false;false;63;95;191;;;
                                  -217279;1;0;false;false;;;;;;
                                  -217280;7;0;false;false;63;95;191;;;
                                  -217287;1;0;false;false;;;;;;
                                  -217288;4;0;false;false;63;95;191;;;
                                  -217292;1;0;false;false;;;;;;
                                  -217293;6;0;false;false;63;95;191;;;
                                  -217299;1;0;false;false;;;;;;
                                  -217300;3;0;false;false;63;95;191;;;
                                  -217303;1;0;false;false;;;;;;
                                  -217304;4;0;false;false;63;95;191;;;
                                  -217308;1;0;false;false;;;;;;
                                  -217309;4;0;false;false;63;95;191;;;
                                  -217313;4;0;false;false;;;;;;
                                  -217317;1;0;false;false;63;95;191;;;
                                  -217318;1;0;false;false;;;;;;
                                  -217319;4;0;false;false;63;95;191;;;
                                  -217323;1;0;false;false;;;;;;
                                  -217324;3;0;false;false;63;95;191;;;
                                  -217327;1;0;false;false;;;;;;
                                  -217328;4;0;false;false;63;95;191;;;
                                  -217332;1;0;false;false;;;;;;
                                  -217333;4;0;false;false;63;95;191;;;
                                  -217337;1;0;false;false;;;;;;
                                  -217338;4;0;false;false;63;95;191;;;
                                  -217342;1;0;false;false;;;;;;
                                  -217343;4;0;false;false;63;95;191;;;
                                  -217347;1;0;false;false;;;;;;
                                  -217348;1;0;false;false;63;95;191;;;
                                  -217349;1;0;false;false;;;;;;
                                  -217350;6;0;false;false;63;95;191;;;
                                  -217356;1;0;false;false;;;;;;
                                  -217357;4;0;false;false;63;95;191;;;
                                  -217361;1;0;false;false;;;;;;
                                  -217362;2;0;false;false;63;95;191;;;
                                  -217364;1;0;false;false;;;;;;
                                  -217365;4;0;false;false;63;95;191;;;
                                  -217369;1;0;false;false;;;;;;
                                  -217370;6;0;false;false;63;95;191;;;
                                  -217376;1;0;false;false;;;;;;
                                  -217377;2;0;false;false;63;95;191;;;
                                  -217379;1;0;false;false;;;;;;
                                  -217380;3;0;false;false;63;95;191;;;
                                  -217383;1;0;false;false;;;;;;
                                  -217384;4;0;false;false;63;95;191;;;
                                  -217388;4;0;false;false;;;;;;
                                  -217392;1;0;false;false;63;95;191;;;
                                  -217393;1;0;false;false;;;;;;
                                  -217394;3;0;false;false;63;95;191;;;
                                  -217397;1;0;false;false;;;;;;
                                  -217398;10;0;false;false;63;95;191;;;
                                  -217408;1;0;false;false;;;;;;
                                  -217409;5;0;false;false;63;95;191;;;
                                  -217414;1;0;false;false;;;;;;
                                  -217415;2;0;false;false;63;95;191;;;
                                  -217417;1;0;false;false;;;;;;
                                  -217418;5;0;false;false;63;95;191;;;
                                  -217423;3;0;false;false;;;;;;
                                  -217426;1;0;false;false;63;95;191;;;
                                  -217427;1;0;false;false;;;;;;
                                  -217428;3;0;false;false;127;127;159;;;
                                  -217431;3;0;false;false;;;;;;
                                  -217434;1;0;false;false;63;95;191;;;
                                  -217435;1;0;false;false;;;;;;
                                  -217436;3;0;false;false;127;127;159;;;
                                  -217439;5;0;false;false;63;95;191;;;
                                  -217444;4;0;false;false;127;127;159;;;
                                  -217448;1;0;false;false;;;;;;
                                  -217449;6;0;false;false;63;95;191;;;
                                  -217455;1;0;false;false;;;;;;
                                  -217456;3;0;false;false;63;95;191;;;
                                  -217459;1;0;false;false;;;;;;
                                  -217460;7;0;false;false;63;95;191;;;
                                  -217467;1;0;false;false;;;;;;
                                  -217468;9;0;false;false;63;95;191;;;
                                  -217477;1;0;false;false;;;;;;
                                  -217478;3;0;false;false;63;95;191;;;
                                  -217481;1;0;false;false;;;;;;
                                  -217482;7;0;false;false;63;95;191;;;
                                  -217489;1;0;false;false;;;;;;
                                  -217490;9;0;false;false;63;95;191;;;
                                  -217499;1;0;false;false;;;;;;
                                  -217500;2;0;false;false;63;95;191;;;
                                  -217502;3;0;false;false;;;;;;
                                  -217505;1;0;false;false;63;95;191;;;
                                  -217506;1;0;false;false;;;;;;
                                  -217507;7;0;false;false;63;95;191;;;
                                  -217514;1;0;false;false;;;;;;
                                  -217515;2;0;false;false;63;95;191;;;
                                  -217517;1;0;false;false;;;;;;
                                  -217518;8;0;false;false;63;95;191;;;
                                  -217526;3;0;false;false;;;;;;
                                  -217529;1;0;false;false;63;95;191;;;
                                  -217530;1;0;false;false;;;;;;
                                  -217531;4;0;false;false;127;127;159;;;
                                  -217535;4;0;false;false;;;;;;
                                  -217539;1;0;false;false;63;95;191;;;
                                  -217540;1;0;false;false;;;;;;
                                  -217541;4;0;false;false;127;127;159;;;
                                  -217545;9;0;false;false;63;95;191;;;
                                  -217554;1;0;false;false;;;;;;
                                  -217555;6;0;false;false;63;95;191;;;
                                  -217561;1;0;false;false;;;;;;
                                  -217562;8;0;false;false;63;95;191;;;
                                  -217570;1;0;false;false;;;;;;
                                  -217571;5;0;false;false;63;95;191;;;
                                  -217576;1;0;false;false;;;;;;
                                  -217577;9;0;false;false;63;95;191;;;
                                  -217586;1;0;false;false;;;;;;
                                  -217587;9;0;false;false;63;95;191;;;
                                  -217596;3;0;false;false;;;;;;
                                  -217599;1;0;false;false;63;95;191;;;
                                  -217600;1;0;false;false;;;;;;
                                  -217601;4;0;false;false;127;127;159;;;
                                  -217605;9;0;false;false;63;95;191;;;
                                  -217614;1;0;false;false;;;;;;
                                  -217615;5;0;false;false;63;95;191;;;
                                  -217620;1;0;false;false;;;;;;
                                  -217621;8;0;false;false;63;95;191;;;
                                  -217629;1;0;false;false;;;;;;
                                  -217630;5;0;false;false;63;95;191;;;
                                  -217635;1;0;false;false;;;;;;
                                  -217636;6;0;false;false;63;95;191;;;
                                  -217642;1;0;false;false;;;;;;
                                  -217643;3;0;false;false;63;95;191;;;
                                  -217646;1;0;false;false;;;;;;
                                  -217647;9;0;false;false;63;95;191;;;
                                  -217656;1;0;false;false;;;;;;
                                  -217657;2;0;false;false;63;95;191;;;
                                  -217659;1;0;false;false;;;;;;
                                  -217660;4;0;false;false;63;95;191;;;
                                  -217664;1;0;false;false;;;;;;
                                  -217665;4;0;false;false;63;95;191;;;
                                  -217669;1;0;false;false;;;;;;
                                  -217670;4;0;false;false;63;95;191;;;
                                  -217674;4;0;false;false;;;;;;
                                  -217678;1;0;false;false;63;95;191;;;
                                  -217679;1;0;false;false;;;;;;
                                  -217680;7;0;false;false;63;95;191;;;
                                  -217687;1;0;false;false;;;;;;
                                  -217688;8;0;false;false;63;95;191;;;
                                  -217696;3;0;false;false;;;;;;
                                  -217699;1;0;false;false;63;95;191;;;
                                  -217700;1;0;false;false;;;;;;
                                  -217701;4;0;false;false;127;127;159;;;
                                  -217705;9;0;false;false;63;95;191;;;
                                  -217714;1;0;false;false;;;;;;
                                  -217715;10;0;false;false;63;95;191;;;
                                  -217725;1;0;false;false;;;;;;
                                  -217726;8;0;false;false;63;95;191;;;
                                  -217734;1;0;false;false;;;;;;
                                  -217735;5;0;false;false;63;95;191;;;
                                  -217740;1;0;false;false;;;;;;
                                  -217741;9;0;false;false;63;95;191;;;
                                  -217750;1;0;false;false;;;;;;
                                  -217751;2;0;false;false;63;95;191;;;
                                  -217753;1;0;false;false;;;;;;
                                  -217754;7;0;false;false;63;95;191;;;
                                  -217761;1;0;false;false;;;;;;
                                  -217762;3;0;false;false;63;95;191;;;
                                  -217765;1;0;false;false;;;;;;
                                  -217766;5;0;false;false;63;95;191;;;
                                  -217771;3;0;false;false;;;;;;
                                  -217774;1;0;false;false;63;95;191;;;
                                  -217775;1;0;false;false;;;;;;
                                  -217776;2;0;false;false;63;95;191;;;
                                  -217778;1;0;false;false;;;;;;
                                  -217779;6;0;false;false;63;95;191;;;
                                  -217785;1;0;false;false;;;;;;
                                  -217786;5;0;false;false;63;95;191;;;
                                  -217791;1;0;false;false;;;;;;
                                  -217792;8;0;false;false;63;95;191;;;
                                  -217800;1;0;false;false;;;;;;
                                  -217801;4;0;false;false;63;95;191;;;
                                  -217805;3;0;false;false;;;;;;
                                  -217808;1;0;false;false;63;95;191;;;
                                  -217809;1;0;false;false;;;;;;
                                  -217810;5;0;false;false;127;127;159;;;
                                  -217815;3;0;false;false;;;;;;
                                  -217818;1;0;false;false;63;95;191;;;
                                  -217819;1;0;false;false;;;;;;
                                  -217820;4;0;false;false;127;127;159;;;
                                  -217824;3;0;false;false;;;;;;
                                  -217827;1;0;false;false;63;95;191;;;
                                  -217828;3;0;false;false;;;;;;
                                  -217831;1;0;false;false;63;95;191;;;
                                  -217832;1;0;false;false;;;;;;
                                  -217833;7;1;false;false;127;159;191;;;
                                  -217840;5;0;false;false;63;95;191;;;
                                  -217845;1;0;false;false;;;;;;
                                  -217846;6;0;false;false;63;95;191;;;
                                  -217852;1;0;false;false;;;;;;
                                  -217853;2;0;false;false;63;95;191;;;
                                  -217855;1;0;false;false;;;;;;
                                  -217856;5;0;false;false;63;95;191;;;
                                  -217861;1;0;false;false;;;;;;
                                  -217862;9;0;false;false;63;95;191;;;
                                  -217871;1;0;false;false;;;;;;
                                  -217872;2;0;false;false;63;95;191;;;
                                  -217874;1;0;false;false;;;;;;
                                  -217875;7;0;false;false;63;95;191;;;
                                  -217882;3;0;false;false;;;;;;
                                  -217885;1;0;false;false;63;95;191;;;
                                  -217886;1;0;false;false;;;;;;
                                  -217887;7;1;false;false;127;159;191;;;
                                  -217894;6;0;false;false;63;95;191;;;
                                  -217900;1;0;false;false;;;;;;
                                  -217901;6;0;false;false;63;95;191;;;
                                  -217907;1;0;false;false;;;;;;
                                  -217908;2;0;false;false;63;95;191;;;
                                  -217910;1;0;false;false;;;;;;
                                  -217911;10;0;false;false;63;95;191;;;
                                  -217921;1;0;false;false;;;;;;
                                  -217922;2;0;false;false;63;95;191;;;
                                  -217924;1;0;false;false;;;;;;
                                  -217925;8;0;false;false;63;95;191;;;
                                  -217933;1;0;false;false;;;;;;
                                  -217934;3;0;false;false;63;95;191;;;
                                  -217937;1;0;false;false;;;;;;
                                  -217938;1;0;false;false;63;95;191;;;
                                  -217939;1;0;false;false;;;;;;
                                  -217940;2;0;false;false;63;95;191;;;
                                  -217942;1;0;false;false;;;;;;
                                  -217943;6;0;false;false;63;95;191;;;
                                  -217949;1;0;false;false;;;;;;
                                  -217950;4;0;false;false;63;95;191;;;
                                  -217954;3;0;false;false;;;;;;
                                  -217957;1;0;false;false;63;95;191;;;
                                  -217958;1;0;false;false;;;;;;
                                  -217959;7;1;false;false;127;159;191;;;
                                  -217966;4;0;false;false;63;95;191;;;
                                  -217970;1;0;false;false;;;;;;
                                  -217971;3;0;false;false;63;95;191;;;
                                  -217974;1;0;false;false;;;;;;
                                  -217975;5;0;false;false;63;95;191;;;
                                  -217980;1;0;false;false;;;;;;
                                  -217981;3;0;false;false;63;95;191;;;
                                  -217984;1;0;false;false;;;;;;
                                  -217985;2;0;false;false;63;95;191;;;
                                  -217987;1;0;false;false;;;;;;
                                  -217988;5;0;false;false;63;95;191;;;
                                  -217993;1;0;false;false;;;;;;
                                  -217994;2;0;false;false;63;95;191;;;
                                  -217996;1;0;false;false;;;;;;
                                  -217997;6;0;false;false;63;95;191;;;
                                  -218003;1;0;false;false;;;;;;
                                  -218004;5;0;false;false;63;95;191;;;
                                  -218009;3;0;false;false;;;;;;
                                  -218012;1;0;false;false;63;95;191;;;
                                  -218013;1;0;false;false;;;;;;
                                  -218014;11;1;false;false;127;159;191;;;
                                  -218025;12;0;false;false;63;95;191;;;
                                  -218037;1;0;false;false;;;;;;
                                  -218038;4;0;false;false;127;127;159;;;
                                  -218042;3;0;false;false;;;;;;
                                  -218045;1;0;false;false;63;95;191;;;
                                  -218046;4;0;false;false;;;;;;
                                  -218050;4;0;false;false;127;127;159;;;
                                  -218054;21;0;false;false;63;95;191;;;
                                  -218075;1;0;false;false;;;;;;
                                  -218076;1;0;false;false;127;127;159;;;
                                  -218077;1;0;false;false;;;;;;
                                  -218078;2;0;false;false;63;95;191;;;
                                  -218080;1;0;false;false;;;;;;
                                  -218081;3;0;false;false;63;95;191;;;
                                  -218084;1;0;false;false;;;;;;
                                  -218085;8;0;false;false;63;95;191;;;
                                  -218093;1;0;false;false;;;;;;
                                  -218094;3;0;false;false;63;95;191;;;
                                  -218097;1;0;false;false;;;;;;
                                  -218098;4;0;false;false;63;95;191;;;
                                  -218102;1;0;false;false;;;;;;
                                  -218103;8;0;false;false;63;95;191;;;
                                  -218111;5;0;false;false;127;127;159;;;
                                  -218116;3;0;false;false;;;;;;
                                  -218119;1;0;false;false;63;95;191;;;
                                  -218120;4;0;false;false;;;;;;
                                  -218124;4;0;false;false;127;127;159;;;
                                  -218128;27;0;false;false;63;95;191;;;
                                  -218155;1;0;false;false;;;;;;
                                  -218156;1;0;false;false;127;127;159;;;
                                  -218157;1;0;false;false;;;;;;
                                  -218158;2;0;false;false;63;95;191;;;
                                  -218160;1;0;false;false;;;;;;
                                  -218161;3;0;false;false;63;95;191;;;
                                  -218164;1;0;false;false;;;;;;
                                  -218165;6;0;false;false;63;95;191;;;
                                  -218171;1;0;false;false;;;;;;
                                  -218172;4;0;false;false;63;95;191;;;
                                  -218176;1;0;false;false;;;;;;
                                  -218177;3;0;false;false;63;95;191;;;
                                  -218180;1;0;false;false;;;;;;
                                  -218181;6;0;false;false;63;95;191;;;
                                  -218187;1;0;false;false;;;;;;
                                  -218188;4;0;false;false;63;95;191;;;
                                  -218192;1;0;false;false;;;;;;
                                  -218193;7;0;false;false;63;95;191;;;
                                  -218200;1;0;false;false;;;;;;
                                  -218201;3;0;false;false;63;95;191;;;
                                  -218204;1;0;false;false;;;;;;
                                  -218205;8;0;false;false;63;95;191;;;
                                  -218213;5;0;false;false;127;127;159;;;
                                  -218218;3;0;false;false;;;;;;
                                  -218221;1;0;false;false;63;95;191;;;
                                  -218222;1;0;false;false;;;;;;
                                  -218223;5;0;false;false;127;127;159;;;
                                  -218228;3;0;false;false;;;;;;
                                  -218231;1;0;false;false;63;95;191;;;
                                  -218232;1;0;false;false;;;;;;
                                  -218233;11;1;false;false;127;159;191;;;
                                  -218244;24;0;false;false;63;95;191;;;
                                  -218268;1;0;false;false;;;;;;
                                  -218269;4;0;false;false;127;127;159;;;
                                  -218273;3;0;false;false;;;;;;
                                  -218276;1;0;false;false;63;95;191;;;
                                  -218277;3;0;false;false;;;;;;
                                  -218280;4;0;false;false;127;127;159;;;
                                  -218284;19;0;false;false;63;95;191;;;
                                  -218303;1;0;false;false;;;;;;
                                  -218304;4;0;false;false;63;95;191;;;
                                  -218308;1;0;false;false;;;;;;
                                  -218309;6;0;false;false;63;95;191;;;
                                  -218315;1;0;false;false;;;;;;
                                  -218316;5;0;false;false;63;95;191;;;
                                  -218321;1;0;false;false;;;;;;
                                  -218322;2;0;false;false;63;95;191;;;
                                  -218324;1;0;false;false;;;;;;
                                  -218325;3;0;false;false;63;95;191;;;
                                  -218328;1;0;false;false;;;;;;
                                  -218329;2;0;false;false;63;95;191;;;
                                  -218331;1;0;false;false;;;;;;
                                  -218332;7;0;false;false;63;95;191;;;
                                  -218339;1;0;false;false;;;;;;
                                  -218340;3;0;false;false;63;95;191;;;
                                  -218343;1;0;false;false;;;;;;
                                  -218344;5;0;false;false;63;95;191;;;
                                  -218349;1;0;false;false;;;;;;
                                  -218350;5;0;false;false;63;95;191;;;
                                  -218355;1;0;false;false;;;;;;
                                  -218356;2;0;false;false;63;95;191;;;
                                  -218358;1;0;false;false;;;;;;
                                  -218359;33;0;false;false;63;95;191;;;
                                  -218392;4;0;false;false;;;;;;
                                  -218396;1;0;false;false;63;95;191;;;
                                  -218397;3;0;false;false;;;;;;
                                  -218400;4;0;false;false;127;127;159;;;
                                  -218404;22;0;false;false;63;95;191;;;
                                  -218426;1;0;false;false;;;;;;
                                  -218427;4;0;false;false;63;95;191;;;
                                  -218431;1;0;false;false;;;;;;
                                  -218432;6;0;false;false;63;95;191;;;
                                  -218438;1;0;false;false;;;;;;
                                  -218439;5;0;false;false;63;95;191;;;
                                  -218444;1;0;false;false;;;;;;
                                  -218445;2;0;false;false;63;95;191;;;
                                  -218447;1;0;false;false;;;;;;
                                  -218448;3;0;false;false;63;95;191;;;
                                  -218451;1;0;false;false;;;;;;
                                  -218452;2;0;false;false;63;95;191;;;
                                  -218454;1;0;false;false;;;;;;
                                  -218455;6;0;false;false;63;95;191;;;
                                  -218461;1;0;false;false;;;;;;
                                  -218462;1;0;false;false;63;95;191;;;
                                  -218463;1;0;false;false;;;;;;
                                  -218464;5;0;false;false;63;95;191;;;
                                  -218469;1;0;false;false;;;;;;
                                  -218470;4;0;false;false;63;95;191;;;
                                  -218474;1;0;false;false;;;;;;
                                  -218475;4;0;false;false;63;95;191;;;
                                  -218479;1;0;false;false;;;;;;
                                  -218480;10;0;false;false;63;95;191;;;
                                  -218490;4;0;false;false;;;;;;
                                  -218494;1;0;false;false;63;95;191;;;
                                  -218495;3;0;false;false;;;;;;
                                  -218498;9;0;false;false;63;95;191;;;
                                  -218507;1;0;false;false;;;;;;
                                  -218508;1;0;false;false;63;95;191;;;
                                  -218509;1;0;false;false;;;;;;
                                  -218510;4;0;false;false;63;95;191;;;
                                  -218514;1;0;false;false;;;;;;
                                  -218515;9;0;false;false;63;95;191;;;
                                  -218524;1;0;false;false;;;;;;
                                  -218525;3;0;false;false;63;95;191;;;
                                  -218528;1;0;false;false;;;;;;
                                  -218529;7;0;false;false;63;95;191;;;
                                  -218536;1;0;false;false;;;;;;
                                  -218537;2;0;false;false;63;95;191;;;
                                  -218539;1;0;false;false;;;;;;
                                  -218540;9;0;false;false;63;95;191;;;
                                  -218549;1;0;false;false;;;;;;
                                  -218550;4;0;false;false;63;95;191;;;
                                  -218554;1;0;false;false;;;;;;
                                  -218555;2;0;false;false;63;95;191;;;
                                  -218557;1;0;false;false;;;;;;
                                  -218558;7;0;false;false;63;95;191;;;
                                  -218565;1;0;false;false;;;;;;
                                  -218566;3;0;false;false;63;95;191;;;
                                  -218569;1;0;false;false;;;;;;
                                  -218570;2;0;false;false;63;95;191;;;
                                  -218572;1;0;false;false;;;;;;
                                  -218573;3;0;false;false;63;95;191;;;
                                  -218576;1;0;false;false;;;;;;
                                  -218577;2;0;false;false;63;95;191;;;
                                  -218579;1;0;false;false;;;;;;
                                  -218580;3;0;false;false;63;95;191;;;
                                  -218583;1;0;false;false;;;;;;
                                  -218584;8;0;false;false;63;95;191;;;
                                  -218592;1;0;false;false;;;;;;
                                  -218593;4;0;false;false;63;95;191;;;
                                  -218597;1;0;false;false;;;;;;
                                  -218598;2;0;false;false;63;95;191;;;
                                  -218600;1;0;false;false;;;;;;
                                  -218601;1;0;false;false;63;95;191;;;
                                  -218602;1;0;false;false;;;;;;
                                  -218603;4;0;false;false;63;95;191;;;
                                  -218607;1;0;false;false;;;;;;
                                  -218608;9;0;false;false;63;95;191;;;
                                  -218617;1;0;false;false;;;;;;
                                  -218618;2;0;false;false;63;95;191;;;
                                  -218620;1;0;false;false;;;;;;
                                  -218621;3;0;false;false;63;95;191;;;
                                  -218624;1;0;false;false;;;;;;
                                  -218625;9;0;false;false;63;95;191;;;
                                  -218634;5;0;false;false;127;127;159;;;
                                  -218639;5;0;false;false;;;;;;
                                  -218644;1;0;false;false;63;95;191;;;
                                  -218645;3;0;false;false;;;;;;
                                  -218648;4;0;false;false;127;127;159;;;
                                  -218652;19;0;false;false;63;95;191;;;
                                  -218671;1;0;false;false;;;;;;
                                  -218672;4;0;false;false;63;95;191;;;
                                  -218676;1;0;false;false;;;;;;
                                  -218677;6;0;false;false;63;95;191;;;
                                  -218683;1;0;false;false;;;;;;
                                  -218684;2;0;false;false;63;95;191;;;
                                  -218686;1;0;false;false;;;;;;
                                  -218687;4;0;false;false;63;95;191;;;
                                  -218691;5;0;false;false;127;127;159;;;
                                  -218696;3;0;false;false;;;;;;
                                  -218699;1;0;false;false;63;95;191;;;
                                  -218700;1;0;false;false;;;;;;
                                  -218701;5;0;false;false;127;127;159;;;
                                  -218706;3;0;false;false;;;;;;
                                  -218709;2;0;false;false;63;95;191;;;
                                  -218711;2;0;false;false;;;;;;
                                  -218713;6;1;false;false;127;0;85;;;
                                  -218719;1;0;false;false;;;;;;
                                  -218720;4;1;false;false;127;0;85;;;
                                  -218724;1;0;false;false;;;;;;
                                  -218725;17;0;false;false;0;0;0;;;
                                  -218742;3;1;false;false;127;0;85;;;
                                  -218745;1;0;false;false;;;;;;
                                  -218746;6;0;false;false;0;0;0;;;
                                  -218752;1;0;false;false;;;;;;
                                  -218753;3;1;false;false;127;0;85;;;
                                  -218756;1;0;false;false;;;;;;
                                  -218757;7;0;false;false;0;0;0;;;
                                  -218764;1;0;false;false;;;;;;
                                  -218765;6;0;false;false;0;0;0;;;
                                  -218771;1;0;false;false;;;;;;
                                  -218772;5;0;false;false;0;0;0;;;
                                  -218777;1;0;false;false;;;;;;
                                  -218778;1;0;false;false;0;0;0;;;
                                  -218779;3;0;false;false;;;;;;
                                  -218782;14;0;false;false;0;0;0;;;
                                  -218796;3;0;false;false;;;;;;
                                  -218799;3;1;false;false;127;0;85;;;
                                  -218802;1;0;false;false;;;;;;
                                  -218803;13;0;false;false;0;0;0;;;
                                  -218816;1;0;false;false;;;;;;
                                  -218817;1;0;false;false;0;0;0;;;
                                  -218818;1;0;false;false;;;;;;
                                  -218819;15;0;false;false;0;0;0;;;
                                  -218834;3;0;false;false;;;;;;
                                  -218837;3;1;false;false;127;0;85;;;
                                  -218840;1;0;false;false;;;;;;
                                  -218841;3;0;false;false;0;0;0;;;
                                  -218844;1;0;false;false;;;;;;
                                  -218845;1;0;false;false;0;0;0;;;
                                  -218846;1;0;false;false;;;;;;
                                  -218847;5;0;false;false;0;0;0;;;
                                  -218852;1;0;false;false;;;;;;
                                  -218853;1;0;false;false;0;0;0;;;
                                  -218854;1;0;false;false;;;;;;
                                  -218855;7;0;false;false;0;0;0;;;
                                  -218862;3;0;false;false;;;;;;
                                  -218865;5;0;false;false;0;0;0;;;
                                  -218870;1;0;false;false;;;;;;
                                  -218871;5;0;false;false;0;0;0;;;
                                  -218876;1;0;false;false;;;;;;
                                  -218877;1;0;false;false;0;0;0;;;
                                  -218878;1;0;false;false;;;;;;
                                  -218879;3;1;false;false;127;0;85;;;
                                  -218882;1;0;false;false;;;;;;
                                  -218883;8;0;false;false;0;0;0;;;
                                  -218891;6;0;false;false;;;;;;
                                  -218897;2;1;false;false;127;0;85;;;
                                  -218899;1;0;false;false;;;;;;
                                  -218900;6;0;false;false;0;0;0;;;
                                  -218906;1;0;false;false;;;;;;
                                  -218907;1;0;false;false;0;0;0;;;
                                  -218908;1;0;false;false;;;;;;
                                  -218909;3;0;false;false;0;0;0;;;
                                  -218912;1;0;false;false;;;;;;
                                  -218913;2;0;false;false;0;0;0;;;
                                  -218915;1;0;false;false;;;;;;
                                  -218916;5;0;false;false;0;0;0;;;
                                  -218921;1;0;false;false;;;;;;
                                  -218922;1;0;false;false;0;0;0;;;
                                  -218923;1;0;false;false;;;;;;
                                  -218924;1;0;false;false;0;0;0;;;
                                  -218925;1;0;false;false;;;;;;
                                  -218926;2;0;false;false;0;0;0;;;
                                  -218928;1;0;false;false;;;;;;
                                  -218929;3;0;false;false;0;0;0;;;
                                  -218932;1;0;false;false;;;;;;
                                  -218933;1;0;false;false;0;0;0;;;
                                  -218934;1;0;false;false;;;;;;
                                  -218935;14;0;false;false;0;0;0;;;
                                  -218949;1;0;false;false;;;;;;
                                  -218950;1;0;false;false;0;0;0;;;
                                  -218951;4;0;false;false;;;;;;
                                  -218955;35;0;false;false;0;0;0;;;
                                  -218990;3;0;false;false;;;;;;
                                  -218993;1;0;false;false;0;0;0;;;
                                  -218994;4;0;false;false;;;;;;
                                  -218998;2;1;false;false;127;0;85;;;
                                  -219000;1;0;false;false;;;;;;
                                  -219001;5;0;false;false;0;0;0;;;
                                  -219006;1;0;false;false;;;;;;
                                  -219007;2;0;false;false;0;0;0;;;
                                  -219009;1;0;false;false;;;;;;
                                  -219010;4;1;false;false;127;0;85;;;
                                  -219014;1;0;false;false;0;0;0;;;
                                  -219015;1;0;false;false;;;;;;
                                  -219016;1;0;false;false;0;0;0;;;
                                  -219017;4;0;false;false;;;;;;
                                  -219021;35;0;false;false;0;0;0;;;
                                  -219056;3;0;false;false;;;;;;
                                  -219059;1;0;false;false;0;0;0;;;
                                  -219060;3;0;false;false;;;;;;
                                  -219063;11;0;false;false;0;0;0;;;
                                  -219074;1;0;false;false;;;;;;
                                  -219075;1;0;false;false;0;0;0;;;
                                  -219076;1;0;false;false;;;;;;
                                  -219077;6;0;false;false;0;0;0;;;
                                  -219083;3;0;false;false;;;;;;
                                  -219086;9;0;false;false;0;0;0;;;
                                  -219095;1;0;false;false;;;;;;
                                  -219096;1;0;false;false;0;0;0;;;
                                  -219097;1;0;false;false;;;;;;
                                  -219098;4;0;false;false;0;0;0;;;
                                  -219102;3;0;false;false;;;;;;
                                  -219105;10;0;false;false;0;0;0;;;
                                  -219115;1;0;false;false;;;;;;
                                  -219116;1;0;false;false;0;0;0;;;
                                  -219117;1;0;false;false;;;;;;
                                  -219118;5;0;false;false;0;0;0;;;
                                  -219123;3;0;false;false;;;;;;
                                  -219126;20;0;false;false;0;0;0;;;
                                  -219146;1;0;false;false;;;;;;
                                  -219147;5;1;false;false;127;0;85;;;
                                  -219152;2;0;false;false;0;0;0;;;
                                  -219154;2;0;false;false;;;;;;
                                  -219156;1;0;false;false;0;0;0;;;
                                  -219157;2;0;false;false;;;;;;
                                  -219159;3;0;false;false;63;95;191;;;
                                  -219162;3;0;false;false;;;;;;
                                  -219165;1;0;false;false;63;95;191;;;
                                  -219166;1;0;false;false;;;;;;
                                  -219167;6;0;false;false;63;95;191;;;
                                  -219173;1;0;false;false;;;;;;
                                  -219174;3;0;false;false;63;95;191;;;
                                  -219177;1;0;false;false;;;;;;
                                  -219178;5;0;false;false;63;95;191;;;
                                  -219183;1;0;false;false;;;;;;
                                  -219184;9;0;false;false;63;95;191;;;
                                  -219193;1;0;false;false;;;;;;
                                  -219194;9;0;false;false;63;95;191;;;
                                  -219203;1;0;false;false;;;;;;
                                  -219204;3;0;false;false;63;95;191;;;
                                  -219207;1;0;false;false;;;;;;
                                  -219208;6;0;false;false;63;95;191;;;
                                  -219214;1;0;false;false;;;;;;
                                  -219215;8;0;false;false;63;95;191;;;
                                  -219223;1;0;false;false;;;;;;
                                  -219224;11;0;false;false;63;95;191;;;
                                  -219235;3;0;false;false;;;;;;
                                  -219238;1;0;false;false;63;95;191;;;
                                  -219239;1;0;false;false;;;;;;
                                  -219240;3;0;false;false;63;95;191;;;
                                  -219243;1;0;false;false;;;;;;
                                  -219244;7;0;false;false;63;95;191;;;
                                  -219251;1;0;false;false;;;;;;
                                  -219252;5;0;false;false;63;95;191;;;
                                  -219257;1;0;false;false;;;;;;
                                  -219258;3;0;false;false;63;95;191;;;
                                  -219261;1;0;false;false;;;;;;
                                  -219262;6;0;false;false;63;95;191;;;
                                  -219268;1;0;false;false;;;;;;
                                  -219269;5;0;false;false;63;95;191;;;
                                  -219274;1;0;false;false;;;;;;
                                  -219275;6;0;false;false;63;95;191;;;
                                  -219281;1;0;false;false;;;;;;
                                  -219282;3;0;false;false;63;95;191;;;
                                  -219285;1;0;false;false;;;;;;
                                  -219286;7;0;false;false;63;95;191;;;
                                  -219293;3;0;false;false;;;;;;
                                  -219296;2;0;false;false;63;95;191;;;
                                  -219298;2;0;false;false;;;;;;
                                  -219300;4;1;false;false;127;0;85;;;
                                  -219304;1;0;false;false;;;;;;
                                  -219305;7;0;false;false;0;0;0;;;
                                  -219312;1;0;false;false;;;;;;
                                  -219313;1;0;false;false;0;0;0;;;
                                  -219314;3;0;false;false;;;;;;
                                  -219317;9;0;false;false;0;0;0;;;
                                  -219326;1;0;false;false;;;;;;
                                  -219327;11;0;false;false;0;0;0;;;
                                  -219338;1;0;false;false;;;;;;
                                  -219339;1;0;false;false;0;0;0;;;
                                  -219340;1;0;false;false;;;;;;
                                  -219341;17;0;false;false;0;0;0;;;
                                  -219358;3;0;false;false;;;;;;
                                  -219361;9;0;false;false;0;0;0;;;
                                  -219370;1;0;false;false;;;;;;
                                  -219371;13;0;false;false;0;0;0;;;
                                  -219384;1;0;false;false;;;;;;
                                  -219385;1;0;false;false;0;0;0;;;
                                  -219386;1;0;false;false;;;;;;
                                  -219387;19;0;false;false;0;0;0;;;
                                  -219406;3;0;false;false;;;;;;
                                  -219409;11;0;false;false;0;0;0;;;
                                  -219420;1;0;false;false;;;;;;
                                  -219421;1;0;false;false;0;0;0;;;
                                  -219422;1;0;false;false;;;;;;
                                  -219423;2;0;false;false;0;0;0;;;
                                  -219425;3;0;false;false;;;;;;
                                  -219428;8;0;false;false;0;0;0;;;
                                  -219436;1;0;false;false;;;;;;
                                  -219437;1;0;false;false;0;0;0;;;
                                  -219438;1;0;false;false;;;;;;
                                  -219439;2;0;false;false;0;0;0;;;
                                  -219441;3;0;false;false;;;;;;
                                  -219444;9;0;false;false;0;0;0;;;
                                  -219453;1;0;false;false;;;;;;
                                  -219454;1;0;false;false;0;0;0;;;
                                  -219455;1;0;false;false;;;;;;
                                  -219456;2;0;false;false;0;0;0;;;
                                  -219458;3;0;false;false;;;;;;
                                  -219461;20;0;false;false;0;0;0;;;
                                  -219481;1;0;false;false;;;;;;
                                  -219482;1;0;false;false;0;0;0;;;
                                  -219483;1;0;false;false;;;;;;
                                  -219484;2;0;false;false;0;0;0;;;
                                  -219486;3;0;false;false;;;;;;
                                  -219489;22;0;false;false;0;0;0;;;
                                  -219511;1;0;false;false;;;;;;
                                  -219512;1;0;false;false;0;0;0;;;
                                  -219513;1;0;false;false;;;;;;
                                  -219514;2;0;false;false;0;0;0;;;
                                  -219516;4;0;false;false;;;;;;
                                  -219520;17;0;false;false;0;0;0;;;
                                  -219537;3;0;false;false;;;;;;
                                  -219540;61;0;false;false;63;127;95;;;
                                  -219601;1;0;false;false;;;;;;
                                  -219602;28;0;false;false;63;127;95;;;
                                  -219630;1;0;false;false;;;;;;
                                  -219631;2;1;false;false;127;0;85;;;
                                  -219633;1;0;false;false;;;;;;
                                  -219634;18;0;false;false;0;0;0;;;
                                  -219652;1;0;false;false;;;;;;
                                  -219653;2;0;false;false;0;0;0;;;
                                  -219655;1;0;false;false;;;;;;
                                  -219656;4;1;false;false;127;0;85;;;
                                  -219660;1;0;false;false;0;0;0;;;
                                  -219661;1;0;false;false;;;;;;
                                  -219662;1;0;false;false;0;0;0;;;
                                  -219663;4;0;false;false;;;;;;
                                  -219667;48;0;false;false;0;0;0;;;
                                  -219715;4;0;false;false;;;;;;
                                  -219719;43;0;false;false;0;0;0;;;
                                  -219762;4;0;false;false;;;;;;
                                  -219766;27;0;false;false;0;0;0;;;
                                  -219793;3;0;false;false;;;;;;
                                  -219796;1;0;false;false;0;0;0;;;
                                  -219797;4;0;false;false;;;;;;
                                  -219801;24;0;false;false;0;0;0;;;
                                  -219825;3;0;false;false;;;;;;
                                  -219828;2;1;false;false;127;0;85;;;
                                  -219830;1;0;false;false;;;;;;
                                  -219831;12;0;false;false;0;0;0;;;
                                  -219843;1;0;false;false;;;;;;
                                  -219844;2;0;false;false;0;0;0;;;
                                  -219846;1;0;false;false;;;;;;
                                  -219847;4;1;false;false;127;0;85;;;
                                  -219851;1;0;false;false;0;0;0;;;
                                  -219852;1;0;false;false;;;;;;
                                  -219853;1;0;false;false;0;0;0;;;
                                  -219854;4;0;false;false;;;;;;
                                  -219858;28;0;false;false;0;0;0;;;
                                  -219886;3;0;false;false;;;;;;
                                  -219889;1;0;false;false;0;0;0;;;
                                  -219890;3;0;false;false;;;;;;
                                  -219893;2;1;false;false;127;0;85;;;
                                  -219895;1;0;false;false;;;;;;
                                  -219896;14;0;false;false;0;0;0;;;
                                  -219910;1;0;false;false;;;;;;
                                  -219911;2;0;false;false;0;0;0;;;
                                  -219913;1;0;false;false;;;;;;
                                  -219914;4;1;false;false;127;0;85;;;
                                  -219918;1;0;false;false;0;0;0;;;
                                  -219919;1;0;false;false;;;;;;
                                  -219920;1;0;false;false;0;0;0;;;
                                  -219921;4;0;false;false;;;;;;
                                  -219925;30;0;false;false;0;0;0;;;
                                  -219955;4;0;false;false;;;;;;
                                  -219959;1;0;false;false;0;0;0;;;
                                  -219960;3;0;false;false;;;;;;
                                  -219963;16;0;false;false;0;0;0;;;
                                  -219979;3;0;false;false;;;;;;
                                  -219982;19;0;false;false;0;0;0;;;
                                  -220001;3;0;false;false;;;;;;
                                  -220004;5;1;false;false;127;0;85;;;
                                  -220009;10;0;false;false;0;0;0;;;
                                  -220019;2;0;false;false;;;;;;
                                  -220021;1;0;false;false;0;0;0;;;
                                  -220022;2;0;false;false;;;;;;
                                  -220024;3;0;false;false;63;95;191;;;
                                  -220027;3;0;false;false;;;;;;
                                  -220030;1;0;false;false;63;95;191;;;
                                  -220031;1;0;false;false;;;;;;
                                  -220032;6;0;false;false;63;95;191;;;
                                  -220038;1;0;false;false;;;;;;
                                  -220039;3;0;false;false;63;95;191;;;
                                  -220042;1;0;false;false;;;;;;
                                  -220043;10;0;false;false;63;95;191;;;
                                  -220053;3;0;false;false;;;;;;
                                  -220056;2;0;false;false;63;95;191;;;
                                  -220058;2;0;false;false;;;;;;
                                  -220060;4;1;false;false;127;0;85;;;
                                  -220064;1;0;false;false;;;;;;
                                  -220065;16;0;false;false;0;0;0;;;
                                  -220081;1;0;false;false;;;;;;
                                  -220082;1;0;false;false;0;0;0;;;
                                  -220083;3;0;false;false;;;;;;
                                  -220086;11;0;false;false;0;0;0;;;
                                  -220097;1;0;false;false;;;;;;
                                  -220098;1;0;false;false;0;0;0;;;
                                  -220099;1;0;false;false;;;;;;
                                  -220100;11;0;false;false;0;0;0;;;
                                  -220111;1;0;false;false;;;;;;
                                  -220112;1;0;false;false;0;0;0;;;
                                  -220113;1;0;false;false;;;;;;
                                  -220114;12;0;false;false;0;0;0;;;
                                  -220126;3;0;false;false;;;;;;
                                  -220129;15;0;false;false;0;0;0;;;
                                  -220144;1;0;false;false;;;;;;
                                  -220145;1;0;false;false;0;0;0;;;
                                  -220146;1;0;false;false;;;;;;
                                  -220147;3;0;false;false;0;0;0;;;
                                  -220150;2;0;false;false;;;;;;
                                  -220152;1;0;false;false;0;0;0;;;
                                  -220153;2;0;false;false;;;;;;
                                  -220155;3;0;false;false;63;95;191;;;
                                  -220158;3;0;false;false;;;;;;
                                  -220161;1;0;false;false;63;95;191;;;
                                  -220162;1;0;false;false;;;;;;
                                  -220163;7;0;false;false;63;95;191;;;
                                  -220170;1;0;false;false;;;;;;
                                  -220171;3;0;false;false;63;95;191;;;
                                  -220174;1;0;false;false;;;;;;
                                  -220175;6;0;false;false;63;95;191;;;
                                  -220181;1;0;false;false;;;;;;
                                  -220182;13;0;false;false;63;95;191;;;
                                  -220195;3;0;false;false;;;;;;
                                  -220198;1;0;false;false;63;95;191;;;
                                  -220199;1;0;false;false;;;;;;
                                  -220200;3;0;false;false;127;127;159;;;
                                  -220203;3;0;false;false;;;;;;
                                  -220206;1;0;false;false;63;95;191;;;
                                  -220207;3;0;false;false;;;;;;
                                  -220210;1;0;false;false;63;95;191;;;
                                  -220211;1;0;false;false;;;;;;
                                  -220212;7;1;false;false;127;159;191;;;
                                  -220219;6;0;false;false;63;95;191;;;
                                  -220225;1;0;false;false;;;;;;
                                  -220226;6;0;false;false;63;95;191;;;
                                  -220232;1;0;false;false;;;;;;
                                  -220233;2;0;false;false;63;95;191;;;
                                  -220235;1;0;false;false;;;;;;
                                  -220236;6;0;false;false;63;95;191;;;
                                  -220242;1;0;false;false;;;;;;
                                  -220243;2;0;false;false;63;95;191;;;
                                  -220245;1;0;false;false;;;;;;
                                  -220246;7;0;false;false;63;95;191;;;
                                  -220253;1;0;false;false;;;;;;
                                  -220254;1;0;false;false;63;95;191;;;
                                  -220255;1;0;false;false;;;;;;
                                  -220256;1;0;false;false;63;95;191;;;
                                  -220257;1;0;false;false;;;;;;
                                  -220258;1;0;false;false;63;95;191;;;
                                  -220259;1;0;false;false;;;;;;
                                  -220260;6;0;false;false;63;95;191;;;
                                  -220266;1;0;false;false;;;;;;
                                  -220267;5;0;false;false;63;95;191;;;
                                  -220272;3;0;false;false;;;;;;
                                  -220275;1;0;false;false;63;95;191;;;
                                  -220276;2;0;false;false;;;;;;
                                  -220278;18;0;false;false;63;95;191;;;
                                  -220296;1;0;false;false;;;;;;
                                  -220297;2;0;false;false;63;95;191;;;
                                  -220299;2;0;false;false;;;;;;
                                  -220301;4;1;false;false;127;0;85;;;
                                  -220305;1;0;false;false;;;;;;
                                  -220306;17;0;false;false;0;0;0;;;
                                  -220323;3;1;false;false;127;0;85;;;
                                  -220326;1;0;false;false;;;;;;
                                  -220327;7;0;false;false;0;0;0;;;
                                  -220334;1;0;false;false;;;;;;
                                  -220335;1;0;false;false;0;0;0;;;
                                  -220336;3;0;false;false;;;;;;
                                  -220339;9;0;false;false;0;0;0;;;
                                  -220348;1;0;false;false;;;;;;
                                  -220349;11;0;false;false;0;0;0;;;
                                  -220360;6;0;false;false;;;;;;
                                  -220366;2;1;false;false;127;0;85;;;
                                  -220368;1;0;false;false;;;;;;
                                  -220369;7;0;false;false;0;0;0;;;
                                  -220376;1;0;false;false;;;;;;
                                  -220377;2;0;false;false;0;0;0;;;
                                  -220379;1;0;false;false;;;;;;
                                  -220380;2;0;false;false;0;0;0;;;
                                  -220382;1;0;false;false;;;;;;
                                  -220383;1;0;false;false;0;0;0;;;
                                  -220384;4;0;false;false;;;;;;
                                  -220388;6;1;false;false;127;0;85;;;
                                  -220394;1;0;false;false;0;0;0;;;
                                  -220395;3;0;false;false;;;;;;
                                  -220398;1;0;false;false;0;0;0;;;
                                  -220399;3;0;false;false;;;;;;
                                  -220402;10;0;false;false;0;0;0;;;
                                  -220412;1;0;false;false;;;;;;
                                  -220413;1;0;false;false;0;0;0;;;
                                  -220414;1;0;false;false;;;;;;
                                  -220415;16;0;false;false;0;0;0;;;
                                  -220431;3;0;false;false;;;;;;
                                  -220434;2;1;false;false;127;0;85;;;
                                  -220436;1;0;false;false;;;;;;
                                  -220437;7;0;false;false;0;0;0;;;
                                  -220444;1;0;false;false;;;;;;
                                  -220445;1;0;false;false;0;0;0;;;
                                  -220446;1;0;false;false;;;;;;
                                  -220447;2;0;false;false;0;0;0;;;
                                  -220449;1;0;false;false;;;;;;
                                  -220450;1;0;false;false;0;0;0;;;
                                  -220451;4;0;false;false;;;;;;
                                  -220455;3;1;false;false;127;0;85;;;
                                  -220458;1;0;false;false;;;;;;
                                  -220459;7;0;false;false;0;0;0;;;
                                  -220466;1;0;false;false;;;;;;
                                  -220467;1;0;false;false;0;0;0;;;
                                  -220468;1;0;false;false;;;;;;
                                  -220469;10;0;false;false;0;0;0;;;
                                  -220479;1;0;false;false;;;;;;
                                  -220480;1;0;false;false;0;0;0;;;
                                  -220481;1;0;false;false;;;;;;
                                  -220482;7;0;false;false;0;0;0;;;
                                  -220489;4;0;false;false;;;;;;
                                  -220493;3;1;false;false;127;0;85;;;
                                  -220496;1;0;false;false;;;;;;
                                  -220497;11;0;false;false;0;0;0;;;
                                  -220508;1;0;false;false;;;;;;
                                  -220509;1;0;false;false;0;0;0;;;
                                  -220510;1;0;false;false;;;;;;
                                  -220511;16;0;false;false;0;0;0;;;
                                  -220527;1;0;false;false;;;;;;
                                  -220528;1;0;false;false;0;0;0;;;
                                  -220529;1;0;false;false;;;;;;
                                  -220530;7;0;false;false;0;0;0;;;
                                  -220537;1;0;false;false;;;;;;
                                  -220538;1;0;false;false;0;0;0;;;
                                  -220539;1;0;false;false;;;;;;
                                  -220540;12;0;false;false;0;0;0;;;
                                  -220552;4;0;false;false;;;;;;
                                  -220556;3;1;false;false;127;0;85;;;
                                  -220559;1;0;false;false;;;;;;
                                  -220560;12;0;false;false;0;0;0;;;
                                  -220572;1;0;false;false;;;;;;
                                  -220573;1;0;false;false;0;0;0;;;
                                  -220574;1;0;false;false;;;;;;
                                  -220575;17;0;false;false;0;0;0;;;
                                  -220592;1;0;false;false;;;;;;
                                  -220593;1;0;false;false;0;0;0;;;
                                  -220594;1;0;false;false;;;;;;
                                  -220595;9;0;false;false;0;0;0;;;
                                  -220604;1;0;false;false;;;;;;
                                  -220605;1;0;false;false;0;0;0;;;
                                  -220606;1;0;false;false;;;;;;
                                  -220607;13;0;false;false;0;0;0;;;
                                  -220620;4;0;false;false;;;;;;
                                  -220624;7;0;false;false;0;0;0;;;
                                  -220631;5;0;false;false;;;;;;
                                  -220636;11;0;false;false;0;0;0;;;
                                  -220647;1;0;false;false;;;;;;
                                  -220648;10;0;false;false;0;0;0;;;
                                  -220658;7;0;false;false;;;;;;
                                  -220665;21;0;false;false;63;127;95;;;
                                  -220686;3;0;false;false;;;;;;
                                  -220689;8;0;false;false;0;0;0;;;
                                  -220697;1;0;false;false;;;;;;
                                  -220698;10;0;false;false;0;0;0;;;
                                  -220708;7;0;false;false;;;;;;
                                  -220715;16;0;false;false;63;127;95;;;
                                  -220731;3;0;false;false;;;;;;
                                  -220734;12;0;false;false;0;0;0;;;
                                  -220746;1;0;false;false;;;;;;
                                  -220747;13;0;false;false;0;0;0;;;
                                  -220760;1;0;false;false;;;;;;
                                  -220761;4;1;false;false;127;0;85;;;
                                  -220765;2;0;false;false;0;0;0;;;
                                  -220767;4;0;false;false;;;;;;
                                  -220771;2;1;false;false;127;0;85;;;
                                  -220773;1;0;false;false;;;;;;
                                  -220774;8;0;false;false;0;0;0;;;
                                  -220782;1;0;false;false;;;;;;
                                  -220783;1;0;false;false;0;0;0;;;
                                  -220784;1;0;false;false;;;;;;
                                  -220785;12;0;false;false;0;0;0;;;
                                  -220797;1;0;false;false;;;;;;
                                  -220798;1;0;false;false;0;0;0;;;
                                  -220799;5;0;false;false;;;;;;
                                  -220804;61;0;false;false;63;127;95;;;
                                  -220865;3;0;false;false;;;;;;
                                  -220868;21;0;false;false;63;127;95;;;
                                  -220889;3;0;false;false;;;;;;
                                  -220892;5;1;false;false;127;0;85;;;
                                  -220897;8;0;false;false;0;0;0;;;
                                  -220905;6;0;false;false;;;;;;
                                  -220911;10;0;false;false;0;0;0;;;
                                  -220921;1;0;false;false;;;;;;
                                  -220922;1;0;false;false;0;0;0;;;
                                  -220923;1;0;false;false;;;;;;
                                  -220924;12;0;false;false;0;0;0;;;
                                  -220936;1;0;false;false;;;;;;
                                  -220937;10;0;false;false;0;0;0;;;
                                  -220947;7;0;false;false;;;;;;
                                  -220954;6;0;false;false;0;0;0;;;
                                  -220960;1;0;false;false;;;;;;
                                  -220961;1;0;false;false;0;0;0;;;
                                  -220962;1;0;false;false;;;;;;
                                  -220963;12;0;false;false;0;0;0;;;
                                  -220975;1;0;false;false;;;;;;
                                  -220976;13;0;false;false;0;0;0;;;
                                  -220989;1;0;false;false;;;;;;
                                  -220990;4;1;false;false;127;0;85;;;
                                  -220994;2;0;false;false;0;0;0;;;
                                  -220996;4;0;false;false;;;;;;
                                  -221000;1;0;false;false;0;0;0;;;
                                  -221001;3;0;false;false;;;;;;
                                  -221004;1;0;false;false;0;0;0;;;
                                  -221005;3;0;false;false;;;;;;
                                  -221008;4;1;false;false;127;0;85;;;
                                  -221012;1;0;false;false;;;;;;
                                  -221013;1;0;false;false;0;0;0;;;
                                  -221014;4;0;false;false;;;;;;
                                  -221018;3;1;false;false;127;0;85;;;
                                  -221021;1;0;false;false;;;;;;
                                  -221022;12;0;false;false;0;0;0;;;
                                  -221034;1;0;false;false;;;;;;
                                  -221035;1;0;false;false;0;0;0;;;
                                  -221036;1;0;false;false;;;;;;
                                  -221037;10;0;false;false;0;0;0;;;
                                  -221047;1;0;false;false;;;;;;
                                  -221048;1;0;false;false;0;0;0;;;
                                  -221049;1;0;false;false;;;;;;
                                  -221050;7;0;false;false;0;0;0;;;
                                  -221057;4;0;false;false;;;;;;
                                  -221061;3;1;false;false;127;0;85;;;
                                  -221064;1;0;false;false;;;;;;
                                  -221065;11;0;false;false;0;0;0;;;
                                  -221076;1;0;false;false;;;;;;
                                  -221077;1;0;false;false;0;0;0;;;
                                  -221078;1;0;false;false;;;;;;
                                  -221079;16;0;false;false;0;0;0;;;
                                  -221095;1;0;false;false;;;;;;
                                  -221096;1;0;false;false;0;0;0;;;
                                  -221097;1;0;false;false;;;;;;
                                  -221098;12;0;false;false;0;0;0;;;
                                  -221110;1;0;false;false;;;;;;
                                  -221111;1;0;false;false;0;0;0;;;
                                  -221112;1;0;false;false;;;;;;
                                  -221113;12;0;false;false;0;0;0;;;
                                  -221125;4;0;false;false;;;;;;
                                  -221129;3;1;false;false;127;0;85;;;
                                  -221132;1;0;false;false;;;;;;
                                  -221133;12;0;false;false;0;0;0;;;
                                  -221145;1;0;false;false;;;;;;
                                  -221146;1;0;false;false;0;0;0;;;
                                  -221147;1;0;false;false;;;;;;
                                  -221148;17;0;false;false;0;0;0;;;
                                  -221165;1;0;false;false;;;;;;
                                  -221166;1;0;false;false;0;0;0;;;
                                  -221167;1;0;false;false;;;;;;
                                  -221168;9;0;false;false;0;0;0;;;
                                  -221177;1;0;false;false;;;;;;
                                  -221178;1;0;false;false;0;0;0;;;
                                  -221179;1;0;false;false;;;;;;
                                  -221180;13;0;false;false;0;0;0;;;
                                  -221193;4;0;false;false;;;;;;
                                  -221197;7;0;false;false;0;0;0;;;
                                  -221204;5;0;false;false;;;;;;
                                  -221209;13;0;false;false;0;0;0;;;
                                  -221222;1;0;false;false;;;;;;
                                  -221223;10;0;false;false;0;0;0;;;
                                  -221233;5;0;false;false;;;;;;
                                  -221238;21;0;false;false;63;127;95;;;
                                  -221259;3;0;false;false;;;;;;
                                  -221262;11;0;false;false;0;0;0;;;
                                  -221273;1;0;false;false;;;;;;
                                  -221274;10;0;false;false;0;0;0;;;
                                  -221284;6;0;false;false;;;;;;
                                  -221290;16;0;false;false;63;127;95;;;
                                  -221306;3;0;false;false;;;;;;
                                  -221309;12;0;false;false;0;0;0;;;
                                  -221321;1;0;false;false;;;;;;
                                  -221322;13;0;false;false;0;0;0;;;
                                  -221335;1;0;false;false;;;;;;
                                  -221336;4;1;false;false;127;0;85;;;
                                  -221340;2;0;false;false;0;0;0;;;
                                  -221342;4;0;false;false;;;;;;
                                  -221346;2;1;false;false;127;0;85;;;
                                  -221348;1;0;false;false;;;;;;
                                  -221349;13;0;false;false;0;0;0;;;
                                  -221362;1;0;false;false;;;;;;
                                  -221363;1;0;false;false;0;0;0;;;
                                  -221364;1;0;false;false;;;;;;
                                  -221365;12;0;false;false;0;0;0;;;
                                  -221377;1;0;false;false;;;;;;
                                  -221378;1;0;false;false;0;0;0;;;
                                  -221379;5;0;false;false;;;;;;
                                  -221384;58;0;false;false;63;127;95;;;
                                  -221442;3;0;false;false;;;;;;
                                  -221445;16;0;false;false;63;127;95;;;
                                  -221461;3;0;false;false;;;;;;
                                  -221464;5;1;false;false;127;0;85;;;
                                  -221469;8;0;false;false;0;0;0;;;
                                  -221477;6;0;false;false;;;;;;
                                  -221483;10;0;false;false;0;0;0;;;
                                  -221493;1;0;false;false;;;;;;
                                  -221494;1;0;false;false;0;0;0;;;
                                  -221495;1;0;false;false;;;;;;
                                  -221496;12;0;false;false;0;0;0;;;
                                  -221508;1;0;false;false;;;;;;
                                  -221509;10;0;false;false;0;0;0;;;
                                  -221519;7;0;false;false;;;;;;
                                  -221526;7;0;false;false;0;0;0;;;
                                  -221533;1;0;false;false;;;;;;
                                  -221534;1;0;false;false;0;0;0;;;
                                  -221535;1;0;false;false;;;;;;
                                  -221536;12;0;false;false;0;0;0;;;
                                  -221548;1;0;false;false;;;;;;
                                  -221549;13;0;false;false;0;0;0;;;
                                  -221562;1;0;false;false;;;;;;
                                  -221563;4;1;false;false;127;0;85;;;
                                  -221567;2;0;false;false;0;0;0;;;
                                  -221569;5;0;false;false;;;;;;
                                  -221574;1;0;false;false;0;0;0;;;
                                  -221575;3;0;false;false;;;;;;
                                  -221578;1;0;false;false;0;0;0;;;
                                  -221579;3;0;false;false;;;;;;
                                  -221582;22;0;false;false;0;0;0;;;
                                  -221604;1;0;false;false;;;;;;
                                  -221605;2;0;false;false;0;0;0;;;
                                  -221607;1;0;false;false;;;;;;
                                  -221608;7;0;false;false;0;0;0;;;
                                  -221615;3;0;false;false;;;;;;
                                  -221618;3;1;false;false;127;0;85;;;
                                  -221621;1;0;false;false;;;;;;
                                  -221622;10;0;false;false;0;0;0;;;
                                  -221632;1;0;false;false;;;;;;
                                  -221633;1;0;false;false;0;0;0;;;
                                  -221634;1;0;false;false;;;;;;
                                  -221635;7;0;false;false;0;0;0;;;
                                  -221642;1;0;false;false;;;;;;
                                  -221643;1;0;false;false;0;0;0;;;
                                  -221644;1;0;false;false;;;;;;
                                  -221645;7;0;false;false;0;0;0;;;
                                  -221652;3;0;false;false;;;;;;
                                  -221655;19;0;false;false;0;0;0;;;
                                  -221674;3;0;false;false;;;;;;
                                  -221677;48;0;false;false;63;127;95;;;
                                  -221725;1;0;false;false;;;;;;
                                  -221726;7;0;false;false;0;0;0;;;
                                  -221733;1;0;false;false;;;;;;
                                  -221734;1;0;false;false;0;0;0;;;
                                  -221735;1;0;false;false;;;;;;
                                  -221736;11;0;false;false;0;0;0;;;
                                  -221747;2;0;false;false;;;;;;
                                  -221749;1;0;false;false;0;0;0;;;
                                  -221750;2;0;false;false;;;;;;
                                  -221752;3;0;false;false;63;95;191;;;
                                  -221755;3;0;false;false;;;;;;
                                  -221758;1;0;false;false;63;95;191;;;
                                  -221759;1;0;false;false;;;;;;
                                  -221760;7;0;false;false;63;95;191;;;
                                  -221767;1;0;false;false;;;;;;
                                  -221768;3;0;false;false;63;95;191;;;
                                  -221771;1;0;false;false;;;;;;
                                  -221772;6;0;false;false;63;95;191;;;
                                  -221778;1;0;false;false;;;;;;
                                  -221779;12;0;false;false;63;95;191;;;
                                  -221791;1;0;false;false;;;;;;
                                  -221792;3;0;false;false;63;95;191;;;
                                  -221795;1;0;false;false;;;;;;
                                  -221796;6;0;false;false;63;95;191;;;
                                  -221802;1;0;false;false;;;;;;
                                  -221803;3;0;false;false;63;95;191;;;
                                  -221806;1;0;false;false;;;;;;
                                  -221807;10;0;false;false;63;95;191;;;
                                  -221817;1;0;false;false;;;;;;
                                  -221818;6;0;false;false;63;95;191;;;
                                  -221824;3;0;false;false;;;;;;
                                  -221827;1;0;false;false;63;95;191;;;
                                  -221828;1;0;false;false;;;;;;
                                  -221829;3;0;false;false;63;95;191;;;
                                  -221832;1;0;false;false;;;;;;
                                  -221833;2;0;false;false;63;95;191;;;
                                  -221835;1;0;false;false;;;;;;
                                  -221836;7;0;false;false;63;95;191;;;
                                  -221843;1;0;false;false;;;;;;
                                  -221844;3;0;false;false;63;95;191;;;
                                  -221847;1;0;false;false;;;;;;
                                  -221848;3;0;false;false;63;95;191;;;
                                  -221851;1;0;false;false;;;;;;
                                  -221852;10;0;false;false;63;95;191;;;
                                  -221862;1;0;false;false;;;;;;
                                  -221863;8;0;false;false;63;95;191;;;
                                  -221871;3;0;false;false;;;;;;
                                  -221874;1;0;false;false;63;95;191;;;
                                  -221875;1;0;false;false;;;;;;
                                  -221876;3;0;false;false;127;127;159;;;
                                  -221879;3;0;false;false;;;;;;
                                  -221882;1;0;false;false;63;95;191;;;
                                  -221883;3;0;false;false;;;;;;
                                  -221886;1;0;false;false;63;95;191;;;
                                  -221887;1;0;false;false;;;;;;
                                  -221888;7;1;false;false;127;159;191;;;
                                  -221895;6;0;false;false;63;95;191;;;
                                  -221901;1;0;false;false;;;;;;
                                  -221902;6;0;false;false;63;95;191;;;
                                  -221908;1;0;false;false;;;;;;
                                  -221909;2;0;false;false;63;95;191;;;
                                  -221911;1;0;false;false;;;;;;
                                  -221912;6;0;false;false;63;95;191;;;
                                  -221918;1;0;false;false;;;;;;
                                  -221919;2;0;false;false;63;95;191;;;
                                  -221921;1;0;false;false;;;;;;
                                  -221922;7;0;false;false;63;95;191;;;
                                  -221929;1;0;false;false;;;;;;
                                  -221930;1;0;false;false;63;95;191;;;
                                  -221931;1;0;false;false;;;;;;
                                  -221932;1;0;false;false;63;95;191;;;
                                  -221933;1;0;false;false;;;;;;
                                  -221934;1;0;false;false;63;95;191;;;
                                  -221935;1;0;false;false;;;;;;
                                  -221936;6;0;false;false;63;95;191;;;
                                  -221942;1;0;false;false;;;;;;
                                  -221943;5;0;false;false;63;95;191;;;
                                  -221948;3;0;false;false;;;;;;
                                  -221951;1;0;false;false;63;95;191;;;
                                  -221952;2;0;false;false;;;;;;
                                  -221954;18;0;false;false;63;95;191;;;
                                  -221972;1;0;false;false;;;;;;
                                  -221973;1;0;false;false;63;95;191;;;
                                  -221974;1;0;false;false;;;;;;
                                  -221975;8;1;false;false;127;159;191;;;
                                  -221983;2;0;false;false;;;;;;
                                  -221985;1;0;false;false;63;95;191;;;
                                  -221986;1;0;false;false;;;;;;
                                  -221987;8;0;false;false;63;95;191;;;
                                  -221995;1;0;false;false;;;;;;
                                  -221996;6;0;false;false;63;95;191;;;
                                  -222002;1;0;false;false;;;;;;
                                  -222003;3;0;false;false;63;95;191;;;
                                  -222006;1;0;false;false;;;;;;
                                  -222007;8;0;false;false;63;95;191;;;
                                  -222015;4;0;false;false;;;;;;
                                  -222019;1;0;false;false;63;95;191;;;
                                  -222020;1;0;false;false;;;;;;
                                  -222021;9;0;false;false;63;95;191;;;
                                  -222030;1;0;false;false;;;;;;
                                  -222031;6;0;false;false;63;95;191;;;
                                  -222037;1;0;false;false;;;;;;
                                  -222038;3;0;false;false;63;95;191;;;
                                  -222041;1;0;false;false;;;;;;
                                  -222042;3;0;false;false;63;95;191;;;
                                  -222045;1;0;false;false;;;;;;
                                  -222046;9;0;false;false;63;95;191;;;
                                  -222055;1;0;false;false;;;;;;
                                  -222056;3;0;false;false;63;95;191;;;
                                  -222059;1;0;false;false;;;;;;
                                  -222060;5;0;false;false;63;95;191;;;
                                  -222065;1;0;false;false;;;;;;
                                  -222066;6;0;false;false;63;95;191;;;
                                  -222072;1;0;false;false;;;;;;
                                  -222073;2;0;false;false;63;95;191;;;
                                  -222075;1;0;false;false;;;;;;
                                  -222076;3;0;false;false;63;95;191;;;
                                  -222079;1;0;false;false;;;;;;
                                  -222080;6;0;false;false;63;95;191;;;
                                  -222086;3;0;false;false;;;;;;
                                  -222089;2;0;false;false;63;95;191;;;
                                  -222091;2;0;false;false;;;;;;
                                  -222093;7;1;false;false;127;0;85;;;
                                  -222100;1;0;false;false;;;;;;
                                  -222101;20;0;false;false;0;0;0;;;
                                  -222121;3;1;false;false;127;0;85;;;
                                  -222124;1;0;false;false;;;;;;
                                  -222125;7;0;false;false;0;0;0;;;
                                  -222132;1;0;false;false;;;;;;
                                  -222133;1;0;false;false;0;0;0;;;
                                  -222134;3;0;false;false;;;;;;
                                  -222137;2;1;false;false;127;0;85;;;
                                  -222139;1;0;false;false;;;;;;
                                  -222140;7;0;false;false;0;0;0;;;
                                  -222147;1;0;false;false;;;;;;
                                  -222148;2;0;false;false;0;0;0;;;
                                  -222150;1;0;false;false;;;;;;
                                  -222151;2;0;false;false;0;0;0;;;
                                  -222153;1;0;false;false;;;;;;
                                  -222154;1;0;false;false;0;0;0;;;
                                  -222155;4;0;false;false;;;;;;
                                  -222159;6;1;false;false;127;0;85;;;
                                  -222165;1;0;false;false;;;;;;
                                  -222166;5;1;false;false;127;0;85;;;
                                  -222171;1;0;false;false;0;0;0;;;
                                  -222172;3;0;false;false;;;;;;
                                  -222175;1;0;false;false;0;0;0;;;
                                  -222176;3;0;false;false;;;;;;
                                  -222179;9;0;false;false;0;0;0;;;
                                  -222188;1;0;false;false;;;;;;
                                  -222189;13;0;false;false;0;0;0;;;
                                  -222202;1;0;false;false;;;;;;
                                  -222203;1;0;false;false;0;0;0;;;
                                  -222204;1;0;false;false;;;;;;
                                  -222205;19;0;false;false;0;0;0;;;
                                  -222224;3;0;false;false;;;;;;
                                  -222227;2;1;false;false;127;0;85;;;
                                  -222229;1;0;false;false;;;;;;
                                  -222230;14;0;false;false;0;0;0;;;
                                  -222244;1;0;false;false;;;;;;
                                  -222245;2;0;false;false;0;0;0;;;
                                  -222247;1;0;false;false;;;;;;
                                  -222248;4;1;false;false;127;0;85;;;
                                  -222252;1;0;false;false;0;0;0;;;
                                  -222253;1;0;false;false;;;;;;
                                  -222254;1;0;false;false;0;0;0;;;
                                  -222255;4;0;false;false;;;;;;
                                  -222259;49;0;false;false;0;0;0;;;
                                  -222308;1;0;false;false;;;;;;
                                  -222309;1;0;false;false;0;0;0;;;
                                  -222310;1;0;false;false;;;;;;
                                  -222311;8;0;false;false;0;0;0;;;
                                  -222319;3;0;false;false;;;;;;
                                  -222322;1;0;false;false;0;0;0;;;
                                  -222323;3;0;false;false;;;;;;
                                  -222326;25;0;false;false;0;0;0;;;
                                  -222351;3;0;false;false;;;;;;
                                  -222354;6;1;false;false;127;0;85;;;
                                  -222360;1;0;false;false;;;;;;
                                  -222361;4;1;false;false;127;0;85;;;
                                  -222365;1;0;false;false;0;0;0;;;
                                  -222366;2;0;false;false;;;;;;
                                  -222368;1;0;false;false;0;0;0;;;
                                  -222369;2;0;false;false;;;;;;
                                  -222371;3;0;false;false;63;95;191;;;
                                  -222374;4;0;false;false;;;;;;
                                  -222378;1;0;false;false;63;95;191;;;
                                  -222379;1;0;false;false;;;;;;
                                  -222380;7;0;false;false;63;95;191;;;
                                  -222387;1;0;false;false;;;;;;
                                  -222388;3;0;false;false;63;95;191;;;
                                  -222391;1;0;false;false;;;;;;
                                  -222392;3;0;false;false;63;95;191;;;
                                  -222395;1;0;false;false;;;;;;
                                  -222396;5;0;false;false;63;95;191;;;
                                  -222401;3;0;false;false;;;;;;
                                  -222404;1;0;false;false;63;95;191;;;
                                  -222405;1;0;false;false;;;;;;
                                  -222406;3;0;false;false;127;127;159;;;
                                  -222409;3;0;false;false;;;;;;
                                  -222412;1;0;false;false;63;95;191;;;
                                  -222413;3;0;false;false;;;;;;
                                  -222416;1;0;false;false;63;95;191;;;
                                  -222417;1;0;false;false;;;;;;
                                  -222418;11;1;false;false;127;159;191;;;
                                  -222429;12;0;false;false;63;95;191;;;
                                  -222441;1;0;false;false;;;;;;
                                  -222442;4;0;false;false;127;127;159;;;
                                  -222446;3;0;false;false;;;;;;
                                  -222449;1;0;false;false;63;95;191;;;
                                  -222450;4;0;false;false;;;;;;
                                  -222454;4;0;false;false;127;127;159;;;
                                  -222458;21;0;false;false;63;95;191;;;
                                  -222479;1;0;false;false;;;;;;
                                  -222480;1;0;false;false;127;127;159;;;
                                  -222481;1;0;false;false;;;;;;
                                  -222482;2;0;false;false;63;95;191;;;
                                  -222484;1;0;false;false;;;;;;
                                  -222485;3;0;false;false;63;95;191;;;
                                  -222488;1;0;false;false;;;;;;
                                  -222489;8;0;false;false;63;95;191;;;
                                  -222497;1;0;false;false;;;;;;
                                  -222498;3;0;false;false;63;95;191;;;
                                  -222501;1;0;false;false;;;;;;
                                  -222502;4;0;false;false;63;95;191;;;
                                  -222506;1;0;false;false;;;;;;
                                  -222507;8;0;false;false;63;95;191;;;
                                  -222515;5;0;false;false;127;127;159;;;
                                  -222520;3;0;false;false;;;;;;
                                  -222523;1;0;false;false;63;95;191;;;
                                  -222524;4;0;false;false;;;;;;
                                  -222528;4;0;false;false;127;127;159;;;
                                  -222532;27;0;false;false;63;95;191;;;
                                  -222559;1;0;false;false;;;;;;
                                  -222560;1;0;false;false;127;127;159;;;
                                  -222561;1;0;false;false;;;;;;
                                  -222562;2;0;false;false;63;95;191;;;
                                  -222564;1;0;false;false;;;;;;
                                  -222565;3;0;false;false;63;95;191;;;
                                  -222568;1;0;false;false;;;;;;
                                  -222569;6;0;false;false;63;95;191;;;
                                  -222575;1;0;false;false;;;;;;
                                  -222576;4;0;false;false;63;95;191;;;
                                  -222580;1;0;false;false;;;;;;
                                  -222581;3;0;false;false;63;95;191;;;
                                  -222584;1;0;false;false;;;;;;
                                  -222585;6;0;false;false;63;95;191;;;
                                  -222591;1;0;false;false;;;;;;
                                  -222592;4;0;false;false;63;95;191;;;
                                  -222596;1;0;false;false;;;;;;
                                  -222597;7;0;false;false;63;95;191;;;
                                  -222604;1;0;false;false;;;;;;
                                  -222605;3;0;false;false;63;95;191;;;
                                  -222608;1;0;false;false;;;;;;
                                  -222609;8;0;false;false;63;95;191;;;
                                  -222617;5;0;false;false;127;127;159;;;
                                  -222622;3;0;false;false;;;;;;
                                  -222625;1;0;false;false;63;95;191;;;
                                  -222626;1;0;false;false;;;;;;
                                  -222627;5;0;false;false;127;127;159;;;
                                  -222632;3;0;false;false;;;;;;
                                  -222635;2;0;false;false;63;95;191;;;
                                  -222637;2;0;false;false;;;;;;
                                  -222639;6;1;false;false;127;0;85;;;
                                  -222645;1;0;false;false;;;;;;
                                  -222646;4;1;false;false;127;0;85;;;
                                  -222650;1;0;false;false;;;;;;
                                  -222651;11;0;false;false;0;0;0;;;
                                  -222662;1;0;false;false;;;;;;
                                  -222663;1;0;false;false;0;0;0;;;
                                  -222664;3;0;false;false;;;;;;
                                  -222667;14;0;false;false;0;0;0;;;
                                  -222681;3;0;false;false;;;;;;
                                  -222684;15;0;false;false;0;0;0;;;
                                  -222699;1;0;false;false;;;;;;
                                  -222700;28;0;false;false;0;0;0;;;
                                  -222728;2;0;false;false;;;;;;
                                  -222730;1;0;false;false;0;0;0;;;
                                  -222731;2;0;false;false;;;;;;
                                  -222733;3;0;false;false;63;95;191;;;
                                  -222736;3;0;false;false;;;;;;
                                  -222739;1;0;false;false;63;95;191;;;
                                  -222740;1;0;false;false;;;;;;
                                  -222741;16;0;false;false;63;95;191;;;
                                  -222757;1;0;false;false;;;;;;
                                  -222758;4;0;false;false;63;95;191;;;
                                  -222762;1;0;false;false;;;;;;
                                  -222763;2;0;false;false;63;95;191;;;
                                  -222765;1;0;false;false;;;;;;
                                  -222766;7;0;false;false;63;95;191;;;
                                  -222773;1;0;false;false;;;;;;
                                  -222774;2;0;false;false;63;95;191;;;
                                  -222776;1;0;false;false;;;;;;
                                  -222777;3;0;false;false;63;95;191;;;
                                  -222780;1;0;false;false;;;;;;
                                  -222781;6;0;false;false;63;95;191;;;
                                  -222787;3;0;false;false;;;;;;
                                  -222790;1;0;false;false;63;95;191;;;
                                  -222791;1;0;false;false;;;;;;
                                  -222792;3;0;false;false;127;127;159;;;
                                  -222795;3;0;false;false;;;;;;
                                  -222798;1;0;false;false;63;95;191;;;
                                  -222799;3;0;false;false;;;;;;
                                  -222802;1;0;false;false;63;95;191;;;
                                  -222803;1;0;false;false;;;;;;
                                  -222804;7;1;false;false;127;159;191;;;
                                  -222811;5;0;false;false;63;95;191;;;
                                  -222816;1;0;false;false;;;;;;
                                  -222817;3;0;false;false;63;95;191;;;
                                  -222820;1;0;false;false;;;;;;
                                  -222821;4;0;false;false;63;95;191;;;
                                  -222825;1;0;false;false;;;;;;
                                  -222826;6;0;false;false;63;95;191;;;
                                  -222832;1;0;false;false;;;;;;
                                  -222833;6;0;false;false;63;95;191;;;
                                  -222839;4;0;false;false;;;;;;
                                  -222843;1;0;false;false;63;95;191;;;
                                  -222844;1;0;false;false;;;;;;
                                  -222845;4;0;false;false;127;127;159;;;
                                  -222849;3;0;false;false;;;;;;
                                  -222852;1;0;false;false;63;95;191;;;
                                  -222853;1;0;false;false;;;;;;
                                  -222854;4;0;false;false;127;127;159;;;
                                  -222858;11;0;false;false;63;95;191;;;
                                  -222869;1;0;false;false;;;;;;
                                  -222870;1;0;false;false;127;127;159;;;
                                  -222871;1;0;false;false;;;;;;
                                  -222872;3;0;false;false;63;95;191;;;
                                  -222875;1;0;false;false;;;;;;
                                  -222876;7;0;false;false;63;95;191;;;
                                  -222883;1;0;false;false;;;;;;
                                  -222884;5;0;false;false;63;95;191;;;
                                  -222889;1;0;false;false;;;;;;
                                  -222890;6;0;false;false;63;95;191;;;
                                  -222896;5;0;false;false;127;127;159;;;
                                  -222901;3;0;false;false;;;;;;
                                  -222904;1;0;false;false;63;95;191;;;
                                  -222905;2;0;false;false;;;;;;
                                  -222907;4;0;false;false;127;127;159;;;
                                  -222911;9;0;false;false;63;95;191;;;
                                  -222920;1;0;false;false;;;;;;
                                  -222921;1;0;false;false;127;127;159;;;
                                  -222922;1;0;false;false;;;;;;
                                  -222923;3;0;false;false;63;95;191;;;
                                  -222926;1;0;false;false;;;;;;
                                  -222927;7;0;false;false;63;95;191;;;
                                  -222934;1;0;false;false;;;;;;
                                  -222935;3;0;false;false;63;95;191;;;
                                  -222938;1;0;false;false;;;;;;
                                  -222939;6;0;false;false;63;95;191;;;
                                  -222945;5;0;false;false;127;127;159;;;
                                  -222950;3;0;false;false;;;;;;
                                  -222953;1;0;false;false;63;95;191;;;
                                  -222954;2;0;false;false;;;;;;
                                  -222956;4;0;false;false;127;127;159;;;
                                  -222960;10;0;false;false;63;95;191;;;
                                  -222970;1;0;false;false;;;;;;
                                  -222971;1;0;false;false;127;127;159;;;
                                  -222972;1;0;false;false;;;;;;
                                  -222973;3;0;false;false;63;95;191;;;
                                  -222976;1;0;false;false;;;;;;
                                  -222977;3;0;false;false;63;95;191;;;
                                  -222980;1;0;false;false;;;;;;
                                  -222981;4;0;false;false;63;95;191;;;
                                  -222985;5;0;false;false;127;127;159;;;
                                  -222990;3;0;false;false;;;;;;
                                  -222993;1;0;false;false;63;95;191;;;
                                  -222994;1;0;false;false;;;;;;
                                  -222995;5;0;false;false;127;127;159;;;
                                  -223000;3;0;false;false;;;;;;
                                  -223003;2;0;false;false;63;95;191;;;
                                  -223005;2;0;false;false;;;;;;
                                  -223007;4;1;false;false;127;0;85;;;
                                  -223011;1;0;false;false;;;;;;
                                  -223012;18;0;false;false;0;0;0;;;
                                  -223030;1;0;false;false;;;;;;
                                  -223031;6;0;false;false;0;0;0;;;
                                  -223037;1;0;false;false;;;;;;
                                  -223038;1;0;false;false;0;0;0;;;
                                  -223039;3;0;false;false;;;;;;
                                  -223042;2;1;false;false;127;0;85;;;
                                  -223044;1;0;false;false;;;;;;
                                  -223045;10;0;false;false;0;0;0;;;
                                  -223055;1;0;false;false;;;;;;
                                  -223056;1;0;false;false;0;0;0;;;
                                  -223057;4;0;false;false;;;;;;
                                  -223061;20;0;false;false;0;0;0;;;
                                  -223081;1;0;false;false;;;;;;
                                  -223082;4;1;false;false;127;0;85;;;
                                  -223086;2;0;false;false;0;0;0;;;
                                  -223088;3;0;false;false;;;;;;
                                  -223091;1;0;false;false;0;0;0;;;
                                  -223092;2;0;false;false;;;;;;
                                  -223094;1;0;false;false;0;0;0;;;
                                  -223095;2;0;false;false;;;;;;
                                  -223097;4;1;false;false;127;0;85;;;
                                  -223101;1;0;false;false;;;;;;
                                  -223102;21;0;false;false;0;0;0;;;
                                  -223123;1;0;false;false;;;;;;
                                  -223124;6;0;false;false;0;0;0;;;
                                  -223130;1;0;false;false;;;;;;
                                  -223131;1;0;false;false;0;0;0;;;
                                  -223132;3;0;false;false;;;;;;
                                  -223135;10;0;false;false;0;0;0;;;
                                  -223145;1;0;false;false;;;;;;
                                  -223146;10;0;false;false;0;0;0;;;
                                  -223156;1;0;false;false;;;;;;
                                  -223157;1;0;false;false;0;0;0;;;
                                  -223158;1;0;false;false;;;;;;
                                  -223159;16;0;false;false;0;0;0;;;
                                  -223175;3;0;false;false;;;;;;
                                  -223178;2;1;false;false;127;0;85;;;
                                  -223180;1;0;false;false;;;;;;
                                  -223181;20;0;false;false;0;0;0;;;
                                  -223201;1;0;false;false;;;;;;
                                  -223202;2;0;false;false;0;0;0;;;
                                  -223204;1;0;false;false;;;;;;
                                  -223205;2;0;false;false;0;0;0;;;
                                  -223207;1;0;false;false;;;;;;
                                  -223208;1;0;false;false;0;0;0;;;
                                  -223209;4;0;false;false;;;;;;
                                  -223213;39;0;false;false;0;0;0;;;
                                  -223252;1;0;false;false;;;;;;
                                  -223253;12;0;false;false;0;0;0;;;
                                  -223265;1;0;false;false;;;;;;
                                  -223266;9;0;false;false;0;0;0;;;
                                  -223275;1;0;false;false;;;;;;
                                  -223276;1;0;false;false;0;0;0;;;
                                  -223277;1;0;false;false;;;;;;
                                  -223278;13;0;false;false;0;0;0;;;
                                  -223291;3;0;false;false;;;;;;
                                  -223294;1;0;false;false;0;0;0;;;
                                  -223295;1;0;false;false;;;;;;
                                  -223296;4;1;false;false;127;0;85;;;
                                  -223300;1;0;false;false;;;;;;
                                  -223301;1;0;false;false;0;0;0;;;
                                  -223302;4;0;false;false;;;;;;
                                  -223306;2;1;false;false;127;0;85;;;
                                  -223308;1;0;false;false;;;;;;
                                  -223309;12;0;false;false;0;0;0;;;
                                  -223321;1;0;false;false;;;;;;
                                  -223322;2;0;false;false;0;0;0;;;
                                  -223324;1;0;false;false;;;;;;
                                  -223325;10;0;false;false;0;0;0;;;
                                  -223335;1;0;false;false;;;;;;
                                  -223336;1;0;false;false;0;0;0;;;
                                  -223337;5;0;false;false;;;;;;
                                  -223342;39;0;false;false;0;0;0;;;
                                  -223381;1;0;false;false;;;;;;
                                  -223382;12;0;false;false;0;0;0;;;
                                  -223394;1;0;false;false;;;;;;
                                  -223395;21;0;false;false;0;0;0;;;
                                  -223416;4;0;false;false;;;;;;
                                  -223420;1;0;false;false;0;0;0;;;
                                  -223421;1;0;false;false;;;;;;
                                  -223422;4;1;false;false;127;0;85;;;
                                  -223426;1;0;false;false;;;;;;
                                  -223427;1;0;false;false;0;0;0;;;
                                  -223428;5;0;false;false;;;;;;
                                  -223433;39;0;false;false;0;0;0;;;
                                  -223472;1;0;false;false;;;;;;
                                  -223473;12;0;false;false;0;0;0;;;
                                  -223485;1;0;false;false;;;;;;
                                  -223486;9;0;false;false;0;0;0;;;
                                  -223495;1;0;false;false;;;;;;
                                  -223496;1;0;false;false;0;0;0;;;
                                  -223497;1;0;false;false;;;;;;
                                  -223498;13;0;false;false;0;0;0;;;
                                  -223511;5;0;false;false;;;;;;
                                  -223516;39;0;false;false;0;0;0;;;
                                  -223555;1;0;false;false;;;;;;
                                  -223556;12;0;false;false;0;0;0;;;
                                  -223568;1;0;false;false;;;;;;
                                  -223569;21;0;false;false;0;0;0;;;
                                  -223590;5;0;false;false;;;;;;
                                  -223595;1;0;false;false;0;0;0;;;
                                  -223596;3;0;false;false;;;;;;
                                  -223599;1;0;false;false;0;0;0;;;
                                  -223600;3;0;false;false;;;;;;
                                  -223603;27;0;false;false;0;0;0;;;
                                  -223630;1;0;false;false;;;;;;
                                  -223631;7;0;false;false;0;0;0;;;
                                  -223638;2;0;false;false;;;;;;
                                  -223640;1;0;false;false;0;0;0;;;
                                  -223641;2;0;false;false;;;;;;
                                  -223643;3;0;false;false;63;95;191;;;
                                  -223646;3;0;false;false;;;;;;
                                  -223649;1;0;false;false;63;95;191;;;
                                  -223650;1;0;false;false;;;;;;
                                  -223651;5;0;false;false;63;95;191;;;
                                  -223656;1;0;false;false;;;;;;
                                  -223657;3;0;false;false;63;95;191;;;
                                  -223660;1;0;false;false;;;;;;
                                  -223661;9;0;false;false;63;95;191;;;
                                  -223670;1;0;false;false;;;;;;
                                  -223671;9;0;false;false;63;95;191;;;
                                  -223680;1;0;false;false;;;;;;
                                  -223681;6;0;false;false;63;95;191;;;
                                  -223687;3;0;false;false;;;;;;
                                  -223690;2;0;false;false;63;95;191;;;
                                  -223692;2;0;false;false;;;;;;
                                  -223694;4;1;false;false;127;0;85;;;
                                  -223698;1;0;false;false;;;;;;
                                  -223699;20;0;false;false;0;0;0;;;
                                  -223719;1;0;false;false;;;;;;
                                  -223720;1;0;false;false;0;0;0;;;
                                  -223721;3;0;false;false;;;;;;
                                  -223724;39;0;false;false;0;0;0;;;
                                  -223763;3;0;false;false;;;;;;
                                  -223766;5;0;false;false;0;0;0;;;
                                  -223771;1;0;false;false;;;;;;
                                  -223772;5;0;false;false;0;0;0;;;
                                  -223777;1;0;false;false;;;;;;
                                  -223778;1;0;false;false;0;0;0;;;
                                  -223779;1;0;false;false;;;;;;
                                  -223780;3;1;false;false;127;0;85;;;
                                  -223783;1;0;false;false;;;;;;
                                  -223784;8;0;false;false;0;0;0;;;
                                  -223792;3;0;false;false;;;;;;
                                  -223795;7;0;false;false;0;0;0;;;
                                  -223802;1;0;false;false;;;;;;
                                  -223803;1;0;false;false;0;0;0;;;
                                  -223804;1;0;false;false;;;;;;
                                  -223805;12;0;false;false;0;0;0;;;
                                  -223817;3;0;false;false;;;;;;
                                  -223820;7;0;false;false;0;0;0;;;
                                  -223827;1;0;false;false;;;;;;
                                  -223828;1;0;false;false;0;0;0;;;
                                  -223829;1;0;false;false;;;;;;
                                  -223830;12;0;false;false;0;0;0;;;
                                  -223842;3;0;false;false;;;;;;
                                  -223845;30;0;false;false;0;0;0;;;
                                  -223875;1;0;false;false;;;;;;
                                  -223876;7;0;false;false;0;0;0;;;
                                  -223883;2;0;false;false;;;;;;
                                  -223885;1;0;false;false;0;0;0;;;
                                  -223886;2;0;false;false;;;;;;
                                  -223888;3;0;false;false;63;95;191;;;
                                  -223891;3;0;false;false;;;;;;
                                  -223894;1;0;false;false;63;95;191;;;
                                  -223895;1;0;false;false;;;;;;
                                  -223896;4;0;false;false;63;95;191;;;
                                  -223900;1;0;false;false;;;;;;
                                  -223901;7;0;false;false;63;95;191;;;
                                  -223908;1;0;false;false;;;;;;
                                  -223909;3;0;false;false;63;95;191;;;
                                  -223912;1;0;false;false;;;;;;
                                  -223913;6;0;false;false;63;95;191;;;
                                  -223919;1;0;false;false;;;;;;
                                  -223920;5;0;false;false;63;95;191;;;
                                  -223925;1;0;false;false;;;;;;
                                  -223926;6;0;false;false;63;95;191;;;
                                  -223932;3;0;false;false;;;;;;
                                  -223935;1;0;false;false;63;95;191;;;
                                  -223936;1;0;false;false;;;;;;
                                  -223937;4;0;false;false;63;95;191;;;
                                  -223941;1;0;false;false;;;;;;
                                  -223942;9;0;false;false;63;95;191;;;
                                  -223951;1;0;false;false;;;;;;
                                  -223952;3;0;false;false;63;95;191;;;
                                  -223955;1;0;false;false;;;;;;
                                  -223956;8;0;false;false;63;95;191;;;
                                  -223964;1;0;false;false;;;;;;
                                  -223965;5;0;false;false;63;95;191;;;
                                  -223970;1;0;false;false;;;;;;
                                  -223971;3;0;false;false;63;95;191;;;
                                  -223974;1;0;false;false;;;;;;
                                  -223975;9;0;false;false;63;95;191;;;
                                  -223984;3;0;false;false;;;;;;
                                  -223987;1;0;false;false;63;95;191;;;
                                  -223988;1;0;false;false;;;;;;
                                  -223989;3;0;false;false;127;127;159;;;
                                  -223992;3;0;false;false;;;;;;
                                  -223995;1;0;false;false;63;95;191;;;
                                  -223996;3;0;false;false;;;;;;
                                  -223999;1;0;false;false;63;95;191;;;
                                  -224000;1;0;false;false;;;;;;
                                  -224001;7;1;false;false;127;159;191;;;
                                  -224008;4;0;false;false;63;95;191;;;
                                  -224012;1;0;false;false;;;;;;
                                  -224013;11;0;false;false;63;95;191;;;
                                  -224024;1;0;false;false;;;;;;
                                  -224025;5;0;false;false;63;95;191;;;
                                  -224030;1;0;false;false;;;;;;
                                  -224031;6;0;false;false;63;95;191;;;
                                  -224037;1;0;false;false;;;;;;
                                  -224038;12;0;false;false;63;95;191;;;
                                  -224050;1;0;false;false;;;;;;
                                  -224051;4;0;false;false;63;95;191;;;
                                  -224055;1;0;false;false;;;;;;
                                  -224056;3;0;false;false;63;95;191;;;
                                  -224059;1;0;false;false;;;;;;
                                  -224060;4;0;false;false;63;95;191;;;
                                  -224064;1;0;false;false;;;;;;
                                  -224065;5;0;false;false;63;95;191;;;
                                  -224070;3;0;false;false;;;;;;
                                  -224073;1;0;false;false;63;95;191;;;
                                  -224074;1;0;false;false;;;;;;
                                  -224075;7;1;false;false;127;159;191;;;
                                  -224082;3;0;false;false;63;95;191;;;
                                  -224085;3;0;false;false;;;;;;
                                  -224088;2;0;false;false;63;95;191;;;
                                  -224090;2;0;false;false;;;;;;
                                  -224092;6;1;false;false;127;0;85;;;
                                  -224098;1;0;false;false;;;;;;
                                  -224099;4;1;false;false;127;0;85;;;
                                  -224103;1;0;false;false;;;;;;
                                  -224104;12;0;false;false;0;0;0;;;
                                  -224116;7;1;false;false;127;0;85;;;
                                  -224123;1;0;false;false;;;;;;
                                  -224124;5;0;false;false;0;0;0;;;
                                  -224129;1;0;false;false;;;;;;
                                  -224130;1;0;false;false;0;0;0;;;
                                  -224131;3;0;false;false;;;;;;
                                  -224134;14;0;false;false;0;0;0;;;
                                  -224148;3;0;false;false;;;;;;
                                  -224151;2;1;false;false;127;0;85;;;
                                  -224153;1;0;false;false;;;;;;
                                  -224154;12;0;false;false;0;0;0;;;
                                  -224166;1;0;false;false;;;;;;
                                  -224167;1;0;false;false;0;0;0;;;
                                  -224168;1;0;false;false;;;;;;
                                  -224169;11;0;false;false;0;0;0;;;
                                  -224180;1;0;false;false;;;;;;
                                  -224181;2;0;false;false;0;0;0;;;
                                  -224183;1;0;false;false;;;;;;
                                  -224184;2;0;false;false;0;0;0;;;
                                  -224186;1;0;false;false;;;;;;
                                  -224187;6;1;false;false;127;0;85;;;
                                  -224193;1;0;false;false;0;0;0;;;
                                  -224194;6;0;false;false;;;;;;
                                  -224200;2;1;false;false;127;0;85;;;
                                  -224202;1;0;false;false;;;;;;
                                  -224203;5;0;false;false;0;0;0;;;
                                  -224208;1;0;false;false;;;;;;
                                  -224209;2;0;false;false;0;0;0;;;
                                  -224211;1;0;false;false;;;;;;
                                  -224212;9;0;false;false;0;0;0;;;
                                  -224221;1;0;false;false;;;;;;
                                  -224222;1;0;false;false;0;0;0;;;
                                  -224223;4;0;false;false;;;;;;
                                  -224227;9;0;false;false;0;0;0;;;
                                  -224236;1;0;false;false;;;;;;
                                  -224237;13;0;false;false;0;0;0;;;
                                  -224250;1;0;false;false;;;;;;
                                  -224251;1;0;false;false;0;0;0;;;
                                  -224252;1;0;false;false;;;;;;
                                  -224253;19;0;false;false;0;0;0;;;
                                  -224272;8;0;false;false;;;;;;
                                  -224280;8;0;false;false;0;0;0;;;
                                  -224288;1;0;false;false;;;;;;
                                  -224289;1;0;false;false;0;0;0;;;
                                  -224290;1;0;false;false;;;;;;
                                  -224291;5;0;false;false;0;0;0;;;
                                  -224296;4;0;false;false;;;;;;
                                  -224300;2;1;false;false;127;0;85;;;
                                  -224302;1;0;false;false;;;;;;
                                  -224303;10;0;false;false;0;0;0;;;
                                  -224313;1;0;false;false;;;;;;
                                  -224314;1;0;false;false;0;0;0;;;
                                  -224315;5;0;false;false;;;;;;
                                  -224320;14;0;false;false;0;0;0;;;
                                  -224334;1;0;false;false;;;;;;
                                  -224335;1;0;false;false;0;0;0;;;
                                  -224336;1;0;false;false;;;;;;
                                  -224337;8;0;false;false;0;0;0;;;
                                  -224345;5;0;false;false;;;;;;
                                  -224350;7;0;false;false;0;0;0;;;
                                  -224357;1;0;false;false;;;;;;
                                  -224358;1;0;false;false;0;0;0;;;
                                  -224359;1;0;false;false;;;;;;
                                  -224360;3;1;false;false;127;0;85;;;
                                  -224363;1;0;false;false;;;;;;
                                  -224364;24;0;false;false;0;0;0;;;
                                  -224388;1;0;false;false;;;;;;
                                  -224389;16;0;false;false;0;0;0;;;
                                  -224405;4;0;false;false;;;;;;
                                  -224409;1;0;false;false;0;0;0;;;
                                  -224410;4;0;false;false;;;;;;
                                  -224414;4;1;false;false;127;0;85;;;
                                  -224418;1;0;false;false;;;;;;
                                  -224419;1;0;false;false;0;0;0;;;
                                  -224420;5;0;false;false;;;;;;
                                  -224425;7;0;false;false;0;0;0;;;
                                  -224432;1;0;false;false;;;;;;
                                  -224433;1;0;false;false;0;0;0;;;
                                  -224434;1;0;false;false;;;;;;
                                  -224435;15;0;false;false;0;0;0;;;
                                  -224450;4;0;false;false;;;;;;
                                  -224454;1;0;false;false;0;0;0;;;
                                  -224455;4;0;false;false;;;;;;
                                  -224459;24;0;false;false;0;0;0;;;
                                  -224483;4;0;false;false;;;;;;
                                  -224487;22;0;false;false;0;0;0;;;
                                  -224509;1;0;false;false;;;;;;
                                  -224510;1;0;false;false;0;0;0;;;
                                  -224511;1;0;false;false;;;;;;
                                  -224512;2;0;false;false;0;0;0;;;
                                  -224514;4;0;false;false;;;;;;
                                  -224518;2;1;false;false;127;0;85;;;
                                  -224520;1;0;false;false;;;;;;
                                  -224521;14;0;false;false;0;0;0;;;
                                  -224535;1;0;false;false;;;;;;
                                  -224536;2;0;false;false;0;0;0;;;
                                  -224538;1;0;false;false;;;;;;
                                  -224539;4;1;false;false;127;0;85;;;
                                  -224543;1;0;false;false;0;0;0;;;
                                  -224544;1;0;false;false;;;;;;
                                  -224545;1;0;false;false;0;0;0;;;
                                  -224546;5;0;false;false;;;;;;
                                  -224551;36;0;false;false;0;0;0;;;
                                  -224587;4;0;false;false;;;;;;
                                  -224591;1;0;false;false;0;0;0;;;
                                  -224592;4;0;false;false;;;;;;
                                  -224596;16;0;false;false;0;0;0;;;
                                  -224612;4;0;false;false;;;;;;
                                  -224616;19;0;false;false;0;0;0;;;
                                  -224635;4;0;false;false;;;;;;
                                  -224639;5;1;false;false;127;0;85;;;
                                  -224644;10;0;false;false;0;0;0;;;
                                  -224654;5;0;false;false;;;;;;
                                  -224659;1;0;false;false;0;0;0;;;
                                  -224660;2;0;false;false;;;;;;
                                  -224662;1;0;false;false;0;0;0;;;
                                  -224663;2;0;false;false;;;;;;
                                  -224665;3;0;false;false;63;95;191;;;
                                  -224668;3;0;false;false;;;;;;
                                  -224671;1;0;false;false;63;95;191;;;
                                  -224672;1;0;false;false;;;;;;
                                  -224673;4;0;false;false;63;95;191;;;
                                  -224677;1;0;false;false;;;;;;
                                  -224678;3;0;false;false;63;95;191;;;
                                  -224681;1;0;false;false;;;;;;
                                  -224682;10;0;false;false;63;95;191;;;
                                  -224692;1;0;false;false;;;;;;
                                  -224693;6;0;false;false;63;95;191;;;
                                  -224699;2;0;false;false;;;;;;
                                  -224701;3;0;false;false;63;95;191;;;
                                  -224704;1;0;false;false;;;;;;
                                  -224705;3;0;false;false;63;95;191;;;
                                  -224708;1;0;false;false;;;;;;
                                  -224709;7;0;false;false;63;95;191;;;
                                  -224716;1;0;false;false;;;;;;
                                  -224717;6;0;false;false;63;95;191;;;
                                  -224723;1;0;false;false;;;;;;
                                  -224724;3;0;false;false;63;95;191;;;
                                  -224727;1;0;false;false;;;;;;
                                  -224728;9;0;false;false;63;95;191;;;
                                  -224737;3;0;false;false;;;;;;
                                  -224740;1;0;false;false;63;95;191;;;
                                  -224741;4;0;false;false;;;;;;
                                  -224745;1;0;false;false;63;95;191;;;
                                  -224746;1;0;false;false;;;;;;
                                  -224747;4;0;false;false;127;127;159;;;
                                  -224751;3;0;false;false;;;;;;
                                  -224754;1;0;false;false;63;95;191;;;
                                  -224755;1;0;false;false;;;;;;
                                  -224756;7;1;false;false;127;159;191;;;
                                  -224763;5;0;false;false;63;95;191;;;
                                  -224768;1;0;false;false;;;;;;
                                  -224769;3;0;false;false;63;95;191;;;
                                  -224772;1;0;false;false;;;;;;
                                  -224773;3;0;false;false;63;95;191;;;
                                  -224776;1;0;false;false;;;;;;
                                  -224777;5;0;false;false;63;95;191;;;
                                  -224782;1;0;false;false;;;;;;
                                  -224783;3;0;false;false;63;95;191;;;
                                  -224786;1;0;false;false;;;;;;
                                  -224787;3;0;false;false;63;95;191;;;
                                  -224790;1;0;false;false;;;;;;
                                  -224791;8;0;false;false;63;95;191;;;
                                  -224799;3;0;false;false;;;;;;
                                  -224802;1;0;false;false;63;95;191;;;
                                  -224803;3;0;false;false;;;;;;
                                  -224806;1;0;false;false;63;95;191;;;
                                  -224807;1;0;false;false;;;;;;
                                  -224808;11;1;false;false;127;159;191;;;
                                  -224819;12;0;false;false;63;95;191;;;
                                  -224831;1;0;false;false;;;;;;
                                  -224832;4;0;false;false;127;127;159;;;
                                  -224836;3;0;false;false;;;;;;
                                  -224839;1;0;false;false;63;95;191;;;
                                  -224840;4;0;false;false;;;;;;
                                  -224844;4;0;false;false;127;127;159;;;
                                  -224848;21;0;false;false;63;95;191;;;
                                  -224869;1;0;false;false;;;;;;
                                  -224870;1;0;false;false;127;127;159;;;
                                  -224871;1;0;false;false;;;;;;
                                  -224872;2;0;false;false;63;95;191;;;
                                  -224874;1;0;false;false;;;;;;
                                  -224875;3;0;false;false;63;95;191;;;
                                  -224878;1;0;false;false;;;;;;
                                  -224879;8;0;false;false;63;95;191;;;
                                  -224887;1;0;false;false;;;;;;
                                  -224888;3;0;false;false;63;95;191;;;
                                  -224891;1;0;false;false;;;;;;
                                  -224892;4;0;false;false;63;95;191;;;
                                  -224896;1;0;false;false;;;;;;
                                  -224897;8;0;false;false;63;95;191;;;
                                  -224905;5;0;false;false;127;127;159;;;
                                  -224910;3;0;false;false;;;;;;
                                  -224913;1;0;false;false;63;95;191;;;
                                  -224914;4;0;false;false;;;;;;
                                  -224918;4;0;false;false;127;127;159;;;
                                  -224922;27;0;false;false;63;95;191;;;
                                  -224949;1;0;false;false;;;;;;
                                  -224950;1;0;false;false;127;127;159;;;
                                  -224951;1;0;false;false;;;;;;
                                  -224952;2;0;false;false;63;95;191;;;
                                  -224954;1;0;false;false;;;;;;
                                  -224955;3;0;false;false;63;95;191;;;
                                  -224958;1;0;false;false;;;;;;
                                  -224959;6;0;false;false;63;95;191;;;
                                  -224965;1;0;false;false;;;;;;
                                  -224966;4;0;false;false;63;95;191;;;
                                  -224970;1;0;false;false;;;;;;
                                  -224971;3;0;false;false;63;95;191;;;
                                  -224974;1;0;false;false;;;;;;
                                  -224975;6;0;false;false;63;95;191;;;
                                  -224981;1;0;false;false;;;;;;
                                  -224982;4;0;false;false;63;95;191;;;
                                  -224986;1;0;false;false;;;;;;
                                  -224987;7;0;false;false;63;95;191;;;
                                  -224994;1;0;false;false;;;;;;
                                  -224995;3;0;false;false;63;95;191;;;
                                  -224998;1;0;false;false;;;;;;
                                  -224999;8;0;false;false;63;95;191;;;
                                  -225007;5;0;false;false;127;127;159;;;
                                  -225012;3;0;false;false;;;;;;
                                  -225015;1;0;false;false;63;95;191;;;
                                  -225016;1;0;false;false;;;;;;
                                  -225017;5;0;false;false;127;127;159;;;
                                  -225022;3;0;false;false;;;;;;
                                  -225025;2;0;false;false;63;95;191;;;
                                  -225027;2;0;false;false;;;;;;
                                  -225029;6;1;false;false;127;0;85;;;
                                  -225035;1;0;false;false;;;;;;
                                  -225036;4;1;false;false;127;0;85;;;
                                  -225040;1;0;false;false;;;;;;
                                  -225041;14;0;false;false;0;0;0;;;
                                  -225055;1;0;false;false;;;;;;
                                  -225056;6;0;false;false;0;0;0;;;
                                  -225062;1;0;false;false;;;;;;
                                  -225063;1;0;false;false;0;0;0;;;
                                  -225064;3;0;false;false;;;;;;
                                  -225067;11;0;false;false;0;0;0;;;
                                  -225078;1;0;false;false;;;;;;
                                  -225079;3;0;false;false;0;0;0;;;
                                  -225082;3;0;false;false;;;;;;
                                  -225085;5;1;false;false;127;0;85;;;
                                  -225090;17;0;false;false;0;0;0;;;
                                  -225107;3;0;false;false;;;;;;
                                  -225110;14;0;false;false;0;0;0;;;
                                  -225124;1;0;false;false;;;;;;
                                  -225125;1;0;false;false;0;0;0;;;
                                  -225126;1;0;false;false;;;;;;
                                  -225127;9;0;false;false;0;0;0;;;
                                  -225136;4;0;false;false;;;;;;
                                  -225140;2;1;false;false;127;0;85;;;
                                  -225142;1;0;false;false;;;;;;
                                  -225143;6;0;false;false;0;0;0;;;
                                  -225149;1;0;false;false;;;;;;
                                  -225150;2;0;false;false;0;0;0;;;
                                  -225152;1;0;false;false;;;;;;
                                  -225153;4;1;false;false;127;0;85;;;
                                  -225157;1;0;false;false;0;0;0;;;
                                  -225158;1;0;false;false;;;;;;
                                  -225159;1;0;false;false;0;0;0;;;
                                  -225160;4;0;false;false;;;;;;
                                  -225164;19;0;false;false;0;0;0;;;
                                  -225183;3;0;false;false;;;;;;
                                  -225186;1;0;false;false;0;0;0;;;
                                  -225187;2;0;false;false;;;;;;
                                  -225189;1;0;false;false;0;0;0;;;
                                  -225190;2;0;false;false;;;;;;
                                  -225192;3;0;false;false;63;95;191;;;
                                  -225195;3;0;false;false;;;;;;
                                  -225198;1;0;false;false;63;95;191;;;
                                  -225199;1;0;false;false;;;;;;
                                  -225200;5;1;false;false;127;159;191;;;
                                  -225205;45;0;false;false;63;95;191;;;
                                  -225250;3;0;false;false;;;;;;
                                  -225253;2;0;false;false;63;95;191;;;
                                  -225255;2;0;false;false;;;;;;
                                  -225257;6;1;false;false;127;0;85;;;
                                  -225263;1;0;false;false;;;;;;
                                  -225264;4;1;false;false;127;0;85;;;
                                  -225268;1;0;false;false;;;;;;
                                  -225269;19;0;false;false;0;0;0;;;
                                  -225288;1;0;false;false;;;;;;
                                  -225289;6;0;false;false;0;0;0;;;
                                  -225295;1;0;false;false;;;;;;
                                  -225296;1;0;false;false;0;0;0;;;
                                  -225297;3;0;false;false;;;;;;
                                  -225300;14;0;false;false;0;0;0;;;
                                  -225314;3;0;false;false;;;;;;
                                  -225317;10;0;false;false;0;0;0;;;
                                  -225327;1;0;false;false;;;;;;
                                  -225328;1;0;false;false;0;0;0;;;
                                  -225329;1;0;false;false;;;;;;
                                  -225330;6;0;false;false;0;0;0;;;
                                  -225336;3;0;false;false;;;;;;
                                  -225339;5;1;false;false;127;0;85;;;
                                  -225344;32;0;false;false;0;0;0;;;
                                  -225376;3;0;false;false;;;;;;
                                  -225379;9;0;false;false;0;0;0;;;
                                  -225388;2;0;false;false;;;;;;
                                  -225390;1;0;false;false;0;0;0;;;
                                  -225391;2;0;false;false;;;;;;
                                  -225393;3;0;false;false;63;95;191;;;
                                  -225396;3;0;false;false;;;;;;
                                  -225399;1;0;false;false;63;95;191;;;
                                  -225400;1;0;false;false;;;;;;
                                  -225401;4;0;false;false;63;95;191;;;
                                  -225405;1;0;false;false;;;;;;
                                  -225406;3;0;false;false;63;95;191;;;
                                  -225409;1;0;false;false;;;;;;
                                  -225410;4;0;false;false;63;95;191;;;
                                  -225414;1;0;false;false;;;;;;
                                  -225415;8;0;false;false;63;95;191;;;
                                  -225423;1;0;false;false;;;;;;
                                  -225424;5;0;false;false;63;95;191;;;
                                  -225429;2;0;false;false;;;;;;
                                  -225431;4;0;false;false;63;95;191;;;
                                  -225435;1;0;false;false;;;;;;
                                  -225436;4;0;false;false;63;95;191;;;
                                  -225440;1;0;false;false;;;;;;
                                  -225441;3;0;false;false;63;95;191;;;
                                  -225444;1;0;false;false;;;;;;
                                  -225445;4;0;false;false;63;95;191;;;
                                  -225449;1;0;false;false;;;;;;
                                  -225450;4;0;false;false;63;95;191;;;
                                  -225454;1;0;false;false;;;;;;
                                  -225455;7;0;false;false;63;95;191;;;
                                  -225462;3;0;false;false;;;;;;
                                  -225465;1;0;false;false;63;95;191;;;
                                  -225466;1;0;false;false;;;;;;
                                  -225467;9;0;false;false;63;95;191;;;
                                  -225476;1;0;false;false;;;;;;
                                  -225477;2;0;false;false;63;95;191;;;
                                  -225479;1;0;false;false;;;;;;
                                  -225480;7;0;false;false;63;95;191;;;
                                  -225487;1;0;false;false;;;;;;
                                  -225488;2;0;false;false;63;95;191;;;
                                  -225490;1;0;false;false;;;;;;
                                  -225491;8;0;false;false;63;95;191;;;
                                  -225499;1;0;false;false;;;;;;
                                  -225500;2;0;false;false;63;95;191;;;
                                  -225502;1;0;false;false;;;;;;
                                  -225503;4;0;false;false;63;95;191;;;
                                  -225507;1;0;false;false;;;;;;
                                  -225508;4;0;false;false;63;95;191;;;
                                  -225512;1;0;false;false;;;;;;
                                  -225513;3;0;false;false;63;95;191;;;
                                  -225516;1;0;false;false;;;;;;
                                  -225517;3;0;false;false;63;95;191;;;
                                  -225520;1;0;false;false;;;;;;
                                  -225521;4;0;false;false;63;95;191;;;
                                  -225525;3;0;false;false;;;;;;
                                  -225528;1;0;false;false;63;95;191;;;
                                  -225529;1;0;false;false;;;;;;
                                  -225530;6;0;false;false;63;95;191;;;
                                  -225536;3;0;false;false;;;;;;
                                  -225539;1;0;false;false;63;95;191;;;
                                  -225540;3;0;false;false;;;;;;
                                  -225543;1;0;false;false;63;95;191;;;
                                  -225544;1;0;false;false;;;;;;
                                  -225545;7;1;false;false;127;159;191;;;
                                  -225552;4;0;false;false;63;95;191;;;
                                  -225556;1;0;false;false;;;;;;
                                  -225557;3;0;false;false;63;95;191;;;
                                  -225560;1;0;false;false;;;;;;
                                  -225561;3;0;false;false;63;95;191;;;
                                  -225564;1;0;false;false;;;;;;
                                  -225565;8;0;false;false;63;95;191;;;
                                  -225573;1;0;false;false;;;;;;
                                  -225574;4;0;false;false;63;95;191;;;
                                  -225578;3;0;false;false;;;;;;
                                  -225581;1;0;false;false;63;95;191;;;
                                  -225582;1;0;false;false;;;;;;
                                  -225583;11;1;false;false;127;159;191;;;
                                  -225594;12;0;false;false;63;95;191;;;
                                  -225606;1;0;false;false;;;;;;
                                  -225607;4;0;false;false;127;127;159;;;
                                  -225611;3;0;false;false;;;;;;
                                  -225614;1;0;false;false;63;95;191;;;
                                  -225615;4;0;false;false;;;;;;
                                  -225619;4;0;false;false;127;127;159;;;
                                  -225623;21;0;false;false;63;95;191;;;
                                  -225644;1;0;false;false;;;;;;
                                  -225645;1;0;false;false;127;127;159;;;
                                  -225646;1;0;false;false;;;;;;
                                  -225647;2;0;false;false;63;95;191;;;
                                  -225649;1;0;false;false;;;;;;
                                  -225650;3;0;false;false;63;95;191;;;
                                  -225653;1;0;false;false;;;;;;
                                  -225654;8;0;false;false;63;95;191;;;
                                  -225662;1;0;false;false;;;;;;
                                  -225663;3;0;false;false;63;95;191;;;
                                  -225666;1;0;false;false;;;;;;
                                  -225667;4;0;false;false;63;95;191;;;
                                  -225671;1;0;false;false;;;;;;
                                  -225672;8;0;false;false;63;95;191;;;
                                  -225680;5;0;false;false;127;127;159;;;
                                  -225685;3;0;false;false;;;;;;
                                  -225688;1;0;false;false;63;95;191;;;
                                  -225689;4;0;false;false;;;;;;
                                  -225693;4;0;false;false;127;127;159;;;
                                  -225697;27;0;false;false;63;95;191;;;
                                  -225724;1;0;false;false;;;;;;
                                  -225725;1;0;false;false;127;127;159;;;
                                  -225726;1;0;false;false;;;;;;
                                  -225727;2;0;false;false;63;95;191;;;
                                  -225729;1;0;false;false;;;;;;
                                  -225730;3;0;false;false;63;95;191;;;
                                  -225733;1;0;false;false;;;;;;
                                  -225734;6;0;false;false;63;95;191;;;
                                  -225740;1;0;false;false;;;;;;
                                  -225741;4;0;false;false;63;95;191;;;
                                  -225745;1;0;false;false;;;;;;
                                  -225746;3;0;false;false;63;95;191;;;
                                  -225749;1;0;false;false;;;;;;
                                  -225750;6;0;false;false;63;95;191;;;
                                  -225756;1;0;false;false;;;;;;
                                  -225757;4;0;false;false;63;95;191;;;
                                  -225761;1;0;false;false;;;;;;
                                  -225762;7;0;false;false;63;95;191;;;
                                  -225769;1;0;false;false;;;;;;
                                  -225770;3;0;false;false;63;95;191;;;
                                  -225773;1;0;false;false;;;;;;
                                  -225774;8;0;false;false;63;95;191;;;
                                  -225782;5;0;false;false;127;127;159;;;
                                  -225787;3;0;false;false;;;;;;
                                  -225790;1;0;false;false;63;95;191;;;
                                  -225791;1;0;false;false;;;;;;
                                  -225792;5;0;false;false;127;127;159;;;
                                  -225797;3;0;false;false;;;;;;
                                  -225800;1;0;false;false;63;95;191;;;
                                  -225801;1;0;false;false;;;;;;
                                  -225802;3;0;false;false;127;127;159;;;
                                  -225805;3;0;false;false;;;;;;
                                  -225808;1;0;false;false;63;95;191;;;
                                  -225809;1;0;false;false;;;;;;
                                  -225810;12;1;false;false;127;159;191;;;
                                  -225822;3;0;false;false;63;95;191;;;
                                  -225825;1;0;false;false;;;;;;
                                  -225826;19;0;false;false;63;95;191;;;
                                  -225845;1;0;false;false;;;;;;
                                  -225846;8;0;false;false;63;95;191;;;
                                  -225854;3;0;false;false;;;;;;
                                  -225857;1;0;false;false;63;95;191;;;
                                  -225858;1;0;false;false;;;;;;
                                  -225859;4;0;false;false;127;127;159;;;
                                  -225863;3;0;false;false;;;;;;
                                  -225866;2;0;false;false;63;95;191;;;
                                  -225868;2;0;false;false;;;;;;
                                  -225870;6;1;false;false;127;0;85;;;
                                  -225876;1;0;false;false;;;;;;
                                  -225877;4;1;false;false;127;0;85;;;
                                  -225881;1;0;false;false;;;;;;
                                  -225882;16;0;false;false;0;0;0;;;
                                  -225898;7;1;false;false;127;0;85;;;
                                  -225905;1;0;false;false;;;;;;
                                  -225906;5;0;false;false;0;0;0;;;
                                  -225911;1;0;false;false;;;;;;
                                  -225912;1;0;false;false;0;0;0;;;
                                  -225913;3;0;false;false;;;;;;
                                  -225916;14;0;false;false;0;0;0;;;
                                  -225930;3;0;false;false;;;;;;
                                  -225933;12;0;false;false;0;0;0;;;
                                  -225945;1;0;false;false;;;;;;
                                  -225946;1;0;false;false;0;0;0;;;
                                  -225947;1;0;false;false;;;;;;
                                  -225948;5;0;false;false;0;0;0;;;
                                  -225953;2;0;false;false;;;;;;
                                  -225955;1;0;false;false;0;0;0;;;
                                  -225956;2;0;false;false;;;;;;
                                  -225958;4;1;false;false;127;0;85;;;
                                  -225962;1;0;false;false;;;;;;
                                  -225963;17;0;false;false;0;0;0;;;
                                  -225980;3;1;false;false;127;0;85;;;
                                  -225983;1;0;false;false;;;;;;
                                  -225984;10;0;false;false;0;0;0;;;
                                  -225994;1;0;false;false;;;;;;
                                  -225995;3;1;false;false;127;0;85;;;
                                  -225998;1;0;false;false;;;;;;
                                  -225999;5;0;false;false;0;0;0;;;
                                  -226004;1;0;false;false;;;;;;
                                  -226005;3;1;false;false;127;0;85;;;
                                  -226008;1;0;false;false;;;;;;
                                  -226009;10;0;false;false;0;0;0;;;
                                  -226019;1;0;false;false;;;;;;
                                  -226020;1;0;false;false;0;0;0;;;
                                  -226021;3;0;false;false;;;;;;
                                  -226024;5;0;false;false;0;0;0;;;
                                  -226029;1;0;false;false;;;;;;
                                  -226030;5;0;false;false;0;0;0;;;
                                  -226035;1;0;false;false;;;;;;
                                  -226036;1;0;false;false;0;0;0;;;
                                  -226037;1;0;false;false;;;;;;
                                  -226038;11;0;false;false;0;0;0;;;
                                  -226049;3;0;false;false;;;;;;
                                  -226052;2;1;false;false;127;0;85;;;
                                  -226054;1;0;false;false;;;;;;
                                  -226055;6;0;false;false;0;0;0;;;
                                  -226061;1;0;false;false;;;;;;
                                  -226062;2;0;false;false;0;0;0;;;
                                  -226064;1;0;false;false;;;;;;
                                  -226065;4;1;false;false;127;0;85;;;
                                  -226069;1;0;false;false;0;0;0;;;
                                  -226070;1;0;false;false;;;;;;
                                  -226071;1;0;false;false;0;0;0;;;
                                  -226072;4;0;false;false;;;;;;
                                  -226076;7;1;false;false;127;0;85;;;
                                  -226083;1;0;false;false;;;;;;
                                  -226084;11;0;false;false;0;0;0;;;
                                  -226095;1;0;false;false;;;;;;
                                  -226096;1;0;false;false;0;0;0;;;
                                  -226097;1;0;false;false;;;;;;
                                  -226098;5;0;false;false;0;0;0;;;
                                  -226103;1;0;false;false;;;;;;
                                  -226104;2;0;false;false;0;0;0;;;
                                  -226106;1;0;false;false;;;;;;
                                  -226107;13;0;false;false;0;0;0;;;
                                  -226120;4;0;false;false;;;;;;
                                  -226124;3;1;false;false;127;0;85;;;
                                  -226127;1;0;false;false;;;;;;
                                  -226128;14;0;false;false;0;0;0;;;
                                  -226142;1;0;false;false;;;;;;
                                  -226143;1;0;false;false;0;0;0;;;
                                  -226144;1;0;false;false;;;;;;
                                  -226145;10;0;false;false;0;0;0;;;
                                  -226155;4;0;false;false;;;;;;
                                  -226159;2;1;false;false;127;0;85;;;
                                  -226161;1;0;false;false;;;;;;
                                  -226162;14;0;false;false;0;0;0;;;
                                  -226176;1;0;false;false;;;;;;
                                  -226177;1;0;false;false;0;0;0;;;
                                  -226178;5;0;false;false;;;;;;
                                  -226183;2;1;false;false;127;0;85;;;
                                  -226185;1;0;false;false;;;;;;
                                  -226186;15;0;false;false;0;0;0;;;
                                  -226201;1;0;false;false;;;;;;
                                  -226202;2;0;false;false;0;0;0;;;
                                  -226204;1;0;false;false;;;;;;
                                  -226205;9;0;false;false;0;0;0;;;
                                  -226214;1;0;false;false;;;;;;
                                  -226215;1;0;false;false;0;0;0;;;
                                  -226216;6;0;false;false;;;;;;
                                  -226222;14;0;false;false;0;0;0;;;
                                  -226236;1;0;false;false;;;;;;
                                  -226237;1;0;false;false;0;0;0;;;
                                  -226238;1;0;false;false;;;;;;
                                  -226239;10;0;false;false;0;0;0;;;
                                  -226249;5;0;false;false;;;;;;
                                  -226254;1;0;false;false;0;0;0;;;
                                  -226255;1;0;false;false;;;;;;
                                  -226256;4;1;false;false;127;0;85;;;
                                  -226260;1;0;false;false;;;;;;
                                  -226261;2;1;false;false;127;0;85;;;
                                  -226263;1;0;false;false;;;;;;
                                  -226264;15;0;false;false;0;0;0;;;
                                  -226279;1;0;false;false;;;;;;
                                  -226280;2;0;false;false;0;0;0;;;
                                  -226282;1;0;false;false;;;;;;
                                  -226283;10;0;false;false;0;0;0;;;
                                  -226293;1;0;false;false;;;;;;
                                  -226294;1;0;false;false;0;0;0;;;
                                  -226295;6;0;false;false;;;;;;
                                  -226301;14;0;false;false;0;0;0;;;
                                  -226315;1;0;false;false;;;;;;
                                  -226316;1;0;false;false;0;0;0;;;
                                  -226317;1;0;false;false;;;;;;
                                  -226318;9;0;false;false;0;0;0;;;
                                  -226327;5;0;false;false;;;;;;
                                  -226332;1;0;false;false;0;0;0;;;
                                  -226333;4;0;false;false;;;;;;
                                  -226337;1;0;false;false;0;0;0;;;
                                  -226338;4;0;false;false;;;;;;
                                  -226342;2;1;false;false;127;0;85;;;
                                  -226344;1;0;false;false;;;;;;
                                  -226345;12;0;false;false;0;0;0;;;
                                  -226357;1;0;false;false;;;;;;
                                  -226358;2;0;false;false;0;0;0;;;
                                  -226360;1;0;false;false;;;;;;
                                  -226361;14;0;false;false;0;0;0;;;
                                  -226375;1;0;false;false;;;;;;
                                  -226376;2;0;false;false;0;0;0;;;
                                  -226378;1;0;false;false;;;;;;
                                  -226379;10;0;false;false;0;0;0;;;
                                  -226389;1;0;false;false;;;;;;
                                  -226390;1;0;false;false;0;0;0;;;
                                  -226391;5;0;false;false;;;;;;
                                  -226396;9;0;false;false;0;0;0;;;
                                  -226405;1;0;false;false;;;;;;
                                  -226406;2;0;false;false;0;0;0;;;
                                  -226408;1;0;false;false;;;;;;
                                  -226409;18;0;false;false;0;0;0;;;
                                  -226427;1;0;false;false;;;;;;
                                  -226428;1;0;false;false;0;0;0;;;
                                  -226429;1;0;false;false;;;;;;
                                  -226430;3;0;false;false;0;0;0;;;
                                  -226433;4;0;false;false;;;;;;
                                  -226437;1;0;false;false;0;0;0;;;
                                  -226438;4;0;false;false;;;;;;
                                  -226442;3;1;false;false;127;0;85;;;
                                  -226445;1;0;false;false;;;;;;
                                  -226446;9;0;false;false;0;0;0;;;
                                  -226455;1;0;false;false;;;;;;
                                  -226456;1;0;false;false;0;0;0;;;
                                  -226457;1;0;false;false;;;;;;
                                  -226458;4;0;false;false;0;0;0;;;
                                  -226462;1;0;false;false;;;;;;
                                  -226463;1;0;false;false;0;0;0;;;
                                  -226464;1;0;false;false;;;;;;
                                  -226465;10;0;false;false;0;0;0;;;
                                  -226475;1;0;false;false;;;;;;
                                  -226476;1;0;false;false;0;0;0;;;
                                  -226477;1;0;false;false;;;;;;
                                  -226478;20;0;false;false;0;0;0;;;
                                  -226498;1;0;false;false;;;;;;
                                  -226499;1;0;false;false;0;0;0;;;
                                  -226500;1;0;false;false;;;;;;
                                  -226501;10;0;false;false;0;0;0;;;
                                  -226511;4;0;false;false;;;;;;
                                  -226515;28;0;false;false;0;0;0;;;
                                  -226543;1;0;false;false;;;;;;
                                  -226544;11;0;false;false;0;0;0;;;
                                  -226555;4;0;false;false;;;;;;
                                  -226559;49;0;false;false;0;0;0;;;
                                  -226608;4;0;false;false;;;;;;
                                  -226612;2;1;false;false;127;0;85;;;
                                  -226614;1;0;false;false;;;;;;
                                  -226615;10;0;false;false;0;0;0;;;
                                  -226625;1;0;false;false;;;;;;
                                  -226626;2;0;false;false;0;0;0;;;
                                  -226628;1;0;false;false;;;;;;
                                  -226629;15;0;false;false;0;0;0;;;
                                  -226644;1;0;false;false;;;;;;
                                  -226645;1;0;false;false;0;0;0;;;
                                  -226646;5;0;false;false;;;;;;
                                  -226651;14;0;false;false;0;0;0;;;
                                  -226665;1;0;false;false;;;;;;
                                  -226666;1;0;false;false;0;0;0;;;
                                  -226667;1;0;false;false;;;;;;
                                  -226668;10;0;false;false;0;0;0;;;
                                  -226678;5;0;false;false;;;;;;
                                  -226683;2;1;false;false;127;0;85;;;
                                  -226685;1;0;false;false;;;;;;
                                  -226686;13;0;false;false;0;0;0;;;
                                  -226699;1;0;false;false;;;;;;
                                  -226700;1;0;false;false;0;0;0;;;
                                  -226701;6;0;false;false;;;;;;
                                  -226707;2;1;false;false;127;0;85;;;
                                  -226709;1;0;false;false;;;;;;
                                  -226710;15;0;false;false;0;0;0;;;
                                  -226725;1;0;false;false;;;;;;
                                  -226726;2;0;false;false;0;0;0;;;
                                  -226728;1;0;false;false;;;;;;
                                  -226729;12;0;false;false;0;0;0;;;
                                  -226741;1;0;false;false;;;;;;
                                  -226742;1;0;false;false;0;0;0;;;
                                  -226743;7;0;false;false;;;;;;
                                  -226750;22;0;false;false;0;0;0;;;
                                  -226772;4;1;false;false;127;0;85;;;
                                  -226776;2;0;false;false;0;0;0;;;
                                  -226778;6;0;false;false;;;;;;
                                  -226784;1;0;false;false;0;0;0;;;
                                  -226785;1;0;false;false;;;;;;
                                  -226786;4;1;false;false;127;0;85;;;
                                  -226790;1;0;false;false;;;;;;
                                  -226791;2;1;false;false;127;0;85;;;
                                  -226793;1;0;false;false;;;;;;
                                  -226794;15;0;false;false;0;0;0;;;
                                  -226809;1;0;false;false;;;;;;
                                  -226810;2;0;false;false;0;0;0;;;
                                  -226812;1;0;false;false;;;;;;
                                  -226813;9;0;false;false;0;0;0;;;
                                  -226822;1;0;false;false;;;;;;
                                  -226823;1;0;false;false;0;0;0;;;
                                  -226824;7;0;false;false;;;;;;
                                  -226831;39;0;false;false;0;0;0;;;
                                  -226870;6;0;false;false;;;;;;
                                  -226876;1;0;false;false;0;0;0;;;
                                  -226877;1;0;false;false;;;;;;
                                  -226878;4;1;false;false;127;0;85;;;
                                  -226882;1;0;false;false;;;;;;
                                  -226883;2;1;false;false;127;0;85;;;
                                  -226885;1;0;false;false;;;;;;
                                  -226886;15;0;false;false;0;0;0;;;
                                  -226901;1;0;false;false;;;;;;
                                  -226902;2;0;false;false;0;0;0;;;
                                  -226904;1;0;false;false;;;;;;
                                  -226905;10;0;false;false;0;0;0;;;
                                  -226915;1;0;false;false;;;;;;
                                  -226916;1;0;false;false;0;0;0;;;
                                  -226917;7;0;false;false;;;;;;
                                  -226924;40;0;false;false;0;0;0;;;
                                  -226964;6;0;false;false;;;;;;
                                  -226970;1;0;false;false;0;0;0;;;
                                  -226971;5;0;false;false;;;;;;
                                  -226976;1;0;false;false;0;0;0;;;
                                  -226977;5;0;false;false;;;;;;
                                  -226982;32;0;false;false;0;0;0;;;
                                  -227014;1;0;false;false;;;;;;
                                  -227015;12;0;false;false;0;0;0;;;
                                  -227027;5;0;false;false;;;;;;
                                  -227032;2;1;false;false;127;0;85;;;
                                  -227034;1;0;false;false;;;;;;
                                  -227035;15;0;false;false;0;0;0;;;
                                  -227050;1;0;false;false;;;;;;
                                  -227051;2;0;false;false;0;0;0;;;
                                  -227053;1;0;false;false;;;;;;
                                  -227054;9;0;false;false;0;0;0;;;
                                  -227063;1;0;false;false;;;;;;
                                  -227064;1;0;false;false;0;0;0;;;
                                  -227065;6;0;false;false;;;;;;
                                  -227071;57;0;false;false;0;0;0;;;
                                  -227128;5;0;false;false;;;;;;
                                  -227133;1;0;false;false;0;0;0;;;
                                  -227134;1;0;false;false;;;;;;
                                  -227135;4;1;false;false;127;0;85;;;
                                  -227139;1;0;false;false;;;;;;
                                  -227140;2;1;false;false;127;0;85;;;
                                  -227142;1;0;false;false;;;;;;
                                  -227143;15;0;false;false;0;0;0;;;
                                  -227158;1;0;false;false;;;;;;
                                  -227159;2;0;false;false;0;0;0;;;
                                  -227161;1;0;false;false;;;;;;
                                  -227162;10;0;false;false;0;0;0;;;
                                  -227172;1;0;false;false;;;;;;
                                  -227173;1;0;false;false;0;0;0;;;
                                  -227174;6;0;false;false;;;;;;
                                  -227180;53;0;false;false;0;0;0;;;
                                  -227233;5;0;false;false;;;;;;
                                  -227238;1;0;false;false;0;0;0;;;
                                  -227239;4;0;false;false;;;;;;
                                  -227243;1;0;false;false;0;0;0;;;
                                  -227244;3;0;false;false;;;;;;
                                  -227247;1;0;false;false;0;0;0;;;
                                  -227248;3;0;false;false;;;;;;
                                  -227251;7;0;false;false;0;0;0;;;
                                  -227258;1;0;false;false;;;;;;
                                  -227259;1;0;false;false;0;0;0;;;
                                  -227260;1;0;false;false;;;;;;
                                  -227261;10;0;false;false;0;0;0;;;
                                  -227271;2;0;false;false;;;;;;
                                  -227273;1;0;false;false;0;0;0;;;
                                  -227274;2;0;false;false;;;;;;
                                  -227276;3;0;false;false;63;95;191;;;
                                  -227279;3;0;false;false;;;;;;
                                  -227282;1;0;false;false;63;95;191;;;
                                  -227283;1;0;false;false;;;;;;
                                  -227284;5;0;false;false;63;95;191;;;
                                  -227289;1;0;false;false;;;;;;
                                  -227290;3;0;false;false;63;95;191;;;
                                  -227293;1;0;false;false;;;;;;
                                  -227294;5;0;false;false;63;95;191;;;
                                  -227299;1;0;false;false;;;;;;
                                  -227300;2;0;false;false;63;95;191;;;
                                  -227302;1;0;false;false;;;;;;
                                  -227303;3;0;false;false;63;95;191;;;
                                  -227306;1;0;false;false;;;;;;
                                  -227307;7;0;false;false;63;95;191;;;
                                  -227314;1;0;false;false;;;;;;
                                  -227315;5;0;false;false;63;95;191;;;
                                  -227320;1;0;false;false;;;;;;
                                  -227321;7;0;false;false;63;95;191;;;
                                  -227328;3;0;false;false;;;;;;
                                  -227331;2;0;false;false;63;95;191;;;
                                  -227333;2;0;false;false;;;;;;
                                  -227335;4;1;false;false;127;0;85;;;
                                  -227339;1;0;false;false;;;;;;
                                  -227340;18;0;false;false;0;0;0;;;
                                  -227358;1;0;false;false;;;;;;
                                  -227359;1;0;false;false;0;0;0;;;
                                  -227360;3;0;false;false;;;;;;
                                  -227363;3;1;false;false;127;0;85;;;
                                  -227366;1;0;false;false;;;;;;
                                  -227367;9;0;false;false;0;0;0;;;
                                  -227376;1;0;false;false;;;;;;
                                  -227377;1;0;false;false;0;0;0;;;
                                  -227378;1;0;false;false;;;;;;
                                  -227379;15;0;false;false;0;0;0;;;
                                  -227394;3;0;false;false;;;;;;
                                  -227397;6;0;false;false;0;0;0;;;
                                  -227403;1;0;false;false;;;;;;
                                  -227404;4;0;false;false;0;0;0;;;
                                  -227408;1;0;false;false;;;;;;
                                  -227409;1;0;false;false;0;0;0;;;
                                  -227410;1;0;false;false;;;;;;
                                  -227411;27;0;false;false;0;0;0;;;
                                  -227438;3;0;false;false;;;;;;
                                  -227441;3;1;false;false;127;0;85;;;
                                  -227444;1;0;false;false;;;;;;
                                  -227445;10;0;false;false;0;0;0;;;
                                  -227455;1;0;false;false;;;;;;
                                  -227456;1;0;false;false;0;0;0;;;
                                  -227457;1;0;false;false;;;;;;
                                  -227458;35;0;false;false;0;0;0;;;
                                  -227493;3;0;false;false;;;;;;
                                  -227496;3;1;false;false;127;0;85;;;
                                  -227499;1;0;false;false;;;;;;
                                  -227500;12;0;false;false;0;0;0;;;
                                  -227512;1;0;false;false;;;;;;
                                  -227513;1;0;false;false;0;0;0;;;
                                  -227514;1;0;false;false;;;;;;
                                  -227515;11;0;false;false;0;0;0;;;
                                  -227526;1;0;false;false;;;;;;
                                  -227527;1;0;false;false;0;0;0;;;
                                  -227528;1;0;false;false;;;;;;
                                  -227529;11;0;false;false;0;0;0;;;
                                  -227540;3;0;false;false;;;;;;
                                  -227543;3;1;false;false;127;0;85;;;
                                  -227546;1;0;false;false;;;;;;
                                  -227547;9;0;false;false;0;0;0;;;
                                  -227556;1;0;false;false;;;;;;
                                  -227557;1;0;false;false;0;0;0;;;
                                  -227558;1;0;false;false;;;;;;
                                  -227559;18;0;false;false;0;0;0;;;
                                  -227577;1;0;false;false;;;;;;
                                  -227578;10;0;false;false;0;0;0;;;
                                  -227588;1;0;false;false;;;;;;
                                  -227589;14;0;false;false;0;0;0;;;
                                  -227603;3;0;false;false;;;;;;
                                  -227606;27;0;false;false;0;0;0;;;
                                  -227633;1;0;false;false;;;;;;
                                  -227634;10;0;false;false;0;0;0;;;
                                  -227644;1;0;false;false;;;;;;
                                  -227645;21;0;false;false;0;0;0;;;
                                  -227666;2;0;false;false;;;;;;
                                  -227668;1;0;false;false;0;0;0;;;
                                  -227669;2;0;false;false;;;;;;
                                  -227671;3;0;false;false;63;95;191;;;
                                  -227674;3;0;false;false;;;;;;
                                  -227677;1;0;false;false;63;95;191;;;
                                  -227678;1;0;false;false;;;;;;
                                  -227679;4;0;false;false;63;95;191;;;
                                  -227683;1;0;false;false;;;;;;
                                  -227684;3;0;false;false;63;95;191;;;
                                  -227687;1;0;false;false;;;;;;
                                  -227688;5;0;false;false;63;95;191;;;
                                  -227693;1;0;false;false;;;;;;
                                  -227694;7;0;false;false;63;95;191;;;
                                  -227701;3;0;false;false;;;;;;
                                  -227704;1;0;false;false;63;95;191;;;
                                  -227705;3;0;false;false;;;;;;
                                  -227708;1;0;false;false;63;95;191;;;
                                  -227709;1;0;false;false;;;;;;
                                  -227710;7;1;false;false;127;159;191;;;
                                  -227717;6;0;false;false;63;95;191;;;
                                  -227723;1;0;false;false;;;;;;
                                  -227724;5;0;false;false;63;95;191;;;
                                  -227729;1;0;false;false;;;;;;
                                  -227730;7;0;false;false;63;95;191;;;
                                  -227737;1;0;false;false;;;;;;
                                  -227738;8;0;false;false;63;95;191;;;
                                  -227746;1;0;false;false;;;;;;
                                  -227747;2;0;false;false;63;95;191;;;
                                  -227749;1;0;false;false;;;;;;
                                  -227750;3;0;false;false;63;95;191;;;
                                  -227753;1;0;false;false;;;;;;
                                  -227754;5;0;false;false;63;95;191;;;
                                  -227759;1;0;false;false;;;;;;
                                  -227760;9;0;false;false;63;95;191;;;
                                  -227769;1;0;false;false;;;;;;
                                  -227770;2;0;false;false;63;95;191;;;
                                  -227772;1;0;false;false;;;;;;
                                  -227773;3;0;false;false;63;95;191;;;
                                  -227776;1;0;false;false;;;;;;
                                  -227777;5;0;false;false;63;95;191;;;
                                  -227782;3;0;false;false;;;;;;
                                  -227785;1;0;false;false;63;95;191;;;
                                  -227786;1;0;false;false;;;;;;
                                  -227787;11;1;false;false;127;159;191;;;
                                  -227798;12;0;false;false;63;95;191;;;
                                  -227810;1;0;false;false;;;;;;
                                  -227811;4;0;false;false;127;127;159;;;
                                  -227815;3;0;false;false;;;;;;
                                  -227818;1;0;false;false;63;95;191;;;
                                  -227819;4;0;false;false;;;;;;
                                  -227823;4;0;false;false;127;127;159;;;
                                  -227827;21;0;false;false;63;95;191;;;
                                  -227848;1;0;false;false;;;;;;
                                  -227849;1;0;false;false;127;127;159;;;
                                  -227850;1;0;false;false;;;;;;
                                  -227851;2;0;false;false;63;95;191;;;
                                  -227853;1;0;false;false;;;;;;
                                  -227854;3;0;false;false;63;95;191;;;
                                  -227857;1;0;false;false;;;;;;
                                  -227858;8;0;false;false;63;95;191;;;
                                  -227866;1;0;false;false;;;;;;
                                  -227867;3;0;false;false;63;95;191;;;
                                  -227870;1;0;false;false;;;;;;
                                  -227871;4;0;false;false;63;95;191;;;
                                  -227875;1;0;false;false;;;;;;
                                  -227876;8;0;false;false;63;95;191;;;
                                  -227884;5;0;false;false;127;127;159;;;
                                  -227889;3;0;false;false;;;;;;
                                  -227892;1;0;false;false;63;95;191;;;
                                  -227893;4;0;false;false;;;;;;
                                  -227897;4;0;false;false;127;127;159;;;
                                  -227901;27;0;false;false;63;95;191;;;
                                  -227928;1;0;false;false;;;;;;
                                  -227929;1;0;false;false;127;127;159;;;
                                  -227930;1;0;false;false;;;;;;
                                  -227931;2;0;false;false;63;95;191;;;
                                  -227933;1;0;false;false;;;;;;
                                  -227934;3;0;false;false;63;95;191;;;
                                  -227937;1;0;false;false;;;;;;
                                  -227938;6;0;false;false;63;95;191;;;
                                  -227944;1;0;false;false;;;;;;
                                  -227945;4;0;false;false;63;95;191;;;
                                  -227949;1;0;false;false;;;;;;
                                  -227950;3;0;false;false;63;95;191;;;
                                  -227953;1;0;false;false;;;;;;
                                  -227954;6;0;false;false;63;95;191;;;
                                  -227960;1;0;false;false;;;;;;
                                  -227961;4;0;false;false;63;95;191;;;
                                  -227965;1;0;false;false;;;;;;
                                  -227966;7;0;false;false;63;95;191;;;
                                  -227973;1;0;false;false;;;;;;
                                  -227974;3;0;false;false;63;95;191;;;
                                  -227977;1;0;false;false;;;;;;
                                  -227978;8;0;false;false;63;95;191;;;
                                  -227986;5;0;false;false;127;127;159;;;
                                  -227991;3;0;false;false;;;;;;
                                  -227994;1;0;false;false;63;95;191;;;
                                  -227995;1;0;false;false;;;;;;
                                  -227996;5;0;false;false;127;127;159;;;
                                  -228001;3;0;false;false;;;;;;
                                  -228004;1;0;false;false;63;95;191;;;
                                  -228005;1;0;false;false;;;;;;
                                  -228006;11;1;false;false;127;159;191;;;
                                  -228017;24;0;false;false;63;95;191;;;
                                  -228041;1;0;false;false;;;;;;
                                  -228042;4;0;false;false;127;127;159;;;
                                  -228046;3;0;false;false;;;;;;
                                  -228049;1;0;false;false;63;95;191;;;
                                  -228050;3;0;false;false;;;;;;
                                  -228053;4;0;false;false;127;127;159;;;
                                  -228057;22;0;false;false;63;95;191;;;
                                  -228079;1;0;false;false;;;;;;
                                  -228080;4;0;false;false;63;95;191;;;
                                  -228084;1;0;false;false;;;;;;
                                  -228085;6;0;false;false;63;95;191;;;
                                  -228091;1;0;false;false;;;;;;
                                  -228092;3;0;false;false;63;95;191;;;
                                  -228095;1;0;false;false;;;;;;
                                  -228096;5;0;false;false;63;95;191;;;
                                  -228101;1;0;false;false;;;;;;
                                  -228102;2;0;false;false;63;95;191;;;
                                  -228104;1;0;false;false;;;;;;
                                  -228105;3;0;false;false;63;95;191;;;
                                  -228108;1;0;false;false;;;;;;
                                  -228109;3;0;false;false;63;95;191;;;
                                  -228112;1;0;false;false;;;;;;
                                  -228113;2;0;false;false;63;95;191;;;
                                  -228115;1;0;false;false;;;;;;
                                  -228116;3;0;false;false;63;95;191;;;
                                  -228119;1;0;false;false;;;;;;
                                  -228120;9;0;false;false;63;95;191;;;
                                  -228129;1;0;false;false;;;;;;
                                  -228130;5;0;false;false;63;95;191;;;
                                  -228135;1;0;false;false;;;;;;
                                  -228136;2;0;false;false;63;95;191;;;
                                  -228138;1;0;false;false;;;;;;
                                  -228139;6;0;false;false;63;95;191;;;
                                  -228145;1;0;false;false;;;;;;
                                  -228146;1;0;false;false;63;95;191;;;
                                  -228147;4;0;false;false;;;;;;
                                  -228151;1;0;false;false;63;95;191;;;
                                  -228152;1;0;false;false;;;;;;
                                  -228153;5;0;false;false;63;95;191;;;
                                  -228158;1;0;false;false;;;;;;
                                  -228159;4;0;false;false;63;95;191;;;
                                  -228163;1;0;false;false;;;;;;
                                  -228164;4;0;false;false;63;95;191;;;
                                  -228168;1;0;false;false;;;;;;
                                  -228169;9;0;false;false;63;95;191;;;
                                  -228178;1;0;false;false;;;;;;
                                  -228179;4;0;false;false;63;95;191;;;
                                  -228183;1;0;false;false;;;;;;
                                  -228184;4;0;false;false;63;95;191;;;
                                  -228188;1;0;false;false;;;;;;
                                  -228189;7;0;false;false;63;95;191;;;
                                  -228196;1;0;false;false;;;;;;
                                  -228197;7;0;false;false;63;95;191;;;
                                  -228204;1;0;false;false;;;;;;
                                  -228205;2;0;false;false;63;95;191;;;
                                  -228207;1;0;false;false;;;;;;
                                  -228208;5;0;false;false;63;95;191;;;
                                  -228213;1;0;false;false;;;;;;
                                  -228214;2;0;false;false;63;95;191;;;
                                  -228216;1;0;false;false;;;;;;
                                  -228217;2;0;false;false;63;95;191;;;
                                  -228219;1;0;false;false;;;;;;
                                  -228220;5;0;false;false;63;95;191;;;
                                  -228225;1;0;false;false;;;;;;
                                  -228226;3;0;false;false;63;95;191;;;
                                  -228229;1;0;false;false;;;;;;
                                  -228230;4;0;false;false;63;95;191;;;
                                  -228234;1;0;false;false;;;;;;
                                  -228235;10;0;false;false;63;95;191;;;
                                  -228245;3;0;false;false;;;;;;
                                  -228248;1;0;false;false;63;95;191;;;
                                  -228249;1;0;false;false;;;;;;
                                  -228250;5;0;false;false;127;127;159;;;
                                  -228255;3;0;false;false;;;;;;
                                  -228258;2;0;false;false;63;95;191;;;
                                  -228260;2;0;false;false;;;;;;
                                  -228262;6;1;false;false;127;0;85;;;
                                  -228268;1;0;false;false;;;;;;
                                  -228269;4;1;false;false;127;0;85;;;
                                  -228273;1;0;false;false;;;;;;
                                  -228274;15;0;false;false;0;0;0;;;
                                  -228289;3;1;false;false;127;0;85;;;
                                  -228292;1;0;false;false;;;;;;
                                  -228293;7;0;false;false;0;0;0;;;
                                  -228300;1;0;false;false;;;;;;
                                  -228301;1;0;false;false;0;0;0;;;
                                  -228302;3;0;false;false;;;;;;
                                  -228305;14;0;false;false;0;0;0;;;
                                  -228319;3;0;false;false;;;;;;
                                  -228322;3;1;false;false;127;0;85;;;
                                  -228325;1;0;false;false;;;;;;
                                  -228326;6;0;false;false;0;0;0;;;
                                  -228332;1;0;false;false;;;;;;
                                  -228333;1;0;false;false;0;0;0;;;
                                  -228334;1;0;false;false;;;;;;
                                  -228335;15;0;false;false;0;0;0;;;
                                  -228350;9;0;false;false;;;;;;
                                  -228359;2;1;false;false;127;0;85;;;
                                  -228361;1;0;false;false;;;;;;
                                  -228362;7;0;false;false;0;0;0;;;
                                  -228369;1;0;false;false;;;;;;
                                  -228370;1;0;false;false;0;0;0;;;
                                  -228371;1;0;false;false;;;;;;
                                  -228372;1;0;false;false;0;0;0;;;
                                  -228373;1;0;false;false;;;;;;
                                  -228374;2;0;false;false;0;0;0;;;
                                  -228376;1;0;false;false;;;;;;
                                  -228377;6;0;false;false;0;0;0;;;
                                  -228383;1;0;false;false;;;;;;
                                  -228384;2;0;false;false;0;0;0;;;
                                  -228386;1;0;false;false;;;;;;
                                  -228387;12;0;false;false;0;0;0;;;
                                  -228399;1;0;false;false;;;;;;
                                  -228400;1;0;false;false;0;0;0;;;
                                  -228401;4;0;false;false;;;;;;
                                  -228405;2;1;false;false;127;0;85;;;
                                  -228407;1;0;false;false;;;;;;
                                  -228408;7;0;false;false;0;0;0;;;
                                  -228415;1;0;false;false;;;;;;
                                  -228416;1;0;false;false;0;0;0;;;
                                  -228417;1;0;false;false;;;;;;
                                  -228418;2;0;false;false;0;0;0;;;
                                  -228420;1;0;false;false;;;;;;
                                  -228421;1;0;false;false;0;0;0;;;
                                  -228422;5;0;false;false;;;;;;
                                  -228427;11;0;false;false;0;0;0;;;
                                  -228438;1;0;false;false;;;;;;
                                  -228439;1;0;false;false;0;0;0;;;
                                  -228440;1;0;false;false;;;;;;
                                  -228441;2;0;false;false;0;0;0;;;
                                  -228443;4;0;false;false;;;;;;
                                  -228447;1;0;false;false;0;0;0;;;
                                  -228448;4;0;false;false;;;;;;
                                  -228452;4;1;false;false;127;0;85;;;
                                  -228456;4;0;false;false;;;;;;
                                  -228460;2;1;false;false;127;0;85;;;
                                  -228462;1;0;false;false;;;;;;
                                  -228463;7;0;false;false;0;0;0;;;
                                  -228470;1;0;false;false;;;;;;
                                  -228471;1;0;false;false;0;0;0;;;
                                  -228472;1;0;false;false;;;;;;
                                  -228473;7;0;false;false;0;0;0;;;
                                  -228480;1;0;false;false;;;;;;
                                  -228481;1;0;false;false;0;0;0;;;
                                  -228482;5;0;false;false;;;;;;
                                  -228487;11;0;false;false;0;0;0;;;
                                  -228498;1;0;false;false;;;;;;
                                  -228499;1;0;false;false;0;0;0;;;
                                  -228500;1;0;false;false;;;;;;
                                  -228501;7;0;false;false;0;0;0;;;
                                  -228508;4;0;false;false;;;;;;
                                  -228512;1;0;false;false;0;0;0;;;
                                  -228513;4;0;false;false;;;;;;
                                  -228517;4;1;false;false;127;0;85;;;
                                  -228521;1;0;false;false;;;;;;
                                  -228522;1;0;false;false;0;0;0;;;
                                  -228523;5;0;false;false;;;;;;
                                  -228528;2;1;false;false;127;0;85;;;
                                  -228530;1;0;false;false;;;;;;
                                  -228531;25;0;false;false;0;0;0;;;
                                  -228556;1;0;false;false;;;;;;
                                  -228557;1;0;false;false;0;0;0;;;
                                  -228558;6;0;false;false;;;;;;
                                  -228564;62;0;false;false;63;127;95;;;
                                  -228626;4;0;false;false;;;;;;
                                  -228630;64;0;false;false;63;127;95;;;
                                  -228694;4;0;false;false;;;;;;
                                  -228698;38;0;false;false;0;0;0;;;
                                  -228736;5;0;false;false;;;;;;
                                  -228741;1;0;false;false;0;0;0;;;
                                  -228742;5;0;false;false;;;;;;
                                  -228747;11;0;false;false;0;0;0;;;
                                  -228758;1;0;false;false;;;;;;
                                  -228759;1;0;false;false;0;0;0;;;
                                  -228760;1;0;false;false;;;;;;
                                  -228761;7;0;false;false;0;0;0;;;
                                  -228768;4;0;false;false;;;;;;
                                  -228772;1;0;false;false;0;0;0;;;
                                  -228773;4;0;false;false;;;;;;
                                  -228777;47;0;false;false;63;127;95;;;
                                  -228824;2;0;false;false;;;;;;
                                  -228826;55;0;false;false;63;127;95;;;
                                  -228881;2;0;false;false;;;;;;
                                  -228883;15;0;false;false;0;0;0;;;
                                  -228898;5;1;false;false;127;0;85;;;
                                  -228903;2;0;false;false;0;0;0;;;
                                  -228905;3;0;false;false;;;;;;
                                  -228908;1;0;false;false;0;0;0;;;
                                  -228909;3;0;false;false;;;;;;
                                  -228912;52;0;false;false;63;127;95;;;
                                  -228964;1;0;false;false;;;;;;
                                  -228965;19;0;false;false;0;0;0;;;
                                  -228984;2;0;false;false;;;;;;
                                  -228986;1;0;false;false;0;0;0;;;
                                  -228987;3;0;false;false;;;;;;
                                  -228990;3;0;false;false;63;95;191;;;
                                  -228993;3;0;false;false;;;;;;
                                  -228996;1;0;false;false;63;95;191;;;
                                  -228997;1;0;false;false;;;;;;
                                  -228998;6;0;false;false;63;95;191;;;
                                  -229004;1;0;false;false;;;;;;
                                  -229005;3;0;false;false;63;95;191;;;
                                  -229008;1;0;false;false;;;;;;
                                  -229009;9;0;false;false;63;95;191;;;
                                  -229018;1;0;false;false;;;;;;
                                  -229019;4;0;false;false;63;95;191;;;
                                  -229023;1;0;false;false;;;;;;
                                  -229024;5;0;false;false;63;95;191;;;
                                  -229029;1;0;false;false;;;;;;
                                  -229030;2;0;false;false;63;95;191;;;
                                  -229032;1;0;false;false;;;;;;
                                  -229033;3;0;false;false;63;95;191;;;
                                  -229036;1;0;false;false;;;;;;
                                  -229037;10;0;false;false;63;95;191;;;
                                  -229047;2;0;false;false;;;;;;
                                  -229049;3;0;false;false;63;95;191;;;
                                  -229052;1;0;false;false;;;;;;
                                  -229053;4;0;false;false;63;95;191;;;
                                  -229057;1;0;false;false;;;;;;
                                  -229058;4;0;false;false;63;95;191;;;
                                  -229062;1;0;false;false;;;;;;
                                  -229063;2;0;false;false;63;95;191;;;
                                  -229065;1;0;false;false;;;;;;
                                  -229066;6;0;false;false;63;95;191;;;
                                  -229072;3;0;false;false;;;;;;
                                  -229075;1;0;false;false;63;95;191;;;
                                  -229076;1;0;false;false;;;;;;
                                  -229077;2;0;false;false;63;95;191;;;
                                  -229079;1;0;false;false;;;;;;
                                  -229080;3;0;false;false;63;95;191;;;
                                  -229083;1;0;false;false;;;;;;
                                  -229084;9;0;false;false;63;95;191;;;
                                  -229093;1;0;false;false;;;;;;
                                  -229094;2;0;false;false;63;95;191;;;
                                  -229096;1;0;false;false;;;;;;
                                  -229097;5;0;false;false;63;95;191;;;
                                  -229102;1;0;false;false;;;;;;
                                  -229103;4;0;false;false;63;95;191;;;
                                  -229107;1;0;false;false;;;;;;
                                  -229108;6;0;false;false;63;95;191;;;
                                  -229114;1;0;false;false;;;;;;
                                  -229115;3;0;false;false;63;95;191;;;
                                  -229118;1;0;false;false;;;;;;
                                  -229119;3;0;false;false;63;95;191;;;
                                  -229122;1;0;false;false;;;;;;
                                  -229123;7;0;false;false;63;95;191;;;
                                  -229130;3;0;false;false;;;;;;
                                  -229133;1;0;false;false;63;95;191;;;
                                  -229134;1;0;false;false;;;;;;
                                  -229135;3;0;false;false;127;127;159;;;
                                  -229138;3;0;false;false;;;;;;
                                  -229141;1;0;false;false;63;95;191;;;
                                  -229142;3;0;false;false;;;;;;
                                  -229145;1;0;false;false;63;95;191;;;
                                  -229146;1;0;false;false;;;;;;
                                  -229147;7;1;false;false;127;159;191;;;
                                  -229154;5;0;false;false;63;95;191;;;
                                  -229159;1;0;false;false;;;;;;
                                  -229160;5;0;false;false;63;95;191;;;
                                  -229165;1;0;false;false;;;;;;
                                  -229166;5;0;false;false;63;95;191;;;
                                  -229171;1;0;false;false;;;;;;
                                  -229172;2;0;false;false;63;95;191;;;
                                  -229174;1;0;false;false;;;;;;
                                  -229175;3;0;false;false;63;95;191;;;
                                  -229178;1;0;false;false;;;;;;
                                  -229179;4;0;false;false;63;95;191;;;
                                  -229183;3;0;false;false;;;;;;
                                  -229186;1;0;false;false;63;95;191;;;
                                  -229187;1;0;false;false;;;;;;
                                  -229188;7;1;false;false;127;159;191;;;
                                  -229195;6;0;false;false;63;95;191;;;
                                  -229201;1;0;false;false;;;;;;
                                  -229202;6;0;false;false;63;95;191;;;
                                  -229208;1;0;false;false;;;;;;
                                  -229209;2;0;false;false;63;95;191;;;
                                  -229211;1;0;false;false;;;;;;
                                  -229212;4;0;false;false;63;95;191;;;
                                  -229216;1;0;false;false;;;;;;
                                  -229217;2;0;false;false;63;95;191;;;
                                  -229219;1;0;false;false;;;;;;
                                  -229220;5;0;false;false;63;95;191;;;
                                  -229225;1;0;false;false;;;;;;
                                  -229226;2;0;false;false;63;95;191;;;
                                  -229228;1;0;false;false;;;;;;
                                  -229229;9;0;false;false;63;95;191;;;
                                  -229238;3;0;false;false;;;;;;
                                  -229241;1;0;false;false;63;95;191;;;
                                  -229242;4;0;false;false;;;;;;
                                  -229246;1;0;false;false;63;95;191;;;
                                  -229247;1;0;false;false;;;;;;
                                  -229248;11;1;false;false;127;159;191;;;
                                  -229259;9;0;false;false;63;95;191;;;
                                  -229268;1;0;false;false;;;;;;
                                  -229269;3;0;false;false;63;95;191;;;
                                  -229272;1;0;false;false;;;;;;
                                  -229273;21;0;false;false;63;95;191;;;
                                  -229294;3;0;false;false;;;;;;
                                  -229297;1;0;false;false;63;95;191;;;
                                  -229298;1;0;false;false;;;;;;
                                  -229299;5;1;false;false;127;159;191;;;
                                  -229304;41;0;false;false;63;95;191;;;
                                  -229345;3;0;false;false;;;;;;
                                  -229348;2;0;false;false;63;95;191;;;
                                  -229350;2;0;false;false;;;;;;
                                  -229352;4;1;false;false;127;0;85;;;
                                  -229356;1;0;false;false;;;;;;
                                  -229357;20;0;false;false;0;0;0;;;
                                  -229377;3;1;false;false;127;0;85;;;
                                  -229380;1;0;false;false;;;;;;
                                  -229381;6;0;false;false;0;0;0;;;
                                  -229387;1;0;false;false;;;;;;
                                  -229388;3;1;false;false;127;0;85;;;
                                  -229391;1;0;false;false;;;;;;
                                  -229392;7;0;false;false;0;0;0;;;
                                  -229399;1;0;false;false;;;;;;
                                  -229400;3;1;false;false;127;0;85;;;
                                  -229403;1;0;false;false;;;;;;
                                  -229404;14;0;false;false;0;0;0;;;
                                  -229418;1;0;false;false;;;;;;
                                  -229419;6;1;false;false;127;0;85;;;
                                  -229425;1;0;false;false;;;;;;
                                  -229426;8;0;false;false;0;0;0;;;
                                  -229434;1;0;false;false;;;;;;
                                  -229435;1;0;false;false;0;0;0;;;
                                  -229436;3;0;false;false;;;;;;
                                  -229439;2;1;false;false;127;0;85;;;
                                  -229441;1;0;false;false;;;;;;
                                  -229442;14;0;false;false;0;0;0;;;
                                  -229456;1;0;false;false;;;;;;
                                  -229457;2;0;false;false;0;0;0;;;
                                  -229459;1;0;false;false;;;;;;
                                  -229460;23;0;false;false;0;0;0;;;
                                  -229483;1;0;false;false;;;;;;
                                  -229484;2;0;false;false;0;0;0;;;
                                  -229486;1;0;false;false;;;;;;
                                  -229487;10;0;false;false;0;0;0;;;
                                  -229497;1;0;false;false;;;;;;
                                  -229498;2;0;false;false;0;0;0;;;
                                  -229500;1;0;false;false;;;;;;
                                  -229501;8;0;false;false;0;0;0;;;
                                  -229509;1;0;false;false;;;;;;
                                  -229510;6;1;false;false;127;0;85;;;
                                  -229516;1;0;false;false;0;0;0;;;
                                  -229517;3;0;false;false;;;;;;
                                  -229520;12;0;false;false;0;0;0;;;
                                  -229532;1;0;false;false;;;;;;
                                  -229533;17;0;false;false;0;0;0;;;
                                  -229550;1;0;false;false;;;;;;
                                  -229551;1;0;false;false;0;0;0;;;
                                  -229552;1;0;false;false;;;;;;
                                  -229553;27;0;false;false;0;0;0;;;
                                  -229580;3;0;false;false;;;;;;
                                  -229583;10;0;false;false;0;0;0;;;
                                  -229593;1;0;false;false;;;;;;
                                  -229594;15;0;false;false;0;0;0;;;
                                  -229609;1;0;false;false;;;;;;
                                  -229610;1;0;false;false;0;0;0;;;
                                  -229611;1;0;false;false;;;;;;
                                  -229612;3;1;false;false;127;0;85;;;
                                  -229615;1;0;false;false;;;;;;
                                  -229616;17;0;false;false;0;0;0;;;
                                  -229633;1;0;false;false;;;;;;
                                  -229634;8;0;false;false;0;0;0;;;
                                  -229642;3;0;false;false;;;;;;
                                  -229645;6;0;false;false;0;0;0;;;
                                  -229651;1;0;false;false;;;;;;
                                  -229652;9;0;false;false;0;0;0;;;
                                  -229661;1;0;false;false;;;;;;
                                  -229662;1;0;false;false;0;0;0;;;
                                  -229663;1;0;false;false;;;;;;
                                  -229664;42;0;false;false;0;0;0;;;
                                  -229706;3;0;false;false;;;;;;
                                  -229709;8;0;false;false;0;0;0;;;
                                  -229717;1;0;false;false;;;;;;
                                  -229718;5;0;false;false;0;0;0;;;
                                  -229723;3;0;false;false;;;;;;
                                  -229726;10;0;false;false;0;0;0;;;
                                  -229736;1;0;false;false;;;;;;
                                  -229737;6;0;false;false;0;0;0;;;
                                  -229743;3;0;false;false;;;;;;
                                  -229746;2;1;false;false;127;0;85;;;
                                  -229748;1;0;false;false;;;;;;
                                  -229749;14;0;false;false;0;0;0;;;
                                  -229763;1;0;false;false;;;;;;
                                  -229764;2;0;false;false;0;0;0;;;
                                  -229766;1;0;false;false;;;;;;
                                  -229767;24;0;false;false;0;0;0;;;
                                  -229791;1;0;false;false;;;;;;
                                  -229792;1;0;false;false;0;0;0;;;
                                  -229793;4;0;false;false;;;;;;
                                  -229797;4;0;false;false;0;0;0;;;
                                  -229801;1;0;false;false;;;;;;
                                  -229802;1;0;false;false;0;0;0;;;
                                  -229803;1;0;false;false;;;;;;
                                  -229804;3;1;false;false;127;0;85;;;
                                  -229807;1;0;false;false;;;;;;
                                  -229808;20;0;false;false;0;0;0;;;
                                  -229828;4;0;false;false;;;;;;
                                  -229832;5;0;false;false;0;0;0;;;
                                  -229837;1;0;false;false;;;;;;
                                  -229838;1;0;false;false;0;0;0;;;
                                  -229839;1;0;false;false;;;;;;
                                  -229840;3;1;false;false;127;0;85;;;
                                  -229843;1;0;false;false;;;;;;
                                  -229844;30;0;false;false;0;0;0;;;
                                  -229874;3;0;false;false;;;;;;
                                  -229877;1;0;false;false;0;0;0;;;
                                  -229878;1;0;false;false;;;;;;
                                  -229879;4;1;false;false;127;0;85;;;
                                  -229883;1;0;false;false;;;;;;
                                  -229884;1;0;false;false;0;0;0;;;
                                  -229885;4;0;false;false;;;;;;
                                  -229889;11;0;false;false;0;0;0;;;
                                  -229900;1;0;false;false;;;;;;
                                  -229901;11;0;false;false;0;0;0;;;
                                  -229912;1;0;false;false;;;;;;
                                  -229913;1;0;false;false;0;0;0;;;
                                  -229914;1;0;false;false;;;;;;
                                  -229915;26;0;false;false;0;0;0;;;
                                  -229941;4;0;false;false;;;;;;
                                  -229945;9;0;false;false;0;0;0;;;
                                  -229954;1;0;false;false;;;;;;
                                  -229955;9;0;false;false;0;0;0;;;
                                  -229964;1;0;false;false;;;;;;
                                  -229965;1;0;false;false;0;0;0;;;
                                  -229966;1;0;false;false;;;;;;
                                  -229967;3;1;false;false;127;0;85;;;
                                  -229970;1;0;false;false;;;;;;
                                  -229971;16;0;false;false;0;0;0;;;
                                  -229987;1;0;false;false;;;;;;
                                  -229988;8;0;false;false;0;0;0;;;
                                  -229996;4;0;false;false;;;;;;
                                  -230000;6;0;false;false;0;0;0;;;
                                  -230006;1;0;false;false;;;;;;
                                  -230007;7;0;false;false;0;0;0;;;
                                  -230014;1;0;false;false;;;;;;
                                  -230015;1;0;false;false;0;0;0;;;
                                  -230016;1;0;false;false;;;;;;
                                  -230017;36;0;false;false;0;0;0;;;
                                  -230053;4;0;false;false;;;;;;
                                  -230057;4;0;false;false;0;0;0;;;
                                  -230061;1;0;false;false;;;;;;
                                  -230062;1;0;false;false;0;0;0;;;
                                  -230063;1;0;false;false;;;;;;
                                  -230064;3;1;false;false;127;0;85;;;
                                  -230067;1;0;false;false;;;;;;
                                  -230068;17;0;false;false;0;0;0;;;
                                  -230085;1;0;false;false;;;;;;
                                  -230086;11;0;false;false;0;0;0;;;
                                  -230097;4;0;false;false;;;;;;
                                  -230101;5;0;false;false;0;0;0;;;
                                  -230106;1;0;false;false;;;;;;
                                  -230107;1;0;false;false;0;0;0;;;
                                  -230108;1;0;false;false;;;;;;
                                  -230109;3;1;false;false;127;0;85;;;
                                  -230112;1;0;false;false;;;;;;
                                  -230113;23;0;false;false;0;0;0;;;
                                  -230136;1;0;false;false;;;;;;
                                  -230137;19;0;false;false;0;0;0;;;
                                  -230156;3;0;false;false;;;;;;
                                  -230159;1;0;false;false;0;0;0;;;
                                  -230160;3;0;false;false;;;;;;
                                  -230163;27;0;false;false;0;0;0;;;
                                  -230190;1;0;false;false;;;;;;
                                  -230191;6;0;false;false;0;0;0;;;
                                  -230197;1;0;false;false;;;;;;
                                  -230198;15;0;false;false;0;0;0;;;
                                  -230213;2;0;false;false;;;;;;
                                  -230215;1;0;false;false;0;0;0;;;
                                  -230216;2;0;false;false;;;;;;
                                  -230218;3;0;false;false;63;95;191;;;
                                  -230221;3;0;false;false;;;;;;
                                  -230224;1;0;false;false;63;95;191;;;
                                  -230225;1;0;false;false;;;;;;
                                  -230226;4;0;false;false;63;95;191;;;
                                  -230230;1;0;false;false;;;;;;
                                  -230231;3;0;false;false;63;95;191;;;
                                  -230234;1;0;false;false;;;;;;
                                  -230235;7;0;false;false;63;95;191;;;
                                  -230242;1;0;false;false;;;;;;
                                  -230243;14;0;false;false;63;95;191;;;
                                  -230257;1;0;false;false;;;;;;
                                  -230258;2;0;false;false;63;95;191;;;
                                  -230260;1;0;false;false;;;;;;
                                  -230261;3;0;false;false;63;95;191;;;
                                  -230264;1;0;false;false;;;;;;
                                  -230265;3;0;false;false;63;95;191;;;
                                  -230268;1;0;false;false;;;;;;
                                  -230269;4;0;false;false;63;95;191;;;
                                  -230273;1;0;false;false;;;;;;
                                  -230274;8;0;false;false;63;95;191;;;
                                  -230282;3;0;false;false;;;;;;
                                  -230285;1;0;false;false;63;95;191;;;
                                  -230286;1;0;false;false;;;;;;
                                  -230287;3;0;false;false;127;127;159;;;
                                  -230290;3;0;false;false;;;;;;
                                  -230293;1;0;false;false;63;95;191;;;
                                  -230294;3;0;false;false;;;;;;
                                  -230297;1;0;false;false;63;95;191;;;
                                  -230298;1;0;false;false;;;;;;
                                  -230299;7;1;false;false;127;159;191;;;
                                  -230306;10;0;false;false;63;95;191;;;
                                  -230316;1;0;false;false;;;;;;
                                  -230317;17;0;false;false;63;95;191;;;
                                  -230334;1;0;false;false;;;;;;
                                  -230335;14;0;false;false;63;95;191;;;
                                  -230349;1;0;false;false;;;;;;
                                  -230350;2;0;false;false;63;95;191;;;
                                  -230352;1;0;false;false;;;;;;
                                  -230353;3;0;false;false;63;95;191;;;
                                  -230356;1;0;false;false;;;;;;
                                  -230357;3;0;false;false;63;95;191;;;
                                  -230360;1;0;false;false;;;;;;
                                  -230361;4;0;false;false;63;95;191;;;
                                  -230365;1;0;false;false;;;;;;
                                  -230366;8;0;false;false;63;95;191;;;
                                  -230374;3;0;false;false;;;;;;
                                  -230377;1;0;false;false;63;95;191;;;
                                  -230378;1;0;false;false;;;;;;
                                  -230379;11;1;false;false;127;159;191;;;
                                  -230390;12;0;false;false;63;95;191;;;
                                  -230402;1;0;false;false;;;;;;
                                  -230403;4;0;false;false;127;127;159;;;
                                  -230407;3;0;false;false;;;;;;
                                  -230410;1;0;false;false;63;95;191;;;
                                  -230411;4;0;false;false;;;;;;
                                  -230415;4;0;false;false;127;127;159;;;
                                  -230419;21;0;false;false;63;95;191;;;
                                  -230440;1;0;false;false;;;;;;
                                  -230441;1;0;false;false;127;127;159;;;
                                  -230442;1;0;false;false;;;;;;
                                  -230443;2;0;false;false;63;95;191;;;
                                  -230445;1;0;false;false;;;;;;
                                  -230446;3;0;false;false;63;95;191;;;
                                  -230449;1;0;false;false;;;;;;
                                  -230450;8;0;false;false;63;95;191;;;
                                  -230458;1;0;false;false;;;;;;
                                  -230459;3;0;false;false;63;95;191;;;
                                  -230462;1;0;false;false;;;;;;
                                  -230463;4;0;false;false;63;95;191;;;
                                  -230467;1;0;false;false;;;;;;
                                  -230468;8;0;false;false;63;95;191;;;
                                  -230476;5;0;false;false;127;127;159;;;
                                  -230481;3;0;false;false;;;;;;
                                  -230484;1;0;false;false;63;95;191;;;
                                  -230485;4;0;false;false;;;;;;
                                  -230489;4;0;false;false;127;127;159;;;
                                  -230493;27;0;false;false;63;95;191;;;
                                  -230520;1;0;false;false;;;;;;
                                  -230521;1;0;false;false;127;127;159;;;
                                  -230522;1;0;false;false;;;;;;
                                  -230523;2;0;false;false;63;95;191;;;
                                  -230525;1;0;false;false;;;;;;
                                  -230526;3;0;false;false;63;95;191;;;
                                  -230529;1;0;false;false;;;;;;
                                  -230530;6;0;false;false;63;95;191;;;
                                  -230536;1;0;false;false;;;;;;
                                  -230537;4;0;false;false;63;95;191;;;
                                  -230541;1;0;false;false;;;;;;
                                  -230542;3;0;false;false;63;95;191;;;
                                  -230545;1;0;false;false;;;;;;
                                  -230546;6;0;false;false;63;95;191;;;
                                  -230552;1;0;false;false;;;;;;
                                  -230553;4;0;false;false;63;95;191;;;
                                  -230557;1;0;false;false;;;;;;
                                  -230558;7;0;false;false;63;95;191;;;
                                  -230565;1;0;false;false;;;;;;
                                  -230566;3;0;false;false;63;95;191;;;
                                  -230569;1;0;false;false;;;;;;
                                  -230570;8;0;false;false;63;95;191;;;
                                  -230578;5;0;false;false;127;127;159;;;
                                  -230583;3;0;false;false;;;;;;
                                  -230586;1;0;false;false;63;95;191;;;
                                  -230587;1;0;false;false;;;;;;
                                  -230588;5;0;false;false;127;127;159;;;
                                  -230593;3;0;false;false;;;;;;
                                  -230596;1;0;false;false;63;95;191;;;
                                  -230597;1;0;false;false;;;;;;
                                  -230598;11;1;false;false;127;159;191;;;
                                  -230609;24;0;false;false;63;95;191;;;
                                  -230633;1;0;false;false;;;;;;
                                  -230634;4;0;false;false;127;127;159;;;
                                  -230638;3;0;false;false;;;;;;
                                  -230641;1;0;false;false;63;95;191;;;
                                  -230642;4;0;false;false;;;;;;
                                  -230646;4;0;false;false;127;127;159;;;
                                  -230650;19;0;false;false;63;95;191;;;
                                  -230669;1;0;false;false;;;;;;
                                  -230670;4;0;false;false;63;95;191;;;
                                  -230674;1;0;false;false;;;;;;
                                  -230675;8;0;false;false;63;95;191;;;
                                  -230683;1;0;false;false;;;;;;
                                  -230684;2;0;false;false;63;95;191;;;
                                  -230686;1;0;false;false;;;;;;
                                  -230687;4;0;false;false;63;95;191;;;
                                  -230691;5;0;false;false;127;127;159;;;
                                  -230696;3;0;false;false;;;;;;
                                  -230699;1;0;false;false;63;95;191;;;
                                  -230700;1;0;false;false;;;;;;
                                  -230701;5;0;false;false;127;127;159;;;
                                  -230706;3;0;false;false;;;;;;
                                  -230709;2;0;false;false;63;95;191;;;
                                  -230711;2;0;false;false;;;;;;
                                  -230713;6;1;false;false;127;0;85;;;
                                  -230719;1;0;false;false;;;;;;
                                  -230720;4;1;false;false;127;0;85;;;
                                  -230724;1;0;false;false;;;;;;
                                  -230725;28;0;false;false;0;0;0;;;
                                  -230753;1;0;false;false;;;;;;
                                  -230754;11;0;false;false;0;0;0;;;
                                  -230765;1;0;false;false;;;;;;
                                  -230766;1;0;false;false;0;0;0;;;
                                  -230767;3;0;false;false;;;;;;
                                  -230770;14;0;false;false;0;0;0;;;
                                  -230784;4;0;false;false;;;;;;
                                  -230788;2;1;false;false;127;0;85;;;
                                  -230790;1;0;false;false;;;;;;
                                  -230791;11;0;false;false;0;0;0;;;
                                  -230802;1;0;false;false;;;;;;
                                  -230803;2;0;false;false;0;0;0;;;
                                  -230805;1;0;false;false;;;;;;
                                  -230806;4;1;false;false;127;0;85;;;
                                  -230810;1;0;false;false;0;0;0;;;
                                  -230811;1;0;false;false;;;;;;
                                  -230812;1;0;false;false;0;0;0;;;
                                  -230813;4;0;false;false;;;;;;
                                  -230817;35;0;false;false;0;0;0;;;
                                  -230852;3;0;false;false;;;;;;
                                  -230855;1;0;false;false;0;0;0;;;
                                  -230856;3;0;false;false;;;;;;
                                  -230859;2;1;false;false;127;0;85;;;
                                  -230861;1;0;false;false;;;;;;
                                  -230862;8;0;false;false;0;0;0;;;
                                  -230870;1;0;false;false;;;;;;
                                  -230871;2;0;false;false;0;0;0;;;
                                  -230873;1;0;false;false;;;;;;
                                  -230874;4;1;false;false;127;0;85;;;
                                  -230878;1;0;false;false;0;0;0;;;
                                  -230879;1;0;false;false;;;;;;
                                  -230880;1;0;false;false;0;0;0;;;
                                  -230881;4;0;false;false;;;;;;
                                  -230885;53;0;false;false;0;0;0;;;
                                  -230938;3;0;false;false;;;;;;
                                  -230941;1;0;false;false;0;0;0;;;
                                  -230942;4;0;false;false;;;;;;
                                  -230946;14;0;false;false;0;0;0;;;
                                  -230960;1;0;false;false;;;;;;
                                  -230961;1;0;false;false;0;0;0;;;
                                  -230962;1;0;false;false;;;;;;
                                  -230963;11;0;false;false;0;0;0;;;
                                  -230974;3;0;false;false;;;;;;
                                  -230977;2;1;false;false;127;0;85;;;
                                  -230979;1;0;false;false;;;;;;
                                  -230980;10;0;false;false;0;0;0;;;
                                  -230990;1;0;false;false;;;;;;
                                  -230991;1;0;false;false;0;0;0;;;
                                  -230992;4;0;false;false;;;;;;
                                  -230996;7;0;false;false;0;0;0;;;
                                  -231003;1;0;false;false;;;;;;
                                  -231004;1;0;false;false;0;0;0;;;
                                  -231005;1;0;false;false;;;;;;
                                  -231006;3;1;false;false;127;0;85;;;
                                  -231009;1;0;false;false;;;;;;
                                  -231010;24;0;false;false;0;0;0;;;
                                  -231034;1;0;false;false;;;;;;
                                  -231035;16;0;false;false;0;0;0;;;
                                  -231051;3;0;false;false;;;;;;
                                  -231054;1;0;false;false;0;0;0;;;
                                  -231055;3;0;false;false;;;;;;
                                  -231058;4;1;false;false;127;0;85;;;
                                  -231062;1;0;false;false;;;;;;
                                  -231063;1;0;false;false;0;0;0;;;
                                  -231064;4;0;false;false;;;;;;
                                  -231068;7;0;false;false;0;0;0;;;
                                  -231075;1;0;false;false;;;;;;
                                  -231076;1;0;false;false;0;0;0;;;
                                  -231077;1;0;false;false;;;;;;
                                  -231078;15;0;false;false;0;0;0;;;
                                  -231093;3;0;false;false;;;;;;
                                  -231096;1;0;false;false;0;0;0;;;
                                  -231097;3;0;false;false;;;;;;
                                  -231100;50;0;false;false;0;0;0;;;
                                  -231150;3;0;false;false;;;;;;
                                  -231153;8;0;false;false;0;0;0;;;
                                  -231161;2;0;false;false;;;;;;
                                  -231163;1;0;false;false;0;0;0;;;
                                  -231164;2;0;false;false;;;;;;
                                  -231166;3;0;false;false;63;95;191;;;
                                  -231169;3;0;false;false;;;;;;
                                  -231172;1;0;false;false;63;95;191;;;
                                  -231173;1;0;false;false;;;;;;
                                  -231174;4;0;false;false;63;95;191;;;
                                  -231178;1;0;false;false;;;;;;
                                  -231179;3;0;false;false;63;95;191;;;
                                  -231182;1;0;false;false;;;;;;
                                  -231183;10;0;false;false;63;95;191;;;
                                  -231193;1;0;false;false;;;;;;
                                  -231194;6;0;false;false;63;95;191;;;
                                  -231200;1;0;false;false;;;;;;
                                  -231201;2;0;false;false;63;95;191;;;
                                  -231203;1;0;false;false;;;;;;
                                  -231204;3;0;false;false;63;95;191;;;
                                  -231207;1;0;false;false;;;;;;
                                  -231208;6;0;false;false;63;95;191;;;
                                  -231214;1;0;false;false;;;;;;
                                  -231215;9;0;false;false;63;95;191;;;
                                  -231224;1;0;false;false;;;;;;
                                  -231225;2;0;false;false;63;95;191;;;
                                  -231227;1;0;false;false;;;;;;
                                  -231228;3;0;false;false;63;95;191;;;
                                  -231231;3;0;false;false;;;;;;
                                  -231234;1;0;false;false;63;95;191;;;
                                  -231235;1;0;false;false;;;;;;
                                  -231236;9;0;false;false;63;95;191;;;
                                  -231245;2;0;false;false;;;;;;
                                  -231247;10;0;false;false;63;95;191;;;
                                  -231257;1;0;false;false;;;;;;
                                  -231258;2;0;false;false;63;95;191;;;
                                  -231260;1;0;false;false;;;;;;
                                  -231261;6;0;false;false;63;95;191;;;
                                  -231267;1;0;false;false;;;;;;
                                  -231268;3;0;false;false;63;95;191;;;
                                  -231271;1;0;false;false;;;;;;
                                  -231272;4;0;false;false;63;95;191;;;
                                  -231276;1;0;false;false;;;;;;
                                  -231277;4;0;false;false;63;95;191;;;
                                  -231281;1;0;false;false;;;;;;
                                  -231282;5;0;false;false;63;95;191;;;
                                  -231287;1;0;false;false;;;;;;
                                  -231288;3;0;false;false;63;95;191;;;
                                  -231291;4;0;false;false;;;;;;
                                  -231295;1;0;false;false;63;95;191;;;
                                  -231296;1;0;false;false;;;;;;
                                  -231297;10;0;false;false;63;95;191;;;
                                  -231307;1;0;false;false;;;;;;
                                  -231308;6;0;false;false;63;95;191;;;
                                  -231314;1;0;false;false;;;;;;
                                  -231315;4;0;false;false;63;95;191;;;
                                  -231319;1;0;false;false;;;;;;
                                  -231320;2;0;false;false;63;95;191;;;
                                  -231322;1;0;false;false;;;;;;
                                  -231323;5;0;false;false;63;95;191;;;
                                  -231328;1;0;false;false;;;;;;
                                  -231329;2;0;false;false;63;95;191;;;
                                  -231331;1;0;false;false;;;;;;
                                  -231332;3;0;false;false;63;95;191;;;
                                  -231335;1;0;false;false;;;;;;
                                  -231336;7;0;false;false;63;95;191;;;
                                  -231343;1;0;false;false;;;;;;
                                  -231344;7;0;false;false;63;95;191;;;
                                  -231351;3;0;false;false;;;;;;
                                  -231354;1;0;false;false;63;95;191;;;
                                  -231355;3;0;false;false;;;;;;
                                  -231358;1;0;false;false;63;95;191;;;
                                  -231359;1;0;false;false;;;;;;
                                  -231360;5;1;false;false;127;159;191;;;
                                  -231365;41;0;false;false;63;95;191;;;
                                  -231406;3;0;false;false;;;;;;
                                  -231409;2;0;false;false;63;95;191;;;
                                  -231411;2;0;false;false;;;;;;
                                  -231413;6;1;false;false;127;0;85;;;
                                  -231419;1;0;false;false;;;;;;
                                  -231420;4;1;false;false;127;0;85;;;
                                  -231424;1;0;false;false;;;;;;
                                  -231425;9;0;false;false;0;0;0;;;
                                  -231434;1;0;false;false;;;;;;
                                  -231435;7;0;false;false;0;0;0;;;
                                  -231442;1;0;false;false;;;;;;
                                  -231443;7;0;false;false;0;0;0;;;
                                  -231450;1;0;false;false;;;;;;
                                  -231451;1;0;false;false;0;0;0;;;
                                  -231452;3;0;false;false;;;;;;
                                  -231455;2;1;false;false;127;0;85;;;
                                  -231457;1;0;false;false;;;;;;
                                  -231458;7;0;false;false;0;0;0;;;
                                  -231465;1;0;false;false;;;;;;
                                  -231466;2;0;false;false;0;0;0;;;
                                  -231468;1;0;false;false;;;;;;
                                  -231469;4;1;false;false;127;0;85;;;
                                  -231473;1;0;false;false;0;0;0;;;
                                  -231474;1;0;false;false;;;;;;
                                  -231475;1;0;false;false;0;0;0;;;
                                  -231476;4;0;false;false;;;;;;
                                  -231480;5;1;false;false;127;0;85;;;
                                  -231485;24;0;false;false;0;0;0;;;
                                  -231509;3;0;false;false;;;;;;
                                  -231512;1;0;false;false;0;0;0;;;
                                  -231513;1;0;false;false;;;;;;
                                  -231514;4;1;false;false;127;0;85;;;
                                  -231518;1;0;false;false;;;;;;
                                  -231519;1;0;false;false;0;0;0;;;
                                  -231520;4;0;false;false;;;;;;
                                  -231524;5;1;false;false;127;0;85;;;
                                  -231529;19;0;false;false;0;0;0;;;
                                  -231548;3;0;false;false;;;;;;
                                  -231551;1;0;false;false;0;0;0;;;
                                  -231552;2;0;false;false;;;;;;
                                  -231554;1;0;false;false;0;0;0;;;
                                  -231555;2;0;false;false;;;;;;
                                  -231557;3;0;false;false;63;95;191;;;
                                  -231560;4;0;false;false;;;;;;
                                  -231564;1;0;false;false;63;95;191;;;
                                  -231565;1;0;false;false;;;;;;
                                  -231566;4;0;false;false;63;95;191;;;
                                  -231570;1;0;false;false;;;;;;
                                  -231571;7;0;false;false;63;95;191;;;
                                  -231578;1;0;false;false;;;;;;
                                  -231579;3;0;false;false;63;95;191;;;
                                  -231582;1;0;false;false;;;;;;
                                  -231583;6;0;false;false;63;95;191;;;
                                  -231589;1;0;false;false;;;;;;
                                  -231590;10;0;false;false;63;95;191;;;
                                  -231600;1;0;false;false;;;;;;
                                  -231601;6;0;false;false;63;95;191;;;
                                  -231607;1;0;false;false;;;;;;
                                  -231608;5;0;false;false;63;95;191;;;
                                  -231613;1;0;false;false;;;;;;
                                  -231614;5;0;false;false;63;95;191;;;
                                  -231619;1;0;false;false;;;;;;
                                  -231620;9;0;false;false;63;95;191;;;
                                  -231629;3;0;false;false;;;;;;
                                  -231632;1;0;false;false;63;95;191;;;
                                  -231633;1;0;false;false;;;;;;
                                  -231634;4;0;false;false;127;127;159;;;
                                  -231638;3;0;false;false;;;;;;
                                  -231641;1;0;false;false;63;95;191;;;
                                  -231642;3;0;false;false;;;;;;
                                  -231645;1;0;false;false;63;95;191;;;
                                  -231646;1;0;false;false;;;;;;
                                  -231647;7;1;false;false;127;159;191;;;
                                  -231654;6;0;false;false;63;95;191;;;
                                  -231660;1;0;false;false;;;;;;
                                  -231661;2;0;false;false;63;95;191;;;
                                  -231663;1;0;false;false;;;;;;
                                  -231664;4;0;false;false;63;95;191;;;
                                  -231668;1;0;false;false;;;;;;
                                  -231669;6;0;false;false;63;95;191;;;
                                  -231675;1;0;false;false;;;;;;
                                  -231676;8;0;false;false;63;95;191;;;
                                  -231684;1;0;false;false;;;;;;
                                  -231685;1;0;false;false;63;95;191;;;
                                  -231686;1;0;false;false;;;;;;
                                  -231687;4;0;false;false;63;95;191;;;
                                  -231691;1;0;false;false;;;;;;
                                  -231692;7;0;false;false;63;95;191;;;
                                  -231699;1;0;false;false;;;;;;
                                  -231700;3;0;false;false;63;95;191;;;
                                  -231703;1;0;false;false;;;;;;
                                  -231704;5;0;false;false;63;95;191;;;
                                  -231709;1;0;false;false;;;;;;
                                  -231710;2;0;false;false;63;95;191;;;
                                  -231712;1;0;false;false;;;;;;
                                  -231713;5;0;false;false;63;95;191;;;
                                  -231718;3;0;false;false;;;;;;
                                  -231721;1;0;false;false;63;95;191;;;
                                  -231722;2;0;false;false;;;;;;
                                  -231724;6;0;false;false;63;95;191;;;
                                  -231730;1;0;false;false;;;;;;
                                  -231731;6;0;false;false;63;95;191;;;
                                  -231737;1;0;false;false;;;;;;
                                  -231738;4;0;false;false;63;95;191;;;
                                  -231742;1;0;false;false;;;;;;
                                  -231743;3;0;false;false;63;95;191;;;
                                  -231746;1;0;false;false;;;;;;
                                  -231747;4;0;false;false;63;95;191;;;
                                  -231751;1;0;false;false;;;;;;
                                  -231752;6;0;false;false;63;95;191;;;
                                  -231758;1;0;false;false;;;;;;
                                  -231759;2;0;false;false;63;95;191;;;
                                  -231761;1;0;false;false;;;;;;
                                  -231762;7;0;false;false;63;95;191;;;
                                  -231769;1;0;false;false;;;;;;
                                  -231770;5;0;false;false;63;95;191;;;
                                  -231775;1;0;false;false;;;;;;
                                  -231776;7;0;false;false;63;95;191;;;
                                  -231783;3;0;false;false;;;;;;
                                  -231786;1;0;false;false;63;95;191;;;
                                  -231787;1;0;false;false;;;;;;
                                  -231788;11;1;false;false;127;159;191;;;
                                  -231799;12;0;false;false;63;95;191;;;
                                  -231811;1;0;false;false;;;;;;
                                  -231812;4;0;false;false;127;127;159;;;
                                  -231816;3;0;false;false;;;;;;
                                  -231819;1;0;false;false;63;95;191;;;
                                  -231820;4;0;false;false;;;;;;
                                  -231824;4;0;false;false;127;127;159;;;
                                  -231828;21;0;false;false;63;95;191;;;
                                  -231849;1;0;false;false;;;;;;
                                  -231850;1;0;false;false;127;127;159;;;
                                  -231851;1;0;false;false;;;;;;
                                  -231852;2;0;false;false;63;95;191;;;
                                  -231854;1;0;false;false;;;;;;
                                  -231855;3;0;false;false;63;95;191;;;
                                  -231858;1;0;false;false;;;;;;
                                  -231859;8;0;false;false;63;95;191;;;
                                  -231867;1;0;false;false;;;;;;
                                  -231868;3;0;false;false;63;95;191;;;
                                  -231871;1;0;false;false;;;;;;
                                  -231872;4;0;false;false;63;95;191;;;
                                  -231876;1;0;false;false;;;;;;
                                  -231877;8;0;false;false;63;95;191;;;
                                  -231885;5;0;false;false;127;127;159;;;
                                  -231890;3;0;false;false;;;;;;
                                  -231893;1;0;false;false;63;95;191;;;
                                  -231894;4;0;false;false;;;;;;
                                  -231898;4;0;false;false;127;127;159;;;
                                  -231902;27;0;false;false;63;95;191;;;
                                  -231929;1;0;false;false;;;;;;
                                  -231930;1;0;false;false;127;127;159;;;
                                  -231931;1;0;false;false;;;;;;
                                  -231932;2;0;false;false;63;95;191;;;
                                  -231934;1;0;false;false;;;;;;
                                  -231935;3;0;false;false;63;95;191;;;
                                  -231938;1;0;false;false;;;;;;
                                  -231939;6;0;false;false;63;95;191;;;
                                  -231945;1;0;false;false;;;;;;
                                  -231946;4;0;false;false;63;95;191;;;
                                  -231950;1;0;false;false;;;;;;
                                  -231951;3;0;false;false;63;95;191;;;
                                  -231954;1;0;false;false;;;;;;
                                  -231955;6;0;false;false;63;95;191;;;
                                  -231961;1;0;false;false;;;;;;
                                  -231962;4;0;false;false;63;95;191;;;
                                  -231966;1;0;false;false;;;;;;
                                  -231967;7;0;false;false;63;95;191;;;
                                  -231974;1;0;false;false;;;;;;
                                  -231975;3;0;false;false;63;95;191;;;
                                  -231978;1;0;false;false;;;;;;
                                  -231979;8;0;false;false;63;95;191;;;
                                  -231987;5;0;false;false;127;127;159;;;
                                  -231992;3;0;false;false;;;;;;
                                  -231995;1;0;false;false;63;95;191;;;
                                  -231996;1;0;false;false;;;;;;
                                  -231997;5;0;false;false;127;127;159;;;
                                  -232002;3;0;false;false;;;;;;
                                  -232005;2;0;false;false;63;95;191;;;
                                  -232007;2;0;false;false;;;;;;
                                  -232009;6;1;false;false;127;0;85;;;
                                  -232015;1;0;false;false;;;;;;
                                  -232016;4;1;false;false;127;0;85;;;
                                  -232020;1;0;false;false;;;;;;
                                  -232021;22;0;false;false;0;0;0;;;
                                  -232043;7;1;false;false;127;0;85;;;
                                  -232050;1;0;false;false;;;;;;
                                  -232051;7;0;false;false;0;0;0;;;
                                  -232058;1;0;false;false;;;;;;
                                  -232059;1;0;false;false;0;0;0;;;
                                  -232060;3;0;false;false;;;;;;
                                  -232063;14;0;false;false;0;0;0;;;
                                  -232077;3;0;false;false;;;;;;
                                  -232080;18;0;false;false;0;0;0;;;
                                  -232098;1;0;false;false;;;;;;
                                  -232099;1;0;false;false;0;0;0;;;
                                  -232100;1;0;false;false;;;;;;
                                  -232101;7;0;false;false;0;0;0;;;
                                  -232108;2;0;false;false;;;;;;
                                  -232110;1;0;false;false;0;0;0;;;
                                  -232111;2;0;false;false;;;;;;
                                  -232113;3;0;false;false;63;95;191;;;
                                  -232116;3;0;false;false;;;;;;
                                  -232119;1;0;false;false;63;95;191;;;
                                  -232120;1;0;false;false;;;;;;
                                  -232121;4;0;false;false;63;95;191;;;
                                  -232125;1;0;false;false;;;;;;
                                  -232126;7;0;false;false;63;95;191;;;
                                  -232133;1;0;false;false;;;;;;
                                  -232134;3;0;false;false;63;95;191;;;
                                  -232137;1;0;false;false;;;;;;
                                  -232138;6;0;false;false;63;95;191;;;
                                  -232144;1;0;false;false;;;;;;
                                  -232145;7;0;false;false;63;95;191;;;
                                  -232152;1;0;false;false;;;;;;
                                  -232153;3;0;false;false;63;95;191;;;
                                  -232156;1;0;false;false;;;;;;
                                  -232157;2;0;false;false;63;95;191;;;
                                  -232159;1;0;false;false;;;;;;
                                  -232160;7;0;false;false;63;95;191;;;
                                  -232167;3;0;false;false;;;;;;
                                  -232170;1;0;false;false;63;95;191;;;
                                  -232171;1;0;false;false;;;;;;
                                  -232172;4;0;false;false;127;127;159;;;
                                  -232176;3;0;false;false;;;;;;
                                  -232179;1;0;false;false;63;95;191;;;
                                  -232180;3;0;false;false;;;;;;
                                  -232183;1;0;false;false;63;95;191;;;
                                  -232184;1;0;false;false;;;;;;
                                  -232185;7;1;false;false;127;159;191;;;
                                  -232192;8;0;false;false;63;95;191;;;
                                  -232200;1;0;false;false;;;;;;
                                  -232201;2;0;false;false;63;95;191;;;
                                  -232203;1;0;false;false;;;;;;
                                  -232204;4;0;false;false;63;95;191;;;
                                  -232208;1;0;false;false;;;;;;
                                  -232209;7;0;false;false;63;95;191;;;
                                  -232216;1;0;false;false;;;;;;
                                  -232217;3;0;false;false;63;95;191;;;
                                  -232220;1;0;false;false;;;;;;
                                  -232221;2;0;false;false;63;95;191;;;
                                  -232223;1;0;false;false;;;;;;
                                  -232224;7;0;false;false;63;95;191;;;
                                  -232231;1;0;false;false;;;;;;
                                  -232232;2;0;false;false;63;95;191;;;
                                  -232234;1;0;false;false;;;;;;
                                  -232235;5;0;false;false;63;95;191;;;
                                  -232240;1;0;false;false;;;;;;
                                  -232241;7;0;false;false;63;95;191;;;
                                  -232248;1;0;false;false;;;;;;
                                  -232249;3;0;false;false;63;95;191;;;
                                  -232252;1;0;false;false;;;;;;
                                  -232253;3;0;false;false;63;95;191;;;
                                  -232256;1;0;false;false;;;;;;
                                  -232257;2;0;false;false;63;95;191;;;
                                  -232259;4;0;false;false;;;;;;
                                  -232263;1;0;false;false;63;95;191;;;
                                  -232264;2;0;false;false;;;;;;
                                  -232266;6;0;false;false;63;95;191;;;
                                  -232272;3;0;false;false;;;;;;
                                  -232275;1;0;false;false;63;95;191;;;
                                  -232276;1;0;false;false;;;;;;
                                  -232277;11;1;false;false;127;159;191;;;
                                  -232288;12;0;false;false;63;95;191;;;
                                  -232300;1;0;false;false;;;;;;
                                  -232301;4;0;false;false;127;127;159;;;
                                  -232305;3;0;false;false;;;;;;
                                  -232308;1;0;false;false;63;95;191;;;
                                  -232309;4;0;false;false;;;;;;
                                  -232313;4;0;false;false;127;127;159;;;
                                  -232317;21;0;false;false;63;95;191;;;
                                  -232338;1;0;false;false;;;;;;
                                  -232339;1;0;false;false;127;127;159;;;
                                  -232340;1;0;false;false;;;;;;
                                  -232341;2;0;false;false;63;95;191;;;
                                  -232343;1;0;false;false;;;;;;
                                  -232344;3;0;false;false;63;95;191;;;
                                  -232347;1;0;false;false;;;;;;
                                  -232348;8;0;false;false;63;95;191;;;
                                  -232356;1;0;false;false;;;;;;
                                  -232357;3;0;false;false;63;95;191;;;
                                  -232360;1;0;false;false;;;;;;
                                  -232361;4;0;false;false;63;95;191;;;
                                  -232365;1;0;false;false;;;;;;
                                  -232366;8;0;false;false;63;95;191;;;
                                  -232374;5;0;false;false;127;127;159;;;
                                  -232379;3;0;false;false;;;;;;
                                  -232382;1;0;false;false;63;95;191;;;
                                  -232383;4;0;false;false;;;;;;
                                  -232387;4;0;false;false;127;127;159;;;
                                  -232391;27;0;false;false;63;95;191;;;
                                  -232418;1;0;false;false;;;;;;
                                  -232419;1;0;false;false;127;127;159;;;
                                  -232420;1;0;false;false;;;;;;
                                  -232421;2;0;false;false;63;95;191;;;
                                  -232423;1;0;false;false;;;;;;
                                  -232424;3;0;false;false;63;95;191;;;
                                  -232427;1;0;false;false;;;;;;
                                  -232428;6;0;false;false;63;95;191;;;
                                  -232434;1;0;false;false;;;;;;
                                  -232435;4;0;false;false;63;95;191;;;
                                  -232439;1;0;false;false;;;;;;
                                  -232440;3;0;false;false;63;95;191;;;
                                  -232443;1;0;false;false;;;;;;
                                  -232444;6;0;false;false;63;95;191;;;
                                  -232450;1;0;false;false;;;;;;
                                  -232451;4;0;false;false;63;95;191;;;
                                  -232455;1;0;false;false;;;;;;
                                  -232456;7;0;false;false;63;95;191;;;
                                  -232463;1;0;false;false;;;;;;
                                  -232464;3;0;false;false;63;95;191;;;
                                  -232467;1;0;false;false;;;;;;
                                  -232468;8;0;false;false;63;95;191;;;
                                  -232476;5;0;false;false;127;127;159;;;
                                  -232481;3;0;false;false;;;;;;
                                  -232484;1;0;false;false;63;95;191;;;
                                  -232485;1;0;false;false;;;;;;
                                  -232486;5;0;false;false;127;127;159;;;
                                  -232491;3;0;false;false;;;;;;
                                  -232494;2;0;false;false;63;95;191;;;
                                  -232496;2;0;false;false;;;;;;
                                  -232498;6;1;false;false;127;0;85;;;
                                  -232504;1;0;false;false;;;;;;
                                  -232505;4;1;false;false;127;0;85;;;
                                  -232509;1;0;false;false;;;;;;
                                  -232510;12;0;false;false;0;0;0;;;
                                  -232522;7;1;false;false;127;0;85;;;
                                  -232529;1;0;false;false;;;;;;
                                  -232530;9;0;false;false;0;0;0;;;
                                  -232539;1;0;false;false;;;;;;
                                  -232540;1;0;false;false;0;0;0;;;
                                  -232541;3;0;false;false;;;;;;
                                  -232544;14;0;false;false;0;0;0;;;
                                  -232558;3;0;false;false;;;;;;
                                  -232561;4;1;false;false;127;0;85;;;
                                  -232565;9;0;false;false;0;0;0;;;
                                  -232574;1;0;false;false;;;;;;
                                  -232575;1;0;false;false;0;0;0;;;
                                  -232576;1;0;false;false;;;;;;
                                  -232577;9;0;false;false;0;0;0;;;
                                  -232586;2;0;false;false;;;;;;
                                  -232588;1;0;false;false;0;0;0;;;
                                  -232589;2;0;false;false;;;;;;
                                  -232591;3;0;false;false;63;95;191;;;
                                  -232594;3;0;false;false;;;;;;
                                  -232597;1;0;false;false;63;95;191;;;
                                  -232598;1;0;false;false;;;;;;
                                  -232599;4;0;false;false;63;95;191;;;
                                  -232603;1;0;false;false;;;;;;
                                  -232604;1;0;false;false;63;95;191;;;
                                  -232605;1;0;false;false;;;;;;
                                  -232606;3;0;false;false;63;95;191;;;
                                  -232609;1;0;false;false;;;;;;
                                  -232610;4;0;false;false;63;95;191;;;
                                  -232614;1;0;false;false;;;;;;
                                  -232615;2;0;false;false;63;95;191;;;
                                  -232617;1;0;false;false;;;;;;
                                  -232618;6;0;false;false;63;95;191;;;
                                  -232624;1;0;false;false;;;;;;
                                  -232625;4;0;false;false;63;95;191;;;
                                  -232629;1;0;false;false;;;;;;
                                  -232630;5;0;false;false;63;95;191;;;
                                  -232635;3;0;false;false;;;;;;
                                  -232638;1;0;false;false;63;95;191;;;
                                  -232639;1;0;false;false;;;;;;
                                  -232640;3;0;false;false;127;127;159;;;
                                  -232643;3;0;false;false;;;;;;
                                  -232646;1;0;false;false;63;95;191;;;
                                  -232647;1;0;false;false;;;;;;
                                  -232648;3;0;false;false;127;127;159;;;
                                  -232651;5;0;false;false;63;95;191;;;
                                  -232656;4;0;false;false;127;127;159;;;
                                  -232660;1;0;false;false;;;;;;
                                  -232661;6;0;false;false;63;95;191;;;
                                  -232667;1;0;false;false;;;;;;
                                  -232668;5;0;false;false;63;95;191;;;
                                  -232673;1;0;false;false;;;;;;
                                  -232674;3;0;false;false;63;95;191;;;
                                  -232677;1;0;false;false;;;;;;
                                  -232678;3;0;false;false;63;95;191;;;
                                  -232681;1;0;false;false;;;;;;
                                  -232682;9;0;false;false;63;95;191;;;
                                  -232691;1;0;false;false;;;;;;
                                  -232692;6;0;false;false;63;95;191;;;
                                  -232698;1;0;false;false;;;;;;
                                  -232699;4;0;false;false;63;95;191;;;
                                  -232703;1;0;false;false;;;;;;
                                  -232704;4;0;false;false;63;95;191;;;
                                  -232708;1;0;false;false;;;;;;
                                  -232709;2;0;false;false;63;95;191;;;
                                  -232711;1;0;false;false;;;;;;
                                  -232712;8;0;false;false;63;95;191;;;
                                  -232720;3;0;false;false;;;;;;
                                  -232723;1;0;false;false;63;95;191;;;
                                  -232724;1;0;false;false;;;;;;
                                  -232725;3;0;false;false;63;95;191;;;
                                  -232728;1;0;false;false;;;;;;
                                  -232729;3;0;false;false;63;95;191;;;
                                  -232732;1;0;false;false;;;;;;
                                  -232733;4;0;false;false;63;95;191;;;
                                  -232737;1;0;false;false;;;;;;
                                  -232738;8;0;false;false;63;95;191;;;
                                  -232746;1;0;false;false;;;;;;
                                  -232747;2;0;false;false;63;95;191;;;
                                  -232749;1;0;false;false;;;;;;
                                  -232750;7;0;false;false;63;95;191;;;
                                  -232757;1;0;false;false;;;;;;
                                  -232758;6;0;false;false;63;95;191;;;
                                  -232764;3;0;false;false;;;;;;
                                  -232767;1;0;false;false;63;95;191;;;
                                  -232768;1;0;false;false;;;;;;
                                  -232769;4;0;false;false;127;127;159;;;
                                  -232773;3;0;false;false;;;;;;
                                  -232776;1;0;false;false;63;95;191;;;
                                  -232777;3;0;false;false;;;;;;
                                  -232780;1;0;false;false;63;95;191;;;
                                  -232781;1;0;false;false;;;;;;
                                  -232782;7;1;false;false;127;159;191;;;
                                  -232789;4;0;false;false;63;95;191;;;
                                  -232793;1;0;false;false;;;;;;
                                  -232794;3;0;false;false;63;95;191;;;
                                  -232797;1;0;false;false;;;;;;
                                  -232798;4;0;false;false;63;95;191;;;
                                  -232802;3;0;false;false;;;;;;
                                  -232805;1;0;false;false;63;95;191;;;
                                  -232806;1;0;false;false;;;;;;
                                  -232807;11;1;false;false;127;159;191;;;
                                  -232818;12;0;false;false;63;95;191;;;
                                  -232830;1;0;false;false;;;;;;
                                  -232831;4;0;false;false;127;127;159;;;
                                  -232835;3;0;false;false;;;;;;
                                  -232838;1;0;false;false;63;95;191;;;
                                  -232839;4;0;false;false;;;;;;
                                  -232843;4;0;false;false;127;127;159;;;
                                  -232847;21;0;false;false;63;95;191;;;
                                  -232868;1;0;false;false;;;;;;
                                  -232869;1;0;false;false;127;127;159;;;
                                  -232870;1;0;false;false;;;;;;
                                  -232871;2;0;false;false;63;95;191;;;
                                  -232873;1;0;false;false;;;;;;
                                  -232874;3;0;false;false;63;95;191;;;
                                  -232877;1;0;false;false;;;;;;
                                  -232878;8;0;false;false;63;95;191;;;
                                  -232886;1;0;false;false;;;;;;
                                  -232887;3;0;false;false;63;95;191;;;
                                  -232890;1;0;false;false;;;;;;
                                  -232891;4;0;false;false;63;95;191;;;
                                  -232895;1;0;false;false;;;;;;
                                  -232896;8;0;false;false;63;95;191;;;
                                  -232904;5;0;false;false;127;127;159;;;
                                  -232909;3;0;false;false;;;;;;
                                  -232912;1;0;false;false;63;95;191;;;
                                  -232913;4;0;false;false;;;;;;
                                  -232917;4;0;false;false;127;127;159;;;
                                  -232921;27;0;false;false;63;95;191;;;
                                  -232948;1;0;false;false;;;;;;
                                  -232949;1;0;false;false;127;127;159;;;
                                  -232950;1;0;false;false;;;;;;
                                  -232951;2;0;false;false;63;95;191;;;
                                  -232953;1;0;false;false;;;;;;
                                  -232954;3;0;false;false;63;95;191;;;
                                  -232957;1;0;false;false;;;;;;
                                  -232958;6;0;false;false;63;95;191;;;
                                  -232964;1;0;false;false;;;;;;
                                  -232965;4;0;false;false;63;95;191;;;
                                  -232969;1;0;false;false;;;;;;
                                  -232970;3;0;false;false;63;95;191;;;
                                  -232973;1;0;false;false;;;;;;
                                  -232974;6;0;false;false;63;95;191;;;
                                  -232980;1;0;false;false;;;;;;
                                  -232981;4;0;false;false;63;95;191;;;
                                  -232985;1;0;false;false;;;;;;
                                  -232986;7;0;false;false;63;95;191;;;
                                  -232993;1;0;false;false;;;;;;
                                  -232994;3;0;false;false;63;95;191;;;
                                  -232997;1;0;false;false;;;;;;
                                  -232998;8;0;false;false;63;95;191;;;
                                  -233006;5;0;false;false;127;127;159;;;
                                  -233011;3;0;false;false;;;;;;
                                  -233014;1;0;false;false;63;95;191;;;
                                  -233015;1;0;false;false;;;;;;
                                  -233016;5;0;false;false;127;127;159;;;
                                  -233021;3;0;false;false;;;;;;
                                  -233024;2;0;false;false;63;95;191;;;
                                  -233026;2;0;false;false;;;;;;
                                  -233028;6;1;false;false;127;0;85;;;
                                  -233034;1;0;false;false;;;;;;
                                  -233035;4;1;false;false;127;0;85;;;
                                  -233039;1;0;false;false;;;;;;
                                  -233040;12;0;false;false;0;0;0;;;
                                  -233052;1;0;false;false;;;;;;
                                  -233053;5;0;false;false;0;0;0;;;
                                  -233058;1;0;false;false;;;;;;
                                  -233059;1;0;false;false;0;0;0;;;
                                  -233060;3;0;false;false;;;;;;
                                  -233063;14;0;false;false;0;0;0;;;
                                  -233077;3;0;false;false;;;;;;
                                  -233080;3;1;false;false;127;0;85;;;
                                  -233083;1;0;false;false;;;;;;
                                  -233084;13;0;false;false;0;0;0;;;
                                  -233097;1;0;false;false;;;;;;
                                  -233098;1;0;false;false;0;0;0;;;
                                  -233099;1;0;false;false;;;;;;
                                  -233100;11;0;false;false;0;0;0;;;
                                  -233111;6;0;false;false;;;;;;
                                  -233117;5;1;false;false;127;0;85;;;
                                  -233122;15;0;false;false;0;0;0;;;
                                  -233137;4;0;false;false;;;;;;
                                  -233141;21;0;false;false;0;0;0;;;
                                  -233162;3;0;false;false;;;;;;
                                  -233165;47;0;false;false;63;127;95;;;
                                  -233212;1;0;false;false;;;;;;
                                  -233213;2;1;false;false;127;0;85;;;
                                  -233215;1;0;false;false;;;;;;
                                  -233216;11;0;false;false;0;0;0;;;
                                  -233227;1;0;false;false;;;;;;
                                  -233228;2;0;false;false;0;0;0;;;
                                  -233230;1;0;false;false;;;;;;
                                  -233231;14;0;false;false;0;0;0;;;
                                  -233245;1;0;false;false;;;;;;
                                  -233246;1;0;false;false;0;0;0;;;
                                  -233247;4;0;false;false;;;;;;
                                  -233251;44;0;false;false;0;0;0;;;
                                  -233295;1;0;false;false;;;;;;
                                  -233296;1;0;false;false;0;0;0;;;
                                  -233297;1;0;false;false;;;;;;
                                  -233298;10;0;false;false;0;0;0;;;
                                  -233308;1;0;false;false;;;;;;
                                  -233309;1;0;false;false;0;0;0;;;
                                  -233310;1;0;false;false;;;;;;
                                  -233311;14;0;false;false;0;0;0;;;
                                  -233325;1;0;false;false;;;;;;
                                  -233326;4;1;false;false;127;0;85;;;
                                  -233330;2;0;false;false;0;0;0;;;
                                  -233332;4;0;false;false;;;;;;
                                  -233336;23;0;false;false;0;0;0;;;
                                  -233359;3;0;false;false;;;;;;
                                  -233362;1;0;false;false;0;0;0;;;
                                  -233363;3;0;false;false;;;;;;
                                  -233366;24;0;false;false;0;0;0;;;
                                  -233390;3;0;false;false;;;;;;
                                  -233393;22;0;false;false;0;0;0;;;
                                  -233415;3;0;false;false;;;;;;
                                  -233418;2;1;false;false;127;0;85;;;
                                  -233420;1;0;false;false;;;;;;
                                  -233421;15;0;false;false;0;0;0;;;
                                  -233436;1;0;false;false;;;;;;
                                  -233437;21;0;false;false;0;0;0;;;
                                  -233458;3;0;false;false;;;;;;
                                  -233461;14;0;false;false;0;0;0;;;
                                  -233475;1;0;false;false;;;;;;
                                  -233476;1;0;false;false;0;0;0;;;
                                  -233477;1;0;false;false;;;;;;
                                  -233478;9;0;false;false;0;0;0;;;
                                  -233487;3;0;false;false;;;;;;
                                  -233490;46;0;false;false;63;127;95;;;
                                  -233536;1;0;false;false;;;;;;
                                  -233537;19;0;false;false;0;0;0;;;
                                  -233556;3;0;false;false;;;;;;
                                  -233559;5;1;false;false;127;0;85;;;
                                  -233564;10;0;false;false;0;0;0;;;
                                  -233574;2;0;false;false;;;;;;
                                  -233576;1;0;false;false;0;0;0;;;
                                  -233577;2;0;false;false;;;;;;
                                  -233579;3;0;false;false;63;95;191;;;
                                  -233582;3;0;false;false;;;;;;
                                  -233585;1;0;false;false;63;95;191;;;
                                  -233586;1;0;false;false;;;;;;
                                  -233587;5;1;false;false;127;159;191;;;
                                  -233592;45;0;false;false;63;95;191;;;
                                  -233637;3;0;false;false;;;;;;
                                  -233640;2;0;false;false;63;95;191;;;
                                  -233642;2;0;false;false;;;;;;
                                  -233644;6;1;false;false;127;0;85;;;
                                  -233650;1;0;false;false;;;;;;
                                  -233651;4;1;false;false;127;0;85;;;
                                  -233655;1;0;false;false;;;;;;
                                  -233656;19;0;false;false;0;0;0;;;
                                  -233675;1;0;false;false;;;;;;
                                  -233676;6;0;false;false;0;0;0;;;
                                  -233682;1;0;false;false;;;;;;
                                  -233683;1;0;false;false;0;0;0;;;
                                  -233684;3;0;false;false;;;;;;
                                  -233687;14;0;false;false;0;0;0;;;
                                  -233701;3;0;false;false;;;;;;
                                  -233704;10;0;false;false;0;0;0;;;
                                  -233714;1;0;false;false;;;;;;
                                  -233715;1;0;false;false;0;0;0;;;
                                  -233716;1;0;false;false;;;;;;
                                  -233717;6;0;false;false;0;0;0;;;
                                  -233723;3;0;false;false;;;;;;
                                  -233726;5;1;false;false;127;0;85;;;
                                  -233731;32;0;false;false;0;0;0;;;
                                  -233763;3;0;false;false;;;;;;
                                  -233766;9;0;false;false;0;0;0;;;
                                  -233775;2;0;false;false;;;;;;
                                  -233777;1;0;false;false;0;0;0;;;
                                  -233778;2;0;false;false;;;;;;
                                  -233780;3;0;false;false;63;95;191;;;
                                  -233783;4;0;false;false;;;;;;
                                  -233787;1;0;false;false;63;95;191;;;
                                  -233788;1;0;false;false;;;;;;
                                  -233789;4;0;false;false;63;95;191;;;
                                  -233793;1;0;false;false;;;;;;
                                  -233794;3;0;false;false;63;95;191;;;
                                  -233797;1;0;false;false;;;;;;
                                  -233798;10;0;false;false;63;95;191;;;
                                  -233808;1;0;false;false;;;;;;
                                  -233809;6;0;false;false;63;95;191;;;
                                  -233815;1;0;false;false;;;;;;
                                  -233816;6;0;false;false;63;95;191;;;
                                  -233822;1;0;false;false;;;;;;
                                  -233823;8;0;false;false;63;95;191;;;
                                  -233831;1;0;false;false;;;;;;
                                  -233832;2;0;false;false;63;95;191;;;
                                  -233834;1;0;false;false;;;;;;
                                  -233835;3;0;false;false;63;95;191;;;
                                  -233838;1;0;false;false;;;;;;
                                  -233839;5;0;false;false;63;95;191;;;
                                  -233844;1;0;false;false;;;;;;
                                  -233845;2;0;false;false;63;95;191;;;
                                  -233847;1;0;false;false;;;;;;
                                  -233848;3;0;false;false;63;95;191;;;
                                  -233851;1;0;false;false;;;;;;
                                  -233852;5;0;false;false;63;95;191;;;
                                  -233857;3;0;false;false;;;;;;
                                  -233860;1;0;false;false;63;95;191;;;
                                  -233861;1;0;false;false;;;;;;
                                  -233862;2;0;false;false;63;95;191;;;
                                  -233864;1;0;false;false;;;;;;
                                  -233865;7;0;false;false;63;95;191;;;
                                  -233872;1;0;false;false;;;;;;
                                  -233873;2;0;false;false;63;95;191;;;
                                  -233875;1;0;false;false;;;;;;
                                  -233876;5;0;false;false;63;95;191;;;
                                  -233881;1;0;false;false;;;;;;
                                  -233882;2;0;false;false;63;95;191;;;
                                  -233884;1;0;false;false;;;;;;
                                  -233885;2;0;false;false;63;95;191;;;
                                  -233887;1;0;false;false;;;;;;
                                  -233888;4;0;false;false;63;95;191;;;
                                  -233892;1;0;false;false;;;;;;
                                  -233893;4;0;false;false;63;95;191;;;
                                  -233897;3;0;false;false;;;;;;
                                  -233900;1;0;false;false;63;95;191;;;
                                  -233901;1;0;false;false;;;;;;
                                  -233902;3;0;false;false;127;127;159;;;
                                  -233905;3;0;false;false;;;;;;
                                  -233908;1;0;false;false;63;95;191;;;
                                  -233909;1;0;false;false;;;;;;
                                  -233910;3;0;false;false;127;127;159;;;
                                  -233913;5;0;false;false;63;95;191;;;
                                  -233918;4;0;false;false;127;127;159;;;
                                  -233922;1;0;false;false;;;;;;
                                  -233923;3;0;false;false;63;95;191;;;
                                  -233926;1;0;false;false;;;;;;
                                  -233927;10;0;false;false;63;95;191;;;
                                  -233937;1;0;false;false;;;;;;
                                  -233938;5;0;false;false;63;95;191;;;
                                  -233943;1;0;false;false;;;;;;
                                  -233944;2;0;false;false;63;95;191;;;
                                  -233946;1;0;false;false;;;;;;
                                  -233947;5;0;false;false;63;95;191;;;
                                  -233952;1;0;false;false;;;;;;
                                  -233953;2;0;false;false;63;95;191;;;
                                  -233955;1;0;false;false;;;;;;
                                  -233956;1;0;false;false;63;95;191;;;
                                  -233957;1;0;false;false;;;;;;
                                  -233958;4;0;false;false;63;95;191;;;
                                  -233962;1;0;false;false;;;;;;
                                  -233963;3;0;false;false;63;95;191;;;
                                  -233966;1;0;false;false;;;;;;
                                  -233967;4;0;false;false;63;95;191;;;
                                  -233971;1;0;false;false;;;;;;
                                  -233972;2;0;false;false;63;95;191;;;
                                  -233974;1;0;false;false;;;;;;
                                  -233975;3;0;false;false;63;95;191;;;
                                  -233978;1;0;false;false;;;;;;
                                  -233979;2;0;false;false;63;95;191;;;
                                  -233981;1;0;false;false;;;;;;
                                  -233982;3;0;false;false;63;95;191;;;
                                  -233985;4;0;false;false;;;;;;
                                  -233989;1;0;false;false;63;95;191;;;
                                  -233990;1;0;false;false;;;;;;
                                  -233991;7;0;false;false;63;95;191;;;
                                  -233998;3;0;false;false;;;;;;
                                  -234001;1;0;false;false;63;95;191;;;
                                  -234002;1;0;false;false;;;;;;
                                  -234003;4;0;false;false;127;127;159;;;
                                  -234007;3;0;false;false;;;;;;
                                  -234010;1;0;false;false;63;95;191;;;
                                  -234011;3;0;false;false;;;;;;
                                  -234014;1;0;false;false;63;95;191;;;
                                  -234015;1;0;false;false;;;;;;
                                  -234016;7;1;false;false;127;159;191;;;
                                  -234023;6;0;false;false;63;95;191;;;
                                  -234029;1;0;false;false;;;;;;
                                  -234030;10;0;false;false;63;95;191;;;
                                  -234040;1;0;false;false;;;;;;
                                  -234041;6;0;false;false;63;95;191;;;
                                  -234047;1;0;false;false;;;;;;
                                  -234048;6;0;false;false;63;95;191;;;
                                  -234054;1;0;false;false;;;;;;
                                  -234055;8;0;false;false;63;95;191;;;
                                  -234063;1;0;false;false;;;;;;
                                  -234064;2;0;false;false;63;95;191;;;
                                  -234066;1;0;false;false;;;;;;
                                  -234067;3;0;false;false;63;95;191;;;
                                  -234070;1;0;false;false;;;;;;
                                  -234071;5;0;false;false;63;95;191;;;
                                  -234076;4;0;false;false;;;;;;
                                  -234080;1;0;false;false;63;95;191;;;
                                  -234081;2;0;false;false;;;;;;
                                  -234083;2;0;false;false;63;95;191;;;
                                  -234085;1;0;false;false;;;;;;
                                  -234086;3;0;false;false;63;95;191;;;
                                  -234089;1;0;false;false;;;;;;
                                  -234090;5;0;false;false;63;95;191;;;
                                  -234095;1;0;false;false;;;;;;
                                  -234096;8;0;false;false;63;95;191;;;
                                  -234104;1;0;false;false;;;;;;
                                  -234105;2;0;false;false;63;95;191;;;
                                  -234107;1;0;false;false;;;;;;
                                  -234108;9;0;false;false;63;95;191;;;
                                  -234117;1;0;false;false;;;;;;
                                  -234118;10;0;false;false;63;95;191;;;
                                  -234128;1;0;false;false;;;;;;
                                  -234129;8;0;false;false;63;95;191;;;
                                  -234137;1;0;false;false;;;;;;
                                  -234138;2;0;false;false;63;95;191;;;
                                  -234140;1;0;false;false;;;;;;
                                  -234141;2;0;false;false;63;95;191;;;
                                  -234143;1;0;false;false;;;;;;
                                  -234144;2;0;false;false;63;95;191;;;
                                  -234146;4;0;false;false;;;;;;
                                  -234150;1;0;false;false;63;95;191;;;
                                  -234151;2;0;false;false;;;;;;
                                  -234153;5;0;false;false;63;95;191;;;
                                  -234158;1;0;false;false;;;;;;
                                  -234159;2;0;false;false;63;95;191;;;
                                  -234161;1;0;false;false;;;;;;
                                  -234162;1;0;false;false;63;95;191;;;
                                  -234163;1;0;false;false;;;;;;
                                  -234164;3;0;false;false;63;95;191;;;
                                  -234167;1;0;false;false;;;;;;
                                  -234168;7;0;false;false;63;95;191;;;
                                  -234175;1;0;false;false;;;;;;
                                  -234176;2;0;false;false;63;95;191;;;
                                  -234178;1;0;false;false;;;;;;
                                  -234179;3;0;false;false;63;95;191;;;
                                  -234182;1;0;false;false;;;;;;
                                  -234183;9;0;false;false;63;95;191;;;
                                  -234192;1;0;false;false;;;;;;
                                  -234193;2;0;false;false;63;95;191;;;
                                  -234195;1;0;false;false;;;;;;
                                  -234196;1;0;false;false;63;95;191;;;
                                  -234197;1;0;false;false;;;;;;
                                  -234198;1;0;false;false;63;95;191;;;
                                  -234199;1;0;false;false;;;;;;
                                  -234200;1;0;false;false;63;95;191;;;
                                  -234201;1;0;false;false;;;;;;
                                  -234202;3;0;false;false;63;95;191;;;
                                  -234205;1;0;false;false;;;;;;
                                  -234206;7;0;false;false;63;95;191;;;
                                  -234213;1;0;false;false;;;;;;
                                  -234214;2;0;false;false;63;95;191;;;
                                  -234216;1;0;false;false;;;;;;
                                  -234217;9;0;false;false;63;95;191;;;
                                  -234226;3;0;false;false;;;;;;
                                  -234229;1;0;false;false;63;95;191;;;
                                  -234230;1;0;false;false;;;;;;
                                  -234231;11;1;false;false;127;159;191;;;
                                  -234242;12;0;false;false;63;95;191;;;
                                  -234254;1;0;false;false;;;;;;
                                  -234255;4;0;false;false;127;127;159;;;
                                  -234259;3;0;false;false;;;;;;
                                  -234262;1;0;false;false;63;95;191;;;
                                  -234263;4;0;false;false;;;;;;
                                  -234267;4;0;false;false;127;127;159;;;
                                  -234271;21;0;false;false;63;95;191;;;
                                  -234292;1;0;false;false;;;;;;
                                  -234293;1;0;false;false;127;127;159;;;
                                  -234294;1;0;false;false;;;;;;
                                  -234295;2;0;false;false;63;95;191;;;
                                  -234297;1;0;false;false;;;;;;
                                  -234298;3;0;false;false;63;95;191;;;
                                  -234301;1;0;false;false;;;;;;
                                  -234302;8;0;false;false;63;95;191;;;
                                  -234310;1;0;false;false;;;;;;
                                  -234311;3;0;false;false;63;95;191;;;
                                  -234314;1;0;false;false;;;;;;
                                  -234315;4;0;false;false;63;95;191;;;
                                  -234319;1;0;false;false;;;;;;
                                  -234320;8;0;false;false;63;95;191;;;
                                  -234328;5;0;false;false;127;127;159;;;
                                  -234333;3;0;false;false;;;;;;
                                  -234336;1;0;false;false;63;95;191;;;
                                  -234337;4;0;false;false;;;;;;
                                  -234341;4;0;false;false;127;127;159;;;
                                  -234345;27;0;false;false;63;95;191;;;
                                  -234372;1;0;false;false;;;;;;
                                  -234373;1;0;false;false;127;127;159;;;
                                  -234374;1;0;false;false;;;;;;
                                  -234375;2;0;false;false;63;95;191;;;
                                  -234377;1;0;false;false;;;;;;
                                  -234378;3;0;false;false;63;95;191;;;
                                  -234381;1;0;false;false;;;;;;
                                  -234382;6;0;false;false;63;95;191;;;
                                  -234388;1;0;false;false;;;;;;
                                  -234389;4;0;false;false;63;95;191;;;
                                  -234393;1;0;false;false;;;;;;
                                  -234394;3;0;false;false;63;95;191;;;
                                  -234397;1;0;false;false;;;;;;
                                  -234398;6;0;false;false;63;95;191;;;
                                  -234404;1;0;false;false;;;;;;
                                  -234405;4;0;false;false;63;95;191;;;
                                  -234409;1;0;false;false;;;;;;
                                  -234410;7;0;false;false;63;95;191;;;
                                  -234417;1;0;false;false;;;;;;
                                  -234418;3;0;false;false;63;95;191;;;
                                  -234421;1;0;false;false;;;;;;
                                  -234422;8;0;false;false;63;95;191;;;
                                  -234430;5;0;false;false;127;127;159;;;
                                  -234435;3;0;false;false;;;;;;
                                  -234438;1;0;false;false;63;95;191;;;
                                  -234439;1;0;false;false;;;;;;
                                  -234440;5;0;false;false;127;127;159;;;
                                  -234445;3;0;false;false;;;;;;
                                  -234448;2;0;false;false;63;95;191;;;
                                  -234450;2;0;false;false;;;;;;
                                  -234452;6;1;false;false;127;0;85;;;
                                  -234458;1;0;false;false;;;;;;
                                  -234459;4;1;false;false;127;0;85;;;
                                  -234463;1;0;false;false;;;;;;
                                  -234464;19;0;false;false;0;0;0;;;
                                  -234483;3;1;false;false;127;0;85;;;
                                  -234486;1;0;false;false;;;;;;
                                  -234487;7;0;false;false;0;0;0;;;
                                  -234494;1;0;false;false;;;;;;
                                  -234495;1;0;false;false;0;0;0;;;
                                  -234496;3;0;false;false;;;;;;
                                  -234499;14;0;false;false;0;0;0;;;
                                  -234513;3;0;false;false;;;;;;
                                  -234516;3;1;false;false;127;0;85;;;
                                  -234519;1;0;false;false;;;;;;
                                  -234520;15;0;false;false;0;0;0;;;
                                  -234535;1;0;false;false;;;;;;
                                  -234536;1;0;false;false;0;0;0;;;
                                  -234537;1;0;false;false;;;;;;
                                  -234538;22;0;false;false;0;0;0;;;
                                  -234560;3;0;false;false;;;;;;
                                  -234563;2;1;false;false;127;0;85;;;
                                  -234565;1;0;false;false;;;;;;
                                  -234566;15;0;false;false;0;0;0;;;
                                  -234581;1;0;false;false;;;;;;
                                  -234582;2;0;false;false;0;0;0;;;
                                  -234584;1;0;false;false;;;;;;
                                  -234585;2;0;false;false;0;0;0;;;
                                  -234587;1;0;false;false;;;;;;
                                  -234588;1;0;false;false;0;0;0;;;
                                  -234589;4;0;false;false;;;;;;
                                  -234593;6;1;false;false;127;0;85;;;
                                  -234599;1;0;false;false;0;0;0;;;
                                  -234600;3;0;false;false;;;;;;
                                  -234603;1;0;false;false;0;0;0;;;
                                  -234604;4;0;false;false;;;;;;
                                  -234608;2;1;false;false;127;0;85;;;
                                  -234610;1;0;false;false;;;;;;
                                  -234611;7;0;false;false;0;0;0;;;
                                  -234618;1;0;false;false;;;;;;
                                  -234619;1;0;false;false;0;0;0;;;
                                  -234620;1;0;false;false;;;;;;
                                  -234621;2;0;false;false;0;0;0;;;
                                  -234623;1;0;false;false;;;;;;
                                  -234624;1;0;false;false;0;0;0;;;
                                  -234625;4;0;false;false;;;;;;
                                  -234629;6;0;false;false;0;0;0;;;
                                  -234635;1;0;false;false;;;;;;
                                  -234636;1;0;false;false;0;0;0;;;
                                  -234637;1;0;false;false;;;;;;
                                  -234638;2;0;false;false;0;0;0;;;
                                  -234640;3;0;false;false;;;;;;
                                  -234643;1;0;false;false;0;0;0;;;
                                  -234644;3;0;false;false;;;;;;
                                  -234647;6;0;false;false;0;0;0;;;
                                  -234653;1;0;false;false;;;;;;
                                  -234654;2;0;false;false;0;0;0;;;
                                  -234656;1;0;false;false;;;;;;
                                  -234657;25;0;false;false;0;0;0;;;
                                  -234682;3;0;false;false;;;;;;
                                  -234685;59;0;false;false;63;127;95;;;
                                  -234744;1;0;false;false;;;;;;
                                  -234745;46;0;false;false;63;127;95;;;
                                  -234791;1;0;false;false;;;;;;
                                  -234792;61;0;false;false;63;127;95;;;
                                  -234853;1;0;false;false;;;;;;
                                  -234854;29;0;false;false;63;127;95;;;
                                  -234883;1;0;false;false;;;;;;
                                  -234884;2;1;false;false;127;0;85;;;
                                  -234886;1;0;false;false;;;;;;
                                  -234887;16;0;false;false;0;0;0;;;
                                  -234903;1;0;false;false;;;;;;
                                  -234904;1;0;false;false;0;0;0;;;
                                  -234905;1;0;false;false;;;;;;
                                  -234906;2;0;false;false;0;0;0;;;
                                  -234908;1;0;false;false;;;;;;
                                  -234909;1;0;false;false;0;0;0;;;
                                  -234910;4;0;false;false;;;;;;
                                  -234914;3;1;false;false;127;0;85;;;
                                  -234917;1;0;false;false;;;;;;
                                  -234918;5;0;false;false;0;0;0;;;
                                  -234923;1;0;false;false;;;;;;
                                  -234924;1;0;false;false;0;0;0;;;
                                  -234925;1;0;false;false;;;;;;
                                  -234926;21;0;false;false;0;0;0;;;
                                  -234947;4;0;false;false;;;;;;
                                  -234951;62;0;false;false;63;127;95;;;
                                  -235013;2;0;false;false;;;;;;
                                  -235015;63;0;false;false;63;127;95;;;
                                  -235078;2;0;false;false;;;;;;
                                  -235080;31;0;false;false;63;127;95;;;
                                  -235111;2;0;false;false;;;;;;
                                  -235113;2;1;false;false;127;0;85;;;
                                  -235115;1;0;false;false;;;;;;
                                  -235116;7;0;false;false;0;0;0;;;
                                  -235123;1;0;false;false;;;;;;
                                  -235124;1;0;false;false;0;0;0;;;
                                  -235125;1;0;false;false;;;;;;
                                  -235126;5;0;false;false;0;0;0;;;
                                  -235131;1;0;false;false;;;;;;
                                  -235132;1;0;false;false;0;0;0;;;
                                  -235133;1;0;false;false;;;;;;
                                  -235134;16;0;false;false;0;0;0;;;
                                  -235150;1;0;false;false;;;;;;
                                  -235151;1;0;false;false;0;0;0;;;
                                  -235152;5;0;false;false;;;;;;
                                  -235157;6;0;false;false;0;0;0;;;
                                  -235163;1;0;false;false;;;;;;
                                  -235164;1;0;false;false;0;0;0;;;
                                  -235165;1;0;false;false;;;;;;
                                  -235166;11;0;false;false;0;0;0;;;
                                  -235177;1;0;false;false;;;;;;
                                  -235178;5;0;false;false;0;0;0;;;
                                  -235183;1;0;false;false;;;;;;
                                  -235184;1;0;false;false;0;0;0;;;
                                  -235185;1;0;false;false;;;;;;
                                  -235186;17;0;false;false;0;0;0;;;
                                  -235203;4;0;false;false;;;;;;
                                  -235207;1;0;false;false;0;0;0;;;
                                  -235208;3;0;false;false;;;;;;
                                  -235211;1;0;false;false;0;0;0;;;
                                  -235212;3;0;false;false;;;;;;
                                  -235215;26;0;false;false;0;0;0;;;
                                  -235241;1;0;false;false;;;;;;
                                  -235242;1;0;false;false;0;0;0;;;
                                  -235243;1;0;false;false;;;;;;
                                  -235244;24;0;false;false;0;0;0;;;
                                  -235268;2;0;false;false;;;;;;
                                  -235270;1;0;false;false;0;0;0;;;
                                  -235271;2;0;false;false;;;;;;
                                  -235273;3;0;false;false;63;95;191;;;
                                  -235276;4;0;false;false;;;;;;
                                  -235280;1;0;false;false;63;95;191;;;
                                  -235281;1;0;false;false;;;;;;
                                  -235282;4;0;false;false;63;95;191;;;
                                  -235286;1;0;false;false;;;;;;
                                  -235287;3;0;false;false;63;95;191;;;
                                  -235290;1;0;false;false;;;;;;
                                  -235291;10;0;false;false;63;95;191;;;
                                  -235301;1;0;false;false;;;;;;
                                  -235302;5;0;false;false;63;95;191;;;
                                  -235307;1;0;false;false;;;;;;
                                  -235308;6;0;false;false;63;95;191;;;
                                  -235314;1;0;false;false;;;;;;
                                  -235315;8;0;false;false;63;95;191;;;
                                  -235323;1;0;false;false;;;;;;
                                  -235324;2;0;false;false;63;95;191;;;
                                  -235326;1;0;false;false;;;;;;
                                  -235327;3;0;false;false;63;95;191;;;
                                  -235330;1;0;false;false;;;;;;
                                  -235331;5;0;false;false;63;95;191;;;
                                  -235336;1;0;false;false;;;;;;
                                  -235337;2;0;false;false;63;95;191;;;
                                  -235339;1;0;false;false;;;;;;
                                  -235340;3;0;false;false;63;95;191;;;
                                  -235343;1;0;false;false;;;;;;
                                  -235344;5;0;false;false;63;95;191;;;
                                  -235349;3;0;false;false;;;;;;
                                  -235352;1;0;false;false;63;95;191;;;
                                  -235353;1;0;false;false;;;;;;
                                  -235354;2;0;false;false;63;95;191;;;
                                  -235356;1;0;false;false;;;;;;
                                  -235357;7;0;false;false;63;95;191;;;
                                  -235364;1;0;false;false;;;;;;
                                  -235365;2;0;false;false;63;95;191;;;
                                  -235367;1;0;false;false;;;;;;
                                  -235368;5;0;false;false;63;95;191;;;
                                  -235373;1;0;false;false;;;;;;
                                  -235374;2;0;false;false;63;95;191;;;
                                  -235376;1;0;false;false;;;;;;
                                  -235377;2;0;false;false;63;95;191;;;
                                  -235379;1;0;false;false;;;;;;
                                  -235380;4;0;false;false;63;95;191;;;
                                  -235384;1;0;false;false;;;;;;
                                  -235385;4;0;false;false;63;95;191;;;
                                  -235389;3;0;false;false;;;;;;
                                  -235392;1;0;false;false;63;95;191;;;
                                  -235393;1;0;false;false;;;;;;
                                  -235394;3;0;false;false;127;127;159;;;
                                  -235397;3;0;false;false;;;;;;
                                  -235400;1;0;false;false;63;95;191;;;
                                  -235401;1;0;false;false;;;;;;
                                  -235402;3;0;false;false;127;127;159;;;
                                  -235405;5;0;false;false;63;95;191;;;
                                  -235410;4;0;false;false;127;127;159;;;
                                  -235414;1;0;false;false;;;;;;
                                  -235415;3;0;false;false;63;95;191;;;
                                  -235418;1;0;false;false;;;;;;
                                  -235419;10;0;false;false;63;95;191;;;
                                  -235429;1;0;false;false;;;;;;
                                  -235430;5;0;false;false;63;95;191;;;
                                  -235435;1;0;false;false;;;;;;
                                  -235436;6;0;false;false;63;95;191;;;
                                  -235442;1;0;false;false;;;;;;
                                  -235443;2;0;false;false;63;95;191;;;
                                  -235445;1;0;false;false;;;;;;
                                  -235446;5;0;false;false;63;95;191;;;
                                  -235451;1;0;false;false;;;;;;
                                  -235452;2;0;false;false;63;95;191;;;
                                  -235454;1;0;false;false;;;;;;
                                  -235455;1;0;false;false;63;95;191;;;
                                  -235456;1;0;false;false;;;;;;
                                  -235457;4;0;false;false;63;95;191;;;
                                  -235461;1;0;false;false;;;;;;
                                  -235462;3;0;false;false;63;95;191;;;
                                  -235465;1;0;false;false;;;;;;
                                  -235466;4;0;false;false;63;95;191;;;
                                  -235470;4;0;false;false;;;;;;
                                  -235474;1;0;false;false;63;95;191;;;
                                  -235475;1;0;false;false;;;;;;
                                  -235476;2;0;false;false;63;95;191;;;
                                  -235478;1;0;false;false;;;;;;
                                  -235479;3;0;false;false;63;95;191;;;
                                  -235482;1;0;false;false;;;;;;
                                  -235483;2;0;false;false;63;95;191;;;
                                  -235485;1;0;false;false;;;;;;
                                  -235486;3;0;false;false;63;95;191;;;
                                  -235489;1;0;false;false;;;;;;
                                  -235490;7;0;false;false;63;95;191;;;
                                  -235497;3;0;false;false;;;;;;
                                  -235500;1;0;false;false;63;95;191;;;
                                  -235501;1;0;false;false;;;;;;
                                  -235502;4;0;false;false;127;127;159;;;
                                  -235506;3;0;false;false;;;;;;
                                  -235509;1;0;false;false;63;95;191;;;
                                  -235510;3;0;false;false;;;;;;
                                  -235513;1;0;false;false;63;95;191;;;
                                  -235514;1;0;false;false;;;;;;
                                  -235515;7;1;false;false;127;159;191;;;
                                  -235522;5;0;false;false;63;95;191;;;
                                  -235527;1;0;false;false;;;;;;
                                  -235528;10;0;false;false;63;95;191;;;
                                  -235538;1;0;false;false;;;;;;
                                  -235539;5;0;false;false;63;95;191;;;
                                  -235544;1;0;false;false;;;;;;
                                  -235545;6;0;false;false;63;95;191;;;
                                  -235551;1;0;false;false;;;;;;
                                  -235552;8;0;false;false;63;95;191;;;
                                  -235560;1;0;false;false;;;;;;
                                  -235561;2;0;false;false;63;95;191;;;
                                  -235563;1;0;false;false;;;;;;
                                  -235564;3;0;false;false;63;95;191;;;
                                  -235567;1;0;false;false;;;;;;
                                  -235568;5;0;false;false;63;95;191;;;
                                  -235573;4;0;false;false;;;;;;
                                  -235577;1;0;false;false;63;95;191;;;
                                  -235578;2;0;false;false;;;;;;
                                  -235580;2;0;false;false;63;95;191;;;
                                  -235582;1;0;false;false;;;;;;
                                  -235583;3;0;false;false;63;95;191;;;
                                  -235586;1;0;false;false;;;;;;
                                  -235587;5;0;false;false;63;95;191;;;
                                  -235592;3;0;false;false;;;;;;
                                  -235595;1;0;false;false;63;95;191;;;
                                  -235596;1;0;false;false;;;;;;
                                  -235597;11;1;false;false;127;159;191;;;
                                  -235608;12;0;false;false;63;95;191;;;
                                  -235620;1;0;false;false;;;;;;
                                  -235621;4;0;false;false;127;127;159;;;
                                  -235625;3;0;false;false;;;;;;
                                  -235628;1;0;false;false;63;95;191;;;
                                  -235629;4;0;false;false;;;;;;
                                  -235633;4;0;false;false;127;127;159;;;
                                  -235637;21;0;false;false;63;95;191;;;
                                  -235658;1;0;false;false;;;;;;
                                  -235659;1;0;false;false;127;127;159;;;
                                  -235660;1;0;false;false;;;;;;
                                  -235661;2;0;false;false;63;95;191;;;
                                  -235663;1;0;false;false;;;;;;
                                  -235664;3;0;false;false;63;95;191;;;
                                  -235667;1;0;false;false;;;;;;
                                  -235668;8;0;false;false;63;95;191;;;
                                  -235676;1;0;false;false;;;;;;
                                  -235677;3;0;false;false;63;95;191;;;
                                  -235680;1;0;false;false;;;;;;
                                  -235681;4;0;false;false;63;95;191;;;
                                  -235685;1;0;false;false;;;;;;
                                  -235686;8;0;false;false;63;95;191;;;
                                  -235694;5;0;false;false;127;127;159;;;
                                  -235699;3;0;false;false;;;;;;
                                  -235702;1;0;false;false;63;95;191;;;
                                  -235703;4;0;false;false;;;;;;
                                  -235707;4;0;false;false;127;127;159;;;
                                  -235711;27;0;false;false;63;95;191;;;
                                  -235738;1;0;false;false;;;;;;
                                  -235739;1;0;false;false;127;127;159;;;
                                  -235740;1;0;false;false;;;;;;
                                  -235741;2;0;false;false;63;95;191;;;
                                  -235743;1;0;false;false;;;;;;
                                  -235744;3;0;false;false;63;95;191;;;
                                  -235747;1;0;false;false;;;;;;
                                  -235748;6;0;false;false;63;95;191;;;
                                  -235754;1;0;false;false;;;;;;
                                  -235755;4;0;false;false;63;95;191;;;
                                  -235759;1;0;false;false;;;;;;
                                  -235760;3;0;false;false;63;95;191;;;
                                  -235763;1;0;false;false;;;;;;
                                  -235764;6;0;false;false;63;95;191;;;
                                  -235770;1;0;false;false;;;;;;
                                  -235771;4;0;false;false;63;95;191;;;
                                  -235775;1;0;false;false;;;;;;
                                  -235776;7;0;false;false;63;95;191;;;
                                  -235783;1;0;false;false;;;;;;
                                  -235784;3;0;false;false;63;95;191;;;
                                  -235787;1;0;false;false;;;;;;
                                  -235788;8;0;false;false;63;95;191;;;
                                  -235796;5;0;false;false;127;127;159;;;
                                  -235801;3;0;false;false;;;;;;
                                  -235804;1;0;false;false;63;95;191;;;
                                  -235805;1;0;false;false;;;;;;
                                  -235806;5;0;false;false;127;127;159;;;
                                  -235811;3;0;false;false;;;;;;
                                  -235814;1;0;false;false;63;95;191;;;
                                  -235815;1;0;false;false;;;;;;
                                  -235816;7;1;false;false;127;159;191;;;
                                  -235823;3;0;false;false;63;95;191;;;
                                  -235826;3;0;false;false;;;;;;
                                  -235829;2;0;false;false;63;95;191;;;
                                  -235831;2;0;false;false;;;;;;
                                  -235833;6;1;false;false;127;0;85;;;
                                  -235839;1;0;false;false;;;;;;
                                  -235840;4;1;false;false;127;0;85;;;
                                  -235844;1;0;false;false;;;;;;
                                  -235845;19;0;false;false;0;0;0;;;
                                  -235864;3;1;false;false;127;0;85;;;
                                  -235867;1;0;false;false;;;;;;
                                  -235868;6;0;false;false;0;0;0;;;
                                  -235874;1;0;false;false;;;;;;
                                  -235875;1;0;false;false;0;0;0;;;
                                  -235876;3;0;false;false;;;;;;
                                  -235879;14;0;false;false;0;0;0;;;
                                  -235893;3;0;false;false;;;;;;
                                  -235896;3;1;false;false;127;0;85;;;
                                  -235899;1;0;false;false;;;;;;
                                  -235900;15;0;false;false;0;0;0;;;
                                  -235915;1;0;false;false;;;;;;
                                  -235916;1;0;false;false;0;0;0;;;
                                  -235917;1;0;false;false;;;;;;
                                  -235918;22;0;false;false;0;0;0;;;
                                  -235940;3;0;false;false;;;;;;
                                  -235943;2;1;false;false;127;0;85;;;
                                  -235945;1;0;false;false;;;;;;
                                  -235946;15;0;false;false;0;0;0;;;
                                  -235961;1;0;false;false;;;;;;
                                  -235962;2;0;false;false;0;0;0;;;
                                  -235964;1;0;false;false;;;;;;
                                  -235965;2;0;false;false;0;0;0;;;
                                  -235967;1;0;false;false;;;;;;
                                  -235968;1;0;false;false;0;0;0;;;
                                  -235969;4;0;false;false;;;;;;
                                  -235973;6;1;false;false;127;0;85;;;
                                  -235979;1;0;false;false;0;0;0;;;
                                  -235980;3;0;false;false;;;;;;
                                  -235983;1;0;false;false;0;0;0;;;
                                  -235984;4;0;false;false;;;;;;
                                  -235988;2;1;false;false;127;0;85;;;
                                  -235990;1;0;false;false;;;;;;
                                  -235991;6;0;false;false;0;0;0;;;
                                  -235997;1;0;false;false;;;;;;
                                  -235998;1;0;false;false;0;0;0;;;
                                  -235999;1;0;false;false;;;;;;
                                  -236000;2;0;false;false;0;0;0;;;
                                  -236002;1;0;false;false;;;;;;
                                  -236003;1;0;false;false;0;0;0;;;
                                  -236004;4;0;false;false;;;;;;
                                  -236008;5;0;false;false;0;0;0;;;
                                  -236013;1;0;false;false;;;;;;
                                  -236014;1;0;false;false;0;0;0;;;
                                  -236015;1;0;false;false;;;;;;
                                  -236016;2;0;false;false;0;0;0;;;
                                  -236018;3;0;false;false;;;;;;
                                  -236021;1;0;false;false;0;0;0;;;
                                  -236022;3;0;false;false;;;;;;
                                  -236025;59;0;false;false;63;127;95;;;
                                  -236084;1;0;false;false;;;;;;
                                  -236085;46;0;false;false;63;127;95;;;
                                  -236131;1;0;false;false;;;;;;
                                  -236132;61;0;false;false;63;127;95;;;
                                  -236193;1;0;false;false;;;;;;
                                  -236194;29;0;false;false;63;127;95;;;
                                  -236223;1;0;false;false;;;;;;
                                  -236224;2;1;false;false;127;0;85;;;
                                  -236226;1;0;false;false;;;;;;
                                  -236227;16;0;false;false;0;0;0;;;
                                  -236243;1;0;false;false;;;;;;
                                  -236244;1;0;false;false;0;0;0;;;
                                  -236245;1;0;false;false;;;;;;
                                  -236246;2;0;false;false;0;0;0;;;
                                  -236248;1;0;false;false;;;;;;
                                  -236249;1;0;false;false;0;0;0;;;
                                  -236250;4;0;false;false;;;;;;
                                  -236254;3;1;false;false;127;0;85;;;
                                  -236257;1;0;false;false;;;;;;
                                  -236258;5;0;false;false;0;0;0;;;
                                  -236263;1;0;false;false;;;;;;
                                  -236264;1;0;false;false;0;0;0;;;
                                  -236265;1;0;false;false;;;;;;
                                  -236266;21;0;false;false;0;0;0;;;
                                  -236287;4;0;false;false;;;;;;
                                  -236291;62;0;false;false;63;127;95;;;
                                  -236353;2;0;false;false;;;;;;
                                  -236355;63;0;false;false;63;127;95;;;
                                  -236418;2;0;false;false;;;;;;
                                  -236420;31;0;false;false;63;127;95;;;
                                  -236451;2;0;false;false;;;;;;
                                  -236453;2;1;false;false;127;0;85;;;
                                  -236455;1;0;false;false;;;;;;
                                  -236456;6;0;false;false;0;0;0;;;
                                  -236462;1;0;false;false;;;;;;
                                  -236463;1;0;false;false;0;0;0;;;
                                  -236464;1;0;false;false;;;;;;
                                  -236465;5;0;false;false;0;0;0;;;
                                  -236470;1;0;false;false;;;;;;
                                  -236471;1;0;false;false;0;0;0;;;
                                  -236472;1;0;false;false;;;;;;
                                  -236473;16;0;false;false;0;0;0;;;
                                  -236489;1;0;false;false;;;;;;
                                  -236490;1;0;false;false;0;0;0;;;
                                  -236491;5;0;false;false;;;;;;
                                  -236496;5;0;false;false;0;0;0;;;
                                  -236501;1;0;false;false;;;;;;
                                  -236502;1;0;false;false;0;0;0;;;
                                  -236503;1;0;false;false;;;;;;
                                  -236504;11;0;false;false;0;0;0;;;
                                  -236515;1;0;false;false;;;;;;
                                  -236516;5;0;false;false;0;0;0;;;
                                  -236521;1;0;false;false;;;;;;
                                  -236522;1;0;false;false;0;0;0;;;
                                  -236523;1;0;false;false;;;;;;
                                  -236524;17;0;false;false;0;0;0;;;
                                  -236541;4;0;false;false;;;;;;
                                  -236545;1;0;false;false;0;0;0;;;
                                  -236546;3;0;false;false;;;;;;
                                  -236549;1;0;false;false;0;0;0;;;
                                  -236550;3;0;false;false;;;;;;
                                  -236553;25;0;false;false;0;0;0;;;
                                  -236578;1;0;false;false;;;;;;
                                  -236579;1;0;false;false;0;0;0;;;
                                  -236580;1;0;false;false;;;;;;
                                  -236581;24;0;false;false;0;0;0;;;
                                  -236605;2;0;false;false;;;;;;
                                  -236607;1;0;false;false;0;0;0;;;
                                  -236608;2;0;false;false;;;;;;
                                  -236610;3;0;false;false;63;95;191;;;
                                  -236613;3;0;false;false;;;;;;
                                  -236616;1;0;false;false;63;95;191;;;
                                  -236617;1;0;false;false;;;;;;
                                  -236618;7;0;false;false;63;95;191;;;
                                  -236625;1;0;false;false;;;;;;
                                  -236626;3;0;false;false;63;95;191;;;
                                  -236629;1;0;false;false;;;;;;
                                  -236630;7;0;false;false;63;95;191;;;
                                  -236637;1;0;false;false;;;;;;
                                  -236638;3;0;false;false;63;95;191;;;
                                  -236641;1;0;false;false;;;;;;
                                  -236642;3;0;false;false;63;95;191;;;
                                  -236645;1;0;false;false;;;;;;
                                  -236646;4;0;false;false;63;95;191;;;
                                  -236650;1;0;false;false;;;;;;
                                  -236651;4;0;false;false;63;95;191;;;
                                  -236655;1;0;false;false;;;;;;
                                  -236656;2;0;false;false;63;95;191;;;
                                  -236658;1;0;false;false;;;;;;
                                  -236659;3;0;false;false;63;95;191;;;
                                  -236662;1;0;false;false;;;;;;
                                  -236663;10;0;false;false;63;95;191;;;
                                  -236673;1;0;false;false;;;;;;
                                  -236674;6;0;false;false;63;95;191;;;
                                  -236680;1;0;false;false;;;;;;
                                  -236681;3;0;false;false;63;95;191;;;
                                  -236684;4;0;false;false;;;;;;
                                  -236688;1;0;false;false;63;95;191;;;
                                  -236689;1;0;false;false;;;;;;
                                  -236690;2;0;false;false;63;95;191;;;
                                  -236692;1;0;false;false;;;;;;
                                  -236693;7;0;false;false;63;95;191;;;
                                  -236700;1;0;false;false;;;;;;
                                  -236701;7;0;false;false;63;95;191;;;
                                  -236708;1;0;false;false;;;;;;
                                  -236709;5;0;false;false;63;95;191;;;
                                  -236714;1;0;false;false;;;;;;
                                  -236715;8;0;false;false;63;95;191;;;
                                  -236723;3;0;false;false;;;;;;
                                  -236726;2;0;false;false;63;95;191;;;
                                  -236728;2;0;false;false;;;;;;
                                  -236730;4;1;false;false;127;0;85;;;
                                  -236734;1;0;false;false;;;;;;
                                  -236735;24;0;false;false;0;0;0;;;
                                  -236759;1;0;false;false;;;;;;
                                  -236760;1;0;false;false;0;0;0;;;
                                  -236761;3;0;false;false;;;;;;
                                  -236764;9;0;false;false;0;0;0;;;
                                  -236773;1;0;false;false;;;;;;
                                  -236774;13;0;false;false;0;0;0;;;
                                  -236787;1;0;false;false;;;;;;
                                  -236788;1;0;false;false;0;0;0;;;
                                  -236789;1;0;false;false;;;;;;
                                  -236790;19;0;false;false;0;0;0;;;
                                  -236809;6;0;false;false;;;;;;
                                  -236815;2;1;false;false;127;0;85;;;
                                  -236817;1;0;false;false;;;;;;
                                  -236818;14;0;false;false;0;0;0;;;
                                  -236832;1;0;false;false;;;;;;
                                  -236833;2;0;false;false;0;0;0;;;
                                  -236835;1;0;false;false;;;;;;
                                  -236836;4;1;false;false;127;0;85;;;
                                  -236840;1;0;false;false;;;;;;
                                  -236841;2;0;false;false;0;0;0;;;
                                  -236843;1;0;false;false;;;;;;
                                  -236844;27;0;false;false;0;0;0;;;
                                  -236871;1;0;false;false;;;;;;
                                  -236872;1;0;false;false;0;0;0;;;
                                  -236873;4;0;false;false;;;;;;
                                  -236877;5;1;false;false;127;0;85;;;
                                  -236882;1;0;false;false;;;;;;
                                  -236883;3;1;false;false;127;0;85;;;
                                  -236886;1;0;false;false;;;;;;
                                  -236887;8;0;false;false;0;0;0;;;
                                  -236895;1;0;false;false;;;;;;
                                  -236896;1;0;false;false;0;0;0;;;
                                  -236897;1;0;false;false;;;;;;
                                  -236898;2;0;false;false;0;0;0;;;
                                  -236900;4;0;false;false;;;;;;
                                  -236904;9;0;false;false;0;0;0;;;
                                  -236913;1;0;false;false;;;;;;
                                  -236914;10;0;false;false;0;0;0;;;
                                  -236924;1;0;false;false;;;;;;
                                  -236925;1;0;false;false;0;0;0;;;
                                  -236926;1;0;false;false;;;;;;
                                  -236927;16;0;false;false;0;0;0;;;
                                  -236943;4;0;false;false;;;;;;
                                  -236947;60;0;false;false;63;127;95;;;
                                  -237007;2;0;false;false;;;;;;
                                  -237009;65;0;false;false;63;127;95;;;
                                  -237074;2;0;false;false;;;;;;
                                  -237076;56;0;false;false;63;127;95;;;
                                  -237132;2;0;false;false;;;;;;
                                  -237134;2;1;false;false;127;0;85;;;
                                  -237136;1;0;false;false;;;;;;
                                  -237137;17;0;false;false;0;0;0;;;
                                  -237154;1;0;false;false;;;;;;
                                  -237155;1;0;false;false;0;0;0;;;
                                  -237156;1;0;false;false;;;;;;
                                  -237157;21;0;false;false;0;0;0;;;
                                  -237178;1;0;false;false;;;;;;
                                  -237179;1;0;false;false;0;0;0;;;
                                  -237180;5;0;false;false;;;;;;
                                  -237185;24;0;false;false;0;0;0;;;
                                  -237209;6;0;false;false;;;;;;
                                  -237215;29;0;false;false;0;0;0;;;
                                  -237244;6;0;false;false;;;;;;
                                  -237250;27;0;false;false;0;0;0;;;
                                  -237277;6;0;false;false;;;;;;
                                  -237283;21;0;false;false;0;0;0;;;
                                  -237304;7;0;false;false;;;;;;
                                  -237311;12;0;false;false;63;127;95;;;
                                  -237323;4;0;false;false;;;;;;
                                  -237327;16;0;false;false;0;0;0;;;
                                  -237343;1;0;false;false;;;;;;
                                  -237344;1;0;false;false;0;0;0;;;
                                  -237345;1;0;false;false;;;;;;
                                  -237346;10;0;false;false;0;0;0;;;
                                  -237356;1;0;false;false;;;;;;
                                  -237357;1;0;false;false;0;0;0;;;
                                  -237358;1;0;false;false;;;;;;
                                  -237359;12;0;false;false;0;0;0;;;
                                  -237371;1;0;false;false;;;;;;
                                  -237372;15;0;false;false;63;127;95;;;
                                  -237387;4;0;false;false;;;;;;
                                  -237391;29;0;false;false;0;0;0;;;
                                  -237420;6;0;false;false;;;;;;
                                  -237426;16;0;false;false;0;0;0;;;
                                  -237442;1;0;false;false;;;;;;
                                  -237443;1;0;false;false;0;0;0;;;
                                  -237444;1;0;false;false;;;;;;
                                  -237445;10;0;false;false;0;0;0;;;
                                  -237455;1;0;false;false;;;;;;
                                  -237456;1;0;false;false;0;0;0;;;
                                  -237457;1;0;false;false;;;;;;
                                  -237458;13;0;false;false;0;0;0;;;
                                  -237471;1;0;false;false;;;;;;
                                  -237472;14;0;false;false;63;127;95;;;
                                  -237486;2;0;false;false;;;;;;
                                  -237488;1;0;false;false;0;0;0;;;
                                  -237489;4;0;false;false;;;;;;
                                  -237493;4;1;false;false;127;0;85;;;
                                  -237497;5;0;false;false;;;;;;
                                  -237502;2;1;false;false;127;0;85;;;
                                  -237504;1;0;false;false;;;;;;
                                  -237505;25;0;false;false;0;0;0;;;
                                  -237530;1;0;false;false;;;;;;
                                  -237531;2;0;false;false;0;0;0;;;
                                  -237533;1;0;false;false;;;;;;
                                  -237534;8;0;false;false;0;0;0;;;
                                  -237542;1;0;false;false;;;;;;
                                  -237543;2;0;false;false;0;0;0;;;
                                  -237545;1;0;false;false;;;;;;
                                  -237546;26;0;false;false;0;0;0;;;
                                  -237572;1;0;false;false;;;;;;
                                  -237573;2;0;false;false;0;0;0;;;
                                  -237575;1;0;false;false;;;;;;
                                  -237576;9;0;false;false;0;0;0;;;
                                  -237585;1;0;false;false;;;;;;
                                  -237586;1;0;false;false;0;0;0;;;
                                  -237587;5;0;false;false;;;;;;
                                  -237592;24;0;false;false;0;0;0;;;
                                  -237616;6;0;false;false;;;;;;
                                  -237622;29;0;false;false;0;0;0;;;
                                  -237651;6;0;false;false;;;;;;
                                  -237657;27;0;false;false;0;0;0;;;
                                  -237684;6;0;false;false;;;;;;
                                  -237690;9;0;false;false;0;0;0;;;
                                  -237699;6;0;false;false;;;;;;
                                  -237705;9;0;false;false;0;0;0;;;
                                  -237714;6;0;false;false;;;;;;
                                  -237720;29;0;false;false;0;0;0;;;
                                  -237749;6;0;false;false;;;;;;
                                  -237755;10;0;false;false;0;0;0;;;
                                  -237765;4;0;false;false;;;;;;
                                  -237769;1;0;false;false;0;0;0;;;
                                  -237770;3;0;false;false;;;;;;
                                  -237773;1;0;false;false;0;0;0;;;
                                  -237774;2;0;false;false;;;;;;
                                  -237776;1;0;false;false;0;0;0;;;
                                  -237777;2;0;false;false;;;;;;
                                  -237779;3;0;false;false;63;95;191;;;
                                  -237782;4;0;false;false;;;;;;
                                  -237786;1;0;false;false;63;95;191;;;
                                  -237787;1;0;false;false;;;;;;
                                  -237788;4;0;false;false;63;95;191;;;
                                  -237792;1;0;false;false;;;;;;
                                  -237793;3;0;false;false;63;95;191;;;
                                  -237796;1;0;false;false;;;;;;
                                  -237797;10;0;false;false;63;95;191;;;
                                  -237807;1;0;false;false;;;;;;
                                  -237808;5;0;false;false;63;95;191;;;
                                  -237813;1;0;false;false;;;;;;
                                  -237814;2;0;false;false;63;95;191;;;
                                  -237816;1;0;false;false;;;;;;
                                  -237817;3;0;false;false;63;95;191;;;
                                  -237820;1;0;false;false;;;;;;
                                  -237821;9;0;false;false;63;95;191;;;
                                  -237830;1;0;false;false;;;;;;
                                  -237831;6;0;false;false;63;95;191;;;
                                  -237837;3;0;false;false;;;;;;
                                  -237840;1;0;false;false;63;95;191;;;
                                  -237841;1;0;false;false;;;;;;
                                  -237842;3;0;false;false;63;95;191;;;
                                  -237845;1;0;false;false;;;;;;
                                  -237846;10;0;false;false;63;95;191;;;
                                  -237856;1;0;false;false;;;;;;
                                  -237857;5;0;false;false;63;95;191;;;
                                  -237862;1;0;false;false;;;;;;
                                  -237863;2;0;false;false;63;95;191;;;
                                  -237865;1;0;false;false;;;;;;
                                  -237866;5;0;false;false;63;95;191;;;
                                  -237871;1;0;false;false;;;;;;
                                  -237872;3;0;false;false;63;95;191;;;
                                  -237875;1;0;false;false;;;;;;
                                  -237876;3;0;false;false;63;95;191;;;
                                  -237879;1;0;false;false;;;;;;
                                  -237880;5;0;false;false;63;95;191;;;
                                  -237885;1;0;false;false;;;;;;
                                  -237886;2;0;false;false;63;95;191;;;
                                  -237888;1;0;false;false;;;;;;
                                  -237889;3;0;false;false;63;95;191;;;
                                  -237892;1;0;false;false;;;;;;
                                  -237893;7;0;false;false;63;95;191;;;
                                  -237900;1;0;false;false;;;;;;
                                  -237901;3;0;false;false;63;95;191;;;
                                  -237904;3;0;false;false;;;;;;
                                  -237907;1;0;false;false;63;95;191;;;
                                  -237908;1;0;false;false;;;;;;
                                  -237909;4;0;false;false;63;95;191;;;
                                  -237913;1;0;false;false;;;;;;
                                  -237914;10;0;false;false;63;95;191;;;
                                  -237924;1;0;false;false;;;;;;
                                  -237925;6;0;false;false;63;95;191;;;
                                  -237931;1;0;false;false;;;;;;
                                  -237932;3;0;false;false;63;95;191;;;
                                  -237935;1;0;false;false;;;;;;
                                  -237936;9;0;false;false;63;95;191;;;
                                  -237945;1;0;false;false;;;;;;
                                  -237946;4;0;false;false;63;95;191;;;
                                  -237950;1;0;false;false;;;;;;
                                  -237951;7;0;false;false;63;95;191;;;
                                  -237958;1;0;false;false;;;;;;
                                  -237959;2;0;false;false;63;95;191;;;
                                  -237961;1;0;false;false;;;;;;
                                  -237962;7;0;false;false;63;95;191;;;
                                  -237969;3;0;false;false;;;;;;
                                  -237972;1;0;false;false;63;95;191;;;
                                  -237973;1;0;false;false;;;;;;
                                  -237974;3;0;false;false;63;95;191;;;
                                  -237977;1;0;false;false;;;;;;
                                  -237978;4;0;false;false;63;95;191;;;
                                  -237982;1;0;false;false;;;;;;
                                  -237983;10;0;false;false;63;95;191;;;
                                  -237993;1;0;false;false;;;;;;
                                  -237994;5;0;false;false;63;95;191;;;
                                  -237999;1;0;false;false;;;;;;
                                  -238000;2;0;false;false;63;95;191;;;
                                  -238002;1;0;false;false;;;;;;
                                  -238003;7;0;false;false;63;95;191;;;
                                  -238010;1;0;false;false;;;;;;
                                  -238011;2;0;false;false;63;95;191;;;
                                  -238013;1;0;false;false;;;;;;
                                  -238014;1;0;false;false;63;95;191;;;
                                  -238015;1;0;false;false;;;;;;
                                  -238016;10;0;false;false;63;95;191;;;
                                  -238026;1;0;false;false;;;;;;
                                  -238027;8;0;false;false;63;95;191;;;
                                  -238035;1;0;false;false;;;;;;
                                  -238036;3;0;false;false;63;95;191;;;
                                  -238039;4;0;false;false;;;;;;
                                  -238043;1;0;false;false;63;95;191;;;
                                  -238044;1;0;false;false;;;;;;
                                  -238045;4;0;false;false;63;95;191;;;
                                  -238049;1;0;false;false;;;;;;
                                  -238050;10;0;false;false;63;95;191;;;
                                  -238060;1;0;false;false;;;;;;
                                  -238061;6;0;false;false;63;95;191;;;
                                  -238067;1;0;false;false;;;;;;
                                  -238068;6;0;false;false;63;95;191;;;
                                  -238074;1;0;false;false;;;;;;
                                  -238075;3;0;false;false;63;95;191;;;
                                  -238078;1;0;false;false;;;;;;
                                  -238079;2;0;false;false;63;95;191;;;
                                  -238081;1;0;false;false;;;;;;
                                  -238082;6;0;false;false;63;95;191;;;
                                  -238088;1;0;false;false;;;;;;
                                  -238089;2;0;false;false;63;95;191;;;
                                  -238091;1;0;false;false;;;;;;
                                  -238092;1;0;false;false;63;95;191;;;
                                  -238093;1;0;false;false;;;;;;
                                  -238094;22;0;false;false;63;95;191;;;
                                  -238116;4;0;false;false;;;;;;
                                  -238120;1;0;false;false;63;95;191;;;
                                  -238121;1;0;false;false;;;;;;
                                  -238122;3;0;false;false;63;95;191;;;
                                  -238125;1;0;false;false;;;;;;
                                  -238126;4;0;false;false;63;95;191;;;
                                  -238130;1;0;false;false;;;;;;
                                  -238131;3;0;false;false;63;95;191;;;
                                  -238134;1;0;false;false;;;;;;
                                  -238135;5;0;false;false;63;95;191;;;
                                  -238140;1;0;false;false;;;;;;
                                  -238141;3;0;false;false;63;95;191;;;
                                  -238144;1;0;false;false;;;;;;
                                  -238145;8;0;false;false;63;95;191;;;
                                  -238153;1;0;false;false;;;;;;
                                  -238154;9;0;false;false;63;95;191;;;
                                  -238163;1;0;false;false;;;;;;
                                  -238164;3;0;false;false;63;95;191;;;
                                  -238167;1;0;false;false;;;;;;
                                  -238168;4;0;false;false;63;95;191;;;
                                  -238172;1;0;false;false;;;;;;
                                  -238173;12;0;false;false;63;95;191;;;
                                  -238185;3;0;false;false;;;;;;
                                  -238188;1;0;false;false;63;95;191;;;
                                  -238189;1;0;false;false;;;;;;
                                  -238190;3;0;false;false;127;127;159;;;
                                  -238193;3;0;false;false;;;;;;
                                  -238196;1;0;false;false;63;95;191;;;
                                  -238197;1;0;false;false;;;;;;
                                  -238198;4;0;false;false;63;95;191;;;
                                  -238202;1;0;false;false;;;;;;
                                  -238203;10;0;false;false;63;95;191;;;
                                  -238213;1;0;false;false;;;;;;
                                  -238214;6;0;false;false;63;95;191;;;
                                  -238220;1;0;false;false;;;;;;
                                  -238221;3;0;false;false;63;95;191;;;
                                  -238224;1;0;false;false;;;;;;
                                  -238225;10;0;false;false;63;95;191;;;
                                  -238235;1;0;false;false;;;;;;
                                  -238236;8;0;false;false;63;95;191;;;
                                  -238244;1;0;false;false;;;;;;
                                  -238245;2;0;false;false;63;95;191;;;
                                  -238247;1;0;false;false;;;;;;
                                  -238248;3;0;false;false;63;95;191;;;
                                  -238251;1;0;false;false;;;;;;
                                  -238252;4;0;false;false;63;95;191;;;
                                  -238256;1;0;false;false;;;;;;
                                  -238257;5;0;false;false;63;95;191;;;
                                  -238262;1;0;false;false;;;;;;
                                  -238263;3;0;false;false;63;95;191;;;
                                  -238266;1;0;false;false;;;;;;
                                  -238267;3;0;false;false;63;95;191;;;
                                  -238270;4;0;false;false;;;;;;
                                  -238274;1;0;false;false;63;95;191;;;
                                  -238275;1;0;false;false;;;;;;
                                  -238276;4;0;false;false;63;95;191;;;
                                  -238280;1;0;false;false;;;;;;
                                  -238281;5;0;false;false;63;95;191;;;
                                  -238286;1;0;false;false;;;;;;
                                  -238287;4;0;false;false;63;95;191;;;
                                  -238291;1;0;false;false;;;;;;
                                  -238292;2;0;false;false;63;95;191;;;
                                  -238294;1;0;false;false;;;;;;
                                  -238295;9;0;false;false;63;95;191;;;
                                  -238304;1;0;false;false;;;;;;
                                  -238305;2;0;false;false;63;95;191;;;
                                  -238307;1;0;false;false;;;;;;
                                  -238308;4;0;false;false;63;95;191;;;
                                  -238312;1;0;false;false;;;;;;
                                  -238313;6;0;false;false;63;95;191;;;
                                  -238319;1;0;false;false;;;;;;
                                  -238320;5;0;false;false;63;95;191;;;
                                  -238325;3;0;false;false;;;;;;
                                  -238328;1;0;false;false;63;95;191;;;
                                  -238329;1;0;false;false;;;;;;
                                  -238330;6;0;false;false;63;95;191;;;
                                  -238336;1;0;false;false;;;;;;
                                  -238337;4;0;false;false;63;95;191;;;
                                  -238341;1;0;false;false;;;;;;
                                  -238342;8;0;false;false;63;95;191;;;
                                  -238350;1;0;false;false;;;;;;
                                  -238351;4;0;false;false;63;95;191;;;
                                  -238355;1;0;false;false;;;;;;
                                  -238356;6;0;false;false;63;95;191;;;
                                  -238362;1;0;false;false;;;;;;
                                  -238363;5;0;false;false;63;95;191;;;
                                  -238368;1;0;false;false;;;;;;
                                  -238369;3;0;false;false;63;95;191;;;
                                  -238372;1;0;false;false;;;;;;
                                  -238373;8;0;false;false;63;95;191;;;
                                  -238381;1;0;false;false;;;;;;
                                  -238382;2;0;false;false;63;95;191;;;
                                  -238384;1;0;false;false;;;;;;
                                  -238385;8;0;false;false;63;95;191;;;
                                  -238393;1;0;false;false;;;;;;
                                  -238394;3;0;false;false;63;95;191;;;
                                  -238397;1;0;false;false;;;;;;
                                  -238398;4;0;false;false;63;95;191;;;
                                  -238402;4;0;false;false;;;;;;
                                  -238406;1;0;false;false;63;95;191;;;
                                  -238407;1;0;false;false;;;;;;
                                  -238408;10;0;false;false;63;95;191;;;
                                  -238418;1;0;false;false;;;;;;
                                  -238419;6;0;false;false;63;95;191;;;
                                  -238425;1;0;false;false;;;;;;
                                  -238426;4;0;false;false;63;95;191;;;
                                  -238430;1;0;false;false;;;;;;
                                  -238431;3;0;false;false;63;95;191;;;
                                  -238434;1;0;false;false;;;;;;
                                  -238435;10;0;false;false;63;95;191;;;
                                  -238445;1;0;false;false;;;;;;
                                  -238446;4;0;false;false;63;95;191;;;
                                  -238450;1;0;false;false;;;;;;
                                  -238451;3;0;false;false;63;95;191;;;
                                  -238454;1;0;false;false;;;;;;
                                  -238455;5;0;false;false;63;95;191;;;
                                  -238460;1;0;false;false;;;;;;
                                  -238461;5;0;false;false;63;95;191;;;
                                  -238466;1;0;false;false;;;;;;
                                  -238467;3;0;false;false;63;95;191;;;
                                  -238470;1;0;false;false;;;;;;
                                  -238471;6;0;false;false;63;95;191;;;
                                  -238477;4;0;false;false;;;;;;
                                  -238481;1;0;false;false;63;95;191;;;
                                  -238482;1;0;false;false;;;;;;
                                  -238483;4;0;false;false;63;95;191;;;
                                  -238487;1;0;false;false;;;;;;
                                  -238488;6;0;false;false;63;95;191;;;
                                  -238494;1;0;false;false;;;;;;
                                  -238495;4;0;false;false;63;95;191;;;
                                  -238499;1;0;false;false;;;;;;
                                  -238500;5;0;false;false;63;95;191;;;
                                  -238505;1;0;false;false;;;;;;
                                  -238506;10;0;false;false;63;95;191;;;
                                  -238516;1;0;false;false;;;;;;
                                  -238517;5;0;false;false;63;95;191;;;
                                  -238522;1;0;false;false;;;;;;
                                  -238523;2;0;false;false;63;95;191;;;
                                  -238525;1;0;false;false;;;;;;
                                  -238526;6;0;false;false;63;95;191;;;
                                  -238532;1;0;false;false;;;;;;
                                  -238533;4;0;false;false;63;95;191;;;
                                  -238537;1;0;false;false;;;;;;
                                  -238538;2;0;false;false;63;95;191;;;
                                  -238540;1;0;false;false;;;;;;
                                  -238541;7;0;false;false;63;95;191;;;
                                  -238548;1;0;false;false;;;;;;
                                  -238549;2;0;false;false;63;95;191;;;
                                  -238551;4;0;false;false;;;;;;
                                  -238555;1;0;false;false;63;95;191;;;
                                  -238556;1;0;false;false;;;;;;
                                  -238557;9;0;false;false;63;95;191;;;
                                  -238566;1;0;false;false;;;;;;
                                  -238567;4;0;false;false;63;95;191;;;
                                  -238571;1;0;false;false;;;;;;
                                  -238572;3;0;false;false;63;95;191;;;
                                  -238575;1;0;false;false;;;;;;
                                  -238576;5;0;false;false;63;95;191;;;
                                  -238581;1;0;false;false;;;;;;
                                  -238582;9;0;false;false;63;95;191;;;
                                  -238591;1;0;false;false;;;;;;
                                  -238592;2;0;false;false;63;95;191;;;
                                  -238594;1;0;false;false;;;;;;
                                  -238595;1;0;false;false;63;95;191;;;
                                  -238596;1;0;false;false;;;;;;
                                  -238597;4;0;false;false;63;95;191;;;
                                  -238601;1;0;false;false;;;;;;
                                  -238602;2;0;false;false;63;95;191;;;
                                  -238604;1;0;false;false;;;;;;
                                  -238605;3;0;false;false;63;95;191;;;
                                  -238608;1;0;false;false;;;;;;
                                  -238609;4;0;false;false;63;95;191;;;
                                  -238613;1;0;false;false;;;;;;
                                  -238614;3;0;false;false;63;95;191;;;
                                  -238617;1;0;false;false;;;;;;
                                  -238618;9;0;false;false;63;95;191;;;
                                  -238627;1;0;false;false;;;;;;
                                  -238628;3;0;false;false;63;95;191;;;
                                  -238631;4;0;false;false;;;;;;
                                  -238635;1;0;false;false;63;95;191;;;
                                  -238636;1;0;false;false;;;;;;
                                  -238637;4;0;false;false;63;95;191;;;
                                  -238641;1;0;false;false;;;;;;
                                  -238642;10;0;false;false;63;95;191;;;
                                  -238652;4;0;false;false;;;;;;
                                  -238656;1;0;false;false;63;95;191;;;
                                  -238657;1;0;false;false;;;;;;
                                  -238658;4;0;false;false;127;127;159;;;
                                  -238662;3;0;false;false;;;;;;
                                  -238665;1;0;false;false;63;95;191;;;
                                  -238666;1;0;false;false;;;;;;
                                  -238667;3;0;false;false;127;127;159;;;
                                  -238670;3;0;false;false;;;;;;
                                  -238673;1;0;false;false;63;95;191;;;
                                  -238674;1;0;false;false;;;;;;
                                  -238675;4;0;false;false;63;95;191;;;
                                  -238679;1;0;false;false;;;;;;
                                  -238680;3;0;false;false;63;95;191;;;
                                  -238683;1;0;false;false;;;;;;
                                  -238684;5;0;false;false;63;95;191;;;
                                  -238689;1;0;false;false;;;;;;
                                  -238690;3;0;false;false;63;95;191;;;
                                  -238693;1;0;false;false;;;;;;
                                  -238694;6;0;false;false;63;95;191;;;
                                  -238700;1;0;false;false;;;;;;
                                  -238701;2;0;false;false;63;95;191;;;
                                  -238703;1;0;false;false;;;;;;
                                  -238704;8;0;false;false;63;95;191;;;
                                  -238712;1;0;false;false;;;;;;
                                  -238713;1;0;false;false;63;95;191;;;
                                  -238714;1;0;false;false;;;;;;
                                  -238715;4;0;false;false;63;95;191;;;
                                  -238719;1;0;false;false;;;;;;
                                  -238720;10;0;false;false;63;95;191;;;
                                  -238730;1;0;false;false;;;;;;
                                  -238731;3;0;false;false;63;95;191;;;
                                  -238734;1;0;false;false;;;;;;
                                  -238735;3;0;false;false;63;95;191;;;
                                  -238738;1;0;false;false;;;;;;
                                  -238739;4;0;false;false;63;95;191;;;
                                  -238743;4;0;false;false;;;;;;
                                  -238747;1;0;false;false;63;95;191;;;
                                  -238748;1;0;false;false;;;;;;
                                  -238749;10;0;false;false;63;95;191;;;
                                  -238759;1;0;false;false;;;;;;
                                  -238760;5;0;false;false;63;95;191;;;
                                  -238765;1;0;false;false;;;;;;
                                  -238766;10;0;false;false;63;95;191;;;
                                  -238776;1;0;false;false;;;;;;
                                  -238777;3;0;false;false;63;95;191;;;
                                  -238780;1;0;false;false;;;;;;
                                  -238781;3;0;false;false;63;95;191;;;
                                  -238784;1;0;false;false;;;;;;
                                  -238785;5;0;false;false;63;95;191;;;
                                  -238790;1;0;false;false;;;;;;
                                  -238791;2;0;false;false;63;95;191;;;
                                  -238793;1;0;false;false;;;;;;
                                  -238794;3;0;false;false;63;95;191;;;
                                  -238797;1;0;false;false;;;;;;
                                  -238798;6;0;false;false;63;95;191;;;
                                  -238804;1;0;false;false;;;;;;
                                  -238805;4;0;false;false;63;95;191;;;
                                  -238809;1;0;false;false;;;;;;
                                  -238810;2;0;false;false;63;95;191;;;
                                  -238812;1;0;false;false;;;;;;
                                  -238813;8;0;false;false;63;95;191;;;
                                  -238821;4;0;false;false;;;;;;
                                  -238825;1;0;false;false;63;95;191;;;
                                  -238826;1;0;false;false;;;;;;
                                  -238827;3;0;false;false;63;95;191;;;
                                  -238830;1;0;false;false;;;;;;
                                  -238831;3;0;false;false;63;95;191;;;
                                  -238834;1;0;false;false;;;;;;
                                  -238835;5;0;false;false;63;95;191;;;
                                  -238840;1;0;false;false;;;;;;
                                  -238841;4;0;false;false;63;95;191;;;
                                  -238845;1;0;false;false;;;;;;
                                  -238846;7;0;false;false;63;95;191;;;
                                  -238853;1;0;false;false;;;;;;
                                  -238854;4;0;false;false;63;95;191;;;
                                  -238858;1;0;false;false;;;;;;
                                  -238859;10;0;false;false;63;95;191;;;
                                  -238869;1;0;false;false;;;;;;
                                  -238870;6;0;false;false;63;95;191;;;
                                  -238876;1;0;false;false;;;;;;
                                  -238877;4;0;false;false;63;95;191;;;
                                  -238881;1;0;false;false;;;;;;
                                  -238882;6;0;false;false;63;95;191;;;
                                  -238888;1;0;false;false;;;;;;
                                  -238889;10;0;false;false;63;95;191;;;
                                  -238899;4;0;false;false;;;;;;
                                  -238903;1;0;false;false;63;95;191;;;
                                  -238904;1;0;false;false;;;;;;
                                  -238905;4;0;false;false;127;127;159;;;
                                  -238909;3;0;false;false;;;;;;
                                  -238912;1;0;false;false;63;95;191;;;
                                  -238913;4;0;false;false;;;;;;
                                  -238917;1;0;false;false;63;95;191;;;
                                  -238918;1;0;false;false;;;;;;
                                  -238919;7;1;false;false;127;159;191;;;
                                  -238926;9;0;false;false;63;95;191;;;
                                  -238935;1;0;false;false;;;;;;
                                  -238936;5;0;false;false;63;95;191;;;
                                  -238941;1;0;false;false;;;;;;
                                  -238942;4;0;false;false;63;95;191;;;
                                  -238946;1;0;false;false;;;;;;
                                  -238947;3;0;false;false;63;95;191;;;
                                  -238950;1;0;false;false;;;;;;
                                  -238951;5;0;false;false;63;95;191;;;
                                  -238956;1;0;false;false;;;;;;
                                  -238957;2;0;false;false;63;95;191;;;
                                  -238959;1;0;false;false;;;;;;
                                  -238960;7;0;false;false;63;95;191;;;
                                  -238967;1;0;false;false;;;;;;
                                  -238968;3;0;false;false;63;95;191;;;
                                  -238971;1;0;false;false;;;;;;
                                  -238972;1;0;false;false;63;95;191;;;
                                  -238973;1;0;false;false;;;;;;
                                  -238974;5;0;false;false;63;95;191;;;
                                  -238979;3;0;false;false;;;;;;
                                  -238982;1;0;false;false;63;95;191;;;
                                  -238983;1;0;false;false;;;;;;
                                  -238984;7;1;false;false;127;159;191;;;
                                  -238991;9;0;false;false;63;95;191;;;
                                  -239000;1;0;false;false;;;;;;
                                  -239001;6;0;false;false;63;95;191;;;
                                  -239007;1;0;false;false;;;;;;
                                  -239008;2;0;false;false;63;95;191;;;
                                  -239010;1;0;false;false;;;;;;
                                  -239011;5;0;false;false;63;95;191;;;
                                  -239016;1;0;false;false;;;;;;
                                  -239017;3;0;false;false;63;95;191;;;
                                  -239020;1;0;false;false;;;;;;
                                  -239021;5;0;false;false;63;95;191;;;
                                  -239026;1;0;false;false;;;;;;
                                  -239027;7;0;false;false;63;95;191;;;
                                  -239034;1;0;false;false;;;;;;
                                  -239035;3;0;false;false;63;95;191;;;
                                  -239038;3;0;false;false;;;;;;
                                  -239041;1;0;false;false;63;95;191;;;
                                  -239042;1;0;false;false;;;;;;
                                  -239043;7;1;false;false;127;159;191;;;
                                  -239050;10;0;false;false;63;95;191;;;
                                  -239060;1;0;false;false;;;;;;
                                  -239061;4;0;false;false;63;95;191;;;
                                  -239065;1;0;false;false;;;;;;
                                  -239066;10;0;false;false;63;95;191;;;
                                  -239076;1;0;false;false;;;;;;
                                  -239077;5;0;false;false;63;95;191;;;
                                  -239082;3;0;false;false;;;;;;
                                  -239085;1;0;false;false;63;95;191;;;
                                  -239086;1;0;false;false;;;;;;
                                  -239087;11;1;false;false;127;159;191;;;
                                  -239098;12;0;false;false;63;95;191;;;
                                  -239110;1;0;false;false;;;;;;
                                  -239111;4;0;false;false;127;127;159;;;
                                  -239115;3;0;false;false;;;;;;
                                  -239118;1;0;false;false;63;95;191;;;
                                  -239119;4;0;false;false;;;;;;
                                  -239123;4;0;false;false;127;127;159;;;
                                  -239127;21;0;false;false;63;95;191;;;
                                  -239148;1;0;false;false;;;;;;
                                  -239149;1;0;false;false;127;127;159;;;
                                  -239150;1;0;false;false;;;;;;
                                  -239151;2;0;false;false;63;95;191;;;
                                  -239153;1;0;false;false;;;;;;
                                  -239154;3;0;false;false;63;95;191;;;
                                  -239157;1;0;false;false;;;;;;
                                  -239158;8;0;false;false;63;95;191;;;
                                  -239166;1;0;false;false;;;;;;
                                  -239167;3;0;false;false;63;95;191;;;
                                  -239170;1;0;false;false;;;;;;
                                  -239171;4;0;false;false;63;95;191;;;
                                  -239175;1;0;false;false;;;;;;
                                  -239176;8;0;false;false;63;95;191;;;
                                  -239184;5;0;false;false;127;127;159;;;
                                  -239189;3;0;false;false;;;;;;
                                  -239192;1;0;false;false;63;95;191;;;
                                  -239193;4;0;false;false;;;;;;
                                  -239197;4;0;false;false;127;127;159;;;
                                  -239201;27;0;false;false;63;95;191;;;
                                  -239228;1;0;false;false;;;;;;
                                  -239229;1;0;false;false;127;127;159;;;
                                  -239230;1;0;false;false;;;;;;
                                  -239231;2;0;false;false;63;95;191;;;
                                  -239233;1;0;false;false;;;;;;
                                  -239234;3;0;false;false;63;95;191;;;
                                  -239237;1;0;false;false;;;;;;
                                  -239238;6;0;false;false;63;95;191;;;
                                  -239244;1;0;false;false;;;;;;
                                  -239245;4;0;false;false;63;95;191;;;
                                  -239249;1;0;false;false;;;;;;
                                  -239250;3;0;false;false;63;95;191;;;
                                  -239253;1;0;false;false;;;;;;
                                  -239254;6;0;false;false;63;95;191;;;
                                  -239260;1;0;false;false;;;;;;
                                  -239261;4;0;false;false;63;95;191;;;
                                  -239265;1;0;false;false;;;;;;
                                  -239266;7;0;false;false;63;95;191;;;
                                  -239273;1;0;false;false;;;;;;
                                  -239274;3;0;false;false;63;95;191;;;
                                  -239277;1;0;false;false;;;;;;
                                  -239278;8;0;false;false;63;95;191;;;
                                  -239286;5;0;false;false;127;127;159;;;
                                  -239291;3;0;false;false;;;;;;
                                  -239294;1;0;false;false;63;95;191;;;
                                  -239295;1;0;false;false;;;;;;
                                  -239296;5;0;false;false;127;127;159;;;
                                  -239301;3;0;false;false;;;;;;
                                  -239304;1;0;false;false;63;95;191;;;
                                  -239305;1;0;false;false;;;;;;
                                  -239306;11;1;false;false;127;159;191;;;
                                  -239317;24;0;false;false;63;95;191;;;
                                  -239341;1;0;false;false;;;;;;
                                  -239342;4;0;false;false;127;127;159;;;
                                  -239346;3;0;false;false;;;;;;
                                  -239349;1;0;false;false;63;95;191;;;
                                  -239350;3;0;false;false;;;;;;
                                  -239353;4;0;false;false;127;127;159;;;
                                  -239357;22;0;false;false;63;95;191;;;
                                  -239379;1;0;false;false;;;;;;
                                  -239380;4;0;false;false;63;95;191;;;
                                  -239384;1;0;false;false;;;;;;
                                  -239385;3;0;false;false;63;95;191;;;
                                  -239388;1;0;false;false;;;;;;
                                  -239389;9;0;false;false;63;95;191;;;
                                  -239398;1;0;false;false;;;;;;
                                  -239399;4;0;false;false;63;95;191;;;
                                  -239403;1;0;false;false;;;;;;
                                  -239404;5;0;false;false;63;95;191;;;
                                  -239409;1;0;false;false;;;;;;
                                  -239410;2;0;false;false;63;95;191;;;
                                  -239412;1;0;false;false;;;;;;
                                  -239413;7;0;false;false;63;95;191;;;
                                  -239420;5;0;false;false;127;127;159;;;
                                  -239425;3;0;false;false;;;;;;
                                  -239428;1;0;false;false;63;95;191;;;
                                  -239429;1;0;false;false;;;;;;
                                  -239430;5;0;false;false;127;127;159;;;
                                  -239435;3;0;false;false;;;;;;
                                  -239438;2;0;false;false;63;95;191;;;
                                  -239440;2;0;false;false;;;;;;
                                  -239442;6;1;false;false;127;0;85;;;
                                  -239448;1;0;false;false;;;;;;
                                  -239449;4;1;false;false;127;0;85;;;
                                  -239453;1;0;false;false;;;;;;
                                  -239454;18;0;false;false;0;0;0;;;
                                  -239472;3;1;false;false;127;0;85;;;
                                  -239475;1;0;false;false;;;;;;
                                  -239476;10;0;false;false;0;0;0;;;
                                  -239486;1;0;false;false;;;;;;
                                  -239487;3;1;false;false;127;0;85;;;
                                  -239490;1;0;false;false;;;;;;
                                  -239491;10;0;false;false;0;0;0;;;
                                  -239501;1;0;false;false;;;;;;
                                  -239502;5;0;false;false;0;0;0;;;
                                  -239507;1;0;false;false;;;;;;
                                  -239508;11;0;false;false;0;0;0;;;
                                  -239519;1;0;false;false;;;;;;
                                  -239520;1;0;false;false;0;0;0;;;
                                  -239521;3;0;false;false;;;;;;
                                  -239524;14;0;false;false;0;0;0;;;
                                  -239538;3;0;false;false;;;;;;
                                  -239541;3;1;false;false;127;0;85;;;
                                  -239544;1;0;false;false;;;;;;
                                  -239545;18;0;false;false;0;0;0;;;
                                  -239563;1;0;false;false;;;;;;
                                  -239564;1;0;false;false;0;0;0;;;
                                  -239565;1;0;false;false;;;;;;
                                  -239566;24;0;false;false;0;0;0;;;
                                  -239590;6;0;false;false;;;;;;
                                  -239596;76;0;false;false;63;127;95;;;
                                  -239672;1;0;false;false;;;;;;
                                  -239673;2;1;false;false;127;0;85;;;
                                  -239675;1;0;false;false;;;;;;
                                  -239676;20;0;false;false;0;0;0;;;
                                  -239696;1;0;false;false;;;;;;
                                  -239697;1;0;false;false;0;0;0;;;
                                  -239698;4;0;false;false;;;;;;
                                  -239702;6;1;false;false;127;0;85;;;
                                  -239708;1;0;false;false;0;0;0;;;
                                  -239709;3;0;false;false;;;;;;
                                  -239712;1;0;false;false;0;0;0;;;
                                  -239713;3;0;false;false;;;;;;
                                  -239716;2;1;false;false;127;0;85;;;
                                  -239718;1;0;false;false;;;;;;
                                  -239719;10;0;false;false;0;0;0;;;
                                  -239729;1;0;false;false;;;;;;
                                  -239730;1;0;false;false;0;0;0;;;
                                  -239731;1;0;false;false;;;;;;
                                  -239732;1;0;false;false;0;0;0;;;
                                  -239733;1;0;false;false;;;;;;
                                  -239734;2;0;false;false;0;0;0;;;
                                  -239736;1;0;false;false;;;;;;
                                  -239737;9;0;false;false;0;0;0;;;
                                  -239746;1;0;false;false;;;;;;
                                  -239747;1;0;false;false;0;0;0;;;
                                  -239748;1;0;false;false;;;;;;
                                  -239749;9;0;false;false;0;0;0;;;
                                  -239758;1;0;false;false;;;;;;
                                  -239759;1;0;false;false;0;0;0;;;
                                  -239760;1;0;false;false;;;;;;
                                  -239761;30;0;false;false;0;0;0;;;
                                  -239791;1;0;false;false;;;;;;
                                  -239792;1;0;false;false;0;0;0;;;
                                  -239793;4;0;false;false;;;;;;
                                  -239797;38;0;false;false;0;0;0;;;
                                  -239835;3;0;false;false;;;;;;
                                  -239838;1;0;false;false;0;0;0;;;
                                  -239839;4;0;false;false;;;;;;
                                  -239843;46;0;false;false;0;0;0;;;
                                  -239889;1;0;false;false;;;;;;
                                  -239890;10;0;false;false;0;0;0;;;
                                  -239900;1;0;false;false;;;;;;
                                  -239901;12;0;false;false;0;0;0;;;
                                  -239913;3;0;false;false;;;;;;
                                  -239916;56;0;false;false;63;127;95;;;
                                  -239972;1;0;false;false;;;;;;
                                  -239973;2;1;false;false;127;0;85;;;
                                  -239975;1;0;false;false;;;;;;
                                  -239976;10;0;false;false;0;0;0;;;
                                  -239986;1;0;false;false;;;;;;
                                  -239987;1;0;false;false;0;0;0;;;
                                  -239988;1;0;false;false;;;;;;
                                  -239989;18;0;false;false;0;0;0;;;
                                  -240007;1;0;false;false;;;;;;
                                  -240008;2;0;false;false;0;0;0;;;
                                  -240010;1;0;false;false;;;;;;
                                  -240011;9;0;false;false;0;0;0;;;
                                  -240020;1;0;false;false;;;;;;
                                  -240021;1;0;false;false;0;0;0;;;
                                  -240022;1;0;false;false;;;;;;
                                  -240023;9;0;false;false;0;0;0;;;
                                  -240032;1;0;false;false;;;;;;
                                  -240033;1;0;false;false;0;0;0;;;
                                  -240034;1;0;false;false;;;;;;
                                  -240035;1;0;false;false;0;0;0;;;
                                  -240036;1;0;false;false;;;;;;
                                  -240037;1;0;false;false;0;0;0;;;
                                  -240038;1;0;false;false;;;;;;
                                  -240039;9;0;false;false;0;0;0;;;
                                  -240048;1;0;false;false;;;;;;
                                  -240049;1;0;false;false;0;0;0;;;
                                  -240050;4;0;false;false;;;;;;
                                  -240054;6;1;false;false;127;0;85;;;
                                  -240060;1;0;false;false;0;0;0;;;
                                  -240061;3;0;false;false;;;;;;
                                  -240064;1;0;false;false;0;0;0;;;
                                  -240065;3;0;false;false;;;;;;
                                  -240068;30;0;false;false;63;127;95;;;
                                  -240098;1;0;false;false;;;;;;
                                  -240099;2;1;false;false;127;0;85;;;
                                  -240101;1;0;false;false;;;;;;
                                  -240102;10;0;false;false;0;0;0;;;
                                  -240112;1;0;false;false;;;;;;
                                  -240113;1;0;false;false;0;0;0;;;
                                  -240114;1;0;false;false;;;;;;
                                  -240115;9;0;false;false;0;0;0;;;
                                  -240124;1;0;false;false;;;;;;
                                  -240125;1;0;false;false;0;0;0;;;
                                  -240126;4;0;false;false;;;;;;
                                  -240130;9;0;false;false;0;0;0;;;
                                  -240139;1;0;false;false;;;;;;
                                  -240140;2;0;false;false;0;0;0;;;
                                  -240142;1;0;false;false;;;;;;
                                  -240143;8;0;false;false;0;0;0;;;
                                  -240151;1;0;false;false;;;;;;
                                  -240152;1;0;false;false;0;0;0;;;
                                  -240153;1;0;false;false;;;;;;
                                  -240154;10;0;false;false;0;0;0;;;
                                  -240164;4;0;false;false;;;;;;
                                  -240168;9;0;false;false;0;0;0;;;
                                  -240177;1;0;false;false;;;;;;
                                  -240178;1;0;false;false;0;0;0;;;
                                  -240179;1;0;false;false;;;;;;
                                  -240180;9;0;false;false;0;0;0;;;
                                  -240189;3;0;false;false;;;;;;
                                  -240192;1;0;false;false;0;0;0;;;
                                  -240193;3;0;false;false;;;;;;
                                  -240196;2;1;false;false;127;0;85;;;
                                  -240198;1;0;false;false;;;;;;
                                  -240199;10;0;false;false;0;0;0;;;
                                  -240209;1;0;false;false;;;;;;
                                  -240210;1;0;false;false;0;0;0;;;
                                  -240211;1;0;false;false;;;;;;
                                  -240212;9;0;false;false;0;0;0;;;
                                  -240221;1;0;false;false;;;;;;
                                  -240222;1;0;false;false;0;0;0;;;
                                  -240223;1;0;false;false;;;;;;
                                  -240224;1;0;false;false;0;0;0;;;
                                  -240225;1;0;false;false;;;;;;
                                  -240226;1;0;false;false;0;0;0;;;
                                  -240227;1;0;false;false;;;;;;
                                  -240228;19;0;false;false;0;0;0;;;
                                  -240247;1;0;false;false;;;;;;
                                  -240248;1;0;false;false;0;0;0;;;
                                  -240249;4;0;false;false;;;;;;
                                  -240253;9;0;false;false;0;0;0;;;
                                  -240262;1;0;false;false;;;;;;
                                  -240263;1;0;false;false;0;0;0;;;
                                  -240264;1;0;false;false;;;;;;
                                  -240265;18;0;false;false;0;0;0;;;
                                  -240283;1;0;false;false;;;;;;
                                  -240284;1;0;false;false;0;0;0;;;
                                  -240285;1;0;false;false;;;;;;
                                  -240286;9;0;false;false;0;0;0;;;
                                  -240295;1;0;false;false;;;;;;
                                  -240296;1;0;false;false;0;0;0;;;
                                  -240297;1;0;false;false;;;;;;
                                  -240298;2;0;false;false;0;0;0;;;
                                  -240300;3;0;false;false;;;;;;
                                  -240303;1;0;false;false;0;0;0;;;
                                  -240304;3;0;false;false;;;;;;
                                  -240307;9;0;false;false;0;0;0;;;
                                  -240316;1;0;false;false;;;;;;
                                  -240317;2;0;false;false;0;0;0;;;
                                  -240319;1;0;false;false;;;;;;
                                  -240320;9;0;false;false;0;0;0;;;
                                  -240329;3;0;false;false;;;;;;
                                  -240332;5;1;false;false;127;0;85;;;
                                  -240337;8;0;false;false;0;0;0;;;
                                  -240345;4;0;false;false;;;;;;
                                  -240349;11;0;false;false;0;0;0;;;
                                  -240360;1;0;false;false;;;;;;
                                  -240361;9;0;false;false;0;0;0;;;
                                  -240370;1;0;false;false;;;;;;
                                  -240371;1;0;false;false;0;0;0;;;
                                  -240372;1;0;false;false;;;;;;
                                  -240373;10;0;false;false;0;0;0;;;
                                  -240383;1;0;false;false;;;;;;
                                  -240384;1;0;false;false;0;0;0;;;
                                  -240385;1;0;false;false;;;;;;
                                  -240386;10;0;false;false;0;0;0;;;
                                  -240396;5;0;false;false;;;;;;
                                  -240401;21;0;false;false;0;0;0;;;
                                  -240422;1;0;false;false;;;;;;
                                  -240423;1;0;false;false;0;0;0;;;
                                  -240424;1;0;false;false;;;;;;
                                  -240425;10;0;false;false;0;0;0;;;
                                  -240435;1;0;false;false;;;;;;
                                  -240436;1;0;false;false;0;0;0;;;
                                  -240437;1;0;false;false;;;;;;
                                  -240438;12;0;false;false;0;0;0;;;
                                  -240450;1;0;false;false;;;;;;
                                  -240451;9;0;false;false;0;0;0;;;
                                  -240460;1;0;false;false;;;;;;
                                  -240461;1;0;false;false;0;0;0;;;
                                  -240462;1;0;false;false;;;;;;
                                  -240463;11;0;false;false;0;0;0;;;
                                  -240474;1;0;false;false;;;;;;
                                  -240475;4;1;false;false;127;0;85;;;
                                  -240479;2;0;false;false;0;0;0;;;
                                  -240481;2;0;false;false;;;;;;
                                  -240483;1;0;false;false;0;0;0;;;
                                  -240484;2;0;false;false;;;;;;
                                  -240486;3;0;false;false;63;95;191;;;
                                  -240489;3;0;false;false;;;;;;
                                  -240492;1;0;false;false;63;95;191;;;
                                  -240493;1;0;false;false;;;;;;
                                  -240494;5;0;false;false;63;95;191;;;
                                  -240499;1;0;false;false;;;;;;
                                  -240500;9;0;false;false;63;95;191;;;
                                  -240509;1;0;false;false;;;;;;
                                  -240510;6;0;false;false;63;95;191;;;
                                  -240516;1;0;false;false;;;;;;
                                  -240517;5;0;false;false;63;95;191;;;
                                  -240522;1;0;false;false;;;;;;
                                  -240523;2;0;false;false;63;95;191;;;
                                  -240525;1;0;false;false;;;;;;
                                  -240526;4;0;false;false;63;95;191;;;
                                  -240530;1;0;false;false;;;;;;
                                  -240531;9;0;false;false;63;95;191;;;
                                  -240540;1;0;false;false;;;;;;
                                  -240541;10;0;false;false;63;95;191;;;
                                  -240551;3;0;false;false;;;;;;
                                  -240554;2;0;false;false;63;95;191;;;
                                  -240556;2;0;false;false;;;;;;
                                  -240558;4;1;false;false;127;0;85;;;
                                  -240562;1;0;false;false;;;;;;
                                  -240563;29;0;false;false;0;0;0;;;
                                  -240592;1;0;false;false;;;;;;
                                  -240593;1;0;false;false;0;0;0;;;
                                  -240594;3;0;false;false;;;;;;
                                  -240597;2;1;false;false;127;0;85;;;
                                  -240599;1;0;false;false;;;;;;
                                  -240600;18;0;false;false;0;0;0;;;
                                  -240618;1;0;false;false;;;;;;
                                  -240619;1;0;false;false;0;0;0;;;
                                  -240620;4;0;false;false;;;;;;
                                  -240624;2;1;false;false;127;0;85;;;
                                  -240626;1;0;false;false;;;;;;
                                  -240627;12;0;false;false;0;0;0;;;
                                  -240639;1;0;false;false;;;;;;
                                  -240640;1;0;false;false;0;0;0;;;
                                  -240641;1;0;false;false;;;;;;
                                  -240642;23;0;false;false;0;0;0;;;
                                  -240665;1;0;false;false;;;;;;
                                  -240666;1;0;false;false;0;0;0;;;
                                  -240667;5;0;false;false;;;;;;
                                  -240672;15;0;false;false;0;0;0;;;
                                  -240687;1;0;false;false;;;;;;
                                  -240688;1;0;false;false;0;0;0;;;
                                  -240689;1;0;false;false;;;;;;
                                  -240690;23;0;false;false;0;0;0;;;
                                  -240713;4;0;false;false;;;;;;
                                  -240717;1;0;false;false;0;0;0;;;
                                  -240718;4;0;false;false;;;;;;
                                  -240722;4;1;false;false;127;0;85;;;
                                  -240726;1;0;false;false;;;;;;
                                  -240727;2;1;false;false;127;0;85;;;
                                  -240729;1;0;false;false;;;;;;
                                  -240730;12;0;false;false;0;0;0;;;
                                  -240742;1;0;false;false;;;;;;
                                  -240743;1;0;false;false;0;0;0;;;
                                  -240744;1;0;false;false;;;;;;
                                  -240745;23;0;false;false;0;0;0;;;
                                  -240768;1;0;false;false;;;;;;
                                  -240769;1;0;false;false;0;0;0;;;
                                  -240770;5;0;false;false;;;;;;
                                  -240775;15;0;false;false;0;0;0;;;
                                  -240790;1;0;false;false;;;;;;
                                  -240791;1;0;false;false;0;0;0;;;
                                  -240792;1;0;false;false;;;;;;
                                  -240793;23;0;false;false;0;0;0;;;
                                  -240816;4;0;false;false;;;;;;
                                  -240820;1;0;false;false;0;0;0;;;
                                  -240821;3;0;false;false;;;;;;
                                  -240824;1;0;false;false;0;0;0;;;
                                  -240825;2;0;false;false;;;;;;
                                  -240827;1;0;false;false;0;0;0;;;
                                  -240828;2;0;false;false;;;;;;
                                  -240830;3;0;false;false;63;95;191;;;
                                  -240833;3;0;false;false;;;;;;
                                  -240836;1;0;false;false;63;95;191;;;
                                  -240837;1;0;false;false;;;;;;
                                  -240838;4;0;false;false;63;95;191;;;
                                  -240842;1;0;false;false;;;;;;
                                  -240843;3;0;false;false;63;95;191;;;
                                  -240846;1;0;false;false;;;;;;
                                  -240847;11;0;false;false;63;95;191;;;
                                  -240858;1;0;false;false;;;;;;
                                  -240859;2;0;false;false;63;95;191;;;
                                  -240861;1;0;false;false;;;;;;
                                  -240862;3;0;false;false;63;95;191;;;
                                  -240865;1;0;false;false;;;;;;
                                  -240866;9;0;false;false;63;95;191;;;
                                  -240875;1;0;false;false;;;;;;
                                  -240876;5;0;false;false;63;95;191;;;
                                  -240881;1;0;false;false;;;;;;
                                  -240882;4;0;false;false;63;95;191;;;
                                  -240886;1;0;false;false;;;;;;
                                  -240887;2;0;false;false;63;95;191;;;
                                  -240889;1;0;false;false;;;;;;
                                  -240890;3;0;false;false;63;95;191;;;
                                  -240893;3;0;false;false;;;;;;
                                  -240896;1;0;false;false;63;95;191;;;
                                  -240897;1;0;false;false;;;;;;
                                  -240898;2;0;false;false;63;95;191;;;
                                  -240900;1;0;false;false;;;;;;
                                  -240901;3;0;false;false;63;95;191;;;
                                  -240904;1;0;false;false;;;;;;
                                  -240905;9;0;false;false;63;95;191;;;
                                  -240914;1;0;false;false;;;;;;
                                  -240915;6;0;false;false;127;127;159;;;
                                  -240921;17;0;false;false;63;95;191;;;
                                  -240938;7;0;false;false;127;127;159;;;
                                  -240945;1;0;false;false;;;;;;
                                  -240946;2;0;false;false;63;95;191;;;
                                  -240948;1;0;false;false;;;;;;
                                  -240949;6;0;false;false;127;127;159;;;
                                  -240955;17;0;false;false;63;95;191;;;
                                  -240972;7;0;false;false;127;127;159;;;
                                  -240979;1;0;false;false;63;95;191;;;
                                  -240980;3;0;false;false;;;;;;
                                  -240983;1;0;false;false;63;95;191;;;
                                  -240984;1;0;false;false;;;;;;
                                  -240985;3;0;false;false;127;127;159;;;
                                  -240988;3;0;false;false;;;;;;
                                  -240991;1;0;false;false;63;95;191;;;
                                  -240992;3;0;false;false;;;;;;
                                  -240995;1;0;false;false;63;95;191;;;
                                  -240996;1;0;false;false;;;;;;
                                  -240997;7;1;false;false;127;159;191;;;
                                  -241004;11;0;false;false;63;95;191;;;
                                  -241015;1;0;false;false;;;;;;
                                  -241016;3;0;false;false;63;95;191;;;
                                  -241019;1;0;false;false;;;;;;
                                  -241020;11;0;false;false;63;95;191;;;
                                  -241031;1;0;false;false;;;;;;
                                  -241032;5;0;false;false;63;95;191;;;
                                  -241037;3;0;false;false;;;;;;
                                  -241040;1;0;false;false;63;95;191;;;
                                  -241041;4;0;false;false;;;;;;
                                  -241045;1;0;false;false;63;95;191;;;
                                  -241046;1;0;false;false;;;;;;
                                  -241047;11;1;false;false;127;159;191;;;
                                  -241058;12;0;false;false;63;95;191;;;
                                  -241070;1;0;false;false;;;;;;
                                  -241071;4;0;false;false;127;127;159;;;
                                  -241075;3;0;false;false;;;;;;
                                  -241078;1;0;false;false;63;95;191;;;
                                  -241079;4;0;false;false;;;;;;
                                  -241083;4;0;false;false;127;127;159;;;
                                  -241087;21;0;false;false;63;95;191;;;
                                  -241108;1;0;false;false;;;;;;
                                  -241109;1;0;false;false;127;127;159;;;
                                  -241110;1;0;false;false;;;;;;
                                  -241111;2;0;false;false;63;95;191;;;
                                  -241113;1;0;false;false;;;;;;
                                  -241114;3;0;false;false;63;95;191;;;
                                  -241117;1;0;false;false;;;;;;
                                  -241118;8;0;false;false;63;95;191;;;
                                  -241126;1;0;false;false;;;;;;
                                  -241127;3;0;false;false;63;95;191;;;
                                  -241130;1;0;false;false;;;;;;
                                  -241131;4;0;false;false;63;95;191;;;
                                  -241135;1;0;false;false;;;;;;
                                  -241136;8;0;false;false;63;95;191;;;
                                  -241144;5;0;false;false;127;127;159;;;
                                  -241149;3;0;false;false;;;;;;
                                  -241152;1;0;false;false;63;95;191;;;
                                  -241153;4;0;false;false;;;;;;
                                  -241157;4;0;false;false;127;127;159;;;
                                  -241161;27;0;false;false;63;95;191;;;
                                  -241188;1;0;false;false;;;;;;
                                  -241189;1;0;false;false;127;127;159;;;
                                  -241190;1;0;false;false;;;;;;
                                  -241191;2;0;false;false;63;95;191;;;
                                  -241193;1;0;false;false;;;;;;
                                  -241194;3;0;false;false;63;95;191;;;
                                  -241197;1;0;false;false;;;;;;
                                  -241198;6;0;false;false;63;95;191;;;
                                  -241204;1;0;false;false;;;;;;
                                  -241205;4;0;false;false;63;95;191;;;
                                  -241209;1;0;false;false;;;;;;
                                  -241210;3;0;false;false;63;95;191;;;
                                  -241213;1;0;false;false;;;;;;
                                  -241214;6;0;false;false;63;95;191;;;
                                  -241220;1;0;false;false;;;;;;
                                  -241221;4;0;false;false;63;95;191;;;
                                  -241225;1;0;false;false;;;;;;
                                  -241226;7;0;false;false;63;95;191;;;
                                  -241233;1;0;false;false;;;;;;
                                  -241234;3;0;false;false;63;95;191;;;
                                  -241237;1;0;false;false;;;;;;
                                  -241238;8;0;false;false;63;95;191;;;
                                  -241246;5;0;false;false;127;127;159;;;
                                  -241251;3;0;false;false;;;;;;
                                  -241254;1;0;false;false;63;95;191;;;
                                  -241255;1;0;false;false;;;;;;
                                  -241256;5;0;false;false;127;127;159;;;
                                  -241261;3;0;false;false;;;;;;
                                  -241264;1;0;false;false;63;95;191;;;
                                  -241265;4;0;false;false;;;;;;
                                  -241269;1;0;false;false;63;95;191;;;
                                  -241270;1;0;false;false;;;;;;
                                  -241271;7;1;false;false;127;159;191;;;
                                  -241278;5;0;false;false;63;95;191;;;
                                  -241283;3;0;false;false;;;;;;
                                  -241286;2;0;false;false;63;95;191;;;
                                  -241288;2;0;false;false;;;;;;
                                  -241290;6;1;false;false;127;0;85;;;
                                  -241296;1;0;false;false;;;;;;
                                  -241297;4;1;false;false;127;0;85;;;
                                  -241301;1;0;false;false;;;;;;
                                  -241302;15;0;false;false;0;0;0;;;
                                  -241317;3;1;false;false;127;0;85;;;
                                  -241320;1;0;false;false;;;;;;
                                  -241321;12;0;false;false;0;0;0;;;
                                  -241333;1;0;false;false;;;;;;
                                  -241334;1;0;false;false;0;0;0;;;
                                  -241335;3;0;false;false;;;;;;
                                  -241338;2;1;false;false;127;0;85;;;
                                  -241340;1;0;false;false;;;;;;
                                  -241341;13;0;false;false;0;0;0;;;
                                  -241354;1;0;false;false;;;;;;
                                  -241355;1;0;false;false;0;0;0;;;
                                  -241356;1;0;false;false;;;;;;
                                  -241357;18;0;false;false;0;0;0;;;
                                  -241375;1;0;false;false;;;;;;
                                  -241376;1;0;false;false;0;0;0;;;
                                  -241377;1;0;false;false;;;;;;
                                  -241378;19;0;false;false;0;0;0;;;
                                  -241397;1;0;false;false;;;;;;
                                  -241398;2;0;false;false;0;0;0;;;
                                  -241400;1;0;false;false;;;;;;
                                  -241401;2;0;false;false;0;0;0;;;
                                  -241403;1;0;false;false;;;;;;
                                  -241404;1;0;false;false;0;0;0;;;
                                  -241405;5;0;false;false;;;;;;
                                  -241410;6;1;false;false;127;0;85;;;
                                  -241416;1;0;false;false;0;0;0;;;
                                  -241417;3;0;false;false;;;;;;
                                  -241420;1;0;false;false;0;0;0;;;
                                  -241421;3;0;false;false;;;;;;
                                  -241424;2;1;false;false;127;0;85;;;
                                  -241426;1;0;false;false;;;;;;
                                  -241427;13;0;false;false;0;0;0;;;
                                  -241440;1;0;false;false;;;;;;
                                  -241441;1;0;false;false;0;0;0;;;
                                  -241442;1;0;false;false;;;;;;
                                  -241443;18;0;false;false;0;0;0;;;
                                  -241461;1;0;false;false;;;;;;
                                  -241462;2;0;false;false;0;0;0;;;
                                  -241464;1;0;false;false;;;;;;
                                  -241465;1;0;false;false;0;0;0;;;
                                  -241466;1;0;false;false;;;;;;
                                  -241467;2;0;false;false;0;0;0;;;
                                  -241469;1;0;false;false;;;;;;
                                  -241470;12;0;false;false;0;0;0;;;
                                  -241482;1;0;false;false;;;;;;
                                  -241483;1;0;false;false;0;0;0;;;
                                  -241484;1;0;false;false;;;;;;
                                  -241485;18;0;false;false;0;0;0;;;
                                  -241503;1;0;false;false;;;;;;
                                  -241504;2;0;false;false;0;0;0;;;
                                  -241506;1;0;false;false;;;;;;
                                  -241507;2;0;false;false;0;0;0;;;
                                  -241509;1;0;false;false;;;;;;
                                  -241510;1;0;false;false;0;0;0;;;
                                  -241511;4;0;false;false;;;;;;
                                  -241515;6;1;false;false;127;0;85;;;
                                  -241521;1;0;false;false;0;0;0;;;
                                  -241522;4;0;false;false;;;;;;
                                  -241526;1;0;false;false;0;0;0;;;
                                  -241527;3;0;false;false;;;;;;
                                  -241530;2;1;false;false;127;0;85;;;
                                  -241532;1;0;false;false;;;;;;
                                  -241533;13;0;false;false;0;0;0;;;
                                  -241546;1;0;false;false;;;;;;
                                  -241547;1;0;false;false;0;0;0;;;
                                  -241548;1;0;false;false;;;;;;
                                  -241549;18;0;false;false;0;0;0;;;
                                  -241567;1;0;false;false;;;;;;
                                  -241568;2;0;false;false;0;0;0;;;
                                  -241570;1;0;false;false;;;;;;
                                  -241571;1;0;false;false;0;0;0;;;
                                  -241572;1;0;false;false;;;;;;
                                  -241573;2;0;false;false;0;0;0;;;
                                  -241575;1;0;false;false;;;;;;
                                  -241576;13;0;false;false;0;0;0;;;
                                  -241589;1;0;false;false;;;;;;
                                  -241590;1;0;false;false;0;0;0;;;
                                  -241591;4;0;false;false;;;;;;
                                  -241595;6;1;false;false;127;0;85;;;
                                  -241601;1;0;false;false;0;0;0;;;
                                  -241602;4;0;false;false;;;;;;
                                  -241606;1;0;false;false;0;0;0;;;
                                  -241607;4;0;false;false;;;;;;
                                  -241611;2;1;false;false;127;0;85;;;
                                  -241613;1;0;false;false;;;;;;
                                  -241614;13;0;false;false;0;0;0;;;
                                  -241627;1;0;false;false;;;;;;
                                  -241628;1;0;false;false;0;0;0;;;
                                  -241629;1;0;false;false;;;;;;
                                  -241630;18;0;false;false;0;0;0;;;
                                  -241648;1;0;false;false;;;;;;
                                  -241649;2;0;false;false;0;0;0;;;
                                  -241651;1;0;false;false;;;;;;
                                  -241652;1;0;false;false;0;0;0;;;
                                  -241653;1;0;false;false;;;;;;
                                  -241654;2;0;false;false;0;0;0;;;
                                  -241656;1;0;false;false;;;;;;
                                  -241657;14;0;false;false;0;0;0;;;
                                  -241671;1;0;false;false;;;;;;
                                  -241672;1;0;false;false;0;0;0;;;
                                  -241673;4;0;false;false;;;;;;
                                  -241677;6;1;false;false;127;0;85;;;
                                  -241683;1;0;false;false;0;0;0;;;
                                  -241684;3;0;false;false;;;;;;
                                  -241687;1;0;false;false;0;0;0;;;
                                  -241688;3;0;false;false;;;;;;
                                  -241691;2;1;false;false;127;0;85;;;
                                  -241693;1;0;false;false;;;;;;
                                  -241694;33;0;false;false;0;0;0;;;
                                  -241727;1;0;false;false;;;;;;
                                  -241728;13;0;false;false;0;0;0;;;
                                  -241741;1;0;false;false;;;;;;
                                  -241742;1;0;false;false;0;0;0;;;
                                  -241743;4;0;false;false;;;;;;
                                  -241747;6;1;false;false;127;0;85;;;
                                  -241753;1;0;false;false;0;0;0;;;
                                  -241754;3;0;false;false;;;;;;
                                  -241757;1;0;false;false;0;0;0;;;
                                  -241758;3;0;false;false;;;;;;
                                  -241761;10;0;false;false;0;0;0;;;
                                  -241771;1;0;false;false;;;;;;
                                  -241772;1;0;false;false;0;0;0;;;
                                  -241773;1;0;false;false;;;;;;
                                  -241774;12;0;false;false;0;0;0;;;
                                  -241786;1;0;false;false;;;;;;
                                  -241787;1;0;false;false;0;0;0;;;
                                  -241788;1;0;false;false;;;;;;
                                  -241789;18;0;false;false;0;0;0;;;
                                  -241807;1;0;false;false;;;;;;
                                  -241808;2;0;false;false;0;0;0;;;
                                  -241810;1;0;false;false;;;;;;
                                  -241811;2;0;false;false;0;0;0;;;
                                  -241813;3;0;false;false;;;;;;
                                  -241816;21;0;false;false;0;0;0;;;
                                  -241837;3;0;false;false;;;;;;
                                  -241840;14;0;false;false;0;0;0;;;
                                  -241854;1;0;false;false;;;;;;
                                  -241855;1;0;false;false;0;0;0;;;
                                  -241856;1;0;false;false;;;;;;
                                  -241857;9;0;false;false;0;0;0;;;
                                  -241866;3;0;false;false;;;;;;
                                  -241869;19;0;false;false;0;0;0;;;
                                  -241888;3;0;false;false;;;;;;
                                  -241891;21;0;false;false;0;0;0;;;
                                  -241912;3;0;false;false;;;;;;
                                  -241915;20;0;false;false;0;0;0;;;
                                  -241935;3;0;false;false;;;;;;
                                  -241938;5;1;false;false;127;0;85;;;
                                  -241943;10;0;false;false;0;0;0;;;
                                  -241953;2;0;false;false;;;;;;
                                  -241955;1;0;false;false;0;0;0;;;
                                  -241956;2;0;false;false;;;;;;
                                  -241958;3;0;false;false;63;95;191;;;
                                  -241961;3;0;false;false;;;;;;
                                  -241964;1;0;false;false;63;95;191;;;
                                  -241965;1;0;false;false;;;;;;
                                  -241966;7;0;false;false;63;95;191;;;
                                  -241973;1;0;false;false;;;;;;
                                  -241974;3;0;false;false;63;95;191;;;
                                  -241977;1;0;false;false;;;;;;
                                  -241978;7;0;false;false;63;95;191;;;
                                  -241985;1;0;false;false;;;;;;
                                  -241986;3;0;false;false;63;95;191;;;
                                  -241989;1;0;false;false;;;;;;
                                  -241990;3;0;false;false;63;95;191;;;
                                  -241993;1;0;false;false;;;;;;
                                  -241994;4;0;false;false;63;95;191;;;
                                  -241998;1;0;false;false;;;;;;
                                  -241999;4;0;false;false;63;95;191;;;
                                  -242003;1;0;false;false;;;;;;
                                  -242004;2;0;false;false;63;95;191;;;
                                  -242006;1;0;false;false;;;;;;
                                  -242007;3;0;false;false;63;95;191;;;
                                  -242010;1;0;false;false;;;;;;
                                  -242011;6;0;false;false;63;95;191;;;
                                  -242017;1;0;false;false;;;;;;
                                  -242018;4;0;false;false;63;95;191;;;
                                  -242022;1;0;false;false;;;;;;
                                  -242023;2;0;false;false;63;95;191;;;
                                  -242025;4;0;false;false;;;;;;
                                  -242029;1;0;false;false;63;95;191;;;
                                  -242030;1;0;false;false;;;;;;
                                  -242031;7;0;false;false;63;95;191;;;
                                  -242038;1;0;false;false;;;;;;
                                  -242039;7;0;false;false;63;95;191;;;
                                  -242046;1;0;false;false;;;;;;
                                  -242047;12;0;false;false;63;95;191;;;
                                  -242059;1;0;false;false;;;;;;
                                  -242060;8;0;false;false;63;95;191;;;
                                  -242068;3;0;false;false;;;;;;
                                  -242071;2;0;false;false;63;95;191;;;
                                  -242073;2;0;false;false;;;;;;
                                  -242075;4;1;false;false;127;0;85;;;
                                  -242079;1;0;false;false;;;;;;
                                  -242080;15;0;false;false;0;0;0;;;
                                  -242095;1;0;false;false;;;;;;
                                  -242096;1;0;false;false;0;0;0;;;
                                  -242097;3;0;false;false;;;;;;
                                  -242100;9;0;false;false;0;0;0;;;
                                  -242109;1;0;false;false;;;;;;
                                  -242110;11;0;false;false;0;0;0;;;
                                  -242121;1;0;false;false;;;;;;
                                  -242122;1;0;false;false;0;0;0;;;
                                  -242123;1;0;false;false;;;;;;
                                  -242124;17;0;false;false;0;0;0;;;
                                  -242141;6;0;false;false;;;;;;
                                  -242147;2;1;false;false;127;0;85;;;
                                  -242149;1;0;false;false;;;;;;
                                  -242150;12;0;false;false;0;0;0;;;
                                  -242162;1;0;false;false;;;;;;
                                  -242163;2;0;false;false;0;0;0;;;
                                  -242165;1;0;false;false;;;;;;
                                  -242166;4;1;false;false;127;0;85;;;
                                  -242170;1;0;false;false;0;0;0;;;
                                  -242171;1;0;false;false;;;;;;
                                  -242172;1;0;false;false;0;0;0;;;
                                  -242173;4;0;false;false;;;;;;
                                  -242177;9;0;false;false;0;0;0;;;
                                  -242186;1;0;false;false;;;;;;
                                  -242187;10;0;false;false;0;0;0;;;
                                  -242197;1;0;false;false;;;;;;
                                  -242198;1;0;false;false;0;0;0;;;
                                  -242199;1;0;false;false;;;;;;
                                  -242200;16;0;false;false;0;0;0;;;
                                  -242216;4;0;false;false;;;;;;
                                  -242220;5;1;false;false;127;0;85;;;
                                  -242225;1;0;false;false;;;;;;
                                  -242226;3;1;false;false;127;0;85;;;
                                  -242229;1;0;false;false;;;;;;
                                  -242230;8;0;false;false;0;0;0;;;
                                  -242238;1;0;false;false;;;;;;
                                  -242239;1;0;false;false;0;0;0;;;
                                  -242240;1;0;false;false;;;;;;
                                  -242241;2;0;false;false;0;0;0;;;
                                  -242243;4;0;false;false;;;;;;
                                  -242247;3;1;false;false;127;0;85;;;
                                  -242250;1;0;false;false;;;;;;
                                  -242251;7;0;false;false;0;0;0;;;
                                  -242258;1;0;false;false;;;;;;
                                  -242259;1;0;false;false;0;0;0;;;
                                  -242260;1;0;false;false;;;;;;
                                  -242261;22;0;false;false;0;0;0;;;
                                  -242283;1;0;false;false;;;;;;
                                  -242284;1;0;false;false;0;0;0;;;
                                  -242285;1;0;false;false;;;;;;
                                  -242286;23;0;false;false;0;0;0;;;
                                  -242309;8;0;false;false;;;;;;
                                  -242317;60;0;false;false;63;127;95;;;
                                  -242377;2;0;false;false;;;;;;
                                  -242379;65;0;false;false;63;127;95;;;
                                  -242444;2;0;false;false;;;;;;
                                  -242446;56;0;false;false;63;127;95;;;
                                  -242502;2;0;false;false;;;;;;
                                  -242504;2;1;false;false;127;0;85;;;
                                  -242506;1;0;false;false;;;;;;
                                  -242507;18;0;false;false;0;0;0;;;
                                  -242525;1;0;false;false;;;;;;
                                  -242526;1;0;false;false;0;0;0;;;
                                  -242527;1;0;false;false;;;;;;
                                  -242528;8;0;false;false;0;0;0;;;
                                  -242536;1;0;false;false;;;;;;
                                  -242537;1;0;false;false;0;0;0;;;
                                  -242538;5;0;false;false;;;;;;
                                  -242543;22;0;false;false;0;0;0;;;
                                  -242565;6;0;false;false;;;;;;
                                  -242571;27;0;false;false;0;0;0;;;
                                  -242598;6;0;false;false;;;;;;
                                  -242604;25;0;false;false;0;0;0;;;
                                  -242629;6;0;false;false;;;;;;
                                  -242635;8;0;false;false;0;0;0;;;
                                  -242643;6;0;false;false;;;;;;
                                  -242649;18;0;false;false;0;0;0;;;
                                  -242667;4;0;false;false;;;;;;
                                  -242671;15;0;false;false;63;127;95;;;
                                  -242686;4;0;false;false;;;;;;
                                  -242690;27;0;false;false;0;0;0;;;
                                  -242717;6;0;false;false;;;;;;
                                  -242723;19;0;false;false;0;0;0;;;
                                  -242742;4;0;false;false;;;;;;
                                  -242746;14;0;false;false;63;127;95;;;
                                  -242760;2;0;false;false;;;;;;
                                  -242762;1;0;false;false;0;0;0;;;
                                  -242763;4;0;false;false;;;;;;
                                  -242767;4;1;false;false;127;0;85;;;
                                  -242771;4;0;false;false;;;;;;
                                  -242775;2;1;false;false;127;0;85;;;
                                  -242777;1;0;false;false;;;;;;
                                  -242778;23;0;false;false;0;0;0;;;
                                  -242801;1;0;false;false;;;;;;
                                  -242802;2;0;false;false;0;0;0;;;
                                  -242804;1;0;false;false;;;;;;
                                  -242805;8;0;false;false;0;0;0;;;
                                  -242813;1;0;false;false;;;;;;
                                  -242814;2;0;false;false;0;0;0;;;
                                  -242816;1;0;false;false;;;;;;
                                  -242817;24;0;false;false;0;0;0;;;
                                  -242841;1;0;false;false;;;;;;
                                  -242842;2;0;false;false;0;0;0;;;
                                  -242844;1;0;false;false;;;;;;
                                  -242845;9;0;false;false;0;0;0;;;
                                  -242854;1;0;false;false;;;;;;
                                  -242855;1;0;false;false;0;0;0;;;
                                  -242856;5;0;false;false;;;;;;
                                  -242861;22;0;false;false;0;0;0;;;
                                  -242883;6;0;false;false;;;;;;
                                  -242889;27;0;false;false;0;0;0;;;
                                  -242916;6;0;false;false;;;;;;
                                  -242922;25;0;false;false;0;0;0;;;
                                  -242947;6;0;false;false;;;;;;
                                  -242953;9;0;false;false;0;0;0;;;
                                  -242962;6;0;false;false;;;;;;
                                  -242968;9;0;false;false;0;0;0;;;
                                  -242977;6;0;false;false;;;;;;
                                  -242983;27;0;false;false;0;0;0;;;
                                  -243010;6;0;false;false;;;;;;
                                  -243016;10;0;false;false;0;0;0;;;
                                  -243026;4;0;false;false;;;;;;
                                  -243030;1;0;false;false;0;0;0;;;
                                  -243031;5;0;false;false;;;;;;
                                  -243036;1;0;false;false;0;0;0;;;
                                  -243037;3;0;false;false;;;;;;
                                  -243040;25;0;false;false;0;0;0;;;
                                  -243065;2;0;false;false;;;;;;
                                  -243067;1;0;false;false;0;0;0;;;
                                  -243068;2;0;false;false;;;;;;
                                  -243070;3;0;false;false;63;95;191;;;
                                  -243073;4;0;false;false;;;;;;
                                  -243077;1;0;false;false;63;95;191;;;
                                  -243078;1;0;false;false;;;;;;
                                  -243079;4;0;false;false;63;95;191;;;
                                  -243083;1;0;false;false;;;;;;
                                  -243084;3;0;false;false;63;95;191;;;
                                  -243087;1;0;false;false;;;;;;
                                  -243088;9;0;false;false;63;95;191;;;
                                  -243097;1;0;false;false;;;;;;
                                  -243098;2;0;false;false;63;95;191;;;
                                  -243100;1;0;false;false;;;;;;
                                  -243101;3;0;false;false;63;95;191;;;
                                  -243104;1;0;false;false;;;;;;
                                  -243105;5;0;false;false;63;95;191;;;
                                  -243110;1;0;false;false;;;;;;
                                  -243111;8;0;false;false;63;95;191;;;
                                  -243119;1;0;false;false;;;;;;
                                  -243120;3;0;false;false;63;95;191;;;
                                  -243123;1;0;false;false;;;;;;
                                  -243124;7;0;false;false;63;95;191;;;
                                  -243131;1;0;false;false;;;;;;
                                  -243132;2;0;false;false;63;95;191;;;
                                  -243134;1;0;false;false;;;;;;
                                  -243135;4;0;false;false;63;95;191;;;
                                  -243139;1;0;false;false;;;;;;
                                  -243140;5;0;false;false;63;95;191;;;
                                  -243145;2;0;false;false;;;;;;
                                  -243147;10;0;false;false;63;95;191;;;
                                  -243157;1;0;false;false;;;;;;
                                  -243158;2;0;false;false;63;95;191;;;
                                  -243160;1;0;false;false;;;;;;
                                  -243161;26;0;false;false;63;95;191;;;
                                  -243187;3;0;false;false;;;;;;
                                  -243190;1;0;false;false;63;95;191;;;
                                  -243191;1;0;false;false;;;;;;
                                  -243192;3;0;false;false;127;127;159;;;
                                  -243195;3;0;false;false;;;;;;
                                  -243198;1;0;false;false;63;95;191;;;
                                  -243199;3;0;false;false;;;;;;
                                  -243202;1;0;false;false;63;95;191;;;
                                  -243203;1;0;false;false;;;;;;
                                  -243204;7;1;false;false;127;159;191;;;
                                  -243211;5;0;false;false;63;95;191;;;
                                  -243216;1;0;false;false;;;;;;
                                  -243217;3;0;false;false;63;95;191;;;
                                  -243220;1;0;false;false;;;;;;
                                  -243221;5;0;false;false;63;95;191;;;
                                  -243226;1;0;false;false;;;;;;
                                  -243227;8;0;false;false;63;95;191;;;
                                  -243235;3;0;false;false;;;;;;
                                  -243238;1;0;false;false;63;95;191;;;
                                  -243239;1;0;false;false;;;;;;
                                  -243240;5;1;false;false;127;159;191;;;
                                  -243245;22;0;false;false;63;95;191;;;
                                  -243267;3;0;false;false;;;;;;
                                  -243270;1;0;false;false;63;95;191;;;
                                  -243271;1;0;false;false;;;;;;
                                  -243272;11;1;false;false;127;159;191;;;
                                  -243283;12;0;false;false;63;95;191;;;
                                  -243295;1;0;false;false;;;;;;
                                  -243296;4;0;false;false;127;127;159;;;
                                  -243300;3;0;false;false;;;;;;
                                  -243303;1;0;false;false;63;95;191;;;
                                  -243304;4;0;false;false;;;;;;
                                  -243308;4;0;false;false;127;127;159;;;
                                  -243312;21;0;false;false;63;95;191;;;
                                  -243333;1;0;false;false;;;;;;
                                  -243334;1;0;false;false;127;127;159;;;
                                  -243335;1;0;false;false;;;;;;
                                  -243336;2;0;false;false;63;95;191;;;
                                  -243338;1;0;false;false;;;;;;
                                  -243339;3;0;false;false;63;95;191;;;
                                  -243342;1;0;false;false;;;;;;
                                  -243343;8;0;false;false;63;95;191;;;
                                  -243351;1;0;false;false;;;;;;
                                  -243352;3;0;false;false;63;95;191;;;
                                  -243355;1;0;false;false;;;;;;
                                  -243356;4;0;false;false;63;95;191;;;
                                  -243360;1;0;false;false;;;;;;
                                  -243361;8;0;false;false;63;95;191;;;
                                  -243369;5;0;false;false;127;127;159;;;
                                  -243374;3;0;false;false;;;;;;
                                  -243377;1;0;false;false;63;95;191;;;
                                  -243378;4;0;false;false;;;;;;
                                  -243382;4;0;false;false;127;127;159;;;
                                  -243386;27;0;false;false;63;95;191;;;
                                  -243413;1;0;false;false;;;;;;
                                  -243414;1;0;false;false;127;127;159;;;
                                  -243415;1;0;false;false;;;;;;
                                  -243416;2;0;false;false;63;95;191;;;
                                  -243418;1;0;false;false;;;;;;
                                  -243419;3;0;false;false;63;95;191;;;
                                  -243422;1;0;false;false;;;;;;
                                  -243423;6;0;false;false;63;95;191;;;
                                  -243429;1;0;false;false;;;;;;
                                  -243430;4;0;false;false;63;95;191;;;
                                  -243434;1;0;false;false;;;;;;
                                  -243435;3;0;false;false;63;95;191;;;
                                  -243438;1;0;false;false;;;;;;
                                  -243439;6;0;false;false;63;95;191;;;
                                  -243445;1;0;false;false;;;;;;
                                  -243446;4;0;false;false;63;95;191;;;
                                  -243450;1;0;false;false;;;;;;
                                  -243451;7;0;false;false;63;95;191;;;
                                  -243458;1;0;false;false;;;;;;
                                  -243459;3;0;false;false;63;95;191;;;
                                  -243462;1;0;false;false;;;;;;
                                  -243463;8;0;false;false;63;95;191;;;
                                  -243471;5;0;false;false;127;127;159;;;
                                  -243476;3;0;false;false;;;;;;
                                  -243479;1;0;false;false;63;95;191;;;
                                  -243480;1;0;false;false;;;;;;
                                  -243481;5;0;false;false;127;127;159;;;
                                  -243486;3;0;false;false;;;;;;
                                  -243489;1;0;false;false;63;95;191;;;
                                  -243490;1;0;false;false;;;;;;
                                  -243491;11;1;false;false;127;159;191;;;
                                  -243502;24;0;false;false;63;95;191;;;
                                  -243526;1;0;false;false;;;;;;
                                  -243527;4;0;false;false;127;127;159;;;
                                  -243531;3;0;false;false;;;;;;
                                  -243534;1;0;false;false;63;95;191;;;
                                  -243535;3;0;false;false;;;;;;
                                  -243538;4;0;false;false;127;127;159;;;
                                  -243542;22;0;false;false;63;95;191;;;
                                  -243564;1;0;false;false;;;;;;
                                  -243565;4;0;false;false;63;95;191;;;
                                  -243569;1;0;false;false;;;;;;
                                  -243570;6;0;false;false;63;95;191;;;
                                  -243576;1;0;false;false;;;;;;
                                  -243577;3;0;false;false;63;95;191;;;
                                  -243580;1;0;false;false;;;;;;
                                  -243581;5;0;false;false;63;95;191;;;
                                  -243586;1;0;false;false;;;;;;
                                  -243587;2;0;false;false;63;95;191;;;
                                  -243589;1;0;false;false;;;;;;
                                  -243590;3;0;false;false;63;95;191;;;
                                  -243593;1;0;false;false;;;;;;
                                  -243594;3;0;false;false;63;95;191;;;
                                  -243597;1;0;false;false;;;;;;
                                  -243598;2;0;false;false;63;95;191;;;
                                  -243600;1;0;false;false;;;;;;
                                  -243601;3;0;false;false;63;95;191;;;
                                  -243604;1;0;false;false;;;;;;
                                  -243605;9;0;false;false;63;95;191;;;
                                  -243614;1;0;false;false;;;;;;
                                  -243615;5;0;false;false;63;95;191;;;
                                  -243620;1;0;false;false;;;;;;
                                  -243621;2;0;false;false;63;95;191;;;
                                  -243623;1;0;false;false;;;;;;
                                  -243624;6;0;false;false;63;95;191;;;
                                  -243630;1;0;false;false;;;;;;
                                  -243631;1;0;false;false;63;95;191;;;
                                  -243632;4;0;false;false;;;;;;
                                  -243636;1;0;false;false;63;95;191;;;
                                  -243637;1;0;false;false;;;;;;
                                  -243638;5;0;false;false;63;95;191;;;
                                  -243643;1;0;false;false;;;;;;
                                  -243644;4;0;false;false;63;95;191;;;
                                  -243648;1;0;false;false;;;;;;
                                  -243649;4;0;false;false;63;95;191;;;
                                  -243653;1;0;false;false;;;;;;
                                  -243654;9;0;false;false;63;95;191;;;
                                  -243663;1;0;false;false;;;;;;
                                  -243664;4;0;false;false;63;95;191;;;
                                  -243668;1;0;false;false;;;;;;
                                  -243669;4;0;false;false;63;95;191;;;
                                  -243673;1;0;false;false;;;;;;
                                  -243674;7;0;false;false;63;95;191;;;
                                  -243681;1;0;false;false;;;;;;
                                  -243682;7;0;false;false;63;95;191;;;
                                  -243689;1;0;false;false;;;;;;
                                  -243690;2;0;false;false;63;95;191;;;
                                  -243692;1;0;false;false;;;;;;
                                  -243693;5;0;false;false;63;95;191;;;
                                  -243698;1;0;false;false;;;;;;
                                  -243699;2;0;false;false;63;95;191;;;
                                  -243701;1;0;false;false;;;;;;
                                  -243702;2;0;false;false;63;95;191;;;
                                  -243704;1;0;false;false;;;;;;
                                  -243705;5;0;false;false;63;95;191;;;
                                  -243710;1;0;false;false;;;;;;
                                  -243711;3;0;false;false;63;95;191;;;
                                  -243714;1;0;false;false;;;;;;
                                  -243715;4;0;false;false;63;95;191;;;
                                  -243719;1;0;false;false;;;;;;
                                  -243720;10;0;false;false;63;95;191;;;
                                  -243730;3;0;false;false;;;;;;
                                  -243733;1;0;false;false;63;95;191;;;
                                  -243734;1;0;false;false;;;;;;
                                  -243735;5;0;false;false;127;127;159;;;
                                  -243740;4;0;false;false;;;;;;
                                  -243744;2;0;false;false;63;95;191;;;
                                  -243746;2;0;false;false;;;;;;
                                  -243748;6;1;false;false;127;0;85;;;
                                  -243754;1;0;false;false;;;;;;
                                  -243755;4;1;false;false;127;0;85;;;
                                  -243759;1;0;false;false;;;;;;
                                  -243760;13;0;false;false;0;0;0;;;
                                  -243773;3;1;false;false;127;0;85;;;
                                  -243776;1;0;false;false;;;;;;
                                  -243777;6;0;false;false;0;0;0;;;
                                  -243783;1;0;false;false;;;;;;
                                  -243784;1;0;false;false;0;0;0;;;
                                  -243785;3;0;false;false;;;;;;
                                  -243788;48;0;false;false;63;127;95;;;
                                  -243836;1;0;false;false;;;;;;
                                  -243837;19;0;false;false;0;0;0;;;
                                  -243856;1;0;false;false;;;;;;
                                  -243857;7;0;false;false;0;0;0;;;
                                  -243864;2;0;false;false;;;;;;
                                  -243866;1;0;false;false;0;0;0;;;
                                  -243867;2;0;false;false;;;;;;
                                  -243869;3;0;false;false;63;95;191;;;
                                  -243872;4;0;false;false;;;;;;
                                  -243876;1;0;false;false;63;95;191;;;
                                  -243877;1;0;false;false;;;;;;
                                  -243878;4;0;false;false;63;95;191;;;
                                  -243882;1;0;false;false;;;;;;
                                  -243883;3;0;false;false;63;95;191;;;
                                  -243886;1;0;false;false;;;;;;
                                  -243887;9;0;false;false;63;95;191;;;
                                  -243896;1;0;false;false;;;;;;
                                  -243897;3;0;false;false;63;95;191;;;
                                  -243900;1;0;false;false;;;;;;
                                  -243901;7;0;false;false;63;95;191;;;
                                  -243908;1;0;false;false;;;;;;
                                  -243909;2;0;false;false;63;95;191;;;
                                  -243911;1;0;false;false;;;;;;
                                  -243912;4;0;false;false;63;95;191;;;
                                  -243916;1;0;false;false;;;;;;
                                  -243917;5;0;false;false;63;95;191;;;
                                  -243922;3;0;false;false;;;;;;
                                  -243925;1;0;false;false;63;95;191;;;
                                  -243926;1;0;false;false;;;;;;
                                  -243927;3;0;false;false;127;127;159;;;
                                  -243930;3;0;false;false;;;;;;
                                  -243933;1;0;false;false;63;95;191;;;
                                  -243934;1;0;false;false;;;;;;
                                  -243935;8;0;false;false;63;95;191;;;
                                  -243943;1;0;false;false;;;;;;
                                  -243944;2;0;false;false;63;95;191;;;
                                  -243946;1;0;false;false;;;;;;
                                  -243947;4;0;false;false;63;95;191;;;
                                  -243951;1;0;false;false;;;;;;
                                  -243952;6;0;false;false;63;95;191;;;
                                  -243958;2;0;false;false;;;;;;
                                  -243960;4;0;false;false;63;95;191;;;
                                  -243964;1;0;false;false;;;;;;
                                  -243965;10;0;false;false;63;95;191;;;
                                  -243975;1;0;false;false;;;;;;
                                  -243976;3;0;false;false;63;95;191;;;
                                  -243979;1;0;false;false;;;;;;
                                  -243980;9;0;false;false;63;95;191;;;
                                  -243989;1;0;false;false;;;;;;
                                  -243990;2;0;false;false;63;95;191;;;
                                  -243992;1;0;false;false;;;;;;
                                  -243993;5;0;false;false;63;95;191;;;
                                  -243998;1;0;false;false;;;;;;
                                  -243999;2;0;false;false;63;95;191;;;
                                  -244001;3;0;false;false;;;;;;
                                  -244004;1;0;false;false;63;95;191;;;
                                  -244005;1;0;false;false;;;;;;
                                  -244006;5;0;false;false;63;95;191;;;
                                  -244011;1;0;false;false;;;;;;
                                  -244012;10;0;false;false;63;95;191;;;
                                  -244022;2;0;false;false;;;;;;
                                  -244024;2;0;false;false;63;95;191;;;
                                  -244026;1;0;false;false;;;;;;
                                  -244027;1;0;false;false;63;95;191;;;
                                  -244028;1;0;false;false;;;;;;
                                  -244029;4;0;false;false;63;95;191;;;
                                  -244033;1;0;false;false;;;;;;
                                  -244034;6;0;false;false;63;95;191;;;
                                  -244040;1;0;false;false;;;;;;
                                  -244041;4;0;false;false;63;95;191;;;
                                  -244045;1;0;false;false;;;;;;
                                  -244046;8;0;false;false;63;95;191;;;
                                  -244054;1;0;false;false;;;;;;
                                  -244055;1;0;false;false;63;95;191;;;
                                  -244056;1;0;false;false;;;;;;
                                  -244057;11;0;false;false;63;95;191;;;
                                  -244068;1;0;false;false;;;;;;
                                  -244069;5;0;false;false;63;95;191;;;
                                  -244074;1;0;false;false;;;;;;
                                  -244075;3;0;false;false;63;95;191;;;
                                  -244078;4;0;false;false;;;;;;
                                  -244082;1;0;false;false;63;95;191;;;
                                  -244083;1;0;false;false;;;;;;
                                  -244084;3;0;false;false;63;95;191;;;
                                  -244087;1;0;false;false;;;;;;
                                  -244088;5;0;false;false;63;95;191;;;
                                  -244093;1;0;false;false;;;;;;
                                  -244094;10;0;false;false;63;95;191;;;
                                  -244104;1;0;false;false;;;;;;
                                  -244105;7;0;false;false;63;95;191;;;
                                  -244112;1;0;false;false;;;;;;
                                  -244113;4;0;false;false;63;95;191;;;
                                  -244117;1;0;false;false;;;;;;
                                  -244118;4;0;false;false;63;95;191;;;
                                  -244122;3;0;false;false;;;;;;
                                  -244125;1;0;false;false;63;95;191;;;
                                  -244126;1;0;false;false;;;;;;
                                  -244127;4;0;false;false;127;127;159;;;
                                  -244131;3;0;false;false;;;;;;
                                  -244134;1;0;false;false;63;95;191;;;
                                  -244135;3;0;false;false;;;;;;
                                  -244138;1;0;false;false;63;95;191;;;
                                  -244139;1;0;false;false;;;;;;
                                  -244140;7;1;false;false;127;159;191;;;
                                  -244147;5;0;false;false;63;95;191;;;
                                  -244152;1;0;false;false;;;;;;
                                  -244153;11;0;false;false;63;95;191;;;
                                  -244164;1;0;false;false;;;;;;
                                  -244165;5;0;false;false;63;95;191;;;
                                  -244170;1;0;false;false;;;;;;
                                  -244171;7;0;false;false;63;95;191;;;
                                  -244178;1;0;false;false;;;;;;
                                  -244179;11;0;false;false;63;95;191;;;
                                  -244190;1;0;false;false;;;;;;
                                  -244191;3;0;false;false;63;95;191;;;
                                  -244194;1;0;false;false;;;;;;
                                  -244195;6;0;false;false;63;95;191;;;
                                  -244201;3;0;false;false;;;;;;
                                  -244204;1;0;false;false;63;95;191;;;
                                  -244205;2;0;false;false;;;;;;
                                  -244207;3;0;false;false;63;95;191;;;
                                  -244210;1;0;false;false;;;;;;
                                  -244211;5;0;false;false;63;95;191;;;
                                  -244216;1;0;false;false;;;;;;
                                  -244217;4;0;false;false;63;95;191;;;
                                  -244221;1;0;false;false;;;;;;
                                  -244222;2;0;false;false;63;95;191;;;
                                  -244224;1;0;false;false;;;;;;
                                  -244225;6;0;false;false;63;95;191;;;
                                  -244231;1;0;false;false;;;;;;
                                  -244232;2;0;false;false;63;95;191;;;
                                  -244234;1;0;false;false;;;;;;
                                  -244235;3;0;false;false;63;95;191;;;
                                  -244238;1;0;false;false;;;;;;
                                  -244239;9;0;false;false;63;95;191;;;
                                  -244248;1;0;false;false;;;;;;
                                  -244249;5;0;false;false;63;95;191;;;
                                  -244254;1;0;false;false;;;;;;
                                  -244255;4;0;false;false;63;95;191;;;
                                  -244259;1;0;false;false;;;;;;
                                  -244260;1;0;false;false;63;95;191;;;
                                  -244261;1;0;false;false;;;;;;
                                  -244262;1;0;false;false;63;95;191;;;
                                  -244263;1;0;false;false;;;;;;
                                  -244264;2;0;false;false;63;95;191;;;
                                  -244266;3;0;false;false;;;;;;
                                  -244269;1;0;false;false;63;95;191;;;
                                  -244270;1;0;false;false;;;;;;
                                  -244271;5;1;false;false;127;159;191;;;
                                  -244276;22;0;false;false;63;95;191;;;
                                  -244298;3;0;false;false;;;;;;
                                  -244301;1;0;false;false;63;95;191;;;
                                  -244302;1;0;false;false;;;;;;
                                  -244303;11;1;false;false;127;159;191;;;
                                  -244314;12;0;false;false;63;95;191;;;
                                  -244326;1;0;false;false;;;;;;
                                  -244327;4;0;false;false;127;127;159;;;
                                  -244331;3;0;false;false;;;;;;
                                  -244334;1;0;false;false;63;95;191;;;
                                  -244335;4;0;false;false;;;;;;
                                  -244339;4;0;false;false;127;127;159;;;
                                  -244343;21;0;false;false;63;95;191;;;
                                  -244364;1;0;false;false;;;;;;
                                  -244365;1;0;false;false;127;127;159;;;
                                  -244366;1;0;false;false;;;;;;
                                  -244367;2;0;false;false;63;95;191;;;
                                  -244369;1;0;false;false;;;;;;
                                  -244370;3;0;false;false;63;95;191;;;
                                  -244373;1;0;false;false;;;;;;
                                  -244374;8;0;false;false;63;95;191;;;
                                  -244382;1;0;false;false;;;;;;
                                  -244383;3;0;false;false;63;95;191;;;
                                  -244386;1;0;false;false;;;;;;
                                  -244387;4;0;false;false;63;95;191;;;
                                  -244391;1;0;false;false;;;;;;
                                  -244392;8;0;false;false;63;95;191;;;
                                  -244400;5;0;false;false;127;127;159;;;
                                  -244405;3;0;false;false;;;;;;
                                  -244408;1;0;false;false;63;95;191;;;
                                  -244409;4;0;false;false;;;;;;
                                  -244413;4;0;false;false;127;127;159;;;
                                  -244417;27;0;false;false;63;95;191;;;
                                  -244444;1;0;false;false;;;;;;
                                  -244445;1;0;false;false;127;127;159;;;
                                  -244446;1;0;false;false;;;;;;
                                  -244447;2;0;false;false;63;95;191;;;
                                  -244449;1;0;false;false;;;;;;
                                  -244450;3;0;false;false;63;95;191;;;
                                  -244453;1;0;false;false;;;;;;
                                  -244454;6;0;false;false;63;95;191;;;
                                  -244460;1;0;false;false;;;;;;
                                  -244461;4;0;false;false;63;95;191;;;
                                  -244465;1;0;false;false;;;;;;
                                  -244466;3;0;false;false;63;95;191;;;
                                  -244469;1;0;false;false;;;;;;
                                  -244470;6;0;false;false;63;95;191;;;
                                  -244476;1;0;false;false;;;;;;
                                  -244477;4;0;false;false;63;95;191;;;
                                  -244481;1;0;false;false;;;;;;
                                  -244482;7;0;false;false;63;95;191;;;
                                  -244489;1;0;false;false;;;;;;
                                  -244490;3;0;false;false;63;95;191;;;
                                  -244493;1;0;false;false;;;;;;
                                  -244494;8;0;false;false;63;95;191;;;
                                  -244502;5;0;false;false;127;127;159;;;
                                  -244507;3;0;false;false;;;;;;
                                  -244510;1;0;false;false;63;95;191;;;
                                  -244511;1;0;false;false;;;;;;
                                  -244512;5;0;false;false;127;127;159;;;
                                  -244517;3;0;false;false;;;;;;
                                  -244520;1;0;false;false;63;95;191;;;
                                  -244521;1;0;false;false;;;;;;
                                  -244522;11;1;false;false;127;159;191;;;
                                  -244533;24;0;false;false;63;95;191;;;
                                  -244557;1;0;false;false;;;;;;
                                  -244558;4;0;false;false;127;127;159;;;
                                  -244562;3;0;false;false;;;;;;
                                  -244565;1;0;false;false;63;95;191;;;
                                  -244566;3;0;false;false;;;;;;
                                  -244569;4;0;false;false;127;127;159;;;
                                  -244573;19;0;false;false;63;95;191;;;
                                  -244592;1;0;false;false;;;;;;
                                  -244593;4;0;false;false;63;95;191;;;
                                  -244597;1;0;false;false;;;;;;
                                  -244598;5;0;false;false;63;95;191;;;
                                  -244603;1;0;false;false;;;;;;
                                  -244604;2;0;false;false;63;95;191;;;
                                  -244606;1;0;false;false;;;;;;
                                  -244607;4;0;false;false;63;95;191;;;
                                  -244611;5;0;false;false;127;127;159;;;
                                  -244616;3;0;false;false;;;;;;
                                  -244619;1;0;false;false;63;95;191;;;
                                  -244620;3;0;false;false;;;;;;
                                  -244623;4;0;false;false;127;127;159;;;
                                  -244627;22;0;false;false;63;95;191;;;
                                  -244649;1;0;false;false;;;;;;
                                  -244650;4;0;false;false;63;95;191;;;
                                  -244654;1;0;false;false;;;;;;
                                  -244655;6;0;false;false;63;95;191;;;
                                  -244661;1;0;false;false;;;;;;
                                  -244662;3;0;false;false;63;95;191;;;
                                  -244665;1;0;false;false;;;;;;
                                  -244666;5;0;false;false;63;95;191;;;
                                  -244671;1;0;false;false;;;;;;
                                  -244672;2;0;false;false;63;95;191;;;
                                  -244674;1;0;false;false;;;;;;
                                  -244675;3;0;false;false;63;95;191;;;
                                  -244678;1;0;false;false;;;;;;
                                  -244679;3;0;false;false;63;95;191;;;
                                  -244682;1;0;false;false;;;;;;
                                  -244683;2;0;false;false;63;95;191;;;
                                  -244685;1;0;false;false;;;;;;
                                  -244686;3;0;false;false;63;95;191;;;
                                  -244689;1;0;false;false;;;;;;
                                  -244690;9;0;false;false;63;95;191;;;
                                  -244699;1;0;false;false;;;;;;
                                  -244700;5;0;false;false;63;95;191;;;
                                  -244705;1;0;false;false;;;;;;
                                  -244706;2;0;false;false;63;95;191;;;
                                  -244708;1;0;false;false;;;;;;
                                  -244709;6;0;false;false;63;95;191;;;
                                  -244715;1;0;false;false;;;;;;
                                  -244716;1;0;false;false;63;95;191;;;
                                  -244717;4;0;false;false;;;;;;
                                  -244721;1;0;false;false;63;95;191;;;
                                  -244722;1;0;false;false;;;;;;
                                  -244723;5;0;false;false;63;95;191;;;
                                  -244728;1;0;false;false;;;;;;
                                  -244729;4;0;false;false;63;95;191;;;
                                  -244733;1;0;false;false;;;;;;
                                  -244734;4;0;false;false;63;95;191;;;
                                  -244738;1;0;false;false;;;;;;
                                  -244739;9;0;false;false;63;95;191;;;
                                  -244748;1;0;false;false;;;;;;
                                  -244749;4;0;false;false;63;95;191;;;
                                  -244753;1;0;false;false;;;;;;
                                  -244754;4;0;false;false;63;95;191;;;
                                  -244758;1;0;false;false;;;;;;
                                  -244759;7;0;false;false;63;95;191;;;
                                  -244766;1;0;false;false;;;;;;
                                  -244767;7;0;false;false;63;95;191;;;
                                  -244774;1;0;false;false;;;;;;
                                  -244775;2;0;false;false;63;95;191;;;
                                  -244777;1;0;false;false;;;;;;
                                  -244778;5;0;false;false;63;95;191;;;
                                  -244783;1;0;false;false;;;;;;
                                  -244784;2;0;false;false;63;95;191;;;
                                  -244786;1;0;false;false;;;;;;
                                  -244787;2;0;false;false;63;95;191;;;
                                  -244789;1;0;false;false;;;;;;
                                  -244790;5;0;false;false;63;95;191;;;
                                  -244795;1;0;false;false;;;;;;
                                  -244796;3;0;false;false;63;95;191;;;
                                  -244799;1;0;false;false;;;;;;
                                  -244800;4;0;false;false;63;95;191;;;
                                  -244804;1;0;false;false;;;;;;
                                  -244805;10;0;false;false;63;95;191;;;
                                  -244815;3;0;false;false;;;;;;
                                  -244818;1;0;false;false;63;95;191;;;
                                  -244819;1;0;false;false;;;;;;
                                  -244820;5;0;false;false;127;127;159;;;
                                  -244825;4;0;false;false;;;;;;
                                  -244829;2;0;false;false;63;95;191;;;
                                  -244831;2;0;false;false;;;;;;
                                  -244833;6;1;false;false;127;0;85;;;
                                  -244839;1;0;false;false;;;;;;
                                  -244840;4;1;false;false;127;0;85;;;
                                  -244844;1;0;false;false;;;;;;
                                  -244845;18;0;false;false;0;0;0;;;
                                  -244863;1;0;false;false;;;;;;
                                  -244864;6;0;false;false;0;0;0;;;
                                  -244870;1;0;false;false;;;;;;
                                  -244871;1;0;false;false;0;0;0;;;
                                  -244872;3;0;false;false;;;;;;
                                  -244875;14;0;false;false;0;0;0;;;
                                  -244889;3;0;false;false;;;;;;
                                  -244892;2;1;false;false;127;0;85;;;
                                  -244894;1;0;false;false;;;;;;
                                  -244895;6;0;false;false;0;0;0;;;
                                  -244901;1;0;false;false;;;;;;
                                  -244902;2;0;false;false;0;0;0;;;
                                  -244904;1;0;false;false;;;;;;
                                  -244905;4;1;false;false;127;0;85;;;
                                  -244909;1;0;false;false;0;0;0;;;
                                  -244910;1;0;false;false;;;;;;
                                  -244911;9;0;false;false;0;0;0;;;
                                  -244920;1;0;false;false;;;;;;
                                  -244921;26;0;false;false;0;0;0;;;
                                  -244947;4;0;false;false;;;;;;
                                  -244951;21;0;false;false;0;0;0;;;
                                  -244972;1;0;false;false;;;;;;
                                  -244973;9;0;false;false;0;0;0;;;
                                  -244982;2;0;false;false;;;;;;
                                  -244984;1;0;false;false;0;0;0;;;
                                  -244985;2;0;false;false;;;;;;
                                  -244987;3;0;false;false;63;95;191;;;
                                  -244990;3;0;false;false;;;;;;
                                  -244993;1;0;false;false;63;95;191;;;
                                  -244994;1;0;false;false;;;;;;
                                  -244995;4;0;false;false;63;95;191;;;
                                  -244999;1;0;false;false;;;;;;
                                  -245000;3;0;false;false;63;95;191;;;
                                  -245003;1;0;false;false;;;;;;
                                  -245004;10;0;false;false;63;95;191;;;
                                  -245014;1;0;false;false;;;;;;
                                  -245015;9;0;false;false;63;95;191;;;
                                  -245024;1;0;false;false;;;;;;
                                  -245025;10;0;false;false;63;95;191;;;
                                  -245035;1;0;false;false;;;;;;
                                  -245036;5;0;false;false;63;95;191;;;
                                  -245041;1;0;false;false;;;;;;
                                  -245042;2;0;false;false;63;95;191;;;
                                  -245044;1;0;false;false;;;;;;
                                  -245045;3;0;false;false;63;95;191;;;
                                  -245048;1;0;false;false;;;;;;
                                  -245049;5;0;false;false;63;95;191;;;
                                  -245054;1;0;false;false;;;;;;
                                  -245055;9;0;false;false;63;95;191;;;
                                  -245064;3;0;false;false;;;;;;
                                  -245067;1;0;false;false;63;95;191;;;
                                  -245068;1;0;false;false;;;;;;
                                  -245069;2;0;false;false;63;95;191;;;
                                  -245071;1;0;false;false;;;;;;
                                  -245072;3;0;false;false;63;95;191;;;
                                  -245075;1;0;false;false;;;;;;
                                  -245076;9;0;false;false;63;95;191;;;
                                  -245085;1;0;false;false;;;;;;
                                  -245086;2;0;false;false;63;95;191;;;
                                  -245088;1;0;false;false;;;;;;
                                  -245089;2;0;false;false;63;95;191;;;
                                  -245091;1;0;false;false;;;;;;
                                  -245092;3;0;false;false;63;95;191;;;
                                  -245095;1;0;false;false;;;;;;
                                  -245096;7;0;false;false;63;95;191;;;
                                  -245103;1;0;false;false;;;;;;
                                  -245104;6;0;false;false;63;95;191;;;
                                  -245110;1;0;false;false;;;;;;
                                  -245111;5;0;false;false;63;95;191;;;
                                  -245116;1;0;false;false;;;;;;
                                  -245117;3;0;false;false;63;95;191;;;
                                  -245120;1;0;false;false;;;;;;
                                  -245121;3;0;false;false;63;95;191;;;
                                  -245124;1;0;false;false;;;;;;
                                  -245125;7;0;false;false;63;95;191;;;
                                  -245132;3;0;false;false;;;;;;
                                  -245135;1;0;false;false;63;95;191;;;
                                  -245136;1;0;false;false;;;;;;
                                  -245137;2;0;false;false;63;95;191;;;
                                  -245139;1;0;false;false;;;;;;
                                  -245140;3;0;false;false;63;95;191;;;
                                  -245143;1;0;false;false;;;;;;
                                  -245144;8;0;false;false;63;95;191;;;
                                  -245152;1;0;false;false;;;;;;
                                  -245153;2;0;false;false;63;95;191;;;
                                  -245155;1;0;false;false;;;;;;
                                  -245156;5;0;false;false;63;95;191;;;
                                  -245161;3;0;false;false;;;;;;
                                  -245164;1;0;false;false;63;95;191;;;
                                  -245165;3;0;false;false;;;;;;
                                  -245168;1;0;false;false;63;95;191;;;
                                  -245169;1;0;false;false;;;;;;
                                  -245170;7;1;false;false;127;159;191;;;
                                  -245177;5;0;false;false;63;95;191;;;
                                  -245182;1;0;false;false;;;;;;
                                  -245183;3;0;false;false;63;95;191;;;
                                  -245186;1;0;false;false;;;;;;
                                  -245187;3;0;false;false;63;95;191;;;
                                  -245190;1;0;false;false;;;;;;
                                  -245191;5;0;false;false;63;95;191;;;
                                  -245196;1;0;false;false;;;;;;
                                  -245197;3;0;false;false;63;95;191;;;
                                  -245200;1;0;false;false;;;;;;
                                  -245201;5;0;false;false;63;95;191;;;
                                  -245206;3;0;false;false;;;;;;
                                  -245209;1;0;false;false;63;95;191;;;
                                  -245210;3;0;false;false;;;;;;
                                  -245213;1;0;false;false;63;95;191;;;
                                  -245214;1;0;false;false;;;;;;
                                  -245215;11;1;false;false;127;159;191;;;
                                  -245226;24;0;false;false;63;95;191;;;
                                  -245250;1;0;false;false;;;;;;
                                  -245251;4;0;false;false;127;127;159;;;
                                  -245255;3;0;false;false;;;;;;
                                  -245258;1;0;false;false;63;95;191;;;
                                  -245259;4;0;false;false;;;;;;
                                  -245263;4;0;false;false;127;127;159;;;
                                  -245267;22;0;false;false;63;95;191;;;
                                  -245289;1;0;false;false;;;;;;
                                  -245290;1;0;false;false;127;127;159;;;
                                  -245291;1;0;false;false;;;;;;
                                  -245292;2;0;false;false;63;95;191;;;
                                  -245294;1;0;false;false;;;;;;
                                  -245295;3;0;false;false;63;95;191;;;
                                  -245298;1;0;false;false;;;;;;
                                  -245299;8;0;false;false;63;95;191;;;
                                  -245307;1;0;false;false;;;;;;
                                  -245308;3;0;false;false;63;95;191;;;
                                  -245311;1;0;false;false;;;;;;
                                  -245312;4;0;false;false;63;95;191;;;
                                  -245316;1;0;false;false;;;;;;
                                  -245317;8;0;false;false;63;95;191;;;
                                  -245325;5;0;false;false;127;127;159;;;
                                  -245330;4;0;false;false;;;;;;
                                  -245334;1;0;false;false;63;95;191;;;
                                  -245335;1;0;false;false;;;;;;
                                  -245336;5;0;false;false;127;127;159;;;
                                  -245341;3;0;false;false;;;;;;
                                  -245344;1;0;false;false;63;95;191;;;
                                  -245345;1;0;false;false;;;;;;
                                  -245346;11;1;false;false;127;159;191;;;
                                  -245357;12;0;false;false;63;95;191;;;
                                  -245369;1;0;false;false;;;;;;
                                  -245370;4;0;false;false;127;127;159;;;
                                  -245374;3;0;false;false;;;;;;
                                  -245377;1;0;false;false;63;95;191;;;
                                  -245378;4;0;false;false;;;;;;
                                  -245382;4;0;false;false;127;127;159;;;
                                  -245386;21;0;false;false;63;95;191;;;
                                  -245407;1;0;false;false;;;;;;
                                  -245408;1;0;false;false;127;127;159;;;
                                  -245409;1;0;false;false;;;;;;
                                  -245410;2;0;false;false;63;95;191;;;
                                  -245412;1;0;false;false;;;;;;
                                  -245413;3;0;false;false;63;95;191;;;
                                  -245416;1;0;false;false;;;;;;
                                  -245417;8;0;false;false;63;95;191;;;
                                  -245425;1;0;false;false;;;;;;
                                  -245426;3;0;false;false;63;95;191;;;
                                  -245429;1;0;false;false;;;;;;
                                  -245430;4;0;false;false;63;95;191;;;
                                  -245434;1;0;false;false;;;;;;
                                  -245435;8;0;false;false;63;95;191;;;
                                  -245443;5;0;false;false;127;127;159;;;
                                  -245448;3;0;false;false;;;;;;
                                  -245451;1;0;false;false;63;95;191;;;
                                  -245452;4;0;false;false;;;;;;
                                  -245456;4;0;false;false;127;127;159;;;
                                  -245460;27;0;false;false;63;95;191;;;
                                  -245487;1;0;false;false;;;;;;
                                  -245488;1;0;false;false;127;127;159;;;
                                  -245489;1;0;false;false;;;;;;
                                  -245490;2;0;false;false;63;95;191;;;
                                  -245492;1;0;false;false;;;;;;
                                  -245493;3;0;false;false;63;95;191;;;
                                  -245496;1;0;false;false;;;;;;
                                  -245497;6;0;false;false;63;95;191;;;
                                  -245503;1;0;false;false;;;;;;
                                  -245504;4;0;false;false;63;95;191;;;
                                  -245508;1;0;false;false;;;;;;
                                  -245509;3;0;false;false;63;95;191;;;
                                  -245512;1;0;false;false;;;;;;
                                  -245513;6;0;false;false;63;95;191;;;
                                  -245519;1;0;false;false;;;;;;
                                  -245520;4;0;false;false;63;95;191;;;
                                  -245524;1;0;false;false;;;;;;
                                  -245525;7;0;false;false;63;95;191;;;
                                  -245532;1;0;false;false;;;;;;
                                  -245533;3;0;false;false;63;95;191;;;
                                  -245536;1;0;false;false;;;;;;
                                  -245537;8;0;false;false;63;95;191;;;
                                  -245545;5;0;false;false;127;127;159;;;
                                  -245550;3;0;false;false;;;;;;
                                  -245553;1;0;false;false;63;95;191;;;
                                  -245554;1;0;false;false;;;;;;
                                  -245555;5;0;false;false;127;127;159;;;
                                  -245560;3;0;false;false;;;;;;
                                  -245563;1;0;false;false;63;95;191;;;
                                  -245564;1;0;false;false;;;;;;
                                  -245565;7;1;false;false;127;159;191;;;
                                  -245572;3;0;false;false;63;95;191;;;
                                  -245575;3;0;false;false;;;;;;
                                  -245578;2;0;false;false;63;95;191;;;
                                  -245580;2;0;false;false;;;;;;
                                  -245582;6;1;false;false;127;0;85;;;
                                  -245588;1;0;false;false;;;;;;
                                  -245589;4;1;false;false;127;0;85;;;
                                  -245593;1;0;false;false;;;;;;
                                  -245594;22;0;false;false;0;0;0;;;
                                  -245616;1;0;false;false;;;;;;
                                  -245617;6;0;false;false;0;0;0;;;
                                  -245623;1;0;false;false;;;;;;
                                  -245624;6;0;false;false;0;0;0;;;
                                  -245630;1;0;false;false;;;;;;
                                  -245631;1;0;false;false;0;0;0;;;
                                  -245632;3;0;false;false;;;;;;
                                  -245635;11;0;false;false;0;0;0;;;
                                  -245646;1;0;false;false;;;;;;
                                  -245647;3;0;false;false;0;0;0;;;
                                  -245650;3;0;false;false;;;;;;
                                  -245653;2;1;false;false;127;0;85;;;
                                  -245655;1;0;false;false;;;;;;
                                  -245656;6;0;false;false;0;0;0;;;
                                  -245662;1;0;false;false;;;;;;
                                  -245663;2;0;false;false;0;0;0;;;
                                  -245665;1;0;false;false;;;;;;
                                  -245666;4;1;false;false;127;0;85;;;
                                  -245670;1;0;false;false;0;0;0;;;
                                  -245671;1;0;false;false;;;;;;
                                  -245672;1;0;false;false;0;0;0;;;
                                  -245673;4;0;false;false;;;;;;
                                  -245677;2;1;false;false;127;0;85;;;
                                  -245679;1;0;false;false;;;;;;
                                  -245680;20;0;false;false;0;0;0;;;
                                  -245700;1;0;false;false;;;;;;
                                  -245701;38;0;false;false;0;0;0;;;
                                  -245739;3;0;false;false;;;;;;
                                  -245742;1;0;false;false;0;0;0;;;
                                  -245743;3;0;false;false;;;;;;
                                  -245746;19;0;false;false;0;0;0;;;
                                  -245765;1;0;false;false;;;;;;
                                  -245766;1;0;false;false;0;0;0;;;
                                  -245767;1;0;false;false;;;;;;
                                  -245768;6;0;false;false;0;0;0;;;
                                  -245774;3;0;false;false;;;;;;
                                  -245777;9;0;false;false;0;0;0;;;
                                  -245786;2;0;false;false;;;;;;
                                  -245788;1;0;false;false;0;0;0;;;
                                  -245789;3;0;false;false;;;;;;
                                  -245792;3;0;false;false;63;95;191;;;
                                  -245795;3;0;false;false;;;;;;
                                  -245798;1;0;false;false;63;95;191;;;
                                  -245799;1;0;false;false;;;;;;
                                  -245800;4;0;false;false;63;95;191;;;
                                  -245804;1;0;false;false;;;;;;
                                  -245805;3;0;false;false;63;95;191;;;
                                  -245808;1;0;false;false;;;;;;
                                  -245809;10;0;false;false;63;95;191;;;
                                  -245819;1;0;false;false;;;;;;
                                  -245820;9;0;false;false;63;95;191;;;
                                  -245829;1;0;false;false;;;;;;
                                  -245830;10;0;false;false;63;95;191;;;
                                  -245840;1;0;false;false;;;;;;
                                  -245841;5;0;false;false;63;95;191;;;
                                  -245846;1;0;false;false;;;;;;
                                  -245847;2;0;false;false;63;95;191;;;
                                  -245849;1;0;false;false;;;;;;
                                  -245850;3;0;false;false;63;95;191;;;
                                  -245853;1;0;false;false;;;;;;
                                  -245854;5;0;false;false;63;95;191;;;
                                  -245859;1;0;false;false;;;;;;
                                  -245860;9;0;false;false;63;95;191;;;
                                  -245869;3;0;false;false;;;;;;
                                  -245872;1;0;false;false;63;95;191;;;
                                  -245873;1;0;false;false;;;;;;
                                  -245874;2;0;false;false;63;95;191;;;
                                  -245876;1;0;false;false;;;;;;
                                  -245877;3;0;false;false;63;95;191;;;
                                  -245880;1;0;false;false;;;;;;
                                  -245881;9;0;false;false;63;95;191;;;
                                  -245890;1;0;false;false;;;;;;
                                  -245891;2;0;false;false;63;95;191;;;
                                  -245893;1;0;false;false;;;;;;
                                  -245894;2;0;false;false;63;95;191;;;
                                  -245896;1;0;false;false;;;;;;
                                  -245897;3;0;false;false;63;95;191;;;
                                  -245900;1;0;false;false;;;;;;
                                  -245901;7;0;false;false;63;95;191;;;
                                  -245908;1;0;false;false;;;;;;
                                  -245909;6;0;false;false;63;95;191;;;
                                  -245915;1;0;false;false;;;;;;
                                  -245916;5;0;false;false;63;95;191;;;
                                  -245921;1;0;false;false;;;;;;
                                  -245922;3;0;false;false;63;95;191;;;
                                  -245925;1;0;false;false;;;;;;
                                  -245926;3;0;false;false;63;95;191;;;
                                  -245929;1;0;false;false;;;;;;
                                  -245930;7;0;false;false;63;95;191;;;
                                  -245937;3;0;false;false;;;;;;
                                  -245940;1;0;false;false;63;95;191;;;
                                  -245941;1;0;false;false;;;;;;
                                  -245942;2;0;false;false;63;95;191;;;
                                  -245944;1;0;false;false;;;;;;
                                  -245945;3;0;false;false;63;95;191;;;
                                  -245948;1;0;false;false;;;;;;
                                  -245949;8;0;false;false;63;95;191;;;
                                  -245957;1;0;false;false;;;;;;
                                  -245958;2;0;false;false;63;95;191;;;
                                  -245960;1;0;false;false;;;;;;
                                  -245961;5;0;false;false;63;95;191;;;
                                  -245966;3;0;false;false;;;;;;
                                  -245969;1;0;false;false;63;95;191;;;
                                  -245970;3;0;false;false;;;;;;
                                  -245973;1;0;false;false;63;95;191;;;
                                  -245974;1;0;false;false;;;;;;
                                  -245975;7;1;false;false;127;159;191;;;
                                  -245982;5;0;false;false;63;95;191;;;
                                  -245987;1;0;false;false;;;;;;
                                  -245988;3;0;false;false;63;95;191;;;
                                  -245991;1;0;false;false;;;;;;
                                  -245992;3;0;false;false;63;95;191;;;
                                  -245995;1;0;false;false;;;;;;
                                  -245996;5;0;false;false;63;95;191;;;
                                  -246001;1;0;false;false;;;;;;
                                  -246002;3;0;false;false;63;95;191;;;
                                  -246005;1;0;false;false;;;;;;
                                  -246006;5;0;false;false;63;95;191;;;
                                  -246011;3;0;false;false;;;;;;
                                  -246014;1;0;false;false;63;95;191;;;
                                  -246015;3;0;false;false;;;;;;
                                  -246018;1;0;false;false;63;95;191;;;
                                  -246019;1;0;false;false;;;;;;
                                  -246020;11;1;false;false;127;159;191;;;
                                  -246031;24;0;false;false;63;95;191;;;
                                  -246055;1;0;false;false;;;;;;
                                  -246056;4;0;false;false;127;127;159;;;
                                  -246060;3;0;false;false;;;;;;
                                  -246063;1;0;false;false;63;95;191;;;
                                  -246064;4;0;false;false;;;;;;
                                  -246068;4;0;false;false;127;127;159;;;
                                  -246072;22;0;false;false;63;95;191;;;
                                  -246094;1;0;false;false;;;;;;
                                  -246095;1;0;false;false;127;127;159;;;
                                  -246096;1;0;false;false;;;;;;
                                  -246097;2;0;false;false;63;95;191;;;
                                  -246099;1;0;false;false;;;;;;
                                  -246100;3;0;false;false;63;95;191;;;
                                  -246103;1;0;false;false;;;;;;
                                  -246104;8;0;false;false;63;95;191;;;
                                  -246112;1;0;false;false;;;;;;
                                  -246113;3;0;false;false;63;95;191;;;
                                  -246116;1;0;false;false;;;;;;
                                  -246117;4;0;false;false;63;95;191;;;
                                  -246121;1;0;false;false;;;;;;
                                  -246122;8;0;false;false;63;95;191;;;
                                  -246130;5;0;false;false;127;127;159;;;
                                  -246135;4;0;false;false;;;;;;
                                  -246139;1;0;false;false;63;95;191;;;
                                  -246140;1;0;false;false;;;;;;
                                  -246141;5;0;false;false;127;127;159;;;
                                  -246146;3;0;false;false;;;;;;
                                  -246149;1;0;false;false;63;95;191;;;
                                  -246150;1;0;false;false;;;;;;
                                  -246151;11;1;false;false;127;159;191;;;
                                  -246162;12;0;false;false;63;95;191;;;
                                  -246174;1;0;false;false;;;;;;
                                  -246175;4;0;false;false;127;127;159;;;
                                  -246179;3;0;false;false;;;;;;
                                  -246182;1;0;false;false;63;95;191;;;
                                  -246183;4;0;false;false;;;;;;
                                  -246187;4;0;false;false;127;127;159;;;
                                  -246191;21;0;false;false;63;95;191;;;
                                  -246212;1;0;false;false;;;;;;
                                  -246213;1;0;false;false;127;127;159;;;
                                  -246214;1;0;false;false;;;;;;
                                  -246215;2;0;false;false;63;95;191;;;
                                  -246217;1;0;false;false;;;;;;
                                  -246218;3;0;false;false;63;95;191;;;
                                  -246221;1;0;false;false;;;;;;
                                  -246222;8;0;false;false;63;95;191;;;
                                  -246230;1;0;false;false;;;;;;
                                  -246231;3;0;false;false;63;95;191;;;
                                  -246234;1;0;false;false;;;;;;
                                  -246235;4;0;false;false;63;95;191;;;
                                  -246239;1;0;false;false;;;;;;
                                  -246240;8;0;false;false;63;95;191;;;
                                  -246248;5;0;false;false;127;127;159;;;
                                  -246253;3;0;false;false;;;;;;
                                  -246256;1;0;false;false;63;95;191;;;
                                  -246257;4;0;false;false;;;;;;
                                  -246261;4;0;false;false;127;127;159;;;
                                  -246265;27;0;false;false;63;95;191;;;
                                  -246292;1;0;false;false;;;;;;
                                  -246293;1;0;false;false;127;127;159;;;
                                  -246294;1;0;false;false;;;;;;
                                  -246295;2;0;false;false;63;95;191;;;
                                  -246297;1;0;false;false;;;;;;
                                  -246298;3;0;false;false;63;95;191;;;
                                  -246301;1;0;false;false;;;;;;
                                  -246302;6;0;false;false;63;95;191;;;
                                  -246308;1;0;false;false;;;;;;
                                  -246309;4;0;false;false;63;95;191;;;
                                  -246313;1;0;false;false;;;;;;
                                  -246314;3;0;false;false;63;95;191;;;
                                  -246317;1;0;false;false;;;;;;
                                  -246318;6;0;false;false;63;95;191;;;
                                  -246324;1;0;false;false;;;;;;
                                  -246325;4;0;false;false;63;95;191;;;
                                  -246329;1;0;false;false;;;;;;
                                  -246330;7;0;false;false;63;95;191;;;
                                  -246337;1;0;false;false;;;;;;
                                  -246338;3;0;false;false;63;95;191;;;
                                  -246341;1;0;false;false;;;;;;
                                  -246342;8;0;false;false;63;95;191;;;
                                  -246350;5;0;false;false;127;127;159;;;
                                  -246355;3;0;false;false;;;;;;
                                  -246358;1;0;false;false;63;95;191;;;
                                  -246359;1;0;false;false;;;;;;
                                  -246360;5;0;false;false;127;127;159;;;
                                  -246365;3;0;false;false;;;;;;
                                  -246368;1;0;false;false;63;95;191;;;
                                  -246369;1;0;false;false;;;;;;
                                  -246370;7;1;false;false;127;159;191;;;
                                  -246377;3;0;false;false;63;95;191;;;
                                  -246380;3;0;false;false;;;;;;
                                  -246383;2;0;false;false;63;95;191;;;
                                  -246385;2;0;false;false;;;;;;
                                  -246387;6;1;false;false;127;0;85;;;
                                  -246393;1;0;false;false;;;;;;
                                  -246394;4;1;false;false;127;0;85;;;
                                  -246398;1;0;false;false;;;;;;
                                  -246399;22;0;false;false;0;0;0;;;
                                  -246421;1;0;false;false;;;;;;
                                  -246422;6;0;false;false;0;0;0;;;
                                  -246428;1;0;false;false;;;;;;
                                  -246429;6;0;false;false;0;0;0;;;
                                  -246435;1;0;false;false;;;;;;
                                  -246436;1;0;false;false;0;0;0;;;
                                  -246437;3;0;false;false;;;;;;
                                  -246440;11;0;false;false;0;0;0;;;
                                  -246451;1;0;false;false;;;;;;
                                  -246452;3;0;false;false;0;0;0;;;
                                  -246455;3;0;false;false;;;;;;
                                  -246458;2;1;false;false;127;0;85;;;
                                  -246460;1;0;false;false;;;;;;
                                  -246461;6;0;false;false;0;0;0;;;
                                  -246467;1;0;false;false;;;;;;
                                  -246468;2;0;false;false;0;0;0;;;
                                  -246470;1;0;false;false;;;;;;
                                  -246471;4;1;false;false;127;0;85;;;
                                  -246475;1;0;false;false;0;0;0;;;
                                  -246476;1;0;false;false;;;;;;
                                  -246477;1;0;false;false;0;0;0;;;
                                  -246478;4;0;false;false;;;;;;
                                  -246482;2;1;false;false;127;0;85;;;
                                  -246484;1;0;false;false;;;;;;
                                  -246485;20;0;false;false;0;0;0;;;
                                  -246505;1;0;false;false;;;;;;
                                  -246506;38;0;false;false;0;0;0;;;
                                  -246544;3;0;false;false;;;;;;
                                  -246547;1;0;false;false;0;0;0;;;
                                  -246548;3;0;false;false;;;;;;
                                  -246551;19;0;false;false;0;0;0;;;
                                  -246570;1;0;false;false;;;;;;
                                  -246571;1;0;false;false;0;0;0;;;
                                  -246572;1;0;false;false;;;;;;
                                  -246573;6;0;false;false;0;0;0;;;
                                  -246579;3;0;false;false;;;;;;
                                  -246582;9;0;false;false;0;0;0;;;
                                  -246591;2;0;false;false;;;;;;
                                  -246593;1;0;false;false;0;0;0;;;
                                  -246594;3;0;false;false;;;;;;
                                  -246597;3;0;false;false;63;95;191;;;
                                  -246600;4;0;false;false;;;;;;
                                  -246604;1;0;false;false;63;95;191;;;
                                  -246605;1;0;false;false;;;;;;
                                  -246606;4;0;false;false;63;95;191;;;
                                  -246610;1;0;false;false;;;;;;
                                  -246611;3;0;false;false;63;95;191;;;
                                  -246614;1;0;false;false;;;;;;
                                  -246615;9;0;false;false;63;95;191;;;
                                  -246624;1;0;false;false;;;;;;
                                  -246625;3;0;false;false;63;95;191;;;
                                  -246628;1;0;false;false;;;;;;
                                  -246629;7;0;false;false;63;95;191;;;
                                  -246636;1;0;false;false;;;;;;
                                  -246637;2;0;false;false;63;95;191;;;
                                  -246639;1;0;false;false;;;;;;
                                  -246640;4;0;false;false;63;95;191;;;
                                  -246644;1;0;false;false;;;;;;
                                  -246645;5;0;false;false;63;95;191;;;
                                  -246650;3;0;false;false;;;;;;
                                  -246653;1;0;false;false;63;95;191;;;
                                  -246654;1;0;false;false;;;;;;
                                  -246655;3;0;false;false;127;127;159;;;
                                  -246658;3;0;false;false;;;;;;
                                  -246661;1;0;false;false;63;95;191;;;
                                  -246662;1;0;false;false;;;;;;
                                  -246663;8;0;false;false;63;95;191;;;
                                  -246671;1;0;false;false;;;;;;
                                  -246672;2;0;false;false;63;95;191;;;
                                  -246674;1;0;false;false;;;;;;
                                  -246675;4;0;false;false;63;95;191;;;
                                  -246679;1;0;false;false;;;;;;
                                  -246680;6;0;false;false;63;95;191;;;
                                  -246686;2;0;false;false;;;;;;
                                  -246688;4;0;false;false;63;95;191;;;
                                  -246692;1;0;false;false;;;;;;
                                  -246693;10;0;false;false;63;95;191;;;
                                  -246703;1;0;false;false;;;;;;
                                  -246704;3;0;false;false;63;95;191;;;
                                  -246707;1;0;false;false;;;;;;
                                  -246708;9;0;false;false;63;95;191;;;
                                  -246717;1;0;false;false;;;;;;
                                  -246718;2;0;false;false;63;95;191;;;
                                  -246720;1;0;false;false;;;;;;
                                  -246721;5;0;false;false;63;95;191;;;
                                  -246726;1;0;false;false;;;;;;
                                  -246727;2;0;false;false;63;95;191;;;
                                  -246729;3;0;false;false;;;;;;
                                  -246732;1;0;false;false;63;95;191;;;
                                  -246733;1;0;false;false;;;;;;
                                  -246734;5;0;false;false;63;95;191;;;
                                  -246739;1;0;false;false;;;;;;
                                  -246740;10;0;false;false;63;95;191;;;
                                  -246750;2;0;false;false;;;;;;
                                  -246752;2;0;false;false;63;95;191;;;
                                  -246754;1;0;false;false;;;;;;
                                  -246755;1;0;false;false;63;95;191;;;
                                  -246756;1;0;false;false;;;;;;
                                  -246757;4;0;false;false;63;95;191;;;
                                  -246761;1;0;false;false;;;;;;
                                  -246762;6;0;false;false;63;95;191;;;
                                  -246768;1;0;false;false;;;;;;
                                  -246769;4;0;false;false;63;95;191;;;
                                  -246773;1;0;false;false;;;;;;
                                  -246774;8;0;false;false;63;95;191;;;
                                  -246782;1;0;false;false;;;;;;
                                  -246783;1;0;false;false;63;95;191;;;
                                  -246784;1;0;false;false;;;;;;
                                  -246785;11;0;false;false;63;95;191;;;
                                  -246796;1;0;false;false;;;;;;
                                  -246797;5;0;false;false;63;95;191;;;
                                  -246802;1;0;false;false;;;;;;
                                  -246803;3;0;false;false;63;95;191;;;
                                  -246806;4;0;false;false;;;;;;
                                  -246810;1;0;false;false;63;95;191;;;
                                  -246811;1;0;false;false;;;;;;
                                  -246812;3;0;false;false;63;95;191;;;
                                  -246815;1;0;false;false;;;;;;
                                  -246816;5;0;false;false;63;95;191;;;
                                  -246821;1;0;false;false;;;;;;
                                  -246822;10;0;false;false;63;95;191;;;
                                  -246832;1;0;false;false;;;;;;
                                  -246833;7;0;false;false;63;95;191;;;
                                  -246840;1;0;false;false;;;;;;
                                  -246841;4;0;false;false;63;95;191;;;
                                  -246845;1;0;false;false;;;;;;
                                  -246846;4;0;false;false;63;95;191;;;
                                  -246850;3;0;false;false;;;;;;
                                  -246853;1;0;false;false;63;95;191;;;
                                  -246854;1;0;false;false;;;;;;
                                  -246855;4;0;false;false;127;127;159;;;
                                  -246859;3;0;false;false;;;;;;
                                  -246862;1;0;false;false;63;95;191;;;
                                  -246863;3;0;false;false;;;;;;
                                  -246866;1;0;false;false;63;95;191;;;
                                  -246867;1;0;false;false;;;;;;
                                  -246868;7;1;false;false;127;159;191;;;
                                  -246875;5;0;false;false;63;95;191;;;
                                  -246880;1;0;false;false;;;;;;
                                  -246881;9;0;false;false;63;95;191;;;
                                  -246890;1;0;false;false;;;;;;
                                  -246891;5;0;false;false;63;95;191;;;
                                  -246896;1;0;false;false;;;;;;
                                  -246897;7;0;false;false;63;95;191;;;
                                  -246904;1;0;false;false;;;;;;
                                  -246905;3;0;false;false;63;95;191;;;
                                  -246908;1;0;false;false;;;;;;
                                  -246909;5;0;false;false;63;95;191;;;
                                  -246914;1;0;false;false;;;;;;
                                  -246915;4;0;false;false;63;95;191;;;
                                  -246919;1;0;false;false;;;;;;
                                  -246920;2;0;false;false;63;95;191;;;
                                  -246922;1;0;false;false;;;;;;
                                  -246923;6;0;false;false;63;95;191;;;
                                  -246929;1;0;false;false;;;;;;
                                  -246930;2;0;false;false;63;95;191;;;
                                  -246932;1;0;false;false;;;;;;
                                  -246933;3;0;false;false;63;95;191;;;
                                  -246936;4;0;false;false;;;;;;
                                  -246940;1;0;false;false;63;95;191;;;
                                  -246941;2;0;false;false;;;;;;
                                  -246943;9;0;false;false;63;95;191;;;
                                  -246952;1;0;false;false;;;;;;
                                  -246953;5;0;false;false;63;95;191;;;
                                  -246958;1;0;false;false;;;;;;
                                  -246959;4;0;false;false;63;95;191;;;
                                  -246963;1;0;false;false;;;;;;
                                  -246964;5;0;false;false;63;95;191;;;
                                  -246969;1;0;false;false;;;;;;
                                  -246970;1;0;false;false;63;95;191;;;
                                  -246971;1;0;false;false;;;;;;
                                  -246972;4;0;false;false;63;95;191;;;
                                  -246976;3;0;false;false;;;;;;
                                  -246979;1;0;false;false;63;95;191;;;
                                  -246980;1;0;false;false;;;;;;
                                  -246981;7;1;false;false;127;159;191;;;
                                  -246988;3;0;false;false;63;95;191;;;
                                  -246991;1;0;false;false;;;;;;
                                  -246992;9;0;false;false;63;95;191;;;
                                  -247001;1;0;false;false;;;;;;
                                  -247002;3;0;false;false;63;95;191;;;
                                  -247005;1;0;false;false;;;;;;
                                  -247006;6;0;false;false;63;95;191;;;
                                  -247012;3;0;false;false;;;;;;
                                  -247015;1;0;false;false;63;95;191;;;
                                  -247016;1;0;false;false;;;;;;
                                  -247017;5;1;false;false;127;159;191;;;
                                  -247022;27;0;false;false;63;95;191;;;
                                  -247049;3;0;false;false;;;;;;
                                  -247052;1;0;false;false;63;95;191;;;
                                  -247053;1;0;false;false;;;;;;
                                  -247054;11;1;false;false;127;159;191;;;
                                  -247065;12;0;false;false;63;95;191;;;
                                  -247077;1;0;false;false;;;;;;
                                  -247078;4;0;false;false;127;127;159;;;
                                  -247082;3;0;false;false;;;;;;
                                  -247085;1;0;false;false;63;95;191;;;
                                  -247086;4;0;false;false;;;;;;
                                  -247090;4;0;false;false;127;127;159;;;
                                  -247094;21;0;false;false;63;95;191;;;
                                  -247115;1;0;false;false;;;;;;
                                  -247116;1;0;false;false;127;127;159;;;
                                  -247117;1;0;false;false;;;;;;
                                  -247118;2;0;false;false;63;95;191;;;
                                  -247120;1;0;false;false;;;;;;
                                  -247121;3;0;false;false;63;95;191;;;
                                  -247124;1;0;false;false;;;;;;
                                  -247125;8;0;false;false;63;95;191;;;
                                  -247133;1;0;false;false;;;;;;
                                  -247134;3;0;false;false;63;95;191;;;
                                  -247137;1;0;false;false;;;;;;
                                  -247138;4;0;false;false;63;95;191;;;
                                  -247142;1;0;false;false;;;;;;
                                  -247143;8;0;false;false;63;95;191;;;
                                  -247151;5;0;false;false;127;127;159;;;
                                  -247156;3;0;false;false;;;;;;
                                  -247159;1;0;false;false;63;95;191;;;
                                  -247160;4;0;false;false;;;;;;
                                  -247164;4;0;false;false;127;127;159;;;
                                  -247168;27;0;false;false;63;95;191;;;
                                  -247195;1;0;false;false;;;;;;
                                  -247196;1;0;false;false;127;127;159;;;
                                  -247197;1;0;false;false;;;;;;
                                  -247198;2;0;false;false;63;95;191;;;
                                  -247200;1;0;false;false;;;;;;
                                  -247201;3;0;false;false;63;95;191;;;
                                  -247204;1;0;false;false;;;;;;
                                  -247205;6;0;false;false;63;95;191;;;
                                  -247211;1;0;false;false;;;;;;
                                  -247212;4;0;false;false;63;95;191;;;
                                  -247216;1;0;false;false;;;;;;
                                  -247217;3;0;false;false;63;95;191;;;
                                  -247220;1;0;false;false;;;;;;
                                  -247221;6;0;false;false;63;95;191;;;
                                  -247227;1;0;false;false;;;;;;
                                  -247228;4;0;false;false;63;95;191;;;
                                  -247232;1;0;false;false;;;;;;
                                  -247233;7;0;false;false;63;95;191;;;
                                  -247240;1;0;false;false;;;;;;
                                  -247241;3;0;false;false;63;95;191;;;
                                  -247244;1;0;false;false;;;;;;
                                  -247245;8;0;false;false;63;95;191;;;
                                  -247253;5;0;false;false;127;127;159;;;
                                  -247258;3;0;false;false;;;;;;
                                  -247261;1;0;false;false;63;95;191;;;
                                  -247262;1;0;false;false;;;;;;
                                  -247263;5;0;false;false;127;127;159;;;
                                  -247268;3;0;false;false;;;;;;
                                  -247271;1;0;false;false;63;95;191;;;
                                  -247272;1;0;false;false;;;;;;
                                  -247273;11;1;false;false;127;159;191;;;
                                  -247284;24;0;false;false;63;95;191;;;
                                  -247308;1;0;false;false;;;;;;
                                  -247309;4;0;false;false;127;127;159;;;
                                  -247313;3;0;false;false;;;;;;
                                  -247316;1;0;false;false;63;95;191;;;
                                  -247317;3;0;false;false;;;;;;
                                  -247320;4;0;false;false;127;127;159;;;
                                  -247324;22;0;false;false;63;95;191;;;
                                  -247346;1;0;false;false;;;;;;
                                  -247347;4;0;false;false;63;95;191;;;
                                  -247351;1;0;false;false;;;;;;
                                  -247352;6;0;false;false;63;95;191;;;
                                  -247358;1;0;false;false;;;;;;
                                  -247359;3;0;false;false;63;95;191;;;
                                  -247362;1;0;false;false;;;;;;
                                  -247363;5;0;false;false;63;95;191;;;
                                  -247368;1;0;false;false;;;;;;
                                  -247369;2;0;false;false;63;95;191;;;
                                  -247371;1;0;false;false;;;;;;
                                  -247372;3;0;false;false;63;95;191;;;
                                  -247375;1;0;false;false;;;;;;
                                  -247376;3;0;false;false;63;95;191;;;
                                  -247379;1;0;false;false;;;;;;
                                  -247380;2;0;false;false;63;95;191;;;
                                  -247382;1;0;false;false;;;;;;
                                  -247383;3;0;false;false;63;95;191;;;
                                  -247386;1;0;false;false;;;;;;
                                  -247387;9;0;false;false;63;95;191;;;
                                  -247396;1;0;false;false;;;;;;
                                  -247397;5;0;false;false;63;95;191;;;
                                  -247402;1;0;false;false;;;;;;
                                  -247403;2;0;false;false;63;95;191;;;
                                  -247405;1;0;false;false;;;;;;
                                  -247406;6;0;false;false;63;95;191;;;
                                  -247412;1;0;false;false;;;;;;
                                  -247413;1;0;false;false;63;95;191;;;
                                  -247414;4;0;false;false;;;;;;
                                  -247418;1;0;false;false;63;95;191;;;
                                  -247419;1;0;false;false;;;;;;
                                  -247420;5;0;false;false;63;95;191;;;
                                  -247425;1;0;false;false;;;;;;
                                  -247426;4;0;false;false;63;95;191;;;
                                  -247430;1;0;false;false;;;;;;
                                  -247431;4;0;false;false;63;95;191;;;
                                  -247435;1;0;false;false;;;;;;
                                  -247436;9;0;false;false;63;95;191;;;
                                  -247445;1;0;false;false;;;;;;
                                  -247446;4;0;false;false;63;95;191;;;
                                  -247450;1;0;false;false;;;;;;
                                  -247451;4;0;false;false;63;95;191;;;
                                  -247455;1;0;false;false;;;;;;
                                  -247456;7;0;false;false;63;95;191;;;
                                  -247463;1;0;false;false;;;;;;
                                  -247464;7;0;false;false;63;95;191;;;
                                  -247471;1;0;false;false;;;;;;
                                  -247472;2;0;false;false;63;95;191;;;
                                  -247474;1;0;false;false;;;;;;
                                  -247475;5;0;false;false;63;95;191;;;
                                  -247480;1;0;false;false;;;;;;
                                  -247481;2;0;false;false;63;95;191;;;
                                  -247483;1;0;false;false;;;;;;
                                  -247484;2;0;false;false;63;95;191;;;
                                  -247486;1;0;false;false;;;;;;
                                  -247487;5;0;false;false;63;95;191;;;
                                  -247492;1;0;false;false;;;;;;
                                  -247493;3;0;false;false;63;95;191;;;
                                  -247496;1;0;false;false;;;;;;
                                  -247497;4;0;false;false;63;95;191;;;
                                  -247501;1;0;false;false;;;;;;
                                  -247502;10;0;false;false;63;95;191;;;
                                  -247512;3;0;false;false;;;;;;
                                  -247515;1;0;false;false;63;95;191;;;
                                  -247516;1;0;false;false;;;;;;
                                  -247517;5;0;false;false;127;127;159;;;
                                  -247522;3;0;false;false;;;;;;
                                  -247525;2;0;false;false;63;95;191;;;
                                  -247527;2;0;false;false;;;;;;
                                  -247529;6;1;false;false;127;0;85;;;
                                  -247535;1;0;false;false;;;;;;
                                  -247536;4;1;false;false;127;0;85;;;
                                  -247540;1;0;false;false;;;;;;
                                  -247541;13;0;false;false;0;0;0;;;
                                  -247554;3;1;false;false;127;0;85;;;
                                  -247557;1;0;false;false;;;;;;
                                  -247558;6;0;false;false;0;0;0;;;
                                  -247564;1;0;false;false;;;;;;
                                  -247565;3;1;false;false;127;0;85;;;
                                  -247568;1;0;false;false;;;;;;
                                  -247569;4;0;false;false;0;0;0;;;
                                  -247573;1;0;false;false;;;;;;
                                  -247574;1;0;false;false;0;0;0;;;
                                  -247575;3;0;false;false;;;;;;
                                  -247578;47;0;false;false;63;127;95;;;
                                  -247625;1;0;false;false;;;;;;
                                  -247626;24;0;false;false;0;0;0;;;
                                  -247650;1;0;false;false;;;;;;
                                  -247651;3;0;false;false;0;0;0;;;
                                  -247654;1;0;false;false;;;;;;
                                  -247655;1;0;false;false;0;0;0;;;
                                  -247656;1;0;false;false;;;;;;
                                  -247657;7;0;false;false;0;0;0;;;
                                  -247664;3;0;false;false;;;;;;
                                  -247667;16;0;false;false;0;0;0;;;
                                  -247683;2;0;false;false;;;;;;
                                  -247685;1;0;false;false;0;0;0;;;
                                  -247686;2;0;false;false;;;;;;
                                  -247688;3;0;false;false;63;95;191;;;
                                  -247691;4;0;false;false;;;;;;
                                  -247695;1;0;false;false;63;95;191;;;
                                  -247696;1;0;false;false;;;;;;
                                  -247697;4;0;false;false;63;95;191;;;
                                  -247701;1;0;false;false;;;;;;
                                  -247702;3;0;false;false;63;95;191;;;
                                  -247705;1;0;false;false;;;;;;
                                  -247706;10;0;false;false;63;95;191;;;
                                  -247716;1;0;false;false;;;;;;
                                  -247717;3;0;false;false;63;95;191;;;
                                  -247720;1;0;false;false;;;;;;
                                  -247721;3;0;false;false;63;95;191;;;
                                  -247724;1;0;false;false;;;;;;
                                  -247725;9;0;false;false;63;95;191;;;
                                  -247734;1;0;false;false;;;;;;
                                  -247735;3;0;false;false;63;95;191;;;
                                  -247738;1;0;false;false;;;;;;
                                  -247739;3;0;false;false;63;95;191;;;
                                  -247742;1;0;false;false;;;;;;
                                  -247743;2;0;false;false;63;95;191;;;
                                  -247745;1;0;false;false;;;;;;
                                  -247746;8;0;false;false;63;95;191;;;
                                  -247754;1;0;false;false;;;;;;
                                  -247755;4;0;false;false;63;95;191;;;
                                  -247759;1;0;false;false;;;;;;
                                  -247760;13;0;false;false;63;95;191;;;
                                  -247773;1;0;false;false;;;;;;
                                  -247774;2;0;false;false;63;95;191;;;
                                  -247776;1;0;false;false;;;;;;
                                  -247777;6;0;false;false;63;95;191;;;
                                  -247783;4;0;false;false;;;;;;
                                  -247787;1;0;false;false;63;95;191;;;
                                  -247788;1;0;false;false;;;;;;
                                  -247789;3;0;false;false;63;95;191;;;
                                  -247792;1;0;false;false;;;;;;
                                  -247793;9;0;false;false;63;95;191;;;
                                  -247802;1;0;false;false;;;;;;
                                  -247803;4;0;false;false;63;95;191;;;
                                  -247807;1;0;false;false;;;;;;
                                  -247808;5;0;false;false;63;95;191;;;
                                  -247813;1;0;false;false;;;;;;
                                  -247814;1;0;false;false;63;95;191;;;
                                  -247815;1;0;false;false;;;;;;
                                  -247816;8;0;false;false;63;95;191;;;
                                  -247824;1;0;false;false;;;;;;
                                  -247825;6;0;false;false;63;95;191;;;
                                  -247831;1;0;false;false;;;;;;
                                  -247832;6;0;false;false;63;95;191;;;
                                  -247838;1;0;false;false;;;;;;
                                  -247839;3;0;false;false;63;95;191;;;
                                  -247842;1;0;false;false;;;;;;
                                  -247843;5;0;false;false;63;95;191;;;
                                  -247848;1;0;false;false;;;;;;
                                  -247849;2;0;false;false;63;95;191;;;
                                  -247851;1;0;false;false;;;;;;
                                  -247852;3;0;false;false;63;95;191;;;
                                  -247855;1;0;false;false;;;;;;
                                  -247856;6;0;false;false;63;95;191;;;
                                  -247862;1;0;false;false;;;;;;
                                  -247863;5;0;false;false;63;95;191;;;
                                  -247868;1;0;false;false;;;;;;
                                  -247869;2;0;false;false;63;95;191;;;
                                  -247871;1;0;false;false;;;;;;
                                  -247872;3;0;false;false;63;95;191;;;
                                  -247875;4;0;false;false;;;;;;
                                  -247879;1;0;false;false;63;95;191;;;
                                  -247880;1;0;false;false;;;;;;
                                  -247881;10;0;false;false;63;95;191;;;
                                  -247891;1;0;false;false;;;;;;
                                  -247892;3;0;false;false;127;127;159;;;
                                  -247895;3;0;false;false;;;;;;
                                  -247898;1;0;false;false;63;95;191;;;
                                  -247899;3;0;false;false;;;;;;
                                  -247902;1;0;false;false;63;95;191;;;
                                  -247903;1;0;false;false;;;;;;
                                  -247904;7;1;false;false;127;159;191;;;
                                  -247911;5;0;false;false;63;95;191;;;
                                  -247916;1;0;false;false;;;;;;
                                  -247917;6;0;false;false;63;95;191;;;
                                  -247923;1;0;false;false;;;;;;
                                  -247924;2;0;false;false;63;95;191;;;
                                  -247926;1;0;false;false;;;;;;
                                  -247927;3;0;false;false;63;95;191;;;
                                  -247930;1;0;false;false;;;;;;
                                  -247931;5;0;false;false;63;95;191;;;
                                  -247936;1;0;false;false;;;;;;
                                  -247937;8;0;false;false;63;95;191;;;
                                  -247945;1;0;false;false;;;;;;
                                  -247946;9;0;false;false;63;95;191;;;
                                  -247955;3;0;false;false;;;;;;
                                  -247958;1;0;false;false;63;95;191;;;
                                  -247959;1;0;false;false;;;;;;
                                  -247960;7;1;false;false;127;159;191;;;
                                  -247967;6;0;false;false;63;95;191;;;
                                  -247973;1;0;false;false;;;;;;
                                  -247974;6;0;false;false;63;95;191;;;
                                  -247980;1;0;false;false;;;;;;
                                  -247981;2;0;false;false;63;95;191;;;
                                  -247983;1;0;false;false;;;;;;
                                  -247984;10;0;false;false;63;95;191;;;
                                  -247994;1;0;false;false;;;;;;
                                  -247995;2;0;false;false;63;95;191;;;
                                  -247997;1;0;false;false;;;;;;
                                  -247998;6;0;false;false;63;95;191;;;
                                  -248004;3;0;false;false;;;;;;
                                  -248007;1;0;false;false;63;95;191;;;
                                  -248008;4;0;false;false;;;;;;
                                  -248012;1;0;false;false;63;95;191;;;
                                  -248013;1;0;false;false;;;;;;
                                  -248014;11;1;false;false;127;159;191;;;
                                  -248025;12;0;false;false;63;95;191;;;
                                  -248037;1;0;false;false;;;;;;
                                  -248038;4;0;false;false;127;127;159;;;
                                  -248042;3;0;false;false;;;;;;
                                  -248045;1;0;false;false;63;95;191;;;
                                  -248046;4;0;false;false;;;;;;
                                  -248050;4;0;false;false;127;127;159;;;
                                  -248054;21;0;false;false;63;95;191;;;
                                  -248075;1;0;false;false;;;;;;
                                  -248076;1;0;false;false;127;127;159;;;
                                  -248077;1;0;false;false;;;;;;
                                  -248078;2;0;false;false;63;95;191;;;
                                  -248080;1;0;false;false;;;;;;
                                  -248081;3;0;false;false;63;95;191;;;
                                  -248084;1;0;false;false;;;;;;
                                  -248085;8;0;false;false;63;95;191;;;
                                  -248093;1;0;false;false;;;;;;
                                  -248094;3;0;false;false;63;95;191;;;
                                  -248097;1;0;false;false;;;;;;
                                  -248098;4;0;false;false;63;95;191;;;
                                  -248102;1;0;false;false;;;;;;
                                  -248103;8;0;false;false;63;95;191;;;
                                  -248111;5;0;false;false;127;127;159;;;
                                  -248116;3;0;false;false;;;;;;
                                  -248119;1;0;false;false;63;95;191;;;
                                  -248120;4;0;false;false;;;;;;
                                  -248124;4;0;false;false;127;127;159;;;
                                  -248128;27;0;false;false;63;95;191;;;
                                  -248155;1;0;false;false;;;;;;
                                  -248156;1;0;false;false;127;127;159;;;
                                  -248157;1;0;false;false;;;;;;
                                  -248158;2;0;false;false;63;95;191;;;
                                  -248160;1;0;false;false;;;;;;
                                  -248161;3;0;false;false;63;95;191;;;
                                  -248164;1;0;false;false;;;;;;
                                  -248165;6;0;false;false;63;95;191;;;
                                  -248171;1;0;false;false;;;;;;
                                  -248172;4;0;false;false;63;95;191;;;
                                  -248176;1;0;false;false;;;;;;
                                  -248177;3;0;false;false;63;95;191;;;
                                  -248180;1;0;false;false;;;;;;
                                  -248181;6;0;false;false;63;95;191;;;
                                  -248187;1;0;false;false;;;;;;
                                  -248188;4;0;false;false;63;95;191;;;
                                  -248192;1;0;false;false;;;;;;
                                  -248193;7;0;false;false;63;95;191;;;
                                  -248200;1;0;false;false;;;;;;
                                  -248201;3;0;false;false;63;95;191;;;
                                  -248204;1;0;false;false;;;;;;
                                  -248205;8;0;false;false;63;95;191;;;
                                  -248213;5;0;false;false;127;127;159;;;
                                  -248218;3;0;false;false;;;;;;
                                  -248221;1;0;false;false;63;95;191;;;
                                  -248222;1;0;false;false;;;;;;
                                  -248223;5;0;false;false;127;127;159;;;
                                  -248228;3;0;false;false;;;;;;
                                  -248231;1;0;false;false;63;95;191;;;
                                  -248232;1;0;false;false;;;;;;
                                  -248233;11;1;false;false;127;159;191;;;
                                  -248244;24;0;false;false;63;95;191;;;
                                  -248268;1;0;false;false;;;;;;
                                  -248269;4;0;false;false;127;127;159;;;
                                  -248273;3;0;false;false;;;;;;
                                  -248276;1;0;false;false;63;95;191;;;
                                  -248277;3;0;false;false;;;;;;
                                  -248280;4;0;false;false;127;127;159;;;
                                  -248284;22;0;false;false;63;95;191;;;
                                  -248306;1;0;false;false;;;;;;
                                  -248307;4;0;false;false;63;95;191;;;
                                  -248311;1;0;false;false;;;;;;
                                  -248312;6;0;false;false;63;95;191;;;
                                  -248318;1;0;false;false;;;;;;
                                  -248319;3;0;false;false;63;95;191;;;
                                  -248322;1;0;false;false;;;;;;
                                  -248323;5;0;false;false;63;95;191;;;
                                  -248328;1;0;false;false;;;;;;
                                  -248329;2;0;false;false;63;95;191;;;
                                  -248331;1;0;false;false;;;;;;
                                  -248332;3;0;false;false;63;95;191;;;
                                  -248335;1;0;false;false;;;;;;
                                  -248336;3;0;false;false;63;95;191;;;
                                  -248339;1;0;false;false;;;;;;
                                  -248340;2;0;false;false;63;95;191;;;
                                  -248342;1;0;false;false;;;;;;
                                  -248343;3;0;false;false;63;95;191;;;
                                  -248346;1;0;false;false;;;;;;
                                  -248347;9;0;false;false;63;95;191;;;
                                  -248356;1;0;false;false;;;;;;
                                  -248357;5;0;false;false;63;95;191;;;
                                  -248362;1;0;false;false;;;;;;
                                  -248363;2;0;false;false;63;95;191;;;
                                  -248365;1;0;false;false;;;;;;
                                  -248366;6;0;false;false;63;95;191;;;
                                  -248372;1;0;false;false;;;;;;
                                  -248373;1;0;false;false;63;95;191;;;
                                  -248374;4;0;false;false;;;;;;
                                  -248378;1;0;false;false;63;95;191;;;
                                  -248379;1;0;false;false;;;;;;
                                  -248380;5;0;false;false;63;95;191;;;
                                  -248385;1;0;false;false;;;;;;
                                  -248386;4;0;false;false;63;95;191;;;
                                  -248390;1;0;false;false;;;;;;
                                  -248391;4;0;false;false;63;95;191;;;
                                  -248395;1;0;false;false;;;;;;
                                  -248396;9;0;false;false;63;95;191;;;
                                  -248405;1;0;false;false;;;;;;
                                  -248406;4;0;false;false;63;95;191;;;
                                  -248410;1;0;false;false;;;;;;
                                  -248411;4;0;false;false;63;95;191;;;
                                  -248415;1;0;false;false;;;;;;
                                  -248416;7;0;false;false;63;95;191;;;
                                  -248423;1;0;false;false;;;;;;
                                  -248424;7;0;false;false;63;95;191;;;
                                  -248431;1;0;false;false;;;;;;
                                  -248432;2;0;false;false;63;95;191;;;
                                  -248434;1;0;false;false;;;;;;
                                  -248435;5;0;false;false;63;95;191;;;
                                  -248440;1;0;false;false;;;;;;
                                  -248441;2;0;false;false;63;95;191;;;
                                  -248443;1;0;false;false;;;;;;
                                  -248444;2;0;false;false;63;95;191;;;
                                  -248446;1;0;false;false;;;;;;
                                  -248447;5;0;false;false;63;95;191;;;
                                  -248452;1;0;false;false;;;;;;
                                  -248453;3;0;false;false;63;95;191;;;
                                  -248456;1;0;false;false;;;;;;
                                  -248457;4;0;false;false;63;95;191;;;
                                  -248461;1;0;false;false;;;;;;
                                  -248462;10;0;false;false;63;95;191;;;
                                  -248472;3;0;false;false;;;;;;
                                  -248475;1;0;false;false;63;95;191;;;
                                  -248476;1;0;false;false;;;;;;
                                  -248477;5;0;false;false;127;127;159;;;
                                  -248482;3;0;false;false;;;;;;
                                  -248485;2;0;false;false;63;95;191;;;
                                  -248487;2;0;false;false;;;;;;
                                  -248489;6;1;false;false;127;0;85;;;
                                  -248495;1;0;false;false;;;;;;
                                  -248496;4;1;false;false;127;0;85;;;
                                  -248500;1;0;false;false;;;;;;
                                  -248501;18;0;false;false;0;0;0;;;
                                  -248519;3;1;false;false;127;0;85;;;
                                  -248522;1;0;false;false;;;;;;
                                  -248523;6;0;false;false;0;0;0;;;
                                  -248529;1;0;false;false;;;;;;
                                  -248530;3;1;false;false;127;0;85;;;
                                  -248533;1;0;false;false;;;;;;
                                  -248534;7;0;false;false;0;0;0;;;
                                  -248541;1;0;false;false;;;;;;
                                  -248542;1;0;false;false;0;0;0;;;
                                  -248543;3;0;false;false;;;;;;
                                  -248546;14;0;false;false;0;0;0;;;
                                  -248560;3;0;false;false;;;;;;
                                  -248563;3;1;false;false;127;0;85;;;
                                  -248566;1;0;false;false;;;;;;
                                  -248567;13;0;false;false;0;0;0;;;
                                  -248580;1;0;false;false;;;;;;
                                  -248581;1;0;false;false;0;0;0;;;
                                  -248582;1;0;false;false;;;;;;
                                  -248583;15;0;false;false;0;0;0;;;
                                  -248598;3;0;false;false;;;;;;
                                  -248601;5;0;false;false;0;0;0;;;
                                  -248606;1;0;false;false;;;;;;
                                  -248607;1;0;false;false;0;0;0;;;
                                  -248608;1;0;false;false;;;;;;
                                  -248609;11;0;false;false;0;0;0;;;
                                  -248620;1;0;false;false;;;;;;
                                  -248621;8;0;false;false;0;0;0;;;
                                  -248629;1;0;false;false;;;;;;
                                  -248630;7;0;false;false;0;0;0;;;
                                  -248637;1;0;false;false;;;;;;
                                  -248638;16;0;false;false;0;0;0;;;
                                  -248654;3;0;false;false;;;;;;
                                  -248657;3;1;false;false;127;0;85;;;
                                  -248660;1;0;false;false;;;;;;
                                  -248661;3;0;false;false;0;0;0;;;
                                  -248664;1;0;false;false;;;;;;
                                  -248665;1;0;false;false;0;0;0;;;
                                  -248666;1;0;false;false;;;;;;
                                  -248667;5;0;false;false;0;0;0;;;
                                  -248672;1;0;false;false;;;;;;
                                  -248673;1;0;false;false;0;0;0;;;
                                  -248674;1;0;false;false;;;;;;
                                  -248675;7;0;false;false;0;0;0;;;
                                  -248682;3;0;false;false;;;;;;
                                  -248685;2;1;false;false;127;0;85;;;
                                  -248687;1;0;false;false;;;;;;
                                  -248688;4;0;false;false;0;0;0;;;
                                  -248692;1;0;false;false;;;;;;
                                  -248693;1;0;false;false;0;0;0;;;
                                  -248694;1;0;false;false;;;;;;
                                  -248695;2;0;false;false;0;0;0;;;
                                  -248697;1;0;false;false;;;;;;
                                  -248698;1;0;false;false;0;0;0;;;
                                  -248699;4;0;false;false;;;;;;
                                  -248703;6;0;false;false;0;0;0;;;
                                  -248709;1;0;false;false;;;;;;
                                  -248710;1;0;false;false;0;0;0;;;
                                  -248711;1;0;false;false;;;;;;
                                  -248712;7;0;false;false;0;0;0;;;
                                  -248719;3;0;false;false;;;;;;
                                  -248722;1;0;false;false;0;0;0;;;
                                  -248723;1;0;false;false;;;;;;
                                  -248724;4;1;false;false;127;0;85;;;
                                  -248728;1;0;false;false;;;;;;
                                  -248729;1;0;false;false;0;0;0;;;
                                  -248730;4;0;false;false;;;;;;
                                  -248734;2;1;false;false;127;0;85;;;
                                  -248736;1;0;false;false;;;;;;
                                  -248737;4;0;false;false;0;0;0;;;
                                  -248741;1;0;false;false;;;;;;
                                  -248742;1;0;false;false;0;0;0;;;
                                  -248743;1;0;false;false;;;;;;
                                  -248744;14;0;false;false;0;0;0;;;
                                  -248758;1;0;false;false;;;;;;
                                  -248759;6;0;false;false;0;0;0;;;
                                  -248765;1;0;false;false;;;;;;
                                  -248766;1;0;false;false;0;0;0;;;
                                  -248767;1;0;false;false;;;;;;
                                  -248768;13;0;false;false;0;0;0;;;
                                  -248781;1;0;false;false;;;;;;
                                  -248782;1;0;false;false;0;0;0;;;
                                  -248783;1;0;false;false;;;;;;
                                  -248784;6;0;false;false;0;0;0;;;
                                  -248790;3;0;false;false;;;;;;
                                  -248793;1;0;false;false;0;0;0;;;
                                  -248794;3;0;false;false;;;;;;
                                  -248797;2;1;false;false;127;0;85;;;
                                  -248799;1;0;false;false;;;;;;
                                  -248800;23;0;false;false;0;0;0;;;
                                  -248823;1;0;false;false;;;;;;
                                  -248824;2;0;false;false;0;0;0;;;
                                  -248826;1;0;false;false;;;;;;
                                  -248827;21;0;false;false;0;0;0;;;
                                  -248848;1;0;false;false;;;;;;
                                  -248849;1;0;false;false;0;0;0;;;
                                  -248850;1;0;false;false;;;;;;
                                  -248851;8;0;false;false;0;0;0;;;
                                  -248859;1;0;false;false;;;;;;
                                  -248860;1;0;false;false;0;0;0;;;
                                  -248861;4;0;false;false;;;;;;
                                  -248865;71;0;false;false;63;127;95;;;
                                  -248936;2;0;false;false;;;;;;
                                  -248938;78;0;false;false;63;127;95;;;
                                  -249016;2;0;false;false;;;;;;
                                  -249018;29;0;false;false;63;127;95;;;
                                  -249047;2;0;false;false;;;;;;
                                  -249049;38;0;false;false;0;0;0;;;
                                  -249087;3;0;false;false;;;;;;
                                  -249090;1;0;false;false;0;0;0;;;
                                  -249091;8;0;false;false;;;;;;
                                  -249099;27;0;false;false;0;0;0;;;
                                  -249126;1;0;false;false;;;;;;
                                  -249127;7;0;false;false;0;0;0;;;
                                  -249134;1;0;false;false;;;;;;
                                  -249135;5;1;false;false;127;0;85;;;
                                  -249140;2;0;false;false;0;0;0;;;
                                  -249142;3;0;false;false;;;;;;
                                  -249145;52;0;false;false;63;127;95;;;
                                  -249197;1;0;false;false;;;;;;
                                  -249198;19;0;false;false;0;0;0;;;
                                  -249217;2;0;false;false;;;;;;
                                  -249219;1;0;false;false;0;0;0;;;
                                  -249220;2;0;false;false;;;;;;
                                  -249222;3;0;false;false;63;95;191;;;
                                  -249225;4;0;false;false;;;;;;
                                  -249229;1;0;false;false;63;95;191;;;
                                  -249230;1;0;false;false;;;;;;
                                  -249231;4;0;false;false;63;95;191;;;
                                  -249235;1;0;false;false;;;;;;
                                  -249236;3;0;false;false;63;95;191;;;
                                  -249239;1;0;false;false;;;;;;
                                  -249240;10;0;false;false;63;95;191;;;
                                  -249250;4;0;false;false;;;;;;
                                  -249254;1;0;false;false;63;95;191;;;
                                  -249255;1;0;false;false;;;;;;
                                  -249256;3;0;false;false;63;95;191;;;
                                  -249259;1;0;false;false;;;;;;
                                  -249260;3;0;false;false;63;95;191;;;
                                  -249263;1;0;false;false;;;;;;
                                  -249264;9;0;false;false;63;95;191;;;
                                  -249273;1;0;false;false;;;;;;
                                  -249274;3;0;false;false;63;95;191;;;
                                  -249277;1;0;false;false;;;;;;
                                  -249278;3;0;false;false;63;95;191;;;
                                  -249281;1;0;false;false;;;;;;
                                  -249282;2;0;false;false;63;95;191;;;
                                  -249284;1;0;false;false;;;;;;
                                  -249285;8;0;false;false;63;95;191;;;
                                  -249293;1;0;false;false;;;;;;
                                  -249294;4;0;false;false;63;95;191;;;
                                  -249298;1;0;false;false;;;;;;
                                  -249299;13;0;false;false;63;95;191;;;
                                  -249312;1;0;false;false;;;;;;
                                  -249313;2;0;false;false;63;95;191;;;
                                  -249315;1;0;false;false;;;;;;
                                  -249316;6;0;false;false;63;95;191;;;
                                  -249322;4;0;false;false;;;;;;
                                  -249326;1;0;false;false;63;95;191;;;
                                  -249327;1;0;false;false;;;;;;
                                  -249328;3;0;false;false;63;95;191;;;
                                  -249331;1;0;false;false;;;;;;
                                  -249332;9;0;false;false;63;95;191;;;
                                  -249341;1;0;false;false;;;;;;
                                  -249342;4;0;false;false;63;95;191;;;
                                  -249346;1;0;false;false;;;;;;
                                  -249347;5;0;false;false;63;95;191;;;
                                  -249352;3;0;false;false;;;;;;
                                  -249355;1;0;false;false;63;95;191;;;
                                  -249356;1;0;false;false;;;;;;
                                  -249357;3;0;false;false;127;127;159;;;
                                  -249360;3;0;false;false;;;;;;
                                  -249363;1;0;false;false;63;95;191;;;
                                  -249364;3;0;false;false;;;;;;
                                  -249367;1;0;false;false;63;95;191;;;
                                  -249368;1;0;false;false;;;;;;
                                  -249369;7;1;false;false;127;159;191;;;
                                  -249376;5;0;false;false;63;95;191;;;
                                  -249381;1;0;false;false;;;;;;
                                  -249382;6;0;false;false;63;95;191;;;
                                  -249388;1;0;false;false;;;;;;
                                  -249389;2;0;false;false;63;95;191;;;
                                  -249391;1;0;false;false;;;;;;
                                  -249392;3;0;false;false;63;95;191;;;
                                  -249395;1;0;false;false;;;;;;
                                  -249396;5;0;false;false;63;95;191;;;
                                  -249401;1;0;false;false;;;;;;
                                  -249402;8;0;false;false;63;95;191;;;
                                  -249410;1;0;false;false;;;;;;
                                  -249411;10;0;false;false;63;95;191;;;
                                  -249421;1;0;false;false;;;;;;
                                  -249422;5;0;false;false;63;95;191;;;
                                  -249427;1;0;false;false;;;;;;
                                  -249428;2;0;false;false;63;95;191;;;
                                  -249430;1;0;false;false;;;;;;
                                  -249431;1;0;false;false;63;95;191;;;
                                  -249432;1;0;false;false;;;;;;
                                  -249433;4;0;false;false;63;95;191;;;
                                  -249437;1;0;false;false;;;;;;
                                  -249438;2;0;false;false;63;95;191;;;
                                  -249440;1;0;false;false;;;;;;
                                  -249441;5;0;false;false;63;95;191;;;
                                  -249446;3;0;false;false;;;;;;
                                  -249449;1;0;false;false;63;95;191;;;
                                  -249450;1;0;false;false;;;;;;
                                  -249451;7;1;false;false;127;159;191;;;
                                  -249458;6;0;false;false;63;95;191;;;
                                  -249464;1;0;false;false;;;;;;
                                  -249465;6;0;false;false;63;95;191;;;
                                  -249471;1;0;false;false;;;;;;
                                  -249472;2;0;false;false;63;95;191;;;
                                  -249474;1;0;false;false;;;;;;
                                  -249475;10;0;false;false;63;95;191;;;
                                  -249485;1;0;false;false;;;;;;
                                  -249486;2;0;false;false;63;95;191;;;
                                  -249488;1;0;false;false;;;;;;
                                  -249489;7;0;false;false;63;95;191;;;
                                  -249496;1;0;false;false;;;;;;
                                  -249497;1;0;false;false;63;95;191;;;
                                  -249498;1;0;false;false;;;;;;
                                  -249499;20;0;false;false;63;95;191;;;
                                  -249519;1;0;false;false;;;;;;
                                  -249520;1;0;false;false;63;95;191;;;
                                  -249521;2;0;false;false;;;;;;
                                  -249523;34;0;false;false;63;95;191;;;
                                  -249557;1;0;false;false;;;;;;
                                  -249558;1;0;false;false;63;95;191;;;
                                  -249559;2;0;false;false;;;;;;
                                  -249561;1;0;false;false;63;95;191;;;
                                  -249562;1;0;false;false;;;;;;
                                  -249563;8;0;false;false;63;95;191;;;
                                  -249571;1;0;false;false;;;;;;
                                  -249572;6;0;false;false;63;95;191;;;
                                  -249578;1;0;false;false;;;;;;
                                  -249579;6;0;false;false;63;95;191;;;
                                  -249585;1;0;false;false;;;;;;
                                  -249586;3;0;false;false;63;95;191;;;
                                  -249589;1;0;false;false;;;;;;
                                  -249590;5;0;false;false;63;95;191;;;
                                  -249595;1;0;false;false;;;;;;
                                  -249596;2;0;false;false;63;95;191;;;
                                  -249598;1;0;false;false;;;;;;
                                  -249599;3;0;false;false;63;95;191;;;
                                  -249602;1;0;false;false;;;;;;
                                  -249603;9;0;false;false;63;95;191;;;
                                  -249612;1;0;false;false;;;;;;
                                  -249613;6;0;false;false;63;95;191;;;
                                  -249619;3;0;false;false;;;;;;
                                  -249622;1;0;false;false;63;95;191;;;
                                  -249623;1;0;false;false;;;;;;
                                  -249624;7;1;false;false;127;159;191;;;
                                  -249631;9;0;false;false;63;95;191;;;
                                  -249640;1;0;false;false;;;;;;
                                  -249641;1;0;false;false;63;95;191;;;
                                  -249642;1;0;false;false;;;;;;
                                  -249643;9;0;false;false;63;95;191;;;
                                  -249652;1;0;false;false;;;;;;
                                  -249653;5;0;false;false;63;95;191;;;
                                  -249658;1;0;false;false;;;;;;
                                  -249659;2;0;false;false;63;95;191;;;
                                  -249661;1;0;false;false;;;;;;
                                  -249662;4;0;false;false;63;95;191;;;
                                  -249666;1;0;false;false;;;;;;
                                  -249667;4;0;false;false;63;95;191;;;
                                  -249671;1;0;false;false;;;;;;
                                  -249672;3;0;false;false;63;95;191;;;
                                  -249675;1;0;false;false;;;;;;
                                  -249676;2;0;false;false;63;95;191;;;
                                  -249678;1;0;false;false;;;;;;
                                  -249679;4;0;false;false;63;95;191;;;
                                  -249683;1;0;false;false;;;;;;
                                  -249684;3;0;false;false;63;95;191;;;
                                  -249687;1;0;false;false;;;;;;
                                  -249688;4;0;false;false;63;95;191;;;
                                  -249692;4;0;false;false;;;;;;
                                  -249696;1;0;false;false;63;95;191;;;
                                  -249697;2;0;false;false;;;;;;
                                  -249699;3;0;false;false;63;95;191;;;
                                  -249702;1;0;false;false;;;;;;
                                  -249703;9;0;false;false;63;95;191;;;
                                  -249712;1;0;false;false;;;;;;
                                  -249713;2;0;false;false;63;95;191;;;
                                  -249715;1;0;false;false;;;;;;
                                  -249716;6;0;false;false;63;95;191;;;
                                  -249722;3;0;false;false;;;;;;
                                  -249725;2;0;false;false;63;95;191;;;
                                  -249727;2;0;false;false;;;;;;
                                  -249729;4;1;false;false;127;0;85;;;
                                  -249733;1;0;false;false;;;;;;
                                  -249734;21;0;false;false;0;0;0;;;
                                  -249755;3;1;false;false;127;0;85;;;
                                  -249758;1;0;false;false;;;;;;
                                  -249759;6;0;false;false;0;0;0;;;
                                  -249765;1;0;false;false;;;;;;
                                  -249766;3;1;false;false;127;0;85;;;
                                  -249769;1;0;false;false;;;;;;
                                  -249770;7;0;false;false;0;0;0;;;
                                  -249777;1;0;false;false;;;;;;
                                  -249778;7;1;false;false;127;0;85;;;
                                  -249785;1;0;false;false;;;;;;
                                  -249786;10;0;false;false;0;0;0;;;
                                  -249796;1;0;false;false;;;;;;
                                  -249797;1;0;false;false;0;0;0;;;
                                  -249798;3;0;false;false;;;;;;
                                  -249801;3;1;false;false;127;0;85;;;
                                  -249804;1;0;false;false;;;;;;
                                  -249805;3;0;false;false;0;0;0;;;
                                  -249808;1;0;false;false;;;;;;
                                  -249809;1;0;false;false;0;0;0;;;
                                  -249810;1;0;false;false;;;;;;
                                  -249811;5;0;false;false;0;0;0;;;
                                  -249816;1;0;false;false;;;;;;
                                  -249817;1;0;false;false;0;0;0;;;
                                  -249818;1;0;false;false;;;;;;
                                  -249819;7;0;false;false;0;0;0;;;
                                  -249826;6;0;false;false;;;;;;
                                  -249832;2;1;false;false;127;0;85;;;
                                  -249834;1;0;false;false;;;;;;
                                  -249835;6;0;false;false;0;0;0;;;
                                  -249841;1;0;false;false;;;;;;
                                  -249842;1;0;false;false;0;0;0;;;
                                  -249843;1;0;false;false;;;;;;
                                  -249844;4;0;false;false;0;0;0;;;
                                  -249848;1;0;false;false;;;;;;
                                  -249849;1;0;false;false;0;0;0;;;
                                  -249850;4;0;false;false;;;;;;
                                  -249854;3;1;false;false;127;0;85;;;
                                  -249857;1;0;false;false;;;;;;
                                  -249858;4;0;false;false;0;0;0;;;
                                  -249862;1;0;false;false;;;;;;
                                  -249863;1;0;false;false;0;0;0;;;
                                  -249864;1;0;false;false;;;;;;
                                  -249865;4;0;false;false;0;0;0;;;
                                  -249869;4;0;false;false;;;;;;
                                  -249873;3;0;false;false;0;0;0;;;
                                  -249876;1;0;false;false;;;;;;
                                  -249877;1;0;false;false;0;0;0;;;
                                  -249878;1;0;false;false;;;;;;
                                  -249879;6;0;false;false;0;0;0;;;
                                  -249885;4;0;false;false;;;;;;
                                  -249889;5;0;false;false;0;0;0;;;
                                  -249894;1;0;false;false;;;;;;
                                  -249895;1;0;false;false;0;0;0;;;
                                  -249896;1;0;false;false;;;;;;
                                  -249897;5;0;false;false;0;0;0;;;
                                  -249902;3;0;false;false;;;;;;
                                  -249905;1;0;false;false;0;0;0;;;
                                  -249906;3;0;false;false;;;;;;
                                  -249909;68;0;false;false;63;127;95;;;
                                  -249977;1;0;false;false;;;;;;
                                  -249978;15;0;false;false;63;127;95;;;
                                  -249993;1;0;false;false;;;;;;
                                  -249994;2;1;false;false;127;0;85;;;
                                  -249996;1;0;false;false;;;;;;
                                  -249997;12;0;false;false;0;0;0;;;
                                  -250009;1;0;false;false;;;;;;
                                  -250010;2;0;false;false;0;0;0;;;
                                  -250012;1;0;false;false;;;;;;
                                  -250013;5;0;false;false;0;0;0;;;
                                  -250018;1;0;false;false;;;;;;
                                  -250019;2;0;false;false;0;0;0;;;
                                  -250021;1;0;false;false;;;;;;
                                  -250022;11;0;false;false;0;0;0;;;
                                  -250033;1;0;false;false;;;;;;
                                  -250034;2;0;false;false;0;0;0;;;
                                  -250036;1;0;false;false;;;;;;
                                  -250037;3;0;false;false;0;0;0;;;
                                  -250040;1;0;false;false;;;;;;
                                  -250041;2;0;false;false;0;0;0;;;
                                  -250043;5;0;false;false;;;;;;
                                  -250048;7;0;false;false;0;0;0;;;
                                  -250055;1;0;false;false;;;;;;
                                  -250056;1;0;false;false;0;0;0;;;
                                  -250057;1;0;false;false;;;;;;
                                  -250058;1;0;false;false;0;0;0;;;
                                  -250059;1;0;false;false;;;;;;
                                  -250060;2;0;false;false;0;0;0;;;
                                  -250062;1;0;false;false;;;;;;
                                  -250063;15;0;false;false;0;0;0;;;
                                  -250078;1;0;false;false;;;;;;
                                  -250079;2;0;false;false;0;0;0;;;
                                  -250081;1;0;false;false;;;;;;
                                  -250082;12;0;false;false;0;0;0;;;
                                  -250094;1;0;false;false;;;;;;
                                  -250095;2;0;false;false;0;0;0;;;
                                  -250097;5;0;false;false;;;;;;
                                  -250102;7;0;false;false;0;0;0;;;
                                  -250109;1;0;false;false;;;;;;
                                  -250110;1;0;false;false;0;0;0;;;
                                  -250111;1;0;false;false;;;;;;
                                  -250112;1;0;false;false;0;0;0;;;
                                  -250113;1;0;false;false;;;;;;
                                  -250114;2;0;false;false;0;0;0;;;
                                  -250116;1;0;false;false;;;;;;
                                  -250117;15;0;false;false;0;0;0;;;
                                  -250132;1;0;false;false;;;;;;
                                  -250133;2;0;false;false;0;0;0;;;
                                  -250135;1;0;false;false;;;;;;
                                  -250136;13;0;false;false;0;0;0;;;
                                  -250149;1;0;false;false;;;;;;
                                  -250150;1;0;false;false;0;0;0;;;
                                  -250151;4;0;false;false;;;;;;
                                  -250155;26;0;false;false;0;0;0;;;
                                  -250181;4;0;false;false;;;;;;
                                  -250185;2;1;false;false;127;0;85;;;
                                  -250187;1;0;false;false;;;;;;
                                  -250188;7;0;false;false;0;0;0;;;
                                  -250195;1;0;false;false;;;;;;
                                  -250196;1;0;false;false;0;0;0;;;
                                  -250197;1;0;false;false;;;;;;
                                  -250198;2;0;false;false;0;0;0;;;
                                  -250200;1;0;false;false;;;;;;
                                  -250201;1;0;false;false;0;0;0;;;
                                  -250202;5;0;false;false;;;;;;
                                  -250207;15;0;false;false;0;0;0;;;
                                  -250222;1;0;false;false;;;;;;
                                  -250223;1;0;false;false;0;0;0;;;
                                  -250224;1;0;false;false;;;;;;
                                  -250225;11;0;false;false;0;0;0;;;
                                  -250236;1;0;false;false;;;;;;
                                  -250237;1;0;false;false;0;0;0;;;
                                  -250238;1;0;false;false;;;;;;
                                  -250239;4;0;false;false;0;0;0;;;
                                  -250243;5;0;false;false;;;;;;
                                  -250248;11;0;false;false;0;0;0;;;
                                  -250259;1;0;false;false;;;;;;
                                  -250260;1;0;false;false;0;0;0;;;
                                  -250261;1;0;false;false;;;;;;
                                  -250262;11;0;false;false;0;0;0;;;
                                  -250273;1;0;false;false;;;;;;
                                  -250274;1;0;false;false;0;0;0;;;
                                  -250275;1;0;false;false;;;;;;
                                  -250276;6;0;false;false;0;0;0;;;
                                  -250282;4;0;false;false;;;;;;
                                  -250286;1;0;false;false;0;0;0;;;
                                  -250287;4;0;false;false;;;;;;
                                  -250291;4;1;false;false;127;0;85;;;
                                  -250295;1;0;false;false;;;;;;
                                  -250296;1;0;false;false;0;0;0;;;
                                  -250297;5;0;false;false;;;;;;
                                  -250302;15;0;false;false;0;0;0;;;
                                  -250317;1;0;false;false;;;;;;
                                  -250318;1;0;false;false;0;0;0;;;
                                  -250319;1;0;false;false;;;;;;
                                  -250320;11;0;false;false;0;0;0;;;
                                  -250331;1;0;false;false;;;;;;
                                  -250332;1;0;false;false;0;0;0;;;
                                  -250333;1;0;false;false;;;;;;
                                  -250334;6;0;false;false;0;0;0;;;
                                  -250340;5;0;false;false;;;;;;
                                  -250345;11;0;false;false;0;0;0;;;
                                  -250356;1;0;false;false;;;;;;
                                  -250357;1;0;false;false;0;0;0;;;
                                  -250358;1;0;false;false;;;;;;
                                  -250359;11;0;false;false;0;0;0;;;
                                  -250370;1;0;false;false;;;;;;
                                  -250371;1;0;false;false;0;0;0;;;
                                  -250372;1;0;false;false;;;;;;
                                  -250373;4;0;false;false;0;0;0;;;
                                  -250377;4;0;false;false;;;;;;
                                  -250381;1;0;false;false;0;0;0;;;
                                  -250382;4;0;false;false;;;;;;
                                  -250386;32;0;false;false;0;0;0;;;
                                  -250418;1;0;false;false;;;;;;
                                  -250419;11;0;false;false;0;0;0;;;
                                  -250430;1;0;false;false;;;;;;
                                  -250431;1;0;false;false;0;0;0;;;
                                  -250432;1;0;false;false;;;;;;
                                  -250433;12;0;false;false;0;0;0;;;
                                  -250445;1;0;false;false;;;;;;
                                  -250446;4;1;false;false;127;0;85;;;
                                  -250450;2;0;false;false;0;0;0;;;
                                  -250452;3;0;false;false;;;;;;
                                  -250455;1;0;false;false;0;0;0;;;
                                  -250456;2;0;false;false;;;;;;
                                  -250458;1;0;false;false;0;0;0;;;
                                  -250459;2;0;false;false;;;;;;
                                  -250461;3;0;false;false;63;95;191;;;
                                  -250464;4;0;false;false;;;;;;
                                  -250468;1;0;false;false;63;95;191;;;
                                  -250469;1;0;false;false;;;;;;
                                  -250470;4;0;false;false;63;95;191;;;
                                  -250474;1;0;false;false;;;;;;
                                  -250475;3;0;false;false;63;95;191;;;
                                  -250478;1;0;false;false;;;;;;
                                  -250479;9;0;false;false;63;95;191;;;
                                  -250488;1;0;false;false;;;;;;
                                  -250489;6;0;false;false;63;95;191;;;
                                  -250495;1;0;false;false;;;;;;
                                  -250496;3;0;false;false;63;95;191;;;
                                  -250499;1;0;false;false;;;;;;
                                  -250500;3;0;false;false;63;95;191;;;
                                  -250503;1;0;false;false;;;;;;
                                  -250504;5;0;false;false;63;95;191;;;
                                  -250509;1;0;false;false;;;;;;
                                  -250510;10;0;false;false;63;95;191;;;
                                  -250520;1;0;false;false;;;;;;
                                  -250521;8;0;false;false;63;95;191;;;
                                  -250529;1;0;false;false;;;;;;
                                  -250530;6;0;false;false;63;95;191;;;
                                  -250536;1;0;false;false;;;;;;
                                  -250537;3;0;false;false;63;95;191;;;
                                  -250540;1;0;false;false;;;;;;
                                  -250541;3;0;false;false;63;95;191;;;
                                  -250544;3;0;false;false;;;;;;
                                  -250547;1;0;false;false;63;95;191;;;
                                  -250548;1;0;false;false;;;;;;
                                  -250549;9;0;false;false;63;95;191;;;
                                  -250558;1;0;false;false;;;;;;
                                  -250559;6;0;false;false;63;95;191;;;
                                  -250565;2;0;false;false;;;;;;
                                  -250567;8;0;false;false;63;95;191;;;
                                  -250575;1;0;false;false;;;;;;
                                  -250576;5;0;false;false;63;95;191;;;
                                  -250581;1;0;false;false;;;;;;
                                  -250582;6;0;false;false;63;95;191;;;
                                  -250588;1;0;false;false;;;;;;
                                  -250589;3;0;false;false;63;95;191;;;
                                  -250592;1;0;false;false;;;;;;
                                  -250593;8;0;false;false;63;95;191;;;
                                  -250601;1;0;false;false;;;;;;
                                  -250602;2;0;false;false;63;95;191;;;
                                  -250604;1;0;false;false;;;;;;
                                  -250605;4;0;false;false;63;95;191;;;
                                  -250609;1;0;false;false;;;;;;
                                  -250610;9;0;false;false;63;95;191;;;
                                  -250619;4;0;false;false;;;;;;
                                  -250623;1;0;false;false;63;95;191;;;
                                  -250624;1;0;false;false;;;;;;
                                  -250625;7;0;false;false;63;95;191;;;
                                  -250632;1;0;false;false;;;;;;
                                  -250633;4;0;false;false;63;95;191;;;
                                  -250637;1;0;false;false;;;;;;
                                  -250638;3;0;false;false;63;95;191;;;
                                  -250641;1;0;false;false;;;;;;
                                  -250642;3;0;false;false;63;95;191;;;
                                  -250645;1;0;false;false;;;;;;
                                  -250646;6;0;false;false;63;95;191;;;
                                  -250652;1;0;false;false;;;;;;
                                  -250653;2;0;false;false;63;95;191;;;
                                  -250655;1;0;false;false;;;;;;
                                  -250656;5;0;false;false;63;95;191;;;
                                  -250661;1;0;false;false;;;;;;
                                  -250662;2;0;false;false;63;95;191;;;
                                  -250664;1;0;false;false;;;;;;
                                  -250665;10;0;false;false;63;95;191;;;
                                  -250675;1;0;false;false;;;;;;
                                  -250676;6;0;false;false;63;95;191;;;
                                  -250682;1;0;false;false;;;;;;
                                  -250683;4;0;false;false;63;95;191;;;
                                  -250687;1;0;false;false;;;;;;
                                  -250688;13;0;false;false;63;95;191;;;
                                  -250701;4;0;false;false;;;;;;
                                  -250705;1;0;false;false;63;95;191;;;
                                  -250706;1;0;false;false;;;;;;
                                  -250707;4;0;false;false;63;95;191;;;
                                  -250711;1;0;false;false;;;;;;
                                  -250712;1;0;false;false;63;95;191;;;
                                  -250713;1;0;false;false;;;;;;
                                  -250714;10;0;false;false;63;95;191;;;
                                  -250724;1;0;false;false;;;;;;
                                  -250725;4;0;false;false;63;95;191;;;
                                  -250729;1;0;false;false;;;;;;
                                  -250730;3;0;false;false;63;95;191;;;
                                  -250733;1;0;false;false;;;;;;
                                  -250734;4;0;false;false;63;95;191;;;
                                  -250738;1;0;false;false;;;;;;
                                  -250739;11;0;false;false;63;95;191;;;
                                  -250750;4;0;false;false;;;;;;
                                  -250754;1;0;false;false;63;95;191;;;
                                  -250755;1;0;false;false;;;;;;
                                  -250756;3;0;false;false;127;127;159;;;
                                  -250759;3;0;false;false;;;;;;
                                  -250762;1;0;false;false;63;95;191;;;
                                  -250763;1;0;false;false;;;;;;
                                  -250764;6;0;false;false;63;95;191;;;
                                  -250770;1;0;false;false;;;;;;
                                  -250771;3;0;false;false;63;95;191;;;
                                  -250774;1;0;false;false;;;;;;
                                  -250775;2;0;false;false;63;95;191;;;
                                  -250777;1;0;false;false;;;;;;
                                  -250778;6;0;false;false;63;95;191;;;
                                  -250784;1;0;false;false;;;;;;
                                  -250785;2;0;false;false;63;95;191;;;
                                  -250787;1;0;false;false;;;;;;
                                  -250788;1;0;false;false;63;95;191;;;
                                  -250789;1;0;false;false;;;;;;
                                  -250790;17;0;false;false;63;95;191;;;
                                  -250807;1;0;false;false;;;;;;
                                  -250808;3;0;false;false;63;95;191;;;
                                  -250811;1;0;false;false;;;;;;
                                  -250812;4;0;false;false;63;95;191;;;
                                  -250816;1;0;false;false;;;;;;
                                  -250817;3;0;false;false;63;95;191;;;
                                  -250820;1;0;false;false;;;;;;
                                  -250821;5;0;false;false;63;95;191;;;
                                  -250826;1;0;false;false;;;;;;
                                  -250827;3;0;false;false;63;95;191;;;
                                  -250830;4;0;false;false;;;;;;
                                  -250834;1;0;false;false;63;95;191;;;
                                  -250835;1;0;false;false;;;;;;
                                  -250836;8;0;false;false;63;95;191;;;
                                  -250844;1;0;false;false;;;;;;
                                  -250845;9;0;false;false;63;95;191;;;
                                  -250854;1;0;false;false;;;;;;
                                  -250855;3;0;false;false;63;95;191;;;
                                  -250858;1;0;false;false;;;;;;
                                  -250859;7;0;false;false;63;95;191;;;
                                  -250866;3;0;false;false;;;;;;
                                  -250869;1;0;false;false;63;95;191;;;
                                  -250870;1;0;false;false;;;;;;
                                  -250871;4;0;false;false;127;127;159;;;
                                  -250875;3;0;false;false;;;;;;
                                  -250878;1;0;false;false;63;95;191;;;
                                  -250879;3;0;false;false;;;;;;
                                  -250882;1;0;false;false;63;95;191;;;
                                  -250883;1;0;false;false;;;;;;
                                  -250884;7;1;false;false;127;159;191;;;
                                  -250891;5;0;false;false;63;95;191;;;
                                  -250896;1;0;false;false;;;;;;
                                  -250897;10;0;false;false;63;95;191;;;
                                  -250907;1;0;false;false;;;;;;
                                  -250908;6;0;false;false;63;95;191;;;
                                  -250914;1;0;false;false;;;;;;
                                  -250915;10;0;false;false;63;95;191;;;
                                  -250925;1;0;false;false;;;;;;
                                  -250926;3;0;false;false;63;95;191;;;
                                  -250929;1;0;false;false;;;;;;
                                  -250930;5;0;false;false;63;95;191;;;
                                  -250935;1;0;false;false;;;;;;
                                  -250936;12;0;false;false;63;95;191;;;
                                  -250948;3;0;false;false;;;;;;
                                  -250951;1;0;false;false;63;95;191;;;
                                  -250952;1;0;false;false;;;;;;
                                  -250953;10;0;false;false;63;95;191;;;
                                  -250963;1;0;false;false;;;;;;
                                  -250964;3;0;false;false;63;95;191;;;
                                  -250967;1;0;false;false;;;;;;
                                  -250968;3;0;false;false;63;95;191;;;
                                  -250971;1;0;false;false;;;;;;
                                  -250972;5;0;false;false;63;95;191;;;
                                  -250977;1;0;false;false;;;;;;
                                  -250978;2;0;false;false;63;95;191;;;
                                  -250980;1;0;false;false;;;;;;
                                  -250981;3;0;false;false;63;95;191;;;
                                  -250984;1;0;false;false;;;;;;
                                  -250985;5;0;false;false;63;95;191;;;
                                  -250990;1;0;false;false;;;;;;
                                  -250991;6;0;false;false;63;95;191;;;
                                  -250997;1;0;false;false;;;;;;
                                  -250998;3;0;false;false;63;95;191;;;
                                  -251001;1;0;false;false;;;;;;
                                  -251002;2;0;false;false;63;95;191;;;
                                  -251004;1;0;false;false;;;;;;
                                  -251005;4;0;false;false;63;95;191;;;
                                  -251009;1;0;false;false;;;;;;
                                  -251010;2;0;false;false;63;95;191;;;
                                  -251012;1;0;false;false;;;;;;
                                  -251013;6;0;false;false;63;95;191;;;
                                  -251019;3;0;false;false;;;;;;
                                  -251022;1;0;false;false;63;95;191;;;
                                  -251023;1;0;false;false;;;;;;
                                  -251024;3;0;false;false;63;95;191;;;
                                  -251027;1;0;false;false;;;;;;
                                  -251028;7;0;false;false;63;95;191;;;
                                  -251035;3;0;false;false;;;;;;
                                  -251038;1;0;false;false;63;95;191;;;
                                  -251039;1;0;false;false;;;;;;
                                  -251040;11;1;false;false;127;159;191;;;
                                  -251051;12;0;false;false;63;95;191;;;
                                  -251063;1;0;false;false;;;;;;
                                  -251064;4;0;false;false;127;127;159;;;
                                  -251068;3;0;false;false;;;;;;
                                  -251071;1;0;false;false;63;95;191;;;
                                  -251072;4;0;false;false;;;;;;
                                  -251076;4;0;false;false;127;127;159;;;
                                  -251080;21;0;false;false;63;95;191;;;
                                  -251101;1;0;false;false;;;;;;
                                  -251102;1;0;false;false;127;127;159;;;
                                  -251103;1;0;false;false;;;;;;
                                  -251104;2;0;false;false;63;95;191;;;
                                  -251106;1;0;false;false;;;;;;
                                  -251107;3;0;false;false;63;95;191;;;
                                  -251110;1;0;false;false;;;;;;
                                  -251111;8;0;false;false;63;95;191;;;
                                  -251119;1;0;false;false;;;;;;
                                  -251120;3;0;false;false;63;95;191;;;
                                  -251123;1;0;false;false;;;;;;
                                  -251124;4;0;false;false;63;95;191;;;
                                  -251128;1;0;false;false;;;;;;
                                  -251129;8;0;false;false;63;95;191;;;
                                  -251137;5;0;false;false;127;127;159;;;
                                  -251142;3;0;false;false;;;;;;
                                  -251145;1;0;false;false;63;95;191;;;
                                  -251146;4;0;false;false;;;;;;
                                  -251150;4;0;false;false;127;127;159;;;
                                  -251154;27;0;false;false;63;95;191;;;
                                  -251181;1;0;false;false;;;;;;
                                  -251182;1;0;false;false;127;127;159;;;
                                  -251183;1;0;false;false;;;;;;
                                  -251184;2;0;false;false;63;95;191;;;
                                  -251186;1;0;false;false;;;;;;
                                  -251187;3;0;false;false;63;95;191;;;
                                  -251190;1;0;false;false;;;;;;
                                  -251191;6;0;false;false;63;95;191;;;
                                  -251197;1;0;false;false;;;;;;
                                  -251198;4;0;false;false;63;95;191;;;
                                  -251202;1;0;false;false;;;;;;
                                  -251203;3;0;false;false;63;95;191;;;
                                  -251206;1;0;false;false;;;;;;
                                  -251207;6;0;false;false;63;95;191;;;
                                  -251213;1;0;false;false;;;;;;
                                  -251214;4;0;false;false;63;95;191;;;
                                  -251218;1;0;false;false;;;;;;
                                  -251219;7;0;false;false;63;95;191;;;
                                  -251226;1;0;false;false;;;;;;
                                  -251227;3;0;false;false;63;95;191;;;
                                  -251230;1;0;false;false;;;;;;
                                  -251231;8;0;false;false;63;95;191;;;
                                  -251239;5;0;false;false;127;127;159;;;
                                  -251244;3;0;false;false;;;;;;
                                  -251247;1;0;false;false;63;95;191;;;
                                  -251248;1;0;false;false;;;;;;
                                  -251249;5;0;false;false;127;127;159;;;
                                  -251254;3;0;false;false;;;;;;
                                  -251257;1;0;false;false;63;95;191;;;
                                  -251258;1;0;false;false;;;;;;
                                  -251259;11;1;false;false;127;159;191;;;
                                  -251270;24;0;false;false;63;95;191;;;
                                  -251294;1;0;false;false;;;;;;
                                  -251295;4;0;false;false;127;127;159;;;
                                  -251299;3;0;false;false;;;;;;
                                  -251302;1;0;false;false;63;95;191;;;
                                  -251303;3;0;false;false;;;;;;
                                  -251306;4;0;false;false;127;127;159;;;
                                  -251310;19;0;false;false;63;95;191;;;
                                  -251329;1;0;false;false;;;;;;
                                  -251330;4;0;false;false;63;95;191;;;
                                  -251334;1;0;false;false;;;;;;
                                  -251335;3;0;false;false;63;95;191;;;
                                  -251338;1;0;false;false;;;;;;
                                  -251339;5;0;false;false;63;95;191;;;
                                  -251344;1;0;false;false;;;;;;
                                  -251345;5;0;false;false;63;95;191;;;
                                  -251350;1;0;false;false;;;;;;
                                  -251351;2;0;false;false;63;95;191;;;
                                  -251353;1;0;false;false;;;;;;
                                  -251354;7;0;false;false;63;95;191;;;
                                  -251361;1;0;false;false;;;;;;
                                  -251362;3;0;false;false;63;95;191;;;
                                  -251365;1;0;false;false;;;;;;
                                  -251366;5;0;false;false;63;95;191;;;
                                  -251371;1;0;false;false;;;;;;
                                  -251372;5;0;false;false;63;95;191;;;
                                  -251377;1;0;false;false;;;;;;
                                  -251378;2;0;false;false;63;95;191;;;
                                  -251380;1;0;false;false;;;;;;
                                  -251381;15;0;false;false;63;95;191;;;
                                  -251396;5;0;false;false;127;127;159;;;
                                  -251401;4;0;false;false;;;;;;
                                  -251405;1;0;false;false;63;95;191;;;
                                  -251406;1;0;false;false;;;;;;
                                  -251407;5;0;false;false;127;127;159;;;
                                  -251412;3;0;false;false;;;;;;
                                  -251415;2;0;false;false;63;95;191;;;
                                  -251417;2;0;false;false;;;;;;
                                  -251419;6;1;false;false;127;0;85;;;
                                  -251425;1;0;false;false;;;;;;
                                  -251426;4;1;false;false;127;0;85;;;
                                  -251430;1;0;false;false;;;;;;
                                  -251431;24;0;false;false;0;0;0;;;
                                  -251455;1;0;false;false;;;;;;
                                  -251456;6;0;false;false;0;0;0;;;
                                  -251462;1;0;false;false;;;;;;
                                  -251463;1;0;false;false;0;0;0;;;
                                  -251464;3;0;false;false;;;;;;
                                  -251467;14;0;false;false;0;0;0;;;
                                  -251481;6;0;false;false;;;;;;
                                  -251487;72;0;false;false;63;127;95;;;
                                  -251559;1;0;false;false;;;;;;
                                  -251560;2;1;false;false;127;0;85;;;
                                  -251562;1;0;false;false;;;;;;
                                  -251563;15;0;false;false;0;0;0;;;
                                  -251578;1;0;false;false;;;;;;
                                  -251579;1;0;false;false;0;0;0;;;
                                  -251580;4;0;false;false;;;;;;
                                  -251584;6;1;false;false;127;0;85;;;
                                  -251590;1;0;false;false;0;0;0;;;
                                  -251591;3;0;false;false;;;;;;
                                  -251594;1;0;false;false;0;0;0;;;
                                  -251595;4;0;false;false;;;;;;
                                  -251599;70;0;false;false;63;127;95;;;
                                  -251669;1;0;false;false;;;;;;
                                  -251670;2;1;false;false;127;0;85;;;
                                  -251672;1;0;false;false;;;;;;
                                  -251673;6;0;false;false;0;0;0;;;
                                  -251679;1;0;false;false;;;;;;
                                  -251680;2;0;false;false;0;0;0;;;
                                  -251682;1;0;false;false;;;;;;
                                  -251683;4;1;false;false;127;0;85;;;
                                  -251687;1;0;false;false;;;;;;
                                  -251688;2;0;false;false;0;0;0;;;
                                  -251690;1;0;false;false;;;;;;
                                  -251691;11;0;false;false;0;0;0;;;
                                  -251702;1;0;false;false;;;;;;
                                  -251703;1;0;false;false;0;0;0;;;
                                  -251704;1;0;false;false;;;;;;
                                  -251705;12;0;false;false;0;0;0;;;
                                  -251717;1;0;false;false;;;;;;
                                  -251718;1;0;false;false;0;0;0;;;
                                  -251719;1;0;false;false;;;;;;
                                  -251720;23;0;false;false;0;0;0;;;
                                  -251743;1;0;false;false;;;;;;
                                  -251744;1;0;false;false;0;0;0;;;
                                  -251745;4;0;false;false;;;;;;
                                  -251749;35;0;false;false;0;0;0;;;
                                  -251784;3;0;false;false;;;;;;
                                  -251787;1;0;false;false;0;0;0;;;
                                  -251788;5;0;false;false;;;;;;
                                  -251793;39;0;false;false;0;0;0;;;
                                  -251832;3;0;false;false;;;;;;
                                  -251835;2;1;false;false;127;0;85;;;
                                  -251837;1;0;false;false;;;;;;
                                  -251838;6;0;false;false;0;0;0;;;
                                  -251844;1;0;false;false;;;;;;
                                  -251845;2;0;false;false;0;0;0;;;
                                  -251847;1;0;false;false;;;;;;
                                  -251848;4;1;false;false;127;0;85;;;
                                  -251852;1;0;false;false;0;0;0;;;
                                  -251853;1;0;false;false;;;;;;
                                  -251854;1;0;false;false;0;0;0;;;
                                  -251855;4;0;false;false;;;;;;
                                  -251859;3;1;false;false;127;0;85;;;
                                  -251862;1;0;false;false;;;;;;
                                  -251863;9;0;false;false;0;0;0;;;
                                  -251872;1;0;false;false;;;;;;
                                  -251873;1;0;false;false;0;0;0;;;
                                  -251874;1;0;false;false;;;;;;
                                  -251875;37;0;false;false;0;0;0;;;
                                  -251912;4;0;false;false;;;;;;
                                  -251916;3;1;false;false;127;0;85;;;
                                  -251919;1;0;false;false;;;;;;
                                  -251920;8;0;false;false;0;0;0;;;
                                  -251928;1;0;false;false;;;;;;
                                  -251929;1;0;false;false;0;0;0;;;
                                  -251930;1;0;false;false;;;;;;
                                  -251931;35;0;false;false;0;0;0;;;
                                  -251966;1;0;false;false;;;;;;
                                  -251967;1;0;false;false;0;0;0;;;
                                  -251968;1;0;false;false;;;;;;
                                  -251969;14;0;false;false;0;0;0;;;
                                  -251983;4;0;false;false;;;;;;
                                  -251987;26;0;false;false;0;0;0;;;
                                  -252013;1;0;false;false;;;;;;
                                  -252014;8;0;false;false;0;0;0;;;
                                  -252022;1;0;false;false;;;;;;
                                  -252023;1;0;false;false;0;0;0;;;
                                  -252024;1;0;false;false;;;;;;
                                  -252025;9;0;false;false;0;0;0;;;
                                  -252034;1;0;false;false;;;;;;
                                  -252035;1;0;false;false;0;0;0;;;
                                  -252036;1;0;false;false;;;;;;
                                  -252037;2;0;false;false;0;0;0;;;
                                  -252039;1;0;false;false;;;;;;
                                  -252040;4;1;false;false;127;0;85;;;
                                  -252044;2;0;false;false;0;0;0;;;
                                  -252046;6;0;false;false;;;;;;
                                  -252052;60;0;false;false;63;127;95;;;
                                  -252112;2;0;false;false;;;;;;
                                  -252114;2;1;false;false;127;0;85;;;
                                  -252116;1;0;false;false;;;;;;
                                  -252117;25;0;false;false;0;0;0;;;
                                  -252142;1;0;false;false;;;;;;
                                  -252143;10;0;false;false;0;0;0;;;
                                  -252153;1;0;false;false;;;;;;
                                  -252154;1;0;false;false;0;0;0;;;
                                  -252155;5;0;false;false;;;;;;
                                  -252160;3;1;false;false;127;0;85;;;
                                  -252163;1;0;false;false;;;;;;
                                  -252164;7;0;false;false;0;0;0;;;
                                  -252171;1;0;false;false;;;;;;
                                  -252172;1;0;false;false;0;0;0;;;
                                  -252173;1;0;false;false;;;;;;
                                  -252174;9;0;false;false;0;0;0;;;
                                  -252183;1;0;false;false;;;;;;
                                  -252184;1;0;false;false;0;0;0;;;
                                  -252185;1;0;false;false;;;;;;
                                  -252186;10;0;false;false;0;0;0;;;
                                  -252196;1;0;false;false;;;;;;
                                  -252197;1;0;false;false;0;0;0;;;
                                  -252198;1;0;false;false;;;;;;
                                  -252199;21;0;false;false;0;0;0;;;
                                  -252220;5;0;false;false;;;;;;
                                  -252225;3;1;false;false;127;0;85;;;
                                  -252228;1;0;false;false;;;;;;
                                  -252229;11;0;false;false;0;0;0;;;
                                  -252240;1;0;false;false;;;;;;
                                  -252241;1;0;false;false;0;0;0;;;
                                  -252242;1;0;false;false;;;;;;
                                  -252243;9;0;false;false;0;0;0;;;
                                  -252252;1;0;false;false;;;;;;
                                  -252253;1;0;false;false;0;0;0;;;
                                  -252254;1;0;false;false;;;;;;
                                  -252255;2;0;false;false;0;0;0;;;
                                  -252257;1;0;false;false;;;;;;
                                  -252258;1;0;false;false;0;0;0;;;
                                  -252259;1;0;false;false;;;;;;
                                  -252260;10;0;false;false;0;0;0;;;
                                  -252270;1;0;false;false;;;;;;
                                  -252271;1;0;false;false;0;0;0;;;
                                  -252272;1;0;false;false;;;;;;
                                  -252273;21;0;false;false;0;0;0;;;
                                  -252294;7;0;false;false;;;;;;
                                  -252301;7;0;false;false;0;0;0;;;
                                  -252308;1;0;false;false;;;;;;
                                  -252309;8;0;false;false;0;0;0;;;
                                  -252317;1;0;false;false;;;;;;
                                  -252318;22;0;false;false;0;0;0;;;
                                  -252340;1;0;false;false;;;;;;
                                  -252341;11;0;false;false;0;0;0;;;
                                  -252352;1;0;false;false;;;;;;
                                  -252353;1;0;false;false;0;0;0;;;
                                  -252354;1;0;false;false;;;;;;
                                  -252355;8;0;false;false;0;0;0;;;
                                  -252363;1;0;false;false;;;;;;
                                  -252364;4;1;false;false;127;0;85;;;
                                  -252368;2;0;false;false;0;0;0;;;
                                  -252370;4;0;false;false;;;;;;
                                  -252374;1;0;false;false;0;0;0;;;
                                  -252375;3;0;false;false;;;;;;
                                  -252378;1;0;false;false;0;0;0;;;
                                  -252379;1;0;false;false;;;;;;
                                  -252380;4;1;false;false;127;0;85;;;
                                  -252384;1;0;false;false;;;;;;
                                  -252385;1;0;false;false;0;0;0;;;
                                  -252386;4;0;false;false;;;;;;
                                  -252390;24;0;false;false;63;127;95;;;
                                  -252414;2;0;false;false;;;;;;
                                  -252416;18;0;false;false;0;0;0;;;
                                  -252434;1;0;false;false;;;;;;
                                  -252435;23;0;false;false;0;0;0;;;
                                  -252458;1;0;false;false;;;;;;
                                  -252459;5;1;false;false;127;0;85;;;
                                  -252464;2;0;false;false;0;0;0;;;
                                  -252466;4;0;false;false;;;;;;
                                  -252470;9;0;false;false;0;0;0;;;
                                  -252479;3;0;false;false;;;;;;
                                  -252482;1;0;false;false;0;0;0;;;
                                  -252483;6;0;false;false;;;;;;
                                  -252489;54;0;false;false;63;127;95;;;
                                  -252543;1;0;false;false;;;;;;
                                  -252544;53;0;false;false;63;127;95;;;
                                  -252597;1;0;false;false;;;;;;
                                  -252598;18;0;false;false;63;127;95;;;
                                  -252616;1;0;false;false;;;;;;
                                  -252617;19;0;false;false;0;0;0;;;
                                  -252636;2;0;false;false;;;;;;
                                  -252638;1;0;false;false;0;0;0;;;
                                  -252639;2;0;false;false;;;;;;
                                  -252641;3;0;false;false;63;95;191;;;
                                  -252644;4;0;false;false;;;;;;
                                  -252648;1;0;false;false;63;95;191;;;
                                  -252649;1;0;false;false;;;;;;
                                  -252650;4;0;false;false;63;95;191;;;
                                  -252654;1;0;false;false;;;;;;
                                  -252655;6;0;false;false;63;95;191;;;
                                  -252661;1;0;false;false;;;;;;
                                  -252662;2;0;false;false;63;95;191;;;
                                  -252664;1;0;false;false;;;;;;
                                  -252665;2;0;false;false;63;95;191;;;
                                  -252667;1;0;false;false;;;;;;
                                  -252668;4;0;false;false;63;95;191;;;
                                  -252672;1;0;false;false;;;;;;
                                  -252673;3;0;false;false;63;95;191;;;
                                  -252676;1;0;false;false;;;;;;
                                  -252677;9;0;false;false;63;95;191;;;
                                  -252686;1;0;false;false;;;;;;
                                  -252687;3;0;false;false;63;95;191;;;
                                  -252690;1;0;false;false;;;;;;
                                  -252691;6;0;false;false;63;95;191;;;
                                  -252697;1;0;false;false;;;;;;
                                  -252698;8;0;false;false;63;95;191;;;
                                  -252706;1;0;false;false;;;;;;
                                  -252707;3;0;false;false;63;95;191;;;
                                  -252710;1;0;false;false;;;;;;
                                  -252711;6;0;false;false;63;95;191;;;
                                  -252717;4;0;false;false;;;;;;
                                  -252721;1;0;false;false;63;95;191;;;
                                  -252722;1;0;false;false;;;;;;
                                  -252723;2;0;false;false;63;95;191;;;
                                  -252725;1;0;false;false;;;;;;
                                  -252726;3;0;false;false;63;95;191;;;
                                  -252729;1;0;false;false;;;;;;
                                  -252730;6;0;false;false;63;95;191;;;
                                  -252736;1;0;false;false;;;;;;
                                  -252737;4;0;false;false;63;95;191;;;
                                  -252741;1;0;false;false;;;;;;
                                  -252742;2;0;false;false;63;95;191;;;
                                  -252744;1;0;false;false;;;;;;
                                  -252745;8;0;false;false;63;95;191;;;
                                  -252753;1;0;false;false;;;;;;
                                  -252754;4;0;false;false;63;95;191;;;
                                  -252758;1;0;false;false;;;;;;
                                  -252759;3;0;false;false;63;95;191;;;
                                  -252762;1;0;false;false;;;;;;
                                  -252763;5;0;false;false;63;95;191;;;
                                  -252768;1;0;false;false;;;;;;
                                  -252769;3;0;false;false;63;95;191;;;
                                  -252772;1;0;false;false;;;;;;
                                  -252773;2;0;false;false;63;95;191;;;
                                  -252775;1;0;false;false;;;;;;
                                  -252776;7;0;false;false;63;95;191;;;
                                  -252783;3;0;false;false;;;;;;
                                  -252786;1;0;false;false;63;95;191;;;
                                  -252787;1;0;false;false;;;;;;
                                  -252788;3;0;false;false;127;127;159;;;
                                  -252791;3;0;false;false;;;;;;
                                  -252794;1;0;false;false;63;95;191;;;
                                  -252795;1;0;false;false;;;;;;
                                  -252796;6;0;false;false;63;95;191;;;
                                  -252802;1;0;false;false;;;;;;
                                  -252803;3;0;false;false;63;95;191;;;
                                  -252806;1;0;false;false;;;;;;
                                  -252807;2;0;false;false;63;95;191;;;
                                  -252809;1;0;false;false;;;;;;
                                  -252810;6;0;false;false;63;95;191;;;
                                  -252816;1;0;false;false;;;;;;
                                  -252817;2;0;false;false;63;95;191;;;
                                  -252819;1;0;false;false;;;;;;
                                  -252820;1;0;false;false;63;95;191;;;
                                  -252821;1;0;false;false;;;;;;
                                  -252822;17;0;false;false;63;95;191;;;
                                  -252839;1;0;false;false;;;;;;
                                  -252840;3;0;false;false;63;95;191;;;
                                  -252843;1;0;false;false;;;;;;
                                  -252844;4;0;false;false;63;95;191;;;
                                  -252848;1;0;false;false;;;;;;
                                  -252849;3;0;false;false;63;95;191;;;
                                  -252852;1;0;false;false;;;;;;
                                  -252853;5;0;false;false;63;95;191;;;
                                  -252858;1;0;false;false;;;;;;
                                  -252859;3;0;false;false;63;95;191;;;
                                  -252862;4;0;false;false;;;;;;
                                  -252866;1;0;false;false;63;95;191;;;
                                  -252867;1;0;false;false;;;;;;
                                  -252868;8;0;false;false;63;95;191;;;
                                  -252876;1;0;false;false;;;;;;
                                  -252877;9;0;false;false;63;95;191;;;
                                  -252886;1;0;false;false;;;;;;
                                  -252887;3;0;false;false;63;95;191;;;
                                  -252890;1;0;false;false;;;;;;
                                  -252891;7;0;false;false;63;95;191;;;
                                  -252898;3;0;false;false;;;;;;
                                  -252901;1;0;false;false;63;95;191;;;
                                  -252902;1;0;false;false;;;;;;
                                  -252903;4;0;false;false;127;127;159;;;
                                  -252907;3;0;false;false;;;;;;
                                  -252910;1;0;false;false;63;95;191;;;
                                  -252911;3;0;false;false;;;;;;
                                  -252914;1;0;false;false;63;95;191;;;
                                  -252915;1;0;false;false;;;;;;
                                  -252916;7;1;false;false;127;159;191;;;
                                  -252923;6;0;false;false;63;95;191;;;
                                  -252929;1;0;false;false;;;;;;
                                  -252930;10;0;false;false;63;95;191;;;
                                  -252940;1;0;false;false;;;;;;
                                  -252941;7;0;false;false;63;95;191;;;
                                  -252948;1;0;false;false;;;;;;
                                  -252949;10;0;false;false;63;95;191;;;
                                  -252959;1;0;false;false;;;;;;
                                  -252960;3;0;false;false;63;95;191;;;
                                  -252963;1;0;false;false;;;;;;
                                  -252964;5;0;false;false;63;95;191;;;
                                  -252969;1;0;false;false;;;;;;
                                  -252970;12;0;false;false;63;95;191;;;
                                  -252982;3;0;false;false;;;;;;
                                  -252985;1;0;false;false;63;95;191;;;
                                  -252986;1;0;false;false;;;;;;
                                  -252987;3;0;false;false;63;95;191;;;
                                  -252990;1;0;false;false;;;;;;
                                  -252991;6;0;false;false;63;95;191;;;
                                  -252997;1;0;false;false;;;;;;
                                  -252998;6;0;false;false;63;95;191;;;
                                  -253004;1;0;false;false;;;;;;
                                  -253005;3;0;false;false;63;95;191;;;
                                  -253008;1;0;false;false;;;;;;
                                  -253009;8;0;false;false;63;95;191;;;
                                  -253017;1;0;false;false;;;;;;
                                  -253018;3;0;false;false;63;95;191;;;
                                  -253021;1;0;false;false;;;;;;
                                  -253022;5;0;false;false;63;95;191;;;
                                  -253027;1;0;false;false;;;;;;
                                  -253028;9;0;false;false;63;95;191;;;
                                  -253037;1;0;false;false;;;;;;
                                  -253038;2;0;false;false;63;95;191;;;
                                  -253040;1;0;false;false;;;;;;
                                  -253041;9;0;false;false;63;95;191;;;
                                  -253050;1;0;false;false;;;;;;
                                  -253051;2;0;false;false;63;95;191;;;
                                  -253053;4;0;false;false;;;;;;
                                  -253057;1;0;false;false;63;95;191;;;
                                  -253058;1;0;false;false;;;;;;
                                  -253059;3;0;false;false;63;95;191;;;
                                  -253062;1;0;false;false;;;;;;
                                  -253063;6;0;false;false;63;95;191;;;
                                  -253069;1;0;false;false;;;;;;
                                  -253070;2;0;false;false;63;95;191;;;
                                  -253072;1;0;false;false;;;;;;
                                  -253073;8;0;false;false;63;95;191;;;
                                  -253081;1;0;false;false;;;;;;
                                  -253082;4;0;false;false;63;95;191;;;
                                  -253086;1;0;false;false;;;;;;
                                  -253087;3;0;false;false;63;95;191;;;
                                  -253090;1;0;false;false;;;;;;
                                  -253091;2;0;false;false;63;95;191;;;
                                  -253093;1;0;false;false;;;;;;
                                  -253094;5;0;false;false;63;95;191;;;
                                  -253099;1;0;false;false;;;;;;
                                  -253100;3;0;false;false;63;95;191;;;
                                  -253103;1;0;false;false;;;;;;
                                  -253104;6;0;false;false;63;95;191;;;
                                  -253110;1;0;false;false;;;;;;
                                  -253111;4;0;false;false;63;95;191;;;
                                  -253115;1;0;false;false;;;;;;
                                  -253116;2;0;false;false;63;95;191;;;
                                  -253118;1;0;false;false;;;;;;
                                  -253119;2;0;false;false;63;95;191;;;
                                  -253121;1;0;false;false;;;;;;
                                  -253122;2;0;false;false;63;95;191;;;
                                  -253124;1;0;false;false;;;;;;
                                  -253125;6;0;false;false;63;95;191;;;
                                  -253131;3;0;false;false;;;;;;
                                  -253134;1;0;false;false;63;95;191;;;
                                  -253135;1;0;false;false;;;;;;
                                  -253136;11;1;false;false;127;159;191;;;
                                  -253147;12;0;false;false;63;95;191;;;
                                  -253159;1;0;false;false;;;;;;
                                  -253160;4;0;false;false;127;127;159;;;
                                  -253164;3;0;false;false;;;;;;
                                  -253167;1;0;false;false;63;95;191;;;
                                  -253168;4;0;false;false;;;;;;
                                  -253172;4;0;false;false;127;127;159;;;
                                  -253176;21;0;false;false;63;95;191;;;
                                  -253197;1;0;false;false;;;;;;
                                  -253198;1;0;false;false;127;127;159;;;
                                  -253199;1;0;false;false;;;;;;
                                  -253200;2;0;false;false;63;95;191;;;
                                  -253202;1;0;false;false;;;;;;
                                  -253203;3;0;false;false;63;95;191;;;
                                  -253206;1;0;false;false;;;;;;
                                  -253207;8;0;false;false;63;95;191;;;
                                  -253215;1;0;false;false;;;;;;
                                  -253216;3;0;false;false;63;95;191;;;
                                  -253219;1;0;false;false;;;;;;
                                  -253220;4;0;false;false;63;95;191;;;
                                  -253224;1;0;false;false;;;;;;
                                  -253225;8;0;false;false;63;95;191;;;
                                  -253233;5;0;false;false;127;127;159;;;
                                  -253238;3;0;false;false;;;;;;
                                  -253241;1;0;false;false;63;95;191;;;
                                  -253242;4;0;false;false;;;;;;
                                  -253246;4;0;false;false;127;127;159;;;
                                  -253250;27;0;false;false;63;95;191;;;
                                  -253277;1;0;false;false;;;;;;
                                  -253278;1;0;false;false;127;127;159;;;
                                  -253279;1;0;false;false;;;;;;
                                  -253280;2;0;false;false;63;95;191;;;
                                  -253282;1;0;false;false;;;;;;
                                  -253283;3;0;false;false;63;95;191;;;
                                  -253286;1;0;false;false;;;;;;
                                  -253287;6;0;false;false;63;95;191;;;
                                  -253293;1;0;false;false;;;;;;
                                  -253294;4;0;false;false;63;95;191;;;
                                  -253298;1;0;false;false;;;;;;
                                  -253299;3;0;false;false;63;95;191;;;
                                  -253302;1;0;false;false;;;;;;
                                  -253303;6;0;false;false;63;95;191;;;
                                  -253309;1;0;false;false;;;;;;
                                  -253310;4;0;false;false;63;95;191;;;
                                  -253314;1;0;false;false;;;;;;
                                  -253315;7;0;false;false;63;95;191;;;
                                  -253322;1;0;false;false;;;;;;
                                  -253323;3;0;false;false;63;95;191;;;
                                  -253326;1;0;false;false;;;;;;
                                  -253327;8;0;false;false;63;95;191;;;
                                  -253335;5;0;false;false;127;127;159;;;
                                  -253340;3;0;false;false;;;;;;
                                  -253343;1;0;false;false;63;95;191;;;
                                  -253344;1;0;false;false;;;;;;
                                  -253345;5;0;false;false;127;127;159;;;
                                  -253350;3;0;false;false;;;;;;
                                  -253353;1;0;false;false;63;95;191;;;
                                  -253354;1;0;false;false;;;;;;
                                  -253355;11;1;false;false;127;159;191;;;
                                  -253366;24;0;false;false;63;95;191;;;
                                  -253390;1;0;false;false;;;;;;
                                  -253391;4;0;false;false;127;127;159;;;
                                  -253395;3;0;false;false;;;;;;
                                  -253398;1;0;false;false;63;95;191;;;
                                  -253399;4;0;false;false;;;;;;
                                  -253403;4;0;false;false;127;127;159;;;
                                  -253407;19;0;false;false;63;95;191;;;
                                  -253426;1;0;false;false;;;;;;
                                  -253427;4;0;false;false;63;95;191;;;
                                  -253431;1;0;false;false;;;;;;
                                  -253432;8;0;false;false;63;95;191;;;
                                  -253440;1;0;false;false;;;;;;
                                  -253441;2;0;false;false;63;95;191;;;
                                  -253443;1;0;false;false;;;;;;
                                  -253444;4;0;false;false;63;95;191;;;
                                  -253448;5;0;false;false;127;127;159;;;
                                  -253453;3;0;false;false;;;;;;
                                  -253456;1;0;false;false;63;95;191;;;
                                  -253457;4;0;false;false;;;;;;
                                  -253461;4;0;false;false;127;127;159;;;
                                  -253465;19;0;false;false;63;95;191;;;
                                  -253484;1;0;false;false;;;;;;
                                  -253485;4;0;false;false;63;95;191;;;
                                  -253489;1;0;false;false;;;;;;
                                  -253490;3;0;false;false;63;95;191;;;
                                  -253493;1;0;false;false;;;;;;
                                  -253494;4;0;false;false;63;95;191;;;
                                  -253498;1;0;false;false;;;;;;
                                  -253499;2;0;false;false;63;95;191;;;
                                  -253501;1;0;false;false;;;;;;
                                  -253502;3;0;false;false;63;95;191;;;
                                  -253505;1;0;false;false;;;;;;
                                  -253506;5;0;false;false;63;95;191;;;
                                  -253511;1;0;false;false;;;;;;
                                  -253512;6;0;false;false;63;95;191;;;
                                  -253518;1;0;false;false;;;;;;
                                  -253519;2;0;false;false;63;95;191;;;
                                  -253521;1;0;false;false;;;;;;
                                  -253522;7;0;false;false;63;95;191;;;
                                  -253529;1;0;false;false;;;;;;
                                  -253530;3;0;false;false;63;95;191;;;
                                  -253533;1;0;false;false;;;;;;
                                  -253534;5;0;false;false;63;95;191;;;
                                  -253539;1;0;false;false;;;;;;
                                  -253540;5;0;false;false;63;95;191;;;
                                  -253545;1;0;false;false;;;;;;
                                  -253546;2;0;false;false;63;95;191;;;
                                  -253548;1;0;false;false;;;;;;
                                  -253549;15;0;false;false;63;95;191;;;
                                  -253564;5;0;false;false;127;127;159;;;
                                  -253569;4;0;false;false;;;;;;
                                  -253573;1;0;false;false;63;95;191;;;
                                  -253574;1;0;false;false;;;;;;
                                  -253575;5;0;false;false;127;127;159;;;
                                  -253580;3;0;false;false;;;;;;
                                  -253583;2;0;false;false;63;95;191;;;
                                  -253585;2;0;false;false;;;;;;
                                  -253587;6;1;false;false;127;0;85;;;
                                  -253593;1;0;false;false;;;;;;
                                  -253594;4;1;false;false;127;0;85;;;
                                  -253598;1;0;false;false;;;;;;
                                  -253599;27;0;false;false;0;0;0;;;
                                  -253626;1;0;false;false;;;;;;
                                  -253627;7;0;false;false;0;0;0;;;
                                  -253634;1;0;false;false;;;;;;
                                  -253635;1;0;false;false;0;0;0;;;
                                  -253636;3;0;false;false;;;;;;
                                  -253639;14;0;false;false;0;0;0;;;
                                  -253653;3;0;false;false;;;;;;
                                  -253656;72;0;false;false;63;127;95;;;
                                  -253728;1;0;false;false;;;;;;
                                  -253729;2;1;false;false;127;0;85;;;
                                  -253731;1;0;false;false;;;;;;
                                  -253732;15;0;false;false;0;0;0;;;
                                  -253747;1;0;false;false;;;;;;
                                  -253748;1;0;false;false;0;0;0;;;
                                  -253749;4;0;false;false;;;;;;
                                  -253753;6;1;false;false;127;0;85;;;
                                  -253759;1;0;false;false;0;0;0;;;
                                  -253760;3;0;false;false;;;;;;
                                  -253763;1;0;false;false;0;0;0;;;
                                  -253764;4;0;false;false;;;;;;
                                  -253768;2;1;false;false;127;0;85;;;
                                  -253770;1;0;false;false;;;;;;
                                  -253771;7;0;false;false;0;0;0;;;
                                  -253778;1;0;false;false;;;;;;
                                  -253779;2;0;false;false;0;0;0;;;
                                  -253781;1;0;false;false;;;;;;
                                  -253782;4;1;false;false;127;0;85;;;
                                  -253786;1;0;false;false;0;0;0;;;
                                  -253787;1;0;false;false;;;;;;
                                  -253788;1;0;false;false;0;0;0;;;
                                  -253789;5;0;false;false;;;;;;
                                  -253794;35;0;false;false;0;0;0;;;
                                  -253829;4;0;false;false;;;;;;
                                  -253833;1;0;false;false;0;0;0;;;
                                  -253834;4;0;false;false;;;;;;
                                  -253838;69;0;false;false;63;127;95;;;
                                  -253907;2;0;false;false;;;;;;
                                  -253909;18;0;false;false;63;127;95;;;
                                  -253927;2;0;false;false;;;;;;
                                  -253929;2;1;false;false;127;0;85;;;
                                  -253931;1;0;false;false;;;;;;
                                  -253932;14;0;false;false;0;0;0;;;
                                  -253946;1;0;false;false;;;;;;
                                  -253947;2;0;false;false;0;0;0;;;
                                  -253949;1;0;false;false;;;;;;
                                  -253950;2;0;false;false;0;0;0;;;
                                  -253952;1;0;false;false;;;;;;
                                  -253953;1;0;false;false;0;0;0;;;
                                  -253954;5;0;false;false;;;;;;
                                  -253959;10;0;false;false;0;0;0;;;
                                  -253969;1;0;false;false;;;;;;
                                  -253970;4;0;false;false;0;0;0;;;
                                  -253974;1;0;false;false;;;;;;
                                  -253975;1;0;false;false;0;0;0;;;
                                  -253976;1;0;false;false;;;;;;
                                  -253977;24;0;false;false;0;0;0;;;
                                  -254001;5;0;false;false;;;;;;
                                  -254006;3;1;false;false;127;0;85;;;
                                  -254009;1;0;false;false;;;;;;
                                  -254010;7;0;false;false;0;0;0;;;
                                  -254017;1;0;false;false;;;;;;
                                  -254018;1;0;false;false;0;0;0;;;
                                  -254019;1;0;false;false;;;;;;
                                  -254020;10;0;false;false;0;0;0;;;
                                  -254030;1;0;false;false;;;;;;
                                  -254031;1;0;false;false;0;0;0;;;
                                  -254032;1;0;false;false;;;;;;
                                  -254033;12;0;false;false;0;0;0;;;
                                  -254045;4;0;false;false;;;;;;
                                  -254049;3;1;false;false;127;0;85;;;
                                  -254052;1;0;false;false;;;;;;
                                  -254053;9;0;false;false;0;0;0;;;
                                  -254062;1;0;false;false;;;;;;
                                  -254063;1;0;false;false;0;0;0;;;
                                  -254064;1;0;false;false;;;;;;
                                  -254065;41;0;false;false;0;0;0;;;
                                  -254106;4;0;false;false;;;;;;
                                  -254110;3;1;false;false;127;0;85;;;
                                  -254113;1;0;false;false;;;;;;
                                  -254114;9;0;false;false;0;0;0;;;
                                  -254123;4;0;false;false;;;;;;
                                  -254127;2;1;false;false;127;0;85;;;
                                  -254129;1;0;false;false;;;;;;
                                  -254130;8;0;false;false;0;0;0;;;
                                  -254138;1;0;false;false;;;;;;
                                  -254139;1;0;false;false;0;0;0;;;
                                  -254140;1;0;false;false;;;;;;
                                  -254141;23;0;false;false;0;0;0;;;
                                  -254164;1;0;false;false;;;;;;
                                  -254165;1;0;false;false;0;0;0;;;
                                  -254166;5;0;false;false;;;;;;
                                  -254171;35;0;false;false;0;0;0;;;
                                  -254206;4;0;false;false;;;;;;
                                  -254210;1;0;false;false;0;0;0;;;
                                  -254211;6;0;false;false;;;;;;
                                  -254217;8;0;false;false;0;0;0;;;
                                  -254225;1;0;false;false;;;;;;
                                  -254226;1;0;false;false;0;0;0;;;
                                  -254227;1;0;false;false;;;;;;
                                  -254228;33;0;false;false;0;0;0;;;
                                  -254261;4;0;false;false;;;;;;
                                  -254265;49;0;false;false;63;127;95;;;
                                  -254314;2;0;false;false;;;;;;
                                  -254316;26;0;false;false;0;0;0;;;
                                  -254342;1;0;false;false;;;;;;
                                  -254343;8;0;false;false;0;0;0;;;
                                  -254351;1;0;false;false;;;;;;
                                  -254352;1;0;false;false;0;0;0;;;
                                  -254353;1;0;false;false;;;;;;
                                  -254354;9;0;false;false;0;0;0;;;
                                  -254363;1;0;false;false;;;;;;
                                  -254364;1;0;false;false;0;0;0;;;
                                  -254365;1;0;false;false;;;;;;
                                  -254366;2;0;false;false;0;0;0;;;
                                  -254368;1;0;false;false;;;;;;
                                  -254369;4;1;false;false;127;0;85;;;
                                  -254373;2;0;false;false;0;0;0;;;
                                  -254375;4;0;false;false;;;;;;
                                  -254379;1;0;false;false;0;0;0;;;
                                  -254380;4;0;false;false;;;;;;
                                  -254384;4;1;false;false;127;0;85;;;
                                  -254388;1;0;false;false;;;;;;
                                  -254389;1;0;false;false;0;0;0;;;
                                  -254390;4;0;false;false;;;;;;
                                  -254394;20;0;false;false;63;127;95;;;
                                  -254414;2;0;false;false;;;;;;
                                  -254416;18;0;false;false;0;0;0;;;
                                  -254434;1;0;false;false;;;;;;
                                  -254435;23;0;false;false;0;0;0;;;
                                  -254458;1;0;false;false;;;;;;
                                  -254459;5;1;false;false;127;0;85;;;
                                  -254464;2;0;false;false;0;0;0;;;
                                  -254466;4;0;false;false;;;;;;
                                  -254470;1;0;false;false;0;0;0;;;
                                  -254471;3;0;false;false;;;;;;
                                  -254474;41;0;false;false;0;0;0;;;
                                  -254515;3;0;false;false;;;;;;
                                  -254518;9;0;false;false;0;0;0;;;
                                  -254527;1;0;false;false;;;;;;
                                  -254528;55;0;false;false;63;127;95;;;
                                  -254583;1;0;false;false;;;;;;
                                  -254584;54;0;false;false;63;127;95;;;
                                  -254638;1;0;false;false;;;;;;
                                  -254639;53;0;false;false;63;127;95;;;
                                  -254692;1;0;false;false;;;;;;
                                  -254693;18;0;false;false;63;127;95;;;
                                  -254711;1;0;false;false;;;;;;
                                  -254712;19;0;false;false;0;0;0;;;
                                  -254731;2;0;false;false;;;;;;
                                  -254733;1;0;false;false;0;0;0;;;
                                  -254734;2;0;false;false;;;;;;
                                  -254736;3;0;false;false;63;95;191;;;
                                  -254739;4;0;false;false;;;;;;
                                  -254743;1;0;false;false;63;95;191;;;
                                  -254744;1;0;false;false;;;;;;
                                  -254745;4;0;false;false;63;95;191;;;
                                  -254749;1;0;false;false;;;;;;
                                  -254750;3;0;false;false;63;95;191;;;
                                  -254753;1;0;false;false;;;;;;
                                  -254754;3;0;false;false;63;95;191;;;
                                  -254757;1;0;false;false;;;;;;
                                  -254758;6;0;false;false;63;95;191;;;
                                  -254764;4;0;false;false;;;;;;
                                  -254768;1;0;false;false;63;95;191;;;
                                  -254769;1;0;false;false;;;;;;
                                  -254770;3;0;false;false;127;127;159;;;
                                  -254773;3;0;false;false;;;;;;
                                  -254776;1;0;false;false;63;95;191;;;
                                  -254777;3;0;false;false;;;;;;
                                  -254780;1;0;false;false;63;95;191;;;
                                  -254781;1;0;false;false;;;;;;
                                  -254782;7;1;false;false;127;159;191;;;
                                  -254789;4;0;false;false;63;95;191;;;
                                  -254793;1;0;false;false;;;;;;
                                  -254794;3;0;false;false;63;95;191;;;
                                  -254797;1;0;false;false;;;;;;
                                  -254798;5;0;false;false;63;95;191;;;
                                  -254803;1;0;false;false;;;;;;
                                  -254804;8;0;false;false;63;95;191;;;
                                  -254812;1;0;false;false;;;;;;
                                  -254813;2;0;false;false;63;95;191;;;
                                  -254815;1;0;false;false;;;;;;
                                  -254816;11;0;false;false;63;95;191;;;
                                  -254827;3;0;false;false;;;;;;
                                  -254830;1;0;false;false;63;95;191;;;
                                  -254831;1;0;false;false;;;;;;
                                  -254832;11;1;false;false;127;159;191;;;
                                  -254843;12;0;false;false;63;95;191;;;
                                  -254855;1;0;false;false;;;;;;
                                  -254856;4;0;false;false;127;127;159;;;
                                  -254860;3;0;false;false;;;;;;
                                  -254863;1;0;false;false;63;95;191;;;
                                  -254864;4;0;false;false;;;;;;
                                  -254868;4;0;false;false;127;127;159;;;
                                  -254872;21;0;false;false;63;95;191;;;
                                  -254893;1;0;false;false;;;;;;
                                  -254894;1;0;false;false;127;127;159;;;
                                  -254895;1;0;false;false;;;;;;
                                  -254896;2;0;false;false;63;95;191;;;
                                  -254898;1;0;false;false;;;;;;
                                  -254899;3;0;false;false;63;95;191;;;
                                  -254902;1;0;false;false;;;;;;
                                  -254903;8;0;false;false;63;95;191;;;
                                  -254911;1;0;false;false;;;;;;
                                  -254912;3;0;false;false;63;95;191;;;
                                  -254915;1;0;false;false;;;;;;
                                  -254916;4;0;false;false;63;95;191;;;
                                  -254920;1;0;false;false;;;;;;
                                  -254921;8;0;false;false;63;95;191;;;
                                  -254929;5;0;false;false;127;127;159;;;
                                  -254934;3;0;false;false;;;;;;
                                  -254937;1;0;false;false;63;95;191;;;
                                  -254938;4;0;false;false;;;;;;
                                  -254942;4;0;false;false;127;127;159;;;
                                  -254946;27;0;false;false;63;95;191;;;
                                  -254973;1;0;false;false;;;;;;
                                  -254974;1;0;false;false;127;127;159;;;
                                  -254975;1;0;false;false;;;;;;
                                  -254976;2;0;false;false;63;95;191;;;
                                  -254978;1;0;false;false;;;;;;
                                  -254979;3;0;false;false;63;95;191;;;
                                  -254982;1;0;false;false;;;;;;
                                  -254983;6;0;false;false;63;95;191;;;
                                  -254989;1;0;false;false;;;;;;
                                  -254990;4;0;false;false;63;95;191;;;
                                  -254994;1;0;false;false;;;;;;
                                  -254995;3;0;false;false;63;95;191;;;
                                  -254998;1;0;false;false;;;;;;
                                  -254999;6;0;false;false;63;95;191;;;
                                  -255005;1;0;false;false;;;;;;
                                  -255006;4;0;false;false;63;95;191;;;
                                  -255010;1;0;false;false;;;;;;
                                  -255011;7;0;false;false;63;95;191;;;
                                  -255018;1;0;false;false;;;;;;
                                  -255019;3;0;false;false;63;95;191;;;
                                  -255022;1;0;false;false;;;;;;
                                  -255023;8;0;false;false;63;95;191;;;
                                  -255031;5;0;false;false;127;127;159;;;
                                  -255036;3;0;false;false;;;;;;
                                  -255039;1;0;false;false;63;95;191;;;
                                  -255040;1;0;false;false;;;;;;
                                  -255041;5;0;false;false;127;127;159;;;
                                  -255046;3;0;false;false;;;;;;
                                  -255049;2;0;false;false;63;95;191;;;
                                  -255051;2;0;false;false;;;;;;
                                  -255053;6;1;false;false;127;0;85;;;
                                  -255059;1;0;false;false;;;;;;
                                  -255060;4;1;false;false;127;0;85;;;
                                  -255064;1;0;false;false;;;;;;
                                  -255065;8;0;false;false;0;0;0;;;
                                  -255073;3;1;false;false;127;0;85;;;
                                  -255076;1;0;false;false;;;;;;
                                  -255077;5;0;false;false;0;0;0;;;
                                  -255082;1;0;false;false;;;;;;
                                  -255083;1;0;false;false;0;0;0;;;
                                  -255084;3;0;false;false;;;;;;
                                  -255087;14;0;false;false;0;0;0;;;
                                  -255101;4;0;false;false;;;;;;
                                  -255105;9;0;false;false;0;0;0;;;
                                  -255114;1;0;false;false;;;;;;
                                  -255115;1;0;false;false;0;0;0;;;
                                  -255116;1;0;false;false;;;;;;
                                  -255117;5;0;false;false;0;0;0;;;
                                  -255122;3;0;false;false;;;;;;
                                  -255125;33;0;false;false;0;0;0;;;
                                  -255158;3;0;false;false;;;;;;
                                  -255161;2;1;false;false;127;0;85;;;
                                  -255163;1;0;false;false;;;;;;
                                  -255164;12;0;false;false;0;0;0;;;
                                  -255176;1;0;false;false;;;;;;
                                  -255177;1;0;false;false;0;0;0;;;
                                  -255178;1;0;false;false;;;;;;
                                  -255179;2;0;false;false;0;0;0;;;
                                  -255181;1;0;false;false;;;;;;
                                  -255182;1;0;false;false;0;0;0;;;
                                  -255183;4;0;false;false;;;;;;
                                  -255187;11;0;false;false;0;0;0;;;
                                  -255198;1;0;false;false;;;;;;
                                  -255199;1;0;false;false;0;0;0;;;
                                  -255200;1;0;false;false;;;;;;
                                  -255201;2;0;false;false;0;0;0;;;
                                  -255203;4;0;false;false;;;;;;
                                  -255207;12;0;false;false;0;0;0;;;
                                  -255219;4;0;false;false;;;;;;
                                  -255223;15;0;false;false;0;0;0;;;
                                  -255238;5;1;false;false;127;0;85;;;
                                  -255243;2;0;false;false;0;0;0;;;
                                  -255245;3;0;false;false;;;;;;
                                  -255248;1;0;false;false;0;0;0;;;
                                  -255249;3;0;false;false;;;;;;
                                  -255252;53;0;false;false;63;127;95;;;
                                  -255305;1;0;false;false;;;;;;
                                  -255306;18;0;false;false;0;0;0;;;
                                  -255324;1;0;false;false;;;;;;
                                  -255325;23;0;false;false;0;0;0;;;
                                  -255348;1;0;false;false;;;;;;
                                  -255349;5;1;false;false;127;0;85;;;
                                  -255354;2;0;false;false;0;0;0;;;
                                  -255356;3;0;false;false;;;;;;
                                  -255359;9;0;false;false;0;0;0;;;
                                  -255368;2;0;false;false;;;;;;
                                  -255370;1;0;false;false;0;0;0;;;
                                  -255371;2;0;false;false;;;;;;
                                  -255373;3;0;false;false;63;95;191;;;
                                  -255376;4;0;false;false;;;;;;
                                  -255380;1;0;false;false;63;95;191;;;
                                  -255381;1;0;false;false;;;;;;
                                  -255382;4;0;false;false;63;95;191;;;
                                  -255386;1;0;false;false;;;;;;
                                  -255387;3;0;false;false;63;95;191;;;
                                  -255390;1;0;false;false;;;;;;
                                  -255391;6;0;false;false;63;95;191;;;
                                  -255397;1;0;false;false;;;;;;
                                  -255398;8;0;false;false;63;95;191;;;
                                  -255406;4;0;false;false;;;;;;
                                  -255410;1;0;false;false;63;95;191;;;
                                  -255411;1;0;false;false;;;;;;
                                  -255412;2;0;false;false;63;95;191;;;
                                  -255414;1;0;false;false;;;;;;
                                  -255415;3;0;false;false;63;95;191;;;
                                  -255418;1;0;false;false;;;;;;
                                  -255419;6;0;false;false;63;95;191;;;
                                  -255425;1;0;false;false;;;;;;
                                  -255426;3;0;false;false;63;95;191;;;
                                  -255429;1;0;false;false;;;;;;
                                  -255430;3;0;false;false;63;95;191;;;
                                  -255433;1;0;false;false;;;;;;
                                  -255434;10;0;false;false;63;95;191;;;
                                  -255444;1;0;false;false;;;;;;
                                  -255445;5;0;false;false;63;95;191;;;
                                  -255450;1;0;false;false;;;;;;
                                  -255451;3;0;false;false;63;95;191;;;
                                  -255454;1;0;false;false;;;;;;
                                  -255455;6;0;false;false;63;95;191;;;
                                  -255461;1;0;false;false;;;;;;
                                  -255462;8;0;false;false;63;95;191;;;
                                  -255470;1;0;false;false;;;;;;
                                  -255471;4;0;false;false;63;95;191;;;
                                  -255475;1;0;false;false;;;;;;
                                  -255476;4;0;false;false;63;95;191;;;
                                  -255480;4;0;false;false;;;;;;
                                  -255484;1;0;false;false;63;95;191;;;
                                  -255485;1;0;false;false;;;;;;
                                  -255486;3;0;false;false;63;95;191;;;
                                  -255489;1;0;false;false;;;;;;
                                  -255490;5;0;false;false;63;95;191;;;
                                  -255495;1;0;false;false;;;;;;
                                  -255496;4;0;false;false;63;95;191;;;
                                  -255500;1;0;false;false;;;;;;
                                  -255501;3;0;false;false;63;95;191;;;
                                  -255504;1;0;false;false;;;;;;
                                  -255505;5;0;false;false;63;95;191;;;
                                  -255510;1;0;false;false;;;;;;
                                  -255511;4;0;false;false;63;95;191;;;
                                  -255515;1;0;false;false;;;;;;
                                  -255516;2;0;false;false;63;95;191;;;
                                  -255518;1;0;false;false;;;;;;
                                  -255519;8;0;false;false;63;95;191;;;
                                  -255527;1;0;false;false;;;;;;
                                  -255528;3;0;false;false;63;95;191;;;
                                  -255531;1;0;false;false;;;;;;
                                  -255532;3;0;false;false;63;95;191;;;
                                  -255535;1;0;false;false;;;;;;
                                  -255536;4;0;false;false;63;95;191;;;
                                  -255540;1;0;false;false;;;;;;
                                  -255541;2;0;false;false;63;95;191;;;
                                  -255543;1;0;false;false;;;;;;
                                  -255544;6;0;false;false;63;95;191;;;
                                  -255550;4;0;false;false;;;;;;
                                  -255554;1;0;false;false;63;95;191;;;
                                  -255555;1;0;false;false;;;;;;
                                  -255556;10;0;false;false;63;95;191;;;
                                  -255566;1;0;false;false;;;;;;
                                  -255567;1;0;false;false;63;95;191;;;
                                  -255568;1;0;false;false;;;;;;
                                  -255569;10;0;false;false;63;95;191;;;
                                  -255579;1;0;false;false;;;;;;
                                  -255580;4;0;false;false;63;95;191;;;
                                  -255584;1;0;false;false;;;;;;
                                  -255585;2;0;false;false;63;95;191;;;
                                  -255587;1;0;false;false;;;;;;
                                  -255588;7;0;false;false;63;95;191;;;
                                  -255595;1;0;false;false;;;;;;
                                  -255596;4;0;false;false;63;95;191;;;
                                  -255600;1;0;false;false;;;;;;
                                  -255601;6;0;false;false;63;95;191;;;
                                  -255607;1;0;false;false;;;;;;
                                  -255608;3;0;false;false;63;95;191;;;
                                  -255611;1;0;false;false;;;;;;
                                  -255612;4;0;false;false;63;95;191;;;
                                  -255616;1;0;false;false;;;;;;
                                  -255617;4;0;false;false;63;95;191;;;
                                  -255621;4;0;false;false;;;;;;
                                  -255625;1;0;false;false;63;95;191;;;
                                  -255626;1;0;false;false;;;;;;
                                  -255627;4;0;false;false;63;95;191;;;
                                  -255631;1;0;false;false;;;;;;
                                  -255632;3;0;false;false;63;95;191;;;
                                  -255635;1;0;false;false;;;;;;
                                  -255636;4;0;false;false;63;95;191;;;
                                  -255640;3;0;false;false;;;;;;
                                  -255643;1;0;false;false;63;95;191;;;
                                  -255644;1;0;false;false;;;;;;
                                  -255645;3;0;false;false;127;127;159;;;
                                  -255648;3;0;false;false;;;;;;
                                  -255651;1;0;false;false;63;95;191;;;
                                  -255652;1;0;false;false;;;;;;
                                  -255653;3;0;false;false;127;127;159;;;
                                  -255656;5;0;false;false;63;95;191;;;
                                  -255661;4;0;false;false;127;127;159;;;
                                  -255665;1;0;false;false;;;;;;
                                  -255666;4;0;false;false;63;95;191;;;
                                  -255670;1;0;false;false;;;;;;
                                  -255671;1;0;false;false;63;95;191;;;
                                  -255672;1;0;false;false;;;;;;
                                  -255673;6;0;false;false;63;95;191;;;
                                  -255679;1;0;false;false;;;;;;
                                  -255680;4;0;false;false;63;95;191;;;
                                  -255684;1;0;false;false;;;;;;
                                  -255685;2;0;false;false;63;95;191;;;
                                  -255687;1;0;false;false;;;;;;
                                  -255688;4;0;false;false;63;95;191;;;
                                  -255692;1;0;false;false;;;;;;
                                  -255693;6;0;false;false;63;95;191;;;
                                  -255699;1;0;false;false;;;;;;
                                  -255700;2;0;false;false;63;95;191;;;
                                  -255702;1;0;false;false;;;;;;
                                  -255703;3;0;false;false;63;95;191;;;
                                  -255706;1;0;false;false;;;;;;
                                  -255707;4;0;false;false;63;95;191;;;
                                  -255711;1;0;false;false;;;;;;
                                  -255712;3;0;false;false;63;95;191;;;
                                  -255715;1;0;false;false;;;;;;
                                  -255716;10;0;false;false;63;95;191;;;
                                  -255726;4;0;false;false;;;;;;
                                  -255730;1;0;false;false;63;95;191;;;
                                  -255731;1;0;false;false;;;;;;
                                  -255732;5;0;false;false;63;95;191;;;
                                  -255737;1;0;false;false;;;;;;
                                  -255738;2;0;false;false;63;95;191;;;
                                  -255740;1;0;false;false;;;;;;
                                  -255741;5;0;false;false;63;95;191;;;
                                  -255746;3;0;false;false;;;;;;
                                  -255749;1;0;false;false;63;95;191;;;
                                  -255750;1;0;false;false;;;;;;
                                  -255751;4;0;false;false;127;127;159;;;
                                  -255755;3;0;false;false;;;;;;
                                  -255758;1;0;false;false;63;95;191;;;
                                  -255759;3;0;false;false;;;;;;
                                  -255762;1;0;false;false;63;95;191;;;
                                  -255763;1;0;false;false;;;;;;
                                  -255764;7;1;false;false;127;159;191;;;
                                  -255771;4;0;false;false;63;95;191;;;
                                  -255775;1;0;false;false;;;;;;
                                  -255776;3;0;false;false;63;95;191;;;
                                  -255779;1;0;false;false;;;;;;
                                  -255780;6;0;false;false;63;95;191;;;
                                  -255786;1;0;false;false;;;;;;
                                  -255787;8;0;false;false;63;95;191;;;
                                  -255795;1;0;false;false;;;;;;
                                  -255796;8;0;false;false;63;95;191;;;
                                  -255804;1;0;false;false;;;;;;
                                  -255805;8;0;false;false;63;95;191;;;
                                  -255813;1;0;false;false;;;;;;
                                  -255814;8;0;false;false;63;95;191;;;
                                  -255822;1;0;false;false;;;;;;
                                  -255823;4;0;false;false;63;95;191;;;
                                  -255827;1;0;false;false;;;;;;
                                  -255828;6;0;false;false;63;95;191;;;
                                  -255834;4;0;false;false;;;;;;
                                  -255838;1;0;false;false;63;95;191;;;
                                  -255839;2;0;false;false;;;;;;
                                  -255841;4;0;false;false;63;95;191;;;
                                  -255845;1;0;false;false;;;;;;
                                  -255846;4;0;false;false;63;95;191;;;
                                  -255850;1;0;false;false;;;;;;
                                  -255851;3;0;false;false;63;95;191;;;
                                  -255854;1;0;false;false;;;;;;
                                  -255855;5;0;false;false;63;95;191;;;
                                  -255860;1;0;false;false;;;;;;
                                  -255861;10;0;false;false;63;95;191;;;
                                  -255871;1;0;false;false;;;;;;
                                  -255872;3;0;false;false;63;95;191;;;
                                  -255875;1;0;false;false;;;;;;
                                  -255876;3;0;false;false;63;95;191;;;
                                  -255879;1;0;false;false;;;;;;
                                  -255880;10;0;false;false;63;95;191;;;
                                  -255890;2;0;false;false;;;;;;
                                  -255892;3;0;false;false;63;95;191;;;
                                  -255895;3;0;false;false;;;;;;
                                  -255898;1;0;false;false;63;95;191;;;
                                  -255899;2;0;false;false;;;;;;
                                  -255901;7;0;false;false;63;95;191;;;
                                  -255908;1;0;false;false;;;;;;
                                  -255909;9;0;false;false;63;95;191;;;
                                  -255918;1;0;false;false;;;;;;
                                  -255919;2;0;false;false;63;95;191;;;
                                  -255921;1;0;false;false;;;;;;
                                  -255922;4;0;false;false;63;95;191;;;
                                  -255926;1;0;false;false;;;;;;
                                  -255927;10;0;false;false;63;95;191;;;
                                  -255937;3;0;false;false;;;;;;
                                  -255940;1;0;false;false;63;95;191;;;
                                  -255941;1;0;false;false;;;;;;
                                  -255942;11;1;false;false;127;159;191;;;
                                  -255953;12;0;false;false;63;95;191;;;
                                  -255965;1;0;false;false;;;;;;
                                  -255966;4;0;false;false;127;127;159;;;
                                  -255970;3;0;false;false;;;;;;
                                  -255973;1;0;false;false;63;95;191;;;
                                  -255974;4;0;false;false;;;;;;
                                  -255978;4;0;false;false;127;127;159;;;
                                  -255982;21;0;false;false;63;95;191;;;
                                  -256003;1;0;false;false;;;;;;
                                  -256004;1;0;false;false;127;127;159;;;
                                  -256005;1;0;false;false;;;;;;
                                  -256006;2;0;false;false;63;95;191;;;
                                  -256008;1;0;false;false;;;;;;
                                  -256009;3;0;false;false;63;95;191;;;
                                  -256012;1;0;false;false;;;;;;
                                  -256013;8;0;false;false;63;95;191;;;
                                  -256021;1;0;false;false;;;;;;
                                  -256022;3;0;false;false;63;95;191;;;
                                  -256025;1;0;false;false;;;;;;
                                  -256026;4;0;false;false;63;95;191;;;
                                  -256030;1;0;false;false;;;;;;
                                  -256031;8;0;false;false;63;95;191;;;
                                  -256039;5;0;false;false;127;127;159;;;
                                  -256044;3;0;false;false;;;;;;
                                  -256047;1;0;false;false;63;95;191;;;
                                  -256048;4;0;false;false;;;;;;
                                  -256052;4;0;false;false;127;127;159;;;
                                  -256056;27;0;false;false;63;95;191;;;
                                  -256083;1;0;false;false;;;;;;
                                  -256084;1;0;false;false;127;127;159;;;
                                  -256085;1;0;false;false;;;;;;
                                  -256086;2;0;false;false;63;95;191;;;
                                  -256088;1;0;false;false;;;;;;
                                  -256089;3;0;false;false;63;95;191;;;
                                  -256092;1;0;false;false;;;;;;
                                  -256093;6;0;false;false;63;95;191;;;
                                  -256099;1;0;false;false;;;;;;
                                  -256100;4;0;false;false;63;95;191;;;
                                  -256104;1;0;false;false;;;;;;
                                  -256105;3;0;false;false;63;95;191;;;
                                  -256108;1;0;false;false;;;;;;
                                  -256109;6;0;false;false;63;95;191;;;
                                  -256115;1;0;false;false;;;;;;
                                  -256116;4;0;false;false;63;95;191;;;
                                  -256120;1;0;false;false;;;;;;
                                  -256121;7;0;false;false;63;95;191;;;
                                  -256128;1;0;false;false;;;;;;
                                  -256129;3;0;false;false;63;95;191;;;
                                  -256132;1;0;false;false;;;;;;
                                  -256133;8;0;false;false;63;95;191;;;
                                  -256141;5;0;false;false;127;127;159;;;
                                  -256146;3;0;false;false;;;;;;
                                  -256149;1;0;false;false;63;95;191;;;
                                  -256150;1;0;false;false;;;;;;
                                  -256151;5;0;false;false;127;127;159;;;
                                  -256156;3;0;false;false;;;;;;
                                  -256159;1;0;false;false;63;95;191;;;
                                  -256160;1;0;false;false;;;;;;
                                  -256161;11;1;false;false;127;159;191;;;
                                  -256172;24;0;false;false;63;95;191;;;
                                  -256196;1;0;false;false;;;;;;
                                  -256197;4;0;false;false;127;127;159;;;
                                  -256201;3;0;false;false;;;;;;
                                  -256204;1;0;false;false;63;95;191;;;
                                  -256205;4;0;false;false;;;;;;
                                  -256209;4;0;false;false;127;127;159;;;
                                  -256213;19;0;false;false;63;95;191;;;
                                  -256232;1;0;false;false;;;;;;
                                  -256233;4;0;false;false;63;95;191;;;
                                  -256237;1;0;false;false;;;;;;
                                  -256238;6;0;false;false;63;95;191;;;
                                  -256244;1;0;false;false;;;;;;
                                  -256245;2;0;false;false;63;95;191;;;
                                  -256247;1;0;false;false;;;;;;
                                  -256248;4;0;false;false;63;95;191;;;
                                  -256252;5;0;false;false;127;127;159;;;
                                  -256257;3;0;false;false;;;;;;
                                  -256260;1;0;false;false;63;95;191;;;
                                  -256261;1;0;false;false;;;;;;
                                  -256262;5;0;false;false;127;127;159;;;
                                  -256267;3;0;false;false;;;;;;
                                  -256270;2;0;false;false;63;95;191;;;
                                  -256272;2;0;false;false;;;;;;
                                  -256274;6;1;false;false;127;0;85;;;
                                  -256280;1;0;false;false;;;;;;
                                  -256281;4;1;false;false;127;0;85;;;
                                  -256285;1;0;false;false;;;;;;
                                  -256286;14;0;false;false;0;0;0;;;
                                  -256300;1;0;false;false;;;;;;
                                  -256301;5;0;false;false;0;0;0;;;
                                  -256306;1;0;false;false;;;;;;
                                  -256307;1;0;false;false;0;0;0;;;
                                  -256308;3;0;false;false;;;;;;
                                  -256311;14;0;false;false;0;0;0;;;
                                  -256325;3;0;false;false;;;;;;
                                  -256328;5;0;false;false;0;0;0;;;
                                  -256333;1;0;false;false;;;;;;
                                  -256334;5;0;false;false;0;0;0;;;
                                  -256339;1;0;false;false;;;;;;
                                  -256340;1;0;false;false;0;0;0;;;
                                  -256341;1;0;false;false;;;;;;
                                  -256342;3;1;false;false;127;0;85;;;
                                  -256345;1;0;false;false;;;;;;
                                  -256346;8;0;false;false;0;0;0;;;
                                  -256354;6;0;false;false;;;;;;
                                  -256360;2;1;false;false;127;0;85;;;
                                  -256362;1;0;false;false;;;;;;
                                  -256363;5;0;false;false;0;0;0;;;
                                  -256368;1;0;false;false;;;;;;
                                  -256369;2;0;false;false;0;0;0;;;
                                  -256371;1;0;false;false;;;;;;
                                  -256372;4;1;false;false;127;0;85;;;
                                  -256376;1;0;false;false;0;0;0;;;
                                  -256377;1;0;false;false;;;;;;
                                  -256378;1;0;false;false;0;0;0;;;
                                  -256379;4;0;false;false;;;;;;
                                  -256383;35;0;false;false;0;0;0;;;
                                  -256418;3;0;false;false;;;;;;
                                  -256421;1;0;false;false;0;0;0;;;
                                  -256422;3;0;false;false;;;;;;
                                  -256425;11;0;false;false;0;0;0;;;
                                  -256436;1;0;false;false;;;;;;
                                  -256437;1;0;false;false;0;0;0;;;
                                  -256438;1;0;false;false;;;;;;
                                  -256439;2;0;false;false;0;0;0;;;
                                  -256441;3;0;false;false;;;;;;
                                  -256444;9;0;false;false;0;0;0;;;
                                  -256453;1;0;false;false;;;;;;
                                  -256454;1;0;false;false;0;0;0;;;
                                  -256455;1;0;false;false;;;;;;
                                  -256456;15;0;false;false;0;0;0;;;
                                  -256471;3;0;false;false;;;;;;
                                  -256474;10;0;false;false;0;0;0;;;
                                  -256484;1;0;false;false;;;;;;
                                  -256485;1;0;false;false;0;0;0;;;
                                  -256486;1;0;false;false;;;;;;
                                  -256487;5;0;false;false;0;0;0;;;
                                  -256492;3;0;false;false;;;;;;
                                  -256495;10;0;false;false;0;0;0;;;
                                  -256505;1;0;false;false;;;;;;
                                  -256506;1;0;false;false;0;0;0;;;
                                  -256507;1;0;false;false;;;;;;
                                  -256508;4;1;false;false;127;0;85;;;
                                  -256512;1;0;false;false;0;0;0;;;
                                  -256513;4;0;false;false;;;;;;
                                  -256517;27;0;false;false;0;0;0;;;
                                  -256544;1;0;false;false;;;;;;
                                  -256545;7;0;false;false;0;0;0;;;
                                  -256552;3;0;false;false;;;;;;
                                  -256555;2;1;false;false;127;0;85;;;
                                  -256557;1;0;false;false;;;;;;
                                  -256558;12;0;false;false;0;0;0;;;
                                  -256570;1;0;false;false;;;;;;
                                  -256571;1;0;false;false;0;0;0;;;
                                  -256572;4;0;false;false;;;;;;
                                  -256576;15;0;false;false;0;0;0;;;
                                  -256591;1;0;false;false;;;;;;
                                  -256592;15;0;false;false;0;0;0;;;
                                  -256607;1;0;false;false;;;;;;
                                  -256608;1;0;false;false;0;0;0;;;
                                  -256609;1;0;false;false;;;;;;
                                  -256610;4;1;false;false;127;0;85;;;
                                  -256614;1;0;false;false;0;0;0;;;
                                  -256615;8;0;false;false;;;;;;
                                  -256623;2;1;false;false;127;0;85;;;
                                  -256625;1;0;false;false;;;;;;
                                  -256626;29;0;false;false;0;0;0;;;
                                  -256655;1;0;false;false;;;;;;
                                  -256656;1;0;false;false;0;0;0;;;
                                  -256657;7;0;false;false;;;;;;
                                  -256664;15;0;false;false;0;0;0;;;
                                  -256679;1;0;false;false;;;;;;
                                  -256680;1;0;false;false;0;0;0;;;
                                  -256681;1;0;false;false;;;;;;
                                  -256682;3;1;false;false;127;0;85;;;
                                  -256685;1;0;false;false;;;;;;
                                  -256686;32;0;false;false;0;0;0;;;
                                  -256718;5;0;false;false;;;;;;
                                  -256723;21;0;false;false;0;0;0;;;
                                  -256744;1;0;false;false;;;;;;
                                  -256745;1;0;false;false;0;0;0;;;
                                  -256746;1;0;false;false;;;;;;
                                  -256747;12;0;false;false;0;0;0;;;
                                  -256759;5;0;false;false;;;;;;
                                  -256764;19;0;false;false;0;0;0;;;
                                  -256783;1;0;false;false;;;;;;
                                  -256784;1;0;false;false;0;0;0;;;
                                  -256785;1;0;false;false;;;;;;
                                  -256786;11;0;false;false;0;0;0;;;
                                  -256797;1;0;false;false;;;;;;
                                  -256798;1;0;false;false;0;0;0;;;
                                  -256799;1;0;false;false;;;;;;
                                  -256800;20;0;false;false;0;0;0;;;
                                  -256820;5;0;false;false;;;;;;
                                  -256825;20;0;false;false;0;0;0;;;
                                  -256845;1;0;false;false;;;;;;
                                  -256846;1;0;false;false;0;0;0;;;
                                  -256847;1;0;false;false;;;;;;
                                  -256848;33;0;false;false;0;0;0;;;
                                  -256881;1;0;false;false;;;;;;
                                  -256882;9;0;false;false;0;0;0;;;
                                  -256891;1;0;false;false;;;;;;
                                  -256892;1;0;false;false;0;0;0;;;
                                  -256893;1;0;false;false;;;;;;
                                  -256894;13;0;false;false;0;0;0;;;
                                  -256907;4;0;false;false;;;;;;
                                  -256911;1;0;false;false;0;0;0;;;
                                  -256912;4;0;false;false;;;;;;
                                  -256916;28;0;false;false;0;0;0;;;
                                  -256944;4;0;false;false;;;;;;
                                  -256948;23;0;false;false;0;0;0;;;
                                  -256971;5;0;false;false;;;;;;
                                  -256976;2;1;false;false;127;0;85;;;
                                  -256978;1;0;false;false;;;;;;
                                  -256979;16;0;false;false;0;0;0;;;
                                  -256995;1;0;false;false;;;;;;
                                  -256996;2;0;false;false;0;0;0;;;
                                  -256998;1;0;false;false;;;;;;
                                  -256999;4;1;false;false;127;0;85;;;
                                  -257003;1;0;false;false;0;0;0;;;
                                  -257004;1;0;false;false;;;;;;
                                  -257005;1;0;false;false;0;0;0;;;
                                  -257006;5;0;false;false;;;;;;
                                  -257011;31;0;false;false;0;0;0;;;
                                  -257042;1;0;false;false;;;;;;
                                  -257043;17;0;false;false;0;0;0;;;
                                  -257060;4;0;false;false;;;;;;
                                  -257064;1;0;false;false;0;0;0;;;
                                  -257065;3;0;false;false;;;;;;
                                  -257068;1;0;false;false;0;0;0;;;
                                  -257069;2;0;false;false;;;;;;
                                  -257071;1;0;false;false;0;0;0;;;
                                  -257072;2;0;false;false;;;;;;
                                  -257074;3;0;false;false;63;95;191;;;
                                  -257077;3;0;false;false;;;;;;
                                  -257080;1;0;false;false;63;95;191;;;
                                  -257081;1;0;false;false;;;;;;
                                  -257082;4;0;false;false;63;95;191;;;
                                  -257086;1;0;false;false;;;;;;
                                  -257087;3;0;false;false;63;95;191;;;
                                  -257090;1;0;false;false;;;;;;
                                  -257091;4;0;false;false;63;95;191;;;
                                  -257095;1;0;false;false;;;;;;
                                  -257096;5;0;false;false;63;95;191;;;
                                  -257101;1;0;false;false;;;;;;
                                  -257102;2;0;false;false;63;95;191;;;
                                  -257104;1;0;false;false;;;;;;
                                  -257105;3;0;false;false;63;95;191;;;
                                  -257108;1;0;false;false;;;;;;
                                  -257109;9;0;false;false;63;95;191;;;
                                  -257118;1;0;false;false;;;;;;
                                  -257119;6;0;false;false;63;95;191;;;
                                  -257125;1;0;false;false;;;;;;
                                  -257126;2;0;false;false;63;95;191;;;
                                  -257128;1;0;false;false;;;;;;
                                  -257129;11;0;false;false;63;95;191;;;
                                  -257140;3;0;false;false;;;;;;
                                  -257143;1;0;false;false;63;95;191;;;
                                  -257144;1;0;false;false;;;;;;
                                  -257145;3;0;false;false;127;127;159;;;
                                  -257148;3;0;false;false;;;;;;
                                  -257151;1;0;false;false;63;95;191;;;
                                  -257152;1;0;false;false;;;;;;
                                  -257153;3;0;false;false;63;95;191;;;
                                  -257156;1;0;false;false;;;;;;
                                  -257157;4;0;false;false;63;95;191;;;
                                  -257161;1;0;false;false;;;;;;
                                  -257162;5;0;false;false;63;95;191;;;
                                  -257167;1;0;false;false;;;;;;
                                  -257168;9;0;false;false;63;95;191;;;
                                  -257177;1;0;false;false;;;;;;
                                  -257178;3;0;false;false;63;95;191;;;
                                  -257181;1;0;false;false;;;;;;
                                  -257182;6;0;false;false;63;95;191;;;
                                  -257188;1;0;false;false;;;;;;
                                  -257189;2;0;false;false;63;95;191;;;
                                  -257191;1;0;false;false;;;;;;
                                  -257192;4;0;false;false;63;95;191;;;
                                  -257196;1;0;false;false;;;;;;
                                  -257197;4;0;false;false;63;95;191;;;
                                  -257201;3;0;false;false;;;;;;
                                  -257204;1;0;false;false;63;95;191;;;
                                  -257205;1;0;false;false;;;;;;
                                  -257206;3;0;false;false;63;95;191;;;
                                  -257209;1;0;false;false;;;;;;
                                  -257210;4;0;false;false;63;95;191;;;
                                  -257214;1;0;false;false;;;;;;
                                  -257215;3;0;false;false;63;95;191;;;
                                  -257218;1;0;false;false;;;;;;
                                  -257219;4;0;false;false;63;95;191;;;
                                  -257223;1;0;false;false;;;;;;
                                  -257224;4;0;false;false;63;95;191;;;
                                  -257228;1;0;false;false;;;;;;
                                  -257229;3;0;false;false;63;95;191;;;
                                  -257232;1;0;false;false;;;;;;
                                  -257233;7;0;false;false;63;95;191;;;
                                  -257240;3;0;false;false;;;;;;
                                  -257243;1;0;false;false;63;95;191;;;
                                  -257244;1;0;false;false;;;;;;
                                  -257245;4;0;false;false;127;127;159;;;
                                  -257249;3;0;false;false;;;;;;
                                  -257252;1;0;false;false;63;95;191;;;
                                  -257253;3;0;false;false;;;;;;
                                  -257256;1;0;false;false;63;95;191;;;
                                  -257257;1;0;false;false;;;;;;
                                  -257258;7;1;false;false;127;159;191;;;
                                  -257265;5;0;false;false;63;95;191;;;
                                  -257270;1;0;false;false;;;;;;
                                  -257271;3;0;false;false;63;95;191;;;
                                  -257274;1;0;false;false;;;;;;
                                  -257275;3;0;false;false;63;95;191;;;
                                  -257278;1;0;false;false;;;;;;
                                  -257279;4;0;false;false;63;95;191;;;
                                  -257283;1;0;false;false;;;;;;
                                  -257284;6;0;false;false;63;95;191;;;
                                  -257290;3;0;false;false;;;;;;
                                  -257293;1;0;false;false;63;95;191;;;
                                  -257294;1;0;false;false;;;;;;
                                  -257295;11;1;false;false;127;159;191;;;
                                  -257306;12;0;false;false;63;95;191;;;
                                  -257318;1;0;false;false;;;;;;
                                  -257319;4;0;false;false;127;127;159;;;
                                  -257323;3;0;false;false;;;;;;
                                  -257326;1;0;false;false;63;95;191;;;
                                  -257327;4;0;false;false;;;;;;
                                  -257331;4;0;false;false;127;127;159;;;
                                  -257335;21;0;false;false;63;95;191;;;
                                  -257356;1;0;false;false;;;;;;
                                  -257357;1;0;false;false;127;127;159;;;
                                  -257358;1;0;false;false;;;;;;
                                  -257359;2;0;false;false;63;95;191;;;
                                  -257361;1;0;false;false;;;;;;
                                  -257362;3;0;false;false;63;95;191;;;
                                  -257365;1;0;false;false;;;;;;
                                  -257366;8;0;false;false;63;95;191;;;
                                  -257374;1;0;false;false;;;;;;
                                  -257375;3;0;false;false;63;95;191;;;
                                  -257378;1;0;false;false;;;;;;
                                  -257379;4;0;false;false;63;95;191;;;
                                  -257383;1;0;false;false;;;;;;
                                  -257384;8;0;false;false;63;95;191;;;
                                  -257392;5;0;false;false;127;127;159;;;
                                  -257397;3;0;false;false;;;;;;
                                  -257400;1;0;false;false;63;95;191;;;
                                  -257401;4;0;false;false;;;;;;
                                  -257405;4;0;false;false;127;127;159;;;
                                  -257409;27;0;false;false;63;95;191;;;
                                  -257436;1;0;false;false;;;;;;
                                  -257437;1;0;false;false;127;127;159;;;
                                  -257438;1;0;false;false;;;;;;
                                  -257439;2;0;false;false;63;95;191;;;
                                  -257441;1;0;false;false;;;;;;
                                  -257442;3;0;false;false;63;95;191;;;
                                  -257445;1;0;false;false;;;;;;
                                  -257446;6;0;false;false;63;95;191;;;
                                  -257452;1;0;false;false;;;;;;
                                  -257453;4;0;false;false;63;95;191;;;
                                  -257457;1;0;false;false;;;;;;
                                  -257458;3;0;false;false;63;95;191;;;
                                  -257461;1;0;false;false;;;;;;
                                  -257462;6;0;false;false;63;95;191;;;
                                  -257468;1;0;false;false;;;;;;
                                  -257469;4;0;false;false;63;95;191;;;
                                  -257473;1;0;false;false;;;;;;
                                  -257474;7;0;false;false;63;95;191;;;
                                  -257481;1;0;false;false;;;;;;
                                  -257482;3;0;false;false;63;95;191;;;
                                  -257485;1;0;false;false;;;;;;
                                  -257486;8;0;false;false;63;95;191;;;
                                  -257494;5;0;false;false;127;127;159;;;
                                  -257499;3;0;false;false;;;;;;
                                  -257502;1;0;false;false;63;95;191;;;
                                  -257503;1;0;false;false;;;;;;
                                  -257504;5;0;false;false;127;127;159;;;
                                  -257509;3;0;false;false;;;;;;
                                  -257512;1;0;false;false;63;95;191;;;
                                  -257513;1;0;false;false;;;;;;
                                  -257514;11;1;false;false;127;159;191;;;
                                  -257525;24;0;false;false;63;95;191;;;
                                  -257549;1;0;false;false;;;;;;
                                  -257550;4;0;false;false;127;127;159;;;
                                  -257554;3;0;false;false;;;;;;
                                  -257557;1;0;false;false;63;95;191;;;
                                  -257558;3;0;false;false;;;;;;
                                  -257561;4;0;false;false;127;127;159;;;
                                  -257565;20;0;false;false;63;95;191;;;
                                  -257585;1;0;false;false;;;;;;
                                  -257586;4;0;false;false;63;95;191;;;
                                  -257590;1;0;false;false;;;;;;
                                  -257591;5;0;false;false;63;95;191;;;
                                  -257596;1;0;false;false;;;;;;
                                  -257597;2;0;false;false;63;95;191;;;
                                  -257599;1;0;false;false;;;;;;
                                  -257600;1;0;false;false;63;95;191;;;
                                  -257601;5;0;false;false;127;127;159;;;
                                  -257606;3;0;false;false;;;;;;
                                  -257609;1;0;false;false;63;95;191;;;
                                  -257610;1;0;false;false;;;;;;
                                  -257611;5;0;false;false;127;127;159;;;
                                  -257616;3;0;false;false;;;;;;
                                  -257619;2;0;false;false;63;95;191;;;
                                  -257621;2;0;false;false;;;;;;
                                  -257623;6;1;false;false;127;0;85;;;
                                  -257629;1;0;false;false;;;;;;
                                  -257630;4;1;false;false;127;0;85;;;
                                  -257634;1;0;false;false;;;;;;
                                  -257635;13;0;false;false;0;0;0;;;
                                  -257648;3;1;false;false;127;0;85;;;
                                  -257651;1;0;false;false;;;;;;
                                  -257652;6;0;false;false;0;0;0;;;
                                  -257658;1;0;false;false;;;;;;
                                  -257659;1;0;false;false;0;0;0;;;
                                  -257660;3;0;false;false;;;;;;
                                  -257663;14;0;false;false;0;0;0;;;
                                  -257677;3;0;false;false;;;;;;
                                  -257680;2;1;false;false;127;0;85;;;
                                  -257682;1;0;false;false;;;;;;
                                  -257683;6;0;false;false;0;0;0;;;
                                  -257689;1;0;false;false;;;;;;
                                  -257690;2;0;false;false;0;0;0;;;
                                  -257692;1;0;false;false;;;;;;
                                  -257693;2;0;false;false;0;0;0;;;
                                  -257695;1;0;false;false;;;;;;
                                  -257696;1;0;false;false;0;0;0;;;
                                  -257697;4;0;false;false;;;;;;
                                  -257701;36;0;false;false;0;0;0;;;
                                  -257737;3;0;false;false;;;;;;
                                  -257740;1;0;false;false;0;0;0;;;
                                  -257741;3;0;false;false;;;;;;
                                  -257744;9;0;false;false;0;0;0;;;
                                  -257753;1;0;false;false;;;;;;
                                  -257754;1;0;false;false;0;0;0;;;
                                  -257755;1;0;false;false;;;;;;
                                  -257756;6;0;false;false;0;0;0;;;
                                  -257762;2;0;false;false;;;;;;
                                  -257764;1;0;false;false;0;0;0;;;
                                  -257765;2;0;false;false;;;;;;
                                  -257767;3;0;false;false;63;95;191;;;
                                  -257770;3;0;false;false;;;;;;
                                  -257773;1;0;false;false;63;95;191;;;
                                  -257774;1;0;false;false;;;;;;
                                  -257775;4;0;false;false;63;95;191;;;
                                  -257779;1;0;false;false;;;;;;
                                  -257780;3;0;false;false;63;95;191;;;
                                  -257783;1;0;false;false;;;;;;
                                  -257784;3;0;false;false;63;95;191;;;
                                  -257787;1;0;false;false;;;;;;
                                  -257788;6;0;false;false;63;95;191;;;
                                  -257794;1;0;false;false;;;;;;
                                  -257795;2;0;false;false;63;95;191;;;
                                  -257797;1;0;false;false;;;;;;
                                  -257798;7;0;false;false;63;95;191;;;
                                  -257805;1;0;false;false;;;;;;
                                  -257806;2;0;false;false;63;95;191;;;
                                  -257808;1;0;false;false;;;;;;
                                  -257809;5;0;false;false;63;95;191;;;
                                  -257814;1;0;false;false;;;;;;
                                  -257815;2;0;false;false;63;95;191;;;
                                  -257817;1;0;false;false;;;;;;
                                  -257818;2;0;false;false;63;95;191;;;
                                  -257820;1;0;false;false;;;;;;
                                  -257821;4;0;false;false;63;95;191;;;
                                  -257825;1;0;false;false;;;;;;
                                  -257826;4;0;false;false;63;95;191;;;
                                  -257830;3;0;false;false;;;;;;
                                  -257833;1;0;false;false;63;95;191;;;
                                  -257834;1;0;false;false;;;;;;
                                  -257835;3;0;false;false;127;127;159;;;
                                  -257838;3;0;false;false;;;;;;
                                  -257841;1;0;false;false;63;95;191;;;
                                  -257842;1;0;false;false;;;;;;
                                  -257843;3;0;false;false;63;95;191;;;
                                  -257846;1;0;false;false;;;;;;
                                  -257847;3;0;false;false;63;95;191;;;
                                  -257850;1;0;false;false;;;;;;
                                  -257851;5;0;false;false;63;95;191;;;
                                  -257856;1;0;false;false;;;;;;
                                  -257857;2;0;false;false;63;95;191;;;
                                  -257859;1;0;false;false;;;;;;
                                  -257860;3;0;false;false;63;95;191;;;
                                  -257863;1;0;false;false;;;;;;
                                  -257864;5;0;false;false;63;95;191;;;
                                  -257869;1;0;false;false;;;;;;
                                  -257870;2;0;false;false;63;95;191;;;
                                  -257872;1;0;false;false;;;;;;
                                  -257873;3;0;false;false;63;95;191;;;
                                  -257876;1;0;false;false;;;;;;
                                  -257877;4;0;false;false;63;95;191;;;
                                  -257881;1;0;false;false;;;;;;
                                  -257882;4;0;false;false;63;95;191;;;
                                  -257886;1;0;false;false;;;;;;
                                  -257887;2;0;false;false;63;95;191;;;
                                  -257889;1;0;false;false;;;;;;
                                  -257890;9;0;false;false;63;95;191;;;
                                  -257899;1;0;false;false;;;;;;
                                  -257900;2;0;false;false;63;95;191;;;
                                  -257902;1;0;false;false;;;;;;
                                  -257903;3;0;false;false;63;95;191;;;
                                  -257906;1;0;false;false;;;;;;
                                  -257907;3;0;false;false;63;95;191;;;
                                  -257910;4;0;false;false;;;;;;
                                  -257914;1;0;false;false;63;95;191;;;
                                  -257915;1;0;false;false;;;;;;
                                  -257916;2;0;false;false;63;95;191;;;
                                  -257918;1;0;false;false;;;;;;
                                  -257919;3;0;false;false;63;95;191;;;
                                  -257922;1;0;false;false;;;;;;
                                  -257923;7;0;false;false;63;95;191;;;
                                  -257930;1;0;false;false;;;;;;
                                  -257931;3;0;false;false;63;95;191;;;
                                  -257934;1;0;false;false;;;;;;
                                  -257935;3;0;false;false;63;95;191;;;
                                  -257938;1;0;false;false;;;;;;
                                  -257939;5;0;false;false;63;95;191;;;
                                  -257944;1;0;false;false;;;;;;
                                  -257945;7;0;false;false;63;95;191;;;
                                  -257952;1;0;false;false;;;;;;
                                  -257953;4;0;false;false;63;95;191;;;
                                  -257957;1;0;false;false;;;;;;
                                  -257958;3;0;false;false;63;95;191;;;
                                  -257961;1;0;false;false;;;;;;
                                  -257962;6;0;false;false;63;95;191;;;
                                  -257968;1;0;false;false;;;;;;
                                  -257969;2;0;false;false;63;95;191;;;
                                  -257971;1;0;false;false;;;;;;
                                  -257972;9;0;false;false;63;95;191;;;
                                  -257981;3;0;false;false;;;;;;
                                  -257984;1;0;false;false;63;95;191;;;
                                  -257985;1;0;false;false;;;;;;
                                  -257986;8;0;false;false;63;95;191;;;
                                  -257994;1;0;false;false;;;;;;
                                  -257995;6;0;false;false;63;95;191;;;
                                  -258001;1;0;false;false;;;;;;
                                  -258002;4;0;false;false;63;95;191;;;
                                  -258006;1;0;false;false;;;;;;
                                  -258007;5;0;false;false;63;95;191;;;
                                  -258012;3;0;false;false;;;;;;
                                  -258015;1;0;false;false;63;95;191;;;
                                  -258016;1;0;false;false;;;;;;
                                  -258017;5;0;false;false;63;95;191;;;
                                  -258022;1;0;false;false;;;;;;
                                  -258023;3;0;false;false;63;95;191;;;
                                  -258026;1;0;false;false;;;;;;
                                  -258027;3;0;false;false;63;95;191;;;
                                  -258030;1;0;false;false;;;;;;
                                  -258031;5;0;false;false;63;95;191;;;
                                  -258036;1;0;false;false;;;;;;
                                  -258037;2;0;false;false;63;95;191;;;
                                  -258039;1;0;false;false;;;;;;
                                  -258040;5;0;false;false;63;95;191;;;
                                  -258045;1;0;false;false;;;;;;
                                  -258046;2;0;false;false;63;95;191;;;
                                  -258048;1;0;false;false;;;;;;
                                  -258049;1;0;false;false;63;95;191;;;
                                  -258050;1;0;false;false;;;;;;
                                  -258051;4;0;false;false;63;95;191;;;
                                  -258055;1;0;false;false;;;;;;
                                  -258056;3;0;false;false;63;95;191;;;
                                  -258059;1;0;false;false;;;;;;
                                  -258060;4;0;false;false;63;95;191;;;
                                  -258064;1;0;false;false;;;;;;
                                  -258065;2;0;false;false;63;95;191;;;
                                  -258067;1;0;false;false;;;;;;
                                  -258068;3;0;false;false;63;95;191;;;
                                  -258071;1;0;false;false;;;;;;
                                  -258072;2;0;false;false;63;95;191;;;
                                  -258074;1;0;false;false;;;;;;
                                  -258075;3;0;false;false;63;95;191;;;
                                  -258078;1;0;false;false;;;;;;
                                  -258079;7;0;false;false;63;95;191;;;
                                  -258086;3;0;false;false;;;;;;
                                  -258089;1;0;false;false;63;95;191;;;
                                  -258090;1;0;false;false;;;;;;
                                  -258091;4;0;false;false;127;127;159;;;
                                  -258095;3;0;false;false;;;;;;
                                  -258098;1;0;false;false;63;95;191;;;
                                  -258099;3;0;false;false;;;;;;
                                  -258102;1;0;false;false;63;95;191;;;
                                  -258103;1;0;false;false;;;;;;
                                  -258104;7;1;false;false;127;159;191;;;
                                  -258111;8;0;false;false;63;95;191;;;
                                  -258119;1;0;false;false;;;;;;
                                  -258120;3;0;false;false;63;95;191;;;
                                  -258123;1;0;false;false;;;;;;
                                  -258124;3;0;false;false;63;95;191;;;
                                  -258127;1;0;false;false;;;;;;
                                  -258128;6;0;false;false;63;95;191;;;
                                  -258134;1;0;false;false;;;;;;
                                  -258135;4;0;false;false;63;95;191;;;
                                  -258139;1;0;false;false;;;;;;
                                  -258140;2;0;false;false;63;95;191;;;
                                  -258142;1;0;false;false;;;;;;
                                  -258143;7;0;false;false;63;95;191;;;
                                  -258150;1;0;false;false;;;;;;
                                  -258151;1;0;false;false;63;95;191;;;
                                  -258152;1;0;false;false;;;;;;
                                  -258153;3;0;false;false;63;95;191;;;
                                  -258156;4;0;false;false;;;;;;
                                  -258160;1;0;false;false;63;95;191;;;
                                  -258161;2;0;false;false;;;;;;
                                  -258163;14;0;false;false;63;95;191;;;
                                  -258177;1;0;false;false;;;;;;
                                  -258178;1;0;false;false;127;127;159;;;
                                  -258179;1;0;false;false;;;;;;
                                  -258180;5;0;false;false;63;95;191;;;
                                  -258185;1;0;false;false;;;;;;
                                  -258186;7;0;false;false;63;95;191;;;
                                  -258193;1;0;false;false;;;;;;
                                  -258194;5;0;false;false;63;95;191;;;
                                  -258199;1;0;false;false;;;;;;
                                  -258200;3;0;false;false;63;95;191;;;
                                  -258203;1;0;false;false;;;;;;
                                  -258204;5;0;false;false;63;95;191;;;
                                  -258209;1;0;false;false;;;;;;
                                  -258210;2;0;false;false;63;95;191;;;
                                  -258212;1;0;false;false;;;;;;
                                  -258213;2;0;false;false;63;95;191;;;
                                  -258215;1;0;false;false;;;;;;
                                  -258216;5;0;false;false;63;95;191;;;
                                  -258221;1;0;false;false;;;;;;
                                  -258222;3;0;false;false;63;95;191;;;
                                  -258225;1;0;false;false;;;;;;
                                  -258226;5;0;false;false;63;95;191;;;
                                  -258231;4;0;false;false;;;;;;
                                  -258235;1;0;false;false;63;95;191;;;
                                  -258236;2;0;false;false;;;;;;
                                  -258238;7;0;false;false;63;95;191;;;
                                  -258245;1;0;false;false;;;;;;
                                  -258246;3;0;false;false;63;95;191;;;
                                  -258249;1;0;false;false;;;;;;
                                  -258250;7;0;false;false;63;95;191;;;
                                  -258257;1;0;false;false;;;;;;
                                  -258258;5;0;false;false;63;95;191;;;
                                  -258263;1;0;false;false;;;;;;
                                  -258264;2;0;false;false;63;95;191;;;
                                  -258266;1;0;false;false;;;;;;
                                  -258267;14;0;false;false;63;95;191;;;
                                  -258281;1;0;false;false;;;;;;
                                  -258282;1;0;false;false;127;127;159;;;
                                  -258283;1;0;false;false;;;;;;
                                  -258284;2;0;false;false;63;95;191;;;
                                  -258286;1;0;false;false;;;;;;
                                  -258287;2;0;false;false;63;95;191;;;
                                  -258289;1;0;false;false;;;;;;
                                  -258290;3;0;false;false;63;95;191;;;
                                  -258293;1;0;false;false;;;;;;
                                  -258294;2;0;false;false;63;95;191;;;
                                  -258296;1;0;false;false;;;;;;
                                  -258297;5;0;false;false;63;95;191;;;
                                  -258302;4;0;false;false;;;;;;
                                  -258306;1;0;false;false;63;95;191;;;
                                  -258307;2;0;false;false;;;;;;
                                  -258309;5;0;false;false;63;95;191;;;
                                  -258314;1;0;false;false;;;;;;
                                  -258315;4;0;false;false;63;95;191;;;
                                  -258319;1;0;false;false;;;;;;
                                  -258320;2;0;false;false;63;95;191;;;
                                  -258322;1;0;false;false;;;;;;
                                  -258323;8;0;false;false;63;95;191;;;
                                  -258331;1;0;false;false;;;;;;
                                  -258332;12;0;false;false;63;95;191;;;
                                  -258344;3;0;false;false;;;;;;
                                  -258347;1;0;false;false;63;95;191;;;
                                  -258348;1;0;false;false;;;;;;
                                  -258349;11;1;false;false;127;159;191;;;
                                  -258360;12;0;false;false;63;95;191;;;
                                  -258372;1;0;false;false;;;;;;
                                  -258373;4;0;false;false;127;127;159;;;
                                  -258377;3;0;false;false;;;;;;
                                  -258380;1;0;false;false;63;95;191;;;
                                  -258381;4;0;false;false;;;;;;
                                  -258385;4;0;false;false;127;127;159;;;
                                  -258389;21;0;false;false;63;95;191;;;
                                  -258410;1;0;false;false;;;;;;
                                  -258411;1;0;false;false;127;127;159;;;
                                  -258412;1;0;false;false;;;;;;
                                  -258413;2;0;false;false;63;95;191;;;
                                  -258415;1;0;false;false;;;;;;
                                  -258416;3;0;false;false;63;95;191;;;
                                  -258419;1;0;false;false;;;;;;
                                  -258420;8;0;false;false;63;95;191;;;
                                  -258428;1;0;false;false;;;;;;
                                  -258429;3;0;false;false;63;95;191;;;
                                  -258432;1;0;false;false;;;;;;
                                  -258433;4;0;false;false;63;95;191;;;
                                  -258437;1;0;false;false;;;;;;
                                  -258438;8;0;false;false;63;95;191;;;
                                  -258446;5;0;false;false;127;127;159;;;
                                  -258451;3;0;false;false;;;;;;
                                  -258454;1;0;false;false;63;95;191;;;
                                  -258455;4;0;false;false;;;;;;
                                  -258459;4;0;false;false;127;127;159;;;
                                  -258463;27;0;false;false;63;95;191;;;
                                  -258490;1;0;false;false;;;;;;
                                  -258491;1;0;false;false;127;127;159;;;
                                  -258492;1;0;false;false;;;;;;
                                  -258493;2;0;false;false;63;95;191;;;
                                  -258495;1;0;false;false;;;;;;
                                  -258496;3;0;false;false;63;95;191;;;
                                  -258499;1;0;false;false;;;;;;
                                  -258500;6;0;false;false;63;95;191;;;
                                  -258506;1;0;false;false;;;;;;
                                  -258507;4;0;false;false;63;95;191;;;
                                  -258511;1;0;false;false;;;;;;
                                  -258512;3;0;false;false;63;95;191;;;
                                  -258515;1;0;false;false;;;;;;
                                  -258516;6;0;false;false;63;95;191;;;
                                  -258522;1;0;false;false;;;;;;
                                  -258523;4;0;false;false;63;95;191;;;
                                  -258527;1;0;false;false;;;;;;
                                  -258528;7;0;false;false;63;95;191;;;
                                  -258535;1;0;false;false;;;;;;
                                  -258536;3;0;false;false;63;95;191;;;
                                  -258539;1;0;false;false;;;;;;
                                  -258540;8;0;false;false;63;95;191;;;
                                  -258548;5;0;false;false;127;127;159;;;
                                  -258553;3;0;false;false;;;;;;
                                  -258556;1;0;false;false;63;95;191;;;
                                  -258557;1;0;false;false;;;;;;
                                  -258558;5;0;false;false;127;127;159;;;
                                  -258563;3;0;false;false;;;;;;
                                  -258566;2;0;false;false;63;95;191;;;
                                  -258568;2;0;false;false;;;;;;
                                  -258570;6;1;false;false;127;0;85;;;
                                  -258576;1;0;false;false;;;;;;
                                  -258577;4;1;false;false;127;0;85;;;
                                  -258581;1;0;false;false;;;;;;
                                  -258582;12;0;false;false;0;0;0;;;
                                  -258594;3;1;false;false;127;0;85;;;
                                  -258597;1;0;false;false;;;;;;
                                  -258598;9;0;false;false;0;0;0;;;
                                  -258607;1;0;false;false;;;;;;
                                  -258608;1;0;false;false;0;0;0;;;
                                  -258609;3;0;false;false;;;;;;
                                  -258612;14;0;false;false;0;0;0;;;
                                  -258626;3;0;false;false;;;;;;
                                  -258629;3;1;false;false;127;0;85;;;
                                  -258632;1;0;false;false;;;;;;
                                  -258633;9;0;false;false;0;0;0;;;
                                  -258642;1;0;false;false;;;;;;
                                  -258643;1;0;false;false;0;0;0;;;
                                  -258644;1;0;false;false;;;;;;
                                  -258645;30;0;false;false;0;0;0;;;
                                  -258675;3;0;false;false;;;;;;
                                  -258678;3;1;false;false;127;0;85;;;
                                  -258681;1;0;false;false;;;;;;
                                  -258682;8;0;false;false;0;0;0;;;
                                  -258690;1;0;false;false;;;;;;
                                  -258691;1;0;false;false;0;0;0;;;
                                  -258692;1;0;false;false;;;;;;
                                  -258693;11;0;false;false;0;0;0;;;
                                  -258704;1;0;false;false;;;;;;
                                  -258705;19;0;false;false;0;0;0;;;
                                  -258724;1;0;false;false;;;;;;
                                  -258725;22;0;false;false;0;0;0;;;
                                  -258747;6;0;false;false;;;;;;
                                  -258753;2;1;false;false;127;0;85;;;
                                  -258755;1;0;false;false;;;;;;
                                  -258756;15;0;false;false;0;0;0;;;
                                  -258771;1;0;false;false;;;;;;
                                  -258772;2;0;false;false;0;0;0;;;
                                  -258774;1;0;false;false;;;;;;
                                  -258775;2;0;false;false;0;0;0;;;
                                  -258777;1;0;false;false;;;;;;
                                  -258778;1;0;false;false;0;0;0;;;
                                  -258779;4;0;false;false;;;;;;
                                  -258783;6;1;false;false;127;0;85;;;
                                  -258789;1;0;false;false;0;0;0;;;
                                  -258790;3;0;false;false;;;;;;
                                  -258793;1;0;false;false;0;0;0;;;
                                  -258794;4;0;false;false;;;;;;
                                  -258798;2;1;false;false;127;0;85;;;
                                  -258800;1;0;false;false;;;;;;
                                  -258801;9;0;false;false;0;0;0;;;
                                  -258810;1;0;false;false;;;;;;
                                  -258811;1;0;false;false;0;0;0;;;
                                  -258812;1;0;false;false;;;;;;
                                  -258813;2;0;false;false;0;0;0;;;
                                  -258815;1;0;false;false;;;;;;
                                  -258816;1;0;false;false;0;0;0;;;
                                  -258817;4;0;false;false;;;;;;
                                  -258821;8;0;false;false;0;0;0;;;
                                  -258829;1;0;false;false;;;;;;
                                  -258830;1;0;false;false;0;0;0;;;
                                  -258831;1;0;false;false;;;;;;
                                  -258832;2;0;false;false;0;0;0;;;
                                  -258834;3;0;false;false;;;;;;
                                  -258837;1;0;false;false;0;0;0;;;
                                  -258838;3;0;false;false;;;;;;
                                  -258841;4;1;false;false;127;0;85;;;
                                  -258845;4;0;false;false;;;;;;
                                  -258849;2;1;false;false;127;0;85;;;
                                  -258851;1;0;false;false;;;;;;
                                  -258852;9;0;false;false;0;0;0;;;
                                  -258861;1;0;false;false;;;;;;
                                  -258862;1;0;false;false;0;0;0;;;
                                  -258863;1;0;false;false;;;;;;
                                  -258864;9;0;false;false;0;0;0;;;
                                  -258873;1;0;false;false;;;;;;
                                  -258874;1;0;false;false;0;0;0;;;
                                  -258875;1;0;false;false;;;;;;
                                  -258876;9;0;false;false;0;0;0;;;
                                  -258885;1;0;false;false;;;;;;
                                  -258886;1;0;false;false;0;0;0;;;
                                  -258887;4;0;false;false;;;;;;
                                  -258891;8;0;false;false;0;0;0;;;
                                  -258899;1;0;false;false;;;;;;
                                  -258900;1;0;false;false;0;0;0;;;
                                  -258901;1;0;false;false;;;;;;
                                  -258902;9;0;false;false;0;0;0;;;
                                  -258911;1;0;false;false;;;;;;
                                  -258912;1;0;false;false;0;0;0;;;
                                  -258913;1;0;false;false;;;;;;
                                  -258914;9;0;false;false;0;0;0;;;
                                  -258923;3;0;false;false;;;;;;
                                  -258926;1;0;false;false;0;0;0;;;
                                  -258927;3;0;false;false;;;;;;
                                  -258930;2;1;false;false;127;0;85;;;
                                  -258932;1;0;false;false;;;;;;
                                  -258933;10;0;false;false;0;0;0;;;
                                  -258943;1;0;false;false;;;;;;
                                  -258944;1;0;false;false;0;0;0;;;
                                  -258945;4;0;false;false;;;;;;
                                  -258949;3;1;false;false;127;0;85;;;
                                  -258952;1;0;false;false;;;;;;
                                  -258953;17;0;false;false;0;0;0;;;
                                  -258970;1;0;false;false;;;;;;
                                  -258971;1;0;false;false;0;0;0;;;
                                  -258972;1;0;false;false;;;;;;
                                  -258973;41;0;false;false;0;0;0;;;
                                  -259014;4;0;false;false;;;;;;
                                  -259018;8;0;false;false;0;0;0;;;
                                  -259026;1;0;false;false;;;;;;
                                  -259027;1;0;false;false;0;0;0;;;
                                  -259028;1;0;false;false;;;;;;
                                  -259029;43;0;false;false;0;0;0;;;
                                  -259072;3;0;false;false;;;;;;
                                  -259075;1;0;false;false;0;0;0;;;
                                  -259076;3;0;false;false;;;;;;
                                  -259079;32;0;false;false;0;0;0;;;
                                  -259111;1;0;false;false;;;;;;
                                  -259112;1;0;false;false;0;0;0;;;
                                  -259113;1;0;false;false;;;;;;
                                  -259114;23;0;false;false;0;0;0;;;
                                  -259137;1;0;false;false;;;;;;
                                  -259138;4;1;false;false;127;0;85;;;
                                  -259142;2;0;false;false;0;0;0;;;
                                  -259144;2;0;false;false;;;;;;
                                  -259146;1;0;false;false;0;0;0;;;
                                  -259147;2;0;false;false;;;;;;
                                  -259149;3;0;false;false;63;95;191;;;
                                  -259152;3;0;false;false;;;;;;
                                  -259155;1;0;false;false;63;95;191;;;
                                  -259156;1;0;false;false;;;;;;
                                  -259157;4;0;false;false;63;95;191;;;
                                  -259161;1;0;false;false;;;;;;
                                  -259162;3;0;false;false;63;95;191;;;
                                  -259165;1;0;false;false;;;;;;
                                  -259166;3;0;false;false;63;95;191;;;
                                  -259169;1;0;false;false;;;;;;
                                  -259170;5;0;false;false;63;95;191;;;
                                  -259175;1;0;false;false;;;;;;
                                  -259176;7;0;false;false;63;95;191;;;
                                  -259183;1;0;false;false;;;;;;
                                  -259184;2;0;false;false;63;95;191;;;
                                  -259186;1;0;false;false;;;;;;
                                  -259187;7;0;false;false;63;95;191;;;
                                  -259194;1;0;false;false;;;;;;
                                  -259195;2;0;false;false;63;95;191;;;
                                  -259197;1;0;false;false;;;;;;
                                  -259198;5;0;false;false;63;95;191;;;
                                  -259203;1;0;false;false;;;;;;
                                  -259204;2;0;false;false;63;95;191;;;
                                  -259206;1;0;false;false;;;;;;
                                  -259207;2;0;false;false;63;95;191;;;
                                  -259209;1;0;false;false;;;;;;
                                  -259210;4;0;false;false;63;95;191;;;
                                  -259214;1;0;false;false;;;;;;
                                  -259215;4;0;false;false;63;95;191;;;
                                  -259219;3;0;false;false;;;;;;
                                  -259222;1;0;false;false;63;95;191;;;
                                  -259223;1;0;false;false;;;;;;
                                  -259224;3;0;false;false;127;127;159;;;
                                  -259227;3;0;false;false;;;;;;
                                  -259230;1;0;false;false;63;95;191;;;
                                  -259231;1;0;false;false;;;;;;
                                  -259232;3;0;false;false;63;95;191;;;
                                  -259235;1;0;false;false;;;;;;
                                  -259236;3;0;false;false;63;95;191;;;
                                  -259239;1;0;false;false;;;;;;
                                  -259240;5;0;false;false;63;95;191;;;
                                  -259245;1;0;false;false;;;;;;
                                  -259246;6;0;false;false;63;95;191;;;
                                  -259252;1;0;false;false;;;;;;
                                  -259253;2;0;false;false;63;95;191;;;
                                  -259255;1;0;false;false;;;;;;
                                  -259256;3;0;false;false;63;95;191;;;
                                  -259259;1;0;false;false;;;;;;
                                  -259260;8;0;false;false;63;95;191;;;
                                  -259268;1;0;false;false;;;;;;
                                  -259269;5;0;false;false;63;95;191;;;
                                  -259274;1;0;false;false;;;;;;
                                  -259275;6;0;false;false;63;95;191;;;
                                  -259281;1;0;false;false;;;;;;
                                  -259282;2;0;false;false;63;95;191;;;
                                  -259284;1;0;false;false;;;;;;
                                  -259285;3;0;false;false;63;95;191;;;
                                  -259288;1;0;false;false;;;;;;
                                  -259289;7;0;false;false;63;95;191;;;
                                  -259296;1;0;false;false;;;;;;
                                  -259297;3;0;false;false;63;95;191;;;
                                  -259300;3;0;false;false;;;;;;
                                  -259303;1;0;false;false;63;95;191;;;
                                  -259304;1;0;false;false;;;;;;
                                  -259305;6;0;false;false;63;95;191;;;
                                  -259311;1;0;false;false;;;;;;
                                  -259312;2;0;false;false;63;95;191;;;
                                  -259314;1;0;false;false;;;;;;
                                  -259315;8;0;false;false;63;95;191;;;
                                  -259323;1;0;false;false;;;;;;
                                  -259324;2;0;false;false;63;95;191;;;
                                  -259326;1;0;false;false;;;;;;
                                  -259327;4;0;false;false;63;95;191;;;
                                  -259331;1;0;false;false;;;;;;
                                  -259332;3;0;false;false;63;95;191;;;
                                  -259335;1;0;false;false;;;;;;
                                  -259336;5;0;false;false;63;95;191;;;
                                  -259341;1;0;false;false;;;;;;
                                  -259342;5;0;false;false;63;95;191;;;
                                  -259347;1;0;false;false;;;;;;
                                  -259348;8;0;false;false;63;95;191;;;
                                  -259356;1;0;false;false;;;;;;
                                  -259357;2;0;false;false;63;95;191;;;
                                  -259359;1;0;false;false;;;;;;
                                  -259360;2;0;false;false;63;95;191;;;
                                  -259362;1;0;false;false;;;;;;
                                  -259363;3;0;false;false;63;95;191;;;
                                  -259366;1;0;false;false;;;;;;
                                  -259367;4;0;false;false;63;95;191;;;
                                  -259371;3;0;false;false;;;;;;
                                  -259374;1;0;false;false;63;95;191;;;
                                  -259375;1;0;false;false;;;;;;
                                  -259376;3;0;false;false;63;95;191;;;
                                  -259379;1;0;false;false;;;;;;
                                  -259380;3;0;false;false;63;95;191;;;
                                  -259383;1;0;false;false;;;;;;
                                  -259384;5;0;false;false;63;95;191;;;
                                  -259389;1;0;false;false;;;;;;
                                  -259390;2;0;false;false;63;95;191;;;
                                  -259392;1;0;false;false;;;;;;
                                  -259393;8;0;false;false;63;95;191;;;
                                  -259401;1;0;false;false;;;;;;
                                  -259402;2;0;false;false;63;95;191;;;
                                  -259404;1;0;false;false;;;;;;
                                  -259405;3;0;false;false;63;95;191;;;
                                  -259408;1;0;false;false;;;;;;
                                  -259409;13;0;false;false;63;95;191;;;
                                  -259422;1;0;false;false;;;;;;
                                  -259423;3;0;false;false;63;95;191;;;
                                  -259426;1;0;false;false;;;;;;
                                  -259427;5;0;false;false;63;95;191;;;
                                  -259432;3;0;false;false;;;;;;
                                  -259435;1;0;false;false;63;95;191;;;
                                  -259436;1;0;false;false;;;;;;
                                  -259437;5;0;false;false;63;95;191;;;
                                  -259442;1;0;false;false;;;;;;
                                  -259443;3;0;false;false;63;95;191;;;
                                  -259446;1;0;false;false;;;;;;
                                  -259447;3;0;false;false;63;95;191;;;
                                  -259450;1;0;false;false;;;;;;
                                  -259451;5;0;false;false;63;95;191;;;
                                  -259456;1;0;false;false;;;;;;
                                  -259457;2;0;false;false;63;95;191;;;
                                  -259459;1;0;false;false;;;;;;
                                  -259460;5;0;false;false;63;95;191;;;
                                  -259465;1;0;false;false;;;;;;
                                  -259466;2;0;false;false;63;95;191;;;
                                  -259468;1;0;false;false;;;;;;
                                  -259469;1;0;false;false;63;95;191;;;
                                  -259470;1;0;false;false;;;;;;
                                  -259471;4;0;false;false;63;95;191;;;
                                  -259475;1;0;false;false;;;;;;
                                  -259476;3;0;false;false;63;95;191;;;
                                  -259479;1;0;false;false;;;;;;
                                  -259480;4;0;false;false;63;95;191;;;
                                  -259484;1;0;false;false;;;;;;
                                  -259485;2;0;false;false;63;95;191;;;
                                  -259487;1;0;false;false;;;;;;
                                  -259488;3;0;false;false;63;95;191;;;
                                  -259491;1;0;false;false;;;;;;
                                  -259492;2;0;false;false;63;95;191;;;
                                  -259494;1;0;false;false;;;;;;
                                  -259495;3;0;false;false;63;95;191;;;
                                  -259498;1;0;false;false;;;;;;
                                  -259499;7;0;false;false;63;95;191;;;
                                  -259506;3;0;false;false;;;;;;
                                  -259509;1;0;false;false;63;95;191;;;
                                  -259510;1;0;false;false;;;;;;
                                  -259511;4;0;false;false;127;127;159;;;
                                  -259515;3;0;false;false;;;;;;
                                  -259518;1;0;false;false;63;95;191;;;
                                  -259519;3;0;false;false;;;;;;
                                  -259522;1;0;false;false;63;95;191;;;
                                  -259523;1;0;false;false;;;;;;
                                  -259524;7;1;false;false;127;159;191;;;
                                  -259531;5;0;false;false;63;95;191;;;
                                  -259536;1;0;false;false;;;;;;
                                  -259537;3;0;false;false;63;95;191;;;
                                  -259540;1;0;false;false;;;;;;
                                  -259541;3;0;false;false;63;95;191;;;
                                  -259544;1;0;false;false;;;;;;
                                  -259545;5;0;false;false;63;95;191;;;
                                  -259550;1;0;false;false;;;;;;
                                  -259551;7;0;false;false;63;95;191;;;
                                  -259558;1;0;false;false;;;;;;
                                  -259559;4;0;false;false;63;95;191;;;
                                  -259563;1;0;false;false;;;;;;
                                  -259564;2;0;false;false;63;95;191;;;
                                  -259566;1;0;false;false;;;;;;
                                  -259567;7;0;false;false;63;95;191;;;
                                  -259574;1;0;false;false;;;;;;
                                  -259575;1;0;false;false;63;95;191;;;
                                  -259576;1;0;false;false;;;;;;
                                  -259577;3;0;false;false;63;95;191;;;
                                  -259580;4;0;false;false;;;;;;
                                  -259584;1;0;false;false;63;95;191;;;
                                  -259585;2;0;false;false;;;;;;
                                  -259587;15;0;false;false;63;95;191;;;
                                  -259602;1;0;false;false;;;;;;
                                  -259603;1;0;false;false;127;127;159;;;
                                  -259604;1;0;false;false;;;;;;
                                  -259605;7;0;false;false;63;95;191;;;
                                  -259612;1;0;false;false;;;;;;
                                  -259613;5;0;false;false;63;95;191;;;
                                  -259618;1;0;false;false;;;;;;
                                  -259619;3;0;false;false;63;95;191;;;
                                  -259622;1;0;false;false;;;;;;
                                  -259623;5;0;false;false;63;95;191;;;
                                  -259628;1;0;false;false;;;;;;
                                  -259629;1;0;false;false;63;95;191;;;
                                  -259630;1;0;false;false;;;;;;
                                  -259631;17;0;false;false;63;95;191;;;
                                  -259648;1;0;false;false;;;;;;
                                  -259649;2;0;false;false;63;95;191;;;
                                  -259651;1;0;false;false;;;;;;
                                  -259652;3;0;false;false;63;95;191;;;
                                  -259655;3;0;false;false;;;;;;
                                  -259658;1;0;false;false;63;95;191;;;
                                  -259659;2;0;false;false;;;;;;
                                  -259661;2;0;false;false;63;95;191;;;
                                  -259663;1;0;false;false;;;;;;
                                  -259664;5;0;false;false;63;95;191;;;
                                  -259669;1;0;false;false;;;;;;
                                  -259670;6;0;false;false;63;95;191;;;
                                  -259676;1;0;false;false;;;;;;
                                  -259677;4;0;false;false;63;95;191;;;
                                  -259681;1;0;false;false;;;;;;
                                  -259682;2;0;false;false;63;95;191;;;
                                  -259684;1;0;false;false;;;;;;
                                  -259685;8;0;false;false;63;95;191;;;
                                  -259693;1;0;false;false;;;;;;
                                  -259694;12;0;false;false;63;95;191;;;
                                  -259706;3;0;false;false;;;;;;
                                  -259709;1;0;false;false;63;95;191;;;
                                  -259710;1;0;false;false;;;;;;
                                  -259711;11;1;false;false;127;159;191;;;
                                  -259722;12;0;false;false;63;95;191;;;
                                  -259734;1;0;false;false;;;;;;
                                  -259735;4;0;false;false;127;127;159;;;
                                  -259739;3;0;false;false;;;;;;
                                  -259742;1;0;false;false;63;95;191;;;
                                  -259743;4;0;false;false;;;;;;
                                  -259747;4;0;false;false;127;127;159;;;
                                  -259751;21;0;false;false;63;95;191;;;
                                  -259772;1;0;false;false;;;;;;
                                  -259773;1;0;false;false;127;127;159;;;
                                  -259774;1;0;false;false;;;;;;
                                  -259775;2;0;false;false;63;95;191;;;
                                  -259777;1;0;false;false;;;;;;
                                  -259778;3;0;false;false;63;95;191;;;
                                  -259781;1;0;false;false;;;;;;
                                  -259782;8;0;false;false;63;95;191;;;
                                  -259790;1;0;false;false;;;;;;
                                  -259791;3;0;false;false;63;95;191;;;
                                  -259794;1;0;false;false;;;;;;
                                  -259795;4;0;false;false;63;95;191;;;
                                  -259799;1;0;false;false;;;;;;
                                  -259800;8;0;false;false;63;95;191;;;
                                  -259808;5;0;false;false;127;127;159;;;
                                  -259813;3;0;false;false;;;;;;
                                  -259816;1;0;false;false;63;95;191;;;
                                  -259817;4;0;false;false;;;;;;
                                  -259821;4;0;false;false;127;127;159;;;
                                  -259825;27;0;false;false;63;95;191;;;
                                  -259852;1;0;false;false;;;;;;
                                  -259853;1;0;false;false;127;127;159;;;
                                  -259854;1;0;false;false;;;;;;
                                  -259855;2;0;false;false;63;95;191;;;
                                  -259857;1;0;false;false;;;;;;
                                  -259858;3;0;false;false;63;95;191;;;
                                  -259861;1;0;false;false;;;;;;
                                  -259862;6;0;false;false;63;95;191;;;
                                  -259868;1;0;false;false;;;;;;
                                  -259869;4;0;false;false;63;95;191;;;
                                  -259873;1;0;false;false;;;;;;
                                  -259874;3;0;false;false;63;95;191;;;
                                  -259877;1;0;false;false;;;;;;
                                  -259878;6;0;false;false;63;95;191;;;
                                  -259884;1;0;false;false;;;;;;
                                  -259885;4;0;false;false;63;95;191;;;
                                  -259889;1;0;false;false;;;;;;
                                  -259890;7;0;false;false;63;95;191;;;
                                  -259897;1;0;false;false;;;;;;
                                  -259898;3;0;false;false;63;95;191;;;
                                  -259901;1;0;false;false;;;;;;
                                  -259902;8;0;false;false;63;95;191;;;
                                  -259910;5;0;false;false;127;127;159;;;
                                  -259915;3;0;false;false;;;;;;
                                  -259918;1;0;false;false;63;95;191;;;
                                  -259919;1;0;false;false;;;;;;
                                  -259920;5;0;false;false;127;127;159;;;
                                  -259925;3;0;false;false;;;;;;
                                  -259928;1;0;false;false;63;95;191;;;
                                  -259929;1;0;false;false;;;;;;
                                  -259930;7;1;false;false;127;159;191;;;
                                  -259937;3;0;false;false;63;95;191;;;
                                  -259940;3;0;false;false;;;;;;
                                  -259943;2;0;false;false;63;95;191;;;
                                  -259945;2;0;false;false;;;;;;
                                  -259947;6;1;false;false;127;0;85;;;
                                  -259953;1;0;false;false;;;;;;
                                  -259954;4;1;false;false;127;0;85;;;
                                  -259958;1;0;false;false;;;;;;
                                  -259959;12;0;false;false;0;0;0;;;
                                  -259971;3;1;false;false;127;0;85;;;
                                  -259974;1;0;false;false;;;;;;
                                  -259975;6;0;false;false;0;0;0;;;
                                  -259981;1;0;false;false;;;;;;
                                  -259982;1;0;false;false;0;0;0;;;
                                  -259983;3;0;false;false;;;;;;
                                  -259986;14;0;false;false;0;0;0;;;
                                  -260000;3;0;false;false;;;;;;
                                  -260003;3;1;false;false;127;0;85;;;
                                  -260006;1;0;false;false;;;;;;
                                  -260007;9;0;false;false;0;0;0;;;
                                  -260016;1;0;false;false;;;;;;
                                  -260017;24;0;false;false;0;0;0;;;
                                  -260041;3;0;false;false;;;;;;
                                  -260044;3;1;false;false;127;0;85;;;
                                  -260047;1;0;false;false;;;;;;
                                  -260048;6;0;false;false;0;0;0;;;
                                  -260054;1;0;false;false;;;;;;
                                  -260055;1;0;false;false;0;0;0;;;
                                  -260056;1;0;false;false;;;;;;
                                  -260057;23;0;false;false;0;0;0;;;
                                  -260080;3;0;false;false;;;;;;
                                  -260083;3;1;false;false;127;0;85;;;
                                  -260086;1;0;false;false;;;;;;
                                  -260087;11;0;false;false;0;0;0;;;
                                  -260098;1;0;false;false;;;;;;
                                  -260099;1;0;false;false;0;0;0;;;
                                  -260100;1;0;false;false;;;;;;
                                  -260101;11;0;false;false;0;0;0;;;
                                  -260112;1;0;false;false;;;;;;
                                  -260113;9;0;false;false;0;0;0;;;
                                  -260122;1;0;false;false;;;;;;
                                  -260123;1;0;false;false;0;0;0;;;
                                  -260124;1;0;false;false;;;;;;
                                  -260125;22;0;false;false;0;0;0;;;
                                  -260147;1;0;false;false;;;;;;
                                  -260148;1;0;false;false;0;0;0;;;
                                  -260149;1;0;false;false;;;;;;
                                  -260150;8;0;false;false;0;0;0;;;
                                  -260158;6;0;false;false;;;;;;
                                  -260164;2;1;false;false;127;0;85;;;
                                  -260166;1;0;false;false;;;;;;
                                  -260167;15;0;false;false;0;0;0;;;
                                  -260182;1;0;false;false;;;;;;
                                  -260183;2;0;false;false;0;0;0;;;
                                  -260185;1;0;false;false;;;;;;
                                  -260186;2;0;false;false;0;0;0;;;
                                  -260188;1;0;false;false;;;;;;
                                  -260189;1;0;false;false;0;0;0;;;
                                  -260190;4;0;false;false;;;;;;
                                  -260194;6;1;false;false;127;0;85;;;
                                  -260200;1;0;false;false;0;0;0;;;
                                  -260201;3;0;false;false;;;;;;
                                  -260204;1;0;false;false;0;0;0;;;
                                  -260205;4;0;false;false;;;;;;
                                  -260209;2;1;false;false;127;0;85;;;
                                  -260211;1;0;false;false;;;;;;
                                  -260212;6;0;false;false;0;0;0;;;
                                  -260218;1;0;false;false;;;;;;
                                  -260219;1;0;false;false;0;0;0;;;
                                  -260220;1;0;false;false;;;;;;
                                  -260221;2;0;false;false;0;0;0;;;
                                  -260223;1;0;false;false;;;;;;
                                  -260224;1;0;false;false;0;0;0;;;
                                  -260225;4;0;false;false;;;;;;
                                  -260229;5;0;false;false;0;0;0;;;
                                  -260234;1;0;false;false;;;;;;
                                  -260235;1;0;false;false;0;0;0;;;
                                  -260236;1;0;false;false;;;;;;
                                  -260237;2;0;false;false;0;0;0;;;
                                  -260239;3;0;false;false;;;;;;
                                  -260242;1;0;false;false;0;0;0;;;
                                  -260243;3;0;false;false;;;;;;
                                  -260246;4;1;false;false;127;0;85;;;
                                  -260250;4;0;false;false;;;;;;
                                  -260254;2;1;false;false;127;0;85;;;
                                  -260256;1;0;false;false;;;;;;
                                  -260257;6;0;false;false;0;0;0;;;
                                  -260263;1;0;false;false;;;;;;
                                  -260264;1;0;false;false;0;0;0;;;
                                  -260265;1;0;false;false;;;;;;
                                  -260266;12;0;false;false;0;0;0;;;
                                  -260278;1;0;false;false;;;;;;
                                  -260279;1;0;false;false;0;0;0;;;
                                  -260280;4;0;false;false;;;;;;
                                  -260284;5;0;false;false;0;0;0;;;
                                  -260289;1;0;false;false;;;;;;
                                  -260290;1;0;false;false;0;0;0;;;
                                  -260291;1;0;false;false;;;;;;
                                  -260292;12;0;false;false;0;0;0;;;
                                  -260304;3;0;false;false;;;;;;
                                  -260307;1;0;false;false;0;0;0;;;
                                  -260308;3;0;false;false;;;;;;
                                  -260311;30;0;false;false;0;0;0;;;
                                  -260341;1;0;false;false;;;;;;
                                  -260342;4;1;false;false;127;0;85;;;
                                  -260346;2;0;false;false;0;0;0;;;
                                  -260348;2;0;false;false;;;;;;
                                  -260350;1;0;false;false;0;0;0;;;
                                  -260351;2;0;false;false;;;;;;
                                  -260353;3;0;false;false;63;95;191;;;
                                  -260356;3;0;false;false;;;;;;
                                  -260359;1;0;false;false;63;95;191;;;
                                  -260360;1;0;false;false;;;;;;
                                  -260361;7;0;false;false;63;95;191;;;
                                  -260368;1;0;false;false;;;;;;
                                  -260369;3;0;false;false;63;95;191;;;
                                  -260372;1;0;false;false;;;;;;
                                  -260373;6;0;false;false;63;95;191;;;
                                  -260379;1;0;false;false;;;;;;
                                  -260380;11;0;false;false;63;95;191;;;
                                  -260391;3;0;false;false;;;;;;
                                  -260394;1;0;false;false;63;95;191;;;
                                  -260395;1;0;false;false;;;;;;
                                  -260396;3;0;false;false;127;127;159;;;
                                  -260399;3;0;false;false;;;;;;
                                  -260402;1;0;false;false;63;95;191;;;
                                  -260403;3;0;false;false;;;;;;
                                  -260406;1;0;false;false;63;95;191;;;
                                  -260407;1;0;false;false;;;;;;
                                  -260408;7;1;false;false;127;159;191;;;
                                  -260415;11;0;false;false;63;95;191;;;
                                  -260426;1;0;false;false;;;;;;
                                  -260427;3;0;false;false;63;95;191;;;
                                  -260430;1;0;false;false;;;;;;
                                  -260431;3;0;false;false;63;95;191;;;
                                  -260434;1;0;false;false;;;;;;
                                  -260435;8;0;false;false;63;95;191;;;
                                  -260443;1;0;false;false;;;;;;
                                  -260444;6;0;false;false;63;95;191;;;
                                  -260450;1;0;false;false;;;;;;
                                  -260451;6;0;false;false;63;95;191;;;
                                  -260457;3;0;false;false;;;;;;
                                  -260460;1;0;false;false;63;95;191;;;
                                  -260461;1;0;false;false;;;;;;
                                  -260462;7;1;false;false;127;159;191;;;
                                  -260469;15;0;false;false;63;95;191;;;
                                  -260484;4;0;false;false;;;;;;
                                  -260488;1;0;false;false;63;95;191;;;
                                  -260489;2;0;false;false;;;;;;
                                  -260491;5;0;false;false;63;95;191;;;
                                  -260496;1;0;false;false;;;;;;
                                  -260497;3;0;false;false;63;95;191;;;
                                  -260500;1;0;false;false;;;;;;
                                  -260501;6;0;false;false;63;95;191;;;
                                  -260507;1;0;false;false;;;;;;
                                  -260508;5;0;false;false;63;95;191;;;
                                  -260513;1;0;false;false;;;;;;
                                  -260514;4;0;false;false;63;95;191;;;
                                  -260518;1;0;false;false;;;;;;
                                  -260519;2;0;false;false;63;95;191;;;
                                  -260521;1;0;false;false;;;;;;
                                  -260522;5;0;false;false;63;95;191;;;
                                  -260527;1;0;false;false;;;;;;
                                  -260528;2;0;false;false;63;95;191;;;
                                  -260530;1;0;false;false;;;;;;
                                  -260531;7;0;false;false;63;95;191;;;
                                  -260538;1;0;false;false;;;;;;
                                  -260539;3;0;false;false;63;95;191;;;
                                  -260542;1;0;false;false;;;;;;
                                  -260543;3;0;false;false;63;95;191;;;
                                  -260546;1;0;false;false;;;;;;
                                  -260547;6;0;false;false;63;95;191;;;
                                  -260553;1;0;false;false;;;;;;
                                  -260554;7;0;false;false;63;95;191;;;
                                  -260561;3;0;false;false;;;;;;
                                  -260564;1;0;false;false;63;95;191;;;
                                  -260565;2;0;false;false;;;;;;
                                  -260567;5;0;false;false;63;95;191;;;
                                  -260572;1;0;false;false;;;;;;
                                  -260573;1;0;false;false;63;95;191;;;
                                  -260574;1;0;false;false;;;;;;
                                  -260575;3;0;false;false;63;95;191;;;
                                  -260578;1;0;false;false;;;;;;
                                  -260579;6;0;false;false;63;95;191;;;
                                  -260585;1;0;false;false;;;;;;
                                  -260586;5;0;false;false;63;95;191;;;
                                  -260591;1;0;false;false;;;;;;
                                  -260592;4;0;false;false;63;95;191;;;
                                  -260596;1;0;false;false;;;;;;
                                  -260597;3;0;false;false;63;95;191;;;
                                  -260600;1;0;false;false;;;;;;
                                  -260601;2;0;false;false;63;95;191;;;
                                  -260603;1;0;false;false;;;;;;
                                  -260604;5;0;false;false;63;95;191;;;
                                  -260609;3;0;false;false;;;;;;
                                  -260612;1;0;false;false;63;95;191;;;
                                  -260613;1;0;false;false;;;;;;
                                  -260614;8;1;false;false;127;159;191;;;
                                  -260622;3;0;false;false;;;;;;
                                  -260625;1;0;false;false;63;95;191;;;
                                  -260626;1;0;false;false;;;;;;
                                  -260627;8;0;false;false;63;95;191;;;
                                  -260635;1;0;false;false;;;;;;
                                  -260636;6;0;false;false;63;95;191;;;
                                  -260642;1;0;false;false;;;;;;
                                  -260643;3;0;false;false;63;95;191;;;
                                  -260646;1;0;false;false;;;;;;
                                  -260647;8;0;false;false;63;95;191;;;
                                  -260655;4;0;false;false;;;;;;
                                  -260659;1;0;false;false;63;95;191;;;
                                  -260660;1;0;false;false;;;;;;
                                  -260661;9;0;false;false;63;95;191;;;
                                  -260670;1;0;false;false;;;;;;
                                  -260671;6;0;false;false;63;95;191;;;
                                  -260677;1;0;false;false;;;;;;
                                  -260678;3;0;false;false;63;95;191;;;
                                  -260681;1;0;false;false;;;;;;
                                  -260682;3;0;false;false;63;95;191;;;
                                  -260685;1;0;false;false;;;;;;
                                  -260686;9;0;false;false;63;95;191;;;
                                  -260695;1;0;false;false;;;;;;
                                  -260696;3;0;false;false;63;95;191;;;
                                  -260699;1;0;false;false;;;;;;
                                  -260700;5;0;false;false;63;95;191;;;
                                  -260705;1;0;false;false;;;;;;
                                  -260706;6;0;false;false;63;95;191;;;
                                  -260712;1;0;false;false;;;;;;
                                  -260713;2;0;false;false;63;95;191;;;
                                  -260715;1;0;false;false;;;;;;
                                  -260716;3;0;false;false;63;95;191;;;
                                  -260719;1;0;false;false;;;;;;
                                  -260720;6;0;false;false;63;95;191;;;
                                  -260726;3;0;false;false;;;;;;
                                  -260729;2;0;false;false;63;95;191;;;
                                  -260731;2;0;false;false;;;;;;
                                  -260733;7;1;false;false;127;0;85;;;
                                  -260740;1;0;false;false;;;;;;
                                  -260741;24;0;false;false;0;0;0;;;
                                  -260765;3;1;false;false;127;0;85;;;
                                  -260768;1;0;false;false;;;;;;
                                  -260769;12;0;false;false;0;0;0;;;
                                  -260781;1;0;false;false;;;;;;
                                  -260782;7;1;false;false;127;0;85;;;
                                  -260789;1;0;false;false;;;;;;
                                  -260790;16;0;false;false;0;0;0;;;
                                  -260806;1;0;false;false;;;;;;
                                  -260807;1;0;false;false;0;0;0;;;
                                  -260808;3;0;false;false;;;;;;
                                  -260811;9;0;false;false;0;0;0;;;
                                  -260820;1;0;false;false;;;;;;
                                  -260821;11;0;false;false;0;0;0;;;
                                  -260832;3;0;false;false;;;;;;
                                  -260835;9;0;false;false;0;0;0;;;
                                  -260844;1;0;false;false;;;;;;
                                  -260845;11;0;false;false;0;0;0;;;
                                  -260856;1;0;false;false;;;;;;
                                  -260857;1;0;false;false;0;0;0;;;
                                  -260858;1;0;false;false;;;;;;
                                  -260859;17;0;false;false;0;0;0;;;
                                  -260876;6;0;false;false;;;;;;
                                  -260882;2;1;false;false;127;0;85;;;
                                  -260884;1;0;false;false;;;;;;
                                  -260885;12;0;false;false;0;0;0;;;
                                  -260897;1;0;false;false;;;;;;
                                  -260898;2;0;false;false;0;0;0;;;
                                  -260900;1;0;false;false;;;;;;
                                  -260901;21;0;false;false;0;0;0;;;
                                  -260922;1;0;false;false;;;;;;
                                  -260923;1;0;false;false;0;0;0;;;
                                  -260924;4;0;false;false;;;;;;
                                  -260928;6;1;false;false;127;0;85;;;
                                  -260934;1;0;false;false;;;;;;
                                  -260935;5;1;false;false;127;0;85;;;
                                  -260940;1;0;false;false;0;0;0;;;
                                  -260941;3;0;false;false;;;;;;
                                  -260944;1;0;false;false;0;0;0;;;
                                  -260945;3;0;false;false;;;;;;
                                  -260948;2;1;false;false;127;0;85;;;
                                  -260950;1;0;false;false;;;;;;
                                  -260951;12;0;false;false;0;0;0;;;
                                  -260963;1;0;false;false;;;;;;
                                  -260964;2;0;false;false;0;0;0;;;
                                  -260966;1;0;false;false;;;;;;
                                  -260967;4;1;false;false;127;0;85;;;
                                  -260971;1;0;false;false;;;;;;
                                  -260972;2;0;false;false;0;0;0;;;
                                  -260974;1;0;false;false;;;;;;
                                  -260975;16;0;false;false;0;0;0;;;
                                  -260991;1;0;false;false;;;;;;
                                  -260992;1;0;false;false;0;0;0;;;
                                  -260993;4;0;false;false;;;;;;
                                  -260997;38;0;false;false;0;0;0;;;
                                  -261035;3;0;false;false;;;;;;
                                  -261038;1;0;false;false;0;0;0;;;
                                  -261039;3;0;false;false;;;;;;
                                  -261042;10;0;false;false;0;0;0;;;
                                  -261052;1;0;false;false;;;;;;
                                  -261053;1;0;false;false;0;0;0;;;
                                  -261054;1;0;false;false;;;;;;
                                  -261055;16;0;false;false;0;0;0;;;
                                  -261071;3;0;false;false;;;;;;
                                  -261074;7;0;false;false;0;0;0;;;
                                  -261081;4;0;false;false;;;;;;
                                  -261085;2;0;false;false;0;0;0;;;
                                  -261087;1;0;false;false;;;;;;
                                  -261088;2;0;false;false;0;0;0;;;
                                  -261090;10;0;false;false;;;;;;
                                  -261100;21;0;false;false;63;127;95;;;
                                  -261121;2;0;false;false;;;;;;
                                  -261123;2;0;false;false;0;0;0;;;
                                  -261125;1;0;false;false;;;;;;
                                  -261126;11;0;false;false;0;0;0;;;
                                  -261137;1;0;false;false;;;;;;
                                  -261138;1;0;false;false;0;0;0;;;
                                  -261139;1;0;false;false;;;;;;
                                  -261140;21;0;false;false;0;0;0;;;
                                  -261161;1;0;false;false;;;;;;
                                  -261162;16;0;false;false;63;127;95;;;
                                  -261178;2;0;false;false;;;;;;
                                  -261180;17;0;false;false;0;0;0;;;
                                  -261197;1;0;false;false;;;;;;
                                  -261198;18;0;false;false;0;0;0;;;
                                  -261216;1;0;false;false;;;;;;
                                  -261217;4;1;false;false;127;0;85;;;
                                  -261221;2;0;false;false;0;0;0;;;
                                  -261223;5;0;false;false;;;;;;
                                  -261228;20;0;false;false;0;0;0;;;
                                  -261248;1;0;false;false;;;;;;
                                  -261249;1;0;false;false;0;0;0;;;
                                  -261250;1;0;false;false;;;;;;
                                  -261251;12;0;false;false;0;0;0;;;
                                  -261263;3;0;false;false;;;;;;
                                  -261266;20;0;false;false;0;0;0;;;
                                  -261286;3;0;false;false;;;;;;
                                  -261289;3;1;false;false;127;0;85;;;
                                  -261292;1;0;false;false;;;;;;
                                  -261293;10;0;false;false;0;0;0;;;
                                  -261303;1;0;false;false;;;;;;
                                  -261304;1;0;false;false;0;0;0;;;
                                  -261305;1;0;false;false;;;;;;
                                  -261306;8;0;false;false;0;0;0;;;
                                  -261314;3;0;false;false;;;;;;
                                  -261317;19;0;false;false;0;0;0;;;
                                  -261336;3;0;false;false;;;;;;
                                  -261339;48;0;false;false;63;127;95;;;
                                  -261387;1;0;false;false;;;;;;
                                  -261388;7;0;false;false;0;0;0;;;
                                  -261395;1;0;false;false;;;;;;
                                  -261396;1;0;false;false;0;0;0;;;
                                  -261397;1;0;false;false;;;;;;
                                  -261398;11;0;false;false;0;0;0;;;
                                  -261409;3;0;false;false;;;;;;
                                  -261412;6;1;false;false;127;0;85;;;
                                  -261418;1;0;false;false;;;;;;
                                  -261419;4;1;false;false;127;0;85;;;
                                  -261423;1;0;false;false;0;0;0;;;
                                  -261424;2;0;false;false;;;;;;
                                  -261426;1;0;false;false;0;0;0;;;
                                  -261427;2;0;false;false;;;;;;
                                  -261429;3;0;false;false;63;95;191;;;
                                  -261432;3;0;false;false;;;;;;
                                  -261435;1;0;false;false;63;95;191;;;
                                  -261436;1;0;false;false;;;;;;
                                  -261437;7;0;false;false;63;95;191;;;
                                  -261444;1;0;false;false;;;;;;
                                  -261445;3;0;false;false;63;95;191;;;
                                  -261448;1;0;false;false;;;;;;
                                  -261449;9;0;false;false;63;95;191;;;
                                  -261458;1;0;false;false;;;;;;
                                  -261459;8;0;false;false;63;95;191;;;
                                  -261467;1;0;false;false;;;;;;
                                  -261468;4;0;false;false;63;95;191;;;
                                  -261472;1;0;false;false;;;;;;
                                  -261473;5;0;false;false;63;95;191;;;
                                  -261478;3;0;false;false;;;;;;
                                  -261481;1;0;false;false;63;95;191;;;
                                  -261482;1;0;false;false;;;;;;
                                  -261483;3;0;false;false;127;127;159;;;
                                  -261486;3;0;false;false;;;;;;
                                  -261489;1;0;false;false;63;95;191;;;
                                  -261490;4;0;false;false;;;;;;
                                  -261494;1;0;false;false;63;95;191;;;
                                  -261495;1;0;false;false;;;;;;
                                  -261496;7;1;false;false;127;159;191;;;
                                  -261503;1;0;false;false;63;95;191;;;
                                  -261504;1;0;false;false;;;;;;
                                  -261505;3;0;false;false;63;95;191;;;
                                  -261508;1;0;false;false;;;;;;
                                  -261509;1;0;false;false;63;95;191;;;
                                  -261510;1;0;false;false;;;;;;
                                  -261511;10;0;false;false;63;95;191;;;
                                  -261521;1;0;false;false;;;;;;
                                  -261522;4;0;false;false;63;95;191;;;
                                  -261526;1;0;false;false;;;;;;
                                  -261527;6;0;false;false;63;95;191;;;
                                  -261533;1;0;false;false;;;;;;
                                  -261534;2;0;false;false;63;95;191;;;
                                  -261536;1;0;false;false;;;;;;
                                  -261537;4;0;false;false;63;95;191;;;
                                  -261541;1;0;false;false;;;;;;
                                  -261542;8;0;false;false;63;95;191;;;
                                  -261550;3;0;false;false;;;;;;
                                  -261553;1;0;false;false;63;95;191;;;
                                  -261554;1;0;false;false;;;;;;
                                  -261555;7;1;false;false;127;159;191;;;
                                  -261562;4;0;false;false;63;95;191;;;
                                  -261566;1;0;false;false;;;;;;
                                  -261567;3;0;false;false;63;95;191;;;
                                  -261570;1;0;false;false;;;;;;
                                  -261571;4;0;false;false;63;95;191;;;
                                  -261575;1;0;false;false;;;;;;
                                  -261576;4;0;false;false;63;95;191;;;
                                  -261580;1;0;false;false;;;;;;
                                  -261581;6;0;false;false;63;95;191;;;
                                  -261587;1;0;false;false;;;;;;
                                  -261588;2;0;false;false;63;95;191;;;
                                  -261590;1;0;false;false;;;;;;
                                  -261591;4;0;false;false;63;95;191;;;
                                  -261595;1;0;false;false;;;;;;
                                  -261596;8;0;false;false;63;95;191;;;
                                  -261604;1;0;false;false;;;;;;
                                  -261605;8;0;false;false;63;95;191;;;
                                  -261613;1;0;false;false;;;;;;
                                  -261614;2;0;false;false;63;95;191;;;
                                  -261616;1;0;false;false;;;;;;
                                  -261617;3;0;false;false;63;95;191;;;
                                  -261620;3;0;false;false;;;;;;
                                  -261623;1;0;false;false;63;95;191;;;
                                  -261624;1;0;false;false;;;;;;
                                  -261625;5;0;false;false;63;95;191;;;
                                  -261630;1;0;false;false;;;;;;
                                  -261631;4;0;false;false;63;95;191;;;
                                  -261635;1;0;false;false;;;;;;
                                  -261636;2;0;false;false;63;95;191;;;
                                  -261638;1;0;false;false;;;;;;
                                  -261639;3;0;false;false;63;95;191;;;
                                  -261642;1;0;false;false;;;;;;
                                  -261643;9;0;false;false;63;95;191;;;
                                  -261652;3;0;false;false;;;;;;
                                  -261655;1;0;false;false;63;95;191;;;
                                  -261656;1;0;false;false;;;;;;
                                  -261657;8;1;false;false;127;159;191;;;
                                  -261665;3;0;false;false;;;;;;
                                  -261668;1;0;false;false;63;95;191;;;
                                  -261669;1;0;false;false;;;;;;
                                  -261670;8;0;false;false;63;95;191;;;
                                  -261678;1;0;false;false;;;;;;
                                  -261679;6;0;false;false;63;95;191;;;
                                  -261685;1;0;false;false;;;;;;
                                  -261686;3;0;false;false;63;95;191;;;
                                  -261689;1;0;false;false;;;;;;
                                  -261690;8;0;false;false;63;95;191;;;
                                  -261698;1;0;false;false;;;;;;
                                  -261699;2;0;false;false;63;95;191;;;
                                  -261701;1;0;false;false;;;;;;
                                  -261702;4;0;false;false;63;95;191;;;
                                  -261706;1;0;false;false;;;;;;
                                  -261707;3;0;false;false;63;95;191;;;
                                  -261710;1;0;false;false;;;;;;
                                  -261711;9;0;false;false;63;95;191;;;
                                  -261720;1;0;false;false;;;;;;
                                  -261721;8;0;false;false;63;95;191;;;
                                  -261729;1;0;false;false;;;;;;
                                  -261730;8;0;false;false;63;95;191;;;
                                  -261738;4;0;false;false;;;;;;
                                  -261742;1;0;false;false;63;95;191;;;
                                  -261743;1;0;false;false;;;;;;
                                  -261744;9;0;false;false;63;95;191;;;
                                  -261753;1;0;false;false;;;;;;
                                  -261754;9;0;false;false;63;95;191;;;
                                  -261763;1;0;false;false;;;;;;
                                  -261764;8;0;false;false;63;95;191;;;
                                  -261772;1;0;false;false;;;;;;
                                  -261773;2;0;false;false;63;95;191;;;
                                  -261775;1;0;false;false;;;;;;
                                  -261776;7;0;false;false;63;95;191;;;
                                  -261783;1;0;false;false;;;;;;
                                  -261784;8;0;false;false;63;95;191;;;
                                  -261792;1;0;false;false;;;;;;
                                  -261793;3;0;false;false;63;95;191;;;
                                  -261796;1;0;false;false;;;;;;
                                  -261797;6;0;false;false;63;95;191;;;
                                  -261803;1;0;false;false;;;;;;
                                  -261804;3;0;false;false;63;95;191;;;
                                  -261807;4;0;false;false;;;;;;
                                  -261811;1;0;false;false;63;95;191;;;
                                  -261812;1;0;false;false;;;;;;
                                  -261813;3;0;false;false;63;95;191;;;
                                  -261816;1;0;false;false;;;;;;
                                  -261817;9;0;false;false;63;95;191;;;
                                  -261826;5;0;false;false;;;;;;
                                  -261831;2;0;false;false;63;95;191;;;
                                  -261833;2;0;false;false;;;;;;
                                  -261835;7;1;false;false;127;0;85;;;
                                  -261842;1;0;false;false;;;;;;
                                  -261843;13;0;false;false;0;0;0;;;
                                  -261856;3;1;false;false;127;0;85;;;
                                  -261859;1;0;false;false;;;;;;
                                  -261860;2;0;false;false;0;0;0;;;
                                  -261862;1;0;false;false;;;;;;
                                  -261863;3;1;false;false;127;0;85;;;
                                  -261866;1;0;false;false;;;;;;
                                  -261867;5;0;false;false;0;0;0;;;
                                  -261872;1;0;false;false;;;;;;
                                  -261873;1;0;false;false;0;0;0;;;
                                  -261874;3;0;false;false;;;;;;
                                  -261877;3;1;false;false;127;0;85;;;
                                  -261880;1;0;false;false;;;;;;
                                  -261881;15;0;false;false;0;0;0;;;
                                  -261896;1;0;false;false;;;;;;
                                  -261897;1;0;false;false;0;0;0;;;
                                  -261898;1;0;false;false;;;;;;
                                  -261899;21;0;false;false;0;0;0;;;
                                  -261920;1;0;false;false;;;;;;
                                  -261921;1;0;false;false;0;0;0;;;
                                  -261922;1;0;false;false;;;;;;
                                  -261923;11;0;false;false;0;0;0;;;
                                  -261934;3;0;false;false;;;;;;
                                  -261937;3;1;false;false;127;0;85;;;
                                  -261940;1;0;false;false;;;;;;
                                  -261941;17;0;false;false;0;0;0;;;
                                  -261958;1;0;false;false;;;;;;
                                  -261959;1;0;false;false;0;0;0;;;
                                  -261960;1;0;false;false;;;;;;
                                  -261961;23;0;false;false;0;0;0;;;
                                  -261984;3;0;false;false;;;;;;
                                  -261987;3;1;false;false;127;0;85;;;
                                  -261990;1;0;false;false;;;;;;
                                  -261991;19;0;false;false;0;0;0;;;
                                  -262010;1;0;false;false;;;;;;
                                  -262011;1;0;false;false;0;0;0;;;
                                  -262012;1;0;false;false;;;;;;
                                  -262013;15;0;false;false;0;0;0;;;
                                  -262028;1;0;false;false;;;;;;
                                  -262029;1;0;false;false;0;0;0;;;
                                  -262030;1;0;false;false;;;;;;
                                  -262031;2;0;false;false;0;0;0;;;
                                  -262033;3;0;false;false;;;;;;
                                  -262036;7;1;false;false;127;0;85;;;
                                  -262043;1;0;false;false;;;;;;
                                  -262044;8;0;false;false;0;0;0;;;
                                  -262052;1;0;false;false;;;;;;
                                  -262053;1;0;false;false;0;0;0;;;
                                  -262054;1;0;false;false;;;;;;
                                  -262055;5;1;false;false;127;0;85;;;
                                  -262060;1;0;false;false;0;0;0;;;
                                  -262061;8;0;false;false;;;;;;
                                  -262069;2;1;false;false;127;0;85;;;
                                  -262071;1;0;false;false;;;;;;
                                  -262072;2;0;false;false;0;0;0;;;
                                  -262074;1;0;false;false;;;;;;
                                  -262075;1;0;false;false;0;0;0;;;
                                  -262076;1;0;false;false;;;;;;
                                  -262077;11;0;false;false;0;0;0;;;
                                  -262088;1;0;false;false;;;;;;
                                  -262089;1;0;false;false;0;0;0;;;
                                  -262090;4;0;false;false;;;;;;
                                  -262094;38;0;false;false;63;127;95;;;
                                  -262132;2;0;false;false;;;;;;
                                  -262134;1;0;false;false;0;0;0;;;
                                  -262135;1;0;false;false;;;;;;
                                  -262136;1;0;false;false;0;0;0;;;
                                  -262137;1;0;false;false;;;;;;
                                  -262138;31;0;false;false;0;0;0;;;
                                  -262169;1;0;false;false;;;;;;
                                  -262170;1;0;false;false;0;0;0;;;
                                  -262171;1;0;false;false;;;;;;
                                  -262172;3;0;false;false;0;0;0;;;
                                  -262175;1;0;false;false;;;;;;
                                  -262176;1;0;false;false;0;0;0;;;
                                  -262177;1;0;false;false;;;;;;
                                  -262178;1;0;false;false;0;0;0;;;
                                  -262179;1;0;false;false;;;;;;
                                  -262180;21;0;false;false;0;0;0;;;
                                  -262201;5;0;false;false;;;;;;
                                  -262206;8;0;false;false;0;0;0;;;
                                  -262214;1;0;false;false;;;;;;
                                  -262215;1;0;false;false;0;0;0;;;
                                  -262216;1;0;false;false;;;;;;
                                  -262217;23;0;false;false;0;0;0;;;
                                  -262240;3;0;false;false;;;;;;
                                  -262243;1;0;false;false;0;0;0;;;
                                  -262244;3;0;false;false;;;;;;
                                  -262247;4;1;false;false;127;0;85;;;
                                  -262251;4;0;false;false;;;;;;
                                  -262255;2;1;false;false;127;0;85;;;
                                  -262257;1;0;false;false;;;;;;
                                  -262258;2;0;false;false;0;0;0;;;
                                  -262260;1;0;false;false;;;;;;
                                  -262261;2;0;false;false;0;0;0;;;
                                  -262263;1;0;false;false;;;;;;
                                  -262264;16;0;false;false;0;0;0;;;
                                  -262280;1;0;false;false;;;;;;
                                  -262281;1;0;false;false;0;0;0;;;
                                  -262282;4;0;false;false;;;;;;
                                  -262286;38;0;false;false;63;127;95;;;
                                  -262324;2;0;false;false;;;;;;
                                  -262326;1;0;false;false;0;0;0;;;
                                  -262327;1;0;false;false;;;;;;
                                  -262328;1;0;false;false;0;0;0;;;
                                  -262329;1;0;false;false;;;;;;
                                  -262330;29;0;false;false;0;0;0;;;
                                  -262359;1;0;false;false;;;;;;
                                  -262360;1;0;false;false;0;0;0;;;
                                  -262361;1;0;false;false;;;;;;
                                  -262362;23;0;false;false;0;0;0;;;
                                  -262385;1;0;false;false;;;;;;
                                  -262386;1;0;false;false;0;0;0;;;
                                  -262387;1;0;false;false;;;;;;
                                  -262388;1;0;false;false;0;0;0;;;
                                  -262389;1;0;false;false;;;;;;
                                  -262390;21;0;false;false;0;0;0;;;
                                  -262411;4;0;false;false;;;;;;
                                  -262415;8;0;false;false;0;0;0;;;
                                  -262423;1;0;false;false;;;;;;
                                  -262424;1;0;false;false;0;0;0;;;
                                  -262425;1;0;false;false;;;;;;
                                  -262426;21;0;false;false;0;0;0;;;
                                  -262447;1;0;false;false;;;;;;
                                  -262448;1;0;false;false;0;0;0;;;
                                  -262449;1;0;false;false;;;;;;
                                  -262450;17;0;false;false;0;0;0;;;
                                  -262467;3;0;false;false;;;;;;
                                  -262470;1;0;false;false;0;0;0;;;
                                  -262471;3;0;false;false;;;;;;
                                  -262474;2;1;false;false;127;0;85;;;
                                  -262476;1;0;false;false;;;;;;
                                  -262477;5;0;false;false;0;0;0;;;
                                  -262482;1;0;false;false;;;;;;
                                  -262483;1;0;false;false;0;0;0;;;
                                  -262484;1;0;false;false;;;;;;
                                  -262485;9;0;false;false;0;0;0;;;
                                  -262494;1;0;false;false;;;;;;
                                  -262495;1;0;false;false;0;0;0;;;
                                  -262496;4;0;false;false;;;;;;
                                  -262500;8;0;false;false;0;0;0;;;
                                  -262508;1;0;false;false;;;;;;
                                  -262509;1;0;false;false;0;0;0;;;
                                  -262510;1;0;false;false;;;;;;
                                  -262511;28;0;false;false;0;0;0;;;
                                  -262539;1;0;false;false;;;;;;
                                  -262540;1;0;false;false;0;0;0;;;
                                  -262541;1;0;false;false;;;;;;
                                  -262542;18;0;false;false;0;0;0;;;
                                  -262560;1;0;false;false;;;;;;
                                  -262561;4;1;false;false;127;0;85;;;
                                  -262565;2;0;false;false;0;0;0;;;
                                  -262567;3;0;false;false;;;;;;
                                  -262570;1;0;false;false;0;0;0;;;
                                  -262571;3;0;false;false;;;;;;
                                  -262574;4;1;false;false;127;0;85;;;
                                  -262578;3;0;false;false;;;;;;
                                  -262581;2;1;false;false;127;0;85;;;
                                  -262583;1;0;false;false;;;;;;
                                  -262584;5;0;false;false;0;0;0;;;
                                  -262589;1;0;false;false;;;;;;
                                  -262590;1;0;false;false;0;0;0;;;
                                  -262591;1;0;false;false;;;;;;
                                  -262592;17;0;false;false;0;0;0;;;
                                  -262609;1;0;false;false;;;;;;
                                  -262610;1;0;false;false;0;0;0;;;
                                  -262611;4;0;false;false;;;;;;
                                  -262615;8;0;false;false;0;0;0;;;
                                  -262623;1;0;false;false;;;;;;
                                  -262624;1;0;false;false;0;0;0;;;
                                  -262625;1;0;false;false;;;;;;
                                  -262626;29;0;false;false;0;0;0;;;
                                  -262655;1;0;false;false;;;;;;
                                  -262656;1;0;false;false;0;0;0;;;
                                  -262657;1;0;false;false;;;;;;
                                  -262658;2;0;false;false;0;0;0;;;
                                  -262660;1;0;false;false;;;;;;
                                  -262661;1;0;false;false;0;0;0;;;
                                  -262662;1;0;false;false;;;;;;
                                  -262663;17;0;false;false;0;0;0;;;
                                  -262680;1;0;false;false;;;;;;
                                  -262681;1;0;false;false;0;0;0;;;
                                  -262682;1;0;false;false;;;;;;
                                  -262683;23;0;false;false;0;0;0;;;
                                  -262706;1;0;false;false;;;;;;
                                  -262707;4;1;false;false;127;0;85;;;
                                  -262711;2;0;false;false;0;0;0;;;
                                  -262713;3;0;false;false;;;;;;
                                  -262716;1;0;false;false;0;0;0;;;
                                  -262717;3;0;false;false;;;;;;
                                  -262720;6;1;false;false;127;0;85;;;
                                  -262726;1;0;false;false;;;;;;
                                  -262727;9;0;false;false;0;0;0;;;
                                  -262736;2;0;false;false;;;;;;
                                  -262738;1;0;false;false;0;0;0;;;
                                  -262739;2;0;false;false;;;;;;
                                  -262741;3;0;false;false;63;95;191;;;
                                  -262744;3;0;false;false;;;;;;
                                  -262747;1;0;false;false;63;95;191;;;
                                  -262748;1;0;false;false;;;;;;
                                  -262749;4;0;false;false;63;95;191;;;
                                  -262753;1;0;false;false;;;;;;
                                  -262754;3;0;false;false;63;95;191;;;
                                  -262757;1;0;false;false;;;;;;
                                  -262758;5;0;false;false;63;95;191;;;
                                  -262763;1;0;false;false;;;;;;
                                  -262764;8;0;false;false;63;95;191;;;
                                  -262772;1;0;false;false;;;;;;
                                  -262773;3;0;false;false;63;95;191;;;
                                  -262776;1;0;false;false;;;;;;
                                  -262777;7;0;false;false;63;95;191;;;
                                  -262784;1;0;false;false;;;;;;
                                  -262785;3;0;false;false;63;95;191;;;
                                  -262788;1;0;false;false;;;;;;
                                  -262789;5;0;false;false;63;95;191;;;
                                  -262794;1;0;false;false;;;;;;
                                  -262795;6;0;false;false;63;95;191;;;
                                  -262801;1;0;false;false;;;;;;
                                  -262802;4;0;false;false;63;95;191;;;
                                  -262806;1;0;false;false;;;;;;
                                  -262807;5;0;false;false;63;95;191;;;
                                  -262812;3;0;false;false;;;;;;
                                  -262815;2;0;false;false;63;95;191;;;
                                  -262817;2;0;false;false;;;;;;
                                  -262819;4;1;false;false;127;0;85;;;
                                  -262823;1;0;false;false;;;;;;
                                  -262824;11;0;false;false;0;0;0;;;
                                  -262835;1;0;false;false;;;;;;
                                  -262836;1;0;false;false;0;0;0;;;
                                  -262837;3;0;false;false;;;;;;
                                  -262840;3;1;false;false;127;0;85;;;
                                  -262843;1;0;false;false;;;;;;
                                  -262844;9;0;false;false;0;0;0;;;
                                  -262853;1;0;false;false;;;;;;
                                  -262854;1;0;false;false;0;0;0;;;
                                  -262855;1;0;false;false;;;;;;
                                  -262856;37;0;false;false;0;0;0;;;
                                  -262893;6;0;false;false;;;;;;
                                  -262899;21;0;false;false;0;0;0;;;
                                  -262920;2;0;false;false;;;;;;
                                  -262922;1;0;false;false;0;0;0;;;
                                  -262923;2;0;false;false;;;;;;
                                  -262925;3;0;false;false;63;95;191;;;
                                  -262928;3;0;false;false;;;;;;
                                  -262931;1;0;false;false;63;95;191;;;
                                  -262932;1;0;false;false;;;;;;
                                  -262933;4;0;false;false;63;95;191;;;
                                  -262937;1;0;false;false;;;;;;
                                  -262938;3;0;false;false;63;95;191;;;
                                  -262941;1;0;false;false;;;;;;
                                  -262942;5;0;false;false;63;95;191;;;
                                  -262947;1;0;false;false;;;;;;
                                  -262948;8;0;false;false;63;95;191;;;
                                  -262956;1;0;false;false;;;;;;
                                  -262957;3;0;false;false;63;95;191;;;
                                  -262960;1;0;false;false;;;;;;
                                  -262961;7;0;false;false;63;95;191;;;
                                  -262968;1;0;false;false;;;;;;
                                  -262969;3;0;false;false;63;95;191;;;
                                  -262972;1;0;false;false;;;;;;
                                  -262973;5;0;false;false;63;95;191;;;
                                  -262978;1;0;false;false;;;;;;
                                  -262979;6;0;false;false;63;95;191;;;
                                  -262985;1;0;false;false;;;;;;
                                  -262986;4;0;false;false;63;95;191;;;
                                  -262990;1;0;false;false;;;;;;
                                  -262991;5;0;false;false;63;95;191;;;
                                  -262996;3;0;false;false;;;;;;
                                  -262999;2;0;false;false;63;95;191;;;
                                  -263001;2;0;false;false;;;;;;
                                  -263003;4;1;false;false;127;0;85;;;
                                  -263007;1;0;false;false;;;;;;
                                  -263008;10;0;false;false;0;0;0;;;
                                  -263018;3;1;false;false;127;0;85;;;
                                  -263021;1;0;false;false;;;;;;
                                  -263022;10;0;false;false;0;0;0;;;
                                  -263032;1;0;false;false;;;;;;
                                  -263033;1;0;false;false;0;0;0;;;
                                  -263034;3;0;false;false;;;;;;
                                  -263037;3;1;false;false;127;0;85;;;
                                  -263040;1;0;false;false;;;;;;
                                  -263041;10;0;false;false;0;0;0;;;
                                  -263051;1;0;false;false;;;;;;
                                  -263052;1;0;false;false;0;0;0;;;
                                  -263053;1;0;false;false;;;;;;
                                  -263054;35;0;false;false;0;0;0;;;
                                  -263089;3;0;false;false;;;;;;
                                  -263092;6;0;false;false;0;0;0;;;
                                  -263098;1;0;false;false;;;;;;
                                  -263099;4;0;false;false;0;0;0;;;
                                  -263103;1;0;false;false;;;;;;
                                  -263104;1;0;false;false;0;0;0;;;
                                  -263105;1;0;false;false;;;;;;
                                  -263106;27;0;false;false;0;0;0;;;
                                  -263133;3;0;false;false;;;;;;
                                  -263136;3;1;false;false;127;0;85;;;
                                  -263139;1;0;false;false;;;;;;
                                  -263140;12;0;false;false;0;0;0;;;
                                  -263152;1;0;false;false;;;;;;
                                  -263153;1;0;false;false;0;0;0;;;
                                  -263154;1;0;false;false;;;;;;
                                  -263155;11;0;false;false;0;0;0;;;
                                  -263166;1;0;false;false;;;;;;
                                  -263167;1;0;false;false;0;0;0;;;
                                  -263168;1;0;false;false;;;;;;
                                  -263169;11;0;false;false;0;0;0;;;
                                  -263180;3;0;false;false;;;;;;
                                  -263183;3;1;false;false;127;0;85;;;
                                  -263186;1;0;false;false;;;;;;
                                  -263187;9;0;false;false;0;0;0;;;
                                  -263196;1;0;false;false;;;;;;
                                  -263197;1;0;false;false;0;0;0;;;
                                  -263198;1;0;false;false;;;;;;
                                  -263199;18;0;false;false;0;0;0;;;
                                  -263217;1;0;false;false;;;;;;
                                  -263218;10;0;false;false;0;0;0;;;
                                  -263228;1;0;false;false;;;;;;
                                  -263229;14;0;false;false;0;0;0;;;
                                  -263243;4;0;false;false;;;;;;
                                  -263247;7;1;false;false;127;0;85;;;
                                  -263254;1;0;false;false;;;;;;
                                  -263255;8;0;false;false;0;0;0;;;
                                  -263263;1;0;false;false;;;;;;
                                  -263264;1;0;false;false;0;0;0;;;
                                  -263265;1;0;false;false;;;;;;
                                  -263266;23;0;false;false;0;0;0;;;
                                  -263289;1;0;false;false;;;;;;
                                  -263290;11;0;false;false;0;0;0;;;
                                  -263301;3;0;false;false;;;;;;
                                  -263304;7;1;false;false;127;0;85;;;
                                  -263311;1;0;false;false;;;;;;
                                  -263312;20;0;false;false;0;0;0;;;
                                  -263332;1;0;false;false;;;;;;
                                  -263333;1;0;false;false;0;0;0;;;
                                  -263334;1;0;false;false;;;;;;
                                  -263335;5;1;false;false;127;0;85;;;
                                  -263340;1;0;false;false;0;0;0;;;
                                  -263341;3;0;false;false;;;;;;
                                  -263344;5;0;false;false;0;0;0;;;
                                  -263349;1;0;false;false;;;;;;
                                  -263350;5;0;false;false;0;0;0;;;
                                  -263355;1;0;false;false;;;;;;
                                  -263356;1;0;false;false;0;0;0;;;
                                  -263357;1;0;false;false;;;;;;
                                  -263358;11;0;false;false;0;0;0;;;
                                  -263369;5;0;false;false;;;;;;
                                  -263374;2;1;false;false;127;0;85;;;
                                  -263376;1;0;false;false;;;;;;
                                  -263377;9;0;false;false;0;0;0;;;
                                  -263386;1;0;false;false;;;;;;
                                  -263387;2;0;false;false;0;0;0;;;
                                  -263389;1;0;false;false;;;;;;
                                  -263390;5;0;false;false;0;0;0;;;
                                  -263395;1;0;false;false;;;;;;
                                  -263396;2;0;false;false;0;0;0;;;
                                  -263398;1;0;false;false;;;;;;
                                  -263399;4;1;false;false;127;0;85;;;
                                  -263403;1;0;false;false;0;0;0;;;
                                  -263404;1;0;false;false;;;;;;
                                  -263405;1;0;false;false;0;0;0;;;
                                  -263406;4;0;false;false;;;;;;
                                  -263410;3;1;false;false;127;0;85;;;
                                  -263413;1;0;false;false;;;;;;
                                  -263414;6;0;false;false;0;0;0;;;
                                  -263420;1;0;false;false;;;;;;
                                  -263421;1;0;false;false;0;0;0;;;
                                  -263422;1;0;false;false;;;;;;
                                  -263423;22;0;false;false;0;0;0;;;
                                  -263445;4;0;false;false;;;;;;
                                  -263449;2;1;false;false;127;0;85;;;
                                  -263451;1;0;false;false;;;;;;
                                  -263452;8;0;false;false;0;0;0;;;
                                  -263460;1;0;false;false;;;;;;
                                  -263461;1;0;false;false;0;0;0;;;
                                  -263462;1;0;false;false;;;;;;
                                  -263463;21;0;false;false;0;0;0;;;
                                  -263484;1;0;false;false;;;;;;
                                  -263485;1;0;false;false;0;0;0;;;
                                  -263486;1;0;false;false;;;;;;
                                  -263487;22;0;false;false;0;0;0;;;
                                  -263509;1;0;false;false;;;;;;
                                  -263510;1;0;false;false;0;0;0;;;
                                  -263511;1;0;false;false;;;;;;
                                  -263512;1;0;false;false;0;0;0;;;
                                  -263513;1;0;false;false;;;;;;
                                  -263514;2;0;false;false;0;0;0;;;
                                  -263516;1;0;false;false;;;;;;
                                  -263517;10;0;false;false;0;0;0;;;
                                  -263527;1;0;false;false;;;;;;
                                  -263528;1;0;false;false;0;0;0;;;
                                  -263529;5;0;false;false;;;;;;
                                  -263534;20;0;false;false;0;0;0;;;
                                  -263554;1;0;false;false;;;;;;
                                  -263555;1;0;false;false;0;0;0;;;
                                  -263556;1;0;false;false;;;;;;
                                  -263557;4;1;false;false;127;0;85;;;
                                  -263561;1;0;false;false;0;0;0;;;
                                  -263562;4;0;false;false;;;;;;
                                  -263566;1;0;false;false;0;0;0;;;
                                  -263567;3;0;false;false;;;;;;
                                  -263570;1;0;false;false;0;0;0;;;
                                  -263571;3;0;false;false;;;;;;
                                  -263574;2;1;false;false;127;0;85;;;
                                  -263576;1;0;false;false;;;;;;
                                  -263577;10;0;false;false;0;0;0;;;
                                  -263587;1;0;false;false;;;;;;
                                  -263588;2;0;false;false;0;0;0;;;
                                  -263590;1;0;false;false;;;;;;
                                  -263591;21;0;false;false;0;0;0;;;
                                  -263612;1;0;false;false;;;;;;
                                  -263613;1;0;false;false;0;0;0;;;
                                  -263614;4;0;false;false;;;;;;
                                  -263618;71;0;false;false;63;127;95;;;
                                  -263689;2;0;false;false;;;;;;
                                  -263691;70;0;false;false;63;127;95;;;
                                  -263761;2;0;false;false;;;;;;
                                  -263763;72;0;false;false;63;127;95;;;
                                  -263835;2;0;false;false;;;;;;
                                  -263837;75;0;false;false;63;127;95;;;
                                  -263912;2;0;false;false;;;;;;
                                  -263914;27;0;false;false;0;0;0;;;
                                  -263941;1;0;false;false;;;;;;
                                  -263942;10;0;false;false;0;0;0;;;
                                  -263952;1;0;false;false;;;;;;
                                  -263953;21;0;false;false;0;0;0;;;
                                  -263974;3;0;false;false;;;;;;
                                  -263977;1;0;false;false;0;0;0;;;
                                  -263978;2;0;false;false;;;;;;
                                  -263980;1;0;false;false;0;0;0;;;
                                  -263981;2;0;false;false;;;;;;
                                  -263983;3;0;false;false;63;95;191;;;
                                  -263986;3;0;false;false;;;;;;
                                  -263989;1;0;false;false;63;95;191;;;
                                  -263990;1;0;false;false;;;;;;
                                  -263991;7;0;false;false;63;95;191;;;
                                  -263998;1;0;false;false;;;;;;
                                  -263999;3;0;false;false;63;95;191;;;
                                  -264002;1;0;false;false;;;;;;
                                  -264003;9;0;false;false;63;95;191;;;
                                  -264012;1;0;false;false;;;;;;
                                  -264013;6;0;false;false;63;95;191;;;
                                  -264019;1;0;false;false;;;;;;
                                  -264020;4;0;false;false;63;95;191;;;
                                  -264024;1;0;false;false;;;;;;
                                  -264025;5;0;false;false;63;95;191;;;
                                  -264030;3;0;false;false;;;;;;
                                  -264033;1;0;false;false;63;95;191;;;
                                  -264034;1;0;false;false;;;;;;
                                  -264035;3;0;false;false;127;127;159;;;
                                  -264038;3;0;false;false;;;;;;
                                  -264041;1;0;false;false;63;95;191;;;
                                  -264042;3;0;false;false;;;;;;
                                  -264045;1;0;false;false;63;95;191;;;
                                  -264046;1;0;false;false;;;;;;
                                  -264047;7;1;false;false;127;159;191;;;
                                  -264054;6;0;false;false;63;95;191;;;
                                  -264060;1;0;false;false;;;;;;
                                  -264061;6;0;false;false;63;95;191;;;
                                  -264067;1;0;false;false;;;;;;
                                  -264068;4;0;false;false;63;95;191;;;
                                  -264072;1;0;false;false;;;;;;
                                  -264073;6;0;false;false;63;95;191;;;
                                  -264079;1;0;false;false;;;;;;
                                  -264080;2;0;false;false;63;95;191;;;
                                  -264082;1;0;false;false;;;;;;
                                  -264083;7;0;false;false;63;95;191;;;
                                  -264090;1;0;false;false;;;;;;
                                  -264091;4;0;false;false;63;95;191;;;
                                  -264095;1;0;false;false;;;;;;
                                  -264096;4;0;false;false;63;95;191;;;
                                  -264100;3;0;false;false;;;;;;
                                  -264103;2;0;false;false;63;95;191;;;
                                  -264105;2;0;false;false;;;;;;
                                  -264107;4;1;false;false;127;0;85;;;
                                  -264111;1;0;false;false;;;;;;
                                  -264112;11;0;false;false;0;0;0;;;
                                  -264123;3;1;false;false;127;0;85;;;
                                  -264126;1;0;false;false;;;;;;
                                  -264127;7;0;false;false;0;0;0;;;
                                  -264134;1;0;false;false;;;;;;
                                  -264135;1;0;false;false;0;0;0;;;
                                  -264136;3;0;false;false;;;;;;
                                  -264139;3;1;false;false;127;0;85;;;
                                  -264142;1;0;false;false;;;;;;
                                  -264143;4;0;false;false;0;0;0;;;
                                  -264147;1;0;false;false;;;;;;
                                  -264148;1;0;false;false;0;0;0;;;
                                  -264149;1;0;false;false;;;;;;
                                  -264150;32;0;false;false;0;0;0;;;
                                  -264182;3;0;false;false;;;;;;
                                  -264185;3;1;false;false;127;0;85;;;
                                  -264188;1;0;false;false;;;;;;
                                  -264189;10;0;false;false;0;0;0;;;
                                  -264199;1;0;false;false;;;;;;
                                  -264200;1;0;false;false;0;0;0;;;
                                  -264201;1;0;false;false;;;;;;
                                  -264202;30;0;false;false;0;0;0;;;
                                  -264232;3;0;false;false;;;;;;
                                  -264235;3;1;false;false;127;0;85;;;
                                  -264238;1;0;false;false;;;;;;
                                  -264239;12;0;false;false;0;0;0;;;
                                  -264251;1;0;false;false;;;;;;
                                  -264252;1;0;false;false;0;0;0;;;
                                  -264253;1;0;false;false;;;;;;
                                  -264254;6;0;false;false;0;0;0;;;
                                  -264260;1;0;false;false;;;;;;
                                  -264261;1;0;false;false;0;0;0;;;
                                  -264262;1;0;false;false;;;;;;
                                  -264263;11;0;false;false;0;0;0;;;
                                  -264274;3;0;false;false;;;;;;
                                  -264277;6;0;false;false;0;0;0;;;
                                  -264283;1;0;false;false;;;;;;
                                  -264284;8;0;false;false;0;0;0;;;
                                  -264292;1;0;false;false;;;;;;
                                  -264293;1;0;false;false;0;0;0;;;
                                  -264294;1;0;false;false;;;;;;
                                  -264295;22;0;false;false;0;0;0;;;
                                  -264317;3;0;false;false;;;;;;
                                  -264320;3;1;false;false;127;0;85;;;
                                  -264323;1;0;false;false;;;;;;
                                  -264324;9;0;false;false;0;0;0;;;
                                  -264333;1;0;false;false;;;;;;
                                  -264334;1;0;false;false;0;0;0;;;
                                  -264335;1;0;false;false;;;;;;
                                  -264336;22;0;false;false;0;0;0;;;
                                  -264358;1;0;false;false;;;;;;
                                  -264359;5;0;false;false;0;0;0;;;
                                  -264364;1;0;false;false;;;;;;
                                  -264365;14;0;false;false;0;0;0;;;
                                  -264379;6;0;false;false;;;;;;
                                  -264385;23;0;false;false;0;0;0;;;
                                  -264408;1;0;false;false;;;;;;
                                  -264409;6;0;false;false;0;0;0;;;
                                  -264415;3;0;false;false;;;;;;
                                  -264418;1;0;false;false;0;0;0;;;
                                  -264419;2;0;false;false;;;;;;
                                  -264421;3;0;false;false;63;95;191;;;
                                  -264424;2;0;false;false;;;;;;
                                  -264426;3;0;false;false;63;95;191;;;
                                  -264429;3;0;false;false;;;;;;
                                  -264432;1;0;false;false;63;95;191;;;
                                  -264433;1;0;false;false;;;;;;
                                  -264434;7;0;false;false;63;95;191;;;
                                  -264441;1;0;false;false;;;;;;
                                  -264442;3;0;false;false;63;95;191;;;
                                  -264445;1;0;false;false;;;;;;
                                  -264446;9;0;false;false;63;95;191;;;
                                  -264455;1;0;false;false;;;;;;
                                  -264456;4;0;false;false;63;95;191;;;
                                  -264460;1;0;false;false;;;;;;
                                  -264461;5;0;false;false;63;95;191;;;
                                  -264466;2;0;false;false;;;;;;
                                  -264468;3;0;false;false;63;95;191;;;
                                  -264471;1;0;false;false;;;;;;
                                  -264472;3;0;false;false;63;95;191;;;
                                  -264475;1;0;false;false;;;;;;
                                  -264476;2;0;false;false;63;95;191;;;
                                  -264478;1;0;false;false;;;;;;
                                  -264479;3;0;false;false;63;95;191;;;
                                  -264482;1;0;false;false;;;;;;
                                  -264483;9;0;false;false;63;95;191;;;
                                  -264492;1;0;false;false;;;;;;
                                  -264493;4;0;false;false;63;95;191;;;
                                  -264497;1;0;false;false;;;;;;
                                  -264498;2;0;false;false;63;95;191;;;
                                  -264500;1;0;false;false;;;;;;
                                  -264501;8;0;false;false;63;95;191;;;
                                  -264509;1;0;false;false;;;;;;
                                  -264510;4;0;false;false;63;95;191;;;
                                  -264514;3;0;false;false;;;;;;
                                  -264517;1;0;false;false;63;95;191;;;
                                  -264518;1;0;false;false;;;;;;
                                  -264519;5;0;false;false;63;95;191;;;
                                  -264524;2;0;false;false;;;;;;
                                  -264526;4;0;false;false;63;95;191;;;
                                  -264530;1;0;false;false;;;;;;
                                  -264531;4;0;false;false;63;95;191;;;
                                  -264535;1;0;false;false;;;;;;
                                  -264536;2;0;false;false;63;95;191;;;
                                  -264538;1;0;false;false;;;;;;
                                  -264539;1;0;false;false;63;95;191;;;
                                  -264540;1;0;false;false;;;;;;
                                  -264541;5;0;false;false;63;95;191;;;
                                  -264546;1;0;false;false;127;127;159;;;
                                  -264547;2;0;false;false;63;95;191;;;
                                  -264549;1;0;false;false;127;127;159;;;
                                  -264550;4;0;false;false;63;95;191;;;
                                  -264554;1;0;false;false;;;;;;
                                  -264555;9;0;false;false;63;95;191;;;
                                  -264564;1;0;false;false;;;;;;
                                  -264565;7;0;false;false;63;95;191;;;
                                  -264572;1;0;false;false;;;;;;
                                  -264573;3;0;false;false;63;95;191;;;
                                  -264576;1;0;false;false;;;;;;
                                  -264577;3;0;false;false;63;95;191;;;
                                  -264580;1;0;false;false;;;;;;
                                  -264581;2;0;false;false;63;95;191;;;
                                  -264583;1;0;false;false;;;;;;
                                  -264584;3;0;false;false;63;95;191;;;
                                  -264587;1;0;false;false;;;;;;
                                  -264588;9;0;false;false;63;95;191;;;
                                  -264597;1;0;false;false;;;;;;
                                  -264598;2;0;false;false;63;95;191;;;
                                  -264600;1;0;false;false;;;;;;
                                  -264601;3;0;false;false;63;95;191;;;
                                  -264604;3;0;false;false;;;;;;
                                  -264607;1;0;false;false;63;95;191;;;
                                  -264608;1;0;false;false;;;;;;
                                  -264609;6;0;false;false;63;95;191;;;
                                  -264615;1;0;false;false;;;;;;
                                  -264616;9;0;false;false;63;95;191;;;
                                  -264625;1;0;false;false;;;;;;
                                  -264626;2;0;false;false;63;95;191;;;
                                  -264628;1;0;false;false;;;;;;
                                  -264629;3;0;false;false;63;95;191;;;
                                  -264632;1;0;false;false;;;;;;
                                  -264633;9;0;false;false;63;95;191;;;
                                  -264642;1;0;false;false;;;;;;
                                  -264643;6;0;false;false;63;95;191;;;
                                  -264649;1;0;false;false;;;;;;
                                  -264650;5;0;false;false;63;95;191;;;
                                  -264655;1;0;false;false;;;;;;
                                  -264656;3;0;false;false;63;95;191;;;
                                  -264659;1;0;false;false;;;;;;
                                  -264660;5;0;false;false;63;95;191;;;
                                  -264665;1;0;false;false;;;;;;
                                  -264666;2;0;false;false;63;95;191;;;
                                  -264668;1;0;false;false;;;;;;
                                  -264669;9;0;false;false;63;95;191;;;
                                  -264678;3;0;false;false;;;;;;
                                  -264681;1;0;false;false;63;95;191;;;
                                  -264682;1;0;false;false;;;;;;
                                  -264683;3;0;false;false;127;127;159;;;
                                  -264686;3;0;false;false;;;;;;
                                  -264689;1;0;false;false;63;95;191;;;
                                  -264690;3;0;false;false;;;;;;
                                  -264693;1;0;false;false;63;95;191;;;
                                  -264694;1;0;false;false;;;;;;
                                  -264695;11;1;false;false;127;159;191;;;
                                  -264706;12;0;false;false;63;95;191;;;
                                  -264718;1;0;false;false;;;;;;
                                  -264719;4;0;false;false;127;127;159;;;
                                  -264723;3;0;false;false;;;;;;
                                  -264726;1;0;false;false;63;95;191;;;
                                  -264727;4;0;false;false;;;;;;
                                  -264731;4;0;false;false;127;127;159;;;
                                  -264735;21;0;false;false;63;95;191;;;
                                  -264756;1;0;false;false;;;;;;
                                  -264757;1;0;false;false;127;127;159;;;
                                  -264758;1;0;false;false;;;;;;
                                  -264759;2;0;false;false;63;95;191;;;
                                  -264761;1;0;false;false;;;;;;
                                  -264762;3;0;false;false;63;95;191;;;
                                  -264765;1;0;false;false;;;;;;
                                  -264766;8;0;false;false;63;95;191;;;
                                  -264774;1;0;false;false;;;;;;
                                  -264775;3;0;false;false;63;95;191;;;
                                  -264778;1;0;false;false;;;;;;
                                  -264779;4;0;false;false;63;95;191;;;
                                  -264783;1;0;false;false;;;;;;
                                  -264784;8;0;false;false;63;95;191;;;
                                  -264792;5;0;false;false;127;127;159;;;
                                  -264797;3;0;false;false;;;;;;
                                  -264800;1;0;false;false;63;95;191;;;
                                  -264801;4;0;false;false;;;;;;
                                  -264805;4;0;false;false;127;127;159;;;
                                  -264809;27;0;false;false;63;95;191;;;
                                  -264836;1;0;false;false;;;;;;
                                  -264837;1;0;false;false;127;127;159;;;
                                  -264838;1;0;false;false;;;;;;
                                  -264839;2;0;false;false;63;95;191;;;
                                  -264841;1;0;false;false;;;;;;
                                  -264842;3;0;false;false;63;95;191;;;
                                  -264845;1;0;false;false;;;;;;
                                  -264846;6;0;false;false;63;95;191;;;
                                  -264852;1;0;false;false;;;;;;
                                  -264853;4;0;false;false;63;95;191;;;
                                  -264857;1;0;false;false;;;;;;
                                  -264858;3;0;false;false;63;95;191;;;
                                  -264861;1;0;false;false;;;;;;
                                  -264862;6;0;false;false;63;95;191;;;
                                  -264868;1;0;false;false;;;;;;
                                  -264869;4;0;false;false;63;95;191;;;
                                  -264873;1;0;false;false;;;;;;
                                  -264874;7;0;false;false;63;95;191;;;
                                  -264881;1;0;false;false;;;;;;
                                  -264882;3;0;false;false;63;95;191;;;
                                  -264885;1;0;false;false;;;;;;
                                  -264886;8;0;false;false;63;95;191;;;
                                  -264894;5;0;false;false;127;127;159;;;
                                  -264899;3;0;false;false;;;;;;
                                  -264902;1;0;false;false;63;95;191;;;
                                  -264903;1;0;false;false;;;;;;
                                  -264904;5;0;false;false;127;127;159;;;
                                  -264909;3;0;false;false;;;;;;
                                  -264912;2;0;false;false;63;95;191;;;
                                  -264914;2;0;false;false;;;;;;
                                  -264916;6;1;false;false;127;0;85;;;
                                  -264922;1;0;false;false;;;;;;
                                  -264923;4;1;false;false;127;0;85;;;
                                  -264927;1;0;false;false;;;;;;
                                  -264928;15;0;false;false;0;0;0;;;
                                  -264943;1;0;false;false;;;;;;
                                  -264944;1;0;false;false;0;0;0;;;
                                  -264945;3;0;false;false;;;;;;
                                  -264948;14;0;false;false;0;0;0;;;
                                  -264962;3;0;false;false;;;;;;
                                  -264965;7;1;false;false;127;0;85;;;
                                  -264972;1;0;false;false;;;;;;
                                  -264973;14;0;false;false;0;0;0;;;
                                  -264987;3;0;false;false;;;;;;
                                  -264990;3;1;false;false;127;0;85;;;
                                  -264993;1;0;false;false;;;;;;
                                  -264994;12;0;false;false;0;0;0;;;
                                  -265006;1;0;false;false;;;;;;
                                  -265007;10;0;false;false;0;0;0;;;
                                  -265017;1;0;false;false;;;;;;
                                  -265018;7;0;false;false;0;0;0;;;
                                  -265025;1;0;false;false;;;;;;
                                  -265026;10;0;false;false;0;0;0;;;
                                  -265036;1;0;false;false;;;;;;
                                  -265037;8;0;false;false;0;0;0;;;
                                  -265045;1;0;false;false;;;;;;
                                  -265046;5;0;false;false;0;0;0;;;
                                  -265051;1;0;false;false;;;;;;
                                  -265052;13;0;false;false;0;0;0;;;
                                  -265065;5;0;false;false;;;;;;
                                  -265070;37;0;false;false;63;127;95;;;
                                  -265107;1;0;false;false;;;;;;
                                  -265108;7;1;false;false;127;0;85;;;
                                  -265115;1;0;false;false;;;;;;
                                  -265116;11;0;false;false;0;0;0;;;
                                  -265127;1;0;false;false;;;;;;
                                  -265128;1;0;false;false;0;0;0;;;
                                  -265129;1;0;false;false;;;;;;
                                  -265130;11;0;false;false;0;0;0;;;
                                  -265141;1;0;false;false;;;;;;
                                  -265142;2;0;false;false;0;0;0;;;
                                  -265144;1;0;false;false;;;;;;
                                  -265145;12;0;false;false;0;0;0;;;
                                  -265157;5;0;false;false;;;;;;
                                  -265162;2;1;false;false;127;0;85;;;
                                  -265164;1;0;false;false;;;;;;
                                  -265165;13;0;false;false;0;0;0;;;
                                  -265178;1;0;false;false;;;;;;
                                  -265179;1;0;false;false;0;0;0;;;
                                  -265180;4;0;false;false;;;;;;
                                  -265184;11;0;false;false;0;0;0;;;
                                  -265195;1;0;false;false;;;;;;
                                  -265196;1;0;false;false;0;0;0;;;
                                  -265197;1;0;false;false;;;;;;
                                  -265198;12;0;false;false;0;0;0;;;
                                  -265210;4;0;false;false;;;;;;
                                  -265214;9;0;false;false;0;0;0;;;
                                  -265223;1;0;false;false;;;;;;
                                  -265224;1;0;false;false;0;0;0;;;
                                  -265225;1;0;false;false;;;;;;
                                  -265226;12;0;false;false;0;0;0;;;
                                  -265238;3;0;false;false;;;;;;
                                  -265241;1;0;false;false;0;0;0;;;
                                  -265242;1;0;false;false;;;;;;
                                  -265243;4;1;false;false;127;0;85;;;
                                  -265247;1;0;false;false;;;;;;
                                  -265248;1;0;false;false;0;0;0;;;
                                  -265249;4;0;false;false;;;;;;
                                  -265253;11;0;false;false;0;0;0;;;
                                  -265264;1;0;false;false;;;;;;
                                  -265265;1;0;false;false;0;0;0;;;
                                  -265266;1;0;false;false;;;;;;
                                  -265267;12;0;false;false;0;0;0;;;
                                  -265279;4;0;false;false;;;;;;
                                  -265283;9;0;false;false;0;0;0;;;
                                  -265292;1;0;false;false;;;;;;
                                  -265293;1;0;false;false;0;0;0;;;
                                  -265294;1;0;false;false;;;;;;
                                  -265295;12;0;false;false;0;0;0;;;
                                  -265307;3;0;false;false;;;;;;
                                  -265310;1;0;false;false;0;0;0;;;
                                  -265311;6;0;false;false;;;;;;
                                  -265317;65;0;false;false;63;127;95;;;
                                  -265382;1;0;false;false;;;;;;
                                  -265383;9;0;false;false;0;0;0;;;
                                  -265392;1;0;false;false;;;;;;
                                  -265393;1;0;false;false;0;0;0;;;
                                  -265394;1;0;false;false;;;;;;
                                  -265395;37;0;false;false;0;0;0;;;
                                  -265432;3;0;false;false;;;;;;
                                  -265435;12;0;false;false;0;0;0;;;
                                  -265447;1;0;false;false;;;;;;
                                  -265448;1;0;false;false;0;0;0;;;
                                  -265449;1;0;false;false;;;;;;
                                  -265450;11;0;false;false;0;0;0;;;
                                  -265461;1;0;false;false;;;;;;
                                  -265462;1;0;false;false;0;0;0;;;
                                  -265463;1;0;false;false;;;;;;
                                  -265464;35;0;false;false;0;0;0;;;
                                  -265499;3;0;false;false;;;;;;
                                  -265502;6;0;false;false;0;0;0;;;
                                  -265508;1;0;false;false;;;;;;
                                  -265509;1;0;false;false;0;0;0;;;
                                  -265510;1;0;false;false;;;;;;
                                  -265511;40;0;false;false;0;0;0;;;
                                  -265551;1;0;false;false;;;;;;
                                  -265552;10;0;false;false;0;0;0;;;
                                  -265562;1;0;false;false;;;;;;
                                  -265563;14;0;false;false;0;0;0;;;
                                  -265577;4;0;false;false;;;;;;
                                  -265581;7;0;false;false;0;0;0;;;
                                  -265588;2;0;false;false;;;;;;
                                  -265590;1;0;false;false;0;0;0;;;
                                  -265591;1;0;false;false;;;;;;
                                  -265592;35;0;false;false;0;0;0;;;
                                  -265627;3;0;false;false;;;;;;
                                  -265630;12;0;false;false;0;0;0;;;
                                  -265642;1;0;false;false;;;;;;
                                  -265643;1;0;false;false;0;0;0;;;
                                  -265644;1;0;false;false;;;;;;
                                  -265645;9;0;false;false;0;0;0;;;
                                  -265654;1;0;false;false;;;;;;
                                  -265655;1;0;false;false;0;0;0;;;
                                  -265656;1;0;false;false;;;;;;
                                  -265657;33;0;false;false;0;0;0;;;
                                  -265690;3;0;false;false;;;;;;
                                  -265693;4;0;false;false;0;0;0;;;
                                  -265697;1;0;false;false;;;;;;
                                  -265698;1;0;false;false;0;0;0;;;
                                  -265699;1;0;false;false;;;;;;
                                  -265700;38;0;false;false;0;0;0;;;
                                  -265738;1;0;false;false;;;;;;
                                  -265739;8;0;false;false;0;0;0;;;
                                  -265747;1;0;false;false;;;;;;
                                  -265748;14;0;false;false;0;0;0;;;
                                  -265762;6;0;false;false;;;;;;
                                  -265768;76;0;false;false;63;127;95;;;
                                  -265844;1;0;false;false;;;;;;
                                  -265845;3;1;false;false;127;0;85;;;
                                  -265848;1;0;false;false;;;;;;
                                  -265849;1;0;false;false;0;0;0;;;
                                  -265850;1;0;false;false;;;;;;
                                  -265851;1;0;false;false;0;0;0;;;
                                  -265852;1;0;false;false;;;;;;
                                  -265853;22;0;false;false;0;0;0;;;
                                  -265875;3;0;false;false;;;;;;
                                  -265878;2;1;false;false;127;0;85;;;
                                  -265880;1;0;false;false;;;;;;
                                  -265881;13;0;false;false;0;0;0;;;
                                  -265894;1;0;false;false;;;;;;
                                  -265895;1;0;false;false;0;0;0;;;
                                  -265896;4;0;false;false;;;;;;
                                  -265900;13;0;false;false;0;0;0;;;
                                  -265913;1;0;false;false;;;;;;
                                  -265914;1;0;false;false;0;0;0;;;
                                  -265915;1;0;false;false;;;;;;
                                  -265916;6;0;false;false;0;0;0;;;
                                  -265922;1;0;false;false;;;;;;
                                  -265923;1;0;false;false;0;0;0;;;
                                  -265924;1;0;false;false;;;;;;
                                  -265925;4;0;false;false;0;0;0;;;
                                  -265929;1;0;false;false;;;;;;
                                  -265930;2;0;false;false;0;0;0;;;
                                  -265932;1;0;false;false;;;;;;
                                  -265933;2;0;false;false;0;0;0;;;
                                  -265935;3;0;false;false;;;;;;
                                  -265938;1;0;false;false;0;0;0;;;
                                  -265939;1;0;false;false;;;;;;
                                  -265940;4;1;false;false;127;0;85;;;
                                  -265944;1;0;false;false;;;;;;
                                  -265945;1;0;false;false;0;0;0;;;
                                  -265946;4;0;false;false;;;;;;
                                  -265950;13;0;false;false;0;0;0;;;
                                  -265963;1;0;false;false;;;;;;
                                  -265964;1;0;false;false;0;0;0;;;
                                  -265965;1;0;false;false;;;;;;
                                  -265966;4;0;false;false;0;0;0;;;
                                  -265970;1;0;false;false;;;;;;
                                  -265971;1;0;false;false;0;0;0;;;
                                  -265972;1;0;false;false;;;;;;
                                  -265973;6;0;false;false;0;0;0;;;
                                  -265979;1;0;false;false;;;;;;
                                  -265980;2;0;false;false;0;0;0;;;
                                  -265982;1;0;false;false;;;;;;
                                  -265983;2;0;false;false;0;0;0;;;
                                  -265985;3;0;false;false;;;;;;
                                  -265988;1;0;false;false;0;0;0;;;
                                  -265989;6;0;false;false;;;;;;
                                  -265995;2;1;false;false;127;0;85;;;
                                  -265997;1;0;false;false;;;;;;
                                  -265998;15;0;false;false;0;0;0;;;
                                  -266013;1;0;false;false;;;;;;
                                  -266014;1;0;false;false;0;0;0;;;
                                  -266015;4;0;false;false;;;;;;
                                  -266019;63;0;false;false;63;127;95;;;
                                  -266082;2;0;false;false;;;;;;
                                  -266084;31;0;false;false;63;127;95;;;
                                  -266115;2;0;false;false;;;;;;
                                  -266117;20;0;false;false;0;0;0;;;
                                  -266137;1;0;false;false;;;;;;
                                  -266138;11;0;false;false;0;0;0;;;
                                  -266149;4;0;false;false;;;;;;
                                  -266153;71;0;false;false;63;127;95;;;
                                  -266224;2;0;false;false;;;;;;
                                  -266226;4;0;false;false;0;0;0;;;
                                  -266230;1;0;false;false;;;;;;
                                  -266231;1;0;false;false;0;0;0;;;
                                  -266232;1;0;false;false;;;;;;
                                  -266233;38;0;false;false;0;0;0;;;
                                  -266271;1;0;false;false;;;;;;
                                  -266272;8;0;false;false;0;0;0;;;
                                  -266280;1;0;false;false;;;;;;
                                  -266281;14;0;false;false;0;0;0;;;
                                  -266295;5;0;false;false;;;;;;
                                  -266300;18;0;false;false;0;0;0;;;
                                  -266318;1;0;false;false;;;;;;
                                  -266319;9;0;false;false;0;0;0;;;
                                  -266328;3;0;false;false;;;;;;
                                  -266331;1;0;false;false;0;0;0;;;
                                  -266332;1;0;false;false;;;;;;
                                  -266333;4;1;false;false;127;0;85;;;
                                  -266337;1;0;false;false;;;;;;
                                  -266338;1;0;false;false;0;0;0;;;
                                  -266339;4;0;false;false;;;;;;
                                  -266343;66;0;false;false;63;127;95;;;
                                  -266409;2;0;false;false;;;;;;
                                  -266411;24;0;false;false;63;127;95;;;
                                  -266435;2;0;false;false;;;;;;
                                  -266437;18;0;false;false;0;0;0;;;
                                  -266455;1;0;false;false;;;;;;
                                  -266456;9;0;false;false;0;0;0;;;
                                  -266465;3;0;false;false;;;;;;
                                  -266468;1;0;false;false;0;0;0;;;
                                  -266469;4;0;false;false;;;;;;
                                  -266473;1;0;false;false;0;0;0;;;
                                  -266474;2;0;false;false;;;;;;
                                  -266476;7;1;false;false;127;0;85;;;
                                  -266483;1;0;false;false;;;;;;
                                  -266484;13;0;false;false;0;0;0;;;
                                  -266497;1;0;false;false;;;;;;
                                  -266498;1;0;false;false;0;0;0;;;
                                  -266499;3;0;false;false;;;;;;
                                  -266502;6;1;false;false;127;0;85;;;
                                  -266508;1;0;false;false;;;;;;
                                  -266509;26;0;false;false;0;0;0;;;
                                  -266535;2;0;false;false;;;;;;
                                  -266537;1;0;false;false;0;0;0;;;
                                  -266538;2;0;false;false;;;;;;
                                  -266540;3;0;false;false;63;95;191;;;
                                  -266543;3;0;false;false;;;;;;
                                  -266546;1;0;false;false;63;95;191;;;
                                  -266547;1;0;false;false;;;;;;
                                  -266548;7;0;false;false;63;95;191;;;
                                  -266555;1;0;false;false;;;;;;
                                  -266556;3;0;false;false;63;95;191;;;
                                  -266559;1;0;false;false;;;;;;
                                  -266560;9;0;false;false;63;95;191;;;
                                  -266569;1;0;false;false;;;;;;
                                  -266570;3;0;false;false;63;95;191;;;
                                  -266573;1;0;false;false;;;;;;
                                  -266574;5;0;false;false;63;95;191;;;
                                  -266579;1;0;false;false;;;;;;
                                  -266580;8;0;false;false;63;95;191;;;
                                  -266588;1;0;false;false;;;;;;
                                  -266589;9;0;false;false;63;95;191;;;
                                  -266598;1;0;false;false;;;;;;
                                  -266599;2;0;false;false;63;95;191;;;
                                  -266601;1;0;false;false;;;;;;
                                  -266602;3;0;false;false;63;95;191;;;
                                  -266605;1;0;false;false;;;;;;
                                  -266606;4;0;false;false;63;95;191;;;
                                  -266610;1;0;false;false;;;;;;
                                  -266611;7;0;false;false;63;95;191;;;
                                  -266618;3;0;false;false;;;;;;
                                  -266621;1;0;false;false;63;95;191;;;
                                  -266622;1;0;false;false;;;;;;
                                  -266623;2;0;false;false;63;95;191;;;
                                  -266625;1;0;false;false;;;;;;
                                  -266626;3;0;false;false;63;95;191;;;
                                  -266629;1;0;false;false;;;;;;
                                  -266630;9;0;false;false;63;95;191;;;
                                  -266639;1;0;false;false;;;;;;
                                  -266640;10;0;false;false;63;95;191;;;
                                  -266650;1;0;false;false;;;;;;
                                  -266651;4;0;false;false;63;95;191;;;
                                  -266655;1;0;false;false;;;;;;
                                  -266656;3;0;false;false;63;95;191;;;
                                  -266659;1;0;false;false;;;;;;
                                  -266660;8;0;false;false;63;95;191;;;
                                  -266668;1;0;false;false;;;;;;
                                  -266669;5;0;false;false;63;95;191;;;
                                  -266674;1;0;false;false;;;;;;
                                  -266675;3;0;false;false;63;95;191;;;
                                  -266678;1;0;false;false;;;;;;
                                  -266679;9;0;false;false;63;95;191;;;
                                  -266688;1;0;false;false;;;;;;
                                  -266689;2;0;false;false;63;95;191;;;
                                  -266691;4;0;false;false;;;;;;
                                  -266695;1;0;false;false;63;95;191;;;
                                  -266696;1;0;false;false;;;;;;
                                  -266697;5;0;false;false;63;95;191;;;
                                  -266702;1;0;false;false;;;;;;
                                  -266703;3;0;false;false;63;95;191;;;
                                  -266706;1;0;false;false;;;;;;
                                  -266707;3;0;false;false;63;95;191;;;
                                  -266710;1;0;false;false;;;;;;
                                  -266711;5;0;false;false;63;95;191;;;
                                  -266716;1;0;false;false;;;;;;
                                  -266717;5;0;false;false;63;95;191;;;
                                  -266722;1;0;false;false;;;;;;
                                  -266723;2;0;false;false;63;95;191;;;
                                  -266725;1;0;false;false;;;;;;
                                  -266726;3;0;false;false;63;95;191;;;
                                  -266729;1;0;false;false;;;;;;
                                  -266730;3;0;false;false;63;95;191;;;
                                  -266733;1;0;false;false;;;;;;
                                  -266734;2;0;false;false;63;95;191;;;
                                  -266736;1;0;false;false;;;;;;
                                  -266737;3;0;false;false;63;95;191;;;
                                  -266740;1;0;false;false;;;;;;
                                  -266741;3;0;false;false;63;95;191;;;
                                  -266744;1;0;false;false;;;;;;
                                  -266745;5;0;false;false;63;95;191;;;
                                  -266750;3;0;false;false;;;;;;
                                  -266753;1;0;false;false;63;95;191;;;
                                  -266754;1;0;false;false;;;;;;
                                  -266755;2;0;false;false;63;95;191;;;
                                  -266757;1;0;false;false;;;;;;
                                  -266758;3;0;false;false;63;95;191;;;
                                  -266761;1;0;false;false;;;;;;
                                  -266762;9;0;false;false;63;95;191;;;
                                  -266771;1;0;false;false;;;;;;
                                  -266772;2;0;false;false;63;95;191;;;
                                  -266774;1;0;false;false;;;;;;
                                  -266775;6;0;false;false;63;95;191;;;
                                  -266781;1;0;false;false;;;;;;
                                  -266782;3;0;false;false;63;95;191;;;
                                  -266785;1;0;false;false;;;;;;
                                  -266786;8;0;false;false;63;95;191;;;
                                  -266794;1;0;false;false;;;;;;
                                  -266795;4;0;false;false;63;95;191;;;
                                  -266799;1;0;false;false;;;;;;
                                  -266800;2;0;false;false;63;95;191;;;
                                  -266802;1;0;false;false;;;;;;
                                  -266803;2;0;false;false;63;95;191;;;
                                  -266805;1;0;false;false;;;;;;
                                  -266806;5;0;false;false;63;95;191;;;
                                  -266811;1;0;false;false;;;;;;
                                  -266812;2;0;false;false;63;95;191;;;
                                  -266814;1;0;false;false;;;;;;
                                  -266815;4;0;false;false;63;95;191;;;
                                  -266819;1;0;false;false;;;;;;
                                  -266820;3;0;false;false;63;95;191;;;
                                  -266823;3;0;false;false;;;;;;
                                  -266826;1;0;false;false;63;95;191;;;
                                  -266827;1;0;false;false;;;;;;
                                  -266828;4;0;false;false;63;95;191;;;
                                  -266832;1;0;false;false;;;;;;
                                  -266833;4;0;false;false;63;95;191;;;
                                  -266837;1;0;false;false;;;;;;
                                  -266838;7;0;false;false;63;95;191;;;
                                  -266845;1;0;false;false;;;;;;
                                  -266846;9;0;false;false;63;95;191;;;
                                  -266855;2;0;false;false;;;;;;
                                  -266857;2;0;false;false;63;95;191;;;
                                  -266859;1;0;false;false;;;;;;
                                  -266860;3;0;false;false;63;95;191;;;
                                  -266863;1;0;false;false;;;;;;
                                  -266864;9;0;false;false;63;95;191;;;
                                  -266873;1;0;false;false;;;;;;
                                  -266874;2;0;false;false;63;95;191;;;
                                  -266876;1;0;false;false;;;;;;
                                  -266877;6;0;false;false;63;95;191;;;
                                  -266883;1;0;false;false;;;;;;
                                  -266884;3;0;false;false;63;95;191;;;
                                  -266887;1;0;false;false;;;;;;
                                  -266888;8;0;false;false;63;95;191;;;
                                  -266896;1;0;false;false;;;;;;
                                  -266897;4;0;false;false;63;95;191;;;
                                  -266901;4;0;false;false;;;;;;
                                  -266905;1;0;false;false;63;95;191;;;
                                  -266906;1;0;false;false;;;;;;
                                  -266907;2;0;false;false;63;95;191;;;
                                  -266909;1;0;false;false;;;;;;
                                  -266910;2;0;false;false;63;95;191;;;
                                  -266912;1;0;false;false;;;;;;
                                  -266913;4;0;false;false;63;95;191;;;
                                  -266917;1;0;false;false;;;;;;
                                  -266918;10;0;false;false;63;95;191;;;
                                  -266928;3;0;false;false;;;;;;
                                  -266931;1;0;false;false;63;95;191;;;
                                  -266932;1;0;false;false;;;;;;
                                  -266933;3;0;false;false;127;127;159;;;
                                  -266936;3;0;false;false;;;;;;
                                  -266939;1;0;false;false;63;95;191;;;
                                  -266940;3;0;false;false;;;;;;
                                  -266943;1;0;false;false;63;95;191;;;
                                  -266944;1;0;false;false;;;;;;
                                  -266945;7;1;false;false;127;159;191;;;
                                  -266952;11;0;false;false;63;95;191;;;
                                  -266963;1;0;false;false;;;;;;
                                  -266964;6;0;false;false;63;95;191;;;
                                  -266970;1;0;false;false;;;;;;
                                  -266971;2;0;false;false;63;95;191;;;
                                  -266973;1;0;false;false;;;;;;
                                  -266974;3;0;false;false;63;95;191;;;
                                  -266977;1;0;false;false;;;;;;
                                  -266978;4;0;false;false;63;95;191;;;
                                  -266982;1;0;false;false;;;;;;
                                  -266983;6;0;false;false;63;95;191;;;
                                  -266989;3;0;false;false;;;;;;
                                  -266992;1;0;false;false;63;95;191;;;
                                  -266993;1;0;false;false;;;;;;
                                  -266994;7;1;false;false;127;159;191;;;
                                  -267001;14;0;false;false;63;95;191;;;
                                  -267015;1;0;false;false;;;;;;
                                  -267016;6;0;false;false;63;95;191;;;
                                  -267022;1;0;false;false;;;;;;
                                  -267023;2;0;false;false;63;95;191;;;
                                  -267025;1;0;false;false;;;;;;
                                  -267026;4;0;false;false;63;95;191;;;
                                  -267030;1;0;false;false;;;;;;
                                  -267031;5;0;false;false;63;95;191;;;
                                  -267036;1;0;false;false;;;;;;
                                  -267037;8;0;false;false;63;95;191;;;
                                  -267045;3;0;false;false;;;;;;
                                  -267048;1;0;false;false;63;95;191;;;
                                  -267049;1;0;false;false;;;;;;
                                  -267050;7;1;false;false;127;159;191;;;
                                  -267057;9;0;false;false;63;95;191;;;
                                  -267066;1;0;false;false;;;;;;
                                  -267067;6;0;false;false;63;95;191;;;
                                  -267073;1;0;false;false;;;;;;
                                  -267074;2;0;false;false;63;95;191;;;
                                  -267076;1;0;false;false;;;;;;
                                  -267077;3;0;false;false;63;95;191;;;
                                  -267080;1;0;false;false;;;;;;
                                  -267081;4;0;false;false;63;95;191;;;
                                  -267085;3;0;false;false;;;;;;
                                  -267088;2;0;false;false;63;95;191;;;
                                  -267090;2;0;false;false;;;;;;
                                  -267092;4;1;false;false;127;0;85;;;
                                  -267096;1;0;false;false;;;;;;
                                  -267097;16;0;false;false;0;0;0;;;
                                  -267113;3;1;false;false;127;0;85;;;
                                  -267116;1;0;false;false;;;;;;
                                  -267117;12;0;false;false;0;0;0;;;
                                  -267129;1;0;false;false;;;;;;
                                  -267130;3;1;false;false;127;0;85;;;
                                  -267133;1;0;false;false;;;;;;
                                  -267134;15;0;false;false;0;0;0;;;
                                  -267149;1;0;false;false;;;;;;
                                  -267150;3;1;false;false;127;0;85;;;
                                  -267153;1;0;false;false;;;;;;
                                  -267154;10;0;false;false;0;0;0;;;
                                  -267164;1;0;false;false;;;;;;
                                  -267165;1;0;false;false;0;0;0;;;
                                  -267166;3;0;false;false;;;;;;
                                  -267169;2;1;false;false;127;0;85;;;
                                  -267171;1;0;false;false;;;;;;
                                  -267172;12;0;false;false;0;0;0;;;
                                  -267184;1;0;false;false;;;;;;
                                  -267185;2;0;false;false;0;0;0;;;
                                  -267187;1;0;false;false;;;;;;
                                  -267188;12;0;false;false;0;0;0;;;
                                  -267200;1;0;false;false;;;;;;
                                  -267201;1;0;false;false;0;0;0;;;
                                  -267202;4;0;false;false;;;;;;
                                  -267206;38;0;false;false;63;127;95;;;
                                  -267244;2;0;false;false;;;;;;
                                  -267246;6;1;false;false;127;0;85;;;
                                  -267252;1;0;false;false;0;0;0;;;
                                  -267253;3;0;false;false;;;;;;
                                  -267256;1;0;false;false;0;0;0;;;
                                  -267257;3;0;false;false;;;;;;
                                  -267260;2;1;false;false;127;0;85;;;
                                  -267262;1;0;false;false;;;;;;
                                  -267263;12;0;false;false;0;0;0;;;
                                  -267275;1;0;false;false;;;;;;
                                  -267276;1;0;false;false;0;0;0;;;
                                  -267277;1;0;false;false;;;;;;
                                  -267278;12;0;false;false;0;0;0;;;
                                  -267290;1;0;false;false;;;;;;
                                  -267291;1;0;false;false;0;0;0;;;
                                  -267292;4;0;false;false;;;;;;
                                  -267296;48;0;false;false;63;127;95;;;
                                  -267344;2;0;false;false;;;;;;
                                  -267346;32;0;false;false;0;0;0;;;
                                  -267378;1;0;false;false;;;;;;
                                  -267379;11;0;false;false;0;0;0;;;
                                  -267390;1;0;false;false;;;;;;
                                  -267391;1;0;false;false;0;0;0;;;
                                  -267392;1;0;false;false;;;;;;
                                  -267393;12;0;false;false;0;0;0;;;
                                  -267405;1;0;false;false;;;;;;
                                  -267406;4;1;false;false;127;0;85;;;
                                  -267410;2;0;false;false;0;0;0;;;
                                  -267412;3;0;false;false;;;;;;
                                  -267415;1;0;false;false;0;0;0;;;
                                  -267416;3;0;false;false;;;;;;
                                  -267419;2;1;false;false;127;0;85;;;
                                  -267421;1;0;false;false;;;;;;
                                  -267422;12;0;false;false;0;0;0;;;
                                  -267434;1;0;false;false;;;;;;
                                  -267435;1;0;false;false;0;0;0;;;
                                  -267436;1;0;false;false;;;;;;
                                  -267437;11;0;false;false;0;0;0;;;
                                  -267448;1;0;false;false;;;;;;
                                  -267449;1;0;false;false;0;0;0;;;
                                  -267450;1;0;false;false;;;;;;
                                  -267451;14;0;false;false;0;0;0;;;
                                  -267465;1;0;false;false;;;;;;
                                  -267466;2;0;false;false;0;0;0;;;
                                  -267468;1;0;false;false;;;;;;
                                  -267469;11;0;false;false;0;0;0;;;
                                  -267480;1;0;false;false;;;;;;
                                  -267481;1;0;false;false;0;0;0;;;
                                  -267482;1;0;false;false;;;;;;
                                  -267483;11;0;false;false;0;0;0;;;
                                  -267494;1;0;false;false;;;;;;
                                  -267495;1;0;false;false;0;0;0;;;
                                  -267496;1;0;false;false;;;;;;
                                  -267497;15;0;false;false;0;0;0;;;
                                  -267512;1;0;false;false;;;;;;
                                  -267513;1;0;false;false;0;0;0;;;
                                  -267514;4;0;false;false;;;;;;
                                  -267518;48;0;false;false;63;127;95;;;
                                  -267566;2;0;false;false;;;;;;
                                  -267568;65;0;false;false;63;127;95;;;
                                  -267633;2;0;false;false;;;;;;
                                  -267635;78;0;false;false;63;127;95;;;
                                  -267713;2;0;false;false;;;;;;
                                  -267715;3;1;false;false;127;0;85;;;
                                  -267718;1;0;false;false;;;;;;
                                  -267719;12;0;false;false;0;0;0;;;
                                  -267731;1;0;false;false;;;;;;
                                  -267732;1;0;false;false;0;0;0;;;
                                  -267733;1;0;false;false;;;;;;
                                  -267734;9;0;false;false;0;0;0;;;
                                  -267743;1;0;false;false;;;;;;
                                  -267744;1;0;false;false;0;0;0;;;
                                  -267745;1;0;false;false;;;;;;
                                  -267746;15;0;false;false;0;0;0;;;
                                  -267761;4;0;false;false;;;;;;
                                  -267765;3;1;false;false;127;0;85;;;
                                  -267768;1;0;false;false;;;;;;
                                  -267769;11;0;false;false;0;0;0;;;
                                  -267780;1;0;false;false;;;;;;
                                  -267781;1;0;false;false;0;0;0;;;
                                  -267782;1;0;false;false;;;;;;
                                  -267783;11;0;false;false;0;0;0;;;
                                  -267794;1;0;false;false;;;;;;
                                  -267795;1;0;false;false;0;0;0;;;
                                  -267796;1;0;false;false;;;;;;
                                  -267797;10;0;false;false;0;0;0;;;
                                  -267807;4;0;false;false;;;;;;
                                  -267811;32;0;false;false;0;0;0;;;
                                  -267843;1;0;false;false;;;;;;
                                  -267844;11;0;false;false;0;0;0;;;
                                  -267855;1;0;false;false;;;;;;
                                  -267856;1;0;false;false;0;0;0;;;
                                  -267857;1;0;false;false;;;;;;
                                  -267858;12;0;false;false;0;0;0;;;
                                  -267870;1;0;false;false;;;;;;
                                  -267871;1;0;false;false;0;0;0;;;
                                  -267872;1;0;false;false;;;;;;
                                  -267873;12;0;false;false;0;0;0;;;
                                  -267885;1;0;false;false;;;;;;
                                  -267886;4;1;false;false;127;0;85;;;
                                  -267890;2;0;false;false;0;0;0;;;
                                  -267892;3;0;false;false;;;;;;
                                  -267895;1;0;false;false;0;0;0;;;
                                  -267896;3;0;false;false;;;;;;
                                  -267899;2;1;false;false;127;0;85;;;
                                  -267901;1;0;false;false;;;;;;
                                  -267902;12;0;false;false;0;0;0;;;
                                  -267914;1;0;false;false;;;;;;
                                  -267915;1;0;false;false;0;0;0;;;
                                  -267916;1;0;false;false;;;;;;
                                  -267917;11;0;false;false;0;0;0;;;
                                  -267928;1;0;false;false;;;;;;
                                  -267929;2;0;false;false;0;0;0;;;
                                  -267931;1;0;false;false;;;;;;
                                  -267932;11;0;false;false;0;0;0;;;
                                  -267943;1;0;false;false;;;;;;
                                  -267944;1;0;false;false;0;0;0;;;
                                  -267945;1;0;false;false;;;;;;
                                  -267946;11;0;false;false;0;0;0;;;
                                  -267957;1;0;false;false;;;;;;
                                  -267958;1;0;false;false;0;0;0;;;
                                  -267959;1;0;false;false;;;;;;
                                  -267960;15;0;false;false;0;0;0;;;
                                  -267975;1;0;false;false;;;;;;
                                  -267976;1;0;false;false;0;0;0;;;
                                  -267977;4;0;false;false;;;;;;
                                  -267981;69;0;false;false;63;127;95;;;
                                  -268050;2;0;false;false;;;;;;
                                  -268052;32;0;false;false;0;0;0;;;
                                  -268084;1;0;false;false;;;;;;
                                  -268085;1;0;false;false;0;0;0;;;
                                  -268086;1;0;false;false;;;;;;
                                  -268087;10;0;false;false;0;0;0;;;
                                  -268097;1;0;false;false;;;;;;
                                  -268098;2;0;false;false;0;0;0;;;
                                  -268100;1;0;false;false;;;;;;
                                  -268101;4;1;false;false;127;0;85;;;
                                  -268105;2;0;false;false;0;0;0;;;
                                  -268107;4;0;false;false;;;;;;
                                  -268111;52;0;false;false;63;127;95;;;
                                  -268163;2;0;false;false;;;;;;
                                  -268165;19;0;false;false;0;0;0;;;
                                  -268184;3;0;false;false;;;;;;
                                  -268187;1;0;false;false;0;0;0;;;
                                  -268188;3;0;false;false;;;;;;
                                  -268191;4;1;false;false;127;0;85;;;
                                  -268195;1;0;false;false;;;;;;
                                  -268196;1;0;false;false;0;0;0;;;
                                  -268197;4;0;false;false;;;;;;
                                  -268201;46;0;false;false;63;127;95;;;
                                  -268247;2;0;false;false;;;;;;
                                  -268249;32;0;false;false;0;0;0;;;
                                  -268281;1;0;false;false;;;;;;
                                  -268282;1;0;false;false;0;0;0;;;
                                  -268283;1;0;false;false;;;;;;
                                  -268284;9;0;false;false;0;0;0;;;
                                  -268293;1;0;false;false;;;;;;
                                  -268294;1;0;false;false;0;0;0;;;
                                  -268295;1;0;false;false;;;;;;
                                  -268296;15;0;false;false;0;0;0;;;
                                  -268311;1;0;false;false;;;;;;
                                  -268312;11;0;false;false;0;0;0;;;
                                  -268323;1;0;false;false;;;;;;
                                  -268324;1;0;false;false;0;0;0;;;
                                  -268325;1;0;false;false;;;;;;
                                  -268326;12;0;false;false;0;0;0;;;
                                  -268338;1;0;false;false;;;;;;
                                  -268339;4;1;false;false;127;0;85;;;
                                  -268343;2;0;false;false;0;0;0;;;
                                  -268345;4;0;false;false;;;;;;
                                  -268349;52;0;false;false;63;127;95;;;
                                  -268401;2;0;false;false;;;;;;
                                  -268403;19;0;false;false;0;0;0;;;
                                  -268422;3;0;false;false;;;;;;
                                  -268425;1;0;false;false;0;0;0;;;
                                  -268426;3;0;false;false;;;;;;
                                  -268429;1;0;false;false;0;0;0;;;
                                  -268430;2;0;false;false;;;;;;
                                  -268432;3;0;false;false;63;95;191;;;
                                  -268435;3;0;false;false;;;;;;
                                  -268438;1;0;false;false;63;95;191;;;
                                  -268439;1;0;false;false;;;;;;
                                  -268440;7;0;false;false;63;95;191;;;
                                  -268447;1;0;false;false;;;;;;
                                  -268448;3;0;false;false;63;95;191;;;
                                  -268451;1;0;false;false;;;;;;
                                  -268452;5;0;false;false;63;95;191;;;
                                  -268457;3;0;false;false;;;;;;
                                  -268460;1;0;false;false;63;95;191;;;
                                  -268461;1;0;false;false;;;;;;
                                  -268462;3;0;false;false;127;127;159;;;
                                  -268465;3;0;false;false;;;;;;
                                  -268468;1;0;false;false;63;95;191;;;
                                  -268469;4;0;false;false;;;;;;
                                  -268473;1;0;false;false;63;95;191;;;
                                  -268474;1;0;false;false;;;;;;
                                  -268475;7;1;false;false;127;159;191;;;
                                  -268482;18;0;false;false;63;95;191;;;
                                  -268500;1;0;false;false;;;;;;
                                  -268501;6;0;false;false;63;95;191;;;
                                  -268507;1;0;false;false;;;;;;
                                  -268508;4;0;false;false;63;95;191;;;
                                  -268512;1;0;false;false;;;;;;
                                  -268513;5;0;false;false;63;95;191;;;
                                  -268518;1;0;false;false;;;;;;
                                  -268519;6;0;false;false;63;95;191;;;
                                  -268525;1;0;false;false;;;;;;
                                  -268526;6;0;false;false;63;95;191;;;
                                  -268532;4;0;false;false;;;;;;
                                  -268536;1;0;false;false;63;95;191;;;
                                  -268537;2;0;false;false;;;;;;
                                  -268539;8;0;false;false;63;95;191;;;
                                  -268547;3;0;false;false;;;;;;
                                  -268550;2;0;false;false;63;95;191;;;
                                  -268552;2;0;false;false;;;;;;
                                  -268554;4;1;false;false;127;0;85;;;
                                  -268558;1;0;false;false;;;;;;
                                  -268559;15;0;false;false;0;0;0;;;
                                  -268574;3;1;false;false;127;0;85;;;
                                  -268577;1;0;false;false;;;;;;
                                  -268578;19;0;false;false;0;0;0;;;
                                  -268597;1;0;false;false;;;;;;
                                  -268598;1;0;false;false;0;0;0;;;
                                  -268599;3;0;false;false;;;;;;
                                  -268602;14;0;false;false;0;0;0;;;
                                  -268616;1;0;false;false;;;;;;
                                  -268617;14;0;false;false;0;0;0;;;
                                  -268631;1;0;false;false;;;;;;
                                  -268632;1;0;false;false;0;0;0;;;
                                  -268633;1;0;false;false;;;;;;
                                  -268634;16;0;false;false;0;0;0;;;
                                  -268650;1;0;false;false;;;;;;
                                  -268651;8;0;false;false;0;0;0;;;
                                  -268659;3;0;false;false;;;;;;
                                  -268662;3;1;false;false;127;0;85;;;
                                  -268665;1;0;false;false;;;;;;
                                  -268666;12;0;false;false;0;0;0;;;
                                  -268678;5;0;false;false;;;;;;
                                  -268683;72;0;false;false;63;127;95;;;
                                  -268755;1;0;false;false;;;;;;
                                  -268756;70;0;false;false;63;127;95;;;
                                  -268826;1;0;false;false;;;;;;
                                  -268827;37;0;false;false;63;127;95;;;
                                  -268864;1;0;false;false;;;;;;
                                  -268865;2;1;false;false;127;0;85;;;
                                  -268867;1;0;false;false;;;;;;
                                  -268868;19;0;false;false;0;0;0;;;
                                  -268887;1;0;false;false;;;;;;
                                  -268888;2;0;false;false;0;0;0;;;
                                  -268890;1;0;false;false;;;;;;
                                  -268891;1;0;false;false;0;0;0;;;
                                  -268892;1;0;false;false;;;;;;
                                  -268893;2;0;false;false;0;0;0;;;
                                  -268895;1;0;false;false;;;;;;
                                  -268896;15;0;false;false;0;0;0;;;
                                  -268911;1;0;false;false;;;;;;
                                  -268912;1;0;false;false;0;0;0;;;
                                  -268913;1;0;false;false;;;;;;
                                  -268914;18;0;false;false;0;0;0;;;
                                  -268932;1;0;false;false;;;;;;
                                  -268933;2;0;false;false;0;0;0;;;
                                  -268935;4;0;false;false;;;;;;
                                  -268939;29;0;false;false;0;0;0;;;
                                  -268968;1;0;false;false;;;;;;
                                  -268969;2;0;false;false;0;0;0;;;
                                  -268971;1;0;false;false;;;;;;
                                  -268972;30;0;false;false;0;0;0;;;
                                  -269002;1;0;false;false;;;;;;
                                  -269003;1;0;false;false;0;0;0;;;
                                  -269004;4;0;false;false;;;;;;
                                  -269008;6;1;false;false;127;0;85;;;
                                  -269014;1;0;false;false;0;0;0;;;
                                  -269015;3;0;false;false;;;;;;
                                  -269018;1;0;false;false;0;0;0;;;
                                  -269019;3;0;false;false;;;;;;
                                  -269022;27;0;false;false;0;0;0;;;
                                  -269049;9;0;false;false;;;;;;
                                  -269058;59;0;false;false;63;127;95;;;
                                  -269117;1;0;false;false;;;;;;
                                  -269118;11;0;false;false;0;0;0;;;
                                  -269129;1;0;false;false;;;;;;
                                  -269130;1;0;false;false;0;0;0;;;
                                  -269131;1;0;false;false;;;;;;
                                  -269132;35;0;false;false;0;0;0;;;
                                  -269167;3;0;false;false;;;;;;
                                  -269170;62;0;false;false;63;127;95;;;
                                  -269232;1;0;false;false;;;;;;
                                  -269233;65;0;false;false;63;127;95;;;
                                  -269298;1;0;false;false;;;;;;
                                  -269299;38;0;false;false;63;127;95;;;
                                  -269337;1;0;false;false;;;;;;
                                  -269338;2;1;false;false;127;0;85;;;
                                  -269340;1;0;false;false;;;;;;
                                  -269341;12;0;false;false;0;0;0;;;
                                  -269353;1;0;false;false;;;;;;
                                  -269354;1;0;false;false;0;0;0;;;
                                  -269355;1;0;false;false;;;;;;
                                  -269356;22;0;false;false;0;0;0;;;
                                  -269378;1;0;false;false;;;;;;
                                  -269379;1;0;false;false;0;0;0;;;
                                  -269380;1;0;false;false;;;;;;
                                  -269381;1;0;false;false;0;0;0;;;
                                  -269382;1;0;false;false;;;;;;
                                  -269383;2;0;false;false;0;0;0;;;
                                  -269385;4;0;false;false;;;;;;
                                  -269389;9;0;false;false;0;0;0;;;
                                  -269398;1;0;false;false;;;;;;
                                  -269399;2;0;false;false;0;0;0;;;
                                  -269401;1;0;false;false;;;;;;
                                  -269402;35;0;false;false;0;0;0;;;
                                  -269437;1;0;false;false;;;;;;
                                  -269438;1;0;false;false;0;0;0;;;
                                  -269439;1;0;false;false;;;;;;
                                  -269440;3;0;false;false;0;0;0;;;
                                  -269443;1;0;false;false;;;;;;
                                  -269444;1;0;false;false;0;0;0;;;
                                  -269445;4;0;false;false;;;;;;
                                  -269449;14;0;false;false;0;0;0;;;
                                  -269463;3;0;false;false;;;;;;
                                  -269466;1;0;false;false;0;0;0;;;
                                  -269467;3;0;false;false;;;;;;
                                  -269470;2;1;false;false;127;0;85;;;
                                  -269472;1;0;false;false;;;;;;
                                  -269473;12;0;false;false;0;0;0;;;
                                  -269485;1;0;false;false;;;;;;
                                  -269486;2;0;false;false;0;0;0;;;
                                  -269488;1;0;false;false;;;;;;
                                  -269489;9;0;false;false;0;0;0;;;
                                  -269498;1;0;false;false;;;;;;
                                  -269499;1;0;false;false;0;0;0;;;
                                  -269500;4;0;false;false;;;;;;
                                  -269504;9;0;false;false;0;0;0;;;
                                  -269513;1;0;false;false;;;;;;
                                  -269514;11;0;false;false;0;0;0;;;
                                  -269525;1;0;false;false;;;;;;
                                  -269526;1;0;false;false;0;0;0;;;
                                  -269527;1;0;false;false;;;;;;
                                  -269528;17;0;false;false;0;0;0;;;
                                  -269545;4;0;false;false;;;;;;
                                  -269549;62;0;false;false;63;127;95;;;
                                  -269611;2;0;false;false;;;;;;
                                  -269613;70;0;false;false;63;127;95;;;
                                  -269683;2;0;false;false;;;;;;
                                  -269685;44;0;false;false;63;127;95;;;
                                  -269729;2;0;false;false;;;;;;
                                  -269731;20;0;false;false;0;0;0;;;
                                  -269751;1;0;false;false;;;;;;
                                  -269752;2;0;false;false;0;0;0;;;
                                  -269754;1;0;false;false;;;;;;
                                  -269755;12;0;false;false;0;0;0;;;
                                  -269767;1;0;false;false;;;;;;
                                  -269768;1;0;false;false;0;0;0;;;
                                  -269769;1;0;false;false;;;;;;
                                  -269770;9;0;false;false;0;0;0;;;
                                  -269779;1;0;false;false;;;;;;
                                  -269780;1;0;false;false;0;0;0;;;
                                  -269781;1;0;false;false;;;;;;
                                  -269782;23;0;false;false;0;0;0;;;
                                  -269805;4;0;false;false;;;;;;
                                  -269809;64;0;false;false;63;127;95;;;
                                  -269873;2;0;false;false;;;;;;
                                  -269875;71;0;false;false;63;127;95;;;
                                  -269946;2;0;false;false;;;;;;
                                  -269948;27;0;false;false;63;127;95;;;
                                  -269975;2;0;false;false;;;;;;
                                  -269977;2;1;false;false;127;0;85;;;
                                  -269979;1;0;false;false;;;;;;
                                  -269980;21;0;false;false;0;0;0;;;
                                  -270001;1;0;false;false;;;;;;
                                  -270002;1;0;false;false;0;0;0;;;
                                  -270003;1;0;false;false;;;;;;
                                  -270004;2;0;false;false;0;0;0;;;
                                  -270006;1;0;false;false;;;;;;
                                  -270007;1;0;false;false;0;0;0;;;
                                  -270008;5;0;false;false;;;;;;
                                  -270013;20;0;false;false;0;0;0;;;
                                  -270033;1;0;false;false;;;;;;
                                  -270034;1;0;false;false;0;0;0;;;
                                  -270035;1;0;false;false;;;;;;
                                  -270036;2;0;false;false;0;0;0;;;
                                  -270038;4;0;false;false;;;;;;
                                  -270042;1;0;false;false;0;0;0;;;
                                  -270043;4;0;false;false;;;;;;
                                  -270047;8;0;false;false;0;0;0;;;
                                  -270055;1;0;false;false;;;;;;
                                  -270056;1;0;false;false;0;0;0;;;
                                  -270057;1;0;false;false;;;;;;
                                  -270058;12;0;false;false;0;0;0;;;
                                  -270070;4;0;false;false;;;;;;
                                  -270074;9;0;false;false;0;0;0;;;
                                  -270083;1;0;false;false;;;;;;
                                  -270084;1;0;false;false;0;0;0;;;
                                  -270085;1;0;false;false;;;;;;
                                  -270086;34;0;false;false;0;0;0;;;
                                  -270120;4;0;false;false;;;;;;
                                  -270124;2;1;false;false;127;0;85;;;
                                  -270126;1;0;false;false;;;;;;
                                  -270127;12;0;false;false;0;0;0;;;
                                  -270139;1;0;false;false;;;;;;
                                  -270140;2;0;false;false;0;0;0;;;
                                  -270142;1;0;false;false;;;;;;
                                  -270143;4;1;false;false;127;0;85;;;
                                  -270147;1;0;false;false;0;0;0;;;
                                  -270148;1;0;false;false;;;;;;
                                  -270149;1;0;false;false;0;0;0;;;
                                  -270150;5;0;false;false;;;;;;
                                  -270155;47;0;false;false;0;0;0;;;
                                  -270202;4;0;false;false;;;;;;
                                  -270206;1;0;false;false;0;0;0;;;
                                  -270207;3;0;false;false;;;;;;
                                  -270210;1;0;false;false;0;0;0;;;
                                  -270211;3;0;false;false;;;;;;
                                  -270214;53;0;false;false;63;127;95;;;
                                  -270267;1;0;false;false;;;;;;
                                  -270268;63;0;false;false;63;127;95;;;
                                  -270331;1;0;false;false;;;;;;
                                  -270332;19;0;false;false;0;0;0;;;
                                  -270351;7;0;false;false;;;;;;
                                  -270358;59;0;false;false;63;127;95;;;
                                  -270417;1;0;false;false;;;;;;
                                  -270418;5;1;false;false;127;0;85;;;
                                  -270423;10;0;false;false;0;0;0;;;
                                  -270433;2;0;false;false;;;;;;
                                  -270435;1;0;false;false;0;0;0;;;
                                  -270436;2;0;false;false;;;;;;
                                  -270438;1;0;false;false;0;0;0;;;
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/tab.png b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/tab.png
                                  deleted file mode 100644
                                  index cca224fa..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/tab.png and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/text.txt b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/text.txt
                                  deleted file mode 100644
                                  index 61429ef6..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/text.txt
                                  +++ /dev/null
                                  @@ -1,7951 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2000, 2005 IBM Corporation and others.
                                  - * All rights reserved. This program and the accompanying materials
                                  - * are made available under the terms of the Eclipse Public License v1.0
                                  - * which accompanies this distribution, and is available at
                                  - * http://www.eclipse.org/legal/epl-v10.html
                                  - *
                                  - * Contributors:
                                  - *     IBM Corporation - initial API and implementation
                                  - *******************************************************************************/
                                  -package org.eclipse.swt.custom;
                                  -
                                  -
                                  -import java.util.*;
                                  -
                                  -import org.eclipse.swt.*;
                                  -import org.eclipse.swt.accessibility.*;
                                  -import org.eclipse.swt.dnd.*;
                                  -import org.eclipse.swt.events.*;
                                  -import org.eclipse.swt.graphics.*;
                                  -import org.eclipse.swt.internal.*;
                                  -import org.eclipse.swt.printing.*;
                                  -import org.eclipse.swt.widgets.*;
                                  -
                                  -/**
                                  - * A StyledText is an editable user interface object that displays lines 
                                  - * of text.  The following style attributes can be defined for the text: 
                                  - * <ul>
                                  - * <li>foreground color 
                                  - * <li>background color
                                  - * <li>font style (bold, italic, bold-italic, regular)
                                  - * <li>underline
                                  - * <li>strikeout
                                  - * </ul>
                                  - * <p>
                                  - * In addition to text style attributes, the background color of a line may 
                                  - * be specified.
                                  - * </p>
                                  - * <p>
                                  - * There are two ways to use this widget when specifying text style information.  
                                  - * You may use the API that is defined for StyledText or you may define your own 
                                  - * LineStyleListener.  If you define your own listener, you will be responsible 
                                  - * for maintaining the text style information for the widget.  IMPORTANT: You may 
                                  - * not define your own listener and use the StyledText API.  The following
                                  - * StyledText API is not supported if you have defined a LineStyleListener:
                                  - * <ul>
                                  - * <li>getStyleRangeAtOffset(int)
                                  - * <li>getStyleRanges()
                                  - * <li>replaceStyleRanges(int,int,StyleRange[])
                                  - * <li>setStyleRange(StyleRange)
                                  - * <li>setStyleRanges(StyleRange[])
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * There are two ways to use this widget when specifying line background colors.
                                  - * You may use the API that is defined for StyledText or you may define your own 
                                  - * LineBackgroundListener.  If you define your own listener, you will be responsible 
                                  - * for maintaining the line background color information for the widget.  
                                  - * IMPORTANT: You may not define your own listener and use the StyledText API.  
                                  - * The following StyledText API is not supported if you have defined a 
                                  - * LineBackgroundListener:
                                  - * <ul>
                                  - * <li>getLineBackground(int)
                                  - * <li>setLineBackground(int,int,Color)
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * The content implementation for this widget may also be user-defined.  To do so,
                                  - * you must implement the StyledTextContent interface and use the StyledText API
                                  - * setContent(StyledTextContent) to initialize the widget. 
                                  - * </p>
                                  - * <p>
                                  - * IMPORTANT: This class is <em>not</em> intended to be subclassed.
                                  - * </p>
                                  - * <dl>
                                  - * <dt><b>Styles:</b><dd>FULL_SELECTION, MULTI, READ_ONLY, SINGLE, WRAP
                                  - * <dt><b>Events:</b><dd>ExtendedModify, LineGetBackground, LineGetSegments, LineGetStyle, Modify, Selection, Verify, VerifyKey
                                  - * </dl>
                                  - */
                                  -public class StyledText extends Canvas {
                                  -	static final char TAB = '\t';
                                  -	static final String PlatformLineDelimiter = System.getProperty("line.separator");
                                  -	static final int BIDI_CARET_WIDTH = 3;
                                  -	static final int DEFAULT_WIDTH	= 64;
                                  -	static final int DEFAULT_HEIGHT = 64;
                                  -	static final int V_SCROLL_RATE = 50;
                                  -	static final int H_SCROLL_RATE = 10;
                                  -	
                                  -	static final int ExtendedModify = 3000;
                                  -	static final int LineGetBackground = 3001;
                                  -	static final int LineGetStyle = 3002;
                                  -	static final int TextChanging = 3003;
                                  -	static final int TextSet = 3004;
                                  -	static final int VerifyKey = 3005;
                                  -	static final int TextChanged = 3006;
                                  -	static final int LineGetSegments = 3007;
                                  -	
                                  -	Color selectionBackground;	// selection background color
                                  -	Color selectionForeground;	// selection foreground color
                                  -	StyledTextContent logicalContent;	// native content (default or user specified)
                                  -	StyledTextContent content;			// line wrapping content, same as logicalContent if word wrap is off
                                  -	DisplayRenderer renderer;
                                  -	Listener listener;
                                  -	TextChangeListener textChangeListener;	// listener for TextChanging, TextChanged and TextSet events from StyledTextContent
                                  -	DefaultLineStyler defaultLineStyler;// used for setStyles API when no LineStyleListener is registered
                                  -	LineCache lineCache;
                                  -	boolean userLineStyle = false;		// true=widget is using a user defined line style listener for line styles. false=widget is using the default line styler to store line styles
                                  -	boolean userLineBackground = false;	// true=widget is using a user defined line background listener for line backgrounds. false=widget is using the default line styler to store line backgrounds
                                  -	int verticalScrollOffset = 0;		// pixel based
                                  -	int horizontalScrollOffset = 0;		// pixel based
                                  -	int topIndex = 0;					// top visible line
                                  -	int lastPaintTopIndex = -1;
                                  -	int topOffset = 0;					// offset of first character in top line
                                  -	int clientAreaHeight = 0;			// the client area height. Needed to calculate content width for new 
                                  -										// visible lines during Resize callback
                                  -	int clientAreaWidth = 0;			// the client area width. Needed during Resize callback to determine 
                                  -										// if line wrap needs to be recalculated
                                  -	int lineHeight;						// line height=font height
                                  -	int tabLength = 4;					// number of characters in a tab
                                  -	int leftMargin;
                                  -	int topMargin;
                                  -	int rightMargin;
                                  -	int bottomMargin;
                                  -	Cursor ibeamCursor;		
                                  -	int columnX;							// keep track of the horizontal caret position
                                  -										// when changing lines/pages. Fixes bug 5935
                                  -	int caretOffset = 0;
                                  -	Point selection = new Point(0, 0);	// x and y are start and end caret offsets of selection
                                  -	Point clipboardSelection;           // x and y are start and end caret offsets of previous selection
                                  -	int selectionAnchor;				// position of selection anchor. 0 based offset from beginning of text
                                  -	Point doubleClickSelection;			// selection after last mouse double click
                                  -	boolean editable = true;
                                  -	boolean wordWrap = false;
                                  -	boolean doubleClickEnabled = true;	// see getDoubleClickEnabled 
                                  -	boolean overwrite = false;			// insert/overwrite edit mode
                                  -	int textLimit = -1;					// limits the number of characters the user can type in the widget. Unlimited by default.
                                  -	Hashtable keyActionMap = new Hashtable();
                                  -	Color background = null;			// workaround for bug 4791
                                  -	Color foreground = null;			//
                                  -	Clipboard clipboard;
                                  -	boolean mouseDown = false;
                                  -	boolean mouseDoubleClick = false;	// true=a double click ocurred. Don't do mouse swipe selection.
                                  -	int autoScrollDirection = SWT.NULL;	// the direction of autoscrolling (up, down, right, left)
                                  -	int autoScrollDistance = 0;
                                  -	int lastTextChangeStart;			// cache data of the 
                                  -	int lastTextChangeNewLineCount;		// last text changing 
                                  -	int lastTextChangeNewCharCount;		// event for use in the 
                                  -	int lastTextChangeReplaceLineCount;	// text changed handler
                                  -	int lastTextChangeReplaceCharCount;	
                                  -	boolean isMirrored;
                                  -	boolean bidiColoring = false;		// apply the BIDI algorithm on text segments of the same color
                                  -	Image leftCaretBitmap = null;
                                  -	Image rightCaretBitmap = null;
                                  -	int caretDirection = SWT.NULL;
                                  -	boolean advancing = true;
                                  -	Caret defaultCaret = null;
                                  -	boolean updateCaretDirection = true;
                                  -
                                  -	final static boolean IS_CARBON, IS_GTK, IS_MOTIF;
                                  -	final static boolean DOUBLE_BUFFER;
                                  -	static {
                                  -		String platform = SWT.getPlatform();
                                  -		IS_CARBON = "carbon".equals(platform);
                                  -		IS_GTK = "gtk".equals(platform);
                                  -		IS_MOTIF = "motif".equals(platform);
                                  -		DOUBLE_BUFFER = !IS_CARBON;
                                  -	}
                                  -
                                  -	/**
                                  -	 * The Printing class implements printing of a range of text.
                                  -	 * An instance of <class>Printing </class> is returned in the 
                                  -	 * StyledText#print(Printer) API. The run() method may be 
                                  -	 * invoked from any thread.
                                  -	 */
                                  -	static class Printing implements Runnable {
                                  -		final static int LEFT = 0;						// left aligned header/footer segment
                                  -		final static int CENTER = 1;					// centered header/footer segment
                                  -		final static int RIGHT = 2;						// right aligned header/footer segment
                                  -
                                  -		StyledText parent;
                                  -		Printer printer;
                                  -		PrintRenderer renderer;
                                  -		StyledTextPrintOptions printOptions;
                                  -		StyledTextContent printerContent;				// copy of the widget content
                                  -		Rectangle clientArea;							// client area to print on
                                  -		Font printerFont;
                                  -		FontData displayFontData;
                                  -		Hashtable printerColors;						// printer color cache for line backgrounds and style
                                  -		Hashtable lineBackgrounds = new Hashtable();	// cached line backgrounds
                                  -		Hashtable lineStyles = new Hashtable();			// cached line styles
                                  -		Hashtable bidiSegments = new Hashtable();		// cached bidi segments when running on a bidi platform
                                  -		GC gc;											// printer GC
                                  -		int pageWidth;									// width of a printer page in pixels
                                  -		int startPage;									// first page to print
                                  -		int endPage;									// last page to print
                                  -		int pageSize;									// number of lines on a page
                                  -		int startLine;									// first (wrapped) line to print
                                  -		int endLine;									// last (wrapped) line to print
                                  -		boolean singleLine;								// widget single line mode
                                  -		Point selection = null;					// selected text
                                  -		boolean mirrored;						//indicates the printing gc should be mirrored
                                  -
                                  -	/**
                                  -	 * Creates an instance of <class>Printing</class>.
                                  -	 * Copies the widget content and rendering data that needs 
                                  -	 * to be requested from listeners.
                                  -	 * </p>
                                  -	 * @param parent StyledText widget to print.
                                  -	 * @param printer printer device to print on.
                                  -	 * @param printOptions print options
                                  -	 */		
                                  -	Printing(StyledText parent, Printer printer, StyledTextPrintOptions printOptions) {
                                  -		PrinterData data = printer.getPrinterData();
                                  -
                                  -		this.parent = parent;
                                  -		this.printer = printer;
                                  -		this.printOptions = printOptions;
                                  -		this.mirrored = (parent.getStyle() & SWT.MIRRORED) != 0;
                                  -		singleLine = parent.isSingleLine();
                                  -		startPage = 1;
                                  -		endPage = Integer.MAX_VALUE;
                                  -		if (data.scope == PrinterData.PAGE_RANGE) {
                                  -			startPage = data.startPage;
                                  -			endPage = data.endPage;
                                  -			if (endPage < startPage) {
                                  -				int temp = endPage;
                                  -				endPage = startPage;
                                  -				startPage = temp;
                                  -			}			
                                  -		} 
                                  -		else 
                                  -		if (data.scope == PrinterData.SELECTION) {
                                  -			selection = parent.getSelectionRange();
                                  -		}
                                  -
                                  -		displayFontData = parent.getFont().getFontData()[0];
                                  -		copyContent(parent.getContent());
                                  -		cacheLineData(printerContent);
                                  -	}
                                  -	/**
                                  -	 * Caches the bidi segments of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache bidi segments for. 
                                  -	 * 	Relative to the start of the document.
                                  -	 * @param line line to cache bidi segments for. 
                                  -	 */
                                  -	void cacheBidiSegments(int lineOffset, String line) {
                                  -		int[] segments = parent.getBidiSegments(lineOffset, line);
                                  -		
                                  -		if (segments != null) {
                                  -			bidiSegments.put(new Integer(lineOffset), segments);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches the line background color of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache the background 
                                  -	 * 	color for. Relative to the start of the document.
                                  -	 * @param line line to cache the background color for
                                  -	 */
                                  -	void cacheLineBackground(int lineOffset, String line) {
                                  -		StyledTextEvent event = parent.getLineBackgroundData(lineOffset, line);
                                  -		
                                  -		if (event != null) {
                                  -			lineBackgrounds.put(new Integer(lineOffset), event);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches all line data that needs to be requested from a listener.
                                  -	 * </p>
                                  -	 * @param printerContent <class>StyledTextContent</class> to request 
                                  -	 * 	line data for.
                                  -	 */
                                  -	void cacheLineData(StyledTextContent printerContent) {	
                                  -		for (int i = 0; i < printerContent.getLineCount(); i++) {
                                  -			int lineOffset = printerContent.getOffsetAtLine(i);
                                  -			String line = printerContent.getLine(i);
                                  -	
                                  -			if (printOptions.printLineBackground) {
                                  -				cacheLineBackground(lineOffset, line);
                                  -			}
                                  -			if (printOptions.printTextBackground ||
                                  -				printOptions.printTextForeground ||
                                  -				printOptions.printTextFontStyle) {
                                  -				cacheLineStyle(lineOffset, line);
                                  -			}
                                  -			if (parent.isBidi()) {
                                  -				cacheBidiSegments(lineOffset, line);
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Caches all line styles of the given line.
                                  -	 * </p>
                                  -	 * @param lineOffset offset of the line to cache the styles for.
                                  -	 * 	Relative to the start of the document.
                                  -	 * @param line line to cache the styles for.
                                  -	 */
                                  -	void cacheLineStyle(int lineOffset, String line) {
                                  -		StyledTextEvent event = parent.getLineStyleData(lineOffset, line);
                                  -		
                                  -		if (event != null) {
                                  -			StyleRange[] styles = event.styles;
                                  -			for (int i = 0; i < styles.length; i++) {
                                  -				StyleRange styleCopy = null;
                                  -				if (!printOptions.printTextBackground && styles[i].background != null) {
                                  -					styleCopy = (StyleRange) styles[i].clone();
                                  -					styleCopy.background = null;
                                  -				}
                                  -				if (!printOptions.printTextForeground && styles[i].foreground != null) {
                                  -					if (styleCopy == null) {
                                  -						styleCopy = (StyleRange) styles[i].clone();
                                  -					}
                                  -					styleCopy.foreground = null;
                                  -				}
                                  -				if (!printOptions.printTextFontStyle && styles[i].fontStyle != SWT.NORMAL) {
                                  -					if (styleCopy == null) {
                                  -						styleCopy = (StyleRange) styles[i].clone();
                                  -					}
                                  -					styleCopy.fontStyle = SWT.NORMAL;
                                  -				}
                                  -				if (styleCopy != null) {
                                  -					styles[i] = styleCopy;
                                  -				}
                                  -			}	
                                  -			lineStyles.put(new Integer(lineOffset), event);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Copies the text of the specified <class>StyledTextContent</class>.
                                  -	 * </p>
                                  -	 * @param original the <class>StyledTextContent</class> to copy.
                                  -	 */
                                  -	void copyContent(StyledTextContent original) {
                                  -		int insertOffset = 0;
                                  -		
                                  -		printerContent = new DefaultContent();
                                  -		for (int i = 0; i < original.getLineCount(); i++) {
                                  -			int insertEndOffset;
                                  -			if (i < original.getLineCount() - 1) {
                                  -				insertEndOffset = original.getOffsetAtLine(i + 1);
                                  -			}
                                  -			else {
                                  -				insertEndOffset = original.getCharCount();
                                  -			}
                                  -			printerContent.replaceTextRange(insertOffset, 0, original.getTextRange(insertOffset, insertEndOffset - insertOffset));
                                  -			insertOffset = insertEndOffset;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Replaces all display colors in the cached line backgrounds and 
                                  -	 * line styles with printer colors.
                                  -	 */
                                  -	void createPrinterColors() {
                                  -		Enumeration values = lineBackgrounds.elements();
                                  -		printerColors = new Hashtable();
                                  -		while (values.hasMoreElements()) {
                                  -			StyledTextEvent event = (StyledTextEvent) values.nextElement();
                                  -			event.lineBackground = getPrinterColor(event.lineBackground);
                                  -		}
                                  -		
                                  -		values = lineStyles.elements();
                                  -		while (values.hasMoreElements()) {
                                  -			StyledTextEvent event = (StyledTextEvent) values.nextElement();
                                  -			for (int i = 0; i < event.styles.length; i++) {
                                  -				StyleRange style = event.styles[i];
                                  -				Color printerBackground = getPrinterColor(style.background);
                                  -				Color printerForeground = getPrinterColor(style.foreground);
                                  -				
                                  -				if (printerBackground != style.background || 
                                  -					printerForeground != style.foreground) {
                                  -					style = (StyleRange) style.clone();
                                  -					style.background = printerBackground;
                                  -					style.foreground = printerForeground;
                                  -					event.styles[i] = style;
                                  -				}
                                  -			}
                                  -		}		
                                  -	}
                                  -	/**
                                  -	 * Disposes of the resources and the <class>PrintRenderer</class>.
                                  -	 */
                                  -	void dispose() {
                                  -		if (printerColors != null) {
                                  -			Enumeration colors = printerColors.elements();
                                  -			
                                  -			while (colors.hasMoreElements()) {
                                  -				Color color = (Color) colors.nextElement();
                                  -				color.dispose();
                                  -			}
                                  -			printerColors = null;
                                  -		}
                                  -		if (gc != null) {
                                  -			gc.dispose();
                                  -			gc = null;
                                  -		}
                                  -		if (printerFont != null) {
                                  -			printerFont.dispose();
                                  -			printerFont = null;
                                  -		}
                                  -		if (renderer != null) {
                                  -			renderer.dispose();
                                  -			renderer = null;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Finish printing the indicated page.
                                  -	 * 
                                  -	 * @param page page that was printed
                                  -	 */
                                  -	void endPage(int page) {
                                  -		printDecoration(page, false);
                                  -		printer.endPage();
                                  -	}
                                  -	/**
                                  -	 * Creates a <class>PrintRenderer</class> and calculate the line range
                                  -	 * to print.
                                  -	 */
                                  -	void initializeRenderer() {
                                  -		Rectangle trim = printer.computeTrim(0, 0, 0, 0);
                                  -		Point dpi = printer.getDPI();
                                  -		
                                  -		printerFont = new Font(printer, displayFontData.getName(), displayFontData.getHeight(), SWT.NORMAL);
                                  -		clientArea = printer.getClientArea();
                                  -		pageWidth = clientArea.width;
                                  -		// one inch margin around text
                                  -		clientArea.x = dpi.x + trim.x; 				
                                  -		clientArea.y = dpi.y + trim.y;
                                  -		clientArea.width -= (clientArea.x + trim.width);
                                  -		clientArea.height -= (clientArea.y + trim.height); 
                                  -		
                                  -		// make the orientation of the printer gc match the control
                                  -		int style = mirrored ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -		gc = new GC(printer, style);
                                  -		gc.setFont(printerFont);
                                  -		renderer = new PrintRenderer(
                                  -			printer, printerFont, gc, printerContent,
                                  -			lineBackgrounds, lineStyles, bidiSegments, 
                                  -			parent.tabLength, clientArea);
                                  -		if (printOptions.header != null) {
                                  -			int lineHeight = renderer.getLineHeight();
                                  -			clientArea.y += lineHeight * 2;
                                  -			clientArea.height -= lineHeight * 2;
                                  -		}
                                  -		if (printOptions.footer != null) {
                                  -			clientArea.height -= renderer.getLineHeight() * 2;
                                  -		}
                                  -		pageSize = clientArea.height / renderer.getLineHeight();
                                  -		StyledTextContent content = renderer.getContent();
                                  -		startLine = 0;
                                  -		if (singleLine) {
                                  -			endLine = 0;
                                  -		}
                                  -		else {
                                  -			endLine = content.getLineCount() - 1;
                                  -		}
                                  -		PrinterData data = printer.getPrinterData();
                                  -		if (data.scope == PrinterData.PAGE_RANGE) {
                                  -			startLine = (startPage - 1) * pageSize;
                                  -		} 
                                  -		else
                                  -		if (data.scope == PrinterData.SELECTION) {
                                  -			startLine = content.getLineAtOffset(selection.x);
                                  -			if (selection.y > 0) {
                                  -				endLine = content.getLineAtOffset(selection.x + selection.y - 1);
                                  -			} 
                                  -			else {
                                  -				endLine = startLine - 1;
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Returns the printer color for the given display color.
                                  -	 * </p>
                                  -	 * @param color display color
                                  -	 * @return color create on the printer with the same RGB values 
                                  -	 * 	as the display color.
                                  - 	 */
                                  -	Color getPrinterColor(Color color) {
                                  -		Color printerColor = null;
                                  -		
                                  -		if (color != null) {
                                  -			printerColor = (Color) printerColors.get(color);		
                                  -			if (printerColor == null) {
                                  -				printerColor = new Color(printer, color.getRGB());
                                  -				printerColors.put(color, printerColor);
                                  -			}
                                  -		}
                                  -		return printerColor;
                                  -	}
                                  -	/**
                                  -	 * Prints the lines in the specified page range.
                                  -	 */
                                  -	void print() {
                                  -		StyledTextContent content = renderer.getContent();
                                  -		Color background = gc.getBackground();
                                  -		Color foreground = gc.getForeground();
                                  -		int lineHeight = renderer.getLineHeight();
                                  -		int paintY = clientArea.y;
                                  -		int page = startPage;
                                  -		
                                  -		for (int i = startLine; i <= endLine && page <= endPage; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			
                                  -			if (paintY == clientArea.y) {
                                  -				startPage(page);
                                  -			}
                                  -			renderer.drawLine(
                                  -				line, i, paintY, gc, background, foreground, true);
                                  -			if (paintY + lineHeight * 2 > clientArea.y + clientArea.height) {
                                  -				// close full page
                                  -				endPage(page);
                                  -				paintY = clientArea.y - lineHeight;
                                  -				page++;
                                  -			}
                                  -		}
                                  -		if (paintY > clientArea.y) {
                                  -			// close partial page
                                  -			endPage(page);
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Print header or footer decorations.
                                  -	 * 
                                  -	 * @param page page number to print, if specified in the StyledTextPrintOptions header or footer.
                                  -	 * @param header true = print the header, false = print the footer
                                  -	 */
                                  -	void printDecoration(int page, boolean header) {
                                  -		int lastSegmentIndex = 0;
                                  -		final int SegmentCount = 3;
                                  -		String text;
                                  -		
                                  -		if (header) {
                                  -			text = printOptions.header;
                                  -		}
                                  -		else {
                                  -			text = printOptions.footer;
                                  -		}
                                  -		if (text == null) {
                                  -			return;
                                  -		}
                                  -		for (int i = 0; i < SegmentCount; i++) {
                                  -			int segmentIndex = text.indexOf(StyledTextPrintOptions.SEPARATOR, lastSegmentIndex);
                                  -			String segment;
                                  -			
                                  -			if (segmentIndex == -1) {
                                  -				segment = text.substring(lastSegmentIndex);
                                  -				printDecorationSegment(segment, i, page, header);
                                  -				break;
                                  -			}
                                  -			else {
                                  -				segment = text.substring(lastSegmentIndex, segmentIndex);
                                  -				printDecorationSegment(segment, i, page, header);
                                  -				lastSegmentIndex = segmentIndex + StyledTextPrintOptions.SEPARATOR.length();
                                  -			}
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Print one segment of a header or footer decoration.
                                  -	 * Headers and footers have three different segments.
                                  -	 * One each for left aligned, centered, and right aligned text.
                                  -	 * 
                                  -	 * @param segment decoration segment to print
                                  -	 * @param alignment alignment of the segment. 0=left, 1=center, 2=right 
                                  -	 * @param page page number to print, if specified in the decoration segment.
                                  -	 * @param header true = print the header, false = print the footer
                                  -	 */
                                  -	void printDecorationSegment(String segment, int alignment, int page, boolean header) {		
                                  -		int pageIndex = segment.indexOf(StyledTextPrintOptions.PAGE_TAG);
                                  -		
                                  -		if (pageIndex != -1) {
                                  -			final int PageTagLength = StyledTextPrintOptions.PAGE_TAG.length();
                                  -			StringBuffer buffer = new StringBuffer(segment.substring (0, pageIndex));
                                  -			buffer.append (page);
                                  -			buffer.append (segment.substring(pageIndex + PageTagLength));
                                  -			segment = buffer.toString();
                                  -		}
                                  -		if (segment.length() > 0) {
                                  -			int segmentWidth;
                                  -			int drawX = 0;
                                  -			int drawY = 0;
                                  -			TextLayout layout = new TextLayout(printer);
                                  -			layout.setText(segment);
                                  -			layout.setFont(printerFont);
                                  -			segmentWidth = layout.getLineBounds(0).width;
                                  -			if (header) {
                                  -				drawY = clientArea.y - renderer.getLineHeight() * 2;
                                  -			}
                                  -			else {
                                  -				drawY = clientArea.y + clientArea.height + renderer.getLineHeight();
                                  -			}
                                  -			if (alignment == LEFT) {
                                  -				drawX = clientArea.x;
                                  -			}
                                  -			else				
                                  -			if (alignment == CENTER) {
                                  -				drawX = (pageWidth - segmentWidth) / 2;
                                  -			}
                                  -			else 
                                  -			if (alignment == RIGHT) {
                                  -				drawX = clientArea.x + clientArea.width - segmentWidth;
                                  -			}
                                  -			layout.draw(gc, drawX, drawY);
                                  -			layout.dispose();
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Starts a print job and prints the pages specified in the constructor.
                                  -	 */
                                  -	public void run() {
                                  -		String jobName = printOptions.jobName;
                                  -		
                                  -		if (jobName == null) {
                                  -			jobName = "Printing";
                                  -		}		
                                  -		if (printer.startJob(jobName)) {
                                  -			createPrinterColors();
                                  -			initializeRenderer();
                                  -			print();
                                  -			dispose();
                                  -			printer.endJob();			
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Start printing a new page.
                                  -	 * 
                                  -	 * @param page page number to be started
                                  -	 */
                                  -	void startPage(int page) {
                                  -		printer.startPage();
                                  -		printDecoration(page, true);
                                  -	}	
                                  -	}
                                  -	/**
                                  -	 * The <code>RTFWriter</code> class is used to write widget content as
                                  -	 * rich text. The implementation complies with the RTF specification 
                                  -	 * version 1.5.
                                  -	 * <p>
                                  -	 * toString() is guaranteed to return a valid RTF string only after 
                                  -	 * close() has been called. 
                                  -	 * </p>
                                  -	 * <p>
                                  -	 * Whole and partial lines and line breaks can be written. Lines will be
                                  -	 * formatted using the styles queried from the LineStyleListener, if 
                                  -	 * set, or those set directly in the widget. All styles are applied to
                                  -	 * the RTF stream like they are rendered by the widget. In addition, the 
                                  -	 * widget font name and size is used for the whole text.
                                  -	 * </p>
                                  -	 */
                                  -	class RTFWriter extends TextWriter {
                                  -		static final int DEFAULT_FOREGROUND = 0;
                                  -		static final int DEFAULT_BACKGROUND = 1;
                                  -		Vector colorTable = new Vector();
                                  -		boolean WriteUnicode;
                                  -		
                                  -	/**
                                  -	 * Creates a RTF writer that writes content starting at offset "start"
                                  -	 * in the document.  <code>start</code> and <code>length</code>can be set to specify partial 
                                  -	 * lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param start start offset of content to write, 0 based from 
                                  -	 * 	beginning of document
                                  -	 * @param length length of content to write
                                  -	 */
                                  -	public RTFWriter(int start, int length) {
                                  -		super(start, length);
                                  -		colorTable.addElement(getForeground());
                                  -		colorTable.addElement(getBackground());		
                                  -		setUnicode();
                                  -	}
                                  -	/**
                                  -	 * Closes the RTF writer. Once closed no more content can be written.
                                  -	 * <b>NOTE:</b>  <code>toString()</code> does not return a valid RTF string until 
                                  -	 * <code>close()</code> has been called.
                                  -	 */
                                  -	public void close() {
                                  -		if (!isClosed()) {
                                  -			writeHeader();
                                  -			write("\n}}\0");
                                  -			super.close();
                                  -		}
                                  -	}	
                                  -	/**
                                  -	 * Returns the index of the specified color in the RTF color table.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param color the color
                                  -	 * @param defaultIndex return value if color is null
                                  -	 * @return the index of the specified color in the RTF color table
                                  -	 * 	or "defaultIndex" if "color" is null.
                                  -	 */
                                  -	int getColorIndex(Color color, int defaultIndex) {
                                  -		int index;
                                  -		
                                  -		if (color == null) {
                                  -			index = defaultIndex;
                                  -		}
                                  -		else {		
                                  -			index = colorTable.indexOf(color);
                                  -			if (index == -1) {
                                  -				index = colorTable.size();
                                  -				colorTable.addElement(color);
                                  -			}
                                  -		}
                                  -		return index;
                                  -	}
                                  -	/**
                                  -	 * Determines if Unicode RTF should be written.
                                  -	 * Don't write Unicode RTF on Windows 95/98/ME or NT.
                                  -	 */
                                  -	void setUnicode() {
                                  -		final String Win95 = "windows 95";
                                  -		final String Win98 = "windows 98";
                                  -		final String WinME = "windows me";		
                                  -		final String WinNT = "windows nt";
                                  -		String osName = System.getProperty("os.name").toLowerCase();
                                  -		String osVersion = System.getProperty("os.version");
                                  -		int majorVersion = 0;
                                  -		
                                  -		if (osName.startsWith(WinNT) && osVersion != null) {
                                  -			int majorIndex = osVersion.indexOf('.');
                                  -			if (majorIndex != -1) {
                                  -				osVersion = osVersion.substring(0, majorIndex);
                                  -				try {
                                  -					majorVersion = Integer.parseInt(osVersion);
                                  -				}
                                  -				catch (NumberFormatException exception) {
                                  -					// ignore exception. version number remains unknown.
                                  -					// will write without Unicode
                                  -				}
                                  -			}
                                  -		}
                                  -		if (!osName.startsWith(Win95) &&
                                  -			!osName.startsWith(Win98) &&
                                  -			!osName.startsWith(WinME) &&
                                  -			(!osName.startsWith(WinNT) || majorVersion > 4)) {
                                  -			WriteUnicode = true;
                                  -		}
                                  -		else {
                                  -			WriteUnicode = false;
                                  -		}
                                  -	}
                                  -	/**
                                  -	 * Appends the specified segment of "string" to the RTF data.
                                  -	 * Copy from <code>start</code> up to, but excluding, <code>end</code>.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param string string to copy a segment from. Must not contain
                                  -	 * 	line breaks. Line breaks should be written using writeLineDelimiter()
                                  -	 * @param start start offset of segment. 0 based.
                                  -	 * @param end end offset of segment
                                  -	 */
                                  -	void write(String string, int start, int end) {
                                  -		for (int index = start; index < end; index++) {
                                  -			char ch = string.charAt(index);
                                  -			if (ch > 0xFF && WriteUnicode) {
                                  -				// write the sub string from the last escaped character 
                                  -				// to the current one. Fixes bug 21698.
                                  -				if (index > start) {
                                  -					write(string.substring(start, index));
                                  -				}
                                  -				write("\\u");
                                  -				write(Integer.toString((short) ch));
                                  -				write(' ');						// control word delimiter
                                  -				start = index + 1;
                                  -			}
                                  -			else
                                  -			if (ch == '}' || ch == '{' || ch == '\\') {
                                  -				// write the sub string from the last escaped character 
                                  -				// to the current one. Fixes bug 21698.
                                  -				if (index > start) {
                                  -					write(string.substring(start, index));
                                  -				}
                                  -				write('\\');
                                  -				write(ch);
                                  -				start = index + 1;
                                  -			}
                                  -		}
                                  -		// write from the last escaped character to the end.
                                  -		// Fixes bug 21698.
                                  -		if (start < end) {
                                  -			write(string.substring(start, end));
                                  -		}
                                  -	}	
                                  -	/**
                                  -	 * Writes the RTF header including font table and color table.
                                  -	 */
                                  -	void writeHeader() {
                                  -		StringBuffer header = new StringBuffer();
                                  -		FontData fontData = getFont().getFontData()[0];
                                  -		header.append("{\\rtf1\\ansi");
                                  -		// specify code page, necessary for copy to work in bidi 
                                  -		// systems that don't support Unicode RTF.
                                  -		String cpg = System.getProperty("file.encoding").toLowerCase();
                                  -		if (cpg.startsWith("cp") || cpg.startsWith("ms")) {
                                  -			cpg = cpg.substring(2, cpg.length());
                                  -			header.append("\\ansicpg");
                                  -			header.append(cpg);
                                  -		}
                                  -		header.append("\\uc0\\deff0{\\fonttbl{\\f0\\fnil ");
                                  -		header.append(fontData.getName());
                                  -		header.append(";}}\n{\\colortbl");
                                  -		for (int i = 0; i < colorTable.size(); i++) {
                                  -			Color color = (Color) colorTable.elementAt(i);
                                  -			header.append("\\red");
                                  -			header.append(color.getRed());
                                  -			header.append("\\green");
                                  -			header.append(color.getGreen());
                                  -			header.append("\\blue");
                                  -			header.append(color.getBlue());
                                  -			header.append(";");
                                  -		} 
                                  -		// some RTF readers ignore the deff0 font tag. Explicitly 
                                  -		// set the font for the whole document to work around this.
                                  -		header.append("}\n{\\f0\\fs");
                                  -		// font size is specified in half points
                                  -		header.append(fontData.getHeight() * 2);
                                  -		header.append(" ");
                                  -		write(header.toString(), 0);
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line text to the RTF data.  Lines will be formatted 
                                  -	 * using the styles queried from the LineStyleListener, if set, or those set 
                                  -	 * directly in the widget.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write as RTF. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 * 	end offset specified during object creation is ignored.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLine(String line, int lineOffset) {
                                  -		StyleRange[] styles = new StyleRange[0];
                                  -		Color lineBackground = null;
                                  -		StyledTextEvent event;
                                  -		
                                  -		if (isClosed()) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		event = renderer.getLineStyleData(lineOffset, line);
                                  -		if (event != null) {
                                  -			styles = event.styles;
                                  -		}
                                  -		event = renderer.getLineBackgroundData(lineOffset, line);
                                  -		if (event != null) {
                                  -			lineBackground = event.lineBackground;
                                  -		}
                                  -		if (lineBackground == null) {
                                  -			lineBackground = getBackground();
                                  -		}
                                  -		writeStyledLine(line, lineOffset, styles, lineBackground);
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line delmimiter to the RTF data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param lineDelimiter line delimiter to write as RTF.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLineDelimiter(String lineDelimiter) {
                                  -		if (isClosed()) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		write(lineDelimiter, 0, lineDelimiter.length());
                                  -		write("\\par ");
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line text to the RTF data.
                                  -	 * Use the colors and font styles specified in "styles" and "lineBackground".
                                  -	 * Formatting is written to reflect the text rendering by the text widget.
                                  -	 * Style background colors take precedence over the line background color.
                                  -	 * Background colors are written using the \highlight tag (vs. the \cb tag).
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write as RTF. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 * 	end offset specified during object creation is ignored.
                                  -	 * @param styles styles to use for formatting. Must not be null.
                                  -	 * @param lineBackground line background color to use for formatting. 
                                  -	 * 	May be null.
                                  -	 */
                                  -	void writeStyledLine(String line, int lineOffset, StyleRange[] styles, Color lineBackground) {
                                  -		int lineLength = line.length();
                                  -		int lineIndex;
                                  -		int copyEnd;
                                  -		int startOffset = getStart();		
                                  -		int endOffset = startOffset + super.getCharCount();
                                  -		int lineEndOffset = Math.min(lineLength, endOffset - lineOffset);
                                  -		int writeOffset = startOffset - lineOffset;
                                  -		
                                  -		if (writeOffset >= line.length()) {
                                  -			return;					// whole line is outside write range
                                  -		}
                                  -		else
                                  -		if (writeOffset > 0) {
                                  -			lineIndex = writeOffset;		// line starts before RTF write start
                                  -		}
                                  -		else {
                                  -			lineIndex = 0;
                                  -		}
                                  -		if (lineBackground != null) {
                                  -			write("{\\highlight");
                                  -			write(getColorIndex(lineBackground, DEFAULT_BACKGROUND));
                                  -			write(" "); 
                                  -		}
                                  -		for (int i = 0; i < styles.length; i++) {		
                                  -			StyleRange style = styles[i];
                                  -			int start = style.start - lineOffset;
                                  -			int end = start + style.length;
                                  -			int colorIndex;
                                  -			// skip over partial first line
                                  -			if (end < writeOffset) {
                                  -				continue;
                                  -			}
                                  -			// style starts beyond line end or RTF write end
                                  -			if (start >= lineEndOffset) {
                                  -				break;
                                  -			}
                                  -			// write any unstyled text
                                  -			if (lineIndex < start) { 
                                  -				// copy to start of style
                                  -				// style starting betond end of write range or end of line 
                                  -				// is guarded against above.
                                  -				write(line, lineIndex, start);
                                  -				lineIndex = start;
                                  -			}
                                  -			// write styled text
                                  -			colorIndex = getColorIndex(style.background, DEFAULT_BACKGROUND);
                                  -			write("{\\cf");
                                  -			write(getColorIndex(style.foreground, DEFAULT_FOREGROUND));
                                  -			if (colorIndex != DEFAULT_BACKGROUND) {
                                  -				write("\\highlight");
                                  -				write(colorIndex);
                                  -			}
                                  -			if ((style.fontStyle & SWT.BOLD) != 0) {
                                  -				write("\\b"); 
                                  -			}
                                  -			if ((style.fontStyle & SWT.ITALIC) != 0) {
                                  -				write("\\i"); 
                                  -			}
                                  -			if (style.underline) {
                                  -				write("\\ul");
                                  -			}
                                  -			if (style.strikeout) {
                                  -				write("\\strike");
                                  -			}
                                  -			write(" "); 
                                  -			// copy to end of style or end of write range or end of line
                                  -			copyEnd = Math.min(end, lineEndOffset);
                                  -			// guard against invalid styles and let style processing continue
                                  -			copyEnd = Math.max(copyEnd, lineIndex);
                                  -			write(line, lineIndex, copyEnd);
                                  -			if ((style.fontStyle & SWT.BOLD) != 0) {
                                  -				write("\\b0"); 
                                  -			}
                                  -			if ((style.fontStyle & SWT.ITALIC) != 0) {
                                  -				write("\\i0"); 
                                  -			}
                                  -			if (style.underline) {
                                  -				write("\\ul0");
                                  -			}			
                                  -			if (style.strikeout) {
                                  -				write("\\strike0");
                                  -			}
                                  -			write("}");
                                  -			lineIndex = copyEnd;
                                  -		}
                                  -		// write unstyled text at the end of the line
                                  -		if (lineIndex < lineEndOffset) {
                                  -			write(line, lineIndex, lineEndOffset);
                                  -		}
                                  -		if (lineBackground != null) {
                                  -			write("}");
                                  -		}
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * The <code>TextWriter</code> class is used to write widget content to
                                  -	 * a string.  Whole and partial lines and line breaks can be written. To write 
                                  -	 * partial lines, specify the start and length of the desired segment 
                                  -	 * during object creation.
                                  -	 * <p>
                                  -	 * </b>NOTE:</b> <code>toString()</code> is guaranteed to return a valid string only after close() 
                                  -	 * has been called. 
                                  -	 */
                                  -	class TextWriter {
                                  -		private StringBuffer buffer;
                                  -		private int startOffset;	// offset of first character that will be written
                                  -		private int endOffset;		// offset of last character that will be written. 
                                  -									// 0 based from the beginning of the widget text. 
                                  -		private boolean isClosed = false;
                                  -	
                                  -	/**
                                  -	 * Creates a writer that writes content starting at offset "start"
                                  -	 * in the document.  <code>start</code> and <code>length</code> can be set to specify partial lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param start start offset of content to write, 0 based from beginning of document
                                  -	 * @param length length of content to write
                                  -	 */
                                  -	public TextWriter(int start, int length) {
                                  -		buffer = new StringBuffer(length);
                                  -		startOffset = start;
                                  -		endOffset = start + length;
                                  -	}
                                  -	/**
                                  -	 * Closes the writer. Once closed no more content can be written.
                                  -	 * <b>NOTE:</b>  <code>toString()</code> is not guaranteed to return a valid string unless
                                  -	 * the writer is closed.
                                  -	 */
                                  -	public void close() {
                                  -		if (!isClosed) {
                                  -			isClosed = true;
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Returns the number of characters to write.
                                  -	 * @return the integer number of characters to write
                                  -	 */
                                  -	public int getCharCount() {
                                  -		return endOffset - startOffset;
                                  -	}	
                                  -	/** 
                                  -	 * Returns the offset where writing starts. 0 based from the start of 
                                  -	 * the widget text. Used to write partial lines.
                                  -	 * @return the integer offset where writing starts
                                  -	 */
                                  -	public int getStart() {
                                  -		return startOffset;
                                  -	}
                                  -	/**
                                  -	 * Returns whether the writer is closed.
                                  -	 * @return a boolean specifying whether or not the writer is closed
                                  -	 */
                                  -	public boolean isClosed() {
                                  -		return isClosed;
                                  -	}
                                  -	/**
                                  -	 * Returns the string.  <code>close()</code> must be called before <code>toString()</code> 
                                  -	 * is guaranteed to return a valid string.
                                  -	 *
                                  -	 * @return the string
                                  -	 */
                                  -	public String toString() {
                                  -		return buffer.toString();
                                  -	}
                                  -	/**
                                  -	 * Appends the given string to the data.
                                  -	 */
                                  -	void write(String string) {
                                  -		buffer.append(string);
                                  -	}	
                                  -	/**
                                  -	 * Inserts the given string to the data at the specified offset.
                                  -	 * Do nothing if "offset" is < 0 or > getCharCount()
                                  -	 * <p>
                                  -	 *
                                  -	 * @param string text to insert
                                  -	 * @param offset offset in the existing data to insert "string" at.
                                  -	 */
                                  -	void write(String string, int offset) {
                                  -		if (offset < 0 || offset > buffer.length()) {
                                  -			return;
                                  -		}
                                  -		buffer.insert(offset, string);
                                  -	}	
                                  -	/**
                                  -	 * Appends the given int to the data.
                                  -	 */
                                  -	void write(int i) {
                                  -		buffer.append(i);
                                  -	}
                                  -	/**
                                  -	 * Appends the given character to the data.
                                  -	 */
                                  -	void write(char i) {
                                  -		buffer.append(i);
                                  -	}			
                                  -	/**
                                  -	 * Appends the specified line text to the data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param line line text to write. Must not contain line breaks
                                  -	 * 	Line breaks should be written using writeLineDelimiter()
                                  -	 * @param lineOffset offset of the line. 0 based from the start of the 
                                  -	 * 	widget document. Any text occurring before the start offset or after the 
                                  -	 *	end offset specified during object creation is ignored.
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLine(String line, int lineOffset) {
                                  -		int lineLength = line.length();
                                  -		int lineIndex;
                                  -		int copyEnd;
                                  -		int writeOffset = startOffset - lineOffset;
                                  -		
                                  -		if (isClosed) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}		
                                  -		if (writeOffset >= lineLength) {
                                  -			return;							// whole line is outside write range
                                  -		}
                                  -		else
                                  -		if (writeOffset > 0) {
                                  -			lineIndex = writeOffset;		// line starts before write start
                                  -		}
                                  -		else {
                                  -			lineIndex = 0;
                                  -		}
                                  -		copyEnd = Math.min(lineLength, endOffset - lineOffset);
                                  -		if (lineIndex < copyEnd) {
                                  -			write(line.substring(lineIndex, copyEnd));
                                  -		}		
                                  -	}
                                  -	/**
                                  -	 * Appends the specified line delmimiter to the data.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param lineDelimiter line delimiter to write
                                  -	 * @exception SWTException <ul>
                                  -	 *   <li>ERROR_IO when the writer is closed.</li>
                                  -	 * </ul>
                                  -	 */
                                  -	public void writeLineDelimiter(String lineDelimiter) {
                                  -		if (isClosed) {
                                  -			SWT.error(SWT.ERROR_IO);
                                  -		}
                                  -		write(lineDelimiter);
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * LineCache provides an interface to calculate and invalidate 
                                  -	 * line based data.
                                  -	 * Implementors need to return a line width in <code>getWidth</code>.
                                  -	 */
                                  -	interface LineCache {
                                  -	/**
                                  -	 * Calculates the lines in the specified range.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate
                                  -	 * @param lineCount number of lines to calculate
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount);
                                  -	/**
                                  -	 * Returns a width that will be used by the <code>StyledText</code> 
                                  -	 * widget to size a horizontal scroll bar.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the line width
                                  -	 */
                                  -	public int getWidth();
                                  -	/**
                                  -	 * Resets the lines in the specified range.
                                  -	 * This method is called in <code>StyledText.redraw()</code>
                                  -	 * and allows implementors to call redraw themselves during reset.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth);
                                  -	/**
                                  -	 * Resets the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth);
                                  -	/** 
                                  -	 * Called when a text change occurred.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount);
                                  -	}
                                  -	/**
                                  -	 * Keeps track of line widths and the longest line in the 
                                  -	 * StyledText document.
                                  -	 * Line widths are calculated when requested by a call to 
                                  -	 * <code>calculate</code> and cached until reset by a call 
                                  -	 * to <code>redrawReset</code> or <code>reset</code>.
                                  -	 */
                                  -	class ContentWidthCache implements LineCache {
                                  -		StyledText parent;				// parent widget, used to create a GC for line measuring
                                  -		int[] lineWidth;				// width in pixel of each line in the document, -1 for unknown width
                                  -		StyledTextContent content;		// content to use for line width calculation
                                  -		int lineCount;					// number of lines in lineWidth array
                                  -		int maxWidth;					// maximum line width of all measured lines
                                  -		int maxWidthLineIndex;			// index of the widest line
                                  -				
                                  -	/** 
                                  -	 * Creates a new <code>ContentWidthCache</code> and allocates space 
                                  -	 * for the given number of lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param parent the StyledText widget used to create a GC for 
                                  -	 * 	line measuring
                                  -	 * @param content a StyledTextContent containing the initial number
                                  -	 *  of lines to allocate space for
                                  -	 */
                                  -	public ContentWidthCache(StyledText parent, StyledTextContent content) {
                                  -		this.parent = parent;
                                  -		this.content = content;
                                  -		this.lineCount = content.getLineCount();
                                  -		lineWidth = new int[lineCount];
                                  -		reset(0, lineCount, false);
                                  -	}
                                  -	/**
                                  -	 * Calculates the width of each line in the given range if it has
                                  -	 * not been calculated yet.
                                  -	 * If any line in the given range is wider than the currently widest
                                  -	 * line, the maximum line width is updated,
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate the line width of
                                  -	 * @param lineCount number of lines to calculate the line width for
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount) {
                                  -		int caretWidth = 0;
                                  -		int endLine = startLine + lineCount;
                                  -			
                                  -		if (startLine < 0 || endLine > lineWidth.length) {
                                  -			return;
                                  -		}
                                  -		caretWidth = getCaretWidth();
                                  -		for (int i = startLine; i < endLine; i++) {
                                  -			if (lineWidth[i] == -1) {
                                  -				String line = content.getLine(i);
                                  -				int lineOffset = content.getOffsetAtLine(i);
                                  -				lineWidth[i] = contentWidth(line, lineOffset) + caretWidth;
                                  -			}
                                  -			if (lineWidth[i] > maxWidth) {
                                  -				maxWidth = lineWidth[i];
                                  -				maxWidthLineIndex = i;
                                  -			}
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Calculates the width of the visible lines in the specified 
                                  -	 * range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first changed line
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 */  
                                  -	void calculateVisible(int startLine, int newLineCount) {
                                  -		int topIndex = parent.getTopIndex();
                                  -		int bottomLine = Math.min(getPartialBottomIndex(), startLine + newLineCount);
                                  -		
                                  -		startLine = Math.max(startLine, topIndex);
                                  -		calculate(startLine, bottomLine - startLine + 1);
                                  -	}
                                  -	/**
                                  -	 * Measures the width of the given line.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param line the line to measure
                                  -	 * @param lineOffset start offset of the line to measure, relative 
                                  -	 * 	to the start of the document
                                  -	 * @return the width of the given line
                                  -	 */
                                  -	int contentWidth(String line, int lineOffset) {
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		Rectangle rect = layout.getLineBounds(0);
                                  -		renderer.disposeTextLayout(layout);
                                  -		return rect.x + rect.width + leftMargin + rightMargin;
                                  -	}
                                  -	/**
                                  -	 * Grows the <code>lineWidth</code> array to accomodate new line width
                                  -	 * information.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param numLines the number of elements to increase the array by
                                  -	 */
                                  -	void expandLines(int numLines) {
                                  -		int size = lineWidth.length;
                                  -		if (size - lineCount >= numLines) {
                                  -			return;
                                  -		}
                                  -		int[] newLines = new int[Math.max(size * 2, size + numLines)];
                                  -		System.arraycopy(lineWidth, 0, newLines, 0, size);
                                  -		lineWidth = newLines;
                                  -		reset(size, lineWidth.length - size, false);
                                  -	}
                                  -	/**
                                  -	 * Returns the width of the longest measured line.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the width of the longest measured line.
                                  -	 */
                                  -	public int getWidth() {
                                  -		return maxWidth;
                                  -	}
                                  -	/**
                                  -	 * Updates the line width array to reflect inserted or deleted lines.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the starting line of the change that took place
                                  -	 * @param delta	the number of lines in the change, > 0 indicates lines inserted,
                                  -	 * 	< 0 indicates lines deleted
                                  -	 */
                                  -	void linesChanged(int startLine, int delta) {
                                  -		boolean inserting = delta > 0;
                                  -		
                                  -		if (delta == 0) {
                                  -			return;
                                  -		}
                                  -		if (inserting) {
                                  -			// shift the lines down to make room for new lines
                                  -			expandLines(delta);
                                  -			for (int i = lineCount - 1; i >= startLine; i--) {
                                  -				lineWidth[i + delta] = lineWidth[i];
                                  -			}
                                  -			// reset the new lines
                                  -			for (int i = startLine + 1; i <= startLine + delta && i < lineWidth.length; i++) {
                                  -				lineWidth[i] = -1;
                                  -			}
                                  -			// have new lines been inserted above the longest line?
                                  -			if (maxWidthLineIndex >= startLine) {
                                  -				maxWidthLineIndex += delta;
                                  -			}
                                  -		} 
                                  -		else {
                                  -			// shift up the lines
                                  -			for (int i = startLine - delta; i < lineCount; i++) {
                                  -				lineWidth[i+delta] = lineWidth[i];
                                  -			}
                                  -			// has the longest line been removed?
                                  -			if (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine - delta) {
                                  -				maxWidth = 0;
                                  -				maxWidthLineIndex = -1;
                                  -			}
                                  -			else
                                  -			if (maxWidthLineIndex >= startLine - delta) {
                                  -				maxWidthLineIndex += delta;
                                  -			}
                                  -		}
                                  -		lineCount += delta;
                                  -	}
                                  -	/**
                                  -	 * Resets the line width of the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=if the widest line is being 
                                  -	 * 	reset the maximum width of all remaining cached lines is 
                                  -	 * 	calculated. false=the maximum width is set to 0 if the 
                                  -	 * 	widest line is being reset.
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		reset(startLine, lineCount, calculateMaxWidth);
                                  -	}
                                  -	/**
                                  -	 * Resets the line width of the lines in the specified range.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine	the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=if the widest line is being 
                                  -	 * 	reset the maximum width of all remaining cached lines is 
                                  -	 * 	calculated. false=the maximum width is set to 0 if the 
                                  -	 * 	widest line is being reset.
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		int endLine = startLine + lineCount;
                                  -		
                                  -		if (startLine < 0 || endLine > lineWidth.length) {
                                  -			return;
                                  -		}
                                  -		for (int i = startLine; i < endLine; i++) {
                                  -			lineWidth[i] = -1;
                                  -		}		
                                  -		// if the longest line is one of the reset lines, the maximum line 
                                  -		// width is no longer valid
                                  -		if (maxWidthLineIndex >= startLine && maxWidthLineIndex < endLine) {
                                  -			maxWidth = 0;
                                  -			maxWidthLineIndex = -1;
                                  -			if (calculateMaxWidth) {
                                  -				for (int i = 0; i < lineCount; i++) {
                                  -					if (lineWidth[i] > maxWidth) {
                                  -						maxWidth = lineWidth[i];
                                  -						maxWidthLineIndex = i;
                                  -					}
                                  -				}			
                                  -			}
                                  -		}
                                  -	}
                                  -	/** 
                                  -	 * Updates the line width array to reflect a text change.
                                  -	 * Lines affected by the text change will be reset.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) {
                                  -		int startLine = parent.getLineAtOffset(startOffset);
                                  -		boolean removedMaxLine = (maxWidthLineIndex > startLine && maxWidthLineIndex <= startLine + replaceLineCount);
                                  -		// entire text deleted?
                                  -		if (startLine == 0 && replaceLineCount == lineCount) {
                                  -			lineCount = newLineCount;
                                  -			lineWidth = new int[lineCount];
                                  -			reset(0, lineCount, false);
                                  -			maxWidth = 0;
                                  -		}
                                  -		else {
                                  -			linesChanged(startLine, -replaceLineCount);
                                  -			linesChanged(startLine, newLineCount);
                                  -			lineWidth[startLine] = -1;
                                  -		}
                                  -		// only calculate the visible lines. otherwise measurements of changed lines 
                                  -		// outside the visible area may subsequently change again without the 
                                  -		// lines ever being visible.
                                  -		calculateVisible(startLine, newLineCount);
                                  -		// maxWidthLineIndex will be -1 (i.e., unknown line width) if the widget has 
                                  -		// not been visible yet and the changed lines have therefore not been
                                  -		// calculated above.
                                  -		if (removedMaxLine || 
                                  -			(maxWidthLineIndex != -1 && lineWidth[maxWidthLineIndex] < maxWidth)) {
                                  -			// longest line has been removed or changed and is now shorter.
                                  -			// need to recalculate maximum content width for all lines
                                  -			maxWidth = 0;
                                  -			for (int i = 0; i < lineCount; i++) {
                                  -				if (lineWidth[i] > maxWidth) {
                                  -					maxWidth = lineWidth[i];
                                  -					maxWidthLineIndex = i;
                                  -				}
                                  -			}			
                                  -		}
                                  -	}
                                  -	}
                                  -	/**
                                  -	 * Updates the line wrapping of the content.
                                  -	 * The line wrapping must always be in a consistent state. 
                                  -	 * Therefore, when <code>reset</code> or <code>redrawReset</code>
                                  -	 * is called, the line wrapping is recalculated immediately 
                                  -	 * instead of in <code>calculate</code>.
                                  -	 */
                                  -	class WordWrapCache implements LineCache {
                                  -		StyledText parent;
                                  -		WrappedContent visualContent;
                                  -				
                                  -	/** 
                                  -	 * Creates a new <code>WordWrapCache</code> and calculates an initial
                                  -	 * line wrapping.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param parent the StyledText widget to wrap content in.
                                  -	 * @param content the content provider that does the actual line wrapping.
                                  -	 */
                                  -	public WordWrapCache(StyledText parent, WrappedContent content) {
                                  -		this.parent = parent;
                                  -		visualContent = content;
                                  -		visualContent.wrapLines();
                                  -	}
                                  -	/**
                                  -	 * Do nothing. Lines are wrapped immediately after reset.
                                  -	 * <p>
                                  -	 * 
                                  -	 * @param startLine first line to calculate
                                  -	 * @param lineCount number of lines to calculate
                                  -	 */
                                  -	public void calculate(int startLine, int lineCount) {
                                  -	}
                                  -	/**
                                  -	 * Returns the client area width. Lines are wrapped so there
                                  -	 * is no horizontal scroll bar.
                                  -	 * <p>
                                  -	 *
                                  -	 * @return the line width
                                  -	 */
                                  -	public int getWidth() {
                                  -		return parent.getClientArea().width;
                                  -	}
                                  -	/**
                                  -	 * Wraps the lines in the specified range.
                                  -	 * This method is called in <code>StyledText.redraw()</code>.
                                  -	 * A redraw is therefore not necessary.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void redrawReset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -	    if (lineCount == visualContent.getLineCount()) {
                                  -			// do a full rewrap if all lines are reset
                                  -			visualContent.wrapLines();
                                  -	    }
                                  -	    else {
                                  -		    visualContent.reset(startLine, lineCount);
                                  -	    }
                                  -	}
                                  -	/**
                                  -	 * Rewraps the lines in the specified range and redraws
                                  -	 * the widget if the line wrapping has changed.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startLine the first line to reset
                                  -	 * @param lineCount the number of lines to reset
                                  -	 * @param calculateMaxWidth true=implementors should retain a 
                                  -	 * 	valid width even if it is affected by the reset operation.
                                  -	 * 	false=the width may be set to 0
                                  -	 */
                                  -	public void reset(int startLine, int lineCount, boolean calculateMaxWidth) {
                                  -		int itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -	    int[] oldLineOffsets = new int[itemCount];
                                  -	    
                                  -	    for (int i = 0; i < itemCount; i++) {
                                  -	    	oldLineOffsets[i] = visualContent.getOffsetAtLine(i + topIndex);
                                  -	    }
                                  -	    redrawReset(startLine, lineCount, calculateMaxWidth);
                                  -		// check for cases which will require a full redraw
                                  -	    if (getPartialBottomIndex() - topIndex + 1 != itemCount) {
                                  -	    	// number of visible lines has changed
                                  -	    	parent.internalRedraw();
                                  -	    }
                                  -	    else {
                                  -		    for (int i = 0; i < itemCount; i++) {
                                  -		    	if (visualContent.getOffsetAtLine(i + topIndex) != oldLineOffsets[i]) {
                                  -		    		// wrapping of one of the visible lines has changed
                                  -		    		parent.internalRedraw();
                                  -		    		break;
                                  -		    	}
                                  -	    	}	    	
                                  -	    }
                                  -	}
                                  -	/** 
                                  -	 * Passes the text change notification to the line wrap content.
                                  -	 * <p>
                                  -	 *
                                  -	 * @param startOffset	the start offset of the text change
                                  -	 * @param newLineCount the number of inserted lines
                                  -	 * @param replaceLineCount the number of deleted lines
                                  -	 * @param newCharCount the number of new characters
                                  -	 * @param replaceCharCount the number of deleted characters
                                  -	 */  
                                  -	public void textChanged(int startOffset, int newLineCount, int replaceLineCount, int newCharCount, int replaceCharCount) {
                                  -		int startLine = visualContent.getLineAtOffset(startOffset);
                                  -		visualContent.textChanged(startOffset, newLineCount, replaceLineCount, newCharCount, replaceCharCount);
                                  -
                                  -		// if we are wrapping then it is possible for a deletion on the last
                                  -		// line of text to shorten the total text length by a line.  If this
                                  -		// occurs then the startIndex must be adjusted such that a redraw will
                                  -		// be performed if a visible region is affected.  fixes bug 42947.
                                  -		if (wordWrap) {
                                  -			int lineCount = content.getLineCount();
                                  -			if (startLine >= lineCount) startLine = lineCount - 1;  
                                  -		}
                                  -		if (startLine <= getPartialBottomIndex()) {
                                  -			// only redraw if the text change affects text inside or above 
                                  -			// the visible lines. if it is below the visible lines it will
                                  -			// not affect the word wrapping. fixes bug 14047.
                                  -			parent.internalRedraw();
                                  -		}
                                  -	}
                                  -	}
                                  -
                                  -/**
                                  - * Constructs a new instance of this class given its parent
                                  - * and a style value describing its behavior and appearance.
                                  - * <p>
                                  - * The style value is either one of the style constants defined in
                                  - * class <code>SWT</code> which is applicable to instances of this
                                  - * class, or must be built by <em>bitwise OR</em>'ing together 
                                  - * (that is, using the <code>int</code> "|" operator) two or more
                                  - * of those <code>SWT</code> style constants. The class description
                                  - * lists the style constants that are applicable to the class.
                                  - * Style bits are also inherited from superclasses.
                                  - * </p>
                                  - *
                                  - * @param parent a widget which will be the parent of the new instance (cannot be null)
                                  - * @param style the style of widget to construct
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT - if the parent is null</li>
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li>
                                  - * </ul>
                                  - *
                                  - * @see SWT#FULL_SELECTION
                                  - * @see SWT#MULTI
                                  - * @see SWT#READ_ONLY
                                  - * @see SWT#SINGLE
                                  - * @see SWT#WRAP
                                  - * @see #getStyle
                                  - */
                                  -public StyledText(Composite parent, int style) {
                                  -	super(parent, checkStyle(style | SWT.NO_REDRAW_RESIZE | SWT.NO_BACKGROUND));
                                  -	// set the bg/fg in the OS to ensure that these are the same as StyledText, necessary
                                  -	// for ensuring that the bg/fg the IME box uses is the same as what StyledText uses
                                  -	super.setForeground(getForeground());
                                  -	super.setBackground(getBackground());
                                  -	Display display = getDisplay();
                                  -	isMirrored = (super.getStyle() & SWT.MIRRORED) != 0;
                                  -	if ((style & SWT.READ_ONLY) != 0) {
                                  -		setEditable(false);
                                  -	}
                                  -	leftMargin = rightMargin = isBidiCaret() ? BIDI_CARET_WIDTH - 1: 0;
                                  -	if ((style & SWT.SINGLE) != 0 && (style & SWT.BORDER) != 0) {
                                  -		leftMargin = topMargin = rightMargin = bottomMargin = 2;
                                  -	}
                                  -	clipboard = new Clipboard(display);
                                  -	installDefaultContent();
                                  -	initializeRenderer();
                                  -	if ((style & SWT.WRAP) != 0) {
                                  -		setWordWrap(true);
                                  -	}
                                  -	else {
                                  -		lineCache = new ContentWidthCache(this, content);
                                  -	}	
                                  -	defaultCaret = new Caret(this, SWT.NULL);
                                  -	if (isBidiCaret()) {
                                  -		createCaretBitmaps();
                                  -		Runnable runnable = new Runnable() {
                                  -			public void run() {
                                  -				int direction = BidiUtil.getKeyboardLanguage() == BidiUtil.KEYBOARD_BIDI ? SWT.RIGHT : SWT.LEFT;
                                  -				if (direction == caretDirection) return;
                                  -				if (getCaret() != defaultCaret) return;
                                  -				int lineIndex = getCaretLine();
                                  -				String line = content.getLine(lineIndex);
                                  -				int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -				int offsetInLine = caretOffset - lineOffset;
                                  -				int newCaretX = getXAtOffset(line, lineIndex, offsetInLine);
                                  -				setCaretLocation(newCaretX, getCaretLine(), direction);
                                  -			}
                                  -		};
                                  -		BidiUtil.addLanguageListener(handle, runnable);
                                  -	}
                                  -	setCaret(defaultCaret);	
                                  -	calculateScrollBars();
                                  -	createKeyBindings();
                                  -	ibeamCursor = new Cursor(display, SWT.CURSOR_IBEAM);
                                  -	setCursor(ibeamCursor);
                                  -	installListeners();
                                  -	installDefaultLineStyler();
                                  -	initializeAccessible();
                                  -}
                                  -/**	 
                                  - * Adds an extended modify listener. An ExtendedModify event is sent by the 
                                  - * widget when the widget text has changed.
                                  - * <p>
                                  - *
                                  - * @param extendedModifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addExtendedModifyListener(ExtendedModifyListener extendedModifyListener) {
                                  -	checkWidget();
                                  -	if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	StyledTextListener typedListener = new StyledTextListener(extendedModifyListener);
                                  -	addListener(ExtendedModify, typedListener);
                                  -}
                                  -/** 
                                  - * Maps a key to an action.
                                  - * One action can be associated with N keys. However, each key can only 
                                  - * have one action (key:action is N:1 relation).
                                  - * <p>
                                  - *
                                  - * @param key a key code defined in SWT.java or a character. 
                                  - * 	Optionally ORd with a state mask.  Preferred state masks are one or more of
                                  - *  SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform 
                                  - *  differences.  However, there may be cases where using the specific state masks
                                  - *  (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense.
                                  - * @param action one of the predefined actions defined in ST.java. 
                                  - * 	Use SWT.NULL to remove a key binding.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setKeyBinding(int key, int action) {
                                  -	checkWidget(); 
                                  -	
                                  -	int keyValue = key & SWT.KEY_MASK;
                                  -	int modifierValue = key & SWT.MODIFIER_MASK;
                                  -	char keyChar = (char)keyValue;
                                  -
                                  -	if (Compatibility.isLetter(keyChar)) {
                                  -		// make the keybinding case insensitive by adding it
                                  -		// in its upper and lower case form
                                  -		char ch = Character.toUpperCase(keyChar);
                                  -		int newKey = ch | modifierValue;
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(newKey));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(newKey), new Integer(action));
                                  -		}
                                  -		ch = Character.toLowerCase(keyChar);
                                  -		newKey = ch | modifierValue;
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(newKey));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(newKey), new Integer(action));
                                  -		}
                                  -	} else {
                                  -		if (action == SWT.NULL) {
                                  -			keyActionMap.remove(new Integer(key));
                                  -		}
                                  -		else {
                                  -		 	keyActionMap.put(new Integer(key), new Integer(action));
                                  -		}
                                  -	}
                                  -		
                                  -}
                                  -/**
                                  - * Adds a bidirectional segment listener. A BidiSegmentEvent is sent 
                                  - * whenever a line of text is measured or rendered. The user can 
                                  - * specify text ranges in the line that should be treated as if they 
                                  - * had a different direction than the surrounding text.
                                  - * This may be used when adjacent segments of right-to-left text should
                                  - * not be reordered relative to each other. 
                                  - * E.g., Multiple Java string literals in a right-to-left language
                                  - * should generally remain in logical order to each other, that is, the
                                  - * way they are stored. 
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - * @see BidiSegmentEvent
                                  - * @since 2.0
                                  - */
                                  -public void addBidiSegmentListener(BidiSegmentListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetSegments, typedListener);	
                                  -}
                                  -/**
                                  - * Adds a line background listener. A LineGetBackground event is sent by the 
                                  - * widget to determine the background color for a line.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addLineBackgroundListener(LineBackgroundListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	if (!userLineBackground) {
                                  -		removeLineBackgroundListener(defaultLineStyler);
                                  -		defaultLineStyler.setLineBackground(0, logicalContent.getLineCount(), null);
                                  -		userLineBackground = true;
                                  -	}	
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetBackground, typedListener);	
                                  -}
                                  -/**
                                  - * Adds a line style listener. A LineGetStyle event is sent by the widget to 
                                  - * determine the styles for a line.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addLineStyleListener(LineStyleListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	if (!userLineStyle) {
                                  -		removeLineStyleListener(defaultLineStyler);
                                  -		defaultLineStyler.setStyleRange(null);
                                  -		userLineStyle = true;
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(LineGetStyle, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a modify listener. A Modify event is sent by the widget when the widget text 
                                  - * has changed.
                                  - * <p>
                                  - *
                                  - * @param modifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addModifyListener(ModifyListener modifyListener) {
                                  -	checkWidget();
                                  -	if (modifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(modifyListener);
                                  -	addListener(SWT.Modify, typedListener);
                                  -}
                                  -/**	 
                                  - * Adds a selection listener. A Selection event is sent by the widget when the 
                                  - * selection has changed.
                                  - * <p>
                                  - * When <code>widgetSelected</code> is called, the event x amd y fields contain
                                  - * the start and end caret indices of the selection.
                                  - * <code>widgetDefaultSelected</code> is not called for StyledTexts.
                                  - * </p>
                                  - * 
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addSelectionListener(SelectionListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(listener);
                                  -	addListener(SWT.Selection, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a verify key listener. A VerifyKey event is sent by the widget when a key 
                                  - * is pressed. The widget ignores the key press if the listener sets the doit field 
                                  - * of the event to false. 
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addVerifyKeyListener(VerifyKeyListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	StyledTextListener typedListener = new StyledTextListener(listener);
                                  -	addListener(VerifyKey, typedListener);	
                                  -}
                                  -/**	 
                                  - * Adds a verify listener. A Verify event is sent by the widget when the widget text 
                                  - * is about to change. The listener can set the event text and the doit field to 
                                  - * change the text that is set in the widget or to force the widget to ignore the 
                                  - * text change.
                                  - * <p>
                                  - *
                                  - * @param verifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void addVerifyListener(VerifyListener verifyListener) {
                                  -	checkWidget();
                                  -	if (verifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	TypedListener typedListener = new TypedListener(verifyListener);
                                  -	addListener(SWT.Verify, typedListener);
                                  -}
                                  -/** 
                                  - * Appends a string to the text at the end of the widget.
                                  - * <p>
                                  - *
                                  - * @param string the string to be appended
                                  - * @see #replaceTextRange(int,int,String)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void append(String string) {
                                  -	checkWidget();
                                  -	if (string == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	int lastChar = Math.max(getCharCount(), 0);
                                  -	replaceTextRange(lastChar, 0, string);
                                  -}
                                  -/**
                                  - * Calculates the width of the widest visible line.
                                  - */
                                  -void calculateContentWidth() {
                                  -	lineCache = getLineCache(content);
                                  -	lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1);
                                  -}
                                  -/**
                                  - * Calculates the scroll bars
                                  - */
                                  -void calculateScrollBars() {
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	setScrollBars();
                                  -	if (verticalBar != null) {
                                  -		verticalBar.setIncrement(getVerticalIncrement());
                                  -	}	
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setIncrement(getHorizontalIncrement());
                                  -	}
                                  -}
                                  -/**
                                  - * Calculates the top index based on the current vertical scroll offset.
                                  - * The top index is the index of the topmost fully visible line or the
                                  - * topmost partially visible line if no line is fully visible.
                                  - * The top index starts at 0.
                                  - */
                                  -void calculateTopIndex() {
                                  -	int oldTopIndex = topIndex;
                                  -	int verticalIncrement = getVerticalIncrement();
                                  -	int clientAreaHeight = getClientArea().height;
                                  -	
                                  -	if (verticalIncrement == 0) {
                                  -		return;
                                  -	}
                                  -	topIndex = Compatibility.ceil(verticalScrollOffset, verticalIncrement);
                                  -	// Set top index to partially visible top line if no line is fully 
                                  -	// visible but at least some of the widget client area is visible.
                                  -	// Fixes bug 15088.
                                  -	if (topIndex > 0) {
                                  -		if (clientAreaHeight > 0) {
                                  -			int bottomPixel = verticalScrollOffset + clientAreaHeight;
                                  -			int fullLineTopPixel = topIndex * verticalIncrement;
                                  -			int fullLineVisibleHeight = bottomPixel - fullLineTopPixel;
                                  -			// set top index to partially visible line if no line fully fits in 
                                  -			// client area or if space is available but not used (the latter should
                                  -			// never happen because we use claimBottomFreeSpace)
                                  -			if (fullLineVisibleHeight < verticalIncrement) {
                                  -				topIndex--;
                                  -			}
                                  -		}
                                  -		else 
                                  -		if (topIndex >= content.getLineCount()) {
                                  -			topIndex = content.getLineCount() - 1;
                                  -		}
                                  -	}
                                  -	if (topIndex != oldTopIndex) {
                                  -		topOffset = content.getOffsetAtLine(topIndex);
                                  -		lineCache.calculate(topIndex, getPartialBottomIndex() - topIndex + 1);
                                  -		setHorizontalScrollBar();
                                  -	}
                                  -}
                                  -/**
                                  - * Hides the scroll bars if widget is created in single line mode.
                                  - */
                                  -static int checkStyle(int style) {
                                  -	if ((style & SWT.SINGLE) != 0) {
                                  -		style &= ~(SWT.H_SCROLL | SWT.V_SCROLL | SWT.WRAP | SWT.MULTI);
                                  -	} else {
                                  -		style |= SWT.MULTI;
                                  -		if ((style & SWT.WRAP) != 0) {
                                  -			style &= ~SWT.H_SCROLL;
                                  -		}
                                  -	}
                                  -	return style;
                                  -}
                                  -/**
                                  - * Scrolls down the text to use new space made available by a resize or by 
                                  - * deleted lines.
                                  - */
                                  -void claimBottomFreeSpace() {
                                  -	int newVerticalOffset = Math.max(0, content.getLineCount() * lineHeight - getClientArea().height);
                                  -	
                                  -	if (newVerticalOffset < verticalScrollOffset) {
                                  -		// Scroll up so that empty lines below last text line are used.
                                  -		// Fixes 1GEYJM0
                                  -		setVerticalScrollOffset(newVerticalOffset, true);
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls text to the right to use new space made available by a resize.
                                  - */
                                  -void claimRightFreeSpace() {
                                  -	int newHorizontalOffset = Math.max(0, lineCache.getWidth() - (getClientArea().width - leftMargin - rightMargin));
                                  -	
                                  -	if (newHorizontalOffset < horizontalScrollOffset) {			
                                  -		// item is no longer drawn past the right border of the client area
                                  -		// align the right end of the item with the right border of the 
                                  -		// client area (window is scrolled right).
                                  -		scrollHorizontalBar(newHorizontalOffset - horizontalScrollOffset);					
                                  -	}
                                  -}
                                  -/**
                                  - * Clears the widget margin.
                                  - * 
                                  - * @param gc GC to render on
                                  - * @param background background color to use for clearing the margin
                                  - * @param clientArea widget client area dimensions
                                  - */
                                  -void clearMargin(GC gc, Color background, Rectangle clientArea, int y) {
                                  -	// clear the margin background
                                  -	gc.setBackground(background);
                                  -	if (topMargin > 0) {
                                  -		gc.fillRectangle(0, -y, clientArea.width, topMargin);
                                  -	}
                                  -	if (bottomMargin > 0) {
                                  -		gc.fillRectangle(0, clientArea.height - bottomMargin - y, clientArea.width, bottomMargin);
                                  -	}
                                  -	if (leftMargin > 0) {
                                  -		gc.fillRectangle(0, -y, leftMargin, clientArea.height);
                                  -	}
                                  -	if (rightMargin > 0) {
                                  -		gc.fillRectangle(clientArea.width - rightMargin, -y, rightMargin, clientArea.height);
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the widget selection.
                                  - * <p>
                                  - *
                                  - * @param sendEvent a Selection event is sent when set to true and when the selection is actually reset.
                                  - */
                                  -void clearSelection(boolean sendEvent) {
                                  -	int selectionStart = selection.x;
                                  -	int selectionEnd = selection.y;
                                  -	int length = content.getCharCount();
                                  -	
                                  -	resetSelection();
                                  -	// redraw old selection, if any
                                  -	if (selectionEnd - selectionStart > 0) {
                                  -		// called internally to remove selection after text is removed
                                  -		// therefore make sure redraw range is valid.
                                  -		int redrawStart = Math.min(selectionStart, length);
                                  -		int redrawEnd = Math.min(selectionEnd, length);
                                  -		if (redrawEnd - redrawStart > 0) {
                                  -			internalRedrawRange(redrawStart, redrawEnd - redrawStart, true);
                                  -		}
                                  -		if (sendEvent) {
                                  -			sendSelectionEvent();
                                  -		}
                                  -	}
                                  -}
                                  -public Point computeSize (int wHint, int hHint, boolean changed) {
                                  -	checkWidget();
                                  -	int count, width, height;
                                  -	boolean singleLine = (getStyle() & SWT.SINGLE) != 0;
                                  -	
                                  -	if (singleLine) {
                                  -		count = 1;
                                  -	} else {
                                  -		count = content.getLineCount();
                                  -	}
                                  -	if (wHint != SWT.DEFAULT) {
                                  -		width = wHint;
                                  -	} 
                                  -	else {
                                  -		width = DEFAULT_WIDTH;
                                  -	}
                                  -	if (wHint == SWT.DEFAULT) {
                                  -		LineCache computeLineCache = lineCache;
                                  -		if (wordWrap) {
                                  -			// set non-wrapping content width calculator. Ensures ideal line width 
                                  -			// that does not required wrapping. Fixes bug 31195.
                                  -			computeLineCache = new ContentWidthCache(this, logicalContent);
                                  -			if (!singleLine) {
                                  -				count = logicalContent.getLineCount();
                                  -			}
                                  -		}
                                  -		// Only calculate what can actually be displayed.
                                  -		// Do this because measuring each text line is a 
                                  -		// time-consuming process.
                                  -		int visibleCount = Math.min (count, getDisplay().getBounds().height / lineHeight);
                                  -		computeLineCache.calculate(0, visibleCount);
                                  -		width = computeLineCache.getWidth() + leftMargin + rightMargin;
                                  -	}
                                  -	else
                                  -	if (wordWrap && !singleLine) {
                                  -		// calculate to wrap to width hint. Fixes bug 20377. 
                                  -		// don't wrap live content. Fixes bug 38344.
                                  -		WrappedContent wrappedContent = new WrappedContent(renderer, logicalContent);
                                  -		wrappedContent.wrapLines(width);
                                  -		count = wrappedContent.getLineCount();
                                  -	}
                                  -	if (hHint != SWT.DEFAULT) {
                                  -		height = hHint;
                                  -	} 
                                  -	else {
                                  -		height = count * lineHeight + topMargin + bottomMargin;
                                  -	}
                                  -	// Use default values if no text is defined.
                                  -	if (width == 0) {
                                  -		width = DEFAULT_WIDTH;
                                  -	}
                                  -	if (height == 0) {
                                  -		if (singleLine) {
                                  -			height = lineHeight;
                                  -		}
                                  -		else {
                                  -			height = DEFAULT_HEIGHT;
                                  -		}
                                  -	}
                                  -	Rectangle rect = computeTrim(0, 0, width, height);
                                  -	return new Point (rect.width, rect.height);
                                  -}
                                  -/**
                                  - * Copies the selected text to the <code>DND.CLIPBOARD</code> clipboard.
                                  - * The text will be put on the clipboard in plain text format and RTF format.
                                  - * The <code>DND.CLIPBOARD</code> clipboard is used for data that is
                                  - *  transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) or 
                                  - *  by menu action.
                                  - * 
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void copy() {
                                  -	checkWidget();
                                  -	copy(DND.CLIPBOARD);
                                  -}
                                  -
                                  -/**
                                  - * Copies the selected text to the specified clipboard.  The text will be put in the 
                                  - * clipboard in plain text format and RTF format.
                                  - * 
                                  - * <p>The clipboardType is  one of the clipboard constants defined in class 
                                  - * <code>DND</code>.  The <code>DND.CLIPBOARD</code>  clipboard is 
                                  - * used for data that is transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) 
                                  - * or by menu action.  The <code>DND.SELECTION_CLIPBOARD</code> 
                                  - * clipboard is used for data that is transferred by selecting text and pasting 
                                  - * with the middle mouse button.</p>
                                  - * 
                                  - * @param clipboardType indicates the type of clipboard
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 3.1
                                  - */
                                  -public void copy(int clipboardType) {
                                  -	checkWidget();
                                  -	if (clipboardType != DND.CLIPBOARD && 
                                  -		 clipboardType != DND.SELECTION_CLIPBOARD) return;
                                  -	int length = selection.y - selection.x;
                                  -	if (length > 0) {
                                  -		try {
                                  -			setClipboardContent(selection.x, length, clipboardType);
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Returns a string that uses only the line delimiter specified by the 
                                  - * StyledTextContent implementation.
                                  - * Returns only the first line if the widget has the SWT.SINGLE style.
                                  - * <p>
                                  - *
                                  - * @param text the text that may have line delimiters that don't 
                                  - * 	match the model line delimiter. Possible line delimiters 
                                  - * 	are CR ('\r'), LF ('\n'), CR/LF ("\r\n")
                                  - * @return the converted text that only uses the line delimiter 
                                  - * 	specified by the model. Returns only the first line if the widget 
                                  - * 	has the SWT.SINGLE style.
                                  - */
                                  -String getModelDelimitedText(String text) {
                                  -	StringBuffer convertedText;
                                  -	String delimiter = getLineDelimiter();
                                  -	int length = text.length();	
                                  -	int crIndex = 0;
                                  -	int lfIndex = 0;
                                  -	int i = 0;
                                  -	
                                  -	if (length == 0) {
                                  -		return text;
                                  -	}
                                  -	convertedText = new StringBuffer(length);
                                  -	while (i < length) {
                                  -		if (crIndex != -1) {
                                  -			crIndex = text.indexOf(SWT.CR, i);
                                  -		}
                                  -		if (lfIndex != -1) {
                                  -			lfIndex = text.indexOf(SWT.LF, i);
                                  -		}
                                  -		if (lfIndex == -1 && crIndex == -1) {	// no more line breaks?
                                  -			break;
                                  -		}
                                  -		else									// CR occurs before LF or no LF present?
                                  -		if ((crIndex < lfIndex && crIndex != -1) || lfIndex == -1) {	
                                  -			convertedText.append(text.substring(i, crIndex));
                                  -			if (lfIndex == crIndex + 1) {		// CR/LF combination?
                                  -				i = lfIndex + 1;
                                  -			}
                                  -			else {
                                  -				i = crIndex + 1;
                                  -			}
                                  -		}
                                  -		else {									// LF occurs before CR!
                                  -			convertedText.append(text.substring(i, lfIndex));
                                  -			i = lfIndex + 1;
                                  -		}
                                  -		if (isSingleLine()) {
                                  -			break;
                                  -		}
                                  -		convertedText.append(delimiter);
                                  -	}
                                  -	// copy remaining text if any and if not in single line mode or no 
                                  -	// text copied thus far (because there only is one line)
                                  -	if (i < length && (!isSingleLine() || convertedText.length() == 0)) {
                                  -		convertedText.append(text.substring(i));
                                  -	}
                                  -	return convertedText.toString();
                                  -}
                                  -/**
                                  - * Creates default key bindings.
                                  - */
                                  -void createKeyBindings() {
                                  -	int nextKey = isMirrored() ? SWT.ARROW_LEFT : SWT.ARROW_RIGHT;
                                  -	int previousKey = isMirrored() ? SWT.ARROW_RIGHT : SWT.ARROW_LEFT;
                                  -	
                                  -	// Navigation
                                  -	setKeyBinding(SWT.ARROW_UP, ST.LINE_UP);	
                                  -	setKeyBinding(SWT.ARROW_DOWN, ST.LINE_DOWN);
                                  -	setKeyBinding(SWT.HOME, ST.LINE_START);
                                  -	setKeyBinding(SWT.END, ST.LINE_END);
                                  -	setKeyBinding(SWT.PAGE_UP, ST.PAGE_UP);
                                  -	setKeyBinding(SWT.PAGE_DOWN, ST.PAGE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD1, ST.TEXT_START);
                                  -	setKeyBinding(SWT.END | SWT.MOD1, ST.TEXT_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD1, ST.WINDOW_START);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1, ST.WINDOW_END);
                                  -	setKeyBinding(nextKey, ST.COLUMN_NEXT);
                                  -	setKeyBinding(previousKey, ST.COLUMN_PREVIOUS);
                                  -	setKeyBinding(nextKey | SWT.MOD1, ST.WORD_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD1, ST.WORD_PREVIOUS);
                                  -	
                                  -	// Selection
                                  -	setKeyBinding(SWT.ARROW_UP | SWT.MOD2, ST.SELECT_LINE_UP);	
                                  -	setKeyBinding(SWT.ARROW_DOWN | SWT.MOD2, ST.SELECT_LINE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD2, ST.SELECT_LINE_START);
                                  -	setKeyBinding(SWT.END | SWT.MOD2, ST.SELECT_LINE_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD2, ST.SELECT_PAGE_UP);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD2, ST.SELECT_PAGE_DOWN);
                                  -	setKeyBinding(SWT.HOME | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_START);	
                                  -	setKeyBinding(SWT.END | SWT.MOD1 | SWT.MOD2, ST.SELECT_TEXT_END);
                                  -	setKeyBinding(SWT.PAGE_UP | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_START);
                                  -	setKeyBinding(SWT.PAGE_DOWN | SWT.MOD1 | SWT.MOD2, ST.SELECT_WINDOW_END);
                                  -	setKeyBinding(nextKey | SWT.MOD2, ST.SELECT_COLUMN_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD2, ST.SELECT_COLUMN_PREVIOUS);	
                                  -	setKeyBinding(nextKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_NEXT);
                                  -	setKeyBinding(previousKey | SWT.MOD1 | SWT.MOD2, ST.SELECT_WORD_PREVIOUS);
                                  -           	  	
                                  -	// Modification
                                  -	// Cut, Copy, Paste
                                  -	setKeyBinding('X' | SWT.MOD1, ST.CUT);
                                  -	setKeyBinding('C' | SWT.MOD1, ST.COPY);
                                  -	setKeyBinding('V' | SWT.MOD1, ST.PASTE);
                                  -	// Cut, Copy, Paste Wordstar style
                                  -	setKeyBinding(SWT.DEL | SWT.MOD2, ST.CUT);
                                  -	setKeyBinding(SWT.INSERT | SWT.MOD1, ST.COPY);
                                  -	setKeyBinding(SWT.INSERT | SWT.MOD2, ST.PASTE);
                                  -	setKeyBinding(SWT.BS | SWT.MOD2, ST.DELETE_PREVIOUS);
                                  -	
                                  -	setKeyBinding(SWT.BS, ST.DELETE_PREVIOUS);
                                  -	setKeyBinding(SWT.DEL, ST.DELETE_NEXT);
                                  -	setKeyBinding(SWT.BS | SWT.MOD1, ST.DELETE_WORD_PREVIOUS);
                                  -	setKeyBinding(SWT.DEL | SWT.MOD1, ST.DELETE_WORD_NEXT);
                                  -	
                                  -	// Miscellaneous
                                  -	setKeyBinding(SWT.INSERT, ST.TOGGLE_OVERWRITE);
                                  -}
                                  -/**
                                  - * Create the bitmaps to use for the caret in bidi mode.  This
                                  - * method only needs to be called upon widget creation and when the
                                  - * font changes (the caret bitmap height needs to match font height).
                                  - */
                                  -void createCaretBitmaps() {
                                  -	int caretWidth = BIDI_CARET_WIDTH;
                                  -	Display display = getDisplay();
                                  -	if (leftCaretBitmap != null) {
                                  -		if (defaultCaret != null && leftCaretBitmap.equals(defaultCaret.getImage())) {
                                  -			defaultCaret.setImage(null);
                                  -		}
                                  -		leftCaretBitmap.dispose();
                                  -	}
                                  -	leftCaretBitmap = new Image(display, caretWidth, lineHeight);
                                  -	GC gc = new GC (leftCaretBitmap); 
                                  -	gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
                                  -	gc.fillRectangle(0, 0, caretWidth, lineHeight);
                                  -	gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
                                  -	gc.drawLine(0,0,0,lineHeight);
                                  -	gc.drawLine(0,0,caretWidth-1,0);
                                  -	gc.drawLine(0,1,1,1);
                                  -	gc.dispose();	
                                  -	
                                  -	if (rightCaretBitmap != null) {
                                  -		if (defaultCaret != null && rightCaretBitmap.equals(defaultCaret.getImage())) {
                                  -			defaultCaret.setImage(null);
                                  -		}
                                  -		rightCaretBitmap.dispose();
                                  -	}
                                  -	rightCaretBitmap = new Image(display, caretWidth, lineHeight);
                                  -	gc = new GC (rightCaretBitmap); 
                                  -	gc.setBackground(display.getSystemColor(SWT.COLOR_BLACK));
                                  -	gc.fillRectangle(0, 0, caretWidth, lineHeight);
                                  -	gc.setForeground(display.getSystemColor(SWT.COLOR_WHITE));
                                  -	gc.drawLine(caretWidth-1,0,caretWidth-1,lineHeight);
                                  -	gc.drawLine(0,0,caretWidth-1,0);
                                  -	gc.drawLine(caretWidth-1,1,1,1);
                                  -	gc.dispose();
                                  -}
                                  -/**
                                  - * Moves the selected text to the clipboard.  The text will be put in the 
                                  - * clipboard in plain text format and RTF format.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void cut(){
                                  -	checkWidget();
                                  -	int length = selection.y - selection.x;
                                  -	
                                  -	if (length > 0) {
                                  -		try {
                                  -			setClipboardContent(selection.x, length, DND.CLIPBOARD);
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -			// Abort cut operation if copy to clipboard fails.
                                  -			// Fixes bug 21030.
                                  -			return;
                                  -		}
                                  -		doDelete();
                                  -	}
                                  -}
                                  -/** 
                                  - * A mouse move event has occurred.  See if we should start autoscrolling.  If
                                  - * the move position is outside of the client area, initiate autoscrolling.  
                                  - * Otherwise, we've moved back into the widget so end autoscrolling.
                                  - */
                                  -void doAutoScroll(Event event) {
                                  -	Rectangle area = getClientArea();		
                                  -	
                                  -	if (event.y > area.height) {
                                  -		doAutoScroll(SWT.DOWN, event.y - area.height);
                                  -	}
                                  -	else 
                                  -	if (event.y < 0) {
                                  -		doAutoScroll(SWT.UP, -event.y);
                                  -	}
                                  -	else 
                                  -	if (event.x < leftMargin && !wordWrap) {
                                  -		doAutoScroll(ST.COLUMN_PREVIOUS, leftMargin - event.x);
                                  -	}
                                  -	else 
                                  -	if (event.x > area.width - leftMargin - rightMargin && !wordWrap) {
                                  -		doAutoScroll(ST.COLUMN_NEXT, event.x - (area.width - leftMargin - rightMargin));
                                  -	}
                                  -	else {
                                  -		endAutoScroll();
                                  -	}
                                  -}
                                  -/** 
                                  - * Initiates autoscrolling.
                                  - * <p>
                                  - *
                                  - * @param direction SWT.UP, SWT.DOWN, SWT.COLUMN_NEXT, SWT.COLUMN_PREVIOUS
                                  - */
                                  -void doAutoScroll(int direction, int distance) {
                                  -	Runnable timer = null;
                                  -	
                                  -	autoScrollDistance = distance;
                                  -
                                  -	// If we're already autoscrolling in the given direction do nothing
                                  -	if (autoScrollDirection == direction) {
                                  -		return;
                                  -	}
                                  -	
                                  -	final Display display = getDisplay();
                                  -	// Set a timer that will simulate the user pressing and holding
                                  -	// down a cursor key (i.e., arrowUp, arrowDown).
                                  -	if (direction == SWT.UP) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == SWT.UP) {
                                  -					int lines = (autoScrollDistance / getLineHeight()) + 1;
                                  -					doSelectionPageUp(lines);
                                  -					display.timerExec(V_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(V_SCROLL_RATE, timer);
                                  -	} else if (direction == SWT.DOWN) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == SWT.DOWN) {
                                  -					int lines = (autoScrollDistance / getLineHeight()) + 1;
                                  -					doSelectionPageDown(lines);
                                  -					display.timerExec(V_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(V_SCROLL_RATE, timer);
                                  -	} else if (direction == ST.COLUMN_NEXT) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == ST.COLUMN_NEXT) {
                                  -					doVisualNext();
                                  -					setMouseWordSelectionAnchor();
                                  -					doMouseSelection();
                                  -					display.timerExec(H_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(H_SCROLL_RATE, timer);
                                  -	} else if (direction == ST.COLUMN_PREVIOUS) {
                                  -		timer = new Runnable() {
                                  -			public void run() {
                                  -				if (autoScrollDirection == ST.COLUMN_PREVIOUS) {
                                  -					doVisualPrevious();
                                  -					setMouseWordSelectionAnchor();
                                  -					doMouseSelection();
                                  -					display.timerExec(H_SCROLL_RATE, this);
                                  -				}
                                  -			}
                                  -		};
                                  -		autoScrollDirection = direction;
                                  -		display.timerExec(H_SCROLL_RATE, timer);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the previous character. Delete the selected text if any.
                                  - * Move the caret in front of the deleted text.
                                  - */
                                  -void doBackspace() {
                                  -	Event event = new Event();
                                  -	event.text = "";
                                  -	if (selection.x != selection.y) {
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -	else
                                  -	if (caretOffset > 0) {
                                  -		int line = content.getLineAtOffset(caretOffset);
                                  -		int lineOffset = content.getOffsetAtLine(line);			
                                  -	
                                  -		if (caretOffset == lineOffset) {
                                  -			lineOffset = content.getOffsetAtLine(line - 1);
                                  -			event.start = lineOffset + content.getLine(line - 1).length();
                                  -			event.end = caretOffset;
                                  -		}
                                  -		else {
                                  -			String lineText = content.getLine(line);
                                  -			TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -			int start = layout.getPreviousOffset(caretOffset - lineOffset, SWT.MOVEMENT_CHAR);
                                  -			renderer.disposeTextLayout(layout); 
                                  -			event.start = start + lineOffset;
                                  -			event.end = caretOffset;
                                  -		}
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Replaces the selection with the character or insert the character at the 
                                  - * current caret position if no selection exists.
                                  - * If a carriage return was typed replace it with the line break character 
                                  - * used by the widget on this platform.
                                  - * <p>
                                  - *
                                  - * @param key the character typed by the user
                                  - */
                                  -void doContent(char key) {
                                  -	Event event;
                                  -	
                                  -	if (textLimit > 0 && 
                                  -		content.getCharCount() - (selection.y - selection.x) >= textLimit) {
                                  -		return;
                                  -	}	
                                  -	event = new Event();
                                  -	event.start = selection.x;
                                  -	event.end = selection.y;
                                  -	// replace a CR line break with the widget line break
                                  -	// CR does not make sense on Windows since most (all?) applications
                                  -	// don't recognize CR as a line break.
                                  -	if (key == SWT.CR || key == SWT.LF) {
                                  -		if (!isSingleLine()) {
                                  -			event.text = getLineDelimiter();
                                  -		}
                                  -	}
                                  -	// no selection and overwrite mode is on and the typed key is not a
                                  -	// tab character (tabs are always inserted without overwriting)?
                                  -	else
                                  -	if (selection.x == selection.y && overwrite && key != TAB) {
                                  -		int lineIndex = content.getLineAtOffset(event.end);
                                  -		int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -		String line = content.getLine(lineIndex);
                                  -		// replace character at caret offset if the caret is not at the 
                                  -		// end of the line
                                  -		if (event.end < lineOffset + line.length()) {
                                  -			event.end++;
                                  -		}
                                  -		event.text = new String(new char[] {key});
                                  -	}
                                  -	else {
                                  -		event.text = new String(new char[] {key});
                                  -	}
                                  -	if (event.text != null) {
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret after the last character of the widget content.
                                  - */
                                  -void doContentEnd() {
                                  -	// place caret at end of first line if receiver is in single 
                                  -	// line mode. fixes 4820.
                                  -	if (isSingleLine()) {
                                  -		doLineEnd();
                                  -	}
                                  -	else {
                                  -		int length = content.getCharCount();		
                                  -		if (caretOffset < length) {
                                  -			caretOffset = length;
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret in front of the first character of the widget content.
                                  - */
                                  -void doContentStart() {
                                  -	if (caretOffset > 0) {
                                  -		caretOffset = 0;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the selection if a selection exists.
                                  - * Otherwise, if no selection exists move the cursor according to the 
                                  - * cursor selection rules.
                                  - * <p>
                                  - *
                                  - * @see #doSelectionCursorPrevious
                                  - */
                                  -void doCursorPrevious() {
                                  -	advancing = false;
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.x;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionCursorPrevious();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the selection if a selection exists.
                                  - * Otherwise, if no selection exists move the cursor according to the 
                                  - * cursor selection rules.
                                  - * <p>
                                  - *
                                  - * @see #doSelectionCursorNext
                                  - */
                                  -void doCursorNext() {
                                  -	advancing = true;
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -
                                  -		caretOffset = selection.y;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionCursorNext();
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the next character. Delete the selected text if any.
                                  - */
                                  -void doDelete() {
                                  -	Event event = new Event();
                                  -	event.text = "";
                                  -	if (selection.x != selection.y) {
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -	else
                                  -	if (caretOffset < content.getCharCount()) {
                                  -		int line = content.getLineAtOffset(caretOffset);
                                  -		int lineOffset = content.getOffsetAtLine(line);
                                  -		int lineLength = content.getLine(line).length();
                                  -				
                                  -		if (caretOffset == lineOffset + lineLength) {
                                  -			event.start = caretOffset;
                                  -			event.end = content.getOffsetAtLine(line + 1);
                                  -		}
                                  -		else {
                                  -			event.start = caretOffset;
                                  -			event.end = getClusterNext(caretOffset, line);
                                  -		}
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the next word.
                                  - */
                                  -void doDeleteWordNext() {
                                  -	if (selection.x != selection.y) {
                                  -		// if a selection exists, treat the as if 
                                  -		// only the delete key was pressed
                                  -		doDelete();
                                  -	} else {
                                  -		Event event = new Event();
                                  -		event.text = "";
                                  -		event.start = caretOffset;
                                  -		event.end = getWordEnd(caretOffset);
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Deletes the previous word.
                                  - */
                                  -void doDeleteWordPrevious() {
                                  -	if (selection.x != selection.y) {
                                  -		// if a selection exists, treat as if 
                                  -		// only the backspace key was pressed
                                  -		doBackspace();
                                  -	} else {
                                  -		Event event = new Event();
                                  -		event.text = "";
                                  -		event.start = getWordStart(caretOffset);
                                  -		event.end = caretOffset;
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line down and to the same character offset relative 
                                  - * to the beginning of the line. Move the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * 
                                  - * @return index of the new line relative to the first line in the document
                                  - */
                                  -int doLineDown() {
                                  -	if (isSingleLine()) {
                                  -		return 0;
                                  -	}
                                  -	// allow line down action only if receiver is not in single line mode.
                                  -	// fixes 4820.
                                  -	int caretLine = getCaretLine(); 
                                  -	if (caretLine < content.getLineCount() - 1) {
                                  -		caretLine++;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the line.
                                  - */
                                  -void doLineEnd() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);	
                                  -	int lineLength = content.getLine(caretLine).length();
                                  -	int lineEndOffset = lineOffset + lineLength;
                                  -	
                                  -	if (caretOffset < lineEndOffset) {
                                  -		caretOffset = lineEndOffset;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the beginning of the line.
                                  - */
                                  -void doLineStart() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	if (caretOffset > lineOffset) {
                                  -		caretOffset = lineOffset;
                                  -		showCaret(caretLine);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line up and to the same character offset relative 
                                  - * to the beginning of the line. Move the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * 
                                  - * @return index of the new line relative to the first line in the document
                                  - */
                                  -int doLineUp() {
                                  -	int caretLine = getCaretLine();
                                  -	if (caretLine > 0) {
                                  -		caretLine--;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Moves the caret to the specified location.
                                  - * <p>
                                  - *
                                  - * @param x x location of the new caret position
                                  - * @param y y location of the new caret position
                                  - * @param select the location change is a selection operation.
                                  - * 	include the line delimiter in the selection
                                  - */
                                  -void doMouseLocationChange(int x, int y, boolean select) {
                                  -	int line = (y + verticalScrollOffset) / lineHeight;
                                  -	int lineCount = content.getLineCount();
                                  -	int newCaretOffset;
                                  -	int newCaretLine;
                                  -	boolean oldAdvancing = advancing;
                                  -
                                  -	updateCaretDirection = true;
                                  -	if (line > lineCount - 1) {
                                  -		line = lineCount - 1;
                                  -	}	
                                  -	// allow caret to be placed below first line only if receiver is 
                                  -	// not in single line mode. fixes 4820.
                                  -	if (line < 0 || (isSingleLine() && line > 0)) {
                                  -		return;
                                  -	}
                                  -	newCaretOffset = getOffsetAtMouseLocation(x, line);
                                  -	
                                  -	if (mouseDoubleClick) {
                                  -		// double click word select the previous/next word. fixes bug 15610
                                  -		newCaretOffset = doMouseWordSelect(x, newCaretOffset, line);
                                  -	}
                                  -	newCaretLine = content.getLineAtOffset(newCaretOffset);
                                  -	// Is the mouse within the left client area border or on 
                                  -	// a different line? If not the autoscroll selection 
                                  -	// could be incorrectly reset. Fixes 1GKM3XS
                                  -	if (y >= 0 && y < getClientArea().height && 
                                  -		(x >= 0 && x < getClientArea().width || wordWrap ||	
                                  -		newCaretLine != content.getLineAtOffset(caretOffset))) {
                                  -		if (newCaretOffset != caretOffset || advancing != oldAdvancing) {
                                  -			caretOffset = newCaretOffset;
                                  -			if (select) {
                                  -				doMouseSelection();
                                  -			}
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -	if (!select) {
                                  -		caretOffset = newCaretOffset;
                                  -		clearSelection(true);
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the selection based on the caret position
                                  - */
                                  -void doMouseSelection() {
                                  -	if (caretOffset <= selection.x || 
                                  -		(caretOffset > selection.x && 
                                  -		 caretOffset < selection.y && selectionAnchor == selection.x)) {
                                  -		doSelection(ST.COLUMN_PREVIOUS);
                                  -	}
                                  -	else {
                                  -		doSelection(ST.COLUMN_NEXT);
                                  -	}
                                  -}
                                  -/**
                                  - * Returns the offset of the word at the specified offset. 
                                  - * If the current selection extends from high index to low index 
                                  - * (i.e., right to left, or caret is at left border of selecton on 
                                  - * non-bidi platforms) the start offset of the word preceeding the
                                  - * selection is returned. If the current selection extends from 
                                  - * low index to high index the end offset of the word following 
                                  - * the selection is returned.
                                  - * 
                                  - * @param x mouse x location
                                  - * @param newCaretOffset caret offset of the mouse cursor location
                                  - * @param line line index of the mouse cursor location
                                  - */
                                  -int doMouseWordSelect(int x, int newCaretOffset, int line) {
                                  -	int wordOffset;
                                  -
                                  -	// flip selection anchor based on word selection direction from 
                                  -	// base double click. Always do this here (and don't rely on doAutoScroll)
                                  -	// because auto scroll only does not cover all possible mouse selections
                                  -	// (e.g., mouse x < 0 && mouse y > caret line y)
                                  - 	if (newCaretOffset < selectionAnchor && selectionAnchor == selection.x) {
                                  -		selectionAnchor = doubleClickSelection.y;
                                  -	}
                                  -	else
                                  -	if (newCaretOffset > selectionAnchor && selectionAnchor == selection.y) {
                                  -		selectionAnchor = doubleClickSelection.x;
                                  -	}
                                  -	if (x >= 0 && x < getClientArea().width) {
                                  -		// find the previous/next word
                                  -		if (caretOffset == selection.x) {
                                  -			wordOffset = getWordStart(newCaretOffset);
                                  -		}
                                  -		else {
                                  -			wordOffset = getWordEndNoSpaces(newCaretOffset);
                                  -		}
                                  -		// mouse word select only on same line mouse cursor is on
                                  -		if (content.getLineAtOffset(wordOffset) == line) {
                                  -			newCaretOffset = wordOffset;
                                  -		}
                                  -	}
                                  -	return newCaretOffset;
                                  -}
                                  -/**
                                  - * Scrolls one page down so that the last line (truncated or whole)
                                  - * of the current page becomes the fully visible top line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the end 
                                  - * of the text where a full page scroll is not possible. In this case 
                                  - * the caret is moved after the last character.
                                  - * <p>
                                  - *
                                  - * @param select whether or not to select the page
                                  - */
                                  -void doPageDown(boolean select, int lines) {
                                  -	int lineCount = content.getLineCount();
                                  -	int oldColumnX = columnX;
                                  -	int oldHScrollOffset = horizontalScrollOffset;
                                  -	int caretLine;
                                  -	
                                  -	// do nothing if in single line mode. fixes 5673
                                  -	if (isSingleLine()) {
                                  -		return;
                                  -	}
                                  -	caretLine = getCaretLine();
                                  -	if (caretLine < lineCount - 1) {
                                  -		int verticalMaximum = lineCount * getVerticalIncrement();
                                  -		int pageSize = getClientArea().height;
                                  -		int scrollLines = Math.min(lineCount - caretLine - 1, lines);
                                  -		int scrollOffset;
                                  -		
                                  -		// ensure that scrollLines never gets negative and at leat one 
                                  -		// line is scrolled. fixes bug 5602.
                                  -		scrollLines = Math.max(1, scrollLines);
                                  -		caretLine += scrollLines;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine); 
                                  -		if (select) {
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -		}
                                  -		// scroll one page down or to the bottom
                                  -		scrollOffset = verticalScrollOffset + scrollLines * getVerticalIncrement();
                                  -		if (scrollOffset + pageSize > verticalMaximum) {
                                  -			scrollOffset = verticalMaximum - pageSize;
                                  -		}
                                  -		if (scrollOffset > verticalScrollOffset) {		
                                  -			setVerticalScrollOffset(scrollOffset, true);
                                  -		}
                                  -	}
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// restore the original horizontal caret position
                                  -	int hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -	columnX = oldColumnX + hScrollChange;
                                  -}
                                  -/**
                                  - * Moves the cursor to the end of the last fully visible line.
                                  - */
                                  -void doPageEnd() {
                                  -	// go to end of line if in single line mode. fixes 5673
                                  -	if (isSingleLine()) {
                                  -		doLineEnd();
                                  -	}
                                  -	else {
                                  -		int line = getBottomIndex();
                                  -		int bottomCaretOffset = content.getOffsetAtLine(line) + content.getLine(line).length();	
                                  -
                                  -		if (caretOffset < bottomCaretOffset) {
                                  -			caretOffset = bottomCaretOffset;
                                  -			showCaret();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the cursor to the beginning of the first fully visible line.
                                  - */
                                  -void doPageStart() {
                                  -	int topCaretOffset = content.getOffsetAtLine(topIndex);
                                  -	
                                  -	if (caretOffset > topCaretOffset) {
                                  -		caretOffset = topCaretOffset;
                                  -		// explicitly go to the calculated caret line. may be different 
                                  -		// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -		showCaret(topIndex);
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls one page up so that the first line (truncated or whole)
                                  - * of the current page becomes the fully visible last line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the beginning 
                                  - * of the text where a full page scroll is not possible. In this case the
                                  - * caret is moved in front of the first character.
                                  - */
                                  -void doPageUp(boolean select, int lines) {
                                  -	int oldColumnX = columnX;
                                  -	int oldHScrollOffset = horizontalScrollOffset;
                                  -	int caretLine = getCaretLine();
                                  -	
                                  -	if (caretLine > 0) {	
                                  -		int scrollLines = Math.max(1, Math.min(caretLine, lines));
                                  -		int scrollOffset;
                                  -		
                                  -		caretLine -= scrollLines;
                                  -		caretOffset = getOffsetAtMouseLocation(columnX, caretLine);
                                  -		if (select) {
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -		}
                                  -		// scroll one page up or to the top
                                  -		scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * getVerticalIncrement());
                                  -		if (scrollOffset < verticalScrollOffset) {
                                  -			setVerticalScrollOffset(scrollOffset, true);
                                  -		}
                                  -	}
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// restore the original horizontal caret position
                                  -	int hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -	columnX = oldColumnX + hScrollChange;
                                  -}
                                  -/**
                                  - * Updates the selection to extend to the current caret position.
                                  - */
                                  -void doSelection(int direction) {
                                  -	int redrawStart = -1;
                                  -	int redrawEnd = -1;
                                  -	
                                  -	if (selectionAnchor == -1) {
                                  -		selectionAnchor = selection.x;
                                  -	}	
                                  -	if (direction == ST.COLUMN_PREVIOUS) {
                                  -		if (caretOffset < selection.x) {
                                  -			// grow selection
                                  -			redrawEnd = selection.x; 
                                  -			redrawStart = selection.x = caretOffset;		
                                  -			// check if selection has reversed direction
                                  -			if (selection.y != selectionAnchor) {
                                  -				redrawEnd = selection.y;
                                  -				selection.y = selectionAnchor;
                                  -			}
                                  -		}
                                  -		else	// test whether selection actually changed. Fixes 1G71EO1
                                  -		if (selectionAnchor == selection.x && caretOffset < selection.y) {
                                  -			// caret moved towards selection anchor (left side of selection). 
                                  -			// shrink selection			
                                  -			redrawEnd = selection.y;
                                  -			redrawStart = selection.y = caretOffset;		
                                  -		}
                                  -	}
                                  -	else {
                                  -		if (caretOffset > selection.y) {
                                  -			// grow selection
                                  -			redrawStart = selection.y;
                                  -			redrawEnd = selection.y = caretOffset;
                                  -			// check if selection has reversed direction
                                  -			if (selection.x != selectionAnchor) {
                                  -				redrawStart = selection.x;				
                                  -				selection.x = selectionAnchor;
                                  -			}
                                  -		}
                                  -		else	// test whether selection actually changed. Fixes 1G71EO1
                                  -		if (selectionAnchor == selection.y && caretOffset > selection.x) {
                                  -			// caret moved towards selection anchor (right side of selection). 
                                  -			// shrink selection			
                                  -			redrawStart = selection.x;
                                  -			redrawEnd = selection.x = caretOffset;		
                                  -		}
                                  -	}
                                  -	if (redrawStart != -1 && redrawEnd != -1) {
                                  -		internalRedrawRange(redrawStart, redrawEnd - redrawStart, true);
                                  -		sendSelectionEvent();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the next character or to the beginning of the 
                                  - * next line if the cursor is at the end of a line.
                                  - */
                                  -void doSelectionCursorNext() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	advancing = true;
                                  -	if (offsetInLine < content.getLine(caretLine).length()) {
                                  -		caretOffset = getClusterNext(caretOffset, caretLine);
                                  -		showCaret();
                                  -	}
                                  -	else
                                  -	if (caretLine < content.getLineCount() - 1 && !isSingleLine()) {
                                  -		// only go to next line if not in single line mode. fixes 5673
                                  -		caretLine++;		
                                  -		caretOffset = content.getOffsetAtLine(caretLine);
                                  -		// explicitly go to the calculated caret line. may be different 
                                  -		// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -		showCaret(caretLine);
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the previous character or to the end of the previous 
                                  - * line if the cursor is at the beginning of a line.
                                  - */
                                  -void doSelectionCursorPrevious() {
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	advancing = false;
                                  -	if (offsetInLine > 0) {
                                  -		caretOffset = getClusterPrevious(caretOffset, caretLine);
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else
                                  -	if (caretLine > 0) {
                                  -		caretLine--;
                                  -		lineOffset = content.getOffsetAtLine(caretLine);
                                  -		caretOffset = lineOffset + content.getLine(caretLine).length();
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret one line down and to the same character offset relative 
                                  - * to the beginning of the line. Moves the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * Moves the caret to the end of the text if the caret already is on the 
                                  - * last line.
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - */
                                  -void doSelectionLineDown() {
                                  -	int oldColumnX;
                                  -	int caretLine;
                                  -	int lineStartOffset;
                                  -	
                                  -	if (isSingleLine()) {
                                  -		return;
                                  -	}
                                  -	caretLine = getCaretLine();	
                                  -	lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	if (caretLine == content.getLineCount() - 1) {
                                  -		caretOffset = content.getCharCount();
                                  -	}
                                  -	else {
                                  -		caretLine = doLineDown();
                                  -	}
                                  -	setMouseWordSelectionAnchor();	
                                  -	// select first and then scroll to reduce flash when key 
                                  -	// repeat scrolls lots of lines
                                  -	doSelection(ST.COLUMN_NEXT);
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	// save the original horizontal caret position
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Moves the caret one line up and to the same character offset relative 
                                  - * to the beginning of the line. Moves the caret to the end of the new line 
                                  - * if the new line is shorter than the character offset.
                                  - * Moves the caret to the beginning of the document if it is already on the
                                  - * first line.
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - */
                                  -void doSelectionLineUp() {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();	
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);	
                                  -	if (caretLine == 0) {
                                  -		caretOffset = 0;
                                  -	}
                                  -	else {
                                  -		caretLine = doLineUp();
                                  -	}
                                  -	setMouseWordSelectionAnchor();
                                  -	// explicitly go to the calculated caret line. may be different 
                                  -	// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -	showCaret(caretLine);
                                  -	doSelection(ST.COLUMN_PREVIOUS);
                                  -	// save the original horizontal caret position	
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls one page down so that the last line (truncated or whole)
                                  - * of the current page becomes the fully visible top line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the end 
                                  - * of the text where a full page scroll is not possible. In this case 
                                  - * the caret is moved after the last character.
                                  - * <p>
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - * </p>
                                  - */
                                  -void doSelectionPageDown(int lines) {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	doPageDown(true, lines);
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls one page up so that the first line (truncated or whole)
                                  - * of the current page becomes the fully visible last line.
                                  - * The caret is scrolled the same number of lines so that its location 
                                  - * relative to the top line remains the same. The exception is the beginning 
                                  - * of the text where a full page scroll is not possible. In this case the
                                  - * caret is moved in front of the first character.
                                  - * <p>
                                  - * Adjusts the selection according to the caret change. This can either add
                                  - * to or subtract from the old selection, depending on the previous selection
                                  - * direction.
                                  - * </p>
                                  - */
                                  -void doSelectionPageUp(int lines) {
                                  -	int oldColumnX;
                                  -	int caretLine = getCaretLine();
                                  -	int lineStartOffset = content.getOffsetAtLine(caretLine);
                                  -	
                                  -	// reset columnX on selection
                                  -	oldColumnX = columnX = getXAtOffset(
                                  -		content.getLine(caretLine), caretLine, caretOffset - lineStartOffset);
                                  -	doPageUp(true, lines);
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the next word .
                                  - */
                                  -void doSelectionWordNext() {
                                  -	int newCaretOffset = getWordEnd(caretOffset);
                                  -	// Force symmetrical movement for word next and previous. Fixes 14536
                                  -	advancing = false;
                                  -	// don't change caret position if in single line mode and the cursor 
                                  -	// would be on a different line. fixes 5673
                                  -	if (!isSingleLine() || 
                                  -		content.getLineAtOffset(caretOffset) == content.getLineAtOffset(newCaretOffset)) {
                                  -		caretOffset = newCaretOffset;
                                  -		showCaret();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the previous word.
                                  - */
                                  -void doSelectionWordPrevious() {
                                  -	int caretLine;	
                                  -	advancing = false;
                                  -	caretOffset = getWordStart(caretOffset);
                                  -	caretLine = content.getLineAtOffset(caretOffset);
                                  -	// word previous always comes from bottom line. when
                                  -	// wrapping lines, stay on bottom line when on line boundary
                                  -	if (wordWrap && caretLine < content.getLineCount() - 1 &&
                                  -		caretOffset == content.getOffsetAtLine(caretLine + 1)) {
                                  -		caretLine++;
                                  -	}
                                  -	showCaret(caretLine);
                                  -}
                                  -/**
                                  - * Moves the caret one character to the left.  Do not go to the previous line.
                                  - * When in a bidi locale and at a R2L character the caret is moved to the 
                                  - * beginning of the R2L segment (visually right) and then one character to the 
                                  - * left (visually left because it's now in a L2R segment).
                                  - */
                                  -void doVisualPrevious() {
                                  -	caretOffset = getClusterPrevious(caretOffset, getCaretLine());
                                  -	showCaret();
                                  -}
                                  -/**
                                  - * Moves the caret one character to the right.  Do not go to the next line.
                                  - * When in a bidi locale and at a R2L character the caret is moved to the 
                                  - * end of the R2L segment (visually left) and then one character to the 
                                  - * right (visually right because it's now in a L2R segment).
                                  - */
                                  -void doVisualNext() {
                                  -	caretOffset = getClusterNext(caretOffset, getCaretLine());
                                  -	showCaret();
                                  -}
                                  -/**
                                  - * Moves the caret to the end of the next word.
                                  - * If a selection exists, move the caret to the end of the selection
                                  - * and remove the selection.
                                  - */
                                  -void doWordNext() {
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.y;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionWordNext();
                                  -	}
                                  -}
                                  -/**
                                  - * Moves the caret to the start of the previous word.
                                  - * If a selection exists, move the caret to the start of the selection
                                  - * and remove the selection.
                                  - */
                                  -void doWordPrevious() {
                                  -	if (selection.y - selection.x > 0) {
                                  -		int caretLine;
                                  -		
                                  -		caretOffset = selection.x;
                                  -		caretLine = getCaretLine();
                                  -		showCaret(caretLine);
                                  -	}
                                  -	else {
                                  -		doSelectionWordPrevious();
                                  -	}
                                  -}
                                  -/**
                                  - * Draws the specified rectangle.
                                  - * Draw directly without invalidating the affected area when clearBackground is 
                                  - * false.
                                  - * <p>
                                  - *
                                  - * @param x the x position
                                  - * @param y the y position
                                  - * @param width the width
                                  - * @param height the height
                                  - * @param clearBackground true=clear the background by invalidating the requested 
                                  - * 	redraw area, false=draw the foreground directly without invalidating the 
                                  - * 	redraw area.
                                  - */
                                  -void draw(int x, int y, int width, int height, boolean clearBackground) {
                                  -	if (clearBackground) {
                                  -		redraw(x + leftMargin, y + topMargin, width, height, true);
                                  -	}
                                  -	else {
                                  -		int startLine = (y + verticalScrollOffset) / lineHeight;
                                  -		int endY = y + height;
                                  -		int paintYFromTopLine = (startLine - topIndex) * lineHeight;
                                  -		int topLineOffset = (topIndex * lineHeight - verticalScrollOffset);
                                  -		int paintY = paintYFromTopLine + topLineOffset + topMargin;	// adjust y position for pixel based scrolling
                                  -		int lineCount = content.getLineCount();
                                  -		Color background = getBackground();
                                  -		Color foreground = getForeground();
                                  -		GC gc = getGC();
                                  -	
                                  -		if (isSingleLine()) {
                                  -			lineCount = 1;
                                  -		}
                                  -		for (int i = startLine; paintY < endY && i < lineCount; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			renderer.drawLine(line, i, paintY, gc, background, foreground, clearBackground);
                                  -		}
                                  -		gc.dispose();	
                                  -	}
                                  -}
                                  -/** 
                                  - * Ends the autoscroll process.
                                  - */
                                  -void endAutoScroll() {
                                  -	autoScrollDirection = SWT.NULL;
                                  -}
                                  -public Color getBackground() {
                                  -	checkWidget();
                                  -	if (background == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
                                  -	}
                                  -	return background;
                                  -}
                                  -/**
                                  - * Returns the baseline, in pixels. 
                                  - * 
                                  - * @return baseline the baseline
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 3.0
                                  - */
                                  -public int getBaseline() {
                                  -	checkWidget();
                                  -	return renderer.getBaseline();
                                  -}
                                  -/**
                                  - * Gets the BIDI coloring mode.  When true the BIDI text display
                                  - * algorithm is applied to segments of text that are the same
                                  - * color.
                                  - *
                                  - * @return the current coloring mode
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * <p>
                                  - * @deprecated use BidiSegmentListener instead.
                                  - * </p>
                                  - */
                                  -public boolean getBidiColoring() {
                                  -	checkWidget();
                                  -	return bidiColoring;
                                  -}
                                  -/** 
                                  - * Returns the index of the last fully visible line.
                                  - * <p>
                                  - *
                                  - * @return index of the last fully visible line.
                                  - */
                                  -int getBottomIndex() {
                                  -	int lineCount = 1;
                                  -	
                                  -	if (lineHeight != 0) {
                                  -		// calculate the number of lines that are fully visible
                                  -		int partialTopLineHeight = topIndex * lineHeight - verticalScrollOffset;
                                  -		lineCount = (getClientArea().height - partialTopLineHeight) / lineHeight;
                                  -	}
                                  -	return Math.min(content.getLineCount() - 1, topIndex + Math.max(0, lineCount - 1));
                                  -}
                                  -/**
                                  - * Returns the caret position relative to the start of the text.
                                  - * <p>
                                  - *
                                  - * @return the caret position relative to the start of the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getCaretOffset() {
                                  -	checkWidget();
                                  -	
                                  -	return caretOffset;
                                  -}
                                  -/**
                                  - * Returns the caret offset at the given x location in the line.
                                  - * The caret offset is the offset of the character where the caret will be
                                  - * placed when a mouse click occurs. The caret offset will be the offset of 
                                  - * the character after the clicked one if the mouse click occurs at the second 
                                  - * half of a character.
                                  - * Doesn't properly handle ligatures and other context dependent characters 
                                  - * unless the current locale is a bidi locale. 
                                  - * Ligatures are handled properly as long as they don't occur at lineXOffset.
                                  - * <p>
                                  - *
                                  - * @param line text of the line to calculate the offset in
                                  - * @param lineOffset offset of the first character in the line. 
                                  - * 	0 based from the beginning of the document.
                                  - * @param lineXOffset x location in the line
                                  - * @return caret offset at the x location relative to the start of the line.
                                  - */
                                  -int getOffsetAtX(String line, int lineOffset, int lineXOffset) {
                                  -	int x = lineXOffset - leftMargin + horizontalScrollOffset;
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	int[] trailing = new int[1];
                                  -	int offsetInLine = layout.getOffset(x, 0, trailing);
                                  -	advancing = false;
                                  -	if (trailing[0] != 0) {
                                  -		int lineLength = line.length();
                                  -		if (offsetInLine + trailing[0] >= lineLength) {
                                  -			offsetInLine = lineLength;
                                  -			advancing = true;
                                  -		} else {
                                  -			int level;
                                  -			int offset = offsetInLine;
                                  -			while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--;
                                  -			if (offset == 0 && Character.isDigit(line.charAt(offset))) {
                                  -				level = isMirrored() ? 1 : 0;
                                  -			} else {
                                  -				level = layout.getLevel(offset) & 0x1;
                                  -			}
                                  -			offsetInLine += trailing[0];
                                  -			int trailingLevel = layout.getLevel(offsetInLine) & 0x1;
                                  -			advancing  = (level ^ trailingLevel) != 0;
                                  -		}
                                  -	}
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offsetInLine;
                                  -}
                                  -/**
                                  - * Returns the caret width.
                                  - * <p>
                                  - *
                                  - * @return the caret width, 0 if caret is null.
                                  - */
                                  -int getCaretWidth() {
                                  -	Caret caret = getCaret();
                                  -	if (caret == null) return 0;
                                  -	return caret.getSize().x;
                                  -}
                                  -Object getClipboardContent(int clipboardType) {
                                  -	TextTransfer plainTextTransfer = TextTransfer.getInstance();
                                  -	return clipboard.getContents(plainTextTransfer, clipboardType);
                                  -}
                                  -int getClusterNext(int offset, int lineIndex) {
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	offset -= lineOffset;
                                  -	offset = layout.getNextOffset(offset, SWT.MOVEMENT_CLUSTER);
                                  -	offset += lineOffset;
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offset;
                                  -}
                                  -int getClusterPrevious(int offset, int lineIndex) {
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	offset -= lineOffset;
                                  -	offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_CLUSTER);
                                  -	offset += lineOffset;
                                  -	renderer.disposeTextLayout(layout);
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the content implementation that is used for text storage
                                  - * or null if no user defined content implementation has been set.
                                  - * <p>
                                  - *
                                  - * @return content implementation that is used for text storage or null 
                                  - * if no user defined content implementation has been set.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public StyledTextContent getContent() {
                                  -	checkWidget();
                                  -	
                                  -	return logicalContent;
                                  -}
                                  -/** 
                                  - * Returns whether the widget implements double click mouse behavior.
                                  - * <p>
                                  - *
                                  - * @return true if double clicking a word selects the word, false if double clicks
                                  - * have the same effect as regular mouse clicks
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public boolean getDoubleClickEnabled() {
                                  -	checkWidget();
                                  -	return doubleClickEnabled;
                                  -}
                                  -/**
                                  - * Returns whether the widget content can be edited.
                                  - * <p>
                                  - *
                                  - * @return true if content can be edited, false otherwise
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public boolean getEditable() {
                                  -	checkWidget();
                                  -	return editable;
                                  -}
                                  -public Color getForeground() {
                                  -	checkWidget();
                                  -	if (foreground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
                                  -	}
                                  -	return foreground;
                                  -}
                                  -/** 
                                  - * Return a GC to use for rendering and update the cached font style to
                                  - * represent the current style.
                                  - * <p>
                                  - *
                                  - * @return GC.
                                  - */
                                  -GC getGC() {
                                  -	return new GC(this);
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll increment.
                                  - * <p>
                                  - *
                                  - * @return horizontal scroll increment.
                                  - */
                                  -int getHorizontalIncrement() {
                                  -	GC gc = getGC();
                                  -	int increment = gc.getFontMetrics().getAverageCharWidth();
                                  -	
                                  -	gc.dispose();
                                  -	return increment;
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll offset relative to the start of the line.
                                  - * <p>
                                  - *
                                  - * @return horizontal scroll offset relative to the start of the line,
                                  - * measured in character increments starting at 0, if > 0 the content is scrolled
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getHorizontalIndex() {	
                                  -	checkWidget();
                                  -	return horizontalScrollOffset / getHorizontalIncrement();
                                  -}
                                  -/** 
                                  - * Returns the horizontal scroll offset relative to the start of the line.
                                  - * <p>
                                  - *
                                  - * @return the horizontal scroll offset relative to the start of the line,
                                  - * measured in pixel starting at 0, if > 0 the content is scrolled.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getHorizontalPixel() {	
                                  -	checkWidget();
                                  -	return horizontalScrollOffset;
                                  -}
                                  -/** 
                                  - * Returns the action assigned to the key.
                                  - * Returns SWT.NULL if there is no action associated with the key.
                                  - * <p>
                                  - *
                                  - * @param key a key code defined in SWT.java or a character. 
                                  - * 	Optionally ORd with a state mask.  Preferred state masks are one or more of
                                  - *  SWT.MOD1, SWT.MOD2, SWT.MOD3, since these masks account for modifier platform 
                                  - *  differences.  However, there may be cases where using the specific state masks
                                  - *  (i.e., SWT.CTRL, SWT.SHIFT, SWT.ALT, SWT.COMMAND) makes sense.
                                  - * @return one of the predefined actions defined in ST.java or SWT.NULL 
                                  - * 	if there is no action associated with the key.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getKeyBinding(int key) {
                                  -	checkWidget();
                                  -	Integer action = (Integer) keyActionMap.get(new Integer(key));
                                  -	int intAction;
                                  -	
                                  -	if (action == null) {
                                  -		intAction = SWT.NULL;
                                  -	}
                                  -	else {
                                  -		intAction = action.intValue();
                                  -	}
                                  -	return intAction;
                                  -}
                                  -/**
                                  - * Gets the number of characters.
                                  - * <p>
                                  - *
                                  - * @return number of characters in the widget
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getCharCount() {
                                  -	checkWidget();
                                  -	return content.getCharCount();
                                  -}
                                  -/**
                                  - * Returns the background color of the line at the given index.
                                  - * Returns null if a LineBackgroundListener has been set or if no background 
                                  - * color has been specified for the line. Should not be called if a
                                  - * LineBackgroundListener has been set since the listener maintains the
                                  - * line background colors.
                                  - * 
                                  - * @param index the index of the line
                                  - * @return the background color of the line at the given index.
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT when the index is invalid</li>
                                  - * </ul>
                                  - */
                                  -public Color getLineBackground(int index) {
                                  -	checkWidget();
                                  -	Color lineBackground = null;
                                  -	
                                  -	if (index < 0 || index > logicalContent.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	if (!userLineBackground) {
                                  -		lineBackground = defaultLineStyler.getLineBackground(index);
                                  -	}
                                  -	return lineBackground;
                                  -}
                                  -/**
                                  - * Returns the line background data for the given line or null if 
                                  - * there is none.
                                  - * <p>
                                  - * @param lineOffset offset of the line start relative to the start
                                  - * 	of the content.
                                  - * @param line line to get line background data for
                                  - * @return line background data for the given line.
                                  - */
                                  -StyledTextEvent getLineBackgroundData(int lineOffset, String line) {
                                  -	return sendLineEvent(LineGetBackground, lineOffset, line);
                                  -}
                                  -/** 
                                  - * Gets the number of text lines.
                                  - * <p>
                                  - *
                                  - * @return the number of lines in the widget
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getLineCount() {
                                  -	checkWidget();
                                  -	return getLineAtOffset(getCharCount()) + 1;
                                  -}
                                  -/**
                                  - * Returns the number of lines that can be completely displayed in the 
                                  - * widget client area.
                                  - * <p>
                                  - *
                                  - * @return number of lines that can be completely displayed in the widget 
                                  - * 	client area.
                                  - */
                                  -int getLineCountWhole() {
                                  -	int lineCount;
                                  -	
                                  -	if (lineHeight != 0) {
                                  -		lineCount = getClientArea().height / lineHeight;
                                  -	}
                                  -	else {
                                  -		lineCount = 1;
                                  -	}
                                  -	return lineCount;
                                  -}
                                  -/**
                                  - * Returns the line at the specified offset in the text
                                  - * where 0 &lt= offset &lt= getCharCount() so that getLineAtOffset(getCharCount())
                                  - * returns the line of the insert location.
                                  - *
                                  - * @param offset offset relative to the start of the content. 
                                  - * 	0 <= offset <= getCharCount()
                                  - * @return line at the specified offset in the text
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public int getLineAtOffset(int offset) {
                                  -	checkWidget();
                                  -	
                                  -	if (offset < 0 || offset > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	return logicalContent.getLineAtOffset(offset);
                                  -}
                                  -/**
                                  - * Returns the line delimiter used for entering new lines by key down
                                  - * or paste operation.
                                  - * <p>
                                  - *
                                  - * @return line delimiter used for entering new lines by key down
                                  - * or paste operation.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getLineDelimiter() {
                                  -	checkWidget();
                                  -	return content.getLineDelimiter();
                                  -}
                                  -/**
                                  - * Returns a StyledTextEvent that can be used to request data such 
                                  - * as styles and background color for a line.
                                  - * The specified line may be a visual (wrapped) line if in word 
                                  - * wrap mode. The returned object will always be for a logical 
                                  - * (unwrapped) line.
                                  - * <p>
                                  - *
                                  - * @param lineOffset offset of the line. This may be the offset of
                                  - * 	a visual line if the widget is in word wrap mode.
                                  - * @param line line text. This may be the text of a visualline if 
                                  - * 	the widget is in word wrap mode.
                                  - * @return StyledTextEvent that can be used to request line data 
                                  - * 	for the given line.
                                  - */
                                  -StyledTextEvent sendLineEvent(int eventType, int lineOffset, String line) {
                                  -	StyledTextEvent event = null;
                                  -	
                                  -	if (isListening(eventType)) {
                                  -		event = new StyledTextEvent(logicalContent);		
                                  -		if (wordWrap) {
                                  -		    // if word wrap is on, the line offset and text may be visual (wrapped)
                                  -		    int lineIndex = logicalContent.getLineAtOffset(lineOffset);
                                  -		    
                                  -		    event.detail = logicalContent.getOffsetAtLine(lineIndex);
                                  -			event.text = logicalContent.getLine(lineIndex);
                                  -		}
                                  -		else {
                                  -			event.detail = lineOffset;
                                  -			event.text = line;
                                  -		}
                                  -		notifyListeners(eventType, event);
                                  -	}
                                  -	return event;	
                                  -}
                                  -/**
                                  - * Returns the line height.
                                  - * <p>
                                  - *
                                  - * @return line height in pixel.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getLineHeight() {
                                  -	checkWidget();
                                  -	return lineHeight;
                                  -}
                                  -/**
                                  - * Returns a LineCache implementation. Depending on whether or not
                                  - * word wrap is on this may be a line wrapping or line width 
                                  - * calculating implementaiton.
                                  - * <p>
                                  - * 
                                  - * @param content StyledTextContent to create the LineCache on.
                                  - * @return a LineCache implementation
                                  - */
                                  -LineCache getLineCache(StyledTextContent content) {
                                  -	LineCache lineCache;
                                  -    
                                  -	if (wordWrap) {
                                  -		lineCache = new WordWrapCache(this, (WrappedContent) content);
                                  -	}
                                  -	else {
                                  -		lineCache = new ContentWidthCache(this, content);
                                  -	}
                                  -	return lineCache;
                                  -}
                                  -/**
                                  - * Returns the line style data for the given line or null if there is 
                                  - * none. If there is a LineStyleListener but it does not set any styles, 
                                  - * the StyledTextEvent.styles field will be initialized to an empty 
                                  - * array.
                                  - * <p>
                                  - * 
                                  - * @param lineOffset offset of the line start relative to the start of 
                                  - * 	the content.
                                  - * @param line line to get line styles for
                                  - * @return line style data for the given line. Styles may start before 
                                  - * 	line start and end after line end
                                  - */
                                  -StyledTextEvent getLineStyleData(int lineOffset, String line) {
                                  -	return sendLineEvent(LineGetStyle, lineOffset, line);
                                  -}
                                  -/**
                                  - * Returns the x, y location of the upper left corner of the character 
                                  - * bounding box at the specified offset in the text. The point is 
                                  - * relative to the upper left corner of the widget client area.
                                  - * <p>
                                  - *
                                  - * @param offset offset relative to the start of the content. 
                                  - * 	0 <= offset <= getCharCount()
                                  - * @return x, y location of the upper left corner of the character 
                                  - * 	bounding box at the specified offset in the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public Point getLocationAtOffset(int offset) {
                                  -	checkWidget();
                                  -	if (offset < 0 || offset > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	String lineContent = content.getLine(line);
                                  -	int x = getXAtOffset(lineContent, line, offset - lineOffset);
                                  -	int y = line * lineHeight - verticalScrollOffset;
                                  -	
                                  -	return new Point(x, y);
                                  -}
                                  -/**
                                  - * Returns the character offset of the first character of the given line.
                                  - * <p>
                                  - *
                                  - * @param lineIndex index of the line, 0 based relative to the first 
                                  - * 	line in the content. 0 <= lineIndex < getLineCount(), except
                                  - * 	lineIndex may always be 0
                                  - * @return offset offset of the first character of the line, relative to
                                  - * 	the beginning of the document. The first character of the document is
                                  - *	at offset 0.  
                                  - *  When there are not any lines, getOffsetAtLine(0) is a valid call that 
                                  - * 	answers 0.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> 
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public int getOffsetAtLine(int lineIndex) {
                                  -	checkWidget();
                                  -	
                                  -	if (lineIndex < 0 || 
                                  -		(lineIndex > 0 && lineIndex >= logicalContent.getLineCount())) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);		
                                  -	}
                                  -	return logicalContent.getOffsetAtLine(lineIndex);
                                  -}
                                  -/**
                                  - * Returns the offset of the character at the given location relative 
                                  - * to the first character in the document.
                                  - * The return value reflects the character offset that the caret will
                                  - * be placed at if a mouse click occurred at the specified location.
                                  - * If the x coordinate of the location is beyond the center of a character
                                  - * the returned offset will be behind the character.
                                  - * <p>
                                  - *
                                  - * @param point the origin of character bounding box relative to 
                                  - * 	the origin of the widget client area.
                                  - * @return offset of the character at the given location relative 
                                  - * 	to the first character in the document.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_NULL_ARGUMENT when point is null</li>
                                  - *   <li>ERROR_INVALID_ARGUMENT when there is no character at the specified location</li>
                                  - * </ul>
                                  - */
                                  -public int getOffsetAtLocation(Point point) {
                                  -	checkWidget();
                                  -	TextLayout layout;
                                  -	int line;
                                  -	int lineOffset;
                                  -	int offsetInLine;
                                  -	String lineText;
                                  -	
                                  -	if (point == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	// is y above first line or is x before first column?
                                  -	if (point.y + verticalScrollOffset < 0 || point.x + horizontalScrollOffset < 0) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}	
                                  -	line = (getTopPixel() + point.y) / lineHeight;	
                                  -	// does the referenced line exist?
                                  -	if (line >= content.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}	
                                  -	lineText = content.getLine(line);
                                  -	lineOffset = content.getOffsetAtLine(line);	
                                  -	
                                  -	int x = point.x - leftMargin + horizontalScrollOffset;
                                  -	layout = renderer.getTextLayout(lineText, lineOffset);
                                  -	Rectangle rect = layout.getLineBounds(0);
                                  -	if (x > rect.x + rect.width) {
                                  -		renderer.disposeTextLayout(layout);
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	int[] trailing = new int[1];
                                  -	offsetInLine = layout.getOffset(x, 0, trailing);
                                  -	if (offsetInLine != lineText.length() - 1) {
                                  -		offsetInLine = Math.min(lineText.length(), offsetInLine + trailing[0]);		
                                  -	}
                                  -	renderer.disposeTextLayout(layout);
                                  -	return lineOffset + offsetInLine;
                                  -}
                                  -/**
                                  - * Returns the offset at the specified x location in the specified line.
                                  - * <p>
                                  - *
                                  - * @param x	x location of the mouse location
                                  - * @param line	line the mouse location is in
                                  - * @return the offset at the specified x location in the specified line,
                                  - * 	relative to the beginning of the document
                                  - */
                                  -int getOffsetAtMouseLocation(int x, int line) {
                                  -	String lineText = content.getLine(line);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	return getOffsetAtX(lineText, lineOffset, x) + lineOffset;
                                  -}
                                  -/**
                                  - * Return the orientation of the receiver.
                                  - *
                                  - * @return the orientation style
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 2.1.2
                                  - */
                                  -public int getOrientation () {
                                  -	checkWidget();
                                  -	return isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -}
                                  -/** 
                                  - * Returns the index of the last partially visible line.
                                  - *
                                  - * @return index of the last partially visible line.
                                  - */
                                  -int getPartialBottomIndex() {
                                  -	int partialLineCount = Compatibility.ceil(getClientArea().height, lineHeight);
                                  -	return Math.min(content.getLineCount(), topIndex + partialLineCount) - 1;
                                  -}
                                  -/**
                                  - * Returns the content in the specified range using the platform line 
                                  - * delimiter to separate lines.
                                  - * <p>
                                  - *
                                  - * @param writer the TextWriter to write line text into
                                  - * @return the content in the specified range using the platform line 
                                  - * 	delimiter to separate lines as written by the specified TextWriter.
                                  - */
                                  -String getPlatformDelimitedText(TextWriter writer) {
                                  -	int end = writer.getStart() + writer.getCharCount();
                                  -	int startLine = logicalContent.getLineAtOffset(writer.getStart());
                                  -	int endLine = logicalContent.getLineAtOffset(end);
                                  -	String endLineText = logicalContent.getLine(endLine);
                                  -	int endLineOffset = logicalContent.getOffsetAtLine(endLine);
                                  -	
                                  -	for (int i = startLine; i <= endLine; i++) {
                                  -		writer.writeLine(logicalContent.getLine(i), logicalContent.getOffsetAtLine(i));
                                  -		if (i < endLine) {
                                  -			writer.writeLineDelimiter(PlatformLineDelimiter);
                                  -		}
                                  -	}
                                  -	if (end > endLineOffset + endLineText.length()) {
                                  -		writer.writeLineDelimiter(PlatformLineDelimiter);
                                  -	}
                                  -	writer.close();
                                  -	return writer.toString();
                                  -}
                                  -/**
                                  - * Returns the selection.
                                  - * <p>
                                  - * Text selections are specified in terms of caret positions.  In a text
                                  - * widget that contains N characters, there are N+1 caret positions, 
                                  - * ranging from 0..N
                                  - * <p>
                                  - *
                                  - * @return start and end of the selection, x is the offset of the first 
                                  - * 	selected character, y is the offset after the last selected character.
                                  - *  The selection values returned are visual (i.e., x will always always be   
                                  - *  <= y).  To determine if a selection is right-to-left (RtoL) vs. left-to-right 
                                  - *  (LtoR), compare the caretOffset to the start and end of the selection 
                                  - *  (e.g., caretOffset == start of selection implies that the selection is RtoL).
                                  - * @see #getSelectionRange
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public Point getSelection() {
                                  -	checkWidget();
                                  -	return new Point(selection.x, selection.y);
                                  -}
                                  -/**
                                  - * Returns the selection.
                                  - * <p>
                                  - *
                                  - * @return start and length of the selection, x is the offset of the 
                                  - * 	first selected character, relative to the first character of the 
                                  - * 	widget content. y is the length of the selection. 
                                  - *  The selection values returned are visual (i.e., length will always always be   
                                  - *  positive).  To determine if a selection is right-to-left (RtoL) vs. left-to-right 
                                  - *  (LtoR), compare the caretOffset to the start and end of the selection 
                                  - *  (e.g., caretOffset == start of selection implies that the selection is RtoL).
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public Point getSelectionRange() {
                                  -	checkWidget();
                                  -	return new Point(selection.x, selection.y - selection.x);
                                  -}
                                  -/**
                                  - * Returns the receiver's selection background color.
                                  - *
                                  - * @return the selection background color
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Color getSelectionBackground() {
                                  -	checkWidget();
                                  -	if (selectionBackground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION);
                                  -	}
                                  -	return selectionBackground;
                                  -}
                                  -/**
                                  - * Gets the number of selected characters.
                                  - * <p>
                                  - *
                                  - * @return the number of selected characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getSelectionCount() {
                                  -	checkWidget();
                                  -	return getSelectionRange().y;
                                  -}
                                  -/**
                                  - * Returns the receiver's selection foreground color.
                                  - *
                                  - * @return the selection foreground color
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Color getSelectionForeground() {
                                  -	checkWidget();
                                  -	if (selectionForeground == null) {
                                  -		return getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT);
                                  -	}
                                  -	return selectionForeground;
                                  -}
                                  -/**
                                  - * Returns the selected text.
                                  - * <p>
                                  - *
                                  - * @return selected text, or an empty String if there is no selection.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getSelectionText() {
                                  -	checkWidget();
                                  -	return content.getTextRange(selection.x, selection.y - selection.x);
                                  -}
                                  -
                                  -public int getStyle() {
                                  -	int style = super.getStyle();
                                  -	style &= ~(SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT | SWT.MIRRORED);
                                  -	if (isMirrored()) {
                                  -		style |= SWT.RIGHT_TO_LEFT | SWT.MIRRORED;
                                  -	} else {
                                  -		style |= SWT.LEFT_TO_RIGHT;
                                  -	}
                                  -	return style;
                                  -}
                                  -
                                  -/**
                                  - * Returns the text segments that should be treated as if they 
                                  - * had a different direction than the surrounding text.
                                  - * <p>
                                  - *
                                  - * @param lineOffset offset of the first character in the line. 
                                  - * 	0 based from the beginning of the document.
                                  - * @param line text of the line to specify bidi segments for
                                  - * @return text segments that should be treated as if they had a
                                  - * 	different direction than the surrounding text. Only the start 
                                  - * 	index of a segment is specified, relative to the start of the 
                                  - * 	line. Always starts with 0 and ends with the line length. 
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the segment indices returned 
                                  - * 		by the listener do not start with 0, are not in ascending order,
                                  - * 		exceed the line length or have duplicates</li>
                                  - * </ul>
                                  - */
                                  -int [] getBidiSegments(int lineOffset, String line) {
                                  -	if (!isListening(LineGetSegments)) {
                                  -		return getBidiSegmentsCompatibility(line, lineOffset);
                                  -	}
                                  -	StyledTextEvent event = sendLineEvent(LineGetSegments, lineOffset, line);
                                  -	int lineLength = line.length();
                                  -	int[] segments;
                                  -	if (event == null || event.segments == null || event.segments.length == 0) {
                                  -		segments = new int[] {0, lineLength};
                                  -	}
                                  -	else {
                                  -		int segmentCount = event.segments.length;
                                  -		
                                  -		// test segment index consistency
                                  -		if (event.segments[0] != 0) {
                                  -			SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -		} 	
                                  -		for (int i = 1; i < segmentCount; i++) {
                                  -			if (event.segments[i] <= event.segments[i - 1] || event.segments[i] > lineLength) {
                                  -				SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -			} 	
                                  -		}
                                  -		// ensure that last segment index is line end offset
                                  -		if (event.segments[segmentCount - 1] != lineLength) {
                                  -			segments = new int[segmentCount + 1];
                                  -			System.arraycopy(event.segments, 0, segments, 0, segmentCount);
                                  -			segments[segmentCount] = lineLength;
                                  -		}
                                  -		else {
                                  -			segments = event.segments;
                                  -		}
                                  -	}
                                  -	return segments;
                                  -}
                                  -/**
                                  - * @see #getBidiSegments
                                  - * Supports deprecated setBidiColoring API. Remove when API is removed.
                                  - */
                                  -int [] getBidiSegmentsCompatibility(String line, int lineOffset) {
                                  -	StyledTextEvent event;
                                  -	StyleRange [] styles = new StyleRange [0];
                                  -	int lineLength = line.length();
                                  -	if (!bidiColoring) {
                                  -		return new int[] {0, lineLength};
                                  -	}
                                  -	event = renderer.getLineStyleData(lineOffset, line);
                                  -	if (event != null) {
                                  -		styles = event.styles;
                                  -	}
                                  -	if (styles.length == 0) {
                                  -		return new int[] {0, lineLength};
                                  -	}
                                  -	int k=0, count = 1;
                                  -	while (k < styles.length && styles[k].start == 0 && styles[k].length == lineLength) {
                                  -		k++;
                                  -	}
                                  -	int[] offsets = new int[(styles.length - k) * 2 + 2];
                                  -	for (int i = k; i < styles.length; i++) {
                                  -		StyleRange style = styles[i];
                                  -		int styleLineStart = Math.max(style.start - lineOffset, 0);
                                  -		int styleLineEnd = Math.max(style.start + style.length - lineOffset, styleLineStart);
                                  -		styleLineEnd = Math.min (styleLineEnd, line.length ());
                                  -		if (i > 0 && count > 1 &&
                                  -			((styleLineStart >= offsets[count-2] && styleLineStart <= offsets[count-1]) ||
                                  -			 (styleLineEnd >= offsets[count-2] && styleLineEnd <= offsets[count-1])) &&
                                  -			 style.similarTo(styles[i-1])) {
                                  -			offsets[count-2] = Math.min(offsets[count-2], styleLineStart);
                                  -			offsets[count-1] = Math.max(offsets[count-1], styleLineEnd);
                                  -		} else {
                                  -			if (styleLineStart > offsets[count - 1]) {
                                  -				offsets[count] = styleLineStart;
                                  -				count++;
                                  -			}
                                  -			offsets[count] = styleLineEnd;
                                  -			count++;
                                  -		}
                                  -	}
                                  -	// add offset for last non-colored segment in line, if any
                                  -	if (lineLength > offsets[count-1]) {
                                  -		offsets [count] = lineLength;
                                  -		count++;
                                  -	}		
                                  -	if (count == offsets.length) {
                                  -		return offsets;
                                  -	}
                                  -	int [] result = new int [count];
                                  -	System.arraycopy (offsets, 0, result, 0, count);
                                  -	return result;
                                  -}
                                  -/**
                                  - * Returns the style range at the given offset.
                                  - * Returns null if a LineStyleListener has been set or if a style is not set
                                  - * for the offset. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * <p>
                                  - *
                                  - * @param offset the offset to return the style for. 
                                  - * 	0 <= offset < getCharCount() must be true.
                                  - * @return a StyleRange with start == offset and length == 1, indicating
                                  - * 	the style at the given offset. null if a LineStyleListener has been set 
                                  - * 	or if a style is not set for the given offset.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when the offset is invalid</li>
                                  - * </ul>
                                  - */
                                  -public StyleRange getStyleRangeAtOffset(int offset) {
                                  -	checkWidget();
                                  -	if (offset < 0 || offset >= getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	} 	
                                  -	if (!userLineStyle) {
                                  -		return defaultLineStyler.getStyleRangeAtOffset(offset);
                                  -	} 
                                  -	return null;
                                  -}
                                  -/**
                                  - * Returns the styles.
                                  - * Returns an empty array if a LineStyleListener has been set. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * <p>
                                  - *
                                  - * @return the styles or an empty array if a LineStyleListener has been set.
                                  -  *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public StyleRange [] getStyleRanges() {
                                  -	checkWidget();
                                  -	StyleRange styles[];
                                  -	
                                  -	if (!userLineStyle) {
                                  -		styles = defaultLineStyler.getStyleRanges();
                                  -	}
                                  -	else {
                                  -		styles = new StyleRange[0];
                                  -	}
                                  -	return styles;
                                  -}
                                  -/**
                                  - * Returns the styles for the given text range.
                                  - * Returns an empty array if a LineStyleListener has been set. 
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * 
                                  - * @param start the start offset of the style ranges to return
                                  - * @param length the number of style ranges to return
                                  - *
                                  - * @return the styles or an empty array if a LineStyleListener has 
                                  - *  been set.  The returned styles will reflect the given range.  The first 
                                  - *  returned <code>StyleRange</code> will have a starting offset >= start 
                                  - *  and the last returned <code>StyleRange</code> will have an ending 
                                  - *  offset <= start + length - 1
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - * 
                                  - * @since 3.0
                                  - */
                                  -public StyleRange [] getStyleRanges(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	StyleRange styles[];
                                  -	
                                  -	if (!userLineStyle) {
                                  -		styles = defaultLineStyler.getStyleRangesFor(start, length);
                                  -		if (styles == null) return new StyleRange[0];
                                  -		// adjust the first and last style to reflect the specified 
                                  -		// range, clone these styles since the returned styles are the
                                  -		// styles cached by the widget
                                  -		if (styles.length == 1) {
                                  -			StyleRange style = styles[0];
                                  -			if (style.start < start) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = newStyle.length - (start - newStyle.start);
                                  -				newStyle.start = start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -			if (style.start + style.length > (start + length)) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = start + length - newStyle.start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -		} else if (styles.length > 1) {
                                  -			StyleRange style = styles[0];
                                  -			if (style.start < start) {
                                  -				StyleRange newStyle = (StyleRange)styles[0].clone();
                                  -				newStyle.length = newStyle.length - (start - newStyle.start);
                                  -				newStyle.start = start;
                                  -				styles[0] = newStyle;
                                  -			}
                                  -			style = styles[styles.length - 1];
                                  -			if (style.start + style.length > (start + length)) {
                                  -				StyleRange newStyle = (StyleRange)styles[styles.length - 1].clone();
                                  -				newStyle.length = start + length - newStyle.start;
                                  -				styles[styles.length - 1] = newStyle;
                                  -			}
                                  -		}
                                  -	}
                                  -	else {
                                  -		styles = new StyleRange[0];
                                  -	}
                                  -	return styles;
                                  -}
                                  -/**
                                  - * Returns the tab width measured in characters.
                                  - *
                                  - * @return tab width measured in characters
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTabs() {
                                  -	checkWidget();
                                  -	return tabLength;
                                  -}
                                  -/**
                                  - * Returns a copy of the widget content.
                                  - * <p>
                                  - *
                                  - * @return copy of the widget content
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public String getText() {
                                  -	checkWidget();
                                  -	return content.getTextRange(0, getCharCount());
                                  -}	
                                  -/**
                                  - * Returns the widget content between the two offsets.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character in the returned String
                                  - * @param end offset of the last character in the returned String 
                                  - * @return widget content starting at start and ending at end
                                  - * @see #getTextRange(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public String getText(int start, int end) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	
                                  -	if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	return content.getTextRange(start, end - start + 1);
                                  -}
                                  -/**
                                  - * Returns the smallest bounding rectangle that includes the characters between two offsets.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character included in the bounding box
                                  - * @param end offset of the last character included in the bounding box 
                                  - * @return bounding box of the text between start and end
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - * @since 3.1
                                  - */
                                  -public Rectangle getTextBounds(int start, int end) {
                                  -	checkWidget();	
                                  -	int contentLength = getCharCount();	
                                  -	if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}
                                  -	int lineStart = content.getLineAtOffset(start);
                                  -	int lineEnd = content.getLineAtOffset(end);
                                  -	Rectangle rect;
                                  -	int y = lineStart * lineHeight;
                                  -	int height = (lineEnd + 1) * lineHeight - y;
                                  -	int left = 0x7fffffff, right = 0;
                                  -	for (int i = lineStart; i <= lineEnd; i++) {
                                  -		int lineOffset = content.getOffsetAtLine(i);
                                  -		String line = content.getLine(i);
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		if (i == lineStart && i == lineEnd) {
                                  -			rect = layout.getBounds(start - lineOffset, end - lineOffset);
                                  -		} else if (i == lineStart) {
                                  -			rect = layout.getBounds(start - lineOffset, line.length());
                                  -		}	else	if (i == lineEnd) {
                                  -			rect = layout.getBounds(0, end - lineOffset);
                                  -		} else {
                                  -			rect = layout.getLineBounds(0);
                                  -		}
                                  -		left = Math.min (left, rect.x);
                                  -		right = Math.max (right, rect.x + rect.width);
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	rect = new Rectangle (left, y, right-left, height);
                                  -	rect.x += leftMargin - horizontalScrollOffset;
                                  -	rect.y -= verticalScrollOffset;
                                  -	return rect;
                                  -}
                                  -/**
                                  - * Returns the widget content starting at start for length characters.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character in the returned String
                                  - * @param length number of characters to return 
                                  - * @return widget content starting at start and extending length characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or length are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public String getTextRange(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	return content.getTextRange(start, length);
                                  -}
                                  -/**
                                  - * Returns the maximum number of characters that the receiver is capable of holding.
                                  - * 
                                  - * @return the text limit
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTextLimit() {
                                  -	checkWidget();
                                  -	
                                  -	return textLimit;
                                  -}
                                  -/**
                                  - * Gets the top index.  The top index is the index of the fully visible line that
                                  - * is currently at the top of the widget or the topmost partially visible line if 
                                  - * no line is fully visible. 
                                  - * The top index changes when the widget is scrolled. Indexing is zero based.
                                  - * <p>
                                  - *
                                  - * @return the index of the top line
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTopIndex() {
                                  -	checkWidget();
                                  -	int logicalTopIndex = topIndex;
                                  -	
                                  -	if (wordWrap) {
                                  -		int visualLineOffset = content.getOffsetAtLine(topIndex);
                                  -		logicalTopIndex = logicalContent.getLineAtOffset(visualLineOffset);
                                  -	}
                                  -	return logicalTopIndex;
                                  -}
                                  -/**
                                  - * Gets the top pixel.  The top pixel is the pixel position of the line that is 
                                  - * currently at the top of the widget.The text widget can be scrolled by pixels 
                                  - * by dragging the scroll thumb so that a partial line may be displayed at the top 
                                  - * the widget.  The top pixel changes when the widget is scrolled.  The top pixel 
                                  - * does not include the widget trimming.
                                  - * <p>
                                  - *
                                  - * @return pixel position of the top line
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public int getTopPixel() {
                                  -	checkWidget();
                                  -	return verticalScrollOffset;
                                  -}
                                  -/** 
                                  - * Returns the vertical scroll increment.
                                  - * <p>
                                  - *
                                  - * @return vertical scroll increment.
                                  - */
                                  -int getVerticalIncrement() {
                                  -	return lineHeight;
                                  -}
                                  -int getCaretDirection() {
                                  -	if (!isBidiCaret()) return SWT.DEFAULT;
                                  -	if (!updateCaretDirection && caretDirection != SWT.NULL) return caretDirection;
                                  -	updateCaretDirection = false;
                                  -	int caretLine = getCaretLine();
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	String line = content.getLine(caretLine);
                                  -	int offset = caretOffset - lineOffset;
                                  -	int lineLength = line.length();
                                  -	if (lineLength == 0) return isMirrored() ? SWT.RIGHT : SWT.LEFT;
                                  -	if (advancing && offset > 0) offset--;
                                  -	if (offset == lineLength && offset > 0) offset--;
                                  -	while (offset > 0 && Character.isDigit(line.charAt(offset))) offset--;
                                  -	if (offset == 0 && Character.isDigit(line.charAt(offset))) {
                                  -		return isMirrored() ? SWT.RIGHT : SWT.LEFT;
                                  -	}
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	int level = layout.getLevel(offset);
                                  -	renderer.disposeTextLayout(layout);
                                  -	return ((level & 1) != 0) ? SWT.RIGHT : SWT.LEFT;
                                  -}
                                  -/**
                                  - * Returns the index of the line the caret is on.
                                  - * When in word wrap mode and at the end of one wrapped line/ 
                                  - * beginning of the continuing wrapped line the caret offset
                                  - * is not sufficient to determine the caret line.
                                  - * 
                                  - * @return the index of the line the caret is on.
                                  - */
                                  -int getCaretLine() {
                                  -	int caretLine = content.getLineAtOffset(caretOffset);
                                  -	int leftColumnX = leftMargin;
                                  -	if (wordWrap && columnX <= leftColumnX &&
                                  -		caretLine < content.getLineCount() - 1 &&
                                  -		caretOffset == content.getOffsetAtLine(caretLine + 1)) {
                                  -		caretLine++;
                                  -	}
                                  -	return caretLine;
                                  -}
                                  -/**
                                  - * Returns the offset of the character after the word at the specified
                                  - * offset.
                                  - * <p>
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Space characters ' ' (ASCII 20) are special as they are treated as
                                  - * part of the word leading up to the space character.  Line breaks are 
                                  - * treated as one word.
                                  - * </p>
                                  - */
                                  -int getWordEnd(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -	int lineLength = lineText.length();
                                  -	
                                  -	if (offset >= getCharCount()) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset + lineLength) {
                                  -		line++;
                                  -		offset = logicalContent.getOffsetAtLine(line);
                                  -	}
                                  -	else {
                                  -		TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -		offset -= lineOffset;
                                  -		offset = layout.getNextOffset(offset, SWT.MOVEMENT_WORD);
                                  -		offset += lineOffset;
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the offset of the character after the word at the specified
                                  - * offset.
                                  - * <p>
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Spaces are ignored and do not represent a word.  Line breaks are treated 
                                  - * as one word.
                                  - * </p>
                                  - */
                                  -int getWordEndNoSpaces(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -	int lineLength = lineText.length();
                                  -	
                                  -	if (offset >= getCharCount()) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset + lineLength) {
                                  -		line++;
                                  -		offset = logicalContent.getOffsetAtLine(line);
                                  -	}
                                  -	else {
                                  -		offset -= lineOffset;
                                  -		char ch = lineText.charAt(offset);
                                  -		boolean letterOrDigit = Compatibility.isLetterOrDigit(ch);
                                  -		
                                  -		while (offset < lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) {
                                  -			offset++;
                                  -			ch = lineText.charAt(offset);
                                  -		}
                                  -		if (offset == lineLength - 1 && Compatibility.isLetterOrDigit(ch) == letterOrDigit && !Compatibility.isSpaceChar(ch)) {
                                  -			offset++;
                                  -		}
                                  -		offset += lineOffset;
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns the start offset of the word at the specified offset.
                                  - * There are two classes of words formed by a sequence of characters:
                                  - * <p>
                                  - * <ul>
                                  - * <li>from 0-9 and A-z (ASCII 48-57 and 65-122)
                                  - * <li>every other character except line breaks
                                  - * </ul>
                                  - * </p>
                                  - * <p>
                                  - * Space characters ' ' (ASCII 20) are special as they are treated as
                                  - * part of the word leading up to the space character.  Line breaks are treated 
                                  - * as one word.
                                  - * </p>
                                  - */
                                  -int getWordStart(int offset) {
                                  -	int line = logicalContent.getLineAtOffset(offset);
                                  -	int lineOffset = logicalContent.getOffsetAtLine(line);
                                  -	String lineText = logicalContent.getLine(line);
                                  -
                                  -	if (offset <= 0) {
                                  -		return offset;
                                  -	}
                                  -	if (offset == lineOffset) {
                                  -		line--;
                                  -		lineText = logicalContent.getLine(line);
                                  -		offset = logicalContent.getOffsetAtLine(line) + lineText.length();
                                  -	}
                                  -	else {
                                  -		TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -		offset -= lineOffset;
                                  -		offset = layout.getPreviousOffset(offset, SWT.MOVEMENT_WORD);
                                  -		offset += lineOffset;
                                  -		renderer.disposeTextLayout(layout); 
                                  -	}
                                  -	return offset;
                                  -}
                                  -/**
                                  - * Returns whether the widget wraps lines.
                                  - * <p>
                                  - *
                                  - * @return true if widget wraps lines, false otherwise
                                  - * @since 2.0
                                  - */
                                  -public boolean getWordWrap() {
                                  -	checkWidget();
                                  -	return wordWrap;
                                  -}
                                  -/** 
                                  - * Returns the x location of the character at the give offset in the line.
                                  - * <b>NOTE:</b> Does not return correct values for true italic fonts (vs. slanted fonts).
                                  - * <p>
                                  - *
                                  - * @return x location of the character at the given offset in the line.
                                  - */
                                  -int getXAtOffset(String line, int lineIndex, int offsetInLine) {
                                  -	int x = 0;
                                  -	int lineLength = line.length();
                                  -	if (lineIndex < content.getLineCount() - 1) {
                                  -		int endLineOffset = content.getOffsetAtLine(lineIndex + 1) - 1;
                                  -		if (lineLength < offsetInLine && offsetInLine <= endLineOffset) {
                                  -			offsetInLine = lineLength;
                                  -		}
                                  -	}
                                  -	if (lineLength != 0  && offsetInLine <= lineLength) {
                                  -		int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -		TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -		if (!advancing || offsetInLine == 0) {
                                  -			x = layout.getLocation(offsetInLine, false).x;
                                  -		} else {
                                  -			x = layout.getLocation(offsetInLine - 1, true).x;
                                  -		}
                                  -		renderer.disposeTextLayout(layout);
                                  -	}
                                  -	return x + leftMargin - horizontalScrollOffset;
                                  -}
                                  -/** 
                                  - * Inserts a string.  The old selection is replaced with the new text.  
                                  - * <p>
                                  - *
                                  - * @param string the string
                                  - * @see #replaceTextRange(int,int,String)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void insert(String string) {
                                  -	checkWidget();
                                  -	if (string == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	Point sel = getSelectionRange();
                                  -	replaceTextRange(sel.x, sel.y, string);
                                  -}
                                  -/**
                                  - * Creates content change listeners and set the default content model.
                                  - */
                                  -void installDefaultContent() {
                                  -	textChangeListener = new TextChangeListener() {
                                  -		public void textChanging(TextChangingEvent event) {
                                  -			handleTextChanging(event);
                                  -		}
                                  -		public void textChanged(TextChangedEvent event) {
                                  -			handleTextChanged(event);
                                  -		}
                                  -		public void textSet(TextChangedEvent event) {
                                  -			handleTextSet(event);
                                  -		}
                                  -	};
                                  -	logicalContent = content = new DefaultContent();
                                  -	content.addTextChangeListener(textChangeListener);
                                  -}
                                  -/**
                                  - * Creates a default line style listener.
                                  - * Used to store line background colors and styles.
                                  - * Removed when the user sets a LineStyleListener.
                                  - * <p>
                                  - *
                                  - * @see #addLineStyleListener
                                  - */
                                  -void installDefaultLineStyler() {
                                  -	defaultLineStyler = new DefaultLineStyler(logicalContent);
                                  -	StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -	if (!userLineStyle) {
                                  -		addListener(LineGetStyle, typedListener);
                                  -	}
                                  -	if (!userLineBackground) {
                                  -		addListener(LineGetBackground, typedListener);
                                  -	}
                                  -}
                                  -/** 
                                  - * Adds event listeners
                                  - */
                                  -void installListeners() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	
                                  -	listener = new Listener() {
                                  -		public void handleEvent(Event event) {
                                  -			switch (event.type) {
                                  -				case SWT.Dispose: handleDispose(event); break;
                                  -				case SWT.KeyDown: handleKeyDown(event); break;
                                  -				case SWT.KeyUp: handleKeyUp(event); break;
                                  -				case SWT.MouseDown: handleMouseDown(event); break;
                                  -				case SWT.MouseUp: handleMouseUp(event); break;
                                  -				case SWT.MouseDoubleClick: handleMouseDoubleClick(event); break;
                                  -				case SWT.MouseMove: handleMouseMove(event); break;
                                  -				case SWT.Paint: handlePaint(event); break;
                                  -				case SWT.Resize: handleResize(event); break;
                                  -				case SWT.Traverse: handleTraverse(event); break;
                                  -			}
                                  -		}		
                                  -	};
                                  -	addListener(SWT.Dispose, listener);
                                  -	addListener(SWT.KeyDown, listener);
                                  -	addListener(SWT.KeyUp, listener);
                                  -	addListener(SWT.MouseDown, listener);
                                  -	addListener(SWT.MouseUp, listener);
                                  -	addListener(SWT.MouseDoubleClick, listener);
                                  -	addListener(SWT.MouseMove, listener);
                                  -	addListener(SWT.Paint, listener);
                                  -	addListener(SWT.Resize, listener);
                                  -	addListener(SWT.Traverse, listener);
                                  -	if (verticalBar != null) {
                                  -		verticalBar.addListener(SWT.Selection, new Listener() {
                                  -			public void handleEvent(Event event) {
                                  -				handleVerticalScroll(event);
                                  -			}
                                  -		});
                                  -	}
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.addListener(SWT.Selection, new Listener() {
                                  -			public void handleEvent(Event event) {
                                  -				handleHorizontalScroll(event);
                                  -			}
                                  -		});
                                  -	}
                                  -}
                                  -StyledTextContent internalGetContent() {
                                  -	return content;
                                  -}
                                  -int internalGetHorizontalPixel() {
                                  -	return horizontalScrollOffset;
                                  -}
                                  -Point internalGetSelection() {
                                  -	return selection;
                                  -}
                                  -boolean internalGetWordWrap() {
                                  -	return wordWrap;
                                  -}
                                  -/**
                                  - * Used by WordWrapCache to bypass StyledText.redraw which does
                                  - * an unwanted cache reset.
                                  - */
                                  -void internalRedraw() {
                                  -	super.redraw();
                                  -}
                                  -/** 
                                  - * Redraws the specified text range.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character to redraw
                                  - * @param length number of characters to redraw
                                  - * @param clearBackground true if the background should be cleared as 
                                  - * 	part of the redraw operation.  If true, the entire redraw range will
                                  - *  be cleared before anything is redrawn.  If the redraw range includes
                                  - *	the last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - *  The redraw operation will be faster and smoother if clearBackground is 
                                  - * 	set to false.  Whether or not the flag can be set to false depends on 
                                  - * 	the type of change that has taken place.  If font styles or background 
                                  - * 	colors for the redraw range have changed, clearBackground should be 
                                  - * 	set to true.  If only foreground colors have changed for the redraw 
                                  - * 	range, clearBackground can be set to false. 
                                  - */
                                  -void internalRedrawRange(int start, int length, boolean clearBackground) {
                                  -	int end = start + length;
                                  -	int firstLine = content.getLineAtOffset(start);
                                  -	int lastLine = content.getLineAtOffset(end);
                                  -	int offsetInFirstLine;
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	int partialTopIndex = verticalScrollOffset / lineHeight;
                                  -	// do nothing if redraw range is completely invisible	
                                  -	if (firstLine > partialBottomIndex || lastLine < partialTopIndex) {
                                  -		return;
                                  -	}
                                  -	// only redraw visible lines
                                  -	if (partialTopIndex > firstLine) {
                                  -		firstLine = partialTopIndex;
                                  -		offsetInFirstLine = 0;
                                  -	}
                                  -	else {
                                  -		offsetInFirstLine = start - content.getOffsetAtLine(firstLine);
                                  -	}
                                  -	if (partialBottomIndex + 1 < lastLine) {
                                  -		lastLine = partialBottomIndex + 1;	// + 1 to redraw whole bottom line, including line break
                                  -		end = content.getOffsetAtLine(lastLine);
                                  -	}
                                  -	redrawLines(firstLine, offsetInFirstLine, lastLine, end, clearBackground);
                                  -	
                                  -	// redraw entire center lines if redraw range includes more than two lines
                                  -	if (lastLine - firstLine > 1) {
                                  -		Rectangle clientArea = getClientArea();
                                  -		int redrawStopY = lastLine * lineHeight - verticalScrollOffset;		
                                  -		int redrawY = (firstLine + 1) * lineHeight - verticalScrollOffset;		
                                  -		draw(0, redrawY, clientArea.width, redrawStopY - redrawY, clearBackground);
                                  -	}
                                  -}
                                  -/**
                                  - * Returns the widget text with style information encoded using RTF format
                                  - * specification version 1.5.
                                  - *
                                  - * @return the widget text with style information encoded using RTF format
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -String getRtf(){
                                  -	checkWidget();
                                  -	RTFWriter rtfWriter = new RTFWriter(0, getCharCount());
                                  -	return getPlatformDelimitedText(rtfWriter);
                                  -}
                                  -/** 
                                  - * Frees resources.
                                  - */
                                  -void handleDispose(Event event) {
                                  -	removeListener(SWT.Dispose, listener);
                                  -	notifyListeners(SWT.Dispose, event);
                                  -	event.type = SWT.None;
                                  -
                                  -	clipboard.dispose();
                                  -	ibeamCursor.dispose();
                                  -	if (renderer != null) {
                                  -		renderer.dispose();
                                  -		renderer = null;
                                  -	}
                                  -	if (content != null) {
                                  -		content.removeTextChangeListener(textChangeListener);
                                  -		content = null;
                                  -	}
                                  -	if (defaultCaret != null) {
                                  -		defaultCaret.dispose();
                                  -		defaultCaret = null;
                                  -	}
                                  -	if (leftCaretBitmap != null) {
                                  -		leftCaretBitmap.dispose();
                                  -		leftCaretBitmap = null;
                                  -	}
                                  -	if (rightCaretBitmap != null) {
                                  -		rightCaretBitmap.dispose();
                                  -		rightCaretBitmap = null;
                                  -	}
                                  -	if (defaultLineStyler != null) {
                                  -		defaultLineStyler.release();
                                  -		defaultLineStyler = null;
                                  -	}
                                  -	if (isBidiCaret()) {
                                  -		BidiUtil.removeLanguageListener(handle);
                                  -	}
                                  -	selectionBackground = null;
                                  -	selectionForeground = null;
                                  -	logicalContent = null;
                                  -	textChangeListener = null;
                                  -	lineCache = null;
                                  -	ibeamCursor = null;
                                  -	selection = null;
                                  -	doubleClickSelection = null;
                                  -	keyActionMap = null;
                                  -	background = null;
                                  -	foreground = null;
                                  -	clipboard = null;
                                  -}
                                  -/** 
                                  - * Scrolls the widget horizontally.
                                  - */
                                  -void handleHorizontalScroll(Event event) {
                                  -	int scrollPixel = getHorizontalBar().getSelection() - horizontalScrollOffset;
                                  -	scrollHorizontal(scrollPixel);
                                  -}
                                  -/**
                                  - * If an action has been registered for the key stroke execute the action.
                                  - * Otherwise, if a character has been entered treat it as new content.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKey(Event event) {
                                  -	int action;
                                  -	advancing = true;
                                  -	if (event.keyCode != 0) {
                                  -		// special key pressed (e.g., F1)
                                  -		action = getKeyBinding(event.keyCode | event.stateMask);
                                  -	}
                                  -	else {
                                  -		// character key pressed
                                  -		action = getKeyBinding(event.character | event.stateMask);
                                  -		if (action == SWT.NULL) { 
                                  -			// see if we have a control character
                                  -			if ((event.stateMask & SWT.CTRL) != 0 && (event.character >= 0) && event.character <= 31) {
                                  -				// get the character from the CTRL+char sequence, the control
                                  -				// key subtracts 64 from the value of the key that it modifies
                                  -				int c = event.character + 64;
                                  -				action = getKeyBinding(c | event.stateMask);
                                  -			}
                                  -		}
                                  -	}
                                  -	if (action == SWT.NULL) {
                                  -		boolean ignore = false;
                                  -		
                                  -		if (IS_CARBON) {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Do not  
                                  -			// ignore COMMAND+ALT combinations since that key sequence
                                  -			// produces characters on the mac.
                                  -			ignore = (event.stateMask ^ SWT.COMMAND) == 0 ||
                                  -					(event.stateMask ^ (SWT.COMMAND | SWT.SHIFT)) == 0;
                                  -		} else if (IS_MOTIF) {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Do not  
                                  -			// ignore ALT combinations since this key sequence
                                  -			// produces characters on motif.
                                  -			ignore = (event.stateMask ^ SWT.CTRL) == 0 ||
                                  -					(event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0;
                                  -		} else {
                                  -			// Ignore accelerator key combinations (we do not want to 
                                  -			// insert a character in the text in this instance). Don't  
                                  -			// ignore CTRL+ALT combinations since that is the Alt Gr 
                                  -			// key on some keyboards.  See bug 20953. 
                                  -			ignore = (event.stateMask ^ SWT.ALT) == 0 || 
                                  -					(event.stateMask ^ SWT.CTRL) == 0 ||
                                  -					(event.stateMask ^ (SWT.ALT | SWT.SHIFT)) == 0 ||
                                  -					(event.stateMask ^ (SWT.CTRL | SWT.SHIFT)) == 0;
                                  -		}
                                  -		// -ignore anything below SPACE except for line delimiter keys and tab.
                                  -		// -ignore DEL 
                                  -		if (!ignore && event.character > 31 && event.character != SWT.DEL || 
                                  -		    event.character == SWT.CR || event.character == SWT.LF || 
                                  -		    event.character == TAB) {
                                  -			doContent(event.character);
                                  -		}
                                  -	}
                                  -	else {
                                  -		invokeAction(action);		
                                  -	}
                                  -}
                                  -/**
                                  - * If a VerifyKey listener exists, verify that the key that was entered
                                  - * should be processed.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKeyDown(Event event) {
                                  -	if (clipboardSelection == null) {
                                  -		clipboardSelection = new Point(selection.x, selection.y);
                                  -	}
                                  -	
                                  -	Event verifyEvent = new Event();
                                  -	verifyEvent.character = event.character;
                                  -	verifyEvent.keyCode = event.keyCode;
                                  -	verifyEvent.stateMask = event.stateMask;
                                  -	verifyEvent.doit = true;
                                  -	notifyListeners(VerifyKey, verifyEvent);
                                  -	if (verifyEvent.doit) {
                                  -		handleKey(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Update the Selection Clipboard.
                                  - * <p>
                                  - *
                                  - * @param event keyboard event
                                  - */
                                  -void handleKeyUp(Event event) {
                                  -	if (clipboardSelection != null) {
                                  -		if (clipboardSelection.x != selection.x || clipboardSelection.y != selection.y) {
                                  -			try {
                                  -				if (selection.y - selection.x > 0) {
                                  -					setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD);
                                  -				}
                                  -			}
                                  -			catch (SWTError error) {
                                  -				// Copy to clipboard failed. This happens when another application 
                                  -				// is accessing the clipboard while we copy. Ignore the error.
                                  -				// Fixes 1GDQAVN
                                  -				// Rethrow all other errors. Fixes bug 17578.
                                  -				if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -					throw error;
                                  -				}
                                  -			}
                                  -		}
                                  -	}
                                  -	clipboardSelection = null;
                                  -}
                                  -/**
                                  - * Updates the caret location and selection if mouse button 1 has been 
                                  - * pressed.
                                  - */
                                  -void handleMouseDoubleClick(Event event) {
                                  -	if (event.button != 1 || !doubleClickEnabled) {
                                  -		return;
                                  -	}
                                  -	event.y -= topMargin;
                                  -	mouseDoubleClick = true;
                                  -	caretOffset = getWordStart(caretOffset);
                                  -	resetSelection();
                                  -	caretOffset = getWordEndNoSpaces(caretOffset);
                                  -	showCaret();
                                  -	doMouseSelection();
                                  -	doubleClickSelection = new Point(selection.x, selection.y);
                                  -}
                                  -/** 
                                  - * Updates the caret location and selection if mouse button 1 has been 
                                  - * pressed.
                                  - */
                                  -void handleMouseDown(Event event) {
                                  -	mouseDown = true;
                                  -	mouseDoubleClick = false;
                                  -	if (event.button == 2) {
                                  -		String text = (String)getClipboardContent(DND.SELECTION_CLIPBOARD);
                                  -		if (text != null && text.length() > 0) {
                                  -			// position cursor
                                  -			int x = event.x;
                                  -			int y = event.y - topMargin;
                                  -			doMouseLocationChange(x, y, false);
                                  -			// insert text
                                  -			Event e = new Event();
                                  -			e.start = selection.x;
                                  -			e.end = selection.y;
                                  -			e.text = getModelDelimitedText(text);
                                  -			sendKeyEvent(e);
                                  -		}
                                  -	}
                                  -	if ((event.button != 1) || (IS_CARBON && (event.stateMask & SWT.MOD4) != 0)) {
                                  -		return;	
                                  -	}
                                  -	boolean select = (event.stateMask & SWT.MOD2) != 0;	
                                  -	event.y -= topMargin;
                                  -	doMouseLocationChange(event.x, event.y, select);
                                  -}
                                  -/** 
                                  - * Updates the caret location and selection if mouse button 1 is pressed 
                                  - * during the mouse move.
                                  - */
                                  -void handleMouseMove(Event event) {
                                  -	if (!mouseDown) return;
                                  -	if ((event.stateMask & SWT.BUTTON1) == 0) {
                                  -		return;
                                  -	}
                                  -	event.y -= topMargin;
                                  -	doMouseLocationChange(event.x, event.y, true);
                                  -	update();
                                  -	doAutoScroll(event);
                                  -}
                                  -/** 
                                  - * Autoscrolling ends when the mouse button is released.
                                  - */
                                  -void handleMouseUp(Event event) {
                                  -	mouseDown = false;
                                  -	mouseDoubleClick = false;
                                  -	event.y -= topMargin;
                                  -	endAutoScroll();
                                  -	if (event.button == 1) {
                                  -		try {
                                  -			if (selection.y - selection.x > 0) {
                                  -				setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD);
                                  -			}
                                  -		}
                                  -		catch (SWTError error) {
                                  -			// Copy to clipboard failed. This happens when another application 
                                  -			// is accessing the clipboard while we copy. Ignore the error.
                                  -			// Fixes 1GDQAVN
                                  -			// Rethrow all other errors. Fixes bug 17578.
                                  -			if (error.code != DND.ERROR_CANNOT_SET_CLIPBOARD) {
                                  -				throw error;
                                  -			}
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Renders the invalidated area specified in the paint event.
                                  - * <p>
                                  - *
                                  - * @param event paint event
                                  - */
                                  -void handlePaint(Event event) {
                                  -	// Check if there is work to do
                                  -	if (event.height == 0) return;
                                  -	int startLine = Math.max(0, (event.y - topMargin + verticalScrollOffset) / lineHeight);
                                  -	int paintYFromTopLine = (startLine - topIndex) * lineHeight;
                                  -	int topLineOffset = topIndex * lineHeight - verticalScrollOffset;
                                  -	int startY = paintYFromTopLine + topLineOffset + topMargin;	// adjust y position for pixel based scrolling and top margin
                                  -	int renderHeight = event.y + event.height - startY;
                                  -	performPaint(event.gc, startLine, startY, renderHeight);
                                  -}	
                                  -/**
                                  - * Recalculates the scroll bars. Rewraps all lines when in word 
                                  - * wrap mode.
                                  - * <p>
                                  - *
                                  - * @param event resize event
                                  - */
                                  -void handleResize(Event event) {
                                  -	int oldHeight = clientAreaHeight;
                                  -	int oldWidth = clientAreaWidth;
                                  -	
                                  -	Rectangle clientArea = getClientArea();
                                  -	clientAreaHeight = clientArea.height;
                                  -	clientAreaWidth = clientArea.width;
                                  -	/* Redraw the old or new right/bottom margin if needed */
                                  -	if (oldWidth != clientAreaWidth) {
                                  -		if (rightMargin > 0) {
                                  -			int x = (oldWidth < clientAreaWidth ? oldWidth : clientAreaWidth)- rightMargin; 
                                  -			redraw(x, 0, rightMargin, oldHeight, false);
                                  -		}
                                  -	}
                                  -	if (oldHeight != clientAreaHeight) {
                                  -		if (bottomMargin > 0) {
                                  -			int y = (oldHeight < clientAreaHeight ? oldHeight : clientAreaHeight)- bottomMargin; 
                                  -			redraw(0, y, oldWidth, bottomMargin, false);
                                  -		}
                                  -	}
                                  -	if (wordWrap) {
                                  -		if (oldWidth != clientAreaWidth) {	
                                  -			wordWrapResize(oldWidth);
                                  -		}
                                  -	}
                                  -	else
                                  -	if (clientAreaHeight > oldHeight) {
                                  -		int lineCount = content.getLineCount();
                                  -		int oldBottomIndex = topIndex + oldHeight / lineHeight;
                                  -		int newItemCount = Compatibility.ceil(clientAreaHeight - oldHeight, lineHeight);
                                  -		
                                  -		oldBottomIndex = Math.min(oldBottomIndex, lineCount);
                                  -		newItemCount = Math.min(newItemCount, lineCount - oldBottomIndex);
                                  -		lineCache.calculate(oldBottomIndex, newItemCount);
                                  -	}
                                  -	setScrollBars();
                                  -	claimBottomFreeSpace();
                                  -	claimRightFreeSpace();	
                                  -	if (oldHeight != clientAreaHeight) {
                                  -		calculateTopIndex();
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the caret position and selection and the scroll bars to reflect 
                                  - * the content change.
                                  - * <p>
                                  - */
                                  -void handleTextChanged(TextChangedEvent event) {
                                  -	lineCache.textChanged(lastTextChangeStart, 
                                  -		lastTextChangeNewLineCount, 
                                  -		lastTextChangeReplaceLineCount,
                                  -		lastTextChangeNewCharCount,
                                  -		lastTextChangeReplaceCharCount);
                                  -	setScrollBars();
                                  -	// update selection/caret location after styles have been changed.
                                  -	// otherwise any text measuring could be incorrect
                                  -	// 
                                  -	// also, this needs to be done after all scrolling. Otherwise, 
                                  -	// selection redraw would be flushed during scroll which is wrong.
                                  -	// in some cases new text would be drawn in scroll source area even 
                                  -	// though the intent is to scroll it.
                                  -	// fixes 1GB93QT
                                  -	updateSelection(
                                  -		lastTextChangeStart, 
                                  -		lastTextChangeReplaceCharCount, 
                                  -		lastTextChangeNewCharCount);
                                  -		
                                  -	if (lastTextChangeReplaceLineCount > 0) {
                                  -		// Only check for unused space when lines are deleted.
                                  -		// Fixes 1GFL4LY
                                  -		// Scroll up so that empty lines below last text line are used.
                                  -		// Fixes 1GEYJM0
                                  -		claimBottomFreeSpace();
                                  -	}
                                  -	if (lastTextChangeReplaceCharCount > 0) {
                                  -		// fixes bug 8273
                                  -		claimRightFreeSpace();
                                  -	}
                                  -	// do direct drawing if the text change is confined to a single line.
                                  -	// optimization and fixes bug 13999. see also handleTextChanging.
                                  -	if (lastTextChangeNewLineCount == 0 && lastTextChangeReplaceLineCount == 0) {
                                  -		int startLine = content.getLineAtOffset(lastTextChangeStart);
                                  -		int startY = startLine * lineHeight - verticalScrollOffset + topMargin;
                                  -
                                  -		if (DOUBLE_BUFFER) {
                                  -			GC gc = getGC();
                                  -			Caret caret = getCaret();
                                  -			boolean caretVisible = false;
                                  -			
                                  -			if (caret != null) {
                                  -				caretVisible = caret.getVisible();
                                  -				caret.setVisible(false);
                                  -			}
                                  -			performPaint(gc, startLine, startY, lineHeight);
                                  -			if (caret != null) {
                                  -				caret.setVisible(caretVisible);
                                  -			}
                                  -			gc.dispose();
                                  -		} else {
                                  -			redraw(0, startY, getClientArea().width, lineHeight, false);
                                  -			update();
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Updates the screen to reflect a pending content change.
                                  - * <p>
                                  - *
                                  - * @param event.start the start offset of the change
                                  - * @param event.newText text that is going to be inserted or empty String 
                                  - *	if no text will be inserted
                                  - * @param event.replaceCharCount length of text that is going to be replaced
                                  - * @param event.newCharCount length of text that is going to be inserted
                                  - * @param event.replaceLineCount number of lines that are going to be replaced
                                  - * @param event.newLineCount number of new lines that are going to be inserted
                                  - */
                                  -void handleTextChanging(TextChangingEvent event) {
                                  -	int firstLine;	
                                  -	int textChangeY;
                                  -	boolean isMultiLineChange = event.replaceLineCount > 0 || event.newLineCount > 0;
                                  -			
                                  -	if (event.replaceCharCount < 0) {
                                  -		event.start += event.replaceCharCount;
                                  -		event.replaceCharCount *= -1;
                                  -	}
                                  -	lastTextChangeStart = event.start;
                                  -	lastTextChangeNewLineCount = event.newLineCount;
                                  -	lastTextChangeNewCharCount = event.newCharCount;
                                  -	lastTextChangeReplaceLineCount = event.replaceLineCount;
                                  -	lastTextChangeReplaceCharCount = event.replaceCharCount;
                                  -	firstLine = content.getLineAtOffset(event.start);
                                  -	textChangeY = firstLine * lineHeight - verticalScrollOffset + topMargin;
                                  -	if (isMultiLineChange) {
                                  -		redrawMultiLineChange(textChangeY, event.newLineCount, event.replaceLineCount);
                                  -	}
                                  -	// notify default line styler about text change
                                  -	if (defaultLineStyler != null) {
                                  -		defaultLineStyler.textChanging(event);
                                  -	}
                                  -	
                                  -	// Update the caret offset if it is greater than the length of the content.
                                  -	// This is necessary since style range API may be called between the
                                  -	// handleTextChanging and handleTextChanged events and this API sets the
                                  -	// caretOffset.
                                  -	int newEndOfText = content.getCharCount() - event.replaceCharCount + event.newCharCount;
                                  -	if (caretOffset > newEndOfText) caretOffset = newEndOfText;
                                  -}
                                  -/**
                                  - * Called when the widget content is set programatically, overwriting 
                                  - * the old content. Resets the caret position, selection and scroll offsets. 
                                  - * Recalculates the content width and scroll bars. Redraws the widget.
                                  - * <p>
                                  - *
                                  - * @param event text change event. 
                                  - */
                                  -void handleTextSet(TextChangedEvent event) {
                                  -	reset();
                                  -}
                                  -/**
                                  - * Called when a traversal key is pressed.
                                  - * Allow tab next traversal to occur when the widget is in single 
                                  - * line mode or in multi line and non-editable mode . 
                                  - * When in editable multi line mode we want to prevent the tab 
                                  - * traversal and receive the tab key event instead.
                                  - * <p>
                                  - *
                                  - * @param event the event
                                  - */
                                  -void handleTraverse(Event event) {
                                  -	switch (event.detail) {
                                  -		case SWT.TRAVERSE_ESCAPE:
                                  -		case SWT.TRAVERSE_PAGE_NEXT:
                                  -		case SWT.TRAVERSE_PAGE_PREVIOUS:
                                  -			event.doit = true;
                                  -			break;
                                  -		case SWT.TRAVERSE_RETURN:
                                  -		case SWT.TRAVERSE_TAB_NEXT:
                                  -		case SWT.TRAVERSE_TAB_PREVIOUS:
                                  -			if ((getStyle() & SWT.SINGLE) != 0) {
                                  -				event.doit = true;
                                  -			} else {
                                  -				if (!editable || (event.stateMask & SWT.MODIFIER_MASK) != 0) {
                                  -					event.doit = true;
                                  -				}
                                  -			}
                                  -			break;
                                  -	}
                                  -}
                                  -/** 
                                  - * Scrolls the widget vertically.
                                  - */
                                  -void handleVerticalScroll(Event event) {
                                  -	setVerticalScrollOffset(getVerticalBar().getSelection(), false);
                                  -}
                                  -/**
                                  - * Add accessibility support for the widget.
                                  - */
                                  -void initializeAccessible() {
                                  -	final Accessible accessible = getAccessible();
                                  -	accessible.addAccessibleListener(new AccessibleAdapter() {
                                  -		public void getHelp(AccessibleEvent e) {
                                  -			e.result = getToolTipText();
                                  -		}
                                  -	});
                                  -	accessible.addAccessibleTextListener(new AccessibleTextAdapter() {
                                  -		public void getCaretOffset(AccessibleTextEvent e) {
                                  -			e.offset = StyledText.this.getCaretOffset();
                                  -		}
                                  -		public void getSelectionRange(AccessibleTextEvent e) {
                                  -			Point selection = StyledText.this.getSelectionRange();
                                  -			e.offset = selection.x;
                                  -			e.length = selection.y;
                                  -		}
                                  -	});
                                  -	accessible.addAccessibleControlListener(new AccessibleControlAdapter() {
                                  -		public void getRole(AccessibleControlEvent e) {
                                  -			e.detail = ACC.ROLE_TEXT;
                                  -		}
                                  -		public void getState(AccessibleControlEvent e) {
                                  -			int state = 0;
                                  -			if (isEnabled()) state |= ACC.STATE_FOCUSABLE;
                                  -			if (isFocusControl()) state |= ACC.STATE_FOCUSED;
                                  -			if (!isVisible()) state |= ACC.STATE_INVISIBLE;
                                  -			if (!getEditable()) state |= ACC.STATE_READONLY;
                                  -			e.detail = state;
                                  -		}
                                  -		public void getValue(AccessibleControlEvent e) {
                                  -			e.result = StyledText.this.getText();
                                  -		}
                                  -	});		
                                  -	addListener(SWT.FocusIn, new Listener() {
                                  -		public void handleEvent(Event event) {
                                  -			accessible.setFocus(ACC.CHILDID_SELF);
                                  -		}
                                  -	});
                                  -}
                                  -/** 
                                  - * Initializes the fonts used to render font styles.
                                  - * Presently only regular and bold fonts are supported.
                                  - */
                                  -void initializeRenderer() {
                                  -	if (renderer != null) {
                                  -		renderer.dispose();
                                  -	}
                                  -	renderer = new DisplayRenderer(getDisplay(), getFont(), this, tabLength);
                                  -	lineHeight = renderer.getLineHeight();
                                  -	if (wordWrap) {
                                  -		content = new WrappedContent(renderer, logicalContent);
                                  -	}
                                  -}
                                  -/**
                                  - * Executes the action.
                                  - * <p>
                                  - *
                                  - * @param action one of the actions defined in ST.java
                                  - */
                                  -public void invokeAction(int action) {
                                  -	int oldColumnX, oldHScrollOffset, hScrollChange;
                                  -	int caretLine;
                                  -	
                                  -	checkWidget();
                                  -	updateCaretDirection = true;
                                  -	switch (action) {
                                  -		// Navigation
                                  -		case ST.LINE_UP:
                                  -			caretLine = doLineUp();
                                  -			oldColumnX = columnX;
                                  -			oldHScrollOffset = horizontalScrollOffset;
                                  -			// explicitly go to the calculated caret line. may be different 
                                  -			// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -			showCaret(caretLine);
                                  -			// restore the original horizontal caret position
                                  -			hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -			columnX = oldColumnX + hScrollChange;
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_DOWN:
                                  -			caretLine = doLineDown();
                                  -			oldColumnX = columnX;
                                  -			oldHScrollOffset = horizontalScrollOffset;
                                  -			// explicitly go to the calculated caret line. may be different 
                                  -			// from content.getLineAtOffset(caretOffset) when in word wrap mode
                                  -			showCaret(caretLine);
                                  -			// restore the original horizontal caret position
                                  -			hScrollChange = oldHScrollOffset - horizontalScrollOffset;
                                  -			columnX = oldColumnX + hScrollChange;
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_START:
                                  -			doLineStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.LINE_END:
                                  -			doLineEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.COLUMN_PREVIOUS:
                                  -			doCursorPrevious();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.COLUMN_NEXT:
                                  -			doCursorNext();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.PAGE_UP:
                                  -			doPageUp(false, getLineCountWhole());
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.PAGE_DOWN:
                                  -			doPageDown(false, getLineCountWhole());
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WORD_PREVIOUS:
                                  -			doWordPrevious();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WORD_NEXT:
                                  -			doWordNext();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.TEXT_START:
                                  -			doContentStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.TEXT_END:
                                  -			doContentEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WINDOW_START:
                                  -			doPageStart();
                                  -			clearSelection(true);
                                  -			break;
                                  -		case ST.WINDOW_END:
                                  -			doPageEnd();
                                  -			clearSelection(true);
                                  -			break;
                                  -		// Selection	
                                  -		case ST.SELECT_LINE_UP:
                                  -			doSelectionLineUp();
                                  -			break;
                                  -		case ST.SELECT_ALL:
                                  -			selectAll();
                                  -			break;
                                  -		case ST.SELECT_LINE_DOWN:
                                  -			doSelectionLineDown();
                                  -			break;
                                  -		case ST.SELECT_LINE_START:
                                  -			doLineStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_LINE_END:
                                  -			doLineEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_COLUMN_PREVIOUS:
                                  -			doSelectionCursorPrevious();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_COLUMN_NEXT:
                                  -			doSelectionCursorNext();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_PAGE_UP:
                                  -			doSelectionPageUp(getLineCountWhole());
                                  -			break;
                                  -		case ST.SELECT_PAGE_DOWN:
                                  -			doSelectionPageDown(getLineCountWhole());
                                  -			break;
                                  -		case ST.SELECT_WORD_PREVIOUS:
                                  -			doSelectionWordPrevious();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_WORD_NEXT:
                                  -			doSelectionWordNext();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_TEXT_START:
                                  -			doContentStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_TEXT_END:
                                  -			doContentEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		case ST.SELECT_WINDOW_START:
                                  -			doPageStart();
                                  -			doSelection(ST.COLUMN_PREVIOUS);
                                  -			break;
                                  -		case ST.SELECT_WINDOW_END:
                                  -			doPageEnd();
                                  -			doSelection(ST.COLUMN_NEXT);
                                  -			break;
                                  -		// Modification			
                                  -		case ST.CUT:
                                  -			cut();
                                  -			break;
                                  -		case ST.COPY:
                                  -			copy();
                                  -			break;
                                  -		case ST.PASTE:
                                  -			paste();
                                  -			break;
                                  -		case ST.DELETE_PREVIOUS:
                                  -			doBackspace();
                                  -			break;
                                  -		case ST.DELETE_NEXT:
                                  -			doDelete();
                                  -			break;
                                  -		case ST.DELETE_WORD_PREVIOUS:
                                  -			doDeleteWordPrevious();
                                  -			break;
                                  -		case ST.DELETE_WORD_NEXT:
                                  -			doDeleteWordNext();
                                  -			break;
                                  -		// Miscellaneous
                                  -		case ST.TOGGLE_OVERWRITE:
                                  -			overwrite = !overwrite;		// toggle insert/overwrite mode
                                  -			break;
                                  -	}
                                  -}
                                  -/**
                                  - * Temporary until SWT provides this
                                  - */
                                  -boolean isBidi() {
                                  -	return IS_GTK || BidiUtil.isBidiPlatform() || isMirrored;
                                  -}
                                  -/**
                                  - * Returns whether the given offset is inside a multi byte line delimiter.
                                  - * Example: 
                                  - * "Line1\r\n" isLineDelimiter(5) == false but isLineDelimiter(6) == true
                                  - * 
                                  - * @return true if the given offset is inside a multi byte line delimiter.
                                  - * false if the given offset is before or after a line delimiter.
                                  - */
                                  -boolean isLineDelimiter(int offset) {
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);	
                                  -	int offsetInLine = offset - lineOffset;
                                  -	// offsetInLine will be greater than line length if the line 
                                  -	// delimiter is longer than one character and the offset is set
                                  -	// in between parts of the line delimiter.
                                  -	return offsetInLine > content.getLine(line).length();
                                  -}
                                  -/**
                                  - * Returns whether the widget is mirrored (right oriented/right to left 
                                  - * writing order). 
                                  - * 
                                  - * @return isMirrored true=the widget is right oriented, false=the widget 
                                  - * 	is left oriented
                                  - */
                                  -boolean isMirrored() {
                                  -	return isMirrored;
                                  -}
                                  -/**
                                  - * Returns whether or not the given lines are visible.
                                  - * <p>
                                  - *
                                  - * @return true if any of the lines is visible
                                  - * false if none of the lines is visible
                                  - */
                                  -boolean isAreaVisible(int firstLine, int lastLine) {
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	int partialTopIndex = verticalScrollOffset / lineHeight;
                                  -	boolean notVisible = firstLine > partialBottomIndex || lastLine < partialTopIndex;
                                  -	return !notVisible;
                                  -}
                                  -/**
                                  - * Returns whether the widget can have only one line.
                                  - * <p>
                                  - *
                                  - * @return true if widget can have only one line, false if widget can have 
                                  - * 	multiple lines
                                  - */
                                  -boolean isSingleLine() {
                                  -	return (getStyle() & SWT.SINGLE) != 0;
                                  -}
                                  -/**
                                  - * Sends the specified verify event, replace/insert text as defined by 
                                  - * the event and send a modify event.
                                  - * <p>
                                  - *
                                  - * @param event	the text change event. 
                                  - *	<ul>
                                  - *	<li>event.start - the replace start offset</li>
                                  - * 	<li>event.end - the replace end offset</li>
                                  - * 	<li>event.text - the new text</li>
                                  - *	</ul>
                                  - * @param updateCaret whether or not he caret should be set behind
                                  - *	the new text
                                  - */
                                  -void modifyContent(Event event, boolean updateCaret) {
                                  -	event.doit = true;
                                  -	notifyListeners(SWT.Verify, event);
                                  -	if (event.doit) {
                                  -		StyledTextEvent styledTextEvent = null;
                                  -		int replacedLength = event.end - event.start;
                                  -		if (isListening(ExtendedModify)) {
                                  -			styledTextEvent = new StyledTextEvent(logicalContent);
                                  -			styledTextEvent.start = event.start;
                                  -			styledTextEvent.end = event.start + event.text.length();
                                  -			styledTextEvent.text = content.getTextRange(event.start, replacedLength);
                                  -		}
                                  -		if (updateCaret) {
                                  -			//Fix advancing flag for delete/backspace key on direction boundary
                                  -			if (event.text.length() == 0) {
                                  -				int lineIndex = content.getLineAtOffset(event.start);
                                  -				int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -				String lineText = content.getLine(lineIndex);
                                  -				TextLayout layout = renderer.getTextLayout(lineText, lineOffset);
                                  -				int levelStart = layout.getLevel(event.start - lineOffset);
                                  -				int lineIndexEnd = content.getLineAtOffset(event.end);
                                  -				if (lineIndex != lineIndexEnd) {
                                  -					renderer.disposeTextLayout(layout);
                                  -					lineOffset = content.getOffsetAtLine(lineIndexEnd);
                                  -					lineText = content.getLine(lineIndexEnd);
                                  -					layout = renderer.getTextLayout(lineText, lineOffset);
                                  -				}
                                  -				int levelEnd = layout.getLevel(event.end - lineOffset);
                                  -				renderer.disposeTextLayout(layout);
                                  -				advancing = levelStart != levelEnd;
                                  -			}
                                  -		}
                                  -		content.replaceTextRange(event.start, replacedLength, event.text);
                                  -		// set the caret position prior to sending the modify event.
                                  -		// fixes 1GBB8NJ
                                  -		if (updateCaret) {
                                  -			// always update the caret location. fixes 1G8FODP
                                  -			internalSetSelection(event.start + event.text.length(), 0, true);
                                  -			showCaret();
                                  -		}
                                  -		sendModifyEvent(event);
                                  -		if (isListening(ExtendedModify)) {
                                  -			notifyListeners(ExtendedModify, styledTextEvent);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Replaces the selection with the text on the <code>DND.CLIPBOARD</code>  
                                  - * clipboard  or, if there is no selection,  inserts the text at the current 
                                  - * caret offset.   If the widget has the SWT.SINGLE style and the 
                                  - * clipboard text contains more than one line, only the first line without
                                  - * line delimiters is  inserted in the widget.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void paste(){
                                  -	checkWidget();	
                                  -	String text;
                                  -	text = (String) getClipboardContent(DND.CLIPBOARD);
                                  -	if (text != null && text.length() > 0) {
                                  -		Event event = new Event();
                                  -		event.start = selection.x;
                                  -		event.end = selection.y;
                                  -		event.text = getModelDelimitedText(text);
                                  -		sendKeyEvent(event);
                                  -	}
                                  -}
                                  -/**
                                  - * Render the specified area.  Broken out as its own method to support
                                  - * direct drawing.
                                  - * <p>
                                  - *
                                  - * @param gc GC to render on 
                                  - * @param startLine first line to render
                                  - * @param startY y pixel location to start rendering at
                                  - * @param renderHeight renderHeight widget area that needs to be filled with lines
                                  - */
                                  -void performPaint(GC gc,int startLine,int startY, int renderHeight)	{
                                  -	Rectangle clientArea = getClientArea();
                                  -	Color background = getBackground();
                                  -	
                                  -	// Check if there is work to do. We never want to try and create 
                                  -	// an Image with 0 width or 0 height.
                                  -	if (clientArea.width == 0) {
                                  -		return;
                                  -	}
                                  -	if (renderHeight > 0) {
                                  -		// renderHeight will be negative when only top margin needs redrawing
                                  -		Color foreground = getForeground();
                                  -		int lineCount = content.getLineCount();
                                  -		int gcStyle = isMirrored() ? SWT.RIGHT_TO_LEFT : SWT.LEFT_TO_RIGHT;
                                  -		if (isSingleLine()) {
                                  -			lineCount = 1;
                                  -		}
                                  -		int paintY, paintHeight;
                                  -		Image lineBuffer;
                                  -		GC lineGC;
                                  -		boolean doubleBuffer = DOUBLE_BUFFER && lastPaintTopIndex == topIndex;
                                  -		lastPaintTopIndex = topIndex;
                                  -		if (doubleBuffer) {
                                  -			paintY = 0;
                                  -			paintHeight = renderHeight;
                                  -			lineBuffer = new Image(getDisplay(), clientArea.width, renderHeight);
                                  -			lineGC = new GC(lineBuffer, gcStyle);
                                  -			lineGC.setFont(getFont());
                                  -			lineGC.setForeground(foreground);
                                  -			lineGC.setBackground(background);
                                  -		} else {
                                  -			paintY = startY;
                                  -			paintHeight = startY + renderHeight;
                                  -			lineBuffer = null;
                                  -			lineGC = gc;
                                  -		}		
                                  -		for (int i = startLine; paintY < paintHeight && i < lineCount; i++, paintY += lineHeight) {
                                  -			String line = content.getLine(i);
                                  -			renderer.drawLine(line, i, paintY, lineGC, background, foreground, true);
                                  -		}
                                  -		if (paintY < paintHeight) {
                                  -			lineGC.setBackground(background);
                                  -			lineGC.fillRectangle(0, paintY, clientArea.width, paintHeight - paintY);
                                  -		}
                                  -		if (doubleBuffer) {
                                  -			clearMargin(lineGC, background, clientArea, startY);
                                  -			gc.drawImage(lineBuffer, 0, startY);
                                  -			lineGC.dispose();
                                  -			lineBuffer.dispose();
                                  -		}
                                  -	}
                                  -	clearMargin(gc, background, clientArea, 0);
                                  -}
                                  -/** 
                                  - * Prints the widget's text to the default printer.
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void print() {
                                  -	checkWidget();
                                  -	Printer printer = new Printer();
                                  -	StyledTextPrintOptions options = new StyledTextPrintOptions();
                                  -	
                                  -	options.printTextForeground = true;
                                  -	options.printTextBackground = true;
                                  -	options.printTextFontStyle = true;
                                  -	options.printLineBackground = true;	
                                  -	new Printing(this, printer, options).run();
                                  -	printer.dispose();
                                  -}
                                  -/** 
                                  - * Returns a runnable that will print the widget's text
                                  - * to the specified printer.
                                  - * <p>
                                  - * The runnable may be run in a non-UI thread.
                                  - * </p>
                                  - * 
                                  - * @param printer the printer to print to
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when printer is null</li>
                                  - * </ul>
                                  - */
                                  -public Runnable print(Printer printer) {
                                  -	checkWidget();	
                                  -	StyledTextPrintOptions options = new StyledTextPrintOptions();
                                  -	options.printTextForeground = true;
                                  -	options.printTextBackground = true;
                                  -	options.printTextFontStyle = true;
                                  -	options.printLineBackground = true;
                                  -	if (printer == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	return print(printer, options);
                                  -}
                                  -/** 
                                  - * Returns a runnable that will print the widget's text
                                  - * to the specified printer.
                                  - * <p>
                                  - * The runnable may be run in a non-UI thread.
                                  - * </p>
                                  - * 
                                  - * @param printer the printer to print to
                                  - * @param options print options to use during printing
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when printer or options is null</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public Runnable print(Printer printer, StyledTextPrintOptions options) {
                                  -	checkWidget();
                                  -	if (printer == null || options == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	return new Printing(this, printer, options);
                                  -}
                                  -/**
                                  - * Causes the entire bounds of the receiver to be marked
                                  - * as needing to be redrawn. The next time a paint request
                                  - * is processed, the control will be completely painted.
                                  - * <p>
                                  - * Recalculates the content width for all lines in the bounds.
                                  - * When a <code>LineStyleListener</code> is used a redraw call 
                                  - * is the only notification to the widget that styles have changed 
                                  - * and that the content width may have changed.
                                  - * </p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - *
                                  - * @see Control#update
                                  - */
                                  -public void redraw() {
                                  -	int itemCount;
                                  -	
                                  -	super.redraw();
                                  -	itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -	lineCache.redrawReset(topIndex, itemCount, true);
                                  -	lineCache.calculate(topIndex, itemCount);
                                  -	setHorizontalScrollBar();
                                  -}
                                  -/**
                                  - * Causes the rectangular area of the receiver specified by
                                  - * the arguments to be marked as needing to be redrawn. 
                                  - * The next time a paint request is processed, that area of
                                  - * the receiver will be painted. If the <code>all</code> flag
                                  - * is <code>true</code>, any children of the receiver which
                                  - * intersect with the specified area will also paint their
                                  - * intersecting areas. If the <code>all</code> flag is 
                                  - * <code>false</code>, the children will not be painted.
                                  - * <p>
                                  - * Marks the content width of all lines in the specified rectangle
                                  - * as unknown. Recalculates the content width of all visible lines.
                                  - * When a <code>LineStyleListener</code> is used a redraw call 
                                  - * is the only notification to the widget that styles have changed 
                                  - * and that the content width may have changed.
                                  - * </p>
                                  - *
                                  - * @param x the x coordinate of the area to draw
                                  - * @param y the y coordinate of the area to draw
                                  - * @param width the width of the area to draw
                                  - * @param height the height of the area to draw
                                  - * @param all <code>true</code> if children should redraw, and <code>false</code> otherwise
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - *
                                  - * @see Control#update
                                  - */
                                  -public void redraw(int x, int y, int width, int height, boolean all) {
                                  -	super.redraw(x, y, width, height, all);
                                  -	if (height > 0) {
                                  -		int lineCount = content.getLineCount();
                                  -		int startLine = (getTopPixel() + y) / lineHeight;
                                  -		int endLine = startLine + Compatibility.ceil(height, lineHeight);
                                  -		int itemCount;
                                  -		
                                  -		// reset all lines in the redraw rectangle
                                  -		startLine = Math.min(startLine, lineCount);
                                  -		itemCount = Math.min(endLine, lineCount) - startLine;
                                  -		lineCache.reset(startLine, itemCount, true);
                                  -		// only calculate the visible lines
                                  -		itemCount = getPartialBottomIndex() - topIndex + 1;
                                  -		lineCache.calculate(topIndex, itemCount);
                                  -		setHorizontalScrollBar();
                                  -	}
                                  -}
                                  -/** 
                                  - * Redraws a text range in the specified lines
                                  - * <p>
                                  - *
                                  - * @param firstLine first line to redraw at the specified offset
                                  - * @param offsetInFirstLine offset in firstLine to start redrawing
                                  - * @param lastLine last line to redraw
                                  - * @param endOffset offset in the last where redrawing should stop
                                  - * @param clearBackground true=clear the background by invalidating
                                  - *  the requested redraw range. If the redraw range includes the 
                                  - * 	last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - *  false=draw the foreground directly without invalidating the 
                                  - * 	redraw range.
                                  - */
                                  -void redrawLines(int firstLine, int offsetInFirstLine, int lastLine, int endOffset, boolean clearBackground) {
                                  -	String line = content.getLine(firstLine);
                                  -	int lineCount = lastLine - firstLine + 1;
                                  -	int redrawY, redrawWidth;
                                  -	int lineOffset = content.getOffsetAtLine(firstLine);
                                  -	boolean fullLineRedraw;
                                  -	Rectangle clientArea = getClientArea();
                                  -	
                                  -	fullLineRedraw = ((getStyle() & SWT.FULL_SELECTION) != 0 && lastLine > firstLine);
                                  -	// if redraw range includes last character on the first line, 
                                  -	// clear background to right widget border. fixes bug 19595.
                                  -	if (clearBackground && endOffset - lineOffset >= line.length()) {
                                  -		fullLineRedraw = true;
                                  -	}	
                                  -	TextLayout layout = renderer.getTextLayout(line, lineOffset);
                                  -	Rectangle rect = layout.getBounds(offsetInFirstLine, Math.min(endOffset, line.length()) - 1);
                                  -	renderer.disposeTextLayout(layout);
                                  -	rect.x -= horizontalScrollOffset;
                                  -	rect.intersect(clientArea);
                                  -	redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -	redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width;
                                  -	draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground);
                                  -	
                                  -	// redraw last line if more than one line needs redrawing 
                                  -	if (lineCount > 1) {
                                  -		lineOffset = content.getOffsetAtLine(lastLine);
                                  -		int offsetInLastLine = endOffset - lineOffset;	
                                  -		// no redraw necessary if redraw offset is 0
                                  -		if (offsetInLastLine > 0) {
                                  -			line = content.getLine(lastLine);
                                  -			// if redraw range includes last character on the last line, 
                                  -			// clear background to right widget border. fixes bug 19595.
                                  -			if (clearBackground && offsetInLastLine >= line.length()) {
                                  -				fullLineRedraw = true;
                                  -			}
                                  -			line = content.getLine(lastLine);
                                  -			layout = renderer.getTextLayout(line, lineOffset);
                                  -			rect = layout.getBounds(0, offsetInLastLine - 1);
                                  -			renderer.disposeTextLayout(layout);
                                  -			rect.x -= horizontalScrollOffset;
                                  -			rect.intersect(clientArea);
                                  -			redrawY = lastLine * lineHeight - verticalScrollOffset;
                                  -			redrawWidth = fullLineRedraw ? clientArea.width - leftMargin - rightMargin : rect.width;
                                  -			draw(rect.x, redrawY, redrawWidth, lineHeight, clearBackground);
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Fixes the widget to display a text change.
                                  - * Bit blitting and redrawing is done as necessary.
                                  - * <p>
                                  - *
                                  - * @param y y location of the text change
                                  - * @param newLineCount number of new lines.
                                  - * @param replacedLineCount number of replaced lines.
                                  - */
                                  -void redrawMultiLineChange(int y, int newLineCount, int replacedLineCount) {
                                  -	Rectangle clientArea = getClientArea();
                                  -	int lineCount = newLineCount - replacedLineCount;
                                  -	int sourceY;
                                  -	int destinationY;
                                  -		
                                  -	if (lineCount > 0) {
                                  -		sourceY = Math.max(0, y + lineHeight);
                                  -		destinationY = sourceY + lineCount * lineHeight;
                                  -	} 
                                  -	else {
                                  -		destinationY = Math.max(0, y + lineHeight);
                                  -		sourceY = destinationY - lineCount * lineHeight;
                                  -	}	
                                  -	scroll(
                                  -		0, destinationY,			// destination x, y
                                  -		0, sourceY,					// source x, y
                                  -		clientArea.width, clientArea.height, true);
                                  -	// Always redrawing causes the bottom line to flash when a line is
                                  -	// deleted. This is because SWT merges the paint area of the scroll
                                  -	// with the paint area of the redraw call below.
                                  -	// To prevent this we could call update after the scroll. However,
                                  -	// adding update can cause even more flash if the client does other 
                                  -	// redraw/update calls (ie. for syntax highlighting).
                                  -	// We could also redraw only when a line has been added or when 
                                  -	// contents has been added to a line. This would require getting 
                                  -	// line index info from the content and is not worth the trouble
                                  -	// (the flash is only on the bottom line and minor).
                                  -	// Specifying the NO_MERGE_PAINTS style bit prevents the merged 
                                  -	// redraw but could cause flash/slowness elsewhere.
                                  -	if (y + lineHeight > 0 && y <= clientArea.height) {
                                  -		// redraw first changed line in case a line was split/joined
                                  -		super.redraw(0, y, clientArea.width, lineHeight, true);
                                  -	}
                                  -	if (newLineCount > 0) {
                                  -		int redrawStartY = y + lineHeight;
                                  -		int redrawHeight = newLineCount * lineHeight;
                                  -		
                                  -		if (redrawStartY + redrawHeight > 0 && redrawStartY <= clientArea.height) {
                                  -			// display new text
                                  -			super.redraw(0, redrawStartY, clientArea.width, redrawHeight, true);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Redraws the specified text range.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first character to redraw
                                  - * @param length number of characters to redraw
                                  - * @param clearBackground true if the background should be cleared as
                                  - *  part of the redraw operation.  If true, the entire redraw range will
                                  - *  be cleared before anything is redrawn.  If the redraw range includes
                                  - *	the last character of a line (i.e., the entire line is redrawn) the 
                                  - * 	line is cleared all the way to the right border of the widget.
                                  - * 	The redraw operation will be faster and smoother if clearBackground 
                                  - * 	is set to false.  Whether or not the flag can be set to false depends 
                                  - * 	on the type of change that has taken place.  If font styles or 
                                  - * 	background colors for the redraw range have changed, clearBackground 
                                  - * 	should be set to true.  If only foreground colors have changed for 
                                  - * 	the redraw range, clearBackground can be set to false. 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> 
                                  - * </ul>
                                  - */
                                  -public void redrawRange(int start, int length, boolean clearBackground) {
                                  -	checkWidget();
                                  -	int end = start + length;
                                  -	int contentLength = content.getCharCount();
                                  -	int firstLine;
                                  -	int lastLine;
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	firstLine = content.getLineAtOffset(start);
                                  -	lastLine = content.getLineAtOffset(end);
                                  -	// reset all affected lines but let the redraw recalculate only 
                                  -	// those that are visible.
                                  -	lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -	internalRedrawRange(start, length, clearBackground);
                                  -}
                                  -/**
                                  - * Removes the specified bidirectional segment listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void removeBidiSegmentListener(BidiSegmentListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(LineGetSegments, listener);	
                                  -}
                                  -/**
                                  - * Removes the specified extended modify listener.
                                  - * <p>
                                  - *
                                  - * @param extendedModifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeExtendedModifyListener(ExtendedModifyListener extendedModifyListener) {
                                  -	checkWidget();
                                  -	if (extendedModifyListener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(ExtendedModify, extendedModifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified line background listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeLineBackgroundListener(LineBackgroundListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(LineGetBackground, listener);	
                                  -	// use default line styler if last user line styler was removed.
                                  -	if (!isListening(LineGetBackground) && userLineBackground) {
                                  -		StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -		addListener(LineGetBackground, typedListener);	
                                  -		userLineBackground = false;
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the specified line style listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeLineStyleListener(LineStyleListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(LineGetStyle, listener);	
                                  -	// use default line styler if last user line styler was removed. Fixes 1G7B1X2
                                  -	if (!isListening(LineGetStyle) && userLineStyle) {
                                  -		StyledTextListener typedListener = new StyledTextListener(defaultLineStyler);
                                  -		addListener(LineGetStyle, typedListener);	
                                  -		userLineStyle = false;
                                  -	}
                                  -}
                                  -/**
                                  - * Removes the specified modify listener.
                                  - * <p>
                                  - *
                                  - * @param modifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeModifyListener(ModifyListener modifyListener) {
                                  -	checkWidget();
                                  -	if (modifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Modify, modifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified selection listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeSelectionListener(SelectionListener listener) {
                                  -	checkWidget();
                                  -	if (listener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Selection, listener);	
                                  -}
                                  -/**
                                  - * Removes the specified verify listener.
                                  - * <p>
                                  - *
                                  - * @param verifyListener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeVerifyListener(VerifyListener verifyListener) {
                                  -	checkWidget();
                                  -	if (verifyListener == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	removeListener(SWT.Verify, verifyListener);	
                                  -}
                                  -/**
                                  - * Removes the specified key verify listener.
                                  - * <p>
                                  - *
                                  - * @param listener the listener
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void removeVerifyKeyListener(VerifyKeyListener listener) {
                                  -	if (listener == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	removeListener(VerifyKey, listener);	
                                  -}
                                  -/** 
                                  - * Replaces the styles in the given range with new styles.  This method
                                  - * effectively deletes the styles in the given range and then adds the
                                  - * the new styles. 
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param start offset of first character where styles will be deleted
                                  - * @param length length of the range to delete styles in
                                  - * @param ranges StyleRange objects containing the new style information.
                                  - * The ranges should not overlap and should be within the specified start 
                                  - * and length. The style rendering is undefined if the ranges do overlap
                                  - * or are ill-defined. Must not be null.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> 
                                  - *   <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void replaceStyleRanges(int start, int length, StyleRange[] ranges) {
                                  -	checkWidget();
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	if (ranges == null) {
                                  - 		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  - 	}
                                  - 	if (ranges.length == 0) {
                                  - 		setStyleRange(new StyleRange(start, length, null, null));
                                  - 		return;
                                  - 	}
                                  -	int end = start + length;
                                  -	if (start > end || start < 0 || end > getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	int firstLine = content.getLineAtOffset(start);
                                  -	int lastLine = content.getLineAtOffset(end);
                                  -
                                  -	defaultLineStyler.replaceStyleRanges(start, length, ranges);
                                  -	lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -
                                  -	// if the area is not visible, there is no need to redraw
                                  -	if (isAreaVisible(firstLine, lastLine)) {
                                  -		int redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -		int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset;		
                                  -		draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true);
                                  -	}
                                  -
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/**
                                  - * Replaces the given text range with new text.
                                  - * If the widget has the SWT.SINGLE style and "text" contains more than 
                                  - * one line, only the first line is rendered but the text is stored 
                                  - * unchanged. A subsequent call to getText will return the same text 
                                  - * that was set. Note that only a single line of text should be set when 
                                  - * the SWT.SINGLE style is used.
                                  - * <p>
                                  - * <b>NOTE:</b> During the replace operation the current selection is
                                  - * changed as follows:
                                  - * <ul>	
                                  - * <li>selection before replaced text: selection unchanged
                                  - * <li>selection after replaced text: adjust the selection so that same text 
                                  - * remains selected
                                  - * <li>selection intersects replaced text: selection is cleared and caret
                                  - * is placed after inserted text
                                  - * </ul>
                                  - * </p>
                                  - *
                                  - * @param start offset of first character to replace
                                  - * @param length number of characters to replace. Use 0 to insert text
                                  - * @param text new text. May be empty to delete text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> 
                                  - *   <li>ERROR_INVALID_ARGUMENT when either start or end is inside a multi byte line delimiter. 
                                  - * 		Splitting a line delimiter for example by inserting text in between the CR and LF and deleting part of a line delimiter is not supported</li>  
                                  - *   <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void replaceTextRange(int start, int length, String text) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	int end = start + length;
                                  -	Event event = new Event();
                                  -	
                                  -	if (start > end || start < 0 || end > contentLength) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	}	
                                  -	if (text == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	event.start = start;
                                  -	event.end = end;
                                  -	event.text = text;
                                  -	modifyContent(event, false);
                                  -}
                                  -/**
                                  - * Resets the caret position, selection and scroll offsets. Recalculate
                                  - * the content width and scroll bars. Redraw the widget.
                                  - */
                                  -void reset() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	caretOffset = 0;
                                  -	topIndex = 0;
                                  -	topOffset = 0;
                                  -	verticalScrollOffset = 0;
                                  -	horizontalScrollOffset = 0;	
                                  -	resetSelection();
                                  -	// discard any styles that may have been set by creating a 
                                  -	// new default line styler
                                  -	if (defaultLineStyler != null) {
                                  -		removeLineBackgroundListener(defaultLineStyler);
                                  -		removeLineStyleListener(defaultLineStyler);
                                  -		installDefaultLineStyler();
                                  -	}	
                                  -	calculateContentWidth();
                                  -	if (verticalBar != null) {
                                  -		verticalBar.setSelection(0);
                                  -	}
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setSelection(0);	
                                  -	}
                                  -	setScrollBars();
                                  -	setCaretLocation();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * Resets the selection.
                                  - */
                                  -void resetSelection() {
                                  -	selection.x = selection.y = caretOffset;
                                  -	selectionAnchor = -1;
                                  -}
                                  -/**
                                  - * Scrolls the widget horizontally.
                                  - * <p>
                                  - *
                                  - * @param pixels number of pixels to scroll, > 0 = scroll left,
                                  - * 	< 0 scroll right
                                  - */
                                  -void scrollHorizontal(int pixels) {
                                  -	Rectangle clientArea;
                                  -	
                                  -	if (pixels == 0) {
                                  -		return;
                                  -	}
                                  -	clientArea = getClientArea();
                                  -	if (pixels > 0) {
                                  -		int sourceX = leftMargin + pixels;
                                  -		int scrollWidth = clientArea.width - sourceX - rightMargin;
                                  -		int scrollHeight = clientArea.height - topMargin - bottomMargin;
                                  -		scroll(
                                  -			leftMargin, topMargin, 						// destination x, y
                                  -			sourceX, topMargin,							// source x, y
                                  -			scrollWidth, scrollHeight, true);
                                  -		if (sourceX > scrollWidth) {
                                  -			// redraw from end of scrolled area to beginning of scroll 
                                  -			// invalidated area
                                  -			super.redraw(
                                  -				leftMargin + scrollWidth, topMargin, 
                                  -				pixels - scrollWidth, scrollHeight, true);
                                  -		}
                                  -	}
                                  -	else {
                                  -		int destinationX = leftMargin - pixels;
                                  -		int scrollWidth = clientArea.width - destinationX - rightMargin;
                                  -		int scrollHeight = clientArea.height - topMargin - bottomMargin;
                                  -		scroll(
                                  -			destinationX, topMargin,					// destination x, y
                                  -			leftMargin, topMargin,						// source x, y
                                  -			scrollWidth, scrollHeight, true);
                                  -		if (destinationX > scrollWidth) {
                                  -			// redraw from end of scroll invalidated area to scroll 
                                  -			// destination
                                  -			super.redraw(
                                  -				leftMargin + scrollWidth, topMargin, 
                                  -				-pixels - scrollWidth, scrollHeight, true);	
                                  -		}
                                  -	}
                                  -	horizontalScrollOffset += pixels;
                                  -	int oldColumnX = columnX - pixels;
                                  -	setCaretLocation();
                                  -	// restore the original horizontal caret index
                                  -	columnX = oldColumnX;
                                  -}
                                  -/**
                                  - * Scrolls the widget horizontally and adjust the horizontal scroll
                                  - * bar to reflect the new horizontal offset..
                                  - * <p>
                                  - *
                                  - * @param pixels number of pixels to scroll, > 0 = scroll left,
                                  - * 	< 0 scroll right
                                  - * @return
                                  - *	true=the widget was scrolled 
                                  - *	false=the widget was not scrolled, the given offset is not valid.
                                  - */
                                  -boolean scrollHorizontalBar(int pixels) {
                                  -	if (pixels == 0) {
                                  -		return false;
                                  -	}
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	if (horizontalBar != null) {
                                  -		horizontalBar.setSelection(horizontalScrollOffset + pixels);
                                  -	}
                                  -	scrollHorizontal(pixels);
                                  -	return true;
                                  -}
                                  -/** 
                                  - * Selects all the text.
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void selectAll() {
                                  -	checkWidget();
                                  -	setSelection(0, Math.max(getCharCount(),0));
                                  -}
                                  -/**
                                  - * Replaces/inserts text as defined by the event.
                                  - * <p>
                                  - *
                                  - * @param event the text change event. 
                                  - *	<ul>
                                  - *	<li>event.start - the replace start offset</li>
                                  - * 	<li>event.end - the replace end offset</li>
                                  - * 	<li>event.text - the new text</li>
                                  - *	</ul>
                                  - */
                                  -void sendKeyEvent(Event event) {
                                  -	if (editable) {
                                  -		modifyContent(event, true);
                                  -	}
                                  -}
                                  -void sendModifyEvent(Event event) {
                                  -	Accessible accessible = getAccessible();
                                  -	if (event.text.length() == 0) {
                                  -		accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start);
                                  -	} else {
                                  -		if (event.start == event.end) {
                                  -			accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length());
                                  -		} else {
                                  -			accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start);
                                  -			accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length());	
                                  -		}
                                  -	}
                                  -	notifyListeners(SWT.Modify, event);
                                  -}
                                  -/**
                                  - * Sends the specified selection event.
                                  - */
                                  -void sendSelectionEvent() {
                                  -	getAccessible().textSelectionChanged();
                                  -	Event event = new Event();
                                  -	event.x = selection.x;
                                  -	event.y = selection.y;
                                  -	notifyListeners(SWT.Selection, event);
                                  -}
                                  -/**
                                  - * Sets whether the widget wraps lines.
                                  - * This overrides the creation style bit SWT.WRAP.
                                  - * <p>
                                  - *
                                  - * @param wrap true=widget wraps lines, false=widget does not wrap lines
                                  - * @since 2.0
                                  - */
                                  -public void setWordWrap(boolean wrap) {
                                  -	checkWidget();
                                  -	if ((getStyle() & SWT.SINGLE) != 0) return;
                                  -	
                                  -	if (wrap != wordWrap) {
                                  -		ScrollBar horizontalBar = getHorizontalBar();
                                  -		
                                  -		wordWrap = wrap;
                                  -		if (wordWrap) {
                                  -			logicalContent = content;
                                  -			content = new WrappedContent(renderer, logicalContent);
                                  -		}
                                  -		else {
                                  -			content = logicalContent;
                                  -		}
                                  -		calculateContentWidth();
                                  -		horizontalScrollOffset = 0;
                                  -		if (horizontalBar != null) {
                                  -			horizontalBar.setVisible(!wordWrap);
                                  -		}
                                  -		setScrollBars();
                                  -		setCaretLocation();
                                  -		super.redraw();		
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the receiver's caret.  Set the caret's height and location.
                                  - * 
                                  - * </p>
                                  - * @param caret the new caret for the receiver
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setCaret(Caret caret) {
                                  -	checkWidget ();
                                  -	super.setCaret(caret);
                                  -	caretDirection = SWT.NULL; 
                                  -	if (caret != null) {
                                  -		setCaretLocation();
                                  -	}
                                  -}
                                  -/**
                                  - * @see org.eclipse.swt.widgets.Control#setBackground
                                  - */
                                  -public void setBackground(Color color) {
                                  -	checkWidget();
                                  -	background = color;
                                  -	super.setBackground(getBackground());
                                  -	redraw();
                                  -}
                                  -/**
                                  - * Sets the BIDI coloring mode.  When true the BIDI text display
                                  - * algorithm is applied to segments of text that are the same
                                  - * color.
                                  - *
                                  - * @param mode the new coloring mode
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * <p>
                                  - * @deprecated use BidiSegmentListener instead.
                                  - * </p>
                                  - */
                                  -public void setBidiColoring(boolean mode) {
                                  -	checkWidget();
                                  -	bidiColoring = mode;
                                  -}
                                  -void setCaretLocation(int newCaretX, int line, int direction) {
                                  -	Caret caret = getCaret();
                                  -	if (caret != null) {
                                  -		boolean updateImage = caret == defaultCaret;
                                  -		int imageDirection = direction;
                                  -		if (isMirrored()) {
                                  -			if (imageDirection == SWT.LEFT) {
                                  -				imageDirection = SWT.RIGHT;
                                  -			} else if (imageDirection == SWT.RIGHT) {
                                  -				imageDirection = SWT.LEFT;
                                  -			}
                                  -		}
                                  -		if (updateImage && imageDirection == SWT.RIGHT) {
                                  -			newCaretX -= (caret.getSize().x - 1);
                                  -		}
                                  -		int newCaretY = line * lineHeight - verticalScrollOffset + topMargin;
                                  -		caret.setLocation(newCaretX, newCaretY);
                                  -		getAccessible().textCaretMoved(getCaretOffset());
                                  -		if (direction != caretDirection) {
                                  -			caretDirection = direction;
                                  -			if (updateImage) {
                                  -				if (imageDirection == SWT.DEFAULT) {
                                  -					defaultCaret.setImage(null);
                                  -				} else if (imageDirection == SWT.LEFT) {
                                  -					defaultCaret.setImage(leftCaretBitmap);
                                  -				} else if (imageDirection == SWT.RIGHT) {
                                  -					defaultCaret.setImage(rightCaretBitmap);
                                  -				}
                                  -			}
                                  -			caret.setSize(caret.getSize().x, lineHeight);
                                  -			if (caretDirection == SWT.LEFT) {
                                  -				BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_NON_BIDI);
                                  -			} else if (caretDirection == SWT.RIGHT) {
                                  -				BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_BIDI);
                                  -			}
                                  -		}
                                  -	}
                                  -	columnX = newCaretX;
                                  -}
                                  -/**
                                  - * Moves the Caret to the current caret offset.
                                  - */
                                  -void setCaretLocation() {
                                  -	int lineIndex = getCaretLine();
                                  -	String line = content.getLine(lineIndex);
                                  -	int lineOffset = content.getOffsetAtLine(lineIndex);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	int newCaretX = getXAtOffset(line, lineIndex, offsetInLine);
                                  -	setCaretLocation(newCaretX, lineIndex, getCaretDirection());
                                  -}
                                  -/**
                                  - * Sets the caret offset.
                                  - *
                                  - * @param offset caret offset, relative to the first character in the text.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setCaretOffset(int offset) {
                                  -	checkWidget();
                                  -	int length = getCharCount();
                                  -				
                                  -	if (length > 0 && offset != caretOffset) {
                                  -		if (offset < 0) {
                                  -			caretOffset = 0;
                                  -		}
                                  -		else
                                  -		if (offset > length) {
                                  -			caretOffset = length;
                                  -		}
                                  -		else {
                                  -			if (isLineDelimiter(offset)) {
                                  -				// offset is inside a multi byte line delimiter. This is an 
                                  -				// illegal operation and an exception is thrown. Fixes 1GDKK3R
                                  -				SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -			}
                                  -			caretOffset = offset;
                                  -		}
                                  -		// clear the selection if the caret is moved.
                                  -		// don't notify listeners about the selection change.
                                  -		clearSelection(false);
                                  -	}
                                  -	// always update the caret location. fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}	
                                  -/**
                                  - * Copies the specified text range to the clipboard.  The text will be placed
                                  - * in the clipboard in plain text format and RTF format.
                                  - * <p>
                                  - *
                                  - * @param start start index of the text
                                  - * @param length length of text to place in clipboard
                                  - * 
                                  - * @exception SWTError, see Clipboard.setContents
                                  - * @see org.eclipse.swt.dnd.Clipboard#setContents
                                  - */
                                  -void setClipboardContent(int start, int length, int clipboardType) throws SWTError {
                                  -	if (clipboardType == DND.SELECTION_CLIPBOARD && !(IS_MOTIF || IS_GTK)) return;
                                  -	TextTransfer plainTextTransfer = TextTransfer.getInstance();
                                  -	TextWriter plainTextWriter = new TextWriter(start, length);
                                  -	String plainText = getPlatformDelimitedText(plainTextWriter);
                                  -	Object[] data;
                                  -	Transfer[] types;
                                  -	if (clipboardType == DND.SELECTION_CLIPBOARD) {
                                  -		data = new Object[]{plainText};
                                  -		types = new Transfer[]{plainTextTransfer};
                                  -	} else {
                                  -		RTFTransfer rtfTransfer = RTFTransfer.getInstance();
                                  -		RTFWriter rtfWriter = new RTFWriter(start, length);
                                  -		String rtfText = getPlatformDelimitedText(rtfWriter);
                                  -		data = new Object[]{rtfText, plainText};
                                  -		types = new Transfer[]{rtfTransfer, plainTextTransfer};
                                  -	}
                                  -	clipboard.setContents(data, types, clipboardType);
                                  -}
                                  -/**
                                  - * Sets the content implementation to use for text storage.
                                  - * <p>
                                  - *
                                  - * @param newContent StyledTextContent implementation to use for text storage.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - * </ul>
                                  - */
                                  -public void setContent(StyledTextContent newContent) {
                                  -	checkWidget();	
                                  -	if (newContent == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	if (content != null) {
                                  -		content.removeTextChangeListener(textChangeListener);
                                  -	}	
                                  -	logicalContent = newContent;
                                  -	if (wordWrap) {
                                  -		content = new WrappedContent(renderer, logicalContent);
                                  -	}
                                  -	else {
                                  -		content = logicalContent;
                                  -	}
                                  -	content.addTextChangeListener(textChangeListener);
                                  -	reset();
                                  -}
                                  -/**
                                  - * Sets the receiver's cursor to the cursor specified by the
                                  - * argument.  Overridden to handle the null case since the 
                                  - * StyledText widget uses an ibeam as its default cursor.
                                  - *
                                  - * @see org.eclipse.swt.widgets.Control#setCursor
                                  - */
                                  -public void setCursor (Cursor cursor) {
                                  -	if (cursor == null) {
                                  -		super.setCursor(ibeamCursor);
                                  -	} else {
                                  -		super.setCursor(cursor);
                                  -	}
                                  -}
                                  -/** 
                                  - * Sets whether the widget implements double click mouse behavior.
                                  - * </p>
                                  - *
                                  - * @param enable if true double clicking a word selects the word, if false
                                  - * 	double clicks have the same effect as regular mouse clicks.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setDoubleClickEnabled(boolean enable) {
                                  -	checkWidget();
                                  -	doubleClickEnabled = enable;
                                  -}
                                  -/**
                                  - * Sets whether the widget content can be edited.
                                  - * </p>
                                  - *
                                  - * @param editable if true content can be edited, if false content can not be 
                                  - * 	edited
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setEditable(boolean editable) {
                                  -	checkWidget();
                                  -	this.editable = editable;
                                  -}
                                  -/**
                                  - * Sets a new font to render text with.
                                  - * <p>
                                  - * <b>NOTE:</b> Italic fonts are not supported unless they have no overhang
                                  - * and the same baseline as regular fonts.
                                  - * </p>
                                  - *
                                  - * @param font new font
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setFont(Font font) {
                                  -	checkWidget();
                                  -	int oldLineHeight = lineHeight;
                                  -	
                                  -	super.setFont(font);	
                                  -	initializeRenderer();
                                  -	// keep the same top line visible. fixes 5815
                                  -	if (lineHeight != oldLineHeight) {
                                  -		setVerticalScrollOffset(verticalScrollOffset * lineHeight / oldLineHeight, true);
                                  -		claimBottomFreeSpace();
                                  -	}
                                  -	calculateContentWidth();
                                  -	calculateScrollBars();
                                  -	if (isBidiCaret()) createCaretBitmaps();
                                  -	caretDirection = SWT.NULL;
                                  -	// always set the caret location. Fixes 6685
                                  -	setCaretLocation();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * @see org.eclipse.swt.widgets.Control#setForeground
                                  - */
                                  -public void setForeground(Color color) {
                                  -	checkWidget();
                                  -	foreground = color;
                                  -	super.setForeground(getForeground());
                                  -	redraw();
                                  -}
                                  -/** 
                                  - * Sets the horizontal scroll offset relative to the start of the line.
                                  - * Do nothing if there is no text set.
                                  - * <p>
                                  - * <b>NOTE:</b> The horizontal index is reset to 0 when new text is set in the 
                                  - * widget.
                                  - * </p>
                                  - *
                                  - * @param offset horizontal scroll offset relative to the start 
                                  - * 	of the line, measured in character increments starting at 0, if 
                                  - * 	equal to 0 the content is not scrolled, if > 0 = the content is scrolled.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setHorizontalIndex(int offset) {
                                  -	checkWidget();
                                  -	int clientAreaWidth = getClientArea().width;
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (offset < 0) {
                                  -		offset = 0;
                                  -	}
                                  -	offset *= getHorizontalIncrement();
                                  -	// allow any value if client area width is unknown or 0. 
                                  -	// offset will be checked in resize handler.
                                  -	// don't use isVisible since width is known even if widget 
                                  -	// is temporarily invisible
                                  -	if (clientAreaWidth > 0) {
                                  -		int width = lineCache.getWidth();
                                  -		// prevent scrolling if the content fits in the client area.
                                  -		// align end of longest line with right border of client area
                                  -		// if offset is out of range.
                                  -		if (offset > width - clientAreaWidth) {
                                  -			offset = Math.max(0, width - clientAreaWidth);
                                  -		}
                                  -	}
                                  -	scrollHorizontalBar(offset - horizontalScrollOffset);
                                  -}
                                  -/** 
                                  - * Sets the horizontal pixel offset relative to the start of the line.
                                  - * Do nothing if there is no text set.
                                  - * <p>
                                  - * <b>NOTE:</b> The horizontal pixel offset is reset to 0 when new text 
                                  - * is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param pixel horizontal pixel offset relative to the start 
                                  - * 	of the line.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void setHorizontalPixel(int pixel) {
                                  -	checkWidget();
                                  -	int clientAreaWidth = getClientArea().width;
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (pixel < 0) {
                                  -		pixel = 0;
                                  -	}
                                  -	// allow any value if client area width is unknown or 0. 
                                  -	// offset will be checked in resize handler.
                                  -	// don't use isVisible since width is known even if widget 
                                  -	// is temporarily invisible
                                  -	if (clientAreaWidth > 0) {
                                  -		int width = lineCache.getWidth();
                                  -		// prevent scrolling if the content fits in the client area.
                                  -		// align end of longest line with right border of client area
                                  -		// if offset is out of range.
                                  -		if (pixel > width - clientAreaWidth) {
                                  -			pixel = Math.max(0, width - clientAreaWidth);
                                  -		}
                                  -	}
                                  -	scrollHorizontalBar(pixel - horizontalScrollOffset);
                                  -}
                                  -/**
                                  - * Adjusts the maximum and the page size of the horizontal scroll bar 
                                  - * to reflect content width changes.
                                  - */
                                  -void setHorizontalScrollBar() {
                                  -	ScrollBar horizontalBar = getHorizontalBar();
                                  -	
                                  -	if (horizontalBar != null && horizontalBar.getVisible()) {
                                  -		final int INACTIVE = 1;
                                  -		Rectangle clientArea = getClientArea();
                                  -		// only set the real values if the scroll bar can be used 
                                  -		// (ie. because the thumb size is less than the scroll maximum)
                                  -		// avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92
                                  -		if (clientArea.width < lineCache.getWidth()) {
                                  -			horizontalBar.setValues(
                                  -				horizontalBar.getSelection(),
                                  -				horizontalBar.getMinimum(),
                                  -				lineCache.getWidth(),							// maximum
                                  -				clientArea.width - leftMargin - rightMargin,	// thumb size
                                  -				horizontalBar.getIncrement(),
                                  -				clientArea.width - leftMargin - rightMargin);	// page size
                                  -		}
                                  -		else 
                                  -		if (horizontalBar.getThumb() != INACTIVE || horizontalBar.getMaximum() != INACTIVE) {
                                  -			horizontalBar.setValues(
                                  -				horizontalBar.getSelection(),
                                  -				horizontalBar.getMinimum(),
                                  -				INACTIVE,
                                  -				INACTIVE,
                                  -				horizontalBar.getIncrement(),
                                  -				INACTIVE);
                                  -		}
                                  -	}
                                  -}
                                  -/** 
                                  - * Sets the background color of the specified lines.
                                  - * The background color is drawn for the width of the widget. All
                                  - * line background colors are discarded when setText is called.
                                  - * The text background color if defined in a StyleRange overlays the 
                                  - * line background color. Should not be called if a LineBackgroundListener 
                                  - * has been set since the listener maintains the line backgrounds.
                                  - * <p>
                                  - * Line background colors are maintained relative to the line text, not the 
                                  - * line index that is specified in this method call.
                                  - * During text changes, when entire lines are inserted or removed, the line 
                                  - * background colors that are associated with the lines after the change 
                                  - * will "move" with their respective text. An entire line is defined as 
                                  - * extending from the first character on a line to the last and including the 
                                  - * line delimiter. 
                                  - * </p>
                                  - * <p>
                                  - * When two lines are joined by deleting a line delimiter, the top line 
                                  - * background takes precedence and the color of the bottom line is deleted. 
                                  - * For all other text changes line background colors will remain unchanged. 
                                  - * </p>
                                  - * 
                                  - * @param startLine first line the color is applied to, 0 based
                                  - * @param lineCount number of lines the color applies to.
                                  - * @param background line background color
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li>
                                  - * </ul>
                                  - */
                                  -public void setLineBackground(int startLine, int lineCount, Color background) {
                                  -	checkWidget();
                                  -	int partialBottomIndex = getPartialBottomIndex();
                                  -	
                                  -	// this API can not be used if the client is providing the line background
                                  -	if (userLineBackground) {
                                  -		return;
                                  -	}
                                  -	if (startLine < 0 || startLine + lineCount > logicalContent.getLineCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	} 
                                  -	defaultLineStyler.setLineBackground(startLine, lineCount, background);
                                  -	// do nothing if redraw range is completely invisible	
                                  -	if (startLine > partialBottomIndex || startLine + lineCount - 1 < topIndex) {
                                  -		return;
                                  -	}
                                  -	// only redraw visible lines
                                  -	if (startLine < topIndex) {
                                  -		lineCount -= topIndex - startLine;
                                  -		startLine = topIndex;
                                  -	}
                                  -	if (startLine + lineCount - 1 > partialBottomIndex) {
                                  -		lineCount = partialBottomIndex - startLine + 1;
                                  -	}
                                  -	startLine -= topIndex;
                                  -	super.redraw(
                                  -		leftMargin, startLine * lineHeight + topMargin, 
                                  -		getClientArea().width - leftMargin - rightMargin, lineCount * lineHeight, true);
                                  -}
                                  -/**
                                  - * Flips selection anchor based on word selection direction.
                                  - */
                                  -void setMouseWordSelectionAnchor() {
                                  -	if (mouseDoubleClick) {
                                  -		if (caretOffset < doubleClickSelection.x) {
                                  -			selectionAnchor = doubleClickSelection.y;
                                  -		}
                                  -		else if (caretOffset > doubleClickSelection.y) {
                                  -			selectionAnchor = doubleClickSelection.x;
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the orientation of the receiver, which must be one
                                  - * of the constants <code>SWT.LEFT_TO_RIGHT</code> or <code>SWT.RIGHT_TO_LEFT</code>.
                                  - * <p>
                                  - *
                                  - * @param orientation new orientation style
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * 
                                  - * @since 2.1.2
                                  - */
                                  -public void setOrientation(int orientation) {
                                  -	if ((orientation & (SWT.RIGHT_TO_LEFT | SWT.LEFT_TO_RIGHT)) == 0) { 
                                  -		return;
                                  -	}
                                  -	if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && (orientation & SWT.LEFT_TO_RIGHT) != 0) {
                                  -		return;	
                                  -	}
                                  -	if ((orientation & SWT.RIGHT_TO_LEFT) != 0 && isMirrored()) {
                                  -		return;	
                                  -	} 
                                  -	if ((orientation & SWT.LEFT_TO_RIGHT) != 0 && !isMirrored()) {
                                  -		return;
                                  -	}
                                  -	if (!BidiUtil.setOrientation(handle, orientation)) {
                                  -		return;
                                  -	}
                                  -	isMirrored = (orientation & SWT.RIGHT_TO_LEFT) != 0;
                                  -	initializeRenderer();
                                  -	caretDirection = SWT.NULL;
                                  -	setCaretLocation();
                                  -	keyActionMap.clear();
                                  -	createKeyBindings();
                                  -	super.redraw();
                                  -}
                                  -/**
                                  - * Adjusts the maximum and the page size of the scroll bars to 
                                  - * reflect content width/length changes.
                                  - */
                                  -void setScrollBars() {
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	if (verticalBar != null) {
                                  -		Rectangle clientArea = getClientArea();
                                  -		final int INACTIVE = 1;
                                  -		int maximum = content.getLineCount() * getVerticalIncrement();
                                  -		
                                  -		// only set the real values if the scroll bar can be used 
                                  -		// (ie. because the thumb size is less than the scroll maximum)
                                  -		// avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92
                                  -		if (clientArea.height < maximum) {
                                  -			verticalBar.setValues(
                                  -				verticalBar.getSelection(),
                                  -				verticalBar.getMinimum(),
                                  -				maximum,
                                  -				clientArea.height,				// thumb size
                                  -				verticalBar.getIncrement(),
                                  -				clientArea.height);				// page size
                                  -		}
                                  -		else
                                  -		if (verticalBar.getThumb() != INACTIVE || verticalBar.getMaximum() != INACTIVE) {
                                  -			verticalBar.setValues(
                                  -				verticalBar.getSelection(),
                                  -				verticalBar.getMinimum(),
                                  -				INACTIVE,
                                  -				INACTIVE,
                                  -				verticalBar.getIncrement(),
                                  -				INACTIVE);
                                  -		}		
                                  -	}
                                  -	setHorizontalScrollBar();
                                  -}
                                  -/** 
                                  - * Sets the selection to the given position and scrolls it into view.  Equivalent to setSelection(start,start).
                                  - * <p>
                                  - *
                                  - * @param start new caret position
                                  - * @see #setSelection(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul> 
                                  - */
                                  -public void setSelection(int start) {
                                  -	// checkWidget test done in setSelectionRange	
                                  -	setSelection(start, start);
                                  -}
                                  -/** 
                                  - * Sets the selection and scrolls it into view.
                                  - * <p>
                                  - * Indexing is zero based.  Text selections are specified in terms of
                                  - * caret positions.  In a text widget that contains N characters, there are 
                                  - * N+1 caret positions, ranging from 0..N
                                  - * </p>
                                  - *
                                  - * @param point x=selection start offset, y=selection end offset
                                  - * 	The caret will be placed at the selection start when x > y.
                                  - * @see #setSelection(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_NULL_ARGUMENT when point is null</li>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul> 
                                  - */
                                  -public void setSelection(Point point) {
                                  -	checkWidget();
                                  -	if (point == null) SWT.error (SWT.ERROR_NULL_ARGUMENT);	
                                  -	setSelection(point.x, point.y);
                                  -}
                                  -/**
                                  - * Sets the receiver's selection background color to the color specified
                                  - * by the argument, or to the default system color for the control
                                  - * if the argument is null.
                                  - *
                                  - * @param color the new color (or null)
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public void setSelectionBackground (Color color) {
                                  -	checkWidget ();
                                  -	if (color != null) {
                                  -		if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	selectionBackground = color;
                                  -	redraw();
                                  -}	
                                  -/**
                                  - * Sets the receiver's selection foreground color to the color specified
                                  - * by the argument, or to the default system color for the control
                                  - * if the argument is null.
                                  - *
                                  - * @param color the new color (or null)
                                  - *
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> 
                                  - * </ul>
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.1
                                  - */
                                  -public void setSelectionForeground (Color color) {
                                  -	checkWidget ();
                                  -	if (color != null) {
                                  -		if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}
                                  -	selectionForeground = color;
                                  -	redraw();
                                  -}	
                                  -/** 
                                  - * Sets the selection and scrolls it into view.
                                  - * <p>
                                  - * Indexing is zero based.  Text selections are specified in terms of
                                  - * caret positions.  In a text widget that contains N characters, there are 
                                  - * N+1 caret positions, ranging from 0..N
                                  - * </p>
                                  - *
                                  - * @param start selection start offset. The caret will be placed at the 
                                  - * 	selection start when start > end.
                                  - * @param end selection end offset
                                  - * @see #setSelectionRange(int,int)
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setSelection(int start, int end) {
                                  -	// checkWidget test done in setSelectionRange
                                  -	setSelectionRange(start, end - start);
                                  -	showSelection();
                                  -}
                                  -/** 
                                  - * Sets the selection. The new selection may not be visible. Call showSelection to scroll 
                                  - * the selection into view. A negative length places the caret at the visual start of the 
                                  - * selection. <p>
                                  - *
                                  - * @param start offset of the first selected character
                                  - * @param length number of characters to select
                                  - * 
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a 
                                  - * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter)
                                  - * </ul>
                                  - */
                                  -public void setSelectionRange(int start, int length) {
                                  -	checkWidget();
                                  -	int contentLength = getCharCount();
                                  -	start = Math.max(0, Math.min (start, contentLength));
                                  -	int end = start + length;
                                  -	if (end < 0) {
                                  -		length = -start;
                                  -	} else {
                                  -		if (end > contentLength) length = contentLength - start;
                                  -	}
                                  -	if (isLineDelimiter(start) || isLineDelimiter(start + length)) {
                                  -		// the start offset or end offset of the selection range is inside a 
                                  -		// multi byte line delimiter. This is an illegal operation and an exception 
                                  -		// is thrown. Fixes 1GDKK3R
                                  -		SWT.error(SWT.ERROR_INVALID_ARGUMENT);
                                  -	}					
                                  -	internalSetSelection(start, length, false);
                                  -	// always update the caret location. fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets the selection. 
                                  - * The new selection may not be visible. Call showSelection to scroll 
                                  - * the selection into view.
                                  - * <p>
                                  - *
                                  - * @param start offset of the first selected character, start >= 0 must be true.
                                  - * @param length number of characters to select, 0 <= start + length 
                                  - * 	<= getCharCount() must be true. 
                                  - * 	A negative length places the caret at the selection start.
                                  - * @param sendEvent a Selection event is sent when set to true and when 
                                  - * 	the selection is reset.
                                  - */
                                  -void internalSetSelection(int start, int length, boolean sendEvent) {
                                  -	int end = start + length;
                                  -	
                                  -	if (start > end) {
                                  -		int temp = end;
                                  -		end = start;
                                  -		start = temp;
                                  -	}
                                  -	// is the selection range different or is the selection direction 
                                  -	// different?
                                  -	if (selection.x != start || selection.y != end || 
                                  -		(length > 0 && selectionAnchor != selection.x) || 
                                  -		(length < 0 && selectionAnchor != selection.y)) {
                                  -		clearSelection(sendEvent);
                                  -		if (length < 0) {
                                  -			selectionAnchor = selection.y = end;
                                  -			caretOffset = selection.x = start;
                                  -		}
                                  -		else {
                                  -			selectionAnchor = selection.x = start;
                                  -			caretOffset = selection.y = end;
                                  -		}
                                  -		internalRedrawRange(selection.x, selection.y - selection.x, true);
                                  -	}
                                  -}
                                  -/** 
                                  - * Adds the specified style. The new style overwrites existing styles for the
                                  - * specified range.  Existing style ranges are adjusted if they partially 
                                  - * overlap with the new style, To clear an individual style, call setStyleRange 
                                  - * with a StyleRange that has null attributes. 
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param range StyleRange object containing the style information.
                                  - * Overwrites the old style in the given range. May be null to delete
                                  - * all styles.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_INVALID_RANGE when the style range is outside the valid range (> getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public void setStyleRange(StyleRange range) {
                                  -	checkWidget();
                                  -	
                                  -	// this API can not be used if the client is providing the line styles
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	// check the range, make sure it falls within the range of the text 
                                  -	if (range != null && range.start + range.length > content.getCharCount()) {
                                  -		SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -	} 	
                                  -	defaultLineStyler.setStyleRange(range);
                                  -	if (range != null) {
                                  -		int firstLine = content.getLineAtOffset(range.start);
                                  -		int lastLine = content.getLineAtOffset(range.start + range.length);
                                  -		lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  -
                                  -		// if the style is not visible, there is no need to redraw
                                  -		if (isAreaVisible(firstLine, lastLine)) {
                                  -			int redrawY = firstLine * lineHeight - verticalScrollOffset;
                                  -			int redrawStopY = (lastLine + 1) * lineHeight - verticalScrollOffset;		
                                  -			draw(0, redrawY, getClientArea().width, redrawStopY - redrawY, true);
                                  -		}
                                  -	} else {
                                  -		// clearing all styles
                                  -		lineCache.reset(0, content.getLineCount(), false);
                                  -		redraw();
                                  -	}
                                  -	
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets styles to be used for rendering the widget content. All styles 
                                  - * in the widget will be replaced with the given set of styles.
                                  - * <p>
                                  - * Should not be called if a LineStyleListener has been set since the 
                                  - * listener maintains the styles.
                                  - * </p>
                                  - *
                                  - * @param ranges StyleRange objects containing the style information.
                                  - * The ranges should not overlap. The style rendering is undefined if 
                                  - * the ranges do overlap. Must not be null. The styles need to be in order.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when listener is null</li>
                                  - *    <li>ERROR_INVALID_RANGE when the last of the style ranges is outside the valid range (> getCharCount())</li> 
                                  - * </ul>
                                  - */
                                  -public void setStyleRanges(StyleRange[] ranges) {
                                  -	checkWidget();
                                  -	// this API can not be used if the client is providing the line styles
                                  -	if (userLineStyle) {
                                  -		return;
                                  -	}
                                  - 	if (ranges == null) {
                                  - 		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  - 	}
                                  - 	// check the last range, make sure it falls within the range of the
                                  - 	// current text 
                                  - 	if (ranges.length != 0) {
                                  - 		StyleRange last = ranges[ranges.length-1];
                                  - 		int lastEnd = last.start + last.length;
                                  -		int firstLine = content.getLineAtOffset(ranges[0].start);
                                  -		int lastLine;
                                  -		if (lastEnd > content.getCharCount()) {
                                  -			SWT.error(SWT.ERROR_INVALID_RANGE);
                                  -		} 	
                                  -		lastLine = content.getLineAtOffset(lastEnd);
                                  -		// reset all lines affected by the style change
                                  -		lineCache.reset(firstLine, lastLine - firstLine + 1, true);
                                  - 	}
                                  - 	else {
                                  -		// reset all lines
                                  -		lineCache.reset(0, content.getLineCount(), false);
                                  - 	}
                                  -	defaultLineStyler.setStyleRanges(ranges);
                                  -	redraw(); // should only redraw affected area to avoid flashing
                                  -	// make sure that the caret is positioned correctly.
                                  -	// caret location may change if font style changes.
                                  -	// fixes 1G8FODP
                                  -	setCaretLocation();
                                  -}
                                  -/** 
                                  - * Sets the tab width. 
                                  - * <p>
                                  - *
                                  - * @param tabs tab width measured in characters.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setTabs(int tabs) {
                                  -	checkWidget();	
                                  -	tabLength = tabs;
                                  -	renderer.setTabLength(tabLength);
                                  -	if (caretOffset > 0) {
                                  -		caretOffset = 0;
                                  -		showCaret();
                                  -		clearSelection(false);
                                  -	}
                                  -	// reset all line widths when the tab width changes
                                  -	lineCache.reset(0, content.getLineCount(), false);
                                  -	redraw();
                                  -}
                                  -/** 
                                  - * Sets the widget content. 
                                  - * If the widget has the SWT.SINGLE style and "text" contains more than 
                                  - * one line, only the first line is rendered but the text is stored 
                                  - * unchanged. A subsequent call to getText will return the same text 
                                  - * that was set.
                                  - * <p>
                                  - * <b>Note:</b> Only a single line of text should be set when the SWT.SINGLE 
                                  - * style is used.
                                  - * </p>
                                  - *
                                  - * @param text new widget content. Replaces existing content. Line styles 
                                  - * 	that were set using StyledText API are discarded.  The
                                  - * 	current selection is also discarded.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *    <li>ERROR_NULL_ARGUMENT when string is null</li>
                                  - * </ul>
                                  - */
                                  -public void setText(String text) {
                                  -	checkWidget();
                                  -	Event event = new Event();
                                  -	
                                  -	if (text == null) {
                                  -		SWT.error(SWT.ERROR_NULL_ARGUMENT);
                                  -	}
                                  -	event.start = 0;
                                  -	event.end = getCharCount();
                                  -	event.text = text;
                                  -	event.doit = true;	
                                  -	notifyListeners(SWT.Verify, event);
                                  -	if (event.doit) {
                                  -		StyledTextEvent styledTextEvent = null;
                                  -		
                                  -		if (isListening(ExtendedModify)) {		
                                  -			styledTextEvent = new StyledTextEvent(logicalContent);
                                  -			styledTextEvent.start = event.start;
                                  -			styledTextEvent.end = event.start + event.text.length();
                                  -			styledTextEvent.text = content.getTextRange(event.start, event.end - event.start);
                                  -		}
                                  -		content.setText(event.text);
                                  -		sendModifyEvent(event);	
                                  -		if (styledTextEvent != null) {
                                  -			notifyListeners(ExtendedModify, styledTextEvent);
                                  -		}
                                  -	}
                                  -}
                                  -/**
                                  - * Sets the text limit to the specified number of characters.
                                  - * <p>
                                  - * The text limit specifies the amount of text that
                                  - * the user can type into the widget.
                                  - * </p>
                                  - *
                                  - * @param limit the new text limit.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @exception IllegalArgumentException <ul>
                                  - *   <li>ERROR_CANNOT_BE_ZERO when limit is 0</li>
                                  - * </ul>
                                  - */
                                  -public void setTextLimit(int limit) {
                                  -	checkWidget();
                                  -	if (limit == 0) {
                                  -		SWT.error(SWT.ERROR_CANNOT_BE_ZERO);
                                  -	}
                                  -	textLimit = limit;
                                  -}
                                  -/**
                                  - * Sets the top index. Do nothing if there is no text set.
                                  - * <p>
                                  - * The top index is the index of the line that is currently at the top 
                                  - * of the widget. The top index changes when the widget is scrolled.
                                  - * Indexing starts from zero.
                                  - * Note: The top index is reset to 0 when new text is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param topIndex new top index. Must be between 0 and 
                                  - * 	getLineCount() - fully visible lines per page. If no lines are fully 
                                  - * 	visible the maximum value is getLineCount() - 1. An out of range 
                                  - * 	index will be adjusted accordingly.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void setTopIndex(int topIndex) {
                                  -	checkWidget();
                                  -	int lineCount = logicalContent.getLineCount();
                                  -	int pageSize = Math.max(1, Math.min(lineCount, getLineCountWhole()));
                                  -	
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (topIndex < 0) {
                                  -		topIndex = 0;
                                  -	}
                                  -	else 
                                  -	if (topIndex > lineCount - pageSize) {
                                  -		topIndex = lineCount - pageSize;
                                  -	}
                                  -	if (wordWrap) {
                                  -		int logicalLineOffset = logicalContent.getOffsetAtLine(topIndex);
                                  -		topIndex = content.getLineAtOffset(logicalLineOffset);
                                  -	}
                                  -	setVerticalScrollOffset(topIndex * getVerticalIncrement(), true);
                                  -}
                                  -/**
                                  - * Sets the top pixel offset. Do nothing if there is no text set.
                                  - * <p>
                                  - * The top pixel offset is the vertical pixel offset of the widget. The
                                  - * widget is scrolled so that the given pixel position is at the top.
                                  - * The top index is adjusted to the corresponding top line.
                                  - * Note: The top pixel is reset to 0 when new text is set in the widget.
                                  - * </p>
                                  - *
                                  - * @param pixel new top pixel offset. Must be between 0 and 
                                  - * 	(getLineCount() - visible lines per page) / getLineHeight()). An out
                                  - * 	of range offset will be adjusted accordingly.
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - * @since 2.0
                                  - */
                                  -public void setTopPixel(int pixel) {
                                  -	checkWidget();
                                  -	int lineCount =content.getLineCount();
                                  -	int height = getClientArea().height;
                                  -	int maxTopPixel = Math.max(0, lineCount * getVerticalIncrement() - height);
                                  -	
                                  -	if (getCharCount() == 0) {
                                  -		return;
                                  -	}	
                                  -	if (pixel < 0) {
                                  -		pixel = 0;
                                  -	}
                                  -	else 
                                  -	if (pixel > maxTopPixel) {
                                  -		pixel = maxTopPixel;
                                  -	}
                                  -	setVerticalScrollOffset(pixel, true);
                                  -}
                                  -/**
                                  - * Scrolls the widget vertically.
                                  - * <p>
                                  - *
                                  - * @param pixelOffset the new vertical scroll offset
                                  - * @param adjustScrollBar 
                                  - * 	true= the scroll thumb will be moved to reflect the new scroll offset.
                                  - * 	false = the scroll thumb will not be moved
                                  - * @return 
                                  - *	true=the widget was scrolled 
                                  - *	false=the widget was not scrolled, the given offset is not valid.
                                  - */
                                  -boolean setVerticalScrollOffset(int pixelOffset, boolean adjustScrollBar) {
                                  -	Rectangle clientArea;
                                  -	ScrollBar verticalBar = getVerticalBar();
                                  -	
                                  -	if (pixelOffset == verticalScrollOffset) {
                                  -		return false;
                                  -	}
                                  -	if (verticalBar != null && adjustScrollBar) {
                                  -		verticalBar.setSelection(pixelOffset);
                                  -	}
                                  -	clientArea = getClientArea();
                                  -	scroll(
                                  -		0, 0, 									// destination x, y
                                  -		0, pixelOffset - verticalScrollOffset,	// source x, y
                                  -		clientArea.width, clientArea.height, true);
                                  -
                                  -	verticalScrollOffset = pixelOffset;
                                  -	calculateTopIndex();
                                  -	int oldColumnX = columnX;
                                  -	setCaretLocation();
                                  -	// restore the original horizontal caret index
                                  -	columnX = oldColumnX;
                                  -	return true;
                                  -}
                                  -/**
                                  - * Scrolls the specified location into view.
                                  - * <p>
                                  - * 
                                  - * @param x the x coordinate that should be made visible.
                                  - * @param line the line that should be made visible. Relative to the
                                  - *	first line in the document.
                                  - * @return 
                                  - *	true=the widget was scrolled to make the specified location visible. 
                                  - *	false=the specified location is already visible, the widget was 
                                  - *	not scrolled. 	
                                  - */
                                  -boolean showLocation(int x, int line) {
                                  -	int clientAreaWidth = getClientArea().width - leftMargin;
                                  -	int verticalIncrement = getVerticalIncrement();
                                  -	int horizontalIncrement = clientAreaWidth / 4;
                                  -	boolean scrolled = false;		
                                  -	
                                  -	if (x < leftMargin) {
                                  -		// always make 1/4 of a page visible
                                  -		x = Math.max(horizontalScrollOffset * -1, x - horizontalIncrement);	
                                  -		scrolled = scrollHorizontalBar(x);
                                  -	}
                                  -	else 
                                  -	if (x >= clientAreaWidth) {
                                  -		// always make 1/4 of a page visible
                                  -		x = Math.min(lineCache.getWidth() - horizontalScrollOffset, x + horizontalIncrement);
                                  -		scrolled = scrollHorizontalBar(x - clientAreaWidth);
                                  -	}
                                  -	if (line < topIndex) {
                                  -		scrolled = setVerticalScrollOffset(line * verticalIncrement, true);
                                  -	}
                                  -	else
                                  -	if (line > getBottomIndex()) {
                                  -		scrolled = setVerticalScrollOffset((line + 1) * verticalIncrement - getClientArea().height, true);
                                  -	}
                                  -	return scrolled;
                                  -}
                                  -/**
                                  - * Sets the caret location and scrolls the caret offset into view.
                                  - */
                                  -void showCaret() {
                                  -	int caretLine = content.getLineAtOffset(caretOffset);
                                  -	
                                  -	showCaret(caretLine);
                                  -}
                                  -/**
                                  - * Sets the caret location and scrolls the caret offset into view.
                                  - */
                                  -void showCaret(int caretLine) {
                                  -	int lineOffset = content.getOffsetAtLine(caretLine);
                                  -	String line = content.getLine(caretLine);
                                  -	int offsetInLine = caretOffset - lineOffset;
                                  -	int newCaretX = getXAtOffset(line, caretLine, offsetInLine);	
                                  -	boolean scrolled = showLocation(newCaretX, caretLine);
                                  -	boolean setWrapCaretLocation = false;
                                  -	Caret caret = getCaret();
                                  -
                                  -	if (wordWrap && caret != null) {
                                  -		int caretY = caret.getLocation().y;
                                  -		if ((caretY + verticalScrollOffset) / getVerticalIncrement() - 1 != caretLine) {
                                  -			setWrapCaretLocation = true;
                                  -		}
                                  -	}
                                  -	if (!scrolled || setWrapCaretLocation) {
                                  -		// set the caret location if a scroll operation did not set it (as a 
                                  -		// sideeffect of scrolling) or when in word wrap mode and the caret 
                                  -		// line was explicitly specified (i.e., because getWrapCaretLine does 
                                  -		// not return the desired line causing scrolling to not set it correctly)
                                  -		setCaretLocation(newCaretX, caretLine, getCaretDirection());
                                  -	}
                                  -}
                                  -/**
                                  - * Scrolls the specified offset into view.
                                  - * <p>
                                  - *
                                  - * @param offset offset that should be scolled into view
                                  - */
                                  -void showOffset(int offset) {
                                  -	int line = content.getLineAtOffset(offset);
                                  -	int lineOffset = content.getOffsetAtLine(line);
                                  -	int offsetInLine = offset - lineOffset;
                                  -	String lineText = content.getLine(line);
                                  -	int xAtOffset = getXAtOffset(lineText, line, offsetInLine);
                                  -	
                                  -	showLocation(xAtOffset, line);	
                                  -}
                                  -/**
                                  -/**
                                  - * Scrolls the selection into view.  The end of the selection will be scrolled into
                                  - * view.  Note that if a right-to-left selection exists, the end of the selection is the
                                  - * visual beginning of the selection (i.e., where the caret is located).
                                  - * <p>
                                  - *
                                  - * @exception SWTException <ul>
                                  - *    <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>
                                  - *    <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>
                                  - * </ul>
                                  - */
                                  -public void showSelection() {
                                  -	checkWidget();
                                  -	boolean selectionFits;
                                  -	int startOffset, startLine, startX, endOffset, endLine, endX, offsetInLine;
                                  -
                                  -	// is selection from right-to-left?
                                  -	boolean rightToLeft = caretOffset == selection.x;
                                  -
                                  -	if (rightToLeft) {
                                  -		startOffset = selection.y;
                                  -		endOffset = selection.x;
                                  -	} else {
                                  -		startOffset = selection.x;
                                  -		endOffset = selection.y;
                                  -	}
                                  -	
                                  -	// calculate the logical start and end values for the selection
                                  -	startLine = content.getLineAtOffset(startOffset);
                                  -	offsetInLine = startOffset - content.getOffsetAtLine(startLine);
                                  -	startX = getXAtOffset(content.getLine(startLine), startLine, offsetInLine);	
                                  -	endLine  = content.getLineAtOffset(endOffset);
                                  -	offsetInLine = endOffset - content.getOffsetAtLine(endLine);
                                  -	endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine);	
                                  -
                                  -	// can the selection be fully displayed within the widget's visible width?
                                  -	int w = getClientArea().width;
                                  -	if (rightToLeft) {
                                  -		selectionFits = startX - endX <= w;
                                  -	} else {
                                  -		selectionFits = endX - startX <= w;
                                  -	}
                                  -	
                                  -	if (selectionFits) {
                                  -		// show as much of the selection as possible by first showing
                                  -		// the start of the selection
                                  -		showLocation(startX, startLine);
                                  -		// endX value could change if showing startX caused a scroll to occur
                                  -		endX = getXAtOffset(content.getLine(endLine), endLine, offsetInLine);	
                                  -		showLocation(endX, endLine);
                                  -	} else {
                                  -		// just show the end of the selection since the selection start 
                                  -		// will not be visible
                                  -		showLocation(endX, endLine);
                                  -	}	 
                                  -}
                                  -boolean isBidiCaret() {
                                  -	return BidiUtil.isBidiPlatform();
                                  -}
                                  -/**
                                  - * Updates the selection and caret position depending on the text change.
                                  - * If the selection intersects with the replaced text, the selection is 
                                  - * reset and the caret moved to the end of the new text.
                                  - * If the selection is behind the replaced text it is moved so that the
                                  - * same text remains selected.  If the selection is before the replaced text 
                                  - * it is left unchanged.
                                  - * <p>
                                  - *
                                  - * @param startOffset offset of the text change
                                  - * @param replacedLength length of text being replaced
                                  - * @param newLength length of new text
                                  - */
                                  -void updateSelection(int startOffset, int replacedLength, int newLength) {
                                  -	if (selection.y <= startOffset) {
                                  -		// selection ends before text change
                                  -		return;
                                  -	}
                                  -	if (selection.x < startOffset) {
                                  -		// clear selection fragment before text change
                                  -		internalRedrawRange(selection.x, startOffset - selection.x, true);
                                  -	}
                                  -	if (selection.y > startOffset + replacedLength && selection.x < startOffset + replacedLength) {
                                  -		// clear selection fragment after text change.
                                  -		// do this only when the selection is actually affected by the 
                                  -		// change. Selection is only affected if it intersects the change (1GDY217).
                                  -		int netNewLength = newLength - replacedLength;
                                  -		int redrawStart = startOffset + newLength;
                                  -		internalRedrawRange(redrawStart, selection.y + netNewLength - redrawStart, true);
                                  -	}
                                  -	if (selection.y > startOffset && selection.x < startOffset + replacedLength) {
                                  -		// selection intersects replaced text. set caret behind text change
                                  -		internalSetSelection(startOffset + newLength, 0, true);
                                  -		// always update the caret location. fixes 1G8FODP
                                  -		setCaretLocation();
                                  -	}
                                  -	else {
                                  -		// move selection to keep same text selected
                                  -		internalSetSelection(selection.x + newLength - replacedLength, selection.y - selection.x, true);
                                  -		// always update the caret location. fixes 1G8FODP
                                  -		setCaretLocation();
                                  -	}	
                                  -}
                                  -/**
                                  - * Rewraps all lines
                                  - * <p>
                                  - * 
                                  - * @param oldClientAreaWidth client area width before resize 
                                  - * 	occurred
                                  - */
                                  -void wordWrapResize(int oldClientAreaWidth) {
                                  -	WrappedContent wrappedContent = (WrappedContent) content;
                                  -	int newTopIndex;
                                  -
                                  -	// all lines are wrapped and no rewrap required if widget has already 
                                  -	// been visible, client area is now wider and visual (wrapped) line 
                                  -	// count equals logical line count.
                                  -	if (oldClientAreaWidth != 0 && clientAreaWidth > oldClientAreaWidth &&
                                  -		wrappedContent.getLineCount() == logicalContent.getLineCount()) {
                                  -		return;
                                  -	}
                                  -	wrappedContent.wrapLines();
                                  -    
                                  -	// adjust the top index so that top line remains the same
                                  -	newTopIndex = content.getLineAtOffset(topOffset);
                                  -	// topOffset is the beginning of the top line. therefore it 
                                  -	// needs to be adjusted because in a wrapped line this is also 
                                  -	// the end of the preceeding line.  
                                  -	if (newTopIndex < content.getLineCount() - 1 &&
                                  -		topOffset == content.getOffsetAtLine(newTopIndex + 1)) {
                                  -		newTopIndex++;
                                  -	}
                                  -	if (newTopIndex != topIndex) {
                                  -		ScrollBar verticalBar = getVerticalBar();
                                  -		// adjust index and pixel offset manually instead of calling
                                  -		// setVerticalScrollOffset because the widget does not actually need
                                  -		// to be scrolled. causes flash otherwise.
                                  -		verticalScrollOffset += (newTopIndex - topIndex) * getVerticalIncrement();
                                  -		// verticalScrollOffset may become negative if first line was 
                                  -		// partially visible and second line was top line. prevent this from 
                                  -		// happening to fix 8503.
                                  -		if (verticalScrollOffset < 0) {
                                  -			verticalScrollOffset = 0;
                                  -		}
                                  -		topIndex = newTopIndex;
                                  -		topOffset = content.getOffsetAtLine(topIndex);
                                  -		if (verticalBar != null) {
                                  -			verticalBar.setSelection(verticalScrollOffset);
                                  -		}
                                  -	}
                                  -	// caret may be on a different line after a rewrap.
                                  -	// call setCaretLocation after fixing vertical scroll offset.
                                  -	setCaretLocation();    
                                  -	// word wrap may have changed on one of the visible lines
                                  -	super.redraw();
                                  -}
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/todo.gif b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/todo.gif
                                  deleted file mode 100644
                                  index 0bbc98a7..00000000
                                  Binary files a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/todo.gif and /dev/null differ
                                  diff --git a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/undoStack.js b/branches/flexBox/sandbox/sandbox/orion_nightly/samples/undoStack.js
                                  deleted file mode 100644
                                  index eab28efa..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/orion_nightly/samples/undoStack.js
                                  +++ /dev/null
                                  @@ -1,203 +0,0 @@
                                  -/*******************************************************************************
                                  - * Copyright (c) 2010 IBM Corporation and others All rights reserved. This
                                  - * program and the accompanying materials are made available under the terms of
                                  - * the Eclipse Public License v1.0 which accompanies this distribution, and is
                                  - * available at http://www.eclipse.org/legal/epl-v10.html
                                  - * 
                                  - * Contributors: IBM Corporation - initial API and implementation
                                  - ******************************************************************************/
                                  -
                                  -var eclipse = eclipse || {};
                                  -
                                  -eclipse.UndoStack = (function() {
                                  -	var Change = (function() {
                                  -		function Change(offset, text, previousText) {
                                  -			this.offset = offset;
                                  -			this.text = text;
                                  -			this.previousText = previousText;
                                  -		}
                                  -		Change.prototype = {
                                  -			undo: function (editor, select) {
                                  -				this._doUndoRedo(this.offset, this.previousText, this.text, editor, select);
                                  -			},
                                  -			redo: function (editor, select) {
                                  -				this._doUndoRedo(this.offset, this.text, this.previousText, editor, select);
                                  -			},
                                  -			_doUndoRedo: function(offset, text, previousText, editor, select) {
                                  -				editor.setText(text, offset, offset + previousText.length);
                                  -				if (select) {
                                  -					editor.setSelection(offset, offset + text.length);
                                  -				}
                                  -			}
                                  -		};
                                  -		return Change;
                                  -	}());
                                  -
                                  -	var CompoundChange = (function() {
                                  -		function CompoundChange (selection, caret) {
                                  -			this.selection = selection;
                                  -			this.caret = caret;
                                  -			this.changes = [];
                                  -		}
                                  -		CompoundChange.prototype = {
                                  -			add: function (change) {
                                  -				this.changes.push(change);
                                  -			},
                                  -			undo: function (editor, select) {
                                  -				for (var i=this.changes.length - 1; i >= 0; i--) {
                                  -					this.changes[i].undo(editor, false);
                                  -				}
                                  -				if (select) {
                                  -					var start = this.selection.start;
                                  -					var end = this.selection.end;
                                  -					editor.setSelection(this.caret ? start : end, this.caret ? end : start);
                                  -				}
                                  -			},
                                  -			redo: function (editor, select) {
                                  -				for (var i = 0; i < this.changes.length; i++) {
                                  -					this.changes[i].redo(editor, false);
                                  -				}
                                  -				if (select) {
                                  -					var start = this.selection.start;
                                  -					var end = this.selection.end;
                                  -					editor.setSelection(this.caret ? start : end, this.caret ? end : start);
                                  -				}
                                  -			}
                                  -		};
                                  -		return CompoundChange;
                                  -	}());
                                  -
                                  -	function UndoStack (editor, size) {
                                  -		this.editor = editor;
                                  -		this.size = size !== undefined ? size : 100;
                                  -		this.reset();
                                  -		editor.addEventListener("ModelChanging", this, this._onModelChanging);
                                  -		editor.addEventListener("Destroy", this, this._onDestroy);
                                  -	}
                                  -	UndoStack.prototype = {
                                  -		add: function (change) {
                                  -			if (this.compoundChange) {
                                  -				this.compoundChange.add(change);
                                  -			} else {
                                  -				var length = this.stack.length;
                                  -				this.stack.splice(this.index, length-this.index, change);
                                  -				this.index++;
                                  -				if (this.stack.length > this.size) {
                                  -					this.stack.shift();
                                  -					this.index--;
                                  -					this.cleanIndex--;
                                  -				}
                                  -			}
                                  -		},
                                  -		markClean: function() {
                                  -			this.endCompoundChange();
                                  -			this._commitUndo();
                                  -			this.cleanIndex = this.index;
                                  -		},
                                  -		isClean: function() {
                                  -			return this.cleanIndex === this.getSize().undo;
                                  -		},
                                  -		canUndo: function() {
                                  -			return this.getSize().undo > 0;
                                  -		},
                                  -		canRedo: function() {
                                  -			return this.getSize().redo > 0;
                                  -		},
                                  -		endCompoundChange: function() {
                                  -			this.compoundChange = undefined;
                                  -		},
                                  -		getSize: function() {
                                  -			var index = this.index;
                                  -			var length = this.stack.length;
                                  -			if (this._undoStart !== undefined) {
                                  -				index++;
                                  -			}
                                  -			return {undo: index, redo: (length - index)};
                                  -		},
                                  -		undo: function() {
                                  -			this._commitUndo();
                                  -			if (this.index <= 0) {
                                  -				return false;
                                  -			}
                                  -			var change = this.stack[--this.index];
                                  -			this._ignoreUndo = true;
                                  -			change.undo(this.editor, true);
                                  -			this._ignoreUndo = false;
                                  -			return true;
                                  -		},
                                  -		redo: function() {
                                  -			this._commitUndo();
                                  -			if (this.index >= this.stack.length) {
                                  -				return false;
                                  -			}
                                  -			var change = this.stack[this.index++];
                                  -			this._ignoreUndo = true;
                                  -			change.redo(this.editor, true);
                                  -			this._ignoreUndo = false;
                                  -			return true;
                                  -		},
                                  -		reset: function() {
                                  -			this.index = this.cleanIndex = 0;
                                  -			this.stack = [];
                                  -			this._undoStart = undefined;
                                  -			this._undoText = "";
                                  -			this._ignoreUndo = false;
                                  -			this._compoundChange = undefined;
                                  -		},
                                  -		startCompoundChange: function() {
                                  -			var change = new CompoundChange(this.editor.getSelection(), this.editor.getCaretOffset());
                                  -			this.add(change);
                                  -			this.compoundChange = change;
                                  -		},
                                  -		_commitUndo: function () {
                                  -			if (this._undoStart !== undefined) {
                                  -				if (this._undoStart < 0) {
                                  -					this.add(new Change(-this._undoStart, "", this._undoText, ""));
                                  -				} else {
                                  -					this.add(new Change(this._undoStart, this._undoText, ""));
                                  -				}
                                  -				this._undoStart = undefined;
                                  -				this._undoText = "";
                                  -			}
                                  -		},
                                  -		_onDestroy: function() {
                                  -			this.editor.removeEventListener("ModelChanging", this, this._onModelChanging);
                                  -			this.editor.removeEventListener("Destroy", this, this._onDestroy);
                                  -		},
                                  -		_onModelChanging: function(e) {
                                  -			var newText = e.text;
                                  -			var start = e.start;
                                  -			var removedCharCount = e.removedCharCount;
                                  -			var addedCharCount = e.addedCharCount;
                                  -			if (this._ignoreUndo) {
                                  -				return;
                                  -			}
                                  -			if (this._undoStart !== undefined && 
                                  -				!((addedCharCount === 1 && removedCharCount === 0 && start === this._undoStart + this._undoText.length) ||
                                  -					(addedCharCount === 0 && removedCharCount === 1 && (((start + 1) === -this._undoStart) || (start === -this._undoStart)))))
                                  -			{
                                  -				this._commitUndo();
                                  -			}
                                  -			if (!this.compoundChange) {
                                  -				if (addedCharCount === 1 && removedCharCount === 0) {
                                  -					if (this._undoStart === undefined) {
                                  -						this._undoStart = start;
                                  -					}
                                  -					this._undoText = this._undoText + newText;
                                  -					return;
                                  -				} else if (addedCharCount === 0 && removedCharCount === 1) {
                                  -					var deleting = this._undoText.length > 0 && -this._undoStart === start;
                                  -					this._undoStart = -start;
                                  -					if (deleting) {
                                  -						this._undoText = this._undoText + this.editor.getText(start, start + removedCharCount);
                                  -					} else {
                                  -						this._undoText = this.editor.getText(start, start + removedCharCount) + this._undoText;
                                  -					}
                                  -					return;
                                  -				}
                                  -			}
                                  -			this.add(new Change(start, newText, this.editor.getText(start, start + removedCharCount)));
                                  -		}
                                  -	};
                                  -	return UndoStack;
                                  -}());
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireNamespace/namespace.js b/branches/flexBox/sandbox/sandbox/requireNamespace/namespace.js
                                  deleted file mode 100644
                                  index 224cfb6a..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireNamespace/namespace.js
                                  +++ /dev/null
                                  @@ -1,86 +0,0 @@
                                  -require.def("scope", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { // no scope needed once lib is a "top-level" module
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading Scope module");
                                  -
                                  -exports.create = function()
                                  -{
                                  -    var newScope = {};
                                  -    
                                  -    var namespace = newScope.namespace = function(namespace, source)
                                  -    {
                                  -        var set = !!source,
                                  -            ns = namespace.replace("/", ".").split("."),
                                  -            object = newScope;
                                  -
                                  -        for(var i=0, l=ns.length, n; n=ns[i]; i++)
                                  -        {
                                  -            if(set)
                                  -                object[n] = i < l-1 ? object[n] || {} : source;
                                  -
                                  -            else if(!object[n])
                                  -                error('Namespace not found: ' + namespace);
                                  -
                                  -            object = object[n];
                                  -        }
                                  -
                                  -        return object;
                                  -    };
                                  -
                                  -    newScope.include = function(name)
                                  -    {
                                  -        var m = require(name);
                                  -        for (var n in m)
                                  -            newScope[n] = m[n];
                                  -    };
                                  -    
                                  -    newScope.imports = function(name)
                                  -    {
                                  -        namespace(name, require(name));
                                  -    };
                                  -
                                  -    return newScope;
                                  -};
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -                    var moduleScope = cjsModule.scope = {
                                  -                        include: function(moduleName) {
                                  -                            var includedModule = req(moduleName);
                                  -                            for (var name in includedModule) {
                                  -                                if (includedModule.hasOwnProperty(name)) {
                                  -                                    moduleScope[name] = includedModule[name];
                                  -                                }
                                  -                            }
                                  -                        },
                                  -                        imports: function(namespace)
                                  -                        {
                                  -                            NS(namespace, require(namespace), moduleScope);
                                  -                        }
                                  -                    };
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Panel.js b/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Panel.js
                                  deleted file mode 100644
                                  index 7da7f67d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Panel.js
                                  +++ /dev/null
                                  @@ -1,44 +0,0 @@
                                  -require.def("Firebug/Panel", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module",
                                  -    "Lib",
                                  -    "Lib/Event"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { with (module.scope) {
                                  -// ************************************************************************************************ 
                                  -
                                  -include("Lib"); // Lib.extend avaiable as extend
                                  -include("Lib/Event"); // Lib.Event.addEvent avaiable as addEvent
                                  -
                                  -console.log("loading Firebug.Panel module");
                                  -
                                  -var Panel =
                                  -{
                                  -    panelNode: null,
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        console.log("calling Firebug.Panel.initialize");
                                  -        
                                  -        // dummy call just to demonstrate loading small pieces of Lib
                                  -        addEvent(this.panelNode, "click");
                                  -    },
                                  -    
                                  -    show: function() {
                                  -        console.log("calling Firebug.Panel.show");
                                  -    },
                                  -    
                                  -    hide: function() {
                                  -        console.log("calling Firebug.Panel.hide");
                                  -    }
                                  -};
                                  -
                                  -return Panel;
                                  -
                                  -// ************************************************************************************************ 
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Script.js b/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Script.js
                                  deleted file mode 100644
                                  index 861ca4fe..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/Firebug/Script.js
                                  +++ /dev/null
                                  @@ -1,37 +0,0 @@
                                  -require.def("Firebug/Script", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module",
                                  -    "Lib",
                                  -    "Firebug/Panel"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { with (module.scope) {
                                  -// ************************************************************************************************ 
                                  -
                                  -include("Lib"); // Lib.extend avaiable as extend
                                  -
                                  -imports("Firebug/Panel"); // Add Firebug.Panel to the module scope
                                  -
                                  -console.log("loading Firebug.Script module");
                                  -
                                  -var Script = extend(Firebug.Panel,
                                  -{
                                  -    initialize: function() {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        console.log("calling Firebug.Script.initialize");
                                  -    },
                                  -    
                                  -    helper: function() {
                                  -        console.log("calling Firebug.Script.helper");
                                  -    }
                                  -});
                                  -
                                  -return Script;
                                  -
                                  -// ************************************************************************************************ 
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/Lib.js b/branches/flexBox/sandbox/sandbox/requireScope/Lib.js
                                  deleted file mode 100644
                                  index f9cb08a0..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/Lib.js
                                  +++ /dev/null
                                  @@ -1,34 +0,0 @@
                                  -require.def("Lib", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { // no scope needed once lib is a "top-level" module
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading Lib module");
                                  -
                                  -exports.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -exports.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/Lib/Domplate.js b/branches/flexBox/sandbox/sandbox/requireScope/Lib/Domplate.js
                                  deleted file mode 100644
                                  index d4c9ce14..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/Lib/Domplate.js
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -require.def("lib/event", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { // no scope needed once lib is a "top-level" module
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading lib.event module");
                                  -
                                  -exports.addEvent = function() {
                                  -    console.log("calling lib.event.addEvent");
                                  -};
                                  -
                                  -exports.removeEvent = function() {
                                  -    console.log("calling lib.event.removeEvent");
                                  -};
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/Lib/Event.js b/branches/flexBox/sandbox/sandbox/requireScope/Lib/Event.js
                                  deleted file mode 100644
                                  index 76e809f7..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/Lib/Event.js
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -require.def("Lib/Event", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { // no scope needed once lib is a "top-level" module
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading Lib.Event module");
                                  -
                                  -exports.addEvent = function() {
                                  -    console.log("calling Lib.Event.addEvent");
                                  -};
                                  -
                                  -exports.removeEvent = function() {
                                  -    console.log("calling Lib.Event.removeEvent");
                                  -};
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/require.js b/branches/flexBox/sandbox/sandbox/requireScope/require.js
                                  deleted file mode 100644
                                  index c4d7999b..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/require.js
                                  +++ /dev/null
                                  @@ -1,1745 +0,0 @@
                                  -/** vim: et:ts=4:sw=4:sts=4
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -//laxbreak is true to allow build pragmas to change some statements.
                                  -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */
                                  -/*global window: false, document: false, navigator: false,
                                  -setTimeout: false, traceDeps: true, clearInterval: false, self: false,
                                  -setInterval: false, importScripts: false, jQuery: false */
                                  -
                                  -
                                  -var require, define;
                                  -(function () {
                                  -    //Change this version number for each release.
                                  -    var version = "0.14.5",
                                  -            empty = {}, s,
                                  -            i, defContextName = "_", contextLoads = [],
                                  -            scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState,
                                  -            readyRegExp = /^(complete|loaded)$/,
                                  -            commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -            cjsRequireRegExp = /require\(["']([\w-_\.\/]+)["']\)/g,
                                  -            main,
                                  -            isBrowser = !!(typeof window !== "undefined" && navigator && document),
                                  -            isWebWorker = !isBrowser && typeof importScripts !== "undefined",
                                  -            ostring = Object.prototype.toString,
                                  -            ap = Array.prototype,
                                  -            aps = ap.slice, scrollIntervalId, req, baseElement,
                                  -            defQueue = [], useInteractive = false, currentlyAddingScript;
                                  -
                                  -    function isFunction(it) {
                                  -        return ostring.call(it) === "[object Function]";
                                  -    }
                                  -
                                  -    //Check for an existing version of require. If so, then exit out. Only allow
                                  -    //one version of require to be active in a page. However, allow for a require
                                  -    //config object, just exit quickly if require is an actual function.
                                  -    if (typeof require !== "undefined") {
                                  -        if (isFunction(require)) {
                                  -            return;
                                  -        } else {
                                  -            //assume it is a config object.
                                  -            cfg = require;
                                  -        }
                                  -    }
                                  -    
                                  -        /**
                                  -     * Calls a method on a plugin. The obj object should have two property,
                                  -     * name: the name of the method to call on the plugin
                                  -     * args: the arguments to pass to the plugin method.
                                  -     */
                                  -    function callPlugin(prefix, context, obj) {
                                  -        //Call the plugin, or load it.
                                  -        var plugin = s.plugins.defined[prefix], waiting;
                                  -        if (plugin) {
                                  -            plugin[obj.name].apply(null, obj.args);
                                  -        } else {
                                  -            //Put the call in the waiting call BEFORE requiring the module,
                                  -            //since the require could be synchronous in some environments,
                                  -            //like builds
                                  -            waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []);
                                  -            waiting.push(obj);
                                  -
                                  -            //Load the module
                                  -            req(["require/" + prefix], context.contextName);
                                  -        }
                                  -    }
                                  -    
                                  -    /**
                                  -     * Convenience method to call main for a require.def call that was put on
                                  -     * hold in the defQueue.
                                  -     */
                                  -    function callDefMain(args, context) {
                                  -        main.apply(req, args);
                                  -        //Mark the module loaded. Must do it here in addition
                                  -        //to doing it in require.def in case a script does
                                  -        //not call require.def
                                  -        context.loaded[args[0]] = true;
                                  -    }
                                  -
                                  -    /**
                                  -     * Used to set up package paths from a packagePaths or packages config object.
                                  -     * @param {Object} packages the object to store the new package config
                                  -     * @param {Array} currentPackages an array of packages to configure
                                  -     * @param {String} [dir] a prefix dir to use.
                                  -     */
                                  -    function configurePackageDir(packages, currentPackages, dir) {
                                  -        var i, location, pkgObj;
                                  -        for (i = 0; (pkgObj = currentPackages[i]); i++) {
                                  -            pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
                                  -            location = pkgObj.location;
                                  -
                                  -            //Add dir to the path, but avoid paths that start with a slash
                                  -            //or have a colon (indicates a protocol)
                                  -            if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
                                  -                pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name);
                                  -            }
                                  -
                                  -            //Normalize package paths.
                                  -            pkgObj.location = pkgObj.location || pkgObj.name;
                                  -            pkgObj.lib = pkgObj.lib || "lib";
                                  -            pkgObj.main = pkgObj.main || "main";
                                  -
                                  -            packages[pkgObj.name] = pkgObj;
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Determine if priority loading is done. If so clear the priorityWait
                                  -     */
                                  -    function isPriorityDone(context) {
                                  -        var priorityDone = true,
                                  -            priorityWait = context.config.priorityWait,
                                  -            priorityName, i;
                                  -        if (priorityWait) {
                                  -            for (i = 0; (priorityName = priorityWait[i]); i++) {
                                  -                if (!context.loaded[priorityName]) {
                                  -                    priorityDone = false;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (priorityDone) {
                                  -                delete context.config.priorityWait;
                                  -            }
                                  -        }
                                  -        return priorityDone;
                                  -    }
                                  -
                                  -    /**
                                  -     * Resumes tracing of dependencies and then checks if everything is loaded.
                                  -     */
                                  -    function resume(context) {
                                  -        var args, i, paused = s.paused;
                                  -        if (context.scriptCount <= 0) {
                                  -            //Synchronous envs will push the number below zero with the
                                  -            //decrement above, be sure to set it back to zero for good measure.
                                  -            //require() calls that also do not end up loading scripts could
                                  -            //push the number negative too.
                                  -            context.scriptCount = 0;
                                  -
                                  -            //Make sure any remaining defQueue items get properly processed.
                                  -            while (defQueue.length) {
                                  -                args = defQueue.shift();
                                  -                if (args[0] === null) {
                                  -                    req.onError(new Error('Mismatched anonymous require.def modules'));
                                  -                } else {
                                  -                    callDefMain(args, context);
                                  -                }
                                  -            }
                                  -
                                  -            //Skip the resume if current context is in priority wait.
                                  -            if (context.config.priorityWait && !isPriorityDone(context)) {
                                  -                return;
                                  -            }
                                  -
                                  -            if (paused.length) {
                                  -                for (i = 0; (args = paused[i]); i++) {
                                  -                    req.checkDeps.apply(req, args);
                                  -                }
                                  -            }
                                  -
                                  -            req.checkLoaded(s.ctxName);
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Main entry point.
                                  -     *
                                  -     * If the only argument to require is a string, then the module that
                                  -     * is represented by that string is fetched for the appropriate context.
                                  -     *
                                  -     * If the first argument is an array, then it will be treated as an array
                                  -     * of dependency string names to fetch. An optional function callback can
                                  -     * be specified to execute when all of those dependencies are available.
                                  -     */
                                  -    require = function (deps, callback, contextName, relModuleName) {
                                  -        var context, config;
                                  -        if (typeof deps === "string" && !isFunction(callback)) {
                                  -            //Just return the module wanted. In this scenario, the
                                  -            //second arg (if passed) is just the contextName.
                                  -            return require.get(deps, callback, contextName, relModuleName);
                                  -        }
                                  -        // Dependencies first
                                  -        if (!require.isArray(deps)) {
                                  -            // deps is a config object
                                  -            config = deps;
                                  -            if (require.isArray(callback)) {
                                  -                // Adjust args if there are dependencies
                                  -                deps = callback;
                                  -                callback = contextName;
                                  -                contextName = relModuleName;
                                  -                relModuleName = arguments[4];
                                  -            } else {
                                  -                deps = [];
                                  -            }
                                  -        }
                                  -
                                  -        main(null, deps, callback, config, contextName, relModuleName);
                                  -
                                  -        //If the require call does not trigger anything new to load,
                                  -        //then resume the dependency processing. Context will be undefined
                                  -        //on first run of require.
                                  -        context = s.contexts[(contextName || (config && config.context) || s.ctxName)];
                                  -        if (context && context.scriptCount === 0) {
                                  -            resume(context);
                                  -        }
                                  -        //Returning undefined for Spidermonky strict checking in Komodo
                                  -        return undefined;
                                  -    };
                                  -
                                  -    //Alias for caja compliance internally -
                                  -    //specifically: "Dynamically computed names should use require.async()"
                                  -    //even though this spec isn't really decided on.
                                  -    //Since it is here, use this alias to make typing shorter.
                                  -    req = require;
                                  -
                                  -    /**
                                  -     * Any errors that require explicitly generates will be passed to this
                                  -     * function. Intercept/override it if you want custom error handling.
                                  -     * If you do override it, this method should *always* throw an error
                                  -     * to stop the execution flow correctly. Otherwise, other weird errors
                                  -     * will occur.
                                  -     * @param {Error} err the error object.
                                  -     */
                                  -    req.onError = function (err) {
                                  -        throw err;
                                  -    };
                                  -
                                  -    /**
                                  -     * The function that handles definitions of modules. Differs from
                                  -     * require() in that a string for the module should be the first argument,
                                  -     * and the function to execute after dependencies are loaded should
                                  -     * return a value to define the module corresponding to the first argument's
                                  -     * name.
                                  -     */
                                  -    define = req.def = function (name, deps, callback, contextName) {
                                  -        var i, scripts, script, node = currentlyAddingScript;
                                  -
                                  -        //Allow for anonymous functions
                                  -        if (typeof name !== 'string') {
                                  -            //Adjust args appropriately
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = name;
                                  -            name = null;
                                  -        }
                                  -
                                  -        //This module may not have dependencies
                                  -        if (!req.isArray(deps)) {
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = [];
                                  -        }
                                  -
                                  -        //If no name, and callback is a function, then figure out if it a
                                  -        //CommonJS thing with dependencies.
                                  -        if (!name && !deps.length && req.isFunction(callback)) {
                                  -            //Remove comments from the callback string,
                                  -            //look for require calls, and pull them into the dependencies.
                                  -            callback
                                  -                .toString()
                                  -                .replace(commentRegExp, "")
                                  -                .replace(cjsRequireRegExp, function (match, dep) {
                                  -                    deps.push(dep);
                                  -                });
                                  -
                                  -            //May be a CommonJS thing even without require calls, but still
                                  -            //could use exports, and such, so always add those as dependencies.
                                  -            //This is a bit wasteful for RequireJS modules that do not need
                                  -            //an exports or module object, but erring on side of safety.
                                  -            //REQUIRES the function to expect the CommonJS variables in the
                                  -            //order listed below.
                                  -            deps = ["require", "exports", "module"].concat(deps);
                                  -        }
                                  -
                                  -        //If in IE 6-8 and hit an anonymous require.def call, do the interactive/
                                  -        //currentlyAddingScript scripts stuff.
                                  -        if (!name && useInteractive) {
                                  -            scripts = document.getElementsByTagName('script');
                                  -            for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -                if (script.readyState === 'interactive') {
                                  -                    node = script;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (!node) {
                                  -                req.onError(new Error("ERROR: No matching script interactive for " + callback));
                                  -            }
                                  -
                                  -            name = node.getAttribute("data-requiremodule");
                                  -        }
                                  -
                                  -        if (typeof name === 'string') {
                                  -            //Do not try to auto-register a jquery later.
                                  -            //Do this work here and in main, since for IE/useInteractive, this function
                                  -            //is the earliest touch-point.
                                  -            s.contexts[s.ctxName].jQueryDef = (name === "jquery");
                                  -        }
                                  -
                                  -        //Always save off evaluating the def call until the script onload handler.
                                  -        //This allows multiple modules to be in a file without prematurely
                                  -        //tracing dependencies, and allows for anonymous module support,
                                  -        //where the module name is not known until the script onload event
                                  -        //occurs.
                                  -        defQueue.push([name, deps, callback, null, contextName]);
                                  -    };
                                  -
                                  -    main = function (name, deps, callback, config, contextName, relModuleName) {
                                  -        //Grab the context, or create a new one for the given context name.
                                  -        var context, newContext, loaded, pluginPrefix,
                                  -            canSetContext, prop, newLength, outDeps, mods, paths, index, i,
                                  -            deferMods, deferModArgs, lastModArg, waitingName, packages,
                                  -            packagePaths;
                                  -
                                  -        contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName);
                                  -        context = s.contexts[contextName];
                                  -
                                  -        if (name) {
                                  -                        // Pull off any plugin prefix.
                                  -            index = name.indexOf("!");
                                  -            if (index !== -1) {
                                  -                pluginPrefix = name.substring(0, index);
                                  -                name = name.substring(index + 1, name.length);
                                  -            } else {
                                  -                //Could be that the plugin name should be auto-applied.
                                  -                //Used by i18n plugin to enable anonymous i18n modules, but
                                  -                //still associating the auto-generated name with the i18n plugin.
                                  -                pluginPrefix = context.defPlugin[name];
                                  -            }
                                  -
                                  -            
                                  -            //If module already defined for context, or already waiting to be
                                  -            //evaluated, leave.
                                  -            waitingName = context.waiting[name];
                                  -            if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //If nothing is waiting on being loaded in the current context,
                                  -            //then switch s.ctxName to current contextName.
                                  -            loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded);
                                  -            canSetContext = true;
                                  -            if (loaded) {
                                  -                for (prop in loaded) {
                                  -                    if (!(prop in empty)) {
                                  -                        if (!loaded[prop]) {
                                  -                            canSetContext = false;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (canSetContext) {
                                  -                s.ctxName = contextName;
                                  -            }
                                  -        }
                                  -
                                  -        if (!context) {
                                  -            newContext = {
                                  -                contextName: contextName,
                                  -                config: {
                                  -                    waitSeconds: 7,
                                  -                    baseUrl: s.baseUrl || "./",
                                  -                    paths: {},
                                  -                    packages: {}
                                  -                },
                                  -                waiting: [],
                                  -                specified: {
                                  -                    "require": true,
                                  -                    "exports": true,
                                  -                    "module": true
                                  -                },
                                  -                loaded: {},
                                  -                scriptCount: 0,
                                  -                urlFetched: {},
                                  -                defPlugin: {},
                                  -                defined: {},
                                  -                modifiers: {}
                                  -            };
                                  -
                                  -                        if (s.plugins.newContext) {
                                  -                s.plugins.newContext(newContext);
                                  -            }
                                  -            
                                  -            context = s.contexts[contextName] = newContext;
                                  -        }
                                  -
                                  -        //If have a config object, update the context's config object with
                                  -        //the config values.
                                  -        if (config) {
                                  -            //Make sure the baseUrl ends in a slash.
                                  -            if (config.baseUrl) {
                                  -                if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") {
                                  -                    config.baseUrl += "/";
                                  -                }
                                  -            }
                                  -
                                  -            //Save off the paths and packages since they require special processing,
                                  -            //they are additive.
                                  -            paths = context.config.paths;
                                  -            packages = context.config.packages;
                                  -
                                  -            //Mix in the config values, favoring the new values over
                                  -            //existing ones in context.config.
                                  -            req.mixin(context.config, config, true);
                                  -
                                  -            //Adjust paths if necessary.
                                  -            if (config.paths) {
                                  -                for (prop in config.paths) {
                                  -                    if (!(prop in empty)) {
                                  -                        paths[prop] = config.paths[prop];
                                  -                    }
                                  -                }
                                  -                context.config.paths = paths;
                                  -            }
                                  -
                                  -            packagePaths = config.packagePaths;
                                  -            if (packagePaths || config.packages) {
                                  -                //Convert packagePaths into a packages config.
                                  -                if (packagePaths) {
                                  -                    for (prop in packagePaths) {
                                  -                        if (!(prop in empty)) {
                                  -                            configurePackageDir(packages, packagePaths[prop], prop);
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Adjust packages if necessary.
                                  -                if (config.packages) {
                                  -                    configurePackageDir(packages, config.packages);
                                  -                }
                                  -
                                  -                //Done with modifications, assing packages back to context config
                                  -                context.config.packages = packages;
                                  -            }
                                  -
                                  -            //If priority loading is in effect, trigger the loads now
                                  -            if (config.priority) {
                                  -                //Create a separate config property that can be
                                  -                //easily tested for config priority completion.
                                  -                //Do this instead of wiping out the config.priority
                                  -                //in case it needs to be inspected for debug purposes later.
                                  -                req(config.priority);
                                  -                context.config.priorityWait = config.priority;
                                  -            }
                                  -
                                  -            //If a deps array or a config callback is specified, then call
                                  -            //require with those args. This is useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.deps || config.callback) {
                                  -                req(config.deps || [], config.callback);
                                  -            }
                                  -
                                  -                        //Set up ready callback, if asked. Useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.ready) {
                                  -                req.ready(config.ready);
                                  -            }
                                  -            
                                  -            //If it is just a config block, nothing else,
                                  -            //then return.
                                  -            if (!deps) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Normalize dependency strings: need to determine if they have
                                  -        //prefixes and to also normalize any relative paths. Replace the deps
                                  -        //array of strings with an array of objects.
                                  -        if (deps) {
                                  -            outDeps = deps;
                                  -            deps = [];
                                  -            for (i = 0; i < outDeps.length; i++) {
                                  -                deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context);
                                  -            }
                                  -        }
                                  -
                                  -        //Store the module for later evaluation
                                  -        newLength = context.waiting.push({
                                  -            name: name,
                                  -            deps: deps,
                                  -            callback: callback
                                  -        });
                                  -
                                  -        if (name) {
                                  -            //Store index of insertion for quick lookup
                                  -            context.waiting[name] = newLength - 1;
                                  -
                                  -            //Mark the module as specified so no need to fetch it again.
                                  -            //Important to set specified here for the
                                  -            //pause/resume case where there are multiple modules in a file.
                                  -            context.specified[name] = true;
                                  -
                                  -                        //Load any modifiers for the module.
                                  -            mods = context.modifiers[name];
                                  -            if (mods) {
                                  -                req(mods, contextName);
                                  -                deferMods = mods.__deferMods;
                                  -                if (deferMods) {
                                  -                    for (i = 0; i < deferMods.length; i++) {
                                  -                        deferModArgs = deferMods[i];
                                  -
                                  -                        //Add the context name to the def call.
                                  -                        lastModArg = deferModArgs[deferModArgs.length - 1];
                                  -                        if (lastModArg === undefined) {
                                  -                            deferModArgs[deferModArgs.length - 1] = contextName;
                                  -                        } else if (typeof lastModArg === "string") {
                                  -                            deferMods.push(contextName);
                                  -                        }
                                  -
                                  -                        require.def.apply(require, deferModArgs);
                                  -                    }
                                  -                }
                                  -            }
                                  -                    }
                                  -
                                  -        //If the callback is not an actual function, it means it already
                                  -        //has the definition of the module as a literal value.
                                  -        if (name && callback && !req.isFunction(callback)) {
                                  -            context.defined[name] = callback;
                                  -        }
                                  -
                                  -        //If a pluginPrefix is available, call the plugin, or load it.
                                  -                if (pluginPrefix) {
                                  -            callPlugin(pluginPrefix, context, {
                                  -                name: "require",
                                  -                args: [name, deps, callback, context]
                                  -            });
                                  -        }
                                  -        
                                  -        //Hold on to the module until a script load or other adapter has finished
                                  -        //evaluating the whole file. This helps when a file has more than one
                                  -        //module in it -- dependencies are not traced and fetched until the whole
                                  -        //file is processed.
                                  -        s.paused.push([pluginPrefix, name, deps, context]);
                                  -
                                  -        //Set loaded here for modules that are also loaded
                                  -        //as part of a layer, where onScriptLoad is not fired
                                  -        //for those cases. Do this after the inline define and
                                  -        //dependency tracing is done.
                                  -        //Also check if auto-registry of jQuery needs to be skipped.
                                  -        if (name) {
                                  -            context.loaded[name] = true;
                                  -            context.jQueryDef = (name === "jquery");
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Simple function to mix in properties from source into target,
                                  -     * but only if target does not already have a property of the same name.
                                  -     */
                                  -    req.mixin = function (target, source, force) {
                                  -        for (var prop in source) {
                                  -            if (!(prop in empty) && (!(prop in target) || force)) {
                                  -                target[prop] = source[prop];
                                  -            }
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    req.version = version;
                                  -
                                  -    //Set up page state.
                                  -    s = req.s = {
                                  -        ctxName: defContextName,
                                  -        contexts: {},
                                  -        paused: [],
                                  -                plugins: {
                                  -            defined: {},
                                  -            callbacks: {},
                                  -            waiting: {}
                                  -        },
                                  -                //Stores a list of URLs that should not get async script tag treatment.
                                  -        skipAsync: {},
                                  -        isBrowser: isBrowser,
                                  -        isPageLoaded: !isBrowser,
                                  -        readyCalls: [],
                                  -        doc: isBrowser ? document : null
                                  -    };
                                  -
                                  -    req.isBrowser = s.isBrowser;
                                  -    if (isBrowser) {
                                  -        s.head = document.getElementsByTagName("head")[0];
                                  -        //If BASE tag is in play, using appendChild is a problem for IE6.
                                  -        //When that browser dies, this can be removed. Details in this jQuery bug:
                                  -        //http://dev.jquery.com/ticket/2709
                                  -        baseElement = document.getElementsByTagName("base")[0];
                                  -        if (baseElement) {
                                  -            s.head = baseElement.parentNode;
                                  -        }
                                  -    }
                                  -
                                  -        /**
                                  -     * Sets up a plugin callback name. Want to make it easy to test if a plugin
                                  -     * needs to be called for a certain lifecycle event by testing for
                                  -     * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event
                                  -     * if there is a real plugin that registers for it.
                                  -     */
                                  -    function makePluginCallback(name, returnOnTrue) {
                                  -        var cbs = s.plugins.callbacks[name] = [];
                                  -        s.plugins[name] = function () {
                                  -            for (var i = 0, cb; (cb = cbs[i]); i++) {
                                  -                if (cb.apply(null, arguments) === true && returnOnTrue) {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            return false;
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Registers a new plugin for require.
                                  -     */
                                  -    req.plugin = function (obj) {
                                  -        var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks,
                                  -            waiting = s.plugins.waiting[prefix], generics,
                                  -            defined = s.plugins.defined, contexts = s.contexts, context;
                                  -
                                  -        //Do not allow redefinition of a plugin, there may be internal
                                  -        //state in the plugin that could be lost.
                                  -        if (defined[prefix]) {
                                  -            return req;
                                  -        }
                                  -
                                  -        //Save the plugin.
                                  -        defined[prefix] = obj;
                                  -
                                  -        //Set up plugin callbacks for methods that need to be generic to
                                  -        //require, for lifecycle cases where it does not care about a particular
                                  -        //plugin, but just that some plugin work needs to be done.
                                  -        generics = ["newContext", "isWaiting", "orderDeps"];
                                  -        for (i = 0; (prop = generics[i]); i++) {
                                  -            if (!s.plugins[prop]) {
                                  -                makePluginCallback(prop, prop === "isWaiting");
                                  -            }
                                  -            cbs[prop].push(obj[prop]);
                                  -        }
                                  -
                                  -        //Call newContext for any contexts that were already created.
                                  -        if (obj.newContext) {
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    obj.newContext(context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If there are waiting requests for a plugin, execute them now.
                                  -        if (waiting) {
                                  -            for (i = 0; (call = waiting[i]); i++) {
                                  -                if (obj[call.name]) {
                                  -                    obj[call.name].apply(null, call.args);
                                  -                }
                                  -            }
                                  -            delete s.plugins.waiting[prefix];
                                  -        }
                                  -
                                  -        return req;
                                  -    };
                                  -    
                                  -    /**
                                  -     * As of jQuery 1.4.3, it supports a readyWait property that will hold off
                                  -     * calling jQuery ready callbacks until all scripts are loaded. Be sure
                                  -     * to track it if readyWait is available. Also, since jQuery 1.4.3 does
                                  -     * not register as a module, need to do some global inference checking.
                                  -     * Even if it does register as a module, not guaranteed to be the precise
                                  -     * name of the global. If a jQuery is tracked for this context, then go
                                  -     * ahead and register it as a module too, if not already in process.
                                  -     */
                                  -    function jQueryCheck(context, jqCandidate) {
                                  -        if (!context.jQuery) {
                                  -            var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
                                  -            if ($ && "readyWait" in $) {
                                  -                context.jQuery = $;
                                  -
                                  -                //Manually create a "jquery" module entry if not one already
                                  -                //or in process.
                                  -                if (!context.defined.jquery && !context.jQueryDef) {
                                  -                    context.defined.jquery = $;
                                  -                }
                                  -
                                  -                //Make sure 
                                  -                if (context.scriptCount) {
                                  -                    $.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Internal method used by environment adapters to complete a load event.
                                  -     * A load event could be a script load or just a load pass from a synchronous
                                  -     * load call.
                                  -     * @param {String} moduleName the name of the module to potentially complete.
                                  -     * @param {Object} context the context object
                                  -     */
                                  -    req.completeLoad = function (moduleName, context) {
                                  -        //If there is a waiting require.def call
                                  -        var args;
                                  -        while (defQueue.length) {
                                  -            args = defQueue.shift();
                                  -            if (args[0] === null) {
                                  -                args[0] = moduleName;
                                  -                break;
                                  -            } else if (args[0] === moduleName) {
                                  -                //Found matching require.def call for this script!
                                  -                break;
                                  -            } else {
                                  -                //Some other named require.def call, most likely the result
                                  -                //of a build layer that included many require.def calls.
                                  -                callDefMain(args, context);
                                  -            }
                                  -        }
                                  -        if (args) {
                                  -            callDefMain(args, context);
                                  -        }
                                  -
                                  -        //Mark the script as loaded. Note that this can be different from a
                                  -        //moduleName that maps to a require.def call. This line is important
                                  -        //for traditional browser scripts.
                                  -        context.loaded[moduleName] = true;
                                  -
                                  -        //If a global jQuery is defined, check for it. Need to do it here
                                  -        //instead of main() since stock jQuery does not register as
                                  -        //a module via define.
                                  -        jQueryCheck(context);
                                  -
                                  -        context.scriptCount -= 1;
                                  -        resume(context);
                                  -    };
                                  -
                                  -    /**
                                  -     * Legacy function, remove at some point
                                  -     */
                                  -    req.pause = req.resume = function () {};
                                  -
                                  -    /**
                                  -     * Trace down the dependencies to see if they are loaded. If not, trigger
                                  -     * the load.
                                  -     * @param {String} pluginPrefix the plugin prefix, if any associated with the name.
                                  -     *
                                  -     * @param {String} name: the name of the module that has the dependencies.
                                  -     *
                                  -     * @param {Array} deps array of dependencies.
                                  -     *
                                  -     * @param {Object} context: the loading context.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkDeps = function (pluginPrefix, name, deps, context) {
                                  -        //Figure out if all the modules are loaded. If the module is not
                                  -        //being loaded or already loaded, add it to the "to load" list,
                                  -        //and request it to be loaded.
                                  -        var i, dep;
                                  -
                                  -        if (pluginPrefix) {
                                  -                        callPlugin(pluginPrefix, context, {
                                  -                name: "checkDeps",
                                  -                args: [name, deps, context]
                                  -            });
                                  -                    } else {
                                  -            for (i = 0; (dep = deps[i]); i++) {
                                  -                if (!context.specified[dep.fullName]) {
                                  -                    context.specified[dep.fullName] = true;
                                  -
                                  -                    //Reset the start time to use for timeouts
                                  -                    context.startTime = (new Date()).getTime();
                                  -
                                  -                    //If a plugin, call its load method.
                                  -                    if (dep.prefix) {
                                  -                                                callPlugin(dep.prefix, context, {
                                  -                            name: "load",
                                  -                            args: [dep.name, context.contextName]
                                  -                        });
                                  -                                            } else {
                                  -                        req.load(dep.name, context.contextName);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -        /**
                                  -     * Register a module that modifies another module. The modifier will
                                  -     * only be called once the target module has been loaded.
                                  -     *
                                  -     * First syntax:
                                  -     *
                                  -     * require.modify({
                                  -     *     "some/target1": "my/modifier1",
                                  -     *     "some/target2": "my/modifier2",
                                  -     * });
                                  -     *
                                  -     * With this syntax, the my/modifier1 will only be loaded when
                                  -     * "some/target1" is loaded.
                                  -     *
                                  -     * Second syntax, defining a modifier.
                                  -     *
                                  -     * require.modify("some/target1", "my/modifier",
                                  -     *                        ["some/target1", "some/other"],
                                  -     *                        function (target, other) {
                                  -     *                            //Modify properties of target here.
                                  -     *                            Only properties of target can be modified, but
                                  -     *                            target cannot be replaced.
                                  -     *                        }
                                  -     * );
                                  -     */
                                  -    req.modify = function (target, name, deps, callback, contextName) {
                                  -        var prop, modifier, list,
                                  -                cName = (typeof target === "string" ? contextName : name) || s.ctxName,
                                  -                context = s.contexts[cName],
                                  -                mods = context.modifiers;
                                  -
                                  -        if (typeof target === "string") {
                                  -            //A modifier module.
                                  -            //First store that it is a modifier.
                                  -            list = mods[target] || (mods[target] = []);
                                  -            if (!list[name]) {
                                  -                list.push(name);
                                  -                list[name] = true;
                                  -            }
                                  -
                                  -            //Trigger the normal module definition logic if the target
                                  -            //is already in the system.
                                  -            if (context.specified[target]) {
                                  -                req.def(name, deps, callback, contextName);
                                  -            } else {
                                  -                //Hold on to the execution/dependency checks for the modifier
                                  -                //until the target is fetched.
                                  -                (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]);
                                  -            }
                                  -        } else {
                                  -            //A list of modifiers. Save them for future reference.
                                  -            for (prop in target) {
                                  -                if (!(prop in empty)) {
                                  -                    //Store the modifier for future use.
                                  -                    modifier = target[prop];
                                  -                    list = mods[prop] || (context.modifiers[prop] = []);
                                  -                    if (!list[modifier]) {
                                  -                        list.push(modifier);
                                  -                        list[modifier] = true;
                                  -
                                  -                        if (context.specified[prop]) {
                                  -                            //Load the modifier right away.
                                  -                            req([modifier], cName);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    req.isArray = function (it) {
                                  -        return ostring.call(it) === "[object Array]";
                                  -    };
                                  -
                                  -    req.isFunction = isFunction;
                                  -
                                  -    /**
                                  -     * Gets one module's exported value. This method is used by require().
                                  -     * It is broken out as a separate function to allow a host environment
                                  -     * shim to overwrite this function with something appropriate for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} [contextName] the name of the context to use. Uses
                                  -     * default context if no contextName is provided. You should never
                                  -     * pass the contextName explicitly -- it is handled by the require() code.
                                  -     * @param {String} [relModuleName] a module name to use for relative
                                  -     * module name lookups. You should never pass this argument explicitly --
                                  -     * it is handled by the require() code.
                                  -     *
                                  -     * @returns {Object} the exported module value.
                                  -     */
                                  -    req.get = function (moduleName, contextName, relModuleName) {
                                  -        if (moduleName === "require" || moduleName === "exports" || moduleName === "module") {
                                  -            req.onError(new Error("Explicit require of " + moduleName + " is not allowed."));
                                  -        }
                                  -        contextName = contextName || s.ctxName;
                                  -
                                  -        var ret, context = s.contexts[contextName];
                                  -
                                  -        //Normalize module name, if it contains . or ..
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        ret = context.defined[moduleName];
                                  -        if (ret === undefined) {
                                  -            req.onError(new Error("require: module name '" +
                                  -                        moduleName +
                                  -                        "' has not been loaded yet for context: " +
                                  -                        contextName));
                                  -        }
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Makes the request to load a module. May be an async load depending on
                                  -     * the environment and the circumstance of the load call. Override this
                                  -     * method in a host environment shim to do something specific for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} contextName the name of the context to use.
                                  -     */
                                  -    req.load = function (moduleName, contextName) {
                                  -        var context = s.contexts[contextName],
                                  -            urlFetched = context.urlFetched,
                                  -            loaded = context.loaded, url;
                                  -        s.isDone = false;
                                  -
                                  -        //Only set loaded to false for tracking if it has not already been set.
                                  -        if (!loaded[moduleName]) {
                                  -            loaded[moduleName] = false;
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //Not in the right context now, hold on to it until
                                  -            //the current context finishes all its loading.
                                  -            contextLoads.push(arguments);
                                  -        } else {
                                  -            //First derive the path name for the module.
                                  -            url = req.nameToUrl(moduleName, null, contextName);
                                  -            if (!urlFetched[url]) {
                                  -                context.scriptCount += 1;
                                  -                req.attach(url, contextName, moduleName);
                                  -                urlFetched[url] = true;
                                  -
                                  -                //If tracking a jQuery, then make sure its readyWait
                                  -                //is incremented to prevent its ready callbacks from
                                  -                //triggering too soon.
                                  -                if (context.jQuery && !context.jQueryIncremented) {
                                  -                    context.jQuery.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    req.jsExtRegExp = /\.js$/;
                                  -
                                  -    /**
                                  -     * Given a relative module name, like ./something, normalize it to
                                  -     * a real name that can be mapped to a path.
                                  -     * @param {String} name the relative name
                                  -     * @param {String} baseName a real name that the name arg is relative
                                  -     * to.
                                  -     * @param {Object} context
                                  -     * @returns {String} normalized name
                                  -     */
                                  -    req.normalizeName = function (name, baseName, context) {
                                  -        //Adjust any relative paths.
                                  -        var part;
                                  -        if (name.charAt(0) === ".") {
                                  -            if (!baseName) {
                                  -                req.onError(new Error("Cannot normalize module name: " +
                                  -                            name +
                                  -                            ", no relative module name available."));
                                  -            }
                                  -
                                  -            if (context.config.packages[baseName]) {
                                  -                //If the baseName is a package name, then just treat it as one
                                  -                //name to concat the name with.
                                  -                baseName = [baseName];
                                  -            } else {
                                  -                //Convert baseName to array, and lop off the last part,
                                  -                //so that . matches that "directory" and not name of the baseName's
                                  -                //module. For instance, baseName of "one/two/three", maps to
                                  -                //"one/two/three.js", but we want the directory, "one/two" for
                                  -                //this normalization.
                                  -                baseName = baseName.split("/");
                                  -                baseName = baseName.slice(0, baseName.length - 1);
                                  -            }
                                  -
                                  -            name = baseName.concat(name.split("/"));
                                  -            for (i = 0; (part = name[i]); i++) {
                                  -                if (part === ".") {
                                  -                    name.splice(i, 1);
                                  -                    i -= 1;
                                  -                } else if (part === "..") {
                                  -                    name.splice(i - 1, 2);
                                  -                    i -= 2;
                                  -                }
                                  -            }
                                  -            name = name.join("/");
                                  -        }
                                  -        return name;
                                  -    };
                                  -
                                  -    /**
                                  -     * Splits a name into a possible plugin prefix and
                                  -     * the module name. If baseName is provided it will
                                  -     * also normalize the name via require.normalizeName()
                                  -     * 
                                  -     * @param {String} name the module name
                                  -     * @param {String} [baseName] base name that name is
                                  -     * relative to.
                                  -     * @param {Object} context
                                  -     *
                                  -     * @returns {Object} with properties, 'prefix' (which
                                  -     * may be null), 'name' and 'fullName', which is a combination
                                  -     * of the prefix (if it exists) and the name.
                                  -     */
                                  -    req.splitPrefix = function (name, baseName, context) {
                                  -        var index = name.indexOf("!"), prefix = null;
                                  -        if (index !== -1) {
                                  -            prefix = name.substring(0, index);
                                  -            name = name.substring(index + 1, name.length);
                                  -        }
                                  -
                                  -        //Account for relative paths if there is a base name.
                                  -        name = req.normalizeName(name, baseName, context);
                                  -
                                  -        return {
                                  -            prefix: prefix,
                                  -            name: name,
                                  -            fullName: prefix ? prefix + "!" + name : name
                                  -        };
                                  -    };
                                  -
                                  -    /**
                                  -     * Converts a module name to a file path.
                                  -     */
                                  -    req.nameToUrl = function (moduleName, ext, contextName, relModuleName) {
                                  -        var paths, packages, pkg, pkgPath, syms, i, parentModule, url,
                                  -            context = s.contexts[contextName],
                                  -            config = context.config;
                                  -
                                  -        //Normalize module name if have a base relative module name to work from.
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        //If a colon is in the URL, it indicates a protocol is used and it is just
                                  -        //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
                                  -        //The slash is important for protocol-less URLs as well as full paths.
                                  -        if (moduleName.indexOf(":") !== -1 || moduleName.charAt(0) === '/' || req.jsExtRegExp.test(moduleName)) {
                                  -            //Just a plain path, not module name lookup, so just return it.
                                  -            //Add extension if it is included. This is a bit wonky, only non-.js things pass
                                  -            //an extension, this method probably needs to be reworked.
                                  -            url = moduleName + (ext ? ext : "");
                                  -        } else {
                                  -            //A module that needs to be converted to a path.
                                  -            paths = config.paths;
                                  -            packages = config.packages;
                                  -
                                  -            syms = moduleName.split("/");
                                  -            //For each module name segment, see if there is a path
                                  -            //registered for it. Start with most specific name
                                  -            //and work up from it.
                                  -            for (i = syms.length; i > 0; i--) {
                                  -                parentModule = syms.slice(0, i).join("/");
                                  -                if (paths[parentModule]) {
                                  -                    syms.splice(0, i, paths[parentModule]);
                                  -                    break;
                                  -                } else if ((pkg = packages[parentModule])) {
                                  -                    //pkg can have just a string value to the path
                                  -                    //or can be an object with props:
                                  -                    //main, lib, name, location.
                                  -                    pkgPath = pkg.location + '/' + pkg.lib;
                                  -                    //If module name is just the package name, then looking
                                  -                    //for the main module.
                                  -                    if (moduleName === pkg.name) {
                                  -                        pkgPath += '/' + pkg.main;
                                  -                    }
                                  -                    syms.splice(0, i, pkgPath);
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -            //Join the path parts together, then figure out if baseUrl is needed.
                                  -            url = syms.join("/") + (ext || ".js");
                                  -            url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
                                  -        }
                                  -        return config.urlArgs ? url +
                                  -                                ((url.indexOf('?') === -1 ? '?' : '&') +
                                  -                                 config.urlArgs) : url;
                                  -    };
                                  -
                                  -    /**
                                  -     * Checks if all modules for a context are loaded, and if so, evaluates the
                                  -     * new ones in right dependency order.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkLoaded = function (contextName) {
                                  -        var context = s.contexts[contextName || s.ctxName],
                                  -                waitInterval = context.config.waitSeconds * 1000,
                                  -                //It is possible to disable the wait interval by using waitSeconds of 0.
                                  -                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
                                  -                loaded, defined = context.defined,
                                  -                modifiers = context.modifiers, waiting, noLoads = "",
                                  -                hasLoadedProp = false, stillLoading = false, prop,
                                  -
                                  -                                pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps,
                                  -                
                                  -                i, module, allDone, loads, loadArgs, err;
                                  -
                                  -        //If already doing a checkLoaded call,
                                  -        //then do not bother checking loaded state.
                                  -        if (context.isCheckLoaded) {
                                  -            return;
                                  -        }
                                  -
                                  -        //Determine if priority loading is done. If so clear the priority. If
                                  -        //not, then do not check
                                  -        if (context.config.priorityWait) {
                                  -            if (isPriorityDone(context)) {
                                  -                //Call resume, since it could have
                                  -                //some waiting dependencies to trace.
                                  -                resume(context);
                                  -            } else {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Signal that checkLoaded is being require, so other calls that could be triggered
                                  -        //by calling a waiting callback that then calls require and then this function
                                  -        //should not proceed. At the end of this function, if there are still things
                                  -        //waiting, then checkLoaded will be called again.
                                  -        context.isCheckLoaded = true;
                                  -
                                  -        //Grab waiting and loaded lists here, since it could have changed since
                                  -        //this function was first called.
                                  -        waiting = context.waiting;
                                  -        loaded = context.loaded;
                                  -
                                  -        //See if anything is still in flight.
                                  -        for (prop in loaded) {
                                  -            if (!(prop in empty)) {
                                  -                hasLoadedProp = true;
                                  -                if (!loaded[prop]) {
                                  -                    if (expired) {
                                  -                        noLoads += prop + " ";
                                  -                    } else {
                                  -                        stillLoading = true;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Check for exit conditions.
                                  -        if (!hasLoadedProp && !waiting.length
                                  -                        && (!pIsWaiting || !pIsWaiting(context))
                                  -                       ) {
                                  -            //If the loaded object had no items, then the rest of
                                  -            //the work below does not need to be done.
                                  -            context.isCheckLoaded = false;
                                  -            return;
                                  -        }
                                  -        if (expired && noLoads) {
                                  -            //If wait time expired, throw error of unloaded modules.
                                  -            err = new Error("require.js load timeout for modules: " + noLoads);
                                  -            err.requireType = "timeout";
                                  -            err.requireModules = noLoads;
                                  -            req.onError(err);
                                  -        }
                                  -        if (stillLoading) {
                                  -            //Something is still waiting to load. Wait for it.
                                  -            context.isCheckLoaded = false;
                                  -            if (isBrowser || isWebWorker) {
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(contextName);
                                  -                }, 50);
                                  -            }
                                  -            return;
                                  -        }
                                  -
                                  -        //Order the dependencies. Also clean up state because the evaluation
                                  -        //of modules might create new loading tasks, so need to reset.
                                  -        //Be sure to call plugins too.
                                  -        context.waiting = [];
                                  -        context.loaded = {};
                                  -
                                  -                //Call plugins to order their dependencies, do their
                                  -        //module definitions.
                                  -        if (pOrderDeps) {
                                  -            pOrderDeps(context);
                                  -        }
                                  -        
                                  -                //Before defining the modules, give priority treatment to any modifiers
                                  -        //for modules that are already defined.
                                  -        for (prop in modifiers) {
                                  -            if (!(prop in empty)) {
                                  -                if (defined[prop]) {
                                  -                    req.execModifiers(prop, {}, waiting, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        //Define the modules, doing a depth first search.
                                  -        for (i = 0; (module = waiting[i]); i++) {
                                  -            req.exec(module, {}, waiting, context);
                                  -        }
                                  -
                                  -        //Indicate checkLoaded is now done.
                                  -        context.isCheckLoaded = false;
                                  -
                                  -        if (context.waiting.length
                                  -                        || (pIsWaiting && pIsWaiting(context))
                                  -                       ) {
                                  -            //More things in this context are waiting to load. They were probably
                                  -            //added while doing the work above in checkLoaded, calling module
                                  -            //callbacks that triggered other require calls.
                                  -            req.checkLoaded(contextName);
                                  -        } else if (contextLoads.length) {
                                  -            //Check for other contexts that need to load things.
                                  -            //First, make sure current context has no more things to
                                  -            //load. After defining the modules above, new require calls
                                  -            //could have been made.
                                  -            loaded = context.loaded;
                                  -            allDone = true;
                                  -            for (prop in loaded) {
                                  -                if (!(prop in empty)) {
                                  -                    if (!loaded[prop]) {
                                  -                        allDone = false;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            if (allDone) {
                                  -                s.ctxName = contextLoads[0][1];
                                  -                loads = contextLoads;
                                  -                //Reset contextLoads in case some of the waiting loads
                                  -                //are for yet another context.
                                  -                contextLoads = [];
                                  -                for (i = 0; (loadArgs = loads[i]); i++) {
                                  -                    req.load.apply(req, loadArgs);
                                  -                }
                                  -            }
                                  -        } else {
                                  -            //Make sure we reset to default context.
                                  -            s.ctxName = defContextName;
                                  -            s.isDone = true;
                                  -            if (req.callReady) {
                                  -                req.callReady();
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper function that creates a setExports function for a "module"
                                  -     * CommonJS dependency. Do this here to avoid creating a closure that
                                  -     * is part of a loop in require.exec.
                                  -     */
                                  -    function makeSetExports(moduleObj) {
                                  -        return function (exports) {
                                  -            moduleObj.exports = exports;
                                  -        };
                                  -    }
                                  -
                                  -    function makeContextModuleFunc(name, contextName, moduleName) {
                                  -        return function () {
                                  -            //A version of a require function that forces a contextName value
                                  -            //and also passes a moduleName value for items that may need to
                                  -            //look up paths relative to the moduleName
                                  -            var args = [].concat(aps.call(arguments, 0));
                                  -            args.push(contextName, moduleName);
                                  -            return (name ? require[name] : require).apply(null, args);
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Helper function that creates a require function object to give to
                                  -     * modules that ask for it as a dependency. It needs to be specific
                                  -     * per module because of the implication of path mappings that may
                                  -     * need to be relative to the module name.
                                  -     */
                                  -    function makeRequire(context, moduleName) {
                                  -        var contextName = context.contextName,
                                  -            modRequire = makeContextModuleFunc(null, contextName, moduleName);
                                  -
                                  -        req.mixin(modRequire, {
                                  -                        modify: makeContextModuleFunc("modify", contextName, moduleName),
                                  -                        def: makeContextModuleFunc("def", contextName, moduleName),
                                  -            get: makeContextModuleFunc("get", contextName, moduleName),
                                  -            nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName),
                                  -            ready: req.ready,
                                  -            context: context,
                                  -            config: context.config,
                                  -            isBrowser: s.isBrowser
                                  -        });
                                  -        return modRequire;
                                  -    }
                                  -
                                  -    /**
                                  -     * Executes the modules in the correct order.
                                  -     * 
                                  -     * @private
                                  -     */
                                  -    req.exec = function (module, traced, waiting, context) {
                                  -        //Some modules are just plain script files, abddo not have a formal
                                  -        //module definition, 
                                  -        if (!module) {
                                  -            //Returning undefined for Spidermonky strict checking in Komodo
                                  -            return undefined;
                                  -        }
                                  -
                                  -        var name = module.name, cb = module.callback, deps = module.deps, j, dep,
                                  -            defined = context.defined, ret, args = [], depModule, cjsModule,
                                  -            usingExports = false, depName;
                                  -
                                  -        //If already traced or defined, do not bother a second time.
                                  -        if (name) {
                                  -            if (traced[name] || name in defined) {
                                  -                return defined[name];
                                  -            }
                                  -
                                  -            //Mark this module as being traced, so that it is not retraced (as in a circular
                                  -            //dependency)
                                  -            traced[name] = true;
                                  -        }
                                  -
                                  -        if (deps) {
                                  -            for (j = 0; (dep = deps[j]); j++) {
                                  -                depName = dep.name;
                                  -                if (depName === "require") {
                                  -                    depModule = makeRequire(context, name);
                                  -                } else if (depName === "exports") {
                                  -                    //CommonJS module spec 1.1
                                  -                    depModule = defined[name] = {};
                                  -                    usingExports = true;
                                  -                } else if (depName === "module") {
                                  -                    //CommonJS module spec 1.1
                                  -                    cjsModule = depModule = {
                                  -                        id: name,
                                  -                        uri: name ? req.nameToUrl(name, null, context.contextName) : undefined
                                  -                    };
                                  -                    cjsModule.setExports = makeSetExports(cjsModule);
                                  -                    
                                  -                    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -                    // TODO: xxxpedro module scope handling hack
                                  -                    var NS = function(namespace, source, root)
                                  -                    {
                                  -                        root = root || window;
                                  -                        
                                  -                        var set = !!source, 
                                  -                            ns = namespace.split("/"),
                                  -                            object = root;
                                  -                        
                                  -                        for(var i=0, l=ns.length, n; n=ns[i]; i++)
                                  -                        {
                                  -                            if(set)
                                  -                                object[n] = i < l-1 ? object[n] || {} : source;
                                  -                                
                                  -                            else if(!object[n])
                                  -                                error('Namespace not found: ' + namespace);
                                  -                    
                                  -                            object = object[n];
                                  -                        }
                                  -                        
                                  -                        return object;
                                  -                    };
                                  -
                                  -                    var moduleScope = cjsModule.scope = {
                                  -                        include: function(moduleName) {
                                  -                            var includedModule = req(moduleName);
                                  -                            for (var name in includedModule) {
                                  -                                if (includedModule.hasOwnProperty(name)) {
                                  -                                    moduleScope[name] = includedModule[name];
                                  -                                }
                                  -                            }
                                  -                        },
                                  -                        imports: function(namespace)
                                  -                        {
                                  -                            NS(namespace, require(namespace), moduleScope);
                                  -                        }
                                  -                    };
                                  -                    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -                    
                                  -                } else {
                                  -                    //Get dependent module. It could not exist, for a circular
                                  -                    //dependency or if the loaded dependency does not actually call
                                  -                    //require. Favor not throwing an error here if undefined because
                                  -                    //we want to allow code that does not use require as a module
                                  -                    //definition framework to still work -- allow a web site to
                                  -                    //gradually update to contained modules. That is more
                                  -                    //important than forcing a throw for the circular dependency case.
                                  -                    depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context));
                                  -                }
                                  -
                                  -                args.push(depModule);
                                  -            }
                                  -        }
                                  -
                                  -        //Call the callback to define the module, if necessary.
                                  -        cb = module.callback;
                                  -        if (cb && req.isFunction(cb)) {
                                  -            ret = req.execCb(name, cb, args);
                                  -            if (name) {
                                  -                //If using exports and the function did not return a value,
                                  -                //and the "module" object for this definition function did not
                                  -                //define an exported value, then use the exports object.
                                  -                if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) {
                                  -                    ret = defined[name];
                                  -                } else {
                                  -                    if (cjsModule && "exports" in cjsModule) {
                                  -                        ret = defined[name] = cjsModule.exports;
                                  -                    } else {
                                  -                        if (name in defined && !usingExports) {
                                  -                            req.onError(new Error(name + " has already been defined"));
                                  -                        }
                                  -                        defined[name] = ret;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -                //Execute modifiers, if they exist.
                                  -        req.execModifiers(name, traced, waiting, context);
                                  -        
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Executes a module callack function. Broken out as a separate function
                                  -     * solely to allow the build system to sequence the files in the built
                                  -     * layer in the right sequence.
                                  -     * @param {String} name the module name.
                                  -     * @param {Function} cb the module callback/definition function.
                                  -     * @param {Array} args The arguments (dependent modules) to pass to callback.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execCb = function (name, cb, args) {
                                  -        return cb.apply(null, args);
                                  -    };
                                  -
                                  -        /**
                                  -     * Executes modifiers for the given module name.
                                  -     * @param {String} target
                                  -     * @param {Object} traced
                                  -     * @param {Object} context
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execModifiers = function (target, traced, waiting, context) {
                                  -        var modifiers = context.modifiers, mods = modifiers[target], mod, i;
                                  -        if (mods) {
                                  -            for (i = 0; i < mods.length; i++) {
                                  -                mod = mods[i];
                                  -                //Not all modifiers define a module, they might collect other modules.
                                  -                //If it is just a collection it will not be in waiting.
                                  -                if (mod in waiting) {
                                  -                    req.exec(waiting[waiting[mod]], traced, waiting, context);
                                  -                }
                                  -            }
                                  -            delete modifiers[target];
                                  -        }
                                  -    };
                                  -    
                                  -    /**
                                  -     * callback for script loads, used to check status of loading.
                                  -     *
                                  -     * @param {Event} evt the event from the browser for the script
                                  -     * that was loaded.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.onScriptLoad = function (evt) {
                                  -        //Using currentTarget instead of target for Firefox 2.0's sake. Not
                                  -        //all old browsers will be supported, but this one was easy enough
                                  -        //to support and still makes sense.
                                  -        var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
                                  -            context;
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = s.contexts[contextName];
                                  -
                                  -            req.completeLoad(moduleName, context);
                                  -
                                  -            //Clean up script binding.
                                  -            if (node.removeEventListener) {
                                  -                node.removeEventListener("load", req.onScriptLoad, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know.
                                  -                node.detachEvent("onreadystatechange", req.onScriptLoad);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Attaches the script represented by the URL to the current
                                  -     * environment. Right now only supports browser loading,
                                  -     * but can be redefined in other environments to do the right thing.
                                  -     * @param {String} url the url of the script to attach.
                                  -     * @param {String} contextName the name of the context that wants the script.
                                  -     * @param {moduleName} the name of the module that is associated with the script.
                                  -     * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
                                  -     * @param {String} [type] optional type, defaults to text/javascript
                                  -     */
                                  -    req.attach = function (url, contextName, moduleName, callback, type) {
                                  -        var node, loaded, context;
                                  -        if (isBrowser) {
                                  -            //In the browser so use a script tag
                                  -            callback = callback || req.onScriptLoad;
                                  -            node = document.createElement("script");
                                  -            node.type = type || "text/javascript";
                                  -            node.charset = "utf-8";
                                  -            //Use async so Gecko does not block on executing the script if something
                                  -            //like a long-polling comet tag is being run first. Gecko likes
                                  -            //to evaluate scripts in DOM order, even for dynamic scripts.
                                  -            //It will fetch them async, but only evaluate the contents in DOM
                                  -            //order, so a long-polling script tag can delay execution of scripts
                                  -            //after it. But telling Gecko we expect async gets us the behavior
                                  -            //we want -- execute it whenever it is finished downloading. Only
                                  -            //Helps Firefox 3.6+
                                  -            //Allow some URLs to not be fetched async. Mostly helps the order!
                                  -            //plugin
                                  -            if (!s.skipAsync[url]) {
                                  -                node.async = true;
                                  -            }
                                  -            node.setAttribute("data-requirecontext", contextName);
                                  -            node.setAttribute("data-requiremodule", moduleName);
                                  -
                                  -            //Set up load listener.
                                  -            if (node.addEventListener) {
                                  -                node.addEventListener("load", callback, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know. IE (at least 6-8) do not fire
                                  -                //script onload right after executing the script, so
                                  -                //we cannot tie the anonymous require.def call to a name.
                                  -                //However, IE reports the script as being in "interactive"
                                  -                //readyState at the time of the require.def call.
                                  -                useInteractive = true;
                                  -                node.attachEvent("onreadystatechange", callback);
                                  -            }
                                  -            node.src = url;
                                  -
                                  -            //For some cache cases in IE 6-8, the script executes before the end
                                  -            //of the appendChild execution, so to tie an anonymous require.def
                                  -            //call to the module name (which is stored on the node), hold on
                                  -            //to a reference to this node, but clear after the DOM insertion.
                                  -            currentlyAddingScript = node;
                                  -            if (baseElement) {
                                  -                s.head.insertBefore(node, baseElement);
                                  -            } else {
                                  -                s.head.appendChild(node);
                                  -            }
                                  -            currentlyAddingScript = null;
                                  -            return node;
                                  -        } else if (isWebWorker) {
                                  -            //In a web worker, use importScripts. This is not a very
                                  -            //efficient use of importScripts, importScripts will block until
                                  -            //its script is downloaded and evaluated. However, if web workers
                                  -            //are in play, the expectation that a build has been done so that
                                  -            //only one script needs to be loaded anyway. This may need to be
                                  -            //reevaluated if other use cases become common.
                                  -            context = s.contexts[contextName];
                                  -            loaded = context.loaded;
                                  -            loaded[moduleName] = false;
                                  -            importScripts(url);
                                  -
                                  -            //Account for anonymous modules
                                  -            req.completeLoad(moduleName, context);
                                  -        }
                                  -        return null;
                                  -    };
                                  -
                                  -    //Determine what baseUrl should be if not already defined via a require config object
                                  -    s.baseUrl = cfg.baseUrl;
                                  -    if (isBrowser && (!s.baseUrl || !s.head)) {
                                  -        //Figure out baseUrl. Get it from the script tag with require.js in it.
                                  -        scripts = document.getElementsByTagName("script");
                                  -        if (cfg.baseUrlMatch) {
                                  -            rePkg = cfg.baseUrlMatch;
                                  -        } else {
                                  -            
                                  -            
                                  -            
                                  -                        rePkg = /(allplugins-)?require\.js(\W|$)/i;
                                  -            
                                  -                    }
                                  -
                                  -        for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -            //Set the "head" where we can append children by
                                  -            //using the script's parent.
                                  -            if (!s.head) {
                                  -                s.head = script.parentNode;
                                  -            }
                                  -
                                  -            //Look for a data-main attribute to set main script for the page
                                  -            //to load.
                                  -            if (!cfg.deps) {
                                  -                dataMain = script.getAttribute('data-main');
                                  -                if (dataMain) {
                                  -                    cfg.deps = [dataMain];
                                  -                }
                                  -            }
                                  -
                                  -            //Using .src instead of getAttribute to get an absolute URL.
                                  -            //While using a relative URL will be fine for script tags, other
                                  -            //URLs used for text! resources that use XHR calls might benefit
                                  -            //from an absolute URL.
                                  -            src = script.src;
                                  -            if (src && !s.baseUrl) {
                                  -                m = src.match(rePkg);
                                  -                if (m) {
                                  -                    s.baseUrl = src.substring(0, m.index);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -        //****** START page load functionality ****************
                                  -    /**
                                  -     * Sets the page as loaded and triggers check for all modules loaded.
                                  -     */
                                  -    req.pageLoaded = function () {
                                  -        if (!s.isPageLoaded) {
                                  -            s.isPageLoaded = true;
                                  -            if (scrollIntervalId) {
                                  -                clearInterval(scrollIntervalId);
                                  -            }
                                  -
                                  -            //Part of a fix for FF < 3.6 where readyState was not set to
                                  -            //complete so libraries like jQuery that check for readyState
                                  -            //after page load where not getting initialized correctly.
                                  -            //Original approach suggested by Andrea Giammarchi:
                                  -            //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
                                  -            //see other setReadyState reference for the rest of the fix.
                                  -            if (setReadyState) {
                                  -                document.readyState = "complete";
                                  -            }
                                  -
                                  -            req.callReady();
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Internal function that calls back any ready functions. If you are
                                  -     * integrating RequireJS with another library without require.ready support,
                                  -     * you can define this method to call your page ready code instead.
                                  -     */
                                  -    req.callReady = function () {
                                  -        var callbacks = s.readyCalls, i, callback, contexts, context, prop;
                                  -
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            if (callbacks.length) {
                                  -                s.readyCalls = [];
                                  -                for (i = 0; (callback = callbacks[i]); i++) {
                                  -                    callback();
                                  -                }
                                  -            }
                                  -
                                  -            //If jQuery with readyWait is being tracked, updated its
                                  -            //readyWait count.
                                  -            contexts = s.contexts;
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    if (context.jQueryIncremented) {
                                  -                        context.jQuery.readyWait -= 1;
                                  -                        context.jQueryIncremented = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Registers functions to call when the page is loaded
                                  -     */
                                  -    req.ready = function (callback) {
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            callback();
                                  -        } else {
                                  -            s.readyCalls.push(callback);
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    if (isBrowser) {
                                  -        if (document.addEventListener) {
                                  -            //Standards. Hooray! Assumption here that if standards based,
                                  -            //it knows about DOMContentLoaded.
                                  -            document.addEventListener("DOMContentLoaded", req.pageLoaded, false);
                                  -            window.addEventListener("load", req.pageLoaded, false);
                                  -            //Part of FF < 3.6 readystate fix (see setReadyState refs for more info)
                                  -            if (!document.readyState) {
                                  -                setReadyState = true;
                                  -                document.readyState = "loading";
                                  -            }
                                  -        } else if (window.attachEvent) {
                                  -            window.attachEvent("onload", req.pageLoaded);
                                  -
                                  -            //DOMContentLoaded approximation, as found by Diego Perini:
                                  -            //http://javascript.nwbox.com/IEContentLoaded/
                                  -            if (self === self.top) {
                                  -                scrollIntervalId = setInterval(function () {
                                  -                    try {
                                  -                        //From this ticket:
                                  -                        //http://bugs.dojotoolkit.org/ticket/11106,
                                  -                        //In IE HTML Application (HTA), such as in a selenium test,
                                  -                        //javascript in the iframe can't see anything outside
                                  -                        //of it, so self===self.top is true, but the iframe is
                                  -                        //not the top window and doScroll will be available
                                  -                        //before document.body is set. Test document.body
                                  -                        //before trying the doScroll trick.
                                  -                        if (document.body) {
                                  -                            document.documentElement.doScroll("left");
                                  -                            req.pageLoaded();
                                  -                        }
                                  -                    } catch (e) {}
                                  -                }, 30);
                                  -            }
                                  -        }
                                  -
                                  -        //Check if document already complete, and if so, just trigger page load
                                  -        //listeners. NOTE: does not work with Firefox before 3.6. To support
                                  -        //those browsers, manually call require.pageLoaded().
                                  -        if (document.readyState === "complete") {
                                  -            req.pageLoaded();
                                  -        }
                                  -    }
                                  -    //****** END page load functionality ****************
                                  -    
                                  -    //Set up default context. If require was a configuration object, use that as base config.
                                  -    req(cfg);
                                  -
                                  -    //If modules are built into require.js, then need to make sure dependencies are
                                  -    //traced. Use a setTimeout in the browser world, to allow all the modules to register
                                  -    //themselves. In a non-browser env, assume that modules are not built into require.js,
                                  -    //which seems odd to do on the server.
                                  -    if (typeof setTimeout !== "undefined") {
                                  -        setTimeout(function () {
                                  -            var ctx = s.contexts[(cfg.context || defContextName)];
                                  -            //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
                                  -            //make sure to hold onto it for readyWait triggering.
                                  -            jQueryCheck(ctx);
                                  -            
                                  -            // TODO: xxxpedro timing issue in FF
                                  -            setTimeout(function(){ resume(ctx); }, 0);
                                  -        }, 0);
                                  -    }
                                  -}());
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/test.html b/branches/flexBox/sandbox/sandbox/requireScope/test.html
                                  deleted file mode 100644
                                  index db7a6598..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/test.html
                                  +++ /dev/null
                                  @@ -1,58 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug=true>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <title></title>
                                  -<script src="https://getfirebug.com/firebug-lite.js"></script>
                                  -<script src="require.js"></script>
                                  -<script>
                                  -require.def("App", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module", 
                                  -    "Firebug/Script"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -var Script = require("Firebug/Script");
                                  -Script.initialize();
                                  -Script.show();
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  -</script>
                                  -  </head>
                                  -  <body>
                                  -    <h1>CommonJS module loader <code>WITH(scope)</code> handling</h1>
                                  -    <p>See source code of <a href="Lib.js">Lib.js</a> and <a href="Firebug/Script.js">Firebug/Script.js</a> for more examples of usage.</p>
                                  -    <p>The code used in this file is:</p>
                                  -    <hr />
                                  -<pre>
                                  -require.def("App", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module", 
                                  -    "Firebug/Script"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -var Script = require("Firebug/Script");
                                  -Script.initialize();
                                  -Script.show();
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  -</pre>
                                  -    <hr />
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/a.js b/branches/flexBox/sandbox/sandbox/requireScope/v2/a.js
                                  deleted file mode 100644
                                  index 5c4fa5a4..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/a.js
                                  +++ /dev/null
                                  @@ -1,22 +0,0 @@
                                  -require.def("a", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module",
                                  -    "scope",
                                  -    "b",
                                  -    "c"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { with( require("scope").create() ) {
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading A module");
                                  -
                                  -include("a");
                                  -include("b");
                                  -
                                  -// ************************************************************************************************ 
                                  -}});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/b.js b/branches/flexBox/sandbox/sandbox/requireScope/v2/b.js
                                  deleted file mode 100644
                                  index 8d2d39bd..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/b.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -require.def("b", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading B module");
                                  -
                                  -exports.b = true;
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/c.js b/branches/flexBox/sandbox/sandbox/requireScope/v2/c.js
                                  deleted file mode 100644
                                  index 80dd6b6e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/c.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -require.def("c", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading C module");
                                  -
                                  -exports.C = true;
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/require.js b/branches/flexBox/sandbox/sandbox/requireScope/v2/require.js
                                  deleted file mode 100644
                                  index c4d7999b..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/require.js
                                  +++ /dev/null
                                  @@ -1,1745 +0,0 @@
                                  -/** vim: et:ts=4:sw=4:sts=4
                                  - * @license RequireJS Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
                                  - * Available via the MIT or new BSD license.
                                  - * see: http://github.com/jrburke/requirejs for details
                                  - */
                                  -//laxbreak is true to allow build pragmas to change some statements.
                                  -/*jslint plusplus: false, nomen: false, laxbreak: true, regexp: false */
                                  -/*global window: false, document: false, navigator: false,
                                  -setTimeout: false, traceDeps: true, clearInterval: false, self: false,
                                  -setInterval: false, importScripts: false, jQuery: false */
                                  -
                                  -
                                  -var require, define;
                                  -(function () {
                                  -    //Change this version number for each release.
                                  -    var version = "0.14.5",
                                  -            empty = {}, s,
                                  -            i, defContextName = "_", contextLoads = [],
                                  -            scripts, script, rePkg, src, m, dataMain, cfg = {}, setReadyState,
                                  -            readyRegExp = /^(complete|loaded)$/,
                                  -            commentRegExp = /(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -            cjsRequireRegExp = /require\(["']([\w-_\.\/]+)["']\)/g,
                                  -            main,
                                  -            isBrowser = !!(typeof window !== "undefined" && navigator && document),
                                  -            isWebWorker = !isBrowser && typeof importScripts !== "undefined",
                                  -            ostring = Object.prototype.toString,
                                  -            ap = Array.prototype,
                                  -            aps = ap.slice, scrollIntervalId, req, baseElement,
                                  -            defQueue = [], useInteractive = false, currentlyAddingScript;
                                  -
                                  -    function isFunction(it) {
                                  -        return ostring.call(it) === "[object Function]";
                                  -    }
                                  -
                                  -    //Check for an existing version of require. If so, then exit out. Only allow
                                  -    //one version of require to be active in a page. However, allow for a require
                                  -    //config object, just exit quickly if require is an actual function.
                                  -    if (typeof require !== "undefined") {
                                  -        if (isFunction(require)) {
                                  -            return;
                                  -        } else {
                                  -            //assume it is a config object.
                                  -            cfg = require;
                                  -        }
                                  -    }
                                  -    
                                  -        /**
                                  -     * Calls a method on a plugin. The obj object should have two property,
                                  -     * name: the name of the method to call on the plugin
                                  -     * args: the arguments to pass to the plugin method.
                                  -     */
                                  -    function callPlugin(prefix, context, obj) {
                                  -        //Call the plugin, or load it.
                                  -        var plugin = s.plugins.defined[prefix], waiting;
                                  -        if (plugin) {
                                  -            plugin[obj.name].apply(null, obj.args);
                                  -        } else {
                                  -            //Put the call in the waiting call BEFORE requiring the module,
                                  -            //since the require could be synchronous in some environments,
                                  -            //like builds
                                  -            waiting = s.plugins.waiting[prefix] || (s.plugins.waiting[prefix] = []);
                                  -            waiting.push(obj);
                                  -
                                  -            //Load the module
                                  -            req(["require/" + prefix], context.contextName);
                                  -        }
                                  -    }
                                  -    
                                  -    /**
                                  -     * Convenience method to call main for a require.def call that was put on
                                  -     * hold in the defQueue.
                                  -     */
                                  -    function callDefMain(args, context) {
                                  -        main.apply(req, args);
                                  -        //Mark the module loaded. Must do it here in addition
                                  -        //to doing it in require.def in case a script does
                                  -        //not call require.def
                                  -        context.loaded[args[0]] = true;
                                  -    }
                                  -
                                  -    /**
                                  -     * Used to set up package paths from a packagePaths or packages config object.
                                  -     * @param {Object} packages the object to store the new package config
                                  -     * @param {Array} currentPackages an array of packages to configure
                                  -     * @param {String} [dir] a prefix dir to use.
                                  -     */
                                  -    function configurePackageDir(packages, currentPackages, dir) {
                                  -        var i, location, pkgObj;
                                  -        for (i = 0; (pkgObj = currentPackages[i]); i++) {
                                  -            pkgObj = typeof pkgObj === "string" ? { name: pkgObj } : pkgObj;
                                  -            location = pkgObj.location;
                                  -
                                  -            //Add dir to the path, but avoid paths that start with a slash
                                  -            //or have a colon (indicates a protocol)
                                  -            if (dir && (!location || (location.indexOf("/") !== 0 && location.indexOf(":") === -1))) {
                                  -                pkgObj.location = dir + "/" + (pkgObj.location || pkgObj.name);
                                  -            }
                                  -
                                  -            //Normalize package paths.
                                  -            pkgObj.location = pkgObj.location || pkgObj.name;
                                  -            pkgObj.lib = pkgObj.lib || "lib";
                                  -            pkgObj.main = pkgObj.main || "main";
                                  -
                                  -            packages[pkgObj.name] = pkgObj;
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Determine if priority loading is done. If so clear the priorityWait
                                  -     */
                                  -    function isPriorityDone(context) {
                                  -        var priorityDone = true,
                                  -            priorityWait = context.config.priorityWait,
                                  -            priorityName, i;
                                  -        if (priorityWait) {
                                  -            for (i = 0; (priorityName = priorityWait[i]); i++) {
                                  -                if (!context.loaded[priorityName]) {
                                  -                    priorityDone = false;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (priorityDone) {
                                  -                delete context.config.priorityWait;
                                  -            }
                                  -        }
                                  -        return priorityDone;
                                  -    }
                                  -
                                  -    /**
                                  -     * Resumes tracing of dependencies and then checks if everything is loaded.
                                  -     */
                                  -    function resume(context) {
                                  -        var args, i, paused = s.paused;
                                  -        if (context.scriptCount <= 0) {
                                  -            //Synchronous envs will push the number below zero with the
                                  -            //decrement above, be sure to set it back to zero for good measure.
                                  -            //require() calls that also do not end up loading scripts could
                                  -            //push the number negative too.
                                  -            context.scriptCount = 0;
                                  -
                                  -            //Make sure any remaining defQueue items get properly processed.
                                  -            while (defQueue.length) {
                                  -                args = defQueue.shift();
                                  -                if (args[0] === null) {
                                  -                    req.onError(new Error('Mismatched anonymous require.def modules'));
                                  -                } else {
                                  -                    callDefMain(args, context);
                                  -                }
                                  -            }
                                  -
                                  -            //Skip the resume if current context is in priority wait.
                                  -            if (context.config.priorityWait && !isPriorityDone(context)) {
                                  -                return;
                                  -            }
                                  -
                                  -            if (paused.length) {
                                  -                for (i = 0; (args = paused[i]); i++) {
                                  -                    req.checkDeps.apply(req, args);
                                  -                }
                                  -            }
                                  -
                                  -            req.checkLoaded(s.ctxName);
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Main entry point.
                                  -     *
                                  -     * If the only argument to require is a string, then the module that
                                  -     * is represented by that string is fetched for the appropriate context.
                                  -     *
                                  -     * If the first argument is an array, then it will be treated as an array
                                  -     * of dependency string names to fetch. An optional function callback can
                                  -     * be specified to execute when all of those dependencies are available.
                                  -     */
                                  -    require = function (deps, callback, contextName, relModuleName) {
                                  -        var context, config;
                                  -        if (typeof deps === "string" && !isFunction(callback)) {
                                  -            //Just return the module wanted. In this scenario, the
                                  -            //second arg (if passed) is just the contextName.
                                  -            return require.get(deps, callback, contextName, relModuleName);
                                  -        }
                                  -        // Dependencies first
                                  -        if (!require.isArray(deps)) {
                                  -            // deps is a config object
                                  -            config = deps;
                                  -            if (require.isArray(callback)) {
                                  -                // Adjust args if there are dependencies
                                  -                deps = callback;
                                  -                callback = contextName;
                                  -                contextName = relModuleName;
                                  -                relModuleName = arguments[4];
                                  -            } else {
                                  -                deps = [];
                                  -            }
                                  -        }
                                  -
                                  -        main(null, deps, callback, config, contextName, relModuleName);
                                  -
                                  -        //If the require call does not trigger anything new to load,
                                  -        //then resume the dependency processing. Context will be undefined
                                  -        //on first run of require.
                                  -        context = s.contexts[(contextName || (config && config.context) || s.ctxName)];
                                  -        if (context && context.scriptCount === 0) {
                                  -            resume(context);
                                  -        }
                                  -        //Returning undefined for Spidermonky strict checking in Komodo
                                  -        return undefined;
                                  -    };
                                  -
                                  -    //Alias for caja compliance internally -
                                  -    //specifically: "Dynamically computed names should use require.async()"
                                  -    //even though this spec isn't really decided on.
                                  -    //Since it is here, use this alias to make typing shorter.
                                  -    req = require;
                                  -
                                  -    /**
                                  -     * Any errors that require explicitly generates will be passed to this
                                  -     * function. Intercept/override it if you want custom error handling.
                                  -     * If you do override it, this method should *always* throw an error
                                  -     * to stop the execution flow correctly. Otherwise, other weird errors
                                  -     * will occur.
                                  -     * @param {Error} err the error object.
                                  -     */
                                  -    req.onError = function (err) {
                                  -        throw err;
                                  -    };
                                  -
                                  -    /**
                                  -     * The function that handles definitions of modules. Differs from
                                  -     * require() in that a string for the module should be the first argument,
                                  -     * and the function to execute after dependencies are loaded should
                                  -     * return a value to define the module corresponding to the first argument's
                                  -     * name.
                                  -     */
                                  -    define = req.def = function (name, deps, callback, contextName) {
                                  -        var i, scripts, script, node = currentlyAddingScript;
                                  -
                                  -        //Allow for anonymous functions
                                  -        if (typeof name !== 'string') {
                                  -            //Adjust args appropriately
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = name;
                                  -            name = null;
                                  -        }
                                  -
                                  -        //This module may not have dependencies
                                  -        if (!req.isArray(deps)) {
                                  -            contextName = callback;
                                  -            callback = deps;
                                  -            deps = [];
                                  -        }
                                  -
                                  -        //If no name, and callback is a function, then figure out if it a
                                  -        //CommonJS thing with dependencies.
                                  -        if (!name && !deps.length && req.isFunction(callback)) {
                                  -            //Remove comments from the callback string,
                                  -            //look for require calls, and pull them into the dependencies.
                                  -            callback
                                  -                .toString()
                                  -                .replace(commentRegExp, "")
                                  -                .replace(cjsRequireRegExp, function (match, dep) {
                                  -                    deps.push(dep);
                                  -                });
                                  -
                                  -            //May be a CommonJS thing even without require calls, but still
                                  -            //could use exports, and such, so always add those as dependencies.
                                  -            //This is a bit wasteful for RequireJS modules that do not need
                                  -            //an exports or module object, but erring on side of safety.
                                  -            //REQUIRES the function to expect the CommonJS variables in the
                                  -            //order listed below.
                                  -            deps = ["require", "exports", "module"].concat(deps);
                                  -        }
                                  -
                                  -        //If in IE 6-8 and hit an anonymous require.def call, do the interactive/
                                  -        //currentlyAddingScript scripts stuff.
                                  -        if (!name && useInteractive) {
                                  -            scripts = document.getElementsByTagName('script');
                                  -            for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -                if (script.readyState === 'interactive') {
                                  -                    node = script;
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (!node) {
                                  -                req.onError(new Error("ERROR: No matching script interactive for " + callback));
                                  -            }
                                  -
                                  -            name = node.getAttribute("data-requiremodule");
                                  -        }
                                  -
                                  -        if (typeof name === 'string') {
                                  -            //Do not try to auto-register a jquery later.
                                  -            //Do this work here and in main, since for IE/useInteractive, this function
                                  -            //is the earliest touch-point.
                                  -            s.contexts[s.ctxName].jQueryDef = (name === "jquery");
                                  -        }
                                  -
                                  -        //Always save off evaluating the def call until the script onload handler.
                                  -        //This allows multiple modules to be in a file without prematurely
                                  -        //tracing dependencies, and allows for anonymous module support,
                                  -        //where the module name is not known until the script onload event
                                  -        //occurs.
                                  -        defQueue.push([name, deps, callback, null, contextName]);
                                  -    };
                                  -
                                  -    main = function (name, deps, callback, config, contextName, relModuleName) {
                                  -        //Grab the context, or create a new one for the given context name.
                                  -        var context, newContext, loaded, pluginPrefix,
                                  -            canSetContext, prop, newLength, outDeps, mods, paths, index, i,
                                  -            deferMods, deferModArgs, lastModArg, waitingName, packages,
                                  -            packagePaths;
                                  -
                                  -        contextName = contextName ? contextName : (config && config.context ? config.context : s.ctxName);
                                  -        context = s.contexts[contextName];
                                  -
                                  -        if (name) {
                                  -                        // Pull off any plugin prefix.
                                  -            index = name.indexOf("!");
                                  -            if (index !== -1) {
                                  -                pluginPrefix = name.substring(0, index);
                                  -                name = name.substring(index + 1, name.length);
                                  -            } else {
                                  -                //Could be that the plugin name should be auto-applied.
                                  -                //Used by i18n plugin to enable anonymous i18n modules, but
                                  -                //still associating the auto-generated name with the i18n plugin.
                                  -                pluginPrefix = context.defPlugin[name];
                                  -            }
                                  -
                                  -            
                                  -            //If module already defined for context, or already waiting to be
                                  -            //evaluated, leave.
                                  -            waitingName = context.waiting[name];
                                  -            if (context && (context.defined[name] || (waitingName && waitingName !== ap[name]))) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //If nothing is waiting on being loaded in the current context,
                                  -            //then switch s.ctxName to current contextName.
                                  -            loaded = (s.contexts[s.ctxName] && s.contexts[s.ctxName].loaded);
                                  -            canSetContext = true;
                                  -            if (loaded) {
                                  -                for (prop in loaded) {
                                  -                    if (!(prop in empty)) {
                                  -                        if (!loaded[prop]) {
                                  -                            canSetContext = false;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (canSetContext) {
                                  -                s.ctxName = contextName;
                                  -            }
                                  -        }
                                  -
                                  -        if (!context) {
                                  -            newContext = {
                                  -                contextName: contextName,
                                  -                config: {
                                  -                    waitSeconds: 7,
                                  -                    baseUrl: s.baseUrl || "./",
                                  -                    paths: {},
                                  -                    packages: {}
                                  -                },
                                  -                waiting: [],
                                  -                specified: {
                                  -                    "require": true,
                                  -                    "exports": true,
                                  -                    "module": true
                                  -                },
                                  -                loaded: {},
                                  -                scriptCount: 0,
                                  -                urlFetched: {},
                                  -                defPlugin: {},
                                  -                defined: {},
                                  -                modifiers: {}
                                  -            };
                                  -
                                  -                        if (s.plugins.newContext) {
                                  -                s.plugins.newContext(newContext);
                                  -            }
                                  -            
                                  -            context = s.contexts[contextName] = newContext;
                                  -        }
                                  -
                                  -        //If have a config object, update the context's config object with
                                  -        //the config values.
                                  -        if (config) {
                                  -            //Make sure the baseUrl ends in a slash.
                                  -            if (config.baseUrl) {
                                  -                if (config.baseUrl.charAt(config.baseUrl.length - 1) !== "/") {
                                  -                    config.baseUrl += "/";
                                  -                }
                                  -            }
                                  -
                                  -            //Save off the paths and packages since they require special processing,
                                  -            //they are additive.
                                  -            paths = context.config.paths;
                                  -            packages = context.config.packages;
                                  -
                                  -            //Mix in the config values, favoring the new values over
                                  -            //existing ones in context.config.
                                  -            req.mixin(context.config, config, true);
                                  -
                                  -            //Adjust paths if necessary.
                                  -            if (config.paths) {
                                  -                for (prop in config.paths) {
                                  -                    if (!(prop in empty)) {
                                  -                        paths[prop] = config.paths[prop];
                                  -                    }
                                  -                }
                                  -                context.config.paths = paths;
                                  -            }
                                  -
                                  -            packagePaths = config.packagePaths;
                                  -            if (packagePaths || config.packages) {
                                  -                //Convert packagePaths into a packages config.
                                  -                if (packagePaths) {
                                  -                    for (prop in packagePaths) {
                                  -                        if (!(prop in empty)) {
                                  -                            configurePackageDir(packages, packagePaths[prop], prop);
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                //Adjust packages if necessary.
                                  -                if (config.packages) {
                                  -                    configurePackageDir(packages, config.packages);
                                  -                }
                                  -
                                  -                //Done with modifications, assing packages back to context config
                                  -                context.config.packages = packages;
                                  -            }
                                  -
                                  -            //If priority loading is in effect, trigger the loads now
                                  -            if (config.priority) {
                                  -                //Create a separate config property that can be
                                  -                //easily tested for config priority completion.
                                  -                //Do this instead of wiping out the config.priority
                                  -                //in case it needs to be inspected for debug purposes later.
                                  -                req(config.priority);
                                  -                context.config.priorityWait = config.priority;
                                  -            }
                                  -
                                  -            //If a deps array or a config callback is specified, then call
                                  -            //require with those args. This is useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.deps || config.callback) {
                                  -                req(config.deps || [], config.callback);
                                  -            }
                                  -
                                  -                        //Set up ready callback, if asked. Useful when require is defined as a
                                  -            //config object before require.js is loaded.
                                  -            if (config.ready) {
                                  -                req.ready(config.ready);
                                  -            }
                                  -            
                                  -            //If it is just a config block, nothing else,
                                  -            //then return.
                                  -            if (!deps) {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Normalize dependency strings: need to determine if they have
                                  -        //prefixes and to also normalize any relative paths. Replace the deps
                                  -        //array of strings with an array of objects.
                                  -        if (deps) {
                                  -            outDeps = deps;
                                  -            deps = [];
                                  -            for (i = 0; i < outDeps.length; i++) {
                                  -                deps[i] = req.splitPrefix(outDeps[i], (name || relModuleName), context);
                                  -            }
                                  -        }
                                  -
                                  -        //Store the module for later evaluation
                                  -        newLength = context.waiting.push({
                                  -            name: name,
                                  -            deps: deps,
                                  -            callback: callback
                                  -        });
                                  -
                                  -        if (name) {
                                  -            //Store index of insertion for quick lookup
                                  -            context.waiting[name] = newLength - 1;
                                  -
                                  -            //Mark the module as specified so no need to fetch it again.
                                  -            //Important to set specified here for the
                                  -            //pause/resume case where there are multiple modules in a file.
                                  -            context.specified[name] = true;
                                  -
                                  -                        //Load any modifiers for the module.
                                  -            mods = context.modifiers[name];
                                  -            if (mods) {
                                  -                req(mods, contextName);
                                  -                deferMods = mods.__deferMods;
                                  -                if (deferMods) {
                                  -                    for (i = 0; i < deferMods.length; i++) {
                                  -                        deferModArgs = deferMods[i];
                                  -
                                  -                        //Add the context name to the def call.
                                  -                        lastModArg = deferModArgs[deferModArgs.length - 1];
                                  -                        if (lastModArg === undefined) {
                                  -                            deferModArgs[deferModArgs.length - 1] = contextName;
                                  -                        } else if (typeof lastModArg === "string") {
                                  -                            deferMods.push(contextName);
                                  -                        }
                                  -
                                  -                        require.def.apply(require, deferModArgs);
                                  -                    }
                                  -                }
                                  -            }
                                  -                    }
                                  -
                                  -        //If the callback is not an actual function, it means it already
                                  -        //has the definition of the module as a literal value.
                                  -        if (name && callback && !req.isFunction(callback)) {
                                  -            context.defined[name] = callback;
                                  -        }
                                  -
                                  -        //If a pluginPrefix is available, call the plugin, or load it.
                                  -                if (pluginPrefix) {
                                  -            callPlugin(pluginPrefix, context, {
                                  -                name: "require",
                                  -                args: [name, deps, callback, context]
                                  -            });
                                  -        }
                                  -        
                                  -        //Hold on to the module until a script load or other adapter has finished
                                  -        //evaluating the whole file. This helps when a file has more than one
                                  -        //module in it -- dependencies are not traced and fetched until the whole
                                  -        //file is processed.
                                  -        s.paused.push([pluginPrefix, name, deps, context]);
                                  -
                                  -        //Set loaded here for modules that are also loaded
                                  -        //as part of a layer, where onScriptLoad is not fired
                                  -        //for those cases. Do this after the inline define and
                                  -        //dependency tracing is done.
                                  -        //Also check if auto-registry of jQuery needs to be skipped.
                                  -        if (name) {
                                  -            context.loaded[name] = true;
                                  -            context.jQueryDef = (name === "jquery");
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Simple function to mix in properties from source into target,
                                  -     * but only if target does not already have a property of the same name.
                                  -     */
                                  -    req.mixin = function (target, source, force) {
                                  -        for (var prop in source) {
                                  -            if (!(prop in empty) && (!(prop in target) || force)) {
                                  -                target[prop] = source[prop];
                                  -            }
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    req.version = version;
                                  -
                                  -    //Set up page state.
                                  -    s = req.s = {
                                  -        ctxName: defContextName,
                                  -        contexts: {},
                                  -        paused: [],
                                  -                plugins: {
                                  -            defined: {},
                                  -            callbacks: {},
                                  -            waiting: {}
                                  -        },
                                  -                //Stores a list of URLs that should not get async script tag treatment.
                                  -        skipAsync: {},
                                  -        isBrowser: isBrowser,
                                  -        isPageLoaded: !isBrowser,
                                  -        readyCalls: [],
                                  -        doc: isBrowser ? document : null
                                  -    };
                                  -
                                  -    req.isBrowser = s.isBrowser;
                                  -    if (isBrowser) {
                                  -        s.head = document.getElementsByTagName("head")[0];
                                  -        //If BASE tag is in play, using appendChild is a problem for IE6.
                                  -        //When that browser dies, this can be removed. Details in this jQuery bug:
                                  -        //http://dev.jquery.com/ticket/2709
                                  -        baseElement = document.getElementsByTagName("base")[0];
                                  -        if (baseElement) {
                                  -            s.head = baseElement.parentNode;
                                  -        }
                                  -    }
                                  -
                                  -        /**
                                  -     * Sets up a plugin callback name. Want to make it easy to test if a plugin
                                  -     * needs to be called for a certain lifecycle event by testing for
                                  -     * if (s.plugins.onLifeCyleEvent) so only define the lifecycle event
                                  -     * if there is a real plugin that registers for it.
                                  -     */
                                  -    function makePluginCallback(name, returnOnTrue) {
                                  -        var cbs = s.plugins.callbacks[name] = [];
                                  -        s.plugins[name] = function () {
                                  -            for (var i = 0, cb; (cb = cbs[i]); i++) {
                                  -                if (cb.apply(null, arguments) === true && returnOnTrue) {
                                  -                    return true;
                                  -                }
                                  -            }
                                  -            return false;
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Registers a new plugin for require.
                                  -     */
                                  -    req.plugin = function (obj) {
                                  -        var i, prop, call, prefix = obj.prefix, cbs = s.plugins.callbacks,
                                  -            waiting = s.plugins.waiting[prefix], generics,
                                  -            defined = s.plugins.defined, contexts = s.contexts, context;
                                  -
                                  -        //Do not allow redefinition of a plugin, there may be internal
                                  -        //state in the plugin that could be lost.
                                  -        if (defined[prefix]) {
                                  -            return req;
                                  -        }
                                  -
                                  -        //Save the plugin.
                                  -        defined[prefix] = obj;
                                  -
                                  -        //Set up plugin callbacks for methods that need to be generic to
                                  -        //require, for lifecycle cases where it does not care about a particular
                                  -        //plugin, but just that some plugin work needs to be done.
                                  -        generics = ["newContext", "isWaiting", "orderDeps"];
                                  -        for (i = 0; (prop = generics[i]); i++) {
                                  -            if (!s.plugins[prop]) {
                                  -                makePluginCallback(prop, prop === "isWaiting");
                                  -            }
                                  -            cbs[prop].push(obj[prop]);
                                  -        }
                                  -
                                  -        //Call newContext for any contexts that were already created.
                                  -        if (obj.newContext) {
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    obj.newContext(context);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //If there are waiting requests for a plugin, execute them now.
                                  -        if (waiting) {
                                  -            for (i = 0; (call = waiting[i]); i++) {
                                  -                if (obj[call.name]) {
                                  -                    obj[call.name].apply(null, call.args);
                                  -                }
                                  -            }
                                  -            delete s.plugins.waiting[prefix];
                                  -        }
                                  -
                                  -        return req;
                                  -    };
                                  -    
                                  -    /**
                                  -     * As of jQuery 1.4.3, it supports a readyWait property that will hold off
                                  -     * calling jQuery ready callbacks until all scripts are loaded. Be sure
                                  -     * to track it if readyWait is available. Also, since jQuery 1.4.3 does
                                  -     * not register as a module, need to do some global inference checking.
                                  -     * Even if it does register as a module, not guaranteed to be the precise
                                  -     * name of the global. If a jQuery is tracked for this context, then go
                                  -     * ahead and register it as a module too, if not already in process.
                                  -     */
                                  -    function jQueryCheck(context, jqCandidate) {
                                  -        if (!context.jQuery) {
                                  -            var $ = jqCandidate || (typeof jQuery !== "undefined" ? jQuery : null);
                                  -            if ($ && "readyWait" in $) {
                                  -                context.jQuery = $;
                                  -
                                  -                //Manually create a "jquery" module entry if not one already
                                  -                //or in process.
                                  -                if (!context.defined.jquery && !context.jQueryDef) {
                                  -                    context.defined.jquery = $;
                                  -                }
                                  -
                                  -                //Make sure 
                                  -                if (context.scriptCount) {
                                  -                    $.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    /**
                                  -     * Internal method used by environment adapters to complete a load event.
                                  -     * A load event could be a script load or just a load pass from a synchronous
                                  -     * load call.
                                  -     * @param {String} moduleName the name of the module to potentially complete.
                                  -     * @param {Object} context the context object
                                  -     */
                                  -    req.completeLoad = function (moduleName, context) {
                                  -        //If there is a waiting require.def call
                                  -        var args;
                                  -        while (defQueue.length) {
                                  -            args = defQueue.shift();
                                  -            if (args[0] === null) {
                                  -                args[0] = moduleName;
                                  -                break;
                                  -            } else if (args[0] === moduleName) {
                                  -                //Found matching require.def call for this script!
                                  -                break;
                                  -            } else {
                                  -                //Some other named require.def call, most likely the result
                                  -                //of a build layer that included many require.def calls.
                                  -                callDefMain(args, context);
                                  -            }
                                  -        }
                                  -        if (args) {
                                  -            callDefMain(args, context);
                                  -        }
                                  -
                                  -        //Mark the script as loaded. Note that this can be different from a
                                  -        //moduleName that maps to a require.def call. This line is important
                                  -        //for traditional browser scripts.
                                  -        context.loaded[moduleName] = true;
                                  -
                                  -        //If a global jQuery is defined, check for it. Need to do it here
                                  -        //instead of main() since stock jQuery does not register as
                                  -        //a module via define.
                                  -        jQueryCheck(context);
                                  -
                                  -        context.scriptCount -= 1;
                                  -        resume(context);
                                  -    };
                                  -
                                  -    /**
                                  -     * Legacy function, remove at some point
                                  -     */
                                  -    req.pause = req.resume = function () {};
                                  -
                                  -    /**
                                  -     * Trace down the dependencies to see if they are loaded. If not, trigger
                                  -     * the load.
                                  -     * @param {String} pluginPrefix the plugin prefix, if any associated with the name.
                                  -     *
                                  -     * @param {String} name: the name of the module that has the dependencies.
                                  -     *
                                  -     * @param {Array} deps array of dependencies.
                                  -     *
                                  -     * @param {Object} context: the loading context.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkDeps = function (pluginPrefix, name, deps, context) {
                                  -        //Figure out if all the modules are loaded. If the module is not
                                  -        //being loaded or already loaded, add it to the "to load" list,
                                  -        //and request it to be loaded.
                                  -        var i, dep;
                                  -
                                  -        if (pluginPrefix) {
                                  -                        callPlugin(pluginPrefix, context, {
                                  -                name: "checkDeps",
                                  -                args: [name, deps, context]
                                  -            });
                                  -                    } else {
                                  -            for (i = 0; (dep = deps[i]); i++) {
                                  -                if (!context.specified[dep.fullName]) {
                                  -                    context.specified[dep.fullName] = true;
                                  -
                                  -                    //Reset the start time to use for timeouts
                                  -                    context.startTime = (new Date()).getTime();
                                  -
                                  -                    //If a plugin, call its load method.
                                  -                    if (dep.prefix) {
                                  -                                                callPlugin(dep.prefix, context, {
                                  -                            name: "load",
                                  -                            args: [dep.name, context.contextName]
                                  -                        });
                                  -                                            } else {
                                  -                        req.load(dep.name, context.contextName);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -        /**
                                  -     * Register a module that modifies another module. The modifier will
                                  -     * only be called once the target module has been loaded.
                                  -     *
                                  -     * First syntax:
                                  -     *
                                  -     * require.modify({
                                  -     *     "some/target1": "my/modifier1",
                                  -     *     "some/target2": "my/modifier2",
                                  -     * });
                                  -     *
                                  -     * With this syntax, the my/modifier1 will only be loaded when
                                  -     * "some/target1" is loaded.
                                  -     *
                                  -     * Second syntax, defining a modifier.
                                  -     *
                                  -     * require.modify("some/target1", "my/modifier",
                                  -     *                        ["some/target1", "some/other"],
                                  -     *                        function (target, other) {
                                  -     *                            //Modify properties of target here.
                                  -     *                            Only properties of target can be modified, but
                                  -     *                            target cannot be replaced.
                                  -     *                        }
                                  -     * );
                                  -     */
                                  -    req.modify = function (target, name, deps, callback, contextName) {
                                  -        var prop, modifier, list,
                                  -                cName = (typeof target === "string" ? contextName : name) || s.ctxName,
                                  -                context = s.contexts[cName],
                                  -                mods = context.modifiers;
                                  -
                                  -        if (typeof target === "string") {
                                  -            //A modifier module.
                                  -            //First store that it is a modifier.
                                  -            list = mods[target] || (mods[target] = []);
                                  -            if (!list[name]) {
                                  -                list.push(name);
                                  -                list[name] = true;
                                  -            }
                                  -
                                  -            //Trigger the normal module definition logic if the target
                                  -            //is already in the system.
                                  -            if (context.specified[target]) {
                                  -                req.def(name, deps, callback, contextName);
                                  -            } else {
                                  -                //Hold on to the execution/dependency checks for the modifier
                                  -                //until the target is fetched.
                                  -                (list.__deferMods || (list.__deferMods = [])).push([name, deps, callback, contextName]);
                                  -            }
                                  -        } else {
                                  -            //A list of modifiers. Save them for future reference.
                                  -            for (prop in target) {
                                  -                if (!(prop in empty)) {
                                  -                    //Store the modifier for future use.
                                  -                    modifier = target[prop];
                                  -                    list = mods[prop] || (context.modifiers[prop] = []);
                                  -                    if (!list[modifier]) {
                                  -                        list.push(modifier);
                                  -                        list[modifier] = true;
                                  -
                                  -                        if (context.specified[prop]) {
                                  -                            //Load the modifier right away.
                                  -                            req([modifier], cName);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    req.isArray = function (it) {
                                  -        return ostring.call(it) === "[object Array]";
                                  -    };
                                  -
                                  -    req.isFunction = isFunction;
                                  -
                                  -    /**
                                  -     * Gets one module's exported value. This method is used by require().
                                  -     * It is broken out as a separate function to allow a host environment
                                  -     * shim to overwrite this function with something appropriate for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} [contextName] the name of the context to use. Uses
                                  -     * default context if no contextName is provided. You should never
                                  -     * pass the contextName explicitly -- it is handled by the require() code.
                                  -     * @param {String} [relModuleName] a module name to use for relative
                                  -     * module name lookups. You should never pass this argument explicitly --
                                  -     * it is handled by the require() code.
                                  -     *
                                  -     * @returns {Object} the exported module value.
                                  -     */
                                  -    req.get = function (moduleName, contextName, relModuleName) {
                                  -        if (moduleName === "require" || moduleName === "exports" || moduleName === "module") {
                                  -            req.onError(new Error("Explicit require of " + moduleName + " is not allowed."));
                                  -        }
                                  -        contextName = contextName || s.ctxName;
                                  -
                                  -        var ret, context = s.contexts[contextName];
                                  -
                                  -        //Normalize module name, if it contains . or ..
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        ret = context.defined[moduleName];
                                  -        if (ret === undefined) {
                                  -            req.onError(new Error("require: module name '" +
                                  -                        moduleName +
                                  -                        "' has not been loaded yet for context: " +
                                  -                        contextName));
                                  -        }
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Makes the request to load a module. May be an async load depending on
                                  -     * the environment and the circumstance of the load call. Override this
                                  -     * method in a host environment shim to do something specific for that
                                  -     * environment.
                                  -     *
                                  -     * @param {String} moduleName the name of the module.
                                  -     * @param {String} contextName the name of the context to use.
                                  -     */
                                  -    req.load = function (moduleName, contextName) {
                                  -        var context = s.contexts[contextName],
                                  -            urlFetched = context.urlFetched,
                                  -            loaded = context.loaded, url;
                                  -        s.isDone = false;
                                  -
                                  -        //Only set loaded to false for tracking if it has not already been set.
                                  -        if (!loaded[moduleName]) {
                                  -            loaded[moduleName] = false;
                                  -        }
                                  -
                                  -        if (contextName !== s.ctxName) {
                                  -            //Not in the right context now, hold on to it until
                                  -            //the current context finishes all its loading.
                                  -            contextLoads.push(arguments);
                                  -        } else {
                                  -            //First derive the path name for the module.
                                  -            url = req.nameToUrl(moduleName, null, contextName);
                                  -            if (!urlFetched[url]) {
                                  -                context.scriptCount += 1;
                                  -                req.attach(url, contextName, moduleName);
                                  -                urlFetched[url] = true;
                                  -
                                  -                //If tracking a jQuery, then make sure its readyWait
                                  -                //is incremented to prevent its ready callbacks from
                                  -                //triggering too soon.
                                  -                if (context.jQuery && !context.jQueryIncremented) {
                                  -                    context.jQuery.readyWait += 1;
                                  -                    context.jQueryIncremented = true;
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    req.jsExtRegExp = /\.js$/;
                                  -
                                  -    /**
                                  -     * Given a relative module name, like ./something, normalize it to
                                  -     * a real name that can be mapped to a path.
                                  -     * @param {String} name the relative name
                                  -     * @param {String} baseName a real name that the name arg is relative
                                  -     * to.
                                  -     * @param {Object} context
                                  -     * @returns {String} normalized name
                                  -     */
                                  -    req.normalizeName = function (name, baseName, context) {
                                  -        //Adjust any relative paths.
                                  -        var part;
                                  -        if (name.charAt(0) === ".") {
                                  -            if (!baseName) {
                                  -                req.onError(new Error("Cannot normalize module name: " +
                                  -                            name +
                                  -                            ", no relative module name available."));
                                  -            }
                                  -
                                  -            if (context.config.packages[baseName]) {
                                  -                //If the baseName is a package name, then just treat it as one
                                  -                //name to concat the name with.
                                  -                baseName = [baseName];
                                  -            } else {
                                  -                //Convert baseName to array, and lop off the last part,
                                  -                //so that . matches that "directory" and not name of the baseName's
                                  -                //module. For instance, baseName of "one/two/three", maps to
                                  -                //"one/two/three.js", but we want the directory, "one/two" for
                                  -                //this normalization.
                                  -                baseName = baseName.split("/");
                                  -                baseName = baseName.slice(0, baseName.length - 1);
                                  -            }
                                  -
                                  -            name = baseName.concat(name.split("/"));
                                  -            for (i = 0; (part = name[i]); i++) {
                                  -                if (part === ".") {
                                  -                    name.splice(i, 1);
                                  -                    i -= 1;
                                  -                } else if (part === "..") {
                                  -                    name.splice(i - 1, 2);
                                  -                    i -= 2;
                                  -                }
                                  -            }
                                  -            name = name.join("/");
                                  -        }
                                  -        return name;
                                  -    };
                                  -
                                  -    /**
                                  -     * Splits a name into a possible plugin prefix and
                                  -     * the module name. If baseName is provided it will
                                  -     * also normalize the name via require.normalizeName()
                                  -     * 
                                  -     * @param {String} name the module name
                                  -     * @param {String} [baseName] base name that name is
                                  -     * relative to.
                                  -     * @param {Object} context
                                  -     *
                                  -     * @returns {Object} with properties, 'prefix' (which
                                  -     * may be null), 'name' and 'fullName', which is a combination
                                  -     * of the prefix (if it exists) and the name.
                                  -     */
                                  -    req.splitPrefix = function (name, baseName, context) {
                                  -        var index = name.indexOf("!"), prefix = null;
                                  -        if (index !== -1) {
                                  -            prefix = name.substring(0, index);
                                  -            name = name.substring(index + 1, name.length);
                                  -        }
                                  -
                                  -        //Account for relative paths if there is a base name.
                                  -        name = req.normalizeName(name, baseName, context);
                                  -
                                  -        return {
                                  -            prefix: prefix,
                                  -            name: name,
                                  -            fullName: prefix ? prefix + "!" + name : name
                                  -        };
                                  -    };
                                  -
                                  -    /**
                                  -     * Converts a module name to a file path.
                                  -     */
                                  -    req.nameToUrl = function (moduleName, ext, contextName, relModuleName) {
                                  -        var paths, packages, pkg, pkgPath, syms, i, parentModule, url,
                                  -            context = s.contexts[contextName],
                                  -            config = context.config;
                                  -
                                  -        //Normalize module name if have a base relative module name to work from.
                                  -        moduleName = req.normalizeName(moduleName, relModuleName, context);
                                  -
                                  -        //If a colon is in the URL, it indicates a protocol is used and it is just
                                  -        //an URL to a file, or if it starts with a slash or ends with .js, it is just a plain file.
                                  -        //The slash is important for protocol-less URLs as well as full paths.
                                  -        if (moduleName.indexOf(":") !== -1 || moduleName.charAt(0) === '/' || req.jsExtRegExp.test(moduleName)) {
                                  -            //Just a plain path, not module name lookup, so just return it.
                                  -            //Add extension if it is included. This is a bit wonky, only non-.js things pass
                                  -            //an extension, this method probably needs to be reworked.
                                  -            url = moduleName + (ext ? ext : "");
                                  -        } else {
                                  -            //A module that needs to be converted to a path.
                                  -            paths = config.paths;
                                  -            packages = config.packages;
                                  -
                                  -            syms = moduleName.split("/");
                                  -            //For each module name segment, see if there is a path
                                  -            //registered for it. Start with most specific name
                                  -            //and work up from it.
                                  -            for (i = syms.length; i > 0; i--) {
                                  -                parentModule = syms.slice(0, i).join("/");
                                  -                if (paths[parentModule]) {
                                  -                    syms.splice(0, i, paths[parentModule]);
                                  -                    break;
                                  -                } else if ((pkg = packages[parentModule])) {
                                  -                    //pkg can have just a string value to the path
                                  -                    //or can be an object with props:
                                  -                    //main, lib, name, location.
                                  -                    pkgPath = pkg.location + '/' + pkg.lib;
                                  -                    //If module name is just the package name, then looking
                                  -                    //for the main module.
                                  -                    if (moduleName === pkg.name) {
                                  -                        pkgPath += '/' + pkg.main;
                                  -                    }
                                  -                    syms.splice(0, i, pkgPath);
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -            //Join the path parts together, then figure out if baseUrl is needed.
                                  -            url = syms.join("/") + (ext || ".js");
                                  -            url = (url.charAt(0) === '/' || url.match(/^\w+:/) ? "" : config.baseUrl) + url;
                                  -        }
                                  -        return config.urlArgs ? url +
                                  -                                ((url.indexOf('?') === -1 ? '?' : '&') +
                                  -                                 config.urlArgs) : url;
                                  -    };
                                  -
                                  -    /**
                                  -     * Checks if all modules for a context are loaded, and if so, evaluates the
                                  -     * new ones in right dependency order.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.checkLoaded = function (contextName) {
                                  -        var context = s.contexts[contextName || s.ctxName],
                                  -                waitInterval = context.config.waitSeconds * 1000,
                                  -                //It is possible to disable the wait interval by using waitSeconds of 0.
                                  -                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),
                                  -                loaded, defined = context.defined,
                                  -                modifiers = context.modifiers, waiting, noLoads = "",
                                  -                hasLoadedProp = false, stillLoading = false, prop,
                                  -
                                  -                                pIsWaiting = s.plugins.isWaiting, pOrderDeps = s.plugins.orderDeps,
                                  -                
                                  -                i, module, allDone, loads, loadArgs, err;
                                  -
                                  -        //If already doing a checkLoaded call,
                                  -        //then do not bother checking loaded state.
                                  -        if (context.isCheckLoaded) {
                                  -            return;
                                  -        }
                                  -
                                  -        //Determine if priority loading is done. If so clear the priority. If
                                  -        //not, then do not check
                                  -        if (context.config.priorityWait) {
                                  -            if (isPriorityDone(context)) {
                                  -                //Call resume, since it could have
                                  -                //some waiting dependencies to trace.
                                  -                resume(context);
                                  -            } else {
                                  -                return;
                                  -            }
                                  -        }
                                  -
                                  -        //Signal that checkLoaded is being require, so other calls that could be triggered
                                  -        //by calling a waiting callback that then calls require and then this function
                                  -        //should not proceed. At the end of this function, if there are still things
                                  -        //waiting, then checkLoaded will be called again.
                                  -        context.isCheckLoaded = true;
                                  -
                                  -        //Grab waiting and loaded lists here, since it could have changed since
                                  -        //this function was first called.
                                  -        waiting = context.waiting;
                                  -        loaded = context.loaded;
                                  -
                                  -        //See if anything is still in flight.
                                  -        for (prop in loaded) {
                                  -            if (!(prop in empty)) {
                                  -                hasLoadedProp = true;
                                  -                if (!loaded[prop]) {
                                  -                    if (expired) {
                                  -                        noLoads += prop + " ";
                                  -                    } else {
                                  -                        stillLoading = true;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        //Check for exit conditions.
                                  -        if (!hasLoadedProp && !waiting.length
                                  -                        && (!pIsWaiting || !pIsWaiting(context))
                                  -                       ) {
                                  -            //If the loaded object had no items, then the rest of
                                  -            //the work below does not need to be done.
                                  -            context.isCheckLoaded = false;
                                  -            return;
                                  -        }
                                  -        if (expired && noLoads) {
                                  -            //If wait time expired, throw error of unloaded modules.
                                  -            err = new Error("require.js load timeout for modules: " + noLoads);
                                  -            err.requireType = "timeout";
                                  -            err.requireModules = noLoads;
                                  -            req.onError(err);
                                  -        }
                                  -        if (stillLoading) {
                                  -            //Something is still waiting to load. Wait for it.
                                  -            context.isCheckLoaded = false;
                                  -            if (isBrowser || isWebWorker) {
                                  -                setTimeout(function () {
                                  -                    req.checkLoaded(contextName);
                                  -                }, 50);
                                  -            }
                                  -            return;
                                  -        }
                                  -
                                  -        //Order the dependencies. Also clean up state because the evaluation
                                  -        //of modules might create new loading tasks, so need to reset.
                                  -        //Be sure to call plugins too.
                                  -        context.waiting = [];
                                  -        context.loaded = {};
                                  -
                                  -                //Call plugins to order their dependencies, do their
                                  -        //module definitions.
                                  -        if (pOrderDeps) {
                                  -            pOrderDeps(context);
                                  -        }
                                  -        
                                  -                //Before defining the modules, give priority treatment to any modifiers
                                  -        //for modules that are already defined.
                                  -        for (prop in modifiers) {
                                  -            if (!(prop in empty)) {
                                  -                if (defined[prop]) {
                                  -                    req.execModifiers(prop, {}, waiting, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        //Define the modules, doing a depth first search.
                                  -        for (i = 0; (module = waiting[i]); i++) {
                                  -            req.exec(module, {}, waiting, context);
                                  -        }
                                  -
                                  -        //Indicate checkLoaded is now done.
                                  -        context.isCheckLoaded = false;
                                  -
                                  -        if (context.waiting.length
                                  -                        || (pIsWaiting && pIsWaiting(context))
                                  -                       ) {
                                  -            //More things in this context are waiting to load. They were probably
                                  -            //added while doing the work above in checkLoaded, calling module
                                  -            //callbacks that triggered other require calls.
                                  -            req.checkLoaded(contextName);
                                  -        } else if (contextLoads.length) {
                                  -            //Check for other contexts that need to load things.
                                  -            //First, make sure current context has no more things to
                                  -            //load. After defining the modules above, new require calls
                                  -            //could have been made.
                                  -            loaded = context.loaded;
                                  -            allDone = true;
                                  -            for (prop in loaded) {
                                  -                if (!(prop in empty)) {
                                  -                    if (!loaded[prop]) {
                                  -                        allDone = false;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            if (allDone) {
                                  -                s.ctxName = contextLoads[0][1];
                                  -                loads = contextLoads;
                                  -                //Reset contextLoads in case some of the waiting loads
                                  -                //are for yet another context.
                                  -                contextLoads = [];
                                  -                for (i = 0; (loadArgs = loads[i]); i++) {
                                  -                    req.load.apply(req, loadArgs);
                                  -                }
                                  -            }
                                  -        } else {
                                  -            //Make sure we reset to default context.
                                  -            s.ctxName = defContextName;
                                  -            s.isDone = true;
                                  -            if (req.callReady) {
                                  -                req.callReady();
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Helper function that creates a setExports function for a "module"
                                  -     * CommonJS dependency. Do this here to avoid creating a closure that
                                  -     * is part of a loop in require.exec.
                                  -     */
                                  -    function makeSetExports(moduleObj) {
                                  -        return function (exports) {
                                  -            moduleObj.exports = exports;
                                  -        };
                                  -    }
                                  -
                                  -    function makeContextModuleFunc(name, contextName, moduleName) {
                                  -        return function () {
                                  -            //A version of a require function that forces a contextName value
                                  -            //and also passes a moduleName value for items that may need to
                                  -            //look up paths relative to the moduleName
                                  -            var args = [].concat(aps.call(arguments, 0));
                                  -            args.push(contextName, moduleName);
                                  -            return (name ? require[name] : require).apply(null, args);
                                  -        };
                                  -    }
                                  -
                                  -    /**
                                  -     * Helper function that creates a require function object to give to
                                  -     * modules that ask for it as a dependency. It needs to be specific
                                  -     * per module because of the implication of path mappings that may
                                  -     * need to be relative to the module name.
                                  -     */
                                  -    function makeRequire(context, moduleName) {
                                  -        var contextName = context.contextName,
                                  -            modRequire = makeContextModuleFunc(null, contextName, moduleName);
                                  -
                                  -        req.mixin(modRequire, {
                                  -                        modify: makeContextModuleFunc("modify", contextName, moduleName),
                                  -                        def: makeContextModuleFunc("def", contextName, moduleName),
                                  -            get: makeContextModuleFunc("get", contextName, moduleName),
                                  -            nameToUrl: makeContextModuleFunc("nameToUrl", contextName, moduleName),
                                  -            ready: req.ready,
                                  -            context: context,
                                  -            config: context.config,
                                  -            isBrowser: s.isBrowser
                                  -        });
                                  -        return modRequire;
                                  -    }
                                  -
                                  -    /**
                                  -     * Executes the modules in the correct order.
                                  -     * 
                                  -     * @private
                                  -     */
                                  -    req.exec = function (module, traced, waiting, context) {
                                  -        //Some modules are just plain script files, abddo not have a formal
                                  -        //module definition, 
                                  -        if (!module) {
                                  -            //Returning undefined for Spidermonky strict checking in Komodo
                                  -            return undefined;
                                  -        }
                                  -
                                  -        var name = module.name, cb = module.callback, deps = module.deps, j, dep,
                                  -            defined = context.defined, ret, args = [], depModule, cjsModule,
                                  -            usingExports = false, depName;
                                  -
                                  -        //If already traced or defined, do not bother a second time.
                                  -        if (name) {
                                  -            if (traced[name] || name in defined) {
                                  -                return defined[name];
                                  -            }
                                  -
                                  -            //Mark this module as being traced, so that it is not retraced (as in a circular
                                  -            //dependency)
                                  -            traced[name] = true;
                                  -        }
                                  -
                                  -        if (deps) {
                                  -            for (j = 0; (dep = deps[j]); j++) {
                                  -                depName = dep.name;
                                  -                if (depName === "require") {
                                  -                    depModule = makeRequire(context, name);
                                  -                } else if (depName === "exports") {
                                  -                    //CommonJS module spec 1.1
                                  -                    depModule = defined[name] = {};
                                  -                    usingExports = true;
                                  -                } else if (depName === "module") {
                                  -                    //CommonJS module spec 1.1
                                  -                    cjsModule = depModule = {
                                  -                        id: name,
                                  -                        uri: name ? req.nameToUrl(name, null, context.contextName) : undefined
                                  -                    };
                                  -                    cjsModule.setExports = makeSetExports(cjsModule);
                                  -                    
                                  -                    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -                    // TODO: xxxpedro module scope handling hack
                                  -                    var NS = function(namespace, source, root)
                                  -                    {
                                  -                        root = root || window;
                                  -                        
                                  -                        var set = !!source, 
                                  -                            ns = namespace.split("/"),
                                  -                            object = root;
                                  -                        
                                  -                        for(var i=0, l=ns.length, n; n=ns[i]; i++)
                                  -                        {
                                  -                            if(set)
                                  -                                object[n] = i < l-1 ? object[n] || {} : source;
                                  -                                
                                  -                            else if(!object[n])
                                  -                                error('Namespace not found: ' + namespace);
                                  -                    
                                  -                            object = object[n];
                                  -                        }
                                  -                        
                                  -                        return object;
                                  -                    };
                                  -
                                  -                    var moduleScope = cjsModule.scope = {
                                  -                        include: function(moduleName) {
                                  -                            var includedModule = req(moduleName);
                                  -                            for (var name in includedModule) {
                                  -                                if (includedModule.hasOwnProperty(name)) {
                                  -                                    moduleScope[name] = includedModule[name];
                                  -                                }
                                  -                            }
                                  -                        },
                                  -                        imports: function(namespace)
                                  -                        {
                                  -                            NS(namespace, require(namespace), moduleScope);
                                  -                        }
                                  -                    };
                                  -                    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                  -                    
                                  -                } else {
                                  -                    //Get dependent module. It could not exist, for a circular
                                  -                    //dependency or if the loaded dependency does not actually call
                                  -                    //require. Favor not throwing an error here if undefined because
                                  -                    //we want to allow code that does not use require as a module
                                  -                    //definition framework to still work -- allow a web site to
                                  -                    //gradually update to contained modules. That is more
                                  -                    //important than forcing a throw for the circular dependency case.
                                  -                    depModule = depName in defined ? defined[depName] : (traced[depName] ? undefined : req.exec(waiting[waiting[depName]], traced, waiting, context));
                                  -                }
                                  -
                                  -                args.push(depModule);
                                  -            }
                                  -        }
                                  -
                                  -        //Call the callback to define the module, if necessary.
                                  -        cb = module.callback;
                                  -        if (cb && req.isFunction(cb)) {
                                  -            ret = req.execCb(name, cb, args);
                                  -            if (name) {
                                  -                //If using exports and the function did not return a value,
                                  -                //and the "module" object for this definition function did not
                                  -                //define an exported value, then use the exports object.
                                  -                if (usingExports && ret === undefined && (!cjsModule || !("exports" in cjsModule))) {
                                  -                    ret = defined[name];
                                  -                } else {
                                  -                    if (cjsModule && "exports" in cjsModule) {
                                  -                        ret = defined[name] = cjsModule.exports;
                                  -                    } else {
                                  -                        if (name in defined && !usingExports) {
                                  -                            req.onError(new Error(name + " has already been defined"));
                                  -                        }
                                  -                        defined[name] = ret;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -                //Execute modifiers, if they exist.
                                  -        req.execModifiers(name, traced, waiting, context);
                                  -        
                                  -        return ret;
                                  -    };
                                  -
                                  -    /**
                                  -     * Executes a module callack function. Broken out as a separate function
                                  -     * solely to allow the build system to sequence the files in the built
                                  -     * layer in the right sequence.
                                  -     * @param {String} name the module name.
                                  -     * @param {Function} cb the module callback/definition function.
                                  -     * @param {Array} args The arguments (dependent modules) to pass to callback.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execCb = function (name, cb, args) {
                                  -        return cb.apply(null, args);
                                  -    };
                                  -
                                  -        /**
                                  -     * Executes modifiers for the given module name.
                                  -     * @param {String} target
                                  -     * @param {Object} traced
                                  -     * @param {Object} context
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.execModifiers = function (target, traced, waiting, context) {
                                  -        var modifiers = context.modifiers, mods = modifiers[target], mod, i;
                                  -        if (mods) {
                                  -            for (i = 0; i < mods.length; i++) {
                                  -                mod = mods[i];
                                  -                //Not all modifiers define a module, they might collect other modules.
                                  -                //If it is just a collection it will not be in waiting.
                                  -                if (mod in waiting) {
                                  -                    req.exec(waiting[waiting[mod]], traced, waiting, context);
                                  -                }
                                  -            }
                                  -            delete modifiers[target];
                                  -        }
                                  -    };
                                  -    
                                  -    /**
                                  -     * callback for script loads, used to check status of loading.
                                  -     *
                                  -     * @param {Event} evt the event from the browser for the script
                                  -     * that was loaded.
                                  -     *
                                  -     * @private
                                  -     */
                                  -    req.onScriptLoad = function (evt) {
                                  -        //Using currentTarget instead of target for Firefox 2.0's sake. Not
                                  -        //all old browsers will be supported, but this one was easy enough
                                  -        //to support and still makes sense.
                                  -        var node = evt.currentTarget || evt.srcElement, contextName, moduleName,
                                  -            context;
                                  -        if (evt.type === "load" || readyRegExp.test(node.readyState)) {
                                  -            //Pull out the name of the module and the context.
                                  -            contextName = node.getAttribute("data-requirecontext");
                                  -            moduleName = node.getAttribute("data-requiremodule");
                                  -            context = s.contexts[contextName];
                                  -
                                  -            req.completeLoad(moduleName, context);
                                  -
                                  -            //Clean up script binding.
                                  -            if (node.removeEventListener) {
                                  -                node.removeEventListener("load", req.onScriptLoad, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know.
                                  -                node.detachEvent("onreadystatechange", req.onScriptLoad);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Attaches the script represented by the URL to the current
                                  -     * environment. Right now only supports browser loading,
                                  -     * but can be redefined in other environments to do the right thing.
                                  -     * @param {String} url the url of the script to attach.
                                  -     * @param {String} contextName the name of the context that wants the script.
                                  -     * @param {moduleName} the name of the module that is associated with the script.
                                  -     * @param {Function} [callback] optional callback, defaults to require.onScriptLoad
                                  -     * @param {String} [type] optional type, defaults to text/javascript
                                  -     */
                                  -    req.attach = function (url, contextName, moduleName, callback, type) {
                                  -        var node, loaded, context;
                                  -        if (isBrowser) {
                                  -            //In the browser so use a script tag
                                  -            callback = callback || req.onScriptLoad;
                                  -            node = document.createElement("script");
                                  -            node.type = type || "text/javascript";
                                  -            node.charset = "utf-8";
                                  -            //Use async so Gecko does not block on executing the script if something
                                  -            //like a long-polling comet tag is being run first. Gecko likes
                                  -            //to evaluate scripts in DOM order, even for dynamic scripts.
                                  -            //It will fetch them async, but only evaluate the contents in DOM
                                  -            //order, so a long-polling script tag can delay execution of scripts
                                  -            //after it. But telling Gecko we expect async gets us the behavior
                                  -            //we want -- execute it whenever it is finished downloading. Only
                                  -            //Helps Firefox 3.6+
                                  -            //Allow some URLs to not be fetched async. Mostly helps the order!
                                  -            //plugin
                                  -            if (!s.skipAsync[url]) {
                                  -                node.async = true;
                                  -            }
                                  -            node.setAttribute("data-requirecontext", contextName);
                                  -            node.setAttribute("data-requiremodule", moduleName);
                                  -
                                  -            //Set up load listener.
                                  -            if (node.addEventListener) {
                                  -                node.addEventListener("load", callback, false);
                                  -            } else {
                                  -                //Probably IE. If not it will throw an error, which will be
                                  -                //useful to know. IE (at least 6-8) do not fire
                                  -                //script onload right after executing the script, so
                                  -                //we cannot tie the anonymous require.def call to a name.
                                  -                //However, IE reports the script as being in "interactive"
                                  -                //readyState at the time of the require.def call.
                                  -                useInteractive = true;
                                  -                node.attachEvent("onreadystatechange", callback);
                                  -            }
                                  -            node.src = url;
                                  -
                                  -            //For some cache cases in IE 6-8, the script executes before the end
                                  -            //of the appendChild execution, so to tie an anonymous require.def
                                  -            //call to the module name (which is stored on the node), hold on
                                  -            //to a reference to this node, but clear after the DOM insertion.
                                  -            currentlyAddingScript = node;
                                  -            if (baseElement) {
                                  -                s.head.insertBefore(node, baseElement);
                                  -            } else {
                                  -                s.head.appendChild(node);
                                  -            }
                                  -            currentlyAddingScript = null;
                                  -            return node;
                                  -        } else if (isWebWorker) {
                                  -            //In a web worker, use importScripts. This is not a very
                                  -            //efficient use of importScripts, importScripts will block until
                                  -            //its script is downloaded and evaluated. However, if web workers
                                  -            //are in play, the expectation that a build has been done so that
                                  -            //only one script needs to be loaded anyway. This may need to be
                                  -            //reevaluated if other use cases become common.
                                  -            context = s.contexts[contextName];
                                  -            loaded = context.loaded;
                                  -            loaded[moduleName] = false;
                                  -            importScripts(url);
                                  -
                                  -            //Account for anonymous modules
                                  -            req.completeLoad(moduleName, context);
                                  -        }
                                  -        return null;
                                  -    };
                                  -
                                  -    //Determine what baseUrl should be if not already defined via a require config object
                                  -    s.baseUrl = cfg.baseUrl;
                                  -    if (isBrowser && (!s.baseUrl || !s.head)) {
                                  -        //Figure out baseUrl. Get it from the script tag with require.js in it.
                                  -        scripts = document.getElementsByTagName("script");
                                  -        if (cfg.baseUrlMatch) {
                                  -            rePkg = cfg.baseUrlMatch;
                                  -        } else {
                                  -            
                                  -            
                                  -            
                                  -                        rePkg = /(allplugins-)?require\.js(\W|$)/i;
                                  -            
                                  -                    }
                                  -
                                  -        for (i = scripts.length - 1; i > -1 && (script = scripts[i]); i--) {
                                  -            //Set the "head" where we can append children by
                                  -            //using the script's parent.
                                  -            if (!s.head) {
                                  -                s.head = script.parentNode;
                                  -            }
                                  -
                                  -            //Look for a data-main attribute to set main script for the page
                                  -            //to load.
                                  -            if (!cfg.deps) {
                                  -                dataMain = script.getAttribute('data-main');
                                  -                if (dataMain) {
                                  -                    cfg.deps = [dataMain];
                                  -                }
                                  -            }
                                  -
                                  -            //Using .src instead of getAttribute to get an absolute URL.
                                  -            //While using a relative URL will be fine for script tags, other
                                  -            //URLs used for text! resources that use XHR calls might benefit
                                  -            //from an absolute URL.
                                  -            src = script.src;
                                  -            if (src && !s.baseUrl) {
                                  -                m = src.match(rePkg);
                                  -                if (m) {
                                  -                    s.baseUrl = src.substring(0, m.index);
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -        //****** START page load functionality ****************
                                  -    /**
                                  -     * Sets the page as loaded and triggers check for all modules loaded.
                                  -     */
                                  -    req.pageLoaded = function () {
                                  -        if (!s.isPageLoaded) {
                                  -            s.isPageLoaded = true;
                                  -            if (scrollIntervalId) {
                                  -                clearInterval(scrollIntervalId);
                                  -            }
                                  -
                                  -            //Part of a fix for FF < 3.6 where readyState was not set to
                                  -            //complete so libraries like jQuery that check for readyState
                                  -            //after page load where not getting initialized correctly.
                                  -            //Original approach suggested by Andrea Giammarchi:
                                  -            //http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
                                  -            //see other setReadyState reference for the rest of the fix.
                                  -            if (setReadyState) {
                                  -                document.readyState = "complete";
                                  -            }
                                  -
                                  -            req.callReady();
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Internal function that calls back any ready functions. If you are
                                  -     * integrating RequireJS with another library without require.ready support,
                                  -     * you can define this method to call your page ready code instead.
                                  -     */
                                  -    req.callReady = function () {
                                  -        var callbacks = s.readyCalls, i, callback, contexts, context, prop;
                                  -
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            if (callbacks.length) {
                                  -                s.readyCalls = [];
                                  -                for (i = 0; (callback = callbacks[i]); i++) {
                                  -                    callback();
                                  -                }
                                  -            }
                                  -
                                  -            //If jQuery with readyWait is being tracked, updated its
                                  -            //readyWait count.
                                  -            contexts = s.contexts;
                                  -            for (prop in contexts) {
                                  -                if (!(prop in empty)) {
                                  -                    context = contexts[prop];
                                  -                    if (context.jQueryIncremented) {
                                  -                        context.jQuery.readyWait -= 1;
                                  -                        context.jQueryIncremented = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    /**
                                  -     * Registers functions to call when the page is loaded
                                  -     */
                                  -    req.ready = function (callback) {
                                  -        if (s.isPageLoaded && s.isDone) {
                                  -            callback();
                                  -        } else {
                                  -            s.readyCalls.push(callback);
                                  -        }
                                  -        return req;
                                  -    };
                                  -
                                  -    if (isBrowser) {
                                  -        if (document.addEventListener) {
                                  -            //Standards. Hooray! Assumption here that if standards based,
                                  -            //it knows about DOMContentLoaded.
                                  -            document.addEventListener("DOMContentLoaded", req.pageLoaded, false);
                                  -            window.addEventListener("load", req.pageLoaded, false);
                                  -            //Part of FF < 3.6 readystate fix (see setReadyState refs for more info)
                                  -            if (!document.readyState) {
                                  -                setReadyState = true;
                                  -                document.readyState = "loading";
                                  -            }
                                  -        } else if (window.attachEvent) {
                                  -            window.attachEvent("onload", req.pageLoaded);
                                  -
                                  -            //DOMContentLoaded approximation, as found by Diego Perini:
                                  -            //http://javascript.nwbox.com/IEContentLoaded/
                                  -            if (self === self.top) {
                                  -                scrollIntervalId = setInterval(function () {
                                  -                    try {
                                  -                        //From this ticket:
                                  -                        //http://bugs.dojotoolkit.org/ticket/11106,
                                  -                        //In IE HTML Application (HTA), such as in a selenium test,
                                  -                        //javascript in the iframe can't see anything outside
                                  -                        //of it, so self===self.top is true, but the iframe is
                                  -                        //not the top window and doScroll will be available
                                  -                        //before document.body is set. Test document.body
                                  -                        //before trying the doScroll trick.
                                  -                        if (document.body) {
                                  -                            document.documentElement.doScroll("left");
                                  -                            req.pageLoaded();
                                  -                        }
                                  -                    } catch (e) {}
                                  -                }, 30);
                                  -            }
                                  -        }
                                  -
                                  -        //Check if document already complete, and if so, just trigger page load
                                  -        //listeners. NOTE: does not work with Firefox before 3.6. To support
                                  -        //those browsers, manually call require.pageLoaded().
                                  -        if (document.readyState === "complete") {
                                  -            req.pageLoaded();
                                  -        }
                                  -    }
                                  -    //****** END page load functionality ****************
                                  -    
                                  -    //Set up default context. If require was a configuration object, use that as base config.
                                  -    req(cfg);
                                  -
                                  -    //If modules are built into require.js, then need to make sure dependencies are
                                  -    //traced. Use a setTimeout in the browser world, to allow all the modules to register
                                  -    //themselves. In a non-browser env, assume that modules are not built into require.js,
                                  -    //which seems odd to do on the server.
                                  -    if (typeof setTimeout !== "undefined") {
                                  -        setTimeout(function () {
                                  -            var ctx = s.contexts[(cfg.context || defContextName)];
                                  -            //Allow for jQuery to be loaded/already in the page, and if jQuery 1.4.3,
                                  -            //make sure to hold onto it for readyWait triggering.
                                  -            jQueryCheck(ctx);
                                  -            
                                  -            // TODO: xxxpedro timing issue in FF
                                  -            setTimeout(function(){ resume(ctx); }, 0);
                                  -        }, 0);
                                  -    }
                                  -}());
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/scope.js b/branches/flexBox/sandbox/sandbox/requireScope/v2/scope.js
                                  deleted file mode 100644
                                  index eb0a720d..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/scope.js
                                  +++ /dev/null
                                  @@ -1,28 +0,0 @@
                                  -require.def("scope", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) { // no scope needed once lib is a "top-level" module
                                  -// ************************************************************************************************ 
                                  -
                                  -console.log("loading Scope module");
                                  -
                                  -exports.create = function()
                                  -{
                                  -    var newScope = {};
                                  -    newScope.include = function(name)
                                  -    {
                                  -        var m = require(name);
                                  -        for (var n in m)
                                  -            newScope[n] = m[n];
                                  -    };
                                  -    return newScope;
                                  -};
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  diff --git a/branches/flexBox/sandbox/sandbox/requireScope/v2/test.html b/branches/flexBox/sandbox/sandbox/requireScope/v2/test.html
                                  deleted file mode 100644
                                  index b46869a1..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/requireScope/v2/test.html
                                  +++ /dev/null
                                  @@ -1,56 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug=true>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <title></title>
                                  -<script src="https://getfirebug.com/firebug-lite.js"></script>
                                  -<script src="require.js"></script>
                                  -<script>
                                  -require.def("App", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module", 
                                  -    "a"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -var a = require("a");
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  -</script>
                                  -  </head>
                                  -  <body>
                                  -    <h1>CommonJS module loader <code>WITH(scope)</code> handling</h1>
                                  -    <p>See source code of <a href="Lib.js">Lib.js</a> and <a href="Firebug/Script.js">Firebug/Script.js</a> for more examples of usage.</p>
                                  -    <p>The code used in this file is:</p>
                                  -    <hr />
                                  -<pre>
                                  -require.def("App", // module ID
                                  -// ************************************************************************************************ 
                                  -[
                                  -    // list of dependencies
                                  -    "require", 
                                  -    "exports", 
                                  -    "module", 
                                  -    "Firebug/Script"
                                  -],
                                  -// ************************************************************************************************ 
                                  -function(require, exports, module) {
                                  -// ************************************************************************************************ 
                                  -
                                  -var Script = require("Firebug/Script");
                                  -Script.initialize();
                                  -Script.show();
                                  -
                                  -// ************************************************************************************************ 
                                  -});
                                  -</pre>
                                  -    <hr />
                                  -  </body>
                                  -</html>
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader.js
                                  deleted file mode 100644
                                  index dbac1b41..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader.js
                                  +++ /dev/null
                                  @@ -1,615 +0,0 @@
                                  -var debug = false;
                                  -
                                  -// TODO: xxxpedro
                                  -FileCache = {};
                                  -
                                  -var KeywordNames = {
                                  -	"=break":      "BREAK",
                                  -	"=case":       "CASE",
                                  -	"=catch":      "CATCH",
                                  -	"=const":      "VAR",
                                  -	"=continue":   "CONTINUE",
                                  -	"=default":    "DEFAULT",
                                  -	"=delete":     "DELETE",
                                  -	"=do":         "DO",
                                  -	"=else":       "ELSE",
                                  -	"=false":      "FALSE",
                                  -	"=finally":    "FINALLY",
                                  -	"=for":        "FOR",
                                  -	"=function":   "FUNCTION",
                                  -	"=if":         "IF",
                                  -	"=in":         "IN",
                                  -	"=instanceof": "INSTANCEOF",
                                  -	"=new":        "NEW",
                                  -	"=null":       "NULL",
                                  -	"=return":     "RETURN",
                                  -	"=switch":     "SWITCH",
                                  -	"=this":       "THIS",
                                  -	"=throw":      "THROW",
                                  -	"=true":       "TRUE",
                                  -	"=try":        "TRY",
                                  -	"=typeof":     "TYPEOF",
                                  -	"=void":       "VOID",
                                  -	"=while":      "WHILE",
                                  -	"=with":       "WITH",
                                  -	"=var":        "VAR"
                                  -};
                                  -
                                  -var PunctuationNames = {
                                  -	";":   "SEMICOLON",
                                  -	",":   "COMMA",
                                  -	"?":   "HOOK",
                                  -	":":   "COLON",
                                  -	"||":  "OR", 
                                  -	"&&":  "AND",
                                  -	"|":   "BITWISE_OR",
                                  -	"^":   "BITWISE_XOR",
                                  -	"&":   "BITWISE_AND",
                                  -	"===": "STRICT_EQ", 
                                  -	"==":  "EQ",
                                  -	"=":   "ASSIGN",
                                  -	"!==": "STRICT_NE",
                                  -	"!=":  "NE",
                                  -	"<<":  "LSH",
                                  -	"<=":  "LE", 
                                  -	"<":   "LT",
                                  -	">>>": "URSH",
                                  -	">>":  "RSH",
                                  -	">=":  "GE",
                                  -	">":   "GT", 
                                  -	"++":  "INCREMENT",
                                  -	"--":  "DECREMENT",
                                  -	"+":   "PLUS",
                                  -	"-":   "MINUS",
                                  -	"*":   "MUL",
                                  -	"/":   "DIV", 
                                  -	"%":   "MOD",
                                  -	"!":   "NOT",
                                  -	"~":   "BITWISE_NOT",
                                  -	".":   "DOT",
                                  -	"[":   "LEFT_BRACKET",
                                  -	"]":   "RIGHT_BRACKET",
                                  -	"{":   "LEFT_CURLY",
                                  -	"}":   "RIGHT_CURLY",
                                  -	"(":   "LEFT_PAREN",
                                  -	")":   "RIGHT_PAREN"
                                  -};
                                  -
                                  -TokenReader = {
                                  -	keepDocs: true,
                                  -	keepWhite: false,
                                  -	keepComments: false
                                  -};
                                  -
                                  -TokenReader.getRelevantTokens = function(srcFile)
                                  -{
                                  -	var cache = FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.relevantTokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile);
                                  -};
                                  -
                                  -TokenReader.getAllTokens = function(srcFile)
                                  -{
                                  -	var cache = JSDOC.FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.tokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile, true);
                                  -};
                                  -
                                  -TokenReader.parseFile = function(srcFile, allTokens)
                                  -{
                                  -	if(debug) console.time("TokenReader.prototype.tokenize()");
                                  -
                                  -	var text;
                                  -	
                                  -	try
                                  -    {
                                  -		text = getResource(srcFile);
                                  -	}
                                  -	catch(e)
                                  -    {
                                  -		console.log("Can't read source file '"+srcFile+"': "+e.message);
                                  -	}
                                  -
                                  -	var cursor = 0;
                                  -	var start = 0;
                                  -	var line = 1;
                                  -	
                                  -	var c;
                                  -	var str;
                                  -	var q;
                                  -	var length = text.length;
                                  -	
                                  -	var varNameChars = "$_.";
                                  -	var puncNames = PunctuationNames;
                                  -	
                                  -	var tokens = [];
                                  -	/**@ignore*/
                                  -	tokens.last = function() { return this[this.length-1]; };
                                  -	/**@ignore*/
                                  -	tokens.lastSym = function() {
                                  -		for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) {
                                  -			if (!(e.type == "WHIT" || e.type == "COMM")) return e;
                                  -		}
                                  -	};
                                  -	
                                  -	var relevantTokens = [];
                                  -	relevantTokens.last = tokens.last;
                                  -	relevantTokens.lastSym = tokens.lastSym;
                                  -	
                                  -
                                  -	var look = function(n, considerWhitespace) {
                                  -		if (typeof n == "undefined") n = 0;
                                  -		if (typeof considerWhitespace == "undefined") considerWhitespace = false;
                                  -		
                                  -		if (cursor+n < 0 || cursor+n >= text.length) {
                                  -			var result = new String("");
                                  -			result.eof = true;
                                  -			return result;
                                  -		}
                                  -		else if ( considerWhitespace ) {
                                  -			var count = 0;
                                  -			var i = cursor;
                                  -	
                                  -			while (true) {
                                  -				if (text.charAt(n+i).match(/\s/) ) {
                                  -					if (n < 0) i--; else i++;
                                  -					continue;
                                  -				}
                                  -				else {
                                  -					return text.charAt(n+i);
                                  -				}
                                  -			}
                                  -		}
                                  -		else {
                                  -			return text.charAt(cursor+n);
                                  -		}
                                  -	};
                                  -	
                                  -	var next = function(n) {
                                  -		if (typeof n == "undefined") n = 1;
                                  -		if (n < 1) return null;
                                  -		
                                  -		var pulled = "";
                                  -		for (var i = 0; i < n; i++) {
                                  -			if (cursor+i < text.length) {
                                  -			
                                  -				// TODO: xxxpedro line number
                                  -				if (text.charAt(cursor+i) == "\n") {
                                  -					line++;
                                  -				}
                                  -				
                                  -				pulled += text.charAt(cursor+i);
                                  -			}
                                  -			else {
                                  -				var result = new String("");
                                  -				result.eof = true;
                                  -				return result;
                                  -			}
                                  -		}
                                  -	
                                  -		cursor += n;
                                  -		return pulled;
                                  -	};
                                  -	
                                  -	var balance = function(/**String*/start, /**String*/stop) {
                                  -		if (!stop) stop = JSDOC.Lang.matching(start);
                                  -		
                                  -		var token;
                                  -		var depth = 0;
                                  -		var got = [];
                                  -		var started = false;
                                  -		
                                  -		while ((token = look())) {
                                  -			if (token.isa == start) {
                                  -				depth++;
                                  -				started = true;
                                  -			}
                                  -			
                                  -			if (started) {
                                  -				got.push(token);
                                  -			}
                                  -			
                                  -			if (token.isa == stop) {
                                  -				depth--;
                                  -				if (depth == 0) return got;
                                  -			}
                                  -			if (!next()) break;
                                  -		}
                                  -	};
                                  -
                                  -	var createToken = function(data, type, name) {
                                  -	
                                  -		var token = {
                                  -			data: data,
                                  -			type: type,
                                  -			name: name,
                                  -			line: start
                                  -		};
                                  -		
                                  -		token.is = function(what) {
                                  -			return this.name === what || this.type === what;
                                  -		};
                                  -		
                                  -		tokens.push(token);
                                  -		
                                  -		if (name == "JSDOC")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		else if (type != "COMM" && type != "WHIT")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		
                                  -		return token;
                                  -	};
                                  -	
                                  -
                                  -	c = text.charAt(cursor);
                                  -	
                                  -	while (cursor < length) {
                                  -	
                                  -		start = line;
                                  -		//stream.line = line;
                                  -		//stream.cursor = cursor;
                                  -		
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// Whitespace
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		if (c <= " ")
                                  -		{
                                  -			str = c;
                                  -			cursor++;
                                  -			
                                  -			if (c == "\n") line++;
                                  -			
                                  -			while (true) {
                                  -				c = text.charAt(cursor);
                                  -				if (c == "\n") line++;
                                  -				
                                  -				if (!c || c > " ")
                                  -				{
                                  -					break;
                                  -				}
                                  -				str += c;
                                  -				cursor++;
                                  -			}
                                  -			
                                  -			//if (this.collapseWhite) str = " ";
                                  -			//if (this.keepWhite) createToken(str, "WHIT", "SPACE");
                                  -			createToken(str, "WHIT", "SPACE");
                                  -			
                                  -			continue;
                                  -			
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// names
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -		} else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) {
                                  -				str = c;
                                  -				cursor += 1;
                                  -				for (;;) {
                                  -						c = text.charAt(cursor);
                                  -						if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
                                  -								(c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) {
                                  -							str += c;
                                  -							cursor += 1;
                                  -						} else {
                                  -							break;
                                  -						}
                                  -				}
                                  -				
                                  -				var name;
                                  -				if ((name = KeywordNames[str])) createToken(str, "KEYW", name);
                                  -				else createToken(str, "NAME", "NAME");
                                  -				
                                  -				//console.log("name " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -				//result.push(make('name', str));
                                  -				
                                  -				continue;
                                  -
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// number
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -		// A number cannot start with a decimal point. It must start with a digit,
                                  -		// possibly '0'.
                                  -
                                  -		} else if (c >= '0' && c <= '9') {
                                  -			str = c;
                                  -			cursor += 1;
                                  -
                                  -			// Look for more digits.
                                  -
                                  -			for (;;) {
                                  -				c = text.charAt(cursor);
                                  -				if (c < '0' || c > '9') {
                                  -					break;
                                  -				}
                                  -				cursor += 1;
                                  -				str += c;
                                  -			}
                                  -
                                  -			// Look for a decimal fraction part.
                                  -
                                  -			if (c === '.') {
                                  -				cursor += 1;
                                  -				str += c;
                                  -				for (;;) {
                                  -					c = text.charAt(cursor);
                                  -					if (c < '0' || c > '9') {
                                  -						break;
                                  -					}
                                  -					cursor += 1;
                                  -					str += c;
                                  -				}
                                  -			}
                                  -
                                  -			// Look for an exponent part.
                                  -
                                  -			if (c === 'e' || c === 'E') {
                                  -				cursor += 1;
                                  -				str += c;
                                  -				c = text.charAt(cursor);
                                  -				if (c === '-' || c === '+') {
                                  -					cursor += 1;
                                  -					str += c;
                                  -					c = text.charAt(cursor);
                                  -				}
                                  -				if (c < '0' || c > '9') {
                                  -					//make('number', str).error("Bad exponent");
                                  -				}
                                  -				do {
                                  -					cursor += 1;
                                  -					str += c;
                                  -					c = text.charAt(cursor);
                                  -				} while (c >= '0' && c <= '9');
                                  -			}
                                  -
                                  -			// Make sure the next character is not a letter.
                                  -
                                  -			if (c >= 'a' && c <= 'z') {
                                  -				str += c;
                                  -				cursor += 1;
                                  -				//make('number', str).error("Bad number");
                                  -			}
                                  -
                                  -			// Convert the string value to a number. If it is finite, then it is a good
                                  -			// token.
                                  -
                                  -			n = +str;
                                  -			if (isFinite(n)) {
                                  -				//result.push(make('number', n));
                                  -				createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -			} else {
                                  -				//make('number', str).error("Bad number");
                                  -			}
                                  -
                                  -			continue;
                                  -
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// multi-line comment
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -		} else if (c == "/" && text.charAt(cursor+1) == "*") {
                                  -		
                                  -			var isJSDOC = text.charAt(cursor+3);
                                  -			isJSDOC = text.charAt(cursor+2) == "*" && 
                                  -					(isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -					isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /****
                                  -					
                                  -			str = "/*";
                                  -			cursor += 2;
                                  -			
                                  -			while (true) {
                                  -				c = text.charAt(cursor);
                                  -				str += c;
                                  -				if (c == "\n") line++;
                                  -				
                                  -				if ( c == "*" && text.charAt(cursor+1) == "/")
                                  -				{
                                  -					str += "/";
                                  -					cursor += 2;
                                  -					c = text.charAt(cursor);
                                  -					break;
                                  -				}
                                  -				cursor++;
                                  -			}
                                  -			
                                  -			// to start doclet we allow /** or /*** but not /** / or /****
                                  -			//if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC");
                                  -			//else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream );
                                  -			
                                  -			if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -			else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -			
                                  -			continue;
                                  -			
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// single-line comment
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -		} else if (c === '/' && text.charAt(cursor + 1) === '/') {
                                  -			str = c;
                                  -			
                                  -			for (;;) {
                                  -				cursor++;
                                  -				c = text.charAt(cursor);
                                  -				if (c == "\n") line++;
                                  -
                                  -				if (c === '\n' || c === '\r' || c === '') {
                                  -					break;
                                  -				}
                                  -				str += c;
                                  -			}
                                  -		
                                  -			//if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -			createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -			
                                  -			continue;
                                  -		}
                                  -		
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// string
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -		else if (c === '\'' || c === '"') {
                                  -			str = c;
                                  -			q = c;
                                  -			for (;;) {
                                  -				cursor += 1;
                                  -				c = text.charAt(cursor);
                                  -				str += c;
                                  -				
                                  -				if (c < ' ') {
                                  -					//make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -					//    "Unterminated string." :
                                  -					//    "Control character in string.", make('', str));
                                  -				}
                                  -
                                  -				// Look for the closing quote.
                                  -
                                  -				if (c === q) {
                                  -					break;
                                  -				}
                                  -
                                  -				// Look for escapement.
                                  -
                                  -				if (c === '\\') {
                                  -					cursor += 1;
                                  -					if (cursor >= length) {
                                  -						//make('string', str).error("Unterminated string");
                                  -					}
                                  -					c = text.charAt(cursor);
                                  -					switch (c) {
                                  -					case 'b':
                                  -						c = '\b';
                                  -						break;
                                  -					case 'f':
                                  -						c = '\f';
                                  -						break;
                                  -					case 'n':
                                  -						c = '\n';
                                  -						break;
                                  -					case 'r':
                                  -						c = '\r';
                                  -						break;
                                  -					case 't':
                                  -						c = '\t';
                                  -						break;
                                  -					case 'u':
                                  -						if (cursor >= length) {
                                  -							//make('string', str).error("Unterminated string");
                                  -						}
                                  -						c = parseInt(text.substr(cursor + 1, 4), 16);
                                  -						if (!isFinite(c) || c < 0) {
                                  -							//make('string', str).error("Unterminated string");
                                  -						}
                                  -						c = String.fromCharCode(c);
                                  -						cursor += 4;
                                  -						break;
                                  -					}
                                  -				}
                                  -			}
                                  -			cursor += 1;
                                  -			//result.push(make('string', str));
                                  -			createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -			c = text.charAt(cursor);
                                  -			continue;
                                  -		}
                                  -		
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// regular expression
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		
                                  -		else if (c == "/")
                                  -		{
                                  -		
                                  -			//console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" ));
                                  -			
                                  -			if (
                                  -				!(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol
                                  -				!last.is("NUMB") && !last.is("NAME") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET")
                                  -				)
                                  -			{
                                  -			
                                  -				str = c;
                                  -				var lastC = c;
                                  -				
                                  -				while(true)
                                  -				{
                                  -					cursor++;
                                  -					c = text.charAt(cursor);
                                  -					str += c;
                                  -					
                                  -					if (c == "/" && lastC != "^" && (lastC != "\\" || (lastC == "\\" && cursor > 2 && text.charAt(cursor-2) == "\\")) )
                                  -					{
                                  -						break;
                                  -					}
                                  -					lastC = c;
                                  -				}
                                  -				
                                  -				//console.log("REGX " + str);
                                  -				createToken(str, "REGX", "REGX");
                                  -							
                                  -				cursor++;
                                  -				c = text.charAt(cursor);
                                  -				
                                  -				continue;
                                  -			}
                                  -		}
                                  -		
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		// punctuations and/or operators
                                  -		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -		
                                  -		if (puncNames[c])
                                  -		{
                                  -			str = c;
                                  -			 
                                  -			while (true)
                                  -			{
                                  -				cursor++;
                                  -				c = text.charAt(cursor);
                                  -				
                                  -				if (!c || !puncNames[str+c])
                                  -				{
                                  -					break;
                                  -				}
                                  -				
                                  -				str += c;
                                  -			}
                                  -			 
                                  -			//console.log("punc " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -			createToken(str, "PUNC", puncNames[str]);
                                  -			
                                  -			continue;
                                  -		}
                                  -			
                                  -        if (debug)
                                  -		    console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length);
                                  -		
                                  -		// if execution reaches here then an error has happened
                                  -		createToken(next(), "TOKN", "UNKNOWN_TOKEN");
                                  -		
                                  -	}
                                  -	
                                  -	// TODO: xxxpedro performance - cache source
                                  -	FileCache[srcFile] = {
                                  -		text: text,
                                  -		lines: line,
                                  -		tokens: tokens,
                                  -		relevantTokens: relevantTokens
                                  -	};
                                  -	
                                  -	if (debug) console.timeEnd("TokenReader.prototype.tokenize()");
                                  -	
                                  -	return allTokens ? tokens : relevantTokens;
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js
                                  deleted file mode 100644
                                  index 6533f12e..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js
                                  +++ /dev/null
                                  @@ -1,702 +0,0 @@
                                  -// TODO: divide string into chuncks
                                  -
                                  -var debug = false;
                                  -
                                  -// TODO: xxxpedro
                                  -FileCache = {};
                                  -
                                  -var KeywordNames = {
                                  -	"=break":      "BREAK",
                                  -	"=case":       "CASE",
                                  -	"=catch":      "CATCH",
                                  -	"=const":      "VAR",
                                  -	"=continue":   "CONTINUE",
                                  -	"=default":    "DEFAULT",
                                  -	"=delete":     "DELETE",
                                  -	"=do":         "DO",
                                  -	"=else":       "ELSE",
                                  -	"=false":      "FALSE",
                                  -	"=finally":    "FINALLY",
                                  -	"=for":        "FOR",
                                  -	"=function":   "FUNCTION",
                                  -	"=if":         "IF",
                                  -	"=in":         "IN",
                                  -	"=instanceof": "INSTANCEOF",
                                  -	"=new":        "NEW",
                                  -	"=null":       "NULL",
                                  -	"=return":     "RETURN",
                                  -	"=switch":     "SWITCH",
                                  -	"=this":       "THIS",
                                  -	"=throw":      "THROW",
                                  -	"=true":       "TRUE",
                                  -	"=try":        "TRY",
                                  -	"=typeof":     "TYPEOF",
                                  -	"=void":       "VOID",
                                  -	"=while":      "WHILE",
                                  -	"=with":       "WITH",
                                  -	"=var":        "VAR"
                                  -};
                                  -
                                  -var PunctuationNames = {
                                  -	";":   "SEMICOLON",
                                  -	",":   "COMMA",
                                  -	"?":   "HOOK",
                                  -	":":   "COLON",
                                  -	"||":  "OR", 
                                  -	"&&":  "AND",
                                  -	"|":   "BITWISE_OR",
                                  -	"^":   "BITWISE_XOR",
                                  -	"&":   "BITWISE_AND",
                                  -	"===": "STRICT_EQ", 
                                  -	"==":  "EQ",
                                  -	"=":   "ASSIGN",
                                  -	"!==": "STRICT_NE",
                                  -	"!=":  "NE",
                                  -	"<<":  "LSH",
                                  -	"<=":  "LE", 
                                  -	"<":   "LT",
                                  -	">>>": "URSH",
                                  -	">>":  "RSH",
                                  -	">=":  "GE",
                                  -	">":   "GT", 
                                  -	"++":  "INCREMENT",
                                  -	"--":  "DECREMENT",
                                  -	"+":   "PLUS",
                                  -	"-":   "MINUS",
                                  -	"*":   "MUL",
                                  -	"/":   "DIV", 
                                  -	"%":   "MOD",
                                  -	"!":   "NOT",
                                  -	"~":   "BITWISE_NOT",
                                  -	".":   "DOT",
                                  -	"[":   "LEFT_BRACKET",
                                  -	"]":   "RIGHT_BRACKET",
                                  -	"{":   "LEFT_CURLY",
                                  -	"}":   "RIGHT_CURLY",
                                  -	"(":   "LEFT_PAREN",
                                  -	")":   "RIGHT_PAREN"
                                  -};
                                  -
                                  -TokenReader = {
                                  -	keepDocs: true,
                                  -	keepWhite: false,
                                  -	keepComments: false
                                  -};
                                  -
                                  -TokenReader.getRelevantTokens = function(srcFile)
                                  -{
                                  -	var cache = FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.relevantTokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile);
                                  -};
                                  -
                                  -TokenReader.getAllTokens = function(srcFile)
                                  -{
                                  -	var cache = JSDOC.FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.tokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile, true);
                                  -};
                                  -
                                  -TokenReader.parseFile = function(srcFile, allTokens)
                                  -{
                                  -	if(debug) console.time("TokenReader.prototype.tokenize()");
                                  -
                                  -	var _text;
                                  -	
                                  -	try
                                  -    {
                                  -		_text = getResource(srcFile);
                                  -	}
                                  -	catch(e)
                                  -    {
                                  -		console.log("Can't read source file '"+srcFile+"': "+e.message);
                                  -	}
                                  -
                                  -	var cursor = 0;
                                  -	var start = 0;
                                  -	var line = 1;
                                  -	
                                  -	var _c;
                                  -	
                                  -	var tokens = [];
                                  -	/**@ignore*/
                                  -	tokens.last = function() { return this[this.length-1]; };
                                  -	/**@ignore*/
                                  -	tokens.lastSym = function() {
                                  -		for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) {
                                  -			if (!(e.type == "WHIT" || e.type == "COMM")) return e;
                                  -		}
                                  -	};
                                  -	
                                  -	var relevantTokens = [];
                                  -	relevantTokens.last = tokens.last;
                                  -	relevantTokens.lastSym = tokens.lastSym;
                                  -	
                                  -
                                  -	var look = function(n, considerWhitespace) {
                                  -		if (typeof n == "undefined") n = 0;
                                  -		if (typeof considerWhitespace == "undefined") considerWhitespace = false;
                                  -		
                                  -		if (cursor+n < 0 || cursor+n >= _text.length) {
                                  -			var result = new String("");
                                  -			result.eof = true;
                                  -			return result;
                                  -		}
                                  -		else if ( considerWhitespace ) {
                                  -			var count = 0;
                                  -			var i = cursor;
                                  -	
                                  -			while (true) {
                                  -				if (_text.charAt(n+i).match(/\s/) ) {
                                  -					if (n < 0) i--; else i++;
                                  -					continue;
                                  -				}
                                  -				else {
                                  -					return _text.charAt(n+i);
                                  -				}
                                  -			}
                                  -		}
                                  -		else {
                                  -			return _text.charAt(cursor+n);
                                  -		}
                                  -	};
                                  -	
                                  -	var next = function(n) {
                                  -		if (typeof n == "undefined") n = 1;
                                  -		if (n < 1) return null;
                                  -		
                                  -		var pulled = "";
                                  -		for (var i = 0; i < n; i++) {
                                  -			if (cursor+i < _text.length) {
                                  -			
                                  -				// TODO: xxxpedro line number
                                  -				if (_text.charAt(cursor+i) == "\n") {
                                  -					line++;
                                  -				}
                                  -				
                                  -				pulled += _text.charAt(cursor+i);
                                  -			}
                                  -			else {
                                  -				var result = new String("");
                                  -				result.eof = true;
                                  -				return result;
                                  -			}
                                  -		}
                                  -	
                                  -		cursor += n;
                                  -		return pulled;
                                  -	};
                                  -	
                                  -	var balance = function(/**String*/start, /**String*/stop) {
                                  -		if (!stop) stop = JSDOC.Lang.matching(start);
                                  -		
                                  -		var token;
                                  -		var depth = 0;
                                  -		var got = [];
                                  -		var started = false;
                                  -		
                                  -		while ((token = look())) {
                                  -			if (token.isa == start) {
                                  -				depth++;
                                  -				started = true;
                                  -			}
                                  -			
                                  -			if (started) {
                                  -				got.push(token);
                                  -			}
                                  -			
                                  -			if (token.isa == stop) {
                                  -				depth--;
                                  -				if (depth == 0) return got;
                                  -			}
                                  -			if (!next()) break;
                                  -		}
                                  -	};
                                  -
                                  -	var _createToken = function(data, type, name) {
                                  -	
                                  -		var token = {
                                  -			data: data,
                                  -			type: type,
                                  -			name: name,
                                  -			line: start
                                  -		};
                                  -		
                                  -		token.is = function(what) {
                                  -			return this.name === what || this.type === what;
                                  -		};
                                  -		
                                  -		tokens.push(token);
                                  -		
                                  -		if (name == "JSDOC")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		else if (type != "COMM" && type != "WHIT")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		
                                  -		return token;
                                  -	};
                                  -	
                                  -
                                  -	_c = _text.charAt(cursor);
                                  -	
                                  -	var processingCallback;
                                  -	var processingTime = 0;
                                  -	var processing = function()
                                  -    {
                                  -        processingTime = new Date().getTime();
                                  -        
                                  -        var c = _c;
                                  -        
                                  -        var text = _text;
                                  -	    var length = text.length;
                                  -        var createToken = _createToken;
                                  -	    
                                  -	    var q;
                                  -	    var str;
                                  -    	var varNameChars = "$_.";
                                  -    	var Punctuations = PunctuationNames;
                                  -    	var Keywords = KeywordNames;
                                  -        
                                  -	
                                  -    	while (cursor < length) {
                                  -    	
                                  -    	    /*
                                  -    	    // NO INTERRUPTIONS
                                  -    	    if (new Date().getTime() - processingTime > 75) {
                                  -    	       setTimeout(processing, 25);
                                  -    	       break;
                                  -            }
                                  -            /**/
                                  -            
                                  -    	
                                  -    		start = line;
                                  -    		//stream.line = line;
                                  -    		//stream.cursor = cursor;
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// Whitespace
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		if (c <= " ")
                                  -    		{
                                  -    			str = c;
                                  -    			cursor++;
                                  -    			
                                  -    			if (c == "\n") line++;
                                  -    			
                                  -    			while (true) {
                                  -    				c = text.charAt(cursor);
                                  -    				if (c == "\n") line++;
                                  -    				
                                  -    				if (!c || c > " ")
                                  -    				{
                                  -    					break;
                                  -    				}
                                  -    				str += c;
                                  -    				cursor++;
                                  -    			}
                                  -    			
                                  -    			//if (this.collapseWhite) str = " ";
                                  -    			//if (this.keepWhite) createToken(str, "WHIT", "SPACE");
                                  -    			createToken(str, "WHIT", "SPACE");
                                  -    			
                                  -    			continue;
                                  -    			
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// names
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) {
                                  -    				str = c;
                                  -    				cursor += 1;
                                  -    				for (;;) {
                                  -    						c = text.charAt(cursor);
                                  -    						if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
                                  -    								(c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) {
                                  -    							str += c;
                                  -    							cursor += 1;
                                  -    						} else {
                                  -    							break;
                                  -    						}
                                  -    				}
                                  -    				
                                  -    				var name;
                                  -    				if ((name = Keywords[str])) createToken(str, "KEYW", name);
                                  -    				else createToken(str, "NAME", "NAME");
                                  -    				
                                  -    				//console.log("name " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -    				//result.push(make('name', str));
                                  -    				
                                  -    				continue;
                                  -    
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// number
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		// A number cannot start with a decimal point. It must start with a digit,
                                  -    		// possibly '0'.
                                  -    
                                  -    		} else if (c >= '0' && c <= '9') {
                                  -    			str = c;
                                  -    			cursor += 1;
                                  -    
                                  -    			// Look for more digits.
                                  -    
                                  -    			for (;;) {
                                  -    				c = text.charAt(cursor);
                                  -    				if (c < '0' || c > '9') {
                                  -    					break;
                                  -    				}
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    			}
                                  -    
                                  -    			// Look for a decimal fraction part.
                                  -    
                                  -    			if (c === '.') {
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    				for (;;) {
                                  -    					c = text.charAt(cursor);
                                  -    					if (c < '0' || c > '9') {
                                  -    						break;
                                  -    					}
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    				}
                                  -    			}
                                  -    
                                  -    			// Look for an exponent part.
                                  -    
                                  -    			if (c === 'e' || c === 'E') {
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    				c = text.charAt(cursor);
                                  -    				if (c === '-' || c === '+') {
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    					c = text.charAt(cursor);
                                  -    				}
                                  -    				if (c < '0' || c > '9') {
                                  -    					//make('number', str).error("Bad exponent");
                                  -    				}
                                  -    				do {
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    					c = text.charAt(cursor);
                                  -    				} while (c >= '0' && c <= '9');
                                  -    			}
                                  -    
                                  -    			// Make sure the next character is not a letter.
                                  -    
                                  -    			if (c >= 'a' && c <= 'z') {
                                  -    				str += c;
                                  -    				cursor += 1;
                                  -    				//make('number', str).error("Bad number");
                                  -    			}
                                  -    
                                  -    			// Convert the string value to a number. If it is finite, then it is a good
                                  -    			// token.
                                  -    
                                  -    			n = +str;
                                  -    			if (isFinite(n)) {
                                  -    				//result.push(make('number', n));
                                  -    				createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -    			} else {
                                  -    				//make('number', str).error("Bad number");
                                  -    			}
                                  -    
                                  -    			continue;
                                  -    
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// multi-line comment
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c == "/" && text.charAt(cursor+1) == "*") {
                                  -    		
                                  -    			var isJSDOC = text.charAt(cursor+3);
                                  -    			isJSDOC = text.charAt(cursor+2) == "*" && 
                                  -    					(isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -    					isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /****
                                  -    					
                                  -    			str = "/*";
                                  -    			cursor += 2;
                                  -    			
                                  -    			while (true) {
                                  -    				c = text.charAt(cursor);
                                  -    				str += c;
                                  -    				if (c == "\n") line++;
                                  -    				
                                  -    				if ( c == "*" && text.charAt(cursor+1) == "/")
                                  -    				{
                                  -    					str += "/";
                                  -    					cursor += 2;
                                  -    					c = text.charAt(cursor);
                                  -    					break;
                                  -    				}
                                  -    				cursor++;
                                  -    			}
                                  -    			
                                  -    			// to start doclet we allow /** or /*** but not /** / or /****
                                  -    			//if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC");
                                  -    			//else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream );
                                  -    			
                                  -    			if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -    			else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -    			
                                  -    			continue;
                                  -    			
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// single-line comment
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c === '/' && text.charAt(cursor + 1) === '/') {
                                  -    			str = c;
                                  -    			
                                  -    			for (;;) {
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				if (c == "\n") line++;
                                  -    
                                  -    				if (c === '\n' || c === '\r' || c === '') {
                                  -    					break;
                                  -    				}
                                  -    				str += c;
                                  -    			}
                                  -    		
                                  -    			//if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -    			createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -    			
                                  -    			continue;
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// string
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		else if (c === '\'' || c === '"') {
                                  -    			str = c;
                                  -    			q = c;
                                  -    			for (;;) {
                                  -    				cursor += 1;
                                  -    				c = text.charAt(cursor);
                                  -    				str += c;
                                  -    				
                                  -    				if (c < ' ') {
                                  -    					//make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -    					//    "Unterminated string." :
                                  -    					//    "Control character in string.", make('', str));
                                  -    				}
                                  -    
                                  -    				// Look for the closing quote.
                                  -    
                                  -    				if (c === q) {
                                  -    					break;
                                  -    				}
                                  -    
                                  -    				// Look for escapement.
                                  -    
                                  -    				if (c === '\\') {
                                  -    					cursor += 1;
                                  -    					if (cursor >= length) {
                                  -    						//make('string', str).error("Unterminated string");
                                  -    					}
                                  -    					c = text.charAt(cursor);
                                  -    					switch (c) {
                                  -    					case 'b':
                                  -    						c = '\b';
                                  -    						break;
                                  -    					case 'f':
                                  -    						c = '\f';
                                  -    						break;
                                  -    					case 'n':
                                  -    						c = '\n';
                                  -    						break;
                                  -    					case 'r':
                                  -    						c = '\r';
                                  -    						break;
                                  -    					case 't':
                                  -    						c = '\t';
                                  -    						break;
                                  -    					case 'u':
                                  -    						if (cursor >= length) {
                                  -    							//make('string', str).error("Unterminated string");
                                  -    						}
                                  -    						c = parseInt(text.substr(cursor + 1, 4), 16);
                                  -    						if (!isFinite(c) || c < 0) {
                                  -    							//make('string', str).error("Unterminated string");
                                  -    						}
                                  -    						c = String.fromCharCode(c);
                                  -    						cursor += 4;
                                  -    						break;
                                  -    					}
                                  -    				}
                                  -    			}
                                  -    			cursor += 1;
                                  -    			//result.push(make('string', str));
                                  -    			createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -    			c = text.charAt(cursor);
                                  -    			continue;
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// regular expression
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		
                                  -    		else if (c == "/")
                                  -    		{
                                  -    		
                                  -    			//console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" ));
                                  -    			
                                  -    			if (
                                  -        				!(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol
                                  -        				!last.is("NUMB") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET") &&
                                  -        				(!last.is("NAME") || last.is("NAME") && last.data == "return")
                                  -    				)
                                  -    			{
                                  -    			
                                  -    				str = c;
                                  -    				var escapeNext = false;
                                  -    				
                                  -    				while(true)
                                  -    				{
                                  -    					cursor++;
                                  -    					c = text.charAt(cursor);
                                  -    					str += c;
                                  -    					
                                  -    					if (escapeNext)
                                  -    					{
                                  -    					   escapeNext = false;
                                  -    					   continue;
                                  -                        }
                                  -                        
                                  -    					if (c == "\\")
                                  -    					{
                                  -    					   escapeNext = true;
                                  -    					   continue;
                                  -                        }
                                  -    					
                                  -    					if (c == "/")
                                  -    					{
                                  -    					    var nextC = text.charAt(cursor+1);
                                  -    					    if (nextC == "g" || nextC == "i")
                                  -    					    {
                                  -            					cursor++;
                                  -            					c = text.charAt(cursor);
                                  -            					str += c;
                                  -                            }
                                  -                            
                                  -    						break;
                                  -    					}
                                  -    				}
                                  -    				
                                  -    				//console.log("REGX " + str);
                                  -    				createToken(str, "REGX", "REGX");
                                  -    							
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				
                                  -    				continue;
                                  -    			}
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// punctuations and/or operators
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		
                                  -    		if (Punctuations[c])
                                  -    		{
                                  -    			str = c;
                                  -    			 
                                  -    			while (true)
                                  -    			{
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				
                                  -    				if (!c || !Punctuations[str+c])
                                  -    				{
                                  -    					break;
                                  -    				}
                                  -    				
                                  -    				str += c;
                                  -    			}
                                  -    			 
                                  -    			//console.log("punc " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -    			createToken(str, "PUNC", Punctuations[str]);
                                  -    			
                                  -    			continue;
                                  -    		}
                                  -    
                                  -    //debugger;
                                  -            if (debug)
                                  -    		    console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length);
                                  -    		
                                  -    		// if execution reaches here then an error has happened
                                  -    		createToken(next(), "TOKN", "UNKNOWN_TOKEN");
                                  -    		
                                  -    	}
                                  -    	
                                  -    	
                                  -    	
                                  -    	_c = c;
                                  -    	
                                  -    	
                                  -    	
                                  -    	if (cursor < length)
                                  -    	{
                                  -    	   //console.log(cursor, length, Math.round(cursor/length*100)+"%")
                                  -    	   
                                  -           out.innerHTML = Math.round(cursor/length*100)+"%";
                                  -        }
                                  -        else if (cursor >= length)
                                  -        {
                                  -            // end
                                  -            processingCallback();
                                  -        }
                                  -	};
                                  -	
                                  -	
                                  -	
                                  -	
                                  -	// TODO: xxxpedro performance - cache source
                                  -	processingCallback = function()
                                  -	{
                                  -	   totalTime = new Date().getTime() - totalTime;
                                  -	   
                                  -	   var numLines = _text.split(/n/).length;
                                  -	   
                                  -	   out.innerHTML = "finished in " + (totalTime/1000).toFixed(2) + " seconds",
                                  -	        "  per line " + (totalTime/numLines).toFixed(2) + " ms"
                                  -            ;
                                  -	   
                                  -	   
                                  -	   /*
                                  -    	FileCache[srcFile] = {
                                  -    		text: text,
                                  -    		lines: line,
                                  -    		tokens: tokens,
                                  -    		relevantTokens: relevantTokens
                                  -    	};
                                  -    	
                                  -    	if (debug) console.timeEnd("TokenReader.prototype.tokenize()");
                                  -    	
                                  -    	var result = allTokens ? tokens : relevantTokens;
                                  -    	
                                  -    	
                                  -    	console.log( "Ok" );*/
                                  -	}
                                  -	
                                  -	var totalTime = new Date().getTime();
                                  -	var out = document.getElementById("progressText");
                                  -	processing();
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4.js
                                  deleted file mode 100644
                                  index 7950d578..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader4.js
                                  +++ /dev/null
                                  @@ -1,700 +0,0 @@
                                  -// TODO: divide string into chuncks
                                  -
                                  -var debug = false;
                                  -
                                  -// TODO: xxxpedro
                                  -FileCache = {};
                                  -
                                  -var KeywordNames = {
                                  -	"=break":      "BREAK",
                                  -	"=case":       "CASE",
                                  -	"=catch":      "CATCH",
                                  -	"=const":      "VAR",
                                  -	"=continue":   "CONTINUE",
                                  -	"=default":    "DEFAULT",
                                  -	"=delete":     "DELETE",
                                  -	"=do":         "DO",
                                  -	"=else":       "ELSE",
                                  -	"=false":      "FALSE",
                                  -	"=finally":    "FINALLY",
                                  -	"=for":        "FOR",
                                  -	"=function":   "FUNCTION",
                                  -	"=if":         "IF",
                                  -	"=in":         "IN",
                                  -	"=instanceof": "INSTANCEOF",
                                  -	"=new":        "NEW",
                                  -	"=null":       "NULL",
                                  -	"=return":     "RETURN",
                                  -	"=switch":     "SWITCH",
                                  -	"=this":       "THIS",
                                  -	"=throw":      "THROW",
                                  -	"=true":       "TRUE",
                                  -	"=try":        "TRY",
                                  -	"=typeof":     "TYPEOF",
                                  -	"=void":       "VOID",
                                  -	"=while":      "WHILE",
                                  -	"=with":       "WITH",
                                  -	"=var":        "VAR"
                                  -};
                                  -
                                  -var PunctuationNames = {
                                  -	";":   "SEMICOLON",
                                  -	",":   "COMMA",
                                  -	"?":   "HOOK",
                                  -	":":   "COLON",
                                  -	"||":  "OR", 
                                  -	"&&":  "AND",
                                  -	"|":   "BITWISE_OR",
                                  -	"^":   "BITWISE_XOR",
                                  -	"&":   "BITWISE_AND",
                                  -	"===": "STRICT_EQ", 
                                  -	"==":  "EQ",
                                  -	"=":   "ASSIGN",
                                  -	"!==": "STRICT_NE",
                                  -	"!=":  "NE",
                                  -	"<<":  "LSH",
                                  -	"<=":  "LE", 
                                  -	"<":   "LT",
                                  -	">>>": "URSH",
                                  -	">>":  "RSH",
                                  -	">=":  "GE",
                                  -	">":   "GT", 
                                  -	"++":  "INCREMENT",
                                  -	"--":  "DECREMENT",
                                  -	"+":   "PLUS",
                                  -	"-":   "MINUS",
                                  -	"*":   "MUL",
                                  -	"/":   "DIV", 
                                  -	"%":   "MOD",
                                  -	"!":   "NOT",
                                  -	"~":   "BITWISE_NOT",
                                  -	".":   "DOT",
                                  -	"[":   "LEFT_BRACKET",
                                  -	"]":   "RIGHT_BRACKET",
                                  -	"{":   "LEFT_CURLY",
                                  -	"}":   "RIGHT_CURLY",
                                  -	"(":   "LEFT_PAREN",
                                  -	")":   "RIGHT_PAREN"
                                  -};
                                  -
                                  -TokenReader = {
                                  -	keepDocs: true,
                                  -	keepWhite: false,
                                  -	keepComments: false
                                  -};
                                  -
                                  -TokenReader.getRelevantTokens = function(srcFile)
                                  -{
                                  -	var cache = FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.relevantTokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile);
                                  -};
                                  -
                                  -TokenReader.getAllTokens = function(srcFile)
                                  -{
                                  -	var cache = JSDOC.FileCache[srcFile];
                                  -	
                                  -	if (cache)
                                  -		return cache.tokens;
                                  -	else
                                  -		return TokenReader.parseFile(srcFile, true);
                                  -};
                                  -
                                  -TokenReader.parseFile = function(srcFile, allTokens)
                                  -{
                                  -	if(debug) console.time("TokenReader.prototype.tokenize()");
                                  -
                                  -	var _text;
                                  -	
                                  -	try
                                  -    {
                                  -		_text = getResource(srcFile);
                                  -	}
                                  -	catch(e)
                                  -    {
                                  -		console.log("Can't read source file '"+srcFile+"': "+e.message);
                                  -	}
                                  -
                                  -	var cursor = 0;
                                  -	var start = 0;
                                  -	var line = 1;
                                  -	
                                  -	var _c;
                                  -	
                                  -	var tokens = [];
                                  -	/**@ignore*/
                                  -	tokens.last = function() { return this[this.length-1]; };
                                  -	/**@ignore*/
                                  -	tokens.lastSym = function() {
                                  -		for (var i = this.length-1, e; i >= 0 && (e = this[i]); i--) {
                                  -			if (!(e.type == "WHIT" || e.type == "COMM")) return e;
                                  -		}
                                  -	};
                                  -	
                                  -	var relevantTokens = [];
                                  -	relevantTokens.last = tokens.last;
                                  -	relevantTokens.lastSym = tokens.lastSym;
                                  -	
                                  -
                                  -	var look = function(n, considerWhitespace) {
                                  -		if (typeof n == "undefined") n = 0;
                                  -		if (typeof considerWhitespace == "undefined") considerWhitespace = false;
                                  -		
                                  -		if (cursor+n < 0 || cursor+n >= _text.length) {
                                  -			var result = new String("");
                                  -			result.eof = true;
                                  -			return result;
                                  -		}
                                  -		else if ( considerWhitespace ) {
                                  -			var count = 0;
                                  -			var i = cursor;
                                  -	
                                  -			while (true) {
                                  -				if (_text.charAt(n+i).match(/\s/) ) {
                                  -					if (n < 0) i--; else i++;
                                  -					continue;
                                  -				}
                                  -				else {
                                  -					return _text.charAt(n+i);
                                  -				}
                                  -			}
                                  -		}
                                  -		else {
                                  -			return _text.charAt(cursor+n);
                                  -		}
                                  -	};
                                  -	
                                  -	var next = function(n) {
                                  -		if (typeof n == "undefined") n = 1;
                                  -		if (n < 1) return null;
                                  -		
                                  -		var pulled = "";
                                  -		for (var i = 0; i < n; i++) {
                                  -			if (cursor+i < _text.length) {
                                  -			
                                  -				// TODO: xxxpedro line number
                                  -				if (_text.charAt(cursor+i) == "\n") {
                                  -					line++;
                                  -				}
                                  -				
                                  -				pulled += _text.charAt(cursor+i);
                                  -			}
                                  -			else {
                                  -				var result = new String("");
                                  -				result.eof = true;
                                  -				return result;
                                  -			}
                                  -		}
                                  -	
                                  -		cursor += n;
                                  -		return pulled;
                                  -	};
                                  -	
                                  -	var balance = function(/**String*/start, /**String*/stop) {
                                  -		if (!stop) stop = JSDOC.Lang.matching(start);
                                  -		
                                  -		var token;
                                  -		var depth = 0;
                                  -		var got = [];
                                  -		var started = false;
                                  -		
                                  -		while ((token = look())) {
                                  -			if (token.isa == start) {
                                  -				depth++;
                                  -				started = true;
                                  -			}
                                  -			
                                  -			if (started) {
                                  -				got.push(token);
                                  -			}
                                  -			
                                  -			if (token.isa == stop) {
                                  -				depth--;
                                  -				if (depth == 0) return got;
                                  -			}
                                  -			if (!next()) break;
                                  -		}
                                  -	};
                                  -
                                  -	var _createToken = function(data, type, name) {
                                  -	
                                  -		var token = {
                                  -			data: data,
                                  -			type: type,
                                  -			name: name,
                                  -			line: start
                                  -		};
                                  -		
                                  -		token.is = function(what) {
                                  -			return this.name === what || this.type === what;
                                  -		};
                                  -		
                                  -		tokens.push(token);
                                  -		
                                  -		if (name == "JSDOC")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		else if (type != "COMM" && type != "WHIT")
                                  -		{
                                  -			relevantTokens.push(token);
                                  -		}
                                  -		
                                  -		return token;
                                  -	};
                                  -	
                                  -
                                  -	_c = _text.charAt(cursor);
                                  -	
                                  -	var processingCallback;
                                  -	var processingTime = 0;
                                  -	var processing = function()
                                  -    {
                                  -        processingTime = new Date().getTime();
                                  -        
                                  -        var c = _c;
                                  -        
                                  -        var text = _text;
                                  -	    var length = text.length;
                                  -        var createToken = _createToken;
                                  -	    
                                  -	    var q;
                                  -	    var str;
                                  -    	var varNameChars = "$_.";
                                  -    	var Punctuations = PunctuationNames;
                                  -    	var Keywords = KeywordNames;
                                  -        
                                  -	
                                  -    	while (cursor < length) {
                                  -    	
                                  -            
                                  -    	    if (new Date().getTime() - processingTime > 75) {
                                  -    	       setTimeout(processing, 25);
                                  -    	       break;
                                  -            }
                                  -            
                                  -    	
                                  -    		start = line;
                                  -    		//stream.line = line;
                                  -    		//stream.cursor = cursor;
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// Whitespace
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		if (c <= " ")
                                  -    		{
                                  -    			str = c;
                                  -    			cursor++;
                                  -    			
                                  -    			if (c == "\n") line++;
                                  -    			
                                  -    			while (true) {
                                  -    				c = text.charAt(cursor);
                                  -    				if (c == "\n") line++;
                                  -    				
                                  -    				if (!c || c > " ")
                                  -    				{
                                  -    					break;
                                  -    				}
                                  -    				str += c;
                                  -    				cursor++;
                                  -    			}
                                  -    			
                                  -    			//if (this.collapseWhite) str = " ";
                                  -    			//if (this.keepWhite) createToken(str, "WHIT", "SPACE");
                                  -    			createToken(str, "WHIT", "SPACE");
                                  -    			
                                  -    			continue;
                                  -    			
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// names
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || varNameChars.indexOf(c) != -1) {
                                  -    				str = c;
                                  -    				cursor += 1;
                                  -    				for (;;) {
                                  -    						c = text.charAt(cursor);
                                  -    						if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ||
                                  -    								(c >= '0' && c <= '9') || varNameChars.indexOf(c) != -1) {
                                  -    							str += c;
                                  -    							cursor += 1;
                                  -    						} else {
                                  -    							break;
                                  -    						}
                                  -    				}
                                  -    				
                                  -    				var name;
                                  -    				if ((name = Keywords[str])) createToken(str, "KEYW", name);
                                  -    				else createToken(str, "NAME", "NAME");
                                  -    				
                                  -    				//console.log("name " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -    				//result.push(make('name', str));
                                  -    				
                                  -    				continue;
                                  -    
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// number
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		// A number cannot start with a decimal point. It must start with a digit,
                                  -    		// possibly '0'.
                                  -    
                                  -    		} else if (c >= '0' && c <= '9') {
                                  -    			str = c;
                                  -    			cursor += 1;
                                  -    
                                  -    			// Look for more digits.
                                  -    
                                  -    			for (;;) {
                                  -    				c = text.charAt(cursor);
                                  -    				if (c < '0' || c > '9') {
                                  -    					break;
                                  -    				}
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    			}
                                  -    
                                  -    			// Look for a decimal fraction part.
                                  -    
                                  -    			if (c === '.') {
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    				for (;;) {
                                  -    					c = text.charAt(cursor);
                                  -    					if (c < '0' || c > '9') {
                                  -    						break;
                                  -    					}
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    				}
                                  -    			}
                                  -    
                                  -    			// Look for an exponent part.
                                  -    
                                  -    			if (c === 'e' || c === 'E') {
                                  -    				cursor += 1;
                                  -    				str += c;
                                  -    				c = text.charAt(cursor);
                                  -    				if (c === '-' || c === '+') {
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    					c = text.charAt(cursor);
                                  -    				}
                                  -    				if (c < '0' || c > '9') {
                                  -    					//make('number', str).error("Bad exponent");
                                  -    				}
                                  -    				do {
                                  -    					cursor += 1;
                                  -    					str += c;
                                  -    					c = text.charAt(cursor);
                                  -    				} while (c >= '0' && c <= '9');
                                  -    			}
                                  -    
                                  -    			// Make sure the next character is not a letter.
                                  -    
                                  -    			if (c >= 'a' && c <= 'z') {
                                  -    				str += c;
                                  -    				cursor += 1;
                                  -    				//make('number', str).error("Bad number");
                                  -    			}
                                  -    
                                  -    			// Convert the string value to a number. If it is finite, then it is a good
                                  -    			// token.
                                  -    
                                  -    			n = +str;
                                  -    			if (isFinite(n)) {
                                  -    				//result.push(make('number', n));
                                  -    				createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -    			} else {
                                  -    				//make('number', str).error("Bad number");
                                  -    			}
                                  -    
                                  -    			continue;
                                  -    
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// multi-line comment
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c == "/" && text.charAt(cursor+1) == "*") {
                                  -    		
                                  -    			var isJSDOC = text.charAt(cursor+3);
                                  -    			isJSDOC = text.charAt(cursor+2) == "*" && 
                                  -    					(isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -    					isJSDOC == "*" && text.charAt(cursor+4) != "*"); // allow /*** but not /****
                                  -    					
                                  -    			str = "/*";
                                  -    			cursor += 2;
                                  -    			
                                  -    			while (true) {
                                  -    				c = text.charAt(cursor);
                                  -    				str += c;
                                  -    				if (c == "\n") line++;
                                  -    				
                                  -    				if ( c == "*" && text.charAt(cursor+1) == "/")
                                  -    				{
                                  -    					str += "/";
                                  -    					cursor += 2;
                                  -    					c = text.charAt(cursor);
                                  -    					break;
                                  -    				}
                                  -    				cursor++;
                                  -    			}
                                  -    			
                                  -    			// to start doclet we allow /** or /*** but not /** / or /****
                                  -    			//if (isJSDOC && this.keepDocs) createToken(str, "COMM", "JSDOC");
                                  -    			//else if (this.keepComments) createToken(str, "COMM", "MULTI_LINE_COMM", stream );
                                  -    			
                                  -    			if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -    			else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -    			
                                  -    			continue;
                                  -    			
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// single-line comment
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		} else if (c === '/' && text.charAt(cursor + 1) === '/') {
                                  -    			str = c;
                                  -    			
                                  -    			for (;;) {
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				if (c == "\n") line++;
                                  -    
                                  -    				if (c === '\n' || c === '\r' || c === '') {
                                  -    					break;
                                  -    				}
                                  -    				str += c;
                                  -    			}
                                  -    		
                                  -    			//if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -    			createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -    			
                                  -    			continue;
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// string
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    		else if (c === '\'' || c === '"') {
                                  -    			str = c;
                                  -    			q = c;
                                  -    			for (;;) {
                                  -    				cursor += 1;
                                  -    				c = text.charAt(cursor);
                                  -    				str += c;
                                  -    				
                                  -    				if (c < ' ') {
                                  -    					//make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -    					//    "Unterminated string." :
                                  -    					//    "Control character in string.", make('', str));
                                  -    				}
                                  -    
                                  -    				// Look for the closing quote.
                                  -    
                                  -    				if (c === q) {
                                  -    					break;
                                  -    				}
                                  -    
                                  -    				// Look for escapement.
                                  -    
                                  -    				if (c === '\\') {
                                  -    					cursor += 1;
                                  -    					if (cursor >= length) {
                                  -    						//make('string', str).error("Unterminated string");
                                  -    					}
                                  -    					c = text.charAt(cursor);
                                  -    					switch (c) {
                                  -    					case 'b':
                                  -    						c = '\b';
                                  -    						break;
                                  -    					case 'f':
                                  -    						c = '\f';
                                  -    						break;
                                  -    					case 'n':
                                  -    						c = '\n';
                                  -    						break;
                                  -    					case 'r':
                                  -    						c = '\r';
                                  -    						break;
                                  -    					case 't':
                                  -    						c = '\t';
                                  -    						break;
                                  -    					case 'u':
                                  -    						if (cursor >= length) {
                                  -    							//make('string', str).error("Unterminated string");
                                  -    						}
                                  -    						c = parseInt(text.substr(cursor + 1, 4), 16);
                                  -    						if (!isFinite(c) || c < 0) {
                                  -    							//make('string', str).error("Unterminated string");
                                  -    						}
                                  -    						c = String.fromCharCode(c);
                                  -    						cursor += 4;
                                  -    						break;
                                  -    					}
                                  -    				}
                                  -    			}
                                  -    			cursor += 1;
                                  -    			//result.push(make('string', str));
                                  -    			createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -    			c = text.charAt(cursor);
                                  -    			continue;
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// regular expression
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		
                                  -    		else if (c == "/")
                                  -    		{
                                  -    		
                                  -    			//console.log("LAST "+( !(last = tokens.lastSym()) || !last.isa == "NUMB" && !last.isa == "NAME" && !last.isa == "RIGHT_PAREN" && !last.isa == "RIGHT_BRACKET" ));
                                  -    			
                                  -    			if (
                                  -        				!(last = relevantTokens.lastSym()) || // there is no last, the regex is the first symbol
                                  -        				!last.is("NUMB") && !last.is("RIGHT_PAREN") && !last.is("RIGHT_BRACKET") &&
                                  -        				(!last.is("NAME") || last.is("NAME") && last.data == "return")
                                  -    				)
                                  -    			{
                                  -    			
                                  -    				str = c;
                                  -    				var escapeNext = false;
                                  -    				
                                  -    				while(true)
                                  -    				{
                                  -    					cursor++;
                                  -    					c = text.charAt(cursor);
                                  -    					str += c;
                                  -    					
                                  -    					if (escapeNext)
                                  -    					{
                                  -    					   escapeNext = false;
                                  -    					   continue;
                                  -                        }
                                  -                        
                                  -    					if (c == "\\")
                                  -    					{
                                  -    					   escapeNext = true;
                                  -    					   continue;
                                  -                        }
                                  -    					
                                  -    					if (c == "/")
                                  -    					{
                                  -    					    var nextC = text.charAt(cursor+1);
                                  -    					    if (nextC == "g" || nextC == "i")
                                  -    					    {
                                  -            					cursor++;
                                  -            					c = text.charAt(cursor);
                                  -            					str += c;
                                  -                            }
                                  -                            
                                  -    						break;
                                  -    					}
                                  -    				}
                                  -    				
                                  -    				//console.log("REGX " + str);
                                  -    				createToken(str, "REGX", "REGX");
                                  -    							
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				
                                  -    				continue;
                                  -    			}
                                  -    		}
                                  -    		
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		// punctuations and/or operators
                                  -    		// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    		
                                  -    		if (Punctuations[c])
                                  -    		{
                                  -    			str = c;
                                  -    			 
                                  -    			while (true)
                                  -    			{
                                  -    				cursor++;
                                  -    				c = text.charAt(cursor);
                                  -    				
                                  -    				if (!c || !Punctuations[str+c])
                                  -    				{
                                  -    					break;
                                  -    				}
                                  -    				
                                  -    				str += c;
                                  -    			}
                                  -    			 
                                  -    			//console.log("punc " + str + " : " + line + "  (" + cursor + "/" + length + ")");
                                  -    			createToken(str, "PUNC", Punctuations[str]);
                                  -    			
                                  -    			continue;
                                  -    		}
                                  -    
                                  -    //debugger;
                                  -            if (debug)
                                  -    		    console.log("UNKNOWN_TOKEN " + str + ":" + line + "=" + cursor + "/" + length);
                                  -    		
                                  -    		// if execution reaches here then an error has happened
                                  -    		createToken(next(), "TOKN", "UNKNOWN_TOKEN");
                                  -    		
                                  -    	}
                                  -    	
                                  -    	
                                  -    	
                                  -    	_c = c;
                                  -    	
                                  -    	
                                  -    	
                                  -    	if (cursor < length)
                                  -    	{
                                  -    	   //console.log(cursor, length, Math.round(cursor/length*100)+"%")
                                  -    	   
                                  -           out.innerHTML = Math.round(cursor/length*100)+"%";
                                  -        }
                                  -        else if (cursor >= length)
                                  -        {
                                  -            // end
                                  -            processingCallback();
                                  -        }
                                  -	};
                                  -	
                                  -	
                                  -	
                                  -	
                                  -	// TODO: xxxpedro performance - cache source
                                  -	processingCallback = function()
                                  -	{
                                  -	   totalTime = new Date().getTime() - totalTime;
                                  -	   
                                  -	   var numLines = _text.split(/n/).length;
                                  -	   
                                  -	   out.innerHTML = "finished in " + (totalTime/1000).toFixed(2) + " seconds",
                                  -	        "  per line " + (totalTime/numLines).toFixed(2) + " ms"
                                  -            ;
                                  -	   
                                  -	   
                                  -	   /*
                                  -    	FileCache[srcFile] = {
                                  -    		text: text,
                                  -    		lines: line,
                                  -    		tokens: tokens,
                                  -    		relevantTokens: relevantTokens
                                  -    	};
                                  -    	
                                  -    	if (debug) console.timeEnd("TokenReader.prototype.tokenize()");
                                  -    	
                                  -    	var result = allTokens ? tokens : relevantTokens;
                                  -    	
                                  -    	
                                  -    	console.log( "Ok" );*/
                                  -	}
                                  -	
                                  -	var totalTime = new Date().getTime();
                                  -	var out = document.getElementById("progressText");
                                  -	processing();
                                  -};
                                  -
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js
                                  deleted file mode 100644
                                  index fdc5faba..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js
                                  +++ /dev/null
                                  @@ -1,769 +0,0 @@
                                  -/* 
                                  -
                                  -TODO: 
                                  -    - options:
                                  -        - alltokens, relevanttokens 
                                  -        - comment/jsdoc/spaces flags
                                  -        - custom language keywords
                                  -
                                  -    - html parser
                                  -    - cssparser
                                  -    - allow multiple instances
                                  -
                                  -*/
                                  -var parseFile = function(sourceText, allTokens)
                                  -{
                                  -    var renderTokens = true;
                                  -    var debug = false;
                                  -
                                  -
                                  -    // normalize line breaks
                                  -    sourceText = sourceText.replace(/\r\n/g, "\n");
                                  -    
                                  -    
                                  -    var numOfInterruptions = 0;
                                  -    var bufferStart = 0;
                                  -
                                  -    var _sourceTextLength = sourceText.length;
                                  -    var _lines = sourceText.split("\n");
                                  -
                                  -    var _continuation = {
                                  -        main: {line: -1, lineCursor: -1, lineLength: 0},
                                  -        deep: {}
                                  -    };
                                  -
                                  -    var _tokens = [];
                                  -    
                                  -    var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -    var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -
                                  -    var _Keywords = {
                                  -    	"break":      "BREAK",
                                  -    	"case":       "CASE",
                                  -    	"catch":      "CATCH",
                                  -    	"const":      "VAR",
                                  -    	"continue":   "CONTINUE",
                                  -    	"default":    "DEFAULT",
                                  -    	"delete":     "DELETE",
                                  -    	"do":         "DO",
                                  -    	"else":       "ELSE",
                                  -    	"false":      "FALSE",
                                  -    	"finally":    "FINALLY",
                                  -    	"for":        "FOR",
                                  -    	"function":   "FUNCTION",
                                  -    	"if":         "IF",
                                  -    	"in":         "IN",
                                  -    	"instanceof": "INSTANCEOF",
                                  -    	"new":        "NEW",
                                  -    	"null":       "NULL",
                                  -    	"return":     "RETURN",
                                  -    	"switch":     "SWITCH",
                                  -    	"this":       "THIS",
                                  -    	"throw":      "THROW",
                                  -    	"true":       "TRUE",
                                  -    	"try":        "TRY",
                                  -    	"typeof":     "TYPEOF",
                                  -    	"void":       "VOID",
                                  -    	"while":      "WHILE",
                                  -    	"with":       "WITH",
                                  -    	"var":        "VAR"
                                  -    };
                                  -
                                  -    var _Punctuations = {
                                  -        ";":   "SEMICOLON",
                                  -        ",":   "COMMA",
                                  -        "?":   "HOOK",
                                  -        ":":   "COLON",
                                  -        "||":  "OR",
                                  -        "&&":  "AND",
                                  -        "|":   "BITWISE_OR",
                                  -        "^":   "BITWISE_XOR",
                                  -        "&":   "BITWISE_AND",
                                  -        "===": "STRICT_EQ",
                                  -        "==":  "EQ",
                                  -        "=":   "ASSIGN",
                                  -        "!==": "STRICT_NE",
                                  -        "!=":  "NE",
                                  -        "<<":  "LSH",
                                  -        "<=":  "LE",
                                  -        "<":   "LT",
                                  -        ">>>": "URSH",
                                  -        ">>":  "RSH",
                                  -        ">=":  "GE",
                                  -        ">":   "GT",
                                  -        "++":  "INCREMENT",
                                  -        "--":  "DECREMENT",
                                  -        "+":   "PLUS",
                                  -        "-":   "MINUS",
                                  -        "*":   "MUL",
                                  -        "/":   "DIV",
                                  -        "%":   "MOD",
                                  -        "!":   "NOT",
                                  -        "~":   "BITWISE_NOT",
                                  -        ".":   "DOT",
                                  -        "[":   "LEFT_BRACKET",
                                  -        "]":   "RIGHT_BRACKET",
                                  -        "{":   "LEFT_CURLY",
                                  -        "}":   "RIGHT_CURLY",
                                  -        "(":   "LEFT_PAREN",
                                  -        ")":   "RIGHT_PAREN"
                                  -    };
                                  -
                                  -    var processing = function()
                                  -    {
                                  -        var next = function()
                                  -        {
                                  -            // a line is loaded and the cursor is not at the end, so move the
                                  -            // cursor one position and return the character at that position
                                  -            if (lineText && lineCursor < lineLength - 1)
                                  -            {
                                  -                lineCursor++
                                  -                return lineText.charAt(lineCursor);
                                  -            }
                                  -
                                  -            // cursor have reached the end of the stream
                                  -            if (line == numOfLines - 1)
                                  -            {
                                  -                return "(end)";
                                  -            }
                                  -            
                                  -            // if we are here, cursor have reached the end of the line
                                  -            
                                  -            // add the length of the last line (or the initialized zero value)
                                  -            // plus one newline character. The sum bufferStart + lineCursor
                                  -            // guives the exact position of the cursor in the source and in
                                  -            // the end bufferStart + lineCursor equals to sourceTextLength
                                  -            bufferStart += lineLength + 1; 
                                  -            
                                  -            // load new line and set the cursor back to the beginning
                                  -            line++;
                                  -            lineCursor = -1;
                                  -            lineText = lines[line];
                                  -            lineLength = lineText.length;
                                  -            
                                  -            // return the the new line indicator
                                  -            return "(newline)";
                                  -        };
                                  -
                                  -        // references to constants
                                  -        var Keywords = _Keywords;
                                  -        var Punctuations = _Punctuations;
                                  -        var NameFirstChars = _NameFirstChars;
                                  -        var NameChars = _NameChars ;
                                  -        var sourceTextLength = _sourceTextLength;
                                  -        
                                  -        // references to objects
                                  -        var continuation = _continuation;
                                  -        var tokens = _tokens;
                                  -        var lines = _lines;
                                  -        
                                  -        // cache number of lines
                                  -        var numOfLines = lines.length;
                                  -
                                  -        // internal variables        
                                  -        var q; // aux variable to hold quote character, and number conversion
                                  -        var str; // variable to hold the token being constructed 
                                  -        var start; // the line in which the token has started
                                  -        var focus; // the current focus of the iteration. its value will be the current character 
                                  -        // being processed, or if a deep interruption happened (the deep loop which parser an
                                  -        // individual token has been interrupted) its value will be the first character that 
                                  -        // started the token's processing (eg, if it was during a name processing it will
                                  -        // be the first letter of the name). This variable allows remembering which deep loop
                                  -        // was being executed before interrupting the execution. 
                                  -        
                                  -        
                                  -        // processing continuation state
                                  -        var state = continuation.main;
                                  -
                                  -        var line = state.line;              // current line
                                  -        var lineCursor = state.lineCursor;  // current cursor (column) position
                                  -        var lineText = state.lineText;      // current line's text
                                  -        var lineLength = state.lineLength;  // current line's length
                                  -        var lastToken = state.lastToken;    // last relevant token generated
                                  -        var lastFocus = state.lastFocus;    // last focus before interrupting
                                  -        var interrupted = state.interrupted;// deep loop interruption indication
                                  -        
                                  -        var c = state.c || next();          // current character being processed
                                  -
                                  -        // start measuring current processing time
                                  -        var processingTime = new Date().getTime();
                                  -
                                  -        while (c != "(end)")
                                  -        {
                                  -        
                                  -//             if (new Date().getTime() - processingTime > 75)
                                  -//             {
                                  -//                setTimeout(processing, 25);
                                  -//                //console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength);
                                  -//                break;
                                  -//             }
                                  -
                                  -            focus = interrupted ? lastFocus : c;
                                  -            
                                  -            //console.log("focus %o  cursor %d  interrupted %o ", lastFocus, lineCursor, interrupted);
                                  -            
                                  -            start = line;
                                  -
                                  -
                                  -            // ************************************************************************************
                                  -            // newline
                                  -            // ************************************************************************************
                                  -            
                                  -            if (focus == '(newline)')
                                  -            {
                                  -                tokens.push({type: "newline", data: null, line: start});
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // whitespace
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (focus == ' ')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -//                     if (new Date().getTime() - processingTime > 75)
                                  -//                     {
                                  -//                         lastFocus = focus;
                                  -//                         interrupted = true;
                                  -//                         break;
                                  -//                     }
                                  -
                                  -                    c = next();
                                  -
                                  -                    if (c == "(end)" || c > " ")
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    continuation.deep = {};
                                  -                    tokens.push({type: "space", data: str, line: start});
                                  -                    
                                  -                    debug && console.log("spaces: "+str.length);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // name
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (NameFirstChars.indexOf(focus) != -1)
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -//                     if (new Date().getTime() - processingTime > 75)
                                  -//                     {
                                  -//                         lastFocus = focus;
                                  -//                         interrupted = true;
                                  -//                         break;
                                  -//                     }
                                  -
                                  -                    c = next();
                                  -
                                  -                    if (NameChars.indexOf(c) == -1) {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    if (Keywords[str])
                                  -                        tokens.push(lastToken = {type: "keyw", data: str, line: start});
                                  -                    else
                                  -                        tokens.push(lastToken = {type: "name", data: str, line: start});
                                  -                    
                                  -                    debug && console.log("name: "+str);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // number
                                  -            // ************************************************************************************
                                  -
                                  -            // A number cannot start with a decimal point. It must start with a digit,
                                  -            // possibly '0'.
                                  -
                                  -            else if (focus >= '0' && focus <= '9')
                                  -            {
                                  -                str = c;
                                  -                lineCursor += 1;
                                  -
                                  -                // Look for more digits.
                                  -
                                  -                for (;;) {
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c < '0' || c > '9') {
                                  -                        break;
                                  -                    }
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                }
                                  -
                                  -                // Look for a decimal fraction part.
                                  -
                                  -                if (c === '.') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    for (;;) {
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        if (c < '0' || c > '9') {
                                  -                            break;
                                  -                        }
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                    }
                                  -                }
                                  -
                                  -                // Look for an exponent part.
                                  -
                                  -                if (c === 'e' || c === 'E') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c === '-' || c === '+') {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    }
                                  -                    //if (c < '0' || c > '9') {
                                  -                        //make('number', str).error("Bad exponent");
                                  -                    //}
                                  -                    do {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    } while (c >= '0' && c <= '9');
                                  -                }
                                  -
                                  -                // Make sure the next character is not a letter.
                                  -
                                  -                if (c >= 'a' && c <= 'z') {
                                  -                    str += c;
                                  -                    lineCursor += 1;
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                // Convert the string value to a number. If it is finite, then it is a good
                                  -                // token.
                                  -
                                  -                q = +str;
                                  -                if (isFinite(q)) {
                                  -                    //result.push(make('number', n));
                                  -                    //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -                    tokens.push(lastToken = {type: "numb", data: str, line: start});
                                  -                } else {
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // multi-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/" && lineText.charAt(lineCursor+1) == "*")
                                  -            {
                                  -
                                  -                var isJSDOC = lineText.charAt(lineCursor+3);
                                  -                isJSDOC = lineText.charAt(lineCursor+2) == "*" &&
                                  -                        (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -                        isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /****
                                  -
                                  -                str = "/*";
                                  -                next();
                                  -                //lineCursor += 2;
                                  -
                                  -                while (true) {
                                  -                    c = next();
                                  -                    
                                  -                    if (c == "(newline)")
                                  -                    {
                                  -                        if (str)
                                  -                            tokens.push({type: "comm", data: str, line: start});
                                  -                        
                                  -                        tokens.push({type: "newline", data: null, line: start});
                                  -                        str = "";
                                  -                        continue;
                                  -                    }
                                  -                    
                                  -                    //c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    if ( c == "*" && lineText.charAt(lineCursor+1) == "/")
                                  -                    {
                                  -                        str += "/";
                                  -                        next();
                                  -                        c = next();
                                  -                        //lineCursor += 2;
                                  -                        //c = lineText.charAt(lineCursor);
                                  -                        break;
                                  -                    }
                                  -                    //lineCursor++;
                                  -                }
                                  -                
                                  -                //if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -                //else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -                tokens.push({type: "comm", data: str, line: start});
                                  -                
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // single-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/')
                                  -            {
                                  -                str = c;
                                  -
                                  -                for (;;) {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    //if (c === '\n' || c === '\r' || c === '') {
                                  -                    if (!c) {
                                  -                        break;
                                  -                    }
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                //createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                tokens.push({type: "comm", data: str, line: start});
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // string
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus === '\'' || focus === '"')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -                q = state.q || c;
                                  -                //str = c;
                                  -                //q = c;
                                  -                
                                  -                for (;;)
                                  -                {
                                  -//                     if (new Date().getTime() - processingTime > 75)
                                  -//                     {
                                  -//                         lastFocus = focus;
                                  -//                         interrupted = true;
                                  -//                         //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength);
                                  -//                         break;
                                  -// 
                                  -//                     }
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    
                                  -                    //if (c < ' ') {
                                  -                        //make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -                        //    "Unterminated string." :
                                  -                        //    "Control character in string.", make('', str));
                                  -                    //}
                                  -
                                  -                    // Look for the closing quote.
                                  -
                                  -                    if (c === q)
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    // Look for escapement.
                                  -
                                  -                    if (c === '\\')
                                  -                    {
                                  -                        lineCursor += 1;
                                  -                        //if (lineCursor >= lineLength) {
                                  -                            //make('string', str).error("Unterminated string");
                                  -                        //}
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        switch (c) {
                                  -                        case 'b':
                                  -                            c = '\b';
                                  -                            break;
                                  -                        case 'f':
                                  -                            c = '\f';
                                  -                            break;
                                  -                        case 'n':
                                  -                            c = '\n';
                                  -                            break;
                                  -                        case 'r':
                                  -                            c = '\r';
                                  -                            break;
                                  -                        case 't':
                                  -                            c = '\t';
                                  -                            break;
                                  -                        case 'u':
                                  -                            //if (lineCursor >= lineLength) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = parseInt(lineText.substr(lineCursor + 1, 4), 16);
                                  -                            //if (!isFinite(c) || c < 0) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = String.fromCharCode(c);
                                  -                            lineCursor += 4;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -                
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    //result.push(make('string', str));
                                  -                    //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -                    tokens.push(lastToken = {type: "strn", data: str, line: start});
                                  -                    c = lineText.charAt(lineCursor);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str, q: q};
                                  -                }
                                  -                
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // regular expression
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/")
                                  -            {
                                  -                var last = lastToken || {};
                                  -                var lastData = last.data;
                                  -                var lastType = last.type;
                                  -                if (
                                  -                        !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && 
                                  -                        (lastType != "name" || lastType == "name" && lastData == "return")
                                  -                    )
                                  -                {
                                  -
                                  -                    str = c;
                                  -                    var escapeNext = false;
                                  -
                                  -                    while(true)
                                  -                    {
                                  -                        lineCursor++;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        str += c;
                                  -
                                  -                        if (escapeNext)
                                  -                        {
                                  -                           escapeNext = false;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "\\")
                                  -                        {
                                  -                           escapeNext = true;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "/")
                                  -                        {
                                  -                            var nextC = lineText.charAt(lineCursor+1);
                                  -                            if (nextC == "g" || nextC == "i")
                                  -                            {
                                  -                                lineCursor++;
                                  -                                c = lineText.charAt(lineCursor);
                                  -                                str += c;
                                  -                            }
                                  -
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -
                                  -                    //console.log("REGX " + str);
                                  -                    tokens.push(lastToken = {type: "regx", data: str, line: start});
                                  -
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -
                                  -                    continue;
                                  -                }
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // punctuations and/or operators
                                  -            // ************************************************************************************
                                  -
                                  -            if (Punctuations[focus])
                                  -            {
                                  -                str = c;
                                  -
                                  -                while (true)
                                  -                {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    
                                  -                    //c = next();
                                  -
                                  -                    if (!c || !Punctuations[str+c])
                                  -                    //if (!Punctuations[str+c])
                                  -                    {
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //console.log("punc " + str + " : " + line + "  (" + lineCursor + "/" + lineLength + ")");
                                  -                tokens.push(lastToken = {type: "punc", data: str, line: start});
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // fail
                                  -            // ************************************************************************************
                                  -            c = next();
                                  -
                                  -        }
                                  -
                                  -        continuation.main = {
                                  -            c: c,
                                  -            line: line,
                                  -            lineCursor: lineCursor,
                                  -            lineText: lineText,
                                  -            lineLength: lineLength,
                                  -            lastToken: lastToken,
                                  -            interrupted: interrupted,
                                  -            lastFocus: lastFocus
                                  -        };
                                  -
                                  -
                                  -        if (c == "(end)")
                                  -        {
                                  -            var progress = bufferStart + lineCursor;
                                  -            
                                  -            updateProgress(progress, sourceTextLength);
                                  -            
                                  -            processingCallback(progress, sourceTextLength, numOfLines);
                                  -            
                                  -            if(renderTokens)
                                  -                render(tokens);
                                  -        }
                                  -        else
                                  -        {
                                  -            updateProgress(bufferStart + lineCursor, sourceTextLength);
                                  -            
                                  -            if (renderTokens && tokens.length>=1000)
                                  -                render(tokens);
                                  -        }
                                  -    };
                                  -
                                  -    var updateProgress = function(progress, total)
                                  -    {
                                  -        var value = progress/total;
                                  -        
                                  -        if (!halfProgressReached && value > 0.5)
                                  -        {
                                  -            halfProgressReached = true;
                                  -            progressText.style.color = "#fff";
                                  -        }
                                  -        
                                  -        progressText.innerHTML = Math.round(value*100)+"%";
                                  -        progressFill.style.width = Math.round(value*progressBarWidth)+"px";
                                  -    };
                                  -    
                                  -    var processingCallback = function(progress, total, numOfLines)
                                  -    {
                                  -        totalTime = new Date().getTime() - totalTime;
                                  -        
                                  -        var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" +
                                  -                " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) ";
                                  -                
                                  -        progressText.innerHTML = text;
                                  -        
                                  -        if (window.console)
                                  -        {
                                  -            console.log(text);
                                  -        }
                                  -    };
                                  -    
                                  -    var tokensRendered = false;
                                  -    var render = function(tokens)
                                  -    {
                                  -        if (tokensRendered)
                                  -            return;
                                  -        
                                  -        tokensRendered = true;
                                  -        
                                  -        var html = ['<pre class="line">'];
                                  -        for (var i=1, count=1000; i<count; i++)
                                  -        {
                                  -            var tk = tokens[i];
                                  -            
                                  -            if (!tk) break;
                                  -            
                                  -            if (tk.type == "newline")
                                  -                html.push(' \n</pre><pre class="line">');
                                  -            else
                                  -                html.push('<span class="'+tk.type+'">'+tk.data+'</span>');
                                  -        }
                                  -        html.push(' \n</pre>');
                                  -        document.getElementById("source").innerHTML = html.join("");
                                  -        
                                  -        window.tokens = tokens;
                                  -    };
                                  -
                                  -    var callbackTimes = 0;
                                  -
                                  -    var totalTime = new Date().getTime();
                                  -    
                                  -    var progressText = document.getElementById("progressText");
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressBarWidth = progressBar.clientWidth;
                                  -    var halfProgressReached = false;
                                  -    
                                  -    processing();
                                  -};
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9.js
                                  deleted file mode 100644
                                  index 91b13291..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9.js
                                  +++ /dev/null
                                  @@ -1,769 +0,0 @@
                                  -/* 
                                  -
                                  -TODO: 
                                  -    - options:
                                  -        - alltokens, relevanttokens 
                                  -        - comment/jsdoc/spaces flags
                                  -        - custom language keywords
                                  -
                                  -    - html parser
                                  -    - cssparser
                                  -    - allow multiple instances
                                  -
                                  -*/
                                  -var parseFile = function(sourceText, allTokens)
                                  -{
                                  -    var renderTokens = true;
                                  -    var debug = false;
                                  -
                                  -
                                  -    // normalize line breaks
                                  -    sourceText = sourceText.replace(/\r\n/g, "\n");
                                  -    
                                  -    
                                  -    var numOfInterruptions = 0;
                                  -    var bufferStart = 0;
                                  -
                                  -    var _sourceTextLength = sourceText.length;
                                  -    var _lines = sourceText.split("\n");
                                  -
                                  -    var _continuation = {
                                  -        main: {line: -1, lineCursor: -1, lineLength: 0},
                                  -        deep: {}
                                  -    };
                                  -
                                  -    var _tokens = [];
                                  -    
                                  -    var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -    var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -
                                  -    var _Keywords = {
                                  -    	"break":      "BREAK",
                                  -    	"case":       "CASE",
                                  -    	"catch":      "CATCH",
                                  -    	"const":      "VAR",
                                  -    	"continue":   "CONTINUE",
                                  -    	"default":    "DEFAULT",
                                  -    	"delete":     "DELETE",
                                  -    	"do":         "DO",
                                  -    	"else":       "ELSE",
                                  -    	"false":      "FALSE",
                                  -    	"finally":    "FINALLY",
                                  -    	"for":        "FOR",
                                  -    	"function":   "FUNCTION",
                                  -    	"if":         "IF",
                                  -    	"in":         "IN",
                                  -    	"instanceof": "INSTANCEOF",
                                  -    	"new":        "NEW",
                                  -    	"null":       "NULL",
                                  -    	"return":     "RETURN",
                                  -    	"switch":     "SWITCH",
                                  -    	"this":       "THIS",
                                  -    	"throw":      "THROW",
                                  -    	"true":       "TRUE",
                                  -    	"try":        "TRY",
                                  -    	"typeof":     "TYPEOF",
                                  -    	"void":       "VOID",
                                  -    	"while":      "WHILE",
                                  -    	"with":       "WITH",
                                  -    	"var":        "VAR"
                                  -    };
                                  -
                                  -    var _Punctuations = {
                                  -        ";":   "SEMICOLON",
                                  -        ",":   "COMMA",
                                  -        "?":   "HOOK",
                                  -        ":":   "COLON",
                                  -        "||":  "OR",
                                  -        "&&":  "AND",
                                  -        "|":   "BITWISE_OR",
                                  -        "^":   "BITWISE_XOR",
                                  -        "&":   "BITWISE_AND",
                                  -        "===": "STRICT_EQ",
                                  -        "==":  "EQ",
                                  -        "=":   "ASSIGN",
                                  -        "!==": "STRICT_NE",
                                  -        "!=":  "NE",
                                  -        "<<":  "LSH",
                                  -        "<=":  "LE",
                                  -        "<":   "LT",
                                  -        ">>>": "URSH",
                                  -        ">>":  "RSH",
                                  -        ">=":  "GE",
                                  -        ">":   "GT",
                                  -        "++":  "INCREMENT",
                                  -        "--":  "DECREMENT",
                                  -        "+":   "PLUS",
                                  -        "-":   "MINUS",
                                  -        "*":   "MUL",
                                  -        "/":   "DIV",
                                  -        "%":   "MOD",
                                  -        "!":   "NOT",
                                  -        "~":   "BITWISE_NOT",
                                  -        ".":   "DOT",
                                  -        "[":   "LEFT_BRACKET",
                                  -        "]":   "RIGHT_BRACKET",
                                  -        "{":   "LEFT_CURLY",
                                  -        "}":   "RIGHT_CURLY",
                                  -        "(":   "LEFT_PAREN",
                                  -        ")":   "RIGHT_PAREN"
                                  -    };
                                  -
                                  -    var processing = function()
                                  -    {
                                  -        var next = function()
                                  -        {
                                  -            // a line is loaded and the cursor is not at the end, so move the
                                  -            // cursor one position and return the character at that position
                                  -            if (lineText && lineCursor < lineLength - 1)
                                  -            {
                                  -                lineCursor++
                                  -                return lineText.charAt(lineCursor);
                                  -            }
                                  -
                                  -            // cursor have reached the end of the stream
                                  -            if (line == numOfLines - 1)
                                  -            {
                                  -                return "(end)";
                                  -            }
                                  -            
                                  -            // if we are here, cursor have reached the end of the line
                                  -            
                                  -            // add the length of the last line (or the initialized zero value)
                                  -            // plus one newline character. The sum bufferStart + lineCursor
                                  -            // guives the exact position of the cursor in the source and in
                                  -            // the end bufferStart + lineCursor equals to sourceTextLength
                                  -            bufferStart += lineLength + 1; 
                                  -            
                                  -            // load new line and set the cursor back to the beginning
                                  -            line++;
                                  -            lineCursor = -1;
                                  -            lineText = lines[line];
                                  -            lineLength = lineText.length;
                                  -            
                                  -            // return the the new line indicator
                                  -            return "(newline)";
                                  -        };
                                  -
                                  -        // references to constants
                                  -        var Keywords = _Keywords;
                                  -        var Punctuations = _Punctuations;
                                  -        var NameFirstChars = _NameFirstChars;
                                  -        var NameChars = _NameChars ;
                                  -        var sourceTextLength = _sourceTextLength;
                                  -        
                                  -        // references to objects
                                  -        var continuation = _continuation;
                                  -        var tokens = _tokens;
                                  -        var lines = _lines;
                                  -        
                                  -        // cache number of lines
                                  -        var numOfLines = lines.length;
                                  -
                                  -        // internal variables        
                                  -        var q; // aux variable to hold quote character, and number conversion
                                  -        var str; // variable to hold the token being constructed 
                                  -        var start; // the line in which the token has started
                                  -        var focus; // the current focus of the iteration. its value will be the current character 
                                  -        // being processed, or if a deep interruption happened (the deep loop which parser an
                                  -        // individual token has been interrupted) its value will be the first character that 
                                  -        // started the token's processing (eg, if it was during a name processing it will
                                  -        // be the first letter of the name). This variable allows remembering which deep loop
                                  -        // was being executed before interrupting the execution. 
                                  -        
                                  -        
                                  -        // processing continuation state
                                  -        var state = continuation.main;
                                  -
                                  -        var line = state.line;              // current line
                                  -        var lineCursor = state.lineCursor;  // current cursor (column) position
                                  -        var lineText = state.lineText;      // current line's text
                                  -        var lineLength = state.lineLength;  // current line's length
                                  -        var lastToken = state.lastToken;    // last relevant token generated
                                  -        var lastFocus = state.lastFocus;    // last focus before interrupting
                                  -        var interrupted = state.interrupted;// deep loop interruption indication
                                  -        
                                  -        var c = state.c || next();          // current character being processed
                                  -
                                  -        // start measuring current processing time
                                  -        var processingTime = new Date().getTime();
                                  -
                                  -        while (c != "(end)")
                                  -        {
                                  -        
                                  -            if (new Date().getTime() - processingTime > 75)
                                  -            {
                                  -               setTimeout(processing, 25);
                                  -               //console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength);
                                  -               break;
                                  -            }
                                  -
                                  -            focus = interrupted ? lastFocus : c;
                                  -            
                                  -            //console.log("focus %o  cursor %d  interrupted %o ", lastFocus, lineCursor, interrupted);
                                  -            
                                  -            start = line;
                                  -
                                  -
                                  -            // ************************************************************************************
                                  -            // newline
                                  -            // ************************************************************************************
                                  -            
                                  -            if (focus == '(newline)')
                                  -            {
                                  -                tokens.push({type: "newline", data: null, line: start});
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // whitespace
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (focus == ' ')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    c = next();
                                  -
                                  -                    if (c == "(end)" || c > " ")
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    continuation.deep = {};
                                  -                    tokens.push({type: "space", data: str, line: start});
                                  -                    
                                  -                    debug && console.log("spaces: "+str.length);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // name
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (NameFirstChars.indexOf(focus) != -1)
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    c = next();
                                  -
                                  -                    if (NameChars.indexOf(c) == -1) {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    if (Keywords[str])
                                  -                        tokens.push(lastToken = {type: "keyw", data: str, line: start});
                                  -                    else
                                  -                        tokens.push(lastToken = {type: "name", data: str, line: start});
                                  -                    
                                  -                    debug && console.log("name: "+str);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // number
                                  -            // ************************************************************************************
                                  -
                                  -            // A number cannot start with a decimal point. It must start with a digit,
                                  -            // possibly '0'.
                                  -
                                  -            else if (focus >= '0' && focus <= '9')
                                  -            {
                                  -                str = c;
                                  -                lineCursor += 1;
                                  -
                                  -                // Look for more digits.
                                  -
                                  -                for (;;) {
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c < '0' || c > '9') {
                                  -                        break;
                                  -                    }
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                }
                                  -
                                  -                // Look for a decimal fraction part.
                                  -
                                  -                if (c === '.') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    for (;;) {
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        if (c < '0' || c > '9') {
                                  -                            break;
                                  -                        }
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                    }
                                  -                }
                                  -
                                  -                // Look for an exponent part.
                                  -
                                  -                if (c === 'e' || c === 'E') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c === '-' || c === '+') {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    }
                                  -                    //if (c < '0' || c > '9') {
                                  -                        //make('number', str).error("Bad exponent");
                                  -                    //}
                                  -                    do {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    } while (c >= '0' && c <= '9');
                                  -                }
                                  -
                                  -                // Make sure the next character is not a letter.
                                  -
                                  -                if (c >= 'a' && c <= 'z') {
                                  -                    str += c;
                                  -                    lineCursor += 1;
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                // Convert the string value to a number. If it is finite, then it is a good
                                  -                // token.
                                  -
                                  -                q = +str;
                                  -                if (isFinite(q)) {
                                  -                    //result.push(make('number', n));
                                  -                    //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -                    tokens.push(lastToken = {type: "numb", data: str, line: start});
                                  -                } else {
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // multi-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/" && lineText.charAt(lineCursor+1) == "*")
                                  -            {
                                  -
                                  -                var isJSDOC = lineText.charAt(lineCursor+3);
                                  -                isJSDOC = lineText.charAt(lineCursor+2) == "*" &&
                                  -                        (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -                        isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /****
                                  -
                                  -                str = "/*";
                                  -                next();
                                  -                //lineCursor += 2;
                                  -
                                  -                while (true) {
                                  -                    c = next();
                                  -                    
                                  -                    if (c == "(newline)")
                                  -                    {
                                  -                        if (str)
                                  -                            tokens.push({type: "comm", data: str, line: start});
                                  -                        
                                  -                        tokens.push({type: "newline", data: null, line: start});
                                  -                        str = "";
                                  -                        continue;
                                  -                    }
                                  -                    
                                  -                    //c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    if ( c == "*" && lineText.charAt(lineCursor+1) == "/")
                                  -                    {
                                  -                        str += "/";
                                  -                        next();
                                  -                        c = next();
                                  -                        //lineCursor += 2;
                                  -                        //c = lineText.charAt(lineCursor);
                                  -                        break;
                                  -                    }
                                  -                    //lineCursor++;
                                  -                }
                                  -                
                                  -                //if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -                //else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -                tokens.push({type: "comm", data: str, line: start});
                                  -                
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // single-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/')
                                  -            {
                                  -                str = c;
                                  -
                                  -                for (;;) {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    //if (c === '\n' || c === '\r' || c === '') {
                                  -                    if (!c) {
                                  -                        break;
                                  -                    }
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                //createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                tokens.push({type: "comm", data: str, line: start});
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // string
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus === '\'' || focus === '"')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -                q = state.q || c;
                                  -                //str = c;
                                  -                //q = c;
                                  -                
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength);
                                  -                        break;
                                  -
                                  -                    }
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    
                                  -                    //if (c < ' ') {
                                  -                        //make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -                        //    "Unterminated string." :
                                  -                        //    "Control character in string.", make('', str));
                                  -                    //}
                                  -
                                  -                    // Look for the closing quote.
                                  -
                                  -                    if (c === q)
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    // Look for escapement.
                                  -
                                  -                    if (c === '\\')
                                  -                    {
                                  -                        lineCursor += 1;
                                  -                        //if (lineCursor >= lineLength) {
                                  -                            //make('string', str).error("Unterminated string");
                                  -                        //}
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        switch (c) {
                                  -                        case 'b':
                                  -                            c = '\b';
                                  -                            break;
                                  -                        case 'f':
                                  -                            c = '\f';
                                  -                            break;
                                  -                        case 'n':
                                  -                            c = '\n';
                                  -                            break;
                                  -                        case 'r':
                                  -                            c = '\r';
                                  -                            break;
                                  -                        case 't':
                                  -                            c = '\t';
                                  -                            break;
                                  -                        case 'u':
                                  -                            //if (lineCursor >= lineLength) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = parseInt(lineText.substr(lineCursor + 1, 4), 16);
                                  -                            //if (!isFinite(c) || c < 0) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = String.fromCharCode(c);
                                  -                            lineCursor += 4;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -                
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    //result.push(make('string', str));
                                  -                    //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -                    tokens.push(lastToken = {type: "strn", data: str, line: start});
                                  -                    c = lineText.charAt(lineCursor);
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str, q: q};
                                  -                }
                                  -                
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // regular expression
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/")
                                  -            {
                                  -                var last = lastToken || {};
                                  -                var lastData = last.data;
                                  -                var lastType = last.type;
                                  -                if (
                                  -                        !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && 
                                  -                        (lastType != "name" || lastType == "name" && lastData == "return")
                                  -                    )
                                  -                {
                                  -
                                  -                    str = c;
                                  -                    var escapeNext = false;
                                  -
                                  -                    while(true)
                                  -                    {
                                  -                        lineCursor++;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        str += c;
                                  -
                                  -                        if (escapeNext)
                                  -                        {
                                  -                           escapeNext = false;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "\\")
                                  -                        {
                                  -                           escapeNext = true;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "/")
                                  -                        {
                                  -                            var nextC = lineText.charAt(lineCursor+1);
                                  -                            if (nextC == "g" || nextC == "i")
                                  -                            {
                                  -                                lineCursor++;
                                  -                                c = lineText.charAt(lineCursor);
                                  -                                str += c;
                                  -                            }
                                  -
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -
                                  -                    //console.log("REGX " + str);
                                  -                    tokens.push(lastToken = {type: "regx", data: str, line: start});
                                  -
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -
                                  -                    continue;
                                  -                }
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // punctuations and/or operators
                                  -            // ************************************************************************************
                                  -
                                  -            if (Punctuations[focus])
                                  -            {
                                  -                str = c;
                                  -
                                  -                while (true)
                                  -                {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    
                                  -                    //c = next();
                                  -
                                  -                    if (!c || !Punctuations[str+c])
                                  -                    //if (!Punctuations[str+c])
                                  -                    {
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //console.log("punc " + str + " : " + line + "  (" + lineCursor + "/" + lineLength + ")");
                                  -                tokens.push(lastToken = {type: "punc", data: str, line: start});
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // fail
                                  -            // ************************************************************************************
                                  -            c = next();
                                  -
                                  -        }
                                  -
                                  -        continuation.main = {
                                  -            c: c,
                                  -            line: line,
                                  -            lineCursor: lineCursor,
                                  -            lineText: lineText,
                                  -            lineLength: lineLength,
                                  -            lastToken: lastToken,
                                  -            interrupted: interrupted,
                                  -            lastFocus: lastFocus
                                  -        };
                                  -
                                  -
                                  -        if (c == "(end)")
                                  -        {
                                  -            var progress = bufferStart + lineCursor;
                                  -            
                                  -            updateProgress(progress, sourceTextLength);
                                  -            
                                  -            processingCallback(progress, sourceTextLength, numOfLines);
                                  -            
                                  -            if(renderTokens)
                                  -                render(tokens);
                                  -        }
                                  -        else
                                  -        {
                                  -            updateProgress(bufferStart + lineCursor, sourceTextLength);
                                  -            
                                  -            if (renderTokens && tokens.length>=1000)
                                  -                render(tokens);
                                  -        }
                                  -    };
                                  -
                                  -    var updateProgress = function(progress, total)
                                  -    {
                                  -        var value = progress/total;
                                  -        
                                  -        if (!halfProgressReached && value > 0.5)
                                  -        {
                                  -            halfProgressReached = true;
                                  -            progressText.style.color = "#fff";
                                  -        }
                                  -        
                                  -        progressText.innerHTML = Math.round(value*100)+"%";
                                  -        progressFill.style.width = Math.round(value*progressBarWidth)+"px";
                                  -    };
                                  -    
                                  -    var processingCallback = function(progress, total, numOfLines)
                                  -    {
                                  -        totalTime = new Date().getTime() - totalTime;
                                  -        
                                  -        var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" +
                                  -                " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) ";
                                  -                
                                  -        progressText.innerHTML = text;
                                  -        
                                  -        if (window.console)
                                  -        {
                                  -            console.log(text);
                                  -        }
                                  -    };
                                  -    
                                  -    var tokensRendered = false;
                                  -    var render = function(tokens)
                                  -    {
                                  -        if (tokensRendered)
                                  -            return;
                                  -        
                                  -        tokensRendered = true;
                                  -        
                                  -        var html = ['<pre class="line">'];
                                  -        for (var i=1, count=1000; i<count; i++)
                                  -        {
                                  -            var tk = tokens[i];
                                  -            
                                  -            if (!tk) break;
                                  -            
                                  -            if (tk.type == "newline")
                                  -                html.push(' \n</pre><pre class="line">');
                                  -            else
                                  -                html.push('<span class="'+tk.type+'">'+tk.data+'</span>');
                                  -        }
                                  -        html.push(' \n</pre>');
                                  -        document.getElementById("source").innerHTML = html.join("");
                                  -        
                                  -        window.tokens = tokens;
                                  -    };
                                  -
                                  -    var callbackTimes = 0;
                                  -
                                  -    var totalTime = new Date().getTime();
                                  -    
                                  -    var progressText = document.getElementById("progressText");
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressBarWidth = progressBar.clientWidth;
                                  -    var halfProgressReached = false;
                                  -    
                                  -    processing();
                                  -};
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9b.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9b.js
                                  deleted file mode 100644
                                  index cf2f8d2f..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/TokenReader9b.js
                                  +++ /dev/null
                                  @@ -1,831 +0,0 @@
                                  -/* 
                                  -
                                  -TODO: 
                                  -    - options:
                                  -        - alltokens, relevanttokens 
                                  -        - comment/jsdoc/spaces flags
                                  -        - custom language keywords
                                  -
                                  -    - html parser
                                  -    - cssparser
                                  -    - allow multiple instances
                                  -
                                  -*/
                                  -var ParseStopIteration = {toString: function() {return "ParseStopIteration"}};
                                  -var ParseEnd = {toString: function() {return "ParseEnd"}};
                                  -
                                  -var parseTricker;
                                  -var processingTime2;
                                  -var parseTrick = function()
                                  -{
                                  -    var token;
                                  -    var xops;
                                  -    
                                  -    try
                                  -    {
                                  -        processingTime2 = new Date().getTime();
                                  -        while(true)
                                  -        {
                                  -            if (new Date().getTime() - processingTime2 > 50)
                                  -            {
                                  -                console.log("interruption");
                                  -                setTimeout(parseTrick, 150);
                                  -                break;
                                  -            }
                                  -            
                                  -            token = parseTricker();
                                  -        }
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        console.log("interruption EEE");
                                  -        if (e == ParseStopIteration)
                                  -        {
                                  -            xops = true;
                                  -            setTimeout(parseTrick, 150);
                                  -        }
                                  -        else if (e == ParseEnd)
                                  -        {
                                  -            alert("end");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var parseFile = function(sourceText, allTokens)
                                  -{
                                  -    var renderTokens = true;
                                  -    var debug = false;
                                  -
                                  -
                                  -    // normalize line breaks
                                  -    sourceText = sourceText.replace(/\r\n/g, "\n");
                                  -    
                                  -    
                                  -    var numOfInterruptions = 0;
                                  -    var bufferStart = 0;
                                  -
                                  -    var _sourceTextLength = sourceText.length;
                                  -    var _lines = sourceText.split("\n");
                                  -
                                  -    var _continuation = {
                                  -        main: {line: -1, lineCursor: -1, lineLength: 0},
                                  -        deep: {}
                                  -    };
                                  -
                                  -    var _tokens = [];
                                  -    
                                  -    var _NameFirstChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -    var _NameChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_";
                                  -
                                  -    var _Keywords = {
                                  -    	"break":      "BREAK",
                                  -    	"case":       "CASE",
                                  -    	"catch":      "CATCH",
                                  -    	"const":      "VAR",
                                  -    	"continue":   "CONTINUE",
                                  -    	"default":    "DEFAULT",
                                  -    	"delete":     "DELETE",
                                  -    	"do":         "DO",
                                  -    	"else":       "ELSE",
                                  -    	"false":      "FALSE",
                                  -    	"finally":    "FINALLY",
                                  -    	"for":        "FOR",
                                  -    	"function":   "FUNCTION",
                                  -    	"if":         "IF",
                                  -    	"in":         "IN",
                                  -    	"instanceof": "INSTANCEOF",
                                  -    	"new":        "NEW",
                                  -    	"null":       "NULL",
                                  -    	"return":     "RETURN",
                                  -    	"switch":     "SWITCH",
                                  -    	"this":       "THIS",
                                  -    	"throw":      "THROW",
                                  -    	"true":       "TRUE",
                                  -    	"try":        "TRY",
                                  -    	"typeof":     "TYPEOF",
                                  -    	"void":       "VOID",
                                  -    	"while":      "WHILE",
                                  -    	"with":       "WITH",
                                  -    	"var":        "VAR"
                                  -    };
                                  -
                                  -    var _Punctuations = {
                                  -        ";":   "SEMICOLON",
                                  -        ",":   "COMMA",
                                  -        "?":   "HOOK",
                                  -        ":":   "COLON",
                                  -        "||":  "OR",
                                  -        "&&":  "AND",
                                  -        "|":   "BITWISE_OR",
                                  -        "^":   "BITWISE_XOR",
                                  -        "&":   "BITWISE_AND",
                                  -        "===": "STRICT_EQ",
                                  -        "==":  "EQ",
                                  -        "=":   "ASSIGN",
                                  -        "!==": "STRICT_NE",
                                  -        "!=":  "NE",
                                  -        "<<":  "LSH",
                                  -        "<=":  "LE",
                                  -        "<":   "LT",
                                  -        ">>>": "URSH",
                                  -        ">>":  "RSH",
                                  -        ">=":  "GE",
                                  -        ">":   "GT",
                                  -        "++":  "INCREMENT",
                                  -        "--":  "DECREMENT",
                                  -        "+":   "PLUS",
                                  -        "-":   "MINUS",
                                  -        "*":   "MUL",
                                  -        "/":   "DIV",
                                  -        "%":   "MOD",
                                  -        "!":   "NOT",
                                  -        "~":   "BITWISE_NOT",
                                  -        ".":   "DOT",
                                  -        "[":   "LEFT_BRACKET",
                                  -        "]":   "RIGHT_BRACKET",
                                  -        "{":   "LEFT_CURLY",
                                  -        "}":   "RIGHT_CURLY",
                                  -        "(":   "LEFT_PAREN",
                                  -        ")":   "RIGHT_PAREN"
                                  -    };
                                  -
                                  -    var next = function()
                                  -    {
                                  -        var _next = function()
                                  -        {
                                  -            // a line is loaded and the cursor is not at the end, so move the
                                  -            // cursor one position and return the character at that position
                                  -            if (lineText && lineCursor < lineLength - 1)
                                  -            {
                                  -                lineCursor++
                                  -                return lineText.charAt(lineCursor);
                                  -            }
                                  -
                                  -            // cursor have reached the end of the stream
                                  -            if (line == numOfLines - 1)
                                  -            {
                                  -                return "(end)";
                                  -            }
                                  -            
                                  -            // if we are here, cursor have reached the end of the line
                                  -            
                                  -            // add the length of the last line (or the initialized zero value)
                                  -            // plus one newline character. The sum bufferStart + lineCursor
                                  -            // guives the exact position of the cursor in the source and in
                                  -            // the end bufferStart + lineCursor equals to sourceTextLength
                                  -            bufferStart += lineLength + 1; 
                                  -            
                                  -            // load new line and set the cursor back to the beginning
                                  -            line++;
                                  -            lineCursor = -1;
                                  -            lineText = lines[line];
                                  -            lineLength = lineText.length;
                                  -            
                                  -            // return the the new line indicator
                                  -            return "(newline)";
                                  -        };
                                  -
                                  -        // references to constants
                                  -        var Keywords = _Keywords;
                                  -        var Punctuations = _Punctuations;
                                  -        var NameFirstChars = _NameFirstChars;
                                  -        var NameChars = _NameChars ;
                                  -        var sourceTextLength = _sourceTextLength;
                                  -        
                                  -        // references to objects
                                  -        var continuation = _continuation;
                                  -        var tokens = _tokens;
                                  -        var lines = _lines;
                                  -        
                                  -        // cache number of lines
                                  -        var numOfLines = lines.length;
                                  -
                                  -        // internal variables        
                                  -        var q; // aux variable to hold quote character, and number conversion
                                  -        var str; // variable to hold the token being constructed 
                                  -        var start; // the line in which the token has started
                                  -        var focus; // the current focus of the iteration. its value will be the current character 
                                  -        // being processed, or if a deep interruption happened (the deep loop which parser an
                                  -        // individual token has been interrupted) its value will be the first character that 
                                  -        // started the token's processing (eg, if it was during a name processing it will
                                  -        // be the first letter of the name). This variable allows remembering which deep loop
                                  -        // was being executed before interrupting the execution. 
                                  -        
                                  -        
                                  -        // processing continuation state
                                  -        var state = continuation.main;
                                  -
                                  -        var line = state.line;              // current line
                                  -        var lineCursor = state.lineCursor;  // current cursor (column) position
                                  -        var lineText = state.lineText;      // current line's text
                                  -        var lineLength = state.lineLength;  // current line's length
                                  -        var lastToken = state.lastToken;    // last relevant token generated
                                  -        var lastFocus = state.lastFocus;    // last focus before interrupting
                                  -        var interrupted = state.interrupted;// deep loop interruption indication
                                  -        var interrupted2;
                                  -        var thetoken;
                                  -        
                                  -        var c = state.c || _next();          // current character being processed
                                  -
                                  -        // start measuring current processing time
                                  -        var processingTime = new Date().getTime();
                                  -
                                  -        while (c != "(end)")
                                  -        {
                                  -        
                                  -            if (thetoken || (new Date().getTime() - processingTime > 75))
                                  -            {
                                  -               //setTimeout(processing, 25);
                                  -               interrupted2 = true;
                                  -               console.log("interruption #%d - at line %d/%d - cursor %d/%d ", (++numOfInterruptions), line, numOfLines, lineCursor, lineLength);
                                  -               break;
                                  -            }
                                  -
                                  -            focus = interrupted ? lastFocus : c;
                                  -            
                                  -            //console.log("focus %o  cursor %d  interrupted %o ", lastFocus, lineCursor, interrupted);
                                  -            
                                  -            start = line;
                                  -
                                  -
                                  -            // ************************************************************************************
                                  -            // newline
                                  -            // ************************************************************************************
                                  -            
                                  -            if (focus == '(newline)')
                                  -            {
                                  -                thetoken = {type: "newline", data: null, line: start};
                                  -                c = lineText.charAt(++lineCursor);
                                  -                break;
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // whitespace
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (focus == ' ')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    c = _next();
                                  -
                                  -                    if (c == "(end)" || c > " ")
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    continuation.deep = {};
                                  -                    thetoken ={type: "space", data: str, line: start};
                                  -                    
                                  -                    debug && console.log("spaces: "+str.length);
                                  -                    break;
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // name
                                  -            // ************************************************************************************
                                  -            
                                  -            else if (NameFirstChars.indexOf(focus) != -1)
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    c = _next();
                                  -
                                  -                    if (NameChars.indexOf(c) == -1) {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    if (Keywords[str])
                                  -                        thetoken = lastToken = {type: "keyw", data: str, line: start};
                                  -                    else
                                  -                        thetoken = lastToken = {type: "name", data: str, line: start};
                                  -                    
                                  -                    debug && console.log("name: "+str);
                                  -                    break;
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str};
                                  -                }
                                  -
                                  -                continue;
                                  -
                                  -            }
                                  -            
                                  -            // ************************************************************************************
                                  -            // number
                                  -            // ************************************************************************************
                                  -
                                  -            // A number cannot start with a decimal point. It must start with a digit,
                                  -            // possibly '0'.
                                  -
                                  -            else if (focus >= '0' && focus <= '9')
                                  -            {
                                  -                str = c;
                                  -                lineCursor += 1;
                                  -
                                  -                // Look for more digits.
                                  -
                                  -                for (;;) {
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c < '0' || c > '9') {
                                  -                        break;
                                  -                    }
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                }
                                  -
                                  -                // Look for a decimal fraction part.
                                  -
                                  -                if (c === '.') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    for (;;) {
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        if (c < '0' || c > '9') {
                                  -                            break;
                                  -                        }
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                    }
                                  -                }
                                  -
                                  -                // Look for an exponent part.
                                  -
                                  -                if (c === 'e' || c === 'E') {
                                  -                    lineCursor += 1;
                                  -                    str += c;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    if (c === '-' || c === '+') {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    }
                                  -                    //if (c < '0' || c > '9') {
                                  -                        //make('number', str).error("Bad exponent");
                                  -                    //}
                                  -                    do {
                                  -                        lineCursor += 1;
                                  -                        str += c;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                    } while (c >= '0' && c <= '9');
                                  -                }
                                  -
                                  -                // Make sure the next character is not a letter.
                                  -
                                  -                if (c >= 'a' && c <= 'z') {
                                  -                    str += c;
                                  -                    lineCursor += 1;
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                // Convert the string value to a number. If it is finite, then it is a good
                                  -                // token.
                                  -
                                  -                q = +str;
                                  -                if (isFinite(q)) {
                                  -                    //result.push(make('number', n));
                                  -                    //createToken(str, "NUMB", "DECIMAL"); // TODO: xxxpedro add other types HEX OCTAL
                                  -                    thetoken = lastToken = {type: "numb", data: str, line: start};
                                  -                    break;
                                  -                } else {
                                  -                    //make('number', str).error("Bad number");
                                  -                }
                                  -
                                  -                continue;
                                  -            }/**/
                                  -
                                  -            // ************************************************************************************
                                  -            // multi-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/" && lineText.charAt(lineCursor+1) == "*")
                                  -            {
                                  -
                                  -                var isJSDOC = lineText.charAt(lineCursor+3);
                                  -                isJSDOC = lineText.charAt(lineCursor+2) == "*" &&
                                  -                        (isJSDOC != "*" && isJSDOC != "/" || // allow /** but not /** /
                                  -                        isJSDOC == "*" && lineText.charAt(lineCursor+4) != "*"); // allow /*** but not /****
                                  -
                                  -                str = "/*";
                                  -                _next();
                                  -                //lineCursor += 2;
                                  -
                                  -                while (true) {
                                  -                    c = _next();
                                  -                    
                                  -                    if (c == "(newline)")
                                  -                    {
                                  -                        if (str)
                                  -                            thetoken = {type: "comm", data: str, line: start};
                                  -                        
                                  -                        thetoken = {type: "newline", data: null, line: start};
                                  -                        str = "";
                                  -                        break;
                                  -                        continue;
                                  -                    }
                                  -                    
                                  -                    //c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    if ( c == "*" && lineText.charAt(lineCursor+1) == "/")
                                  -                    {
                                  -                        str += "/";
                                  -                        _next();
                                  -                        c = _next();
                                  -                        //lineCursor += 2;
                                  -                        //c = lineText.charAt(lineCursor);
                                  -                        break;
                                  -                    }
                                  -                    //lineCursor++;
                                  -                }
                                  -                
                                  -                //if (isJSDOC) createToken(str, "COMM", "JSDOC");
                                  -                //else createToken(str, "COMM", "MULTI_LINE_COMM");
                                  -                thetoken = {type: "comm", data: str, line: start};
                                  -                break;
                                  -                
                                  -                continue;
                                  -            }/**/
                                  -
                                  -            // ************************************************************************************
                                  -            // single-line comment
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus === '/' && lineText.charAt(lineCursor + 1) === '/')
                                  -            {
                                  -                str = c;
                                  -
                                  -                for (;;) {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    //if (c == "\n") line++;
                                  -
                                  -                    //if (c === '\n' || c === '\r' || c === '') {
                                  -                    if (!c) {
                                  -                        break;
                                  -                    }
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //if (this.keepComments) createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                //createToken(str, "COMM", "SINGLE_LINE_COMM");
                                  -                thetoken = {type: "comm", data: str, line: start};
                                  -                break;
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // string
                                  -            // ************************************************************************************
                                  -/*
                                  -            else if (focus === '\'' || focus === '"')
                                  -            {
                                  -                state = continuation.deep;
                                  -
                                  -                str = state.str || c;
                                  -                q = state.q || c;
                                  -                //str = c;
                                  -                //q = c;
                                  -                
                                  -                for (;;)
                                  -                {
                                  -                    if (new Date().getTime() - processingTime > 75)
                                  -                    {
                                  -                        lastFocus = focus;
                                  -                        interrupted = true;
                                  -                        //console.log("interruption processing \"string\" at line %d, cursor %d/%d", line, lineCursor, lineLength);
                                  -                        break;
                                  -
                                  -                    }
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    str += c;
                                  -                    
                                  -                    //if (c < ' ') {
                                  -                        //make('string', str).error(c === '\n' || c === '\r' || c === '' ?
                                  -                        //    "Unterminated string." :
                                  -                        //    "Control character in string.", make('', str));
                                  -                    //}
                                  -
                                  -                    // Look for the closing quote.
                                  -
                                  -                    if (c === q)
                                  -                    {
                                  -                        interrupted = false;
                                  -                        break;
                                  -                    }
                                  -
                                  -                    // Look for escapement.
                                  -
                                  -                    if (c === '\\')
                                  -                    {
                                  -                        lineCursor += 1;
                                  -                        //if (lineCursor >= lineLength) {
                                  -                            //make('string', str).error("Unterminated string");
                                  -                        //}
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        switch (c) {
                                  -                        case 'b':
                                  -                            c = '\b';
                                  -                            break;
                                  -                        case 'f':
                                  -                            c = '\f';
                                  -                            break;
                                  -                        case 'n':
                                  -                            c = '\n';
                                  -                            break;
                                  -                        case 'r':
                                  -                            c = '\r';
                                  -                            break;
                                  -                        case 't':
                                  -                            c = '\t';
                                  -                            break;
                                  -                        case 'u':
                                  -                            //if (lineCursor >= lineLength) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = parseInt(lineText.substr(lineCursor + 1, 4), 16);
                                  -                            //if (!isFinite(c) || c < 0) {
                                  -                                //make('string', str).error("Unterminated string");
                                  -                            //}
                                  -                            c = String.fromCharCode(c);
                                  -                            lineCursor += 4;
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -                }
                                  -                
                                  -                if (!interrupted && str)
                                  -                {
                                  -                    // success
                                  -                    continuation.deep = {};
                                  -                    
                                  -                    lineCursor += 1;
                                  -                    //result.push(make('string', str));
                                  -                    //createToken(str, "STRN", c === '"' ? "DOUBLE_QUOTE" : "SINGLE_QUOTE");
                                  -                    thetoken = lastToken = {type: "strn", data: str, line: start};
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    break;
                                  -                }
                                  -                else
                                  -                {
                                  -                    continuation.deep = {str: str, q: q};
                                  -                }
                                  -                
                                  -                continue;
                                  -            }
                                  -/**/
                                  -            // ************************************************************************************
                                  -            // regular expression
                                  -            // ************************************************************************************
                                  -
                                  -            else if (focus == "/")
                                  -            {
                                  -                var last = lastToken || {};
                                  -                var lastData = last.data;
                                  -                var lastType = last.type;
                                  -                if (
                                  -                        !lastToken || lastData != ")" && lastData != "]" && lastType != "numb" && 
                                  -                        (lastType != "name" || lastType == "name" && lastData == "return")
                                  -                    )
                                  -                {
                                  -
                                  -                    str = c;
                                  -                    var escapeNext = false;
                                  -
                                  -                    while(true)
                                  -                    {
                                  -                        lineCursor++;
                                  -                        c = lineText.charAt(lineCursor);
                                  -                        str += c;
                                  -
                                  -                        if (escapeNext)
                                  -                        {
                                  -                           escapeNext = false;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "\\")
                                  -                        {
                                  -                           escapeNext = true;
                                  -                           continue;
                                  -                        }
                                  -
                                  -                        if (c == "/")
                                  -                        {
                                  -                            var nextC = lineText.charAt(lineCursor+1);
                                  -                            if (nextC == "g" || nextC == "i")
                                  -                            {
                                  -                                lineCursor++;
                                  -                                c = lineText.charAt(lineCursor);
                                  -                                str += c;
                                  -                            }
                                  -
                                  -                            break;
                                  -                        }
                                  -                    }
                                  -
                                  -                    //console.log("REGX " + str);
                                  -                    thetoken = lastToken = {type: "regx", data: str, line: start};
                                  -
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    
                                  -                    break;
                                  -
                                  -                    continue;
                                  -                }
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // punctuations and/or operators
                                  -            // ************************************************************************************
                                  -
                                  -            if (Punctuations[focus])
                                  -            {
                                  -                str = c;
                                  -
                                  -                while (true)
                                  -                {
                                  -                    lineCursor++;
                                  -                    c = lineText.charAt(lineCursor);
                                  -                    
                                  -                    //c = _next();
                                  -
                                  -                    if (!c || !Punctuations[str+c])
                                  -                    //if (!Punctuations[str+c])
                                  -                    {
                                  -                        break;
                                  -                    }
                                  -
                                  -                    str += c;
                                  -                }
                                  -
                                  -                //console.log("punc " + str + " : " + line + "  (" + lineCursor + "/" + lineLength + ")");
                                  -                thetoken = lastToken = {type: "punc", data: str, line: start};
                                  -                
                                  -                break;
                                  -
                                  -                continue;
                                  -            }
                                  -
                                  -            // ************************************************************************************
                                  -            // fail
                                  -            // ************************************************************************************
                                  -            c = _next();
                                  -
                                  -        }
                                  -
                                  -        continuation.main = {
                                  -            c: c,
                                  -            line: line,
                                  -            lineCursor: lineCursor,
                                  -            lineText: lineText,
                                  -            lineLength: lineLength,
                                  -            lastToken: lastToken,
                                  -            interrupted: interrupted,
                                  -            lastFocus: lastFocus
                                  -        };
                                  -
                                  -
                                  -        if (c == "(end)")
                                  -        {
                                  -            var progress = bufferStart + lineCursor;
                                  -            
                                  -            updateProgress(progress, sourceTextLength);
                                  -            
                                  -            processingCallback(progress, sourceTextLength, numOfLines);
                                  -            throw ParseEnd;
                                  -//             if(renderTokens)
                                  -//                 render(tokens);
                                  -        }
                                  -        else
                                  -        {
                                  -            updateProgress(bufferStart + lineCursor, sourceTextLength);
                                  -            
                                  -//             if (renderTokens && tokens.length>=1000)
                                  -//                 render(tokens);
                                  -        }
                                  -        
                                  -        if (thetoken) return thetoken;
                                  -        
                                  -        if (interrupted2) throw ParseStopIteration;
                                  -        
                                  -        
                                  -    };
                                  -
                                  -    var updateProgress = function(progress, total)
                                  -    {
                                  -        var value = progress/total;
                                  -        
                                  -        if (!halfProgressReached && value > 0.5)
                                  -        {
                                  -            halfProgressReached = true;
                                  -            progressText.style.color = "#fff";
                                  -        }
                                  -        
                                  -        progressText.innerHTML = Math.round(value*100)+"%";
                                  -        progressFill.style.width = Math.round(value*progressBarWidth)+"px";
                                  -    };
                                  -    
                                  -    var processingCallback = function(progress, total, numOfLines)
                                  -    {
                                  -        totalTime = new Date().getTime() - totalTime;
                                  -        
                                  -        var text = "Finished in " + (totalTime/1000).toFixed(2) + " seconds" +
                                  -                " (" + (totalTime/numOfLines).toFixed(2) + " ms per line) ";
                                  -                
                                  -        progressText.innerHTML = text;
                                  -        
                                  -        if (window.console)
                                  -        {
                                  -            console.log(text);
                                  -        }
                                  -    };
                                  -    
                                  -    var tokensRendered = false;
                                  -    var render = function(tokens)
                                  -    {
                                  -        if (tokensRendered)
                                  -            return;
                                  -        
                                  -        tokensRendered = true;
                                  -        
                                  -        var html = ['<pre class="line">'];
                                  -        for (var i=1, count=1000; i<count; i++)
                                  -        {
                                  -            var tk = tokens[i];
                                  -            
                                  -            if (!tk) break;
                                  -            
                                  -            if (tk.type == "newline")
                                  -                html.push(' \n</pre><pre class="line">');
                                  -            else
                                  -                html.push('<span class="'+tk.type+'">'+tk.data+'</span>');
                                  -        }
                                  -        html.push(' \n</pre>');
                                  -        document.getElementById("source").innerHTML = html.join("");
                                  -        
                                  -        window.tokens = tokens;
                                  -    };
                                  -
                                  -    var callbackTimes = 0;
                                  -
                                  -    var totalTime = new Date().getTime();
                                  -    
                                  -    var progressText = document.getElementById("progressText");
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressBarWidth = progressBar.clientWidth;
                                  -    var halfProgressReached = false;
                                  -    
                                  -    return next;
                                  -};
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html
                                  deleted file mode 100644
                                  index 45ad79e8..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -<html xmlns="http://www.w3.org/1999/xhtml"><head>
                                  -<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
                                  -  
                                  -    <script src="highlight_files/highlight.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/stringstream.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/tokenize.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/tokenizejavascript.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/parsejavascript.js" type="text/javascript"></script>
                                  -    <title>CodeMirror: String highlight demonstration</title>
                                  -    <link rel="stylesheet" type="text/css" href="highlight_files/jscolors.css">
                                  -  </head><body style="padding: 20px;">
                                  -
                                  -<div style="border: 1px solid black; padding: 0.4em;">
                                  -<textarea id="code" cols="120" rows="20" style="border-width: 0pt;">// Demo for running a CodeMirror parser over a piece of code without
                                  -// creating an actual editor.
                                  -
                                  -(function(){
                                  -  function normaliseString(string) {
                                  -    var tab = "";
                                  -    for (var i = 0; i &lt; indentUnit; i++) tab += " ";
                                  -
                                  -    string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
                                  -    var pos = 0, parts = [], lines = string.split("\n");
                                  -    for (var line = 0; line &lt; lines.length; line++) {
                                  -      if (line != 0) parts.push("\n");
                                  -      parts.push(lines[line]);
                                  -    }
                                  -
                                  -    return {
                                  -      next: function() {
                                  -        if (pos &lt; parts.length) return parts[pos++];
                                  -        else throw StopIteration;
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  window.highlightText = function(string, output, parser) {
                                  -    var parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
                                  -    try {
                                  -      while (true) {
                                  -        var token = parser.next();
                                  -        var span = document.createElement("SPAN");
                                  -        span.className = token.style;
                                  -        span.appendChild(document.createTextNode(token.value));
                                  -        output.appendChild(span);
                                  -      }
                                  -    }
                                  -    catch (e) {
                                  -      if (e != StopIteration) throw e;
                                  -    }
                                  -  }
                                  -})();
                                  -</textarea>
                                  -</div>
                                  -
                                  -<button onclick="highlight()">Run highlighter</button>
                                  -
                                  -<div>
                                  -<div id="numbers" style="float: left; width: 2em; margin-right: 0.5em; text-align: right; font-family: monospace; color: rgb(204, 204, 204);"></div>
                                  -<pre id="output" style="font-family: monospace;"></pre>
                                  -</div>
                                  -
                                  -<script type="text/javascript">
                                  -  // Simple hack to demonstrate adding line numbers. Just pass the DOM node as
                                  -  // the second argument to highlightText when you don't need those
                                  -  function highlight() {
                                  -    var lineNo = 1, output = document.getElementById("output"), numbers = document.getElementById("numbers");
                                  -    output.innerHTML = numbers.innerHTML = "";
                                  -
                                  -    function addLine(line) {
                                  -      numbers.appendChild(document.createTextNode(String(lineNo++)));
                                  -      numbers.appendChild(document.createElement("BR"));
                                  -      for (var i = 0; i < line.length; i++) output.appendChild(line[i]);
                                  -      output.appendChild(document.createElement("BR"));
                                  -    }
                                  -    highlightText(document.getElementById("code").value, addLine);
                                  -  }
                                  -</script>
                                  -
                                  -  </body></html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html
                                  deleted file mode 100644
                                  index 4d9e38be..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html
                                  +++ /dev/null
                                  @@ -1,133 +0,0 @@
                                  -<html xmlns="http://www.w3.org/1999/xhtml"><head>
                                  -<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
                                  -  
                                  -    <script src="highlight_files/highlight2.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/stringstream.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/tokenize.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/tokenizejavascript.js" type="text/javascript"></script>
                                  -    <script src="highlight_files/parsejavascript.js" type="text/javascript"></script>
                                  -    <title>CodeMirror: String highlight demonstration</title>
                                  -    <link rel="stylesheet" type="text/css" href="highlight_files/jscolors.css">
                                  -  </head><body style="padding: 20px;">
                                  -
                                  -<div style="border: 1px solid black; padding: 0.4em;">
                                  -<textarea id="code" cols="120" rows="20" style="border-width: 0pt;">// Demo for running a CodeMirror parser over a piece of code without
                                  -// creating an actual editor.
                                  -
                                  -(function(){
                                  -  function normaliseString(string) {
                                  -    var tab = "";
                                  -    for (var i = 0; i &lt; indentUnit; i++) tab += " ";
                                  -
                                  -    string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
                                  -    var pos = 0, parts = [], lines = string.split("\n");
                                  -    for (var line = 0; line &lt; lines.length; line++) {
                                  -      if (line != 0) parts.push("\n");
                                  -      parts.push(lines[line]);
                                  -    }
                                  -
                                  -    return {
                                  -      next: function() {
                                  -        if (pos &lt; parts.length) return parts[pos++];
                                  -        else throw StopIteration;
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  window.highlightText = function(string, output, parser) {
                                  -    var parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
                                  -    try {
                                  -      while (true) {
                                  -        var token = parser.next();
                                  -        var span = document.createElement("SPAN");
                                  -        span.className = token.style;
                                  -        span.appendChild(document.createTextNode(token.value));
                                  -        output.appendChild(span);
                                  -      }
                                  -    }
                                  -    catch (e) {
                                  -      if (e != StopIteration) throw e;
                                  -    }
                                  -  }
                                  -})();
                                  -</textarea>
                                  -</div>
                                  -
                                  -<button onclick="highlight()">Run highlighter</button>
                                  -
                                  -<div>
                                  -<div id="numbers" style="float: left; width: 2em; margin-right: 0.5em; text-align: right; font-family: monospace; color: rgb(204, 204, 204);"></div>
                                  -<pre id="output" style="font-family: monospace;"></pre>
                                  -</div>
                                  -
                                  -<script type="text/javascript">
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -  // Simple hack to demonstrate adding line numbers. Just pass the DOM node as
                                  -  // the second argument to highlightText when you don't need those
                                  -  function highlight() {
                                  -    var lineNo = 1, output = document.getElementById("output"), numbers = document.getElementById("numbers");
                                  -    output.innerHTML = numbers.innerHTML = "";
                                  -
                                  -    
                                  -    function addLine(line) {
                                  -        return;
                                  -        
                                  -      if (lineNo++ > 1000)
                                  -        return;
                                  -      
                                  -      numbers.appendChild(document.createTextNode(String(lineNo++)));
                                  -      numbers.appendChild(document.createElement("BR"));
                                  -      for (var i = 0; i < line.length; i++) output.appendChild(line[i]);
                                  -      output.appendChild(document.createElement("BR"));
                                  -    }
                                  -    
                                  -    
                                  -    var sourceLocation = "../../../../build/syntax-test1.js";
                                  -    var sourceText = getResource(sourceLocation);
                                  -    highlightText(sourceText, addLine);
                                  -    /**/
                                  -    //highlightText(document.getElementById("code").value, addLine);
                                  -  }
                                  -</script>
                                  -
                                  -  </body></html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js
                                  deleted file mode 100644
                                  index ac915122..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js
                                  +++ /dev/null
                                  @@ -1,68 +0,0 @@
                                  -// Minimal framing needed to use CodeMirror-style parsers to highlight
                                  -// code. Load this along with tokenize.js, stringstream.js, and your
                                  -// parser. Then call highlightText, passing a string as the first
                                  -// argument, and as the second argument either a callback function
                                  -// that will be called with an array of SPAN nodes for every line in
                                  -// the code, or a DOM node to which to append these spans, and
                                  -// optionally (not needed if you only loaded one parser) a parser
                                  -// object.
                                  -
                                  -// Stuff from util.js that the parsers are using.
                                  -var StopIteration = {toString: function() {return "StopIteration"}};
                                  -
                                  -var Editor = {};
                                  -var indentUnit = 2;
                                  -
                                  -(function(){
                                  -  function normaliseString(string) {
                                  -    var tab = "";
                                  -    for (var i = 0; i < indentUnit; i++) tab += " ";
                                  -
                                  -    string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
                                  -    var pos = 0, parts = [], lines = string.split("\n");
                                  -    for (var line = 0; line < lines.length; line++) {
                                  -      if (line != 0) parts.push("\n");
                                  -      parts.push(lines[line]);
                                  -    }
                                  -
                                  -    return {
                                  -      next: function() {
                                  -        if (pos < parts.length) return parts[pos++];
                                  -        else throw StopIteration;
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  window.highlightText = function(string, callback, parser) {
                                  -    parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
                                  -    var line = [];
                                  -    if (callback.nodeType == 1) {
                                  -      var node = callback;
                                  -      callback = function(line) {
                                  -        for (var i = 0; i < line.length; i++)
                                  -          node.appendChild(line[i]);
                                  -        node.appendChild(document.createElement("BR"));
                                  -      };
                                  -    }
                                  -
                                  -    try {
                                  -      while (true) {
                                  -        var token = parser.next();
                                  -        if (token.value == "\n") {
                                  -          callback(line);
                                  -          line = [];
                                  -        }
                                  -        else {
                                  -          var span = document.createElement("SPAN");
                                  -          span.className = token.style;
                                  -          span.appendChild(document.createTextNode(token.value));
                                  -          line.push(span);
                                  -        }
                                  -      }
                                  -    }
                                  -    catch (e) {
                                  -      if (e != StopIteration) throw e;
                                  -    }
                                  -    if (line.length) callback(line);
                                  -  }
                                  -})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js
                                  deleted file mode 100644
                                  index 1dd42bf7..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js
                                  +++ /dev/null
                                  @@ -1,88 +0,0 @@
                                  -// Minimal framing needed to use CodeMirror-style parsers to highlight
                                  -// code. Load this along with tokenize.js, stringstream.js, and your
                                  -// parser. Then call highlightText, passing a string as the first
                                  -// argument, and as the second argument either a callback function
                                  -// that will be called with an array of SPAN nodes for every line in
                                  -// the code, or a DOM node to which to append these spans, and
                                  -// optionally (not needed if you only loaded one parser) a parser
                                  -// object.
                                  -
                                  -// Stuff from util.js that the parsers are using.
                                  -var StopIteration = {toString: function() {return "StopIteration"}};
                                  -
                                  -var Editor = {};
                                  -var indentUnit = 2;
                                  -
                                  -(function(){
                                  -  function normaliseString(string) {
                                  -    var tab = "";
                                  -    for (var i = 0; i < indentUnit; i++) tab += " ";
                                  -
                                  -    string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
                                  -    var pos = 0, parts = [], lines = string.split("\n");
                                  -    for (var line = 0; line < lines.length; line++) {
                                  -      if (line != 0) parts.push("\n");
                                  -      parts.push(lines[line]);
                                  -    }
                                  -
                                  -    return {
                                  -      next: function() {
                                  -        if (pos < parts.length) return parts[pos++];
                                  -        else throw StopIteration;
                                  -      }
                                  -    };
                                  -  }
                                  -
                                  -  window.highlightText = function(string, callback, parser) {
                                  -  
                                  -    var totalTime = new Date().getTime();
                                  -    
                                  -    parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
                                  -    var line = [];
                                  -    if (callback.nodeType == 1) {
                                  -      var node = callback;
                                  -      callback = function(line) {
                                  -        for (var i = 0; i < line.length; i++)
                                  -          node.appendChild(line[i]);
                                  -        node.appendChild(document.createElement("BR"));
                                  -      };
                                  -    }
                                  -    
                                  -        var interrupted;
                                  -(function(){
                                  -    try {
                                  -        var startTime = new Date().getTime();
                                  -      while (true) {
                                  -        
                                  -      interrupted = false;
                                  -      
                                  -        if (new Date().getTime() - startTime > 75)
                                  -        {
                                  -            setTimeout(arguments.callee, 25);
                                  -            interrupted = true;
                                  -            break;
                                  -        }
                                  -        
                                  -        var token = parser.next();
                                  -        if (token.value == "\n") {
                                  -          callback(line);
                                  -          line = [];
                                  -        }
                                  -        else {
                                  -          var span = document.createElement("SPAN");
                                  -          span.className = token.style;
                                  -          span.appendChild(document.createTextNode(token.value));
                                  -          line.push(span);
                                  -        }
                                  -      }
                                  -      
                                  -    }
                                  -    catch (e) {
                                  -        alert(new Date().getTime() - totalTime + " ms");
                                  -      if (e != StopIteration) throw e;
                                  -    }
                                  -})();
                                  -    
                                  -    if (line.length) callback(line);
                                  -  }
                                  -})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css
                                  deleted file mode 100644
                                  index 7c65d7df..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -html {
                                  -  cursor: text;
                                  -}
                                  -
                                  -.editbox {
                                  -  margin: .4em;
                                  -  padding: 0;
                                  -  font-family: monospace;
                                  -  font-size: 10pt;
                                  -  color: black;
                                  -}
                                  -
                                  -pre.code, .editbox {
                                  -  color: #666666;
                                  -}
                                  -
                                  -.editbox p {
                                  -  margin: 0;
                                  -}
                                  -
                                  -span.js-punctuation {
                                  -  color: #666666;
                                  -}
                                  -
                                  -span.js-operator {
                                  -  color: #666666;
                                  -}
                                  -
                                  -span.js-keyword {
                                  -  color: #770088;
                                  -}
                                  -
                                  -span.js-atom {
                                  -  color: #228811;
                                  -}
                                  -
                                  -span.js-variable {
                                  -  color: black;
                                  -}
                                  -
                                  -span.js-variabledef {
                                  -  color: #0000FF;
                                  -}
                                  -
                                  -span.js-localvariable {
                                  -  color: #004499;
                                  -}
                                  -
                                  -span.js-property {
                                  -  color: black;
                                  -}
                                  -
                                  -span.js-comment {
                                  -  color: #AA7700;
                                  -}
                                  -
                                  -span.js-string {
                                  -  color: #AA2222;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js
                                  deleted file mode 100644
                                  index 3aa20697..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js
                                  +++ /dev/null
                                  @@ -1,359 +0,0 @@
                                  -/* Parse function for JavaScript. Makes use of the tokenizer from
                                  - * tokenizejavascript.js. Note that your parsers do not have to be
                                  - * this complicated -- if you don't want to recognize local variables,
                                  - * in many languages it is enough to just look for braces, semicolons,
                                  - * parentheses, etc, and know when you are inside a string or comment.
                                  - *
                                  - * See manual.html for more info about the parser interface.
                                  - */
                                  -
                                  -var JSParser = Editor.Parser = (function() {
                                  -  // Token types that can be considered to be atoms.
                                  -  var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true};
                                  -  // Setting that can be used to have JSON data indent properly.
                                  -  var json = false;
                                  -  // Constructor for the lexical context objects.
                                  -  function JSLexical(indented, column, type, align, prev, info) {
                                  -    // indentation at start of this line
                                  -    this.indented = indented;
                                  -    // column at which this scope was opened
                                  -    this.column = column;
                                  -    // type of scope ('vardef', 'stat' (statement), 'form' (special form), '[', '{', or '(')
                                  -    this.type = type;
                                  -    // '[', '{', or '(' blocks that have any text after their opening
                                  -    // character are said to be 'aligned' -- any lines below are
                                  -    // indented all the way to the opening character.
                                  -    if (align != null)
                                  -      this.align = align;
                                  -    // Parent scope, if any.
                                  -    this.prev = prev;
                                  -    this.info = info;
                                  -  }
                                  -
                                  -  // My favourite JavaScript indentation rules.
                                  -  function indentJS(lexical) {
                                  -    return function(firstChars) {
                                  -      var firstChar = firstChars && firstChars.charAt(0), type = lexical.type;
                                  -      var closing = firstChar == type;
                                  -      if (type == "vardef")
                                  -        return lexical.indented + 4;
                                  -      else if (type == "form" && firstChar == "{")
                                  -        return lexical.indented;
                                  -      else if (type == "stat" || type == "form")
                                  -        return lexical.indented + indentUnit;
                                  -      else if (lexical.info == "switch" && !closing)
                                  -        return lexical.indented + (/^(?:case|default)\b/.test(firstChars) ? indentUnit : 2 * indentUnit);
                                  -      else if (lexical.align)
                                  -        return lexical.column - (closing ? 1 : 0);
                                  -      else
                                  -        return lexical.indented + (closing ? 0 : indentUnit);
                                  -    };
                                  -  }
                                  -
                                  -  // The parser-iterator-producing function itself.
                                  -  function parseJS(input, basecolumn) {
                                  -    // Wrap the input in a token stream
                                  -    var tokens = tokenizeJavaScript(input);
                                  -    // The parser state. cc is a stack of actions that have to be
                                  -    // performed to finish the current statement. For example we might
                                  -    // know that we still need to find a closing parenthesis and a
                                  -    // semicolon. Actions at the end of the stack go first. It is
                                  -    // initialized with an infinitely looping action that consumes
                                  -    // whole statements.
                                  -    var cc = [json ? expressions : statements];
                                  -    // Context contains information about the current local scope, the
                                  -    // variables defined in that, and the scopes above it.
                                  -    var context = null;
                                  -    // The lexical scope, used mostly for indentation.
                                  -    var lexical = new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false);
                                  -    // Current column, and the indentation at the start of the current
                                  -    // line. Used to create lexical scope objects.
                                  -    var column = 0;
                                  -    var indented = 0;
                                  -    // Variables which are used by the mark, cont, and pass functions
                                  -    // below to communicate with the driver loop in the 'next'
                                  -    // function.
                                  -    var consume, marked;
                                  -  
                                  -    // The iterator object.
                                  -    var parser = {next: next, copy: copy};
                                  -
                                  -    function next(){
                                  -      // Start by performing any 'lexical' actions (adjusting the
                                  -      // lexical variable), or the operations below will be working
                                  -      // with the wrong lexical state.
                                  -      while(cc[cc.length - 1].lex)
                                  -        cc.pop()();
                                  -
                                  -      // Fetch a token.
                                  -      var token = tokens.next();
                                  -
                                  -      // Adjust column and indented.
                                  -      if (token.type == "whitespace" && column == 0)
                                  -        indented = token.value.length;
                                  -      column += token.value.length;
                                  -      if (token.content == "\n"){
                                  -        indented = column = 0;
                                  -        // If the lexical scope's align property is still undefined at
                                  -        // the end of the line, it is an un-aligned scope.
                                  -        if (!("align" in lexical))
                                  -          lexical.align = false;
                                  -        // Newline tokens get an indentation function associated with
                                  -        // them.
                                  -        token.indentation = indentJS(lexical);
                                  -      }
                                  -      // No more processing for meaningless tokens.
                                  -      if (token.type == "whitespace" || token.type == "comment")
                                  -        return token;
                                  -      // When a meaningful token is found and the lexical scope's
                                  -      // align is undefined, it is an aligned scope.
                                  -      if (!("align" in lexical))
                                  -        lexical.align = true;
                                  -
                                  -      // Execute actions until one 'consumes' the token and we can
                                  -      // return it.
                                  -      while(true) {
                                  -        consume = marked = false;
                                  -        // Take and execute the topmost action.
                                  -        cc.pop()(token.type, token.content);
                                  -        if (consume){
                                  -          // Marked is used to change the style of the current token.
                                  -          if (marked)
                                  -            token.style = marked;
                                  -          // Here we differentiate between local and global variables.
                                  -          else if (token.type == "variable" && inScope(token.content))
                                  -            token.style = "js-localvariable";
                                  -          return token;
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    // This makes a copy of the parser state. It stores all the
                                  -    // stateful variables in a closure, and returns a function that
                                  -    // will restore them when called with a new input stream. Note
                                  -    // that the cc array has to be copied, because it is contantly
                                  -    // being modified. Lexical objects are not mutated, and context
                                  -    // objects are not mutated in a harmful way, so they can be shared
                                  -    // between runs of the parser.
                                  -    function copy(){
                                  -      var _context = context, _lexical = lexical, _cc = cc.concat([]), _tokenState = tokens.state;
                                  -  
                                  -      return function copyParser(input){
                                  -        context = _context;
                                  -        lexical = _lexical;
                                  -        cc = _cc.concat([]); // copies the array
                                  -        column = indented = 0;
                                  -        tokens = tokenizeJavaScript(input, _tokenState);
                                  -        return parser;
                                  -      };
                                  -    }
                                  -
                                  -    // Helper function for pushing a number of actions onto the cc
                                  -    // stack in reverse order.
                                  -    function push(fs){
                                  -      for (var i = fs.length - 1; i >= 0; i--)
                                  -        cc.push(fs[i]);
                                  -    }
                                  -    // cont and pass are used by the action functions to add other
                                  -    // actions to the stack. cont will cause the current token to be
                                  -    // consumed, pass will leave it for the next action.
                                  -    function cont(){
                                  -      push(arguments);
                                  -      consume = true;
                                  -    }
                                  -    function pass(){
                                  -      push(arguments);
                                  -      consume = false;
                                  -    }
                                  -    // Used to change the style of the current token.
                                  -    function mark(style){
                                  -      marked = style;
                                  -    }
                                  -
                                  -    // Push a new scope. Will automatically link the current scope.
                                  -    function pushcontext(){
                                  -      context = {prev: context, vars: {"this": true, "arguments": true}};
                                  -    }
                                  -    // Pop off the current scope.
                                  -    function popcontext(){
                                  -      context = context.prev;
                                  -    }
                                  -    // Register a variable in the current scope.
                                  -    function register(varname){
                                  -      if (context){
                                  -        mark("js-variabledef");
                                  -        context.vars[varname] = true;
                                  -      }
                                  -    }
                                  -    // Check whether a variable is defined in the current scope.
                                  -    function inScope(varname){
                                  -      var cursor = context;
                                  -      while (cursor) {
                                  -        if (cursor.vars[varname])
                                  -          return true;
                                  -        cursor = cursor.prev;
                                  -      }
                                  -      return false;
                                  -    }
                                  -  
                                  -    // Push a new lexical context of the given type.
                                  -    function pushlex(type, info) {
                                  -      var result = function(){
                                  -        lexical = new JSLexical(indented, column, type, null, lexical, info)
                                  -      };
                                  -      result.lex = true;
                                  -      return result;
                                  -    }
                                  -    // Pop off the current lexical context.
                                  -    function poplex(){
                                  -      if (lexical.type == ")")
                                  -        indented = lexical.indented;
                                  -      lexical = lexical.prev;
                                  -    }
                                  -    poplex.lex = true;
                                  -    // The 'lex' flag on these actions is used by the 'next' function
                                  -    // to know they can (and have to) be ran before moving on to the
                                  -    // next token.
                                  -  
                                  -    // Creates an action that discards tokens until it finds one of
                                  -    // the given type.
                                  -    function expect(wanted){
                                  -      return function expecting(type){
                                  -        if (type == wanted) cont();
                                  -        else if (wanted == ";") pass();
                                  -        else cont(arguments.callee);
                                  -      };
                                  -    }
                                  -
                                  -    // Looks for a statement, and then calls itself.
                                  -    function statements(type){
                                  -      return pass(statement, statements);
                                  -    }
                                  -    function expressions(type){
                                  -      return pass(expression, expressions);
                                  -    }
                                  -    // Dispatches various types of statements based on the type of the
                                  -    // current token.
                                  -    function statement(type){
                                  -      if (type == "var") cont(pushlex("vardef"), vardef1, expect(";"), poplex);
                                  -      else if (type == "keyword a") cont(pushlex("form"), expression, statement, poplex);
                                  -      else if (type == "keyword b") cont(pushlex("form"), statement, poplex);
                                  -      else if (type == "{") cont(pushlex("}"), block, poplex);
                                  -      else if (type == ";") cont();
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "for") cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex);
                                  -      else if (type == "variable") cont(pushlex("stat"), maybelabel);
                                  -      else if (type == "switch") cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex);
                                  -      else if (type == "case") cont(expression, expect(":"));
                                  -      else if (type == "default") cont(expect(":"));
                                  -      else if (type == "catch") cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext);
                                  -      else pass(pushlex("stat"), expression, expect(";"), poplex);
                                  -    }
                                  -    // Dispatch expression types.
                                  -    function expression(type){
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(maybeoperator);
                                  -      else if (type == "function") cont(functiondef);
                                  -      else if (type == "keyword c") cont(expression);
                                  -      else if (type == "(") cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == "[") cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator);
                                  -      else if (type == "{") cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator);
                                  -      else cont();
                                  -    }
                                  -    // Called for places where operators, function calls, or
                                  -    // subscripts are valid. Will skip on to the next action if none
                                  -    // is found.
                                  -    function maybeoperator(type, value){
                                  -      if (type == "operator" && /\+\+|--/.test(value)) cont(maybeoperator);
                                  -      else if (type == "operator") cont(expression);
                                  -      else if (type == ";") pass();
                                  -      else if (type == "(") cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator);
                                  -      else if (type == ".") cont(property, maybeoperator);
                                  -      else if (type == "[") cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator);
                                  -    }
                                  -    // When a statement starts with a variable name, it might be a
                                  -    // label. If no colon follows, it's a regular statement.
                                  -    function maybelabel(type){
                                  -      if (type == ":") cont(poplex, statement);
                                  -      else pass(maybeoperator, expect(";"), poplex);
                                  -    }
                                  -    // Property names need to have their style adjusted -- the
                                  -    // tokenizer thinks they are variables.
                                  -    function property(type){
                                  -      if (type == "variable") {mark("js-property"); cont();}
                                  -    }
                                  -    // This parses a property and its value in an object literal.
                                  -    function objprop(type){
                                  -      if (type == "variable") mark("js-property");
                                  -      if (atomicTypes.hasOwnProperty(type)) cont(expect(":"), expression);
                                  -    }
                                  -    // Parses a comma-separated list of the things that are recognized
                                  -    // by the 'what' argument.
                                  -    function commasep(what, end){
                                  -      function proceed(type) {
                                  -        if (type == ",") cont(what, proceed);
                                  -        else if (type == end) cont();
                                  -        else cont(expect(end));
                                  -      }
                                  -      return function commaSeparated(type) {
                                  -        if (type == end) cont();
                                  -        else pass(what, proceed);
                                  -      };
                                  -    }
                                  -    // Look for statements until a closing brace is found.
                                  -    function block(type){
                                  -      if (type == "}") cont();
                                  -      else pass(statement, block);
                                  -    }
                                  -    // Variable definitions are split into two actions -- 1 looks for
                                  -    // a name or the end of the definition, 2 looks for an '=' sign or
                                  -    // a comma.
                                  -    function vardef1(type, value){
                                  -      if (type == "variable"){register(value); cont(vardef2);}
                                  -      else cont();
                                  -    }
                                  -    function vardef2(type, value){
                                  -      if (value == "=") cont(expression, vardef2);
                                  -      else if (type == ",") cont(vardef1);
                                  -    }
                                  -    // For loops.
                                  -    function forspec1(type){
                                  -      if (type == "var") cont(vardef1, forspec2);
                                  -      else if (type == ";") pass(forspec2);
                                  -      else if (type == "variable") cont(formaybein);
                                  -      else pass(forspec2);
                                  -    }
                                  -    function formaybein(type, value){
                                  -      if (value == "in") cont(expression);
                                  -      else cont(maybeoperator, forspec2);
                                  -    }
                                  -    function forspec2(type, value){
                                  -      if (type == ";") cont(forspec3);
                                  -      else if (value == "in") cont(expression);
                                  -      else cont(expression, expect(";"), forspec3);
                                  -    }
                                  -    function forspec3(type) {
                                  -      if (type == ")") pass();
                                  -      else cont(expression);
                                  -    }
                                  -    // A function definition creates a new context, and the variables
                                  -    // in its argument list have to be added to this context.
                                  -    function functiondef(type, value){
                                  -      if (type == "variable"){register(value); cont(functiondef);}
                                  -      else if (type == "(") cont(pushcontext, commasep(funarg, ")"), statement, popcontext);
                                  -    }
                                  -    function funarg(type, value){
                                  -      if (type == "variable"){register(value); cont();}
                                  -    }
                                  -  
                                  -    return parser;
                                  -  }
                                  -
                                  -  return {
                                  -    make: parseJS,
                                  -    electricChars: "{}:",
                                  -    configure: function(obj) {
                                  -      if (obj.json != null) json = obj.json;
                                  -    }
                                  -  };
                                  -})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js
                                  deleted file mode 100644
                                  index b56e2f63..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js
                                  +++ /dev/null
                                  @@ -1,145 +0,0 @@
                                  -/* String streams are the things fed to parsers (which can feed them
                                  - * to a tokenizer if they want). They provide peek and next methods
                                  - * for looking at the current character (next 'consumes' this
                                  - * character, peek does not), and a get method for retrieving all the
                                  - * text that was consumed since the last time get was called.
                                  - *
                                  - * An easy mistake to make is to let a StopIteration exception finish
                                  - * the token stream while there are still characters pending in the
                                  - * string stream (hitting the end of the buffer while parsing a
                                  - * token). To make it easier to detect such errors, the stringstreams
                                  - * throw an exception when this happens.
                                  - */
                                  -
                                  -// Make a stringstream stream out of an iterator that returns strings.
                                  -// This is applied to the result of traverseDOM (see codemirror.js),
                                  -// and the resulting stream is fed to the parser.
                                  -var stringStream = function(source){
                                  -  // String that's currently being iterated over.
                                  -  var current = "";
                                  -  // Position in that string.
                                  -  var pos = 0;
                                  -  // Accumulator for strings that have been iterated over but not
                                  -  // get()-ed yet.
                                  -  var accum = "";
                                  -  // Make sure there are more characters ready, or throw
                                  -  // StopIteration.
                                  -  function ensureChars() {
                                  -    while (pos == current.length) {
                                  -      accum += current;
                                  -      current = ""; // In case source.next() throws
                                  -      pos = 0;
                                  -      try {current = source.next();}
                                  -      catch (e) {
                                  -        if (e != StopIteration) throw e;
                                  -        else return false;
                                  -      }
                                  -    }
                                  -    return true;
                                  -  }
                                  -
                                  -  return {
                                  -    // peek: -> character
                                  -    // Return the next character in the stream.
                                  -    peek: function() {
                                  -      if (!ensureChars()) return null;
                                  -      return current.charAt(pos);
                                  -    },
                                  -    // next: -> character
                                  -    // Get the next character, throw StopIteration if at end, check
                                  -    // for unused content.
                                  -    next: function() {
                                  -      if (!ensureChars()) {
                                  -        if (accum.length > 0)
                                  -          throw "End of stringstream reached without emptying buffer ('" + accum + "').";
                                  -        else
                                  -          throw StopIteration;
                                  -      }
                                  -      return current.charAt(pos++);
                                  -    },
                                  -    // get(): -> string
                                  -    // Return the characters iterated over since the last call to
                                  -    // .get().
                                  -    get: function() {
                                  -      var temp = accum;
                                  -      accum = "";
                                  -      if (pos > 0){
                                  -        temp += current.slice(0, pos);
                                  -        current = current.slice(pos);
                                  -        pos = 0;
                                  -      }
                                  -      return temp;
                                  -    },
                                  -    // Push a string back into the stream.
                                  -    push: function(str) {
                                  -      current = current.slice(0, pos) + str + current.slice(pos);
                                  -    },
                                  -    lookAhead: function(str, consume, skipSpaces, caseInsensitive) {
                                  -      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
                                  -      str = cased(str);
                                  -      var found = false;
                                  -
                                  -      var _accum = accum, _pos = pos;
                                  -      if (skipSpaces) this.nextWhileMatches(/[\s\u00a0]/);
                                  -
                                  -      while (true) {
                                  -        var end = pos + str.length, left = current.length - pos;
                                  -        if (end <= current.length) {
                                  -          found = str == cased(current.slice(pos, end));
                                  -          pos = end;
                                  -          break;
                                  -        }
                                  -        else if (str.slice(0, left) == cased(current.slice(pos))) {
                                  -          accum += current; current = "";
                                  -          try {current = source.next();}
                                  -          catch (e) {break;}
                                  -          pos = 0;
                                  -          str = str.slice(left);
                                  -        }
                                  -        else {
                                  -          break;
                                  -        }
                                  -      }
                                  -
                                  -      if (!(found && consume)) {
                                  -        current = accum.slice(_accum.length) + current;
                                  -        pos = _pos;
                                  -        accum = _accum;
                                  -      }
                                  -
                                  -      return found;
                                  -    },
                                  -
                                  -    // Utils built on top of the above
                                  -    // more: -> boolean
                                  -    // Produce true if the stream isn't empty.
                                  -    more: function() {
                                  -      return this.peek() !== null;
                                  -    },
                                  -    applies: function(test) {
                                  -      var next = this.peek();
                                  -      return (next !== null && test(next));
                                  -    },
                                  -    nextWhile: function(test) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && test(next))
                                  -        this.next();
                                  -    },
                                  -    matches: function(re) {
                                  -      var next = this.peek();
                                  -      return (next !== null && re.test(next));
                                  -    },
                                  -    nextWhileMatches: function(re) {
                                  -      var next;
                                  -      while ((next = this.peek()) !== null && re.test(next))
                                  -        this.next();
                                  -    },
                                  -    equals: function(ch) {
                                  -      return ch === this.peek();
                                  -    },
                                  -    endOfLine: function() {
                                  -      var next = this.peek();
                                  -      return next == null || next == "\n";
                                  -    }
                                  -  };
                                  -};
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js
                                  deleted file mode 100644
                                  index 071970ce..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -// A framework for simple tokenizers. Takes care of newlines and
                                  -// white-space, and of getting the text from the source stream into
                                  -// the token object. A state is a function of two arguments -- a
                                  -// string stream and a setState function. The second can be used to
                                  -// change the tokenizer's state, and can be ignored for stateless
                                  -// tokenizers. This function should advance the stream over a token
                                  -// and return a string or object containing information about the next
                                  -// token, or null to pass and have the (new) state be called to finish
                                  -// the token. When a string is given, it is wrapped in a {style, type}
                                  -// object. In the resulting object, the characters consumed are stored
                                  -// under the content property. Any whitespace following them is also
                                  -// automatically consumed, and added to the value property. (Thus,
                                  -// content is the actual meaningful part of the token, while value
                                  -// contains all the text it spans.)
                                  -
                                  -function tokenizer(source, state) {
                                  -  // Newlines are always a separate token.
                                  -  function isWhiteSpace(ch) {
                                  -    // The messy regexp is because IE's regexp matcher is of the
                                  -    // opinion that non-breaking spaces are no whitespace.
                                  -    return ch != "\n" && /^[\s\u00a0]*$/.test(ch);
                                  -  }
                                  -
                                  -  var tokenizer = {
                                  -    state: state,
                                  -
                                  -    take: function(type) {
                                  -      if (typeof(type) == "string")
                                  -        type = {style: type, type: type};
                                  -
                                  -      type.content = (type.content || "") + source.get();
                                  -      if (!/\n$/.test(type.content))
                                  -        source.nextWhile(isWhiteSpace);
                                  -      type.value = type.content + source.get();
                                  -      return type;
                                  -    },
                                  -
                                  -    next: function () {
                                  -      if (!source.more()) throw StopIteration;
                                  -
                                  -      var type;
                                  -      if (source.equals("\n")) {
                                  -        source.next();
                                  -        return this.take("whitespace");
                                  -      }
                                  -      
                                  -      if (source.applies(isWhiteSpace))
                                  -        type = "whitespace";
                                  -      else
                                  -        while (!type)
                                  -          type = this.state(source, function(s) {tokenizer.state = s;});
                                  -
                                  -      return this.take(type);
                                  -    }
                                  -  };
                                  -  return tokenizer;
                                  -}
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js
                                  deleted file mode 100644
                                  index 019136fc..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js
                                  +++ /dev/null
                                  @@ -1,174 +0,0 @@
                                  -/* Tokenizer for JavaScript code */
                                  -
                                  -var tokenizeJavaScript = (function() {
                                  -  // Advance the stream until the given character (not preceded by a
                                  -  // backslash) is encountered, or the end of the line is reached.
                                  -  function nextUntilUnescaped(source, end) {
                                  -    var escaped = false;
                                  -    while (!source.endOfLine()) {
                                  -      var next = source.next();
                                  -      if (next == end && !escaped)
                                  -        return false;
                                  -      escaped = !escaped && next == "\\";
                                  -    }
                                  -    return escaped;
                                  -  }
                                  -
                                  -  // A map of JavaScript's keywords. The a/b/c keyword distinction is
                                  -  // very rough, but it gives the parser enough information to parse
                                  -  // correct code correctly (we don't care that much how we parse
                                  -  // incorrect code). The style information included in these objects
                                  -  // is used by the highlighter to pick the correct CSS style for a
                                  -  // token.
                                  -  var keywords = function(){
                                  -    function result(type, style){
                                  -      return {type: type, style: "js-" + style};
                                  -    }
                                  -    // keywords that take a parenthised expression, and then a
                                  -    // statement (if)
                                  -    var keywordA = result("keyword a", "keyword");
                                  -    // keywords that take just a statement (else)
                                  -    var keywordB = result("keyword b", "keyword");
                                  -    // keywords that optionally take an expression, and form a
                                  -    // statement (return)
                                  -    var keywordC = result("keyword c", "keyword");
                                  -    var operator = result("operator", "keyword");
                                  -    var atom = result("atom", "atom");
                                  -    return {
                                  -      "if": keywordA, "while": keywordA, "with": keywordA,
                                  -      "else": keywordB, "do": keywordB, "try": keywordB, "finally": keywordB,
                                  -      "return": keywordC, "break": keywordC, "continue": keywordC, "new": keywordC, "delete": keywordC, "throw": keywordC,
                                  -      "in": operator, "typeof": operator, "instanceof": operator,
                                  -      "var": result("var", "keyword"), "function": result("function", "keyword"), "catch": result("catch", "keyword"),
                                  -      "for": result("for", "keyword"), "switch": result("switch", "keyword"),
                                  -      "case": result("case", "keyword"), "default": result("default", "keyword"),
                                  -      "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom
                                  -    };
                                  -  }();
                                  -
                                  -  // Some helper regexps
                                  -  var isOperatorChar = /[+\-*&%=<>!?|]/;
                                  -  var isHexDigit = /[0-9A-Fa-f]/;
                                  -  var isWordChar = /[\w\$_]/;
                                  -
                                  -  // Wrapper around jsToken that helps maintain parser state (whether
                                  -  // we are inside of a multi-line comment and whether the next token
                                  -  // could be a regular expression).
                                  -  function jsTokenState(inside, regexp) {
                                  -    return function(source, setState) {
                                  -      var newInside = inside;
                                  -      var type = jsToken(inside, regexp, source, function(c) {newInside = c;});
                                  -      var newRegexp = type.type == "operator" || type.type == "keyword c" || type.type.match(/^[\[{}\(,;:]$/);
                                  -      if (newRegexp != regexp || newInside != inside)
                                  -        setState(jsTokenState(newInside, newRegexp));
                                  -      return type;
                                  -    };
                                  -  }
                                  -
                                  -  // The token reader, intended to be used by the tokenizer from
                                  -  // tokenize.js (through jsTokenState). Advances the source stream
                                  -  // over a token, and returns an object containing the type and style
                                  -  // of that token.
                                  -  function jsToken(inside, regexp, source, setInside) {
                                  -    function readHexNumber(){
                                  -      source.next(); // skip the 'x'
                                  -      source.nextWhileMatches(isHexDigit);
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -
                                  -    function readNumber() {
                                  -      source.nextWhileMatches(/[0-9]/);
                                  -      if (source.equals(".")){
                                  -        source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      if (source.equals("e") || source.equals("E")){
                                  -        source.next();
                                  -        if (source.equals("-"))
                                  -          source.next();
                                  -        source.nextWhileMatches(/[0-9]/);
                                  -      }
                                  -      return {type: "number", style: "js-atom"};
                                  -    }
                                  -    // Read a word, look it up in keywords. If not found, it is a
                                  -    // variable, otherwise it is a keyword of the type found.
                                  -    function readWord() {
                                  -      source.nextWhileMatches(isWordChar);
                                  -      var word = source.get();
                                  -      var known = keywords.hasOwnProperty(word) && keywords.propertyIsEnumerable(word) && keywords[word];
                                  -      return known ? {type: known.type, style: known.style, content: word} :
                                  -      {type: "variable", style: "js-variable", content: word};
                                  -    }
                                  -    function readRegexp() {
                                  -      nextUntilUnescaped(source, "/");
                                  -      source.nextWhileMatches(/[gi]/);
                                  -      return {type: "regexp", style: "js-string"};
                                  -    }
                                  -    // Mutli-line comments are tricky. We want to return the newlines
                                  -    // embedded in them as regular newline tokens, and then continue
                                  -    // returning a comment token for every line of the comment. So
                                  -    // some state has to be saved (inside) to indicate whether we are
                                  -    // inside a /* */ sequence.
                                  -    function readMultilineComment(start){
                                  -      var newInside = "/*";
                                  -      var maybeEnd = (start == "*");
                                  -      while (true) {
                                  -        if (source.endOfLine())
                                  -          break;
                                  -        var next = source.next();
                                  -        if (next == "/" && maybeEnd){
                                  -          newInside = null;
                                  -          break;
                                  -        }
                                  -        maybeEnd = (next == "*");
                                  -      }
                                  -      setInside(newInside);
                                  -      return {type: "comment", style: "js-comment"};
                                  -    }
                                  -    function readOperator() {
                                  -      source.nextWhileMatches(isOperatorChar);
                                  -      return {type: "operator", style: "js-operator"};
                                  -    }
                                  -    function readString(quote) {
                                  -      var endBackSlash = nextUntilUnescaped(source, quote);
                                  -      setInside(endBackSlash ? quote : null);
                                  -      return {type: "string", style: "js-string"};
                                  -    }
                                  -
                                  -    // Fetch the next token. Dispatches on first character in the
                                  -    // stream, or first two characters when the first is a slash.
                                  -    if (inside == "\"" || inside == "'")
                                  -      return readString(inside);
                                  -    var ch = source.next();
                                  -    if (inside == "/*")
                                  -      return readMultilineComment(ch);
                                  -    else if (ch == "\"" || ch == "'")
                                  -      return readString(ch);
                                  -    // with punctuation, the type of the token is the symbol itself
                                  -    else if (/[\[\]{}\(\),;\:\.]/.test(ch))
                                  -      return {type: ch, style: "js-punctuation"};
                                  -    else if (ch == "0" && (source.equals("x") || source.equals("X")))
                                  -      return readHexNumber();
                                  -    else if (/[0-9]/.test(ch))
                                  -      return readNumber();
                                  -    else if (ch == "/"){
                                  -      if (source.equals("*"))
                                  -      { source.next(); return readMultilineComment(ch); }
                                  -      else if (source.equals("/"))
                                  -      { nextUntilUnescaped(source, null); return {type: "comment", style: "js-comment"};}
                                  -      else if (regexp)
                                  -        return readRegexp();
                                  -      else
                                  -        return readOperator();
                                  -    }
                                  -    else if (isOperatorChar.test(ch))
                                  -      return readOperator();
                                  -    else
                                  -      return readWord();
                                  -  }
                                  -
                                  -  // The external interface to the tokenizer.
                                  -  return function(source, startState) {
                                  -    return tokenizer(source, startState || jsTokenState(false, true));
                                  -  };
                                  -})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint.js
                                  deleted file mode 100644
                                  index 827536d6..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint.js
                                  +++ /dev/null
                                  @@ -1,5726 +0,0 @@
                                  -// jslint.js
                                  -// 2010-10-26
                                  -
                                  -/*
                                  -Copyright (c) 2002 Douglas Crockford  (www.JSLint.com)
                                  -
                                  -Permission is hereby granted, free of charge, to any person obtaining a copy of
                                  -this software and associated documentation files (the "Software"), to deal in
                                  -the Software without restriction, including without limitation the rights to
                                  -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
                                  -of the Software, and to permit persons to whom the Software is furnished to do
                                  -so, subject to the following conditions:
                                  -
                                  -The above copyright notice and this permission notice shall be included in all
                                  -copies or substantial portions of the Software.
                                  -
                                  -The Software shall be used for Good, not Evil.
                                  -
                                  -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
                                  -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
                                  -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
                                  -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
                                  -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
                                  -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
                                  -SOFTWARE.
                                  -*/
                                  -
                                  -/*
                                  -    JSLINT is a global function. It takes two parameters.
                                  -
                                  -        var myResult = JSLINT(source, option);
                                  -
                                  -    The first parameter is either a string or an array of strings. If it is a
                                  -    string, it will be split on '\n' or '\r'. If it is an array of strings, it
                                  -    is assumed that each string represents one line. The source can be a
                                  -    JavaScript text, or HTML text, or a Konfabulator text.
                                  -
                                  -    The second parameter is an optional object of options which control the
                                  -    operation of JSLINT. Most of the options are booleans: They are all are
                                  -    optional and have a default value of false.
                                  -
                                  -    If it checks out, JSLINT returns true. Otherwise, it returns false.
                                  -
                                  -    If false, you can inspect JSLINT.errors to find out the problems.
                                  -    JSLINT.errors is an array of objects containing these members:
                                  -
                                  -    {
                                  -        line      : The line (relative to 0) at which the lint was found
                                  -        character : The character (relative to 0) at which the lint was found
                                  -        reason    : The problem
                                  -        evidence  : The text line in which the problem occurred
                                  -        raw       : The raw message before the details were inserted
                                  -        a         : The first detail
                                  -        b         : The second detail
                                  -        c         : The third detail
                                  -        d         : The fourth detail
                                  -    }
                                  -
                                  -    If a fatal error was found, a null will be the last element of the
                                  -    JSLINT.errors array.
                                  -
                                  -    You can request a Function Report, which shows all of the functions
                                  -    and the parameters and vars that they use. This can be used to find
                                  -    implied global variables and other problems. The report is in HTML and
                                  -    can be inserted in an HTML <body>.
                                  -
                                  -        var myReport = JSLINT.report(limited);
                                  -
                                  -    If limited is true, then the report will be limited to only errors.
                                  -
                                  -    You can request a data structure which contains JSLint's results.
                                  -
                                  -        var myData = JSLINT.data();
                                  -
                                  -    It returns a structure with this form:
                                  -
                                  -    {
                                  -        errors: [
                                  -            {
                                  -                line: NUMBER,
                                  -                character: NUMBER,
                                  -                reason: STRING,
                                  -                evidence: STRING
                                  -            }
                                  -        ],
                                  -        functions: [
                                  -            name: STRING,
                                  -            line: NUMBER,
                                  -            last: NUMBER,
                                  -            param: [
                                  -                STRING
                                  -            ],
                                  -            closure: [
                                  -                STRING
                                  -            ],
                                  -            var: [
                                  -                STRING
                                  -            ],
                                  -            exception: [
                                  -                STRING
                                  -            ],
                                  -            outer: [
                                  -                STRING
                                  -            ],
                                  -            unused: [
                                  -                STRING
                                  -            ],
                                  -            global: [
                                  -                STRING
                                  -            ],
                                  -            label: [
                                  -                STRING
                                  -            ]
                                  -        ],
                                  -        globals: [
                                  -            STRING
                                  -        ],
                                  -        member: {
                                  -            STRING: NUMBER
                                  -        },
                                  -        unuseds: [
                                  -            {
                                  -                name: STRING,
                                  -                line: NUMBER
                                  -            }
                                  -        ],
                                  -        implieds: [
                                  -            {
                                  -                name: STRING,
                                  -                line: NUMBER
                                  -            }
                                  -        ],
                                  -        urls: [
                                  -            STRING
                                  -        ],
                                  -        json: BOOLEAN
                                  -    }
                                  -
                                  -    Empty arrays will not be included.
                                  -
                                  -*/
                                  -
                                  -/*jslint
                                  -    evil: true, nomen: false, onevar: false, regexp: false, strict: true
                                  -*/
                                  -
                                  -/*members "\b", "\t", "\n", "\f", "\r", "!=", "!==", "\"", "%",
                                  -    "(begin)", "(breakage)", "(context)", "(error)", "(global)",
                                  -    "(identifier)", "(last)", "(line)", "(loopage)", "(name)", "(onevar)",
                                  -    "(params)", "(scope)", "(statement)", "(verb)", "*", "+", "++", "-",
                                  -    "--", "\/", "<", "<=", "==", "===", ">", ">=", ADSAFE, ActiveXObject,
                                  -    Array, Boolean, COM, CScript, Canvas, CustomAnimation, Date, Debug, E,
                                  -    Enumerator, Error, EvalError, FadeAnimation, Flash, FormField, Frame,
                                  -    Function, HotKey, Image, JSON, LN10, LN2, LOG10E, LOG2E, MAX_VALUE,
                                  -    MIN_VALUE, Math, MenuItem, MoveAnimation, NEGATIVE_INFINITY, Number,
                                  -    Object, Option, PI, POSITIVE_INFINITY, Point, RangeError, Rectangle,
                                  -    ReferenceError, RegExp, ResizeAnimation, RotateAnimation, SQRT1_2,
                                  -    SQRT2, ScrollBar, String, Style, SyntaxError, System, Text, TextArea,
                                  -    Timer, TypeError, URIError, URL, VBArray, WScript, Web, Window, XMLDOM,
                                  -    XMLHttpRequest, "\\", a, abbr, acronym, addEventListener, address,
                                  -    adsafe, alert, aliceblue, animator, antiquewhite, appleScript, applet,
                                  -    apply, approved, aqua, aquamarine, area, arguments, arity, article,
                                  -    aside, audio, autocomplete, azure, b, background,
                                  -    "background-attachment", "background-color", "background-image",
                                  -    "background-position", "background-repeat", base, bdo, beep, beige, big,
                                  -    bisque, bitwise, black, blanchedalmond, block, blockquote, blue,
                                  -    blueviolet, blur, body, border, "border-bottom", "border-bottom-color",
                                  -    "border-bottom-style", "border-bottom-width", "border-collapse",
                                  -    "border-color", "border-left", "border-left-color", "border-left-style",
                                  -    "border-left-width", "border-right", "border-right-color",
                                  -    "border-right-style", "border-right-width", "border-spacing",
                                  -    "border-style", "border-top", "border-top-color", "border-top-style",
                                  -    "border-top-width", "border-width", bottom, br, brown, browser,
                                  -    burlywood, button, bytesToUIString, c, cadetblue, call, callee, caller,
                                  -    canvas, cap, caption, "caption-side", cases, center, charAt, charCodeAt,
                                  -    character, chartreuse, chocolate, chooseColor, chooseFile, chooseFolder,
                                  -    cite, clear, clearInterval, clearTimeout, clip, close, closeWidget,
                                  -    closed, closure, cm, code, col, colgroup, color, command, comment,
                                  -    condition, confirm, console, constructor, content, convertPathToHFS,
                                  -    convertPathToPlatform, coral, cornflowerblue, cornsilk,
                                  -    "counter-increment", "counter-reset", create, crimson, css, cursor,
                                  -    cyan, d, darkblue, darkcyan, darkgoldenrod, darkgray, darkgreen,
                                  -    darkkhaki, darkmagenta, darkolivegreen, darkorange, darkorchid, darkred,
                                  -    darksalmon, darkseagreen, darkslateblue, darkslategray, darkturquoise,
                                  -    darkviolet, data, datalist, dd, debug, decodeURI, decodeURIComponent,
                                  -    deeppink, deepskyblue, defaultStatus, defineClass, del, deserialize,
                                  -    details, devel, dfn, dialog, dimension, dimgray, dir, direction,
                                  -    display, div, dl, document, dodgerblue, dt, edition, else, em, embed,
                                  -    empty, "empty-cells", encodeURI, encodeURIComponent, entityify, eqeqeq,
                                  -    errors, es5, escape, eval, event, evidence, evil, ex, exception, exec, exps,
                                  -    fieldset, figure, filesystem, firebrick, first, float, floor,
                                  -    floralwhite, focus, focusWidget, font, "font-face", "font-family",
                                  -    "font-size", "font-size-adjust", "font-stretch", "font-style",
                                  -    "font-variant", "font-weight", footer, forestgreen, forin, form,
                                  -    fragment, frame, frames, frameset, from, fromCharCode, fuchsia, fud,
                                  -    funct, function, functions, g, gainsboro, gc, getComputedStyle,
                                  -    ghostwhite, global, globals, gold, goldenrod, gray, green, greenyellow,
                                  -    h1, h2, h3, h4, h5, h6, hasOwnProperty, head, header, height, help,
                                  -    hgroup, history, honeydew, hotpink, hr, 'hta:application', html,
                                  -    i, iTunes, id, identifier,
                                  -    iframe, img, immed, implieds, in, include, indent, indexOf, indianred,
                                  -    indigo, init, input, ins, isAlpha, isApplicationRunning, isDigit,
                                  -    isFinite, isNaN, ivory, join, jslint, json, kbd, keygen, khaki,
                                  -    konfabulatorVersion, label, labelled, lang, last, lavender,
                                  -    lavenderblush, lawngreen, laxbreak, lbp, led, left, legend,
                                  -    lemonchiffon, length, "letter-spacing", li, lib, lightblue, lightcoral,
                                  -    lightcyan, lightgoldenrodyellow, lightgreen, lightpink, lightsalmon,
                                  -    lightseagreen, lightskyblue, lightslategray, lightsteelblue,
                                  -    lightyellow, lime, limegreen, line, "line-height", linen, link,
                                  -    "list-style", "list-style-image", "list-style-position",
                                  -    "list-style-type", load, loadClass, location, log, m, magenta, map,
                                  -    margin, "margin-bottom", "margin-left", "margin-right", "margin-top",
                                  -    mark, "marker-offset", maroon, match, "max-height", "max-width", maxerr,
                                  -    maxlen, md5, media, mediumaquamarine, mediumblue, mediumorchid,
                                  -    mediumpurple, mediumseagreen, mediumslateblue, mediumspringgreen,
                                  -    mediumturquoise, mediumvioletred, member, menu, message, meta, meter,
                                  -    midnightblue, "min-height", "min-width", mintcream, mistyrose, mm,
                                  -    moccasin, moveBy, moveTo, name, nav, navajowhite, navigator, navy, new,
                                  -    newcap, noframes, nomen, noscript, nud, object, ol, oldlace, olive,
                                  -    olivedrab, on, onbeforeunload, onblur, onerror, onevar, onfocus, onload,
                                  -    onresize, onunload, opacity, open, openURL, opener, opera, optgroup,
                                  -    option, orange, orangered, orchid, outer, outline, "outline-color",
                                  -    "outline-style", "outline-width", output, overflow, "overflow-x",
                                  -    "overflow-y", p, padding, "padding-bottom", "padding-left",
                                  -    "padding-right", "padding-top", page, "page-break-after",
                                  -    "page-break-before", palegoldenrod, palegreen, paleturquoise,
                                  -    palevioletred, papayawhip, param, parent, parseFloat, parseInt,
                                  -    passfail, pc, peachpuff, peru, pink, play, plum, plusplus, pop,
                                  -    popupMenu, position, powderblue, pre, predef, preferenceGroups,
                                  -    preferences, print, progress, prompt, prototype, pt, purple, push, px,
                                  -    q, quit, quotes, random, range, raw, reach, readFile, readUrl, reason,
                                  -    red, regexp, reloadWidget, removeEventListener, replace, report,
                                  -    reserved, resizeBy, resizeTo, resolvePath, resumeUpdates, rhino, right,
                                  -    rosybrown, royalblue, rp, rt, ruby, runCommand, runCommandInBg,
                                  -    saddlebrown, safe, salmon, samp, sandybrown, saveAs, savePreferences,
                                  -    screen, script, scroll, scrollBy, scrollTo, seagreen, seal, search,
                                  -    seashell, section, select, serialize, setInterval, setTimeout, shift,
                                  -    showWidgetPreferences, sienna, silver, skyblue, slateblue, slategray,
                                  -    sleep, slice, small, snow, sort, source, span, spawn, speak, split,
                                  -    springgreen, src, stack, statement, status, steelblue, strict, strong,
                                  -    style, styleproperty, sub, substr, sup, supplant, suppressUpdates, sync,
                                  -    system, table, "table-layout", tan, tbody, td, teal, tellWidget, test,
                                  -    "text-align", "text-decoration", "text-indent", "text-shadow",
                                  -    "text-transform", textarea, tfoot, th, thead, thistle, time, title,
                                  -    toLowerCase, toString, toUpperCase, toint32, token, tomato, top, tr, tt,
                                  -    turquoise, type, u, ul, undef, unescape, "unicode-bidi", unused,
                                  -    unwatch, updateNow, urls, value, valueOf, var, version,
                                  -    "vertical-align", video, violet, visibility, watch, wheat, white,
                                  -    "white-space", whitesmoke, widget, width, windows, "word-spacing",
                                  -    "word-wrap", yahooCheckLogin, yahooLogin, yahooLogout, yellow,
                                  -    yellowgreen, "z-index"
                                  -*/
                                  -
                                  -// We build the application inside a function so that we produce only a single
                                  -// global variable. The function will be invoked, its return value is the JSLINT
                                  -// application itself.
                                  -
                                  -"use strict";
                                  -
                                  -var JSLINT = (function () {
                                  -    var adsafe_id,      // The widget's ADsafe id.
                                  -        adsafe_may,     // The widget may load approved scripts.
                                  -        adsafe_went,    // ADSAFE.go has been called.
                                  -        anonname,       // The guessed name for anonymous functions.
                                  -        approved,       // ADsafe approved urls.
                                  -
                                  -        atrule = {
                                  -            media      : true,
                                  -            'font-face': true,
                                  -            page       : true
                                  -        },
                                  -
                                  -// These are operators that should not be used with the ! operator.
                                  -
                                  -        bang = {
                                  -            '<': true,
                                  -            '<=': true,
                                  -            '==': true,
                                  -            '===': true,
                                  -            '!==': true,
                                  -            '!=': true,
                                  -            '>': true,
                                  -            '>=': true,
                                  -            '+': true,
                                  -            '-': true,
                                  -            '*': true,
                                  -            '/': true,
                                  -            '%': true
                                  -        },
                                  -
                                  -// These are members that should not be permitted in the safe subset.
                                  -
                                  -        banned = {              // the member names that ADsafe prohibits.
                                  -            'arguments'     : true,
                                  -            callee          : true,
                                  -            caller          : true,
                                  -            constructor     : true,
                                  -            'eval'          : true,
                                  -            prototype       : true,
                                  -            stack           : true,
                                  -            unwatch         : true,
                                  -            valueOf         : true,
                                  -            watch           : true
                                  -        },
                                  -
                                  -
                                  -// These are the JSLint boolean options.
                                  -
                                  -        boolOptions = {
                                  -            adsafe     : true, // if ADsafe should be enforced
                                  -            bitwise    : true, // if bitwise operators should not be allowed
                                  -            browser    : true, // if the standard browser globals should be predefined
                                  -            cap        : true, // if upper case HTML should be allowed
                                  -            css        : true, // if CSS workarounds should be tolerated
                                  -            debug      : true, // if debugger statements should be allowed
                                  -            devel      : true, // if logging should be allowed (console, alert, etc.)
                                  -            eqeqeq     : true, // if === should be required
                                  -            es5        : true, // if ES5 syntax should be allowed
                                  -            evil       : true, // if eval should be allowed
                                  -            forin      : true, // if for in statements must filter
                                  -            fragment   : true, // if HTML fragments should be allowed
                                  -            immed      : true, // if immediate invocations must be wrapped in parens
                                  -            laxbreak   : true, // if line breaks should not be checked
                                  -            newcap     : true, // if constructor names must be capitalized
                                  -            nomen      : true, // if names should be checked
                                  -            on         : true, // if HTML event handlers should be allowed
                                  -            onevar     : true, // if only one var statement per function should be allowed
                                  -            passfail   : true, // if the scan should stop on first error
                                  -            plusplus   : true, // if increment/decrement should not be allowed
                                  -            regexp     : true, // if the . should not be allowed in regexp literals
                                  -            rhino      : true, // if the Rhino environment globals should be predefined
                                  -            undef      : true, // if variables should be declared before used
                                  -            safe       : true, // if use of some browser features should be restricted
                                  -            windows    : true, // if MS Windows-specigic globals should be predefined
                                  -            strict     : true, // require the "use strict"; pragma
                                  -            sub        : true, // if all forms of subscript notation are tolerated
                                  -            white      : true, // if strict whitespace rules apply
                                  -            widget     : true  // if the Yahoo Widgets globals should be predefined
                                  -        },
                                  -
                                  -// browser contains a set of global names which are commonly provided by a
                                  -// web browser environment.
                                  -
                                  -        browser = {
                                  -            addEventListener: false,
                                  -            blur            : false,
                                  -            clearInterval   : false,
                                  -            clearTimeout    : false,
                                  -            close           : false,
                                  -            closed          : false,
                                  -            defaultStatus   : false,
                                  -            document        : false,
                                  -            event           : false,
                                  -            focus           : false,
                                  -            frames          : false,
                                  -            getComputedStyle: false,
                                  -            history         : false,
                                  -            Image           : false,
                                  -            length          : false,
                                  -            location        : false,
                                  -            moveBy          : false,
                                  -            moveTo          : false,
                                  -            name            : false,
                                  -            navigator       : false,
                                  -            onbeforeunload  : true,
                                  -            onblur          : true,
                                  -            onerror         : true,
                                  -            onfocus         : true,
                                  -            onload          : true,
                                  -            onresize        : true,
                                  -            onunload        : true,
                                  -            open            : false,
                                  -            opener          : false,
                                  -            Option          : false,
                                  -            parent          : false,
                                  -            print           : false,
                                  -            removeEventListener: false,
                                  -            resizeBy        : false,
                                  -            resizeTo        : false,
                                  -            screen          : false,
                                  -            scroll          : false,
                                  -            scrollBy        : false,
                                  -            scrollTo        : false,
                                  -            setInterval     : false,
                                  -            setTimeout      : false,
                                  -            status          : false,
                                  -            top             : false,
                                  -            XMLHttpRequest  : false
                                  -        },
                                  -
                                  -        cssAttributeData,
                                  -        cssAny,
                                  -
                                  -        cssColorData = {
                                  -            "aliceblue"             : true,
                                  -            "antiquewhite"          : true,
                                  -            "aqua"                  : true,
                                  -            "aquamarine"            : true,
                                  -            "azure"                 : true,
                                  -            "beige"                 : true,
                                  -            "bisque"                : true,
                                  -            "black"                 : true,
                                  -            "blanchedalmond"        : true,
                                  -            "blue"                  : true,
                                  -            "blueviolet"            : true,
                                  -            "brown"                 : true,
                                  -            "burlywood"             : true,
                                  -            "cadetblue"             : true,
                                  -            "chartreuse"            : true,
                                  -            "chocolate"             : true,
                                  -            "coral"                 : true,
                                  -            "cornflowerblue"        : true,
                                  -            "cornsilk"              : true,
                                  -            "crimson"               : true,
                                  -            "cyan"                  : true,
                                  -            "darkblue"              : true,
                                  -            "darkcyan"              : true,
                                  -            "darkgoldenrod"         : true,
                                  -            "darkgray"              : true,
                                  -            "darkgreen"             : true,
                                  -            "darkkhaki"             : true,
                                  -            "darkmagenta"           : true,
                                  -            "darkolivegreen"        : true,
                                  -            "darkorange"            : true,
                                  -            "darkorchid"            : true,
                                  -            "darkred"               : true,
                                  -            "darksalmon"            : true,
                                  -            "darkseagreen"          : true,
                                  -            "darkslateblue"         : true,
                                  -            "darkslategray"         : true,
                                  -            "darkturquoise"         : true,
                                  -            "darkviolet"            : true,
                                  -            "deeppink"              : true,
                                  -            "deepskyblue"           : true,
                                  -            "dimgray"               : true,
                                  -            "dodgerblue"            : true,
                                  -            "firebrick"             : true,
                                  -            "floralwhite"           : true,
                                  -            "forestgreen"           : true,
                                  -            "fuchsia"               : true,
                                  -            "gainsboro"             : true,
                                  -            "ghostwhite"            : true,
                                  -            "gold"                  : true,
                                  -            "goldenrod"             : true,
                                  -            "gray"                  : true,
                                  -            "green"                 : true,
                                  -            "greenyellow"           : true,
                                  -            "honeydew"              : true,
                                  -            "hotpink"               : true,
                                  -            "indianred"             : true,
                                  -            "indigo"                : true,
                                  -            "ivory"                 : true,
                                  -            "khaki"                 : true,
                                  -            "lavender"              : true,
                                  -            "lavenderblush"         : true,
                                  -            "lawngreen"             : true,
                                  -            "lemonchiffon"          : true,
                                  -            "lightblue"             : true,
                                  -            "lightcoral"            : true,
                                  -            "lightcyan"             : true,
                                  -            "lightgoldenrodyellow"  : true,
                                  -            "lightgreen"            : true,
                                  -            "lightpink"             : true,
                                  -            "lightsalmon"           : true,
                                  -            "lightseagreen"         : true,
                                  -            "lightskyblue"          : true,
                                  -            "lightslategray"        : true,
                                  -            "lightsteelblue"        : true,
                                  -            "lightyellow"           : true,
                                  -            "lime"                  : true,
                                  -            "limegreen"             : true,
                                  -            "linen"                 : true,
                                  -            "magenta"               : true,
                                  -            "maroon"                : true,
                                  -            "mediumaquamarine"      : true,
                                  -            "mediumblue"            : true,
                                  -            "mediumorchid"          : true,
                                  -            "mediumpurple"          : true,
                                  -            "mediumseagreen"        : true,
                                  -            "mediumslateblue"       : true,
                                  -            "mediumspringgreen"     : true,
                                  -            "mediumturquoise"       : true,
                                  -            "mediumvioletred"       : true,
                                  -            "midnightblue"          : true,
                                  -            "mintcream"             : true,
                                  -            "mistyrose"             : true,
                                  -            "moccasin"              : true,
                                  -            "navajowhite"           : true,
                                  -            "navy"                  : true,
                                  -            "oldlace"               : true,
                                  -            "olive"                 : true,
                                  -            "olivedrab"             : true,
                                  -            "orange"                : true,
                                  -            "orangered"             : true,
                                  -            "orchid"                : true,
                                  -            "palegoldenrod"         : true,
                                  -            "palegreen"             : true,
                                  -            "paleturquoise"         : true,
                                  -            "palevioletred"         : true,
                                  -            "papayawhip"            : true,
                                  -            "peachpuff"             : true,
                                  -            "peru"                  : true,
                                  -            "pink"                  : true,
                                  -            "plum"                  : true,
                                  -            "powderblue"            : true,
                                  -            "purple"                : true,
                                  -            "red"                   : true,
                                  -            "rosybrown"             : true,
                                  -            "royalblue"             : true,
                                  -            "saddlebrown"           : true,
                                  -            "salmon"                : true,
                                  -            "sandybrown"            : true,
                                  -            "seagreen"              : true,
                                  -            "seashell"              : true,
                                  -            "sienna"                : true,
                                  -            "silver"                : true,
                                  -            "skyblue"               : true,
                                  -            "slateblue"             : true,
                                  -            "slategray"             : true,
                                  -            "snow"                  : true,
                                  -            "springgreen"           : true,
                                  -            "steelblue"             : true,
                                  -            "tan"                   : true,
                                  -            "teal"                  : true,
                                  -            "thistle"               : true,
                                  -            "tomato"                : true,
                                  -            "turquoise"             : true,
                                  -            "violet"                : true,
                                  -            "wheat"                 : true,
                                  -            "white"                 : true,
                                  -            "whitesmoke"            : true,
                                  -            "yellow"                : true,
                                  -            "yellowgreen"           : true
                                  -        },
                                  -
                                  -        cssBorderStyle,
                                  -        cssBreak,
                                  -
                                  -        cssLengthData = {
                                  -            '%': true,
                                  -            'cm': true,
                                  -            'em': true,
                                  -            'ex': true,
                                  -            'in': true,
                                  -            'mm': true,
                                  -            'pc': true,
                                  -            'pt': true,
                                  -            'px': true
                                  -        },
                                  -
                                  -        cssOverflow,
                                  -
                                  -        devel = {
                                  -            alert           : false,
                                  -            confirm         : false,
                                  -            console         : false,
                                  -            Debug           : false,
                                  -            opera           : false,
                                  -            prompt          : false
                                  -        },
                                  -
                                  -        escapes = {
                                  -            '\b': '\\b',
                                  -            '\t': '\\t',
                                  -            '\n': '\\n',
                                  -            '\f': '\\f',
                                  -            '\r': '\\r',
                                  -            '"' : '\\"',
                                  -            '/' : '\\/',
                                  -            '\\': '\\\\'
                                  -        },
                                  -
                                  -        funct,          // The current function
                                  -
                                  -        functionicity = [
                                  -            'closure', 'exception', 'global', 'label',
                                  -            'outer', 'unused', 'var'
                                  -        ],
                                  -
                                  -        functions,      // All of the functions
                                  -
                                  -        global,         // The global scope
                                  -        htmltag = {
                                  -            a:        {},
                                  -            abbr:     {},
                                  -            acronym:  {},
                                  -            address:  {},
                                  -            applet:   {},
                                  -            area:     {empty: true, parent: ' map '},
                                  -            article:  {},
                                  -            aside:    {},
                                  -            audio:    {},
                                  -            b:        {},
                                  -            base:     {empty: true, parent: ' head '},
                                  -            bdo:      {},
                                  -            big:      {},
                                  -            blockquote: {},
                                  -            body:     {parent: ' html noframes '},
                                  -            br:       {empty: true},
                                  -            button:   {},
                                  -            canvas:   {parent: ' body p div th td '},
                                  -            caption:  {parent: ' table '},
                                  -            center:   {},
                                  -            cite:     {},
                                  -            code:     {},
                                  -            col:      {empty: true, parent: ' table colgroup '},
                                  -            colgroup: {parent: ' table '},
                                  -            command:  {parent: ' menu '},
                                  -            datalist: {},
                                  -            dd:       {parent: ' dl '},
                                  -            del:      {},
                                  -            details:  {},
                                  -            dialog:   {},
                                  -            dfn:      {},
                                  -            dir:      {},
                                  -            div:      {},
                                  -            dl:       {},
                                  -            dt:       {parent: ' dl '},
                                  -            em:       {},
                                  -            embed:    {},
                                  -            fieldset: {},
                                  -            figure:   {},
                                  -            font:     {},
                                  -            footer:   {},
                                  -            form:     {},
                                  -            frame:    {empty: true, parent: ' frameset '},
                                  -            frameset: {parent: ' html frameset '},
                                  -            h1:       {},
                                  -            h2:       {},
                                  -            h3:       {},
                                  -            h4:       {},
                                  -            h5:       {},
                                  -            h6:       {},
                                  -            head:     {parent: ' html '},
                                  -            header:   {},
                                  -            hgroup:   {},
                                  -            hr:       {empty: true},
                                  -            'hta:application':
                                  -                      {empty: true, parent: ' head '},
                                  -            html:     {parent: '*'},
                                  -            i:        {},
                                  -            iframe:   {},
                                  -            img:      {empty: true},
                                  -            input:    {empty: true},
                                  -            ins:      {},
                                  -            kbd:      {},
                                  -            keygen:   {},
                                  -            label:    {},
                                  -            legend:   {parent: ' details fieldset figure '},
                                  -            li:       {parent: ' dir menu ol ul '},
                                  -            link:     {empty: true, parent: ' head '},
                                  -            map:      {},
                                  -            mark:     {},
                                  -            menu:     {},
                                  -            meta:     {empty: true, parent: ' head noframes noscript '},
                                  -            meter:    {},
                                  -            nav:      {},
                                  -            noframes: {parent: ' html body '},
                                  -            noscript: {parent: ' body head noframes '},
                                  -            object:   {},
                                  -            ol:       {},
                                  -            optgroup: {parent: ' select '},
                                  -            option:   {parent: ' optgroup select '},
                                  -            output:   {},
                                  -            p:        {},
                                  -            param:    {empty: true, parent: ' applet object '},
                                  -            pre:      {},
                                  -            progress: {},
                                  -            q:        {},
                                  -            rp:       {},
                                  -            rt:       {},
                                  -            ruby:     {},
                                  -            samp:     {},
                                  -            script:   {empty: true, parent: ' body div frame head iframe p pre span '},
                                  -            section:  {},
                                  -            select:   {},
                                  -            small:    {},
                                  -            span:     {},
                                  -            source:   {},
                                  -            strong:   {},
                                  -            style:    {parent: ' head ', empty: true},
                                  -            sub:      {},
                                  -            sup:      {},
                                  -            table:    {},
                                  -            tbody:    {parent: ' table '},
                                  -            td:       {parent: ' tr '},
                                  -            textarea: {},
                                  -            tfoot:    {parent: ' table '},
                                  -            th:       {parent: ' tr '},
                                  -            thead:    {parent: ' table '},
                                  -            time:     {},
                                  -            title:    {parent: ' head '},
                                  -            tr:       {parent: ' table tbody thead tfoot '},
                                  -            tt:       {},
                                  -            u:        {},
                                  -            ul:       {},
                                  -            'var':    {},
                                  -            video:    {}
                                  -        },
                                  -
                                  -        ids,            // HTML ids
                                  -        implied,        // Implied globals
                                  -        inblock,
                                  -        indent,
                                  -        jsonmode,
                                  -        lines,
                                  -        lookahead,
                                  -        member,
                                  -        membersOnly,
                                  -        nexttoken,
                                  -        noreach,
                                  -        option,
                                  -        predefined,     // Global variables defined by option
                                  -        prereg,
                                  -        prevtoken,
                                  -
                                  -        rhino = {
                                  -            defineClass : false,
                                  -            deserialize : false,
                                  -            gc          : false,
                                  -            help        : false,
                                  -            load        : false,
                                  -            loadClass   : false,
                                  -            print       : false,
                                  -            quit        : false,
                                  -            readFile    : false,
                                  -            readUrl     : false,
                                  -            runCommand  : false,
                                  -            seal        : false,
                                  -            serialize   : false,
                                  -            spawn       : false,
                                  -            sync        : false,
                                  -            toint32     : false,
                                  -            version     : false
                                  -        },
                                  -
                                  -        scope,      // The current scope
                                  -
                                  -        windows = {
                                  -            ActiveXObject: false,
                                  -            CScript      : false,
                                  -            Debug        : false,
                                  -            Enumerator   : false,
                                  -            System       : false,
                                  -            VBArray      : false,
                                  -            WScript      : false
                                  -        },
                                  -
                                  -        src,
                                  -        stack,
                                  -
                                  -// standard contains the global names that are provided by the
                                  -// ECMAScript standard.
                                  -
                                  -        standard = {
                                  -            Array               : false,
                                  -            Boolean             : false,
                                  -            Date                : false,
                                  -            decodeURI           : false,
                                  -            decodeURIComponent  : false,
                                  -            encodeURI           : false,
                                  -            encodeURIComponent  : false,
                                  -            Error               : false,
                                  -            'eval'              : false,
                                  -            EvalError           : false,
                                  -            Function            : false,
                                  -            hasOwnProperty      : false,
                                  -            isFinite            : false,
                                  -            isNaN               : false,
                                  -            JSON                : false,
                                  -            Math                : false,
                                  -            Number              : false,
                                  -            Object              : false,
                                  -            parseInt            : false,
                                  -            parseFloat          : false,
                                  -            RangeError          : false,
                                  -            ReferenceError      : false,
                                  -            RegExp              : false,
                                  -            String              : false,
                                  -            SyntaxError         : false,
                                  -            TypeError           : false,
                                  -            URIError            : false
                                  -        },
                                  -
                                  -        standard_member = {
                                  -            E                   : true,
                                  -            LN2                 : true,
                                  -            LN10                : true,
                                  -            LOG2E               : true,
                                  -            LOG10E              : true,
                                  -            PI                  : true,
                                  -            SQRT1_2             : true,
                                  -            SQRT2               : true,
                                  -            MAX_VALUE           : true,
                                  -            MIN_VALUE           : true,
                                  -            NEGATIVE_INFINITY   : true,
                                  -            POSITIVE_INFINITY   : true
                                  -        },
                                  -
                                  -        strict_mode,
                                  -        syntax = {},
                                  -        tab,
                                  -        token,
                                  -        urls,
                                  -        warnings,
                                  -
                                  -// widget contains the global names which are provided to a Yahoo
                                  -// (fna Konfabulator) widget.
                                  -
                                  -        widget = {
                                  -            alert                   : true,
                                  -            animator                : true,
                                  -            appleScript             : true,
                                  -            beep                    : true,
                                  -            bytesToUIString         : true,
                                  -            Canvas                  : true,
                                  -            chooseColor             : true,
                                  -            chooseFile              : true,
                                  -            chooseFolder            : true,
                                  -            closeWidget             : true,
                                  -            COM                     : true,
                                  -            convertPathToHFS        : true,
                                  -            convertPathToPlatform   : true,
                                  -            CustomAnimation         : true,
                                  -            escape                  : true,
                                  -            FadeAnimation           : true,
                                  -            filesystem              : true,
                                  -            Flash                   : true,
                                  -            focusWidget             : true,
                                  -            form                    : true,
                                  -            FormField               : true,
                                  -            Frame                   : true,
                                  -            HotKey                  : true,
                                  -            Image                   : true,
                                  -            include                 : true,
                                  -            isApplicationRunning    : true,
                                  -            iTunes                  : true,
                                  -            konfabulatorVersion     : true,
                                  -            log                     : true,
                                  -            md5                     : true,
                                  -            MenuItem                : true,
                                  -            MoveAnimation           : true,
                                  -            openURL                 : true,
                                  -            play                    : true,
                                  -            Point                   : true,
                                  -            popupMenu               : true,
                                  -            preferenceGroups        : true,
                                  -            preferences             : true,
                                  -            print                   : true,
                                  -            prompt                  : true,
                                  -            random                  : true,
                                  -            Rectangle               : true,
                                  -            reloadWidget            : true,
                                  -            ResizeAnimation         : true,
                                  -            resolvePath             : true,
                                  -            resumeUpdates           : true,
                                  -            RotateAnimation         : true,
                                  -            runCommand              : true,
                                  -            runCommandInBg          : true,
                                  -            saveAs                  : true,
                                  -            savePreferences         : true,
                                  -            screen                  : true,
                                  -            ScrollBar               : true,
                                  -            showWidgetPreferences   : true,
                                  -            sleep                   : true,
                                  -            speak                   : true,
                                  -            Style                   : true,
                                  -            suppressUpdates         : true,
                                  -            system                  : true,
                                  -            tellWidget              : true,
                                  -            Text                    : true,
                                  -            TextArea                : true,
                                  -            Timer                   : true,
                                  -            unescape                : true,
                                  -            updateNow               : true,
                                  -            URL                     : true,
                                  -            Web                     : true,
                                  -            widget                  : true,
                                  -            Window                  : true,
                                  -            XMLDOM                  : true,
                                  -            XMLHttpRequest          : true,
                                  -            yahooCheckLogin         : true,
                                  -            yahooLogin              : true,
                                  -            yahooLogout             : true
                                  -        },
                                  -
                                  -//  xmode is used to adapt to the exceptions in html parsing.
                                  -//  It can have these states:
                                  -//      false   .js script file
                                  -//      html
                                  -//      outer
                                  -//      script
                                  -//      style
                                  -//      scriptstring
                                  -//      styleproperty
                                  -
                                  -        xmode,
                                  -        xquote,
                                  -
                                  -// unsafe comment or string
                                  -        ax = /@cc|<\/?|script|\]*s\]|<\s*!|&lt/i,
                                  -// unsafe characters that are silently deleted by one or more browsers
                                  -        cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
                                  -// token
                                  -        tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/,
                                  -// html token
                                  -        hx = /^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-:]*|[0-9]+|--)/,
                                  -// characters in strings that need escapement
                                  -        nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
                                  -        nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -// outer html token
                                  -        ox = /[>&]|<[\/!]?|--/,
                                  -// star slash
                                  -        lx = /\*\/|\/\*/,
                                  -// identifier
                                  -        ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,
                                  -// javascript url
                                  -        jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
                                  -// url badness
                                  -        ux = /&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i,
                                  -// style
                                  -        sx = /^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/,
                                  -        ssx = /^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/,
                                  -// attributes characters
                                  -        qx = /[^a-zA-Z0-9+\-_\/ ]/,
                                  -// query characters for ids
                                  -        dx = /[\[\]\/\\"'*<>.&:(){}+=#]/,
                                  -
                                  -        rx = {
                                  -            outer: hx,
                                  -            html: hx,
                                  -            style: sx,
                                  -            styleproperty: ssx
                                  -        };
                                  -
                                  -    function F() {}
                                  -
                                  -    if (typeof Object.create !== 'function') {
                                  -        Object.create = function (o) {
                                  -            F.prototype = o;
                                  -            return new F();
                                  -        };
                                  -    }
                                  -
                                  -
                                  -    function is_own(object, name) {
                                  -        return Object.prototype.hasOwnProperty.call(object, name);
                                  -    }
                                  -
                                  -
                                  -    function combine(t, o) {
                                  -        var n;
                                  -        for (n in o) {
                                  -            if (is_own(o, n)) {
                                  -                t[n] = o[n];
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    String.prototype.entityify = function () {
                                  -        return this
                                  -            .replace(/&/g, '&amp;')
                                  -            .replace(/</g, '&lt;')
                                  -            .replace(/>/g, '&gt;');
                                  -    };
                                  -
                                  -    String.prototype.isAlpha = function () {
                                  -        return (this >= 'a' && this <= 'z\uffff') ||
                                  -            (this >= 'A' && this <= 'Z\uffff');
                                  -    };
                                  -
                                  -
                                  -    String.prototype.isDigit = function () {
                                  -        return (this >= '0' && this <= '9');
                                  -    };
                                  -
                                  -
                                  -    String.prototype.supplant = function (o) {
                                  -        return this.replace(/\{([^{}]*)\}/g, function (a, b) {
                                  -            var r = o[b];
                                  -            return typeof r === 'string' || typeof r === 'number' ? r : a;
                                  -        });
                                  -    };
                                  -
                                  -    String.prototype.name = function () {
                                  -
                                  -// If the string looks like an identifier, then we can return it as is.
                                  -// If the string contains no control characters, no quote characters, and no
                                  -// backslash characters, then we can simply slap some quotes around it.
                                  -// Otherwise we must also replace the offending characters with safe
                                  -// sequences.
                                  -
                                  -        if (ix.test(this)) {
                                  -            return this;
                                  -        }
                                  -        if (nx.test(this)) {
                                  -            return '"' + this.replace(nxg, function (a) {
                                  -                var c = escapes[a];
                                  -                if (c) {
                                  -                    return c;
                                  -                }
                                  -                return '\\u' + ('0000' + a.charCodeAt().toString(16)).slice(-4);
                                  -            }) + '"';
                                  -        }
                                  -        return '"' + this + '"';
                                  -    };
                                  -
                                  -
                                  -    function assume() {
                                  -        if (!option.safe) {
                                  -            if (option.rhino) {
                                  -                combine(predefined, rhino);
                                  -            }
                                  -            if (option.devel) {
                                  -                combine(predefined, devel);
                                  -            }
                                  -            if (option.browser) {
                                  -                combine(predefined, browser);
                                  -            }
                                  -            if (option.windows) {
                                  -                combine(predefined, windows);
                                  -            }
                                  -            if (option.widget) {
                                  -                combine(predefined, widget);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// Produce an error warning.
                                  -
                                  -    function quit(m, l, ch) {
                                  -        throw {
                                  -            name: 'JSLintError',
                                  -            line: l,
                                  -            character: ch,
                                  -            message: m + " (" + Math.floor((l / lines.length) * 100) +
                                  -                    "% scanned)."
                                  -        };
                                  -    }
                                  -
                                  -    function warning(m, t, a, b, c, d) {
                                  -        var ch, l, w;
                                  -        t = t || nexttoken;
                                  -        if (t.id === '(end)') {  // `~
                                  -            t = token;
                                  -        }
                                  -        l = t.line || 0;
                                  -        ch = t.from || 0;
                                  -        w = {
                                  -            id: '(error)',
                                  -            raw: m,
                                  -            evidence: lines[l - 1] || '',
                                  -            line: l,
                                  -            character: ch,
                                  -            a: a,
                                  -            b: b,
                                  -            c: c,
                                  -            d: d
                                  -        };
                                  -        w.reason = m.supplant(w);
                                  -        JSLINT.errors.push(w);
                                  -        if (option.passfail) {
                                  -            quit('Stopping. ', l, ch);
                                  -        }
                                  -        warnings += 1;
                                  -        if (warnings >= option.maxerr) {
                                  -            quit("Too many errors.", l, ch);
                                  -        }
                                  -        return w;
                                  -    }
                                  -
                                  -    function warningAt(m, l, ch, a, b, c, d) {
                                  -        return warning(m, {
                                  -            line: l,
                                  -            from: ch
                                  -        }, a, b, c, d);
                                  -    }
                                  -
                                  -    function error(m, t, a, b, c, d) {
                                  -        var w = warning(m, t, a, b, c, d);
                                  -        quit("Stopping, unable to continue.", w.line, w.character);
                                  -    }
                                  -
                                  -    function errorAt(m, l, ch, a, b, c, d) {
                                  -        return error(m, {
                                  -            line: l,
                                  -            from: ch
                                  -        }, a, b, c, d);
                                  -    }
                                  -
                                  -
                                  -
                                  -// lexical analysis
                                  -
                                  -    var lex = (function lex() {
                                  -        var character, from, line, s;
                                  -
                                  -// Private lex methods
                                  -
                                  -        function nextLine() {
                                  -            var at;
                                  -            if (line >= lines.length) {
                                  -                return false;
                                  -            }
                                  -            character = 1;
                                  -            s = lines[line];
                                  -            line += 1;
                                  -            at = s.search(/ \t/);
                                  -            if (at >= 0) {
                                  -                warningAt("Mixed spaces and tabs.", line, at + 1);
                                  -            }
                                  -            s = s.replace(/\t/g, tab);
                                  -            at = s.search(cx);
                                  -            if (at >= 0) {
                                  -                warningAt("Unsafe character.", line, at);
                                  -            }
                                  -            if (option.maxlen && option.maxlen < s.length) {
                                  -                warningAt("Line too long.", line, s.length);
                                  -            }
                                  -            return true;
                                  -        }
                                  -
                                  -// Produce a token object.  The token inherits from a syntax symbol.
                                  -
                                  -        function it(type, value) {
                                  -            var i, t;
                                  -            if (type === '(color)' || type === '(range)') {
                                  -                t = {type: type};
                                  -            } else if (type === '(punctuator)' ||
                                  -                    (type === '(identifier)' && is_own(syntax, value))) {
                                  -                t = syntax[value] || syntax['(error)'];
                                  -            } else {
                                  -                //t = syntax[type];
                                  -                t = {type: type};
                                  -            }
                                  -            t = Object.create(t);
                                  -            if (type === '(string)' || type === '(range)') {
                                  -                if (jx.test(value)) {
                                  -                    warningAt("Script URL.", line, from);
                                  -                }
                                  -            }
                                  -            if (type === '(identifier)') {
                                  -                t.identifier = true;
                                  -                if (value === '__iterator__' || value === '__proto__') {
                                  -                    errorAt("Reserved name '{a}'.",
                                  -                        line, from, value);
                                  -                } else if (option.nomen &&
                                  -                        (value.charAt(0) === '_' ||
                                  -                         value.charAt(value.length - 1) === '_')) {
                                  -                    warningAt("Unexpected {a} in '{b}'.", line, from,
                                  -                        "dangling '_'", value);
                                  -                }
                                  -            }
                                  -            t.value = value;
                                  -            t.line = line;
                                  -            t.character = character;
                                  -            t.from = from;
                                  -            i = t.id;
                                  -            if (i !== '(endline)') {
                                  -                prereg = i &&
                                  -                    (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
                                  -                    i === 'return');
                                  -            }
                                  -            return t;
                                  -        }
                                  -
                                  -// Public lex methods
                                  -
                                  -        return {
                                  -            init: function (source) {
                                  -                if (typeof source === 'string') {
                                  -                    lines = source
                                  -                        .replace(/\r\n/g, '\n')
                                  -                        .replace(/\r/g, '\n')
                                  -                        .split('\n');
                                  -                } else {
                                  -                    lines = source;
                                  -                }
                                  -                line = 0;
                                  -                nextLine();
                                  -                from = 1;
                                  -            },
                                  -
                                  -            range: function (begin, end) {
                                  -                var c, value = '';
                                  -                from = character;
                                  -                if (s.charAt(0) !== begin) {
                                  -                    errorAt("Expected '{a}' and instead saw '{b}'.",
                                  -                            line, character, begin, s.charAt(0));
                                  -                }
                                  -                for (;;) {
                                  -                    s = s.slice(1);
                                  -                    character += 1;
                                  -                    c = s.charAt(0);
                                  -                    switch (c) {
                                  -                    case '':
                                  -                        errorAt("Missing '{a}'.", line, character, c);
                                  -                        break;
                                  -                    case end:
                                  -                        s = s.slice(1);
                                  -                        character += 1;
                                  -                        return it('(range)', value);
                                  -                    case xquote:
                                  -                    case '\\':
                                  -                        warningAt("Unexpected '{a}'.", line, character, c);
                                  -                    }
                                  -                    value += c;
                                  -                }
                                  -
                                  -            },
                                  -
                                  -// token -- this is called by advance to get the next token.
                                  -
                                  -            token: function () {
                                  -                var b, c, captures, d, depth, high, i, l, low, q, t;
                                  -
                                  -                function match(x) {
                                  -                    var r = x.exec(s), r1;
                                  -                    if (r) {
                                  -                        l = r[0].length;
                                  -                        r1 = r[1];
                                  -                        c = r1.charAt(0);
                                  -                        s = s.substr(l);
                                  -                        from = character + l - r1.length;
                                  -                        character += l;
                                  -                        return r1;
                                  -                    }
                                  -                }
                                  -
                                  -                function string(x) {
                                  -                    var c, j, r = '';
                                  -
                                  -                    if (jsonmode && x !== '"') {
                                  -                        warningAt("Strings must use doublequote.",
                                  -                                line, character);
                                  -                    }
                                  -
                                  -                    if (xquote === x || (xmode === 'scriptstring' && !xquote)) {
                                  -                        return it('(punctuator)', x);
                                  -                    }
                                  -
                                  -                    function esc(n) {
                                  -                        var i = parseInt(s.substr(j + 1, n), 16);
                                  -                        j += n;
                                  -                        if (i >= 32 && i <= 126 &&
                                  -                                i !== 34 && i !== 92 && i !== 39) {
                                  -                            warningAt("Unnecessary escapement.", line, character);
                                  -                        }
                                  -                        character += n;
                                  -                        c = String.fromCharCode(i);
                                  -                    }
                                  -                    j = 0;
                                  -                    for (;;) {
                                  -                        while (j >= s.length) {
                                  -                            j = 0;
                                  -                            if (xmode !== 'html' || !nextLine()) {
                                  -                                errorAt("Unclosed string.", line, from);
                                  -                            }
                                  -                        }
                                  -                        c = s.charAt(j);
                                  -                        if (c === x) {
                                  -                            character += 1;
                                  -                            s = s.substr(j + 1);
                                  -                            return it('(string)', r, x);
                                  -                        }
                                  -                        if (c < ' ') {
                                  -                            if (c === '\n' || c === '\r') {
                                  -                                break;
                                  -                            }
                                  -                            warningAt("Control character in string: {a}.",
                                  -                                    line, character + j, s.slice(0, j));
                                  -                        } else if (c === xquote) {
                                  -                            warningAt("Bad HTML string", line, character + j);
                                  -                        } else if (c === '<') {
                                  -                            if (option.safe && xmode === 'html') {
                                  -                                warningAt("ADsafe string violation.",
                                  -                                        line, character + j);
                                  -                            } else if (s.charAt(j + 1) === '/' && (xmode || option.safe)) {
                                  -                                warningAt("Expected '<\\/' and instead saw '</'.", line, character);
                                  -                            } else if (s.charAt(j + 1) === '!' && (xmode || option.safe)) {
                                  -                                warningAt("Unexpected '<!' in a string.", line, character);
                                  -                            }
                                  -                        } else if (c === '\\') {
                                  -                            if (xmode === 'html') {
                                  -                                if (option.safe) {
                                  -                                    warningAt("ADsafe string violation.",
                                  -                                            line, character + j);
                                  -                                }
                                  -                            } else if (xmode === 'styleproperty') {
                                  -                                j += 1;
                                  -                                character += 1;
                                  -                                c = s.charAt(j);
                                  -                                if (c !== x) {
                                  -                                    warningAt("Escapement in style string.",
                                  -                                            line, character + j);
                                  -                                }
                                  -                            } else {
                                  -                                j += 1;
                                  -                                character += 1;
                                  -                                c = s.charAt(j);
                                  -                                switch (c) {
                                  -                                case xquote:
                                  -                                    warningAt("Bad HTML string", line,
                                  -                                        character + j);
                                  -                                    break;
                                  -                                case '\\':
                                  -                                case '\'':
                                  -                                case '"':
                                  -                                case '/':
                                  -                                    break;
                                  -                                case 'b':
                                  -                                    c = '\b';
                                  -                                    break;
                                  -                                case 'f':
                                  -                                    c = '\f';
                                  -                                    break;
                                  -                                case 'n':
                                  -                                    c = '\n';
                                  -                                    break;
                                  -                                case 'r':
                                  -                                    c = '\r';
                                  -                                    break;
                                  -                                case 't':
                                  -                                    c = '\t';
                                  -                                    break;
                                  -                                case 'u':
                                  -                                    esc(4);
                                  -                                    break;
                                  -                                case 'v':
                                  -                                    c = '\v';
                                  -                                    break;
                                  -                                case 'x':
                                  -                                    if (jsonmode) {
                                  -                                        warningAt("Avoid \\x-.", line, character);
                                  -                                    }
                                  -                                    esc(2);
                                  -                                    break;
                                  -                                default:
                                  -                                    warningAt("Bad escapement.", line, character);
                                  -                                }
                                  -                            }
                                  -                        }
                                  -                        r += c;
                                  -                        character += 1;
                                  -                        j += 1;
                                  -                    }
                                  -                }
                                  -
                                  -                for (;;) {
                                  -                    if (!s) {
                                  -                        return it(nextLine() ? '(endline)' : '(end)', '');
                                  -                    }
                                  -                    while (xmode === 'outer') {
                                  -                        i = s.search(ox);
                                  -                        if (i === 0) {
                                  -                            break;
                                  -                        } else if (i > 0) {
                                  -                            character += 1;
                                  -                            s = s.slice(i);
                                  -                            break;
                                  -                        } else {
                                  -                            if (!nextLine()) {
                                  -                                return it('(end)', '');
                                  -                            }
                                  -                        }
                                  -                    }
                                  -//                     t = match(rx[xmode] || tx);
                                  -//                     if (!t) {
                                  -//                         if (xmode === 'html') {
                                  -//                             return it('(error)', s.charAt(0));
                                  -//                         } else {
                                  -//                             t = '';
                                  -//                             c = '';
                                  -//                             while (s && s < '!') {
                                  -//                                 s = s.substr(1);
                                  -//                             }
                                  -//                             if (s) {
                                  -//                                 errorAt("Unexpected '{a}'.",
                                  -//                                         line, character, s.substr(0, 1));
                                  -//                             }
                                  -//                         }
                                  -                    t = match(rx[xmode] || tx);
                                  -                    if (!t) {
                                  -                        t = '';
                                  -                        c = '';
                                  -                        while (s && s < '!') {
                                  -                            s = s.substr(1);
                                  -                        }
                                  -                        if (s) {
                                  -                            if (xmode === 'html') {
                                  -                                return it('(error)', s.charAt(0));
                                  -                            } else {
                                  -                                errorAt("Unexpected '{a}'.",
                                  -                                        line, character, s.substr(0, 1));
                                  -                            }
                                  -                        }
                                  -                    } else {
                                  -
                                  -    //      identifier
                                  -
                                  -                        if (c.isAlpha() || c === '_' || c === '$') {
                                  -                            return it('(identifier)', t);
                                  -                        }
                                  -
                                  -    //      number
                                  -
                                  -                        if (c.isDigit()) {
                                  -                            if (xmode !== 'style' && !isFinite(Number(t))) {
                                  -                                warningAt("Bad number '{a}'.",
                                  -                                    line, character, t);
                                  -                            }
                                  -                            if (xmode !== 'style' &&
                                  -                                     xmode !== 'styleproperty' &&
                                  -                                     s.substr(0, 1).isAlpha()) {
                                  -                                warningAt("Missing space after '{a}'.",
                                  -                                        line, character, t);
                                  -                            }
                                  -                            if (c === '0') {
                                  -                                d = t.substr(1, 1);
                                  -                                if (d.isDigit()) {
                                  -                                    if (token.id !== '.' && xmode !== 'styleproperty') {
                                  -                                        warningAt("Don't use extra leading zeros '{a}'.",
                                  -                                            line, character, t);
                                  -                                    }
                                  -                                } else if (jsonmode && (d === 'x' || d === 'X')) {
                                  -                                    warningAt("Avoid 0x-. '{a}'.",
                                  -                                            line, character, t);
                                  -                                }
                                  -                            }
                                  -                            if (t.substr(t.length - 1) === '.') {
                                  -                                warningAt(
                                  -        "A trailing decimal point can be confused with a dot '{a}'.",
                                  -                                        line, character, t);
                                  -                            }
                                  -                            return it('(number)', t);
                                  -                        }
                                  -                        switch (t) {
                                  -
                                  -    //      string
                                  -
                                  -                        case '"':
                                  -                        case "'":
                                  -                            return string(t);
                                  -
                                  -    //      // comment
                                  -
                                  -                        case '//':
                                  -                            if (src || (xmode && xmode !== 'script')) {
                                  -                                warningAt("Unexpected comment.", line, character);
                                  -                            } else if (xmode === 'script' && /<\s*\//i.test(s)) {
                                  -                                warningAt("Unexpected <\/ in comment.", line, character);
                                  -                            } else if ((option.safe || xmode === 'script') && ax.test(s)) {
                                  -                                warningAt("Dangerous comment.", line, character);
                                  -                            }
                                  -                            s = '';
                                  -                            token.comment = true;
                                  -                            break;
                                  -
                                  -    //      /* comment
                                  -
                                  -                        case '/*':
                                  -                            if (src || (xmode && xmode !== 'script' && xmode !== 'style' && xmode !== 'styleproperty')) {
                                  -                                warningAt("Unexpected comment.", line, character);
                                  -                            }
                                  -                            if (option.safe && ax.test(s)) {
                                  -                                warningAt("ADsafe comment violation.", line, character);
                                  -                            }
                                  -                            for (;;) {
                                  -                                i = s.search(lx);
                                  -                                if (i >= 0) {
                                  -                                    break;
                                  -                                }
                                  -                                if (!nextLine()) {
                                  -                                    errorAt("Unclosed comment.", line, character);
                                  -                                } else {
                                  -                                    if (option.safe && ax.test(s)) {
                                  -                                        warningAt("ADsafe comment violation.",
                                  -                                                line, character);
                                  -                                    }
                                  -                                }
                                  -                            }
                                  -                            character += i + 2;
                                  -                            if (s.substr(i, 1) === '/') {
                                  -                                errorAt("Nested comment.", line, character);
                                  -                            }
                                  -                            s = s.substr(i + 2);
                                  -                            token.comment = true;
                                  -                            break;
                                  -
                                  -    //      /*members /*jslint /*global
                                  -
                                  -                        case '/*members':
                                  -                        case '/*member':
                                  -                        case '/*jslint':
                                  -                        case '/*global':
                                  -                        case '*/':
                                  -                            return {
                                  -                                value: t,
                                  -                                type: 'special',
                                  -                                line: line,
                                  -                                character: character,
                                  -                                from: from
                                  -                            };
                                  -
                                  -                        case '':
                                  -                            break;
                                  -    //      /
                                  -                        case '/':
                                  -                            if (token.id === '/=') {
                                  -                                errorAt(
                                  -"A regular expression literal can be confused with '/='.", line, from);
                                  -                            }
                                  -                            if (prereg) {
                                  -                                depth = 0;
                                  -                                captures = 0;
                                  -                                l = 0;
                                  -                                for (;;) {
                                  -                                    b = true;
                                  -                                    c = s.charAt(l);
                                  -                                    l += 1;
                                  -                                    switch (c) {
                                  -                                    case '':
                                  -                                        errorAt("Unclosed regular expression.",
                                  -                                                line, from);
                                  -                                        return;
                                  -                                    case '/':
                                  -                                        if (depth > 0) {
                                  -                                            warningAt("Unescaped '{a}'.",
                                  -                                                    line, from + l, '/');
                                  -                                        }
                                  -                                        c = s.substr(0, l - 1);
                                  -                                        q = {
                                  -                                            g: true,
                                  -                                            i: true,
                                  -                                            m: true
                                  -                                        };
                                  -                                        while (q[s.charAt(l)] === true) {
                                  -                                            q[s.charAt(l)] = false;
                                  -                                            l += 1;
                                  -                                        }
                                  -                                        character += l;
                                  -                                        s = s.substr(l);
                                  -                                        q = s.charAt(0);
                                  -                                        if (q === '/' || q === '*') {
                                  -                                            errorAt("Confusing regular expression.",
                                  -                                                    line, from);
                                  -                                        }
                                  -                                        return it('(regexp)', c);
                                  -                                    case '\\':
                                  -                                        c = s.charAt(l);
                                  -                                        if (c < ' ') {
                                  -                                            warningAt(
                                  -"Unexpected control character in regular expression.", line, from + l);
                                  -                                        } else if (c === '<') {
                                  -                                            warningAt(
                                  -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
                                  -                                        }
                                  -                                        l += 1;
                                  -                                        break;
                                  -                                    case '(':
                                  -                                        depth += 1;
                                  -                                        b = false;
                                  -                                        if (s.charAt(l) === '?') {
                                  -                                            l += 1;
                                  -                                            switch (s.charAt(l)) {
                                  -                                            case ':':
                                  -                                            case '=':
                                  -                                            case '!':
                                  -                                                l += 1;
                                  -                                                break;
                                  -                                            default:
                                  -                                                warningAt(
                                  -"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l));
                                  -                                            }
                                  -                                        } else {
                                  -                                            captures += 1;
                                  -                                        }
                                  -                                        break;
                                  -                                    case '|':
                                  -                                        b = false;
                                  -                                        break;
                                  -                                    case ')':
                                  -                                        if (depth === 0) {
                                  -                                            warningAt("Unescaped '{a}'.",
                                  -                                                    line, from + l, ')');
                                  -                                        } else {
                                  -                                            depth -= 1;
                                  -                                        }
                                  -                                        break;
                                  -                                    case ' ':
                                  -                                        q = 1;
                                  -                                        while (s.charAt(l) === ' ') {
                                  -                                            l += 1;
                                  -                                            q += 1;
                                  -                                        }
                                  -                                        if (q > 1) {
                                  -                                            warningAt(
                                  -"Spaces are hard to count. Use {{a}}.", line, from + l, q);
                                  -                                        }
                                  -                                        break;
                                  -                                    case '[':
                                  -                                        c = s.charAt(l);
                                  -                                        if (c === '^') {
                                  -                                            l += 1;
                                  -                                            if (option.regexp) {
                                  -                                                warningAt("Insecure '{a}'.",
                                  -                                                        line, from + l, c);
                                  -                                            } else if (s.charAt(l) === ']') {
                                  -                                                errorAt("Unescaped '{a}'.",
                                  -                                                    line, from + l, '^');
                                  -                                            }
                                  -                                        }
                                  -                                        q = false;
                                  -                                        if (c === ']') {
                                  -                                            warningAt("Empty class.", line,
                                  -                                                    from + l - 1);
                                  -                                            q = true;
                                  -                                        }
                                  -klass:                                  do {
                                  -                                            c = s.charAt(l);
                                  -                                            l += 1;
                                  -                                            switch (c) {
                                  -                                            case '[':
                                  -                                            case '^':
                                  -                                                warningAt("Unescaped '{a}'.",
                                  -                                                        line, from + l, c);
                                  -                                                q = true;
                                  -                                                break;
                                  -                                            case '-':
                                  -                                                if (q) {
                                  -                                                    q = false;
                                  -                                                } else {
                                  -                                                    warningAt("Unescaped '{a}'.",
                                  -                                                            line, from + l, '-');
                                  -                                                    q = true;
                                  -                                                }
                                  -                                                break;
                                  -                                            case ']':
                                  -                                                if (!q) {
                                  -                                                    warningAt("Unescaped '{a}'.",
                                  -                                                            line, from + l - 1, '-');
                                  -                                                }
                                  -                                                break klass;
                                  -                                            case '\\':
                                  -                                                c = s.charAt(l);
                                  -                                                if (c < ' ') {
                                  -                                                    warningAt(
                                  -"Unexpected control character in regular expression.", line, from + l);
                                  -                                                } else if (c === '<') {
                                  -                                                    warningAt(
                                  -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
                                  -                                                }
                                  -                                                l += 1;
                                  -                                                q = true;
                                  -                                                break;
                                  -                                            case '/':
                                  -                                                warningAt("Unescaped '{a}'.",
                                  -                                                        line, from + l - 1, '/');
                                  -                                                q = true;
                                  -                                                break;
                                  -                                            case '<':
                                  -                                                if (xmode === 'script') {
                                  -                                                    c = s.charAt(l);
                                  -                                                    if (c === '!' || c === '/') {
                                  -                                                        warningAt(
                                  -"HTML confusion in regular expression '<{a}'.", line, from + l, c);
                                  -                                                    }
                                  -                                                }
                                  -                                                q = true;
                                  -                                                break;
                                  -                                            default:
                                  -                                                q = true;
                                  -                                            }
                                  -                                        } while (c);
                                  -                                        break;
                                  -                                    case '.':
                                  -                                        if (option.regexp) {
                                  -                                            warningAt("Insecure '{a}'.", line,
                                  -                                                    from + l, c);
                                  -                                        }
                                  -                                        break;
                                  -                                    case ']':
                                  -                                    case '?':
                                  -                                    case '{':
                                  -                                    case '}':
                                  -                                    case '+':
                                  -                                    case '*':
                                  -                                        warningAt("Unescaped '{a}'.", line,
                                  -                                                from + l, c);
                                  -                                        break;
                                  -                                    case '<':
                                  -                                        if (xmode === 'script') {
                                  -                                            c = s.charAt(l);
                                  -                                            if (c === '!' || c === '/') {
                                  -                                                warningAt(
                                  -"HTML confusion in regular expression '<{a}'.", line, from + l, c);
                                  -                                            }
                                  -                                        }
                                  -                                    }
                                  -                                    if (b) {
                                  -                                        switch (s.charAt(l)) {
                                  -                                        case '?':
                                  -                                        case '+':
                                  -                                        case '*':
                                  -                                            l += 1;
                                  -                                            if (s.charAt(l) === '?') {
                                  -                                                l += 1;
                                  -                                            }
                                  -                                            break;
                                  -                                        case '{':
                                  -                                            l += 1;
                                  -                                            c = s.charAt(l);
                                  -                                            if (c < '0' || c > '9') {
                                  -                                                warningAt(
                                  -"Expected a number and instead saw '{a}'.", line, from + l, c);
                                  -                                            }
                                  -                                            l += 1;
                                  -                                            low = +c;
                                  -                                            for (;;) {
                                  -                                                c = s.charAt(l);
                                  -                                                if (c < '0' || c > '9') {
                                  -                                                    break;
                                  -                                                }
                                  -                                                l += 1;
                                  -                                                low = +c + (low * 10);
                                  -                                            }
                                  -                                            high = low;
                                  -                                            if (c === ',') {
                                  -                                                l += 1;
                                  -                                                high = Infinity;
                                  -                                                c = s.charAt(l);
                                  -                                                if (c >= '0' && c <= '9') {
                                  -                                                    l += 1;
                                  -                                                    high = +c;
                                  -                                                    for (;;) {
                                  -                                                        c = s.charAt(l);
                                  -                                                        if (c < '0' || c > '9') {
                                  -                                                            break;
                                  -                                                        }
                                  -                                                        l += 1;
                                  -                                                        high = +c + (high * 10);
                                  -                                                    }
                                  -                                                }
                                  -                                            }
                                  -                                            if (s.charAt(l) !== '}') {
                                  -                                                warningAt(
                                  -"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c);
                                  -                                            } else {
                                  -                                                l += 1;
                                  -                                            }
                                  -                                            if (s.charAt(l) === '?') {
                                  -                                                l += 1;
                                  -                                            }
                                  -                                            if (low > high) {
                                  -                                                warningAt(
                                  -"'{a}' should not be greater than '{b}'.", line, from + l, low, high);
                                  -                                            }
                                  -                                        }
                                  -                                    }
                                  -                                }
                                  -                                c = s.substr(0, l - 1);
                                  -                                character += l;
                                  -                                s = s.substr(l);
                                  -                                return it('(regexp)', c);
                                  -                            }
                                  -                            return it('(punctuator)', t);
                                  -
                                  -    //      punctuator
                                  -
                                  -                        case '<!--':
                                  -                            l = line;
                                  -                            c = character;
                                  -                            for (;;) {
                                  -                                i = s.indexOf('--');
                                  -                                if (i >= 0) {
                                  -                                    break;
                                  -                                }
                                  -                                i = s.indexOf('<!');
                                  -                                if (i >= 0) {
                                  -                                    errorAt("Nested HTML comment.",
                                  -                                        line, character + i);
                                  -                                }
                                  -                                if (!nextLine()) {
                                  -                                    errorAt("Unclosed HTML comment.", l, c);
                                  -                                }
                                  -                            }
                                  -                            l = s.indexOf('<!');
                                  -                            if (l >= 0 && l < i) {
                                  -                                errorAt("Nested HTML comment.",
                                  -                                    line, character + l);
                                  -                            }
                                  -                            character += i;
                                  -                            if (s[i + 2] !== '>') {
                                  -                                errorAt("Expected -->.", line, character);
                                  -                            }
                                  -                            character += 3;
                                  -                            s = s.slice(i + 3);
                                  -                            break;
                                  -                        case '#':
                                  -                            if (xmode === 'html' || xmode === 'styleproperty') {
                                  -                                for (;;) {
                                  -                                    c = s.charAt(0);
                                  -                                    if ((c < '0' || c > '9') &&
                                  -                                            (c < 'a' || c > 'f') &&
                                  -                                            (c < 'A' || c > 'F')) {
                                  -                                        break;
                                  -                                    }
                                  -                                    character += 1;
                                  -                                    s = s.substr(1);
                                  -                                    t += c;
                                  -                                }
                                  -                                if (t.length !== 4 && t.length !== 7) {
                                  -                                    warningAt("Bad hex color '{a}'.", line,
                                  -                                        from + l, t);
                                  -                                }
                                  -                                return it('(color)', t);
                                  -                            }
                                  -                            return it('(punctuator)', t);
                                  -                        default:
                                  -                            if (xmode === 'outer' && c === '&') {
                                  -                                character += 1;
                                  -                                s = s.substr(1);
                                  -                                for (;;) {
                                  -                                    c = s.charAt(0);
                                  -                                    character += 1;
                                  -                                    s = s.substr(1);
                                  -                                    if (c === ';') {
                                  -                                        break;
                                  -                                    }
                                  -                                    if (!((c >= '0' && c <= '9') ||
                                  -                                            (c >= 'a' && c <= 'z') ||
                                  -                                            c === '#')) {
                                  -                                        errorAt("Bad entity", line, from + l,
                                  -                                        character);
                                  -                                    }
                                  -                                }
                                  -                                break;
                                  -                            }
                                  -                            return it('(punctuator)', t);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        };
                                  -    }());
                                  -
                                  -
                                  -    function addlabel(t, type) {
                                  -
                                  -        if (option.safe && funct['(global)'] &&
                                  -                typeof predefined[t] !== 'boolean') {
                                  -            warning('ADsafe global: ' + t + '.', token);
                                  -        } else if (t === 'hasOwnProperty') {
                                  -            warning("'hasOwnProperty' is a really bad name.");
                                  -        }
                                  -
                                  -// Define t in the current function in the current scope.
                                  -
                                  -        if (is_own(funct, t) && !funct['(global)']) {
                                  -            warning(funct[t] === true ?
                                  -                "'{a}' was used before it was defined." :
                                  -                "'{a}' is already defined.",
                                  -                nexttoken, t);
                                  -        }
                                  -        funct[t] = type;
                                  -        if (funct['(global)']) {
                                  -            global[t] = funct;
                                  -            if (is_own(implied, t)) {
                                  -                warning("'{a}' was used before it was defined.", nexttoken, t);
                                  -                delete implied[t];
                                  -            }
                                  -        } else {
                                  -            scope[t] = funct;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function doOption() {
                                  -        var b, obj, filter, o = nexttoken.value, t, v;
                                  -        switch (o) {
                                  -        case '*/':
                                  -            error("Unbegun comment.");
                                  -            break;
                                  -        case '/*members':
                                  -        case '/*member':
                                  -            o = '/*members';
                                  -            if (!membersOnly) {
                                  -                membersOnly = {};
                                  -            }
                                  -            obj = membersOnly;
                                  -            break;
                                  -        case '/*jslint':
                                  -            if (option.safe) {
                                  -                warning("ADsafe restriction.");
                                  -            }
                                  -            obj = option;
                                  -            filter = boolOptions;
                                  -            break;
                                  -        case '/*global':
                                  -            if (option.safe) {
                                  -                warning("ADsafe restriction.");
                                  -            }
                                  -            obj = predefined;
                                  -            break;
                                  -        default:
                                  -        }
                                  -        t = lex.token();
                                  -loop:   for (;;) {
                                  -            for (;;) {
                                  -                if (t.type === 'special' && t.value === '*/') {
                                  -                    break loop;
                                  -                }
                                  -                if (t.id !== '(endline)' && t.id !== ',') {
                                  -                    break;
                                  -                }
                                  -                t = lex.token();
                                  -            }
                                  -            if (t.type !== '(string)' && t.type !== '(identifier)' &&
                                  -                    o !== '/*members') {
                                  -                error("Bad option.", t);
                                  -            }
                                  -            v = lex.token();
                                  -            if (v.id === ':') {
                                  -                v = lex.token();
                                  -                if (obj === membersOnly) {
                                  -                    error("Expected '{a}' and instead saw '{b}'.",
                                  -                            t, '*/', ':');
                                  -                }
                                  -                if (t.value === 'indent' && o === '/*jslint') {
                                  -                    b = +v.value;
                                  -                    if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
                                  -                            Math.floor(b) !== b) {
                                  -                        error("Expected a small integer and instead saw '{a}'.",
                                  -                                v, v.value);
                                  -                    }
                                  -                    obj.white = true;
                                  -                    obj.indent = b;
                                  -                } else if (t.value === 'maxerr' && o === '/*jslint') {
                                  -                    b = +v.value;
                                  -                    if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
                                  -                            Math.floor(b) !== b) {
                                  -                        error("Expected a small integer and instead saw '{a}'.",
                                  -                                v, v.value);
                                  -                    }
                                  -                    obj.maxerr = b;
                                  -                } else if (t.value === 'maxlen' && o === '/*jslint') {
                                  -                    b = +v.value;
                                  -                    if (typeof b !== 'number' || !isFinite(b) || b <= 0 ||
                                  -                            Math.floor(b) !== b) {
                                  -                        error("Expected a small integer and instead saw '{a}'.",
                                  -                                v, v.value);
                                  -                    }
                                  -                    obj.maxlen = b;
                                  -                } else if (v.value === 'true') {
                                  -                    obj[t.value] = true;
                                  -                } else if (v.value === 'false') {
                                  -                    obj[t.value] = false;
                                  -                } else {
                                  -                    error("Bad option value.", v);
                                  -                }
                                  -                t = lex.token();
                                  -            } else {
                                  -                if (o === '/*jslint') {
                                  -                    error("Missing option value.", t);
                                  -                }
                                  -                obj[t.value] = false;
                                  -                t = v;
                                  -            }
                                  -        }
                                  -        if (filter) {
                                  -            assume();
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// We need a peek function. If it has an argument, it peeks that much farther
                                  -// ahead. It is used to distinguish
                                  -//     for ( var i in ...
                                  -// from
                                  -//     for ( var i = ...
                                  -
                                  -    function peek(p) {
                                  -        var i = p || 0, j = 0, t;
                                  -
                                  -        while (j <= i) {
                                  -            t = lookahead[j];
                                  -            if (!t) {
                                  -                t = lookahead[j] = lex.token();
                                  -            }
                                  -            j += 1;
                                  -        }
                                  -        return t;
                                  -    }
                                  -
                                  -
                                  -
                                  -// Produce the next token. It looks for programming errors.
                                  -
                                  -    function advance(id, t) {
                                  -        switch (token.id) {
                                  -        case '(number)':
                                  -            if (nexttoken.id === '.') {
                                  -                warning(
                                  -"A dot following a number can be confused with a decimal point.", token);
                                  -            }
                                  -            break;
                                  -        case '-':
                                  -            if (nexttoken.id === '-' || nexttoken.id === '--') {
                                  -                warning("Confusing minusses.");
                                  -            }
                                  -            break;
                                  -        case '+':
                                  -            if (nexttoken.id === '+' || nexttoken.id === '++') {
                                  -                warning("Confusing plusses.");
                                  -            }
                                  -            break;
                                  -        }
                                  -        if (token.type === '(string)' || token.identifier) {
                                  -            anonname = token.value;
                                  -        }
                                  -
                                  -        if (id && nexttoken.id !== id) {
                                  -            if (t) {
                                  -                if (nexttoken.id === '(end)') {
                                  -                    warning("Unmatched '{a}'.", t, t.id);
                                  -                } else {
                                  -                    warning(
                                  -"Expected '{a}' to match '{b}' from line {c} and instead saw '{d}'.",
                                  -                            nexttoken, id, t.id, t.line, nexttoken.value);
                                  -                }
                                  -            } else if (nexttoken.type !== '(identifier)' ||
                                  -                            nexttoken.value !== id) {
                                  -                warning("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, id, nexttoken.value);
                                  -            }
                                  -        }
                                  -        prevtoken = token;
                                  -        token = nexttoken;
                                  -        for (;;) {
                                  -            nexttoken = lookahead.shift() || lex.token();
                                  -            if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
                                  -                return;
                                  -            }
                                  -            if (nexttoken.type === 'special') {
                                  -                doOption();
                                  -            } else {
                                  -                if (nexttoken.id !== '(endline)') {
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// This is the heart of JSLINT, the Pratt parser. In addition to parsing, it
                                  -// is looking for ad hoc lint patterns. We add to Pratt's model .fud, which is
                                  -// like nud except that it is only used on the first token of a statement.
                                  -// Having .fud makes it much easier to define JavaScript. I retained Pratt's
                                  -// nomenclature.
                                  -
                                  -// .nud     Null denotation
                                  -// .fud     First null denotation
                                  -// .led     Left denotation
                                  -//  lbp     Left binding power
                                  -//  rbp     Right binding power
                                  -
                                  -// They are key to the parsing method called Top Down Operator Precedence.
                                  -
                                  -    function parse(rbp, initial) {
                                  -        var left;
                                  -        if (nexttoken.id === '(end)') {
                                  -            error("Unexpected early end of program.", token);
                                  -        }
                                  -        advance();
                                  -        if (option.safe && typeof predefined[token.value] === 'boolean' &&
                                  -                (nexttoken.id !== '(' && nexttoken.id !== '.')) {
                                  -            warning('ADsafe violation.', token);
                                  -        }
                                  -        if (initial) {
                                  -            anonname = 'anonymous';
                                  -            funct['(verb)'] = token.value;
                                  -        }
                                  -        if (initial === true && token.fud) {
                                  -            left = token.fud();
                                  -        } else {
                                  -            if (token.nud) {
                                  -                left = token.nud();
                                  -            } else {
                                  -                if (nexttoken.type === '(number)' && token.id === '.') {
                                  -                    warning(
                                  -"A leading decimal point can be confused with a dot: '.{a}'.",
                                  -                            token, nexttoken.value);
                                  -                    advance();
                                  -                    return token;
                                  -                } else {
                                  -                    error("Expected an identifier and instead saw '{a}'.",
                                  -                            token, token.id);
                                  -                }
                                  -            }
                                  -            while (rbp < nexttoken.lbp) {
                                  -                advance();
                                  -                if (token.led) {
                                  -                    left = token.led(left);
                                  -                } else {
                                  -                    error("Expected an operator and instead saw '{a}'.",
                                  -                        token, token.id);
                                  -                }
                                  -            }
                                  -        }
                                  -        return left;
                                  -    }
                                  -
                                  -
                                  -// Functions for conformance of style.
                                  -
                                  -    function adjacent(left, right) {
                                  -        left = left || token;
                                  -        right = right || nexttoken;
                                  -        if (option.white || xmode === 'styleproperty' || xmode === 'style') {
                                  -            if (left.character !== right.from && left.line === right.line) {
                                  -                warning("Unexpected space after '{a}'.", right, left.value);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function nobreak(left, right) {
                                  -        left = left || token;
                                  -        right = right || nexttoken;
                                  -        if (left.character !== right.from || left.line !== right.line) {
                                  -            warning("Unexpected space before '{a}'.", right, right.value);
                                  -        }
                                  -    }
                                  -
                                  -    function nospace(left, right) {
                                  -        left = left || token;
                                  -        right = right || nexttoken;
                                  -        if (option.white && !left.comment) {
                                  -            if (left.line === right.line) {
                                  -                adjacent(left, right);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function nonadjacent(left, right) {
                                  -        if (option.white) {
                                  -            left = left || token;
                                  -            right = right || nexttoken;
                                  -            if (left.line === right.line && left.character === right.from) {
                                  -                warning("Missing space after '{a}'.",
                                  -                        nexttoken, left.value);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function nobreaknonadjacent(left, right) {
                                  -        left = left || token;
                                  -        right = right || nexttoken;
                                  -        if (!option.laxbreak && left.line !== right.line) {
                                  -            warning("Bad line breaking before '{a}'.", right, right.id);
                                  -        } else if (option.white) {
                                  -            left = left || token;
                                  -            right = right || nexttoken;
                                  -            if (left.character === right.from) {
                                  -                warning("Missing space after '{a}'.",
                                  -                        nexttoken, left.value);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function indentation(bias) {
                                  -        var i;
                                  -        if (option.white && nexttoken.id !== '(end)') {
                                  -            i = indent + (bias || 0);
                                  -            if (nexttoken.from !== i) {
                                  -                warning(
                                  -"Expected '{a}' to have an indentation at {b} instead at {c}.",
                                  -                        nexttoken, nexttoken.value, i, nexttoken.from);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function nolinebreak(t) {
                                  -        t = t || token;
                                  -        if (t.line !== nexttoken.line) {
                                  -            warning("Line breaking error '{a}'.", t, t.value);
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function comma() {
                                  -        if (token.line !== nexttoken.line) {
                                  -            if (!option.laxbreak) {
                                  -                warning("Bad line breaking before '{a}'.", token, nexttoken.id);
                                  -            }
                                  -        } else if (token.character !== nexttoken.from && option.white) {
                                  -            warning("Unexpected space after '{a}'.", nexttoken, token.value);
                                  -        }
                                  -        advance(',');
                                  -        nonadjacent(token, nexttoken);
                                  -    }
                                  -
                                  -
                                  -// Functional constructors for making the symbols that will be inherited by
                                  -// tokens.
                                  -
                                  -    function symbol(s, p) {
                                  -        var x = syntax[s];
                                  -        if (!x || typeof x !== 'object') {
                                  -            syntax[s] = x = {
                                  -                id: s,
                                  -                lbp: p,
                                  -                value: s
                                  -            };
                                  -        }
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function delim(s) {
                                  -        return symbol(s, 0);
                                  -    }
                                  -
                                  -
                                  -    function stmt(s, f) {
                                  -        var x = delim(s);
                                  -        x.identifier = x.reserved = true;
                                  -        x.fud = f;
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function blockstmt(s, f) {
                                  -        var x = stmt(s, f);
                                  -        x.block = true;
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function reserveName(x) {
                                  -        var c = x.id.charAt(0);
                                  -        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
                                  -            x.identifier = x.reserved = true;
                                  -        }
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function prefix(s, f) {
                                  -        var x = symbol(s, 150);
                                  -        reserveName(x);
                                  -        x.nud = (typeof f === 'function') ? f : function () {
                                  -            this.right = parse(150);
                                  -            this.arity = 'unary';
                                  -            if (this.id === '++' || this.id === '--') {
                                  -                if (option.plusplus) {
                                  -                    warning("Unexpected use of '{a}'.", this, this.id);
                                  -                } else if ((!this.right.identifier || this.right.reserved) &&
                                  -                        this.right.id !== '.' && this.right.id !== '[') {
                                  -                    warning("Bad operand.", this);
                                  -                }
                                  -            }
                                  -            return this;
                                  -        };
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function type(s, f) {
                                  -        var x = delim(s);
                                  -        x.type = s;
                                  -        x.nud = f;
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function reserve(s, f) {
                                  -        var x = type(s, f);
                                  -        x.identifier = x.reserved = true;
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function reservevar(s, v) {
                                  -        return reserve(s, function () {
                                  -            if (typeof v === 'function') {
                                  -                v(this);
                                  -            }
                                  -            return this;
                                  -        });
                                  -    }
                                  -
                                  -
                                  -    function infix(s, f, p, w) {
                                  -        var x = symbol(s, p);
                                  -        reserveName(x);
                                  -        x.led = function (left) {
                                  -            if (!w) {
                                  -                nobreaknonadjacent(prevtoken, token);
                                  -                nonadjacent(token, nexttoken);
                                  -            }
                                  -            if (typeof f === 'function') {
                                  -                return f(left, this);
                                  -            } else {
                                  -                this.left = left;
                                  -                this.right = parse(p);
                                  -                return this;
                                  -            }
                                  -        };
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function relation(s, f) {
                                  -        var x = symbol(s, 100);
                                  -        x.led = function (left) {
                                  -            nobreaknonadjacent(prevtoken, token);
                                  -            nonadjacent(token, nexttoken);
                                  -            var right = parse(100);
                                  -            if ((left && left.id === 'NaN') || (right && right.id === 'NaN')) {
                                  -                warning("Use the isNaN function to compare with NaN.", this);
                                  -            } else if (f) {
                                  -                f.apply(this, [left, right]);
                                  -            }
                                  -            if (left.id === '!') {
                                  -                warning("Confusing use of '{a}'.", left, '!');
                                  -            }
                                  -            if (right.id === '!') {
                                  -                warning("Confusing use of '{a}'.", left, '!');
                                  -            }
                                  -            this.left = left;
                                  -            this.right = right;
                                  -            return this;
                                  -        };
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function isPoorRelation(node) {
                                  -        return node &&
                                  -              ((node.type === '(number)' && +node.value === 0) ||
                                  -               (node.type === '(string)' && node.value === '') ||
                                  -                node.type === 'true' ||
                                  -                node.type === 'false' ||
                                  -                node.type === 'undefined' ||
                                  -                node.type === 'null');
                                  -    }
                                  -
                                  -
                                  -    function assignop(s, f) {
                                  -        symbol(s, 20).exps = true;
                                  -        return infix(s, function (left, that) {
                                  -            var l;
                                  -            that.left = left;
                                  -            if (predefined[left.value] === false &&
                                  -                    scope[left.value]['(global)'] === true) {
                                  -                warning("Read only.", left);
                                  -            } else if (left['function']) {
                                  -                warning("'{a}' is a function.", left, left.value);
                                  -            }
                                  -            if (option.safe) {
                                  -                l = left;
                                  -                do {
                                  -                    if (typeof predefined[l.value] === 'boolean') {
                                  -                        warning('ADsafe violation.', l);
                                  -                    }
                                  -                    l = l.left;
                                  -                } while (l);
                                  -            }
                                  -            if (left) {
                                  -                if (left.id === '.' || left.id === '[') {
                                  -                    if (!left.left || left.left.value === 'arguments') {
                                  -                        warning('Bad assignment.', that);
                                  -                    }
                                  -                    that.right = parse(19);
                                  -                    return that;
                                  -                } else if (left.identifier && !left.reserved) {
                                  -                    if (funct[left.value] === 'exception') {
                                  -                        warning("Do not assign to the exception parameter.", left);
                                  -                    }
                                  -                    that.right = parse(19);
                                  -                    return that;
                                  -                }
                                  -                if (left === syntax['function']) {
                                  -                    warning(
                                  -"Expected an identifier in an assignment and instead saw a function invocation.",
                                  -                                token);
                                  -                }
                                  -            }
                                  -            error("Bad assignment.", that);
                                  -        }, 20);
                                  -    }
                                  -
                                  -
                                  -    function bitwise(s, f, p) {
                                  -        var x = symbol(s, p);
                                  -        reserveName(x);
                                  -        x.led = (typeof f === 'function') ? f : function (left) {
                                  -            if (option.bitwise) {
                                  -                warning("Unexpected use of '{a}'.", this, this.id);
                                  -            }
                                  -            this.left = left;
                                  -            this.right = parse(p);
                                  -            return this;
                                  -        };
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function bitwiseassignop(s) {
                                  -        symbol(s, 20).exps = true;
                                  -        return infix(s, function (left, that) {
                                  -            if (option.bitwise) {
                                  -                warning("Unexpected use of '{a}'.", that, that.id);
                                  -            }
                                  -            nonadjacent(prevtoken, token);
                                  -            nonadjacent(token, nexttoken);
                                  -            if (left) {
                                  -                if (left.id === '.' || left.id === '[' ||
                                  -                        (left.identifier && !left.reserved)) {
                                  -                    parse(19);
                                  -                    return that;
                                  -                }
                                  -                if (left === syntax['function']) {
                                  -                    warning(
                                  -"Expected an identifier in an assignment, and instead saw a function invocation.",
                                  -                                token);
                                  -                }
                                  -                return that;
                                  -            }
                                  -            error("Bad assignment.", that);
                                  -        }, 20);
                                  -    }
                                  -
                                  -
                                  -    function suffix(s, f) {
                                  -        var x = symbol(s, 150);
                                  -        x.led = function (left) {
                                  -            if (option.plusplus) {
                                  -                warning("Unexpected use of '{a}'.", this, this.id);
                                  -            } else if ((!left.identifier || left.reserved) &&
                                  -                    left.id !== '.' && left.id !== '[') {
                                  -                warning("Bad operand.", this);
                                  -            }
                                  -            this.left = left;
                                  -            return this;
                                  -        };
                                  -        return x;
                                  -    }
                                  -
                                  -
                                  -    function optionalidentifier() {
                                  -        if (nexttoken.identifier) {
                                  -            advance();
                                  -            if (option.safe && banned[token.value]) {
                                  -                warning("ADsafe violation: '{a}'.", token, token.value);
                                  -            } else if (token.reserved && !option.es5) {
                                  -                warning("Expected an identifier and instead saw '{a}' (a reserved word).",
                                  -                        token, token.id);
                                  -            }
                                  -            return token.value;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function identifier() {
                                  -        var i = optionalidentifier();
                                  -        if (i) {
                                  -            return i;
                                  -        }
                                  -        if (token.id === 'function' && nexttoken.id === '(') {
                                  -            warning("Missing name in function statement.");
                                  -        } else {
                                  -            error("Expected an identifier and instead saw '{a}'.",
                                  -                    nexttoken, nexttoken.value);
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function reachable(s) {
                                  -        var i = 0, t;
                                  -        if (nexttoken.id !== ';' || noreach) {
                                  -            return;
                                  -        }
                                  -        for (;;) {
                                  -            t = peek(i);
                                  -            if (t.reach) {
                                  -                return;
                                  -            }
                                  -            if (t.id !== '(endline)') {
                                  -                if (t.id === 'function') {
                                  -                    warning(
                                  -"Inner functions should be listed at the top of the outer function.", t);
                                  -                    break;
                                  -                }
                                  -                warning("Unreachable '{a}' after '{b}'.", t, t.value, s);
                                  -                break;
                                  -            }
                                  -            i += 1;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function statement(noindent) {
                                  -        var i = indent, r, s = scope, t = nexttoken;
                                  -
                                  -// We don't like the empty statement.
                                  -
                                  -        if (t.id === ';') {
                                  -            warning("Unnecessary semicolon.", t);
                                  -            advance(';');
                                  -            return;
                                  -        }
                                  -
                                  -// Is this a labelled statement?
                                  -
                                  -        if (t.identifier && !t.reserved && peek().id === ':') {
                                  -            advance();
                                  -            advance(':');
                                  -            scope = Object.create(s);
                                  -            addlabel(t.value, 'label');
                                  -            if (!nexttoken.labelled) {
                                  -                warning("Label '{a}' on {b} statement.",
                                  -                        nexttoken, t.value, nexttoken.value);
                                  -            }
                                  -            if (jx.test(t.value + ':')) {
                                  -                warning("Label '{a}' looks like a javascript url.",
                                  -                        t, t.value);
                                  -            }
                                  -            nexttoken.label = t.value;
                                  -            t = nexttoken;
                                  -        }
                                  -
                                  -// Parse the statement.
                                  -
                                  -        if (!noindent) {
                                  -            indentation();
                                  -        }
                                  -        r = parse(0, true);
                                  -
                                  -// Look for the final semicolon.
                                  -
                                  -        if (!t.block) {
                                  -            if (!r || !r.exps) {
                                  -                warning(
                                  -"Expected an assignment or function call and instead saw an expression.",
                                  -                        token);
                                  -            } else if (r.id === '(' && r.left.id === 'new') {
                                  -                warning("Do not use 'new' for side effects.");
                                  -            }
                                  -            if (nexttoken.id !== ';') {
                                  -                warningAt("Missing semicolon.", token.line,
                                  -                        token.from + token.value.length);
                                  -            } else {
                                  -                adjacent(token, nexttoken);
                                  -                advance(';');
                                  -                nonadjacent(token, nexttoken);
                                  -            }
                                  -        }
                                  -
                                  -// Restore the indentation.
                                  -
                                  -        indent = i;
                                  -        scope = s;
                                  -        return r;
                                  -    }
                                  -
                                  -
                                  -    function use_strict() {
                                  -        if (nexttoken.value === 'use strict') {
                                  -            advance();
                                  -            advance(';');
                                  -            strict_mode = true;
                                  -            option.newcap = true;
                                  -            option.undef = true;
                                  -            return true;
                                  -        } else {
                                  -            return false;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function statements(begin) {
                                  -        var a = [], f, p;
                                  -        if (begin && !use_strict() && option.strict) {
                                  -            warning('Missing "use strict" statement.', nexttoken);
                                  -        }
                                  -        if (option.adsafe) {
                                  -            switch (begin) {
                                  -            case 'script':
                                  -                if (!adsafe_may) {
                                  -                    if (nexttoken.value !== 'ADSAFE' ||
                                  -                            peek(0).id !== '.' ||
                                  -                            (peek(1).value !== 'id' &&
                                  -                            peek(1).value !== 'go')) {
                                  -                        error('ADsafe violation: Missing ADSAFE.id or ADSAFE.go.',
                                  -                            nexttoken);
                                  -                    }
                                  -                }
                                  -                if (nexttoken.value === 'ADSAFE' &&
                                  -                        peek(0).id === '.' &&
                                  -                        peek(1).value === 'id') {
                                  -                    if (adsafe_may) {
                                  -                        error('ADsafe violation.', nexttoken);
                                  -                    }
                                  -                    advance('ADSAFE');
                                  -                    advance('.');
                                  -                    advance('id');
                                  -                    advance('(');
                                  -                    if (nexttoken.value !== adsafe_id) {
                                  -                        error('ADsafe violation: id does not match.', nexttoken);
                                  -                    }
                                  -                    advance('(string)');
                                  -                    advance(')');
                                  -                    advance(';');
                                  -                    adsafe_may = true;
                                  -                }
                                  -                break;
                                  -            case 'lib':
                                  -                if (nexttoken.value === 'ADSAFE') {
                                  -                    advance('ADSAFE');
                                  -                    advance('.');
                                  -                    advance('lib');
                                  -                    advance('(');
                                  -                    advance('(string)');
                                  -                    comma();
                                  -                    f = parse(0);
                                  -                    if (f.id !== 'function') {
                                  -                        error('The second argument to lib must be a function.', f);
                                  -                    }
                                  -                    p = f.funct['(params)'];
                                  -                    p = p && p.join(', ');
                                  -                    if (p && p !== 'lib') {
                                  -                        error("Expected '{a}' and instead saw '{b}'.",
                                  -                            f, '(lib)', '(' + p + ')');
                                  -                    }
                                  -                    advance(')');
                                  -                    advance(';');
                                  -                    return a;
                                  -                } else {
                                  -                    error("ADsafe lib violation.");
                                  -                }
                                  -            }
                                  -        }
                                  -        while (!nexttoken.reach && nexttoken.id !== '(end)') {
                                  -            if (nexttoken.id === ';') {
                                  -                warning("Unnecessary semicolon.");
                                  -                advance(';');
                                  -            } else {
                                  -                a.push(statement());
                                  -            }
                                  -        }
                                  -        return a;
                                  -    }
                                  -
                                  -
                                  -    function block(f) {
                                  -        var a, b = inblock, old_indent = indent, s = scope, t;
                                  -        inblock = f;
                                  -        scope = Object.create(scope);
                                  -        nonadjacent(token, nexttoken);
                                  -        t = nexttoken;
                                  -        if (nexttoken.id === '{') {
                                  -            advance('{');
                                  -            if (nexttoken.id !== '}' || token.line !== nexttoken.line) {
                                  -                indent += option.indent;
                                  -                while (!f && nexttoken.from > indent) {
                                  -                    indent += option.indent;
                                  -                }
                                  -                if (!f) {
                                  -                    use_strict();
                                  -                }
                                  -                a = statements();
                                  -                indent -= option.indent;
                                  -                indentation();
                                  -            }
                                  -            advance('}', t);
                                  -            indent = old_indent;
                                  -        } else {
                                  -            warning("Expected '{a}' and instead saw '{b}'.",
                                  -                    nexttoken, '{', nexttoken.value);
                                  -            noreach = true;
                                  -            a = [statement()];
                                  -            noreach = false;
                                  -        }
                                  -        funct['(verb)'] = null;
                                  -        scope = s;
                                  -        inblock = b;
                                  -        if (f && (!a || a.length === 0)) {
                                  -            warning("Empty block.");
                                  -        }
                                  -        return a;
                                  -    }
                                  -
                                  -
                                  -    function countMember(m) {
                                  -        if (membersOnly && typeof membersOnly[m] !== 'boolean') {
                                  -            warning("Unexpected /*member '{a}'.", token, m);
                                  -        }
                                  -        if (typeof member[m] === 'number') {
                                  -            member[m] += 1;
                                  -        } else {
                                  -            member[m] = 1;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function note_implied(token) {
                                  -        var name = token.value, line = token.line, a = implied[name];
                                  -        if (typeof a === 'function') {
                                  -            a = false;
                                  -        }
                                  -        if (!a) {
                                  -            a = [line];
                                  -            implied[name] = a;
                                  -        } else if (a[a.length - 1] !== line) {
                                  -            a.push(line);
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// CSS parsing.
                                  -
                                  -
                                  -    function cssName() {
                                  -        if (nexttoken.identifier) {
                                  -            advance();
                                  -            return true;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function cssNumber() {
                                  -        if (nexttoken.id === '-') {
                                  -            advance('-');
                                  -            adjacent();
                                  -            nolinebreak();
                                  -        }
                                  -        if (nexttoken.type === '(number)') {
                                  -            advance('(number)');
                                  -            return true;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function cssString() {
                                  -        if (nexttoken.type === '(string)') {
                                  -            advance();
                                  -            return true;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function cssColor() {
                                  -        var i, number, value;
                                  -        if (nexttoken.identifier) {
                                  -            value = nexttoken.value;
                                  -            if (value === 'rgb' || value === 'rgba') {
                                  -                advance();
                                  -                advance('(');
                                  -                for (i = 0; i < 3; i += 1) {
                                  -                    if (i) {
                                  -                        advance(',');
                                  -                    }
                                  -                    number = nexttoken.value;
                                  -                    if (nexttoken.type !== '(number)' || number < 0) {
                                  -                        warning("Expected a positive number and instead saw '{a}'",
                                  -                            nexttoken, number);
                                  -                        advance();
                                  -                    } else {
                                  -                        advance();
                                  -                        if (nexttoken.id === '%') {
                                  -                            advance('%');
                                  -                            if (number > 100) {
                                  -                                warning("Expected a percentage and instead saw '{a}'",
                                  -                                    token, number);
                                  -                            }
                                  -                        } else {
                                  -                            if (number > 255) {
                                  -                                warning("Expected a small number and instead saw '{a}'",
                                  -                                    token, number);
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -                if (value === 'rgba') {
                                  -                    advance(',');
                                  -                    number = +nexttoken.value;
                                  -                    if (nexttoken.type !== '(number)' || number < 0 || number > 1) {
                                  -                        warning("Expected a number between 0 and 1 and instead saw '{a}'",
                                  -                            nexttoken, number);
                                  -                    }
                                  -                    advance();
                                  -                    if (nexttoken.id === '%') {
                                  -                        warning("Unexpected '%'.");
                                  -                        advance('%');
                                  -                    }
                                  -                }
                                  -                advance(')');
                                  -                return true;
                                  -            } else if (cssColorData[nexttoken.value] === true) {
                                  -                advance();
                                  -                return true;
                                  -            }
                                  -        } else if (nexttoken.type === '(color)') {
                                  -            advance();
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssLength() {
                                  -        if (nexttoken.id === '-') {
                                  -            advance('-');
                                  -            adjacent();
                                  -            nolinebreak();
                                  -        }
                                  -        if (nexttoken.type === '(number)') {
                                  -            advance();
                                  -            if (nexttoken.type !== '(string)' &&
                                  -                    cssLengthData[nexttoken.value] === true) {
                                  -                adjacent();
                                  -                advance();
                                  -            } else if (+token.value !== 0) {
                                  -                warning("Expected a linear unit and instead saw '{a}'.",
                                  -                    nexttoken, nexttoken.value);
                                  -            }
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssLineHeight() {
                                  -        if (nexttoken.id === '-') {
                                  -            advance('-');
                                  -            adjacent();
                                  -        }
                                  -        if (nexttoken.type === '(number)') {
                                  -            advance();
                                  -            if (nexttoken.type !== '(string)' &&
                                  -                    cssLengthData[nexttoken.value] === true) {
                                  -                adjacent();
                                  -                advance();
                                  -            }
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssWidth() {
                                  -        if (nexttoken.identifier) {
                                  -            switch (nexttoken.value) {
                                  -            case 'thin':
                                  -            case 'medium':
                                  -            case 'thick':
                                  -                advance();
                                  -                return true;
                                  -            }
                                  -        } else {
                                  -            return cssLength();
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function cssMargin() {
                                  -        if (nexttoken.identifier) {
                                  -            if (nexttoken.value === 'auto') {
                                  -                advance();
                                  -                return true;
                                  -            }
                                  -        } else {
                                  -            return cssLength();
                                  -        }
                                  -    }
                                  -
                                  -    function cssAttr() {
                                  -        if (nexttoken.identifier && nexttoken.value === 'attr') {
                                  -            advance();
                                  -            advance('(');
                                  -            if (!nexttoken.identifier) {
                                  -                warning("Expected a name and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -            }
                                  -            advance();
                                  -            advance(')');
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssCommaList() {
                                  -        while (nexttoken.id !== ';') {
                                  -            if (!cssName() && !cssString()) {
                                  -                warning("Expected a name and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -            }
                                  -            if (nexttoken.id !== ',') {
                                  -                return true;
                                  -            }
                                  -            comma();
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function cssCounter() {
                                  -        if (nexttoken.identifier && nexttoken.value === 'counter') {
                                  -            advance();
                                  -            advance('(');
                                  -            advance();
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -                if (nexttoken.type !== '(string)') {
                                  -                    warning("Expected a string and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -            }
                                  -            advance(')');
                                  -            return true;
                                  -        }
                                  -        if (nexttoken.identifier && nexttoken.value === 'counters') {
                                  -            advance();
                                  -            advance('(');
                                  -            if (!nexttoken.identifier) {
                                  -                warning("Expected a name and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -            }
                                  -            advance();
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -                if (nexttoken.type !== '(string)') {
                                  -                    warning("Expected a string and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -            }
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -                if (nexttoken.type !== '(string)') {
                                  -                    warning("Expected a string and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -            }
                                  -            advance(')');
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssShape() {
                                  -        var i;
                                  -        if (nexttoken.identifier && nexttoken.value === 'rect') {
                                  -            advance();
                                  -            advance('(');
                                  -            for (i = 0; i < 4; i += 1) {
                                  -                if (!cssLength()) {
                                  -                    warning("Expected a number and instead saw '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -                    break;
                                  -                }
                                  -            }
                                  -            advance(')');
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    function cssUrl() {
                                  -        var c, url;
                                  -        if (nexttoken.identifier && nexttoken.value === 'url') {
                                  -            nexttoken = lex.range('(', ')');
                                  -            url = nexttoken.value;
                                  -            c = url.charAt(0);
                                  -            if (c === '"' || c === '\'') {
                                  -                if (url.slice(-1) !== c) {
                                  -                    warning("Bad url string.");
                                  -                } else {
                                  -                    url = url.slice(1, -1);
                                  -                    if (url.indexOf(c) >= 0) {
                                  -                        warning("Bad url string.");
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (!url) {
                                  -                warning("Missing url.");
                                  -            }
                                  -            advance();
                                  -            if (option.safe && ux.test(url)) {
                                  -                error("ADsafe URL violation.");
                                  -            }
                                  -            urls.push(url);
                                  -            return true;
                                  -        }
                                  -        return false;
                                  -    }
                                  -
                                  -
                                  -    cssAny = [cssUrl, function () {
                                  -        for (;;) {
                                  -            if (nexttoken.identifier) {
                                  -                switch (nexttoken.value.toLowerCase()) {
                                  -                case 'url':
                                  -                    cssUrl();
                                  -                    break;
                                  -                case 'expression':
                                  -                    warning("Unexpected expression '{a}'.",
                                  -                        nexttoken, nexttoken.value);
                                  -                    advance();
                                  -                    break;
                                  -                default:
                                  -                    advance();
                                  -                }
                                  -            } else {
                                  -                if (nexttoken.id === ';' || nexttoken.id === '!'  ||
                                  -                        nexttoken.id === '(end)' || nexttoken.id === '}') {
                                  -                    return true;
                                  -                }
                                  -                advance();
                                  -            }
                                  -        }
                                  -    }];
                                  -
                                  -
                                  -    cssBorderStyle = [
                                  -        'none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'ridge',
                                  -        'inset', 'outset'
                                  -    ];
                                  -
                                  -    cssBreak = [
                                  -        'auto', 'always', 'avoid', 'left', 'right'
                                  -    ];
                                  -
                                  -    cssOverflow = [
                                  -        'auto', 'hidden', 'scroll', 'visible'
                                  -    ];
                                  -
                                  -    cssAttributeData = {
                                  -        background: [
                                  -            true, 'background-attachment', 'background-color',
                                  -            'background-image', 'background-position', 'background-repeat'
                                  -        ],
                                  -        'background-attachment': ['scroll', 'fixed'],
                                  -        'background-color': ['transparent', cssColor],
                                  -        'background-image': ['none', cssUrl],
                                  -        'background-position': [
                                  -            2, [cssLength, 'top', 'bottom', 'left', 'right', 'center']
                                  -        ],
                                  -        'background-repeat': [
                                  -            'repeat', 'repeat-x', 'repeat-y', 'no-repeat'
                                  -        ],
                                  -        'border': [true, 'border-color', 'border-style', 'border-width'],
                                  -        'border-bottom': [
                                  -            true, 'border-bottom-color', 'border-bottom-style',
                                  -            'border-bottom-width'
                                  -        ],
                                  -        'border-bottom-color': cssColor,
                                  -        'border-bottom-style': cssBorderStyle,
                                  -        'border-bottom-width': cssWidth,
                                  -        'border-collapse': ['collapse', 'separate'],
                                  -        'border-color': ['transparent', 4, cssColor],
                                  -        'border-left': [
                                  -            true, 'border-left-color', 'border-left-style', 'border-left-width'
                                  -        ],
                                  -        'border-left-color': cssColor,
                                  -        'border-left-style': cssBorderStyle,
                                  -        'border-left-width': cssWidth,
                                  -        'border-right': [
                                  -            true, 'border-right-color', 'border-right-style',
                                  -            'border-right-width'
                                  -        ],
                                  -        'border-right-color': cssColor,
                                  -        'border-right-style': cssBorderStyle,
                                  -        'border-right-width': cssWidth,
                                  -        'border-spacing': [2, cssLength],
                                  -        'border-style': [4, cssBorderStyle],
                                  -        'border-top': [
                                  -            true, 'border-top-color', 'border-top-style', 'border-top-width'
                                  -        ],
                                  -        'border-top-color': cssColor,
                                  -        'border-top-style': cssBorderStyle,
                                  -        'border-top-width': cssWidth,
                                  -        'border-width': [4, cssWidth],
                                  -        bottom: [cssLength, 'auto'],
                                  -        'caption-side' : ['bottom', 'left', 'right', 'top'],
                                  -        clear: ['both', 'left', 'none', 'right'],
                                  -        clip: [cssShape, 'auto'],
                                  -        color: cssColor,
                                  -        content: [
                                  -            'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote',
                                  -            cssString, cssUrl, cssCounter, cssAttr
                                  -        ],
                                  -        'counter-increment': [
                                  -            cssName, 'none'
                                  -        ],
                                  -        'counter-reset': [
                                  -            cssName, 'none'
                                  -        ],
                                  -        cursor: [
                                  -            cssUrl, 'auto', 'crosshair', 'default', 'e-resize', 'help', 'move',
                                  -            'n-resize', 'ne-resize', 'nw-resize', 'pointer', 's-resize',
                                  -            'se-resize', 'sw-resize', 'w-resize', 'text', 'wait'
                                  -        ],
                                  -        direction: ['ltr', 'rtl'],
                                  -        display: [
                                  -            'block', 'compact', 'inline', 'inline-block', 'inline-table',
                                  -            'list-item', 'marker', 'none', 'run-in', 'table', 'table-caption',
                                  -            'table-cell', 'table-column', 'table-column-group',
                                  -            'table-footer-group', 'table-header-group', 'table-row',
                                  -            'table-row-group'
                                  -        ],
                                  -        'empty-cells': ['show', 'hide'],
                                  -        'float': ['left', 'none', 'right'],
                                  -        font: [
                                  -            'caption', 'icon', 'menu', 'message-box', 'small-caption',
                                  -            'status-bar', true, 'font-size', 'font-style', 'font-weight',
                                  -            'font-family'
                                  -        ],
                                  -        'font-family': cssCommaList,
                                  -        'font-size': [
                                  -            'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large',
                                  -            'xx-large', 'larger', 'smaller', cssLength
                                  -        ],
                                  -        'font-size-adjust': ['none', cssNumber],
                                  -        'font-stretch': [
                                  -            'normal', 'wider', 'narrower', 'ultra-condensed',
                                  -            'extra-condensed', 'condensed', 'semi-condensed',
                                  -            'semi-expanded', 'expanded', 'extra-expanded'
                                  -        ],
                                  -        'font-style': [
                                  -            'normal', 'italic', 'oblique'
                                  -        ],
                                  -        'font-variant': [
                                  -            'normal', 'small-caps'
                                  -        ],
                                  -        'font-weight': [
                                  -            'normal', 'bold', 'bolder', 'lighter', cssNumber
                                  -        ],
                                  -        height: [cssLength, 'auto'],
                                  -        left: [cssLength, 'auto'],
                                  -        'letter-spacing': ['normal', cssLength],
                                  -        'line-height': ['normal', cssLineHeight],
                                  -        'list-style': [
                                  -            true, 'list-style-image', 'list-style-position', 'list-style-type'
                                  -        ],
                                  -        'list-style-image': ['none', cssUrl],
                                  -        'list-style-position': ['inside', 'outside'],
                                  -        'list-style-type': [
                                  -            'circle', 'disc', 'square', 'decimal', 'decimal-leading-zero',
                                  -            'lower-roman', 'upper-roman', 'lower-greek', 'lower-alpha',
                                  -            'lower-latin', 'upper-alpha', 'upper-latin', 'hebrew', 'katakana',
                                  -            'hiragana-iroha', 'katakana-oroha', 'none'
                                  -        ],
                                  -        margin: [4, cssMargin],
                                  -        'margin-bottom': cssMargin,
                                  -        'margin-left': cssMargin,
                                  -        'margin-right': cssMargin,
                                  -        'margin-top': cssMargin,
                                  -        'marker-offset': [cssLength, 'auto'],
                                  -        'max-height': [cssLength, 'none'],
                                  -        'max-width': [cssLength, 'none'],
                                  -        'min-height': cssLength,
                                  -        'min-width': cssLength,
                                  -        opacity: cssNumber,
                                  -        outline: [true, 'outline-color', 'outline-style', 'outline-width'],
                                  -        'outline-color': ['invert', cssColor],
                                  -        'outline-style': [
                                  -            'dashed', 'dotted', 'double', 'groove', 'inset', 'none',
                                  -            'outset', 'ridge', 'solid'
                                  -        ],
                                  -        'outline-width': cssWidth,
                                  -        overflow: cssOverflow,
                                  -        'overflow-x': cssOverflow,
                                  -        'overflow-y': cssOverflow,
                                  -        padding: [4, cssLength],
                                  -        'padding-bottom': cssLength,
                                  -        'padding-left': cssLength,
                                  -        'padding-right': cssLength,
                                  -        'padding-top': cssLength,
                                  -        'page-break-after': cssBreak,
                                  -        'page-break-before': cssBreak,
                                  -        position: ['absolute', 'fixed', 'relative', 'static'],
                                  -        quotes: [8, cssString],
                                  -        right: [cssLength, 'auto'],
                                  -        'table-layout': ['auto', 'fixed'],
                                  -        'text-align': ['center', 'justify', 'left', 'right'],
                                  -        'text-decoration': [
                                  -            'none', 'underline', 'overline', 'line-through', 'blink'
                                  -        ],
                                  -        'text-indent': cssLength,
                                  -        'text-shadow': ['none', 4, [cssColor, cssLength]],
                                  -        'text-transform': ['capitalize', 'uppercase', 'lowercase', 'none'],
                                  -        top: [cssLength, 'auto'],
                                  -        'unicode-bidi': ['normal', 'embed', 'bidi-override'],
                                  -        'vertical-align': [
                                  -            'baseline', 'bottom', 'sub', 'super', 'top', 'text-top', 'middle',
                                  -            'text-bottom', cssLength
                                  -        ],
                                  -        visibility: ['visible', 'hidden', 'collapse'],
                                  -        'white-space': [
                                  -            'normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'inherit'
                                  -        ],
                                  -        width: [cssLength, 'auto'],
                                  -        'word-spacing': ['normal', cssLength],
                                  -        'word-wrap': ['break-word', 'normal'],
                                  -        'z-index': ['auto', cssNumber]
                                  -    };
                                  -
                                  -    function styleAttribute() {
                                  -        var v;
                                  -        while (nexttoken.id === '*' || nexttoken.id === '#' ||
                                  -                nexttoken.value === '_') {
                                  -            if (!option.css) {
                                  -                warning("Unexpected '{a}'.", nexttoken, nexttoken.value);
                                  -            }
                                  -            advance();
                                  -        }
                                  -        if (nexttoken.id === '-') {
                                  -            if (!option.css) {
                                  -                warning("Unexpected '{a}'.", nexttoken, nexttoken.value);
                                  -            }
                                  -            advance('-');
                                  -            if (!nexttoken.identifier) {
                                  -                warning(
                                  -"Expected a non-standard style attribute and instead saw '{a}'.",
                                  -                    nexttoken, nexttoken.value);
                                  -            }
                                  -            advance();
                                  -            return cssAny;
                                  -        } else {
                                  -            if (!nexttoken.identifier) {
                                  -                warning("Excepted a style attribute, and instead saw '{a}'.",
                                  -                    nexttoken, nexttoken.value);
                                  -            } else {
                                  -                if (is_own(cssAttributeData, nexttoken.value)) {
                                  -                    v = cssAttributeData[nexttoken.value];
                                  -                } else {
                                  -                    v = cssAny;
                                  -                    if (!option.css) {
                                  -                        warning("Unrecognized style attribute '{a}'.",
                                  -                                nexttoken, nexttoken.value);
                                  -                    }
                                  -                }
                                  -            }
                                  -            advance();
                                  -            return v;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function styleValue(v) {
                                  -        var i = 0,
                                  -            n,
                                  -            once,
                                  -            match,
                                  -            round,
                                  -            start = 0,
                                  -            vi;
                                  -        switch (typeof v) {
                                  -        case 'function':
                                  -            return v();
                                  -        case 'string':
                                  -            if (nexttoken.identifier && nexttoken.value === v) {
                                  -                advance();
                                  -                return true;
                                  -            }
                                  -            return false;
                                  -        }
                                  -        for (;;) {
                                  -            if (i >= v.length) {
                                  -                return false;
                                  -            }
                                  -            vi = v[i];
                                  -            i += 1;
                                  -            if (vi === true) {
                                  -                break;
                                  -            } else if (typeof vi === 'number') {
                                  -                n = vi;
                                  -                vi = v[i];
                                  -                i += 1;
                                  -            } else {
                                  -                n = 1;
                                  -            }
                                  -            match = false;
                                  -            while (n > 0) {
                                  -                if (styleValue(vi)) {
                                  -                    match = true;
                                  -                    n -= 1;
                                  -                } else {
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (match) {
                                  -                return true;
                                  -            }
                                  -        }
                                  -        start = i;
                                  -        once = [];
                                  -        for (;;) {
                                  -            round = false;
                                  -            for (i = start; i < v.length; i += 1) {
                                  -                if (!once[i]) {
                                  -                    if (styleValue(cssAttributeData[v[i]])) {
                                  -                        match = true;
                                  -                        round = true;
                                  -                        once[i] = true;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -            if (!round) {
                                  -                return match;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function styleChild() {
                                  -        if (nexttoken.id === '(number)') {
                                  -            advance();
                                  -            if (nexttoken.value === 'n' && nexttoken.identifier) {
                                  -                adjacent();
                                  -                advance();
                                  -                if (nexttoken.id === '+') {
                                  -                    adjacent();
                                  -                    advance('+');
                                  -                    adjacent();
                                  -                    advance('(number)');
                                  -                }
                                  -            }
                                  -            return;
                                  -        } else {
                                  -            switch (nexttoken.value) {
                                  -            case 'odd':
                                  -            case 'even':
                                  -                if (nexttoken.identifier) {
                                  -                    advance();
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -        warning("Unexpected token '{a}'.", nexttoken, nexttoken.value);
                                  -    }
                                  -
                                  -    function substyle() {
                                  -        var v;
                                  -        for (;;) {
                                  -            if (nexttoken.id === '}' || nexttoken.id === '(end)' ||
                                  -                    xquote && nexttoken.id === xquote) {
                                  -                return;
                                  -            }
                                  -            while (nexttoken.id === ';') {
                                  -                warning("Misplaced ';'.");
                                  -                advance(';');
                                  -            }
                                  -            v = styleAttribute();
                                  -            advance(':');
                                  -            if (nexttoken.identifier && nexttoken.value === 'inherit') {
                                  -                advance();
                                  -            } else {
                                  -                if (!styleValue(v)) {
                                  -                    warning("Unexpected token '{a}'.", nexttoken,
                                  -                        nexttoken.value);
                                  -                    advance();
                                  -                }
                                  -            }
                                  -            if (nexttoken.id === '!') {
                                  -                advance('!');
                                  -                adjacent();
                                  -                if (nexttoken.identifier && nexttoken.value === 'important') {
                                  -                    advance();
                                  -                } else {
                                  -                    warning("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, 'important', nexttoken.value);
                                  -                }
                                  -            }
                                  -            if (nexttoken.id === '}' || nexttoken.id === xquote) {
                                  -                warning("Missing '{a}'.", nexttoken, ';');
                                  -            } else {
                                  -                advance(';');
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function styleSelector() {
                                  -        if (nexttoken.identifier) {
                                  -            if (!is_own(htmltag, option.cap ?
                                  -                    nexttoken.value.toLowerCase() : nexttoken.value)) {
                                  -                warning("Expected a tagName, and instead saw {a}.",
                                  -                    nexttoken, nexttoken.value);
                                  -            }
                                  -            advance();
                                  -        } else {
                                  -            switch (nexttoken.id) {
                                  -            case '>':
                                  -            case '+':
                                  -                advance();
                                  -                styleSelector();
                                  -                break;
                                  -            case ':':
                                  -                advance(':');
                                  -                switch (nexttoken.value) {
                                  -                case 'active':
                                  -                case 'after':
                                  -                case 'before':
                                  -                case 'checked':
                                  -                case 'disabled':
                                  -                case 'empty':
                                  -                case 'enabled':
                                  -                case 'first-child':
                                  -                case 'first-letter':
                                  -                case 'first-line':
                                  -                case 'first-of-type':
                                  -                case 'focus':
                                  -                case 'hover':
                                  -                case 'last-child':
                                  -                case 'last-of-type':
                                  -                case 'link':
                                  -                case 'only-of-type':
                                  -                case 'root':
                                  -                case 'target':
                                  -                case 'visited':
                                  -                    advance();
                                  -                    break;
                                  -                case 'lang':
                                  -                    advance();
                                  -                    advance('(');
                                  -                    if (!nexttoken.identifier) {
                                  -                        warning("Expected a lang code, and instead saw :{a}.",
                                  -                            nexttoken, nexttoken.value);
                                  -                    }
                                  -                    advance(')');
                                  -                    break;
                                  -                case 'nth-child':
                                  -                case 'nth-last-child':
                                  -                case 'nth-last-of-type':
                                  -                case 'nth-of-type':
                                  -                    advance();
                                  -                    advance('(');
                                  -                    styleChild();
                                  -                    advance(')');
                                  -                    break;
                                  -                case 'not':
                                  -                    advance();
                                  -                    advance('(');
                                  -                    if (nexttoken.id === ':' && peek(0).value === 'not') {
                                  -                        warning("Nested not.");
                                  -                    }
                                  -                    styleSelector();
                                  -                    advance(')');
                                  -                    break;
                                  -                default:
                                  -                    warning("Expected a pseudo, and instead saw :{a}.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                break;
                                  -            case '#':
                                  -                advance('#');
                                  -                if (!nexttoken.identifier) {
                                  -                    warning("Expected an id, and instead saw #{a}.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -                break;
                                  -            case '*':
                                  -                advance('*');
                                  -                break;
                                  -            case '.':
                                  -                advance('.');
                                  -                if (!nexttoken.identifier) {
                                  -                    warning("Expected a class, and instead saw #.{a}.",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -                break;
                                  -            case '[':
                                  -                advance('[');
                                  -                if (!nexttoken.identifier) {
                                  -                    warning("Expected an attribute, and instead saw [{a}].",
                                  -                        nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -                if (nexttoken.id === '=' || nexttoken.value === '~=' ||
                                  -                        nexttoken.value === '$=' ||
                                  -                        nexttoken.value === '|=' ||
                                  -                        nexttoken.id === '*=' ||
                                  -                        nexttoken.id === '^=') {
                                  -                    advance();
                                  -                    if (nexttoken.type !== '(string)') {
                                  -                        warning("Expected a string, and instead saw {a}.",
                                  -                            nexttoken, nexttoken.value);
                                  -                    }
                                  -                    advance();
                                  -                }
                                  -                advance(']');
                                  -                break;
                                  -            default:
                                  -                error("Expected a CSS selector, and instead saw {a}.",
                                  -                    nexttoken, nexttoken.value);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function stylePattern() {
                                  -        var name;
                                  -        if (nexttoken.id === '{') {
                                  -            warning("Expected a style pattern, and instead saw '{a}'.", nexttoken,
                                  -                nexttoken.id);
                                  -        } else if (nexttoken.id === '@') {
                                  -            advance('@');
                                  -            name = nexttoken.value;
                                  -            if (nexttoken.identifier && atrule[name] === true) {
                                  -                advance();
                                  -                return name;
                                  -            }
                                  -            warning("Expected an at-rule, and instead saw @{a}.", nexttoken, name);
                                  -        }
                                  -        for (;;) {
                                  -            styleSelector();
                                  -            if (nexttoken.id === '</' || nexttoken.id === '{' ||
                                  -                    nexttoken.id === '(end)') {
                                  -                return '';
                                  -            }
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function styles() {
                                  -        var i;
                                  -        while (nexttoken.id === '@') {
                                  -            i = peek();
                                  -            if (i.identifier && i.value === 'import') {
                                  -                advance('@');
                                  -                advance();
                                  -                if (!cssUrl()) {
                                  -                    warning("Expected '{a}' and instead saw '{b}'.", nexttoken,
                                  -                        'url', nexttoken.value);
                                  -                    advance();
                                  -                }
                                  -                advance(';');
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -        while (nexttoken.id !== '</' && nexttoken.id !== '(end)') {
                                  -            stylePattern();
                                  -            xmode = 'styleproperty';
                                  -            if (nexttoken.id === ';') {
                                  -                advance(';');
                                  -            } else {
                                  -                advance('{');
                                  -                substyle();
                                  -                xmode = 'style';
                                  -                advance('}');
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// HTML parsing.
                                  -
                                  -    function doBegin(n) {
                                  -        if (n !== 'html' && !option.fragment) {
                                  -            if (n === 'div' && option.adsafe) {
                                  -                error("ADSAFE: Use the fragment option.");
                                  -            } else {
                                  -                error("Expected '{a}' and instead saw '{b}'.",
                                  -                    token, 'html', n);
                                  -            }
                                  -        }
                                  -        if (option.adsafe) {
                                  -            if (n === 'html') {
                                  -                error(
                                  -"Currently, ADsafe does not operate on whole HTML documents. It operates on <div> fragments and .js files.", token);
                                  -            }
                                  -            if (option.fragment) {
                                  -                if (n !== 'div') {
                                  -                    error("ADsafe violation: Wrap the widget in a div.", token);
                                  -                }
                                  -            } else {
                                  -                error("Use the fragment option.", token);
                                  -            }
                                  -        }
                                  -        option.browser = true;
                                  -        assume();
                                  -    }
                                  -
                                  -    function doAttribute(n, a, v) {
                                  -        var u, x;
                                  -        if (a === 'id') {
                                  -            u = typeof v === 'string' ? v.toUpperCase() : '';
                                  -            if (ids[u] === true) {
                                  -                warning("Duplicate id='{a}'.", nexttoken, v);
                                  -            }
                                  -            if (!/^[A-Za-z][A-Za-z0-9._:\-]*$/.test(v)) {
                                  -                warning("Bad id: '{a}'.", nexttoken, v);
                                  -            } else if (option.adsafe) {
                                  -                if (adsafe_id) {
                                  -                    if (v.slice(0, adsafe_id.length) !== adsafe_id) {
                                  -                        warning("ADsafe violation: An id must have a '{a}' prefix",
                                  -                                nexttoken, adsafe_id);
                                  -                    } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) {
                                  -                        warning("ADSAFE violation: bad id.");
                                  -                    }
                                  -                } else {
                                  -                    adsafe_id = v;
                                  -                    if (!/^[A-Z]+_$/.test(v)) {
                                  -                        warning("ADSAFE violation: bad id.");
                                  -                    }
                                  -                }
                                  -            }
                                  -            x = v.search(dx);
                                  -            if (x >= 0) {
                                  -                warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a);
                                  -            }
                                  -            ids[u] = true;
                                  -        } else if (a === 'class' || a === 'type' || a === 'name') {
                                  -            x = v.search(qx);
                                  -            if (x >= 0) {
                                  -                warning("Unexpected character '{a}' in {b}.", token, v.charAt(x), a);
                                  -            }
                                  -            ids[u] = true;
                                  -        } else if (a === 'href' || a === 'background' ||
                                  -                a === 'content' || a === 'data' ||
                                  -                a.indexOf('src') >= 0 || a.indexOf('url') >= 0) {
                                  -            if (option.safe && ux.test(v)) {
                                  -                error("ADsafe URL violation.");
                                  -            }
                                  -            urls.push(v);
                                  -        } else if (a === 'for') {
                                  -            if (option.adsafe) {
                                  -                if (adsafe_id) {
                                  -                    if (v.slice(0, adsafe_id.length) !== adsafe_id) {
                                  -                        warning("ADsafe violation: An id must have a '{a}' prefix",
                                  -                                nexttoken, adsafe_id);
                                  -                    } else if (!/^[A-Z]+_[A-Z]+$/.test(v)) {
                                  -                        warning("ADSAFE violation: bad id.");
                                  -                    }
                                  -                } else {
                                  -                    warning("ADSAFE violation: bad id.");
                                  -                }
                                  -            }
                                  -        } else if (a === 'name') {
                                  -            if (option.adsafe && v.indexOf('_') >= 0) {
                                  -                warning("ADsafe name violation.");
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    function doTag(n, a) {
                                  -        var i, t = htmltag[n], x;
                                  -        src = false;
                                  -        if (!t) {
                                  -            error("Unrecognized tag '<{a}>'.",
                                  -                    nexttoken,
                                  -                    n === n.toLowerCase() ? n :
                                  -                        n + ' (capitalization error)');
                                  -        }
                                  -        if (stack.length > 0) {
                                  -            if (n === 'html') {
                                  -                error("Too many <html> tags.", token);
                                  -            }
                                  -            x = t.parent;
                                  -            if (x) {
                                  -                if (x.indexOf(' ' + stack[stack.length - 1].name + ' ') < 0) {
                                  -                    error("A '<{a}>' must be within '<{b}>'.",
                                  -                            token, n, x);
                                  -                }
                                  -            } else if (!option.adsafe && !option.fragment) {
                                  -                i = stack.length;
                                  -                do {
                                  -                    if (i <= 0) {
                                  -                        error("A '<{a}>' must be within '<{b}>'.",
                                  -                                token, n, 'body');
                                  -                    }
                                  -                    i -= 1;
                                  -                } while (stack[i].name !== 'body');
                                  -            }
                                  -        }
                                  -        switch (n) {
                                  -        case 'div':
                                  -            if (option.adsafe && stack.length === 1 && !adsafe_id) {
                                  -                warning("ADSAFE violation: missing ID_.");
                                  -            }
                                  -            break;
                                  -        case 'script':
                                  -            xmode = 'script';
                                  -            advance('>');
                                  -            indent = nexttoken.from;
                                  -            if (a.lang) {
                                  -                warning("lang is deprecated.", token);
                                  -            }
                                  -            if (option.adsafe && stack.length !== 1) {
                                  -                warning("ADsafe script placement violation.", token);
                                  -            }
                                  -            if (a.src) {
                                  -                if (option.adsafe && (!adsafe_may || !approved[a.src])) {
                                  -                    warning("ADsafe unapproved script source.", token);
                                  -                }
                                  -                if (a.type) {
                                  -                    warning("type is unnecessary.", token);
                                  -                }
                                  -            } else {
                                  -                if (adsafe_went) {
                                  -                    error("ADsafe script violation.", token);
                                  -                }
                                  -                statements('script');
                                  -            }
                                  -            xmode = 'html';
                                  -            advance('</');
                                  -            if (!nexttoken.identifier && nexttoken.value !== 'script') {
                                  -                warning("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, 'script', nexttoken.value);
                                  -            }
                                  -            advance();
                                  -            xmode = 'outer';
                                  -            break;
                                  -        case 'style':
                                  -            xmode = 'style';
                                  -            advance('>');
                                  -            styles();
                                  -            xmode = 'html';
                                  -            advance('</');
                                  -            if (!nexttoken.identifier && nexttoken.value !== 'style') {
                                  -                warning("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, 'style', nexttoken.value);
                                  -            }
                                  -            advance();
                                  -            xmode = 'outer';
                                  -            break;
                                  -        case 'input':
                                  -            switch (a.type) {
                                  -            case 'radio':
                                  -            case 'checkbox':
                                  -            case 'button':
                                  -            case 'reset':
                                  -            case 'submit':
                                  -                break;
                                  -            case 'text':
                                  -            case 'file':
                                  -            case 'password':
                                  -            case 'file':
                                  -            case 'hidden':
                                  -            case 'image':
                                  -                if (option.adsafe && a.autocomplete !== 'off') {
                                  -                    warning("ADsafe autocomplete violation.");
                                  -                }
                                  -                break;
                                  -            default:
                                  -                warning("Bad input type.");
                                  -            }
                                  -            break;
                                  -        case 'applet':
                                  -        case 'body':
                                  -        case 'embed':
                                  -        case 'frame':
                                  -        case 'frameset':
                                  -        case 'head':
                                  -        case 'iframe':
                                  -        case 'noembed':
                                  -        case 'noframes':
                                  -        case 'object':
                                  -        case 'param':
                                  -            if (option.adsafe) {
                                  -                warning("ADsafe violation: Disallowed tag: " + n);
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function closetag(n) {
                                  -        return '</' + n + '>';
                                  -    }
                                  -
                                  -    function html() {
                                  -        var a, attributes, e, n, q, t, v, w = option.white, wmode;
                                  -        xmode = 'html';
                                  -        xquote = '';
                                  -        stack = null;
                                  -        for (;;) {
                                  -            switch (nexttoken.value) {
                                  -            case '<':
                                  -                xmode = 'html';
                                  -                advance('<');
                                  -                attributes = {};
                                  -                t = nexttoken;
                                  -                if (!t.identifier) {
                                  -                    warning("Bad identifier {a}.", t, t.value);
                                  -                }
                                  -                n = t.value;
                                  -                if (option.cap) {
                                  -                    n = n.toLowerCase();
                                  -                }
                                  -                t.name = n;
                                  -                advance();
                                  -                if (!stack) {
                                  -                    stack = [];
                                  -                    doBegin(n);
                                  -                }
                                  -                v = htmltag[n];
                                  -                if (typeof v !== 'object') {
                                  -                    error("Unrecognized tag '<{a}>'.", t, n);
                                  -                }
                                  -                e = v.empty;
                                  -                t.type = n;
                                  -                for (;;) {
                                  -                    if (nexttoken.id === '/') {
                                  -                        advance('/');
                                  -                        if (nexttoken.id !== '>') {
                                  -                            warning("Expected '{a}' and instead saw '{b}'.",
                                  -                                    nexttoken, '>', nexttoken.value);
                                  -                        }
                                  -                        break;
                                  -                    }
                                  -                    if (nexttoken.id && nexttoken.id.substr(0, 1) === '>') {
                                  -                        break;
                                  -                    }
                                  -                    if (!nexttoken.identifier) {
                                  -                        if (nexttoken.id === '(end)' || nexttoken.id === '(error)') {
                                  -                            error("Missing '>'.", nexttoken);
                                  -                        }
                                  -                        warning("Bad identifier.");
                                  -                    }
                                  -                    option.white = true;
                                  -                    nonadjacent(token, nexttoken);
                                  -                    a = nexttoken.value;
                                  -                    option.white = w;
                                  -                    advance();
                                  -                    if (!option.cap && a !== a.toLowerCase()) {
                                  -                        warning("Attribute '{a}' not all lower case.", nexttoken, a);
                                  -                    }
                                  -                    a = a.toLowerCase();
                                  -                    xquote = '';
                                  -                    if (is_own(attributes, a)) {
                                  -                        warning("Attribute '{a}' repeated.", nexttoken, a);
                                  -                    }
                                  -                    if (a.slice(0, 2) === 'on') {
                                  -                        if (!option.on) {
                                  -                            warning("Avoid HTML event handlers.");
                                  -                        }
                                  -                        xmode = 'scriptstring';
                                  -                        advance('=');
                                  -                        q = nexttoken.id;
                                  -                        if (q !== '"' && q !== "'") {
                                  -                            error("Missing quote.");
                                  -                        }
                                  -                        xquote = q;
                                  -                        wmode = option.white;
                                  -                        option.white = false;
                                  -                        advance(q);
                                  -                        statements('on');
                                  -                        option.white = wmode;
                                  -                        if (nexttoken.id !== q) {
                                  -                            error("Missing close quote on script attribute.");
                                  -                        }
                                  -                        xmode = 'html';
                                  -                        xquote = '';
                                  -                        advance(q);
                                  -                        v = false;
                                  -                    } else if (a === 'style') {
                                  -                        xmode = 'scriptstring';
                                  -                        advance('=');
                                  -                        q = nexttoken.id;
                                  -                        if (q !== '"' && q !== "'") {
                                  -                            error("Missing quote.");
                                  -                        }
                                  -                        xmode = 'styleproperty';
                                  -                        xquote = q;
                                  -                        advance(q);
                                  -                        substyle();
                                  -                        xmode = 'html';
                                  -                        xquote = '';
                                  -                        advance(q);
                                  -                        v = false;
                                  -                    } else {
                                  -                        if (nexttoken.id === '=') {
                                  -                            advance('=');
                                  -                            v = nexttoken.value;
                                  -                            if (!nexttoken.identifier &&
                                  -                                    nexttoken.id !== '"' &&
                                  -                                    nexttoken.id !== '\'' &&
                                  -                                    nexttoken.type !== '(string)' &&
                                  -                                    nexttoken.type !== '(number)' &&
                                  -                                    nexttoken.type !== '(color)') {
                                  -                                warning("Expected an attribute value and instead saw '{a}'.", token, a);
                                  -                            }
                                  -                            advance();
                                  -                        } else {
                                  -                            v = true;
                                  -                        }
                                  -                    }
                                  -                    attributes[a] = v;
                                  -                    doAttribute(n, a, v);
                                  -                }
                                  -                doTag(n, attributes);
                                  -                if (!e) {
                                  -                    stack.push(t);
                                  -                }
                                  -                xmode = 'outer';
                                  -                advance('>');
                                  -                break;
                                  -            case '</':
                                  -                xmode = 'html';
                                  -                advance('</');
                                  -                if (!nexttoken.identifier) {
                                  -                    warning("Bad identifier.");
                                  -                }
                                  -                n = nexttoken.value;
                                  -                if (option.cap) {
                                  -                    n = n.toLowerCase();
                                  -                }
                                  -                advance();
                                  -                if (!stack) {
                                  -                    error("Unexpected '{a}'.", nexttoken, closetag(n));
                                  -                }
                                  -                t = stack.pop();
                                  -                if (!t) {
                                  -                    error("Unexpected '{a}'.", nexttoken, closetag(n));
                                  -                }
                                  -                if (t.name !== n) {
                                  -                    error("Expected '{a}' and instead saw '{b}'.",
                                  -                            nexttoken, closetag(t.name), closetag(n));
                                  -                }
                                  -                if (nexttoken.id !== '>') {
                                  -                    error("Missing '{a}'.", nexttoken, '>');
                                  -                }
                                  -                xmode = 'outer';
                                  -                advance('>');
                                  -                break;
                                  -            case '<!':
                                  -                if (option.safe) {
                                  -                    warning("ADsafe HTML violation.");
                                  -                }
                                  -                xmode = 'html';
                                  -                for (;;) {
                                  -                    advance();
                                  -                    if (nexttoken.id === '>' || nexttoken.id === '(end)') {
                                  -                        break;
                                  -                    }
                                  -                    if (nexttoken.value.indexOf('--') >= 0) {
                                  -                        error("Unexpected --.");
                                  -                    }
                                  -                    if (nexttoken.value.indexOf('<') >= 0) {
                                  -                        error("Unexpected <.");
                                  -                    }
                                  -                    if (nexttoken.value.indexOf('>') >= 0) {
                                  -                        error("Unexpected >.");
                                  -                    }
                                  -                }
                                  -                xmode = 'outer';
                                  -                advance('>');
                                  -                break;
                                  -            case '(end)':
                                  -                return;
                                  -            default:
                                  -                if (nexttoken.id === '(end)') {
                                  -                    error("Missing '{a}'.", nexttoken,
                                  -                            '</' + stack[stack.length - 1].value + '>');
                                  -                } else {
                                  -                    advance();
                                  -                }
                                  -            }
                                  -            if (stack && stack.length === 0 && (option.adsafe ||
                                  -                    !option.fragment || nexttoken.id === '(end)')) {
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (nexttoken.id !== '(end)') {
                                  -            error("Unexpected material after the end.");
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// Build the syntax table by declaring the syntactic elements of the language.
                                  -
                                  -    type('(number)', function () {
                                  -        return this;
                                  -    });
                                  -    type('(string)', function () {
                                  -        return this;
                                  -    });
                                  -
                                  -    syntax['(identifier)'] = {
                                  -        type: '(identifier)',
                                  -        lbp: 0,
                                  -        identifier: true,
                                  -        nud: function () {
                                  -            var v = this.value,
                                  -                s = scope[v],
                                  -                f;
                                  -            if (typeof s === 'function') {
                                  -
                                  -// Protection against accidental inheritance.
                                  -
                                  -                s = undefined;
                                  -            } else if (typeof s === 'boolean') {
                                  -                f = funct;
                                  -                funct = functions[0];
                                  -                addlabel(v, 'var');
                                  -                s = funct;
                                  -                funct = f;
                                  -            }
                                  -
                                  -// The name is in scope and defined in the current function.
                                  -
                                  -            if (funct === s) {
                                  -
                                  -//      Change 'unused' to 'var', and reject labels.
                                  -
                                  -                switch (funct[v]) {
                                  -                case 'unused':
                                  -                    funct[v] = 'var';
                                  -                    break;
                                  -                case 'unction':
                                  -                    funct[v] = 'function';
                                  -                    this['function'] = true;
                                  -                    break;
                                  -                case 'function':
                                  -                    this['function'] = true;
                                  -                    break;
                                  -                case 'label':
                                  -                    warning("'{a}' is a statement label.", token, v);
                                  -                    break;
                                  -                }
                                  -
                                  -// The name is not defined in the function.  If we are in the global scope,
                                  -// then we have an undefined variable.
                                  -
                                  -            } else if (funct['(global)']) {
                                  -                if (option.undef && predefined[v] !== 'boolean') {
                                  -                    warning("'{a}' is not defined.", token, v);
                                  -                }
                                  -                note_implied(token);
                                  -
                                  -// If the name is already defined in the current
                                  -// function, but not as outer, then there is a scope error.
                                  -
                                  -            } else {
                                  -                switch (funct[v]) {
                                  -                case 'closure':
                                  -                case 'function':
                                  -                case 'var':
                                  -                case 'unused':
                                  -                    warning("'{a}' used out of scope.", token, v);
                                  -                    break;
                                  -                case 'label':
                                  -                    warning("'{a}' is a statement label.", token, v);
                                  -                    break;
                                  -                case 'outer':
                                  -                case 'global':
                                  -                    break;
                                  -                default:
                                  -
                                  -// If the name is defined in an outer function, make an outer entry, and if
                                  -// it was unused, make it var.
                                  -
                                  -                    if (s === true) {
                                  -                        funct[v] = true;
                                  -                    } else if (s === null) {
                                  -                        warning("'{a}' is not allowed.", token, v);
                                  -                        note_implied(token);
                                  -                    } else if (typeof s !== 'object') {
                                  -                        if (option.undef) {
                                  -                            warning("'{a}' is not defined.", token, v);
                                  -                        } else {
                                  -                            funct[v] = true;
                                  -                        }
                                  -                        note_implied(token);
                                  -                    } else {
                                  -                        switch (s[v]) {
                                  -                        case 'function':
                                  -                        case 'unction':
                                  -                            this['function'] = true;
                                  -                            s[v] = 'closure';
                                  -                            funct[v] = s['(global)'] ? 'global' : 'outer';
                                  -                            break;
                                  -                        case 'var':
                                  -                        case 'unused':
                                  -                            s[v] = 'closure';
                                  -                            funct[v] = s['(global)'] ? 'global' : 'outer';
                                  -                            break;
                                  -                        case 'closure':
                                  -                        case 'parameter':
                                  -                            funct[v] = s['(global)'] ? 'global' : 'outer';
                                  -                            break;
                                  -                        case 'label':
                                  -                            warning("'{a}' is a statement label.", token, v);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            return this;
                                  -        },
                                  -        led: function () {
                                  -            error("Expected an operator and instead saw '{a}'.",
                                  -                nexttoken, nexttoken.value);
                                  -        }
                                  -    };
                                  -
                                  -    type('(regexp)', function () {
                                  -        return this;
                                  -    });
                                  -
                                  -
                                  -// ECMAScript parser
                                  -
                                  -    delim('(endline)');
                                  -    delim('(begin)');
                                  -    delim('(end)').reach = true;
                                  -    delim('</').reach = true;
                                  -    delim('<!');
                                  -    delim('<!--');
                                  -    delim('-->');
                                  -    delim('(error)').reach = true;
                                  -    delim('}').reach = true;
                                  -    delim(')');
                                  -    delim(']');
                                  -    delim('"').reach = true;
                                  -    delim("'").reach = true;
                                  -    delim(';');
                                  -    delim(':').reach = true;
                                  -    delim(',');
                                  -    delim('#');
                                  -    delim('@');
                                  -    reserve('else');
                                  -    reserve('case').reach = true;
                                  -    reserve('catch');
                                  -    reserve('default').reach = true;
                                  -    reserve('finally');
                                  -    reservevar('arguments', function (x) {
                                  -        if (strict_mode && funct['(global)']) {
                                  -            warning("Strict violation.", x);
                                  -        } else if (option.safe) {
                                  -            warning("ADsafe violation.", x);
                                  -        }
                                  -    });
                                  -    reservevar('eval', function (x) {
                                  -        if (option.safe) {
                                  -            warning("ADsafe violation.", x);
                                  -        }
                                  -    });
                                  -    reservevar('false');
                                  -    reservevar('Infinity');
                                  -    reservevar('NaN');
                                  -    reservevar('null');
                                  -    reservevar('this', function (x) {
                                  -        if (strict_mode && ((funct['(statement)'] &&
                                  -                funct['(name)'].charAt(0) > 'Z') || funct['(global)'])) {
                                  -            warning("Strict violation.", x);
                                  -        } else if (option.safe) {
                                  -            warning("ADsafe violation.", x);
                                  -        }
                                  -    });
                                  -    reservevar('true');
                                  -    reservevar('undefined');
                                  -    assignop('=', 'assign', 20);
                                  -    assignop('+=', 'assignadd', 20);
                                  -    assignop('-=', 'assignsub', 20);
                                  -    assignop('*=', 'assignmult', 20);
                                  -    assignop('/=', 'assigndiv', 20).nud = function () {
                                  -        error("A regular expression literal can be confused with '/='.");
                                  -    };
                                  -    assignop('%=', 'assignmod', 20);
                                  -    bitwiseassignop('&=', 'assignbitand', 20);
                                  -    bitwiseassignop('|=', 'assignbitor', 20);
                                  -    bitwiseassignop('^=', 'assignbitxor', 20);
                                  -    bitwiseassignop('<<=', 'assignshiftleft', 20);
                                  -    bitwiseassignop('>>=', 'assignshiftright', 20);
                                  -    bitwiseassignop('>>>=', 'assignshiftrightunsigned', 20);
                                  -    infix('?', function (left, that) {
                                  -        that.left = left;
                                  -        that.right = parse(10);
                                  -        advance(':');
                                  -        that['else'] = parse(10);
                                  -        return that;
                                  -    }, 30);
                                  -
                                  -    infix('||', 'or', 40);
                                  -    infix('&&', 'and', 50);
                                  -    bitwise('|', 'bitor', 70);
                                  -    bitwise('^', 'bitxor', 80);
                                  -    bitwise('&', 'bitand', 90);
                                  -    relation('==', function (left, right) {
                                  -        if (option.eqeqeq) {
                                  -            warning("Expected '{a}' and instead saw '{b}'.",
                                  -                    this, '===', '==');
                                  -        } else if (isPoorRelation(left)) {
                                  -            warning("Use '{a}' to compare with '{b}'.",
                                  -                this, '===', left.value);
                                  -        } else if (isPoorRelation(right)) {
                                  -            warning("Use '{a}' to compare with '{b}'.",
                                  -                this, '===', right.value);
                                  -        }
                                  -        return this;
                                  -    });
                                  -    relation('===');
                                  -    relation('!=', function (left, right) {
                                  -        if (option.eqeqeq) {
                                  -            warning("Expected '{a}' and instead saw '{b}'.",
                                  -                    this, '!==', '!=');
                                  -        } else if (isPoorRelation(left)) {
                                  -            warning("Use '{a}' to compare with '{b}'.",
                                  -                    this, '!==', left.value);
                                  -        } else if (isPoorRelation(right)) {
                                  -            warning("Use '{a}' to compare with '{b}'.",
                                  -                    this, '!==', right.value);
                                  -        }
                                  -        return this;
                                  -    });
                                  -    relation('!==');
                                  -    relation('<');
                                  -    relation('>');
                                  -    relation('<=');
                                  -    relation('>=');
                                  -    bitwise('<<', 'shiftleft', 120);
                                  -    bitwise('>>', 'shiftright', 120);
                                  -    bitwise('>>>', 'shiftrightunsigned', 120);
                                  -    infix('in', 'in', 120);
                                  -    infix('instanceof', 'instanceof', 120);
                                  -    infix('+', function (left, that) {
                                  -        var right = parse(130);
                                  -        if (left && right && left.id === '(string)' && right.id === '(string)') {
                                  -            left.value += right.value;
                                  -            left.character = right.character;
                                  -            if (jx.test(left.value)) {
                                  -                warning("JavaScript URL.", left);
                                  -            }
                                  -            return left;
                                  -        }
                                  -        that.left = left;
                                  -        that.right = right;
                                  -        return that;
                                  -    }, 130);
                                  -    prefix('+', 'num');
                                  -    prefix('+++', function () {
                                  -        warning("Confusing pluses.");
                                  -        this.right = parse(150);
                                  -        this.arity = 'unary';
                                  -        return this;
                                  -    });
                                  -    infix('+++', function (left) {
                                  -        warning("Confusing pluses.");
                                  -        this.left = left;
                                  -        this.right = parse(130);
                                  -        return this;
                                  -    }, 130);
                                  -    infix('-', 'sub', 130);
                                  -    prefix('-', 'neg');
                                  -    prefix('---', function () {
                                  -        warning("Confusing minuses.");
                                  -        this.right = parse(150);
                                  -        this.arity = 'unary';
                                  -        return this;
                                  -    });
                                  -    infix('---', function (left) {
                                  -        warning("Confusing minuses.");
                                  -        this.left = left;
                                  -        this.right = parse(130);
                                  -        return this;
                                  -    }, 130);
                                  -    infix('*', 'mult', 140);
                                  -    infix('/', 'div', 140);
                                  -    infix('%', 'mod', 140);
                                  -
                                  -    suffix('++', 'postinc');
                                  -    prefix('++', 'preinc');
                                  -    syntax['++'].exps = true;
                                  -
                                  -    suffix('--', 'postdec');
                                  -    prefix('--', 'predec');
                                  -    syntax['--'].exps = true;
                                  -    prefix('delete', function () {
                                  -        var p = parse(0);
                                  -        if (!p || (p.id !== '.' && p.id !== '[')) {
                                  -            warning("Variables should not be deleted.");
                                  -        }
                                  -        this.first = p;
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -
                                  -    prefix('~', function () {
                                  -        if (option.bitwise) {
                                  -            warning("Unexpected '{a}'.", this, '~');
                                  -        }
                                  -        parse(150);
                                  -        return this;
                                  -    });
                                  -    prefix('!', function () {
                                  -        this.right = parse(150);
                                  -        this.arity = 'unary';
                                  -        if (bang[this.right.id] === true) {
                                  -            warning("Confusing use of '{a}'.", this, '!');
                                  -        }
                                  -        return this;
                                  -    });
                                  -    prefix('typeof', 'typeof');
                                  -    prefix('new', function () {
                                  -        var c = parse(155), i;
                                  -        if (c && c.id !== 'function') {
                                  -            if (c.identifier) {
                                  -                c['new'] = true;
                                  -                switch (c.value) {
                                  -                case 'Object':
                                  -                    warning("Use the object literal notation {}.", token);
                                  -                    break;
                                  -                case 'Array':
                                  -                    if (nexttoken.id !== '(') {
                                  -                        warning("Use the array literal notation [].", token);
                                  -                    } else {
                                  -                        advance('(');
                                  -                        if (nexttoken.id === ')') {
                                  -                            warning("Use the array literal notation [].", token);
                                  -                        } else {
                                  -                            i = parse(0);
                                  -                            c.dimension = i;
                                  -                            if ((i.id === '(number)' && /[.+\-Ee]/.test(i.value)) ||
                                  -                                    (i.id === '-' && !i.right) ||
                                  -                                    i.id === '(string)' || i.id === '[' ||
                                  -                                    i.id === '{' || i.id === 'true' ||
                                  -                                    i.id === 'false' ||
                                  -                                    i.id === 'null' || i.id === 'undefined' ||
                                  -                                    i.id === 'Infinity') {
                                  -                                warning("Use the array literal notation [].", token);
                                  -                            }
                                  -                            if (nexttoken.id !== ')') {
                                  -                                error("Use the array literal notation [].", token);
                                  -                            }
                                  -                        }
                                  -                        advance(')');
                                  -                    }
                                  -                    this.first = c;
                                  -                    return this;
                                  -                case 'Number':
                                  -                case 'String':
                                  -                case 'Boolean':
                                  -                case 'Math':
                                  -                case 'JSON':
                                  -                    warning("Do not use {a} as a constructor.", token, c.value);
                                  -                    break;
                                  -                case 'Function':
                                  -                    if (!option.evil) {
                                  -                        warning("The Function constructor is eval.");
                                  -                    }
                                  -                    break;
                                  -                case 'Date':
                                  -                case 'RegExp':
                                  -                    break;
                                  -                default:
                                  -                    if (c.id !== 'function') {
                                  -                        i = c.value.substr(0, 1);
                                  -                        if (option.newcap && (i < 'A' || i > 'Z')) {
                                  -                            warning(
                                  -                    "A constructor name should start with an uppercase letter.",
                                  -                                token);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                if (c.id !== '.' && c.id !== '[' && c.id !== '(') {
                                  -                    warning("Bad constructor.", token);
                                  -                }
                                  -            }
                                  -        } else {
                                  -            warning("Weird construction. Delete 'new'.", this);
                                  -        }
                                  -        adjacent(token, nexttoken);
                                  -        if (nexttoken.id !== '(') {
                                  -            warning("Missing '()' invoking a constructor.");
                                  -        }
                                  -        this.first = c;
                                  -        return this;
                                  -    });
                                  -    syntax['new'].exps = true;
                                  -
                                  -    infix('.', function (left, that) {
                                  -        adjacent(prevtoken, token);
                                  -        nobreak();
                                  -        var m = identifier();
                                  -        if (typeof m === 'string') {
                                  -            countMember(m);
                                  -        }
                                  -        that.left = left;
                                  -        that.right = m;
                                  -        if (left && left.value === 'arguments' &&
                                  -                (m === 'callee' || m === 'caller')) {
                                  -            warning("Avoid arguments.{a}.", left, m);
                                  -        } else if (!option.evil && left && left.value === 'document' &&
                                  -                (m === 'write' || m === 'writeln')) {
                                  -            warning("document.write can be a form of eval.", left);
                                  -        } else if (option.adsafe) {
                                  -            if (left && left.value === 'ADSAFE') {
                                  -                if (m === 'id' || m === 'lib') {
                                  -                    warning("ADsafe violation.", that);
                                  -                } else if (m === 'go') {
                                  -                    if (xmode !== 'script') {
                                  -                        warning("ADsafe violation.", that);
                                  -                    } else if (adsafe_went || nexttoken.id !== '(' ||
                                  -                            peek(0).id !== '(string)' ||
                                  -                            peek(0).value !== adsafe_id ||
                                  -                            peek(1).id !== ',') {
                                  -                        error("ADsafe violation: go.", that);
                                  -                    }
                                  -                    adsafe_went = true;
                                  -                    adsafe_may = false;
                                  -                }
                                  -            }
                                  -        }
                                  -        if (!option.evil && (m === 'eval' || m === 'execScript')) {
                                  -            warning('eval is evil.');
                                  -        } else if (option.safe) {
                                  -            for (;;) {
                                  -                if (banned[m] === true) {
                                  -                    warning("ADsafe restricted word '{a}'.", token, m);
                                  -                }
                                  -                if (typeof predefined[left.value] !== 'boolean' ||
                                  -                        nexttoken.id === '(') {
                                  -                    break;
                                  -                }
                                  -                if (standard_member[m] === true) {
                                  -                    if (nexttoken.id === '.') {
                                  -                        warning("ADsafe violation.", that);
                                  -                    }
                                  -                    break;
                                  -                }
                                  -                if (nexttoken.id !== '.') {
                                  -                    warning("ADsafe violation.", that);
                                  -                    break;
                                  -                }
                                  -                advance('.');
                                  -                token.left = that;
                                  -                token.right = m;
                                  -                that = token;
                                  -                m = identifier();
                                  -                if (typeof m === 'string') {
                                  -                    countMember(m);
                                  -                }
                                  -            }
                                  -        }
                                  -        return that;
                                  -    }, 160, true);
                                  -
                                  -    infix('(', function (left, that) {
                                  -        if (prevtoken.id !== '}' && prevtoken.id !== ')') {
                                  -            nobreak(prevtoken, token);
                                  -        }
                                  -        nospace();
                                  -        if (option.immed && !left.immed && left.id === 'function') {
                                  -            warning("Wrap an immediate function invocation in parentheses " +
                                  -                "to assist the reader in understanding that the expression " +
                                  -                "is the result of a function, and not the function itself.");
                                  -        }
                                  -        var n = 0,
                                  -            p = [];
                                  -        if (left) {
                                  -            if (left.type === '(identifier)') {
                                  -                if (left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)) {
                                  -                    if (left.value !== 'Number' && left.value !== 'String' &&
                                  -                            left.value !== 'Boolean' &&
                                  -                            left.value !== 'Date') {
                                  -                        if (left.value === 'Math') {
                                  -                            warning("Math is not a function.", left);
                                  -                        } else if (option.newcap) {
                                  -                            warning(
                                  -"Missing 'new' prefix when invoking a constructor.", left);
                                  -                        }
                                  -                    }
                                  -                }
                                  -            } else if (left.id === '.') {
                                  -                if (option.safe && left.left.value === 'Math' &&
                                  -                        left.right === 'random') {
                                  -                    warning("ADsafe violation.", left);
                                  -                }
                                  -            }
                                  -        }
                                  -        if (nexttoken.id !== ')') {
                                  -            for (;;) {
                                  -                p[p.length] = parse(10);
                                  -                n += 1;
                                  -                if (nexttoken.id !== ',') {
                                  -                    break;
                                  -                }
                                  -                comma();
                                  -            }
                                  -        }
                                  -        advance(')');
                                  -        nospace(prevtoken, token);
                                  -        if (typeof left === 'object') {
                                  -            if (left.value === 'parseInt' && n === 1) {
                                  -                warning("Missing radix parameter.", left);
                                  -            }
                                  -            if (!option.evil) {
                                  -                if (left.value === 'eval' || left.value === 'Function' ||
                                  -                        left.value === 'execScript') {
                                  -                    warning("eval is evil.", left);
                                  -                } else if (p[0] && p[0].id === '(string)' &&
                                  -                       (left.value === 'setTimeout' ||
                                  -                        left.value === 'setInterval')) {
                                  -                    warning(
                                  -    "Implied eval is evil. Pass a function instead of a string.", left);
                                  -                }
                                  -            }
                                  -            if (!left.identifier && left.id !== '.' && left.id !== '[' &&
                                  -                    left.id !== '(' && left.id !== '&&' && left.id !== '||' &&
                                  -                    left.id !== '?') {
                                  -                warning("Bad invocation.", left);
                                  -            }
                                  -        }
                                  -        that.left = left;
                                  -        return that;
                                  -    }, 155, true).exps = true;
                                  -
                                  -    prefix('(', function () {
                                  -        nospace();
                                  -        if (nexttoken.id === 'function') {
                                  -            nexttoken.immed = true;
                                  -        }
                                  -        var v = parse(0);
                                  -        advance(')', this);
                                  -        nospace(prevtoken, token);
                                  -        if (option.immed && v.id === 'function') {
                                  -            if (nexttoken.id === '(') {
                                  -                warning(
                                  -"Move the invocation into the parens that contain the function.", nexttoken);
                                  -            } else {
                                  -                warning(
                                  -"Do not wrap function literals in parens unless they are to be immediately invoked.",
                                  -                        this);
                                  -            }
                                  -        }
                                  -        return v;
                                  -    });
                                  -
                                  -    infix('[', function (left, that) {
                                  -        nobreak(prevtoken, token);
                                  -        nospace();
                                  -        var e = parse(0), s;
                                  -        if (e && e.type === '(string)') {
                                  -            if (option.safe && banned[e.value] === true) {
                                  -                warning("ADsafe restricted word '{a}'.", that, e.value);
                                  -            } else if (!option.evil &&
                                  -                    (e.value === 'eval' || e.value === 'execScript')) {
                                  -                warning("eval is evil.", that);
                                  -            } else if (option.safe &&
                                  -                    (e.value.charAt(0) === '_' || e.value.charAt(0) === '-')) {
                                  -                warning("ADsafe restricted subscript '{a}'.", that, e.value);
                                  -            }
                                  -            countMember(e.value);
                                  -            if (!option.sub && ix.test(e.value)) {
                                  -                s = syntax[e.value];
                                  -                if (!s || !s.reserved) {
                                  -                    warning("['{a}'] is better written in dot notation.",
                                  -                            e, e.value);
                                  -                }
                                  -            }
                                  -        } else if (!e || e.type !== '(number)' || e.value < 0) {
                                  -            if (option.safe) {
                                  -                warning('ADsafe subscripting.');
                                  -            }
                                  -        }
                                  -        advance(']', that);
                                  -        nospace(prevtoken, token);
                                  -        that.left = left;
                                  -        that.right = e;
                                  -        return that;
                                  -    }, 160, true);
                                  -
                                  -    prefix('[', function () {
                                  -        var b = token.line !== nexttoken.line;
                                  -        this.first = [];
                                  -        if (b) {
                                  -            indent += option.indent;
                                  -            if (nexttoken.from === indent + option.indent) {
                                  -                indent += option.indent;
                                  -            }
                                  -        }
                                  -        while (nexttoken.id !== '(end)') {
                                  -            while (nexttoken.id === ',') {
                                  -                warning("Extra comma.");
                                  -                advance(',');
                                  -            }
                                  -            if (nexttoken.id === ']') {
                                  -                break;
                                  -            }
                                  -            if (b && token.line !== nexttoken.line) {
                                  -                indentation();
                                  -            }
                                  -            this.first.push(parse(10));
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -                if (nexttoken.id === ']' && !option.es5) {
                                  -                    warning("Extra comma.", token);
                                  -                    break;
                                  -                }
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -        if (b) {
                                  -            indent -= option.indent;
                                  -            indentation();
                                  -        }
                                  -        advance(']', this);
                                  -        return this;
                                  -    }, 160);
                                  -
                                  -
                                  -    function property_name() {
                                  -        var id = optionalidentifier(true);
                                  -        if (!id) {
                                  -            if (nexttoken.id === '(string)') {
                                  -                id = nexttoken.value;
                                  -                if (option.adsafe &&
                                  -                        (id.charAt(0) === '_' ||
                                  -                         id.charAt(id.length - 1) === '_')) {
                                  -                    warning("Unexpected {a} in '{b}'.", token,
                                  -                        "dangling '_'", id);
                                  -                }
                                  -                advance();
                                  -            } else if (nexttoken.id === '(number)') {
                                  -                id = nexttoken.value.toString();
                                  -                advance();
                                  -            }
                                  -        }
                                  -        return id;
                                  -    }
                                  -
                                  -
                                  -    function functionparams() {
                                  -        var i, t = nexttoken, p = [];
                                  -        advance('(');
                                  -        nospace();
                                  -        if (nexttoken.id === ')') {
                                  -            advance(')');
                                  -            nospace(prevtoken, token);
                                  -            return;
                                  -        }
                                  -        for (;;) {
                                  -            i = identifier();
                                  -            p.push(i);
                                  -            addlabel(i, 'parameter');
                                  -            if (nexttoken.id === ',') {
                                  -                comma();
                                  -            } else {
                                  -                advance(')', t);
                                  -                nospace(prevtoken, token);
                                  -                return p;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -
                                  -    function doFunction(i, statement) {
                                  -        var f, s = scope;
                                  -        scope = Object.create(s);
                                  -        funct = {
                                  -            '(name)'     : i || '"' + anonname + '"',
                                  -            '(line)'     : nexttoken.line,
                                  -            '(context)'  : funct,
                                  -            '(breakage)' : 0,
                                  -            '(loopage)'  : 0,
                                  -            '(scope)'    : scope,
                                  -            '(statement)': statement
                                  -        };
                                  -        f = funct;
                                  -        token.funct = funct;
                                  -        functions.push(funct);
                                  -        if (i) {
                                  -            addlabel(i, 'function');
                                  -        }
                                  -        funct['(params)'] = functionparams();
                                  -
                                  -        block(false);
                                  -        scope = s;
                                  -        funct['(last)'] = token.line;
                                  -        funct = funct['(context)'];
                                  -        return f;
                                  -    }
                                  -
                                  -
                                  -    (function (x) {
                                  -        x.nud = function () {
                                  -            var b, f, i, j, p, seen = {}, t;
                                  -            b = token.line !== nexttoken.line;
                                  -            if (b) {
                                  -                indent += option.indent;
                                  -                if (nexttoken.from === indent + option.indent) {
                                  -                    indent += option.indent;
                                  -                }
                                  -            }
                                  -            for (;;) {
                                  -                if (nexttoken.id === '}') {
                                  -                    break;
                                  -                }
                                  -                if (b) {
                                  -                    indentation();
                                  -                }
                                  -                if (nexttoken.value === 'get' && peek().id !== ':') {
                                  -                    advance('get');
                                  -                    if (!option.es5) {
                                  -                        error("get/set are ES5 features.");
                                  -                    }
                                  -                    i = property_name();
                                  -                    if (!i) {
                                  -                        error("Missing property name.");
                                  -                    }
                                  -                    t = nexttoken;
                                  -                    adjacent(token, nexttoken);
                                  -                    f = doFunction(i);
                                  -                    if (funct['(loopage)']) {
                                  -                        warning("Don't make functions within a loop.", t);
                                  -                    }
                                  -                    p = f['(params)'];
                                  -                    if (p) {
                                  -                        warning("Unexpected parameter '{a}' in get {b} function.", t, p[0], i);
                                  -                    }
                                  -                    adjacent(token, nexttoken);
                                  -                    advance(',');
                                  -                    indentation();
                                  -                    advance('set');
                                  -                    j = property_name();
                                  -                    if (i !== j) {
                                  -                        error("Expected {a} and instead saw {b}.", token, i, j);
                                  -                    }
                                  -                    t = nexttoken;
                                  -                    adjacent(token, nexttoken);
                                  -                    f = doFunction(i);
                                  -                    p = f['(params)'];
                                  -                    if (!p || p.length !== 1 || p[0] !== 'value') {
                                  -                        warning("Expected (value) in set {a} function.", t, i);
                                  -                    }
                                  -                } else {
                                  -                    i = property_name();
                                  -                    if (typeof i !== 'string') {
                                  -                        break;
                                  -                    }
                                  -                    advance(':');
                                  -                    nonadjacent(token, nexttoken);
                                  -                    parse(10);
                                  -                }
                                  -                if (seen[i] === true) {
                                  -                    warning("Duplicate member '{a}'.", nexttoken, i);
                                  -                }
                                  -                seen[i] = true;
                                  -                countMember(i);
                                  -                if (nexttoken.id === ',') {
                                  -                    comma();
                                  -                    if (nexttoken.id === ',') {
                                  -                        warning("Extra comma.", token);
                                  -                    } else if (nexttoken.id === '}' && !option.es5) {
                                  -                        warning("Extra comma.", token);
                                  -                    }
                                  -                } else {
                                  -                    break;
                                  -                }
                                  -            }
                                  -            if (b) {
                                  -                indent -= option.indent;
                                  -                indentation();
                                  -            }
                                  -            advance('}', this);
                                  -            return this;
                                  -        };
                                  -        x.fud = function () {
                                  -            error("Expected to see a statement and instead saw a block.", token);
                                  -        };
                                  -    }(delim('{')));
                                  -
                                  -
                                  -    var varstatement = function varstatement(prefix) {
                                  -
                                  -// JavaScript does not have block scope. It only has function scope. So,
                                  -// declaring a variable in a block can have unexpected consequences.
                                  -
                                  -        var id, name, value;
                                  -
                                  -        if (funct['(onevar)'] && option.onevar) {
                                  -            warning("Too many var statements.");
                                  -        } else if (!funct['(global)']) {
                                  -            funct['(onevar)'] = true;
                                  -        }
                                  -        this.first = [];
                                  -        for (;;) {
                                  -            nonadjacent(token, nexttoken);
                                  -            id = identifier();
                                  -            if (funct['(global)'] && predefined[id] === false) {
                                  -                warning("Redefinition of '{a}'.", token, id);
                                  -            }
                                  -            addlabel(id, 'unused');
                                  -            if (prefix) {
                                  -                break;
                                  -            }
                                  -            name = token;
                                  -            this.first.push(token);
                                  -            if (nexttoken.id === '=') {
                                  -                nonadjacent(token, nexttoken);
                                  -                advance('=');
                                  -                nonadjacent(token, nexttoken);
                                  -                if (nexttoken.id === 'undefined') {
                                  -                    warning("It is not necessary to initialize '{a}' to 'undefined'.", token, id);
                                  -                }
                                  -                if (peek(0).id === '=' && nexttoken.identifier) {
                                  -                    error("Variable {a} was not declared correctly.",
                                  -                            nexttoken, nexttoken.value);
                                  -                }
                                  -                value = parse(0);
                                  -                name.first = value;
                                  -            }
                                  -            if (nexttoken.id !== ',') {
                                  -                break;
                                  -            }
                                  -            comma();
                                  -        }
                                  -        return this;
                                  -    };
                                  -
                                  -
                                  -    stmt('var', varstatement).exps = true;
                                  -
                                  -
                                  -    blockstmt('function', function () {
                                  -        if (inblock) {
                                  -            warning(
                                  -"Function statements cannot be placed in blocks. Use a function expression or move the statement to the top of the outer function.", token);
                                  -
                                  -        }
                                  -        var i = identifier();
                                  -        adjacent(token, nexttoken);
                                  -        addlabel(i, 'unction');
                                  -        doFunction(i, true);
                                  -        if (nexttoken.id === '(' && nexttoken.line === token.line) {
                                  -            error(
                                  -"Function statements are not invocable. Wrap the whole function invocation in parens.");
                                  -        }
                                  -        return this;
                                  -    });
                                  -
                                  -    prefix('function', function () {
                                  -        var i = optionalidentifier();
                                  -        if (i) {
                                  -            adjacent(token, nexttoken);
                                  -        } else {
                                  -            nonadjacent(token, nexttoken);
                                  -        }
                                  -        doFunction(i);
                                  -        if (funct['(loopage)']) {
                                  -            warning("Don't make functions within a loop.");
                                  -        }
                                  -        return this;
                                  -    });
                                  -
                                  -    blockstmt('if', function () {
                                  -        var t = nexttoken;
                                  -        advance('(');
                                  -        nonadjacent(this, t);
                                  -        nospace();
                                  -        parse(20);
                                  -        if (nexttoken.id === '=') {
                                  -            warning("Expected a conditional expression and instead saw an assignment.");
                                  -            advance('=');
                                  -            parse(20);
                                  -        }
                                  -        advance(')', t);
                                  -        nospace(prevtoken, token);
                                  -        block(true);
                                  -        if (nexttoken.id === 'else') {
                                  -            nonadjacent(token, nexttoken);
                                  -            advance('else');
                                  -            if (nexttoken.id === 'if' || nexttoken.id === 'switch') {
                                  -                statement(true);
                                  -            } else {
                                  -                block(true);
                                  -            }
                                  -        }
                                  -        return this;
                                  -    });
                                  -
                                  -    blockstmt('try', function () {
                                  -        var b, e, s;
                                  -        if (option.adsafe) {
                                  -            warning("ADsafe try violation.", this);
                                  -        }
                                  -        block(false);
                                  -        if (nexttoken.id === 'catch') {
                                  -            advance('catch');
                                  -            nonadjacent(token, nexttoken);
                                  -            advance('(');
                                  -            s = scope;
                                  -            scope = Object.create(s);
                                  -            e = nexttoken.value;
                                  -            if (nexttoken.type !== '(identifier)') {
                                  -                warning("Expected an identifier and instead saw '{a}'.",
                                  -                    nexttoken, e);
                                  -            } else {
                                  -                addlabel(e, 'exception');
                                  -            }
                                  -            advance();
                                  -            advance(')');
                                  -            block(false);
                                  -            b = true;
                                  -            scope = s;
                                  -        }
                                  -        if (nexttoken.id === 'finally') {
                                  -            advance('finally');
                                  -            block(false);
                                  -            return;
                                  -        } else if (!b) {
                                  -            error("Expected '{a}' and instead saw '{b}'.",
                                  -                    nexttoken, 'catch', nexttoken.value);
                                  -        }
                                  -        return this;
                                  -    });
                                  -
                                  -    blockstmt('while', function () {
                                  -        var t = nexttoken;
                                  -        funct['(breakage)'] += 1;
                                  -        funct['(loopage)'] += 1;
                                  -        advance('(');
                                  -        nonadjacent(this, t);
                                  -        nospace();
                                  -        parse(20);
                                  -        if (nexttoken.id === '=') {
                                  -            warning("Expected a conditional expression and instead saw an assignment.");
                                  -            advance('=');
                                  -            parse(20);
                                  -        }
                                  -        advance(')', t);
                                  -        nospace(prevtoken, token);
                                  -        block(true);
                                  -        funct['(breakage)'] -= 1;
                                  -        funct['(loopage)'] -= 1;
                                  -        return this;
                                  -    }).labelled = true;
                                  -
                                  -    reserve('with');
                                  -
                                  -    blockstmt('switch', function () {
                                  -        var t = nexttoken,
                                  -            g = false;
                                  -        funct['(breakage)'] += 1;
                                  -        advance('(');
                                  -        nonadjacent(this, t);
                                  -        nospace();
                                  -        this.condition = parse(20);
                                  -        advance(')', t);
                                  -        nospace(prevtoken, token);
                                  -        nonadjacent(token, nexttoken);
                                  -        t = nexttoken;
                                  -        advance('{');
                                  -        nonadjacent(token, nexttoken);
                                  -        indent += option.indent;
                                  -        this.cases = [];
                                  -        for (;;) {
                                  -            switch (nexttoken.id) {
                                  -            case 'case':
                                  -                switch (funct['(verb)']) {
                                  -                case 'break':
                                  -                case 'case':
                                  -                case 'continue':
                                  -                case 'return':
                                  -                case 'switch':
                                  -                case 'throw':
                                  -                    break;
                                  -                default:
                                  -                    warning(
                                  -                        "Expected a 'break' statement before 'case'.",
                                  -                        token);
                                  -                }
                                  -                indentation(-option.indent);
                                  -                advance('case');
                                  -                this.cases.push(parse(20));
                                  -                g = true;
                                  -                advance(':');
                                  -                funct['(verb)'] = 'case';
                                  -                break;
                                  -            case 'default':
                                  -                switch (funct['(verb)']) {
                                  -                case 'break':
                                  -                case 'continue':
                                  -                case 'return':
                                  -                case 'throw':
                                  -                    break;
                                  -                default:
                                  -                    warning(
                                  -                        "Expected a 'break' statement before 'default'.",
                                  -                        token);
                                  -                }
                                  -                indentation(-option.indent);
                                  -                advance('default');
                                  -                g = true;
                                  -                advance(':');
                                  -                break;
                                  -            case '}':
                                  -                indent -= option.indent;
                                  -                indentation();
                                  -                advance('}', t);
                                  -                if (this.cases.length === 1 || this.condition.id === 'true' ||
                                  -                        this.condition.id === 'false') {
                                  -                    warning("This 'switch' should be an 'if'.", this);
                                  -                }
                                  -                funct['(breakage)'] -= 1;
                                  -                funct['(verb)'] = undefined;
                                  -                return;
                                  -            case '(end)':
                                  -                error("Missing '{a}'.", nexttoken, '}');
                                  -                return;
                                  -            default:
                                  -                if (g) {
                                  -                    switch (token.id) {
                                  -                    case ',':
                                  -                        error("Each value should have its own case label.");
                                  -                        return;
                                  -                    case ':':
                                  -                        statements();
                                  -                        break;
                                  -                    default:
                                  -                        error("Missing ':' on a case clause.", token);
                                  -                    }
                                  -                } else {
                                  -                    error("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, 'case', nexttoken.value);
                                  -                }
                                  -            }
                                  -        }
                                  -    }).labelled = true;
                                  -
                                  -    stmt('debugger', function () {
                                  -        if (!option.debug) {
                                  -            warning("All 'debugger' statements should be removed.");
                                  -        }
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -    (function () {
                                  -        var x = stmt('do', function () {
                                  -            funct['(breakage)'] += 1;
                                  -            funct['(loopage)'] += 1;
                                  -            this.first = block(true);
                                  -            advance('while');
                                  -            var t = nexttoken;
                                  -            nonadjacent(token, t);
                                  -            advance('(');
                                  -            nospace();
                                  -            parse(20);
                                  -            if (nexttoken.id === '=') {
                                  -                warning("Expected a conditional expression and instead saw an assignment.");
                                  -                advance('=');
                                  -                parse(20);
                                  -            }
                                  -            advance(')', t);
                                  -            nospace(prevtoken, token);
                                  -            funct['(breakage)'] -= 1;
                                  -            funct['(loopage)'] -= 1;
                                  -            return this;
                                  -        });
                                  -        x.labelled = true;
                                  -        x.exps = true;
                                  -    }());
                                  -
                                  -    blockstmt('for', function () {
                                  -        var f = option.forin, s, t = nexttoken;
                                  -        funct['(breakage)'] += 1;
                                  -        funct['(loopage)'] += 1;
                                  -        advance('(');
                                  -        nonadjacent(this, t);
                                  -        nospace();
                                  -        if (peek(nexttoken.id === 'var' ? 1 : 0).id === 'in') {
                                  -            if (nexttoken.id === 'var') {
                                  -                advance('var');
                                  -                varstatement(true);
                                  -            } else {
                                  -                switch (funct[nexttoken.value]) {
                                  -                case 'unused':
                                  -                    funct[nexttoken.value] = 'var';
                                  -                    break;
                                  -                case 'var':
                                  -                    break;
                                  -                default:
                                  -                    warning("Bad for in variable '{a}'.",
                                  -                            nexttoken, nexttoken.value);
                                  -                }
                                  -                advance();
                                  -            }
                                  -            advance('in');
                                  -            parse(20);
                                  -            advance(')', t);
                                  -            s = block(true);
                                  -            if (!f && (s.length > 1 || typeof s[0] !== 'object' ||
                                  -                    s[0].value !== 'if')) {
                                  -                warning("The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype.", this);
                                  -            }
                                  -            funct['(breakage)'] -= 1;
                                  -            funct['(loopage)'] -= 1;
                                  -            return this;
                                  -        } else {
                                  -            if (nexttoken.id !== ';') {
                                  -                if (nexttoken.id === 'var') {
                                  -                    advance('var');
                                  -                    varstatement();
                                  -                } else {
                                  -                    for (;;) {
                                  -                        parse(0, 'for');
                                  -                        if (nexttoken.id !== ',') {
                                  -                            break;
                                  -                        }
                                  -                        comma();
                                  -                    }
                                  -                }
                                  -            }
                                  -            nolinebreak(token);
                                  -            advance(';');
                                  -            if (nexttoken.id !== ';') {
                                  -                parse(20);
                                  -                if (nexttoken.id === '=') {
                                  -                    warning("Expected a conditional expression and instead saw an assignment.");
                                  -                    advance('=');
                                  -                    parse(20);
                                  -                }
                                  -            }
                                  -            nolinebreak(token);
                                  -            advance(';');
                                  -            if (nexttoken.id === ';') {
                                  -                error("Expected '{a}' and instead saw '{b}'.",
                                  -                        nexttoken, ')', ';');
                                  -            }
                                  -            if (nexttoken.id !== ')') {
                                  -                for (;;) {
                                  -                    parse(0, 'for');
                                  -                    if (nexttoken.id !== ',') {
                                  -                        break;
                                  -                    }
                                  -                    comma();
                                  -                }
                                  -            }
                                  -            advance(')', t);
                                  -            nospace(prevtoken, token);
                                  -            block(true);
                                  -            funct['(breakage)'] -= 1;
                                  -            funct['(loopage)'] -= 1;
                                  -            return this;
                                  -        }
                                  -    }).labelled = true;
                                  -
                                  -
                                  -    stmt('break', function () {
                                  -        var v = nexttoken.value;
                                  -        if (funct['(breakage)'] === 0) {
                                  -            warning("Unexpected '{a}'.", nexttoken, this.value);
                                  -        }
                                  -        nolinebreak(this);
                                  -        if (nexttoken.id !== ';') {
                                  -            if (token.line === nexttoken.line) {
                                  -                if (funct[v] !== 'label') {
                                  -                    warning("'{a}' is not a statement label.", nexttoken, v);
                                  -                } else if (scope[v] !== funct) {
                                  -                    warning("'{a}' is out of scope.", nexttoken, v);
                                  -                }
                                  -                this.first = nexttoken;
                                  -                advance();
                                  -            }
                                  -        }
                                  -        reachable('break');
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -
                                  -    stmt('continue', function () {
                                  -        var v = nexttoken.value;
                                  -        if (funct['(breakage)'] === 0) {
                                  -            warning("Unexpected '{a}'.", nexttoken, this.value);
                                  -        }
                                  -        nolinebreak(this);
                                  -        if (nexttoken.id !== ';') {
                                  -            if (token.line === nexttoken.line) {
                                  -                if (funct[v] !== 'label') {
                                  -                    warning("'{a}' is not a statement label.", nexttoken, v);
                                  -                } else if (scope[v] !== funct) {
                                  -                    warning("'{a}' is out of scope.", nexttoken, v);
                                  -                }
                                  -                this.first = nexttoken;
                                  -                advance();
                                  -            }
                                  -        } else if (!funct['(loopage)']) {
                                  -            warning("Unexpected '{a}'.", nexttoken, this.value);
                                  -        }
                                  -        reachable('continue');
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -
                                  -    stmt('return', function () {
                                  -        nolinebreak(this);
                                  -        if (nexttoken.id === '(regexp)') {
                                  -            warning("Wrap the /regexp/ literal in parens to disambiguate the slash operator.");
                                  -        }
                                  -        if (nexttoken.id !== ';' && !nexttoken.reach) {
                                  -            nonadjacent(token, nexttoken);
                                  -            this.first = parse(20);
                                  -        }
                                  -        reachable('return');
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -
                                  -    stmt('throw', function () {
                                  -        nolinebreak(this);
                                  -        nonadjacent(token, nexttoken);
                                  -        this.first = parse(20);
                                  -        reachable('throw');
                                  -        return this;
                                  -    }).exps = true;
                                  -
                                  -    reserve('void');
                                  -
                                  -//  Superfluous reserved words
                                  -
                                  -    reserve('class');
                                  -    reserve('const');
                                  -    reserve('enum');
                                  -    reserve('export');
                                  -    reserve('extends');
                                  -    reserve('import');
                                  -    reserve('super');
                                  -
                                  -    reserve('let');
                                  -    reserve('yield');
                                  -    reserve('implements');
                                  -    reserve('interface');
                                  -    reserve('package');
                                  -    reserve('private');
                                  -    reserve('protected');
                                  -    reserve('public');
                                  -    reserve('static');
                                  -
                                  -
                                  -// Parse JSON
                                  -
                                  -    function jsonValue() {
                                  -
                                  -        function jsonObject() {
                                  -            var o = {}, t = nexttoken;
                                  -            advance('{');
                                  -            if (nexttoken.id !== '}') {
                                  -                for (;;) {
                                  -                    if (nexttoken.id === '(end)') {
                                  -                        error("Missing '}' to match '{' from line {a}.",
                                  -                                nexttoken, t.line);
                                  -                    } else if (nexttoken.id === '}') {
                                  -                        warning("Unexpected comma.", token);
                                  -                        break;
                                  -                    } else if (nexttoken.id === ',') {
                                  -                        error("Unexpected comma.", nexttoken);
                                  -                    } else if (nexttoken.id !== '(string)') {
                                  -                        warning("Expected a string and instead saw {a}.",
                                  -                                nexttoken, nexttoken.value);
                                  -                    }
                                  -                    if (o[nexttoken.value] === true) {
                                  -                        warning("Duplicate key '{a}'.",
                                  -                                nexttoken, nexttoken.value);
                                  -                    } else if (nexttoken.value === '__proto__') {
                                  -                        warning("Stupid key '{a}'.",
                                  -                                nexttoken, nexttoken.value);
                                  -                    } else {
                                  -                        o[nexttoken.value] = true;
                                  -                    }
                                  -                    advance();
                                  -                    advance(':');
                                  -                    jsonValue();
                                  -                    if (nexttoken.id !== ',') {
                                  -                        break;
                                  -                    }
                                  -                    advance(',');
                                  -                }
                                  -            }
                                  -            advance('}');
                                  -        }
                                  -
                                  -        function jsonArray() {
                                  -            var t = nexttoken;
                                  -            advance('[');
                                  -            if (nexttoken.id !== ']') {
                                  -                for (;;) {
                                  -                    if (nexttoken.id === '(end)') {
                                  -                        error("Missing ']' to match '[' from line {a}.",
                                  -                                nexttoken, t.line);
                                  -                    } else if (nexttoken.id === ']') {
                                  -                        warning("Unexpected comma.", token);
                                  -                        break;
                                  -                    } else if (nexttoken.id === ',') {
                                  -                        error("Unexpected comma.", nexttoken);
                                  -                    }
                                  -                    jsonValue();
                                  -                    if (nexttoken.id !== ',') {
                                  -                        break;
                                  -                    }
                                  -                    advance(',');
                                  -                }
                                  -            }
                                  -            advance(']');
                                  -        }
                                  -
                                  -        switch (nexttoken.id) {
                                  -        case '{':
                                  -            jsonObject();
                                  -            break;
                                  -        case '[':
                                  -            jsonArray();
                                  -            break;
                                  -        case 'true':
                                  -        case 'false':
                                  -        case 'null':
                                  -        case '(number)':
                                  -        case '(string)':
                                  -            advance();
                                  -            break;
                                  -        case '-':
                                  -            advance('-');
                                  -            if (token.character !== nexttoken.from) {
                                  -                warning("Unexpected space after '-'.", token);
                                  -            }
                                  -            adjacent(token, nexttoken);
                                  -            advance('(number)');
                                  -            break;
                                  -        default:
                                  -            error("Expected a JSON value.", nexttoken);
                                  -        }
                                  -    }
                                  -
                                  -
                                  -// The actual JSLINT function itself.
                                  -
                                  -    var itself = function (s, o) {
                                  -        var a, i;
                                  -        JSLINT.errors = [];
                                  -        predefined = Object.create(standard);
                                  -        if (o) {
                                  -            a = o.predef;
                                  -            if (a instanceof Array) {
                                  -                for (i = 0; i < a.length; i += 1) {
                                  -                    predefined[a[i]] = true;
                                  -                }
                                  -            }
                                  -            if (o.adsafe) {
                                  -                o.safe = true;
                                  -            }
                                  -            if (o.safe) {
                                  -                o.browser =
                                  -                o.css     =
                                  -                o.debug   =
                                  -                o.devel   =
                                  -                o.evil    =
                                  -                o.forin   =
                                  -                o.on      =
                                  -                o.rhino   =
                                  -                o.windows =
                                  -                o.sub     =
                                  -                o.widget  = false;
                                  -
                                  -                o.eqeqeq  =
                                  -                o.nomen   =
                                  -                o.safe    =
                                  -                o.strict  =
                                  -                o.undef   = true;
                                  -
                                  -                predefined.Date =
                                  -                predefined['eval'] =
                                  -                predefined.Function =
                                  -                predefined.Object = null;
                                  -
                                  -                predefined.ADSAFE =
                                  -                predefined.lib = false;
                                  -            }
                                  -            option = o;
                                  -        } else {
                                  -            option = {};
                                  -        }
                                  -        option.indent = option.indent || 4;
                                  -        option.maxerr = option.maxerr || 50;
                                  -        adsafe_id = '';
                                  -        adsafe_may = false;
                                  -        adsafe_went = false;
                                  -        approved = {};
                                  -        if (option.approved) {
                                  -            for (i = 0; i < option.approved.length; i += 1) {
                                  -                approved[option.approved[i]] = option.approved[i];
                                  -            }
                                  -        } else {
                                  -            approved.test = 'test';
                                  -        }
                                  -        tab = '';
                                  -        for (i = 0; i < option.indent; i += 1) {
                                  -            tab += ' ';
                                  -        }
                                  -        indent = 1;
                                  -        global = Object.create(predefined);
                                  -        scope = global;
                                  -        funct = {
                                  -            '(global)': true,
                                  -            '(name)': '(global)',
                                  -            '(scope)': scope,
                                  -            '(breakage)': 0,
                                  -            '(loopage)': 0
                                  -        };
                                  -        functions = [funct];
                                  -        ids = {};
                                  -        urls = [];
                                  -        src = false;
                                  -        xmode = false;
                                  -        stack = null;
                                  -        member = {};
                                  -        membersOnly = null;
                                  -        implied = {};
                                  -        inblock = false;
                                  -        lookahead = [];
                                  -        jsonmode = false;
                                  -        warnings = 0;
                                  -        lex.init(s);
                                  -        prereg = true;
                                  -        strict_mode = false;
                                  -
                                  -        prevtoken = token = nexttoken = syntax['(begin)'];
                                  -        assume();
                                  -
                                  -        try {
                                  -            advance();
                                  -            if (nexttoken.value.charAt(0) === '<') {
                                  -                html();
                                  -                if (option.adsafe && !adsafe_went) {
                                  -                    warning("ADsafe violation: Missing ADSAFE.go.", this);
                                  -                }
                                  -            } else {
                                  -                switch (nexttoken.id) {
                                  -                case '{':
                                  -                case '[':
                                  -                    option.laxbreak = true;
                                  -                    jsonmode = true;
                                  -                    jsonValue();
                                  -                    break;
                                  -                case '@':
                                  -                case '*':
                                  -                case '#':
                                  -                case '.':
                                  -                case ':':
                                  -                    xmode = 'style';
                                  -                    advance();
                                  -                    if (token.id !== '@' || !nexttoken.identifier ||
                                  -                            nexttoken.value !== 'charset' || token.line !== 1 ||
                                  -                            token.from !== 1) {
                                  -                        error("A css file should begin with @charset 'UTF-8';");
                                  -                    }
                                  -                    advance();
                                  -                    if (nexttoken.type !== '(string)' &&
                                  -                            nexttoken.value !== 'UTF-8') {
                                  -                        error("A css file should begin with @charset 'UTF-8';");
                                  -                    }
                                  -                    advance();
                                  -                    advance(';');
                                  -                    styles();
                                  -                    break;
                                  -
                                  -                default:
                                  -                    if (option.adsafe && option.fragment) {
                                  -                        error("Expected '{a}' and instead saw '{b}'.",
                                  -                            nexttoken, '<div>', nexttoken.value);
                                  -                    }
                                  -                    statements('lib');
                                  -                }
                                  -            }
                                  -            advance('(end)');
                                  -        } catch (e) {
                                  -            if (e) {
                                  -                JSLINT.errors.push({
                                  -                    reason    : e.message,
                                  -                    line      : e.line || nexttoken.line,
                                  -                    character : e.character || nexttoken.from
                                  -                }, null);
                                  -            }
                                  -        }
                                  -        return JSLINT.errors.length === 0;
                                  -    };
                                  -
                                  -    function is_array(o) {
                                  -        return Object.prototype.toString.apply(o) === '[object Array]';
                                  -    }
                                  -
                                  -    function to_array(o) {
                                  -        var a = [], k;
                                  -        for (k in o) {
                                  -            if (is_own(o, k)) {
                                  -                a.push(k);
                                  -            }
                                  -        }
                                  -        return a;
                                  -    }
                                  -
                                  -
                                  -// Data summary.
                                  -
                                  -    itself.data = function () {
                                  -
                                  -        var data = {functions: []}, fu, globals, implieds = [], f, i, j,
                                  -            members = [], n, unused = [], v;
                                  -        if (itself.errors.length) {
                                  -            data.errors = itself.errors;
                                  -        }
                                  -
                                  -        if (jsonmode) {
                                  -            data.json = true;
                                  -        }
                                  -
                                  -        for (n in implied) {
                                  -            if (is_own(implied, n)) {
                                  -                implieds.push({
                                  -                    name: n,
                                  -                    line: implied[n]
                                  -                });
                                  -            }
                                  -        }
                                  -        if (implieds.length > 0) {
                                  -            data.implieds = implieds;
                                  -        }
                                  -
                                  -        if (urls.length > 0) {
                                  -            data.urls = urls;
                                  -        }
                                  -
                                  -        globals = to_array(scope);
                                  -        if (globals.length > 0) {
                                  -            data.globals = globals;
                                  -        }
                                  -
                                  -        for (i = 1; i < functions.length; i += 1) {
                                  -            f = functions[i];
                                  -            fu = {};
                                  -            for (j = 0; j < functionicity.length; j += 1) {
                                  -                fu[functionicity[j]] = [];
                                  -            }
                                  -            for (n in f) {
                                  -                if (is_own(f, n) && n.charAt(0) !== '(') {
                                  -                    v = f[n];
                                  -                    if (v === 'unction') {
                                  -                        v = 'unused';
                                  -                    }
                                  -                    if (is_array(fu[v])) {
                                  -                        fu[v].push(n);
                                  -                        if (v === 'unused') {
                                  -                            unused.push({
                                  -                                name: n,
                                  -                                line: f['(line)'],
                                  -                                'function': f['(name)']
                                  -                            });
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -            for (j = 0; j < functionicity.length; j += 1) {
                                  -                if (fu[functionicity[j]].length === 0) {
                                  -                    delete fu[functionicity[j]];
                                  -                }
                                  -            }
                                  -            fu.name = f['(name)'];
                                  -            fu.param = f['(params)'];
                                  -            fu.line = f['(line)'];
                                  -            fu.last = f['(last)'];
                                  -            data.functions.push(fu);
                                  -        }
                                  -
                                  -        if (unused.length > 0) {
                                  -            data.unused = unused;
                                  -        }
                                  -
                                  -        members = [];
                                  -        for (n in member) {
                                  -            if (typeof member[n] === 'number') {
                                  -                data.member = member;
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        return data;
                                  -    };
                                  -
                                  -    itself.report = function (option) {
                                  -        var data = itself.data();
                                  -
                                  -        var a = [], c, e, err, f, i, k, l, m = '', n, o = [], s;
                                  -
                                  -        function detail(h, array) {
                                  -            var b, i, singularity;
                                  -            if (array) {
                                  -                o.push('<div><i>' + h + '</i> ');
                                  -                array = array.sort();
                                  -                for (i = 0; i < array.length; i += 1) {
                                  -                    if (array[i] !== singularity) {
                                  -                        singularity = array[i];
                                  -                        o.push((b ? ', ' : '') + singularity);
                                  -                        b = true;
                                  -                    }
                                  -                }
                                  -                o.push('</div>');
                                  -            }
                                  -        }
                                  -
                                  -
                                  -        if (data.errors || data.implieds || data.unused) {
                                  -            err = true;
                                  -            o.push('<div id=errors><i>Error:</i>');
                                  -            if (data.errors) {
                                  -                for (i = 0; i < data.errors.length; i += 1) {
                                  -                    c = data.errors[i];
                                  -                    if (c) {
                                  -                        e = c.evidence || '';
                                  -                        o.push('<p>Problem' + (isFinite(c.line) ? ' at line ' +
                                  -                                c.line + ' character ' + c.character : '') +
                                  -                                ': ' + c.reason.entityify() +
                                  -                                '</p><p class=evidence>' +
                                  -                                (e && (e.length > 80 ? e.slice(0, 77) + '...' :
                                  -                                e).entityify()) + '</p>');
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            if (data.implieds) {
                                  -                s = [];
                                  -                for (i = 0; i < data.implieds.length; i += 1) {
                                  -                    s[i] = '<code>' + data.implieds[i].name + '</code>&nbsp;<i>' +
                                  -                        data.implieds[i].line + '</i>';
                                  -                }
                                  -                o.push('<p><i>Implied global:</i> ' + s.join(', ') + '</p>');
                                  -            }
                                  -
                                  -            if (data.unused) {
                                  -                s = [];
                                  -                for (i = 0; i < data.unused.length; i += 1) {
                                  -                    s[i] = '<code><u>' + data.unused[i].name + '</u></code>&nbsp;<i>' +
                                  -                        data.unused[i].line + '</i> <code>' +
                                  -                        data.unused[i]['function'] + '</code>';
                                  -                }
                                  -                o.push('<p><i>Unused variable:</i> ' + s.join(', ') + '</p>');
                                  -            }
                                  -            if (data.json) {
                                  -                o.push('<p>JSON: bad.</p>');
                                  -            }
                                  -            o.push('</div>');
                                  -        }
                                  -
                                  -        if (!option) {
                                  -
                                  -            o.push('<br><div id=functions>');
                                  -
                                  -            if (data.urls) {
                                  -                detail("URLs<br>", data.urls, '<br>');
                                  -            }
                                  -
                                  -            if (xmode === 'style') {
                                  -                o.push('<p>CSS.</p>');
                                  -            } else if (data.json && !err) {
                                  -                o.push('<p>JSON: good.</p>');
                                  -            } else if (data.globals) {
                                  -                o.push('<div><i>Global</i> ' +
                                  -                        data.globals.sort().join(', ') + '</div>');
                                  -            } else {
                                  -                o.push('<div><i>No new global variables introduced.</i></div>');
                                  -            }
                                  -
                                  -            for (i = 0; i < data.functions.length; i += 1) {
                                  -                f = data.functions[i];
                                  -
                                  -                o.push('<br><div class=function><i>' + f.line + '-' +
                                  -                        f.last + '</i> ' + (f.name || '') + '(' +
                                  -                        (f.param ? f.param.join(', ') : '') + ')</div>');
                                  -                detail('<big><b>Unused</b></big>', f.unused);
                                  -                detail('Closure', f.closure);
                                  -                detail('Variable', f['var']);
                                  -                detail('Exception', f.exception);
                                  -                detail('Outer', f.outer);
                                  -                detail('Global', f.global);
                                  -                detail('Label', f.label);
                                  -            }
                                  -
                                  -            if (data.member) {
                                  -                a = to_array(data.member);
                                  -                if (a.length) {
                                  -                    a = a.sort();
                                  -                    m = '<br><pre id=members>/*members ';
                                  -                    l = 10;
                                  -                    for (i = 0; i < a.length; i += 1) {
                                  -                        k = a[i];
                                  -                        n = k.name();
                                  -                        if (l + n.length > 72) {
                                  -                            o.push(m + '<br>');
                                  -                            m = '    ';
                                  -                            l = 1;
                                  -                        }
                                  -                        l += n.length + 2;
                                  -                        if (data.member[k] === 1) {
                                  -                            n = '<i>' + n + '</i>';
                                  -                        }
                                  -                        if (i < a.length - 1) {
                                  -                            n += ', ';
                                  -                        }
                                  -                        m += n;
                                  -                    }
                                  -                    o.push(m + '<br>*/</pre>');
                                  -                }
                                  -                o.push('</div>');
                                  -            }
                                  -        }
                                  -        return o.join('');
                                  -    };
                                  -    itself.jslint = itself;
                                  -
                                  -    itself.edition = '2010-10-26';
                                  -
                                  -    return itself;
                                  -
                                  -}());
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint2.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint2.js
                                  deleted file mode 100644
                                  index 1a63a505..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/fulljslint2.js
                                  +++ /dev/null
                                  @@ -1,810 +0,0 @@
                                  -var src = false;
                                  -var tab = "    ";
                                  -var option = {};
                                  -var syntax = {};
                                  -var xmode = "script";
                                  -var prereg = true;
                                  -var jsonmode = false;
                                  -
                                  -var errorAt = function(msg, line, from){console.error(msg, line, from)};
                                  -var warningAt = function(msg, line, from){console.warn(msg, line, from)};
                                  -
                                  -function F() {}
                                  -
                                  -if (typeof Object.create !== 'function') {
                                  -    Object.create = function (o) {
                                  -        F.prototype = o;
                                  -        return new F();
                                  -    };
                                  -}
                                  -
                                  -
                                  -String.prototype.isAlpha = function () {
                                  -    return (this >= 'a' && this <= 'z\uffff') ||
                                  -        (this >= 'A' && this <= 'Z\uffff');
                                  -};
                                  -
                                  -String.prototype.isDigit = function () {
                                  -    return (this >= '0' && this <= '9');
                                  -};
                                  -
                                  -
                                  -function is_own(object, name) {
                                  -    return Object.prototype.hasOwnProperty.call(object, name);
                                  -}
                                  -
                                  -
                                  -var
                                  -
                                  -//  xmode is used to adapt to the exceptions in html parsing.
                                  -//  It can have these states:
                                  -//      false   .js script file
                                  -//      html
                                  -//      outer
                                  -//      script
                                  -//      style
                                  -//      scriptstring
                                  -//      styleproperty
                                  -
                                  -        //xmode,
                                  -        xquote,
                                  -
                                  -// unsafe comment or string
                                  -        ax = /@cc|<\/?|script|\]*s\]|<\s*!|&lt/i,
                                  -// unsafe characters that are silently deleted by one or more browsers
                                  -        cx = /[\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
                                  -// token
                                  -        tx = /^\s*([(){}\[.,:;'"~\?\]#@]|==?=?|\/(\*(jslint|members?|global)?|=|\/)?|\*[\/=]?|\+(?:=|\++)?|-(?:=|-+)?|%=?|&[&=]?|\|[|=]?|>>?>?=?|<([\/=!]|\!(\[|--)?|<=?)?|\^=?|\!=?=?|[a-zA-Z_$][a-zA-Z0-9_$]*|[0-9]+([xX][0-9a-fA-F]+|\.[0-9]*)?([eE][+\-]?[0-9]+)?)/,
                                  -// html token
                                  -        hx = /^\s*(['"=>\/&#]|<(?:\/|\!(?:--)?)?|[a-zA-Z][a-zA-Z0-9_\-:]*|[0-9]+|--)/,
                                  -// characters in strings that need escapement
                                  -        nx = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/,
                                  -        nxg = /[\u0000-\u001f&<"\/\\\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
                                  -// outer html token
                                  -        ox = /[>&]|<[\/!]?|--/,
                                  -// star slash
                                  -        lx = /\*\/|\/\*/,
                                  -// identifier
                                  -        ix = /^([a-zA-Z_$][a-zA-Z0-9_$]*)$/,
                                  -// javascript url
                                  -        jx = /^(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
                                  -// url badness
                                  -        ux = /&|\+|\u00AD|\.\.|\/\*|%[^;]|base64|url|expression|data|mailto/i,
                                  -// style
                                  -        sx = /^\s*([{:#%.=,>+\[\]@()"';]|\*=?|\$=|\|=|\^=|~=|[a-zA-Z_][a-zA-Z0-9_\-]*|[0-9]+|<\/|\/\*)/,
                                  -        ssx = /^\s*([@#!"'};:\-%.=,+\[\]()*_]|[a-zA-Z][a-zA-Z0-9._\-]*|\/\*?|\d+(?:\.\d+)?|<\/)/,
                                  -// attributes characters
                                  -        qx = /[^a-zA-Z0-9+\-_\/ ]/,
                                  -// query characters for ids
                                  -        dx = /[\[\]\/\\"'*<>.&:(){}+=#]/,
                                  -
                                  -        rx = {
                                  -            outer: hx,
                                  -            html: hx,
                                  -            style: sx,
                                  -            styleproperty: ssx
                                  -        };
                                  -
                                  -
                                  -        var character, from, line, s;
                                  -        var lines;
                                  -
                                  -// Private lex methods
                                  -
                                  -        function nextLine() {
                                  -            var at;
                                  -            if (line >= lines.length) {
                                  -                return false;
                                  -            }
                                  -            character = 1;
                                  -            s = lines[line];
                                  -            line += 1;
                                  -            at = s.search(/ \t/);
                                  -            if (at >= 0) {
                                  -                warningAt("Mixed spaces and tabs.", line, at + 1);
                                  -            }
                                  -            s = s.replace(/\t/g, tab);
                                  -            at = s.search(cx);
                                  -            if (at >= 0) {
                                  -                warningAt("Unsafe character.", line, at);
                                  -            }
                                  -            if (option.maxlen && option.maxlen < s.length) {
                                  -                warningAt("Line too long.", line, s.length);
                                  -            }
                                  -            return true;
                                  -        }
                                  -
                                  -// Produce a token object.  The token inherits from a syntax symbol.
                                  -
                                  -        function it(type, value) {
                                  -            var i, t;
                                  -            if (type === '(color)' || type === '(range)') {
                                  -                t = {type: type};
                                  -            } else if (type === '(punctuator)' ||
                                  -                    (type === '(identifier)' && is_own(syntax, value))) {
                                  -                t = syntax[value] || syntax['(error)'];
                                  -            } else {
                                  -                t = syntax[type];
                                  -            }
                                  -            
                                  -            // xxxpedro
                                  -            t = {id:type};
                                  -            
                                  -            t = Object.create(t);
                                  -            if (type === '(string)' || type === '(range)') {
                                  -                if (jx.test(value)) {
                                  -                    warningAt("Script URL.", line, from);
                                  -                }
                                  -            }
                                  -            if (type === '(identifier)') {
                                  -                t.identifier = true;
                                  -                if (value === '__iterator__' || value === '__proto__') {
                                  -                    errorAt("Reserved name '{a}'.",
                                  -                        line, from, value);
                                  -                } else if (option.nomen &&
                                  -                        (value.charAt(0) === '_' ||
                                  -                         value.charAt(value.length - 1) === '_')) {
                                  -                    warningAt("Unexpected {a} in '{b}'.", line, from,
                                  -                        "dangling '_'", value);
                                  -                }
                                  -            }
                                  -            t.value = value;
                                  -            t.line = line;
                                  -            t.character = character;
                                  -            t.from = from;
                                  -            i = t.id;
                                  -            if (i !== '(endline)') {
                                  -                prereg = i &&
                                  -                    (('(,=:[!&|?{};'.indexOf(i.charAt(i.length - 1)) >= 0) ||
                                  -                    i === 'return');
                                  -            }
                                  -            return t;
                                  -        }
                                  -        
                                  -var init = function (source) {
                                  -    if (typeof source === 'string') {
                                  -        lines = source
                                  -            .replace(/\r\n/g, '\n')
                                  -            .replace(/\r/g, '\n')
                                  -            .split('\n');
                                  -    } else {
                                  -        lines = source;
                                  -    }
                                  -    line = 0;
                                  -    nextLine();
                                  -    from = 1;
                                  -};
                                  -        
                                  -
                                  -var token = function () {
                                  -    var b, c, captures, d, depth, high, i, l, low, q, t;
                                  -
                                  -    function match(x) {
                                  -        var r = x.exec(s), r1;
                                  -        if (r) {
                                  -            l = r[0].length;
                                  -            r1 = r[1];
                                  -            c = r1.charAt(0);
                                  -            s = s.substr(l);
                                  -            from = character + l - r1.length;
                                  -            character += l;
                                  -            return r1;
                                  -        }
                                  -    }
                                  -
                                  -    function string(x) {
                                  -        var c, j, r = '';
                                  -
                                  -        if (jsonmode && x !== '"') {
                                  -            warningAt("Strings must use doublequote.",
                                  -                    line, character);
                                  -        }
                                  -
                                  -        if (xquote === x || (xmode === 'scriptstring' && !xquote)) {
                                  -            return it('(punctuator)', x);
                                  -        }
                                  -
                                  -        function esc(n) {
                                  -            var i = parseInt(s.substr(j + 1, n), 16);
                                  -            j += n;
                                  -            if (i >= 32 && i <= 126 &&
                                  -                    i !== 34 && i !== 92 && i !== 39) {
                                  -                warningAt("Unnecessary escapement.", line, character);
                                  -            }
                                  -            character += n;
                                  -            c = String.fromCharCode(i);
                                  -        }
                                  -        j = 0;
                                  -        for (;;) {
                                  -            while (j >= s.length) {
                                  -                j = 0;
                                  -                if (xmode !== 'html' || !nextLine()) {
                                  -                    errorAt("Unclosed string.", line, from);
                                  -                }
                                  -            }
                                  -            c = s.charAt(j);
                                  -            if (c === x) {
                                  -                character += 1;
                                  -                s = s.substr(j + 1);
                                  -                return it('(string)', r, x);
                                  -            }
                                  -            if (c < ' ') {
                                  -                if (c === '\n' || c === '\r') {
                                  -                    break;
                                  -                }
                                  -                warningAt("Control character in string: {a}.",
                                  -                        line, character + j, s.slice(0, j));
                                  -            } else if (c === xquote) {
                                  -                warningAt("Bad HTML string", line, character + j);
                                  -            } else if (c === '<') {
                                  -                if (option.safe && xmode === 'html') {
                                  -                    warningAt("ADsafe string violation.",
                                  -                            line, character + j);
                                  -                } else if (s.charAt(j + 1) === '/' && (xmode || option.safe)) {
                                  -                    warningAt("Expected '<\\/' and instead saw '</'.", line, character);
                                  -                } else if (s.charAt(j + 1) === '!' && (xmode || option.safe)) {
                                  -                    warningAt("Unexpected '<!' in a string.", line, character);
                                  -                }
                                  -            } else if (c === '\\') {
                                  -                if (xmode === 'html') {
                                  -                    if (option.safe) {
                                  -                        warningAt("ADsafe string violation.",
                                  -                                line, character + j);
                                  -                    }
                                  -                } else if (xmode === 'styleproperty') {
                                  -                    j += 1;
                                  -                    character += 1;
                                  -                    c = s.charAt(j);
                                  -                    if (c !== x) {
                                  -                        warningAt("Escapement in style string.",
                                  -                                line, character + j);
                                  -                    }
                                  -                } else {
                                  -                    j += 1;
                                  -                    character += 1;
                                  -                    c = s.charAt(j);
                                  -                    switch (c) {
                                  -                    case xquote:
                                  -                        warningAt("Bad HTML string", line,
                                  -                            character + j);
                                  -                        break;
                                  -                    case '\\':
                                  -                    case '\'':
                                  -                    case '"':
                                  -                    case '/':
                                  -                        break;
                                  -                    case 'b':
                                  -                        c = '\b';
                                  -                        break;
                                  -                    case 'f':
                                  -                        c = '\f';
                                  -                        break;
                                  -                    case 'n':
                                  -                        c = '\n';
                                  -                        break;
                                  -                    case 'r':
                                  -                        c = '\r';
                                  -                        break;
                                  -                    case 't':
                                  -                        c = '\t';
                                  -                        break;
                                  -                    case 'u':
                                  -                        esc(4);
                                  -                        break;
                                  -                    case 'v':
                                  -                        c = '\v';
                                  -                        break;
                                  -                    case 'x':
                                  -                        if (jsonmode) {
                                  -                            warningAt("Avoid \\x-.", line, character);
                                  -                        }
                                  -                        esc(2);
                                  -                        break;
                                  -                    default:
                                  -                        warningAt("Bad escapement.", line, character);
                                  -                    }
                                  -                }
                                  -            }
                                  -            r += c;
                                  -            character += 1;
                                  -            j += 1;
                                  -        }
                                  -    }
                                  -
                                  -    for (;;) {
                                  -        if (!s) {
                                  -            return it(nextLine() ? '(endline)' : '(end)', '');
                                  -        }
                                  -        while (xmode === 'outer') {
                                  -            i = s.search(ox);
                                  -            if (i === 0) {
                                  -                break;
                                  -            } else if (i > 0) {
                                  -                character += 1;
                                  -                s = s.slice(i);
                                  -                break;
                                  -            } else {
                                  -                if (!nextLine()) {
                                  -                    return it('(end)', '');
                                  -                }
                                  -            }
                                  -        }
                                  -//                     t = match(rx[xmode] || tx);
                                  -//                     if (!t) {
                                  -//                         if (xmode === 'html') {
                                  -//                             return it('(error)', s.charAt(0));
                                  -//                         } else {
                                  -//                             t = '';
                                  -//                             c = '';
                                  -//                             while (s && s < '!') {
                                  -//                                 s = s.substr(1);
                                  -//                             }
                                  -//                             if (s) {
                                  -//                                 errorAt("Unexpected '{a}'.",
                                  -//                                         line, character, s.substr(0, 1));
                                  -//                             }
                                  -//                         }
                                  -        t = match(rx[xmode] || tx);
                                  -        if (!t) {
                                  -            t = '';
                                  -            c = '';
                                  -            while (s && s < '!') {
                                  -                s = s.substr(1);
                                  -            }
                                  -            if (s) {
                                  -                if (xmode === 'html') {
                                  -                    return it('(error)', s.charAt(0));
                                  -                } else {
                                  -                    errorAt("Unexpected '{a}'.",
                                  -                            line, character, s.substr(0, 1));
                                  -                }
                                  -            }
                                  -        } else {
                                  -
                                  -//      identifier
                                  -
                                  -            if (c.isAlpha() || c === '_' || c === '$') {
                                  -                return it('(identifier)', t);
                                  -            }
                                  -
                                  -//      number
                                  -
                                  -            if (c.isDigit()) {
                                  -                if (xmode !== 'style' && !isFinite(Number(t))) {
                                  -                    warningAt("Bad number '{a}'.",
                                  -                        line, character, t);
                                  -                }
                                  -                if (xmode !== 'style' &&
                                  -                         xmode !== 'styleproperty' &&
                                  -                         s.substr(0, 1).isAlpha()) {
                                  -                    warningAt("Missing space after '{a}'.",
                                  -                            line, character, t);
                                  -                }
                                  -                if (c === '0') {
                                  -                    d = t.substr(1, 1);
                                  -                    if (d.isDigit()) {
                                  -                        if (token.id !== '.' && xmode !== 'styleproperty') {
                                  -                            warningAt("Don't use extra leading zeros '{a}'.",
                                  -                                line, character, t);
                                  -                        }
                                  -                    } else if (jsonmode && (d === 'x' || d === 'X')) {
                                  -                        warningAt("Avoid 0x-. '{a}'.",
                                  -                                line, character, t);
                                  -                    }
                                  -                }
                                  -                if (t.substr(t.length - 1) === '.') {
                                  -                    warningAt(
                                  -"A trailing decimal point can be confused with a dot '{a}'.",
                                  -                            line, character, t);
                                  -                }
                                  -                return it('(number)', t);
                                  -            }
                                  -            
                                  -            switch (t) {
                                  -
                                  -//      string
                                  -
                                  -            case '"':
                                  -            case "'":
                                  -                return string(t);
                                  -
                                  -//      // comment
                                  -
                                  -            case '//':
                                  -                if (src || (xmode && xmode !== 'script')) {
                                  -                    warningAt("Unexpected comment.", line, character);
                                  -                } else if (xmode === 'script' && /<\s*\//i.test(s)) {
                                  -                    warningAt("Unexpected <\/ in comment.", line, character);
                                  -                } else if ((option.safe || xmode === 'script') && ax.test(s)) {
                                  -                    warningAt("Dangerous comment.", line, character);
                                  -                }
                                  -                s = '';
                                  -                token.comment = true;
                                  -                break;
                                  -
                                  -//      /* comment
                                  -
                                  -            case '/*':
                                  -                if (src || (xmode && xmode !== 'script' && xmode !== 'style' && xmode !== 'styleproperty')) {
                                  -                    warningAt("Unexpected comment.", line, character);
                                  -                }
                                  -                if (option.safe && ax.test(s)) {
                                  -                    warningAt("ADsafe comment violation.", line, character);
                                  -                }
                                  -                for (;;) {
                                  -                    i = s.search(lx);
                                  -                    if (i >= 0) {
                                  -                        break;
                                  -                    }
                                  -                    if (!nextLine()) {
                                  -                        errorAt("Unclosed comment.", line, character);
                                  -                    } else {
                                  -                        if (option.safe && ax.test(s)) {
                                  -                            warningAt("ADsafe comment violation.",
                                  -                                    line, character);
                                  -                        }
                                  -                    }
                                  -                }
                                  -                character += i + 2;
                                  -                if (s.substr(i, 1) === '/') {
                                  -                    errorAt("Nested comment.", line, character);
                                  -                }
                                  -                s = s.substr(i + 2);
                                  -                token.comment = true;
                                  -                break;
                                  -
                                  -//      /*members /*jslint /*global
                                  -
                                  -            case '/*members':
                                  -            case '/*member':
                                  -            case '/*jslint':
                                  -            case '/*global':
                                  -            case '*/':
                                  -                return {
                                  -                    value: t,
                                  -                    type: 'special',
                                  -                    line: line,
                                  -                    character: character,
                                  -                    from: from
                                  -                };
                                  -
                                  -            case '':
                                  -                break;
                                  -//      /
                                  -            case '/':
                                  -                if (token.id === '/=') {
                                  -                    errorAt(
                                  -"A regular expression literal can be confused with '/='.", line, from);
                                  -                }
                                  -                /// xxxpedro
                                  -                if (prereg) {
                                  -                    depth = 0;
                                  -                    captures = 0;
                                  -                    l = 0;
                                  -                    for (;;) {
                                  -                        b = true;
                                  -                        c = s.charAt(l);
                                  -                        l += 1;
                                  -                        switch (c) {
                                  -                        case '':
                                  -                            errorAt("Unclosed regular expression.",
                                  -                                    line, from);
                                  -                            return;
                                  -                        case '/':
                                  -                            if (depth > 0) {
                                  -                                warningAt("Unescaped '{a}'.",
                                  -                                        line, from + l, '/');
                                  -                            }
                                  -                            c = s.substr(0, l - 1);
                                  -                            q = {
                                  -                                g: true,
                                  -                                i: true,
                                  -                                m: true
                                  -                            };
                                  -                            while (q[s.charAt(l)] === true) {
                                  -                                q[s.charAt(l)] = false;
                                  -                                l += 1;
                                  -                            }
                                  -                            character += l;
                                  -                            s = s.substr(l);
                                  -                            q = s.charAt(0);
                                  -                            if (q === '/' || q === '*') {
                                  -                                errorAt("Confusing regular expression.",
                                  -                                        line, from);
                                  -                            }
                                  -                            return it('(regexp)', c);
                                  -                        case '\\':
                                  -                            c = s.charAt(l);
                                  -                            if (c < ' ') {
                                  -                                warningAt(
                                  -"Unexpected control character in regular expression.", line, from + l);
                                  -                            } else if (c === '<') {
                                  -                                warningAt(
                                  -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
                                  -                            }
                                  -                            l += 1;
                                  -                            break;
                                  -                        case '(':
                                  -                            depth += 1;
                                  -                            b = false;
                                  -                            if (s.charAt(l) === '?') {
                                  -                                l += 1;
                                  -                                switch (s.charAt(l)) {
                                  -                                case ':':
                                  -                                case '=':
                                  -                                case '!':
                                  -                                    l += 1;
                                  -                                    break;
                                  -                                default:
                                  -                                    warningAt(
                                  -"Expected '{a}' and instead saw '{b}'.", line, from + l, ':', s.charAt(l));
                                  -                                }
                                  -                            } else {
                                  -                                captures += 1;
                                  -                            }
                                  -                            break;
                                  -                        case '|':
                                  -                            b = false;
                                  -                            break;
                                  -                        case ')':
                                  -                            if (depth === 0) {
                                  -                                warningAt("Unescaped '{a}'.",
                                  -                                        line, from + l, ')');
                                  -                            } else {
                                  -                                depth -= 1;
                                  -                            }
                                  -                            break;
                                  -                        case ' ':
                                  -                            q = 1;
                                  -                            while (s.charAt(l) === ' ') {
                                  -                                l += 1;
                                  -                                q += 1;
                                  -                            }
                                  -                            if (q > 1) {
                                  -                                warningAt(
                                  -"Spaces are hard to count. Use {{a}}.", line, from + l, q);
                                  -                            }
                                  -                            break;
                                  -                        case '[':
                                  -                            c = s.charAt(l);
                                  -                            if (c === '^') {
                                  -                                l += 1;
                                  -                                if (option.regexp) {
                                  -                                    warningAt("Insecure '{a}'.",
                                  -                                            line, from + l, c);
                                  -                                } else if (s.charAt(l) === ']') {
                                  -                                    errorAt("Unescaped '{a}'.",
                                  -                                        line, from + l, '^');
                                  -                                }
                                  -                            }
                                  -                            q = false;
                                  -                            if (c === ']') {
                                  -                                warningAt("Empty class.", line,
                                  -                                        from + l - 1);
                                  -                                q = true;
                                  -                            }
                                  -klass:                                  do {
                                  -                                c = s.charAt(l);
                                  -                                l += 1;
                                  -                                switch (c) {
                                  -                                case '[':
                                  -                                case '^':
                                  -                                    warningAt("Unescaped '{a}'.",
                                  -                                            line, from + l, c);
                                  -                                    q = true;
                                  -                                    break;
                                  -                                case '-':
                                  -                                    if (q) {
                                  -                                        q = false;
                                  -                                    } else {
                                  -                                        warningAt("Unescaped '{a}'.",
                                  -                                                line, from + l, '-');
                                  -                                        q = true;
                                  -                                    }
                                  -                                    break;
                                  -                                case ']':
                                  -                                    if (!q) {
                                  -                                        warningAt("Unescaped '{a}'.",
                                  -                                                line, from + l - 1, '-');
                                  -                                    }
                                  -                                    break klass;
                                  -                                case '\\':
                                  -                                    c = s.charAt(l);
                                  -                                    if (c < ' ') {
                                  -                                        warningAt(
                                  -"Unexpected control character in regular expression.", line, from + l);
                                  -                                    } else if (c === '<') {
                                  -                                        warningAt(
                                  -"Unexpected escaped character '{a}' in regular expression.", line, from + l, c);
                                  -                                    }
                                  -                                    l += 1;
                                  -                                    q = true;
                                  -                                    break;
                                  -                                case '/':
                                  -                                    warningAt("Unescaped '{a}'.",
                                  -                                            line, from + l - 1, '/');
                                  -                                    q = true;
                                  -                                    break;
                                  -                                case '<':
                                  -                                    if (xmode === 'script') {
                                  -                                        c = s.charAt(l);
                                  -                                        if (c === '!' || c === '/') {
                                  -                                            warningAt(
                                  -"HTML confusion in regular expression '<{a}'.", line, from + l, c);
                                  -                                        }
                                  -                                    }
                                  -                                    q = true;
                                  -                                    break;
                                  -                                default:
                                  -                                    q = true;
                                  -                                }
                                  -                            } while (c);
                                  -                            break;
                                  -                        case '.':
                                  -                            if (option.regexp) {
                                  -                                warningAt("Insecure '{a}'.", line,
                                  -                                        from + l, c);
                                  -                            }
                                  -                            break;
                                  -                        case ']':
                                  -                        case '?':
                                  -                        case '{':
                                  -                        case '}':
                                  -                        case '+':
                                  -                        case '*':
                                  -                            warningAt("Unescaped '{a}'.", line,
                                  -                                    from + l, c);
                                  -                            break;
                                  -                        case '<':
                                  -                            if (xmode === 'script') {
                                  -                                c = s.charAt(l);
                                  -                                if (c === '!' || c === '/') {
                                  -                                    warningAt(
                                  -"HTML confusion in regular expression '<{a}'.", line, from + l, c);
                                  -                                }
                                  -                            }
                                  -                        }
                                  -                        if (b) {
                                  -                            switch (s.charAt(l)) {
                                  -                            case '?':
                                  -                            case '+':
                                  -                            case '*':
                                  -                                l += 1;
                                  -                                if (s.charAt(l) === '?') {
                                  -                                    l += 1;
                                  -                                }
                                  -                                break;
                                  -                            case '{':
                                  -                                l += 1;
                                  -                                c = s.charAt(l);
                                  -                                if (c < '0' || c > '9') {
                                  -                                    warningAt(
                                  -"Expected a number and instead saw '{a}'.", line, from + l, c);
                                  -                                }
                                  -                                l += 1;
                                  -                                low = +c;
                                  -                                for (;;) {
                                  -                                    c = s.charAt(l);
                                  -                                    if (c < '0' || c > '9') {
                                  -                                        break;
                                  -                                    }
                                  -                                    l += 1;
                                  -                                    low = +c + (low * 10);
                                  -                                }
                                  -                                high = low;
                                  -                                if (c === ',') {
                                  -                                    l += 1;
                                  -                                    high = Infinity;
                                  -                                    c = s.charAt(l);
                                  -                                    if (c >= '0' && c <= '9') {
                                  -                                        l += 1;
                                  -                                        high = +c;
                                  -                                        for (;;) {
                                  -                                            c = s.charAt(l);
                                  -                                            if (c < '0' || c > '9') {
                                  -                                                break;
                                  -                                            }
                                  -                                            l += 1;
                                  -                                            high = +c + (high * 10);
                                  -                                        }
                                  -                                    }
                                  -                                }
                                  -                                if (s.charAt(l) !== '}') {
                                  -                                    warningAt(
                                  -"Expected '{a}' and instead saw '{b}'.", line, from + l, '}', c);
                                  -                                } else {
                                  -                                    l += 1;
                                  -                                }
                                  -                                if (s.charAt(l) === '?') {
                                  -                                    l += 1;
                                  -                                }
                                  -                                if (low > high) {
                                  -                                    warningAt(
                                  -"'{a}' should not be greater than '{b}'.", line, from + l, low, high);
                                  -                                }
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                    c = s.substr(0, l - 1);
                                  -                    character += l;
                                  -                    s = s.substr(l);
                                  -                    return it('(regexp)', c);
                                  -                }
                                  -                return it('(punctuator)', t);
                                  -
                                  -//      punctuator
                                  -
                                  -            case '<!--':
                                  -                l = line;
                                  -                c = character;
                                  -                for (;;) {
                                  -                    i = s.indexOf('--');
                                  -                    if (i >= 0) {
                                  -                        break;
                                  -                    }
                                  -                    i = s.indexOf('<!');
                                  -                    if (i >= 0) {
                                  -                        errorAt("Nested HTML comment.",
                                  -                            line, character + i);
                                  -                    }
                                  -                    if (!nextLine()) {
                                  -                        errorAt("Unclosed HTML comment.", l, c);
                                  -                    }
                                  -                }
                                  -                l = s.indexOf('<!');
                                  -                if (l >= 0 && l < i) {
                                  -                    errorAt("Nested HTML comment.",
                                  -                        line, character + l);
                                  -                }
                                  -                character += i;
                                  -                if (s[i + 2] !== '>') {
                                  -                    errorAt("Expected -->.", line, character);
                                  -                }
                                  -                character += 3;
                                  -                s = s.slice(i + 3);
                                  -                break;
                                  -            case '#':
                                  -                if (xmode === 'html' || xmode === 'styleproperty') {
                                  -                    for (;;) {
                                  -                        c = s.charAt(0);
                                  -                        if ((c < '0' || c > '9') &&
                                  -                                (c < 'a' || c > 'f') &&
                                  -                                (c < 'A' || c > 'F')) {
                                  -                            break;
                                  -                        }
                                  -                        character += 1;
                                  -                        s = s.substr(1);
                                  -                        t += c;
                                  -                    }
                                  -                    if (t.length !== 4 && t.length !== 7) {
                                  -                        warningAt("Bad hex color '{a}'.", line,
                                  -                            from + l, t);
                                  -                    }
                                  -                    return it('(color)', t);
                                  -                }
                                  -                return it('(punctuator)', t);
                                  -            default:
                                  -                if (xmode === 'outer' && c === '&') {
                                  -                    character += 1;
                                  -                    s = s.substr(1);
                                  -                    for (;;) {
                                  -                        c = s.charAt(0);
                                  -                        character += 1;
                                  -                        s = s.substr(1);
                                  -                        if (c === ';') {
                                  -                            break;
                                  -                        }
                                  -                        if (!((c >= '0' && c <= '9') ||
                                  -                                (c >= 'a' && c <= 'z') ||
                                  -                                c === '#')) {
                                  -                            errorAt("Bad entity", line, from + l,
                                  -                            character);
                                  -                        }
                                  -                    }
                                  -                    break;
                                  -                }
                                  -                return it('(punctuator)', t);
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.css b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.css
                                  deleted file mode 100644
                                  index 09541516..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.css
                                  +++ /dev/null
                                  @@ -1,66 +0,0 @@
                                  -/* Pretty printing styles. Used with prettify.js. */
                                  -
                                  -.str { color: #080; }
                                  -.kwd { color: #008; }
                                  -.com { color: #800; }
                                  -.typ { color: #606; }
                                  -.lit { color: #066; }
                                  -.pun { color: #660; }
                                  -.pln { color: #000; }
                                  -.tag { color: #008; }
                                  -.atn { color: #606; }
                                  -.atv { color: #080; }
                                  -.dec { color: #606; }
                                  -pre.prettyprint { padding: 2px; border: 1px solid #888; }
                                  -
                                  -@media print {
                                  -  .str { color: #060; }
                                  -  .kwd { color: #006; font-weight: bold; }
                                  -  .com { color: #600; font-style: italic; }
                                  -  .typ { color: #404; font-weight: bold; }
                                  -  .lit { color: #044; }
                                  -  .pun { color: #440; }
                                  -  .pln { color: #000; }
                                  -  .tag { color: #006; font-weight: bold; }
                                  -  .atn { color: #404; }
                                  -  .atv { color: #060; }
                                  -}
                                  -
                                  -/* xxxpedro */
                                  -html, body {
                                  -  margin: 0;
                                  -  padding: 0;
                                  -}
                                  -pre.prettyprint {
                                  -  margin-left: 76px;
                                  -  border: none;
                                  -  font: 12px Monospace;
                                  -  padding: 2px;
                                  -}
                                  -.lineNumbers {
                                  -  font: 12px Monospace;
                                  -  position: absolute;
                                  -  width: 55px;
                                  -  text-align: right;
                                  -  top: 0;
                                  -  left: 0;
                                  -  
                                  -  border-right: 2px solid #ccc; 
                                  -  color: #fff; 
                                  -  font-style: normal; 
                                  -  /*font-weight: bold;*/ 
                                  -  padding: 2px 7px; 
                                  -  /*background: #6277AA;*/ 
                                  -  background-image: -moz-linear-gradient(right, #ddd, #bbb); /* FF3.6 */
                                  -  background-image: -webkit-gradient(linear,right top,left top,color-stop(0, #ddd),color-stop(1, #bbb)); /* Saf4+, Chrome */
                                  -            filter:  progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd', EndColorStr='#bbb', GradientType='1'); /* IE6,IE7 */
                                  -        -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorStr='#ddd', EndColorStr='#bbb', GradientType='1')"; /* IE8 */
                                  -}
                                  -.lineNumbers a, .lineNumbers a:visited { 
                                  -  color: #777; 
                                  -  text-decoration: none;
                                  -}
                                  -#sourceSpacer {
                                  -  height: 768px;
                                  -  position: relative;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.js b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.js
                                  deleted file mode 100644
                                  index 09d6394f..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prettify.js
                                  +++ /dev/null
                                  @@ -1,1478 +0,0 @@
                                  -// Copyright (C) 2006 Google Inc.
                                  -//
                                  -// Licensed under the Apache License, Version 2.0 (the "License");
                                  -// you may not use this file except in compliance with the License.
                                  -// You may obtain a copy of the License at
                                  -//
                                  -//      http://www.apache.org/licenses/LICENSE-2.0
                                  -//
                                  -// Unless required by applicable law or agreed to in writing, software
                                  -// distributed under the License is distributed on an "AS IS" BASIS,
                                  -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                                  -// See the License for the specific language governing permissions and
                                  -// limitations under the License.
                                  -
                                  -
                                  -/**
                                  - * @fileoverview
                                  - * some functions for browser-side pretty printing of code contained in html.
                                  - * <p>
                                  - *
                                  - * For a fairly comprehensive set of languages see the
                                  - * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
                                  - * file that came with this source.  At a minimum, the lexer should work on a
                                  - * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
                                  - * XML, CSS, Javascript, and Makefiles.  It works passably on Ruby, PHP and Awk
                                  - * and a subset of Perl, but, because of commenting conventions, doesn't work on
                                  - * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
                                  - * <p>
                                  - * Usage: <ol>
                                  - * <li> include this source file in an html page via
                                  - *   {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
                                  - * <li> define style rules.  See the example page for examples.
                                  - * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
                                  - *    {@code class=prettyprint.}
                                  - *    You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
                                  - *    printer needs to do more substantial DOM manipulations to support that, so
                                  - *    some css styles may not be preserved.
                                  - * </ol>
                                  - * That's it.  I wanted to keep the API as simple as possible, so there's no
                                  - * need to specify which language the code is in, but if you wish, you can add
                                  - * another class to the {@code <pre>} or {@code <code>} element to specify the
                                  - * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
                                  - * starts with "lang-" followed by a file extension, specifies the file type.
                                  - * See the "lang-*.js" files in this directory for code that implements
                                  - * per-language file handlers.
                                  - * <p>
                                  - * Change log:<br>
                                  - * cbeust, 2006/08/22
                                  - * <blockquote>
                                  - *   Java annotations (start with "@") are now captured as literals ("lit")
                                  - * </blockquote>
                                  - * @requires console
                                  - * @overrides window
                                  - */
                                  -
                                  -// JSLint declarations
                                  -/*global console, document, navigator, setTimeout, window */
                                  -
                                  -/**
                                  - * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
                                  - * UI events.
                                  - * If set to {@code false}, {@code prettyPrint()} is synchronous.
                                  - */
                                  -window['PR_SHOULD_USE_CONTINUATION'] = true;
                                  -
                                  -/** the number of characters between tab columns */
                                  -window['PR_TAB_WIDTH'] = 8;
                                  -
                                  -/** Walks the DOM returning a properly escaped version of innerHTML.
                                  -  * @param {Node} node
                                  -  * @param {Array.<string>} out output buffer that receives chunks of HTML.
                                  -  */
                                  -window['PR_normalizedHtml']
                                  -
                                  -/** Contains functions for creating and registering new language handlers.
                                  -  * @type {Object}
                                  -  */
                                  -  = window['PR']
                                  -
                                  -/** Pretty print a chunk of code.
                                  -  *
                                  -  * @param {string} sourceCodeHtml code as html
                                  -  * @return {string} code as html, but prettier
                                  -  */
                                  -  = window['prettyPrintOne']
                                  -/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
                                  -  * {@code class=prettyprint} and prettify them.
                                  -  * @param {Function?} opt_whenDone if specified, called when the last entry
                                  -  *     has been finished.
                                  -  */
                                  -  = window['prettyPrint'] = void 0;
                                  -
                                  -/** browser detection. @extern @returns false if not IE, otherwise the major version. */
                                  -window['_pr_isIE6'] = function () {
                                  -  var ieVersion = navigator && navigator.userAgent &&
                                  -      navigator.userAgent.match(/\bMSIE ([678])\./);
                                  -  ieVersion = ieVersion ? +ieVersion[1] : false;
                                  -  window['_pr_isIE6'] = function () { return ieVersion; };
                                  -  return ieVersion;
                                  -};
                                  -
                                  -
                                  -(function () {
                                  -  // Keyword lists for various languages.
                                  -  var FLOW_CONTROL_KEYWORDS =
                                  -      "break continue do else for if return while ";
                                  -  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
                                  -      "double enum extern float goto int long register short signed sizeof " +
                                  -      "static struct switch typedef union unsigned void volatile ";
                                  -  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
                                  -      "new operator private protected public this throw true try typeof ";
                                  -  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
                                  -      "concept concept_map const_cast constexpr decltype " +
                                  -      "dynamic_cast explicit export friend inline late_check " +
                                  -      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
                                  -      "template typeid typename using virtual wchar_t where ";
                                  -  var JAVA_KEYWORDS = COMMON_KEYWORDS +
                                  -      "abstract boolean byte extends final finally implements import " +
                                  -      "instanceof null native package strictfp super synchronized throws " +
                                  -      "transient ";
                                  -  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
                                  -      "as base by checked decimal delegate descending event " +
                                  -      "fixed foreach from group implicit in interface internal into is lock " +
                                  -      "object out override orderby params partial readonly ref sbyte sealed " +
                                  -      "stackalloc string select uint ulong unchecked unsafe ushort var ";
                                  -  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
                                  -      "debugger eval export function get null set undefined var with " +
                                  -      "Infinity NaN ";
                                  -  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
                                  -      "goto if import last local my next no our print package redo require " +
                                  -      "sub undef unless until use wantarray while BEGIN END ";
                                  -  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
                                  -      "elif except exec finally from global import in is lambda " +
                                  -      "nonlocal not or pass print raise try with yield " +
                                  -      "False True None ";
                                  -  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
                                  -      " defined elsif end ensure false in module next nil not or redo rescue " +
                                  -      "retry self super then true undef unless until when yield BEGIN END ";
                                  -  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
                                  -      "function in local set then until ";
                                  -  var ALL_KEYWORDS = (
                                  -      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
                                  -      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
                                  -
                                  -  // token style names.  correspond to css classes
                                  -  /** token style for a string literal */
                                  -  var PR_STRING = 'str';
                                  -  /** token style for a keyword */
                                  -  var PR_KEYWORD = 'kwd';
                                  -  /** token style for a comment */
                                  -  var PR_COMMENT = 'com';
                                  -  /** token style for a type */
                                  -  var PR_TYPE = 'typ';
                                  -  /** token style for a literal value.  e.g. 1, null, true. */
                                  -  var PR_LITERAL = 'lit';
                                  -  /** token style for a punctuation string. */
                                  -  var PR_PUNCTUATION = 'pun';
                                  -  /** token style for a punctuation string. */
                                  -  var PR_PLAIN = 'pln';
                                  -
                                  -  /** token style for an sgml tag. */
                                  -  var PR_TAG = 'tag';
                                  -  /** token style for a markup declaration such as a DOCTYPE. */
                                  -  var PR_DECLARATION = 'dec';
                                  -  /** token style for embedded source. */
                                  -  var PR_SOURCE = 'src';
                                  -  /** token style for an sgml attribute name. */
                                  -  var PR_ATTRIB_NAME = 'atn';
                                  -  /** token style for an sgml attribute value. */
                                  -  var PR_ATTRIB_VALUE = 'atv';
                                  -
                                  -  /**
                                  -   * A class that indicates a section of markup that is not code, e.g. to allow
                                  -   * embedding of line numbers within code listings.
                                  -   */
                                  -  var PR_NOCODE = 'nocode';
                                  -
                                  -  /** A set of tokens that can precede a regular expression literal in
                                  -    * javascript.
                                  -    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
                                  -    * list, but I've removed ones that might be problematic when seen in
                                  -    * languages that don't support regular expression literals.
                                  -    *
                                  -    * <p>Specifically, I've removed any keywords that can't precede a regexp
                                  -    * literal in a syntactically legal javascript program, and I've removed the
                                  -    * "in" keyword since it's not a keyword in many languages, and might be used
                                  -    * as a count of inches.
                                  -    *
                                  -    * <p>The link a above does not accurately describe EcmaScript rules since
                                  -    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
                                  -    * very well in practice.
                                  -    *
                                  -    * @private
                                  -    */
                                  -  var REGEXP_PRECEDER_PATTERN = function () {
                                  -      var preceders = [
                                  -          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
                                  -          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
                                  -          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
                                  -          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
                                  -          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
                                  -          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
                                  -          "||=", "~" /* handles =~ and !~ */,
                                  -          "break", "case", "continue", "delete",
                                  -          "do", "else", "finally", "instanceof",
                                  -          "return", "throw", "try", "typeof"
                                  -          ];
                                  -      var pattern = '(?:^^|[+-]';
                                  -      for (var i = 0; i < preceders.length; ++i) {
                                  -        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
                                  -      }
                                  -      pattern += ')\\s*';  // matches at end, and matches empty string
                                  -      return pattern;
                                  -      // CAVEAT: this does not properly handle the case where a regular
                                  -      // expression immediately follows another since a regular expression may
                                  -      // have flags for case-sensitivity and the like.  Having regexp tokens
                                  -      // adjacent is not valid in any language I'm aware of, so I'm punting.
                                  -      // TODO: maybe style special characters inside a regexp as punctuation.
                                  -    }();
                                  -
                                  -  // Define regexps here so that the interpreter doesn't have to create an
                                  -  // object each time the function containing them is called.
                                  -  // The language spec requires a new object created even if you don't access
                                  -  // the $1 members.
                                  -  var pr_amp = /&/g;
                                  -  var pr_lt = /</g;
                                  -  var pr_gt = />/g;
                                  -  var pr_quot = /\"/g;
                                  -  /** like textToHtml but escapes double quotes to be attribute safe. */
                                  -  function attribToHtml(str) {
                                  -    return str.replace(pr_amp, '&amp;')
                                  -        .replace(pr_lt, '&lt;')
                                  -        .replace(pr_gt, '&gt;')
                                  -        .replace(pr_quot, '&quot;');
                                  -  }
                                  -
                                  -  /** escapest html special characters to html. */
                                  -  function textToHtml(str) {
                                  -    return str.replace(pr_amp, '&amp;')
                                  -        .replace(pr_lt, '&lt;')
                                  -        .replace(pr_gt, '&gt;');
                                  -  }
                                  -
                                  -
                                  -  var pr_ltEnt = /&lt;/g;
                                  -  var pr_gtEnt = /&gt;/g;
                                  -  var pr_aposEnt = /&apos;/g;
                                  -  var pr_quotEnt = /&quot;/g;
                                  -  var pr_ampEnt = /&amp;/g;
                                  -  var pr_nbspEnt = /&nbsp;/g;
                                  -  /** unescapes html to plain text. */
                                  -  function htmlToText(html) {
                                  -    var pos = html.indexOf('&');
                                  -    if (pos < 0) { return html; }
                                  -    // Handle numeric entities specially.  We can't use functional substitution
                                  -    // since that doesn't work in older versions of Safari.
                                  -    // These should be rare since most browsers convert them to normal chars.
                                  -    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
                                  -      var end = html.indexOf(';', pos);
                                  -      if (end >= 0) {
                                  -        var num = html.substring(pos + 3, end);
                                  -        var radix = 10;
                                  -        if (num && num.charAt(0) === 'x') {
                                  -          num = num.substring(1);
                                  -          radix = 16;
                                  -        }
                                  -        var codePoint = parseInt(num, radix);
                                  -        if (!isNaN(codePoint)) {
                                  -          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
                                  -                  html.substring(end + 1));
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    return html.replace(pr_ltEnt, '<')
                                  -        .replace(pr_gtEnt, '>')
                                  -        .replace(pr_aposEnt, "'")
                                  -        .replace(pr_quotEnt, '"')
                                  -        .replace(pr_nbspEnt, ' ')
                                  -        .replace(pr_ampEnt, '&');
                                  -  }
                                  -
                                  -  /** is the given node's innerHTML normally unescaped? */
                                  -  function isRawContent(node) {
                                  -    return 'XMP' === node.tagName;
                                  -  }
                                  -
                                  -  var newlineRe = /[\r\n]/g;
                                  -  /**
                                  -   * Are newlines and adjacent spaces significant in the given node's innerHTML?
                                  -   */
                                  -  function isPreformatted(node, content) {
                                  -    // PRE means preformatted, and is a very common case, so don't create
                                  -    // unnecessary computed style objects.
                                  -    if ('PRE' === node.tagName) { return true; }
                                  -    if (!newlineRe.test(content)) { return true; }  // Don't care
                                  -    var whitespace = '';
                                  -    // For disconnected nodes, IE has no currentStyle.
                                  -    if (node.currentStyle) {
                                  -      whitespace = node.currentStyle.whiteSpace;
                                  -    } else if (window.getComputedStyle) {
                                  -      // Firefox makes a best guess if node is disconnected whereas Safari
                                  -      // returns the empty string.
                                  -      whitespace = window.getComputedStyle(node, null).whiteSpace;
                                  -    }
                                  -    return !whitespace || whitespace === 'pre';
                                  -  }
                                  -
                                  -  function normalizedHtml(node, out) {
                                  -    switch (node.nodeType) {
                                  -      case 1:  // an element
                                  -        var name = node.tagName.toLowerCase();
                                  -        out.push('<', name);
                                  -        for (var i = 0; i < node.attributes.length; ++i) {
                                  -          var attr = node.attributes[i];
                                  -          if (!attr.specified) { continue; }
                                  -          out.push(' ');
                                  -          normalizedHtml(attr, out);
                                  -        }
                                  -        out.push('>');
                                  -        for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -          normalizedHtml(child, out);
                                  -        }
                                  -        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
                                  -          out.push('<\/', name, '>');
                                  -        }
                                  -        break;
                                  -      case 2: // an attribute
                                  -        out.push(node.name.toLowerCase(), '="', attribToHtml(node.value), '"');
                                  -        break;
                                  -      case 3: case 4: // text
                                  -        out.push(textToHtml(node.nodeValue));
                                  -        break;
                                  -    }
                                  -  }
                                  -
                                  -  /**
                                  -   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
                                  -   * matches the union o the sets o strings matched d by the input RegExp.
                                  -   * Since it matches globally, if the input strings have a start-of-input
                                  -   * anchor (/^.../), it is ignored for the purposes of unioning.
                                  -   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
                                  -   * @return {RegExp} a global regex.
                                  -   */
                                  -  function combinePrefixPatterns(regexs) {
                                  -    var capturedGroupIndex = 0;
                                  -
                                  -    var needToFoldCase = false;
                                  -    var ignoreCase = false;
                                  -    for (var i = 0, n = regexs.length; i < n; ++i) {
                                  -      var regex = regexs[i];
                                  -      if (regex.ignoreCase) {
                                  -        ignoreCase = true;
                                  -      } else if (/[a-z]/i.test(regex.source.replace(
                                  -                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
                                  -        needToFoldCase = true;
                                  -        ignoreCase = false;
                                  -        break;
                                  -      }
                                  -    }
                                  -
                                  -    function decodeEscape(charsetPart) {
                                  -      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
                                  -      switch (charsetPart.charAt(1)) {
                                  -        case 'b': return 8;
                                  -        case 't': return 9;
                                  -        case 'n': return 0xa;
                                  -        case 'v': return 0xb;
                                  -        case 'f': return 0xc;
                                  -        case 'r': return 0xd;
                                  -        case 'u': case 'x':
                                  -          return parseInt(charsetPart.substring(2), 16)
                                  -              || charsetPart.charCodeAt(1);
                                  -        case '0': case '1': case '2': case '3': case '4':
                                  -        case '5': case '6': case '7':
                                  -          return parseInt(charsetPart.substring(1), 8);
                                  -        default: return charsetPart.charCodeAt(1);
                                  -      }
                                  -    }
                                  -
                                  -    function encodeEscape(charCode) {
                                  -      if (charCode < 0x20) {
                                  -        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
                                  -      }
                                  -      var ch = String.fromCharCode(charCode);
                                  -      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
                                  -        ch = '\\' + ch;
                                  -      }
                                  -      return ch;
                                  -    }
                                  -
                                  -    function caseFoldCharset(charSet) {
                                  -      var charsetParts = charSet.substring(1, charSet.length - 1).match(
                                  -          new RegExp(
                                  -              '\\\\u[0-9A-Fa-f]{4}'
                                  -              + '|\\\\x[0-9A-Fa-f]{2}'
                                  -              + '|\\\\[0-3][0-7]{0,2}'
                                  -              + '|\\\\[0-7]{1,2}'
                                  -              + '|\\\\[\\s\\S]'
                                  -              + '|-'
                                  -              + '|[^-\\\\]',
                                  -              'g'));
                                  -      var groups = [];
                                  -      var ranges = [];
                                  -      var inverse = charsetParts[0] === '^';
                                  -      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
                                  -        var p = charsetParts[i];
                                  -        switch (p) {
                                  -          case '\\B': case '\\b':
                                  -          case '\\D': case '\\d':
                                  -          case '\\S': case '\\s':
                                  -          case '\\W': case '\\w':
                                  -            groups.push(p);
                                  -            continue;
                                  -        }
                                  -        var start = decodeEscape(p);
                                  -        var end;
                                  -        if (i + 2 < n && '-' === charsetParts[i + 1]) {
                                  -          end = decodeEscape(charsetParts[i + 2]);
                                  -          i += 2;
                                  -        } else {
                                  -          end = start;
                                  -        }
                                  -        ranges.push([start, end]);
                                  -        // If the range might intersect letters, then expand it.
                                  -        if (!(end < 65 || start > 122)) {
                                  -          if (!(end < 65 || start > 90)) {
                                  -            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
                                  -          }
                                  -          if (!(end < 97 || start > 122)) {
                                  -            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
                                  -      // -> [[1, 12], [14, 14], [16, 17]]
                                  -      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
                                  -      var consolidatedRanges = [];
                                  -      var lastRange = [NaN, NaN];
                                  -      for (var i = 0; i < ranges.length; ++i) {
                                  -        var range = ranges[i];
                                  -        if (range[0] <= lastRange[1] + 1) {
                                  -          lastRange[1] = Math.max(lastRange[1], range[1]);
                                  -        } else {
                                  -          consolidatedRanges.push(lastRange = range);
                                  -        }
                                  -      }
                                  -
                                  -      var out = ['['];
                                  -      if (inverse) { out.push('^'); }
                                  -      out.push.apply(out, groups);
                                  -      for (var i = 0; i < consolidatedRanges.length; ++i) {
                                  -        var range = consolidatedRanges[i];
                                  -        out.push(encodeEscape(range[0]));
                                  -        if (range[1] > range[0]) {
                                  -          if (range[1] + 1 > range[0]) { out.push('-'); }
                                  -          out.push(encodeEscape(range[1]));
                                  -        }
                                  -      }
                                  -      out.push(']');
                                  -      return out.join('');
                                  -    }
                                  -
                                  -    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
                                  -      // Split into character sets, escape sequences, punctuation strings
                                  -      // like ('(', '(?:', ')', '^'), and runs of characters that do not
                                  -      // include any of the above.
                                  -      var parts = regex.source.match(
                                  -          new RegExp(
                                  -              '(?:'
                                  -              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
                                  -              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
                                  -              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
                                  -              + '|\\\\[0-9]+'  // a back-reference or octal escape
                                  -              + '|\\\\[^ux0-9]'  // other escape sequence
                                  -              + '|\\(\\?[:!=]'  // start of a non-capturing group
                                  -              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
                                  -              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
                                  -              + ')',
                                  -              'g'));
                                  -      var n = parts.length;
                                  -
                                  -      // Maps captured group numbers to the number they will occupy in
                                  -      // the output or to -1 if that has not been determined, or to
                                  -      // undefined if they need not be capturing in the output.
                                  -      var capturedGroups = [];
                                  -
                                  -      // Walk over and identify back references to build the capturedGroups
                                  -      // mapping.
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        var p = parts[i];
                                  -        if (p === '(') {
                                  -          // groups are 1-indexed, so max group index is count of '('
                                  -          ++groupIndex;
                                  -        } else if ('\\' === p.charAt(0)) {
                                  -          var decimalValue = +p.substring(1);
                                  -          if (decimalValue && decimalValue <= groupIndex) {
                                  -            capturedGroups[decimalValue] = -1;
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // Renumber groups and reduce capturing groups to non-capturing groups
                                  -      // where possible.
                                  -      for (var i = 1; i < capturedGroups.length; ++i) {
                                  -        if (-1 === capturedGroups[i]) {
                                  -          capturedGroups[i] = ++capturedGroupIndex;
                                  -        }
                                  -      }
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        var p = parts[i];
                                  -        if (p === '(') {
                                  -          ++groupIndex;
                                  -          if (capturedGroups[groupIndex] === undefined) {
                                  -            parts[i] = '(?:';
                                  -          }
                                  -        } else if ('\\' === p.charAt(0)) {
                                  -          var decimalValue = +p.substring(1);
                                  -          if (decimalValue && decimalValue <= groupIndex) {
                                  -            parts[i] = '\\' + capturedGroups[groupIndex];
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      // Remove any prefix anchors so that the output will match anywhere.
                                  -      // ^^ really does mean an anchored match though.
                                  -      for (var i = 0, groupIndex = 0; i < n; ++i) {
                                  -        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
                                  -      }
                                  -
                                  -      // Expand letters to groupts to handle mixing of case-sensitive and
                                  -      // case-insensitive patterns if necessary.
                                  -      if (regex.ignoreCase && needToFoldCase) {
                                  -        for (var i = 0; i < n; ++i) {
                                  -          var p = parts[i];
                                  -          var ch0 = p.charAt(0);
                                  -          if (p.length >= 2 && ch0 === '[') {
                                  -            parts[i] = caseFoldCharset(p);
                                  -          } else if (ch0 !== '\\') {
                                  -            // TODO: handle letters in numeric escapes.
                                  -            parts[i] = p.replace(
                                  -                /[a-zA-Z]/g,
                                  -                function (ch) {
                                  -                  var cc = ch.charCodeAt(0);
                                  -                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
                                  -                });
                                  -          }
                                  -        }
                                  -      }
                                  -
                                  -      return parts.join('');
                                  -    }
                                  -
                                  -    var rewritten = [];
                                  -    for (var i = 0, n = regexs.length; i < n; ++i) {
                                  -      var regex = regexs[i];
                                  -      if (regex.global || regex.multiline) { throw new Error('' + regex); }
                                  -      rewritten.push(
                                  -          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
                                  -    }
                                  -
                                  -    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
                                  -  }
                                  -
                                  -  var PR_innerHtmlWorks = null;
                                  -  function getInnerHtml(node) {
                                  -    // inner html is hopelessly broken in Safari 2.0.4 when the content is
                                  -    // an html description of well formed XML and the containing tag is a PRE
                                  -    // tag, so we detect that case and emulate innerHTML.
                                  -    if (null === PR_innerHtmlWorks) {
                                  -      var testNode = document.createElement('PRE');
                                  -      testNode.appendChild(
                                  -          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
                                  -      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
                                  -    }
                                  -
                                  -    if (PR_innerHtmlWorks) {
                                  -      var content = node.innerHTML;
                                  -      // XMP tags contain unescaped entities so require special handling.
                                  -      if (isRawContent(node)) {
                                  -        content = textToHtml(content);
                                  -      } else if (!isPreformatted(node, content)) {
                                  -        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
                                  -            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
                                  -      }
                                  -      return content;
                                  -    }
                                  -
                                  -    var out = [];
                                  -    for (var child = node.firstChild; child; child = child.nextSibling) {
                                  -      normalizedHtml(child, out);
                                  -    }
                                  -    return out.join('');
                                  -  }
                                  -
                                  -  /** returns a function that expand tabs to spaces.  This function can be fed
                                  -    * successive chunks of text, and will maintain its own internal state to
                                  -    * keep track of how tabs are expanded.
                                  -    * @return {function (string) : string} a function that takes
                                  -    *   plain text and return the text with tabs expanded.
                                  -    * @private
                                  -    */
                                  -  function makeTabExpander(tabWidth) {
                                  -    var SPACES = '                ';
                                  -    var charInLine = 0;
                                  -
                                  -    return function (plainText) {
                                  -      // walk over each character looking for tabs and newlines.
                                  -      // On tabs, expand them.  On newlines, reset charInLine.
                                  -      // Otherwise increment charInLine
                                  -      var out = null;
                                  -      var pos = 0;
                                  -      for (var i = 0, n = plainText.length; i < n; ++i) {
                                  -        var ch = plainText.charAt(i);
                                  -
                                  -        switch (ch) {
                                  -          case '\t':
                                  -            if (!out) { out = []; }
                                  -            out.push(plainText.substring(pos, i));
                                  -            // calculate how much space we need in front of this part
                                  -            // nSpaces is the amount of padding -- the number of spaces needed
                                  -            // to move us to the next column, where columns occur at factors of
                                  -            // tabWidth.
                                  -            var nSpaces = tabWidth - (charInLine % tabWidth);
                                  -            charInLine += nSpaces;
                                  -            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
                                  -              out.push(SPACES.substring(0, nSpaces));
                                  -            }
                                  -            pos = i + 1;
                                  -            break;
                                  -          case '\n':
                                  -            charInLine = 0;
                                  -            break;
                                  -          default:
                                  -            ++charInLine;
                                  -        }
                                  -      }
                                  -      if (!out) { return plainText; }
                                  -      out.push(plainText.substring(pos));
                                  -      return out.join('');
                                  -    };
                                  -  }
                                  -
                                  -  var pr_chunkPattern = new RegExp(
                                  -      '[^<]+'  // A run of characters other than '<'
                                  -      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
                                  -      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
                                  -      // a probable tag that should not be highlighted
                                  -      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
                                  -      + '|<',  // A '<' that does not begin a larger chunk
                                  -      'g');
                                  -  var pr_commentPrefix = /^<\!--/;
                                  -  var pr_cdataPrefix = /^<!\[CDATA\[/;
                                  -  var pr_brPrefix = /^<br\b/i;
                                  -  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
                                  -
                                  -  /** split markup into chunks of html tags (style null) and
                                  -    * plain text (style {@link #PR_PLAIN}), converting tags which are
                                  -    * significant for tokenization (<br>) into their textual equivalent.
                                  -    *
                                  -    * @param {string} s html where whitespace is considered significant.
                                  -    * @return {Object} source code and extracted tags.
                                  -    * @private
                                  -    */
                                  -  function extractTags(s) {
                                  -    // since the pattern has the 'g' modifier and defines no capturing groups,
                                  -    // this will return a list of all chunks which we then classify and wrap as
                                  -    // PR_Tokens
                                  -    var matches = s.match(pr_chunkPattern);
                                  -    var sourceBuf = [];
                                  -    var sourceBufLen = 0;
                                  -    var extractedTags = [];
                                  -    if (matches) {
                                  -      for (var i = 0, n = matches.length; i < n; ++i) {
                                  -        var match = matches[i];
                                  -        if (match.length > 1 && match.charAt(0) === '<') {
                                  -          if (pr_commentPrefix.test(match)) { continue; }
                                  -          if (pr_cdataPrefix.test(match)) {
                                  -            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
                                  -            sourceBuf.push(match.substring(9, match.length - 3));
                                  -            sourceBufLen += match.length - 12;
                                  -          } else if (pr_brPrefix.test(match)) {
                                  -            // <br> tags are lexically significant so convert them to text.
                                  -            // This is undone later.
                                  -            sourceBuf.push('\n');
                                  -            ++sourceBufLen;
                                  -          } else {
                                  -            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
                                  -              // A <span class="nocode"> will start a section that should be
                                  -              // ignored.  Continue walking the list until we see a matching end
                                  -              // tag.
                                  -              var name = match.match(pr_tagNameRe)[2];
                                  -              var depth = 1;
                                  -              var j;
                                  -              end_tag_loop:
                                  -              for (j = i + 1; j < n; ++j) {
                                  -                var name2 = matches[j].match(pr_tagNameRe);
                                  -                if (name2 && name2[2] === name) {
                                  -                  if (name2[1] === '/') {
                                  -                    if (--depth === 0) { break end_tag_loop; }
                                  -                  } else {
                                  -                    ++depth;
                                  -                  }
                                  -                }
                                  -              }
                                  -              if (j < n) {
                                  -                extractedTags.push(
                                  -                    sourceBufLen, matches.slice(i, j + 1).join(''));
                                  -                i = j;
                                  -              } else {  // Ignore unclosed sections.
                                  -                extractedTags.push(sourceBufLen, match);
                                  -              }
                                  -            } else {
                                  -              extractedTags.push(sourceBufLen, match);
                                  -            }
                                  -          }
                                  -        } else {
                                  -          var literalText = htmlToText(match);
                                  -          sourceBuf.push(literalText);
                                  -          sourceBufLen += literalText.length;
                                  -        }
                                  -      }
                                  -    }
                                  -    return { source: sourceBuf.join(''), tags: extractedTags };
                                  -  }
                                  -
                                  -  /** True if the given tag contains a class attribute with the nocode class. */
                                  -  function isNoCodeTag(tag) {
                                  -    return !!tag
                                  -        // First canonicalize the representation of attributes
                                  -        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
                                  -                 ' $1="$2$3$4"')
                                  -        // Then look for the attribute we want.
                                  -        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
                                  -  }
                                  -
                                  -  /**
                                  -   * Apply the given language handler to sourceCode and add the resulting
                                  -   * decorations to out.
                                  -   * @param {number} basePos the index of sourceCode within the chunk of source
                                  -   *    whose decorations are already present on out.
                                  -   */
                                  -  function appendDecorations(basePos, sourceCode, langHandler, out) {
                                  -    if (!sourceCode) { return; }
                                  -    var job = {
                                  -      source: sourceCode,
                                  -      basePos: basePos
                                  -    };
                                  -    langHandler(job);
                                  -    out.push.apply(out, job.decorations);
                                  -  }
                                  -
                                  -  /** Given triples of [style, pattern, context] returns a lexing function,
                                  -    * The lexing function interprets the patterns to find token boundaries and
                                  -    * returns a decoration list of the form
                                  -    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
                                  -    * where index_n is an index into the sourceCode, and style_n is a style
                                  -    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
                                  -    * all characters in sourceCode[index_n-1:index_n].
                                  -    *
                                  -    * The stylePatterns is a list whose elements have the form
                                  -    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
                                  -    *
                                  -    * Style is a style constant like PR_PLAIN, or can be a string of the
                                  -    * form 'lang-FOO', where FOO is a language extension describing the
                                  -    * language of the portion of the token in $1 after pattern executes.
                                  -    * E.g., if style is 'lang-lisp', and group 1 contains the text
                                  -    * '(hello (world))', then that portion of the token will be passed to the
                                  -    * registered lisp handler for formatting.
                                  -    * The text before and after group 1 will be restyled using this decorator
                                  -    * so decorators should take care that this doesn't result in infinite
                                  -    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
                                  -    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
                                  -    * '<script>foo()<\/script>', which would cause the current decorator to
                                  -    * be called with '<script>' which would not match the same rule since
                                  -    * group 1 must not be empty, so it would be instead styled as PR_TAG by
                                  -    * the generic tag rule.  The handler registered for the 'js' extension would
                                  -    * then be called with 'foo()', and finally, the current decorator would
                                  -    * be called with '<\/script>' which would not match the original rule and
                                  -    * so the generic tag rule would identify it as a tag.
                                  -    *
                                  -    * Pattern must only match prefixes, and if it matches a prefix, then that
                                  -    * match is considered a token with the same style.
                                  -    *
                                  -    * Context is applied to the last non-whitespace, non-comment token
                                  -    * recognized.
                                  -    *
                                  -    * Shortcut is an optional string of characters, any of which, if the first
                                  -    * character, gurantee that this pattern and only this pattern matches.
                                  -    *
                                  -    * @param {Array} shortcutStylePatterns patterns that always start with
                                  -    *   a known character.  Must have a shortcut string.
                                  -    * @param {Array} fallthroughStylePatterns patterns that will be tried in
                                  -    *   order if the shortcut ones fail.  May have shortcuts.
                                  -    *
                                  -    * @return {function (Object)} a
                                  -    *   function that takes source code and returns a list of decorations.
                                  -    */
                                  -  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
                                  -    var shortcuts = {};
                                  -    var tokenizer;
                                  -    (function () {
                                  -      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
                                  -      var allRegexs = [];
                                  -      var regexKeys = {};
                                  -      for (var i = 0, n = allPatterns.length; i < n; ++i) {
                                  -        var patternParts = allPatterns[i];
                                  -        var shortcutChars = patternParts[3];
                                  -        if (shortcutChars) {
                                  -          for (var c = shortcutChars.length; --c >= 0;) {
                                  -            shortcuts[shortcutChars.charAt(c)] = patternParts;
                                  -          }
                                  -        }
                                  -        var regex = patternParts[1];
                                  -        var k = '' + regex;
                                  -        if (!regexKeys.hasOwnProperty(k)) {
                                  -          allRegexs.push(regex);
                                  -          regexKeys[k] = null;
                                  -        }
                                  -      }
                                  -      allRegexs.push(/[\0-\uffff]/);
                                  -      tokenizer = combinePrefixPatterns(allRegexs);
                                  -    })();
                                  -
                                  -    var nPatterns = fallthroughStylePatterns.length;
                                  -    var notWs = /\S/;
                                  -
                                  -    /**
                                  -     * Lexes job.source and produces an output array job.decorations of style
                                  -     * classes preceded by the position at which they start in job.source in
                                  -     * order.
                                  -     *
                                  -     * @param {Object} job an object like {@code
                                  -     *    source: {string} sourceText plain text,
                                  -     *    basePos: {int} position of job.source in the larger chunk of
                                  -     *        sourceCode.
                                  -     * }
                                  -     */
                                  -    var decorate = function (job) {
                                  -      var sourceCode = job.source, basePos = job.basePos;
                                  -      /** Even entries are positions in source in ascending order.  Odd enties
                                  -        * are style markers (e.g., PR_COMMENT) that run from that position until
                                  -        * the end.
                                  -        * @type {Array.<number|string>}
                                  -        */
                                  -      var decorations = [basePos, PR_PLAIN];
                                  -      var pos = 0;  // index into sourceCode
                                  -      var tokens = sourceCode.match(tokenizer) || [];
                                  -      var styleCache = {};
                                  -
                                  -      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
                                  -        var token = tokens[ti];
                                  -        var style = styleCache[token];
                                  -        var match = void 0;
                                  -
                                  -        var isEmbedded;
                                  -        if (typeof style === 'string') {
                                  -          isEmbedded = false;
                                  -        } else {
                                  -          var patternParts = shortcuts[token.charAt(0)];
                                  -          if (patternParts) {
                                  -            match = token.match(patternParts[1]);
                                  -            style = patternParts[0];
                                  -          } else {
                                  -            for (var i = 0; i < nPatterns; ++i) {
                                  -              patternParts = fallthroughStylePatterns[i];
                                  -              match = token.match(patternParts[1]);
                                  -              if (match) {
                                  -                style = patternParts[0];
                                  -                break;
                                  -              }
                                  -            }
                                  -
                                  -            if (!match) {  // make sure that we make progress
                                  -              style = PR_PLAIN;
                                  -            }
                                  -          }
                                  -
                                  -          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
                                  -          if (isEmbedded && !(match && typeof match[1] === 'string')) {
                                  -            isEmbedded = false;
                                  -            style = PR_SOURCE;
                                  -          }
                                  -
                                  -          if (!isEmbedded) { styleCache[token] = style; }
                                  -        }
                                  -
                                  -        var tokenStart = pos;
                                  -        pos += token.length;
                                  -
                                  -        if (!isEmbedded) {
                                  -          decorations.push(basePos + tokenStart, style);
                                  -        } else {  // Treat group 1 as an embedded block of source code.
                                  -          var embeddedSource = match[1];
                                  -          var embeddedSourceStart = token.indexOf(embeddedSource);
                                  -          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
                                  -          if (match[2]) {
                                  -            // If embeddedSource can be blank, then it would match at the
                                  -            // beginning which would cause us to infinitely recurse on the
                                  -            // entire token, so we catch the right context in match[2].
                                  -            embeddedSourceEnd = token.length - match[2].length;
                                  -            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
                                  -          }
                                  -          var lang = style.substring(5);
                                  -          // Decorate the left of the embedded source
                                  -          appendDecorations(
                                  -              basePos + tokenStart,
                                  -              token.substring(0, embeddedSourceStart),
                                  -              decorate, decorations);
                                  -          // Decorate the embedded source
                                  -          appendDecorations(
                                  -              basePos + tokenStart + embeddedSourceStart,
                                  -              embeddedSource,
                                  -              langHandlerForExtension(lang, embeddedSource),
                                  -              decorations);
                                  -          // Decorate the right of the embedded section
                                  -          appendDecorations(
                                  -              basePos + tokenStart + embeddedSourceEnd,
                                  -              token.substring(embeddedSourceEnd),
                                  -              decorate, decorations);
                                  -        }
                                  -      }
                                  -      job.decorations = decorations;
                                  -    };
                                  -    return decorate;
                                  -  }
                                  -
                                  -  /** returns a function that produces a list of decorations from source text.
                                  -    *
                                  -    * This code treats ", ', and ` as string delimiters, and \ as a string
                                  -    * escape.  It does not recognize perl's qq() style strings.
                                  -    * It has no special handling for double delimiter escapes as in basic, or
                                  -    * the tripled delimiters used in python, but should work on those regardless
                                  -    * although in those cases a single string literal may be broken up into
                                  -    * multiple adjacent string literals.
                                  -    *
                                  -    * It recognizes C, C++, and shell style comments.
                                  -    *
                                  -    * @param {Object} options a set of optional parameters.
                                  -    * @return {function (Object)} a function that examines the source code
                                  -    *     in the input job and builds the decoration list.
                                  -    */
                                  -  function sourceDecorator(options) {
                                  -    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
                                  -    if (options['tripleQuotedStrings']) {
                                  -      // '''multi-line-string''', 'single-line-string', and double-quoted
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
                                  -           null, '\'"']);
                                  -    } else if (options['multiLineStrings']) {
                                  -      // 'multi-line-string', "multi-line-string"
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
                                  -           null, '\'"`']);
                                  -    } else {
                                  -      // 'single-line-string', "single-line-string"
                                  -      shortcutStylePatterns.push(
                                  -          [PR_STRING,
                                  -           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
                                  -           null, '"\'']);
                                  -    }
                                  -    if (options['verbatimStrings']) {
                                  -      // verbatim-string-literal production from the C# grammar.  See issue 93.
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
                                  -    }
                                  -    if (options['hashComments']) {
                                  -      if (options['cStyleComments']) {
                                  -        // Stop C preprocessor declarations at an unclosed open comment
                                  -        shortcutStylePatterns.push(
                                  -            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
                                  -             null, '#']);
                                  -        fallthroughStylePatterns.push(
                                  -            [PR_STRING,
                                  -             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
                                  -             null]);
                                  -      } else {
                                  -        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
                                  -      }
                                  -    }
                                  -    if (options['cStyleComments']) {
                                  -      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
                                  -    }
                                  -    if (options['regexLiterals']) {
                                  -      var REGEX_LITERAL = (
                                  -          // A regular expression literal starts with a slash that is
                                  -          // not followed by * or / so that it is not confused with
                                  -          // comments.
                                  -          '/(?=[^/*])'
                                  -          // and then contains any number of raw characters,
                                  -          + '(?:[^/\\x5B\\x5C]'
                                  -          // escape sequences (\x5C),
                                  -          +    '|\\x5C[\\s\\S]'
                                  -          // or non-nesting character sets (\x5B\x5D);
                                  -          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
                                  -          // finally closed by a /.
                                  -          + '/');
                                  -      fallthroughStylePatterns.push(
                                  -          ['lang-regex',
                                  -           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
                                  -           ]);
                                  -    }
                                  -
                                  -    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
                                  -    if (keywords.length) {
                                  -      fallthroughStylePatterns.push(
                                  -          [PR_KEYWORD,
                                  -           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
                                  -    }
                                  -
                                  -    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
                                  -    fallthroughStylePatterns.push(
                                  -        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
                                  -        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
                                  -        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
                                  -        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
                                  -        [PR_LITERAL,
                                  -         new RegExp(
                                  -             '^(?:'
                                  -             // A hex number
                                  -             + '0x[a-f0-9]+'
                                  -             // or an octal or decimal number,
                                  -             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
                                  -             // possibly in scientific notation
                                  -             + '(?:e[+\\-]?\\d+)?'
                                  -             + ')'
                                  -             // with an optional modifier like UL for unsigned long
                                  -             + '[a-z]*', 'i'),
                                  -         null, '0123456789'],
                                  -        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
                                  -
                                  -    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
                                  -  }
                                  -
                                  -  var decorateSource = sourceDecorator({
                                  -        'keywords': ALL_KEYWORDS,
                                  -        'hashComments': true,
                                  -        'cStyleComments': true,
                                  -        'multiLineStrings': true,
                                  -        'regexLiterals': true
                                  -      });
                                  -
                                  -  /** Breaks {@code job.source} around style boundaries in
                                  -    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
                                  -    * and leaves the result in {@code job.prettyPrintedHtml}.
                                  -    * @param {Object} job like {
                                  -    *    source: {string} source as plain text,
                                  -    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
                                  -    *                   html preceded by their position in {@code job.source}
                                  -    *                   in order
                                  -    *    decorations: {Array.<number|string} an array of style classes preceded
                                  -    *                 by the position at which they start in job.source in order
                                  -    * }
                                  -    * @private
                                  -    */
                                  -  function recombineTagsAndDecorations(job) {
                                  -    var sourceText = job.source;
                                  -    var extractedTags = job.extractedTags;
                                  -    var decorations = job.decorations;
                                  -
                                  -    var html = [];
                                  -    // index past the last char in sourceText written to html
                                  -    var outputIdx = 0;
                                  -
                                  -    var openDecoration = null;
                                  -    var currentDecoration = null;
                                  -    var tagPos = 0;  // index into extractedTags
                                  -    var decPos = 0;  // index into decorations
                                  -    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
                                  -
                                  -    var adjacentSpaceRe = /([\r\n ]) /g;
                                  -    var startOrSpaceRe = /(^| ) /gm;
                                  -    var newlineRe = /\r\n?|\n/g;
                                  -    var trailingSpaceRe = /[ \r\n]$/;
                                  -    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
                                  -
                                  -    // A helper function that is responsible for opening sections of decoration
                                  -    // and outputing properly escaped chunks of source
                                  -    function emitTextUpTo(sourceIdx) {
                                  -      if (sourceIdx > outputIdx) {
                                  -        if (openDecoration && openDecoration !== currentDecoration) {
                                  -          // Close the current decoration
                                  -          html.push('</span>');
                                  -          openDecoration = null;
                                  -        }
                                  -        if (!openDecoration && currentDecoration) {
                                  -          openDecoration = currentDecoration;
                                  -          html.push('<span class="', openDecoration, '">');
                                  -        }
                                  -        // This interacts badly with some wikis which introduces paragraph tags
                                  -        // into pre blocks for some strange reason.
                                  -        // It's necessary for IE though which seems to lose the preformattedness
                                  -        // of <pre> tags when their innerHTML is assigned.
                                  -        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
                                  -        // and it serves to undo the conversion of <br>s to newlines done in
                                  -        // chunkify.
                                  -        var htmlChunk = textToHtml(
                                  -            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
                                  -            .replace(lastWasSpace
                                  -                     ? startOrSpaceRe
                                  -                     : adjacentSpaceRe, '$1&nbsp;');
                                  -        // Keep track of whether we need to escape space at the beginning of the
                                  -        // next chunk.
                                  -        lastWasSpace = trailingSpaceRe.test(htmlChunk);
                                  -        // IE collapses multiple adjacient <br>s into 1 line break.
                                  -        // Prefix every <br> with '&nbsp;' can prevent such IE's behavior.
                                  -        var lineBreakHtml = window['_pr_isIE6']() ? '&nbsp;<br />' : '<br />';
                                  -        html.push(htmlChunk.replace(newlineRe, lineBreakHtml));
                                  -        outputIdx = sourceIdx;
                                  -      }
                                  -    }
                                  -
                                  -    while (true) {
                                  -      // Determine if we're going to consume a tag this time around.  Otherwise
                                  -      // we consume a decoration or exit.
                                  -      var outputTag;
                                  -      if (tagPos < extractedTags.length) {
                                  -        if (decPos < decorations.length) {
                                  -          // Pick one giving preference to extractedTags since we shouldn't open
                                  -          // a new style that we're going to have to immediately close in order
                                  -          // to output a tag.
                                  -          outputTag = extractedTags[tagPos] <= decorations[decPos];
                                  -        } else {
                                  -          outputTag = true;
                                  -        }
                                  -      } else {
                                  -        outputTag = false;
                                  -      }
                                  -      // Consume either a decoration or a tag or exit.
                                  -      if (outputTag) {
                                  -        emitTextUpTo(extractedTags[tagPos]);
                                  -        if (openDecoration) {
                                  -          // Close the current decoration
                                  -          html.push('</span>');
                                  -          openDecoration = null;
                                  -        }
                                  -        html.push(extractedTags[tagPos + 1]);
                                  -        tagPos += 2;
                                  -      } else if (decPos < decorations.length) {
                                  -        emitTextUpTo(decorations[decPos]);
                                  -        currentDecoration = decorations[decPos + 1];
                                  -        decPos += 2;
                                  -      } else {
                                  -        break;
                                  -      }
                                  -    }
                                  -    emitTextUpTo(sourceText.length);
                                  -    if (openDecoration) {
                                  -      html.push('</span>');
                                  -    }
                                  -    job.prettyPrintedHtml = html.join('');
                                  -  }
                                  -
                                  -  /** Maps language-specific file extensions to handlers. */
                                  -  var langHandlerRegistry = {};
                                  -  /** Register a language handler for the given file extensions.
                                  -    * @param {function (Object)} handler a function from source code to a list
                                  -    *      of decorations.  Takes a single argument job which describes the
                                  -    *      state of the computation.   The single parameter has the form
                                  -    *      {@code {
                                  -    *        source: {string} as plain text.
                                  -    *        decorations: {Array.<number|string>} an array of style classes
                                  -    *                     preceded by the position at which they start in
                                  -    *                     job.source in order.
                                  -    *                     The language handler should assigned this field.
                                  -    *        basePos: {int} the position of source in the larger source chunk.
                                  -    *                 All positions in the output decorations array are relative
                                  -    *                 to the larger source chunk.
                                  -    *      } }
                                  -    * @param {Array.<string>} fileExtensions
                                  -    */
                                  -  function registerLangHandler(handler, fileExtensions) {
                                  -    for (var i = fileExtensions.length; --i >= 0;) {
                                  -      var ext = fileExtensions[i];
                                  -      if (!langHandlerRegistry.hasOwnProperty(ext)) {
                                  -        langHandlerRegistry[ext] = handler;
                                  -      } else if ('console' in window) {
                                  -        console.warn('cannot override language handler %s', ext);
                                  -      }
                                  -    }
                                  -  }
                                  -  function langHandlerForExtension(extension, source) {
                                  -    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
                                  -      // Treat it as markup if the first non whitespace character is a < and
                                  -      // the last non-whitespace character is a >.
                                  -      extension = /^\s*</.test(source)
                                  -          ? 'default-markup'
                                  -          : 'default-code';
                                  -    }
                                  -    return langHandlerRegistry[extension];
                                  -  }
                                  -  registerLangHandler(decorateSource, ['default-code']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer(
                                  -          [],
                                  -          [
                                  -           [PR_PLAIN,       /^[^<?]+/],
                                  -           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
                                  -           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
                                  -           // Unescaped content in an unknown language
                                  -           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
                                  -           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
                                  -           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
                                  -           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
                                  -           // Unescaped content in javascript.  (Or possibly vbscript).
                                  -           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
                                  -           // Contains unescaped stylesheet content
                                  -           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
                                  -           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
                                  -          ]),
                                  -      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer(
                                  -          [
                                  -           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
                                  -           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
                                  -           ],
                                  -          [
                                  -           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
                                  -           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
                                  -           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
                                  -           [PR_PUNCTUATION,  /^[=<>\/]+/],
                                  -           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
                                  -           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
                                  -           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
                                  -           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
                                  -           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
                                  -           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
                                  -           ]),
                                  -      ['in.tag']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': CPP_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'cStyleComments': true
                                  -        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': 'null true false'
                                  -        }), ['json']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': CSHARP_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'cStyleComments': true,
                                  -          'verbatimStrings': true
                                  -        }), ['cs']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': JAVA_KEYWORDS,
                                  -          'cStyleComments': true
                                  -        }), ['java']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': SH_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true
                                  -        }), ['bsh', 'csh', 'sh']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': PYTHON_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'tripleQuotedStrings': true
                                  -        }), ['cv', 'py']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': PERL_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'regexLiterals': true
                                  -        }), ['perl', 'pl', 'pm']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': RUBY_KEYWORDS,
                                  -          'hashComments': true,
                                  -          'multiLineStrings': true,
                                  -          'regexLiterals': true
                                  -        }), ['rb']);
                                  -  registerLangHandler(sourceDecorator({
                                  -          'keywords': JSCRIPT_KEYWORDS,
                                  -          'cStyleComments': true,
                                  -          'regexLiterals': true
                                  -        }), ['js']);
                                  -  registerLangHandler(
                                  -      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
                                  -
                                  -  function applyDecorator(job) {
                                  -    var sourceCodeHtml = job.sourceCodeHtml;
                                  -    var opt_langExtension = job.langExtension;
                                  -
                                  -    // Prepopulate output in case processing fails with an exception.
                                  -    job.prettyPrintedHtml = sourceCodeHtml;
                                  -
                                  -    try {
                                  -      // Extract tags, and convert the source code to plain text.
                                  -      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
                                  -      /** Plain text. @type {string} */
                                  -      var source = sourceAndExtractedTags.source;
                                  -      job.source = source;
                                  -      job.basePos = 0;
                                  -
                                  -      /** Even entries are positions in source in ascending order.  Odd entries
                                  -        * are tags that were extracted at that position.
                                  -        * @type {Array.<number|string>}
                                  -        */
                                  -      job.extractedTags = sourceAndExtractedTags.tags;
                                  -
                                  -      // Apply the appropriate language handler
                                  -      langHandlerForExtension(opt_langExtension, source)(job);
                                  -      // Integrate the decorations and tags back into the source code to produce
                                  -      // a decorated html string which is left in job.prettyPrintedHtml.
                                  -      recombineTagsAndDecorations(job);
                                  -    } catch (e) {
                                  -      if ('console' in window) {
                                  -        console.log(e);
                                  -        console.trace();
                                  -      }
                                  -    }
                                  -  }
                                  -
                                  -  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
                                  -    var job = {
                                  -      sourceCodeHtml: sourceCodeHtml,
                                  -      langExtension: opt_langExtension
                                  -    };
                                  -    applyDecorator(job);
                                  -    return job.prettyPrintedHtml;
                                  -  }
                                  -
                                  -  function prettyPrint(opt_whenDone) {
                                  -    var isIE678 = window['_pr_isIE6']();
                                  -    var ieNewline = isIE678 === 6 ? '\r\n' : '\r';
                                  -    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
                                  -
                                  -    // fetch a list of nodes to rewrite
                                  -    var codeSegments = [
                                  -        document.getElementsByTagName('pre'),
                                  -        document.getElementsByTagName('code'),
                                  -        document.getElementsByTagName('xmp') ];
                                  -    var elements = [];
                                  -    for (var i = 0; i < codeSegments.length; ++i) {
                                  -      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
                                  -        elements.push(codeSegments[i][j]);
                                  -      }
                                  -    }
                                  -    codeSegments = null;
                                  -
                                  -    var clock = Date;
                                  -    if (!clock['now']) {
                                  -      clock = { 'now': function () { return (new Date).getTime(); } };
                                  -    }
                                  -
                                  -    // The loop is broken into a series of continuations to make sure that we
                                  -    // don't make the browser unresponsive when rewriting a large page.
                                  -    var k = 0;
                                  -    var prettyPrintingJob;
                                  -
                                  -    function doWork() {
                                  -      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
                                  -                     clock.now() + 250 /* ms */ :
                                  -                     Infinity);
                                  -      for (; k < elements.length && clock.now() < endTime; k++) {
                                  -        var cs = elements[k];
                                  -        if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
                                  -          // If the classes includes a language extensions, use it.
                                  -          // Language extensions can be specified like
                                  -          //     <pre class="prettyprint lang-cpp">
                                  -          // the language extension "cpp" is used to find a language handler as
                                  -          // passed to PR_registerLangHandler.
                                  -          var langExtension = cs.className.match(/\blang-(\w+)\b/);
                                  -          if (langExtension) { langExtension = langExtension[1]; }
                                  -
                                  -          // make sure this is not nested in an already prettified element
                                  -          var nested = false;
                                  -          for (var p = cs.parentNode; p; p = p.parentNode) {
                                  -            if ((p.tagName === 'pre' || p.tagName === 'code' ||
                                  -                 p.tagName === 'xmp') &&
                                  -                p.className && p.className.indexOf('prettyprint') >= 0) {
                                  -              nested = true;
                                  -              break;
                                  -            }
                                  -          }
                                  -          if (!nested) {
                                  -            // fetch the content as a snippet of properly escaped HTML.
                                  -            // Firefox adds newlines at the end.
                                  -            var content = getInnerHtml(cs);
                                  -            content = content.replace(/(?:\r\n?|\n)$/, '');
                                  -
                                  -            // do the pretty printing
                                  -            prettyPrintingJob = {
                                  -              sourceCodeHtml: content,
                                  -              langExtension: langExtension,
                                  -              sourceNode: cs
                                  -            };
                                  -            applyDecorator(prettyPrintingJob);
                                  -            replaceWithPrettyPrintedHtml();
                                  -          }
                                  -        }
                                  -      }
                                  -      if (k < elements.length) {
                                  -        // finish up in a continuation
                                  -        setTimeout(doWork, 250);
                                  -      } else if (opt_whenDone) {
                                  -        opt_whenDone();
                                  -      }
                                  -    }
                                  -
                                  -    function replaceWithPrettyPrintedHtml() {
                                  -      var newContent = prettyPrintingJob.prettyPrintedHtml;
                                  -      if (!newContent) { return; }
                                  -      var cs = prettyPrintingJob.sourceNode;
                                  -
                                  -      // push the prettified html back into the tag.
                                  -      if (!isRawContent(cs)) {
                                  -        // just replace the old html with the new
                                  -        cs.innerHTML = newContent;
                                  -      } else {
                                  -        // we need to change the tag to a <pre> since <xmp>s do not allow
                                  -        // embedded tags such as the span tags used to attach styles to
                                  -        // sections of source code.
                                  -        var pre = document.createElement('PRE');
                                  -        for (var i = 0; i < cs.attributes.length; ++i) {
                                  -          var a = cs.attributes[i];
                                  -          if (a.specified) {
                                  -            var aname = a.name.toLowerCase();
                                  -            if (aname === 'class') {
                                  -              pre.className = a.value;  // For IE 6
                                  -            } else {
                                  -              pre.setAttribute(a.name, a.value);
                                  -            }
                                  -          }
                                  -        }
                                  -        pre.innerHTML = newContent;
                                  -
                                  -        // remove the old
                                  -        cs.parentNode.replaceChild(pre, cs);
                                  -        cs = pre;
                                  -      }
                                  -
                                  -      // Replace <br>s with line-feeds so that copying and pasting works
                                  -      // on IE 6.
                                  -      // Doing this on other browsers breaks lots of stuff since \r\n is
                                  -      // treated as two newlines on Firefox, and doing this also slows
                                  -      // down rendering.
                                  -      if (isIE678 && cs.tagName === 'PRE') {
                                  -        var lineBreaks = cs.getElementsByTagName('br');
                                  -        for (var j = lineBreaks.length; --j >= 0;) {
                                  -          var lineBreak = lineBreaks[j];
                                  -          lineBreak.parentNode.replaceChild(
                                  -              document.createTextNode(ieNewline), lineBreak);
                                  -        }
                                  -      }
                                  -    }
                                  -
                                  -    doWork();
                                  -  }
                                  -
                                  -  window['PR_normalizedHtml'] = normalizedHtml;
                                  -  window['prettyPrintOne'] = prettyPrintOne;
                                  -  window['prettyPrint'] = prettyPrint;
                                  -  window['PR'] = {
                                  -        'combinePrefixPatterns': combinePrefixPatterns,
                                  -        'createSimpleLexer': createSimpleLexer,
                                  -        'registerLangHandler': registerLangHandler,
                                  -        'sourceDecorator': sourceDecorator,
                                  -        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
                                  -        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
                                  -        'PR_COMMENT': PR_COMMENT,
                                  -        'PR_DECLARATION': PR_DECLARATION,
                                  -        'PR_KEYWORD': PR_KEYWORD,
                                  -        'PR_LITERAL': PR_LITERAL,
                                  -        'PR_NOCODE': PR_NOCODE,
                                  -        'PR_PLAIN': PR_PLAIN,
                                  -        'PR_PUNCTUATION': PR_PUNCTUATION,
                                  -        'PR_SOURCE': PR_SOURCE,
                                  -        'PR_STRING': PR_STRING,
                                  -        'PR_TAG': PR_TAG,
                                  -        'PR_TYPE': PR_TYPE
                                  -      };
                                  -})();
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype1.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  deleted file mode 100644
                                  index 56567816..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" src="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="zfulljslint2.js"></script>
                                  -<script type="text/javascript" src="TokenReader5.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -window.onload = function()
                                  -{
                                  -    TokenReader.parseFile("../../../build/syntax-test2.js");
                                  -    //TokenReader.parseFile("../../../build/firebug-lite-beta.js");
                                  -    //console.log(TokenReader.parseFile(window.location.href))
                                  -}
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="out">Hi
                                  -  </div>
                                  -  
                                  -  <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  deleted file mode 100644
                                  index beba30d5..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  +++ /dev/null
                                  @@ -1,159 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="TokenReader9.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -debugger;
                                  -    parseTricker=parseFile(sourceText);
                                  -    parseTrick();
                                  -    
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2b.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  deleted file mode 100644
                                  index 97904ddb..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="TokenReader9b.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    parseTricker=parseFile(sourceText);
                                  -    parseTrick();
                                  -    
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype3.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  deleted file mode 100644
                                  index 4abc9ed4..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  +++ /dev/null
                                  @@ -1,80 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript" zsrc="../../../content/firebug-lite-dev.js"></script>
                                  -<script type="text/javascript" src="prettify.js"></script>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var html = getResource("../../../build/syntax-test1.js");
                                  -    console.time("z");
                                  -    prettyPrintOne(html)
                                  -    console.timeEnd("z");
                                  -}
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send();
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="out">Hi
                                  -  </div>
                                  -  
                                  -  <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype4.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  deleted file mode 100644
                                  index 37056bc0..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  +++ /dev/null
                                  @@ -1,262 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    process(sourceText);
                                  -};
                                  -
                                  -
                                  -var process = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -
                                  -    var next = function(){
                                  -        
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            var count = 0;
                                  -    
                                  -            for(;i<length;i++)
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw Interruption;
                                  -                
                                  -                s += text.charAt(i);
                                  -                
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == Interruption)
                                  -            {
                                  -                setTimeout(next, 25);
                                  -            }
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    next();
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  deleted file mode 100644
                                  index a254e339..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            //var ts = new Date().getTime();
                                  -            tokenizer.awake();
                                  -            
                                  -            while(token)
                                  -            {
                                  -                tokenizer.sleep();
                                  -                //if (new Date().getTime() - ts > 50) throw Interruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e instanceof Interruption)
                                  -            {
                                  -                onProgress(e.position, e.total);
                                  -                
                                  -                setTimeout(parse, 25);
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var token = next();
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var Interruption = function(position, total)
                                  -{
                                  -    this.position = position;
                                  -    this.total = total;
                                  -}; 
                                  -
                                  -Interruption.prototype = {toString: function() {return "Interruption"}};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -
                                  -    var ts;
                                  -    
                                  -    var self = 
                                  -    {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw new Interruption(i, length);
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                        return s;
                                  -                }
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e instanceof Interruption)
                                  -                {
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    setTimeout(self.next, 25);
                                  -                    
                                  -                    throw Interruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        sleep: function()
                                  -        {
                                  -            if (new Date().getTime() - self.ts > 50) throw new Interruption(i, length);
                                  -        },
                                  -        
                                  -        awake: function()
                                  -        {
                                  -            self.ts = new Date().getTime();
                                  -        }
                                  -    };
                                  -    
                                  -    return self;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5b.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  deleted file mode 100644
                                  index 71c99265..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  +++ /dev/null
                                  @@ -1,381 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            while(hasTokens())
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == ParserInterruption)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    runButton.value = "pause";
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    //throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5c.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  deleted file mode 100644
                                  index 7d8b4ad7..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  +++ /dev/null
                                  @@ -1,396 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            while(hasTokens())
                                  -            {
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -                
                                  -                token = next();
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == ParserInterruption)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var xxcount = 0;
                                  -    
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    runButton.value = "pause";
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var ts = new Date().getTime();
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    var scope = {
                                  -        text: sourceText,
                                  -        i:  0,
                                  -        s:  "",
                                  -        length:  sourceText.length,
                                  -        count: 0,
                                  -        running: true
                                  -    };
                                  -    
                                  -    with (scope) {
                                  -    
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    /*
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    /**/
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    //throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    }
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var process1 = function()
                                  -{
                                  -    var Interruption = {toString: function() {return "Interruption"}};
                                  -    
                                  -    /*
                                  -    var context = {
                                  -        Interruption: Interruption,
                                  -        text: sourceText,
                                  -        i: 0,
                                  -        s: "",
                                  -        length: sourceText.length,
                                  -        progressFill: document.getElementById("progressFill"),
                                  -        progressBar: document.getElementById("progressBar"),
                                  -        progressText: document.getElementById("progressText")
                                  -    };
                                  -    /**/
                                  -    
                                  -    
                                  -    var text =  sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var progressFill =  document.getElementById("progressFill");
                                  -    var progressBar =  document.getElementById("progressBar");
                                  -    var progressText =  document.getElementById("progressText");
                                  -    /**/
                                  -    
                                  -    //with(context) {
                                  -    
                                  -    var inner = function(){
                                  -        
                                  -        var ts = new Date().getTime();
                                  -
                                  -        for(;i<length;i++)
                                  -        {
                                  -            if (new Date().getTime() - ts > 50)
                                  -            {
                                  -                setTimeout(inner, 25);
                                  -                break;
                                  -            }
                                  -            
                                  -            s += text.charAt(i);
                                  -        }
                                  -        
                                  -        var value = (i+1)/length;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -        
                                  -        if (i >= length)
                                  -            progressText.innerHTML = new Date().getTime()-total + " ms";
                                  -    //}
                                  -    
                                  -    };
                                  -    
                                  -    var total = new Date().getTime();
                                  -    inner();
                                  -};
                                  -
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype6.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  deleted file mode 100644
                                  index 53731420..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  +++ /dev/null
                                  @@ -1,324 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var ParserInterruption = {toString: function() {return "ParserInterruption"}};
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            for(;;)
                                  -            {
                                  -                token = next();
                                  -                
                                  -                if (tokenizer.eof) break;
                                  -                
                                  -                if (new Date().getTime() - ts > 50) throw ParserInterruption;
                                  -            }
                                  -            
                                  -            //console.log("FIM");
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //if (e == ParserInterruption)
                                  -            //{
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            //}
                                  -        }
                                  -    };
                                  -    
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressText = document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.value = "pause";
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var running = true;
                                  -    var ts = new Date().getTime();
                                  -    
                                  -    parse();
                                  -};
                                  -
                                  -var createTokenizer = function(sourceText, onProgress, onComplete)
                                  -{
                                  -    onProgress = onProgress || function(){};
                                  -    onComplete = onComplete || function(){};
                                  -    
                                  -    var TokenizerInterruption = {toString: function() {return "TokenizerInterruption"}};
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var tokenizer = {
                                  -        next: function(){
                                  -            
                                  -            try
                                  -            {
                                  -                var ts = new Date().getTime();
                                  -        
                                  -                for(;i<length;i++)
                                  -                {
                                  -                    if (new Date().getTime() - ts > 50) throw TokenizerInterruption;
                                  -                    
                                  -                    s += text.charAt(i);
                                  -                    
                                  -                    if (++count % 1000 == 0)
                                  -                    {
                                  -                        var r = s;
                                  -                        s = "";
                                  -                        i++;
                                  -                        return r;
                                  -                    }
                                  -                }
                                  -                
                                  -                tokenizer.eof = true;
                                  -                
                                  -                running = false;
                                  -                
                                  -                onProgress(i, length);
                                  -                onComplete(i, length);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                if (e == TokenizerInterruption)
                                  -                {
                                  -                    //console.log("interruption next");
                                  -                    
                                  -                    onProgress(i, length);
                                  -                    
                                  -                    if (running)
                                  -                    {
                                  -                        setTimeout(tokenizer.next, 25);
                                  -                    }
                                  -                    
                                  -                    throw TokenizerInterruption;
                                  -                }
                                  -            }
                                  -        },
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        },
                                  -        
                                  -        hasTokens: function()
                                  -        {
                                  -            return i < length;
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype7.html b/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  deleted file mode 100644
                                  index 4a308844..00000000
                                  --- a/branches/flexBox/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  +++ /dev/null
                                  @@ -1,325 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>~ improved sourceBox prototype #2</title>
                                  -<script type="text/javascript">
                                  -// *************************************************************************************************
                                  -
                                  -/*
                                  -
                                  -pause
                                  -resume
                                  -stop?
                                  -sleep(ms)
                                  -
                                  -awake
                                  -
                                  -
                                  -*/
                                  -
                                  -
                                  -var sourceLocation = "../../../build/syntax-test1.js";
                                  -var sourceText;
                                  -
                                  -window.onload = function()
                                  -{
                                  -    var runButton = document.getElementById("run");
                                  -    var loading = document.getElementById("loading");
                                  -    loading.innerHTML = "requesting file...";
                                  -    loading.style.display = "block";
                                  -    
                                  -    setTimeout(function(){
                                  -        var xhr = getXHRObject();
                                  -        xhr.open("get", sourceLocation, true);
                                  -        xhr.onreadystatechange = function()
                                  -        {
                                  -            if (xhr.readyState == 4 && xhr.status == 200)
                                  -            {
                                  -                runButton.disabled = false;
                                  -                loading.style.display = "none";
                                  -                loading.innerHTML = "";
                                  -                sourceText = xhr.responseText;
                                  -            }
                                  -        };
                                  -        xhr.send();
                                  -    },100);
                                  -};
                                  -
                                  -var run = function()
                                  -{
                                  -    //process1();
                                  -    //return;
                                  -    
                                  -    var InterruptionEvent = Interruption;
                                  -    
                                  -    var onProgress = function(position, total)
                                  -    {
                                  -        var value = (position+1)/total;
                                  -        progressFill.style.width = Math.round(value*progressBar.clientWidth) + "px";
                                  -        progressText.innerHTML = Math.round(value*100) + "%";
                                  -    };
                                  -    
                                  -    var onComplete = function(position, total)
                                  -    {
                                  -        progressText.innerHTML = new Date().getTime() - ts + " ms";
                                  -    };
                                  -    
                                  -    var parse = function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var ts = new Date().getTime();
                                  -            
                                  -            for(;;)
                                  -            {
                                  -                token = next();
                                  -                
                                  -                if (tokenizer.eof) break;
                                  -                
                                  -                if (new Date().getTime() - ts > 50) throw InterruptionEvent;
                                  -            }
                                  -            
                                  -            running = false;
                                  -            
                                  -            tokenizer.sync(onProgress);
                                  -            tokenizer.sync(onComplete);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == InterruptionEvent)
                                  -            {
                                  -                //console.log("interruption parse");
                                  -                
                                  -                tokenizer.sync(onProgress);
                                  -                
                                  -                if (running)
                                  -                {
                                  -                    setTimeout(parse, 25);
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -    
                                  -    var progressFill = document.getElementById("progressFill");
                                  -    var progressBar = document.getElementById("progressBar");
                                  -    var progressText = document.getElementById("progressText");
                                  -    var runButton = document.getElementById("run");
                                  -    
                                  -    var tokenizer = createTokenizer(sourceText, onProgress, onComplete);
                                  -    var next = tokenizer.next;
                                  -    var hasTokens = tokenizer.hasTokens;
                                  -    var token;
                                  -    
                                  -    runButton.value = "pause";
                                  -    runButton.onclick = function()
                                  -    {
                                  -        if (running)
                                  -        {
                                  -            runButton.value = "resume";
                                  -            tokenizer.pause();
                                  -        }
                                  -        else
                                  -        {
                                  -            runButton.value = "pause";
                                  -            tokenizer.resume();
                                  -            setTimeout(parse, 25);
                                  -        }
                                  -        
                                  -        running = !running;
                                  -    };
                                  -    
                                  -    var running = true;
                                  -    var ts = new Date().getTime();
                                  -    
                                  -    parse();
                                  -};
                                  -
                                  -var Interruption = {toString: function(){return "Interruption";}};
                                  -
                                  -var createTokenizer = function(sourceText)
                                  -{
                                  -    var InterruptionEvent = Interruption;
                                  -    
                                  -    var text = sourceText;
                                  -    var i =  0;
                                  -    var s =  "";
                                  -    var length =  sourceText.length;
                                  -    var count = 0;
                                  -    var running = true;
                                  -    
                                  -    var iterator = function(){
                                  -        
                                  -        try
                                  -        {
                                  -            var timestamp = new Date().getTime();
                                  -    
                                  -            for(;i<length;)
                                  -            {
                                  -                s += text.charAt(i);
                                  -                
                                  -                if (++count % 1000 == 0)
                                  -                {
                                  -                    var r = s;
                                  -                    s = "";
                                  -                    i++;
                                  -                    return r;
                                  -                }
                                  -                
                                  -                i++;
                                  -                
                                  -                if (new Date().getTime() - timestamp > 50) throw InterruptionEvent;
                                  -            }
                                  -            
                                  -            running = false;
                                  -            tokenizer.eof = true;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            if (e == InterruptionEvent)
                                  -            {
                                  -                throw InterruptionEvent;
                                  -            }
                                  -        }
                                  -
                                  -    };
                                  -    
                                  -    var tokenizer = {
                                  -
                                  -        eof: false,
                                  -        
                                  -        next: iterator,
                                  -        
                                  -        pause: function()
                                  -        {
                                  -            running = false;
                                  -        },
                                  -        
                                  -        resume: function()
                                  -        {
                                  -            running = true;
                                  -        },
                                  -        
                                  -        sync: function(callback)
                                  -        {
                                  -            callback(i, length);
                                  -        }
                                  -    };
                                  -    
                                  -    return tokenizer;
                                  -};
                                  -
                                  -var getResource = function(url)
                                  -{
                                  -    var xhr = getXHRObject();
                                  -    xhr.open("get", url, false);
                                  -    xhr.send(null);
                                  -    
                                  -    return xhr.responseText;
                                  -};
                                  -
                                  -var getXHRObject = function()
                                  -{
                                  -    var xhrObj = false;
                                  -    try
                                  -    {
                                  -        xhrObj = new XMLHttpRequest();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var progid = [
                                  -                "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -            ];
                                  -          
                                  -        for ( var i=0; i < progid.length; ++i ) {
                                  -            try
                                  -            {
                                  -                xhrObj = new ActiveXObject(progid[i]);
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                continue;
                                  -            }
                                  -            break;
                                  -        }
                                  -    }
                                  -    finally
                                  -    {
                                  -        return xhrObj;
                                  -    }
                                  -};
                                  -
                                  -
                                  -</script>
                                  -<style type="text/css">
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    background: #eee;
                                  -}
                                  -
                                  -.strn { color: #800; }
                                  -.keyw { color: #008; }
                                  -.comm { color: #080; }
                                  -.punc { color: #660; }
                                  -.regx { color: #606; }
                                  -.numb { color: #606; }
                                  -
                                  -#source {
                                  -    overflow: auto;
                                  -    height: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -pre span {
                                  -}
                                  -
                                  -pre {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    background: #fff;
                                  -}
                                  -#progressBar {
                                  -  background: #eee;
                                  -  position: relative;
                                  -  font-size: 11px;
                                  -  height: 14px;
                                  -}
                                  -#progressFill {
                                  -  background:#316AC5;
                                  -  width:0; height:100%;
                                  -  position: absolute;
                                  -}
                                  -#progressText {
                                  -  text-align: center;
                                  -  width:100%; height:100%;
                                  -  position: absolute;
                                  -}
                                  -
                                  -#loading {
                                  -    position: absolute;
                                  -    background: #ff0;
                                  -    padding: 2px;
                                  -    display: none;
                                  -    z-index: 99;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -
                                  -  <div id="loading">&nbsp;</div>
                                  -  
                                  -  <div id="progressBar">
                                  -      <div id="progressFill">&nbsp;</div>
                                  -      <div id="progressText"></div>
                                  -  </div>
                                  -  
                                  -  <pre id="source">
                                  -  </pre>
                                  -  
                                  -  <input disabled id="run" type="button" value="run" onclick="run()" /> <i>~ :O</i>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/classic/blank.gif b/branches/flexBox/skin/classic/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/classic/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/buttonBg.png b/branches/flexBox/skin/classic/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/skin/classic/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/buttonBgHover.png b/branches/flexBox/skin/classic/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/skin/classic/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/detach.png b/branches/flexBox/skin/classic/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/skin/classic/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/detachHover.png b/branches/flexBox/skin/classic/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/skin/classic/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/disable.gif b/branches/flexBox/skin/classic/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/skin/classic/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/disable.png b/branches/flexBox/skin/classic/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/skin/classic/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/disableHover.gif b/branches/flexBox/skin/classic/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/skin/classic/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/disableHover.png b/branches/flexBox/skin/classic/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/skin/classic/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/down.png b/branches/flexBox/skin/classic/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/skin/classic/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/downActive.png b/branches/flexBox/skin/classic/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/skin/classic/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/downHover.png b/branches/flexBox/skin/classic/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/skin/classic/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/errorIcon-sm.png b/branches/flexBox/skin/classic/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/skin/classic/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/errorIcon.gif b/branches/flexBox/skin/classic/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/skin/classic/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/errorIcon.png b/branches/flexBox/skin/classic/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/skin/classic/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/firebug.css b/branches/flexBox/skin/classic/firebug.css
                                  deleted file mode 100644
                                  index 004925f8..00000000
                                  --- a/branches/flexBox/skin/classic/firebug.css
                                  +++ /dev/null
                                  @@ -1,3063 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -    font: message-box;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 6px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #d4d0c8 0 0;
                                  -    height: 28px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #d4d0c8 #fff #d4d0c8 #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 8px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #D4D0C8 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #D4D0C8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #d4d0c8 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #d4d0c8;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 28px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/classic/firebug.html b/branches/flexBox/skin/classic/firebug.html
                                  deleted file mode 100644
                                  index 4432a325..00000000
                                  --- a/branches/flexBox/skin/classic/firebug.html
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/classic/firebug.png b/branches/flexBox/skin/classic/firebug.png
                                  deleted file mode 100644
                                  index 123545a1..00000000
                                  Binary files a/branches/flexBox/skin/classic/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/group.gif b/branches/flexBox/skin/classic/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/skin/classic/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/infoIcon.gif b/branches/flexBox/skin/classic/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/skin/classic/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/infoIcon.png b/branches/flexBox/skin/classic/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/skin/classic/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/loading_16.gif b/branches/flexBox/skin/classic/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/skin/classic/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/min.png b/branches/flexBox/skin/classic/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/skin/classic/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/minHover.png b/branches/flexBox/skin/classic/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/skin/classic/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/off.png b/branches/flexBox/skin/classic/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/skin/classic/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/offHover.png b/branches/flexBox/skin/classic/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/skin/classic/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/pixel_transparent.gif b/branches/flexBox/skin/classic/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/classic/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/roundCorner.svg b/branches/flexBox/skin/classic/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/skin/classic/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/skin/classic/search.gif b/branches/flexBox/skin/classic/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/skin/classic/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/search.png b/branches/flexBox/skin/classic/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/skin/classic/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/shadow.gif b/branches/flexBox/skin/classic/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/skin/classic/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/shadow2.gif b/branches/flexBox/skin/classic/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/skin/classic/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/shadowAlpha.png b/branches/flexBox/skin/classic/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/skin/classic/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/sprite.png b/branches/flexBox/skin/classic/sprite.png
                                  deleted file mode 100644
                                  index 3fe97bb6..00000000
                                  Binary files a/branches/flexBox/skin/classic/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabHoverLeft.png b/branches/flexBox/skin/classic/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 5852d8d7..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabHoverMid.png b/branches/flexBox/skin/classic/tabHoverMid.png
                                  deleted file mode 100644
                                  index e7c9ba75..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabHoverRight.png b/branches/flexBox/skin/classic/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3c62c981..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabLeft.png b/branches/flexBox/skin/classic/tabLeft.png
                                  deleted file mode 100644
                                  index 3368de73..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMenuCheckbox.png b/branches/flexBox/skin/classic/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMenuPin.png b/branches/flexBox/skin/classic/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMenuRadio.png b/branches/flexBox/skin/classic/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMenuTarget.png b/branches/flexBox/skin/classic/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMenuTargetHover.png b/branches/flexBox/skin/classic/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabMid.png b/branches/flexBox/skin/classic/tabMid.png
                                  deleted file mode 100644
                                  index b2cfeac5..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tabRight.png b/branches/flexBox/skin/classic/tabRight.png
                                  deleted file mode 100644
                                  index 8470a95e..00000000
                                  Binary files a/branches/flexBox/skin/classic/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/textEditorBorders.gif b/branches/flexBox/skin/classic/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/skin/classic/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/textEditorBorders.png b/branches/flexBox/skin/classic/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/skin/classic/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/textEditorCorners.gif b/branches/flexBox/skin/classic/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/skin/classic/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/textEditorCorners.png b/branches/flexBox/skin/classic/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/skin/classic/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/titlebarMid.png b/branches/flexBox/skin/classic/titlebarMid.png
                                  deleted file mode 100644
                                  index e9a74163..00000000
                                  Binary files a/branches/flexBox/skin/classic/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/toolbarMid.png b/branches/flexBox/skin/classic/toolbarMid.png
                                  deleted file mode 100644
                                  index a1257f52..00000000
                                  Binary files a/branches/flexBox/skin/classic/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tree_close.gif b/branches/flexBox/skin/classic/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/skin/classic/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/tree_open.gif b/branches/flexBox/skin/classic/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/skin/classic/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/twistyClosed.png b/branches/flexBox/skin/classic/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/skin/classic/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/twistyOpen.png b/branches/flexBox/skin/classic/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/skin/classic/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/up.png b/branches/flexBox/skin/classic/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/skin/classic/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/upActive.png b/branches/flexBox/skin/classic/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/skin/classic/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/upHover.png b/branches/flexBox/skin/classic/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/skin/classic/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/warningIcon.gif b/branches/flexBox/skin/classic/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/skin/classic/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/classic/warningIcon.png b/branches/flexBox/skin/classic/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/skin/classic/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/Templarian_inspector.gif b/branches/flexBox/skin/flexBox/Templarian_inspector.gif
                                  deleted file mode 100644
                                  index 1e47e8f6..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/Templarian_inspector.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/Templarian_inspector.png b/branches/flexBox/skin/flexBox/Templarian_inspector.png
                                  deleted file mode 100644
                                  index 166a9bad..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/Templarian_inspector.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/blank.gif b/branches/flexBox/skin/flexBox/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/buttonBg.png b/branches/flexBox/skin/flexBox/buttonBg.png
                                  deleted file mode 100644
                                  index 025a2314..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/buttonBgHover.png b/branches/flexBox/skin/flexBox/buttonBgHover.png
                                  deleted file mode 100644
                                  index 816e433d..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/detach.gif b/branches/flexBox/skin/flexBox/detach.gif
                                  deleted file mode 100644
                                  index 2dd48095..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/detach.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/detach.png b/branches/flexBox/skin/flexBox/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/detachHover.gif b/branches/flexBox/skin/flexBox/detachHover.gif
                                  deleted file mode 100644
                                  index cafb4990..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/detachHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/detachHover.png b/branches/flexBox/skin/flexBox/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/firebug.css b/branches/flexBox/skin/flexBox/firebug.css
                                  deleted file mode 100644
                                  index 8de3c418..00000000
                                  --- a/branches/flexBox/skin/flexBox/firebug.css
                                  +++ /dev/null
                                  @@ -1,639 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Global styles 
                                  -************************************************************************************************* */
                                  -
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - General classes
                                  -************************************************************************************************* */
                                  -
                                  -.inlineBlockLeft {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.inlineBlockRight {
                                  -    display: block;
                                  -    float: right;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Main box
                                  -************************************************************************************************* */
                                  -
                                  -#fbContentBox {
                                  -    width: 100%;
                                  -    height: 100%;
                                  -    
                                  -    background: #fff; /* avoids glitch in FF */
                                  -    visibility: hidden; /* avoids FOUC */
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Top TabBar box
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-tabBox {
                                  -    height: 28px;
                                  -    white-space: nowrap;
                                  -    cursor: default;
                                  -    
                                  -    /* TODO: xxxpedro remove border top from image? */
                                  -    background: url("tabBgTop.png") repeat-x scroll 0 -1px #ddd;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png');
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Top PanelTabs
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-panelTabs {
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Toolbar and SidePanel Tabs Boxes
                                  -************************************************************************************************* */
                                  -
                                  -.fbToolbarBox {
                                  -    height: 27px;
                                  -    position: relative;
                                  -    cursor: default;
                                  -    
                                  -    background: url("tabBg2.png") repeat-x scroll 0 0 #FBFDFF;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg2.png');
                                  -}
                                  -
                                  -.fbToolbar {
                                  -    white-space: nowrap;
                                  -    padding: 0 2px;
                                  -    /* avoid tabs wrapping to the next line when the space is too small */
                                  -    clip: rect(0pt, 1024px, 25px, 0pt);
                                  -    /* Firefox needs position:absolute so the clip:rect works as expected */
                                  -    position: absolute;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Panel Container boxes
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelPane {
                                  -}
                                  -
                                  -#fbPanelDeck {
                                  -}
                                  -
                                  -#fbSidePanelDeck {
                                  -    width: 300px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Panel Content boxes
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-content, 
                                  -#fbPanelBar2-content {
                                  -    background: #fff;
                                  -    
                                  -    /*border-top: 1px solid #999;*/
                                  -    /*border-bottom: 1px solid #ccc;*/
                                  -}
                                  -
                                  -#fbPanelBar1-content {
                                  -    /*border-right: 1px solid #ccc;*/
                                  -}
                                  -
                                  -#fbPanelBar2-content {
                                  -    /*border-left: 1px solid #999;*/
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Command Popup box
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandPopup {
                                  -    background: #fff;
                                  -    /*border-top: 1px solid #999;*/
                                  -    /*border-right: 1px solid #ccc;*/
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Commandline box
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandBox {
                                  -    border-top: 1px solid #ccc;
                                  -    background: #fff;
                                  -    height: 18px;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Splitters
                                  -************************************************************************************************* */
                                  -
                                  -.fbSplitter {
                                  -    background: #E5E7E9;
                                  -    position: relative;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.fbHorizontalSplitter {
                                  -    width: 5px;
                                  -    background: url("horizontalSplitter.gif") repeat-y scroll 0 0 #E5E7E9;/**/
                                  -    /*border: 1px solid #bbb;
                                  -    border-width: 0 1px;/**/
                                  -    cursor: e-resize;
                                  -}
                                  -
                                  -.fbVerticalSplitter {
                                  -    height: 5px;
                                  -    background: url("verticalSplitter.gif") repeat-x scroll 0 0 #E5E7E9;/**/
                                  -    /*border: 1px solid #bbb;
                                  -    border-width: 1px 0;/**/
                                  -    cursor: n-resize;
                                  -}
                                  -
                                  -
                                  -.fbHorizontalSplitterTop {
                                  -    width: 6px;
                                  -    height: 27px;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: -1px;
                                  -    
                                  -    background: url("tabBg2.png") repeat-x scroll 0 0 #FBFDFF;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png');
                                  -}
                                  -
                                  -.fbHorizontalSplitterHandler {
                                  -    width: 4px;
                                  -    height: 24px;
                                  -    top: 4px;
                                  -    left: 2px;
                                  -    position: absolute;
                                  -    
                                  -    background: url("splitter.gif") no-repeat;
                                  -}/**/
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Splitters
                                  -************************************************************************************************* */
                                  -/*
                                  -#fbPanelSplitter {
                                  -    background: #E5E7E9;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -}
                                  -
                                  -#fbPanelSplitterContent {
                                  -    height: 28px;
                                  -    position: relative;
                                  -}
                                  -
                                  -#fbPanelSplitterTop {
                                  -    width: 4px;
                                  -    height: 28px;
                                  -    
                                  -    background: url("tabBg.png") repeat-x scroll center 3px #FBFDFF;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBg.png');
                                  -}
                                  -
                                  -#fbPanelSplitterHandler {
                                  -    width: 4px;
                                  -    height: 24px;
                                  -    top: 4px;
                                  -    left: 1px;
                                  -    position: absolute;
                                  -    
                                  -    background: url("splitter.gif") no-repeat;
                                  -}
                                  -
                                  -#fbChromeSplitter,
                                  -#fbCommandPopupSplitter,
                                  -#fbCommandPopupSplitterContent {
                                  -    background: #E5E7E9;
                                  -    height: 4px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize;
                                  -}
                                  -
                                  -#fbChromeSplitter {
                                  -    border-top: 1px solid #bbb;
                                  -    height: 3px;
                                  -}
                                  -*/
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Window Controls
                                  -************************************************************************************************* */
                                  -
                                  -.fbWindowControls {
                                  -    /* TODO: xxxpedro remove this */
                                  -    /* height + padding top + padding bottom == 28px (#fbPanelBar1-tabBox's height) */
                                  -    /*padding: 2px 7px 0 2px;*/
                                  -    
                                  -    height: 26px;
                                  -    position: absolute;
                                  -    clear: both;
                                  -    white-space: nowrap;
                                  -    
                                  -    /* TODO: xxxpedro remove border top from image? */
                                  -    background: url("tabBgTop.png") repeat-x scroll 0 -1px #ddd;
                                  -    _background-image: none !important; 
                                  -    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale src='tabBgTop.png');
                                  -}
                                  -
                                  -#fbWindowLeftControls {
                                  -    left: 0;
                                  -    width: 1024px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    clear: both;
                                  -}
                                  -
                                  -#fbWindowRightControls {
                                  -    right: 0;
                                  -    /*width: 190px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    width: 55px; /* fixed width to avoid inline elements breaking line when there's no space */
                                  -    clear: both;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Main Buttons 
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar1-innerToolbar {
                                  -    padding: 1px 0 0 3px;
                                  -}
                                  -
                                  -#fbFirebugButton {
                                  -    background: url(firebugX.png) no-repeat;
                                  -    _background: url(firebugX.gif) no-repeat;
                                  -}
                                  -
                                  -#fbInspectButton {
                                  -    background: url(Templarian_inspector.png) no-repeat 2px 2px;
                                  -    _background: url(Templarian_inspector.gif) no-repeat 2px 2px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Search 
                                  -************************************************************************************************* */
                                  -
                                  -#fbSearch {
                                  -    padding: 2px 7px 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -#fbSearch input {
                                  -    -moz-border-radius: 5px;
                                  -    border: 1px solid #999;
                                  -    padding: 2px 4px;
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    width: 100px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Window butons 
                                  -************************************************************************************************* */
                                  -
                                  -/* TODO xxxpedro change to class used more than once in css */
                                  -#fbWindowButtons {
                                  -    padding: 4px 3px 0 0;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -    _background: url(min.gif);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -    _background: url(minHover.gif);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -    _background: url(detach.gif);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -    _background: url(detachHover.gif);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -    _background: url(off.gif);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -    _background: url(offHover.gif);
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Tabs
                                  -************************************************************************************************* */
                                  -
                                  -.panelTab {
                                  -    display: block;
                                  -    float: left;
                                  -    padding: 6px 7px 6px;
                                  -    margin: 0;
                                  -    font-weight: bold;
                                  -    color: #888;
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    line-height: 14px;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    border-radius: 4px 4px 0 0;
                                  -}
                                  -
                                  -.panelTab:hover {
                                  -    padding: 5px 6px 6px;
                                  -    background: #ddd;
                                  -    border: 1px solid #aaa;
                                  -    border-bottom-width: 0;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    color: #000;
                                  -    padding: 5px 7px 6px !important;
                                  -    background: #FBFDFF !important;
                                  -    border: 1px solid #aaa;
                                  -    border-bottom-width: 0;
                                  -}
                                  -
                                  -.panelOptions {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbSelectedTab .panelOptions {
                                  -    display: inline;
                                  -    font-family: monospace;
                                  -    padding-left: 20px;
                                  -    background: url(panelOptions.png) no-repeat 4px 0;
                                  -    cursor: default;
                                  -    line-height: 11px;
                                  -    position: relative;
                                  -    top: -1px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - SidePanel Tabs
                                  -************************************************************************************************* */
                                  -
                                  -#fbPanelBar2-panelTabs .panelTab {
                                  -    color: #aaa;
                                  -    margin: 2px 0;
                                  -    padding: 4px 5px 4px;
                                  -    -moz-border-radius: 4px;
                                  -    border-radius: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2-panelTabs .panelTab:hover {
                                  -    background: #eee;
                                  -    padding: 3px 4px 3px;
                                  -    border-width: 1px;
                                  -}
                                  -
                                  -#fbPanelBar2-panelTabs .fbSelectedTab {
                                  -    padding: 3px 4px 3px !important;
                                  -    background: #fff !important;
                                  -    color: #000;
                                  -    border-width: 1px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - CommandLine
                                  -************************************************************************************************* */
                                  -
                                  -#fbCommandArrow {
                                  -    position: absolute;
                                  -    font: 11px Monaco,monospace;
                                  -    color: #00f;
                                  -    padding: 2px 2px 2px 4px;
                                  -    z-index: 2;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    _top: 2px; /* IE6 */
                                  -    left: 0;
                                  -	width: 100%;
                                  -    border: 0;
                                  -    height: 16px;
                                  -    line-height: 16px;
                                  -    padding: 0 0 0 28px;
                                  -    margin: 0;
                                  -    font: 12px Monaco,monospace;
                                  -    z-index: 1;
                                  -    outline: none;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE
                                  -************************************************************************************************* */
                                  -
                                  -/* FIXME remove this? */
                                  -.hideCommandLineREMOVETHIS #fbCommandBox,
                                  -
                                  -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
                                  -.hideCommandLineHACK #fbCommandBox,
                                  -.hideLargeCommandLineHACK #fbBottomPaneSplitter,
                                  -.hideLargeCommandLineHACK #fbLargeCommandLinePane,
                                  -.FirebugPopup #fbChromeSplitter,  /* FIXME */ 
                                  -/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
                                  -
                                  -.hideSidePanelBar #fbPanelSplitter,
                                  -.hideSidePanelBar #fbSidePanelDeck,
                                  -.hideCommandPopup #fbCommandPopupSplitter, /* remove this? */
                                  -.hideCommandPopup #fbCommandPopup /* remove this? */ {
                                  -    display: none;
                                  -}
                                  -
                                  -.hideCommandPopup #fbCommandBox {
                                  -    border: none;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE - Status Bar
                                  -************************************************************************************************* */
                                  -.fbToolbarButtons,
                                  -.fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 3px;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE - Mini Chrome
                                  -************************************************************************************************* */
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    /* FIXME xxxpedro should remove the sprite.png file dependency */
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;
                                  -    /* FIXME xxxpedro should remove the sprite.png file dependency */
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - New bottom panel hack
                                  -************************************************************************************************* */
                                  -
                                  -
                                  -#fbBottomPane {
                                  -  height: 100px;
                                  -}
                                  -
                                  -#fbLargeCommandLinePane {
                                  -  background: #fff;
                                  -  /*border-left: 1px solid #999;*/
                                  -  width: 200px;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -  margin: 0;
                                  -  outline: none;
                                  -  border: none;
                                  -  padding: 0;
                                  -  overflow-x: hidden;
                                  -  resize: none;
                                  -  
                                  -  /*border-top: 1px solid #999;*/
                                  -  /*border-bottom: 1px solid #ccc;*/
                                  -  
                                  -  /* using border-left instead of padding-left to avoid glitch in Chrome, 
                                  -     with the 100% width of #fbLargeCommandLine  */
                                  -  border-left: 3px solid transparent;
                                  -}
                                  -
                                  -/*
                                  -#fbBottomPaneSplitter {
                                  -  width: 4px;
                                  -  background: #E5E7E9;
                                  -  cursor: e-resize;
                                  -}
                                  -
                                  -#fbCommandPopupSplitter, #fbPanelPane {
                                  -  zzdisplay: none;
                                  -}
                                  -*/
                                  -
                                  -/* TODO: xxxpedro organize the input styling */
                                  -.fbToolbarBox select {
                                  -    margin: 3px 0;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - webkit hack
                                  -************************************************************************************************* */
                                  -
                                  -/* remove this? */
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -
                                  -    /* The min-height will cause a problem in IE, making the Side Panel PanelTabs 
                                  -    (#fbPanelBar2-panelTabs) disappears when maximizing then mizimixing the 
                                  -    window so we must apply this rule only to wekbit */
                                  -    #fbPanelPane {
                                  -        min-height: 28px; /* avoid problem in webkit with small height */
                                  -    }
                                  -    
                                  -    #fbPanelDeck {
                                  -        min-width: 1px; /* avoid problem in webkit with small width */
                                  -    }
                                  -
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/flexBox/firebug.html b/branches/flexBox/skin/flexBox/firebug.html
                                  deleted file mode 100644
                                  index 0699bcc3..00000000
                                  --- a/branches/flexBox/skin/flexBox/firebug.html
                                  +++ /dev/null
                                  @@ -1,374 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
                                  -<!-- See license.txt for terms of usage -->
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="include/FlexBox.css" rel="stylesheet" type="text/css" />
                                  -<link href="gui.css" rel="stylesheet" type="text/css" />
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -
                                  -<!-- required by iframe-less chrome -->
                                  -<!-- 
                                  -<link href="../xp/firebug.css" rel="stylesheet" type="text/css" />
                                  --->
                                  -
                                  -<!-- 
                                  -<script type="text/javascript" src="../../../content/firebug-lite-dev.js"></script>
                                  --->
                                  -
                                  -<script type="text/javascript" src="include/require.js"></script>
                                  -<script>
                                  -
                                  -require({baseUrl: "include"},
                                  -["FlexBox"], 
                                  -function(FlexBox)
                                  -{
                                  -    var useIFrame = /\biframe\b/.test(document.location.hash);
                                  -    useIFrame = true;
                                  -
                                  -    if (useIFrame)
                                  -    {
                                  -        var panels = [
                                  -                "fbPanelBar1-content",
                                  -                "fbPanelBar2-content",
                                  -                "fbCommandPopup"
                                  -            ];
                                  -        
                                  -        for (var i=0, length = panels.length; i<length; i++)
                                  -        {
                                  -            var panelID = panels[i];
                                  -            var panel = document.getElementById(panelID);
                                  -            var iframe = document.createElement("iframe");
                                  -            var id = panel.id;
                                  -            var className = panel.className;
                                  -            iframe.id = id;
                                  -            iframe.className = className; 
                                  -            iframe.setAttribute("src", "panel.html");
                                  -            iframe.setAttribute("frameBorder", 0);
                                  -            panel.parentNode.replaceChild(iframe, panel);
                                  -        }
                                  -    }
                                  -    
                                  -    var root = document.getElementById("fbContentBox");
                                  -    
                                  -    // loading flexBox in a global variable because the Firebug variable is
                                  -    // not already created here when running in persistent mode.
                                  -    window.flexBox = new FlexBox(root, true);
                                  -    
                                  -    // avoid FOUC
                                  -    root.style.visibility = "visible";
                                  -
                                  -});
                                  -
                                  -
                                  -function doInvalidate()
                                  -{
                                  -    flexBox.invalidate();
                                  -}
                                  -
                                  -function doToggleConsolePanel(){
                                  -    if (!window.ToggleConsolePanel)
                                  -        window.ToggleConsolePanel = false;
                                  -    
                                  -    var fbBottomPane = document.getElementById('fbBottomPane');
                                  -    var fbPanelPane = document.getElementById('fbPanelPane');
                                  -    var fbCommandPopupSplitter = document.getElementById('fbCommandPopupSplitter');
                                  -    
                                  -    if (window.ToggleConsolePanel)
                                  -    {
                                  -        fbPanelPane.style.display = '';
                                  -        fbCommandPopupSplitter.style.display = '';
                                  -        fbBottomPane.className = 'vbox';
                                  -        fbBottomPane.style.height = ToggleConsolePanelSize + 'px';
                                  -        doInvalidate();
                                  -    }
                                  -    else
                                  -    {
                                  -        ToggleConsolePanelSize = fbBottomPane.offsetHeight;
                                  -        fbPanelPane.style.display = 'none';
                                  -        fbCommandPopupSplitter.style.display = 'none';
                                  -        fbBottomPane.className = 'vbox  boxFlex';
                                  -        doInvalidate();
                                  -    }
                                  -    
                                  -    window.ToggleConsolePanel = !window.ToggleConsolePanel;
                                  -}
                                  -
                                  -function doToggleLargeCommandLine(){
                                  -    if (!window.ToggleLargeCommandLine)
                                  -        window.ToggleLargeCommandLine = false;
                                  -        
                                  -    var fbContentBox = document.getElementById('fbContentBox');
                                  -    
                                  -    if (window.ToggleLargeCommandLine)
                                  -    {
                                  -        fbContentBox.className = fbContentBox.className.replace(' hideCommandLineHACK', '') + ' hideLargeCommandLineHACK';
                                  -        doInvalidate();
                                  -    }
                                  -    else
                                  -    {
                                  -        fbContentBox.className = fbContentBox.className.replace(' hideLargeCommandLineHACK', '') + ' hideCommandLineHACK';
                                  -        doInvalidate();
                                  -    }
                                  -    
                                  -    window.ToggleLargeCommandLine = !window.ToggleLargeCommandLine;
                                  -}
                                  -
                                  -function doHideBottomPanel(){
                                  -    var fbBottomPane = document.getElementById('fbBottomPane');
                                  -    var fbCommandPopupSplitter = document.getElementById('fbCommandPopupSplitter');
                                  -    fbCommandPopupSplitter.style.display = 'none';
                                  -    fbBottomPane.style.display = 'none';
                                  -    doInvalidate();
                                  -}
                                  -
                                  -function doShowBottomPanel(){
                                  -    var fbBottomPane = document.getElementById('fbBottomPane');
                                  -    var fbCommandPopupSplitter = document.getElementById('fbCommandPopupSplitter');
                                  -    fbCommandPopupSplitter.style.display = '';
                                  -    fbBottomPane.style.display = '';
                                  -    doInvalidate();
                                  -}
                                  -
                                  -function doMoveToolbar(){
                                  -    var fbLargeCommandLineToolbar = document.getElementById('fbLargeCommandLineToolbar');
                                  -    var fbLargeCommandLine = document.getElementById('fbLargeCommandLine');
                                  -    fbLargeCommandLine.parentNode.insertBefore(fbLargeCommandLineToolbar.parentNode, fbLargeCommandLine);
                                  -    doInvalidate();
                                  -}
                                  -
                                  -</script>
                                  -</head>
                                  -<body>
                                  -
                                  -    <div id="fbContentBox" class="vbox hideSidePanelBar hideLargeCommandLineHACK">
                                  -
                                  -        <div id="fbChromeSplitter" class="fbSplitter fbVerticalSplitter" data-target="fbContentBox" data-spacer="fbContentBox"></div>
                                  -        
                                  -                                      <!-- move this to CSS. it fixes glitches in FF when using native flex box -->
                                  -        <div id="fbPanelBar1-tabBox" style="position:relative;" class="panelTabBox">
                                  -
                                  -            <div class="boxContent" >
                                  -            
                                  -                <div id="fbWindowLeftControls" class="fbWindowControls">
                                  -                
                                  -                    <div id="fbPanelBar1-innerToolbar" class="inlineBlockLeft">
                                  -                        <a id="fbFirebugButton" class="fbIconButton inlineBlockLeft fbHover">&nbsp;</a>
                                  -                        <a id="fbInspectButton" class="fbIconButton inlineBlockLeft fbHover">&nbsp;</a>
                                  -
                                  -                        
                                  -                    </div>
                                  -                    
                                  -                    <div id="fbPanelBar1-panelTabs" class="panelTabs inlineBlockLeft">
                                  -                        <!-- 
                                  -                        <span id="fbConsoleTab" class="panelTab sel">Console<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">HTML<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">CSS<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Script<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Net<span class="panelOptions">â–¼</span></span>
                                  -                         -->
                                  -                    </div>
                                  -                    
                                  -                </div>
                                  -                
                                  -                <div id="fbWindowRightControls" class="fbWindowControls">
                                  -                
                                  -                    <div id="fbWindowButtons" class="inlineBlockRight">
                                  -                        <a id="fbWindow_btDeactivate" class="fbSmallButton inlineBlockRight fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -                        <a id="fbWindow_btDetach" class="fbSmallButton inlineBlockRight fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -                        <a id="fbWindow_btClose" class="fbSmallButton inlineBlockRight fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -                    </div>
                                  -                    
                                  -                    <div id="fbSearch" class="inlineBlockRight">
                                  -                        <input />
                                  -                    </div>
                                  -                    
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -        </div>
                                  -
                                  -        <div id="fbPanelPane" class="hbox boxFlex">
                                  -        
                                  -            <div id="fbPanelDeck" class="vbox boxFlex">
                                  -            
                                  -                <div id="fbMainToolbarBox" class="fbToolbarBox">
                                  -                    <div id="fbMainToolbar" class="fbToolbar boxContent">
                                  -
                                  -                        
                                  -                        
                                  -                        <span id="fbToolbarButtons"></span>
                                  -                        <a class="fbButton fbHover" href="javascript:doShowBottomPanel()">Show Bottom</a>
                                  -                        
                                  -                        <span id="fbStatusBarBox"></span>
                                  -                        <!-- 
                                  -                        <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">normal</a>
                                  -                        <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">normal</a>
                                  -                        <a id="fbConsole_btClear" class="fbButton fbButtonHover" title="Clear the console">hover</a>
                                  -                        <a id="fbConsole_btClear" class="fbButton fbBtnPressed" title="Clear the console">pressed</a>
                                  -                        -->
                                  -                    </div>
                                  -                </div>
                                  -                
                                  -                <div id="fbPanelBar1-content" class="boxFlex boxScroll">
                                  -                    <!-- 
                                  -                    <div>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                        <p>left</p>
                                  -                    </div>
                                  -                    -->
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -            <div id="fbPanelSplitter" class="fbSplitter fbHorizontalSplitter" data-target="fbSidePanelDeck" data-spacer="fbPanelDeck">
                                  -                <div class="fbHorizontalSplitterTop">&nbsp;</div>
                                  -                <div class="fbHorizontalSplitterHandler">&nbsp;</div>
                                  -            </div>
                                  -            
                                  -            <div id="fbSidePanelDeck" class="vbox">
                                  -            
                                  -                <div id="fbPanelBar2-panelTabsBox" class="fbToolbarBox">
                                  -                    <div id="fbPanelBar2-panelTabs" class="fbToolbar boxContent">
                                  -                        <!--
                                  -                        <span class="panelTab sel">Style<span class="panelOptions">â–¼</span></span>
                                  -                        <span class="panelTab">Layout<span class="panelOptions">â–¼</span></span>
                                  -                        -->
                                  -                    </div>
                                  -                </div>
                                  -                
                                  -                <div id="fbPanelBar2-content" class="boxFlex boxScroll">
                                  -                    <!-- 
                                  -                    <div>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                        <p>right</p>
                                  -                    </div>
                                  -                    -->
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        
                                  -        <div id="fbCommandPopupSplitter" class="fbSplitter fbVerticalSplitter" data-target="fbBottomPane" data-spacer="fbPanelPane">
                                  -        </div>
                                  -        
                                  -        <div id="fbBottomPane" class="vbox">
                                  -        
                                  -            <div id="xxxfbPanelDeck" class="hbox boxFlex">
                                  -        
                                  -                <div id="fbCommandPopupPane" class="vbox boxFlex">
                                  -                    <div class="fbToolbarBox">
                                  -                        <div id="fbBottomToolbar" class="fbToolbar">
                                  -                            <a class="fbButton fbHover" href="javascript:doToggleConsolePanel()">Toggle Console</a>
                                  -                            <a class="fbButton fbHover" href="javascript:doToggleLargeCommandLine()">Toggle LargeCmdLine</a> 
                                  -                            <a class="fbButton fbHover" href="javascript:doHideBottomPanel()">Hide Bottom</a>
                                  -                            <a class="fbButton fbHover" href="javascript:doMoveToolbar()">Move Toolbar</a>
                                  -                            
                                  -                        </div>
                                  -                    </div>
                                  -                
                                  -                    <div id="fbCommandPopup" class="boxFlex boxScroll">
                                  -                    <!-- 
                                  -                        <div>
                                  -                            <p>command popup</p>
                                  -                            <p>command popup</p>
                                  -                            <p>command popup</p>
                                  -                            <p>command popup</p>
                                  -                            <p>command popup</p>
                                  -                        </div>
                                  -                    -->
                                  -                    </div>
                                  -                </div>
                                  -                
                                  -                <div id="fbBottomPaneSplitter" class="fbSplitter fbHorizontalSplitter" data-target="fbLargeCommandLinePane" data-spacer="fbCommandPopup">
                                  -                    <div class="fbHorizontalSplitterTop">&nbsp;</div>
                                  -                    <div class="fbHorizontalSplitterHandler">&nbsp;</div>
                                  -                </div>
                                  -                
                                  -                <div id="fbLargeCommandLinePane" class="vbox">
                                  -                
                                  -                    <div class="fbToolbarBox">
                                  -                        <div id="fbLargeCommandLineToolbar" class="fbToolbar">
                                  -                            <a class="fbButton fbHover">Run</a>
                                  -                            <a class="fbButton fbHover">Clear</a>
                                  -                            <a class="fbButton fbHover">Copy</a>
                                  -                            <a class="fbButton fbHover">History</a>
                                  -                        </div>
                                  -                        <div id="fbWindowButtons" class="inlineBlockRight">
                                  -                            <a id="fbWindow_btClose" class="fbSmallButton inlineBlockRight fbHover" href="javascript:doToggleLargeCommandLine()">&nbsp;</a>
                                  -                        </div>
                                  -                    </div>
                                  -                    
                                  -                    
                                  -                    <textarea id="fbLargeCommandLine" class="boxFlex boxScroll">/*large command line content*/
                                  -function openSplitterFrame(splitter, orientation)
                                  -{
                                  -    var flexBox = splitter.flexBox;
                                  -    var root = flexBox.root;
                                  -    var splitterFrame = splitter.splitterFrame;
                                  -    
                                  -    var box = flexBox.measure.getElementBox(root);
                                  -    for (var prop in box)
                                  -    {
                                  -        splitterFrame.style[prop] = box[prop] + "px";
                                  -    }
                                  -
                                  -    if (debugSplitterFrame)
                                  -    {
                                  -        splitterFrame.style.background = "#def";
                                  -        splitterFrame.style.opacity = 0.5;
                                  -        
                                  -        if (isIE6)
                                  -            splitterFrame.style.filter = "alpha(opacity=50)";
                                  -    }
                                  -
                                  -    splitterFrame.style.cursor = orientation.isVertical ? "n-resize" : "e-resize";
                                  -
                                  -    root.parentNode.insertBefore(splitterFrame, root);
                                  -}
                                  -                    </textarea>
                                  -                    
                                  -                </div>
                                  -                
                                  -            </div>
                                  -            
                                  -            <div id="fbCommandBox">
                                  -                <span id="fbCommandArrow">&gt;&gt;&gt;</span>
                                  -                <input id="fbCommandLine" />
                                  -            </div>
                                  -            
                                  -        </div>
                                  -        
                                  -    </div>
                                  -	<span id="fbMiniChrome">
                                  -		<span id="fbMiniContent">
                                  -			<span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -			<span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -		</span>
                                  -	</span>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/flexBox/firebugX.gif b/branches/flexBox/skin/flexBox/firebugX.gif
                                  deleted file mode 100644
                                  index ea15d3d6..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/firebugX.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/firebugX.png b/branches/flexBox/skin/flexBox/firebugX.png
                                  deleted file mode 100644
                                  index 904bee7f..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/firebugX.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/gui.css b/branches/flexBox/skin/flexBox/gui.css
                                  deleted file mode 100644
                                  index 8061dd33..00000000
                                  --- a/branches/flexBox/skin/flexBox/gui.css
                                  +++ /dev/null
                                  @@ -1,223 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -    font-size: 11px;
                                  -    line-height: 14px;
                                  -    margin: 2px 0;
                                  -    -moz-border-radius: 3px;
                                  -    border-radius: 3px;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #ccc;
                                  -    border-bottom: 1px solid #999;
                                  -    border-right: 1px solid #999;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 3px 0 2px 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -/* TODO: Used in the DOM Panel status bar. Maybe rename this to be exclusively 
                                  -   related to the DOM Panel status bar? */
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Icon Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbIconButton {
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin: 3px 2px 0 0;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -    padding: 1px;
                                  -    -moz-border-radius: 3px;
                                  -    border-radius: 3px;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    color: #333;
                                  -    border: 1px solid #aaa;
                                  -    border-bottom: 1px solid #888;
                                  -    border-right: 1px solid #888;
                                  -    padding: 0;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #888 !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #eee !important;
                                  -    background-color: #ccc !important;
                                  -    padding: 0;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Small Button
                                  -************************************************************************************************* */
                                  -
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE - Shadow (used in Menus)
                                  -************************************************************************************************* */
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadow.png) no-repeat bottom right !important;
                                  -    background: url(shadow.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -    
                                  -    /* TODO: xxxpedro: box-shadow support */
                                  -    /* box-shadow: 4px 4px 2px -2px rgba(0, 0, 0, 0.5); */
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - TO ORGANIZE - Menu
                                  -************************************************************************************************* */
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(menuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(menuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(menuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(menuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(menuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(menuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(menuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  diff --git a/branches/flexBox/skin/flexBox/horizontalSplitter.gif b/branches/flexBox/skin/flexBox/horizontalSplitter.gif
                                  deleted file mode 100644
                                  index a1416a34..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/horizontalSplitter.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/horizontalSplitter.png b/branches/flexBox/skin/flexBox/horizontalSplitter.png
                                  deleted file mode 100644
                                  index 61bed1a5..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/horizontalSplitter.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/include/BrowserDetection.js b/branches/flexBox/skin/flexBox/include/BrowserDetection.js
                                  deleted file mode 100644
                                  index 4a9ebc0a..00000000
                                  --- a/branches/flexBox/skin/flexBox/include/BrowserDetection.js
                                  +++ /dev/null
                                  @@ -1,31 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(function() { 
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Locals
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -var version = (userAgent.match( /.+(?:ox|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -var versionNumber = parseInt(version);
                                  -
                                  -//************************************************************************************************
                                  -// BrowserDetection
                                  -
                                  -var BrowserDetection =
                                  -{
                                  -    version : version,
                                  -    Firefox : /firefox/.test(userAgent) && versionNumber,
                                  -    Opera   : /opera/.test(userAgent) && versionNumber,
                                  -    Safari  : /webkit/.test(userAgent) && versionNumber,
                                  -    IE      : /msie/.test(userAgent) && !/opera/.test(userAgent) && versionNumber,
                                  -    IE6     : /msie 6/i.test(navigator.appVersion)
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -
                                  -return BrowserDetection;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/flexBox/include/FlexBox.css b/branches/flexBox/skin/flexBox/include/FlexBox.css
                                  deleted file mode 100644
                                  index d02a20c6..00000000
                                  --- a/branches/flexBox/skin/flexBox/include/FlexBox.css
                                  +++ /dev/null
                                  @@ -1,115 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box - from Alex Russell at http://infrequently.org/2009/08/css-3-progress/
                                  -************************************************************************************************* */
                                  -
                                  -.vbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: vertical;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: vertical;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: vertical;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.hbox {
                                  -    display: -webkit-box;
                                  -    -webkit-box-orient: horizontal;
                                  -    -webkit-box-align: stretch;
                                  -    
                                  -    display: -moz-box;
                                  -    -moz-box-orient: horizontal;
                                  -    -moz-box-align: stretch;
                                  -    
                                  -    display: box;
                                  -    box-orient: horizontal;
                                  -    box-align: stretch;
                                  -}
                                  -
                                  -.boxFlex, .boxFlex1 {
                                  -    -webkit-box-flex: 1;
                                  -    -moz-box-flex: 1;
                                  -    box-flex: 1;
                                  -}
                                  -
                                  -.boxFlex2 {
                                  -    -webkit-box-flex: 2;
                                  -    -moz-box-flex: 2;
                                  -    box-flex: 2;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Helpers
                                  -************************************************************************************************* */
                                  -
                                  -.boxScroll {
                                  -    overflow: auto;
                                  -    display: block;  /* Google Chrome needs this in case of an iframe element. */
                                  -    min-height: 1px; /* Firefox needs min-height and min-width to avoid problems */
                                  -    min-width: 1px;  /* with the minimum dimensions of flexible elements. */
                                  -}
                                  -
                                  -
                                  -/* *************************************************************************************************
                                  - Flexible Box fixes
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix,
                                  -.boxFix .vbox,
                                  -.boxFix .hbox {
                                  -    position: relative;
                                  -    display: block;
                                  -}
                                  -
                                  -.boxFix .boxFixPos,
                                  -.boxFix .boxContent {
                                  -    position: absolute;
                                  -    display: block;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.boxFixIgnoreContents .boxFlex,
                                  -.boxFixIgnoreContents .boxFlex1,
                                  -.boxFixIgnoreContents .boxFlex2 {
                                  -    position: absolute;
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - splitter frame
                                  -************************************************************************************************* */
                                  -
                                  -.splitterFrame {
                                  -    position: absolute;
                                  -    display: block;
                                  -	top: 0;
                                  -	left: 0;
                                  -    z-index: 2147483550;
                                  -    
                                  -    /* IE needs a transparent background otherwise it won't capture mouse events properly */
                                  -    background-image: url(transparentPixel.gif);
                                  -}
                                  -
                                  -/* *************************************************************************************************
                                  - iframe box fix
                                  -************************************************************************************************* */
                                  -
                                  -.boxFix iframe.boxScroll {
                                  -    /* IE need this to properly resize the iframe using flexBox */
                                  -    display: block;
                                  -    
                                  -    /* IE needs height and width properties to fix iframe dimension, otherwise 
                                  -    the the iframe won't fit the proper space and the horizontal scrollbar 
                                  -    will be visible when not needed */
                                  -    height: 100%; width: 100%;
                                  -    
                                  -    /*
                                  -    border-left: 0 !important;
                                  -    border-right: 0 !important;/**/
                                  -}
                                  diff --git a/branches/flexBox/skin/flexBox/include/FlexBox.js b/branches/flexBox/skin/flexBox/include/FlexBox.js
                                  deleted file mode 100644
                                  index c7b8b8f0..00000000
                                  --- a/branches/flexBox/skin/flexBox/include/FlexBox.js
                                  +++ /dev/null
                                  @@ -1,943 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["BrowserDetection", "Measure"], function(BrowserDetection, Measure){
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -  xxxpedro notes:
                                  -  
                                  -    - position:absolute/fixed support?
                                  -        - what happens if we have a element with fixed position inside the flexBox?
                                  -        - what happens if a fixed position element is a flexBox, like a scrollable file selector?
                                  -  
                                  -    - Organize CSS in UI components
                                  -        - toolbar
                                  -        - splitter
                                  -        - overlay
                                  -        - scrollable
                                  -            - stopPropagation of mouse scroll events if reached top/bottom
                                  -            - auto css clip:rect() when there's no native scrollbar (custom scrollable components)
                                  -            - custom buttons
                                  -            - touch devices support
                                  -    
                                  -    - tweak UI
                                  -        - toolbar 26px
                                  -        - remove all borders from iframes/textarea
                                  -        - borders in splitters
                                  -        - bottom side panel toolbar at the top
                                  -  
                                  -// ************************************************************************************************
                                  -  
                                  -    - flexBox dependencies
                                  -        - className
                                  -        - event (onresize, onunload)
                                  -        - BrowserDetection
                                  -        - lazyExecution
                                  -        - Measure
                                  -            - BrowserDetection
                                  -        
                                  -    - move to chrome/context?
                                  -        - lazy
                                  -        - event
                                  -        - cache?
                                  -    
                                  -    - scrolling
                                  -        - getPosition - relative to what?
                                  -        - scrolling in-browser iframe Chrome different computation than Splitter
                                  -
                                  -*/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: is it possible to use native CSS3 flexbox? If it is not, then we should remove this option
                                  -// turning debugging on makes CSS3-flexBox-supported browsers to use FlexBox class to resize
                                  -// the elements via JavaScript instead of CSS, allowing the FlexBox functions to be debugabe
                                  -var debug = false;
                                  -
                                  -// setting debugSplitterFrame to true will make the SplitterFrame element to be visible
                                  -// (the invisible element used to cover the whole UI when dragging the splitter in 
                                  -// order to capture mouse events)
                                  -var debugSplitterFrame = false;
                                  -
                                  -//************************************************************************************************
                                  -
                                  -// debug can also be enabled via URL hash like #debug or #iframe,debug
                                  -debug = debug === true ? true : /\bdebug\b/.test(document.location.hash);
                                  -
                                  -//************************************************************************************************
                                  -
                                  -// FIXME: xxxpedro: better browser detection? always use flexBox?
                                  -var supportsFlexBox = !document.all && !window.opera;
                                  -var isIE6 = BrowserDetection.IE6;
                                  -
                                  -// ************************************************************************************************
                                  -// FlexBox Class constructor
                                  -
                                  -function FlexBox(root, listenWindowResize)
                                  -{
                                  -    var win = root.contentWindow || window;
                                  -
                                  -    this.measure = new Measure(win);
                                  -
                                  -    this.boxObjects = [];
                                  -
                                  -    this.root = root;
                                  -
                                  -    initializeSplitters(this);
                                  -
                                  -    if (supportsFlexBox && !debug)
                                  -    {
                                  -        this.reflow();
                                  -        return;
                                  -    }
                                  -
                                  -    setClass(root, "boxFix");
                                  -
                                  -    var self = this;
                                  -
                                  -    this.render = function()
                                  -    {
                                  -        renderBoxes(this);
                                  -    };
                                  -
                                  -    var resizeHandler = this.resizeHandler = isIE6 ?
                                  -            // IE6 requires an special resizeHandler to make the rendering smoother
                                  -            lazyExecution(self.render, self) :
                                  -            // Other browsers can handle
                                  -            (function(){ self.render(); });
                                  -
                                  -    if (listenWindowResize)
                                  -    {
                                  -        var onunload = function()
                                  -        {
                                  -            removeEvent(win, "resize", resizeHandler);
                                  -            removeEvent(win, "unload", onunload);
                                  -
                                  -            self.destroy();
                                  -        };
                                  -
                                  -        addEvent(win, "resize", resizeHandler);
                                  -        addEvent(win, "unload", onunload);
                                  -    }
                                  -
                                  -    self.invalidate();
                                  -
                                  -    if (isIE6)
                                  -    {
                                  -        fixIE6BackgroundImageCache();
                                  -        setTimeout(function delayedFlexBoxReflow(){
                                  -            self.invalidate();
                                  -        }, 50);
                                  -    }
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -//FlexBox Class members
                                  -
                                  -FlexBox.prototype.boxObjects = null;
                                  -
                                  -FlexBox.prototype.reflow = function()
                                  -{
                                  -    var root = this.root;
                                  -
                                  -    var object =
                                  -    {
                                  -        element : root,
                                  -        flex : null,
                                  -        extra : {}
                                  -    };
                                  -
                                  -    this.boxObjects = [ object ];
                                  -
                                  -    reflowBoxes(this);
                                  -};
                                  -
                                  -FlexBox.prototype.render = function()
                                  -{
                                  -
                                  -};
                                  -
                                  -FlexBox.prototype.invalidate = function()
                                  -{
                                  -    this.reflow();
                                  -    this.render();
                                  -};
                                  -
                                  -FlexBox.prototype.resizeHandler = function()
                                  -{
                                  -};
                                  -
                                  -FlexBox.prototype.destroy = function()
                                  -{
                                  -    function cleanObject(object)
                                  -    {
                                  -        delete object.element;
                                  -        delete object.extra;
                                  -        delete object.orientation;
                                  -        delete object.children;
                                  -        delete object.layout;
                                  -    }
                                  -    
                                  -    this.root = null;
                                  -
                                  -    var boxObjects = this.boxObjects;
                                  -    var boxObject;
                                  -
                                  -    while (boxObject = boxObjects.pop())
                                  -    {
                                  -        var childBoxObject;
                                  -        var children = boxObject.children;
                                  -        
                                  -        while (childBoxObject = children.pop())
                                  -        {
                                  -            cleanObject(childBoxObject);
                                  -            childBoxObject = null;
                                  -        }
                                  -        
                                  -        cleanObject(boxObject);
                                  -        boxObject = null;
                                  -        children = null;
                                  -    }
                                  -
                                  -    this.boxObjects = null;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// FlexBox helpers
                                  -
                                  -FlexBox.prototype.getBoxOrientation = function(element)
                                  -{
                                  -    var orient = (element.className.match(/\b(v|h)box\b/) || [ 0, 0 ])[1];
                                  -
                                  -    var type = orient == "v" ? "vertical" : orient == "h" ? "horizontal" : null;
                                  -
                                  -    var orientation = null;
                                  -
                                  -    if (type == "vertical")
                                  -    {
                                  -        orientation =
                                  -        {
                                  -            isVertical: true,
                                  -            dimension: "height",
                                  -            offset: "offsetHeight",
                                  -            before: "top",
                                  -            after: "bottom",
                                  -            mousePosition: "clientY"
                                  -        };
                                  -    }
                                  -    else if (type == "horizontal")
                                  -    {
                                  -        orientation =
                                  -        {
                                  -            isHorizontal: true,
                                  -            dimension: "width",
                                  -            offset: "offsetWidth",
                                  -            before: "left",
                                  -            after: "right",
                                  -            mousePosition: "clientX"
                                  -        };
                                  -    }
                                  -
                                  -    return orientation;
                                  -};
                                  -
                                  -FlexBox.prototype.getBoxObject = function(element)
                                  -{
                                  -    var boxObject;
                                  -    var boxObjects = this.boxObjects;
                                  -    
                                  -    for (var i = 0; boxObject = boxObjects[i]; i++)
                                  -    {
                                  -        if (boxObject.element == element)
                                  -            return boxObject;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -FlexBox.prototype.getParentBoxObject = function(element)
                                  -{
                                  -    do
                                  -    {
                                  -        element = element.parentNode;
                                  -    }
                                  -    while (element && element.nodeType == 1 && !this.getBoxOrientation(element));
                                  -    
                                  -    return this.getBoxObject(element);
                                  -};
                                  -
                                  -FlexBox.prototype.getChildObject = function(element, boxObject)
                                  -{
                                  -    var childObject;
                                  -    var boxObjectFound = false;
                                  -    
                                  -    if (this.getBoxOrientation(element))
                                  -    {
                                  -        return this.getBoxObject(element);
                                  -    }
                                  -    
                                  -    if (!boxObject)
                                  -    {
                                  -        boxObject = this.getBoxObject(element, true);
                                  -    }
                                  -    
                                  -    if (!boxObject) return null;
                                  -
                                  -    for (var i = 0, children = boxObject.children; childObject = children[i]; i++)
                                  -    {
                                  -        if (childObject.element == element)
                                  -        {
                                  -            boxObjectFound = true;
                                  -            break;
                                  -        }
                                  -    }
                                  -    
                                  -    return boxObjectFound ? childObject : null;
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// IE quirks mode hack
                                  -
                                  -/*
                                  -// TODO: describe HTML panel scrollbar bug (appears only when manual resizing)
                                  -
                                  -// TODO: describe text selection bug
                                  -document.body.onmouseleave = function(event) 
                                  -{
                                  -    event.returnValue = false;
                                  -    event.cancelBubble = true;    
                                  -};
                                  -
                                  -// TODO: describe scroll bug
                                  -document.body.onscroll = function(event) 
                                  -{
                                  -    document.body.scrollLeft = document.body.scrollTop = 0;
                                  -};
                                  -*/
                                  -
                                  -//************************************************************************************************
                                  -// Splitter
                                  -
                                  -var splitters = [];
                                  -
                                  -function initializeSplitters(flexBox)
                                  -{
                                  -    var doc = flexBox.root.ownerDocument;
                                  -    var elements = flexBox.root.getElementsByTagName("div");
                                  -    var element;
                                  -
                                  -    for (var i = 0, l = elements.length; i < l; i++)
                                  -    {
                                  -        element = elements[i];
                                  -        if (hasClass(element, "fbSplitter"))
                                  -        {
                                  -            var targetId = element.getAttribute("data-target");
                                  -            var spacerId = element.getAttribute("data-spacer");
                                  -
                                  -            var target = doc.getElementById(targetId);
                                  -            var spacer = doc.getElementById(spacerId);
                                  -
                                  -            splitters.push(new Splitter(flexBox, element, target, spacer));
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function Splitter(flexBox, splitter, target, spacer)
                                  -{
                                  -    this.flexBox = flexBox;
                                  -
                                  -    this.splitter = splitter;
                                  -    this.target = target;
                                  -    this.spacer = spacer;
                                  -
                                  -    this.document = splitter.ownerDocument;
                                  -    this.window = this.document.parentWindow || this.document.defaultView;
                                  -
                                  -    this.splitterFrame = this.document.createElement("div");
                                  -    this.splitterFrame.className = "splitterFrame";
                                  -
                                  -    var self = this;
                                  -
                                  -    splitter.onmousedown = function(event)
                                  -    {
                                  -        self.onSplitterMouseDown(event);
                                  -    };
                                  -};
                                  -
                                  -Splitter.prototype.onSplitterMouseDown = function(e)
                                  -{
                                  -    cancelEvent(e, true);
                                  -
                                  -    var flexBox = this.flexBox;
                                  -    var splitterFrame = this.splitterFrame;
                                  -
                                  -    var root = flexBox.root;
                                  -    var measure = flexBox.measure;
                                  -
                                  -    var winSize = measure.getWindowSize();
                                  -    var target = this.target;
                                  -    var self = this;
                                  -    
                                  -    var orientation = flexBox.getParentBoxObject(target).orientation;
                                  -    var halfSplitterSize = Math.floor(this.splitter[orientation.offset]/2);
                                  -
                                  -    openSplitterFrame(this, orientation);
                                  -
                                  -    this.splitterFrame.onmousemove = function(event)
                                  -    {
                                  -        event = window.event || event;
                                  -        cancelEvent(event, true);
                                  -
                                  -        var boxObject = flexBox.getParentBoxObject(target);
                                  -        var orientation = boxObject.orientation;
                                  -        
                                  -        var fixedSpace = boxObject.layout.accumulatedMinimumSpace;
                                  -        var targetSize = target[orientation.offset];
                                  -        var maxSize = boxObject.element[orientation.offset] + targetSize - fixedSpace;
                                  -        
                                  -        var targetBoxObject = flexBox.getBoxObject(target);
                                  -        var minSize = targetBoxObject ? targetBoxObject.layout.accumulatedMinimumSpace : 0;
                                  -        
                                  -        var mousePosition = event[orientation.mousePosition];
                                  -
                                  -        var targetPosition = flexBox.measure.getElementPosition(target);
                                  -        var positionDiff = mousePosition - targetPosition[orientation.before] + halfSplitterSize;
                                  -        
                                  -        var size = targetSize - positionDiff;
                                  -        size = Math.min(maxSize, size);
                                  -        size = Math.max(minSize, size);
                                  -        target.style[orientation.dimension] = size + "px";
                                  -
                                  -        if (isIE6)
                                  -        {
                                  -            var className = target.className;
                                  -            target.className = className + " boxFixIgnoreContents";
                                  -            flexBox.invalidate();
                                  -            target.className = className;
                                  -            // TODO: investigate the real source of this problem
                                  -            // xxxpedro not sure why but sometimes the UI will be rendered incorrectly here.
                                  -            // To reproduce, comment out the following line, then open the HTML Panel, and
                                  -            // make the Bottom Panel visible with the Command Editor visible too. Then, 
                                  -            // resize the Bottom Panel. You'll see that the whole LargeCommandLinePane will
                                  -            // be positioned in the wrong place.
                                  -            flexBox.invalidate();
                                  -        }
                                  -        else
                                  -            flexBox.invalidate();
                                  -    };
                                  -
                                  -    this.splitterFrame.onmouseup = function(event)
                                  -    {
                                  -        function cancelSplitter(){
                                  -            try
                                  -            {
                                  -                self.splitter.focus();
                                  -            }
                                  -            catch (E) {}
                                  -
                                  -            closeSplitterFrame(self);
                                  -        }
                                  -
                                  -        event = window.event || event;
                                  -        cancelEvent(event, true);
                                  -
                                  -        if (BrowserDetection.IE == 9)
                                  -            // IE9 need this timeout otherwise the mouse cursor image will freeze 
                                  -            // until the document is clicked again
                                  -            setTimeout(cancelSplitter,0);
                                  -        else
                                  -            // For other browsers we are not using setTimeout to avoid the problem when you 
                                  -            // release the mouse button and the target still resize for a small fraction of time
                                  -            cancelSplitter();
                                  -    };
                                  -};
                                  -
                                  -function openSplitterFrame(splitter, orientation)
                                  -{
                                  -    var flexBox = splitter.flexBox;
                                  -    var root = flexBox.root;
                                  -    var splitterFrame = splitter.splitterFrame;
                                  -    
                                  -    var box = flexBox.measure.getElementBox(root);
                                  -    for (var prop in box)
                                  -    {
                                  -        splitterFrame.style[prop] = box[prop] + "px";
                                  -    }
                                  -
                                  -    if (debugSplitterFrame)
                                  -    {
                                  -        splitterFrame.style.background = "#def";
                                  -        splitterFrame.style.opacity = 0.5;
                                  -        
                                  -        if (isIE6)
                                  -            splitterFrame.style.filter = "alpha(opacity=50)";
                                  -    }
                                  -
                                  -    splitterFrame.style.cursor = orientation.isVertical ? "n-resize" : "e-resize";
                                  -
                                  -    root.parentNode.insertBefore(splitterFrame, root);
                                  -}
                                  -
                                  -function closeSplitterFrame(splitter)
                                  -{
                                  -    var root = splitter.flexBox.root;
                                  -    var splitterFrame = splitter.splitterFrame;
                                  -
                                  -    splitterFrame.style.cursor = "inherit";
                                  -
                                  -    root.parentNode.removeChild(splitterFrame);
                                  -}
                                  -
                                  -//************************************************************************************************
                                  -// lazy execution
                                  -
                                  -function lazyExecution(_function, _this, _arguments)
                                  -{
                                  -    var executionTimer;
                                  -    var lastExecution = 0;
                                  -    var thisObject = _this ? _this : _function.prototype ? _function.prototype : _function;
                                  -    
                                  -    _arguments = _arguments || [];
                                  -
                                  -    return function()
                                  -    {
                                  -        if (new Date().getTime() - lastExecution > 50)
                                  -        {
                                  -            if (executionTimer)
                                  -            {
                                  -                clearTimeout(executionTimer);
                                  -                executionTimer = null;
                                  -            }
                                  -
                                  -            _function.apply(thisObject, _arguments);
                                  -
                                  -            lastExecution = new Date().getTime();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (executionTimer)
                                  -            {
                                  -                clearTimeout(executionTimer);
                                  -                executionTimer = null;
                                  -            }
                                  -
                                  -            executionTimer = setTimeout(function delayedExecution()
                                  -            {
                                  -                _function.apply(thisObject, _arguments);
                                  -            }, 50);
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function reflowBoxes(flexBox)
                                  -{
                                  -    var boxObject;
                                  -    var childBoxObject;
                                  -    var childElement;
                                  -
                                  -    var flex;
                                  -    var space;
                                  -    var boxSpace;
                                  -    var extraSpace;
                                  -    var padding;
                                  -    var border;
                                  -
                                  -    var match;
                                  -
                                  -    var measure = flexBox.measure;
                                  -    var boxObjects = flexBox.boxObjects;
                                  -
                                  -    for (var index = 0; boxObject = boxObjects[index]; index++)
                                  -    {
                                  -        var parentElement = boxObject.element;
                                  -
                                  -        var orientation = flexBox.getBoxOrientation(parentElement);
                                  -        if (!orientation)
                                  -            continue;
                                  -
                                  -        var children = [];
                                  -        var layout = {};
                                  -
                                  -        var flexSum = 0;
                                  -        var fixedSpace = 0;
                                  -        var minimumSpace = 0;
                                  -
                                  -        for (var i = 0, childs = parentElement.childNodes, length = childs.length; i < length; i++)
                                  -        {
                                  -            childElement = childs[i];
                                  -
                                  -            // ignore non-element nodes
                                  -            if (childElement.nodeType != 1)
                                  -                continue;
                                  -
                                  -            // ignore non-visible elements too, otherwise we will reserve a space for
                                  -            // an element which will not be displayed
                                  -            if (measure.getStyle(childElement, "display") == "none") continue;
                                  -
                                  -            padding = measure.getMeasureBox(childElement, "padding");
                                  -            border = measure.getMeasureBox(childElement, "border");
                                  -
                                  -            extraSpace = padding[orientation.before] + padding[orientation.after] + 
                                  -                    border[orientation.before] + border[orientation.after];
                                  -
                                  -            if (match = /\bboxFlex(\d?)\b/.exec(childElement.className))
                                  -            {
                                  -                flex = match[1] - 0 || 1;
                                  -                space = null;
                                  -
                                  -                flexSum += flex;
                                  -                minimumSpace += extraSpace;
                                  -            }
                                  -            else
                                  -            {
                                  -                boxSpace = childElement[orientation.offset];
                                  -
                                  -                space = boxSpace - extraSpace;
                                  -                space = Math.max(space, 0);
                                  -
                                  -                flex = null;
                                  -
                                  -                fixedSpace += boxSpace;
                                  -                minimumSpace += boxSpace;
                                  -            }
                                  -
                                  -            childBoxObject =
                                  -            {
                                  -                element : childElement,
                                  -                flex : flex,
                                  -                extra : {},
                                  -                layout : layout
                                  -            };
                                  -
                                  -            childBoxObject[orientation.dimension] = space;
                                  -            childBoxObject.extra[orientation.dimension] = extraSpace;
                                  -
                                  -            children.push(childBoxObject);
                                  -
                                  -            // if it is a box, then we need to layout it
                                  -            if (flexBox.getBoxOrientation(childElement))
                                  -            {
                                  -                boxObjects.push(childBoxObject);
                                  -            }
                                  -        }
                                  -
                                  -        layout.flexSum = flexSum;
                                  -        layout.minimumSpace = minimumSpace;
                                  -        layout.accumulatedMinimumSpace = 0;
                                  -        layout.fixedSpace = fixedSpace;
                                  -
                                  -        boxObject.orientation = orientation;
                                  -        boxObject.children = children;
                                  -        boxObject.layout = layout;
                                  -
                                  -        // Now we must calculate the accumulated minimum space used for boxes with the same
                                  -        // orientation (horizontal or vertical). For instance, if a vertical box contains 
                                  -        // other vertical elements and the sum of their dimensions (their height in this case)
                                  -        // is greater than the dimension of the box itself, 
                                  -        do
                                  -        {
                                  -            boxObject = flexBox.getParentBoxObject(parentElement);
                                  -            if (boxObject)
                                  -            {
                                  -                if (boxObject.orientation.isVertical == orientation.isVertical)
                                  -                {
                                  -                    boxObject.layout.accumulatedMinimumSpace = Math.max(
                                  -                            boxObject.layout.accumulatedMinimumSpace, 
                                  -                            boxObject.layout.minimumSpace + minimumSpace
                                  -                        );
                                  -                }
                                  -                parentElement = boxObject.element;
                                  -            }
                                  -        }
                                  -        while(boxObject);
                                  -    }
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function renderBoxes(flexBox)
                                  -{
                                  -    var boxObject;
                                  -    var childBoxObject;
                                  -    var childElement;
                                  -    
                                  -    var flex;
                                  -    var space;
                                  -    var boxSpace;
                                  -    var extraSpace;
                                  -    var padding;
                                  -    var border;
                                  -
                                  -    var totalSpace;
                                  -    var freeSpace;
                                  -
                                  -    var _isIE6 = isIE6;
                                  -    var measure = flexBox.measure;
                                  -    var boxObjects = flexBox.boxObjects;
                                  -
                                  -    // render each box, followed by its children
                                  -    for (var index = 0; boxObject = boxObjects[index]; index++)
                                  -    {
                                  -        var computedSpace = 0;
                                  -        var remainingPixels = 0;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // restore data from the boxObjects cache
                                  -
                                  -        var parentElement = boxObject.element;
                                  -        var children = boxObject.children;
                                  -        var orientation = flexBox.getBoxOrientation(parentElement);
                                  -        
                                  -        var flexSum = boxObject.layout.flexSum;
                                  -        var fixedSpace = boxObject.layout.fixedSpace;
                                  -        var minimumSpace = boxObject.layout.minimumSpace;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // calculating the total space
                                  -
                                  -        extraSpace = boxObject.extra[orientation.dimension];
                                  -        if (!extraSpace)
                                  -        {
                                  -            padding = measure.getMeasureBox(parentElement, "padding");
                                  -            border = measure.getMeasureBox(parentElement, "border");
                                  -
                                  -            extraSpace = padding[orientation.before] + padding[orientation.after] + 
                                  -                    border[orientation.before] + border[orientation.after];
                                  -        }
                                  -
                                  -        // We are setting the height of horizontal boxes in IE6, so we need to 
                                  -        // temporary hide the elements otherwise we will get the wrong measures
                                  -        if (_isIE6)
                                  -        {
                                  -            var className = parentElement.className;
                                  -            parentElement.className = className + " boxFixIgnoreContents";
                                  -            space = parentElement[orientation.offset];
                                  -            parentElement.className = className;
                                  -        }
                                  -        else
                                  -        {
                                  -            space = parentElement[orientation.offset];
                                  -        }
                                  -
                                  -        totalSpace = space - extraSpace;
                                  -
                                  -        freeSpace = totalSpace - fixedSpace;
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // processing box children
                                  -
                                  -        for (var i = 0, length = children.length; i < length; i++)
                                  -        {
                                  -            childBoxObject = children[i];
                                  -
                                  -            childElement = childBoxObject.element;
                                  -            flex = childBoxObject.flex;
                                  -            extraSpace = childBoxObject.extra[orientation.dimension];
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // calculating child size
                                  -
                                  -            // if it is a flexible child, then we need to calculate its space
                                  -            if (flex)
                                  -            {
                                  -                // calculate the base flexible space
                                  -                space = Math.floor(freeSpace * flex / flexSum);
                                  -                space -= extraSpace;
                                  -                space = Math.max(space, 0);
                                  -
                                  -                // calculate the remaining pixels
                                  -                remainingPixels = freeSpace * flex % flexSum;
                                  -
                                  -                // distribute remaining pixels
                                  -                if (remainingPixels > 0 && computedSpace + space + remainingPixels <= totalSpace)
                                  -                {
                                  -                    // distribute a proportion of the remaining pixels, or a minimum of 1 pixel
                                  -                    space += Math.floor(remainingPixels * flex / flexSum) || 1;
                                  -                }
                                  -
                                  -                // save the value
                                  -                childBoxObject[orientation.dimension] = space;
                                  -            }
                                  -            // if it is not a flexible child, then we already have its dimension calculated
                                  -            else
                                  -            {
                                  -                // use the value calculated at the last reflow() operation
                                  -                space = childBoxObject[orientation.dimension];
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // resizing child if necessary
                                  -
                                  -            // If space equals to zero, then we must skip resizing the childElement, otherwise the
                                  -            // element will be resized to zero when not visible. This means that if we hide the 
                                  -            // Side Panel, the next time we try to display it, FlexBox won't be able to render it
                                  -            // properly because it will discover the dimension (width or height) of the box using 
                                  -            // its current value, and once the zero was applied to an inline style, that's the 
                                  -            // value it will get. A more cohesive approach would be detecting whether or not the
                                  -            // element has a "display:none" or "visibility:hidden", but we're trying to avoid
                                  -            // an extra computation to make the rendering process faster and we already are
                                  -            // calculating the space value, so we're using it here.
                                  -            if (space && (orientation.isHorizontal || flex))
                                  -            {
                                  -                if (orientation.isVertical)
                                  -                {
                                  -                    // if it's a child of a vertical box, then we only need to adjust the height...
                                  -                    childElement.style.height = space + "px";
                                  -
                                  -                    // unless...
                                  -
                                  -                    // xxxpedro 100% width of an iframe with border will exceed the width of 
                                  -                    // its offsetParent... don't ask me why. not sure though if this 
                                  -                    // is the best way to solve it
                                  -                    if (childElement.nodeName.toLowerCase() == "iframe" || 
                                  -                        // This same problem occurs in IE6 for "textarea" elements
                                  -                        //
                                  -                        // TODO: xxxpedro investigate of the overall problem with borders.
                                  -                        // It seems that this problem happens also in Firefox on any boxes.
                                  -                        // If this is true, we must rethink our strategy for borders, and
                                  -                        // users should avoid setting borders on boxes, using a wrapper
                                  -                        // to do that.
                                  -                        //
                                  -                        // Need to test if the problem with iframes and textareas persists
                                  -                        // when using a wrapper
                                  -                        /* _isIE6 && */ childElement.nodeName.toLowerCase() == "textarea")
                                  -                    {
                                  -                        border = measure.getMeasureBox(childElement, "border");
                                  -
                                  -                        // in IE6 we need to hide the problematic element in order to get 
                                  -                        // the correct width of its parentNode
                                  -                        if (_isIE6)
                                  -                        {
                                  -                            childElement.style.display = "none";
                                  -                            boxSpace = childElement.parentNode.offsetWidth;
                                  -                            childElement.style.display = "block";
                                  -                        }
                                  -                        else
                                  -                        {
                                  -                            boxSpace = childElement.parentNode.offsetWidth;
                                  -                        }
                                  -
                                  -                        // remove the border space
                                  -                        childElement.style.width = 
                                  -                                Math.max(0, boxSpace - border.left - border.right) + "px";
                                  -                    }
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(childElement, "boxFixPos");
                                  -
                                  -                    childElement.style.left = computedSpace + "px";
                                  -                    childElement.style.width = space + "px";
                                  -
                                  -                    // boxObject.height IE6 only
                                  -                    if (_isIE6)
                                  -                    {
                                  -                        // TODO: figure out how to solve the problem with minimumSpace
                                  -                        childBoxObject.height = boxObject.height || parentElement.offsetHeight;
                                  -                        childElement.style.height = childBoxObject.height + "px";
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // update the computed space sum
                                  -
                                  -            computedSpace += space;
                                  -        }
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Ensuring minimum space
                                  -
                                  -        if (parentElement != flexBox.root && 
                                  -            // we should not resize the root element, otherwise it will loose its flexible ability
                                  -            // (in case it has a relative property like height:100% for instance)
                                  -            parentElement.parentNode != flexBox.root && 
                                  -            orientation.isVertical)
                                  -        {
                                  -            // TODO: check for "deeper" parents?
                                  -            // here we are enforcing that the parent box dimension (height or width) 
                                  -            // won't be smaller than the minimum space required, which is the sum 
                                  -            // of fixed dimension child boxes
                                  -            parentElement.parentNode.style[orientation.dimension] = 
                                  -                    Math.max(parentElement.parentNode[orientation.offset], minimumSpace) + "px";
                                  -        }
                                  -    }
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// helper functions
                                  -
                                  -function hasClass(node, name)
                                  -{
                                  -    return (' ' + node.className + ' ').indexOf(' ' + name + ' ') != -1;
                                  -}
                                  -
                                  -function setClass(node, name)
                                  -{
                                  -    if (node && (' ' + node.className + ' ').indexOf(' ' + name + ' ') == -1)
                                  -        node.className += " " + name;
                                  -}
                                  -
                                  -function addEvent(object, name, handler, useCapture)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.attachEvent("on" + name, handler);
                                  -}
                                  -
                                  -function removeEvent(object, name, handler, useCapture)
                                  -{
                                  -    if (object.removeEventListener)
                                  -        object.removeEventListener(name, handler, useCapture);
                                  -    else
                                  -        object.detachEvent("on" + name, handler);
                                  -}
                                  -
                                  -function cancelEvent(e, preventDefault)
                                  -{
                                  -    if (!e)
                                  -        return;
                                  -
                                  -    if (preventDefault)
                                  -    {
                                  -        if (e.preventDefault)
                                  -            e.preventDefault();
                                  -        else
                                  -            e.returnValue = false;
                                  -    }
                                  -
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// IE6 background glitch fix
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    }
                                  -    catch (E)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -return FlexBox;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/flexBox/include/Measure.js b/branches/flexBox/skin/flexBox/include/Measure.js
                                  deleted file mode 100644
                                  index 4419a464..00000000
                                  --- a/branches/flexBox/skin/flexBox/include/Measure.js
                                  +++ /dev/null
                                  @@ -1,349 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -define(["BrowserDetection"], function(BrowserDetection) { 
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// Opera and some versions of webkit returns the wrong value of document.elementFromPoint()
                                  -// function, without taking into account the scroll position. Safari 4 (webkit/531.21.8) 
                                  -// still have this issue. Google Chrome 4 (webkit/532.5) does not. So, we're assuming this 
                                  -// issue was fixed in the 532 version
                                  -var shouldFixElementFromPoint = BrowserDetection.Safari || 
                                  -        BrowserDetection.Safari && BrowserDetection.version < "532";
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Measure
                                  -
                                  -function Measure(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -};
                                  -
                                  -Measure.prototype =
                                  -{  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Measure methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (shouldFixElementFromPoint)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0;
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = BrowserDetection.IE ? 
                                  -                    this.document.body.clientTop || 
                                  -                    this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measure Methods
                                  -    
                                  -    getMeasure: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = getStyle(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasureInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasure(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -        {
                                  -            return value;
                                  -        }
                                  -        else
                                  -        {
                                  -            return getPixelValue(el.parentNode, value + unit);
                                  -        }
                                  -    },
                                  -
                                  -    getMeasureBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (BrowserDetection.IE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasureInPixels(el, propName);
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasureInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -     
                                  -    getStyle: BrowserDetection.IE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -function getCSSAutoMarginBox(el)
                                  -{
                                  -    /*
                                  -    // the following elements will fail
                                  -    if (BrowserDetection.IE && 
                                  -            " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -                return {top:0, left:0, bottom:0, right:0};
                                  -    /**/
                                  -
                                  -    // the following elements are safe
                                  -    // which other elements may have auto margin?
                                  -    if (BrowserDetection.IE && 
                                  -            " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -                return {top:0, left:0, bottom:0, right:0};
                                  -    /**/
                                  -
                                  -    var offsetTop = 0;
                                  -    if (false && isIEStantandMode)
                                  -    {
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        offsetTop = scrollSize.height;
                                  -    }
                                  -    
                                  -    var box = this.document.createElement("div");
                                  -    //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -    box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -    
                                  -    var clone = el.cloneNode(false);
                                  -    var text = this.document.createTextNode("&nbsp;");
                                  -    clone.appendChild(text);
                                  -    
                                  -    box.appendChild(clone);
                                  -
                                  -    this.document.body.appendChild(box);
                                  -    
                                  -    var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -    var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -    
                                  -    var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -    var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -    
                                  -    this.document.body.removeChild(box);
                                  -    
                                  -    return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getStyle = BrowserDetection.IE ? function(el, name)
                                  -{
                                  -    return el.currentStyle[name] || el.style[name] || undefined;
                                  -}
                                  -: function(el, name)
                                  -{
                                  -    return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -        || el.style[name] || undefined;
                                  -};
                                  -
                                  -// From Dean Edwards:
                                  -// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value)
                                  -{
                                  -    if (!element || !element.runtimeStyle) return 0;
                                  -    
                                  -    if (PIXEL.test(value))
                                  -        return parseInt(value);
                                  -    
                                  -    var style = element.style.left;
                                  -    var runtimeStyle = element.runtimeStyle.left;
                                  -    
                                  -    element.runtimeStyle.left = element.currentStyle.left;
                                  -    element.style.left = value || 0;
                                  -    
                                  -    value = element.style.pixelLeft;
                                  -    
                                  -    element.style.left = style;
                                  -    element.runtimeStyle.left = runtimeStyle;
                                  -    
                                  -    return value;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -return Measure;
                                  -
                                  -// ************************************************************************************************
                                  -});
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/flexBox/include/require.js b/branches/flexBox/skin/flexBox/include/require.js
                                  deleted file mode 100644
                                  index f6195cc9..00000000
                                  --- a/branches/flexBox/skin/flexBox/include/require.js
                                  +++ /dev/null
                                  @@ -1,32 +0,0 @@
                                  -/*
                                  - RequireJS 0.24.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
                                  - Available via the MIT or new BSD license.
                                  - see: http://github.com/jrburke/requirejs for details
                                  -*/
                                  -var require,define;
                                  -(function(){function Q(e){return da.call(e)==="[object Function]"}function V(e){return da.call(e)==="[object Array]"}function W(e,g,l){for(var k in g)if(!(k in F)&&(!(k in e)||l))e[k]=g[k];return h}function ea(e,g,l){var k,p,n;for(k=0;n=g[k];k++){n=typeof n==="string"?{name:n}:n;p=n.location;if(l&&(!p||p.indexOf("/")!==0&&p.indexOf(":")===-1))p=l+"/"+(p||n.name);e[n.name]={name:n.name,location:p||n.name,lib:n.lib||"lib",main:(n.main||"lib/main").replace(qa,"").replace(fa,"")}}}function ra(e){function g(a){var b,
                                  -c;for(b=0;c=a[b];b++)if(c==="."){a.splice(b,1);b-=1}else if(c==="..")if(b===1&&(a[2]===".."||a[0]===".."))break;else if(b>0){a.splice(b-1,2);b-=2}}function l(a,b){var c;if(a.charAt(0)===".")if(b){if(t.pkgs[b])b=[b];else{b=b.split("/");b=b.slice(0,b.length-1)}a=b.concat(a.split("/"));g(a);c=t.pkgs[b=a[0]];a=a.join("/");if(c&&a===b+"/"+c.main)a=b}return a}function k(a,b){var c=a?a.indexOf("!"):-1,d=null,f=b?b.name:null,j=a,o,m;if(c!==-1){d=a.substring(0,c);a=a.substring(c+1,a.length)}if(d)d=l(d,f);
                                  -if(a){if(d)o=(c=q[d])?c.normalize?c.normalize(a,function(u){return l(u,f)}):l(a,f):"__$p"+f+"@"+a;else o=l(a,f);m=X[o];if(!m){m=h.toModuleUrl?h.toModuleUrl(i,a,b):i.nameToUrl(a,null,b);X[o]=m}}return{prefix:d,name:o,parentMap:b,url:m,originalName:j,fullName:d?d+"!"+o:o}}function p(){var a=true,b=t.priorityWait,c,d;if(b){for(d=0;c=b[d];d++)if(!v[c]){a=false;break}a&&delete t.priorityWait}return a}function n(a){return function(b){a.exports=b}}function R(a,b,c){return function(){var d=[].concat(sa.call(arguments,
                                  -0)),f;if(c&&Q(f=d[d.length-1]))f.__requireJsBuild=true;d.push(b);return a.apply(null,d)}}function ga(a,b){b=R(i.require,a,b);W(b,{nameToUrl:R(i.nameToUrl,a),toUrl:R(i.toUrl,a),isDefined:R(i.isDefined,a),ready:h.ready,isBrowser:h.isBrowser});if(h.paths)b.paths=h.paths;return b}function ta(a){var b,c,d,f,j,o,m,u=S[a];if(u)for(f=0;c=u[f];f++){b=c.fullName;c=k(c.originalName,c.parentMap);c=c.fullName;d=w[b]||[];j=w[c];if(c!==b){if(b in z){delete z[b];z[c]=true}w[c]=j?j.concat(d):d;delete w[b];for(j=0;j<
                                  -d.length;j++){m=d[j].depArray;for(o=0;o<m.length;o++)if(m[o]===b)m[o]=c}}}delete S[a]}function ha(a){var b=a.prefix,c=a.fullName;if(!(z[c]||c in q)){if(b&&!G[b]){G[b]=undefined;(S[b]||(S[b]=[])).push(a);(w[b]||(w[b]=[])).push({onDep:function(d){d===b&&ta(b)}});ha(k(b))}i.paused.push(a)}}function Y(a){var b,c,d;b=a.callback;var f=a.fullName;d=[];var j=a.depArray;if(b&&Q(b)){if(j)for(b=0;b<j.length;b++)d.push(a.deps[j[b]]);c=h.execCb(f,a.callback,d);if(f)if(a.usingExports&&c===undefined&&(!a.cjsModule||
                                  -!("exports"in a.cjsModule)))c=q[f];else if(a.cjsModule&&"exports"in a.cjsModule)c=q[f]=a.cjsModule.exports;else{if(f in q&&!a.usingExports)return h.onError(new Error(f+" has already been defined"));q[f]=c}}else if(f)c=q[f]=b;if(f)if(d=w[f]){for(b=0;b<d.length;b++)d[b].onDep(f,c);delete w[f]}if(B[a.waitId]){delete B[a.waitId];a.isDone=true;i.waitCount-=1;if(i.waitCount===0)Z=[]}}function ia(a,b,c,d){a=k(a,d);var f=a.name,j=a.fullName,o={},m={waitId:f||ua+va++,depCount:0,depMax:0,prefix:a.prefix,name:f,
                                  -fullName:j,deps:{},depArray:b,callback:c,onDep:function(ja,wa){if(!(ja in m.deps)){m.deps[ja]=wa;m.depCount+=1;m.depCount===m.depMax&&Y(m)}}},u,s;if(j){if(j in q||v[j]===true)return;z[j]=true;v[j]=true;i.jQueryDef=j==="jquery"}for(c=0;c<b.length;c++)if(u=b[c]){u=k(u,f?a:d);s=u.fullName;b[c]=s;if(s==="require")m.deps[s]=ga(a);else if(s==="exports"){m.deps[s]=q[j]={};m.usingExports=true}else if(s==="module"){m.cjsModule=u=m.deps[s]={id:f,uri:f?i.nameToUrl(f,null,d):undefined};u.setExports=n(u)}else if(s in
                                  -q&&!(s in B))m.deps[s]=q[s];else if(!o[s]){m.depMax+=1;ha(u);(w[s]||(w[s]=[])).push(m);o[s]=true}}if(m.depCount===m.depMax)Y(m);else{B[m.waitId]=m;Z.push(m);i.waitCount+=1}}function J(a){ia.apply(null,a);v[a[0]]=true}function ka(a){if(!i.jQuery)if((a=a||(typeof jQuery!=="undefined"?jQuery:null))&&"readyWait"in a){i.jQuery=a;J(["jquery",[],function(){return jQuery}]);if(i.scriptCount){a.readyWait+=1;i.jQueryIncremented=true}}}function la(a,b){if(!a.isDone){var c=a.fullName,d=a.depArray,f,j;if(c){if(b[c])return q[c];
                                  -b[c]=true}for(j=0;j<d.length;j++)(f=d[j])&&!a.deps[f]&&B[f]&&a.onDep(f,la(B[f],b));return c?q[c]:undefined}}function $(){var a=t.waitSeconds*1E3,b=a&&i.startTime+a<(new Date).getTime();a="";var c=false,d=false,f;if(!(i.pausedCount>0)){if(t.priorityWait)if(p())C();else return;for(f in v)if(!(f in F)){c=true;if(!v[f])if(b)a+=f+" ";else{d=true;break}}if(c||i.waitCount){if(b&&a){f=new Error("require.js load timeout for modules: "+a);f.requireType="timeout";f.requireModules=a;return h.onError(f)}if(d||
                                  -i.scriptCount){if(A||ma)setTimeout($,50)}else if(i.waitCount){for(D=0;a=Z[D];D++)la(a,{});$()}else h.checkReadyState()}}}function na(a,b){var c=b.name,d=b.fullName,f;if(!(d in q||d in v)){G[a]||(G[a]=q[a]);v[d]||(v[d]=false);f=function(j){require.onPluginLoad&&require.onPluginLoad(i,a,c,j);Y({prefix:b.prefix,name:b.name,fullName:b.fullName,callback:function(){return j}});v[d]=true};f.fromText=function(j,o){var m=K;i.loaded[j]=false;i.scriptCount+=1;if(m)K=false;eval(o);if(m)K=true;i.completeLoad(j)};
                                  -G[a].load(c,ga(b.parentMap,true),f,t)}}function xa(a){if(a.prefix&&a.name.indexOf("__$p")===0&&q[a.prefix])a=k(a.originalName,a.parentMap);var b=a.prefix,c=a.fullName;if(!(z[c]||v[c])){z[c]=true;if(b)if(q[b])na(b,a);else{if(!L[b]){L[b]=[];(w[b]||(w[b]=[])).push({onDep:function(d){if(d===b){var f,j=L[b];for(d=0;d<j.length;d++){f=j[d];na(b,k(f.originalName,f.parentMap))}delete L[b]}}})}L[b].push(a)}else h.load(i,c,a.url)}}var i,C,t={waitSeconds:7,baseUrl:r.baseUrl||"./",paths:{},pkgs:{}},M=[],z={require:true,
                                  -exports:true,module:true},X={},q={},v={},B={},Z=[],va=0,w={},G={},L={},aa=0,S={};C=function(){var a,b,c;aa+=1;if(i.scriptCount<=0)i.scriptCount=0;for(;M.length;){a=M.shift();if(a[0]===null)return h.onError(new Error("Mismatched anonymous require.def modules"));else J(a)}if(!t.priorityWait||p())for(;i.paused.length;){c=i.paused;i.pausedCount+=c.length;i.paused=[];for(b=0;a=c[b];b++)xa(a);i.startTime=(new Date).getTime();i.pausedCount-=c.length}aa===1&&$();aa-=1};i={contextName:e,config:t,defQueue:M,
                                  -waiting:B,waitCount:0,specified:z,loaded:v,urlMap:X,scriptCount:0,urlFetched:{},defined:q,paused:[],pausedCount:0,plugins:G,managerCallbacks:w,makeModuleMap:k,normalize:l,configure:function(a){var b,c,d;if(a.baseUrl)if(a.baseUrl.charAt(a.baseUrl.length-1)!=="/")a.baseUrl+="/";b=t.paths;d=t.pkgs;W(t,a,true);if(a.paths){for(c in a.paths)c in F||(b[c]=a.paths[c]);t.paths=b}if((b=a.packagePaths)||a.packages){if(b)for(c in b)c in F||ea(d,b[c],c);a.packages&&ea(d,a.packages);t.pkgs=d}if(a.priority){c=i.requireWait;
                                  -i.requireWait=false;i.takeGlobalQueue();C();i.require(a.priority);C();i.requireWait=c;t.priorityWait=a.priority}if(a.deps||a.callback)i.require(a.deps||[],a.callback);a.ready&&h.ready(a.ready)},isDefined:function(a,b){return k(a,b).fullName in q},require:function(a,b,c){if(typeof a==="string"){if(h.get)return h.get(i,a,b);c=b;b=k(a,c);a=q[b.fullName];if(a===undefined)return h.onError(new Error("require: module name '"+b.fullName+"' has not been loaded yet for context: "+e));return a}ia(null,a,b,c);
                                  -if(!i.requireWait)for(;!i.scriptCount&&i.paused.length;)C()},takeGlobalQueue:function(){if(T.length){ya.apply(i.defQueue,[i.defQueue.length-1,0].concat(T));T=[]}},completeLoad:function(a){var b;for(i.takeGlobalQueue();M.length;){b=M.shift();if(b[0]===null){b[0]=a;break}else if(b[0]===a)break;else{J(b);b=null}}b?J(b):J([a,[],a==="jquery"&&typeof jQuery!=="undefined"?function(){return jQuery}:null]);v[a]=true;ka();if(h.isAsync)i.scriptCount-=1;C();h.isAsync||(i.scriptCount-=1)},toUrl:function(a,b){var c=
                                  -a.lastIndexOf("."),d=null;if(c!==-1){d=a.substring(c,a.length);a=a.substring(0,c)}return i.nameToUrl(a,d,b)},nameToUrl:function(a,b,c){var d,f,j,o,m=i.config;if(a.indexOf("./")===0||a.indexOf("../")===0){c=c&&c.url?c.url.split("/"):[];c.length&&c.pop();c=c.concat(a.split("/"));g(c);b=c.join("/")+(b?b:h.jsExtRegExp.test(a)?"":".js")}else{a=l(a,c);if(h.jsExtRegExp.test(a))b=a+(b?b:"");else{d=m.paths;f=m.pkgs;c=a.split("/");for(o=c.length;o>0;o--){j=c.slice(0,o).join("/");if(d[j]){c.splice(0,o,d[j]);
                                  -break}else if(j=f[j]){a=a===j.name?j.location+"/"+j.main:j.location+"/"+j.lib;c.splice(0,o,a);break}}b=c.join("/")+(b||".js");b=(b.charAt(0)==="/"||b.match(/^\w+:/)?"":m.baseUrl)+b}}return m.urlArgs?b+((b.indexOf("?")===-1?"?":"&")+m.urlArgs):b}};i.jQueryCheck=ka;i.resume=C;return i}function za(){var e,g,l;if(N&&N.readyState==="interactive")return N;e=document.getElementsByTagName("script");for(g=e.length-1;g>-1&&(l=e[g]);g--)if(l.readyState==="interactive")return N=l;return null}var Aa=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,
                                  -Ba=/require\(["']([^'"\s]+)["']\)/g,qa=/^\.\//,fa=/\.js$/,da=Object.prototype.toString,x=Array.prototype,sa=x.slice,ya=x.splice,A=!!(typeof window!=="undefined"&&navigator&&document),ma=!A&&typeof importScripts!=="undefined",Ca=A&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,oa=typeof opera!=="undefined"&&opera.toString()==="[object Opera]",ua="_r@@",F={},H={},T=[],N=null,Da=false,K=false,h;x={};var ba,r,I,U,y,O,P,D,ca,pa,E;if(typeof require!=="undefined")if(Q(require))return;
                                  -else x=require;h=require=function(e,g,l){var k="_",p;if(!V(e)&&typeof e!=="string"){p=e;if(V(g)){e=g;g=l}else e=[]}if(p&&p.context)k=p.context;l=H[k]||(H[k]=ra(k));p&&l.configure(p);return l.require(e,g)};h.version="0.24.0";h.isArray=V;h.isFunction=Q;h.mixin=W;h.jsExtRegExp=/^\/|:|\?|\.js$/;r=h.s={contexts:H,skipAsync:{},isPageLoaded:!A,readyCalls:[]};if(h.isAsync=h.isBrowser=A){I=r.head=document.getElementsByTagName("head")[0];if(U=document.getElementsByTagName("base")[0])I=r.head=U.parentNode}h.onError=
                                  -function(e){throw e;};h.load=function(e,g,l){var k=e.contextName,p=e.urlFetched,n=e.loaded;Da=false;n[g]||(n[g]=false);if(!p[l]){e.scriptCount+=1;h.attach(l,k,g);p[l]=true;if(e.jQuery&&!e.jQueryIncremented){e.jQuery.readyWait+=1;e.jQueryIncremented=true}}};define=h.def=function(e,g,l){var k;if(typeof e!=="string"){l=g;g=e;e=null}if(!h.isArray(g)){l=g;g=[]}if(!e&&!g.length&&h.isFunction(l))if(l.length){l.toString().replace(Aa,"").replace(Ba,function(p,n){g.push(n)});g=["require","exports","module"].concat(g)}if(K){k=
                                  -ba||za();if(!k)return h.onError(new Error("ERROR: No matching script interactive for "+l));e||(e=k.getAttribute("data-requiremodule"));k=H[k.getAttribute("data-requirecontext")]}(k?k.defQueue:T).push([e,g,l])};define.amd={multiversion:true,plugins:true};h.execCb=function(e,g,l){return g.apply(null,l)};h.onScriptLoad=function(e){var g=e.currentTarget||e.srcElement,l;if(e.type==="load"||Ca.test(g.readyState)){N=null;e=g.getAttribute("data-requirecontext");l=g.getAttribute("data-requiremodule");H[e].completeLoad(l);
                                  -g.detachEvent&&!oa?g.detachEvent("onreadystatechange",h.onScriptLoad):g.removeEventListener("load",h.onScriptLoad,false)}};h.attach=function(e,g,l,k,p){var n;if(A){k=k||h.onScriptLoad;n=document.createElement("script");n.type=p||"text/javascript";n.charset="utf-8";n.async=!r.skipAsync[e];n.setAttribute("data-requirecontext",g);n.setAttribute("data-requiremodule",l);if(n.attachEvent&&!oa){K=true;n.attachEvent("onreadystatechange",k)}else n.addEventListener("load",k,false);n.src=e;ba=n;U?I.insertBefore(n,
                                  -U):I.appendChild(n);ba=null;return n}else if(ma){k=H[g];g=k.loaded;g[l]=false;importScripts(e);k.completeLoad(l)}return null};if(A){y=document.getElementsByTagName("script");for(D=y.length-1;D>-1&&(O=y[D]);D--){if(!I)I=O.parentNode;if(P=O.getAttribute("data-main")){if(!x.baseUrl){y=P.split("/");O=y.pop();y=y.length?y.join("/")+"/":"./";x.baseUrl=y;P=O.replace(fa,"")}x.deps=x.deps?x.deps.concat(P):[P];break}}}r.baseUrl=x.baseUrl;h.pageLoaded=function(){if(!r.isPageLoaded){r.isPageLoaded=true;ca&&clearInterval(ca);
                                  -if(pa)document.readyState="complete";h.callReady()}};h.checkReadyState=function(){var e=r.contexts,g;for(g in e)if(!(g in F))if(e[g].waitCount)return;r.isDone=true;h.callReady()};h.callReady=function(){var e=r.readyCalls,g,l,k;if(r.isPageLoaded&&r.isDone){if(e.length){r.readyCalls=[];for(g=0;l=e[g];g++)l()}e=r.contexts;for(k in e)if(!(k in F)){g=e[k];if(g.jQueryIncremented){g.jQuery.ready(true);g.jQueryIncremented=false}}}};h.ready=function(e){r.isPageLoaded&&r.isDone?e():r.readyCalls.push(e);return h};
                                  -if(A){if(document.addEventListener){document.addEventListener("DOMContentLoaded",h.pageLoaded,false);window.addEventListener("load",h.pageLoaded,false);if(!document.readyState){pa=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload",h.pageLoaded);if(self===self.top)ca=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");h.pageLoaded()}}catch(e){}},30)}document.readyState==="complete"&&h.pageLoaded()}h(x);if(h.isAsync&&typeof setTimeout!==
                                  -"undefined"){E=r.contexts[x.context||"_"];E.requireWait=true;setTimeout(function(){E.requireWait=false;E.takeGlobalQueue();E.jQueryCheck();E.scriptCount||E.resume();h.checkReadyState()},0)}})();
                                  diff --git a/branches/flexBox/skin/flexBox/menuCheckbox.png b/branches/flexBox/skin/flexBox/menuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/menuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/menuPin.png b/branches/flexBox/skin/flexBox/menuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/menuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/menuRadio.png b/branches/flexBox/skin/flexBox/menuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/menuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/min.gif b/branches/flexBox/skin/flexBox/min.gif
                                  deleted file mode 100644
                                  index 08e60974..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/min.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/min.png b/branches/flexBox/skin/flexBox/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/minHover.gif b/branches/flexBox/skin/flexBox/minHover.gif
                                  deleted file mode 100644
                                  index 636b0a63..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/minHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/minHover.png b/branches/flexBox/skin/flexBox/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/off.gif b/branches/flexBox/skin/flexBox/off.gif
                                  deleted file mode 100644
                                  index e64b0b37..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/off.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/off.png b/branches/flexBox/skin/flexBox/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/offHover.gif b/branches/flexBox/skin/flexBox/offHover.gif
                                  deleted file mode 100644
                                  index 3c8b47ea..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/offHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/offHover.png b/branches/flexBox/skin/flexBox/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/panel.html b/branches/flexBox/skin/flexBox/panel.html
                                  deleted file mode 100644
                                  index 5a55d9aa..00000000
                                  --- a/branches/flexBox/skin/flexBox/panel.html
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<!-- See license.txt for terms of usage -->
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title></title>
                                  -<style>
                                  -html, body {
                                  -    font-family: Lucida Grande,Tahoma,sans-serif;
                                  -    font-size: 11px;
                                  -    
                                  -    margin: 0; padding: 0; /* remove margin and padding */
                                  -    border: 0; /* remove border too (IE6 need this) */
                                  -    
                                  -    height: 100%;
                                  -    width: 100%;
                                  -}
                                  -
                                  -/* xxxpedro we actually need the panelbase.css file from firebug and others */
                                  -.measureBox {
                                  -    position: absolute;
                                  -    visibility: hidden;
                                  -    top: 0;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -</style>
                                  -<link href="../xp/firebug.css" rel="stylesheet" type="text/css" />
                                  -</head>
                                  -<body>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -    function findFirebug(w)
                                  -    {
                                  -        for(var i=0; i<2; i++)
                                  -        {
                                  -            var doc = w.frameElement.parentNode.ownerDocument;
                                  -            w = doc.defaultView || doc.parentWindow;
                                  -        }
                                  -        return w.Firebug;
                                  -    }
                                  -    
                                  -    (
                                  -        // when it's a popup
                                  -        top.opener && top.opener.Firebug ||
                                  -        // in normal scenarios
                                  -        top.Firebug || 
                                  -        // When it's running inside an iframe we need to do a hack.
                                  -        // Need to rethink how each Panel Window is loaded. The problem is that the panel is an 
                                  -        // iframe that could be or not inside another iframe (or a popup, or a div), that in turn
                                  -        // could be inside of another iframe.
                                  -        // FIXME xxxpedro seriously?!?
                                  -        findFirebug(window)
                                  -    ).
                                  -    framesLoaded++;
                                  -})();
                                  -</script>
                                  -</body>
                                  -</html>
                                  diff --git a/branches/flexBox/skin/flexBox/panelOptions.png b/branches/flexBox/skin/flexBox/panelOptions.png
                                  deleted file mode 100644
                                  index 6aa876cc..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/panelOptions.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/shadow.gif b/branches/flexBox/skin/flexBox/shadow.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/shadow.png b/branches/flexBox/skin/flexBox/shadow.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/shadow.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/splitter.gif b/branches/flexBox/skin/flexBox/splitter.gif
                                  deleted file mode 100644
                                  index 09c00bd7..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/splitter.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/sprite.png b/branches/flexBox/skin/flexBox/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/tabBg.png b/branches/flexBox/skin/flexBox/tabBg.png
                                  deleted file mode 100644
                                  index 8f936dcc..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/tabBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/tabBg2.png b/branches/flexBox/skin/flexBox/tabBg2.png
                                  deleted file mode 100644
                                  index 053a3f47..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/tabBg2.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/tabBgTop.png b/branches/flexBox/skin/flexBox/tabBgTop.png
                                  deleted file mode 100644
                                  index abce17cf..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/tabBgTop.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/transparentPixel.gif b/branches/flexBox/skin/flexBox/transparentPixel.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/transparentPixel.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/verticalSplitter.gif b/branches/flexBox/skin/flexBox/verticalSplitter.gif
                                  deleted file mode 100644
                                  index e08a3c6d..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/verticalSplitter.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/flexBox/verticalSplitter.png b/branches/flexBox/skin/flexBox/verticalSplitter.png
                                  deleted file mode 100644
                                  index 50be5312..00000000
                                  Binary files a/branches/flexBox/skin/flexBox/verticalSplitter.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/blank.gif b/branches/flexBox/skin/light/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/light/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/buttonBg.png b/branches/flexBox/skin/light/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/skin/light/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/buttonBgHover.png b/branches/flexBox/skin/light/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/skin/light/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/close.png b/branches/flexBox/skin/light/close.png
                                  deleted file mode 100644
                                  index ada59d8a..00000000
                                  Binary files a/branches/flexBox/skin/light/close.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/closeHover.png b/branches/flexBox/skin/light/closeHover.png
                                  deleted file mode 100644
                                  index be0145d2..00000000
                                  Binary files a/branches/flexBox/skin/light/closeHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/detach.png b/branches/flexBox/skin/light/detach.png
                                  deleted file mode 100644
                                  index 25d97e03..00000000
                                  Binary files a/branches/flexBox/skin/light/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/detachHover.png b/branches/flexBox/skin/light/detachHover.png
                                  deleted file mode 100644
                                  index edb81253..00000000
                                  Binary files a/branches/flexBox/skin/light/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/disable.gif b/branches/flexBox/skin/light/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/skin/light/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/disable.png b/branches/flexBox/skin/light/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/skin/light/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/disableHover.gif b/branches/flexBox/skin/light/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/skin/light/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/disableHover.png b/branches/flexBox/skin/light/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/skin/light/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/down.png b/branches/flexBox/skin/light/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/skin/light/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/downActive.png b/branches/flexBox/skin/light/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/skin/light/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/downHover.png b/branches/flexBox/skin/light/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/skin/light/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/errorIcon-sm.png b/branches/flexBox/skin/light/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/skin/light/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/errorIcon.gif b/branches/flexBox/skin/light/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/skin/light/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/errorIcon.png b/branches/flexBox/skin/light/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/skin/light/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/firebug.css b/branches/flexBox/skin/light/firebug.css
                                  deleted file mode 100644
                                  index 7af18e64..00000000
                                  --- a/branches/flexBox/skin/light/firebug.css
                                  +++ /dev/null
                                  @@ -1,3063 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -    font: message-box;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 5px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #eee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    height: 23px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 7px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    height: 23px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #EEEEEE;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 23px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 23px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #EEEEEE 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #eee;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/light/firebug.html b/branches/flexBox/skin/light/firebug.html
                                  deleted file mode 100644
                                  index 4432a325..00000000
                                  --- a/branches/flexBox/skin/light/firebug.html
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/light/firebug.png b/branches/flexBox/skin/light/firebug.png
                                  deleted file mode 100644
                                  index 338dc5a1..00000000
                                  Binary files a/branches/flexBox/skin/light/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/group.gif b/branches/flexBox/skin/light/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/skin/light/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/infoIcon.gif b/branches/flexBox/skin/light/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/skin/light/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/infoIcon.png b/branches/flexBox/skin/light/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/skin/light/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/loading_16.gif b/branches/flexBox/skin/light/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/skin/light/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/min.png b/branches/flexBox/skin/light/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/skin/light/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/minHover.png b/branches/flexBox/skin/light/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/skin/light/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/off.png b/branches/flexBox/skin/light/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/skin/light/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/offHover.png b/branches/flexBox/skin/light/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/skin/light/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/pixel_transparent.gif b/branches/flexBox/skin/light/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/light/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/roundCorner.svg b/branches/flexBox/skin/light/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/skin/light/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/skin/light/search.gif b/branches/flexBox/skin/light/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/skin/light/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/search.png b/branches/flexBox/skin/light/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/skin/light/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/shadow.gif b/branches/flexBox/skin/light/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/skin/light/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/shadow2.gif b/branches/flexBox/skin/light/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/skin/light/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/shadowAlpha.png b/branches/flexBox/skin/light/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/skin/light/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/sprite.png b/branches/flexBox/skin/light/sprite.png
                                  deleted file mode 100644
                                  index d117e123..00000000
                                  Binary files a/branches/flexBox/skin/light/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabHoverLeft.png b/branches/flexBox/skin/light/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 708215d2..00000000
                                  Binary files a/branches/flexBox/skin/light/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabHoverMid.png b/branches/flexBox/skin/light/tabHoverMid.png
                                  deleted file mode 100644
                                  index 6ff9a864..00000000
                                  Binary files a/branches/flexBox/skin/light/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabHoverRight.png b/branches/flexBox/skin/light/tabHoverRight.png
                                  deleted file mode 100644
                                  index 9f02130d..00000000
                                  Binary files a/branches/flexBox/skin/light/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabLeft.png b/branches/flexBox/skin/light/tabLeft.png
                                  deleted file mode 100644
                                  index 8c502135..00000000
                                  Binary files a/branches/flexBox/skin/light/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMenuCheckbox.png b/branches/flexBox/skin/light/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMenuPin.png b/branches/flexBox/skin/light/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMenuRadio.png b/branches/flexBox/skin/light/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMenuTarget.png b/branches/flexBox/skin/light/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMenuTargetHover.png b/branches/flexBox/skin/light/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabMid.png b/branches/flexBox/skin/light/tabMid.png
                                  deleted file mode 100644
                                  index 0a00b60d..00000000
                                  Binary files a/branches/flexBox/skin/light/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tabRight.png b/branches/flexBox/skin/light/tabRight.png
                                  deleted file mode 100644
                                  index b43c352d..00000000
                                  Binary files a/branches/flexBox/skin/light/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/textEditorBorders.gif b/branches/flexBox/skin/light/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/skin/light/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/textEditorBorders.png b/branches/flexBox/skin/light/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/skin/light/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/textEditorCorners.gif b/branches/flexBox/skin/light/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/skin/light/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/textEditorCorners.png b/branches/flexBox/skin/light/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/skin/light/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/titlebarMid.png b/branches/flexBox/skin/light/titlebarMid.png
                                  deleted file mode 100644
                                  index 5fc63e79..00000000
                                  Binary files a/branches/flexBox/skin/light/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/toolbarMid.png b/branches/flexBox/skin/light/toolbarMid.png
                                  deleted file mode 100644
                                  index 8520aab2..00000000
                                  Binary files a/branches/flexBox/skin/light/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tree_close.gif b/branches/flexBox/skin/light/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/skin/light/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/tree_open.gif b/branches/flexBox/skin/light/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/skin/light/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/twistyClosed.png b/branches/flexBox/skin/light/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/skin/light/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/twistyOpen.png b/branches/flexBox/skin/light/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/skin/light/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/up.png b/branches/flexBox/skin/light/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/skin/light/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/upActive.png b/branches/flexBox/skin/light/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/skin/light/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/upHover.png b/branches/flexBox/skin/light/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/skin/light/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/warningIcon.gif b/branches/flexBox/skin/light/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/skin/light/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/light/warningIcon.png b/branches/flexBox/skin/light/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/skin/light/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/blank.gif b/branches/flexBox/skin/xp/blank.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/xp/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/buttonBg.png b/branches/flexBox/skin/xp/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/branches/flexBox/skin/xp/buttonBg.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/buttonBgHover.png b/branches/flexBox/skin/xp/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/branches/flexBox/skin/xp/buttonBgHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/debugger.css b/branches/flexBox/skin/xp/debugger.css
                                  deleted file mode 100644
                                  index ba55c7ea..00000000
                                  --- a/branches/flexBox/skin/xp/debugger.css
                                  +++ /dev/null
                                  @@ -1,331 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-script {
                                  -    overflow: hidden;
                                  -    font-family: monospace;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.scriptTooltip {
                                  -    position: fixed;
                                  -    z-index: 2147483647;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceBox {
                                  -    /* TODO: xxxpedro problem with sourceBox and scrolling elements */
                                  -    /*overflow: scroll; /* see issue 1479 */
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.sourceRow {
                                  -    white-space: nowrap;
                                  -    -moz-user-select: text;
                                  -}
                                  -
                                  -.sourceRow.hovered {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.sourceLine {
                                  -    -moz-user-select: none;
                                  -    margin-right: 10px;
                                  -    border-right: 1px solid #CCCCCC;
                                  -    padding: 0px 4px 0 20px;
                                  -    background: #EEEEEE no-repeat 2px 0px;
                                  -    color: #888888;
                                  -    white-space: pre;
                                  -    font-family: monospace; /* see issue 2953 */
                                  -}
                                  -
                                  -.noteInToolTip { /* below sourceLine, so it overrides it */
                                  -    background-color: #FFD472;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus .sourceLine {
                                  -    background-color: #FFFFC0;
                                  -    color: navy;
                                  -    border-right: 1px solid black;
                                  -}
                                  -
                                  -.useA11y .sourceBox .sourceViewport:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -.a11y1emSize {
                                  -    width: 1em;
                                  -    height: 1em;
                                  -    position: absolute;
                                  -}
                                  -
                                  -.useA11y .panelStatusLabel:focus {
                                  -    outline-offset: -2px !important;
                                  - }
                                  -
                                  -.sourceBox > .sourceRow > .sourceLine {
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.sourceLine:hover {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.sourceRowText {
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] {
                                  -    outline: 1px solid #D9D9B6;
                                  -    margin-right: 1px;
                                  -    background-color: lightgoldenrodyellow;
                                  -}
                                  -
                                  -.sourceRow[executable="true"] > .sourceLine {
                                  -    content: "-";
                                  -    color: #4AA02C;  /* Spring Green */
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sourceRow[exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/exe.png);
                                  -    color: #000000;
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][condition="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointCondition.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointExe.png);
                                  -}
                                  -
                                  -.sourceRow[breakpoint="true"][exe_line="true"][disabledBreakpoint="true"] > .sourceLine {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabledExe.png);
                                  -}
                                  -
                                  -.sourceLine.editing {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.conditionEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    margin-top: 0;
                                  -    left: 2px;
                                  -    width: 90%;
                                  -}
                                  -
                                  -.conditionEditorInner {
                                  -    position: relative;
                                  -    top: -26px;
                                  -    height: 0;
                                  -}
                                  -
                                  -.conditionCaption {
                                  -    margin-bottom: 2px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    font-size: 11px;
                                  -    color: #226679;
                                  -}
                                  -
                                  -.conditionInput {
                                  -    width: 100%;
                                  -    border: 1px solid #0096C0;
                                  -    font-family: monospace;
                                  -    font-size: inherit;
                                  -}
                                  -
                                  -.conditionEditorInner1 {
                                  -    padding-left: 37px;
                                  -    background: url(condBorders.png) repeat-y;
                                  -}
                                  -
                                  -.conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBorders.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.conditionEditorTop1 {
                                  -    background: url(condCorners.png) no-repeat 100% 0;
                                  -    margin-left: 37px;
                                  -    height: 35px;
                                  -}
                                  -
                                  -.conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -37px;
                                  -    width: 37px;
                                  -    height: 35px;
                                  -    background: url(condCorners.png) no-repeat;
                                  -}
                                  -
                                  -.conditionEditorBottom1 {
                                  -    background: url(condCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 37px;
                                  -    height: 33px;
                                  -}
                                  -
                                  -.conditionEditorBottom2 {
                                  -    position: relative;    left: -37px;
                                  -    width: 37px;
                                  -    height: 33px;
                                  -    background: url(condCorners.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.upsideDown {
                                  -    margin-top: 2px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner {
                                  -    top: -8px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner1 {
                                  -    padding-left: 33px;
                                  -    background: url(condBordersUps.png) repeat-y;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorInner2 {
                                  -    padding-right: 25px;
                                  -    background: url(condBordersUps.png) repeat-y 100% 0;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 0;
                                  -    margin-left: 33px;
                                  -    height: 25px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorTop2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 25px;
                                  -    background: url(condCornersUps.png) no-repeat;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom1 {
                                  -    background: url(condCornersUps.png) no-repeat 100% 100%;
                                  -    margin-left: 33px;
                                  -    height: 43px;
                                  -}
                                  -
                                  -.upsideDown .conditionEditorBottom2 {
                                  -    position: relative;
                                  -    left: -33px;
                                  -    width: 33px;
                                  -    height: 43px;
                                  -    background: url(condCornersUps.png) no-repeat 0 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointsGroupListBox {
                                  -  overflow: hidden;
                                  -}
                                  -
                                  -.breakpointBlockHead {
                                  -    position: relative;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .checkbox {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.breakpointBlockHead > .objectLink-sourceLink {
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    background-color: #FFFFFF; /* issue 3308 */
                                  -}
                                  -
                                  -.breakpointBlockHead > .closeButton {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 2px;
                                  -}
                                  -
                                  -.breakpointCheckbox {
                                  -    margin-top: 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.breakpointName {
                                  -    margin-left: 4px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] > .breakpointBlockHead > *,
                                  -.breakpointRow[aria-checked="false"] > .breakpointCode {
                                  -    opacity: 0.5;
                                  -}
                                  -
                                  -.breakpointRow[aria-checked="false"] .breakpointCheckbox,
                                  -.breakpointRow[aria-checked="false"] .objectLink-sourceLink,
                                  -.breakpointRow[aria-checked="false"] .closeButton,
                                  -.breakpointRow[aria-checked="false"] .breakpointMutationType {
                                  -    opacity: 1.0 !important;
                                  -}
                                  -
                                  -.breakpointCode {
                                  -    overflow: hidden;
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.breakpointCondition {
                                  -    white-space: nowrap;
                                  -    padding-left: 24px;
                                  -    padding-bottom: 2px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    font-family: monospace;
                                  -    color: Gray;
                                  -}
                                  -
                                  -.breakpointBlock-breakpoints > .groupHeader {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointBlock-monitors > .breakpointCode {
                                  -    padding: 0;
                                  -}
                                  -
                                  -.breakpointBlock-errorBreakpoints .breakpointCheckbox,
                                  -.breakpointBlock-monitors .breakpointCheckbox {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointHeader {
                                  -    margin: 0 !important;
                                  -    border-top: none !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/xp/detach.png b/branches/flexBox/skin/xp/detach.png
                                  deleted file mode 100644
                                  index 0ddb9a17..00000000
                                  Binary files a/branches/flexBox/skin/xp/detach.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/detachHover.png b/branches/flexBox/skin/xp/detachHover.png
                                  deleted file mode 100644
                                  index e4192729..00000000
                                  Binary files a/branches/flexBox/skin/xp/detachHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/disable.gif b/branches/flexBox/skin/xp/disable.gif
                                  deleted file mode 100644
                                  index dd9eb0e3..00000000
                                  Binary files a/branches/flexBox/skin/xp/disable.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/disable.png b/branches/flexBox/skin/xp/disable.png
                                  deleted file mode 100644
                                  index c28bcdf2..00000000
                                  Binary files a/branches/flexBox/skin/xp/disable.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/disableHover.gif b/branches/flexBox/skin/xp/disableHover.gif
                                  deleted file mode 100644
                                  index 70565a83..00000000
                                  Binary files a/branches/flexBox/skin/xp/disableHover.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/disableHover.png b/branches/flexBox/skin/xp/disableHover.png
                                  deleted file mode 100644
                                  index 26fe3754..00000000
                                  Binary files a/branches/flexBox/skin/xp/disableHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/down.png b/branches/flexBox/skin/xp/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/branches/flexBox/skin/xp/down.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/downActive.png b/branches/flexBox/skin/xp/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/branches/flexBox/skin/xp/downActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/downHover.png b/branches/flexBox/skin/xp/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/branches/flexBox/skin/xp/downHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/errorIcon-sm.png b/branches/flexBox/skin/xp/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/branches/flexBox/skin/xp/errorIcon-sm.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/errorIcon.gif b/branches/flexBox/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/branches/flexBox/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/errorIcon.png b/branches/flexBox/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/branches/flexBox/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/firebug-1.3a2.css b/branches/flexBox/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index b5dd5dde..00000000
                                  --- a/branches/flexBox/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/xp/firebug.IE6.css b/branches/flexBox/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/branches/flexBox/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/xp/firebug.css b/branches/flexBox/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index cc33761c..00000000
                                  --- a/branches/flexBox/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,3147 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -.obscured {
                                  -    left: -999999px !important;
                                  -}
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.cssPropDisable {
                                  -    float: left;
                                  -    display: block;
                                  -    width: 2em;
                                  -    cursor: default;
                                  -}
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* panelBase */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.infoTip {
                                  -    z-index: 2147483647;
                                  -    position: fixed;
                                  -    padding: 2px 3px;
                                  -    border: 1px solid #CBE087;
                                  -    background: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    display: none;
                                  -    white-space: nowrap;
                                  -    pointer-events: none;
                                  -}
                                  -
                                  -.infoTip[active="true"] {
                                  -    display: block;
                                  -}
                                  -
                                  -.infoTipLoading {
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: url(chrome://firebug/skin/loading_16.gif) no-repeat;
                                  -}
                                  -
                                  -.infoTipImageBox {
                                  -	font-size: 11px;
                                  -    min-width: 100px;
                                  -    text-align: center;
                                  -}
                                  -
                                  -.infoTipCaption {
                                  -	font-size: 11px;
                                  -    font: Monaco, monospace;
                                  -}
                                  -
                                  -.infoTipLoading > .infoTipImage,
                                  -.infoTipLoading > .infoTipCaption {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -h1.groupHeader {
                                  -    padding: 2px 4px;
                                  -    margin: 0 0 4px 0;
                                  -    border-top: 1px solid #CCCCCC;
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    background: #eee url(group.gif) repeat-x;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    _position: relative;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.inlineEditor,
                                  -.fixedWidthEditor {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    display: none;
                                  -}
                                  -
                                  -.inlineEditor {
                                  -    margin-left: -6px;
                                  -    margin-top: -3px;
                                  -    /*
                                  -    _margin-left: -7px;
                                  -    _margin-top: -5px;
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner,
                                  -.fixedWidthEditor {
                                  -    margin: 0 0 0 0 !important;
                                  -    padding: 0;
                                  -    border: none !important;
                                  -    font: inherit;
                                  -    text-decoration: inherit;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.fixedWidthEditor {
                                  -    border-top: 1px solid #888888 !important;
                                  -    border-bottom: 1px solid #888888 !important;
                                  -}
                                  -
                                  -.textEditorInner {
                                  -    position: relative;
                                  -    top: -7px;
                                  -    left: -5px;
                                  -    
                                  -    outline: none;
                                  -    resize: none;
                                  -    
                                  -    /*
                                  -    _border: 1px solid #999 !important;
                                  -    _padding: 1px !important;
                                  -    _filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color="#55404040");
                                  -    /**/
                                  -}
                                  -
                                  -.textEditorInner1 {
                                  -    padding-left: 11px;
                                  -    background: url(textEditorBorders.png) repeat-y;
                                  -    _background: url(textEditorBorders.gif) repeat-y;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorInner2 {
                                  -    position: relative;
                                  -    padding-right: 2px;
                                  -    background: url(textEditorBorders.png) repeat-y 100% 0;
                                  -    _background: url(textEditorBorders.gif) repeat-y 100% 0;
                                  -    _position: fixed;
                                  -}
                                  -
                                  -.textEditorTop1 {
                                  -    background: url(textEditorCorners.png) no-repeat 100% 0;
                                  -    margin-left: 11px;
                                  -    height: 10px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 0;
                                  -    _overflow: hidden;
                                  -}
                                  -
                                  -.textEditorTop2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 10px;
                                  -    background: url(textEditorCorners.png) no-repeat;
                                  -    _background: url(textEditorCorners.gif) no-repeat;
                                  -}
                                  -
                                  -.textEditorBottom1 {
                                  -    position: relative;
                                  -    background: url(textEditorCorners.png) no-repeat 100% 100%;
                                  -    margin-left: 11px;
                                  -    height: 12px;
                                  -    _background: url(textEditorCorners.gif) no-repeat 100% 100%;
                                  -}
                                  -
                                  -.textEditorBottom2 {
                                  -    position: relative;
                                  -    left: -11px;
                                  -    width: 11px;
                                  -    height: 12px;
                                  -    background: url(textEditorCorners.png) no-repeat 0 100%;
                                  -    _background: url(textEditorCorners.gif) no-repeat 0 100%;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* CSS */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-css {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.cssSheet > .insertBefore {
                                  -    height: 1.5em;
                                  -}
                                  -
                                  -.cssRule {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 1em 0 0 6px;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.cssRule:first-child {
                                  -    padding-top: 6px;
                                  -}
                                  -
                                  -.cssElementRuleContainer {
                                  -    position: relative;
                                  -}
                                  -
                                  -.cssHead {
                                  -    padding-right: 150px;
                                  -}
                                  -
                                  -.cssProp {
                                  -    /*padding-left: 2em;*/
                                  -}
                                  -
                                  -.cssPropName {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.cssPropValue {
                                  -    margin-left: 8px;
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.cssOverridden span {
                                  -    text-decoration: line-through;
                                  -}
                                  -
                                  -.cssInheritedRule {
                                  -}
                                  -
                                  -.cssInheritLabel {
                                  -    margin-right: 0.5em;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.cssRule .objectLink-sourceLink {
                                  -    top: 0;
                                  -}
                                  -
                                  -.cssProp.editGroup:hover {
                                  -    background: url(disable.png) no-repeat 2px 1px;
                                  -    _background: url(disable.gif) no-repeat 2px 1px;
                                  -}
                                  -
                                  -.cssProp.editGroup.editing {
                                  -    background: none;
                                  -}
                                  -
                                  -.cssProp.disabledStyle {
                                  -    background: url(disableHover.png) no-repeat 2px 1px;
                                  -    _background: url(disableHover.gif) no-repeat 2px 1px;
                                  -    opacity: 1;
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.disabledStyle .cssPropName,
                                  -.disabledStyle .cssPropValue {
                                  -    color: #CCCCCC;
                                  -}
                                  -
                                  -.cssPropValue.editing + .cssSemi,
                                  -.inlineExpander + .cssSemi {
                                  -    display: none;
                                  -}
                                  -
                                  -.cssPropValue.editing {
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.stylePropName {
                                  -    font-weight: bold;
                                  -    padding: 0 4px 4px 4px;
                                  -    width: 50%;
                                  -}
                                  -
                                  -.stylePropValue {
                                  -    width: 50%;
                                  -}
                                  -/*
                                  -.useA11y .a11yCSSView .focusRow:focus {
                                  -    outline: none;
                                  -    background-color: transparent
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssSelector, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropName, 
                                  - .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
                                  - .useA11y .a11yCSSView .computedStyleRow:focus, 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6;
                                  - }
                                  - 
                                  - .useA11y .a11yCSSView .groupHeader:focus {
                                  -    outline-offset: -2px;
                                  - }
                                  -/**/
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    -webkit-border-radius: 4px 4px 0 0;
                                  -    border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    white-space: pre-wrap;
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoPostText .netInfoParamName {
                                  -    width: 1px; /* Google Chrome need this otherwise the first column of 
                                  -                   the post variables table will be larger than expected */
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -/*
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -/**/
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -    min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties IE6 */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -
                                  -* html .logRow-spy .spyHead .spyTitle,
                                  -* html .logGroup .logGroupLabel,
                                  -* html .hasChildren .memberLabelCell .memberLabel,
                                  -* html .hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -* html .opened .spyHead .spyTitle,
                                  -* html .opened .logGroupLabel, 
                                  -* html .opened .memberLabelCell .memberLabel {
                                  -    background-image: url(tree_close.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #f8f8f8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -/* xxxpedro reps object representation .................................... */
                                  -.objectProp-object {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectProps {
                                  -    color: #000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.objectPropName {
                                  -    /*font-style: italic;*/
                                  -    color: #777;
                                  -}
                                  -
                                  -/*
                                  -.objectProps .objectProp-string,
                                  -.objectProps .objectProp-number,
                                  -.objectProps .objectProp-object
                                  -{
                                  -    font-style: italic;
                                  -}
                                  -/**/
                                  -
                                  -.objectProps .objectProp-string
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #f55;
                                  -}
                                  -.objectProps .objectProp-number
                                  -{
                                  -    /*font-family: Monaco, monospace;*/
                                  -    color: #55a;
                                  -}
                                  -.objectProps .objectProp-object
                                  -{
                                  -    /*font-family: Lucida Grande,sans-serif;*/
                                  -    color: #585;
                                  -}
                                  -/* xxxpedro reps object representation .................................... */
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.objectEqual,
                                  -.objectComma,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.objectRightBrace,
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.objectLeftBrace,
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.objectRightBrace,
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbstylesheetButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -    outline: none;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    _position: static;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    border-spacing: 0;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbChrome > tbody > tr > td {
                                  -    padding: 0;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 48px;
                                  -    padding: 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: fixed;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(min.png);
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(minHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(detach.png);
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(detachHover.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate {
                                  -    background: url(off.png);
                                  -}
                                  -
                                  -#fbWindow_btDeactivate:hover {
                                  -    background: url(offHover.png);
                                  -}
                                  -
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    line-height: 13px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em/1.4545em Monaco, monospace;
                                  -    position: relative;
                                  -    float: left;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0 5px 0 0;
                                  -    padding: 0 5px 0 10px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warn {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warn {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -/*
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/branches/flexBox/skin/xp/firebug.html b/branches/flexBox/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index 22960919..00000000
                                  --- a/branches/flexBox/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,215 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<!-- An empty script to avoid FOUC when loading the stylesheet -->
                                  -<script type="text/javascript"></script>
                                  -<style type="text/css" media="screen">@import "firebug.css";</style>
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/xp/firebug.png b/branches/flexBox/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/branches/flexBox/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/group.gif b/branches/flexBox/skin/xp/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/branches/flexBox/skin/xp/group.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/html.css b/branches/flexBox/skin/xp/html.css
                                  deleted file mode 100644
                                  index 9d0afb50..00000000
                                  --- a/branches/flexBox/skin/xp/html.css
                                  +++ /dev/null
                                  @@ -1,272 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-html {
                                  -    -moz-box-sizing: padding-box;
                                  -    padding: 4px 0 0 2px;
                                  -}
                                  -
                                  -.nodeBox {
                                  -    position: relative;
                                  -    font-family: Monaco, monospace;
                                  -    padding-left: 13px;
                                  -    -moz-user-select: -moz-none;
                                  -}
                                  -.nodeBox.search-selection {
                                  -    -moz-user-select: text;
                                  -}
                                  -.twisty {
                                  -    position: absolute;
                                  -    left: 0px;
                                  -    top: 0px;
                                  -    width: 14px;
                                  -    height: 14px;
                                  -}
                                  -
                                  -.nodeChildBox {
                                  -    margin-left: 12px;
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeLabel,
                                  -.nodeCloseLabel {
                                  -    margin: -2px 2px 0 2px;
                                  -    border: 2px solid transparent;
                                  -    -moz-border-radius: 3px;
                                  -    padding: 0 2px;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeCloseLabel {
                                  -    display: none;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,
                                  -.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeWhiteSpace {
                                  -    border: 1px solid LightGray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -.nodeWhiteSpace_Space {
                                  -    border: 1px solid #ddd;
                                  -}
                                  -
                                  -.nodeTextEntity {
                                  -    border: 1px solid gray;
                                  -    white-space: pre; /* otherwise the border will be collapsed around zero pixels */
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlightOpen > .nodeLabel {
                                  -    background-color: #EEEEEE;
                                  -}
                                  -
                                  -.nodeBox.highlightOpen > .nodeCloseLabel,
                                  -.nodeBox.highlightOpen > .nodeChildBox,
                                  -.nodeBox.open > .nodeCloseLabel,
                                  -.nodeBox.open > .nodeChildBox {
                                  -    display: block;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel {
                                  -    border-color: Highlight;
                                  -    background-color: Highlight;
                                  -    color: HighlightText !important;
                                  -}
                                  -
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: inherit !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.highlighted > .nodeLabel {
                                  -    border-color: Highlight !important;
                                  -    background-color: cyan !important;
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.highlighted > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: #000000 !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden .nodeCloseLabel,
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeText,
                                  -.nodeBox.nodeHidden .nodeText {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden .nodeCloseLabel > .nodeCloseLabelBox > .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeTag,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue,
                                  -.nodeBox.nodeHidden.selected > .nodeLabel > .nodeLabelBox > .nodeText {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeBox.mutated > .nodeLabel,
                                  -.nodeAttr.mutated,
                                  -.nodeValue.mutated,
                                  -.nodeText.mutated,
                                  -.nodeBox.mutated > .nodeText {
                                  -    background-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -.nodeBox.selected.mutated > .nodeLabel,
                                  -.nodeBox.selected.mutated > .nodeLabel > .nodeLabelBox,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr.mutated > .nodeValue,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeAttr > .nodeValue.mutated,
                                  -.nodeBox.selected > .nodeLabel > .nodeLabelBox > .nodeText.mutated {
                                  -    background-color: #EFFF79;
                                  -    border-color: #EFFF79;
                                  -    color: #FF0000 !important;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-dirxml {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.soloElement > .nodeBox  {
                                  -    padding-left: 0;
                                  -}
                                  -
                                  -.useA11y .nodeLabel.focused {
                                  -    outline: 2px solid #FF9933;
                                  -    -moz-outline-radius: 3px;
                                  -    outline-offset: -2px;
                                  -}
                                  -
                                  -.useA11y .nodeLabelBox:focus {
                                  -    outline: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.breakpointCode .twisty {
                                  -    display: none;
                                  -}
                                  -
                                  -.breakpointCode .nodeBox.containerNodeBox,
                                  -.breakpointCode .nodeLabel {
                                  -    padding-left: 0px;
                                  -    margin-left: 0px;
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.breakpointCode .nodeTag,
                                  -.breakpointCode .nodeAttr,
                                  -.breakpointCode .nodeText,
                                  -.breakpointCode .nodeValue,
                                  -.breakpointCode .nodeLabel {
                                  -    color: DarkGreen !important;
                                  -}
                                  -
                                  -.breakpointMutationType {
                                  -    position: absolute;
                                  -    top: 4px;
                                  -    right: 20px;
                                  -    color: gray;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel,
                                  -.netPageRow > .netCol > .netPageTitle {
                                  -    background-image: url(twistyClosed.png);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -	min-height: 12px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-log > .objectBox-array.hasTwisty.opened,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel,
                                  -.netPageRow.opened > .netCol > .netPageTitle {
                                  -    background-image: url(twistyOpen.png);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 4px 4px;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/skin/xp/infoIcon.gif b/branches/flexBox/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/branches/flexBox/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/infoIcon.png b/branches/flexBox/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/branches/flexBox/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/loading_16.gif b/branches/flexBox/skin/xp/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/branches/flexBox/skin/xp/loading_16.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/min.png b/branches/flexBox/skin/xp/min.png
                                  deleted file mode 100644
                                  index 1034d66f..00000000
                                  Binary files a/branches/flexBox/skin/xp/min.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/minHover.png b/branches/flexBox/skin/xp/minHover.png
                                  deleted file mode 100644
                                  index b0d1e1af..00000000
                                  Binary files a/branches/flexBox/skin/xp/minHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/off.png b/branches/flexBox/skin/xp/off.png
                                  deleted file mode 100644
                                  index b70b1d24..00000000
                                  Binary files a/branches/flexBox/skin/xp/off.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/offHover.png b/branches/flexBox/skin/xp/offHover.png
                                  deleted file mode 100644
                                  index f3670f19..00000000
                                  Binary files a/branches/flexBox/skin/xp/offHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/pixel_transparent.gif b/branches/flexBox/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/branches/flexBox/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/roundCorner.svg b/branches/flexBox/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/branches/flexBox/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/branches/flexBox/skin/xp/search.gif b/branches/flexBox/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/branches/flexBox/skin/xp/search.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/search.png b/branches/flexBox/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/branches/flexBox/skin/xp/search.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/shadow.gif b/branches/flexBox/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/branches/flexBox/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/shadow2.gif b/branches/flexBox/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/branches/flexBox/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/shadowAlpha.png b/branches/flexBox/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/branches/flexBox/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/sprite.png b/branches/flexBox/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/branches/flexBox/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabHoverLeft.png b/branches/flexBox/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabHoverMid.png b/branches/flexBox/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabHoverRight.png b/branches/flexBox/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabLeft.png b/branches/flexBox/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMenuCheckbox.png b/branches/flexBox/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMenuPin.png b/branches/flexBox/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMenuRadio.png b/branches/flexBox/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMenuTarget.png b/branches/flexBox/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMenuTargetHover.png b/branches/flexBox/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabMid.png b/branches/flexBox/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tabRight.png b/branches/flexBox/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/branches/flexBox/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/textEditorBorders.gif b/branches/flexBox/skin/xp/textEditorBorders.gif
                                  deleted file mode 100644
                                  index 0ee54978..00000000
                                  Binary files a/branches/flexBox/skin/xp/textEditorBorders.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/textEditorBorders.png b/branches/flexBox/skin/xp/textEditorBorders.png
                                  deleted file mode 100644
                                  index 21682c3d..00000000
                                  Binary files a/branches/flexBox/skin/xp/textEditorBorders.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/textEditorCorners.gif b/branches/flexBox/skin/xp/textEditorCorners.gif
                                  deleted file mode 100644
                                  index 04f84215..00000000
                                  Binary files a/branches/flexBox/skin/xp/textEditorCorners.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/textEditorCorners.png b/branches/flexBox/skin/xp/textEditorCorners.png
                                  deleted file mode 100644
                                  index a0f839dc..00000000
                                  Binary files a/branches/flexBox/skin/xp/textEditorCorners.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/titlebarMid.png b/branches/flexBox/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/branches/flexBox/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/toolbarMid.png b/branches/flexBox/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/branches/flexBox/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tree_close.gif b/branches/flexBox/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/branches/flexBox/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/tree_open.gif b/branches/flexBox/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/branches/flexBox/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/twistyClosed.png b/branches/flexBox/skin/xp/twistyClosed.png
                                  deleted file mode 100644
                                  index f80319b0..00000000
                                  Binary files a/branches/flexBox/skin/xp/twistyClosed.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/twistyOpen.png b/branches/flexBox/skin/xp/twistyOpen.png
                                  deleted file mode 100644
                                  index 86801243..00000000
                                  Binary files a/branches/flexBox/skin/xp/twistyOpen.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/up.png b/branches/flexBox/skin/xp/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/branches/flexBox/skin/xp/up.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/upActive.png b/branches/flexBox/skin/xp/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/branches/flexBox/skin/xp/upActive.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/upHover.png b/branches/flexBox/skin/xp/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/branches/flexBox/skin/xp/upHover.png and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/warningIcon.gif b/branches/flexBox/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/branches/flexBox/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/branches/flexBox/skin/xp/warningIcon.png b/branches/flexBox/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/branches/flexBox/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/branches/flexBox/tests/content/css/3262/issue3262.html b/branches/flexBox/tests/content/css/3262/issue3262.html
                                  deleted file mode 100644
                                  index e9709533..00000000
                                  --- a/branches/flexBox/tests/content/css/3262/issue3262.html
                                  +++ /dev/null
                                  @@ -1,104 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 3262: [Firebug lite] Specificity of grouped CSS Rules</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            var Selector = Firebug.Selector;
                                  -            
                                  -            // Select HTML Panel
                                  -            FBTest.selectPanel("HTML");
                                  -            
                                  -            // Select the test element in the HTML Panel
                                  -            var htmlPanel = FBTest.getPanel("HTML");
                                  -            htmlPanel.select( Selector("#test")[0] , true );
                                  -            
                                  -            // Reference to the Style Side Panel
                                  -            var cssPanelNode = FBTest.getPanel("css").panelNode;
                                  -
                                  -            // Displayed CSS Rules
                                  -            var cssRules;
                                  -            
                                  -            // Wait Style Side Panel to display the CSS Rules
                                  -            FBTest.wait(function()
                                  -            {
                                  -                // Look for displayed CSS Rules
                                  -                cssRules = Selector(".cssRule", cssPanelNode);
                                  -                return cssRules.length > 0;
                                  -            },
                                  -            function()
                                  -            {
                                  -                FBTest.ok(cssRules.length > 0, cssRules.length + " CSS Rules were found");
                                  -                
                                  -                var firstRule = cssRules[0];
                                  -                var firstSelector = Selector(".cssSelector", firstRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("#test", firstSelector, "First rule's selector is #test");
                                  -                
                                  -                var secondRule = cssRules[1];
                                  -                var secondSelector = Selector(".cssSelector", secondRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare(".green", secondSelector, "Second rule's selector is .green");
                                  -                
                                  -                var thirdRule = cssRules[2];
                                  -                var thirdSelector = Selector(".cssSelector", thirdRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("div, acronym, address, dfn, ins, kbd, samp, strike, tt, var, fieldset", 
                                  -                        thirdSelector, "Third rule's selector is 'div, acronym, address, dfn, ins, kbd, samp, strike, tt, var, fieldset'");
                                  -            });
                                  -
                                  -        });
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -        <style>
                                  -        /* here we have 11 tag rules */
                                  -        div, acronym, address, dfn, ins, kbd, samp, strike, tt, var, fieldset {
                                  -            border-color: red;
                                  -        }
                                  -        
                                  -        /* here we have 1 class rule */
                                  -        .green {border-color:green;}
                                  -        
                                  -        /* some border */
                                  -        #test {border-width: 2px; border-style: solid; padding: 2px 4px;}
                                  -        </style>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=3262">Issue 3262</a>: [Firebug lite] Specificity of grouped CSS Rules</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="content">
                                  -                <div id="test" class="green">inspect here</div>
                                  -            </section>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Inspect the element which says "inspect here" inside the content section 
                                  -                        (it is a div with id "test")</li>
                                  -                    <li>Observe the Style Side Panel</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The first rule should be "#test"</li>
                                  -                    <li>The second rule should be ".green"</li>
                                  -                    <li>The third rule should be "div, acronym, address, dfn, ins, kbd, samp, strike, tt, var, fieldset"</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/css/3326/external.css b/branches/flexBox/tests/content/css/3326/external.css
                                  deleted file mode 100644
                                  index 19dc9782..00000000
                                  --- a/branches/flexBox/tests/content/css/3326/external.css
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -html #content .green {border-color: green;}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/css/3326/imported.css b/branches/flexBox/tests/content/css/3326/imported.css
                                  deleted file mode 100644
                                  index f8c6046b..00000000
                                  --- a/branches/flexBox/tests/content/css/3326/imported.css
                                  +++ /dev/null
                                  @@ -1,2 +0,0 @@
                                  -/* rule in line 2 */
                                  -#content .border {border-style: solid;}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/css/3326/issue3326.html b/branches/flexBox/tests/content/css/3326/issue3326.html
                                  deleted file mode 100644
                                  index d85b5489..00000000
                                  --- a/branches/flexBox/tests/content/css/3326/issue3326.html
                                  +++ /dev/null
                                  @@ -1,132 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 3326: [Firebug lite] CSS Rule Line Number</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            function findLineNumber(sourceLinks, index)
                                  -            {
                                  -                var m = reLinerNumber.exec(sourceLinks[index].innerHTML); 
                                  -                return m && m[1];
                                  -            }
                                  -            
                                  -            var reLinerNumber = /\b(\d+)\)$/;
                                  -            var Selector = Firebug.Selector;
                                  -            
                                  -            // Select HTML Panel
                                  -            FBTest.selectPanel("HTML");
                                  -            
                                  -            // Select the test element in the HTML Panel
                                  -            var htmlPanel = FBTest.getPanel("HTML");
                                  -            htmlPanel.select( Selector("#test")[0] , true );
                                  -            
                                  -            // Reference to the Style Side Panel
                                  -            var cssPanelNode = FBTest.getPanel("css").panelNode;
                                  -
                                  -            // Displayed CSS Rules
                                  -            var cssRules;
                                  -            
                                  -            // Wait Style Side Panel to display the CSS Rules
                                  -            FBTest.wait(function()
                                  -            {
                                  -                // Look for displayed CSS Rules
                                  -                cssRules = Selector(".cssRule", cssPanelNode);
                                  -                return cssRules.length > 0;
                                  -            },
                                  -            function()
                                  -            {
                                  -                FBTest.ok(cssRules.length > 0, cssRules.length + " CSS Rules were found");
                                  -                
                                  -                var sourceLinks = Selector(".objectLink-sourceLink", cssPanelNode);
                                  -                
                                  -                var firstRule = cssRules[0];
                                  -                var firstSelector = Selector(".cssSelector", firstRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("html #content div.big", firstSelector, "First rule's selector is 'html #content div.big'");
                                  -                
                                  -                FBTest.compare("83", findLineNumber(sourceLinks, 0), "First rule's line number is 83");
                                  -                
                                  -                var secondRule = cssRules[1];
                                  -                var secondSelector = Selector(".cssSelector", secondRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("html #content .green", secondSelector, "Second rule's selector is 'html #content .green'");
                                  -                
                                  -                FBTest.compare("1", findLineNumber(sourceLinks, 1), "Second rule's line number is 1");
                                  -                
                                  -                var thirdRule = cssRules[2];
                                  -                var thirdSelector = Selector(".cssSelector", thirdRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("#content .border", thirdSelector, "Third rule's selector is '#content .border'");
                                  -                
                                  -                FBTest.compare("2", findLineNumber(sourceLinks, 2), "Third rule's line number is 2");
                                  -                
                                  -                var fourthRule = cssRules[3];
                                  -                var fourthSelector = Selector(".cssSelector", fourthRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("#test", fourthSelector, "Fourth rule's selector is '#test'");
                                  -                
                                  -                FBTest.compare("85", findLineNumber(sourceLinks, 3), "Fourth rule's line number is 85");
                                  -
                                  -            });
                                  -
                                  -        });
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -        <style>
                                  -        @import url("imported.css");
                                  -        
                                  -        html #content div.big {border-width: 10px;}
                                  -        
                                  -        #test {padding: 4px 8px;}
                                  -        </style>
                                  -        <link href="external.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=YYYY">Issue 3326</a>: [Firebug lite] CSS Rule Line Number</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="content">
                                  -                <div id="test" class="big green border">inspect here</div>
                                  -            </section>
                                  -            <section id="description">
                                  -                <p>
                                  -                    In this test case we're actually testing three things: 
                                  -                </p>
                                  -                <ol>
                                  -                    <li>Firebug Lite's ability of accessing three kinds of stylesheets: 
                                  -                        internal (via &lt;style&gt;), external (via &lt;link&gt;, but from the 
                                  -                        same domain) and imported (via @import)</li>
                                  -                    <li>Firebug Lite's ability of parsing these kinds of stylesheets and
                                  -                        retrieving the correct line number for the rules</li>
                                  -                    <li>Firebug Lite's ability of reordering rules according to specificity</li>
                                  -                </ol>
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Inspect the element which says "inspect here" inside the content section 
                                  -                        (it is a div with id "test")</li>
                                  -                    <li>Observe the Style Side Panel</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The first rule should be "#test"</li>
                                  -                    <li>The second rule should be ".green"</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/css/4776/issue4776.html b/branches/flexBox/tests/content/css/4776/issue4776.html
                                  deleted file mode 100644
                                  index 30b2b708..00000000
                                  --- a/branches/flexBox/tests/content/css/4776/issue4776.html
                                  +++ /dev/null
                                  @@ -1,94 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 4776: [Firebug lite] CSS Media Types</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            var Selector = Firebug.Selector;
                                  -            
                                  -            // Select HTML Panel
                                  -            FBTest.selectPanel("HTML");
                                  -            
                                  -            // Select the test element in the HTML Panel
                                  -            var htmlPanel = FBTest.getPanel("HTML");
                                  -            htmlPanel.select( Selector("#test")[0] , true );
                                  -            
                                  -            // Reference to the Style Side Panel
                                  -            var cssPanelNode = FBTest.getPanel("css").panelNode;
                                  -
                                  -            // Displayed CSS Rules
                                  -            var cssRules;
                                  -            
                                  -            // Wait Style Side Panel to display the CSS Rules
                                  -            FBTest.wait(function()
                                  -            {
                                  -                // Look for displayed CSS Rules
                                  -                cssRules = Selector(".cssRule", cssPanelNode);
                                  -                return cssRules.length > 0;
                                  -            },
                                  -            function()
                                  -            {
                                  -                FBTest.ok(cssRules.length > 0, cssRules.length + " CSS Rules were found");
                                  -                
                                  -                var firstRule = cssRules[0];
                                  -                var firstSelector = Selector(".cssSelector", firstRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("#test", firstSelector, "First rule's selector is #test");
                                  -                
                                  -                var secondRule = cssRules[1];
                                  -                var secondSelector = Selector(".cssSelector", secondRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare(".green", secondSelector, "Second rule's selector is .green");
                                  -            });
                                  -
                                  -        });
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -        <style>
                                  -        @page {margin: 10px;}
                                  -        
                                  -        .green {color: green;}
                                  -        
                                  -        @media screen { * { font-family: sans-serif } }
                                  -        
                                  -        #test {text-decoration: underline}
                                  -        </style>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=4776">Issue 4776</a>: [Firebug lite] CSS Media Types</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="content">
                                  -                <div id="test" class="green">inspect here</div>
                                  -            </section>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Inspect the element which says "inspect here" inside the content section 
                                  -                        (it is a div with id "test")</li>
                                  -                    <li>Observe the Style Side Panel</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The first rule should be "#test"</li>
                                  -                    <li>The second rule should be ".green"</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/css/4777/issue4777.html b/branches/flexBox/tests/content/css/4777/issue4777.html
                                  deleted file mode 100644
                                  index 04d49e50..00000000
                                  --- a/branches/flexBox/tests/content/css/4777/issue4777.html
                                  +++ /dev/null
                                  @@ -1,97 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 4777: [Firebug lite] Specificity of CSS Rules</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            var Selector = Firebug.Selector;
                                  -            
                                  -            // Select HTML Panel
                                  -            FBTest.selectPanel("HTML");
                                  -            
                                  -            // Select the test element in the HTML Panel
                                  -            var htmlPanel = FBTest.getPanel("HTML");
                                  -            htmlPanel.select( Selector("#test")[0] , true );
                                  -            
                                  -            // Reference to the Style Side Panel
                                  -            var cssPanelNode = FBTest.getPanel("css").panelNode;
                                  -
                                  -            // Displayed CSS Rules
                                  -            var cssRules;
                                  -            
                                  -            // Wait Style Side Panel to display the CSS Rules
                                  -            FBTest.wait(function()
                                  -            {
                                  -                // Look for displayed CSS Rules
                                  -                cssRules = Selector(".cssRule", cssPanelNode);
                                  -                return cssRules.length > 0;
                                  -            },
                                  -            function()
                                  -            {
                                  -                FBTest.ok(cssRules.length > 0, cssRules.length + " CSS Rules were found");
                                  -                
                                  -                var firstRule = cssRules[0];
                                  -                var firstSelector = Selector(".cssSelector", firstRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("div#test", firstSelector, "First rule's selector is div#test");
                                  -                
                                  -                var secondRule = cssRules[1];
                                  -                var secondSelector = Selector(".cssSelector", secondRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("#test", secondSelector, "Second rule's selector is #test");
                                  -                
                                  -                var thirdRule = cssRules[2];
                                  -                var thirdSelector = Selector(".cssSelector", thirdRule)[0].innerHTML;
                                  -                
                                  -                FBTest.compare("div", thirdSelector, "Third rule's selector is div");
                                  -            });
                                  -
                                  -        });
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -        <style>
                                  -        div {color:inherit;}
                                  -        div#test {color:green;}
                                  -        #test {color:red;}
                                  -        </style>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=4777">Issue 4777</a>: [Firebug lite] Specificity of CSS Rules</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="content">
                                  -                <div id="test">inspect here</div>
                                  -            </section>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Inspect the element which says "inspect here" inside the content section 
                                  -                        (it is a div with id "test")</li>
                                  -                    <li>Observe the Style Side Panel</li>
                                  -                    <li>Note that the most specific rule is "div#test", the one with green color</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The first rule should be "div#test"</li>
                                  -                    <li>The first rule should be "#test"</li>
                                  -                    <li>The first rule should be "div"</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/tests/content/firebug/4239/IE9.js b/branches/flexBox/tests/content/firebug/4239/IE9.js
                                  deleted file mode 100644
                                  index 84659a74..00000000
                                  --- a/branches/flexBox/tests/content/firebug/4239/IE9.js
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -/*
                                  -  IE7/IE8/IE9.js - copyright 2004-2010, Dean Edwards
                                  -  http://code.google.com/p/ie7-js/
                                  -  http://www.opensource.org/licenses/mit-license.php
                                  -*/
                                  -;(function(N,p){var h=N.IE7={version:"2.1(beta4)",toString:bT("[IE7]")};h.compat=9;var t=h.appVersion=navigator.appVersion.match(/MSIE (\d\.\d)/)[1]-0;if(/ie7_off/.test(top.location.search)||t<5.5||t>=h.compat)return;var E=t<6,bj=bT(),bx=p.documentElement,B,x,cy="!",U=":link{ie7-link:link}:visited{ie7-link:visited}",cz=/^[\w\.]+[^:]*$/;function bk(c,a){if(cz.test(c))c=(a||"")+c;return c};function by(c,a){c=bk(c,a);return c.slice(0,c.lastIndexOf("/")+1)};var bU=p.scripts[p.scripts.length-1],cA=by(bU.src);try{var V=new ActiveXObject("Microsoft.XMLHTTP")}catch(ex){}var bl={};function cB(c,a){try{c=bk(c,a);if(!bl[c]){V.open("GET",c,false);V.send();if(V.status==0||V.status==200){bl[c]=V.responseText}}}catch(ex){}return bl[c]||""};var dA=Array.prototype.slice,dB=/%([1-9])/g,cC=/^\s\s*/,cD=/\s\s*$/,cE=/([\/()[\]{}|*+-.,^$?\\])/g,bV=/\bbase\b/,bW=["constructor","toString"],bm;function F(){};F.extend=function(g,f){bm=true;var d=new this;O(d,g);bm=false;var c=d.constructor;function a(){if(!bm)c.apply(this,arguments)};d.constructor=a;a.extend=arguments.callee;O(a,f);a.prototype=d;return a};F.prototype.extend=function(a){return O(this,a)};var P="#",Q="#",bc=".",bn="/",dC=/\\(\d+)/g,cF=/\[(\\.|[^\]\\])+\]|\\.|\(\?/g,cG=/\(/g,cH=/\$(\d+)/,cI=/^\$\d+$/,cJ=/(\[(\\.|[^\]\\])+\]|\\.|\(\?)|\(/g,cK=/^<#\w+>$/,cL=/<#(\w+)>/g,G=F.extend({constructor:function(a){this[bc]=[];this[Q]={};this.merge(a)},add:function(c,a){delete this[bn];if(c instanceof RegExp){c=c.source}if(!this[P+c])this[bc].push(String(c));return this[Q][P+c]=new G.Item(c,a,this)},compile:function(a){if(a||!this[bn]){this[bn]=new RegExp(this,this.ignoreCase?"gi":"g")}return this[bn]},merge:function(c){for(var a in c)this.add(a,c[a])},exec:function(o){var k=this,l=k[bc],m=k[Q],j,i=this.compile(true).exec(o);if(i){var g=0,f=1;while((j=m[P+l[g++]])){var d=f+j.length+1;if(i[f]){if(j.replacement===0){return k.exec(o)}else{var c=i.slice(f,d),a=c.length;while(--a)c[a]=c[a]||"";c[0]={match:c[0],item:j};return c}}f=d}}return null},parse:function(o){o+="";var k=this,l=k[bc],m=k[Q];return o.replace(this.compile(),function(j){var i=[],g,f=1,d=arguments.length;while(--d)i[d]=arguments[d]||"";while((g=m[P+l[d++]])){var c=f+g.length+1;if(i[f]){var a=g.replacement;switch(typeof a){case"function":return a.apply(k,i.slice(f,c));case"number":return i[f+a];default:return a}}f=c}return j})},toString:function(){var g=[],f=this[bc],d=this[Q],c;for(var a=0;c=d[P+f[a]];a++){g[a]=c.source}return"("+g.join(")|(")+")"}},{IGNORE:null,Item:F.extend({constructor:function(k,l,m){var j=k.indexOf("(")===-1?0:G.count(k),i=m.dictionary;if(i&&k.indexOf("<#")!==-1){if(cK.test(k)){var g=i[Q][P+k.slice(2,-1)];k=g.replacement;j=g._5}else{k=i.parse(k)}}if(typeof l=="number")l=String(l);else if(l==null)l=0;if(typeof l=="string"&&cH.test(l)){if(cI.test(l)){var f=l.slice(1)-0;if(f&&f<=j)l=f}else{var d=l,c;l=function(a){if(!c){c=new RegExp(k,"g"+(this.ignoreCase?"i":""))}return a.replace(c,d)}}}this.length=j;this.source=String(k);this.replacement=l}}),count:function(a){return(String(a).replace(cF,"").match(cG)||"").length}}),cM=G.extend({parse:function(f){var d=this[Q];return f.replace(cL,function(c,a){a=d[P+a];return a?a._6:c})},add:function(g,f){if(f instanceof RegExp){f=f.source}var d=f.replace(cJ,cN);if(f.indexOf("(")!==-1){var c=G.count(f)}if(f.indexOf("<#")!==-1){f=this.parse(f);d=this.parse(d)}var a=this.base(g,f);a._6=d;a._5=c||a.length;return a},toString:function(){return"(<#"+this[PATTERNS].join(">)|(<#")+">)"}});function cN(c,a){return a||"(?:"};function O(i,g){if(i&&g){var f=(typeof g=="function"?Function:Object).prototype;var d=bW.length,c;if(bm)while(c=bW[--d]){var a=g[c];if(a!=f[c]){if(bV.test(a)){bX(i,c,a)}else{i[c]=a}}}for(c in g)if(typeof f[c]=="undefined"){var a=g[c];if(i[c]&&typeof a=="function"&&bV.test(a)){bX(i,c,a)}else{i[c]=a}}}return i};function bX(i,g,f){var d=i[g];i[g]=function(){var c=this.base;this.base=d;var a=f.apply(this,arguments);this.base=c;return a}};function cO(f,d){if(!d)d=f;var c={};for(var a in f)c[a]=d[a];return c};function H(g){var f=arguments,d=new RegExp("%([1-"+arguments.length+"])","g");return String(g).replace(d,function(c,a){return a<f.length?f[a]:c})};function bo(c,a){return String(c).match(a)||[]};function bY(a){return String(a).replace(cE,"\\$1")};function bZ(a){return String(a).replace(cC,"").replace(cD,"")};function bT(a){return function(){return a}};var ca=G.extend({ignoreCase:true}),cP=/'/g,cb=/'(\d+)'/g,dD=/\\/g,bz=/\\([nrtf'"])/g,W=[],cc=new ca({"<!\\-\\-|\\-\\->":"","\\/\\*[^*]*\\*+([^\\/][^*]*\\*+)*\\/":"","@(namespace|import)[^;\\n]+[;\\n]":"","'(\\\\.|[^'\\\\])*'":cd,'"(\\\\.|[^"\\\\])*"':cd,"\\s+":" "});function cQ(a){return cc.parse(a).replace(bz,"$1")};function bd(a){return a.replace(cb,cR)};function cd(c){var a=W.length;W[a]=c.slice(1,-1).replace(bz,"$1").replace(cP,"\\'");return"'"+a+"'"};function cR(d,c){var a=W[c];if(a==null)return d;return"'"+W[c]+"'"};function bp(a){return a.indexOf("'")===0?W[a.slice(1,-1)]:a};var cS=new G({Width:"Height",width:"height",Left:"Top",left:"top",Right:"Bottom",right:"bottom",onX:"onY"});function ce(a){return cS.parse(a)};var cf=[];function bA(a){cT(a);y(N,"onresize",a)};function y(d,c,a){d.attachEvent(c,a);cf.push(arguments)};function cU(d,c,a){try{d.detachEvent(c,a)}catch(ex){}};y(N,"onunload",function(){var a;while(a=cf.pop()){cU(a[0],a[1],a[2])}});function be(d,c,a){if(!d.elements)d.elements={};if(a)d.elements[c.uniqueID]=c;else delete d.elements[c.uniqueID];return a};y(N,"onbeforeprint",function(){if(!h.CSS.print)new cg("print");h.CSS.print.recalc()});var ch=/^\d+(px)?$/i,X=/^\d+%$/,C=function(f,d){if(ch.test(d))return parseInt(d);var c=f.style.left,a=f.runtimeStyle.left;f.runtimeStyle.left=f.currentStyle.left;f.style.left=d||0;d=f.style.pixelLeft;f.style.left=c;f.runtimeStyle.left=a;return d},bB="ie7-",ci=F.extend({constructor:function(){this.fixes=[];this.recalcs=[]},init:bj}),bC=[];function cT(a){bC.push(a)};h.recalc=function(){h.HTML.recalc();h.CSS.recalc();for(var a=0;a<bC.length;a++)bC[a]()};function bq(a){return a.currentStyle["ie7-position"]=="fixed"};function bD(c,a){return c.currentStyle[bB+a]||c.currentStyle[a]};function Y(d,c,a){if(d.currentStyle[bB+c]==null){d.runtimeStyle[bB+c]=d.currentStyle[c]}d.runtimeStyle[c]=a};function cj(c){var a=p.createElement(c||"object");a.style.cssText="position:absolute;padding:0;display:block;border:none;clip:rect(0 0 0 0);left:-9999";a.ie7_anon=true;return a};var bE="(e.nextSibling&&IE7._1(e,'next'))",ck=bE.replace(/next/g,"previous"),cl="e.nodeName>'@'",cm="if("+cl+"){",cn="(e.nodeName==='FORM'?IE7._0(e,'id'):e.id)",cV=/a(#[\w-]+)?(\.[\w-]+)?:(hover|active)/i,cW=/(.*)(:first-(line|letter))/,cX=/\s/,cY=/((?:\\.|[^{\\])+)\{((?:\\.|[^}\\])+)\}/g,cZ=/(?:\\.|[^,\\])+/g,I=p.styleSheets,bF=[];h.CSS=new(ci.extend({parser:new ca,screen:"",print:"",styles:[],rules:[],pseudoClasses:t<7?"first\\-child":"",dynamicPseudoClasses:{toString:function(){var c=[];for(var a in this)c.push(a);return c.join("|")}},init:function(){var j="^\x01$",i="\\[class=?[^\\]]*\\]",g=[];if(this.pseudoClasses)g.push(this.pseudoClasses);var f=this.dynamicPseudoClasses.toString();if(f)g.push(f);g=g.join("|");var d=t<7?["[>+~\\[(]|([:.])[\\w-]+\\1"]:[i];if(g)d.push(":("+g+")");this.UNKNOWN=new RegExp(d.join("|")||j,"i");var c=t<7?["\\[[^\\]]+\\]|[^\\s(\\[]+\\s*[+~]"]:[i],a=c.concat();if(g)a.push(":("+g+")");u.COMPLEX=new RegExp(a.join("|")||j,"ig");if(this.pseudoClasses)c.push(":("+this.pseudoClasses+")");bf.COMPLEX=new RegExp(c.join("|")||j,"i");f="not\\(:"+f.split("|").join("\\)|not\\(:")+"\\)|"+f;bf.MATCH=new RegExp(f?"(.*?):("+f+")(.*)":j,"i");this.createStyleSheet();this.refresh()},addEventHandler:function(){y.apply(null,arguments)},addFix:function(c,a){this.parser.add(c,a)},addRecalc:function(i,g,f,d){i=i.source||i;g=new RegExp("([{;\\s])"+i+"\\s*:\\s*"+g+"[^;}]*");var c=this.recalcs.length;if(typeof d=="string")d=i+":"+d;this.addFix(g,function(a){if(typeof d=="function")d=d(a);return(d?d:a)+";ie7-"+a.slice(1)+";ie7_recalc"+c+":1"});this.recalcs.push(arguments);return c},apply:function(){this.getInlineCSS();new cg("screen");this.trash()},createStyleSheet:function(){p.getElementsByTagName("head")[0].appendChild(p.createElement("style"));this.styleSheet=I[I.length-1];this.styleSheet.ie7=true;this.styleSheet.owningElement.ie7=true;this.styleSheet.cssText=U},getInlineCSS:function(){var d=p.getElementsByTagName("style"),c;for(var a=d.length-1;c=d[a];a--){if(!c.disabled&&!c.ie7){c._7=c.innerHTML}}},getText:function(d,c){try{var a=d.cssText}catch(e){a=""}if(V)a=cB(d.href,c)||a;return a},recalc:function(){this.screen.recalc();var q=/ie7_recalc\d+/g,n=U.match(/[{,]/g).length,o=this.styleSheet.rules,k,l,m,j,i,g,f,d,c;for(g=n;k=o[g];g++){var a=k.style.cssText;if(l=a.match(q)){j=J(k.selectorText);if(j.length)for(f=0;f<l.length;f++){c=l[f];m=h.CSS.recalcs[c.slice(10)][2];for(d=0;(i=j[d]);d++){if(i.currentStyle[c])m(i,a)}}}}},refresh:function(){this.styleSheet.cssText=U+this.screen+this.print},trash:function(){for(var c=0;c<I.length;c++){if(!I[c].ie7){try{var a=I[c].cssText}catch(e){a=""}if(a)I[c].cssText=""}}}}));var cg=F.extend({constructor:function(a){this.media=a;this.load();h.CSS[a]=this;h.CSS.refresh()},createRule:function(d,c){var a;if(R&&(a=d.match(R.MATCH))){return new R(a[1],a[2],c)}else if(a=d.match(bf.MATCH)){if(!cV.test(a[0])||bf.COMPLEX.test(a[0])){return new bf(d,a[1],a[2],a[3],c)}}else{return new u(d,c)}return d+" {"+c+"}"},getText:function(){var v=/@media\s+([^{]+?)\s*\{([^@]+\})\s*\}/gi,Z=/@import[^;\n]+/gi,S=/@import\s+url\s*\(\s*["']?|["']?\s*\)\s*/gi,ba=/(url\s*\(\s*['"]?)([\w\.]+[^:\)]*['"]?\))/gi,K=this,L={};function z(k,l,m,j){var i="";if(!j){m=q(k.media);j=0}if(m==="none"){k.disabled=true;return""}if(m==="all"||m===K.media){try{var g=!!k.cssText}catch(exe){}if(j<3&&g){var f=k.cssText.match(Z);for(var d=0,c;d<k.imports.length;d++){var c=k.imports[d];var a=k._2||k.href;c._2=f[d].replace(S,"");i+=z(c,by(a,l),m,j+1)}}i+=cQ(k.href?n(k,l):k.owningElement._7);i=A(i,K.media)}return i};for(var w=0;w<I.length;w++){var r=I[w];if(!r.disabled&&!r.ie7)this.cssText+=z(r)}function A(c,a){s.value=a;return c.replace(v,s)};function s(d,c,a){c=q(c);switch(c){case"screen":case"print":if(c!==s.value)return"";case"all":return a}return""};function q(d){if(!d)return"all";var c=d.toLowerCase().split(/\s*,\s*/);d="none";for(var a=0;a<c.length;a++){if(c[a]==="all")return"all";if(c[a]==="screen"){if(d==="print")return"all";d="screen"}else if(c[a]==="print"){if(d==="screen")return"all";d="print"}}return d};function n(f,d){var c=f._2||f.href,a=bk(c,d);if(L[a])return"";L[a]=f.disabled?"":o(h.CSS.getText(f,d),by(c,d));return L[a]};function o(c,a){return c.replace(ba,"$1"+a.slice(0,a.lastIndexOf("/")+1)+"$2")}},load:function(){this.cssText="";this.getText();this.parse();if(bF.length){this.cssText=da(this.cssText)}this.cssText=bd(this.cssText);bl={}},parse:function(){var j=h.CSS.parser.parse(this.cssText),o="";this.cssText=j.replace(/@charset[^;]+;|@font\-face[^\}]+\}/g,function(a){o+=a+"\n";return""});this.declarations=bd(o);var k=h.CSS.rules.length,l=[],m;while((m=cY.exec(this.cssText))){var j=m[2];if(j){var i=t<7&&j.indexOf("AlphaImageLoader")!==-1;var g=m[1].match(cZ),f;for(var d=0;f=g[d];d++){f=bZ(f);var c=h.CSS.UNKNOWN.test(f);g[d]=c?this.createRule(f,j):f+"{"+j+"}";if(i)g[d]+=this.createRule(f+">*","position:relative")}l.push(g.join("\n"))}}this.cssText=l.join("\n");this.rules=h.CSS.rules.slice(k)},recalc:function(){var c,a;for(a=0;(c=this.rules[a]);a++)c.recalc()},toString:function(){return this.declarations+"@media "+this.media+"{"+this.cssText+"}"}}),R,u=h.Rule=F.extend({constructor:function(d,c){this.id=h.CSS.rules.length;this.className=u.PREFIX+this.id;var a=d.match(cW);this.selector=(a?a[1]:d)||"*";this.selectorText=this.parse(this.selector)+(a?a[2]:"");this.cssText=c;this.MATCH=new RegExp("\\s"+this.className+"(\\s|$)","g");h.CSS.rules.push(this);this.init()},init:bj,add:function(a){a.className+=" "+this.className},recalc:function(){var c=J(this.selector);for(var a=0;a<c.length;a++)this.add(c[a])},parse:function(g){var f=g.replace(u.CHILD," ").replace(u.COMPLEX,"");if(t<7)f=f.replace(u.MULTI,"");var d=bo(f,u.TAGS).length-bo(g,u.TAGS).length,c=bo(f,u.CLASSES).length-bo(g,u.CLASSES).length+1;while(c>0&&u.CLASS.test(f)){f=f.replace(u.CLASS,"");c--}while(d>0&&u.TAG.test(f)){f=f.replace(u.TAG,"$1*");d--}f+="."+this.className;c=Math.min(c,2);d=Math.min(d,2);var a=-10*c-d;if(a>0){f=f+","+u.MAP[a]+" "+f}return f},remove:function(a){a.className=a.className.replace(this.MATCH,"$1")},toString:function(){return H("%1 {%2}",this.selectorText,this.cssText)}},{CHILD:/>/g,CLASS:/\.[\w-]+/,CLASSES:/[.:\[]/g,MULTI:/(\.[\w-]+)+/g,PREFIX:"ie7_class",TAG:/^\w+|([\s>+~])\w+/,TAGS:/^\w|[\s>+~]\w/g,MAP:{"1":"html","2":"html body","10":".ie7_html","11":"html.ie7_html","12":"html.ie7_html body","20":".ie7_html .ie7_body","21":"html.ie7_html .ie7_body","22":"html.ie7_html body.ie7_body"}}),bf=u.extend({constructor:function(g,f,d,c,a){this.negated=d.indexOf("not")===0;if(this.negated)d=d.slice(5,-1);this.attach=f||"*";this.dynamicPseudoClass=h.CSS.dynamicPseudoClasses[d];this.target=c;this.base(g,a)},recalc:function(){var f=J(this.attach),d;for(var c=0;d=f[c];c++){var a=this.target?J(this.target,d):[d];if(a.length)this.dynamicPseudoClass.apply(d,a,this)}}}),M=F.extend({constructor:function(c,a){this.name=c;this.apply=a;this.instances={};h.CSS.dynamicPseudoClasses[c]=this},register:function(g,f){var d=g[2];if(!f&&d.negated){this.unregister(g,true)}else{g.id=d.id+g[0].uniqueID;if(!this.instances[g.id]){var c=g[1],a;for(a=0;a<c.length;a++)d.add(c[a]);this.instances[g.id]=g}}},unregister:function(g,f){var d=g[2];if(!f&&d.negated){this.register(g,true)}else{if(this.instances[g.id]){var c=g[1],a;for(a=0;a<c.length;a++)d.remove(c[a]);delete this.instances[g.id]}}}}),br=new M("hover",function(c){var a=arguments;h.CSS.addEventHandler(c,"onmouseenter",function(){br.register(a)});h.CSS.addEventHandler(c,"onmouseleave",function(){br.unregister(a)})});y(p,"onmouseup",function(){var c=br.instances;for(var a in c)if(!c[a][0].contains(event.srcElement))br.unregister(c[a])});var co={"=":"%1==='%2'","~=":"(' '+%1+' ').indexOf(' %2 ')!==-1","|=":"%1==='%2'||%1.indexOf('%2-')===0","^=":"%1.indexOf('%2')===0","$=":"%1.slice(-'%2'.length)==='%2'","*=":"%1.indexOf('%2')!==-1"};co[""]="%1!=null";var T={"<#attr>":function(g,f,d,c){var a="IE7._0(e,'"+f+"')";c=bp(c);if(d.length>1){if(!c||d==="~="&&cX.test(c)){return"false&&"}a="("+a+"||'')"}return"("+H(co[d],a,c)+")&&"},"<#id>":cn+"==='$1'&&","<#class>":"e.className&&(' '+e.className+' ').indexOf(' $1 ')!==-1&&",":first-child":"!"+ck+"&&",":link":"e.currentStyle['ie7-link']=='link'&&",":visited":"e.currentStyle['ie7-link']=='visited'&&"};h.HTML=new(ci.extend({fixed:{},init:bj,addFix:function(){this.fixes.push(arguments)},apply:function(){for(var f=0;f<this.fixes.length;f++){var d=J(this.fixes[f][0]);var c=this.fixes[f][1];for(var a=0;a<d.length;a++)c(d[a])}},addRecalc:function(){this.recalcs.push(arguments)},recalc:function(){for(var j=0;j<this.recalcs.length;j++){var i=J(this.recalcs[j][0]);var g=this.recalcs[j][1],f;var d=Math.pow(2,j);for(var c=0;(f=i[c]);c++){var a=f.uniqueID;if((this.fixed[a]&d)===0){f=g(f)||f;this.fixed[a]|=d}}}}}));if(t<7){p.createElement("abbr");h.HTML.addRecalc("label",function(c){if(!c.htmlFor){var a=J("input,textarea",c,true);if(a){y(c,"onclick",function(){a.click()})}}})}var bg="[.\\d]";(function(){var v=h.Layout={};U+="*{boxSizing:content-box}";v.boxSizing=function(a){if(!a.currentStyle.hasLayout){a.style.height="0cm";if(a.currentStyle.verticalAlign==="auto")a.runtimeStyle.verticalAlign="top";Z(a)}};function Z(a){if(a!=x&&a.currentStyle.position!=="absolute"){S(a,"marginTop");S(a,"marginBottom")}};function S(g,f){if(!g.runtimeStyle[f]){var d=g.parentElement;var c=f==="marginTop";if(d&&d.currentStyle.hasLayout&&!h._1(g,c?"previous":"next"))return;var a=g[c?"firstChild":"lastChild"];if(a&&a.nodeName<"@")a=h._1(a,c?"next":"previous");if(a&&a.currentStyle.styleFloat==="none"&&a.currentStyle.hasLayout){S(a,f);margin=ba(g,g.currentStyle[f]);childMargin=ba(a,a.currentStyle[f]);if(margin<0||childMargin<0){g.runtimeStyle[f]=margin+childMargin}else{g.runtimeStyle[f]=Math.max(childMargin,margin)}a.runtimeStyle[f]="0px"}}};function ba(c,a){return a==="auto"?0:C(c,a)};var K=/^[.\d][\w]*$/,L=/^(auto|0cm)$/,z={};v.borderBox=function(a){z.Width(a);z.Height(a)};var w=function(r){z.Width=function(a){if(!X.test(a.currentStyle.width))A(a);if(r)Z(a)};function A(c,a){if(!c.runtimeStyle.fixedWidth){if(!a)a=c.currentStyle.width;c.runtimeStyle.fixedWidth=K.test(a)?Math.max(0,n(c,a))+"px":a;Y(c,"width",c.runtimeStyle.fixedWidth)}};function s(c){if(!bq(c)){var a=c.offsetParent;while(a&&!a.currentStyle.hasLayout)a=a.offsetParent}return(a||x).clientWidth};function q(c,a){if(X.test(a))return parseInt(parseFloat(a)/100*s(c));return C(c,a)};var n=function(f,d){var c=f.currentStyle["ie7-box-sizing"]==="border-box",a=0;if(E&&!c)a+=o(f)+k(f,"padding");else if(!E&&c)a-=o(f)+k(f,"padding");return q(f,d)+a};function o(a){return a.offsetWidth-a.clientWidth};function k(c,a){return q(c,c.currentStyle[a+"Left"])+q(c,c.currentStyle[a+"Right"])};U+="*{minWidth:none;maxWidth:none;min-width:none;max-width:none}";v.minWidth=function(a){if(a.currentStyle["min-width"]!=null){a.style.minWidth=a.currentStyle["min-width"]}if(be(arguments.callee,a,a.currentStyle.minWidth!=="none")){v.boxSizing(a);A(a);l(a)}};eval("IE7.Layout.maxWidth="+String(v.minWidth).replace(/min/g,"max"));function l(d){if(d==p.body){var c=d.clientWidth}else{var a=d.getBoundingClientRect();c=a.right-a.left}if(d.currentStyle.minWidth!=="none"&&c<n(d,d.currentStyle.minWidth)){d.runtimeStyle.width=d.currentStyle.minWidth}else if(d.currentStyle.maxWidth!=="none"&&c>=n(d,d.currentStyle.maxWidth)){d.runtimeStyle.width=d.currentStyle.maxWidth}else{d.runtimeStyle.width=d.runtimeStyle.fixedWidth}};function m(a){if(be(m,a,/^(fixed|absolute)$/.test(a.currentStyle.position)&&bD(a,"left")!=="auto"&&bD(a,"right")!=="auto"&&L.test(bD(a,"width")))){j(a);v.boxSizing(a)}};v.fixRight=m;function j(d){var c=q(d,d.runtimeStyle._3||d.currentStyle.left),a=s(d)-q(d,d.currentStyle.right)-c-k(d,"margin");if(parseInt(d.runtimeStyle.width)===a)return;d.runtimeStyle.width="";if(bq(d)||r||d.offsetWidth<a){if(!E)a-=o(d)+k(d,"padding");if(a<0)a=0;d.runtimeStyle.fixedWidth=a;Y(d,"width",a)}};var i=0;bA(function(){if(!x)return;var g,f=(i<x.clientWidth);i=x.clientWidth;var d=v.minWidth.elements;for(g in d){var c=d[g];var a=(parseInt(c.runtimeStyle.width)===n(c,c.currentStyle.minWidth));if(f&&a)c.runtimeStyle.width="";if(f==a)l(c)}var d=v.maxWidth.elements;for(g in d){var c=d[g];var a=(parseInt(c.runtimeStyle.width)===n(c,c.currentStyle.maxWidth));if(!f&&a)c.runtimeStyle.width="";if(f!==a)l(c)}for(g in m.elements)j(m.elements[g])});if(E){h.CSS.addRecalc("width",bg,z.Width)}if(t<7){h.CSS.addRecalc("max-width",bg,v.maxWidth);h.CSS.addRecalc("right",bg,m)}else if(t==7){if(r)h.CSS.addRecalc("height","[\\d.]+%",function(element){element.runtimeStyle.pixelHeight=parseInt(s(element)*element.currentStyle["ie7-height"].slice(0,-1)/100)})}};eval("var _8="+ce(w));w();_8(true);if(t<7){h.CSS.addRecalc("min-width",bg,v.minWidth);h.CSS.addFix(/\bmin-height\s*/,"height")}})();var bG=bk("blank.gif",cA),bH="DXImageTransform.Microsoft.AlphaImageLoader",cp="progid:"+bH+"(src='%1',sizingMethod='%2')",bh,bi=[];function cq(c){if(bh.test(c.src)){var a=new Image(c.width,c.height);a.onload=function(){c.width=a.width;c.height=a.height;a=null};a.src=c.src;c.pngSrc=c.src;bs(c)}};if(t<7){h.CSS.addFix(/background(-image)?\s*:\s*([^};]*)?url\(([^\)]+)\)([^;}]*)?/,function(g,f,d,c,a){c=bp(c);return bh.test(c)?"filter:"+H(cp,c,a.indexOf("no-repeat")===-1?"scale":"crop")+";zoom:1;background"+(f||"")+":"+(d||"")+"none"+(a||""):g});h.CSS.addRecalc(/list\-style(\-image)?/,"[^};]*url",function(f){var d=f.currentStyle.listStyleImage.slice(5,-2);if(bh.test(d)){if(f.nodeName==="LI"){cr(f,d)}else if(f.nodeName==="UL"){for(var c=0,a;a=f.childNodes[c];c++){if(a.nodeName==="LI")cr(a,d)}}}});function cr(i,g){var f=i.runtimeStyle,d=i.offsetHeight,c=new Image;c.onload=function(){var a=i.currentStyle.paddingLeft;a=a==="0px"?0:C(i,a);f.paddingLeft=(a+this.width)+"px";f.marginLeft=-this.width+"px";f.listStyleType="none";f.listStyleImage="none";f.paddingTop=Math.max(d-i.offsetHeight,0)+"px";bs(i,"crop",g);i.style.zoom="100%"};c.src=g};h.HTML.addRecalc("img,input",function(a){if(a.nodeName==="INPUT"&&a.type!=="image")return;cq(a);y(a,"onpropertychange",function(){if(!bI&&event.propertyName==="src"&&a.src.indexOf(bG)===-1)cq(a)})});var bI=false;y(N,"onbeforeprint",function(){bI=true;for(var a=0;a<bi.length;a++)db(bi[a])});y(N,"onafterprint",function(){for(var a=0;a<bi.length;a++)bs(bi[a]);bI=false})}function bs(f,d,c){var a=f.filters[bH];if(a){a.src=c||f.src;a.enabled=true}else{f.runtimeStyle.filter=H(cp,c||f.src,d||"scale");bi.push(f)}f.src=bG};function db(a){a.src=a.pngSrc;a.filters[bH].enabled=false};(function(){if(t>=7)return;h.CSS.addRecalc("position","fixed",o,"absolute");h.CSS.addRecalc("background(-attachment)?","[^};]*fixed",q);var z=E?"body":"documentElement";function w(){if(B.currentStyle.backgroundAttachment!=="fixed"){if(B.currentStyle.backgroundImage==="none"){B.runtimeStyle.backgroundRepeat="no-repeat";B.runtimeStyle.backgroundImage="url("+bG+")"}B.runtimeStyle.backgroundAttachment="fixed"}w=bj};var r=cj("img");function A(a){return a?bq(a)||A(a.parentElement):false};function s(d,c,a){setTimeout("document.all."+d.uniqueID+".runtimeStyle.setExpression('"+c+"','"+a+"')",0)};function q(a){if(be(q,a,a.currentStyle.backgroundAttachment==="fixed"&&!a.contains(B))){w();j.bgLeft(a);j.bgTop(a);n(a)}};function n(c){r.src=c.currentStyle.backgroundImage.slice(5,-2);var a=c.canHaveChildren?c:c.parentElement;a.appendChild(r);j.setOffsetLeft(c);j.setOffsetTop(c);a.removeChild(r)};function o(a){if(be(o,a,bq(a))){Y(a,"position","absolute");Y(a,"left",a.currentStyle.left);Y(a,"top",a.currentStyle.top);w();h.Layout.fixRight(a);k(a)}};function k(d,c){p.body.getBoundingClientRect();j.positionTop(d,c);j.positionLeft(d,c,true);if(!d.runtimeStyle.autoLeft&&d.currentStyle.marginLeft==="auto"&&d.currentStyle.right!=="auto"){var a=x.clientWidth-j.getPixelWidth(d,d.currentStyle.right)-j.getPixelWidth(d,d.runtimeStyle._3)-d.clientWidth;if(d.currentStyle.marginRight==="auto")a=parseInt(a/2);if(A(d.offsetParent))d.runtimeStyle.pixelLeft+=a;else d.runtimeStyle.shiftLeft=a}if(!d.runtimeStyle.fixedWidth)j.clipWidth(d);if(!d.runtimeStyle.fixedHeight)j.clipHeight(d)};function l(){var c=q.elements;for(var a in c)n(c[a]);c=o.elements;for(a in c){k(c[a],true);k(c[a],true)}m=0};var m;bA(function(){if(!m)m=setTimeout(l,100)});var j={},i=function(g){g.bgLeft=function(a){a.style.backgroundPositionX=a.currentStyle.backgroundPositionX;if(!A(a)){s(a,"backgroundPositionX","(parseInt(runtimeStyle.offsetLeft)+document."+z+".scrollLeft)||0")}};g.setOffsetLeft=function(c){var a=A(c)?"backgroundPositionX":"offsetLeft";c.runtimeStyle[a]=g.getOffsetLeft(c,c.style.backgroundPositionX)-c.getBoundingClientRect().left-c.clientLeft+2};g.getOffsetLeft=function(c,a){switch(a){case"left":case"top":return 0;case"right":case"bottom":return x.clientWidth-r.offsetWidth;case"center":return(x.clientWidth-r.offsetWidth)/2;default:if(X.test(a)){return parseInt((x.clientWidth-r.offsetWidth)*parseFloat(a)/100)}r.style.left=a;return r.offsetLeft}};g.clipWidth=function(f){var d=f.runtimeStyle.fixWidth;f.runtimeStyle.borderRightWidth="";f.runtimeStyle.width=d?g.getPixelWidth(f,d)+"px":"";if(f.currentStyle.width!=="auto"){var c=f.getBoundingClientRect();var a=f.offsetWidth-x.clientWidth+c.left-2;if(a>=0){f.runtimeStyle.borderRightWidth="0px";a=Math.max(C(f,f.currentStyle.width)-a,0);Y(f,"width",a);return a}}};g.positionLeft=function(c,a){if(!a&&X.test(c.currentStyle.width)){c.runtimeStyle.fixWidth=c.currentStyle.width}if(c.runtimeStyle.fixWidth){c.runtimeStyle.width=g.getPixelWidth(c,c.runtimeStyle.fixWidth)}c.runtimeStyle.shiftLeft=0;c.runtimeStyle._3=c.currentStyle.left;c.runtimeStyle.autoLeft=c.currentStyle.right!=="auto"&&c.currentStyle.left==="auto";c.runtimeStyle.left="";c.runtimeStyle.screenLeft=g.getScreenLeft(c);c.runtimeStyle.pixelLeft=c.runtimeStyle.screenLeft;if(!a&&!A(c.offsetParent)){s(c,"pixelLeft","runtimeStyle.screenLeft+runtimeStyle.shiftLeft+document."+z+".scrollLeft")}};g.getScreenLeft=function(d){var c=d.offsetLeft,a=1;if(d.runtimeStyle.autoLeft){c=x.clientWidth-d.offsetWidth-g.getPixelWidth(d,d.currentStyle.right)}if(d.currentStyle.marginLeft!=="auto"){c-=g.getPixelWidth(d,d.currentStyle.marginLeft)}while(d=d.offsetParent){if(d.currentStyle.position!=="static")a=-1;c+=d.offsetLeft*a}return c};g.getPixelWidth=function(c,a){return X.test(a)?parseInt(parseFloat(a)/100*x.clientWidth):C(c,a)}};eval("var _9="+ce(i));i(j);_9(j)})();if(t<7){var bJ={backgroundColor:"transparent",backgroundImage:"none",backgroundPositionX:null,backgroundPositionY:null,backgroundRepeat:null,borderTopWidth:0,borderRightWidth:0,borderBottomWidth:0,borderLeftStyle:"none",borderTopStyle:"none",borderRightStyle:"none",borderBottomStyle:"none",borderLeftWidth:0,borderLeftColor:"#000",borderTopColor:"#000",borderRightColor:"#000",borderBottomColor:"#000",height:null,marginTop:0,marginBottom:0,marginRight:0,marginLeft:0,width:"100%"};h.CSS.addRecalc("overflow","visible",function(d){if(d.currentStyle.position==="absolute")return;if(d.parentNode.ie7_wrapped)return;if(h.Layout&&d.currentStyle["max-height"]!=="auto"){h.Layout.maxHeight(d)}if(d.currentStyle.marginLeft==="auto")d.style.marginLeft=0;if(d.currentStyle.marginRight==="auto")d.style.marginRight=0;var c=p.createElement(cy);c.ie7_wrapped=d;for(var a in bJ){c.style[a]=d.currentStyle[a];if(bJ[a]!=null){d.runtimeStyle[a]=bJ[a]}}c.style.display="block";c.style.position="relative";d.runtimeStyle.position="absolute";d.parentNode.insertBefore(c,d);c.appendChild(d)})}function dc(){var s="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");for(var q=0;q<s.length;q++){s[s[q]]=s[q-1]||"0.67em"}h.CSS.addFix(/(font(-size)?\s*:\s*)([\w.-]+)/,function(f,d,c,a){return d+(s[a]||a)});var n=/^\-/,o=/(em|ex)$/i,k=/em$/i,l=/ex$/i;C=function(d,c){if(ch.test(c))return parseInt(c)||0;var a=n.test(c)?-1:1;if(o.test(c))a*=j(d);m.style.width=a<0?c.slice(1):c;B.appendChild(m);c=a*m.offsetWidth;m.removeNode();return parseInt(c)};var m=cj();function j(d){var c=1;m.style.fontFamily=d.currentStyle.fontFamily;m.style.lineHeight=d.currentStyle.lineHeight;while(d!=B){var a=d.currentStyle["ie7-font-size"];if(a){if(k.test(a))c*=parseFloat(a);else if(X.test(a))c*=(parseFloat(a)/100);else if(l.test(a))c*=(parseFloat(a)/2);else{m.style.fontSize=a;return 1}}d=d.parentElement}return c};h.CSS.addFix(/cursor\s*:\s*pointer/,"cursor:hand");h.CSS.addFix(/display\s*:\s*list-item/,"display:block");function i(f){var d=f.parentElement,c=d.offsetWidth-f.offsetWidth-g(d),a=(f.currentStyle["ie7-margin"]&&f.currentStyle.marginRight==="auto")||f.currentStyle["ie7-margin-right"]==="auto";switch(d.currentStyle.textAlign){case"right":c=a?parseInt(c/2):0;f.runtimeStyle.marginRight=c+"px";break;case"center":if(a)c=0;default:if(a)c/=2;f.runtimeStyle.marginLeft=parseInt(c)+"px"}};function g(a){return C(a,a.currentStyle.paddingLeft)+C(a,a.currentStyle.paddingRight)};h.CSS.addRecalc("margin(-left|-right)?","[^};]*auto",function(a){if(be(i,a,a.parentElement&&a.currentStyle.display==="block"&&a.currentStyle.marginLeft==="auto"&&a.currentStyle.position!=="absolute")){i(a)}});bA(function(){for(var c in i.elements){var a=i.elements[c];a.runtimeStyle.marginLeft=a.runtimeStyle.marginRight="";i(a)}})};var bK="\\([^)]+\\)";cc.add(/::(before|after)/,":$1");if(t<8){if(h.CSS.pseudoClasses)h.CSS.pseudoClasses+="|";h.CSS.pseudoClasses+="before|after|lang"+bK;function da(a){return a.replace(new RegExp("([{;\\s])("+bF.join("|")+")\\s*:\\s*([^;}]+)","g"),"$1$2:$3;ie7-$2:$3")};var dd=/[\w-]+\s*:\s*inherit/g;var de=/ie7\-|\s*:\s*inherit/g;var df=/\-([a-z])/g;function dg(c,a){return a.toUpperCase()};h.CSS.addRecalc("[\\w-]+","inherit",function(g,f){if(g.parentElement){var d=f.match(dd);for(var c=0;c<d.length;c++){var a=d[c].replace(de,"");if(g.currentStyle["ie7-"+a]==="inherit"){a=a.replace(df,dg);g.runtimeStyle[a]=g.parentElement.currentStyle[a]}}}},function(a){bF.push(bY(a.slice(1).split(":")[0]));return a});var bt=new M("focus",function(c){var a=arguments;h.CSS.addEventHandler(c,"onfocus",function(){bt.unregister(a);bt.register(a)});h.CSS.addEventHandler(c,"onblur",function(){bt.unregister(a)});if(c==p.activeElement){bt.register(a)}});var bL=new M("active",function(c){var a=arguments;h.CSS.addEventHandler(c,"onmousedown",function(){bL.register(a)})});y(p,"onmouseup",function(){var c=bL.instances;for(var a in c)bL.unregister(c[a])});var dh=/^url\s*\(\s*([^)]*)\)$/;var di={before0:"beforeBegin",before1:"afterBegin",after0:"afterEnd",after1:"beforeEnd"};var R=h.PseudoElement=u.extend({constructor:function(j,i,g){this.position=i;var f=g.match(R.CONTENT),d,c;if(f){f=f[1];d=f.split(/\s+/);for(var a=0;(c=d[a]);a++){d[a]=/^attr/.test(c)?{attr:c.slice(5,-1)}:c.charAt(0)==="'"?bp(c):bd(c)}f=d}this.content=f;this.base(j,bd(g))},init:function(){this.match=J(this.selector);for(var c=0;c<this.match.length;c++){var a=this.match[c].runtimeStyle;if(!a[this.position])a[this.position]={cssText:""};a[this.position].cssText+=";"+this.cssText;if(this.content!=null)a[this.position].content=this.content}},create:function(n){var o=n.runtimeStyle[this.position];if(o){var k=[].concat(o.content||"");for(var l=0;l<k.length;l++){if(typeof k[l]=="object"){k[l]=n.getAttribute(k[l].attr)}}k=k.join("");var m=k.match(dh);var j="overflow:hidden;"+o.cssText.replace(/'/g,'"');var i=di[this.position+Number(n.canHaveChildren)];var g='ie7_pseudo'+R.count++;n.insertAdjacentHTML(i,H(R.ANON,this.className,g,j,m?"":k));if(m){var f=bp(m[1]);var d=p.getElementById(g);d.src=f;bs(d,"crop");var c=n.currentStyle.styleFloat!=="none";if(d.currentStyle.display==="inline"||c){if(t<7&&c&&n.canHaveChildren){n.runtimeStyle.display="inline";n.runtimeStyle.position="relative";d.runtimeStyle.position="absolute"}d.style.display="inline-block";if(n.currentStyle.styleFloat!=="none"){d.style.pixelWidth=n.offsetWidth}var a=new Image;a.onload=function(){d.style.pixelWidth=this.width;d.style.pixelHeight=Math.max(this.height,d.offsetHeight)};a.src=f}}n.runtimeStyle[this.position]=null}},recalc:function(){if(this.content==null)return;for(var a=0;a<this.match.length;a++){this.create(this.match[a])}},toString:function(){return"."+this.className+"{display:inline}"}},{CONTENT:/content\s*:\s*([^;]*)(;|$)/,ANON:"<ie7:! class='ie7_anon %1' id=%2 style='%3'>%4</ie7:!>",MATCH:/(.*):(before|after).*/,count:0});h._getLang=function(c){var a="";while(c&&c.nodeType===1){a=c.lang||c.getAttribute("lang")||"";if(a)break;c=c.parentNode}return a};T=O(T,{":lang\\(([^)]+)\\)":"((ii=IE7._getLang(e))==='$1'||ii.indexOf('$1-')===0)&&"})}var dj=/^(submit|reset|button)$/;h.HTML.addRecalc("button,input",function(c){if(c.nodeName==="BUTTON"){var a=c.outerHTML.match(/ value="([^"]*)"/i);c.runtimeStyle.value=a?a[1]:""}if(c.type==="submit"){y(c,"onclick",function(){c.runtimeStyle.clicked=true;setTimeout("document.all."+c.uniqueID+".runtimeStyle.clicked=false",1)})}});h.HTML.addRecalc("form",function(d){y(d,"onsubmit",function(){for(var c,a=0;c=d[a];a++){if(dj.test(c.type)&&!c.disabled&&!c.runtimeStyle.clicked){c.disabled=true;setTimeout("document.all."+c.uniqueID+".disabled=false",1)}else if(c.nodeName==="BUTTON"&&c.type==="submit"){setTimeout("document.all."+c.uniqueID+".value='"+c.value+"'",1);c.value=c.runtimeStyle.value}}})});h.HTML.addRecalc("img",function(a){if(a.alt&&!a.title)a.title=""});if(t<8){h.CSS.addRecalc("border-spacing",bg,function(a){if(a.currentStyle.borderCollapse!=="collapse"){a.cellSpacing=C(a,a.currentStyle["ie7-border-spacing"].split(" ")[0])}});h.CSS.addRecalc("box-sizing","content-box",h.Layout.boxSizing);h.CSS.addRecalc("box-sizing","border-box",h.Layout.borderBox)}if(t<8){var dk=/^image/i;h.HTML.addRecalc("object",function(a){if(dk.test(a.type)){a.body.style.cssText="margin:0;padding:0;border:none;overflow:hidden";return a}})}var bM="!IE7._a(e,'next')&&",cs=bM.replace("next","previous");if(h.CSS.pseudoClasses)h.CSS.pseudoClasses+="|";h.CSS.pseudoClasses+="(?:first|last|only)\\-(?:child|of\\-type)|empty|root|target|"+("not|nth\\-child|nth\\-last\\-child|nth\\-of\\-type|nth\\-last\\-of\\-type".split("|").join(bK+"|")+bK);var bN=new M("checked",function(c){if(typeof c.checked!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="checked"){if(c.checked===true)bN.register(a);else bN.unregister(a)}});if(c.checked===true)bN.register(a)}),bO=new M("enabled",function(c){if(typeof c.disabled!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="disabled"){if(c.disabled===false)bO.register(a);else bO.unregister(a)}});if(c.disabled===false)bO.register(a)}),bP=new M("disabled",function(c){if(typeof c.disabled!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="disabled"){if(c.disabled===true)bP.register(a);else bP.unregister(a)}});if(c.disabled===true)bP.register(a)}),bQ=new M("indeterminate",function(c){if(typeof c.indeterminate!=="boolean")return;var a=arguments;h.CSS.addEventHandler(c,"onpropertychange",function(){if(event.propertyName==="indeterminate"){if(c.indeterminate===true)bQ.register(a);else bQ.unregister(a)}});h.CSS.addEventHandler(c,"onclick",function(){bQ.unregister(a)})}),bR=new M("target",function(c){var a=arguments;if(!c.tabIndex)c.tabIndex=0;h.CSS.addEventHandler(p,"onpropertychange",function(){if(event.propertyName==="activeElement"){if(c.id&&c.id===location.hash.slice(1))bR.register(a);else bR.unregister(a)}});if(c.id&&c.id===location.hash.slice(1))bR.register(a)}),ct=1,bu={_4:1};h._b=function(l,m,j){var i=l.parentNode;if(!i||i.nodeType!==1)return NaN;var g=j?l.nodeName:"";if(g==="TR"&&l.sectionRowIndex>=0){var c=l.sectionRowIndex;return m?l.parentNode.rows.length-c+1:c}if((g==="TD"||g==="TH")&&l.cellIndex>=0){c=l.cellIndex;return m?l.parentNode.cells.length-c+1:c}if(bu._4!==ct){bu={_4:ct}}var f=(i.uniqueID)+"-"+g,d=bu[f];if(!d){d={};var c=0,a=i.firstChild;while(a){if(j?a.nodeName===g:a.nodeName>"@"){d[a.uniqueID]=++c}a=a.nextSibling}d.length=c;bu[f]=d}c=d[l.uniqueID];return m?d.length-c+1:c};h._c=function(a){a=a.firstChild;while(a){if(a.nodeType===3||a.nodeName>"@")return false;a=a.nextSibling}return true};h._a=function(d,c){var a=d.nodeName;c+="Sibling";do{d=d[c];if(d&&d.nodeName===a)break}while(d);return d};var dl={"+":1,"-":-1},dm=/ /g;T=O(O({":nth(-last)?-(?:child|(of-type))\\((<#nth_arg>)\\)(<#filter>)?":function(m,j,i,g,f){g=g.replace(dm,"");var d="IE7._b(e,"+!!j+","+!!i+")";if(g==="even")g="2n";else if(g==="odd")g="2n+1";else if(!isNaN(g))g="0n"+~~g;g=g.split("n");var c=~~(dl[g[0]]||g[0]||1),b=~~g[1];if(c===0){var a=d+"==="+b}else{a="((ii="+d+")-("+b+"))%"+c+"===0&&ii"+(c<0?"<":">")+"="+b}return this.parse(f)+a+"&&"},"<#negation>":function(c,a){if(/:not/i.test(a))bv();if(/^[#.:\[]/.test(a)){a="*"+a}return"!("+D.parse(a).slice(3,-2)+")&&"}},T),{":checked":"e.checked===true&&",":disabled":"e.disabled===true&&",":enabled":"e.disabled===false&&",":last-child":"!"+bE+"&&",":only-child":"!"+ck+"&&!"+bE+"&&",":first-of-type":cs,":last-of-type":bM,":only-of-type":cs+bM,":empty":"IE7._c(e)&&",":root":"e==R&&",":target":"H&&"+cn+"===H&&"});var dn="article,aside,audio,canvas,details,figcaption,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,summary,time,video".split(",");for(var cu=0,cv;cv=dn[cu];cu++)p.createElement(cv);U+="datalist{display:none}details{padding-left:40px;display:block;margin:1em 0}meter,progress{vertical-align:-0.2em;width:5em;height:1em;display:inline-block}progress{width:10em;}article,aside,figcaption,footer,header,hgroup,summary,section,nav{display:block;margin:1em 0}figure{margin:1em 40px;display:block}mark{background:yellow}";h.CSS.addFix(/\bopacity\s*:\s*([\d.]+)/,function(c,a){return"zoom:1;filter:Alpha(opacity="+((a*100)||1)+")"});var D,J=(function(){var o0=/^[>+~]/,bw=false;function dp(f,d,c){f=bZ(f);if(!d)d=p;var a=d;bw=o0.test(f);if(bw){d=d.parentNode;f="*"+f}try{return n.create(f,bw)(d,c?null:[],a)}catch(ex){return c?null:[]}};var dq=/^(\\.|[' >+~#.\[\]:*(),\w-\^|$=]|[^\x00-\xa0])+$/,dE=/^(href|src)$/,cw={"class":"className","for":"htmlFor"},dF=/\sie7_\w+/g,dr=/^(action|cite|codebase|data|dynsrc|href|longdesc|lowsrc|src|usemap|url)$/i;h._0=function(f,d){if(f.getAttributeNode){var c=f.getAttributeNode(d)}d=cw[d.toLowerCase()]||d;if(!c)c=f.attributes[d];var a=c&&c.specified;if(f[d]&&typeof f[d]=="boolean")return d.toLowerCase();if((a&&dr.test(d))||(!c&&E)||d==="value"||d==="type"){return f.getAttribute(d,2)}if(d==="style")return f.style.cssText.toLowerCase()||null;return a?String(c.nodeValue):null};var cx="colSpan,rowSpan,vAlign,dateTime,accessKey,tabIndex,encType,maxLength,readOnly,longDesc";O(cw,cO(cx.toLowerCase().split(","),cx.split(",")));h._1=function(c,a){a+="Sibling";do{c=c[a];if(c&&c.nodeName>"@")break}while(c);return c};var ds=/(^|[, >+~])([#.:\[])/g,dG=/\)\{/g,dt=/,/,dH=/^['"]/,du=/\\([\da-f]{2,2})/gi,dI=/last/i;h._d=function(f,d){var c=f.all[d]||null;if(!c||(c.nodeType&&h._0(c,"id")===d))return c;for(var a=0;a<c.length;a++){if(h._0(c[a],"id")===d)return c[a]}return null};var bb=G.extend({dictionary:new cM({ident:/\-?(\\.|[_a-z]|[^\x00-\xa0])(\\.|[\w-]|[^\x00-\xa0])*/,combinator:/[\s>+~]/,operator:/[\^~|$*]?=/,nth_arg:/[+-]?\d+|[+-]?\d*n(?:\s*[+-]\s*\d+)?|even|odd/,tag:/\*|<#ident>/,id:/#(<#ident>)/,'class':/\.(<#ident>)/,pseudo:/\:([\w-]+)(?:\(([^)]+)\))?/,attr:/\[(<#ident>)(?:(<#operator>)((?:\\.|[^\[\]#.:])+))?\]/,negation:/:not\((<#tag>|<#id>|<#class>|<#attr>|<#pseudo>)\)/,sequence:/(\\.|[~*]=|\+\d|\+?\d*n\s*\+\s*\d|[^\s>+~,\*])+/,filter:/[#.:\[]<#sequence>/,selector:/[^>+~](\\.|[^,])*?/,grammar:/^(<#selector>)((,<#selector>)*)$/}),ignoreCase:true}),dv=new bb({"\\\\.|[~*]\\s+=|\\+\\s+\\d":G.IGNORE,"\\[\\s+":"[","\\(\\s+":"(","\\s+\\)":")","\\s+\\]":"]","\\s*([,>+~]|<#operator>)\\s*":"$1","\\s+$":"","\\s+":" "});function dw(a){a=dv.parse(a.replace(du,"\\x$1")).replace(bz,"$1").replace(ds,"$1*$2");if(!dq.test(a))bv();return a};function dJ(a){return a.replace(cb,dx)};function dx(c,a){return W[a]};var dy=/\{/g,dz=/\\{/g;function bS(a){return Array((a.replace(dz,"").match(dy)||"").length+1).join("}")};T=new bb(T);var v=/:target/i,Z=/:root/i;function S(c){var a="";if(Z.test(c))a+=",R=d.documentElement";if(v.test(c))a+=",H=d.location;H=H&&H.hash.replace('#','')";if(a||c.indexOf("#")!==-1){a=",t=c.nodeType,d=t===9?c:c.ownerDocument||(c.document||c).parentWindow.document"+a}return"var ii"+a+";"};var ba={" ":";while(e!=s&&(e=e.parentNode)&&e.nodeType===1){",">":".parentElement;if(e){","+":";while((e=e.previousSibling)&&!("+cl+"))continue;if(e){","~":";while((e=e.previousSibling)){"+cm},K=/\be\b/g;D=new bb({"(?:(<#selector>)(<#combinator>))?(<#tag>)(<#filter>)?$":function(j,i,g,f,d){var c="";if(f!=="*"){var a=f.toUpperCase();c+="if(e.nodeName==='"+a+(a===f?"":"'||e.nodeName==='"+f)+"'){"}if(d){c+="if("+T.parse(d).slice(0,-2)+"){"}c=c.replace(K,"e"+this.index);if(g){c+="var e=e"+(this.index++)+ba[g];c=c.replace(K,"e"+this.index)}if(i){c+=this.parse(i)}return c}});var L="e0=IE7._d(d,'%1');if(e0){",z="var n=c.getElementsByTagName('%1');",w="if(r==null)return e0;r[k++]=e0;",r=1,A=new bb({"^((?:<#selector>)?(?:<#combinator>))(<#tag>)(<#filter>)?$":true}),s={},q=new bb({"^(<#tag>)#(<#ident>)(<#filter>)?( [^,]*)?$":function(j,i,g,f,d){var c=H(L,g),a="}";if(f){c+=D.parse(i+f);a=bS(c)}if(d){c+="s=c=e0;"+n.parse("*"+d)}else{c+=w}return c+a},"^([^#,]+)#(<#ident>)(<#filter>)?$":function(g,f,d,c){var a=H(L,d);if(f==="*"){a+=w}else{a+=D.parse(f+c)+w+"break"}return a+bS(a)},"^.*$":""}),n=new bb({"<#grammar>":function(k,l,m){if(!this.groups)this.groups=[];var j=A.exec(" "+l);if(!j)bv();this.groups.push(j.slice(1));if(m){return this.parse(m.replace(dt,""))}var i=this.groups,g=i[0][r];for(var c=1;j=i[c];c++){if(g!==j[r]){g="*";break}}var f="",d=w+"continue filtering;";for(var c=0;j=i[c];c++){D.index=0;if(g!=="*")j[r]="*";j=j.join("");if(j===" *"){f=d;break}else{j=D.parse(j);if(bw)j+="if(e"+D.index+"==s){";f+=j+d+bS(j)}}var a=g==="*";return(a?"var n=c.all;":H(z,g))+"filtering:while((e0=n[i++]))"+(a?cm.replace(K,"e0"):"{")+f+"}"},"^.*$":bv}),o=/\&\&(e\d+)\.nodeType===1(\)\{\s*if\(\1\.nodeName=)/g;n.create=function(d){if(!s[d]){d=dw(d);this.groups=null;D.index=0;var c=this.parse(d);this.groups=null;D.index=0;if(d.indexOf("#")!==-1){var a=q.parse(d);if(a){c="if(t===1||t===11|!c.getElementById){"+c+"}else{"+a+"}"}}c=c.replace(o,"$2");c=S(d)+bd(c);s[d]=new Function("return function(c,r,s){var i=0,k=0,e0;"+c+"return r}")()}return s[d]};return dp})();function bv(){throw new SyntaxError("Invalid selector.");};h.loaded=true;(function(){try{if(!p.body)throw"continue";bx.doScroll("left")}catch(ex){setTimeout(arguments.callee,1);return}try{eval(bU.innerHTML)}catch(ex){}if(typeof IE7_PNG_SUFFIX=="object"){bh=IE7_PNG_SUFFIX}else{bh=new RegExp(bY(N.IE7_PNG_SUFFIX||"-trans.png")+"(\\?.*)?$","i")}B=p.body;x=E?B:bx;B.className+=" ie7_body";bx.className+=" ie7_html";if(E)dc();h.CSS.init();h.HTML.init();h.HTML.apply();h.CSS.apply();h.recalc()})()})(this,document);
                                  diff --git a/branches/flexBox/tests/content/firebug/4239/blank.gif b/branches/flexBox/tests/content/firebug/4239/blank.gif
                                  deleted file mode 100644
                                  index a4fe2e62..00000000
                                  Binary files a/branches/flexBox/tests/content/firebug/4239/blank.gif and /dev/null differ
                                  diff --git a/branches/flexBox/tests/content/firebug/4239/issue4239.html b/branches/flexBox/tests/content/firebug/4239/issue4239.html
                                  deleted file mode 100644
                                  index aaa1eea5..00000000
                                  --- a/branches/flexBox/tests/content/firebug/4239/issue4239.html
                                  +++ /dev/null
                                  @@ -1,67 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 4239: [Firebug Lite] Using ie7-js library crashes IE8</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                var logEntries;
                                  -                
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -                console.log("Testing");
                                  -
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -    
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        logEntries = Firebug.Selector(".logRow-log", consolePanelNode);
                                  -                        return logEntries.length == 1;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                    }
                                  -                );
                                  -            });
                                  -        
                                  -        </script>
                                  -        <!--[if lt IE 9]>
                                  -        <script type="text/javascript" src="IE9.js"></script>
                                  -        <![endif]-->
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=4239">Issue 4239</a>: [Firebug Lite] Using ie7-js library crashes IE8</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <!--
                                  -                    The steps to reproduce the test case should be described here in detail.
                                  -                 -->
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Load IE9.js</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The browser should not crash</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/includes/jquery-1.6.2.min.js b/branches/flexBox/tests/content/includes/jquery-1.6.2.min.js
                                  deleted file mode 100644
                                  index 48590ecb..00000000
                                  --- a/branches/flexBox/tests/content/includes/jquery-1.6.2.min.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -/*!
                                  - * jQuery JavaScript Library v1.6.2
                                  - * http://jquery.com/
                                  - *
                                  - * Copyright 2011, John Resig
                                  - * Dual licensed under the MIT or GPL Version 2 licenses.
                                  - * http://jquery.org/license
                                  - *
                                  - * Includes Sizzle.js
                                  - * http://sizzlejs.com/
                                  - * Copyright 2011, The Dojo Foundation
                                  - * Released under the MIT, BSD, and GPL Licenses.
                                  - *
                                  - * Date: Thu Jun 30 14:16:56 2011 -0400
                                  - */
                                  -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bC.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bR,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bX(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bX(a,c,d,e,"*",g));return l}function bW(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bN),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bA(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bv:bw;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bg(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function W(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(R.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(x,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(H)return H.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g](h)}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u=/\:|^on/,v,w;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.
                                  -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,N(a.origType,a.selector),f.extend({},a,{handler:M,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,N(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?E:D):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=E;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=E;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=E,this.stopPropagation()},isDefaultPrevented:D,isPropagationStopped:D,isImmediatePropagationStopped:D};var F=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},G=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?G:F,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?G:F)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&f(b).closest("form").length&&K("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&K("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var H,I=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var L={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||D,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=x.exec(h),k="",j&&(k=j[0],h=h.replace(x,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,L[h]?(a.push(L[h]+k),h=h+k):h=(L[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+N(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+N(h,m),e)}return this}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var O=/Until$/,P=/^(?:parents|prevUntil|prevAll)/,Q=/,/,R=/^.[^:#\[\.,]*$/,S=Array.prototype.slice,T=f.expr.match.POS,U={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(W(this,a,!1),"not",a)},filter:function(a){return this.pushStack(W(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=T.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/<tbody/i,ba=/<|&#?\w+;/,bb=/<(?:script|object|embed|option|style)/i,bc=/checked\s*(?:[^=]|=\s*.checked.)/i,bd=/\/(java|ecma)script/i,be=/^\s*<!(?:\[CDATA\[|\-\-)/,bf={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bc.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bg(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bm)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!bb.test(a[0])&&(f.support.checkClone||!bc.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j
                                  -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1></$2>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bl(k[i]);else bl(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bd.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bn=/alpha\([^)]*\)/i,bo=/opacity=([^)]*)/,bp=/([A-Z]|^ms)/g,bq=/^-?\d+(?:px)?$/i,br=/^-?\d/,bs=/^[+\-]=/,bt=/[^+\-\.\de]+/g,bu={position:"absolute",visibility:"hidden",display:"block"},bv=["Left","Right"],bw=["Top","Bottom"],bx,by,bz;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bx(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d;if(h==="number"&&isNaN(d)||d==null)return;h==="string"&&bs.test(d)&&(d=+d.replace(bt,"")+parseFloat(f.css(a,c)),h="number"),h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bx)return bx(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bA(a,b,d);f.swap(a,bu,function(){e=bA(a,b,d)});return e}},set:function(a,b){if(!bq.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cs(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cr("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cr("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cs(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cr("show",1),slideUp:cr("hide",1),slideToggle:cr("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function h(a){return d.step(a)}var d=this,e=f.fx,g;this.startTime=cn||cp(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,h.elem=this.elem,h()&&f.timers.push(h)&&!cl&&(co?(cl=!0,g=function(){cl&&(co(g),e.tick())},co(g)):cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||cp(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var ct=/^t(?:able|d|h)$/i,cu=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cv(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!ct.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window);
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/template/issueXXXX.html b/branches/flexBox/tests/content/template/issueXXXX.html
                                  deleted file mode 100644
                                  index 2acfdcee..00000000
                                  --- a/branches/flexBox/tests/content/template/issueXXXX.html
                                  +++ /dev/null
                                  @@ -1,77 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <!--
                                  -        STEPS TO CREATE A TEST CASE:
                                  -        1. Replace "xxxx" by number of your issue
                                  -        2. Replace "Issue summary" by title of your issue
                                  -        3. Put inspectable elements, form fields etc. into the "content" section
                                  -        4. Add the exact steps to reproduce your issue under "Steps to reproduce"
                                  -        5. Describe the currently seen result under "Observed result"
                                  -        6. Describe what you would expect to see under "Expected result"
                                  -        7. Add your contact information
                                  -        8. Remove all template comments
                                  -
                                  -        Note: Make sure, the URL to testcase.css is https://getfirebug.com/tests/content/templates/firebugLite/testcase.css
                                  -     -->
                                  -    <head>
                                  -        <!--
                                  -            Add the issue number and title here. 
                                  -         -->
                                  -        <title>Issue xxxx: Issue summary</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                FBTest.ok(true, "OK");
                                  -            });
                                  -        
                                  -        </script>        
                                  -        <link href="../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=xxxx">Issue xxxx</a>: Issue summary</h1>
                                  -              	<h2 id="qunit-banner"></h2>
                                  -              	<div id="qunit-testrunner-toolbar"></div>
                                  -              	<h2 id="qunit-userAgent"></h2>
                                  -              	<ol id="qunit-tests"></ol>
                                  -              	<div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="content">
                                  -                content
                                  -                <!--
                                  -                    All inspectable elements, form fields etc. needed to execute the test should be placed here.
                                  -                    If you generate output via JavaScript, put it into <section id="output"></section>.
                                  -                    If you don't need any content, you can remove the "content" section.
                                  -                 -->
                                  -            </section>
                                  -            <section id="description">
                                  -                <!--
                                  -                    The steps to reproduce the test case should be described here in detail.
                                  -                 -->
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Step 1</li>
                                  -                    <li>Step 2</li>
                                  -                    <li>Step 3</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>Point 1</li>
                                  -                    <li>Point 2</li>
                                  -                    <li>Point 3</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                <!--
                                  -                    Your name and your email address (or other contact information) should be placed here.
                                  -                    This is important in the case we need to contact you for further reference. 
                                  -                 -->
                                  -                &lt;author name&gt;, &lt;email address&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/template/testcase.css b/branches/flexBox/tests/content/template/testcase.css
                                  deleted file mode 100644
                                  index eca9e7e2..00000000
                                  --- a/branches/flexBox/tests/content/template/testcase.css
                                  +++ /dev/null
                                  @@ -1,180 +0,0 @@
                                  -@font-face {
                                  -    font-family: 'TitilliumMaps';
                                  -    src: url('http://getfirebug.com/fonts/TitilliumMaps26L001.eot');
                                  -    src: local('☺'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.woff') format('woff'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.ttf') format('truetype');
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -* {
                                  -   position: relative;
                                  -}
                                  -
                                  -html, body {
                                  -    width: 100%;
                                  -    min-height: 100%;
                                  -    min-height: calc(100% - 30px);
                                  -    min-height: -moz-calc(100% - 30px);
                                  -    margin: 0;
                                  -    padding-bottom: 30px;
                                  -}
                                  -
                                  -body {
                                  -    background-color: #EAF1FB;
                                  -    background: #FFFFFF linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -moz-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -webkit-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -o-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -ms-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    font-family: "Trebuchet MS", Helvetica, sans-serif;
                                  -    font-size: 0.9em;
                                  -}
                                  -
                                  -#main {
                                  -    margin: auto;
                                  -    width: 870px;
                                  -}
                                  -
                                  -#main {
                                  -    top: 20px;
                                  -    border-radius: 8px;
                                  -    -moz-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -o-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -ms-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    background-color: rgba(255, 255, 255, 0.6);
                                  -    padding: 15px;
                                  -}
                                  -
                                  -section#content {
                                  -    background-image: linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -moz-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -webkit-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -o-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -ms-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    border-radius: 8px;
                                  -    -moz-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    margin: 10px 0;
                                  -    padding: 10px;
                                  -}
                                  -
                                  -section#output {
                                  -    background-image: linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -moz-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -webkit-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -o-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -ms-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    height: 50px;
                                  -    margin: 10px 0;
                                  -    padding: 10px;
                                  -}
                                  -
                                  -footer {
                                  -    margin-top: 10px;
                                  -    text-align: right;
                                  -    font-size: 75%;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -h1, h2 {
                                  -    font-family: /* TitilliumMaps, */ "Trebuchet MS", Helvetica, sans-serif;
                                  -    font-size: 130%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -h1 {
                                  -}
                                  -
                                  -h2 {
                                  -    margin: 0.5em 0;
                                  -    border-bottom: 2px solid #9ACBE4;
                                  -}
                                  -
                                  -h3 {
                                  -    margin: 0.3em 0 0.2em 0;
                                  -    font-size: 105%;
                                  -}
                                  -
                                  -p, ol, ul {
                                  -    margin: 0.2em 0;
                                  -}
                                  -
                                  -p {
                                  -    padding-left: 20px;
                                  -}
                                  -
                                  -section#description p {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -ul {
                                  -    list-style-type: square;
                                  -    list-style-image: url(data:image/gif;base64,R0lGODlhBQAIAPcAAGOMnGOMnP///2OMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAIALAAAAAAFAAgABwgSAAEIHEiwoEGC/xImFMCwocOAADs=);
                                  -}
                                  -
                                  -li.ok, li span.ok {
                                  -    color: #00B400;
                                  -}
                                  -
                                  -li.error, li span.error {
                                  -    color: #DC0000;
                                  -}
                                  -
                                  -code {
                                  -    color: #008C00;
                                  -}
                                  -
                                  -code.key {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -input[type="text"], button {
                                  -    border: 1px solid #AAAAAA;
                                  -    border-radius: 5px;
                                  -    -moz-border-radius: 5px;
                                  -    -webkit-border-radius: 5px;
                                  -    -o-border-radius: 5px;
                                  -    padding: 3px 5px;
                                  -}
                                  -
                                  -input[type="button"], button {
                                  -    background-image: linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -moz-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -webkit-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -o-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -ms-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -moz-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -webkit-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -o-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -ms-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    text-shadow: 1px 1px rgba(255, 255, 255, 0.3);
                                  -}
                                  -
                                  -input[type="button"]:hover, button:hover {
                                  -    background-image: linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -moz-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -webkit-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -o-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -ms-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -}
                                  -
                                  -input[type="button"]:active, button:active {
                                  -    background-image: linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -moz-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -webkit-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -o-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -ms-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -moz-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -webkit-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -o-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -ms-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2756/issue2756.html b/branches/flexBox/tests/content/xhr/2756/issue2756.html
                                  deleted file mode 100644
                                  index c3979920..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2756/issue2756.html
                                  +++ /dev/null
                                  @@ -1,84 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 2756: [Firebug Lite] Local XHR request not listed in console</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -
                                  -                var xhr1 = FBL.Ajax.getXHRObject();
                                  -                xhr1.open("GET", "test.txt", false);
                                  -                xhr1.send();
                                  -                
                                  -                FBTest.ok(xhr1.responseText == "OK", "responseText returns the proper value with Sync XHR");
                                  -                
                                  -                var callbackCalled = false;
                                  -
                                  -                var xhr2 = FBL.Ajax.getXHRObject();
                                  -                xhr2.open("GET", "test.txt", true);
                                  -                
                                  -                xhr2.onreadystatechange = function()
                                  -                {
                                  -                    if (xhr2.readyState == 4 && xhr2.status == 200)
                                  -                    {
                                  -                        callbackCalled = true;
                                  -                    }
                                  -                };
                                  -                
                                  -                xhr2.send();
                                  -                
                                  -    
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        return callbackCalled;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(xhr2.responseText == "OK", "responseText returns the proper value with Async XHR");
                                  -                        
                                  -                        var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -                        var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                        FBTest.compare(2, logEntries.length, "there are 2 log entries");
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=2756">Issue 2756</a>: [Firebug Lite] Local XHR request not listed in console</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Make a Synchronous XHR GET "test.txt"</li>
                                  -                    <li>Make an Asynchronous XHR GET "test.txt"</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>There should be 2 entries in the Console Panel</li>
                                  -                    <li>The responseText should be "OK" for both XHR requests</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2756/test.txt b/branches/flexBox/tests/content/xhr/2756/test.txt
                                  deleted file mode 100644
                                  index a0aba931..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2756/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -OK
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2840/issue2840.html b/branches/flexBox/tests/content/xhr/2840/issue2840.html
                                  deleted file mode 100644
                                  index ca76fab0..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2840/issue2840.html
                                  +++ /dev/null
                                  @@ -1,95 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 2840: [Firebug Lite] Synchronous XHR requests</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                FBTest.loadScript("../../includes/jquery-1.6.2.min.js", false);
                                  -                
                                  -                var callbackCalled = false;
                                  -                var responseText = null;
                                  -                
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -                
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -                
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    complete: function(req, status) {
                                  -                        if (status == "success") {
                                  -                            responseText = req.responseText;
                                  -                            callbackCalled = true;
                                  -                        }
                                  -                    }
                                  -                });
                                  -        
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        // make sure the XHR has finished loading
                                  -                        var xhrLogCompleted = Firebug.Selector(".loading", consolePanelNode).length == 0;
                                  -                        
                                  -                        return callbackCalled && xhrLogCompleted;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(callbackCalled, "callback function was properly called");
                                  -                        FBTest.compare("OK", responseText, "responseText returns the proper value");
                                  -                        
                                  -                        var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                        
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=2840">Issue 2840</a>: [Firebug Lite] Synchronous XHR requests</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Load jQuery</li>
                                  -                    <li>Execute the following code:</li>
                                  -                </ol>
                                  -                <pre>
                                  -        $.ajax({
                                  -            url: "test.txt",
                                  -            complete: function(req, status) {
                                  -                if (status == "success") {
                                  -                    // this line should be executed
                                  -                }
                                  -            }
                                  -        });
                                  -                </pre>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The marked line should be executed, that is, the "complete" callback 
                                  -                    function should be called</li>
                                  -                    <li>There should be one log entry in the Console Panel</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2840/test.txt b/branches/flexBox/tests/content/xhr/2840/test.txt
                                  deleted file mode 100644
                                  index a0aba931..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2840/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -OK
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2846/issue2846.html b/branches/flexBox/tests/content/xhr/2846/issue2846.html
                                  deleted file mode 100644
                                  index 2319d056..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2846/issue2846.html
                                  +++ /dev/null
                                  @@ -1,94 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 2846: [Firebug Lite] Offline XHR requests</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            (function(){
                                  -                
                                  -            var callbackCalled = false;
                                  -            var responseText = null;
                                  -                
                                  -            // this test will run before Firebug UI finish to load
                                  -            FBTest.runTest(function()
                                  -            {
                                  -                FBTest.ok(typeof Firebug == "object", "Firebug object exists before page load");
                                  -
                                  -                // we are testing here "offline" XHR Info messages, that is,
                                  -                // XHR Info messages logged before Firebug UI finish to load                
                                  -                var xhr = FBL.Ajax.getXHRObject();
                                  -                xhr.open("GET", "test.txt", true);
                                  -                
                                  -                xhr.onreadystatechange = function()
                                  -                {
                                  -                    if (xhr.readyState == 4 && xhr.status == 200)
                                  -                    {
                                  -                        responseText = xhr.responseText;
                                  -                        callbackCalled = true;
                                  -                    }
                                  -                };
                                  -
                                  -                xhr.send();
                                  -            });
                                  -            
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -                
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        // make sure the XHR has finished loading
                                  -                        var xhrLogCompleted = Firebug.Selector(".loading", consolePanelNode).length == 0;
                                  -                        
                                  -                        return callbackCalled && xhrLogCompleted;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(callbackCalled, "callback function was properly called");
                                  -                        FBTest.compare("OK", responseText, "responseText returns the proper value");
                                  -                        
                                  -                        var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                        
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -
                                  -            })();
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=2846">Issue 2846</a>: [Firebug Lite] Offline XHR requests</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite at the &lt;head&gt; of a page</li>
                                  -                    <li>Execute a XHR also at the &lt;head&gt; of a page</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The XHR callback should be properly called</li>
                                  -                    <li>The XHR reponseText should be the same as expected</li>
                                  -                    <li>There should be one log entry in the Console Panel</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2846/test.txt b/branches/flexBox/tests/content/xhr/2846/test.txt
                                  deleted file mode 100644
                                  index a0aba931..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2846/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -OK
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2977/issue2977.html b/branches/flexBox/tests/content/xhr/2977/issue2977.html
                                  deleted file mode 100644
                                  index fa3999c4..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2977/issue2977.html
                                  +++ /dev/null
                                  @@ -1,124 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 2977: [Firebug Lite] HTTP parameters in the console</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                FBTest.loadScript("../../includes/jquery-1.6.2.min.js", false);
                                  -                
                                  -                var Selector = Firebug.Selector;
                                  -                
                                  -                var callbackCalled = false;
                                  -                var responseText = null;
                                  -                
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -                
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -                
                                  -                $.post("post.php?param1=1", "param2=2", function(req, status) {
                                  -                    if (status == "success") {
                                  -                        callbackCalled = true;
                                  -                    }
                                  -                });
                                  -        
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        // make sure the XHR has finished loading
                                  -                        var xhrLogCompleted = Selector(".loading", consolePanelNode).length == 0;
                                  -                        
                                  -                        return callbackCalled && xhrLogCompleted;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(callbackCalled, "callback function was properly called");
                                  -                        
                                  -                        var logEntries = Selector(".logRow-spy", consolePanelNode);
                                  -                        
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                        
                                  -                        var logEntry = logEntries[0];
                                  -                        
                                  -                        // Open the XHR Info
                                  -                        var spyTitle = Selector(".spyTitle", logEntry)[0];
                                  -                        FBTest.click(spyTitle);
                                  -                        
                                  -                        // Select XHR Info Params Tab
                                  -                        var netInfoParamsTab = Selector(".netInfoParamsTab", logEntry)[0];
                                  -                        FBTest.click(netInfoParamsTab);
                                  -                        
                                  -                        // Check for the GET parameter
                                  -                        var netInfoParamsText = Selector(".netInfoParamsText", logEntry)[0];
                                  -                        var netInfoParamName = Selector(".netInfoParamName", netInfoParamsText);
                                  -                        FBTest.compare(1, netInfoParamName.length, "there is exactly one GET parameter");
                                  -                        
                                  -                        var paramName = netInfoParamName[0];
                                  -                        FBTest.compare("param1", paramName.textContent||paramName.innerText, "The GET parameter has the proper name");
                                  -
                                  -                        // Select XHR Info Post Tab
                                  -                        var netInfoPostTab = Selector(".netInfoPostTab", logEntry)[0];
                                  -                        FBTest.click(netInfoPostTab);
                                  -                        
                                  -                        // Check for the POST parameter
                                  -                        var netInfoPostText = Selector(".netInfoPostText", logEntry)[0];
                                  -                        var netInfoParamName = Selector(".netInfoParamName", netInfoPostText);
                                  -                        FBTest.compare(1, netInfoParamName.length, "there is exactly one POST parameter");
                                  -                        
                                  -                        var paramName = netInfoParamName[0];
                                  -                        FBTest.compare("param2", paramName.textContent||paramName.innerText, "The POST parameter has the proper name");
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=2977">Issue 2977</a>: [Firebug Lite] HTTP parameters in the console</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <!--
                                  -                    The steps to reproduce the test case should be described here in detail.
                                  -                 -->
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Load jQuery</li>
                                  -                    <li>Execute the following code:</li>
                                  -                </ol>
                                  -                <pre>
                                  -        $.post("post.php?param1=1", "param2=2", function(req, status) {
                                  -            if (status == "success") {
                                  -                // this line should be executed
                                  -            }
                                  -        });
                                  -                </pre>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The marked line should be executed, that is, the "complete" callback 
                                  -                    function should be called</li>
                                  -                    <li>There should be one log entry in the Console Panel</li>
                                  -                    <li>There should be a parameter "param1" in the XHR Info "Params" Tab</li>
                                  -                    <li>There should be a parameter "param2" in the XHR Info "Post" Tab</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/2977/post.php b/branches/flexBox/tests/content/xhr/2977/post.php
                                  deleted file mode 100644
                                  index 923693f9..00000000
                                  --- a/branches/flexBox/tests/content/xhr/2977/post.php
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -<?php
                                  -echo $_POST['param2']; 
                                  -?>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/3504/issue3504.html b/branches/flexBox/tests/content/xhr/3504/issue3504.html
                                  deleted file mode 100644
                                  index 89fa25eb..00000000
                                  --- a/branches/flexBox/tests/content/xhr/3504/issue3504.html
                                  +++ /dev/null
                                  @@ -1,98 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 3504: [Firebug lite] jQuery.ajax call fails in IE</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                FBTest.loadScript("../../includes/jquery-1.6.2.min.js", false);
                                  -                
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -                
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -                
                                  -                var callbackCalled = false;
                                  -                
                                  -                var success = false;
                                  -                
                                  -                $.ajax({
                                  -                    url: "test.txt",
                                  -                    success: function() {
                                  -                        success = true;
                                  -                    },
                                  -                    complete: function() {
                                  -                        callbackCalled = true;
                                  -                    }
                                  -                });
                                  -        
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        // make sure the XHR has finished loading
                                  -                        var xhrLogCompleted = Firebug.Selector(".loading", consolePanelNode).length == 0;
                                  -                        
                                  -                        return callbackCalled && xhrLogCompleted;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(callbackCalled, "callback function was properly called");
                                  -                        FBTest.compare(true, success, "success variable equals to true");
                                  -                        
                                  -                        var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                        
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=3504">Issue 3504</a>: [Firebug lite] jQuery.ajax call fails in IE</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Load jQuery</li>
                                  -                    <li>Execute the following code:</li>
                                  -                </ol>
                                  -                <pre>
                                  -        var success = false;
                                  -        
                                  -        $.ajax({
                                  -            url: "test.txt",
                                  -            success: function() {
                                  -                success = true;
                                  -            },
                                  -            complete: function() {
                                  -                // success variable should hold the "true" value here
                                  -            }
                                  -        });
                                  -                </pre>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The success variable should hold the "true" value after the XHR completes</li>
                                  -                    <li>There should be one log entry in the Console Panel</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/3504/test.txt b/branches/flexBox/tests/content/xhr/3504/test.txt
                                  deleted file mode 100644
                                  index a0aba931..00000000
                                  --- a/branches/flexBox/tests/content/xhr/3504/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -OK
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/content/xhr/4472/issue4472.html b/branches/flexBox/tests/content/xhr/4472/issue4472.html
                                  deleted file mode 100644
                                  index b872bec4..00000000
                                  --- a/branches/flexBox/tests/content/xhr/4472/issue4472.html
                                  +++ /dev/null
                                  @@ -1,87 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Issue 4472: [Firebug Lite] XHR.getAllResponseHeaders() doesn't work on IE</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script type="text/javascript" src="../../../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -            FBTest.runTestOnLoad(function()
                                  -            {
                                  -                var callbackCalled = false;
                                  -                var headers = "";
                                  -                
                                  -                var console = FBTest.getConsoleObject();
                                  -                console.clear();
                                  -
                                  -                var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -
                                  -                var xhr = FBL.Ajax.getXHRObject();
                                  -                xhr.open("GET", "issue4472.html", true);
                                  -                
                                  -                xhr.onreadystatechange = function()
                                  -                {
                                  -                    if (xhr.readyState == 4 && xhr.status == 200)
                                  -                    {
                                  -                        headers = xhr.getAllResponseHeaders();
                                  -                        callbackCalled = true;
                                  -                    }
                                  -                };
                                  -                
                                  -                xhr.send();
                                  -    
                                  -                FBTest.wait(
                                  -                    function()
                                  -                    {
                                  -                        // make sure the XHR has finished loading
                                  -                        var xhrLogCompleted = Firebug.Selector(".loading", consolePanelNode).length == 0;
                                  -                        
                                  -                        return callbackCalled && xhrLogCompleted;
                                  -                    },
                                  -                    function()
                                  -                    {
                                  -                        FBTest.ok(headers.length > 0, "getAllResponseHeaders() returns the headers string");
                                  -    
                                  -                        var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                        FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                    }
                                  -                );
                                  -
                                  -            });
                                  -
                                  -        
                                  -        </script>        
                                  -        <link href="../../../fbtest/fbtest.css" type="text/css" rel="stylesheet"/>
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header"><a href="http://code.google.com/p/fbug/issues/detail?id=4472">Issue 4472</a>: [Firebug Lite] XHR.getAllResponseHeaders() doesn't work on IE</h1>
                                  -                <h2 id="qunit-banner"></h2>
                                  -                <div id="qunit-testrunner-toolbar"></div>
                                  -                <h2 id="qunit-userAgent"></h2>
                                  -                <ol id="qunit-tests"></ol>
                                  -                <div id="qunit-fixture">test markup</div>
                                  -            </header>
                                  -            <section id="description">
                                  -                <!--
                                  -                    The steps to reproduce the test case should be described here in detail.
                                  -                 -->
                                  -                <h3>Steps to reproduce</h3>
                                  -                <ol>
                                  -                    <li>Load Firebug Lite</li>
                                  -                    <li>Execute a XHR request</li>
                                  -                    <li>When the request is completed, call getAllResponseHeaders()</li>
                                  -                </ol>
                                  -                <h3>Expected Result</h3>
                                  -                <ul>
                                  -                    <li>The getAllResponseHeaders() should return the proper headers string</li>
                                  -                    <li>There should be one log entry in the Console Panel</li>
                                  -                </ul>
                                  -            </section>
                                  -            <footer>
                                  -                &lt;Pedro Simonetti&gt;, &lt;pedrosimonetti@gmail.com&gt;
                                  -            </footer>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/examples/async.html b/branches/flexBox/tests/examples/async.html
                                  deleted file mode 100644
                                  index ae21ee00..00000000
                                  --- a/branches/flexBox/tests/examples/async.html
                                  +++ /dev/null
                                  @@ -1,41 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -    <head>
                                  -        <script type="text/javascript" src="../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            var xhr = FBL.Ajax.getXHRObject();
                                  -            xhr.open("GET", "test.txt", true);
                                  -            xhr.send();
                                  -
                                  -            var consolePanelNode = FBTest.getPanel("Console").panelNode;
                                  -
                                  -            FBTest.wait(
                                  -                function()
                                  -                {
                                  -                    // exists a XHR log entry
                                  -                    return Firebug.Selector(".logRow-spy", consolePanelNode).length > 0;
                                  -                },
                                  -                function()
                                  -                {
                                  -                    var logEntries = Firebug.Selector(".logRow-spy", consolePanelNode);
                                  -                    FBTest.compare(1, logEntries.length, "there is exactly one log entry");
                                  -                }
                                  -            );
                                  -
                                  -        });
                                  -
                                  -        </script>
                                  -        <link rel="stylesheet" href="../fbtest/fbtest.css" type="text/css" media="screen">
                                  -    </head>
                                  -    <body>
                                  -    	<h1 id="qunit-header">Async test example</h1>
                                  -    	<h2 id="qunit-banner"></h2>
                                  -    	<div id="qunit-testrunner-toolbar"></div>
                                  -    	<h2 id="qunit-userAgent"></h2>
                                  -    	<ol id="qunit-tests"></ol>
                                  -    	<div id="qunit-fixture">test markup</div>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/tests/examples/fail.html b/branches/flexBox/tests/examples/fail.html
                                  deleted file mode 100644
                                  index b97b6663..00000000
                                  --- a/branches/flexBox/tests/examples/fail.html
                                  +++ /dev/null
                                  @@ -1,24 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -    <head>
                                  -        <script type="text/javascript" src="../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        FBTest.runTest(function()
                                  -        {
                                  -            // force a fail to illustrate the occurence of errors in the test runner
                                  -            FBTest.ok(false, "Forced failing");
                                  -        });
                                  -        
                                  -        </script>
                                  -        <link rel="stylesheet" href="../fbtest/fbtest.css" type="text/css" media="screen">
                                  -    </head>
                                  -    <body>
                                  -    	<h1 id="qunit-header">Fail test example</h1>
                                  -    	<h2 id="qunit-banner"></h2>
                                  -    	<div id="qunit-testrunner-toolbar"></div>
                                  -    	<h2 id="qunit-userAgent"></h2>
                                  -    	<ol id="qunit-tests"></ol>
                                  -    	<div id="qunit-fixture">test markup</div>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/tests/examples/sync.html b/branches/flexBox/tests/examples/sync.html
                                  deleted file mode 100644
                                  index 21fca888..00000000
                                  --- a/branches/flexBox/tests/examples/sync.html
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -    <head>
                                  -        <script type="text/javascript" src="../fbtest/fbtest.js"></script>
                                  -        <script type="text/javascript">
                                  -        
                                  -        // this test will run before Firebug UI finish to load
                                  -        FBTest.runTest(function()
                                  -        {
                                  -            // we are testing here "offline" console messages, that is,
                                  -            // console messages logged before Firebug UI finish to load
                                  -            var console = FBTest.getConsoleObject();
                                  -            console.log("Test");
                                  -            
                                  -            FBTest.ok(typeof Firebug == "object", "Firebug object exists before page load");
                                  -        });
                                  -        
                                  -        // this test will run after Firebug UI finish to load
                                  -        FBTest.runTestOnLoad(function()
                                  -        {
                                  -            // in order to check if the log was successful we need to wait for the
                                  -            // UI to finish to load, so we can search for panelNode childs
                                  -            var panel = FBTest.getPanel("Console").panelNode;
                                  -            var elements = FBL.getElementsByClass(panel, "logRow-log");
                                  -            FBTest.ok(elements.length == 1, "Exists a log entry for the XHR request");
                                  -        });
                                  -
                                  -        </script>
                                  -        <link rel="stylesheet" href="../fbtest/fbtest.css" type="text/css" media="screen">
                                  -    </head>
                                  -    <body>
                                  -    	<h1 id="qunit-header">Sync test example</h1>
                                  -    	<h2 id="qunit-banner"></h2>
                                  -    	<div id="qunit-testrunner-toolbar"></div>
                                  -    	<h2 id="qunit-userAgent"></h2>
                                  -    	<ol id="qunit-tests"></ol>
                                  -    	<div id="qunit-fixture">test markup</div>
                                  -    </body>
                                  -</html>
                                  diff --git a/branches/flexBox/tests/examples/test.txt b/branches/flexBox/tests/examples/test.txt
                                  deleted file mode 100644
                                  index 2ae6cf45..00000000
                                  --- a/branches/flexBox/tests/examples/test.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -testing...
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/fbtest/fbtest.css b/branches/flexBox/tests/fbtest/fbtest.css
                                  deleted file mode 100644
                                  index ff4c9c4a..00000000
                                  --- a/branches/flexBox/tests/fbtest/fbtest.css
                                  +++ /dev/null
                                  @@ -1,566 +0,0 @@
                                  -/* ============================================================================================== */
                                  -/* ============================================================================================== */
                                  -/*
                                  -@font-face {
                                  -    font-family: 'TitilliumMaps';
                                  -    src: url('http://getfirebug.com/fonts/TitilliumMaps26L001.eot');
                                  -    src: local('☺'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.woff') format('woff'), url('http://getfirebug.com/fonts/TitilliumMaps26L001.ttf') format('truetype');
                                  -    font-weight: bold;
                                  -}
                                  -*/
                                  -/*
                                  -TODO: xxxpedro
                                  -* {
                                  -   position: relative;
                                  -}
                                  -*/
                                  -
                                  -html, body {
                                  -    /*width: 100%;
                                  -    min-height: 100%;
                                  -    min-height: calc(100% - 30px);
                                  -    min-height: -moz-calc(100% - 30px);*/
                                  -    margin: 0;
                                  -    padding-bottom: 30px;
                                  -}
                                  -
                                  -body {
                                  -    background-color: #EAF1FB;
                                  -    background: #FFFFFF linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -moz-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -webkit-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -o-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    background: #FFFFFF -ms-linear-gradient(top, #EAF1FB, #FFFFFF 450px) no-repeat;
                                  -    font-family: "Trebuchet MS", Helvetica, sans-serif;
                                  -    font-size: 0.9em;
                                  -}
                                  -
                                  -#main {
                                  -    margin: auto;
                                  -    width: 870px;
                                  -}
                                  -
                                  -#main {
                                  -    margin-top: 20px;
                                  -    border-radius: 8px;
                                  -    -moz-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -o-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    -ms-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
                                  -    background-color: rgba(255, 255, 255, 0.6);
                                  -    padding: 15px;
                                  -}
                                  -
                                  -#content {
                                  -    background-color: #EAEAEA;
                                  -    background-image: linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -moz-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -webkit-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -o-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    background-image: -ms-linear-gradient(bottom, #E6E6E6, #F0F0F0);
                                  -    border-radius: 8px;
                                  -    -moz-border-radius: 8px;
                                  -    -webkit-border-radius: 8px;
                                  -    -o-border-radius: 8px;
                                  -    margin: 10px 0;
                                  -    padding: 10px;
                                  -}
                                  -
                                  -#output {
                                  -    background-color: #FAFAFA;
                                  -    background-image: linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -moz-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -webkit-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -o-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    background-image: -ms-linear-gradient(bottom, #F5F5F5, #FFFFFF);
                                  -    height: 50px;
                                  -    margin: 10px 0;
                                  -    padding: 10px;
                                  -}
                                  -
                                  -footer {
                                  -    margin-top: 10px;
                                  -    text-align: right;
                                  -    font-size: 75%;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -h1, h2 {
                                  -    font-family: /* TitilliumMaps, */ "Trebuchet MS", Helvetica, sans-serif;
                                  -    font-size: 130%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -h1 {
                                  -}
                                  -
                                  -h2 {
                                  -    margin: 0.5em 0;
                                  -    /*TODO: xxxpedro*/
                                  -    /*border-bottom: 2px solid #9ACBE4;*/
                                  -}
                                  -
                                  -h3 {
                                  -    margin: 0.3em 0 0.2em 0;
                                  -    font-size: 105%;
                                  -}
                                  -
                                  -p, ol, ul {
                                  -    margin: 0.2em 0;
                                  -}
                                  -
                                  -p {
                                  -    padding-left: 20px;
                                  -}
                                  -
                                  -#description p {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -ul {
                                  -    list-style-type: square;
                                  -    list-style-image: url(data:image/gif;base64,R0lGODlhBQAIAPcAAGOMnGOMnP///2OMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnGOMnP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yH5BAEAAAIALAAAAAAFAAgABwgSAAEIHEiwoEGC/xImFMCwocOAADs=);
                                  -}
                                  -
                                  -li.ok, li span.ok {
                                  -    color: #00B400;
                                  -}
                                  -
                                  -li.error, li span.error {
                                  -    color: #DC0000;
                                  -}
                                  -
                                  -code {
                                  -    color: #008C00;
                                  -}
                                  -
                                  -code.key {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -input[type="text"], button {
                                  -    border: 1px solid #AAAAAA;
                                  -    border-radius: 5px;
                                  -    -moz-border-radius: 5px;
                                  -    -webkit-border-radius: 5px;
                                  -    -o-border-radius: 5px;
                                  -    padding: 3px 5px;
                                  -}
                                  -
                                  -input[type="button"], button {
                                  -    background-image: linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -moz-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -webkit-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -o-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    background-image: -ms-linear-gradient(bottom, #A0A0A0, #C8C8C8);
                                  -    box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -moz-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -webkit-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -o-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    -ms-box-shadow: 0 -2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 2px 2px -1px #FFFFFF inset;
                                  -    text-shadow: 1px 1px rgba(255, 255, 255, 0.3);
                                  -}
                                  -
                                  -input[type="button"]:hover, button:hover {
                                  -    background-image: linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -moz-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -webkit-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -o-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -    background-image: -ms-linear-gradient(bottom, #B4B4B4, #DCDCDC);
                                  -}
                                  -
                                  -input[type="button"]:active, button:active {
                                  -    background-image: linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -moz-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -webkit-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -o-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    background-image: -ms-linear-gradient(top, #8C8C8C, #A0A0A0);
                                  -    box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -moz-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -webkit-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -o-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -    -ms-box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.5) inset, 0 -2px 2px -1px #FFFFFF inset;
                                  -}
                                  -
                                  -/* ============================================================================================== */
                                  -/* ============================================================================================== */
                                  -
                                  -/**
                                  - * QUnit - A JavaScript Unit Testing Framework
                                  - *
                                  - * http://docs.jquery.com/QUnit
                                  - *
                                  - * Copyright (c) 2011 John Resig, Jörn Zaefferer
                                  - * Dual licensed under the MIT (MIT-LICENSE.txt)
                                  - * or GPL (GPL-LICENSE.txt) licenses.
                                  - */
                                  -
                                  -/** Font Family and Sizes */
                                  -
                                  -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
                                  -	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
                                  -}
                                  -
                                  -#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
                                  -#qunit-tests { font-size: smaller; }
                                  -
                                  -
                                  -/** Resets */
                                  -
                                  -#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
                                  -	margin: 0;
                                  -	padding: 0;
                                  -}
                                  -
                                  -
                                  -/** Header */
                                  -
                                  -#qunit-header {
                                  -	padding: 0.5em 0 0.5em 1em;
                                  -
                                  -	color: #8699a4;
                                  -	background-color: #0d3349;
                                  -
                                  -	font-size: 1.5em;
                                  -	line-height: 1em;
                                  -	font-weight: normal;
                                  -
                                  -	border-radius: 15px 15px 0 0;
                                  -	-moz-border-radius: 15px 15px 0 0;
                                  -	-webkit-border-top-right-radius: 15px;
                                  -	-webkit-border-top-left-radius: 15px;
                                  -}
                                  -
                                  -#qunit-header a {
                                  -	text-decoration: none;
                                  -	color: #c2ccd1;
                                  -}
                                  -
                                  -#qunit-header a:hover,
                                  -#qunit-header a:focus {
                                  -	color: #fff;
                                  -}
                                  -
                                  -#qunit-banner {
                                  -	height: 5px;
                                  -}
                                  -
                                  -#qunit-testrunner-toolbar {
                                  -	padding: 0.5em 0 0.5em 2em;
                                  -	color: #5E740B;
                                  -	background-color: #eee;
                                  -}
                                  -
                                  -#qunit-userAgent {
                                  -	padding: 0.5em 0 0.5em 2.5em;
                                  -	background-color: #2b81af;
                                  -	color: #fff;
                                  -	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
                                  -}
                                  -
                                  -
                                  -/** Tests: Pass/Fail */
                                  -
                                  -#qunit-tests {
                                  -	list-style-position: inside;
                                  -}
                                  -
                                  -#qunit-tests li {
                                  -	padding: 0.4em 0.5em 0.4em 2.5em;
                                  -	border-bottom: 1px solid #fff;
                                  -	list-style-position: inside;
                                  -}
                                  -
                                  -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running  {
                                  -	display: none;
                                  -}
                                  -
                                  -#qunit-tests li strong {
                                  -	cursor: pointer;
                                  -}
                                  -
                                  -#qunit-tests li a {
                                  -	padding: 0.5em;
                                  -	color: #c2ccd1;
                                  -	text-decoration: none;
                                  -}
                                  -#qunit-tests li a:hover,
                                  -#qunit-tests li a:focus {
                                  -	color: #000;
                                  -}
                                  -
                                  -#qunit-tests ol {
                                  -	margin-top: 0.5em;
                                  -	padding: 0.5em;
                                  -
                                  -	background-color: #fff;
                                  -
                                  -	border-radius: 15px;
                                  -	-moz-border-radius: 15px;
                                  -	-webkit-border-radius: 15px;
                                  -
                                  -	box-shadow: inset 0px 2px 13px #999;
                                  -	-moz-box-shadow: inset 0px 2px 13px #999;
                                  -	-webkit-box-shadow: inset 0px 2px 13px #999;
                                  -}
                                  -
                                  -#qunit-tests table {
                                  -	border-collapse: collapse;
                                  -	margin-top: .2em;
                                  -}
                                  -
                                  -#qunit-tests th {
                                  -	text-align: right;
                                  -	vertical-align: top;
                                  -	padding: 0 .5em 0 0;
                                  -}
                                  -
                                  -#qunit-tests td {
                                  -	vertical-align: top;
                                  -}
                                  -
                                  -#qunit-tests pre {
                                  -	margin: 0;
                                  -	white-space: pre-wrap;
                                  -	word-wrap: break-word;
                                  -}
                                  -
                                  -#qunit-tests del {
                                  -	background-color: #e0f2be;
                                  -	color: #374e0c;
                                  -	text-decoration: none;
                                  -}
                                  -
                                  -#qunit-tests ins {
                                  -	background-color: #ffcaca;
                                  -	color: #500;
                                  -	text-decoration: none;
                                  -}
                                  -
                                  -/*** Test Counts */
                                  -
                                  -#qunit-tests b.counts                       { color: black; }
                                  -#qunit-tests b.passed                       { color: #5E740B; }
                                  -#qunit-tests b.failed                       { color: #710909; }
                                  -
                                  -#qunit-tests li li {
                                  -	margin: 0.5em;
                                  -	padding: 0.4em 0.5em 0.4em 0.5em;
                                  -	background-color: #fff;
                                  -	border-bottom: none;
                                  -	list-style-position: inside;
                                  -}
                                  -
                                  -/*** Passing Styles */
                                  -
                                  -#qunit-tests li li.pass {
                                  -	color: #5E740B;
                                  -	background-color: #fff;
                                  -	border-left: 26px solid #C6E746;
                                  -}
                                  -
                                  -#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
                                  -#qunit-tests .pass .test-name               { color: #366097; }
                                  -
                                  -#qunit-tests .pass .test-actual,
                                  -#qunit-tests .pass .test-expected           { color: #999999; }
                                  -
                                  -#qunit-banner.qunit-pass                    { background-color: #C6E746; }
                                  -
                                  -/*** Failing Styles */
                                  -
                                  -#qunit-tests li li.fail {
                                  -	color: #710909;
                                  -	background-color: #fff;
                                  -	border-left: 26px solid #EE5757;
                                  -	white-space: pre;
                                  -}
                                  -
                                  -#qunit-tests > li:last-child {
                                  -	border-radius: 0 0 15px 15px;
                                  -	-moz-border-radius: 0 0 15px 15px;
                                  -	-webkit-border-bottom-right-radius: 15px;
                                  -	-webkit-border-bottom-left-radius: 15px;
                                  -}
                                  -
                                  -#qunit-tests .fail                          { color: #000000; background-color: #EE5757; }
                                  -#qunit-tests .fail .test-name,
                                  -#qunit-tests .fail .module-name             { color: #000000; }
                                  -
                                  -#qunit-tests .fail .test-actual             { color: #EE5757; }
                                  -#qunit-tests .fail .test-expected           { color: green;   }
                                  -
                                  -#qunit-banner.qunit-fail                    { background-color: #EE5757; }
                                  -
                                  -
                                  -/** Result */
                                  -
                                  -#qunit-testresult {
                                  -	padding: 0.5em 0.5em 0.5em 2.5em;
                                  -
                                  -	color: #2b81af;
                                  -	background-color: #D2E0E6;
                                  -
                                  -	border-bottom: 1px solid white;
                                  -}
                                  -
                                  -/** Fixture */
                                  -
                                  -#qunit-fixture {
                                  -	position: absolute;
                                  -	top: -10000px;
                                  -	left: -10000px;
                                  -}
                                  -
                                  -/* ============================================================================================== */
                                  -/* ============================================================================================== */
                                  -
                                  -/*
                                  -// <copyright project "Salient.QualityControl" file="qunit.runner.css" company="Sky Sanders">
                                  -// This source is a Public Domain Dedication.
                                  -// http://salientqc.codeplex.com
                                  -// Attribution is appreciated.
                                  -// </copyright>
                                  -*/
                                  -
                                  -/* this file can be added to qunit.css to simplify deployment */
                                  -
                                  -#qunit-runner-banner {
                                  -	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
                                  -	margin: 0;
                                  -	padding: 0;
                                  -	height: 5px;
                                  -}
                                  -#qunit-runner-banner.qunit-pass { background-color: #C6E746; }
                                  -#qunit-runner-banner.qunit-fail { background-color: #EE5757; }
                                  -.runner-test-page-counter
                                  -{
                                  -    font-size: 110%;
                                  -}
                                  -.runner-test-page-header
                                  -{
                                  -    position: relative;
                                  -    font-family: "Helvetica Neue Light" , "HelveticaNeue-Light" , "Helvetica Neue" , Calibri, Helvetica, Arial;
                                  -    list-style-position: inside;
                                  -    font-size: small;
                                  -    padding: 5px 10px;
                                  -    cursor: pointer;
                                  -    margin: 1px;
                                  -}
                                  -.runner-test-page-header.failed, 
                                  -.runner-test-page-header.failed a, 
                                  -.runner-test-page-header.failed a:hover,
                                  -.runner-test-page-header.failed a:visited
                                  -{
                                  -    background-color: #EE5757;
                                  -    color: #000000;
                                  -}
                                  -.runner-test-page-header.passed,
                                  -.runner-test-page-header.passed a, 
                                  -.runner-test-page-header.passed a:hover,
                                  -.runner-test-page-header.passed a:visited
                                  -{
                                  -    background-color: #D2E0E6;
                                  -    color: #528CE0;
                                  -}
                                  -.runner-test-page-frame
                                  -{
                                  -    display: block;
                                  -    margin: 0;
                                  -    background-color: #F4F4F8;
                                  -    visibility: hidden;
                                  -    position: absolute;
                                  -    border: 2px solid #0D3349;
                                  -    width: 864px;
                                  -    height: 480px;
                                  -}
                                  -.failed+.runner-test-page-frame {
                                  -    border-color: #EE5757;
                                  -}
                                  -h2#qunit-runner-userAgent
                                  -{
                                  -    font-family: "Helvetica Neue Light" , "HelveticaNeue-Light" , "Helvetica Neue" , Calibri, Helvetica, Arial;
                                  -    background-color: #2b81af;
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    color: #fff;
                                  -    font-size: small;
                                  -    padding: 0.5em 0 0.5em 2.5em;
                                  -    text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
                                  -}
                                  -#runner-test-page-container {
                                  -    border: 1px solid #D2E0E6;
                                  -    border-width: 0 1px;
                                  -}
                                  -.runner-test-page-header {
                                  -    margin: 1px 0;
                                  -    line-height: 19px;
                                  -}
                                  -
                                  -#runner-test-page body {
                                  -    background: #EAF0FF;
                                  -}
                                  -#runner-test-page #main {
                                  -    width: 770px;
                                  -}
                                  -#runner-test-page #qunit-header {
                                  -    margin: 0;
                                  -    font-size: 16px;
                                  -}
                                  -#runner-test-page #qunit-userAgent {
                                  -    display: none;
                                  -}
                                  -#runner-test-page #fbtest-toolbar {
                                  -    display: none;
                                  -}
                                  -.fbtest-toolbar-separator {
                                  -    font-family: serif;
                                  -}
                                  -#runner-result {
                                  -    background-color: #D2E0E6;
                                  -    color: #2B81AF;
                                  -    padding: 0.5em 0.5em 0.5em 2.5em;
                                  -    font-size: small;
                                  -    margin: 0;
                                  -    font-family: "Helvetica Neue Light","HelveticaNeue-Light","Helvetica Neue",Calibri,Helvetica,Arial;    
                                  -}
                                  -
                                  -.runner-fullscreen-view body {
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.runner-fullscreen-view #runner-test-page-frame-fullscreen {
                                  -    border-width: 0;
                                  -    display: block !important;
                                  -    position: fixed !important;
                                  -    visibility: visible !important;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    z-index: 1000000;
                                  -}
                                  -
                                  -#runner-close-fullscreen-view {
                                  -    background: none repeat scroll 0 0 #ff7;
                                  -    border: 1px solid #dd9;
                                  -    border-radius: 0 0 0 11px;
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    font-size: 16px;
                                  -    padding: 4px 10px;
                                  -    position: fixed;
                                  -    right: 0;
                                  -    top: 0;
                                  -    z-index: 1000001;
                                  -}
                                  -
                                  -.runner-fullscreen-view #runner-close-fullscreen-view {
                                  -    display: block;
                                  -}
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/fbtest/fbtest.js b/branches/flexBox/tests/fbtest/fbtest.js
                                  deleted file mode 100644
                                  index 03be58da..00000000
                                  --- a/branches/flexBox/tests/fbtest/fbtest.js
                                  +++ /dev/null
                                  @@ -1,2457 +0,0 @@
                                  -/*
                                  -TODO
                                  -    - separate tests by groups. able to run groups individually.
                                  -    - submit results? browserscope?
                                  - */
                                  -
                                  -/**
                                  - * QUnit - A JavaScript Unit Testing Framework
                                  - *
                                  - * http://docs.jquery.com/QUnit
                                  - *
                                  - * Copyright (c) 2011 John Resig, Jörn Zaefferer
                                  - * Dual licensed under the MIT (MIT-LICENSE.txt)
                                  - * or GPL (GPL-LICENSE.txt) licenses.
                                  - */
                                  -
                                  -(function(window) {
                                  -
                                  -var defined = {
                                  -    setTimeout: typeof window.setTimeout !== "undefined",
                                  -    sessionStorage: (function() {
                                  -        try {
                                  -            return !!sessionStorage.getItem;
                                  -        } catch(e) {
                                  -            return false;
                                  -        }
                                  -    })()
                                  -};
                                  -
                                  -var testId = 0;
                                  -
                                  -var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
                                  -    this.name = name;
                                  -    this.testName = testName;
                                  -    this.expected = expected;
                                  -    this.testEnvironmentArg = testEnvironmentArg;
                                  -    this.async = async;
                                  -    this.callback = callback;
                                  -    this.assertions = [];
                                  -};
                                  -Test.prototype = {
                                  -    init: function() {
                                  -        var tests = id("qunit-tests");
                                  -        if (tests) {
                                  -            var b = document.createElement("strong");
                                  -                b.innerHTML = "Running " + this.name;
                                  -            var li = document.createElement("li");
                                  -                li.appendChild( b );
                                  -                li.className = "running";
                                  -                li.id = this.id = "test-output" + testId++;
                                  -            tests.appendChild( li );
                                  -        }
                                  -    },
                                  -    setup: function() {
                                  -        if (this.module != config.previousModule) {
                                  -            if ( config.previousModule ) {
                                  -                QUnit.moduleDone( {
                                  -                    name: config.previousModule,
                                  -                    failed: config.moduleStats.bad,
                                  -                    passed: config.moduleStats.all - config.moduleStats.bad,
                                  -                    total: config.moduleStats.all
                                  -                } );
                                  -            }
                                  -            config.previousModule = this.module;
                                  -            config.moduleStats = { all: 0, bad: 0 };
                                  -            QUnit.moduleStart( {
                                  -                name: this.module
                                  -            } );
                                  -        }
                                  -
                                  -        config.current = this;
                                  -        this.testEnvironment = extend({
                                  -            setup: function() {},
                                  -            teardown: function() {}
                                  -        }, this.moduleTestEnvironment);
                                  -        if (this.testEnvironmentArg) {
                                  -            extend(this.testEnvironment, this.testEnvironmentArg);
                                  -        }
                                  -
                                  -        QUnit.testStart( {
                                  -            name: this.testName
                                  -        } );
                                  -
                                  -        // allow utility functions to access the current test environment
                                  -        // TODO why??
                                  -        QUnit.current_testEnvironment = this.testEnvironment;
                                  -
                                  -        try {
                                  -            if ( !config.pollution ) {
                                  -                saveGlobal();
                                  -            }
                                  -
                                  -            this.testEnvironment.setup.call(this.testEnvironment);
                                  -        } catch(e) {
                                  -            QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
                                  -        }
                                  -    },
                                  -    run: function() {
                                  -        if ( this.async ) {
                                  -            QUnit.stop();
                                  -        }
                                  -
                                  -        if ( config.notrycatch ) {
                                  -            this.callback.call(this.testEnvironment);
                                  -            return;
                                  -        }
                                  -        try {
                                  -            this.callback.call(this.testEnvironment);
                                  -        } catch(e) {
                                  -            fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
                                  -            QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
                                  -            // else next test will carry the responsibility
                                  -            saveGlobal();
                                  -
                                  -            // Restart the tests if they're blocking
                                  -            if ( config.blocking ) {
                                  -                start();
                                  -            }
                                  -        }
                                  -    },
                                  -    teardown: function() {
                                  -        try {
                                  -            this.testEnvironment.teardown.call(this.testEnvironment);
                                  -            checkPollution();
                                  -        } catch(e) {
                                  -            QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
                                  -        }
                                  -    },
                                  -    finish: function() {
                                  -        if ( this.expected && this.expected != this.assertions.length ) {
                                  -            QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
                                  -        }
                                  -
                                  -        var good = 0, bad = 0,
                                  -            tests = id("qunit-tests");
                                  -
                                  -        config.stats.all += this.assertions.length;
                                  -        config.moduleStats.all += this.assertions.length;
                                  -
                                  -        if ( tests ) {
                                  -            var ol = document.createElement("ol");
                                  -
                                  -            for ( var i = 0; i < this.assertions.length; i++ ) {
                                  -                var assertion = this.assertions[i];
                                  -
                                  -                var li = document.createElement("li");
                                  -                li.className = assertion.result ? "pass" : "fail";
                                  -                li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
                                  -                ol.appendChild( li );
                                  -
                                  -                if ( assertion.result ) {
                                  -                    good++;
                                  -                } else {
                                  -                    bad++;
                                  -                    config.stats.bad++;
                                  -                    config.moduleStats.bad++;
                                  -                }
                                  -            }
                                  -
                                  -            // store result when possible
                                  -            if ( QUnit.config.reorder && defined.sessionStorage ) {
                                  -                if (bad) {
                                  -                    sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad);
                                  -                } else {
                                  -                    sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName);
                                  -                }
                                  -            }
                                  -
                                  -            if (bad == 0) {
                                  -                ol.style.display = "none";
                                  -            }
                                  -
                                  -            var b = document.createElement("strong");
                                  -            b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
                                  -
                                  -            var a = document.createElement("a");
                                  -            a.innerHTML = "Rerun";
                                  -            a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
                                  -
                                  -            addEvent(b, "click", function() {
                                  -                var next = b.nextSibling.nextSibling,
                                  -                    display = next.style.display;
                                  -                next.style.display = display === "none" ? "block" : "none";
                                  -            });
                                  -
                                  -            addEvent(b, "dblclick", function(e) {
                                  -                var target = e && e.target ? e.target : window.event.srcElement;
                                  -                if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
                                  -                    target = target.parentNode;
                                  -                }
                                  -                if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
                                  -                    window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
                                  -                }
                                  -            });
                                  -
                                  -            var li = id(this.id);
                                  -            li.className = bad ? "fail" : "pass";
                                  -            li.removeChild( li.firstChild );
                                  -            li.appendChild( b );
                                  -            li.appendChild( a );
                                  -            li.appendChild( ol );
                                  -
                                  -        } else {
                                  -            for ( var i = 0; i < this.assertions.length; i++ ) {
                                  -                if ( !this.assertions[i].result ) {
                                  -                    bad++;
                                  -                    config.stats.bad++;
                                  -                    config.moduleStats.bad++;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        try {
                                  -            QUnit.reset();
                                  -        } catch(e) {
                                  -            fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
                                  -        }
                                  -
                                  -        QUnit.testDone( {
                                  -            name: this.testName,
                                  -            failed: bad,
                                  -            passed: this.assertions.length - bad,
                                  -            total: this.assertions.length
                                  -        } );
                                  -    },
                                  -
                                  -    queue: function() {
                                  -        var test = this;
                                  -        synchronize(function() {
                                  -            test.init();
                                  -        });
                                  -        function run() {
                                  -            // each of these can by async
                                  -            synchronize(function() {
                                  -                test.setup();
                                  -            });
                                  -            synchronize(function() {
                                  -                test.run();
                                  -            });
                                  -            synchronize(function() {
                                  -                test.teardown();
                                  -            });
                                  -            synchronize(function() {
                                  -                test.finish();
                                  -            });
                                  -        }
                                  -        // defer when previous test run passed, if storage is available
                                  -        var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName);
                                  -        if (bad) {
                                  -            run();
                                  -        } else {
                                  -            synchronize(run);
                                  -        };
                                  -    }
                                  -
                                  -};
                                  -
                                  -var QUnit = {
                                  -
                                  -    // call on start of module test to prepend name to all tests
                                  -    module: function(name, testEnvironment) {
                                  -        config.currentModule = name;
                                  -        config.currentModuleTestEnviroment = testEnvironment;
                                  -    },
                                  -
                                  -    asyncTest: function(testName, expected, callback) {
                                  -        if ( arguments.length === 2 ) {
                                  -            callback = expected;
                                  -            expected = 0;
                                  -        }
                                  -
                                  -        QUnit.test(testName, expected, callback, true);
                                  -    },
                                  -
                                  -    test: function(testName, expected, callback, async) {
                                  -        var name = '<span class="test-name">' + testName + '</span>', testEnvironmentArg;
                                  -
                                  -        if ( arguments.length === 2 ) {
                                  -            callback = expected;
                                  -            expected = null;
                                  -        }
                                  -        // is 2nd argument a testEnvironment?
                                  -        if ( expected && typeof expected === 'object') {
                                  -            testEnvironmentArg = expected;
                                  -            expected = null;
                                  -        }
                                  -
                                  -        if ( config.currentModule ) {
                                  -            name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
                                  -        }
                                  -
                                  -        if ( !validTest(config.currentModule + ": " + testName) ) {
                                  -            return;
                                  -        }
                                  -
                                  -        var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
                                  -        test.module = config.currentModule;
                                  -        test.moduleTestEnvironment = config.currentModuleTestEnviroment;
                                  -        test.queue();
                                  -    },
                                  -
                                  -    /**
                                  -     * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
                                  -     */
                                  -    expect: function(asserts) {
                                  -        config.current.expected = asserts;
                                  -    },
                                  -
                                  -    /**
                                  -     * Asserts true.
                                  -     * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
                                  -     */
                                  -    ok: function(a, msg) {
                                  -        a = !!a;
                                  -        var details = {
                                  -            result: a,
                                  -            message: msg
                                  -        };
                                  -        msg = escapeHtml(msg);
                                  -        QUnit.log(details);
                                  -        config.current.assertions.push({
                                  -            result: a,
                                  -            message: msg
                                  -        });
                                  -    },
                                  -
                                  -    /**
                                  -     * Checks that the first two arguments are equal, with an optional message.
                                  -     * Prints out both actual and expected values.
                                  -     *
                                  -     * Prefered to ok( actual == expected, message )
                                  -     *
                                  -     * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
                                  -     *
                                  -     * @param Object actual
                                  -     * @param Object expected
                                  -     * @param String message (optional)
                                  -     */
                                  -    equal: function(actual, expected, message) {
                                  -        QUnit.push(expected == actual, actual, expected, message);
                                  -    },
                                  -
                                  -    notEqual: function(actual, expected, message) {
                                  -        QUnit.push(expected != actual, actual, expected, message);
                                  -    },
                                  -
                                  -    deepEqual: function(actual, expected, message) {
                                  -        QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
                                  -    },
                                  -
                                  -    notDeepEqual: function(actual, expected, message) {
                                  -        QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
                                  -    },
                                  -
                                  -    strictEqual: function(actual, expected, message) {
                                  -        QUnit.push(expected === actual, actual, expected, message);
                                  -    },
                                  -
                                  -    notStrictEqual: function(actual, expected, message) {
                                  -        QUnit.push(expected !== actual, actual, expected, message);
                                  -    },
                                  -
                                  -    raises: function(block, expected, message) {
                                  -        var actual, ok = false;
                                  -
                                  -        if (typeof expected === 'string') {
                                  -            message = expected;
                                  -            expected = null;
                                  -        }
                                  -
                                  -        try {
                                  -            block();
                                  -        } catch (e) {
                                  -            actual = e;
                                  -        }
                                  -
                                  -        if (actual) {
                                  -            // we don't want to validate thrown error
                                  -            if (!expected) {
                                  -                ok = true;
                                  -            // expected is a regexp
                                  -            } else if (QUnit.objectType(expected) === "regexp") {
                                  -                ok = expected.test(actual);
                                  -            // expected is a constructor
                                  -            } else if (actual instanceof expected) {
                                  -                ok = true;
                                  -            // expected is a validation function which returns true is validation passed
                                  -            } else if (expected.call({}, actual) === true) {
                                  -                ok = true;
                                  -            }
                                  -        }
                                  -
                                  -        QUnit.ok(ok, message);
                                  -    },
                                  -
                                  -    start: function() {
                                  -        config.semaphore--;
                                  -        if (config.semaphore > 0) {
                                  -            // don't start until equal number of stop-calls
                                  -            return;
                                  -        }
                                  -        if (config.semaphore < 0) {
                                  -            // ignore if start is called more often then stop
                                  -            config.semaphore = 0;
                                  -        }
                                  -        // A slight delay, to avoid any current callbacks
                                  -        if ( defined.setTimeout ) {
                                  -            window.setTimeout(function() {
                                  -                if (config.semaphore > 0) {
                                  -                    return;
                                  -                }
                                  -                if ( config.timeout ) {
                                  -                    clearTimeout(config.timeout);
                                  -                }
                                  -
                                  -                config.blocking = false;
                                  -                process();
                                  -            }, 13);
                                  -        } else {
                                  -            config.blocking = false;
                                  -            process();
                                  -        }
                                  -    },
                                  -
                                  -    stop: function(timeout) {
                                  -        config.semaphore++;
                                  -        config.blocking = true;
                                  -
                                  -        if ( timeout && defined.setTimeout ) {
                                  -            clearTimeout(config.timeout);
                                  -            config.timeout = window.setTimeout(function() {
                                  -                QUnit.ok( false, "Test timed out" );
                                  -                QUnit.start();
                                  -            }, timeout);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// Backwards compatibility, deprecated
                                  -QUnit.equals = QUnit.equal;
                                  -QUnit.same = QUnit.deepEqual;
                                  -
                                  -// Maintain internal state
                                  -var config = {
                                  -    // The queue of tests to run
                                  -    queue: [],
                                  -
                                  -    // block until document ready
                                  -    blocking: true,
                                  -
                                  -    // when enabled, show only failing tests
                                  -    // gets persisted through sessionStorage and can be changed in UI via checkbox
                                  -    hidepassed: false,
                                  -
                                  -    // by default, run previously failed tests first
                                  -    // very useful in combination with "Hide passed tests" checked
                                  -    reorder: true,
                                  -
                                  -    // by default, modify document.title when suite is done
                                  -    altertitle: true,
                                  -
                                  -    urlConfig: ['noglobals', 'notrycatch']
                                  -};
                                  -
                                  -// Load paramaters
                                  -(function() {
                                  -    var location = window.location || { search: "", protocol: "file:" },
                                  -        params = location.search.slice( 1 ).split( "&" ),
                                  -        length = params.length,
                                  -        urlParams = {},
                                  -        current;
                                  -
                                  -    if ( params[ 0 ] ) {
                                  -        for ( var i = 0; i < length; i++ ) {
                                  -            current = params[ i ].split( "=" );
                                  -            current[ 0 ] = decodeURIComponent( current[ 0 ] );
                                  -            // allow just a key to turn on a flag, e.g., test.html?noglobals
                                  -            current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
                                  -            urlParams[ current[ 0 ] ] = current[ 1 ];
                                  -        }
                                  -    }
                                  -
                                  -    QUnit.urlParams = urlParams;
                                  -    config.filter = urlParams.filter;
                                  -
                                  -    // Figure out if we're running the tests from a server or not
                                  -    QUnit.isLocal = !!(location.protocol === 'file:');
                                  -})();
                                  -
                                  -// Expose the API as global variables, unless an 'exports'
                                  -// object exists, in that case we assume we're in CommonJS
                                  -if ( typeof exports === "undefined" || typeof require === "undefined" ) {
                                  -    extend(window, QUnit);
                                  -    window.QUnit = QUnit;
                                  -} else {
                                  -    extend(exports, QUnit);
                                  -    exports.QUnit = QUnit;
                                  -}
                                  -
                                  -// define these after exposing globals to keep them in these QUnit namespace only
                                  -extend(QUnit, {
                                  -    config: config,
                                  -
                                  -    // Initialize the configuration options
                                  -    init: function() {
                                  -        extend(config, {
                                  -            stats: { all: 0, bad: 0 },
                                  -            moduleStats: { all: 0, bad: 0 },
                                  -            started: +new Date,
                                  -            updateRate: 1000,
                                  -            blocking: false,
                                  -            autostart: true,
                                  -            autorun: false,
                                  -            filter: "",
                                  -            queue: [],
                                  -            semaphore: 0
                                  -        });
                                  -
                                  -        var tests = id( "qunit-tests" ),
                                  -            banner = id( "qunit-banner" ),
                                  -            result = id( "qunit-testresult" );
                                  -
                                  -        if ( tests ) {
                                  -            tests.innerHTML = "";
                                  -        }
                                  -
                                  -        if ( banner ) {
                                  -            banner.className = "";
                                  -        }
                                  -
                                  -        if ( result ) {
                                  -            result.parentNode.removeChild( result );
                                  -        }
                                  -
                                  -        if ( tests ) {
                                  -            result = document.createElement( "p" );
                                  -            result.id = "qunit-testresult";
                                  -            result.className = "result";
                                  -            tests.parentNode.insertBefore( result, tests );
                                  -            result.innerHTML = 'Running...<br/>&nbsp;';
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Resets the test setup. Useful for tests that modify the DOM.
                                  -     *
                                  -     * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
                                  -     */
                                  -    reset: function() {
                                  -        if ( window.jQuery ) {
                                  -            jQuery( "#qunit-fixture" ).html( config.fixture );
                                  -        } else {
                                  -            var main = id( 'qunit-fixture' );
                                  -            if ( main ) {
                                  -                main.innerHTML = config.fixture;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Trigger an event on an element.
                                  -     *
                                  -     * @example triggerEvent( document.body, "click" );
                                  -     *
                                  -     * @param DOMElement elem
                                  -     * @param String type
                                  -     */
                                  -    triggerEvent: function( elem, type, event ) {
                                  -        if ( document.createEvent ) {
                                  -            event = document.createEvent("MouseEvents");
                                  -            event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
                                  -                0, 0, 0, 0, 0, false, false, false, false, 0, null);
                                  -            elem.dispatchEvent( event );
                                  -
                                  -        } else if ( elem.fireEvent ) {
                                  -            elem.fireEvent("on"+type);
                                  -        }
                                  -    },
                                  -
                                  -    // Safe object type checking
                                  -    is: function( type, obj ) {
                                  -        return QUnit.objectType( obj ) == type;
                                  -    },
                                  -
                                  -    objectType: function( obj ) {
                                  -        if (typeof obj === "undefined") {
                                  -                return "undefined";
                                  -
                                  -        // consider: typeof null === object
                                  -        }
                                  -        if (obj === null) {
                                  -                return "null";
                                  -        }
                                  -
                                  -        var type = Object.prototype.toString.call( obj )
                                  -            .match(/^\[object\s(.*)\]$/)[1] || '';
                                  -
                                  -        switch (type) {
                                  -                case 'Number':
                                  -                        if (isNaN(obj)) {
                                  -                                return "nan";
                                  -                        } else {
                                  -                                return "number";
                                  -                        }
                                  -                case 'String':
                                  -                case 'Boolean':
                                  -                case 'Array':
                                  -                case 'Date':
                                  -                case 'RegExp':
                                  -                case 'Function':
                                  -                        return type.toLowerCase();
                                  -        }
                                  -        if (typeof obj === "object") {
                                  -                return "object";
                                  -        }
                                  -        return undefined;
                                  -    },
                                  -
                                  -    push: function(result, actual, expected, message) {
                                  -        var details = {
                                  -            result: result,
                                  -            message: message,
                                  -            actual: actual,
                                  -            expected: expected
                                  -        };
                                  -
                                  -        message = escapeHtml(message) || (result ? "okay" : "failed");
                                  -        message = '<span class="test-message">' + message + "</span>";
                                  -        expected = escapeHtml(QUnit.jsDump.parse(expected));
                                  -        actual = escapeHtml(QUnit.jsDump.parse(actual));
                                  -        var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
                                  -        if (actual != expected) {
                                  -            output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
                                  -            output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
                                  -        }
                                  -        if (!result) {
                                  -            var source = sourceFromStacktrace();
                                  -            if (source) {
                                  -                details.source = source;
                                  -                output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeHtml(source) + '</pre></td></tr>';
                                  -            }
                                  -        }
                                  -        output += "</table>";
                                  -
                                  -        QUnit.log(details);
                                  -
                                  -        config.current.assertions.push({
                                  -            result: !!result,
                                  -            message: output
                                  -        });
                                  -    },
                                  -
                                  -    url: function( params ) {
                                  -        params = extend( extend( {}, QUnit.urlParams ), params );
                                  -        var querystring = "?",
                                  -            key;
                                  -        for ( key in params ) {
                                  -            querystring += encodeURIComponent( key ) + "=" +
                                  -                encodeURIComponent( params[ key ] ) + "&";
                                  -        }
                                  -        return window.location.pathname + querystring.slice( 0, -1 );
                                  -    },
                                  -
                                  -    extend: extend,
                                  -    id: id,
                                  -    addEvent: addEvent,
                                  -
                                  -    // Logging callbacks; all receive a single argument with the listed properties
                                  -    // run test/logs.html for any related changes
                                  -    begin: function() {},
                                  -    // done: { failed, passed, total, runtime }
                                  -    done: function() {},
                                  -    // log: { result, actual, expected, message }
                                  -    log: function() {},
                                  -    // testStart: { name }
                                  -    testStart: function() {},
                                  -    // testDone: { name, failed, passed, total }
                                  -    testDone: function() {},
                                  -    // moduleStart: { name }
                                  -    moduleStart: function() {},
                                  -    // moduleDone: { name, failed, passed, total }
                                  -    moduleDone: function() {}
                                  -});
                                  -
                                  -if ( typeof document === "undefined" || document.readyState === "complete" ) {
                                  -    config.autorun = true;
                                  -}
                                  -
                                  -QUnit.load = function() {
                                  -    QUnit.begin({});
                                  -
                                  -    // Initialize the config, saving the execution queue
                                  -    var oldconfig = extend({}, config);
                                  -    QUnit.init();
                                  -    extend(config, oldconfig);
                                  -
                                  -    config.blocking = false;
                                  -
                                  -    var urlConfigHtml = '', len = config.urlConfig.length;
                                  -    for ( var i = 0, val; i < len, val = config.urlConfig[i]; i++ ) {
                                  -        config[val] = QUnit.urlParams[val];
                                  -        urlConfigHtml += '<label><input name="' + val + '" type="checkbox"' + ( config[val] ? ' checked="checked"' : '' ) + '>' + val + '</label>';
                                  -    }
                                  -
                                  -    var userAgent = id("qunit-userAgent");
                                  -    if ( userAgent ) {
                                  -        userAgent.innerHTML = navigator.userAgent;
                                  -    }
                                  -    var banner = id("qunit-header");
                                  -    if ( banner ) {
                                  -        banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;
                                  -        addEvent( banner, "change", function( event ) {
                                  -            var params = {};
                                  -            params[ event.target.name ] = event.target.checked ? true : undefined;
                                  -            window.location = QUnit.url( params );
                                  -        });
                                  -    }
                                  -
                                  -    var toolbar = id("qunit-testrunner-toolbar");
                                  -    if ( toolbar ) {
                                  -        var filter = document.createElement("input");
                                  -        filter.type = "checkbox";
                                  -        filter.id = "qunit-filter-pass";
                                  -        addEvent( filter, "click", function() {
                                  -            var ol = document.getElementById("qunit-tests");
                                  -            if ( filter.checked ) {
                                  -                ol.className = ol.className + " hidepass";
                                  -            } else {
                                  -                var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
                                  -                ol.className = tmp.replace(/ hidepass /, " ");
                                  -            }
                                  -            if ( defined.sessionStorage ) {
                                  -                if (filter.checked) {
                                  -                    sessionStorage.setItem("qunit-filter-passed-tests", "true");
                                  -                } else {
                                  -                    sessionStorage.removeItem("qunit-filter-passed-tests");
                                  -                }
                                  -            }
                                  -        });
                                  -        if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
                                  -            filter.checked = true;
                                  -            var ol = document.getElementById("qunit-tests");
                                  -            ol.className = ol.className + " hidepass";
                                  -        }
                                  -        toolbar.appendChild( filter );
                                  -
                                  -        var label = document.createElement("label");
                                  -        label.setAttribute("for", "qunit-filter-pass");
                                  -        label.innerHTML = "Hide passed tests";
                                  -        toolbar.appendChild( label );
                                  -    }
                                  -
                                  -    var main = id('qunit-fixture');
                                  -    if ( main ) {
                                  -        config.fixture = main.innerHTML;
                                  -    }
                                  -
                                  -    if (config.autostart) {
                                  -        QUnit.start();
                                  -    }
                                  -};
                                  -
                                  -addEvent(window, "load", QUnit.load);
                                  -
                                  -function done() {
                                  -    config.autorun = true;
                                  -
                                  -    // Log the last module results
                                  -    if ( config.currentModule ) {
                                  -        QUnit.moduleDone( {
                                  -            name: config.currentModule,
                                  -            failed: config.moduleStats.bad,
                                  -            passed: config.moduleStats.all - config.moduleStats.bad,
                                  -            total: config.moduleStats.all
                                  -        } );
                                  -    }
                                  -
                                  -    var banner = id("qunit-banner"),
                                  -        tests = id("qunit-tests"),
                                  -        runtime = +new Date - config.started,
                                  -        passed = config.stats.all - config.stats.bad,
                                  -        html = [
                                  -            'Tests completed in ',
                                  -            runtime,
                                  -            ' milliseconds.<br/>',
                                  -            '<span class="passed">',
                                  -            passed,
                                  -            '</span> tests of <span class="total">',
                                  -            config.stats.all,
                                  -            '</span> passed, <span class="failed">',
                                  -            config.stats.bad,
                                  -            '</span> failed.'
                                  -        ].join('');
                                  -
                                  -    if ( banner ) {
                                  -        banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
                                  -    }
                                  -
                                  -    if ( tests ) {
                                  -        id( "qunit-testresult" ).innerHTML = html;
                                  -    }
                                  -
                                  -    if ( config.altertitle && typeof document !== "undefined" && document.title ) {
                                  -        // show ✖ for good, ✔ for bad suite result in title
                                  -        // use escape sequences in case file gets loaded with non-utf-8-charset
                                  -        document.title = [
                                  -            (config.stats.bad ? "\u2716" : "\u2714"),
                                  -            document.title.replace(/^[\u2714\u2716] /i, "")
                                  -        ].join(" ");
                                  -    }
                                  -
                                  -    QUnit.done( {
                                  -        failed: config.stats.bad,
                                  -        passed: passed,
                                  -        total: config.stats.all,
                                  -        runtime: runtime
                                  -    } );
                                  -}
                                  -
                                  -function validTest( name ) {
                                  -    var filter = config.filter,
                                  -        run = false;
                                  -
                                  -    if ( !filter ) {
                                  -        return true;
                                  -    }
                                  -
                                  -    var not = filter.charAt( 0 ) === "!";
                                  -    if ( not ) {
                                  -        filter = filter.slice( 1 );
                                  -    }
                                  -
                                  -    if ( name.indexOf( filter ) !== -1 ) {
                                  -        return !not;
                                  -    }
                                  -
                                  -    if ( not ) {
                                  -        run = true;
                                  -    }
                                  -
                                  -    return run;
                                  -}
                                  -
                                  -// so far supports only Firefox, Chrome and Opera (buggy)
                                  -// could be extended in the future to use something like https://github.com/csnover/TraceKit
                                  -function sourceFromStacktrace() {
                                  -    try {
                                  -        throw new Error();
                                  -    } catch ( e ) {
                                  -        if (e.stacktrace) {
                                  -            // Opera
                                  -            return e.stacktrace.split("\n")[6];
                                  -        } else if (e.stack) {
                                  -            // Firefox, Chrome
                                  -            return e.stack.split("\n")[4];
                                  -        } else if (e.sourceURL) {
                                  -            // Safari, PhantomJS
                                  -            // TODO sourceURL points at the 'throw new Error' line above, useless
                                  -            //return e.sourceURL + ":" + e.line;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function escapeHtml(s) {
                                  -    if (!s) {
                                  -        return "";
                                  -    }
                                  -    s = s + "";
                                  -    return s.replace(/[\&"<>\\]/g, function(s) {
                                  -        switch(s) {
                                  -            case "&": return "&amp;";
                                  -            case "\\": return "\\\\";
                                  -            case '"': return '\"';
                                  -            case "<": return "&lt;";
                                  -            case ">": return "&gt;";
                                  -            default: return s;
                                  -        }
                                  -    });
                                  -}
                                  -
                                  -function synchronize( callback ) {
                                  -    config.queue.push( callback );
                                  -
                                  -    if ( config.autorun && !config.blocking ) {
                                  -        process();
                                  -    }
                                  -}
                                  -
                                  -function process() {
                                  -    var start = (new Date()).getTime();
                                  -
                                  -    while ( config.queue.length && !config.blocking ) {
                                  -        if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
                                  -            config.queue.shift()();
                                  -        } else {
                                  -            window.setTimeout( process, 13 );
                                  -            break;
                                  -        }
                                  -    }
                                  -    if (!config.blocking && !config.queue.length) {
                                  -        done();
                                  -    }
                                  -}
                                  -
                                  -function saveGlobal() {
                                  -    config.pollution = [];
                                  -
                                  -    if ( config.noglobals ) {
                                  -        for ( var key in window ) {
                                  -            config.pollution.push( key );
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function checkPollution( name ) {
                                  -    var old = config.pollution;
                                  -    saveGlobal();
                                  -
                                  -    var newGlobals = diff( config.pollution, old );
                                  -    if ( newGlobals.length > 0 ) {
                                  -        ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
                                  -    }
                                  -
                                  -    var deletedGlobals = diff( old, config.pollution );
                                  -    if ( deletedGlobals.length > 0 ) {
                                  -        ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
                                  -    }
                                  -}
                                  -
                                  -// returns a new Array with the elements that are in a but not in b
                                  -function diff( a, b ) {
                                  -    var result = a.slice();
                                  -    for ( var i = 0; i < result.length; i++ ) {
                                  -        for ( var j = 0; j < b.length; j++ ) {
                                  -            if ( result[i] === b[j] ) {
                                  -                result.splice(i, 1);
                                  -                i--;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -    return result;
                                  -}
                                  -
                                  -function fail(message, exception, callback) {
                                  -    if ( typeof console !== "undefined" && console.error && console.warn ) {
                                  -        console.error(message);
                                  -        console.error(exception);
                                  -        console.warn(callback.toString());
                                  -
                                  -    } else if ( window.opera && opera.postError ) {
                                  -        opera.postError(message, exception, callback.toString);
                                  -    }
                                  -}
                                  -
                                  -function extend(a, b) {
                                  -    for ( var prop in b ) {
                                  -        if ( b[prop] === undefined ) {
                                  -            delete a[prop];
                                  -        } else {
                                  -            a[prop] = b[prop];
                                  -        }
                                  -    }
                                  -
                                  -    return a;
                                  -}
                                  -
                                  -function addEvent(elem, type, fn) {
                                  -    if ( elem.addEventListener ) {
                                  -        elem.addEventListener( type, fn, false );
                                  -    } else if ( elem.attachEvent ) {
                                  -        elem.attachEvent( "on" + type, fn );
                                  -    } else {
                                  -        fn();
                                  -    }
                                  -}
                                  -
                                  -function id(name) {
                                  -    return !!(typeof document !== "undefined" && document && document.getElementById) &&
                                  -        document.getElementById( name );
                                  -}
                                  -
                                  -// Test for equality any JavaScript type.
                                  -// Discussions and reference: http://philrathe.com/articles/equiv
                                  -// Test suites: http://philrathe.com/tests/equiv
                                  -// Author: Philippe Rathé <prathe@gmail.com>
                                  -QUnit.equiv = function () {
                                  -
                                  -    var innerEquiv; // the real equiv function
                                  -    var callers = []; // stack to decide between skip/abort functions
                                  -    var parents = []; // stack to avoiding loops from circular referencing
                                  -
                                  -    // Call the o related callback with the given arguments.
                                  -    function bindCallbacks(o, callbacks, args) {
                                  -        var prop = QUnit.objectType(o);
                                  -        if (prop) {
                                  -            if (QUnit.objectType(callbacks[prop]) === "function") {
                                  -                return callbacks[prop].apply(callbacks, args);
                                  -            } else {
                                  -                return callbacks[prop]; // or undefined
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    var callbacks = function () {
                                  -
                                  -        // for string, boolean, number and null
                                  -        function useStrictEquality(b, a) {
                                  -            if (b instanceof a.constructor || a instanceof b.constructor) {
                                  -                // to catch short annotaion VS 'new' annotation of a
                                  -                // declaration
                                  -                // e.g. var i = 1;
                                  -                // var j = new Number(1);
                                  -                return a == b;
                                  -            } else {
                                  -                return a === b;
                                  -            }
                                  -        }
                                  -
                                  -        return {
                                  -            "string" : useStrictEquality,
                                  -            "boolean" : useStrictEquality,
                                  -            "number" : useStrictEquality,
                                  -            "null" : useStrictEquality,
                                  -            "undefined" : useStrictEquality,
                                  -
                                  -            "nan" : function(b) {
                                  -                return isNaN(b);
                                  -            },
                                  -
                                  -            "date" : function(b, a) {
                                  -                return QUnit.objectType(b) === "date"
                                  -                        && a.valueOf() === b.valueOf();
                                  -            },
                                  -
                                  -            "regexp" : function(b, a) {
                                  -                return QUnit.objectType(b) === "regexp"
                                  -                        && a.source === b.source && // the regex itself
                                  -                        a.global === b.global && // and its modifers
                                  -                                                    // (gmi) ...
                                  -                        a.ignoreCase === b.ignoreCase
                                  -                        && a.multiline === b.multiline;
                                  -            },
                                  -
                                  -            // - skip when the property is a method of an instance (OOP)
                                  -            // - abort otherwise,
                                  -            // initial === would have catch identical references anyway
                                  -            "function" : function() {
                                  -                var caller = callers[callers.length - 1];
                                  -                return caller !== Object && typeof caller !== "undefined";
                                  -            },
                                  -
                                  -            "array" : function(b, a) {
                                  -                var i, j, loop;
                                  -                var len;
                                  -
                                  -                // b could be an object literal here
                                  -                if (!(QUnit.objectType(b) === "array")) {
                                  -                    return false;
                                  -                }
                                  -
                                  -                len = a.length;
                                  -                if (len !== b.length) { // safe and faster
                                  -                    return false;
                                  -                }
                                  -
                                  -                // track reference to avoid circular references
                                  -                parents.push(a);
                                  -                for (i = 0; i < len; i++) {
                                  -                    loop = false;
                                  -                    for (j = 0; j < parents.length; j++) {
                                  -                        if (parents[j] === a[i]) {
                                  -                            loop = true;// dont rewalk array
                                  -                        }
                                  -                    }
                                  -                    if (!loop && !innerEquiv(a[i], b[i])) {
                                  -                        parents.pop();
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -                parents.pop();
                                  -                return true;
                                  -            },
                                  -
                                  -            "object" : function(b, a) {
                                  -                var i, j, loop;
                                  -                var eq = true; // unless we can proove it
                                  -                var aProperties = [], bProperties = []; // collection of
                                  -                                                        // strings
                                  -
                                  -                // comparing constructors is more strict than using
                                  -                // instanceof
                                  -                if (a.constructor !== b.constructor) {
                                  -                    return false;
                                  -                }
                                  -
                                  -                // stack constructor before traversing properties
                                  -                callers.push(a.constructor);
                                  -                // track reference to avoid circular references
                                  -                parents.push(a);
                                  -
                                  -                for (i in a) { // be strict: don't ensures hasOwnProperty
                                  -                                // and go deep
                                  -                    loop = false;
                                  -                    for (j = 0; j < parents.length; j++) {
                                  -                        if (parents[j] === a[i])
                                  -                            loop = true; // don't go down the same path
                                  -                                            // twice
                                  -                    }
                                  -                    aProperties.push(i); // collect a's properties
                                  -
                                  -                    if (!loop && !innerEquiv(a[i], b[i])) {
                                  -                        eq = false;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                callers.pop(); // unstack, we are done
                                  -                parents.pop();
                                  -
                                  -                for (i in b) {
                                  -                    bProperties.push(i); // collect b's properties
                                  -                }
                                  -
                                  -                // Ensures identical properties name
                                  -                return eq
                                  -                        && innerEquiv(aProperties.sort(), bProperties
                                  -                                .sort());
                                  -            }
                                  -        };
                                  -    }();
                                  -
                                  -    innerEquiv = function() { // can take multiple arguments
                                  -        var args = Array.prototype.slice.apply(arguments);
                                  -        if (args.length < 2) {
                                  -            return true; // end transition
                                  -        }
                                  -
                                  -        return (function(a, b) {
                                  -            if (a === b) {
                                  -                return true; // catch the most you can
                                  -            } else if (a === null || b === null || typeof a === "undefined"
                                  -                    || typeof b === "undefined"
                                  -                    || QUnit.objectType(a) !== QUnit.objectType(b)) {
                                  -                return false; // don't lose time with error prone cases
                                  -            } else {
                                  -                return bindCallbacks(a, callbacks, [ b, a ]);
                                  -            }
                                  -
                                  -            // apply transition with (1..n) arguments
                                  -        })(args[0], args[1])
                                  -                && arguments.callee.apply(this, args.splice(1,
                                  -                        args.length - 1));
                                  -    };
                                  -
                                  -    return innerEquiv;
                                  -
                                  -}();
                                  -
                                  -/**
                                  - * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com |
                                  - * http://flesler.blogspot.com Licensed under BSD
                                  - * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008
                                  - *
                                  - * @projectDescription Advanced and extensible data dumping for Javascript.
                                  - * @version 1.0.0
                                  - * @author Ariel Flesler
                                  - * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
                                  - */
                                  -QUnit.jsDump = (function() {
                                  -    function quote( str ) {
                                  -        return '"' + str.toString().replace(/"/g, '\\"') + '"';
                                  -    };
                                  -    function literal( o ) {
                                  -        return o + '';
                                  -    };
                                  -    function join( pre, arr, post ) {
                                  -        var s = jsDump.separator(),
                                  -            base = jsDump.indent(),
                                  -            inner = jsDump.indent(1);
                                  -        if ( arr.join )
                                  -            arr = arr.join( ',' + s + inner );
                                  -        if ( !arr )
                                  -            return pre + post;
                                  -        return [ pre, inner + arr, base + post ].join(s);
                                  -    };
                                  -    function array( arr, stack ) {
                                  -        var i = arr.length, ret = Array(i);
                                  -        this.up();
                                  -        while ( i-- )
                                  -            ret[i] = this.parse( arr[i] , undefined , stack);
                                  -        this.down();
                                  -        return join( '[', ret, ']' );
                                  -    };
                                  -
                                  -    var reName = /^function (\w+)/;
                                  -
                                  -    var jsDump = {
                                  -        parse:function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
                                  -            stack = stack || [ ];
                                  -            var parser = this.parsers[ type || this.typeOf(obj) ];
                                  -            type = typeof parser;
                                  -            var inStack = inArray(obj, stack);
                                  -            if (inStack != -1) {
                                  -                return 'recursion('+(inStack - stack.length)+')';
                                  -            }
                                  -            //else
                                  -            if (type == 'function')  {
                                  -                    stack.push(obj);
                                  -                    var res = parser.call( this, obj, stack );
                                  -                    stack.pop();
                                  -                    return res;
                                  -            }
                                  -            // else
                                  -            return (type == 'string') ? parser : this.parsers.error;
                                  -        },
                                  -        typeOf:function( obj ) {
                                  -            var type;
                                  -            if ( obj === null ) {
                                  -                type = "null";
                                  -            } else if (typeof obj === "undefined") {
                                  -                type = "undefined";
                                  -            } else if (QUnit.is("RegExp", obj)) {
                                  -                type = "regexp";
                                  -            } else if (QUnit.is("Date", obj)) {
                                  -                type = "date";
                                  -            } else if (QUnit.is("Function", obj)) {
                                  -                type = "function";
                                  -            } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
                                  -                type = "window";
                                  -            } else if (obj.nodeType === 9) {
                                  -                type = "document";
                                  -            } else if (obj.nodeType) {
                                  -                type = "node";
                                  -            } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
                                  -                type = "array";
                                  -            } else {
                                  -                type = typeof obj;
                                  -            }
                                  -            return type;
                                  -        },
                                  -        separator:function() {
                                  -            return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
                                  -        },
                                  -        indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
                                  -            if ( !this.multiline )
                                  -                return '';
                                  -            var chr = this.indentChar;
                                  -            if ( this.HTML )
                                  -                chr = chr.replace(/\t/g,'   ').replace(/ /g,'&nbsp;');
                                  -            return Array( this._depth_ + (extra||0) ).join(chr);
                                  -        },
                                  -        up:function( a ) {
                                  -            this._depth_ += a || 1;
                                  -        },
                                  -        down:function( a ) {
                                  -            this._depth_ -= a || 1;
                                  -        },
                                  -        setParser:function( name, parser ) {
                                  -            this.parsers[name] = parser;
                                  -        },
                                  -        // The next 3 are exposed so you can use them
                                  -        quote:quote,
                                  -        literal:literal,
                                  -        join:join,
                                  -        //
                                  -        _depth_: 1,
                                  -        // This is the list of parsers, to modify them, use jsDump.setParser
                                  -        parsers:{
                                  -            window: '[Window]',
                                  -            document: '[Document]',
                                  -            error:'[ERROR]', //when no parser is found, shouldn't happen
                                  -            unknown: '[Unknown]',
                                  -            'null':'null',
                                  -            'undefined':'undefined',
                                  -            'function':function( fn ) {
                                  -                var ret = 'function',
                                  -                    name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
                                  -                if ( name )
                                  -                    ret += ' ' + name;
                                  -                ret += '(';
                                  -
                                  -                ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
                                  -                return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
                                  -            },
                                  -            array: array,
                                  -            nodelist: array,
                                  -            arguments: array,
                                  -            object:function( map, stack ) {
                                  -                var ret = [ ];
                                  -                QUnit.jsDump.up();
                                  -                for ( var key in map ) {
                                  -                    var val = map[key];
                                  -                    ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(val, undefined, stack));
                                  -                }
                                  -                QUnit.jsDump.down();
                                  -                return join( '{', ret, '}' );
                                  -            },
                                  -            node:function( node ) {
                                  -                var open = QUnit.jsDump.HTML ? '&lt;' : '<',
                                  -                    close = QUnit.jsDump.HTML ? '&gt;' : '>';
                                  -
                                  -                var tag = node.nodeName.toLowerCase(),
                                  -                    ret = open + tag;
                                  -
                                  -                for ( var a in QUnit.jsDump.DOMAttrs ) {
                                  -                    var val = node[QUnit.jsDump.DOMAttrs[a]];
                                  -                    if ( val )
                                  -                        ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
                                  -                }
                                  -                return ret + close + open + '/' + tag + close;
                                  -            },
                                  -            functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
                                  -                var l = fn.length;
                                  -                if ( !l ) return '';
                                  -
                                  -                var args = Array(l);
                                  -                while ( l-- )
                                  -                    args[l] = String.fromCharCode(97+l);//97 is 'a'
                                  -                return ' ' + args.join(', ') + ' ';
                                  -            },
                                  -            key:quote, //object calls it internally, the key part of an item in a map
                                  -            functionCode:'[code]', //function calls it internally, it's the content of the function
                                  -            attribute:quote, //node calls it internally, it's an html attribute value
                                  -            string:quote,
                                  -            date:quote,
                                  -            regexp:literal, //regex
                                  -            number:literal,
                                  -            'boolean':literal
                                  -        },
                                  -        DOMAttrs:{//attributes to dump from nodes, name=>realName
                                  -            id:'id',
                                  -            name:'name',
                                  -            'class':'className'
                                  -        },
                                  -        HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
                                  -        indentChar:'  ',//indentation unit
                                  -        multiline:true //if true, items in a collection, are separated by a \n, else just a space.
                                  -    };
                                  -
                                  -    return jsDump;
                                  -})();
                                  -
                                  -// from Sizzle.js
                                  -function getText( elems ) {
                                  -    var ret = "", elem;
                                  -
                                  -    for ( var i = 0; elems[i]; i++ ) {
                                  -        elem = elems[i];
                                  -
                                  -        // Get the text from text nodes and CDATA nodes
                                  -        if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
                                  -            ret += elem.nodeValue;
                                  -
                                  -        // Traverse everything else, except comment nodes
                                  -        } else if ( elem.nodeType !== 8 ) {
                                  -            ret += getText( elem.childNodes );
                                  -        }
                                  -    }
                                  -
                                  -    return ret;
                                  -};
                                  -
                                  -//from jquery.js
                                  -function inArray( elem, array ) {
                                  -    if ( array.indexOf ) {
                                  -        return array.indexOf( elem );
                                  -    }
                                  -
                                  -    for ( var i = 0, length = array.length; i < length; i++ ) {
                                  -        if ( array[ i ] === elem ) {
                                  -            return i;
                                  -        }
                                  -    }
                                  -
                                  -    return -1;
                                  -}
                                  -
                                  -/*
                                  - * Javascript Diff Algorithm
                                  - *  By John Resig (http://ejohn.org/)
                                  - *  Modified by Chu Alan "sprite"
                                  - *
                                  - * Released under the MIT license.
                                  - *
                                  - * More Info:
                                  - *  http://ejohn.org/projects/javascript-diff-algorithm/
                                  - *
                                  - * Usage: QUnit.diff(expected, actual)
                                  - *
                                  - * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
                                  - */
                                  -QUnit.diff = (function() {
                                  -    function diff(o, n) {
                                  -        var ns = {};
                                  -        var os = {};
                                  -
                                  -        for (var i = 0; i < n.length; i++) {
                                  -            if (ns[n[i]] == null)
                                  -                ns[n[i]] = {
                                  -                    rows: [],
                                  -                    o: null
                                  -                };
                                  -            ns[n[i]].rows.push(i);
                                  -        }
                                  -
                                  -        for (var i = 0; i < o.length; i++) {
                                  -            if (os[o[i]] == null)
                                  -                os[o[i]] = {
                                  -                    rows: [],
                                  -                    n: null
                                  -                };
                                  -            os[o[i]].rows.push(i);
                                  -        }
                                  -
                                  -        for (var i in ns) {
                                  -            if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
                                  -                n[ns[i].rows[0]] = {
                                  -                    text: n[ns[i].rows[0]],
                                  -                    row: os[i].rows[0]
                                  -                };
                                  -                o[os[i].rows[0]] = {
                                  -                    text: o[os[i].rows[0]],
                                  -                    row: ns[i].rows[0]
                                  -                };
                                  -            }
                                  -        }
                                  -
                                  -        for (var i = 0; i < n.length - 1; i++) {
                                  -            if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
                                  -            n[i + 1] == o[n[i].row + 1]) {
                                  -                n[i + 1] = {
                                  -                    text: n[i + 1],
                                  -                    row: n[i].row + 1
                                  -                };
                                  -                o[n[i].row + 1] = {
                                  -                    text: o[n[i].row + 1],
                                  -                    row: i + 1
                                  -                };
                                  -            }
                                  -        }
                                  -
                                  -        for (var i = n.length - 1; i > 0; i--) {
                                  -            if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
                                  -            n[i - 1] == o[n[i].row - 1]) {
                                  -                n[i - 1] = {
                                  -                    text: n[i - 1],
                                  -                    row: n[i].row - 1
                                  -                };
                                  -                o[n[i].row - 1] = {
                                  -                    text: o[n[i].row - 1],
                                  -                    row: i - 1
                                  -                };
                                  -            }
                                  -        }
                                  -
                                  -        return {
                                  -            o: o,
                                  -            n: n
                                  -        };
                                  -    }
                                  -
                                  -    return function(o, n) {
                                  -        o = o.replace(/\s+$/, '');
                                  -        n = n.replace(/\s+$/, '');
                                  -        var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
                                  -
                                  -        var str = "";
                                  -
                                  -        var oSpace = o.match(/\s+/g);
                                  -        if (oSpace == null) {
                                  -            oSpace = [" "];
                                  -        }
                                  -        else {
                                  -            oSpace.push(" ");
                                  -        }
                                  -        var nSpace = n.match(/\s+/g);
                                  -        if (nSpace == null) {
                                  -            nSpace = [" "];
                                  -        }
                                  -        else {
                                  -            nSpace.push(" ");
                                  -        }
                                  -
                                  -        if (out.n.length == 0) {
                                  -            for (var i = 0; i < out.o.length; i++) {
                                  -                str += '<del>' + out.o[i] + oSpace[i] + "</del>";
                                  -            }
                                  -        }
                                  -        else {
                                  -            if (out.n[0].text == null) {
                                  -                for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
                                  -                    str += '<del>' + out.o[n] + oSpace[n] + "</del>";
                                  -                }
                                  -            }
                                  -
                                  -            for (var i = 0; i < out.n.length; i++) {
                                  -                if (out.n[i].text == null) {
                                  -                    str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
                                  -                }
                                  -                else {
                                  -                    var pre = "";
                                  -
                                  -                    for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
                                  -                        pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
                                  -                    }
                                  -                    str += " " + out.n[i].text + nSpace[i] + pre;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return str;
                                  -    };
                                  -})();
                                  -
                                  -})(this);
                                  -
                                  -
                                  -
                                  -/* ############################################################################################## */
                                  -/* ############################################################################################## */
                                  -/* ############################################################################################## */
                                  -
                                  -/*
                                  -// ************************************************************************************************
                                  -// Library independent version of QUnit Runner, by Pedro Simonetti.
                                  -// Based on Sky Sanders' QUnit Runner
                                  -// ************************************************************************************************
                                  -// <copyright project "Salient.QualityControl" file="qunit.runner.js" company="Sky Sanders">
                                  -// This source is a Public Domain Dedication.
                                  -// http://salientqc.codeplex.com
                                  -// Attribution is appreciated.
                                  -// </copyright>
                                  -*/
                                  -
                                  -/* this file can safely be added to the tail of your qunit.js to simplify deployment */
                                  -
                                  -(function(window) {
                                  -    
                                  -    var runner = function(tests, sequential, done) {
                                  -        this.testsCompleted = 0;
                                  -        this.failures = 0;
                                  -        this.total = 0;
                                  -        this.currentIndex = 0;
                                  -        this.sequential = sequential;
                                  -        this.tests = tests;
                                  -        this.done = done || this.done;
                                  -        var that = this;
                                  -        window.onload = function() {
                                  -            setTimeout(function(){
                                  -                that.runPage();
                                  -            },0);
                                  -        };
                                  -    };
                                  -
                                  -    runner.prototype.nextPage = function() {
                                  -        if (this.currentIndex + 1 < this.tests.length) {
                                  -            this.currentIndex++;
                                  -            this.runPage();
                                  -        }
                                  -    };
                                  -
                                  -    runner.prototype.runPage = function() {
                                  -        
                                  -        if (!stats.started) stats.started = new Date().getTime();
                                  -        
                                  -        var doc = document;
                                  -        
                                  -        // update page counter
                                  -        var result = id( "runner-result" );
                                  -        result.innerHTML = "<span>Running Test Page " + (this.currentIndex + 1) + " of " + 
                                  -                this.tests.length + "...</span><br/>&nbsp;";
                                  -        
                                  -        // update userAgent display
                                  -        id("qunit-runner-userAgent").innerHTML = window.navigator.userAgent;
                                  -
                                  -        var test = this.tests[this.currentIndex];
                                  -        test.title = test.title || /\/content\/(.+)$/.exec(test.page)[1];
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // xxxpedro passing parameters to iframes
                                  -        test.page = test.page + getURLParamaters(); 
                                  -
                                  -        // load the test page in an iframe
                                  -        var container = id("runner-test-page-container");
                                  -
                                  -        var header = doc.createElement("p");
                                  -        header.className = "runner-test-page-header passed";
                                  -        header.innerHTML = "Loading " + test.title + "...";
                                  -        header.isOpen = false;
                                  -        
                                  -        addEvent(header, "click", function(event)
                                  -        {
                                  -            event = event || window.event;
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            // run button
                                  -            var testIndex = target.getAttribute("data-fbtest-run-index");
                                  -            if (testIndex)
                                  -            {
                                  -                frames[testIndex].window.location.href = frames[testIndex].window.location.href;
                                  -                return;
                                  -            }
                                  -            
                                  -            // fullscreen view button
                                  -            var testIndex = target.getAttribute("data-fbtest-view-index");
                                  -            if (testIndex)
                                  -            {
                                  -                var frameElement = frames[testIndex].frameElement;
                                  -                frameElement.id = "runner-test-page-frame-fullscreen";
                                  -                frameElement.contentWindow.document.documentElement.id = "";
                                  -                document.documentElement.className = "runner-fullscreen-view";
                                  -                return;
                                  -            }
                                  -            
                                  -            // do not toggle unless the target is the <p> element
                                  -            if (target.nodeName.toLowerCase() != "p") return;
                                  -            
                                  -            header.isOpen = !header.isOpen;
                                  -            header.nextSibling.style.visibility = header.isOpen ? "visible" : "hidden";
                                  -            header.nextSibling.style.position = header.isOpen ? "relative" : "absolute";
                                  -        });
                                  -
                                  -        test.header = header;
                                  -        container.appendChild(header);
                                  -
                                  -        var frame = doc.createElement("iframe");
                                  -        frame.className = "runner-test-page-frame";
                                  -        frame.setAttribute("frameBorder", "0");
                                  -        
                                  -        frame.src = test.page;
                                  -        test.frame = frame;
                                  -        container.appendChild(frame);
                                  -        
                                  -        if (!this.sequential) {
                                  -            this.nextPage();
                                  -        }
                                  -    };
                                  -
                                  -    runner.prototype.pageProgress = function(frame, failures, total, testName, isDone) {
                                  -        var that = this;
                                  -        var tests = this.tests;
                                  -        for(var i=0, l=tests.length; i<l; i++)
                                  -        {
                                  -            var test = tests[i];
                                  -            if (test.frame === frame) {
                                  -
                                  -                var header = test.header;
                                  -
                                  -                header.className = failures > 0 ?
                                  -                        "runner-test-page-header failed" :
                                  -                        "runner-test-page-header passed";
                                  -
                                  -                header.innerHTML = "<a title='Run the Test Case again' data-fbtest-run-index='"+i+"' href='javascript:void(0)'>run</a> " +
                                  -                        "<a title='Open the Test Case in another tab' target='about:blank' href='"+test.page+"'>link</a> "+
                                  -                        "<a title='View Test Case in fullscreen mode' data-fbtest-view-index='"+i+"' href='javascript:void(0)'>view</a>" +
                                  -                        (" (" + (total - failures) + "/" + total + ") ") +
                                  -                        testName + 
                                  -                        (isDone ? " (" + test.title + ")" : "");
                                  -
                                  -                if (isDone) {
                                  -                    test.complete = true;
                                  -                    that.failures += failures;
                                  -                    that.total += total;
                                  -                    that.testsCompleted++;
                                  -                    
                                  -                    // TODO: xxxpedro how is these values different from "that" ones? (that.total)
                                  -                    stats.failed += failures;
                                  -                    stats.passed += (total-failures);
                                  -                    stats.total += total;
                                  -                    stats.runtime = new Date().getTime() - stats.started;
                                  -                    
                                  -                    var html = [
                                  -                            'Tests completed in ',
                                  -                            stats.runtime,
                                  -                            ' milliseconds.<br/>',
                                  -                            '<span class="passed">',
                                  -                            stats.passed,
                                  -                            '</span> tests of <span class="total">',
                                  -                            stats.total,
                                  -                            '</span> passed, <span class="failed">',
                                  -                            stats.failed,
                                  -                            '</span> failed.'
                                  -                        ].join('');
                                  -                    
                                  -                    var result = id( "runner-result" );
                                  -                    if (result)
                                  -                    {
                                  -                        result.innerHTML = html;
                                  -                    }
                                  -                    
                                  -                    // are all pages finished?
                                  -                    if (that.testsCompleted == tests.length) {
                                  -                        var banner = id("qunit-runner-banner");
                                  -                        banner.className = banner.className + (that.failures > 0 ? " qunit-fail" : " qunit-pass");
                                  -                        that.done(that.failures, that.total);
                                  -                        
                                  -                        // TODO: xxxpedro is there a better way to flag document title for errors?
                                  -                        QUnit.config.altertitle = true;
                                  -                        QUnit.test("",function(){ok(stats.failed == 0,"");});
                                  -                    }
                                  -                    else {
                                  -                        if (that.sequential) {
                                  -                            that.nextPage();
                                  -                        }
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    // if you need to be notified the runner is finished..
                                  -    runner.prototype.done = function(failures, total) {
                                  -    };
                                  -
                                  -    QUnit.run = function(tests, sequential, done) {
                                  -        /// <param name="tests" type="Array"></param>
                                  -        /// <param name="sequential" type="Boolean"></param>
                                  -        /// <param name="done" type="Function">Function(failures, total) will be called when all tests complete.</param>
                                  -        if (window.__qunit_runner) {
                                  -            throw new Error("One runner per page please.");
                                  -        }
                                  -        window.__qunit_runner = new runner(tests, sequential, done);
                                  -    };
                                  -
                                  -
                                  -    // runner test page hooks - if this page has a runner as parent
                                  -    // then set up the metric callbacks
                                  -    if (top.__qunit_runner) {
                                  -        var runner = top.__qunit_runner;
                                  -        QUnit.done = function(test) {
                                  -            runner.pageProgress(window.frameElement, test.failed, test.total, document.title, true);
                                  -        };
                                  -        QUnit.testStart = function(test) {
                                  -            runner.pageProgress(window.frameElement, 0, 0, test.name + " started");
                                  -        };
                                  -        QUnit.testDone = function(test) {
                                  -            runner.pageProgress(window.frameElement, test.failed, test.total, test.name);
                                  -        };
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // QUnit Runner Internals
                                  -    
                                  -    var id = QUnit.id;
                                  -    var addEvent = QUnit.addEvent;
                                  -
                                  -    var stats = {
                                  -        failed: 0,
                                  -        passed: 0, 
                                  -        total: 0,
                                  -        runtime: null,
                                  -        started: null
                                  -    };
                                  -    
                                  -    function getURLParamaters()
                                  -    {
                                  -        if (QUnit && QUnit.urlParams)
                                  -        {
                                  -            var params = QUnit.urlParams;
                                  -            var querystring = "?",
                                  -                key;
                                  -            for ( key in params ) {
                                  -                querystring += encodeURIComponent( key ) + "=" +
                                  -                    encodeURIComponent( params[ key ] ) + "&";
                                  -            }
                                  -            return querystring.slice( 0, -1 );
                                  -        }
                                  -        return "";
                                  -    }
                                  -    
                                  -    function loadQUnitRunner(){
                                  -        
                                  -        var container = id("runner-test-page-container");
                                  -        var result = id("runner-result");
                                  -        
                                  -        // xxxpedro here we are trying to detect if the current page is a test runner
                                  -        // we are assuming that only test runner will have the container element
                                  -        if (container)
                                  -        {
                                  -            QUnit.config.altertitle = false;
                                  -            
                                  -            var close = document.createElement("div");
                                  -            close.id = "runner-close-fullscreen-view";
                                  -            close.innerHTML = "exit fullscreen mode";
                                  -            document.body.appendChild(close);
                                  -            
                                  -            addEvent(close, "click", function()
                                  -            {
                                  -                var frameElement = QUnit.id("runner-test-page-frame-fullscreen");
                                  -                frameElement.id = "";
                                  -                frameElement.contentWindow.document.documentElement.id = "runner-test-page";
                                  -                document.documentElement.className = "";
                                  -            });
                                  -        }
                                  -    
                                  -        if (!result && container) {
                                  -            result = document.createElement("p");
                                  -            result.id = "runner-result";
                                  -            result.className = "result";
                                  -            container.parentNode.insertBefore(result, container);
                                  -        }
                                  -    }
                                  -    
                                  -    addEvent(window, "load", loadQUnitRunner);
                                  -    
                                  -})(this);
                                  -
                                  -
                                  -
                                  -/* ############################################################################################## */
                                  -/* ############################################################################################## */
                                  -/* ############################################################################################## */
                                  -
                                  -/*
                                  -// ************************************************************************************************
                                  -// Cross-browser FBTest (QUnit wrapper), by Pedro Simonetti.
                                  -// ************************************************************************************************
                                  -*/
                                  -
                                  -(function(window) {
                                  -    
                                  -    var firebugLiteInstalledViaFBTest = false;
                                  -    var firebugLiteInstallationWarning = false;
                                  -
                                  -    window.FBTest =
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // basic lib functions
                                  -
                                  -        extend: QUnit.extend,
                                  -
                                  -        addEvent: QUnit.addEvent,
                                  -
                                  -        id: QUnit.id,
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // util functions
                                  -
                                  -        getXHRObject: function()
                                  -        {
                                  -            var xhrObj = false;
                                  -            try
                                  -            {
                                  -                xhrObj = new XMLHttpRequest();
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                var progid = [
                                  -                        "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                        "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                    ];
                                  -                  
                                  -                for ( var i=0; i < progid.length; ++i ) {
                                  -                    try
                                  -                    {
                                  -                        xhrObj = new ActiveXObject(progid[i]);
                                  -                    }
                                  -                    catch(e)
                                  -                    {
                                  -                        continue;
                                  -                    }
                                  -                    break;
                                  -                }
                                  -            }
                                  -            finally
                                  -            {
                                  -                return xhrObj;
                                  -            }
                                  -        },
                                  -        
                                  -        loadScript: function(url, async, callback)
                                  -        {
                                  -            async = typeof async == "undefined" ? true : async;
                                  -            callback = callback || function(){};
                                  -            
                                  -            var callbackCalled = false;
                                  -            var script = document.createElement("script");
                                  -            script.type = "text/javascript";
                                  -            
                                  -            if (async)
                                  -            {
                                  -                // IE
                                  -                if (script.readyState)
                                  -                {
                                  -                    script.onreadystatechange = function()
                                  -                    {
                                  -                        if (script.readyState == "loaded" || script.readyState == "complete")
                                  -                        {
                                  -                            callbackCalled = true;
                                  -                            script.onreadystatechange = null;
                                  -                            callback();
                                  -                        }
                                  -                    };
                                  -                }
                                  -                // Others
                                  -                else
                                  -                {
                                  -                    script.onload = function()
                                  -                    {
                                  -                        callbackCalled = true;
                                  -                        callback();
                                  -                    };
                                  -                }
                                  -                
                                  -                script.src = url;
                                  -            }
                                  -            else
                                  -            {
                                  -                var xhr = FBTest.getXHRObject();
                                  -                xhr.open("get", url, false);
                                  -                xhr.send();
                                  -                script.setAttribute("firebugSrc", url);
                                  -                script.text = xhr.responseText;
                                  -            }
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(script);
                                  -        },
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // FBTest Execution API
                                  -
                                  -        stop: QUnit.stop,
                                  -
                                  -        start: QUnit.start,
                                  -
                                  -        run: function() {
                                  -            FBTest.isRunnerContext = true;
                                  -            
                                  -            var sequential = true; // false to run tests simultaneously
                                  -            var runnerDone = function(failures, total) {
                                  -                // get notified when runner completes
                                  -            };
                                  -            
                                  -            var config = getFirebugConfig();
                                  -            
                                  -            if (config.testList != "empty")
                                  -            {
                                  -                var testListURL = getTestListLocation(config);
                                  -                FBTest.loadScript(testListURL, false);
                                  -                
                                  -                QUnit.run(this.testList, sequential, runnerDone);
                                  -            }
                                  -        },
                                  -
                                  -        loadTestList: function(list)
                                  -        {
                                  -            if (!this.testList)
                                  -                this.testList = [];
                                  -            
                                  -            // prefixes all list items with the test base location
                                  -            var prefix = getTestBaseLocation();
                                  -            for (var i=0, l=list.length; i<l; i++)
                                  -            {
                                  -                var item = list[i];
                                  -                item.page = prefix + item.page;
                                  -            }
                                  -            
                                  -            this.testList = this.testList.concat(list);
                                  -        },
                                  -
                                  -        loadConfig: function(config)
                                  -        {
                                  -            if (!this.config)
                                  -                this.config = {};
                                  -            
                                  -            this.config = FBTest.extend(this.config, config);
                                  -        },
                                  -
                                  -        // run the test synchronously, before Firebug UI finish to load
                                  -        runTest: function(testCase)
                                  -        {
                                  -            installFirebug();
                                  -
                                  -            var fileName = location.pathname;
                                  -            QUnit.test("Testing " + fileName, testCase);
                                  -        },
                                  -
                                  -        // run the test asynchronously, after Firebug UI finish to load
                                  -        runTestOnLoad: function(testCase)
                                  -        {
                                  -            installFirebug();
                                  -
                                  -            var fileName = location.pathname;
                                  -            
                                  -            function initializeTest()
                                  -            {
                                  -                QUnit.test("Testing " + fileName, testCase);
                                  -                QUnit.start();
                                  -            }
                                  -            
                                  -            QUnit.test("Loading Firebug Lite at " + fileName, function()
                                  -            {
                                  -                FBTest.wait(function()
                                  -                {
                                  -                    return FBTest.isFirebugInitialized();
                                  -                },
                                  -                function()
                                  -                {
                                  -                    // if document is ready start testing
                                  -                    if (document.readyState === "complete")
                                  -                    {
                                  -                        initializeTest();
                                  -                    }
                                  -                    // otherwise wait
                                  -                    else
                                  -                    {
                                  -                        FBTest.addEvent(window, "load", initializeTest);
                                  -                    }
                                  -                });
                                  -            });
                                  -        },
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // FBTest API
                                  -
                                  -        ok: QUnit.ok,
                                  -
                                  -        compare: function(expected, actual, message) {
                                  -            // QUnit uses a different parameter order
                                  -            QUnit.equal(actual, expected, message);
                                  -        },
                                  -
                                  -        /**
                                  -         * Trigger an event on an element.
                                  -         *
                                  -         * @example triggerEvent( document.body, "click" );
                                  -         *
                                  -         * @param DOMElement elem
                                  -         * @param String type
                                  -         */
                                  -        triggerEvent: function( elem, type, event ) {
                                  -            // IE should be first otherwise won't work in IE9
                                  -            if ( elem.fireEvent ) {
                                  -                elem.fireEvent("on"+type);
                                  -            }
                                  -            else if ( document.createEvent ) {
                                  -                event = document.createEvent("MouseEvents");
                                  -                event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
                                  -                    0, 0, 0, 0, 0, false, false, false, false, 0, null);
                                  -                elem.dispatchEvent( event );
                                  -    
                                  -            } 
                                  -        },
                                  -
                                  -        click: function(node)
                                  -        {
                                  -            FBTest.triggerEvent(node, "click");
                                  -        },
                                  -
                                  -        focus: function(node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                FBTest.triggerEvent(node, "focus");
                                  -            }
                                  -        },
                                  -
                                  -        mouseDown: function(node)
                                  -        {
                                  -            FBTest.triggerEvent(node, "mousedown");
                                  -        },
                                  -
                                  -        exception: function(message, err)
                                  -        {
                                  -            var msg = message + " " + (err.message || err);
                                  -
                                  -            if ("console" in window)
                                  -            {
                                  -                console.error(msg);
                                  -            }
                                  -            else
                                  -            {
                                  -                throw msg;
                                  -            }
                                  -        },
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // FBTest Firebug UI API
                                  -        
                                  -        getConsoleObject: function()
                                  -        {
                                  -            // when Firebug is enabled Firebug Lite will use the "firebug"
                                  -            // namespace so it can be tested using Firebug
                                  -            return console && console.firebuglite ? console : firebug;
                                  -        },
                                  -
                                  -        openFirebug: function()
                                  -        {
                                  -            Firebug.chrome.toggle(true);
                                  -        },
                                  -
                                  -        closeFirebug: function()
                                  -        {
                                  -            // xxxpedro: should it close anyway when false is passed?
                                  -            // if so, need to fix in chrome.js
                                  -            if (Firebug.chrome.isInitialized)
                                  -                Firebug.chrome.toggle(false);
                                  -        },
                                  -
                                  -        pressToggleFirebug: function(forceOpen)
                                  -        {
                                  -            Firebug.chrome.toggle(forceOpen);
                                  -        },
                                  -
                                  -        detachFirebug: function()
                                  -        {
                                  -            Firebug.chrome.toggle(true, true);
                                  -        },
                                  -
                                  -        detachFirebug: function()
                                  -        {
                                  -            return Firebug.chrome.isInitialized;
                                  -        },
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // FBTest Panels API
                                  -
                                  -        selectPanel: function(panelName)
                                  -        {
                                  -            Firebug.chrome.selectPanel(panelName);
                                  -        },
                                  -
                                  -        getSelectedPanel: function()
                                  -        {
                                  -            return Firebug.chrome.selectedPanel;
                                  -        },
                                  -
                                  -        getPanel: function(panelName)
                                  -        {
                                  -            var panel = Firebug.chrome.getPanel(panelName);
                                  -            
                                  -            // FIXME: xxxpedro in Firebug Lite, the Side PanelBar is a property of a Panel.
                                  -            // Need to change this. Both Main PanelBar and Side PanelBar should be a property
                                  -            // of Chrome instead.
                                  -            if (!panel)
                                  -                panel = Firebug.chrome.getPanel("HTML").sidePanelBar.getPanel(panelName);
                                  -            
                                  -            return panel;
                                  -        },
                                  -        
                                  -        isFirebugInitialized: function()
                                  -        {
                                  -            return "Firebug" in window && Firebug && Firebug.chrome && Firebug.chrome.isInitialized;
                                  -        },
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Async helpers
                                  -
                                  -        delay: function(callback)
                                  -        {
                                  -            FBTest.stop();
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                try
                                  -                {
                                  -                    callback();
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    FBTest.ok(false, "FBTest.delay execution failed! " + e);
                                  -                }
                                  -
                                  -                FBTest.start();
                                  -
                                  -            }, FBTest.config.delayDuration || 1000);
                                  -        },
                                  -        
                                  -        wait: function(testFunction, callback)
                                  -        {
                                  -            var timeout = FBTest.config.waitTimeout || 3000;
                                  -            var interval = FBTest.config.waitInterval || 100;
                                  -            var startTime = new Date().getTime();
                                  -            
                                  -            var tryClosure = function()
                                  -            {
                                  -                if (testFunction())
                                  -                {
                                  -                    try
                                  -                    {
                                  -                        callback();
                                  -                    }
                                  -                    catch(e)
                                  -                    {
                                  -                        FBTest.ok(false, "FBTest.wait execution failed! " + e);
                                  -                    }
                                  -
                                  -                    FBTest.start();
                                  -                }
                                  -                else
                                  -                {
                                  -                    if (new Date().getTime() - startTime > timeout)
                                  -                    {
                                  -                        FBTest.ok(false, "FBTest.wait timed out!");
                                  -                        FBTest.start();
                                  -                    }
                                  -                    else
                                  -                        setTimeout(tryClosure, interval);
                                  -                }
                                  -                
                                  -            };
                                  -            
                                  -            FBTest.stop();
                                  -            setTimeout(tryClosure, interval);
                                  -        }
                                  -    };
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // FBTest Internals
                                  -
                                  -    function installFirebug()
                                  -    {
                                  -        // flag the document as a test case so a simplified styling is applied
                                  -        if (top.QUnit != QUnit) document.documentElement.id = "runner-test-page";
                                  -        
                                  -        if (firebugLiteInstalledViaFBTest) return;
                                  -        
                                  -        if (typeof Firebug == "undefined")
                                  -        {
                                  -            var config = getFirebugConfig();
                                  -            
                                  -            var url = getFirebugLocation(config);
                                  -            if (config.debug) url = url + "#debug";
                                  -            
                                  -            FBTest.loadScript(url, config.mode == "async");
                                  -            firebugLiteInstalledViaFBTest = true;
                                  -        }
                                  -        else if (!firebugLiteInstallationWarning)
                                  -        {
                                  -            alert("FBTest Warning: Firebug Lite is already installed into the test page, " +
                                  -                    "which means FBTest won't be able to load different versions/channels. "+
                                  -                    "To fix this issue, remove the Firebug Lite <script> tag from this test page.");
                                  -            
                                  -            firebugLiteInstallationWarning = true;
                                  -        }
                                  -    }
                                  -    
                                  -    function getFirebugConfig()
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        var config = FBTest.config;
                                  -        var params = QUnit.urlParams;
                                  -        var names = ["testList","version","channel","mode"];
                                  -        
                                  -        for (var i=0, length=names.length; i<length; i++)
                                  -        {
                                  -            var name = names[i];
                                  -
                                  -            if (typeof params[name] != "undefined")
                                  -            {
                                  -                result[name] = params[name];
                                  -                continue;
                                  -            }
                                  -            
                                  -            var options = config[name + "Options"];
                                  -            
                                  -            if (options && options[0])
                                  -                result[name] = options[0].value;
                                  -        }
                                  -        
                                  -        result.debug = typeof params.debug != "undefined" ? params.debug=="true" : true;
                                  -        return result;
                                  -    }
                                  -    
                                  -    function getFirebugBaseLocation()
                                  -    {
                                  -        var url = location.href;
                                  -        var reFirebugLocation = /(.*\/lite\/branches\/)/;
                                  -        var m = reFirebugLocation.exec(url);
                                  -        return m && m[1];
                                  -    }
                                  -    
                                  -    function getTestBaseLocation()
                                  -    {
                                  -        var url = location.href;
                                  -        var reTestLocation = /(.*\/tests\/)/;
                                  -        var m = reTestLocation.exec(url);
                                  -        return m && m[1];
                                  -    }
                                  -    
                                  -    function getFirebugLocation(config)
                                  -    {
                                  -        config = config || getFirebugConfig();
                                  -        
                                  -        var version = config.version;
                                  -        var channel = config.channel;
                                  -        
                                  -        var configOptions = FBTest.config;
                                  -        
                                  -        var versionMap = configOptions.versionMap;
                                  -        var channelMap = configOptions.channelMap;
                                  -        
                                  -        return getFirebugBaseLocation() + versionMap[version] + channelMap[channel];
                                  -    }
                                  -    
                                  -    function getTestListLocation(config)
                                  -    {
                                  -        config = config || getFirebugConfig();
                                  -        
                                  -        var testList = config.testList;
                                  -        
                                  -        var configOptions = FBTest.config;
                                  -        
                                  -        var testListMap = configOptions.testListMap;
                                  -        
                                  -        return getTestBaseLocation() + "testlists/" + testListMap[testList];
                                  -    }
                                  -
                                  -    function toArray(obj) {
                                  -      var array = [];
                                  -      for (var i=0,l=obj.length; i<l; i++)
                                  -        array[i] = obj[i];
                                  -
                                  -      return array;
                                  -    }
                                  -
                                  -    function loadFBTest() {
                                  -        
                                  -        var banner = FBTest.id("qunit-header");
                                  -        
                                  -        var renderSelect = function(name, data)
                                  -        {
                                  -            var str = [" <select name='"+name+"'>"];
                                  -            
                                  -            for (var i=0, length=data.length; i<length; i++)
                                  -            {
                                  -                var item = data[i];
                                  -                
                                  -                var selected = QUnit.urlParams[name] == item.value ? "selected " : "";
                                  -                str.push("<option "+selected+"value='"+item.value+"'>"+item.name+"</option>");
                                  -            }
                                  -                
                                  -            str.push("</select>");
                                  -            
                                  -            return str.join("");
                                  -        };
                                  -        
                                  -        if (banner)
                                  -        {
                                  -            var config = FBTest.config;
                                  -            var checked = getFirebugConfig().debug ? "checked " : "";
                                  -            
                                  -            var div = document.createElement("div");
                                  -            div.id = "fbtest-toolbar";
                                  -            div.innerHTML = 
                                  -                (FBTest.isRunnerContext ? 
                                  -                    "Test List "+renderSelect("testList", config.testListOptions)+" <span class='fbtest-toolbar-separator'>||</span> " : "") +
                                  -                " App Version " +
                                  -                renderSelect("version", config.versionOptions) +
                                  -                renderSelect("channel", config.channelOptions) +
                                  -                renderSelect("mode", config.modeOptions) +
                                  -                " <input "+checked+"name='debug' type='checkbox'>debug " +
                                  -                " <input id='fbtest-run' type='button' value='run'>";
                                  -            
                                  -            var style = div.style;
                                  -            style.color = "#eee";
                                  -            style.backgroundColor = "#8699A4";
                                  -            style.padding = "2px 4px";
                                  -            
                                  -            banner.parentNode.insertBefore(div, banner.nextSibling);
                                  -            
                                  -            var inputs = toArray(document.getElementsByTagName("input")); 
                                  -            inputs = inputs.concat(toArray(document.getElementsByTagName("select")));
                                  -            for (var i=0,l=inputs.length; i<l; i++)
                                  -            {
                                  -                var input = inputs[i];
                                  -                
                                  -                FBTest.addEvent(input, "change", function( event )
                                  -                {
                                  -                    event = event || window.event;
                                  -                    var target = event.target || event.srcElement;
                                  -                    
                                  -                    if (target.type == "checkbox")
                                  -                        QUnit.urlParams[ target.name ] = target.checked ? "true" : "false";
                                  -                    else
                                  -                        QUnit.urlParams[ target.name ] = target.value;
                                  -                });
                                  -            }
                                  -            
                                  -            var runButton = FBTest.id("fbtest-run");
                                  -            FBTest.addEvent(runButton, "click", function( event ) {
                                  -                window.location = QUnit.url();
                                  -            });
                                  -        }
                                  -    }
                                  -    
                                  -    FBTest.addEvent(window, "load", loadFBTest);
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Configuration
                                  -    
                                  -    FBTest.loadConfig(
                                  -    {
                                  -        delayDuration: 1000,
                                  -        waitTimeout: 3000,
                                  -        waitInterval: 150,
                                  -        
                                  -        versionMap:
                                  -        {
                                  -            "firebug1.4": "firebug1.4/",
                                  -            "firebug1.3":  "firebug1.3/",
                                  -            "flexBox":  "flexBox/"
                                  -        },
                                  -        
                                  -        channelMap:
                                  -        {
                                  -            "stable": "build/firebug-lite.js",
                                  -            "debug": "build/firebug-lite-debug.js",
                                  -            "beta": "build/firebug-lite-beta.js",
                                  -            "dev": "content/firebug-lite-dev.js"
                                  -        },
                                  -        
                                  -        testListMap:
                                  -        {
                                  -            "1.4": "testlist1.4.js",
                                  -            "1.3":  "testlist1.3.js",
                                  -            "example":  "testlistExample.js"
                                  -        },
                                  -                
                                  -        testListOptions:
                                  -        [
                                  -           {name: "&lt;empty&gt;", value: "empty"},
                                  -           {name: "Test List 1.4", value: "1.4"},
                                  -           {name: "Test List Example", value: "example"}
                                  -        ],
                                  -        
                                  -        versionOptions:
                                  -        [
                                  -           {name: "Firebug Lite 1.4", value: "firebug1.4"},
                                  -           {name: "Firebug Lite 1.3", value: "firebug1.3"},
                                  -           {name: "Firebug Lite FlexBox", value: "flexBox"}
                                  -        ],
                                  -        
                                  -        channelOptions:
                                  -        [
                                  -           {name: "Stable", value: "stable"},
                                  -           {name: "Debug", value: "debug"},
                                  -           {name: "Beta", value: "beta"},
                                  -           {name: "Dev", value: "dev"}
                                  -        ],
                                  -        
                                  -        modeOptions:
                                  -        [
                                  -           {name: "Async", value: "async"},
                                  -           {name: "Sync", value: "sync"}
                                  -        ]
                                  -    });
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -})(this);
                                  diff --git a/branches/flexBox/tests/readme.txt b/branches/flexBox/tests/readme.txt
                                  deleted file mode 100644
                                  index 30404ce4..00000000
                                  --- a/branches/flexBox/tests/readme.txt
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -TODO
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/runner.html b/branches/flexBox/tests/runner.html
                                  deleted file mode 100644
                                  index 27b0c1bf..00000000
                                  --- a/branches/flexBox/tests/runner.html
                                  +++ /dev/null
                                  @@ -1,22 +0,0 @@
                                  -<!DOCTYPE html>
                                  -<html>
                                  -    <head>
                                  -        <title>Firebug Lite FBTest Runner</title>
                                  -        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                                  -        <script src="fbtest/fbtest.js" type="text/javascript"></script>
                                  -        <script type="text/javascript">
                                  -            FBTest.run();
                                  -        </script>
                                  -        <link href="fbtest/fbtest.css" rel="stylesheet" type="text/css" />
                                  -    </head>
                                  -    <body>
                                  -        <div id="main">
                                  -            <header>
                                  -                <h1 id="qunit-header">Firebug Lite FBTest Runner</h1>
                                  -                <h2 id="qunit-runner-banner"></h2>
                                  -                <h2 id="qunit-runner-userAgent"></h2>
                                  -                <div id="runner-test-page-container"></div>
                                  -            </header>
                                  -        </div>
                                  -    </body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/testlists/testlist1.4.js b/branches/flexBox/tests/testlists/testlist1.4.js
                                  deleted file mode 100644
                                  index 63a34890..00000000
                                  --- a/branches/flexBox/tests/testlists/testlist1.4.js
                                  +++ /dev/null
                                  @@ -1,18 +0,0 @@
                                  -FBTest.loadTestList([
                                  -    /* Firebug */
                                  -    { page: "content/firebug/4239/issue4239.html" },
                                  -    
                                  -    /* XHR */
                                  -    { page: "content/xhr/2756/issue2756.html" },
                                  -    { page: "content/xhr/2840/issue2840.html" },
                                  -    { page: "content/xhr/2846/issue2846.html" },
                                  -    { page: "content/xhr/2977/issue2977.html" },
                                  -    { page: "content/xhr/3504/issue3504.html" },
                                  -    { page: "content/xhr/4472/issue4472.html" },
                                  -
                                  -    /* CSS */
                                  -    { page: "content/css/3262/issue3262.html" },
                                  -    { page: "content/css/3326/issue3326.html" },
                                  -    { page: "content/css/4776/issue4776.html" },
                                  -    { page: "content/css/4777/issue4777.html" }
                                  -]);
                                  \ No newline at end of file
                                  diff --git a/branches/flexBox/tests/testlists/testlistExample.js b/branches/flexBox/tests/testlists/testlistExample.js
                                  deleted file mode 100644
                                  index 83467602..00000000
                                  --- a/branches/flexBox/tests/testlists/testlistExample.js
                                  +++ /dev/null
                                  @@ -1,5 +0,0 @@
                                  -FBTest.loadTestList([
                                  -    { page: "examples/async.html" },
                                  -    { page: "examples/sync.html" },
                                  -    { page: "examples/fail.html" }
                                  -]);
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.3/build/.htaccess b/build/.htaccess
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/.htaccess
                                  rename to build/.htaccess
                                  diff --git a/branches/firebug1.3/build/build.bat b/build/build.bat
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/build.bat
                                  rename to build/build.bat
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/background.html b/build/chrome-extension-beta/background.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/background.html
                                  rename to build/chrome-extension-beta/background.html
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/contentScript.js b/build/chrome-extension-beta/contentScript.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/contentScript.js
                                  rename to build/chrome-extension-beta/contentScript.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug-lite-beta.js b/build/chrome-extension-beta/firebug-lite-beta.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug-lite-beta.js
                                  rename to build/chrome-extension-beta/firebug-lite-beta.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug.jpg b/build/chrome-extension-beta/firebug.jpg
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug.jpg
                                  rename to build/chrome-extension-beta/firebug.jpg
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug128.png b/build/chrome-extension-beta/firebug128.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug128.png
                                  rename to build/chrome-extension-beta/firebug128.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug16.png b/build/chrome-extension-beta/firebug16.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug16.png
                                  rename to build/chrome-extension-beta/firebug16.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug24.png b/build/chrome-extension-beta/firebug24.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug24.png
                                  rename to build/chrome-extension-beta/firebug24.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug24_disabled.png b/build/chrome-extension-beta/firebug24_disabled.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug24_disabled.png
                                  rename to build/chrome-extension-beta/firebug24_disabled.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug32.png b/build/chrome-extension-beta/firebug32.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug32.png
                                  rename to build/chrome-extension-beta/firebug32.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/firebug48.png b/build/chrome-extension-beta/firebug48.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/firebug48.png
                                  rename to build/chrome-extension-beta/firebug48.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/googleChrome.js b/build/chrome-extension-beta/googleChrome.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/googleChrome.js
                                  rename to build/chrome-extension-beta/googleChrome.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/license.txt b/build/chrome-extension-beta/license.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/license.txt
                                  rename to build/chrome-extension-beta/license.txt
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/manifest.json b/build/chrome-extension-beta/manifest.json
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/manifest.json
                                  rename to build/chrome-extension-beta/manifest.json
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/blank.gif b/build/chrome-extension-beta/skin/xp/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/blank.gif
                                  rename to build/chrome-extension-beta/skin/xp/blank.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/buttonBg.png b/build/chrome-extension-beta/skin/xp/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/buttonBg.png
                                  rename to build/chrome-extension-beta/skin/xp/buttonBg.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/buttonBgHover.png b/build/chrome-extension-beta/skin/xp/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/buttonBgHover.png
                                  rename to build/chrome-extension-beta/skin/xp/buttonBgHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/detach.png b/build/chrome-extension-beta/skin/xp/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/detach.png
                                  rename to build/chrome-extension-beta/skin/xp/detach.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/detachHover.png b/build/chrome-extension-beta/skin/xp/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/detachHover.png
                                  rename to build/chrome-extension-beta/skin/xp/detachHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/disable.gif b/build/chrome-extension-beta/skin/xp/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/disable.gif
                                  rename to build/chrome-extension-beta/skin/xp/disable.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/disable.png b/build/chrome-extension-beta/skin/xp/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/disable.png
                                  rename to build/chrome-extension-beta/skin/xp/disable.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/disableHover.gif b/build/chrome-extension-beta/skin/xp/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/disableHover.gif
                                  rename to build/chrome-extension-beta/skin/xp/disableHover.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/disableHover.png b/build/chrome-extension-beta/skin/xp/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/disableHover.png
                                  rename to build/chrome-extension-beta/skin/xp/disableHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/down.png b/build/chrome-extension-beta/skin/xp/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/down.png
                                  rename to build/chrome-extension-beta/skin/xp/down.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/downActive.png b/build/chrome-extension-beta/skin/xp/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/downActive.png
                                  rename to build/chrome-extension-beta/skin/xp/downActive.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/downHover.png b/build/chrome-extension-beta/skin/xp/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/downHover.png
                                  rename to build/chrome-extension-beta/skin/xp/downHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon-sm.png b/build/chrome-extension-beta/skin/xp/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon-sm.png
                                  rename to build/chrome-extension-beta/skin/xp/errorIcon-sm.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon.gif b/build/chrome-extension-beta/skin/xp/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon.gif
                                  rename to build/chrome-extension-beta/skin/xp/errorIcon.gif
                                  diff --git a/branches/firebug1.1/errorIcon.png b/build/chrome-extension-beta/skin/xp/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.1/errorIcon.png
                                  rename to build/chrome-extension-beta/skin/xp/errorIcon.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css b/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug-1.3a2.css
                                  rename to build/chrome-extension-beta/skin/xp/firebug-1.3a2.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.IE6.css b/build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  rename to build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.css b/build/chrome-extension-beta/skin/xp/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.css
                                  rename to build/chrome-extension-beta/skin/xp/firebug.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.html b/build/chrome-extension-beta/skin/xp/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.html
                                  rename to build/chrome-extension-beta/skin/xp/firebug.html
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.png b/build/chrome-extension-beta/skin/xp/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/firebug.png
                                  rename to build/chrome-extension-beta/skin/xp/firebug.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/group.gif b/build/chrome-extension-beta/skin/xp/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/group.gif
                                  rename to build/chrome-extension-beta/skin/xp/group.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/infoIcon.gif b/build/chrome-extension-beta/skin/xp/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/infoIcon.gif
                                  rename to build/chrome-extension-beta/skin/xp/infoIcon.gif
                                  diff --git a/branches/firebug1.1/infoIcon.png b/build/chrome-extension-beta/skin/xp/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.1/infoIcon.png
                                  rename to build/chrome-extension-beta/skin/xp/infoIcon.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/loading_16.gif b/build/chrome-extension-beta/skin/xp/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/loading_16.gif
                                  rename to build/chrome-extension-beta/skin/xp/loading_16.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/min.png b/build/chrome-extension-beta/skin/xp/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/min.png
                                  rename to build/chrome-extension-beta/skin/xp/min.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/minHover.png b/build/chrome-extension-beta/skin/xp/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/minHover.png
                                  rename to build/chrome-extension-beta/skin/xp/minHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/off.png b/build/chrome-extension-beta/skin/xp/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/off.png
                                  rename to build/chrome-extension-beta/skin/xp/off.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/offHover.png b/build/chrome-extension-beta/skin/xp/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/offHover.png
                                  rename to build/chrome-extension-beta/skin/xp/offHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/pixel_transparent.gif b/build/chrome-extension-beta/skin/xp/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/pixel_transparent.gif
                                  rename to build/chrome-extension-beta/skin/xp/pixel_transparent.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/roundCorner.svg b/build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  rename to build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/search.gif b/build/chrome-extension-beta/skin/xp/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/search.gif
                                  rename to build/chrome-extension-beta/skin/xp/search.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/search.png b/build/chrome-extension-beta/skin/xp/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/search.png
                                  rename to build/chrome-extension-beta/skin/xp/search.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadow.gif b/build/chrome-extension-beta/skin/xp/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadow.gif
                                  rename to build/chrome-extension-beta/skin/xp/shadow.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadow2.gif b/build/chrome-extension-beta/skin/xp/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadow2.gif
                                  rename to build/chrome-extension-beta/skin/xp/shadow2.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadowAlpha.png b/build/chrome-extension-beta/skin/xp/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/shadowAlpha.png
                                  rename to build/chrome-extension-beta/skin/xp/shadowAlpha.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/sprite.png b/build/chrome-extension-beta/skin/xp/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/sprite.png
                                  rename to build/chrome-extension-beta/skin/xp/sprite.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverLeft.png b/build/chrome-extension-beta/skin/xp/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverLeft.png
                                  rename to build/chrome-extension-beta/skin/xp/tabHoverLeft.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverMid.png b/build/chrome-extension-beta/skin/xp/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverMid.png
                                  rename to build/chrome-extension-beta/skin/xp/tabHoverMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverRight.png b/build/chrome-extension-beta/skin/xp/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabHoverRight.png
                                  rename to build/chrome-extension-beta/skin/xp/tabHoverRight.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabLeft.png b/build/chrome-extension-beta/skin/xp/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabLeft.png
                                  rename to build/chrome-extension-beta/skin/xp/tabLeft.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png b/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuPin.png b/build/chrome-extension-beta/skin/xp/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuPin.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMenuPin.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuRadio.png b/build/chrome-extension-beta/skin/xp/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuRadio.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMenuRadio.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuTarget.png b/build/chrome-extension-beta/skin/xp/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuTarget.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMenuTarget.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png b/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMid.png b/build/chrome-extension-beta/skin/xp/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabMid.png
                                  rename to build/chrome-extension-beta/skin/xp/tabMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabRight.png b/build/chrome-extension-beta/skin/xp/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tabRight.png
                                  rename to build/chrome-extension-beta/skin/xp/tabRight.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorBorders.gif b/build/chrome-extension-beta/skin/xp/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorBorders.gif
                                  rename to build/chrome-extension-beta/skin/xp/textEditorBorders.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorBorders.png b/build/chrome-extension-beta/skin/xp/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorBorders.png
                                  rename to build/chrome-extension-beta/skin/xp/textEditorBorders.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorCorners.gif b/build/chrome-extension-beta/skin/xp/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorCorners.gif
                                  rename to build/chrome-extension-beta/skin/xp/textEditorCorners.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorCorners.png b/build/chrome-extension-beta/skin/xp/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/textEditorCorners.png
                                  rename to build/chrome-extension-beta/skin/xp/textEditorCorners.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/titlebarMid.png b/build/chrome-extension-beta/skin/xp/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/titlebarMid.png
                                  rename to build/chrome-extension-beta/skin/xp/titlebarMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/toolbarMid.png b/build/chrome-extension-beta/skin/xp/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/toolbarMid.png
                                  rename to build/chrome-extension-beta/skin/xp/toolbarMid.png
                                  diff --git a/branches/firebug1.2/tree_close.gif b/build/chrome-extension-beta/skin/xp/tree_close.gif
                                  old mode 100755
                                  new mode 100644
                                  similarity index 100%
                                  rename from branches/firebug1.2/tree_close.gif
                                  rename to build/chrome-extension-beta/skin/xp/tree_close.gif
                                  diff --git a/branches/firebug1.2/tree_open.gif b/build/chrome-extension-beta/skin/xp/tree_open.gif
                                  old mode 100755
                                  new mode 100644
                                  similarity index 100%
                                  rename from branches/firebug1.2/tree_open.gif
                                  rename to build/chrome-extension-beta/skin/xp/tree_open.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/up.png b/build/chrome-extension-beta/skin/xp/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/up.png
                                  rename to build/chrome-extension-beta/skin/xp/up.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/upActive.png b/build/chrome-extension-beta/skin/xp/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/upActive.png
                                  rename to build/chrome-extension-beta/skin/xp/upActive.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/upHover.png b/build/chrome-extension-beta/skin/xp/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/upHover.png
                                  rename to build/chrome-extension-beta/skin/xp/upHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/warningIcon.gif b/build/chrome-extension-beta/skin/xp/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/warningIcon.gif
                                  rename to build/chrome-extension-beta/skin/xp/warningIcon.gif
                                  diff --git a/branches/firebug1.1/warningIcon.png b/build/chrome-extension-beta/skin/xp/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.1/warningIcon.png
                                  rename to build/chrome-extension-beta/skin/xp/warningIcon.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/background.html b/build/chrome-extension/background.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/background.html
                                  rename to build/chrome-extension/background.html
                                  diff --git a/branches/firebug1.3/build/chrome-extension/contentScript.js b/build/chrome-extension/contentScript.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/contentScript.js
                                  rename to build/chrome-extension/contentScript.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug-lite.js b/build/chrome-extension/firebug-lite.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug-lite.js
                                  rename to build/chrome-extension/firebug-lite.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug.jpg b/build/chrome-extension/firebug.jpg
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug.jpg
                                  rename to build/chrome-extension/firebug.jpg
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug128.png b/build/chrome-extension/firebug128.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug128.png
                                  rename to build/chrome-extension/firebug128.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug16.png b/build/chrome-extension/firebug16.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug16.png
                                  rename to build/chrome-extension/firebug16.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug24.png b/build/chrome-extension/firebug24.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug24.png
                                  rename to build/chrome-extension/firebug24.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug24_disabled.png b/build/chrome-extension/firebug24_disabled.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug24_disabled.png
                                  rename to build/chrome-extension/firebug24_disabled.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug32.png b/build/chrome-extension/firebug32.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug32.png
                                  rename to build/chrome-extension/firebug32.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/firebug48.png b/build/chrome-extension/firebug48.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/firebug48.png
                                  rename to build/chrome-extension/firebug48.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/googleChrome.js b/build/chrome-extension/googleChrome.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/googleChrome.js
                                  rename to build/chrome-extension/googleChrome.js
                                  diff --git a/branches/firebug1.3/build/chrome-extension/license.txt b/build/chrome-extension/license.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/license.txt
                                  rename to build/chrome-extension/license.txt
                                  diff --git a/branches/firebug1.3/build/chrome-extension/manifest.json b/build/chrome-extension/manifest.json
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/manifest.json
                                  rename to build/chrome-extension/manifest.json
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/blank.gif b/build/chrome-extension/skin/xp/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/blank.gif
                                  rename to build/chrome-extension/skin/xp/blank.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/buttonBg.png b/build/chrome-extension/skin/xp/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/buttonBg.png
                                  rename to build/chrome-extension/skin/xp/buttonBg.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/buttonBgHover.png b/build/chrome-extension/skin/xp/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/buttonBgHover.png
                                  rename to build/chrome-extension/skin/xp/buttonBgHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/detach.png b/build/chrome-extension/skin/xp/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/detach.png
                                  rename to build/chrome-extension/skin/xp/detach.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/detachHover.png b/build/chrome-extension/skin/xp/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/detachHover.png
                                  rename to build/chrome-extension/skin/xp/detachHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/disable.gif b/build/chrome-extension/skin/xp/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/disable.gif
                                  rename to build/chrome-extension/skin/xp/disable.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/disable.png b/build/chrome-extension/skin/xp/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/disable.png
                                  rename to build/chrome-extension/skin/xp/disable.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/disableHover.gif b/build/chrome-extension/skin/xp/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/disableHover.gif
                                  rename to build/chrome-extension/skin/xp/disableHover.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/disableHover.png b/build/chrome-extension/skin/xp/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/disableHover.png
                                  rename to build/chrome-extension/skin/xp/disableHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/down.png b/build/chrome-extension/skin/xp/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/down.png
                                  rename to build/chrome-extension/skin/xp/down.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/downActive.png b/build/chrome-extension/skin/xp/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/downActive.png
                                  rename to build/chrome-extension/skin/xp/downActive.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/downHover.png b/build/chrome-extension/skin/xp/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/downHover.png
                                  rename to build/chrome-extension/skin/xp/downHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon-sm.png b/build/chrome-extension/skin/xp/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon-sm.png
                                  rename to build/chrome-extension/skin/xp/errorIcon-sm.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon.gif b/build/chrome-extension/skin/xp/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon.gif
                                  rename to build/chrome-extension/skin/xp/errorIcon.gif
                                  diff --git a/branches/firebug1.2/errorIcon.png b/build/chrome-extension/skin/xp/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.2/errorIcon.png
                                  rename to build/chrome-extension/skin/xp/errorIcon.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/firebug-1.3a2.css b/build/chrome-extension/skin/xp/firebug-1.3a2.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/firebug-1.3a2.css
                                  rename to build/chrome-extension/skin/xp/firebug-1.3a2.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/firebug.IE6.css b/build/chrome-extension/skin/xp/firebug.IE6.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/firebug.IE6.css
                                  rename to build/chrome-extension/skin/xp/firebug.IE6.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/firebug.css b/build/chrome-extension/skin/xp/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/firebug.css
                                  rename to build/chrome-extension/skin/xp/firebug.css
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/firebug.html b/build/chrome-extension/skin/xp/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/firebug.html
                                  rename to build/chrome-extension/skin/xp/firebug.html
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/firebug.png b/build/chrome-extension/skin/xp/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/firebug.png
                                  rename to build/chrome-extension/skin/xp/firebug.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/group.gif b/build/chrome-extension/skin/xp/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/group.gif
                                  rename to build/chrome-extension/skin/xp/group.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/infoIcon.gif b/build/chrome-extension/skin/xp/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/infoIcon.gif
                                  rename to build/chrome-extension/skin/xp/infoIcon.gif
                                  diff --git a/branches/firebug1.2/infoIcon.png b/build/chrome-extension/skin/xp/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.2/infoIcon.png
                                  rename to build/chrome-extension/skin/xp/infoIcon.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/loading_16.gif b/build/chrome-extension/skin/xp/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/loading_16.gif
                                  rename to build/chrome-extension/skin/xp/loading_16.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/min.png b/build/chrome-extension/skin/xp/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/min.png
                                  rename to build/chrome-extension/skin/xp/min.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/minHover.png b/build/chrome-extension/skin/xp/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/minHover.png
                                  rename to build/chrome-extension/skin/xp/minHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/off.png b/build/chrome-extension/skin/xp/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/off.png
                                  rename to build/chrome-extension/skin/xp/off.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/offHover.png b/build/chrome-extension/skin/xp/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/offHover.png
                                  rename to build/chrome-extension/skin/xp/offHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/pixel_transparent.gif b/build/chrome-extension/skin/xp/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/pixel_transparent.gif
                                  rename to build/chrome-extension/skin/xp/pixel_transparent.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/roundCorner.svg b/build/chrome-extension/skin/xp/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/roundCorner.svg
                                  rename to build/chrome-extension/skin/xp/roundCorner.svg
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/search.gif b/build/chrome-extension/skin/xp/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/search.gif
                                  rename to build/chrome-extension/skin/xp/search.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/search.png b/build/chrome-extension/skin/xp/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/search.png
                                  rename to build/chrome-extension/skin/xp/search.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/shadow.gif b/build/chrome-extension/skin/xp/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/shadow.gif
                                  rename to build/chrome-extension/skin/xp/shadow.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/shadow2.gif b/build/chrome-extension/skin/xp/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/shadow2.gif
                                  rename to build/chrome-extension/skin/xp/shadow2.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/shadowAlpha.png b/build/chrome-extension/skin/xp/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/shadowAlpha.png
                                  rename to build/chrome-extension/skin/xp/shadowAlpha.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/sprite.png b/build/chrome-extension/skin/xp/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/sprite.png
                                  rename to build/chrome-extension/skin/xp/sprite.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverLeft.png b/build/chrome-extension/skin/xp/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverLeft.png
                                  rename to build/chrome-extension/skin/xp/tabHoverLeft.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverMid.png b/build/chrome-extension/skin/xp/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverMid.png
                                  rename to build/chrome-extension/skin/xp/tabHoverMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverRight.png b/build/chrome-extension/skin/xp/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabHoverRight.png
                                  rename to build/chrome-extension/skin/xp/tabHoverRight.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabLeft.png b/build/chrome-extension/skin/xp/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabLeft.png
                                  rename to build/chrome-extension/skin/xp/tabLeft.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuCheckbox.png b/build/chrome-extension/skin/xp/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuCheckbox.png
                                  rename to build/chrome-extension/skin/xp/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuPin.png b/build/chrome-extension/skin/xp/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuPin.png
                                  rename to build/chrome-extension/skin/xp/tabMenuPin.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuRadio.png b/build/chrome-extension/skin/xp/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuRadio.png
                                  rename to build/chrome-extension/skin/xp/tabMenuRadio.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuTarget.png b/build/chrome-extension/skin/xp/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuTarget.png
                                  rename to build/chrome-extension/skin/xp/tabMenuTarget.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuTargetHover.png b/build/chrome-extension/skin/xp/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMenuTargetHover.png
                                  rename to build/chrome-extension/skin/xp/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabMid.png b/build/chrome-extension/skin/xp/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabMid.png
                                  rename to build/chrome-extension/skin/xp/tabMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tabRight.png b/build/chrome-extension/skin/xp/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tabRight.png
                                  rename to build/chrome-extension/skin/xp/tabRight.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/textEditorBorders.gif b/build/chrome-extension/skin/xp/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/textEditorBorders.gif
                                  rename to build/chrome-extension/skin/xp/textEditorBorders.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/textEditorBorders.png b/build/chrome-extension/skin/xp/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/textEditorBorders.png
                                  rename to build/chrome-extension/skin/xp/textEditorBorders.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/textEditorCorners.gif b/build/chrome-extension/skin/xp/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/textEditorCorners.gif
                                  rename to build/chrome-extension/skin/xp/textEditorCorners.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/textEditorCorners.png b/build/chrome-extension/skin/xp/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/textEditorCorners.png
                                  rename to build/chrome-extension/skin/xp/textEditorCorners.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/titlebarMid.png b/build/chrome-extension/skin/xp/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/titlebarMid.png
                                  rename to build/chrome-extension/skin/xp/titlebarMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/toolbarMid.png b/build/chrome-extension/skin/xp/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/toolbarMid.png
                                  rename to build/chrome-extension/skin/xp/toolbarMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tree_close.gif b/build/chrome-extension/skin/xp/tree_close.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tree_close.gif
                                  rename to build/chrome-extension/skin/xp/tree_close.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/tree_open.gif b/build/chrome-extension/skin/xp/tree_open.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/tree_open.gif
                                  rename to build/chrome-extension/skin/xp/tree_open.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/up.png b/build/chrome-extension/skin/xp/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/up.png
                                  rename to build/chrome-extension/skin/xp/up.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/upActive.png b/build/chrome-extension/skin/xp/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/upActive.png
                                  rename to build/chrome-extension/skin/xp/upActive.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/upHover.png b/build/chrome-extension/skin/xp/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/upHover.png
                                  rename to build/chrome-extension/skin/xp/upHover.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/warningIcon.gif b/build/chrome-extension/skin/xp/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/warningIcon.gif
                                  rename to build/chrome-extension/skin/xp/warningIcon.gif
                                  diff --git a/branches/firebug1.2/warningIcon.png b/build/chrome-extension/skin/xp/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.2/warningIcon.png
                                  rename to build/chrome-extension/skin/xp/warningIcon.png
                                  diff --git a/branches/firebug1.3/build/compress.bat b/build/compress.bat
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/compress.bat
                                  rename to build/compress.bat
                                  diff --git a/branches/firebug1.5/build/firebug-lite-beta.js b/build/firebug-lite-beta.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/build/firebug-lite-beta.js
                                  rename to build/firebug-lite-beta.js
                                  diff --git a/branches/firebug1.5/build/firebug-lite-debug.js b/build/firebug-lite-debug.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/build/firebug-lite-debug.js
                                  rename to build/firebug-lite-debug.js
                                  diff --git a/branches/firebug1.5/build/firebug-lite.js b/build/firebug-lite.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/build/firebug-lite.js
                                  rename to build/firebug-lite.js
                                  diff --git a/branches/firebug1.3/build/template .htaccess b/build/template .htaccess
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/template .htaccess
                                  rename to build/template .htaccess
                                  diff --git a/branches/firebug1.3/content/bookmarlet.txt b/content/bookmarlet.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/bookmarlet.txt
                                  rename to content/bookmarlet.txt
                                  diff --git a/branches/firebug1.3/content/changelog.txt b/content/changelog.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/changelog.txt
                                  rename to content/changelog.txt
                                  diff --git a/branches/firebug1.5/content/firebug-lite-dev.js b/content/firebug-lite-dev.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug-lite-dev.js
                                  rename to content/firebug-lite-dev.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/chrome.js b/content/firebug1.4/chrome.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/chrome.js
                                  rename to content/firebug1.4/chrome.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/commandLine.js b/content/firebug1.4/commandLine.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/commandLine.js
                                  rename to content/firebug1.4/commandLine.js
                                  diff --git a/branches/firebug1.3/content/firebug/console.js b/content/firebug1.4/console.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/console.js
                                  rename to content/firebug1.4/console.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/consoleInjector.js b/content/firebug1.4/consoleInjector.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/consoleInjector.js
                                  rename to content/firebug1.4/consoleInjector.js
                                  diff --git a/branches/firebug1.3/content/firebug/context.js b/content/firebug1.4/context.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/context.js
                                  rename to content/firebug1.4/context.js
                                  diff --git a/branches/firebug1.3/content/firebug/css.js b/content/firebug1.4/css.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/css.js
                                  rename to content/firebug1.4/css.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/debugger.js b/content/firebug1.4/debugger.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/debugger.js
                                  rename to content/firebug1.4/debugger.js
                                  diff --git a/branches/firebug1.3/content/firebug/dom.js b/content/firebug1.4/dom.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/dom.js
                                  rename to content/firebug1.4/dom.js
                                  diff --git a/branches/firebug1.3/content/firebug/domplate.js b/content/firebug1.4/domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/domplate.js
                                  rename to content/firebug1.4/domplate.js
                                  diff --git a/branches/firebug1.3/content/firebug/editor.js b/content/firebug1.4/editor.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/editor.js
                                  rename to content/firebug1.4/editor.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/firebug.js b/content/firebug1.4/firebug.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/firebug.js
                                  rename to content/firebug1.4/firebug.js
                                  diff --git a/branches/firebug1.4/content/firebug/highlighter.css b/content/firebug1.4/highlighter.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/highlighter.css
                                  rename to content/firebug1.4/highlighter.css
                                  diff --git a/branches/firebug1.3/content/firebug/html.js b/content/firebug1.4/html.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/html.js
                                  rename to content/firebug1.4/html.js
                                  diff --git a/branches/firebug1.3/content/firebug/i18n.js b/content/firebug1.4/i18n.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/i18n.js
                                  rename to content/firebug1.4/i18n.js
                                  diff --git a/branches/firebug1.3/content/firebug/infotip.js b/content/firebug1.4/infotip.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/infotip.js
                                  rename to content/firebug1.4/infotip.js
                                  diff --git a/branches/firebug1.4/content/firebug/insideOutBox.js b/content/firebug1.4/insideOutBox.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/insideOutBox.js
                                  rename to content/firebug1.4/insideOutBox.js
                                  diff --git a/branches/firebug1.3/content/firebug/inspector.js b/content/firebug1.4/inspector.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/inspector.js
                                  rename to content/firebug1.4/inspector.js
                                  diff --git a/branches/firebug1.3/content/firebug/jsonViewer.js b/content/firebug1.4/jsonViewer.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/jsonViewer.js
                                  rename to content/firebug1.4/jsonViewer.js
                                  diff --git a/branches/firebug1.5/content/firebug1.4/lib.js b/content/firebug1.4/lib.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/firebug1.4/lib.js
                                  rename to content/firebug1.4/lib.js
                                  diff --git a/branches/firebug1.4/content/firebug/lib/htmlLib.js b/content/firebug1.4/lib/htmlLib.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/lib/htmlLib.js
                                  rename to content/firebug1.4/lib/htmlLib.js
                                  diff --git a/branches/firebug1.3/content/firebug/net.js b/content/firebug1.4/net.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/net.js
                                  rename to content/firebug1.4/net.js
                                  diff --git a/branches/firebug1.3/content/firebug/reps.js b/content/firebug1.4/reps.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/reps.js
                                  rename to content/firebug1.4/reps.js
                                  diff --git a/branches/firebug1.3/content/firebug/script.js b/content/firebug1.4/script.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/script.js
                                  rename to content/firebug1.4/script.js
                                  diff --git a/branches/firebug1.4/content/firebug/sourceBox.js b/content/firebug1.4/sourceBox.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/sourceBox.js
                                  rename to content/firebug1.4/sourceBox.js
                                  diff --git a/branches/firebug1.4/content/firebug/sourceCache.js b/content/firebug1.4/sourceCache.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/sourceCache.js
                                  rename to content/firebug1.4/sourceCache.js
                                  diff --git a/branches/firebug1.4/content/firebug/sourceFile.js b/content/firebug1.4/sourceFile.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/sourceFile.js
                                  rename to content/firebug1.4/sourceFile.js
                                  diff --git a/branches/firebug1.3/content/firebug/spy.js b/content/firebug1.4/spy.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/spy.js
                                  rename to content/firebug1.4/spy.js
                                  diff --git a/branches/firebug1.4/content/firebug/tabContext.js b/content/firebug1.4/tabContext.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/tabContext.js
                                  rename to content/firebug1.4/tabContext.js
                                  diff --git a/branches/firebug1.4/content/firebug/tabWatcher.js b/content/firebug1.4/tabWatcher.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firebug/tabWatcher.js
                                  rename to content/firebug1.4/tabWatcher.js
                                  diff --git a/branches/firebug1.3/content/firebug/trace.js b/content/firebug1.4/trace.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/trace.js
                                  rename to content/firebug1.4/trace.js
                                  diff --git a/branches/firebug1.4/content/lite/tracePanel.js b/content/firebug1.4/tracePanel.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/lite/tracePanel.js
                                  rename to content/firebug1.4/tracePanel.js
                                  diff --git a/branches/firebug1.3/content/firebug/xmlViewer.js b/content/firebug1.4/xmlViewer.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/xmlViewer.js
                                  rename to content/firebug1.4/xmlViewer.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/cssEvents.js b/content/firediff/content/firediff-original/cssEvents.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/cssEvents.js
                                  rename to content/firediff/content/firediff-original/cssEvents.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/cssModel.js b/content/firediff/content/firediff-original/cssModel.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/cssModel.js
                                  rename to content/firediff/content/firediff-original/cssModel.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/diff.js b/content/firediff/content/firediff-original/diff.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/diff.js
                                  rename to content/firediff/content/firediff-original/diff.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/diffModule.js b/content/firediff/content/firediff-original/diffModule.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/diffModule.js
                                  rename to content/firediff/content/firediff-original/diffModule.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/diffMonitor.js b/content/firediff/content/firediff-original/diffMonitor.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/diffMonitor.js
                                  rename to content/firediff/content/firediff-original/diffMonitor.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/domEvents.js b/content/firediff/content/firediff-original/domEvents.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/domEvents.js
                                  rename to content/firediff/content/firediff-original/domEvents.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/domplate.js b/content/firediff/content/firediff-original/domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/domplate.js
                                  rename to content/firediff/content/firediff-original/domplate.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/events.js b/content/firediff/content/firediff-original/events.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/events.js
                                  rename to content/firediff/content/firediff-original/events.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/firediff.xul b/content/firediff/content/firediff-original/firediff.xul
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/firediff.xul
                                  rename to content/firediff/content/firediff-original/firediff.xul
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/pages.js b/content/firediff/content/firediff-original/pages.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/pages.js
                                  rename to content/firediff/content/firediff-original/pages.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/path.js b/content/firediff/content/firediff-original/path.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/path.js
                                  rename to content/firediff/content/firediff-original/path.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/search.js b/content/firediff/content/firediff-original/search.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/search.js
                                  rename to content/firediff/content/firediff-original/search.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff-original/versionCompat.js b/content/firediff/content/firediff-original/versionCompat.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff-original/versionCompat.js
                                  rename to content/firediff/content/firediff-original/versionCompat.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/cssEvents.js b/content/firediff/content/firediff/cssEvents.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/cssEvents.js
                                  rename to content/firediff/content/firediff/cssEvents.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/cssModel.js b/content/firediff/content/firediff/cssModel.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/cssModel.js
                                  rename to content/firediff/content/firediff/cssModel.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/diff.js b/content/firediff/content/firediff/diff.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/diff.js
                                  rename to content/firediff/content/firediff/diff.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/diffModule.js b/content/firediff/content/firediff/diffModule.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/diffModule.js
                                  rename to content/firediff/content/firediff/diffModule.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/diffMonitor.js b/content/firediff/content/firediff/diffMonitor.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/diffMonitor.js
                                  rename to content/firediff/content/firediff/diffMonitor.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/domEvents.js b/content/firediff/content/firediff/domEvents.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/domEvents.js
                                  rename to content/firediff/content/firediff/domEvents.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/domplate.js b/content/firediff/content/firediff/domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/domplate.js
                                  rename to content/firediff/content/firediff/domplate.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/events.js b/content/firediff/content/firediff/events.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/events.js
                                  rename to content/firediff/content/firediff/events.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/firediff.xul b/content/firediff/content/firediff/firediff.xul
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/firediff.xul
                                  rename to content/firediff/content/firediff/firediff.xul
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/pages.js b/content/firediff/content/firediff/pages.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/pages.js
                                  rename to content/firediff/content/firediff/pages.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/path.js b/content/firediff/content/firediff/path.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/path.js
                                  rename to content/firediff/content/firediff/path.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/search.js b/content/firediff/content/firediff/search.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/search.js
                                  rename to content/firediff/content/firediff/search.js
                                  diff --git a/branches/firebug1.3/content/firediff/content/firediff/versionCompat.js b/content/firediff/content/firediff/versionCompat.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/content/firediff/versionCompat.js
                                  rename to content/firediff/content/firediff/versionCompat.js
                                  diff --git a/branches/firebug1.3/content/firediff/license.txt b/content/firediff/license.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/license.txt
                                  rename to content/firediff/license.txt
                                  diff --git a/branches/firebug1.3/content/firediff/skin/classic/firediff.css b/content/firediff/skin/classic/firediff.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firediff/skin/classic/firediff.css
                                  rename to content/firediff/skin/classic/firediff.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome.manifest b/content/firerainbow/chrome.manifest
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome.manifest
                                  rename to content/firerainbow/chrome.manifest
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror.js b/content/firerainbow/chrome/content/codemirror.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror.js
                                  rename to content/firerainbow/chrome/content/codemirror.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/LICENSE b/content/firerainbow/chrome/content/codemirror/LICENSE
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/LICENSE
                                  rename to content/firerainbow/chrome/content/codemirror/LICENSE
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsecss.js b/content/firerainbow/chrome/content/codemirror/parsecss.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsecss.js
                                  rename to content/firerainbow/chrome/content/codemirror/parsecss.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js b/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js
                                  rename to content/firerainbow/chrome/content/codemirror/parsehtmlmixed.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsejavascript.js b/content/firerainbow/chrome/content/codemirror/parsejavascript.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsejavascript.js
                                  rename to content/firerainbow/chrome/content/codemirror/parsejavascript.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsexml.js b/content/firerainbow/chrome/content/codemirror/parsexml.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/parsexml.js
                                  rename to content/firerainbow/chrome/content/codemirror/parsexml.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/stringstream.js b/content/firerainbow/chrome/content/codemirror/stringstream.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/stringstream.js
                                  rename to content/firerainbow/chrome/content/codemirror/stringstream.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/tokenize.js b/content/firerainbow/chrome/content/codemirror/tokenize.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/tokenize.js
                                  rename to content/firerainbow/chrome/content/codemirror/tokenize.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js b/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/tokenizejavascript.js
                                  rename to content/firerainbow/chrome/content/codemirror/tokenizejavascript.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/codemirror/util.js b/content/firerainbow/chrome/content/codemirror/util.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/codemirror/util.js
                                  rename to content/firerainbow/chrome/content/codemirror/util.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/firerainbow-original.js b/content/firerainbow/chrome/content/firerainbow-original.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/firerainbow-original.js
                                  rename to content/firerainbow/chrome/content/firerainbow-original.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/firerainbow.js b/content/firerainbow/chrome/content/firerainbow.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/firerainbow.js
                                  rename to content/firerainbow/chrome/content/firerainbow.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/firerainbow.xul b/content/firerainbow/chrome/content/firerainbow.xul
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/firerainbow.xul
                                  rename to content/firerainbow/chrome/content/firerainbow.xul
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/import.xul b/content/firerainbow/chrome/content/import.xul
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/import.xul
                                  rename to content/firerainbow/chrome/content/import.xul
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/content/worker.js b/content/firerainbow/chrome/content/worker.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/content/worker.js
                                  rename to content/firerainbow/chrome/content/worker.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/skin/import.css b/content/firerainbow/chrome/skin/import.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/skin/import.css
                                  rename to content/firerainbow/chrome/skin/import.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/skin/rainbow.css b/content/firerainbow/chrome/skin/rainbow.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/skin/rainbow.css
                                  rename to content/firerainbow/chrome/skin/rainbow.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/chrome/skin/rainbow.png b/content/firerainbow/chrome/skin/rainbow.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/chrome/skin/rainbow.png
                                  rename to content/firerainbow/chrome/skin/rainbow.png
                                  diff --git a/branches/firebug1.4/content/firerainbow/defaults/preferences/firerainbow.js b/content/firerainbow/defaults/preferences/firerainbow.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/defaults/preferences/firerainbow.js
                                  rename to content/firerainbow/defaults/preferences/firerainbow.js
                                  diff --git a/branches/firebug1.4/content/firerainbow/install.rdf b/content/firerainbow/install.rdf
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/install.rdf
                                  rename to content/firerainbow/install.rdf
                                  diff --git a/branches/firebug1.4/content/firerainbow/license.txt b/content/firerainbow/license.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/license.txt
                                  rename to content/firerainbow/license.txt
                                  diff --git a/branches/firebug1.4/content/firerainbow/rakefile b/content/firerainbow/rakefile
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/rakefile
                                  rename to content/firerainbow/rakefile
                                  diff --git a/branches/firebug1.4/content/firerainbow/readme.md b/content/firerainbow/readme.md
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/readme.md
                                  rename to content/firerainbow/readme.md
                                  diff --git a/branches/firebug1.4/content/firerainbow/support/example.html b/content/firerainbow/support/example.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/support/example.html
                                  rename to content/firerainbow/support/example.html
                                  diff --git a/branches/firebug1.4/content/firerainbow/support/screenshot.png b/content/firerainbow/support/screenshot.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/support/screenshot.png
                                  rename to content/firerainbow/support/screenshot.png
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/active4d.css b/content/firerainbow/themes/active4d.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/active4d.css
                                  rename to content/firerainbow/themes/active4d.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/all_hallows_eve.css b/content/firerainbow/themes/all_hallows_eve.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/all_hallows_eve.css
                                  rename to content/firerainbow/themes/all_hallows_eve.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/amy.css b/content/firerainbow/themes/amy.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/amy.css
                                  rename to content/firerainbow/themes/amy.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/blackboard.css b/content/firerainbow/themes/blackboard.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/blackboard.css
                                  rename to content/firerainbow/themes/blackboard.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/brilliance_black.css b/content/firerainbow/themes/brilliance_black.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/brilliance_black.css
                                  rename to content/firerainbow/themes/brilliance_black.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/brilliance_dull.css b/content/firerainbow/themes/brilliance_dull.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/brilliance_dull.css
                                  rename to content/firerainbow/themes/brilliance_dull.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/cobalt.css b/content/firerainbow/themes/cobalt.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/cobalt.css
                                  rename to content/firerainbow/themes/cobalt.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/codemirror.css b/content/firerainbow/themes/codemirror.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/codemirror.css
                                  rename to content/firerainbow/themes/codemirror.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/cowtown.css b/content/firerainbow/themes/cowtown.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/cowtown.css
                                  rename to content/firerainbow/themes/cowtown.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/dawn.css b/content/firerainbow/themes/dawn.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/dawn.css
                                  rename to content/firerainbow/themes/dawn.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/eclipse.css b/content/firerainbow/themes/eclipse.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/eclipse.css
                                  rename to content/firerainbow/themes/eclipse.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/eiffel.css b/content/firerainbow/themes/eiffel.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/eiffel.css
                                  rename to content/firerainbow/themes/eiffel.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/espresso_libre.css b/content/firerainbow/themes/espresso_libre.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/espresso_libre.css
                                  rename to content/firerainbow/themes/espresso_libre.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/idle.css b/content/firerainbow/themes/idle.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/idle.css
                                  rename to content/firerainbow/themes/idle.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/iplastic.css b/content/firerainbow/themes/iplastic.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/iplastic.css
                                  rename to content/firerainbow/themes/iplastic.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/ir_black.css b/content/firerainbow/themes/ir_black.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/ir_black.css
                                  rename to content/firerainbow/themes/ir_black.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/lazy.css b/content/firerainbow/themes/lazy.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/lazy.css
                                  rename to content/firerainbow/themes/lazy.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/mac_classic.css b/content/firerainbow/themes/mac_classic.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/mac_classic.css
                                  rename to content/firerainbow/themes/mac_classic.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/magicwb_amiga.css b/content/firerainbow/themes/magicwb_amiga.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/magicwb_amiga.css
                                  rename to content/firerainbow/themes/magicwb_amiga.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/pastels_on_dark.css b/content/firerainbow/themes/pastels_on_dark.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/pastels_on_dark.css
                                  rename to content/firerainbow/themes/pastels_on_dark.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/rainbow.css b/content/firerainbow/themes/rainbow.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/rainbow.css
                                  rename to content/firerainbow/themes/rainbow.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/slush_poppies.css b/content/firerainbow/themes/slush_poppies.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/slush_poppies.css
                                  rename to content/firerainbow/themes/slush_poppies.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/spacecadet.css b/content/firerainbow/themes/spacecadet.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/spacecadet.css
                                  rename to content/firerainbow/themes/spacecadet.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/sunburst.css b/content/firerainbow/themes/sunburst.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/sunburst.css
                                  rename to content/firerainbow/themes/sunburst.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/twilight.css b/content/firerainbow/themes/twilight.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/twilight.css
                                  rename to content/firerainbow/themes/twilight.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/themes/zenburnesque.css b/content/firerainbow/themes/zenburnesque.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/themes/zenburnesque.css
                                  rename to content/firerainbow/themes/zenburnesque.css
                                  diff --git a/branches/firebug1.4/content/firerainbow/utils/Rakefile b/content/firerainbow/utils/Rakefile
                                  similarity index 100%
                                  rename from branches/firebug1.4/content/firerainbow/utils/Rakefile
                                  rename to content/firerainbow/utils/Rakefile
                                  diff --git a/branches/firebug1.3/content/firebug/boot.js b/content/lite/boot.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/boot.js
                                  rename to content/lite/boot.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite/browser.js b/content/lite/browser.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite/browser.js
                                  rename to content/lite/browser.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite/cache.js b/content/lite/cache.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite/cache.js
                                  rename to content/lite/cache.js
                                  diff --git a/branches/firebug1.5/content/lite/chrome2.js b/content/lite/chrome2.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/lite/chrome2.js
                                  rename to content/lite/chrome2.js
                                  diff --git a/branches/firebug1.5/content/lite/chromeSkin.js b/content/lite/chromeSkin.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/lite/chromeSkin.js
                                  rename to content/lite/chromeSkin.js
                                  diff --git a/branches/firebug1.3/content/firebug/gui.js b/content/lite/gui.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/gui.js
                                  rename to content/lite/gui.js
                                  diff --git a/branches/firebug1.3/content/firebug/helloWorld.js b/content/lite/helloWorld.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/helloWorld.js
                                  rename to content/lite/helloWorld.js
                                  diff --git a/branches/firebug1.5/content/lite/html2.js b/content/lite/html2.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/lite/html2.js
                                  rename to content/lite/html2.js
                                  diff --git a/branches/firebug1.5/content/lite/html3.js b/content/lite/html3.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/lite/html3.js
                                  rename to content/lite/html3.js
                                  diff --git a/branches/firebug1.5/content/lite/inspector2.js b/content/lite/inspector2.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/lite/inspector2.js
                                  rename to content/lite/inspector2.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite.js b/content/lite/lite.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite.js
                                  rename to content/lite/lite.js
                                  diff --git a/branches/firebug1.3/content/firebug/plugin.js b/content/lite/plugin.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/plugin.js
                                  rename to content/lite/plugin.js
                                  diff --git a/branches/firebug1.3/content/firebug/pluginSample.js b/content/lite/pluginSample.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/pluginSample.js
                                  rename to content/lite/pluginSample.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite/proxy.js b/content/lite/proxy.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite/proxy.js
                                  rename to content/lite/proxy.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite/script.js b/content/lite/script.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite/script.js
                                  rename to content/lite/script.js
                                  diff --git a/branches/firebug1.3/content/firebug/selector.js b/content/lite/selector.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/selector.js
                                  rename to content/lite/selector.js
                                  diff --git a/branches/firebug1.3/content/firebug/lite/style.js b/content/lite/style.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/lite/style.js
                                  rename to content/lite/style.js
                                  diff --git a/branches/firebug1.3/content/firebug/xhr.js b/content/lite/xhr.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/content/firebug/xhr.js
                                  rename to content/lite/xhr.js
                                  diff --git a/branches/firebug1.5/content/notes.txt b/content/notes.txt
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/notes.txt
                                  rename to content/notes.txt
                                  diff --git a/branches/firebug1.5/content/roadmap.txt b/content/roadmap.txt
                                  similarity index 100%
                                  rename from branches/firebug1.5/content/roadmap.txt
                                  rename to content/roadmap.txt
                                  diff --git a/branches/firebug1.3/docs/beta/changelog.txt b/docs/beta/changelog.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/changelog.txt
                                  rename to docs/beta/changelog.txt
                                  diff --git a/branches/firebug1.3/docs/beta/index.html b/docs/beta/index.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/index.html
                                  rename to docs/beta/index.html
                                  diff --git a/branches/firebug1.3/docs/beta/retweet.js b/docs/beta/retweet.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/retweet.js
                                  rename to docs/beta/retweet.js
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img01.png b/docs/beta/screenshots/firebug1.3-img01.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img01.png
                                  rename to docs/beta/screenshots/firebug1.3-img01.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img02.png b/docs/beta/screenshots/firebug1.3-img02.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img02.png
                                  rename to docs/beta/screenshots/firebug1.3-img02.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img03.png b/docs/beta/screenshots/firebug1.3-img03.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img03.png
                                  rename to docs/beta/screenshots/firebug1.3-img03.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img04.png b/docs/beta/screenshots/firebug1.3-img04.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img04.png
                                  rename to docs/beta/screenshots/firebug1.3-img04.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img05.png b/docs/beta/screenshots/firebug1.3-img05.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img05.png
                                  rename to docs/beta/screenshots/firebug1.3-img05.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img06.png b/docs/beta/screenshots/firebug1.3-img06.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img06.png
                                  rename to docs/beta/screenshots/firebug1.3-img06.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img07.png b/docs/beta/screenshots/firebug1.3-img07.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img07.png
                                  rename to docs/beta/screenshots/firebug1.3-img07.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img08.png b/docs/beta/screenshots/firebug1.3-img08.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img08.png
                                  rename to docs/beta/screenshots/firebug1.3-img08.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img09.png b/docs/beta/screenshots/firebug1.3-img09.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img09.png
                                  rename to docs/beta/screenshots/firebug1.3-img09.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img10.png b/docs/beta/screenshots/firebug1.3-img10.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img10.png
                                  rename to docs/beta/screenshots/firebug1.3-img10.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img11.png b/docs/beta/screenshots/firebug1.3-img11.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img11.png
                                  rename to docs/beta/screenshots/firebug1.3-img11.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img12.png b/docs/beta/screenshots/firebug1.3-img12.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img12.png
                                  rename to docs/beta/screenshots/firebug1.3-img12.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-img13.png b/docs/beta/screenshots/firebug1.3-img13.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-img13.png
                                  rename to docs/beta/screenshots/firebug1.3-img13.png
                                  diff --git a/branches/firebug1.3/docs/beta/screenshots/firebug1.3-small.png b/docs/beta/screenshots/firebug1.3-small.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/beta/screenshots/firebug1.3-small.png
                                  rename to docs/beta/screenshots/firebug1.3-small.png
                                  diff --git a/branches/firebug1.3/docs/chrome/changelog.txt b/docs/chrome/changelog.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/chrome/changelog.txt
                                  rename to docs/chrome/changelog.txt
                                  diff --git a/branches/firebug1.3/docs/chrome/index.html b/docs/chrome/index.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/chrome/index.html
                                  rename to docs/chrome/index.html
                                  diff --git a/branches/firebug1.3/docs/chrome/info.txt b/docs/chrome/info.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/chrome/info.txt
                                  rename to docs/chrome/info.txt
                                  diff --git a/branches/firebug1.3/docs/latest/changelog.txt b/docs/latest/changelog.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/changelog.txt
                                  rename to docs/latest/changelog.txt
                                  diff --git a/branches/firebug1.3/docs/latest/index.html b/docs/latest/index.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/index.html
                                  rename to docs/latest/index.html
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img01.png b/docs/latest/screenshots/firebug1.3-img01.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img01.png
                                  rename to docs/latest/screenshots/firebug1.3-img01.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img02.png b/docs/latest/screenshots/firebug1.3-img02.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img02.png
                                  rename to docs/latest/screenshots/firebug1.3-img02.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img03.png b/docs/latest/screenshots/firebug1.3-img03.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img03.png
                                  rename to docs/latest/screenshots/firebug1.3-img03.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img04.png b/docs/latest/screenshots/firebug1.3-img04.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img04.png
                                  rename to docs/latest/screenshots/firebug1.3-img04.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img05.png b/docs/latest/screenshots/firebug1.3-img05.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img05.png
                                  rename to docs/latest/screenshots/firebug1.3-img05.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img06.png b/docs/latest/screenshots/firebug1.3-img06.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img06.png
                                  rename to docs/latest/screenshots/firebug1.3-img06.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img07.png b/docs/latest/screenshots/firebug1.3-img07.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img07.png
                                  rename to docs/latest/screenshots/firebug1.3-img07.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img08.png b/docs/latest/screenshots/firebug1.3-img08.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img08.png
                                  rename to docs/latest/screenshots/firebug1.3-img08.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img09.png b/docs/latest/screenshots/firebug1.3-img09.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img09.png
                                  rename to docs/latest/screenshots/firebug1.3-img09.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img10.png b/docs/latest/screenshots/firebug1.3-img10.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img10.png
                                  rename to docs/latest/screenshots/firebug1.3-img10.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img11.png b/docs/latest/screenshots/firebug1.3-img11.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img11.png
                                  rename to docs/latest/screenshots/firebug1.3-img11.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img12.png b/docs/latest/screenshots/firebug1.3-img12.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img12.png
                                  rename to docs/latest/screenshots/firebug1.3-img12.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-img13.png b/docs/latest/screenshots/firebug1.3-img13.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-img13.png
                                  rename to docs/latest/screenshots/firebug1.3-img13.png
                                  diff --git a/branches/firebug1.3/docs/latest/screenshots/firebug1.3-small.png b/docs/latest/screenshots/firebug1.3-small.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/docs/latest/screenshots/firebug1.3-small.png
                                  rename to docs/latest/screenshots/firebug1.3-small.png
                                  diff --git a/branches/firebug1.3/license.txt b/license.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/license.txt
                                  rename to license.txt
                                  diff --git a/branches/firebug1.3/plugin/proxy/proxy.php b/plugin/proxy/proxy.php
                                  similarity index 100%
                                  rename from branches/firebug1.3/plugin/proxy/proxy.php
                                  rename to plugin/proxy/proxy.php
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/chrome.manifest b/sandbox/HelloModule/app/chrome.manifest
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/chrome.manifest
                                  rename to sandbox/HelloModule/app/chrome.manifest
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/content/helloModule.js b/sandbox/HelloModule/app/content/helloModule.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/content/helloModule.js
                                  rename to sandbox/HelloModule/app/content/helloModule.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/content/helloModule.xul b/sandbox/HelloModule/app/content/helloModule.xul
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/content/helloModule.xul
                                  rename to sandbox/HelloModule/app/content/helloModule.xul
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/install.rdf b/sandbox/HelloModule/app/install.rdf
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/install.rdf
                                  rename to sandbox/HelloModule/app/install.rdf
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/Core/Base.js b/sandbox/HelloModule/app/modules/Core/Base.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/Core/Base.js
                                  rename to sandbox/HelloModule/app/modules/Core/Base.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/Core/CSS.js b/sandbox/HelloModule/app/modules/Core/CSS.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/Core/CSS.js
                                  rename to sandbox/HelloModule/app/modules/Core/CSS.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/Core/DOM.js b/sandbox/HelloModule/app/modules/Core/DOM.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/Core/DOM.js
                                  rename to sandbox/HelloModule/app/modules/Core/DOM.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/Core/Event.js b/sandbox/HelloModule/app/modules/Core/Event.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/Core/Event.js
                                  rename to sandbox/HelloModule/app/modules/Core/Event.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/Core/FBTrace.js b/sandbox/HelloModule/app/modules/Core/FBTrace.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/Core/FBTrace.js
                                  rename to sandbox/HelloModule/app/modules/Core/FBTrace.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/FBL.js b/sandbox/HelloModule/app/modules/FBL.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/FBL.js
                                  rename to sandbox/HelloModule/app/modules/FBL.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Domplate.js b/sandbox/HelloModule/app/modules/FBL/Domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Domplate.js
                                  rename to sandbox/HelloModule/app/modules/FBL/Domplate.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js b/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js
                                  rename to sandbox/HelloModule/app/modules/FBL/Domplate/DomTree.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Firebug.js b/sandbox/HelloModule/app/modules/FBL/Firebug.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/FBL/Firebug.js
                                  rename to sandbox/HelloModule/app/modules/FBL/Firebug.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules/FBL_old.js b/sandbox/HelloModule/app/modules/FBL_old.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules/FBL_old.js
                                  rename to sandbox/HelloModule/app/modules/FBL_old.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Domplate.js b/sandbox/HelloModule/app/modules_v2/Common/Domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Domplate.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Domplate.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js b/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Domplate/DomTree.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/FBL.js b/sandbox/HelloModule/app/modules_v2/Common/FBL.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/FBL.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/FBL.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug.js b/sandbox/HelloModule/app/modules_v2/Common/Firebug.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Firebug.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js b/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Firebug/CSS.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js b/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Firebug/DOM.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js b/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Lib/Base.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js b/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Lib/CSS.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js b/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Lib/DOM.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js b/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Lib/Event.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js b/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js
                                  rename to sandbox/HelloModule/app/modules_v2/Common/Lib/FBTrace.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js b/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js
                                  rename to sandbox/HelloModule/app/modules_v2/Lite/Firebug/CSS.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js b/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js
                                  rename to sandbox/HelloModule/app/modules_v2/Lite/Firebug/DOM.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js b/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js
                                  rename to sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/CSS.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js b/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js
                                  rename to sandbox/HelloModule/app/modules_v2/Mozilla/Firebug/DOM.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/server.js b/sandbox/HelloModule/app/server.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/server.js
                                  rename to sandbox/HelloModule/app/server.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/domTree.css b/sandbox/HelloModule/app/skin/classic/domTree.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/skin/classic/domTree.css
                                  rename to sandbox/HelloModule/app/skin/classic/domTree.css
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/skin/classic/helloModule.css b/sandbox/HelloModule/app/skin/classic/helloModule.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/skin/classic/helloModule.css
                                  rename to sandbox/HelloModule/app/skin/classic/helloModule.css
                                  diff --git a/branches/firebug1.3/skin/classic/twistyClosed.png b/sandbox/HelloModule/app/skin/classic/images/twistyClosed.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/twistyClosed.png
                                  rename to sandbox/HelloModule/app/skin/classic/images/twistyClosed.png
                                  diff --git a/branches/firebug1.3/skin/classic/twistyOpen.png b/sandbox/HelloModule/app/skin/classic/images/twistyOpen.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/twistyOpen.png
                                  rename to sandbox/HelloModule/app/skin/classic/images/twistyOpen.png
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/webapp/allplugins-require.js b/sandbox/HelloModule/app/webapp/allplugins-require.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/webapp/allplugins-require.js
                                  rename to sandbox/HelloModule/app/webapp/allplugins-require.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule.html b/sandbox/HelloModule/app/webapp/helloModule.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule.html
                                  rename to sandbox/HelloModule/app/webapp/helloModule.html
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule.js b/sandbox/HelloModule/app/webapp/helloModule.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule.js
                                  rename to sandbox/HelloModule/app/webapp/helloModule.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule2.html b/sandbox/HelloModule/app/webapp/helloModule2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule2.html
                                  rename to sandbox/HelloModule/app/webapp/helloModule2.html
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule2.js b/sandbox/HelloModule/app/webapp/helloModule2.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/app/webapp/helloModule2.js
                                  rename to sandbox/HelloModule/app/webapp/helloModule2.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/build-config.js b/sandbox/HelloModule/build-config.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/build-config.js
                                  rename to sandbox/HelloModule/build-config.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/build.bat b/sandbox/HelloModule/build.bat
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/build.bat
                                  rename to sandbox/HelloModule/build.bat
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/readme.txt b/sandbox/HelloModule/readme.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/readme.txt
                                  rename to sandbox/HelloModule/readme.txt
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/LICENSE b/sandbox/HelloModule/requirejs/LICENSE
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/LICENSE
                                  rename to sandbox/HelloModule/requirejs/LICENSE
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.bat b/sandbox/HelloModule/requirejs/build/build.bat
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.bat
                                  rename to sandbox/HelloModule/requirejs/build/build.bat
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.js b/sandbox/HelloModule/requirejs/build/build.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.js
                                  rename to sandbox/HelloModule/requirejs/build/build.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.sh b/sandbox/HelloModule/requirejs/build/build.sh
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/build.sh
                                  rename to sandbox/HelloModule/requirejs/build/build.sh
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/buildebug.bat b/sandbox/HelloModule/requirejs/build/buildebug.bat
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/buildebug.bat
                                  rename to sandbox/HelloModule/requirejs/build/buildebug.bat
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/buildebug.sh b/sandbox/HelloModule/requirejs/build/buildebug.sh
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/buildebug.sh
                                  rename to sandbox/HelloModule/requirejs/build/buildebug.sh
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/example.build.js b/sandbox/HelloModule/requirejs/build/example.build.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/example.build.js
                                  rename to sandbox/HelloModule/requirejs/build/example.build.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/build.js b/sandbox/HelloModule/requirejs/build/jslib/build.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/build.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/build.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/commandLine.js b/sandbox/HelloModule/requirejs/build/jslib/commandLine.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/commandLine.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/commandLine.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/commonJs.js b/sandbox/HelloModule/requirejs/build/jslib/commonJs.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/commonJs.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/commonJs.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js b/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/fileUtil.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/fileUtil.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/lang.js b/sandbox/HelloModule/requirejs/build/jslib/lang.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/lang.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/lang.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/logger.js b/sandbox/HelloModule/requirejs/build/jslib/logger.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/logger.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/logger.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/optimize.js b/sandbox/HelloModule/requirejs/build/jslib/optimize.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/optimize.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/optimize.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/parse.js b/sandbox/HelloModule/requirejs/build/jslib/parse.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/parse.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/parse.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/pragma.js b/sandbox/HelloModule/requirejs/build/jslib/pragma.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/pragma.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/pragma.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js b/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/jslib/requirePatch.js
                                  rename to sandbox/HelloModule/requirejs/build/jslib/requirePatch.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/COPYING b/sandbox/HelloModule/requirejs/build/lib/closure/COPYING
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/COPYING
                                  rename to sandbox/HelloModule/requirejs/build/lib/closure/COPYING
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/README b/sandbox/HelloModule/requirejs/build/lib/closure/README
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/README
                                  rename to sandbox/HelloModule/requirejs/build/lib/closure/README
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar b/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar
                                  rename to sandbox/HelloModule/requirejs/build/lib/closure/compiler.jar
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE b/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE
                                  rename to sandbox/HelloModule/requirejs/build/lib/rhino/LICENSE
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar b/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/build/lib/rhino/js.jar
                                  rename to sandbox/HelloModule/requirejs/build/lib/rhino/js.jar
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require.js b/sandbox/HelloModule/requirejs/require.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require.js
                                  rename to sandbox/HelloModule/requirejs/require.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require/i18n.js b/sandbox/HelloModule/requirejs/require/i18n.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require/i18n.js
                                  rename to sandbox/HelloModule/requirejs/require/i18n.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require/order.js b/sandbox/HelloModule/requirejs/require/order.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require/order.js
                                  rename to sandbox/HelloModule/requirejs/require/order.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require/rhino.js b/sandbox/HelloModule/requirejs/require/rhino.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require/rhino.js
                                  rename to sandbox/HelloModule/requirejs/require/rhino.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require/text.js b/sandbox/HelloModule/requirejs/require/text.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require/text.js
                                  rename to sandbox/HelloModule/requirejs/require/text.js
                                  diff --git a/branches/firebug1.4/sandbox/HelloModule/requirejs/require/transportD.js b/sandbox/HelloModule/requirejs/require/transportD.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/HelloModule/requirejs/require/transportD.js
                                  rename to sandbox/HelloModule/requirejs/require/transportD.js
                                  diff --git a/branches/firebug1.4/sandbox/beta.html b/sandbox/beta.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/beta.html
                                  rename to sandbox/beta.html
                                  diff --git a/branches/firebug1.3/test/css/css.css b/sandbox/css/css.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/css/css.css
                                  rename to sandbox/css/css.css
                                  diff --git a/branches/firebug1.3/test/css/css.imported.css b/sandbox/css/css.imported.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/css/css.imported.css
                                  rename to sandbox/css/css.imported.css
                                  diff --git a/branches/firebug1.3/test/css/test.html b/sandbox/css/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/css/test.html
                                  rename to sandbox/css/test.html
                                  diff --git a/branches/firebug1.4/sandbox/dom.html b/sandbox/dom.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/dom.html
                                  rename to sandbox/dom.html
                                  diff --git a/branches/firebug1.3/test/domplate.html b/sandbox/domplate.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate.html
                                  rename to sandbox/domplate.html
                                  diff --git a/branches/firebug1.3/test/domplate/dom-attributes.html b/sandbox/domplate/dom-attributes.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/dom-attributes.html
                                  rename to sandbox/domplate/dom-attributes.html
                                  diff --git a/branches/firebug1.3/test/domplate/dom-event.html b/sandbox/domplate/dom-event.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/dom-event.html
                                  rename to sandbox/domplate/dom-event.html
                                  diff --git a/branches/firebug1.3/test/domplate/dom-properties.html b/sandbox/domplate/dom-properties.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/dom-properties.html
                                  rename to sandbox/domplate/dom-properties.html
                                  diff --git a/branches/firebug1.3/test/domplate/dynamic-class-attribute.html b/sandbox/domplate/dynamic-class-attribute.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/dynamic-class-attribute.html
                                  rename to sandbox/domplate/dynamic-class-attribute.html
                                  diff --git a/branches/firebug1.3/test/domplate/for-loop-custom-iterator.html b/sandbox/domplate/for-loop-custom-iterator.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/for-loop-custom-iterator.html
                                  rename to sandbox/domplate/for-loop-custom-iterator.html
                                  diff --git a/branches/firebug1.3/test/domplate/for-loop.html b/sandbox/domplate/for-loop.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/for-loop.html
                                  rename to sandbox/domplate/for-loop.html
                                  diff --git a/branches/firebug1.3/test/domplate/hello-world.html b/sandbox/domplate/hello-world.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/hello-world.html
                                  rename to sandbox/domplate/hello-world.html
                                  diff --git a/branches/firebug1.3/test/domplate/input-data.html b/sandbox/domplate/input-data.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/input-data.html
                                  rename to sandbox/domplate/input-data.html
                                  diff --git a/branches/firebug1.3/test/domplate/pass-data.html b/sandbox/domplate/pass-data.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/pass-data.html
                                  rename to sandbox/domplate/pass-data.html
                                  diff --git a/branches/firebug1.3/test/domplate/reuse-tag.html b/sandbox/domplate/reuse-tag.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/reuse-tag.html
                                  rename to sandbox/domplate/reuse-tag.html
                                  diff --git a/branches/firebug1.3/test/domplate/table-2d-array.html b/sandbox/domplate/table-2d-array.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/table-2d-array.html
                                  rename to sandbox/domplate/table-2d-array.html
                                  diff --git a/branches/firebug1.3/test/domplate/tree.html b/sandbox/domplate/tree.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/domplate/tree.html
                                  rename to sandbox/domplate/tree.html
                                  diff --git a/branches/firebug1.4/sandbox/firebugLite.html b/sandbox/firebugLite.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firebugLite.html
                                  rename to sandbox/firebugLite.html
                                  diff --git a/branches/firebug1.4/sandbox/firebugLite2.html b/sandbox/firebugLite2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firebugLite2.html
                                  rename to sandbox/firebugLite2.html
                                  diff --git a/branches/firebug1.4/sandbox/firequery/firequery.css b/sandbox/firequery/firequery.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firequery/firequery.css
                                  rename to sandbox/firequery/firequery.css
                                  diff --git a/branches/firebug1.4/sandbox/firequery/firequery.js b/sandbox/firequery/firequery.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firequery/firequery.js
                                  rename to sandbox/firequery/firequery.js
                                  diff --git a/branches/firebug1.4/sandbox/firequery/firequerylite.js b/sandbox/firequery/firequerylite.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firequery/firequerylite.js
                                  rename to sandbox/firequery/firequerylite.js
                                  diff --git a/branches/firebug1.4/sandbox/firequery/index.html b/sandbox/firequery/index.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/firequery/index.html
                                  rename to sandbox/firequery/index.html
                                  diff --git a/branches/firebug1.4/sandbox/full.html b/sandbox/full.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/full.html
                                  rename to sandbox/full.html
                                  diff --git a/branches/firebug1.3/test/head/xhtml/xhml-strict.html b/sandbox/head/xhtml/xhml-strict.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/head/xhtml/xhml-strict.html
                                  rename to sandbox/head/xhtml/xhml-strict.html
                                  diff --git a/branches/firebug1.3/test/head/xhtml/xhml-transitional.html b/sandbox/head/xhtml/xhml-transitional.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/head/xhtml/xhml-transitional.html
                                  rename to sandbox/head/xhtml/xhml-transitional.html
                                  diff --git a/branches/firebug1.3/test/head/xsl/xml-xsl.xml b/sandbox/head/xsl/xml-xsl.xml
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/head/xsl/xml-xsl.xml
                                  rename to sandbox/head/xsl/xml-xsl.xml
                                  diff --git a/branches/firebug1.3/test/head/xsl/xml-xsl.xsl b/sandbox/head/xsl/xml-xsl.xsl
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/head/xsl/xml-xsl.xsl
                                  rename to sandbox/head/xsl/xml-xsl.xsl
                                  diff --git a/branches/firebug1.4/sandbox/i18n/firebug.properties b/sandbox/i18n/firebug.properties
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/i18n/firebug.properties
                                  rename to sandbox/i18n/firebug.properties
                                  diff --git a/branches/firebug1.4/sandbox/i18n/test.html b/sandbox/i18n/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/i18n/test.html
                                  rename to sandbox/i18n/test.html
                                  diff --git a/branches/firebug1.3/test/issues/1145-xsl/firebug.xml b/sandbox/issues/1145-xsl/firebug.xml
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/1145-xsl/firebug.xml
                                  rename to sandbox/issues/1145-xsl/firebug.xml
                                  diff --git a/branches/firebug1.3/test/issues/1145-xsl/firebug.xsl b/sandbox/issues/1145-xsl/firebug.xsl
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/1145-xsl/firebug.xsl
                                  rename to sandbox/issues/1145-xsl/firebug.xsl
                                  diff --git a/branches/firebug1.3/test/issues/2756-local-XHR/test.html b/sandbox/issues/2756-local-XHR/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2756-local-XHR/test.html
                                  rename to sandbox/issues/2756-local-XHR/test.html
                                  diff --git a/branches/firebug1.3/test/issues/2756-local-XHR/test.txt b/sandbox/issues/2756-local-XHR/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2756-local-XHR/test.txt
                                  rename to sandbox/issues/2756-local-XHR/test.txt
                                  diff --git a/branches/firebug1.3/test/issues/2840-synchronous-XHR/test.html b/sandbox/issues/2840-synchronous-XHR/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2840-synchronous-XHR/test.html
                                  rename to sandbox/issues/2840-synchronous-XHR/test.html
                                  diff --git a/branches/firebug1.3/test/issues/2840-synchronous-XHR/test.txt b/sandbox/issues/2840-synchronous-XHR/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2840-synchronous-XHR/test.txt
                                  rename to sandbox/issues/2840-synchronous-XHR/test.txt
                                  diff --git a/branches/firebug1.3/test/issues/2846-offline-XHR/test.html b/sandbox/issues/2846-offline-XHR/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2846-offline-XHR/test.html
                                  rename to sandbox/issues/2846-offline-XHR/test.html
                                  diff --git a/branches/firebug1.3/test/issues/2846-offline-XHR/test.txt b/sandbox/issues/2846-offline-XHR/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2846-offline-XHR/test.txt
                                  rename to sandbox/issues/2846-offline-XHR/test.txt
                                  diff --git a/branches/firebug1.3/test/issues/2977-XHR-params/post.php b/sandbox/issues/2977-XHR-params/post.php
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2977-XHR-params/post.php
                                  rename to sandbox/issues/2977-XHR-params/post.php
                                  diff --git a/branches/firebug1.3/test/issues/2977-XHR-params/test.html b/sandbox/issues/2977-XHR-params/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2977-XHR-params/test.html
                                  rename to sandbox/issues/2977-XHR-params/test.html
                                  diff --git a/branches/firebug1.3/test/issues/2977-XHR-params/test.txt b/sandbox/issues/2977-XHR-params/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/2977-XHR-params/test.txt
                                  rename to sandbox/issues/2977-XHR-params/test.txt
                                  diff --git a/branches/firebug1.3/test/issues/3118-XHR-long-lines/test.html b/sandbox/issues/3118-XHR-long-lines/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3118-XHR-long-lines/test.html
                                  rename to sandbox/issues/3118-XHR-long-lines/test.html
                                  diff --git a/branches/firebug1.3/test/issues/3118-XHR-long-lines/test.txt b/sandbox/issues/3118-XHR-long-lines/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3118-XHR-long-lines/test.txt
                                  rename to sandbox/issues/3118-XHR-long-lines/test.txt
                                  diff --git a/branches/firebug1.3/test/issues/3178-bookmarlet-XSL/firebug.xml b/sandbox/issues/3178-bookmarlet-XSL/firebug.xml
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3178-bookmarlet-XSL/firebug.xml
                                  rename to sandbox/issues/3178-bookmarlet-XSL/firebug.xml
                                  diff --git a/branches/firebug1.3/test/issues/3178-bookmarlet-XSL/firebug.xsl b/sandbox/issues/3178-bookmarlet-XSL/firebug.xsl
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3178-bookmarlet-XSL/firebug.xsl
                                  rename to sandbox/issues/3178-bookmarlet-XSL/firebug.xsl
                                  diff --git a/branches/firebug1.3/test/issues/3224-IE-external-CSS/test.html b/sandbox/issues/3224-IE-external-CSS/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3224-IE-external-CSS/test.html
                                  rename to sandbox/issues/3224-IE-external-CSS/test.html
                                  diff --git a/branches/firebug1.3/test/issues/3482-google-chrome-frame/bookmarklet.html b/sandbox/issues/3482-google-chrome-frame/bookmarklet.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3482-google-chrome-frame/bookmarklet.html
                                  rename to sandbox/issues/3482-google-chrome-frame/bookmarklet.html
                                  diff --git a/branches/firebug1.3/test/issues/3482-google-chrome-frame/fblite-bookmarklet.html b/sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3482-google-chrome-frame/fblite-bookmarklet.html
                                  rename to sandbox/issues/3482-google-chrome-frame/fblite-bookmarklet.html
                                  diff --git a/branches/firebug1.3/test/issues/3482-google-chrome-frame/fblite-link.html b/sandbox/issues/3482-google-chrome-frame/fblite-link.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3482-google-chrome-frame/fblite-link.html
                                  rename to sandbox/issues/3482-google-chrome-frame/fblite-link.html
                                  diff --git a/branches/firebug1.3/test/issues/3504-jQuery-XHR/external-no-fblite.html b/sandbox/issues/3504-jQuery-XHR/external-no-fblite.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3504-jQuery-XHR/external-no-fblite.html
                                  rename to sandbox/issues/3504-jQuery-XHR/external-no-fblite.html
                                  diff --git a/branches/firebug1.3/test/issues/3504-jQuery-XHR/external.html b/sandbox/issues/3504-jQuery-XHR/external.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3504-jQuery-XHR/external.html
                                  rename to sandbox/issues/3504-jQuery-XHR/external.html
                                  diff --git a/branches/firebug1.3/test/issues/3504-jQuery-XHR/jquery.js b/sandbox/issues/3504-jQuery-XHR/jquery.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3504-jQuery-XHR/jquery.js
                                  rename to sandbox/issues/3504-jQuery-XHR/jquery.js
                                  diff --git a/branches/firebug1.3/test/issues/3504-jQuery-XHR/test.html b/sandbox/issues/3504-jQuery-XHR/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3504-jQuery-XHR/test.html
                                  rename to sandbox/issues/3504-jQuery-XHR/test.html
                                  diff --git a/branches/firebug1.3/test/issues/3504-jQuery-XHR/test.txt b/sandbox/issues/3504-jQuery-XHR/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/issues/3504-jQuery-XHR/test.txt
                                  rename to sandbox/issues/3504-jQuery-XHR/test.txt
                                  diff --git a/branches/firebug1.5/sandbox/measure.js b/sandbox/measure.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/measure.js
                                  rename to sandbox/measure.js
                                  diff --git a/branches/firebug1.3/test/plugin/index.html b/sandbox/plugin/index.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/plugin/index.html
                                  rename to sandbox/plugin/index.html
                                  diff --git a/branches/firebug1.3/test/plugin/plugin.js b/sandbox/plugin/plugin.js
                                  similarity index 100%
                                  rename from branches/firebug1.3/test/plugin/plugin.js
                                  rename to sandbox/plugin/plugin.js
                                  diff --git a/branches/firebug1.4/sandbox/relative.html b/sandbox/relative.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/relative.html
                                  rename to sandbox/relative.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/event/cache.html b/sandbox/sandbox/event/cache.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/event/cache.html
                                  rename to sandbox/sandbox/event/cache.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/event/test.html b/sandbox/sandbox/event/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/event/test.html
                                  rename to sandbox/sandbox/event/test.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype1.html b/sandbox/sandbox/fastSourceBox/prototype1.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype1.html
                                  rename to sandbox/sandbox/fastSourceBox/prototype1.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype2.html b/sandbox/sandbox/fastSourceBox/prototype2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype2.html
                                  rename to sandbox/sandbox/fastSourceBox/prototype2.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype2b.html b/sandbox/sandbox/fastSourceBox/prototype2b.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/fastSourceBox/prototype2b.html
                                  rename to sandbox/sandbox/fastSourceBox/prototype2b.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/Templarian_inspector.png b/sandbox/sandbox/flexBox/Templarian_inspector.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBox/Templarian_inspector.png
                                  rename to sandbox/sandbox/flexBox/Templarian_inspector.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/applications-system3.png b/sandbox/sandbox/flexBox/applications-system3.png
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/applications-system3.png
                                  rename to sandbox/sandbox/flexBox/applications-system3.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/buttonBg2.png b/sandbox/sandbox/flexBox/buttonBg2.png
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/buttonBg2.png
                                  rename to sandbox/sandbox/flexBox/buttonBg2.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/buttonBgHover2.png b/sandbox/sandbox/flexBox/buttonBgHover2.png
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/buttonBgHover2.png
                                  rename to sandbox/sandbox/flexBox/buttonBgHover2.png
                                  diff --git a/branches/firebug1.3/skin/classic/detach.png b/sandbox/sandbox/flexBox/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/detach.png
                                  rename to sandbox/sandbox/flexBox/detach.png
                                  diff --git a/branches/firebug1.3/skin/classic/detachHover.png b/sandbox/sandbox/flexBox/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/detachHover.png
                                  rename to sandbox/sandbox/flexBox/detachHover.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/firebug.css b/sandbox/sandbox/flexBox/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/firebug.css
                                  rename to sandbox/sandbox/flexBox/firebug.css
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/firebug.html b/sandbox/sandbox/flexBox/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/firebug.html
                                  rename to sandbox/sandbox/flexBox/firebug.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/firebugX.png b/sandbox/sandbox/flexBox/firebugX.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBox/firebugX.png
                                  rename to sandbox/sandbox/flexBox/firebugX.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/gui.css b/sandbox/sandbox/flexBox/gui.css
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/gui.css
                                  rename to sandbox/sandbox/flexBox/gui.css
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/include/flexBox.css b/sandbox/sandbox/flexBox/include/flexBox.css
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/include/flexBox.css
                                  rename to sandbox/sandbox/flexBox/include/flexBox.css
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/include/flexBox.js b/sandbox/sandbox/flexBox/include/flexBox.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/include/flexBox.js
                                  rename to sandbox/sandbox/flexBox/include/flexBox.js
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/include/measure.js b/sandbox/sandbox/flexBox/include/measure.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/include/measure.js
                                  rename to sandbox/sandbox/flexBox/include/measure.js
                                  diff --git a/branches/firebug1.3/skin/classic/min.png b/sandbox/sandbox/flexBox/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/min.png
                                  rename to sandbox/sandbox/flexBox/min.png
                                  diff --git a/branches/firebug1.3/skin/classic/minHover.png b/sandbox/sandbox/flexBox/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/minHover.png
                                  rename to sandbox/sandbox/flexBox/minHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/off.png b/sandbox/sandbox/flexBox/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/off.png
                                  rename to sandbox/sandbox/flexBox/off.png
                                  diff --git a/branches/firebug1.3/skin/classic/offHover.png b/sandbox/sandbox/flexBox/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/offHover.png
                                  rename to sandbox/sandbox/flexBox/offHover.png
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/panel.html b/sandbox/sandbox/flexBox/panel.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/panel.html
                                  rename to sandbox/sandbox/flexBox/panel.html
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/flexBox/splitter.png b/sandbox/sandbox/flexBox/splitter.png
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/flexBox/splitter.png
                                  rename to sandbox/sandbox/flexBox/splitter.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/tabBg.png b/sandbox/sandbox/flexBox/tabBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBox/tabBg.png
                                  rename to sandbox/sandbox/flexBox/tabBg.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBox/tabBgTop.png b/sandbox/sandbox/flexBox/tabBgTop.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBox/tabBgTop.png
                                  rename to sandbox/sandbox/flexBox/tabBgTop.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt b/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt
                                  rename to sandbox/sandbox/flexBoxStudies/1. CONSIDERATIONS.txt
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box.html b/sandbox/sandbox/flexBoxStudies/box.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box.html
                                  rename to sandbox/sandbox/flexBoxStudies/box.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box1.html b/sandbox/sandbox/flexBoxStudies/box1.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box1.html
                                  rename to sandbox/sandbox/flexBoxStudies/box1.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box2.html b/sandbox/sandbox/flexBoxStudies/box2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box2.html
                                  rename to sandbox/sandbox/flexBoxStudies/box2.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box3.html b/sandbox/sandbox/flexBoxStudies/box3.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box3.html
                                  rename to sandbox/sandbox/flexBoxStudies/box3.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box4.html b/sandbox/sandbox/flexBoxStudies/box4.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box4.html
                                  rename to sandbox/sandbox/flexBoxStudies/box4.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box4.html.bak b/sandbox/sandbox/flexBoxStudies/box4.html.bak
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box4.html.bak
                                  rename to sandbox/sandbox/flexBoxStudies/box4.html.bak
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box5.html b/sandbox/sandbox/flexBoxStudies/box5.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box5.html
                                  rename to sandbox/sandbox/flexBoxStudies/box5.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box5trans.html b/sandbox/sandbox/flexBoxStudies/box5trans.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box5trans.html
                                  rename to sandbox/sandbox/flexBoxStudies/box5trans.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6.html b/sandbox/sandbox/flexBoxStudies/box6.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6.html
                                  rename to sandbox/sandbox/flexBoxStudies/box6.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6trans.html b/sandbox/sandbox/flexBoxStudies/box6trans.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6trans.html
                                  rename to sandbox/sandbox/flexBoxStudies/box6trans.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6trans.html.bak b/sandbox/sandbox/flexBoxStudies/box6trans.html.bak
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box6trans.html.bak
                                  rename to sandbox/sandbox/flexBoxStudies/box6trans.html.bak
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7.html b/sandbox/sandbox/flexBoxStudies/box7.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7.html
                                  rename to sandbox/sandbox/flexBoxStudies/box7.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7trans.html b/sandbox/sandbox/flexBoxStudies/box7trans.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7trans.html
                                  rename to sandbox/sandbox/flexBoxStudies/box7trans.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7trans.html.bak b/sandbox/sandbox/flexBoxStudies/box7trans.html.bak
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/box7trans.html.bak
                                  rename to sandbox/sandbox/flexBoxStudies/box7trans.html.bak
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/boxTest.html b/sandbox/sandbox/flexBoxStudies/boxTest.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/boxTest.html
                                  rename to sandbox/sandbox/flexBoxStudies/boxTest.html
                                  diff --git a/branches/firebug1.3/skin/xp/firebug.IE6.css b/sandbox/sandbox/flexBoxStudies/firebug.IE6.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/firebug.IE6.css
                                  rename to sandbox/sandbox/flexBoxStudies/firebug.IE6.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.css b/sandbox/sandbox/flexBoxStudies/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebug.css
                                  rename to sandbox/sandbox/flexBoxStudies/firebug.css
                                  diff --git a/branches/firebug1.3/skin/classic/firebug.html b/sandbox/sandbox/flexBoxStudies/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/firebug.html
                                  rename to sandbox/sandbox/flexBoxStudies/firebug.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX.css b/sandbox/sandbox/flexBoxStudies/firebugX.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX.css
                                  rename to sandbox/sandbox/flexBoxStudies/firebugX.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX.html b/sandbox/sandbox/flexBoxStudies/firebugX.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX.html
                                  rename to sandbox/sandbox/flexBoxStudies/firebugX.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX1.css b/sandbox/sandbox/flexBoxStudies/firebugX1.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX1.css
                                  rename to sandbox/sandbox/flexBoxStudies/firebugX1.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX1.html b/sandbox/sandbox/flexBoxStudies/firebugX1.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugX1.html
                                  rename to sandbox/sandbox/flexBoxStudies/firebugX1.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugtest.html b/sandbox/sandbox/flexBoxStudies/firebugtest.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/firebugtest.html
                                  rename to sandbox/sandbox/flexBoxStudies/firebugtest.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/flexBoxStudies/ieHeight.html b/sandbox/sandbox/flexBoxStudies/ieHeight.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/flexBoxStudies/ieHeight.html
                                  rename to sandbox/sandbox/flexBoxStudies/ieHeight.html
                                  diff --git a/branches/firebug1.3/skin/classic/blank.gif b/sandbox/sandbox/flexBoxStudies/img/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/blank.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/blank.gif
                                  diff --git a/branches/firebug1.3/skin/classic/buttonBg.png b/sandbox/sandbox/flexBoxStudies/img/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/buttonBg.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/buttonBg.png
                                  diff --git a/branches/firebug1.3/skin/classic/buttonBgHover.png b/sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/buttonBgHover.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/buttonBgHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/disable.gif b/sandbox/sandbox/flexBoxStudies/img/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/disable.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/disable.gif
                                  diff --git a/branches/firebug1.3/skin/classic/disable.png b/sandbox/sandbox/flexBoxStudies/img/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/disable.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/disable.png
                                  diff --git a/branches/firebug1.3/skin/classic/disableHover.gif b/sandbox/sandbox/flexBoxStudies/img/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/disableHover.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/disableHover.gif
                                  diff --git a/branches/firebug1.3/skin/classic/disableHover.png b/sandbox/sandbox/flexBoxStudies/img/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/disableHover.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/disableHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/down.png b/sandbox/sandbox/flexBoxStudies/img/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/down.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/down.png
                                  diff --git a/branches/firebug1.3/skin/classic/downActive.png b/sandbox/sandbox/flexBoxStudies/img/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/downActive.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/downActive.png
                                  diff --git a/branches/firebug1.3/skin/classic/downHover.png b/sandbox/sandbox/flexBoxStudies/img/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/downHover.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/downHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/errorIcon-sm.png b/sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/errorIcon-sm.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/errorIcon-sm.png
                                  diff --git a/branches/firebug1.3/skin/classic/errorIcon.gif b/sandbox/sandbox/flexBoxStudies/img/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/errorIcon.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/errorIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon.png b/sandbox/sandbox/flexBoxStudies/img/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/errorIcon.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/errorIcon.png
                                  diff --git a/branches/firebug1.3/skin/xp/firebug.png b/sandbox/sandbox/flexBoxStudies/img/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/firebug.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/firebug.png
                                  diff --git a/branches/firebug1.3/skin/classic/group.gif b/sandbox/sandbox/flexBoxStudies/img/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/group.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/group.gif
                                  diff --git a/branches/firebug1.3/skin/classic/infoIcon.gif b/sandbox/sandbox/flexBoxStudies/img/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/infoIcon.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/infoIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/infoIcon.png b/sandbox/sandbox/flexBoxStudies/img/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/infoIcon.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/infoIcon.png
                                  diff --git a/branches/firebug1.3/skin/classic/loading_16.gif b/sandbox/sandbox/flexBoxStudies/img/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/loading_16.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/loading_16.gif
                                  diff --git a/branches/firebug1.3/skin/classic/pixel_transparent.gif b/sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/pixel_transparent.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/pixel_transparent.gif
                                  diff --git a/branches/firebug1.3/skin/classic/roundCorner.svg b/sandbox/sandbox/flexBoxStudies/img/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/roundCorner.svg
                                  rename to sandbox/sandbox/flexBoxStudies/img/roundCorner.svg
                                  diff --git a/branches/firebug1.3/skin/classic/search.gif b/sandbox/sandbox/flexBoxStudies/img/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/search.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/search.gif
                                  diff --git a/branches/firebug1.3/skin/classic/search.png b/sandbox/sandbox/flexBoxStudies/img/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/search.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/search.png
                                  diff --git a/branches/firebug1.3/skin/classic/shadow.gif b/sandbox/sandbox/flexBoxStudies/img/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/shadow.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/shadow.gif
                                  diff --git a/branches/firebug1.3/skin/classic/shadow2.gif b/sandbox/sandbox/flexBoxStudies/img/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/shadow2.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/shadow2.gif
                                  diff --git a/branches/firebug1.3/skin/classic/shadowAlpha.png b/sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/shadowAlpha.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/shadowAlpha.png
                                  diff --git a/branches/firebug1.3/skin/xp/sprite.png b/sandbox/sandbox/flexBoxStudies/img/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/sprite.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/sprite.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabHoverLeft.png b/sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabHoverLeft.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabHoverLeft.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabHoverMid.png b/sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabHoverMid.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabHoverMid.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabHoverRight.png b/sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabHoverRight.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabHoverRight.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabLeft.png b/sandbox/sandbox/flexBoxStudies/img/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabLeft.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabLeft.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMenuCheckbox.png b/sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMenuCheckbox.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMenuPin.png b/sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMenuPin.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMenuPin.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMenuRadio.png b/sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMenuRadio.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMenuRadio.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMenuTarget.png b/sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMenuTarget.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMenuTarget.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMenuTargetHover.png b/sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMenuTargetHover.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMid.png b/sandbox/sandbox/flexBoxStudies/img/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMid.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabMid.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabRight.png b/sandbox/sandbox/flexBoxStudies/img/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabRight.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/tabRight.png
                                  diff --git a/branches/firebug1.3/skin/classic/textEditorBorders.gif b/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/textEditorBorders.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/textEditorBorders.gif
                                  diff --git a/branches/firebug1.3/skin/classic/textEditorBorders.png b/sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/textEditorBorders.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/textEditorBorders.png
                                  diff --git a/branches/firebug1.3/skin/classic/textEditorCorners.gif b/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/textEditorCorners.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/textEditorCorners.gif
                                  diff --git a/branches/firebug1.3/skin/classic/textEditorCorners.png b/sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/textEditorCorners.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/textEditorCorners.png
                                  diff --git a/branches/firebug1.3/skin/xp/titlebarMid.png b/sandbox/sandbox/flexBoxStudies/img/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/titlebarMid.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/titlebarMid.png
                                  diff --git a/branches/firebug1.3/skin/xp/toolbarMid.png b/sandbox/sandbox/flexBoxStudies/img/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/toolbarMid.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/toolbarMid.png
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tree_close.gif b/sandbox/sandbox/flexBoxStudies/img/tree_close.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tree_close.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/tree_close.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/tree_open.gif b/sandbox/sandbox/flexBoxStudies/img/tree_open.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/tree_open.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/tree_open.gif
                                  diff --git a/branches/firebug1.3/skin/classic/up.png b/sandbox/sandbox/flexBoxStudies/img/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/up.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/up.png
                                  diff --git a/branches/firebug1.3/skin/classic/upActive.png b/sandbox/sandbox/flexBoxStudies/img/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/upActive.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/upActive.png
                                  diff --git a/branches/firebug1.3/skin/classic/upHover.png b/sandbox/sandbox/flexBoxStudies/img/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/upHover.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/upHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/warningIcon.gif b/sandbox/sandbox/flexBoxStudies/img/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/warningIcon.gif
                                  rename to sandbox/sandbox/flexBoxStudies/img/warningIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension-beta/skin/xp/warningIcon.png b/sandbox/sandbox/flexBoxStudies/img/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension-beta/skin/xp/warningIcon.png
                                  rename to sandbox/sandbox/flexBoxStudies/img/warningIcon.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/editor.css b/sandbox/sandbox/orion/editor.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/editor.css
                                  rename to sandbox/sandbox/orion/editor.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js-tests/test-model.js b/sandbox/sandbox/orion/js-tests/test-model.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js-tests/test-model.js
                                  rename to sandbox/sandbox/orion/js-tests/test-model.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js-tests/test-performance.js b/sandbox/sandbox/orion/js-tests/test-performance.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js-tests/test-performance.js
                                  rename to sandbox/sandbox/orion/js-tests/test-performance.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor.js b/sandbox/sandbox/orion/js/editor.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor.js
                                  rename to sandbox/sandbox/orion/js/editor.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor_improved.js b/sandbox/sandbox/orion/js/editor_improved.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor_improved.js
                                  rename to sandbox/sandbox/orion/js/editor_improved.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor_new.js b/sandbox/sandbox/orion/js/editor_new.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor_new.js
                                  rename to sandbox/sandbox/orion/js/editor_new.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor_nightly.js b/sandbox/sandbox/orion/js/editor_nightly.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor_nightly.js
                                  rename to sandbox/sandbox/orion/js/editor_nightly.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor_old.js b/sandbox/sandbox/orion/js/editor_old.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor_old.js
                                  rename to sandbox/sandbox/orion/js/editor_old.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/editor_original.js b/sandbox/sandbox/orion/js/editor_original.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/editor_original.js
                                  rename to sandbox/sandbox/orion/js/editor_original.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/model.js b/sandbox/sandbox/orion/js/model.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/model.js
                                  rename to sandbox/sandbox/orion/js/model.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/js/model_nightly.js b/sandbox/sandbox/orion/js/model_nightly.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/js/model_nightly.js
                                  rename to sandbox/sandbox/orion/js/model_nightly.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/orion-improved.html b/sandbox/sandbox/orion/orion-improved.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/orion-improved.html
                                  rename to sandbox/sandbox/orion/orion-improved.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/orion.html b/sandbox/sandbox/orion/orion.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/orion.html
                                  rename to sandbox/sandbox/orion/orion.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/brkp_obj.gif b/sandbox/sandbox/orion/samples/brkp_obj.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/brkp_obj.gif
                                  rename to sandbox/sandbox/orion/samples/brkp_obj.gif
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/browserEditor.html b/sandbox/sandbox/orion/samples/browserEditor.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/browserEditor.html
                                  rename to sandbox/sandbox/orion/samples/browserEditor.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/console.js b/sandbox/sandbox/orion/samples/console.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/console.js
                                  rename to sandbox/sandbox/orion/samples/console.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/cr.png b/sandbox/sandbox/orion/samples/cr.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/cr.png
                                  rename to sandbox/sandbox/orion/samples/cr.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/demo.html b/sandbox/sandbox/orion/samples/demo.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/demo.html
                                  rename to sandbox/sandbox/orion/samples/demo.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/editor.css b/sandbox/sandbox/orion/samples/editor.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/editor.css
                                  rename to sandbox/sandbox/orion/samples/editor.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/rulers.js b/sandbox/sandbox/orion/samples/rulers.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/rulers.js
                                  rename to sandbox/sandbox/orion/samples/rulers.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/space.png b/sandbox/sandbox/orion/samples/space.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/space.png
                                  rename to sandbox/sandbox/orion/samples/space.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/styler.js b/sandbox/sandbox/orion/samples/styler.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/styler.js
                                  rename to sandbox/sandbox/orion/samples/styler.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/styles.txt b/sandbox/sandbox/orion/samples/styles.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/styles.txt
                                  rename to sandbox/sandbox/orion/samples/styles.txt
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/tab.png b/sandbox/sandbox/orion/samples/tab.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/tab.png
                                  rename to sandbox/sandbox/orion/samples/tab.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/text.txt b/sandbox/sandbox/orion/samples/text.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/text.txt
                                  rename to sandbox/sandbox/orion/samples/text.txt
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/todo.gif b/sandbox/sandbox/orion/samples/todo.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/todo.gif
                                  rename to sandbox/sandbox/orion/samples/todo.gif
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion/samples/undoStack.js b/sandbox/sandbox/orion/samples/undoStack.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion/samples/undoStack.js
                                  rename to sandbox/sandbox/orion/samples/undoStack.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/editor.css b/sandbox/sandbox/orion_nightly/editor.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/editor.css
                                  rename to sandbox/sandbox/orion_nightly/editor.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/js-tests/test-model.js b/sandbox/sandbox/orion_nightly/js-tests/test-model.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/js-tests/test-model.js
                                  rename to sandbox/sandbox/orion_nightly/js-tests/test-model.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/js-tests/test-performance.js b/sandbox/sandbox/orion_nightly/js-tests/test-performance.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/js-tests/test-performance.js
                                  rename to sandbox/sandbox/orion_nightly/js-tests/test-performance.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/js/editor.js b/sandbox/sandbox/orion_nightly/js/editor.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/js/editor.js
                                  rename to sandbox/sandbox/orion_nightly/js/editor.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/js/model.js b/sandbox/sandbox/orion_nightly/js/model.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/js/model.js
                                  rename to sandbox/sandbox/orion_nightly/js/model.js
                                  diff --git a/branches/firebug1.5/sandbox/sandbox/orion_nightly/orion-prototype.zip b/sandbox/sandbox/orion_nightly/orion-prototype.zip
                                  similarity index 100%
                                  rename from branches/firebug1.5/sandbox/sandbox/orion_nightly/orion-prototype.zip
                                  rename to sandbox/sandbox/orion_nightly/orion-prototype.zip
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/orion.html b/sandbox/sandbox/orion_nightly/orion.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/orion.html
                                  rename to sandbox/sandbox/orion_nightly/orion.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif b/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/brkp_obj.gif
                                  rename to sandbox/sandbox/orion_nightly/samples/brkp_obj.gif
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/browserEditor.html b/sandbox/sandbox/orion_nightly/samples/browserEditor.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/browserEditor.html
                                  rename to sandbox/sandbox/orion_nightly/samples/browserEditor.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/console.js b/sandbox/sandbox/orion_nightly/samples/console.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/console.js
                                  rename to sandbox/sandbox/orion_nightly/samples/console.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/cr.png b/sandbox/sandbox/orion_nightly/samples/cr.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/cr.png
                                  rename to sandbox/sandbox/orion_nightly/samples/cr.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/demo.html b/sandbox/sandbox/orion_nightly/samples/demo.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/demo.html
                                  rename to sandbox/sandbox/orion_nightly/samples/demo.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/editor.css b/sandbox/sandbox/orion_nightly/samples/editor.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/editor.css
                                  rename to sandbox/sandbox/orion_nightly/samples/editor.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/rulers.js b/sandbox/sandbox/orion_nightly/samples/rulers.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/rulers.js
                                  rename to sandbox/sandbox/orion_nightly/samples/rulers.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/space.png b/sandbox/sandbox/orion_nightly/samples/space.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/space.png
                                  rename to sandbox/sandbox/orion_nightly/samples/space.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/styler.js b/sandbox/sandbox/orion_nightly/samples/styler.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/styler.js
                                  rename to sandbox/sandbox/orion_nightly/samples/styler.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/styles.txt b/sandbox/sandbox/orion_nightly/samples/styles.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/styles.txt
                                  rename to sandbox/sandbox/orion_nightly/samples/styles.txt
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/tab.png b/sandbox/sandbox/orion_nightly/samples/tab.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/tab.png
                                  rename to sandbox/sandbox/orion_nightly/samples/tab.png
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/text.txt b/sandbox/sandbox/orion_nightly/samples/text.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/text.txt
                                  rename to sandbox/sandbox/orion_nightly/samples/text.txt
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/todo.gif b/sandbox/sandbox/orion_nightly/samples/todo.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/todo.gif
                                  rename to sandbox/sandbox/orion_nightly/samples/todo.gif
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/undoStack.js b/sandbox/sandbox/orion_nightly/samples/undoStack.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/orion_nightly/samples/undoStack.js
                                  rename to sandbox/sandbox/orion_nightly/samples/undoStack.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireNamespace/namespace.js b/sandbox/sandbox/requireNamespace/namespace.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireNamespace/namespace.js
                                  rename to sandbox/sandbox/requireNamespace/namespace.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/Firebug/Panel.js b/sandbox/sandbox/requireScope/Firebug/Panel.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/Firebug/Panel.js
                                  rename to sandbox/sandbox/requireScope/Firebug/Panel.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/Firebug/Script.js b/sandbox/sandbox/requireScope/Firebug/Script.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/Firebug/Script.js
                                  rename to sandbox/sandbox/requireScope/Firebug/Script.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/Lib.js b/sandbox/sandbox/requireScope/Lib.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/Lib.js
                                  rename to sandbox/sandbox/requireScope/Lib.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/Lib/Domplate.js b/sandbox/sandbox/requireScope/Lib/Domplate.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/Lib/Domplate.js
                                  rename to sandbox/sandbox/requireScope/Lib/Domplate.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/Lib/Event.js b/sandbox/sandbox/requireScope/Lib/Event.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/Lib/Event.js
                                  rename to sandbox/sandbox/requireScope/Lib/Event.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/require.js b/sandbox/sandbox/requireScope/require.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/require.js
                                  rename to sandbox/sandbox/requireScope/require.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/test.html b/sandbox/sandbox/requireScope/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/test.html
                                  rename to sandbox/sandbox/requireScope/test.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/a.js b/sandbox/sandbox/requireScope/v2/a.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/a.js
                                  rename to sandbox/sandbox/requireScope/v2/a.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/b.js b/sandbox/sandbox/requireScope/v2/b.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/b.js
                                  rename to sandbox/sandbox/requireScope/v2/b.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/c.js b/sandbox/sandbox/requireScope/v2/c.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/c.js
                                  rename to sandbox/sandbox/requireScope/v2/c.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/require.js b/sandbox/sandbox/requireScope/v2/require.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/require.js
                                  rename to sandbox/sandbox/requireScope/v2/require.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/scope.js b/sandbox/sandbox/requireScope/v2/scope.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/scope.js
                                  rename to sandbox/sandbox/requireScope/v2/scope.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/requireScope/v2/test.html b/sandbox/sandbox/requireScope/v2/test.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/requireScope/v2/test.html
                                  rename to sandbox/sandbox/requireScope/v2/test.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader.js b/sandbox/sandbox/syntaxHighlight/TokenReader.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js b/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader4-noint.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader4.js b/sandbox/sandbox/syntaxHighlight/TokenReader4.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader4.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader4.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js b/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader9-noint.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9.js b/sandbox/sandbox/syntaxHighlight/TokenReader9.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader9.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9b.js b/sandbox/sandbox/syntaxHighlight/TokenReader9b.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/TokenReader9b.js
                                  rename to sandbox/sandbox/syntaxHighlight/TokenReader9b.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html b/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight.html
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html b/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight2.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/highlight2.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/jscolors.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/parsejavascript.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/stringstream.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenize.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js b/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js
                                  rename to sandbox/sandbox/syntaxHighlight/coremirror/highlight_files/tokenizejavascript.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/fulljslint.js b/sandbox/sandbox/syntaxHighlight/fulljslint.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/fulljslint.js
                                  rename to sandbox/sandbox/syntaxHighlight/fulljslint.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/fulljslint2.js b/sandbox/sandbox/syntaxHighlight/fulljslint2.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/fulljslint2.js
                                  rename to sandbox/sandbox/syntaxHighlight/fulljslint2.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prettify.css b/sandbox/sandbox/syntaxHighlight/prettify.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prettify.css
                                  rename to sandbox/sandbox/syntaxHighlight/prettify.css
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prettify.js b/sandbox/sandbox/syntaxHighlight/prettify.js
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prettify.js
                                  rename to sandbox/sandbox/syntaxHighlight/prettify.js
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype1.html b/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype1.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype1.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype2.html b/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype2.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype2.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype2b.html b/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype2b.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype3.html b/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype3.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype3.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype4.html b/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype4.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype4.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5.html b/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype5.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5b.html b/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype5b.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5c.html b/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype5c.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype6.html b/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype6.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype6.html
                                  diff --git a/branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype7.html b/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  similarity index 100%
                                  rename from branches/firebug1.4/sandbox/sandbox/syntaxHighlight/prototype7.html
                                  rename to sandbox/sandbox/syntaxHighlight/prototype7.html
                                  diff --git a/branches/firebug1.3/skin/light/blank.gif b/skin/classic/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/blank.gif
                                  rename to skin/classic/blank.gif
                                  diff --git a/branches/firebug1.3/skin/light/buttonBg.png b/skin/classic/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/buttonBg.png
                                  rename to skin/classic/buttonBg.png
                                  diff --git a/branches/firebug1.3/skin/light/buttonBgHover.png b/skin/classic/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/buttonBgHover.png
                                  rename to skin/classic/buttonBgHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/detach.png b/skin/classic/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/detach.png
                                  rename to skin/classic/detach.png
                                  diff --git a/branches/firebug1.3/skin/xp/detachHover.png b/skin/classic/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/detachHover.png
                                  rename to skin/classic/detachHover.png
                                  diff --git a/branches/firebug1.3/skin/light/disable.gif b/skin/classic/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/disable.gif
                                  rename to skin/classic/disable.gif
                                  diff --git a/branches/firebug1.3/skin/light/disable.png b/skin/classic/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/disable.png
                                  rename to skin/classic/disable.png
                                  diff --git a/branches/firebug1.3/skin/light/disableHover.gif b/skin/classic/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/disableHover.gif
                                  rename to skin/classic/disableHover.gif
                                  diff --git a/branches/firebug1.3/skin/light/disableHover.png b/skin/classic/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/disableHover.png
                                  rename to skin/classic/disableHover.png
                                  diff --git a/branches/firebug1.3/skin/light/down.png b/skin/classic/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/down.png
                                  rename to skin/classic/down.png
                                  diff --git a/branches/firebug1.3/skin/light/downActive.png b/skin/classic/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/downActive.png
                                  rename to skin/classic/downActive.png
                                  diff --git a/branches/firebug1.3/skin/light/downHover.png b/skin/classic/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/downHover.png
                                  rename to skin/classic/downHover.png
                                  diff --git a/branches/firebug1.3/skin/light/errorIcon-sm.png b/skin/classic/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/errorIcon-sm.png
                                  rename to skin/classic/errorIcon-sm.png
                                  diff --git a/branches/firebug1.3/skin/light/errorIcon.gif b/skin/classic/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/errorIcon.gif
                                  rename to skin/classic/errorIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon.png b/skin/classic/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/errorIcon.png
                                  rename to skin/classic/errorIcon.png
                                  diff --git a/branches/firebug1.3/skin/classic/firebug.css b/skin/classic/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/firebug.css
                                  rename to skin/classic/firebug.css
                                  diff --git a/branches/firebug1.3/skin/light/firebug.html b/skin/classic/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/firebug.html
                                  rename to skin/classic/firebug.html
                                  diff --git a/branches/firebug1.3/skin/classic/firebug.png b/skin/classic/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/firebug.png
                                  rename to skin/classic/firebug.png
                                  diff --git a/branches/firebug1.3/skin/light/group.gif b/skin/classic/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/group.gif
                                  rename to skin/classic/group.gif
                                  diff --git a/branches/firebug1.3/skin/light/infoIcon.gif b/skin/classic/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/infoIcon.gif
                                  rename to skin/classic/infoIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/infoIcon.png b/skin/classic/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/infoIcon.png
                                  rename to skin/classic/infoIcon.png
                                  diff --git a/branches/firebug1.3/skin/light/loading_16.gif b/skin/classic/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/loading_16.gif
                                  rename to skin/classic/loading_16.gif
                                  diff --git a/branches/firebug1.3/skin/light/min.png b/skin/classic/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/min.png
                                  rename to skin/classic/min.png
                                  diff --git a/branches/firebug1.3/skin/light/minHover.png b/skin/classic/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/minHover.png
                                  rename to skin/classic/minHover.png
                                  diff --git a/branches/firebug1.3/skin/light/off.png b/skin/classic/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/off.png
                                  rename to skin/classic/off.png
                                  diff --git a/branches/firebug1.3/skin/light/offHover.png b/skin/classic/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/offHover.png
                                  rename to skin/classic/offHover.png
                                  diff --git a/branches/firebug1.3/skin/light/pixel_transparent.gif b/skin/classic/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/pixel_transparent.gif
                                  rename to skin/classic/pixel_transparent.gif
                                  diff --git a/branches/firebug1.3/skin/light/roundCorner.svg b/skin/classic/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/roundCorner.svg
                                  rename to skin/classic/roundCorner.svg
                                  diff --git a/branches/firebug1.3/skin/light/search.gif b/skin/classic/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/search.gif
                                  rename to skin/classic/search.gif
                                  diff --git a/branches/firebug1.3/skin/light/search.png b/skin/classic/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/search.png
                                  rename to skin/classic/search.png
                                  diff --git a/branches/firebug1.3/skin/light/shadow.gif b/skin/classic/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/shadow.gif
                                  rename to skin/classic/shadow.gif
                                  diff --git a/branches/firebug1.3/skin/light/shadow2.gif b/skin/classic/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/shadow2.gif
                                  rename to skin/classic/shadow2.gif
                                  diff --git a/branches/firebug1.3/skin/light/shadowAlpha.png b/skin/classic/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/shadowAlpha.png
                                  rename to skin/classic/shadowAlpha.png
                                  diff --git a/branches/firebug1.3/skin/classic/sprite.png b/skin/classic/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/sprite.png
                                  rename to skin/classic/sprite.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabHoverLeft.png b/skin/classic/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabHoverLeft.png
                                  rename to skin/classic/tabHoverLeft.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabHoverMid.png b/skin/classic/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabHoverMid.png
                                  rename to skin/classic/tabHoverMid.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabHoverRight.png b/skin/classic/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabHoverRight.png
                                  rename to skin/classic/tabHoverRight.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabLeft.png b/skin/classic/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabLeft.png
                                  rename to skin/classic/tabLeft.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMenuCheckbox.png b/skin/classic/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMenuCheckbox.png
                                  rename to skin/classic/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMenuPin.png b/skin/classic/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMenuPin.png
                                  rename to skin/classic/tabMenuPin.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMenuRadio.png b/skin/classic/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMenuRadio.png
                                  rename to skin/classic/tabMenuRadio.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMenuTarget.png b/skin/classic/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMenuTarget.png
                                  rename to skin/classic/tabMenuTarget.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMenuTargetHover.png b/skin/classic/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMenuTargetHover.png
                                  rename to skin/classic/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabMid.png b/skin/classic/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabMid.png
                                  rename to skin/classic/tabMid.png
                                  diff --git a/branches/firebug1.3/skin/classic/tabRight.png b/skin/classic/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tabRight.png
                                  rename to skin/classic/tabRight.png
                                  diff --git a/branches/firebug1.3/skin/light/textEditorBorders.gif b/skin/classic/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/textEditorBorders.gif
                                  rename to skin/classic/textEditorBorders.gif
                                  diff --git a/branches/firebug1.3/skin/light/textEditorBorders.png b/skin/classic/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/textEditorBorders.png
                                  rename to skin/classic/textEditorBorders.png
                                  diff --git a/branches/firebug1.3/skin/light/textEditorCorners.gif b/skin/classic/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/textEditorCorners.gif
                                  rename to skin/classic/textEditorCorners.gif
                                  diff --git a/branches/firebug1.3/skin/light/textEditorCorners.png b/skin/classic/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/textEditorCorners.png
                                  rename to skin/classic/textEditorCorners.png
                                  diff --git a/branches/firebug1.3/skin/classic/titlebarMid.png b/skin/classic/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/titlebarMid.png
                                  rename to skin/classic/titlebarMid.png
                                  diff --git a/branches/firebug1.3/skin/classic/toolbarMid.png b/skin/classic/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/toolbarMid.png
                                  rename to skin/classic/toolbarMid.png
                                  diff --git a/branches/firebug1.3/skin/classic/tree_close.gif b/skin/classic/tree_close.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tree_close.gif
                                  rename to skin/classic/tree_close.gif
                                  diff --git a/branches/firebug1.3/skin/classic/tree_open.gif b/skin/classic/tree_open.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/tree_open.gif
                                  rename to skin/classic/tree_open.gif
                                  diff --git a/branches/firebug1.3/skin/light/twistyClosed.png b/skin/classic/twistyClosed.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/twistyClosed.png
                                  rename to skin/classic/twistyClosed.png
                                  diff --git a/branches/firebug1.3/skin/light/twistyOpen.png b/skin/classic/twistyOpen.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/twistyOpen.png
                                  rename to skin/classic/twistyOpen.png
                                  diff --git a/branches/firebug1.3/skin/light/up.png b/skin/classic/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/up.png
                                  rename to skin/classic/up.png
                                  diff --git a/branches/firebug1.3/skin/light/upActive.png b/skin/classic/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/upActive.png
                                  rename to skin/classic/upActive.png
                                  diff --git a/branches/firebug1.3/skin/light/upHover.png b/skin/classic/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/upHover.png
                                  rename to skin/classic/upHover.png
                                  diff --git a/branches/firebug1.3/skin/light/warningIcon.gif b/skin/classic/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/warningIcon.gif
                                  rename to skin/classic/warningIcon.gif
                                  diff --git a/branches/firebug1.3/build/chrome-extension/skin/xp/warningIcon.png b/skin/classic/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/build/chrome-extension/skin/xp/warningIcon.png
                                  rename to skin/classic/warningIcon.png
                                  diff --git a/branches/firebug1.3/skin/xp/blank.gif b/skin/light/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/blank.gif
                                  rename to skin/light/blank.gif
                                  diff --git a/branches/firebug1.3/skin/xp/buttonBg.png b/skin/light/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/buttonBg.png
                                  rename to skin/light/buttonBg.png
                                  diff --git a/branches/firebug1.3/skin/xp/buttonBgHover.png b/skin/light/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/buttonBgHover.png
                                  rename to skin/light/buttonBgHover.png
                                  diff --git a/branches/firebug1.3/skin/light/close.png b/skin/light/close.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/close.png
                                  rename to skin/light/close.png
                                  diff --git a/branches/firebug1.3/skin/light/closeHover.png b/skin/light/closeHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/closeHover.png
                                  rename to skin/light/closeHover.png
                                  diff --git a/branches/firebug1.3/skin/light/detach.png b/skin/light/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/detach.png
                                  rename to skin/light/detach.png
                                  diff --git a/branches/firebug1.3/skin/light/detachHover.png b/skin/light/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/detachHover.png
                                  rename to skin/light/detachHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/disable.gif b/skin/light/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/disable.gif
                                  rename to skin/light/disable.gif
                                  diff --git a/branches/firebug1.3/skin/xp/disable.png b/skin/light/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/disable.png
                                  rename to skin/light/disable.png
                                  diff --git a/branches/firebug1.3/skin/xp/disableHover.gif b/skin/light/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/disableHover.gif
                                  rename to skin/light/disableHover.gif
                                  diff --git a/branches/firebug1.3/skin/xp/disableHover.png b/skin/light/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/disableHover.png
                                  rename to skin/light/disableHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/down.png b/skin/light/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/down.png
                                  rename to skin/light/down.png
                                  diff --git a/branches/firebug1.3/skin/xp/downActive.png b/skin/light/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/downActive.png
                                  rename to skin/light/downActive.png
                                  diff --git a/branches/firebug1.3/skin/xp/downHover.png b/skin/light/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/downHover.png
                                  rename to skin/light/downHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/errorIcon-sm.png b/skin/light/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/errorIcon-sm.png
                                  rename to skin/light/errorIcon-sm.png
                                  diff --git a/branches/firebug1.3/skin/xp/errorIcon.gif b/skin/light/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/errorIcon.gif
                                  rename to skin/light/errorIcon.gif
                                  diff --git a/branches/firebug1.3/skin/classic/errorIcon.png b/skin/light/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/errorIcon.png
                                  rename to skin/light/errorIcon.png
                                  diff --git a/branches/firebug1.3/skin/light/firebug.css b/skin/light/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/firebug.css
                                  rename to skin/light/firebug.css
                                  diff --git a/branches/firebug1.3/skin/xp/firebug.html b/skin/light/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/firebug.html
                                  rename to skin/light/firebug.html
                                  diff --git a/branches/firebug1.3/skin/light/firebug.png b/skin/light/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/firebug.png
                                  rename to skin/light/firebug.png
                                  diff --git a/branches/firebug1.3/skin/xp/group.gif b/skin/light/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/group.gif
                                  rename to skin/light/group.gif
                                  diff --git a/branches/firebug1.3/skin/xp/infoIcon.gif b/skin/light/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/infoIcon.gif
                                  rename to skin/light/infoIcon.gif
                                  diff --git a/branches/firebug1.3/skin/classic/infoIcon.png b/skin/light/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/infoIcon.png
                                  rename to skin/light/infoIcon.png
                                  diff --git a/branches/firebug1.3/skin/xp/loading_16.gif b/skin/light/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/loading_16.gif
                                  rename to skin/light/loading_16.gif
                                  diff --git a/branches/firebug1.3/skin/xp/min.png b/skin/light/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/min.png
                                  rename to skin/light/min.png
                                  diff --git a/branches/firebug1.3/skin/xp/minHover.png b/skin/light/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/minHover.png
                                  rename to skin/light/minHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/off.png b/skin/light/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/off.png
                                  rename to skin/light/off.png
                                  diff --git a/branches/firebug1.3/skin/xp/offHover.png b/skin/light/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/offHover.png
                                  rename to skin/light/offHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/pixel_transparent.gif b/skin/light/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/pixel_transparent.gif
                                  rename to skin/light/pixel_transparent.gif
                                  diff --git a/branches/firebug1.3/skin/xp/roundCorner.svg b/skin/light/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/roundCorner.svg
                                  rename to skin/light/roundCorner.svg
                                  diff --git a/branches/firebug1.3/skin/xp/search.gif b/skin/light/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/search.gif
                                  rename to skin/light/search.gif
                                  diff --git a/branches/firebug1.3/skin/xp/search.png b/skin/light/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/search.png
                                  rename to skin/light/search.png
                                  diff --git a/branches/firebug1.3/skin/xp/shadow.gif b/skin/light/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/shadow.gif
                                  rename to skin/light/shadow.gif
                                  diff --git a/branches/firebug1.3/skin/xp/shadow2.gif b/skin/light/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/shadow2.gif
                                  rename to skin/light/shadow2.gif
                                  diff --git a/branches/firebug1.3/skin/xp/shadowAlpha.png b/skin/light/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/shadowAlpha.png
                                  rename to skin/light/shadowAlpha.png
                                  diff --git a/branches/firebug1.3/skin/light/sprite.png b/skin/light/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/sprite.png
                                  rename to skin/light/sprite.png
                                  diff --git a/branches/firebug1.3/skin/light/tabHoverLeft.png b/skin/light/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabHoverLeft.png
                                  rename to skin/light/tabHoverLeft.png
                                  diff --git a/branches/firebug1.3/skin/light/tabHoverMid.png b/skin/light/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabHoverMid.png
                                  rename to skin/light/tabHoverMid.png
                                  diff --git a/branches/firebug1.3/skin/light/tabHoverRight.png b/skin/light/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabHoverRight.png
                                  rename to skin/light/tabHoverRight.png
                                  diff --git a/branches/firebug1.3/skin/light/tabLeft.png b/skin/light/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabLeft.png
                                  rename to skin/light/tabLeft.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMenuCheckbox.png b/skin/light/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMenuCheckbox.png
                                  rename to skin/light/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMenuPin.png b/skin/light/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMenuPin.png
                                  rename to skin/light/tabMenuPin.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMenuRadio.png b/skin/light/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMenuRadio.png
                                  rename to skin/light/tabMenuRadio.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMenuTarget.png b/skin/light/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMenuTarget.png
                                  rename to skin/light/tabMenuTarget.png
                                  diff --git a/branches/firebug1.3/skin/xp/tabMenuTargetHover.png b/skin/light/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tabMenuTargetHover.png
                                  rename to skin/light/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.3/skin/light/tabMid.png b/skin/light/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabMid.png
                                  rename to skin/light/tabMid.png
                                  diff --git a/branches/firebug1.3/skin/light/tabRight.png b/skin/light/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tabRight.png
                                  rename to skin/light/tabRight.png
                                  diff --git a/branches/firebug1.3/skin/xp/textEditorBorders.gif b/skin/light/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/textEditorBorders.gif
                                  rename to skin/light/textEditorBorders.gif
                                  diff --git a/branches/firebug1.3/skin/xp/textEditorBorders.png b/skin/light/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/textEditorBorders.png
                                  rename to skin/light/textEditorBorders.png
                                  diff --git a/branches/firebug1.3/skin/xp/textEditorCorners.gif b/skin/light/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/textEditorCorners.gif
                                  rename to skin/light/textEditorCorners.gif
                                  diff --git a/branches/firebug1.3/skin/xp/textEditorCorners.png b/skin/light/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/textEditorCorners.png
                                  rename to skin/light/textEditorCorners.png
                                  diff --git a/branches/firebug1.3/skin/light/titlebarMid.png b/skin/light/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/titlebarMid.png
                                  rename to skin/light/titlebarMid.png
                                  diff --git a/branches/firebug1.3/skin/light/toolbarMid.png b/skin/light/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/toolbarMid.png
                                  rename to skin/light/toolbarMid.png
                                  diff --git a/branches/firebug1.3/skin/light/tree_close.gif b/skin/light/tree_close.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tree_close.gif
                                  rename to skin/light/tree_close.gif
                                  diff --git a/branches/firebug1.3/skin/light/tree_open.gif b/skin/light/tree_open.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/tree_open.gif
                                  rename to skin/light/tree_open.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/twistyClosed.png b/skin/light/twistyClosed.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/twistyClosed.png
                                  rename to skin/light/twistyClosed.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/twistyOpen.png b/skin/light/twistyOpen.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/twistyOpen.png
                                  rename to skin/light/twistyOpen.png
                                  diff --git a/branches/firebug1.3/skin/xp/up.png b/skin/light/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/up.png
                                  rename to skin/light/up.png
                                  diff --git a/branches/firebug1.3/skin/xp/upActive.png b/skin/light/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/upActive.png
                                  rename to skin/light/upActive.png
                                  diff --git a/branches/firebug1.3/skin/xp/upHover.png b/skin/light/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/upHover.png
                                  rename to skin/light/upHover.png
                                  diff --git a/branches/firebug1.3/skin/xp/warningIcon.gif b/skin/light/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/warningIcon.gif
                                  rename to skin/light/warningIcon.gif
                                  diff --git a/branches/firebug1.3/skin/classic/warningIcon.png b/skin/light/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/classic/warningIcon.png
                                  rename to skin/light/warningIcon.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/blank.gif b/skin/xp/blank.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/blank.gif
                                  rename to skin/xp/blank.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/buttonBg.png b/skin/xp/buttonBg.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/buttonBg.png
                                  rename to skin/xp/buttonBg.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/buttonBgHover.png b/skin/xp/buttonBgHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/buttonBgHover.png
                                  rename to skin/xp/buttonBgHover.png
                                  diff --git a/branches/firebug1.4/skin/xp/debugger.css b/skin/xp/debugger.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/skin/xp/debugger.css
                                  rename to skin/xp/debugger.css
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/detach.png b/skin/xp/detach.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/detach.png
                                  rename to skin/xp/detach.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/detachHover.png b/skin/xp/detachHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/detachHover.png
                                  rename to skin/xp/detachHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/disable.gif b/skin/xp/disable.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/disable.gif
                                  rename to skin/xp/disable.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/disable.png b/skin/xp/disable.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/disable.png
                                  rename to skin/xp/disable.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/disableHover.gif b/skin/xp/disableHover.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/disableHover.gif
                                  rename to skin/xp/disableHover.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/disableHover.png b/skin/xp/disableHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/disableHover.png
                                  rename to skin/xp/disableHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/down.png b/skin/xp/down.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/down.png
                                  rename to skin/xp/down.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/downActive.png b/skin/xp/downActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/downActive.png
                                  rename to skin/xp/downActive.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/downHover.png b/skin/xp/downHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/downHover.png
                                  rename to skin/xp/downHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/errorIcon-sm.png b/skin/xp/errorIcon-sm.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/errorIcon-sm.png
                                  rename to skin/xp/errorIcon-sm.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/errorIcon.gif b/skin/xp/errorIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/errorIcon.gif
                                  rename to skin/xp/errorIcon.gif
                                  diff --git a/branches/firebug1.3/skin/light/errorIcon.png b/skin/xp/errorIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/errorIcon.png
                                  rename to skin/xp/errorIcon.png
                                  diff --git a/branches/firebug1.3/skin/xp/firebug-1.3a2.css b/skin/xp/firebug-1.3a2.css
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/firebug-1.3a2.css
                                  rename to skin/xp/firebug-1.3a2.css
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/firebug.IE6.css b/skin/xp/firebug.IE6.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/firebug.IE6.css
                                  rename to skin/xp/firebug.IE6.css
                                  diff --git a/branches/firebug1.5/skin/xp/firebug.css b/skin/xp/firebug.css
                                  similarity index 100%
                                  rename from branches/firebug1.5/skin/xp/firebug.css
                                  rename to skin/xp/firebug.css
                                  diff --git a/branches/firebug1.5/skin/xp/firebug.html b/skin/xp/firebug.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/skin/xp/firebug.html
                                  rename to skin/xp/firebug.html
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/firebug.png b/skin/xp/firebug.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/firebug.png
                                  rename to skin/xp/firebug.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/group.gif b/skin/xp/group.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/group.gif
                                  rename to skin/xp/group.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/html.css b/skin/xp/html.css
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/html.css
                                  rename to skin/xp/html.css
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/infoIcon.gif b/skin/xp/infoIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/infoIcon.gif
                                  rename to skin/xp/infoIcon.gif
                                  diff --git a/branches/firebug1.3/skin/light/infoIcon.png b/skin/xp/infoIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/infoIcon.png
                                  rename to skin/xp/infoIcon.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/loading_16.gif b/skin/xp/loading_16.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/loading_16.gif
                                  rename to skin/xp/loading_16.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/min.png b/skin/xp/min.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/min.png
                                  rename to skin/xp/min.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/minHover.png b/skin/xp/minHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/minHover.png
                                  rename to skin/xp/minHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/off.png b/skin/xp/off.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/off.png
                                  rename to skin/xp/off.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/offHover.png b/skin/xp/offHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/offHover.png
                                  rename to skin/xp/offHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/pixel_transparent.gif b/skin/xp/pixel_transparent.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/pixel_transparent.gif
                                  rename to skin/xp/pixel_transparent.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/roundCorner.svg b/skin/xp/roundCorner.svg
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/roundCorner.svg
                                  rename to skin/xp/roundCorner.svg
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/search.gif b/skin/xp/search.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/search.gif
                                  rename to skin/xp/search.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/search.png b/skin/xp/search.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/search.png
                                  rename to skin/xp/search.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadow.gif b/skin/xp/shadow.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadow.gif
                                  rename to skin/xp/shadow.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadow2.gif b/skin/xp/shadow2.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadow2.gif
                                  rename to skin/xp/shadow2.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadowAlpha.png b/skin/xp/shadowAlpha.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/shadowAlpha.png
                                  rename to skin/xp/shadowAlpha.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/sprite.png b/skin/xp/sprite.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/sprite.png
                                  rename to skin/xp/sprite.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverLeft.png b/skin/xp/tabHoverLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverLeft.png
                                  rename to skin/xp/tabHoverLeft.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverMid.png b/skin/xp/tabHoverMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverMid.png
                                  rename to skin/xp/tabHoverMid.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverRight.png b/skin/xp/tabHoverRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabHoverRight.png
                                  rename to skin/xp/tabHoverRight.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabLeft.png b/skin/xp/tabLeft.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabLeft.png
                                  rename to skin/xp/tabLeft.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png b/skin/xp/tabMenuCheckbox.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuCheckbox.png
                                  rename to skin/xp/tabMenuCheckbox.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuPin.png b/skin/xp/tabMenuPin.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuPin.png
                                  rename to skin/xp/tabMenuPin.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuRadio.png b/skin/xp/tabMenuRadio.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuRadio.png
                                  rename to skin/xp/tabMenuRadio.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuTarget.png b/skin/xp/tabMenuTarget.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuTarget.png
                                  rename to skin/xp/tabMenuTarget.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png b/skin/xp/tabMenuTargetHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMenuTargetHover.png
                                  rename to skin/xp/tabMenuTargetHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMid.png b/skin/xp/tabMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabMid.png
                                  rename to skin/xp/tabMid.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabRight.png b/skin/xp/tabRight.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/tabRight.png
                                  rename to skin/xp/tabRight.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorBorders.gif b/skin/xp/textEditorBorders.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorBorders.gif
                                  rename to skin/xp/textEditorBorders.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorBorders.png b/skin/xp/textEditorBorders.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorBorders.png
                                  rename to skin/xp/textEditorBorders.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorCorners.gif b/skin/xp/textEditorCorners.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorCorners.gif
                                  rename to skin/xp/textEditorCorners.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorCorners.png b/skin/xp/textEditorCorners.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/textEditorCorners.png
                                  rename to skin/xp/textEditorCorners.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/titlebarMid.png b/skin/xp/titlebarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/titlebarMid.png
                                  rename to skin/xp/titlebarMid.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/toolbarMid.png b/skin/xp/toolbarMid.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/toolbarMid.png
                                  rename to skin/xp/toolbarMid.png
                                  diff --git a/branches/firebug1.3/skin/xp/tree_close.gif b/skin/xp/tree_close.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tree_close.gif
                                  rename to skin/xp/tree_close.gif
                                  diff --git a/branches/firebug1.3/skin/xp/tree_open.gif b/skin/xp/tree_open.gif
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/xp/tree_open.gif
                                  rename to skin/xp/tree_open.gif
                                  diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/twistyClosed.png b/skin/xp/twistyClosed.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension/skin/xp/twistyClosed.png
                                  rename to skin/xp/twistyClosed.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension/skin/xp/twistyOpen.png b/skin/xp/twistyOpen.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension/skin/xp/twistyOpen.png
                                  rename to skin/xp/twistyOpen.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/up.png b/skin/xp/up.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/up.png
                                  rename to skin/xp/up.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/upActive.png b/skin/xp/upActive.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/upActive.png
                                  rename to skin/xp/upActive.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/upHover.png b/skin/xp/upHover.png
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/upHover.png
                                  rename to skin/xp/upHover.png
                                  diff --git a/branches/firebug1.4/build/chrome-extension-beta/skin/xp/warningIcon.gif b/skin/xp/warningIcon.gif
                                  similarity index 100%
                                  rename from branches/firebug1.4/build/chrome-extension-beta/skin/xp/warningIcon.gif
                                  rename to skin/xp/warningIcon.gif
                                  diff --git a/branches/firebug1.3/skin/light/warningIcon.png b/skin/xp/warningIcon.png
                                  similarity index 100%
                                  rename from branches/firebug1.3/skin/light/warningIcon.png
                                  rename to skin/xp/warningIcon.png
                                  diff --git a/tags/firebug1.3a3/build/.htaccess b/tags/firebug1.3a3/build/.htaccess
                                  deleted file mode 100644
                                  index 996a3304..00000000
                                  --- a/tags/firebug1.3a3/build/.htaccess
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -AddType "text/javascript;charset=UTF-8" .jgz .js
                                  -AddEncoding gzip .jgz
                                  -
                                  -<IfModule expires_module>
                                  -    ExpiresActive On
                                  -    ExpiresDefault A86400
                                  -</IfModule>
                                  -
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1 [L]
                                  -</IfModule>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/compress-semicolon-domplate.bat b/tags/firebug1.3a3/build/compress-semicolon-domplate.bat
                                  deleted file mode 100644
                                  index 84b75d5f..00000000
                                  --- a/tags/firebug1.3a3/build/compress-semicolon-domplate.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug.domplatemin.js firebug.domplate.js
                                  -
                                  -gzip -c firebug.domplatemin.js > firebug.domplatemin.js.gz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/compress-semicolon.bat b/tags/firebug1.3a3/build/compress-semicolon.bat
                                  deleted file mode 100644
                                  index 790de766..00000000
                                  --- a/tags/firebug1.3a3/build/compress-semicolon.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug.min.js firebug.full.js
                                  -
                                  -gzip -c firebug.min.js > firebug.min.js.gz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/compress.bat b/tags/firebug1.3a3/build/compress.bat
                                  deleted file mode 100644
                                  index 08bbde80..00000000
                                  --- a/tags/firebug1.3a3/build/compress.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar -o firebug.min.js firebug.full.js
                                  -
                                  -gzip -c firebug.min.js > firebug.min.js.gz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/firebug.domplate.js b/tags/firebug1.3a3/build/firebug.domplate.js
                                  deleted file mode 100644
                                  index 4685ca51..00000000
                                  --- a/tags/firebug1.3a3/build/firebug.domplate.js
                                  +++ /dev/null
                                  @@ -1,12793 +0,0 @@
                                  -/*!
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize application
                                  -    var isChromeContext = typeof window.FirebugApplication == "object";
                                  -    
                                  -    if (!isChromeContext)
                                  -    {
                                  -        findLocation();
                                  -    }
                                  -    
                                  -    FBTrace = FBL.FBTrace;
                                  -    if (FBL.Application.isTraceMode) FBTrace.initialize();
                                  -    
                                  -    if (isChromeContext) // persistent application
                                  -    {
                                  -        FBL.Application = window.FirebugApplication;
                                  -        FBL.Application.isChromeContext = true;
                                  -        FBL.FirebugChrome = FBL.Application.FirebugChrome;
                                  -    }
                                  -    else // non-persistent application
                                  -    {
                                  -        // TODO: get preferences here...
                                  -        FBL.Application.browser = window;
                                  -        FBL.Application.destroy = destroyApplication;
                                  -    }    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    
                                  -    if (!isChromeContext)
                                  -    {
                                  -        FBL.Application.FirebugChrome = FBL.FirebugChrome;
                                  -    }
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    if (document.body)
                                  -    {
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "create application chrome");
                                  -    
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // persistent application - chrome document loaded
                                  -    if (FBL.Application.isPersistentMode && FBL.Application.isChromeContext)
                                  -    {
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        if (!FBL.Application.isDevelopmentMode)
                                  -        {
                                  -            window.FirebugApplication.destroy();
                                  -        
                                  -            if (FBL.isIE)
                                  -                window.FirebugApplication = null;
                                  -            else
                                  -                delete window.FirebugApplication;
                                  -        }
                                  -    }
                                  -    // main document loaded
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Application
                                  -
                                  -this.Application = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application preferences
                                  -    openAtStartup: false,
                                  -    
                                  -    isBookmarletMode: false,
                                  -    isPersistentMode: false,
                                  -    isTraceMode: false,
                                  -    skin: "xp",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -this.Application.location =
                                  -{
                                  -    sourceDir: null,
                                  -    baseDir: null,
                                  -    skinDir: null,
                                  -    skin: null,
                                  -    app: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        
                                  -        if (reProtocol.test(script.src)) {
                                  -            // absolute path
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        else
                                  -        {
                                  -            // relative path
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var rel = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var lastFolder = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            if (rel)
                                  -            {
                                  -                var j = rel[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = lastFolder.exec(path)[1];
                                  -
                                  -                path += rel[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var App = FBL.Application;
                                  -        var loc = App.location; 
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = loc.baseDir + "skin/" + App.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -            App.isDevelopmentMode = true;
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            if (fileOptions.indexOf("open") != -1)
                                  -                App.openAtStartup = true;
                                  -            
                                  -            if (fileOptions.indexOf("remote") != -1)
                                  -            {
                                  -                App.isBookmarletMode = true;
                                  -                App.openAtStartup = true;
                                  -            }
                                  -            
                                  -            if (fileOptions.indexOf("trace") != -1)
                                  -                App.isTraceMode = true;
                                  -            
                                  -            if (fileOptions.indexOf("persist") != -1)
                                  -                App.isPersistentMode = true;
                                  -        }
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if(innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval(innerOptions);
                                  -            // TODO:
                                  -        }
                                  -                
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Browser detection
                                  -
                                  -var userAgent = navigator.userAgent;
                                  -
                                  -this.isFirefox = userAgent.indexOf("Firefox") != -1;
                                  -this.isIE      = userAgent.indexOf("MSIE") != -1;
                                  -this.isOpera   = userAgent.indexOf("Opera") != -1;
                                  -this.isSafari  = userAgent.indexOf("AppleWebKit") != -1;
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -
                                  -this.isQuiksMode = document.compatMode == "BackCompat";
                                  -this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -
                                  -this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -
                                  -this.NS = document.getElementsByTagName("html")[0].getAttribute("xmlns")
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    return elt.offsetWidth > 0 || elt.offsetHeight > 0 || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML";
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Application.browser.document;
                                  -    
                                  -    var element = FBL.isIE ? doc.createElement(tagName) : doc.createElementNS(FBL.NS, tagName);
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        if (FBL.isIE && name == "style") propname = "cssText";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute[propname] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return event.button == 1 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return event.button == 2 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.detachEvent("on"+name, handler);
                                  -    else
                                  -        object.removeEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (document.all)
                                  -        e.cancelBubble = true;
                                  -    else
                                  -        e.stopPropagation();
                                  -                
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.addEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.addEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.removeEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.removeEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        /*
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.dumpProperties(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        e.onselectstart = function(){ return false };
                                  -        
                                  -    else // others
                                  -        e.onmousedown = function(){ return false };
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isArrayLike = function(object) {
                                  -    // TODO:
                                  -    //return instanceOf(object, "Array");
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != ""+value )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onError       Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -this.Ajax.initialize();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days) {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else var expires = "";
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    for(var i=0;i < ca.length;i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -this.eraseCookie = function(name)
                                  -{
                                  -    createCookie(name,"",-1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.messageQueue = [];
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "___FBL_";
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -
                                  -var panelTypeMap = {};
                                  -
                                  -var reps = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -Application.browser.window.Firebug = FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version: "Firebug Lite 1.3.0a2",
                                  -    revision: "$Revision: 4001 $",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Application.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        //dispatch(modules, "initialize", []);
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        documentCache = {};
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            panelTypeMap[arguments[i].prototype.name] = arguments[i];
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -        defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -var cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -Firebug.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasSidePanel: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelBar: null,
                                  -    
                                  -    commandLine: null,
                                  -    
                                  -    toolButtons: null,
                                  -    statusBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -            
                                  -            if (options.hasSidePanel)
                                  -            {
                                  -                //this.sidePanelNode = $(panelId + "StatusBar");
                                  -            }        
                                  -        }
                                  -        else
                                  -        {
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel1").appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            $("fbPanelBar1").appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                }); 
                                  -            }
                                  -            
                                  -            $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -
                                  -        if (this.panelNode)
                                  -            delete this.panelNode.ownerPanel;
                                  -
                                  -        this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        this.document = doc;
                                  -
                                  -        if (this.panelNode)
                                  -        {
                                  -            this.panelNode = doc.adoptNode(this.panelNode, true);
                                  -            this.panelNode.ownerPanel = this;
                                  -            doc.body.appendChild(this.panelNode);
                                  -            this.panelNode.scrollTop = this.lastScrollTop;
                                  -            delete this.lastScrollTop;
                                  -        }
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -Firebug.PanelBar = 
                                  -{
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    selectedPanel: null,
                                  -    
                                  -    //panelBarNode: null,
                                  -    //context: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        this.panelMap = {};
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();        
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                panel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanel = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    },
                                  -    
                                  -    getSelectedPanel: function()
                                  -    {
                                  -        return this.selectedPanel;
                                  -    }    
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -Firebug.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    this.type = options.type || "normal";
                                  -    
                                  -    this.onClick = options.onClick;
                                  -    this.onPress = options.onPress;
                                  -    this.onUnpress = options.onUnpress;
                                  -    
                                  -    if (options.node)
                                  -    {
                                  -        this.node = options.node
                                  -        this.owner = options.owner;
                                  -        this.container = this.node.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        var caption = options.caption || "caption";
                                  -        var title = options.title || "title";
                                  -        
                                  -        this.owner = this.module = options.module;
                                  -        this.panel = options.panel || this.module.getPanel();
                                  -        this.container = this.panel.toolButtonsNode;
                                  -    
                                  -        this.node = createElement("a", {
                                  -            className: "fbHover",
                                  -            title: title,
                                  -            innerHTML: caption
                                  -        });
                                  -        
                                  -        this.container.appendChild(this.node);
                                  -    }
                                  -};
                                  -
                                  -Firebug.Button.prototype = extend(Firebug.Controller,
                                  -{
                                  -    type: null,
                                  -    
                                  -    node: null,
                                  -    owner: null,
                                  -    
                                  -    module: null,
                                  -    
                                  -    panel: null,
                                  -    container: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        this.container.removeChild(this.node);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        var node = this.node;
                                  -        
                                  -        this.addController([node, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [node, "mouseup", this.handleUnpress],
                                  -                [node, "mouseout", this.handleUnpress],
                                  -                [node, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");        
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner);
                                  -                
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    // should be place inside module
                                  -    addButton: function(caption, title, handler)
                                  -    {
                                  -    },
                                  -    
                                  -    removeAllButtons: function()
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -});
                                  -
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -function PanelOptions(){};
                                  -
                                  -PanelOptions.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -/*
                                  -
                                  -From Honza Tutorial
                                  -----------------------------------------------------
                                  -FBL.ns(function() { with (FBL) {
                                  -var panelName = "HelloWorld";
                                  -Firebug.HelloWorldModel = extend(Firebug.Module,
                                  -{
                                  -    showPanel: function(browser, panel) {
                                  -        var isHwPanel = panel && panel.name == panelName;
                                  -        var hwButtons = browser.chrome.$("fbHelloWorldButtons");
                                  -        collapse(hwButtons, !isHwPanel);
                                  -    },
                                  -    onMyButton: function(context) {
                                  -        alert("Hello World!");
                                  -    }
                                  -});
                                  -
                                  -function HelloWorldPanel() {}
                                  -HelloWorldPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: panelName,
                                  -    title: "Hello World!",
                                  -
                                  -    initialize: function() {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HelloWorldModel);
                                  -Firebug.registerPanel(HelloWorldPanel);
                                  -
                                  -}});
                                  -----------------------------------------------------
                                  -
                                  -/**/  
                                  -  
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";
                                  -                        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK =
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "function";
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(val);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            //TODO: xxxpedro
                                  -            //else if (obj instanceof Ci.nsIDOMHistory) // do this first to avoid security 1000 errors?
                                  -            //    return false;
                                  -            else if (isIE && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && typeof obj.splice === 'function')
                                  -                return true;
                                  -            else if (isFinite(obj.length) && typeof obj.callee === 'function') // arguments
                                  -                return true;
                                  -            else if (obj instanceof HTMLCollection)
                                  -                return true;
                                  -            else if (obj instanceof NodeList)
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? ("#" + elt.id) : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         return elt.getAttribute("class")
                                  -             ? ("." + elt.getAttribute("class").split(" ")[0])
                                  -             : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof CSSStyleSheet;
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Event || object instanceof EventCopy;
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win){
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        context = context || "window";
                                  -
                                  -        var cmd = api ?
                                  -            "(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)" :
                                  -            "(function(arguments){ return "+expr+" }).call("+context+",undefined)" ;
                                  -        
                                  -        var r = this.eval(cmd);
                                  -        if (r && r[evalError])
                                  -        {
                                  -            cmd = api ?
                                  -                "(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)" :
                                  -                "(function(arguments){ "+expr+" }).call("+context+",undefined)" ;
                                  -                
                                  -            r = this.eval(cmd);
                                  -            if (r && r[evalError])
                                  -            {
                                  -                if (errorHandler)
                                  -                    r = errorHandler(r.message || r)
                                  -                else
                                  -                    r = r.message || r;
                                  -            }
                                  -        }
                                  -        
                                  -        return r;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (isOpera || isSafari)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        // Calibration fails in some environments, so we're using a static value
                                  -        // based in the test case result.
                                  -        var rate = 200 / 225;
                                  -        //var calibrationBase = 200;
                                  -        //var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        //var rate = calibrationBase / calibrationValue;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Measurement Functions
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch()
                                  -{
                                  -    var inch = this.document.createElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    this.document.body.appendChild(inch);
                                  -    
                                  -    pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    this.document.body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -FBL.chromeMap = {};
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    commandLineVisible: true,
                                  -    sidePanelVisible: false,
                                  -    sidePanelWidth: 300,
                                  -    selectedPanel: "Console",
                                  -    
                                  -    height: 250,
                                  -    
                                  -    isOpen: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        createChrome({onLoad: onChromeLoad});
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (Application.chrome.type == "frame")
                                  -            ChromeMini.create(Application.chrome);
                                  -            
                                  -        if (Application.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Application.openAtStartup = true;
                                  -
                                  -        var chrome = Firebug.chrome = new Chrome(Application.chrome);
                                  -        chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onPressF12);
                                  -        
                                  -        if (Application.isPersistentMode && chrome.type == "popup")
                                  -            chrome.initialize();
                                  -    }
                                  -};
                                  -
                                  -var reattach = function()
                                  -{
                                  -    FBTrace.sysout("reattach", "-------------------------");
                                  -    
                                  -    var frame = chromeMap.frame;
                                  -    var popup = chromeMap.popup;
                                  -    
                                  -    // last UI state
                                  -    FBL.FirebugChrome.commandLineVisible = frame.commandLineVisible;
                                  -    FBL.FirebugChrome.sidePanelVisible = frame.sidePanelVisible;
                                  -    
                                  -    
                                  -    // chrome synchronization
                                  -    var framePanelMap = frame.panelMap;
                                  -    var popupPanelMap = popup.panelMap;
                                  -    for(var name in framePanelMap)
                                  -    {
                                  -        framePanelMap[name].contentNode.innerHTML = popupPanelMap[name].contentNode.innerHTML;
                                  -    }
                                  -    
                                  -    Firebug.chrome = frame;
                                  -    chromeMap.popup = null;
                                  -    
                                  -    if(FirebugChrome.selectedElement)
                                  -        Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Options
                                  -
                                  -var ChromeDefaultOptions = 
                                  -{
                                  -    type: "frame",
                                  -    id: "FirebugChrome",
                                  -    height: 250
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChrome = function(options)
                                  -{
                                  -    options = options || {};
                                  -    options = extend(ChromeDefaultOptions, options);
                                  -    
                                  -    var context = options.context || Application.browser;
                                  -    var onLoad = options.onLoad;
                                  -    
                                  -    var chrome = {};
                                  -    
                                  -    chrome.type = options.type;
                                  -    
                                  -    var isChromeFrame = chrome.type == "frame";
                                  -    var isBookmarletMode = Application.isBookmarletMode;
                                  -    var url = isBookmarletMode ? "about:blank" : Application.location.skin;
                                  -    
                                  -    if (isChromeFrame)
                                  -    {
                                  -        // Create the Chrome Frame
                                  -        
                                  -        /*
                                  -        var style = [
                                  -                'border:0;visibility:hidden;z-index:2147483647;position:',
                                  -                noFixedPosition ? "absolute" : "fixed",
                                  -                ';width:100%;left:0;bottom:',
                                  -                noFixedPosition ? "-1px" : "0",
                                  -                ';height:',
                                  -                options.height,
                                  -                'px;'
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = createGlobalElement("iframe",
                                  -                {
                                  -                    id: options.id,
                                  -                    frameBorder: 0,
                                  -                    style: style
                                  -                });
                                  -        /**/
                                  -        
                                  -        var node = chrome.node = context.document.createElement("iframe");
                                  -        
                                  -        node.setAttribute("id", options.id);
                                  -        node.setAttribute("frameBorder", "0");
                                  -        node.style.border = "0";
                                  -        node.style.visibility = "hidden";
                                  -        node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -        node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -        node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -        node.style.left = "0";
                                  -        node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -        node.style.height = options.height + "px";
                                  -        
                                  -        // avoid flickering during chrome rendering
                                  -        if (isFirefox)
                                  -            node.style.display = "none";
                                  -        
                                  -        if (!isBookmarletMode)
                                  -            node.setAttribute("src", Application.location.skin);
                                  -        
                                  -        context.document.body.appendChild(node);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Create the Chrome Popup
                                  -        var height = FirebugChrome.height || options.height;
                                  -        var options = [
                                  -                "true,top=",
                                  -                Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                ",left=0,height=",
                                  -                height,
                                  -                ",width=",
                                  -                screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                ",resizable"          
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = context.window.open(
                                  -            url, 
                                  -            "popup", 
                                  -            options
                                  -          );
                                  -        
                                  -        if (node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug popup was blocked.");
                                  -            return;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isBookmarletMode)
                                  -    {
                                  -        var tpl = getChromeTemplate();
                                  -        var doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -        doc.write(tpl);
                                  -        doc.close();
                                  -    }
                                  -    
                                  -    var win;
                                  -    var waitDelay = !isBookmarletMode ? isChromeFrame ? 200 : 300 : 100;
                                  -    var waitForChrome = function()
                                  -    {
                                  -        if ( // Frame loaded... OR
                                  -             isChromeFrame && (win=node.contentWindow) &&
                                  -             node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -             
                                  -             // Popup loaded
                                  -             !isChromeFrame && (win=node.window) && node.document &&
                                  -             node.document.getElementById("fbCommandLine") )
                                  -        {
                                  -            chrome.window = win.window;
                                  -            chrome.document = win.document;
                                  -            
                                  -            if (onLoad)
                                  -                onLoad(chrome);
                                  -        }
                                  -        else
                                  -            setTimeout(waitForChrome, waitDelay);
                                  -    }
                                  -    
                                  -    waitForChrome();
                                  -};
                                  -
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Application.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome loaded");
                                  -    
                                  -    if (Application.isPersistentMode)
                                  -    {
                                  -        chrome.window.FirebugApplication = Application;
                                  -    
                                  -        if (Application.isDevelopmentMode)
                                  -        {
                                  -            Application.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Application.location.app;
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },100);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            FBTrace.sysout("onPopupChromeLoad", "-------------------------");
                                  -            
                                  -            var frame = chromeMap.frame;
                                  -            
                                  -            if (frame)
                                  -            {
                                  -                frame.close();
                                  -            }
                                  -            
                                  -            // initial UI state
                                  -            FBL.FirebugChrome.commandLineVisible = true;
                                  -            FBL.FirebugChrome.sidePanelVisible = false;
                                  -               
                                  -            
                                  -            var popup = Firebug.chrome = new Chrome(chrome);
                                  -            
                                  -            // chrome synchronization
                                  -            var framePanelMap = frame.panelMap;
                                  -            var popupPanelMap = popup.panelMap;
                                  -            for(var name in framePanelMap)
                                  -            {
                                  -                popupPanelMap[name].contentNode.innerHTML = framePanelMap[name].contentNode.innerHTML;
                                  -            }
                                  -            
                                  -            popup.initialize();    
                                  -            dispatch(Firebug.modules, "initialize", []);
                                  -            
                                  -            if(FirebugChrome.selectedElement)
                                  -                Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement);
                                  -        }
                                  -    
                                  -    }
                                  -};
                                  -
                                  -
                                  -var getChromeTemplate = function()
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    r[++i] = '</title><style>';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = (isIE6 && tpl.IE6CSS) ? tpl.IE6CSS : '';
                                  -    r[++i] = '</style>';
                                  -    r[++i] = '</head><body>';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    
                                  -    chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = extend(Firebug.Controller, Firebug.PanelBar);
                                  -var ChromeBase = extend(ChromeBase, {
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.PanelBar.create.apply(this);
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        
                                  -        this.inspectButton = new Firebug.Button({
                                  -            type: "toggle",
                                  -            node: $("fbChrome_btInspect"),
                                  -            owner: Firebug.Inspector,
                                  -            
                                  -            onPress: Firebug.Inspector.startInspecting,
                                  -            onUnpress: Firebug.Inspector.stopInspecting          
                                  -        });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        Firebug.PanelBar.initialize.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create a new instance of the CommandLine class
                                  -        commandLine = new Firebug.CommandLine(fbCommandLine);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE)
                                  -        {
                                  -           var as = $$(".fbHover");
                                  -           for (var i=0, a; a=as[i]; i++)
                                  -           {
                                  -               a.setAttribute("href", "javascript:void(0)");
                                  -           }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        this.selectPanel(FirebugChrome.selectedPanel);
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        Firebug.Inspector.initialize();
                                  -        
                                  -        this.inspectButton.initialize();
                                  -        
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        this.inspectButton.shutdown();
                                  -        
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        Firebug.PanelBar.shutdown.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // destroy the instance of the CommandLine class
                                  -        commandLine.destroy();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        //alert('detach');
                                  -        if(!chromeMap.popup)
                                  -        {     
                                  -            createChrome({type: "popup", onLoad: onChromeLoad});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related drawings
                                  -        var chromeHeight = size.height;
                                  -        var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -        var fixedHeight = topHeight + commandLineHeight;
                                  -        var y = Math.max(chromeHeight, topHeight);
                                  -        
                                  -        fbPanel1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        fbPanelBox1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related drawings
                                  -        var chromeWidth = size.width /* window borders */;
                                  -        var sideWidth = FirebugChrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0;
                                  -        
                                  -        fbPanelBox1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";
                                  -        fbPanel1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";                
                                  -        
                                  -        if (FirebugChrome.sidePanelVisible)
                                  -        {
                                  -            fbPanelBox2Style.width = sideWidth + "px";
                                  -            fbPanelBar2BoxStyle.width = Math.max(sideWidth, 0) + "px";
                                  -            fbVSplitterStyle.right = Math.max(sideWidth - 6, 0) + "px";
                                  -        }
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && self.type == "frame")
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(options.hasSidePanel);
                                  -        Firebug.chrome.draw();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeContext = extend(ChromeBase, Context.prototype); 
                                  -
                                  -var ChromeFrameBase = extend(ChromeContext,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Application.openAtStartup)
                                  -            this.open();
                                  -        else
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            this.close();
                                  -        }
                                  -        
                                  -        //if (this.node.style.visibility != "visible")
                                  -        //    this.node.style.visibility = "visible";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [Firebug.browser.window, "unload", this.destroy],
                                  -            
                                  -            [$("fbChrome_btClose"), "click", this.close],
                                  -            [$("fbChrome_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (ChromeMini.isInitialized)
                                  -            {
                                  -                ChromeMini.shutdown();
                                  -            }
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -                node.style.visibility = "visible";
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (this.isInitialized)
                                  -            {
                                  -                dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "none";
                                  -                    
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            ChromeMini.initialize();
                                  -            
                                  -            node.style.visibility = "visible";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        
                                  -        if (this.type == "frame" && (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Firebug.Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        
                                  -        var mini = $("fbMiniChrome");
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon");
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors");
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        node.setAttribute("allowTransparency", "true");
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "transparent";
                                  -        
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon"), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        node.setAttribute("allowTransparency", "false");
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "#fff";
                                  -        
                                  -        var mini = $("fbMiniChrome");
                                  -        mini.style.display = "none";
                                  -        
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeContext, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        this.document.body.className = "FirebugPopup";
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy],
                                  -            [Firebug.browser.window, "unload", this.close]
                                  -        );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        reattach();
                                  -        ChromeBase.destroy.apply(this);
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.shutdown();
                                  -        this.node.close();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -//
                                  -var commandLine = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -var fbTop = null;
                                  -var fbContent = null;
                                  -var fbContentStyle = null;
                                  -var fbBottom = null;
                                  -var fbBtnInspect = null;
                                  -
                                  -var fbToolbar = null;
                                  -
                                  -var fbPanelBox1 = null;
                                  -var fbPanelBox1Style = null;
                                  -var fbPanelBox2 = null;
                                  -var fbPanelBox2Style = null;
                                  -var fbPanelBar2Box = null;
                                  -var fbPanelBar2BoxStyle = null;
                                  -
                                  -var fbHSplitter = null;
                                  -var fbVSplitter = null;
                                  -var fbVSplitterStyle = null;
                                  -
                                  -var fbPanel1 = null;
                                  -var fbPanel1Style = null;
                                  -var fbPanel2 = null;
                                  -
                                  -var fbConsole = null;
                                  -var fbConsoleStyle = null;
                                  -var fbHTML = null;
                                  -
                                  -var fbCommandLine = null;
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var topHeight = null;
                                  -var topPartialHeight = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var chromeRedrawSkipRate = isIE ? 30 : isOpera ? 80 : 75;
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.commandLineVisible;
                                  -    Firebug.chrome.commandLineVisible = FirebugChrome.commandLineVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.commandLineVisible;
                                  -    
                                  -    if (FirebugChrome.commandLineVisible != last)
                                  -    {
                                  -        fbBottom.className = FirebugChrome.commandLineVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible = FirebugChrome.sidePanelVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.sidePanelVisible;
                                  -    
                                  -    if (FirebugChrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = FirebugChrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = FirebugChrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onPressF12 = function onPressF12(event)
                                  -{
                                  -    if (event.keyCode == 123 /* F12 */ && 
                                  -        (!isFirefox && !event.shiftKey || event.shiftKey && isFirefox))
                                  -        {
                                  -            Firebug.chrome.toggle(false, event.ctrlKey);
                                  -            cancelEvent(event, true);
                                  -        }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastHSplitterMouseMove = 0;
                                  -var onHSplitterMouseMoveBuffer = null;
                                  -var onHSplitterMouseMoveTimer = null;
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugChrome")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastVSplitterMouseMove = 0;
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getWindowSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        this.timeMap[name] = (new Date()).getTime();
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        if (name in this.timeMap)
                                  -        {
                                  -            var delta = (new Date()).getTime() - this.timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete this.timeMap[name];
                                  -        }
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        return this.warn(["trace() not supported."]);
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().contentNode.innerHTML = "";
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    messageQueue: [],
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = this.messageQueue;
                                  -        this.messageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.contentNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            this.messageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().contentNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            node: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -if (!isFirefox)
                                  -    Application.browser.window.console = ConsoleAPI;        
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false;
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context);
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    chunker.lastIndex = 0;
                                  -    
                                  -    while ( (m = chunker.exec(selector)) !== null ) {
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = RegExp.rightContext;
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = false;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.match[ type ].exec( expr )) ) {
                                  -            var left = RegExp.leftContext;
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.selectNode(a);
                                  -        aRange.collapse(true);
                                  -        bRange.selectNode(b);
                                  -        bRange.collapse(true);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -Firebug.Inspector =
                                  -{  
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        offlineFragment = Firebug.browser.document.createDocumentFragment();
                                  -        
                                  -        //calculatePixelsPerInch();
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    onChromeReady: function()
                                  -    {
                                  -        //fbBtnInspect = $("fbBtnInspect");
                                  -    },    
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -
                                  -        //fbBtnInspect.href = "javascript:FB.stopInspecting(this)";
                                  -        //fbBtnInspect.className = "fbBtnInspectActive";
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        destroyInspectorFrame();
                                  -        
                                  -        //fbBtnInspect.href = "javascript:FB.startInspecting(this)";
                                  -        //fbBtnInspect.className = "";
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugChrome
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugChrome") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspector Outline
                                  -    
                                  -    drawOutline: function(el)
                                  -    {
                                  -        if (!outlineVisible) this.showOutline();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var border = 2;
                                  -        var o = outlineElements;
                                  -        
                                  -        o.fbOutlineT.style.top = top-border + "px";
                                  -        o.fbOutlineT.style.left = left + "px";
                                  -        o.fbOutlineT.style.width = width + "px";
                                  -  
                                  -        o.fbOutlineB.style.top = top+height + "px";
                                  -        o.fbOutlineB.style.left = left + "px";
                                  -        o.fbOutlineB.style.width = width + "px";
                                  -        
                                  -        o.fbOutlineL.style.top = top-border + "px";
                                  -        o.fbOutlineL.style.left = left-border + "px";
                                  -        o.fbOutlineL.style.height = height+2*border + "px";
                                  -
                                  -        o.fbOutlineR.style.top = top-border + "px";
                                  -        o.fbOutlineR.style.left = left+width + "px";
                                  -        o.fbOutlineR.style.height = height+2*border + "px";
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.body.appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxPaddingStyle.top = margin.top + "px";
                                  -        boxPaddingStyle.left = margin.left + "px";
                                  -        boxPaddingStyle.height = height + "px";
                                  -        boxPaddingStyle.width = width + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + padding.left + "px";
                                  -        boxContentStyle.height = height - padding.top - padding.bottom + "px";
                                  -        boxContentStyle.width = width - padding.left - padding.right + "px";
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible)
                                  -        {
                                  -            offlineFragment.appendChild(boxModel);
                                  -            boxModelVisible = false;
                                  -        }
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible)
                                  -        {
                                  -            Firebug.browser.document.body.appendChild(boxModel);
                                  -            boxModelVisible = true;
                                  -        }
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var pixelsPerInch, boxModel, boxModelStyle, boxMargin, boxMarginStyle, 
                                  -boxPadding, boxPaddingStyle, boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Application.location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Application.isTraceMode) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelStyle = inspectStyle + "opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7; height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7; width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = Firebug.browser.document.createElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.body.appendChild(fbInspectFrame);
                                  -}
                                  -
                                  -var destroyInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.body.removeChild(fbInspectFrame);
                                  -}
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = Firebug.browser.document.createElement("div");
                                  -        el.id = name;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = Firebug.browser.document.createElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = Firebug.browser.document.createElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxPadding = Firebug.browser.document.createElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = Firebug.browser.document.createElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var Console = Firebug.Console;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -
                                  -Firebug.CommandLine = function(element)
                                  -{
                                  -    this.element = element;
                                  -    
                                  -    if (isOpera)
                                  -      fixOperaTabKey(this.element);
                                  -    
                                  -    this.onKeyDown = bind(this.onKeyDown, this);
                                  -    addEvent(this.element, "keydown", this.onKeyDown);
                                  -    
                                  -    //Application.browser.onerror = this.onError;
                                  -    var self = this
                                  -    Application.browser.onerror = function(){self.onError.apply(self, arguments)};
                                  -
                                  -    //Application.browser.onerror = this.onError;
                                  -    window.onerror = this.onError;
                                  -    
                                  -    initializeCommandLineAPI();
                                  -};
                                  -
                                  -Firebug.CommandLine.prototype = 
                                  -{
                                  -    element: null,
                                  -  
                                  -    _buffer: [],
                                  -    _bi: -1,
                                  -    
                                  -    _completing: null,
                                  -    _completePrefix: null,
                                  -    _completeExpr: null,
                                  -    _completeBuffer: null,
                                  -    _ci: null,
                                  -    
                                  -    _completion:
                                  -    {
                                  -        window:
                                  -        [
                                  -            "console"
                                  -        ],
                                  -        
                                  -        document:
                                  -        [
                                  -            "getElementById", 
                                  -            "getElementsByTagName"
                                  -        ]
                                  -    },
                                  -  
                                  -    _stack: function(command)
                                  -    {
                                  -        this._buffer.push(command);
                                  -        this._bi = this._buffer.length;
                                  -    },
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        window.onerror = null;
                                  -        this.element = null
                                  -    },
                                  -
                                  -    execute: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var command = cmd.value;
                                  -        
                                  -        this._stack(command);
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        
                                  -        try
                                  -        {
                                  -            
                                  -            var result = this.evaluate(command);
                                  -            // evita que seja repetido o log, caso o comando executado
                                  -            // j? seja um log via linha de comando
                                  -            if (result != Console.LOG_COMMAND)
                                  -            {
                                  -                var html = [];
                                  -                Firebug.Reps.appendObject(result, html)
                                  -                Firebug.Console.writeMessage(html, "command");
                                  -            }
                                  -                
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            Firebug.Console.writeMessage([e.message || e], "error");
                                  -        }
                                  -        
                                  -        cmd.value = "";
                                  -    },
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -            
                                  -        //Firebug.context = Firebug.chrome;
                                  -        //api = null;
                                  -
                                  -        return Firebug.context.evaluate(expr, "window", api, Console.error);
                                  -    },
                                  -    
                                  -    //eval: new Function("return window.eval.apply(window, arguments)"),
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var buffer = this._buffer;
                                  -        
                                  -        if (this._bi > 0 && buffer.length > 0)
                                  -            cmd.value = buffer[--this._bi];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var buffer = this._buffer;
                                  -        var limit = buffer.length -1;
                                  -        var i = this._bi;
                                  -        
                                  -        if (i < limit)
                                  -          cmd.value = buffer[++this._bi];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++this._bi;
                                  -            cmd.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var command = cmd.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!this._completing)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            this._completing = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                this._completePrefix = prefix;
                                  -                this._completeExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                this._ci = -1;
                                  -                
                                  -                buffer = this._completeBuffer = isIE ?
                                  -                    this._completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = this._completeBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = this._completePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=this._ci+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    this._ci = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            cmd.value = this._completeExpr + result;
                                  -    },
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -            this._completing = false;
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -            this.execute();
                                  -
                                  -        else if (code == 27 /* ESC */)
                                  -            setTimeout(this.clear, 0);
                                  -          
                                  -        else if (code == 38 /* up */)
                                  -            this.prevCommand();
                                  -          
                                  -        else if (code == 40 /* down */)
                                  -            this.nextCommand();
                                  -          
                                  -        else if (code == 9 /* tab */)
                                  -            this.autocomplete(e.shiftKey);
                                  -          
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector(selector, context)
                                  -    },
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -}
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Firebug.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = node.style.visibility != "hidden" &&
                                  -                        node.style.display != "none";
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || attr.nodeName == cacheID)
                                  -                        continue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                        '</span>&quot;')
                                  -                }
                                  -            
                                  -
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(document.all){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        //hasStatusBar: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Application.isPersistentMode || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        fbPanel1 = null;
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }    
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedElement = e.id;
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -    }
                                  -}
                                  -
                                  -var OLD_chromeLoad = function OLD_chromeLoad(doc)
                                  -{
                                  -    Firebug.Inspector.onChromeReady();
                                  -    
                                  -    var rootNode = document.documentElement;
                                  -    
                                  -    /* Console event handlers */
                                  -    addEvent(fbConsole, 'mousemove', onListMouseMove);
                                  -    addEvent(fbConsole, 'mouseout', onListMouseOut);
                                  -    
                                  -    
                                  -    // HTML event handlers
                                  -    addEvent(fbHTML, 'click', Firebug.HTML.onTreeClick);
                                  -    
                                  -    addEvent(fbHTML, 'mousemove', onListMouseMove);
                                  -    addEvent(fbHTML, 'mouseout', onListMouseOut);
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugChrome" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            DIV({"class": "memberLabel $member.type\\Label"},
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var $STR = function(){};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -Firebug.Rep={};  // TODO: xxxpedro
                                  -
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            var setSize = members.length;
                                  -            var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            delete row.insertTimeout;
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && typeof object == "function")
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (typeof(val) == "function")
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        //throw exc;
                                  -        //if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (typeof ob == "function") return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (valueType == "function" || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -function getRowName(row)
                                  -{
                                  -    return row.firstChild.textContent;
                                  -}
                                  -
                                  -function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function DOMPanel(){};
                                  -
                                  -DOMPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        /*
                                  -        this.clearButton = new Firebug.Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            module: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -        /**/
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -        
                                  -        var target = this.contentNode;
                                  -        var template = DirTablePlate;
                                  -        
                                  -        var panel = {};
                                  -        var toggles = {};
                                  -        
                                  -        template.tag.replace({domPanel: panel, toggles: toggles, object: window}, target);
                                  -        
                                  -        //Firebug.reps[5].tag.replace({}, target);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMPanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Application.isTraceMode) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            module: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.initialize();
                                  diff --git a/tags/firebug1.3a3/build/firebug.domplatemin.js b/tags/firebug1.3a3/build/firebug.domplatemin.js
                                  deleted file mode 100644
                                  index 008e4ebd..00000000
                                  --- a/tags/firebug1.3a3/build/firebug.domplatemin.js
                                  +++ /dev/null
                                  @@ -1,3485 +0,0 @@
                                  -/*
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -var FBL={};
                                  -(function(){var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){var isChromeContext=typeof window.FirebugApplication=="object";
                                  -if(!isChromeContext){findLocation()
                                  -}FBTrace=FBL.FBTrace;
                                  -if(FBL.Application.isTraceMode){FBTrace.initialize()
                                  -}if(isChromeContext){FBL.Application=window.FirebugApplication;
                                  -FBL.Application.isChromeContext=true;
                                  -FBL.FirebugChrome=FBL.Application.FirebugChrome
                                  -}else{FBL.Application.browser=window;
                                  -FBL.Application.destroy=destroyApplication
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}if(!isChromeContext){FBL.Application.FirebugChrome=FBL.FirebugChrome
                                  -}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){if(document.body){onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","create application chrome")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Application.isPersistentMode&&FBL.Application.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Application.isDevelopmentMode){window.FirebugApplication.destroy();
                                  -if(FBL.isIE){window.FirebugApplication=null
                                  -}else{delete window.FirebugApplication
                                  -}}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -this.Application={openAtStartup:false,isBookmarletMode:false,isPersistentMode:false,isTraceMode:false,skin:"xp",isDevelopmentMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyApplication=function destroyApplication(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -this.Application.location={sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -if(script){file=reFirebugFile.exec(script.src)
                                  -}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
                                  -break
                                  -}}}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var rel=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var lastFolder=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(rel){var j=rel[1].length/3;
                                  -var p;
                                  -while(j-->0){path=lastFolder.exec(path)[1]
                                  -}path+=rel[2]
                                  -}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var App=FBL.Application;
                                  -var loc=App.location;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=loc.baseDir+"skin/"+App.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName;
                                  -if(fileName=="firebug.dev.js"){App.isDevelopmentMode=true
                                  -}if(fileOptions){if(fileOptions.indexOf("open")!=-1){App.openAtStartup=true
                                  -}if(fileOptions.indexOf("remote")!=-1){App.isBookmarletMode=true;
                                  -App.openAtStartup=true
                                  -}if(fileOptions.indexOf("trace")!=-1){App.isTraceMode=true
                                  -}if(fileOptions.indexOf("persist")!=-1){App.isPersistentMode=true
                                  -}}var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval(innerOptions)
                                  -}}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}var userAgent=navigator.userAgent;
                                  -this.isFirefox=userAgent.indexOf("Firefox")!=-1;
                                  -this.isIE=userAgent.indexOf("MSIE")!=-1;
                                  -this.isOpera=userAgent.indexOf("Opera")!=-1;
                                  -this.isSafari=userAgent.indexOf("AppleWebKit")!=-1;
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.isQuiksMode=document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -this.NS=document.getElementsByTagName("html")[0].getAttribute("xmlns");
                                  -var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.safeToString=function(ob){try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return"[an object with no toString() function]"
                                  -}};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML"
                                  -};
                                  -this.collapse=function(elt,collapsed){elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){node.innerHTML=""
                                  -};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&!this.hasClass(node,name)){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if(this.hasClass(elt,name)){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Application.browser.document;
                                  -var element=FBL.isIE?doc.createElement(tagName):doc.createElementNS(FBL.NS,tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(FBL.isIE&&name=="style"){propname="cssText"
                                  -}if(name!="document"){element.setAttribute[propname]=properties[name]
                                  -}}return element
                                  -};
                                  -this.isLeftClick=function(event){return event.button==0&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return event.button==1&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return event.button==2&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return event.button==0&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return event.button==0&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}};
                                  -this.removeEvent=function(object,name,handler){if(document.all){object.detachEvent("on"+name,handler)
                                  -}else{object.removeEventListener(name,handler,false)
                                  -}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(document.all){e.cancelBubble=true
                                  -}else{e.stopPropagation()
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.addEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.addEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.removeEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.removeEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listeners.hasOwnProperty(prop)&&listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}}catch(exc){}};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){e.onselectstart=function(){return false
                                  -}
                                  -}else{e.onmousedown=function(){return false
                                  -}
                                  -}e.style.cursor="default"
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var s=Components.utils.Sandbox(originURL);
                                  -var jsonObject=null;
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(e){if(e.message.indexOf("is not defined")){var parts=e.message.split(" ");
                                  -s[parts[0]]=function(str){return str
                                  -};
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(ex){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isArrayLike=function(object){};
                                  -this.isFunction=function(object){return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=""+value){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{}};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=domMemberMap[name];
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(object instanceof Document||object instanceof XMLDocument){return domMemberCache.Document
                                  -}else{if(object instanceof Location){return domMemberCache.Location
                                  -}else{if(object instanceof HTMLImageElement){return domMemberCache.HTMLImageElement
                                  -}else{if(object instanceof HTMLAnchorElement){return domMemberCache.HTMLAnchorElement
                                  -}else{if(object instanceof HTMLInputElement){return domMemberCache.HTMLInputElement
                                  -}else{if(object instanceof HTMLButtonElement){return domMemberCache.HTMLButtonElement
                                  -}else{if(object instanceof HTMLFormElement){return domMemberCache.HTMLFormElement
                                  -}else{if(object instanceof HTMLBodyElement){return domMemberCache.HTMLBodyElement
                                  -}else{if(object instanceof HTMLHtmlElement){return domMemberCache.HTMLHtmlElement
                                  -}else{if(object instanceof HTMLScriptElement){return domMemberCache.HTMLScriptElement
                                  -}else{if(object instanceof HTMLTableElement){return domMemberCache.HTMLTableElement
                                  -}else{if(object instanceof HTMLTableRowElement){return domMemberCache.HTMLTableRowElement
                                  -}else{if(object instanceof HTMLTableCellElement){return domMemberCache.HTMLTableCellElement
                                  -}else{if(object instanceof HTMLIFrameElement){return domMemberCache.HTMLIFrameElement
                                  -}else{if(object instanceof SVGSVGElement){return domMemberCache.SVGSVGElement
                                  -}else{if(object instanceof SVGElement){return domMemberCache.SVGElement
                                  -}else{if(object instanceof Element){return domMemberCache.Element
                                  -}else{if(object instanceof Text||object instanceof CDATASection){return domMemberCache.Text
                                  -}else{if(object instanceof Attr){return domMemberCache.Attr
                                  -}else{if(object instanceof Node){return domMemberCache.Node
                                  -}else{if(object instanceof Event||object instanceof EventCopy){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap",]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1};
                                  -this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=options||{};
                                  -o.type=o.type&&o.type.toLowerCase()||"get";
                                  -o.async=o.async||true;
                                  -o.dataType=o.dataType||"text";
                                  -o.contentType=o.contentType||"application/x-www-form-urlencoded";
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.Ajax.initialize();
                                  -this.createCookie=function(name,value,days){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -};
                                  -this.readCookie=function(name){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}return null
                                  -};
                                  -this.eraseCookie=function(name){createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}}
                                  -}).apply(FBL);
                                  -FBL.FBTrace={};
                                  -(function(){var e={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1};
                                  -this.messageQueue=[];
                                  -this.module=null;
                                  -this.initialize=function(){for(var h in e){this[h]=e[h]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(i,h){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(k){this.module=k;
                                  -var h=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var j=0;
                                  -j<h.length;
                                  -++j){this.writeMessage(h[j][0],h[j][1],h[j][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(o,m){var k=this.DBG_TIMESTAMP?[d()," | "]:[];
                                  -var n=o.length;
                                  -for(var j=0;
                                  -j<n;
                                  -++j){g(" ",k);
                                  -var h=o[j];
                                  -if(j==0){k.push("<b>");
                                  -g(h,k);
                                  -k.push("</b>")
                                  -}else{g(h,k)
                                  -}}return this.logRow(k,m)
                                  -};
                                  -this.logRow=function(j,i){var h=this.getPanel();
                                  -if(h&&h.contentNode){this.writeMessage(j,i)
                                  -}else{this.messageQueue.push([j,i])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(j,i){var h=this.getPanel().containerNode;
                                  -var k=h.scrollTop+h.offsetHeight>=h.scrollHeight;
                                  -this.writeRow.call(this,j,i);
                                  -if(k){h.scrollTop=h.scrollHeight-h.offsetHeight
                                  -}};
                                  -this.appendRow=function(i){var h=this.getPanel().contentNode;
                                  -h.appendChild(i)
                                  -};
                                  -this.writeRow=function(i,h){var j=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -j.className="logRow"+(h?" logRow-"+h:"");
                                  -j.innerHTML=i.join("");
                                  -this.appendRow(j)
                                  -};
                                  -function g(h,i){i.push(f(c(h)))
                                  -}function d(){var i=new Date();
                                  -var h=""+(i.getMilliseconds()/1000).toFixed(3);
                                  -h=h.substr(2);
                                  -return i.toLocaleTimeString()+"."+h
                                  -}var a={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function b(h){return a[h]
                                  -}function f(h){return(h+"").replace(/[<>&"']/g,b)
                                  -}function c(i){try{return i+""
                                  -}catch(h){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){FBL.cacheID="___FBL_";
                                  -FBL.documentCache={};
                                  -var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -Application.browser.window.Firebug=FBL.Firebug={version:"Firebug Lite 1.3.0a2",revision:"$Revision: 4001 $",modules:modules,panelTypes:panelTypes,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Application.browser);
                                  -Firebug.context=Firebug.browser;
                                  -cacheDocument();
                                  -FirebugChrome.initialize()
                                  -},shutdown:function(){documentCache={};
                                  -dispatch(modules,"shutdown",[])
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){panelTypeMap[arguments[i].prototype.name]=arguments[i]
                                  -}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){defaultRep=rep;
                                  -defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof(object);
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}}};
                                  -Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false
                                  -},inspectObject:function(object,context){Firebug.chrome.select(object)
                                  -},browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object
                                  -},getTitle:function(object){var label=safeToString(object);
                                  -var re=/\[object (.*?)\]/;
                                  -var m=re.exec(label);
                                  -return m?m[1]:label
                                  -},getTooltip:function(object){return null
                                  -},getContextMenuItems:function(object,target,context){return[]
                                  -},STR:function(name){return $STR(name)
                                  -},cropString:function(text){return cropString(text)
                                  -},toLowerCase:function(text){return text?text.toLowerCase():text
                                  -},plural:function(n){return n==1?"":"s"
                                  -}});
                                  -var cacheDocument=function cacheDocument(){var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -el[cacheID]=i;
                                  -documentCache[i]=el
                                  -}};
                                  -Firebug.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -Firebug.Module={initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}};
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasSidePanel:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,panelHTML:"",panelCSS:"",toolButtonsHTML:""},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,panelBar:null,commandLine:null,toolButtons:null,statusBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -if(options.isPreRendered){this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasSidePanel){}}else{var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
                                  -$("fbPanel1").appendChild(panelNode);
                                  -var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
                                  -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
                                  -if(isIE6){tabNode.href="javascript:void(0)"
                                  -}$("fbPanelBar1").appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"})
                                  -}$("fbToolbarButtons").appendChild(this.toolButtonsNode)
                                  -}var contentNode=this.contentNode=createElement("div");
                                  -this.panelNode.appendChild(contentNode);
                                  -this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(this.panelNode){delete this.panelNode.ownerPanel
                                  -}this.destroyNode()
                                  -},initialize:function(){var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode
                                  -},shutdown:function(){},detach:function(oldChrome,newChrome){this.lastScrollTop=this.panelNode.scrollTop
                                  -},reattach:function(doc){this.document=doc;
                                  -if(this.panelNode){this.panelNode=doc.adoptNode(this.panelNode,true);
                                  -this.panelNode.ownerPanel=this;
                                  -doc.body.appendChild(this.panelNode);
                                  -this.panelNode.scrollTop=this.lastScrollTop;
                                  -delete this.lastScrollTop
                                  -}},show:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -Firebug.chrome.layout(this)
                                  -},hide:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none"
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},refresh:function(){},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text){}};
                                  -Firebug.PanelBar={selectedPanel:null,create:function(){this.panelMap={}
                                  -},initialize:function(){for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){},addPanel:function(panelName,parentPanel){var PanelType=panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -panel.shutdown()
                                  -}if(!panel.parentPanel){FirebugChrome.selectedPanel=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.initialize();
                                  -panel.show()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -},getSelectedPanel:function(){return this.selectedPanel
                                  -}};
                                  -Firebug.Button=function(options){options=options||{};
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -this.type=options.type||"normal";
                                  -this.onClick=options.onClick;
                                  -this.onPress=options.onPress;
                                  -this.onUnpress=options.onUnpress;
                                  -if(options.node){this.node=options.node;
                                  -this.owner=options.owner;
                                  -this.container=this.node.parentNode
                                  -}else{var caption=options.caption||"caption";
                                  -var title=options.title||"title";
                                  -this.owner=this.module=options.module;
                                  -this.panel=options.panel||this.module.getPanel();
                                  -this.container=this.panel.toolButtonsNode;
                                  -this.node=createElement("a",{className:"fbHover",title:title,innerHTML:caption});
                                  -this.container.appendChild(this.node)
                                  -}};
                                  -Firebug.Button.prototype=extend(Firebug.Controller,{type:null,node:null,owner:null,module:null,panel:null,container:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -this.container.removeChild(this.node)
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var node=this.node;
                                  -this.addController([node,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([node,"mouseup",this.handleUnpress],[node,"mouseout",this.handleUnpress],[node,"click",this.handleClick])
                                  -}},shutdown:function(){Firebug.Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.node,"fbBtnPressed")
                                  -}else{if(display=="unpressed"){removeClass(this.node,"fbBtnPressed")
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner)
                                  -}}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -},addButton:function(caption,title,handler){},removeAllButtons:function(){}});
                                  -function StatusBar(){}StatusBar.prototype=extend(Firebug.Controller,{});
                                  -function PanelOptions(){}PanelOptions.prototype=extend(Firebug.Controller,{})
                                  -}});
                                  -function DomplateTag(a){this.tagName=a
                                  -}function DomplateEmbed(){}function DomplateLoop(){}(function(){var womb=null;
                                  -domplate=function(){var lastSubject;
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i]
                                  -}for(var name in lastSubject){var val=lastSubject[name];
                                  -if(isTag(val)){val.tag.subject=lastSubject
                                  -}}return lastSubject
                                  -};
                                  -domplate.context=function(context,fn){var lastContext=domplate.lastContext;
                                  -domplate.topContext=context;
                                  -fn.apply(context);
                                  -domplate.topContext=lastContext
                                  -};
                                  -FBL.TAG=function(){var embed=new DomplateEmbed();
                                  -return embed.merge(arguments)
                                  -};
                                  -FBL.FOR=function(){var loop=new DomplateLoop();
                                  -return loop.merge(arguments)
                                  -};
                                  -DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName
                                  -}this.context=oldTag?oldTag.context:null;
                                  -this.subject=oldTag?oldTag.subject:null;
                                  -this.attrs=oldTag?copyObject(oldTag.attrs):{};
                                  -this.classes=oldTag?copyObject(oldTag.classes):{};
                                  -this.props=oldTag?copyObject(oldTag.props):null;
                                  -this.listeners=oldTag?copyArray(oldTag.listeners):null;
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args.length?args[0]:null;
                                  -var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs);
                                  -this.children=[];
                                  -if(domplate.topContext){this.context=domplate.topContext
                                  -}if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children)
                                  -}if(hasAttrs){this.parseAttrs(attrs)
                                  -}return creator(this,DomplateTag)
                                  -},parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]);
                                  -readPartNames(val,this.vars);
                                  -if(name.indexOf("on")==0){var eventName=name.substr(2);
                                  -if(!this.listeners){this.listeners=[]
                                  -}this.listeners.push(eventName,val)
                                  -}else{if(name.indexOf("_")==0){var propName=name.substr(1);
                                  -if(!this.props){this.props={}
                                  -}this.props[propName]=val
                                  -}else{if(name.indexOf("$")==0){var className=name.substr(1);
                                  -if(!this.classes){this.classes={}
                                  -}this.classes[className]=val
                                  -}else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val
                                  -}else{this.attrs[name]=val
                                  -}}}}}},compile:function(){if(this.renderMarkup){return
                                  -}this.compileMarkup();
                                  -this.compileDOM()
                                  -},compileMarkup:function(){this.markupArgs=[];
                                  -var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0};
                                  -this.generateMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -var fnBlock=["r=(function (__code__, __context__, __in__, __out__"];
                                  -for(var i=0;
                                  -i<info.argIndex;
                                  -++i){fnBlock.push(", s",i)
                                  -}fnBlock.push(") {");
                                  -if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (__context__) {")
                                  -}fnBlock.push("with (__in__) {");
                                  -fnBlock.push.apply(fnBlock,blocks);
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("}})");
                                  -function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var tagOutputs=[];
                                  -var markupArgs=[code,tag.tag.context,args,tagOutputs];
                                  -markupArgs.push.apply(markupArgs,tag.tag.markupArgs);
                                  -tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs);
                                  -outputs.push(tag);
                                  -outputs.push(tagOutputs)
                                  -}function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}function __loop__(iter,outputs,fn){var iterOuts=[];
                                  -outputs.push(iterOuts);
                                  -if(iter instanceof Array){iter=new ArrayIterator(iter)
                                  -}try{while(1){var value=iter.next();
                                  -var itemOuts=[0,0];
                                  -iterOuts.push(itemOuts);
                                  -fn.apply(this,[value,itemOuts])
                                  -}}catch(exc){if(exc!=StopIteration){throw exc
                                  -}}}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderMarkup=r
                                  -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars)
                                  -}for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.getVarNames(args)
                                  -}else{if(child instanceof Parts){for(var i=0;
                                  -i<child.parts.length;
                                  -++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name;
                                  -var names=name.split(".");
                                  -args.push(names[0])
                                  -}}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"');
                                  -for(var name in this.attrs){if(name!="class"){var val=this.attrs[name];
                                  -topBlock.push(', " ',name,'=\\""');
                                  -addParts(val,",",topBlock,info,true);
                                  -topBlock.push(', "\\""')
                                  -}}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){readPartNames(this.listeners[i+1],topOuts)
                                  -}}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts)
                                  -}}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""');
                                  -if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true)
                                  -}topBlock.push(', " "');
                                  -for(var name in this.classes){topBlock.push(", (");
                                  -addParts(this.classes[name],"",topBlock,info);
                                  -topBlock.push(' ? "',name,'" + " " : "")')
                                  -}topBlock.push(', "\\""')
                                  -}topBlock.push(',">"');
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -topBlock.push(',"</',this.tagName,'>"')
                                  -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info)
                                  -}else{addParts(child,",",topBlock,info,true)
                                  -}}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");")
                                  -}if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");")
                                  -}topBlock.splice(0,topBlock.length);
                                  -topOuts.splice(0,topOuts.length)
                                  -},addLocals:function(blocks){var varNames=[];
                                  -this.getVarNames(varNames);
                                  -var map={};
                                  -for(var i=0;
                                  -i<varNames.length;
                                  -++i){var name=varNames[i];
                                  -if(map.hasOwnProperty(name)){continue
                                  -}map[name]=1;
                                  -var names=name.split(".");
                                  -blocks.push("var ",names[0]+" = __in__."+names[0]+";")
                                  -}},compileDOM:function(){var path=[];
                                  -var blocks=[];
                                  -this.domArgs=[];
                                  -path.embedIndex=0;
                                  -path.loopIndex=0;
                                  -path.staticIndex=0;
                                  -path.renderIndex=0;
                                  -var nodeCount=this.generateDOM(path,blocks,this.domArgs);
                                  -var fnBlock=["r=(function (root, context, o"];
                                  -for(var i=0;
                                  -i<path.staticIndex;
                                  -++i){fnBlock.push(", ","s"+i)
                                  -}for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){fnBlock.push(", ","d"+i)
                                  -}fnBlock.push(") {");
                                  -for(var i=0;
                                  -i<path.loopIndex;
                                  -++i){fnBlock.push("var l",i," = 0;")
                                  -}for(var i=0;
                                  -i<path.embedIndex;
                                  -++i){fnBlock.push("var e",i," = 0;")
                                  -}if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (context) {")
                                  -}fnBlock.push(blocks.join(""));
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("return ",nodeCount,";");
                                  -fnBlock.push("})");
                                  -function __bind__(object,fn){return function(event){return fn.apply(object,[event])
                                  -}
                                  -}function __link__(node,tag,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var domArgs=[node,tag.tag.context,0];
                                  -domArgs.push.apply(domArgs,tag.tag.domArgs);
                                  -domArgs.push.apply(domArgs,args);
                                  -return tag.tag.renderDOM.apply(tag.tag.subject,domArgs)
                                  -}var self=this;
                                  -function __loop__(iter,fn){var nodeCount=0;
                                  -for(var i=0;
                                  -i<iter.length;
                                  -++i){iter[i][0]=i;
                                  -iter[i][1]=nodeCount;
                                  -nodeCount+=fn.apply(this,iter[i])
                                  -}return nodeCount
                                  -}function __path__(parent,offset){var root=parent;
                                  -for(var i=2;
                                  -i<arguments.length;
                                  -++i){var index=arguments[i];
                                  -if(i==3){index+=offset
                                  -}if(index==-1){parent=parent.parentNode
                                  -}else{parent=parent.childNodes[index]
                                  -}}return parent
                                  -}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderDOM=r
                                  -},generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks)
                                  -}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){var val=this.listeners[i+1];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);")
                                  -}}if(this.props){for(var name in this.props){var val=this.props[name];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push("node.",name," = ",arg,";")
                                  -}}this.generateChildDOM(path,blocks,args);
                                  -return 1
                                  -},generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o");
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){blocks.push(",",path[i])
                                  -}blocks.push(");")
                                  -},generateChildDOM:function(path,blocks,args){path.push(0);
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args)
                                  -}else{path[path.length-1]+="+1"
                                  -}}path.pop()
                                  -}};
                                  -DomplateEmbed.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]);
                                  -this.attrs=oldTag?oldTag.attrs:{};
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args[1];
                                  -for(var name in attrs){var val=parseValue(attrs[name]);
                                  -this.attrs[name]=val;
                                  -readPartNames(val,this.vars)
                                  -}return creator(this,DomplateEmbed)
                                  -},getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name)
                                  -}if(this.vars){names.push.apply(names,this.vars)
                                  -}},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("__link__(");
                                  -addParts(this.value,"",blocks,info);
                                  -blocks.push(", __code__, __out__, {");
                                  -var lastName=null;
                                  -for(var name in this.attrs){if(lastName){blocks.push(",")
                                  -}lastName=name;
                                  -var val=this.attrs[name];
                                  -blocks.push('"',name,'":');
                                  -addParts(val,"",blocks,info)
                                  -}blocks.push("});")
                                  -},generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++;
                                  -this.generateNodePath(path,blocks);
                                  -var valueName="d"+path.renderIndex++;
                                  -var argsName="d"+path.renderIndex++;
                                  -blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");");
                                  -return embedName
                                  -}});
                                  -DomplateLoop.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0];
                                  -this.iter=oldTag?oldTag.iter:parseValue(args[1]);
                                  -this.vars=[];
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -var offset=Math.min(args.length,2);
                                  -parseChildren(args,offset,this.vars,this.children);
                                  -return creator(this,DomplateLoop)
                                  -},getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name)
                                  -}DomplateTag.prototype.getVarNames.apply(this,[names])
                                  -},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -var iterName;
                                  -if(this.iter instanceof Parts){var part=this.iter.parts[0];
                                  -iterName=part.name;
                                  -if(part.format){for(var i=0;
                                  -i<part.format.length;
                                  -++i){iterName=part.format[i]+"("+iterName+")"
                                  -}}}else{iterName=this.iter
                                  -}blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {");
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("}]);")
                                  -},generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++;
                                  -var counterName="i"+path.loopIndex;
                                  -var loopName="l"+path.loopIndex++;
                                  -if(!path.length){path.push(-1,0)
                                  -}var preIndex=path.renderIndex;
                                  -path.renderIndex=0;
                                  -var nodeCount=0;
                                  -var subBlocks=[];
                                  -var basePath=path[path.length-1];
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount;
                                  -var child=this.children[i];
                                  -if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args)
                                  -}else{nodeCount+="+1"
                                  -}}path[path.length-1]=basePath+"+"+loopName;
                                  -blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName);
                                  -for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){blocks.push(",d"+i)
                                  -}blocks.push(") {");
                                  -blocks.push(subBlocks.join(""));
                                  -blocks.push("return ",nodeCount,";");
                                  -blocks.push("}]);");
                                  -path.renderIndex=preIndex;
                                  -return loopName
                                  -}});
                                  -function Variable(name,format){this.name=name;
                                  -this.format=format
                                  -}function Parts(parts){this.parts=parts
                                  -}function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -var index=0;
                                  -var parts=[];
                                  -var m;
                                  -while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index);
                                  -if(pre){parts.push(pre)
                                  -}var expr=m[1].split("|");
                                  -parts.push(new Variable(expr[0],expr.slice(1)));
                                  -index=re.lastIndex
                                  -}if(!index){return str
                                  -}var post=str.substr(index);
                                  -if(post){parts.push(post)
                                  -}return new Parts(parts)
                                  -}function parseValue(val){return typeof(val)=="string"?parseParts(val):val
                                  -}function parseChildren(args,offset,vars,children){for(var i=offset;
                                  -i<args.length;
                                  -++i){var val=parseValue(args[i]);
                                  -children.push(val);
                                  -readPartNames(val,vars)
                                  -}}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){vars.push(part.name)
                                  -}}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[];
                                  -for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var varName="d"+path.renderIndex++;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){varName=part.format[j]+"("+varName+")"
                                  -}}vals.push(varName)
                                  -}else{vals.push('"'+part.replace(/"/g,'\\"')+'"')
                                  -}}return vals.join("+")
                                  -}else{args.push(val);
                                  -return"s"+path.staticIndex++
                                  -}}function addParts(val,delim,block,info,escapeIt){var vals=[];
                                  -if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var partName=part.name;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){partName=part.format[j]+"("+partName+")"
                                  -}}if(escapeIt){vals.push("__escape__("+partName+")")
                                  -}else{vals.push(partName)
                                  -}}else{vals.push('"'+part+'"')
                                  -}}}else{if(isTag(val)){info.args.push(val);
                                  -vals.push("s"+info.argIndex++)
                                  -}else{vals.push('"'+val+'"')
                                  -}}var parts=vals.join(delim);
                                  -if(parts){block.push(delim,parts)
                                  -}}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag
                                  -}function creator(tag,cons){var fn=new Function("var tag = arguments.callee.tag;var cons = arguments.callee.cons;var newTag = new cons();return newTag.merge(arguments, tag);");
                                  -fn.tag=tag;
                                  -fn.cons=cons;
                                  -extend(fn,Renderer);
                                  -return fn
                                  -}function copyArray(oldArray){var ary=[];
                                  -if(oldArray){for(var i=0;
                                  -i<oldArray.length;
                                  -++i){ary.push(oldArray[i])
                                  -}}return ary
                                  -}function copyObject(l,r){var m={};
                                  -extend(m,l);
                                  -extend(m,r);
                                  -return m
                                  -}function extend(l,r){for(var n in r){l[n]=r[n]
                                  -}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}}function ArrayIterator(array){var index=-1;
                                  -this.next=function(){if(++index>=array.length){throw StopIteration
                                  -}return array[index]
                                  -}
                                  -}function StopIteration(){}FBL.$break=function(){throw StopIteration
                                  -};
                                  -var Renderer={renderHTML:function(args,outputs,self){var code=[];
                                  -var markupArgs=[code,this.tag.context,args,outputs];
                                  -markupArgs.push.apply(markupArgs,this.tag.markupArgs);
                                  -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs);
                                  -return code.join("")
                                  -},insertRows:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -var div=doc.createElement("div");
                                  -div.innerHTML="<table><tbody>"+html+"</tbody></table>";
                                  -var tbody=div.firstChild.firstChild;
                                  -var parent=before.tagName=="TR"?before.parentNode:before;
                                  -var after=before.tagName=="TR"?before.nextSibling:null;
                                  -var firstRow=tbody.firstChild,lastRow;
                                  -while(tbody.firstChild){lastRow=tbody.firstChild;
                                  -if(after){parent.insertBefore(lastRow,after)
                                  -}else{parent.appendChild(lastRow)
                                  -}}var offset=0;
                                  -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild;
                                  -for(;
                                  -node&&node!=firstRow;
                                  -node=node.nextSibling){++offset
                                  -}}var domArgs=[firstRow,this.tag.context,offset];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return[firstRow,lastRow]
                                  -},insertAfter:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild;
                                  -while(womb.firstChild){if(before.nextSibling){before.parentNode.insertBefore(womb.firstChild,before.nextSibling)
                                  -}else{before.parentNode.appendChild(womb.firstChild)
                                  -}}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:(this.tag.subject?this.tag.subject:null),domArgs);
                                  -return root
                                  -},replace:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var root;
                                  -if(parent.nodeType==1){parent.innerHTML=html;
                                  -root=parent.firstChild
                                  -}else{if(!parent||parent.nodeType!=9){parent=document
                                  -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild
                                  -}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -},append:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild;
                                  -while(womb.firstChild){parent.appendChild(womb.firstChild)
                                  -}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -}};
                                  -function defineTags(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){var tagName=arguments[i];
                                  -var fn=new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -var fnName=tagName.toUpperCase();
                                  -FBL[fnName]=fn
                                  -}}defineTags("a","button","br","canvas","col","colgroup","div","fieldset","form","h1","h2","h3","hr","img","input","label","legend","li","ol","optgroup","option","p","pre","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","tr","tt","ul","iframe")
                                  -})();
                                  -FBL.ns(function(){with(FBL){Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=object[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=node[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")
                                  -}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"});
                                  -var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"});
                                  -var OBJECTLINK=this.OBJECTLINK=A({"class":"objectLink objectLink-$className a11yFocus",_repObject:"$object"});
                                  -this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined"
                                  -}});
                                  -this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null
                                  -}});
                                  -this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"});
                                  -this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number"
                                  -}});
                                  -this.String=domplate(Firebug.Rep,{tag:OBJECTBOX("&quot;$object&quot;"),shortTag:OBJECTBOX("&quot;$object|cropString&quot;"),className:"string",supportsObject:function(object,type){return type=="string"
                                  -}});
                                  -this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"});
                                  -this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")});
                                  -this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")});
                                  -this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/;
                                  -var fnText=safeToString(fn);
                                  -var m=fnRegex.exec(fnText);
                                  -return m?m[1]:"function()"
                                  -},copySource:function(fn){copyToClipboard(safeToString(fn))
                                  -},monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor")
                                  -}else{Firebug.Debugger.monitorScript(fn,script,"monitor")
                                  -}},className:"function",supportsObject:function(object,type){return type=="function"
                                  -},inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink)
                                  -}},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn);
                                  -if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber])
                                  -}else{if(fn.toString){return fn.toString()
                                  -}}},getTitle:function(fn,context){var name=fn.name?fn.name:"function";
                                  -return name+"()"
                                  -},getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn)
                                  -}if(!script){return
                                  -}var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=script?getFunctionName(script,context):fn.name;
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,fn)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.jsdScript=domplate(Firebug.Rep,{copySource:function(script){var fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.copySource(fn)
                                  -},monitor:function(fn,script,monitored){fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.monitor(fn,script,monitored)
                                  -},className:"jsdScript",inspectable:false,supportsObject:function(object,type){return object instanceof jsdIScript
                                  -},inspectObject:function(script,context){var sourceLink=getSourceLinkForScript(script,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}},getRealObject:function(script,context){return script
                                  -},getTooltip:function(script){return $STRF("jsdIScript",[script.tag])
                                  -},getTitle:function(script,context){var fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getTitle(fn,context)
                                  -},getContextMenuItems:function(script,target,context){var fn=script.functionObject.getWrappedValue();
                                  -var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=getFunctionName(script,context);
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,script)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.Obj=domplate(Firebug.Rep,{tag:OBJECTLINK(SPAN({"class":"objectTitle"},"$object|getTitle"),FOR("prop","$object|propIterator"," $prop.name=",SPAN({"class":"objectPropValue"},"$prop.value|cropString"))),propIterator:function(object){if(!object){return[]
                                  -}var props=[];
                                  -var len=0;
                                  -try{for(var name in object){var val;
                                  -try{val=object[name]
                                  -}catch(exc){continue
                                  -}var t=typeof(val);
                                  -if(t=="boolean"||t=="number"||(t=="string"&&val)||(t=="object"&&val&&val.toString)){var title=(t=="object")?Firebug.getRep(val).getTitle(val):val+"";
                                  -len+=name.length+title.length+1;
                                  -if(len<50){props.push({name:name,value:title})
                                  -}else{break
                                  -}}}}catch(exc){}return props
                                  -},className:"object",supportsObject:function(object,type){return true
                                  -}});
                                  -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}return items
                                  -},shortArrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length&&i<3;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""})
                                  -}return items
                                  -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0;
                                  -for(child=child.previousSibling;
                                  -child;
                                  -child=child.previousSibling){if(child.repObject){++arrayIndex
                                  -}}return arrayIndex
                                  -},className:"array",supportsObject:function(object){return this.isArray(object)
                                  -},isArray:function(obj){try{if(!obj){return false
                                  -}else{if(isIE&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true
                                  -}else{if(isFinite(obj.length)&&typeof obj.splice==="function"){return true
                                  -}else{if(isFinite(obj.length)&&typeof obj.callee==="function"){return true
                                  -}else{if(obj instanceof HTMLCollection){return true
                                  -}else{if(obj instanceof NodeList){return true
                                  -}else{return false
                                  -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc);
                                  -FBTrace.sysout("isArray Fails on obj",obj)
                                  -}}return false
                                  -},getTitle:function(object,context){return"["+object.length+"]"
                                  -}});
                                  -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property
                                  -},getRealObject:function(prop,context){return prop.object[prop.name]
                                  -},getTitle:function(prop,context){return prop.name
                                  -}});
                                  -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile
                                  -},browseObject:function(file,context){openNewTab(file.href);
                                  -return true
                                  -},getRealObject:function(file,context){return null
                                  -}});
                                  -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy
                                  -}});
                                  -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"$object.tagName|toLowerCase"),FOR("attr","$object|attrIterator","&nbsp;$attr.tagName=&quot;",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"&quot;"),"&gt;"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden"
                                  -},getSelectorTag:function(elt){return elt.tagName.toLowerCase()
                                  -},getSelectorId:function(elt){return elt.id?("#"+elt.id):""
                                  -},getSelectorClass:function(elt){return"";
                                  -return elt.getAttribute("class")?("."+elt.getAttribute("class").split(" ")[0]):""
                                  -},getValue:function(elt){return"";
                                  -var value;
                                  -if(elt instanceof HTMLImageElement){value=getFileName(elt.src)
                                  -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href)
                                  -}else{if(elt instanceof HTMLInputElement){value=elt.value
                                  -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action)
                                  -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src)
                                  -}}}}}return value?" "+cropString(value,20):""
                                  -},attrIterator:function(elt){var attrs=[];
                                  -var idAttr,classAttr;
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName&&attr.tagName.indexOf("firebug-")!=-1){continue
                                  -}else{if(attr.tagName=="id"){idAttr=attr
                                  -}else{if(attr.tagName=="class"){classAttr=attr
                                  -}else{attrs.push(attr)
                                  -}}}}}if(classAttr){attrs.splice(0,0,classAttr)
                                  -}if(idAttr){attrs.splice(0,0,idAttr)
                                  -}return attrs
                                  -},shortAttrIterator:function(elt){var attrs=[];
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName=="id"||attr.tagName=="class"){attrs.push(attr)
                                  -}}}return attrs
                                  -},getHidden:function(elt){return isVisible(elt)?"":"nodeHidden"
                                  -},getXPath:function(elt){return getElementTreeXPath(elt)
                                  -},getNodeText:function(element){var text=element.textContent;
                                  -if(Firebug.showFullTextNodes){return text
                                  -}else{return cropString(text,50)
                                  -}},copyHTML:function(elt){var html=getElementXML(elt);
                                  -copyToClipboard(html)
                                  -},copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML)
                                  -},copyXPath:function(elt){var xpath=getElementXPath(elt);
                                  -copyToClipboard(xpath)
                                  -},persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null;
                                  -return elts&&elts.length?elts[0]:null
                                  -},className:"element",supportsObject:function(object){return instanceOf(object,"Element")
                                  -},browseObject:function(elt,context){var tag=elt.tagName.toLowerCase();
                                  -if(tag=="script"){openNewTab(elt.src)
                                  -}else{if(tag=="link"){openNewTab(elt.href)
                                  -}else{if(tag=="a"){openNewTab(elt.href)
                                  -}else{if(tag=="img"){openNewTab(elt.src)
                                  -}}}}return true
                                  -},persistObject:function(elt,context){var xpath=getElementXPath(elt);
                                  -return bind(this.persistor,top,xpath)
                                  -},getTitle:function(element,context){return getElementCSSSelector(element)
                                  -},getTooltip:function(elt){return this.getXPath(elt)
                                  -},getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context);
                                  -return[{label:"CopyHTML",command:bindFixed(this.copyHTML,this,elt)},{label:"CopyInnerHTML",command:bindFixed(this.copyInnerHTML,this,elt)},{label:"CopyXPath",command:bindFixed(this.copyXPath,this,elt)},"-",{label:"ShowEventsInConsole",type:"checkbox",checked:monitored,command:bindFixed(toggleMonitorEvents,FBL,elt,null,monitored,context)},"-",{label:"ScrollIntoView",command:bindFixed(elt.scrollIntoView,elt)}]
                                  -}});
                                  -this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"TextNode"),"&nbsp;textContent=&quot;",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),"&quot;","&gt;"),className:"textNode",supportsObject:function(object){return object instanceof Text
                                  -}});
                                  -this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):""
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Document")
                                  -},browseObject:function(doc,context){openNewTab(doc.location.href);
                                  -return true
                                  -},persistObject:function(doc,context){return this.persistor
                                  -},persistor:function(context){return context.window.document
                                  -},getTitle:function(win,context){return"document"
                                  -},getTooltip:function(doc){return doc.location.href
                                  -}});
                                  -this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href)
                                  -},copyURL:function(styleSheet){copyToClipboard(styleSheet.href)
                                  -},openInTab:function(styleSheet){openNewTab(styleSheet.href)
                                  -},className:"object",supportsObject:function(object){return object instanceof CSSStyleSheet
                                  -},browseObject:function(styleSheet,context){openNewTab(styleSheet.href);
                                  -return true
                                  -},persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href)
                                  -},getTooltip:function(styleSheet){return styleSheet.href
                                  -},getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}]
                                  -},persistor:function(context,href){return getStyleSheetByHref(href,context)
                                  -}});
                                  -this.Window=domplate(Firebug.Rep,{tag:OBJECTLINK("Window ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(win){try{return(win&&win.location&&!win.closed)?getFileName(win.location.href):""
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?")
                                  -}}},className:"object",supportsObject:function(object){return instanceOf(object,"Window")
                                  -},browseObject:function(win,context){openNewTab(win.location.href);
                                  -return true
                                  -},persistObject:function(win,context){return this.persistor
                                  -},persistor:function(context){return context.window
                                  -},getTitle:function(win,context){return"window"
                                  -},getTooltip:function(win){if(win&&!win.closed){return win.location.href
                                  -}}});
                                  -this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "];
                                  -var eventFamily=getEventFamily(event.type);
                                  -if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY)
                                  -}else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode)
                                  -}}return info.join("")
                                  -},copyEvent:function(event){return new EventCopy(event)
                                  -},className:"object",supportsObject:function(object){return object instanceof Event||object instanceof EventCopy
                                  -},getTitle:function(event,context){return"Event "+event.type
                                  -}});
                                  -this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true
                                  -},getSourceLinkTitle:function(sourceLink){if(!sourceLink){return""
                                  -}try{var fileName=getFileName(sourceLink.href);
                                  -fileName=decodeURIComponent(fileName);
                                  -fileName=cropString(fileName,17)
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc)
                                  -}}return $STRF("Line",[fileName,sourceLink.line])
                                  -},copyLink:function(sourceLink){copyToClipboard(sourceLink.href)
                                  -},openInTab:function(sourceLink){openNewTab(sourceLink.href)
                                  -},className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink
                                  -},getTooltip:function(sourceLink){return decodeURI(sourceLink.href)
                                  -},inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context);
                                  -if(scriptFile){return Firebug.chrome.select(sourceLink)
                                  -}}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object);
                                  -return
                                  -}var stylesheet=getStyleSheetByHref(sourceLink.href,context);
                                  -if(stylesheet){var ownerNode=stylesheet.ownerNode;
                                  -if(ownerNode){Firebug.chrome.select(sourceLink,"html");
                                  -return
                                  -}var panel=context.getPanel("stylesheet");
                                  -if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink)
                                  -}}}}viewSource(sourceLink.href,sourceLink.line)
                                  -},browseObject:function(sourceLink,context){openNewTab(sourceLink.href);
                                  -return true
                                  -},getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}]
                                  -}});
                                  -this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context)
                                  -},className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile
                                  -},persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href)
                                  -},browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href
                                  -}});
                                  -this.StackFrame=domplate(Firebug.Rep,{tag:OBJECTBLOCK(A({"class":"objectLink focusRow a11yFocus",_repObject:"$object"},"$object|getCallName"),"(",FOR("arg","$object|argIterator",TAG("$arg.tag",{object:"$arg.value"}),SPAN({"class":"arrayComma"},"$arg.delim")),")",SPAN({"class":"objectLink-sourceLink objectLink"},"$object|getSourceLinkTitle")),getCallName:function(frame){return getFunctionName(frame.script,frame.context)
                                  -},getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),17);
                                  -return $STRF("Line",[fileName,frame.lineNo])
                                  -},argIterator:function(frame){if(!frame.args){return[]
                                  -}var items=[];
                                  -for(var i=0;
                                  -i<frame.args.length;
                                  -++i){var arg=frame.args[i];
                                  -if(!arg){break
                                  -}var rep=Firebug.getRep(arg.value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==frame.args.length-1?"":", ");
                                  -items.push({name:arg.name,value:arg.value,tag:tag,delim:delim})
                                  -}return items
                                  -},className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame
                                  -},inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js");
                                  -Firebug.chrome.select(sourceLink)
                                  -},getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo])
                                  -}});
                                  -this.StackTrace=domplate(Firebug.Rep,{tag:FOR("frame","$object.frames focusRow",TAG(this.StackFrame.tag,{object:"$frame"})),className:"stackTrace",supportsObject:function(object){return object instanceof StackTrace
                                  -}});
                                  -this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid)
                                  -},getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}return getFunctionName(frame.script,context)
                                  -},getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame);
                                  -if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo])
                                  -}else{return $STRF("Line",[frame.script.fileName,frame.line])
                                  -}},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script)
                                  -}});
                                  -this.ErrorMessage=domplate(Firebug.Rep,{tag:OBJECTBOX({$hasTwisty:"$object|hasStackTrace",$hasBreakSwitch:"$object|hasBreakSwitch",$breakForError:"$object|hasErrorBreak",_repObject:"$object",_stackTrace:"$object|getLastErrorStackTrace",onclick:"$onToggleError"},DIV({"class":"errorTitle a11yFocus",role:"checkbox","aria-checked":"false"},"$object.message|getMessage"),DIV({"class":"errorTrace"}),DIV({"class":"errorSourceBox errorSource-$object|getSourceType"},IMG({"class":"errorBreak a11yFocus",src:"blank.gif",role:"checkbox","aria-checked":"false",title:"Break on this error"}),A({"class":"errorSource a11yFocus"},"$object|getLine")),TAG(this.SourceLink.tag,{object:"$object|getSourceLink"})),getLastErrorStackTrace:function(error){return error.trace
                                  -},hasStackTrace:function(error){var url=error.href.toString();
                                  -var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1);
                                  -return !fromCommandLine&&error.trace
                                  -},hasBreakSwitch:function(error){return error.href&&error.lineNo>0
                                  -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo)
                                  -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/;
                                  -var m=re.exec(message);
                                  -return m?m[1]:message
                                  -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80)
                                  -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80)
                                  -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js";
                                  -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null
                                  -},getSourceType:function(error){if(error.source){return"syntax"
                                  -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none"
                                  -}else{if(error.category=="css"){return"none"
                                  -}else{if(!error.href||!error.lineNo){return"none"
                                  -}else{return"exec"
                                  -}}}}},onToggleError:function(event){var target=event.currentTarget;
                                  -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject)
                                  -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target);
                                  -this.inspectObject(target.repObject,panel.context)
                                  -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1];
                                  -toggleClass(target,"opened");
                                  -event.target.setAttribute("aria-checked",hasClass(target,"opened"));
                                  -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox)
                                  -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target);
                                  -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox])
                                  -}}else{clearNode(traceBox)
                                  -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo];
                                  -copyToClipboard(message.join("\n"))
                                  -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo)
                                  -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo)
                                  -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage
                                  -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -FirebugReps.SourceLink.inspectObject(sourceLink,context)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}];
                                  -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors"))
                                  -}return items
                                  -}});
                                  -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -Firebug.chrome.select(sourceLink)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}]
                                  -}});
                                  -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length;
                                  -var list=[];
                                  -for(var i=0;
                                  -i<sourceText.lines.length;
                                  -++i){var lineNo=(i+1)+"";
                                  -while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo
                                  -}list.push({lineNo:lineNo,text:sourceText.lines[i]})
                                  -}return list
                                  -},getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length)
                                  -}});
                                  -this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length;
                                  -return items+" history entries"
                                  -}catch(exc){return"object does not support history (nsIDOMHistory)"
                                  -}},showHistory:function(history){try{var items=history.length;
                                  -Firebug.chrome.select(history)
                                  -}catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory)
                                  -}});
                                  -this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache"
                                  -}catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264"
                                  -}},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264")
                                  -},className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList)
                                  -}}});
                                  -this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage"
                                  -},show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0")
                                  -},className:"Storage",supportsObject:function(object,type){return(object instanceof Storage)
                                  -}});
                                  -Firebug.registerRep(this.Undefined,this.Null,this.Number,this.String,this.Window,this.Element,this.Document,this.StyleSheet,this.Event,this.Property,this.Except,this.Arr);
                                  -Firebug.setDefaultReps(this.Func,this.Obj)
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={evaluate:function(expr,context,api,errorHandler){context=context||"window";
                                  -var cmd=api?"(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)":"(function(arguments){ return "+expr+" }).call("+context+",undefined)";
                                  -var r=this.eval(cmd);
                                  -if(r&&r[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
                                  -r=this.eval(cmd);
                                  -if(r&&r[evalError]){if(errorHandler){r=errorHandler(r.message||r)
                                  -}else{r=r.message||r
                                  -}}}return r
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}else{if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(isOpera||isSafari){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getCSS(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}}if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}}},getMeasurementBox:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getCSS:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}};
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(){var inch=this.document.createElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -this.document.body.appendChild(inch);
                                  -pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -this.document.body.removeChild(inch)
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.chromeMap={};
                                  -FBL.FirebugChrome={commandLineVisible:true,sidePanelVisible:false,sidePanelWidth:300,selectedPanel:"Console",height:250,isOpen:false,create:function(){createChrome({onLoad:onChromeLoad})
                                  -},initialize:function(){if(Application.chrome.type=="frame"){ChromeMini.create(Application.chrome)
                                  -}if(Application.browser.document.documentElement.getAttribute("debug")=="true"){Application.openAtStartup=true
                                  -}var chrome=Firebug.chrome=new Chrome(Application.chrome);
                                  -chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onPressF12);
                                  -if(Application.isPersistentMode&&chrome.type=="popup"){chrome.initialize()
                                  -}}};
                                  -var reattach=function(){FBTrace.sysout("reattach","-------------------------");
                                  -var frame=chromeMap.frame;
                                  -var popup=chromeMap.popup;
                                  -FBL.FirebugChrome.commandLineVisible=frame.commandLineVisible;
                                  -FBL.FirebugChrome.sidePanelVisible=frame.sidePanelVisible;
                                  -var framePanelMap=frame.panelMap;
                                  -var popupPanelMap=popup.panelMap;
                                  -for(var name in framePanelMap){framePanelMap[name].contentNode.innerHTML=popupPanelMap[name].contentNode.innerHTML
                                  -}Firebug.chrome=frame;
                                  -chromeMap.popup=null;
                                  -if(FirebugChrome.selectedElement){Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement)
                                  -}};
                                  -var ChromeDefaultOptions={type:"frame",id:"FirebugChrome",height:250};
                                  -var createChrome=function(options){options=options||{};
                                  -options=extend(ChromeDefaultOptions,options);
                                  -var context=options.context||Application.browser;
                                  -var onLoad=options.onLoad;
                                  -var chrome={};
                                  -chrome.type=options.type;
                                  -var isChromeFrame=chrome.type=="frame";
                                  -var isBookmarletMode=Application.isBookmarletMode;
                                  -var url=isBookmarletMode?"about:blank":Application.location.skin;
                                  -if(isChromeFrame){var node=chrome.node=context.document.createElement("iframe");
                                  -node.setAttribute("id",options.id);
                                  -node.setAttribute("frameBorder","0");
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=options.height+"px";
                                  -if(isFirefox){node.style.display="none"
                                  -}if(!isBookmarletMode){node.setAttribute("src",Application.location.skin)
                                  -}context.document.body.appendChild(node)
                                  -}else{var height=FirebugChrome.height||options.height;
                                  -var options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join("");
                                  -var node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}if(isBookmarletMode){var tpl=getChromeTemplate();
                                  -var doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win;
                                  -var waitDelay=!isBookmarletMode?isChromeFrame?200:300:100;
                                  -var waitForChrome=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -if(onLoad){onLoad(chrome)
                                  -}}else{setTimeout(waitForChrome,waitDelay)
                                  -}};
                                  -waitForChrome()
                                  -};
                                  -var onChromeLoad=function onChromeLoad(chrome){Application.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome loaded")
                                  -}if(Application.isPersistentMode){chrome.window.FirebugApplication=Application;
                                  -if(Application.isDevelopmentMode){Application.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Application.location.app;
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},100)
                                  -}else{if(chrome.type=="popup"){FBTrace.sysout("onPopupChromeLoad","-------------------------");
                                  -var frame=chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}FBL.FirebugChrome.commandLineVisible=true;
                                  -FBL.FirebugChrome.sidePanelVisible=false;
                                  -var popup=Firebug.chrome=new Chrome(chrome);
                                  -var framePanelMap=frame.panelMap;
                                  -var popupPanelMap=popup.panelMap;
                                  -for(var name in framePanelMap){popupPanelMap[name].contentNode.innerHTML=framePanelMap[name].contentNode.innerHTML
                                  -}popup.initialize();
                                  -dispatch(Firebug.modules,"initialize",[]);
                                  -if(FirebugChrome.selectedElement){Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement)
                                  -}}}}};
                                  -var getChromeTemplate=function(){var tpl=FirebugChrome.injected;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]=(isIE6&&tpl.IE6CSS)?tpl.IE6CSS:"";
                                  -r[++i]="</style>";
                                  -r[++i]="</head><body>";
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,chrome);
                                  -append(this,Base);
                                  -chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase=extend(Firebug.Controller,Firebug.PanelBar);
                                  -var ChromeBase=extend(ChromeBase,{create:function(){Firebug.PanelBar.create.apply(this);
                                  -var panelMap=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panelMap[i];
                                  -i++){if(!p.parentPanel){this.addPanel(p.prototype.name)
                                  -}}this.inspectButton=new Firebug.Button({type:"toggle",node:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -},destroy:function(){this.shutdown()
                                  -},initialize:function(){Firebug.Console.flush();
                                  -if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome")
                                  -}Firebug.Controller.initialize.apply(this);
                                  -Firebug.PanelBar.initialize.apply(this);
                                  -fbTop=$("fbTop");
                                  -fbContent=$("fbContent");
                                  -fbContentStyle=fbContent.style;
                                  -fbBottom=$("fbBottom");
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbToolbar=$("fbToolbar");
                                  -fbPanelBox1=$("fbPanelBox1");
                                  -fbPanelBox1Style=fbPanelBox1.style;
                                  -fbPanelBox2=$("fbPanelBox2");
                                  -fbPanelBox2Style=fbPanelBox2.style;
                                  -fbPanelBar2Box=$("fbPanelBar2Box");
                                  -fbPanelBar2BoxStyle=fbPanelBar2Box.style;
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbVSplitterStyle=fbVSplitter.style;
                                  -fbPanel1=$("fbPanel1");
                                  -fbPanel1Style=fbPanel1.style;
                                  -fbPanel2=$("fbPanel2");
                                  -fbConsole=$("fbConsole");
                                  -fbConsoleStyle=fbConsole.style;
                                  -fbHTML=$("fbHTML");
                                  -fbCommandLine=$("fbCommandLine");
                                  -topHeight=fbTop.offsetHeight;
                                  -topPartialHeight=fbToolbar.offsetHeight;
                                  -disableTextSelection($("fbToolbar"));
                                  -disableTextSelection($("fbPanelBarBox"));
                                  -commandLine=new Firebug.CommandLine(fbCommandLine);
                                  -if(isIE){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}this.selectPanel(FirebugChrome.selectedPanel);
                                  -Firebug.Inspector.initialize();
                                  -this.inspectButton.initialize();
                                  -addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -},shutdown:function(){this.inspectButton.shutdown();
                                  -removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -fbTop=null;
                                  -fbContent=null;
                                  -fbContentStyle=null;
                                  -fbBottom=null;
                                  -fbBtnInspect=null;
                                  -fbToolbar=null;
                                  -fbPanelBox1=null;
                                  -fbPanelBox1Style=null;
                                  -fbPanelBox2=null;
                                  -fbPanelBox2Style=null;
                                  -fbPanelBar2Box=null;
                                  -fbPanelBar2BoxStyle=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbVSplitterStyle=null;
                                  -fbPanel1=null;
                                  -fbPanel1Style=null;
                                  -fbPanel2=null;
                                  -fbConsole=null;
                                  -fbConsoleStyle=null;
                                  -fbHTML=null;
                                  -fbCommandLine=null;
                                  -topHeight=null;
                                  -topPartialHeight=null;
                                  -Firebug.Controller.shutdown.apply(this);
                                  -Firebug.PanelBar.shutdown.apply(this);
                                  -commandLine.destroy()
                                  -},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!FirebugChrome.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!chromeMap.popup){createChrome({type:"popup",onLoad:onChromeLoad})
                                  -}},reattach:function(){},draw:function(){var size=Firebug.chrome.getWindowSize();
                                  -var chromeHeight=size.height;
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var y=Math.max(chromeHeight,topHeight);
                                  -fbPanel1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -fbPanelBox1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
                                  -}else{if(isFirefox){fbContentStyle.maxHeight=Math.max(y-fixedHeight,0)+"px"
                                  -}}var chromeWidth=size.width;
                                  -var sideWidth=FirebugChrome.sidePanelVisible?FirebugChrome.sidePanelWidth:0;
                                  -fbPanelBox1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -fbPanel1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -if(FirebugChrome.sidePanelVisible){fbPanelBox2Style.width=sideWidth+"px";
                                  -fbPanelBar2BoxStyle.width=Math.max(sideWidth,0)+"px";
                                  -fbVSplitterStyle.right=Math.max(sideWidth-6,0)+"px"
                                  -}},resize:function(){var self=this;
                                  -setTimeout(function(){self.draw();
                                  -if(noFixedPosition&&self.type=="frame"){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(options.hasSidePanel);
                                  -Firebug.chrome.draw()
                                  -}});
                                  -var ChromeContext=extend(ChromeBase,Context.prototype);
                                  -var ChromeFrameBase=extend(ChromeContext,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Application.openAtStartup){this.open()
                                  -}else{FirebugChrome.isOpen=true;
                                  -this.close()
                                  -}},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[Firebug.browser.window,"unload",this.destroy],[$("fbChrome_btClose"),"click",this.close],[$("fbChrome_btDetach"),"click",this.detach]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown;
                                  -fbHSplitter.onmousedown=onHSplitterMouseDown;
                                  -this.isInitialized=true
                                  -},shutdown:function(){fbVSplitter.onmousedown=null;
                                  -fbHSplitter.onmousedown=null;
                                  -ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},open:function(){if(!FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="block";
                                  -FirebugChrome.isOpen=true;
                                  -var self=this;
                                  -setTimeout(function(){dispatch(Firebug.modules,"initialize",[]);
                                  -self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}self.draw();
                                  -node.style.visibility="visible"
                                  -},10)
                                  -}},close:function(){if(FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(this.isInitialized){dispatch(Firebug.modules,"shutdown",[]);
                                  -this.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="none";
                                  -FirebugChrome.isOpen=false;
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if(this.type=="frame"&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}}});
                                  -var ChromeMini=extend(Firebug.Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon");
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors");
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -node.setAttribute("allowTransparency","true");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="transparent";
                                  -this.addController([$("fbMiniIcon"),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=FirebugChrome.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -node.setAttribute("allowTransparency","false");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="#fff";
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="none";
                                  -Firebug.Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeContext,{initialize:function(){this.document.body.className="FirebugPopup";
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy],[Firebug.browser.window,"unload",this.close]);
                                  -fbVSplitter.onmousedown=onVSplitterMouseDown
                                  -},destroy:function(){reattach();
                                  -ChromeBase.destroy.apply(this)
                                  -},close:function(){this.shutdown();
                                  -this.node.close()
                                  -}});
                                  -var commandLine=null;
                                  -var fbTop=null;
                                  -var fbContent=null;
                                  -var fbContentStyle=null;
                                  -var fbBottom=null;
                                  -var fbBtnInspect=null;
                                  -var fbToolbar=null;
                                  -var fbPanelBox1=null;
                                  -var fbPanelBox1Style=null;
                                  -var fbPanelBox2=null;
                                  -var fbPanelBox2Style=null;
                                  -var fbPanelBar2Box=null;
                                  -var fbPanelBar2BoxStyle=null;
                                  -var fbHSplitter=null;
                                  -var fbVSplitter=null;
                                  -var fbVSplitterStyle=null;
                                  -var fbPanel1=null;
                                  -var fbPanel1Style=null;
                                  -var fbPanel2=null;
                                  -var fbConsole=null;
                                  -var fbConsoleStyle=null;
                                  -var fbHTML=null;
                                  -var fbCommandLine=null;
                                  -var topHeight=null;
                                  -var topPartialHeight=null;
                                  -var chromeRedrawSkipRate=isIE?30:isOpera?80:75;
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=FirebugChrome.commandLineVisible;
                                  -Firebug.chrome.commandLineVisible=FirebugChrome.commandLineVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.commandLineVisible;
                                  -if(FirebugChrome.commandLineVisible!=last){fbBottom.className=FirebugChrome.commandLineVisible?"":"hide"
                                  -}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=FirebugChrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=FirebugChrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.sidePanelVisible;
                                  -if(FirebugChrome.sidePanelVisible!=last){fbPanelBox2.className=FirebugChrome.sidePanelVisible?"":"hide";
                                  -fbPanelBar2Box.className=FirebugChrome.sidePanelVisible?"":"hide"
                                  -}};
                                  -var onPressF12=function onPressF12(event){if(event.keyCode==123&&(!isFirefox&&!event.shiftKey||event.shiftKey&&isFirefox)){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var lastHSplitterMouseMove=0;
                                  -var onHSplitterMouseMoveBuffer=null;
                                  -var onHSplitterMouseMoveTimer=null;
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugChrome"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -FirebugChrome.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="";
                                  -Firebug.chrome.draw()
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var lastVSplitterMouseMove=0;
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getWindowSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -FirebugChrome.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.injected={CSS:'.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ConsoleAPI={firebuglite:Firebug.version,log:function(){return Firebug.Console.logFormatted(arguments,"")
                                  -},debug:function(){return Firebug.Console.logFormatted(arguments,"debug")
                                  -},info:function(){return Firebug.Console.logFormatted(arguments,"info")
                                  -},warn:function(){return Firebug.Console.logFormatted(arguments,"warning")
                                  -},error:function(){return Firebug.Console.logFormatted(arguments,"error")
                                  -},assert:function(truth,message){if(!truth){var args=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -++i){args.push(arguments[i])
                                  -}Firebug.Console.logFormatted(args.length?args:["Assertion Failure"],"error");
                                  -throw message?message:"Assertion Failure"
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},dir:function(object){var html=[];
                                  -var pairs=[];
                                  -for(var name in object){try{pairs.push([name,object[name]])
                                  -}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1
                                  -});
                                  -html.push('<div class="log-object">');
                                  -for(var i=0;
                                  -i<pairs.length;
                                  -++i){var name=pairs[i][0],value=pairs[i][1];
                                  -html.push('<div class="property">','<div class="propertyValueCell"><span class="propertyValue">');
                                  -Firebug.Reps.appendObject(value,html);
                                  -html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></div>");
                                  -html.push("</div>")
                                  -}html.push("</div>");
                                  -return Firebug.Console.logRow(html,"dir")
                                  -},dirxml:function(node){var html=[];
                                  -Firebug.Reps.appendNode(node,html);
                                  -return Firebug.Console.logRow(html,"dirxml")
                                  -},group:function(){return Firebug.Console.logRow(arguments,"group",Firebug.Console.pushGroup)
                                  -},groupEnd:function(){return Firebug.Console.logRow(arguments,"",Firebug.Console.popGroup)
                                  -},time:function(name){this.timeMap[name]=(new Date()).getTime();
                                  -return Firebug.Console.LOG_COMMAND
                                  -},timeEnd:function(name){if(name in this.timeMap){var delta=(new Date()).getTime()-this.timeMap[name];
                                  -Firebug.Console.logFormatted([name+":",delta+"ms"]);
                                  -delete this.timeMap[name]
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},count:function(){return this.warn(["count() not supported."])
                                  -},trace:function(){return this.warn(["trace() not supported."])
                                  -},profile:function(){return this.warn(["profile() not supported."])
                                  -},profileEnd:function(){return Firebug.Console.LOG_COMMAND
                                  -},clear:function(){Firebug.Console.getPanel().contentNode.innerHTML="";
                                  -return Firebug.Console.LOG_COMMAND
                                  -},open:function(){toggleConsole(true);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},close:function(){if(frameVisible){toggleConsole()
                                  -}return Firebug.Console.LOG_COMMAND
                                  -}};
                                  -var ConsoleModule=extend(Firebug.Module,ConsoleAPI);
                                  -Firebug.Console=extend(ConsoleModule,{LOG_COMMAND:{},messageQueue:[],groupStack:[],timeMap:{},getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -},flush:function(){var queue=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}},logFormatted:function(objects,className){var html=[];
                                  -var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}var parts=this.parseFormat(format);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -part.appender(object,html)
                                  -}else{Firebug.Reps.appendText(part,html)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){Firebug.Reps.appendText(" ",html);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){Firebug.Reps.appendText(object,html)
                                  -}else{Firebug.Reps.appendObject(object,html)
                                  -}}return this.logRow(html,className)
                                  -},parseFormat:function(format){var parts=[];
                                  -var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -var Reps=Firebug.Reps;
                                  -var appenderMap={s:Reps.appendText,d:Reps.appendInteger,i:Reps.appendInteger,f:Reps.appendFloat};
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){var type=m[8]?m[8]:m[5];
                                  -var appender=type in appenderMap?appenderMap[type]:Reps.appendObject;
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({appender:appender,precision:precision});
                                  -format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -},logRow:function(message,className,handler){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className,handler)
                                  -}else{this.messageQueue.push([message,className,handler])
                                  -}return this.LOG_COMMAND
                                  -},writeMessage:function(message,className,handler){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -if(!handler){handler=this.writeRow
                                  -}handler.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}},appendRow:function(row){if(this.groupStack.length>0){var container=this.groupStack[this.groupStack.length-1]
                                  -}else{var container=this.getPanel().contentNode
                                  -}container.appendChild(row)
                                  -},writeRow:function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -},pushGroup:function(message,className){this.logFormatted(message,className);
                                  -var groupRow=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRow.className="logGroup";
                                  -var groupRowBox=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRowBox.className="logGroupBox";
                                  -groupRow.appendChild(groupRowBox);
                                  -this.appendRow(groupRowBox);
                                  -this.groupStack.push(groupRowBox)
                                  -},popGroup:function(){this.groupStack.pop()
                                  -}});
                                  -Firebug.registerModule(Firebug.Console);
                                  -function ConsolePanel(){}ConsolePanel.prototype=extend(Firebug.Panel,{name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({node:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(ConsolePanel);
                                  -FBL.onError=function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.logRow(html,"error")
                                  -};
                                  -if(!isFirefox){Application.browser.window.console=ConsoleAPI
                                  -}}});
                                  -FBL.ns(function(){with(FBL){
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,done=0,toString=Object.prototype.toString,hasDuplicate=false;
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context);
                                  -chunker.lastIndex=0;
                                  -while((m=chunker.exec(selector))!==null){parts.push(m[1]);
                                  -if(m[2]){extra=RegExp.rightContext;
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=false;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.match[type].exec(expr))){var left=RegExp.leftContext;
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if(match[3].match(chunker).length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.selectNode(a);
                                  -aRange.collapse(true);
                                  -bRange.selectNode(b);
                                  -bRange.collapse(true);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Inspector={initialize:function(){offlineFragment=Firebug.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},onChromeReady:function(){},startInspecting:function(){Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){if(!outlineVisible){this.showOutline()
                                  -}var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var border=2;
                                  -var o=outlineElements;
                                  -o.fbOutlineT.style.top=top-border+"px";
                                  -o.fbOutlineT.style.left=left+"px";
                                  -o.fbOutlineT.style.width=width+"px";
                                  -o.fbOutlineB.style.top=top+height+"px";
                                  -o.fbOutlineB.style.left=left+"px";
                                  -o.fbOutlineB.style.width=width+"px";
                                  -o.fbOutlineL.style.top=top-border+"px";
                                  -o.fbOutlineL.style.left=left-border+"px";
                                  -o.fbOutlineL.style.height=height+2*border+"px";
                                  -o.fbOutlineR.style.top=top-border+"px";
                                  -o.fbOutlineR.style.left=left+width+"px";
                                  -o.fbOutlineR.style.height=height+2*border+"px"
                                  -},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}for(var name in outline){Firebug.browser.document.body.appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){if(!boxModelVisible){this.showBoxModel()
                                  -}var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxPaddingStyle.top=margin.top+"px";
                                  -boxPaddingStyle.left=margin.left+"px";
                                  -boxPaddingStyle.height=height+"px";
                                  -boxPaddingStyle.width=width+"px";
                                  -boxContentStyle.top=margin.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+padding.left+"px";
                                  -boxContentStyle.height=height-padding.top-padding.bottom+"px";
                                  -boxContentStyle.width=width-padding.left-padding.right+"px"
                                  -},hideBoxModel:function(){if(boxModelVisible){offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -}},showBoxModel:function(){if(!boxModelVisible){Firebug.browser.document.body.appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var pixelsPerInch,boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Application.location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelStyle=inspectStyle+"opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7; height: 2px;",fbVerticalLine:"background: #3875D7; width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=Firebug.browser.document.createElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.body.appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function createInspectorFrame(){Firebug.browser.document.body.removeChild(fbInspectFrame)
                                  -};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=Firebug.browser.document.createElement("div");
                                  -el.id=name;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=Firebug.browser.document.createElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=Firebug.browser.document.createElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxPadding=Firebug.browser.document.createElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=Firebug.browser.document.createElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var Console=Firebug.Console;
                                  -Firebug.CommandLine=function(element){this.element=element;
                                  -if(isOpera){fixOperaTabKey(this.element)
                                  -}this.onKeyDown=bind(this.onKeyDown,this);
                                  -addEvent(this.element,"keydown",this.onKeyDown);
                                  -var self=this;
                                  -Application.browser.onerror=function(){self.onError.apply(self,arguments)
                                  -};
                                  -window.onerror=this.onError;
                                  -initializeCommandLineAPI()
                                  -};
                                  -Firebug.CommandLine.prototype={element:null,_buffer:[],_bi:-1,_completing:null,_completePrefix:null,_completeExpr:null,_completeBuffer:null,_ci:null,_completion:{window:["console"],document:["getElementById","getElementsByTagName"]},_stack:function(command){this._buffer.push(command);
                                  -this._bi=this._buffer.length
                                  -},initialize:function(doc){},destroy:function(){removeEvent(this.element,"keydown",this.onKeyDown);
                                  -window.onerror=null;
                                  -this.element=null
                                  -},execute:function(){var cmd=this.element;
                                  -var command=cmd.value;
                                  -this._stack(command);
                                  -Firebug.Console.writeMessage(["<span>&gt;&gt;&gt;</span> ",escapeHTML(command)],"command");
                                  -try{var result=this.evaluate(command);
                                  -if(result!=Console.LOG_COMMAND){var html=[];
                                  -Firebug.Reps.appendObject(result,html);
                                  -Firebug.Console.writeMessage(html,"command")
                                  -}}catch(e){Firebug.Console.writeMessage([e.message||e],"error")
                                  -}cmd.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -return Firebug.context.evaluate(expr,"window",api,Console.error)
                                  -},prevCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -if(this._bi>0&&buffer.length>0){cmd.value=buffer[--this._bi]
                                  -}},nextCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -var limit=buffer.length-1;
                                  -var i=this._bi;
                                  -if(i<limit){cmd.value=buffer[++this._bi]
                                  -}else{if(i==limit){++this._bi;
                                  -cmd.value=""
                                  -}}},autocomplete:function(reverse){var cmd=this.element;
                                  -var command=cmd.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!this._completing){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}this._completing=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){this._completePrefix=prefix;
                                  -this._completeExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -this._ci=-1;
                                  -buffer=this._completeBuffer=isIE?this._completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=this._completeBuffer
                                  -}if(buffer){prefix=this._completePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=this._ci+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){this._ci=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){cmd.value=this._completeExpr+result
                                  -}},onError:function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.writeRow(html,"error")
                                  -},clear:function(){this.element.value=""
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){this._completing=false
                                  -}if(code==13){this.execute()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -}};
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector(selector,context)
                                  -},dir:Firebug.Console.dir,dirxml:Firebug.Console.dirxml};
                                  -Firebug.CommandLine.API={};
                                  -var initializeCommandLineAPI=function initializeCommandLineAPI(){for(var m in CommandLineAPI){if(!Firebug.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){var uid=node[cacheID];
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=node.style.visibility!="hidden"&&node.style.display!="none";
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -var isIE=false;
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(document.all){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',s.join(""),'</div><pre class="nodeCode">',escapeHTML(src),"</pre>","</div></div>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
                                  -var uid=treeNode.id;
                                  -var parentNode=documentCache[uid];
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id)
                                  -},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=documentCache[id].parentNode;
                                  -if(node&&typeof node[cacheID]!="undefined"){id=""+node[cacheID]
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id);
                                  -if(stack.length>0&&documentCache[id].childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -if(Application.isPersistentMode||Firebug.chrome.type!="popup"){this.createUI()
                                  -}},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -var d=this.contentNode;
                                  -d.innerHTML=html.join("");
                                  -this.panelNode.appendChild(d)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=$("fbPanel1")
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -FirebugChrome.selectedElement=e.id
                                  -}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
                                  -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){var input=FBL.Firebug.chrome.document.getElementById("treeInput");
                                  -input.style.display="block";
                                  -input.style.left=targ.offsetLeft+"px";
                                  -input.style.top=FBL.topHeight+targ.offsetTop-FBL.fbPanel1.scrollTop+"px";
                                  -input.style.width=targ.offsetWidth+6+"px";
                                  -input.value=targ.textContent||targ.innerText;
                                  -input.focus()
                                  -}}};
                                  -var OLD_chromeLoad=function OLD_chromeLoad(doc){Firebug.Inspector.onChromeReady();
                                  -var rootNode=document.documentElement;
                                  -addEvent(fbConsole,"mousemove",onListMouseMove);
                                  -addEvent(fbConsole,"mouseout",onListMouseOut);
                                  -addEvent(fbHTML,"click",Firebug.HTML.onTreeClick);
                                  -addEvent(fbHTML,"mousemove",onListMouseMove);
                                  -addEvent(fbHTML,"mouseout",onListMouseOut)
                                  -};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[FBL.cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[FBL.cacheID];
                                  -if(!uid){return
                                  -}var el=FBL.documentCache[uid.value];
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugChrome"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var insertSliceSize=18;
                                  -var insertInterval=40;
                                  -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1};
                                  -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},DIV({"class":"memberLabel $member.type\\Label"},SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"})));
                                  -var $STR=function(){};
                                  -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch"))));
                                  -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"}));
                                  -Firebug.Rep={};
                                  -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":"domTable",cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":"domTable",cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":"domTable",cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level)
                                  -},onClick:function(event){if(!isLeftClick(event)){return
                                  -}var target=event.target||event.srcElement;
                                  -var row=getAncestorByClass(target,"memberRow");
                                  -var label=getAncestorByClass(target,"memberLabel");
                                  -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode;
                                  -this.toggleRow(row)
                                  -}else{var object=Firebug.getRepObject(target);
                                  -if(typeof(object)=="function"){Firebug.chrome.select(object,"script");
                                  -cancelEvent(event)
                                  -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel;
                                  -if(panel){var rowValue=panel.getRowPropertyValue(row);
                                  -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue)
                                  -}else{panel.editProperty(row)
                                  -}cancelEvent(event)
                                  -}}}}},toggleRow:function(row){var level=parseInt(row.getAttribute("level"));
                                  -var toggles=row.parentNode.parentNode.toggles;
                                  -if(hasClass(row,"opened")){removeClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){if(i==path.length-1){delete toggles[path[i]]
                                  -}else{toggles=toggles[path[i]]
                                  -}}}var rowTag=this.rowTag;
                                  -var tbody=row.parentNode;
                                  -setTimeout(function(){for(var firstRow=row.nextSibling;
                                  -firstRow;
                                  -firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break
                                  -}tbody.removeChild(firstRow)
                                  -}},row.insertTimeout?row.insertTimeout:0)
                                  -}else{setClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){var name=path[i];
                                  -if(toggles.hasOwnProperty(name)){toggles=toggles[name]
                                  -}else{toggles=toggles[name]={}
                                  -}}}var value=row.lastChild.firstChild.repObject;
                                  -var members=getMembers(value,level+1);
                                  -var rowTag=this.rowTag;
                                  -var lastRow=row;
                                  -var delay=0;
                                  -var setSize=members.length;
                                  -var rowCount=1;
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow);
                                  -lastRow=result[1];
                                  -rowCount+=insertSliceSize
                                  -}if(isLast){delete row.insertTimeout
                                  -}},delay)
                                  -}delay+=insertInterval
                                  -}row.insertTimeout=delay
                                  -}}});
                                  -var getMembers=function getMembers(object,level){if(!level){level=0
                                  -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[];
                                  -try{var domMembers=getDOMMembers(object);
                                  -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject
                                  -}else{var insecureObject=object
                                  -}if(isIE&&typeof object=="function"){addMember("user",userProps,"prototype",object.prototype,level)
                                  -}for(var name in insecureObject){if(ignoreVars[name]==1){continue
                                  -}var val;
                                  -try{val=insecureObject[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc)
                                  -}}var ordinal=parseInt(name);
                                  -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level)
                                  -}else{if(typeof(val)=="function"){if(isClassFunction(val)){addMember("userClass",userClasses,name,val,level)
                                  -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name])
                                  -}else{addMember("userFunction",userFuncs,name,val,level)
                                  -}}}else{var prefix="";
                                  -if(name in domMembers){addMember("dom",domProps,(prefix+name),val,level,domMembers[name])
                                  -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level)
                                  -}else{addMember("user",userProps,(prefix+name),val,level)
                                  -}}}}}}catch(exc){throw exc
                                  -}function sortName(a,b){return a.name>b.name?1:-1
                                  -}function sortOrder(a,b){return a.order>b.order?1:-1
                                  -}var members=[];
                                  -members.push.apply(members,ordinals);
                                  -Firebug.showUserProps=true;
                                  -Firebug.showUserFuncs=true;
                                  -Firebug.showDOMProps=true;
                                  -Firebug.showDOMFuncs=true;
                                  -Firebug.showDOMConstants=true;
                                  -if(Firebug.showUserProps){userProps.sort(sortName);
                                  -members.push.apply(members,userProps)
                                  -}if(Firebug.showUserFuncs){userClasses.sort(sortName);
                                  -members.push.apply(members,userClasses);
                                  -userFuncs.sort(sortName);
                                  -members.push.apply(members,userFuncs)
                                  -}if(Firebug.showDOMProps){domProps.sort(sortName);
                                  -members.push.apply(members,domProps)
                                  -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName);
                                  -members.push.apply(members,domFuncs)
                                  -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants)
                                  -}return members
                                  -};
                                  -function expandMembers(members,toggles,offset,level){var expanded=0;
                                  -for(var i=offset;
                                  -i<members.length;
                                  -++i){var member=members[i];
                                  -if(member.level>level){break
                                  -}if(toggles.hasOwnProperty(member.name)){member.open="opened";
                                  -var newMembers=getMembers(member.value,level+1);
                                  -var args=[i+1,0];
                                  -args.push.apply(args,newMembers);
                                  -members.splice.apply(members,args);
                                  -if(FBTrace.DBG_DOM){FBTrace.sysout("expandMembers member.name",member.name);
                                  -FBTrace.sysout("expandMembers toggles",toggles);
                                  -FBTrace.sysout("expandMembers toggles[member.name]",toggles[member.name]);
                                  -FBTrace.sysout("dom.expandedMembers level: "+level+" member",member)
                                  -}expanded+=newMembers.length;
                                  -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1)
                                  -}}return expanded
                                  -}function isClassFunction(fn){try{for(var name in fn.prototype){return true
                                  -}}catch(exc){}return false
                                  -}function hasProperties(ob){try{for(var name in ob){return true
                                  -}}catch(exc){}if(typeof ob=="function"){return true
                                  -}return false
                                  -}FBL.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var ErrorCopy=function(){};
                                  -var valueType=typeof(value);
                                  -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(valueType=="function"||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength));
                                  -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag})
                                  -}function getWatchRowIndex(row){var index=-1;
                                  -for(;
                                  -row&&hasClass(row,"watchRow");
                                  -row=row.previousSibling){++index
                                  -}return index
                                  -}function getRowName(row){return row.firstChild.textContent
                                  -}function getRowValue(row){return row.lastChild.firstChild.repObject
                                  -}function getRowOwnerObject(row){var parentRow=getParentRow(row);
                                  -if(parentRow){return getRowValue(parentRow)
                                  -}}function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row
                                  -}}}function getPath(row){var name=getRowName(row);
                                  -var path=[name];
                                  -var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row);
                                  -path.splice(0,0,name);
                                  ---level
                                  -}}return path
                                  -}Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null
                                  -}});
                                  -Firebug.registerModule(Firebug.DOM);
                                  -function DOMPanel(){}DOMPanel.prototype=extend(Firebug.Panel,{name:"DOM",title:"DOM",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="0 1px";
                                  -var target=this.contentNode;
                                  -var template=DirTablePlate;
                                  -var panel={};
                                  -var toggles={};
                                  -template.tag.replace({domPanel:panel,toggles:toggles,object:window},target)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(DOMPanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){if(!Application.isTraceMode){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().contentNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({caption:"Clear",title:"Clear FBTrace logs",module:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.initialize();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/firebug.domplatemin.js.gz b/tags/firebug1.3a3/build/firebug.domplatemin.js.gz
                                  deleted file mode 100644
                                  index 130e8a6a..00000000
                                  Binary files a/tags/firebug1.3a3/build/firebug.domplatemin.js.gz and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/build/firebug.full.js b/tags/firebug1.3a3/build/firebug.full.js
                                  deleted file mode 100644
                                  index 84a763bf..00000000
                                  --- a/tags/firebug1.3a3/build/firebug.full.js
                                  +++ /dev/null
                                  @@ -1,9670 +0,0 @@
                                  -/*!
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent;
                                  -this.isFirefox = userAgent.indexOf("Firefox") != -1;
                                  -this.isOpera   = userAgent.indexOf("Opera") != -1;
                                  -this.isSafari  = userAgent.indexOf("AppleWebKit") != -1;
                                  -this.isIE      = userAgent.indexOf("MSIE") != -1;
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -
                                  -/*
                                  -this.isQuiksMode = document.compatMode == "BackCompat"; // problem with IE in persistent mode
                                  -this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -
                                  -this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -/**/
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize application
                                  -    var isChromeContext = typeof window.FirebugApplication == "object";
                                  -    
                                  -    if (!isChromeContext)
                                  -    {
                                  -        findLocation();
                                  -    }
                                  -    
                                  -    FBTrace = FBL.FBTrace;
                                  -    
                                  -    if (isChromeContext) // persistent application
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        FBL.Application = window.FirebugApplication;
                                  -        FBL.Application.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Application.traceMessageQueue;
                                  -    }
                                  -    else // non-persistent application
                                  -    {
                                  -        // TODO: get preferences here...
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Application.browser = window;
                                  -        FBL.Application.destroy = destroyApplication;
                                  -    }
                                  -    
                                  -    this.isQuiksMode = FBL.Application.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    
                                  -    if (FBL.Application.isTraceMode) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    
                                  -    if (FBL.Application.isPersistentMode)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Application.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Application.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Application.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Application.browser.document;
                                  -    var body = null;
                                  -    if (body = doc.getElementsByTagName("body")[0])
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // persistent application - chrome document loaded
                                  -    if (FBL.Application.isPersistentMode && FBL.Application.isChromeContext)
                                  -    {
                                  -        //FBL.Firebug.Inspector.create();
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        if (!FBL.Application.isDevelopmentMode)
                                  -        {
                                  -            window.FirebugApplication.destroy();
                                  -        
                                  -            if (FBL.isIE)
                                  -                window.FirebugApplication = null;
                                  -            else
                                  -                delete window.FirebugApplication;
                                  -        }
                                  -    }
                                  -    // main document loaded
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Application
                                  -
                                  -this.Application = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application preferences
                                  -    openAtStartup: false,
                                  -    
                                  -    isBookmarletMode: false,
                                  -    isPersistentMode: false,
                                  -    isTraceMode: false,
                                  -    skin: "xp",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -this.Application.location =
                                  -{
                                  -    sourceDir: null,
                                  -    baseDir: null,
                                  -    skinDir: null,
                                  -    skin: null,
                                  -    app: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        
                                  -        if (reProtocol.test(script.src)) {
                                  -            // absolute path
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        else
                                  -        {
                                  -            // relative path
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var rel = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var lastFolder = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            if (rel)
                                  -            {
                                  -                var j = rel[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = lastFolder.exec(path)[1];
                                  -
                                  -                path += rel[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var App = FBL.Application;
                                  -        var loc = App.location; 
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = loc.baseDir + "skin/" + App.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -            App.isDevelopmentMode = true;
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            if (fileOptions.indexOf("open") != -1)
                                  -                App.openAtStartup = true;
                                  -            
                                  -            if (fileOptions.indexOf("remote") != -1)
                                  -            {
                                  -                App.isBookmarletMode = true;
                                  -                App.openAtStartup = true;
                                  -            }
                                  -            
                                  -            if (fileOptions.indexOf("trace") != -1)
                                  -                App.isTraceMode = true;
                                  -            
                                  -            if (fileOptions.indexOf("persist") != -1)
                                  -                App.isPersistentMode = true;
                                  -        }
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if(innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval(innerOptions);
                                  -            // TODO:
                                  -        }
                                  -                
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    return elt.offsetWidth > 0 || elt.offsetHeight > 0 || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML";
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Application.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return event.button == 1 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return event.button == 2 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.detachEvent("on"+name, handler);
                                  -    else
                                  -        object.removeEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (document.all)
                                  -        e.cancelBubble = true;
                                  -    else
                                  -        e.stopPropagation();
                                  -                
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.addEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.addEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.removeEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.removeEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        /*
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.dumpProperties(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        e.onselectstart = function(){ return false };
                                  -        
                                  -    else // others
                                  -        e.onmousedown = function(){ return false };
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isArrayLike = function(object) {
                                  -    // TODO:
                                  -    //return instanceOf(object, "Array");
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != ""+value )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onError       Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -this.Ajax.initialize();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days) {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else var expires = "";
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    for(var i=0;i < ca.length;i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -this.eraseCookie = function(name)
                                  -{
                                  -    createCookie(name,"",-1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "___FBL_";
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -
                                  -var panelTypeMap = {};
                                  -
                                  -var reps = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version: "Firebug Lite 1.3.0a2",
                                  -    revision: "$Revision: 4241 $",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Application.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        documentCache = {};
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            panelTypeMap[arguments[i].prototype.name] = arguments[i];
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -        defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    }
                                  -
                                  -};
                                  -
                                  -if (!Application.isPersistentMode || 
                                  -     Application.isPersistentMode && Application.isChromeContext || 
                                  -     Application.isDevelopmentMode )
                                  -        Application.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -var cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -Firebug.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasSidePanel: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelBar: null,
                                  -    
                                  -    commandLine: null,
                                  -    
                                  -    toolButtons: null,
                                  -    statusBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -            
                                  -            if (options.hasSidePanel)
                                  -            {
                                  -                //this.sidePanelNode = $(panelId + "StatusBar");
                                  -            }        
                                  -        }
                                  -        else
                                  -        {
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel1").appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            $("fbPanelBar1").appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -
                                  -        if (this.panelNode)
                                  -            delete this.panelNode.ownerPanel;
                                  -
                                  -        this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        //this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        /*
                                  -        this.document = doc;
                                  -
                                  -        if (this.panelNode)
                                  -        {
                                  -            this.panelNode = doc.adoptNode(this.panelNode, true);
                                  -            this.panelNode.ownerPanel = this;
                                  -            doc.body.appendChild(this.panelNode);
                                  -            this.panelNode.scrollTop = this.lastScrollTop;
                                  -            delete this.lastScrollTop;
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -Firebug.PanelBar = 
                                  -{
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    selectedPanel: null,
                                  -    
                                  -    //panelBarNode: null,
                                  -    //context: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        this.panelMap = {};
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();        
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanel = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    },
                                  -    
                                  -    getSelectedPanel: function()
                                  -    {
                                  -        return this.selectedPanel;
                                  -    }    
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -Firebug.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    this.type = options.type || "normal";
                                  -    
                                  -    this.onClick = options.onClick;
                                  -    this.onPress = options.onPress;
                                  -    this.onUnpress = options.onUnpress;
                                  -    
                                  -    if (options.node)
                                  -    {
                                  -        this.node = options.node
                                  -        this.owner = options.owner;
                                  -        this.container = this.node.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        var caption = options.caption || "caption";
                                  -        var title = options.title || "title";
                                  -        
                                  -        this.owner = this.module = options.module;
                                  -        this.panel = options.panel || this.module.getPanel();
                                  -        this.container = this.panel.toolButtonsNode;
                                  -    
                                  -        this.node = createElement("a", {
                                  -            className: "fbHover",
                                  -            title: title,
                                  -            innerHTML: caption
                                  -        });
                                  -        
                                  -        this.container.appendChild(this.node);
                                  -    }
                                  -};
                                  -
                                  -Firebug.Button.prototype = extend(Firebug.Controller,
                                  -{
                                  -    type: null,
                                  -    
                                  -    node: null,
                                  -    owner: null,
                                  -    
                                  -    module: null,
                                  -    
                                  -    panel: null,
                                  -    container: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        this.container.removeChild(this.node);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        var node = this.node;
                                  -        
                                  -        this.addController([node, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [node, "mouseup", this.handleUnpress],
                                  -                [node, "mouseout", this.handleUnpress],
                                  -                [node, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");        
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner);
                                  -                
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    // should be place inside module
                                  -    addButton: function(caption, title, handler)
                                  -    {
                                  -    },
                                  -    
                                  -    removeAllButtons: function()
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -});
                                  -
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -function PanelOptions(){};
                                  -
                                  -PanelOptions.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -/*
                                  -
                                  -From Honza Tutorial
                                  -----------------------------------------------------
                                  -FBL.ns(function() { with (FBL) {
                                  -var panelName = "HelloWorld";
                                  -Firebug.HelloWorldModel = extend(Firebug.Module,
                                  -{
                                  -    showPanel: function(browser, panel) {
                                  -        var isHwPanel = panel && panel.name == panelName;
                                  -        var hwButtons = browser.chrome.$("fbHelloWorldButtons");
                                  -        collapse(hwButtons, !isHwPanel);
                                  -    },
                                  -    onMyButton: function(context) {
                                  -        alert("Hello World!");
                                  -    }
                                  -});
                                  -
                                  -function HelloWorldPanel() {}
                                  -HelloWorldPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: panelName,
                                  -    title: "Hello World!",
                                  -
                                  -    initialize: function() {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HelloWorldModel);
                                  -Firebug.registerPanel(HelloWorldPanel);
                                  -
                                  -}});
                                  -----------------------------------------------------
                                  -
                                  -/**/  
                                  -  
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";
                                  -                        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win){
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        context = context || "window";
                                  -
                                  -        var cmd = api ?
                                  -            "(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)" :
                                  -            "(function(arguments){ return "+expr+" }).call("+context+",undefined)" ;
                                  -        
                                  -        var r = this.eval(cmd);
                                  -        if (r && r[evalError])
                                  -        {
                                  -            cmd = api ?
                                  -                "(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)" :
                                  -                "(function(arguments){ "+expr+" }).call("+context+",undefined)" ;
                                  -                
                                  -            r = this.eval(cmd);
                                  -            if (r && r[evalError])
                                  -            {
                                  -                if (errorHandler)
                                  -                    r = errorHandler(r.message || r)
                                  -                else
                                  -                    r = r.message || r;
                                  -            }
                                  -        }
                                  -        
                                  -        return r;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (isOpera || isSafari)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -  
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        /*
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }/**/
                                  -        
                                  -        var box = document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        // Calibration fails in some environments, so we're using a static value
                                  -        // based in the test case result.
                                  -        var rate = 200 / 225;
                                  -        //var calibrationBase = 200;
                                  -        //var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        //var rate = calibrationBase / calibrationValue;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -FBL.chromeMap = {};
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    commandLineVisible: false,
                                  -    sidePanelVisible: false,
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanel: "Console",
                                  -    selectedElement: null,
                                  -    
                                  -    consoleMessageQueue: [],    
                                  -    
                                  -    height: 250,
                                  -    
                                  -    isOpen: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChrome();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Application.chrome.type == "frame")
                                  -            ChromeMini.create(Application.chrome);
                                  -            
                                  -        if (Application.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Application.openAtStartup = true;
                                  -
                                  -        var chrome = Firebug.chrome = new Chrome(Application.chrome);
                                  -        chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onPressF12);
                                  -        
                                  -        if (Application.isPersistentMode && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            chromeMap.frame = FirebugChrome.chromeMap.frame;
                                  -            FirebugChrome.chromeMap.popup = chrome;
                                  -            
                                  -            var frame = chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            // initial UI state
                                  -            FirebugChrome.commandLineVisible = false;
                                  -            FirebugChrome.sidePanelVisible = false;
                                  -
                                  -            chrome.reattach(chromeMap.frame, chrome);
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && typeof prop != "function")
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Options
                                  -
                                  -var ChromeDefaultOptions = 
                                  -{
                                  -    type: "frame",
                                  -    id: "FirebugChrome",
                                  -    height: 250
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChrome = function(options)
                                  -{
                                  -    options = options || {};
                                  -    options = extend(ChromeDefaultOptions, options);
                                  -    
                                  -    var context = options.context || Application.browser;
                                  -    
                                  -    var chrome = {};
                                  -    
                                  -    chrome.type = options.type;
                                  -    
                                  -    var isChromeFrame = chrome.type == "frame";
                                  -    var isBookmarletMode = Application.isBookmarletMode;
                                  -    var url = isBookmarletMode ? "about:blank" : Application.location.skin;
                                  -    
                                  -    if (isChromeFrame)
                                  -    {
                                  -        // Create the Chrome Frame
                                  -        var node = chrome.node = createGlobalElement("iframe");
                                  -        
                                  -        node.setAttribute("id", options.id);
                                  -        node.setAttribute("frameBorder", "0");
                                  -        node.style.border = "0";
                                  -        node.style.visibility = "hidden";
                                  -        node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -        node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -        node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -        node.style.left = "0";
                                  -        node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -        node.style.height = options.height + "px";
                                  -        
                                  -        // avoid flickering during chrome rendering
                                  -        if (isFirefox)
                                  -            node.style.display = "none";
                                  -        
                                  -        if (!isBookmarletMode)
                                  -            node.setAttribute("src", Application.location.skin);
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        context.document.getElementsByTagName("body")[0].appendChild(node);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Create the Chrome Popup
                                  -        var height = FirebugChrome.height || options.height;
                                  -        var options = [
                                  -                "true,top=",
                                  -                Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                ",left=0,height=",
                                  -                height,
                                  -                ",width=",
                                  -                screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                ",resizable"          
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = context.window.open(
                                  -            url, 
                                  -            "popup", 
                                  -            options
                                  -          );
                                  -        
                                  -        if (node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug popup was blocked.");
                                  -            return;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isBookmarletMode)
                                  -    {
                                  -        var tpl = getChromeTemplate(!isChromeFrame);
                                  -        var doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -        doc.write(tpl);
                                  -        doc.close();
                                  -    }
                                  -    
                                  -    var win;
                                  -    var waitDelay = !isBookmarletMode ? isChromeFrame ? 200 : 300 : 100;
                                  -    var waitForChrome = function()
                                  -    {
                                  -        if ( // Frame loaded... OR
                                  -             isChromeFrame && (win=node.contentWindow) &&
                                  -             node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -             
                                  -             // Popup loaded
                                  -             !isChromeFrame && (win=node.window) && node.document &&
                                  -             node.document.getElementById("fbCommandLine") )
                                  -        {
                                  -            chrome.window = win.window;
                                  -            chrome.document = win.document;
                                  -            
                                  -            onChromeLoad(chrome);
                                  -        }
                                  -        else
                                  -            setTimeout(waitForChrome, waitDelay);
                                  -    }
                                  -    
                                  -    waitForChrome();
                                  -};
                                  -
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Application.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Application.isPersistentMode)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Application.FirebugChrome = FirebugChrome;
                                  -        Application.FirebugChrome.chromeMap = FBL.chromeMap;
                                  -        chrome.window.FirebugApplication = Application;
                                  -    
                                  -        if (Application.isDevelopmentMode)
                                  -        {
                                  -            Application.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Application.location.app;
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var frame = chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            // initial UI state
                                  -            FirebugChrome.commandLineVisible = false;
                                  -            FirebugChrome.sidePanelVisible = false;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -            
                                  -            newChrome.reattach(chromeMap.frame, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    r[++i] = '</title><style>';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = (isIE6 && tpl.IE6CSS) ? tpl.IE6CSS : '';
                                  -    r[++i] = '</style>';
                                  -    r[++i] = '</head><body class=' + (isPopup ? '"FirebugPopup"' : '') + '>';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    
                                  -    chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = extend(Firebug.Controller, Firebug.PanelBar);
                                  -var ChromeBase = extend(ChromeBase, {
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.PanelBar.create.apply(this);
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        
                                  -        this.inspectButton = new Firebug.Button({
                                  -            type: "toggle",
                                  -            node: $("fbChrome_btInspect"),
                                  -            owner: Firebug.Inspector,
                                  -            
                                  -            onPress: Firebug.Inspector.startInspecting,
                                  -            onUnpress: Firebug.Inspector.stopInspecting          
                                  -        });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        Firebug.PanelBar.initialize.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create a new instance of the CommandLine class
                                  -        commandLine = new Firebug.CommandLine(fbCommandLine);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE)
                                  -        {
                                  -           var as = $$(".fbHover");
                                  -           for (var i=0, a; a=as[i]; i++)
                                  -           {
                                  -               a.setAttribute("href", "javascript:void(0)");
                                  -           }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.inspectButton.initialize();
                                  -        
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanel);
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        this.inspectButton.shutdown();
                                  -        
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        Firebug.PanelBar.shutdown.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // destroy the instance of the CommandLine class
                                  -        commandLine.destroy();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        //alert('detach');
                                  -        if(!chromeMap.popup)
                                  -        {     
                                  -            createChrome({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            newPanelMap[name].contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        
                                  -        dispatch(Firebug.chrome.panelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related drawings
                                  -        var chromeHeight = size.height;
                                  -        var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -        var fixedHeight = topHeight + commandLineHeight;
                                  -        var y = Math.max(chromeHeight, topHeight);
                                  -        
                                  -        fbPanel1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        fbPanelBox1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related drawings
                                  -        var chromeWidth = size.width /* window borders */;
                                  -        var sideWidth = FirebugChrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0;
                                  -        
                                  -        fbPanelBox1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";
                                  -        fbPanel1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";                
                                  -        
                                  -        if (FirebugChrome.sidePanelVisible)
                                  -        {
                                  -            fbPanelBox2Style.width = sideWidth + "px";
                                  -            fbPanelBar2BoxStyle.width = Math.max(sideWidth, 0) + "px";
                                  -            fbVSplitterStyle.right = Math.max(sideWidth - 6, 0) + "px";
                                  -        }
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && self.type == "frame")
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(options.hasSidePanel);
                                  -        Firebug.chrome.draw();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeContext = extend(ChromeBase, Context.prototype); 
                                  -
                                  -var ChromeFrameBase = extend(ChromeContext,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Application.openAtStartup)
                                  -            this.open();
                                  -        else
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            this.close();
                                  -        }
                                  -        
                                  -        //if (this.node.style.visibility != "visible")
                                  -        //    this.node.style.visibility = "visible";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [Firebug.browser.window, "unload", this.destroy],
                                  -            
                                  -            [$("fbChrome_btClose"), "click", this.close],
                                  -            [$("fbChrome_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = chromeMap.frame;
                                  -        
                                  -        // last UI state
                                  -        FBL.FirebugChrome.commandLineVisible = this.commandLineVisible;
                                  -        FBL.FirebugChrome.sidePanelVisible = this.sidePanelVisible;
                                  -        
                                  -        ChromeBase.reattach(chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (ChromeMini.isInitialized)
                                  -            {
                                  -                ChromeMini.shutdown();
                                  -            }
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -                node.style.visibility = "visible";
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "none";
                                  -                    
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            ChromeMini.initialize();
                                  -            
                                  -            node.style.visibility = "visible";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        
                                  -        if (this.type == "frame" && (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Firebug.Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        
                                  -        var mini = $("fbMiniChrome");
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon");
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors");
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        node.setAttribute("allowTransparency", "true");
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "transparent";
                                  -        
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon"), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        node.setAttribute("allowTransparency", "false");
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "#fff";
                                  -        
                                  -        var mini = $("fbMiniChrome");
                                  -        mini.style.display = "none";
                                  -        
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeContext, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        this.document.body.className = "FirebugPopup";
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy],
                                  -            [Firebug.browser.window, "unload", this.close]
                                  -        );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if (Application.isPersistentMode)
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            Application.FirebugChrome.selectedElement = FirebugChrome.selectedElement;
                                  -        }
                                  -        var frame = chromeMap.frame;
                                  -        frame.reattach(this, frame);
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        if (Application.isPersistentMode)
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            Application.FirebugChrome.chromeMap = FirebugChrome.chromeMap;
                                  -            Application.FirebugChrome.chromeMap.popup = null;
                                  -        }
                                  -        chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -//
                                  -var commandLine = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -var fbTop = null;
                                  -var fbContent = null;
                                  -var fbContentStyle = null;
                                  -var fbBottom = null;
                                  -var fbBtnInspect = null;
                                  -
                                  -var fbToolbar = null;
                                  -
                                  -var fbPanelBox1 = null;
                                  -var fbPanelBox1Style = null;
                                  -var fbPanelBox2 = null;
                                  -var fbPanelBox2Style = null;
                                  -var fbPanelBar2Box = null;
                                  -var fbPanelBar2BoxStyle = null;
                                  -
                                  -var fbHSplitter = null;
                                  -var fbVSplitter = null;
                                  -var fbVSplitterStyle = null;
                                  -
                                  -var fbPanel1 = null;
                                  -var fbPanel1Style = null;
                                  -var fbPanel2 = null;
                                  -
                                  -var fbConsole = null;
                                  -var fbConsoleStyle = null;
                                  -var fbHTML = null;
                                  -
                                  -var fbCommandLine = null;
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var topHeight = null;
                                  -var topPartialHeight = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var chromeRedrawSkipRate = isIE ? 30 : isOpera ? 80 : 75;
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.commandLineVisible;
                                  -    Firebug.chrome.commandLineVisible = FirebugChrome.commandLineVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.commandLineVisible;
                                  -    
                                  -    if (FirebugChrome.commandLineVisible != last)
                                  -    {
                                  -        fbBottom.className = FirebugChrome.commandLineVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible = FirebugChrome.sidePanelVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.sidePanelVisible;
                                  -    
                                  -    if (FirebugChrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = FirebugChrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = FirebugChrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onPressF12 = function onPressF12(event)
                                  -{
                                  -    if (event.keyCode == 123 /* F12 */ && 
                                  -        (!isFirefox && !event.shiftKey || event.shiftKey && isFirefox))
                                  -        {
                                  -            Firebug.chrome.toggle(false, event.ctrlKey);
                                  -            cancelEvent(event, true);
                                  -        }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastHSplitterMouseMove = 0;
                                  -var onHSplitterMouseMoveBuffer = null;
                                  -var onHSplitterMouseMoveTimer = null;
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugChrome")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastVSplitterMouseMove = 0;
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getWindowSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        this.timeMap[name] = (new Date()).getTime();
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        if (name in this.timeMap)
                                  -        {
                                  -            var delta = (new Date()).getTime() - this.timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete this.timeMap[name];
                                  -        }
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        return this.warn(["trace() not supported."]);
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().contentNode.innerHTML = "";
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.contentNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().contentNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            node: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -if (!isFirefox)
                                  -    Application.browser.window.console = ConsoleAPI;        
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false;
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context);
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    chunker.lastIndex = 0;
                                  -    
                                  -    while ( (m = chunker.exec(selector)) !== null ) {
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = RegExp.rightContext;
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = false;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.match[ type ].exec( expr )) ) {
                                  -            var left = RegExp.leftContext;
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.selectNode(a);
                                  -        aRange.collapse(true);
                                  -        bRange.selectNode(b);
                                  -        bRange.collapse(true);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Application.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        /**/
                                  -
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugChrome
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugChrome") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxPaddingStyle.top = margin.top + "px";
                                  -        boxPaddingStyle.left = margin.left + "px";
                                  -        boxPaddingStyle.height = height + "px";
                                  -        boxPaddingStyle.width = width + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + padding.left + "px";
                                  -        boxContentStyle.height = height - padding.top - padding.bottom + "px";
                                  -        boxContentStyle.width = width - padding.left - padding.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, boxMargin, boxMarginStyle, 
                                  -boxPadding, boxPaddingStyle, boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Application.location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Application.isTraceMode) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelStyle = inspectStyle + "opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var Console = Firebug.Console;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -
                                  -Firebug.CommandLine = function(element)
                                  -{
                                  -    this.element = element;
                                  -    
                                  -    if (isOpera)
                                  -      fixOperaTabKey(this.element);
                                  -    
                                  -    this.clear = bind(this.clear, this);
                                  -    this.onKeyDown = bind(this.onKeyDown, this);
                                  -    
                                  -    addEvent(this.element, "keydown", this.onKeyDown);
                                  -    
                                  -    //Application.browser.onerror = this.onError;
                                  -    var self = this
                                  -    Application.browser.onerror = function(){self.onError.apply(self, arguments)};
                                  -
                                  -    //Application.browser.onerror = this.onError;
                                  -    window.onerror = this.onError;
                                  -    
                                  -    initializeCommandLineAPI();
                                  -};
                                  -
                                  -Firebug.CommandLine.prototype = 
                                  -{
                                  -    element: null,
                                  -  
                                  -    _buffer: [],
                                  -    _bi: -1,
                                  -    
                                  -    _completing: null,
                                  -    _completePrefix: null,
                                  -    _completeExpr: null,
                                  -    _completeBuffer: null,
                                  -    _ci: null,
                                  -    
                                  -    _completion:
                                  -    {
                                  -        window:
                                  -        [
                                  -            "console"
                                  -        ],
                                  -        
                                  -        document:
                                  -        [
                                  -            "getElementById", 
                                  -            "getElementsByTagName"
                                  -        ]
                                  -    },
                                  -  
                                  -    _stack: function(command)
                                  -    {
                                  -        this._buffer.push(command);
                                  -        this._bi = this._buffer.length;
                                  -    },
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        window.onerror = null;
                                  -        this.element = null
                                  -    },
                                  -
                                  -    execute: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var command = cmd.value;
                                  -        
                                  -        this._stack(command);
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        
                                  -        try
                                  -        {
                                  -            
                                  -            var result = this.evaluate(command);
                                  -            // evita que seja repetido o log, caso o comando executado
                                  -            // j? seja um log via linha de comando
                                  -            if (result != Console.LOG_COMMAND)
                                  -            {
                                  -                var html = [];
                                  -                Firebug.Reps.appendObject(result, html)
                                  -                Firebug.Console.writeMessage(html, "command");
                                  -            }
                                  -                
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            Firebug.Console.writeMessage([e.message || e], "error");
                                  -        }
                                  -        
                                  -        cmd.value = "";
                                  -    },
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -            
                                  -        //Firebug.context = Firebug.chrome;
                                  -        //api = null;
                                  -
                                  -        return Firebug.context.evaluate(expr, "window", api, Console.error);
                                  -    },
                                  -    
                                  -    //eval: new Function("return window.eval.apply(window, arguments)"),
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var buffer = this._buffer;
                                  -        
                                  -        if (this._bi > 0 && buffer.length > 0)
                                  -            cmd.value = buffer[--this._bi];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var buffer = this._buffer;
                                  -        var limit = buffer.length -1;
                                  -        var i = this._bi;
                                  -        
                                  -        if (i < limit)
                                  -          cmd.value = buffer[++this._bi];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++this._bi;
                                  -            cmd.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var command = cmd.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!this._completing)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            this._completing = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                this._completePrefix = prefix;
                                  -                this._completeExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                this._ci = -1;
                                  -                
                                  -                buffer = this._completeBuffer = isIE ?
                                  -                    this._completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = this._completeBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = this._completePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=this._ci+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    this._ci = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            cmd.value = this._completeExpr + result;
                                  -    },
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -            this._completing = false;
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -            this.execute();
                                  -
                                  -        else if (code == 27 /* ESC */)
                                  -            setTimeout(this.clear, 0);
                                  -          
                                  -        else if (code == 38 /* up */)
                                  -            this.prevCommand();
                                  -          
                                  -        else if (code == 40 /* down */)
                                  -            this.nextCommand();
                                  -          
                                  -        else if (code == 9 /* tab */)
                                  -            this.autocomplete(e.shiftKey);
                                  -          
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector(selector, context)
                                  -    },
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -}
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Firebug.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = node.style.visibility != "hidden" &&
                                  -                        node.style.display != "none";
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || attr.nodeName == cacheID)
                                  -                        continue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                        '</span>&quot;')
                                  -                }
                                  -            
                                  -
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(document.all){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        //hasStatusBar: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Application.isPersistentMode || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        fbPanel1 = null;
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedElement)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedElement = e.id;
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -var OLD_chromeLoad = function OLD_chromeLoad(doc)
                                  -{
                                  -    //Firebug.Inspector.onChromeReady();
                                  -    
                                  -    var rootNode = document.documentElement;
                                  -    
                                  -    /* Console event handlers */
                                  -    addEvent(fbConsole, 'mousemove', onListMouseMove);
                                  -    addEvent(fbConsole, 'mouseout', onListMouseOut);
                                  -    
                                  -    
                                  -    // HTML event handlers
                                  -    addEvent(fbHTML, 'click', Firebug.HTML.onTreeClick);
                                  -    
                                  -    addEvent(fbHTML, 'mousemove', onListMouseMove);
                                  -    addEvent(fbHTML, 'mouseout', onListMouseOut);
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugChrome" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Application.isTraceMode) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            module: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.initialize();
                                  diff --git a/tags/firebug1.3a3/build/firebug.js b/tags/firebug1.3a3/build/firebug.js
                                  deleted file mode 100644
                                  index c23c8240..00000000
                                  --- a/tags/firebug1.3a3/build/firebug.js
                                  +++ /dev/null
                                  @@ -1,2589 +0,0 @@
                                  -/*
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -var FBL={};
                                  -(function(){var reNotWhitespace=/[^\s]/;
                                  -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -var userAgent=navigator.userAgent;
                                  -this.isFirefox=userAgent.indexOf("Firefox")!=-1;
                                  -this.isOpera=userAgent.indexOf("Opera")!=-1;
                                  -this.isSafari=userAgent.indexOf("AppleWebKit")!=-1;
                                  -this.isIE=userAgent.indexOf("MSIE")!=-1;
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.NS=null;
                                  -this.pixelsPerInch=null;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){var isChromeContext=typeof window.FirebugApplication=="object";
                                  -if(!isChromeContext){findLocation()
                                  -}FBTrace=FBL.FBTrace;
                                  -if(isChromeContext){FBL.Application=window.FirebugApplication;
                                  -FBL.Application.isChromeContext=true;
                                  -FBTrace.messageQueue=FBL.Application.traceMessageQueue
                                  -}else{FBL.NS=document.documentElement.namespaceURI;
                                  -FBL.Application.browser=window;
                                  -FBL.Application.destroy=destroyApplication
                                  -}this.isQuiksMode=FBL.Application.browser.document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -if(FBL.Application.isTraceMode){FBTrace.initialize()
                                  -}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context")
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}if(FBL.Application.isPersistentMode){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Application.FirebugChrome)
                                  -}else{FBL.Application.FirebugChrome=FBL.FirebugChrome;
                                  -FBL.Application.traceMessageQueue=FBTrace.messageQueue
                                  -}}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){var doc=FBL.Application.browser.document;
                                  -var body=null;
                                  -if(body=doc.getElementsByTagName("body")[0]){calculatePixelsPerInch(doc,body);
                                  -onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Application.isPersistentMode&&FBL.Application.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Application.isDevelopmentMode){window.FirebugApplication.destroy();
                                  -if(FBL.isIE){window.FirebugApplication=null
                                  -}else{delete window.FirebugApplication
                                  -}}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -this.Application={openAtStartup:false,isBookmarletMode:false,isPersistentMode:false,isTraceMode:false,skin:"xp",isDevelopmentMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyApplication=function destroyApplication(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -this.Application.location={sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -if(script){file=reFirebugFile.exec(script.src)
                                  -}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
                                  -break
                                  -}}}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var rel=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var lastFolder=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(rel){var j=rel[1].length/3;
                                  -var p;
                                  -while(j-->0){path=lastFolder.exec(path)[1]
                                  -}path+=rel[2]
                                  -}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var App=FBL.Application;
                                  -var loc=App.location;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=loc.baseDir+"skin/"+App.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName;
                                  -if(fileName=="firebug.dev.js"){App.isDevelopmentMode=true
                                  -}if(fileOptions){if(fileOptions.indexOf("open")!=-1){App.openAtStartup=true
                                  -}if(fileOptions.indexOf("remote")!=-1){App.isBookmarletMode=true;
                                  -App.openAtStartup=true
                                  -}if(fileOptions.indexOf("trace")!=-1){App.isTraceMode=true
                                  -}if(fileOptions.indexOf("persist")!=-1){App.isPersistentMode=true
                                  -}}var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval(innerOptions)
                                  -}}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
                                  -};
                                  -this.safeToString=function(ob){try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return"[an object with no toString() function]"
                                  -}};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML"
                                  -};
                                  -this.collapse=function(elt,collapsed){elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){node.innerHTML=""
                                  -};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&!this.hasClass(node,name)){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if(this.hasClass(elt,name)){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Application.browser.document;
                                  -var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(name!="document"){element.setAttribute(propname,properties[name])
                                  -}}return element
                                  -};
                                  -this.isLeftClick=function(event){return event.button==0&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return event.button==1&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return event.button==2&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return event.button==0&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return event.button==0&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}};
                                  -this.removeEvent=function(object,name,handler){if(document.all){object.detachEvent("on"+name,handler)
                                  -}else{object.removeEventListener(name,handler,false)
                                  -}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(document.all){e.cancelBubble=true
                                  -}else{e.stopPropagation()
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.addEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.addEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.removeEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.removeEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listeners.hasOwnProperty(prop)&&listener[name]){listener[name].apply(listener,args)
                                  -}}}}catch(exc){}};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){e.onselectstart=function(){return false
                                  -}
                                  -}else{e.onmousedown=function(){return false
                                  -}
                                  -}e.style.cursor="default"
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var s=Components.utils.Sandbox(originURL);
                                  -var jsonObject=null;
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(e){if(e.message.indexOf("is not defined")){var parts=e.message.split(" ");
                                  -s[parts[0]]=function(str){return str
                                  -};
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(ex){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isArrayLike=function(object){};
                                  -this.isFunction=function(object){return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=""+value){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{}};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=domMemberMap[name];
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(object instanceof Document||object instanceof XMLDocument){return domMemberCache.Document
                                  -}else{if(object instanceof Location){return domMemberCache.Location
                                  -}else{if(object instanceof HTMLImageElement){return domMemberCache.HTMLImageElement
                                  -}else{if(object instanceof HTMLAnchorElement){return domMemberCache.HTMLAnchorElement
                                  -}else{if(object instanceof HTMLInputElement){return domMemberCache.HTMLInputElement
                                  -}else{if(object instanceof HTMLButtonElement){return domMemberCache.HTMLButtonElement
                                  -}else{if(object instanceof HTMLFormElement){return domMemberCache.HTMLFormElement
                                  -}else{if(object instanceof HTMLBodyElement){return domMemberCache.HTMLBodyElement
                                  -}else{if(object instanceof HTMLHtmlElement){return domMemberCache.HTMLHtmlElement
                                  -}else{if(object instanceof HTMLScriptElement){return domMemberCache.HTMLScriptElement
                                  -}else{if(object instanceof HTMLTableElement){return domMemberCache.HTMLTableElement
                                  -}else{if(object instanceof HTMLTableRowElement){return domMemberCache.HTMLTableRowElement
                                  -}else{if(object instanceof HTMLTableCellElement){return domMemberCache.HTMLTableCellElement
                                  -}else{if(object instanceof HTMLIFrameElement){return domMemberCache.HTMLIFrameElement
                                  -}else{if(object instanceof SVGSVGElement){return domMemberCache.SVGSVGElement
                                  -}else{if(object instanceof SVGElement){return domMemberCache.SVGElement
                                  -}else{if(object instanceof Element){return domMemberCache.Element
                                  -}else{if(object instanceof Text||object instanceof CDATASection){return domMemberCache.Text
                                  -}else{if(object instanceof Attr){return domMemberCache.Attr
                                  -}else{if(object instanceof Node){return domMemberCache.Node
                                  -}else{if(object instanceof Event||object instanceof EventCopy){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap",]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1};
                                  -this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=options||{};
                                  -o.type=o.type&&o.type.toLowerCase()||"get";
                                  -o.async=o.async||true;
                                  -o.dataType=o.dataType||"text";
                                  -o.contentType=o.contentType||"application/x-www-form-urlencoded";
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.Ajax.initialize();
                                  -this.createCookie=function(name,value,days){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -};
                                  -this.readCookie=function(name){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}return null
                                  -};
                                  -this.eraseCookie=function(name){createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}};
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -body.appendChild(inch);
                                  -FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -body.removeChild(inch)
                                  -}
                                  -}).apply(FBL);
                                  -FBL.FBTrace={};
                                  -(function(){var e={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1};
                                  -this.module=null;
                                  -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[]
                                  -}for(var h in e){this[h]=e[h]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(i,h){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(k){this.module=k;
                                  -var h=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var j=0;
                                  -j<h.length;
                                  -++j){this.writeMessage(h[j][0],h[j][1],h[j][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(o,m){var k=this.DBG_TIMESTAMP?[d()," | "]:[];
                                  -var n=o.length;
                                  -for(var j=0;
                                  -j<n;
                                  -++j){g(" ",k);
                                  -var h=o[j];
                                  -if(j==0){k.push("<b>");
                                  -g(h,k);
                                  -k.push("</b>")
                                  -}else{g(h,k)
                                  -}}return this.logRow(k,m)
                                  -};
                                  -this.logRow=function(j,i){var h=this.getPanel();
                                  -if(h&&h.contentNode){this.writeMessage(j,i)
                                  -}else{this.messageQueue.push([j,i])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(j,i){var h=this.getPanel().containerNode;
                                  -var k=h.scrollTop+h.offsetHeight>=h.scrollHeight;
                                  -this.writeRow.call(this,j,i);
                                  -if(k){h.scrollTop=h.scrollHeight-h.offsetHeight
                                  -}};
                                  -this.appendRow=function(i){var h=this.getPanel().contentNode;
                                  -h.appendChild(i)
                                  -};
                                  -this.writeRow=function(i,h){var j=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -j.className="logRow"+(h?" logRow-"+h:"");
                                  -j.innerHTML=i.join("");
                                  -this.appendRow(j)
                                  -};
                                  -function g(h,i){i.push(f(c(h)))
                                  -}function d(){var i=new Date();
                                  -var h=""+(i.getMilliseconds()/1000).toFixed(3);
                                  -h=h.substr(2);
                                  -return i.toLocaleTimeString()+"."+h
                                  -}var a={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function b(h){return a[h]
                                  -}function f(h){return(h+"").replace(/[<>&"']/g,b)
                                  -}function c(i){try{return i+""
                                  -}catch(h){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){FBL.cacheID="___FBL_";
                                  -FBL.documentCache={};
                                  -var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -FBL.Firebug={version:"Firebug Lite 1.3.0a2",revision:"$Revision: 4241 $",modules:modules,panelTypes:panelTypes,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Application.browser);
                                  -Firebug.context=Firebug.browser;
                                  -cacheDocument();
                                  -Firebug.Inspector.create();
                                  -FirebugChrome.initialize();
                                  -dispatch(modules,"initialize",[])
                                  -},shutdown:function(){documentCache={};
                                  -dispatch(modules,"shutdown",[])
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){panelTypeMap[arguments[i].prototype.name]=arguments[i]
                                  -}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){defaultRep=rep;
                                  -defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof(object);
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}}};
                                  -if(!Application.isPersistentMode||Application.isPersistentMode&&Application.isChromeContext||Application.isDevelopmentMode){Application.browser.window.Firebug=FBL.Firebug
                                  -}var cacheDocument=function cacheDocument(){var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -el[cacheID]=i;
                                  -documentCache[i]=el
                                  -}};
                                  -Firebug.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -Firebug.Module={initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}};
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasSidePanel:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,panelHTML:"",panelCSS:"",toolButtonsHTML:""},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,panelBar:null,commandLine:null,toolButtons:null,statusBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -if(options.isPreRendered){this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasSidePanel){}}else{var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
                                  -$("fbPanel1").appendChild(panelNode);
                                  -var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
                                  -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
                                  -if(isIE6){tabNode.href="javascript:void(0)"
                                  -}$("fbPanelBar1").appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
                                  -$("fbToolbarButtons").appendChild(this.toolButtonsNode)
                                  -}}var contentNode=this.contentNode=createElement("div");
                                  -this.panelNode.appendChild(contentNode);
                                  -this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name)
                                  -}},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(this.panelNode){delete this.panelNode.ownerPanel
                                  -}this.destroyNode()
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode
                                  -},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name)
                                  -}},detach:function(oldChrome,newChrome){},reattach:function(doc){},show:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -Firebug.chrome.layout(this)
                                  -},hide:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none"
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},refresh:function(){},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text){}};
                                  -Firebug.PanelBar={selectedPanel:null,create:function(){this.panelMap={}
                                  -},initialize:function(){for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){},addPanel:function(panelName,parentPanel){var PanelType=panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}if(!panel.parentPanel){FirebugChrome.selectedPanel=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.initialize();
                                  -panel.show()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -},getSelectedPanel:function(){return this.selectedPanel
                                  -}};
                                  -Firebug.Button=function(options){options=options||{};
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -this.type=options.type||"normal";
                                  -this.onClick=options.onClick;
                                  -this.onPress=options.onPress;
                                  -this.onUnpress=options.onUnpress;
                                  -if(options.node){this.node=options.node;
                                  -this.owner=options.owner;
                                  -this.container=this.node.parentNode
                                  -}else{var caption=options.caption||"caption";
                                  -var title=options.title||"title";
                                  -this.owner=this.module=options.module;
                                  -this.panel=options.panel||this.module.getPanel();
                                  -this.container=this.panel.toolButtonsNode;
                                  -this.node=createElement("a",{className:"fbHover",title:title,innerHTML:caption});
                                  -this.container.appendChild(this.node)
                                  -}};
                                  -Firebug.Button.prototype=extend(Firebug.Controller,{type:null,node:null,owner:null,module:null,panel:null,container:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -this.container.removeChild(this.node)
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var node=this.node;
                                  -this.addController([node,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([node,"mouseup",this.handleUnpress],[node,"mouseout",this.handleUnpress],[node,"click",this.handleClick])
                                  -}},shutdown:function(){Firebug.Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.node,"fbBtnPressed")
                                  -}else{if(display=="unpressed"){removeClass(this.node,"fbBtnPressed")
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner)
                                  -}}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -},addButton:function(caption,title,handler){},removeAllButtons:function(){}});
                                  -function StatusBar(){}StatusBar.prototype=extend(Firebug.Controller,{});
                                  -function PanelOptions(){}PanelOptions.prototype=extend(Firebug.Controller,{})
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=object[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=node[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")
                                  -}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={evaluate:function(expr,context,api,errorHandler){context=context||"window";
                                  -var cmd=api?"(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)":"(function(arguments){ return "+expr+" }).call("+context+",undefined)";
                                  -var r=this.eval(cmd);
                                  -if(r&&r[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
                                  -r=this.eval(cmd);
                                  -if(r&&r[evalError]){if(errorHandler){r=errorHandler(r.message||r)
                                  -}else{r=r.message||r
                                  -}}}return r
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}else{if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(isOpera||isSafari){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getCSS(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}}if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getMeasurementBox:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -if(isIE){var propName,cssValue;
                                  -var autoMargin=null;
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){propName=name+sufix;
                                  -cssValue=el.currentStyle[propName]||el.style[propName];
                                  -if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el)
                                  -}result[i]=autoMargin[sufix.toLowerCase()]
                                  -}else{result[i]=this.getMeasurementInPixels(el,propName)
                                  -}}}else{for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
                                  -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getCSSAutoMarginBox:function(el){if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0}
                                  -}var offsetTop=0;
                                  -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -offsetTop=scrollSize.height
                                  -}var box=document.createElement("div");
                                  -box.style.cssText="margin:0; padding:1px; border: 0;";
                                  -var clone=el.cloneNode(false);
                                  -var text=document.createTextNode("&nbsp;");
                                  -clone.appendChild(text);
                                  -box.appendChild(clone);
                                  -document.body.appendChild(box);
                                  -var marginTop=clone.offsetTop-box.offsetTop-1;
                                  -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
                                  -var marginLeft=clone.offsetLeft-box.offsetLeft-1;
                                  -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
                                  -document.body.removeChild(box);
                                  -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getCSS:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}};
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.chromeMap={};
                                  -FBL.FirebugChrome={commandLineVisible:false,sidePanelVisible:false,sidePanelWidth:300,selectedPanel:"Console",selectedElement:null,consoleMessageQueue:[],height:250,isOpen:false,create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window")
                                  -}createChrome()
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window")
                                  -}if(Application.chrome.type=="frame"){ChromeMini.create(Application.chrome)
                                  -}if(Application.browser.document.documentElement.getAttribute("debug")=="true"){Application.openAtStartup=true
                                  -}var chrome=Firebug.chrome=new Chrome(Application.chrome);
                                  -chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onPressF12);
                                  -if(Application.isPersistentMode&&chrome.type=="popup"){chromeMap.frame=FirebugChrome.chromeMap.frame;
                                  -FirebugChrome.chromeMap.popup=chrome;
                                  -var frame=chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}FirebugChrome.commandLineVisible=false;
                                  -FirebugChrome.sidePanelVisible=false;
                                  -chrome.reattach(chromeMap.frame,chrome)
                                  -}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name];
                                  -if(FBChrome.hasOwnProperty(name)&&typeof prop!="function"){this[name]=prop
                                  -}}}};
                                  -var ChromeDefaultOptions={type:"frame",id:"FirebugChrome",height:250};
                                  -var createChrome=function(options){options=options||{};
                                  -options=extend(ChromeDefaultOptions,options);
                                  -var context=options.context||Application.browser;
                                  -var chrome={};
                                  -chrome.type=options.type;
                                  -var isChromeFrame=chrome.type=="frame";
                                  -var isBookmarletMode=Application.isBookmarletMode;
                                  -var url=isBookmarletMode?"about:blank":Application.location.skin;
                                  -if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
                                  -node.setAttribute("id",options.id);
                                  -node.setAttribute("frameBorder","0");
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=options.height+"px";
                                  -if(isFirefox){node.style.display="none"
                                  -}if(!isBookmarletMode){node.setAttribute("src",Application.location.skin)
                                  -}context.document.getElementsByTagName("body")[0].appendChild(node)
                                  -}else{var height=FirebugChrome.height||options.height;
                                  -var options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join("");
                                  -var node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}if(isBookmarletMode){var tpl=getChromeTemplate(!isChromeFrame);
                                  -var doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win;
                                  -var waitDelay=!isBookmarletMode?isChromeFrame?200:300:100;
                                  -var waitForChrome=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -onChromeLoad(chrome)
                                  -}else{setTimeout(waitForChrome,waitDelay)
                                  -}};
                                  -waitForChrome()
                                  -};
                                  -var onChromeLoad=function onChromeLoad(chrome){Application.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded")
                                  -}if(Application.isPersistentMode){Application.FirebugChrome=FirebugChrome;
                                  -Application.FirebugChrome.chromeMap=FBL.chromeMap;
                                  -chrome.window.FirebugApplication=Application;
                                  -if(Application.isDevelopmentMode){Application.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Application.location.app;
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},0)
                                  -}else{if(chrome.type=="popup"){var frame=chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}FirebugChrome.commandLineVisible=false;
                                  -FirebugChrome.sidePanelVisible=false;
                                  -var newChrome=new Chrome(chrome);
                                  -newChrome.reattach(chromeMap.frame,newChrome)
                                  -}}}};
                                  -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.injected;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]=(isIE6&&tpl.IE6CSS)?tpl.IE6CSS:"";
                                  -r[++i]="</style>";
                                  -r[++i]="</head><body class="+(isPopup?'"FirebugPopup"':"")+">";
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,chrome);
                                  -append(this,Base);
                                  -chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase=extend(Firebug.Controller,Firebug.PanelBar);
                                  -var ChromeBase=extend(ChromeBase,{create:function(){Firebug.PanelBar.create.apply(this);
                                  -var panelMap=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panelMap[i];
                                  -i++){if(!p.parentPanel){this.addPanel(p.prototype.name)
                                  -}}this.inspectButton=new Firebug.Button({type:"toggle",node:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -},destroy:function(){this.shutdown()
                                  -},initialize:function(){Firebug.Console.flush();
                                  -if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application")
                                  -}Firebug.Controller.initialize.apply(this);
                                  -Firebug.PanelBar.initialize.apply(this);
                                  -fbTop=$("fbTop");
                                  -fbContent=$("fbContent");
                                  -fbContentStyle=fbContent.style;
                                  -fbBottom=$("fbBottom");
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbToolbar=$("fbToolbar");
                                  -fbPanelBox1=$("fbPanelBox1");
                                  -fbPanelBox1Style=fbPanelBox1.style;
                                  -fbPanelBox2=$("fbPanelBox2");
                                  -fbPanelBox2Style=fbPanelBox2.style;
                                  -fbPanelBar2Box=$("fbPanelBar2Box");
                                  -fbPanelBar2BoxStyle=fbPanelBar2Box.style;
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbVSplitterStyle=fbVSplitter.style;
                                  -fbPanel1=$("fbPanel1");
                                  -fbPanel1Style=fbPanel1.style;
                                  -fbPanel2=$("fbPanel2");
                                  -fbConsole=$("fbConsole");
                                  -fbConsoleStyle=fbConsole.style;
                                  -fbHTML=$("fbHTML");
                                  -fbCommandLine=$("fbCommandLine");
                                  -topHeight=fbTop.offsetHeight;
                                  -topPartialHeight=fbToolbar.offsetHeight;
                                  -disableTextSelection($("fbToolbar"));
                                  -disableTextSelection($("fbPanelBarBox"));
                                  -commandLine=new Firebug.CommandLine(fbCommandLine);
                                  -if(isIE){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}this.inspectButton.initialize();
                                  -addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -var self=this;
                                  -setTimeout(function(){self.selectPanel(FirebugChrome.selectedPanel)
                                  -},0)
                                  -},shutdown:function(){this.inspectButton.shutdown();
                                  -removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -fbTop=null;
                                  -fbContent=null;
                                  -fbContentStyle=null;
                                  -fbBottom=null;
                                  -fbBtnInspect=null;
                                  -fbToolbar=null;
                                  -fbPanelBox1=null;
                                  -fbPanelBox1Style=null;
                                  -fbPanelBox2=null;
                                  -fbPanelBox2Style=null;
                                  -fbPanelBar2Box=null;
                                  -fbPanelBar2BoxStyle=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbVSplitterStyle=null;
                                  -fbPanel1=null;
                                  -fbPanel1Style=null;
                                  -fbPanel2=null;
                                  -fbConsole=null;
                                  -fbConsoleStyle=null;
                                  -fbHTML=null;
                                  -fbCommandLine=null;
                                  -topHeight=null;
                                  -topPartialHeight=null;
                                  -Firebug.Controller.shutdown.apply(this);
                                  -Firebug.PanelBar.shutdown.apply(this);
                                  -commandLine.destroy()
                                  -},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=chromeMap.frame;
                                  -frame.reattach();
                                  -chromeMap.popup=null;
                                  -frame.open();
                                  -return
                                  -}if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!FirebugChrome.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!chromeMap.popup){createChrome({type:"popup"})
                                  -}},reattach:function(oldChrome,newChrome){var newPanelMap=newChrome.panelMap;
                                  -var oldPanelMap=oldChrome.panelMap;
                                  -for(var name in newPanelMap){newPanelMap[name].contentNode.innerHTML=oldPanelMap[name].contentNode.innerHTML
                                  -}Firebug.chrome=newChrome;
                                  -if(newChrome.type=="popup"){newChrome.initialize();
                                  -dispatch(Firebug.modules,"initialize",[])
                                  -}dispatch(Firebug.chrome.panelMap,"reattach",[oldChrome,newChrome])
                                  -},draw:function(){var size=Firebug.chrome.getWindowSize();
                                  -var chromeHeight=size.height;
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var y=Math.max(chromeHeight,topHeight);
                                  -fbPanel1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -fbPanelBox1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
                                  -}else{if(isFirefox){fbContentStyle.maxHeight=Math.max(y-fixedHeight,0)+"px"
                                  -}}var chromeWidth=size.width;
                                  -var sideWidth=FirebugChrome.sidePanelVisible?FirebugChrome.sidePanelWidth:0;
                                  -fbPanelBox1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -fbPanel1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -if(FirebugChrome.sidePanelVisible){fbPanelBox2Style.width=sideWidth+"px";
                                  -fbPanelBar2BoxStyle.width=Math.max(sideWidth,0)+"px";
                                  -fbVSplitterStyle.right=Math.max(sideWidth-6,0)+"px"
                                  -}},resize:function(){var self=this;
                                  -setTimeout(function(){self.draw();
                                  -if(noFixedPosition&&self.type=="frame"){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(options.hasSidePanel);
                                  -Firebug.chrome.draw()
                                  -}});
                                  -var ChromeContext=extend(ChromeBase,Context.prototype);
                                  -var ChromeFrameBase=extend(ChromeContext,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Application.openAtStartup){this.open()
                                  -}else{FirebugChrome.isOpen=true;
                                  -this.close()
                                  -}},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[Firebug.browser.window,"unload",this.destroy],[$("fbChrome_btClose"),"click",this.close],[$("fbChrome_btDetach"),"click",this.detach]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown;
                                  -fbHSplitter.onmousedown=onHSplitterMouseDown;
                                  -this.isInitialized=true
                                  -},shutdown:function(){fbVSplitter.onmousedown=null;
                                  -fbHSplitter.onmousedown=null;
                                  -ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},reattach:function(){var frame=chromeMap.frame;
                                  -FBL.FirebugChrome.commandLineVisible=this.commandLineVisible;
                                  -FBL.FirebugChrome.sidePanelVisible=this.sidePanelVisible;
                                  -ChromeBase.reattach(chromeMap.popup,this)
                                  -},open:function(){if(!FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="block";
                                  -FirebugChrome.isOpen=true;
                                  -var self=this;
                                  -setTimeout(function(){self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}self.draw();
                                  -node.style.visibility="visible"
                                  -},10)
                                  -}},close:function(){if(FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(this.isInitialized){this.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="none";
                                  -FirebugChrome.isOpen=false;
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if(this.type=="frame"&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}}});
                                  -var ChromeMini=extend(Firebug.Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon");
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors");
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -node.setAttribute("allowTransparency","true");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="transparent";
                                  -this.addController([$("fbMiniIcon"),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=FirebugChrome.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -node.setAttribute("allowTransparency","false");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="#fff";
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="none";
                                  -Firebug.Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeContext,{initialize:function(){this.document.body.className="FirebugPopup";
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy],[Firebug.browser.window,"unload",this.close]);
                                  -fbVSplitter.onmousedown=onVSplitterMouseDown
                                  -},destroy:function(){if(Application.isPersistentMode){Application.FirebugChrome.selectedElement=FirebugChrome.selectedElement
                                  -}var frame=chromeMap.frame;
                                  -frame.reattach(this,frame);
                                  -ChromeBase.destroy.apply(this);
                                  -if(Application.isPersistentMode){Application.FirebugChrome.chromeMap=FirebugChrome.chromeMap;
                                  -Application.FirebugChrome.chromeMap.popup=null
                                  -}chromeMap.popup=null;
                                  -this.node.close()
                                  -},close:function(){this.destroy()
                                  -}});
                                  -var commandLine=null;
                                  -var fbTop=null;
                                  -var fbContent=null;
                                  -var fbContentStyle=null;
                                  -var fbBottom=null;
                                  -var fbBtnInspect=null;
                                  -var fbToolbar=null;
                                  -var fbPanelBox1=null;
                                  -var fbPanelBox1Style=null;
                                  -var fbPanelBox2=null;
                                  -var fbPanelBox2Style=null;
                                  -var fbPanelBar2Box=null;
                                  -var fbPanelBar2BoxStyle=null;
                                  -var fbHSplitter=null;
                                  -var fbVSplitter=null;
                                  -var fbVSplitterStyle=null;
                                  -var fbPanel1=null;
                                  -var fbPanel1Style=null;
                                  -var fbPanel2=null;
                                  -var fbConsole=null;
                                  -var fbConsoleStyle=null;
                                  -var fbHTML=null;
                                  -var fbCommandLine=null;
                                  -var topHeight=null;
                                  -var topPartialHeight=null;
                                  -var chromeRedrawSkipRate=isIE?30:isOpera?80:75;
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=FirebugChrome.commandLineVisible;
                                  -Firebug.chrome.commandLineVisible=FirebugChrome.commandLineVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.commandLineVisible;
                                  -if(FirebugChrome.commandLineVisible!=last){fbBottom.className=FirebugChrome.commandLineVisible?"":"hide"
                                  -}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=FirebugChrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=FirebugChrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.sidePanelVisible;
                                  -if(FirebugChrome.sidePanelVisible!=last){fbPanelBox2.className=FirebugChrome.sidePanelVisible?"":"hide";
                                  -fbPanelBar2Box.className=FirebugChrome.sidePanelVisible?"":"hide"
                                  -}};
                                  -var onPressF12=function onPressF12(event){if(event.keyCode==123&&(!isFirefox&&!event.shiftKey||event.shiftKey&&isFirefox)){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var lastHSplitterMouseMove=0;
                                  -var onHSplitterMouseMoveBuffer=null;
                                  -var onHSplitterMouseMoveTimer=null;
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugChrome"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -FirebugChrome.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="";
                                  -Firebug.chrome.draw()
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var lastVSplitterMouseMove=0;
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getWindowSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -FirebugChrome.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.injected={CSS:'.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ConsoleAPI={firebuglite:Firebug.version,log:function(){return Firebug.Console.logFormatted(arguments,"")
                                  -},debug:function(){return Firebug.Console.logFormatted(arguments,"debug")
                                  -},info:function(){return Firebug.Console.logFormatted(arguments,"info")
                                  -},warn:function(){return Firebug.Console.logFormatted(arguments,"warning")
                                  -},error:function(){return Firebug.Console.logFormatted(arguments,"error")
                                  -},assert:function(truth,message){if(!truth){var args=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -++i){args.push(arguments[i])
                                  -}Firebug.Console.logFormatted(args.length?args:["Assertion Failure"],"error");
                                  -throw message?message:"Assertion Failure"
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},dir:function(object){var html=[];
                                  -var pairs=[];
                                  -for(var name in object){try{pairs.push([name,object[name]])
                                  -}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1
                                  -});
                                  -html.push('<div class="log-object">');
                                  -for(var i=0;
                                  -i<pairs.length;
                                  -++i){var name=pairs[i][0],value=pairs[i][1];
                                  -html.push('<div class="property">','<div class="propertyValueCell"><span class="propertyValue">');
                                  -Firebug.Reps.appendObject(value,html);
                                  -html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></div>");
                                  -html.push("</div>")
                                  -}html.push("</div>");
                                  -return Firebug.Console.logRow(html,"dir")
                                  -},dirxml:function(node){var html=[];
                                  -Firebug.Reps.appendNode(node,html);
                                  -return Firebug.Console.logRow(html,"dirxml")
                                  -},group:function(){return Firebug.Console.logRow(arguments,"group",Firebug.Console.pushGroup)
                                  -},groupEnd:function(){return Firebug.Console.logRow(arguments,"",Firebug.Console.popGroup)
                                  -},time:function(name){this.timeMap[name]=(new Date()).getTime();
                                  -return Firebug.Console.LOG_COMMAND
                                  -},timeEnd:function(name){if(name in this.timeMap){var delta=(new Date()).getTime()-this.timeMap[name];
                                  -Firebug.Console.logFormatted([name+":",delta+"ms"]);
                                  -delete this.timeMap[name]
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},count:function(){return this.warn(["count() not supported."])
                                  -},trace:function(){return this.warn(["trace() not supported."])
                                  -},profile:function(){return this.warn(["profile() not supported."])
                                  -},profileEnd:function(){return Firebug.Console.LOG_COMMAND
                                  -},clear:function(){Firebug.Console.getPanel().contentNode.innerHTML="";
                                  -return Firebug.Console.LOG_COMMAND
                                  -},open:function(){toggleConsole(true);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},close:function(){if(frameVisible){toggleConsole()
                                  -}return Firebug.Console.LOG_COMMAND
                                  -}};
                                  -var ConsoleModule=extend(Firebug.Module,ConsoleAPI);
                                  -Firebug.Console=extend(ConsoleModule,{LOG_COMMAND:{},groupStack:[],timeMap:{},getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -},flush:function(){var queue=FirebugChrome.consoleMessageQueue;
                                  -FirebugChrome.consoleMessageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}},logFormatted:function(objects,className){var html=[];
                                  -var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}var parts=this.parseFormat(format);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -part.appender(object,html)
                                  -}else{Firebug.Reps.appendText(part,html)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){Firebug.Reps.appendText(" ",html);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){Firebug.Reps.appendText(object,html)
                                  -}else{Firebug.Reps.appendObject(object,html)
                                  -}}return this.logRow(html,className)
                                  -},parseFormat:function(format){var parts=[];
                                  -var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -var Reps=Firebug.Reps;
                                  -var appenderMap={s:Reps.appendText,d:Reps.appendInteger,i:Reps.appendInteger,f:Reps.appendFloat};
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){var type=m[8]?m[8]:m[5];
                                  -var appender=type in appenderMap?appenderMap[type]:Reps.appendObject;
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({appender:appender,precision:precision});
                                  -format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -},logRow:function(message,className,handler){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className,handler)
                                  -}else{FirebugChrome.consoleMessageQueue.push([message,className,handler])
                                  -}return this.LOG_COMMAND
                                  -},writeMessage:function(message,className,handler){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -if(!handler){handler=this.writeRow
                                  -}handler.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}},appendRow:function(row){if(this.groupStack.length>0){var container=this.groupStack[this.groupStack.length-1]
                                  -}else{var container=this.getPanel().contentNode
                                  -}container.appendChild(row)
                                  -},writeRow:function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -},pushGroup:function(message,className){this.logFormatted(message,className);
                                  -var groupRow=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRow.className="logGroup";
                                  -var groupRowBox=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRowBox.className="logGroupBox";
                                  -groupRow.appendChild(groupRowBox);
                                  -this.appendRow(groupRowBox);
                                  -this.groupStack.push(groupRowBox)
                                  -},popGroup:function(){this.groupStack.pop()
                                  -}});
                                  -Firebug.registerModule(Firebug.Console);
                                  -function ConsolePanel(){}ConsolePanel.prototype=extend(Firebug.Panel,{name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({node:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(ConsolePanel);
                                  -FBL.onError=function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.logRow(html,"error")
                                  -};
                                  -if(!isFirefox){Application.browser.window.console=ConsoleAPI
                                  -}}});
                                  -FBL.ns(function(){with(FBL){
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,done=0,toString=Object.prototype.toString,hasDuplicate=false;
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context);
                                  -chunker.lastIndex=0;
                                  -while((m=chunker.exec(selector))!==null){parts.push(m[1]);
                                  -if(m[2]){extra=RegExp.rightContext;
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=false;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.match[type].exec(expr))){var left=RegExp.leftContext;
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if(match[3].match(chunker).length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.selectNode(a);
                                  -aRange.collapse(true);
                                  -bRange.selectNode(b);
                                  -bRange.collapse(true);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Inspector={create:function(){offlineFragment=Application.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},destroy:function(){destroyBoxModelInspector();
                                  -destroyOutlineInspector();
                                  -offlineFragment=null
                                  -},startInspecting:function(){Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){var border=2;
                                  -var scrollbarSize=17;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0);
                                  -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0);
                                  -var numVerticalBorders=freeVerticalSpace>0?2:1;
                                  -var o=outlineElements;
                                  -var style;
                                  -style=o.fbOutlineT.style;
                                  -style.top=top-border+"px";
                                  -style.left=left+"px";
                                  -style.height=border+"px";
                                  -style.width=width+"px";
                                  -style=o.fbOutlineL.style;
                                  -style.top=top-border+"px";
                                  -style.left=left-border+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=border+"px";
                                  -style=o.fbOutlineB.style;
                                  -if(freeVerticalSpace>0){style.top=top+height+"px";
                                  -style.left=left+"px";
                                  -style.width=width+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.width=border+"px"
                                  -}style=o.fbOutlineR.style;
                                  -if(freeHorizontalSpace>0){style.top=top-border+"px";
                                  -style.left=left+width+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.height=border+"px";
                                  -style.width=border+"px"
                                  -}if(!outlineVisible){this.showOutline()
                                  -}},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}if(boxModelVisible){this.hideBoxModel()
                                  -}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){var box=Firebug.browser.getElementBox(el);
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var offsetHeight=Firebug.chrome.type=="frame"?FirebugChrome.height:0;
                                  -if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return
                                  -}var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxPaddingStyle.top=margin.top+"px";
                                  -boxPaddingStyle.left=margin.left+"px";
                                  -boxPaddingStyle.height=height+"px";
                                  -boxPaddingStyle.width=width+"px";
                                  -boxContentStyle.top=margin.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+padding.left+"px";
                                  -boxContentStyle.height=height-padding.top-padding.bottom+"px";
                                  -boxContentStyle.width=width-padding.left-padding.right+"px";
                                  -if(!boxModelVisible){this.showBoxModel()
                                  -}},hideBoxModel:function(){if(!boxModelVisible){return
                                  -}offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -},showBoxModel:function(){if(boxModelVisible){return
                                  -}if(outlineVisible){this.hideOutline()
                                  -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Application.location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelStyle=inspectStyle+"opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var getInspectingTarget=function(){};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function createInspectorFrame(){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame)
                                  -};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
                                  -el.id=name;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
                                  -el.parentNode.removeChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=createGlobalElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxPadding=createGlobalElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=createGlobalElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -};
                                  -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var Console=Firebug.Console;
                                  -Firebug.CommandLine=function(element){this.element=element;
                                  -if(isOpera){fixOperaTabKey(this.element)
                                  -}this.clear=bind(this.clear,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -addEvent(this.element,"keydown",this.onKeyDown);
                                  -var self=this;
                                  -Application.browser.onerror=function(){self.onError.apply(self,arguments)
                                  -};
                                  -window.onerror=this.onError;
                                  -initializeCommandLineAPI()
                                  -};
                                  -Firebug.CommandLine.prototype={element:null,_buffer:[],_bi:-1,_completing:null,_completePrefix:null,_completeExpr:null,_completeBuffer:null,_ci:null,_completion:{window:["console"],document:["getElementById","getElementsByTagName"]},_stack:function(command){this._buffer.push(command);
                                  -this._bi=this._buffer.length
                                  -},initialize:function(doc){},destroy:function(){removeEvent(this.element,"keydown",this.onKeyDown);
                                  -window.onerror=null;
                                  -this.element=null
                                  -},execute:function(){var cmd=this.element;
                                  -var command=cmd.value;
                                  -this._stack(command);
                                  -Firebug.Console.writeMessage(["<span>&gt;&gt;&gt;</span> ",escapeHTML(command)],"command");
                                  -try{var result=this.evaluate(command);
                                  -if(result!=Console.LOG_COMMAND){var html=[];
                                  -Firebug.Reps.appendObject(result,html);
                                  -Firebug.Console.writeMessage(html,"command")
                                  -}}catch(e){Firebug.Console.writeMessage([e.message||e],"error")
                                  -}cmd.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -return Firebug.context.evaluate(expr,"window",api,Console.error)
                                  -},prevCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -if(this._bi>0&&buffer.length>0){cmd.value=buffer[--this._bi]
                                  -}},nextCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -var limit=buffer.length-1;
                                  -var i=this._bi;
                                  -if(i<limit){cmd.value=buffer[++this._bi]
                                  -}else{if(i==limit){++this._bi;
                                  -cmd.value=""
                                  -}}},autocomplete:function(reverse){var cmd=this.element;
                                  -var command=cmd.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!this._completing){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}this._completing=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){this._completePrefix=prefix;
                                  -this._completeExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -this._ci=-1;
                                  -buffer=this._completeBuffer=isIE?this._completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=this._completeBuffer
                                  -}if(buffer){prefix=this._completePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=this._ci+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){this._ci=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){cmd.value=this._completeExpr+result
                                  -}},onError:function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.writeRow(html,"error")
                                  -},clear:function(){this.element.value=""
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){this._completing=false
                                  -}if(code==13){this.execute()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -}};
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector(selector,context)
                                  -},dir:Firebug.Console.dir,dirxml:Firebug.Console.dirxml};
                                  -Firebug.CommandLine.API={};
                                  -var initializeCommandLineAPI=function initializeCommandLineAPI(){for(var m in CommandLineAPI){if(!Firebug.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){var uid=node[cacheID];
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=node.style.visibility!="hidden"&&node.style.display!="none";
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -var isIE=false;
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(document.all){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',s.join(""),'</div><pre class="nodeCode">',escapeHTML(src),"</pre>","</div></div>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
                                  -var uid=treeNode.id;
                                  -var parentNode=documentCache[uid];
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id)
                                  -},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=documentCache[id].parentNode;
                                  -if(node&&typeof node[cacheID]!="undefined"){id=""+node[cacheID]
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id);
                                  -if(stack.length>0&&documentCache[id].childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -if(Application.isPersistentMode||Firebug.chrome.type!="popup"){this.createUI()
                                  -}},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -var d=this.contentNode;
                                  -d.innerHTML=html.join("");
                                  -this.panelNode.appendChild(d)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=$("fbPanel1")
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},reattach:function(){if(FirebugChrome.selectedElement){Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement)
                                  -}}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -FirebugChrome.selectedElement=e.id
                                  -}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
                                  -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}};
                                  -var OLD_chromeLoad=function OLD_chromeLoad(doc){var rootNode=document.documentElement;
                                  -addEvent(fbConsole,"mousemove",onListMouseMove);
                                  -addEvent(fbConsole,"mouseout",onListMouseOut);
                                  -addEvent(fbHTML,"click",Firebug.HTML.onTreeClick);
                                  -addEvent(fbHTML,"mousemove",onListMouseMove);
                                  -addEvent(fbHTML,"mouseout",onListMouseOut)
                                  -};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[FBL.cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[FBL.cacheID];
                                  -if(!uid){return
                                  -}var el=FBL.documentCache[uid.value];
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugChrome"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){if(!Application.isTraceMode){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().contentNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({caption:"Clear",title:"Clear FBTrace logs",module:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.initialize();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/firebug.js.gz b/tags/firebug1.3a3/build/firebug.js.gz
                                  deleted file mode 100644
                                  index 130e8a6a..00000000
                                  Binary files a/tags/firebug1.3a3/build/firebug.js.gz and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/build/firebug.js.jgz b/tags/firebug1.3a3/build/firebug.js.jgz
                                  deleted file mode 100644
                                  index aefb661f..00000000
                                  Binary files a/tags/firebug1.3a3/build/firebug.js.jgz and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/build/firebug.min.js b/tags/firebug1.3a3/build/firebug.min.js
                                  deleted file mode 100644
                                  index a224573e..00000000
                                  --- a/tags/firebug1.3a3/build/firebug.min.js
                                  +++ /dev/null
                                  @@ -1,2577 +0,0 @@
                                  -/*
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -var FBL={};
                                  -(function(){var reNotWhitespace=/[^\s]/;
                                  -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -var userAgent=navigator.userAgent;
                                  -this.isFirefox=userAgent.indexOf("Firefox")!=-1;
                                  -this.isOpera=userAgent.indexOf("Opera")!=-1;
                                  -this.isSafari=userAgent.indexOf("AppleWebKit")!=-1;
                                  -this.isIE=userAgent.indexOf("MSIE")!=-1;
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.isQuiksMode=document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -this.NS=null;
                                  -this.pixelsPerInch=null;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){var isChromeContext=typeof window.FirebugApplication=="object";
                                  -if(!isChromeContext){findLocation()
                                  -}FBTrace=FBL.FBTrace;
                                  -if(FBL.Application.isTraceMode){FBTrace.initialize()
                                  -}if(isChromeContext){FBL.Application=window.FirebugApplication;
                                  -FBL.Application.isChromeContext=true;
                                  -FBL.FirebugChrome=FBL.Application.FirebugChrome
                                  -}else{FBL.NS=document.documentElement.namespaceURI;
                                  -FBL.Application.browser=window;
                                  -FBL.Application.destroy=destroyApplication
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}if(!isChromeContext){FBL.Application.FirebugChrome=FBL.FirebugChrome
                                  -}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){var body=null;
                                  -if(body=document.getElementsByTagName("body")[0]){calculatePixelsPerInch(document,body);
                                  -onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","create application chrome")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Application.isPersistentMode&&FBL.Application.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Application.isDevelopmentMode){window.FirebugApplication.destroy();
                                  -if(FBL.isIE){window.FirebugApplication=null
                                  -}else{delete window.FirebugApplication
                                  -}}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -this.Application={openAtStartup:false,isBookmarletMode:false,isPersistentMode:false,isTraceMode:false,skin:"xp",isDevelopmentMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyApplication=function destroyApplication(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -this.Application.location={sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -if(script){file=reFirebugFile.exec(script.src)
                                  -}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
                                  -break
                                  -}}}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var rel=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var lastFolder=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(rel){var j=rel[1].length/3;
                                  -var p;
                                  -while(j-->0){path=lastFolder.exec(path)[1]
                                  -}path+=rel[2]
                                  -}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var App=FBL.Application;
                                  -var loc=App.location;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=loc.baseDir+"skin/"+App.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName;
                                  -if(fileName=="firebug.dev.js"){App.isDevelopmentMode=true
                                  -}if(fileOptions){if(fileOptions.indexOf("open")!=-1){App.openAtStartup=true
                                  -}if(fileOptions.indexOf("remote")!=-1){App.isBookmarletMode=true;
                                  -App.openAtStartup=true
                                  -}if(fileOptions.indexOf("trace")!=-1){App.isTraceMode=true
                                  -}if(fileOptions.indexOf("persist")!=-1){App.isPersistentMode=true
                                  -}}var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval(innerOptions)
                                  -}}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpPropreties("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
                                  -};
                                  -this.safeToString=function(ob){try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return"[an object with no toString() function]"
                                  -}};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML"
                                  -};
                                  -this.collapse=function(elt,collapsed){elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){node.innerHTML=""
                                  -};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&!this.hasClass(node,name)){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if(this.hasClass(elt,name)){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Application.browser.document;
                                  -var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(name!="document"){element.setAttribute(propname,properties[name])
                                  -}}return element
                                  -};
                                  -this.isLeftClick=function(event){return event.button==0&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return event.button==1&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return event.button==2&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return event.button==0&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return event.button==0&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}};
                                  -this.removeEvent=function(object,name,handler){if(document.all){object.detachEvent("on"+name,handler)
                                  -}else{object.removeEventListener(name,handler,false)
                                  -}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(document.all){e.cancelBubble=true
                                  -}else{e.stopPropagation()
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.addEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.addEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=FBL.Firebug.browser.document;
                                  -var frames=FBL.Firebug.browser.window.frames;
                                  -FBL.removeEvent(doc,name,handler);
                                  -if(FBL.Firebug.chrome.type=="popup"){FBL.removeEvent(FBL.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{FBL.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listeners.hasOwnProperty(prop)&&listener[name]){listener[name].apply(listener,args)
                                  -}}}}catch(exc){}};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){e.onselectstart=function(){return false
                                  -}
                                  -}else{e.onmousedown=function(){return false
                                  -}
                                  -}e.style.cursor="default"
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var s=Components.utils.Sandbox(originURL);
                                  -var jsonObject=null;
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(e){if(e.message.indexOf("is not defined")){var parts=e.message.split(" ");
                                  -s[parts[0]]=function(str){return str
                                  -};
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(ex){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isArrayLike=function(object){};
                                  -this.isFunction=function(object){return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=""+value){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{}};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=domMemberMap[name];
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(object instanceof Document||object instanceof XMLDocument){return domMemberCache.Document
                                  -}else{if(object instanceof Location){return domMemberCache.Location
                                  -}else{if(object instanceof HTMLImageElement){return domMemberCache.HTMLImageElement
                                  -}else{if(object instanceof HTMLAnchorElement){return domMemberCache.HTMLAnchorElement
                                  -}else{if(object instanceof HTMLInputElement){return domMemberCache.HTMLInputElement
                                  -}else{if(object instanceof HTMLButtonElement){return domMemberCache.HTMLButtonElement
                                  -}else{if(object instanceof HTMLFormElement){return domMemberCache.HTMLFormElement
                                  -}else{if(object instanceof HTMLBodyElement){return domMemberCache.HTMLBodyElement
                                  -}else{if(object instanceof HTMLHtmlElement){return domMemberCache.HTMLHtmlElement
                                  -}else{if(object instanceof HTMLScriptElement){return domMemberCache.HTMLScriptElement
                                  -}else{if(object instanceof HTMLTableElement){return domMemberCache.HTMLTableElement
                                  -}else{if(object instanceof HTMLTableRowElement){return domMemberCache.HTMLTableRowElement
                                  -}else{if(object instanceof HTMLTableCellElement){return domMemberCache.HTMLTableCellElement
                                  -}else{if(object instanceof HTMLIFrameElement){return domMemberCache.HTMLIFrameElement
                                  -}else{if(object instanceof SVGSVGElement){return domMemberCache.SVGSVGElement
                                  -}else{if(object instanceof SVGElement){return domMemberCache.SVGElement
                                  -}else{if(object instanceof Element){return domMemberCache.Element
                                  -}else{if(object instanceof Text||object instanceof CDATASection){return domMemberCache.Text
                                  -}else{if(object instanceof Attr){return domMemberCache.Attr
                                  -}else{if(object instanceof Node){return domMemberCache.Node
                                  -}else{if(object instanceof Event||object instanceof EventCopy){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap",]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1};
                                  -this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=options||{};
                                  -o.type=o.type&&o.type.toLowerCase()||"get";
                                  -o.async=o.async||true;
                                  -o.dataType=o.dataType||"text";
                                  -o.contentType=o.contentType||"application/x-www-form-urlencoded";
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.Ajax.initialize();
                                  -this.createCookie=function(name,value,days){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -};
                                  -this.readCookie=function(name){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}return null
                                  -};
                                  -this.eraseCookie=function(name){createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}};
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -body.appendChild(inch);
                                  -FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -body.removeChild(inch)
                                  -}
                                  -}).apply(FBL);
                                  -FBL.FBTrace={};
                                  -(function(){var e={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1};
                                  -this.messageQueue=[];
                                  -this.module=null;
                                  -this.initialize=function(){for(var h in e){this[h]=e[h]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(i,h){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(k){this.module=k;
                                  -var h=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var j=0;
                                  -j<h.length;
                                  -++j){this.writeMessage(h[j][0],h[j][1],h[j][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(o,m){var k=this.DBG_TIMESTAMP?[d()," | "]:[];
                                  -var n=o.length;
                                  -for(var j=0;
                                  -j<n;
                                  -++j){g(" ",k);
                                  -var h=o[j];
                                  -if(j==0){k.push("<b>");
                                  -g(h,k);
                                  -k.push("</b>")
                                  -}else{g(h,k)
                                  -}}return this.logRow(k,m)
                                  -};
                                  -this.logRow=function(j,i){var h=this.getPanel();
                                  -if(h&&h.contentNode){this.writeMessage(j,i)
                                  -}else{this.messageQueue.push([j,i])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(j,i){var h=this.getPanel().containerNode;
                                  -var k=h.scrollTop+h.offsetHeight>=h.scrollHeight;
                                  -this.writeRow.call(this,j,i);
                                  -if(k){h.scrollTop=h.scrollHeight-h.offsetHeight
                                  -}};
                                  -this.appendRow=function(i){var h=this.getPanel().contentNode;
                                  -h.appendChild(i)
                                  -};
                                  -this.writeRow=function(i,h){var j=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -j.className="logRow"+(h?" logRow-"+h:"");
                                  -j.innerHTML=i.join("");
                                  -this.appendRow(j)
                                  -};
                                  -function g(h,i){i.push(f(c(h)))
                                  -}function d(){var i=new Date();
                                  -var h=""+(i.getMilliseconds()/1000).toFixed(3);
                                  -h=h.substr(2);
                                  -return i.toLocaleTimeString()+"."+h
                                  -}var a={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function b(h){return a[h]
                                  -}function f(h){return(h+"").replace(/[<>&"']/g,b)
                                  -}function c(i){try{return i+""
                                  -}catch(h){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){FBL.cacheID="___FBL_";
                                  -FBL.documentCache={};
                                  -var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -FBL.Firebug={version:"Firebug Lite 1.3.0a2",revision:"$Revision: 4227 $",modules:modules,panelTypes:panelTypes,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Application.browser);
                                  -Firebug.context=Firebug.browser;
                                  -cacheDocument();
                                  -FirebugChrome.initialize()
                                  -},shutdown:function(){documentCache={};
                                  -dispatch(modules,"shutdown",[])
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){panelTypeMap[arguments[i].prototype.name]=arguments[i]
                                  -}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){defaultRep=rep;
                                  -defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof(object);
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}}};
                                  -if(!Application.isPersistentMode||Application.isPersistentMode&&Application.isChromeContext||Application.isDevelopmentMode){Application.browser.window.Firebug=FBL.Firebug
                                  -}var cacheDocument=function cacheDocument(){var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -el[cacheID]=i;
                                  -documentCache[i]=el
                                  -}};
                                  -Firebug.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -Firebug.Module={initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}};
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasSidePanel:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,panelHTML:"",panelCSS:"",toolButtonsHTML:""},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,panelBar:null,commandLine:null,toolButtons:null,statusBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -if(options.isPreRendered){this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasSidePanel){}}else{var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
                                  -$("fbPanel1").appendChild(panelNode);
                                  -var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
                                  -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
                                  -if(isIE6){tabNode.href="javascript:void(0)"
                                  -}$("fbPanelBar1").appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
                                  -$("fbToolbarButtons").appendChild(this.toolButtonsNode)
                                  -}}var contentNode=this.contentNode=createElement("div");
                                  -this.panelNode.appendChild(contentNode);
                                  -this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(this.panelNode){delete this.panelNode.ownerPanel
                                  -}this.destroyNode()
                                  -},initialize:function(){var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode
                                  -},shutdown:function(){},detach:function(oldChrome,newChrome){},reattach:function(doc){},show:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -Firebug.chrome.layout(this)
                                  -},hide:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none"
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},refresh:function(){},startInspecting:function(){},stopInspecting:function(object,cancelled){},search:function(text){}};
                                  -Firebug.PanelBar={selectedPanel:null,create:function(){this.panelMap={}
                                  -},initialize:function(){for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){},addPanel:function(panelName,parentPanel){var PanelType=panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -panel.shutdown()
                                  -}if(!panel.parentPanel){FirebugChrome.selectedPanel=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.initialize();
                                  -panel.show()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -},getSelectedPanel:function(){return this.selectedPanel
                                  -}};
                                  -Firebug.Button=function(options){options=options||{};
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -this.type=options.type||"normal";
                                  -this.onClick=options.onClick;
                                  -this.onPress=options.onPress;
                                  -this.onUnpress=options.onUnpress;
                                  -if(options.node){this.node=options.node;
                                  -this.owner=options.owner;
                                  -this.container=this.node.parentNode
                                  -}else{var caption=options.caption||"caption";
                                  -var title=options.title||"title";
                                  -this.owner=this.module=options.module;
                                  -this.panel=options.panel||this.module.getPanel();
                                  -this.container=this.panel.toolButtonsNode;
                                  -this.node=createElement("a",{className:"fbHover",title:title,innerHTML:caption});
                                  -this.container.appendChild(this.node)
                                  -}};
                                  -Firebug.Button.prototype=extend(Firebug.Controller,{type:null,node:null,owner:null,module:null,panel:null,container:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -this.container.removeChild(this.node)
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var node=this.node;
                                  -this.addController([node,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([node,"mouseup",this.handleUnpress],[node,"mouseout",this.handleUnpress],[node,"click",this.handleClick])
                                  -}},shutdown:function(){Firebug.Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.node,"fbBtnPressed")
                                  -}else{if(display=="unpressed"){removeClass(this.node,"fbBtnPressed")
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner)
                                  -}}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -},addButton:function(caption,title,handler){},removeAllButtons:function(){}});
                                  -function StatusBar(){}StatusBar.prototype=extend(Firebug.Controller,{});
                                  -function PanelOptions(){}PanelOptions.prototype=extend(Firebug.Controller,{})
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=object[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=node[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'" id="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")
                                  -}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={evaluate:function(expr,context,api,errorHandler){context=context||"window";
                                  -var cmd=api?"(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)":"(function(arguments){ return "+expr+" }).call("+context+",undefined)";
                                  -var r=this.eval(cmd);
                                  -if(r&&r[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
                                  -r=this.eval(cmd);
                                  -if(r&&r[evalError]){if(errorHandler){r=errorHandler(r.message||r)
                                  -}else{r=r.message||r
                                  -}}}return r
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}else{if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(isOpera||isSafari){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getCSS(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}}if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getMeasurementBox:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -if(isIE){var propName,cssValue;
                                  -var autoMargin=null;
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){propName=name+sufix;
                                  -cssValue=el.currentStyle[propName]||el.style[propName];
                                  -if(cssValue=="auto"){autoMargin=autoMargin||this.getCSSAutoMarginBox(el);
                                  -result[i]=autoMargin[sufix.toLowerCase()]
                                  -}else{result[i]=this.getMeasurementInPixels(el,propName)
                                  -}}}else{for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
                                  -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getCSSAutoMarginBox:function(el){if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0}
                                  -}var offsetTop=0;
                                  -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -offsetTop=scrollSize.height
                                  -}var box=document.createElement("div");
                                  -box.style.cssText="margin:0; padding:1px; border: 0;";
                                  -var clone=el.cloneNode(false);
                                  -var text=document.createTextNode("&nbsp;");
                                  -clone.appendChild(text);
                                  -box.appendChild(clone);
                                  -document.body.appendChild(box);
                                  -var marginTop=clone.offsetTop-box.offsetTop-1;
                                  -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
                                  -var marginLeft=clone.offsetLeft-box.offsetLeft-1;
                                  -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
                                  -document.body.removeChild(box);
                                  -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getCSS:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}};
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.chromeMap={};
                                  -FBL.FirebugChrome={commandLineVisible:true,sidePanelVisible:false,sidePanelWidth:300,selectedPanel:"Console",height:250,isOpen:false,create:function(){Firebug.Inspector.create();
                                  -createChrome({onLoad:onChromeLoad})
                                  -},initialize:function(){if(Application.chrome.type=="frame"){ChromeMini.create(Application.chrome)
                                  -}if(Application.browser.document.documentElement.getAttribute("debug")=="true"){Application.openAtStartup=true
                                  -}var chrome=Firebug.chrome=new Chrome(Application.chrome);
                                  -chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onPressF12);
                                  -if(Application.isPersistentMode&&chrome.type=="popup"){chrome.initialize()
                                  -}}};
                                  -var ChromeDefaultOptions={type:"frame",id:"FirebugChrome",height:250};
                                  -var createChrome=function(options){options=options||{};
                                  -options=extend(ChromeDefaultOptions,options);
                                  -var context=options.context||Application.browser;
                                  -var onLoad=options.onLoad;
                                  -var chrome={};
                                  -chrome.type=options.type;
                                  -var isChromeFrame=chrome.type=="frame";
                                  -var isBookmarletMode=Application.isBookmarletMode;
                                  -var url=isBookmarletMode?"about:blank":Application.location.skin;
                                  -if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
                                  -node.setAttribute("id",options.id);
                                  -node.setAttribute("frameBorder","0");
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=options.height+"px";
                                  -if(isFirefox){node.style.display="none"
                                  -}if(!isBookmarletMode){node.setAttribute("src",Application.location.skin)
                                  -}context.document.getElementsByTagName("body")[0].appendChild(node)
                                  -}else{var height=FirebugChrome.height||options.height;
                                  -var options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join("");
                                  -var node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}if(isBookmarletMode){var tpl=getChromeTemplate(!isChromeFrame);
                                  -var doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win;
                                  -var waitDelay=!isBookmarletMode?isChromeFrame?200:300:100;
                                  -var waitForChrome=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -if(onLoad){onLoad(chrome)
                                  -}}else{setTimeout(waitForChrome,waitDelay)
                                  -}};
                                  -waitForChrome()
                                  -};
                                  -var onChromeLoad=function onChromeLoad(chrome){Application.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome loaded")
                                  -}if(Application.isPersistentMode){chrome.window.FirebugApplication=Application;
                                  -if(Application.isDevelopmentMode){Application.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Application.location.app;
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},0)
                                  -}else{if(chrome.type=="popup"){var frame=chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}FirebugChrome.commandLineVisible=true;
                                  -FirebugChrome.sidePanelVisible=false;
                                  -var newChrome=new Chrome(chrome);
                                  -newChrome.reattach(chromeMap.frame,newChrome)
                                  -}}}};
                                  -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.injected;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]=(isIE6&&tpl.IE6CSS)?tpl.IE6CSS:"";
                                  -r[++i]="</style>";
                                  -r[++i]="</head><body class="+(isPopup?'"FirebugPopup"':"")+">";
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,chrome);
                                  -append(this,Base);
                                  -chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase=extend(Firebug.Controller,Firebug.PanelBar);
                                  -var ChromeBase=extend(ChromeBase,{create:function(){Firebug.PanelBar.create.apply(this);
                                  -var panelMap=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panelMap[i];
                                  -i++){if(!p.parentPanel){this.addPanel(p.prototype.name)
                                  -}}this.inspectButton=new Firebug.Button({type:"toggle",node:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -},destroy:function(){this.shutdown()
                                  -},initialize:function(){Firebug.Console.flush();
                                  -if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome")
                                  -}Firebug.Controller.initialize.apply(this);
                                  -Firebug.PanelBar.initialize.apply(this);
                                  -fbTop=$("fbTop");
                                  -fbContent=$("fbContent");
                                  -fbContentStyle=fbContent.style;
                                  -fbBottom=$("fbBottom");
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbToolbar=$("fbToolbar");
                                  -fbPanelBox1=$("fbPanelBox1");
                                  -fbPanelBox1Style=fbPanelBox1.style;
                                  -fbPanelBox2=$("fbPanelBox2");
                                  -fbPanelBox2Style=fbPanelBox2.style;
                                  -fbPanelBar2Box=$("fbPanelBar2Box");
                                  -fbPanelBar2BoxStyle=fbPanelBar2Box.style;
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbVSplitterStyle=fbVSplitter.style;
                                  -fbPanel1=$("fbPanel1");
                                  -fbPanel1Style=fbPanel1.style;
                                  -fbPanel2=$("fbPanel2");
                                  -fbConsole=$("fbConsole");
                                  -fbConsoleStyle=fbConsole.style;
                                  -fbHTML=$("fbHTML");
                                  -fbCommandLine=$("fbCommandLine");
                                  -topHeight=fbTop.offsetHeight;
                                  -topPartialHeight=fbToolbar.offsetHeight;
                                  -disableTextSelection($("fbToolbar"));
                                  -disableTextSelection($("fbPanelBarBox"));
                                  -commandLine=new Firebug.CommandLine(fbCommandLine);
                                  -if(isIE){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}this.inspectButton.initialize();
                                  -addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -var self=this;
                                  -setTimeout(function(){self.selectPanel(FirebugChrome.selectedPanel)
                                  -},0)
                                  -},shutdown:function(){this.inspectButton.shutdown();
                                  -removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent(fbContent,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -fbTop=null;
                                  -fbContent=null;
                                  -fbContentStyle=null;
                                  -fbBottom=null;
                                  -fbBtnInspect=null;
                                  -fbToolbar=null;
                                  -fbPanelBox1=null;
                                  -fbPanelBox1Style=null;
                                  -fbPanelBox2=null;
                                  -fbPanelBox2Style=null;
                                  -fbPanelBar2Box=null;
                                  -fbPanelBar2BoxStyle=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbVSplitterStyle=null;
                                  -fbPanel1=null;
                                  -fbPanel1Style=null;
                                  -fbPanel2=null;
                                  -fbConsole=null;
                                  -fbConsoleStyle=null;
                                  -fbHTML=null;
                                  -fbCommandLine=null;
                                  -topHeight=null;
                                  -topPartialHeight=null;
                                  -Firebug.Controller.shutdown.apply(this);
                                  -Firebug.PanelBar.shutdown.apply(this);
                                  -commandLine.destroy()
                                  -},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=chromeMap.frame;
                                  -frame.reattach();
                                  -chromeMap.popup=null;
                                  -frame.open();
                                  -return
                                  -}if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!FirebugChrome.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!chromeMap.popup){createChrome({type:"popup",onLoad:onChromeLoad})
                                  -}},reattach:function(oldChrome,newChrome){var newPanelMap=newChrome.panelMap;
                                  -var oldPanelMap=oldChrome.panelMap;
                                  -for(var name in newPanelMap){newPanelMap[name].contentNode.innerHTML=oldPanelMap[name].contentNode.innerHTML
                                  -}Firebug.chrome=newChrome;
                                  -if(newChrome.type=="popup"){newChrome.initialize();
                                  -dispatch(Firebug.modules,"initialize",[])
                                  -}dispatch(Firebug.chrome.panelMap,"reattach",[oldChrome,newChrome])
                                  -},draw:function(){var size=Firebug.chrome.getWindowSize();
                                  -var chromeHeight=size.height;
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var y=Math.max(chromeHeight,topHeight);
                                  -fbPanel1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -fbPanelBox1Style.height=Math.max(y-fixedHeight,0)+"px";
                                  -if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
                                  -}else{if(isFirefox){fbContentStyle.maxHeight=Math.max(y-fixedHeight,0)+"px"
                                  -}}var chromeWidth=size.width;
                                  -var sideWidth=FirebugChrome.sidePanelVisible?FirebugChrome.sidePanelWidth:0;
                                  -fbPanelBox1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -fbPanel1Style.width=Math.max(chromeWidth-sideWidth,0)+"px";
                                  -if(FirebugChrome.sidePanelVisible){fbPanelBox2Style.width=sideWidth+"px";
                                  -fbPanelBar2BoxStyle.width=Math.max(sideWidth,0)+"px";
                                  -fbVSplitterStyle.right=Math.max(sideWidth-6,0)+"px"
                                  -}},resize:function(){var self=this;
                                  -setTimeout(function(){self.draw();
                                  -if(noFixedPosition&&self.type=="frame"){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(options.hasSidePanel);
                                  -Firebug.chrome.draw()
                                  -}});
                                  -var ChromeContext=extend(ChromeBase,Context.prototype);
                                  -var ChromeFrameBase=extend(ChromeContext,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Application.openAtStartup){this.open()
                                  -}else{FirebugChrome.isOpen=true;
                                  -this.close()
                                  -}},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[Firebug.browser.window,"unload",this.destroy],[$("fbChrome_btClose"),"click",this.close],[$("fbChrome_btDetach"),"click",this.detach]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown;
                                  -fbHSplitter.onmousedown=onHSplitterMouseDown;
                                  -this.isInitialized=true
                                  -},shutdown:function(){fbVSplitter.onmousedown=null;
                                  -fbHSplitter.onmousedown=null;
                                  -ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},reattach:function(){var frame=chromeMap.frame;
                                  -FBL.FirebugChrome.commandLineVisible=this.commandLineVisible;
                                  -FBL.FirebugChrome.sidePanelVisible=this.sidePanelVisible;
                                  -ChromeBase.reattach(chromeMap.popup,this)
                                  -},open:function(){if(!FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="block";
                                  -FirebugChrome.isOpen=true;
                                  -var self=this;
                                  -setTimeout(function(){dispatch(Firebug.modules,"initialize",[]);
                                  -self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}self.draw();
                                  -node.style.visibility="visible"
                                  -},10)
                                  -}},close:function(){if(FirebugChrome.isOpen){var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(this.isInitialized){dispatch(Firebug.modules,"shutdown",[]);
                                  -this.shutdown()
                                  -}var main=$("fbChrome");
                                  -main.style.display="none";
                                  -FirebugChrome.isOpen=false;
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if(this.type=="frame"&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}}});
                                  -var ChromeMini=extend(Firebug.Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Firebug.Controller.initialize.apply(this);
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon");
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors");
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -node.setAttribute("allowTransparency","true");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="transparent";
                                  -this.addController([$("fbMiniIcon"),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=FirebugChrome.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -node.setAttribute("allowTransparency","false");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="#fff";
                                  -var mini=$("fbMiniChrome");
                                  -mini.style.display="none";
                                  -Firebug.Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeContext,{initialize:function(){this.document.body.className="FirebugPopup";
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy],[Firebug.browser.window,"unload",this.close]);
                                  -fbVSplitter.onmousedown=onVSplitterMouseDown
                                  -},destroy:function(){var frame=chromeMap.frame;
                                  -frame.reattach();
                                  -ChromeBase.destroy.apply(this);
                                  -chromeMap.popup=null;
                                  -this.node.close()
                                  -},close:function(){this.destroy()
                                  -}});
                                  -var commandLine=null;
                                  -var fbTop=null;
                                  -var fbContent=null;
                                  -var fbContentStyle=null;
                                  -var fbBottom=null;
                                  -var fbBtnInspect=null;
                                  -var fbToolbar=null;
                                  -var fbPanelBox1=null;
                                  -var fbPanelBox1Style=null;
                                  -var fbPanelBox2=null;
                                  -var fbPanelBox2Style=null;
                                  -var fbPanelBar2Box=null;
                                  -var fbPanelBar2BoxStyle=null;
                                  -var fbHSplitter=null;
                                  -var fbVSplitter=null;
                                  -var fbVSplitterStyle=null;
                                  -var fbPanel1=null;
                                  -var fbPanel1Style=null;
                                  -var fbPanel2=null;
                                  -var fbConsole=null;
                                  -var fbConsoleStyle=null;
                                  -var fbHTML=null;
                                  -var fbCommandLine=null;
                                  -var topHeight=null;
                                  -var topPartialHeight=null;
                                  -var chromeRedrawSkipRate=isIE?30:isOpera?80:75;
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=FirebugChrome.commandLineVisible;
                                  -Firebug.chrome.commandLineVisible=FirebugChrome.commandLineVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.commandLineVisible;
                                  -if(FirebugChrome.commandLineVisible!=last){fbBottom.className=FirebugChrome.commandLineVisible?"":"hide"
                                  -}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=FirebugChrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=FirebugChrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!FirebugChrome.sidePanelVisible;
                                  -if(FirebugChrome.sidePanelVisible!=last){fbPanelBox2.className=FirebugChrome.sidePanelVisible?"":"hide";
                                  -fbPanelBar2Box.className=FirebugChrome.sidePanelVisible?"":"hide"
                                  -}};
                                  -var onPressF12=function onPressF12(event){if(event.keyCode==123&&(!isFirefox&&!event.shiftKey||event.shiftKey&&isFirefox)){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var lastHSplitterMouseMove=0;
                                  -var onHSplitterMouseMoveBuffer=null;
                                  -var onHSplitterMouseMoveTimer=null;
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugChrome"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=FirebugChrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -FirebugChrome.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -fbHSplitter.className="";
                                  -Firebug.chrome.draw()
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var lastVSplitterMouseMove=0;
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getWindowSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -FirebugChrome.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.injected={CSS:'.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ConsoleAPI={firebuglite:Firebug.version,log:function(){return Firebug.Console.logFormatted(arguments,"")
                                  -},debug:function(){return Firebug.Console.logFormatted(arguments,"debug")
                                  -},info:function(){return Firebug.Console.logFormatted(arguments,"info")
                                  -},warn:function(){return Firebug.Console.logFormatted(arguments,"warning")
                                  -},error:function(){return Firebug.Console.logFormatted(arguments,"error")
                                  -},assert:function(truth,message){if(!truth){var args=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -++i){args.push(arguments[i])
                                  -}Firebug.Console.logFormatted(args.length?args:["Assertion Failure"],"error");
                                  -throw message?message:"Assertion Failure"
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},dir:function(object){var html=[];
                                  -var pairs=[];
                                  -for(var name in object){try{pairs.push([name,object[name]])
                                  -}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1
                                  -});
                                  -html.push('<div class="log-object">');
                                  -for(var i=0;
                                  -i<pairs.length;
                                  -++i){var name=pairs[i][0],value=pairs[i][1];
                                  -html.push('<div class="property">','<div class="propertyValueCell"><span class="propertyValue">');
                                  -Firebug.Reps.appendObject(value,html);
                                  -html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></div>");
                                  -html.push("</div>")
                                  -}html.push("</div>");
                                  -return Firebug.Console.logRow(html,"dir")
                                  -},dirxml:function(node){var html=[];
                                  -Firebug.Reps.appendNode(node,html);
                                  -return Firebug.Console.logRow(html,"dirxml")
                                  -},group:function(){return Firebug.Console.logRow(arguments,"group",Firebug.Console.pushGroup)
                                  -},groupEnd:function(){return Firebug.Console.logRow(arguments,"",Firebug.Console.popGroup)
                                  -},time:function(name){this.timeMap[name]=(new Date()).getTime();
                                  -return Firebug.Console.LOG_COMMAND
                                  -},timeEnd:function(name){if(name in this.timeMap){var delta=(new Date()).getTime()-this.timeMap[name];
                                  -Firebug.Console.logFormatted([name+":",delta+"ms"]);
                                  -delete this.timeMap[name]
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},count:function(){return this.warn(["count() not supported."])
                                  -},trace:function(){return this.warn(["trace() not supported."])
                                  -},profile:function(){return this.warn(["profile() not supported."])
                                  -},profileEnd:function(){return Firebug.Console.LOG_COMMAND
                                  -},clear:function(){Firebug.Console.getPanel().contentNode.innerHTML="";
                                  -return Firebug.Console.LOG_COMMAND
                                  -},open:function(){toggleConsole(true);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},close:function(){if(frameVisible){toggleConsole()
                                  -}return Firebug.Console.LOG_COMMAND
                                  -}};
                                  -var ConsoleModule=extend(Firebug.Module,ConsoleAPI);
                                  -Firebug.Console=extend(ConsoleModule,{LOG_COMMAND:{},messageQueue:[],groupStack:[],timeMap:{},getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -},flush:function(){var queue=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}},logFormatted:function(objects,className){var html=[];
                                  -var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}var parts=this.parseFormat(format);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -part.appender(object,html)
                                  -}else{Firebug.Reps.appendText(part,html)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){Firebug.Reps.appendText(" ",html);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){Firebug.Reps.appendText(object,html)
                                  -}else{Firebug.Reps.appendObject(object,html)
                                  -}}return this.logRow(html,className)
                                  -},parseFormat:function(format){var parts=[];
                                  -var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -var Reps=Firebug.Reps;
                                  -var appenderMap={s:Reps.appendText,d:Reps.appendInteger,i:Reps.appendInteger,f:Reps.appendFloat};
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){var type=m[8]?m[8]:m[5];
                                  -var appender=type in appenderMap?appenderMap[type]:Reps.appendObject;
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({appender:appender,precision:precision});
                                  -format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -},logRow:function(message,className,handler){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className,handler)
                                  -}else{this.messageQueue.push([message,className,handler])
                                  -}return this.LOG_COMMAND
                                  -},writeMessage:function(message,className,handler){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -if(!handler){handler=this.writeRow
                                  -}handler.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}},appendRow:function(row){if(this.groupStack.length>0){var container=this.groupStack[this.groupStack.length-1]
                                  -}else{var container=this.getPanel().contentNode
                                  -}container.appendChild(row)
                                  -},writeRow:function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -},pushGroup:function(message,className){this.logFormatted(message,className);
                                  -var groupRow=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRow.className="logGroup";
                                  -var groupRowBox=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRowBox.className="logGroupBox";
                                  -groupRow.appendChild(groupRowBox);
                                  -this.appendRow(groupRowBox);
                                  -this.groupStack.push(groupRowBox)
                                  -},popGroup:function(){this.groupStack.pop()
                                  -}});
                                  -Firebug.registerModule(Firebug.Console);
                                  -function ConsolePanel(){}ConsolePanel.prototype=extend(Firebug.Panel,{name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({node:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(ConsolePanel);
                                  -FBL.onError=function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.logRow(html,"error")
                                  -};
                                  -if(!isFirefox){Application.browser.window.console=ConsoleAPI
                                  -}}});
                                  -FBL.ns(function(){with(FBL){
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,done=0,toString=Object.prototype.toString,hasDuplicate=false;
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context);
                                  -chunker.lastIndex=0;
                                  -while((m=chunker.exec(selector))!==null){parts.push(m[1]);
                                  -if(m[2]){extra=RegExp.rightContext;
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=false;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.match[type].exec(expr))){var left=RegExp.leftContext;
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!part.match(/\W/)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if(match[3].match(chunker).length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.selectNode(a);
                                  -aRange.collapse(true);
                                  -bRange.selectNode(b);
                                  -bRange.collapse(true);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Inspector={create:function(){offlineFragment=Application.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},destroy:function(){destroyBoxModelInspector();
                                  -destroyOutlineInspector();
                                  -offlineFragment=null
                                  -},startInspecting:function(){Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugChrome"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){var border=2;
                                  -var scrollbarSize=17;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(scrollSize.height>windowSize.height?scrollbarSize:0);
                                  -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(scrollSize.width>windowSize.width?scrollbarSize:0);
                                  -var numVerticalBorders=freeVerticalSpace>0?2:1;
                                  -var o=outlineElements;
                                  -var style;
                                  -style=o.fbOutlineT.style;
                                  -style.top=top-border+"px";
                                  -style.left=left+"px";
                                  -style.height=border+"px";
                                  -style.width=width+"px";
                                  -style=o.fbOutlineL.style;
                                  -style.top=top-border+"px";
                                  -style.left=left-border+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=border+"px";
                                  -style=o.fbOutlineB.style;
                                  -if(freeVerticalSpace>0){style.top=top+height+"px";
                                  -style.left=left+"px";
                                  -style.width=width+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.width=border+"px"
                                  -}style=o.fbOutlineR.style;
                                  -if(freeHorizontalSpace>0){style.top=top-border+"px";
                                  -style.left=left+width+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.height=border+"px";
                                  -style.width=border+"px"
                                  -}if(!outlineVisible){this.showOutline()
                                  -}},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}if(boxModelVisible){this.hideBoxModel()
                                  -}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){var box=Firebug.browser.getElementBox(el);
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var offsetHeight=Firebug.chrome.type=="frame"?FirebugChrome.height:0;
                                  -if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return
                                  -}var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxPaddingStyle.top=margin.top+"px";
                                  -boxPaddingStyle.left=margin.left+"px";
                                  -boxPaddingStyle.height=height+"px";
                                  -boxPaddingStyle.width=width+"px";
                                  -boxContentStyle.top=margin.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+padding.left+"px";
                                  -boxContentStyle.height=height-padding.top-padding.bottom+"px";
                                  -boxContentStyle.width=width-padding.left-padding.right+"px";
                                  -if(!boxModelVisible){this.showBoxModel()
                                  -}},hideBoxModel:function(){if(!boxModelVisible){return
                                  -}offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -},showBoxModel:function(){if(boxModelVisible){return
                                  -}if(outlineVisible){this.hideOutline()
                                  -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Application.location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelStyle=inspectStyle+"opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var getInspectingTarget=function(){};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function createInspectorFrame(){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame)
                                  -};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
                                  -el.id=name;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
                                  -el.parentNode.removeChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=createGlobalElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxPadding=createGlobalElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=createGlobalElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -};
                                  -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var Console=Firebug.Console;
                                  -Firebug.CommandLine=function(element){this.element=element;
                                  -if(isOpera){fixOperaTabKey(this.element)
                                  -}this.clear=bind(this.clear,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -addEvent(this.element,"keydown",this.onKeyDown);
                                  -var self=this;
                                  -Application.browser.onerror=function(){self.onError.apply(self,arguments)
                                  -};
                                  -window.onerror=this.onError;
                                  -initializeCommandLineAPI()
                                  -};
                                  -Firebug.CommandLine.prototype={element:null,_buffer:[],_bi:-1,_completing:null,_completePrefix:null,_completeExpr:null,_completeBuffer:null,_ci:null,_completion:{window:["console"],document:["getElementById","getElementsByTagName"]},_stack:function(command){this._buffer.push(command);
                                  -this._bi=this._buffer.length
                                  -},initialize:function(doc){},destroy:function(){removeEvent(this.element,"keydown",this.onKeyDown);
                                  -window.onerror=null;
                                  -this.element=null
                                  -},execute:function(){var cmd=this.element;
                                  -var command=cmd.value;
                                  -this._stack(command);
                                  -Firebug.Console.writeMessage(["<span>&gt;&gt;&gt;</span> ",escapeHTML(command)],"command");
                                  -try{var result=this.evaluate(command);
                                  -if(result!=Console.LOG_COMMAND){var html=[];
                                  -Firebug.Reps.appendObject(result,html);
                                  -Firebug.Console.writeMessage(html,"command")
                                  -}}catch(e){Firebug.Console.writeMessage([e.message||e],"error")
                                  -}cmd.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -return Firebug.context.evaluate(expr,"window",api,Console.error)
                                  -},prevCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -if(this._bi>0&&buffer.length>0){cmd.value=buffer[--this._bi]
                                  -}},nextCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -var limit=buffer.length-1;
                                  -var i=this._bi;
                                  -if(i<limit){cmd.value=buffer[++this._bi]
                                  -}else{if(i==limit){++this._bi;
                                  -cmd.value=""
                                  -}}},autocomplete:function(reverse){var cmd=this.element;
                                  -var command=cmd.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!this._completing){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}this._completing=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){this._completePrefix=prefix;
                                  -this._completeExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -this._ci=-1;
                                  -buffer=this._completeBuffer=isIE?this._completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=this._completeBuffer
                                  -}if(buffer){prefix=this._completePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=this._ci+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){this._ci=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){cmd.value=this._completeExpr+result
                                  -}},onError:function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.writeRow(html,"error")
                                  -},clear:function(){this.element.value=""
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){this._completing=false
                                  -}if(code==13){this.execute()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -}};
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector(selector,context)
                                  -},dir:Firebug.Console.dir,dirxml:Firebug.Console.dirxml};
                                  -Firebug.CommandLine.API={};
                                  -var initializeCommandLineAPI=function initializeCommandLineAPI(){for(var m in CommandLineAPI){if(!Firebug.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){var uid=node[cacheID];
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=node.style.visibility!="hidden"&&node.style.display!="none";
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -var isIE=false;
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}html.push('&nbsp;<span class="nodeName">',attr.nodeName.toLowerCase(),'</span>=&quot;<span class="nodeValue">',escapeHTML(attr.nodeValue),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(document.all){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',s.join(""),'</div><pre class="nodeCode">',escapeHTML(src),"</pre>","</div></div>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
                                  -var uid=treeNode.id;
                                  -var parentNode=documentCache[uid];
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id)
                                  -},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=documentCache[id].parentNode;
                                  -if(node&&typeof node[cacheID]!="undefined"){id=""+node[cacheID]
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id);
                                  -if(stack.length>0&&documentCache[id].childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -if(Application.isPersistentMode||Firebug.chrome.type!="popup"){this.createUI()
                                  -}},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -var d=this.contentNode;
                                  -d.innerHTML=html.join("");
                                  -this.panelNode.appendChild(d)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=$("fbPanel1")
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},reattach:function(){if(FirebugChrome.selectedElement){Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement)
                                  -}}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -FirebugChrome.selectedElement=e.id
                                  -}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
                                  -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){var input=FBL.Firebug.chrome.document.getElementById("treeInput");
                                  -input.style.display="block";
                                  -input.style.left=targ.offsetLeft+"px";
                                  -input.style.top=FBL.topHeight+targ.offsetTop-FBL.fbPanel1.scrollTop+"px";
                                  -input.style.width=targ.offsetWidth+6+"px";
                                  -input.value=targ.textContent||targ.innerText;
                                  -input.focus()
                                  -}}};
                                  -var OLD_chromeLoad=function OLD_chromeLoad(doc){var rootNode=document.documentElement;
                                  -addEvent(fbConsole,"mousemove",onListMouseMove);
                                  -addEvent(fbConsole,"mouseout",onListMouseOut);
                                  -addEvent(fbHTML,"click",Firebug.HTML.onTreeClick);
                                  -addEvent(fbHTML,"mousemove",onListMouseMove);
                                  -addEvent(fbHTML,"mouseout",onListMouseOut)
                                  -};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[FBL.cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[FBL.cacheID];
                                  -if(!uid){return
                                  -}var el=FBL.documentCache[uid.value];
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugChrome"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){if(!Application.isTraceMode){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().contentNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Firebug.Button({caption:"Clear",title:"Clear FBTrace logs",module:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.initialize();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/build/firebug.min.js.gz b/tags/firebug1.3a3/build/firebug.min.js.gz
                                  deleted file mode 100644
                                  index 5fbb0152..00000000
                                  Binary files a/tags/firebug1.3a3/build/firebug.min.js.gz and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/content/bookmarlet.txt b/tags/firebug1.3a3/content/bookmarlet.txt
                                  deleted file mode 100644
                                  index e36531ab..00000000
                                  --- a/tags/firebug1.3a3/content/bookmarlet.txt
                                  +++ /dev/null
                                  @@ -1,132 +0,0 @@
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL (sequencial)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('script');
                                  -L.id='FirebugLite';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://firebug.local:8740/firebug1.3/build/firebug.full.js#remote');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBLite (parallel)
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -F.getElementsByTagName('head')[0].appendChild(g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -
                                  -r='getElementsByTagName';
                                  -e='appendChild';
                                  -
                                  -F[r]('head')[0][e](g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -
                                  -g=F[i]('div');
                                  -g.id='FBLI';
                                  -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -g.innerHTML='Loading...';
                                  -F[r]('body')[0][e](g);
                                  -
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -//        F,B,u,g,L,i,t,e
                                  -//        F,i,r,e,b,u,g,
                                  -(function(F,B,L,i,t,e){
                                  -if(F.getElementById('FBLS'))return;
                                  -
                                  -e=F[B]('div');
                                  -e.id='FBLI';
                                  -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F[B]('script');
                                  -e.id='FBLS';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL* (sequencial with loading indicator)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('div');
                                  -L.id='FBLI';
                                  -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;';
                                  -L.innerHTML='Loading ...';
                                  -F.body.appendChild(L);
                                  -
                                  -L=F.createElement('script');
                                  -L.id='FBLS';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// experimental bookmarlet
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -
                                  -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat';
                                  -t=i?'absolute':'fixed';
                                  -
                                  -e=F.createElement('div');
                                  -e.id='FirebugLoadIndicator';
                                  -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading Firebug Lite...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F.createElement('script');
                                  -e.src=L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -        
                                  -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -//*************************************************************************************************
                                  diff --git a/tags/firebug1.3a3/content/changelog.txt b/tags/firebug1.3a3/content/changelog.txt
                                  deleted file mode 100644
                                  index b03d9592..00000000
                                  --- a/tags/firebug1.3a3/content/changelog.txt
                                  +++ /dev/null
                                  @@ -1,213 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0a3
                                  -###################################################################################################
                                  -
                                  -Core
                                  -    Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    Find location
                                  -
                                  -Chrome
                                  -    XML+XSL and XHTML support
                                  -    Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    Fixed problem with Chrome synchronization in Opera
                                  -    Fixed weird bug in layout in IE
                                  -
                                  -Inspector
                                  -    auto margin
                                  -    pointsToPixels
                                  -    pixelsPerInch
                                  -    Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  -Bookmarlet
                                  -    More robust and maintainable bookmarlet
                                  -
                                  -Domplate
                                  -
                                  -Reps
                                  -
                                  -Persist
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -DONE: Inspect function implemented.
                                  -
                                  -DONE: onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -FIXED: Problem with scope in event handlers. All functions that need to access
                                  -       the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -FIXED: Revised "extend" and "append" functions
                                  -
                                  -FIXED: problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -FIXED: CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -FIXED: Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -       working in all cases. 
                                  -
                                  -FIXED: Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -       while) wasn't being properly executed.
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -FIXED: Opera problem with the TAB key in commandLine
                                  -
                                  -FIXED: Better handling of the F12 key press, which wasn't being properly
                                  -       attached to the Chrome Frame window.
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -FIXED: Problem with multiple iframes and the resizing of the Chrome, that
                                  -       tries to add events on them.
                                  -
                                  -FIXED: Fixed problem in IE when resizing the Chrome, when the relative position
                                  -       of the mouse wasnt being computed in all frames of the document, 
                                  -       resulting in strange flickerings when resizing it.
                                  -
                                  -FIXED: Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -FIXED: Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -FIXED: fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -FIXED: isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -FIXED: Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -FIXED: BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -FIXED: better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug.dev.js b/tags/firebug1.3a3/content/firebug.dev.js
                                  deleted file mode 100644
                                  index 07bb607e..00000000
                                  --- a/tags/firebug1.3a3/content/firebug.dev.js
                                  +++ /dev/null
                                  @@ -1,306 +0,0 @@
                                  -(function(){
                                  -
                                  -var bookmarletMode = true;
                                  -var bookmarletURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/";
                                  -var bookmarletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/";
                                  -
                                  -window.FBDev =
                                  -{
                                  -    modules:
                                  -    [ 
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Core
                                  -        "firebug/lib.js",
                                  -        "firebug/trace.js",
                                  -        "firebug/firebug.js",
                                  -        //"firebug/domplate.js", // not used yet
                                  -        "firebug/reps.js",
                                  -        //"firebug/reps2.js",  // experimental
                                  -        "firebug/context.js",
                                  -        "firebug/chrome.js",
                                  -        "firebug/chrome.injected2.js",
                                  -        "firebug/console.js",
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Classes
                                  -        "firebug/selector.js",
                                  -        "firebug/inspector.js",
                                  -        "firebug/commandLine.js",
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Panels
                                  -        "firebug/html.js",
                                  -        //"firebug/html2.js", // too experimental
                                  -        
                                  -        //"firebug/dom.js", // experimental
                                  -        
                                  -        "firebug/tracePanel.js",
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Bootstrap
                                  -        "firebug/boot.js"
                                  -        /**/
                                  -    ],
                                  -    
                                  -    loadChromeApplication: function(chrome)
                                  -    {
                                  -        FBDev.buildSource(function(source){
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -            script.text = source;
                                  -        });
                                  -    },
                                  -
                                  -    build: function() {
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBDev.buildSource(function(source){
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -            out.appendChild(document.createTextNode(source));
                                  -            document.body.appendChild(out);
                                  -        });
                                  -    },
                                  -    
                                  -    buildSource: function(callback)
                                  -    {
                                  -        var useClosure = false;
                                  -        var source = [];
                                  -        var last = FBDev.modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -    
                                  -        for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }        
                                  -    },
                                  -    
                                  -    compressInterace: function()
                                  -    {
                                  -        var files = [
                                  -            ];
                                  -    },
                                  -    
                                  -    compressSkinHTML: function()
                                  -    {
                                  -        var url = skinURL + "firebug.html";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressHTML(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -        
                                  -    },
                                  -    
                                  -    compressSkinCSS: function()
                                  -    {
                                  -        var url = skinURL + "firebug.css";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressCSS(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -        
                                  -    },
                                  -    
                                  -    compressHTML: function(html)
                                  -    {
                                  -        var reHTMLComment = /(<!--([^-]|-(?!->))*-->)/g;
                                  -        
                                  -        return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, "").
                                  -            replace(reHTMLComment, "").
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+</gm, "<").
                                  -            replace(/<\s+/gm, "<").
                                  -            replace(/\s+>/gm, ">").
                                  -            replace(/>\s+/gm, ">").
                                  -            replace(/\s+\/>/gm, "/>");
                                  -    },
                                  -
                                  -    compressCSS: function(css)
                                  -    {
                                  -        var reComment = /(\/\/.*)\n/g;
                                  -        var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -
                                  -        return css.replace(reComment, "").
                                  -            replace(reMultiComment, "").
                                  -            replace(/url\(/gi, "url("+publishedURL).
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+\{/gm, "{").
                                  -            replace(/\{\s+/gm, "{").
                                  -            replace(/\s+\}/gm, "}").
                                  -            replace(/\}\s+/gm, "}").
                                  -            replace(/\s+\:/gm, ":").            
                                  -            replace(/\:\s+/gm, ":").            
                                  -            replace(/,\s+/gm, ",");            
                                  -    }
                                  -
                                  -}
                                  -
                                  -function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    
                                  -    var head = document.getElementsByTagName("head")[0];
                                  -    
                                  -    var path = null;
                                  -    
                                  -    for(var i=0, c=head.childNodes, ci; ci=c[i]; i++)
                                  -    {
                                  -        var file = null;
                                  -        if ( ci.nodeName.toLowerCase() == "script" && 
                                  -             (file = reFirebugFile.exec(ci.src)) )
                                  -        {
                                  -            
                                  -            var fileName = file[1];
                                  -            var fileOptions = file[2];
                                  -            
                                  -            if (reProtocol.test(ci.src)) {
                                  -                // absolute path
                                  -                path = rePath.exec(ci.src)[1];
                                  -              
                                  -            }
                                  -            else
                                  -            {
                                  -                // relative path
                                  -                var r = rePath.exec(ci.src);
                                  -                var src = r ? r[1] : ci.src;
                                  -                var rel = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -                path = rePath.exec(location.href)[1];
                                  -                
                                  -                if (rel)
                                  -                {
                                  -                    var lastFolder = /^(.*\/)[^\/]+\/$/;
                                  -                    
                                  -                    var j = rel[1].length/3;
                                  -                    var p;
                                  -                    while (j-- > 0)
                                  -                        path = lastFolder.exec(path)[1];
                                  -
                                  -                    path += rel[2];
                                  -                }
                                  -                
                                  -                if(src.indexOf("/") != -1)
                                  -                {
                                  -                    // "./some/path"
                                  -                    if(/^\.\/./.test(src))
                                  -                    {
                                  -                        path += src.substring(2);
                                  -                    }
                                  -                    // "/some/path"
                                  -                    else if(/^\/./.test(src))
                                  -                    {
                                  -                        var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                        path = domain[1] + src;
                                  -                    }
                                  -                    // "some/path"
                                  -                    else
                                  -                    {
                                  -                        path += src;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            break;
                                  -        }
                                  -    }
                                  -                    
                                  -    var m = path.match(/([^\/]+)\/$/);
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        sourceURL = path;
                                  -        baseURL = path.substr(0, path.length - m[1].length - 1);
                                  -        skinURL = baseURL + "skin/xp/";
                                  -        fullURL = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw "Firebug error: Library path not found";
                                  -    }
                                  -};
                                  -
                                  -function loadModules() {
                                  -    
                                  -    findLocation();
                                  -    
                                  -    publishedURL = bookmarletMode ? bookmarletSkinURL : skinURL;
                                  -    
                                  -    var sufix = isApplicationContext ? "#app" : "";
                                  -    
                                  -    var useDocWrite = isIE || isSafari;
                                  -    //var useDocWrite = isIE;
                                  -    
                                  -    var moduleURL, script;
                                  -    var scriptTags = [];
                                  -    
                                  -    for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -    {
                                  -        var moduleURL = sourceURL + module + sufix;
                                  -        
                                  -        if(useDocWrite)
                                  -        {
                                  -            scriptTags.push("<script src='", moduleURL, "'><\/script>");
                                  -        }
                                  -        else
                                  -        {
                                  -            script = document.createElement("script");
                                  -            script.src = moduleURL;
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(script);
                                  -            //document.getElementsByTagName("body")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    
                                  -    if(useDocWrite)
                                  -    {
                                  -        document.write(scriptTags.join(""));
                                  -    }
                                  -};
                                  -
                                  -var publishedURL = "";
                                  -var baseURL = "";
                                  -var sourceURL = "";
                                  -var skinURL = "";
                                  -var fullURL = "";
                                  -var isApplicationContext = false;
                                  -
                                  -var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
                                  -var isIE = navigator.userAgent.indexOf("MSIE") != -1;
                                  -var isOpera = navigator.userAgent.indexOf("Opera") != -1;
                                  -var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
                                  -
                                  -loadModules();
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/boot.js b/tags/firebug1.3a3/content/firebug/boot.js
                                  deleted file mode 100644
                                  index f72631ef..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/boot.js
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -FBL.initialize();
                                  diff --git a/tags/firebug1.3a3/content/firebug/chrome.injected.js b/tags/firebug1.3a3/content/firebug/chrome.injected.js
                                  deleted file mode 100644
                                  index 15504567..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/chrome.injected.js
                                  +++ /dev/null
                                  @@ -1,14 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;_width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;_position:absolute;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a3/content/firebug/chrome.injected2.js b/tags/firebug1.3a3/content/firebug/chrome.injected2.js
                                  deleted file mode 100644
                                  index 416d7ce7..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/chrome.injected2.js
                                  +++ /dev/null
                                  @@ -1,14 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.twisty,.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow,.memberRow.hasChildren > .memberLabelCell > .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.logRow-errorMessage > .hasTwisty.opened > .errorTitle,.logRow-spy.opened .spyHead .spyTitle,.logGroup.opened > .logRow,.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,.nodeBox.highlightOpen > .nodeLabel > .twisty,.nodeBox.open > .nodeLabel > .twisty,.netRow.opened > .netCol > .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:11px;width:100%;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;}.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a3/content/firebug/chrome.js b/tags/firebug1.3a3/content/firebug/chrome.js
                                  deleted file mode 100644
                                  index a2c2a814..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/chrome.js
                                  +++ /dev/null
                                  @@ -1,1203 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -FBL.chromeMap = {};
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    commandLineVisible: false,
                                  -    sidePanelVisible: false,
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanel: "Console",
                                  -    selectedElement: null,
                                  -    
                                  -    consoleMessageQueue: [],    
                                  -    
                                  -    height: 250,
                                  -    
                                  -    isOpen: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChrome();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Application.chrome.type == "frame")
                                  -            ChromeMini.create(Application.chrome);
                                  -            
                                  -        if (Application.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Application.openAtStartup = true;
                                  -
                                  -        var chrome = Firebug.chrome = new Chrome(Application.chrome);
                                  -        chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onPressF12);
                                  -        
                                  -        if (Application.isPersistentMode && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            chromeMap.frame = FirebugChrome.chromeMap.frame;
                                  -            FirebugChrome.chromeMap.popup = chrome;
                                  -            
                                  -            var frame = chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            // initial UI state
                                  -            FirebugChrome.commandLineVisible = false;
                                  -            FirebugChrome.sidePanelVisible = false;
                                  -
                                  -            chrome.reattach(chromeMap.frame, chrome);
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && typeof prop != "function")
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Options
                                  -
                                  -var ChromeDefaultOptions = 
                                  -{
                                  -    type: "frame",
                                  -    id: "FirebugChrome",
                                  -    height: 250
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChrome = function(options)
                                  -{
                                  -    options = options || {};
                                  -    options = extend(ChromeDefaultOptions, options);
                                  -    
                                  -    var context = options.context || Application.browser;
                                  -    
                                  -    var chrome = {};
                                  -    
                                  -    chrome.type = options.type;
                                  -    
                                  -    var isChromeFrame = chrome.type == "frame";
                                  -    var isBookmarletMode = Application.isBookmarletMode;
                                  -    var url = isBookmarletMode ? "about:blank" : Application.location.skin;
                                  -    
                                  -    if (isChromeFrame)
                                  -    {
                                  -        // Create the Chrome Frame
                                  -        var node = chrome.node = createGlobalElement("iframe");
                                  -        
                                  -        node.setAttribute("id", options.id);
                                  -        node.setAttribute("frameBorder", "0");
                                  -        node.style.border = "0";
                                  -        node.style.visibility = "hidden";
                                  -        node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -        node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -        node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -        node.style.left = "0";
                                  -        node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -        node.style.height = options.height + "px";
                                  -        
                                  -        // avoid flickering during chrome rendering
                                  -        if (isFirefox)
                                  -            node.style.display = "none";
                                  -        
                                  -        if (!isBookmarletMode)
                                  -            node.setAttribute("src", Application.location.skin);
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        context.document.getElementsByTagName("body")[0].appendChild(node);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Create the Chrome Popup
                                  -        var height = FirebugChrome.height || options.height;
                                  -        var options = [
                                  -                "true,top=",
                                  -                Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                ",left=0,height=",
                                  -                height,
                                  -                ",width=",
                                  -                screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                ",resizable"          
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = context.window.open(
                                  -            url, 
                                  -            "popup", 
                                  -            options
                                  -          );
                                  -        
                                  -        if (node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug popup was blocked.");
                                  -            return;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isBookmarletMode)
                                  -    {
                                  -        var tpl = getChromeTemplate(!isChromeFrame);
                                  -        var doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -        doc.write(tpl);
                                  -        doc.close();
                                  -    }
                                  -    
                                  -    var win;
                                  -    var waitDelay = !isBookmarletMode ? isChromeFrame ? 200 : 300 : 100;
                                  -    var waitForChrome = function()
                                  -    {
                                  -        if ( // Frame loaded... OR
                                  -             isChromeFrame && (win=node.contentWindow) &&
                                  -             node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -             
                                  -             // Popup loaded
                                  -             !isChromeFrame && (win=node.window) && node.document &&
                                  -             node.document.getElementById("fbCommandLine") )
                                  -        {
                                  -            chrome.window = win.window;
                                  -            chrome.document = win.document;
                                  -            
                                  -            onChromeLoad(chrome);
                                  -        }
                                  -        else
                                  -            setTimeout(waitForChrome, waitDelay);
                                  -    }
                                  -    
                                  -    waitForChrome();
                                  -};
                                  -
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Application.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Application.isPersistentMode)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Application.FirebugChrome = FirebugChrome;
                                  -        Application.FirebugChrome.chromeMap = FBL.chromeMap;
                                  -        chrome.window.FirebugApplication = Application;
                                  -    
                                  -        if (Application.isDevelopmentMode)
                                  -        {
                                  -            Application.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Application.location.app;
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var frame = chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            // initial UI state
                                  -            FirebugChrome.commandLineVisible = false;
                                  -            FirebugChrome.sidePanelVisible = false;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -            
                                  -            newChrome.reattach(chromeMap.frame, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    r[++i] = '</title><style>';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = (isIE6 && tpl.IE6CSS) ? tpl.IE6CSS : '';
                                  -    r[++i] = '</style>';
                                  -    r[++i] = '</head><body class=' + (isPopup ? '"FirebugPopup"' : '') + '>';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    
                                  -    chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = extend(Firebug.Controller, Firebug.PanelBar);
                                  -var ChromeBase = extend(ChromeBase, {
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.PanelBar.create.apply(this);
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        
                                  -        this.inspectButton = new Firebug.Button({
                                  -            type: "toggle",
                                  -            node: $("fbChrome_btInspect"),
                                  -            owner: Firebug.Inspector,
                                  -            
                                  -            onPress: Firebug.Inspector.startInspecting,
                                  -            onUnpress: Firebug.Inspector.stopInspecting          
                                  -        });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        Firebug.PanelBar.initialize.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create a new instance of the CommandLine class
                                  -        commandLine = new Firebug.CommandLine(fbCommandLine);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE)
                                  -        {
                                  -           var as = $$(".fbHover");
                                  -           for (var i=0, a; a=as[i]; i++)
                                  -           {
                                  -               a.setAttribute("href", "javascript:void(0)");
                                  -           }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.inspectButton.initialize();
                                  -        
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanel);
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        this.inspectButton.shutdown();
                                  -        
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(fbContent, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(this.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        Firebug.PanelBar.shutdown.apply(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // destroy the instance of the CommandLine class
                                  -        commandLine.destroy();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        //alert('detach');
                                  -        if(!chromeMap.popup)
                                  -        {     
                                  -            createChrome({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            newPanelMap[name].contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        
                                  -        dispatch(Firebug.chrome.panelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related drawings
                                  -        var chromeHeight = size.height;
                                  -        var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -        var fixedHeight = topHeight + commandLineHeight;
                                  -        var y = Math.max(chromeHeight, topHeight);
                                  -        
                                  -        fbPanel1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        fbPanelBox1Style.height = Math.max(y - fixedHeight, 0)+ "px";
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related drawings
                                  -        var chromeWidth = size.width /* window borders */;
                                  -        var sideWidth = FirebugChrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0;
                                  -        
                                  -        fbPanelBox1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";
                                  -        fbPanel1Style.width = Math.max(chromeWidth - sideWidth, 0) + "px";                
                                  -        
                                  -        if (FirebugChrome.sidePanelVisible)
                                  -        {
                                  -            fbPanelBox2Style.width = sideWidth + "px";
                                  -            fbPanelBar2BoxStyle.width = Math.max(sideWidth, 0) + "px";
                                  -            fbVSplitterStyle.right = Math.max(sideWidth - 6, 0) + "px";
                                  -        }
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && self.type == "frame")
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(options.hasSidePanel);
                                  -        Firebug.chrome.draw();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeContext = extend(ChromeBase, Context.prototype); 
                                  -
                                  -var ChromeFrameBase = extend(ChromeContext,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Application.openAtStartup)
                                  -            this.open();
                                  -        else
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            this.close();
                                  -        }
                                  -        
                                  -        //if (this.node.style.visibility != "visible")
                                  -        //    this.node.style.visibility = "visible";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [Firebug.browser.window, "unload", this.destroy],
                                  -            
                                  -            [$("fbChrome_btClose"), "click", this.close],
                                  -            [$("fbChrome_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = chromeMap.frame;
                                  -        
                                  -        // last UI state
                                  -        FBL.FirebugChrome.commandLineVisible = this.commandLineVisible;
                                  -        FBL.FirebugChrome.sidePanelVisible = this.sidePanelVisible;
                                  -        
                                  -        ChromeBase.reattach(chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (ChromeMini.isInitialized)
                                  -            {
                                  -                ChromeMini.shutdown();
                                  -            }
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -                node.style.visibility = "visible";
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen)
                                  -        {
                                  -            var node = this.node;
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            // TODO: xxxpedro - persist IE fixed? 
                                  -            var main = $("fbChrome", chromeMap.frame.document);
                                  -            main.style.display = "none";
                                  -                    
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            ChromeMini.initialize();
                                  -            
                                  -            node.style.visibility = "visible";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        
                                  -        if (this.type == "frame" && (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Firebug.Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        
                                  -        // TODO: xxxpedro - persist IE fixed? 
                                  -        var doc = chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        node.setAttribute("allowTransparency", "true");
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "transparent";
                                  -        
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        node.setAttribute("allowTransparency", "false");
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "#fff";
                                  -        
                                  -        // TODO: xxxpedro - persist IE fixed? 
                                  -        var doc = chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeContext, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        this.document.body.className = "FirebugPopup";
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy],
                                  -            [Firebug.browser.window, "unload", this.close]
                                  -        );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if (Application.isPersistentMode)
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            Application.FirebugChrome.selectedElement = FirebugChrome.selectedElement;
                                  -        }
                                  -        var frame = chromeMap.frame;
                                  -        frame.reattach(this, frame);
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        if (Application.isPersistentMode)
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            Application.FirebugChrome.chromeMap = FirebugChrome.chromeMap;
                                  -            Application.FirebugChrome.chromeMap.popup = null;
                                  -        }
                                  -        chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -//
                                  -var commandLine = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -var fbTop = null;
                                  -var fbContent = null;
                                  -var fbContentStyle = null;
                                  -var fbBottom = null;
                                  -var fbBtnInspect = null;
                                  -
                                  -var fbToolbar = null;
                                  -
                                  -var fbPanelBox1 = null;
                                  -var fbPanelBox1Style = null;
                                  -var fbPanelBox2 = null;
                                  -var fbPanelBox2Style = null;
                                  -var fbPanelBar2Box = null;
                                  -var fbPanelBar2BoxStyle = null;
                                  -
                                  -var fbHSplitter = null;
                                  -var fbVSplitter = null;
                                  -var fbVSplitterStyle = null;
                                  -
                                  -var fbPanel1 = null;
                                  -var fbPanel1Style = null;
                                  -var fbPanel2 = null;
                                  -
                                  -var fbConsole = null;
                                  -var fbConsoleStyle = null;
                                  -var fbHTML = null;
                                  -
                                  -var fbCommandLine = null;
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var topHeight = null;
                                  -var topPartialHeight = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var chromeRedrawSkipRate = isIE ? 30 : isOpera ? 80 : 75;
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.commandLineVisible;
                                  -    Firebug.chrome.commandLineVisible = FirebugChrome.commandLineVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.commandLineVisible;
                                  -    
                                  -    if (FirebugChrome.commandLineVisible != last)
                                  -    {
                                  -        fbBottom.className = FirebugChrome.commandLineVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = FirebugChrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible = FirebugChrome.sidePanelVisible = 
                                  -        typeof visibility == "boolean" ? visibility : !FirebugChrome.sidePanelVisible;
                                  -    
                                  -    if (FirebugChrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = FirebugChrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = FirebugChrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onPressF12 = function onPressF12(event)
                                  -{
                                  -    if (event.keyCode == 123 /* F12 */ && 
                                  -        (!isFirefox && !event.shiftKey || event.shiftKey && isFirefox))
                                  -        {
                                  -            Firebug.chrome.toggle(false, event.ctrlKey);
                                  -            cancelEvent(event, true);
                                  -        }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastHSplitterMouseMove = 0;
                                  -var onHSplitterMouseMoveBuffer = null;
                                  -var onHSplitterMouseMoveTimer = null;
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugChrome")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = FirebugChrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastVSplitterMouseMove = 0;
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getWindowSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/commandLine.js b/tags/firebug1.3a3/content/firebug/commandLine.js
                                  deleted file mode 100644
                                  index 71f36eed..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/commandLine.js
                                  +++ /dev/null
                                  @@ -1,371 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var Console = Firebug.Console;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -
                                  -Firebug.CommandLine = function(element)
                                  -{
                                  -    this.element = element;
                                  -    
                                  -    if (isOpera)
                                  -      fixOperaTabKey(this.element);
                                  -    
                                  -    this.clear = bind(this.clear, this);
                                  -    this.onKeyDown = bind(this.onKeyDown, this);
                                  -    
                                  -    addEvent(this.element, "keydown", this.onKeyDown);
                                  -    
                                  -    //Application.browser.onerror = this.onError;
                                  -    var self = this
                                  -    Application.browser.onerror = function(){self.onError.apply(self, arguments)};
                                  -
                                  -    //Application.browser.onerror = this.onError;
                                  -    window.onerror = this.onError;
                                  -    
                                  -    initializeCommandLineAPI();
                                  -};
                                  -
                                  -Firebug.CommandLine.prototype = 
                                  -{
                                  -    element: null,
                                  -  
                                  -    _buffer: [],
                                  -    _bi: -1,
                                  -    
                                  -    _completing: null,
                                  -    _completePrefix: null,
                                  -    _completeExpr: null,
                                  -    _completeBuffer: null,
                                  -    _ci: null,
                                  -    
                                  -    _completion:
                                  -    {
                                  -        window:
                                  -        [
                                  -            "console"
                                  -        ],
                                  -        
                                  -        document:
                                  -        [
                                  -            "getElementById", 
                                  -            "getElementsByTagName"
                                  -        ]
                                  -    },
                                  -  
                                  -    _stack: function(command)
                                  -    {
                                  -        this._buffer.push(command);
                                  -        this._bi = this._buffer.length;
                                  -    },
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        window.onerror = null;
                                  -        this.element = null
                                  -    },
                                  -
                                  -    execute: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var command = cmd.value;
                                  -        
                                  -        this._stack(command);
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        
                                  -        try
                                  -        {
                                  -            
                                  -            var result = this.evaluate(command);
                                  -            // evita que seja repetido o log, caso o comando executado
                                  -            // j� seja um log via linha de comando
                                  -            if (result != Console.LOG_COMMAND)
                                  -            {
                                  -                var html = [];
                                  -                Firebug.Reps.appendObject(result, html)
                                  -                Firebug.Console.writeMessage(html, "command");
                                  -            }
                                  -                
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            Firebug.Console.writeMessage([e.message || e], "error");
                                  -        }
                                  -        
                                  -        cmd.value = "";
                                  -    },
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -            
                                  -        //Firebug.context = Firebug.chrome;
                                  -        //api = null;
                                  -
                                  -        return Firebug.context.evaluate(expr, "window", api, Console.error);
                                  -    },
                                  -    
                                  -    //eval: new Function("return window.eval.apply(window, arguments)"),
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var buffer = this._buffer;
                                  -        
                                  -        if (this._bi > 0 && buffer.length > 0)
                                  -            cmd.value = buffer[--this._bi];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var buffer = this._buffer;
                                  -        var limit = buffer.length -1;
                                  -        var i = this._bi;
                                  -        
                                  -        if (i < limit)
                                  -          cmd.value = buffer[++this._bi];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++this._bi;
                                  -            cmd.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var command = cmd.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!this._completing)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            this._completing = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                this._completePrefix = prefix;
                                  -                this._completeExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                this._ci = -1;
                                  -                
                                  -                buffer = this._completeBuffer = isIE ?
                                  -                    this._completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = this._completeBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = this._completePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=this._ci+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    this._ci = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            cmd.value = this._completeExpr + result;
                                  -    },
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -            this._completing = false;
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -            this.execute();
                                  -
                                  -        else if (code == 27 /* ESC */)
                                  -            setTimeout(this.clear, 0);
                                  -          
                                  -        else if (code == 38 /* up */)
                                  -            this.prevCommand();
                                  -          
                                  -        else if (code == 40 /* down */)
                                  -            this.nextCommand();
                                  -          
                                  -        else if (code == 9 /* tab */)
                                  -            this.autocomplete(e.shiftKey);
                                  -          
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector(selector, context)
                                  -    },
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -}
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Firebug.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/console.js b/tags/firebug1.3a3/content/firebug/console.js
                                  deleted file mode 100644
                                  index b54d8aed..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/console.js
                                  +++ /dev/null
                                  @@ -1,399 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        this.timeMap[name] = (new Date()).getTime();
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        if (name in this.timeMap)
                                  -        {
                                  -            var delta = (new Date()).getTime() - this.timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete this.timeMap[name];
                                  -        }
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        return this.warn(["trace() not supported."]);
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().contentNode.innerHTML = "";
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.contentNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().contentNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            node: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -if (!isFirefox)
                                  -    Application.browser.window.console = ConsoleAPI;        
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/context.js b/tags/firebug1.3a3/content/firebug/context.js
                                  deleted file mode 100644
                                  index 05922954..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/context.js
                                  +++ /dev/null
                                  @@ -1,464 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win){
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        context = context || "window";
                                  -
                                  -        var cmd = api ?
                                  -            "(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)" :
                                  -            "(function(arguments){ return "+expr+" }).call("+context+",undefined)" ;
                                  -        
                                  -        var r = this.eval(cmd);
                                  -        if (r && r[evalError])
                                  -        {
                                  -            cmd = api ?
                                  -                "(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)" :
                                  -                "(function(arguments){ "+expr+" }).call("+context+",undefined)" ;
                                  -                
                                  -            r = this.eval(cmd);
                                  -            if (r && r[evalError])
                                  -            {
                                  -                if (errorHandler)
                                  -                    r = errorHandler(r.message || r)
                                  -                else
                                  -                    r = r.message || r;
                                  -            }
                                  -        }
                                  -        
                                  -        return r;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (isOpera || isSafari)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        /*
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/dom.js b/tags/firebug1.3a3/content/firebug/dom.js
                                  deleted file mode 100644
                                  index d5bea3c6..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/dom.js
                                  +++ /dev/null
                                  @@ -1,588 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            DIV({"class": "memberLabel $member.type\\Label"},
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -var $STR = function(){};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -Firebug.Rep={};  // TODO: xxxpedro
                                  -
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            var setSize = members.length;
                                  -            var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            delete row.insertTimeout;
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && typeof object == "function")
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (typeof(val) == "function")
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        //throw exc;
                                  -        //if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -        //    FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (typeof ob == "function") return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (valueType == "function" || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -function getRowName(row)
                                  -{
                                  -    return row.firstChild.textContent;
                                  -}
                                  -
                                  -function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function DOMPanel(){};
                                  -
                                  -DOMPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        /*
                                  -        this.clearButton = new Firebug.Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            module: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -        /**/
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -        
                                  -        var target = this.contentNode;
                                  -        var template = DirTablePlate;
                                  -        
                                  -        var panel = {};
                                  -        var toggles = {};
                                  -        
                                  -        template.tag.replace({domPanel: panel, toggles: toggles, object: window}, target);
                                  -        
                                  -        //Firebug.reps[5].tag.replace({}, target);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        //this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMPanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/domplate.js b/tags/firebug1.3a3/content/firebug/domplate.js
                                  deleted file mode 100644
                                  index be8e56fb..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/domplate.js
                                  +++ /dev/null
                                  @@ -1,1060 +0,0 @@
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a3/content/firebug/domplate.original.js b/tags/firebug1.3a3/content/firebug/domplate.original.js
                                  deleted file mode 100644
                                  index 80df5848..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/domplate.original.js
                                  +++ /dev/null
                                  @@ -1,1036 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -top.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name[0] == "_")
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name[0] == "$")
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        this.renderMarkup = eval(js);
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        this.renderDOM = eval(js);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var table = doc.createElement("table");
                                  -        table.innerHTML = html;
                                  -
                                  -        var tbody = table.firstChild;
                                  -        var parent = before.localName == "TR" ? before.parentNode : before;
                                  -        var after = before.localName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.localName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var range = doc.createRange();
                                  -        range.selectNode(doc.body);
                                  -        var frag = range.createContextualFragment(html);
                                  -
                                  -        var root = frag.firstChild;
                                  -        if (before.nextSibling)
                                  -            before.parentNode.insertBefore(frag, before.nextSibling);
                                  -        else
                                  -            before.parentNode.appendChild(frag);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a3/content/firebug/firebug.js b/tags/firebug1.3a3/content/firebug/firebug.js
                                  deleted file mode 100644
                                  index bff60b87..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/firebug.js
                                  +++ /dev/null
                                  @@ -1,1019 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "___FBL_";
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -
                                  -var panelTypeMap = {};
                                  -
                                  -var reps = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version: "Firebug Lite 1.3.0a3",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Application.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        documentCache = {};
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            panelTypeMap[arguments[i].prototype.name] = arguments[i];
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -        defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    }
                                  -
                                  -};
                                  -
                                  -if (!Application.isPersistentMode || 
                                  -     Application.isPersistentMode && Application.isChromeContext || 
                                  -     Application.isDevelopmentMode )
                                  -        Application.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -var cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -Firebug.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasSidePanel: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelBar: null,
                                  -    
                                  -    commandLine: null,
                                  -    
                                  -    toolButtons: null,
                                  -    statusBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -            
                                  -            if (options.hasSidePanel)
                                  -            {
                                  -                //this.sidePanelNode = $(panelId + "StatusBar");
                                  -            }        
                                  -        }
                                  -        else
                                  -        {
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel1").appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            $("fbPanelBar1").appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -
                                  -        if (this.panelNode)
                                  -            delete this.panelNode.ownerPanel;
                                  -
                                  -        this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        //this.lastScrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        /*
                                  -        this.document = doc;
                                  -
                                  -        if (this.panelNode)
                                  -        {
                                  -            this.panelNode = doc.adoptNode(this.panelNode, true);
                                  -            this.panelNode.ownerPanel = this;
                                  -            doc.body.appendChild(this.panelNode);
                                  -            this.panelNode.scrollTop = this.lastScrollTop;
                                  -            delete this.lastScrollTop;
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -Firebug.PanelBar = 
                                  -{
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    selectedPanel: null,
                                  -    
                                  -    //panelBarNode: null,
                                  -    //context: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        this.panelMap = {};
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();        
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanel = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    },
                                  -    
                                  -    getSelectedPanel: function()
                                  -    {
                                  -        return this.selectedPanel;
                                  -    }    
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -Firebug.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    this.type = options.type || "normal";
                                  -    
                                  -    this.onClick = options.onClick;
                                  -    this.onPress = options.onPress;
                                  -    this.onUnpress = options.onUnpress;
                                  -    
                                  -    if (options.node)
                                  -    {
                                  -        this.node = options.node
                                  -        this.owner = options.owner;
                                  -        this.container = this.node.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        var caption = options.caption || "caption";
                                  -        var title = options.title || "title";
                                  -        
                                  -        this.owner = this.module = options.module;
                                  -        this.panel = options.panel || this.module.getPanel();
                                  -        this.container = this.panel.toolButtonsNode;
                                  -    
                                  -        this.node = createElement("a", {
                                  -            className: "fbHover",
                                  -            title: title,
                                  -            innerHTML: caption
                                  -        });
                                  -        
                                  -        this.container.appendChild(this.node);
                                  -    }
                                  -};
                                  -
                                  -Firebug.Button.prototype = extend(Firebug.Controller,
                                  -{
                                  -    type: null,
                                  -    
                                  -    node: null,
                                  -    owner: null,
                                  -    
                                  -    module: null,
                                  -    
                                  -    panel: null,
                                  -    container: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        this.container.removeChild(this.node);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Controller.initialize.apply(this);
                                  -        var node = this.node;
                                  -        
                                  -        this.addController([node, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [node, "mouseup", this.handleUnpress],
                                  -                [node, "mouseout", this.handleUnpress],
                                  -                [node, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");        
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.node, "fbBtnPressed");
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner);
                                  -                
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    // should be place inside module
                                  -    addButton: function(caption, title, handler)
                                  -    {
                                  -    },
                                  -    
                                  -    removeAllButtons: function()
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -});
                                  -
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -function PanelOptions(){};
                                  -
                                  -PanelOptions.prototype = extend(Firebug.Controller, {
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -/*
                                  -
                                  -From Honza Tutorial
                                  -----------------------------------------------------
                                  -FBL.ns(function() { with (FBL) {
                                  -var panelName = "HelloWorld";
                                  -Firebug.HelloWorldModel = extend(Firebug.Module,
                                  -{
                                  -    showPanel: function(browser, panel) {
                                  -        var isHwPanel = panel && panel.name == panelName;
                                  -        var hwButtons = browser.chrome.$("fbHelloWorldButtons");
                                  -        collapse(hwButtons, !isHwPanel);
                                  -    },
                                  -    onMyButton: function(context) {
                                  -        alert("Hello World!");
                                  -    }
                                  -});
                                  -
                                  -function HelloWorldPanel() {}
                                  -HelloWorldPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: panelName,
                                  -    title: "Hello World!",
                                  -
                                  -    initialize: function() {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HelloWorldModel);
                                  -Firebug.registerPanel(HelloWorldPanel);
                                  -
                                  -}});
                                  -----------------------------------------------------
                                  -
                                  -/**/  
                                  -  
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/html.js b/tags/firebug1.3a3/content/firebug/html.js
                                  deleted file mode 100644
                                  index 4105e5b5..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/html.js
                                  +++ /dev/null
                                  @@ -1,513 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = node.style.visibility != "hidden" &&
                                  -                        node.style.display != "none";
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || attr.nodeName == cacheID)
                                  -                        continue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                        '</span>&quot;')
                                  -                }
                                  -            
                                  -
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(document.all){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        //hasStatusBar: true,
                                  -        isPreRendered: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Application.isPersistentMode || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        fbPanel1 = null;
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedElement)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedElement);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedElement = e.id;
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -var OLD_chromeLoad = function OLD_chromeLoad(doc)
                                  -{
                                  -    //Firebug.Inspector.onChromeReady();
                                  -    
                                  -    var rootNode = document.documentElement;
                                  -    
                                  -    /* Console event handlers */
                                  -    addEvent(fbConsole, 'mousemove', onListMouseMove);
                                  -    addEvent(fbConsole, 'mouseout', onListMouseOut);
                                  -    
                                  -    
                                  -    // HTML event handlers
                                  -    addEvent(fbHTML, 'click', Firebug.HTML.onTreeClick);
                                  -    
                                  -    addEvent(fbHTML, 'mousemove', onListMouseMove);
                                  -    addEvent(fbHTML, 'mouseout', onListMouseOut);
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugChrome" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/html2.js b/tags/firebug1.3a3/content/firebug/html2.js
                                  deleted file mode 100644
                                  index 504ce5a8..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/html2.js
                                  +++ /dev/null
                                  @@ -1,1891 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -
                                  -const MODIFICATION = MutationEvent.MODIFICATION;
                                  -const ADDITION = MutationEvent.ADDITION;
                                  -const REMOVAL = MutationEvent.REMOVAL;
                                  -/**/
                                  -
                                  -var AttrTag =
                                  -    SPAN({"class": "nodeAttr editGroup"},
                                  -        "&nbsp;", SPAN({"class": "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -        SPAN({"class": "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -    );
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLModule = extend(Firebug.Module,
                                  -{
                                  -    deleteNode: function(node, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.parentNode.removeChild(node);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    },
                                  -    deleteAttribute: function(node, attr, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.removeAttribute(attr);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel = function() {};
                                  -
                                  -Firebug.HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -            this.editNode(this.selection);
                                  -    },
                                  -
                                  -    resetSearch: function()
                                  -    {
                                  -        delete this.lastSearch;
                                  -    },
                                  -
                                  -    selectNext: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var next = this.ioBox.getNextObjectBox(objectBox);
                                  -        if (next)
                                  -        {
                                  -            this.select(next.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(next.repObject);
                                  -
                                  -        }
                                  -    },
                                  -
                                  -    selectPrevious: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var previous = this.ioBox.getPreviousObjectBox(objectBox);
                                  -        if (previous)
                                  -        {
                                  -            this.select(previous.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(previous.repObject);
                                  -        }
                                  -    },
                                  -
                                  -    selectNodeBy: function(dir)
                                  -    {
                                  -        if (dir == "up")
                                  -            this.selectPrevious();
                                  -        else if (dir == "down")
                                  -            this.selectNext();
                                  -        else if (dir == "left")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.select(this.ioBox.getParentObjectBox(box).repObject);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -        else if (dir == "right")
                                  -            this.ioBox.expandObject(this.selection);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editNewAttribute: function(elt)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var labelBox = objectNodeBox.firstChild.lastChild;
                                  -            var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -            Firebug.Editor.insertRow(bracketBox, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editAttribute: function(elt, attrName)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var attrBox = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (attrBox)
                                  -            {
                                  -                var attrValueBox = attrBox.childNodes[3];
                                  -                var value = elt.getAttribute(attrName);
                                  -                Firebug.Editor.startEditing(attrValueBox, value);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    deleteAttribute: function(elt, attrName)
                                  -    {
                                  -        Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
                                  -    },
                                  -
                                  -    editNode: function(node)
                                  -    {
                                  -        if ( nonEditableTags.hasOwnProperty(node.localName) )
                                  -            return;
                                  -
                                  -        var objectNodeBox = this.ioBox.findObjectBox(node);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            if (!this.htmlEditor)
                                  -                this.htmlEditor = new HTMLEditor(this.document);
                                  -
                                  -            this.htmlEditor.innerEditMode = node.localName in innerEditableTags;
                                  -
                                  -            var html = this.htmlEditor.innerEditMode ? node.innerHTML : getElementHTML(node);
                                  -            Firebug.Editor.startEditing(objectNodeBox, html, this.htmlEditor);
                                  -        }
                                  -    },
                                  -
                                  -    deleteNode: function(node)
                                  -    {
                                  -        Firebug.HTMLModule.deleteNode(node, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getElementSourceText: function(node)
                                  -    {
                                  -        if (this.sourceElements)
                                  -        {
                                  -            var index = this.sourceElementNodes.indexOf(node);
                                  -            if (index != -1)
                                  -                return this.sourceElements[index];
                                  -        }
                                  -
                                  -        var lines;
                                  -
                                  -        var url = getSourceHref(node);
                                  -        if (url)
                                  -            lines = this.context.sourceCache.load(url);
                                  -        else
                                  -        {
                                  -            var text = getSourceText(node);
                                  -            lines = splitLines(text);
                                  -        }
                                  -
                                  -        var sourceElt = new SourceText(lines, node);
                                  -
                                  -        if (!this.sourceElements)
                                  -        {
                                  -            this.sourceElements =  [sourceElt];
                                  -            this.sourceElementNodes = [node];
                                  -        }
                                  -        else
                                  -        {
                                  -            this.sourceElements.push(sourceElt);
                                  -            this.sourceElementNodes.push(node);
                                  -        }
                                  -
                                  -        return sourceElt;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    mutateAttr: function(target, attrChange, attrName, attrValue)
                                  -    {
                                  -        // Every time the user scrolls we get this pointless mutation event, which
                                  -        // is only bad for performance
                                  -        if (attrName == "curpos")
                                  -            return;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName, target);
                                  -
                                  -        this.markChange();
                                  -
                                  -        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(target)
                                  -            : this.ioBox.findObjectBox(target);
                                  -
                                  -        if (!objectNodeBox)
                                  -            return;
                                  -
                                  -        if (isVisible(objectNodeBox.repObject))
                                  -            removeClass(objectNodeBox, "nodeHidden");
                                  -        else
                                  -            setClass(objectNodeBox, "nodeHidden");
                                  -
                                  -        if (attrChange == MODIFICATION || attrChange == ADDITION)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
                                  -            if (nodeAttr && nodeAttr.childNodes.length > 3)
                                  -            {
                                  -                var attrValueBox = nodeAttr.childNodes[3];
                                  -                var attrValueText = nodeAttr.childNodes[3].firstChild;
                                  -                if (attrValueText)
                                  -                    attrValueText.nodeValue = attrValue;
                                  -
                                  -                this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
                                  -            }
                                  -            else
                                  -            {
                                  -                var attr = target.getAttributeNode(attrName);
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
                                  -                if (attr)
                                  -                {
                                  -                    var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
                                  -                            this.document);
                                  -
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -                    labelBox.insertBefore(nodeAttr, bracketBox);
                                  -
                                  -                    this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (attrChange == REMOVAL)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (nodeAttr)
                                  -            {
                                  -                nodeAttr.parentNode.removeChild(nodeAttr);
                                  -
                                  -                this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateText: function(target, parent, textValue)
                                  -    {
                                  -        this.markChange();
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showFullTextNodes)
                                  -            textValue = cropMultipleLines(textValue, 50);
                                  -
                                  -        var parentTag = getNodeBoxTag(parentNodeBox);
                                  -        if (parentTag == Firebug.HTMLPanel.TextElement.tag)
                                  -        {
                                  -            var nodeText = getTextElementTextBox(parentNodeBox);
                                  -            if (!nodeText.firstChild)
                                  -                return;
                                  -
                                  -            nodeText.firstChild.nodeValue = textValue;
                                  -
                                  -            this.highlightMutation(nodeText, parentNodeBox, "mutated");
                                  -        }
                                  -        else
                                  -        {
                                  -            var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
                                  -            if (!childBox)
                                  -                return;
                                  -
                                  -            var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
                                  -            if (textNodeBox)
                                  -            {
                                  -                textNodeBox.firstChild.lastChild.nodeValue = textValue;
                                  -
                                  -                this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateNode: function(target, parent, nextSibling, removal)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\nhtml.mutateNode target:"+target+" parent:"+parent+(removal?"REMOVE":"")+"\n");
                                  -
                                  -        this.markChange();  // This invalidates the panels for every mutate
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateNode parent:"+parent+" parentNodeBox:"+parentNodeBox+"\n");
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showWhitespaceNodes && this.isWhitespaceText(target))
                                  -            return;
                                  -
                                  -        // target is only whitespace
                                  -
                                  -        var newParentTag = getNodeTag(parent);
                                  -        var oldParentTag = getNodeBoxTag(parentNodeBox);
                                  -
                                  -        if (newParentTag == oldParentTag)
                                  -        {
                                  -            if (parentNodeBox.populated)
                                  -            {
                                  -                if (removal)
                                  -                {
                                  -                    this.ioBox.removeChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
                                  -                }
                                  -                else
                                  -                {
                                  -                    var objectBox = nextSibling
                                  -                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
                                  -                        : this.ioBox.appendChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -                this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -                if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -                {
                                  -                    var objectBox = this.ioBox.createObjectBox(target);
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -            if (parentNodeBox.parentNode)
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -            if (hasClass(parentNodeBox, "open"))
                                  -                this.ioBox.toggleObjectBox(newParentNodeBox, true);
                                  -
                                  -            if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                this.ioBox.select(parent, true);
                                  -
                                  -            this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -        }
                                  -    },
                                  -
                                  -    highlightMutation: function(elt, objectBox, type)
                                  -    {
                                  -        if (!elt)
                                  -            return;
                                  -
                                  -        if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -        {
                                  -            if (this.context.mutationTimeout)
                                  -            {
                                  -                this.context.clearTimeout(this.context.mutationTimeout);
                                  -                delete this.context.mutationTimeout;
                                  -            }
                                  -
                                  -            var ioBox = this.ioBox;
                                  -            var panelNode = this.panelNode;
                                  -
                                  -            this.context.mutationTimeout = this.context.setTimeout(function()
                                  -            {
                                  -                ioBox.openObjectBox(objectBox);
                                  -
                                  -                if (Firebug.scrollToMutations)
                                  -                    scrollIntoCenterView(objectBox, panelNode);
                                  -            }, 200);
                                  -        }
                                  -
                                  -        if (Firebug.highlightMutations)
                                  -            setClassTimed(elt, type, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // SourceBox proxy
                                  -
                                  -    createObjectBox: function(object, isRoot)
                                  -    {
                                  -        if (FBTrace.DBG_HTML) FBTrace.sysout("html.createObjectBox("+(object.tagName?object.tagName:object)+", isRoot:"+(isRoot?"true":"false")+")\n");
                                  -        var tag = getNodeTag(object);
                                  -        if (tag)
                                  -            return tag.replace({object: object}, this.document);
                                  -    },
                                  -
                                  -    getParentObject: function(node)
                                  -    {
                                  -        if (node instanceof SourceText)
                                  -            return node.owner;
                                  -
                                  -        if (this.rootElement && node == this.rootElement)  // this.rootElement is never set
                                  -            return null;
                                  -
                                  -        var parentNode = node ? node.parentNode : null;
                                  -        if (parentNode)
                                  -            if (parentNode.nodeType == 9)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.getParentObject parentNode.nodeType 9\n");
                                  -                if (parentNode.defaultView)
                                  -                    return parentNode.defaultView.frameElement;
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_HTML || FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("html.getParentObject parentNode.nodeType 9 but no defaultView?", parentNode);
                                  -                }
                                  -            }
                                  -            else
                                  -                return parentNode;
                                  -        else
                                  -            if (node && node.nodeType == 9) // document type
                                  -            {
                                  -                var embeddingFrame = node.defaultView.frameElement;
                                  -                if (embeddingFrame)
                                  -                    return embeddingFrame.parentNode;
                                  -                else
                                  -                    return null;  // top level has no parent
                                  -            }
                                  -
                                  -    },
                                  -
                                  -    getChildObject: function(node, index, previousSibling)
                                  -    {
                                  -        if (isSourceElement(node))
                                  -        {
                                  -            if (index == 0)
                                  -                return this.getElementSourceText(node);
                                  -        }
                                  -        else if (previousSibling)
                                  -        {
                                  -            return this.findNextSibling(previousSibling);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (index == 0 && node.contentDocument)
                                  -                return node.contentDocument.documentElement;
                                  -            else if (Firebug.showWhitespaceNodes)
                                  -                return node.childNodes[index];
                                  -            else
                                  -            {
                                  -                var childIndex = 0;
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                {
                                  -                    if (!this.isWhitespaceText(child) && childIndex++ == index)
                                  -                        return child;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return false;
                                  -        return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -    },
                                  -
                                  -    findNextSibling: function (node)
                                  -    {
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return node.nextSibling;
                                  -        else
                                  -        {
                                  -            for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -            {
                                  -                if (!this.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        return tag == "script" || tag == "link" || tag == "style"
                                  -            || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Events
                                  -
                                  -    onMutateAttr: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var attrChange = event.attrChange;
                                  -        var attrName = event.attrName;
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateAttr(target, attrChange, attrName, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateText: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var parent = target.parentNode;
                                  -
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateText(target, parent, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateNode: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var parent = event.relatedNode;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -        var nextSibling = removal ? null : this.findNextSibling(target);
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            try
                                  -            {
                                  -                 this.mutateNode(target, parent, nextSibling, removal);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.onMutateNode FAILS:", exc);
                                  -            }
                                  -        }, this);
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (isLeftClick(event) && event.detail == 2)
                                  -        {
                                  -            if (getAncestorByClass(event.target, "nodeTag"))
                                  -            {
                                  -                var node = Firebug.getRepObject(event.target);
                                  -                this.editNode(node);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        if (getAncestorByClass(event.target, "nodeTag"))
                                  -        {
                                  -            var node = Firebug.getRepObject(event.target);
                                  -            this.noScrollIntoView = true;
                                  -            this.select(node);
                                  -            delete this.noScrollIntoView;
                                  -            var box = this.ioBox.createObjectBox(node);
                                  -            if (!hasClass(box, "open"))
                                  -                this.ioBox.expandObject(node);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -    },
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        if (this.editing || isControl(event) || isShift(event))
                                  -            return;
                                  -
                                  -        if (event.keyCode == KeyEvent.DOM_VK_UP)
                                  -            this.selectNodeBy("up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
                                  -            this.selectNodeBy("down");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
                                  -            this.selectNodeBy("left");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
                                  -            this.selectNodeBy("right");
                                  -        else
                                  -            return;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -    
                                  -    name: "HTML2",
                                  -    title: "HTML2",
                                  -    
                                  -    options: {},
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);        
                                  -        
                                  -        var object = Firebug.browser.document.documentElement;
                                  -        Firebug.HTMLPanel.Element.tag.replace({object: object}, this.contentNode);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.contentNode, "click", this.onClick);
                                  -        addEvent(this.contentNode, "mousedown", this.onMouseDown);
                                  -    },    
                                  -
                                  -    /*
                                  -    name: "html",
                                  -    searchable: true,
                                  -    dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
                                  -    inspectorHistory: new Array(5),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMutateText = bind(this.onMutateText, this);
                                  -        this.onMutateAttr = bind(this.onMutateAttr, this);
                                  -        this.onMutateNode = bind(this.onMutateNode, this);
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        persistObjects(this, state);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this]);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.ioBox)
                                  -        {
                                  -            this.ioBox.destroy();
                                  -            delete this.ioBox;
                                  -        }
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this]);
                                  -    },
                                  -    /**/
                                  -    /*
                                  -    show: function(state)
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", true);
                                  -
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -
                                  -        this.panelNode.ownerDocument.addEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.context.loaded)
                                  -        {
                                  -            if (!this.context.attachedMutation)
                                  -            {
                                  -                this.context.attachedMutation = true;
                                  -
                                  -                iterateWindows(this.context.window, bind(function(win)
                                  -                {
                                  -                    var doc = win.document;
                                  -                    doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -                    doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -                    doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -                    doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -                }, this));
                                  -            }
                                  -
                                  -            restoreObjects(this, state);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", false);
                                  -        delete this.infoTipURL;  // clear the state that is tracking the infotip so it is reset after next show()
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.watchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, false);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        if (this.context.attachedMutation)
                                  -        {
                                  -            var doc = win.document;
                                  -            doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -            doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -            doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -            doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.unwatchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, true);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        var doc = win.document;
                                  -        doc.removeEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -        doc.removeEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -        doc.removeEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -        doc.removeEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -    },
                                  -    /**/
                                  -
                                  -    mutateDocumentEmbedded: function(win, remove)
                                  -    {
                                  -        // document.documentElement    Returns the Element that is a direct child of document. For HTML documents, this normally the HTML element.
                                  -        var target = win.document.documentElement;
                                  -        var parent = win.frameElement;
                                  -        var nextSibling = this.findNextSibling(target);
                                  -        this.mutateNode(target, parent, nextSibling, remove);
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof Element || object instanceof Text || object instanceof CDATASection)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && !reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        var viewOptionNames = {showCommentNodes:1, showWhitespaceNodes:1 , showFullTextNodes:1};
                                  -        if (name in viewOptionNames)
                                  -        {
                                  -            this.resetSearch();
                                  -            clearNode(this.panelNode);
                                  -            if (this.ioBox)
                                  -                this.ioBox.destroy();
                                  -
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -            this.ioBox.select(this.selection, true, true);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.updateSelection "+object);
                                  -        if (this.ioBox.sourceRow)
                                  -            this.ioBox.sourceRow.removeAttribute("exeLine");
                                  -
                                  -        if (object instanceof SourceLink) // && object.type == "css" and !reCSS(object.href) by supports
                                  -         {
                                  -             var sourceLink = object;
                                  -             var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -             if (stylesheet)
                                  -             {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection stylesheet.ownerNode="+stylesheet.ownerNode
                                  -                                          +" href:"+sourceLink.href+"\n");
                                  -                if (ownerNode)
                                  -                {
                                  -                    var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
                                  -
                                  -                    // XXXjjb seems like this could be bad for errors at the end of long files
                                  -                    //
                                  -                    var sourceRow = FBL.getElementByClass(objectbox, "sourceRow"); // first source row in style
                                  -                    for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
                                  -                    {
                                  -                        if (!sourceRow) break;
                                  -                        sourceRow = FBL.getNextByClass(sourceRow,  "sourceRow");
                                  -                    }
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection sourceLink.line="+sourceLink.line
                                  -                                          +" sourceRow="+(sourceRow?sourceRow.innerHTML:"undefined")+"\n");
                                  -                    if (sourceRow)
                                  -                    {
                                  -                        this.ioBox.sourceRow = sourceRow;
                                  -                        this.ioBox.sourceRow.setAttribute("exeLine", "true");
                                  -                        scrollIntoCenterView(sourceRow);
                                  -                        this.ioBox.selectObjectBox(sourceRow, false);  // sourceRow isn't an objectBox, but the function should work anyway...
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (Firebug.Inspector.inspecting)
                                  -        {
                                  -            this.ioBox.highlight(object);
                                  -        }
                                  -        else
                                  -        {
                                  -            this.ioBox.select(object, true, false, this.noScrollIntoView);
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -        if (object != this.inspectorHistory)
                                  -        {
                                  -            // Manage history of selection for later access in the command line.
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.stopInspecting: inspectoryHistory updated", this.inspectorHistory);
                                  -        }
                                  -
                                  -        this.ioBox.highlight(null);
                                  -
                                  -        if (!cancelled)
                                  -            this.ioBox.select(object, true);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var search;
                                  -        if (text == this.searchText && this.lastSearch)
                                  -            search = this.lastSearch;
                                  -        else
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            if (Firebug.searchSelector)
                                  -                search = this.lastSearch = new SelectorSearch(text, doc, this.panelNode, this.ioBox);
                                  -            else
                                  -                search = this.lastSearch = new NodeSearch(text, doc, this.panelNode, this.ioBox);
                                  -        }
                                  -
                                  -        var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -        if (loopAround)
                                  -        {
                                  -            this.resetSearch();
                                  -            this.search(text, reverse);
                                  -        }
                                  -
                                  -        return !search.noMatch;
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("search.html.CSS_Selector", "searchSelector")
                                  -        ];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            return doc.body ? doc.body : getPreviousElement(doc.documentElement.lastChild);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(element)
                                  -    {
                                  -        var path = [];
                                  -        for (; element; element = this.getParentObject(element))
                                  -            path.push(element);
                                  -
                                  -        return path;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowFullText", "showFullTextNodes"),
                                  -            optionMenu("ShowWhitespace", "showWhitespaceNodes"),
                                  -            optionMenu("ShowComments", "showCommentNodes"),
                                  -            "-",
                                  -            optionMenu("HighlightMutations", "highlightMutations"),
                                  -            optionMenu("ExpandMutations", "expandMutations"),
                                  -            optionMenu("ScrollToMutations", "scrollToMutations")
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(node, target)
                                  -    {
                                  -        if (!node)
                                  -            return null;
                                  -
                                  -        var items = [];
                                  -
                                  -        if (node && node.nodeType == 1)
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewAttribute", command: bindFixed(this.editNewAttribute, this, node) }
                                  -            );
                                  -
                                  -            var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -            if (getAncestorByClass(target, "nodeAttr"))
                                  -            {
                                  -                var attrName = attrBox.childNodes[1].textContent;
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.editAttribute, this, node, attrName) },
                                  -                    {label: $STRF("DeleteAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.deleteAttribute, this, node, attrName) }
                                  -                );
                                  -            }
                                  -
                                  -            if (!( nonEditableTags.hasOwnProperty(node.localName) ))
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "EditElement", command: bindFixed(this.editNode, this, node) },
                                  -                    {label: "DeleteElement", command: bindFixed(this.deleteNode, this, node) }
                                  -                );
                                  -            }
                                  -
                                  -        }
                                  -        else
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "EditNode", command: bindFixed(this.editNode, this, node) },
                                  -                {label: "DeleteNode", command: bindFixed(this.deleteNode, this, node) }
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        if (!hasClass(target, "nodeValue"))
                                  -            return;
                                  -
                                  -        var targetNode = Firebug.getRepObject(target);
                                  -        if (targetNode && targetNode.nodeType == 1 && targetNode.localName.toUpperCase() == "IMG")
                                  -        {
                                  -            var url = targetNode.src;
                                  -            if (url == this.infoTipURL) // This state cleared in hide()
                                  -                return true;
                                  -
                                  -            this.infoTipURL = url;
                                  -            return Firebug.InfoTip.populateImageInfoTip(infoTip, url);
                                  -        }
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (hasClass(target, "nodeName") || hasClass(target, "nodeValue") || hasClass(target, "nodeBracket"))
                                  -        {
                                  -            if (!this.attrEditor)
                                  -                this.attrEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.attrEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            // XXXjoe Implement special text node editor
                                  -            if (!this.textEditor)
                                  -                this.textEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.textEditor;
                                  -        }
                                  -    },
                                  -
                                  -    getInspectorVars: function()
                                  -    {
                                  -        var vars = {};
                                  -        for (var i=0; i<2; i++)
                                  -            vars["$"+i] = this.inspectorHistory[i];
                                  -
                                  -        return vars;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"},
                                  -                FOR("child", "$object|childIterator",
                                  -                    TAG("$child|getNodeTag", {object: "$child"})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeCloseLabel", role:"presentation"},
                                  -                "&lt;/",
                                  -                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                "&gt;"
                                  -             )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        return getNodeTag(node, true);
                                  -    },
                                  -
                                  -    childIterator: function(node)
                                  -    {
                                  -        if (node.contentDocument)
                                  -            return [node.contentDocument.documentElement];
                                  -
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return cloneArray(node.childNodes);
                                  -        else
                                  -        {
                                  -            var nodes = [];
                                  -            for (var child = node.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                    nodes.push(child);
                                  -            }
                                  -            return nodes;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
                                  -            Firebug.HTMLPanel.CompleteElement.tag
                                  -        ),
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -            {
                                  -                var panel = Firebug.getElementPanel(child);
                                  -                Firebug.chrome.select(child.repObject);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                IMG({"class": "twisty", role: "presentation"}),
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"}),
                                  -            DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -             )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                    SPAN({"class": "nodeText editable"}, "$object|getNodeText"),
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag: AttrTag
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue")
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.WhitespaceNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            FOR("char", "$object|charIterator",
                                  -                    SPAN({"class": "nodeText nodeWhiteSpace editable"}, "$char")
                                  -                    )
                                  -        ),
                                  -    charIterator: function(node)
                                  -    {
                                  -        var str = node.nodeValue;
                                  -        var arr = [];
                                  -        for(var i = 0; i < str.length; i++)
                                  -        {
                                  -            // http://www.w3.org/TR/html401/struct/text.html
                                  -            var char = str[i];
                                  -            switch(char)
                                  -            {
                                  -            case ' ': arr[i] = ' ';break;
                                  -            case '\t': arr[i] = '\\t';break;
                                  -            case '\n': arr[i] = '\\n';break;
                                  -            case '\u200B': arr[i] = '\\u200B';break;  // Zero width space http://www.fileformat.info/info/unicode/char/200b/index.htm
                                  -            default: arr[i] = '?'; break;
                                  -            }
                                  -        }
                                  -        return arr;
                                  -    },
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            "&lt;![CDATA[",
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue"),
                                  -            "]]&gt;"
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            DIV({"class": "nodeComment editable"},
                                  -                "&lt;!--$object.nodeValue--&gt;"
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// AttributeEditor
                                  -
                                  -function AttributeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -/*
                                  -AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var element = Firebug.getRepObject(target);
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        target.innerHTML = escapeHTML(value);
                                  -
                                  -        if (hasClass(target, "nodeName"))
                                  -        {
                                  -            if (value != previousValue)
                                  -                element.removeAttribute(previousValue);
                                  -
                                  -            if (value)
                                  -            {
                                  -                var attrValue = getNextByClass(target, "nodeValue").textContent;
                                  -                element.setAttribute(value, attrValue);
                                  -            }
                                  -            else
                                  -                element.removeAttribute(value);
                                  -        }
                                  -        else if (hasClass(target, "nodeValue"))
                                  -        {
                                  -            var attrName = getPreviousByClass(target, "nodeName").textContent;
                                  -            element.setAttribute(attrName, value);
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            if (element instanceof Element)
                                  -                element.innerHTML = value;
                                  -            else
                                  -                element.nodeValue = value;
                                  -        }
                                  -
                                  -        //this.panel.markChange();
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 61 && hasClass(target, "nodeName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var emptyAttr = {nodeName: "", nodeValue: ""};
                                  -        var sibling = insertWhere == "before" ? target.previousSibling : target;
                                  -
                                  -        return AttrTag.insertAfter({attr: emptyAttr}, sibling);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -// HTMLEditor
                                  -
                                  -function HTMLEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -
                                  -    this.multiLine = true;
                                  -    this.tabNavigation = false;
                                  -    this.arrowCompletion = false;
                                  -}
                                  -
                                  -HTMLEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -        this.editingElements = [target.repObject, null];
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.editingElements;
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // Remove all of the nodes in the last range we created, except for
                                  -        // the first one, because setOuterHTML will replace it
                                  -        var first = this.editingElements[0], last = this.editingElements[1];
                                  -        if (last && last != first)
                                  -        {
                                  -            for (var child = first.nextSibling; child;)
                                  -            {
                                  -                var next = child.nextSibling;
                                  -                child.parentNode.removeChild(child);
                                  -                if (child == last)
                                  -                    break;
                                  -                else
                                  -                    child = next;
                                  -            }
                                  -        }
                                  -
                                  -        // Make sure that we create at least one node here, even if it's just
                                  -        // an empty space, because this code depends on having something to replace
                                  -        if (!value)
                                  -            value = " ";
                                  -
                                  -        if (this.innerEditMode)
                                  -            this.editingElements[0].innerHTML = value;
                                  -        else
                                  -            this.editingElements = setOuterHTML(this.editingElements[0], value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        //this.panel.markChange();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getEmptyElementTag(node)
                                  -{
                                  -    if (node.ownerDocument.documentElement.namespaceURI == "http://www.w3.org/1999/xhtml")
                                  -        return Firebug.HTMLPanel.XEmptyElement.tag;
                                  -    else
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getNodeTag(node, expandAll)
                                  -{
                                  -    if (node instanceof Element)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return getEmptyElementTag(node);
                                  -        else if (node.firebugIgnore)
                                  -            return null;
                                  -        else if (isContainerElement(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (isEmptyElement(node))
                                  -            return getEmptyElementTag(node);
                                  -        else if (hasNoElementChildren(node))
                                  -            return Firebug.HTMLPanel.TextElement.tag;
                                  -        else
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -    }
                                  -    else if (node instanceof Text)
                                  -        return Firebug.showWhitespaceNodes ? Firebug.HTMLPanel.WhitespaceNode.tag : Firebug.HTMLPanel.TextNode.tag;
                                  -    else if (node instanceof CDATASection)
                                  -        return Firebug.HTMLPanel.CDATANode.tag;
                                  -    else if (node instanceof Comment && (Firebug.showCommentNodes || expandAll))
                                  -        return Firebug.HTMLPanel.CommentNode.tag;
                                  -    else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -    else
                                  -        return FirebugReps.Nada.tag;
                                  -}
                                  -
                                  -function getNodeBoxTag(nodeBox)
                                  -{
                                  -    var re = /([^\s]+)NodeBox/;
                                  -    var m = re.exec(nodeBox.className);
                                  -    if (!m)
                                  -        return null;
                                  -
                                  -    var nodeBoxType = m[1];
                                  -    if (nodeBoxType == "container")
                                  -        return Firebug.HTMLPanel.Element.tag;
                                  -    else if (nodeBoxType == "text")
                                  -        return Firebug.HTMLPanel.TextElement.tag;
                                  -    else if (nodeBoxType == "empty")
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getSourceHref(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && element.src)
                                  -        return element.src;
                                  -    else if (tag == "link")
                                  -        return element.href;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function getSourceText(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && !element.src)
                                  -        return element.textContent;
                                  -    else if (tag == "style")
                                  -        return element.textContent;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function isContainerElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    switch (tag)
                                  -    {
                                  -        case "script":
                                  -        case "style":
                                  -        case "iframe":
                                  -        case "frame":
                                  -        case "tabbrowser":
                                  -        case "browser":
                                  -            return true;
                                  -        case "link":
                                  -            return element.getAttribute("rel") == "stylesheet";
                                  -    }
                                  -    return false;
                                  -}
                                  -
                                  -function hasNoElementChildren(element)
                                  -{
                                  -    if (element.childElementCount != 0)  // FF 3.5+
                                  -        return false;
                                  -
                                  -    // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
                                  -    if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
                                  -    {
                                  -        var anonChildren = element.ownerDocument.getAnonymousNodes(element);
                                  -        if (anonChildren)
                                  -        {
                                  -            for (var i = 0; i < anonChildren.length; i++)
                                  -            {
                                  -                if (anonChildren[i].nodeType == 1)
                                  -                    return false;
                                  -            }
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_HTML)
                                  -        FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element);
                                  -    return true;
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype isWhitespaceText
                                  -function isWhitespaceText(node)
                                  -{
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype TODO: create a namespace for all of these functions so
                                  -// they can be called outside of this file.
                                  -function isSourceElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    return tag == "script" || tag == "link" || tag == "style"
                                  -        || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -function isEmptyElement(element)
                                  -{
                                  -    // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
                                  -    // If the DOM has whitespace children, then the element is not empty even if
                                  -    // we decide not to show the whitespace in the UI.
                                  -
                                  -    // XXXsroussey reverted above but added a check for self closing tags
                                  -    if (Firebug.showWhitespaceNodes)
                                  -    {
                                  -        return !element.firstChild && isSelfClosing(element);
                                  -    }
                                  -    else
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return false;
                                  -        }
                                  -    }
                                  -    return isSelfClosing(element);
                                  -}
                                  -
                                  -function findNextSibling(node)
                                  -{
                                  -    if (Firebug.showWhitespaceNodes)
                                  -        return node.nextSibling;
                                  -    else
                                  -    {
                                  -        // only return a non-whitespace node
                                  -        for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -function findElementNameBox(objectNodeBox)
                                  -{
                                  -    return objectNodeBox.getElementsByClassName("nodeTag")[0];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function NodeSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    var walker = new DOMWalker(doc, doc.documentElement);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return findElementNameBox(nodeBox);
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            var target = this.lastRange.startContainer;
                                  -            range = this.lastRange = panelNode.ownerDocument.createRange();
                                  -            range.setStart(target, index);
                                  -            range.setEnd(target, index+text.length);
                                  -
                                  -            row = this.lastRow;
                                  -        }
                                  -
                                  -        if (!range)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -            var search = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = search.find(text, reverse, caseSensitive);
                                  -            range = this.lastRange = search.range;
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function SelectorSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    this.parent = new NodeSearch(text, doc, panelNode, ioBox);
                                  -
                                  -    this.find = this.parent.find;
                                  -    this.reset = this.parent.reset;
                                  -    this.openToNode = this.parent.openToNode;
                                  -
                                  -    try
                                  -    {
                                  -        // http://dev.w3.org/2006/webapi/selectors-api/
                                  -        this.matchingNodes = doc.querySelectorAll(text);
                                  -        this.matchIndex = 0;
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
                                  -    }
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (!this.matchingNodes || !this.matchingNodes.length)
                                  -            return undefined;
                                  -
                                  -        if (reverse)
                                  -        {
                                  -            if (this.matchIndex > 0)
                                  -                return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.matchIndex < this.matchingNodes.length)
                                  -                return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            ioBox.select(node, true, true);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -}
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerPanel(Firebug.HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a3/content/firebug/inspector.js b/tags/firebug1.3a3/content/firebug/inspector.js
                                  deleted file mode 100644
                                  index 7e139c69..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/inspector.js
                                  +++ /dev/null
                                  @@ -1,445 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Application.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        /**/
                                  -
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting)
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick)
                                  -    },
                                  -    
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugChrome
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugChrome") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxPaddingStyle.top = margin.top + "px";
                                  -        boxPaddingStyle.left = margin.left + "px";
                                  -        boxPaddingStyle.height = height + "px";
                                  -        boxPaddingStyle.width = width + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + padding.left + "px";
                                  -        boxContentStyle.height = height - padding.top - padding.bottom + "px";
                                  -        boxContentStyle.width = width - padding.left - padding.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, boxMargin, boxMarginStyle, 
                                  -boxPadding, boxPaddingStyle, boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Application.location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Application.isTraceMode) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelStyle = inspectStyle + "opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/inspector2.js b/tags/firebug1.3a3/content/firebug/inspector2.js
                                  deleted file mode 100644
                                  index 544fa8dc..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/inspector2.js
                                  +++ /dev/null
                                  @@ -1,495 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -Firebug.Inspector =
                                  -{  
                                  -  
                                  -    create: function()
                                  -    {
                                  -        //offlineFragment = Firebug.browser.document.createDocumentFragment();
                                  -        createInspectorIFrame();
                                  -        // TODO: xxxpedro use createGlobalElement 
                                  -        if (!this.NS)
                                  -        {
                                  -            //createBoxModelInspector();
                                  -            //createOutlineInspector();
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        /*
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        /**/
                                  -
                                  -        //fbBtnInspect.href = "javascript:FB.stopInspecting(this)";
                                  -        //fbBtnInspect.className = "fbBtnInspectActive";
                                  -        //fbInspectIFrame.style.display = "block";
                                  -        
                                  -        if(!inspectIFrameVisible)
                                  -            showInspectIFrame();
                                  -            
                                  -        fbInspectFrame = fbInspectIFrame.contentWindow.document.documentElement;
                                  -        fbInspectIFrameDoc = fbInspectIFrame.contentWindow.document;
                                  -        fbInspectIFrameDoc.body.style.overflow = "hidden";
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        fbInspectFrame = fbInspectIFrame.contentWindow.document.documentElement;
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        if(inspectIFrameVisible)
                                  -            hideInspectIFrame();
                                  -    },
                                  -    
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        //fbInspectIFrame.style.display = "none";
                                  -        hideInspectIFrame();
                                  -        var targ = getElementFromPoint(e.clientX, e.clientY);
                                  -        showInspectIFrame();
                                  -        //fbInspectIFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugChrome
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugChrome") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            //fbInspectIFrame.style.display = "none";
                                  -            hideInspectIFrame();
                                  -            var targ = getElementFromPoint(e.clientX, e.clientY);
                                  -            showInspectIFrame();
                                  -            //fbInspectIFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugChrome
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugChrome") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspector Outline
                                  -    
                                  -    drawOutline: function(el)
                                  -    {
                                  -        if (!outlineVisible) this.showOutline();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var border = 2;
                                  -        var o = outlineElements;
                                  -        
                                  -        o.fbOutlineT.style.top = top-border + "px";
                                  -        o.fbOutlineT.style.left = left + "px";
                                  -        o.fbOutlineT.style.width = width + "px";
                                  -  
                                  -        o.fbOutlineB.style.top = top+height + "px";
                                  -        o.fbOutlineB.style.left = left + "px";
                                  -        o.fbOutlineB.style.width = width + "px";
                                  -        
                                  -        o.fbOutlineL.style.top = top-border + "px";
                                  -        o.fbOutlineL.style.left = left-border + "px";
                                  -        o.fbOutlineL.style.height = height+2*border + "px";
                                  -
                                  -        o.fbOutlineR.style.top = top-border + "px";
                                  -        o.fbOutlineR.style.left = left+width + "px";
                                  -        o.fbOutlineR.style.height = height+2*border + "px";
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -        
                                  -        if(inspectIFrameVisible)
                                  -            hideInspectIFrame();
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if(!inspectIFrameVisible)
                                  -            showInspectIFrame();
                                  -        
                                  -        for (var name in outline)
                                  -            //Firebug.browser.document.body.appendChild(outlineElements[name]);
                                  -            fbInspectIFrameDoc.body.appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxPaddingStyle.top = margin.top + "px";
                                  -        boxPaddingStyle.left = margin.left + "px";
                                  -        boxPaddingStyle.height = height + "px";
                                  -        boxPaddingStyle.width = width + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + padding.left + "px";
                                  -        boxContentStyle.height = height - padding.top - padding.bottom + "px";
                                  -        boxContentStyle.width = width - padding.left - padding.right + "px";
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible)
                                  -        {
                                  -            offlineFragment.appendChild(boxModel);
                                  -            boxModelVisible = false;
                                  -            
                                  -            if(inspectIFrameVisible)
                                  -                hideInspectIFrame();
                                  -        }
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible)
                                  -        {
                                  -            if(!inspectIFrameVisible)
                                  -                showInspectIFrame();
                                  -            
                                  -            fbInspectIFrameDoc.body.appendChild(boxModel);
                                  -            boxModelVisible = true;
                                  -        }
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var pixelsPerInch, boxModel, boxModelStyle, boxMargin, boxMarginStyle, 
                                  -boxPadding, boxPaddingStyle, boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Application.location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Application.isTraceMode) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelStyle = inspectStyle + "opacity:0.8; _filter:alpha(opacity=80);";
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7; height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7; width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var inspectIFrameVisible = false;
                                  -
                                  -var showInspectIFrame = function()
                                  -{
                                  -    if (!inspectIFrameVisible || force)
                                  -    {
                                  -        fbInspectIFrame.style.display = "block";
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectIFrame.style.width = size.width + "px";
                                  -        fbInspectIFrame.style.height = size.height + "px";
                                  -    
                                  -        inspectIFrameVisible = true;
                                  -    }    
                                  -};
                                  -var hideInspectIFrame = function(force)
                                  -{
                                  -    if (inspectIFrameVisible || force)
                                  -    {
                                  -        fbInspectIFrame.style.display = "none";
                                  -        inspectIFrameVisible = false;
                                  -    }    
                                  -};
                                  -
                                  -var getElementFromPoint = function getElementFromPoint(x, y)
                                  -{
                                  -    var scroll = Firebug.browser.getWindowScrollPosition();
                                  -    
                                  -    if (!isSafari)
                                  -        return Firebug.browser.document.elementFromPoint(x - scroll.left, y - scroll.top);
                                  -    else
                                  -        return Firebug.browser.document.elementFromPoint(x, y);    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -var fbInspectIFrame = null;
                                  -var fbInspectIFrameDoc = null;
                                  -
                                  -var createInspectorIFrame = function createInspectorIFrame()
                                  -{
                                  -    fbInspectIFrame = createGlobalElement("iframe");
                                  -    fbInspectIFrame.id = "FirebugInspectIFrame";
                                  -    //fbInspectIFrame.style.cssText = inspectFrameStyle;
                                  -    fbInspectIFrame.setAttribute("frameBorder", "0");
                                  -    fbInspectIFrame.style.border = "0";
                                  -    fbInspectIFrame.setAttribute("allowTransparency", "true");
                                  -    fbInspectIFrame.style.position = "absolute";
                                  -    fbInspectIFrame.style.top = "0";
                                  -    fbInspectIFrame.style.left = "0";
                                  -    fbInspectIFrame.style.zIndex = "2147483550";
                                  -    fbInspectIFrame.style.backgroundColor = "transparent";
                                  -    fbInspectIFrame.style.display = "none";
                                  -    fbInspectIFrame.setAttribute("src", "about:blank");
                                  -    
                                  -    var size = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    fbInspectIFrame.style.width = size.width + "px";
                                  -    fbInspectIFrame.style.height = size.height + "px";
                                  -    
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectIFrame);
                                  -    
                                  -    var doc = fbInspectIFrame.contentWindow.document;
                                  -    
                                  -    var wait = function()
                                  -    {
                                  -        if (doc && doc.body)
                                  -        {
                                  -            doc.body.style.backgroundColor = "transparent";
                                  -            doc.body.style.backgroundImage = "url("+Application.location.skinDir+"pixel_transparent.gif)";
                                  -            doc.body.style.overflow = "hidden";
                                  -            doc.body.style.width = "100%";
                                  -            doc.body.style.height = "100%";
                                  -            doc.body.style.margin = "0";
                                  -            
                                  -            offlineFragment = doc.createDocumentFragment();
                                  -            
                                  -            fbInspectIFrameDoc = doc;
                                  -            
                                  -            fbInspectFrame = doc.documentElement;
                                  -            
                                  -            createBoxModelInspector2();
                                  -            createOutlineInspector2();
                                  -        }
                                  -        else
                                  -            setTimeout(wait, 50);
                                  -    }
                                  -    wait();
                                  -}
                                  -
                                  -        
                                  -
                                  -var createOutlineInspector2 = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = fbInspectIFrameDoc.createElement("div");
                                  -        el.id = name;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector2 = function createBoxModelInspector()
                                  -{
                                  -    boxModel = fbInspectIFrameDoc.createElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = fbInspectIFrameDoc.createElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxPadding = fbInspectIFrameDoc.createElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = fbInspectIFrameDoc.createElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = Firebug.browser.document.createElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.body.appendChild(fbInspectFrame);
                                  -}
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.body.removeChild(fbInspectFrame);
                                  -}
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = Firebug.browser.document.createElement("div");
                                  -        el.id = name;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = Firebug.browser.document.createElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = Firebug.browser.document.createElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxPadding = Firebug.browser.document.createElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = Firebug.browser.document.createElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/lib.js b/tags/firebug1.3a3/content/firebug/lib.js
                                  deleted file mode 100644
                                  index ee6a4886..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/lib.js
                                  +++ /dev/null
                                  @@ -1,3791 +0,0 @@
                                  -/*!
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent;
                                  -this.isFirefox = userAgent.indexOf("Firefox") != -1;
                                  -this.isOpera   = userAgent.indexOf("Opera") != -1;
                                  -this.isSafari  = userAgent.indexOf("AppleWebKit") != -1;
                                  -this.isIE      = userAgent.indexOf("MSIE") != -1;
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -
                                  -// . . . . . . . . . . . . . . . . .
                                  -this.isQuiksMode = document.compatMode == "BackCompat"; // problem with IE in persistent mode
                                  -this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -
                                  -this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -// . . . . . . . . . . . . . . . . .
                                  -/**/
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize application
                                  -    var isChromeContext = typeof window.FirebugApplication == "object";
                                  -    
                                  -    if (!isChromeContext)
                                  -    {
                                  -        findLocation();
                                  -    }
                                  -    
                                  -    FBTrace = FBL.FBTrace;
                                  -    
                                  -    if (isChromeContext) // persistent application
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        FBL.Application = window.FirebugApplication;
                                  -        FBL.Application.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Application.traceMessageQueue;
                                  -    }
                                  -    else // non-persistent application
                                  -    {
                                  -        // TODO: get preferences here...
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Application.browser = window;
                                  -        FBL.Application.destroy = destroyApplication;
                                  -    }
                                  -    
                                  -    this.isQuiksMode = FBL.Application.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    
                                  -    if (FBL.Application.isTraceMode) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    
                                  -    if (FBL.Application.isPersistentMode)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Application.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Application.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Application.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Application.browser.document;
                                  -    var body = null;
                                  -    if (body = doc.getElementsByTagName("body")[0])
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // persistent application - chrome document loaded
                                  -    if (FBL.Application.isPersistentMode && FBL.Application.isChromeContext)
                                  -    {
                                  -        //FBL.Firebug.Inspector.create();
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        if (!FBL.Application.isDevelopmentMode)
                                  -        {
                                  -            window.FirebugApplication.destroy();
                                  -        
                                  -            if (FBL.isIE)
                                  -                window.FirebugApplication = null;
                                  -            else
                                  -                delete window.FirebugApplication;
                                  -        }
                                  -    }
                                  -    // main document loaded
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Application
                                  -
                                  -this.Application = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application preferences
                                  -    openAtStartup: false,
                                  -    
                                  -    isBookmarletMode: false,
                                  -    isPersistentMode: false,
                                  -    isTraceMode: false,
                                  -    skin: "xp",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Application references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -this.Application.location =
                                  -{
                                  -    sourceDir: null,
                                  -    baseDir: null,
                                  -    skinDir: null,
                                  -    skin: null,
                                  -    app: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js(?:\.jgz)?)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var App = FBL.Application;
                                  -        var loc = App.location; 
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = loc.baseDir + "skin/" + App.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -            App.isDevelopmentMode = true;
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            if (fileOptions.indexOf("open") != -1)
                                  -                App.openAtStartup = true;
                                  -            
                                  -            if (fileOptions.indexOf("remote") != -1)
                                  -            {
                                  -                App.isBookmarletMode = true;
                                  -                App.openAtStartup = true;
                                  -            }
                                  -            
                                  -            if (fileOptions.indexOf("trace") != -1)
                                  -                App.isTraceMode = true;
                                  -            
                                  -            if (fileOptions.indexOf("persist") != -1)
                                  -                App.isPersistentMode = true;
                                  -        }
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if(innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval(innerOptions);
                                  -            // TODO:
                                  -        }
                                  -                
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.dumpPropreties("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    return elt.offsetWidth > 0 || elt.offsetHeight > 0 || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML";
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Application.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return event.button == 1 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return event.button == 2 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.detachEvent("on"+name, handler);
                                  -    else
                                  -        object.removeEventListener(name, handler, false);
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (document.all)
                                  -        e.cancelBubble = true;
                                  -    else
                                  -        e.stopPropagation();
                                  -                
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.addEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.addEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = FBL.Firebug.browser.document;
                                  -    var frames = FBL.Firebug.browser.window.frames;
                                  -    
                                  -    FBL.removeEvent(doc, name, handler);
                                  -    
                                  -    if (FBL.Firebug.chrome.type == "popup")
                                  -        FBL.removeEvent(FBL.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            FBL.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        /*
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.dumpProperties(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        e.onselectstart = function(){ return false };
                                  -        
                                  -    else // others
                                  -        e.onmousedown = function(){ return false };
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isArrayLike = function(object) {
                                  -    // TODO:
                                  -    //return instanceOf(object, "Array");
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != ""+value )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onError       Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -this.Ajax.initialize();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days) {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else var expires = "";
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    for(var i=0;i < ca.length;i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -this.eraseCookie = function(name)
                                  -{
                                  -    createCookie(name,"",-1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/reps.js b/tags/firebug1.3a3/content/firebug/reps.js
                                  deleted file mode 100644
                                  index 70fc002e..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/reps.js
                                  +++ /dev/null
                                  @@ -1,245 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";
                                  -                        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '" id="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', attr.nodeName.toLowerCase(),
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(attr.nodeValue),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/reps2.js b/tags/firebug1.3a3/content/firebug/reps2.js
                                  deleted file mode 100644
                                  index 5fd767f0..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/reps2.js
                                  +++ /dev/null
                                  @@ -1,1751 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK =
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "function";
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof(val);
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            //TODO: xxxpedro
                                  -            //else if (obj instanceof Ci.nsIDOMHistory) // do this first to avoid security 1000 errors?
                                  -            //    return false;
                                  -            else if (isIE && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && typeof obj.splice === 'function')
                                  -                return true;
                                  -            else if (isFinite(obj.length) && typeof obj.callee === 'function') // arguments
                                  -                return true;
                                  -            else if (obj instanceof HTMLCollection)
                                  -                return true;
                                  -            else if (obj instanceof NodeList)
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? ("#" + elt.id) : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         return elt.getAttribute("class")
                                  -             ? ("." + elt.getAttribute("class").split(" ")[0])
                                  -             : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof CSSStyleSheet;
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Event || object instanceof EventCopy;
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  diff --git a/tags/firebug1.3a3/content/firebug/selector.js b/tags/firebug1.3a3/content/firebug/selector.js
                                  deleted file mode 100644
                                  index a4c6d43c..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/selector.js
                                  +++ /dev/null
                                  @@ -1,981 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false;
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context);
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    chunker.lastIndex = 0;
                                  -    
                                  -    while ( (m = chunker.exec(selector)) !== null ) {
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = RegExp.rightContext;
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = false;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.match[ type ].exec( expr )) ) {
                                  -            var left = RegExp.leftContext;
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !part.match(/\W/) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.selectNode(a);
                                  -        aRange.collapse(true);
                                  -        bRange.selectNode(b);
                                  -        bRange.collapse(true);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/trace.js b/tags/firebug1.3a3/content/firebug/trace.js
                                  deleted file mode 100644
                                  index 02430797..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/trace.js
                                  +++ /dev/null
                                  @@ -1,177 +0,0 @@
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/firebug/tracePanel.js b/tags/firebug1.3a3/content/firebug/tracePanel.js
                                  deleted file mode 100644
                                  index 097753aa..00000000
                                  --- a/tags/firebug1.3a3/content/firebug/tracePanel.js
                                  +++ /dev/null
                                  @@ -1,62 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Application.isTraceMode) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Firebug.Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            module: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/content/notes.txt b/tags/firebug1.3a3/content/notes.txt
                                  deleted file mode 100644
                                  index 957415ca..00000000
                                  --- a/tags/firebug1.3a3/content/notes.txt
                                  +++ /dev/null
                                  @@ -1,928 +0,0 @@
                                  -IE 6: gzip + ETag != If-None-Match
                                  -http://abstractfinal.blogspot.com/2007/05/ie-6-gzip-etag-if-none-match.html
                                  -
                                  -JavaScript + Frames + IE 6 + gzip + “no-cache†Header = Trouble
                                  -http://www.akmattie.net/blog/2007/11/10/javascript-frames-ie-6-gzip-no-cache-header-trouble/
                                  -
                                  -IE problems
                                  -http://www.julienlecomte.net/blog/2007/08/13/#comment-258
                                  -
                                  -
                                  -http://support.microsoft.com/kb/321722/EN-US/
                                  -http://support.microsoft.com/default.aspx?scid=kb;LN;Q312496
                                  -http://support.microsoft.com/default.aspx?scid=kb;en-us;823386&Product=ie600
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a3
                                  -###################################################################################################
                                  -    - settings
                                  -        - url settings "remote"/"local" should be replace
                                  -            remote - should be the default
                                  -            local - should be replace by "dev"
                                  -
                                  -    - getfirebug release instructions page
                                  -        - what to test?
                                  -            - bookmarlet
                                  -            - UI
                                  -                - positioning
                                  -                - display
                                  -                - resizing
                                  -                - popup loading
                                  -                - popup/frame synchronization
                                  -                
                                  -            - different scenarios (XHTML, XSL+XML)
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a4
                                  -###################################################################################################
                                  -    - DOM Panel
                                  -    - basic doc? 
                                  -    - settings
                                  -    - getLocation - split('/') method
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a5
                                  -###################################################################################################
                                  -    - Computed Style Panel
                                  -    - CSS Panel
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a6
                                  -###################################################################################################
                                  -    - Script Panel
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Versions
                                  -###################################################################################################
                                  -    Firebug 1.3a2 - Revision: 3847
                                  -
                                  -    
                                  -###################################################################################################
                                  -BUGS
                                  -###################################################################################################
                                  -    - context.evaluate
                                  -    
                                  -    - define FBL.console to point to the global console
                                  -    
                                  -    - console should be installed in each Chrome window
                                  -    
                                  -    - commandLine API should be place in console.firebuglite.commandLineAPI
                                  -    
                                  -    - commandLine API not well defined, when in persistent mode
                                  -
                                  -    - When loading the bookmarlet in IE it shows a security warning
                                  -        https://www.google.com/accounts/ServiceLogin?service=adwords&cd=null&hl=en-US&ltmpl=adwords&passive=true&ifr=false&alwf=true&continue=https%3A%2F%2Fadwords.google.com%2Fselect%2Fgaiaauth%3Fapt%3DNone%26ugl%3Dtrue&sourceid=awo&subid=ww-en-et-ads-0-adsC-all
                                  -
                                  -    - problem with IE and and frame.close() function that uses $(). picking wrong window in persistent mode.
                                  -    
                                  -    - "close tag" node (</div>) should not be selectable, instead, when clicked it should select
                                  -      the "open tag" node (<div>).
                                  -    
                                  -    - remove events added in disableTextSelection
                                  -
                                  -    - rename the id "FirebugChrome" to "FirebugFrame" or "FirebugChromeFrame" or "FirebugWindow"
                                  -    
                                  -    - window.onerror is being turned off when UI is minimized (and should not)
                                  -    
                                  -    - put IE6CSS in injected chrome
                                  -    
                                  -OK  - context is not being properly handled in persistent mode, when using
                                  -      the autocomplete function in commandLine. It is using the wrong "window".
                                  -      
                                  -OK  - tabLStyle reference in Chrome
                                  -
                                  -OK  - commandLine API. Firebug.browser isn't avaiable when the library is initialized
                                  -    
                                  -OK  - Chrome options inheritance (extend) is not working as expected
                                  -
                                  -OK  - Popup in IE, problem in the draw method
                                  -
                                  -OK  - when NOT in injected mode, the new application load system doesn't work.
                                  -
                                  -OK  - when in injected DEVELOPMENT mode, in XHTML documents, Google Chrome
                                  -      is having problems with the loading order of the multiple scripts.
                                  -
                                  -OK  - IE6 and problem with CSS. Selected element in HTML Tree.
                                  -    
                                  -OK  - bookmarlet fail in getfirebug.com/lite.html
                                  -    
                                  -OK  - reference to wrong URL in var inspectFrameStyle in Inspector module.
                                  -     
                                  -OK  - nodeControl in HTMLTree should not fire the node highlight (include rule in delegation func)
                                  -    
                                  -1.4 - The CSS rule of popup hide the "main controls" element, but the search box is inside of it
                                  -      and is getting hidden 
                                  -
                                  -
                                  -###################################################################################################
                                  -Domplate/Reps
                                  -###################################################################################################
                                  -
                                  -    IE6:
                                  -        - create special rules to IE6 in a separated file
                                  -
                                  -    Opera:
                                  -        - native function: "prototype" in fn == true && listed in for..in
                                  -        - user function: "prototype" in fn == true && not listed in for..in
                                  -
                                  -      
                                  -
                                  -###################################################################################################
                                  -Preferences Brainstorm
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Preferences
                                  ----------------------------------------------------------------------------------------------------
                                  -<script>
                                  -Firebug.loadPrefs({
                                  -    Chrome: {
                                  -        skin: "xp",
                                  -        height: 400
                                  -    }
                                  -});
                                  -</script>
                                  -
                                  -    - Console
                                  -        - override (for non-FF browsers)
                                  -
                                  -    - HTML
                                  -        - ?
                                  -        - ignoreFirebugElements
                                  -    
                                  -    - DOM
                                  -        - show DOM members
                                  -        - ...
                                  -
                                  -    - Chrome
                                  -        - open
                                  -        - type
                                  -        - skin
                                  -        
                                  -        - Frame
                                  -            - height
                                  -    
                                  -        - Popup
                                  -            - top
                                  -            - left
                                  -            - width
                                  -            - height
                                  -
                                  -    - Application
                                  -        - publish
                                  -        - remote
                                  -        - persist
                                  -        - trace: "all"
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Application Preferences
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    ------------------
                                  -    chrome
                                  -    ------------------
                                  -    - trace
                                  -    - popup
                                  -    
                                  -    - frame
                                  -        - height
                                  -        
                                  -    - popup
                                  -        - height
                                  -        - width (popup only)
                                  -        - top (popup only)
                                  -        - left (popup only)
                                  -
                                  -    - skin
                                  -    
                                  -    - override
                                  -
                                  -    ------------------
                                  -    modes
                                  -    ------------------
                                  -    - trace
                                  -    - persist
                                  -
                                  -
                                  -========================================================================
                                  -===== Chrome States ====================================================
                                  -========================================================================
                                  -
                                  -===== Window ===========================================================
                                  -    - type (frame, popup)
                                  -    - height
                                  -    - width (popup)
                                  -    - position (popup)
                                  -
                                  -===== Console ==========================================================
                                  -    - console commandLine history
                                  -
                                  -===== Tab ==============================================================
                                  -  - active Panel
                                  -
                                  -
                                  -
                                  -========================================================================
                                  -===== Panel States =====================================================
                                  -========================================================================
                                  -    - offset (scroll position)
                                  -    - toolbarButtons
                                  -    - statusBar
                                  -    
                                  -    - isSearchable
                                  -    - busca
                                  -    
                                  -    - consoleVisible
                                  -    - sidePanelVisible
                                  -
                                  -===== SidePanel =======================================================
                                  -    - offset (scroll position)
                                  -    - sidePanelWidth
                                  -    - activeSidePanel
                                  -
                                  -
                                  -
                                  -    
                                  -###################################################################################################
                                  -Statistics
                                  -###################################################################################################
                                  -    Use Google Analytics to track Firebug Lite statistics.
                                  -    It could run inside the Chrome iframe (no global pollution).
                                  -    Not called when used locally, included when in development mode.
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -XML + XSL
                                  -###################################################################################################
                                  -Opera doesn't have document.elementFromPoint in XML documents
                                  -
                                  -revise the use of createElement and createGlobalElement
                                  -    createElement --> createChromeElement
                                  -    createGlobalElement --> createElement
                                  -
                                  -
                                  -###################################################################################################
                                  -Missing
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Chrome context synchronize
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - frame.isVisible --> isOpen?
                                  -OK  - Firebug.chromeMap.frame & Firebug.chromeMap.popup
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Popup
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - problem with global events when in popup window
                                  -      add/removeGlobalEvent looks for iframes only, excluding popup windows.
                                  -      
                                  -    - Frame/Popup settings
                                  -    
                                  -OK  - Synchronize chromes
                                  -        
                                  -    OK  - detach and reattach methods
                                  -    
                                  -    OK  - dispatch detach and reattach methods to panels  
                                  -    
                                  -    OK  - Chrome Frame should have different states and handlers when in minichrome mode
                                  -        
                                  -    OK  - mini-chrome should be "spans" and not "divs"
                                  -        
                                  -    OK  - onPressF12 should not be disabled when chrome frame closes
                                  -        
                                  -    OK  - refactor panel. each panel should have a single panelContentNode that will be shared
                                  -          across Chrome windows.
                                  -          
                                  -    OK  - divide Chrome.initialize and Chrome.create. addPanel() should be added only in create()
                                  -        
                                  -    OK  - margin in HTML tree isn't being synchronized
                                  -        
                                  -    OK  - selected element in HTML tree isn't being synchronized
                                  -    
                                  -Seems to be fixed - popup chrome in Opera isn't being initialized when NOT in bookmarlet mode. 
                                  -      Maybe the best way to detect when the chrome is loaded is the Joe Hewitt old way putting 
                                  -      JS in the end of HTML body. This is not a major issue since bookmarlet mode will be
                                  -      allways active when in production.
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Loading
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Firebug.initialize should
                                  -        - create console namespace
                                  -    
                                  -    - window onerror - wrong time 
                                  -    
                                  -    - Check the initializing order. 
                                  -    
                                  -OK  - Console.create() is being called in the wrong time
                                  -    
                                  -OK  - Check create() and initialize() methods of Modules and Panels.
                                  -    OK  - HTML panel create() will be called twice (1 for frame and 1 for popup)
                                  -    
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Panel event delegation?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Preferences?
                                  ----------------------------------------------------------------------------------------------------
                                  -    - FBL.application
                                  -    - FBL.preferences
                                  -    
                                  -
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Tool Buttons
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - toolButtons
                                  -    OK  - default button
                                  -    OK  - toggle button (inspect, edit html)
                                  -    
                                  -OK  - inherits from Controller
                                  -OK  - it has one of 2 types (normal and toggle buttons)
                                  -OK  - it has, on a giving time, one of 2 states (pressed, and unpressed)
                                  -    
                                  -    - button location: Fixed buttons (inspect) and Panel buttons 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  - UI
                                  ----------------------------------------------------------------------------------------------------
                                  - OK - IE problem with Console and Trace panels. Scroll isnt working!!
                                  -      maybe a dummy div solves the problem? because the HTML has one, and scrolls fine
                                  -    
                                  - OK - IE problem with tree node control positioning [+]
                                  -     OK - fix is to use absolute position in the control and the left and right panels
                                  -          need to check the z-indexes of the overall interface.
                                  -
                                  - 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  - DOM
                                  ----------------------------------------------------------------------------------------------------
                                  - 
                                  -Sorting Order:
                                  -    First letter uppercase
                                  -    underscore followed by uppercase letter
                                  -    underscore followed by lowercase letter
                                  -    First letter lowercase
                                  -
                                  -
                                  -###################################################################################################
                                  -User Interface
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -General
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Where exactly the errors indicator should be placed in the UI?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -MiniChrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - 
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Skins
                                  ----------------------------------------------------------------------------------------------------
                                  -     OK - port changes in XP skin to the "classic" and "light" ones
                                  -     
                                  -    1.4 - divide .css files? so new skins can be easier to write, and changes in UI can be easily 
                                  -          ported across skins 
                                  -        
                                  -    1.4 - each skin has in his own folder a file called "firebug.json" (or similar)
                                  -    1.4 - improve the build skin methods in FBDev
                                  -    1.4 - loadJSON method
                                  -    1.4 - loadSkin method
                                  -
                                  -
                                  -###################################################################################################
                                  -TODO's
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -ScrollArea Class
                                  ----------------------------------------------------------------------------------------------------
                                  -    - isScrolled
                                  -    - isVerticalScrolled
                                  -    - isHorizontalScrolled
                                  -    - isScrolledToBottom
                                  -    - scrollToElement(el)
                                  -    - isElementVisible(el)
                                  -    - interceptMouseWheel
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Interface
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Highlighted nodes in HTML tree with round corners (with OS color)
                                  -        - current implementation isn't good (it uses both CSS hack and JS)
                                  -        - Opera round corner SVG trick
                                  -        - best way to go is dynamically create a CSS rule according each browser 
                                  -    
                                  -    - UI styling
                                  -        - (?) detect Windows theme (XP or classic?)
                                  -        - (?) detect OS (windows or mac?)
                                  -    
                                  -    - error UI indications (like FB in status bar)
                                  -OK  - UI indication when chrome is hidden
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Opera problem with onunload and popups (context is not being destroyed)
                                  - OK - frame, frameStyle, consoleFrame, consoleBody
                                  - 
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Controllers
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) add option to skip frames
                                  - OK - add controllers Class
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) How to proceed when the console global variable is already defined?
                                  -    - (?) how to auto-load FirebugLite + Extension in a single bookmarlet?
                                  -    
                                  -    - custom Errors = throw new FirebugError("message")
                                  -    - better location detection to allow advanced settings via URL 
                                  - OK - create/destroy, initialize/shutdown. rename functions to this pattern.
                                  - OK - context
                                  - OK - library loading in different windows
                                  - ~~ - persitent popups
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Problem with id conflits. The same attribute is being used in the document
                                  -      elements and in the HTML Tree, in the user interface.
                                  -
                                  - OK - Better handling of switching tab contexts (selectedTab, rightPanelVisible)
                                  -    - Check if there's a problem using the Sizzle selector engine in the code
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Lib
                                  ----------------------------------------------------------------------------------------------------
                                  -OK FBL.$
                                  -OK FBL.$$
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Console
                                  ----------------------------------------------------------------------------------------------------
                                  -  $0
                                  -  $1
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Events
                                  ----------------------------------------------------------------------------------------------------
                                  - OK - use of dispatch
                                  - OK - handle disble text selection on Vertical Scrolling
                                  -    - handle disble mouse wheel in Chrome, when in frame mode?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -CommandLine
                                  ----------------------------------------------------------------------------------------------------
                                  -    - refactor commandLine to hide internal methods and properties.
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -FBL 1.4
                                  -###################################################################################################
                                  -    - Tests
                                  -        - Unit Tests
                                  -        - Manual Tests
                                  -        - Test generation?
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug
                                  -###################################################################################################
                                  -Domplate (crossport to FB) Fixed accidental global variable declaration in the compiled string.
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug bugs
                                  -###################################################################################################
                                  -
                                  -Reps - r1088 - Array
                                  -http://code.google.com/p/fbug/source/browse/branches/firebug1.3/content/firebug/reps.js?spec=svn1222&r=1088
                                  -
                                  -Global:
                                  -http://code.google.com/p/fbug/issues/detail?id=1017&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Gmail:
                                  -http://code.google.com/p/fbug/issues/detail?id=1977&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Form freak:
                                  -http://code.google.com/p/fbug/issues/detail?id=534&q=array&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -BRAINSTORMING SECTION
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -
                                  -###################################################################################################
                                  -getPixelValue
                                  -###################################################################################################
                                  -Dean Edwards:
                                  -http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value) {
                                  -if (PIXEL.test(value)) return parseInt(value);
                                  -var style = element.style.left;
                                  -var runtimeStyle = element.runtimeStyle.left;
                                  -element.runtimeStyle.left = element.currentStyle.left;
                                  -element.style.left = value || 0;
                                  -value = element.style.pixelLeft;
                                  -element.style.left = style;
                                  -element.runtimeStyle.left = runtimeStyle;
                                  -return value;
                                  -};
                                  -
                                  -###################################################################################################
                                  -Library Expose
                                  -###################################################################################################
                                  -    - if a FBLite extension can be dynamically loaded, the FBL namespace should be exposed 
                                  -    - if the FBL is exposed inside the iframe, it is less visible, and less conflictable 
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -FB vs FBLite
                                  -###################################################################################################
                                  -
                                  -FB
                                  -    - Each Panel has its own window
                                  -    - A single Firebug application run across all browser tabs
                                  -    - The Firebug application is persistent, that is, it can live after page change, or reload 
                                  -
                                  -FBLite
                                  -    - All Chrome Panels runs in the same window, the chrome window
                                  -    - The FirebugLite application run in a single browser tab
                                  -    - The Firebug application isn't persistent 
                                  -
                                  -
                                  -###################################################################################################
                                  -Chrome Design
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - {?) panelControl
                                  -    - panelBar
                                  -    - panel // active panel
                                  -    
                                  -    - sidePanel // active side panel
                                  -    - commandLine
                                  -
                                  -
                                  -    - selectPanel()
                                  -    - selectSidePanel()
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Panel
                                  ----------------------------------------------------------------------------------------------------
                                  -    - {?) panelControl
                                  -    - panelBar
                                  -    
                                  -    - sidePanel // active side panel
                                  -    - commandLine
                                  -    
                                  -    
                                  -    - isVisible // may be offline, in a documentFragment
                                  -    - show
                                  -    - hide
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -PanelControl
                                  ----------------------------------------------------------------------------------------------------
                                  -    - registerPanel
                                  -    - removePanel
                                  -    - removePanels
                                  -    - selectPanel
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -PanelBar
                                  ----------------------------------------------------------------------------------------------------
                                  -    - selectPanel()
                                  -    
                                  -
                                  -###################################################################################################
                                  -Persistent Mode
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Loading Process
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -1st Stage - Load the application in "offscreen mode", with only the console 
                                  -            functions available.
                                  -
                                  -2nd Stage - Wait the page load, and then create the chrome window
                                  -            (frame or popup, based on preferences).
                                  -
                                  -3rd Stage - Wait the chrome page load, and the install the application
                                  -            in the chrome window context.
                                  -
                                  -4th Stage - Load the full application in chrome window, synchronizes it with
                                  -            the first application loaded, and transfer the console
                                  -            functions to the new "screen mode" application.
                                  -
                                  -----------------------------------
                                  -Pros
                                  ----------------------------------------------------------------------------------------------------
                                  -    More safe
                                  -        - no global namespace pollution, except for the "console" variable
                                  -        - no internal code exposure
                                  -    
                                  -    Allows persistent popups
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Cons
                                  ----------------------------------------------------------------------------------------------------
                                  -    More complex
                                  -    More difficult to debug low level functions
                                  -    less stable?
                                  -
                                  -
                                  -###################################################################################################
                                  - Debugger
                                  -###################################################################################################
                                  -MSIE Script Debugger Sample
                                  -http://msdn.microsoft.com/en-us/magazine/cc301316.aspx
                                  -
                                  -
                                  -###################################################################################################
                                  - Inherited Styles
                                  -###################################################################################################
                                  -
                                  -    Some of that functionality is built into DOM Inspector, but you can look at 
                                  -    the parts that Firebug does itself.
                                  -
                                  -    In lib.js there is a list of properties ("inheritedStyleNames") that can 
                                  -    be automatically inherited, so for a given element it looks for such 
                                  -    properties in the rules being applied to each ancestor. 
                                  -    (That list doesn't include the special print or aural properties.)
                                  -
                                  -    The table here (http://www.w3.org/TR/CSS21/propidx.html) shows 
                                  -    which properties are inherited by default.
                                  -
                                  -    "updateCascadeView" in css.js will also be of interest.
                                  -
                                  -    Via http://code.google.com/p/fbug/source/browse/ you can look at the files:
                                  -
                                  -    branches/firebug1.2/content/firebug/css.js
                                  -    branches/firebug1.2/content/firebug/lib.js
                                  -    
                                  -    ----------------------------------------------------------------------------
                                  -
                                  -    Full CSS property table
                                  -    http://www.w3.org/TR/CSS21/propidx.html
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -To organize
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Document Cache
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -[ELEMENT_ID]
                                  -    - element
                                  -    - context
                                  -    - styles
                                  -    - MD5
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -DOMPLATE
                                  ----------------------------------------------------------------------------------------------------
                                  -IE problems with templates
                                  -
                                  -1 - class name attributes of objects
                                  -
                                  -2 - colon after the last property of a object
                                  -
                                  -3 - event handlers  
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Disable Text Selection
                                  -###################################################################################################
                                  -
                                  -<script language="JavaScript1.2">
                                  -
                                  -function disabletext(e){
                                  -return false
                                  -}
                                  -
                                  -function reEnable(){
                                  -return true
                                  -}
                                  -
                                  -//if the browser is IE4+
                                  -document.onselectstart=new Function ("return false")
                                  -
                                  -//if the browser is NS6
                                  -if (window.sidebar){
                                  -document.onmousedown=disabletext
                                  -document.onclick=reEnable
                                  -}
                                  -</script>
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -XPATH
                                  -###################################################################################################
                                  -
                                  -function getXPath(node, path) {
                                  -  path = path || [];
                                  -  if(node.parentNode) {
                                  -    path = getXPath(node.parentNode, path);
                                  -  }
                                  -
                                  -  if(node.previousSibling) {
                                  -    var count = 1;
                                  -    var sibling = node.previousSibling
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;}
                                  -      sibling = sibling.previousSibling;
                                  -    } while(sibling);
                                  -    if(count == 1) {count = null;}
                                  -  } else if(node.nextSibling) {
                                  -    var sibling = node.nextSibling;
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {
                                  -        var count = 1;
                                  -        sibling = null;
                                  -      } else {
                                  -        var count = null;
                                  -        sibling = sibling.previousSibling;
                                  -      }
                                  -    } while(sibling);
                                  -  }
                                  -
                                  -  if(node.nodeType == 1) {
                                  -    path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : ''));
                                  -  }
                                  -  return path;
                                  -};
                                  -
                                  -
                                  -// Getting result
                                  -document.evaluate("/html/body/div/ul/li[2]", document, null, XPathResult.ANY_TYPE, null ).iterateNext()
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -DomPlate changes pieces
                                  -###################################################################################################
                                  -
                                  -//Returns true if it is a DOM node
                                  -function isNode(o){
                                  -  return (
                                  -    typeof Node === "object" ? o instanceof Node : 
                                  -    typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string"
                                  -  );
                                  -}
                                  -
                                  -//Returns true if it is a DOM element    
                                  -function isElement(o){
                                  -  return (
                                  -    typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2
                                  -    typeof o === "object" && o.nodeType === 1 && typeof o.nodeName==="string"
                                  -);
                                  -}
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Advanced CSS Features brainstorm
                                  -###################################################################################################
                                  -
                                  -
                                  -styleCache = {};
                                  -
                                  -// First style to add to cache is the inline styles
                                  -for(cid in documentCache)
                                  -{
                                  -    styleCache[cid] = [];
                                  -    styleCache[cid].push();
                                  -}
                                  -
                                  -// for each stylesheet 
                                  -for(stylesheet in stylesheets)
                                  -{
                                  -    // look at each rule
                                  -    for(rule in stylesheet)
                                  -    {
                                  -        // get the rule's selector, and find all elements in document
                                  -        var els = Firebug.Selector(rule.selector);
                                  -        
                                  -        // for each element found
                                  -        for(var i=0, el; el=els[i]; i++)
                                  -        {
                                  -            var cid = el[cacheID];
                                  -            
                                  -            // Add style info in the cache stack of styles of the element 
                                  -            styleCache[cid].push({
                                  -                stylesheet: stylesheet,
                                  -                lineNumber: getLineNumber(rule, stylesheet),
                                  -                fileName: getFileName(rule, stylesheet),
                                  -                selector: rule.selector,
                                  -                styles: rule.styles
                                  -            });
                                  -        }
                                  -    }
                                  -
                                  -}
                                  -
                                  -
                                  -###################################################################################################
                                  -Advanced CSS Features Implementation
                                  -###################################################################################################
                                  -
                                  -function getInlineStyles(el)
                                  -{
                                  -    var style = el.style;
                                  -    var r = {}, l, prop;
                                  -    
                                  -    // Good browsers first
                                  -    if (l = style.length)
                                  -    {
                                  -        for(var i=0; i<l; i++)
                                  -        {
                                  -            prop = style[i];
                                  -            r[toCamelCase(prop)] = style.getPropertyValue(prop);
                                  -        }
                                  -    }
                                  -    // Sad browsers last
                                  -    else
                                  -    {
                                  -      for(var prop in style)
                                  -        if (ignoreIEStyleProperties.indexOf(prop) == -1 && 
                                  -            isIEInlineStyleProperty(el, prop))
                                  -                r[prop] = style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -var ignoreIEStyleProperties = " cssText accelerator ";
                                  -function isIEInlineStyleProperty(el, prop)
                                  -{
                                  -    var r = false;
                                  -    
                                  -    if (typeof el.style[prop] == "string")
                                  -    {
                                  -        r = !!el.style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -
                                  -function toCamelCase(s)
                                  -{
                                  -    return s.replace(_selectorCaseMatch, _toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -function toSelectorCase(s)
                                  -{
                                  -  return s.replace(_camelCaseMatch, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var _camelCaseMatch = /([A-Z])/g;
                                  -var _selectorCaseMatch = /\-(.)/g; 
                                  -function _toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  diff --git a/tags/firebug1.3a3/skin/classic/errorIcon.png b/tags/firebug1.3a3/skin/classic/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/firebug.css b/tags/firebug1.3a3/skin/classic/firebug.css
                                  deleted file mode 100644
                                  index f264f2e2..00000000
                                  --- a/tags/firebug1.3a3/skin/classic/firebug.css
                                  +++ /dev/null
                                  @@ -1,797 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #d4d0c8 0 0;
                                  -    height: 28px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 28px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 6px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 6px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #d4d0c8 #fff #d4d0c8 #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 7px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #d4d0c8 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #d4d0c8;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 28px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _margin-left: -11px;    
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a3/skin/classic/firebug.html b/tags/firebug1.3a3/skin/classic/firebug.html
                                  deleted file mode 100644
                                  index b8281fb9..00000000
                                  --- a/tags/firebug1.3a3/skin/classic/firebug.html
                                  +++ /dev/null
                                  @@ -1,207 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -          
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar">
                                  -<span><a class="fbHover"><b>body</b></a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div.class</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">body</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -            </span>
                                  -            
                                  -          </span>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/skin/classic/firebug.png b/tags/firebug1.3a3/skin/classic/firebug.png
                                  deleted file mode 100644
                                  index 123545a1..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/infoIcon.png b/tags/firebug1.3a3/skin/classic/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/pixel_transparent.gif b/tags/firebug1.3a3/skin/classic/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/search.gif b/tags/firebug1.3a3/skin/classic/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/search.png b/tags/firebug1.3a3/skin/classic/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/sprite.png b/tags/firebug1.3a3/skin/classic/sprite.png
                                  deleted file mode 100644
                                  index 3fe97bb6..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabHoverLeft.png b/tags/firebug1.3a3/skin/classic/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 5852d8d7..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabHoverMid.png b/tags/firebug1.3a3/skin/classic/tabHoverMid.png
                                  deleted file mode 100644
                                  index e7c9ba75..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabHoverRight.png b/tags/firebug1.3a3/skin/classic/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3c62c981..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabLeft.png b/tags/firebug1.3a3/skin/classic/tabLeft.png
                                  deleted file mode 100644
                                  index 3368de73..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabMid.png b/tags/firebug1.3a3/skin/classic/tabMid.png
                                  deleted file mode 100644
                                  index b2cfeac5..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tabRight.png b/tags/firebug1.3a3/skin/classic/tabRight.png
                                  deleted file mode 100644
                                  index 8470a95e..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/titlebarMid.png b/tags/firebug1.3a3/skin/classic/titlebarMid.png
                                  deleted file mode 100644
                                  index e9a74163..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/toolbarMid.png b/tags/firebug1.3a3/skin/classic/toolbarMid.png
                                  deleted file mode 100644
                                  index a1257f52..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tree_close.gif b/tags/firebug1.3a3/skin/classic/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/tree_open.gif b/tags/firebug1.3a3/skin/classic/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/classic/warningIcon.png b/tags/firebug1.3a3/skin/classic/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a3/skin/classic/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/close.png b/tags/firebug1.3a3/skin/light/close.png
                                  deleted file mode 100644
                                  index ada59d8a..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/close.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/closeHover.png b/tags/firebug1.3a3/skin/light/closeHover.png
                                  deleted file mode 100644
                                  index be0145d2..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/closeHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/detach.png b/tags/firebug1.3a3/skin/light/detach.png
                                  deleted file mode 100644
                                  index 25d97e03..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/detach.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/detachHover.png b/tags/firebug1.3a3/skin/light/detachHover.png
                                  deleted file mode 100644
                                  index edb81253..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/detachHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/errorIcon.png b/tags/firebug1.3a3/skin/light/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/firebug.css b/tags/firebug1.3a3/skin/light/firebug.css
                                  deleted file mode 100644
                                  index 8cfcd20e..00000000
                                  --- a/tags/firebug1.3a3/skin/light/firebug.css
                                  +++ /dev/null
                                  @@ -1,797 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    height: 23px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 5px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 7px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    height: 23px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 23px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 23px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #e5e5e5 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #eee;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _margin-left: -11px;    
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a3/skin/light/firebug.html b/tags/firebug1.3a3/skin/light/firebug.html
                                  deleted file mode 100644
                                  index b8281fb9..00000000
                                  --- a/tags/firebug1.3a3/skin/light/firebug.html
                                  +++ /dev/null
                                  @@ -1,207 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -          
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar">
                                  -<span><a class="fbHover"><b>body</b></a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div.class</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">body</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -            </span>
                                  -            
                                  -          </span>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/skin/light/firebug.png b/tags/firebug1.3a3/skin/light/firebug.png
                                  deleted file mode 100644
                                  index 338dc5a1..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/infoIcon.png b/tags/firebug1.3a3/skin/light/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/pixel_transparent.gif b/tags/firebug1.3a3/skin/light/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/search.gif b/tags/firebug1.3a3/skin/light/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/search.png b/tags/firebug1.3a3/skin/light/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/sprite.png b/tags/firebug1.3a3/skin/light/sprite.png
                                  deleted file mode 100644
                                  index d117e123..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabHoverLeft.png b/tags/firebug1.3a3/skin/light/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 708215d2..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabHoverMid.png b/tags/firebug1.3a3/skin/light/tabHoverMid.png
                                  deleted file mode 100644
                                  index 6ff9a864..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabHoverRight.png b/tags/firebug1.3a3/skin/light/tabHoverRight.png
                                  deleted file mode 100644
                                  index 9f02130d..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabLeft.png b/tags/firebug1.3a3/skin/light/tabLeft.png
                                  deleted file mode 100644
                                  index 8c502135..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabMid.png b/tags/firebug1.3a3/skin/light/tabMid.png
                                  deleted file mode 100644
                                  index 0a00b60d..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tabRight.png b/tags/firebug1.3a3/skin/light/tabRight.png
                                  deleted file mode 100644
                                  index b43c352d..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/titlebarMid.png b/tags/firebug1.3a3/skin/light/titlebarMid.png
                                  deleted file mode 100644
                                  index 5fc63e79..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/toolbarMid.png b/tags/firebug1.3a3/skin/light/toolbarMid.png
                                  deleted file mode 100644
                                  index 8520aab2..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tree_close.gif b/tags/firebug1.3a3/skin/light/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/tree_open.gif b/tags/firebug1.3a3/skin/light/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/light/warningIcon.png b/tags/firebug1.3a3/skin/light/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a3/skin/light/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/errorIcon.gif b/tags/firebug1.3a3/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/errorIcon.png b/tags/firebug1.3a3/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/firebug.IE6.css b/tags/firebug1.3a3/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/tags/firebug1.3a3/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/tags/firebug1.3a3/skin/xp/firebug.css b/tags/firebug1.3a3/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index 74daa9ba..00000000
                                  --- a/tags/firebug1.3a3/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,1624 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow,
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow,
                                  -.memberRow.hasChildren.opened > .memberLabelCell > .memberLabel,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 11px;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren > .memberLabelCell > .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a3/skin/xp/firebug.html b/tags/firebug1.3a3/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index 60254c34..00000000
                                  --- a/tags/firebug1.3a3/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,207 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -          
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar">
                                  -<span><a class="fbHover"><b>body</b></a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div.class</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">iframe</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">body</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">html</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -<span>&lt;</span><span><a class="fbHover">div</a></span>
                                  -            </span>
                                  -            
                                  -          </span>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/skin/xp/firebug.png b/tags/firebug1.3a3/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/infoIcon.gif b/tags/firebug1.3a3/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/infoIcon.png b/tags/firebug1.3a3/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/pixel_transparent.gif b/tags/firebug1.3a3/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/roundCorner.svg b/tags/firebug1.3a3/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a3/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a3/skin/xp/search.gif b/tags/firebug1.3a3/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/search.png b/tags/firebug1.3a3/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/sprite.png b/tags/firebug1.3a3/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabHoverLeft.png b/tags/firebug1.3a3/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabHoverMid.png b/tags/firebug1.3a3/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabHoverRight.png b/tags/firebug1.3a3/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabLeft.png b/tags/firebug1.3a3/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabMid.png b/tags/firebug1.3a3/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tabRight.png b/tags/firebug1.3a3/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/titlebarMid.png b/tags/firebug1.3a3/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/toolbarMid.png b/tags/firebug1.3a3/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tree_close.gif b/tags/firebug1.3a3/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/tree_open.gif b/tags/firebug1.3a3/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/warningIcon.gif b/tags/firebug1.3a3/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/skin/xp/warningIcon.png b/tags/firebug1.3a3/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a3/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a3/test/dom.html b/tags/firebug1.3a3/test/dom.html
                                  deleted file mode 100644
                                  index 4cd62c9a..00000000
                                  --- a/tags/firebug1.3a3/test/dom.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.domplatemin.js#remote"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote,trace');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/test/domplate.html b/tags/firebug1.3a3/test/domplate.html
                                  deleted file mode 100644
                                  index e36e0dc6..00000000
                                  --- a/tags/firebug1.3a3/test/domplate.html
                                  +++ /dev/null
                                  @@ -1,125 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  
                                  -  <script type="text/javascript">
                                  -    var testDomplate = function()
                                  -    {
                                  -      test3();
                                  -    }
                                  -      
                                  -    window.ssonload = function()
                                  -    {
                                  -        var x = "local";
                                  -        eval("x=function(){alert(0)}");
                                  -        alert(x)
                                  -        alert(window.x)
                                  -        x();
                                  -    }    
                                  -    
                                  -    var test1 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.append({}, document.body, template);
                                  -        }    
                                  -    }    
                                  -    
                                  -    var test2 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.append({object: inputObject}, document.body, template);
                                  -        }    
                                  -    }
                                  -    
                                  -    
                                  -    var test3 = function()
                                  -    {
                                  -        var el = document.getElementById("d2");
                                  -        //el = document.body;
                                  -        
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                   BUTTON({"class": "green",
                                  -                          checked: "true",
                                  -                          type: "checkbox",
                                  -                          onclick: "$onButtonClick"},
                                  -                       "$object.label"
                                  -                    ),
                                  -            
                                  -                onButtonClick: function(event)
                                  -                {
                                  -                    alert("Hello World!");
                                  -                }
                                  -            });
                                  -            
                                  -            template.tag.insertAfter({object: inputObject}, el, template);
                                  -        }
                                  -    }
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -  </script>
                                  -  <script type="text/javascript" src="../content/devmode.js"></script>
                                  -  
                                  -  <!-- 
                                  -  <script src="../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <script src="zdomplate-1.1a.js" type="text/javascript"></script>
                                  -   -->
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <div id="d1">1</div>
                                  -  <div id="d2">2</div>
                                  -  <div id="d3">3</div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/dom-attributes.html b/tags/firebug1.3a3/test/domplate/dom-attributes.html
                                  deleted file mode 100644
                                  index 907c535f..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/dom-attributes.html
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -                        
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                       BUTTON({"class": "green",
                                  -                              checked: "true",
                                  -                              type: "checkbox",
                                  -                              onclick: "$onButtonClick"},
                                  -                           "$object.label"
                                  -                        ),
                                  -
                                  -                    onButtonClick: function(event)
                                  -                    {
                                  -                        alert("Hello World!");
                                  -                    }
                                  -                });
                                  -
                                  -
                                  -            template.tag.replace({object: inputObject}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }  
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/dom-event.html b/tags/firebug1.3a3/test/domplate/dom-event.html
                                  deleted file mode 100644
                                  index 9fb1a940..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/dom-event.html
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                            DIV({onclick: "$handleClick"},
                                  -
                                  -                               "$item"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    handleClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        alert(target.innerHTML);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/dom-properties.html b/tags/firebug1.3a3/test/domplate/dom-properties.html
                                  deleted file mode 100644
                                  index 59649351..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/dom-properties.html
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var cars = [
                                  -              {name: "Honda Pilot", price: " $36,820 - $49,920"},
                                  -              {name: "Chevrolet Aveo", price: "$13,270 - $15,770"},
                                  -              {name: "Toyota Corolla", price: " $14,835 - $23,480"}
                                  -            ];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "array",
                                  -                            DIV({_myprop: "$item", onclick: "$onClick"},
                                  -                                "$item.name"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    onClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        var car = target.myprop;
                                  -                        alert(car.price);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: cars}, parentNode, template);
                                  -                            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/dynamic-class-attribute.html b/tags/firebug1.3a3/test/domplate/dynamic-class-attribute.html
                                  deleted file mode 100644
                                  index 76030fda..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/dynamic-class-attribute.html
                                  +++ /dev/null
                                  @@ -1,71 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputData = ["Honda", "Chevrolet", "Toyota", "Ford", "Pontiac",
                                  -                "Dodge", "Mazda", "Nissan", "Volkswagen", "Hyundai"];
                                  -
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                DIV(
                                  -                  FOR("brand", "$carBrands",
                                  -                    DIV({"class": "carBrand $brand|getBrandClass",
                                  -                         $myFaforite: "$brand|isMyFavorite"},
                                  -                      "$brand"
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              isMyFavorite: function(brand) {
                                  -                return (brand == "Nissan");
                                  -              },
                                  -            
                                  -              getBrandClass: function(brand) {
                                  -                return "brand-" + brand;
                                  -              }
                                  -            });
                                  -            
                                  -            template.tag.replace({carBrands: inputData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .carBrand {
                                  -      font-weight: bold;
                                  -    }
                                  -    
                                  -    .myFaforite {
                                  -      color: red;
                                  -    }
                                  -    
                                  -    .brand-Ford {
                                  -      color: green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/for-loop-custom-iterator.html b/tags/firebug1.3a3/test/domplate/for-loop-custom-iterator.html
                                  deleted file mode 100644
                                  index a1c28c9d..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/for-loop-custom-iterator.html
                                  +++ /dev/null
                                  @@ -1,64 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            var searchResult = {
                                  -              title: "corvete.jpg",
                                  -              summary: "Chevrolet Corvette",
                                  -              url: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              clickUrl: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              RefererUrl: "http://www.neiu.edu/~ssalas/FramePage.htm",
                                  -              FileSize: 103936,
                                  -              FileFormat: "jpeg",
                                  -              Height: 768,
                                  -              Width: 1024
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE(
                                  -                  FOR("member", "$object|getMembers",
                                  -                    TR(
                                  -                      TD("$member.label"),
                                  -                      TD("$member.value")
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              getMembers: function(object) {
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push({label: p, value: object[p]})
                                  -                return members;
                                  -              }
                                  -            });
                                  -
                                  -            template.tag.replace({object: searchResult}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/for-loop.html b/tags/firebug1.3a3/test/domplate/for-loop.html
                                  deleted file mode 100644
                                  index 1ae3601a..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/for-loop.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                           DIV("$item")
                                  -                        )
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/hello-world.html b/tags/firebug1.3a3/test/domplate/hello-world.html
                                  deleted file mode 100644
                                  index b59fb8aa..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/hello-world.html
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.replace({}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/input-data.html b/tags/firebug1.3a3/test/domplate/input-data.html
                                  deleted file mode 100644
                                  index 78b3d3c6..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/input-data.html
                                  +++ /dev/null
                                  @@ -1,53 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var element = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.replace({object: inputObject}, element, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/pass-data.html b/tags/firebug1.3a3/test/domplate/pass-data.html
                                  deleted file mode 100644
                                  index ea7ed232..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/pass-data.html
                                  +++ /dev/null
                                  @@ -1,51 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["Honza", "Radek", "John", "Mike"];
                                  -                        
                                  -            var template = domplate(
                                  -            {
                                  -                table:
                                  -                    TABLE({border: "1", width: "100px"},
                                  -                        FOR("item", "array",
                                  -                            TAG("$row", {name: "$item"})
                                  -                        )
                                  -                    ),
                                  -            
                                  -                row:
                                  -                    TR({align: "center"},
                                  -                        TD("$name")
                                  -                    )
                                  -            });
                                  -
                                  -            template.table.replace({array: inputArray}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/reuse-tag.html b/tags/firebug1.3a3/test/domplate/reuse-tag.html
                                  deleted file mode 100644
                                  index 4063c8e6..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/reuse-tag.html
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        TAG("$anotherTag")
                                  -                    ),
                                  -            
                                  -                anotherTag:
                                  -                    SPAN("Embedded Tag")
                                  -            });
                                  -            
                                  -            template.tag.replace({}, parentNode, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/table-2d-array.html b/tags/firebug1.3a3/test/domplate/table-2d-array.html
                                  deleted file mode 100644
                                  index 093a480b..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/table-2d-array.html
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var tableData = {
                                  -              rows: [
                                  -                {values: [1,2,3,4]},
                                  -                {values: [11,22,33,44]},
                                  -                {values: [111,222,333,444]}
                                  -              ]
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              table:
                                  -                  TABLE({border: "1"},
                                  -                      FOR("row", "$data.rows",
                                  -                          TR(
                                  -                              FOR("value", "$row.values",
                                  -                                  TD({"class": "myTableCell"},
                                  -                                      "$value")
                                  -                              )
                                  -                          )
                                  -                      )
                                  -                  )
                                  -            });
                                  -            
                                  -            template.table.replace({data: tableData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .myTableCell {
                                  -        padding: 5px;
                                  -        text-align: center;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/domplate/tree.html b/tags/firebug1.3a3/test/domplate/tree.html
                                  deleted file mode 100644
                                  index f32659f0..00000000
                                  --- a/tags/firebug1.3a3/test/domplate/tree.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    function isLeftClick(){return true};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var treeData = {"menu":{"appetizers":[{"name":"some yummy appetizer","prize":{"ammount":8,"currency":"EUR"}},{"name":"a not so yummy soup","prize":{"ammount":5,"currency":"EUR"}}],"main-meals":[{"name":"bunny leg with fries and ketchup","prize":{"ammount":13,"currency":"EUR"}},{"name":"bunny stew","prize":{"ammount":12,"currency":"EUR"}}]},"owners":[{"last-name":"Hunter","first-name":"Bunny"}],"name":"Le lupin","cooks":[{"last-name":"Pits","first-name":"Sweaty"}],"address":{"street":"some french street","zip-code":"123456","city":"some french city","country":"some french country"},"waiters":[{"last-name":"Cheeks","first-name":"Rosy"}]};
                                  -                        
                                  -            var tree = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE({onclick: "$onClick"},
                                  -                  TBODY(
                                  -                    FOR("member", "$object|memberIterator",
                                  -                      TAG("$row", {member: "$member"}))
                                  -                  )
                                  -                ),
                                  -            
                                  -              row:
                                  -                TR({"class": "treeRow", $hasChildren: "$member.hasChildren",
                                  -                    _repObject: "$member", level: "$member.level"},
                                  -                  TD({style: "padding-left: $member.indent\\px"},
                                  -                    DIV({"class": "treeLabel"},
                                  -                        "$member.name")
                                  -                  ),
                                  -                  TD(
                                  -                    DIV("$member.label")
                                  -                  )
                                  -                ),
                                  -            
                                  -              loop:
                                  -                FOR("member", "$members",
                                  -                  TAG("$row", {member: "$member"})),
                                  -            
                                  -              memberIterator: function(object)
                                  -              {
                                  -                return this.getMembers(object);
                                  -              },
                                  -            
                                  -              onClick: function(event)
                                  -              {
                                  -                if (!isLeftClick(event))
                                  -                  return;
                                  -            
                                  -                var row = getAncestorByClass(event.target, "treeRow");
                                  -                var label = getAncestorByClass(event.target, "treeLabel");
                                  -                if (label && hasClass(row, "hasChildren"))
                                  -                  this.toggleRow(row);
                                  -              },
                                  -            
                                  -              toggleRow: function(row)
                                  -              {
                                  -                var level = parseInt(row.getAttribute("level"));
                                  -            
                                  -                if (hasClass(row, "opened"))
                                  -                {
                                  -                  removeClass(row, "opened");
                                  -            
                                  -                  var tbody = row.parentNode;
                                  -                  for (var firstRow = row.nextSibling; firstRow;
                                  -                       firstRow = row.nextSibling)
                                  -                  {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                      break;
                                  -                    tbody.removeChild(firstRow);
                                  -                  }
                                  -                }
                                  -                else
                                  -                {
                                  -                  setClass(row, "opened");
                                  -            
                                  -                  var repObject = row.repObject;
                                  -                  if (repObject) {
                                  -                    var members = this.getMembers(repObject.value, level+1);
                                  -                    if (members)
                                  -                      this.loop.insertRows({members: members}, row);
                                  -                  }
                                  -                }
                                  -              },
                                  -            
                                  -              getMembers: function(object, level)
                                  -              {
                                  -                if (!level)
                                  -                  level = 0;
                                  -            
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push(this.createMember(p, object[p], level));
                                  -            
                                  -                return members;
                                  -              },
                                  -            
                                  -              createMember: function(name, value, level)
                                  -              {
                                  -                var hasChildren = (typeof(value) == "object");
                                  -                return {
                                  -                  name: name,
                                  -                  label: hasChildren ? "" : value,
                                  -                  value: value,
                                  -                  level: level,
                                  -                  indent: level*16,
                                  -                  hasChildren: hasChildren
                                  -                };
                                  -              }
                                  -            });
                                  -            
                                  -            tree.tag.replace({object: treeData}, parentNode, tree);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .treeRow.hasChildren .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_open.gif);
                                  -        background-repeat: no-repeat;
                                  -        background-position: 2px 2px;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren.opened .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_close.gif);
                                  -    }
                                  -    
                                  -    .treeRow .treeLabel {
                                  -        padding-left: 18px;
                                  -        padding-right: 10px;
                                  -        white-space: nowrap;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren .treeLabel:hover {
                                  -        color: blue;
                                  -        cursor: pointer;
                                  -        text-decoration: underline;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a3/test/firebugLite.html b/tags/firebug1.3a3/test/firebugLite.html
                                  deleted file mode 100644
                                  index 9bfd846d..00000000
                                  --- a/tags/firebug1.3a3/test/firebugLite.html
                                  +++ /dev/null
                                  @@ -1,112 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../content/firebug.dev.js#trace"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  /*margin: 0;/**/
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  /*border: 10px solid #efd;*/
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -#lorem {
                                  -  /*display: none;/**/
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/injected.chrome.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div id="lorem" class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/test/firebugLite2.html b/tags/firebug1.3a3/test/firebugLite2.html
                                  deleted file mode 100644
                                  index 0aa45f3e..00000000
                                  --- a/tags/firebug1.3a3/test/firebugLite2.html
                                  +++ /dev/null
                                  @@ -1,108 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../content/firebug.dev.js"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a3/test/full.html b/tags/firebug1.3a3/test/full.html
                                  deleted file mode 100644
                                  index 80ea8bfc..00000000
                                  --- a/tags/firebug1.3a3/test/full.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.min.js#remote,trace"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote,trace');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/build/.htaccess b/tags/firebug1.3a4/build/.htaccess
                                  deleted file mode 100644
                                  index cb38bde8..00000000
                                  --- a/tags/firebug1.3a4/build/.htaccess
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -AddType "text/javascript;charset=UTF-8" .jgz .js
                                  -AddEncoding gzip .jgz
                                  -
                                  -<IfModule expires_module>
                                  -    ExpiresActive On
                                  -    ExpiresDefault A86400
                                  -</IfModule>
                                  -
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1.js [L]
                                  -</IfModule>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/build/compress.bat b/tags/firebug1.3a4/build/compress.bat
                                  deleted file mode 100644
                                  index 37ef08b1..00000000
                                  --- a/tags/firebug1.3a4/build/compress.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug.js firebug.uncompressed.js
                                  -
                                  -gzip -c firebug.js > firebug.jgz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/build/firebug.jgz b/tags/firebug1.3a4/build/firebug.jgz
                                  deleted file mode 100644
                                  index 56d64951..00000000
                                  Binary files a/tags/firebug1.3a4/build/firebug.jgz and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/build/firebug.js b/tags/firebug1.3a4/build/firebug.js
                                  deleted file mode 100644
                                  index f8157a09..00000000
                                  --- a/tags/firebug1.3a4/build/firebug.js
                                  +++ /dev/null
                                  @@ -1,4687 +0,0 @@
                                  -(function(){
                                  -/*
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -var FBL={};
                                  -(function(){var reNotWhitespace=/[^\s]/;
                                  -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -var userAgent=navigator.userAgent.toLowerCase();
                                  -this.isFirefox=/firefox/.test(userAgent);
                                  -this.isOpera=/opera/.test(userAgent);
                                  -this.isSafari=/webkit/.test(userAgent);
                                  -this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent);
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1];
                                  -this.isIElt8=this.isIE&&(this.browserVersion-0<8);
                                  -this.NS=null;
                                  -this.pixelsPerInch=null;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){if(FBL.FBTrace){FBTrace=FBL.FBTrace
                                  -}else{FBTrace=FBL.FBTrace={}
                                  -}var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object";
                                  -if(isChromeContext){sharedEnv=window.Firebug.SharedEnv;
                                  -delete window.Firebug.SharedEnv;
                                  -FBL.Env=sharedEnv;
                                  -FBL.Env.isChromeContext=true;
                                  -FBTrace.messageQueue=FBL.Env.traceMessageQueue
                                  -}else{FBL.NS=document.documentElement.namespaceURI;
                                  -FBL.Env.browser=window;
                                  -FBL.Env.destroy=destroyApplication;
                                  -if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true
                                  -}findLocation();
                                  -var prefs=eval("("+FBL.readCookie("FirebugLite")+")");
                                  -if(prefs){FBL.Env.Options.startOpened=prefs.startOpened;
                                  -FBL.Env.Options.enableTrace=prefs.enableTrace;
                                  -FBL.Env.Options.enablePersistent=prefs.enablePersistent
                                  -}if(FBL.isFirefox&&typeof console=="object"&&console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return
                                  -}}this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -if(FBL.Env.Options.enableTrace){FBTrace.initialize()
                                  -}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context")
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}FBL.Firebug.loadPrefs(prefs);
                                  -if(FBL.Env.Options.enablePersistent){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Env.FirebugChrome)
                                  -}else{FBL.Env.FirebugChrome=FBL.FirebugChrome;
                                  -FBL.Env.traceMessageQueue=FBTrace.messageQueue
                                  -}}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){var doc=FBL.Env.browser.document;
                                  -var body=doc.getElementsByTagName("body")[0];
                                  -if(body){calculatePixelsPerInch(doc,body);
                                  -onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Env.Options.enablePersistent&&FBL.Env.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Env.isDevelopmentMode){sharedEnv.destroy();
                                  -sharedEnv=null
                                  -}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -var sharedEnv;
                                  -this.Env={Options:{saveCookies:false,saveWindowPosition:false,saveCommandLineHistory:false,startOpened:false,startInNewWindow:false,showIconWhenHidden:true,overrideConsole:true,ignoreFirebugElements:true,disableWhenFirebugActive:true,enableTrace:false,enablePersistent:false},Location:{sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null},skin:"xp",useLocalSkin:false,isDevelopmentMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyApplication=function destroyApplication(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -if(script){file=reFirebugFile.exec(script.src)
                                  -}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
                                  -break
                                  -}}}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var Env=FBL.Env;
                                  -if(fileName=="firebug.dev.js"){Env.isDevelopmentMode=true;
                                  -Env.useLocalSkin=true;
                                  -Env.Options.disableWhenFirebugActive=false
                                  -}if(fileOptions){var options=fileOptions.split(",");
                                  -for(var i=0,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var name,value;
                                  -if(option.indexOf("=")!=-1){var parts=option.split("=");
                                  -name=parts[0];
                                  -value=eval(unescape(parts[1]))
                                  -}else{name=option;
                                  -value=true
                                  -}if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true
                                  -}var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval("("+innerOptions+")");
                                  -for(var name in innerOptionsObject){var value=innerOptionsObject[name];
                                  -if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}var loc=Env.Location;
                                  -var isProductionRelease=path.indexOf("http://getfirebug.com/releases/lite/")!=-1;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=(isProductionRelease?path:loc.baseDir)+"skin/"+Env.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName
                                  -}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}this.createStyleSheet=function(doc,url){var style=doc.createElementNS("http://www.w3.org/1999/xhtml","link");
                                  -style.setAttribute("charset","utf-8");
                                  -style.firebugIgnore=true;
                                  -style.setAttribute("rel","stylesheet");
                                  -style.setAttribute("type","text/css");
                                  -style.setAttribute("href",url);
                                  -return style
                                  -};
                                  -this.addStyleSheet=function(doc,style){var heads=doc.getElementsByTagName("head");
                                  -if(heads.length){heads[0].appendChild(style)
                                  -}else{doc.documentElement.appendChild(style)
                                  -}};
                                  -var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
                                  -};
                                  -this.safeToString=function(ob){if(this.isIE){return ob+""
                                  -}try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return"[an object with no toString() function]"
                                  -}};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML"
                                  -};
                                  -this.collapse=function(elt,collapsed){elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){node.innerHTML=""
                                  -};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.getClientOffset=function(elt){function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -var style=view.getComputedStyle(elt,"");
                                  -if(elt.offsetLeft){coords.x+=elt.offsetLeft+parseInt(style.borderLeftWidth)
                                  -}if(elt.offsetTop){coords.y+=elt.offsetTop+parseInt(style.borderTopWidth)
                                  -}if(p){if(p.nodeType==1){addOffset(p,coords,view)
                                  -}}else{if(elt.ownerDocument.defaultView.frameElement){addOffset(elt.ownerDocument.defaultView.frameElement,coords,elt.ownerDocument.defaultView)
                                  -}}}var coords={x:0,y:0};
                                  -if(elt){var view=elt.ownerDocument.defaultView;
                                  -addOffset(elt,coords,view)
                                  -}return coords
                                  -};
                                  -this.getViewOffset=function(elt,singleFrame){function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -coords.x+=elt.offsetLeft-(p?p.scrollLeft:0);
                                  -coords.y+=elt.offsetTop-(p?p.scrollTop:0);
                                  -if(p){if(p.nodeType==1){var parentStyle=view.getComputedStyle(p,"");
                                  -if(parentStyle.position!="static"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth);
                                  -if(p.localName=="TABLE"){coords.x+=parseInt(parentStyle.paddingLeft);
                                  -coords.y+=parseInt(parentStyle.paddingTop)
                                  -}else{if(p.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.marginLeft);
                                  -coords.y+=parseInt(style.marginTop)
                                  -}}}else{if(p.localName=="BODY"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth)
                                  -}}var parent=elt.parentNode;
                                  -while(p!=parent){coords.x-=parent.scrollLeft;
                                  -coords.y-=parent.scrollTop;
                                  -parent=parent.parentNode
                                  -}addOffset(p,coords,view)
                                  -}}else{if(elt.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.borderLeftWidth);
                                  -coords.y+=parseInt(style.borderTopWidth);
                                  -var htmlStyle=view.getComputedStyle(elt.parentNode,"");
                                  -coords.x-=parseInt(htmlStyle.paddingLeft);
                                  -coords.y-=parseInt(htmlStyle.paddingTop)
                                  -}if(elt.scrollLeft){coords.x+=elt.scrollLeft
                                  -}if(elt.scrollTop){coords.y+=elt.scrollTop
                                  -}var win=elt.ownerDocument.defaultView;
                                  -if(win&&(!singleFrame&&win.frameElement)){addOffset(win.frameElement,coords,win)
                                  -}}}var coords={x:0,y:0};
                                  -if(elt){addOffset(elt,coords,elt.ownerDocument.defaultView)
                                  -}return coords
                                  -};
                                  -this.getLTRBWH=function(elt){var bcrect,dims={left:0,top:0,right:0,bottom:0,width:0,height:0};
                                  -if(elt){bcrect=elt.getBoundingClientRect();
                                  -dims.left=bcrect.left;
                                  -dims.top=bcrect.top;
                                  -dims.right=bcrect.right;
                                  -dims.bottom=bcrect.bottom;
                                  -if(bcrect.width){dims.width=bcrect.width;
                                  -dims.height=bcrect.height
                                  -}else{dims.width=dims.right-dims.left;
                                  -dims.height=dims.bottom-dims.top
                                  -}}return dims
                                  -};
                                  -this.applyBodyOffsets=function(elt,clientRect){var od=elt.ownerDocument;
                                  -if(!od.body){return clientRect
                                  -}var style=od.defaultView.getComputedStyle(od.body,null);
                                  -var pos=style.getPropertyValue("position");
                                  -if(pos==="absolute"||pos==="relative"){var borderLeft=parseInt(style.getPropertyValue("border-left-width").replace("px",""),10)||0;
                                  -var borderTop=parseInt(style.getPropertyValue("border-top-width").replace("px",""),10)||0;
                                  -var paddingLeft=parseInt(style.getPropertyValue("padding-left").replace("px",""),10)||0;
                                  -var paddingTop=parseInt(style.getPropertyValue("padding-top").replace("px",""),10)||0;
                                  -var marginLeft=parseInt(style.getPropertyValue("margin-left").replace("px",""),10)||0;
                                  -var marginTop=parseInt(style.getPropertyValue("margin-top").replace("px",""),10)||0;
                                  -var offsetX=borderLeft+paddingLeft+marginLeft;
                                  -var offsetY=borderTop+paddingTop+marginTop;
                                  -clientRect.left-=offsetX;
                                  -clientRect.top-=offsetY;
                                  -clientRect.right-=offsetX;
                                  -clientRect.bottom-=offsetY
                                  -}return clientRect
                                  -};
                                  -this.getOffsetSize=function(elt){return{width:elt.offsetWidth,height:elt.offsetHeight}
                                  -};
                                  -this.getOverflowParent=function(element){for(var scrollParent=element.parentNode;
                                  -scrollParent;
                                  -scrollParent=scrollParent.offsetParent){if(scrollParent.scrollHeight>scrollParent.offsetHeight){return scrollParent
                                  -}}};
                                  -this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom)
                                  -}return onBottom
                                  -};
                                  -this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element)
                                  -}}return(element.scrollTop==element.scrollHeight)
                                  -};
                                  -this.move=function(element,x,y){element.style.left=x+"px";
                                  -element.style.top=y+"px"
                                  -};
                                  -this.resize=function(element,w,h){element.style.width=w+"px";
                                  -element.style.height=h+"px"
                                  -};
                                  -this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2);
                                  -var centerY=offset.y-split;
                                  -scrollBox.scrollTop=centerY;
                                  -topSpace=split;
                                  -bottomSpace=split-element.offsetHeight
                                  -}return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)}
                                  -};
                                  -this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return
                                  -}if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -if(!notY){var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2);
                                  -scrollBox.scrollTop=centerY
                                  -}}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft;
                                  -var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth);
                                  -if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2);
                                  -scrollBox.scrollLeft=centerX
                                  -}}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML)
                                  -}};
                                  -this.hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&!this.hasClass(node,name)){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if(this.hasClass(elt,name)){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.getElementsByClass=function(node,className){var result=[];
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){result.push(child)
                                  -}}return result
                                  -};
                                  -this.getElementByClass=function(node,className){var args=cloneArray(arguments);
                                  -args.splice(0,1);
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){var args1=cloneArray(args);
                                  -args1.unshift(child);
                                  -if(FBL.hasClass.apply(null,args1)){return child
                                  -}else{var found=FBL.getElementByClass.apply(null,args1);
                                  -if(found){return found
                                  -}}}return null
                                  -};
                                  -this.getBody=function(doc){if(doc.body){return doc.body
                                  -}var body=doc.getElementsByTagName("body")[0];
                                  -if(body){return body
                                  -}return doc.firstChild
                                  -};
                                  -this.isElement=function(o){try{return o&&this.instanceOf(o,"Element")
                                  -}catch(ex){return false
                                  -}};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Env.browser.document;
                                  -var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(name!="document"){element.setAttribute(propname,properties[name])
                                  -}}return element
                                  -};
                                  -this.isLeftClick=function(event){return event.button==0&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return event.button==1&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return event.button==2&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return event.button==0&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return event.button==0&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler){if(object.addEventListener){object.addEventListener(name,handler,false)
                                  -}else{object.attachEvent("on"+name,handler)
                                  -}};
                                  -this.removeEvent=function(object,name,handler){try{if(object.removeEventListener){object.removeEventListener(name,handler,false)
                                  -}else{object.detachEvent("on"+name,handler)
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("FBL.removeEvent error: ",object,name)
                                  -}}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(e.stopPropagation){e.stopPropagation()
                                  -}else{e.cancelBubble=true
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.addEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.addEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.removeEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.removeEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listeners.hasOwnProperty(prop)&&listener[name]){listener[name].apply(listener,args)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties(" Exception in lib.dispatch "+name,exc)
                                  -}}};
                                  -var disableTextSelectionHandler=function(event){FBL.cancelEvent(event,true);
                                  -return false
                                  -};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.addEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -if(!this.isFirefox){this.addEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}e.style.cursor="default"
                                  -};
                                  -this.restoreTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.removeEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="cursor: default;";
                                  -if(!this.isFirefox){this.removeEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}};
                                  -var eventTypes={composition:["composition","compositionstart","compositionend"],contextmenu:["contextmenu"],drag:["dragenter","dragover","dragexit","dragdrop","draggesture"],focus:["focus","blur"],form:["submit","reset","change","select","input"],key:["keydown","keyup","keypress"],load:["load","beforeunload","unload","abort","error"],mouse:["mousedown","mouseup","click","dblclick","mouseover","mouseout","mousemove"],mutation:["DOMSubtreeModified","DOMNodeInserted","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMNodeInsertedIntoDocument","DOMAttrModified","DOMCharacterDataModified"],paint:["paint","resize","scroll"],scroll:["overflow","underflow","overflowchanged"],text:["text"],ui:["DOMActivate","DOMFocusIn","DOMFocusOut"],xul:["popupshowing","popupshown","popuphiding","popuphidden","close","command","broadcast","commandupdate"]};
                                  -this.getEventFamily=function(eventType){if(!this.families){this.families={};
                                  -for(var family in eventTypes){var types=eventTypes[family];
                                  -for(var i=0;
                                  -i<types.length;
                                  -++i){this.families[types[i]]=family
                                  -}}}return this.families[eventType]
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var s=Components.utils.Sandbox(originURL);
                                  -var jsonObject=null;
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(e){if(e.message.indexOf("is not defined")){var parts=e.message.split(" ");
                                  -s[parts[0]]=function(str){return str
                                  -};
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(ex){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isFunction=function(object){if(!object){return false
                                  -}return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}if(object.ownerDocument){var win=object.ownerDocument.defaultView||object.ownerDocument.parentWindow;
                                  -if(className in win){return object instanceof win[className]
                                  -}}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=(""+value).toLowerCase()){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{}};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=domMemberMap[name];
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(object instanceof Document||object instanceof XMLDocument){return domMemberCache.Document
                                  -}else{if(object instanceof Location){return domMemberCache.Location
                                  -}else{if(object instanceof HTMLImageElement){return domMemberCache.HTMLImageElement
                                  -}else{if(object instanceof HTMLAnchorElement){return domMemberCache.HTMLAnchorElement
                                  -}else{if(object instanceof HTMLInputElement){return domMemberCache.HTMLInputElement
                                  -}else{if(object instanceof HTMLButtonElement){return domMemberCache.HTMLButtonElement
                                  -}else{if(object instanceof HTMLFormElement){return domMemberCache.HTMLFormElement
                                  -}else{if(object instanceof HTMLBodyElement){return domMemberCache.HTMLBodyElement
                                  -}else{if(object instanceof HTMLHtmlElement){return domMemberCache.HTMLHtmlElement
                                  -}else{if(object instanceof HTMLScriptElement){return domMemberCache.HTMLScriptElement
                                  -}else{if(object instanceof HTMLTableElement){return domMemberCache.HTMLTableElement
                                  -}else{if(object instanceof HTMLTableRowElement){return domMemberCache.HTMLTableRowElement
                                  -}else{if(object instanceof HTMLTableCellElement){return domMemberCache.HTMLTableCellElement
                                  -}else{if(object instanceof HTMLIFrameElement){return domMemberCache.HTMLIFrameElement
                                  -}else{if(object instanceof SVGSVGElement){return domMemberCache.SVGSVGElement
                                  -}else{if(object instanceof SVGElement){return domMemberCache.SVGElement
                                  -}else{if(object instanceof Element){return domMemberCache.Element
                                  -}else{if(object instanceof Text||object instanceof CDATASection){return domMemberCache.Text
                                  -}else{if(object instanceof Attr){return domMemberCache.Attr
                                  -}else{if(object instanceof Node){return domMemberCache.Node
                                  -}else{if(object instanceof Event||object instanceof EventCopy){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap",]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1};
                                  -this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=options||{};
                                  -o.type=o.type&&o.type.toLowerCase()||"get";
                                  -o.async=o.async||true;
                                  -o.dataType=o.dataType||"text";
                                  -o.contentType=o.contentType||"application/x-www-form-urlencoded";
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"||s=="Loaded"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.Ajax.initialize();
                                  -this.createCookie=function(name,value,days){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -};
                                  -this.readCookie=function(name){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}return null
                                  -};
                                  -this.removeCookie=function(name){this.createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}};
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -body.appendChild(inch);
                                  -FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -body.removeChild(inch)
                                  -};
                                  -this.SourceLink=function(url,line,type,object,instance){this.href=url;
                                  -this.instance=instance;
                                  -this.line=line;
                                  -this.type=type;
                                  -this.object=object
                                  -};
                                  -this.SourceLink.prototype={toString:function(){return this.href
                                  -},toJSON:function(){return'{"href":"'+this.href+'", '+(this.line?('"line":'+this.line+","):"")+(this.type?(' "type":"'+this.type+'",'):"")+"}"
                                  -}};
                                  -this.SourceText=function(lines,owner){this.lines=lines;
                                  -this.owner=owner
                                  -};
                                  -this.SourceText.getLineAsHTML=function(lineNo){return escapeForSourceLine(this.lines[lineNo-1])
                                  -}
                                  -}).apply(FBL);
                                  -FBL.ns(function(){with(FBL){FBL.cacheID="firebug"+new Date().getTime();
                                  -FBL.documentCache={};
                                  -var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -var parentPanelMap={};
                                  -window.Firebug=FBL.Firebug={version:"Firebug Lite 1.3.0a4",revision:"$Revision: 5496 $",modules:modules,panelTypes:panelTypes,panelTypeMap:panelTypeMap,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Env.browser);
                                  -Firebug.context=Firebug.browser;
                                  -cacheDocument();
                                  -if(Firebug.Inspector){Firebug.Inspector.create()
                                  -}FirebugChrome.initialize();
                                  -dispatch(modules,"initialize",[]);
                                  -if(Env.onLoad){var onLoad=Env.onLoad;
                                  -delete Env.onLoad;
                                  -setTimeout(onLoad,200)
                                  -}},shutdown:function(){if(Firebug.Inspector){Firebug.Inspector.destroy()
                                  -}dispatch(modules,"shutdown",[]);
                                  -var chromeMap=FirebugChrome.chromeMap;
                                  -if(chromeMap.popup){chromeMap.popup.destroy()
                                  -}chromeMap.frame.destroy();
                                  -for(var name in documentCache){documentCache[name].removeAttribute(cacheID);
                                  -documentCache[name]=null;
                                  -delete documentCache[name]
                                  -}documentCache=null;
                                  -delete FBL.documentCache;
                                  -Firebug.browser=null;
                                  -Firebug.context=null
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0,panelType;
                                  -panelType=arguments[i];
                                  -++i){panelTypeMap[panelType.prototype.name]=arguments[i];
                                  -if(panelType.prototype.parentPanel){parentPanelMap[panelType.prototype.parentPanel]=1
                                  -}}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){FBL.defaultRep=rep;
                                  -FBL.defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof object;
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}},getPref:function(name){return Firebug[name]
                                  -},setPref:function(name,value){Firebug[name]=value;
                                  -this.savePrefs()
                                  -},setPrefs:function(prefs){for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
                                  -}}this.savePrefs()
                                  -},restorePrefs:function(){var Options=Env.Options;
                                  -for(var name in Options){Firebug[name]=Options[name]
                                  -}},loadPrefs:function(prefs){this.restorePrefs();
                                  -prefs=prefs||eval("("+readCookie("FirebugLite")+")");
                                  -for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
                                  -}}},savePrefs:function(){var json=["{"],jl=0;
                                  -var Options=Env.Options;
                                  -for(var name in Options){if(Options.hasOwnProperty(name)){var value=Firebug[name];
                                  -json[++jl]='"';
                                  -json[++jl]=name;
                                  -var type=typeof value;
                                  -if(type=="boolean"||type=="number"){json[++jl]='":';
                                  -json[++jl]=value;
                                  -json[++jl]=","
                                  -}else{json[++jl]='":"';
                                  -json[++jl]=value;
                                  -json[++jl]='",'
                                  -}}}json.length=jl--;
                                  -json[++jl]="}";
                                  -createCookie("FirebugLite",json.join(""))
                                  -},erasePrefs:function(){removeCookie("FirebugLite")
                                  -}};
                                  -Firebug.restorePrefs();
                                  -if(!Env.Options.enablePersistent||Env.Options.enablePersistent&&Env.isChromeContext||Env.isDevelopmentMode){Env.browser.window.Firebug=FBL.Firebug
                                  -}FBL.cacheDocument=function cacheDocument(){var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -el[cacheID]=i;
                                  -documentCache[i]=el
                                  -}};
                                  -Firebug.Module={initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}};
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasSidePanel:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,innerHTMLSync:false},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,panelBar:null,commandLine:null,toolButtons:null,statusBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){if(parentPanelMap.hasOwnProperty(this.name)){this.sidePanelBar=extend({},PanelBar);
                                  -this.sidePanelBar.create(true)
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -if(options.isPreRendered){this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasSidePanel){}}else{var containerSufix=this.parentPanel?"2":"1";
                                  -var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
                                  -$("fbPanel"+containerSufix).appendChild(panelNode);
                                  -var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
                                  -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
                                  -if(isIE6){tabNode.href="javascript:void(0)"
                                  -}$("fbPanelBar"+containerSufix).appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
                                  -$("fbToolbarButtons").appendChild(this.toolButtonsNode)
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"});
                                  -this.statusBarBox.appendChild(this.statusBarNode)
                                  -}}var contentNode=this.contentNode=createElement("div");
                                  -this.panelNode.appendChild(contentNode);
                                  -this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name)
                                  -}},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(parentPanelMap.hasOwnProperty(this.name)){this.sidePanelBar.destroy();
                                  -this.sidePanelBar=null
                                  -}this.options=null;
                                  -this.name=null;
                                  -this.parentPanel=null;
                                  -this.tabNode=null;
                                  -this.panelNode=null;
                                  -this.contentNode=null;
                                  -this.containerNode=null
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}if(parentPanelMap.hasOwnProperty(this.name)){this.sidePanelBar.initialize()
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode;
                                  -this.containerNode.scrollTop=this.lastScrollTop
                                  -},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name)
                                  -}this.lastScrollTop=this.containerNode.scrollTop;
                                  -this.toolButtonsNode=null;
                                  -this.statusBarBox=null;
                                  -this.statusBarNode=null
                                  -},detach:function(oldChrome,newChrome){if(oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop
                                  -}},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI()
                                  -}},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0
                                  -},show:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -if(!this.parentPanel){Firebug.chrome.layout(this)
                                  -}},hide:function(state){var options=this.options;
                                  -if(options.hasSidePanel){}if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none"
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},hasObject:function(object){return false
                                  -},select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context)
                                  -}if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection)
                                  -}if(forceUpdate||object!=this.selection){this.selection=object;
                                  -this.updateSelection(object)
                                  -}},updateSelection:function(object){},startInspecting:function(){},stopInspecting:function(object,cancelled){},getDefaultSelection:function(context){return null
                                  -},search:function(text){}};
                                  -if(FBL.domplate){Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false
                                  -},inspectObject:function(object,context){Firebug.chrome.select(object)
                                  -},browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object
                                  -},getTitle:function(object){var label=safeToString(object);
                                  -var re=/\[object (.*?)\]/;
                                  -var m=re.exec(label);
                                  -return m?m[1]:label
                                  -},getTooltip:function(object){return null
                                  -},getContextMenuItems:function(object,target,context){return[]
                                  -},STR:function(name){return $STR(name)
                                  -},cropString:function(text){return cropString(text)
                                  -},cropMultipleLines:function(text,limit){return cropMultipleLines(text,limit)
                                  -},toLowerCase:function(text){return text?text.toLowerCase():text
                                  -},plural:function(n){return n==1?"":"s"
                                  -}})
                                  -}}});
                                  -FBL.ns(function(){with(FBL){FBL.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -FBL.PanelBar={selectedPanel:null,isSidePanelBar:null,create:function(isSidePanelBar){this.panelMap={};
                                  -this.isSidePanelBar=isSidePanelBar;
                                  -var panels=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panels[i];
                                  -i++){if(isSidePanelBar&&p.prototype.parentPanel||!isSidePanelBar&&!p.prototype.parentPanel){this.addPanel(p.prototype.name)
                                  -}}},destroy:function(){PanelBar.shutdown.call(this);
                                  -for(var name in this.panelMap){this.removePanel(name);
                                  -var panel=this.panelMap[name];
                                  -panel.destroy();
                                  -this.panelMap[name]=null;
                                  -delete this.panelMap[name]
                                  -}this.panelMap=null
                                  -},initialize:function(){for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){var selectedPanel=this.selectedPanel;
                                  -if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}this.selectedPanel=null
                                  -},addPanel:function(panelName,parentPanel){var PanelType=Firebug.panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){var panel=this.panelMap[panelName];
                                  -if(panel.hasOwnProperty(panelName)){panel.destroy()
                                  -}},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}if(!panel.parentPanel){FirebugChrome.selectedPanelName=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.initialize();
                                  -panel.show()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -}};
                                  -FBL.Button=function(options){options=options||{};
                                  -append(this,options);
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -if(this.element){this.container=this.element.parentNode
                                  -}else{this.container=this.owner.getPanel().toolButtonsNode;
                                  -this.element=createElement("a",{className:this.baseClassName+" "+this.className+" fbHover",title:this.title,innerHTML:this.caption});
                                  -this.container.appendChild(this.element)
                                  -}};
                                  -Button.prototype=extend(Controller,{type:"normal",caption:"caption",title:"title",className:"",baseClassName:"fbButton",pressedClassName:"fbBtnPressed",element:null,container:null,owner:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -this.container.removeChild(this.element);
                                  -this.element=null;
                                  -this.container=null;
                                  -this.owner=null
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var element=this.element;
                                  -this.addController([element,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([element,"mouseup",this.handleUnpress],[element,"mouseout",this.handleUnpress],[element,"click",this.handleClick])
                                  -}},shutdown:function(){Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.element,this.pressedClassName)
                                  -}else{if(display=="unpressed"){removeClass(this.element,this.pressedClassName)
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner,arguments)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner,arguments)
                                  -}}if(this.onClick){this.onClick.apply(this.owner,arguments)
                                  -}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -}});
                                  -FBL.IconButton=function(){Button.apply(this,arguments)
                                  -};
                                  -IconButton.prototype=extend(Button.prototype,{baseClassName:"fbIconButton",pressedClassName:"fbIconPressed"});
                                  -var menuItemProps={"class":"$item.className",type:"$item.type",value:"$item.value",command:"$item.command"};
                                  -if(isIE6){menuItemProps.href="javascript:void(0)"
                                  -}var MenuPlate=domplate(Firebug.Rep,{tag:DIV({"class":"fbMenu fbShadow"},DIV({"class":"fbMenuContent fbShadowContent"},FOR("item","$object.items|memberIterator",TAG("$item.tag",{item:"$item"})))),itemTag:A(menuItemProps,"$item.label"),checkBoxTag:A(extend(menuItemProps,{checked:"$item.checked"}),"$item.label"),radioButtonTag:A(extend(menuItemProps,{selected:"$item.selected"}),"$item.label"),groupTag:A(extend(menuItemProps,{child:"$item.child"}),"$item.label"),shortcutTag:A(menuItemProps,"$item.label",SPAN({"class":"fbMenuShortcutKey"},"$item.key")),separatorTag:SPAN({"class":"fbMenuSeparator"}),memberIterator:function(items){var result=[];
                                  -for(var i=0,length=items.length;
                                  -i<length;
                                  -i++){var item=items[i];
                                  -if(typeof item=="string"&&item.indexOf("-")==0){result.push({tag:this.separatorTag});
                                  -continue
                                  -}item=extend(item,{});
                                  -item.type=item.type||"";
                                  -item.value=item.value||"";
                                  -var type=item.type;
                                  -item.tag=this.itemTag;
                                  -var className=item.className||"";
                                  -className+="fbMenuOption fbHover ";
                                  -if(type=="checkbox"){className+="fbMenuCheckBox ";
                                  -item.tag=this.checkBoxTag
                                  -}else{if(type=="radiobutton"){className+="fbMenuRadioButton ";
                                  -item.tag=this.radioButtonTag
                                  -}else{if(type=="group"){className+="fbMenuGroup ";
                                  -item.tag=this.groupTag
                                  -}else{if(type=="shortcut"){className+="fbMenuShortcut ";
                                  -item.tag=this.shortcutTag
                                  -}}}}if(item.checked){className+="fbMenuChecked "
                                  -}else{if(item.selected){className+="fbMenuRadioSelected "
                                  -}}if(item.disabled){className+="fbMenuDisabled "
                                  -}item.className=className;
                                  -result.push(item)
                                  -}return result
                                  -}});
                                  -FBL.Menu=function(options){if(!options.element){if(options.getItems){options.items=options.getItems()
                                  -}options.element=MenuPlate.tag.append({object:options},Firebug.chrome.document.body,MenuPlate)
                                  -}append(this,options);
                                  -if(typeof this.element=="string"){this.id=this.element;
                                  -this.element=$(this.id)
                                  -}else{if(this.id){this.element.id=this.id
                                  -}}this.elementStyle=this.element.style;
                                  -this.isVisible=false;
                                  -this.handleMouseDown=bind(this.handleMouseDown,this);
                                  -this.handleMouseOver=bind(this.handleMouseOver,this);
                                  -this.handleMouseOut=bind(this.handleMouseOut,this);
                                  -this.handleWindowMouseDown=bind(this.handleWindowMouseDown,this)
                                  -};
                                  -var menuMap={};
                                  -Menu.prototype=extend(Controller,{destroy:function(){this.hide();
                                  -this.element=null;
                                  -this.elementStyle=null;
                                  -this.parentMenu=null;
                                  -this.parentTarget=null
                                  -},initialize:function(){Controller.initialize.call(this);
                                  -this.addController([this.element,"mousedown",this.handleMouseDown],[this.element,"mouseover",this.handleMouseOver])
                                  -},shutdown:function(){Controller.shutdown.call(this)
                                  -},show:function(x,y){this.initialize();
                                  -if(this.isVisible){return
                                  -}x=x||0;
                                  -y=y||0;
                                  -if(this.parentMenu){var oldChildMenu=this.parentMenu.childMenu;
                                  -if(oldChildMenu&&oldChildMenu!=this){oldChildMenu.destroy()
                                  -}this.parentMenu.childMenu=this
                                  -}else{addEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown)
                                  -}this.elementStyle.display="block";
                                  -this.elementStyle.visibility="hidden";
                                  -var size=Firebug.chrome.getWindowSize();
                                  -x=Math.min(x,size.width-this.element.clientWidth-10);
                                  -x=Math.max(x,0);
                                  -y=Math.min(y,size.height-this.element.clientHeight-10);
                                  -y=Math.max(y,0);
                                  -this.elementStyle.left=x+"px";
                                  -this.elementStyle.top=y+"px";
                                  -this.elementStyle.visibility="visible";
                                  -this.isVisible=true;
                                  -if(isFunction(this.onShow)){this.onShow.apply(this,arguments)
                                  -}},hide:function(){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -if(!this.isVisible){return
                                  -}this.elementStyle.display="none";
                                  -if(this.childMenu){this.childMenu.destroy();
                                  -this.childMenu=null
                                  -}if(this.parentTarget){removeClass(this.parentTarget,"fbMenuGroupSelected")
                                  -}this.isVisible=false;
                                  -this.shutdown();
                                  -if(isFunction(this.onHide)){this.onHide.apply(this,arguments)
                                  -}},showChildMenu:function(target){var id=target.getAttribute("child");
                                  -var parent=this;
                                  -var target=target;
                                  -this.showChildTimeout=Firebug.chrome.window.setTimeout(function(){var box=Firebug.chrome.getElementBox(target);
                                  -var childMenuObject=menuMap.hasOwnProperty(id)?menuMap[id]:{element:$(id)};
                                  -var childMenu=new Menu(extend(childMenuObject,{parentMenu:parent,parentTarget:target}));
                                  -var offsetLeft=isIE6?-1:-6;
                                  -childMenu.show(box.left+box.width+offsetLeft,box.top-6);
                                  -setClass(target,"fbMenuGroupSelected")
                                  -},350)
                                  -},clearHideTimeout:function(){if(this.hideTimeout){Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -delete this.hideTimeout
                                  -}},clearShowChildTimeout:function(){if(this.showChildTimeout){Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -this.showChildTimeout=null
                                  -}},handleMouseDown:function(event){cancelEvent(event,true);
                                  -var topParent=this;
                                  -while(topParent.parentMenu){topParent=topParent.parentMenu
                                  -}var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target||hasClass(target,"fbMenuGroup")){return false
                                  -}if(target&&!hasClass(target,"fbMenuDisabled")){var type=target.getAttribute("type");
                                  -if(type=="checkbox"){var checked=target.getAttribute("checked");
                                  -var value=target.getAttribute("value");
                                  -var wasChecked=hasClass(target,"fbMenuChecked");
                                  -if(wasChecked){removeClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","")
                                  -}else{setClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","true")
                                  -}if(isFunction(this.onCheck)){this.onCheck.call(this,target,value,!wasChecked)
                                  -}}if(type=="radiobutton"){var selectedRadios=getElementsByClass(target.parentNode,"fbMenuRadioSelected");
                                  -var group=target.getAttribute("group");
                                  -for(var i=0,length=selectedRadios.length;
                                  -i<length;
                                  -i++){radio=selectedRadios[i];
                                  -if(radio.getAttribute("group")==group){removeClass(radio,"fbMenuRadioSelected");
                                  -radio.setAttribute("selected","")
                                  -}}setClass(target,"fbMenuRadioSelected");
                                  -target.setAttribute("selected","true")
                                  -}var cmd=target.getAttribute("command");
                                  -var handler=this[cmd];
                                  -var closeMenu=true;
                                  -if(handler){closeMenu=handler.call(this,target)!==false
                                  -}if(closeMenu){topParent.hide()
                                  -}}return false
                                  -},handleWindowMouseDown:function(event){var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenu");
                                  -if(!target){removeEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown);
                                  -this.hide()
                                  -}},handleMouseOver:function(event){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target){return
                                  -}var childMenu=this.childMenu;
                                  -if(childMenu){removeClass(childMenu.parentTarget,"fbMenuGroupSelected");
                                  -if(childMenu.parentTarget!=target&&childMenu.isVisible){childMenu.clearHideTimeout();
                                  -childMenu.hideTimeout=Firebug.chrome.window.setTimeout(function(){childMenu.destroy()
                                  -},300)
                                  -}}if(hasClass(target,"fbMenuGroup")){this.showChildMenu(target)
                                  -}}});
                                  -Menu.register=function(object){menuMap[object.id]=object
                                  -};
                                  -Menu.check=function(element){setClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","true")
                                  -};
                                  -Menu.uncheck=function(element){removeClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","")
                                  -};
                                  -Menu.disable=function(element){setClass(element,"fbMenuDisabled")
                                  -};
                                  -Menu.enable=function(element){removeClass(element,"fbMenuDisabled")
                                  -};
                                  -function StatusBar(){}StatusBar.prototype=extend(Controller,{})
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={evaluate:function(expr,context,api,errorHandler){context=context||"window";
                                  -var cmd=api?"(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)":"(function(arguments){ return "+expr+" }).call("+context+",undefined)";
                                  -var r=this.eval(cmd);
                                  -if(r&&r[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
                                  -r=this.eval(cmd);
                                  -if(r&&r[evalError]){if(errorHandler){r=errorHandler(r.message||r)
                                  -}else{r=r.message||r
                                  -}}}return r
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)&&(el.scrollWidth>width||el.scrollHeight>height)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(isOpera||isSafari){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getCSS(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}}if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getMeasurementBox:function(el,name){var result=[];
                                  -var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"];
                                  -if(isIE){var propName,cssValue;
                                  -var autoMargin=null;
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){propName=name+sufix;
                                  -cssValue=el.currentStyle[propName]||el.style[propName];
                                  -if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el)
                                  -}result[i]=autoMargin[sufix.toLowerCase()]
                                  -}else{result[i]=this.getMeasurementInPixels(el,propName)
                                  -}}}else{for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
                                  -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getCSSAutoMarginBox:function(el){if(isIE&&" meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ")!=-1){return{top:0,left:0,bottom:0,right:0}
                                  -}if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0}
                                  -}var offsetTop=0;
                                  -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -offsetTop=scrollSize.height
                                  -}var box=this.document.createElement("div");
                                  -box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -var clone=el.cloneNode(false);
                                  -var text=this.document.createTextNode("&nbsp;");
                                  -clone.appendChild(text);
                                  -box.appendChild(clone);
                                  -this.document.body.appendChild(box);
                                  -var marginTop=clone.offsetTop-box.offsetTop-1;
                                  -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
                                  -var marginLeft=clone.offsetLeft-box.offsetLeft-1;
                                  -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
                                  -this.document.body.removeChild(box);
                                  -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getCSS:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}};
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.FirebugChrome={chromeMap:{},sidePanelWidth:300,selectedPanelName:"Console",selectedHTMLElementId:null,htmlSelectionStack:[],consoleMessageQueue:[],height:250,isOpen:false,create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window")
                                  -}createChromeWindow()
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window")
                                  -}if(Env.chrome.type=="frame"){ChromeMini.create(Env.chrome)
                                  -}var chrome=Firebug.chrome=new Chrome(Env.chrome);
                                  -FirebugChrome.chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onGlobalKeyDown);
                                  -if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}chrome.initialize()
                                  -}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name];
                                  -if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop
                                  -}}}};
                                  -var ChromeDefaultOptions={type:"frame",id:"FirebugUI",height:250};
                                  -var createChromeWindow=function(options){options=options||{};
                                  -options=extend(ChromeDefaultOptions,options);
                                  -var context=options.context||Env.browser;
                                  -var chrome={};
                                  -chrome.type=Env.Options.enablePersistent?"popup":options.type;
                                  -var isChromeFrame=chrome.type=="frame";
                                  -var useLocalSkin=Env.useLocalSkin;
                                  -var url=useLocalSkin?Env.Location.skin:"about:blank";
                                  -if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
                                  -node.setAttribute("id",options.id);
                                  -node.setAttribute("frameBorder","0");
                                  -node.firebugIgnore=true;
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=options.height+"px";
                                  -if(isFirefox){node.style.display="none"
                                  -}if(useLocalSkin){node.setAttribute("src",Env.Location.skin)
                                  -}context.document.getElementsByTagName("body")[0].appendChild(node)
                                  -}else{var height=FirebugChrome.height||options.height;
                                  -var options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join("");
                                  -var node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame);
                                  -var doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win;
                                  -var waitDelay=useLocalSkin?isChromeFrame?200:300:100;
                                  -var waitForChrome=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -setTimeout(function(){onChromeLoad(chrome)
                                  -},0)
                                  -}else{setTimeout(waitForChrome,waitDelay)
                                  -}};
                                  -waitForChrome()
                                  -};
                                  -var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded")
                                  -}if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome;
                                  -chrome.window.Firebug=chrome.window.Firebug||{};
                                  -chrome.window.Firebug.SharedEnv=Env;
                                  -if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Env.Location.app+"#remote,persist";
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},0)
                                  -}else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame;
                                  -var newChrome=new Chrome(chrome);
                                  -dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]);
                                  -if(oldChrome){oldChrome.close()
                                  -}newChrome.reattach(oldChrome,newChrome)
                                  -}}}};
                                  -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.injected;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]="</style>";
                                  -r[++i]="</head><body class="+(isPopup?'"FirebugPopup"':"")+">";
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,chrome);
                                  -append(this,Base);
                                  -FirebugChrome.chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -Env.chrome=chrome.window;
                                  -this.commandLineVisible=false;
                                  -this.sidePanelVisible=false;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase=extend(Controller,PanelBar);
                                  -append(ChromeBase,Context.prototype);
                                  -append(ChromeBase,{create:function(){PanelBar.create.call(this);
                                  -if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -}},destroy:function(){this.inspectButton.destroy();
                                  -PanelBar.destroy.call(this);
                                  -this.shutdown()
                                  -},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu2",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore()
                                  -},toggleChrome:function(){Firebug.chrome.toggle()
                                  -},openPopup:function(){Firebug.chrome.toggle(true,true)
                                  -},toggleInspect:function(){Firebug.Inspector.toggleInspect()
                                  -},focusCommandLine:function(){Firebug.chrome.focusCommandLine()
                                  -},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html")
                                  -},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug")
                                  -},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list")
                                  -},visit:function(url){window.open(url)
                                  -}});
                                  -var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies;
                                  -return[{label:"Save Options in Cookies",type:"checkbox",value:"saveCookies",checked:Firebug.saveCookies,command:"saveOptions"},"-",{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},"-",{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},"-",{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Restore Options",command:"restorePrefs",disabled:cookiesDisabled}]
                                  -},onCheck:function(target,value,checked){Firebug.setPref(value,checked)
                                  -},saveOptions:function(target){var saveEnabled=target.getAttribute("checked");
                                  -if(!saveEnabled){this.restorePrefs()
                                  -}this.updateMenu(target);
                                  -return false
                                  -},restorePrefs:function(target){Firebug.restorePrefs();
                                  -if(Firebug.saveCookies){Firebug.savePrefs()
                                  -}else{Firebug.erasePrefs()
                                  -}if(target){this.updateMenu(target)
                                  -}return false
                                  -},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption");
                                  -var firstOption=options[0];
                                  -var enabled=Firebug.saveCookies;
                                  -if(enabled){Menu.check(firstOption)
                                  -}else{Menu.uncheck(firstOption)
                                  -}if(enabled){Menu.check(options[0])
                                  -}else{Menu.uncheck(options[0])
                                  -}for(var i=1,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var value=option.getAttribute("value");
                                  -var pref=Firebug[value];
                                  -if(pref){Menu.check(option)
                                  -}else{Menu.uncheck(option)
                                  -}if(enabled){Menu.enable(option)
                                  -}else{Menu.disable(option)
                                  -}}}};
                                  -Menu.register(firebugOptionsMenu);
                                  -var menu=firebugMenu;
                                  -var testMenuClick=function(event){cancelEvent(event,true);
                                  -var target=event.target||event.srcElement;
                                  -if(menu.isVisible){menu.hide()
                                  -}else{var offsetLeft=isIE6?1:-4;
                                  -var box=Firebug.chrome.getElementBox(target);
                                  -menu.show(box.left+offsetLeft,box.top+box.height-5)
                                  -}return false
                                  -};
                                  -var iconButton=new IconButton({type:"toggle",element:$("fbFirebugButton"),onClick:testMenuClick});
                                  -iconButton.initialize()
                                  -},initialize:function(){if(Firebug.Console){Firebug.Console.flush()
                                  -}if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application")
                                  -}Controller.initialize.call(this);
                                  -PanelBar.initialize.call(this);
                                  -fbTop=$("fbTop");
                                  -fbContent=$("fbContent");
                                  -fbContentStyle=fbContent.style;
                                  -fbBottom=$("fbBottom");
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbToolbar=$("fbToolbar");
                                  -fbPanelBox1=$("fbPanelBox1");
                                  -fbPanelBox1Style=fbPanelBox1.style;
                                  -fbPanelBox2=$("fbPanelBox2");
                                  -fbPanelBox2Style=fbPanelBox2.style;
                                  -fbPanelBar2Box=$("fbPanelBar2Box");
                                  -fbPanelBar2BoxStyle=fbPanelBar2Box.style;
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbVSplitterStyle=fbVSplitter.style;
                                  -fbPanel1=$("fbPanel1");
                                  -fbPanel1Style=fbPanel1.style;
                                  -fbPanel2=$("fbPanel2");
                                  -fbPanel2Style=fbPanel2.style;
                                  -fbConsole=$("fbConsole");
                                  -fbConsoleStyle=fbConsole.style;
                                  -fbHTML=$("fbHTML");
                                  -fbCommandLine=$("fbCommandLine");
                                  -topHeight=fbTop.offsetHeight;
                                  -topPartialHeight=fbToolbar.offsetHeight;
                                  -disableTextSelection($("fbToolbar"));
                                  -disableTextSelection($("fbPanelBarBox"));
                                  -disableTextSelection($("fbPanelBar1"));
                                  -disableTextSelection($("fbPanelBar2"));
                                  -if(Firebug.CommandLine){commandLine=new Firebug.CommandLine(fbCommandLine)
                                  -}if(isIE6&&Firebug.Selector){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}if(Firebug.Inspector){this.inspectButton.initialize()
                                  -}var self=this;
                                  -setTimeout(function(){self.selectPanel(FirebugChrome.selectedPanelName);
                                  -if(FirebugChrome.selectedPanelName=="Console"){Firebug.chrome.focusCommandLine()
                                  -}},0);
                                  -this.testMenu()
                                  -},shutdown:function(){if(Firebug.Inspector){this.inspectButton.shutdown()
                                  -}restoreTextSelection($("fbToolbar"));
                                  -restoreTextSelection($("fbPanelBarBox"));
                                  -restoreTextSelection($("fbPanelBar1"));
                                  -restoreTextSelection($("fbPanelBar2"));
                                  -fbTop=null;
                                  -fbContent=null;
                                  -fbContentStyle=null;
                                  -fbBottom=null;
                                  -fbBtnInspect=null;
                                  -fbToolbar=null;
                                  -fbPanelBox1=null;
                                  -fbPanelBox1Style=null;
                                  -fbPanelBox2=null;
                                  -fbPanelBox2Style=null;
                                  -fbPanelBar2Box=null;
                                  -fbPanelBar2BoxStyle=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbVSplitterStyle=null;
                                  -fbPanel1=null;
                                  -fbPanel1Style=null;
                                  -fbPanel2=null;
                                  -fbConsole=null;
                                  -fbConsoleStyle=null;
                                  -fbHTML=null;
                                  -fbCommandLine=null;
                                  -topHeight=null;
                                  -topPartialHeight=null;
                                  -Controller.shutdown.call(this);
                                  -PanelBar.shutdown.call(this);
                                  -if(Firebug.CommandLine){commandLine.destroy()
                                  -}},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=FirebugChrome.chromeMap.frame;
                                  -frame.reattach();
                                  -FirebugChrome.chromeMap.popup=null;
                                  -frame.open();
                                  -return
                                  -}if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!FirebugChrome.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!FirebugChrome.chromeMap.popup){createChromeWindow({type:"popup"})
                                  -}},reattach:function(oldChrome,newChrome){Firebug.browser.window.Firebug=Firebug;
                                  -var newPanelMap=newChrome.panelMap;
                                  -var oldPanelMap=oldChrome.panelMap;
                                  -var panel;
                                  -for(var name in newPanelMap){panel=newPanelMap[name];
                                  -if(panel.options.innerHTMLSync){panel.contentNode.innerHTML=oldPanelMap[name].contentNode.innerHTML
                                  -}}Firebug.chrome=newChrome;
                                  -if(newChrome.type=="popup"){newChrome.initialize()
                                  -}else{FirebugChrome.selectedPanelName=oldChrome.selectedPanel.name
                                  -}dispatch(newPanelMap,"reattach",[oldChrome,newChrome])
                                  -},draw:function(){var size=Firebug.chrome.getWindowSize();
                                  -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0,y=Math.max(size.height,topHeight),height=Math.max(y-topHeight-commandLineHeight,0)+"px",sideWidth=Firebug.chrome.sidePanelVisible?FirebugChrome.sidePanelWidth:0,width=Math.max(size.width-sideWidth,0)+"px";
                                  -fbPanelBox1Style.height=height;
                                  -fbPanel1Style.height=height;
                                  -if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
                                  -}fbPanelBox1Style.width=width;
                                  -fbPanel1Style.width=width;
                                  -if(Firebug.chrome.sidePanelVisible){sideWidth=Math.max(sideWidth-6,0)+"px";
                                  -fbPanel2Style.height=height;
                                  -fbPanel2Style.width=sideWidth;
                                  -fbPanelBox2Style.width=sideWidth;
                                  -fbPanelBar2BoxStyle.width=sideWidth;
                                  -fbVSplitterStyle.right=sideWidth
                                  -}},resize:function(){var self=this;
                                  -setTimeout(function(){self.draw();
                                  -if(noFixedPosition&&self.type=="frame"){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(options.hasSidePanel);
                                  -Firebug.chrome.draw()
                                  -},focusCommandLine:function(){var selectedPanelName=this.selectedPanel.name,panelToSelect;
                                  -if(focusCommandLineState==0||selectedPanelName!="Console"){focusCommandLineState=0;
                                  -lastFocusedPanelName=selectedPanelName;
                                  -panelToSelect="Console"
                                  -}if(focusCommandLineState==1){panelToSelect=lastFocusedPanelName
                                  -}this.selectPanel(panelToSelect);
                                  -if(panelToSelect=="Console"){commandLine.element.focus()
                                  -}else{fbPanel1.focus()
                                  -}focusCommandLineState=++focusCommandLineState%2
                                  -}});
                                  -var focusCommandLineState=0,lastFocusedPanelName;
                                  -var ChromeFrameBase=extend(ChromeBase,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Env.Options.startInNewWindow){this.close();
                                  -this.toggle(true,true);
                                  -return
                                  -}if(Env.Options.startOpened){this.open()
                                  -}else{this.close()
                                  -}},destroy:function(){removeGlobalEvent("keydown",onGlobalKeyDown);
                                  -ChromeBase.destroy.call(this);
                                  -this.document=null;
                                  -delete this.document;
                                  -this.window=null;
                                  -delete this.window;
                                  -this.node.parentNode.removeChild(this.node);
                                  -this.node=null;
                                  -delete this.node
                                  -},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[$("fbChrome_btClose"),"click",this.close],[$("fbChrome_btDetach"),"click",this.detach]);
                                  -if(!Env.Options.enablePersistent){this.addController([Firebug.browser.window,"unload",Firebug.shutdown])
                                  -}if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown;
                                  -fbHSplitter.onmousedown=onHSplitterMouseDown;
                                  -this.isInitialized=true
                                  -},shutdown:function(){fbVSplitter.onmousedown=null;
                                  -fbHSplitter.onmousedown=null;
                                  -ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},reattach:function(){var frame=FirebugChrome.chromeMap.frame;
                                  -ChromeBase.reattach(FirebugChrome.chromeMap.popup,this)
                                  -},open:function(){if(!FirebugChrome.isOpen){FirebugChrome.isOpen=true;
                                  -var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(Firebug.showIconWhenHidden){if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}}else{node.style.display="block"
                                  -}var main=$("fbChrome");
                                  -main.style.display="block";
                                  -var self=this;
                                  -setTimeout(function(){node.style.visibility="visible";
                                  -self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}self.draw()
                                  -},10)
                                  -}},close:function(){if(FirebugChrome.isOpen||!this.isInitialized){if(this.isInitialized){this.shutdown()
                                  -}FirebugChrome.isOpen=false;
                                  -var node=this.node;
                                  -if(Firebug.showIconWhenHidden){node.style.visibility="hidden";
                                  -var main=$("fbChrome",FirebugChrome.chromeMap.frame.document);
                                  -main.style.display="none";
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}else{node.style.display="none"
                                  -}}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if(this.type=="frame"&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}if(fbVSplitterStyle){fbVSplitterStyle.right=FirebugChrome.sidePanelWidth+"px"
                                  -}this.draw()
                                  -}});
                                  -var ChromeMini=extend(Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon",doc);
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors",doc);
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -node.setAttribute("allowTransparency","true");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="transparent";
                                  -this.addController([$("fbMiniIcon",doc),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=FirebugChrome.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -node.setAttribute("allowTransparency","false");
                                  -if(noFixedPosition){this.fixIEPosition()
                                  -}this.document.body.style.backgroundColor="#fff";
                                  -var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="none";
                                  -Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeBase,{initialize:function(){this.document.body.className="FirebugPopup";
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy]);
                                  -if(Env.Options.enablePersistent){this.persist=bind(this.persist,this);
                                  -addEvent(Firebug.browser.window,"unload",this.persist)
                                  -}else{this.addController([Firebug.browser.window,"unload",this.close])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown
                                  -},destroy:function(){var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){dispatch(frame.panelMap,"detach",[this,frame]);
                                  -frame.reattach(this,frame)
                                  -}if(Env.Options.enablePersistent){removeEvent(Firebug.browser.window,"unload",this.persist)
                                  -}ChromeBase.destroy.apply(this);
                                  -FirebugChrome.chromeMap.popup=null;
                                  -this.node.close()
                                  -},persist:function(){persistTimeStart=new Date().getTime();
                                  -removeEvent(Firebug.browser.window,"unload",this.persist);
                                  -Firebug.Inspector.destroy();
                                  -Firebug.browser.window.FirebugOldBrowser=true;
                                  -var persistTimeStart=new Date().getTime();
                                  -var waitMainWindow=function(){var doc,head;
                                  -try{if(window.opener&&!window.opener.FirebugOldBrowser&&(doc=window.opener.document)){try{var persistDelay=new Date().getTime()-persistTimeStart;
                                  -window.Firebug=Firebug;
                                  -window.opener.Firebug=Firebug;
                                  -Env.browser=window.opener;
                                  -Firebug.browser=Firebug.context=new Context(Env.browser);
                                  -registerConsole();
                                  -var chrome=Firebug.chrome;
                                  -addEvent(Firebug.browser.window,"unload",chrome.persist);
                                  -FBL.cacheDocument();
                                  -Firebug.Inspector.create();
                                  -var htmlPanel=chrome.getPanel("HTML");
                                  -htmlPanel.createUI();
                                  -Firebug.Console.info("Firebug could not capture console calls during "+persistDelay+"ms")
                                  -}catch(pE){alert("persist error: "+(pE.message||pE))
                                  -}}else{window.setTimeout(waitMainWindow,0)
                                  -}}catch(E){window.close()
                                  -}};
                                  -waitMainWindow()
                                  -},close:function(){this.destroy()
                                  -}});
                                  -var commandLine=null;
                                  -var fbTop=null;
                                  -var fbContent=null;
                                  -var fbContentStyle=null;
                                  -var fbBottom=null;
                                  -var fbBtnInspect=null;
                                  -var fbToolbar=null;
                                  -var fbPanelBox1=null;
                                  -var fbPanelBox1Style=null;
                                  -var fbPanelBox2=null;
                                  -var fbPanelBox2Style=null;
                                  -var fbPanelBar2Box=null;
                                  -var fbPanelBar2BoxStyle=null;
                                  -var fbHSplitter=null;
                                  -var fbVSplitter=null;
                                  -var fbVSplitterStyle=null;
                                  -var fbPanel1=null;
                                  -var fbPanel1Style=null;
                                  -var fbPanel2=null;
                                  -var fbPanel2Style=null;
                                  -var fbConsole=null;
                                  -var fbConsoleStyle=null;
                                  -var fbHTML=null;
                                  -var fbCommandLine=null;
                                  -var topHeight=null;
                                  -var topPartialHeight=null;
                                  -var chromeRedrawSkipRate=isIE?75:isOpera?80:75;
                                  -var lastSelectedPanelName=null;
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=Firebug.chrome.commandLineVisible;
                                  -Firebug.chrome.commandLineVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.commandLineVisible;
                                  -if(Firebug.chrome.commandLineVisible!=last){fbBottom.className=Firebug.chrome.commandLineVisible?"":"hide"
                                  -}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=Firebug.chrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.sidePanelVisible;
                                  -if(Firebug.chrome.sidePanelVisible!=last){fbPanelBox2.className=Firebug.chrome.sidePanelVisible?"":"hide";
                                  -fbPanelBar2Box.className=Firebug.chrome.sidePanelVisible?"":"hide"
                                  -}};
                                  -var onGlobalKeyDown=function onGlobalKeyDown(event){var keyCode=event.keyCode;
                                  -var shiftKey=event.shiftKey;
                                  -var ctrlKey=event.ctrlKey;
                                  -if(keyCode==123&&(!isFirefox&&!shiftKey||shiftKey&&isFirefox)){Firebug.chrome.toggle(false,ctrlKey);
                                  -cancelEvent(event,true)
                                  -}else{if(keyCode==67&&ctrlKey&&shiftKey){Firebug.Inspector.toggleInspect();
                                  -cancelEvent(event,true)
                                  -}else{if(keyCode==76&&ctrlKey&&shiftKey){Firebug.chrome.focusCommandLine();
                                  -cancelEvent(event,true)
                                  -}}}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){addEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var lastHSplitterMouseMove=0;
                                  -var onHSplitterMouseMoveBuffer=null;
                                  -var onHSplitterMouseMoveTimer=null;
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugUI"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -FirebugChrome.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="";
                                  -Firebug.chrome.draw();
                                  -return false
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var lastVSplitterMouseMove=0;
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getWindowSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -FirebugChrome.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=object[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=node[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?node.style.cssText:attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")
                                  -}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ConsoleAPI={firebuglite:Firebug.version,xxx:function(o){var rep=Firebug.getRep(o);
                                  -var className="";
                                  -var panel=Firebug.DOM.getPanel();
                                  -var toggles={};
                                  -var row=Firebug.Console.getPanel().contentNode.ownerDocument.createElement("div");
                                  -var target=row;
                                  -var object=o;
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -rep.tag.replace({domPanel:panel,toggles:toggles,object:object},target);
                                  -Firebug.Console.appendRow(row)
                                  -},log:function(){return Firebug.Console.logFormatted(arguments,"")
                                  -},debug:function(){return Firebug.Console.logFormatted(arguments,"debug")
                                  -},info:function(){return Firebug.Console.logFormatted(arguments,"info")
                                  -},warn:function(){return Firebug.Console.logFormatted(arguments,"warning")
                                  -},error:function(){return Firebug.Console.logFormatted(arguments,"error")
                                  -},assert:function(truth,message){if(!truth){var args=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -++i){args.push(arguments[i])
                                  -}Firebug.Console.logFormatted(args.length?args:["Assertion Failure"],"error");
                                  -throw message?message:"Assertion Failure"
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},dir:function(object){var html=[];
                                  -var pairs=[];
                                  -for(var name in object){try{pairs.push([name,object[name]])
                                  -}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1
                                  -});
                                  -html.push('<div class="log-object">');
                                  -for(var i=0;
                                  -i<pairs.length;
                                  -++i){var name=pairs[i][0],value=pairs[i][1];
                                  -html.push('<div class="property">','<div class="propertyValueCell"><span class="propertyValue">');
                                  -Firebug.Reps.appendObject(value,html);
                                  -html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></div>");
                                  -html.push("</div>")
                                  -}html.push("</div>");
                                  -return Firebug.Console.logRow(html,"dir")
                                  -},dirxml:function(node){var html=[];
                                  -Firebug.Reps.appendNode(node,html);
                                  -return Firebug.Console.logRow(html,"dirxml")
                                  -},group:function(){return Firebug.Console.logRow(arguments,"group",Firebug.Console.pushGroup)
                                  -},groupEnd:function(){return Firebug.Console.logRow(arguments,"",Firebug.Console.popGroup)
                                  -},time:function(name){Firebug.Console.timeMap[name]=new Date().getTime();
                                  -return Firebug.Console.LOG_COMMAND
                                  -},timeEnd:function(name){var timeMap=Firebug.Console.timeMap;
                                  -if(name in timeMap){var delta=new Date().getTime()-timeMap[name];
                                  -Firebug.Console.logFormatted([name+":",delta+"ms"]);
                                  -delete timeMap[name]
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},count:function(){return this.warn(["count() not supported."])
                                  -},trace:function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
                                  -}if(f.name){return f.name
                                  -}var name=f.toString().match(/function\s*(\w*)/)[1];
                                  -return name||"anonymous"
                                  -};
                                  -var traceLabel="Stack Trace";
                                  -Firebug.Console.group(traceLabel);
                                  -for(var fn=arguments.callee.caller;
                                  -fn;
                                  -fn=fn.caller){var html=[getFuncName(fn),"("];
                                  -for(var i=0,l=fn.arguments.length;
                                  -i<l;
                                  -++i){if(i){html.push(", ")
                                  -}Firebug.Reps.appendObject(fn.arguments[i],html)
                                  -}html.push(")");
                                  -Firebug.Console.logRow(html,"stackTrace")
                                  -}Firebug.Console.groupEnd(traceLabel);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},profile:function(){return this.warn(["profile() not supported."])
                                  -},profileEnd:function(){return this.warn(["profileEnd() not supported."])
                                  -},clear:function(){Firebug.Console.getPanel().contentNode.innerHTML="";
                                  -return Firebug.Console.LOG_COMMAND
                                  -},open:function(){toggleConsole(true);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},close:function(){if(frameVisible){toggleConsole()
                                  -}return Firebug.Console.LOG_COMMAND
                                  -}};
                                  -var ConsoleModule=extend(Firebug.Module,ConsoleAPI);
                                  -Firebug.Console=extend(ConsoleModule,{LOG_COMMAND:{},groupStack:[],timeMap:{},getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -},flush:function(){var queue=FirebugChrome.consoleMessageQueue;
                                  -FirebugChrome.consoleMessageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}},logFormatted:function(objects,className){var html=[];
                                  -var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}var parts=this.parseFormat(format);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -part.appender(object,html)
                                  -}else{Firebug.Reps.appendText(part,html)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){Firebug.Reps.appendText(" ",html);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){Firebug.Reps.appendText(object,html)
                                  -}else{Firebug.Reps.appendObject(object,html)
                                  -}}return this.logRow(html,className)
                                  -},parseFormat:function(format){var parts=[];
                                  -var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -var Reps=Firebug.Reps;
                                  -var appenderMap={s:Reps.appendText,d:Reps.appendInteger,i:Reps.appendInteger,f:Reps.appendFloat};
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){var type=m[8]?m[8]:m[5];
                                  -var appender=type in appenderMap?appenderMap[type]:Reps.appendObject;
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({appender:appender,precision:precision});
                                  -format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -},logRow:function(message,className,handler){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className,handler)
                                  -}else{FirebugChrome.consoleMessageQueue.push([message,className,handler])
                                  -}return this.LOG_COMMAND
                                  -},writeMessage:function(message,className,handler){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -if(!handler){handler=this.writeRow
                                  -}handler.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}},appendRow:function(row){if(this.groupStack.length>0){var container=this.groupStack[this.groupStack.length-1]
                                  -}else{var container=this.getPanel().contentNode
                                  -}container.appendChild(row)
                                  -},writeRow:function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -},pushGroup:function(message,className){this.logFormatted(message,className);
                                  -var groupRow=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRow.className="logGroup";
                                  -var groupRowBox=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -groupRowBox.className="logGroupBox";
                                  -groupRow.appendChild(groupRowBox);
                                  -this.appendRow(groupRowBox);
                                  -this.groupStack.push(groupRowBox)
                                  -},popGroup:function(){this.groupStack.pop()
                                  -}});
                                  -Firebug.registerModule(Firebug.Console);
                                  -function ConsolePanel(){}ConsolePanel.prototype=extend(Firebug.Panel,{name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Button({element:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize();
                                  -if(Firebug.HTML){addEvent($("fbPanel1"),"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -}},shutdown:function(){if(Firebug.HTML){removeEvent($("fbPanel1"),"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -}this.clearButton.shutdown();
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(ConsolePanel);
                                  -FBL.onError=function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.logRow(html,"error")
                                  -};
                                  -FBL.registerConsole=function(){if(Env.Options.overrideConsole){var win=Env.browser.window;
                                  -if(!isFirefox||isFirefox&&!("console" in win)){win.console=ConsoleAPI
                                  -}else{win.firebug=ConsoleAPI
                                  -}}};
                                  -registerConsole()
                                  -}});
                                  -FBL.ns(function(){with(FBL){var Console=Firebug.Console;
                                  -Firebug.CommandLine=function(element){this.element=element;
                                  -if(isOpera){fixOperaTabKey(this.element)
                                  -}this.clear=bind(this.clear,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -this.onError=bind(this.onError,this);
                                  -addEvent(this.element,"keydown",this.onKeyDown);
                                  -addEvent(Firebug.browser.window,"error",this.onError);
                                  -addEvent(Firebug.chrome.window,"error",this.onError)
                                  -};
                                  -Firebug.CommandLine.prototype={element:null,_buffer:[],_bi:-1,_completing:null,_completePrefix:null,_completeExpr:null,_completeBuffer:null,_ci:null,_completion:{window:["console"],document:["getElementById","getElementsByTagName"]},_stack:function(command){this._buffer.push(command);
                                  -this._bi=this._buffer.length
                                  -},initialize:function(doc){},destroy:function(){removeEvent(Firebug.browser.window,"error",this.onError);
                                  -removeEvent(Firebug.chrome.window,"error",this.onError);
                                  -removeEvent(this.element,"keydown",this.onKeyDown);
                                  -this.element=null;
                                  -delete this.element
                                  -},execute:function(){var cmd=this.element;
                                  -var command=cmd.value;
                                  -this._stack(command);
                                  -Firebug.Console.writeMessage(["<span>&gt;&gt;&gt;</span> ",escapeHTML(command)],"command");
                                  -try{var result=this.evaluate(command);
                                  -if(result!=Console.LOG_COMMAND){var html=[];
                                  -Firebug.Reps.appendObject(result,html);
                                  -Firebug.Console.writeMessage(html,"command")
                                  -}}catch(e){Firebug.Console.writeMessage([e.message||e],"error")
                                  -}cmd.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -return Firebug.context.evaluate(expr,"window",api,Console.error)
                                  -},prevCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -if(this._bi>0&&buffer.length>0){cmd.value=buffer[--this._bi]
                                  -}},nextCommand:function(){var cmd=this.element;
                                  -var buffer=this._buffer;
                                  -var limit=buffer.length-1;
                                  -var i=this._bi;
                                  -if(i<limit){cmd.value=buffer[++this._bi]
                                  -}else{if(i==limit){++this._bi;
                                  -cmd.value=""
                                  -}}},autocomplete:function(reverse){var cmd=this.element;
                                  -var command=cmd.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!this._completing){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}this._completing=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){this._completePrefix=prefix;
                                  -this._completeExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -this._ci=-1;
                                  -buffer=this._completeBuffer=isIE?this._completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=this._completeBuffer
                                  -}if(buffer){prefix=this._completePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=this._ci+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){this._ci=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){cmd.value=this._completeExpr+result
                                  -}},onError:function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.writeRow(html,"error")
                                  -},clear:function(){this.element.value=""
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){this._completing=false
                                  -}if(code==13){this.execute()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -}};
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.")
                                  -},$0:null,$1:null,dir:Firebug.Console.dir,dirxml:Firebug.Console.dirxml};
                                  -Firebug.CommandLine.API={};
                                  -var initializeCommandLineAPI=function initializeCommandLineAPI(){for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}};
                                  -initializeCommandLineAPI()
                                  -}});
                                  -function DomplateTag(tagName){this.tagName=tagName
                                  -}function DomplateEmbed(){}function DomplateLoop(){}(function(){var womb=null;
                                  -var domplate=FBL.domplate=function(){var lastSubject;
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i]
                                  -}for(var name in lastSubject){var val=lastSubject[name];
                                  -if(isTag(val)){val.tag.subject=lastSubject
                                  -}}return lastSubject
                                  -};
                                  -domplate.context=function(context,fn){var lastContext=domplate.lastContext;
                                  -domplate.topContext=context;
                                  -fn.apply(context);
                                  -domplate.topContext=lastContext
                                  -};
                                  -FBL.TAG=function(){var embed=new DomplateEmbed();
                                  -return embed.merge(arguments)
                                  -};
                                  -FBL.FOR=function(){var loop=new DomplateLoop();
                                  -return loop.merge(arguments)
                                  -};
                                  -DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName
                                  -}this.context=oldTag?oldTag.context:null;
                                  -this.subject=oldTag?oldTag.subject:null;
                                  -this.attrs=oldTag?copyObject(oldTag.attrs):{};
                                  -this.classes=oldTag?copyObject(oldTag.classes):{};
                                  -this.props=oldTag?copyObject(oldTag.props):null;
                                  -this.listeners=oldTag?copyArray(oldTag.listeners):null;
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args.length?args[0]:null;
                                  -var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs);
                                  -this.children=[];
                                  -if(domplate.topContext){this.context=domplate.topContext
                                  -}if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children)
                                  -}if(hasAttrs){this.parseAttrs(attrs)
                                  -}return creator(this,DomplateTag)
                                  -},parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]);
                                  -readPartNames(val,this.vars);
                                  -if(name.indexOf("on")==0){var eventName=name.substr(2);
                                  -if(!this.listeners){this.listeners=[]
                                  -}this.listeners.push(eventName,val)
                                  -}else{if(name.indexOf("_")==0){var propName=name.substr(1);
                                  -if(!this.props){this.props={}
                                  -}this.props[propName]=val
                                  -}else{if(name.indexOf("$")==0){var className=name.substr(1);
                                  -if(!this.classes){this.classes={}
                                  -}this.classes[className]=val
                                  -}else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val
                                  -}else{this.attrs[name]=val
                                  -}}}}}},compile:function(){if(this.renderMarkup){return
                                  -}this.compileMarkup();
                                  -this.compileDOM()
                                  -},compileMarkup:function(){this.markupArgs=[];
                                  -var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0};
                                  -this.generateMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -var fnBlock=["r=(function (__code__, __context__, __in__, __out__"];
                                  -for(var i=0;
                                  -i<info.argIndex;
                                  -++i){fnBlock.push(", s",i)
                                  -}fnBlock.push(") {");
                                  -if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (__context__) {")
                                  -}fnBlock.push("with (__in__) {");
                                  -fnBlock.push.apply(fnBlock,blocks);
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("}})");
                                  -function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var tagOutputs=[];
                                  -var markupArgs=[code,tag.tag.context,args,tagOutputs];
                                  -markupArgs.push.apply(markupArgs,tag.tag.markupArgs);
                                  -tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs);
                                  -outputs.push(tag);
                                  -outputs.push(tagOutputs)
                                  -}function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}function __loop__(iter,outputs,fn){var iterOuts=[];
                                  -outputs.push(iterOuts);
                                  -if(iter instanceof Array){iter=new ArrayIterator(iter)
                                  -}try{while(1){var value=iter.next();
                                  -var itemOuts=[0,0];
                                  -iterOuts.push(itemOuts);
                                  -fn.apply(this,[value,itemOuts])
                                  -}}catch(exc){if(exc!=StopIteration){throw exc
                                  -}}}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderMarkup=r
                                  -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars)
                                  -}for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.getVarNames(args)
                                  -}else{if(child instanceof Parts){for(var i=0;
                                  -i<child.parts.length;
                                  -++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name;
                                  -var names=name.split(".");
                                  -args.push(names[0])
                                  -}}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"');
                                  -for(var name in this.attrs){if(name!="class"){var val=this.attrs[name];
                                  -topBlock.push(', " ',name,'=\\""');
                                  -addParts(val,",",topBlock,info,true);
                                  -topBlock.push(', "\\""')
                                  -}}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){readPartNames(this.listeners[i+1],topOuts)
                                  -}}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts)
                                  -}}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""');
                                  -if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true)
                                  -}topBlock.push(', " "');
                                  -for(var name in this.classes){topBlock.push(", (");
                                  -addParts(this.classes[name],"",topBlock,info);
                                  -topBlock.push(' ? "',name,'" + " " : "")')
                                  -}topBlock.push(', "\\""')
                                  -}topBlock.push(',">"');
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -topBlock.push(',"</',this.tagName,'>"')
                                  -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info)
                                  -}else{addParts(child,",",topBlock,info,true)
                                  -}}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");")
                                  -}if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");")
                                  -}topBlock.splice(0,topBlock.length);
                                  -topOuts.splice(0,topOuts.length)
                                  -},addLocals:function(blocks){var varNames=[];
                                  -this.getVarNames(varNames);
                                  -var map={};
                                  -for(var i=0;
                                  -i<varNames.length;
                                  -++i){var name=varNames[i];
                                  -if(map.hasOwnProperty(name)){continue
                                  -}map[name]=1;
                                  -var names=name.split(".");
                                  -blocks.push("var ",names[0]+" = __in__."+names[0]+";")
                                  -}},compileDOM:function(){var path=[];
                                  -var blocks=[];
                                  -this.domArgs=[];
                                  -path.embedIndex=0;
                                  -path.loopIndex=0;
                                  -path.staticIndex=0;
                                  -path.renderIndex=0;
                                  -var nodeCount=this.generateDOM(path,blocks,this.domArgs);
                                  -var fnBlock=["r=(function (root, context, o"];
                                  -for(var i=0;
                                  -i<path.staticIndex;
                                  -++i){fnBlock.push(", ","s"+i)
                                  -}for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){fnBlock.push(", ","d"+i)
                                  -}fnBlock.push(") {");
                                  -for(var i=0;
                                  -i<path.loopIndex;
                                  -++i){fnBlock.push("var l",i," = 0;")
                                  -}for(var i=0;
                                  -i<path.embedIndex;
                                  -++i){fnBlock.push("var e",i," = 0;")
                                  -}if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (context) {")
                                  -}fnBlock.push(blocks.join(""));
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("return ",nodeCount,";");
                                  -fnBlock.push("})");
                                  -function __bind__(object,fn){return function(event){return fn.apply(object,[event])
                                  -}
                                  -}function __link__(node,tag,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var domArgs=[node,tag.tag.context,0];
                                  -domArgs.push.apply(domArgs,tag.tag.domArgs);
                                  -domArgs.push.apply(domArgs,args);
                                  -return tag.tag.renderDOM.apply(tag.tag.subject,domArgs)
                                  -}var self=this;
                                  -function __loop__(iter,fn){var nodeCount=0;
                                  -for(var i=0;
                                  -i<iter.length;
                                  -++i){iter[i][0]=i;
                                  -iter[i][1]=nodeCount;
                                  -nodeCount+=fn.apply(this,iter[i])
                                  -}return nodeCount
                                  -}function __path__(parent,offset){var root=parent;
                                  -for(var i=2;
                                  -i<arguments.length;
                                  -++i){var index=arguments[i];
                                  -if(i==3){index+=offset
                                  -}if(index==-1){parent=parent.parentNode
                                  -}else{parent=parent.childNodes[index]
                                  -}}return parent
                                  -}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderDOM=r
                                  -},generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks)
                                  -}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){var val=this.listeners[i+1];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);")
                                  -}}if(this.props){for(var name in this.props){var val=this.props[name];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push("node.",name," = ",arg,";")
                                  -}}this.generateChildDOM(path,blocks,args);
                                  -return 1
                                  -},generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o");
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){blocks.push(",",path[i])
                                  -}blocks.push(");")
                                  -},generateChildDOM:function(path,blocks,args){path.push(0);
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args)
                                  -}else{path[path.length-1]+="+1"
                                  -}}path.pop()
                                  -}};
                                  -DomplateEmbed.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]);
                                  -this.attrs=oldTag?oldTag.attrs:{};
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args[1];
                                  -for(var name in attrs){var val=parseValue(attrs[name]);
                                  -this.attrs[name]=val;
                                  -readPartNames(val,this.vars)
                                  -}return creator(this,DomplateEmbed)
                                  -},getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name)
                                  -}if(this.vars){names.push.apply(names,this.vars)
                                  -}},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("__link__(");
                                  -addParts(this.value,"",blocks,info);
                                  -blocks.push(", __code__, __out__, {");
                                  -var lastName=null;
                                  -for(var name in this.attrs){if(lastName){blocks.push(",")
                                  -}lastName=name;
                                  -var val=this.attrs[name];
                                  -blocks.push('"',name,'":');
                                  -addParts(val,"",blocks,info)
                                  -}blocks.push("});")
                                  -},generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++;
                                  -this.generateNodePath(path,blocks);
                                  -var valueName="d"+path.renderIndex++;
                                  -var argsName="d"+path.renderIndex++;
                                  -blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");");
                                  -return embedName
                                  -}});
                                  -DomplateLoop.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0];
                                  -this.iter=oldTag?oldTag.iter:parseValue(args[1]);
                                  -this.vars=[];
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -var offset=Math.min(args.length,2);
                                  -parseChildren(args,offset,this.vars,this.children);
                                  -return creator(this,DomplateLoop)
                                  -},getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name)
                                  -}DomplateTag.prototype.getVarNames.apply(this,[names])
                                  -},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -var iterName;
                                  -if(this.iter instanceof Parts){var part=this.iter.parts[0];
                                  -iterName=part.name;
                                  -if(part.format){for(var i=0;
                                  -i<part.format.length;
                                  -++i){iterName=part.format[i]+"("+iterName+")"
                                  -}}}else{iterName=this.iter
                                  -}blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {");
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("}]);")
                                  -},generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++;
                                  -var counterName="i"+path.loopIndex;
                                  -var loopName="l"+path.loopIndex++;
                                  -if(!path.length){path.push(-1,0)
                                  -}var preIndex=path.renderIndex;
                                  -path.renderIndex=0;
                                  -var nodeCount=0;
                                  -var subBlocks=[];
                                  -var basePath=path[path.length-1];
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount;
                                  -var child=this.children[i];
                                  -if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args)
                                  -}else{nodeCount+="+1"
                                  -}}path[path.length-1]=basePath+"+"+loopName;
                                  -blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName);
                                  -for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){blocks.push(",d"+i)
                                  -}blocks.push(") {");
                                  -blocks.push(subBlocks.join(""));
                                  -blocks.push("return ",nodeCount,";");
                                  -blocks.push("}]);");
                                  -path.renderIndex=preIndex;
                                  -return loopName
                                  -}});
                                  -function Variable(name,format){this.name=name;
                                  -this.format=format
                                  -}function Parts(parts){this.parts=parts
                                  -}function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -var index=0;
                                  -var parts=[];
                                  -var m;
                                  -while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index);
                                  -if(pre){parts.push(pre)
                                  -}var expr=m[1].split("|");
                                  -parts.push(new Variable(expr[0],expr.slice(1)));
                                  -index=re.lastIndex
                                  -}if(!index){return str
                                  -}var post=str.substr(index);
                                  -if(post){parts.push(post)
                                  -}return new Parts(parts)
                                  -}function parseValue(val){return typeof(val)=="string"?parseParts(val):val
                                  -}function parseChildren(args,offset,vars,children){for(var i=offset;
                                  -i<args.length;
                                  -++i){var val=parseValue(args[i]);
                                  -children.push(val);
                                  -readPartNames(val,vars)
                                  -}}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){vars.push(part.name)
                                  -}}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[];
                                  -for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var varName="d"+path.renderIndex++;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){varName=part.format[j]+"("+varName+")"
                                  -}}vals.push(varName)
                                  -}else{vals.push('"'+part.replace(/"/g,'\\"')+'"')
                                  -}}return vals.join("+")
                                  -}else{args.push(val);
                                  -return"s"+path.staticIndex++
                                  -}}function addParts(val,delim,block,info,escapeIt){var vals=[];
                                  -if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var partName=part.name;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){partName=part.format[j]+"("+partName+")"
                                  -}}if(escapeIt){vals.push("__escape__("+partName+")")
                                  -}else{vals.push(partName)
                                  -}}else{vals.push('"'+part+'"')
                                  -}}}else{if(isTag(val)){info.args.push(val);
                                  -vals.push("s"+info.argIndex++)
                                  -}else{vals.push('"'+val+'"')
                                  -}}var parts=vals.join(delim);
                                  -if(parts){block.push(delim,parts)
                                  -}}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag
                                  -}function creator(tag,cons){var fn=new Function("var tag = arguments.callee.tag;var cons = arguments.callee.cons;var newTag = new cons();return newTag.merge(arguments, tag);");
                                  -fn.tag=tag;
                                  -fn.cons=cons;
                                  -extend(fn,Renderer);
                                  -return fn
                                  -}function copyArray(oldArray){var ary=[];
                                  -if(oldArray){for(var i=0;
                                  -i<oldArray.length;
                                  -++i){ary.push(oldArray[i])
                                  -}}return ary
                                  -}function copyObject(l,r){var m={};
                                  -extend(m,l);
                                  -extend(m,r);
                                  -return m
                                  -}function extend(l,r){for(var n in r){l[n]=r[n]
                                  -}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}}function ArrayIterator(array){var index=-1;
                                  -this.next=function(){if(++index>=array.length){throw StopIteration
                                  -}return array[index]
                                  -}
                                  -}function StopIteration(){}FBL.$break=function(){throw StopIteration
                                  -};
                                  -var Renderer={renderHTML:function(args,outputs,self){var code=[];
                                  -var markupArgs=[code,this.tag.context,args,outputs];
                                  -markupArgs.push.apply(markupArgs,this.tag.markupArgs);
                                  -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs);
                                  -return code.join("")
                                  -},insertRows:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -var div=doc.createElement("div");
                                  -div.innerHTML="<table><tbody>"+html+"</tbody></table>";
                                  -var tbody=div.firstChild.firstChild;
                                  -var parent=before.tagName=="TR"?before.parentNode:before;
                                  -var after=before.tagName=="TR"?before.nextSibling:null;
                                  -var firstRow=tbody.firstChild,lastRow;
                                  -while(tbody.firstChild){lastRow=tbody.firstChild;
                                  -if(after){parent.insertBefore(lastRow,after)
                                  -}else{parent.appendChild(lastRow)
                                  -}}var offset=0;
                                  -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild;
                                  -for(;
                                  -node&&node!=firstRow;
                                  -node=node.nextSibling){++offset
                                  -}}var domArgs=[firstRow,this.tag.context,offset];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return[firstRow,lastRow]
                                  -},insertAfter:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild;
                                  -while(womb.firstChild){if(before.nextSibling){before.parentNode.insertBefore(womb.firstChild,before.nextSibling)
                                  -}else{before.parentNode.appendChild(womb.firstChild)
                                  -}}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:(this.tag.subject?this.tag.subject:null),domArgs);
                                  -return root
                                  -},replace:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var root;
                                  -if(parent.nodeType==1){parent.innerHTML=html;
                                  -root=parent.firstChild
                                  -}else{if(!parent||parent.nodeType!=9){parent=document
                                  -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild
                                  -}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -},append:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild;
                                  -while(womb.firstChild){parent.appendChild(womb.firstChild)
                                  -}womb=null;
                                  -var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -}};
                                  -function defineTags(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){var tagName=arguments[i];
                                  -var fn=new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -fn.DomplateTag=DomplateTag;
                                  -var fnName=tagName.toUpperCase();
                                  -FBL[fnName]=fn
                                  -}}defineTags("a","button","br","canvas","col","colgroup","div","fieldset","form","h1","h2","h3","hr","img","input","label","legend","li","ol","optgroup","option","p","pre","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","tr","tt","ul","iframe")
                                  -})();
                                  -var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"});
                                  -var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"});
                                  -var OBJECTLINK=this.OBJECTLINK=isIE6?A({"class":"objectLink objectLink-$className a11yFocus",href:"javascript:void(0)",_repObject:"$object"}):A({"class":"objectLink objectLink-$className a11yFocus",_repObject:"$object"});
                                  -this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined"
                                  -}});
                                  -this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null
                                  -}});
                                  -this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"});
                                  -this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number"
                                  -}});
                                  -this.String=domplate(Firebug.Rep,{tag:OBJECTBOX("&quot;$object&quot;"),shortTag:OBJECTBOX("&quot;$object|cropString&quot;"),className:"string",supportsObject:function(object,type){return type=="string"
                                  -}});
                                  -this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"});
                                  -this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")});
                                  -this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")});
                                  -this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/;
                                  -var fnText=safeToString(fn);
                                  -var m=fnRegex.exec(fnText);
                                  -return m?m[1]:"function()"
                                  -},copySource:function(fn){copyToClipboard(safeToString(fn))
                                  -},monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor")
                                  -}else{Firebug.Debugger.monitorScript(fn,script,"monitor")
                                  -}},className:"function",supportsObject:function(object,type){return isFunction(object)
                                  -},inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink)
                                  -}},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn);
                                  -if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber])
                                  -}else{if(fn.toString){return fn.toString()
                                  -}}},getTitle:function(fn,context){var name=fn.name?fn.name:"function";
                                  -return name+"()"
                                  -},getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn)
                                  -}if(!script){return
                                  -}var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=script?getFunctionName(script,context):fn.name;
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,fn)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.jsdScript=domplate(Firebug.Rep,{copySource:function(script){var fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.copySource(fn)
                                  -},monitor:function(fn,script,monitored){fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.monitor(fn,script,monitored)
                                  -},className:"jsdScript",inspectable:false,supportsObject:function(object,type){return object instanceof jsdIScript
                                  -},inspectObject:function(script,context){var sourceLink=getSourceLinkForScript(script,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}},getRealObject:function(script,context){return script
                                  -},getTooltip:function(script){return $STRF("jsdIScript",[script.tag])
                                  -},getTitle:function(script,context){var fn=script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getTitle(fn,context)
                                  -},getContextMenuItems:function(script,target,context){var fn=script.functionObject.getWrappedValue();
                                  -var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=getFunctionName(script,context);
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,script)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.Obj=domplate(Firebug.Rep,{tag:OBJECTLINK(SPAN({"class":"objectTitle"},"$object|getTitle"),FOR("prop","$object|propIterator"," $prop.name=",SPAN({"class":"objectPropValue"},"$prop.value|cropString"))),propIterator:function(object){if(!object){return[]
                                  -}var props=[];
                                  -var len=0;
                                  -try{for(var name in object){var val;
                                  -try{val=object[name]
                                  -}catch(exc){continue
                                  -}var t=typeof val;
                                  -if(t=="boolean"||t=="number"||(t=="string"&&val)||(t=="object"&&!isFunction(val)&&val&&val.toString)){var title=(t=="object")?Firebug.getRep(val).getTitle(val):val+"";
                                  -len+=name.length+title.length+1;
                                  -if(len<50){props.push({name:name,value:title})
                                  -}else{break
                                  -}}}}catch(exc){}return props
                                  -},className:"object",supportsObject:function(object,type){return true
                                  -}});
                                  -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}return items
                                  -},shortArrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length&&i<3;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""})
                                  -}return items
                                  -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0;
                                  -for(child=child.previousSibling;
                                  -child;
                                  -child=child.previousSibling){if(child.repObject){++arrayIndex
                                  -}}return arrayIndex
                                  -},className:"array",supportsObject:function(object){return this.isArray(object)
                                  -},isArray:function(obj){try{if(!obj){return false
                                  -}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true
                                  -}else{if(instanceOf(obj,"HTMLCollection")){return true
                                  -}else{if(instanceOf(obj,"NodeList")){return true
                                  -}else{return false
                                  -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc);
                                  -FBTrace.sysout("isArray Fails on obj",obj)
                                  -}}return false
                                  -},getTitle:function(object,context){return"["+object.length+"]"
                                  -}});
                                  -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property
                                  -},getRealObject:function(prop,context){return prop.object[prop.name]
                                  -},getTitle:function(prop,context){return prop.name
                                  -}});
                                  -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile
                                  -},browseObject:function(file,context){openNewTab(file.href);
                                  -return true
                                  -},getRealObject:function(file,context){return null
                                  -}});
                                  -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy
                                  -}});
                                  -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"$object.tagName|toLowerCase"),FOR("attr","$object|attrIterator","&nbsp;$attr.tagName=&quot;",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"&quot;"),"&gt;"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden"
                                  -},getSelectorTag:function(elt){return elt.tagName.toLowerCase()
                                  -},getSelectorId:function(elt){return elt.id?"#"+elt.id:""
                                  -},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:""
                                  -},getValue:function(elt){return"";
                                  -var value;
                                  -if(elt instanceof HTMLImageElement){value=getFileName(elt.src)
                                  -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href)
                                  -}else{if(elt instanceof HTMLInputElement){value=elt.value
                                  -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action)
                                  -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src)
                                  -}}}}}return value?" "+cropString(value,20):""
                                  -},attrIterator:function(elt){var attrs=[];
                                  -var idAttr,classAttr;
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName&&attr.tagName.indexOf("firebug-")!=-1){continue
                                  -}else{if(attr.tagName=="id"){idAttr=attr
                                  -}else{if(attr.tagName=="class"){classAttr=attr
                                  -}else{attrs.push(attr)
                                  -}}}}}if(classAttr){attrs.splice(0,0,classAttr)
                                  -}if(idAttr){attrs.splice(0,0,idAttr)
                                  -}return attrs
                                  -},shortAttrIterator:function(elt){var attrs=[];
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName=="id"||attr.tagName=="class"){attrs.push(attr)
                                  -}}}return attrs
                                  -},getHidden:function(elt){return isVisible(elt)?"":"nodeHidden"
                                  -},getXPath:function(elt){return getElementTreeXPath(elt)
                                  -},getNodeText:function(element){var text=element.textContent;
                                  -if(Firebug.showFullTextNodes){return text
                                  -}else{return cropString(text,50)
                                  -}},copyHTML:function(elt){var html=getElementXML(elt);
                                  -copyToClipboard(html)
                                  -},copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML)
                                  -},copyXPath:function(elt){var xpath=getElementXPath(elt);
                                  -copyToClipboard(xpath)
                                  -},persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null;
                                  -return elts&&elts.length?elts[0]:null
                                  -},className:"element",supportsObject:function(object){return instanceOf(object,"Element")
                                  -},browseObject:function(elt,context){var tag=elt.tagName.toLowerCase();
                                  -if(tag=="script"){openNewTab(elt.src)
                                  -}else{if(tag=="link"){openNewTab(elt.href)
                                  -}else{if(tag=="a"){openNewTab(elt.href)
                                  -}else{if(tag=="img"){openNewTab(elt.src)
                                  -}}}}return true
                                  -},persistObject:function(elt,context){var xpath=getElementXPath(elt);
                                  -return bind(this.persistor,top,xpath)
                                  -},getTitle:function(element,context){return getElementCSSSelector(element)
                                  -},getTooltip:function(elt){return this.getXPath(elt)
                                  -},getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context);
                                  -return[{label:"CopyHTML",command:bindFixed(this.copyHTML,this,elt)},{label:"CopyInnerHTML",command:bindFixed(this.copyInnerHTML,this,elt)},{label:"CopyXPath",command:bindFixed(this.copyXPath,this,elt)},"-",{label:"ShowEventsInConsole",type:"checkbox",checked:monitored,command:bindFixed(toggleMonitorEvents,FBL,elt,null,monitored,context)},"-",{label:"ScrollIntoView",command:bindFixed(elt.scrollIntoView,elt)}]
                                  -}});
                                  -this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"TextNode"),"&nbsp;textContent=&quot;",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),"&quot;","&gt;"),className:"textNode",supportsObject:function(object){return object instanceof Text
                                  -}});
                                  -this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):""
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Document")
                                  -},browseObject:function(doc,context){openNewTab(doc.location.href);
                                  -return true
                                  -},persistObject:function(doc,context){return this.persistor
                                  -},persistor:function(context){return context.window.document
                                  -},getTitle:function(win,context){return"document"
                                  -},getTooltip:function(doc){return doc.location.href
                                  -}});
                                  -this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href)
                                  -},copyURL:function(styleSheet){copyToClipboard(styleSheet.href)
                                  -},openInTab:function(styleSheet){openNewTab(styleSheet.href)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"CSSStyleSheet")
                                  -},browseObject:function(styleSheet,context){openNewTab(styleSheet.href);
                                  -return true
                                  -},persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href)
                                  -},getTooltip:function(styleSheet){return styleSheet.href
                                  -},getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}]
                                  -},persistor:function(context,href){return getStyleSheetByHref(href,context)
                                  -}});
                                  -this.Window=domplate(Firebug.Rep,{tag:OBJECTLINK("Window ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(win){try{return(win&&win.location&&!win.closed)?getFileName(win.location.href):""
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?")
                                  -}}},className:"object",supportsObject:function(object){return instanceOf(object,"Window")
                                  -},browseObject:function(win,context){openNewTab(win.location.href);
                                  -return true
                                  -},persistObject:function(win,context){return this.persistor
                                  -},persistor:function(context){return context.window
                                  -},getTitle:function(win,context){return"window"
                                  -},getTooltip:function(win){if(win&&!win.closed){return win.location.href
                                  -}}});
                                  -this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "];
                                  -var eventFamily=getEventFamily(event.type);
                                  -if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY)
                                  -}else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode)
                                  -}}return info.join("")
                                  -},copyEvent:function(event){return new EventCopy(event)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Event")||instanceOf(object,"EventCopy")
                                  -},getTitle:function(event,context){return"Event "+event.type
                                  -}});
                                  -this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true
                                  -},getSourceLinkTitle:function(sourceLink){if(!sourceLink){return""
                                  -}try{var fileName=getFileName(sourceLink.href);
                                  -fileName=decodeURIComponent(fileName);
                                  -fileName=cropString(fileName,17)
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc)
                                  -}}return $STRF("Line",[fileName,sourceLink.line])
                                  -},copyLink:function(sourceLink){copyToClipboard(sourceLink.href)
                                  -},openInTab:function(sourceLink){openNewTab(sourceLink.href)
                                  -},className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink
                                  -},getTooltip:function(sourceLink){return decodeURI(sourceLink.href)
                                  -},inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context);
                                  -if(scriptFile){return Firebug.chrome.select(sourceLink)
                                  -}}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object);
                                  -return
                                  -}var stylesheet=getStyleSheetByHref(sourceLink.href,context);
                                  -if(stylesheet){var ownerNode=stylesheet.ownerNode;
                                  -if(ownerNode){Firebug.chrome.select(sourceLink,"html");
                                  -return
                                  -}var panel=context.getPanel("stylesheet");
                                  -if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink)
                                  -}}}}viewSource(sourceLink.href,sourceLink.line)
                                  -},browseObject:function(sourceLink,context){openNewTab(sourceLink.href);
                                  -return true
                                  -},getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}]
                                  -}});
                                  -this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context)
                                  -},className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile
                                  -},persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href)
                                  -},browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href
                                  -}});
                                  -this.StackFrame=domplate(Firebug.Rep,{tag:OBJECTBLOCK(A({"class":"objectLink focusRow a11yFocus",_repObject:"$object"},"$object|getCallName"),"(",FOR("arg","$object|argIterator",TAG("$arg.tag",{object:"$arg.value"}),SPAN({"class":"arrayComma"},"$arg.delim")),")",SPAN({"class":"objectLink-sourceLink objectLink"},"$object|getSourceLinkTitle")),getCallName:function(frame){return getFunctionName(frame.script,frame.context)
                                  -},getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),17);
                                  -return $STRF("Line",[fileName,frame.lineNo])
                                  -},argIterator:function(frame){if(!frame.args){return[]
                                  -}var items=[];
                                  -for(var i=0;
                                  -i<frame.args.length;
                                  -++i){var arg=frame.args[i];
                                  -if(!arg){break
                                  -}var rep=Firebug.getRep(arg.value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==frame.args.length-1?"":", ");
                                  -items.push({name:arg.name,value:arg.value,tag:tag,delim:delim})
                                  -}return items
                                  -},className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame
                                  -},inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js");
                                  -Firebug.chrome.select(sourceLink)
                                  -},getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo])
                                  -}});
                                  -this.StackTrace=domplate(Firebug.Rep,{tag:FOR("frame","$object.frames focusRow",TAG(this.StackFrame.tag,{object:"$frame"})),className:"stackTrace",supportsObject:function(object){return object instanceof StackTrace
                                  -}});
                                  -this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid)
                                  -},getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}return getFunctionName(frame.script,context)
                                  -},getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame);
                                  -if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo])
                                  -}else{return $STRF("Line",[frame.script.fileName,frame.line])
                                  -}},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script)
                                  -}});
                                  -this.ErrorMessage=domplate(Firebug.Rep,{tag:OBJECTBOX({$hasTwisty:"$object|hasStackTrace",$hasBreakSwitch:"$object|hasBreakSwitch",$breakForError:"$object|hasErrorBreak",_repObject:"$object",_stackTrace:"$object|getLastErrorStackTrace",onclick:"$onToggleError"},DIV({"class":"errorTitle a11yFocus",role:"checkbox","aria-checked":"false"},"$object.message|getMessage"),DIV({"class":"errorTrace"}),DIV({"class":"errorSourceBox errorSource-$object|getSourceType"},IMG({"class":"errorBreak a11yFocus",src:"blank.gif",role:"checkbox","aria-checked":"false",title:"Break on this error"}),A({"class":"errorSource a11yFocus"},"$object|getLine")),TAG(this.SourceLink.tag,{object:"$object|getSourceLink"})),getLastErrorStackTrace:function(error){return error.trace
                                  -},hasStackTrace:function(error){var url=error.href.toString();
                                  -var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1);
                                  -return !fromCommandLine&&error.trace
                                  -},hasBreakSwitch:function(error){return error.href&&error.lineNo>0
                                  -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo)
                                  -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/;
                                  -var m=re.exec(message);
                                  -return m?m[1]:message
                                  -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80)
                                  -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80)
                                  -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js";
                                  -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null
                                  -},getSourceType:function(error){if(error.source){return"syntax"
                                  -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none"
                                  -}else{if(error.category=="css"){return"none"
                                  -}else{if(!error.href||!error.lineNo){return"none"
                                  -}else{return"exec"
                                  -}}}}},onToggleError:function(event){var target=event.currentTarget;
                                  -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject)
                                  -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target);
                                  -this.inspectObject(target.repObject,panel.context)
                                  -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1];
                                  -toggleClass(target,"opened");
                                  -event.target.setAttribute("aria-checked",hasClass(target,"opened"));
                                  -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox)
                                  -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target);
                                  -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox])
                                  -}}else{clearNode(traceBox)
                                  -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo];
                                  -copyToClipboard(message.join("\n"))
                                  -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo)
                                  -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo)
                                  -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage
                                  -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -FirebugReps.SourceLink.inspectObject(sourceLink,context)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}];
                                  -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors"))
                                  -}return items
                                  -}});
                                  -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -Firebug.chrome.select(sourceLink)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}]
                                  -}});
                                  -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length;
                                  -var list=[];
                                  -for(var i=0;
                                  -i<sourceText.lines.length;
                                  -++i){var lineNo=(i+1)+"";
                                  -while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo
                                  -}list.push({lineNo:lineNo,text:sourceText.lines[i]})
                                  -}return list
                                  -},getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length)
                                  -}});
                                  -this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length;
                                  -return items+" history entries"
                                  -}catch(exc){return"object does not support history (nsIDOMHistory)"
                                  -}},showHistory:function(history){try{var items=history.length;
                                  -Firebug.chrome.select(history)
                                  -}catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory)
                                  -}});
                                  -this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache"
                                  -}catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264"
                                  -}},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264")
                                  -},className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList)
                                  -}}});
                                  -this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage"
                                  -},show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0")
                                  -},className:"Storage",supportsObject:function(object,type){return(object instanceof Storage)
                                  -}});
                                  -Firebug.registerRep(this.Undefined,this.Null,this.Number,this.String,this.Window,this.Element,this.Document,this.StyleSheet,this.Event,this.Property,this.Except,this.Arr);
                                  -Firebug.setDefaultReps(this.Func,this.Obj)
                                  -}});
                                  -FBL.ns(function(){with(FBL){
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;
                                  -[0,0].sort(function(){baseHasDuplicate=false;
                                  -return 0
                                  -});
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector;
                                  -while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];
                                  -parts.push(m[1]);
                                  -if(m[2]){extra=m[3];
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}return results
                                  -};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];
                                  -match.splice(1,1);
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(var i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);
                                  -Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes,0)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.setStart(a,0);
                                  -aRange.setEnd(a,0);
                                  -bRange.setStart(b,0);
                                  -bRange.setEnd(b,0);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){var inspectorTS,inspectorTimer,isInspecting;
                                  -Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},destroy:function(){destroyBoxModelInspector();
                                  -destroyOutlineInspector();
                                  -offlineFragment=null
                                  -},toggleInspect:function(){if(isInspecting){this.stopInspecting()
                                  -}else{Firebug.chrome.inspectButton.changeState("pressed");
                                  -this.startInspecting()
                                  -}},startInspecting:function(){isInspecting=true;
                                  -Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){isInspecting=false;
                                  -destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick);
                                  -if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus()
                                  -}},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){var target=""+targ[cacheID];
                                  -var lazySelect=function(){inspectorTS=new Date().getTime();
                                  -Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -};
                                  -if(inspectorTimer){clearTimeout(inspectorTimer);
                                  -inspectorTimer=null
                                  -}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0)
                                  -}else{inspectorTimer=setTimeout(lazySelect,300)
                                  -}}lastInspecting=new Date().getTime()
                                  -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){var border=2;
                                  -var scrollbarSize=17;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0);
                                  -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0);
                                  -var numVerticalBorders=freeVerticalSpace>0?2:1;
                                  -var o=outlineElements;
                                  -var style;
                                  -style=o.fbOutlineT.style;
                                  -style.top=top-border+"px";
                                  -style.left=left+"px";
                                  -style.height=border+"px";
                                  -style.width=width+"px";
                                  -style=o.fbOutlineL.style;
                                  -style.top=top-border+"px";
                                  -style.left=left-border+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=border+"px";
                                  -style=o.fbOutlineB.style;
                                  -if(freeVerticalSpace>0){style.top=top+height+"px";
                                  -style.left=left+"px";
                                  -style.width=width+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.width=border+"px"
                                  -}style=o.fbOutlineR.style;
                                  -if(freeHorizontalSpace>0){style.top=top-border+"px";
                                  -style.left=left+width+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.height=border+"px";
                                  -style.width=border+"px"
                                  -}if(!outlineVisible){this.showOutline()
                                  -}},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}if(boxModelVisible){this.hideBoxModel()
                                  -}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){var box=Firebug.browser.getElementBox(el);
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var offsetHeight=Firebug.chrome.type=="frame"?FirebugChrome.height:0;
                                  -if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return
                                  -}var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -var border=Firebug.browser.getMeasurementBox(el,"border");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxBorderStyle.top=margin.top+"px";
                                  -boxBorderStyle.left=margin.left+"px";
                                  -boxBorderStyle.height=height+"px";
                                  -boxBorderStyle.width=width+"px";
                                  -boxPaddingStyle.top=margin.top+border.top+"px";
                                  -boxPaddingStyle.left=margin.left+border.left+"px";
                                  -boxPaddingStyle.height=height-border.top-border.bottom+"px";
                                  -boxPaddingStyle.width=width-border.left-border.right+"px";
                                  -boxContentStyle.top=margin.top+border.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+border.left+padding.left+"px";
                                  -boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px";
                                  -boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px";
                                  -if(!boxModelVisible){this.showBoxModel()
                                  -}},hideBoxModel:function(){if(!boxModelVisible){return
                                  -}offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -},showBoxModel:function(){if(boxModelVisible){return
                                  -}if(outlineVisible){this.hideOutline()
                                  -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;";
                                  -var inspectModelStyle=inspectStyle+inspectModelOpacity;
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle=inspectStyle+"background: #666;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var getInspectingTarget=function(){};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.firebugIgnore=true;
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function destroyInspectorFrame(){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame)
                                  -};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
                                  -el.id=name;
                                  -el.firebugIgnore=true;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
                                  -el.parentNode.removeChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModel.firebugIgnore=true;
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=createGlobalElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxBorder=createGlobalElement("div");
                                  -boxBorder.id="fbBoxBorder";
                                  -boxBorderStyle=boxBorder.style;
                                  -boxBorderStyle.cssText=inspectBorderStyle;
                                  -boxModel.appendChild(boxBorder);
                                  -boxPadding=createGlobalElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=createGlobalElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -};
                                  -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue
                                  -}var uid=node[cacheID];
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=node.style.visibility!="hidden"&&node.style.display!="none";
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -var isIE=false;
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?node.style.cssText:attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(document.all){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',s.join(""),'</div><pre class="nodeCode">',escapeHTML(src),"</pre>","</div></div>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
                                  -var uid=treeNode.id;
                                  -var parentNode=documentCache[uid];
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id)
                                  -},select:function(el){var id=el&&el[cacheID];
                                  -if(id){this.selectTreeNode(id)
                                  -}},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=documentCache[id].parentNode;
                                  -if(node&&typeof node[cacheID]!="undefined"){id=""+node[cacheID]
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id);
                                  -if(stack.length>0&&documentCache[id].childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI()
                                  -}if(!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("DOMSidePanel")
                                  -}},destroy:function(){selectedElement=null;
                                  -fbPanel1=null;
                                  -selectedSidePanelTS=null;
                                  -selectedSidePanelTimer=null;
                                  -Firebug.Panel.destroy.apply(this,arguments)
                                  -},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -var d=this.contentNode;
                                  -d.innerHTML=html.join("");
                                  -this.panelNode.appendChild(d)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=$("fbPanel1");
                                  -if(!selectedElement){Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID])
                                  -}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},reattach:function(){if(FirebugChrome.selectedHTMLElementId){Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId)
                                  -}}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectedSidePanelTS,selectedSidePanelTimer;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -FirebugChrome.selectedHTMLElementId=e.id;
                                  -var target=documentCache[e.id];
                                  -var selectedSidePanel=Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -var stack=FirebugChrome.htmlSelectionStack;
                                  -stack.unshift(target);
                                  -Firebug.CommandLine.API.$0=stack[0];
                                  -Firebug.CommandLine.API.$1=stack[1];
                                  -if(stack.length>2){stack.pop()
                                  -}var lazySelect=function(){selectedSidePanelTS=new Date().getTime();
                                  -selectedSidePanel.select(target,true)
                                  -};
                                  -if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer);
                                  -selectedSidePanelTimer=null
                                  -}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0)
                                  -}else{selectedSidePanelTimer=setTimeout(lazySelect,150)
                                  -}}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
                                  -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[FBL.cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[FBL.cacheID];
                                  -if(!uid){return
                                  -}var el=FBL.documentCache[uid.value];
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.CSS=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("CSS"):null
                                  -},renderStyleSheet:function(index){var panel=this.getPanel();
                                  -if(panel.lastStyleSheetIndex!=index){var str=renderStyleSheet(index);
                                  -panel.contentNode.innerHTML=str.join("");
                                  -setTimeout(function(){panel.synchronizeUI()
                                  -},0);
                                  -panel.styleSheetIndex=index;
                                  -panel.lastStyleSheetIndex=index
                                  -}}});
                                  -Firebug.registerModule(Firebug.CSS);
                                  -function CSSStyleSheetPanel(){}CSSStyleSheetPanel.prototype=extend(Firebug.Panel,{name:"CSS",title:"CSS",styleSheetIndex:0,lastStyleSheetIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var styleSheets=doc.styleSheets;
                                  -var selectNode=this.selectNode=createElement("select");
                                  -for(var i=0,length=styleSheets.length;
                                  -i<length;
                                  -i++){var styleSheet=styleSheets[i];
                                  -var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:i});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -}this.toolButtonsNode.appendChild(selectNode)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.selectNode,"change",this.onChangeSelect);
                                  -this.selectStyleSheet(this.styleSheetIndex)
                                  -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
                                  -var oldPanel=oldChrome.getPanel("CSS");
                                  -var index=oldPanel.styleSheetIndex;
                                  -this.selectNode.selectedIndex=index;
                                  -this.styleSheetIndex=index;
                                  -this.lastStyleSheetIndex=-1
                                  -},onChangeSelect:function(event){event=event||window.event;
                                  -var target=event.srcElement||event.currentTarget;
                                  -var index=target.selectedIndex;
                                  -Firebug.CSS.renderStyleSheet(index)
                                  -},selectStyleSheet:function(index){this.selectNode.selectedIndex=index;
                                  -Firebug.CSS.renderStyleSheet(index)
                                  -}});
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -function CSSElementPanel(){}CSSElementPanel.prototype=extend(Firebug.Panel,{name:"CSSElementPanel",parentPanel:"HTML",title:"CSS",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -var style=this.contentNode.style;
                                  -style.padding="4px 8px";
                                  -style.fontFamily="Monaco,monospace"
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -var target=documentCache[FirebugChrome.selectedHTMLElementId];
                                  -if(!target){return
                                  -}var str=renderStyles(target);
                                  -var panel=this;
                                  -panel.contentNode.innerHTML=str.join("");
                                  -panel.containerNode.scrollTop=0
                                  -},select:function(node){var str=renderStyles(node);
                                  -var panel=this;
                                  -panel.contentNode.innerHTML=str.join("");
                                  -panel.containerNode.scrollTop=0
                                  -}});
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -var renderStyleSheet=function renderStyleSheet(index){var styleSheet=Firebug.browser.document.styleSheets[index],str=[],sl=-1;
                                  -try{var rules=styleSheet[isIE?"rules":"cssRules"];
                                  -for(var i=0,rule;
                                  -rule=rules[i];
                                  -i++){var selector=rule.selectorText;
                                  -var cssText=isIE?rule.style.cssText:rule.cssText.match(/\{(.*)\}/)[1];
                                  -str[++sl]=renderRule(selector,cssText.split(";"))
                                  -}}catch(e){str[++sl]="<em>Access to restricted URI denied</em>"
                                  -}return str
                                  -};
                                  -var renderRule=function renderRule(selector,styles){var str="<div class='Selector'>"+selector.toLowerCase()+" {</div>";
                                  -for(var i=0,len=styles.length;
                                  -i<len;
                                  -i++){var rule=styles[i];
                                  -str+=rule.replace(/(.+)\:(.+)/,renderRuleReplacer)
                                  -}str+="<div class='SelectorEnd'>}</div>";
                                  -return str
                                  -};
                                  -var renderRuleReplacer=function renderRuleReplacer(m,g1,g2){return"<div class='CSSText'><span class='CSSProperty'>"+g1.toLowerCase()+": </span><span class='CSSValue'>"+g2.replace(/\s*$/,"")+";</span></div>"
                                  -};
                                  -var getFileName=function getFileName(path){if(!path){return""
                                  -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -return match&&match[0]||path
                                  -};
                                  -var renderStyles=function renderStyles(node){var property=["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -var view=document.defaultView?document.defaultView.getComputedStyle(node,null):node.currentStyle;
                                  -var str=[],sl=-1;
                                  -for(var i=0,len=property.length;
                                  -i<len;
                                  -i++){var item=property[i];
                                  -if(!view[item]){continue
                                  -}str[++sl]="<div class='CSSItem'><span class='CSSProperty'>";
                                  -str[++sl]=toSelectorCase(item);
                                  -str[++sl]="</span>:<span class='CSSValue'>";
                                  -str[++sl]=view[item];
                                  -str[++sl]="</span>;</div>"
                                  -}return str
                                  -};
                                  -var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn)
                                  -};
                                  -var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase()
                                  -};
                                  -var reCamelCase=/([A-Z])/g;
                                  -var reSelectorCase=/\-(.)/g;
                                  -var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null
                                  -},selectSourceCode:function(index){this.getPanel().selectSourceCode(index)
                                  -}});
                                  -Firebug.registerModule(Firebug.Script);
                                  -function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",sourceIndex:0,lastSourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var scripts=doc.getElementsByTagName("script");
                                  -var selectNode=this.selectNode=createElement("select");
                                  -for(var i=0,script;
                                  -script=scripts[i];
                                  -i++){var fileName=getFileName(script.src)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:i});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -}this.toolButtonsNode.appendChild(selectNode)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.selectNode,"change",this.onChangeSelect);
                                  -this.selectSourceCode(this.sourceIndex)
                                  -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
                                  -var oldPanel=oldChrome.getPanel("Script");
                                  -var index=oldPanel.sourceIndex;
                                  -this.selectNode.selectedIndex=index;
                                  -this.sourceIndex=index;
                                  -this.lastSourceIndex=-1
                                  -},onChangeSelect:function(event){event=event||window.event;
                                  -var target=event.srcElement||event.currentTarget;
                                  -var index=target.selectedIndex;
                                  -this.renderSourceCode(index)
                                  -},selectSourceCode:function(index){this.selectNode.selectedIndex=index;
                                  -this.renderSourceCode(index)
                                  -},renderSourceCode:function(index){if(this.lastSourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0,s=[],sl=0;
                                  -src=isIE&&!isExternal?src+"\n":"\n"+src;
                                  -var match=src.match(/\n/g);
                                  -var lines=match?match.length:0;
                                  -for(var c=1,lines;
                                  -c<=lines;
                                  -c++){s[sl++]='<div line="';
                                  -s[sl++]=c;
                                  -s[sl++]='">';
                                  -s[sl++]=c;
                                  -s[sl++]="</div>"
                                  -}html[hl++]='<div><div class="sourceBox" style="left:';
                                  -html[hl++]=35+7*(lines+"").length;
                                  -html[hl++]='px;"><pre class="sourceCode">';
                                  -html[hl++]=escapeHTML(src);
                                  -html[hl++]='</pre></div><div class="lineNo">';
                                  -html=html.concat(s);
                                  -hl=html.length;
                                  -html[hl++]="</div></div>";
                                  -updatePanel(html)
                                  -};
                                  -var updatePanel=function(html){self.contentNode.innerHTML=html.join("");
                                  -setTimeout(function(){self.synchronizeUI()
                                  -},0)
                                  -};
                                  -var onFailure=function(){renderProcess("Access to restricted URI denied")
                                  -};
                                  -var self=this;
                                  -var doc=Firebug.browser.document;
                                  -var script=doc.getElementsByTagName("script")[index];
                                  -var url=getScriptURL(script);
                                  -var isExternal=url&&url!=doc.location.href;
                                  -try{if(isExternal){Ajax.request({url:url,onSuccess:renderProcess,onFailure:onFailure})
                                  -}else{var src=script.innerHTML;
                                  -renderProcess(src)
                                  -}}catch(e){renderProcess("Access to restricted URI denied")
                                  -}this.sourceIndex=index;
                                  -this.lastSourceIndex=index
                                  -}}});
                                  -Firebug.registerPanel(ScriptPanel);
                                  -var getScriptURL=function getScriptURL(script){var reFile=/([^\/\?#]+)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=Firebug.browser.document;
                                  -var file=reFile.exec(script.src);
                                  -if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(doc.location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){return path+fileName
                                  -}};
                                  -var getFileName=function getFileName(path){if(!path){return""
                                  -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -return match&&match[0]||path
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var insertSliceSize=18;
                                  -var insertInterval=40;
                                  -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1};
                                  -if(Firebug.ignoreFirebugElements){ignoreVars[cacheID]=1
                                  -}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"};
                                  -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"})));
                                  -var oSTR={NoMembersWarning:"There are no properties to show for this object."};
                                  -FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:""
                                  -};
                                  -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch"))));
                                  -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"}));
                                  -var domTableClass=isIElt8?"domTable domTableIE":"domTable";
                                  -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level)
                                  -},onClick:function(event){if(!isLeftClick(event)){return
                                  -}var target=event.target||event.srcElement;
                                  -var row=getAncestorByClass(target,"memberRow");
                                  -var label=getAncestorByClass(target,"memberLabel");
                                  -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode;
                                  -this.toggleRow(row)
                                  -}else{var object=Firebug.getRepObject(target);
                                  -if(typeof(object)=="function"){Firebug.chrome.select(object,"script");
                                  -cancelEvent(event)
                                  -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel;
                                  -if(panel){var rowValue=panel.getRowPropertyValue(row);
                                  -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue)
                                  -}else{panel.editProperty(row)
                                  -}cancelEvent(event)
                                  -}}}}return false
                                  -},toggleRow:function(row){var level=parseInt(row.getAttribute("level"));
                                  -var toggles=row.parentNode.parentNode.toggles;
                                  -if(hasClass(row,"opened")){removeClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){if(i==path.length-1){delete toggles[path[i]]
                                  -}else{toggles=toggles[path[i]]
                                  -}}}var rowTag=this.rowTag;
                                  -var tbody=row.parentNode;
                                  -setTimeout(function(){for(var firstRow=row.nextSibling;
                                  -firstRow;
                                  -firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break
                                  -}tbody.removeChild(firstRow)
                                  -}},row.insertTimeout?row.insertTimeout:0)
                                  -}else{setClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){var name=path[i];
                                  -if(toggles.hasOwnProperty(name)){toggles=toggles[name]
                                  -}else{toggles=toggles[name]={}
                                  -}}}var value=row.lastChild.firstChild.repObject;
                                  -var members=getMembers(value,level+1);
                                  -var rowTag=this.rowTag;
                                  -var lastRow=row;
                                  -var delay=0;
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow);
                                  -lastRow=result[1]
                                  -}if(isLast){row.removeAttribute("insertTimeout")
                                  -}},delay)
                                  -}delay+=insertInterval
                                  -}row.insertTimeout=delay
                                  -}}});
                                  -Firebug.DOMBasePanel=function(){};
                                  -Firebug.DOMBasePanel.prototype=extend(Firebug.Panel,{tag:DirTablePlate.tableTag,getRealObject:function(object){if(!object){return object
                                  -}if(object.wrappedJSObject){return object.wrappedJSObject
                                  -}return object
                                  -},rebuild:function(update,scrollTop){var members=getMembers(this.selection);
                                  -expandMembers(members,this.toggles,0,0);
                                  -this.showMembers(members,update,scrollTop);
                                  -if(!this.parentPanel){updateStatusBar(this)
                                  -}},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0;
                                  -i<this.timeouts.length;
                                  -++i){this.context.clearTimeout(this.timeouts[i])
                                  -}delete this.timeouts
                                  -}if(!members.length){return this.showEmptyMembers()
                                  -}var panelNode=this.panelNode;
                                  -var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop;
                                  -var offscreen=update&&panelNode.firstChild;
                                  -var dest=offscreen?panelNode.ownerDocument:panelNode;
                                  -var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest);
                                  -var tbody=table.lastChild;
                                  -var rowTag=DirTablePlate.rowTag;
                                  -var panel=this;
                                  -var result;
                                  -var timeouts=[];
                                  -var delay=0;
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){timeouts.push(this.context.setTimeout(function(){if(!tbody.lastChild){return
                                  -}result=rowTag.insertRows({members:slice},tbody.lastChild);
                                  -if((panelNode.scrollHeight+panelNode.offsetHeight)>=priorScrollTop){panelNode.scrollTop=priorScrollTop
                                  -}},delay));
                                  -delay+=insertInterval
                                  -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild)
                                  -}else{panelNode.appendChild(table)
                                  -}panelNode.scrollTop=priorScrollTop
                                  -},delay))
                                  -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop
                                  -},delay))
                                  -}this.timeouts=timeouts
                                  -},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode)
                                  -},findPathObject:function(object){var pathIndex=-1;
                                  -for(var i=0;
                                  -i<this.objectPath.length;
                                  -++i){if(this.getPathObject(i)===object){return i
                                  -}}return -1
                                  -},getPathObject:function(index){var object=this.objectPath[index];
                                  -if(object instanceof Property){return object.getObject()
                                  -}else{return object
                                  -}},getRowObject:function(row){var object=getRowOwnerObject(row);
                                  -return object?object:this.selection
                                  -},getRowPropertyValue:function(row){var object=this.getRowObject(row);
                                  -object=this.getRealObject(object);
                                  -if(object){var propName=getRowName(row);
                                  -if(object instanceof jsdIStackFrame){return Firebug.Debugger.evaluate(propName,this.context)
                                  -}else{return object[propName]
                                  -}}},onMouseMove:function(event){var target=event.srcElement||event.target;
                                  -var object=getAncestorByClass(target,"objectLink-element");
                                  -object=object?object.repObject:null;
                                  -if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
                                  -object=lastHighlightedObject
                                  -}}else{Firebug.Inspector.hideBoxModel()
                                  -}},create:function(){this.context=Firebug.browser.window;
                                  -this.objectPath=[];
                                  -this.propertyPath=[];
                                  -this.viewPath=[];
                                  -this.pathIndex=-1;
                                  -this.toggles={};
                                  -Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"mousemove",this.onMouseMove)
                                  -},shutdown:function(){removeEvent(this.panelNode,"mousemove",this.onMouseMove);
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},ishow:function(state){if(this.context.loaded&&!this.selection){if(!state){this.select(null);
                                  -return
                                  -}if(state.viewPath){this.viewPath=state.viewPath
                                  -}if(state.propertyPath){this.propertyPath=state.propertyPath
                                  -}var selectObject=defaultObject=this.getDefaultSelection(this.context);
                                  -if(state.firstSelection){var restored=state.firstSelection(this.context);
                                  -if(restored){selectObject=restored;
                                  -this.objectPath=[defaultObject,restored]
                                  -}else{this.objectPath=[defaultObject]
                                  -}}else{this.objectPath=[defaultObject]
                                  -}if(this.propertyPath.length>1){for(var i=1;
                                  -i<this.propertyPath.length;
                                  -++i){var name=this.propertyPath[i];
                                  -if(!name){continue
                                  -}var object=selectObject;
                                  -try{selectObject=object[name]
                                  -}catch(exc){selectObject=null
                                  -}if(selectObject){this.objectPath.push(new Property(object,name))
                                  -}else{this.viewPath.splice(i);
                                  -this.propertyPath.splice(i);
                                  -this.objectPath.splice(i);
                                  -selectObject=this.getPathObject(this.objectPath.length-1);
                                  -break
                                  -}}}var selection=state.pathIndex<=this.objectPath.length-1?this.getPathObject(state.pathIndex):this.getPathObject(this.objectPath.length-1);
                                  -this.select(selection)
                                  -}},supportsObject:function(object){if(object==null){return 1000
                                  -}if(typeof(object)=="undefined"){return 1000
                                  -}else{if(object instanceof SourceLink){return 0
                                  -}else{return 1
                                  -}}},refresh:function(){this.rebuild(true)
                                  -},updateSelection:function(object){var previousIndex=this.pathIndex;
                                  -var previousView=previousIndex==-1?null:this.viewPath[previousIndex];
                                  -var newPath=this.pathToAppend;
                                  -delete this.pathToAppend;
                                  -var pathIndex=this.findPathObject(object);
                                  -if(newPath||pathIndex==-1){this.toggles={};
                                  -if(newPath){if(previousView){if(this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}var start=previousIndex+1,length=this.objectPath.length-start;
                                  -this.objectPath.splice(start,length);
                                  -this.propertyPath.splice(start,length);
                                  -this.viewPath.splice(start,length)
                                  -}var value=this.getPathObject(previousIndex);
                                  -if(!value){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n")
                                  -}return
                                  -}for(var i=0,length=newPath.length;
                                  -i<length;
                                  -++i){var name=newPath[i];
                                  -var object=value;
                                  -try{value=value[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n")
                                  -}return
                                  -}++this.pathIndex;
                                  -this.objectPath.push(new Property(object,name));
                                  -this.propertyPath.push(name);
                                  -this.viewPath.push({toggles:this.toggles,scrollTop:0})
                                  -}}else{this.toggles={};
                                  -var win=Firebug.browser.window;
                                  -if(object===win){this.pathIndex=0;
                                  -this.objectPath=[win];
                                  -this.propertyPath=[null];
                                  -this.viewPath=[{toggles:this.toggles,scrollTop:0}]
                                  -}else{this.pathIndex=1;
                                  -this.objectPath=[win,object];
                                  -this.propertyPath=[null,null];
                                  -this.viewPath=[{toggles:{},scrollTop:0},{toggles:this.toggles,scrollTop:0}]
                                  -}}this.panelNode.scrollTop=0;
                                  -this.rebuild()
                                  -}else{this.pathIndex=pathIndex;
                                  -var view=this.viewPath[pathIndex];
                                  -this.toggles=view.toggles;
                                  -if(previousView&&this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}this.rebuild(false,view.scrollTop)
                                  -}},getObjectPath:function(object){return this.objectPath
                                  -},getDefaultSelection:function(){return Firebug.browser.window
                                  -}});
                                  -var updateStatusBar=function(panel){var path=panel.propertyPath;
                                  -var index=panel.pathIndex;
                                  -var r=[];
                                  -for(var i=0,l=path.length;
                                  -i<l;
                                  -i++){r.push(i==index?'<a class="fbHover fbButton fbBtnSelected" ':'<a class="fbHover fbButton" ');
                                  -r.push("pathIndex=");
                                  -r.push(i);
                                  -if(isIE6){r.push(' href="javascript:void(0)"')
                                  -}r.push(">");
                                  -r.push(i==0?"window":path[i]||"Object");
                                  -r.push("</a>");
                                  -if(i<l-1){r.push('<span class="fbStatusSeparator">&gt;</span>')
                                  -}}panel.statusBarNode.innerHTML=r.join("")
                                  -};
                                  -var DOMMainPanel=Firebug.DOMPanel=function(){};
                                  -Firebug.DOMPanel.DirTable=DirTablePlate;
                                  -DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target;
                                  -var element=getAncestorByClass(target,"fbHover");
                                  -if(element){var pathIndex=element.getAttribute("pathIndex");
                                  -if(pathIndex){this.select(this.getPathObject(pathIndex))
                                  -}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}this.select(target.repObject,true)
                                  -},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this);
                                  -this.onClickStatusBar=bind(this.onClickStatusBar,this);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick);
                                  -this.context.loaded=true;
                                  -this.ishow();
                                  -addEvent(this.statusBarNode,"click",this.onClickStatusBar)
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -var getMembers=function getMembers(object,level){if(!level){level=0
                                  -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[];
                                  -try{var domMembers=getDOMMembers(object);
                                  -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject
                                  -}else{var insecureObject=object
                                  -}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level)
                                  -}for(var name in insecureObject){if(ignoreVars[name]==1){continue
                                  -}var val;
                                  -try{val=insecureObject[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc)
                                  -}}var ordinal=parseInt(name);
                                  -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level)
                                  -}else{if(isFunction(val)){if(isClassFunction(val)){addMember("userClass",userClasses,name,val,level)
                                  -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name])
                                  -}else{addMember("userFunction",userFuncs,name,val,level)
                                  -}}}else{var prefix="";
                                  -if(name in domMembers){addMember("dom",domProps,(prefix+name),val,level,domMembers[name])
                                  -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level)
                                  -}else{addMember("user",userProps,(prefix+name),val,level)
                                  -}}}}}}catch(exc){throw exc;
                                  -if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc)
                                  -}}function sortName(a,b){return a.name>b.name?1:-1
                                  -}function sortOrder(a,b){return a.order>b.order?1:-1
                                  -}var members=[];
                                  -members.push.apply(members,ordinals);
                                  -Firebug.showUserProps=true;
                                  -Firebug.showUserFuncs=true;
                                  -Firebug.showDOMProps=true;
                                  -Firebug.showDOMFuncs=true;
                                  -Firebug.showDOMConstants=true;
                                  -if(Firebug.showUserProps){userProps.sort(sortName);
                                  -members.push.apply(members,userProps)
                                  -}if(Firebug.showUserFuncs){userClasses.sort(sortName);
                                  -members.push.apply(members,userClasses);
                                  -userFuncs.sort(sortName);
                                  -members.push.apply(members,userFuncs)
                                  -}if(Firebug.showDOMProps){domProps.sort(sortName);
                                  -members.push.apply(members,domProps)
                                  -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName);
                                  -members.push.apply(members,domFuncs)
                                  -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants)
                                  -}return members
                                  -};
                                  -function expandMembers(members,toggles,offset,level){var expanded=0;
                                  -for(var i=offset;
                                  -i<members.length;
                                  -++i){var member=members[i];
                                  -if(member.level>level){break
                                  -}if(toggles.hasOwnProperty(member.name)){member.open="opened";
                                  -var newMembers=getMembers(member.value,level+1);
                                  -var args=[i+1,0];
                                  -args.push.apply(args,newMembers);
                                  -members.splice.apply(members,args);
                                  -expanded+=newMembers.length;
                                  -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1)
                                  -}}return expanded
                                  -}function isClassFunction(fn){try{for(var name in fn.prototype){return true
                                  -}}catch(exc){}return false
                                  -}var hasProperties=function hasProperties(ob){try{for(var name in ob){return true
                                  -}}catch(exc){}if(isFunction(ob)){return true
                                  -}return false
                                  -};
                                  -FBL.ErrorCopy=function(message){this.message=message
                                  -};
                                  -var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var ErrorCopy=function(){};
                                  -var valueType=typeof(value);
                                  -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength));
                                  -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag})
                                  -};
                                  -var getWatchRowIndex=function getWatchRowIndex(row){var index=-1;
                                  -for(;
                                  -row&&hasClass(row,"watchRow");
                                  -row=row.previousSibling){++index
                                  -}return index
                                  -};
                                  -var getRowName=function getRowName(row){var node=row.firstChild;
                                  -return node.textContent?node.textContent:node.innerText
                                  -};
                                  -var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject
                                  -};
                                  -var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row);
                                  -if(parentRow){return getRowValue(parentRow)
                                  -}};
                                  -var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row
                                  -}}};
                                  -var getPath=function getPath(row){var name=getRowName(row);
                                  -var path=[name];
                                  -var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row);
                                  -path.splice(0,0,name);
                                  ---level
                                  -}}return path
                                  -};
                                  -Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null
                                  -}});
                                  -Firebug.registerModule(Firebug.DOM);
                                  -var lastHighlightedObject;
                                  -function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}var object=target.repObject;
                                  -if(instanceOf(object,"Element")&&object[cacheID]){Firebug.HTML.selectTreeNode(object[cacheID])
                                  -}else{Firebug.chrome.selectPanel("DOM");
                                  -Firebug.chrome.getPanel("DOM").select(object,true)
                                  -}},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this)
                                  -},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick)
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles
                                  -}});
                                  -Firebug.registerPanel(DOMSidePanel)
                                  -}});
                                  -FBL.FBTrace={};
                                  -(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1};
                                  -this.module=null;
                                  -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[]
                                  -}for(var name in traceOptions){this[name]=traceOptions[name]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(module){this.module=module;
                                  -var queue=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(objects,className){var html=this.DBG_TIMESTAMP?[getTimestamp()," | "]:[];
                                  -var length=objects.length;
                                  -for(var i=0;
                                  -i<length;
                                  -++i){appendText(" ",html);
                                  -var object=objects[i];
                                  -if(i==0){html.push("<b>");
                                  -appendText(object,html);
                                  -html.push("</b>")
                                  -}else{appendText(object,html)
                                  -}}return this.logRow(html,className)
                                  -};
                                  -this.logRow=function(message,className){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className)
                                  -}else{this.messageQueue.push([message,className])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(message,className){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -this.writeRow.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}};
                                  -this.appendRow=function(row){var container=this.getPanel().contentNode;
                                  -container.appendChild(row)
                                  -};
                                  -this.writeRow=function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -};
                                  -function appendText(object,html){html.push(escapeHTML(objectToString(object)))
                                  -}function getTimestamp(){var now=new Date();
                                  -var ms=""+(now.getMilliseconds()/1000).toFixed(3);
                                  -ms=ms.substr(2);
                                  -return now.toLocaleTimeString()+"."+ms
                                  -}var HTMLtoEntity={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function replaceChars(ch){return HTMLtoEntity[ch]
                                  -}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars)
                                  -}function objectToString(object){try{return object+""
                                  -}catch(exc){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().contentNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.injected={CSS:'.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSText{padding-left:20px;}.CSSProperty{color:#005500; margin-top:10px;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:fixed;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;z-index:999;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#ECEBE3;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'}
                                  -}});
                                  -FBL.initialize()
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/build/firebug.uncompressed.js b/tags/firebug1.3a4/build/firebug.uncompressed.js
                                  deleted file mode 100644
                                  index 613b5a59..00000000
                                  --- a/tags/firebug1.3a4/build/firebug.uncompressed.js
                                  +++ /dev/null
                                  @@ -1,16840 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyApplication;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")");
                                  -        if (prefs)
                                  -        {
                                  -            FBL.Env.Options.startOpened = prefs.startOpened;
                                  -            FBL.Env.Options.enableTrace = prefs.enableTrace;
                                  -            FBL.Env.Options.enablePersistent = prefs.enablePersistent;
                                  -        }
                                  -        
                                  -        if (FBL.isFirefox && typeof console == "object" && console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -            return;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -
                                  -    FBL.Firebug.loadPrefs(prefs);
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // wait document load
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: false,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.useLocalSkin = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Env.Options.startOpened = true;
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if (innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -            
                                  -            for (var name in innerOptionsObject)
                                  -            {
                                  -                var value = innerOptionsObject[name];
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf("http://getfirebug.com/releases/lite/") != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -}
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -        return ob + "";
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    return elt.offsetWidth > 0 || elt.offsetHeight > 0 || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML";
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        var style = view.getComputedStyle(elt, "");
                                  -
                                  -        if (elt.offsetLeft)
                                  -            coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -        if (elt.offsetTop)
                                  -            coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else if (elt.ownerDocument.defaultView.frameElement)
                                  -            addOffset(elt.ownerDocument.defaultView.frameElement, coords, elt.ownerDocument.defaultView);
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return event.button == 1 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return event.button == 2 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, false);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, false);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.dumpProperties(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;"
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is acessible in the window, uses the native instanceof operator
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onFailure     Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -this.Ajax.initialize();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days)
                                  -    {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else 
                                  -        var expires = "";
                                  -    
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    
                                  -    for(var i=0; i < ca.length; i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "firebug" + new Date().getTime();
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -window.Firebug = FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.3.0a4",
                                  -    revision: "$Revision: 5496 $",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        if (chromeMap.popup)
                                  -            chromeMap.popup.destroy();
                                  -        
                                  -        chromeMap.frame.destroy();
                                  -        
                                  -        for(var name in documentCache)
                                  -        {
                                  -            documentCache[name].removeAttribute(cacheID);
                                  -            documentCache[name] = null;
                                  -            delete documentCache[name];
                                  -        }
                                  -        
                                  -        documentCache = null;
                                  -        delete FBL.documentCache;
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -        
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -                
                                  -                json[++jl] = '"'; 
                                  -                json[++jl] = name;
                                  -                
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -        
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -if (!Env.Options.enablePersistent || 
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDevelopmentMode )
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasSidePanel: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelBar: null,
                                  -    
                                  -    commandLine: null,
                                  -    
                                  -    toolButtons: null,
                                  -    statusBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(true);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -            
                                  -            if (options.hasSidePanel)
                                  -            {
                                  -                //this.sidePanelNode = $(panelId + "StatusBar");
                                  -            }        
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            $("fbPanelBar" + containerSufix).appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.contentNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // store persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function(context)
                                  -    {
                                  -        return null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    isSidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(isSidePanelBar)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.isSidePanelBar = isSidePanelBar;
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if (isSidePanelBar && p.prototype.parentPanel || 
                                  -                !isSidePanelBar && !p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - *
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            title: this.title,
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: "title",
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype, 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                Firebug.chrome.document.body, 
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked)
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var cmd = target.getAttribute("command");
                                  -            var handler = this[cmd];
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.register = function(object)
                                  -{
                                  -    menuMap[object.id] = object;
                                  -};
                                  -
                                  -Menu.check = function(element)
                                  -{
                                  -    setClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "true");
                                  -};
                                  -
                                  -Menu.uncheck = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "");
                                  -};
                                  -
                                  -Menu.disable = function(element)
                                  -{
                                  -    setClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -Menu.enable = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -/*
                                  -
                                  -SAMPLE
                                  -
                                  -    getContextMenuItems: function(fn, target)
                                  -    {
                                  -        if (getAncestorByClass(target, "sourceLine"))
                                  -            return;
                                  -
                                  -        var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -        if (!sourceRow)
                                  -            return;
                                  -
                                  -        var sourceLine = getChildByClass(sourceRow, "sourceLine");
                                  -        var lineNo = parseInt(sourceLine.textContent);
                                  -
                                  -        var items = [];
                                  -
                                  -        var selection = this.document.defaultView.getSelection();
                                  -        if (selection.toString())
                                  -        {
                                  -            items.push(
                                  -                {label: "CopySourceCode", command: bind(this.copySource, this) },
                                  -                "-",
                                  -                {label: "AddWatch", command: bind(this.addSelectionWatch, this) }
                                  -            );
                                  -        }
                                  -
                                  -        var hasBreakpoint = sourceRow.getAttribute("breakpoint") == "true";
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "SetBreakpoint", type: "checkbox", checked: hasBreakpoint,
                                  -                command: bindFixed(this.toggleBreakpoint, this, lineNo) }
                                  -        );
                                  -        if (hasBreakpoint)
                                  -        {
                                  -            var isDisabled = fbs.isBreakpointDisabled(this.location.href, lineNo);
                                  -            items.push(
                                  -                {label: "DisableBreakpoint", type: "checkbox", checked: isDisabled,
                                  -                    command: bindFixed(this.toggleDisableBreakpoint, this, lineNo) }
                                  -            );
                                  -        }
                                  -        items.push(
                                  -            {label: "EditBreakpointCondition",
                                  -                command: bindFixed(this.editBreakpointCondition, this, lineNo) }
                                  -        );
                                  -
                                  -        if (this.context.stopped)
                                  -        {
                                  -            var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -            if (sourceRow)
                                  -            {
                                  -                var sourceFile = getAncestorByClass(sourceRow, "sourceBox").repObject;
                                  -                var lineNo = parseInt(sourceRow.firstChild.textContent);
                                  -
                                  -                var debuggr = Firebug.Debugger;
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "Continue",
                                  -                        command: bindFixed(debuggr.resume, debuggr, this.context) },
                                  -                    {label: "StepOver",
                                  -                        command: bindFixed(debuggr.stepOver, debuggr, this.context) },
                                  -                    {label: "StepInto",
                                  -                        command: bindFixed(debuggr.stepInto, debuggr, this.context) },
                                  -                    {label: "StepOut",
                                  -                        command: bindFixed(debuggr.stepOut, debuggr, this.context) },
                                  -                    {label: "RunUntil",
                                  -                        command: bindFixed(debuggr.runUntil, debuggr, this.context,
                                  -                        sourceFile, lineNo) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -
                                  -
                                  - */
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win){
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        context = context || "window";
                                  -
                                  -        var cmd = api ?
                                  -            "(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)" :
                                  -            "(function(arguments){ return "+expr+" }).call("+context+",undefined)" ;
                                  -        
                                  -        var r = this.eval(cmd);
                                  -        if (r && r[evalError])
                                  -        {
                                  -            cmd = api ?
                                  -                "(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)" :
                                  -                "(function(arguments){ "+expr+" }).call("+context+",undefined)" ;
                                  -                
                                  -            r = this.eval(cmd);
                                  -            if (r && r[evalError])
                                  -            {
                                  -                if (errorHandler)
                                  -                    r = errorHandler(r.message || r)
                                  -                else
                                  -                    r = r.message || r;
                                  -            }
                                  -        }
                                  -        
                                  -        return r;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (isOpera || isSafari)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    chromeMap: {},
                                  -    
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    consoleMessageQueue: [],
                                  -    
                                  -    height: 250,
                                  -    
                                  -    isOpen: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame")
                                  -            ChromeMini.create(Env.chrome);
                                  -            
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Options
                                  -
                                  -var ChromeDefaultOptions = 
                                  -{
                                  -    type: "frame",
                                  -    id: "FirebugUI",
                                  -    height: 250
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = options || {};
                                  -    options = extend(ChromeDefaultOptions, options);
                                  -    
                                  -    var context = options.context || Env.browser;
                                  -    
                                  -    var chrome = {};
                                  -    
                                  -    chrome.type = Env.Options.enablePersistent ? "popup" : options.type;
                                  -    
                                  -    var isChromeFrame = chrome.type == "frame";
                                  -    var useLocalSkin = Env.useLocalSkin;
                                  -    var url = useLocalSkin ? Env.Location.skin : "about:blank";
                                  -    
                                  -    if (isChromeFrame)
                                  -    {
                                  -        // Create the Chrome Frame
                                  -        var node = chrome.node = createGlobalElement("iframe");
                                  -        
                                  -        node.setAttribute("id", options.id);
                                  -        node.setAttribute("frameBorder", "0");
                                  -        node.firebugIgnore = true;
                                  -        node.style.border = "0";
                                  -        node.style.visibility = "hidden";
                                  -        node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -        node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -        node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -        node.style.left = "0";
                                  -        node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -        node.style.height = options.height + "px";
                                  -        
                                  -        // avoid flickering during chrome rendering
                                  -        if (isFirefox)
                                  -            node.style.display = "none";
                                  -        
                                  -        if (useLocalSkin)
                                  -            node.setAttribute("src", Env.Location.skin);
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        context.document.getElementsByTagName("body")[0].appendChild(node);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Create the Chrome Popup
                                  -        var height = FirebugChrome.height || options.height;
                                  -        var options = [
                                  -                "true,top=",
                                  -                Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                ",left=0,height=",
                                  -                height,
                                  -                ",width=",
                                  -                screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                ",resizable"          
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = context.window.open(
                                  -            url, 
                                  -            "popup", 
                                  -            options
                                  -          );
                                  -        
                                  -        if (node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug popup was blocked.");
                                  -            return;
                                  -        }
                                  -    }
                                  -    
                                  -    if (!useLocalSkin)
                                  -    {
                                  -        var tpl = getChromeTemplate(!isChromeFrame);
                                  -        var doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -        doc.write(tpl);
                                  -        doc.close();
                                  -    }
                                  -    
                                  -    var win;
                                  -    var waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100;
                                  -    var waitForChrome = function()
                                  -    {
                                  -        if ( // Frame loaded... OR
                                  -             isChromeFrame && (win=node.contentWindow) &&
                                  -             node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -             
                                  -             // Popup loaded
                                  -             !isChromeFrame && (win=node.window) && node.document &&
                                  -             node.document.getElementById("fbCommandLine") )
                                  -        {
                                  -            chrome.window = win.window;
                                  -            chrome.document = win.document;
                                  -            
                                  -            // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -            setTimeout(function(){
                                  -                onChromeLoad(chrome);
                                  -            },0);
                                  -        }
                                  -        else
                                  -            setTimeout(waitForChrome, waitDelay);
                                  -    }
                                  -    
                                  -    waitForChrome();
                                  -};
                                  -
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            if (oldChrome)
                                  -                oldChrome.close();
                                  -            
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class=' + (isPopup ? '"FirebugPopup"' : '') + '>';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = extend(Controller, PanelBar);
                                  -
                                  -append(ChromeBase, Context.prototype);
                                  -
                                  -append(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu2",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Save Options in Cookies",
                                  -                        type: "checkbox",
                                  -                        value: "saveCookies",
                                  -                        checked: Firebug.saveCookies,
                                  -                        command: "saveOptions"
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Restore Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            saveOptions: function(target)
                                  -            {
                                  -                var saveEnabled = target.getAttribute("checked");
                                  -                
                                  -                if (!saveEnabled) this.restorePrefs();
                                  -                
                                  -                this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.restorePrefs();
                                  -                
                                  -                if(Firebug.saveCookies)
                                  -                    Firebug.savePrefs()
                                  -                else
                                  -                    Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4;  // IE6 problem with fixed position
                                  -                var box = Firebug.chrome.getElementBox(target);
                                  -                menu.show(box.left + offsetLeft, box.top + box.height -5);
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create a new instance of the CommandLine class
                                  -        if (Firebug.CommandLine)
                                  -            commandLine = new Firebug.CommandLine(fbCommandLine);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanelName);
                                  -            
                                  -            if (FirebugChrome.selectedPanelName == "Console")
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        this.testMenu();
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // destroy the instance of the CommandLine class
                                  -        if (Firebug.CommandLine)
                                  -            commandLine.destroy();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {     
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            height = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0)+ "px",
                                  -            
                                  -            
                                  -            // Width related values
                                  -            sideWidth = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidth, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidth = Math.max(sideWidth - 6, 0) + "px";
                                  -            
                                  -            fbPanel2Style.height = height;
                                  -            fbPanel2Style.width = sideWidth;
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            fbPanelBar2BoxStyle.width = sideWidth;
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -        }
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && self.type == "frame")
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(options.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        if (panelToSelect == "Console")
                                  -            commandLine.element.focus();
                                  -        else
                                  -            fbPanel1.focus();
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -var focusCommandLineState = 0, lastFocusedPanelName; 
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbChrome_btClose"), "click", this.close],
                                  -            [$("fbChrome_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen || !this.isInitialized)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if (this.type == "frame" && (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        node.setAttribute("allowTransparency", "true");
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "transparent";
                                  -        
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        node.setAttribute("allowTransparency", "false");
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "#fff";
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeBase, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        this.document.body.className = "FirebugPopup";
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist)
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        var htmlPanel = chrome.getPanel("HTML");
                                  -                        htmlPanel.createUI();
                                  -                        
                                  -                        Firebug.Console.info("Firebug could not capture console calls during " + 
                                  -                                persistDelay + "ms");
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -//
                                  -var commandLine = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -var fbTop = null;
                                  -var fbContent = null;
                                  -var fbContentStyle = null;
                                  -var fbBottom = null;
                                  -var fbBtnInspect = null;
                                  -
                                  -var fbToolbar = null;
                                  -
                                  -var fbPanelBox1 = null;
                                  -var fbPanelBox1Style = null;
                                  -var fbPanelBox2 = null;
                                  -var fbPanelBox2Style = null;
                                  -var fbPanelBar2Box = null;
                                  -var fbPanelBar2BoxStyle = null;
                                  -
                                  -var fbHSplitter = null;
                                  -var fbVSplitter = null;
                                  -var fbVSplitterStyle = null;
                                  -
                                  -var fbPanel1 = null;
                                  -var fbPanel1Style = null;
                                  -var fbPanel2 = null;
                                  -var fbPanel2Style = null;
                                  -
                                  -var fbConsole = null;
                                  -var fbConsoleStyle = null;
                                  -var fbHTML = null;
                                  -
                                  -var fbCommandLine = null;
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var topHeight = null;
                                  -var topPartialHeight = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastSelectedPanelName = null;
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (Firebug.chrome.commandLineVisible != last)
                                  -    {
                                  -        fbBottom.className = Firebug.chrome.commandLineVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastHSplitterMouseMove = 0;
                                  -var onHSplitterMouseMoveBuffer = null;
                                  -var onHSplitterMouseMoveTimer = null;
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastVSplitterMouseMove = 0;
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getWindowSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -    
                                  -    xxx: function(o)
                                  -    {
                                  -        var rep = Firebug.getRep(o);
                                  -        var className = "";
                                  -        
                                  -        var panel = Firebug.DOM.getPanel();
                                  -        var toggles = {};
                                  -        
                                  -        var row = Firebug.Console.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        var target = row;
                                  -        var object = o;
                                  -        
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        //row.innerHTML = message.join("");
                                  -        
                                  -        rep.tag.replace({domPanel: panel, toggles: toggles, object: object}, target);
                                  -        
                                  -        Firebug.Console.appendRow(row);
                                  -    },
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        Firebug.Console.timeMap[name] = new Date().getTime();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        var timeMap = Firebug.Console.timeMap;
                                  -        
                                  -        if (name in timeMap)
                                  -        {
                                  -            var delta = new Date().getTime() - timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete timeMap[name];
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*(\w*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -    
                                  -        var traceLabel = "Stack Trace";
                                  -        
                                  -        Firebug.Console.group(traceLabel);
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            var html = [ getFuncName(fn), "(" ];
                                  -
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                if (i)
                                  -                    html.push(", ");
                                  -                
                                  -                Firebug.Reps.appendObject(fn.arguments[i], html);
                                  -            }
                                  -
                                  -            html.push(")");
                                  -            Firebug.Console.logRow(html, "stackTrace");
                                  -        }
                                  -        
                                  -        Firebug.Console.groupEnd(traceLabel);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND; 
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return this.warn(["profileEnd() not supported."]);
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().contentNode.innerHTML = "";
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.contentNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().contentNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: 
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            addEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            removeEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -        
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }    
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    if (Env.Options.overrideConsole)
                                  -    {
                                  -        var win = Env.browser.window;
                                  -        
                                  -        if (!isFirefox || isFirefox && !("console" in win))
                                  -            win.console = ConsoleAPI;
                                  -        else
                                  -            win.firebug = ConsoleAPI;
                                  -    }
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var Console = Firebug.Console;
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = function(element)
                                  -{
                                  -    this.element = element;
                                  -    
                                  -    if (isOpera)
                                  -      fixOperaTabKey(this.element);
                                  -    
                                  -    this.clear = bind(this.clear, this);
                                  -    this.onKeyDown = bind(this.onKeyDown, this);
                                  -    this.onError = bind(this.onError, this);
                                  -    
                                  -    addEvent(this.element, "keydown", this.onKeyDown);
                                  -    
                                  -    addEvent(Firebug.browser.window, "error", this.onError);
                                  -    addEvent(Firebug.chrome.window, "error", this.onError);
                                  -};
                                  -
                                  -Firebug.CommandLine.prototype = 
                                  -{
                                  -    element: null,
                                  -  
                                  -    _buffer: [],
                                  -    _bi: -1,
                                  -    
                                  -    _completing: null,
                                  -    _completePrefix: null,
                                  -    _completeExpr: null,
                                  -    _completeBuffer: null,
                                  -    _ci: null,
                                  -    
                                  -    _completion:
                                  -    {
                                  -        window:
                                  -        [
                                  -            "console"
                                  -        ],
                                  -        
                                  -        document:
                                  -        [
                                  -            "getElementById", 
                                  -            "getElementsByTagName"
                                  -        ]
                                  -    },
                                  -  
                                  -    _stack: function(command)
                                  -    {
                                  -        this._buffer.push(command);
                                  -        this._bi = this._buffer.length;
                                  -    },
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -        
                                  -        removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        
                                  -        this.element = null
                                  -        delete this.element;
                                  -    },
                                  -
                                  -    execute: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var command = cmd.value;
                                  -        
                                  -        this._stack(command);
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        
                                  -        try
                                  -        {
                                  -            
                                  -            var result = this.evaluate(command);
                                  -            
                                  -            // avoid logging the console command twice, in case it is a console function
                                  -            // that is being executed in the command line
                                  -            if (result != Console.LOG_COMMAND)
                                  -            {
                                  -                var html = [];
                                  -                Firebug.Reps.appendObject(result, html)
                                  -                Firebug.Console.writeMessage(html, "command");
                                  -            }
                                  -                
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            Firebug.Console.writeMessage([e.message || e], "error");
                                  -        }
                                  -        
                                  -        cmd.value = "";
                                  -    },
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -            
                                  -        //Firebug.context = Firebug.chrome;
                                  -        //api = null;
                                  -
                                  -        return Firebug.context.evaluate(expr, "window", api, Console.error);
                                  -    },
                                  -    
                                  -    //eval: new Function("return window.eval.apply(window, arguments)"),
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var buffer = this._buffer;
                                  -        
                                  -        if (this._bi > 0 && buffer.length > 0)
                                  -            cmd.value = buffer[--this._bi];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var buffer = this._buffer;
                                  -        var limit = buffer.length -1;
                                  -        var i = this._bi;
                                  -        
                                  -        if (i < limit)
                                  -          cmd.value = buffer[++this._bi];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++this._bi;
                                  -            cmd.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var command = cmd.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!this._completing)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            this._completing = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                this._completePrefix = prefix;
                                  -                this._completeExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                this._ci = -1;
                                  -                
                                  -                buffer = this._completeBuffer = isIE ?
                                  -                    this._completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = this._completeBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = this._completePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=this._ci+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    this._ci = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            cmd.value = this._completeExpr + result;
                                  -    },
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -            this._completing = false;
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -            this.execute();
                                  -
                                  -        else if (code == 27 /* ESC */)
                                  -            setTimeout(this.clear, 0);
                                  -          
                                  -        else if (code == 38 /* up */)
                                  -            this.prevCommand();
                                  -          
                                  -        else if (code == 40 /* down */)
                                  -            this.nextCommand();
                                  -          
                                  -        else if (code == 9 /* tab */)
                                  -            this.autocomplete(e.shiftKey);
                                  -          
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -};
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -};
                                  -initializeCommandLineAPI();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -            {
                                  -                var target = ""+targ[cacheID];
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0)
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = node.style.visibility != "hidden" &&
                                  -                        node.style.display != "none";
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || attr.nodeName == cacheID)
                                  -                        continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;')
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(document.all){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && el[cacheID];
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(!this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("DOMSidePanel");
                                  -        }            
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID]);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = documentCache[e.id];
                                  -        var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0)
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Module
                                  -
                                  -Firebug.CSS = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("CSS") : null;
                                  -    },
                                  -    
                                  -    renderStyleSheet: function(index)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel.lastStyleSheetIndex != index)
                                  -        {
                                  -            var str = renderStyleSheet(index);
                                  -            
                                  -            panel.contentNode.innerHTML = str.join("");
                                  -            
                                  -            // IE needs this timeout, otherwise the panel won't scroll
                                  -            setTimeout(function(){
                                  -                panel.synchronizeUI();
                                  -            },0);
                                  -            
                                  -            panel.styleSheetIndex = index;
                                  -            panel.lastStyleSheetIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CSS);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSStyleSheetPanel(){};
                                  -
                                  -CSSStyleSheetPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSS",
                                  -    title: "CSS",
                                  -    
                                  -    styleSheetIndex: 0,
                                  -    lastStyleSheetIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var styleSheets = doc.styleSheets;
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, length=styleSheets.length; i<length; i++)
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -        
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectStyleSheet(this.styleSheetIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("CSS");
                                  -        var index = oldPanel.styleSheetIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.styleSheetIndex = index;
                                  -        this.lastStyleSheetIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    },
                                  -    
                                  -    selectStyleSheet: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    }    
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSElementPanel(){};
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSElementPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "CSS",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles(target);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles(node);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;        
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyleSheet = function renderStyleSheet(index)
                                  -{
                                  -    var styleSheet = Firebug.browser.document.styleSheets[index],
                                  -        str = [], 
                                  -        sl = -1;
                                  -    
                                  -    try
                                  -    {
                                  -        var rules = styleSheet[isIE ? "rules" : "cssRules"];
                                  -        
                                  -        for (var i=0, rule; rule = rules[i]; i++)
                                  -        {
                                  -            var selector = rule.selectorText;
                                  -            var cssText = isIE ? 
                                  -                    rule.style.cssText :
                                  -                    rule.cssText.match(/\{(.*)\}/)[1];
                                  -            
                                  -            str[++sl] = renderRule(selector, cssText.split(";"));
                                  -        }
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        str[++sl] = "<em>Access to restricted URI denied</em>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderRule = function renderRule(selector, styles)
                                  -{
                                  -    var str = "<div class='Selector'>"+ selector.toLowerCase()+ " {</div>";
                                  -    
                                  -    for(var i=0, len=styles.length; i<len; i++)
                                  -    {
                                  -        var rule = styles[i];
                                  -        str += rule.replace(/(.+)\:(.+)/, renderRuleReplacer);
                                  -    }
                                  -    
                                  -    str += "<div class='SelectorEnd'>}</div>";
                                  -    return str;
                                  -};
                                  -
                                  -var renderRuleReplacer = function renderRuleReplacer(m, g1, g2)
                                  -{
                                  -    return "<div class='CSSText'><span class='CSSProperty'>" +
                                  -        g1.toLowerCase() +
                                  -        ": </span><span class='CSSValue'>" +
                                  -        g2.replace(/\s*$/, "") +
                                  -        ";</span></div>"; 
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyles = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = document.defaultView ? 
                                  -            document.defaultView.getComputedStyle(node, null) :
                                  -            node.currentStyle;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = "<div class='CSSItem'><span class='CSSProperty'>"; 
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = "</span>:<span class='CSSValue'>"; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = "</span>;</div>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    sourceIndex: 0,
                                  -    lastSourceIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectSourceCode(this.sourceIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.sourceIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.sourceIndex = index;
                                  -        this.lastSourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.lastSourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0,
                                  -                    s = [],
                                  -                    sl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                var match = src.match(/\n/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the line number divs
                                  -                for(var c=1, lines; c<=lines; c++)
                                  -                {
                                  -                    s[sl++] = '<div line="';
                                  -                    s[sl++] = c;
                                  -                    s[sl++] = '">';
                                  -                    s[sl++] = c;
                                  -                    s[sl++] = '</div>';
                                  -                }
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                html = html.concat(s); // uses concat instead of string.join() to boost performance 
                                  -                hl = html.length; // adjust the size index
                                  -                html[hl++] = '</div></div>';
                                  -                /**/
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.contentNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }   
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -            this.lastSourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[cacheID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : "";
                                  -};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser.window;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        //this.select(Firebug.browser.window);
                                  -        
                                  -        this.context.loaded = true;
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -var hasProperties = function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (isFunction(ob)) return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -}
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSText{padding-left:20px;}.CSSProperty{color:#005500; margin-top:10px;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:fixed;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;z-index:999;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#ECEBE3;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}'
                                  -,    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/bookmarlet.txt b/tags/firebug1.3a4/content/bookmarlet.txt
                                  deleted file mode 100644
                                  index 37fe2102..00000000
                                  --- a/tags/firebug1.3a4/content/bookmarlet.txt
                                  +++ /dev/null
                                  @@ -1,135 +0,0 @@
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL (sequencial)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('script');
                                  -L.id='FirebugLite';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://firebug.local:8740/firebug1.3/build/firebug.full.js#remote');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBLite (parallel)
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=t+L;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=t+i;})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -F.getElementsByTagName('head')[0].appendChild(g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -
                                  -r='getElementsByTagName';
                                  -e='appendChild';
                                  -
                                  -F[r]('head')[0][e](g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -
                                  -g=F[i]('div');
                                  -g.id='FBLI';
                                  -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -g.innerHTML='Loading...';
                                  -F[r]('body')[0][e](g);
                                  -
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -//        F,B,u,g,L,i,t,e
                                  -//        F,i,r,e,b,u,g,
                                  -(function(F,B,L,i,t,e){
                                  -if(F.getElementById('FBLS'))return;
                                  -
                                  -e=F[B]('div');
                                  -e.id='FBLI';
                                  -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F[B]('script');
                                  -e.id='FBLS';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL* (sequencial with loading indicator)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('div');
                                  -L.id='FBLI';
                                  -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;';
                                  -L.innerHTML='Loading ...';
                                  -F.body.appendChild(L);
                                  -
                                  -L=F.createElement('script');
                                  -L.id='FBLS';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// experimental bookmarlet
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -
                                  -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat';
                                  -t=i?'absolute':'fixed';
                                  -
                                  -e=F.createElement('div');
                                  -e.id='FirebugLoadIndicator';
                                  -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading Firebug Lite...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F.createElement('script');
                                  -e.src=L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -        
                                  -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -//*************************************************************************************************
                                  diff --git a/tags/firebug1.3a4/content/changelog.txt b/tags/firebug1.3a4/content/changelog.txt
                                  deleted file mode 100644
                                  index ee156f1c..00000000
                                  --- a/tags/firebug1.3a4/content/changelog.txt
                                  +++ /dev/null
                                  @@ -1,294 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0a4
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug.dev.js b/tags/firebug1.3a4/content/firebug.dev.js
                                  deleted file mode 100644
                                  index cdc9714e..00000000
                                  --- a/tags/firebug1.3a4/content/firebug.dev.js
                                  +++ /dev/null
                                  @@ -1,545 +0,0 @@
                                  -(function(){
                                  -
                                  -var bookmarletMode = true;
                                  -var bookmarletURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/";
                                  -var bookmarletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/";
                                  -
                                  -window.FBL = {}; // force exposure in IE global namespace
                                  -window.FBDev =
                                  -{
                                  -    modules:
                                  -    [ 
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Core
                                  -        "firebug/lib.js",
                                  -        "firebug/firebug.js",
                                  -        "firebug/gui.js",
                                  -        
                                  -        "firebug/context.js",
                                  -        "firebug/chrome.js",
                                  -        "firebug/chrome.injected2.js",
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Console core
                                  -        "firebug/reps.js",
                                  -        "firebug/console.js",
                                  -        "firebug/commandLine.js",
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Experimental
                                  -        "firebug/domplate.js", // not used yet
                                  -        "firebug/reps2.js",  // experimental
                                  -        //"firebug/console2.js",
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Classes
                                  -        "firebug/selector.js",
                                  -        
                                  -        "firebug/inspector.js",
                                  -        //"firebug/inspectorX.js",
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Application Panels
                                  -        "firebug/html.js",
                                  -        
                                  -        //"firebug/insideOutBox.js", // too experimental
                                  -        //"firebug/html2.js", // too experimental
                                  -        
                                  -        "firebug/css.js",
                                  -        "firebug/script.js",
                                  -        "firebug/dom.js", // experimental
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Trace Module and Panel
                                  -        "firebug/trace.js",
                                  -        "firebug/tracePanel.js",
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Bootstrap
                                  -        "firebug/boot.js"
                                  -        /**/
                                  -    ],
                                  -    
                                  -    loadChromeApplication: function(chrome)
                                  -    {
                                  -        FBDev.buildSource(function(source){
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -            script.text = source;
                                  -        });
                                  -    },
                                  -
                                  -    panelBuild: function() {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildFullSource(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    panelBuildSkin: function()
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildSkin(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    build: function() {
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBDev.buildFullSource(function(source){
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -            out.appendChild(document.createTextNode(source));
                                  -            document.body.appendChild(out);
                                  -        });
                                  -    },
                                  -    
                                  -    buildFullSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        var modules = FBDev.modules.slice(0,FBDev.modules.length-1);
                                  -        var last = modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -        
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "\n\nFBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.injected = \n" +
                                  -                    "{\n" +
                                  -                    "    CSS: '" + css + "'\n," +
                                  -                    "    HTML: '" + html + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "FBL.initialize();\n" +
                                  -                    "// ************************************************************************************************\n";
                                  -            }
                                  -        });
                                  -        
                                  -        for (var i=0, module; module=modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            if (module.indexOf("chrome.injected") != -1) continue;
                                  -            
                                  -            FBL.Ajax.request({
                                  -                url: moduleURL, 
                                  -                i: i, 
                                  -                onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        //alert("ok")
                                  -                        source.push(injected);
                                  -                        
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }
                                  -    },
                                  -    
                                  -    buildSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        var last = FBDev.modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -    
                                  -        for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }        
                                  -    },
                                  -    
                                  -    buildSkin: function(callback)
                                  -    {
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "FBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.injected = \n" +
                                  -                    "{\n" +
                                  -                    "    HTML: '" + html + "',\n" +
                                  -                    "    CSS: '" + css + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});";
                                  -                
                                  -                callback(injected);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinHTML: function()
                                  -    {
                                  -        var url = skinURL + "firebug.html";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressHTML(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinCSS: function()
                                  -    {
                                  -        var url = skinURL + "firebug.css";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressCSS(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -        
                                  -    },
                                  -    
                                  -    compressHTML: function(html)
                                  -    {
                                  -        var reHTMLComment = /(<!--([^-]|-(?!->))*-->)/g;
                                  -        
                                  -        return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, "").
                                  -            replace(reHTMLComment, "").
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+</gm, "<").
                                  -            replace(/<\s+/gm, "<").
                                  -            replace(/\s+>/gm, ">").
                                  -            replace(/>\s+/gm, ">").
                                  -            replace(/\s+\/>/gm, "/>");
                                  -    },
                                  -
                                  -    compressCSS: function(css)
                                  -    {
                                  -        var reComment = /(\/\/.*)\n/g;
                                  -        var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -
                                  -        return css.replace(reComment, "").
                                  -            replace(reMultiComment, "").
                                  -            replace(/url\(/gi, "url("+publishedURL).
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+\{/gm, "{").
                                  -            replace(/\{\s+/gm, "{").
                                  -            replace(/\s+\}/gm, "}").
                                  -            replace(/\}\s+/gm, "}").
                                  -            replace(/\s+\:/gm, ":").            
                                  -            replace(/\:\s+/gm, ":").            
                                  -            replace(/,\s+/gm, ",");            
                                  -    },
                                  -    
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome.getPanel("Dev");
                                  -    }
                                  -}
                                  -
                                  -function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    
                                  -    var head = document.getElementsByTagName("head")[0];
                                  -    
                                  -    var path = null;
                                  -    
                                  -    for(var i=0, c=head.childNodes, ci; ci=c[i]; i++)
                                  -    {
                                  -        var file = null;
                                  -        if ( ci.nodeName.toLowerCase() == "script" && 
                                  -             (file = reFirebugFile.exec(ci.src)) )
                                  -        {
                                  -            
                                  -            var fileName = file[1];
                                  -            var fileOptions = file[2];
                                  -            
                                  -            if (reProtocol.test(ci.src)) {
                                  -                // absolute path
                                  -                path = rePath.exec(ci.src)[1];
                                  -              
                                  -            }
                                  -            else
                                  -            {
                                  -                // relative path
                                  -                var r = rePath.exec(ci.src);
                                  -                var src = r ? r[1] : ci.src;
                                  -                var rel = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -                path = rePath.exec(location.href)[1];
                                  -                
                                  -                if (rel)
                                  -                {
                                  -                    var lastFolder = /^(.*\/)[^\/]+\/$/;
                                  -                    
                                  -                    var j = rel[1].length/3;
                                  -                    var p;
                                  -                    while (j-- > 0)
                                  -                        path = lastFolder.exec(path)[1];
                                  -
                                  -                    path += rel[2];
                                  -                }
                                  -                
                                  -                if(src.indexOf("/") != -1)
                                  -                {
                                  -                    // "./some/path"
                                  -                    if(/^\.\/./.test(src))
                                  -                    {
                                  -                        path += src.substring(2);
                                  -                    }
                                  -                    // "/some/path"
                                  -                    else if(/^\/./.test(src))
                                  -                    {
                                  -                        var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                        path = domain[1] + src;
                                  -                    }
                                  -                    // "some/path"
                                  -                    else
                                  -                    {
                                  -                        path += src;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            break;
                                  -        }
                                  -    }
                                  -                    
                                  -    var m = path.match(/([^\/]+)\/$/);
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        sourceURL = path;
                                  -        baseURL = path.substr(0, path.length - m[1].length - 1);
                                  -        skinURL = baseURL + "skin/xp/";
                                  -        fullURL = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw "Firebug error: Library path not found";
                                  -    }
                                  -};
                                  -
                                  -function loadModules() {
                                  -    
                                  -    findLocation();
                                  -    
                                  -    publishedURL = bookmarletMode ? bookmarletSkinURL : skinURL;
                                  -    
                                  -    var sufix = isApplicationContext ? "#app" : "";
                                  -    
                                  -    var useDocWrite = isIE || isSafari;
                                  -    //var useDocWrite = isIE;
                                  -    
                                  -    var moduleURL, script;
                                  -    var scriptTags = [];
                                  -    
                                  -    for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -    {
                                  -        var moduleURL = sourceURL + module + sufix;
                                  -        
                                  -        if(useDocWrite)
                                  -        {
                                  -            scriptTags.push("<script src='", moduleURL, "'><\/script>");
                                  -        }
                                  -        else
                                  -        {
                                  -            script = document.createElement("script");
                                  -            script.src = moduleURL;
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(script);
                                  -            //document.getElementsByTagName("body")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    
                                  -    if(useDocWrite)
                                  -    {
                                  -        document.write(scriptTags.join(""));
                                  -    }
                                  -    
                                  -    waitFirebugLoad();
                                  -};
                                  -
                                  -var waitFirebugLoad = function()
                                  -{
                                  -    if (window && "Firebug" in window)
                                  -    {
                                  -        loadDevPanel();
                                  -    }
                                  -    else
                                  -        setTimeout(waitFirebugLoad, 0);
                                  -};
                                  -
                                  -var loadDevPanel = function() { with(FBL) { 
                                  -
                                  -    // ************************************************************************************************
                                  -    // FBTrace Panel
                                  -    
                                  -    function DevPanel(){};
                                  -    
                                  -    DevPanel.prototype = extend(Firebug.Panel,
                                  -    {
                                  -        name: "Dev",
                                  -        title: "Dev",
                                  -        
                                  -        options: {
                                  -            hasToolButtons: true,
                                  -            innerHTMLSync: true
                                  -        },
                                  -        
                                  -        create: function(){
                                  -            Firebug.Panel.create.apply(this, arguments);
                                  -            
                                  -            var doc = Firebug.chrome.document;
                                  -            var out = doc.createElement("textarea");
                                  -            out.id = "fbDevOutput";
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; padding: 0;";
                                  -            
                                  -            this.contentNode.appendChild(out);
                                  -            this.outputNode = out;
                                  -            
                                  -            this.buildSourceButton = new Button({
                                  -                caption: "Build Source",
                                  -                title: "Build full source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuild
                                  -            });
                                  -            
                                  -            this.buildSkinButton = new Button({
                                  -                caption: "Build Skin",
                                  -                title: "Build skin source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuildSkin
                                  -            });
                                  -        },
                                  -        
                                  -        updateOutput: function(output)
                                  -        {
                                  -            var doc = Firebug.chrome.document;
                                  -            
                                  -            if (isIE)
                                  -                this.outputNode.innerText = output;
                                  -            else
                                  -                this.outputNode.textContent = output;
                                  -        },
                                  -        
                                  -        initialize: function(){
                                  -            Firebug.Panel.initialize.apply(this, arguments);
                                  -            
                                  -            this.containerNode.style.overflow = "hidden";
                                  -            this.outputNode = this.contentNode.firstChild;                
                                  -            
                                  -            this.buildSourceButton.initialize();
                                  -            this.buildSkinButton.initialize();
                                  -        },
                                  -        
                                  -        shutdown: function()
                                  -        {
                                  -            this.containerNode.style.overflow = "";
                                  -        }
                                  -        
                                  -    });
                                  -    
                                  -    // ************************************************************************************************
                                  -    
                                  -    Firebug.registerPanel(DevPanel);
                                  -}};
                                  -
                                  -var publishedURL = "";
                                  -var baseURL = "";
                                  -var sourceURL = "";
                                  -var skinURL = "";
                                  -var fullURL = "";
                                  -var isApplicationContext = false;
                                  -
                                  -var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
                                  -var isIE = navigator.userAgent.indexOf("MSIE") != -1;
                                  -var isOpera = navigator.userAgent.indexOf("Opera") != -1;
                                  -var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
                                  -
                                  -loadModules();
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/boot.js b/tags/firebug1.3a4/content/firebug/boot.js
                                  deleted file mode 100644
                                  index f72631ef..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/boot.js
                                  +++ /dev/null
                                  @@ -1 +0,0 @@
                                  -FBL.initialize();
                                  diff --git a/tags/firebug1.3a4/content/firebug/chrome.injected.js b/tags/firebug1.3a4/content/firebug/chrome.injected.js
                                  deleted file mode 100644
                                  index 15504567..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/chrome.injected.js
                                  +++ /dev/null
                                  @@ -1,14 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;_width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;_position:absolute;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a4/content/firebug/chrome.injected2.js b/tags/firebug1.3a4/content/firebug/chrome.injected2.js
                                  deleted file mode 100644
                                  index c73b11f7..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/chrome.injected2.js
                                  +++ /dev/null
                                  @@ -1,11 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.injected = 
                                  -{
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbChromeButtons"><a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>',
                                  -    CSS: '.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .memberLabelCell .memberLabel{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{padding:0;border:none;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;outline:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;background:#F8F8F8;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage > .hasTwisty > .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup > .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0px 0 1px 0;}.logRow-spy,.logRow-spy .objectLink-sourceLink{padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;}.logRow-spy.loading .spyHead .spyRow .spyIcon{}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;white-space:nowrap;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSText{padding-left:20px;}.CSSProperty{color:#005500; margin-top:10px;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:fixed;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;z-index:999;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#ECEBE3;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbChromeButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;position:relative;}#fbChromeButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbChrome_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbChrome_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbChrome_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbChrome_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) !important;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbChromeButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/chrome.js b/tags/firebug1.3a4/content/firebug/chrome.js
                                  deleted file mode 100644
                                  index 73fe00f6..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/chrome.js
                                  +++ /dev/null
                                  @@ -1,1704 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    chromeMap: {},
                                  -    
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    
                                  -    consoleMessageQueue: [],
                                  -    
                                  -    height: 250,
                                  -    
                                  -    isOpen: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame")
                                  -            ChromeMini.create(Env.chrome);
                                  -            
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Options
                                  -
                                  -var ChromeDefaultOptions = 
                                  -{
                                  -    type: "frame",
                                  -    id: "FirebugUI",
                                  -    height: 250
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = options || {};
                                  -    options = extend(ChromeDefaultOptions, options);
                                  -    
                                  -    var context = options.context || Env.browser;
                                  -    
                                  -    var chrome = {};
                                  -    
                                  -    chrome.type = Env.Options.enablePersistent ? "popup" : options.type;
                                  -    
                                  -    var isChromeFrame = chrome.type == "frame";
                                  -    var useLocalSkin = Env.useLocalSkin;
                                  -    var url = useLocalSkin ? Env.Location.skin : "about:blank";
                                  -    
                                  -    if (isChromeFrame)
                                  -    {
                                  -        // Create the Chrome Frame
                                  -        var node = chrome.node = createGlobalElement("iframe");
                                  -        
                                  -        node.setAttribute("id", options.id);
                                  -        node.setAttribute("frameBorder", "0");
                                  -        node.firebugIgnore = true;
                                  -        node.style.border = "0";
                                  -        node.style.visibility = "hidden";
                                  -        node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -        node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -        node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -        node.style.left = "0";
                                  -        node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -        node.style.height = options.height + "px";
                                  -        
                                  -        // avoid flickering during chrome rendering
                                  -        if (isFirefox)
                                  -            node.style.display = "none";
                                  -        
                                  -        if (useLocalSkin)
                                  -            node.setAttribute("src", Env.Location.skin);
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        context.document.getElementsByTagName("body")[0].appendChild(node);
                                  -    }
                                  -    else
                                  -    {
                                  -        // Create the Chrome Popup
                                  -        var height = FirebugChrome.height || options.height;
                                  -        var options = [
                                  -                "true,top=",
                                  -                Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                ",left=0,height=",
                                  -                height,
                                  -                ",width=",
                                  -                screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                ",resizable"          
                                  -            ].join("");
                                  -        
                                  -        var node = chrome.node = context.window.open(
                                  -            url, 
                                  -            "popup", 
                                  -            options
                                  -          );
                                  -        
                                  -        if (node)
                                  -        {
                                  -            try
                                  -            {
                                  -                node.focus();
                                  -            }
                                  -            catch(E)
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug popup was blocked.");
                                  -            return;
                                  -        }
                                  -    }
                                  -    
                                  -    if (!useLocalSkin)
                                  -    {
                                  -        var tpl = getChromeTemplate(!isChromeFrame);
                                  -        var doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -        doc.write(tpl);
                                  -        doc.close();
                                  -    }
                                  -    
                                  -    var win;
                                  -    var waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100;
                                  -    var waitForChrome = function()
                                  -    {
                                  -        if ( // Frame loaded... OR
                                  -             isChromeFrame && (win=node.contentWindow) &&
                                  -             node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -             
                                  -             // Popup loaded
                                  -             !isChromeFrame && (win=node.window) && node.document &&
                                  -             node.document.getElementById("fbCommandLine") )
                                  -        {
                                  -            chrome.window = win.window;
                                  -            chrome.document = win.document;
                                  -            
                                  -            // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -            setTimeout(function(){
                                  -                onChromeLoad(chrome);
                                  -            },0);
                                  -        }
                                  -        else
                                  -            setTimeout(waitForChrome, waitDelay);
                                  -    }
                                  -    
                                  -    waitForChrome();
                                  -};
                                  -
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            if (oldChrome)
                                  -                oldChrome.close();
                                  -            
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class=' + (isPopup ? '"FirebugPopup"' : '') + '>';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = extend(Controller, PanelBar);
                                  -
                                  -append(ChromeBase, Context.prototype);
                                  -
                                  -append(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu2",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Save Options in Cookies",
                                  -                        type: "checkbox",
                                  -                        value: "saveCookies",
                                  -                        checked: Firebug.saveCookies,
                                  -                        command: "saveOptions"
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Restore Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            saveOptions: function(target)
                                  -            {
                                  -                var saveEnabled = target.getAttribute("checked");
                                  -                
                                  -                if (!saveEnabled) this.restorePrefs();
                                  -                
                                  -                this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.restorePrefs();
                                  -                
                                  -                if(Firebug.saveCookies)
                                  -                    Firebug.savePrefs()
                                  -                else
                                  -                    Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4;  // IE6 problem with fixed position
                                  -                var box = Firebug.chrome.getElementBox(target);
                                  -                menu.show(box.left + offsetLeft, box.top + box.height -5);
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create a new instance of the CommandLine class
                                  -        if (Firebug.CommandLine)
                                  -            commandLine = new Firebug.CommandLine(fbCommandLine);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanelName);
                                  -            
                                  -            if (FirebugChrome.selectedPanelName == "Console")
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        this.testMenu();
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // destroy the instance of the CommandLine class
                                  -        if (Firebug.CommandLine)
                                  -            commandLine.destroy();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {     
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            height = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0)+ "px",
                                  -            
                                  -            
                                  -            // Width related values
                                  -            sideWidth = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidth, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidth = Math.max(sideWidth - 6, 0) + "px";
                                  -            
                                  -            fbPanel2Style.height = height;
                                  -            fbPanel2Style.width = sideWidth;
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            fbPanelBar2BoxStyle.width = sideWidth;
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -        }
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && self.type == "frame")
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(options.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        if (panelToSelect == "Console")
                                  -            commandLine.element.focus();
                                  -        else
                                  -            fbPanel1.focus();
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -var focusCommandLineState = 0, lastFocusedPanelName; 
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbChrome_btClose"), "click", this.close],
                                  -            [$("fbChrome_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen || !this.isInitialized)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if (this.type == "frame" && (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        node.setAttribute("allowTransparency", "true");
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "transparent";
                                  -        
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        node.setAttribute("allowTransparency", "false");
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.document.body.style.backgroundColor = "#fff";
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeBase, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        this.document.body.className = "FirebugPopup";
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist)
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        var htmlPanel = chrome.getPanel("HTML");
                                  -                        htmlPanel.createUI();
                                  -                        
                                  -                        Firebug.Console.info("Firebug could not capture console calls during " + 
                                  -                                persistDelay + "ms");
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -//
                                  -var commandLine = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -var fbTop = null;
                                  -var fbContent = null;
                                  -var fbContentStyle = null;
                                  -var fbBottom = null;
                                  -var fbBtnInspect = null;
                                  -
                                  -var fbToolbar = null;
                                  -
                                  -var fbPanelBox1 = null;
                                  -var fbPanelBox1Style = null;
                                  -var fbPanelBox2 = null;
                                  -var fbPanelBox2Style = null;
                                  -var fbPanelBar2Box = null;
                                  -var fbPanelBar2BoxStyle = null;
                                  -
                                  -var fbHSplitter = null;
                                  -var fbVSplitter = null;
                                  -var fbVSplitterStyle = null;
                                  -
                                  -var fbPanel1 = null;
                                  -var fbPanel1Style = null;
                                  -var fbPanel2 = null;
                                  -var fbPanel2Style = null;
                                  -
                                  -var fbConsole = null;
                                  -var fbConsoleStyle = null;
                                  -var fbHTML = null;
                                  -
                                  -var fbCommandLine = null;
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var topHeight = null;
                                  -var topPartialHeight = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastSelectedPanelName = null;
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (Firebug.chrome.commandLineVisible != last)
                                  -    {
                                  -        fbBottom.className = Firebug.chrome.commandLineVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastHSplitterMouseMove = 0;
                                  -var onHSplitterMouseMoveBuffer = null;
                                  -var onHSplitterMouseMoveTimer = null;
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var lastVSplitterMouseMove = 0;
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getWindowSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/commandLine.js b/tags/firebug1.3a4/content/firebug/commandLine.js
                                  deleted file mode 100644
                                  index 1298cdec..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/commandLine.js
                                  +++ /dev/null
                                  @@ -1,373 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var Console = Firebug.Console;
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = function(element)
                                  -{
                                  -    this.element = element;
                                  -    
                                  -    if (isOpera)
                                  -      fixOperaTabKey(this.element);
                                  -    
                                  -    this.clear = bind(this.clear, this);
                                  -    this.onKeyDown = bind(this.onKeyDown, this);
                                  -    this.onError = bind(this.onError, this);
                                  -    
                                  -    addEvent(this.element, "keydown", this.onKeyDown);
                                  -    
                                  -    addEvent(Firebug.browser.window, "error", this.onError);
                                  -    addEvent(Firebug.chrome.window, "error", this.onError);
                                  -};
                                  -
                                  -Firebug.CommandLine.prototype = 
                                  -{
                                  -    element: null,
                                  -  
                                  -    _buffer: [],
                                  -    _bi: -1,
                                  -    
                                  -    _completing: null,
                                  -    _completePrefix: null,
                                  -    _completeExpr: null,
                                  -    _completeBuffer: null,
                                  -    _ci: null,
                                  -    
                                  -    _completion:
                                  -    {
                                  -        window:
                                  -        [
                                  -            "console"
                                  -        ],
                                  -        
                                  -        document:
                                  -        [
                                  -            "getElementById", 
                                  -            "getElementsByTagName"
                                  -        ]
                                  -    },
                                  -  
                                  -    _stack: function(command)
                                  -    {
                                  -        this._buffer.push(command);
                                  -        this._bi = this._buffer.length;
                                  -    },
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -        
                                  -        removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        
                                  -        this.element = null
                                  -        delete this.element;
                                  -    },
                                  -
                                  -    execute: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var command = cmd.value;
                                  -        
                                  -        this._stack(command);
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        
                                  -        try
                                  -        {
                                  -            
                                  -            var result = this.evaluate(command);
                                  -            
                                  -            // avoid logging the console command twice, in case it is a console function
                                  -            // that is being executed in the command line
                                  -            if (result != Console.LOG_COMMAND)
                                  -            {
                                  -                var html = [];
                                  -                Firebug.Reps.appendObject(result, html)
                                  -                Firebug.Console.writeMessage(html, "command");
                                  -            }
                                  -                
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            Firebug.Console.writeMessage([e.message || e], "error");
                                  -        }
                                  -        
                                  -        cmd.value = "";
                                  -    },
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -            
                                  -        //Firebug.context = Firebug.chrome;
                                  -        //api = null;
                                  -
                                  -        return Firebug.context.evaluate(expr, "window", api, Console.error);
                                  -    },
                                  -    
                                  -    //eval: new Function("return window.eval.apply(window, arguments)"),
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        var buffer = this._buffer;
                                  -        
                                  -        if (this._bi > 0 && buffer.length > 0)
                                  -            cmd.value = buffer[--this._bi];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var buffer = this._buffer;
                                  -        var limit = buffer.length -1;
                                  -        var i = this._bi;
                                  -        
                                  -        if (i < limit)
                                  -          cmd.value = buffer[++this._bi];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++this._bi;
                                  -            cmd.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var cmd = this.element;
                                  -        
                                  -        var command = cmd.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!this._completing)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            this._completing = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                this._completePrefix = prefix;
                                  -                this._completeExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                this._ci = -1;
                                  -                
                                  -                buffer = this._completeBuffer = isIE ?
                                  -                    this._completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = this._completeBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = this._completePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=this._ci+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    this._ci = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            cmd.value = this._completeExpr + result;
                                  -    },
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -            this._completing = false;
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -            this.execute();
                                  -
                                  -        else if (code == 27 /* ESC */)
                                  -            setTimeout(this.clear, 0);
                                  -          
                                  -        else if (code == 38 /* up */)
                                  -            this.prevCommand();
                                  -          
                                  -        else if (code == 40 /* down */)
                                  -            this.nextCommand();
                                  -          
                                  -        else if (code == 9 /* tab */)
                                  -            this.autocomplete(e.shiftKey);
                                  -          
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -};
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -};
                                  -initializeCommandLineAPI();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/console.js b/tags/firebug1.3a4/content/firebug/console.js
                                  deleted file mode 100644
                                  index 30ef3d08..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/console.js
                                  +++ /dev/null
                                  @@ -1,496 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -    
                                  -    xxx: function(o)
                                  -    {
                                  -        var rep = Firebug.getRep(o);
                                  -        var className = "";
                                  -        
                                  -        var panel = Firebug.DOM.getPanel();
                                  -        var toggles = {};
                                  -        
                                  -        var row = Firebug.Console.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        var target = row;
                                  -        var object = o;
                                  -        
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        //row.innerHTML = message.join("");
                                  -        
                                  -        rep.tag.replace({domPanel: panel, toggles: toggles, object: object}, target);
                                  -        
                                  -        Firebug.Console.appendRow(row);
                                  -    },
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        Firebug.Console.timeMap[name] = new Date().getTime();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        var timeMap = Firebug.Console.timeMap;
                                  -        
                                  -        if (name in timeMap)
                                  -        {
                                  -            var delta = new Date().getTime() - timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete timeMap[name];
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*(\w*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -    
                                  -        var traceLabel = "Stack Trace";
                                  -        
                                  -        Firebug.Console.group(traceLabel);
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            var html = [ getFuncName(fn), "(" ];
                                  -
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                if (i)
                                  -                    html.push(", ");
                                  -                
                                  -                Firebug.Reps.appendObject(fn.arguments[i], html);
                                  -            }
                                  -
                                  -            html.push(")");
                                  -            Firebug.Console.logRow(html, "stackTrace");
                                  -        }
                                  -        
                                  -        Firebug.Console.groupEnd(traceLabel);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND; 
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return this.warn(["profileEnd() not supported."]);
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().contentNode.innerHTML = "";
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.contentNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().contentNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: 
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            addEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            removeEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -        
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }    
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    if (Env.Options.overrideConsole)
                                  -    {
                                  -        var win = Env.browser.window;
                                  -        
                                  -        if (!isFirefox || isFirefox && !("console" in win))
                                  -            win.console = ConsoleAPI;
                                  -        else
                                  -            win.firebug = ConsoleAPI;
                                  -    }
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/console2.js b/tags/firebug1.3a4/content/firebug/console2.js
                                  deleted file mode 100644
                                  index bcbd37ee..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/console2.js
                                  +++ /dev/null
                                  @@ -1,1014 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -    
                                  -var FirebugContext = Env.browser;
                                  -var $STRF = function(){
                                  -    return "$STRF not supported yet";
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                return row;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        return context.getPanel("console", noCreate);
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console2 = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console2.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console2.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console2.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console2.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console2.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console2.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {} // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        innerRow.addEventListener("mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                var groupRow = event.currentTarget.parentNode;
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    event.target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    event.target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        }, false);
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "console2",
                                  -    title: "Console2",
                                  -    searchable: true,
                                  -    breakable: true,
                                  -    editable: false,
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.document;
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console2.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            this.panelNode.addEventListener("scroll", this.onScroller, true);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        this.resizeEventTarget.addEventListener("resize", this.onResizer, true);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            this.panelNode.removeEventListener("scroll", this.onScroller, true);
                                  -
                                  -        this.resizeEventTarget.removeEventListener("resize", this.onResizer, true);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console2.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console2.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console2.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console2);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a4/content/firebug/context.js b/tags/firebug1.3a4/content/firebug/context.js
                                  deleted file mode 100644
                                  index da6449cd..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/context.js
                                  +++ /dev/null
                                  @@ -1,472 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win){
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        context = context || "window";
                                  -
                                  -        var cmd = api ?
                                  -            "(function(arguments){ with("+api+"){ return "+expr+" } }).call("+context+",undefined)" :
                                  -            "(function(arguments){ return "+expr+" }).call("+context+",undefined)" ;
                                  -        
                                  -        var r = this.eval(cmd);
                                  -        if (r && r[evalError])
                                  -        {
                                  -            cmd = api ?
                                  -                "(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)" :
                                  -                "(function(arguments){ "+expr+" }).call("+context+",undefined)" ;
                                  -                
                                  -            r = this.eval(cmd);
                                  -            if (r && r[evalError])
                                  -            {
                                  -                if (errorHandler)
                                  -                    r = errorHandler(r.message || r)
                                  -                else
                                  -                    r = r.message || r;
                                  -            }
                                  -        }
                                  -        
                                  -        return r;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        if (isOpera || isSafari)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/css.js b/tags/firebug1.3a4/content/firebug/css.js
                                  deleted file mode 100644
                                  index 0fbcd12f..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/css.js
                                  +++ /dev/null
                                  @@ -1,277 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Module
                                  -
                                  -Firebug.CSS = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("CSS") : null;
                                  -    },
                                  -    
                                  -    renderStyleSheet: function(index)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel.lastStyleSheetIndex != index)
                                  -        {
                                  -            var str = renderStyleSheet(index);
                                  -            
                                  -            panel.contentNode.innerHTML = str.join("");
                                  -            
                                  -            // IE needs this timeout, otherwise the panel won't scroll
                                  -            setTimeout(function(){
                                  -                panel.synchronizeUI();
                                  -            },0);
                                  -            
                                  -            panel.styleSheetIndex = index;
                                  -            panel.lastStyleSheetIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CSS);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSStyleSheetPanel(){};
                                  -
                                  -CSSStyleSheetPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSS",
                                  -    title: "CSS",
                                  -    
                                  -    styleSheetIndex: 0,
                                  -    lastStyleSheetIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var styleSheets = doc.styleSheets;
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, length=styleSheets.length; i<length; i++)
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -        
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectStyleSheet(this.styleSheetIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("CSS");
                                  -        var index = oldPanel.styleSheetIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.styleSheetIndex = index;
                                  -        this.lastStyleSheetIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    },
                                  -    
                                  -    selectStyleSheet: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    }    
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSElementPanel(){};
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSElementPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "CSS",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles(target);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles(node);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;        
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyleSheet = function renderStyleSheet(index)
                                  -{
                                  -    var styleSheet = Firebug.browser.document.styleSheets[index],
                                  -        str = [], 
                                  -        sl = -1;
                                  -    
                                  -    try
                                  -    {
                                  -        var rules = styleSheet[isIE ? "rules" : "cssRules"];
                                  -        
                                  -        for (var i=0, rule; rule = rules[i]; i++)
                                  -        {
                                  -            var selector = rule.selectorText;
                                  -            var cssText = isIE ? 
                                  -                    rule.style.cssText :
                                  -                    rule.cssText.match(/\{(.*)\}/)[1];
                                  -            
                                  -            str[++sl] = renderRule(selector, cssText.split(";"));
                                  -        }
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        str[++sl] = "<em>Access to restricted URI denied</em>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderRule = function renderRule(selector, styles)
                                  -{
                                  -    var str = "<div class='Selector'>"+ selector.toLowerCase()+ " {</div>";
                                  -    
                                  -    for(var i=0, len=styles.length; i<len; i++)
                                  -    {
                                  -        var rule = styles[i];
                                  -        str += rule.replace(/(.+)\:(.+)/, renderRuleReplacer);
                                  -    }
                                  -    
                                  -    str += "<div class='SelectorEnd'>}</div>";
                                  -    return str;
                                  -};
                                  -
                                  -var renderRuleReplacer = function renderRuleReplacer(m, g1, g2)
                                  -{
                                  -    return "<div class='CSSText'><span class='CSSProperty'>" +
                                  -        g1.toLowerCase() +
                                  -        ": </span><span class='CSSValue'>" +
                                  -        g2.replace(/\s*$/, "") +
                                  -        ";</span></div>"; 
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyles = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = document.defaultView ? 
                                  -            document.defaultView.getComputedStyle(node, null) :
                                  -            node.currentStyle;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = "<div class='CSSItem'><span class='CSSProperty'>"; 
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = "</span>:<span class='CSSValue'>"; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = "</span>;</div>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/dom.js b/tags/firebug1.3a4/content/firebug/dom.js
                                  deleted file mode 100644
                                  index 6cc08efa..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/dom.js
                                  +++ /dev/null
                                  @@ -1,1570 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[cacheID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : "";
                                  -};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser.window;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        //this.select(Firebug.browser.window);
                                  -        
                                  -        this.context.loaded = true;
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -var hasProperties = function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (isFunction(ob)) return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -}
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/dom.original.js b/tags/firebug1.3a4/content/firebug/dom.original.js
                                  deleted file mode 100644
                                  index acf5dd89..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/dom.original.js
                                  +++ /dev/null
                                  @@ -1,2093 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const jsdIStackFrame = Ci.jsdIStackFrame;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -const insertSliceSize = 18;
                                  -const insertInterval = 40;
                                  -
                                  -const rxIdentifier = /^[$_A-Za-z][$_A-Za-z0-9]*$/
                                  -
                                  -const ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1,
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMModule = extend(Firebug.Module,
                                  -{
                                  -    initialize: function(prefDomain, prefNames)
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.initContext.apply(this, arguments);
                                  -        context.dom = {breakpoints: new DOMBreakpointGroup()};
                                  -    },
                                  -
                                  -    loadedContext: function(context, persistedState)
                                  -    {
                                  -        context.dom.breakpoints.load(context);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.destroyContext.apply(this, arguments);
                                  -
                                  -        context.dom.breakpoints.store(context);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -const WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 3},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('a11y.labels.press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -const SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD(),
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -const DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    memberRowTag:
                                  -        TR({"class": "memberRow $member.open $member.type\\Row", _domObject: "$member",
                                  -            $hasChildren: "$member.hasChildren",
                                  -            role: "presentation",
                                  -            level: "$member.level",
                                  -            breakable: "$member.breakable",
                                  -            breakpoint: "$member.breakpoint",
                                  -            disabledBreakpoint: "$member.disabledBreakpoint"},
                                  -            TD({"class": "memberHeaderCell"},
                                  -               DIV({"class": "sourceLine memberRowHeader", onclick: "$onClickRowHeader"},
                                  -                    "&nbsp;"
                                  -               )
                                  -            ),
                                  -            TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px",
                                  -                role: 'presentation'},
                                  -                DIV({"class": "memberLabel $member.type\\Label"},
                                  -                    SPAN({"class": "memberLabelPrefix"}, "$member.prefix"),
                                  -                    SPAN("$member.name")
                                  -                )
                                  -            ),
                                  -            TD({"class": "memberValueCell", role : 'presentation'},
                                  -                TAG("$member.tag", {object: "$member.value"})
                                  -            )
                                  -        ),
                                  -
                                  -    tag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick",
                                  -            role: "tree", 'aria-label': $STR('aria.labels.dom properties')},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator",
                                  -                    TAG("$memberRowTag", {member: "$member"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    watchTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick",
                                  -            role: 'tree', 'aria-label': 'DOM properties'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members",
                                  -            TAG("$memberRowTag", {member: "$member"})
                                  -        ),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return this.getMembers(object, level, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(event.target, "memberRow");
                                  -        var label = getElementByClass(row, "memberLabel");
                                  -        var valueCell = getElementByClass(row, "memberValueCell");
                                  -        var object = Firebug.getRepObject(event.target);
                                  -        var target = row.lastChild.firstChild;
                                  -        var isString = hasClass(target,"objectBox-string");
                                  -        var inValueCell = event.target == valueCell || event.target == target;
                                  -
                                  -        if (label && hasClass(row, "hasChildren") && !(isString && inValueCell))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        var panel = row.parentNode.parentNode.domPanel;
                                  -        var target = row.lastChild.firstChild;
                                  -        var isString = hasClass(target,"objectBox-string");
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (isString)
                                  -            {
                                  -                var rowValue = panel.getRowPropertyValue(row);
                                  -                row.lastChild.firstChild.textContent = '"' + cropMultipleLines(rowValue) + '"';
                                  -            }
                                  -            else
                                  -            {
                                  -                if (toggles)
                                  -                {
                                  -                    var path = getPath(row);
                                  -
                                  -                    // Remove the path from the toggle tree
                                  -                    for (var i = 0; i < path.length; ++i)
                                  -                    {
                                  -                        if (i == path.length-1)
                                  -                            delete toggles[path[i]];
                                  -                        else
                                  -                            toggles = toggles[path[i]];
                                  -                    }
                                  -                }
                                  -
                                  -                var rowTag = this.rowTag;
                                  -                var tbody = row.parentNode;
                                  -
                                  -                setTimeout(function()
                                  -                {
                                  -                    for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                    {
                                  -                        if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                            break;
                                  -
                                  -                        tbody.removeChild(firstRow);
                                  -                    }
                                  -                }, row.insertTimeout ? row.insertTimeout : 0);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -            if (isString)
                                  -            {
                                  -                var rowValue = panel.getRowPropertyValue(row);
                                  -                row.lastChild.firstChild.textContent = '"' + rowValue + '"';
                                  -            }
                                  -            else
                                  -            {
                                  -
                                  -                if (toggles)
                                  -                {
                                  -                    var path = getPath(row);
                                  -
                                  -                    // Mark the path in the toggle tree
                                  -                    for (var i = 0; i < path.length; ++i)
                                  -                    {
                                  -                        var name = path[i];
                                  -                        if (toggles.hasOwnProperty(name))
                                  -                            toggles = toggles[name];
                                  -                        else
                                  -                            toggles = toggles[name] = {};
                                  -                    }
                                  -                }
                                  -
                                  -                var context = panel ? panel.context : null;
                                  -                var members = Firebug.DOMBasePanel.prototype.getMembers(target.repObject, level+1, context);
                                  -
                                  -                var rowTag = this.rowTag;
                                  -                var lastRow = row;
                                  -
                                  -                var delay = 0;
                                  -                var setSize = members.length;
                                  -                var rowCount = 1;
                                  -                while (members.length)
                                  -                {
                                  -                    setTimeout(function(slice, isLast)
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            delete row.insertTimeout;
                                  -                    }, delay, members.splice(0, insertSliceSize), !members.length);
                                  -
                                  -                    delay += insertInterval;
                                  -                }
                                  -
                                  -                row.insertTimeout = delay;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onClickRowHeader: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var rowHeader = event.target;
                                  -        if (!hasClass(rowHeader, "memberRowHeader"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(event.target, "memberRow");
                                  -        if (!row)
                                  -            return;
                                  -
                                  -        var panel = row.parentNode.parentNode.domPanel;
                                  -        if (panel)
                                  -            panel.breakOnProperty(row);
                                  -    }
                                  -});
                                  -
                                  -const ToolboxPlate = domplate(
                                  -{
                                  -    tag:
                                  -        DIV({"class": "watchToolbox", _domPanel: "$domPanel", onclick: "$onClick"},
                                  -            IMG({"class": "watchDeleteButton closeButton", src: "blank.gif"})
                                  -        ),
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var toolbox = event.currentTarget;
                                  -        toolbox.domPanel.deleteWatch(toolbox.watchRow);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.ActivablePanel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        return unwrapObject(object);
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = this.getMembers(this.selection, 0, this.context);
                                  -        this.expandMembers(members, this.toggles, 0, 0, this.context);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -    },
                                  -    /*
                                  -     *  @param object a user-level object wrapped in security blanket
                                  -     *  @param level for a.b.c, level is 2
                                  -     *  @param context
                                  -     */
                                  -    getMembers: function(object, level, context)
                                  -    {
                                  -        if (!level)
                                  -            level = 0;
                                  -
                                  -        var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -            domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -        try
                                  -        {
                                  -            var domMembers = getDOMMembers(object);
                                  -            var insecureObject = unwrapObject(object);
                                  -
                                  -            for (var name in insecureObject)  // enumeration is safe
                                  -            {
                                  -                // Ignore only global variables (properties of the |window| object).
                                  -                // javascript.options.strict says ignoreVars is undefined.
                                  -                if (ignoreVars[name] == 1 && (object instanceof Window))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("dom.getMembers: ignoreVars: " + name + ", " + level, object);
                                  -                    continue;
                                  -                }
                                  -
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = insecureObject[name];  // getter is safe
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    // Sometimes we get exceptions trying to access certain members
                                  -                    if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -                }
                                  -
                                  -                var ordinal = parseInt(name);
                                  -                if (ordinal || ordinal == 0)
                                  -                {
                                  -                    addMember(object, "ordinal", ordinals, name, val, level, 0, context);
                                  -                }
                                  -                else if (typeof(val) == "function")
                                  -                {
                                  -                    if (isClassFunction(val))
                                  -                        addMember(object, "userClass", userClasses, name, val, level, 0, context);
                                  -                    else if (name in domMembers)
                                  -                        addMember(object, "domFunction", domFuncs, name, val, level, domMembers[name], context);
                                  -                    else
                                  -                        addMember(object, "userFunction", userFuncs, name, val, level, 0, context);
                                  -                }
                                  -                else
                                  -                {
                                  -                    if (name in domMembers)
                                  -                        addMember(object, "dom", domProps, name, val, level, domMembers[name], context);
                                  -                    else if (name in domConstantMap)
                                  -                        addMember(object, "dom", domConstants, name, val, level, 0, context);
                                  -                    else
                                  -                        addMember(object, "user", userProps, name, val, level, 0, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions just from trying to iterate the members
                                  -            // of certain objects, like StorageList, but don't let that gum up the works
                                  -            //throw exc;
                                  -            if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        }
                                  -
                                  -        function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -        function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -        var members = [];
                                  -
                                  -        members.push.apply(members, ordinals);
                                  -
                                  -        if (Firebug.showUserProps)
                                  -        {
                                  -            userProps.sort(sortName);
                                  -            members.push.apply(members, userProps);
                                  -        }
                                  -
                                  -        if (Firebug.showUserFuncs)
                                  -        {
                                  -            userClasses.sort(sortName);
                                  -            members.push.apply(members, userClasses);
                                  -
                                  -            userFuncs.sort(sortName);
                                  -            members.push.apply(members, userFuncs);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMProps)
                                  -        {
                                  -            domProps.sort(sortName);
                                  -            members.push.apply(members, domProps);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMFuncs)
                                  -        {
                                  -            domFuncs.sort(sortName);
                                  -            members.push.apply(members, domFuncs);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMConstants)
                                  -            members.push.apply(members, domConstants);
                                  -
                                  -        return members;
                                  -    },
                                  -
                                  -    expandMembers: function (members, toggles, offset, level, context)  // recursion starts with offset=0, level=0
                                  -    {
                                  -        var expanded = 0;
                                  -        for (var i = offset; i < members.length; ++i)
                                  -        {
                                  -            var member = members[i];
                                  -            if (member.level > level)
                                  -                break;
                                  -
                                  -            if ( toggles.hasOwnProperty(member.name) )
                                  -            {
                                  -                member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -                if (member.type == 'string')
                                  -                    continue;
                                  -                var newMembers = this.getMembers(member.value, level+1, context);  // sets newMembers.level to level+1
                                  -
                                  -                var args = [i+1, 0];
                                  -                args.push.apply(args, newMembers);
                                  -                members.splice.apply(members, args);
                                  -                if (FBTrace.DBG_DOM)
                                  -                {
                                  -                    FBTrace.sysout("expandMembers member.name", member.name);
                                  -                    FBTrace.sysout("expandMembers toggles", toggles);
                                  -                    FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                    FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -                }
                                  -
                                  -                expanded += newMembers.length;
                                  -                i += newMembers.length + this.expandMembers(members, toggles[member.name], i+1, level+1, context);
                                  -            }
                                  -        }
                                  -
                                  -        return expanded;
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? this.document : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        var setSize = members.length;
                                  -        var slice = members.splice(0, insertSliceSize);
                                  -        var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        var rowCount = 1;
                                  -        var panel = this;
                                  -        dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -
                                  -        var delay = 0;
                                  -        while (members.length)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function(slice)
                                  -            {
                                  -                result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                rowCount += insertSliceSize;
                                  -                dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -
                                  -                if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                    panelNode.scrollTop = priorScrollTop;
                                  -            }, delay, members.splice(0, insertSliceSize)));
                                  -
                                  -            delay += insertInterval;
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            if (this.getPathObject(i) == object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRealRowObject: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        return this.getRealObject(object);
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRealRowObject(row);
                                  -        return this.getObjectPropertyValue(object, row.domObject.name);
                                  -    },
                                  -
                                  -    getObjectPropertyValue: function(object, propName)
                                  -    {
                                  -        if (object)
                                  -        {
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -
                                  -    getRowPathName: function(row)
                                  -    {
                                  -        var name = row.domObject.name;
                                  -        var seperator = "";
                                  -
                                  -        if(name.match(/^[\d]+$/))//ordinal
                                  -            return ["", "["+name+"]"];
                                  -        else if(name.match(rxIdentifier))//identifier
                                  -            return [".", name];
                                  -        else//map keys
                                  -            return ["", "[\""+name.replace(/\\/g, "\\\\").replace(/"/g,"\\\"") + "\"]"];
                                  -    },
                                  -
                                  -    copyName: function(row)
                                  -    {
                                  -        var value = this.getRowPathName(row);
                                  -        value = value[1];//don't want the seperator
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    copyPath: function(row)
                                  -    {
                                  -        var path = this.getPropertyPath(row);
                                  -        copyToClipboard(path.join(""));
                                  -    },
                                  -
                                  -    /*
                                  -     * Walk from the current row up to the most ancient parent, building an array.
                                  -     * @return array of property names and separators, eg ['foo','.','bar'].
                                  -     */
                                  -    getPropertyPath: function(row)
                                  -    {
                                  -        var path = [];
                                  -        for(var current = row; current ; current = getParentRow(current))
                                  -            path = this.getRowPathName(current).concat(path);
                                  -        path.splice(0,1); //don't want the first seperator
                                  -        return path;
                                  -    },
                                  -
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -        {
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRealRowObject(row);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },
                                  -
                                  -    breakOnProperty: function(row)
                                  -    {
                                  -        var member = row.domObject;
                                  -        if (!member)
                                  -            return;
                                  -
                                  -        // Bail out if this property is not breakable.
                                  -        if (!member.breakable)
                                  -            return;
                                  -
                                  -        //xxxHonza: don't use getRowName to get the prop name. From some reason
                                  -        // unwatch doesn't work if row.firstChild.textContent is used.
                                  -        // It works only from within the watch handler method if the passed param
                                  -        // name is used.
                                  -        var name = member.name;
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (!object)
                                  -            return;
                                  -
                                  -        // Create new or remove an existing breakpoint.
                                  -        var breakpoints = this.context.dom.breakpoints;
                                  -        var bp = breakpoints.findBreakpoint(object, name);
                                  -        if (bp)
                                  -        {
                                  -            row.removeAttribute("breakpoint");
                                  -            breakpoints.removeBreakpoint(object, name);
                                  -        }
                                  -        else
                                  -        {
                                  -            breakpoints.addBreakpoint(object, name, this, row);
                                  -            row.setAttribute("breakpoint", "true");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("dom.Disable Break On Property Change") :
                                  -            $STR("dom.Break On Property Change"));
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not aggressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    this.objectPath.splice(previousIndex+1);
                                  -                    this.propertyPath.splice(previousIndex+1);
                                  -                    this.viewPath.splice(previousIndex+1);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0; i < newPath.length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = this.context.getGlobalScope();
                                  -                if (object == win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view ? view.toggles : {};
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view ? view.scrollTop : 0);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return this.context.getGlobalScope();
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: "Copy Name",
                                  -                    command: bindFixed(this.copyName, this, row) },
                                  -                {label: "Copy Path",
                                  -                    command: bindFixed(this.copyPath, this, row) }
                                  -            );
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            var member = row ? row.domObject : null;
                                  -            if (!isDOMMember(rowObject, rowName) && member && member.breakable)
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "html.dom.label.Break On Property Change", type: "checkbox",
                                  -                        checked: this.context.dom.breakpoints.findBreakpoint(rowObject, rowName),
                                  -                        command: bindFixed(this.breakOnProperty, this, row)}
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var repNode = Firebug.getRepNode(event.target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(event.target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "dom",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onClick = bind(this.onClick, this);
                                  -
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function DOMSidePanel() {}
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "domSide",
                                  -    parentPanel: "html",
                                  -    order: 3,
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function WatchPanel() {}
                                  -
                                  -WatchPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    tag: DirTablePlate.watchTag,
                                  -
                                  -    rebuild: function()
                                  -    {
                                  -        this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        this.tag.replace({domPanel: this, toggles: {}}, this.panelNode);
                                  -    },
                                  -
                                  -    addWatch: function(expression)
                                  -    {
                                  -        if (!this.watches)
                                  -            this.watches = [];
                                  -
                                  -        this.watches.splice(0, 0, expression);
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    removeWatch: function(expression)
                                  -    {
                                  -        if (!this.watches)
                                  -            return;
                                  -
                                  -        var index = this.watches.indexOf(expression);
                                  -        if (index != -1)
                                  -            this.watches.splice(index, 1);
                                  -    },
                                  -
                                  -    editNewWatch: function(value)
                                  -    {
                                  -        var watchNewRow = getElementByClass(this.panelNode, "watchNewRow");
                                  -        if (watchNewRow)
                                  -            this.editProperty(watchNewRow, value);
                                  -    },
                                  -
                                  -    setWatchValue: function(row, value)
                                  -    {
                                  -        var rowIndex = getWatchRowIndex(row);
                                  -        this.watches[rowIndex] = value;
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    deleteWatch: function(row)
                                  -    {
                                  -        var rowIndex = getWatchRowIndex(row);
                                  -        this.watches.splice(rowIndex, 1);
                                  -        this.rebuild(true);
                                  -
                                  -        this.context.setTimeout(bindFixed(function()
                                  -        {
                                  -            this.showToolbox(null);
                                  -        }, this));
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showToolbox: function(row)
                                  -    {
                                  -        var toolbox = this.getToolbox();
                                  -        if (row)
                                  -        {
                                  -            if (hasClass(row, "editing"))
                                  -                return;
                                  -
                                  -            toolbox.watchRow = row;
                                  -
                                  -            var offset = getClientOffset(row);
                                  -            toolbox.style.top = offset.y + "px";
                                  -            this.panelNode.appendChild(toolbox);
                                  -        }
                                  -        else
                                  -        {
                                  -            delete toolbox.watchRow;
                                  -            if (toolbox.parentNode)
                                  -                toolbox.parentNode.removeChild(toolbox);
                                  -        }
                                  -    },
                                  -
                                  -    getToolbox: function()
                                  -    {
                                  -        if (!this.toolbox)
                                  -            this.toolbox = ToolboxPlate.tag.replace({domPanel: this}, this.document);
                                  -
                                  -        return this.toolbox;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var watchNewRow = getAncestorByClass(event.target, "watchNewRow");
                                  -        if (watchNewRow)
                                  -        {
                                  -            this.editProperty(watchNewRow);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onMouseOver: function(event)
                                  -    {
                                  -        var watchRow = getAncestorByClass(event.target, "watchRow");
                                  -        if (watchRow)
                                  -            this.showToolbox(watchRow);
                                  -    },
                                  -
                                  -    onMouseOut: function(event)
                                  -    {
                                  -        if (isAncestor(event.relatedTarget, this.getToolbox()))
                                  -            return;
                                  -
                                  -        var watchRow = getAncestorByClass(event.relatedTarget, "watchRow");
                                  -        if (!watchRow)
                                  -            this.showToolbox(null);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "watches",
                                  -    order: 0,
                                  -    parentPanel: "script",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onMouseOver = bind(this.onMouseOver, this);
                                  -        this.onMouseOut = bind(this.onMouseOut, this);
                                  -
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        state.watches = this.watches;
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        if (state && state.watches)
                                  -            this.watches = state.watches;
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.addEventListener("mouseover", this.onMouseOver, false);
                                  -        this.panelNode.addEventListener("mouseout", this.onMouseOut, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.removeEventListener("mouseover", this.onMouseOver, false);
                                  -        this.panelNode.removeEventListener("mouseout", this.onMouseOut, false);
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this, 'console']);
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var frame = this.context.currentFrame;
                                  -
                                  -        var newFrame = frame && frame.isValid && frame.script != this.lastScript;
                                  -        if (newFrame)
                                  -        {
                                  -            this.toggles = {};
                                  -            this.lastScript = frame.script;
                                  -        }
                                  -
                                  -        var members = [];
                                  -
                                  -        if (this.watches)
                                  -        {
                                  -            for (var i = 0; i < this.watches.length; ++i)
                                  -            {
                                  -                var expr = this.watches[i];
                                  -                var value = null;
                                  -                Firebug.CommandLine.evaluate(expr, this.context, null, this.context.getGlobalScope(),
                                  -                    function success(result, context)
                                  -                    {
                                  -                        value = result;
                                  -                    },
                                  -                    function failed(result, context)
                                  -                    {
                                  -                        var exc = result;
                                  -                        value = new ErrorCopy(exc+"");
                                  -                    }
                                  -                );
                                  -
                                  -                addMember(object, "watch", members, expr, value, 0);
                                  -            }
                                  -        }
                                  -
                                  -        if (frame && frame.isValid)
                                  -        {
                                  -            var thisVar = unwrapIValue(frame.thisValue);
                                  -            addMember(object, "user", members, "this", thisVar, 0);
                                  -
                                  -            var scopeChain = this.generateScopeChain(frame.scope);
                                  -            addMember(object, "scopes", members, "scopeChain", scopeChain, 0);
                                  -
                                  -            members.push.apply(members, this.getMembers(scopeChain[0], 0, this.context));
                                  -        }
                                  -
                                  -        this.expandMembers(members, this.toggles, 0, 0, this.context);
                                  -        this.showMembers(members, !newFrame);
                                  -    },
                                  -
                                  -    generateScopeChain: function (scope)
                                  -    {
                                  -        var ret = [];
                                  -        while (scope) {
                                  -            var scopeVars;
                                  -            // getWrappedValue will not contain any variables for closure
                                  -            // scopes, so we want to special case this to get all variables
                                  -            // in all cases.
                                  -            if (scope.jsClassName == "Call") {
                                  -                scopeVars = {};
                                  -                var listValue = {value: null}, lengthValue = {value: 0};
                                  -                scope.getProperties(listValue, lengthValue);
                                  -
                                  -                for (var i = 0; i < lengthValue.value; ++i)
                                  -                {
                                  -                    var prop = listValue.value[i];
                                  -                    var name = unwrapIValue(prop.name);
                                  -                    if (ignoreVars[name] == 1)
                                  -                    {
                                  -                        if (FBTrace.DBG_DOM)
                                  -                            FBTrace.sysout("dom.generateScopeChain: ignoreVars: " + name);
                                  -                        continue;
                                  -                    }
                                  -
                                  -                    scopeVars[name] = unwrapIValue(prop.value);
                                  -                }
                                  -            } else {
                                  -                scopeVars = unwrapIValue(scope);
                                  -            }
                                  -
                                  -            if (scopeVars && scopeVars.hasOwnProperty)
                                  -            {
                                  -                if (!scopeVars.hasOwnProperty("toString")) {
                                  -                    (function() {
                                  -                        var className = scope.jsClassName;
                                  -                        scopeVars.toString = function() {
                                  -                            return $STR(className + " Scope");
                                  -                        };
                                  -                    })();
                                  -                }
                                  -
                                  -                ret.push(scopeVars);
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("dom .generateScopeChain: bad scopeVars");
                                  -            }
                                  -            scope = scope.jsParent;
                                  -        }
                                  -
                                  -        ret.toString = function() {
                                  -            return $STR("Scope Chain");
                                  -        };
                                  -
                                  -        return ret;
                                  -    },
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function DOMEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box;
                                  -
                                  -    this.tabNavigation = false;
                                  -    this.tabCompletion = true;
                                  -    this.completeAsYouType = false;
                                  -    this.fixedWidth = true;
                                  -
                                  -    this.autoCompleter = Firebug.CommandLine.autoCompleter;
                                  -}
                                  -
                                  -DOMEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    tag:
                                  -        INPUT({"class": "fixedWidthEditor a11yFocusNoTab",
                                  -            type: "text", title:$STR("NewWatch"),
                                  -            oninput: "$onInput", onkeypress: "$onKeyPress"}),
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // XXXjoe Kind of hackish - fix me
                                  -        delete this.panel.context.thisValue;
                                  -
                                  -        if (cancel || value == "")
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        dispatch([Firebug.A11yModel], 'onWatchEndEditing', [this.panel]);
                                  -        if (!row)
                                  -            this.panel.addWatch(value);
                                  -        else if (hasClass(row, "watchRow"))
                                  -            this.panel.setWatchValue(row, value);
                                  -        else
                                  -            this.panel.setPropertyValue(row, value);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function addMember(object, type, props, name, value, level, order, context)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (valueType == "function" || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    var member = {
                                  -        object: object,
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    };
                                  -
                                  -    // The context doesn't have to be specified (e.g. in case of Watch panel that is based
                                  -    // on the same template as the DOM panel, but doesn't show any breakpoints).
                                  -    if (context)
                                  -    {
                                  -        // xxxHonza: Support for object change not implemented yet.
                                  -        member.breakable = !hasChildren;
                                  -
                                  -        // xxxHonza: Disable breaking on direct window properties, see #520572
                                  -        if (object instanceof Ci.nsIDOMWindow)
                                  -            member.breakable = false;
                                  -
                                  -        var breakpoints = context.dom.breakpoints;
                                  -        var bp = breakpoints.findBreakpoint(object, name);
                                  -        if (bp)
                                  -        {
                                  -            member.breakpoint = true;
                                  -            member.disabledBreakpoint = !bp.checked;
                                  -        }
                                  -    }
                                  -
                                  -    // If the property is implemented using a getter function (and there is no setter
                                  -    // implemented) use a "get" prefix that is displayed in the UI.
                                  -    var o = unwrapObject(object);
                                  -    member.prefix = (o.__lookupGetter__(name) && !o.__lookupSetter__(name)) ? "get " : "";
                                  -
                                  -    props.push(member);
                                  -    return member;
                                  -}
                                  -
                                  -function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -function getRowName(row)
                                  -{
                                  -    var labelNode = getElementByClass(row, "memberLabelCell");
                                  -    return labelNode.textContent;
                                  -}
                                  -
                                  -function getRowValue(row)
                                  -{
                                  -    var valueNode = getElementByClass(row, "memberValueCell");
                                  -    return valueNode.firstChild.repObject;
                                  -}
                                  -
                                  -function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -function findRow(parentNode, object)
                                  -{
                                  -    var rows = getElementsByClass(parentNode, "memberRow");
                                  -    for (var i=0; i<rows.length; i++)
                                  -    {
                                  -        var row = rows[i];
                                  -        if (object == row.domObject.object)
                                  -            return row;
                                  -    }
                                  -
                                  -    return row;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMModule.DebuggerListener =
                                  -{
                                  -    getBreakpoints: function(context, groups)
                                  -    {
                                  -        if (!context.dom.breakpoints.isEmpty())
                                  -            groups.push(context.dom.breakpoints);
                                  -    }
                                  -};
                                  -
                                  -Firebug.DOMModule.BreakpointRep = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    tag:
                                  -        DIV({"class": "breakpointRow focusRow", _repObject: "$bp",
                                  -            role: "option", "aria-checked": "$bp.checked"},
                                  -            DIV({"class": "breakpointBlockHead", onclick: "$onEnable"},
                                  -                INPUT({"class": "breakpointCheckbox", type: "checkbox",
                                  -                    _checked: "$bp.checked", tabindex : "-1"}),
                                  -                SPAN({"class": "breakpointName"}, "$bp.propName"),
                                  -                IMG({"class": "closeButton", src: "blank.gif", onclick: "$onRemove"})
                                  -            ),
                                  -            DIV({"class": "breakpointCode"},
                                  -                TAG("$bp.object|getObjectTag", {object: "$bp.object"})
                                  -            )
                                  -        ),
                                  -
                                  -    getObjectTag: function(object)
                                  -    {
                                  -        var rep = Firebug.getRep(object);
                                  -        return rep.shortTag ? rep.shortTag : rep.tag;
                                  -    },
                                  -
                                  -    onRemove: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        if (!hasClass(event.target, "closeButton"))
                                  -            return;
                                  -
                                  -        var bpPanel = Firebug.getElementPanel(event.target);
                                  -        var context = bpPanel.context;
                                  -
                                  -        // Remove from list of breakpoints.
                                  -        var row = getAncestorByClass(event.target, "breakpointRow");
                                  -        var bp = row.repObject;
                                  -        context.dom.breakpoints.removeBreakpoint(bp.object, bp.propName);
                                  -
                                  -        // Remove from the UI.
                                  -        bpPanel.noRefresh = true;
                                  -        bpPanel.removeRow(row);
                                  -        bpPanel.noRefresh = false;
                                  -
                                  -        var domPanel = context.getPanel("dom", true);
                                  -        if (domPanel)
                                  -        {
                                  -            var domRow = findRow(domPanel.panelNode, bp.object);
                                  -            if (domRow)
                                  -            {
                                  -                domRow.removeAttribute("breakpoint");
                                  -                domRow.removeAttribute("disabledBreakpoint");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onEnable: function(event)
                                  -    {
                                  -        var checkBox = event.target;
                                  -        if (!hasClass(checkBox, "breakpointCheckbox"))
                                  -            return;
                                  -
                                  -        var bpPanel = Firebug.getElementPanel(event.target);
                                  -        var context = bpPanel.context;
                                  -
                                  -        var bp = getAncestorByClass(checkBox, "breakpointRow").repObject;
                                  -        bp.checked = checkBox.checked;
                                  -
                                  -        var domPanel = context.getPanel("dom", true);
                                  -        if (domPanel)
                                  -        {
                                  -            var row = findRow(domPanel.panelNode, bp.object);
                                  -            if (row)
                                  -                row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Breakpoint;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Breakpoint(object, propName, objectPath, context)
                                  -{
                                  -    this.context = context;
                                  -    this.propName = propName;
                                  -    this.objectPath = objectPath;
                                  -    this.object = object;
                                  -    this.checked = true;
                                  -}
                                  -
                                  -Breakpoint.prototype =
                                  -{
                                  -    watchProperty: function()
                                  -    {
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.watch; property: " + this.propName);
                                  -
                                  -        if (!this.object)
                                  -            return;
                                  -
                                  -        try
                                  -        {
                                  -            var self = this;
                                  -            this.object.watch(this.propName, function handler(prop, oldval, newval)
                                  -            {
                                  -                // XXXjjb Beware: in playing with this feature I hit too much recursion multiple times with console.log
                                  -                // TODO Do something cute in the UI with the error bubble thing
                                  -                if (self.checked)
                                  -                {
                                  -                    self.context.breakingCause = {
                                  -                        title: $STR("dom.Break On Property"),
                                  -                        message: cropString(prop, 200),
                                  -                        prevValue: oldval,
                                  -                        newValue: newval
                                  -                    };
                                  -
                                  -                    Firebug.Breakpoint.breakNow(self.context.getPanel("dom", true));
                                  -                }
                                  -                return newval;
                                  -            });
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("dom.watch; object FAILS " + exc, exc);
                                  -            return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    unwatchProperty: function()
                                  -    {
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.unwatch; property: " + this.propName, this.object);
                                  -
                                  -        if (!this.object)
                                  -            return;
                                  -
                                  -        try
                                  -        {
                                  -            this.object.unwatch(this.propName);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("dom.unwatch; object FAILS " + exc, exc);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DOMBreakpointGroup()
                                  -{
                                  -    this.breakpoints = [];
                                  -}
                                  -
                                  -DOMBreakpointGroup.prototype = extend(new Firebug.Breakpoint.BreakpointGroup(),
                                  -{
                                  -    name: "domBreakpoints",
                                  -    title: $STR("dom.label.DOM Breakpoints"),
                                  -
                                  -    addBreakpoint: function(object, propName, panel, row)
                                  -    {
                                  -        var path = panel.getPropertyPath(row);
                                  -        path.pop();
                                  -
                                  -        // We don't want the last dot.
                                  -        if (path.length > 0 && path[path.length-1] == ".")
                                  -            path.pop();
                                  -
                                  -        var objectPath = path.join("");
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.addBreakpoint; " + objectPath, path);
                                  -
                                  -        var bp = new Breakpoint(object, propName, objectPath, panel.context);
                                  -        if (bp.watchProperty());
                                  -            this.breakpoints.push(bp);
                                  -    },
                                  -
                                  -    removeBreakpoint: function(object, propName)
                                  -    {
                                  -        var bp = this.findBreakpoint(object, propName);
                                  -        if (bp)
                                  -        {
                                  -            bp.unwatchProperty();
                                  -            remove(this.breakpoints, bp);
                                  -        }
                                  -    },
                                  -
                                  -    matchBreakpoint: function(bp, args)
                                  -    {
                                  -        var object = args[0];
                                  -        var propName = args[1];
                                  -        return bp.object == object && bp.propName == propName;
                                  -    },
                                  -
                                  -    // Persistence
                                  -    load: function(context)
                                  -    {
                                  -        var panelState = getPersistedState(context, "dom");
                                  -        if (panelState.breakpoints)
                                  -            this.breakpoints = panelState.breakpoints;
                                  -
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            try
                                  -            {
                                  -                // xxxHonza: Firebug.CommandLine.evaluate should be reused if possible.
                                  -                // xxxJJB: The Components.utils.evalInSandbox fails from some reason.
                                  -                var expr = "context.window.wrappedJSObject." + bp.objectPath;
                                  -                bp.object = eval(expr);
                                  -                bp.watchProperty();
                                  -
                                  -                if (FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.DOMBreakpointGroup.load; " + bp.objectPath, bp);
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_ERROR || FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.DOMBreakpointGroup.load; ERROR " + bp.objectPath, err);
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    store: function(context)
                                  -    {
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            bp.object = null;
                                  -        });
                                  -
                                  -        var panelState = getPersistedState(context, "dom");
                                  -        panelState.breakpoints = this.breakpoints;
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.DOMModule);
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -Firebug.registerPanel(WatchPanel);
                                  -Firebug.registerRep(Firebug.DOMModule.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  diff --git a/tags/firebug1.3a4/content/firebug/domplate.js b/tags/firebug1.3a4/content/firebug/domplate.js
                                  deleted file mode 100644
                                  index 05eb162b..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/domplate.js
                                  +++ /dev/null
                                  @@ -1,1064 +0,0 @@
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a4/content/firebug/domplate.original.js b/tags/firebug1.3a4/content/firebug/domplate.original.js
                                  deleted file mode 100644
                                  index 80df5848..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/domplate.original.js
                                  +++ /dev/null
                                  @@ -1,1036 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -top.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name[0] == "_")
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name[0] == "$")
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        this.renderMarkup = eval(js);
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        this.renderDOM = eval(js);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var table = doc.createElement("table");
                                  -        table.innerHTML = html;
                                  -
                                  -        var tbody = table.firstChild;
                                  -        var parent = before.localName == "TR" ? before.parentNode : before;
                                  -        var after = before.localName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.localName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var range = doc.createRange();
                                  -        range.selectNode(doc.body);
                                  -        var frag = range.createContextualFragment(html);
                                  -
                                  -        var root = frag.firstChild;
                                  -        if (before.nextSibling)
                                  -            before.parentNode.insertBefore(frag, before.nextSibling);
                                  -        else
                                  -            before.parentNode.appendChild(frag);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a4/content/firebug/firebug.js b/tags/firebug1.3a4/content/firebug/firebug.js
                                  deleted file mode 100644
                                  index 62869350..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/firebug.js
                                  +++ /dev/null
                                  @@ -1,914 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "firebug" + new Date().getTime();
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -window.Firebug = FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version:  "Firebug Lite 1.3.0a4",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        if (chromeMap.popup)
                                  -            chromeMap.popup.destroy();
                                  -        
                                  -        chromeMap.frame.destroy();
                                  -        
                                  -        for(var name in documentCache)
                                  -        {
                                  -            documentCache[name].removeAttribute(cacheID);
                                  -            documentCache[name] = null;
                                  -            delete documentCache[name];
                                  -        }
                                  -        
                                  -        documentCache = null;
                                  -        delete FBL.documentCache;
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -        
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -                
                                  -                json[++jl] = '"'; 
                                  -                json[++jl] = name;
                                  -                
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -        
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -if (!Env.Options.enablePersistent || 
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDevelopmentMode )
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasSidePanel: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelBar: null,
                                  -    
                                  -    commandLine: null,
                                  -    
                                  -    toolButtons: null,
                                  -    statusBar: null,
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(true);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -            
                                  -            if (options.hasSidePanel)
                                  -            {
                                  -                //this.sidePanelNode = $(panelId + "StatusBar");
                                  -            }        
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            $("fbPanelBar" + containerSufix).appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            /**/
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.contentNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (parentPanelMap.hasOwnProperty(this.name))
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // store persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasSidePanel)
                                  -        {
                                  -            //this.sidePanelNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function(context)
                                  -    {
                                  -        return null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/gui.js b/tags/firebug1.3a4/content/firebug/gui.js
                                  deleted file mode 100644
                                  index 438ff4f8..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/gui.js
                                  +++ /dev/null
                                  @@ -1,983 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    isSidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(isSidePanelBar)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.isSidePanelBar = isSidePanelBar;
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if (isSidePanelBar && p.prototype.parentPanel || 
                                  -                !isSidePanelBar && !p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - *
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            title: this.title,
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: "title",
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype, 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                Firebug.chrome.document.body, 
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getWindowSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked)
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var cmd = target.getAttribute("command");
                                  -            var handler = this[cmd];
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.register = function(object)
                                  -{
                                  -    menuMap[object.id] = object;
                                  -};
                                  -
                                  -Menu.check = function(element)
                                  -{
                                  -    setClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "true");
                                  -};
                                  -
                                  -Menu.uncheck = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "");
                                  -};
                                  -
                                  -Menu.disable = function(element)
                                  -{
                                  -    setClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -Menu.enable = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -/*
                                  -
                                  -SAMPLE
                                  -
                                  -    getContextMenuItems: function(fn, target)
                                  -    {
                                  -        if (getAncestorByClass(target, "sourceLine"))
                                  -            return;
                                  -
                                  -        var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -        if (!sourceRow)
                                  -            return;
                                  -
                                  -        var sourceLine = getChildByClass(sourceRow, "sourceLine");
                                  -        var lineNo = parseInt(sourceLine.textContent);
                                  -
                                  -        var items = [];
                                  -
                                  -        var selection = this.document.defaultView.getSelection();
                                  -        if (selection.toString())
                                  -        {
                                  -            items.push(
                                  -                {label: "CopySourceCode", command: bind(this.copySource, this) },
                                  -                "-",
                                  -                {label: "AddWatch", command: bind(this.addSelectionWatch, this) }
                                  -            );
                                  -        }
                                  -
                                  -        var hasBreakpoint = sourceRow.getAttribute("breakpoint") == "true";
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "SetBreakpoint", type: "checkbox", checked: hasBreakpoint,
                                  -                command: bindFixed(this.toggleBreakpoint, this, lineNo) }
                                  -        );
                                  -        if (hasBreakpoint)
                                  -        {
                                  -            var isDisabled = fbs.isBreakpointDisabled(this.location.href, lineNo);
                                  -            items.push(
                                  -                {label: "DisableBreakpoint", type: "checkbox", checked: isDisabled,
                                  -                    command: bindFixed(this.toggleDisableBreakpoint, this, lineNo) }
                                  -            );
                                  -        }
                                  -        items.push(
                                  -            {label: "EditBreakpointCondition",
                                  -                command: bindFixed(this.editBreakpointCondition, this, lineNo) }
                                  -        );
                                  -
                                  -        if (this.context.stopped)
                                  -        {
                                  -            var sourceRow = getAncestorByClass(target, "sourceRow");
                                  -            if (sourceRow)
                                  -            {
                                  -                var sourceFile = getAncestorByClass(sourceRow, "sourceBox").repObject;
                                  -                var lineNo = parseInt(sourceRow.firstChild.textContent);
                                  -
                                  -                var debuggr = Firebug.Debugger;
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "Continue",
                                  -                        command: bindFixed(debuggr.resume, debuggr, this.context) },
                                  -                    {label: "StepOver",
                                  -                        command: bindFixed(debuggr.stepOver, debuggr, this.context) },
                                  -                    {label: "StepInto",
                                  -                        command: bindFixed(debuggr.stepInto, debuggr, this.context) },
                                  -                    {label: "StepOut",
                                  -                        command: bindFixed(debuggr.stepOut, debuggr, this.context) },
                                  -                    {label: "RunUntil",
                                  -                        command: bindFixed(debuggr.runUntil, debuggr, this.context,
                                  -                        sourceFile, lineNo) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -
                                  -
                                  - */
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/highlighter.css b/tags/firebug1.3a4/content/firebug/highlighter.css
                                  deleted file mode 100644
                                  index 234e1b1b..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/highlighter.css
                                  +++ /dev/null
                                  @@ -1,117 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.firebugHighlight {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: #3875d7;
                                  -}
                                  -
                                  -.firebugLayoutBoxParent {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: transparent;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.firebugRulerH {
                                  -    position: absolute;
                                  -    top: -15px;
                                  -    left: 0;
                                  -    width: 100%;
                                  -    height: 14px;
                                  -    background: url(chrome://firebug/skin/rulerH.png) repeat-x;
                                  -    border-top: 1px solid #BBBBBB;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px solid #000000;
                                  -}
                                  -
                                  -.firebugRulerV {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: -15px;
                                  -    width: 14px;
                                  -    height: 100%;
                                  -    background: url(chrome://firebug/skin/rulerV.png) repeat-y;
                                  -    border-left: 1px solid #BBBBBB;
                                  -    border-right: 1px solid #000000;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.overflowRulerX > .firebugRulerV {
                                  -    left: 0;
                                  -}
                                  -
                                  -.overflowRulerY > .firebugRulerH {
                                  -    top: 0;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.firebugLayoutBoxOffset {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    opacity: 0.8;
                                  -}
                                  -
                                  -.firebugLayoutBoxMargin {
                                  -    background-color: #EDFF64;
                                  -}
                                  -
                                  -.firebugLayoutBoxBorder {
                                  -    background-color: #666666;
                                  -}
                                  -
                                  -.firebugLayoutBoxPadding {
                                  -    background-color: SlateBlue;
                                  -}
                                  -
                                  -.firebugLayoutBoxContent {
                                  -    background-color: SkyBlue;
                                  -}
                                  -
                                  -/*.firebugHighlightGroup .firebugLayoutBox {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.firebugHighlightBox {
                                  -    background-color: Blue !important;
                                  -}*/
                                  -
                                  -.firebugLayoutLine {
                                  -    z-index: 2147483647;
                                  -    background-color: #000000;
                                  -    opacity: 0.4;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft,
                                  -.firebugLayoutLineRight {
                                  -    position: fixed;
                                  -    width: 1px;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.firebugLayoutLineTop,
                                  -.firebugLayoutLineBottom {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 1px;
                                  -}
                                  -
                                  -.firebugLayoutLineTop {
                                  -    margin-top: -1px;
                                  -    border-top: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineRight {
                                  -    border-right: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineBottom {
                                  -    border-bottom: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft {
                                  -    margin-left: -1px;
                                  -    border-left: 1px solid #999999;
                                  -}
                                  diff --git a/tags/firebug1.3a4/content/firebug/html.js b/tags/firebug1.3a4/content/firebug/html.js
                                  deleted file mode 100644
                                  index 0c1c3a0a..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/html.js
                                  +++ /dev/null
                                  @@ -1,568 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = node.style.visibility != "hidden" &&
                                  -                        node.style.display != "none";
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || attr.nodeName == cacheID)
                                  -                        continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;')
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(document.all){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && el[cacheID];
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(!this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("DOMSidePanel");
                                  -        }            
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID]);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = documentCache[e.id];
                                  -        var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0)
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/html2.js b/tags/firebug1.3a4/content/firebug/html2.js
                                  deleted file mode 100644
                                  index 2ae0280c..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/html2.js
                                  +++ /dev/null
                                  @@ -1,1906 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -
                                  -const MODIFICATION = MutationEvent.MODIFICATION;
                                  -const ADDITION = MutationEvent.ADDITION;
                                  -const REMOVAL = MutationEvent.REMOVAL;
                                  -/**/
                                  -
                                  -var AttrTag =
                                  -    SPAN({"class": "nodeAttr editGroup"},
                                  -        "&nbsp;", SPAN({"class": "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -        SPAN({"class": "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -    );
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLModule = extend(Firebug.Module,
                                  -{
                                  -    deleteNode: function(node, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.parentNode.removeChild(node);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    },
                                  -    deleteAttribute: function(node, attr, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.removeAttribute(attr);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel = function() {};
                                  -
                                  -Firebug.HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -            this.editNode(this.selection);
                                  -    },
                                  -
                                  -    resetSearch: function()
                                  -    {
                                  -        delete this.lastSearch;
                                  -    },
                                  -
                                  -    selectNext: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var next = this.ioBox.getNextObjectBox(objectBox);
                                  -        if (next)
                                  -        {
                                  -            this.select(next.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(next.repObject);
                                  -
                                  -        }
                                  -    },
                                  -
                                  -    selectPrevious: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var previous = this.ioBox.getPreviousObjectBox(objectBox);
                                  -        if (previous)
                                  -        {
                                  -            this.select(previous.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(previous.repObject);
                                  -        }
                                  -    },
                                  -
                                  -    selectNodeBy: function(dir)
                                  -    {
                                  -        if (dir == "up")
                                  -            this.selectPrevious();
                                  -        else if (dir == "down")
                                  -            this.selectNext();
                                  -        else if (dir == "left")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.select(this.ioBox.getParentObjectBox(box).repObject);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -        else if (dir == "right")
                                  -            this.ioBox.expandObject(this.selection);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editNewAttribute: function(elt)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var labelBox = objectNodeBox.firstChild.lastChild;
                                  -            var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -            Firebug.Editor.insertRow(bracketBox, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editAttribute: function(elt, attrName)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var attrBox = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (attrBox)
                                  -            {
                                  -                var attrValueBox = attrBox.childNodes[3];
                                  -                var value = elt.getAttribute(attrName);
                                  -                Firebug.Editor.startEditing(attrValueBox, value);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    deleteAttribute: function(elt, attrName)
                                  -    {
                                  -        Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
                                  -    },
                                  -
                                  -    editNode: function(node)
                                  -    {
                                  -        if ( nonEditableTags.hasOwnProperty(node.localName) )
                                  -            return;
                                  -
                                  -        var objectNodeBox = this.ioBox.findObjectBox(node);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            if (!this.htmlEditor)
                                  -                this.htmlEditor = new HTMLEditor(this.document);
                                  -
                                  -            this.htmlEditor.innerEditMode = node.localName in innerEditableTags;
                                  -
                                  -            var html = this.htmlEditor.innerEditMode ? node.innerHTML : getElementHTML(node);
                                  -            Firebug.Editor.startEditing(objectNodeBox, html, this.htmlEditor);
                                  -        }
                                  -    },
                                  -
                                  -    deleteNode: function(node)
                                  -    {
                                  -        Firebug.HTMLModule.deleteNode(node, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getElementSourceText: function(node)
                                  -    {
                                  -        if (this.sourceElements)
                                  -        {
                                  -            var index = this.sourceElementNodes.indexOf(node);
                                  -            if (index != -1)
                                  -                return this.sourceElements[index];
                                  -        }
                                  -
                                  -        var lines;
                                  -
                                  -        var url = getSourceHref(node);
                                  -        if (url)
                                  -            lines = this.context.sourceCache.load(url);
                                  -        else
                                  -        {
                                  -            var text = getSourceText(node);
                                  -            lines = splitLines(text);
                                  -        }
                                  -
                                  -        var sourceElt = new SourceText(lines, node);
                                  -
                                  -        if (!this.sourceElements)
                                  -        {
                                  -            this.sourceElements =  [sourceElt];
                                  -            this.sourceElementNodes = [node];
                                  -        }
                                  -        else
                                  -        {
                                  -            this.sourceElements.push(sourceElt);
                                  -            this.sourceElementNodes.push(node);
                                  -        }
                                  -
                                  -        return sourceElt;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    mutateAttr: function(target, attrChange, attrName, attrValue)
                                  -    {
                                  -        // Every time the user scrolls we get this pointless mutation event, which
                                  -        // is only bad for performance
                                  -        if (attrName == "curpos")
                                  -            return;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName, target);
                                  -
                                  -        this.markChange();
                                  -
                                  -        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(target)
                                  -            : this.ioBox.findObjectBox(target);
                                  -
                                  -        if (!objectNodeBox)
                                  -            return;
                                  -
                                  -        if (isVisible(objectNodeBox.repObject))
                                  -            removeClass(objectNodeBox, "nodeHidden");
                                  -        else
                                  -            setClass(objectNodeBox, "nodeHidden");
                                  -
                                  -        if (attrChange == MODIFICATION || attrChange == ADDITION)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
                                  -            if (nodeAttr && nodeAttr.childNodes.length > 3)
                                  -            {
                                  -                var attrValueBox = nodeAttr.childNodes[3];
                                  -                var attrValueText = nodeAttr.childNodes[3].firstChild;
                                  -                if (attrValueText)
                                  -                    attrValueText.nodeValue = attrValue;
                                  -
                                  -                this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
                                  -            }
                                  -            else
                                  -            {
                                  -                var attr = target.getAttributeNode(attrName);
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
                                  -                if (attr)
                                  -                {
                                  -                    var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
                                  -                            this.document);
                                  -
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -                    labelBox.insertBefore(nodeAttr, bracketBox);
                                  -
                                  -                    this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (attrChange == REMOVAL)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (nodeAttr)
                                  -            {
                                  -                nodeAttr.parentNode.removeChild(nodeAttr);
                                  -
                                  -                this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateText: function(target, parent, textValue)
                                  -    {
                                  -        this.markChange();
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showFullTextNodes)
                                  -            textValue = cropMultipleLines(textValue, 50);
                                  -
                                  -        var parentTag = getNodeBoxTag(parentNodeBox);
                                  -        if (parentTag == Firebug.HTMLPanel.TextElement.tag)
                                  -        {
                                  -            var nodeText = getTextElementTextBox(parentNodeBox);
                                  -            if (!nodeText.firstChild)
                                  -                return;
                                  -
                                  -            nodeText.firstChild.nodeValue = textValue;
                                  -
                                  -            this.highlightMutation(nodeText, parentNodeBox, "mutated");
                                  -        }
                                  -        else
                                  -        {
                                  -            var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
                                  -            if (!childBox)
                                  -                return;
                                  -
                                  -            var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
                                  -            if (textNodeBox)
                                  -            {
                                  -                textNodeBox.firstChild.lastChild.nodeValue = textValue;
                                  -
                                  -                this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateNode: function(target, parent, nextSibling, removal)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\nhtml.mutateNode target:"+target+" parent:"+parent+(removal?"REMOVE":"")+"\n");
                                  -
                                  -        this.markChange();  // This invalidates the panels for every mutate
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateNode parent:"+parent+" parentNodeBox:"+parentNodeBox+"\n");
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showWhitespaceNodes && this.isWhitespaceText(target))
                                  -            return;
                                  -
                                  -        // target is only whitespace
                                  -
                                  -        var newParentTag = getNodeTag(parent);
                                  -        var oldParentTag = getNodeBoxTag(parentNodeBox);
                                  -
                                  -        if (newParentTag == oldParentTag)
                                  -        {
                                  -            if (parentNodeBox.populated)
                                  -            {
                                  -                if (removal)
                                  -                {
                                  -                    this.ioBox.removeChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
                                  -                }
                                  -                else
                                  -                {
                                  -                    var objectBox = nextSibling
                                  -                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
                                  -                        : this.ioBox.appendChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -                this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -                if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -                {
                                  -                    var objectBox = this.ioBox.createObjectBox(target);
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -            if (parentNodeBox.parentNode)
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -            if (hasClass(parentNodeBox, "open"))
                                  -                this.ioBox.toggleObjectBox(newParentNodeBox, true);
                                  -
                                  -            if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                this.ioBox.select(parent, true);
                                  -
                                  -            this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -        }
                                  -    },
                                  -
                                  -    highlightMutation: function(elt, objectBox, type)
                                  -    {
                                  -        if (!elt)
                                  -            return;
                                  -
                                  -        if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -        {
                                  -            if (this.context.mutationTimeout)
                                  -            {
                                  -                this.context.clearTimeout(this.context.mutationTimeout);
                                  -                delete this.context.mutationTimeout;
                                  -            }
                                  -
                                  -            var ioBox = this.ioBox;
                                  -            var panelNode = this.panelNode;
                                  -
                                  -            this.context.mutationTimeout = this.context.setTimeout(function()
                                  -            {
                                  -                ioBox.openObjectBox(objectBox);
                                  -
                                  -                if (Firebug.scrollToMutations)
                                  -                    scrollIntoCenterView(objectBox, panelNode);
                                  -            }, 200);
                                  -        }
                                  -
                                  -        if (Firebug.highlightMutations)
                                  -            setClassTimed(elt, type, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // SourceBox proxy
                                  -
                                  -    createObjectBox: function(object, isRoot)
                                  -    {
                                  -        if (FBTrace.DBG_HTML) FBTrace.sysout("html.createObjectBox("+(object.tagName?object.tagName:object)+", isRoot:"+(isRoot?"true":"false")+")\n");
                                  -        var tag = getNodeTag(object);
                                  -        if (tag)
                                  -            return tag.replace({object: object}, this.document);
                                  -    },
                                  -
                                  -    getParentObject: function(node)
                                  -    {
                                  -        if (node instanceof SourceText)
                                  -            return node.owner;
                                  -
                                  -        if (this.rootElement && node == this.rootElement)  // this.rootElement is never set
                                  -            return null;
                                  -
                                  -        var parentNode = node ? node.parentNode : null;
                                  -        if (parentNode)
                                  -            if (parentNode.nodeType == 9)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.getParentObject parentNode.nodeType 9\n");
                                  -                if (parentNode.defaultView)
                                  -                    return parentNode.defaultView.frameElement;
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_HTML || FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("html.getParentObject parentNode.nodeType 9 but no defaultView?", parentNode);
                                  -                }
                                  -            }
                                  -            else
                                  -                return parentNode;
                                  -        else
                                  -            if (node && node.nodeType == 9) // document type
                                  -            {
                                  -                var embeddingFrame = node.defaultView.frameElement;
                                  -                if (embeddingFrame)
                                  -                    return embeddingFrame.parentNode;
                                  -                else
                                  -                    return null;  // top level has no parent
                                  -            }
                                  -
                                  -    },
                                  -
                                  -    getChildObject: function(node, index, previousSibling)
                                  -    {
                                  -        if (isSourceElement(node))
                                  -        {
                                  -            if (index == 0)
                                  -                return this.getElementSourceText(node);
                                  -        }
                                  -        else if (previousSibling)
                                  -        {
                                  -            return this.findNextSibling(previousSibling);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (index == 0 && node.contentDocument)
                                  -                return node.contentDocument.documentElement;
                                  -            else if (Firebug.showWhitespaceNodes)
                                  -                return node.childNodes[index];
                                  -            else
                                  -            {
                                  -                var childIndex = 0;
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                {
                                  -                    if (!this.isWhitespaceText(child) && childIndex++ == index)
                                  -                        return child;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return false;
                                  -        return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -    },
                                  -
                                  -    findNextSibling: function (node)
                                  -    {
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return node.nextSibling;
                                  -        else
                                  -        {
                                  -            for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -            {
                                  -                if (!this.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        return tag == "script" || tag == "link" || tag == "style"
                                  -            || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Events
                                  -
                                  -    onMutateAttr: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var attrChange = event.attrChange;
                                  -        var attrName = event.attrName;
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateAttr(target, attrChange, attrName, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateText: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var parent = target.parentNode;
                                  -
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateText(target, parent, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateNode: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var parent = event.relatedNode;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -        var nextSibling = removal ? null : this.findNextSibling(target);
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            try
                                  -            {
                                  -                 this.mutateNode(target, parent, nextSibling, removal);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.onMutateNode FAILS:", exc);
                                  -            }
                                  -        }, this);
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (isLeftClick(event) && event.detail == 2)
                                  -        {
                                  -            if (getAncestorByClass(event.target, "nodeTag"))
                                  -            {
                                  -                var node = Firebug.getRepObject(event.target);
                                  -                this.editNode(node);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        if (getAncestorByClass(event.target, "nodeTag"))
                                  -        {
                                  -            var node = Firebug.getRepObject(event.target);
                                  -            this.noScrollIntoView = true;
                                  -            this.select(node);
                                  -            delete this.noScrollIntoView;
                                  -            var box = this.ioBox.createObjectBox(node);
                                  -            if (!hasClass(box, "open"))
                                  -                this.ioBox.expandObject(node);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -    },
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        if (this.editing || isControl(event) || isShift(event))
                                  -            return;
                                  -
                                  -        if (event.keyCode == KeyEvent.DOM_VK_UP)
                                  -            this.selectNodeBy("up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
                                  -            this.selectNodeBy("down");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
                                  -            this.selectNodeBy("left");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
                                  -            this.selectNodeBy("right");
                                  -        else
                                  -            return;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -    
                                  -    name: "HTML2",
                                  -    title: "HTML2",
                                  -    
                                  -    options: {},
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.panelNode.style;
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -        style.padding = "0 1px";
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);        
                                  -        
                                  -        //var object = Firebug.browser.document.documentElement;
                                  -        //Firebug.HTMLPanel.Element.tag.replace({object: object}, this.contentNode);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.document = Firebug.chrome.document; 
                                  -        
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -        
                                  -        var object = Firebug.browser.document.documentElement;
                                  -        this.select(object);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -    },    
                                  -
                                  -    /*
                                  -    name: "html",
                                  -    searchable: true,
                                  -    dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
                                  -    inspectorHistory: new Array(5),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMutateText = bind(this.onMutateText, this);
                                  -        this.onMutateAttr = bind(this.onMutateAttr, this);
                                  -        this.onMutateNode = bind(this.onMutateNode, this);
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        persistObjects(this, state);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this]);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.ioBox)
                                  -        {
                                  -            this.ioBox.destroy();
                                  -            delete this.ioBox;
                                  -        }
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this]);
                                  -    },
                                  -    /**/
                                  -    /*
                                  -    show: function(state)
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", true);
                                  -
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -
                                  -        this.panelNode.ownerDocument.addEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.context.loaded)
                                  -        {
                                  -            if (!this.context.attachedMutation)
                                  -            {
                                  -                this.context.attachedMutation = true;
                                  -
                                  -                iterateWindows(this.context.window, bind(function(win)
                                  -                {
                                  -                    var doc = win.document;
                                  -                    doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -                    doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -                    doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -                    doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -                }, this));
                                  -            }
                                  -
                                  -            restoreObjects(this, state);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", false);
                                  -        delete this.infoTipURL;  // clear the state that is tracking the infotip so it is reset after next show()
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.watchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, false);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        if (this.context.attachedMutation)
                                  -        {
                                  -            var doc = win.document;
                                  -            doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -            doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -            doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -            doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.unwatchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, true);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        var doc = win.document;
                                  -        doc.removeEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -        doc.removeEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -        doc.removeEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -        doc.removeEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -    },
                                  -    /**/
                                  -
                                  -    mutateDocumentEmbedded: function(win, remove)
                                  -    {
                                  -        // document.documentElement    Returns the Element that is a direct child of document. For HTML documents, this normally the HTML element.
                                  -        var target = win.document.documentElement;
                                  -        var parent = win.frameElement;
                                  -        var nextSibling = this.findNextSibling(target);
                                  -        this.mutateNode(target, parent, nextSibling, remove);
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof Element || object instanceof Text || object instanceof CDATASection)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && !reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        var viewOptionNames = {showCommentNodes:1, showWhitespaceNodes:1 , showFullTextNodes:1};
                                  -        if (name in viewOptionNames)
                                  -        {
                                  -            this.resetSearch();
                                  -            clearNode(this.panelNode);
                                  -            if (this.ioBox)
                                  -                this.ioBox.destroy();
                                  -
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -            this.ioBox.select(this.selection, true, true);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.updateSelection "+object);
                                  -        if (this.ioBox.sourceRow)
                                  -            this.ioBox.sourceRow.removeAttribute("exeLine");
                                  -
                                  -        if (object instanceof SourceLink) // && object.type == "css" and !reCSS(object.href) by supports
                                  -         {
                                  -             var sourceLink = object;
                                  -             var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -             if (stylesheet)
                                  -             {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection stylesheet.ownerNode="+stylesheet.ownerNode
                                  -                                          +" href:"+sourceLink.href+"\n");
                                  -                if (ownerNode)
                                  -                {
                                  -                    var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
                                  -
                                  -                    // XXXjjb seems like this could be bad for errors at the end of long files
                                  -                    //
                                  -                    var sourceRow = FBL.getElementByClass(objectbox, "sourceRow"); // first source row in style
                                  -                    for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
                                  -                    {
                                  -                        if (!sourceRow) break;
                                  -                        sourceRow = FBL.getNextByClass(sourceRow,  "sourceRow");
                                  -                    }
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection sourceLink.line="+sourceLink.line
                                  -                                          +" sourceRow="+(sourceRow?sourceRow.innerHTML:"undefined")+"\n");
                                  -                    if (sourceRow)
                                  -                    {
                                  -                        this.ioBox.sourceRow = sourceRow;
                                  -                        this.ioBox.sourceRow.setAttribute("exeLine", "true");
                                  -                        scrollIntoCenterView(sourceRow);
                                  -                        this.ioBox.selectObjectBox(sourceRow, false);  // sourceRow isn't an objectBox, but the function should work anyway...
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (Firebug.Inspector.inspecting)
                                  -        {
                                  -            this.ioBox.highlight(object);
                                  -        }
                                  -        else
                                  -        {
                                  -            this.ioBox.select(object, true, false, this.noScrollIntoView);
                                  -            
                                  -            // TODO: xxxpedro
                                  -            //this.inspectorHistory.unshift(object);
                                  -            //if (this.inspectorHistory.length > 5)
                                  -            //    this.inspectorHistory.pop();
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -        if (object != this.inspectorHistory)
                                  -        {
                                  -            // Manage history of selection for later access in the command line.
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.stopInspecting: inspectoryHistory updated", this.inspectorHistory);
                                  -        }
                                  -
                                  -        this.ioBox.highlight(null);
                                  -
                                  -        if (!cancelled)
                                  -            this.ioBox.select(object, true);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var search;
                                  -        if (text == this.searchText && this.lastSearch)
                                  -            search = this.lastSearch;
                                  -        else
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            if (Firebug.searchSelector)
                                  -                search = this.lastSearch = new SelectorSearch(text, doc, this.panelNode, this.ioBox);
                                  -            else
                                  -                search = this.lastSearch = new NodeSearch(text, doc, this.panelNode, this.ioBox);
                                  -        }
                                  -
                                  -        var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -        if (loopAround)
                                  -        {
                                  -            this.resetSearch();
                                  -            this.search(text, reverse);
                                  -        }
                                  -
                                  -        return !search.noMatch;
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("search.html.CSS_Selector", "searchSelector")
                                  -        ];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            return doc.body ? doc.body : getPreviousElement(doc.documentElement.lastChild);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(element)
                                  -    {
                                  -        var path = [];
                                  -        for (; element; element = this.getParentObject(element))
                                  -            path.push(element);
                                  -
                                  -        return path;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowFullText", "showFullTextNodes"),
                                  -            optionMenu("ShowWhitespace", "showWhitespaceNodes"),
                                  -            optionMenu("ShowComments", "showCommentNodes"),
                                  -            "-",
                                  -            optionMenu("HighlightMutations", "highlightMutations"),
                                  -            optionMenu("ExpandMutations", "expandMutations"),
                                  -            optionMenu("ScrollToMutations", "scrollToMutations")
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(node, target)
                                  -    {
                                  -        if (!node)
                                  -            return null;
                                  -
                                  -        var items = [];
                                  -
                                  -        if (node && node.nodeType == 1)
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewAttribute", command: bindFixed(this.editNewAttribute, this, node) }
                                  -            );
                                  -
                                  -            var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -            if (getAncestorByClass(target, "nodeAttr"))
                                  -            {
                                  -                var attrName = attrBox.childNodes[1].textContent;
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.editAttribute, this, node, attrName) },
                                  -                    {label: $STRF("DeleteAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.deleteAttribute, this, node, attrName) }
                                  -                );
                                  -            }
                                  -
                                  -            if (!( nonEditableTags.hasOwnProperty(node.localName) ))
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "EditElement", command: bindFixed(this.editNode, this, node) },
                                  -                    {label: "DeleteElement", command: bindFixed(this.deleteNode, this, node) }
                                  -                );
                                  -            }
                                  -
                                  -        }
                                  -        else
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "EditNode", command: bindFixed(this.editNode, this, node) },
                                  -                {label: "DeleteNode", command: bindFixed(this.deleteNode, this, node) }
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        if (!hasClass(target, "nodeValue"))
                                  -            return;
                                  -
                                  -        var targetNode = Firebug.getRepObject(target);
                                  -        if (targetNode && targetNode.nodeType == 1 && targetNode.localName.toUpperCase() == "IMG")
                                  -        {
                                  -            var url = targetNode.src;
                                  -            if (url == this.infoTipURL) // This state cleared in hide()
                                  -                return true;
                                  -
                                  -            this.infoTipURL = url;
                                  -            return Firebug.InfoTip.populateImageInfoTip(infoTip, url);
                                  -        }
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (hasClass(target, "nodeName") || hasClass(target, "nodeValue") || hasClass(target, "nodeBracket"))
                                  -        {
                                  -            if (!this.attrEditor)
                                  -                this.attrEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.attrEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            // XXXjoe Implement special text node editor
                                  -            if (!this.textEditor)
                                  -                this.textEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.textEditor;
                                  -        }
                                  -    },
                                  -
                                  -    getInspectorVars: function()
                                  -    {
                                  -        var vars = {};
                                  -        for (var i=0; i<2; i++)
                                  -            vars["$"+i] = this.inspectorHistory[i];
                                  -
                                  -        return vars;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"},
                                  -                FOR("child", "$object|childIterator",
                                  -                    TAG("$child|getNodeTag", {object: "$child"})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeCloseLabel", role:"presentation"},
                                  -                "&lt;/",
                                  -                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                "&gt;"
                                  -             )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        return getNodeTag(node, true);
                                  -    },
                                  -
                                  -    childIterator: function(node)
                                  -    {
                                  -        if (node.contentDocument)
                                  -            return [node.contentDocument.documentElement];
                                  -
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return cloneArray(node.childNodes);
                                  -        else
                                  -        {
                                  -            var nodes = [];
                                  -            for (var child = node.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                    nodes.push(child);
                                  -            }
                                  -            return nodes;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
                                  -            Firebug.HTMLPanel.CompleteElement.tag
                                  -        ),
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -            {
                                  -                var panel = Firebug.getElementPanel(child);
                                  -                Firebug.chrome.select(child.repObject);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                IMG({"class": "twisty", role: "presentation"}),
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"}),
                                  -            DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -             )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                    SPAN({"class": "nodeText editable"}, "$object|getNodeText"),
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag: AttrTag
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue")
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.WhitespaceNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            FOR("char", "$object|charIterator",
                                  -                    SPAN({"class": "nodeText nodeWhiteSpace editable"}, "$char")
                                  -                    )
                                  -        ),
                                  -    charIterator: function(node)
                                  -    {
                                  -        var str = node.nodeValue;
                                  -        var arr = [];
                                  -        for(var i = 0; i < str.length; i++)
                                  -        {
                                  -            // http://www.w3.org/TR/html401/struct/text.html
                                  -            var char = str[i];
                                  -            switch(char)
                                  -            {
                                  -            case ' ': arr[i] = ' ';break;
                                  -            case '\t': arr[i] = '\\t';break;
                                  -            case '\n': arr[i] = '\\n';break;
                                  -            case '\u200B': arr[i] = '\\u200B';break;  // Zero width space http://www.fileformat.info/info/unicode/char/200b/index.htm
                                  -            default: arr[i] = '?'; break;
                                  -            }
                                  -        }
                                  -        return arr;
                                  -    }
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            "&lt;![CDATA[",
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue"),
                                  -            "]]&gt;"
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            DIV({"class": "nodeComment editable"},
                                  -                "&lt;!--$object.nodeValue--&gt;"
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// AttributeEditor
                                  -
                                  -function AttributeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -/*
                                  -AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var element = Firebug.getRepObject(target);
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        target.innerHTML = escapeHTML(value);
                                  -
                                  -        if (hasClass(target, "nodeName"))
                                  -        {
                                  -            if (value != previousValue)
                                  -                element.removeAttribute(previousValue);
                                  -
                                  -            if (value)
                                  -            {
                                  -                var attrValue = getNextByClass(target, "nodeValue").textContent;
                                  -                element.setAttribute(value, attrValue);
                                  -            }
                                  -            else
                                  -                element.removeAttribute(value);
                                  -        }
                                  -        else if (hasClass(target, "nodeValue"))
                                  -        {
                                  -            var attrName = getPreviousByClass(target, "nodeName").textContent;
                                  -            element.setAttribute(attrName, value);
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            if (element instanceof Element)
                                  -                element.innerHTML = value;
                                  -            else
                                  -                element.nodeValue = value;
                                  -        }
                                  -
                                  -        //this.panel.markChange();
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 61 && hasClass(target, "nodeName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var emptyAttr = {nodeName: "", nodeValue: ""};
                                  -        var sibling = insertWhere == "before" ? target.previousSibling : target;
                                  -
                                  -        return AttrTag.insertAfter({attr: emptyAttr}, sibling);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -// HTMLEditor
                                  -
                                  -function HTMLEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -
                                  -    this.multiLine = true;
                                  -    this.tabNavigation = false;
                                  -    this.arrowCompletion = false;
                                  -}
                                  -
                                  -HTMLEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -        this.editingElements = [target.repObject, null];
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.editingElements;
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // Remove all of the nodes in the last range we created, except for
                                  -        // the first one, because setOuterHTML will replace it
                                  -        var first = this.editingElements[0], last = this.editingElements[1];
                                  -        if (last && last != first)
                                  -        {
                                  -            for (var child = first.nextSibling; child;)
                                  -            {
                                  -                var next = child.nextSibling;
                                  -                child.parentNode.removeChild(child);
                                  -                if (child == last)
                                  -                    break;
                                  -                else
                                  -                    child = next;
                                  -            }
                                  -        }
                                  -
                                  -        // Make sure that we create at least one node here, even if it's just
                                  -        // an empty space, because this code depends on having something to replace
                                  -        if (!value)
                                  -            value = " ";
                                  -
                                  -        if (this.innerEditMode)
                                  -            this.editingElements[0].innerHTML = value;
                                  -        else
                                  -            this.editingElements = setOuterHTML(this.editingElements[0], value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        //this.panel.markChange();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getEmptyElementTag(node)
                                  -{
                                  -    if (node.ownerDocument.documentElement.namespaceURI == "http://www.w3.org/1999/xhtml")
                                  -        return Firebug.HTMLPanel.XEmptyElement.tag;
                                  -    else
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getNodeTag(node, expandAll)
                                  -{
                                  -    if (node instanceof Element)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return getEmptyElementTag(node);
                                  -        else if (node.firebugIgnore)
                                  -            return null;
                                  -        else if (isContainerElement(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (isEmptyElement(node))
                                  -            return getEmptyElementTag(node);
                                  -        else if (hasNoElementChildren(node))
                                  -            return Firebug.HTMLPanel.TextElement.tag;
                                  -        else
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -    }
                                  -    else if (node instanceof Text)
                                  -        return Firebug.showWhitespaceNodes ? Firebug.HTMLPanel.WhitespaceNode.tag : Firebug.HTMLPanel.TextNode.tag;
                                  -    else if (node instanceof CDATASection)
                                  -        return Firebug.HTMLPanel.CDATANode.tag;
                                  -    else if (node instanceof Comment && (Firebug.showCommentNodes || expandAll))
                                  -        return Firebug.HTMLPanel.CommentNode.tag;
                                  -    else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -    else
                                  -        return FirebugReps.Nada.tag;
                                  -}
                                  -
                                  -function getNodeBoxTag(nodeBox)
                                  -{
                                  -    var re = /([^\s]+)NodeBox/;
                                  -    var m = re.exec(nodeBox.className);
                                  -    if (!m)
                                  -        return null;
                                  -
                                  -    var nodeBoxType = m[1];
                                  -    if (nodeBoxType == "container")
                                  -        return Firebug.HTMLPanel.Element.tag;
                                  -    else if (nodeBoxType == "text")
                                  -        return Firebug.HTMLPanel.TextElement.tag;
                                  -    else if (nodeBoxType == "empty")
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getSourceHref(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && element.src)
                                  -        return element.src;
                                  -    else if (tag == "link")
                                  -        return element.href;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function getSourceText(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && !element.src)
                                  -        return element.textContent;
                                  -    else if (tag == "style")
                                  -        return element.textContent;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function isContainerElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    switch (tag)
                                  -    {
                                  -        case "script":
                                  -        case "style":
                                  -        case "iframe":
                                  -        case "frame":
                                  -        case "tabbrowser":
                                  -        case "browser":
                                  -            return true;
                                  -        case "link":
                                  -            return element.getAttribute("rel") == "stylesheet";
                                  -    }
                                  -    return false;
                                  -}
                                  -
                                  -var hasNoElementChildren = function hasNoElementChildren(element)
                                  -{
                                  -    if (element.childElementCount != 0)  // FF 3.5+
                                  -        return false;
                                  -
                                  -    // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
                                  -    // TODO: xxxpedro
                                  -    /*
                                  -    if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
                                  -    {
                                  -        var anonChildren = element.ownerDocument.getAnonymousNodes(element);
                                  -        if (anonChildren)
                                  -        {
                                  -            for (var i = 0; i < anonChildren.length; i++)
                                  -            {
                                  -                if (anonChildren[i].nodeType == 1)
                                  -                    return false;
                                  -            }
                                  -        }
                                  -    }
                                  -    /**/
                                  -    if (FBTrace.DBG_HTML)
                                  -        FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element);
                                  -    return true;
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype isWhitespaceText
                                  -var isWhitespaceText = function isWhitespaceText(node)
                                  -{
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype TODO: create a namespace for all of these functions so
                                  -// they can be called outside of this file.
                                  -function isSourceElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    return tag == "script" || tag == "link" || tag == "style"
                                  -        || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -function isEmptyElement(element)
                                  -{
                                  -    // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
                                  -    // If the DOM has whitespace children, then the element is not empty even if
                                  -    // we decide not to show the whitespace in the UI.
                                  -
                                  -    // XXXsroussey reverted above but added a check for self closing tags
                                  -    if (Firebug.showWhitespaceNodes)
                                  -    {
                                  -        return !element.firstChild && isSelfClosing(element);
                                  -    }
                                  -    else
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return false;
                                  -        }
                                  -    }
                                  -    return isSelfClosing(element);
                                  -}
                                  -
                                  -function findNextSibling(node)
                                  -{
                                  -    if (Firebug.showWhitespaceNodes)
                                  -        return node.nextSibling;
                                  -    else
                                  -    {
                                  -        // only return a non-whitespace node
                                  -        for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -function findElementNameBox(objectNodeBox)
                                  -{
                                  -    return objectNodeBox.getElementsByClassName("nodeTag")[0];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function NodeSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    var walker = new DOMWalker(doc, doc.documentElement);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return findElementNameBox(nodeBox);
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            var target = this.lastRange.startContainer;
                                  -            range = this.lastRange = panelNode.ownerDocument.createRange();
                                  -            range.setStart(target, index);
                                  -            range.setEnd(target, index+text.length);
                                  -
                                  -            row = this.lastRow;
                                  -        }
                                  -
                                  -        if (!range)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -            var search = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = search.find(text, reverse, caseSensitive);
                                  -            range = this.lastRange = search.range;
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function SelectorSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    this.parent = new NodeSearch(text, doc, panelNode, ioBox);
                                  -
                                  -    this.find = this.parent.find;
                                  -    this.reset = this.parent.reset;
                                  -    this.openToNode = this.parent.openToNode;
                                  -
                                  -    try
                                  -    {
                                  -        // http://dev.w3.org/2006/webapi/selectors-api/
                                  -        this.matchingNodes = doc.querySelectorAll(text);
                                  -        this.matchIndex = 0;
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
                                  -    }
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (!this.matchingNodes || !this.matchingNodes.length)
                                  -            return undefined;
                                  -
                                  -        if (reverse)
                                  -        {
                                  -            if (this.matchIndex > 0)
                                  -                return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.matchIndex < this.matchingNodes.length)
                                  -                return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            ioBox.select(node, true, true);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -}
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerPanel(Firebug.HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a4/content/firebug/insideOutBox.js b/tags/firebug1.3a4/content/firebug/insideOutBox.js
                                  deleted file mode 100644
                                  index 5f865d59..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/insideOutBox.js
                                  +++ /dev/null
                                  @@ -1,561 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -/**
                                  - * View interface used to populate an InsideOutBox object.
                                  - *
                                  - * All views must implement this interface (directly or via duck typing).
                                  - */
                                  -FBL.InsideOutBoxView = {
                                  -    /**
                                  -     * Retrieves the parent object for a given child object.
                                  -     */
                                  -    getParentObject: function(child) {},
                                  -
                                  -    /**
                                  -     * Retrieves a given child node.
                                  -     *
                                  -     * If both index and previousSibling are passed, the implementation
                                  -     * may assume that previousSibling will be the return for getChildObject
                                  -     * with index-1.
                                  -     */
                                  -    getChildObject: function(parent, index, previousSibling) {},
                                  -
                                  -    /**
                                  -     * Renders the HTML representation of the object. Should return an HTML
                                  -     * object which will be displayed to the user.
                                  -     */
                                  -    createObjectBox: function(object, isRoot) {}
                                  -};
                                  -
                                  -/**
                                  - * Creates a tree based on objects provided by a separate "view" object.
                                  - *
                                  - * Construction uses an "inside-out" algorithm, meaning that the view's job is first
                                  - * to tell us the ancestry of each object, and secondarily its descendants.
                                  - */
                                  -FBL.InsideOutBox = function(view, box)
                                  -{
                                  -    this.view = view;
                                  -    this.box = box;
                                  -
                                  -    this.rootObject = null;
                                  -
                                  -    this.rootObjectBox = null;
                                  -    this.selectedObjectBox = null;
                                  -    this.highlightedObjectBox = null;
                                  -
                                  -    this.onMouseDown = bind(this.onMouseDown, this);
                                  -    
                                  -    addEvent(box, "mousedown", this.onMouseDown);
                                  -    // TODO: xxxpedro event
                                  -    //box.addEventListener("mousedown", this.onMouseDown, false);
                                  -};
                                  -
                                  -InsideOutBox.prototype =
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(box, "mousedown", this.onMouseDown);
                                  -        // TODO: xxxpedro event
                                  -        //this.box.removeEventListener("mousedown", this.onMouseDown, false);
                                  -    },
                                  -
                                  -    highlight: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.highlightObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openObject: function(object)
                                  -    {
                                  -        var firstChild = this.view.getChildObject(object, 0);
                                  -        if (firstChild)
                                  -            object = firstChild;
                                  -
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openToObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    select: function(object, makeBoxVisible, forceOpen, noScrollIntoView)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.select object:", object);
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.selectObjectBox(objectBox, forceOpen);
                                  -        if (makeBoxVisible)
                                  -        {
                                  -            this.openObjectBox(objectBox);
                                  -            if (!noScrollIntoView)
                                  -                scrollIntoCenterView(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    expandObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    contractObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.contractObjectBox(objectBox);
                                  -    },
                                  -
                                  -    highlightObjectBox: function(objectBox)
                                  -    {
                                  -        if (this.highlightedObjectBox)
                                  -        {
                                  -            removeClass(this.highlightedObjectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                removeClass(highlightedBox, "highlightOpen");
                                  -        }
                                  -
                                  -        this.highlightedObjectBox = objectBox;
                                  -
                                  -        if (objectBox)
                                  -        {
                                  -            setClass(objectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(objectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                setClass(highlightedBox, "highlightOpen");
                                  -
                                  -           scrollIntoCenterView(objectBox);
                                  -        }
                                  -    },
                                  -
                                  -    selectObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox;
                                  -        if (!isSelected)
                                  -        {
                                  -            removeClass(this.selectedObjectBox, "selected");
                                  -            dispatch([Firebug.A11yModel], 'onObjectBoxUnselected', [this.selectedObjectBox]);
                                  -            this.selectedObjectBox = objectBox;
                                  -
                                  -            if (objectBox)
                                  -            {
                                  -                setClass(objectBox, "selected");
                                  -
                                  -                // Force it open the first time it is selected
                                  -                if (forceOpen)
                                  -                    this.toggleObjectBox(objectBox, true);
                                  -            }
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onObjectBoxSelected', [objectBox]);
                                  -    },
                                  -
                                  -    openObjectBox: function(objectBox)
                                  -    {
                                  -        if (objectBox)
                                  -        {
                                  -            // Set all of the node's ancestors to be permanently open
                                  -            var parentBox = this.getParentObjectBox(objectBox);
                                  -            var labelBox;
                                  -            for (; parentBox; parentBox = this.getParentObjectBox(parentBox))
                                  -            {
                                  -                setClass(parentBox, "open");
                                  -                labelBox = getElementByClass(parentBox, 'nodeLabelBox');
                                  -                if (labelBox)
                                  -                    labelBox.setAttribute('aria-expanded', 'true')
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    expandObjectBox: function(objectBox)
                                  -    {
                                  -        var nodeChildBox = this.getChildObjectBox(objectBox);
                                  -        if (!nodeChildBox)
                                  -            return;
                                  -
                                  -        if (!objectBox.populated)
                                  -        {
                                  -            var firstChild = this.view.getChildObject(objectBox.repObject, 0);
                                  -            this.populateChildBox(firstChild, nodeChildBox);
                                  -        }
                                  -        var labelBox = getElementByClass(objectBox, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'true');
                                  -        setClass(objectBox, "open");
                                  -    },
                                  -
                                  -    contractObjectBox: function(objectBox)
                                  -    {
                                  -        removeClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'false');
                                  -    },
                                  -
                                  -    toggleObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isOpen = hasClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', isOpen);
                                  -        if (!forceOpen && isOpen)
                                  -            this.contractObjectBox(objectBox);
                                  -
                                  -        else if (!isOpen)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    getNextObjectBox: function(objectBox)
                                  -    {
                                  -        return findNext(objectBox, isVisibleTarget, false, this.box);
                                  -    },
                                  -
                                  -    getPreviousObjectBox: function(objectBox)
                                  -    {
                                  -        return findPrevious(objectBox, isVisibleTarget, true, this.box);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings.
                                  -     */
                                  -    createObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        this.rootObject = this.getRootNode(object);
                                  -
                                  -        // Get or create all of the boxes for the target and its ancestors
                                  -        var objectBox = this.createObjectBoxes(object, this.rootObject);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBox for object="+formatNode(object)+" got objectBox="+formatNode(objectBox), objectBox);
                                  -        if (!objectBox)
                                  -            return null;
                                  -        else if (object == this.rootObject)
                                  -            return objectBox;
                                  -        else
                                  -            return this.populateChildBox(object, objectBox.parentNode);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings up to a root.
                                  -     */
                                  -    createObjectBoxes: function(object, rootObject)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBoxes("+formatNode(object)+", "+formatNode(rootObject)+")\n");
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == rootObject)
                                  -        {
                                  -            if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject)
                                  -            {
                                  -                if (this.rootObjectBox)
                                  -                {
                                  -                    try {
                                  -                        this.box.removeChild(this.rootObjectBox);
                                  -                    } catch (exc) {
                                  -                        if (FBTrace.DBG_HTML)
                                  -                            FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+this.box+" must not contain "+this.rootObjectBox+"\n");
                                  -                    }
                                  -                }
                                  -
                                  -                this.highlightedObjectBox = null;
                                  -                this.selectedObjectBox = null;
                                  -                this.rootObjectBox = this.view.createObjectBox(object, true);
                                  -                this.box.appendChild(this.rootObjectBox);
                                  -            }
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+formatNode(rootObject)+") rootObjectBox: "
                                  -                                            +this.rootObjectBox, object);
                                  -            }
                                  -            return this.rootObjectBox;
                                  -        }
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getObjectPath(object) ", getObjectPath(object, this.view))
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes view.getParentObject("+formatNode(object)+")=parentNode: "+formatNode(parentNode), parentNode);
                                  -            }
                                  -
                                  -            var parentObjectBox = this.createObjectBoxes(parentNode, rootObject);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+formatNode(parentObjectBox), parentObjectBox);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+formatNode(parentObjectBox)+")= parentChildBox: "+formatNode(parentChildBox)+"\n");
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            var childObjectBox = this.findChildObjectBox(parentChildBox, object);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+formatNode(parentChildBox)+","+formatNode(object)+"): childObjectBox: "+formatNode(childObjectBox), childObjectBox);
                                  -            return childObjectBox
                                  -                ? childObjectBox
                                  -                : this.populateChildBox(object, parentChildBox);
                                  -        }
                                  -    },
                                  -
                                  -    findObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == this.rootObject)
                                  -            return this.rootObjectBox;
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -            var parentObjectBox = this.findObjectBox(parentNode);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            return this.findChildObjectBox(parentChildBox, object);
                                  -        }
                                  -    },
                                  -
                                  -    appendChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var childBox = this.getChildObjectBox(parentNodeBox);
                                  -            childBox.appendChild(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var siblingBox = this.findChildObjectBox(childBox, nextSibling);
                                  -            childBox.insertBefore(objectBox, siblingBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    removeChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            childBox.removeChild(objectBox);
                                  -    },
                                  -
                                  -    populateChildBox: function(repObject, nodeChildBox)  // We want all children of the parent of repObject.
                                  -    {
                                  -        if (!repObject)
                                  -            return null;
                                  -
                                  -        var parentObjectBox = getAncestorByClass(nodeChildBox, "nodeBox");
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("+++insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") parentObjectBox.populated "+parentObjectBox.populated+"\n");
                                  -        if (parentObjectBox.populated)
                                  -            return this.findChildObjectBox(nodeChildBox, repObject);
                                  -
                                  -        var lastSiblingBox = this.getChildObjectBox(nodeChildBox);
                                  -        var siblingBox = nodeChildBox.firstChild;
                                  -        var targetBox = null;
                                  -
                                  -        var view = this.view;
                                  -
                                  -        var targetSibling = null;
                                  -        var parentNode = view.getParentObject(repObject);
                                  -        for (var i = 0; 1; ++i)
                                  -        {
                                  -            targetSibling = view.getChildObject(parentNode, i, targetSibling);
                                  -            if (!targetSibling)
                                  -                break;
                                  -
                                  -            // Check if we need to start appending, or continue to insert before
                                  -            if (lastSiblingBox && lastSiblingBox.repObject == targetSibling)
                                  -                lastSiblingBox = null;
                                  -
                                  -            if (!siblingBox || siblingBox.repObject != targetSibling)
                                  -            {
                                  -                var newBox = view.createObjectBox(targetSibling);
                                  -                if (newBox)
                                  -                {
                                  -                    if (lastSiblingBox)
                                  -                        nodeChildBox.insertBefore(newBox, lastSiblingBox);
                                  -                    else
                                  -                        nodeChildBox.appendChild(newBox);
                                  -                }
                                  -
                                  -                siblingBox = newBox;
                                  -            }
                                  -
                                  -            if (targetSibling == repObject)
                                  -                targetBox = siblingBox;
                                  -
                                  -            if (siblingBox && siblingBox.repObject == targetSibling)
                                  -                siblingBox = siblingBox.nextSibling;
                                  -        }
                                  -
                                  -        if (targetBox)
                                  -            parentObjectBox.populated = true;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("---insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox+"\n");
                                  -
                                  -        return targetBox;
                                  -    },
                                  -
                                  -    getParentObjectBox: function(objectBox)
                                  -    {
                                  -        var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null;
                                  -        return parent && parent.repObject ? parent : null;
                                  -    },
                                  -
                                  -    getChildObjectBox: function(objectBox)
                                  -    {
                                  -        return getElementByClass(objectBox, "nodeChildBox");
                                  -    },
                                  -
                                  -    findChildObjectBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(
                                  -                    "insideOutBox.findChildObjectBox "
                                  -                    +(childBox.repObject == repObject?"match ":"no match ")
                                  -                    +" childBox.repObject: " + (childBox.repObject && (childBox.repObject.localName || childBox.repObject))
                                  -                    +" repObject: " +(repObject && (repObject.localName || repObject))+"\n", childBox);
                                  -            if (childBox.repObject == repObject)
                                  -                return childBox;
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if the given node is an ancestor of the current root.
                                  -     */
                                  -    isInExistingRoot: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -          FBTrace.sysout("insideOutBox.isInExistingRoot for ", node);
                                  -        var parentNode = node;
                                  -        while (parentNode && parentNode != this.rootObject)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(parentNode.localName+" < ", parentNode);
                                  -            var parentNode = this.view.getParentObject(parentNode);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -        }
                                  -        return parentNode == this.rootObject;
                                  -    },
                                  -
                                  -    getRootNode: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.getRootNode for ", node);
                                  -        while (1)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(node.localName+" < ", node);
                                  -            var parentNode = this.view.getParentObject(node);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -
                                  -            if (!parentNode)
                                  -                return node;
                                  -            else
                                  -                node = parentNode;
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    // ********************************************************************************************
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var hitTwisty = false;
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "twisty"))
                                  -                hitTwisty = true;
                                  -            else if (child.repObject)
                                  -            {
                                  -                if (hitTwisty)
                                  -                    this.toggleObjectBox(child);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function isVisibleTarget(node)
                                  -{
                                  -    if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE)
                                  -    {
                                  -        for (var parent = node.parentNode; parent; parent = parent.parentNode)
                                  -        {
                                  -            if (hasClass(parent, "nodeChildBox")
                                  -                && !hasClass(parent.parentNode, "open")
                                  -                && !hasClass(parent.parentNode, "highlightOpen"))
                                  -                return false;
                                  -        }
                                  -        return true;
                                  -    }
                                  -}
                                  -
                                  -function formatNode(object)
                                  -{
                                  -    if (object)
                                  -        return (object.localName ? object.localName : object);
                                  -    else
                                  -        return "(null object)";
                                  -}
                                  -
                                  -function getObjectPath(element, aView)
                                  -{
                                  -    var path = [];
                                  -    for (; element; element = aView.getParentObject(element))
                                  -        path.push(element);
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a4/content/firebug/inspector.js b/tags/firebug1.3a4/content/firebug/inspector.js
                                  deleted file mode 100644
                                  index a991bcb9..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/inspector.js
                                  +++ /dev/null
                                  @@ -1,503 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -            {
                                  -                var target = ""+targ[cacheID];
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0)
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/inspector2.js b/tags/firebug1.3a4/content/firebug/inspector2.js
                                  deleted file mode 100644
                                  index 12925a2a..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/inspector2.js
                                  +++ /dev/null
                                  @@ -1,825 +0,0 @@
                                  -8/29/2007/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -const inspectDelay = 100;
                                  -
                                  -const edgeSize = 2;
                                  -
                                  -const defaultPrimaryPanel = "html";
                                  -const defaultSecondaryPanel = "dom";
                                  -
                                  -var highlightCSS = "chrome://firebug/content/highlighter.css";
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var boxModelHighlighter = null;
                                  -var frameHighlighter = null;
                                  -var popupHighlighter = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Inspector = extend(Firebug.Module,
                                  -{
                                  -    inspecting: false,
                                  -
                                  -    highlightObject: function(element, context, highlightType, boxFrame)
                                  -    {
                                  -        if (!element || !isElement(element) || !isVisible(element))
                                  -            element = null;
                                  -
                                  -        if (element && context && context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        var highlighter = highlightType ? getHighlighter(highlightType) : this.defaultHighlighter;
                                  -
                                  -        var oldContext = this.highlightedContext;
                                  -        if (oldContext && highlighter != this.highlighter)
                                  -        {
                                  -            if (oldContext.window)
                                  -                this.highlighter.unhighlight(oldContext);
                                  -        }
                                  -
                                  -        this.highlighter = highlighter;
                                  -        this.highlightedElement = element;
                                  -        this.highlightedContext = context;
                                  -
                                  -        if (element)
                                  -        {
                                  -            if (context && context.window && context.window.document)
                                  -                highlighter.highlight(context, element, boxFrame);
                                  -        }
                                  -        else if (oldContext)
                                  -        {
                                  -            oldContext.highlightTimeout = oldContext.setTimeout(function()
                                  -            {
                                  -                delete oldContext.highlightTimeout;
                                  -                if (oldContext.window && oldContext.window.document)
                                  -                    highlighter.unhighlight(oldContext);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    toggleInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -        else
                                  -            this.startInspecting(context);
                                  -    },
                                  -
                                  -    startInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting || !context || !context.loaded)
                                  -            return;
                                  -
                                  -        this.inspecting = true;
                                  -        this.inspectingContext = context;
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "true");
                                  -        this.attachInspectListeners(context);
                                  -
                                  -        // Remember the previous panel and bar state so we can revert if the user cancels
                                  -        this.previousPanelName = context.panelName;
                                  -        this.previousSidePanelName = context.sidePanelName;
                                  -        this.previouslyCollapsed = $("fbContentBox").collapsed;
                                  -        this.previouslyFocused = context.detached && context.chrome.isFocused();
                                  -
                                  -        var htmlPanel = context.chrome.selectPanel("html");
                                  -        this.previousObject = htmlPanel.selection;
                                  -
                                  -        if (context.detached)
                                  -            FirebugChrome.focus();
                                  -        else
                                  -            Firebug.showBar(true);
                                  -
                                  -        htmlPanel.panelNode.focus();
                                  -        htmlPanel.startInspecting();
                                  -
                                  -        if (context.hoverNode)
                                  -            this.inspectNode(context.hoverNode);
                                  -    },
                                  -
                                  -    inspectNode: function(node)
                                  -    {
                                  -        if (node && node.nodeType != 1)
                                  -            node = node.parentNode;
                                  -
                                  -        if (node && node.firebugIgnore)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.highlightObject(node, context, "frame");
                                  -
                                  -        this.inspectingNode = node;
                                  -
                                  -        if (node)
                                  -        {
                                  -            this.inspectTimeout = context.setTimeout(function()
                                  -            {
                                  -                // TODO: xxxpedro
                                  -                //if (context.chrome)
                                  -                //    context.chrome.select(node);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(cancelled, waitForClick)
                                  -    {
                                  -        if (!this.inspecting)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.detachInspectListeners(context);
                                  -        if (!waitForClick)
                                  -            this.detachClickInspectListeners(context.window);
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "false");
                                  -
                                  -        this.inspecting = false;
                                  -
                                  -        var htmlPanel = context.getPanel("html");
                                  -
                                  -        if (this.previouslyFocused)
                                  -            context.chrome.focus();
                                  -
                                  -        if (cancelled)
                                  -        {
                                  -            if (this.previouslyCollapsed)
                                  -                Firebug.showBar(false);
                                  -
                                  -            if (this.previousPanelName == "html")
                                  -                context.chrome.select(this.previousObject);
                                  -            else
                                  -                context.chrome.selectPanel(this.previousPanelName, this.previousSidePanelName);
                                  -        }
                                  -        else
                                  -        {
                                  -            context.chrome.select(htmlPanel.selection);
                                  -            context.chrome.getSelectedPanel().panelNode.focus();
                                  -        }
                                  -
                                  -        htmlPanel.stopInspecting(htmlPanel.selection, cancelled);
                                  -
                                  -        this.inspectNode(null);
                                  -
                                  -        delete this.previousObject;
                                  -        delete this.previousPanelName;
                                  -        delete this.previousSidePanelName;
                                  -        delete this.inspectingContext;
                                  -    },
                                  -
                                  -    inspectNodeBy: function(dir)
                                  -    {
                                  -        var target;
                                  -        var node = this.inspectingNode;
                                  -
                                  -        if (dir == "up")
                                  -            target = this.inspectingContext.chrome.getNextObject();
                                  -        else if (dir == "down")
                                  -        {
                                  -            target = this.inspectingContext.chrome.getNextObject(true);
                                  -            if (node && !target)
                                  -            {
                                  -                if (node.contentDocument)
                                  -                    target = node.contentDocument.documentElement;
                                  -                else
                                  -                    target = getNextElement(node.firstChild);
                                  -            }
                                  -        }
                                  -
                                  -        if (target && isElement(target))
                                  -            this.inspectNode(target);
                                  -        else
                                  -            beep();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        this.keyListeners =
                                  -        [
                                  -            chrome.keyCodeListen("RETURN", null, bindFixed(this.stopInspecting, this)),
                                  -            chrome.keyCodeListen("ESCAPE", null, bindFixed(this.stopInspecting, this, true)),
                                  -            chrome.keyCodeListen("UP", isControl, bindFixed(this.inspectNodeBy, this, "up"), true),
                                  -            chrome.keyCodeListen("DOWN", isControl, bindFixed(this.inspectNodeBy, this, "down"), true),
                                  -        ];
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.addEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.addEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -            subWin.document.addEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        if (this.keyListeners)  // XXXjjb for some reason this is null some times.
                                  -        {
                                  -            for (var i = 0; i < this.keyListeners.length; ++i)
                                  -                chrome.keyIgnore(this.keyListeners[i]);
                                  -            delete this.keyListeners;
                                  -        }
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.removeEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachClickInspectListeners: function(win)
                                  -    {
                                  -        // We have to remove the click listener in a second phase because if we remove it
                                  -        // after the mousedown, we won't be able to cancel clicked links
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInspectingMouseOver: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.inspectNode(event.target);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingMouseDown: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.stopInspecting(false, true);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingClick: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.dumpEvent("onInspecting event", event);
                                  -        var win = event.currentTarget.defaultView;
                                  -        if (win)
                                  -        {
                                  -            win = getRootWindow(win);
                                  -            this.detachClickInspectListeners(win);
                                  -        }
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onInspectingMouseOver = bind(this.onInspectingMouseOver, this);
                                  -        this.onInspectingMouseDown = bind(this.onInspectingMouseDown, this);
                                  -        this.onInspectingClick = bind(this.onInspectingClick, this);
                                  -
                                  -        highlightCSS = Env.Location.sourceDir + "firebug/highlighter.css"; 
                                  -        this.inspectingContext = Firebug.browser.window;
                                  -        //this.updateOption("shadeBoxModel", Firebug.shadeBoxModel);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.onPreInspectMouseOver = function(event) { context.hoverNode = event.target; };
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        if (context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        win.addEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try {
                                  -            win.removeEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -        } catch (ex) {
                                  -            // Get unfortunate errors here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -        }
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -
                                  -        if (browser)
                                  -        {
                                  -            var disabled = !context || !context.loaded;
                                  -            browser.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -        }
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        var chrome = browser.chrome;
                                  -        var disabled = !panel || !panel.context.loaded;
                                  -        chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", disabled);
                                  -        chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", "false");
                                  -        context.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", "false");
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "shadeBoxModel")
                                  -        {
                                  -            this.highlightObject(null);
                                  -            this.defaultHighlighter = value ? getHighlighter("boxModel") : getHighlighter("frame");
                                  -        }
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -        var styleSheet = getStyleSheetByHref(url, context);
                                  -        if (styleSheet)
                                  -            return styleSheet;
                                  -
                                  -        /*var path = getURLPath(url);
                                  -        var xpath = "//*[contains(@src, '" + path + "')]";
                                  -        var elements = getElementsByXPath(context.window.document, xpath);
                                  -        if (elements.length)
                                  -            return elements[0];*/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getHighlighter(type)
                                  -{
                                  -    if (type == "boxModel")
                                  -    {
                                  -        if (!boxModelHighlighter)
                                  -            boxModelHighlighter = new BoxModelHighlighter();
                                  -
                                  -        return boxModelHighlighter;
                                  -    }
                                  -    else if (type == "frame")
                                  -    {
                                  -        if (!frameHighlighter)
                                  -            frameHighlighter = new FrameHighlighter();
                                  -
                                  -        return frameHighlighter;
                                  -    }
                                  -    else if (type == "popup")
                                  -    {
                                  -        if (!popupHighlighter)
                                  -            popupHighlighter = new PopupHighlighter();
                                  -
                                  -        return popupHighlighter;
                                  -    }
                                  -}
                                  -
                                  -function pad(element, t, r, b, l)
                                  -{
                                  -    element.style.padding = Math.abs(t) + "px " + Math.abs(r) + "px "
                                  -        + Math.abs(b) + "px " + Math.abs(l) + "px";
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function FrameHighlighter()
                                  -{
                                  -}
                                  -
                                  -FrameHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        //if (element instanceof XULElement)
                                  -        //    return;
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x, y = offset.y;
                                  -        var w = element.offsetWidth, h = element.offsetHeight;
                                  -        if (FBTrace.DBG_INSPECT)
                                  -                FBTrace.sysout("FrameHighlighter HTML tag:"+element.tagName,"x:"+x+" y:"+y+" w:"+w+" h:"+h);
                                  -
                                  -        var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
                                  -        if (FBTrace.DBG_INSPECT && wacked)
                                  -            FBTrace.sysout("FrameHighlighter.highlight has bad boxObject for ", element.tagName);
                                  -        if (wacked)
                                  -            return;
                                  -
                                  -        var nodes = this.getNodes(context, element);
                                  -
                                  -        move(nodes.top, x, y-edgeSize);
                                  -        resize(nodes.top, w, edgeSize);
                                  -
                                  -        move(nodes.right, x+w, y-edgeSize);
                                  -        resize(nodes.right, edgeSize, h+edgeSize*2);
                                  -
                                  -        move(nodes.bottom, x, y+h);
                                  -        resize(nodes.bottom, w, edgeSize);
                                  -
                                  -        move(nodes.left, x-edgeSize, y-edgeSize);
                                  -        resize(nodes.left, edgeSize, h+edgeSize*2);
                                  -        if (FBTrace.DBG_INSPECT)																			/*@explore*/
                                  -            FBTrace.sysout("FrameHighlighter ", element.tagName);											/*@explore*/
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument;
                                  -        if (needsAppend)
                                  -        {
                                  -            if (FBTrace.DBG_INSPECT)																		/*@explore*/
                                  -                FBTrace.sysout("FrameHighlighter needsAppend", nodes.top.ownerDocument.documentURI+" !?= "+body.ownerDocument.documentURI); /*@explore*/
                                  -            attachStyles(context, body);
                                  -            for (var edge in nodes)
                                  -            {
                                  -                try
                                  -                {
                                  -                    body.appendChild(nodes[edge]);
                                  -                }
                                  -                catch(exc)
                                  -                {
                                  -                    if (FBTrace.DBG_INSPECT)                                                                              /*@explore*/
                                  -                        FBTrace.dumpProperties("inspector.FrameHighlighter.highlight FAILS", exc);                     /*@explore*/
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.sysout("FrameHighlighter unhightlight", context.window.location);
                                  -        var nodes = this.getNodes(context);
                                  -        var body = nodes.top.parentNode;
                                  -        if (body)
                                  -        {
                                  -            for (var edge in nodes)
                                  -                body.removeChild(nodes[edge]);
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.frameHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -
                                  -            function createEdge(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugHighlight";
                                  -                return div;
                                  -            }
                                  -
                                  -            context.frameHighlighter =
                                  -            {
                                  -                top: createEdge("Top"),
                                  -                right: createEdge("Right"),
                                  -                bottom: createEdge("Bottom"),
                                  -                left: createEdge("Left")
                                  -            };
                                  -        }
                                  -
                                  -        return context.frameHighlighter;
                                  -    }
                                  -};
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function PopupHighlighter()
                                  -{
                                  -}
                                  -
                                  -PopupHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        var doc = context.window.document;
                                  -        var popup = doc.getElementById("inspectorPopup");
                                  -        popup.style.width = "200px";
                                  -        popup.style.height = "100px";
                                  -        popup.showPopup(element, element.boxObject.screenX,
                                  -            element.boxObject.screenY, "popup", "none", "none");
                                  -        if (FBTrace.DBG_INSPECT)
                                  -        {
                                  -            FBTrace.sysout("PopupHighlighter for "+element.tagName, " at ("+element.boxObject.screenX+","+element.boxObject.screenY+")");
                                  -            FBTrace.dumpProperties("PopupHighlighter popup=", popup);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -    },
                                  -}
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function BoxModelHighlighter()
                                  -{
                                  -}
                                  -
                                  -BoxModelHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element, boxFrame)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        var highlightFrame = boxFrame ? nodes[boxFrame] : null;
                                  -
                                  -        if (context.highlightFrame)
                                  -            removeClass(context.highlightFrame, "firebugHighlightBox");
                                  -
                                  -        context.highlightFrame = highlightFrame;
                                  -
                                  -        if (highlightFrame)
                                  -        {
                                  -            setClass(nodes.offset, "firebugHighlightGroup");
                                  -            setClass(highlightFrame, "firebugHighlightBox");
                                  -        }
                                  -        else
                                  -            removeClass(nodes.offset, "firebugHighlightGroup");
                                  -
                                  -        var win = element.ownerDocument.defaultView;
                                  -        if (!win)
                                  -            return;
                                  -
                                  -        var offsetParent = element.offsetParent;
                                  -        if (!offsetParent)
                                  -            return;
                                  -
                                  -        var parentStyle = win.getComputedStyle(offsetParent, "");
                                  -        var parentOffset = getViewOffset(offsetParent, true);
                                  -        var parentX = parentOffset.x + parseInt(parentStyle.borderLeftWidth);
                                  -        var parentY = parentOffset.y + parseInt(parentStyle.borderTopWidth);
                                  -        var parentW = offsetParent.offsetWidth-1;
                                  -        var parentH = offsetParent.offsetHeight-1;
                                  -
                                  -        var style = win.getComputedStyle(element, "");
                                  -        var styles = readBoxStyles(style);
                                  -
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x - Math.abs(styles.marginLeft);
                                  -        var y = offset.y - Math.abs(styles.marginTop);
                                  -        var w = element.offsetWidth - (styles.paddingLeft + styles.paddingRight
                                  -                + styles.borderLeft + styles.borderRight);
                                  -        var h = element.offsetHeight - (styles.paddingTop + styles.paddingBottom
                                  -                + styles.borderTop + styles.borderBottom);
                                  -
                                  -        move(nodes.offset, x, y);
                                  -        pad(nodes.margin, styles.marginTop, styles.marginRight, styles.marginBottom,
                                  -                styles.marginLeft);
                                  -        pad(nodes.border, styles.borderTop, styles.borderRight, styles.borderBottom,
                                  -                styles.borderLeft);
                                  -        pad(nodes.padding, styles.paddingTop, styles.paddingRight, styles.paddingBottom,
                                  -                styles.paddingLeft);
                                  -        resize(nodes.content, w, h);
                                  -
                                  -        var showLines = Firebug.showRulers && boxFrame;
                                  -        if (showLines)
                                  -        {
                                  -            move(nodes.parent, parentX, parentY);
                                  -            resize(nodes.parent, parentW, parentH);
                                  -
                                  -            if (parentX < 14)
                                  -                setClass(nodes.parent, "overflowRulerX");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerX");
                                  -
                                  -            if (parentY < 14)
                                  -                setClass(nodes.parent, "overflowRulerY");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerY");
                                  -
                                  -            var left = x;
                                  -            var top = y;
                                  -            var width = w-1;
                                  -            var height = h-1;
                                  -
                                  -            if (boxFrame == "content")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft)
                                  -                    + Math.abs(styles.paddingLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop)
                                  -                    + Math.abs(styles.paddingTop);
                                  -            }
                                  -            else if (boxFrame == "padding")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom);
                                  -            }
                                  -            else if (boxFrame == "border")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft);
                                  -                top += Math.abs(styles.marginTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom);
                                  -            }
                                  -            else if (boxFrame == "margin")
                                  -            {
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight)
                                  -                     + Math.abs(styles.marginLeft) + Math.abs(styles.marginRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom)
                                  -                    + Math.abs(styles.marginTop) + Math.abs(styles.marginBottom);
                                  -            }
                                  -
                                  -            move(nodes.lines.top, 0, top);
                                  -            move(nodes.lines.right, left+width, 0);
                                  -            move(nodes.lines.bottom, 0, top+height);
                                  -            move(nodes.lines.left, left, 0)
                                  -        }
                                  -
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.offset.parentNode
                                  -            || nodes.offset.parentNode.ownerDocument != body.ownerDocument;
                                  -
                                  -        if (needsAppend)
                                  -        {
                                  -            attachStyles(context, body);
                                  -            body.appendChild(nodes.offset);
                                  -        }
                                  -
                                  -        if (showLines)
                                  -        {
                                  -            if (!nodes.lines.top.parentNode)
                                  -            {
                                  -                body.appendChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.appendChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -        else if (nodes.lines.top.parentNode)
                                  -        {
                                  -            body.removeChild(nodes.parent);
                                  -
                                  -            for (var line in nodes.lines)
                                  -                body.removeChild(nodes.lines[line]);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        if (nodes.offset.parentNode)
                                  -        {
                                  -            var body = nodes.offset.parentNode;
                                  -            body.removeChild(nodes.offset);
                                  -
                                  -            if (nodes.lines.top.parentNode)
                                  -            {
                                  -                body.removeChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.removeChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.boxModelHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -            if (FBTrace.DBG_ERRORS && !doc) FBTrace.dumpStack("inspector getNodes no document for window:"+window.location);
                                  -
                                  -            function createRuler(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugRuler firebugRuler"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createBox(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutBox firebugLayoutBox"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createLine(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutLine firebugLayoutLine"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            var nodes = context.boxModelHighlighter =
                                  -            {
                                  -                parent: createBox("Parent"),
                                  -                rulerH: createRuler("H"),
                                  -                rulerV: createRuler("V"),
                                  -                offset: createBox("Offset"),
                                  -                margin: createBox("Margin"),
                                  -                border: createBox("Border"),
                                  -                padding: createBox("Padding"),
                                  -                content: createBox("Content"),
                                  -                lines: {
                                  -                    top: createLine("Top"),
                                  -                    right: createLine("Right"),
                                  -                    bottom: createLine("Bottom"),
                                  -                    left: createLine("Left")
                                  -                }
                                  -            };
                                  -
                                  -            nodes.parent.appendChild(nodes.rulerH);
                                  -            nodes.parent.appendChild(nodes.rulerV);
                                  -            nodes.offset.appendChild(nodes.margin);
                                  -            nodes.margin.appendChild(nodes.border);
                                  -            nodes.border.appendChild(nodes.padding);
                                  -            nodes.padding.appendChild(nodes.content);
                                  -        }
                                  -
                                  -        return context.boxModelHighlighter;
                                  -    }
                                  -};
                                  -
                                  -var getNonFrameBody = function getNonFrameBody(elt)
                                  -{
                                  -    var body = getBody(elt.ownerDocument);
                                  -    return body.localName.toUpperCase() == "FRAMESET" ? null : body;
                                  -}
                                  -
                                  -var attachStyles = function attachStyles(context, body)
                                  -{
                                  -    var doc = body.ownerDocument;
                                  -    if (!context.highlightStyle)
                                  -        context.highlightStyle = createStyleSheet(doc, highlightCSS);
                                  -
                                  -    if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc)
                                  -        addStyleSheet(body.ownerDocument, context.highlightStyle);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Inspector);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a4/content/firebug/lib.js b/tags/firebug1.3a4/content/firebug/lib.js
                                  deleted file mode 100644
                                  index 596fceb5..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/lib.js
                                  +++ /dev/null
                                  @@ -1,4419 +0,0 @@
                                  -/*!
                                  - *  Copyright 2009, Firebug Working Group
                                  - *  Released under BSD license.
                                  - *  More information: http://getfirebug.com/lite.html
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyApplication;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")");
                                  -        if (prefs)
                                  -        {
                                  -            FBL.Env.Options.startOpened = prefs.startOpened;
                                  -            FBL.Env.Options.enableTrace = prefs.enableTrace;
                                  -            FBL.Env.Options.enablePersistent = prefs.enablePersistent;
                                  -        }
                                  -        
                                  -        if (FBL.isFirefox && typeof console == "object" && console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -            return;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -
                                  -    FBL.Firebug.loadPrefs(prefs);
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // wait document load
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: false,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.useLocalSkin = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Env.Options.startOpened = true;
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if (innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -            
                                  -            for (var name in innerOptionsObject)
                                  -            {
                                  -                var value = innerOptionsObject[name];
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf("http://getfirebug.com/releases/lite/") != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -}
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -        return ob + "";
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    return elt.offsetWidth > 0 || elt.offsetHeight > 0 || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML";
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        var style = view.getComputedStyle(elt, "");
                                  -
                                  -        if (elt.offsetLeft)
                                  -            coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -        if (elt.offsetTop)
                                  -            coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else if (elt.ownerDocument.defaultView.frameElement)
                                  -            addOffset(elt.ownerDocument.defaultView.frameElement, coords, elt.ownerDocument.defaultView);
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return event.button == 1 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return event.button == 2 && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return event.button == 0 && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, false);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, false);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.dumpProperties(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;"
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is acessible in the window, uses the native instanceof operator
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onFailure     Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -this.Ajax.initialize();
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days)
                                  -    {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else 
                                  -        var expires = "";
                                  -    
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    
                                  -    for(var i=0; i < ca.length; i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/reps.js b/tags/firebug1.3a4/content/firebug/reps.js
                                  deleted file mode 100644
                                  index 04396916..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/reps.js
                                  +++ /dev/null
                                  @@ -1,248 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/reps2.js b/tags/firebug1.3a4/content/firebug/reps2.js
                                  deleted file mode 100644
                                  index 28c70dbe..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/reps2.js
                                  +++ /dev/null
                                  @@ -1,1679 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  diff --git a/tags/firebug1.3a4/content/firebug/script.js b/tags/firebug1.3a4/content/firebug/script.js
                                  deleted file mode 100644
                                  index b8204ec3..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/script.js
                                  +++ /dev/null
                                  @@ -1,273 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    sourceIndex: 0,
                                  -    lastSourceIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectSourceCode(this.sourceIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.sourceIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.sourceIndex = index;
                                  -        this.lastSourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.lastSourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0,
                                  -                    s = [],
                                  -                    sl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                var match = src.match(/\n/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the line number divs
                                  -                for(var c=1, lines; c<=lines; c++)
                                  -                {
                                  -                    s[sl++] = '<div line="';
                                  -                    s[sl++] = c;
                                  -                    s[sl++] = '">';
                                  -                    s[sl++] = c;
                                  -                    s[sl++] = '</div>';
                                  -                }
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                html = html.concat(s); // uses concat instead of string.join() to boost performance 
                                  -                hl = html.length; // adjust the size index
                                  -                html[hl++] = '</div></div>';
                                  -                /**/
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.contentNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }   
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -            this.lastSourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/selector.js b/tags/firebug1.3a4/content/firebug/selector.js
                                  deleted file mode 100644
                                  index e30f627b..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/selector.js
                                  +++ /dev/null
                                  @@ -1,1018 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*!
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/trace.js b/tags/firebug1.3a4/content/firebug/trace.js
                                  deleted file mode 100644
                                  index 02430797..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/trace.js
                                  +++ /dev/null
                                  @@ -1,177 +0,0 @@
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/firebug/tracePanel.js b/tags/firebug1.3a4/content/firebug/tracePanel.js
                                  deleted file mode 100644
                                  index b43cebab..00000000
                                  --- a/tags/firebug1.3a4/content/firebug/tracePanel.js
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/content/notes.txt b/tags/firebug1.3a4/content/notes.txt
                                  deleted file mode 100644
                                  index b08ba3e9..00000000
                                  --- a/tags/firebug1.3a4/content/notes.txt
                                  +++ /dev/null
                                  @@ -1,1219 +0,0 @@
                                  -###################################################################################################
                                  -
                                  -###################################################################################################
                                  -Mutation Events
                                  -http://tobiasz123.wordpress.com/2009/01/19/utilizing-mutation-events-for-automatic-and-persistent-event-attaching/#comments
                                  -
                                  -Revise FBLite issues
                                  -    http://code.google.com/p/fbug/issues/list?can=1&q=owner:pedrosimonetti&sort=-owner+-status&colspec=ID+Type+Status+Owner+Test+Summary&cells=tiles
                                  -
                                  -Reopen issues
                                  -    Console Trace: http://code.google.com/p/fbug/issues/detail?id=394
                                  -    appendNode IE: http://code.google.com/p/fbug/issues/detail?id=225
                                  -
                                  -Stack Trace improvements
                                  -    http://github.com/lsmith/javascript-stack-trace/blob/master/getStackTrace.js
                                  -    http://eriwen.com/javascript/js-stack-trace/
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4 IMPORTANT TODOs
                                  -###################################################################################################
                                  -
                                  -  - Panel Interfaces 
                                  -          - initialize / initializeNode / show / hide
                                  -
                                  -  - Contexts
                                  -          - TabWatcher and TabContext - what exactly are they?
                                  -
                                  -  - Data Sharing / Cache
                                  -
                                  -  - Chrome Synchronization
                                  -        ~~  - divide sync proccess into separated functions
                                  -        ok  - move FirebugApplication to Firebug namespace
                                  -
                                  -  - Panel as Controller?
                                  -
                                  -  - SidePanelBar
                                  -        sidePanel group? to show/hide multiple tabs
                                  -            OK - NO. PANEL inherits SIDEPANELBAR
                                  -
                                  -  - OK - domplate uses 2 global namespaces: domplate, DomplateTag
                                  -
                                  -  - Computed Styles
                                  -
                                  -  - Console "multiline" sidePanel????
                                  -
                                  -  - CSS "Run CSS" sidePanel????
                                  -
                                  -  - Use "offline" mode when switching panels (to avoid loose any message)?    
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.2 / 1.3 diff
                                  -###################################################################################################
                                  -
                                  -    General
                                  -        Performance
                                  -        Modularity
                                  -        Accuracy
                                  -        Compatibility (cross-browser, XHTML and XML+XSL, and cross-iframe in the future)
                                  -
                                  -    User Interface
                                  -        Recreation of Firebug 1.3 User Interface with pixel precision
                                  -        Recreation of Firebug's Visual Object Representation (aka Reps)
                                  -        Resizable sidePanel
                                  -        Skinnable Interface
                                  -        Skin in separated file, making easier to tweak the Interface or add new elements.
                                  -
                                  -    Inspector
                                  -        BoxModel highlight
                                  -
                                  -    Console
                                  -        console.group() and console.groupEnd()
                                  -        console.trace()
                                  -        console command line API functions $(), $$(), and dir()
                                  -        autocomplete (tab, shift+tab)
                                  -        can capture console messages before DOM document creation (scripts attached to HTML header) 
                                  -
                                  -    Core
                                  -        Port most of the Firebug Library (aka Lib, FBL)
                                  -        Port the Firebug DOM Templates Engine (aka Domplate), the magic behind Reps
                                  -        Plugin system like Firebug
                                  -        Context-independent (will allow cross-iframe debugging, and persistent popups)
                                  -        Synchronization across different windows (iframe, popup)
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.4?
                                  -###################################################################################################
                                  -    cross-iframe
                                  -    persistent popups
                                  -    inherited styles
                                  -    live edit
                                  -    live highlight dom changes?
                                  -    unit tests
                                  -    Panel options menu
                                  -    Context menu
                                  -    tooltips (CSS color, images)
                                  -    Layout Ruler
                                  -
                                  -###################################################################################################
                                  - Firebug Lite Future
                                  -###################################################################################################
                                  -
                                  -High level of portability
                                  -    - Lib
                                  -    - Domplate
                                  -    - Reps
                                  -    - InsideOutBox
                                  -    - Inspector
                                  -    - Infotip?
                                  -
                                  -Mid level of portability
                                  -    - Console
                                  -    - HTML
                                  -    - DOM
                                  -    - CSS?
                                  -    - tabContext?
                                  -    - tabWatcher?
                                  -
                                  -Low level of portability
                                  -    - Script
                                  -    
                                  -    - Chrome
                                  -    - Selector
                                  -    - Trace
                                  -
                                  -
                                  -###################################################################################################
                                  - Major changes between Firebug and Firebug Lite codebase
                                  -###################################################################################################
                                  -    addEvent/removeEvent
                                  -    instanceof
                                  -    scope problem (local named functions)
                                  -    "top" scope
                                  -    panel activation
                                  -    
                                  -    same application instance running across all tabs?
                                  -
                                  -
                                  -###################################################################################################
                                  -
                                  -Application --> Env
                                  -
                                  -- Firebug
                                  -    - Env
                                  -        - browser
                                  -        - chrome
                                  -        
                                  -        - create()
                                  -        - destroy()
                                  -        - initialize()
                                  -    
                                  -        - Settings
                                  -            - openAtStartup
                                  -            
                                  -            - isPersistent
                                  -            - isLocal
                                  -            - isTrace
                                  -            - isDevelopment
                                  -        
                                  -        - Location
                                  -            - app
                                  -            - baseDir
                                  -            - skin
                                  -            - skinDir
                                  -            - source
                                  -        
                                  -        - Cache
                                  -            - synchronize()
                                  -            
                                  -            - Chrome (ex-FirebugChrome)
                                  -                - selectedPanel
                                  -                - ...
                                  -                
                                  -            - HTML
                                  -                - element
                                  -                
                                  -            - CSS
                                  -                - source
                                  -                
                                  -            - Script
                                  -                - source
                                  -        
                                  -
                                  -FirebugChrome (called only once!)
                                  -    create --> App.create
                                  -    initialize --> App.create
                                  -    clone --> Cache.synchronize()
                                  -
                                  -FirebugChrome --> Data/Cache
                                  -
                                  -Firebug.SharedData
                                  -Firebug.GlobalCache
                                  -
                                  -
                                  -SharedData
                                  -    - setting1
                                  -    - setting2
                                  -    - setting3
                                  -    
                                  -    - Cache
                                  -        - HTML
                                  -            - element
                                  -            
                                  -        - CSS
                                  -            - source
                                  -            
                                  -        - Script
                                  -            - source
                                  -            
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4
                                  -###################################################################################################
                                  -
                                  -Lib
                                  -    general source name and path functions
                                  -    general cache
                                  -    
                                  -    "FirebugChrome" shared memory name
                                  -    "Application" name
                                  -
                                  -
                                  -Console
                                  -    Issue 394: implemented console.trace() provided by a contributor's patch (dongryphon).
                                  -
                                  -
                                  -Script
                                  -    Cache source code
                                  -
                                  -Reps
                                  -    Issue 225: appendNode in Internet explorer should ony serialize 'real' attributes, fixed by contributor's patch (christophe.blin).
                                  -    
                                  -CSS
                                  -    Add AJAX request
                                  -    Cache source code
                                  -
                                  -
                                  -Chrome
                                  -    Panel remember scroll position
                                  -    Better detach and reattach methods
                                  -    change chrome sync - 
                                  -        only use innerHTML for logging panels (console/trace), rebuild the whole panel runs faster.
                                  -    
                                  -
                                  -DOM
                                  -    change DOM time skip frame technique
                                  -        treshold should be duration time, not number of operations (freezes on slow computers/browsers)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a5
                                  -###################################################################################################
                                  -DOM improve
                                  -
                                  -HTML SidePanel Controller
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a6
                                  -###################################################################################################
                                  -DOM improve
                                  -
                                  -HTML Style SidePanel
                                  -HTML DOM SidePanel
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a7
                                  -###################################################################################################
                                  -DOM improve
                                  -
                                  -DOM select Element
                                  -
                                  -Console
                                  -  DOM view inside Console
                                  -  click on DOM element --> goto DOM
                                  -  click on HTML element --> goto HTML
                                  -
                                  -###################################################################################################
                                  -###################################################################################################
                                  -
                                  -IE 6: gzip + ETag != If-None-Match
                                  -http://abstractfinal.blogspot.com/2007/05/ie-6-gzip-etag-if-none-match.html
                                  -
                                  -JavaScript + Frames + IE 6 + gzip + “no-cache†Header = Trouble
                                  -http://www.akmattie.net/blog/2007/11/10/javascript-frames-ie-6-gzip-no-cache-header-trouble/
                                  -
                                  -IE problems
                                  -http://www.julienlecomte.net/blog/2007/08/13/#comment-258
                                  -
                                  -
                                  -http://support.microsoft.com/kb/321722/EN-US/
                                  -http://support.microsoft.com/default.aspx?scid=kb;LN;Q312496
                                  -http://support.microsoft.com/default.aspx?scid=kb;en-us;823386&Product=ie600
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a3
                                  -###################################################################################################
                                  -    - settings
                                  -        - url settings "remote"/"local" should be replace
                                  -            remote - should be the default
                                  -            local - should be replace by "dev"
                                  -
                                  -    - getfirebug release instructions page
                                  -        - what to test?
                                  -            - bookmarlet
                                  -            - UI
                                  -                - positioning
                                  -                - display
                                  -                - resizing
                                  -                - popup loading
                                  -                - popup/frame synchronization
                                  -                
                                  -            - different scenarios (XHTML, XSL+XML)
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a4
                                  -###################################################################################################
                                  -    - DOM Panel
                                  -    - basic doc? 
                                  -    - settings
                                  -    - getLocation - split('/') method
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a5
                                  -###################################################################################################
                                  -    - Computed Style Panel
                                  -    - CSS Panel
                                  -
                                  -###################################################################################################
                                  -Firebug Lite 1.3a6
                                  -###################################################################################################
                                  -    - Script Panel
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Versions
                                  -###################################################################################################
                                  -    Firebug 1.3a3 - Revision: 4882
                                  -    Firebug 1.3a2 - Revision: 3847
                                  -
                                  -    
                                  -###################################################################################################
                                  -BUGS
                                  -###################################################################################################
                                  -    - context.evaluate
                                  -    
                                  -    - define FBL.console to point to the global console
                                  -    
                                  -    - console should be installed in each Chrome window
                                  -    
                                  -    - commandLine API should be place in console.firebuglite.commandLineAPI
                                  -    
                                  -    - commandLine API not well defined, when in persistent mode
                                  -
                                  -    - When loading the bookmarlet in IE it shows a security warning
                                  -        https://www.google.com/accounts/ServiceLogin?service=adwords&cd=null&hl=en-US&ltmpl=adwords&passive=true&ifr=false&alwf=true&continue=https%3A%2F%2Fadwords.google.com%2Fselect%2Fgaiaauth%3Fapt%3DNone%26ugl%3Dtrue&sourceid=awo&subid=ww-en-et-ads-0-adsC-all
                                  -
                                  -    - problem with IE and and frame.close() function that uses $(). picking wrong window in persistent mode.
                                  -    
                                  -    - "close tag" node (</div>) should not be selectable, instead, when clicked it should select
                                  -      the "open tag" node (<div>).
                                  -    
                                  -    - remove events added in disableTextSelection
                                  -
                                  -    - rename the id "FirebugChrome" to "FirebugFrame" or "FirebugChromeFrame" or "FirebugWindow"
                                  -    
                                  -    - window.onerror is being turned off when UI is minimized (and should not)
                                  -    
                                  -    - put IE6CSS in injected chrome
                                  -    
                                  -OK  - context is not being properly handled in persistent mode, when using
                                  -      the autocomplete function in commandLine. It is using the wrong "window".
                                  -      
                                  -OK  - tabLStyle reference in Chrome
                                  -
                                  -OK  - commandLine API. Firebug.browser isn't avaiable when the library is initialized
                                  -    
                                  -OK  - Chrome options inheritance (extend) is not working as expected
                                  -
                                  -OK  - Popup in IE, problem in the draw method
                                  -
                                  -OK  - when NOT in injected mode, the new application load system doesn't work.
                                  -
                                  -OK  - when in injected DEVELOPMENT mode, in XHTML documents, Google Chrome
                                  -      is having problems with the loading order of the multiple scripts.
                                  -
                                  -OK  - IE6 and problem with CSS. Selected element in HTML Tree.
                                  -    
                                  -OK  - bookmarlet fail in getfirebug.com/lite.html
                                  -    
                                  -OK  - reference to wrong URL in var inspectFrameStyle in Inspector module.
                                  -     
                                  -OK  - nodeControl in HTMLTree should not fire the node highlight (include rule in delegation func)
                                  -    
                                  -1.4 - The CSS rule of popup hide the "main controls" element, but the search box is inside of it
                                  -      and is getting hidden 
                                  -
                                  -
                                  -###################################################################################################
                                  -Domplate/Reps
                                  -###################################################################################################
                                  -
                                  -    IE6:
                                  -        - create special rules to IE6 in a separated file
                                  -
                                  -    Opera:
                                  -        - native function: "prototype" in fn == true && listed in for..in
                                  -        - user function: "prototype" in fn == true && not listed in for..in
                                  -
                                  -      
                                  -
                                  -###################################################################################################
                                  -Preferences Brainstorm
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Preferences
                                  ----------------------------------------------------------------------------------------------------
                                  -<script>
                                  -Firebug.loadPrefs({
                                  -    Chrome: {
                                  -        skin: "xp",
                                  -        height: 400
                                  -    }
                                  -});
                                  -</script>
                                  -
                                  -    - Console
                                  -        - override (for non-FF browsers)
                                  -
                                  -    - HTML
                                  -        - ?
                                  -        - ignoreFirebugElements
                                  -    
                                  -    - DOM
                                  -        - show DOM members
                                  -        - ...
                                  -
                                  -    - Chrome
                                  -        - open
                                  -        - type
                                  -        - skin
                                  -        
                                  -        - Frame
                                  -            - height
                                  -    
                                  -        - Popup
                                  -            - top
                                  -            - left
                                  -            - width
                                  -            - height
                                  -
                                  -    - Application
                                  -        - publish
                                  -        - remote
                                  -        - persist
                                  -        - trace: "all"
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Application Preferences
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    ------------------
                                  -    chrome
                                  -    ------------------
                                  -    - trace
                                  -    - popup
                                  -    
                                  -    - frame
                                  -        - height
                                  -        
                                  -    - popup
                                  -        - height
                                  -        - width (popup only)
                                  -        - top (popup only)
                                  -        - left (popup only)
                                  -
                                  -    - skin
                                  -    
                                  -    - override
                                  -
                                  -    ------------------
                                  -    modes
                                  -    ------------------
                                  -    - trace
                                  -    - persist
                                  -
                                  -
                                  -========================================================================
                                  -===== Chrome States ====================================================
                                  -========================================================================
                                  -
                                  -===== Window ===========================================================
                                  -    - type (frame, popup)
                                  -    - height
                                  -    - width (popup)
                                  -    - position (popup)
                                  -
                                  -===== Console ==========================================================
                                  -    - console commandLine history
                                  -
                                  -===== Tab ==============================================================
                                  -  - active Panel
                                  -
                                  -
                                  -
                                  -========================================================================
                                  -===== Panel States =====================================================
                                  -========================================================================
                                  -    - offset (scroll position)
                                  -    - toolbarButtons
                                  -    - statusBar
                                  -    
                                  -    - isSearchable
                                  -    - busca
                                  -    
                                  -    - consoleVisible
                                  -    - sidePanelVisible
                                  -
                                  -===== SidePanel =======================================================
                                  -    - offset (scroll position)
                                  -    - sidePanelWidth
                                  -    - activeSidePanel
                                  -
                                  -
                                  -
                                  -    
                                  -###################################################################################################
                                  -Statistics
                                  -###################################################################################################
                                  -    Use Google Analytics to track Firebug Lite statistics.
                                  -    It could run inside the Chrome iframe (no global pollution).
                                  -    Not called when used locally, included when in development mode.
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -XML + XSL
                                  -###################################################################################################
                                  -Opera doesn't have document.elementFromPoint in XML documents
                                  -
                                  -revise the use of createElement and createGlobalElement
                                  -    createElement --> createChromeElement
                                  -    createGlobalElement --> createElement
                                  -
                                  -
                                  -###################################################################################################
                                  -Missing
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Chrome context synchronize
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - frame.isVisible --> isOpen?
                                  -OK  - Firebug.chromeMap.frame & Firebug.chromeMap.popup
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Popup
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - problem with global events when in popup window
                                  -      add/removeGlobalEvent looks for iframes only, excluding popup windows.
                                  -      
                                  -    - Frame/Popup settings
                                  -    
                                  -OK  - Synchronize chromes
                                  -        
                                  -    OK  - detach and reattach methods
                                  -    
                                  -    OK  - dispatch detach and reattach methods to panels  
                                  -    
                                  -    OK  - Chrome Frame should have different states and handlers when in minichrome mode
                                  -        
                                  -    OK  - mini-chrome should be "spans" and not "divs"
                                  -        
                                  -    OK  - onPressF12 should not be disabled when chrome frame closes
                                  -        
                                  -    OK  - refactor panel. each panel should have a single panelContentNode that will be shared
                                  -          across Chrome windows.
                                  -          
                                  -    OK  - divide Chrome.initialize and Chrome.create. addPanel() should be added only in create()
                                  -        
                                  -    OK  - margin in HTML tree isn't being synchronized
                                  -        
                                  -    OK  - selected element in HTML tree isn't being synchronized
                                  -    
                                  -Seems to be fixed - popup chrome in Opera isn't being initialized when NOT in bookmarlet mode. 
                                  -      Maybe the best way to detect when the chrome is loaded is the Joe Hewitt old way putting 
                                  -      JS in the end of HTML body. This is not a major issue since bookmarlet mode will be
                                  -      allways active when in production.
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Loading
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Firebug.initialize should
                                  -        - create console namespace
                                  -    
                                  -    - window onerror - wrong time 
                                  -    
                                  -    - Check the initializing order. 
                                  -    
                                  -OK  - Console.create() is being called in the wrong time
                                  -    
                                  -OK  - Check create() and initialize() methods of Modules and Panels.
                                  -    OK  - HTML panel create() will be called twice (1 for frame and 1 for popup)
                                  -    
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Panel event delegation?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Preferences?
                                  ----------------------------------------------------------------------------------------------------
                                  -    - FBL.application
                                  -    - FBL.preferences
                                  -    
                                  -
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Tool Buttons
                                  ----------------------------------------------------------------------------------------------------
                                  -OK  - toolButtons
                                  -    OK  - default button
                                  -    OK  - toggle button (inspect, edit html)
                                  -    
                                  -OK  - inherits from Controller
                                  -OK  - it has one of 2 types (normal and toggle buttons)
                                  -OK  - it has, on a giving time, one of 2 states (pressed, and unpressed)
                                  -    
                                  -    - button location: Fixed buttons (inspect) and Panel buttons 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  - UI
                                  ----------------------------------------------------------------------------------------------------
                                  - OK - IE problem with Console and Trace panels. Scroll isnt working!!
                                  -      maybe a dummy div solves the problem? because the HTML has one, and scrolls fine
                                  -    
                                  - OK - IE problem with tree node control positioning [+]
                                  -     OK - fix is to use absolute position in the control and the left and right panels
                                  -          need to check the z-indexes of the overall interface.
                                  -
                                  - 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  - DOM
                                  ----------------------------------------------------------------------------------------------------
                                  - 
                                  -Sorting Order:
                                  -    First letter uppercase
                                  -    underscore followed by uppercase letter
                                  -    underscore followed by lowercase letter
                                  -    First letter lowercase
                                  -
                                  -
                                  -###################################################################################################
                                  -User Interface
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -General
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Where exactly the errors indicator should be placed in the UI?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -MiniChrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - 
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Skins
                                  ----------------------------------------------------------------------------------------------------
                                  -     OK - port changes in XP skin to the "classic" and "light" ones
                                  -     
                                  -    1.4 - divide .css files? so new skins can be easier to write, and changes in UI can be easily 
                                  -          ported across skins 
                                  -        
                                  -    1.4 - each skin has in his own folder a file called "firebug.json" (or similar)
                                  -    1.4 - improve the build skin methods in FBDev
                                  -    1.4 - loadJSON method
                                  -    1.4 - loadSkin method
                                  -
                                  -
                                  -###################################################################################################
                                  -TODO's
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -ScrollArea Class
                                  ----------------------------------------------------------------------------------------------------
                                  -    - isScrolled
                                  -    - isVerticalScrolled
                                  -    - isHorizontalScrolled
                                  -    - isScrolledToBottom
                                  -    - scrollToElement(el)
                                  -    - isElementVisible(el)
                                  -    - interceptMouseWheel
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Interface
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Highlighted nodes in HTML tree with round corners (with OS color)
                                  -        - current implementation isn't good (it uses both CSS hack and JS)
                                  -        - Opera round corner SVG trick
                                  -        - best way to go is dynamically create a CSS rule according each browser 
                                  -    
                                  -    - UI styling
                                  -        - (?) detect Windows theme (XP or classic?)
                                  -        - (?) detect OS (windows or mac?)
                                  -    
                                  -    - error UI indications (like FB in status bar)
                                  -OK  - UI indication when chrome is hidden
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Opera problem with onunload and popups (context is not being destroyed)
                                  - OK - frame, frameStyle, consoleFrame, consoleBody
                                  - 
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Controllers
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) add option to skip frames
                                  - OK - add controllers Class
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) How to proceed when the console global variable is already defined?
                                  -    - (?) how to auto-load FirebugLite + Extension in a single bookmarlet?
                                  -    
                                  -    - custom Errors = throw new FirebugError("message")
                                  -    - better location detection to allow advanced settings via URL 
                                  - OK - create/destroy, initialize/shutdown. rename functions to this pattern.
                                  - OK - context
                                  - OK - library loading in different windows
                                  - ~~ - persitent popups
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Problem with id conflits. The same attribute is being used in the document
                                  -      elements and in the HTML Tree, in the user interface.
                                  -
                                  - OK - Better handling of switching tab contexts (selectedTab, rightPanelVisible)
                                  -    - Check if there's a problem using the Sizzle selector engine in the code
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Lib
                                  ----------------------------------------------------------------------------------------------------
                                  -OK FBL.$
                                  -OK FBL.$$
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Console
                                  ----------------------------------------------------------------------------------------------------
                                  -  $0
                                  -  $1
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Events
                                  ----------------------------------------------------------------------------------------------------
                                  - OK - use of dispatch
                                  - OK - handle disble text selection on Vertical Scrolling
                                  -    - handle disble mouse wheel in Chrome, when in frame mode?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -CommandLine
                                  ----------------------------------------------------------------------------------------------------
                                  -    - refactor commandLine to hide internal methods and properties.
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -FBL 1.4
                                  -###################################################################################################
                                  -    - Tests
                                  -        - Unit Tests
                                  -        - Manual Tests
                                  -        - Test generation?
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug
                                  -###################################################################################################
                                  -Domplate (crossport to FB) Fixed accidental global variable declaration in the compiled string.
                                  -
                                  -
                                  -###################################################################################################
                                  -Firebug bugs
                                  -###################################################################################################
                                  -
                                  -Reps - r1088 - Array
                                  -http://code.google.com/p/fbug/source/browse/branches/firebug1.3/content/firebug/reps.js?spec=svn1222&r=1088
                                  -
                                  -Global:
                                  -http://code.google.com/p/fbug/issues/detail?id=1017&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Gmail:
                                  -http://code.google.com/p/fbug/issues/detail?id=1977&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Form freak:
                                  -http://code.google.com/p/fbug/issues/detail?id=534&q=array&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -BRAINSTORMING SECTION
                                  -###################################################################################################
                                  -###################################################################################################
                                  -###################################################################################################
                                  -
                                  -###################################################################################################
                                  -getPixelValue
                                  -###################################################################################################
                                  -Dean Edwards:
                                  -http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value) {
                                  -if (PIXEL.test(value)) return parseInt(value);
                                  -var style = element.style.left;
                                  -var runtimeStyle = element.runtimeStyle.left;
                                  -element.runtimeStyle.left = element.currentStyle.left;
                                  -element.style.left = value || 0;
                                  -value = element.style.pixelLeft;
                                  -element.style.left = style;
                                  -element.runtimeStyle.left = runtimeStyle;
                                  -return value;
                                  -};
                                  -
                                  -
                                  -window.PIXEL=/^\d+(px)?$/i, window.getPixelValue=function (element, value) {if (PIXEL.test(value)) return parseInt(value);var style = element.style.left;var runtimeStyle = element.runtimeStyle.left;element.runtimeStyle.left = element.currentStyle.left;element.style.left = value || 0;value = element.style.pixelLeft;element.style.left = style;element.runtimeStyle.left = runtimeStyle;return value;};
                                  -
                                  -###################################################################################################
                                  -Library Expose
                                  -###################################################################################################
                                  -    - if a FBLite extension can be dynamically loaded, the FBL namespace should be exposed 
                                  -    - if the FBL is exposed inside the iframe, it is less visible, and less conflictable 
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -FB vs FBLite
                                  -###################################################################################################
                                  -
                                  -FB
                                  -    - Each Panel has its own window
                                  -    - A single Firebug application run across all browser tabs
                                  -    - The Firebug application is persistent, that is, it can live after page change, or reload 
                                  -
                                  -FBLite
                                  -    - All Chrome Panels runs in the same window, the chrome window
                                  -    - The FirebugLite application run in a single browser tab
                                  -    - The Firebug application isn't persistent 
                                  -
                                  -
                                  -###################################################################################################
                                  -Chrome Design
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - {?) panelControl
                                  -    - panelBar
                                  -    - panel // active panel
                                  -    
                                  -    - sidePanel // active side panel
                                  -    - commandLine
                                  -
                                  -
                                  -    - selectPanel()
                                  -    - selectSidePanel()
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Panel
                                  ----------------------------------------------------------------------------------------------------
                                  -    - {?) panelControl
                                  -    - panelBar
                                  -    
                                  -    - sidePanel // active side panel
                                  -    - commandLine
                                  -    
                                  -    
                                  -    - isVisible // may be offline, in a documentFragment
                                  -    - show
                                  -    - hide
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -PanelControl
                                  ----------------------------------------------------------------------------------------------------
                                  -    - registerPanel
                                  -    - removePanel
                                  -    - removePanels
                                  -    - selectPanel
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -PanelBar
                                  ----------------------------------------------------------------------------------------------------
                                  -    - selectPanel()
                                  -    
                                  -
                                  -###################################################################################################
                                  -Persistent Mode
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Loading Process
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -1st Stage - Load the application in "offscreen mode", with only the console 
                                  -            functions available.
                                  -
                                  -2nd Stage - Wait the page load, and then create the chrome window
                                  -            (frame or popup, based on preferences).
                                  -
                                  -3rd Stage - Wait the chrome page load, and the install the application
                                  -            in the chrome window context.
                                  -
                                  -4th Stage - Load the full application in chrome window, synchronizes it with
                                  -            the first application loaded, and transfer the console
                                  -            functions to the new "screen mode" application.
                                  -
                                  -----------------------------------
                                  -Pros
                                  ----------------------------------------------------------------------------------------------------
                                  -    More safe
                                  -        - no global namespace pollution, except for the "console" variable
                                  -        - no internal code exposure
                                  -    
                                  -    Allows persistent popups
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Cons
                                  ----------------------------------------------------------------------------------------------------
                                  -    More complex
                                  -    More difficult to debug low level functions
                                  -    less stable?
                                  -
                                  -
                                  -###################################################################################################
                                  - Debugger
                                  -###################################################################################################
                                  -MSIE Script Debugger Sample
                                  -http://msdn.microsoft.com/en-us/magazine/cc301316.aspx
                                  -
                                  -
                                  -###################################################################################################
                                  - Inherited Styles
                                  -###################################################################################################
                                  -
                                  -    Some of that functionality is built into DOM Inspector, but you can look at 
                                  -    the parts that Firebug does itself.
                                  -
                                  -    In lib.js there is a list of properties ("inheritedStyleNames") that can 
                                  -    be automatically inherited, so for a given element it looks for such 
                                  -    properties in the rules being applied to each ancestor. 
                                  -    (That list doesn't include the special print or aural properties.)
                                  -
                                  -    The table here (http://www.w3.org/TR/CSS21/propidx.html) shows 
                                  -    which properties are inherited by default.
                                  -
                                  -    "updateCascadeView" in css.js will also be of interest.
                                  -
                                  -    Via http://code.google.com/p/fbug/source/browse/ you can look at the files:
                                  -
                                  -    branches/firebug1.2/content/firebug/css.js
                                  -    branches/firebug1.2/content/firebug/lib.js
                                  -    
                                  -    ----------------------------------------------------------------------------
                                  -
                                  -    Full CSS property table
                                  -    http://www.w3.org/TR/CSS21/propidx.html
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -To organize
                                  -###################################################################################################
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Document Cache
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -[ELEMENT_ID]
                                  -    - element
                                  -    - context
                                  -    - styles
                                  -    - MD5
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -DOMPLATE
                                  ----------------------------------------------------------------------------------------------------
                                  -IE problems with templates
                                  -
                                  -1 - class name attributes of objects
                                  -
                                  -2 - colon after the last property of a object
                                  -
                                  -3 - event handlers  
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Disable Text Selection
                                  -###################################################################################################
                                  -
                                  -<script language="JavaScript1.2">
                                  -
                                  -function disabletext(e){
                                  -return false
                                  -}
                                  -
                                  -function reEnable(){
                                  -return true
                                  -}
                                  -
                                  -//if the browser is IE4+
                                  -document.onselectstart=new Function ("return false")
                                  -
                                  -//if the browser is NS6
                                  -if (window.sidebar){
                                  -document.onmousedown=disabletext
                                  -document.onclick=reEnable
                                  -}
                                  -</script>
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -XPATH
                                  -###################################################################################################
                                  -
                                  -function getXPath(node, path) {
                                  -  path = path || [];
                                  -  if(node.parentNode) {
                                  -    path = getXPath(node.parentNode, path);
                                  -  }
                                  -
                                  -  if(node.previousSibling) {
                                  -    var count = 1;
                                  -    var sibling = node.previousSibling
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;}
                                  -      sibling = sibling.previousSibling;
                                  -    } while(sibling);
                                  -    if(count == 1) {count = null;}
                                  -  } else if(node.nextSibling) {
                                  -    var sibling = node.nextSibling;
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {
                                  -        var count = 1;
                                  -        sibling = null;
                                  -      } else {
                                  -        var count = null;
                                  -        sibling = sibling.previousSibling;
                                  -      }
                                  -    } while(sibling);
                                  -  }
                                  -
                                  -  if(node.nodeType == 1) {
                                  -    path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : ''));
                                  -  }
                                  -  return path;
                                  -};
                                  -
                                  -
                                  -// Getting result
                                  -document.evaluate("/html/body/div/ul/li[2]", document, null, XPathResult.ANY_TYPE, null ).iterateNext()
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -DomPlate changes pieces
                                  -###################################################################################################
                                  -
                                  -//Returns true if it is a DOM node
                                  -function isNode(o){
                                  -  return (
                                  -    typeof Node === "object" ? o instanceof Node : 
                                  -    typeof o === "object" && typeof o.nodeType === "number" && typeof o.nodeName==="string"
                                  -  );
                                  -}
                                  -
                                  -//Returns true if it is a DOM element    
                                  -function isElement(o){
                                  -  return (
                                  -    typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2
                                  -    typeof o === "object" && o.nodeType === 1 && typeof o.nodeName==="string"
                                  -);
                                  -}
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  -Advanced CSS Features brainstorm
                                  -###################################################################################################
                                  -
                                  -
                                  -styleCache = {};
                                  -
                                  -// First style to add to cache is the inline styles
                                  -for(cid in documentCache)
                                  -{
                                  -    styleCache[cid] = [];
                                  -    styleCache[cid].push();
                                  -}
                                  -
                                  -// for each stylesheet 
                                  -for(stylesheet in stylesheets)
                                  -{
                                  -    // look at each rule
                                  -    for(rule in stylesheet)
                                  -    {
                                  -        // get the rule's selector, and find all elements in document
                                  -        var els = Firebug.Selector(rule.selector);
                                  -        
                                  -        // for each element found
                                  -        for(var i=0, el; el=els[i]; i++)
                                  -        {
                                  -            var cid = el[cacheID];
                                  -            
                                  -            // Add style info in the cache stack of styles of the element 
                                  -            styleCache[cid].push({
                                  -                stylesheet: stylesheet,
                                  -                lineNumber: getLineNumber(rule, stylesheet),
                                  -                fileName: getFileName(rule, stylesheet),
                                  -                selector: rule.selector,
                                  -                styles: rule.styles
                                  -            });
                                  -        }
                                  -    }
                                  -
                                  -}
                                  -
                                  -
                                  -###################################################################################################
                                  -Advanced CSS Features Implementation
                                  -###################################################################################################
                                  -
                                  -function getInlineStyles(el)
                                  -{
                                  -    var style = el.style;
                                  -    var r = {}, l, prop;
                                  -    
                                  -    // Good browsers first
                                  -    if (l = style.length)
                                  -    {
                                  -        for(var i=0; i<l; i++)
                                  -        {
                                  -            prop = style[i];
                                  -            r[toCamelCase(prop)] = style.getPropertyValue(prop);
                                  -        }
                                  -    }
                                  -    // Sad browsers last
                                  -    else
                                  -    {
                                  -      for(var prop in style)
                                  -        if (ignoreIEStyleProperties.indexOf(prop) == -1 && 
                                  -            isIEInlineStyleProperty(el, prop))
                                  -                r[prop] = style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -var ignoreIEStyleProperties = " cssText accelerator ";
                                  -function isIEInlineStyleProperty(el, prop)
                                  -{
                                  -    var r = false;
                                  -    
                                  -    if (typeof el.style[prop] == "string")
                                  -    {
                                  -        r = !!el.style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -
                                  -function toCamelCase(s)
                                  -{
                                  -    return s.replace(_selectorCaseMatch, _toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -function toSelectorCase(s)
                                  -{
                                  -  return s.replace(_camelCaseMatch, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var _camelCaseMatch = /([A-Z])/g;
                                  -var _selectorCaseMatch = /\-(.)/g; 
                                  -function _toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/classic/errorIcon.gif b/tags/firebug1.3a4/skin/classic/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/errorIcon.png b/tags/firebug1.3a4/skin/classic/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/firebug.css b/tags/firebug1.3a4/skin/classic/firebug.css
                                  deleted file mode 100644
                                  index 5089c21b..00000000
                                  --- a/tags/firebug1.3a4/skin/classic/firebug.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 6px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #d4d0c8 0 0;
                                  -    height: 28px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #d4d0c8 #fff #d4d0c8 #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 8px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #d4d0c8 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #d4d0c8;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 28px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/classic/firebug.html b/tags/firebug1.3a4/skin/classic/firebug.html
                                  deleted file mode 100644
                                  index ba941932..00000000
                                  --- a/tags/firebug1.3a4/skin/classic/firebug.html
                                  +++ /dev/null
                                  @@ -1,267 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- 
                                  -          <div id="fbFirebugMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug <span class="fbMenuShortcutKey">F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug in New Window <span class="fbMenuShortcutKey">Ctrl+F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Inspect Element <span class="fbMenuShortcutKey">Ctrl+Shift+C</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Command Line <span class="fbMenuShortcutKey">Ctrl+Shift+L</span></a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbFirebugSettingsMenu">Settings</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbConsoleMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbHover">Firebug Lite Homepage</a>
                                  -                  <a class="fbMenuOption fbHover">Discussion List</a>
                                  -                  <a class="fbMenuOption fbHover">Report Bug</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbFirebugSettingsMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a type="checkbox" class="fbMenuOption fbHover">Save Settings in Cookies</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbSubMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start Visible</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start in Popup</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbMenuChecked fbHover">Override Console Object</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Trace Mode</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Persistent Mode</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -                   
                                  -          <div id="fbConsoleMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Another Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Just nothing</a>
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbSubMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbMenuRadioSelected fbHover">Sub</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Option</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Hello</a>
                                  -              </div>
                                  -          </div>
                                  -          -->
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/skin/classic/firebug.png b/tags/firebug1.3a4/skin/classic/firebug.png
                                  deleted file mode 100644
                                  index 123545a1..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/infoIcon.gif b/tags/firebug1.3a4/skin/classic/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/infoIcon.png b/tags/firebug1.3a4/skin/classic/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/pixel_transparent.gif b/tags/firebug1.3a4/skin/classic/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/roundCorner.svg b/tags/firebug1.3a4/skin/classic/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a4/skin/classic/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a4/skin/classic/search.gif b/tags/firebug1.3a4/skin/classic/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/search.png b/tags/firebug1.3a4/skin/classic/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/shadow.gif b/tags/firebug1.3a4/skin/classic/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/shadow2.gif b/tags/firebug1.3a4/skin/classic/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/shadowAlpha.png b/tags/firebug1.3a4/skin/classic/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/sprite.png b/tags/firebug1.3a4/skin/classic/sprite.png
                                  deleted file mode 100644
                                  index 3fe97bb6..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabHoverLeft.png b/tags/firebug1.3a4/skin/classic/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 5852d8d7..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabHoverMid.png b/tags/firebug1.3a4/skin/classic/tabHoverMid.png
                                  deleted file mode 100644
                                  index e7c9ba75..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabHoverRight.png b/tags/firebug1.3a4/skin/classic/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3c62c981..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabLeft.png b/tags/firebug1.3a4/skin/classic/tabLeft.png
                                  deleted file mode 100644
                                  index 3368de73..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMenuCheckbox.png b/tags/firebug1.3a4/skin/classic/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMenuPin.png b/tags/firebug1.3a4/skin/classic/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMenuRadio.png b/tags/firebug1.3a4/skin/classic/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMenuTarget.png b/tags/firebug1.3a4/skin/classic/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMenuTargetHover.png b/tags/firebug1.3a4/skin/classic/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabMid.png b/tags/firebug1.3a4/skin/classic/tabMid.png
                                  deleted file mode 100644
                                  index b2cfeac5..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tabRight.png b/tags/firebug1.3a4/skin/classic/tabRight.png
                                  deleted file mode 100644
                                  index 8470a95e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/titlebarMid.png b/tags/firebug1.3a4/skin/classic/titlebarMid.png
                                  deleted file mode 100644
                                  index e9a74163..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/toolbarMid.png b/tags/firebug1.3a4/skin/classic/toolbarMid.png
                                  deleted file mode 100644
                                  index a1257f52..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tree_close.gif b/tags/firebug1.3a4/skin/classic/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/tree_open.gif b/tags/firebug1.3a4/skin/classic/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/warningIcon.gif b/tags/firebug1.3a4/skin/classic/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/classic/warningIcon.png b/tags/firebug1.3a4/skin/classic/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/classic/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/close.png b/tags/firebug1.3a4/skin/light/close.png
                                  deleted file mode 100644
                                  index ada59d8a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/close.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/closeHover.png b/tags/firebug1.3a4/skin/light/closeHover.png
                                  deleted file mode 100644
                                  index be0145d2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/closeHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/detach.png b/tags/firebug1.3a4/skin/light/detach.png
                                  deleted file mode 100644
                                  index 25d97e03..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/detach.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/detachHover.png b/tags/firebug1.3a4/skin/light/detachHover.png
                                  deleted file mode 100644
                                  index edb81253..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/detachHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/errorIcon.gif b/tags/firebug1.3a4/skin/light/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/errorIcon.png b/tags/firebug1.3a4/skin/light/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/firebug.css b/tags/firebug1.3a4/skin/light/firebug.css
                                  deleted file mode 100644
                                  index ac2bfe6f..00000000
                                  --- a/tags/firebug1.3a4/skin/light/firebug.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 5px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #eee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    height: 23px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 7px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    height: 23px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 23px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 23px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #e5e5e5 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #eee;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/light/firebug.html b/tags/firebug1.3a4/skin/light/firebug.html
                                  deleted file mode 100644
                                  index ba941932..00000000
                                  --- a/tags/firebug1.3a4/skin/light/firebug.html
                                  +++ /dev/null
                                  @@ -1,267 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- 
                                  -          <div id="fbFirebugMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug <span class="fbMenuShortcutKey">F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug in New Window <span class="fbMenuShortcutKey">Ctrl+F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Inspect Element <span class="fbMenuShortcutKey">Ctrl+Shift+C</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Command Line <span class="fbMenuShortcutKey">Ctrl+Shift+L</span></a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbFirebugSettingsMenu">Settings</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbConsoleMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbHover">Firebug Lite Homepage</a>
                                  -                  <a class="fbMenuOption fbHover">Discussion List</a>
                                  -                  <a class="fbMenuOption fbHover">Report Bug</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbFirebugSettingsMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a type="checkbox" class="fbMenuOption fbHover">Save Settings in Cookies</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbSubMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start Visible</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start in Popup</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbMenuChecked fbHover">Override Console Object</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Trace Mode</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Persistent Mode</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -                   
                                  -          <div id="fbConsoleMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Another Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Just nothing</a>
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbSubMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbMenuRadioSelected fbHover">Sub</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Option</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Hello</a>
                                  -              </div>
                                  -          </div>
                                  -          -->
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/skin/light/firebug.png b/tags/firebug1.3a4/skin/light/firebug.png
                                  deleted file mode 100644
                                  index 338dc5a1..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/firebug2.css b/tags/firebug1.3a4/skin/light/firebug2.css
                                  deleted file mode 100644
                                  index c6e35946..00000000
                                  --- a/tags/firebug1.3a4/skin/light/firebug2.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/light/infoIcon.gif b/tags/firebug1.3a4/skin/light/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/infoIcon.png b/tags/firebug1.3a4/skin/light/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/pixel_transparent.gif b/tags/firebug1.3a4/skin/light/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/roundCorner.svg b/tags/firebug1.3a4/skin/light/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a4/skin/light/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a4/skin/light/search.gif b/tags/firebug1.3a4/skin/light/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/search.png b/tags/firebug1.3a4/skin/light/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/shadow.gif b/tags/firebug1.3a4/skin/light/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/shadow2.gif b/tags/firebug1.3a4/skin/light/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/shadowAlpha.png b/tags/firebug1.3a4/skin/light/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/sprite.png b/tags/firebug1.3a4/skin/light/sprite.png
                                  deleted file mode 100644
                                  index d117e123..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabHoverLeft.png b/tags/firebug1.3a4/skin/light/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 708215d2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabHoverMid.png b/tags/firebug1.3a4/skin/light/tabHoverMid.png
                                  deleted file mode 100644
                                  index 6ff9a864..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabHoverRight.png b/tags/firebug1.3a4/skin/light/tabHoverRight.png
                                  deleted file mode 100644
                                  index 9f02130d..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabLeft.png b/tags/firebug1.3a4/skin/light/tabLeft.png
                                  deleted file mode 100644
                                  index 8c502135..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMenuCheckbox.png b/tags/firebug1.3a4/skin/light/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMenuPin.png b/tags/firebug1.3a4/skin/light/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMenuRadio.png b/tags/firebug1.3a4/skin/light/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMenuTarget.png b/tags/firebug1.3a4/skin/light/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMenuTargetHover.png b/tags/firebug1.3a4/skin/light/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabMid.png b/tags/firebug1.3a4/skin/light/tabMid.png
                                  deleted file mode 100644
                                  index 0a00b60d..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tabRight.png b/tags/firebug1.3a4/skin/light/tabRight.png
                                  deleted file mode 100644
                                  index b43c352d..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/titlebarMid.png b/tags/firebug1.3a4/skin/light/titlebarMid.png
                                  deleted file mode 100644
                                  index 5fc63e79..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/toolbarMid.png b/tags/firebug1.3a4/skin/light/toolbarMid.png
                                  deleted file mode 100644
                                  index 8520aab2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tree_close.gif b/tags/firebug1.3a4/skin/light/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/tree_open.gif b/tags/firebug1.3a4/skin/light/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/warningIcon.gif b/tags/firebug1.3a4/skin/light/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/light/warningIcon.png b/tags/firebug1.3a4/skin/light/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/light/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/errorIcon.gif b/tags/firebug1.3a4/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/errorIcon.png b/tags/firebug1.3a4/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/firebug-1.3a2.css b/tags/firebug1.3a4/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index 777be7fc..00000000
                                  --- a/tags/firebug1.3a4/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/xp/firebug.IE6.css b/tags/firebug1.3a4/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/tags/firebug1.3a4/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/xp/firebug.css b/tags/firebug1.3a4/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index c6e35946..00000000
                                  --- a/tags/firebug1.3a4/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbChromeButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbChromeButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbChrome_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbChrome_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbChrome_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbChromeButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a4/skin/xp/firebug.html b/tags/firebug1.3a4/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index ba941932..00000000
                                  --- a/tags/firebug1.3a4/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,267 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbChromeButtons">
                                  -          <a id="fbChrome_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbChrome_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- 
                                  -          <div id="fbFirebugMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug <span class="fbMenuShortcutKey">F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug in New Window <span class="fbMenuShortcutKey">Ctrl+F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Inspect Element <span class="fbMenuShortcutKey">Ctrl+Shift+C</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Command Line <span class="fbMenuShortcutKey">Ctrl+Shift+L</span></a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbFirebugSettingsMenu">Settings</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbConsoleMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbHover">Firebug Lite Homepage</a>
                                  -                  <a class="fbMenuOption fbHover">Discussion List</a>
                                  -                  <a class="fbMenuOption fbHover">Report Bug</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbFirebugSettingsMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a type="checkbox" class="fbMenuOption fbHover">Save Settings in Cookies</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbSubMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start Visible</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start in Popup</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbMenuChecked fbHover">Override Console Object</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Trace Mode</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Persistent Mode</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -                   
                                  -          <div id="fbConsoleMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Another Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Just nothing</a>
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbSubMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbMenuRadioSelected fbHover">Sub</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Option</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Hello</a>
                                  -              </div>
                                  -          </div>
                                  -          -->
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/skin/xp/firebug.png b/tags/firebug1.3a4/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/infoIcon.gif b/tags/firebug1.3a4/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/infoIcon.png b/tags/firebug1.3a4/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/pixel_transparent.gif b/tags/firebug1.3a4/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/roundCorner.svg b/tags/firebug1.3a4/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a4/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a4/skin/xp/search.gif b/tags/firebug1.3a4/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/search.png b/tags/firebug1.3a4/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/shadow.gif b/tags/firebug1.3a4/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/shadow2.gif b/tags/firebug1.3a4/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/shadowAlpha.png b/tags/firebug1.3a4/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/sprite.png b/tags/firebug1.3a4/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabHoverLeft.png b/tags/firebug1.3a4/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabHoverMid.png b/tags/firebug1.3a4/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabHoverRight.png b/tags/firebug1.3a4/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabLeft.png b/tags/firebug1.3a4/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMenuCheckbox.png b/tags/firebug1.3a4/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMenuPin.png b/tags/firebug1.3a4/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMenuRadio.png b/tags/firebug1.3a4/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMenuTarget.png b/tags/firebug1.3a4/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMenuTargetHover.png b/tags/firebug1.3a4/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabMid.png b/tags/firebug1.3a4/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tabRight.png b/tags/firebug1.3a4/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/titlebarMid.png b/tags/firebug1.3a4/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/toolbarMid.png b/tags/firebug1.3a4/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tree_close.gif b/tags/firebug1.3a4/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/tree_open.gif b/tags/firebug1.3a4/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/warningIcon.gif b/tags/firebug1.3a4/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/skin/xp/warningIcon.png b/tags/firebug1.3a4/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a4/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a4/test/dom.html b/tags/firebug1.3a4/test/dom.html
                                  deleted file mode 100644
                                  index 477ce475..00000000
                                  --- a/tags/firebug1.3a4/test/dom.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.jgz"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote,trace');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/test/domplate.html b/tags/firebug1.3a4/test/domplate.html
                                  deleted file mode 100644
                                  index 9b9ca26d..00000000
                                  --- a/tags/firebug1.3a4/test/domplate.html
                                  +++ /dev/null
                                  @@ -1,125 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  
                                  -  <script type="text/javascript">
                                  -    var testDomplate = function()
                                  -    {
                                  -      test3();
                                  -    }
                                  -      
                                  -    window.ssonload = function()
                                  -    {
                                  -        var x = "local";
                                  -        eval("x=function(){alert(0)}");
                                  -        alert(x)
                                  -        alert(window.x)
                                  -        x();
                                  -    }    
                                  -    
                                  -    var test1 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.append({}, document.body, template);
                                  -        }    
                                  -    }    
                                  -    
                                  -    var test2 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.append({object: inputObject}, document.body, template);
                                  -        }    
                                  -    }
                                  -    
                                  -    
                                  -    var test3 = function()
                                  -    {
                                  -        var el = document.getElementById("d2");
                                  -        //el = document.body;
                                  -        
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                   BUTTON({"class": "green",
                                  -                          checked: "true",
                                  -                          type: "checkbox",
                                  -                          onclick: "$onButtonClick"},
                                  -                       "$object.label"
                                  -                    ),
                                  -            
                                  -                onButtonClick: function(event)
                                  -                {
                                  -                    alert("Hello World!");
                                  -                }
                                  -            });
                                  -            
                                  -            template.tag.insertAfter({object: inputObject}, el, template);
                                  -        }
                                  -    }
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -  </script>
                                  -  <script type="text/javascript" src="../content/firebug.dev.js"></script>
                                  -  
                                  -  <!-- 
                                  -  <script src="../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <script src="zdomplate-1.1a.js" type="text/javascript"></script>
                                  -   -->
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <div id="d1">1</div>
                                  -  <div id="d2">2</div>
                                  -  <div id="d3">3</div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/dom-attributes.html b/tags/firebug1.3a4/test/domplate/dom-attributes.html
                                  deleted file mode 100644
                                  index 907c535f..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/dom-attributes.html
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -                        
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                       BUTTON({"class": "green",
                                  -                              checked: "true",
                                  -                              type: "checkbox",
                                  -                              onclick: "$onButtonClick"},
                                  -                           "$object.label"
                                  -                        ),
                                  -
                                  -                    onButtonClick: function(event)
                                  -                    {
                                  -                        alert("Hello World!");
                                  -                    }
                                  -                });
                                  -
                                  -
                                  -            template.tag.replace({object: inputObject}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }  
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/dom-event.html b/tags/firebug1.3a4/test/domplate/dom-event.html
                                  deleted file mode 100644
                                  index 9fb1a940..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/dom-event.html
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                            DIV({onclick: "$handleClick"},
                                  -
                                  -                               "$item"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    handleClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        alert(target.innerHTML);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/dom-properties.html b/tags/firebug1.3a4/test/domplate/dom-properties.html
                                  deleted file mode 100644
                                  index 59649351..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/dom-properties.html
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var cars = [
                                  -              {name: "Honda Pilot", price: " $36,820 - $49,920"},
                                  -              {name: "Chevrolet Aveo", price: "$13,270 - $15,770"},
                                  -              {name: "Toyota Corolla", price: " $14,835 - $23,480"}
                                  -            ];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "array",
                                  -                            DIV({_myprop: "$item", onclick: "$onClick"},
                                  -                                "$item.name"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    onClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        var car = target.myprop;
                                  -                        alert(car.price);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: cars}, parentNode, template);
                                  -                            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/dynamic-class-attribute.html b/tags/firebug1.3a4/test/domplate/dynamic-class-attribute.html
                                  deleted file mode 100644
                                  index 76030fda..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/dynamic-class-attribute.html
                                  +++ /dev/null
                                  @@ -1,71 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputData = ["Honda", "Chevrolet", "Toyota", "Ford", "Pontiac",
                                  -                "Dodge", "Mazda", "Nissan", "Volkswagen", "Hyundai"];
                                  -
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                DIV(
                                  -                  FOR("brand", "$carBrands",
                                  -                    DIV({"class": "carBrand $brand|getBrandClass",
                                  -                         $myFaforite: "$brand|isMyFavorite"},
                                  -                      "$brand"
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              isMyFavorite: function(brand) {
                                  -                return (brand == "Nissan");
                                  -              },
                                  -            
                                  -              getBrandClass: function(brand) {
                                  -                return "brand-" + brand;
                                  -              }
                                  -            });
                                  -            
                                  -            template.tag.replace({carBrands: inputData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .carBrand {
                                  -      font-weight: bold;
                                  -    }
                                  -    
                                  -    .myFaforite {
                                  -      color: red;
                                  -    }
                                  -    
                                  -    .brand-Ford {
                                  -      color: green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/for-loop-custom-iterator.html b/tags/firebug1.3a4/test/domplate/for-loop-custom-iterator.html
                                  deleted file mode 100644
                                  index a1c28c9d..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/for-loop-custom-iterator.html
                                  +++ /dev/null
                                  @@ -1,64 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            var searchResult = {
                                  -              title: "corvete.jpg",
                                  -              summary: "Chevrolet Corvette",
                                  -              url: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              clickUrl: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              RefererUrl: "http://www.neiu.edu/~ssalas/FramePage.htm",
                                  -              FileSize: 103936,
                                  -              FileFormat: "jpeg",
                                  -              Height: 768,
                                  -              Width: 1024
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE(
                                  -                  FOR("member", "$object|getMembers",
                                  -                    TR(
                                  -                      TD("$member.label"),
                                  -                      TD("$member.value")
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              getMembers: function(object) {
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push({label: p, value: object[p]})
                                  -                return members;
                                  -              }
                                  -            });
                                  -
                                  -            template.tag.replace({object: searchResult}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/for-loop.html b/tags/firebug1.3a4/test/domplate/for-loop.html
                                  deleted file mode 100644
                                  index 1ae3601a..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/for-loop.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                           DIV("$item")
                                  -                        )
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/hello-world.html b/tags/firebug1.3a4/test/domplate/hello-world.html
                                  deleted file mode 100644
                                  index b59fb8aa..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/hello-world.html
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.replace({}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/input-data.html b/tags/firebug1.3a4/test/domplate/input-data.html
                                  deleted file mode 100644
                                  index 78b3d3c6..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/input-data.html
                                  +++ /dev/null
                                  @@ -1,53 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var element = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.replace({object: inputObject}, element, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/pass-data.html b/tags/firebug1.3a4/test/domplate/pass-data.html
                                  deleted file mode 100644
                                  index ea7ed232..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/pass-data.html
                                  +++ /dev/null
                                  @@ -1,51 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["Honza", "Radek", "John", "Mike"];
                                  -                        
                                  -            var template = domplate(
                                  -            {
                                  -                table:
                                  -                    TABLE({border: "1", width: "100px"},
                                  -                        FOR("item", "array",
                                  -                            TAG("$row", {name: "$item"})
                                  -                        )
                                  -                    ),
                                  -            
                                  -                row:
                                  -                    TR({align: "center"},
                                  -                        TD("$name")
                                  -                    )
                                  -            });
                                  -
                                  -            template.table.replace({array: inputArray}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/reuse-tag.html b/tags/firebug1.3a4/test/domplate/reuse-tag.html
                                  deleted file mode 100644
                                  index 4063c8e6..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/reuse-tag.html
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        TAG("$anotherTag")
                                  -                    ),
                                  -            
                                  -                anotherTag:
                                  -                    SPAN("Embedded Tag")
                                  -            });
                                  -            
                                  -            template.tag.replace({}, parentNode, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/table-2d-array.html b/tags/firebug1.3a4/test/domplate/table-2d-array.html
                                  deleted file mode 100644
                                  index 093a480b..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/table-2d-array.html
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var tableData = {
                                  -              rows: [
                                  -                {values: [1,2,3,4]},
                                  -                {values: [11,22,33,44]},
                                  -                {values: [111,222,333,444]}
                                  -              ]
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              table:
                                  -                  TABLE({border: "1"},
                                  -                      FOR("row", "$data.rows",
                                  -                          TR(
                                  -                              FOR("value", "$row.values",
                                  -                                  TD({"class": "myTableCell"},
                                  -                                      "$value")
                                  -                              )
                                  -                          )
                                  -                      )
                                  -                  )
                                  -            });
                                  -            
                                  -            template.table.replace({data: tableData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .myTableCell {
                                  -        padding: 5px;
                                  -        text-align: center;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/domplate/tree.html b/tags/firebug1.3a4/test/domplate/tree.html
                                  deleted file mode 100644
                                  index f32659f0..00000000
                                  --- a/tags/firebug1.3a4/test/domplate/tree.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    function isLeftClick(){return true};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var treeData = {"menu":{"appetizers":[{"name":"some yummy appetizer","prize":{"ammount":8,"currency":"EUR"}},{"name":"a not so yummy soup","prize":{"ammount":5,"currency":"EUR"}}],"main-meals":[{"name":"bunny leg with fries and ketchup","prize":{"ammount":13,"currency":"EUR"}},{"name":"bunny stew","prize":{"ammount":12,"currency":"EUR"}}]},"owners":[{"last-name":"Hunter","first-name":"Bunny"}],"name":"Le lupin","cooks":[{"last-name":"Pits","first-name":"Sweaty"}],"address":{"street":"some french street","zip-code":"123456","city":"some french city","country":"some french country"},"waiters":[{"last-name":"Cheeks","first-name":"Rosy"}]};
                                  -                        
                                  -            var tree = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE({onclick: "$onClick"},
                                  -                  TBODY(
                                  -                    FOR("member", "$object|memberIterator",
                                  -                      TAG("$row", {member: "$member"}))
                                  -                  )
                                  -                ),
                                  -            
                                  -              row:
                                  -                TR({"class": "treeRow", $hasChildren: "$member.hasChildren",
                                  -                    _repObject: "$member", level: "$member.level"},
                                  -                  TD({style: "padding-left: $member.indent\\px"},
                                  -                    DIV({"class": "treeLabel"},
                                  -                        "$member.name")
                                  -                  ),
                                  -                  TD(
                                  -                    DIV("$member.label")
                                  -                  )
                                  -                ),
                                  -            
                                  -              loop:
                                  -                FOR("member", "$members",
                                  -                  TAG("$row", {member: "$member"})),
                                  -            
                                  -              memberIterator: function(object)
                                  -              {
                                  -                return this.getMembers(object);
                                  -              },
                                  -            
                                  -              onClick: function(event)
                                  -              {
                                  -                if (!isLeftClick(event))
                                  -                  return;
                                  -            
                                  -                var row = getAncestorByClass(event.target, "treeRow");
                                  -                var label = getAncestorByClass(event.target, "treeLabel");
                                  -                if (label && hasClass(row, "hasChildren"))
                                  -                  this.toggleRow(row);
                                  -              },
                                  -            
                                  -              toggleRow: function(row)
                                  -              {
                                  -                var level = parseInt(row.getAttribute("level"));
                                  -            
                                  -                if (hasClass(row, "opened"))
                                  -                {
                                  -                  removeClass(row, "opened");
                                  -            
                                  -                  var tbody = row.parentNode;
                                  -                  for (var firstRow = row.nextSibling; firstRow;
                                  -                       firstRow = row.nextSibling)
                                  -                  {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                      break;
                                  -                    tbody.removeChild(firstRow);
                                  -                  }
                                  -                }
                                  -                else
                                  -                {
                                  -                  setClass(row, "opened");
                                  -            
                                  -                  var repObject = row.repObject;
                                  -                  if (repObject) {
                                  -                    var members = this.getMembers(repObject.value, level+1);
                                  -                    if (members)
                                  -                      this.loop.insertRows({members: members}, row);
                                  -                  }
                                  -                }
                                  -              },
                                  -            
                                  -              getMembers: function(object, level)
                                  -              {
                                  -                if (!level)
                                  -                  level = 0;
                                  -            
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push(this.createMember(p, object[p], level));
                                  -            
                                  -                return members;
                                  -              },
                                  -            
                                  -              createMember: function(name, value, level)
                                  -              {
                                  -                var hasChildren = (typeof(value) == "object");
                                  -                return {
                                  -                  name: name,
                                  -                  label: hasChildren ? "" : value,
                                  -                  value: value,
                                  -                  level: level,
                                  -                  indent: level*16,
                                  -                  hasChildren: hasChildren
                                  -                };
                                  -              }
                                  -            });
                                  -            
                                  -            tree.tag.replace({object: treeData}, parentNode, tree);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .treeRow.hasChildren .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_open.gif);
                                  -        background-repeat: no-repeat;
                                  -        background-position: 2px 2px;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren.opened .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_close.gif);
                                  -    }
                                  -    
                                  -    .treeRow .treeLabel {
                                  -        padding-left: 18px;
                                  -        padding-right: 10px;
                                  -        white-space: nowrap;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren .treeLabel:hover {
                                  -        color: blue;
                                  -        cursor: pointer;
                                  -        text-decoration: underline;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a4/test/firebugLite.html b/tags/firebug1.3a4/test/firebugLite.html
                                  deleted file mode 100644
                                  index 24e342e7..00000000
                                  --- a/tags/firebug1.3a4/test/firebugLite.html
                                  +++ /dev/null
                                  @@ -1,156 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.jgz#disableWhenFirebugActive=false">
                                  -    {
                                  -        startOpened: true,
                                  -        skin: (window.firebugSkin = ["xp","classic","light"][Math.floor(Math.random()*3)]),
                                  -        
                                  -        onLoad: function()
                                  -        {
                                  -            var console = Firebug.Console;
                                  -            
                                  -            console.info("Hello World, I'm " + Firebug.version + "!");
                                  -            console.warn('This is the "' + firebugSkin + '" skin');
                                  -            
                                  -            //console.log("move your mouse over here: ", document.getElementsByTagName("div"));
                                  -        
                                  -            var random = function(i){return Math.floor(Math.random()*i)};
                                  -            var randomPanel = ["Console", "HTML", "CSS", "Script", "DOM"][random(5)];
                                  -            
                                  -            randomPanel = "HTML"
                                  -            Firebug.chrome.selectPanel(randomPanel);
                                  -            if (randomPanel == "HTML")
                                  -            {
                                  -                var randomElement = ["h1", "h3", "p"][random(3)];
                                  -                randomElement = "h1";
                                  -                var element = document.getElementsByTagName(randomElement)[0];
                                  -                
                                  -                //setTimeout(function(){
                                  -                    Firebug.HTML.select(element);
                                  -                    Firebug.Inspector.drawBoxModel(element);
                                  -                //},0);
                                  -                
                                  -                setTimeout(Firebug.Inspector.hideBoxModel, 2500);
                                  -                
                                  -            }
                                  -            else if (randomPanel == "DOM")
                                  -            {
                                  -                var randomElement = [null, "Firebug", "console", "document"][random(4)];
                                  -                var element = Firebug.browser.window[randomElement];
                                  -                
                                  -                setTimeout(function(){
                                  -                    Firebug.chrome.getPanel("DOM").select(element);
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -</script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  /*margin: 0;/**/
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  /*border: 10px solid #efd;*/
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -#lorem {
                                  -  /*display: none;/**/
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/injected.chrome.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div id="lorem" class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/test/firebugLite2.html b/tags/firebug1.3a4/test/firebugLite2.html
                                  deleted file mode 100644
                                  index de798fcb..00000000
                                  --- a/tags/firebug1.3a4/test/firebugLite2.html
                                  +++ /dev/null
                                  @@ -1,115 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="getStackTrace.js"></script>
                                  -<script type="text/javascript" src="../content/firebug.dev.js"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -/**/
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -<style type="text/css">
                                  -#dummy {
                                  -    color: yellow;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a4/test/full.html b/tags/firebug1.3a4/test/full.html
                                  deleted file mode 100644
                                  index f00d9e4e..00000000
                                  --- a/tags/firebug1.3a4/test/full.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.js#remote,trace"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=t+L;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=t+i;})(document,'createElement','build/firebug.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=t+L;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=t+i;})(document,'createElement','build/firebug.js#remote,trace','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/build/.htaccess b/tags/firebug1.3a5/build/.htaccess
                                  deleted file mode 100644
                                  index cb38bde8..00000000
                                  --- a/tags/firebug1.3a5/build/.htaccess
                                  +++ /dev/null
                                  @@ -1,15 +0,0 @@
                                  -AddType "text/javascript;charset=UTF-8" .jgz .js
                                  -AddEncoding gzip .jgz
                                  -
                                  -<IfModule expires_module>
                                  -    ExpiresActive On
                                  -    ExpiresDefault A86400
                                  -</IfModule>
                                  -
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    #RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*MSIE 6.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1.js [L]
                                  -</IfModule>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/build/build.bat b/tags/firebug1.3a5/build/build.bat
                                  deleted file mode 100644
                                  index f20019d3..00000000
                                  --- a/tags/firebug1.3a5/build/build.bat
                                  +++ /dev/null
                                  @@ -1,21 +0,0 @@
                                  -rd firebug /s /q 
                                  -rd pub /s /q 
                                  -
                                  -svn export "../" "./firebug"
                                  -
                                  -md pub
                                  -xcopy ".\firebug\skin\." ".\pub\skin" /s /i
                                  -copy "..\test\alpha.html" ".\pub\index.html"
                                  -copy "..\content\changelog.txt" ".\pub"
                                  -copy ".\firebug\build\*.*" ".\pub"
                                  -del ".\pub\*.bat"
                                  -
                                  -tar -cv --file=firebug.tar firebug/*
                                  -gzip -9 < firebug.tar > ./pub/firebug.tar.tgz
                                  -
                                  -del firebug.tar
                                  -
                                  -rd firebug /s /q 
                                  -
                                  -pause
                                  -
                                  diff --git a/tags/firebug1.3a5/build/compress.bat b/tags/firebug1.3a5/build/compress.bat
                                  deleted file mode 100644
                                  index 37ef08b1..00000000
                                  --- a/tags/firebug1.3a5/build/compress.bat
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -java -jar yuicompressor-2.4.2.jar --line-break 0 -o firebug.js firebug.uncompressed.js
                                  -
                                  -gzip -c firebug.js > firebug.jgz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/build/firebug.jgz b/tags/firebug1.3a5/build/firebug.jgz
                                  deleted file mode 100644
                                  index d1a691bf..00000000
                                  Binary files a/tags/firebug1.3a5/build/firebug.jgz and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/build/firebug.js b/tags/firebug1.3a5/build/firebug.js
                                  deleted file mode 100644
                                  index 115d4c08..00000000
                                  --- a/tags/firebug1.3a5/build/firebug.js
                                  +++ /dev/null
                                  @@ -1,5372 +0,0 @@
                                  -(function(){
                                  -/**************************************************************
                                  - *
                                  - *    Firebug Lite 1.3a5
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/lite.html
                                  - *  
                                  - **************************************************************/
                                  -/*
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -var FBL={};
                                  -(function(){var productionDir="http://getfirebug.com/releases/lite/";
                                  -var reNotWhitespace=/[^\s]/;
                                  -var reSplitFile=/:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -var userAgent=navigator.userAgent.toLowerCase();
                                  -this.isFirefox=/firefox/.test(userAgent);
                                  -this.isOpera=/opera/.test(userAgent);
                                  -this.isSafari=/webkit/.test(userAgent);
                                  -this.isIE=/msie/.test(userAgent)&&!/opera/.test(userAgent);
                                  -this.isIE6=/msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion=(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1];
                                  -this.isIElt8=this.isIE&&(this.browserVersion-0<8);
                                  -this.NS=null;
                                  -this.pixelsPerInch=null;
                                  -var namespaces=[];
                                  -this.ns=function(fn){var ns={};
                                  -namespaces.push(fn,ns);
                                  -return ns
                                  -};
                                  -var FBTrace=null;
                                  -this.initialize=function(){if(FBL.FBTrace){FBTrace=FBL.FBTrace
                                  -}else{FBTrace=FBL.FBTrace={}
                                  -}FBL.Ajax.initialize();
                                  -var isChromeContext=window.Firebug&&typeof window.Firebug.SharedEnv=="object";
                                  -if(isChromeContext){sharedEnv=window.Firebug.SharedEnv;
                                  -delete window.Firebug.SharedEnv;
                                  -FBL.Env=sharedEnv;
                                  -FBL.Env.isChromeContext=true;
                                  -FBTrace.messageQueue=FBL.Env.traceMessageQueue
                                  -}else{FBL.NS=document.documentElement.namespaceURI;
                                  -FBL.Env.browser=window;
                                  -FBL.Env.destroy=destroyApplication;
                                  -if(document.documentElement.getAttribute("debug")=="true"){FBL.Env.Options.startOpened=true
                                  -}findLocation();
                                  -var prefs=eval("("+FBL.readCookie("FirebugLite")+")");
                                  -if(prefs){FBL.Env.Options.startOpened=prefs.startOpened;
                                  -FBL.Env.Options.enableTrace=prefs.enableTrace;
                                  -FBL.Env.Options.enablePersistent=prefs.enablePersistent
                                  -}if(FBL.isFirefox&&typeof console=="object"&&console.firebug&&FBL.Env.Options.disableWhenFirebugActive){return
                                  -}}this.isQuiksMode=FBL.Env.browser.document.compatMode=="BackCompat";
                                  -this.isIEQuiksMode=this.isIE&&this.isQuiksMode;
                                  -this.isIEStantandMode=this.isIE&&!this.isQuiksMode;
                                  -this.noFixedPosition=this.isIE6||this.isIEQuiksMode;
                                  -if(FBL.Env.Options.enableTrace){FBTrace.initialize()
                                  -}if(FBTrace.DBG_INITIALIZE&&isChromeContext){FBTrace.sysout("FBL.initialize - persistent application","initialize chrome context")
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces BEGIN")
                                  -}for(var i=0;
                                  -i<namespaces.length;
                                  -i+=2){var fn=namespaces[i];
                                  -var ns=namespaces[i+1];
                                  -fn.apply(ns)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL.initialize",namespaces.length/2+" namespaces END");
                                  -FBTrace.sysout("FBL waitForDocument","waiting document load")
                                  -}FBL.Firebug.loadPrefs(prefs);
                                  -if(FBL.Env.Options.enablePersistent){if(isChromeContext){FBL.FirebugChrome.clone(FBL.Env.FirebugChrome)
                                  -}else{FBL.Env.FirebugChrome=FBL.FirebugChrome;
                                  -FBL.Env.traceMessageQueue=FBTrace.messageQueue
                                  -}}waitForDocument()
                                  -};
                                  -var waitForDocument=function waitForDocument(){var doc=FBL.Env.browser.document;
                                  -var body=doc.getElementsByTagName("body")[0];
                                  -if(body){calculatePixelsPerInch(doc,body);
                                  -onDocumentLoad()
                                  -}else{setTimeout(waitForDocument,50)
                                  -}};
                                  -var onDocumentLoad=function onDocumentLoad(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FBL onDocumentLoad","document loaded")
                                  -}if(FBL.isIE6){fixIE6BackgroundImageCache()
                                  -}if(FBL.Env.Options.enablePersistent&&FBL.Env.isChromeContext){FBL.Firebug.initialize();
                                  -if(!FBL.Env.isDevelopmentMode){sharedEnv.destroy();
                                  -sharedEnv=null
                                  -}}else{FBL.FirebugChrome.create()
                                  -}};
                                  -var sharedEnv;
                                  -this.Env={Options:{saveCookies:false,saveWindowPosition:false,saveCommandLineHistory:false,startOpened:false,startInNewWindow:false,showIconWhenHidden:true,overrideConsole:true,ignoreFirebugElements:true,disableWhenFirebugActive:true,enableTrace:false,enablePersistent:false},Location:{sourceDir:null,baseDir:null,skinDir:null,skin:null,app:null},skin:"xp",useLocalSkin:false,isDevelopmentMode:false,isChromeContext:false,browser:null,chrome:null};
                                  -var destroyApplication=function destroyApplication(){setTimeout(function(){FBL=null
                                  -},100)
                                  -};
                                  -var findLocation=function findLocation(){var reFirebugFile=/(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=document;
                                  -var script=doc.getElementById("FirebugLite");
                                  -if(script){file=reFirebugFile.exec(script.src)
                                  -}else{for(var i=0,s=doc.getElementsByTagName("script"),si;
                                  -si=s[i];
                                  -i++){var file=null;
                                  -if(si.nodeName.toLowerCase()=="script"&&(file=reFirebugFile.exec(si.src))){script=si;
                                  -break
                                  -}}}if(script){script.firebugIgnore=true
                                  -}if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}FBL.Env.isChromeExtension=script&&script.getAttribute("extension")=="Chrome";
                                  -if(FBL.Env.isChromeExtension){path="http://firebug.local:8740/firebug1.3/build/";
                                  -script={innerHTML:"{showIconWhenHidden:false}"}
                                  -}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){var Env=FBL.Env;
                                  -if(fileName=="firebug.dev.js"){Env.isDevelopmentMode=true;
                                  -Env.useLocalSkin=true;
                                  -Env.Options.disableWhenFirebugActive=false
                                  -}if(fileOptions){var options=fileOptions.split(",");
                                  -for(var i=0,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var name,value;
                                  -if(option.indexOf("=")!=-1){var parts=option.split("=");
                                  -name=parts[0];
                                  -value=eval(unescape(parts[1]))
                                  -}else{name=option;
                                  -value=true
                                  -}if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}if(Env.browser.document.documentElement.getAttribute("debug")=="true"){Env.Options.startOpened=true
                                  -}var innerOptions=FBL.trim(script.innerHTML);
                                  -if(innerOptions){var innerOptionsObject=eval("("+innerOptions+")");
                                  -for(var name in innerOptionsObject){var value=innerOptionsObject[name];
                                  -if(name in Env.Options){Env.Options[name]=value
                                  -}else{Env[name]=value
                                  -}}}var loc=Env.Location;
                                  -var isProductionRelease=path.indexOf(productionDir)!=-1;
                                  -loc.sourceDir=path;
                                  -loc.baseDir=path.substr(0,path.length-m[1].length-1);
                                  -loc.skinDir=(isProductionRelease?path:loc.baseDir)+"skin/"+Env.skin+"/";
                                  -loc.skin=loc.skinDir+"firebug.html";
                                  -loc.app=path+fileName
                                  -}else{throw new Error("Firebug Error: Library path not found")
                                  -}};
                                  -this.bind=function(){var args=cloneArray(arguments),fn=args.shift(),object=args.shift();
                                  -return function(){return fn.apply(object,arrayInsert(cloneArray(args),0,arguments))
                                  -}
                                  -};
                                  -this.extend=function(l,r){var newOb={};
                                  -for(var n in l){newOb[n]=l[n]
                                  -}for(var n in r){newOb[n]=r[n]
                                  -}return newOb
                                  -};
                                  -this.append=function(l,r){for(var n in r){l[n]=r[n]
                                  -}return l
                                  -};
                                  -this.keys=function(map){var keys=[];
                                  -try{for(var name in map){keys.push(name)
                                  -}}catch(exc){}return keys
                                  -};
                                  -this.values=function(map){var values=[];
                                  -try{for(var name in map){try{values.push(map[name])
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.values FAILED ",exc)
                                  -}}return values
                                  -};
                                  -this.remove=function(list,item){for(var i=0;
                                  -i<list.length;
                                  -++i){if(list[i]==item){list.splice(i,1);
                                  -break
                                  -}}};
                                  -this.sliceArray=function(array,index){var slice=[];
                                  -for(var i=index;
                                  -i<array.length;
                                  -++i){slice.push(array[i])
                                  -}return slice
                                  -};
                                  -function cloneArray(array,fn){var newArray=[];
                                  -if(fn){for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(fn(array[i]))
                                  -}}else{for(var i=0;
                                  -i<array.length;
                                  -++i){newArray.push(array[i])
                                  -}}return newArray
                                  -}function extendArray(array,array2){var newArray=[];
                                  -newArray.push.apply(newArray,array);
                                  -newArray.push.apply(newArray,array2);
                                  -return newArray
                                  -}this.extendArray=extendArray;
                                  -this.cloneArray=cloneArray;
                                  -function arrayInsert(array,index,other){for(var i=0;
                                  -i<other.length;
                                  -++i){array.splice(i+index,0,other[i])
                                  -}return array
                                  -}this.createStyleSheet=function(doc,url){var style=doc.createElementNS("http://www.w3.org/1999/xhtml","link");
                                  -style.setAttribute("charset","utf-8");
                                  -style.firebugIgnore=true;
                                  -style.setAttribute("rel","stylesheet");
                                  -style.setAttribute("type","text/css");
                                  -style.setAttribute("href",url);
                                  -return style
                                  -};
                                  -this.addStyleSheet=function(doc,style){var heads=doc.getElementsByTagName("head");
                                  -if(heads.length){heads[0].appendChild(style)
                                  -}else{doc.documentElement.appendChild(style)
                                  -}};
                                  -this.getCSS=this.isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return el.ownerDocument.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -};
                                  -var reTrim=/^\s+|\s+$/g;
                                  -this.trim=function(s){return s.replace(reTrim,"")
                                  -};
                                  -this.escapeNewLines=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n")
                                  -};
                                  -this.stripNewLines=function(value){return typeof(value)=="string"?value.replace(/[\r\n]/g," "):value
                                  -};
                                  -this.escapeJS=function(value){return value.replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace('"','\\"',"g")
                                  -};
                                  -function escapeHTMLAttribute(value){function replaceChars(ch){switch(ch){case"&":return"&amp;";
                                  -case"'":return apos;
                                  -case'"':return quot
                                  -}return"?"
                                  -}var apos="&#39;",quot="&quot;",around='"';
                                  -if(value.indexOf('"')==-1){quot='"';
                                  -apos="'"
                                  -}else{if(value.indexOf("'")==-1){quot='"';
                                  -around="'"
                                  -}}return around+(String(value).replace(/[&'"]/g,replaceChars))+around
                                  -}function escapeHTML(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}this.escapeHTML=escapeHTML;
                                  -this.cropString=function(text,limit){text=text+"";
                                  -if(!limit){var halfLimit=50
                                  -}else{var halfLimit=limit/2
                                  -}if(text.length>limit){return this.escapeNewLines(text.substr(0,halfLimit)+"..."+text.substr(text.length-halfLimit))
                                  -}else{return this.escapeNewLines(text)
                                  -}};
                                  -this.isWhitespace=function(text){return !reNotWhitespace.exec(text)
                                  -};
                                  -this.safeToString=function(ob){if(this.isIE){return ob+""
                                  -}try{if(ob&&"toString" in ob&&typeof ob.toString=="function"){return ob.toString()
                                  -}}catch(exc){return"[an object with no toString() function]"
                                  -}};
                                  -this.emptyFn=function(){};
                                  -this.isVisible=function(elt){return this.getCSS(elt,"visibility")!="hidden"&&(elt.offsetWidth>0||elt.offsetHeight>0||elt.tagName in invisibleTags||elt.namespaceURI=="http://www.w3.org/2000/svg"||elt.namespaceURI=="http://www.w3.org/1998/Math/MathML")
                                  -};
                                  -this.collapse=function(elt,collapsed){elt.setAttribute("collapsed",collapsed?"true":"false")
                                  -};
                                  -this.obscure=function(elt,obscured){if(obscured){this.setClass(elt,"obscured")
                                  -}else{this.removeClass(elt,"obscured")
                                  -}};
                                  -this.hide=function(elt,hidden){elt.style.visibility=hidden?"hidden":"visible"
                                  -};
                                  -this.clearNode=function(node){var nodeName=" "+node.nodeName.toLowerCase()+" ";
                                  -var ignoreTags=" table tbody thead tfoot th tr td ";
                                  -if(this.isIE&&ignoreTags.indexOf(nodeName)!=-1){this.eraseNode(node)
                                  -}else{node.innerHTML=""
                                  -}};
                                  -this.eraseNode=function(node){while(node.lastChild){node.removeChild(node.lastChild)
                                  -}};
                                  -this.iterateWindows=function(win,handler){if(!win||!win.document){return
                                  -}handler(win);
                                  -if(win==top||!win.frames){return
                                  -}for(var i=0;
                                  -i<win.frames.length;
                                  -++i){var subWin=win.frames[i];
                                  -if(subWin!=win){this.iterateWindows(subWin,handler)
                                  -}}};
                                  -this.getRootWindow=function(win){for(;
                                  -win;
                                  -win=win.parent){if(!win.parent||win==win.parent||!this.instanceOf(win.parent,"Window")){return win
                                  -}}return null
                                  -};
                                  -this.getClientOffset=function(elt){function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -var style=view.getComputedStyle(elt,"");
                                  -if(elt.offsetLeft){coords.x+=elt.offsetLeft+parseInt(style.borderLeftWidth)
                                  -}if(elt.offsetTop){coords.y+=elt.offsetTop+parseInt(style.borderTopWidth)
                                  -}if(p){if(p.nodeType==1){addOffset(p,coords,view)
                                  -}}else{if(elt.ownerDocument.defaultView.frameElement){addOffset(elt.ownerDocument.defaultView.frameElement,coords,elt.ownerDocument.defaultView)
                                  -}}}var coords={x:0,y:0};
                                  -if(elt){var view=elt.ownerDocument.defaultView;
                                  -addOffset(elt,coords,view)
                                  -}return coords
                                  -};
                                  -this.getViewOffset=function(elt,singleFrame){function addOffset(elt,coords,view){var p=elt.offsetParent;
                                  -coords.x+=elt.offsetLeft-(p?p.scrollLeft:0);
                                  -coords.y+=elt.offsetTop-(p?p.scrollTop:0);
                                  -if(p){if(p.nodeType==1){var parentStyle=view.getComputedStyle(p,"");
                                  -if(parentStyle.position!="static"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth);
                                  -if(p.localName=="TABLE"){coords.x+=parseInt(parentStyle.paddingLeft);
                                  -coords.y+=parseInt(parentStyle.paddingTop)
                                  -}else{if(p.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.marginLeft);
                                  -coords.y+=parseInt(style.marginTop)
                                  -}}}else{if(p.localName=="BODY"){coords.x+=parseInt(parentStyle.borderLeftWidth);
                                  -coords.y+=parseInt(parentStyle.borderTopWidth)
                                  -}}var parent=elt.parentNode;
                                  -while(p!=parent){coords.x-=parent.scrollLeft;
                                  -coords.y-=parent.scrollTop;
                                  -parent=parent.parentNode
                                  -}addOffset(p,coords,view)
                                  -}}else{if(elt.localName=="BODY"){var style=view.getComputedStyle(elt,"");
                                  -coords.x+=parseInt(style.borderLeftWidth);
                                  -coords.y+=parseInt(style.borderTopWidth);
                                  -var htmlStyle=view.getComputedStyle(elt.parentNode,"");
                                  -coords.x-=parseInt(htmlStyle.paddingLeft);
                                  -coords.y-=parseInt(htmlStyle.paddingTop)
                                  -}if(elt.scrollLeft){coords.x+=elt.scrollLeft
                                  -}if(elt.scrollTop){coords.y+=elt.scrollTop
                                  -}var win=elt.ownerDocument.defaultView;
                                  -if(win&&(!singleFrame&&win.frameElement)){addOffset(win.frameElement,coords,win)
                                  -}}}var coords={x:0,y:0};
                                  -if(elt){addOffset(elt,coords,elt.ownerDocument.defaultView)
                                  -}return coords
                                  -};
                                  -this.getLTRBWH=function(elt){var bcrect,dims={left:0,top:0,right:0,bottom:0,width:0,height:0};
                                  -if(elt){bcrect=elt.getBoundingClientRect();
                                  -dims.left=bcrect.left;
                                  -dims.top=bcrect.top;
                                  -dims.right=bcrect.right;
                                  -dims.bottom=bcrect.bottom;
                                  -if(bcrect.width){dims.width=bcrect.width;
                                  -dims.height=bcrect.height
                                  -}else{dims.width=dims.right-dims.left;
                                  -dims.height=dims.bottom-dims.top
                                  -}}return dims
                                  -};
                                  -this.applyBodyOffsets=function(elt,clientRect){var od=elt.ownerDocument;
                                  -if(!od.body){return clientRect
                                  -}var style=od.defaultView.getComputedStyle(od.body,null);
                                  -var pos=style.getPropertyValue("position");
                                  -if(pos==="absolute"||pos==="relative"){var borderLeft=parseInt(style.getPropertyValue("border-left-width").replace("px",""),10)||0;
                                  -var borderTop=parseInt(style.getPropertyValue("border-top-width").replace("px",""),10)||0;
                                  -var paddingLeft=parseInt(style.getPropertyValue("padding-left").replace("px",""),10)||0;
                                  -var paddingTop=parseInt(style.getPropertyValue("padding-top").replace("px",""),10)||0;
                                  -var marginLeft=parseInt(style.getPropertyValue("margin-left").replace("px",""),10)||0;
                                  -var marginTop=parseInt(style.getPropertyValue("margin-top").replace("px",""),10)||0;
                                  -var offsetX=borderLeft+paddingLeft+marginLeft;
                                  -var offsetY=borderTop+paddingTop+marginTop;
                                  -clientRect.left-=offsetX;
                                  -clientRect.top-=offsetY;
                                  -clientRect.right-=offsetX;
                                  -clientRect.bottom-=offsetY
                                  -}return clientRect
                                  -};
                                  -this.getOffsetSize=function(elt){return{width:elt.offsetWidth,height:elt.offsetHeight}
                                  -};
                                  -this.getOverflowParent=function(element){for(var scrollParent=element.parentNode;
                                  -scrollParent;
                                  -scrollParent=scrollParent.offsetParent){if(scrollParent.scrollHeight>scrollParent.offsetHeight){return scrollParent
                                  -}}};
                                  -this.isScrolledToBottom=function(element){var onBottom=(element.scrollTop+element.offsetHeight)==element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight+" onBottom:"+onBottom)
                                  -}return onBottom
                                  -};
                                  -this.scrollToBottom=function(element){element.scrollTop=element.scrollHeight;
                                  -if(FBTrace.DBG_CONSOLE){FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -if(element.scrollHeight==element.offsetHeight){FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element,element)
                                  -}}return(element.scrollTop==element.scrollHeight)
                                  -};
                                  -this.move=function(element,x,y){element.style.left=x+"px";
                                  -element.style.top=y+"px"
                                  -};
                                  -this.resize=function(element,w,h){element.style.width=w+"px";
                                  -element.style.height=h+"px"
                                  -};
                                  -this.linesIntoCenterView=function(element,scrollBox){if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var split=(scrollBox.clientHeight/2);
                                  -var centerY=offset.y-split;
                                  -scrollBox.scrollTop=centerY;
                                  -topSpace=split;
                                  -bottomSpace=split-element.offsetHeight
                                  -}return{before:Math.round((topSpace/element.offsetHeight)+0.5),after:Math.round((bottomSpace/element.offsetHeight)+0.5)}
                                  -};
                                  -this.scrollIntoCenterView=function(element,scrollBox,notX,notY){if(!element){return
                                  -}if(!scrollBox){scrollBox=this.getOverflowParent(element)
                                  -}if(!scrollBox){return
                                  -}var offset=this.getClientOffset(element);
                                  -if(!notY){var topSpace=offset.y-scrollBox.scrollTop;
                                  -var bottomSpace=(scrollBox.scrollTop+scrollBox.clientHeight)-(offset.y+element.offsetHeight);
                                  -if(topSpace<0||bottomSpace<0){var centerY=offset.y-(scrollBox.clientHeight/2);
                                  -scrollBox.scrollTop=centerY
                                  -}}if(!notX){var leftSpace=offset.x-scrollBox.scrollLeft;
                                  -var rightSpace=(scrollBox.scrollLeft+scrollBox.clientWidth)-(offset.x+element.clientWidth);
                                  -if(leftSpace<0||rightSpace<0){var centerX=offset.x-(scrollBox.clientWidth/2);
                                  -scrollBox.scrollLeft=centerX
                                  -}}if(FBTrace.DBG_SOURCEFILES){FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML)
                                  -}};
                                  -this.hasClass=function(node,name){if(!node||node.nodeType!=1){return false
                                  -}else{for(var i=1;
                                  -i<arguments.length;
                                  -++i){var name=arguments[i];
                                  -var re=new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -if(!re.exec(node.className)){return false
                                  -}}return true
                                  -}};
                                  -this.setClass=function(node,name){if(node&&!this.hasClass(node,name)){node.className+=" "+name
                                  -}};
                                  -this.getClassValue=function(node,name){var re=new RegExp(name+"-([^ ]+)");
                                  -var m=re.exec(node.className);
                                  -return m?m[1]:""
                                  -};
                                  -this.removeClass=function(node,name){if(node&&node.className){var index=node.className.indexOf(name);
                                  -if(index>=0){var size=name.length;
                                  -node.className=node.className.substr(0,index-1)+node.className.substr(index+size)
                                  -}}};
                                  -this.toggleClass=function(elt,name){if(this.hasClass(elt,name)){this.removeClass(elt,name)
                                  -}else{this.setClass(elt,name)
                                  -}};
                                  -this.setClassTimed=function(elt,name,context,timeout){if(!timeout){timeout=1300
                                  -}if(elt.__setClassTimeout){context.clearTimeout(elt.__setClassTimeout)
                                  -}else{this.setClass(elt,name)
                                  -}elt.__setClassTimeout=context.setTimeout(function(){delete elt.__setClassTimeout;
                                  -FBL.removeClass(elt,name)
                                  -},timeout)
                                  -};
                                  -this.cancelClassTimed=function(elt,name,context){if(elt.__setClassTimeout){FBL.removeClass(elt,name);
                                  -context.clearTimeout(elt.__setClassTimeout);
                                  -delete elt.__setClassTimeout
                                  -}};
                                  -this.$=function(id,doc){if(doc){return doc.getElementById(id)
                                  -}else{return FBL.Firebug.chrome.document.getElementById(id)
                                  -}};
                                  -this.$$=function(selector,doc){if(doc||!FBL.Firebug.chrome){return FBL.Firebug.Selector(selector,doc)
                                  -}else{return FBL.Firebug.Selector(selector,FBL.Firebug.chrome.document)
                                  -}};
                                  -this.getChildByClass=function(node){for(var i=1;
                                  -i<arguments.length;
                                  -++i){var className=arguments[i];
                                  -var child=node.firstChild;
                                  -node=null;
                                  -for(;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){node=child;
                                  -break
                                  -}}}return node
                                  -};
                                  -this.getAncestorByClass=function(node,className){for(var parent=node;
                                  -parent;
                                  -parent=parent.parentNode){if(this.hasClass(parent,className)){return parent
                                  -}}return null
                                  -};
                                  -this.getElementsByClass=function(node,className){var result=[];
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(this.hasClass(child,className)){result.push(child)
                                  -}}return result
                                  -};
                                  -this.getElementByClass=function(node,className){var args=cloneArray(arguments);
                                  -args.splice(0,1);
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){var args1=cloneArray(args);
                                  -args1.unshift(child);
                                  -if(FBL.hasClass.apply(null,args1)){return child
                                  -}else{var found=FBL.getElementByClass.apply(null,args1);
                                  -if(found){return found
                                  -}}}return null
                                  -};
                                  -this.getBody=function(doc){if(doc.body){return doc.body
                                  -}var body=doc.getElementsByTagName("body")[0];
                                  -if(body){return body
                                  -}return doc.firstChild
                                  -};
                                  -this.isElement=function(o){try{return o&&this.instanceOf(o,"Element")
                                  -}catch(ex){return false
                                  -}};
                                  -this.createElement=function(tagName,properties){properties=properties||{};
                                  -var doc=properties.document||FBL.Firebug.chrome.document;
                                  -var element=doc.createElement(tagName);
                                  -for(var name in properties){if(name!="document"){element[name]=properties[name]
                                  -}}return element
                                  -};
                                  -this.createGlobalElement=function(tagName,properties){properties=properties||{};
                                  -var doc=FBL.Env.browser.document;
                                  -var element=this.NS&&doc.createElementNS?doc.createElementNS(FBL.NS,tagName):doc.createElement(tagName);
                                  -for(var name in properties){var propname=name;
                                  -if(FBL.isIE&&name=="class"){propname="className"
                                  -}if(name!="document"){element.setAttribute(propname,properties[name])
                                  -}}return element
                                  -};
                                  -this.isLeftClick=function(event){return(this.isIE&&event.type!="click"?event.button==1:event.button==0)&&this.noKeyModifiers(event)
                                  -};
                                  -this.isMiddleClick=function(event){return(this.isIE&&event.type!="click"?event.button==4:event.button==1)&&this.noKeyModifiers(event)
                                  -};
                                  -this.isRightClick=function(event){return(this.isIE&&event.type!="click"?event.button==2:event.button==2)&&this.noKeyModifiers(event)
                                  -};
                                  -this.noKeyModifiers=function(event){return !event.ctrlKey&&!event.shiftKey&&!event.altKey&&!event.metaKey
                                  -};
                                  -this.isControlClick=function(event){return(this.isIE&&event.type!="click"?event.button==1:event.button==0)&&this.isControl(event)
                                  -};
                                  -this.isShiftClick=function(event){return(this.isIE&&event.type!="click"?event.button==1:event.button==0)&&this.isShift(event)
                                  -};
                                  -this.isControl=function(event){return(event.metaKey||event.ctrlKey)&&!event.shiftKey&&!event.altKey
                                  -};
                                  -this.isControlShift=function(event){return(event.metaKey||event.ctrlKey)&&event.shiftKey&&!event.altKey
                                  -};
                                  -this.isShift=function(event){return event.shiftKey&&!event.metaKey&&!event.ctrlKey&&!event.altKey
                                  -};
                                  -this.addEvent=function(object,name,handler){if(object.addEventListener){object.addEventListener(name,handler,false)
                                  -}else{object.attachEvent("on"+name,handler)
                                  -}};
                                  -this.removeEvent=function(object,name,handler){try{if(object.removeEventListener){object.removeEventListener(name,handler,false)
                                  -}else{object.detachEvent("on"+name,handler)
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("FBL.removeEvent error: ",object,name)
                                  -}}};
                                  -this.cancelEvent=function(e,preventDefault){if(!e){return
                                  -}if(preventDefault){if(e.preventDefault){e.preventDefault()
                                  -}else{e.returnValue=false
                                  -}}if(e.stopPropagation){e.stopPropagation()
                                  -}else{e.cancelBubble=true
                                  -}};
                                  -this.addGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.addEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.addEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.addEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.removeGlobalEvent=function(name,handler){var doc=this.Firebug.browser.document;
                                  -var frames=this.Firebug.browser.window.frames;
                                  -this.removeEvent(doc,name,handler);
                                  -if(this.Firebug.chrome.type=="popup"){this.removeEvent(this.Firebug.chrome.document,name,handler)
                                  -}for(var i=0,frame;
                                  -frame=frames[i];
                                  -i++){try{this.removeEvent(frame.document,name,handler)
                                  -}catch(E){}}};
                                  -this.dispatch=function(listeners,name,args){try{if(typeof listeners.length!="undefined"){if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to "+listeners.length+" listeners")
                                  -}for(var i=0;
                                  -i<listeners.length;
                                  -++i){var listener=listeners[i];
                                  -if(listener.hasOwnProperty(name)){listener[name].apply(listener,args)
                                  -}}}else{if(FBTrace.DBG_DISPATCH){FBTrace.sysout("FBL.dispatch",name+" to listeners of an object")
                                  -}for(var prop in listeners){var listener=listeners[prop];
                                  -if(listeners.hasOwnProperty(prop)&&listener[name]){listener[name].apply(listener,args)
                                  -}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout(" Exception in lib.dispatch "+name,exc)
                                  -}}};
                                  -var disableTextSelectionHandler=function(event){FBL.cancelEvent(event,true);
                                  -return false
                                  -};
                                  -this.disableTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.addEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="user-select: none; -khtml-user-select: none; -moz-user-select: none;";
                                  -if(!this.isFirefox){this.addEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}e.style.cursor="default"
                                  -};
                                  -this.restoreTextSelection=function(e){if(typeof e.onselectstart!="undefined"){this.removeEvent(e,"selectstart",disableTextSelectionHandler)
                                  -}else{e.style.cssText="cursor: default;";
                                  -if(!this.isFirefox){this.removeEvent(e,"mousedown",disableTextSelectionHandler)
                                  -}}};
                                  -var eventTypes={composition:["composition","compositionstart","compositionend"],contextmenu:["contextmenu"],drag:["dragenter","dragover","dragexit","dragdrop","draggesture"],focus:["focus","blur"],form:["submit","reset","change","select","input"],key:["keydown","keyup","keypress"],load:["load","beforeunload","unload","abort","error"],mouse:["mousedown","mouseup","click","dblclick","mouseover","mouseout","mousemove"],mutation:["DOMSubtreeModified","DOMNodeInserted","DOMNodeRemoved","DOMNodeRemovedFromDocument","DOMNodeInsertedIntoDocument","DOMAttrModified","DOMCharacterDataModified"],paint:["paint","resize","scroll"],scroll:["overflow","underflow","overflowchanged"],text:["text"],ui:["DOMActivate","DOMFocusIn","DOMFocusOut"],xul:["popupshowing","popupshown","popuphiding","popuphidden","close","command","broadcast","commandupdate"]};
                                  -this.getEventFamily=function(eventType){if(!this.families){this.families={};
                                  -for(var family in eventTypes){var types=eventTypes[family];
                                  -for(var i=0;
                                  -i<types.length;
                                  -++i){this.families[types[i]]=family
                                  -}}}return this.families[eventType]
                                  -};
                                  -this.getFileName=function(url){var split=this.splitURLBase(url);
                                  -return split.name
                                  -};
                                  -this.splitURLBase=function(url){if(this.isDataURL(url)){return this.splitDataURL(url)
                                  -}return this.splitURLTrue(url)
                                  -};
                                  -this.splitDataURL=function(url){var mark=url.indexOf(":",3);
                                  -if(mark!=4){return false
                                  -}var point=url.indexOf(",",mark+1);
                                  -if(point<mark){return false
                                  -}var props={encodedContent:url.substr(point+1)};
                                  -var metadataBuffer=url.substr(mark+1,point);
                                  -var metadata=metadataBuffer.split(";");
                                  -for(var i=0;
                                  -i<metadata.length;
                                  -i++){var nv=metadata[i].split("=");
                                  -if(nv.length==2){props[nv[0]]=nv[1]
                                  -}}if(props.hasOwnProperty("fileName")){var caller_URL=decodeURIComponent(props.fileName);
                                  -var caller_split=this.splitURLTrue(caller_URL);
                                  -if(props.hasOwnProperty("baseLineNumber")){props.path=caller_split.path;
                                  -props.line=props.baseLineNumber;
                                  -var hint=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"");
                                  -props.name="eval->"+hint
                                  -}else{props.name=caller_split.name;
                                  -props.path=caller_split.path
                                  -}}else{if(!props.hasOwnProperty("path")){props.path="data:"
                                  -}if(!props.hasOwnProperty("name")){props.name=decodeURIComponent(props.encodedContent.substr(0,200)).replace(/\s*$/,"")
                                  -}}return props
                                  -};
                                  -this.splitURLTrue=function(url){var m=reSplitFile.exec(url);
                                  -if(!m){return{name:url,path:url}
                                  -}else{if(!m[2]){return{path:m[1],name:m[1]}
                                  -}else{return{path:m[1],name:m[2]+m[3]}
                                  -}}};
                                  -this.getFileExtension=function(url){var lastDot=url.lastIndexOf(".");
                                  -return url.substr(lastDot+1)
                                  -};
                                  -this.isSystemURL=function(url){if(!url){return true
                                  -}if(url.length==0){return true
                                  -}if(url[0]=="h"){return false
                                  -}if(url.substr(0,9)=="resource:"){return true
                                  -}else{if(url.substr(0,16)=="chrome://firebug"){return true
                                  -}else{if(url=="XPCSafeJSObjectWrapper.cpp"){return true
                                  -}else{if(url.substr(0,6)=="about:"){return true
                                  -}else{if(url.indexOf("firebug-service.js")!=-1){return true
                                  -}else{return false
                                  -}}}}}};
                                  -this.isSystemPage=function(win){try{var doc=win.document;
                                  -if(!doc){return false
                                  -}if((doc.styleSheets.length&&doc.styleSheets[0].href=="chrome://global/content/xml/XMLPrettyPrint.css")||(doc.styleSheets.length>1&&doc.styleSheets[1].href=="chrome://browser/skin/feeds/subscribe.css")){return true
                                  -}return FBL.isSystemURL(win.location.href)
                                  -}catch(exc){ERROR("tabWatcher.isSystemPage document not ready:"+exc);
                                  -return false
                                  -}};
                                  -this.getURIHost=function(uri){try{if(uri){return uri.host
                                  -}else{return""
                                  -}}catch(exc){return""
                                  -}};
                                  -this.isLocalURL=function(url){if(url.substr(0,5)=="file:"){return true
                                  -}else{if(url.substr(0,8)=="wyciwyg:"){return true
                                  -}else{return false
                                  -}}};
                                  -this.isDataURL=function(url){return(url&&url.substr(0,5)=="data:")
                                  -};
                                  -this.getLocalPath=function(url){if(this.isLocalURL(url)){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var file=fileHandler.getFileFromURLSpec(url);
                                  -return file.path
                                  -}};
                                  -this.getURLFromLocalFile=function(file){var fileHandler=ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -var URL=fileHandler.getURLSpecFromFile(file);
                                  -return URL
                                  -};
                                  -this.getDataURLForContent=function(content,url){var uri="data:text/html;";
                                  -uri+="fileName="+encodeURIComponent(url)+",";
                                  -uri+=encodeURIComponent(content);
                                  -return uri
                                  -},this.getDomain=function(url){var m=/[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getURLPath=function(url){var m=/[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -return m?m[1]:""
                                  -};
                                  -this.getPrettyDomain=function(url){var m=/[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -return m?m[2]:""
                                  -};
                                  -this.absoluteURL=function(url,baseURL){return this.absoluteURLWithDots(url,baseURL).replace("/./","/","g")
                                  -};
                                  -this.absoluteURLWithDots=function(url,baseURL){if(url[0]=="?"){return baseURL+url
                                  -}var reURL=/(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -var m=reURL.exec(url);
                                  -if(m){return url
                                  -}var m=reURL.exec(baseURL);
                                  -if(!m){return""
                                  -}var head=m[1];
                                  -var tail=m[3];
                                  -if(url.substr(0,2)=="//"){return m[2]+url
                                  -}else{if(url[0]=="/"){return head+url
                                  -}else{if(tail[tail.length-1]=="/"){return baseURL+url
                                  -}else{var parts=tail.split("/");
                                  -return head+parts.slice(0,parts.length-1).join("/")+"/"+url
                                  -}}}};
                                  -this.normalizeURL=function(url){if(!url){return""
                                  -}if(url.length<255){url=url.replace(/[^/]+\/\.\.\//,"","g");
                                  -url=url.replace(/#.*/,"");
                                  -url=url.replace(/file:\/([^/])/g,"file:///$1");
                                  -if(url.indexOf("chrome:")==0){var m=reChromeCase.exec(url);
                                  -if(m){url="chrome://"+m[1].toLowerCase()+"/"+m[2]
                                  -}}}return url
                                  -};
                                  -this.denormalizeURL=function(url){return url.replace(/file:\/\/\//g,"file:/")
                                  -};
                                  -this.parseURLParams=function(url){var q=url?url.indexOf("?"):-1;
                                  -if(q==-1){return[]
                                  -}var search=url.substr(q+1);
                                  -var h=search.lastIndexOf("#");
                                  -if(h!=-1){search=search.substr(0,h)
                                  -}if(!search){return[]
                                  -}return this.parseURLEncodedText(search)
                                  -};
                                  -this.parseURLEncodedText=function(text){var maxValueLength=25000;
                                  -var params=[];
                                  -text=text.replace(/\+/g," ");
                                  -var args=text.split("&");
                                  -for(var i=0;
                                  -i<args.length;
                                  -++i){try{var parts=args[i].split("=");
                                  -if(parts.length==2){if(parts[1].length>maxValueLength){parts[1]=this.$STR("LargeData")
                                  -}params.push({name:decodeURIComponent(parts[0]),value:decodeURIComponent(parts[1])})
                                  -}else{params.push({name:decodeURIComponent(parts[0]),value:""})
                                  -}}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("parseURLEncodedText EXCEPTION ",e);
                                  -FBTrace.sysout("parseURLEncodedText EXCEPTION URI",args[i])
                                  -}}}params.sort(function(a,b){return a.name<=b.name?-1:1
                                  -});
                                  -return params
                                  -};
                                  -this.reEncodeURL=function(file,text){var lines=text.split("\n");
                                  -var params=this.parseURLEncodedText(lines[lines.length-1]);
                                  -var args=[];
                                  -for(var i=0;
                                  -i<params.length;
                                  -++i){args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value))
                                  -}var url=file.href;
                                  -url+=(url.indexOf("?")==-1?"?":"&")+args.join("&");
                                  -return url
                                  -};
                                  -this.getResource=function(aURL){try{var channel=ioService.newChannel(aURL,null,null);
                                  -var input=channel.open();
                                  -return FBL.readFromStream(input)
                                  -}catch(e){if(FBTrace.DBG_ERRORS){FBTrace.sysout("lib.getResource FAILS for "+aURL,e)
                                  -}}};
                                  -this.parseJSONString=function(jsonString,originURL){var regex=new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -var matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1];
                                  -if(jsonString[0]=="\\"&&jsonString[1]=="n"){jsonString=jsonString.substr(2)
                                  -}if(jsonString[jsonString.length-2]=="\\"&&jsonString[jsonString.length-1]=="n"){jsonString=jsonString.substr(0,jsonString.length-2)
                                  -}}if(jsonString.indexOf("&&&START&&&")){regex=new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -matches=regex.exec(jsonString);
                                  -if(matches){jsonString=matches[1]
                                  -}}jsonString="("+jsonString+")";
                                  -var s=Components.utils.Sandbox(originURL);
                                  -var jsonObject=null;
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(e){if(e.message.indexOf("is not defined")){var parts=e.message.split(" ");
                                  -s[parts[0]]=function(str){return str
                                  -};
                                  -try{jsonObject=Components.utils.evalInSandbox(jsonString,s)
                                  -}catch(ex){if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}else{if(FBTrace.DBG_ERRORS||FBTrace.DBG_JSONVIEWER){FBTrace.sysout("jsonviewer.parseJSON EXCEPTION",e)
                                  -}return null
                                  -}}return jsonObject
                                  -};
                                  -this.objectToString=function(object){try{return object+""
                                  -}catch(exc){return null
                                  -}};
                                  -function onOperaTabBlur(e){if(this.lastKey==9){this.focus()
                                  -}}function onOperaTabKeyDown(e){this.lastKey=e.keyCode
                                  -}function onOperaTabFocus(e){this.lastKey=null
                                  -}this.fixOperaTabKey=function(el){el.onfocus=onOperaTabFocus;
                                  -el.onblur=onOperaTabBlur;
                                  -el.onkeydown=onOperaTabKeyDown
                                  -};
                                  -this.Property=function(object,name){this.object=object;
                                  -this.name=name;
                                  -this.getObject=function(){return object[name]
                                  -}
                                  -};
                                  -this.ErrorCopy=function(message){this.message=message
                                  -};
                                  -function EventCopy(event){for(var name in event){try{this[name]=event[name]
                                  -}catch(exc){}}}this.EventCopy=EventCopy;
                                  -var toString=Object.prototype.toString;
                                  -var reFunction=/^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/;
                                  -this.isArray=function(object){return toString.call(object)==="[object Array]"
                                  -};
                                  -this.isFunction=function(object){if(!object){return false
                                  -}return toString.call(object)==="[object Function]"||this.isIE&&typeof object!="string"&&reFunction.test(""+object)
                                  -};
                                  -this.instanceOf=function(object,className){if(!object||typeof object!="object"){return false
                                  -}if(object.ownerDocument){var win=object.ownerDocument.defaultView||object.ownerDocument.parentWindow;
                                  -if(className in win){return object instanceof win[className]
                                  -}}var cache=instanceCheckMap[className];
                                  -if(!cache){return false
                                  -}for(var n in cache){var obj=cache[n];
                                  -var type=typeof obj;
                                  -obj=type=="object"?obj:[obj];
                                  -for(var name in obj){var value=obj[name];
                                  -if(n=="property"&&!(value in object)||n=="method"&&!this.isFunction(object[value])||n=="value"&&(""+object[name]).toLowerCase()!=(""+value).toLowerCase()){return false
                                  -}}}return true
                                  -};
                                  -var instanceCheckMap={Window:{property:["window","document"],method:"setTimeout"},Document:{property:["body","cookie"],method:"getElementById"},Node:{property:"ownerDocument",method:"appendChild"},Element:{property:"tagName",value:{nodeType:1}},Location:{property:["hostname","protocol"],method:"assign"},HTMLImageElement:{property:"useMap",value:{nodeType:1,tagName:"img"}},HTMLAnchorElement:{property:"hreflang",value:{nodeType:1,tagName:"a"}},HTMLInputElement:{property:"form",value:{nodeType:1,tagName:"input"}},HTMLButtonElement:{},HTMLFormElement:{method:"submit",value:{nodeType:1,tagName:"form"}},HTMLBodyElement:{},HTMLHtmlElement:{}};
                                  -this.getDOMMembers=function(object){if(!domMemberCache){domMemberCache={};
                                  -for(var name in domMemberMap){var builtins=domMemberMap[name];
                                  -var cache=domMemberCache[name]={};
                                  -for(var i=0;
                                  -i<builtins.length;
                                  -++i){cache[builtins[i]]=i
                                  -}}}try{if(this.instanceOf(object,"Window")){return domMemberCache.Window
                                  -}else{if(object instanceof Document||object instanceof XMLDocument){return domMemberCache.Document
                                  -}else{if(object instanceof Location){return domMemberCache.Location
                                  -}else{if(object instanceof HTMLImageElement){return domMemberCache.HTMLImageElement
                                  -}else{if(object instanceof HTMLAnchorElement){return domMemberCache.HTMLAnchorElement
                                  -}else{if(object instanceof HTMLInputElement){return domMemberCache.HTMLInputElement
                                  -}else{if(object instanceof HTMLButtonElement){return domMemberCache.HTMLButtonElement
                                  -}else{if(object instanceof HTMLFormElement){return domMemberCache.HTMLFormElement
                                  -}else{if(object instanceof HTMLBodyElement){return domMemberCache.HTMLBodyElement
                                  -}else{if(object instanceof HTMLHtmlElement){return domMemberCache.HTMLHtmlElement
                                  -}else{if(object instanceof HTMLScriptElement){return domMemberCache.HTMLScriptElement
                                  -}else{if(object instanceof HTMLTableElement){return domMemberCache.HTMLTableElement
                                  -}else{if(object instanceof HTMLTableRowElement){return domMemberCache.HTMLTableRowElement
                                  -}else{if(object instanceof HTMLTableCellElement){return domMemberCache.HTMLTableCellElement
                                  -}else{if(object instanceof HTMLIFrameElement){return domMemberCache.HTMLIFrameElement
                                  -}else{if(object instanceof SVGSVGElement){return domMemberCache.SVGSVGElement
                                  -}else{if(object instanceof SVGElement){return domMemberCache.SVGElement
                                  -}else{if(object instanceof Element){return domMemberCache.Element
                                  -}else{if(object instanceof Text||object instanceof CDATASection){return domMemberCache.Text
                                  -}else{if(object instanceof Attr){return domMemberCache.Attr
                                  -}else{if(object instanceof Node){return domMemberCache.Node
                                  -}else{if(object instanceof Event||object instanceof EventCopy){return domMemberCache.Event
                                  -}else{return{}
                                  -}}}}}}}}}}}}}}}}}}}}}}}catch(E){return{}
                                  -}};
                                  -this.isDOMMember=function(object,propName){var members=this.getDOMMembers(object);
                                  -return members&&propName in members
                                  -};
                                  -var domMemberCache=null;
                                  -var domMemberMap={};
                                  -domMemberMap.Window=["document","frameElement","innerWidth","innerHeight","outerWidth","outerHeight","screenX","screenY","pageXOffset","pageYOffset","scrollX","scrollY","scrollMaxX","scrollMaxY","status","defaultStatus","parent","opener","top","window","content","self","location","history","frames","navigator","screen","menubar","toolbar","locationbar","personalbar","statusbar","directories","scrollbars","fullScreen","netscape","java","console","Components","controllers","closed","crypto","pkcs11","name","property","length","sessionStorage","globalStorage","setTimeout","setInterval","clearTimeout","clearInterval","addEventListener","removeEventListener","dispatchEvent","getComputedStyle","captureEvents","releaseEvents","routeEvent","enableExternalCapture","disableExternalCapture","moveTo","moveBy","resizeTo","resizeBy","scroll","scrollTo","scrollBy","scrollByLines","scrollByPages","sizeToContent","setResizable","getSelection","open","openDialog","close","alert","confirm","prompt","dump","focus","blur","find","back","forward","home","stop","print","atob","btoa","updateCommands","XPCNativeWrapper","GeckoActiveXObject","applicationCache"];
                                  -domMemberMap.Location=["href","protocol","host","hostname","port","pathname","search","hash","assign","reload","replace"];
                                  -domMemberMap.Node=["id","className","nodeType","tagName","nodeName","localName","prefix","namespaceURI","nodeValue","ownerDocument","parentNode","offsetParent","nextSibling","previousSibling","firstChild","lastChild","childNodes","attributes","dir","baseURI","textContent","innerHTML","addEventListener","removeEventListener","dispatchEvent","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"];
                                  -domMemberMap.Document=extendArray(domMemberMap.Node,["documentElement","body","title","location","referrer","cookie","contentType","lastModified","characterSet","inputEncoding","xmlEncoding","xmlStandalone","xmlVersion","strictErrorChecking","documentURI","URL","defaultView","doctype","implementation","styleSheets","images","links","forms","anchors","embeds","plugins","applets","width","height","designMode","compatMode","async","preferredStylesheetSet","alinkColor","linkColor","vlinkColor","bgColor","fgColor","domain","addEventListener","removeEventListener","dispatchEvent","captureEvents","releaseEvents","routeEvent","clear","open","close","execCommand","execCommandShowHelp","getElementsByName","getSelection","queryCommandEnabled","queryCommandIndeterm","queryCommandState","queryCommandSupported","queryCommandText","queryCommandValue","write","writeln","adoptNode","appendChild","removeChild","renameNode","cloneNode","compareDocumentPosition","createAttribute","createAttributeNS","createCDATASection","createComment","createDocumentFragment","createElement","createElementNS","createEntityReference","createEvent","createExpression","createNSResolver","createNodeIterator","createProcessingInstruction","createRange","createTextNode","createTreeWalker","domConfig","evaluate","evaluateFIXptr","evaluateXPointer","getAnonymousElementByAttribute","getAnonymousNodes","addBinding","removeBinding","getBindingParent","getBoxObjectFor","setBoxObjectFor","getElementById","getElementsByTagName","getElementsByTagNameNS","hasAttributes","hasChildNodes","importNode","insertBefore","isDefaultNamespace","isEqualNode","isSameNode","isSupported","load","loadBindingDocument","lookupNamespaceURI","lookupPrefix","normalize","normalizeDocument","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.Element=extendArray(domMemberMap.Node,["clientWidth","clientHeight","offsetLeft","offsetTop","offsetWidth","offsetHeight","scrollLeft","scrollTop","scrollWidth","scrollHeight","style","tabIndex","title","lang","align","spellcheck","addEventListener","removeEventListener","dispatchEvent","focus","blur","cloneNode","appendChild","insertBefore","replaceChild","removeChild","compareDocumentPosition","getElementsByTagName","getElementsByTagNameNS","getAttribute","getAttributeNS","getAttributeNode","getAttributeNodeNS","setAttribute","setAttributeNS","setAttributeNode","setAttributeNodeNS","removeAttribute","removeAttributeNS","removeAttributeNode","hasAttribute","hasAttributeNS","hasAttributes","hasChildNodes","lookupNamespaceURI","lookupPrefix","normalize","isDefaultNamespace","isEqualNode","isSameNode","isSupported","getFeature","getUserData","setUserData"]);
                                  -domMemberMap.SVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","href","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","getBBox","getCTM","getScreenCTM","getTransformToElement","getPresentationAttribute","preserveAspectRatio"]);
                                  -domMemberMap.SVGSVGElement=extendArray(domMemberMap.Element,["x","y","width","height","rx","ry","transform","viewBox","viewport","currentView","useCurrentView","pixelUnitToMillimeterX","pixelUnitToMillimeterY","screenPixelToMillimeterX","screenPixelToMillimeterY","currentScale","currentTranslate","zoomAndPan","ownerSVGElement","viewportElement","farthestViewportElement","nearestViewportElement","contentScriptType","contentStyleType","getBBox","getCTM","getScreenCTM","getTransformToElement","getEnclosureList","getIntersectionList","getViewboxToViewportTransform","getPresentationAttribute","getElementById","checkEnclosure","checkIntersection","createSVGAngle","createSVGLength","createSVGMatrix","createSVGNumber","createSVGPoint","createSVGRect","createSVGString","createSVGTransform","createSVGTransformFromMatrix","deSelectAll","preserveAspectRatio","forceRedraw","suspendRedraw","unsuspendRedraw","unsuspendRedrawAll","getCurrentTime","setCurrentTime","animationsPaused","pauseAnimations","unpauseAnimations"]);
                                  -domMemberMap.HTMLImageElement=extendArray(domMemberMap.Element,["src","naturalWidth","naturalHeight","width","height","x","y","name","alt","longDesc","lowsrc","border","complete","hspace","vspace","isMap","useMap",]);
                                  -domMemberMap.HTMLAnchorElement=extendArray(domMemberMap.Element,["name","target","accessKey","href","protocol","host","hostname","port","pathname","search","hash","hreflang","coords","shape","text","type","rel","rev","charset"]);
                                  -domMemberMap.HTMLIFrameElement=extendArray(domMemberMap.Element,["contentDocument","contentWindow","frameBorder","height","longDesc","marginHeight","marginWidth","name","scrolling","src","width"]);
                                  -domMemberMap.HTMLTableElement=extendArray(domMemberMap.Element,["bgColor","border","caption","cellPadding","cellSpacing","frame","rows","rules","summary","tBodies","tFoot","tHead","width","createCaption","createTFoot","createTHead","deleteCaption","deleteRow","deleteTFoot","deleteTHead","insertRow"]);
                                  -domMemberMap.HTMLTableRowElement=extendArray(domMemberMap.Element,["bgColor","cells","ch","chOff","rowIndex","sectionRowIndex","vAlign","deleteCell","insertCell"]);
                                  -domMemberMap.HTMLTableCellElement=extendArray(domMemberMap.Element,["abbr","axis","bgColor","cellIndex","ch","chOff","colSpan","headers","height","noWrap","rowSpan","scope","vAlign","width"]);
                                  -domMemberMap.HTMLScriptElement=extendArray(domMemberMap.Element,["src"]);
                                  -domMemberMap.HTMLButtonElement=extendArray(domMemberMap.Element,["accessKey","disabled","form","name","type","value","click"]);
                                  -domMemberMap.HTMLInputElement=extendArray(domMemberMap.Element,["type","value","checked","accept","accessKey","alt","controllers","defaultChecked","defaultValue","disabled","form","maxLength","name","readOnly","selectionEnd","selectionStart","size","src","textLength","useMap","click","select","setSelectionRange"]);
                                  -domMemberMap.HTMLFormElement=extendArray(domMemberMap.Element,["acceptCharset","action","author","elements","encoding","enctype","entry_id","length","method","name","post","target","text","url","reset","submit"]);
                                  -domMemberMap.HTMLBodyElement=extendArray(domMemberMap.Element,["aLink","background","bgColor","link","text","vLink"]);
                                  -domMemberMap.HTMLHtmlElement=extendArray(domMemberMap.Element,["version"]);
                                  -domMemberMap.Text=extendArray(domMemberMap.Node,["data","length","appendData","deleteData","insertData","replaceData","splitText","substringData"]);
                                  -domMemberMap.Attr=extendArray(domMemberMap.Node,["name","value","specified","ownerElement"]);
                                  -domMemberMap.Event=["type","target","currentTarget","originalTarget","explicitOriginalTarget","relatedTarget","rangeParent","rangeOffset","view","keyCode","charCode","screenX","screenY","clientX","clientY","layerX","layerY","pageX","pageY","detail","button","which","ctrlKey","shiftKey","altKey","metaKey","eventPhase","timeStamp","bubbles","cancelable","cancelBubble","isTrusted","isChar","getPreventDefault","initEvent","initMouseEvent","initKeyEvent","initUIEvent","preventBubble","preventCapture","preventDefault","stopPropagation"];
                                  -this.domConstantMap={ELEMENT_NODE:1,ATTRIBUTE_NODE:1,TEXT_NODE:1,CDATA_SECTION_NODE:1,ENTITY_REFERENCE_NODE:1,ENTITY_NODE:1,PROCESSING_INSTRUCTION_NODE:1,COMMENT_NODE:1,DOCUMENT_NODE:1,DOCUMENT_TYPE_NODE:1,DOCUMENT_FRAGMENT_NODE:1,NOTATION_NODE:1,DOCUMENT_POSITION_DISCONNECTED:1,DOCUMENT_POSITION_PRECEDING:1,DOCUMENT_POSITION_FOLLOWING:1,DOCUMENT_POSITION_CONTAINS:1,DOCUMENT_POSITION_CONTAINED_BY:1,DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC:1,UNKNOWN_RULE:1,STYLE_RULE:1,CHARSET_RULE:1,IMPORT_RULE:1,MEDIA_RULE:1,FONT_FACE_RULE:1,PAGE_RULE:1,CAPTURING_PHASE:1,AT_TARGET:1,BUBBLING_PHASE:1,SCROLL_PAGE_UP:1,SCROLL_PAGE_DOWN:1,MOUSEUP:1,MOUSEDOWN:1,MOUSEOVER:1,MOUSEOUT:1,MOUSEMOVE:1,MOUSEDRAG:1,CLICK:1,DBLCLICK:1,KEYDOWN:1,KEYUP:1,KEYPRESS:1,DRAGDROP:1,FOCUS:1,BLUR:1,SELECT:1,CHANGE:1,RESET:1,SUBMIT:1,SCROLL:1,LOAD:1,UNLOAD:1,XFER_DONE:1,ABORT:1,ERROR:1,LOCATE:1,MOVE:1,RESIZE:1,FORWARD:1,HELP:1,BACK:1,TEXT:1,ALT_MASK:1,CONTROL_MASK:1,SHIFT_MASK:1,META_MASK:1,DOM_VK_TAB:1,DOM_VK_PAGE_UP:1,DOM_VK_PAGE_DOWN:1,DOM_VK_UP:1,DOM_VK_DOWN:1,DOM_VK_LEFT:1,DOM_VK_RIGHT:1,DOM_VK_CANCEL:1,DOM_VK_HELP:1,DOM_VK_BACK_SPACE:1,DOM_VK_CLEAR:1,DOM_VK_RETURN:1,DOM_VK_ENTER:1,DOM_VK_SHIFT:1,DOM_VK_CONTROL:1,DOM_VK_ALT:1,DOM_VK_PAUSE:1,DOM_VK_CAPS_LOCK:1,DOM_VK_ESCAPE:1,DOM_VK_SPACE:1,DOM_VK_END:1,DOM_VK_HOME:1,DOM_VK_PRINTSCREEN:1,DOM_VK_INSERT:1,DOM_VK_DELETE:1,DOM_VK_0:1,DOM_VK_1:1,DOM_VK_2:1,DOM_VK_3:1,DOM_VK_4:1,DOM_VK_5:1,DOM_VK_6:1,DOM_VK_7:1,DOM_VK_8:1,DOM_VK_9:1,DOM_VK_SEMICOLON:1,DOM_VK_EQUALS:1,DOM_VK_A:1,DOM_VK_B:1,DOM_VK_C:1,DOM_VK_D:1,DOM_VK_E:1,DOM_VK_F:1,DOM_VK_G:1,DOM_VK_H:1,DOM_VK_I:1,DOM_VK_J:1,DOM_VK_K:1,DOM_VK_L:1,DOM_VK_M:1,DOM_VK_N:1,DOM_VK_O:1,DOM_VK_P:1,DOM_VK_Q:1,DOM_VK_R:1,DOM_VK_S:1,DOM_VK_T:1,DOM_VK_U:1,DOM_VK_V:1,DOM_VK_W:1,DOM_VK_X:1,DOM_VK_Y:1,DOM_VK_Z:1,DOM_VK_CONTEXT_MENU:1,DOM_VK_NUMPAD0:1,DOM_VK_NUMPAD1:1,DOM_VK_NUMPAD2:1,DOM_VK_NUMPAD3:1,DOM_VK_NUMPAD4:1,DOM_VK_NUMPAD5:1,DOM_VK_NUMPAD6:1,DOM_VK_NUMPAD7:1,DOM_VK_NUMPAD8:1,DOM_VK_NUMPAD9:1,DOM_VK_MULTIPLY:1,DOM_VK_ADD:1,DOM_VK_SEPARATOR:1,DOM_VK_SUBTRACT:1,DOM_VK_DECIMAL:1,DOM_VK_DIVIDE:1,DOM_VK_F1:1,DOM_VK_F2:1,DOM_VK_F3:1,DOM_VK_F4:1,DOM_VK_F5:1,DOM_VK_F6:1,DOM_VK_F7:1,DOM_VK_F8:1,DOM_VK_F9:1,DOM_VK_F10:1,DOM_VK_F11:1,DOM_VK_F12:1,DOM_VK_F13:1,DOM_VK_F14:1,DOM_VK_F15:1,DOM_VK_F16:1,DOM_VK_F17:1,DOM_VK_F18:1,DOM_VK_F19:1,DOM_VK_F20:1,DOM_VK_F21:1,DOM_VK_F22:1,DOM_VK_F23:1,DOM_VK_F24:1,DOM_VK_NUM_LOCK:1,DOM_VK_SCROLL_LOCK:1,DOM_VK_COMMA:1,DOM_VK_PERIOD:1,DOM_VK_SLASH:1,DOM_VK_BACK_QUOTE:1,DOM_VK_OPEN_BRACKET:1,DOM_VK_BACK_SLASH:1,DOM_VK_CLOSE_BRACKET:1,DOM_VK_QUOTE:1,DOM_VK_META:1,SVG_ZOOMANDPAN_DISABLE:1,SVG_ZOOMANDPAN_MAGNIFY:1,SVG_ZOOMANDPAN_UNKNOWN:1};
                                  -this.cssInfo={background:["bgRepeat","bgAttachment","bgPosition","color","systemColor","none"],"background-attachment":["bgAttachment"],"background-color":["color","systemColor"],"background-image":["none"],"background-position":["bgPosition"],"background-repeat":["bgRepeat"],border:["borderStyle","thickness","color","systemColor","none"],"border-top":["borderStyle","borderCollapse","color","systemColor","none"],"border-right":["borderStyle","borderCollapse","color","systemColor","none"],"border-bottom":["borderStyle","borderCollapse","color","systemColor","none"],"border-left":["borderStyle","borderCollapse","color","systemColor","none"],"border-collapse":["borderCollapse"],"border-color":["color","systemColor"],"border-top-color":["color","systemColor"],"border-right-color":["color","systemColor"],"border-bottom-color":["color","systemColor"],"border-left-color":["color","systemColor"],"border-spacing":[],"border-style":["borderStyle"],"border-top-style":["borderStyle"],"border-right-style":["borderStyle"],"border-bottom-style":["borderStyle"],"border-left-style":["borderStyle"],"border-width":["thickness"],"border-top-width":["thickness"],"border-right-width":["thickness"],"border-bottom-width":["thickness"],"border-left-width":["thickness"],bottom:["auto"],"caption-side":["captionSide"],clear:["clear","none"],clip:["auto"],color:["color","systemColor"],content:["content"],"counter-increment":["none"],"counter-reset":["none"],cursor:["cursor","none"],direction:["direction"],display:["display","none"],"empty-cells":[],"float":["float","none"],font:["fontStyle","fontVariant","fontWeight","fontFamily"],"font-family":["fontFamily"],"font-size":["fontSize"],"font-size-adjust":[],"font-stretch":[],"font-style":["fontStyle"],"font-variant":["fontVariant"],"font-weight":["fontWeight"],height:["auto"],left:["auto"],"letter-spacing":[],"line-height":[],"list-style":["listStyleType","listStylePosition","none"],"list-style-image":["none"],"list-style-position":["listStylePosition"],"list-style-type":["listStyleType","none"],margin:[],"margin-top":[],"margin-right":[],"margin-bottom":[],"margin-left":[],"marker-offset":["auto"],"min-height":["none"],"max-height":["none"],"min-width":["none"],"max-width":["none"],outline:["borderStyle","color","systemColor","none"],"outline-color":["color","systemColor"],"outline-style":["borderStyle"],"outline-width":[],overflow:["overflow","auto"],"overflow-x":["overflow","auto"],"overflow-y":["overflow","auto"],padding:[],"padding-top":[],"padding-right":[],"padding-bottom":[],"padding-left":[],position:["position"],quotes:["none"],right:["auto"],"table-layout":["tableLayout","auto"],"text-align":["textAlign"],"text-decoration":["textDecoration","none"],"text-indent":[],"text-shadow":[],"text-transform":["textTransform","none"],top:["auto"],"unicode-bidi":[],"vertical-align":["verticalAlign"],"white-space":["whiteSpace"],width:["auto"],"word-spacing":[],"z-index":[],"-moz-appearance":["mozAppearance"],"-moz-border-radius":[],"-moz-border-radius-bottomleft":[],"-moz-border-radius-bottomright":[],"-moz-border-radius-topleft":[],"-moz-border-radius-topright":[],"-moz-border-top-colors":["color","systemColor"],"-moz-border-right-colors":["color","systemColor"],"-moz-border-bottom-colors":["color","systemColor"],"-moz-border-left-colors":["color","systemColor"],"-moz-box-align":["mozBoxAlign"],"-moz-box-direction":["mozBoxDirection"],"-moz-box-flex":[],"-moz-box-ordinal-group":[],"-moz-box-orient":["mozBoxOrient"],"-moz-box-pack":["mozBoxPack"],"-moz-box-sizing":["mozBoxSizing"],"-moz-opacity":[],"-moz-user-focus":["userFocus","none"],"-moz-user-input":["userInput"],"-moz-user-modify":[],"-moz-user-select":["userSelect","none"],"-moz-background-clip":[],"-moz-background-inline-policy":[],"-moz-background-origin":[],"-moz-binding":[],"-moz-column-count":[],"-moz-column-gap":[],"-moz-column-width":[],"-moz-image-region":[]};
                                  -this.inheritedStyleNames={"border-collapse":1,"border-spacing":1,"border-style":1,"caption-side":1,color:1,cursor:1,direction:1,"empty-cells":1,font:1,"font-family":1,"font-size-adjust":1,"font-size":1,"font-style":1,"font-variant":1,"font-weight":1,"letter-spacing":1,"line-height":1,"list-style":1,"list-style-image":1,"list-style-position":1,"list-style-type":1,quotes:1,"text-align":1,"text-decoration":1,"text-indent":1,"text-shadow":1,"text-transform":1,"white-space":1,"word-spacing":1};
                                  -this.cssKeywords={appearance:["button","button-small","checkbox","checkbox-container","checkbox-small","dialog","listbox","menuitem","menulist","menulist-button","menulist-textfield","menupopup","progressbar","radio","radio-container","radio-small","resizer","scrollbar","scrollbarbutton-down","scrollbarbutton-left","scrollbarbutton-right","scrollbarbutton-up","scrollbartrack-horizontal","scrollbartrack-vertical","separator","statusbar","tab","tab-left-edge","tabpanels","textfield","toolbar","toolbarbutton","toolbox","tooltip","treeheadercell","treeheadersortarrow","treeitem","treetwisty","treetwistyopen","treeview","window"],systemColor:["ActiveBorder","ActiveCaption","AppWorkspace","Background","ButtonFace","ButtonHighlight","ButtonShadow","ButtonText","CaptionText","GrayText","Highlight","HighlightText","InactiveBorder","InactiveCaption","InactiveCaptionText","InfoBackground","InfoText","Menu","MenuText","Scrollbar","ThreeDDarkShadow","ThreeDFace","ThreeDHighlight","ThreeDLightShadow","ThreeDShadow","Window","WindowFrame","WindowText","-moz-field","-moz-fieldtext","-moz-workspace","-moz-visitedhyperlinktext","-moz-use-text-color"],color:["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkTurquoise","DarkViolet","DeepPink","DarkSkyBlue","DimGray","DodgerBlue","Feldspar","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateBlue","LightSlateGray","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","VioletRed","Wheat","White","WhiteSmoke","Yellow","YellowGreen","transparent","invert"],auto:["auto"],none:["none"],captionSide:["top","bottom","left","right"],clear:["left","right","both"],cursor:["auto","cell","context-menu","crosshair","default","help","pointer","progress","move","e-resize","all-scroll","ne-resize","nw-resize","n-resize","se-resize","sw-resize","s-resize","w-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","col-resize","row-resize","text","vertical-text","wait","alias","copy","move","no-drop","not-allowed","-moz-alias","-moz-cell","-moz-copy","-moz-grab","-moz-grabbing","-moz-contextmenu","-moz-zoom-in","-moz-zoom-out","-moz-spinning"],direction:["ltr","rtl"],bgAttachment:["scroll","fixed"],bgPosition:["top","center","bottom","left","right"],bgRepeat:["repeat","repeat-x","repeat-y","no-repeat"],borderStyle:["hidden","dotted","dashed","solid","double","groove","ridge","inset","outset","-moz-bg-inset","-moz-bg-outset","-moz-bg-solid"],borderCollapse:["collapse","separate"],overflow:["visible","hidden","scroll","-moz-scrollbars-horizontal","-moz-scrollbars-none","-moz-scrollbars-vertical"],listStyleType:["disc","circle","square","decimal","decimal-leading-zero","lower-roman","upper-roman","lower-greek","lower-alpha","lower-latin","upper-alpha","upper-latin","hebrew","armenian","georgian","cjk-ideographic","hiragana","katakana","hiragana-iroha","katakana-iroha","inherit"],listStylePosition:["inside","outside"],content:["open-quote","close-quote","no-open-quote","no-close-quote","inherit"],fontStyle:["normal","italic","oblique","inherit"],fontVariant:["normal","small-caps","inherit"],fontWeight:["normal","bold","bolder","lighter","inherit"],fontSize:["xx-small","x-small","small","medium","large","x-large","xx-large","smaller","larger"],fontFamily:["Arial","Comic Sans MS","Georgia","Tahoma","Verdana","Times New Roman","Trebuchet MS","Lucida Grande","Helvetica","serif","sans-serif","cursive","fantasy","monospace","caption","icon","menu","message-box","small-caption","status-bar","inherit"],display:["block","inline","inline-block","list-item","marker","run-in","compact","table","inline-table","table-row-group","table-column","table-column-group","table-header-group","table-footer-group","table-row","table-cell","table-caption","-moz-box","-moz-compact","-moz-deck","-moz-grid","-moz-grid-group","-moz-grid-line","-moz-groupbox","-moz-inline-block","-moz-inline-box","-moz-inline-grid","-moz-inline-stack","-moz-inline-table","-moz-marker","-moz-popup","-moz-runin","-moz-stack"],position:["static","relative","absolute","fixed","inherit"],"float":["left","right"],textAlign:["left","right","center","justify"],tableLayout:["fixed"],textDecoration:["underline","overline","line-through","blink"],textTransform:["capitalize","lowercase","uppercase","inherit"],unicodeBidi:["normal","embed","bidi-override"],whiteSpace:["normal","pre","nowrap"],verticalAlign:["baseline","sub","super","top","text-top","middle","bottom","text-bottom","inherit"],thickness:["thin","medium","thick"],userFocus:["ignore","normal"],userInput:["disabled","enabled"],userSelect:["normal"],mozBoxSizing:["content-box","padding-box","border-box"],mozBoxAlign:["start","center","end","baseline","stretch"],mozBoxDirection:["normal","reverse"],mozBoxOrient:["horizontal","vertical"],mozBoxPack:["start","center","end"]};
                                  -this.nonEditableTags={HTML:1,HEAD:1,html:1,head:1};
                                  -this.innerEditableTags={BODY:1,body:1};
                                  -var invisibleTags=this.invisibleTags={HTML:1,HEAD:1,TITLE:1,META:1,LINK:1,STYLE:1,SCRIPT:1,NOSCRIPT:1,BR:1,html:1,head:1,title:1,meta:1,link:1,style:1,script:1,noscript:1,br:1};
                                  -this.Ajax={requests:[],transport:null,states:["Uninitialized","Loading","Loaded","Interactive","Complete"],initialize:function(){this.transport=this.getXHRObject()
                                  -},getXHRObject:function(){var xhrObj=false;
                                  -try{xhrObj=new XMLHttpRequest()
                                  -}catch(e){var progid=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
                                  -for(var i=0;
                                  -i<progid.length;
                                  -++i){try{xhrObj=new ActiveXObject(progid[i])
                                  -}catch(e){continue
                                  -}break
                                  -}}finally{return xhrObj
                                  -}},request:function(options){var o=options||{};
                                  -o.type=o.type&&o.type.toLowerCase()||"get";
                                  -o.async=o.async||true;
                                  -o.dataType=o.dataType||"text";
                                  -o.contentType=o.contentType||"application/x-www-form-urlencoded";
                                  -this.requests.push(o);
                                  -var s=this.getState();
                                  -if(s=="Uninitialized"||s=="Complete"||s=="Loaded"){this.sendRequest()
                                  -}},serialize:function(data){var r=[""],rl=0;
                                  -if(data){if(typeof data=="string"){r[rl++]=data
                                  -}else{if(data.innerHTML&&data.elements){for(var i=0,el,l=(el=data.elements).length;
                                  -i<l;
                                  -i++){if(el[i].name){r[rl++]=encodeURIComponent(el[i].name);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(el[i].value);
                                  -r[rl++]="&"
                                  -}}}else{for(param in data){r[rl++]=encodeURIComponent(param);
                                  -r[rl++]="=";
                                  -r[rl++]=encodeURIComponent(data[param]);
                                  -r[rl++]="&"
                                  -}}}}return r.join("").replace(/&$/,"")
                                  -},sendRequest:function(){var t=FBL.Ajax.transport,r=FBL.Ajax.requests.shift(),data;
                                  -t.open(r.type,r.url,r.async);
                                  -t.setRequestHeader("X-Requested-With","XMLHttpRequest");
                                  -if(data=FBL.Ajax.serialize(r.data)){t.setRequestHeader("Content-Type",r.contentType)
                                  -}t.onreadystatechange=function(){FBL.Ajax.onStateChange(r)
                                  -};
                                  -t.send(data)
                                  -},onStateChange:function(options){var fn,o=options,t=this.transport;
                                  -var state=this.getState(t);
                                  -if(fn=o["on"+state]){fn(this.getResponse(o),o)
                                  -}if(state=="Complete"){var success=t.status==200,response=this.getResponse(o);
                                  -if(fn=o.onUpdate){fn(response,o)
                                  -}if(fn=o["on"+(success?"Success":"Failure")]){fn(response,o)
                                  -}t.onreadystatechange=FBL.emptyFn;
                                  -if(this.requests.length>0){setTimeout(this.sendRequest,10)
                                  -}}},getResponse:function(options){var t=this.transport,type=options.dataType;
                                  -if(t.status!=200){return t.statusText
                                  -}else{if(type=="text"){return t.responseText
                                  -}else{if(type=="html"){return t.responseText
                                  -}else{if(type=="xml"){return t.responseXML
                                  -}else{if(type=="json"){return eval("("+t.responseText+")")
                                  -}}}}}},getState:function(){return this.states[this.transport.readyState]
                                  -}};
                                  -this.createCookie=function(name,value,days){if(days){var date=new Date();
                                  -date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -var expires="; expires="+date.toGMTString()
                                  -}else{var expires=""
                                  -}document.cookie=name+"="+value+expires+"; path=/"
                                  -};
                                  -this.readCookie=function(name){var nameEQ=name+"=";
                                  -var ca=document.cookie.split(";");
                                  -for(var i=0;
                                  -i<ca.length;
                                  -i++){var c=ca[i];
                                  -while(c.charAt(0)==" "){c=c.substring(1,c.length)
                                  -}if(c.indexOf(nameEQ)==0){return c.substring(nameEQ.length,c.length)
                                  -}}return null
                                  -};
                                  -this.removeCookie=function(name){this.createCookie(name,"",-1)
                                  -};
                                  -var fixIE6BackgroundImageCache=function(doc){doc=doc||document;
                                  -try{doc.execCommand("BackgroundImageCache",false,true)
                                  -}catch(E){}};
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var calculatePixelsPerInch=function calculatePixelsPerInch(doc,body){var inch=FBL.createGlobalElement("div");
                                  -inch.style.cssText=resetStyle+"width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -body.appendChild(inch);
                                  -FBL.pixelsPerInch={x:inch.offsetWidth,y:inch.offsetHeight};
                                  -body.removeChild(inch)
                                  -};
                                  -this.SourceLink=function(url,line,type,object,instance){this.href=url;
                                  -this.instance=instance;
                                  -this.line=line;
                                  -this.type=type;
                                  -this.object=object
                                  -};
                                  -this.SourceLink.prototype={toString:function(){return this.href
                                  -},toJSON:function(){return'{"href":"'+this.href+'", '+(this.line?('"line":'+this.line+","):"")+(this.type?(' "type":"'+this.type+'",'):"")+"}"
                                  -}};
                                  -this.SourceText=function(lines,owner){this.lines=lines;
                                  -this.owner=owner
                                  -};
                                  -this.SourceText.getLineAsHTML=function(lineNo){return escapeForSourceLine(this.lines[lineNo-1])
                                  -}
                                  -}).apply(FBL);
                                  -FBL.ns(function(){with(FBL){FBL.cacheID="firebug"+new Date().getTime();
                                  -FBL.documentCache={};
                                  -var modules=[];
                                  -var panelTypes=[];
                                  -var panelTypeMap={};
                                  -var reps=[];
                                  -var parentPanelMap={};
                                  -window.Firebug=FBL.Firebug={version:"Firebug Lite 1.3.0a5",revision:"$Revision: 5716 $",modules:modules,panelTypes:panelTypes,panelTypeMap:panelTypeMap,reps:reps,initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.initialize","initializing application")
                                  -}Firebug.browser=new Context(Env.browser);
                                  -Firebug.context=Firebug.browser;
                                  -cacheDocument();
                                  -if(Firebug.Inspector){Firebug.Inspector.create()
                                  -}FirebugChrome.initialize();
                                  -dispatch(modules,"initialize",[]);
                                  -if(Env.onLoad){var onLoad=Env.onLoad;
                                  -delete Env.onLoad;
                                  -setTimeout(onLoad,200)
                                  -}},shutdown:function(){if(Firebug.Inspector){Firebug.Inspector.destroy()
                                  -}dispatch(modules,"shutdown",[]);
                                  -var chromeMap=FirebugChrome.chromeMap;
                                  -for(var name in chromeMap){if(chromeMap.hasOwnProperty(name)){chromeMap[name].destroy()
                                  -}}for(var name in documentCache){documentCache[name].removeAttribute(cacheID);
                                  -documentCache[name]=null;
                                  -delete documentCache[name]
                                  -}documentCache=null;
                                  -delete FBL.documentCache;
                                  -Firebug.browser=null;
                                  -Firebug.context=null
                                  -},registerModule:function(){modules.push.apply(modules,arguments);
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.registerModule")
                                  -}},registerPanel:function(){panelTypes.push.apply(panelTypes,arguments);
                                  -for(var i=0,panelType;
                                  -panelType=arguments[i];
                                  -++i){panelTypeMap[panelType.prototype.name]=arguments[i];
                                  -if(panelType.prototype.parentPanel){parentPanelMap[panelType.prototype.parentPanel]=1
                                  -}}if(FBTrace.DBG_INITIALIZE){for(var i=0;
                                  -i<arguments.length;
                                  -++i){FBTrace.sysout("Firebug.registerPanel",arguments[i].prototype.name)
                                  -}}},registerRep:function(){reps.push.apply(reps,arguments)
                                  -},unregisterRep:function(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){remove(reps,arguments[i])
                                  -}},setDefaultReps:function(funcRep,rep){FBL.defaultRep=rep;
                                  -FBL.defaultFuncRep=funcRep
                                  -},getRep:function(object){var type=typeof object;
                                  -if(isIE&&isFunction(object)){type="function"
                                  -}for(var i=0;
                                  -i<reps.length;
                                  -++i){var rep=reps[i];
                                  -try{if(rep.supportsObject(object,type)){if(FBTrace.DBG_DOM){FBTrace.sysout("getRep type: "+type+" object: "+object,rep)
                                  -}return rep
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.getRep FAILS: ",exc.message||exc);
                                  -FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className)
                                  -}}}return(type=="function")?defaultFuncRep:defaultRep
                                  -},getRepObject:function(node){var target=null;
                                  -for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(hasClass(child,"repTarget")){target=child
                                  -}if(child.repObject){if(!target&&hasClass(child,"repIgnore")){break
                                  -}else{return child.repObject
                                  -}}}},getRepNode:function(node){for(var child=node;
                                  -child;
                                  -child=child.parentNode){if(child.repObject){return child
                                  -}}},getElementByRepObject:function(element,object){for(var child=element.firstChild;
                                  -child;
                                  -child=child.nextSibling){if(child.repObject==object){return child
                                  -}}},getPref:function(name){return Firebug[name]
                                  -},setPref:function(name,value){Firebug[name]=value;
                                  -this.savePrefs()
                                  -},setPrefs:function(prefs){for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
                                  -}}this.savePrefs()
                                  -},restorePrefs:function(){var Options=Env.Options;
                                  -for(var name in Options){Firebug[name]=Options[name]
                                  -}},loadPrefs:function(prefs){this.restorePrefs();
                                  -prefs=prefs||eval("("+readCookie("FirebugLite")+")");
                                  -for(var name in prefs){if(prefs.hasOwnProperty(name)){Firebug[name]=prefs[name]
                                  -}}},savePrefs:function(){var json=["{"],jl=0;
                                  -var Options=Env.Options;
                                  -for(var name in Options){if(Options.hasOwnProperty(name)){var value=Firebug[name];
                                  -json[++jl]='"';
                                  -json[++jl]=name;
                                  -var type=typeof value;
                                  -if(type=="boolean"||type=="number"){json[++jl]='":';
                                  -json[++jl]=value;
                                  -json[++jl]=","
                                  -}else{json[++jl]='":"';
                                  -json[++jl]=value;
                                  -json[++jl]='",'
                                  -}}}json.length=jl--;
                                  -json[++jl]="}";
                                  -createCookie("FirebugLite",json.join(""))
                                  -},erasePrefs:function(){removeCookie("FirebugLite")
                                  -}};
                                  -Firebug.restorePrefs();
                                  -if(!Env.Options.enablePersistent||Env.Options.enablePersistent&&Env.isChromeContext||Env.isDevelopmentMode){Env.browser.window.Firebug=FBL.Firebug
                                  -}FBL.cacheDocument=function cacheDocument(){var els=Firebug.browser.document.getElementsByTagName("*");
                                  -for(var i=0,l=els.length,el;
                                  -i<l;
                                  -i++){el=els[i];
                                  -el[cacheID]=i;
                                  -documentCache[i]=el
                                  -}};
                                  -Firebug.Module={initialize:function(){},shutdown:function(){},initContext:function(context){},reattachContext:function(browser,context){},destroyContext:function(context,persistedState){},showContext:function(browser,context){},loadedContext:function(context){},showPanel:function(browser,panel){},showSidePanel:function(browser,panel){},updateOption:function(name,value){},getObjectByURL:function(context,url){}};
                                  -Firebug.Panel={name:"HelloWorld",title:"Hello World!",parentPanel:null,options:{hasCommandLine:false,hasStatusBar:false,hasToolButtons:false,isPreRendered:false,innerHTMLSync:false},tabNode:null,panelNode:null,sidePanelNode:null,statusBarNode:null,toolButtonsNode:null,panelBarNode:null,sidePanelBarBoxNode:null,sidePanelBarNode:null,sidePanelBar:null,searchable:false,editable:true,order:2147483647,statusSeparator:"<",create:function(context,doc){this.hasSidePanel=parentPanelMap.hasOwnProperty(this.name);
                                  -this.panelBarNode=$("fbPanelBar1");
                                  -this.sidePanelBarBoxNode=$("fbPanelBar2");
                                  -if(this.hasSidePanel){this.sidePanelBar=extend({},PanelBar);
                                  -this.sidePanelBar.create(this)
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -if(options.isPreRendered){this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}}else{var containerSufix=this.parentPanel?"2":"1";
                                  -var panelNode=this.panelNode=createElement("div",{id:panelId,className:"fbPanel"});
                                  -$("fbPanel"+containerSufix).appendChild(panelNode);
                                  -var tabHTML='<span class="fbTabL"></span><span class="fbTabText">'+this.title+'</span><span class="fbTabR"></span>';
                                  -var tabNode=this.tabNode=createElement("a",{id:panelId+"Tab",className:"fbTab fbHover",innerHTML:tabHTML});
                                  -if(isIE6){tabNode.href="javascript:void(0)"
                                  -}var panelBarNode=this.parentPanel?Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode:this.panelBarNode;
                                  -panelBarNode.appendChild(tabNode);
                                  -tabNode.style.display="block";
                                  -if(options.hasToolButtons){this.toolButtonsNode=createElement("span",{id:panelId+"Buttons",className:"fbToolbarButtons"});
                                  -$("fbToolbarButtons").appendChild(this.toolButtonsNode)
                                  -}if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=createElement("span",{id:panelId+"StatusBar",className:"fbToolbarButtons fbStatusBar"});
                                  -this.statusBarBox.appendChild(this.statusBarNode)
                                  -}}var contentNode=this.contentNode=createElement("div");
                                  -this.panelNode.appendChild(contentNode);
                                  -this.containerNode=this.panelNode.parentNode;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.create",this.name)
                                  -}},destroy:function(state){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.destroy",this.name)
                                  -}if(this.hasSidePanel){this.sidePanelBar.destroy();
                                  -this.sidePanelBar=null
                                  -}this.options=null;
                                  -this.name=null;
                                  -this.parentPanel=null;
                                  -this.tabNode=null;
                                  -this.panelNode=null;
                                  -this.contentNode=null;
                                  -this.containerNode=null
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.initialize",this.name)
                                  -}if(this.hasSidePanel){this.sidePanelBar.initialize()
                                  -}var options=this.options=extend(Firebug.Panel.options,this.options);
                                  -var panelId="fb"+this.name;
                                  -this.panelNode=$(panelId);
                                  -this.tabNode=$(panelId+"Tab");
                                  -this.tabNode.style.display="block";
                                  -if(options.hasStatusBar){this.statusBarBox=$("fbStatusBarBox");
                                  -this.statusBarNode=$(panelId+"StatusBar")
                                  -}if(options.hasToolButtons){this.toolButtonsNode=$(panelId+"Buttons")
                                  -}this.containerNode=this.panelNode.parentNode;
                                  -this.containerNode.scrollTop=this.lastScrollTop
                                  -},shutdown:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.Panel.shutdown",this.name)
                                  -}if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.hideLargeCommandLine()
                                  -}if(this.hasSidePanel){}this.lastScrollTop=this.containerNode.scrollTop;
                                  -this.toolButtonsNode=null;
                                  -this.statusBarBox=null;
                                  -this.statusBarNode=null
                                  -},detach:function(oldChrome,newChrome){if(oldChrome.selectedPanel.name==this.name){this.lastScrollTop=oldChrome.selectedPanel.containerNode.scrollTop
                                  -}},reattach:function(doc){if(this.options.innerHTMLSync){this.synchronizeUI()
                                  -}},synchronizeUI:function(){this.containerNode.scrollTop=this.lastScrollTop||0
                                  -},show:function(state){var options=this.options;
                                  -if(options.hasStatusBar){this.statusBarBox.style.display="inline";
                                  -this.statusBarNode.style.display="inline"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="inline"
                                  -}this.panelNode.style.display="block";
                                  -if(!this.parentPanel){Firebug.chrome.layout(this)
                                  -}},hide:function(state){var options=this.options;
                                  -if(options.hasStatusBar){this.statusBarBox.style.display="none";
                                  -this.statusBarNode.style.display="none"
                                  -}if(options.hasToolButtons){this.toolButtonsNode.style.display="none"
                                  -}this.panelNode.style.display="none"
                                  -},watchWindow:function(win){},unwatchWindow:function(win){},updateOption:function(name,value){},showToolbarButtons:function(buttonsId,show){try{if(!this.context.browser){if(FBTrace.DBG_ERRORS){FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:",this)
                                  -}return
                                  -}var buttons=this.context.browser.chrome.$(buttonsId);
                                  -if(buttons){collapse(buttons,show?"false":"true")
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS",exc);
                                  -if(!this.context.browser){FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser")
                                  -}}}},supportsObject:function(object){return 0
                                  -},hasObject:function(object){return false
                                  -},select:function(object,forceUpdate){if(!object){object=this.getDefaultSelection(this.context)
                                  -}if(FBTrace.DBG_PANELS){FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection)
                                  -}if(forceUpdate||object!=this.selection){this.selection=object;
                                  -this.updateSelection(object)
                                  -}},updateSelection:function(object){},startInspecting:function(){},stopInspecting:function(object,cancelled){},getDefaultSelection:function(context){return null
                                  -},search:function(text){}};
                                  -if(FBL.domplate){Firebug.Rep=domplate({className:"",inspectable:true,supportsObject:function(object,type){return false
                                  -},inspectObject:function(object,context){Firebug.chrome.select(object)
                                  -},browseObject:function(object,context){},persistObject:function(object,context){},getRealObject:function(object,context){return object
                                  -},getTitle:function(object){var label=safeToString(object);
                                  -var re=/\[object (.*?)\]/;
                                  -var m=re.exec(label);
                                  -return m?m[1]:label
                                  -},getTooltip:function(object){return null
                                  -},getContextMenuItems:function(object,target,context){return[]
                                  -},STR:function(name){return $STR(name)
                                  -},cropString:function(text){return cropString(text)
                                  -},cropMultipleLines:function(text,limit){return cropMultipleLines(text,limit)
                                  -},toLowerCase:function(text){return text?text.toLowerCase():text
                                  -},plural:function(n){return n==1?"":"s"
                                  -}})
                                  -}}});
                                  -FBL.ns(function(){with(FBL){FBL.Controller={controllers:null,controllerContext:null,initialize:function(context){this.controllers=[];
                                  -this.controllerContext=context||Firebug.chrome
                                  -},shutdown:function(){this.removeControllers()
                                  -},addController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){if(typeof arg[0]=="string"){arg[0]=$$(arg[0],this.controllerContext)
                                  -}var handler=arg[2];
                                  -arg[2]=bind(handler,this);
                                  -arg[3]=handler;
                                  -this.controllers.push(arg);
                                  -addEvent.apply(this,arg)
                                  -}},removeController:function(){for(var i=0,arg;
                                  -arg=arguments[i];
                                  -i++){for(var j=0,c;
                                  -c=this.controllers[j];
                                  -j++){if(arg[0]==c[0]&&arg[1]==c[1]&&arg[2]==c[3]){removeEvent.apply(this,c)
                                  -}}}},removeControllers:function(){for(var i=0,c;
                                  -c=this.controllers[i];
                                  -i++){removeEvent.apply(this,c)
                                  -}}};
                                  -FBL.PanelBar={panelMap:null,selectedPanel:null,parentPanelName:null,create:function(ownerPanel){this.panelMap={};
                                  -this.ownerPanel=ownerPanel;
                                  -if(ownerPanel){ownerPanel.sidePanelBarNode=createElement("span");
                                  -ownerPanel.sidePanelBarNode.style.display="none";
                                  -ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode)
                                  -}var panels=Firebug.panelTypes;
                                  -for(var i=0,p;
                                  -p=panels[i];
                                  -i++){if(!ownerPanel&&!p.prototype.parentPanel||ownerPanel&&p.prototype.parentPanel&&ownerPanel.name==p.prototype.parentPanel){this.addPanel(p.prototype.name)
                                  -}}},destroy:function(){PanelBar.shutdown.call(this);
                                  -for(var name in this.panelMap){this.removePanel(name);
                                  -var panel=this.panelMap[name];
                                  -panel.destroy();
                                  -this.panelMap[name]=null;
                                  -delete this.panelMap[name]
                                  -}this.panelMap=null;
                                  -this.ownerPanel=null
                                  -},initialize:function(){if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="inline"
                                  -}for(var name in this.panelMap){(function(self,name){var onTabClick=function onTabClick(){self.selectPanel(name);
                                  -return false
                                  -};
                                  -Firebug.chrome.addController([self.panelMap[name].tabNode,"mousedown",onTabClick])
                                  -})(this,name)
                                  -}},shutdown:function(){var selectedPanel=this.selectedPanel;
                                  -if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}if(this.ownerPanel){this.ownerPanel.sidePanelBarNode.style.display="none"
                                  -}this.selectedPanel=null
                                  -},addPanel:function(panelName,parentPanel){var PanelType=Firebug.panelTypeMap[panelName];
                                  -var panel=this.panelMap[panelName]=new PanelType();
                                  -panel.create()
                                  -},removePanel:function(panelName){var panel=this.panelMap[panelName];
                                  -if(panel.hasOwnProperty(panelName)){panel.destroy()
                                  -}},selectPanel:function(panelName){var selectedPanel=this.selectedPanel;
                                  -var panel=this.panelMap[panelName];
                                  -if(panel&&selectedPanel!=panel){if(selectedPanel){removeClass(selectedPanel.tabNode,"fbSelectedTab");
                                  -selectedPanel.hide();
                                  -selectedPanel.shutdown()
                                  -}if(!panel.parentPanel){FirebugChrome.selectedPanelName=panelName
                                  -}this.selectedPanel=panel;
                                  -setClass(panel.tabNode,"fbSelectedTab");
                                  -panel.initialize();
                                  -panel.show()
                                  -}},getPanel:function(panelName){var panel=this.panelMap[panelName];
                                  -return panel
                                  -}};
                                  -FBL.Button=function(options){options=options||{};
                                  -append(this,options);
                                  -this.state="unpressed";
                                  -this.display="unpressed";
                                  -if(this.element){this.container=this.element.parentNode
                                  -}else{this.shouldDestroy=true;
                                  -this.container=this.owner.getPanel().toolButtonsNode;
                                  -this.element=createElement("a",{className:this.baseClassName+" "+this.className+" fbHover",innerHTML:this.caption});
                                  -if(this.title){this.element.title=this.title
                                  -}this.container.appendChild(this.element)
                                  -}};
                                  -Button.prototype=extend(Controller,{type:"normal",caption:"caption",title:null,className:"",baseClassName:"fbButton",pressedClassName:"fbBtnPressed",element:null,container:null,owner:null,state:null,display:null,destroy:function(){this.shutdown();
                                  -if(this.shouldDestroy){this.container.removeChild(this.element)
                                  -}this.element=null;
                                  -this.container=null;
                                  -this.owner=null
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var element=this.element;
                                  -this.addController([element,"mousedown",this.handlePress]);
                                  -if(this.type=="normal"){this.addController([element,"mouseup",this.handleUnpress],[element,"mouseout",this.handleUnpress],[element,"click",this.handleClick])
                                  -}},shutdown:function(){Controller.shutdown.apply(this)
                                  -},restore:function(){this.changeState("unpressed")
                                  -},changeState:function(state){this.state=state;
                                  -this.changeDisplay(state)
                                  -},changeDisplay:function(display){if(display!=this.display){if(display=="pressed"){setClass(this.element,this.pressedClassName)
                                  -}else{if(display=="unpressed"){removeClass(this.element,this.pressedClassName)
                                  -}}this.display=display
                                  -}},handlePress:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){this.changeDisplay("pressed");
                                  -this.beforeClick=true
                                  -}else{if(this.type=="toggle"){if(this.state=="pressed"){this.changeState("unpressed");
                                  -if(this.onUnpress){this.onUnpress.apply(this.owner,arguments)
                                  -}}else{this.changeState("pressed");
                                  -if(this.onPress){this.onPress.apply(this.owner,arguments)
                                  -}}if(this.onClick){this.onClick.apply(this.owner,arguments)
                                  -}}}return false
                                  -},handleUnpress:function(event){cancelEvent(event,true);
                                  -if(this.beforeClick){this.changeDisplay("unpressed")
                                  -}return false
                                  -},handleClick:function(event){cancelEvent(event,true);
                                  -if(this.type=="normal"){if(this.onClick){this.onClick.apply(this.owner)
                                  -}this.changeState("unpressed")
                                  -}this.beforeClick=false;
                                  -return false
                                  -}});
                                  -FBL.IconButton=function(){Button.apply(this,arguments)
                                  -};
                                  -IconButton.prototype=extend(Button.prototype,{baseClassName:"fbIconButton",pressedClassName:"fbIconPressed"});
                                  -var menuItemProps={"class":"$item.className",type:"$item.type",value:"$item.value",command:"$item.command"};
                                  -if(isIE6){menuItemProps.href="javascript:void(0)"
                                  -}if(FBL.domplate){var MenuPlate=domplate(Firebug.Rep,{tag:DIV({"class":"fbMenu fbShadow"},DIV({"class":"fbMenuContent fbShadowContent"},FOR("item","$object.items|memberIterator",TAG("$item.tag",{item:"$item"})))),itemTag:A(menuItemProps,"$item.label"),checkBoxTag:A(extend(menuItemProps,{checked:"$item.checked"}),"$item.label"),radioButtonTag:A(extend(menuItemProps,{selected:"$item.selected"}),"$item.label"),groupTag:A(extend(menuItemProps,{child:"$item.child"}),"$item.label"),shortcutTag:A(menuItemProps,"$item.label",SPAN({"class":"fbMenuShortcutKey"},"$item.key")),separatorTag:SPAN({"class":"fbMenuSeparator"}),memberIterator:function(items){var result=[];
                                  -for(var i=0,length=items.length;
                                  -i<length;
                                  -i++){var item=items[i];
                                  -if(typeof item=="string"&&item.indexOf("-")==0){result.push({tag:this.separatorTag});
                                  -continue
                                  -}item=extend(item,{});
                                  -item.type=item.type||"";
                                  -item.value=item.value||"";
                                  -var type=item.type;
                                  -item.tag=this.itemTag;
                                  -var className=item.className||"";
                                  -className+="fbMenuOption fbHover ";
                                  -if(type=="checkbox"){className+="fbMenuCheckBox ";
                                  -item.tag=this.checkBoxTag
                                  -}else{if(type=="radiobutton"){className+="fbMenuRadioButton ";
                                  -item.tag=this.radioButtonTag
                                  -}else{if(type=="group"){className+="fbMenuGroup ";
                                  -item.tag=this.groupTag
                                  -}else{if(type=="shortcut"){className+="fbMenuShortcut ";
                                  -item.tag=this.shortcutTag
                                  -}}}}if(item.checked){className+="fbMenuChecked "
                                  -}else{if(item.selected){className+="fbMenuRadioSelected "
                                  -}}if(item.disabled){className+="fbMenuDisabled "
                                  -}item.className=className;
                                  -result.push(item)
                                  -}return result
                                  -}})
                                  -}FBL.Menu=function(options){if(!options.element){if(options.getItems){options.items=options.getItems()
                                  -}options.element=MenuPlate.tag.append({object:options},getElementByClass(Firebug.chrome.document,"fbBody"),MenuPlate)
                                  -}append(this,options);
                                  -if(typeof this.element=="string"){this.id=this.element;
                                  -this.element=$(this.id)
                                  -}else{if(this.id){this.element.id=this.id
                                  -}}this.element.firebugIgnore=true;
                                  -this.elementStyle=this.element.style;
                                  -this.isVisible=false;
                                  -this.handleMouseDown=bind(this.handleMouseDown,this);
                                  -this.handleMouseOver=bind(this.handleMouseOver,this);
                                  -this.handleMouseOut=bind(this.handleMouseOut,this);
                                  -this.handleWindowMouseDown=bind(this.handleWindowMouseDown,this)
                                  -};
                                  -var menuMap={};
                                  -Menu.prototype=extend(Controller,{destroy:function(){this.hide();
                                  -if(this.parentMenu){this.parentMenu.childMenu=null
                                  -}this.element.parentNode.removeChild(this.element);
                                  -this.element=null;
                                  -this.elementStyle=null;
                                  -this.parentMenu=null;
                                  -this.parentTarget=null
                                  -},initialize:function(){Controller.initialize.call(this);
                                  -this.addController([this.element,"mousedown",this.handleMouseDown],[this.element,"mouseover",this.handleMouseOver])
                                  -},shutdown:function(){Controller.shutdown.call(this)
                                  -},show:function(x,y){this.initialize();
                                  -if(this.isVisible){return
                                  -}x=x||0;
                                  -y=y||0;
                                  -if(this.parentMenu){var oldChildMenu=this.parentMenu.childMenu;
                                  -if(oldChildMenu&&oldChildMenu!=this){oldChildMenu.destroy()
                                  -}this.parentMenu.childMenu=this
                                  -}else{addEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown)
                                  -}this.elementStyle.display="block";
                                  -this.elementStyle.visibility="hidden";
                                  -var size=Firebug.chrome.getSize();
                                  -x=Math.min(x,size.width-this.element.clientWidth-10);
                                  -x=Math.max(x,0);
                                  -y=Math.min(y,size.height-this.element.clientHeight-10);
                                  -y=Math.max(y,0);
                                  -this.elementStyle.left=x+"px";
                                  -this.elementStyle.top=y+"px";
                                  -this.elementStyle.visibility="visible";
                                  -this.isVisible=true;
                                  -if(isFunction(this.onShow)){this.onShow.apply(this,arguments)
                                  -}},hide:function(){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -if(!this.isVisible){return
                                  -}this.elementStyle.display="none";
                                  -if(this.childMenu){this.childMenu.destroy();
                                  -this.childMenu=null
                                  -}if(this.parentTarget){removeClass(this.parentTarget,"fbMenuGroupSelected")
                                  -}this.isVisible=false;
                                  -this.shutdown();
                                  -if(isFunction(this.onHide)){this.onHide.apply(this,arguments)
                                  -}},showChildMenu:function(target){var id=target.getAttribute("child");
                                  -var parent=this;
                                  -var target=target;
                                  -this.showChildTimeout=Firebug.chrome.window.setTimeout(function(){var box=Firebug.chrome.getElementBox(target);
                                  -var childMenuObject=menuMap.hasOwnProperty(id)?menuMap[id]:{element:$(id)};
                                  -var childMenu=new Menu(extend(childMenuObject,{parentMenu:parent,parentTarget:target}));
                                  -var offsetLeft=isIE6?-1:-6;
                                  -childMenu.show(box.left+box.width+offsetLeft,box.top-6);
                                  -setClass(target,"fbMenuGroupSelected")
                                  -},350)
                                  -},clearHideTimeout:function(){if(this.hideTimeout){Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -delete this.hideTimeout
                                  -}},clearShowChildTimeout:function(){if(this.showChildTimeout){Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -this.showChildTimeout=null
                                  -}},handleMouseDown:function(event){cancelEvent(event,true);
                                  -var topParent=this;
                                  -while(topParent.parentMenu){topParent=topParent.parentMenu
                                  -}var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target||hasClass(target,"fbMenuGroup")){return false
                                  -}if(target&&!hasClass(target,"fbMenuDisabled")){var type=target.getAttribute("type");
                                  -if(type=="checkbox"){var checked=target.getAttribute("checked");
                                  -var value=target.getAttribute("value");
                                  -var wasChecked=hasClass(target,"fbMenuChecked");
                                  -if(wasChecked){removeClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","")
                                  -}else{setClass(target,"fbMenuChecked");
                                  -target.setAttribute("checked","true")
                                  -}if(isFunction(this.onCheck)){this.onCheck.call(this,target,value,!wasChecked)
                                  -}}if(type=="radiobutton"){var selectedRadios=getElementsByClass(target.parentNode,"fbMenuRadioSelected");
                                  -var group=target.getAttribute("group");
                                  -for(var i=0,length=selectedRadios.length;
                                  -i<length;
                                  -i++){radio=selectedRadios[i];
                                  -if(radio.getAttribute("group")==group){removeClass(radio,"fbMenuRadioSelected");
                                  -radio.setAttribute("selected","")
                                  -}}setClass(target,"fbMenuRadioSelected");
                                  -target.setAttribute("selected","true")
                                  -}var cmd=target.getAttribute("command");
                                  -var handler=this[cmd];
                                  -var closeMenu=true;
                                  -if(handler){closeMenu=handler.call(this,target)!==false
                                  -}if(closeMenu){topParent.hide()
                                  -}}return false
                                  -},handleWindowMouseDown:function(event){var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenu");
                                  -if(!target){removeEvent(Firebug.chrome.document,"mousedown",this.handleWindowMouseDown);
                                  -this.hide()
                                  -}},handleMouseOver:function(event){this.clearHideTimeout();
                                  -this.clearShowChildTimeout();
                                  -var target=event.target||event.srcElement;
                                  -target=getAncestorByClass(target,"fbMenuOption");
                                  -if(!target){return
                                  -}var childMenu=this.childMenu;
                                  -if(childMenu){removeClass(childMenu.parentTarget,"fbMenuGroupSelected");
                                  -if(childMenu.parentTarget!=target&&childMenu.isVisible){childMenu.clearHideTimeout();
                                  -childMenu.hideTimeout=Firebug.chrome.window.setTimeout(function(){childMenu.destroy()
                                  -},300)
                                  -}}if(hasClass(target,"fbMenuGroup")){this.showChildMenu(target)
                                  -}}});
                                  -Menu.register=function(object){menuMap[object.id]=object
                                  -};
                                  -Menu.check=function(element){setClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","true")
                                  -};
                                  -Menu.uncheck=function(element){removeClass(element,"fbMenuChecked");
                                  -element.setAttribute("checked","")
                                  -};
                                  -Menu.disable=function(element){setClass(element,"fbMenuDisabled")
                                  -};
                                  -Menu.enable=function(element){removeClass(element,"fbMenuDisabled")
                                  -};
                                  -function StatusBar(){}StatusBar.prototype=extend(Controller,{})
                                  -}});
                                  -FBL.ns(function(){with(FBL){FBL.Context=function(win){this.window=win.window;
                                  -this.document=win.document;
                                  -if(isIE&&!this.window.eval){this.window.execScript("null");
                                  -if(!this.window.eval){throw new Error("Firebug Error: eval() method not found in this window")
                                  -}}this.eval=this.window.eval("new Function('try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }')")
                                  -};
                                  -FBL.Context.prototype={evaluate:function(expr,context,api,errorHandler){expr=stripNewLines(expr);
                                  -context=context||"window";
                                  -var cmd,result;
                                  -if(context=="window"){cmd=api?"with("+api+"){ ("+expr+") }":"("+expr+")";
                                  -result=this.eval(cmd);
                                  -if(result&&result[evalError]){cmd=api?"with("+api+"){ "+expr+" }":expr;
                                  -result=this.eval(cmd)
                                  -}}else{cmd=api?"(function(arguments){ with("+api+"){ return ("+expr+") } }).call("+context+",undefined)":"(function(arguments){ return ("+expr+") }).call("+context+",undefined)";
                                  -result=this.eval(cmd);
                                  -if(result&&result[evalError]){cmd=api?"(function(arguments){ with("+api+"){ "+expr+" } }).call("+context+",undefined)":"(function(arguments){ "+expr+" }).call("+context+",undefined)";
                                  -result=this.eval(cmd)
                                  -}}if(result&&result[evalError]){var msg=result.name?(result.name+": "):"";
                                  -msg+=result.message||result;
                                  -if(errorHandler){result=errorHandler(msg)
                                  -}else{result=msg
                                  -}}return result
                                  -},getWindowSize:function(){var width=0,height=0,el;
                                  -if(typeof this.window.innerWidth=="number"){width=this.window.innerWidth;
                                  -height=this.window.innerHeight
                                  -}else{if((el=this.document.documentElement)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}else{if((el=this.document.body)&&(el.clientHeight||el.clientWidth)){width=el.clientWidth;
                                  -height=el.clientHeight
                                  -}}}return{width:width,height:height}
                                  -},getWindowScrollSize:function(){var width=0,height=0,el;
                                  -if(!isIEQuiksMode&&(el=this.document.documentElement)&&(el.scrollHeight||el.scrollWidth)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}if((el=this.document.body)&&(el.scrollHeight||el.scrollWidth)&&(el.scrollWidth>width||el.scrollHeight>height)){width=el.scrollWidth;
                                  -height=el.scrollHeight
                                  -}return{width:width,height:height}
                                  -},getWindowScrollPosition:function(){var top=0,left=0,el;
                                  -if(typeof this.window.pageYOffset=="number"){top=this.window.pageYOffset;
                                  -left=this.window.pageXOffset
                                  -}else{if((el=this.document.body)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}else{if((el=this.document.documentElement)&&(el.scrollTop||el.scrollLeft)){top=el.scrollTop;
                                  -left=el.scrollLeft
                                  -}}}return{top:top,left:left}
                                  -},getElementFromPoint:function(x,y){if(isOpera||isSafari&&!Env.isChromeExtension){var scroll=this.getWindowScrollPosition();
                                  -return this.document.elementFromPoint(x+scroll.left,y+scroll.top)
                                  -}else{return this.document.elementFromPoint(x,y)
                                  -}},getElementPosition:function(el){var left=0;
                                  -var top=0;
                                  -do{left+=el.offsetLeft;
                                  -top+=el.offsetTop
                                  -}while(el=el.offsetParent);
                                  -return{left:left,top:top}
                                  -},getElementBox:function(el){var result={};
                                  -if(el.getBoundingClientRect){var rect=el.getBoundingClientRect();
                                  -var offset=isIE?this.document.body.clientTop||this.document.documentElement.clientTop:0;
                                  -var scroll=this.getWindowScrollPosition();
                                  -result.top=Math.round(rect.top-offset+scroll.top);
                                  -result.left=Math.round(rect.left-offset+scroll.left);
                                  -result.height=Math.round(rect.bottom-rect.top);
                                  -result.width=Math.round(rect.right-rect.left)
                                  -}else{var position=this.getElementPosition(el);
                                  -result.top=position.top;
                                  -result.left=position.left;
                                  -result.height=el.offsetHeight;
                                  -result.width=el.offsetWidth
                                  -}return result
                                  -},getMeasurement:function(el,name){var result={value:0,unit:"px"};
                                  -var cssValue=this.getCSS(el,name);
                                  -if(!cssValue){return result
                                  -}if(cssValue.toLowerCase()=="auto"){return result
                                  -}var reMeasure=/(\d+\.?\d*)(.*)/;
                                  -var m=cssValue.match(reMeasure);
                                  -if(m){result.value=m[1]-0;
                                  -result.unit=m[2].toLowerCase()
                                  -}return result
                                  -},getMeasurementInPixels:function(el,name){if(!el){return null
                                  -}var m=this.getMeasurement(el,name);
                                  -var value=m.value;
                                  -var unit=m.unit;
                                  -if(unit=="px"){return value
                                  -}else{if(unit=="pt"){return this.pointsToPixels(name,value)
                                  -}}if(unit=="em"){return this.emToPixels(el,value)
                                  -}else{if(unit=="%"){return this.percentToPixels(el,value)
                                  -}}},getMeasurementBox1:function(el,name){var sufixes=["Top","Left","Bottom","Right"];
                                  -var result=[];
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=Math.round(this.getMeasurementInPixels(el,name+sufix))
                                  -}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getMeasurementBox:function(el,name){var result=[];
                                  -var sufixes=name=="border"?["TopWidth","LeftWidth","BottomWidth","RightWidth"]:["Top","Left","Bottom","Right"];
                                  -if(isIE){var propName,cssValue;
                                  -var autoMargin=null;
                                  -for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){propName=name+sufix;
                                  -cssValue=el.currentStyle[propName]||el.style[propName];
                                  -if(cssValue=="auto"){if(!autoMargin){autoMargin=this.getCSSAutoMarginBox(el)
                                  -}result[i]=autoMargin[sufix.toLowerCase()]
                                  -}else{result[i]=this.getMeasurementInPixels(el,propName)
                                  -}}}else{for(var i=0,sufix;
                                  -sufix=sufixes[i];
                                  -i++){result[i]=this.getMeasurementInPixels(el,name+sufix)
                                  -}}return{top:result[0],left:result[1],bottom:result[2],right:result[3]}
                                  -},getCSSAutoMarginBox:function(el){if(isIE&&" meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ")!=-1){return{top:0,left:0,bottom:0,right:0}
                                  -}if(isIE&&" h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ")==-1){return{top:0,left:0,bottom:0,right:0}
                                  -}var offsetTop=0;
                                  -if(false&&isIEStantandMode){var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -offsetTop=scrollSize.height
                                  -}var box=this.document.createElement("div");
                                  -box.style.cssText="margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -var clone=el.cloneNode(false);
                                  -var text=this.document.createTextNode("&nbsp;");
                                  -clone.appendChild(text);
                                  -box.appendChild(clone);
                                  -this.document.body.appendChild(box);
                                  -var marginTop=clone.offsetTop-box.offsetTop-1;
                                  -var marginBottom=box.offsetHeight-clone.offsetHeight-2-marginTop;
                                  -var marginLeft=clone.offsetLeft-box.offsetLeft-1;
                                  -var marginRight=box.offsetWidth-clone.offsetWidth-2-marginLeft;
                                  -this.document.body.removeChild(box);
                                  -return{top:marginTop+offsetTop,left:marginLeft,bottom:marginBottom-offsetTop,right:marginRight}
                                  -},getFontSizeInPixels:function(el){var size=this.getMeasurement(el,"fontSize");
                                  -if(size.unit=="px"){return size.value
                                  -}var computeDirtyFontSize=function(el,calibration){var div=this.document.createElement("div");
                                  -var divStyle=offscreenStyle;
                                  -if(calibration){divStyle+=" font-size:"+calibration+"px;"
                                  -}div.style.cssText=divStyle;
                                  -div.innerHTML="A";
                                  -el.appendChild(div);
                                  -var value=div.offsetHeight;
                                  -el.removeChild(div);
                                  -return value
                                  -};
                                  -var rate=200/225;
                                  -var value=computeDirtyFontSize(el);
                                  -return value*rate
                                  -},pointsToPixels:function(name,value,returnFloat){var axis=/Top$|Bottom$/.test(name)?"y":"x";
                                  -var result=value*pixelsPerInch[axis]/72;
                                  -return returnFloat?result:Math.round(result)
                                  -},emToPixels:function(el,value){if(!el){return null
                                  -}var fontSize=this.getFontSizeInPixels(el);
                                  -return Math.round(value*fontSize)
                                  -},exToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"ex;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},percentToPixels:function(el,value){if(!el){return null
                                  -}var div=this.document.createElement("div");
                                  -div.style.cssText=offscreenStyle+"width:"+value+"%;";
                                  -el.appendChild(div);
                                  -var value=div.offsetWidth;
                                  -el.removeChild(div);
                                  -return value
                                  -},getCSS:isIE?function(el,name){return el.currentStyle[name]||el.style[name]||undefined
                                  -}:function(el,name){return this.document.defaultView.getComputedStyle(el,null)[name]||el.style[name]||undefined
                                  -}};
                                  -var evalError="___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;"
                                  -}});
                                  -FBL.ns(function(){with(FBL){var WindowDefaultOptions={type:"frame",id:"FirebugUI",height:250},commandLine,fbTop,fbContent,fbContentStyle,fbBottom,fbBtnInspect,fbToolbar,fbPanelBox1,fbPanelBox1Style,fbPanelBox2,fbPanelBox2Style,fbPanelBar2Box,fbPanelBar2BoxStyle,fbHSplitter,fbVSplitter,fbVSplitterStyle,fbPanel1,fbPanel1Style,fbPanel2,fbPanel2Style,fbConsole,fbConsoleStyle,fbHTML,fbCommandLine,fbLargeCommandLine,fbLargeCommandButtons,topHeight,topPartialHeight,chromeRedrawSkipRate=isIE?75:isOpera?80:75,lastSelectedPanelName,focusCommandLineState=0,lastFocusedPanelName,lastHSplitterMouseMove=0,onHSplitterMouseMoveBuffer=null,onHSplitterMouseMoveTimer=null,lastVSplitterMouseMove=0;
                                  -FBL.FirebugChrome={isOpen:false,height:250,sidePanelWidth:300,selectedPanelName:"Console",selectedHTMLElementId:null,chromeMap:{},htmlSelectionStack:[],consoleMessageQueue:[],create:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.create","creating chrome window")
                                  -}createChromeWindow()
                                  -},initialize:function(){if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("FirebugChrome.initialize","initializing chrome window")
                                  -}if(Env.chrome.type=="frame"||Env.chrome.type=="div"){ChromeMini.create(Env.chrome)
                                  -}var chrome=Firebug.chrome=new Chrome(Env.chrome);
                                  -FirebugChrome.chromeMap[chrome.type]=chrome;
                                  -addGlobalEvent("keydown",onGlobalKeyDown);
                                  -if(Env.Options.enablePersistent&&chrome.type=="popup"){var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){frame.close()
                                  -}chrome.initialize()
                                  -}},clone:function(FBChrome){for(var name in FBChrome){var prop=FBChrome[name];
                                  -if(FBChrome.hasOwnProperty(name)&&!isFunction(prop)){this[name]=prop
                                  -}}}};
                                  -var createChromeWindow=function(options){options=extend(WindowDefaultOptions,options||{});
                                  -var chrome={},context=options.context||Env.browser,type=chrome.type=Env.Options.enablePersistent?"popup":options.type,isChromeFrame=type=="frame",useLocalSkin=Env.useLocalSkin,url=useLocalSkin?Env.Location.skin:"about:blank",body=context.document.getElementsByTagName("body")[0],formatNode=function(node){node.firebugIgnore=true;
                                  -node.style.border="0";
                                  -node.style.visibility="hidden";
                                  -node.style.zIndex="2147483647";
                                  -node.style.position=noFixedPosition?"absolute":"fixed";
                                  -node.style.width="100%";
                                  -node.style.left="0";
                                  -node.style.bottom=noFixedPosition?"-1px":"0";
                                  -node.style.height=options.height+"px";
                                  -if(isFirefox){node.style.display="none"
                                  -}},createChromeDiv=function(){Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -var node=chrome.node=createGlobalElement("div"),style=createGlobalElement("style"),css=FirebugChrome.injected.CSS,rules=".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}"+css+".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -style.type="text/css";
                                  -if(style.styleSheet){style.styleSheet.cssText=rules
                                  -}else{style.appendChild(context.document.createTextNode(rules))
                                  -}document.getElementsByTagName("head")[0].appendChild(style);
                                  -node.className="fbBody";
                                  -node.style.overflow="hidden";
                                  -node.innerHTML=getChromeDivTemplate();
                                  -if(isIE){setTimeout(function(){node.firstChild.style.height="1px";
                                  -node.firstChild.style.position="static"
                                  -},0)
                                  -}formatNode(node);
                                  -body.appendChild(node);
                                  -chrome.window=window;
                                  -chrome.document=document;
                                  -onChromeLoad(chrome)
                                  -};
                                  -try{if(type=="div"){createChromeDiv();
                                  -return
                                  -}else{if(isChromeFrame){var node=chrome.node=createGlobalElement("iframe");
                                  -node.setAttribute("src",url);
                                  -node.setAttribute("frameBorder","0");
                                  -formatNode(node);
                                  -body.appendChild(node);
                                  -node.id=options.id
                                  -}else{var height=FirebugChrome.height||options.height,options=["true,top=",Math.max(screen.availHeight-height-61,0),",left=0,height=",height,",width=",screen.availWidth-10,",resizable"].join(""),node=chrome.node=context.window.open(url,"popup",options);
                                  -if(node){try{node.focus()
                                  -}catch(E){alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}else{alert("Firebug Error: Firebug popup was blocked.");
                                  -return
                                  -}}}if(!useLocalSkin){var tpl=getChromeTemplate(!isChromeFrame),doc=isChromeFrame?node.contentWindow.document:node.document;
                                  -doc.write(tpl);
                                  -doc.close()
                                  -}var win,waitDelay=useLocalSkin?isChromeFrame?200:300:100,waitForWindow=function(){if(isChromeFrame&&(win=node.contentWindow)&&node.contentWindow.document.getElementById("fbCommandLine")||!isChromeFrame&&(win=node.window)&&node.document&&node.document.getElementById("fbCommandLine")){chrome.window=win.window;
                                  -chrome.document=win.document;
                                  -setTimeout(function(){onChromeLoad(chrome)
                                  -},0)
                                  -}else{setTimeout(waitForWindow,waitDelay)
                                  -}};
                                  -waitForWindow()
                                  -}catch(e){var msg=e.message||e;
                                  -if(/access/i.test(msg)){if(isChromeFrame){body.removeChild(node)
                                  -}else{if(type=="popup"){node.close()
                                  -}}createChromeDiv()
                                  -}else{alert("Firebug Error: Firebug GUI could not be created.")
                                  -}}};
                                  -var onChromeLoad=function onChromeLoad(chrome){Env.chrome=chrome;
                                  -if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Chrome onChromeLoad","chrome window loaded")
                                  -}if(Env.Options.enablePersistent){Env.FirebugChrome=FirebugChrome;
                                  -chrome.window.Firebug=chrome.window.Firebug||{};
                                  -chrome.window.Firebug.SharedEnv=Env;
                                  -if(Env.isDevelopmentMode){Env.browser.window.FBDev.loadChromeApplication(chrome)
                                  -}else{var doc=chrome.document;
                                  -var script=doc.createElement("script");
                                  -script.src=Env.Location.app+"#remote,persist";
                                  -doc.getElementsByTagName("head")[0].appendChild(script)
                                  -}}else{if(chrome.type=="frame"||chrome.type=="div"){setTimeout(function(){FBL.Firebug.initialize()
                                  -},0)
                                  -}else{if(chrome.type=="popup"){var oldChrome=FirebugChrome.chromeMap.frame;
                                  -var newChrome=new Chrome(chrome);
                                  -dispatch(newChrome.panelMap,"detach",[oldChrome,newChrome]);
                                  -if(oldChrome){oldChrome.close()
                                  -}newChrome.reattach(oldChrome,newChrome)
                                  -}}}};
                                  -var getChromeDivTemplate=function(){return FirebugChrome.injected.HTML
                                  -};
                                  -var getChromeTemplate=function(isPopup){var tpl=FirebugChrome.injected;
                                  -var r=[],i=-1;
                                  -r[++i]='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -r[++i]="<html><head><title>";
                                  -r[++i]=Firebug.version;
                                  -r[++i]="</title><style>html,body{margin:0;padding:0;overflow:hidden;}";
                                  -r[++i]=tpl.CSS;
                                  -r[++i]="</style>";
                                  -r[++i]='</head><body class="fbBody'+(isPopup?" FirebugPopup":"")+'">';
                                  -r[++i]=tpl.HTML;
                                  -r[++i]="</body></html>";
                                  -return r.join("")
                                  -};
                                  -var Chrome=function Chrome(chrome){var type=chrome.type;
                                  -var Base=type=="frame"||type=="div"?ChromeFrameBase:ChromePopupBase;
                                  -append(this,Base);
                                  -append(this,chrome);
                                  -FirebugChrome.chromeMap[type]=this;
                                  -Firebug.chrome=this;
                                  -Env.chrome=chrome.window;
                                  -this.commandLineVisible=false;
                                  -this.sidePanelVisible=false;
                                  -this.create();
                                  -return this
                                  -};
                                  -var ChromeBase={};
                                  -append(ChromeBase,Controller);
                                  -append(ChromeBase,PanelBar);
                                  -append(ChromeBase,Context.prototype);
                                  -append(ChromeBase,{node:null,type:null,document:null,window:null,sidePanelVisible:false,commandLineVisible:false,largeCommandLineVisible:false,inspectButton:null,create:function(){PanelBar.create.call(this);
                                  -if(Firebug.Inspector){this.inspectButton=new Button({type:"toggle",element:$("fbChrome_btInspect"),owner:Firebug.Inspector,onPress:Firebug.Inspector.startInspecting,onUnpress:Firebug.Inspector.stopInspecting})
                                  -}},destroy:function(){if(Firebug.Inspector){this.inspectButton.destroy()
                                  -}PanelBar.destroy.call(this);
                                  -this.shutdown()
                                  -},testMenu:function(){var firebugMenu=new Menu({id:"fbFirebugMenu",items:[{label:"Open Firebug",type:"shortcut",key:isFirefox?"Shift+F12":"F12",checked:true,command:"toggleChrome"},{label:"Open Firebug in New Window",type:"shortcut",key:isFirefox?"Ctrl+Shift+F12":"Ctrl+F12",command:"openPopup"},{label:"Inspect Element",type:"shortcut",key:"Ctrl+Shift+C",command:"toggleInspect"},{label:"Command Line",type:"shortcut",key:"Ctrl+Shift+L",command:"focusCommandLine"},"-",{label:"Options",type:"group",child:"fbFirebugOptionsMenu"},"-",{label:"Firebug Lite Website...",command:"visitWebsite"},{label:"Discussion Group...",command:"visitDiscussionGroup"},{label:"Issue Tracker...",command:"visitIssueTracker"}],onHide:function(){iconButton.restore()
                                  -},toggleChrome:function(){Firebug.chrome.toggle()
                                  -},openPopup:function(){Firebug.chrome.toggle(true,true)
                                  -},toggleInspect:function(){Firebug.Inspector.toggleInspect()
                                  -},focusCommandLine:function(){Firebug.chrome.focusCommandLine()
                                  -},visitWebsite:function(){this.visit("http://getfirebug.com/lite.html")
                                  -},visitDiscussionGroup:function(){this.visit("http://groups.google.com/group/firebug")
                                  -},visitIssueTracker:function(){this.visit("http://code.google.com/p/fbug/issues/list")
                                  -},visit:function(url){window.open(url)
                                  -}});
                                  -var firebugOptionsMenu={id:"fbFirebugOptionsMenu",getItems:function(){var cookiesDisabled=!Firebug.saveCookies;
                                  -return[{label:"Save Options in Cookies",type:"checkbox",value:"saveCookies",checked:Firebug.saveCookies,command:"saveOptions"},"-",{label:"Start Opened",type:"checkbox",value:"startOpened",checked:Firebug.startOpened,disabled:cookiesDisabled},{label:"Start in New Window",type:"checkbox",value:"startInNewWindow",checked:Firebug.startInNewWindow,disabled:cookiesDisabled},{label:"Show Icon When Hidden",type:"checkbox",value:"showIconWhenHidden",checked:Firebug.showIconWhenHidden,disabled:cookiesDisabled},"-",{label:"Override Console Object",type:"checkbox",value:"overrideConsole",checked:Firebug.overrideConsole,disabled:cookiesDisabled},{label:"Ignore Firebug Elements",type:"checkbox",value:"ignoreFirebugElements",checked:Firebug.ignoreFirebugElements,disabled:cookiesDisabled},{label:"Disable When Firebug Active",type:"checkbox",value:"disableWhenFirebugActive",checked:Firebug.disableWhenFirebugActive,disabled:cookiesDisabled},"-",{label:"Enable Trace Mode",type:"checkbox",value:"enableTrace",checked:Firebug.enableTrace,disabled:cookiesDisabled},{label:"Enable Persistent Mode (experimental)",type:"checkbox",value:"enablePersistent",checked:Firebug.enablePersistent,disabled:cookiesDisabled},"-",{label:"Restore Options",command:"restorePrefs",disabled:cookiesDisabled}]
                                  -},onCheck:function(target,value,checked){Firebug.setPref(value,checked)
                                  -},saveOptions:function(target){var saveEnabled=target.getAttribute("checked");
                                  -if(!saveEnabled){this.restorePrefs()
                                  -}this.updateMenu(target);
                                  -return false
                                  -},restorePrefs:function(target){Firebug.restorePrefs();
                                  -if(Firebug.saveCookies){Firebug.savePrefs()
                                  -}else{Firebug.erasePrefs()
                                  -}if(target){this.updateMenu(target)
                                  -}return false
                                  -},updateMenu:function(target){var options=getElementsByClass(target.parentNode,"fbMenuOption");
                                  -var firstOption=options[0];
                                  -var enabled=Firebug.saveCookies;
                                  -if(enabled){Menu.check(firstOption)
                                  -}else{Menu.uncheck(firstOption)
                                  -}if(enabled){Menu.check(options[0])
                                  -}else{Menu.uncheck(options[0])
                                  -}for(var i=1,length=options.length;
                                  -i<length;
                                  -i++){var option=options[i];
                                  -var value=option.getAttribute("value");
                                  -var pref=Firebug[value];
                                  -if(pref){Menu.check(option)
                                  -}else{Menu.uncheck(option)
                                  -}if(enabled){Menu.enable(option)
                                  -}else{Menu.disable(option)
                                  -}}}};
                                  -Menu.register(firebugOptionsMenu);
                                  -var menu=firebugMenu;
                                  -var testMenuClick=function(event){cancelEvent(event,true);
                                  -var target=event.target||event.srcElement;
                                  -if(menu.isVisible){menu.hide()
                                  -}else{var offsetLeft=isIE6?1:-4,chrome=Firebug.chrome,box=chrome.getElementBox(target),offset=chrome.type=="div"?chrome.getElementPosition(chrome.node):{top:0,left:0};
                                  -menu.show(box.left+offsetLeft-offset.left,box.top+box.height-5-offset.top)
                                  -}return false
                                  -};
                                  -var iconButton=new IconButton({type:"toggle",element:$("fbFirebugButton"),onClick:testMenuClick});
                                  -iconButton.initialize()
                                  -},initialize:function(){if(Firebug.Console){Firebug.Console.flush()
                                  -}if(Firebug.Trace){FBTrace.flush(Firebug.Trace)
                                  -}if(FBTrace.DBG_INITIALIZE){FBTrace.sysout("Firebug.chrome.initialize","initializing chrome application")
                                  -}Controller.initialize.call(this);
                                  -PanelBar.initialize.call(this);
                                  -fbTop=$("fbTop");
                                  -fbContent=$("fbContent");
                                  -fbContentStyle=fbContent.style;
                                  -fbBottom=$("fbBottom");
                                  -fbBtnInspect=$("fbBtnInspect");
                                  -fbToolbar=$("fbToolbar");
                                  -fbPanelBox1=$("fbPanelBox1");
                                  -fbPanelBox1Style=fbPanelBox1.style;
                                  -fbPanelBox2=$("fbPanelBox2");
                                  -fbPanelBox2Style=fbPanelBox2.style;
                                  -fbPanelBar2Box=$("fbPanelBar2Box");
                                  -fbPanelBar2BoxStyle=fbPanelBar2Box.style;
                                  -fbHSplitter=$("fbHSplitter");
                                  -fbVSplitter=$("fbVSplitter");
                                  -fbVSplitterStyle=fbVSplitter.style;
                                  -fbPanel1=$("fbPanel1");
                                  -fbPanel1Style=fbPanel1.style;
                                  -fbPanel2=$("fbPanel2");
                                  -fbPanel2Style=fbPanel2.style;
                                  -fbConsole=$("fbConsole");
                                  -fbConsoleStyle=fbConsole.style;
                                  -fbHTML=$("fbHTML");
                                  -fbCommandLine=$("fbCommandLine");
                                  -fbLargeCommandLine=$("fbLargeCommandLine");
                                  -fbLargeCommandButtons=$("fbLargeCommandButtons");
                                  -topHeight=fbTop.offsetHeight;
                                  -topPartialHeight=fbToolbar.offsetHeight;
                                  -disableTextSelection($("fbToolbar"));
                                  -disableTextSelection($("fbPanelBarBox"));
                                  -disableTextSelection($("fbPanelBar1"));
                                  -disableTextSelection($("fbPanelBar2"));
                                  -if(isIE6&&Firebug.Selector){var as=$$(".fbHover");
                                  -for(var i=0,a;
                                  -a=as[i];
                                  -i++){a.setAttribute("href","javascript:void(0)")
                                  -}}if(Firebug.Inspector){this.inspectButton.initialize()
                                  -}this.addController([$("fbLargeCommandLineIcon"),"click",this.showLargeCommandLine]);
                                  -var self=this;
                                  -setTimeout(function(){self.selectPanel(FirebugChrome.selectedPanelName);
                                  -if(FirebugChrome.selectedPanelName=="Console"&&Firebug.CommandLine){Firebug.chrome.focusCommandLine()
                                  -}},0);
                                  -if(FBL.domplate){this.testMenu()
                                  -}},shutdown:function(){if(Firebug.Inspector){this.inspectButton.shutdown()
                                  -}restoreTextSelection($("fbToolbar"));
                                  -restoreTextSelection($("fbPanelBarBox"));
                                  -restoreTextSelection($("fbPanelBar1"));
                                  -restoreTextSelection($("fbPanelBar2"));
                                  -fbTop=null;
                                  -fbContent=null;
                                  -fbContentStyle=null;
                                  -fbBottom=null;
                                  -fbBtnInspect=null;
                                  -fbToolbar=null;
                                  -fbPanelBox1=null;
                                  -fbPanelBox1Style=null;
                                  -fbPanelBox2=null;
                                  -fbPanelBox2Style=null;
                                  -fbPanelBar2Box=null;
                                  -fbPanelBar2BoxStyle=null;
                                  -fbHSplitter=null;
                                  -fbVSplitter=null;
                                  -fbVSplitterStyle=null;
                                  -fbPanel1=null;
                                  -fbPanel1Style=null;
                                  -fbPanel2=null;
                                  -fbConsole=null;
                                  -fbConsoleStyle=null;
                                  -fbHTML=null;
                                  -fbCommandLine=null;
                                  -fbLargeCommandLine=null;
                                  -fbLargeCommandButtons=null;
                                  -topHeight=null;
                                  -topPartialHeight=null;
                                  -Controller.shutdown.call(this);
                                  -PanelBar.shutdown.call(this)
                                  -},toggle:function(forceOpen,popup){if(popup){this.detach()
                                  -}else{if(isOpera&&Firebug.chrome.type=="popup"&&Firebug.chrome.node.closed){var frame=FirebugChrome.chromeMap.frame;
                                  -frame.reattach();
                                  -FirebugChrome.chromeMap.popup=null;
                                  -frame.open();
                                  -return
                                  -}if(Firebug.chrome.type=="popup"){return
                                  -}var shouldOpen=forceOpen||!FirebugChrome.isOpen;
                                  -if(shouldOpen){this.open()
                                  -}else{this.close()
                                  -}}},detach:function(){if(!FirebugChrome.chromeMap.popup){createChromeWindow({type:"popup"})
                                  -}},reattach:function(oldChrome,newChrome){Firebug.browser.window.Firebug=Firebug;
                                  -var newPanelMap=newChrome.panelMap;
                                  -var oldPanelMap=oldChrome.panelMap;
                                  -var panel;
                                  -for(var name in newPanelMap){panel=newPanelMap[name];
                                  -if(panel.options.innerHTMLSync){panel.contentNode.innerHTML=oldPanelMap[name].contentNode.innerHTML
                                  -}}Firebug.chrome=newChrome;
                                  -if(newChrome.type=="popup"){newChrome.initialize()
                                  -}else{FirebugChrome.selectedPanelName=oldChrome.selectedPanel.name
                                  -}dispatch(newPanelMap,"reattach",[oldChrome,newChrome])
                                  -},draw:function(){var size=this.getSize();
                                  -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0,y=Math.max(size.height,topHeight),heightValue=Math.max(y-topHeight-commandLineHeight,0),height=heightValue+"px",sideWidthValue=Firebug.chrome.sidePanelVisible?FirebugChrome.sidePanelWidth:0,width=Math.max(size.width-sideWidthValue,0)+"px";
                                  -fbPanelBox1Style.height=height;
                                  -fbPanel1Style.height=height;
                                  -if(isIE||isOpera){fbVSplitterStyle.height=Math.max(y-topPartialHeight-commandLineHeight,0)+"px"
                                  -}fbPanelBox1Style.width=width;
                                  -fbPanel1Style.width=width;
                                  -if(Firebug.chrome.sidePanelVisible){sideWidthValue=Math.max(sideWidthValue-6,0);
                                  -var sideWidth=sideWidthValue+"px";
                                  -fbPanelBox2Style.width=sideWidth;
                                  -fbVSplitterStyle.right=sideWidth;
                                  -if(Firebug.chrome.largeCommandLineVisible){fbLargeCommandLine=$("fbLargeCommandLine");
                                  -fbLargeCommandLine.style.height=heightValue-4+"px";
                                  -fbLargeCommandLine.style.width=sideWidthValue-2+"px";
                                  -fbLargeCommandButtons=$("fbLargeCommandButtons");
                                  -fbLargeCommandButtons.style.width=sideWidth
                                  -}else{fbPanel2Style.height=height;
                                  -fbPanel2Style.width=sideWidth;
                                  -fbPanelBar2BoxStyle.width=sideWidth
                                  -}}},getSize:function(){return this.type=="div"?{height:this.node.offsetHeight,width:this.node.offsetWidth}:this.getWindowSize()
                                  -},resize:function(){var self=this;
                                  -setTimeout(function(){self.draw();
                                  -if(noFixedPosition&&(self.type=="frame"||self.type=="div")){self.fixIEPosition()
                                  -}},0)
                                  -},layout:function(panel){if(FBTrace.DBG_CHROME){FBTrace.sysout("Chrome.layout","")
                                  -}var options=panel.options;
                                  -changeCommandLineVisibility(options.hasCommandLine);
                                  -changeSidePanelVisibility(panel.hasSidePanel);
                                  -Firebug.chrome.draw()
                                  -},showLargeCommandLine:function(hideToggleIcon){var chrome=Firebug.chrome;
                                  -if(!chrome.largeCommandLineVisible){chrome.largeCommandLineVisible=true;
                                  -if(chrome.selectedPanel.options.hasCommandLine){if(Firebug.CommandLine){Firebug.CommandLine.blur()
                                  -}changeCommandLineVisibility(false)
                                  -}changeSidePanelVisibility(true);
                                  -fbLargeCommandLine.style.display="block";
                                  -fbLargeCommandButtons.style.display="block";
                                  -fbPanel2Style.display="none";
                                  -fbPanelBar2BoxStyle.display="none";
                                  -chrome.draw();
                                  -fbLargeCommandLine.focus();
                                  -if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(true)
                                  -}}},hideLargeCommandLine:function(){if(Firebug.chrome.largeCommandLineVisible){Firebug.chrome.largeCommandLineVisible=false;
                                  -if(Firebug.CommandLine){Firebug.CommandLine.setMultiLine(false)
                                  -}fbLargeCommandLine.blur();
                                  -fbPanel2Style.display="block";
                                  -fbPanelBar2BoxStyle.display="block";
                                  -fbLargeCommandLine.style.display="none";
                                  -fbLargeCommandButtons.style.display="none";
                                  -changeSidePanelVisibility(false);
                                  -if(Firebug.chrome.selectedPanel.options.hasCommandLine){changeCommandLineVisibility(true)
                                  -}Firebug.chrome.draw()
                                  -}},focusCommandLine:function(){var selectedPanelName=this.selectedPanel.name,panelToSelect;
                                  -if(focusCommandLineState==0||selectedPanelName!="Console"){focusCommandLineState=0;
                                  -lastFocusedPanelName=selectedPanelName;
                                  -panelToSelect="Console"
                                  -}if(focusCommandLineState==1){panelToSelect=lastFocusedPanelName
                                  -}this.selectPanel(panelToSelect);
                                  -try{if(Firebug.CommandLine){if(panelToSelect=="Console"){Firebug.CommandLine.focus()
                                  -}else{Firebug.CommandLine.blur()
                                  -}}}catch(e){}focusCommandLineState=++focusCommandLineState%2
                                  -}});
                                  -var ChromeFrameBase=extend(ChromeBase,{create:function(){ChromeBase.create.call(this);
                                  -if(isFirefox){this.node.style.display="block"
                                  -}if(Env.Options.startInNewWindow){this.close();
                                  -this.toggle(true,true);
                                  -return
                                  -}if(Env.Options.startOpened){this.open()
                                  -}else{this.close()
                                  -}},destroy:function(){removeGlobalEvent("keydown",onGlobalKeyDown);
                                  -ChromeBase.destroy.call(this);
                                  -this.document=null;
                                  -delete this.document;
                                  -this.window=null;
                                  -delete this.window;
                                  -this.node.parentNode.removeChild(this.node);
                                  -this.node=null;
                                  -delete this.node
                                  -},initialize:function(){ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.browser.window,"resize",this.resize],[$("fbWindow_btClose"),"click",this.close],[$("fbWindow_btDetach"),"click",this.detach]);
                                  -if(!Env.Options.enablePersistent){this.addController([Firebug.browser.window,"unload",Firebug.shutdown])
                                  -}if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown;
                                  -fbHSplitter.onmousedown=onHSplitterMouseDown;
                                  -this.isInitialized=true
                                  -},shutdown:function(){fbVSplitter.onmousedown=null;
                                  -fbHSplitter.onmousedown=null;
                                  -ChromeBase.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},reattach:function(){var frame=FirebugChrome.chromeMap.frame;
                                  -ChromeBase.reattach(FirebugChrome.chromeMap.popup,this)
                                  -},open:function(){if(!FirebugChrome.isOpen){FirebugChrome.isOpen=true;
                                  -if(Env.isChromeExtension){localStorage.setItem("FB_isOpen","true")
                                  -}var node=this.node;
                                  -node.style.visibility="hidden";
                                  -if(Firebug.showIconWhenHidden){if(ChromeMini.isInitialized){ChromeMini.shutdown()
                                  -}}else{node.style.display="block"
                                  -}var main=$("fbChrome");
                                  -main.style.display="block";
                                  -var self=this;
                                  -setTimeout(function(){node.style.visibility="visible";
                                  -self.initialize();
                                  -if(noFixedPosition){self.fixIEPosition()
                                  -}self.draw()
                                  -},10)
                                  -}},close:function(){if(FirebugChrome.isOpen||!this.isInitialized){if(this.isInitialized){this.shutdown()
                                  -}FirebugChrome.isOpen=false;
                                  -if(Env.isChromeExtension){localStorage.setItem("FB_isOpen","")
                                  -}var node=this.node;
                                  -if(Firebug.showIconWhenHidden){node.style.visibility="hidden";
                                  -var main=$("fbChrome",FirebugChrome.chromeMap.frame.document);
                                  -main.style.display="none";
                                  -ChromeMini.initialize();
                                  -node.style.visibility="visible"
                                  -}else{node.style.display="none"
                                  -}}},fixIEPosition:function(){var doc=this.document;
                                  -var offset=isIE?doc.body.clientTop||doc.documentElement.clientTop:0;
                                  -var size=Firebug.browser.getWindowSize();
                                  -var scroll=Firebug.browser.getWindowScrollPosition();
                                  -var maxHeight=size.height;
                                  -var height=this.node.offsetHeight;
                                  -var bodyStyle=doc.body.currentStyle;
                                  -this.node.style.top=maxHeight-height+scroll.top+"px";
                                  -if((this.type=="frame"||this.type=="div")&&(bodyStyle.marginLeft||bodyStyle.marginRight)){this.node.style.width=size.width+"px"
                                  -}if(fbVSplitterStyle){fbVSplitterStyle.right=FirebugChrome.sidePanelWidth+"px"
                                  -}this.draw()
                                  -}});
                                  -var ChromeMini=extend(Controller,{create:function(chrome){append(this,chrome);
                                  -this.type="mini"
                                  -},initialize:function(){Controller.initialize.apply(this);
                                  -var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="block";
                                  -var miniIcon=$("fbMiniIcon",doc);
                                  -var width=miniIcon.offsetWidth+10;
                                  -miniIcon.title="Open "+Firebug.version;
                                  -var errors=$("fbMiniErrors",doc);
                                  -if(errors.offsetWidth){width+=errors.offsetWidth+10
                                  -}var node=this.node;
                                  -node.style.height="27px";
                                  -node.style.width=width+"px";
                                  -node.style.left="";
                                  -node.style.right=0;
                                  -if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","true");
                                  -this.document.body.style.backgroundColor="transparent"
                                  -}else{node.style.background="transparent"
                                  -}if(noFixedPosition){this.fixIEPosition()
                                  -}this.addController([$("fbMiniIcon",doc),"click",onMiniIconClick]);
                                  -if(noFixedPosition){this.addController([Firebug.browser.window,"scroll",this.fixIEPosition])
                                  -}this.isInitialized=true
                                  -},shutdown:function(){var node=this.node;
                                  -node.style.height=FirebugChrome.height+"px";
                                  -node.style.width="100%";
                                  -node.style.left=0;
                                  -node.style.right="";
                                  -if(this.node.nodeName.toLowerCase()=="iframe"){node.setAttribute("allowTransparency","false");
                                  -this.document.body.style.backgroundColor="#fff"
                                  -}else{node.style.background="#fff"
                                  -}if(noFixedPosition){this.fixIEPosition()
                                  -}var doc=FirebugChrome.chromeMap.frame.document;
                                  -var mini=$("fbMiniChrome",doc);
                                  -mini.style.display="none";
                                  -Controller.shutdown.apply(this);
                                  -this.isInitialized=false
                                  -},draw:function(){},fixIEPosition:ChromeFrameBase.fixIEPosition});
                                  -var ChromePopupBase=extend(ChromeBase,{initialize:function(){setClass(this.document.body,"FirebugPopup");
                                  -ChromeBase.initialize.call(this);
                                  -this.addController([Firebug.chrome.window,"resize",this.resize],[Firebug.chrome.window,"unload",this.destroy]);
                                  -if(Env.Options.enablePersistent){this.persist=bind(this.persist,this);
                                  -addEvent(Firebug.browser.window,"unload",this.persist)
                                  -}else{this.addController([Firebug.browser.window,"unload",this.close])
                                  -}fbVSplitter.onmousedown=onVSplitterMouseDown
                                  -},destroy:function(){var frame=FirebugChrome.chromeMap.frame;
                                  -if(frame){dispatch(frame.panelMap,"detach",[this,frame]);
                                  -frame.reattach(this,frame)
                                  -}if(Env.Options.enablePersistent){removeEvent(Firebug.browser.window,"unload",this.persist)
                                  -}ChromeBase.destroy.apply(this);
                                  -FirebugChrome.chromeMap.popup=null;
                                  -this.node.close()
                                  -},persist:function(){persistTimeStart=new Date().getTime();
                                  -removeEvent(Firebug.browser.window,"unload",this.persist);
                                  -Firebug.Inspector.destroy();
                                  -Firebug.browser.window.FirebugOldBrowser=true;
                                  -var persistTimeStart=new Date().getTime();
                                  -var waitMainWindow=function(){var doc,head;
                                  -try{if(window.opener&&!window.opener.FirebugOldBrowser&&(doc=window.opener.document)){try{var persistDelay=new Date().getTime()-persistTimeStart;
                                  -window.Firebug=Firebug;
                                  -window.opener.Firebug=Firebug;
                                  -Env.browser=window.opener;
                                  -Firebug.browser=Firebug.context=new Context(Env.browser);
                                  -registerConsole();
                                  -var chrome=Firebug.chrome;
                                  -addEvent(Firebug.browser.window,"unload",chrome.persist);
                                  -FBL.cacheDocument();
                                  -Firebug.Inspector.create();
                                  -var htmlPanel=chrome.getPanel("HTML");
                                  -htmlPanel.createUI();
                                  -Firebug.Console.info("Firebug could not capture console calls during "+persistDelay+"ms")
                                  -}catch(pE){alert("persist error: "+(pE.message||pE))
                                  -}}else{window.setTimeout(waitMainWindow,0)
                                  -}}catch(E){window.close()
                                  -}};
                                  -waitMainWindow()
                                  -},close:function(){this.destroy()
                                  -}});
                                  -var changeCommandLineVisibility=function changeCommandLineVisibility(visibility){var last=Firebug.chrome.commandLineVisible;
                                  -var visible=Firebug.chrome.commandLineVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.commandLineVisible;
                                  -if(visible!=last){if(visible){fbBottom.className="";
                                  -if(Firebug.CommandLine){Firebug.CommandLine.activate()
                                  -}}else{if(Firebug.CommandLine){Firebug.CommandLine.deactivate()
                                  -}fbBottom.className="hide"
                                  -}}};
                                  -var changeSidePanelVisibility=function changeSidePanelVisibility(visibility){var last=Firebug.chrome.sidePanelVisible;
                                  -Firebug.chrome.sidePanelVisible=typeof visibility=="boolean"?visibility:!Firebug.chrome.sidePanelVisible;
                                  -if(Firebug.chrome.sidePanelVisible!=last){fbPanelBox2.className=Firebug.chrome.sidePanelVisible?"":"hide";
                                  -fbPanelBar2Box.className=Firebug.chrome.sidePanelVisible?"":"hide"
                                  -}};
                                  -var onGlobalKeyDown=function onGlobalKeyDown(event){var keyCode=event.keyCode;
                                  -var shiftKey=event.shiftKey;
                                  -var ctrlKey=event.ctrlKey;
                                  -if(keyCode==123&&(!isFirefox&&!shiftKey||shiftKey&&isFirefox)){Firebug.chrome.toggle(false,ctrlKey);
                                  -cancelEvent(event,true)
                                  -}else{if(keyCode==67&&ctrlKey&&shiftKey){Firebug.Inspector.toggleInspect();
                                  -cancelEvent(event,true)
                                  -}else{if(keyCode==76&&ctrlKey&&shiftKey){Firebug.chrome.focusCommandLine();
                                  -cancelEvent(event,true)
                                  -}}}};
                                  -var onMiniIconClick=function onMiniIconClick(event){Firebug.chrome.toggle(false,event.ctrlKey);
                                  -cancelEvent(event,true)
                                  -};
                                  -var onHSplitterMouseDown=function onHSplitterMouseDown(event){addGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){addEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="fbOnMovingHSplitter";
                                  -return false
                                  -};
                                  -var onHSplitterMouseMove=function onHSplitterMouseMove(event){cancelEvent(event,true);
                                  -var clientY=event.clientY;
                                  -var win=isIE?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument&&event.target.ownerDocument.defaultView;
                                  -if(!win){return
                                  -}if(win!=win.parent){var frameElement=win.frameElement;
                                  -if(frameElement){var framePos=Firebug.browser.getElementPosition(frameElement).top;
                                  -clientY+=framePos;
                                  -if(frameElement.style.position!="fixed"){clientY-=Firebug.browser.getWindowScrollPosition().top
                                  -}}}if(isOpera&&isQuiksMode&&win.frameElement.id=="FirebugUI"){clientY=Firebug.browser.getWindowSize().height-win.frameElement.offsetHeight+clientY
                                  -}onHSplitterMouseMoveBuffer=clientY;
                                  -if(new Date().getTime()-lastHSplitterMouseMove>chromeRedrawSkipRate){lastHSplitterMouseMove=new Date().getTime();
                                  -handleHSplitterMouseMove()
                                  -}else{if(!onHSplitterMouseMoveTimer){onHSplitterMouseMoveTimer=setTimeout(handleHSplitterMouseMove,chromeRedrawSkipRate)
                                  -}}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var handleHSplitterMouseMove=function(){if(onHSplitterMouseMoveTimer){clearTimeout(onHSplitterMouseMoveTimer);
                                  -onHSplitterMouseMoveTimer=null
                                  -}var clientY=onHSplitterMouseMoveBuffer;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var commandLineHeight=Firebug.chrome.commandLineVisible?fbCommandLine.offsetHeight:0;
                                  -var fixedHeight=topHeight+commandLineHeight;
                                  -var chromeNode=Firebug.chrome.node;
                                  -var scrollbarSize=!isIE&&(scrollSize.width>windowSize.width)?17:0;
                                  -var height=windowSize.height;
                                  -var chromeHeight=Math.max(height-clientY+5-scrollbarSize,fixedHeight);
                                  -chromeHeight=Math.min(chromeHeight,windowSize.height-scrollbarSize);
                                  -FirebugChrome.height=chromeHeight;
                                  -chromeNode.style.height=chromeHeight+"px";
                                  -if(noFixedPosition){Firebug.chrome.fixIEPosition()
                                  -}Firebug.chrome.draw()
                                  -};
                                  -var onHSplitterMouseUp=function onHSplitterMouseUp(event){removeGlobalEvent("mousemove",onHSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onHSplitterMouseUp);
                                  -if(isIE){removeEvent(Firebug.browser.document.documentElement,"mouseleave",onHSplitterMouseUp)
                                  -}fbHSplitter.className="";
                                  -Firebug.chrome.draw();
                                  -return false
                                  -};
                                  -var onVSplitterMouseDown=function onVSplitterMouseDown(event){addGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -addGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -return false
                                  -};
                                  -var onVSplitterMouseMove=function onVSplitterMouseMove(event){if(new Date().getTime()-lastVSplitterMouseMove>chromeRedrawSkipRate){var target=event.target||event.srcElement;
                                  -if(target&&target.ownerDocument){var clientX=event.clientX;
                                  -var win=document.all?event.srcElement.ownerDocument.parentWindow:event.target.ownerDocument.defaultView;
                                  -if(win!=win.parent){clientX+=win.frameElement?win.frameElement.offsetLeft:0
                                  -}var size=Firebug.chrome.getSize();
                                  -var x=Math.max(size.width-clientX+3,6);
                                  -FirebugChrome.sidePanelWidth=x;
                                  -Firebug.chrome.draw()
                                  -}lastVSplitterMouseMove=new Date().getTime()
                                  -}cancelEvent(event,true);
                                  -return false
                                  -};
                                  -var onVSplitterMouseUp=function onVSplitterMouseUp(event){removeGlobalEvent("mousemove",onVSplitterMouseMove);
                                  -removeGlobalEvent("mouseup",onVSplitterMouseUp);
                                  -Firebug.chrome.draw()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;
                                  -[0,0].sort(function(){baseHasDuplicate=false;
                                  -return 0
                                  -});
                                  -var Sizzle=function(selector,context,results,seed){results=results||[];
                                  -var origContext=context=context||document;
                                  -if(context.nodeType!==1&&context.nodeType!==9){return[]
                                  -}if(!selector||typeof selector!=="string"){return results
                                  -}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector;
                                  -while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];
                                  -parts.push(m[1]);
                                  -if(m[2]){extra=m[3];
                                  -break
                                  -}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)
                                  -}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);
                                  -while(parts.length){selector=parts.shift();
                                  -if(Expr.relative[selector]){selector+=parts.shift()
                                  -}set=posProcess(selector,set)
                                  -}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);
                                  -context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]
                                  -}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);
                                  -set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;
                                  -if(parts.length>0){checkSet=makeArray(set)
                                  -}else{prune=false
                                  -}while(parts.length){var cur=parts.pop(),pop=cur;
                                  -if(!Expr.relative[cur]){cur=""
                                  -}else{pop=parts.pop()
                                  -}if(pop==null){pop=context
                                  -}Expr.relative[cur](checkSet,pop,contextXML)
                                  -}}else{checkSet=parts=[]
                                  -}}if(!checkSet){checkSet=set
                                  -}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)
                                  -}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)
                                  -}else{if(context&&context.nodeType===1){for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])
                                  -}}}else{for(var i=0;
                                  -checkSet[i]!=null;
                                  -i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])
                                  -}}}}}else{makeArray(checkSet,results)
                                  -}if(extra){Sizzle(extra,origContext,results,seed);
                                  -Sizzle.uniqueSort(results)
                                  -}return results
                                  -};
                                  -Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;
                                  -results.sort(sortOrder);
                                  -if(hasDuplicate){for(var i=1;
                                  -i<results.length;
                                  -i++){if(results[i]===results[i-1]){results.splice(i--,1)
                                  -}}}}return results
                                  -};
                                  -Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)
                                  -};
                                  -Sizzle.find=function(expr,context,isXML){var set,match;
                                  -if(!expr){return[]
                                  -}for(var i=0,l=Expr.order.length;
                                  -i<l;
                                  -i++){var type=Expr.order[i],match;
                                  -if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];
                                  -match.splice(1,1);
                                  -if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");
                                  -set=Expr.find[type](match,context,isXML);
                                  -if(set!=null){expr=expr.replace(Expr.match[type],"");
                                  -break
                                  -}}}}if(!set){set=context.getElementsByTagName("*")
                                  -}return{set:set,expr:expr}
                                  -};
                                  -Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);
                                  -while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;
                                  -anyFound=false;
                                  -if(curLoop==result){result=[]
                                  -}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);
                                  -if(!match){anyFound=found=true
                                  -}else{if(match===true){continue
                                  -}}}if(match){for(var i=0;
                                  -(item=curLoop[i])!=null;
                                  -i++){if(item){found=filter(item,match,i,curLoop);
                                  -var pass=not^!!found;
                                  -if(inplace&&found!=null){if(pass){anyFound=true
                                  -}else{curLoop[i]=false
                                  -}}else{if(pass){result.push(item);
                                  -anyFound=true
                                  -}}}}}if(found!==undefined){if(!inplace){curLoop=result
                                  -}expr=expr.replace(Expr.match[type],"");
                                  -if(!anyFound){return[]
                                  -}break
                                  -}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr
                                  -}else{break
                                  -}}old=expr
                                  -}return curLoop
                                  -};
                                  -var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")
                                  -}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;
                                  -if(isTag&&!isXML){part=part.toUpperCase()
                                  -}for(var i=0,l=checkSet.length,elem;
                                  -i<l;
                                  -i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part
                                  -}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)
                                  -}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";
                                  -if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){var parent=elem.parentNode;
                                  -checkSet[i]=parent.nodeName===part?parent:false
                                  -}}}else{for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part
                                  -}}if(isPartStr){Sizzle.filter(part,checkSet,true)
                                  -}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)
                                  -},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;
                                  -if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();
                                  -checkFn=dirNodeCheck
                                  -}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)
                                  -}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?[m]:[]
                                  -}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);
                                  -for(var i=0,l=results.length;
                                  -i<l;
                                  -i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])
                                  -}}return ret.length===0?null:ret
                                  -}},TAG:function(match,context){return context.getElementsByTagName(match[1])
                                  -}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";
                                  -if(isXML){return match
                                  -}for(var i=0,elem;
                                  -(elem=curLoop[i])!=null;
                                  -i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)
                                  -}}else{if(inplace){curLoop[i]=false
                                  -}}}}return false
                                  -},ID:function(match){return match[1].replace(/\\/g,"")
                                  -},TAG:function(match,curLoop){for(var i=0;
                                  -curLoop[i]===false;
                                  -i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()
                                  -},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);
                                  -match[2]=(test[1]+(test[2]||1))-0;
                                  -match[3]=test[3]-0
                                  -}match[0]=done++;
                                  -return match
                                  -},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");
                                  -if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]
                                  -}if(match[2]==="~="){match[4]=" "+match[4]+" "
                                  -}return match
                                  -},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)
                                  -}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);
                                  -if(!inplace){result.push.apply(result,ret)
                                  -}return false
                                  -}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true
                                  -}}return match
                                  -},POS:function(match){match.unshift(true);
                                  -return match
                                  -}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"
                                  -},disabled:function(elem){return elem.disabled===true
                                  -},checked:function(elem){return elem.checked===true
                                  -},selected:function(elem){elem.parentNode.selectedIndex;
                                  -return elem.selected===true
                                  -},parent:function(elem){return !!elem.firstChild
                                  -},empty:function(elem){return !elem.firstChild
                                  -},has:function(elem,i,match){return !!Sizzle(match[3],elem).length
                                  -},header:function(elem){return/h\d/i.test(elem.nodeName)
                                  -},text:function(elem){return"text"===elem.type
                                  -},radio:function(elem){return"radio"===elem.type
                                  -},checkbox:function(elem){return"checkbox"===elem.type
                                  -},file:function(elem){return"file"===elem.type
                                  -},password:function(elem){return"password"===elem.type
                                  -},submit:function(elem){return"submit"===elem.type
                                  -},image:function(elem){return"image"===elem.type
                                  -},reset:function(elem){return"reset"===elem.type
                                  -},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"
                                  -},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)
                                  -}},setFilters:{first:function(elem,i){return i===0
                                  -},last:function(elem,i,match,array){return i===array.length-1
                                  -},even:function(elem,i){return i%2===0
                                  -},odd:function(elem,i){return i%2===1
                                  -},lt:function(elem,i,match){return i<match[3]-0
                                  -},gt:function(elem,i,match){return i>match[3]-0
                                  -},nth:function(elem,i,match){return match[3]-0==i
                                  -},eq:function(elem,i,match){return match[3]-0==i
                                  -}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0
                                  -}else{if(name==="not"){var not=match[3];
                                  -for(var i=0,l=not.length;
                                  -i<l;
                                  -i++){if(not[i]===elem){return false
                                  -}}return true
                                  -}}}},CHILD:function(elem,match){var type=match[1],node=elem;
                                  -switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false
                                  -}}if(type=="first"){return true
                                  -}node=elem;
                                  -case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false
                                  -}}return true;
                                  -case"nth":var first=match[2],last=match[3];
                                  -if(first==1&&last==0){return true
                                  -}var doneName=match[0],parent=elem.parentNode;
                                  -if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;
                                  -for(node=parent.firstChild;
                                  -node;
                                  -node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count
                                  -}}parent.sizcache=doneName
                                  -}var diff=elem.nodeIndex-last;
                                  -if(first==0){return diff==0
                                  -}else{return(diff%first==0&&diff/first>=0)
                                  -}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match
                                  -},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match
                                  -},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1
                                  -},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];
                                  -return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false
                                  -},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];
                                  -if(filter){return filter(elem,i,match,array)
                                  -}}}};
                                  -var origPOS=Expr.match.POS;
                                  -for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);
                                  -Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source)
                                  -}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);
                                  -if(results){results.push.apply(results,array);
                                  -return results
                                  -}return array
                                  -};
                                  -try{Array.prototype.slice.call(document.documentElement.childNodes,0)
                                  -}catch(e){makeArray=function(array,results){var ret=results||[];
                                  -if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)
                                  -}else{if(typeof array.length==="number"){for(var i=0,l=array.length;
                                  -i<l;
                                  -i++){ret.push(array[i])
                                  -}}else{for(var i=0;
                                  -array[i];
                                  -i++){ret.push(array[i])
                                  -}}}return ret
                                  -}
                                  -}var sortOrder;
                                  -if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var ret=a.sourceIndex-b.sourceIndex;
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true
                                  -}return 0
                                  -}var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();
                                  -aRange.setStart(a,0);
                                  -aRange.setEnd(a,0);
                                  -bRange.setStart(b,0);
                                  -bRange.setEnd(b,0);
                                  -var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);
                                  -if(ret===0){hasDuplicate=true
                                  -}return ret
                                  -}
                                  -}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();
                                  -form.innerHTML="<a name='"+id+"'/>";
                                  -var root=document.documentElement;
                                  -root.insertBefore(form,root.firstChild);
                                  -if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);
                                  -return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]
                                  -}};
                                  -Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");
                                  -return elem.nodeType===1&&node&&node.nodeValue===match
                                  -}
                                  -}root.removeChild(form);
                                  -root=form=null
                                  -})();
                                  -(function(){var div=document.createElement("div");
                                  -div.appendChild(document.createComment(""));
                                  -if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);
                                  -if(match[1]==="*"){var tmp=[];
                                  -for(var i=0;
                                  -results[i];
                                  -i++){if(results[i].nodeType===1){tmp.push(results[i])
                                  -}}results=tmp
                                  -}return results
                                  -}
                                  -}div.innerHTML="<a href='#'></a>";
                                  -if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)
                                  -}
                                  -}div=null
                                  -})();
                                  -if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");
                                  -div.innerHTML="<p class='TEST'></p>";
                                  -if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return
                                  -}Sizzle=function(query,context,extra,seed){context=context||document;
                                  -if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)
                                  -}catch(e){}}return oldSizzle(query,context,extra,seed)
                                  -};
                                  -for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]
                                  -}div=null
                                  -})()
                                  -}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");
                                  -div.innerHTML="<div class='test e'></div><div class='test'></div>";
                                  -if(div.getElementsByClassName("e").length===0){return
                                  -}div.lastChild.className="e";
                                  -if(div.getElementsByClassName("e").length===1){return
                                  -}Expr.order.splice(1,0,"CLASS");
                                  -Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])
                                  -}};
                                  -div=null
                                  -})()
                                  -}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(elem.nodeName===cur){match=elem;
                                  -break
                                  -}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;
                                  -for(var i=0,l=checkSet.length;
                                  -i<l;
                                  -i++){var elem=checkSet[i];
                                  -if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}elem=elem[dir];
                                  -var match=false;
                                  -while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];
                                  -break
                                  -}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;
                                  -elem.sizset=i
                                  -}if(typeof cur!=="string"){if(elem===cur){match=true;
                                  -break
                                  -}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;
                                  -break
                                  -}}}elem=elem[dir]
                                  -}checkSet[i]=match
                                  -}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16
                                  -}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)
                                  -};
                                  -var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"
                                  -};
                                  -var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;
                                  -while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];
                                  -selector=selector.replace(Expr.match.PSEUDO,"")
                                  -}selector=Expr.relative[selector]?selector+"*":selector;
                                  -for(var i=0,l=root.length;
                                  -i<l;
                                  -i++){Sizzle(selector,root[i],tmpSet)
                                  -}return Sizzle.filter(later,tmpSet)
                                  -};
                                  -Firebug.Selector=Sizzle
                                  -}});
                                  -FBL.ns(function(){with(FBL){var inspectorTS,inspectorTimer,isInspecting;
                                  -Firebug.Inspector={create:function(){offlineFragment=Env.browser.document.createDocumentFragment();
                                  -createBoxModelInspector();
                                  -createOutlineInspector()
                                  -},destroy:function(){destroyBoxModelInspector();
                                  -destroyOutlineInspector();
                                  -offlineFragment=null
                                  -},toggleInspect:function(){if(isInspecting){this.stopInspecting()
                                  -}else{Firebug.chrome.inspectButton.changeState("pressed");
                                  -this.startInspecting()
                                  -}},startInspecting:function(){isInspecting=true;
                                  -Firebug.chrome.selectPanel("HTML");
                                  -createInspectorFrame();
                                  -var size=Firebug.browser.getWindowScrollSize();
                                  -fbInspectFrame.style.width=size.width+"px";
                                  -fbInspectFrame.style.height=size.height+"px";
                                  -addEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -addEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick)
                                  -},stopInspecting:function(){isInspecting=false;
                                  -if(outlineVisible){this.hideOutline()
                                  -}removeEvent(fbInspectFrame,"mousemove",Firebug.Inspector.onInspecting);
                                  -removeEvent(fbInspectFrame,"mousedown",Firebug.Inspector.onInspectingClick);
                                  -destroyInspectorFrame();
                                  -Firebug.chrome.inspectButton.restore();
                                  -if(Firebug.chrome.type=="popup"){Firebug.chrome.node.focus()
                                  -}},onInspectingClick:function(e){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}Firebug.Inspector.stopInspecting()
                                  -},onInspecting:function(e){if(new Date().getTime()-lastInspecting>30){fbInspectFrame.style.display="none";
                                  -var targ=Firebug.browser.getElementFromPoint(e.clientX,e.clientY);
                                  -fbInspectFrame.style.display="block";
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){var target=""+targ[cacheID];
                                  -var lazySelect=function(){inspectorTS=new Date().getTime();
                                  -Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -};
                                  -if(inspectorTimer){clearTimeout(inspectorTimer);
                                  -inspectorTimer=null
                                  -}if(new Date().getTime()-inspectorTS>200){setTimeout(lazySelect,0)
                                  -}else{inspectorTimer=setTimeout(lazySelect,300)
                                  -}}lastInspecting=new Date().getTime()
                                  -}},onInspectingBody:function(e){if(new Date().getTime()-lastInspecting>30){var targ=e.target;
                                  -var id=targ.id;
                                  -if(id&&/^fbOutline\w$/.test(id)){return
                                  -}if(id=="FirebugUI"){return
                                  -}while(targ.nodeType!=1){targ=targ.parentNode
                                  -}if(targ.nodeName.toLowerCase()=="body"){return
                                  -}Firebug.Inspector.drawOutline(targ);
                                  -if(targ[cacheID]){FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -}lastInspecting=new Date().getTime()
                                  -}},drawOutline:function(el){var border=2;
                                  -var scrollbarSize=17;
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollSize=Firebug.browser.getWindowScrollSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var box=Firebug.browser.getElementBox(el);
                                  -var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var freeHorizontalSpace=scrollPosition.left+windowSize.width-left-width-(!isIE&&scrollSize.height>windowSize.height?scrollbarSize:0);
                                  -var freeVerticalSpace=scrollPosition.top+windowSize.height-top-height-(!isIE&&scrollSize.width>windowSize.width?scrollbarSize:0);
                                  -var numVerticalBorders=freeVerticalSpace>0?2:1;
                                  -var o=outlineElements;
                                  -var style;
                                  -style=o.fbOutlineT.style;
                                  -style.top=top-border+"px";
                                  -style.left=left+"px";
                                  -style.height=border+"px";
                                  -style.width=width+"px";
                                  -style=o.fbOutlineL.style;
                                  -style.top=top-border+"px";
                                  -style.left=left-border+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=border+"px";
                                  -style=o.fbOutlineB.style;
                                  -if(freeVerticalSpace>0){style.top=top+height+"px";
                                  -style.left=left+"px";
                                  -style.width=width+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.width=border+"px"
                                  -}style=o.fbOutlineR.style;
                                  -if(freeHorizontalSpace>0){style.top=top-border+"px";
                                  -style.left=left+width+"px";
                                  -style.height=height+numVerticalBorders*border+"px";
                                  -style.width=(freeHorizontalSpace<border?freeHorizontalSpace:border)+"px"
                                  -}else{style.top=-2*border+"px";
                                  -style.left=-2*border+"px";
                                  -style.height=border+"px";
                                  -style.width=border+"px"
                                  -}if(!outlineVisible){this.showOutline()
                                  -}},hideOutline:function(){if(!outlineVisible){return
                                  -}for(var name in outline){offlineFragment.appendChild(outlineElements[name])
                                  -}outlineVisible=false
                                  -},showOutline:function(){if(outlineVisible){return
                                  -}if(boxModelVisible){this.hideBoxModel()
                                  -}for(var name in outline){Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name])
                                  -}outlineVisible=true
                                  -},drawBoxModel:function(el){var box=Firebug.browser.getElementBox(el);
                                  -var windowSize=Firebug.browser.getWindowSize();
                                  -var scrollPosition=Firebug.browser.getWindowScrollPosition();
                                  -var offsetHeight=Firebug.chrome.type=="frame"?FirebugChrome.height:0;
                                  -if(box.top>scrollPosition.top+windowSize.height-offsetHeight||box.left>scrollPosition.left+windowSize.width||scrollPosition.top>box.top+box.height||scrollPosition.left>box.left+box.width){return
                                  -}var top=box.top;
                                  -var left=box.left;
                                  -var height=box.height;
                                  -var width=box.width;
                                  -var margin=Firebug.browser.getMeasurementBox(el,"margin");
                                  -var padding=Firebug.browser.getMeasurementBox(el,"padding");
                                  -var border=Firebug.browser.getMeasurementBox(el,"border");
                                  -boxModelStyle.top=top-margin.top+"px";
                                  -boxModelStyle.left=left-margin.left+"px";
                                  -boxModelStyle.height=height+margin.top+margin.bottom+"px";
                                  -boxModelStyle.width=width+margin.left+margin.right+"px";
                                  -boxBorderStyle.top=margin.top+"px";
                                  -boxBorderStyle.left=margin.left+"px";
                                  -boxBorderStyle.height=height+"px";
                                  -boxBorderStyle.width=width+"px";
                                  -boxPaddingStyle.top=margin.top+border.top+"px";
                                  -boxPaddingStyle.left=margin.left+border.left+"px";
                                  -boxPaddingStyle.height=height-border.top-border.bottom+"px";
                                  -boxPaddingStyle.width=width-border.left-border.right+"px";
                                  -boxContentStyle.top=margin.top+border.top+padding.top+"px";
                                  -boxContentStyle.left=margin.left+border.left+padding.left+"px";
                                  -boxContentStyle.height=height-border.top-padding.top-padding.bottom-border.bottom+"px";
                                  -boxContentStyle.width=width-border.left-padding.left-padding.right-border.right+"px";
                                  -if(!boxModelVisible){this.showBoxModel()
                                  -}},hideBoxModel:function(){if(!boxModelVisible){return
                                  -}offlineFragment.appendChild(boxModel);
                                  -boxModelVisible=false
                                  -},showBoxModel:function(){if(boxModelVisible){return
                                  -}if(outlineVisible){this.hideOutline()
                                  -}Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -boxModelVisible=true
                                  -}};
                                  -var offlineFragment=null;
                                  -var boxModelVisible=false;
                                  -var boxModel,boxModelStyle,boxMargin,boxMarginStyle,boxBorder,boxBorderStyle,boxPadding,boxPaddingStyle,boxContent,boxContentStyle;
                                  -var resetStyle="margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle=resetStyle+"top:-1234px; left:-1234px;";
                                  -var inspectStyle=resetStyle+"z-index: 2147483500;";
                                  -var inspectFrameStyle=resetStyle+"z-index: 2147483550; top:0; left:0; background:url("+Env.Location.skinDir+"pixel_transparent.gif);";
                                  -var inspectModelOpacity=isIE?"filter:alpha(opacity=80);":"opacity:0.8;";
                                  -var inspectModelStyle=inspectStyle+inspectModelOpacity;
                                  -var inspectMarginStyle=inspectStyle+"background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle=inspectStyle+"background: #666;";
                                  -var inspectPaddingStyle=inspectStyle+"background: SlateBlue;";
                                  -var inspectContentStyle=inspectStyle+"background: SkyBlue;";
                                  -var outlineStyle={fbHorizontalLine:"background: #3875D7;height: 2px;",fbVerticalLine:"background: #3875D7;width: 2px;"};
                                  -var lastInspecting=0;
                                  -var fbInspectFrame=null;
                                  -var outlineVisible=false;
                                  -var outlineElements={};
                                  -var outline={fbOutlineT:"fbHorizontalLine",fbOutlineL:"fbVerticalLine",fbOutlineB:"fbHorizontalLine",fbOutlineR:"fbVerticalLine"};
                                  -var getInspectingTarget=function(){};
                                  -var createInspectorFrame=function createInspectorFrame(){fbInspectFrame=createGlobalElement("div");
                                  -fbInspectFrame.id="fbInspectFrame";
                                  -fbInspectFrame.firebugIgnore=true;
                                  -fbInspectFrame.style.cssText=inspectFrameStyle;
                                  -Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame)
                                  -};
                                  -var destroyInspectorFrame=function destroyInspectorFrame(){if(fbInspectFrame){Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -fbInspectFrame=null
                                  -}};
                                  -var createOutlineInspector=function createOutlineInspector(){for(var name in outline){var el=outlineElements[name]=createGlobalElement("div");
                                  -el.id=name;
                                  -el.firebugIgnore=true;
                                  -el.style.cssText=inspectStyle+outlineStyle[outline[name]];
                                  -offlineFragment.appendChild(el)
                                  -}};
                                  -var destroyOutlineInspector=function destroyOutlineInspector(){for(var name in outline){var el=outlineElements[name];
                                  -el.parentNode.removeChild(el)
                                  -}};
                                  -var createBoxModelInspector=function createBoxModelInspector(){boxModel=createGlobalElement("div");
                                  -boxModel.id="fbBoxModel";
                                  -boxModel.firebugIgnore=true;
                                  -boxModelStyle=boxModel.style;
                                  -boxModelStyle.cssText=inspectModelStyle;
                                  -boxMargin=createGlobalElement("div");
                                  -boxMargin.id="fbBoxMargin";
                                  -boxMarginStyle=boxMargin.style;
                                  -boxMarginStyle.cssText=inspectMarginStyle;
                                  -boxModel.appendChild(boxMargin);
                                  -boxBorder=createGlobalElement("div");
                                  -boxBorder.id="fbBoxBorder";
                                  -boxBorderStyle=boxBorder.style;
                                  -boxBorderStyle.cssText=inspectBorderStyle;
                                  -boxModel.appendChild(boxBorder);
                                  -boxPadding=createGlobalElement("div");
                                  -boxPadding.id="fbBoxPadding";
                                  -boxPaddingStyle=boxPadding.style;
                                  -boxPaddingStyle.cssText=inspectPaddingStyle;
                                  -boxModel.appendChild(boxPadding);
                                  -boxContent=createGlobalElement("div");
                                  -boxContent.id="fbBoxContent";
                                  -boxContentStyle=boxContent.style;
                                  -boxContentStyle.cssText=inspectContentStyle;
                                  -boxModel.appendChild(boxContent);
                                  -offlineFragment.appendChild(boxModel)
                                  -};
                                  -var destroyBoxModelInspector=function destroyBoxModelInspector(){boxModel.parentNode.removeChild(boxModel)
                                  -}
                                  -}});
                                  -function DomplateTag(tagName){this.tagName=tagName
                                  -}function DomplateEmbed(){}function DomplateLoop(){}(function(){var womb=null;
                                  -var domplate=FBL.domplate=function(){var lastSubject;
                                  -for(var i=0;
                                  -i<arguments.length;
                                  -++i){lastSubject=lastSubject?copyObject(lastSubject,arguments[i]):arguments[i]
                                  -}for(var name in lastSubject){var val=lastSubject[name];
                                  -if(isTag(val)){val.tag.subject=lastSubject
                                  -}}return lastSubject
                                  -};
                                  -domplate.context=function(context,fn){var lastContext=domplate.lastContext;
                                  -domplate.topContext=context;
                                  -fn.apply(context);
                                  -domplate.topContext=lastContext
                                  -};
                                  -FBL.TAG=function(){var embed=new DomplateEmbed();
                                  -return embed.merge(arguments)
                                  -};
                                  -FBL.FOR=function(){var loop=new DomplateLoop();
                                  -return loop.merge(arguments)
                                  -};
                                  -DomplateTag.prototype={merge:function(args,oldTag){if(oldTag){this.tagName=oldTag.tagName
                                  -}this.context=oldTag?oldTag.context:null;
                                  -this.subject=oldTag?oldTag.subject:null;
                                  -this.attrs=oldTag?copyObject(oldTag.attrs):{};
                                  -this.classes=oldTag?copyObject(oldTag.classes):{};
                                  -this.props=oldTag?copyObject(oldTag.props):null;
                                  -this.listeners=oldTag?copyArray(oldTag.listeners):null;
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args.length?args[0]:null;
                                  -var hasAttrs=typeof(attrs)=="object"&&!isTag(attrs);
                                  -this.children=[];
                                  -if(domplate.topContext){this.context=domplate.topContext
                                  -}if(args.length){parseChildren(args,hasAttrs?1:0,this.vars,this.children)
                                  -}if(hasAttrs){this.parseAttrs(attrs)
                                  -}return creator(this,DomplateTag)
                                  -},parseAttrs:function(args){for(var name in args){var val=parseValue(args[name]);
                                  -readPartNames(val,this.vars);
                                  -if(name.indexOf("on")==0){var eventName=name.substr(2);
                                  -if(!this.listeners){this.listeners=[]
                                  -}this.listeners.push(eventName,val)
                                  -}else{if(name.indexOf("_")==0){var propName=name.substr(1);
                                  -if(!this.props){this.props={}
                                  -}this.props[propName]=val
                                  -}else{if(name.indexOf("$")==0){var className=name.substr(1);
                                  -if(!this.classes){this.classes={}
                                  -}this.classes[className]=val
                                  -}else{if(name=="class"&&this.attrs.hasOwnProperty(name)){this.attrs[name]+=" "+val
                                  -}else{this.attrs[name]=val
                                  -}}}}}},compile:function(){if(this.renderMarkup){return
                                  -}this.compileMarkup();
                                  -this.compileDOM()
                                  -},compileMarkup:function(){this.markupArgs=[];
                                  -var topBlock=[],topOuts=[],blocks=[],info={args:this.markupArgs,argIndex:0};
                                  -this.generateMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -var fnBlock=["r=(function (__code__, __context__, __in__, __out__"];
                                  -for(var i=0;
                                  -i<info.argIndex;
                                  -++i){fnBlock.push(", s",i)
                                  -}fnBlock.push(") {");
                                  -if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (__context__) {")
                                  -}fnBlock.push("with (__in__) {");
                                  -fnBlock.push.apply(fnBlock,blocks);
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("}})");
                                  -function __link__(tag,code,outputs,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var tagOutputs=[];
                                  -var markupArgs=[code,tag.tag.context,args,tagOutputs];
                                  -markupArgs.push.apply(markupArgs,tag.tag.markupArgs);
                                  -tag.tag.renderMarkup.apply(tag.tag.subject,markupArgs);
                                  -outputs.push(tag);
                                  -outputs.push(tagOutputs)
                                  -}function __escape__(value){function replaceChars(ch){switch(ch){case"<":return"&lt;";
                                  -case">":return"&gt;";
                                  -case"&":return"&amp;";
                                  -case"'":return"&#39;";
                                  -case'"':return"&quot;"
                                  -}return"?"
                                  -}return String(value).replace(/[<>&"']/g,replaceChars)
                                  -}function __loop__(iter,outputs,fn){var iterOuts=[];
                                  -outputs.push(iterOuts);
                                  -if(iter instanceof Array){iter=new ArrayIterator(iter)
                                  -}try{while(1){var value=iter.next();
                                  -var itemOuts=[0,0];
                                  -iterOuts.push(itemOuts);
                                  -fn.apply(this,[value,itemOuts])
                                  -}}catch(exc){if(exc!=StopIteration){throw exc
                                  -}}}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderMarkup=r
                                  -},getVarNames:function(args){if(this.vars){args.push.apply(args,this.vars)
                                  -}for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.getVarNames(args)
                                  -}else{if(child instanceof Parts){for(var i=0;
                                  -i<child.parts.length;
                                  -++i){if(child.parts[i] instanceof Variable){var name=child.parts[i].name;
                                  -var names=name.split(".");
                                  -args.push(names[0])
                                  -}}}}}},generateMarkup:function(topBlock,topOuts,blocks,info){topBlock.push(',"<',this.tagName,'"');
                                  -for(var name in this.attrs){if(name!="class"){var val=this.attrs[name];
                                  -topBlock.push(', " ',name,'=\\""');
                                  -addParts(val,",",topBlock,info,true);
                                  -topBlock.push(', "\\""')
                                  -}}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){readPartNames(this.listeners[i+1],topOuts)
                                  -}}if(this.props){for(var name in this.props){readPartNames(this.props[name],topOuts)
                                  -}}if(this.attrs.hasOwnProperty("class")||this.classes){topBlock.push(', " class=\\""');
                                  -if(this.attrs.hasOwnProperty("class")){addParts(this.attrs["class"],",",topBlock,info,true)
                                  -}topBlock.push(', " "');
                                  -for(var name in this.classes){topBlock.push(", (");
                                  -addParts(this.classes[name],"",topBlock,info);
                                  -topBlock.push(' ? "',name,'" + " " : "")')
                                  -}topBlock.push(', "\\""')
                                  -}topBlock.push(',">"');
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -topBlock.push(',"</',this.tagName,'>"')
                                  -},generateChildMarkup:function(topBlock,topOuts,blocks,info){for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){child.tag.generateMarkup(topBlock,topOuts,blocks,info)
                                  -}else{addParts(child,",",topBlock,info,true)
                                  -}}},addCode:function(topBlock,topOuts,blocks){if(topBlock.length){blocks.push('__code__.push(""',topBlock.join(""),");")
                                  -}if(topOuts.length){blocks.push("__out__.push(",topOuts.join(","),");")
                                  -}topBlock.splice(0,topBlock.length);
                                  -topOuts.splice(0,topOuts.length)
                                  -},addLocals:function(blocks){var varNames=[];
                                  -this.getVarNames(varNames);
                                  -var map={};
                                  -for(var i=0;
                                  -i<varNames.length;
                                  -++i){var name=varNames[i];
                                  -if(map.hasOwnProperty(name)){continue
                                  -}map[name]=1;
                                  -var names=name.split(".");
                                  -blocks.push("var ",names[0]+" = __in__."+names[0]+";")
                                  -}},compileDOM:function(){var path=[];
                                  -var blocks=[];
                                  -this.domArgs=[];
                                  -path.embedIndex=0;
                                  -path.loopIndex=0;
                                  -path.staticIndex=0;
                                  -path.renderIndex=0;
                                  -var nodeCount=this.generateDOM(path,blocks,this.domArgs);
                                  -var fnBlock=["r=(function (root, context, o"];
                                  -for(var i=0;
                                  -i<path.staticIndex;
                                  -++i){fnBlock.push(", ","s"+i)
                                  -}for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){fnBlock.push(", ","d"+i)
                                  -}fnBlock.push(") {");
                                  -for(var i=0;
                                  -i<path.loopIndex;
                                  -++i){fnBlock.push("var l",i," = 0;")
                                  -}for(var i=0;
                                  -i<path.embedIndex;
                                  -++i){fnBlock.push("var e",i," = 0;")
                                  -}if(this.subject){fnBlock.push("with (this) {")
                                  -}if(this.context){fnBlock.push("with (context) {")
                                  -}fnBlock.push(blocks.join(""));
                                  -if(this.subject){fnBlock.push("}")
                                  -}if(this.context){fnBlock.push("}")
                                  -}fnBlock.push("return ",nodeCount,";");
                                  -fnBlock.push("})");
                                  -function __bind__(object,fn){return function(event){return fn.apply(object,[event])
                                  -}
                                  -}function __link__(node,tag,args){if(!tag||!tag.tag){return
                                  -}tag.tag.compile();
                                  -var domArgs=[node,tag.tag.context,0];
                                  -domArgs.push.apply(domArgs,tag.tag.domArgs);
                                  -domArgs.push.apply(domArgs,args);
                                  -return tag.tag.renderDOM.apply(tag.tag.subject,domArgs)
                                  -}var self=this;
                                  -function __loop__(iter,fn){var nodeCount=0;
                                  -for(var i=0;
                                  -i<iter.length;
                                  -++i){iter[i][0]=i;
                                  -iter[i][1]=nodeCount;
                                  -nodeCount+=fn.apply(this,iter[i])
                                  -}return nodeCount
                                  -}function __path__(parent,offset){var root=parent;
                                  -for(var i=2;
                                  -i<arguments.length;
                                  -++i){var index=arguments[i];
                                  -if(i==3){index+=offset
                                  -}if(index==-1){parent=parent.parentNode
                                  -}else{parent=parent.childNodes[index]
                                  -}}return parent
                                  -}var js=fnBlock.join("");
                                  -var r=null;
                                  -eval(js);
                                  -this.renderDOM=r
                                  -},generateDOM:function(path,blocks,args){if(this.listeners||this.props){this.generateNodePath(path,blocks)
                                  -}if(this.listeners){for(var i=0;
                                  -i<this.listeners.length;
                                  -i+=2){var val=this.listeners[i+1];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push('addEvent(node, "',this.listeners[i],'", __bind__(this, ',arg,"), false);")
                                  -}}if(this.props){for(var name in this.props){var val=this.props[name];
                                  -var arg=generateArg(val,path,args);
                                  -blocks.push("node.",name," = ",arg,";")
                                  -}}this.generateChildDOM(path,blocks,args);
                                  -return 1
                                  -},generateNodePath:function(path,blocks){blocks.push("var node = __path__(root, o");
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){blocks.push(",",path[i])
                                  -}blocks.push(");")
                                  -},generateChildDOM:function(path,blocks,args){path.push(0);
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){var child=this.children[i];
                                  -if(isTag(child)){path[path.length-1]+="+"+child.tag.generateDOM(path,blocks,args)
                                  -}else{path[path.length-1]+="+1"
                                  -}}path.pop()
                                  -}};
                                  -DomplateEmbed.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.value=oldTag?oldTag.value:parseValue(args[0]);
                                  -this.attrs=oldTag?oldTag.attrs:{};
                                  -this.vars=oldTag?copyArray(oldTag.vars):[];
                                  -var attrs=args[1];
                                  -for(var name in attrs){var val=parseValue(attrs[name]);
                                  -this.attrs[name]=val;
                                  -readPartNames(val,this.vars)
                                  -}return creator(this,DomplateEmbed)
                                  -},getVarNames:function(names){if(this.value instanceof Parts){names.push(this.value.parts[0].name)
                                  -}if(this.vars){names.push.apply(names,this.vars)
                                  -}},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("__link__(");
                                  -addParts(this.value,"",blocks,info);
                                  -blocks.push(", __code__, __out__, {");
                                  -var lastName=null;
                                  -for(var name in this.attrs){if(lastName){blocks.push(",")
                                  -}lastName=name;
                                  -var val=this.attrs[name];
                                  -blocks.push('"',name,'":');
                                  -addParts(val,"",blocks,info)
                                  -}blocks.push("});")
                                  -},generateDOM:function(path,blocks,args){var embedName="e"+path.embedIndex++;
                                  -this.generateNodePath(path,blocks);
                                  -var valueName="d"+path.renderIndex++;
                                  -var argsName="d"+path.renderIndex++;
                                  -blocks.push(embedName+" = __link__(node, ",valueName,", ",argsName,");");
                                  -return embedName
                                  -}});
                                  -DomplateLoop.prototype=copyObject(DomplateTag.prototype,{merge:function(args,oldTag){this.varName=oldTag?oldTag.varName:args[0];
                                  -this.iter=oldTag?oldTag.iter:parseValue(args[1]);
                                  -this.vars=[];
                                  -this.children=oldTag?copyArray(oldTag.children):[];
                                  -var offset=Math.min(args.length,2);
                                  -parseChildren(args,offset,this.vars,this.children);
                                  -return creator(this,DomplateLoop)
                                  -},getVarNames:function(names){if(this.iter instanceof Parts){names.push(this.iter.parts[0].name)
                                  -}DomplateTag.prototype.getVarNames.apply(this,[names])
                                  -},generateMarkup:function(topBlock,topOuts,blocks,info){this.addCode(topBlock,topOuts,blocks);
                                  -var iterName;
                                  -if(this.iter instanceof Parts){var part=this.iter.parts[0];
                                  -iterName=part.name;
                                  -if(part.format){for(var i=0;
                                  -i<part.format.length;
                                  -++i){iterName=part.format[i]+"("+iterName+")"
                                  -}}}else{iterName=this.iter
                                  -}blocks.push("__loop__.apply(this, [",iterName,", __out__, function(",this.varName,", __out__) {");
                                  -this.generateChildMarkup(topBlock,topOuts,blocks,info);
                                  -this.addCode(topBlock,topOuts,blocks);
                                  -blocks.push("}]);")
                                  -},generateDOM:function(path,blocks,args){var iterName="d"+path.renderIndex++;
                                  -var counterName="i"+path.loopIndex;
                                  -var loopName="l"+path.loopIndex++;
                                  -if(!path.length){path.push(-1,0)
                                  -}var preIndex=path.renderIndex;
                                  -path.renderIndex=0;
                                  -var nodeCount=0;
                                  -var subBlocks=[];
                                  -var basePath=path[path.length-1];
                                  -for(var i=0;
                                  -i<this.children.length;
                                  -++i){path[path.length-1]=basePath+"+"+loopName+"+"+nodeCount;
                                  -var child=this.children[i];
                                  -if(isTag(child)){nodeCount+="+"+child.tag.generateDOM(path,subBlocks,args)
                                  -}else{nodeCount+="+1"
                                  -}}path[path.length-1]=basePath+"+"+loopName;
                                  -blocks.push(loopName," = __loop__.apply(this, [",iterName,", function(",counterName,",",loopName);
                                  -for(var i=0;
                                  -i<path.renderIndex;
                                  -++i){blocks.push(",d"+i)
                                  -}blocks.push(") {");
                                  -blocks.push(subBlocks.join(""));
                                  -blocks.push("return ",nodeCount,";");
                                  -blocks.push("}]);");
                                  -path.renderIndex=preIndex;
                                  -return loopName
                                  -}});
                                  -function Variable(name,format){this.name=name;
                                  -this.format=format
                                  -}function Parts(parts){this.parts=parts
                                  -}function parseParts(str){var re=/\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -var index=0;
                                  -var parts=[];
                                  -var m;
                                  -while(m=re.exec(str)){var pre=str.substr(index,(re.lastIndex-m[0].length)-index);
                                  -if(pre){parts.push(pre)
                                  -}var expr=m[1].split("|");
                                  -parts.push(new Variable(expr[0],expr.slice(1)));
                                  -index=re.lastIndex
                                  -}if(!index){return str
                                  -}var post=str.substr(index);
                                  -if(post){parts.push(post)
                                  -}return new Parts(parts)
                                  -}function parseValue(val){return typeof(val)=="string"?parseParts(val):val
                                  -}function parseChildren(args,offset,vars,children){for(var i=offset;
                                  -i<args.length;
                                  -++i){var val=parseValue(args[i]);
                                  -children.push(val);
                                  -readPartNames(val,vars)
                                  -}}function readPartNames(val,vars){if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){vars.push(part.name)
                                  -}}}}function generateArg(val,path,args){if(val instanceof Parts){var vals=[];
                                  -for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var varName="d"+path.renderIndex++;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){varName=part.format[j]+"("+varName+")"
                                  -}}vals.push(varName)
                                  -}else{vals.push('"'+part.replace(/"/g,'\\"')+'"')
                                  -}}return vals.join("+")
                                  -}else{args.push(val);
                                  -return"s"+path.staticIndex++
                                  -}}function addParts(val,delim,block,info,escapeIt){var vals=[];
                                  -if(val instanceof Parts){for(var i=0;
                                  -i<val.parts.length;
                                  -++i){var part=val.parts[i];
                                  -if(part instanceof Variable){var partName=part.name;
                                  -if(part.format){for(var j=0;
                                  -j<part.format.length;
                                  -++j){partName=part.format[j]+"("+partName+")"
                                  -}}if(escapeIt){vals.push("__escape__("+partName+")")
                                  -}else{vals.push(partName)
                                  -}}else{vals.push('"'+part+'"')
                                  -}}}else{if(isTag(val)){info.args.push(val);
                                  -vals.push("s"+info.argIndex++)
                                  -}else{vals.push('"'+val+'"')
                                  -}}var parts=vals.join(delim);
                                  -if(parts){block.push(delim,parts)
                                  -}}function isTag(obj){return(typeof(obj)=="function"||obj instanceof Function)&&!!obj.tag
                                  -}function creator(tag,cons){var fn=new Function("var tag = arguments.callee.tag;var cons = arguments.callee.cons;var newTag = new cons();return newTag.merge(arguments, tag);");
                                  -fn.tag=tag;
                                  -fn.cons=cons;
                                  -extend(fn,Renderer);
                                  -return fn
                                  -}function copyArray(oldArray){var ary=[];
                                  -if(oldArray){for(var i=0;
                                  -i<oldArray.length;
                                  -++i){ary.push(oldArray[i])
                                  -}}return ary
                                  -}function copyObject(l,r){var m={};
                                  -extend(m,l);
                                  -extend(m,r);
                                  -return m
                                  -}function extend(l,r){for(var n in r){l[n]=r[n]
                                  -}}function addEvent(object,name,handler){if(document.all){object.attachEvent("on"+name,handler)
                                  -}else{object.addEventListener(name,handler,false)
                                  -}}function ArrayIterator(array){var index=-1;
                                  -this.next=function(){if(++index>=array.length){throw StopIteration
                                  -}return array[index]
                                  -}
                                  -}function StopIteration(){}FBL.$break=function(){throw StopIteration
                                  -};
                                  -var Renderer={renderHTML:function(args,outputs,self){var code=[];
                                  -var markupArgs=[code,this.tag.context,args,outputs];
                                  -markupArgs.push.apply(markupArgs,this.tag.markupArgs);
                                  -this.tag.renderMarkup.apply(self?self:this.tag.subject,markupArgs);
                                  -return code.join("")
                                  -},insertRows:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -var div=doc.createElement("div");
                                  -div.innerHTML="<table><tbody>"+html+"</tbody></table>";
                                  -var tbody=div.firstChild.firstChild;
                                  -var parent=before.tagName=="TR"?before.parentNode:before;
                                  -var after=before.tagName=="TR"?before.nextSibling:null;
                                  -var firstRow=tbody.firstChild,lastRow;
                                  -while(tbody.firstChild){lastRow=tbody.firstChild;
                                  -if(after){parent.insertBefore(lastRow,after)
                                  -}else{parent.appendChild(lastRow)
                                  -}}var offset=0;
                                  -if(before.tagName=="TR"){var node=firstRow.parentNode.firstChild;
                                  -for(;
                                  -node&&node!=firstRow;
                                  -node=node.nextSibling){++offset
                                  -}}var domArgs=[firstRow,this.tag.context,offset];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return[firstRow,lastRow]
                                  -},insertAfter:function(args,before,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var doc=before.ownerDocument;
                                  -if(!womb||womb.ownerDocument!=doc){womb=doc.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild;
                                  -while(womb.firstChild){if(before.nextSibling){before.parentNode.insertBefore(womb.firstChild,before.nextSibling)
                                  -}else{before.parentNode.appendChild(womb.firstChild)
                                  -}}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:(this.tag.subject?this.tag.subject:null),domArgs);
                                  -return root
                                  -},replace:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -var root;
                                  -if(parent.nodeType==1){parent.innerHTML=html;
                                  -root=parent.firstChild
                                  -}else{if(!parent||parent.nodeType!=9){parent=document
                                  -}if(!womb||womb.ownerDocument!=parent){womb=parent.createElement("div")
                                  -}womb.innerHTML=html;
                                  -root=womb.firstChild
                                  -}var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -},append:function(args,parent,self){this.tag.compile();
                                  -var outputs=[];
                                  -var html=this.renderHTML(args,outputs,self);
                                  -if(!womb||womb.ownerDocument!=parent.ownerDocument){womb=parent.ownerDocument.createElement("div")
                                  -}womb.innerHTML=html;
                                  -var root=womb.firstChild;
                                  -while(womb.firstChild){parent.appendChild(womb.firstChild)
                                  -}womb=null;
                                  -var domArgs=[root,this.tag.context,0];
                                  -domArgs.push.apply(domArgs,this.tag.domArgs);
                                  -domArgs.push.apply(domArgs,outputs);
                                  -this.tag.renderDOM.apply(self?self:this.tag.subject,domArgs);
                                  -return root
                                  -}};
                                  -function defineTags(){for(var i=0;
                                  -i<arguments.length;
                                  -++i){var tagName=arguments[i];
                                  -var fn=new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -fn.DomplateTag=DomplateTag;
                                  -var fnName=tagName.toUpperCase();
                                  -FBL[fnName]=fn
                                  -}}defineTags("a","button","br","canvas","code","col","colgroup","div","fieldset","form","h1","h2","h3","hr","img","input","label","legend","li","ol","optgroup","option","p","pre","select","span","strong","table","tbody","td","textarea","tfoot","th","thead","tr","tt","ul","iframe")
                                  -})();
                                  -var FirebugReps=FBL.ns(function(){with(FBL){var OBJECTBOX=this.OBJECTBOX=SPAN({"class":"objectBox objectBox-$className"});
                                  -var OBJECTBLOCK=this.OBJECTBLOCK=DIV({"class":"objectBox objectBox-$className"});
                                  -var OBJECTLINK=this.OBJECTLINK=isIE6?A({"class":"objectLink objectLink-$className a11yFocus",href:"javascript:void(0)",_repObject:"$object"}):A({"class":"objectLink objectLink-$className a11yFocus",_repObject:"$object"});
                                  -this.Undefined=domplate(Firebug.Rep,{tag:OBJECTBOX("undefined"),className:"undefined",supportsObject:function(object,type){return type=="undefined"
                                  -}});
                                  -this.Null=domplate(Firebug.Rep,{tag:OBJECTBOX("null"),className:"null",supportsObject:function(object,type){return object==null
                                  -}});
                                  -this.Nada=domplate(Firebug.Rep,{tag:SPAN(""),className:"nada"});
                                  -this.Number=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),className:"number",supportsObject:function(object,type){return type=="boolean"||type=="number"
                                  -}});
                                  -this.String=domplate(Firebug.Rep,{tag:OBJECTBOX("&quot;$object&quot;"),shortTag:OBJECTBOX("&quot;$object|cropString&quot;"),className:"string",supportsObject:function(object,type){return type=="string"
                                  -}});
                                  -this.Text=domplate(Firebug.Rep,{tag:OBJECTBOX("$object"),shortTag:OBJECTBOX("$object|cropString"),className:"text"});
                                  -this.Caption=domplate(Firebug.Rep,{tag:SPAN({"class":"caption"},"$object")});
                                  -this.Warning=domplate(Firebug.Rep,{tag:DIV({"class":"warning focusRow",role:"listitem"},"$object|STR")});
                                  -this.Func=domplate(Firebug.Rep,{tag:OBJECTLINK("$object|summarizeFunction"),summarizeFunction:function(fn){var fnRegex=/function ([^(]+\([^)]*\)) \{/;
                                  -var fnText=safeToString(fn);
                                  -var m=fnRegex.exec(fnText);
                                  -return m?m[1]:"function()"
                                  -},copySource:function(fn){copyToClipboard(safeToString(fn))
                                  -},monitor:function(fn,script,monitored){if(monitored){Firebug.Debugger.unmonitorScript(fn,script,"monitor")
                                  -}else{Firebug.Debugger.monitorScript(fn,script,"monitor")
                                  -}},className:"function",supportsObject:function(object,type){return isFunction(object)
                                  -},inspectObject:function(fn,context){var sourceLink=findSourceForFunction(fn,context);
                                  -if(sourceLink){Firebug.chrome.select(sourceLink)
                                  -}if(FBTrace.DBG_FUNCTION_NAME){FBTrace.sysout("reps.function.inspectObject selected sourceLink is ",sourceLink)
                                  -}},getTooltip:function(fn,context){var script=findScriptForFunctionInContext(context,fn);
                                  -if(script){return $STRF("Line",[normalizeURL(script.fileName),script.baseLineNumber])
                                  -}else{if(fn.toString){return fn.toString()
                                  -}}},getTitle:function(fn,context){var name=fn.name?fn.name:"function";
                                  -return name+"()"
                                  -},getContextMenuItems:function(fn,target,context,script){if(!script){script=findScriptForFunctionInContext(context,fn)
                                  -}if(!script){return
                                  -}var scriptInfo=getSourceFileAndLineByScript(context,script);
                                  -var monitored=scriptInfo?fbs.isMonitored(scriptInfo.sourceFile.href,scriptInfo.lineNo):false;
                                  -var name=script?getFunctionName(script,context):fn.name;
                                  -return[{label:"CopySource",command:bindFixed(this.copySource,this,fn)},"-",{label:$STRF("ShowCallsInConsole",[name]),nol10n:true,type:"checkbox",checked:monitored,command:bindFixed(this.monitor,this,fn,script,monitored)}]
                                  -}});
                                  -this.Obj=domplate(Firebug.Rep,{tag:OBJECTLINK(SPAN({"class":"objectTitle"},"$object|getTitle"),FOR("prop","$object|propIterator"," $prop.name=",SPAN({"class":"objectPropValue"},"$prop.value|cropString"))),propIterator:function(object){if(!object){return[]
                                  -}var props=[];
                                  -var len=0;
                                  -try{for(var name in object){var val;
                                  -try{val=object[name]
                                  -}catch(exc){continue
                                  -}var t=typeof val;
                                  -if(t=="boolean"||t=="number"||(t=="string"&&val)||(t=="object"&&!isFunction(val)&&val&&val.toString)){var title=(t=="object")?Firebug.getRep(val).getTitle(val):val+"";
                                  -len+=name.length+title.length+1;
                                  -if(len<50){props.push({name:name,value:title})
                                  -}else{break
                                  -}}}}catch(exc){}return props
                                  -},className:"object",supportsObject:function(object,type){return true
                                  -}});
                                  -this.Arr=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|arrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket",role:"presentation"},"]")),shortTag:OBJECTBOX({_repObject:"$object"},SPAN({"class":"arrayLeftBracket",role:"presentation"},"["),FOR("item","$object|shortArrayIterator",TAG("$item.tag",{object:"$item.object"}),SPAN({"class":"arrayComma",role:"presentation"},"$item.delim")),SPAN({"class":"arrayRightBracket"},"]")),arrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}return items
                                  -},shortArrayIterator:function(array){var items=[];
                                  -for(var i=0;
                                  -i<array.length&&i<3;
                                  -++i){var value=array[i];
                                  -var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==array.length-1?"":", ");
                                  -items.push({object:value,tag:tag,delim:delim})
                                  -}if(array.length>3){items.push({object:(array.length-3)+" more...",tag:FirebugReps.Caption.tag,delim:""})
                                  -}return items
                                  -},shortPropIterator:this.Obj.propIterator,getItemIndex:function(child){var arrayIndex=0;
                                  -for(child=child.previousSibling;
                                  -child;
                                  -child=child.previousSibling){if(child.repObject){++arrayIndex
                                  -}}return arrayIndex
                                  -},className:"array",supportsObject:function(object){return this.isArray(object)
                                  -},isArray:function(obj){try{if(!obj){return false
                                  -}else{if(isIE&&!isFunction(obj)&&typeof obj=="object"&&isFinite(obj.length)&&obj.nodeType!=8){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.splice)){return true
                                  -}else{if(isFinite(obj.length)&&isFunction(obj.callee)){return true
                                  -}else{if(instanceOf(obj,"HTMLCollection")){return true
                                  -}else{if(instanceOf(obj,"NodeList")){return true
                                  -}else{return false
                                  -}}}}}}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("isArray FAILS:",exc);
                                  -FBTrace.sysout("isArray Fails on obj",obj)
                                  -}}return false
                                  -},getTitle:function(object,context){return"["+object.length+"]"
                                  -}});
                                  -this.Property=domplate(Firebug.Rep,{supportsObject:function(object){return object instanceof Property
                                  -},getRealObject:function(prop,context){return prop.object[prop.name]
                                  -},getTitle:function(prop,context){return prop.name
                                  -}});
                                  -this.NetFile=domplate(this.Obj,{supportsObject:function(object){return object instanceof Firebug.NetFile
                                  -},browseObject:function(file,context){openNewTab(file.href);
                                  -return true
                                  -},getRealObject:function(file,context){return null
                                  -}});
                                  -this.Except=domplate(Firebug.Rep,{tag:OBJECTBOX({_repObject:"$object"},"$object.message"),className:"exception",supportsObject:function(object){return object instanceof ErrorCopy
                                  -}});
                                  -this.Element=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"$object.tagName|toLowerCase"),FOR("attr","$object|attrIterator","&nbsp;$attr.tagName=&quot;",SPAN({"class":"nodeValue"},"$attr.nodeValue"),"&quot;"),"&gt;"),shortTag:OBJECTLINK(SPAN({"class":"$object|getVisible"},SPAN({"class":"selectorTag"},"$object|getSelectorTag"),SPAN({"class":"selectorId"},"$object|getSelectorId"),SPAN({"class":"selectorClass"},"$object|getSelectorClass"),SPAN({"class":"selectorValue"},"$object|getValue"))),getVisible:function(elt){return isVisible(elt)?"":"selectorHidden"
                                  -},getSelectorTag:function(elt){return elt.tagName.toLowerCase()
                                  -},getSelectorId:function(elt){return elt.id?"#"+elt.id:""
                                  -},getSelectorClass:function(elt){return elt.className?"."+elt.className.split(" ")[0]:""
                                  -},getValue:function(elt){return"";
                                  -var value;
                                  -if(elt instanceof HTMLImageElement){value=getFileName(elt.src)
                                  -}else{if(elt instanceof HTMLAnchorElement){value=getFileName(elt.href)
                                  -}else{if(elt instanceof HTMLInputElement){value=elt.value
                                  -}else{if(elt instanceof HTMLFormElement){value=getFileName(elt.action)
                                  -}else{if(elt instanceof HTMLScriptElement){value=getFileName(elt.src)
                                  -}}}}}return value?" "+cropString(value,20):""
                                  -},attrIterator:function(elt){var attrs=[];
                                  -var idAttr,classAttr;
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName&&attr.tagName.indexOf("firebug-")!=-1){continue
                                  -}else{if(attr.tagName=="id"){idAttr=attr
                                  -}else{if(attr.tagName=="class"){classAttr=attr
                                  -}else{attrs.push(attr)
                                  -}}}}}if(classAttr){attrs.splice(0,0,classAttr)
                                  -}if(idAttr){attrs.splice(0,0,idAttr)
                                  -}return attrs
                                  -},shortAttrIterator:function(elt){var attrs=[];
                                  -if(elt.attributes){for(var i=0;
                                  -i<elt.attributes.length;
                                  -++i){var attr=elt.attributes[i];
                                  -if(attr.tagName=="id"||attr.tagName=="class"){attrs.push(attr)
                                  -}}}return attrs
                                  -},getHidden:function(elt){return isVisible(elt)?"":"nodeHidden"
                                  -},getXPath:function(elt){return getElementTreeXPath(elt)
                                  -},getNodeText:function(element){var text=element.textContent;
                                  -if(Firebug.showFullTextNodes){return text
                                  -}else{return cropString(text,50)
                                  -}},copyHTML:function(elt){var html=getElementXML(elt);
                                  -copyToClipboard(html)
                                  -},copyInnerHTML:function(elt){copyToClipboard(elt.innerHTML)
                                  -},copyXPath:function(elt){var xpath=getElementXPath(elt);
                                  -copyToClipboard(xpath)
                                  -},persistor:function(context,xpath){var elts=xpath?getElementsByXPath(context.window.document,xpath):null;
                                  -return elts&&elts.length?elts[0]:null
                                  -},className:"element",supportsObject:function(object){return instanceOf(object,"Element")
                                  -},browseObject:function(elt,context){var tag=elt.tagName.toLowerCase();
                                  -if(tag=="script"){openNewTab(elt.src)
                                  -}else{if(tag=="link"){openNewTab(elt.href)
                                  -}else{if(tag=="a"){openNewTab(elt.href)
                                  -}else{if(tag=="img"){openNewTab(elt.src)
                                  -}}}}return true
                                  -},persistObject:function(elt,context){var xpath=getElementXPath(elt);
                                  -return bind(this.persistor,top,xpath)
                                  -},getTitle:function(element,context){return getElementCSSSelector(element)
                                  -},getTooltip:function(elt){return this.getXPath(elt)
                                  -},getContextMenuItems:function(elt,target,context){var monitored=areEventsMonitored(elt,null,context);
                                  -return[{label:"CopyHTML",command:bindFixed(this.copyHTML,this,elt)},{label:"CopyInnerHTML",command:bindFixed(this.copyInnerHTML,this,elt)},{label:"CopyXPath",command:bindFixed(this.copyXPath,this,elt)},"-",{label:"ShowEventsInConsole",type:"checkbox",checked:monitored,command:bindFixed(toggleMonitorEvents,FBL,elt,null,monitored,context)},"-",{label:"ScrollIntoView",command:bindFixed(elt.scrollIntoView,elt)}]
                                  -}});
                                  -this.TextNode=domplate(Firebug.Rep,{tag:OBJECTLINK("&lt;",SPAN({"class":"nodeTag"},"TextNode"),"&nbsp;textContent=&quot;",SPAN({"class":"nodeValue"},"$object.textContent|cropString"),"&quot;","&gt;"),className:"textNode",supportsObject:function(object){return object instanceof Text
                                  -}});
                                  -this.Document=domplate(Firebug.Rep,{tag:OBJECTLINK("Document ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(doc){return doc.location?getFileName(doc.location.href):""
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Document")
                                  -},browseObject:function(doc,context){openNewTab(doc.location.href);
                                  -return true
                                  -},persistObject:function(doc,context){return this.persistor
                                  -},persistor:function(context){return context.window.document
                                  -},getTitle:function(win,context){return"document"
                                  -},getTooltip:function(doc){return doc.location.href
                                  -}});
                                  -this.StyleSheet=domplate(Firebug.Rep,{tag:OBJECTLINK("StyleSheet ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(styleSheet){return getFileName(styleSheet.href)
                                  -},copyURL:function(styleSheet){copyToClipboard(styleSheet.href)
                                  -},openInTab:function(styleSheet){openNewTab(styleSheet.href)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"CSSStyleSheet")
                                  -},browseObject:function(styleSheet,context){openNewTab(styleSheet.href);
                                  -return true
                                  -},persistObject:function(styleSheet,context){return bind(this.persistor,top,styleSheet.href)
                                  -},getTooltip:function(styleSheet){return styleSheet.href
                                  -},getContextMenuItems:function(styleSheet,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyURL,this,styleSheet)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,styleSheet)}]
                                  -},persistor:function(context,href){return getStyleSheetByHref(href,context)
                                  -}});
                                  -this.Window=domplate(Firebug.Rep,{tag:OBJECTLINK("Window ",SPAN({"class":"objectPropValue"},"$object|getLocation")),getLocation:function(win){try{return(win&&win.location&&!win.closed)?getFileName(win.location.href):""
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.Window window closed?")
                                  -}}},className:"object",supportsObject:function(object){return instanceOf(object,"Window")
                                  -},browseObject:function(win,context){openNewTab(win.location.href);
                                  -return true
                                  -},persistObject:function(win,context){return this.persistor
                                  -},persistor:function(context){return context.window
                                  -},getTitle:function(win,context){return"window"
                                  -},getTooltip:function(win){if(win&&!win.closed){return win.location.href
                                  -}}});
                                  -this.Event=domplate(Firebug.Rep,{tag:TAG("$copyEventTag",{object:"$object|copyEvent"}),copyEventTag:OBJECTLINK("$object|summarizeEvent"),summarizeEvent:function(event){var info=[event.type," "];
                                  -var eventFamily=getEventFamily(event.type);
                                  -if(eventFamily=="mouse"){info.push("clientX=",event.clientX,", clientY=",event.clientY)
                                  -}else{if(eventFamily=="key"){info.push("charCode=",event.charCode,", keyCode=",event.keyCode)
                                  -}}return info.join("")
                                  -},copyEvent:function(event){return new EventCopy(event)
                                  -},className:"object",supportsObject:function(object){return instanceOf(object,"Event")||instanceOf(object,"EventCopy")
                                  -},getTitle:function(event,context){return"Event "+event.type
                                  -}});
                                  -this.SourceLink=domplate(Firebug.Rep,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),hideSourceLink:function(sourceLink){return sourceLink?sourceLink.href.indexOf("XPCSafeJSObjectWrapper")!=-1:true
                                  -},getSourceLinkTitle:function(sourceLink){if(!sourceLink){return""
                                  -}try{var fileName=getFileName(sourceLink.href);
                                  -fileName=decodeURIComponent(fileName);
                                  -fileName=cropString(fileName,17)
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for '"+fileName+"': "+exc,exc)
                                  -}}return typeof sourceLink.line=="number"?fileName+" (line "+sourceLink.line+")":fileName
                                  -},copyLink:function(sourceLink){copyToClipboard(sourceLink.href)
                                  -},openInTab:function(sourceLink){openNewTab(sourceLink.href)
                                  -},className:"sourceLink",supportsObject:function(object){return object instanceof SourceLink
                                  -},getTooltip:function(sourceLink){return decodeURI(sourceLink.href)
                                  -},inspectObject:function(sourceLink,context){if(sourceLink.type=="js"){var scriptFile=getSourceFileByHref(sourceLink.href,context);
                                  -if(scriptFile){return Firebug.chrome.select(sourceLink)
                                  -}}else{if(sourceLink.type=="css"){if(sourceLink.object){Firebug.chrome.select(sourceLink.object);
                                  -return
                                  -}var stylesheet=getStyleSheetByHref(sourceLink.href,context);
                                  -if(stylesheet){var ownerNode=stylesheet.ownerNode;
                                  -if(ownerNode){Firebug.chrome.select(sourceLink,"html");
                                  -return
                                  -}var panel=context.getPanel("stylesheet");
                                  -if(panel&&panel.getRuleByLine(stylesheet,sourceLink.line)){return Firebug.chrome.select(sourceLink)
                                  -}}}}viewSource(sourceLink.href,sourceLink.line)
                                  -},browseObject:function(sourceLink,context){openNewTab(sourceLink.href);
                                  -return true
                                  -},getContextMenuItems:function(sourceLink,target,context){return[{label:"CopyLocation",command:bindFixed(this.copyLink,this,sourceLink)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,sourceLink)}]
                                  -}});
                                  -this.SourceFile=domplate(this.SourceLink,{tag:OBJECTLINK({$collapsed:"$object|hideSourceLink"},"$object|getSourceLinkTitle"),persistor:function(context,href){return getSourceFileByHref(href,context)
                                  -},className:"sourceFile",supportsObject:function(object){return object instanceof SourceFile
                                  -},persistObject:function(sourceFile){return bind(this.persistor,top,sourceFile.href)
                                  -},browseObject:function(sourceLink,context){},getTooltip:function(sourceFile){return sourceFile.href
                                  -}});
                                  -this.StackFrame=domplate(Firebug.Rep,{tag:OBJECTBLOCK(A({"class":"objectLink focusRow a11yFocus",_repObject:"$object"},"$object|getCallName"),"(",FOR("arg","$object|argIterator",TAG("$arg.tag",{object:"$arg.value"}),SPAN({"class":"arrayComma"},"$arg.delim")),")",SPAN({"class":"objectLink-sourceLink objectLink"},"$object|getSourceLinkTitle")),getCallName:function(frame){return getFunctionName(frame.script,frame.context)
                                  -},getSourceLinkTitle:function(frame){var fileName=cropString(getFileName(frame.href),17);
                                  -return $STRF("Line",[fileName,frame.lineNo])
                                  -},argIterator:function(frame){if(!frame.args){return[]
                                  -}var items=[];
                                  -for(var i=0;
                                  -i<frame.args.length;
                                  -++i){var arg=frame.args[i];
                                  -if(!arg){break
                                  -}var rep=Firebug.getRep(arg.value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var delim=(i==frame.args.length-1?"":", ");
                                  -items.push({name:arg.name,value:arg.value,tag:tag,delim:delim})
                                  -}return items
                                  -},className:"stackFrame",supportsObject:function(object){return object instanceof StackFrame
                                  -},inspectObject:function(stackFrame,context){var sourceLink=new SourceLink(stackFrame.href,stackFrame.lineNo,"js");
                                  -Firebug.chrome.select(sourceLink)
                                  -},getTooltip:function(stackFrame,context){return $STRF("Line",[stackFrame.href,stackFrame.lineNo])
                                  -}});
                                  -this.StackTrace=domplate(Firebug.Rep,{tag:FOR("frame","$object.frames focusRow",TAG(this.StackFrame.tag,{object:"$frame"})),className:"stackTrace",supportsObject:function(object){return object instanceof StackTrace
                                  -}});
                                  -this.jsdStackFrame=domplate(Firebug.Rep,{inspectable:false,supportsObject:function(object){return(object instanceof jsdIStackFrame)&&(object.isValid)
                                  -},getTitle:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}return getFunctionName(frame.script,context)
                                  -},getTooltip:function(frame,context){if(!frame.isValid){return"(invalid frame)"
                                  -}var sourceInfo=FBL.getSourceFileAndLineByScript(context,frame.script,frame);
                                  -if(sourceInfo){return $STRF("Line",[sourceInfo.sourceFile.href,sourceInfo.lineNo])
                                  -}else{return $STRF("Line",[frame.script.fileName,frame.line])
                                  -}},getContextMenuItems:function(frame,target,context){var fn=frame.script.functionObject.getWrappedValue();
                                  -return FirebugReps.Func.getContextMenuItems(fn,target,context,frame.script)
                                  -}});
                                  -this.ErrorMessage=domplate(Firebug.Rep,{tag:OBJECTBOX({$hasTwisty:"$object|hasStackTrace",$hasBreakSwitch:"$object|hasBreakSwitch",$breakForError:"$object|hasErrorBreak",_repObject:"$object",_stackTrace:"$object|getLastErrorStackTrace",onclick:"$onToggleError"},DIV({"class":"errorTitle a11yFocus",role:"checkbox","aria-checked":"false"},"$object.message|getMessage"),DIV({"class":"errorTrace"}),DIV({"class":"errorSourceBox errorSource-$object|getSourceType"},IMG({"class":"errorBreak a11yFocus",src:"blank.gif",role:"checkbox","aria-checked":"false",title:"Break on this error"}),A({"class":"errorSource a11yFocus"},"$object|getLine")),TAG(this.SourceLink.tag,{object:"$object|getSourceLink"})),getLastErrorStackTrace:function(error){return error.trace
                                  -},hasStackTrace:function(error){var url=error.href.toString();
                                  -var fromCommandLine=(url.indexOf("XPCSafeJSObjectWrapper")!=-1);
                                  -return !fromCommandLine&&error.trace
                                  -},hasBreakSwitch:function(error){return error.href&&error.lineNo>0
                                  -},hasErrorBreak:function(error){return fbs.hasErrorBreakpoint(error.href,error.lineNo)
                                  -},getMessage:function(message){var re=/\[Exception... "(.*?)" nsresult:/;
                                  -var m=re.exec(message);
                                  -return m?m[1]:message
                                  -},getLine:function(error){if(error.category=="js"){if(error.source){return cropString(error.source,80)
                                  -}else{if(error.href&&error.href.indexOf("XPCSafeJSObjectWrapper")==-1){return cropString(error.getSourceLine(),80)
                                  -}}}},getSourceLink:function(error){var ext=error.category=="css"?"css":"js";
                                  -return error.lineNo?new SourceLink(error.href,error.lineNo,ext):null
                                  -},getSourceType:function(error){if(error.source){return"syntax"
                                  -}else{if(error.lineNo==1&&getFileExtension(error.href)!="js"){return"none"
                                  -}else{if(error.category=="css"){return"none"
                                  -}else{if(!error.href||!error.lineNo){return"none"
                                  -}else{return"exec"
                                  -}}}}},onToggleError:function(event){var target=event.currentTarget;
                                  -if(hasClass(event.target,"errorBreak")){this.breakOnThisError(target.repObject)
                                  -}else{if(hasClass(event.target,"errorSource")){var panel=Firebug.getElementPanel(event.target);
                                  -this.inspectObject(target.repObject,panel.context)
                                  -}else{if(hasClass(event.target,"errorTitle")){var traceBox=target.childNodes[1];
                                  -toggleClass(target,"opened");
                                  -event.target.setAttribute("aria-checked",hasClass(target,"opened"));
                                  -if(hasClass(target,"opened")){if(target.stackTrace){var node=FirebugReps.StackTrace.tag.append({object:target.stackTrace},traceBox)
                                  -}if(Firebug.A11yModel.enabled){var panel=Firebug.getElementPanel(event.target);
                                  -dispatch([Firebug.A11yModel],"onLogRowContentCreated",[panel,traceBox])
                                  -}}else{clearNode(traceBox)
                                  -}}}}},copyError:function(error){var message=[this.getMessage(error.message),error.href,"Line "+error.lineNo];
                                  -copyToClipboard(message.join("\n"))
                                  -},breakOnThisError:function(error){if(this.hasErrorBreak(error)){Firebug.Debugger.clearErrorBreakpoint(error.href,error.lineNo)
                                  -}else{Firebug.Debugger.setErrorBreakpoint(error.href,error.lineNo)
                                  -}},className:"errorMessage",inspectable:false,supportsObject:function(object){return object instanceof ErrorMessage
                                  -},inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -FirebugReps.SourceLink.inspectObject(sourceLink,context)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -var items=[{label:"CopyError",command:bindFixed(this.copyError,this,error)}];
                                  -if(error.category=="css"){items.push("-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},optionMenu("BreakOnAllErrors","breakOnErrors"))
                                  -}return items
                                  -}});
                                  -this.Assert=domplate(Firebug.Rep,{tag:DIV(DIV({"class":"errorTitle"}),DIV({"class":"assertDescription"})),className:"assert",inspectObject:function(error,context){var sourceLink=this.getSourceLink(error);
                                  -Firebug.chrome.select(sourceLink)
                                  -},getContextMenuItems:function(error,target,context){var breakOnThisError=this.hasErrorBreak(error);
                                  -return[{label:"CopyError",command:bindFixed(this.copyError,this,error)},"-",{label:"BreakOnThisError",type:"checkbox",checked:breakOnThisError,command:bindFixed(this.breakOnThisError,this,error)},{label:"BreakOnAllErrors",type:"checkbox",checked:Firebug.breakOnErrors,command:bindFixed(this.breakOnAllErrors,this,error)}]
                                  -}});
                                  -this.SourceText=domplate(Firebug.Rep,{tag:DIV(FOR("line","$object|lineIterator",DIV({"class":"sourceRow",role:"presentation"},SPAN({"class":"sourceLine",role:"presentation"},"$line.lineNo"),SPAN({"class":"sourceRowText",role:"presentation"},"$line.text")))),lineIterator:function(sourceText){var maxLineNoChars=(sourceText.lines.length+"").length;
                                  -var list=[];
                                  -for(var i=0;
                                  -i<sourceText.lines.length;
                                  -++i){var lineNo=(i+1)+"";
                                  -while(lineNo.length<maxLineNoChars){lineNo=" "+lineNo
                                  -}list.push({lineNo:lineNo,text:sourceText.lines[i]})
                                  -}return list
                                  -},getHTML:function(sourceText){return getSourceLineRange(sourceText,1,sourceText.lines.length)
                                  -}});
                                  -this.nsIDOMHistory=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showHistory"},OBJECTLINK("$object|summarizeHistory")),className:"nsIDOMHistory",summarizeHistory:function(history){try{var items=history.length;
                                  -return items+" history entries"
                                  -}catch(exc){return"object does not support history (nsIDOMHistory)"
                                  -}},showHistory:function(history){try{var items=history.length;
                                  -Firebug.chrome.select(history)
                                  -}catch(exc){}},supportsObject:function(object,type){return(object instanceof Ci.nsIDOMHistory)
                                  -}});
                                  -this.ApplicationCache=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$showApplicationCache"},OBJECTLINK("$object|summarizeCache")),summarizeCache:function(applicationCache){try{return applicationCache.length+" items in offline cache"
                                  -}catch(exc){return"https://bugzilla.mozilla.org/show_bug.cgi?id=422264"
                                  -}},showApplicationCache:function(event){openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264")
                                  -},className:"applicationCache",supportsObject:function(object,type){if(Ci.nsIDOMOfflineResourceList){return(object instanceof Ci.nsIDOMOfflineResourceList)
                                  -}}});
                                  -this.Storage=domplate(Firebug.Rep,{tag:OBJECTBOX({onclick:"$show"},OBJECTLINK("$object|summarize")),summarize:function(storage){return storage.length+" items in Storage"
                                  -},show:function(storage){openNewTab("http://dev.w3.org/html5/webstorage/#storage-0")
                                  -},className:"Storage",supportsObject:function(object,type){return(object instanceof Storage)
                                  -}});
                                  -Firebug.registerRep(this.Undefined,this.Null,this.Number,this.String,this.Window,this.Element,this.Document,this.StyleSheet,this.Event,this.Property,this.Except,this.Arr);
                                  -Firebug.setDefaultReps(this.Func,this.Obj)
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Reps={appendText:function(object,html){html.push(escapeHTML(objectToString(object)))
                                  -},appendNull:function(object,html){html.push('<span class="objectBox-null">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendString:function(object,html){html.push('<span class="objectBox-string">&quot;',escapeHTML(objectToString(object)),"&quot;</span>")
                                  -},appendInteger:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFloat:function(object,html){html.push('<span class="objectBox-number">',escapeHTML(objectToString(object)),"</span>")
                                  -},appendFunction:function(object,html){var reName=/function ?(.*?)\(/;
                                  -var m=reName.exec(objectToString(object));
                                  -var name=m&&m[1]?m[1]:"function";
                                  -html.push('<span class="objectBox-function">',escapeHTML(name),"()</span>")
                                  -},appendObject:function(object,html){try{if(object==undefined){this.appendNull("undefined",html)
                                  -}else{if(object==null){this.appendNull("null",html)
                                  -}else{if(typeof object=="string"){this.appendString(object,html)
                                  -}else{if(typeof object=="number"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="boolean"){this.appendInteger(object,html)
                                  -}else{if(typeof object=="function"){this.appendFunction(object,html)
                                  -}else{if(object.nodeType==1){this.appendSelector(object,html)
                                  -}else{if(typeof object=="object"){if(typeof object.length!="undefined"){this.appendArray(object,html)
                                  -}else{this.appendObjectFormatted(object,html)
                                  -}}else{this.appendText(object,html)
                                  -}}}}}}}}}catch(exc){}},appendObjectFormatted:function(object,html){var text=objectToString(object);
                                  -var reObject=/\[object (.*?)\]/;
                                  -var m=reObject.exec(text);
                                  -html.push('<span class="objectBox-object">',m?m[1]:text,"</span>")
                                  -},appendSelector:function(object,html){var uid=object[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<span class="objectBox-selector"',uidString,">");
                                  -html.push('<span class="selectorTag">',escapeHTML(object.nodeName.toLowerCase()),"</span>");
                                  -if(object.id){html.push('<span class="selectorId">#',escapeHTML(object.id),"</span>")
                                  -}if(object.className){html.push('<span class="selectorClass">.',escapeHTML(object.className),"</span>")
                                  -}html.push("</span>")
                                  -},appendNode:function(node,html){if(node.nodeType==1){var uid=node[cacheID];
                                  -var uidString=uid?[cacheID,'="',uid,'"'].join(""):"";
                                  -html.push('<div class="objectBox-element"',uidString,'">',"<span ",cacheID,'="',uid,'" class="nodeBox">','&lt;<span class="nodeTag">',node.nodeName.toLowerCase(),"</span>");
                                  -for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||attr.nodeName==cacheID){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?node.style.cssText:attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(node.firstChild){html.push('&gt;</div><div class="nodeChildren">');
                                  -for(var child=node.firstChild;
                                  -child;
                                  -child=child.nextSibling){this.appendNode(child,html)
                                  -}html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">',node.nodeName.toLowerCase(),"&gt;</span></span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(node.nodeType==3){html.push('<div class="nodeText">',escapeHTML(node.nodeValue),"</div>")
                                  -}}},appendArray:function(object,html){html.push('<span class="objectBox-array"><b>[</b> ');
                                  -for(var i=0,l=object.length,obj;
                                  -i<l;
                                  -++i){this.appendObject(object[i],html);
                                  -if(i<l-1){html.push(", ")
                                  -}}html.push(" <b>]</b></span>")
                                  -}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ConsoleAPI={firebuglite:Firebug.version,xxx:function(o){var rep=Firebug.getRep(o);
                                  -var className="";
                                  -var panel=Firebug.DOM.getPanel();
                                  -var toggles={};
                                  -var row=Firebug.Console.getPanel().panelNode.ownerDocument.createElement("div");
                                  -var target=row;
                                  -var object=o;
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -rep.tag.replace({domPanel:panel,toggles:toggles,object:object},target);
                                  -Firebug.Console.appendRow(row)
                                  -},log:function(){return Firebug.Console.logFormatted(arguments,"")
                                  -},debug:function(){return Firebug.Console.logFormatted(arguments,"debug")
                                  -},info:function(){return Firebug.Console.logFormatted(arguments,"info")
                                  -},warn:function(){return Firebug.Console.logFormatted(arguments,"warning")
                                  -},error:function(){return Firebug.Console.logFormatted(arguments,"error")
                                  -},assert:function(truth,message){if(!truth){var args=[];
                                  -for(var i=1;
                                  -i<arguments.length;
                                  -++i){args.push(arguments[i])
                                  -}Firebug.Console.logFormatted(args.length?args:["Assertion Failure"],"error");
                                  -throw message?message:"Assertion Failure"
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},dir:function(object){var html=[];
                                  -var pairs=[];
                                  -for(var name in object){try{pairs.push([name,object[name]])
                                  -}catch(exc){}}pairs.sort(function(a,b){return a[0]<b[0]?-1:1
                                  -});
                                  -html.push('<div class="log-object">');
                                  -for(var i=0;
                                  -i<pairs.length;
                                  -++i){var name=pairs[i][0],value=pairs[i][1];
                                  -html.push('<div class="property">','<div class="propertyValueCell"><span class="propertyValue">');
                                  -Firebug.Reps.appendObject(value,html);
                                  -html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',escapeHTML(name),"</span></div>");
                                  -html.push("</div>")
                                  -}html.push("</div>");
                                  -return Firebug.Console.logRow(html,"dir")
                                  -},dirxml:function(node){var html=[];
                                  -Firebug.Reps.appendNode(node,html);
                                  -return Firebug.Console.logRow(html,"dirxml")
                                  -},group:function(){return Firebug.Console.logRow(arguments,"group",Firebug.Console.pushGroup)
                                  -},groupEnd:function(){return Firebug.Console.logRow(arguments,"",Firebug.Console.popGroup)
                                  -},time:function(name){Firebug.Console.timeMap[name]=new Date().getTime();
                                  -return Firebug.Console.LOG_COMMAND
                                  -},timeEnd:function(name){var timeMap=Firebug.Console.timeMap;
                                  -if(name in timeMap){var delta=new Date().getTime()-timeMap[name];
                                  -Firebug.Console.logFormatted([name+":",delta+"ms"]);
                                  -delete timeMap[name]
                                  -}return Firebug.Console.LOG_COMMAND
                                  -},count:function(){return this.warn(["count() not supported."])
                                  -},trace:function(){var getFuncName=function getFuncName(f){if(f.getName instanceof Function){return f.getName()
                                  -}if(f.name){return f.name
                                  -}var name=f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -return name||"anonymous"
                                  -};
                                  -var wasVisited=function(fn){for(var i=0,l=stack.length;
                                  -i<l;
                                  -i++){if(stack[i]==fn){return true
                                  -}}return false
                                  -};
                                  -var stack=[];
                                  -var traceLabel="Stack Trace";
                                  -this.group(traceLabel);
                                  -for(var fn=arguments.callee.caller;
                                  -fn;
                                  -fn=fn.caller){if(wasVisited(fn)){break
                                  -}stack.push(fn);
                                  -var html=["<div class='objectBox-function'>",getFuncName(fn),"("];
                                  -for(var i=0,l=fn.arguments.length;
                                  -i<l;
                                  -++i){if(i){html.push(", ")
                                  -}Firebug.Reps.appendObject(fn.arguments[i],html)
                                  -}html.push(")</div>");
                                  -Firebug.Console.logRow(html,"stackTrace")
                                  -}this.groupEnd(traceLabel);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},profile:function(){return this.warn(["profile() not supported."])
                                  -},profileEnd:function(){return this.warn(["profileEnd() not supported."])
                                  -},clear:function(){Firebug.Console.getPanel().panelNode.innerHTML="";
                                  -return Firebug.Console.LOG_COMMAND
                                  -},open:function(){toggleConsole(true);
                                  -return Firebug.Console.LOG_COMMAND
                                  -},close:function(){if(frameVisible){toggleConsole()
                                  -}return Firebug.Console.LOG_COMMAND
                                  -}};
                                  -var ConsoleModule=extend(Firebug.Module,ConsoleAPI);
                                  -Firebug.Console=extend(ConsoleModule,{LOG_COMMAND:{},groupStack:[],timeMap:{},getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Console"):null
                                  -},flush:function(){var queue=FirebugChrome.consoleMessageQueue;
                                  -FirebugChrome.consoleMessageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}},logFormatted:function(objects,className){var html=[];
                                  -var format=objects[0];
                                  -var objIndex=0;
                                  -if(typeof(format)!="string"){format="";
                                  -objIndex=-1
                                  -}var parts=this.parseFormat(format);
                                  -for(var i=0;
                                  -i<parts.length;
                                  -++i){var part=parts[i];
                                  -if(part&&typeof(part)=="object"){var object=objects[++objIndex];
                                  -part.appender(object,html)
                                  -}else{Firebug.Reps.appendText(part,html)
                                  -}}for(var i=objIndex+1;
                                  -i<objects.length;
                                  -++i){Firebug.Reps.appendText(" ",html);
                                  -var object=objects[i];
                                  -if(typeof(object)=="string"){Firebug.Reps.appendText(object,html)
                                  -}else{Firebug.Reps.appendObject(object,html)
                                  -}}return this.logRow(html,className)
                                  -},parseFormat:function(format){var parts=[];
                                  -var reg=/((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -var Reps=Firebug.Reps;
                                  -var appenderMap={s:Reps.appendText,d:Reps.appendInteger,i:Reps.appendInteger,f:Reps.appendFloat};
                                  -for(var m=reg.exec(format);
                                  -m;
                                  -m=reg.exec(format)){var type=m[8]?m[8]:m[5];
                                  -var appender=type in appenderMap?appenderMap[type]:Reps.appendObject;
                                  -var precision=m[3]?parseInt(m[3]):(m[4]=="."?-1:0);
                                  -parts.push(format.substr(0,m[0][0]=="%"?m.index:m.index+1));
                                  -parts.push({appender:appender,precision:precision});
                                  -format=format.substr(m.index+m[0].length)
                                  -}parts.push(format);
                                  -return parts
                                  -},logRow:function(message,className,handler){var panel=this.getPanel();
                                  -if(panel&&panel.panelNode){this.writeMessage(message,className,handler)
                                  -}else{FirebugChrome.consoleMessageQueue.push([message,className,handler])
                                  -}return this.LOG_COMMAND
                                  -},writeMessage:function(message,className,handler){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -if(!handler){handler=this.writeRow
                                  -}handler.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}},appendRow:function(row){if(this.groupStack.length>0){var container=this.groupStack[this.groupStack.length-1]
                                  -}else{var container=this.getPanel().panelNode
                                  -}container.appendChild(row)
                                  -},writeRow:function(message,className){var row=this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -},pushGroup:function(message,className){this.logFormatted(message,className);
                                  -var groupRow=this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -groupRow.className="logGroup";
                                  -var groupRowBox=this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -groupRowBox.className="logGroupBox";
                                  -groupRow.appendChild(groupRowBox);
                                  -this.appendRow(groupRowBox);
                                  -this.groupStack.push(groupRowBox)
                                  -},popGroup:function(){this.groupStack.pop()
                                  -}});
                                  -Firebug.registerModule(Firebug.Console);
                                  -function ConsolePanel(){}ConsolePanel.prototype=extend(Firebug.Panel,{name:"Console",title:"Console",options:{hasCommandLine:true,hasToolButtons:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Button({element:$("fbConsole_btClear"),owner:Firebug.Console,onClick:Firebug.Console.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize();
                                  -if(Firebug.HTML){addEvent($("fbPanel1"),"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -}},shutdown:function(){if(Firebug.HTML){removeEvent($("fbPanel1"),"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -}this.clearButton.shutdown();
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(ConsolePanel);
                                  -FBL.onError=function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.logRow(html,"error")
                                  -};
                                  -FBL.registerConsole=function(){if(Env.Options.overrideConsole){var win=Env.browser.window;
                                  -if(!isFirefox||isFirefox&&!("console" in win)){win.console=ConsoleAPI
                                  -}else{win.firebug=ConsoleAPI
                                  -}}};
                                  -registerConsole()
                                  -}});
                                  -FBL.ns(function(){with(FBL){var commandPrefix=">>>";
                                  -var reOpenBracket=/[\[\(\{]/;
                                  -var reCloseBracket=/[\]\)\}]/;
                                  -var commandHistory=[];
                                  -var commandPointer=-1;
                                  -var isAutoCompleting=null;
                                  -var autoCompletePrefix=null;
                                  -var autoCompleteExpr=null;
                                  -var autoCompleteBuffer=null;
                                  -var autoCompletePosition=null;
                                  -var fbCommandLine=null;
                                  -var fbLargeCommandLine=null;
                                  -var fbLargeCommandButtons=null;
                                  -var _completion={window:["console"],document:["getElementById","getElementsByTagName"]};
                                  -var _stack=function(command){commandHistory.push(command);
                                  -commandPointer=commandHistory.length
                                  -};
                                  -Firebug.CommandLine=extend(Firebug.Module,{element:null,isMultiLine:false,isActive:false,initialize:function(doc){this.clear=bind(this.clear,this);
                                  -this.enter=bind(this.enter,this);
                                  -this.onError=bind(this.onError,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -this.onMultiLineKeyDown=bind(this.onMultiLineKeyDown,this);
                                  -addEvent(Firebug.browser.window,"error",this.onError);
                                  -addEvent(Firebug.chrome.window,"error",this.onError)
                                  -},shutdown:function(doc){this.deactivate();
                                  -removeEvent(Firebug.browser.window,"error",this.onError);
                                  -removeEvent(Firebug.chrome.window,"error",this.onError)
                                  -},activate:function(multiLine,hideToggleIcon,onRun){if(this.isActive){if(this.isMultiLine==multiLine){return
                                  -}this.deactivate()
                                  -}fbCommandLine=$("fbCommandLine");
                                  -fbLargeCommandLine=$("fbLargeCommandLine");
                                  -fbLargeCommandButtons=$("fbLargeCommandButtons");
                                  -if(multiLine){onRun=onRun||this.enter;
                                  -this.isMultiLine=true;
                                  -this.element=fbLargeCommandLine;
                                  -addEvent(this.element,"keydown",this.onMultiLineKeyDown);
                                  -addEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
                                  -this.runButton=new Button({element:$("fbCommand_btRun"),owner:Firebug.CommandLine,onClick:onRun});
                                  -this.runButton.initialize();
                                  -this.clearButton=new Button({element:$("fbCommand_btClear"),owner:Firebug.CommandLine,onClick:this.clear});
                                  -this.clearButton.initialize()
                                  -}else{this.isMultiLine=false;
                                  -this.element=fbCommandLine;
                                  -if(!fbCommandLine){return
                                  -}addEvent(this.element,"keydown",this.onKeyDown)
                                  -}if(isOpera){fixOperaTabKey(this.element)
                                  -}if(this.lastValue){this.element.value=this.lastValue
                                  -}this.isActive=true
                                  -},deactivate:function(){if(!this.isActive){return
                                  -}this.isActive=false;
                                  -this.lastValue=this.element.value;
                                  -if(this.isMultiLine){removeEvent(this.element,"keydown",this.onMultiLineKeyDown);
                                  -removeEvent($("fbSmallCommandLineIcon"),"click",Firebug.chrome.hideLargeCommandLine);
                                  -this.runButton.destroy();
                                  -this.clearButton.destroy()
                                  -}else{removeEvent(this.element,"keydown",this.onKeyDown)
                                  -}this.element=null;
                                  -delete this.element;
                                  -fbCommandLine=null;
                                  -fbLargeCommandLine=null;
                                  -fbLargeCommandButtons=null
                                  -},focus:function(){this.element.focus()
                                  -},blur:function(){this.element.blur()
                                  -},clear:function(){this.element.value=""
                                  -},evaluate:function(expr){var api="Firebug.CommandLine.API";
                                  -var result=Firebug.context.evaluate(expr,"window",api,Firebug.Console.error);
                                  -return result
                                  -},enter:function(){var command=this.element.value;
                                  -if(!command){return
                                  -}_stack(command);
                                  -Firebug.Console.writeMessage(["<span>&gt;&gt;&gt;</span> ",escapeHTML(command)],"command");
                                  -var result=this.evaluate(command);
                                  -if(result!=Firebug.Console.LOG_COMMAND){Firebug.Console.log(result)
                                  -}},prevCommand:function(){if(commandPointer>0&&commandHistory.length>0){this.element.value=commandHistory[--commandPointer]
                                  -}},nextCommand:function(){var element=this.element;
                                  -var limit=commandHistory.length-1;
                                  -var i=commandPointer;
                                  -if(i<limit){element.value=commandHistory[++commandPointer]
                                  -}else{if(i==limit){++commandPointer;
                                  -element.value=""
                                  -}}},autocomplete:function(reverse){var element=this.element;
                                  -var command=element.value;
                                  -var offset=getExpressionOffset(command);
                                  -var valBegin=offset?command.substr(0,offset):"";
                                  -var val=command.substr(offset);
                                  -var buffer,obj,objName,commandBegin,result,prefix;
                                  -if(!isAutoCompleting){var reObj=/(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -var r=reObj.exec(val);
                                  -if(r[1]||r[2]||r[3]){commandBegin=r[1]||"";
                                  -objName=r[2]||"";
                                  -prefix=r[3]||""
                                  -}else{if(val==""){commandBegin=objName=prefix=""
                                  -}else{return
                                  -}}isAutoCompleting=true;
                                  -if(objName==""){obj=window
                                  -}else{objName=objName.replace(/\.$/,"");
                                  -var n=objName.split(".");
                                  -var target=window,o;
                                  -for(var i=0,ni;
                                  -ni=n[i];
                                  -i++){if(o=target[ni]){target=o
                                  -}else{target=null;
                                  -break
                                  -}}obj=target
                                  -}if(obj){autoCompletePrefix=prefix;
                                  -autoCompleteExpr=valBegin+commandBegin+(objName?objName+".":"");
                                  -autoCompletePosition=-1;
                                  -buffer=autoCompleteBuffer=isIE?_completion[objName||"window"]||[]:[];
                                  -for(var p in obj){buffer.push(p)
                                  -}}}else{buffer=autoCompleteBuffer
                                  -}if(buffer){prefix=autoCompletePrefix;
                                  -var diff=reverse?-1:1;
                                  -for(var i=autoCompletePosition+diff,l=buffer.length,bi;
                                  -i>=0&&i<l;
                                  -i+=diff){bi=buffer[i];
                                  -if(bi.indexOf(prefix)==0){autoCompletePosition=i;
                                  -result=bi;
                                  -break
                                  -}}}if(result){element.value=autoCompleteExpr+result
                                  -}},setMultiLine:function(multiLine){if(multiLine==this.isMultiLine){return
                                  -}this.activate(multiLine)
                                  -},onError:function(msg,href,lineNo){var html=[];
                                  -var lastSlash=href.lastIndexOf("/");
                                  -var fileName=lastSlash==-1?href:href.substr(lastSlash+1);
                                  -html.push('<span class="errorMessage">',msg,"</span>",'<div class="objectBox-sourceLink">',fileName," (line ",lineNo,")</div>");
                                  -Firebug.Console.writeRow(html,"error")
                                  -},onKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code!=9&&code!=16&&code!=17&&code!=18){isAutoCompleting=false
                                  -}if(code==13){this.enter();
                                  -this.clear()
                                  -}else{if(code==27){setTimeout(this.clear,0)
                                  -}else{if(code==38){this.prevCommand()
                                  -}else{if(code==40){this.nextCommand()
                                  -}else{if(code==9){this.autocomplete(e.shiftKey)
                                  -}else{return
                                  -}}}}}cancelEvent(e,true);
                                  -return false
                                  -},onMultiLineKeyDown:function(e){e=e||event;
                                  -var code=e.keyCode;
                                  -if(code==13&&e.ctrlKey){this.enter()
                                  -}}});
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -function getExpressionOffset(command){var bracketCount=0;
                                  -var start=command.length-1;
                                  -for(;
                                  -start>=0;
                                  ---start){var c=command[start];
                                  -if((c==","||c==";"||c==" ")&&!bracketCount){break
                                  -}if(reOpenBracket.test(c)){if(bracketCount){--bracketCount
                                  -}else{break
                                  -}}else{if(reCloseBracket.test(c)){++bracketCount
                                  -}}}return start+1
                                  -}var CommandLineAPI={$:function(id){return Firebug.browser.document.getElementById(id)
                                  -},$$:function(selector,context){context=context||Firebug.browser.document;
                                  -return Firebug.Selector?Firebug.Selector(selector,context):Firebug.Console.error("Firebug.Selector module not loaded.")
                                  -},$0:null,$1:null,dir:Firebug.Console.dir,dirxml:Firebug.Console.dirxml};
                                  -Firebug.CommandLine.API={};
                                  -var initializeCommandLineAPI=function initializeCommandLineAPI(){for(var m in CommandLineAPI){if(!Env.browser.window[m]){Firebug.CommandLine.API[m]=CommandLineAPI[m]
                                  -}}};
                                  -initializeCommandLineAPI()
                                  -}});
                                  -(function(){with(FBL){var XHRSpy=function(){this.requestHeaders=[];
                                  -this.responseHeaders=[]
                                  -};
                                  -XHRSpy.prototype={method:null,url:null,async:null,xhrRequest:null,href:null,loaded:false,logRow:null,responseText:null,requestHeaders:null,responseHeaders:null,sourceLink:null,getURL:function(){return this.href
                                  -}};
                                  -var _ActiveXObject;
                                  -var isIE6=/msie 6/i.test(navigator.appVersion);
                                  -if(isIE6){window._ActiveXObject=window.ActiveXObject;
                                  -var xhrObjects=" MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -window.ActiveXObject=function(name){var error=null;
                                  -try{var activeXObject=new window._ActiveXObject(name)
                                  -}catch(e){error=e
                                  -}finally{if(!error){if(xhrObjects.indexOf(" "+name+" ")!=-1){return new XMLHttpRequestWrapper(activeXObject)
                                  -}else{return activeXObject
                                  -}}else{throw error.message
                                  -}}}
                                  -}var XMLHttpRequestWrapper=function(activeXObject){var xhrRequest=typeof activeXObject!="undefined"?activeXObject:new _XMLHttpRequest(),spy=new XHRSpy(),self=this,reqType,reqUrl,reqStartTS;
                                  -this.readyState=0;
                                  -this.onreadystatechange=function(){};
                                  -var handleStateChange=function(){self.readyState=xhrRequest.readyState;
                                  -if(xhrRequest.readyState==4){var duration=new Date().getTime()-reqStartTS;
                                  -var success=xhrRequest.status==200;
                                  -spy.loaded=true;
                                  -spy.responseText=xhrRequest.responseText;
                                  -var responseHeadersText=xhrRequest.getAllResponseHeaders();
                                  -var responses=responseHeadersText.split(/[\n\r]/);
                                  -var reHeader=/^(\S+):\s*(.*)/;
                                  -for(var i=0,l=responses.length;
                                  -i<l;
                                  -i++){var text=responses[i];
                                  -var match=text.match(reHeader);
                                  -if(match){spy.responseHeaders.push({name:[match[1]],value:[match[2]]})
                                  -}}with({row:spy.logRow,status:xhrRequest.status+" "+xhrRequest.statusText,time:duration,success:success}){setTimeout(function(){FBL.removeClass(row,"loading");
                                  -if(!success){FBL.setClass(row,"error")
                                  -}var item=FBL.$$(".spyStatus",row)[0];
                                  -item.innerHTML=status;
                                  -var item=FBL.$$(".spyTime",row)[0];
                                  -item.innerHTML=time+"ms"
                                  -},200)
                                  -}self.status=xhrRequest.status;
                                  -self.statusText=xhrRequest.statusText;
                                  -self.responseText=xhrRequest.responseText;
                                  -self.responseXML=xhrRequest.responseXML;
                                  -xhrRequest.onreadystatechange=function(){}
                                  -}self.onreadystatechange()
                                  -};
                                  -var appendRep=function(){var panel=Firebug.chrome.getPanel("Console");
                                  -var container=panel.panelNode;
                                  -var row=Firebug.chrome.document.createElement("div");
                                  -row.className="logRow logRow-spy loading";
                                  -spy.logRow=row;
                                  -Firebug.Spy.XHR.tag.append({object:spy},row);
                                  -setTimeout(function(){container.appendChild(row)
                                  -},0)
                                  -};
                                  -this.open=function(method,url,async){if(spy.loaded){spy=new XHRSpy()
                                  -}spy.method=method;
                                  -spy.url=url;
                                  -spy.async=async;
                                  -spy.href=url;
                                  -spy.xhrRequest=xhrRequest;
                                  -if(!FBL.isIE&&async){xhrRequest.onreadystatechange=handleStateChange
                                  -}xhrRequest.open(method,url,async);
                                  -if(FBL.isIE&&async){xhrRequest.onreadystatechange=handleStateChange
                                  -}if(!async){Firebug.Console.log("handle sync")
                                  -}};
                                  -this.send=function(data){appendRep();
                                  -reqStartTS=new Date().getTime();
                                  -xhrRequest.send(data)
                                  -};
                                  -this.setRequestHeader=function(header,value){spy.requestHeaders.push({name:[header],value:[value]});
                                  -xhrRequest.setRequestHeader(header,value)
                                  -};
                                  -this.getResponseHeader=function(header){return xhrRequest.getResponseHeader(header)
                                  -};
                                  -this.getAllResponseHeaders=function(){return xhrRequest.getAllResponseHeaders()
                                  -};
                                  -this.abort=function(){return xhrRequest.abort()
                                  -};
                                  -return this
                                  -};
                                  -if(!isIE6){var _XMLHttpRequest=XMLHttpRequest;
                                  -window.XMLHttpRequest=function(){return new XMLHttpRequestWrapper()
                                  -}
                                  -}}})();
                                  -FBL.ns(function(){with(FBL){var oSTR={NoMembersWarning:"There are no properties to show for this object."};
                                  -FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:name
                                  -};
                                  -var reIgnore=/about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval=300;
                                  -var indentWidth=18;
                                  -var cacheSession=null;
                                  -var contexts=new Array();
                                  -var panelName="net";
                                  -var maxQueueRequests=500;
                                  -var activeRequests=[];
                                  -var mimeExtensionMap={txt:"text/plain",html:"text/html",htm:"text/html",xhtml:"text/html",xml:"text/xml",css:"text/css",js:"application/x-javascript",jss:"application/x-javascript",jpg:"image/jpg",jpeg:"image/jpeg",gif:"image/gif",png:"image/png",bmp:"image/bmp",swf:"application/x-shockwave-flash",flv:"video/x-flv"};
                                  -var fileCategories={"undefined":1,html:1,css:1,js:1,xhr:1,image:1,flash:1,txt:1,bin:1};
                                  -var textFileCategories={txt:1,html:1,xhr:1,css:1,js:1};
                                  -var binaryFileCategories={bin:1,flash:1};
                                  -var mimeCategoryMap={"text/plain":"txt","application/octet-stream":"bin","text/html":"html","text/xml":"html","text/css":"css","application/x-javascript":"js","text/javascript":"js","application/javascript":"js","image/jpeg":"image","image/jpg":"image","image/gif":"image","image/png":"image","image/bmp":"image","application/x-shockwave-flash":"flash","video/x-flv":"flash"};
                                  -var binaryCategoryMap={image:1,flash:1};
                                  -Firebug.NetMonitor=extend(Firebug.ActivableModule,{dispatchName:"netMonitor",clear:function(context){var panel=context.getPanel(panelName,true);
                                  -if(panel){panel.clear()
                                  -}},initialize:function(){return;
                                  -this.panelName=panelName;
                                  -Firebug.ActivableModule.initialize.apply(this,arguments);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
                                  -}NetHttpObserver.registerObserver();
                                  -NetHttpActivityObserver.registerObserver();
                                  -Firebug.Debugger.addListener(this.DebuggerListener)
                                  -},shutdown:function(){return;
                                  -prefs.removeObserver(Firebug.prefDomain,this,false);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
                                  -}NetHttpObserver.unregisterObserver();
                                  -NetHttpActivityObserver.unregisterObserver();
                                  -Firebug.Debugger.removeListener(this.DebuggerListener)
                                  -}});
                                  -Firebug.NetMonitor.NetInfoBody=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoBody",_repObject:"$file"},TAG("$infoTabs",{file:"$file"}),TAG("$infoBodies",{file:"$file"})),infoTabs:DIV({"class":"netInfoTabs focusRow subFocusRow",role:"tablist"},A({"class":"netInfoParamsTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Params",$collapsed:"$file|hideParams"},$STR("URLParameters")),A({"class":"netInfoHeadersTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Headers"},$STR("Headers")),A({"class":"netInfoPostTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Post",$collapsed:"$file|hidePost"},$STR("Post")),A({"class":"netInfoPutTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Put",$collapsed:"$file|hidePut"},$STR("Put")),A({"class":"netInfoResponseTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Response",$collapsed:"$file|hideResponse"},$STR("Response")),A({"class":"netInfoCacheTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Cache",$collapsed:"$file|hideCache"},$STR("Cache")),A({"class":"netInfoHtmlTab netInfoTab a11yFocus",onclick:"$onClickTab",role:"tab",view:"Html",$collapsed:"$file|hideHtml"},$STR("HTML"))),infoBodies:DIV({"class":"netInfoBodies outerFocusRow"},TABLE({"class":"netInfoParamsText netInfoText netInfoParamsTable",role:"tabpanel",cellpadding:0,cellspacing:0},TBODY()),DIV({"class":"netInfoHeadersText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPostText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoPutText netInfoText",role:"tabpanel"}),PRE({"class":"netInfoResponseText netInfoText",role:"tabpanel"}),DIV({"class":"netInfoCacheText netInfoText",role:"tabpanel"},TABLE({"class":"netInfoCacheTable",cellpadding:0,cellspacing:0,role:"presentation"},TBODY({role:"list","aria-label":$STR("Cache")}))),DIV({"class":"netInfoHtmlText netInfoText",role:"tabpanel"},IFRAME({"class":"netInfoHtmlPreview",role:"document"}))),headerDataTag:FOR("param","$headers",TR({role:"listitem"},TD({"class":"netInfoParamName",role:"presentation"},TAG("$param|getNameTag",{param:"$param"})),TD({"class":"netInfoParamValue",role:"list","aria-label":"$param.name"},FOR("line","$param|getParamValueIterator",CODE({"class":"focusRow subFocusRow",role:"listitem"},"$line"))))),customTab:A({"class":"netInfo$tabId\\Tab netInfoTab",onclick:"$onClickTab",view:"$tabId",role:"tab"},"$tabTitle"),customBody:DIV({"class":"netInfo$tabId\\Text netInfoText",role:"tabpanel"}),nameTag:SPAN("$param|getParamName"),nameWithTooltipTag:SPAN({title:"$param.name"},"$param|getParamName"),getNameTag:function(param){return(this.getParamName(param)==param.name)?this.nameTag:this.nameWithTooltipTag
                                  -},getParamName:function(param){var limit=25;
                                  -var name=param.name;
                                  -if(name.length>limit){name=name.substr(0,limit)+"..."
                                  -}return name
                                  -},getParamTitle:function(param){var limit=25;
                                  -var name=param.name;
                                  -if(name.length>limit){return name
                                  -}return""
                                  -},hideParams:function(file){return !file.urlParams||!file.urlParams.length
                                  -},hidePost:function(file){return file.method.toUpperCase()!="POST"
                                  -},hidePut:function(file){return file.method.toUpperCase()!="PUT"
                                  -},hideResponse:function(file){return false
                                  -},hideCache:function(file){return true;
                                  -return !file.cacheEntry
                                  -},hideHtml:function(file){return true;
                                  -return(file.mimeType!="text/html")&&(file.mimeType!="application/xhtml+xml")
                                  -},onClickTab:function(event){this.selectTab(event.currentTarget||event.srcElement)
                                  -},getParamValueIterator:function(param){return param.value;
                                  -return wrapText(param.value,true)
                                  -},appendTab:function(netInfoBox,tabId,tabTitle){var args={tabId:tabId,tabTitle:tabTitle};
                                  -this.customTab.append(args,netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -this.customBody.append(args,netInfoBox.getElementsByClassName("netInfoBodies").item(0))
                                  -},selectTabByName:function(netInfoBox,tabName){var tab=getChildByClass(netInfoBox,"netInfoTabs","netInfo"+tabName+"Tab");
                                  -if(tab){this.selectTab(tab)
                                  -}},selectTab:function(tab){var view=tab.getAttribute("view");
                                  -var netInfoBox=getAncestorByClass(tab,"netInfoBody");
                                  -var selectedTab=netInfoBox.selectedTab;
                                  -if(selectedTab){removeClass(netInfoBox.selectedText,"netInfoTextSelected");
                                  -removeClass(selectedTab,"netInfoTabSelected");
                                  -selectedTab.setAttribute("aria-selected","false")
                                  -}var textBodyName="netInfo"+view+"Text";
                                  -selectedTab=netInfoBox.selectedTab=tab;
                                  -netInfoBox.selectedText=$$("."+textBodyName,netInfoBox)[0];
                                  -setClass(netInfoBox.selectedText,"netInfoTextSelected");
                                  -setClass(selectedTab,"netInfoTabSelected");
                                  -selectedTab.setAttribute("selected","true");
                                  -selectedTab.setAttribute("aria-selected","true");
                                  -var file=Firebug.getRepObject(netInfoBox);
                                  -var context=Firebug.chrome;
                                  -this.updateInfo(netInfoBox,file,context)
                                  -},updateInfo:function(netInfoBox,file,context){if(FBTrace.DBG_NET){FBTrace.sysout("net.updateInfo; file",file)
                                  -}if(!netInfoBox){if(FBTrace.DBG_NET||FBTrace.DBG_ERRORS){FBTrace.sysout("net.updateInfo; ERROR netInfo == null "+file.href,file)
                                  -}return
                                  -}var tab=netInfoBox.selectedTab;
                                  -if(hasClass(tab,"netInfoParamsTab")){if(file.urlParams&&!netInfoBox.urlParamsPresented){netInfoBox.urlParamsPresented=true;
                                  -this.insertHeaderRows(netInfoBox,file.urlParams,"Params")
                                  -}}else{if(hasClass(tab,"netInfoHeadersTab")){var headersText=$$(".netInfoHeadersText",netInfoBox)[0];
                                  -if(file.responseHeaders&&!netInfoBox.responseHeadersPresented){netInfoBox.responseHeadersPresented=true;
                                  -NetInfoHeaders.renderHeaders(headersText,file.responseHeaders,"ResponseHeaders")
                                  -}if(file.requestHeaders&&!netInfoBox.requestHeadersPresented){netInfoBox.requestHeadersPresented=true;
                                  -NetInfoHeaders.renderHeaders(headersText,file.requestHeaders,"RequestHeaders")
                                  -}}else{if(hasClass(tab,"netInfoPostTab")){if(!netInfoBox.postPresented){netInfoBox.postPresented=true;
                                  -var postText=netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -NetInfoPostData.render(context,postText,file)
                                  -}}else{if(hasClass(tab,"netInfoPutTab")){if(!netInfoBox.putPresented){netInfoBox.putPresented=true;
                                  -var putText=netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -NetInfoPostData.render(context,putText,file)
                                  -}}else{if(hasClass(tab,"netInfoResponseTab")&&file.loaded&&!netInfoBox.responsePresented){var responseTextBox=$$(".netInfoResponseText",netInfoBox)[0];
                                  -if(file.category=="image"){netInfoBox.responsePresented=true;
                                  -var responseImage=netInfoBox.ownerDocument.createElement("img");
                                  -responseImage.src=file.href;
                                  -clearNode(responseTextBox);
                                  -responseTextBox.appendChild(responseImage,responseTextBox)
                                  -}else{this.setResponseText(file,netInfoBox,responseTextBox,context)
                                  -}}else{if(hasClass(tab,"netInfoCacheTab")&&file.loaded&&!netInfoBox.cachePresented){var responseTextBox=netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -if(file.cacheEntry){netInfoBox.cachePresented=true;
                                  -this.insertHeaderRows(netInfoBox,file.cacheEntry,"Cache")
                                  -}}else{if(hasClass(tab,"netInfoHtmlTab")&&file.loaded&&!netInfoBox.htmlPresented){netInfoBox.htmlPresented=true;
                                  -var text=Utils.getResponseText(file,context);
                                  -var iframe=netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -iframe.contentWindow.document.body.innerHTML=text
                                  -}}}}}}}},setResponseText:function(file,netInfoBox,responseTextBox,context){netInfoBox.responsePresented=true;
                                  -if(isIE){responseTextBox.style.whiteSpace="nowrap"
                                  -}responseTextBox[typeof responseTextBox.textContent!="undefined"?"textContent":"innerText"]=file.responseText;
                                  -return;
                                  -var text=Utils.getResponseText(file,context);
                                  -var limit=Firebug.netDisplayedResponseLimit+15;
                                  -var limitReached=text?(text.length>limit):false;
                                  -if(limitReached){text=text.substr(0,limit)+"..."
                                  -}if(text){insertWrappedText(text,responseTextBox)
                                  -}else{insertWrappedText("",responseTextBox)
                                  -}if(limitReached){var object={text:$STR("net.responseSizeLimitMessage"),onClickLink:function(){var panel=context.getPanel("net",true);
                                  -panel.openResponseInTab(file)
                                  -}};
                                  -Firebug.NetMonitor.ResponseSizeLimit.append(object,responseTextBox)
                                  -}netInfoBox.responsePresented=true;
                                  -if(FBTrace.DBG_NET){FBTrace.sysout("net.setResponseText; response text updated")
                                  -}},insertHeaderRows:function(netInfoBox,headers,tableName,rowName){if(!headers.length){return
                                  -}var headersTable=netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -var tbody=getChildByClass(headersTable,"netInfo"+rowName+"Body");
                                  -if(!tbody){tbody=headersTable.firstChild
                                  -}var titleRow=getChildByClass(tbody,"netInfo"+rowName+"Title");
                                  -this.headerDataTag.insertRows({headers:headers},titleRow?titleRow:tbody);
                                  -removeClass(titleRow,"collapsed")
                                  -}});
                                  -var NetInfoBody=Firebug.NetMonitor.NetInfoBody;
                                  -Firebug.NetMonitor.NetInfoHeaders=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoHeadersTable",role:"tabpanel"},DIV({"class":"netInfoHeadersGroup netInfoResponseHeadersTitle"},SPAN($STR("ResponseHeaders")),SPAN({"class":"netHeadersViewSource response collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"ResponseHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoResponseHeadersBody",role:"list","aria-label":$STR("ResponseHeaders")})),DIV({"class":"netInfoHeadersGroup netInfoRequestHeadersTitle"},SPAN($STR("RequestHeaders")),SPAN({"class":"netHeadersViewSource request collapsed",onclick:"$onViewSource",_sourceDisplayed:false,_rowName:"RequestHeaders"},$STR("net.headers.view source"))),TABLE({cellpadding:0,cellspacing:0},TBODY({"class":"netInfoRequestHeadersBody",role:"list","aria-label":$STR("RequestHeaders")}))),sourceTag:TR({role:"presentation"},TD({colspan:2,role:"presentation"},PRE({"class":"source"}))),onViewSource:function(event){var target=event.target;
                                  -var requestHeaders=(target.rowName=="RequestHeaders");
                                  -var netInfoBox=getAncestorByClass(target,"netInfoBody");
                                  -var file=netInfoBox.repObject;
                                  -if(target.sourceDisplayed){var headers=requestHeaders?file.requestHeaders:file.responseHeaders;
                                  -this.insertHeaderRows(netInfoBox,headers,target.rowName);
                                  -target.innerHTML=$STR("net.headers.view source")
                                  -}else{var source=requestHeaders?file.requestHeadersText:file.responseHeadersText;
                                  -this.insertSource(netInfoBox,source,target.rowName);
                                  -target.innerHTML=$STR("net.headers.pretty print")
                                  -}target.sourceDisplayed=!target.sourceDisplayed;
                                  -cancelEvent(event)
                                  -},insertSource:function(netInfoBox,source,rowName){var tbody=netInfoBox.getElementsByClassName("netInfo"+rowName+"Body").item(0);
                                  -var node=this.sourceTag.replace({},tbody);
                                  -var sourceNode=node.getElementsByClassName("source").item(0);
                                  -sourceNode.innerHTML=source
                                  -},insertHeaderRows:function(netInfoBox,headers,rowName){var headersTable=$$(".netInfoHeadersTable",netInfoBox)[0];
                                  -var tbody=$$(".netInfo"+rowName+"Body",headersTable)[0];
                                  -clearNode(tbody);
                                  -if(!headers.length){return
                                  -}NetInfoBody.headerDataTag.insertRows({headers:headers},tbody);
                                  -var titleRow=getChildByClass(headersTable,"netInfo"+rowName+"Title");
                                  -removeClass(titleRow,"collapsed")
                                  -},init:function(parent){var rootNode=this.tag.append({},parent);
                                  -var netInfoBox=getAncestorByClass(parent,"netInfoBody");
                                  -var file=netInfoBox.repObject;
                                  -var viewSource;
                                  -viewSource=$$(".request",rootNode)[0];
                                  -if(file.requestHeadersText){removeClass(viewSource,"collapsed")
                                  -}viewSource=$$(".response",rootNode)[0];
                                  -if(file.responseHeadersText){removeClass(viewSource,"collapsed")
                                  -}},renderHeaders:function(parent,headers,rowName){if(!parent.firstChild){this.init(parent)
                                  -}this.insertHeaderRows(parent,headers,rowName)
                                  -}});
                                  -var NetInfoHeaders=Firebug.NetMonitor.NetInfoHeaders;
                                  -var $STRP=function(a){return a
                                  -};
                                  -Firebug.NetMonitor.NetLimit=domplate(Firebug.Rep,{collapsed:true,tableTag:DIV(TABLE({width:"100%",cellpadding:0,cellspacing:0},TBODY())),limitTag:TR({"class":"netRow netLimitRow",$collapsed:"$isCollapsed"},TD({"class":"netCol netLimitCol",colspan:6},TABLE({cellpadding:0,cellspacing:0},TBODY(TR(TD(SPAN({"class":"netLimitLabel"},$STRP("plural.Limit_Exceeded",[0]))),TD({style:"width:100%"}),TD(BUTTON({"class":"netLimitButton",title:"$limitPrefsTitle",onclick:"$onPreferences"},$STR("LimitPrefs"))),TD("&nbsp;")))))),isCollapsed:function(){return this.collapsed
                                  -},onPreferences:function(event){openNewTab("about:config")
                                  -},updateCounter:function(row){removeClass(row,"collapsed");
                                  -var limitLabel=row.getElementsByClassName("netLimitLabel").item(0);
                                  -limitLabel.firstChild.nodeValue=$STRP("plural.Limit_Exceeded",[row.limitInfo.totalCount])
                                  -},createTable:function(parent,limitInfo){var table=this.tableTag.replace({},parent);
                                  -var row=this.createRow(table.firstChild.firstChild,limitInfo);
                                  -return[table,row]
                                  -},createRow:function(parent,limitInfo){var row=this.limitTag.insertRows(limitInfo,parent,this)[0];
                                  -row.limitInfo=limitInfo;
                                  -return row
                                  -},observe:function(subject,topic,data){if(topic!="nsPref:changed"){return
                                  -}if(data.indexOf("net.logLimit")!=-1){this.updateMaxLimit()
                                  -}},updateMaxLimit:function(){var value=Firebug.getPref(Firebug.prefDomain,"net.logLimit");
                                  -maxQueueRequests=value?value:maxQueueRequests
                                  -}});
                                  -var NetLimit=Firebug.NetMonitor.NetLimit;
                                  -Firebug.NetMonitor.ResponseSizeLimit=domplate(Firebug.Rep,{tag:DIV({"class":"netInfoResponseSizeLimit"},SPAN("$object.beforeLink"),A({"class":"objectLink",onclick:"$onClickLink"},"$object.linkText"),SPAN("$object.afterLink")),reLink:/^(.*)<a>(.*)<\/a>(.*$)/,append:function(obj,parent){var m=obj.text.match(this.reLink);
                                  -return this.tag.append({onClickLink:obj.onClickLink,object:{beforeLink:m[1],linkText:m[2],afterLink:m[3]}},parent,this)
                                  -}});
                                  -Firebug.NetMonitor.Utils={findHeader:function(headers,name){if(!headers){return null
                                  -}name=name.toLowerCase();
                                  -for(var i=0;
                                  -i<headers.length;
                                  -++i){var headerName=headers[i].name.toLowerCase();
                                  -if(headerName==name){return headers[i].value
                                  -}}},formatPostText:function(text){if(text instanceof XMLDocument){return getElementXML(text.documentElement)
                                  -}else{return text
                                  -}},getPostText:function(file,context,noLimit){if(!file.postText){file.postText=readPostTextFromRequest(file.request,context);
                                  -if(!file.postText&&context){file.postText=readPostTextFromPage(file.href,context)
                                  -}}if(!file.postText){return file.postText
                                  -}var limit=Firebug.netDisplayedPostBodyLimit;
                                  -if(file.postText.length>limit&&!noLimit){return cropString(file.postText,limit,"\n\n... "+$STR("net.postDataSizeLimitMessage")+" ...\n\n")
                                  -}return file.postText
                                  -},getResponseText:function(file,context){return(typeof(file.responseText)!="undefined")?file.responseText:context.sourceCache.loadText(file.href,file.method,file)
                                  -},isURLEncodedRequest:function(file,context){var text=Utils.getPostText(file,context);
                                  -if(text&&text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded")==0){return true
                                  -}var headerValue=Utils.findHeader(file.requestHeaders,"content-type");
                                  -if(headerValue&&headerValue.indexOf("application/x-www-form-urlencoded")==0){return true
                                  -}return false
                                  -},isMultiPartRequest:function(file,context){var text=Utils.getPostText(file,context);
                                  -if(text&&text.toLowerCase().indexOf("content-type: multipart/form-data")==0){return true
                                  -}return false
                                  -},getMimeType:function(mimeType,uri){if(!mimeType||!(mimeCategoryMap.hasOwnProperty(mimeType))){var ext=getFileExtension(uri);
                                  -if(!ext){return mimeType
                                  -}else{var extMimeType=mimeExtensionMap[ext.toLowerCase()];
                                  -return extMimeType?extMimeType:mimeType
                                  -}}else{return mimeType
                                  -}},getDateFromSeconds:function(s){var d=new Date();
                                  -d.setTime(s*1000);
                                  -return d
                                  -},getHttpHeaders:function(request,file){try{var http=QI(request,Ci.nsIHttpChannel);
                                  -file.status=request.responseStatus;
                                  -file.method=http.requestMethod;
                                  -file.urlParams=parseURLParams(file.href);
                                  -file.mimeType=Utils.getMimeType(request.contentType,request.name);
                                  -if(!file.responseHeaders&&Firebug.collectHttpHeaders){var requestHeaders=[],responseHeaders=[];
                                  -http.visitRequestHeaders({visitHeader:function(name,value){requestHeaders.push({name:name,value:value})
                                  -}});
                                  -http.visitResponseHeaders({visitHeader:function(name,value){responseHeaders.push({name:name,value:value})
                                  -}});
                                  -file.requestHeaders=requestHeaders;
                                  -file.responseHeaders=responseHeaders
                                  -}}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("net.getHttpHeaders FAILS "+file.href,exc)
                                  -}}},isXHR:function(request){try{var callbacks=request.notificationCallbacks;
                                  -var xhrRequest=callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null;
                                  -if(FBTrace.DBG_NET){FBTrace.sysout("net.isXHR; "+(xhrRequest!=null)+", "+safeGetName(request))
                                  -}return(xhrRequest!=null)
                                  -}catch(exc){}return false
                                  -},getFileCategory:function(file){if(file.category){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; current: "+file.category+" for: "+file.href,file)
                                  -}return file.category
                                  -}if(file.isXHR){if(FBTrace.DBG_NET){FBTrace.sysout("net.getFileCategory; XHR for: "+file.href,file)
                                  -}return file.category="xhr"
                                  -}if(!file.mimeType){var ext=getFileExtension(file.href);
                                  -if(ext){file.mimeType=mimeExtensionMap[ext.toLowerCase()]
                                  -}}if(!file.mimeType){return""
                                  -}var mimeType=file.mimeType;
                                  -if(mimeType){mimeType=mimeType.split(";")[0]
                                  -}return(file.category=mimeCategoryMap[mimeType])
                                  -}};
                                  -var Utils=Firebug.NetMonitor.Utils;
                                  -Firebug.registerModule(Firebug.NetMonitor)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var contexts=[];
                                  -Firebug.Spy=extend(Firebug.Module,{dispatchName:"spy",initialize:function(){if(Firebug.TraceModule){Firebug.TraceModule.addListener(this.TraceListener)
                                  -}Firebug.Module.initialize.apply(this,arguments)
                                  -},shutdown:function(){Firebug.Module.shutdown.apply(this,arguments);
                                  -if(Firebug.TraceModule){Firebug.TraceModule.removeListener(this.TraceListener)
                                  -}},initContext:function(context){context.spies=[];
                                  -if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,context.window)
                                  -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.initContext "+contexts.length+" ",context.getName())
                                  -}},destroyContext:function(context){this.detachObserver(context,null);
                                  -if(FBTrace.DBG_SPY&&context.spies.length){FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("+context.spies.length+") "+context.getName())
                                  -}delete context.spies;
                                  -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.destroyContext "+contexts.length+" ",context.getName())
                                  -}},watchWindow:function(context,win){if(Firebug.showXMLHttpRequests&&Firebug.Console.isAlwaysEnabled()){this.attachObserver(context,win)
                                  -}},unwatchWindow:function(context,win){try{this.detachObserver(context,win)
                                  -}catch(ex){ERROR(ex)
                                  -}},updateOption:function(name,value){if(name=="showXMLHttpRequests"){var tach=value?this.attachObserver:this.detachObserver;
                                  -for(var i=0;
                                  -i<TabWatcher.contexts.length;
                                  -++i){var context=TabWatcher.contexts[i];
                                  -iterateWindows(context.window,function(win){tach.apply(this,[context,win])
                                  -})
                                  -}}},skipSpy:function(win){if(!win){return true
                                  -}var uri=safeGetWindowLocation(win);
                                  -if(uri&&(uri.indexOf("about:")==0||uri.indexOf("chrome:")==0)){return true
                                  -}},attachObserver:function(context,win){if(Firebug.Spy.skipSpy(win)){return
                                  -}for(var i=0;
                                  -i<contexts.length;
                                  -++i){if((contexts[i].context==context)&&(contexts[i].win==win)){return
                                  -}}if(contexts.length==0){httpObserver.addObserver(SpyHttpObserver,"firebug-http-event",false);
                                  -SpyHttpActivityObserver.registerObserver()
                                  -}contexts.push({context:context,win:win});
                                  -if(FBTrace.DBG_SPY){FBTrace.sysout("spy.attachObserver (HTTP) "+contexts.length+" ",context.getName())
                                  -}},detachObserver:function(context,win){for(var i=0;
                                  -i<contexts.length;
                                  -++i){if(contexts[i].context==context){if(win&&(contexts[i].win!=win)){continue
                                  -}contexts.splice(i,1);
                                  -if(contexts.length==0){httpObserver.removeObserver(SpyHttpObserver,"firebug-http-event");
                                  -SpyHttpActivityObserver.unregisterObserver()
                                  -}if(FBTrace.DBG_SPY){FBTrace.sysout("spy.detachObserver (HTTP) "+contexts.length+" ",context.getName())
                                  -}return
                                  -}}},getXHR:function(request){if(!(request instanceof Ci.nsIHttpChannel)){return null
                                  -}try{var callbacks=request.notificationCallbacks;
                                  -return(callbacks?callbacks.getInterface(Ci.nsIXMLHttpRequest):null)
                                  -}catch(exc){if(exc.name=="NS_NOINTERFACE"){if(FBTrace.DBG_SPY){FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: "+safeGetRequestName(request))
                                  -}}}return null
                                  -}});
                                  -Firebug.Spy.XHR=domplate(Firebug.Rep,{tag:DIV({"class":"spyHead",_repObject:"$object"},TABLE({"class":"spyHeadTable focusRow outerFocusRow",cellpadding:0,cellspacing:0,role:"listitem","aria-expanded":"false"},TBODY({role:"presentation"},TR({"class":"spyRow"},TD({"class":"spyTitleCol spyCol",onclick:"$onToggleBody"},DIV({"class":"spyTitle"},"$object|getCaption"),DIV({"class":"spyFullTitle spyTitle"},"$object|getFullUri")),TD({"class":"spyCol"},DIV({"class":"spyStatus"},"$object|getStatus")),TD({"class":"spyCol"},SPAN({"class":"spyIcon"})),TD({"class":"spyCol"},SPAN({"class":"spyTime"})),TD({"class":"spyCol"},TAG(FirebugReps.SourceLink.tag,{object:"$object.sourceLink"})))))),getCaption:function(spy){return spy.method.toUpperCase()+" "+cropString(spy.getURL(),100)
                                  -},getFullUri:function(spy){return spy.method.toUpperCase()+" "+spy.getURL()
                                  -},getStatus:function(spy){var text="";
                                  -if(spy.statusCode){text+=spy.statusCode+" "
                                  -}if(spy.statusText){return text+=spy.statusText
                                  -}return text
                                  -},onToggleBody:function(event){var target=event.currentTarget||event.srcElement;
                                  -var logRow=getAncestorByClass(target,"logRow-spy");
                                  -if(isLeftClick(event)){toggleClass(logRow,"opened");
                                  -var spy=getChildByClass(logRow,"spyHead").repObject;
                                  -var spyHeadTable=getAncestorByClass(target,"spyHeadTable");
                                  -if(hasClass(logRow,"opened")){updateHttpSpyInfo(spy);
                                  -if(spyHeadTable){spyHeadTable.setAttribute("aria-expanded","true")
                                  -}}else{}}},copyURL:function(spy){copyToClipboard(spy.getURL())
                                  -},copyParams:function(spy){var text=spy.postText;
                                  -if(!text){return
                                  -}var url=reEncodeURL(spy,text,true);
                                  -copyToClipboard(url)
                                  -},copyResponse:function(spy){copyToClipboard(spy.responseText)
                                  -},openInTab:function(spy){openNewTab(spy.getURL(),spy.postText)
                                  -},supportsObject:function(object){return false;
                                  -return object instanceof Firebug.Spy.XMLHttpRequestSpy
                                  -},browseObject:function(spy,context){var url=spy.getURL();
                                  -openNewTab(url);
                                  -return true
                                  -},getRealObject:function(spy,context){return spy.xhrRequest
                                  -},getContextMenuItems:function(spy){var items=[{label:"CopyLocation",command:bindFixed(this.copyURL,this,spy)}];
                                  -if(spy.postText){items.push({label:"CopyLocationParameters",command:bindFixed(this.copyParams,this,spy)})
                                  -}items.push({label:"CopyResponse",command:bindFixed(this.copyResponse,this,spy)},"-",{label:"OpenInTab",command:bindFixed(this.openInTab,this,spy)});
                                  -return items
                                  -}});
                                  -function updateTime(spy){var timeBox=spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -if(spy.responseTime){timeBox.textContent=" "+formatTime(spy.responseTime)
                                  -}}function updateLogRow(spy){updateTime(spy);
                                  -var statusBox=spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -statusBox.textContent=Firebug.Spy.XHR.getStatus(spy);
                                  -removeClass(spy.logRow,"loading");
                                  -setClass(spy.logRow,"loaded");
                                  -try{var errorRange=Math.floor(spy.xhrRequest.status/100);
                                  -if(errorRange==4||errorRange==5){setClass(spy.logRow,"error")
                                  -}}catch(exc){}}var updateHttpSpyInfo=function updateHttpSpyInfo(spy){if(!spy.logRow||!hasClass(spy.logRow,"opened")){return
                                  -}if(!spy.params){spy.params=parseURLParams(spy.href+"")
                                  -}if(!spy.requestHeaders){spy.requestHeaders=getRequestHeaders(spy)
                                  -}if(!spy.responseHeaders&&spy.loaded){spy.responseHeaders=getResponseHeaders(spy)
                                  -}var template=Firebug.NetMonitor.NetInfoBody;
                                  -var netInfoBox=getChildByClass(spy.logRow,"spyHead","netInfoBody");
                                  -if(!netInfoBox){var head=getChildByClass(spy.logRow,"spyHead");
                                  -netInfoBox=template.tag.append({file:spy},head);
                                  -template.selectTabByName(netInfoBox,"Response")
                                  -}else{template.updateInfo(netInfoBox,spy,spy.context)
                                  -}};
                                  -function getRequestHeaders(spy){var headers=[];
                                  -var channel=spy.xhrRequest.channel;
                                  -if(channel instanceof Ci.nsIHttpChannel){channel.visitRequestHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
                                  -}})
                                  -}return headers
                                  -}function getResponseHeaders(spy){var headers=[];
                                  -try{var channel=spy.xhrRequest.channel;
                                  -if(channel instanceof Ci.nsIHttpChannel){channel.visitResponseHeaders({visitHeader:function(name,value){headers.push({name:name,value:value})
                                  -}})
                                  -}}catch(exc){if(FBTrace.DBG_SPY||FBTrace.DBG_ERRORS){FBTrace.sysout("spy.getResponseHeaders; EXCEPTION "+safeGetRequestName(spy.request),exc)
                                  -}}return headers
                                  -}Firebug.registerModule(Firebug.Spy)
                                  -}});
                                  -FBL.ns(function(){with(FBL){var ignoreHTMLProps={sizcache:1,sizset:1};
                                  -ignoreHTMLProps[cacheID]=1;
                                  -Firebug.HTML=extend(Firebug.Module,{appendTreeNode:function(nodeArray,html){var reTrim=/^\s+|\s+$/g;
                                  -if(!nodeArray.length){nodeArray=[nodeArray]
                                  -}for(var n=0,node;
                                  -node=nodeArray[n];
                                  -n++){if(node.nodeType==1){if(Firebug.ignoreFirebugElements&&node.firebugIgnore){continue
                                  -}var uid=node[cacheID];
                                  -var child=node.childNodes;
                                  -var childLength=child.length;
                                  -var nodeName=node.nodeName.toLowerCase();
                                  -var nodeVisible=isVisible(node);
                                  -var hasSingleTextChild=childLength==1&&node.firstChild.nodeType==3&&nodeName!="script"&&nodeName!="style";
                                  -var nodeControl=!hasSingleTextChild&&childLength>0?('<div class="nodeControl"></div>'):"";
                                  -var isIE=false;
                                  -if(isIE&&nodeControl){html.push(nodeControl)
                                  -}if(typeof uid!="undefined"){html.push('<div class="objectBox-element" ','id="',uid,'">',!isIE&&nodeControl?nodeControl:"","<span ",cacheID,'="',uid,'"  class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}else{html.push('<div class="objectBox-element"><span class="nodeBox',nodeVisible?"":" nodeHidden",'">&lt;<span class="nodeTag">',nodeName,"</span>")
                                  -}for(var i=0;
                                  -i<node.attributes.length;
                                  -++i){var attr=node.attributes[i];
                                  -if(!attr.specified||Firebug.ignoreFirebugElements&&ignoreHTMLProps.hasOwnProperty(attr.nodeName)){continue
                                  -}var name=attr.nodeName.toLowerCase();
                                  -var value=name=="style"?formatStyles(node.style.cssText):attr.nodeValue;
                                  -html.push('&nbsp;<span class="nodeName">',name,'</span>=&quot;<span class="nodeValue">',escapeHTML(value),"</span>&quot;")
                                  -}if(hasSingleTextChild){var value=child[0].nodeValue.replace(reTrim,"");
                                  -if(value){html.push('&gt;<span class="nodeText">',escapeHTML(value),'</span>&lt;/<span class="nodeTag">',nodeName,"</span>&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}else{if(childLength>0){html.push("&gt;</span></div>")
                                  -}else{html.push("/&gt;</span></div>")
                                  -}}}else{if(node.nodeType==3){if(node.parentNode&&(node.parentNode.nodeName.toLowerCase()=="script"||node.parentNode.nodeName.toLowerCase()=="style")){var value=node.nodeValue.replace(reTrim,"");
                                  -if(isIE){var src=value+"\n"
                                  -}else{var src="\n"+value+"\n"
                                  -}var match=src.match(/\n/g);
                                  -var num=match?match.length:0;
                                  -var s=[],sl=0;
                                  -for(var c=1;
                                  -c<num;
                                  -c++){s[sl++]='<div line="'+c+'">'+c+"</div>"
                                  -}html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',s.join(""),'</div><pre class="nodeCode">',escapeHTML(src),"</pre>","</div></div>")
                                  -}else{var value=node.nodeValue.replace(reTrim,"");
                                  -if(value){html.push('<div class="nodeText">',escapeHTML(value),"</div>")
                                  -}}}}}},appendTreeChildren:function(treeNode){var doc=Firebug.chrome.document;
                                  -var uid=treeNode.id;
                                  -var parentNode=documentCache[uid];
                                  -if(parentNode.childNodes.length==0){return
                                  -}var treeNext=treeNode.nextSibling;
                                  -var treeParent=treeNode.parentNode;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl nodeMaximized";
                                  -var html=[];
                                  -var children=doc.createElement("div");
                                  -children.className="nodeChildren";
                                  -this.appendTreeNode(parentNode.childNodes,html);
                                  -children.innerHTML=html.join("");
                                  -treeParent.insertBefore(children,treeNext);
                                  -var closeElement=doc.createElement("div");
                                  -closeElement.className="objectBox-element";
                                  -closeElement.innerHTML='&lt;/<span class="nodeTag">'+parentNode.nodeName.toLowerCase()+"&gt;</span>";
                                  -treeParent.insertBefore(closeElement,treeNext)
                                  -},removeTreeChildren:function(treeNode){var children=treeNode.nextSibling;
                                  -var closeTag=children.nextSibling;
                                  -var isIE=false;
                                  -var control=isIE?treeNode.previousSibling:treeNode.firstChild;
                                  -control.className="nodeControl";
                                  -children.parentNode.removeChild(children);
                                  -closeTag.parentNode.removeChild(closeTag)
                                  -},isTreeNodeVisible:function(id){return $(id)
                                  -},select:function(el){var id=el&&el[cacheID];
                                  -if(id){this.selectTreeNode(id)
                                  -}},selectTreeNode:function(id){id=""+id;
                                  -var node,stack=[];
                                  -while(id&&!this.isTreeNodeVisible(id)){stack.push(id);
                                  -var node=documentCache[id].parentNode;
                                  -if(node&&typeof node[cacheID]!="undefined"){id=""+node[cacheID]
                                  -}else{break
                                  -}}stack.push(id);
                                  -while(stack.length>0){id=stack.pop();
                                  -node=$(id);
                                  -if(stack.length>0&&documentCache[id].childNodes.length>0){this.appendTreeChildren(node)
                                  -}}selectElement(node);
                                  -fbPanel1.scrollTop=Math.round(node.offsetTop-fbPanel1.clientHeight/2)
                                  -}});
                                  -Firebug.registerModule(Firebug.HTML);
                                  -function HTMLPanel(){}HTMLPanel.prototype=extend(Firebug.Panel,{name:"HTML",title:"HTML",options:{hasSidePanel:true,isPreRendered:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="4px 3px 1px 15px";
                                  -if(Env.Options.enablePersistent||Firebug.chrome.type!="popup"){this.createUI()
                                  -}if(!this.sidePanelBar.selectedPanel){this.sidePanelBar.selectPanel("DOMSidePanel")
                                  -}},destroy:function(){selectedElement=null;
                                  -fbPanel1=null;
                                  -selectedSidePanelTS=null;
                                  -selectedSidePanelTimer=null;
                                  -Firebug.Panel.destroy.apply(this,arguments)
                                  -},createUI:function(){var rootNode=Firebug.browser.document.documentElement;
                                  -var html=[];
                                  -Firebug.HTML.appendTreeNode(rootNode,html);
                                  -var d=this.contentNode;
                                  -d.innerHTML=html.join("");
                                  -this.panelNode.appendChild(d)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=$("fbPanel1");
                                  -if(!selectedElement){Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID])
                                  -}addEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -addEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -addEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove)
                                  -},shutdown:function(){removeEvent(fbPanel1,"mousemove",Firebug.HTML.onListMouseMove);
                                  -removeEvent($("fbContent"),"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(Firebug.chrome.node,"mouseout",Firebug.HTML.onListMouseMove);
                                  -removeEvent(this.panelNode,"click",Firebug.HTML.onTreeClick);
                                  -fbPanel1=null;
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},reattach:function(){if(FirebugChrome.selectedHTMLElementId){Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId)
                                  -}}});
                                  -Firebug.registerPanel(HTMLPanel);
                                  -var formatStyles=function(styles){return isIE?styles.replace(/([^\s]+)\s*:/g,function(m,g){return g.toLowerCase()+":"
                                  -}):styles
                                  -};
                                  -var selectedElement=null;
                                  -var fbPanel1=null;
                                  -var selectedSidePanelTS,selectedSidePanelTimer;
                                  -var selectElement=function selectElement(e){if(e!=selectedElement){if(selectedElement){selectedElement.className="objectBox-element"
                                  -}e.className=e.className+" selectedElement";
                                  -if(FBL.isFirefox){e.style.MozBorderRadius="2px"
                                  -}else{if(FBL.isSafari){e.style.WebkitBorderRadius="2px"
                                  -}}selectedElement=e;
                                  -FirebugChrome.selectedHTMLElementId=e.id;
                                  -var target=documentCache[e.id];
                                  -var selectedSidePanel=Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -var stack=FirebugChrome.htmlSelectionStack;
                                  -stack.unshift(target);
                                  -Firebug.CommandLine.API.$0=stack[0];
                                  -Firebug.CommandLine.API.$1=stack[1];
                                  -if(stack.length>2){stack.pop()
                                  -}var lazySelect=function(){selectedSidePanelTS=new Date().getTime();
                                  -selectedSidePanel.select(target,true)
                                  -};
                                  -if(selectedSidePanelTimer){clearTimeout(selectedSidePanelTimer);
                                  -selectedSidePanelTimer=null
                                  -}if(new Date().getTime()-selectedSidePanelTS>100){setTimeout(lazySelect,0)
                                  -}else{selectedSidePanelTimer=setTimeout(lazySelect,150)
                                  -}}};
                                  -Firebug.HTML.onTreeClick=function(e){e=e||event;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(targ.className.indexOf("nodeControl")!=-1||targ.className=="nodeTag"){var isIE=false;
                                  -if(targ.className=="nodeTag"){var control=isIE?(targ.parentNode.previousSibling||targ):(targ.parentNode.previousSibling||targ);
                                  -selectElement(targ.parentNode.parentNode);
                                  -if(control.className.indexOf("nodeControl")==-1){return
                                  -}}else{control=targ
                                  -}FBL.cancelEvent(e);
                                  -var treeNode=isIE?control.nextSibling:control.parentNode;
                                  -if(control.className.indexOf(" nodeMaximized")!=-1){FBL.Firebug.HTML.removeTreeChildren(treeNode)
                                  -}else{FBL.Firebug.HTML.appendTreeChildren(treeNode)
                                  -}}else{if(targ.className=="nodeValue"||targ.className=="nodeName"){}}};
                                  -function onListMouseOut(e){e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}if(hasClass(targ,"fbPanel")){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null
                                  -}}var hoverElement=null;
                                  -var hoverElementTS=0;
                                  -Firebug.HTML.onListMouseMove=function onListMouseMove(e){try{e=e||event||window;
                                  -var targ;
                                  -if(e.target){targ=e.target
                                  -}else{if(e.srcElement){targ=e.srcElement
                                  -}}if(targ.nodeType==3){targ=targ.parentNode
                                  -}var found=false;
                                  -while(targ&&!found){if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){targ=targ.parentNode
                                  -}else{found=true
                                  -}}if(!targ){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if(typeof targ.attributes[FBL.cacheID]=="undefined"){return
                                  -}var uid=targ.attributes[FBL.cacheID];
                                  -if(!uid){return
                                  -}var el=FBL.documentCache[uid.value];
                                  -var nodeName=el.nodeName.toLowerCase();
                                  -if(FBL.isIE&&" meta title script link ".indexOf(" "+nodeName+" ")!=-1){return
                                  -}if(!/\snodeBox\s|\sobjectBox-selector\s/.test(" "+targ.className+" ")){return
                                  -}if(el.id=="FirebugUI"||" html head body br script link iframe ".indexOf(" "+nodeName+" ")!=-1){FBL.Firebug.Inspector.hideBoxModel();
                                  -hoverElement=null;
                                  -return
                                  -}if((new Date().getTime()-hoverElementTS>40)&&hoverElement!=el){hoverElementTS=new Date().getTime();
                                  -hoverElement=el;
                                  -FBL.Firebug.Inspector.drawBoxModel(el)
                                  -}}catch(E){}}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.CSS=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("CSS"):null
                                  -},renderStyleSheet:function(index){var panel=this.getPanel();
                                  -if(panel.lastStyleSheetIndex!=index){var str=renderStyleSheet(index);
                                  -panel.contentNode.innerHTML=str.join("");
                                  -setTimeout(function(){panel.synchronizeUI()
                                  -},0);
                                  -panel.styleSheetIndex=index;
                                  -panel.lastStyleSheetIndex=index
                                  -}}});
                                  -Firebug.registerModule(Firebug.CSS);
                                  -function CSSStyleSheetPanel(){}CSSStyleSheetPanel.prototype=extend(Firebug.Panel,{name:"CSS",title:"CSS",styleSheetIndex:0,lastStyleSheetIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var styleSheets=doc.styleSheets;
                                  -var selectNode=this.selectNode=createElement("select");
                                  -for(var i=0,length=styleSheets.length;
                                  -i<length;
                                  -i++){var styleSheet=styleSheets[i];
                                  -var fileName=getFileName(styleSheet.href)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:i});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -}this.toolButtonsNode.appendChild(selectNode)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.selectNode,"change",this.onChangeSelect);
                                  -this.selectStyleSheet(this.styleSheetIndex)
                                  -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
                                  -var oldPanel=oldChrome.getPanel("CSS");
                                  -var index=oldPanel.styleSheetIndex;
                                  -this.selectNode.selectedIndex=index;
                                  -this.styleSheetIndex=index;
                                  -this.lastStyleSheetIndex=-1
                                  -},onChangeSelect:function(event){event=event||window.event;
                                  -var target=event.srcElement||event.currentTarget;
                                  -var index=target.selectedIndex;
                                  -Firebug.CSS.renderStyleSheet(index)
                                  -},selectStyleSheet:function(index){this.selectNode.selectedIndex=index;
                                  -Firebug.CSS.renderStyleSheet(index)
                                  -}});
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -function CSSElementPanel(){}CSSElementPanel.prototype=extend(Firebug.Panel,{name:"CSSElementPanel",parentPanel:"HTML",title:"CSS",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -var style=this.contentNode.style;
                                  -style.padding="4px 8px";
                                  -style.fontFamily="Monaco,monospace"
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -var target=documentCache[FirebugChrome.selectedHTMLElementId];
                                  -if(!target){return
                                  -}var str=renderStyles(target);
                                  -var panel=this;
                                  -panel.contentNode.innerHTML=str.join("");
                                  -panel.containerNode.scrollTop=0
                                  -},select:function(node){var str=renderStyles(node);
                                  -var panel=this;
                                  -panel.contentNode.innerHTML=str.join("");
                                  -panel.containerNode.scrollTop=0
                                  -}});
                                  -function CSSEditPanel(){}CSSEditPanel.prototype=extend(Firebug.Panel,{name:"CSSEditPanel",parentPanel:"HTML",title:"Style",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -var style=this.contentNode.style;
                                  -style.margin="0";
                                  -style.fontFamily="Monaco,monospace";
                                  -var doc=Firebug.chrome.document;
                                  -var el=doc.createElement("pre");
                                  -el.innerHTML="element.style {";
                                  -el.style.margin="4px 0 0";
                                  -el.style.padding="0 0 1px 8px";
                                  -this.contentNode.appendChild(el);
                                  -var el=doc.createElement("textarea");
                                  -el.rows=1;
                                  -el.style.width="80%";
                                  -el.style.fontSize="11px";
                                  -el.style.resize="none";
                                  -el.style.overflow="hidden";
                                  -el.style.outline="0";
                                  -el.style.border="0";
                                  -el.style.padding="0";
                                  -el.style.margin="0 10%";
                                  -el.style.color="darkblue";
                                  -this.contentNode.appendChild(el);
                                  -this.editNode=el;
                                  -var el=doc.createElement("pre");
                                  -el.innerHTML="}";
                                  -el.style.margin="0";
                                  -el.style.padding="0 0 10px 8px";
                                  -this.contentNode.appendChild(el);
                                  -var el=doc.createElement("div");
                                  -el.innerHTML="Computed Styles";
                                  -el.style.background="#eee url(group.gif)";
                                  -el.style.fontWeight="bold";
                                  -el.style.margin="0 0 4px";
                                  -el.style.padding="2px 5px";
                                  -el.style.border="1px solid #ccc";
                                  -el.style.borderWidth="1px 0";
                                  -el.style.fontFamily="Lucida Grande,Tahoma,sans-serif";
                                  -this.contentNode.appendChild(el);
                                  -var el=doc.createElement("div");
                                  -this.computedStylesNode=this.contentNode.appendChild(el);
                                  -this.onKeyUp=bind(this.onKeyUp,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -addEvent(this.editNode,"keydown",this.onKeyDown);
                                  -addEvent(this.editNode,"keyup",this.onKeyUp)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -var target=documentCache[FirebugChrome.selectedHTMLElementId];
                                  -if(!target){return
                                  -}var str=renderStyles2(target);
                                  -this.editNode.value=str;
                                  -var str2=renderStyles(target);
                                  -this.computedStylesNode.innerHTML=str2.join("");
                                  -this.adjustEditSize()
                                  -},select:function(node){var str=renderStyles2(node);
                                  -this.editNode.value=str;
                                  -this.adjustEditSize()
                                  -},adjustEditSize:function(add){add=add||0;
                                  -var nodeValue=this.editNode.value+" ";
                                  -nodeValue=nodeValue.replace(/\n\r|\r\n/g,"\n");
                                  -var lines=nodeValue.split(/\n/);
                                  -var num=lines.length+add;
                                  -this.editNode.rows=num
                                  -},onKeyDown:function(event){if(event.keyCode==13){this.adjustEditSize(1)
                                  -}},onKeyUp:function(){var nodeValue=this.editNode.value;
                                  -var selectedElement=documentCache[FirebugChrome.selectedHTMLElementId];
                                  -try{selectedElement.style.cssText=nodeValue
                                  -}catch(e){}this.adjustEditSize()
                                  -}});
                                  -Firebug.registerPanel(CSSEditPanel);
                                  -function CSSRulesEditPanel(){}CSSRulesEditPanel.prototype=extend(Firebug.Panel,{name:"CSSRulesEditPanel",parentPanel:"CSS",title:"Add",options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -return;
                                  -this.onKeyUp=bind(this.onKeyUp,this);
                                  -this.onKeyDown=bind(this.onKeyDown,this);
                                  -addEvent(this.editNode,"keydown",this.onKeyDown);
                                  -addEvent(this.editNode,"keyup",this.onKeyUp)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -return;
                                  -var target=documentCache[FirebugChrome.selectedHTMLElementId];
                                  -if(!target){return
                                  -}var str=renderStyles2(target);
                                  -this.editNode.value=str;
                                  -var str2=renderStyles(target);
                                  -this.computedStylesNode.innerHTML=str2.join("");
                                  -this.adjustEditSize()
                                  -}});
                                  -var renderStyleSheet=function renderStyleSheet(index){var styleSheet=Firebug.browser.document.styleSheets[index],str=[],sl=-1;
                                  -try{var rules=styleSheet[isIE?"rules":"cssRules"];
                                  -for(var i=0,rule;
                                  -rule=rules[i];
                                  -i++){var selector=rule.selectorText;
                                  -var cssText=isIE?rule.style.cssText:rule.cssText.match(/\{(.*)\}/)[1];
                                  -str[++sl]=renderRule(selector,cssText.split(";"))
                                  -}}catch(e){str[++sl]="<em>Access to restricted URI denied</em>"
                                  -}return str
                                  -};
                                  -var renderRule=function renderRule(selector,styles){var str="<div class='Selector'>"+selector.toLowerCase()+" {</div>";
                                  -for(var i=0,len=styles.length;
                                  -i<len;
                                  -i++){var rule=styles[i];
                                  -str+=rule.replace(/([^\:]+)\:(.+)/,renderRuleReplacer)
                                  -}str+="<div class='SelectorEnd'>}</div>";
                                  -return str
                                  -};
                                  -var renderRuleReplacer=function renderRuleReplacer(m,g1,g2){return"<div class='CSSText'><span class='CSSProperty'>"+g1.toLowerCase()+": </span><span class='CSSValue'>"+g2.replace(/\s*$/,"")+";</span></div>"
                                  -};
                                  -var getFileName=function getFileName(path){if(!path){return""
                                  -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -return match&&match[0]||path
                                  -};
                                  -var renderStyles=function renderStyles(node){var property=["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -var view=document.defaultView?document.defaultView.getComputedStyle(node,null):node.currentStyle;
                                  -var str=[],sl=-1;
                                  -for(var i=0,len=property.length;
                                  -i<len;
                                  -i++){var item=property[i];
                                  -if(!view[item]){continue
                                  -}str[++sl]="<div class='CSSItem'><span class='CSSProperty'>";
                                  -str[++sl]=toSelectorCase(item);
                                  -str[++sl]="</span>:<span class='CSSValue'>";
                                  -str[++sl]=view[item];
                                  -str[++sl]="</span>;</div>"
                                  -}return str
                                  -};
                                  -var renderStyles2=function renderStyles(node){var property=["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -var view=node.style;
                                  -var str=[],sl=-1;
                                  -for(var i=0,len=property.length;
                                  -i<len;
                                  -i++){var item=property[i];
                                  -if(!view[item]){continue
                                  -}str[++sl]=toSelectorCase(item);
                                  -str[++sl]=": ";
                                  -str[++sl]=view[item];
                                  -str[++sl]=";\n"
                                  -}str=str.join("");
                                  -return str.substr(0,str.length-1)
                                  -};
                                  -var toCamelCase=function toCamelCase(s){return s.replace(reSelectorCase,toCamelCaseReplaceFn)
                                  -};
                                  -var toSelectorCase=function toSelectorCase(s){return s.replace(reCamelCase,"-$1").toLowerCase()
                                  -};
                                  -var reCamelCase=/([A-Z])/g;
                                  -var reSelectorCase=/\-(.)/g;
                                  -var toCamelCaseReplaceFn=function toCamelCaseReplaceFn(m,g){return g.toUpperCase()
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){Firebug.Script=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Script"):null
                                  -},selectSourceCode:function(index){this.getPanel().selectSourceCode(index)
                                  -}});
                                  -Firebug.registerModule(Firebug.Script);
                                  -function ScriptPanel(){}ScriptPanel.prototype=extend(Firebug.Panel,{name:"Script",title:"Script",sourceIndex:0,lastSourceIndex:-1,options:{hasToolButtons:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.onChangeSelect=bind(this.onChangeSelect,this);
                                  -var doc=Firebug.browser.document;
                                  -var scripts=doc.getElementsByTagName("script");
                                  -var selectNode=this.selectNode=createElement("select");
                                  -for(var i=0,script;
                                  -script=scripts[i];
                                  -i++){var fileName=getFileName(script.src)||getFileName(doc.location.href);
                                  -var option=createElement("option",{value:i});
                                  -option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -selectNode.appendChild(option)
                                  -}this.toolButtonsNode.appendChild(selectNode)
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.selectNode,"change",this.onChangeSelect);
                                  -this.selectSourceCode(this.sourceIndex)
                                  -},detach:function(oldChrome,newChrome){Firebug.Panel.detach.apply(this,arguments);
                                  -var oldPanel=oldChrome.getPanel("Script");
                                  -var index=oldPanel.sourceIndex;
                                  -this.selectNode.selectedIndex=index;
                                  -this.sourceIndex=index;
                                  -this.lastSourceIndex=-1
                                  -},onChangeSelect:function(event){event=event||window.event;
                                  -var target=event.srcElement||event.currentTarget;
                                  -var index=target.selectedIndex;
                                  -this.renderSourceCode(index)
                                  -},selectSourceCode:function(index){this.selectNode.selectedIndex=index;
                                  -this.renderSourceCode(index)
                                  -},renderSourceCode:function(index){if(this.lastSourceIndex!=index){var renderProcess=function renderProcess(src){var html=[],hl=0;
                                  -src=isIE&&!isExternal?src+"\n":"\n"+src;
                                  -src=src.replace(/\n\r|\r\n/g,"\n");
                                  -var match=src.match(/[\n]/g);
                                  -var lines=match?match.length:0;
                                  -html[hl++]='<div><div class="sourceBox" style="left:';
                                  -html[hl++]=35+7*(lines+"").length;
                                  -html[hl++]='px;"><pre class="sourceCode">';
                                  -html[hl++]=escapeHTML(src);
                                  -html[hl++]='</pre></div><div class="lineNo">';
                                  -for(var l=1,lines;
                                  -l<=lines;
                                  -l++){html[hl++]='<div line="';
                                  -html[hl++]=l;
                                  -html[hl++]='">';
                                  -html[hl++]=l;
                                  -html[hl++]="</div>"
                                  -}html[hl++]="</div></div>";
                                  -updatePanel(html)
                                  -};
                                  -var updatePanel=function(html){self.contentNode.innerHTML=html.join("");
                                  -setTimeout(function(){self.synchronizeUI()
                                  -},0)
                                  -};
                                  -var onFailure=function(){renderProcess("Access to restricted URI denied")
                                  -};
                                  -var self=this;
                                  -var doc=Firebug.browser.document;
                                  -var script=doc.getElementsByTagName("script")[index];
                                  -var url=getScriptURL(script);
                                  -var isExternal=url&&url!=doc.location.href;
                                  -try{if(isExternal){Ajax.request({url:url,onSuccess:renderProcess,onFailure:onFailure})
                                  -}else{var src=script.innerHTML;
                                  -renderProcess(src)
                                  -}}catch(e){renderProcess("Access to restricted URI denied")
                                  -}this.sourceIndex=index;
                                  -this.lastSourceIndex=index
                                  -}}});
                                  -Firebug.registerPanel(ScriptPanel);
                                  -var getScriptURL=function getScriptURL(script){var reFile=/([^\/\?#]+)(#.+)?$/;
                                  -var rePath=/^(.*\/)/;
                                  -var reProtocol=/^\w+:\/\//;
                                  -var path=null;
                                  -var doc=Firebug.browser.document;
                                  -var file=reFile.exec(script.src);
                                  -if(file){var fileName=file[1];
                                  -var fileOptions=file[2];
                                  -if(reProtocol.test(script.src)){path=rePath.exec(script.src)[1]
                                  -}else{var r=rePath.exec(script.src);
                                  -var src=r?r[1]:script.src;
                                  -var backDir=/^((?:\.\.\/)+)(.*)/.exec(src);
                                  -var reLastDir=/^(.*\/)[^\/]+\/$/;
                                  -path=rePath.exec(doc.location.href)[1];
                                  -if(backDir){var j=backDir[1].length/3;
                                  -var p;
                                  -while(j-->0){path=reLastDir.exec(path)[1]
                                  -}path+=backDir[2]
                                  -}else{if(src.indexOf("/")!=-1){if(/^\.\/./.test(src)){path+=src.substring(2)
                                  -}else{if(/^\/./.test(src)){var domain=/^(\w+:\/\/[^\/]+)/.exec(path);
                                  -path=domain[1]+src
                                  -}else{path+=src
                                  -}}}}}}var m=path&&path.match(/([^\/]+)\/$/)||null;
                                  -if(path&&m){return path+fileName
                                  -}};
                                  -var getFileName=function getFileName(path){if(!path){return""
                                  -}var match=path&&path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -return match&&match[0]||path
                                  -}
                                  -}});
                                  -FBL.ns(function(){with(FBL){var insertSliceSize=18;
                                  -var insertInterval=40;
                                  -var ignoreVars={__firebug__:1,"eval":1,java:1,sun:1,Packages:1,JavaArray:1,JavaMember:1,JavaObject:1,JavaClass:1,JavaPackage:1,_firebug:1,_FirebugConsole:1,_FirebugCommandLine:1};
                                  -if(Firebug.ignoreFirebugElements){ignoreVars[cacheID]=1
                                  -}var memberPanelRep=isIE6?{"class":"memberLabel $member.type\\Label",href:"javacript:void(0)"}:{"class":"memberLabel $member.type\\Label"};
                                  -var RowTag=TR({"class":"memberRow $member.open $member.type\\Row",$hasChildren:"$member.hasChildren",role:"presentation",level:"$member.level"},TD({"class":"memberLabelCell",style:"padding-left: $member.indent\\px",role:"presentation"},A(memberPanelRep,SPAN({},"$member.name"))),TD({"class":"memberValueCell",role:"presentation"},TAG("$member.tag",{object:"$member.value"})));
                                  -var oSTR={NoMembersWarning:"There are no properties to show for this object."};
                                  -FBL.$STR=function(name){return oSTR.hasOwnProperty(name)?oSTR[name]:""
                                  -};
                                  -var WatchRowTag=TR({"class":"watchNewRow",level:0},TD({"class":"watchEditCell",colspan:2},DIV({"class":"watchEditBox a11yFocusNoTab",role:"button",tabindex:"0","aria-label":$STR("press enter to add new watch expression")},$STR("NewWatch"))));
                                  -var SizerRow=TR({role:"presentation"},TD({width:"30%"}),TD({width:"70%"}));
                                  -var domTableClass=isIElt8?"domTable domTableIE":"domTable";
                                  -var DirTablePlate=domplate(Firebug.Rep,{tag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,FOR("member","$object|memberIterator",RowTag))),watchTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow,WatchRowTag)),tableTag:TABLE({"class":domTableClass,cellpadding:0,cellspacing:0,_toggles:"$toggles",_domPanel:"$domPanel",onclick:"$onClick",role:"tree"},TBODY({role:"presentation"},SizerRow)),rowTag:FOR("member","$members",RowTag),memberIterator:function(object,level){return getMembers(object,level)
                                  -},onClick:function(event){if(!isLeftClick(event)){return
                                  -}var target=event.target||event.srcElement;
                                  -var row=getAncestorByClass(target,"memberRow");
                                  -var label=getAncestorByClass(target,"memberLabel");
                                  -if(label&&hasClass(row,"hasChildren")){var row=label.parentNode.parentNode;
                                  -this.toggleRow(row)
                                  -}else{var object=Firebug.getRepObject(target);
                                  -if(typeof(object)=="function"){Firebug.chrome.select(object,"script");
                                  -cancelEvent(event)
                                  -}else{if(event.detail==2&&!object){var panel=row.parentNode.parentNode.domPanel;
                                  -if(panel){var rowValue=panel.getRowPropertyValue(row);
                                  -if(typeof(rowValue)=="boolean"){panel.setPropertyValue(row,!rowValue)
                                  -}else{panel.editProperty(row)
                                  -}cancelEvent(event)
                                  -}}}}return false
                                  -},toggleRow:function(row){var level=parseInt(row.getAttribute("level"));
                                  -var toggles=row.parentNode.parentNode.toggles;
                                  -if(hasClass(row,"opened")){removeClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){if(i==path.length-1){delete toggles[path[i]]
                                  -}else{toggles=toggles[path[i]]
                                  -}}}var rowTag=this.rowTag;
                                  -var tbody=row.parentNode;
                                  -setTimeout(function(){for(var firstRow=row.nextSibling;
                                  -firstRow;
                                  -firstRow=row.nextSibling){if(parseInt(firstRow.getAttribute("level"))<=level){break
                                  -}tbody.removeChild(firstRow)
                                  -}},row.insertTimeout?row.insertTimeout:0)
                                  -}else{setClass(row,"opened");
                                  -if(toggles){var path=getPath(row);
                                  -for(var i=0;
                                  -i<path.length;
                                  -++i){var name=path[i];
                                  -if(toggles.hasOwnProperty(name)){toggles=toggles[name]
                                  -}else{toggles=toggles[name]={}
                                  -}}}var value=row.lastChild.firstChild.repObject;
                                  -var members=getMembers(value,level+1);
                                  -var rowTag=this.rowTag;
                                  -var lastRow=row;
                                  -var delay=0;
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){setTimeout(function(){if(lastRow.parentNode){var result=rowTag.insertRows({members:slice},lastRow);
                                  -lastRow=result[1]
                                  -}if(isLast){row.removeAttribute("insertTimeout")
                                  -}},delay)
                                  -}delay+=insertInterval
                                  -}row.insertTimeout=delay
                                  -}}});
                                  -Firebug.DOMBasePanel=function(){};
                                  -Firebug.DOMBasePanel.prototype=extend(Firebug.Panel,{tag:DirTablePlate.tableTag,getRealObject:function(object){if(!object){return object
                                  -}if(object.wrappedJSObject){return object.wrappedJSObject
                                  -}return object
                                  -},rebuild:function(update,scrollTop){var members=getMembers(this.selection);
                                  -expandMembers(members,this.toggles,0,0);
                                  -this.showMembers(members,update,scrollTop);
                                  -if(!this.parentPanel){updateStatusBar(this)
                                  -}},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0;
                                  -i<this.timeouts.length;
                                  -++i){this.context.clearTimeout(this.timeouts[i])
                                  -}delete this.timeouts
                                  -}if(!members.length){return this.showEmptyMembers()
                                  -}var panelNode=this.panelNode;
                                  -var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop;
                                  -var offscreen=update&&panelNode.firstChild;
                                  -var dest=offscreen?panelNode.ownerDocument:panelNode;
                                  -var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest);
                                  -var tbody=table.lastChild;
                                  -var rowTag=DirTablePlate.rowTag;
                                  -var panel=this;
                                  -var result;
                                  -var timeouts=[];
                                  -var delay=0;
                                  -var renderStart=new Date().getTime();
                                  -while(members.length){with({slice:members.splice(0,insertSliceSize),isLast:!members.length}){timeouts.push(this.context.setTimeout(function(){if(!tbody.lastChild){return
                                  -}result=rowTag.insertRows({members:slice},tbody.lastChild);
                                  -if((panelNode.scrollHeight+panelNode.offsetHeight)>=priorScrollTop){panelNode.scrollTop=priorScrollTop
                                  -}if(isLast){alert(new Date().getTime()-renderStart+"ms")
                                  -}},delay));
                                  -delay+=insertInterval
                                  -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild)
                                  -}else{panelNode.appendChild(table)
                                  -}panelNode.scrollTop=priorScrollTop
                                  -},delay))
                                  -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop
                                  -},delay))
                                  -}this.timeouts=timeouts
                                  -},showMembers:function(members,update,scrollTop){if(this.timeouts){for(var i=0;
                                  -i<this.timeouts.length;
                                  -++i){this.context.clearTimeout(this.timeouts[i])
                                  -}delete this.timeouts
                                  -}if(!members.length){return this.showEmptyMembers()
                                  -}var panelNode=this.panelNode;
                                  -var priorScrollTop=scrollTop==undefined?panelNode.scrollTop:scrollTop;
                                  -var offscreen=update&&panelNode.firstChild;
                                  -var dest=offscreen?panelNode.ownerDocument:panelNode;
                                  -var table=this.tag.replace({domPanel:this,toggles:this.toggles},dest);
                                  -var tbody=table.lastChild;
                                  -var rowTag=DirTablePlate.rowTag;
                                  -var panel=this;
                                  -var result;
                                  -var timeouts=[];
                                  -var delay=0;
                                  -var _insertSliceSize=insertSliceSize;
                                  -var _insertInterval=insertInterval;
                                  -var _setTimeout=this.context.setTimeout;
                                  -var renderStart=new Date().getTime();
                                  -var lastSkip=renderStart,now;
                                  -while(members.length){with({slice:members.splice(0,_insertSliceSize),isLast:!members.length}){var _tbody=tbody;
                                  -var _rowTag=rowTag;
                                  -var _panelNode=panelNode;
                                  -var _priorScrollTop=priorScrollTop;
                                  -timeouts.push(_setTimeout(function(){if(!_tbody.lastChild){return
                                  -}result=_rowTag.insertRows({members:slice},_tbody.lastChild);
                                  -if((_panelNode.scrollHeight+_panelNode.offsetHeight)>=_priorScrollTop){_panelNode.scrollTop=_priorScrollTop
                                  -}},delay));
                                  -delay+=_insertInterval
                                  -}}if(offscreen){timeouts.push(this.context.setTimeout(function(){if(panelNode.firstChild){panelNode.replaceChild(table,panelNode.firstChild)
                                  -}else{panelNode.appendChild(table)
                                  -}panelNode.scrollTop=priorScrollTop
                                  -},delay))
                                  -}else{timeouts.push(this.context.setTimeout(function(){panelNode.scrollTop=scrollTop==undefined?0:scrollTop
                                  -},delay))
                                  -}this.timeouts=timeouts
                                  -},showEmptyMembers:function(){FirebugReps.Warning.tag.replace({object:"NoMembersWarning"},this.panelNode)
                                  -},findPathObject:function(object){var pathIndex=-1;
                                  -for(var i=0;
                                  -i<this.objectPath.length;
                                  -++i){if(this.getPathObject(i)===object){return i
                                  -}}return -1
                                  -},getPathObject:function(index){var object=this.objectPath[index];
                                  -if(object instanceof Property){return object.getObject()
                                  -}else{return object
                                  -}},getRowObject:function(row){var object=getRowOwnerObject(row);
                                  -return object?object:this.selection
                                  -},getRowPropertyValue:function(row){var object=this.getRowObject(row);
                                  -object=this.getRealObject(object);
                                  -if(object){var propName=getRowName(row);
                                  -if(object instanceof jsdIStackFrame){return Firebug.Debugger.evaluate(propName,this.context)
                                  -}else{return object[propName]
                                  -}}},onMouseMove:function(event){var target=event.srcElement||event.target;
                                  -var object=getAncestorByClass(target,"objectLink-element");
                                  -object=object?object.repObject:null;
                                  -if(object&&instanceOf(object,"Element")&&object.nodeType==1){if(object!=lastHighlightedObject){Firebug.Inspector.drawBoxModel(object);
                                  -object=lastHighlightedObject
                                  -}}else{Firebug.Inspector.hideBoxModel()
                                  -}},create:function(){this.context=Firebug.browser.window;
                                  -this.objectPath=[];
                                  -this.propertyPath=[];
                                  -this.viewPath=[];
                                  -this.pathIndex=-1;
                                  -this.toggles={};
                                  -Firebug.Panel.create.apply(this,arguments);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"mousemove",this.onMouseMove)
                                  -},shutdown:function(){removeEvent(this.panelNode,"mousemove",this.onMouseMove);
                                  -Firebug.Panel.shutdown.apply(this,arguments)
                                  -},ishow:function(state){if(this.context.loaded&&!this.selection){if(!state){this.select(null);
                                  -return
                                  -}if(state.viewPath){this.viewPath=state.viewPath
                                  -}if(state.propertyPath){this.propertyPath=state.propertyPath
                                  -}var selectObject=defaultObject=this.getDefaultSelection(this.context);
                                  -if(state.firstSelection){var restored=state.firstSelection(this.context);
                                  -if(restored){selectObject=restored;
                                  -this.objectPath=[defaultObject,restored]
                                  -}else{this.objectPath=[defaultObject]
                                  -}}else{this.objectPath=[defaultObject]
                                  -}if(this.propertyPath.length>1){for(var i=1;
                                  -i<this.propertyPath.length;
                                  -++i){var name=this.propertyPath[i];
                                  -if(!name){continue
                                  -}var object=selectObject;
                                  -try{selectObject=object[name]
                                  -}catch(exc){selectObject=null
                                  -}if(selectObject){this.objectPath.push(new Property(object,name))
                                  -}else{this.viewPath.splice(i);
                                  -this.propertyPath.splice(i);
                                  -this.objectPath.splice(i);
                                  -selectObject=this.getPathObject(this.objectPath.length-1);
                                  -break
                                  -}}}var selection=state.pathIndex<=this.objectPath.length-1?this.getPathObject(state.pathIndex):this.getPathObject(this.objectPath.length-1);
                                  -this.select(selection)
                                  -}},supportsObject:function(object){if(object==null){return 1000
                                  -}if(typeof(object)=="undefined"){return 1000
                                  -}else{if(object instanceof SourceLink){return 0
                                  -}else{return 1
                                  -}}},refresh:function(){this.rebuild(true)
                                  -},updateSelection:function(object){var previousIndex=this.pathIndex;
                                  -var previousView=previousIndex==-1?null:this.viewPath[previousIndex];
                                  -var newPath=this.pathToAppend;
                                  -delete this.pathToAppend;
                                  -var pathIndex=this.findPathObject(object);
                                  -if(newPath||pathIndex==-1){this.toggles={};
                                  -if(newPath){if(previousView){if(this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}var start=previousIndex+1,length=this.objectPath.length-start;
                                  -this.objectPath.splice(start,length);
                                  -this.propertyPath.splice(start,length);
                                  -this.viewPath.splice(start,length)
                                  -}var value=this.getPathObject(previousIndex);
                                  -if(!value){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n")
                                  -}return
                                  -}for(var i=0,length=newPath.length;
                                  -i<length;
                                  -++i){var name=newPath[i];
                                  -var object=value;
                                  -try{value=value[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS){FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n")
                                  -}return
                                  -}++this.pathIndex;
                                  -this.objectPath.push(new Property(object,name));
                                  -this.propertyPath.push(name);
                                  -this.viewPath.push({toggles:this.toggles,scrollTop:0})
                                  -}}else{this.toggles={};
                                  -var win=Firebug.browser.window;
                                  -if(object===win){this.pathIndex=0;
                                  -this.objectPath=[win];
                                  -this.propertyPath=[null];
                                  -this.viewPath=[{toggles:this.toggles,scrollTop:0}]
                                  -}else{this.pathIndex=1;
                                  -this.objectPath=[win,object];
                                  -this.propertyPath=[null,null];
                                  -this.viewPath=[{toggles:{},scrollTop:0},{toggles:this.toggles,scrollTop:0}]
                                  -}}this.panelNode.scrollTop=0;
                                  -this.rebuild()
                                  -}else{this.pathIndex=pathIndex;
                                  -var view=this.viewPath[pathIndex];
                                  -this.toggles=view.toggles;
                                  -if(previousView&&this.panelNode.scrollTop){previousView.scrollTop=this.panelNode.scrollTop
                                  -}this.rebuild(false,view.scrollTop)
                                  -}},getObjectPath:function(object){return this.objectPath
                                  -},getDefaultSelection:function(){return Firebug.browser.window
                                  -}});
                                  -var updateStatusBar=function(panel){var path=panel.propertyPath;
                                  -var index=panel.pathIndex;
                                  -var r=[];
                                  -for(var i=0,l=path.length;
                                  -i<l;
                                  -i++){r.push(i==index?'<a class="fbHover fbButton fbBtnSelected" ':'<a class="fbHover fbButton" ');
                                  -r.push("pathIndex=");
                                  -r.push(i);
                                  -if(isIE6){r.push(' href="javascript:void(0)"')
                                  -}r.push(">");
                                  -r.push(i==0?"window":path[i]||"Object");
                                  -r.push("</a>");
                                  -if(i<l-1){r.push('<span class="fbStatusSeparator">&gt;</span>')
                                  -}}panel.statusBarNode.innerHTML=r.join("")
                                  -};
                                  -var DOMMainPanel=Firebug.DOMPanel=function(){};
                                  -Firebug.DOMPanel.DirTable=DirTablePlate;
                                  -DOMMainPanel.prototype=extend(Firebug.DOMBasePanel.prototype,{onClickStatusBar:function(event){var target=event.srcElement||event.target;
                                  -var element=getAncestorByClass(target,"fbHover");
                                  -if(element){var pathIndex=element.getAttribute("pathIndex");
                                  -if(pathIndex){this.select(this.getPathObject(pathIndex))
                                  -}}},selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}this.select(target.repObject,true)
                                  -},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOM",title:"DOM",searchable:true,statusSeparator:">",options:{hasToolButtons:true,hasStatusBar:true},create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this);
                                  -this.onClickStatusBar=bind(this.onClickStatusBar,this);
                                  -this.panelNode.style.padding="0 1px"
                                  -},initialize:function(oldPanelNode){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick);
                                  -this.context.loaded=true;
                                  -this.ishow();
                                  -addEvent(this.statusBarNode,"click",this.onClickStatusBar)
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -}});
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -var getMembers=function getMembers(object,level){if(!level){level=0
                                  -}var ordinals=[],userProps=[],userClasses=[],userFuncs=[],domProps=[],domFuncs=[],domConstants=[];
                                  -try{var domMembers=getDOMMembers(object);
                                  -if(object.wrappedJSObject){var insecureObject=object.wrappedJSObject
                                  -}else{var insecureObject=object
                                  -}if(isIE&&isFunction(object)){addMember("user",userProps,"prototype",object.prototype,level)
                                  -}for(var name in insecureObject){if(ignoreVars[name]==1){continue
                                  -}var val;
                                  -try{val=insecureObject[name]
                                  -}catch(exc){if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers cannot access "+name,exc)
                                  -}}var ordinal=parseInt(name);
                                  -if(ordinal||ordinal==0){addMember("ordinal",ordinals,name,val,level)
                                  -}else{if(isFunction(val)){if(isClassFunction(val)){addMember("userClass",userClasses,name,val,level)
                                  -}else{if(name in domMembers){addMember("domFunction",domFuncs,name,val,level,domMembers[name])
                                  -}else{addMember("userFunction",userFuncs,name,val,level)
                                  -}}}else{var prefix="";
                                  -if(name in domMembers){addMember("dom",domProps,(prefix+name),val,level,domMembers[name])
                                  -}else{if(name in domConstantMap){addMember("dom",domConstants,(prefix+name),val,level)
                                  -}else{addMember("user",userProps,(prefix+name),val,level)
                                  -}}}}}}catch(exc){throw exc;
                                  -if(FBTrace.DBG_ERRORS&&FBTrace.DBG_DOM){FBTrace.sysout("dom.getMembers FAILS: ",exc)
                                  -}}function sortName(a,b){return a.name>b.name?1:-1
                                  -}function sortOrder(a,b){return a.order>b.order?1:-1
                                  -}var members=[];
                                  -members.push.apply(members,ordinals);
                                  -Firebug.showUserProps=true;
                                  -Firebug.showUserFuncs=true;
                                  -Firebug.showDOMProps=true;
                                  -Firebug.showDOMFuncs=true;
                                  -Firebug.showDOMConstants=true;
                                  -if(Firebug.showUserProps){userProps.sort(sortName);
                                  -members.push.apply(members,userProps)
                                  -}if(Firebug.showUserFuncs){userClasses.sort(sortName);
                                  -members.push.apply(members,userClasses);
                                  -userFuncs.sort(sortName);
                                  -members.push.apply(members,userFuncs)
                                  -}if(Firebug.showDOMProps){domProps.sort(sortName);
                                  -members.push.apply(members,domProps)
                                  -}if(Firebug.showDOMFuncs){domFuncs.sort(sortName);
                                  -members.push.apply(members,domFuncs)
                                  -}if(Firebug.showDOMConstants){members.push.apply(members,domConstants)
                                  -}return members
                                  -};
                                  -function expandMembers(members,toggles,offset,level){var expanded=0;
                                  -for(var i=offset;
                                  -i<members.length;
                                  -++i){var member=members[i];
                                  -if(member.level>level){break
                                  -}if(toggles.hasOwnProperty(member.name)){member.open="opened";
                                  -var newMembers=getMembers(member.value,level+1);
                                  -var args=[i+1,0];
                                  -args.push.apply(args,newMembers);
                                  -members.splice.apply(members,args);
                                  -expanded+=newMembers.length;
                                  -i+=newMembers.length+expandMembers(members,toggles[member.name],i+1,level+1)
                                  -}}return expanded
                                  -}function isClassFunction(fn){try{for(var name in fn.prototype){return true
                                  -}}catch(exc){}return false
                                  -}var hasProperties=function hasProperties(ob){try{for(var name in ob){return true
                                  -}}catch(exc){}if(isFunction(ob)){return true
                                  -}return false
                                  -};
                                  -FBL.ErrorCopy=function(message){this.message=message
                                  -};
                                  -var addMember=function addMember(type,props,name,value,level,order){var rep=Firebug.getRep(value);
                                  -var tag=rep.shortTag?rep.shortTag:rep.tag;
                                  -var ErrorCopy=function(){};
                                  -var valueType=typeof(value);
                                  -var hasChildren=hasProperties(value)&&!(value instanceof ErrorCopy)&&(isFunction(value)||(valueType=="object"&&value!=null)||(valueType=="string"&&value.length>Firebug.stringCropLength));
                                  -props.push({name:name,value:value,type:type,rowClass:"memberRow-"+type,open:"",order:order,level:level,indent:level*16,hasChildren:hasChildren,tag:tag})
                                  -};
                                  -var getWatchRowIndex=function getWatchRowIndex(row){var index=-1;
                                  -for(;
                                  -row&&hasClass(row,"watchRow");
                                  -row=row.previousSibling){++index
                                  -}return index
                                  -};
                                  -var getRowName=function getRowName(row){var node=row.firstChild;
                                  -return node.textContent?node.textContent:node.innerText
                                  -};
                                  -var getRowValue=function getRowValue(row){return row.lastChild.firstChild.repObject
                                  -};
                                  -var getRowOwnerObject=function getRowOwnerObject(row){var parentRow=getParentRow(row);
                                  -if(parentRow){return getRowValue(parentRow)
                                  -}};
                                  -var getParentRow=function getParentRow(row){var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){return row
                                  -}}};
                                  -var getPath=function getPath(row){var name=getRowName(row);
                                  -var path=[name];
                                  -var level=parseInt(row.getAttribute("level"))-1;
                                  -for(row=row.previousSibling;
                                  -row;
                                  -row=row.previousSibling){if(parseInt(row.getAttribute("level"))==level){var name=getRowName(row);
                                  -path.splice(0,0,name);
                                  ---level
                                  -}}return path
                                  -};
                                  -Firebug.DOM=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("DOM"):null
                                  -}});
                                  -Firebug.registerModule(Firebug.DOM);
                                  -var lastHighlightedObject;
                                  -function DOMSidePanel(){}DOMSidePanel.prototype=extend(Firebug.DOMBasePanel.prototype,{selectRow:function(row,target){if(!target){target=row.lastChild.firstChild
                                  -}if(!target||!target.repObject){return
                                  -}this.pathToAppend=getPath(row);
                                  -var valueBox=row.lastChild.firstChild;
                                  -if(hasClass(valueBox,"objectBox-array")){var arrayIndex=FirebugReps.Arr.getItemIndex(target);
                                  -this.pathToAppend.push(arrayIndex)
                                  -}var object=target.repObject;
                                  -if(instanceOf(object,"Element")&&object[cacheID]){Firebug.HTML.selectTreeNode(object[cacheID])
                                  -}else{Firebug.chrome.selectPanel("DOM");
                                  -Firebug.chrome.getPanel("DOM").select(object,true)
                                  -}},onClick:function(event){var target=event.srcElement||event.target;
                                  -var repNode=Firebug.getRepNode(target);
                                  -if(repNode){var row=getAncestorByClass(target,"memberRow");
                                  -if(row){this.selectRow(row,repNode);
                                  -cancelEvent(event)
                                  -}}},name:"DOMSidePanel",parentPanel:"HTML",title:"DOM",options:{hasToolButtons:true},isInitialized:false,create:function(){Firebug.DOMBasePanel.prototype.create.apply(this,arguments);
                                  -this.onClick=bind(this.onClick,this)
                                  -},initialize:function(){Firebug.DOMBasePanel.prototype.initialize.apply(this,arguments);
                                  -addEvent(this.panelNode,"click",this.onClick)
                                  -},shutdown:function(){removeEvent(this.panelNode,"click",this.onClick);
                                  -Firebug.DOMBasePanel.prototype.shutdown.apply(this,arguments)
                                  -},reattach:function(oldChrome){this.toggles=oldChrome.getPanel("DOMSidePanel").toggles
                                  -}});
                                  -Firebug.registerPanel(DOMSidePanel)
                                  -}});
                                  -FBL.FBTrace={};
                                  -(function(){var traceOptions={DBG_TIMESTAMP:1,DBG_INITIALIZE:1,DBG_CHROME:1,DBG_ERRORS:1,DBG_DISPATCH:1};
                                  -this.module=null;
                                  -this.initialize=function(){if(!this.messageQueue){this.messageQueue=[]
                                  -}for(var name in traceOptions){this[name]=traceOptions[name]
                                  -}};
                                  -this.sysout=function(){return this.logFormatted(arguments,"")
                                  -};
                                  -this.dumpProperties=function(title,object){return this.logFormatted("dumpProperties() not supported.","warning")
                                  -};
                                  -this.dumpStack=function(){return this.logFormatted("dumpStack() not supported.","warning")
                                  -};
                                  -this.flush=function(module){this.module=module;
                                  -var queue=this.messageQueue;
                                  -this.messageQueue=[];
                                  -for(var i=0;
                                  -i<queue.length;
                                  -++i){this.writeMessage(queue[i][0],queue[i][1],queue[i][2])
                                  -}};
                                  -this.getPanel=function(){return this.module?this.module.getPanel():null
                                  -};
                                  -this.logFormatted=function(objects,className){var html=this.DBG_TIMESTAMP?[getTimestamp()," | "]:[];
                                  -var length=objects.length;
                                  -for(var i=0;
                                  -i<length;
                                  -++i){appendText(" ",html);
                                  -var object=objects[i];
                                  -if(i==0){html.push("<b>");
                                  -appendText(object,html);
                                  -html.push("</b>")
                                  -}else{appendText(object,html)
                                  -}}return this.logRow(html,className)
                                  -};
                                  -this.logRow=function(message,className){var panel=this.getPanel();
                                  -if(panel&&panel.contentNode){this.writeMessage(message,className)
                                  -}else{this.messageQueue.push([message,className])
                                  -}return this.LOG_COMMAND
                                  -};
                                  -this.writeMessage=function(message,className){var container=this.getPanel().containerNode;
                                  -var isScrolledToBottom=container.scrollTop+container.offsetHeight>=container.scrollHeight;
                                  -this.writeRow.call(this,message,className);
                                  -if(isScrolledToBottom){container.scrollTop=container.scrollHeight-container.offsetHeight
                                  -}};
                                  -this.appendRow=function(row){var container=this.getPanel().contentNode;
                                  -container.appendChild(row)
                                  -};
                                  -this.writeRow=function(message,className){var row=this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -row.className="logRow"+(className?" logRow-"+className:"");
                                  -row.innerHTML=message.join("");
                                  -this.appendRow(row)
                                  -};
                                  -function appendText(object,html){html.push(escapeHTML(objectToString(object)))
                                  -}function getTimestamp(){var now=new Date();
                                  -var ms=""+(now.getMilliseconds()/1000).toFixed(3);
                                  -ms=ms.substr(2);
                                  -return now.toLocaleTimeString()+"."+ms
                                  -}var HTMLtoEntity={"<":"&lt;",">":"&gt;","&":"&amp;","'":"&#39;",'"':"&quot;"};
                                  -function replaceChars(ch){return HTMLtoEntity[ch]
                                  -}function escapeHTML(value){return(value+"").replace(/[<>&"']/g,replaceChars)
                                  -}function objectToString(object){try{return object+""
                                  -}catch(exc){return null
                                  -}}}).apply(FBL.FBTrace);
                                  -FBL.ns(function(){with(FBL){if(!Env.Options.enableTrace){return
                                  -}Firebug.Trace=extend(Firebug.Module,{getPanel:function(){return Firebug.chrome?Firebug.chrome.getPanel("Trace"):null
                                  -},clear:function(){this.getPanel().contentNode.innerHTML=""
                                  -}});
                                  -Firebug.registerModule(Firebug.Trace);
                                  -function TracePanel(){}TracePanel.prototype=extend(Firebug.Panel,{name:"Trace",title:"Trace",options:{hasToolButtons:true,innerHTMLSync:true},create:function(){Firebug.Panel.create.apply(this,arguments);
                                  -this.clearButton=new Button({caption:"Clear",title:"Clear FBTrace logs",owner:Firebug.Trace,onClick:Firebug.Trace.clear})
                                  -},initialize:function(){Firebug.Panel.initialize.apply(this,arguments);
                                  -this.clearButton.initialize()
                                  -}});
                                  -Firebug.registerPanel(TracePanel)
                                  -}});
                                  -FBL.ns(function(){with(FBL){FirebugChrome.injected={CSS:'.collapsed{display:none;}[collapsed="true"]{display:none;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;}.netInfoTextSelected{display:block;}.netInfoParamName{padding:0 10px 0 0;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.useA11y .panelNode-net .a11yFocus:focus,.useA11y .panelNode-net .focusRow:focus{outline-offset:-2px;background-color:#FFFFD6 !important;}.useA11y .panelNode-net .netHeaderCell:focus,.useA11y .panelNode-net:focus .netHeaderCell,.useA11y .panelNode-net:focus .netReceivingBar,.useA11y .netSummaryRow:focus .netBar,.useA11y .netSummaryRow:focus .netBar{background-color:#FFFFD6;background-image:none;border-color:#FFFFD6;}.logRow-spy .spyHead .spyTitle,.logGroup .logGroupLabel,.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .spyHead .spyTitle,.opened .logGroupLabel,.opened .memberLabelCell .memberLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) no-repeat !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;top:0;left:0;height:100%;width:100%;border-collapse:collapse;background:#fff;overflow:hidden;}#fbTop{height:49px;}#fbToolbar{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:absolute;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;margin-right:4px;}#fbWindow_btClose{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -119px;}#fbWindow_btClose:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -119px;}#fbWindow_btDetach{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -32px -119px;}#fbWindow_btDetach:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',HTML:'<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'}
                                  -}});
                                  -FBL.initialize()
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/build/firebug.uncompressed.js b/tags/firebug1.3a5/build/firebug.uncompressed.js
                                  deleted file mode 100644
                                  index aa0ca561..00000000
                                  --- a/tags/firebug1.3a5/build/firebug.uncompressed.js
                                  +++ /dev/null
                                  @@ -1,19984 +0,0 @@
                                  -(function(){
                                  -
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.3a5
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/lite.html
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyApplication;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")");
                                  -        if (prefs)
                                  -        {
                                  -            FBL.Env.Options.startOpened = prefs.startOpened;
                                  -            FBL.Env.Options.enableTrace = prefs.enableTrace;
                                  -            FBL.Env.Options.enablePersistent = prefs.enablePersistent;
                                  -        }
                                  -        
                                  -        if (FBL.isFirefox && typeof console == "object" && console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -            return;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -
                                  -    FBL.Firebug.loadPrefs(prefs);
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // wait document load
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: false,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        //path = productionDir;
                                  -        path = "http://firebug.local:8740/firebug1.3/build/";
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.useLocalSkin = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Env.Options.startOpened = true;
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if (innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -            
                                  -            for (var name in innerOptionsObject)
                                  -            {
                                  -                var value = innerOptionsObject[name];
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -}
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getCSS = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -        return ob + "";
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getCSS(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        var style = view.getComputedStyle(elt, "");
                                  -
                                  -        if (elt.offsetLeft)
                                  -            coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -        if (elt.offsetTop)
                                  -            coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else if (elt.ownerDocument.defaultView.frameElement)
                                  -            addOffset(elt.ownerDocument.defaultView.frameElement, coords, elt.ownerDocument.defaultView);
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 4 : event.button == 1) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 2 : event.button == 2) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, false);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, false);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;"
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is acessible in the window, uses the native instanceof operator
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onFailure     Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days)
                                  -    {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else 
                                  -        var expires = "";
                                  -    
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    
                                  -    for(var i=0; i < ca.length; i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "firebug" + new Date().getTime();
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -window.Firebug = FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version: "Firebug Lite 1.3.0a5",
                                  -    revision: "$Revision: 5716 $",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                chromeMap[name].destroy();
                                  -            }
                                  -        }
                                  -        
                                  -        for(var name in documentCache)
                                  -        {
                                  -            documentCache[name].removeAttribute(cacheID);
                                  -            documentCache[name] = null;
                                  -            delete documentCache[name];
                                  -        }
                                  -        
                                  -        documentCache = null;
                                  -        delete FBL.documentCache;
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -        
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -                
                                  -                json[++jl] = '"'; 
                                  -                json[++jl] = name;
                                  -                
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -        
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -if (!Env.Options.enablePersistent || 
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDevelopmentMode )
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            var panelBarNode = this.parentPanel ? 
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -            
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.contentNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // store persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function(context)
                                  -    {
                                  -        return null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - *
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype, 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                getElementByClass(Firebug.chrome.document, "fbBody"),
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked)
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var cmd = target.getAttribute("command");
                                  -            var handler = this[cmd];
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.register = function(object)
                                  -{
                                  -    menuMap[object.id] = object;
                                  -};
                                  -
                                  -Menu.check = function(element)
                                  -{
                                  -    setClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "true");
                                  -};
                                  -
                                  -Menu.uncheck = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "");
                                  -};
                                  -
                                  -Menu.disable = function(element)
                                  -{
                                  -    setClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -Menu.enable = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // Need to remove line breaks otherwise only the first line will be executed
                                  -        expr = stripNewLines(expr);
                                  -        
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // try first the expression wrapped in parenthesis (so we can capture 
                                  -            // object literal expressions like "{}" and "{some:1,props:2}")
                                  -            cmd = api ?
                                  -                "with("+api+"){ ("+expr+") }" :
                                  -                "(" + expr + ")";
                                  -            
                                  -            result = this.eval(cmd);
                                  -            
                                  -            // if it results in error, then try it without parenthesis 
                                  -            if (result && result[evalError])
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -                
                                  -                result = this.eval(cmd);
                                  -
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // try to execute the command using a "return" statement in the evaluation closure.
                                  -            cmd = api ?
                                  -                // with API and context, trying to get the return value
                                  -                "(function(arguments){ with(" + api + "){ return (" + 
                                  -                    expr + 
                                  -                ") } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, trying to get the return value
                                  -                "(function(arguments){ return (" +
                                  -                    expr +
                                  -                ") }).call(" +context + ",undefined)";
                                  -            
                                  -            result = this.eval(cmd);
                                  -            
                                  -            // if it results in error, then try it without the "return" statement 
                                  -            if (result && result[evalError])
                                  -            {
                                  -                cmd = api ?
                                  -                    // with API and context, no return value
                                  -                    "(function(arguments){ with(" + api + "){ " +
                                  -                        expr + 
                                  -                    " } }).call(" + context + ",undefined)"
                                  -                    :
                                  -                    // with context only, no return value
                                  -                    "(function(arguments){ " + 
                                  -                        expr + 
                                  -                    " }).call(" + context + ",undefined)";
                                  -                    
                                  -                result = this.eval(cmd);
                                  -            }
                                  -        }
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg)
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        // getElementFromPoint results are different from Chrome 3 and 4 (beta) versions!
                                  -        // Check if this behavior will be the official one in the 4 final release
                                  -        if (isOpera || isSafari && !Env.isChromeExtension)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI",
                                  -        height: 250
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbTop,
                                  -    fbContent,
                                  -    fbContentStyle,
                                  -    fbBottom,
                                  -    fbBtnInspect,
                                  -
                                  -    fbToolbar,
                                  -
                                  -    fbPanelBox1,
                                  -    fbPanelBox1Style,
                                  -    fbPanelBox2,
                                  -    fbPanelBox2Style,
                                  -    fbPanelBar2Box,
                                  -    fbPanelBar2BoxStyle,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -    fbVSplitterStyle,
                                  -
                                  -    fbPanel1,
                                  -    fbPanel1Style,
                                  -    fbPanel2,
                                  -    fbPanel2Style,
                                  -
                                  -    fbConsole,
                                  -    fbConsoleStyle,
                                  -    fbHTML,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    isOpen: false,
                                  -    height: 250,
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    consoleMessageQueue: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            node.firebugIgnore = true;
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = options.height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            if (isFirefox)
                                  -                node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.injected.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                    node.firstChild.style.height = "1px";
                                  -                    node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarlet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = FirebugChrome.height || options.height,
                                  -            
                                  -                options = [
                                  -                    "true,top=",
                                  -                    Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                    ",left=0,height=",
                                  -                    height,
                                  -                    ",width=",
                                  -                    screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    },0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarlet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            if (oldChrome)
                                  -                oldChrome.close();
                                  -            
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.injected.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase, Context.prototype);
                                  -append(ChromeBase,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Save Options in Cookies",
                                  -                        type: "checkbox",
                                  -                        value: "saveCookies",
                                  -                        checked: Firebug.saveCookies,
                                  -                        command: "saveOptions"
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Restore Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            saveOptions: function(target)
                                  -            {
                                  -                var saveEnabled = target.getAttribute("checked");
                                  -                
                                  -                if (!saveEnabled) this.restorePrefs();
                                  -                
                                  -                this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.restorePrefs();
                                  -                
                                  -                if(Firebug.saveCookies)
                                  -                    Firebug.savePrefs()
                                  -                else
                                  -                    Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.addController(
                                  -            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanelName);
                                  -            
                                  -            if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {     
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = this.getSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), 
                                  -            
                                  -            height = heightValue + "px",
                                  -            
                                  -            // Width related values
                                  -            sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidthValue = Math.max(sideWidthValue - 6, 0);
                                  -            
                                  -            var sideWidth = sideWidthValue + "px"
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -            
                                  -            if (Firebug.chrome.largeCommandLineVisible)
                                  -            {
                                  -                fbLargeCommandLine = $("fbLargeCommandLine");
                                  -                
                                  -                fbLargeCommandLine.style.height = heightValue - 4 + "px";
                                  -                fbLargeCommandLine.style.width = sideWidthValue - 2 + "px";
                                  -                
                                  -                fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -                fbLargeCommandButtons.style.width = sideWidth;
                                  -            }
                                  -            else
                                  -            {
                                  -                fbPanel2Style.height = height;
                                  -                fbPanel2Style.width = sideWidth;
                                  -                
                                  -                fbPanelBar2BoxStyle.width = sideWidth;
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("FB_isOpen", "true");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen || !this.isInitialized)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("FB_isOpen", "");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeBase, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist)
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        var htmlPanel = chrome.getPanel("HTML");
                                  -                        htmlPanel.createUI();
                                  -                        
                                  -                        Firebug.Console.info("Firebug could not capture console calls during " + 
                                  -                                persistDelay + "ms");
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            fbBottom.className = "";
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            fbBottom.className = "hide";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -            {
                                  -                var target = ""+targ[cacheID];
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0)
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -    
                                  -    xxx: function(o)
                                  -    {
                                  -        var rep = Firebug.getRep(o);
                                  -        var className = "";
                                  -        
                                  -        var panel = Firebug.DOM.getPanel();
                                  -        var toggles = {};
                                  -        
                                  -        var row = Firebug.Console.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        var target = row;
                                  -        var object = o;
                                  -        
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        //row.innerHTML = message.join("");
                                  -        
                                  -        rep.tag.replace({domPanel: panel, toggles: toggles, object: object}, target);
                                  -        
                                  -        Firebug.Console.appendRow(row);
                                  -    },
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        Firebug.Console.timeMap[name] = new Date().getTime();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        var timeMap = Firebug.Console.timeMap;
                                  -        
                                  -        if (name in timeMap)
                                  -        {
                                  -            var delta = new Date().getTime() - timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete timeMap[name];
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=stack.length; i<l; i++)
                                  -            {
                                  -                if (stack[i] == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var stack = [];
                                  -        
                                  -        var traceLabel = "Stack Trace";
                                  -        
                                  -        this.group(traceLabel);
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            stack.push(fn);
                                  -            
                                  -            var html = [ 
                                  -                "<div class='objectBox-function'>",
                                  -                getFuncName(fn), 
                                  -                "(" 
                                  -            ];
                                  -
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                if (i)
                                  -                    html.push(", ");
                                  -                
                                  -                Firebug.Reps.appendObject(fn.arguments[i], html);
                                  -            }
                                  -
                                  -            html.push(")</div>");
                                  -            Firebug.Console.logRow(html, "stackTrace");
                                  -            //Firebug.Console.log(html);
                                  -        }
                                  -        
                                  -        this.groupEnd(traceLabel);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND; 
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return this.warn(["profileEnd() not supported."]);
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().panelNode.innerHTML = "";
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.panelNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().panelNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: 
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            addEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            removeEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -        
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }    
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    if (Env.Options.overrideConsole)
                                  -    {
                                  -        var win = Env.browser.window;
                                  -        
                                  -        if (!isFirefox || isFirefox && !("console" in win))
                                  -            win.console = ConsoleAPI;
                                  -        else
                                  -            win.firebug = ConsoleAPI;
                                  -    }
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    commandHistory.push(command);
                                  -    commandPointer = commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        // TODO: remove this when console2 is finished
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        //Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        // avoid logging the console command twice, in case it is a console function
                                  -        // that is being executed in the command line
                                  -        if (result != Firebug.Console.LOG_COMMAND)
                                  -        {
                                  -            Firebug.Console.log(result);
                                  -            //var html = [];
                                  -            //Firebug.Reps.appendObject(result, html)
                                  -            //Firebug.Console.writeMessage(html, "command");
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (commandPointer > 0 && commandHistory.length > 0)
                                  -            this.element.value = commandHistory[--commandPointer];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = commandHistory.length -1;
                                  -        var i = commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = commandHistory[++commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -};
                                  -
                                  -initializeCommandLineAPI();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    window._ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new window._ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -    
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log("onreadystatechange");
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            var duration = new Date().getTime() - reqStartTS;
                                  -            var success = xhrRequest.status == 200;
                                  -            
                                  -            spy.loaded = true;
                                  -            spy.responseText = xhrRequest.responseText;
                                  -            
                                  -            var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -            
                                  -            //Firebug.Console.log(responseHeadersText);
                                  -            
                                  -            var responses = responseHeadersText.split(/[\n\r]/);
                                  -            var reHeader = /^(\S+):\s*(.*)/;
                                  -            
                                  -            for (var i=0, l=responses.length; i<l; i++)
                                  -            {
                                  -                var text = responses[i];
                                  -                var match = text.match(reHeader);
                                  -                
                                  -                if (match)
                                  -                {
                                  -                    spy.responseHeaders.push({
                                  -                       name: [match[1]],
                                  -                       value: [match[2]]
                                  -                    });
                                  -                }
                                  -            }
                                  -                
                                  -            with({
                                  -                row: spy.logRow, 
                                  -                status: xhrRequest.status + " " + xhrRequest.statusText, 
                                  -                time: duration,
                                  -                success: success
                                  -            })
                                  -            {
                                  -                setTimeout(function(){
                                  -                
                                  -                    FBL.removeClass(row, "loading");
                                  -                    
                                  -                    if (!success)
                                  -                        FBL.setClass(row, "error");
                                  -                    
                                  -                    var item = FBL.$$(".spyStatus", row)[0];
                                  -                    item.innerHTML = status;
                                  -                    
                                  -                    var item = FBL.$$(".spyTime", row)[0];
                                  -                    item.innerHTML = time + "ms";
                                  -                    
                                  -                },200);
                                  -            }
                                  -            
                                  -            self.status = xhrRequest.status;
                                  -            self.statusText = xhrRequest.statusText;
                                  -            self.responseText = xhrRequest.responseText;
                                  -            self.responseXML = xhrRequest.responseXML;
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    var appendRep = function() 
                                  -    {
                                  -        var panel = Firebug.chrome.getPanel("Console");
                                  -        var container = panel.panelNode;
                                  -        
                                  -        var row = Firebug.chrome.document.createElement("div");
                                  -        row.className = "logRow logRow-spy loading";
                                  -        
                                  -        spy.logRow = row;
                                  -        
                                  -        Firebug.Spy.XHR.tag.append({object: spy}, row);
                                  -        
                                  -        setTimeout(function(){
                                  -            container.appendChild(row);
                                  -        },0);
                                  -    };
                                  -    
                                  -    this.open = function(method, url, async)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        
                                  -        if (!FBL.isIE && async)
                                  -            xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -        //Firebug.Console.log("xhrRequest BEFORE open");
                                  -        xhrRequest.open(method, url, async);
                                  -        //Firebug.Console.log("xhrRequest AFTER open");
                                  -        
                                  -        //Firebug.Console.log("xhrRequest BEFORE onreadystatechange SET");
                                  -        if (FBL.isIE && async)
                                  -            xhrRequest.onreadystatechange = handleStateChange;
                                  -        //Firebug.Console.log("xhrRequest AFTER onreadystatechange SET");
                                  -        
                                  -        if (!async)
                                  -        {
                                  -            Firebug.Console.log("handle sync");
                                  -        }
                                  -    };
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        
                                  -        //Firebug.Console.log("xhrRequest send BEFORE appendRep");
                                  -        appendRep();
                                  -        //Firebug.Console.log("xhrRequest send AFTER appendRep");
                                  -        
                                  -        
                                  -        //Firebug.Console.log("xhrRequest send BEFORE send");
                                  -        reqStartTS = new Date().getTime();
                                  -        xhrRequest.send(data);
                                  -        //Firebug.Console.log("xhrRequest send AFTER send");
                                  -    };
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        return xhrRequest.abort();
                                  -    };
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}})();
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return true;
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            //var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else //if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            iframe.contentWindow.document.body.innerHTML = text;
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        //dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy)
                                  -{
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        //dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -}
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -// ignores also the cache property injected by firebug
                                  -ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || Firebug.ignoreFirebugElements && 
                                  -                        ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;')
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && el[cacheID];
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(!this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("DOMSidePanel");
                                  -        }            
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID]);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = documentCache[e.id];
                                  -        var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0)
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Module
                                  -
                                  -Firebug.CSS = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("CSS") : null;
                                  -    },
                                  -    
                                  -    renderStyleSheet: function(index)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel.lastStyleSheetIndex != index)
                                  -        {
                                  -            var str = renderStyleSheet(index);
                                  -            
                                  -            panel.contentNode.innerHTML = str.join("");
                                  -            
                                  -            // IE needs this timeout, otherwise the panel won't scroll
                                  -            setTimeout(function(){
                                  -                panel.synchronizeUI();
                                  -            },0);
                                  -            
                                  -            panel.styleSheetIndex = index;
                                  -            panel.lastStyleSheetIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CSS);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSStyleSheetPanel(){};
                                  -
                                  -CSSStyleSheetPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSS",
                                  -    title: "CSS",
                                  -    
                                  -    styleSheetIndex: 0,
                                  -    lastStyleSheetIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var styleSheets = doc.styleSheets;
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, length=styleSheets.length; i<length; i++)
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -        
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectStyleSheet(this.styleSheetIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("CSS");
                                  -        var index = oldPanel.styleSheetIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.styleSheetIndex = index;
                                  -        this.lastStyleSheetIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    },
                                  -    
                                  -    selectStyleSheet: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    }    
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSElementPanel(){};
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSElementPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "CSS",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles(target);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles(node);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;        
                                  -    }
                                  -});
                                  -
                                  -//Firebug.registerPanel(CSSElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSEditPanel(){};
                                  -
                                  -CSSEditPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSEditPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "Style",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.margin = "0";
                                  -        //style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -        
                                  -        var doc = Firebug.chrome.document;
                                  -        
                                  -        var el = doc.createElement("pre");
                                  -        el.innerHTML = "element.style {";
                                  -        el.style.margin = "4px 0 0";
                                  -        el.style.padding = "0 0 1px 8px";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("textarea");
                                  -        el.rows = 1;
                                  -        el.style.width = "80%";
                                  -        //el.style.height = "100%";
                                  -        //el.style.position = "absolute";
                                  -        el.style.fontSize = "11px";
                                  -        el.style.resize = "none";
                                  -        el.style.overflow = "hidden";
                                  -        el.style.outline = "0";
                                  -        el.style.border = "0";
                                  -        el.style.padding = "0";
                                  -        el.style.margin = "0 10%";
                                  -        el.style.color = "darkblue";
                                  -        
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        this.editNode = el;
                                  -        
                                  -        var el = doc.createElement("pre");
                                  -        el.innerHTML = "}";
                                  -        el.style.margin = "0";
                                  -        el.style.padding = "0 0 10px 8px";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("div");
                                  -        el.innerHTML = "Computed Styles";
                                  -        el.style.background = "#eee url(group.gif)";
                                  -        el.style.fontWeight = "bold";
                                  -        el.style.margin = "0 0 4px";
                                  -        el.style.padding = "2px 5px";
                                  -        el.style.border = "1px solid #ccc";
                                  -        el.style.borderWidth = "1px 0";
                                  -        el.style.fontFamily = "Lucida Grande,Tahoma,sans-serif";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("div");
                                  -        this.computedStylesNode = this.contentNode.appendChild(el);
                                  -        
                                  -        this.onKeyUp = bind(this.onKeyUp, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        
                                  -        addEvent(this.editNode, "keydown", this.onKeyDown);
                                  -        addEvent(this.editNode, "keyup", this.onKeyUp);
                                  -        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles2(target);
                                  -        this.editNode.value = str;
                                  -        
                                  -        var str2 = renderStyles(target);
                                  -        this.computedStylesNode.innerHTML = str2.join("");
                                  -        
                                  -        this.adjustEditSize();
                                  -        /*
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -        /**/
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles2(node);
                                  -        this.editNode.value = str;
                                  -        this.adjustEditSize();
                                  -        /*
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -        /**/        
                                  -    },
                                  -    
                                  -    adjustEditSize: function(add)
                                  -    {
                                  -        add = add || 0;
                                  -        var nodeValue = this.editNode.value + " ";
                                  -        nodeValue = nodeValue.replace(/\n\r|\r\n/g, "\n");
                                  -        var lines = nodeValue.split(/\n/)
                                  -        var num = lines.length + add
                                  -        this.editNode.rows = num;
                                  -    },
                                  -    
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        if (event.keyCode == 13 /* enter */)
                                  -        {
                                  -            this.adjustEditSize(1);
                                  -        }
                                  -        
                                  -    },
                                  -    
                                  -    onKeyUp: function()
                                  -    {
                                  -        var nodeValue = this.editNode.value;
                                  -        
                                  -        var selectedElement = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        
                                  -        try
                                  -        {
                                  -            selectedElement.style.cssText = nodeValue;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        this.adjustEditSize();
                                  -        
                                  -        /*
                                  -        var lines = nodeValue.split(/[\n\r]/);
                                  -        
                                  -        var reValue = /\s*([\w-]+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, length=lines.length; i<length; i++)
                                  -        {
                                  -            var line = lines[i];
                                  -            var value = line.match(reValue);
                                  -            
                                  -            if (value)
                                  -            {
                                  -                alert(value[1]);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        //Firebug.Console.log("jhi");
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSEditPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSRulesEditPanel(){};
                                  -
                                  -CSSRulesEditPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSRulesEditPanel",
                                  -    parentPanel: "CSS",
                                  -    title: "Add",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        return;
                                  -        
                                  -        this.onKeyUp = bind(this.onKeyUp, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        
                                  -        addEvent(this.editNode, "keydown", this.onKeyDown);
                                  -        addEvent(this.editNode, "keyup", this.onKeyUp);
                                  -        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        return;
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles2(target);
                                  -        this.editNode.value = str;
                                  -        
                                  -        var str2 = renderStyles(target);
                                  -        this.computedStylesNode.innerHTML = str2.join("");
                                  -        
                                  -        this.adjustEditSize();
                                  -    }/*,
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles2(node);
                                  -        this.editNode.value = str;
                                  -        this.adjustEditSize();
                                  -    },
                                  -    
                                  -    adjustEditSize: function(add)
                                  -    {
                                  -        add = add || 0;
                                  -        var nodeValue = this.editNode.value + " ";
                                  -        nodeValue = nodeValue.replace(/\n\r|\r\n/g, "\n");
                                  -        var lines = nodeValue.split(/\n/)
                                  -        var num = lines.length + add
                                  -        this.editNode.rows = num;
                                  -    },
                                  -    
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        if (event.keyCode == 13) // enter
                                  -        {
                                  -            this.adjustEditSize(1);
                                  -        }
                                  -        
                                  -    },
                                  -    
                                  -    onKeyUp: function()
                                  -    {
                                  -        var nodeValue = this.editNode.value;
                                  -        
                                  -        var selectedElement = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        
                                  -        try
                                  -        {
                                  -            selectedElement.style.cssText = nodeValue;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        this.adjustEditSize();
                                  -    }/**/
                                  -});
                                  -
                                  -//Firebug.registerPanel(CSSRulesEditPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyleSheet = function renderStyleSheet(index)
                                  -{
                                  -    var styleSheet = Firebug.browser.document.styleSheets[index],
                                  -        str = [], 
                                  -        sl = -1;
                                  -    
                                  -    try
                                  -    {
                                  -        var rules = styleSheet[isIE ? "rules" : "cssRules"];
                                  -        
                                  -        for (var i=0, rule; rule = rules[i]; i++)
                                  -        {
                                  -            var selector = rule.selectorText;
                                  -            var cssText = isIE ? 
                                  -                    rule.style.cssText :
                                  -                    rule.cssText.match(/\{(.*)\}/)[1];
                                  -            
                                  -            str[++sl] = renderRule(selector, cssText.split(";"));
                                  -        }
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        str[++sl] = "<em>Access to restricted URI denied</em>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderRule = function renderRule(selector, styles)
                                  -{
                                  -    var str = "<div class='Selector'>"+ selector.toLowerCase()+ " {</div>";
                                  -    
                                  -    for(var i=0, len=styles.length; i<len; i++)
                                  -    {
                                  -        var rule = styles[i];
                                  -        str += rule.replace(/([^\:]+)\:(.+)/, renderRuleReplacer);
                                  -    }
                                  -    
                                  -    str += "<div class='SelectorEnd'>}</div>";
                                  -    return str;
                                  -};
                                  -
                                  -var renderRuleReplacer = function renderRuleReplacer(m, g1, g2)
                                  -{
                                  -    return "<div class='CSSText'><span class='CSSProperty'>" +
                                  -        g1.toLowerCase() +
                                  -        ": </span><span class='CSSValue'>" +
                                  -        g2.replace(/\s*$/, "") +
                                  -        ";</span></div>"; 
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyles = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = document.defaultView ? 
                                  -            document.defaultView.getComputedStyle(node, null) :
                                  -            node.currentStyle;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = "<div class='CSSItem'><span class='CSSProperty'>"; 
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = "</span>:<span class='CSSValue'>"; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = "</span>;</div>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderStyles2 = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = node.style;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = ": "; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = ";\n";
                                  -    }
                                  -    
                                  -    str = str.join("");
                                  -    return str.substr(0, str.length-1);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    sourceIndex: 0,
                                  -    lastSourceIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectSourceCode(this.sourceIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.sourceIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.sourceIndex = index;
                                  -        this.lastSourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.lastSourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.contentNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }   
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -            this.lastSourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[cacheID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : "";
                                  -};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -        var _setTimeout = this.context.setTimeout;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(_setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser.window;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        //this.select(Firebug.browser.window);
                                  -        
                                  -        // TODO: xxxpedro dom leaking to global namespace (need to create a proper context object)
                                  -        this.context.loaded = true;
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -var hasProperties = function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (isFunction(ob)) return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -}
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;}.netInfoTextSelected{display:block;}.netInfoParamName{padding:0 10px 0 0;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.useA11y .panelNode-net .a11yFocus:focus,.useA11y .panelNode-net .focusRow:focus{outline-offset:-2px;background-color:#FFFFD6 !important;}.useA11y .panelNode-net .netHeaderCell:focus,.useA11y .panelNode-net:focus .netHeaderCell,.useA11y .panelNode-net:focus .netReceivingBar,.useA11y .netSummaryRow:focus .netBar,.useA11y .netSummaryRow:focus .netBar{background-color:#FFFFD6;background-image:none;border-color:#FFFFD6;}.logRow-spy .spyHead .spyTitle,.logGroup .logGroupLabel,.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .spyHead .spyTitle,.opened .logGroupLabel,.opened .memberLabelCell .memberLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) no-repeat !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;top:0;left:0;height:100%;width:100%;border-collapse:collapse;background:#fff;overflow:hidden;}#fbTop{height:49px;}#fbToolbar{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:absolute;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;margin-right:4px;}#fbWindow_btClose{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -119px;}#fbWindow_btClose:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -119px;}#fbWindow_btDetach{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -32px -119px;}#fbWindow_btDetach:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -FBL.initialize();
                                  -// ************************************************************************************************
                                  -
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/build/template .htaccess b/tags/firebug1.3a5/build/template .htaccess
                                  deleted file mode 100644
                                  index 2b750b1a..00000000
                                  --- a/tags/firebug1.3a5/build/template .htaccess	
                                  +++ /dev/null
                                  @@ -1,41 +0,0 @@
                                  -<IfModule rewrite_module>
                                  -    RewriteEngine on
                                  -    RewriteCond %{HTTP_USER_AGENT} ".*Safari.*" [OR]
                                  -    RewriteCond %{HTTP:Accept-Encoding} !gzip
                                  -    RewriteRule (.*)\.jgz$ $1 [L]
                                  -</IfModule>
                                  -
                                  -#<ifModule mod_headers>
                                  -#  Header unset ETag
                                  -#</ifModule>
                                  -#FileETag None
                                  -
                                  -#<ifModule mod_headers>
                                  -#  Header unset Last-Modified
                                  -#  Header set Cache-Control "private, x-gzip-ok=''"
                                  -#</ifModule>
                                  -
                                  -#<FilesMatch "\.(js|jgz)$">
                                  -#</FilesMatch>
                                  -
                                  -#ExpiresActive on
                                  -#ExpiresDefault "access plus 0 seconds"
                                  -
                                  -#<IfModule mod_expires>
                                  -#ExpiresActive On
                                  -#ExpiresDefault A300
                                  -#ExpiresByType image/x-icon A2592000
                                  -#ExpiresByType application/x-javascript A3600
                                  -#ExpiresByType text/css A3600
                                  -#ExpiresByType image/gif A604800
                                  -#ExpiresByType image/png A604800
                                  -#ExpiresByType image/jpeg A604800
                                  -#ExpiresByType text/plain A300
                                  -#ExpiresByType application/x-shockwave-flash A604800
                                  -#ExpiresByType video/x-flv A604800
                                  -#ExpiresByType application/pdf A604800
                                  -#ExpiresByType text/html A300
                                  -#</IfModule>
                                  -
                                  -AddType "text/javascript;charset=UTF-8" .jgz
                                  -AddEncoding gzip .jgz
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/bookmarlet.txt b/tags/firebug1.3a5/content/bookmarlet.txt
                                  deleted file mode 100644
                                  index 003e9e30..00000000
                                  --- a/tags/firebug1.3a5/content/bookmarlet.txt
                                  +++ /dev/null
                                  @@ -1,171 +0,0 @@
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL (sequencial)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('script');
                                  -L.id='FirebugLite';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -(function(F,i,r,e,b,u,g,L,I,T,E){
                                  -if(F.getElementById(b))return;
                                  -
                                  -E=F.documentElement.namespaceURI;
                                  -E=E?F[i+'NS'](E,'script'):F[i]('script');
                                  -
                                  -E=F[i]('script');
                                  -E[r]('id',b);
                                  -E[r]('src',I+g+T);
                                  -E[r](b,u);
                                  -(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);
                                  -
                                  -E=new Image;
                                  -E[r]('src',I+L);
                                  -})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.3','build/firebug.jgz','skin/xp/sprite.png','http://firebug.local:8740/firebug1.3/','#startOpened');
                                  -})(document,'createElement','setAttribute','getElementsByTagName','FirebugLiteBookmarlet','1.3.0.3','build/firebug.jgz','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/','#startOpened');
                                  -//  F         i               r              e                      b                       u         g                    L                   I                                                          T
                                  -
                                  -
                                  -http://firebug.local:8740/firebug1.3/
                                  -http://fbug.googlecode.com/svn/lite/branches/firebug1.3/
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBLite (parallel)
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -e=F[B]('script');
                                  -e.id='FirebugLite';
                                  -e.src=L+t;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=L+i;
                                  -})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened');
                                  -//  F         B              L                                            i                    t
                                  -
                                  -
                                  -javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=L+t;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=L+i;})(document,'createElement','http://getfirebug.com/releases/lite/alpha/','skin/xp/sprite.png','firebug.jgz#startOpened');
                                  -
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -F.getElementsByTagName('head')[0].appendChild(g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -(function(F,i,r,e,b,u,g){
                                  -if(F.getElementById(r))return;
                                  -
                                  -g=F[i]('script');
                                  -g.id=r;
                                  -g.src=u+e;
                                  -
                                  -r='getElementsByTagName';
                                  -e='appendChild';
                                  -
                                  -F[r]('head')[0][e](g);
                                  -
                                  -g=F[i]('img');
                                  -g.src=u+b;
                                  -
                                  -g=F[i]('div');
                                  -g.id='FBLI';
                                  -g.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -g.innerHTML='Loading...';
                                  -F[r]('body')[0][e](g);
                                  -
                                  -})(document,'createElement','FirebugLite','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         i               r             e                             b                    u
                                  -
                                  -//---------------------------------------------------
                                  -
                                  -//        F,B,u,g,L,i,t,e
                                  -//        F,i,r,e,b,u,g,
                                  -(function(F,B,L,i,t,e){
                                  -if(F.getElementById('FBLS'))return;
                                  -
                                  -e=F[B]('div');
                                  -e.id='FBLI';
                                  -e.style.cssText='position:fixed;top:0;right:0;background:#ff0;padding:2px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F[B]('script');
                                  -e.id='FBLS';
                                  -e.src=t+L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -
                                  -e=F[B]('img');
                                  -e.src=t+i;
                                  -})(document,'createElement','build/firebug.min.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');
                                  -//  F         B              L                             i                    t
                                  -
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// Bookmarlet FBL* (sequencial with loading indicator)
                                  -
                                  -(function(F,B,L){
                                  -L=F.createElement('div');
                                  -L.id='FBLI';
                                  -L.style.cssText='position:fixed;top:0;left:0;background:#ff0;padding:2px 5px;margin:0;z-index:2147483647;';
                                  -L.innerHTML='Loading ...';
                                  -F.body.appendChild(L);
                                  -
                                  -L=F.createElement('script');
                                  -L.id='FBLS';
                                  -L.src=B;
                                  -F.getElementsByTagName('head')[0].appendChild(L);
                                  -})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -
                                  -//*************************************************************************************************
                                  -// experimental bookmarlet
                                  -
                                  -(function(F,B,L,i,t,e){
                                  -
                                  -i=/msie 6/i.test(B.appVersion)||B.userAgent.indexOf('MSIE')!=-1&&F.compatMode=='BackCompat';
                                  -t=i?'absolute':'fixed';
                                  -
                                  -e=F.createElement('div');
                                  -e.id='FirebugLoadIndicator';
                                  -e.style.cssText='position:'+t+';top:0;right:0;background:#ff0;padding:5px;margin:0;z-index:2147483647;';
                                  -e.innerHTML='Loading Firebug Lite...';
                                  -F.body.appendChild(e);
                                  -
                                  -e=F.createElement('script');
                                  -e.src=L;
                                  -F.getElementsByTagName('head')[0].appendChild(e);
                                  -        
                                  -})(document,navigator,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js');
                                  -
                                  -//*************************************************************************************************
                                  diff --git a/tags/firebug1.3a5/content/changelog.txt b/tags/firebug1.3a5/content/changelog.txt
                                  deleted file mode 100644
                                  index 7eeba567..00000000
                                  --- a/tags/firebug1.3a5/content/changelog.txt
                                  +++ /dev/null
                                  @@ -1,380 +0,0 @@
                                  -###################################################################################################
                                  - 1.3.0a5
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -CommandLine
                                  --------------------------------------------------------------------------------
                                  -    - Large Command Line
                                  -    - refactoring CommandLine module for better readability and encapsulation (commandHistory
                                  -        is now a private variable in CommandLine module)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Fix problem in iframe creation that was blocking the UI creation via
                                  -      bookmarlet in IE, for some pages.
                                  -      
                                  -    - Allow Firebug Lite UI to load in "windowless mode", without creating an
                                  -      iframe. This is necessary to make the bookmarlet run in cases where it
                                  -      is not possible to create an iframe.
                                  -      
                                  -    - refactoring Chrome module for better readability
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - refined the layout of buttons (added an image background)
                                  -    - refined the layout of log groups
                                  -
                                  --------------------------------------------------------------------------------
                                  -Context
                                  --------------------------------------------------------------------------------
                                  -    - Better context evaluation (commands with multiple lines are now properly evaluated)
                                  -    - context.evaluate() properly executes and returns the value of expressions with 
                                  -      multiple commands (be it multilined or not).
                                  -
                                  --------------------------------------------------------------------------------
                                  -Style
                                  --------------------------------------------------------------------------------
                                  -    - Editing feature of inline styles (Style panel)
                                  -
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - properly format inline style of elements in IE to lower-case in HTML panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Lib
                                  --------------------------------------------------------------------------------
                                  -    - fixed visibility detection and visibility representation of elements
                                  -    - Fixed problems in IE with some event functions like isLeftClick(), isRightClick(), 
                                  -      and others. IE has a different pattern for identifying mouse buttons.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Added the "category" of error in the error messages (like "Type Error", "Syntax Error", etc).
                                  -    - ported the consoleInjetor.js file that will be used with the new console (console2.js)
                                  -    - ported the console.js file from Firebug codebase (not enabled yet). This will replace 
                                  -      the current implementation of the Console panel in the 1.3 final version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - fixed variable "root" leaking to global namespace (domplate.js) 
                                  -    - improved development build functions
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a4
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Improved the performance of the application initial loading time
                                  -    - Improved the performance of the popup loading time
                                  -    - Refactored the chrome synchronization mechanism
                                  -    - Implemented synchronization of the persistent popup
                                  -    - Fixed isFunction() problem with IE when dealing with external objects
                                  -    
                                  -    - Improved the memory consumption. Now each panel only uses resources (listen
                                  -      for events, etc) when is currently selected.
                                  -    
                                  -    - Implemented the "Duck Type Detection" system, to make possible identify
                                  -      native classes (Document, Element, etc) in IE, and therefore, generate
                                  -      the appropriate visual representation.
                                  -
                                  --------------------------------------------------------------------------------
                                  -User Interface
                                  --------------------------------------------------------------------------------
                                  -    - Moved all UI components to a separated gui.js file.
                                  -    - Implemented the Menu class (with normal, checkbox, radiobutton, group
                                  -      and separator items), that will be used in options menus at 1.3 verson
                                  -      and in contexts menus at 1.4 version.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - StatusBar
                                  -    - SidePanel size and positioning
                                  -    
                                  -    - Long sequence of elements (like toolbar/statusbar buttons) don't "bleed" 
                                  -      anymore (appears outside its container) when the chrome has small dimensions
                                  -       
                                  -    - Large panels now triggers automatically the appropriate scrollbars
                                  -      (some huge scripts with long lines wans't triggering the horizontal scrollbar) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Console
                                  --------------------------------------------------------------------------------
                                  -    - Fixed problem in console.time() and console.timeEnd().
                                  -    - Implemented the console.trace (thanks dongryphon for the contribution!)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the border in the BoxModel Highlight
                                  -    
                                  --------------------------------------------------------------------------------
                                  -HTML
                                  --------------------------------------------------------------------------------
                                  -    - Internet Explorer and inline styles representation (thanks christophe.blin 
                                  -      for the contribution!)
                                  -
                                  -    - Implemented a basic sidePanel synchronization to test the overall 
                                  -      performance of the rendering when inspecting elements
                                  -
                                  --------------------------------------------------------------------------------
                                  -DOM
                                  --------------------------------------------------------------------------------
                                  -    - Ported the main part of the original DOM Panel in Firebug
                                  -    - Ported the DOM "views path" mechanism (click and "go into" DOM objects)
                                  -    - Improved the performance of the initial rendering 
                                  -    - Implemented a basic DOM Panel subclass used in as HTML side panel
                                  -
                                  --------------------------------------------------------------------------------
                                  -Script
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the Script panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Better number of lines detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -CSS
                                  --------------------------------------------------------------------------------
                                  -    - Implemented the basics of the CSS panel, with some code ported from
                                  -      the Firebug Lite 1.2 version.
                                  -      
                                  -    - Adjusted the rules and property names styles to lowercase
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Removed the dependency on global variables (domplate, DomplateTag)
                                  -    - Adjusted the code so it can run in external contexts (persistent mode)
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a3
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Better implementation of the chrome synchronization (detach and reattach methods)
                                  -    - Improvements the location detection
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - XML+XSL and XHTML support
                                  -    - Synchronization messages ("detach" and "reattach") are now dispatched to all panels 
                                  -    - Fixed problem with Chrome synchronization in Opera
                                  -    - Fixed weird bug in layout in IE (horizontal splitter was disappearing sometimes)
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the IE auto margin size calculator
                                  -    - Reimplemented the pointsToPixels function
                                  -    - Reimplemented the pixelsPerInch calculator
                                  -    - Outline Inspector is now "cropped" to avoid triggering the scrollbars
                                  -
                                  --------------------------------------------------------------------------------
                                  -Bookmarlet
                                  --------------------------------------------------------------------------------
                                  -    - More robust and maintainable bookmarlet
                                  -
                                  --------------------------------------------------------------------------------
                                  -Domplate
                                  --------------------------------------------------------------------------------
                                  -    - Ported the Domplate rendering engine
                                  -
                                  --------------------------------------------------------------------------------
                                  -Reps
                                  --------------------------------------------------------------------------------
                                  -    - Ported the visual representation rules of objects (Reps module) 
                                  -
                                  --------------------------------------------------------------------------------
                                  -Persist
                                  --------------------------------------------------------------------------------
                                  -    - Reimplemented the application core to support in the future persisted
                                  -      Chromes, that is, UI windows that stays alive when the user reloads or
                                  -      changes the page (considering that the following page is in the same domain).
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a2
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Changes
                                  --------------------------------------------------------------------------------
                                  -    - Context Class implemented to allow inspect different windows (contexts)
                                  -    
                                  -    - better settings handling: 
                                  -        - modes: BookmarletMode, PersistentMode, TraceMode, DevelopmentMode
                                  -        - skin: xp, classic, light
                                  -
                                  -    - all components were revised to better handling memory consumption. 
                                  -      create()/destroy() methods (called when something is created) and 
                                  -      initialize()/shutdown() when something is activated, or made visible.
                                  -
                                  -    - console.log calls are now captured even when the UI is not loaded
                                  -    - better location detection
                                  -    - library initialization reimplemented to support future persistent applications
                                  -    
                                  --------------------------------------------------------------------------------
                                  -User Interface Changes
                                  --------------------------------------------------------------------------------
                                  -    - Created "xp" and "classic" skins. The old skin was based in a Firefox 
                                  -      non-default theme.     
                                  -    
                                  -    - HTML and CSS revised to render properly in different browsers, running
                                  -      on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  --------------------------------------------------------------------------------
                                  -Chrome Changes
                                  --------------------------------------------------------------------------------
                                  -    - better positioning calculation, when running on different compatibility 
                                  -      modes (quirks mode, standards mode).
                                  -    
                                  -    - better window size, scrollSize and scollPosition calculations, when 
                                  -      running on different compatibility modes (quirks mode, standards mode).
                                  -    
                                  -    - element:hover now works also in IE7 & IE8 when in quirks mode.
                                  -    
                                  -    - resize chrome performance (buffered frame-skip technique) 
                                  -    
                                  -    - mini-chrome implemented
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core Additions
                                  --------------------------------------------------------------------------------
                                  -    - FBTrace - internal logging system
                                  -    
                                  -    - DOM methods:
                                  -        - createElement()
                                  -        - createGlobalElement()
                                  -        
                                  -    - Event methods:
                                  -        - bind()
                                  -        - cancelEvent()
                                  -        - addGlobalEvent()
                                  -        - removeGlobalEvent()
                                  -        - dispatch()
                                  -        - disableTextSelection()
                                  -    
                                  -    - className methods:
                                  -        - addClass()
                                  -        - removeClass()
                                  -        - hasClass()
                                  -        - toggleClass()
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome Additions
                                  --------------------------------------------------------------------------------
                                  -    - Controller Class
                                  -    - Module Class
                                  -    - Panel Class
                                  -    - PanelBar Class
                                  -    - Button Class (normal and toggle buttons)
                                  -    
                                  -    - FBTrace Panel
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a1
                                  -###################################################################################################
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Inspect function implemented.
                                  -
                                  -    - onInspecting highlight element in HTML Tree behaviour implemented.
                                  -      When inspecting, the elements are being highlighted, and the scroll
                                  -      is being changed to make the element visible in the tree.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Core
                                  --------------------------------------------------------------------------------
                                  -    - Problem with scope in event handlers. All functions that need to access
                                  -      the "shared scope" must be assigned to a local variable.
                                  -        
                                  -        var onClick = function onClick(e)
                                  -        {
                                  -        ...
                                  -
                                  -    - Revised "extend" and "append" functions
                                  -
                                  -    - problem with the new Firebug for FF3, it seems that it doesn't allow 
                                  -      extending the console namespace anymore.
                                  -            
                                  -    - CommandLineAPI --> $, $$, dir, dirxml...
                                  -
                                  -    - Fixed bug in getLocation function, the relative path calculation wasn't 
                                  -      working in all cases. 
                                  -
                                  -    - Fixed bug in commandLine. Commands that doesn't return a value (if, for,
                                  -      while) wasn't being properly executed.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Events
                                  --------------------------------------------------------------------------------
                                  -    - Opera problem with the TAB key in commandLine
                                  -
                                  -    - Better handling of the F12 key press, which wasn't being properly
                                  -      attached to the Chrome Frame window.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Chrome
                                  --------------------------------------------------------------------------------
                                  -    - Problem with multiple iframes and the resizing of the Chrome, that
                                  -      tries to add events on them.
                                  -
                                  -    - Fixed problem in IE when resizing the Chrome, when the relative position
                                  -      of the mouse wasnt being computed in all frames of the document, 
                                  -      resulting in strange flickerings when resizing it.
                                  -
                                  -    - Fixed problem in Opera when resizing the Chrome.
                                  -
                                  -    - Problem when resizing with the fbVSplitter, when it reaches the side of
                                  -       the screen. Problem with negative pixel numbers.
                                  -
                                  -    - fbVSplitter is bigger than the frame in firefox. Problem with mouse scroll.
                                  -
                                  -    - isScrolledToBottom is not working in Firefox, it seems that this is 
                                  -      happening because the scrollable panel is some pixels higher than
                                  -      it should be.
                                  -
                                  --------------------------------------------------------------------------------
                                  -Inspector
                                  --------------------------------------------------------------------------------
                                  -    - Selected element in HTML tree isn't being highlighted (boxmodel)
                                  -
                                  -    - BoxModel functions entirely revised. Now the position, size, padding
                                  -       and margin are being computed correctly, in all units: pt, px, em, ex
                                  -       and % (need to test more deeply the percentage values).
                                  -
                                  --------------------------------------------------------------------------------
                                  -commandLine
                                  --------------------------------------------------------------------------------
                                  -    - better handling of scope of commandLine.eval(), if you type "this" it will
                                  -      refer to the CommandLine module, and it should refer to "window" instead
                                  -
                                  -
                                  -
                                  -
                                  -###################################################################################################
                                  - 1.3.0a0
                                  -###################################################################################################
                                  -
                                  -1.3.0 prototype
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug.dev.js b/tags/firebug1.3a5/content/firebug.dev.js
                                  deleted file mode 100644
                                  index 468f2f8a..00000000
                                  --- a/tags/firebug1.3a5/content/firebug.dev.js
                                  +++ /dev/null
                                  @@ -1,725 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function(){
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -    
                                  -var bookmarletMode = true;
                                  -var bookmarletURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/";
                                  -
                                  -//var bookmarletSkinURL = "http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/";
                                  -var bookmarletSkinURL = "http://getfirebug.com/releases/lite/alpha/skin/xp/";
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -window.FBL = {}; // force exposure in IE global namespace
                                  -window.FBDev =
                                  -{
                                  -    // ********************************************************************************************
                                  -    modules:
                                  -    [ 
                                  -        // ****************************************************************************************
                                  -        // Application Core
                                  -        "firebug/lib.js",
                                  -        
                                  -        "firebug/firebug.js",
                                  -        
                                  -        "firebug/gui.js",        
                                  -        "firebug/context.js",
                                  -        "firebug/chrome.js",
                                  -        "firebug/chrome.injected2.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Application Classes
                                  -        "firebug/selector.js",
                                  -        "firebug/inspector.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Experimental
                                  -        "firebug/domplate.js", // not used yet
                                  -        //"firebug/domplate.optmized.loops.js", // not used yet
                                  -        "firebug/reps2.js",  // experimental
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Console / CommandLine core
                                  -        "firebug/reps.js",
                                  -        "firebug/console.js",
                                  -        //"firebug/console2.js",
                                  -        //"firebug/consoleInjector.js",
                                  -        
                                  -        "firebug/commandLine.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        "firebug/xhr.js",
                                  -        "firebug/net.js",
                                  -        "firebug/spy.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Application Panels
                                  -        "firebug/html.js",
                                  -        
                                  -        //"firebug/insideOutBox.js", // too experimental
                                  -        //"firebug/html2.js", // too experimental
                                  -        
                                  -        "firebug/css.js",
                                  -        
                                  -        //"firebug/editor.js",
                                  -        //"firebug/css2.js",
                                  -        
                                  -        "firebug/script.js",
                                  -        "firebug/dom.js", // experimental
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Trace Module and Panel
                                  -        "firebug/trace.js",
                                  -        "firebug/tracePanel.js",
                                  -        
                                  -        // ****************************************************************************************
                                  -        // Bootstrap
                                  -        "firebug/boot.js"
                                  -    ],
                                  -    // ********************************************************************************************
                                  -
                                  -    loadChromeApplication: function(chrome)
                                  -    {
                                  -        FBDev.buildSource(function(source){
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -            script.text = source;
                                  -        });
                                  -    },
                                  -
                                  -    panelBuild: function() {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildFullSource(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    panelBuildSkin: function()
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        panel.updateOutput("Building Source...");
                                  -        
                                  -        setTimeout(function(){
                                  -            FBDev.buildSkin(function(source){
                                  -                panel.updateOutput(source);
                                  -            });
                                  -        },0);
                                  -    },
                                  -    
                                  -    build: function() {
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBDev.buildFullSource(function(source){
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -            //out.appendChild(document.createTextNode(source));
                                  -            
                                  -            out.value = source;
                                  -            document.body.appendChild(out);
                                  -        });
                                  -    },
                                  -    
                                  -    buildFullSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        
                                  -        // remove the boot.js from the list of modules to be included
                                  -        // because it will be generated bellow
                                  -        var modules = FBDev.modules.slice(0,FBDev.modules.length-1);
                                  -        var last = modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -        
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "\n\nFBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.injected = \n" +
                                  -                    "{\n" +
                                  -                    "    CSS: '" + css + "',\n" +
                                  -                    "    HTML: '" + html + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "FBL.initialize();\n" +
                                  -                    "// ************************************************************************************************\n";
                                  -            }
                                  -        });
                                  -        
                                  -        for (var i=0, module; module=modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            if (module.indexOf("chrome.injected") != -1) continue;
                                  -            
                                  -            FBL.Ajax.request({
                                  -                url: moduleURL, 
                                  -                i: i, 
                                  -                onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        //alert("ok")
                                  -                        source.push(injected);
                                  -                        
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }
                                  -    },
                                  -    
                                  -    buildSource: function(callback)
                                  -    {
                                  -        var useClosure = true;
                                  -        var source = [];
                                  -        var last = FBDev.modules.length-1;
                                  -        
                                  -        if (useClosure)
                                  -            source.push("(function(){\n\n");
                                  -    
                                  -        for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -        {
                                  -            var moduleURL = sourceURL + module;
                                  -            
                                  -            FBL.Ajax.request({url: moduleURL, i: i, onComplete: function(r,o)
                                  -                {
                                  -                    source.push(r);
                                  -                    
                                  -                    if (o.i == last)
                                  -                    {
                                  -                        if (useClosure)
                                  -                            source.push("\n})();");
                                  -
                                  -                        callback(source.join(""));
                                  -                    }
                                  -                    else
                                  -                        source.push("\n\n");
                                  -                }
                                  -            });
                                  -        }        
                                  -    },
                                  -    
                                  -    buildSkin: function(callback)
                                  -    {
                                  -        var htmlUrl = skinURL + "firebug.html",
                                  -            cssUrl = skinURL + "firebug.css",
                                  -            html,
                                  -            css,
                                  -            injected;
                                  -        
                                  -        FBL.Ajax.request({
                                  -            url: htmlUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                html = FBDev.compressHTML(r);
                                  -            }
                                  -        });
                                  -
                                  -        FBL.Ajax.request({
                                  -            url: cssUrl, 
                                  -            onComplete:function(r)
                                  -            {
                                  -                css = FBDev.compressCSS(r);
                                  -                injected = 
                                  -                    "/* See license.txt for terms of usage */\n\n" +
                                  -                    "FBL.ns(function() { with (FBL) {\n" +
                                  -                    "// ************************************************************************************************\n\n" +
                                  -                    "FirebugChrome.injected = \n" +
                                  -                    "{\n" +
                                  -                    "    HTML: '" + html + "',\n" +
                                  -                    "    CSS: '" + css + "'\n" +
                                  -                    "};\n\n" +
                                  -                    "// ************************************************************************************************\n" +
                                  -                    "}});";
                                  -                
                                  -                callback(injected);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinHTML: function()
                                  -    {
                                  -        var url = skinURL + "firebug.html";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressHTML(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -    },
                                  -    
                                  -    compressSkinCSS: function()
                                  -    {
                                  -        var url = skinURL + "firebug.css";
                                  -        
                                  -        var out = document.createElement("textarea");
                                  -        
                                  -        FBL.Ajax.request({url: url, onComplete:function(r)
                                  -            {
                                  -                var result = FBDev.compressCSS(r);
                                  -                
                                  -                out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%;";
                                  -                out.appendChild(document.createTextNode(result));
                                  -                document.body.appendChild(out);
                                  -            }
                                  -        });
                                  -        
                                  -    },
                                  -    
                                  -    compressHTML: function(html)
                                  -    {
                                  -        var reHTMLComment = /(<!--([^-]|-(?!->))*-->)/g;
                                  -        
                                  -        return html.replace(/^[\s\S]*<\s*body.*>\s*|\s*<\s*\/body.*>[\s\S]*$/gm, "").
                                  -            replace(reHTMLComment, "").
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+</gm, "<").
                                  -            replace(/<\s+/gm, "<").
                                  -            replace(/\s+>/gm, ">").
                                  -            replace(/>\s+/gm, ">").
                                  -            replace(/\s+\/>/gm, "/>");
                                  -    },
                                  -
                                  -    compressCSS: function(css)
                                  -    {
                                  -        var reComment = /(\/\/.*)\n/g;
                                  -        var reMultiComment = /(\/\*([^\*]|\*(?!\/))*\*\/)/g;
                                  -
                                  -        return css.replace(reComment, "").
                                  -            replace(reMultiComment, "").
                                  -            replace(/url\(/gi, "url("+publishedURL).
                                  -            replace(/\s\s/gm, "").
                                  -            replace(/\s+\{/gm, "{").
                                  -            replace(/\{\s+/gm, "{").
                                  -            replace(/\s+\}/gm, "}").
                                  -            replace(/\}\s+/gm, "}").
                                  -            replace(/\s+\:/gm, ":").            
                                  -            replace(/\:\s+/gm, ":").            
                                  -            replace(/,\s+/gm, ",");            
                                  -    },
                                  -    
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome.getPanel("Dev");
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?\.js)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    
                                  -    var head = document.getElementsByTagName("head")[0];
                                  -    
                                  -    var path = null;
                                  -    
                                  -    for(var i=0, c=head.childNodes, ci; ci=c[i]; i++)
                                  -    {
                                  -        var file = null;
                                  -        if ( ci.nodeName.toLowerCase() == "script" && 
                                  -             (file = reFirebugFile.exec(ci.src)) )
                                  -        {
                                  -            
                                  -            var fileName = file[1];
                                  -            var fileOptions = file[2];
                                  -            
                                  -            if (reProtocol.test(ci.src)) {
                                  -                // absolute path
                                  -                path = rePath.exec(ci.src)[1];
                                  -              
                                  -            }
                                  -            else
                                  -            {
                                  -                // relative path
                                  -                var r = rePath.exec(ci.src);
                                  -                var src = r ? r[1] : ci.src;
                                  -                var rel = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -                path = rePath.exec(location.href)[1];
                                  -                
                                  -                if (rel)
                                  -                {
                                  -                    var lastFolder = /^(.*\/)[^\/]+\/$/;
                                  -                    
                                  -                    var j = rel[1].length/3;
                                  -                    var p;
                                  -                    while (j-- > 0)
                                  -                        path = lastFolder.exec(path)[1];
                                  -
                                  -                    path += rel[2];
                                  -                }
                                  -                
                                  -                if(src.indexOf("/") != -1)
                                  -                {
                                  -                    // "./some/path"
                                  -                    if(/^\.\/./.test(src))
                                  -                    {
                                  -                        path += src.substring(2);
                                  -                    }
                                  -                    // "/some/path"
                                  -                    else if(/^\/./.test(src))
                                  -                    {
                                  -                        var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                        path = domain[1] + src;
                                  -                    }
                                  -                    // "some/path"
                                  -                    else
                                  -                    {
                                  -                        path += src;
                                  -                    }
                                  -                }
                                  -            }
                                  -            
                                  -            break;
                                  -        }
                                  -    }
                                  -                    
                                  -    var m = path.match(/([^\/]+)\/$/);
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        sourceURL = path;
                                  -        baseURL = path.substr(0, path.length - m[1].length - 1);
                                  -        skinURL = baseURL + "skin/xp/";
                                  -        fullURL = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw "Firebug error: Library path not found";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function loadModules() {
                                  -    
                                  -    findLocation();
                                  -    
                                  -    publishedURL = bookmarletMode ? bookmarletSkinURL : skinURL;
                                  -    
                                  -    var sufix = isApplicationContext ? "#app" : "";
                                  -    
                                  -    var useDocWrite = isIE || isSafari;
                                  -    //var useDocWrite = isIE;
                                  -    
                                  -    var moduleURL, script;
                                  -    var scriptTags = [];
                                  -    
                                  -    for (var i=0, module; module=FBDev.modules[i]; i++)
                                  -    {
                                  -        var moduleURL = sourceURL + module + sufix;
                                  -        
                                  -        if(useDocWrite)
                                  -        {
                                  -            scriptTags.push("<script src='", moduleURL, "'><\/script>");
                                  -        }
                                  -        else
                                  -        {
                                  -            script = document.createElement("script");
                                  -            script.src = moduleURL;
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(script);
                                  -            //document.getElementsByTagName("body")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    
                                  -    if(useDocWrite)
                                  -    {
                                  -        document.write(scriptTags.join(""));
                                  -    }
                                  -    
                                  -    waitFirebugLoad();
                                  -};
                                  -
                                  -var waitFirebugLoad = function()
                                  -{
                                  -    if (window && "Firebug" in window)
                                  -    {
                                  -        loadDevPanel();
                                  -    }
                                  -    else
                                  -        setTimeout(waitFirebugLoad, 0);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var loadDevPanel = function() { with(FBL) { 
                                  -
                                  -    // ********************************************************************************************
                                  -    // FBTrace Panel
                                  -    
                                  -    function DevPanel(){};
                                  -    
                                  -    DevPanel.prototype = extend(Firebug.Panel,
                                  -    {
                                  -        name: "Dev",
                                  -        title: "Dev",
                                  -        
                                  -        options: {
                                  -            hasToolButtons: true,
                                  -            innerHTMLSync: true
                                  -        },
                                  -        
                                  -        create: function(){
                                  -            Firebug.Panel.create.apply(this, arguments);
                                  -            
                                  -            var doc = Firebug.chrome.document;
                                  -            var out = doc.createElement("textarea");
                                  -            out.id = "fbDevOutput";
                                  -            out.style.cssText = "position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; padding: 0;";
                                  -            
                                  -            this.contentNode.appendChild(out);
                                  -            this.outputNode = out;
                                  -            
                                  -            this.buildSourceButton = new Button({
                                  -                caption: "Build Source",
                                  -                title: "Build full source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuild
                                  -            });
                                  -            
                                  -            this.buildSkinButton = new Button({
                                  -                caption: "Build Skin",
                                  -                title: "Build skin source code",
                                  -                owner: FBDev,
                                  -                onClick: FBDev.panelBuildSkin
                                  -            });
                                  -        },
                                  -        
                                  -        updateOutput: function(output)
                                  -        {
                                  -            var doc = Firebug.chrome.document;
                                  -            
                                  -            if (isIE)
                                  -                this.outputNode.innerText = output;
                                  -            else
                                  -                this.outputNode.textContent = output;
                                  -        },
                                  -        
                                  -        initialize: function(){
                                  -            Firebug.Panel.initialize.apply(this, arguments);
                                  -            
                                  -            this.containerNode.style.overflow = "hidden";
                                  -            this.outputNode = this.contentNode.firstChild;                
                                  -            
                                  -            this.buildSourceButton.initialize();
                                  -            this.buildSkinButton.initialize();
                                  -        },
                                  -        
                                  -        shutdown: function()
                                  -        {
                                  -            this.containerNode.style.overflow = "";
                                  -        }
                                  -        
                                  -    });
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    Firebug.registerPanel(DevPanel);
                                  -}};
                                  -
                                  -// ************************************************************************************************
                                  -var publishedURL = "";
                                  -var baseURL = "";
                                  -var sourceURL = "";
                                  -var skinURL = "";
                                  -var fullURL = "";
                                  -var isApplicationContext = false;
                                  -
                                  -var isFirefox = navigator.userAgent.indexOf("Firefox") != -1;
                                  -var isIE = navigator.userAgent.indexOf("MSIE") != -1;
                                  -var isOpera = navigator.userAgent.indexOf("Opera") != -1;
                                  -var isSafari = navigator.userAgent.indexOf("AppleWebKit") != -1;
                                  -
                                  -loadModules();
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -window.FTrace = function()
                                  -{
                                  -    try
                                  -    {
                                  -        (0)();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var result = e;
                                  -        
                                  -        //Firebug.Console.dir(result);
                                  -        //Firebug.Console.log(result.type);
                                  -        
                                  -        var stack = 
                                  -            result.stack || // Firefox / Google Chrome 
                                  -            result.stacktrace || // Opera
                                  -            "";
                                  -        
                                  -        //stack = stack.replace(/[\n]/g, "\n--------------------\n");
                                  -        stack = stack.replace(/\n\r|\r\n/g, "\n"); // normalize line breaks
                                  -        var items = stack.split(/[\n\r]/);
                                  -        
                                  -        // props are:
                                  -        // ---------------
                                  -        // function name
                                  -        // function parameters (Firefox)
                                  -        // function location? (Google Chrome, when file is unknown)
                                  -        // file URL
                                  -        // line number
                                  -        // column number (Google Chrome)
                                  -        
                                  -        
                                  -        // Google Chrome
                                  -        if (FBL.isSafari)
                                  -        {
                                  -            //var reChromeStackItem = /^\s+at\s+([^\(]+)\s\((.*)\)$/;
                                  -            var reChromeStackItem = /^\s+at\s+(.*)((?:http|https|ftp|file):\/\/.*)$/;
                                  -            
                                  -            var reChromeStackItemName = /\s*\($/;
                                  -            var reChromeStackItemValue = /^(.+)\:(\d+\:\d+)\)?$/;
                                  -            
                                  -            for (var i=0, length=items.length; i<length; i++)
                                  -            {
                                  -                var item = items[i];
                                  -                var match = item.match(reChromeStackItem);
                                  -                
                                  -                if (match)
                                  -                {
                                  -                    var name = match[1];
                                  -                    if (name)
                                  -                        name = name.replace(reChromeStackItemName, "");
                                  -                    
                                  -                    Firebug.Console.log(name);
                                  -                    
                                  -                    var value = match[2].match(reChromeStackItemValue);
                                  -                    
                                  -                    if (value)
                                  -                    {
                                  -                        Firebug.Console.log(value[1]);
                                  -                        Firebug.Console.log(value[2]);
                                  -                    }
                                  -                    else
                                  -                        Firebug.Console.log(match[2]);
                                  -                    
                                  -                    Firebug.Console.log("--------------------------");
                                  -                }                
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        else if (FBL.isFirefox)
                                  -        {
                                  -            // Firefox
                                  -            var reFirefoxStackItem = /^(.*)@(.*)$/;
                                  -            var reFirefoxStackItemValue = /^(.+)\:(\d+)$/;
                                  -            
                                  -            for (var i=0, length=items.length; i<length; i++)
                                  -            {
                                  -                var item = items[i];
                                  -                var match = item.match(reFirefoxStackItem);
                                  -                
                                  -                if (match)
                                  -                {
                                  -                    Firebug.Console.logFormatted([match[1]]);
                                  -                    
                                  -                    var value = match[2].match(reFirefoxStackItemValue);
                                  -                    
                                  -                    if (value)
                                  -                    {
                                  -                        Firebug.Console.logFormatted([value[1]]);
                                  -                        Firebug.Console.logFormatted([value[2]]);
                                  -                    }
                                  -                    else
                                  -                        Firebug.Console.logFormatted([match[2]]);
                                  -                    
                                  -                    Firebug.Console.logFormatted(["--------------------------"]);
                                  -                }                
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        else if (FBL.isOpera)
                                  -        {
                                  -            // Opera
                                  -            var reOperaStackItem = /^\s\s(?:\.\.\.\s\s)?Line\s(\d+)\sof\s(.+)$/;
                                  -            var reOperaStackItemValue = /^linked\sscript\s(.+)$/;
                                  -            
                                  -            for (var i=0, length=items.length; i<length; i+=2)
                                  -            {
                                  -                var item = items[i];
                                  -                
                                  -                var match = item.match(reOperaStackItem);
                                  -                
                                  -                if (match)
                                  -                {
                                  -                    Firebug.Console.log(match[1]);
                                  -                    
                                  -                    var value = match[2].match(reOperaStackItemValue);
                                  -                    
                                  -                    if (value)
                                  -                    {
                                  -                        Firebug.Console.log(value[1]);
                                  -                    }
                                  -                    else
                                  -                        Firebug.Console.log(match[2]);
                                  -                    
                                  -                    Firebug.Console.log("--------------------------");
                                  -                }                
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        Firebug.Console.log(result.stack);
                                  -    }
                                  -};
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -})();
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/boot.js b/tags/firebug1.3a5/content/firebug/boot.js
                                  deleted file mode 100644
                                  index 4a529401..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/boot.js
                                  +++ /dev/null
                                  @@ -1,3 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.initialize();
                                  diff --git a/tags/firebug1.3a5/content/firebug/chrome.injected.js b/tags/firebug1.3a5/content/firebug/chrome.injected.js
                                  deleted file mode 100644
                                  index f4b8c2bb..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/chrome.injected.js
                                  +++ /dev/null
                                  @@ -1,16 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -//----------------------------------------------------------------------------
                                  -// Injected Chrome
                                  -//----------------------------------------------------------------------------
                                  -FirebugChrome.injected = 
                                  -{
                                  -    CSS: '.fbBtnPressed{background:#ECEBE3;padding:3px 6px 2px 7px !important;margin:1px 0 0 1px;_margin:1px -1px 0 1px;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}.fbToolbarButtons{display:none;}#fbStatusBarBox{display:none;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}html,body{margin:0;padding:0;overflow:hidden;}body{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/search.png) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{position:fixed;overflow:hidden;height:100%;width:100%;border-collapse:collapse;background:#fff;}#fbTop{height:49px;}#fbToolbar{position:absolute;z-index:5;width:100%;top:0;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;overflow:hidden;}#fbPanelBarBox{top:27px;position:absolute;z-index:8;width:100%;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:4px 5px 0;}#fbToolbarIcon a{display:block;height:20px;width:20px;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -135px;text-decoration:none;cursor:default;}#fbToolbarButtons{float:left;padding:4px 2px 0 5px;}#fbToolbarButtons a{text-decoration:none;display:block;float:left;color:#000;padding:4px 8px 4px;cursor:default;}#fbToolbarButtons a:hover{color:#333;padding:3px 7px 3px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}#fbStatusBarBox{position:relative;top:5px;line-height:19px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:10px 6px 0 0;float:left;}.fbStatusBar span{color:#808080;padding:0 4px 0 0;}.fbStatusBar span a{text-decoration:none;color:black;}.fbStatusBar span a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;_width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:255px; z-index:8;left:0;white-space:nowrap;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:10px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:11px;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{padding-left:6px;background:#fff;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:7px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;}div.fbFitHeight{overflow:auto;_position:absolute;}#fbWindowButtons a{font-size:1px;width:16px;height:16px;display:block;float:right;margin-right:4px;text-decoration:none;cursor:default;}#fbWindow_btClose{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -119px;}#fbWindow_btClose:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -119px;}#fbWindow_btDetach{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -32px -119px;}#fbWindow_btDetach:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{display:block;float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:9;position:absolute;height:100%;top:27px;_width:6px;}div.lineNo{font:11px Monaco,monospace;float:left;display:inline;position:relative;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}pre.nodeCode{font:11px Monaco,monospace;margin:0;padding-left:10px;overflow:hidden;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:11px;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;white-space:pre;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/infoIcon.png);}.logRow-warning{background-color:cyan;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/warningIcon.png);}.logRow-error{background-color:LightYellow;background-image:url(http://fbug.googlecode.com/svn/lite/branches/firebug1.3/skin/xp/errorIcon.png);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}',
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbHSplitter">&nbsp;</div><div id="fbWindowButtons"><a id="fbWindow_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbWindow_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><span id="fbToolbarIcon"><a title="Firebug Lite Homepage" href="http://getfirebug.com/lite.html">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span><span id="fbHTMLStatusBar" class="fbStatusBar"><span><a class="fbHover"><b>body</b></a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div.class</a></span><span>&lt;</span><span><a class="fbHover">iframe</a></span><span>&lt;</span><span><a class="fbHover">body</a></span><span>&lt;</span><span><a class="fbHover">html</a></span><span>&lt;</span><span><a class="fbHover">div</a></span><span>&lt;</span><span><a class="fbHover">div</a></span></span></span></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Style</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Layout</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div></div></div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div></td></tr><tr id="fbBottom"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/chrome.injected2.js b/tags/firebug1.3a5/content/firebug/chrome.injected2.js
                                  deleted file mode 100644
                                  index 4f2e8169..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/chrome.injected2.js
                                  +++ /dev/null
                                  @@ -1,13 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -FirebugChrome.injected = 
                                  -{
                                  -    HTML: '<table id="fbChrome" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td id="fbTop" colspan="2"><div id="fbWindowButtons"><a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a><a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a></div><div id="fbToolbar"><div id="fbToolbarContent"><span id="fbToolbarIcon"><a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a></span><span id="fbToolbarButtons"><span id="fbFixedButtons"><a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a></span><span id="fbConsoleButtons" class="fbToolbarButtons"><a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a></span></span><span id="fbStatusBarBox"><span class="fbToolbarSeparator"></span></span></div></div><div id="fbPanelBarBox"><div id="fbPanelBar1" class="fbPanelBar"><a id="fbConsoleTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Console</span><span class="fbTabMenuTarget"></span><span class="fbTabR"></span></a><a id="fbHTMLTab" class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">HTML</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">CSS</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">Script</span><span class="fbTabR"></span></a><a class="fbTab fbHover"><span class="fbTabL"></span><span class="fbTabText">DOM</span><span class="fbTabR"></span></a></div><div id="fbPanelBar2Box" class="hide"><div id="fbPanelBar2" class="fbPanelBar"></div></div></div><div id="fbHSplitter">&nbsp;</div></td></tr><tr id="fbContent"><td id="fbPanelBox1"><div id="fbPanel1" class="fbFitHeight"><div id="fbConsole" class="fbPanel"></div><div id="fbHTML" class="fbPanel"></div></div></td><td id="fbPanelBox2" class="hide"><div id="fbVSplitter" class="fbVSplitter">&nbsp;</div><div id="fbPanel2" class="fbFitHeight"><div id="fbHTML_Style" class="fbPanel"></div><div id="fbHTML_Layout" class="fbPanel"></div><div id="fbHTML_DOM" class="fbPanel"></div></div><textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea><div id="fbLargeCommandButtons"><a id="fbCommand_btRun" class="fbButton fbHover">Run</a><a id="fbCommand_btClear" class="fbButton fbHover">Clear</a><a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr><tr id="fbBottom" class="hide"><td id="fbCommand" colspan="2"><div id="fbCommandBox"><div id="fbCommandIcon">&gt;&gt;&gt;</div><input id="fbCommandLine" name="fbCommandLine" type="text"/><a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a></div></td></tr></tbody></table><span id="fbMiniChrome"><span id="fbMiniContent"><span id="fbMiniIcon" title="Open Firebug Lite"></span><span id="fbMiniErrors" class="fbErrors">2 errors</span></span></span>',
                                  -    CSS: '.collapsed{display:none;}[collapsed="true"]{display:none;}.panelNode-net{overflow-x:hidden;}.netTable{width:100%;}.hideCategory-undefined .category-undefined,.hideCategory-html .category-html,.hideCategory-css .category-css,.hideCategory-js .category-js,.hideCategory-image .category-image,.hideCategory-xhr .category-xhr,.hideCategory-flash .category-flash,.hideCategory-txt .category-txt,.hideCategory-bin .category-bin{display:none;}.netHeadRow{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netHeadCol{border-bottom:1px solid #CCCCCC;padding:2px 4px 2px 18px;font-weight:bold;}.netHeadLabel{white-space:nowrap;overflow:hidden;}.netHeaderRow{height:16px;}.netHeaderCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;background:#BBBBBB url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeader.gif) repeat-x;white-space:nowrap;}.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox{padding:2px 14px 2px 18px;}.netHeaderCellBox{padding:2px 14px 2px 10px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.netHeaderCell:hover:active{background:#959595 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderActive.gif) repeat-x;}.netHeaderSorted{background:#7D93B2 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;}.netHeaderSorted > .netHeaderCellBox{border-right-color:#6B7C93;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowDown.png) no-repeat right;}.netHeaderSorted.sortedAscending > .netHeaderCellBox{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/arrowUp.png);}.netHeaderSorted:hover:active{background:#536B90 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;}.panelNode-net .netRowHeader{display:block;}.netRowHeader{cursor:pointer;display:none;height:15px;margin-right:0 !important;}.netRow .netRowHeader{background-position:5px 1px;}.netRow[breakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpoint.png);}.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/breakpointDisabled.png);}.netRow.category-xhr:hover .netRowHeader{background-color:#F6F6F6;}#netBreakpointBar{max-width:38px;}#netHrefCol > .netHeaderCellBox{border-left:0px;}.netRow .netRowHeader{width:3px;}.netInfoRow .netRowHeader{display:table-cell;}.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],.netTable[hiddenCols~=netTimeCol] TD.netTimeCol{display:none;}.netRow{background:LightYellow;}.netRow.loaded{background:#FFFFFF;}.netRow.loaded:hover{background:#EFEFEF;}.netCol{padding:0;vertical-align:top;border-bottom:1px solid #EFEFEF;white-space:nowrap;height:17px;}.netLabel{width:100%;}.netStatusCol{padding-left:10px;color:rgb(128,128,128);}.responseError > .netStatusCol{color:red;}.netDomainCol{padding-left:5px;}.netSizeCol{text-align:right;padding-right:10px;}.netHrefLabel{-moz-box-sizing:padding-box;overflow:hidden;z-index:10;position:absolute;padding-left:18px;padding-top:1px;max-width:15%;font-weight:bold;}.netFullHrefLabel{display:none;-moz-user-select:none;padding-right:10px;padding-bottom:3px;max-width:100%;background:#FFFFFF;z-index:200;}.netHrefCol:hover > .netFullHrefLabel{display:block;}.netRow.loaded:hover .netCol > .netFullHrefLabel{background-color:#EFEFEF;}.useA11y .a11yShowFullLabel{display:block;background-image:none !important;border:1px solid #CBE087;background-color:LightYellow;font-family:Monaco,monospace;color:#000000;font-size:10px;z-index:2147483647;}.netSizeLabel{padding-left:6px;}.netStatusLabel,.netDomainLabel,.netSizeLabel,.netBar{padding:1px 0 2px 0 !important;}.responseError{color:red;}.hasHeaders .netHrefLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.netLoadingIcon{position:absolute;border:0;margin-left:14px;width:16px;height:16px;background:transparent no-repeat 0 0;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/loading_16.gif);display:inline-block;}.loaded .netLoadingIcon{display:none;}.netBar,.netSummaryBar{position:relative;border-right:50px solid transparent;}.netResolvingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResolving.gif) repeat-x;z-index:60;}.netConnectingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarConnecting.gif) repeat-x;z-index:50;}.netBlockingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarWaiting.gif) repeat-x;z-index:40;}.netSendingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarSending.gif) repeat-x;z-index:30;}.netWaitingBar{position:absolute;left:0;top:0;bottom:0;background:#FFFFFF url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarResponded.gif) repeat-x;z-index:20;min-width:1px;}.netReceivingBar{position:absolute;left:0;top:0;bottom:0;background:#38D63B url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoading.gif) repeat-x;z-index:10;}.netWindowLoadBar,.netContentLoadBar{position:absolute;left:0;top:0;bottom:0;width:1px;background-color:red;z-index:70;opacity:0.5;display:none;margin-bottom:-1px;}.netContentLoadBar{background-color:Blue;}.netTimeLabel{-moz-box-sizing:padding-box;position:absolute;top:1px;left:100%;padding-left:6px;color:#444444;min-width:16px;}.loaded .netReceivingBar,.loaded.netReceivingBar{background:#B6B6B6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarLoaded.gif) repeat-x;border-color:#B6B6B6;}.fromCache .netReceivingBar,.fromCache.netReceivingBar{background:#D6D6D6 url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/netBarCached.gif) repeat-x;border-color:#D6D6D6;}.netSummaryRow .netTimeLabel,.loaded .netTimeLabel{background:transparent;}.timeInfoTip{width:150px; height:40px}.timeInfoTipBar,.timeInfoTipEventBar{position:relative;display:block;margin:0;opacity:1;height:15px;width:4px;}.timeInfoTipEventBar{width:1px !important;}.timeInfoTipCell.startTime{padding-right:8px;}.timeInfoTipCell.elapsedTime{text-align:right;padding-right:8px;}.sizeInfoLabelCol{font-weight:bold;padding-right:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;}.sizeInfoSizeCol{font-weight:bold;}.sizeInfoDetailCol{color:gray;text-align:right;}.sizeInfoDescCol{font-style:italic;}.netSummaryRow .netReceivingBar{background:#BBBBBB;border:none;}.netSummaryLabel{color:#222222;}.netSummaryRow{background:#BBBBBB !important;font-weight:bold;}.netSummaryRow .netBar{border-right-color:#BBBBBB;}.netSummaryRow > .netCol{border-top:1px solid #999999;border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:1px;padding-bottom:2px;}.netSummaryRow > .netHrefCol:hover{background:transparent !important;}.netCountLabel{padding-left:18px;}.netTotalSizeCol{text-align:right;padding-right:10px;}.netTotalTimeCol{text-align:right;}.netCacheSizeLabel{position:absolute;z-index:1000;left:0;top:0;}.netLimitRow{background:rgb(255,255,225) !important;font-weight:normal;color:black;font-weight:normal;}.netLimitLabel{padding-left:18px;}.netLimitRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;vertical-align:middle !important;padding-top:2px;padding-bottom:2px;}.netLimitButton{font-size:11px;padding-top:1px;padding-bottom:1px;}.netInfoCol{border-top:1px solid #EEEEEE;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/group.gif) repeat-x #FFFFFF;}.netInfoBody{margin:10px 0 4px 10px;}.netInfoTabs{position:relative;padding-left:17px;}.netInfoTab{position:relative;top:-3px;margin-top:10px;padding:4px 6px;border:1px solid transparent;border-bottom:none;_border:none;font-weight:bold;color:#565656;cursor:pointer;}.netInfoTabSelected{cursor:default !important;border:1px solid #D7D7D7 !important;border-bottom:none !important;-moz-border-radius:4px 4px 0 0;background-color:#FFFFFF;}.logRow-netInfo.error .netInfoTitle{color:red;}.logRow-netInfo.loading .netInfoResponseText{font-style:italic;color:#888888;}.loading .netInfoResponseHeadersTitle{display:none;}.netInfoResponseSizeLimit{font-family:Lucida Grande,Tahoma,sans-serif;padding-top:10px;font-size:11px;}.netInfoText{display:none;margin:0;border:1px solid #D7D7D7;border-right:none;padding:8px;background-color:#FFFFFF;font-family:Monaco,monospace;}.netInfoTextSelected{display:block;}.netInfoParamName{padding:0 10px 0 0;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;vertical-align:top;text-align:right;white-space:nowrap;}.netInfoParamValue{width:100%;}.netInfoHeadersText,.netInfoPostText,.netInfoPutText{padding-top:0;}.netInfoHeadersGroup,.netInfoPostParams,.netInfoPostSource{margin-bottom:4px;border-bottom:1px solid #D7D7D7;padding-top:8px;padding-bottom:2px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#565656;}.netInfoPostParamsTable,.netInfoPostPartsTable,.netInfoPostJSONTable,.netInfoPostXMLTable,.netInfoPostSourceTable{margin-bottom:10px;width:100%;}.netInfoPostContentType{color:#bdbdbd;padding-left:50px;font-weight:normal;}.netInfoHtmlPreview{border:0;width:100%;height:100%;}.netHeadersViewSource{color:#bdbdbd;margin-left:200px;font-weight:normal;}.netHeadersViewSource:hover{color:blue;cursor:pointer;}.netActivationRow,.netPageSeparatorRow{background:rgb(229,229,229) !important;font-weight:normal;color:black;}.netActivationLabel{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;padding-left:22px;}.netPageSeparatorRow{height:5px !important;}.netPageSeparatorLabel{padding-left:22px;height:5px !important;}.netPageRow{background-color:rgb(255,255,255);}.netPageRow:hover{background:#EFEFEF;}.netPageLabel{padding:1px 0 2px 18px !important;font-weight:bold;}.netActivationRow > .netCol{border-bottom:2px solid;-moz-border-bottom-colors:#EFEFEF #999999;padding-top:2px;padding-bottom:3px;}.useA11y .panelNode-net .a11yFocus:focus,.useA11y .panelNode-net .focusRow:focus{outline-offset:-2px;background-color:#FFFFD6 !important;}.useA11y .panelNode-net .netHeaderCell:focus,.useA11y .panelNode-net:focus .netHeaderCell,.useA11y .panelNode-net:focus .netReceivingBar,.useA11y .netSummaryRow:focus .netBar,.useA11y .netSummaryRow:focus .netBar{background-color:#FFFFD6;background-image:none;border-color:#FFFFD6;}.logRow-spy .spyHead .spyTitle,.logGroup .logGroupLabel,.hasChildren .memberLabelCell .memberLabel,.hasHeaders .netHrefLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);background-repeat:no-repeat;background-position:2px 2px;}.opened .spyHead .spyTitle,.opened .logGroupLabel,.opened .memberLabelCell .memberLabel{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}.twisty{background-position:2px 0;}.panelNode-console{overflow-x:hidden;}.objectLink{text-decoration:none;}.objectLink:hover{cursor:pointer;text-decoration:underline;}.logRow{position:relative;margin:0;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;background-color:#FFFFFF;overflow:hidden !important;}.useA11y .logRow:focus{border-bottom:1px solid #000000 !important;outline:none !important;background-color:#FFFFAD !important;}.useA11y .logRow:focus a.objectLink-sourceLink{background-color:#FFFFAD;}.useA11y .a11yFocus:focus,.useA11y .objectBox:focus{outline:2px solid #FF9933;background-color:#FFFFAD;}.useA11y .objectBox-null:focus,.useA11y .objectBox-undefined:focus{background-color:#888888 !important;}.useA11y .logGroup.opened > .logRow{border-bottom:1px solid #ffffff;}.logGroup{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding:0 !important;border:none !important;}.logGroupBody{display:none;margin-left:16px;border-left:1px solid #D7D7D7;border-top:1px solid #D7D7D7;background:#FFFFFF;}.logGroup > .logRow{background-color:transparent !important;font-weight:bold;}.logGroup.opened > .logRow{border-bottom:none;}.logGroup.opened > .logGroupBody{display:block;}.logRow-command > .objectBox-text{font-family:Monaco,monospace;color:#0000FF;white-space:pre-wrap;}.logRow-info,.logRow-warn,.logRow-error,.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-left:22px;background-repeat:no-repeat;background-position:4px 2px;}.logRow-assert,.logRow-warningMessage,.logRow-errorMessage{padding-top:0;padding-bottom:0;}.logRow-info,.logRow-info .objectLink-sourceLink{background-color:#FFFFFF;}.logRow-warn,.logRow-warningMessage,.logRow-warn .objectLink-sourceLink,.logRow-warningMessage .objectLink-sourceLink{background-color:cyan;}.logRow-error,.logRow-assert,.logRow-errorMessage,.logRow-error .objectLink-sourceLink,.logRow-errorMessage .objectLink-sourceLink{background-color:LightYellow;}.logRow-error,.logRow-assert,.logRow-errorMessage{color:#FF0000;}.logRow-info{}.logRow-warn,.logRow-warningMessage{}.logRow-error,.logRow-assert,.logRow-errorMessage{}.objectBox-string,.objectBox-text,.objectBox-number,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-string,.objectBox-text,.objectLink-textNode{white-space:pre-wrap;}.objectBox-number,.objectLink-styleRule,.objectLink-element,.objectLink-textNode{color:#000088;}.objectBox-string{color:#FF0000;}.objectLink-function,.objectBox-stackTrace,.objectLink-profile{color:DarkGreen;}.objectBox-null,.objectBox-undefined{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-exception{padding:0 2px 0 18px;color:red;}.objectLink-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.errorTitle{margin-top:0px;margin-bottom:1px;padding-top:2px;padding-bottom:2px;}.errorTrace{margin-left:17px;}.errorSourceBox{margin:2px 0;}.errorSource-none{display:none;}.errorSource-syntax > .errorBreak{visibility:hidden;}.errorSource{cursor:pointer;font-family:Monaco,monospace;color:DarkGreen;}.errorSource:hover{text-decoration:underline;}.errorBreak{cursor:pointer;display:none;margin:0 6px 0 0;width:13px;height:14px;vertical-align:bottom;opacity:0.1;}.hasBreakSwitch .errorBreak{display:inline;}.breakForError .errorBreak{opacity:1;}.assertDescription{margin:0;}.logRow-profile > .logRow > .objectBox-text{font-family:Lucida Grande,Tahoma,sans-serif;color:#000000;}.logRow-profile > .logRow > .objectBox-text:last-child{color:#555555;font-style:italic;}.logRow-profile.opened > .logRow{padding-bottom:4px;}.profilerRunning > .logRow{padding-left:22px !important;}.profileSizer{width:100%;overflow-x:auto;overflow-y:scroll;}.profileTable{border-bottom:1px solid #D7D7D7;padding:0 0 4px 0;}.profileTable tr[odd="1"]{background-color:#F5F5F5;vertical-align:middle;}.profileTable a{vertical-align:middle;}.profileTable td{padding:1px 4px 0 4px;}.headerCell{cursor:pointer;-moz-user-select:none;border-bottom:1px solid #9C9C9C;padding:0 !important;font-weight:bold;}.headerCellBox{padding:2px 4px;border-left:1px solid #D9D9D9;border-right:1px solid #9C9C9C;}.headerCell:hover:active{}.headerSorted{}.headerSorted > .headerCellBox{border-right-color:#6B7C93;}.headerSorted.sortedAscending > .headerCellBox{}.headerSorted:hover:active{}.linkCell{text-align:right;}.linkCell > .objectLink-sourceLink{position:static;}.logRow-stackTrace{padding-top:0;}.logRow-stackTrace > .objectBox-stackFrame{position:relative;padding-top:2px;}.objectLink-object{font-family:Lucida Grande,sans-serif;font-weight:bold;color:DarkGreen;white-space:pre-wrap;}.objectPropValue{font-weight:normal;font-style:italic;color:#555555;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.selectorHidden > .selectorTag{color:#5F82D9;}.selectorHidden > .selectorId{color:#888888;}.selectorHidden > .selectorClass{color:#D86060;}.selectorValue{font-family:Lucida Grande,sans-serif;font-style:italic;color:#555555;}.panelNode.searching .logRow{display:none;}.logRow.matched{display:block !important;}.logRow.matching{position:absolute;left:-1000px;top:-1000px;max-width:0;max-height:0;overflow:hidden;}.arrayLeftBracket,.arrayRightBracket,.arrayComma{font-family:Monaco,monospace;}.arrayLeftBracket,.arrayRightBracket{font-weight:bold;}.arrayLeftBracket{margin-right:4px;}.arrayRightBracket{margin-left:4px;}.logRow-dir{padding:0;}.logRow-errorMessage .hasTwisty .errorTitle,.logRow-spy .spyHead .spyTitle,.logGroup .logRow{cursor:pointer;padding-left:18px;background-repeat:no-repeat;background-position:3px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle{background-position:2px 3px;}.logRow-errorMessage > .hasTwisty > .errorTitle:hover,.logRow-spy .spyHead .spyTitle:hover,.logGroup > .logRow:hover{text-decoration:underline;}.logRow-spy{padding:0 !important;}.logRow-spy,.logRow-spy .objectLink-sourceLink{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/group.gif) repeat-x #FFFFFF;padding-right:4px;right:0;}.logRow-spy.opened{padding-bottom:4px;border-bottom:none;}.spyTitle{color:#000000;font-weight:bold;-moz-box-sizing:padding-box;overflow:hidden;z-index:100;padding-left:18px;}.spyCol{padding:0;white-space:nowrap;height:16px;}.spyTitleCol:hover > .objectLink-sourceLink,.spyTitleCol:hover > .spyTime,.spyTitleCol:hover > .spyStatus,.spyTitleCol:hover > .spyTitle{display:none;}.spyFullTitle{display:none;-moz-user-select:none;max-width:100%;background-color:Transparent;}.spyTitleCol:hover > .spyFullTitle{display:block;}.spyStatus{padding-left:10px;color:rgb(128,128,128);}.spyTime{margin-left:4px;margin-right:4px;color:rgb(128,128,128);}.spyIcon{margin-right:4px;margin-left:4px;width:16px;height:16px;vertical-align:middle;background:transparent no-repeat 0 0;display:none;}.loading .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/loading_16.gif);display:block;}.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon{width:0;margin:0;}.logRow-spy.error .spyHead .spyRow .spyIcon{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon-sm.png);display:block;background-position:2px 2px;}.logRow-spy .spyHead .netInfoBody{display:none;}.logRow-spy.opened .spyHead .netInfoBody{margin-top:10px;display:block;}.logRow-spy.error .spyTitle,.logRow-spy.error .spyStatus,.logRow-spy.error .spyTime{color:red;}.logRow-spy.loading .spyResponseText{font-style:italic;color:#888888;}.caption{font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#444444;}.warning{padding:10px;font-family:Lucida Grande,Tahoma,sans-serif;font-weight:bold;color:#888888;}.panelNode-dom{overflow-x:hidden !important;}.domTable{font-size:1em;width:100%;table-layout:fixed;background:#fff;}.domTableIE{width:auto;}.memberLabelCell{padding:2px 0 2px 0;vertical-align:top;}.memberValueCell{padding:1px 0 1px 5px;display:block;overflow:hidden;}.memberLabel{display:block;cursor:default;-moz-user-select:none;overflow:hidden;padding-left:18px;background-color:#FFFFFF;text-decoration:none;}.memberRow.hasChildren .memberLabelCell .memberLabel:hover{cursor:pointer;color:blue;text-decoration:underline;}.userLabel{color:#000000;font-weight:bold;}.userClassLabel{color:#E90000;font-weight:bold;}.userFunctionLabel{color:#025E2A;font-weight:bold;}.domLabel{color:#000000;}.domFunctionLabel{color:#025E2A;}.ordinalLabel{color:SlateBlue;font-weight:bold;}.scopesRow{padding:2px 18px;background-color:LightYellow;border-bottom:5px solid #BEBEBE;color:#666666;}.scopesLabel{background-color:LightYellow;}.watchEditCell{padding:2px 18px;background-color:LightYellow;border-bottom:1px solid #BEBEBE;color:#666666;}.editor-watchNewRow,.editor-memberRow{font-family:Monaco,monospace !important;}.editor-memberRow{padding:1px 0 !important;}.editor-watchRow{padding-bottom:0 !important;}.watchRow > .memberLabelCell{font-family:Monaco,monospace;padding-top:1px;padding-bottom:1px;}.watchRow > .memberLabelCell > .memberLabel{background-color:transparent;}.watchRow > .memberValueCell{padding-top:2px;padding-bottom:2px;}.watchRow > .memberLabelCell,.watchRow > .memberValueCell{background-color:#F5F5F5;border-bottom:1px solid #BEBEBE;}.watchToolbox{z-index:2147483647;position:absolute;right:0;padding:1px 2px;}#fbConsole{overflow-x:hidden !important;}#fbCSS{font:1em Monaco,monospace;padding:0 7px;}#fbCSSButtons select,#fbScriptButtons select{font:11px Lucida Grande,Tahoma,sans-serif;margin-top:1px;padding-left:3px;background:#fafafa;border:1px inset #fff;width:220px;}.Selector{margin-top:10px}.CSSItem{margin-left:4%}.CSSText{padding-left:20px;}.CSSProperty{color:#005500;}.CSSValue{padding-left:5px; color:#000088;}#fbHTMLStatusBar{display:inline;}.fbToolbarButtons{display:none;}.fbStatusSeparator{display:block;float:left;padding-top:4px;}#fbStatusBarBox{display:none;}#fbToolbarContent{display:block;position:absolute;_position:absolute;top:0;padding-top:4px;height:23px;clip:rect(0,2048px,27px,0);}.fbTabMenuTarget{display:none !important;float:left;width:10px;height:10px;margin-top:6px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTarget.png);}.fbTabMenuTarget:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuTargetHover.png);}.fbShadow{float:left;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadowAlpha.png) no-repeat bottom right !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/shadow2.gif) no-repeat bottom right;margin:10px 0 0 10px !important;margin:10px 0 0 5px;}.fbShadowContent{display:block;position:relative;background-color:#fff;border:1px solid #a9a9a9;top:-6px;left:-6px;}.fbMenu{display:none;position:absolute;font-size:11px;z-index:2147483647;}.fbMenuContent{padding:2px;}.fbMenuSeparator{display:block;position:relative;padding:1px 18px 0;text-decoration:none;color:#000;cursor:default;background:#ACA899;margin:4px 0;}.fbMenuOption{display:block;position:relative;padding:2px 18px;text-decoration:none;color:#000;cursor:default;}.fbMenuOption:hover{color:#fff;background:#316AC5;}.fbMenuGroup{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right 0;}.fbMenuGroup:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuGroupSelected{color:#fff;background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuPin.png) no-repeat right -17px;}.fbMenuChecked{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px 0;}.fbMenuChecked:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuCheckbox.png) no-repeat 4px -17px;}.fbMenuRadioSelected{background:transparent url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px 0;}.fbMenuRadioSelected:hover{background:#316AC5 url(http://getfirebug.com/releases/lite/alpha/skin/xp/tabMenuRadio.png) no-repeat 4px -17px;}.fbMenuShortcut{padding-right:85px;}.fbMenuShortcutKey{position:absolute;right:0;top:2px;width:77px;}#fbFirebugMenu{top:22px;left:0;}.fbMenuDisabled{color:#ACA899 !important;}#fbFirebugSettingsMenu{left:245px;top:99px;}#fbConsoleMenu{top:42px;left:48px;}.fbIconButton{display:block;}.fbIconButton{display:block;}.fbIconButton{display:block;float:left;height:20px;width:20px;color:#000;margin-right:2px;text-decoration:none;cursor:default;}.fbIconButton:hover{position:relative;top:-1px;left:-1px;margin-right:0;_margin-right:1px;color:#333;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbIconPressed{position:relative;margin-right:0;_margin-right:1px;top:0 !important;left:0 !important;height:19px;color:#333 !important;border:1px solid #bbb !important;border-bottom:1px solid #cfcfcf !important;border-right:1px solid #ddd !important;}#fbErrorPopup{position:absolute;right:0;bottom:0;height:19px;width:75px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;z-index:999;}#fbErrorPopupContent{position:absolute;right:0;top:1px;height:18px;width:75px;_width:74px;border-left:1px solid #aca899;}#fbErrorIndicator{position:absolute;top:2px;right:5px;}.fbBtnInspectActive{background:#aaa;color:#fff !important;}.fbBody{margin:0;padding:0;overflow:hidden;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;background:#fff;}.clear{clear:both;}#fbMiniChrome{display:none;right:0;height:27px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;margin-left:1px;}#fbMiniContent{display:block;position:relative;left:-1px;right:0;top:1px;height:25px;border-left:1px solid #aca899;}#fbToolbarSearch{float:right;border:1px solid #ccc;margin:0 5px 0 0;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.png) no-repeat 4px 2px !important;background:#fff url(http://getfirebug.com/releases/lite/alpha/skin/xp/search.gif) no-repeat 4px 2px;padding-left:20px;font-size:11px;}#fbToolbarErrors{float:right;margin:1px 4px 0 0;font-size:11px;}#fbLeftToolbarErrors{float:left;margin:7px 0px 0 5px;font-size:11px;}.fbErrors{padding-left:20px;height:14px;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) no-repeat !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif) no-repeat;color:#f00;font-weight:bold;}#fbMiniErrors{display:inline;display:none;float:right;margin:5px 2px 0 5px;}#fbMiniIcon{float:right;margin:3px 4px 0;height:20px;width:20px;float:right;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;cursor:pointer;}#fbChrome{font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;position:absolute;top:0;left:0;height:100%;width:100%;border-collapse:collapse;background:#fff;overflow:hidden;}#fbTop{height:49px;}#fbToolbar{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;height:27px;font-size:11px;}#fbPanelBarBox{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;height:22px;}#fbContent{height:100%;vertical-align:top;}#fbBottom{height:18px;background:#fff;}#fbToolbarIcon{float:left;padding:0 5px 0;}#fbToolbarIcon a{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -135px;}#fbToolbarButtons{padding:0 2px 0 5px;}#fbToolbarButtons{padding:0 2px 0 5px;}.fbButton{text-decoration:none;display:block;float:left;color:#000;padding:4px 6px 4px 7px;cursor:default;}.fbButton:hover{color:#333;background:#f5f5ef url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBg.png);padding:3px 5px 3px 6px;border:1px solid #fff;border-bottom:1px solid #bbb;border-right:1px solid #bbb;}.fbBtnPressed{background:#e3e3db url(http://getfirebug.com/releases/lite/alpha/skin/xp/buttonBgHover.png) !important;padding:3px 4px 2px 6px !important;margin:1px 0 0 1px !important;border:1px solid #ACA899 !important;border-color:#ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;}#fbStatusBarBox{top:4px;cursor:default;}.fbToolbarSeparator{overflow:hidden;border:1px solid;border-color:transparent #fff transparent #777;_border-color:#eee #fff #eee #777;height:7px;margin:6px 3px;float:left;}.fbBtnSelected{font-weight:bold;}.fbStatusBar{color:#aca899;}.fbStatusBar a{text-decoration:none;color:black;}.fbStatusBar a:hover{color:blue;cursor:pointer;}#fbWindowButtons{position:absolute;white-space:nowrap;right:0;top:0;height:17px;width:50px;padding:5px 0 5px 5px;z-index:6;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 0;}#fbPanelBar1{width:1024px; z-index:8;left:0;white-space:nowrap;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;left:4px;}#fbPanelBar2Box{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #dbd9c9 0 -27px;position:absolute;height:22px;width:300px; z-index:9;right:0;}#fbPanelBar2{position:absolute;width:290px; height:22px;padding-left:4px;}.fbPanel{display:none;}#fbPanelBox1,#fbPanelBox2{max-height:inherit;height:100%;font-size:1em;}#fbPanelBox2{background:#fff;}#fbPanelBox2{width:300px;background:#fff;}#fbPanel2{margin-left:6px;background:#fff;}#fbLargeCommandLine{display:none;position:absolute;z-index:9;top:27px;right:0;width:294px;height:201px;border-width:0;margin:0;padding:2px 0 0 2px;resize:none;outline:none;font-size:11px;overflow:auto;border-top:1px solid #B9B7AF;_right:-1px;_border-left:1px solid #fff;}#fbLargeCommandButtons{display:none;background:#ECE9D8;bottom:0;right:0;width:294px;height:21px;padding-top:1px;position:absolute;border-top:1px solid #ACA899;z-index:9;}#fbSmallCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/down.png) no-repeat;position:absolute;right:2px;bottom:3px;z-index:99;}#fbSmallCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/downHover.png) no-repeat;}.hide{overflow:hidden !important;position:fixed !important;display:none !important;visibility:hidden !important;}#fbCommand{height:18px;}#fbCommandBox{position:fixed;_position:absolute;width:100%;height:18px;bottom:0;overflow:hidden;z-index:9;background:#fff;border:0;border-top:1px solid #ccc;}#fbCommandIcon{position:absolute;color:#00f;top:2px;left:6px;display:inline;font:11px Monaco,monospace;z-index:10;}#fbCommandLine{position:absolute;width:100%;top:0;left:0;border:0;margin:0;padding:2px 0 2px 32px;font:11px Monaco,monospace;z-index:9;outline:none;}#fbLargeCommandLineIcon{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/up.png) no-repeat;position:absolute;right:1px;bottom:1px;z-index:10;}#fbLargeCommandLineIcon:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/upHover.png) no-repeat;}div.fbFitHeight{overflow:auto;position:relative;}.fbSmallButton{overflow:hidden;width:16px;height:16px;display:block;text-decoration:none;cursor:default;}#fbWindowButtons .fbSmallButton{float:right;margin-right:4px;}#fbWindow_btClose{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -119px;}#fbWindow_btClose:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -119px;}#fbWindow_btDetach{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -32px -119px;}#fbWindow_btDetach:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -48px -119px;}.fbTab{text-decoration:none;display:none;float:left;width:auto;float:left;cursor:default;font-family:Lucida Grande,Tahoma,sans-serif;font-size:11px;font-weight:bold;height:22px;color:#565656;}.fbPanelBar span{float:left;}.fbPanelBar .fbTabL,.fbPanelBar .fbTabR{height:22px;width:8px;}.fbPanelBar .fbTabText{padding:4px 1px 0;}a.fbTab:hover{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -73px;}a.fbTab:hover .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -16px -96px;}a.fbTab:hover .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -24px -96px;}.fbSelectedTab{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) #f1f2ee 0 -50px !important;color:#000;}.fbSelectedTab .fbTabL{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) 0 -96px !important;}.fbSelectedTab .fbTabR{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/sprite.png) -8px -96px !important;}#fbHSplitter{position:fixed;_position:absolute;left:0;top:0;width:100%;height:5px;overflow:hidden;cursor:n-resize !important;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/pixel_transparent.gif);z-index:9;}#fbHSplitter.fbOnMovingHSplitter{height:100%;z-index:100;}.fbVSplitter{background:#ece9d8;color:#000;border:1px solid #716f64;border-width:0 1px;border-left-color:#aca899;width:4px;cursor:e-resize;overflow:hidden;right:294px;text-decoration:none;z-index:10;position:absolute;height:100%;top:27px;}div.lineNo{font:1em Monaco,monospace;position:absolute;top:0;left:0;margin:0;padding:0 5px 0 20px;background:#eee;color:#888;border-right:1px solid #ccc;text-align:right;}.sourceBox{position:absolute;}.sourceCode{font:1em Monaco,monospace;overflow:hidden;white-space:pre;display:inline;}.nodeControl{margin-top:3px;margin-left:-14px;float:left;width:9px;height:9px;overflow:hidden;cursor:default;background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_open.gif);_float:none;_display:inline;_position:absolute;}div.nodeMaximized{background:url(http://getfirebug.com/releases/lite/alpha/skin/xp/tree_close.gif);}div.objectBox-element{padding:1px 3px;}.objectBox-selector{cursor:default;}.selectedElement{background:highlight;color:#fff !important;}.selectedElement span{color:#fff !important;}* html .selectedElement{position:relative;}@media screen and (-webkit-min-device-pixel-ratio:0){.selectedElement{background:#316AC5;color:#fff !important;}}.logRow *{font-size:1em;}.logRow{position:relative;border-bottom:1px solid #D7D7D7;padding:2px 4px 1px 6px;zbackground-color:#FFFFFF;}.logRow-command{font-family:Monaco,monospace;color:blue;}.objectBox-string,.objectBox-text,.objectBox-number,.objectBox-function,.objectLink-element,.objectLink-textNode,.objectLink-function,.objectBox-stackTrace,.objectLink-profile{font-family:Monaco,monospace;}.objectBox-null{padding:0 2px;border:1px solid #666666;background-color:#888888;color:#FFFFFF;}.objectBox-string{color:red;}.objectBox-number{color:#000088;}.objectBox-function{color:DarkGreen;}.objectBox-object{color:DarkGreen;font-weight:bold;font-family:Lucida Grande,sans-serif;}.objectBox-array{color:#000;}.logRow-info,.logRow-error,.logRow-warning{background:#fff no-repeat 2px 2px;padding-left:20px;padding-bottom:3px;}.logRow-info{background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/infoIcon.gif);}.logRow-warning{background-color:cyan;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/warningIcon.gif);}.logRow-error{background-color:LightYellow;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.png) !important;background-image:url(http://getfirebug.com/releases/lite/alpha/skin/xp/errorIcon.gif);color:#f00;}.errorMessage{vertical-align:top;color:#f00;}.objectBox-sourceLink{position:absolute;right:4px;top:2px;padding-left:8px;font-family:Lucida Grande,sans-serif;font-weight:bold;color:#0000FF;}.logRow-group{background:#EEEEEE;border-bottom:none;}.logGroup{background:#EEEEEE;}.logGroupBox{margin-left:24px;border-top:1px solid #D7D7D7;border-left:1px solid #D7D7D7;}.selectorTag,.selectorId,.selectorClass{font-family:Monaco,monospace;font-weight:normal;}.selectorTag{color:#0000FF;}.selectorId{color:DarkBlue;}.selectorClass{color:red;}.objectBox-element{font-family:Monaco,monospace;color:#000088;}.nodeChildren{padding-left:26px;}.nodeTag{color:blue;cursor:pointer;}.nodeValue{color:#FF0000;font-weight:normal;}.nodeText,.nodeComment{margin:0 2px;vertical-align:top;}.nodeText{color:#333333;font-family:Monaco,monospace;}.nodeComment{color:DarkGreen;}.nodeHidden,.nodeHidden *{color:#888888;}.nodeHidden .nodeTag{color:#5F82D9;}.nodeHidden .nodeValue{color:#D86060;}.selectedElement .nodeHidden,.selectedElement .nodeHidden *{color:SkyBlue !important;}.log-object{}.property{position:relative;clear:both;height:15px;}.propertyNameCell{vertical-align:top;float:left;width:28%;position:absolute;left:0;z-index:0;}.propertyValueCell{float:right;width:68%;background:#fff;position:absolute;padding-left:5px;display:table-cell;right:0;z-index:1;}.propertyName{font-weight:bold;}.FirebugPopup{height:100% !important;}.FirebugPopup #fbWindowButtons{display:none !important;}.FirebugPopup #fbHSplitter{display:none !important;}'
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/chrome.js b/tags/firebug1.3a5/content/firebug/chrome.js
                                  deleted file mode 100644
                                  index 0d450e2a..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/chrome.js
                                  +++ /dev/null
                                  @@ -1,2047 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Window Options
                                  -
                                  -var WindowDefaultOptions = 
                                  -    {
                                  -        type: "frame",
                                  -        id: "FirebugUI",
                                  -        height: 250
                                  -    },
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Instantiated objects
                                  -
                                  -    commandLine,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Interface Elements Cache
                                  -
                                  -    fbTop,
                                  -    fbContent,
                                  -    fbContentStyle,
                                  -    fbBottom,
                                  -    fbBtnInspect,
                                  -
                                  -    fbToolbar,
                                  -
                                  -    fbPanelBox1,
                                  -    fbPanelBox1Style,
                                  -    fbPanelBox2,
                                  -    fbPanelBox2Style,
                                  -    fbPanelBar2Box,
                                  -    fbPanelBar2BoxStyle,
                                  -
                                  -    fbHSplitter,
                                  -    fbVSplitter,
                                  -    fbVSplitterStyle,
                                  -
                                  -    fbPanel1,
                                  -    fbPanel1Style,
                                  -    fbPanel2,
                                  -    fbPanel2Style,
                                  -
                                  -    fbConsole,
                                  -    fbConsoleStyle,
                                  -    fbHTML,
                                  -
                                  -    fbCommandLine,
                                  -    fbLargeCommandLine, 
                                  -    fbLargeCommandButtons,
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Cached size values
                                  -
                                  -    topHeight,
                                  -    topPartialHeight,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    chromeRedrawSkipRate = isIE ? 75 : isOpera ? 80 : 75,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastSelectedPanelName,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLineState = 0, 
                                  -    lastFocusedPanelName, 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastHSplitterMouseMove = 0,
                                  -    onHSplitterMouseMoveBuffer = null,
                                  -    onHSplitterMouseMoveTimer = null,
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    lastVSplitterMouseMove = 0;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FirebugChrome
                                  -
                                  -FBL.FirebugChrome = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    isOpen: false,
                                  -    height: 250,
                                  -    sidePanelWidth: 300,
                                  -    
                                  -    selectedPanelName: "Console",
                                  -    selectedHTMLElementId: null,
                                  -    
                                  -    chromeMap: {},
                                  -    
                                  -    htmlSelectionStack: [],
                                  -    consoleMessageQueue: [],
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.create", "creating chrome window");
                                  -        
                                  -        createChromeWindow();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FirebugChrome.initialize", "initializing chrome window");
                                  -        
                                  -        if (Env.chrome.type == "frame" || Env.chrome.type == "div")
                                  -            ChromeMini.create(Env.chrome);
                                  -        
                                  -        var chrome = Firebug.chrome = new Chrome(Env.chrome);
                                  -        FirebugChrome.chromeMap[chrome.type] = chrome;
                                  -        
                                  -        addGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        if (Env.Options.enablePersistent && chrome.type == "popup")
                                  -        {
                                  -            // TODO: xxxpedro persist - revise chrome synchronization when in persistent mode
                                  -            var frame = FirebugChrome.chromeMap.frame;
                                  -            if (frame)
                                  -                frame.close();
                                  -            
                                  -            //chrome.reattach(frame, chrome);
                                  -            //TODO: xxxpedro persist synchronize?
                                  -            chrome.initialize();
                                  -        }
                                  -    },
                                  -    
                                  -    clone: function(FBChrome)
                                  -    {
                                  -        for (var name in FBChrome)
                                  -        {
                                  -            var prop = FBChrome[name];
                                  -            if (FBChrome.hasOwnProperty(name) && !isFunction(prop))
                                  -            {
                                  -                this[name] = prop;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Window Creation
                                  -
                                  -var createChromeWindow = function(options)
                                  -{
                                  -    options = extend(WindowDefaultOptions, options || {});
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Locals
                                  -    
                                  -    var chrome = {},
                                  -        
                                  -        context = options.context || Env.browser,
                                  -    
                                  -        type = chrome.type = Env.Options.enablePersistent ? 
                                  -                "popup" : 
                                  -                options.type,
                                  -        
                                  -        isChromeFrame = type == "frame",
                                  -        
                                  -        useLocalSkin = Env.useLocalSkin,
                                  -        
                                  -        url = useLocalSkin ? 
                                  -                Env.Location.skin : 
                                  -                "about:blank",
                                  -        
                                  -        // document.body not available in XML+XSL documents in Firefox
                                  -        body = context.document.getElementsByTagName("body")[0],
                                  -                
                                  -        formatNode = function(node)
                                  -        {
                                  -            node.firebugIgnore = true;
                                  -            node.style.border = "0";
                                  -            node.style.visibility = "hidden";
                                  -            node.style.zIndex = "2147483647"; // MAX z-index = 2147483647
                                  -            node.style.position = noFixedPosition ? "absolute" : "fixed";
                                  -            node.style.width = "100%"; // "102%"; IE auto margin bug
                                  -            node.style.left = "0";
                                  -            node.style.bottom = noFixedPosition ? "-1px" : "0";
                                  -            node.style.height = options.height + "px";
                                  -            
                                  -            // avoid flickering during chrome rendering
                                  -            if (isFirefox)
                                  -                node.style.display = "none";
                                  -        },
                                  -        
                                  -        createChromeDiv = function()
                                  -        {
                                  -            Firebug.Console.warn("Firebug Lite GUI is working in 'windowless mode'. It may behave slower and receive interferences from the page in which it is installed.");
                                  -        
                                  -            var node = chrome.node = createGlobalElement("div"),
                                  -                style = createGlobalElement("style"),
                                  -                
                                  -                css = FirebugChrome.injected.CSS
                                  -                        /*
                                  -                        .replace(/;/g, " !important;")
                                  -                        .replace(/!important\s!important/g, "!important")
                                  -                        .replace(/display\s*:\s*(\w+)\s*!important;/g, "display:$1;")*/,
                                  -                
                                  -                        // reset some styles to minimize interference from the main page's style
                                  -                rules = ".fbBody *{margin:0;padding:0;font-size:11px;line-height:13px;color:inherit;}" +
                                  -                        // load the chrome styles
                                  -                        css +
                                  -                        // adjust some remaining styles
                                  -                        ".fbBody #fbHSplitter{position:absolute !important;} .fbBody #fbHTML span{line-height:14px;} .fbBody .lineNo div{line-height:inherit !important;}";
                                  -            /*
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div) 
                                  -                rules += ".fbBody table.fbChrome{position: static !important;}";
                                  -            }/**/
                                  -            
                                  -            style.type = "text/css";
                                  -            
                                  -            if (style.styleSheet)
                                  -                style.styleSheet.cssText = rules;
                                  -            else
                                  -                style.appendChild(context.document.createTextNode(rules));
                                  -            
                                  -            document.getElementsByTagName("head")[0].appendChild(style);
                                  -            
                                  -            node.className = "fbBody";
                                  -            node.style.overflow = "hidden";
                                  -            node.innerHTML = getChromeDivTemplate();
                                  -            
                                  -            if (isIE)
                                  -            {
                                  -                // IE7 CSS bug (FbChrome table bigger than its parent div)
                                  -                setTimeout(function(){
                                  -                    node.firstChild.style.height = "1px";
                                  -                    node.firstChild.style.position = "static";
                                  -                },0);
                                  -                /**/
                                  -            }
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            chrome.window = window;
                                  -            chrome.document = document;
                                  -            onChromeLoad(chrome);            
                                  -        };
                                  -    
                                  -    //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    try
                                  -    {
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "div" (windowless mode)
                                  -        if (type == "div")
                                  -        {
                                  -            createChromeDiv();
                                  -            return;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // cretate the Chrome as an "iframe"
                                  -        else if (isChromeFrame)
                                  -        {
                                  -            // Create the Chrome Frame
                                  -            var node = chrome.node = createGlobalElement("iframe");
                                  -            node.setAttribute("src", url);
                                  -            node.setAttribute("frameBorder", "0");
                                  -            
                                  -            formatNode(node);
                                  -            
                                  -            body.appendChild(node);
                                  -            
                                  -            // must set the id after appending to the document, otherwise will cause an
                                  -            // strange error in IE, making the iframe load the page in which the bookmarlet
                                  -            // was created (like getfirebug.com), before loading the injected UI HTML,
                                  -            // generating an "Access Denied" error.
                                  -            node.id = options.id;
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the Chrome as a "popup"
                                  -        else
                                  -        {
                                  -            var height = FirebugChrome.height || options.height,
                                  -            
                                  -                options = [
                                  -                    "true,top=",
                                  -                    Math.max(screen.availHeight - height - 61 /* Google Chrome bug */, 0),
                                  -                    ",left=0,height=",
                                  -                    height,
                                  -                    ",width=",
                                  -                    screen.availWidth-10, // Opera opens popup in a new tab if it's too big!
                                  -                    ",resizable"          
                                  -                ].join(""),
                                  -            
                                  -                node = chrome.node = context.window.open(
                                  -                    url, 
                                  -                    "popup", 
                                  -                    options
                                  -                );
                                  -            
                                  -            if (node)
                                  -            {
                                  -                try
                                  -                {
                                  -                    node.focus();
                                  -                }
                                  -                catch(E)
                                  -                {
                                  -                    alert("Firebug Error: Firebug popup was blocked.");
                                  -                    return;
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                alert("Firebug Error: Firebug popup was blocked.");
                                  -                return;
                                  -            }
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Inject the interface HTML if it is not using the local skin
                                  -        
                                  -        if (!useLocalSkin)
                                  -        {
                                  -            var tpl = getChromeTemplate(!isChromeFrame),
                                  -                doc = isChromeFrame ? node.contentWindow.document : node.document;
                                  -            
                                  -            doc.write(tpl);
                                  -            doc.close();
                                  -        }
                                  -        
                                  -        //* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Wait the Window to be loaded
                                  -        
                                  -        var win,
                                  -        
                                  -            waitDelay = useLocalSkin ? isChromeFrame ? 200 : 300 : 100,
                                  -            
                                  -            waitForWindow = function()
                                  -            {
                                  -                if ( // Frame loaded... OR
                                  -                     isChromeFrame && (win=node.contentWindow) &&
                                  -                     node.contentWindow.document.getElementById("fbCommandLine") ||
                                  -                     
                                  -                     // Popup loaded
                                  -                     !isChromeFrame && (win=node.window) && node.document &&
                                  -                     node.document.getElementById("fbCommandLine") )
                                  -                {
                                  -                    chrome.window = win.window;
                                  -                    chrome.document = win.document;
                                  -                    
                                  -                    // Prevent getting the wrong chrome height in FF when opening a popup 
                                  -                    setTimeout(function(){
                                  -                        onChromeLoad(chrome);
                                  -                    },0);
                                  -                }
                                  -                else
                                  -                    setTimeout(waitForWindow, waitDelay);
                                  -            };
                                  -        
                                  -        waitForWindow();
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        var msg = e.message || e;
                                  -        
                                  -        if (/access/i.test(msg))
                                  -        {
                                  -            // Firebug Lite could not create a window for its Graphical User Interface due to
                                  -            // a access restriction. This happens in some pages, when loading via bookmarlet.
                                  -            // In such cases, the only way is to load the GUI in a "windowless mode".
                                  -            
                                  -            if (isChromeFrame)
                                  -                body.removeChild(node);
                                  -            else if(type == "popup")
                                  -                node.close();
                                  -            
                                  -            // Load the GUI in a "windowless mode"
                                  -            createChromeDiv();
                                  -        }
                                  -        else
                                  -        {
                                  -            alert("Firebug Error: Firebug GUI could not be created.");
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var onChromeLoad = function onChromeLoad(chrome)
                                  -{
                                  -    Env.chrome = chrome;
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Chrome onChromeLoad", "chrome window loaded");
                                  -    
                                  -    if (Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make better chrome synchronization when in persistent mode
                                  -        Env.FirebugChrome = FirebugChrome;
                                  -        
                                  -        chrome.window.Firebug = chrome.window.Firebug || {};
                                  -        chrome.window.Firebug.SharedEnv = Env;
                                  -        
                                  -        if (Env.isDevelopmentMode)
                                  -        {
                                  -            Env.browser.window.FBDev.loadChromeApplication(chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            var doc = chrome.document;
                                  -            var script = doc.createElement("script");
                                  -            script.src = Env.Location.app + "#remote,persist";
                                  -            doc.getElementsByTagName("head")[0].appendChild(script);
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (chrome.type == "frame" || chrome.type == "div")
                                  -        {
                                  -            // initialize the chrome application
                                  -            setTimeout(function(){
                                  -                FBL.Firebug.initialize();
                                  -            },0);
                                  -        }
                                  -        else if (chrome.type == "popup")
                                  -        {
                                  -            var oldChrome = FirebugChrome.chromeMap.frame;
                                  -            
                                  -            var newChrome = new Chrome(chrome);
                                  -        
                                  -            // TODO: xxxpedro sync detach reattach attach
                                  -            dispatch(newChrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -            if (oldChrome)
                                  -                oldChrome.close();
                                  -            
                                  -            newChrome.reattach(oldChrome, newChrome);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var getChromeDivTemplate = function()
                                  -{
                                  -    return FirebugChrome.injected.HTML;
                                  -};
                                  -
                                  -var getChromeTemplate = function(isPopup)
                                  -{
                                  -    var tpl = FirebugChrome.injected; 
                                  -    var r = [], i = -1;
                                  -    
                                  -    r[++i] = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">';
                                  -    r[++i] = '<html><head><title>';
                                  -    r[++i] = Firebug.version;
                                  -    
                                  -    /*
                                  -    r[++i] = '</title><link href="';
                                  -    r[++i] = Env.Location.skinDir + 'firebug.css';
                                  -    r[++i] = '" rel="stylesheet" type="text/css" />';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</title><style>html,body{margin:0;padding:0;overflow:hidden;}';
                                  -    r[++i] = tpl.CSS;
                                  -    r[++i] = '</style>';
                                  -    /**/
                                  -    
                                  -    r[++i] = '</head><body class="fbBody' + (isPopup ? ' FirebugPopup' : '') + '">';
                                  -    r[++i] = tpl.HTML;
                                  -    r[++i] = '</body></html>';
                                  -    
                                  -    return r.join("");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Chrome Class
                                  -    
                                  -var Chrome = function Chrome(chrome)
                                  -{
                                  -    var type = chrome.type;
                                  -    var Base = type == "frame" || type == "div" ? ChromeFrameBase : ChromePopupBase; 
                                  -    
                                  -    append(this, Base);   // inherit chrome class properties (ChromeFrameBase or ChromePopupBase)
                                  -    append(this, chrome); // inherit chrome window properties
                                  -    
                                  -    FirebugChrome.chromeMap[type] = this;
                                  -    Firebug.chrome = this;
                                  -    Env.chrome = chrome.window;
                                  -    
                                  -    this.commandLineVisible = false;
                                  -    this.sidePanelVisible = false;
                                  -    
                                  -    this.create();
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeBase
                                  -
                                  -var ChromeBase = {};
                                  -append(ChromeBase, Controller); 
                                  -append(ChromeBase, PanelBar);
                                  -append(ChromeBase, Context.prototype);
                                  -append(ChromeBase,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited properties
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from createChrome function
                                  -    
                                  -    node: null,
                                  -    type: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // inherited from Context.prototype
                                  -    
                                  -    document: null,
                                  -    window: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // value properties
                                  -    
                                  -    sidePanelVisible: false,
                                  -    commandLineVisible: false,
                                  -    largeCommandLineVisible: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // object properties
                                  -    
                                  -    inspectButton: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function()
                                  -    {
                                  -        PanelBar.create.call(this);
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            this.inspectButton = new Button({
                                  -                type: "toggle",
                                  -                element: $("fbChrome_btInspect"),
                                  -                owner: Firebug.Inspector,
                                  -                
                                  -                onPress: Firebug.Inspector.startInspecting,
                                  -                onUnpress: Firebug.Inspector.stopInspecting          
                                  -            });
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.destroy();
                                  -        
                                  -        PanelBar.destroy.call(this);
                                  -        
                                  -        this.shutdown();
                                  -    },
                                  -    
                                  -    testMenu: function()
                                  -    {
                                  -        var firebugMenu = new Menu(
                                  -        {
                                  -            id: "fbFirebugMenu",
                                  -            
                                  -            items:
                                  -            [
                                  -                {
                                  -                    label: "Open Firebug",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Shift+F12" : "F12",
                                  -                    checked: true,
                                  -                    command: "toggleChrome"
                                  -                },
                                  -                {
                                  -                    label: "Open Firebug in New Window",
                                  -                    type: "shortcut",
                                  -                    key: isFirefox ? "Ctrl+Shift+F12" : "Ctrl+F12",
                                  -                    command: "openPopup"
                                  -                },
                                  -                {
                                  -                    label: "Inspect Element",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+C",
                                  -                    command: "toggleInspect"
                                  -                },
                                  -                {
                                  -                    label: "Command Line",
                                  -                    type: "shortcut",
                                  -                    key: "Ctrl+Shift+L",
                                  -                    command: "focusCommandLine"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Options",
                                  -                    type: "group",
                                  -                    child: "fbFirebugOptionsMenu"
                                  -                },
                                  -                "-",
                                  -                {
                                  -                    label: "Firebug Lite Website...",
                                  -                    command: "visitWebsite"
                                  -                },
                                  -                {
                                  -                    label: "Discussion Group...",
                                  -                    command: "visitDiscussionGroup"
                                  -                },
                                  -                {
                                  -                    label: "Issue Tracker...",
                                  -                    command: "visitIssueTracker"
                                  -                }
                                  -            ],
                                  -            
                                  -            onHide: function()
                                  -            {
                                  -                iconButton.restore();
                                  -            },
                                  -            
                                  -            toggleChrome: function()
                                  -            {
                                  -                Firebug.chrome.toggle();
                                  -            },
                                  -            
                                  -            openPopup: function()
                                  -            {
                                  -                Firebug.chrome.toggle(true, true);
                                  -            },
                                  -            
                                  -            toggleInspect: function()
                                  -            {
                                  -                Firebug.Inspector.toggleInspect();
                                  -            },
                                  -            
                                  -            focusCommandLine: function()
                                  -            {
                                  -                Firebug.chrome.focusCommandLine();
                                  -            },
                                  -            
                                  -            visitWebsite: function()
                                  -            {
                                  -                this.visit("http://getfirebug.com/lite.html");
                                  -            },
                                  -            
                                  -            visitDiscussionGroup: function()
                                  -            {
                                  -                this.visit("http://groups.google.com/group/firebug");
                                  -            },
                                  -            
                                  -            visitIssueTracker: function()
                                  -            {
                                  -                this.visit("http://code.google.com/p/fbug/issues/list");
                                  -            },
                                  -            
                                  -            visit: function(url)
                                  -            {
                                  -                window.open(url);
                                  -            }
                                  -            
                                  -        });
                                  -        
                                  -        var firebugOptionsMenu =
                                  -        {
                                  -            id: "fbFirebugOptionsMenu",
                                  -            
                                  -            getItems: function()
                                  -            {
                                  -                var cookiesDisabled = !Firebug.saveCookies;
                                  -                
                                  -                return [
                                  -                    {
                                  -                        label: "Save Options in Cookies",
                                  -                        type: "checkbox",
                                  -                        value: "saveCookies",
                                  -                        checked: Firebug.saveCookies,
                                  -                        command: "saveOptions"
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Start Opened",
                                  -                        type: "checkbox",
                                  -                        value: "startOpened",
                                  -                        checked: Firebug.startOpened,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Start in New Window",
                                  -                        type: "checkbox",
                                  -                        value: "startInNewWindow",
                                  -                        checked: Firebug.startInNewWindow,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Show Icon When Hidden",
                                  -                        type: "checkbox",
                                  -                        value: "showIconWhenHidden",
                                  -                        checked: Firebug.showIconWhenHidden,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Override Console Object",
                                  -                        type: "checkbox",
                                  -                        value: "overrideConsole",
                                  -                        checked: Firebug.overrideConsole,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Ignore Firebug Elements",
                                  -                        type: "checkbox",
                                  -                        value: "ignoreFirebugElements",
                                  -                        checked: Firebug.ignoreFirebugElements,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Disable When Firebug Active",
                                  -                        type: "checkbox",
                                  -                        value: "disableWhenFirebugActive",
                                  -                        checked: Firebug.disableWhenFirebugActive,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Enable Trace Mode",
                                  -                        type: "checkbox",
                                  -                        value: "enableTrace",
                                  -                        checked: Firebug.enableTrace,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    {
                                  -                        label: "Enable Persistent Mode (experimental)",
                                  -                        type: "checkbox",
                                  -                        value: "enablePersistent",
                                  -                        checked: Firebug.enablePersistent,
                                  -                        disabled: cookiesDisabled
                                  -                    },
                                  -                    "-",
                                  -                    {
                                  -                        label: "Restore Options",
                                  -                        command: "restorePrefs",
                                  -                        disabled: cookiesDisabled
                                  -                    }
                                  -                ];
                                  -            },
                                  -            
                                  -            onCheck: function(target, value, checked)
                                  -            {
                                  -                Firebug.setPref(value, checked);
                                  -            },           
                                  -            
                                  -            saveOptions: function(target)
                                  -            {
                                  -                var saveEnabled = target.getAttribute("checked");
                                  -                
                                  -                if (!saveEnabled) this.restorePrefs();
                                  -                
                                  -                this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            restorePrefs: function(target)
                                  -            {
                                  -                Firebug.restorePrefs();
                                  -                
                                  -                if(Firebug.saveCookies)
                                  -                    Firebug.savePrefs()
                                  -                else
                                  -                    Firebug.erasePrefs();
                                  -                
                                  -                if (target)
                                  -                    this.updateMenu(target);
                                  -                
                                  -                return false;
                                  -            },
                                  -            
                                  -            updateMenu: function(target)
                                  -            {
                                  -                var options = getElementsByClass(target.parentNode, "fbMenuOption");
                                  -                
                                  -                var firstOption = options[0]; 
                                  -                var enabled = Firebug.saveCookies;
                                  -                if (enabled)
                                  -                    Menu.check(firstOption);
                                  -                else
                                  -                    Menu.uncheck(firstOption);
                                  -                
                                  -                if (enabled)
                                  -                    Menu.check(options[0]);
                                  -                else
                                  -                    Menu.uncheck(options[0]);
                                  -                
                                  -                for (var i = 1, length = options.length; i < length; i++)
                                  -                {
                                  -                    var option = options[i];
                                  -                    
                                  -                    var value = option.getAttribute("value");
                                  -                    var pref = Firebug[value];
                                  -                    
                                  -                    if (pref)
                                  -                        Menu.check(option);
                                  -                    else
                                  -                        Menu.uncheck(option);
                                  -                    
                                  -                    if (enabled)
                                  -                        Menu.enable(option);
                                  -                    else
                                  -                        Menu.disable(option);
                                  -                }
                                  -            }
                                  -        };
                                  -        
                                  -        Menu.register(firebugOptionsMenu);
                                  -        
                                  -        var menu = firebugMenu;
                                  -        
                                  -        var testMenuClick = function(event)
                                  -        {
                                  -            //console.log("testMenuClick");
                                  -            cancelEvent(event, true);
                                  -            
                                  -            var target = event.target || event.srcElement;
                                  -            
                                  -            if (menu.isVisible)
                                  -                menu.hide();
                                  -            else
                                  -            {
                                  -                var offsetLeft = isIE6 ? 1 : -4,  // IE6 problem with fixed position
                                  -                    
                                  -                    chrome = Firebug.chrome,
                                  -                    
                                  -                    box = chrome.getElementBox(target),
                                  -                    
                                  -                    offset = chrome.type == "div" ?
                                  -                            chrome.getElementPosition(chrome.node) :
                                  -                            {top: 0, left: 0};
                                  -                
                                  -                menu.show(
                                  -                            box.left + offsetLeft - offset.left, 
                                  -                            box.top + box.height -5 - offset.top
                                  -                        );
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -        
                                  -        var iconButton = new IconButton({
                                  -            type: "toggle",
                                  -            element: $("fbFirebugButton"),
                                  -            
                                  -            onClick: testMenuClick
                                  -        });
                                  -        
                                  -        iconButton.initialize();
                                  -        
                                  -        //addEvent($("fbToolbarIcon"), "click", testMenuClick);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (Firebug.Console)
                                  -            Firebug.Console.flush();
                                  -        
                                  -        if (Firebug.Trace)
                                  -            FBTrace.flush(Firebug.Trace);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.chrome.initialize", "initializing chrome application");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize inherited classes
                                  -        Controller.initialize.call(this);
                                  -        PanelBar.initialize.call(this);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // create the interface elements cache
                                  -        
                                  -        fbTop = $("fbTop");
                                  -        fbContent = $("fbContent");
                                  -        fbContentStyle = fbContent.style;
                                  -        fbBottom = $("fbBottom");
                                  -        fbBtnInspect = $("fbBtnInspect");
                                  -        
                                  -        fbToolbar = $("fbToolbar");
                                  -      
                                  -        fbPanelBox1 = $("fbPanelBox1");
                                  -        fbPanelBox1Style = fbPanelBox1.style;
                                  -        fbPanelBox2 = $("fbPanelBox2");
                                  -        fbPanelBox2Style = fbPanelBox2.style;
                                  -        fbPanelBar2Box = $("fbPanelBar2Box");
                                  -        fbPanelBar2BoxStyle = fbPanelBar2Box.style;
                                  -      
                                  -        fbHSplitter = $("fbHSplitter");
                                  -        fbVSplitter = $("fbVSplitter");
                                  -        fbVSplitterStyle = fbVSplitter.style;
                                  -      
                                  -        fbPanel1 = $("fbPanel1");
                                  -        fbPanel1Style = fbPanel1.style;
                                  -        fbPanel2 = $("fbPanel2");
                                  -        fbPanel2Style = fbPanel2.style;
                                  -      
                                  -        fbConsole = $("fbConsole");
                                  -        fbConsoleStyle = fbConsole.style;
                                  -        fbHTML = $("fbHTML");
                                  -      
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        topHeight = fbTop.offsetHeight;
                                  -        topPartialHeight = fbToolbar.offsetHeight;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        disableTextSelection($("fbToolbar"));
                                  -        disableTextSelection($("fbPanelBarBox"));
                                  -        disableTextSelection($("fbPanelBar1"));
                                  -        disableTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Add the "javascript:void(0)" href attributes used to make the hover effect in IE6
                                  -        if (isIE6 && Firebug.Selector)
                                  -        {
                                  -            // TODO: xxxpedro change to getElementsByClass
                                  -            var as = $$(".fbHover");
                                  -            for (var i=0, a; a=as[i]; i++)
                                  -            {
                                  -                a.setAttribute("href", "javascript:void(0)");
                                  -            }
                                  -        }
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // initialize all panels
                                  -        /*
                                  -        var panelMap = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panelMap[i]; i++)
                                  -        {
                                  -            if (!p.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.initialize();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        this.addController(
                                  -            [$("fbLargeCommandLineIcon"), "click", this.showLargeCommandLine]       
                                  -        );
                                  -        
                                  -        // ************************************************************************************************
                                  -        
                                  -        // Select the first registered panel
                                  -        // TODO: BUG IE7
                                  -        var self = this;
                                  -        setTimeout(function(){
                                  -            self.selectPanel(FirebugChrome.selectedPanelName);
                                  -            
                                  -            if (FirebugChrome.selectedPanelName == "Console" && Firebug.CommandLine)
                                  -                Firebug.chrome.focusCommandLine();
                                  -        },0);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        //this.draw();
                                  -        
                                  -        // menus can be used without domplate
                                  -        if (FBL.domplate)
                                  -            this.testMenu();
                                  -        /**/
                                  -        
                                  -        //test XHR
                                  -        /*
                                  -        setTimeout(function(){
                                  -        
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js"});
                                  -        FBL.Ajax.request({url: "../content/firebug/boot.js.invalid"});
                                  -        
                                  -        },1000);
                                  -        /**/
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        
                                  -        if(Firebug.Inspector)
                                  -            this.inspectButton.shutdown();
                                  -        
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -        // ************************************************************************************************
                                  -
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -        // remove disableTextSelection event handlers
                                  -        restoreTextSelection($("fbToolbar"));
                                  -        restoreTextSelection($("fbPanelBarBox"));
                                  -        restoreTextSelection($("fbPanelBar1"));
                                  -        restoreTextSelection($("fbPanelBar2"));
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Remove the interface elements cache
                                  -        
                                  -        fbTop = null;
                                  -        fbContent = null;
                                  -        fbContentStyle = null;
                                  -        fbBottom = null;
                                  -        fbBtnInspect = null;
                                  -        
                                  -        fbToolbar = null;
                                  -
                                  -        fbPanelBox1 = null;
                                  -        fbPanelBox1Style = null;
                                  -        fbPanelBox2 = null;
                                  -        fbPanelBox2Style = null;
                                  -        fbPanelBar2Box = null;
                                  -        fbPanelBar2BoxStyle = null;
                                  -  
                                  -        fbHSplitter = null;
                                  -        fbVSplitter = null;
                                  -        fbVSplitterStyle = null;
                                  -  
                                  -        fbPanel1 = null;
                                  -        fbPanel1Style = null;
                                  -        fbPanel2 = null;
                                  -  
                                  -        fbConsole = null;
                                  -        fbConsoleStyle = null;
                                  -        fbHTML = null;
                                  -  
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // static values cache
                                  -        
                                  -        topHeight = null;
                                  -        topPartialHeight = null;
                                  -        
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // shutdown inherited classes
                                  -        Controller.shutdown.call(this);
                                  -        PanelBar.shutdown.call(this);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    toggle: function(forceOpen, popup)
                                  -    {
                                  -        if(popup)
                                  -        {
                                  -            this.detach();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (isOpera && Firebug.chrome.type == "popup" && Firebug.chrome.node.closed)
                                  -            {
                                  -                var frame = FirebugChrome.chromeMap.frame;
                                  -                frame.reattach();
                                  -                
                                  -                FirebugChrome.chromeMap.popup = null;
                                  -                
                                  -                frame.open();
                                  -                
                                  -                return;
                                  -            }
                                  -                
                                  -            // If the context is a popup, ignores the toggle process
                                  -            if (Firebug.chrome.type == "popup") return;
                                  -            
                                  -            var shouldOpen = forceOpen || !FirebugChrome.isOpen;
                                  -            
                                  -            if(shouldOpen)
                                  -               this.open();
                                  -            else
                                  -               this.close();
                                  -        }       
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    detach: function()
                                  -    {
                                  -        if(!FirebugChrome.chromeMap.popup)
                                  -        {     
                                  -            createChromeWindow({type: "popup"});
                                  -        }
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.browser.window.Firebug = Firebug;
                                  -        
                                  -        // chrome synchronization
                                  -        var newPanelMap = newChrome.panelMap;
                                  -        var oldPanelMap = oldChrome.panelMap;
                                  -        
                                  -        var panel;
                                  -        for(var name in newPanelMap)
                                  -        {
                                  -            // TODO: xxxpedro innerHTML
                                  -            panel = newPanelMap[name]; 
                                  -            if (panel.options.innerHTMLSync)
                                  -                panel.contentNode.innerHTML = oldPanelMap[name].contentNode.innerHTML;
                                  -        }
                                  -        
                                  -        Firebug.chrome = newChrome;
                                  -        
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        //dispatch(Firebug.chrome.panelMap, "detach", [oldChrome, newChrome]);
                                  -        
                                  -        if (newChrome.type == "popup")
                                  -        {
                                  -            newChrome.initialize();
                                  -            //dispatch(Firebug.modules, "initialize", []);
                                  -        }
                                  -        else
                                  -        {
                                  -            // TODO: xxxpedro only needed in persistent
                                  -            // should use FirebugChrome.clone, but popup FBChrome
                                  -            // isn't acessible 
                                  -            FirebugChrome.selectedPanelName = oldChrome.selectedPanel.name;
                                  -        }
                                  -        
                                  -        dispatch(newPanelMap, "reattach", [oldChrome, newChrome]);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    draw: function()
                                  -    {
                                  -        var size = this.getSize();
                                  -        
                                  -        // Height related values
                                  -        var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0,
                                  -            
                                  -            y = Math.max(size.height /* chrome height */, topHeight),
                                  -            
                                  -            heightValue = Math.max(y - topHeight - commandLineHeight /* fixed height */, 0), 
                                  -            
                                  -            height = heightValue + "px",
                                  -            
                                  -            // Width related values
                                  -            sideWidthValue = Firebug.chrome.sidePanelVisible ? FirebugChrome.sidePanelWidth : 0,
                                  -            
                                  -            width = Math.max(size.width /* chrome width */ - sideWidthValue, 0) + "px";
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Height related rendering
                                  -        fbPanelBox1Style.height = height;
                                  -        fbPanel1Style.height = height;
                                  -        
                                  -        if (isIE || isOpera)
                                  -        {
                                  -            // Fix IE and Opera problems with auto resizing the verticall splitter
                                  -            fbVSplitterStyle.height = Math.max(y - topPartialHeight - commandLineHeight, 0) + "px";
                                  -        }
                                  -        //xxxpedro FF2 only?
                                  -        /*
                                  -        else if (isFirefox)
                                  -        {
                                  -            // Fix Firefox problem with table rows with 100% height (fit height)
                                  -            fbContentStyle.maxHeight = Math.max(y - fixedHeight, 0)+ "px";
                                  -        }/**/
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // Width related rendering
                                  -        fbPanelBox1Style.width = width;
                                  -        fbPanel1Style.width = width;
                                  -        
                                  -        // SidePanel rendering
                                  -        if (Firebug.chrome.sidePanelVisible)
                                  -        {
                                  -            sideWidthValue = Math.max(sideWidthValue - 6, 0);
                                  -            
                                  -            var sideWidth = sideWidthValue + "px"
                                  -            
                                  -            fbPanelBox2Style.width = sideWidth;
                                  -            
                                  -            fbVSplitterStyle.right = sideWidth;
                                  -            
                                  -            if (Firebug.chrome.largeCommandLineVisible)
                                  -            {
                                  -                fbLargeCommandLine = $("fbLargeCommandLine");
                                  -                
                                  -                fbLargeCommandLine.style.height = heightValue - 4 + "px";
                                  -                fbLargeCommandLine.style.width = sideWidthValue - 2 + "px";
                                  -                
                                  -                fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -                fbLargeCommandButtons.style.width = sideWidth;
                                  -            }
                                  -            else
                                  -            {
                                  -                fbPanel2Style.height = height;
                                  -                fbPanel2Style.width = sideWidth;
                                  -                
                                  -                fbPanelBar2BoxStyle.width = sideWidth;
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getSize: function()
                                  -    {
                                  -        return this.type == "div" ?
                                  -            {
                                  -                height: this.node.offsetHeight,
                                  -                width: this.node.offsetWidth
                                  -            }
                                  -            :
                                  -            this.getWindowSize();
                                  -    },
                                  -    
                                  -    resize: function()
                                  -    {
                                  -        var self = this;
                                  -        
                                  -        // avoid partial resize when maximizing window
                                  -        setTimeout(function(){
                                  -            self.draw();
                                  -            
                                  -            if (noFixedPosition && (self.type == "frame" || self.type == "div"))
                                  -                self.fixIEPosition();
                                  -        }, 0);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    layout: function(panel)
                                  -    {
                                  -        if (FBTrace.DBG_CHROME) FBTrace.sysout("Chrome.layout", "");
                                  -        
                                  -        var options = panel.options;
                                  -        
                                  -        changeCommandLineVisibility(options.hasCommandLine);
                                  -        changeSidePanelVisibility(panel.hasSidePanel);
                                  -        
                                  -        Firebug.chrome.draw();
                                  -    },
                                  -    
                                  -    showLargeCommandLine: function(hideToggleIcon)
                                  -    {
                                  -        var chrome = Firebug.chrome;
                                  -        
                                  -        if (!chrome.largeCommandLineVisible)
                                  -        {
                                  -            chrome.largeCommandLineVisible = true;
                                  -            
                                  -            if (chrome.selectedPanel.options.hasCommandLine)
                                  -            {
                                  -                if (Firebug.CommandLine)
                                  -                    Firebug.CommandLine.blur();
                                  -                
                                  -                changeCommandLineVisibility(false);
                                  -            }
                                  -            
                                  -            changeSidePanelVisibility(true);
                                  -            
                                  -            fbLargeCommandLine.style.display = "block";
                                  -            fbLargeCommandButtons.style.display = "block";
                                  -            
                                  -            fbPanel2Style.display = "none";
                                  -            fbPanelBar2BoxStyle.display = "none";
                                  -            
                                  -            chrome.draw();
                                  -            
                                  -            fbLargeCommandLine.focus();
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(true);
                                  -        }
                                  -    },
                                  -    
                                  -    hideLargeCommandLine: function()
                                  -    {
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -        {
                                  -            Firebug.chrome.largeCommandLineVisible = false;
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.setMultiLine(false);
                                  -            
                                  -            fbLargeCommandLine.blur();
                                  -            
                                  -            fbPanel2Style.display = "block";
                                  -            fbPanelBar2BoxStyle.display = "block";
                                  -            
                                  -            fbLargeCommandLine.style.display = "none";
                                  -            fbLargeCommandButtons.style.display = "none";            
                                  -            
                                  -            changeSidePanelVisibility(false);
                                  -            
                                  -            if (Firebug.chrome.selectedPanel.options.hasCommandLine)
                                  -                changeCommandLineVisibility(true);
                                  -            
                                  -            Firebug.chrome.draw();
                                  -            
                                  -        }
                                  -    },    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focusCommandLine: function()
                                  -    {
                                  -        var selectedPanelName = this.selectedPanel.name, panelToSelect;
                                  -        
                                  -        if (focusCommandLineState == 0 || selectedPanelName != "Console")
                                  -        {
                                  -            focusCommandLineState = 0;
                                  -            lastFocusedPanelName = selectedPanelName;
                                  -            
                                  -            panelToSelect = "Console";
                                  -        }
                                  -        if (focusCommandLineState == 1)
                                  -        {
                                  -            panelToSelect = lastFocusedPanelName;
                                  -        }
                                  -        
                                  -        this.selectPanel(panelToSelect);
                                  -        
                                  -        try
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -            {
                                  -                if (panelToSelect == "Console")
                                  -                    Firebug.CommandLine.focus();
                                  -                else
                                  -                    Firebug.CommandLine.blur();
                                  -            }
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            //TODO: xxxpedro trace error
                                  -        }
                                  -        
                                  -        focusCommandLineState = ++focusCommandLineState % 2;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeFrameBase
                                  -
                                  -var ChromeFrameBase = extend(ChromeBase,
                                  -{
                                  -    create: function()
                                  -    {
                                  -        ChromeBase.create.call(this);
                                  -        
                                  -        // restore display for the anti-flicker trick
                                  -        if (isFirefox)
                                  -            this.node.style.display = "block";
                                  -        
                                  -        if (Env.Options.startInNewWindow)
                                  -        {
                                  -            this.close();
                                  -            this.toggle(true, true);
                                  -            return;
                                  -        }
                                  -        
                                  -        if (Env.Options.startOpened)
                                  -            this.open();
                                  -        else
                                  -            this.close();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        removeGlobalEvent("keydown", onGlobalKeyDown);
                                  -        
                                  -        ChromeBase.destroy.call(this);
                                  -        
                                  -        this.document = null;
                                  -        delete this.document;
                                  -        
                                  -        this.window = null;
                                  -        delete this.window;
                                  -        
                                  -        this.node.parentNode.removeChild(this.node);
                                  -        this.node = null;
                                  -        delete this.node;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        //FBTrace.sysout("Frame", "initialize();")
                                  -        ChromeBase.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -            [Firebug.browser.window, "resize", this.resize],
                                  -            [$("fbWindow_btClose"), "click", this.close],
                                  -            [$("fbWindow_btDetach"), "click", this.detach]       
                                  -        );
                                  -        
                                  -        if (!Env.Options.enablePersistent)
                                  -            this.addController([Firebug.browser.window, "unload", Firebug.shutdown]);
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -        fbHSplitter.onmousedown = onHSplitterMouseDown;
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        fbVSplitter.onmousedown = null;
                                  -        fbHSplitter.onmousedown = null;
                                  -        
                                  -        ChromeBase.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        ChromeBase.reattach(FirebugChrome.chromeMap.popup, this);
                                  -    },
                                  -    
                                  -    open: function()
                                  -    {
                                  -        if (!FirebugChrome.isOpen)
                                  -        {
                                  -            FirebugChrome.isOpen = true;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("FB_isOpen", "true");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            node.style.visibility = "hidden"; // Avoid flickering
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                if (ChromeMini.isInitialized)
                                  -                {
                                  -                    ChromeMini.shutdown();
                                  -                }
                                  -                
                                  -            }
                                  -            else
                                  -                node.style.display = "block";
                                  -            
                                  -            var main = $("fbChrome");
                                  -            main.style.display = "block";
                                  -            
                                  -            var self = this;
                                  -            setTimeout(function(){
                                  -                node.style.visibility = "visible";
                                  -                
                                  -                //dispatch(Firebug.modules, "initialize", []);
                                  -                self.initialize();
                                  -                
                                  -                if (noFixedPosition)
                                  -                    self.fixIEPosition();
                                  -                
                                  -                self.draw();
                                  -        
                                  -            }, 10);
                                  -        }
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (FirebugChrome.isOpen || !this.isInitialized)
                                  -        {
                                  -            if (this.isInitialized)
                                  -            {
                                  -                //dispatch(Firebug.modules, "shutdown", []);
                                  -                this.shutdown();
                                  -            }
                                  -            
                                  -            FirebugChrome.isOpen = false;
                                  -            
                                  -            if (Env.isChromeExtension)
                                  -                localStorage.setItem("FB_isOpen", "");
                                  -            
                                  -            var node = this.node;
                                  -            
                                  -            if (Firebug.showIconWhenHidden)
                                  -            {
                                  -                node.style.visibility = "hidden"; // Avoid flickering
                                  -                
                                  -                // TODO: xxxpedro - persist IE fixed? 
                                  -                var main = $("fbChrome", FirebugChrome.chromeMap.frame.document);
                                  -                main.style.display = "none";
                                  -                        
                                  -                ChromeMini.initialize();
                                  -                
                                  -                node.style.visibility = "visible";
                                  -            }
                                  -            else
                                  -                node.style.display = "none";
                                  -        }
                                  -    },
                                  -    
                                  -    fixIEPosition: function()
                                  -    {
                                  -        // fix IE problem with offset when not in fullscreen mode
                                  -        var doc = this.document;
                                  -        var offset = isIE ? doc.body.clientTop || doc.documentElement.clientTop: 0;
                                  -        
                                  -        var size = Firebug.browser.getWindowSize();
                                  -        var scroll = Firebug.browser.getWindowScrollPosition();
                                  -        var maxHeight = size.height;
                                  -        var height = this.node.offsetHeight;
                                  -        
                                  -        var bodyStyle = doc.body.currentStyle;
                                  -        
                                  -        this.node.style.top = maxHeight - height + scroll.top + "px";
                                  -        
                                  -        if ((this.type == "frame" || this.type == "div") && 
                                  -            (bodyStyle.marginLeft || bodyStyle.marginRight))
                                  -        {
                                  -            this.node.style.width = size.width + "px";
                                  -        }
                                  -        
                                  -        if (fbVSplitterStyle)
                                  -            fbVSplitterStyle.right = FirebugChrome.sidePanelWidth + "px";
                                  -        
                                  -        this.draw();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromeMini
                                  -
                                  -var ChromeMini = extend(Controller, 
                                  -{
                                  -    create: function(chrome)
                                  -    {
                                  -        append(this, chrome);
                                  -        this.type = "mini";
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "block";
                                  -        
                                  -        var miniIcon = $("fbMiniIcon", doc);
                                  -        var width = miniIcon.offsetWidth + 10;
                                  -        miniIcon.title = "Open " + Firebug.version;
                                  -        
                                  -        var errors = $("fbMiniErrors", doc);
                                  -        if (errors.offsetWidth)
                                  -            width += errors.offsetWidth + 10;
                                  -        
                                  -        var node = this.node;
                                  -        node.style.height = "27px";
                                  -        node.style.width = width + "px";
                                  -        node.style.left = "";
                                  -        node.style.right = 0;
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "true");
                                  -            this.document.body.style.backgroundColor = "transparent";
                                  -        }
                                  -        else
                                  -            node.style.background = "transparent";
                                  -
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        this.addController(
                                  -            [$("fbMiniIcon", doc), "click", onMiniIconClick]       
                                  -        );
                                  -        
                                  -        if (noFixedPosition)
                                  -        {
                                  -            this.addController(
                                  -                [Firebug.browser.window, "scroll", this.fixIEPosition]
                                  -            );
                                  -        }
                                  -        
                                  -        this.isInitialized = true;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var node = this.node;
                                  -        node.style.height = FirebugChrome.height + "px";
                                  -        node.style.width = "100%";
                                  -        node.style.left = 0;
                                  -        node.style.right = "";
                                  -        
                                  -        if (this.node.nodeName.toLowerCase() == "iframe")
                                  -        {
                                  -            node.setAttribute("allowTransparency", "false");
                                  -            this.document.body.style.backgroundColor = "#fff";
                                  -        }
                                  -        else
                                  -            node.style.background = "#fff";
                                  -        
                                  -        if (noFixedPosition)
                                  -            this.fixIEPosition();
                                  -        
                                  -        var doc = FirebugChrome.chromeMap.frame.document;
                                  -        
                                  -        var mini = $("fbMiniChrome", doc);
                                  -        mini.style.display = "none";
                                  -        
                                  -        Controller.shutdown.apply(this);
                                  -        
                                  -        this.isInitialized = false;
                                  -    },
                                  -    
                                  -    draw: function()
                                  -    {
                                  -    
                                  -    },
                                  -    
                                  -    fixIEPosition: ChromeFrameBase.fixIEPosition
                                  -    
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ChromePopupBase
                                  -
                                  -var ChromePopupBase = extend(ChromeBase, {
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        setClass(this.document.body, "FirebugPopup");
                                  -        
                                  -        ChromeBase.initialize.call(this)
                                  -        
                                  -        this.addController(
                                  -            [Firebug.chrome.window, "resize", this.resize],
                                  -            [Firebug.chrome.window, "unload", this.destroy]
                                  -        );
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            this.persist = bind(this.persist, this);
                                  -            addEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        else
                                  -            this.addController(
                                  -                [Firebug.browser.window, "unload", this.close]
                                  -            );
                                  -        
                                  -        fbVSplitter.onmousedown = onVSplitterMouseDown;
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        // TODO: xxxpedro sync detach reattach attach
                                  -        var frame = FirebugChrome.chromeMap.frame;
                                  -        
                                  -        if(frame)
                                  -        {
                                  -            dispatch(frame.panelMap, "detach", [this, frame]);
                                  -            
                                  -            frame.reattach(this, frame);
                                  -        }
                                  -        
                                  -        if (Env.Options.enablePersistent)
                                  -        {
                                  -            removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        }
                                  -        
                                  -        ChromeBase.destroy.apply(this);
                                  -        
                                  -        FirebugChrome.chromeMap.popup = null;
                                  -        
                                  -        this.node.close();
                                  -    },
                                  -    
                                  -    persist: function()
                                  -    {
                                  -        persistTimeStart = new Date().getTime();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "unload", this.persist);
                                  -        
                                  -        Firebug.Inspector.destroy();
                                  -        Firebug.browser.window.FirebugOldBrowser = true;
                                  -        
                                  -        var persistTimeStart = new Date().getTime();
                                  -        
                                  -        var waitMainWindow = function()
                                  -        {
                                  -            var doc, head;
                                  -        
                                  -            try
                                  -            {
                                  -                if (window.opener && !window.opener.FirebugOldBrowser && (doc = window.opener.document)/* && 
                                  -                    doc.documentElement && (head = doc.documentElement.firstChild)*/)
                                  -                {
                                  -                    
                                  -                    try
                                  -                    {
                                  -                        var persistDelay = new Date().getTime() - persistTimeStart;
                                  -                
                                  -                        window.Firebug = Firebug;
                                  -                        window.opener.Firebug = Firebug;
                                  -                
                                  -                        Env.browser = window.opener;
                                  -                        Firebug.browser = Firebug.context = new Context(Env.browser);
                                  -                
                                  -                        registerConsole();
                                  -                
                                  -                        var chrome = Firebug.chrome;
                                  -                        addEvent(Firebug.browser.window, "unload", chrome.persist)
                                  -                
                                  -                        FBL.cacheDocument();
                                  -                        Firebug.Inspector.create();
                                  -                
                                  -                        var htmlPanel = chrome.getPanel("HTML");
                                  -                        htmlPanel.createUI();
                                  -                        
                                  -                        Firebug.Console.info("Firebug could not capture console calls during " + 
                                  -                                persistDelay + "ms");
                                  -                    }
                                  -                    catch(pE)
                                  -                    {
                                  -                        alert("persist error: " + (pE.message || pE));
                                  -                    }
                                  -                    
                                  -                }
                                  -                else
                                  -                {
                                  -                    window.setTimeout(waitMainWindow, 0);
                                  -                }
                                  -            
                                  -            } catch (E) {
                                  -                window.close();
                                  -            }
                                  -        };
                                  -        
                                  -        waitMainWindow();    
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        this.destroy();
                                  -    }
                                  -
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// UI helpers
                                  -
                                  -var changeCommandLineVisibility = function changeCommandLineVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.commandLineVisible;
                                  -    var visible = Firebug.chrome.commandLineVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.commandLineVisible;
                                  -    
                                  -    if (visible != last)
                                  -    {
                                  -        if (visible)
                                  -        {
                                  -            fbBottom.className = "";
                                  -            
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.activate();
                                  -        }
                                  -        else
                                  -        {
                                  -            if (Firebug.CommandLine)
                                  -                Firebug.CommandLine.deactivate();
                                  -            
                                  -            fbBottom.className = "hide";
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var changeSidePanelVisibility = function changeSidePanelVisibility(visibility)
                                  -{
                                  -    var last = Firebug.chrome.sidePanelVisible;
                                  -    Firebug.chrome.sidePanelVisible =  
                                  -        typeof visibility == "boolean" ? visibility : !Firebug.chrome.sidePanelVisible;
                                  -    
                                  -    if (Firebug.chrome.sidePanelVisible != last)
                                  -    {
                                  -        fbPanelBox2.className = Firebug.chrome.sidePanelVisible ? "" : "hide"; 
                                  -        fbPanelBar2Box.className = Firebug.chrome.sidePanelVisible ? "" : "hide";
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// F12 Handler
                                  -
                                  -var onGlobalKeyDown = function onGlobalKeyDown(event)
                                  -{
                                  -    var keyCode = event.keyCode;
                                  -    var shiftKey = event.shiftKey;
                                  -    var ctrlKey = event.ctrlKey;
                                  -    
                                  -    if (keyCode == 123 /* F12 */ && (!isFirefox && !shiftKey || shiftKey && isFirefox))
                                  -    {
                                  -        Firebug.chrome.toggle(false, ctrlKey);
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 67 /* C */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.Inspector.toggleInspect();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -    else if (keyCode == 76 /* L */ && ctrlKey && shiftKey)
                                  -    {
                                  -        Firebug.chrome.focusCommandLine();
                                  -        cancelEvent(event, true);
                                  -    }
                                  -};
                                  -
                                  -var onMiniIconClick = function onMiniIconClick(event)
                                  -{
                                  -    Firebug.chrome.toggle(false, event.ctrlKey);
                                  -    cancelEvent(event, true);
                                  -}
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Horizontal Splitter Handling
                                  -
                                  -var onHSplitterMouseDown = function onHSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        addEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "fbOnMovingHSplitter";
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onHSplitterMouseMove = function onHSplitterMouseMove(event)
                                  -{
                                  -    cancelEvent(event, true);
                                  -    
                                  -    var clientY = event.clientY;
                                  -    var win = isIE
                                  -        ? event.srcElement.ownerDocument.parentWindow
                                  -        : event.target.ownerDocument && event.target.ownerDocument.defaultView;
                                  -    
                                  -    if (!win)
                                  -        return;
                                  -    
                                  -    if (win != win.parent)
                                  -    {
                                  -        var frameElement = win.frameElement;
                                  -        if (frameElement)
                                  -        {
                                  -            var framePos = Firebug.browser.getElementPosition(frameElement).top;
                                  -            clientY += framePos;
                                  -            
                                  -            if (frameElement.style.position != "fixed")
                                  -                clientY -= Firebug.browser.getWindowScrollPosition().top;
                                  -        }
                                  -    }
                                  -    
                                  -    if (isOpera && isQuiksMode && win.frameElement.id == "FirebugUI")
                                  -    {
                                  -        clientY = Firebug.browser.getWindowSize().height - win.frameElement.offsetHeight + clientY;
                                  -    }
                                  -    /*
                                  -    console.log(
                                  -            typeof win.FBL != "undefined" ? "no-Chrome" : "Chrome",
                                  -            //win.frameElement.id,
                                  -            event.target,
                                  -            clientY
                                  -        );/**/
                                  -    
                                  -    onHSplitterMouseMoveBuffer = clientY; // buffer
                                  -    
                                  -    if (new Date().getTime() - lastHSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        lastHSplitterMouseMove = new Date().getTime();
                                  -        handleHSplitterMouseMove();
                                  -    }
                                  -    else
                                  -        if (!onHSplitterMouseMoveTimer)
                                  -            onHSplitterMouseMoveTimer = setTimeout(handleHSplitterMouseMove, chromeRedrawSkipRate);
                                  -    
                                  -    // improving the resizing performance by canceling the mouse event.
                                  -    // canceling events will prevent the page to receive such events, which would imply
                                  -    // in more processing being expended.
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var handleHSplitterMouseMove = function()
                                  -{
                                  -    if (onHSplitterMouseMoveTimer)
                                  -    {
                                  -        clearTimeout(onHSplitterMouseMoveTimer);
                                  -        onHSplitterMouseMoveTimer = null;
                                  -    }
                                  -    
                                  -    var clientY = onHSplitterMouseMoveBuffer;
                                  -    
                                  -    var windowSize = Firebug.browser.getWindowSize();
                                  -    var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -    
                                  -    // compute chrome fixed size (top bar and command line)
                                  -    var commandLineHeight = Firebug.chrome.commandLineVisible ? fbCommandLine.offsetHeight : 0;
                                  -    var fixedHeight = topHeight + commandLineHeight;
                                  -    var chromeNode = Firebug.chrome.node;
                                  -    
                                  -    var scrollbarSize = !isIE && (scrollSize.width > windowSize.width) ? 17 : 0;
                                  -    
                                  -    //var height = !isOpera ? chromeNode.offsetTop + chromeNode.clientHeight : windowSize.height;
                                  -    var height =  windowSize.height;
                                  -    
                                  -    // compute the min and max size of the chrome
                                  -    var chromeHeight = Math.max(height - clientY + 5 - scrollbarSize, fixedHeight);
                                  -        chromeHeight = Math.min(chromeHeight, windowSize.height - scrollbarSize);
                                  -
                                  -    FirebugChrome.height = chromeHeight;
                                  -    chromeNode.style.height = chromeHeight + "px";
                                  -    
                                  -    if (noFixedPosition)
                                  -        Firebug.chrome.fixIEPosition();
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -var onHSplitterMouseUp = function onHSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onHSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onHSplitterMouseUp);
                                  -    
                                  -    if (isIE)
                                  -        removeEvent(Firebug.browser.document.documentElement, "mouseleave", onHSplitterMouseUp);
                                  -    
                                  -    fbHSplitter.className = "";
                                  -    
                                  -    Firebug.chrome.draw();
                                  -    
                                  -    // avoid text selection in IE when returning to the document
                                  -    // after the mouse leaves the document during the resizing
                                  -    return false;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Vertical Splitter Handling
                                  -
                                  -var onVSplitterMouseDown = function onVSplitterMouseDown(event)
                                  -{
                                  -    addGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    addGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseMove = function onVSplitterMouseMove(event)
                                  -{
                                  -    if (new Date().getTime() - lastVSplitterMouseMove > chromeRedrawSkipRate) // frame skipping
                                  -    {
                                  -        var target = event.target || event.srcElement;
                                  -        if (target && target.ownerDocument) // avoid error when cursor reaches out of the chrome
                                  -        {
                                  -            var clientX = event.clientX;
                                  -            var win = document.all
                                  -                ? event.srcElement.ownerDocument.parentWindow
                                  -                : event.target.ownerDocument.defaultView;
                                  -          
                                  -            if (win != win.parent)
                                  -                clientX += win.frameElement ? win.frameElement.offsetLeft : 0;
                                  -            
                                  -            var size = Firebug.chrome.getSize();
                                  -            var x = Math.max(size.width - clientX + 3, 6);
                                  -            
                                  -            FirebugChrome.sidePanelWidth = x;
                                  -            Firebug.chrome.draw();
                                  -        }
                                  -        
                                  -        lastVSplitterMouseMove = new Date().getTime();
                                  -    }
                                  -    
                                  -    cancelEvent(event, true);
                                  -    return false;
                                  -};
                                  -
                                  -var onVSplitterMouseUp = function onVSplitterMouseUp(event)
                                  -{
                                  -    removeGlobalEvent("mousemove", onVSplitterMouseMove);
                                  -    removeGlobalEvent("mouseup", onVSplitterMouseUp);
                                  -    
                                  -    Firebug.chrome.draw();
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/commandLine.js b/tags/firebug1.3a5/content/firebug/commandLine.js
                                  deleted file mode 100644
                                  index 7ee25eaa..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/commandLine.js
                                  +++ /dev/null
                                  @@ -1,532 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var commandPrefix = ">>>";
                                  -var reOpenBracket = /[\[\(\{]/;
                                  -var reCloseBracket = /[\]\)\}]/;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var commandHistory = [];
                                  -var commandPointer = -1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var isAutoCompleting = null;
                                  -var autoCompletePrefix = null;
                                  -var autoCompleteExpr = null;
                                  -var autoCompleteBuffer = null;
                                  -var autoCompletePosition = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var fbCommandLine = null;
                                  -var fbLargeCommandLine = null;
                                  -var fbLargeCommandButtons = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _completion =
                                  -{
                                  -    window:
                                  -    [
                                  -        "console"
                                  -    ],
                                  -    
                                  -    document:
                                  -    [
                                  -        "getElementById", 
                                  -        "getElementsByTagName"
                                  -    ]
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var _stack = function(command)
                                  -{
                                  -    commandHistory.push(command);
                                  -    commandPointer = commandHistory.length;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine
                                  -
                                  -Firebug.CommandLine = extend(Firebug.Module,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        
                                  -    element: null,
                                  -    isMultiLine: false,
                                  -    isActive: false,
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    initialize: function(doc)
                                  -    {
                                  -        this.clear = bind(this.clear, this);
                                  -        this.enter = bind(this.enter, this);
                                  -        
                                  -        this.onError = bind(this.onError, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        this.onMultiLineKeyDown = bind(this.onMultiLineKeyDown, this);
                                  -        
                                  -        addEvent(Firebug.browser.window, "error", this.onError);
                                  -        addEvent(Firebug.chrome.window, "error", this.onError);
                                  -    
                                  -    },
                                  -    
                                  -    shutdown: function(doc)
                                  -    {
                                  -        this.deactivate();
                                  -        
                                  -        removeEvent(Firebug.browser.window, "error", this.onError);
                                  -        removeEvent(Firebug.chrome.window, "error", this.onError);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    activate: function(multiLine, hideToggleIcon, onRun)
                                  -    {
                                  -        if (this.isActive)
                                  -        {
                                  -            if (this.isMultiLine == multiLine) return;
                                  -            
                                  -            this.deactivate();
                                  -        }
                                  -        
                                  -        fbCommandLine = $("fbCommandLine");
                                  -        fbLargeCommandLine = $("fbLargeCommandLine");
                                  -        fbLargeCommandButtons = $("fbLargeCommandButtons");
                                  -        
                                  -        if (multiLine)
                                  -        {
                                  -            onRun = onRun || this.enter;
                                  -            
                                  -            this.isMultiLine = true;
                                  -            
                                  -            this.element = fbLargeCommandLine;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            addEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton = new Button({
                                  -                element: $("fbCommand_btRun"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: onRun
                                  -            });
                                  -            
                                  -            this.runButton.initialize();
                                  -            
                                  -            this.clearButton = new Button({
                                  -                element: $("fbCommand_btClear"),
                                  -                owner: Firebug.CommandLine,
                                  -                onClick: this.clear
                                  -            });
                                  -            
                                  -            this.clearButton.initialize();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.isMultiLine = false;
                                  -            this.element = fbCommandLine;
                                  -            
                                  -            if (!fbCommandLine)
                                  -                return;
                                  -            
                                  -            addEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        //Firebug.Console.log("activate", this.element);
                                  -        
                                  -        if (isOpera)
                                  -          fixOperaTabKey(this.element);
                                  -        
                                  -        if(this.lastValue)
                                  -            this.element.value = this.lastValue;
                                  -        
                                  -        this.isActive = true;
                                  -    },
                                  -    
                                  -    deactivate: function()
                                  -    {
                                  -        if (!this.isActive) return;
                                  -        
                                  -        //Firebug.Console.log("deactivate", this.element);
                                  -        
                                  -        this.isActive = false;
                                  -        
                                  -        this.lastValue = this.element.value;
                                  -        
                                  -        if (this.isMultiLine)
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onMultiLineKeyDown);
                                  -            
                                  -            removeEvent($("fbSmallCommandLineIcon"), "click", Firebug.chrome.hideLargeCommandLine);
                                  -            
                                  -            this.runButton.destroy();
                                  -            this.clearButton.destroy();
                                  -        }
                                  -        else
                                  -        {
                                  -            removeEvent(this.element, "keydown", this.onKeyDown);
                                  -        }
                                  -        
                                  -        this.element = null
                                  -        delete this.element;
                                  -        
                                  -        fbCommandLine = null;
                                  -        fbLargeCommandLine = null;
                                  -        fbLargeCommandButtons = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    focus: function()
                                  -    {
                                  -        this.element.focus();
                                  -    },
                                  -    
                                  -    blur: function()
                                  -    {
                                  -        this.element.blur();
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.element.value = "";
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    evaluate: function(expr)
                                  -    {
                                  -        // TODO: need to register the API in console.firebug.commandLineAPI
                                  -        var api = "Firebug.CommandLine.API"
                                  -        
                                  -        var result = Firebug.context.evaluate(expr, "window", api, Firebug.Console.error);
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    enter: function()
                                  -    {
                                  -        var command = this.element.value;
                                  -        
                                  -        if (!command) return;
                                  -        
                                  -        _stack(command);
                                  -        
                                  -        // TODO: remove this when console2 is finished
                                  -        Firebug.Console.writeMessage(['<span>&gt;&gt;&gt;</span> ', escapeHTML(command)], "command");
                                  -        //Firebug.Console.log(commandPrefix + " " + stripNewLines(command), Firebug.browser, "command", FirebugReps.Text);
                                  -        
                                  -        var result = this.evaluate(command);
                                  -        
                                  -        // avoid logging the console command twice, in case it is a console function
                                  -        // that is being executed in the command line
                                  -        if (result != Firebug.Console.LOG_COMMAND)
                                  -        {
                                  -            Firebug.Console.log(result);
                                  -            //var html = [];
                                  -            //Firebug.Reps.appendObject(result, html)
                                  -            //Firebug.Console.writeMessage(html, "command");
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    prevCommand: function()
                                  -    {
                                  -        if (commandPointer > 0 && commandHistory.length > 0)
                                  -            this.element.value = commandHistory[--commandPointer];
                                  -    },
                                  -  
                                  -    nextCommand: function()
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var limit = commandHistory.length -1;
                                  -        var i = commandPointer;
                                  -        
                                  -        if (i < limit)
                                  -          element.value = commandHistory[++commandPointer];
                                  -          
                                  -        else if (i == limit)
                                  -        {
                                  -            ++commandPointer;
                                  -            element.value = "";
                                  -        }
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    autocomplete: function(reverse)
                                  -    {
                                  -        var element = this.element;
                                  -        
                                  -        var command = element.value;
                                  -        var offset = getExpressionOffset(command);
                                  -
                                  -        var valBegin = offset ? command.substr(0, offset) : "";
                                  -        var val = command.substr(offset);
                                  -        
                                  -        var buffer, obj, objName, commandBegin, result, prefix;
                                  -        
                                  -        // if it is the beginning of the completion
                                  -        if(!isAutoCompleting)
                                  -        {
                                  -            
                                  -            // group1 - command begin
                                  -            // group2 - base object
                                  -            // group3 - property prefix
                                  -            var reObj = /(.*[^_$\w\d\.])?((?:[_$\w][_$\w\d]*\.)*)([_$\w][_$\w\d]*)?$/;
                                  -            var r = reObj.exec(val);
                                  -            
                                  -            // parse command
                                  -            if (r[1] || r[2] || r[3])
                                  -            {
                                  -                commandBegin = r[1] || "";
                                  -                objName = r[2] || "";
                                  -                prefix = r[3] || "";
                                  -            }
                                  -            else if (val == "")
                                  -            {
                                  -                commandBegin = objName = prefix = "";
                                  -            } else
                                  -                return;
                                  -            
                                  -            isAutoCompleting = true;
                                  -      
                                  -            // find base object
                                  -            if(objName == "")
                                  -                obj = window;
                                  -              
                                  -            else
                                  -            {
                                  -                objName = objName.replace(/\.$/, "");
                                  -        
                                  -                var n = objName.split(".");
                                  -                var target = window, o;
                                  -                
                                  -                for (var i=0, ni; ni = n[i]; i++)
                                  -                {
                                  -                    if (o = target[ni])
                                  -                      target = o;
                                  -                      
                                  -                    else
                                  -                    {
                                  -                        target = null;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -                obj = target;
                                  -            }
                                  -            
                                  -            // map base object
                                  -            if(obj)
                                  -            {
                                  -                autoCompletePrefix = prefix;
                                  -                autoCompleteExpr = valBegin + commandBegin + (objName ? objName + "." : "");
                                  -                autoCompletePosition = -1;
                                  -                
                                  -                buffer = autoCompleteBuffer = isIE ?
                                  -                    _completion[objName || "window"] || [] : [];
                                  -                
                                  -                for(var p in obj)
                                  -                    buffer.push(p);
                                  -            }
                                  -    
                                  -        // if it is the continuation of the last completion
                                  -        } else
                                  -          buffer = autoCompleteBuffer;
                                  -        
                                  -        if (buffer)
                                  -        {
                                  -            prefix = autoCompletePrefix;
                                  -            
                                  -            var diff = reverse ? -1 : 1;
                                  -            
                                  -            for(var i=autoCompletePosition+diff, l=buffer.length, bi; i>=0 && i<l; i+=diff)
                                  -            {
                                  -                bi = buffer[i];
                                  -                
                                  -                if (bi.indexOf(prefix) == 0)
                                  -                {
                                  -                    autoCompletePosition = i;
                                  -                    result = bi;
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        if (result)
                                  -            element.value = autoCompleteExpr + result;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    setMultiLine: function(multiLine)
                                  -    {
                                  -        if (multiLine == this.isMultiLine) return;
                                  -        
                                  -        this.activate(multiLine);
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    onError: function(msg, href, lineNo)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        var lastSlash = href.lastIndexOf("/");
                                  -        var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -        
                                  -        html.push(
                                  -            '<span class="errorMessage">', msg, '</span>', 
                                  -            '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -          );
                                  -        
                                  -        Firebug.Console.writeRow(html, "error");
                                  -    },
                                  -    
                                  -    onKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        /*tab, shift, control, alt*/
                                  -        if (code != 9 && code != 16 && code != 17 && code != 18)
                                  -        {
                                  -            isAutoCompleting = false;
                                  -        }
                                  -    
                                  -        if (code == 13 /* enter */)
                                  -        {
                                  -            this.enter();
                                  -            this.clear();
                                  -        }
                                  -        else if (code == 27 /* ESC */)
                                  -        {
                                  -            setTimeout(this.clear, 0);
                                  -        } 
                                  -        else if (code == 38 /* up */)
                                  -        {
                                  -            this.prevCommand();
                                  -        }
                                  -        else if (code == 40 /* down */)
                                  -        {
                                  -            this.nextCommand();
                                  -        }
                                  -        else if (code == 9 /* tab */)
                                  -        {
                                  -            this.autocomplete(e.shiftKey);
                                  -        }
                                  -        else
                                  -            return;
                                  -        
                                  -        cancelEvent(e, true);
                                  -        return false;
                                  -    },
                                  -    
                                  -    onMultiLineKeyDown: function(e)
                                  -    {
                                  -        e = e || event;
                                  -        
                                  -        var code = e.keyCode;
                                  -        
                                  -        if (code == 13 /* enter */ && e.ctrlKey)
                                  -        {
                                  -            this.enter();
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CommandLine);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// 
                                  -
                                  -function getExpressionOffset(command)
                                  -{
                                  -    // XXXjoe This is kind of a poor-man's JavaScript parser - trying
                                  -    // to find the start of the expression that the cursor is inside.
                                  -    // Not 100% fool proof, but hey...
                                  -
                                  -    var bracketCount = 0;
                                  -
                                  -    var start = command.length-1;
                                  -    for (; start >= 0; --start)
                                  -    {
                                  -        var c = command[start];
                                  -        if ((c == "," || c == ";" || c == " ") && !bracketCount)
                                  -            break;
                                  -        if (reOpenBracket.test(c))
                                  -        {
                                  -            if (bracketCount)
                                  -                --bracketCount;
                                  -            else
                                  -                break;
                                  -        }
                                  -        else if (reCloseBracket.test(c))
                                  -            ++bracketCount;
                                  -    }
                                  -
                                  -    return start + 1;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// CommandLine API
                                  -
                                  -var CommandLineAPI =
                                  -{
                                  -    $: function(id)
                                  -    {
                                  -        return Firebug.browser.document.getElementById(id)
                                  -    },
                                  -
                                  -    $$: function(selector, context)
                                  -    {
                                  -        context = context || Firebug.browser.document;
                                  -        return Firebug.Selector ? 
                                  -                Firebug.Selector(selector, context) : 
                                  -                Firebug.Console.error("Firebug.Selector module not loaded.");
                                  -    },
                                  -    
                                  -    $0: null,
                                  -    
                                  -    $1: null,
                                  -    
                                  -    dir: Firebug.Console.dir,
                                  -
                                  -    dirxml: Firebug.Console.dirxml
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.CommandLine.API = {};
                                  -var initializeCommandLineAPI = function initializeCommandLineAPI()
                                  -{
                                  -    for (var m in CommandLineAPI)
                                  -        if (!Env.browser.window[m])
                                  -            Firebug.CommandLine.API[m] = CommandLineAPI[m];
                                  -};
                                  -
                                  -initializeCommandLineAPI();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/console.js b/tags/firebug1.3a5/content/firebug/console.js
                                  deleted file mode 100644
                                  index c9904d7a..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/console.js
                                  +++ /dev/null
                                  @@ -1,520 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console
                                  -
                                  -var ConsoleAPI = 
                                  -{
                                  -    firebuglite: Firebug.version,
                                  -    
                                  -    xxx: function(o)
                                  -    {
                                  -        var rep = Firebug.getRep(o);
                                  -        var className = "";
                                  -        
                                  -        var panel = Firebug.DOM.getPanel();
                                  -        var toggles = {};
                                  -        
                                  -        var row = Firebug.Console.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        var target = row;
                                  -        var object = o;
                                  -        
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        //row.innerHTML = message.join("");
                                  -        
                                  -        rep.tag.replace({domPanel: panel, toggles: toggles, object: object}, target);
                                  -        
                                  -        Firebug.Console.appendRow(row);
                                  -    },
                                  -
                                  -    log: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "");
                                  -    },
                                  -    
                                  -    debug: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "debug");
                                  -    },
                                  -    
                                  -    info: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "info");
                                  -    },
                                  -    
                                  -    warn: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "warning");
                                  -    },
                                  -    
                                  -    error: function()
                                  -    {
                                  -        return Firebug.Console.logFormatted(arguments, "error");
                                  -    },
                                  -    
                                  -    assert: function(truth, message)
                                  -    {
                                  -        if (!truth)
                                  -        {
                                  -            var args = [];
                                  -            for (var i = 1; i < arguments.length; ++i)
                                  -                args.push(arguments[i]);
                                  -            
                                  -            Firebug.Console.logFormatted(args.length ? args : ["Assertion Failure"], "error");
                                  -            throw message ? message : "Assertion Failure";
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;        
                                  -    },
                                  -    
                                  -    dir: function(object)
                                  -    {
                                  -        var html = [];
                                  -                    
                                  -        var pairs = [];
                                  -        for (var name in object)
                                  -        {
                                  -            try
                                  -            {
                                  -                pairs.push([name, object[name]]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -            }
                                  -        }
                                  -        
                                  -        pairs.sort(function(a, b) { return a[0] < b[0] ? -1 : 1; });
                                  -        
                                  -        html.push('<div class="log-object">');
                                  -        for (var i = 0; i < pairs.length; ++i)
                                  -        {
                                  -            var name = pairs[i][0], value = pairs[i][1];
                                  -            
                                  -            html.push('<div class="property">', 
                                  -                '<div class="propertyValueCell"><span class="propertyValue">');
                                  -                
                                  -            Firebug.Reps.appendObject(value, html);
                                  -            
                                  -            html.push('</span></div><div class="propertyNameCell"><span class="propertyName">',
                                  -                escapeHTML(name), '</span></div>'); 
                                  -            
                                  -            html.push('</div>');
                                  -        }
                                  -        html.push('</div>');
                                  -        
                                  -        return Firebug.Console.logRow(html, "dir");
                                  -    },
                                  -    
                                  -    dirxml: function(node)
                                  -    {
                                  -        var html = [];
                                  -        
                                  -        Firebug.Reps.appendNode(node, html);
                                  -        
                                  -        return Firebug.Console.logRow(html, "dirxml");
                                  -    },
                                  -    
                                  -    group: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "group", Firebug.Console.pushGroup);
                                  -    },
                                  -    
                                  -    groupEnd: function()
                                  -    {
                                  -        return Firebug.Console.logRow(arguments, "", Firebug.Console.popGroup);
                                  -    },
                                  -    
                                  -    time: function(name)
                                  -    {
                                  -        Firebug.Console.timeMap[name] = new Date().getTime();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    timeEnd: function(name)
                                  -    {
                                  -        var timeMap = Firebug.Console.timeMap;
                                  -        
                                  -        if (name in timeMap)
                                  -        {
                                  -            var delta = new Date().getTime() - timeMap[name];
                                  -            Firebug.Console.logFormatted([name+ ":", delta+"ms"]);
                                  -            delete timeMap[name];
                                  -        }
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    count: function()
                                  -    {
                                  -        return this.warn(["count() not supported."]);
                                  -    },
                                  -    
                                  -    trace: function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=stack.length; i<l; i++)
                                  -            {
                                  -                if (stack[i] == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var stack = [];
                                  -        
                                  -        var traceLabel = "Stack Trace";
                                  -        
                                  -        this.group(traceLabel);
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            stack.push(fn);
                                  -            
                                  -            var html = [ 
                                  -                "<div class='objectBox-function'>",
                                  -                getFuncName(fn), 
                                  -                "(" 
                                  -            ];
                                  -
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                if (i)
                                  -                    html.push(", ");
                                  -                
                                  -                Firebug.Reps.appendObject(fn.arguments[i], html);
                                  -            }
                                  -
                                  -            html.push(")</div>");
                                  -            Firebug.Console.logRow(html, "stackTrace");
                                  -            //Firebug.Console.log(html);
                                  -        }
                                  -        
                                  -        this.groupEnd(traceLabel);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND; 
                                  -    },
                                  -    
                                  -    profile: function()
                                  -    {
                                  -        return this.warn(["profile() not supported."]);
                                  -    },
                                  -    
                                  -    profileEnd: function()
                                  -    {
                                  -        return this.warn(["profileEnd() not supported."]);
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        Firebug.Console.getPanel().panelNode.innerHTML = "";
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -
                                  -    open: function()
                                  -    {
                                  -        toggleConsole(true);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    close: function()
                                  -    {
                                  -        if (frameVisible)
                                  -            toggleConsole();
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Module
                                  -
                                  -var ConsoleModule = extend(Firebug.Module, ConsoleAPI);
                                  -
                                  -Firebug.Console = extend(ConsoleModule,
                                  -{
                                  -    LOG_COMMAND: {},
                                  -    
                                  -    groupStack: [],
                                  -    timeMap: {},
                                  -        
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Console") : null;
                                  -    },    
                                  -
                                  -    flush: function()
                                  -    {
                                  -        var queue = FirebugChrome.consoleMessageQueue;
                                  -        FirebugChrome.consoleMessageQueue = [];
                                  -        
                                  -        for (var i = 0; i < queue.length; ++i)
                                  -            this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logFormatted: function(objects, className)
                                  -    {
                                  -        var html = [];
                                  -    
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -    
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -    
                                  -        var parts = this.parseFormat(format);
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                part.appender(object, html);
                                  -            }
                                  -            else
                                  -                Firebug.Reps.appendText(part, html);
                                  -        }
                                  -    
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            Firebug.Reps.appendText(" ", html);
                                  -            
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                Firebug.Reps.appendText(object, html);
                                  -            else
                                  -                Firebug.Reps.appendObject(object, html);
                                  -        }
                                  -        
                                  -        return this.logRow(html, className);    
                                  -    },
                                  -    
                                  -    parseFormat: function(format)
                                  -    {
                                  -        var parts = [];
                                  -    
                                  -        var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
                                  -        var Reps = Firebug.Reps;
                                  -        var appenderMap = {
                                  -                s: Reps.appendText, 
                                  -                d: Reps.appendInteger, 
                                  -                i: Reps.appendInteger, 
                                  -                f: Reps.appendFloat
                                  -            };
                                  -    
                                  -        for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var appender = type in appenderMap ? appenderMap[type] : Reps.appendObject;
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -    
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({appender: appender, precision: precision});
                                  -    
                                  -            format = format.substr(m.index+m[0].length);
                                  -        }
                                  -    
                                  -        parts.push(format);
                                  -    
                                  -        return parts;
                                  -    },
                                  -    
                                  -    // ********************************************************************************************
                                  -    
                                  -    logRow: function(message, className, handler)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel && panel.panelNode)
                                  -            this.writeMessage(message, className, handler);
                                  -        else
                                  -        {
                                  -            FirebugChrome.consoleMessageQueue.push([message, className, handler]);
                                  -        }
                                  -        
                                  -        return this.LOG_COMMAND;
                                  -    },
                                  -    
                                  -    writeMessage: function(message, className, handler)
                                  -    {
                                  -        var container = this.getPanel().containerNode;
                                  -        var isScrolledToBottom =
                                  -            container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -        if (!handler)
                                  -            handler = this.writeRow;
                                  -        
                                  -        handler.call(this, message, className);
                                  -        
                                  -        if (isScrolledToBottom)
                                  -            container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -    },
                                  -    
                                  -    appendRow: function(row)
                                  -    {
                                  -        if (this.groupStack.length > 0)
                                  -            var container = this.groupStack[this.groupStack.length-1];
                                  -        else
                                  -            var container = this.getPanel().panelNode;
                                  -        
                                  -        container.appendChild(row);
                                  -    },
                                  -    
                                  -    writeRow: function(message, className)
                                  -    {
                                  -        var row = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -        row.innerHTML = message.join("");
                                  -        this.appendRow(row);
                                  -    },
                                  -    
                                  -    pushGroup: function(message, className)
                                  -    {
                                  -        this.logFormatted(message, className);
                                  -    
                                  -        var groupRow = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        groupRow.className = "logGroup";
                                  -        var groupRowBox = this.getPanel().panelNode.ownerDocument.createElement("div");
                                  -        groupRowBox.className = "logGroupBox";
                                  -        groupRow.appendChild(groupRowBox);
                                  -        this.appendRow(groupRowBox);
                                  -        this.groupStack.push(groupRowBox);
                                  -    },
                                  -    
                                  -    popGroup: function()
                                  -    {
                                  -        this.groupStack.pop();
                                  -    }
                                  -
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Console);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Console Panel
                                  -
                                  -function ConsolePanel(){};
                                  -
                                  -ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    
                                  -    options: 
                                  -    {
                                  -        hasCommandLine: true,
                                  -        hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            element: $("fbConsole_btClear"),
                                  -            owner: Firebug.Console,
                                  -            onClick: Firebug.Console.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -        
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            addEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        if (Firebug.HTML)
                                  -        {
                                  -            removeEvent($("fbPanel1"), 'mousemove', Firebug.HTML.onListMouseMove);
                                  -            removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -            removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        }
                                  -        
                                  -        this.clearButton.shutdown();
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    }    
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -FBL.onError = function(msg, href, lineNo)
                                  -{
                                  -    var html = [];
                                  -    
                                  -    var lastSlash = href.lastIndexOf("/");
                                  -    var fileName = lastSlash == -1 ? href : href.substr(lastSlash+1);
                                  -    
                                  -    html.push(
                                  -        '<span class="errorMessage">', msg, '</span>', 
                                  -        '<div class="objectBox-sourceLink">', fileName, ' (line ', lineNo, ')</div>'
                                  -    );
                                  -    
                                  -    Firebug.Console.logRow(html, "error");
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Register console namespace
                                  -
                                  -FBL.registerConsole = function()
                                  -{
                                  -    if (Env.Options.overrideConsole)
                                  -    {
                                  -        var win = Env.browser.window;
                                  -        
                                  -        if (!isFirefox || isFirefox && !("console" in win))
                                  -            win.console = ConsoleAPI;
                                  -        else
                                  -            win.firebug = ConsoleAPI;
                                  -    }
                                  -};
                                  -
                                  -registerConsole();
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/console2.js b/tags/firebug1.3a5/content/firebug/console2.js
                                  deleted file mode 100644
                                  index eab44bf9..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/console2.js
                                  +++ /dev/null
                                  @@ -1,1062 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// next-generation Console Panel (will override consoje.js)
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const nsIPrefBranch2 = Ci.nsIPrefBranch2;
                                  -const PrefService = Cc["@mozilla.org/preferences-service;1"];
                                  -const prefs = PrefService.getService(nsIPrefBranch2);
                                  -/**/
                                  -    
                                  -var FirebugContext = Env.browser;
                                  -var $STRF = function(){
                                  -    return "$STRF not supported yet";
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var maxQueueRequests = 500;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsoleBase =
                                  -{
                                  -    log: function(object, context, className, rep, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"log",[context, object, className, sourceLink]);
                                  -        return this.logRow(appendObject, object, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    logFormatted: function(objects, context, className, noThrottle, sourceLink)
                                  -    {
                                  -        //dispatch(this.fbListeners,"logFormatted",[context, objects, className, sourceLink]);
                                  -        return this.logRow(appendFormatted, objects, context, className, null, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    openGroup: function(objects, context, className, rep, noThrottle, sourceLink, noPush)
                                  -    {
                                  -        return this.logRow(appendOpenGroup, objects, context, className, rep, sourceLink, noThrottle);
                                  -    },
                                  -
                                  -    closeGroup: function(context, noThrottle)
                                  -    {
                                  -        return this.logRow(appendCloseGroup, null, context, null, null, null, noThrottle, true);
                                  -    },
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        // TODO: xxxpedro console console2
                                  -        noThrottle = true; // xxxpedro forced because there is no TabContext yet
                                  -        
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_ERRORS && !context)
                                  -            FBTrace.sysout("Console.logRow has no context, skipping objects", objects);
                                  -
                                  -        if (!context)
                                  -            return;
                                  -
                                  -        if (noThrottle || !context)
                                  -        {
                                  -            var panel = this.getPanel(context);
                                  -            if (panel)
                                  -            {
                                  -                var row = panel.append(appender, objects, className, rep, sourceLink, noRow);
                                  -                var container = panel.panelNode;
                                  -
                                  -                // TODO: xxxpedro what is this? console console2
                                  -                /*
                                  -                var template = Firebug.NetMonitor.NetLimit;
                                  -
                                  -                while (container.childNodes.length > maxQueueRequests + 1)
                                  -                {
                                  -                    clearDomplate(container.firstChild.nextSibling);
                                  -                    container.removeChild(container.firstChild.nextSibling);
                                  -                    panel.limit.limitInfo.totalCount++;
                                  -                    template.updateCounter(panel.limit);
                                  -                }
                                  -                dispatch([Firebug.A11yModel], "onLogRowCreated", [panel , row]);
                                  -                /**/
                                  -                return row;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!context.throttle)
                                  -            {
                                  -                //FBTrace.sysout("console.logRow has not context.throttle! ");
                                  -                return;
                                  -            }
                                  -            var args = [appender, objects, context, className, rep, sourceLink, true, noRow];
                                  -            context.throttle(this.logRow, this, args);
                                  -        }
                                  -    },
                                  -
                                  -    appendFormatted: function(args, row, context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        var panel = this.getPanel(context);
                                  -        panel.appendFormatted(args, row);
                                  -    },
                                  -
                                  -    clear: function(context)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (context)
                                  -            Firebug.Errors.clear(context);
                                  -
                                  -        var panel = this.getPanel(context, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // Override to direct output to your panel
                                  -    getPanel: function(context, noCreate)
                                  -    {
                                  -        //return context.getPanel("console", noCreate);
                                  -        // TODO: xxxpedro console console2
                                  -        return Firebug.chrome.getPanel("Console");
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//TODO: xxxpedro
                                  -//var ActivableConsole = extend(Firebug.ActivableModule, Firebug.ConsoleBase);
                                  -var ActivableConsole = extend(Firebug.ConsoleBase, 
                                  -{
                                  -    isAlwaysEnabled: function()
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -Firebug.Console = Firebug.Console2 = extend(ActivableConsole,
                                  -//Firebug.Console = extend(ActivableConsole,
                                  -{
                                  -    dispatchName: "console",
                                  -    
                                  -    error: function()
                                  -    {
                                  -        Firebug.Console.logFormatted(arguments, Firebug.browser, "error");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -
                                  -    getFirebugConsoleElement: function(context, win)
                                  -    {
                                  -        var element = win.document.getElementById("_firebugConsole");
                                  -        if (!element)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element");
                                  -            var elementForcer = "(function(){var r=null; try { r = window._getFirebugConsoleElement();}catch(exc){r=exc;} return r;})();";  // we could just add the elements here
                                  -
                                  -            if (context.stopped)
                                  -                Firebug.Console2.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -            else
                                  -                var r = Firebug.CommandLine.evaluateInWebPage(elementForcer, context, win);
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("getFirebugConsoleElement forcing element result "+r, r);
                                  -
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (!element) // elementForce fails
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS) FBTrace.sysout("console.getFirebugConsoleElement: no _firebugConsole in win:", win);
                                  -                Firebug.Console2.logFormatted(["Firebug cannot find _firebugConsole element", r, win], context, "error", true);
                                  -            }
                                  -        }
                                  -
                                  -        return element;
                                  -    },
                                  -
                                  -    isReadyElsePreparing: function(context, win) // this is the only code that should call injector.attachIfNeeded
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.isReadyElsePreparing, win is " +
                                  -                (win?"an argument: ":"null, context.window: ") +
                                  -                (win?win.location:context.window.location), (win?win:context.window));
                                  -
                                  -        if (win)
                                  -            return this.injector.attachIfNeeded(context, win);
                                  -        else
                                  -        {
                                  -            var attached = true;
                                  -            for (var i = 0; i < context.windows.length; i++)
                                  -                attached = attached && this.injector.attachIfNeeded(context, context.windows[i]);
                                  -            // already in the list above attached = attached && this.injector.attachIfNeeded(context, context.window);
                                  -            if (context.windows.indexOf(context.window) == -1)
                                  -                FBTrace.sysout("isReadyElsePreparing ***************** context.window not in context.windows");
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("console.isReadyElsePreparing attached to "+context.windows.length+" and returns "+attached);
                                  -            return attached;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends ActivableModule
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.panelName = "console";
                                  -
                                  -        //TODO: xxxpedro
                                  -        //Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -        //Firebug.Debugger.addListener(this);
                                  -    },
                                  -
                                  -    enable: function()
                                  -    {
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    disable: function()
                                  -    {
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.ActivableModule.initContext.apply(this, arguments);
                                  -        context.consoleReloadWarning = true;  // mark as need to warn.
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        for (var url in context.sourceFileMap)
                                  -            return;  // if there are any sourceFiles, then do nothing
                                  -
                                  -        // else we saw no JS, so the reload warning it not needed.
                                  -        this.clearReloadWarning(context);
                                  -    },
                                  -
                                  -    clearReloadWarning: function(context) // remove the warning about reloading.
                                  -    {
                                  -         if (context.consoleReloadWarning)
                                  -         {
                                  -             var panel = context.getPanel(this.panelName);
                                  -             panel.clearReloadWarning();
                                  -             delete context.consoleReloadWarning;
                                  -         }
                                  -    },
                                  -
                                  -    togglePersist: function(context)
                                  -    {
                                  -        var panel = context.getPanel(this.panelName);
                                  -        panel.persistContent = panel.persistContent ? false : true;
                                  -        Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", panel.persistContent);
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        Firebug.chrome.setGlobalAttribute("cmd_clearConsole", "disabled", !context);
                                  -
                                  -        Firebug.ActivableModule.showContext.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Console2.injector.detachConsole(context, context.window);  // TODO iterate windows?
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onPanelEnable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelEnable**************");
                                  -
                                  -        this.watchForErrors();
                                  -        Firebug.Debugger.addDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -    },
                                  -
                                  -    onPanelDisable: function(panelName)
                                  -    {
                                  -        if (panelName != this.panelName)  // we don't care about other panels
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onPanelDisable**************");
                                  -
                                  -        Firebug.Debugger.removeDependentModule(this); // we inject the console during JS compiles so we need jsd
                                  -        this.unwatchForErrors();
                                  -
                                  -        // Make sure possible errors coming from the page and displayed in the Firefox
                                  -        // status bar are removed.
                                  -        this.clear();
                                  -    },
                                  -
                                  -    onSuspendFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onSuspendFirebug\n");
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.unwatchForErrors();
                                  -    },
                                  -
                                  -    onResumeFirebug: function()
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResumeFirebug\n");
                                  -        if (Firebug.Console2.isAlwaysEnabled())
                                  -            this.watchForErrors();
                                  -    },
                                  -
                                  -    watchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').setAttribute("console", "on");
                                  -    },
                                  -
                                  -    unwatchForErrors: function()
                                  -    {
                                  -        Firebug.Errors.checkEnabled();
                                  -        $('fbStatusIcon').removeAttribute("console");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Firebug.Debugger listener
                                  -
                                  -    onMonitorScript: function(context, frame)
                                  -    {
                                  -        Firebug.Console2.log(frame, context);
                                  -    },
                                  -
                                  -    onFunctionCall: function(context, frame, depth, calling)
                                  -    {
                                  -        if (calling)
                                  -            Firebug.Console2.openGroup([frame, "depth:"+depth], context);
                                  -        else
                                  -            Firebug.Console2.closeGroup(context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    logRow: function(appender, objects, context, className, rep, sourceLink, noThrottle, noRow)
                                  -    {
                                  -        if (!context)
                                  -            context = FirebugContext;
                                  -
                                  -        if (FBTrace.DBG_WINDOWS && !context) FBTrace.sysout("Console.logRow: no context \n");
                                  -
                                  -        if (this.isAlwaysEnabled())
                                  -            return Firebug.ConsoleBase.logRow.apply(this, arguments);
                                  -    }
                                  -});
                                  -
                                  -Firebug.ConsoleListener =
                                  -{
                                  -    log: function(context, object, className, sourceLink)
                                  -    {
                                  -    },
                                  -
                                  -    logFormatted: function(context, objects, className, sourceLink)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.ConsolePanel = function () {} // XXjjb attach Firebug so this panel can be extended.
                                  -
                                  -//TODO: xxxpedro
                                  -//Firebug.ConsolePanel.prototype = extend(Firebug.ActivablePanel,
                                  -Firebug.ConsolePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    wasScrolledToBottom: false,
                                  -    messageCount: 0,
                                  -    lastLogTime: 0,
                                  -    groups: null,
                                  -    limit: null,
                                  -
                                  -    append: function(appender, objects, className, rep, sourceLink, noRow)
                                  -    {
                                  -        var container = this.getTopContainer();
                                  -
                                  -        if (noRow)
                                  -        {
                                  -            appender.apply(this, [objects]);
                                  -        }
                                  -        else
                                  -        {
                                  -            // xxxHonza: Don't update the this.wasScrolledToBottom flag now.
                                  -            // At the beginning (when the first log is created) the isScrolledToBottom
                                  -            // always returns true.
                                  -            //if (this.panelNode.offsetHeight)
                                  -            //    this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -            var row = this.createRow("logRow", className);
                                  -            appender.apply(this, [objects, row, rep]);
                                  -
                                  -            if (sourceLink)
                                  -                FirebugReps.SourceLink.tag.append({object: sourceLink}, row);
                                  -
                                  -            container.appendChild(row);
                                  -
                                  -            this.filterLogRow(row, this.wasScrolledToBottom);
                                  -
                                  -            if (this.wasScrolledToBottom)
                                  -                scrollToBottom(this.panelNode);
                                  -
                                  -            return row;
                                  -        }
                                  -    },
                                  -
                                  -    clear: function()
                                  -    {
                                  -        if (this.panelNode)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("ConsolePanel.clear");
                                  -            clearNode(this.panelNode);
                                  -            this.insertLogLimit(this.context);
                                  -        }
                                  -    },
                                  -
                                  -    insertLogLimit: function()
                                  -    {
                                  -        // Create limit row. This row is the first in the list of entries
                                  -        // and initially hidden. It's displayed as soon as the number of
                                  -        // entries reaches the limit.
                                  -        var row = this.createRow("limitRow");
                                  -
                                  -        var limitInfo = {
                                  -            totalCount: 0,
                                  -            limitPrefsTitle: $STRF("LimitPrefsTitle", [Firebug.prefDomain+".console.logLimit"])
                                  -        };
                                  -
                                  -        //TODO: xxxpedro console net limit!?
                                  -        return;
                                  -        var netLimitRep = Firebug.NetMonitor.NetLimit;
                                  -        var nodes = netLimitRep.createTable(row, limitInfo);
                                  -
                                  -        this.limit = nodes[1];
                                  -
                                  -        var container = this.panelNode;
                                  -        container.insertBefore(nodes[0], container.firstChild);
                                  -    },
                                  -
                                  -    insertReloadWarning: function()
                                  -    {
                                  -        // put the message in, we will clear if the window console is injected.
                                  -        this.warningRow = this.append(appendObject, $STR("message.Reload to activate window console"), "info");
                                  -    },
                                  -
                                  -    clearReloadWarning: function()
                                  -    {
                                  -        if (this.warningRow)
                                  -        {
                                  -            this.warningRow.parentNode.removeChild(this.warningRow);
                                  -            delete this.warningRow;
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendObject: function(object, row, rep)
                                  -    {
                                  -        if (!rep)
                                  -            rep = Firebug.getRep(object);
                                  -        return rep.tag.append({object: object}, row);
                                  -    },
                                  -
                                  -    appendFormatted: function(objects, row, rep)
                                  -    {
                                  -        if (!objects || !objects.length)
                                  -            return;
                                  -
                                  -        function logText(text, row)
                                  -        {
                                  -            var node = row.ownerDocument.createTextNode(text);
                                  -            row.appendChild(node);
                                  -        }
                                  -
                                  -        var format = objects[0];
                                  -        var objIndex = 0;
                                  -
                                  -        if (typeof(format) != "string")
                                  -        {
                                  -            format = "";
                                  -            objIndex = -1;
                                  -        }
                                  -        else  // a string
                                  -        {
                                  -            if (objects.length === 1) // then we have only a string...
                                  -            {
                                  -                if (format.length < 1) { // ...and it has no characters.
                                  -                    logText("(an empty string)", row);
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        var parts = parseFormat(format);
                                  -        var trialIndex = objIndex;
                                  -        for (var i= 0; i < parts.length; i++)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                if (++trialIndex > objects.length)  // then too few parameters for format, assume unformatted.
                                  -                {
                                  -                    format = "";
                                  -                    objIndex = -1;
                                  -                    parts.length = 0;
                                  -                    break;
                                  -                }
                                  -            }
                                  -
                                  -        }
                                  -        for (var i = 0; i < parts.length; ++i)
                                  -        {
                                  -            var part = parts[i];
                                  -            if (part && typeof(part) == "object")
                                  -            {
                                  -                var object = objects[++objIndex];
                                  -                if (typeof(object) != "undefined")
                                  -                    this.appendObject(object, row, part.rep);
                                  -                else
                                  -                    this.appendObject(part.type, row, FirebugReps.Text);
                                  -            }
                                  -            else
                                  -                FirebugReps.Text.tag.append({object: part}, row);
                                  -        }
                                  -
                                  -        for (var i = objIndex+1; i < objects.length; ++i)
                                  -        {
                                  -            logText(" ", row);
                                  -            var object = objects[i];
                                  -            if (typeof(object) == "string")
                                  -                FirebugReps.Text.tag.append({object: object}, row);
                                  -            else
                                  -                this.appendObject(object, row);
                                  -        }
                                  -    },
                                  -
                                  -    appendOpenGroup: function(objects, row, rep)
                                  -    {
                                  -        if (!this.groups)
                                  -            this.groups = [];
                                  -
                                  -        setClass(row, "logGroup");
                                  -        setClass(row, "opened");
                                  -
                                  -        var innerRow = this.createRow("logRow");
                                  -        setClass(innerRow, "logGroupLabel");
                                  -        if (rep)
                                  -            rep.tag.replace({"objects": objects}, innerRow);
                                  -        else
                                  -            this.appendFormatted(objects, innerRow, rep);
                                  -        row.appendChild(innerRow);
                                  -        //dispatch([Firebug.A11yModel], 'onLogRowCreated', [this, innerRow]);
                                  -        var groupBody = this.createRow("logGroupBody");
                                  -        row.appendChild(groupBody);
                                  -        groupBody.setAttribute('role', 'group');
                                  -        this.groups.push(groupBody);
                                  -
                                  -        addEvent(innerRow, "mousedown", function(event)
                                  -        {
                                  -            if (isLeftClick(event))
                                  -            {
                                  -                //console.log(event.currentTarget == event.target);
                                  -                
                                  -                var target = event.target || event.srcElement;
                                  -                
                                  -                target = getAncestorByClass(target, "logGroupLabel");
                                  -                
                                  -                var groupRow = target.parentNode;
                                  -                
                                  -                if (hasClass(groupRow, "opened"))
                                  -                {
                                  -                    removeClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'false');
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(groupRow, "opened");
                                  -                    target.setAttribute('aria-expanded', 'true');
                                  -                }
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    appendCloseGroup: function(object, row, rep)
                                  -    {
                                  -        if (this.groups)
                                  -            this.groups.pop();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "Console",
                                  -    title: "Console",
                                  -    searchable: true,
                                  -    breakable: true,
                                  -    editable: false,
                                  -    
                                  -    options:
                                  -    {
                                  -        isPreRendered: true,
                                  -        hasCommandLine: true
                                  -    },
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.context = Firebug.browser.window;
                                  -        this.document = Firebug.chrome.document;
                                  -        
                                  -        Firebug.Panel.initialize.apply(this, arguments);  // loads persisted content
                                  -        //Firebug.ActivablePanel.initialize.apply(this, arguments);  // loads persisted content
                                  -
                                  -        if (!this.persistedContent && Firebug.Console2.isAlwaysEnabled())
                                  -        {
                                  -            this.insertLogLimit(this.context);
                                  -
                                  -            // Initialize log limit and listen for changes.
                                  -            this.updateMaxLimit();
                                  -
                                  -            if (this.context.consoleReloadWarning)  // we have not yet injected the console
                                  -                this.insertReloadWarning();
                                  -        }
                                  -
                                  -        Firebug.Console.injector.install(Firebug.browser.window);
                                  -        consolex.trace();
                                  -        FTrace();
                                  -        //TODO: xxxpedro remove this 
                                  -        /*
                                  -        Firebug.Console2.openGroup(["asd"], null, "group", null, false);
                                  -        Firebug.Console2.log("asd");
                                  -        Firebug.Console2.log("asd");
                                  -        Firebug.Console2.log("asd");
                                  -        /**/
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.addObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    initializeNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this]);
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            this.onScroller = bind(this.onScroll, this);
                                  -            addEvent(this.panelNode, "scroll", this.onScroller);
                                  -        }
                                  -
                                  -        this.onResizer = bind(this.onResize, this);
                                  -        this.resizeEventTarget = Firebug.chrome.$('fbContentBox');
                                  -        addEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    destroyNode : function()
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this]);
                                  -        if (this.onScroller)
                                  -            removeEvent(this.panelNode, "scroll", this.onScroller);
                                  -
                                  -        removeEvent(this.resizeEventTarget, "resize", this.onResizer);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //TODO: xxxpedro console console2
                                  -        this.destroyNode();
                                  -
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -        
                                  -        this.context = null;
                                  -        this.document = null;
                                  -        
                                  -        //TODO: xxxpedro preferences prefs
                                  -        //prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -    },
                                  -
                                  -    ishow: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel show; " + this.context.getName(), state);
                                  -
                                  -        var enabled = Firebug.Console2.isAlwaysEnabled();
                                  -        if (enabled)
                                  -        {
                                  -             Firebug.Console2.disabledPanelPage.hide(this);
                                  -             this.showCommandLine(true);
                                  -             this.showToolbarButtons("fbConsoleButtons", true);
                                  -             Firebug.chrome.setGlobalAttribute("cmd_togglePersistConsole", "checked", this.persistContent);
                                  -
                                  -             if (state && state.wasScrolledToBottom)
                                  -             {
                                  -                 this.wasScrolledToBottom = state.wasScrolledToBottom;
                                  -                 delete state.wasScrolledToBottom;
                                  -             }
                                  -
                                  -             if (this.wasScrolledToBottom)
                                  -                 scrollToBottom(this.panelNode);
                                  -
                                  -             if (FBTrace.DBG_CONSOLE)
                                  -                 FBTrace.sysout("console.show ------------------ wasScrolledToBottom: " +
                                  -                    this.wasScrolledToBottom + ", " + this.context.getName());
                                  -        }
                                  -        else
                                  -        {
                                  -            this.hide(state);
                                  -            Firebug.Console2.disabledPanelPage.show(this);
                                  -        }
                                  -    },
                                  -
                                  -    ihide: function(state)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.panel hide; " + this.context.getName(), state);
                                  -
                                  -        this.showToolbarButtons("fbConsoleButtons", false);
                                  -        this.showCommandLine(false);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.hide ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        if (this.panelNode.offsetHeight)
                                  -            this.wasScrolledToBottom = isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (state)
                                  -            state.wasScrolledToBottom = this.wasScrolledToBottom;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.destroy ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", " + this.context.getName());
                                  -    },
                                  -
                                  -    shouldBreakOnNext: function()
                                  -    {
                                  -        // xxxHonza: shouldn't the breakOnErrors be context related?
                                  -        // xxxJJB, yes, but we can't support it because we can't yet tell
                                  -        // which window the error is on.
                                  -        return Firebug.getPref(Firebug.servicePrefDomain, "breakOnErrors");
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("console.Disable Break On All Errors") :
                                  -            $STR("console.Break On All Errors"));
                                  -    },
                                  -
                                  -    enablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.enablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.enablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(true);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    },
                                  -
                                  -    disablePanel: function(module)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.ConsolePanel.disablePanel; " + this.context.getName());
                                  -
                                  -        Firebug.ActivablePanel.disablePanel.apply(this, arguments);
                                  -
                                  -        this.showCommandLine(false);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowJavaScriptErrors", "showJSErrors"),
                                  -            optionMenu("ShowJavaScriptWarnings", "showJSWarnings"),
                                  -            optionMenu("ShowCSSErrors", "showCSSErrors"),
                                  -            optionMenu("ShowXMLErrors", "showXMLErrors"),
                                  -            optionMenu("ShowXMLHttpRequests", "showXMLHttpRequests"),
                                  -            optionMenu("ShowChromeErrors", "showChromeErrors"),
                                  -            optionMenu("ShowChromeMessages", "showChromeMessages"),
                                  -            optionMenu("ShowExternalErrors", "showExternalErrors"),
                                  -            optionMenu("ShowNetworkErrors", "showNetworkErrors"),
                                  -            this.getShowStackTraceMenuItem(),
                                  -            this.getStrictOptionMenuItem(),
                                  -            "-",
                                  -            optionMenu("LargeCommandLine", "largeCommandLine")
                                  -        ];
                                  -    },
                                  -
                                  -    getShowStackTraceMenuItem: function()
                                  -    {
                                  -        var menuItem = serviceOptionMenu("ShowStackTrace", "showStackTrace");
                                  -        if (FirebugContext && !Firebug.Debugger.isAlwaysEnabled())
                                  -            menuItem.disabled = true;
                                  -        return menuItem;
                                  -    },
                                  -
                                  -    getStrictOptionMenuItem: function()
                                  -    {
                                  -        var strictDomain = "javascript.options";
                                  -        var strictName = "strict";
                                  -        var strictValue = prefs.getBoolPref(strictDomain+"."+strictName);
                                  -        return {label: "JavascriptOptionsStrict", type: "checkbox", checked: strictValue,
                                  -            command: bindFixed(Firebug.setPref, Firebug, strictDomain, strictName, !strictValue) };
                                  -    },
                                  -
                                  -    getBreakOnMenuItems: function()
                                  -    {
                                  -        //xxxHonza: no BON options for now.
                                  -        /*return [
                                  -            optionMenu("console.option.Persist Break On Error", "persistBreakOnError")
                                  -        ];*/
                                  -       return [];
                                  -    },
                                  -
                                  -    search: function(text)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        // Make previously visible nodes invisible again
                                  -        if (this.matchSet)
                                  -        {
                                  -            for (var i in this.matchSet)
                                  -                removeClass(this.matchSet[i], "matched");
                                  -        }
                                  -
                                  -        this.matchSet = [];
                                  -
                                  -        function findRow(node) { return getAncestorByClass(node, "logRow"); }
                                  -        var search = new TextSearch(this.panelNode, findRow);
                                  -
                                  -        var logRow = search.find(text);
                                  -        if (!logRow)
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, []]);
                                  -            return false;
                                  -        }
                                  -        for (; logRow; logRow = search.findNext())
                                  -        {
                                  -            setClass(logRow, "matched");
                                  -            this.matchSet.push(logRow);
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onConsoleSearchMatchFound', [this, text, this.matchSet]);
                                  -        return true;
                                  -    },
                                  -
                                  -    breakOnNext: function(breaking)
                                  -    {
                                  -        Firebug.setPref(Firebug.servicePrefDomain, "breakOnErrors", breaking);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // private
                                  -
                                  -    createRow: function(rowName, className)
                                  -    {
                                  -        var elt = this.document.createElement("div");
                                  -        elt.className = rowName + (className ? " " + rowName + "-" + className : "");
                                  -        return elt;
                                  -    },
                                  -
                                  -    getTopContainer: function()
                                  -    {
                                  -        if (this.groups && this.groups.length)
                                  -            return this.groups[this.groups.length-1];
                                  -        else
                                  -            return this.panelNode;
                                  -    },
                                  -
                                  -    filterLogRow: function(logRow, scrolledToBottom)
                                  -    {
                                  -        if (this.searchText)
                                  -        {
                                  -            setClass(logRow, "matching");
                                  -            setClass(logRow, "matched");
                                  -
                                  -            // Search after a delay because we must wait for a frame to be created for
                                  -            // the new logRow so that the finder will be able to locate it
                                  -            setTimeout(bindFixed(function()
                                  -            {
                                  -                if (this.searchFilter(this.searchText, logRow))
                                  -                    this.matchSet.push(logRow);
                                  -                else
                                  -                    removeClass(logRow, "matched");
                                  -
                                  -                removeClass(logRow, "matching");
                                  -
                                  -                if (scrolledToBottom)
                                  -                    scrollToBottom(this.panelNode);
                                  -            }, this), 100);
                                  -        }
                                  -    },
                                  -
                                  -    searchFilter: function(text, logRow)
                                  -    {
                                  -        var count = this.panelNode.childNodes.length;
                                  -        var searchRange = this.document.createRange();
                                  -        searchRange.setStart(this.panelNode, 0);
                                  -        searchRange.setEnd(this.panelNode, count);
                                  -
                                  -        var startPt = this.document.createRange();
                                  -        startPt.setStartBefore(logRow);
                                  -
                                  -        var endPt = this.document.createRange();
                                  -        endPt.setStartAfter(logRow);
                                  -
                                  -        return finder.Find(text, searchRange, startPt, endPt) != null;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        // xxxHonza check this out.
                                  -        var prefDomain = "Firebug.extension.";
                                  -        var prefName = data.substr(prefDomain.length);
                                  -        if (prefName == "console.logLimit")
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = 1000;
                                  -        //TODO: xxxpedro preferences log limit?
                                  -        //var value = Firebug.getPref(Firebug.prefDomain, "console.logLimit");
                                  -        maxQueueRequests =  value ? value : maxQueueRequests;
                                  -    },
                                  -
                                  -    showCommandLine: function(shouldShow)
                                  -    {
                                  -        //TODO: xxxpedro show command line important
                                  -        return;
                                  -        
                                  -        if (shouldShow)
                                  -        {
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), false);
                                  -            Firebug.CommandLine.setMultiLine(Firebug.largeCommandLine, Firebug.chrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            // Make sure that entire content of the Console panel is hidden when
                                  -            // the panel is disabled.
                                  -            Firebug.CommandLine.setMultiLine(false, Firebug.chrome, Firebug.largeCommandLine);
                                  -            collapse(Firebug.chrome.$("fbCommandBox"), true);
                                  -        }
                                  -    },
                                  -
                                  -    onScroll: function(event)
                                  -    {
                                  -        // Update the scroll position flag if the position changes.
                                  -        this.wasScrolledToBottom = FBL.isScrolledToBottom(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onScroll ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", wasScrolledToBottom: " +
                                  -                this.context.getName(), event);
                                  -    },
                                  -
                                  -    onResize: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("console.onResize ------------------ wasScrolledToBottom: " +
                                  -                this.wasScrolledToBottom + ", offsetHeight: " + this.panelNode.offsetHeight +
                                  -                ", scrollTop: " + this.panelNode.scrollTop + ", scrollHeight: " +
                                  -                this.panelNode.scrollHeight + ", " + this.context.getName(), event);
                                  -
                                  -        if (this.wasScrolledToBottom)
                                  -            scrollToBottom(this.panelNode);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseFormat(format)
                                  -{
                                  -    var parts = [];
                                  -    if (format.length <= 0)
                                  -        return parts;
                                  -
                                  -    var reg = /((^%|.%)(\d+)?(\.)([a-zA-Z]))|((^%|.%)([a-zA-Z]))/;
                                  -    for (var m = reg.exec(format); m; m = reg.exec(format))
                                  -    {
                                  -        if (m[0].substr(0, 2) == "%%")
                                  -        {
                                  -            parts.push(format.substr(0, m.index));
                                  -            parts.push(m[0].substr(1));
                                  -        }
                                  -        else
                                  -        {
                                  -            var type = m[8] ? m[8] : m[5];
                                  -            var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
                                  -
                                  -            var rep = null;
                                  -            switch (type)
                                  -            {
                                  -                case "s":
                                  -                    rep = FirebugReps.Text;
                                  -                    break;
                                  -                case "f":
                                  -                case "i":
                                  -                case "d":
                                  -                    rep = FirebugReps.Number;
                                  -                    break;
                                  -                case "o":
                                  -                    rep = null;
                                  -                    break;
                                  -            }
                                  -
                                  -            parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
                                  -            parts.push({rep: rep, precision: precision, type: ("%" + type)});
                                  -        }
                                  -
                                  -        format = format.substr(m.index+m[0].length);
                                  -    }
                                  -
                                  -    parts.push(format);
                                  -    return parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var appendObject = Firebug.ConsolePanel.prototype.appendObject;
                                  -var appendFormatted = Firebug.ConsolePanel.prototype.appendFormatted;
                                  -var appendOpenGroup = Firebug.ConsolePanel.prototype.appendOpenGroup;
                                  -var appendCloseGroup = Firebug.ConsolePanel.prototype.appendCloseGroup;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerActivableModule(Firebug.Console);
                                  -Firebug.registerModule(Firebug.Console2);
                                  -Firebug.registerPanel(Firebug.ConsolePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/consoleInjector.js b/tags/firebug1.3a5/content/firebug/consoleInjector.js
                                  deleted file mode 100644
                                  index 4e6a5d28..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/consoleInjector.js
                                  +++ /dev/null
                                  @@ -1,604 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -Firebug.Console2.injector =
                                  -{
                                  -    install: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        
                                  -        var consoleHandler = new FirebugConsoleHandler(context, win);
                                  -        
                                  -        var properties = 
                                  -        [
                                  -            "log",
                                  -            "debug",
                                  -            "info",
                                  -            "warn",
                                  -            "error",
                                  -            "assert",
                                  -            "dir",
                                  -            "dirxml",
                                  -            "group",
                                  -            "groupEnd",
                                  -            "time",
                                  -            "timeEnd",
                                  -            "count",
                                  -            "trace",
                                  -            "profile",
                                  -            "profileEnd",
                                  -            "clear",
                                  -            "open",
                                  -            "close"
                                  -        ];
                                  -        
                                  -        var Handler = function(name)
                                  -        {
                                  -            var c = consoleHandler;
                                  -            var f = consoleHandler[name];
                                  -            return function(){return f.apply(c,arguments)};
                                  -        };
                                  -        
                                  -        var installer = function(c)
                                  -        {
                                  -            for (var i=0, l=properties.length; i<l; i++)
                                  -            {
                                  -                var name = properties[i];
                                  -                c[name] = new Handler(name);
                                  -            }
                                  -        };
                                  -        
                                  -        var sandbox = new win.Function("arguments.callee.install(window.consolex={})");
                                  -        sandbox.install = installer;
                                  -        sandbox();
                                  -    },
                                  -    
                                  -    isAttached: function(context, win)
                                  -    {
                                  -        if (win.wrappedJSObject)
                                  -        {
                                  -            var attached = (win.wrappedJSObject._getFirebugConsoleElement ? true : false);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached:"+attached+" to win.wrappedJSObject "+safeGetWindowLocation(win.wrappedJSObject));
                                  -
                                  -            return attached;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("Console.isAttached? to win "+win.location+" fnc:"+win._getFirebugConsoleElement);
                                  -            return (win._getFirebugConsoleElement ? true : false);
                                  -        }
                                  -    },
                                  -
                                  -    attachIfNeeded: function(context, win)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded has win "+(win? ((win.wrappedJSObject?"YES":"NO")+" wrappedJSObject"):"null") );
                                  -
                                  -        if (this.isAttached(context, win))
                                  -            return true;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("Console.attachIfNeeded found isAttached false ");
                                  -
                                  -        this.attachConsoleInjector(context, win);
                                  -        this.addConsoleListener(context, win);
                                  -
                                  -        Firebug.Console2.clearReloadWarning(context);
                                  -
                                  -        var attached =  this.isAttached(context, win);
                                  -        if (attached)
                                  -            dispatch(Firebug.Console2.fbListeners, "onConsoleInjected", [context, win]);
                                  -
                                  -        return attached;
                                  -    },
                                  -
                                  -    attachConsoleInjector: function(context, win)
                                  -    {
                                  -        var consoleInjection = this.getConsoleInjectionScript();  // Do it all here.
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluating in "+win.location, consoleInjection);
                                  -
                                  -        Firebug.CommandLine.evaluateInWebPage(consoleInjection, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("attachConsoleInjector evaluation completed for "+win.location);
                                  -    },
                                  -
                                  -    getConsoleInjectionScript: function() {
                                  -        if (!this.consoleInjectionScript)
                                  -        {
                                  -            var script = "";
                                  -            script += "window.__defineGetter__('console', function() {\n";
                                  -            script += " return (window._firebug ? window._firebug : window.loadFirebugConsole()); })\n\n";
                                  -
                                  -            script += "window.loadFirebugConsole = function() {\n";
                                  -            script += "window._firebug =  new _FirebugConsole();";
                                  -
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                script += " window.dump('loadFirebugConsole '+window.location+'\\n');\n";
                                  -
                                  -            script += " return window._firebug };\n";
                                  -
                                  -            var theFirebugConsoleScript = getResource("chrome://firebug/content/consoleInjected.js");
                                  -            script += theFirebugConsoleScript;
                                  -
                                  -
                                  -            this.consoleInjectionScript = script;
                                  -        }
                                  -        return this.consoleInjectionScript;
                                  -    },
                                  -
                                  -    forceConsoleCompilationInPage: function(context, win)
                                  -    {
                                  -        if (!win)
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("no win in forceConsoleCompilationInPage!");
                                  -            return;
                                  -        }
                                  -
                                  -        var consoleForcer = "window.loadFirebugConsole();";
                                  -
                                  -        if (context.stopped)
                                  -            Firebug.Console2.injector.evaluateConsoleScript(context);  // todo evaluate consoleForcer on stack
                                  -        else
                                  -            Firebug.CommandLine.evaluateInWebPage(consoleForcer, context, win);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("forceConsoleCompilationInPage "+win.location, consoleForcer);
                                  -    },
                                  -
                                  -    evaluateConsoleScript: function(context)
                                  -    {
                                  -        var scriptSource = this.getConsoleInjectionScript(); // TODO XXXjjb this should be getConsoleInjectionScript
                                  -        Firebug.Debugger.evaluate(scriptSource, context);
                                  -    },
                                  -
                                  -    addConsoleListener: function(context, win)
                                  -    {
                                  -        if (!context.activeConsoleHandlers)  // then we have not been this way before
                                  -            context.activeConsoleHandlers = [];
                                  -        else
                                  -        {   // we've been this way before...
                                  -            for (var i=0; i<context.activeConsoleHandlers.length; i++)
                                  -            {
                                  -                if (context.activeConsoleHandlers[i].window == win)
                                  -                {
                                  -                    context.activeConsoleHandlers[i].detach();
                                  -                    if (FBTrace.DBG_CONSOLE)
                                  -                        FBTrace.sysout("consoleInjector addConsoleListener removed handler("+context.activeConsoleHandlers[i].handler_name+") from _firebugConsole in : "+win.location+"\n");
                                  -                    context.activeConsoleHandlers.splice(i,1);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // We need the element to attach our event listener.
                                  -        var element = Firebug.Console2.getFirebugConsoleElement(context, win);
                                  -        if (element)
                                  -            element.setAttribute("FirebugVersion", Firebug.version); // Initialize Firebug version.
                                  -        else
                                  -            return false;
                                  -
                                  -        var handler = new FirebugConsoleHandler(context, win);
                                  -        handler.attachTo(element);
                                  -
                                  -        context.activeConsoleHandlers.push(handler);
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector addConsoleListener attached handler("+handler.handler_name+") to _firebugConsole in : "+win.location+"\n");
                                  -        return true;
                                  -    },
                                  -
                                  -    detachConsole: function(context, win)
                                  -    {
                                  -        if (win && win.document)
                                  -        {
                                  -            var element = win.document.getElementById("_firebugConsole");
                                  -            if (element)
                                  -                element.parentNode.removeChild(element);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var total_handlers = 0;
                                  -var FirebugConsoleHandler = function FirebugConsoleHandler(context, win)
                                  -{
                                  -    this.window = win;
                                  -
                                  -    this.attachTo = function(element)
                                  -    {
                                  -        this.element = element;
                                  -        // When raised on our injected element, callback to Firebug and append to console
                                  -        this.boundHandler = bind(this.handleEvent, this);
                                  -        this.element.addEventListener('firebugAppendConsole', this.boundHandler, true); // capturing
                                  -    };
                                  -
                                  -    this.detach = function()
                                  -    {
                                  -        this.element.removeEventListener('firebugAppendConsole', this.boundHandler, true);
                                  -    };
                                  -
                                  -    this.handler_name = ++total_handlers;
                                  -    this.handleEvent = function(event)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("FirebugConsoleHandler("+this.handler_name+") "+event.target.getAttribute("methodName")+", event", event);
                                  -        if (!Firebug.CommandLine.CommandHandler.handle(event, this, win))
                                  -        {
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("FirebugConsoleHandler", this);
                                  -
                                  -            var methodName = event.target.getAttribute("methodName");
                                  -            Firebug.Console2.log($STRF("console.MethodNotSupported", [methodName]));
                                  -        }
                                  -    };
                                  -
                                  -    this.firebug = Firebug.version;
                                  -
                                  -    this.init = function()
                                  -    {
                                  -        var consoleElement = win.document.getElementById('_firebugConsole');
                                  -        consoleElement.setAttribute("FirebugVersion", Firebug.version);
                                  -    };
                                  -
                                  -    this.log = function()
                                  -    {
                                  -        logFormatted(arguments, "log");
                                  -    };
                                  -
                                  -    this.debug = function()
                                  -    {
                                  -        logFormatted(arguments, "debug", true);
                                  -    };
                                  -
                                  -    this.info = function()
                                  -    {
                                  -        logFormatted(arguments, "info", true);
                                  -    };
                                  -
                                  -    this.warn = function()
                                  -    {
                                  -        logFormatted(arguments, "warn", true);
                                  -    };
                                  -
                                  -    this.error = function()
                                  -    {
                                  -        if (arguments.length == 1)
                                  -        {
                                  -            logAssert("error", arguments);  // add more info based on stack trace
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.Errors.increaseCount(context);
                                  -            logFormatted(arguments, "error", true);  // user already added info
                                  -        }
                                  -    };
                                  -
                                  -    this.exception = function()
                                  -    {
                                  -        logAssert("error", arguments);
                                  -    };
                                  -
                                  -    this.assert = function(x)
                                  -    {
                                  -        if (!x)
                                  -        {
                                  -            var rest = [];
                                  -            for (var i = 1; i < arguments.length; i++)
                                  -                rest.push(arguments[i]);
                                  -            logAssert("assert", rest);
                                  -        }
                                  -    };
                                  -
                                  -    this.dir = function(o)
                                  -    {
                                  -        Firebug.Console2.log(o, context, "dir", Firebug.DOMPanel.DirTable);
                                  -    };
                                  -
                                  -    this.dirxml = function(o)
                                  -    {
                                  -        if (o instanceof Window)
                                  -            o = o.document.documentElement;
                                  -        else if (o instanceof Document)
                                  -            o = o.documentElement;
                                  -
                                  -        Firebug.Console2.log(o, context, "dirxml", Firebug.HTMLPanel.SoloElement);
                                  -    };
                                  -
                                  -    this.group = function()
                                  -    {
                                  -        //TODO: xxxpedro;
                                  -        //var sourceLink = getStackLink();
                                  -        var sourceLink = null;
                                  -        Firebug.Console2.openGroup(arguments, null, "group", null, false, sourceLink);
                                  -    };
                                  -
                                  -    this.groupEnd = function()
                                  -    {
                                  -        Firebug.Console2.closeGroup(context);
                                  -    };
                                  -
                                  -    this.groupCollapsed = function()
                                  -    {
                                  -        var sourceLink = getStackLink();
                                  -        // noThrottle true is probably ok, openGroups will likely be short strings.
                                  -        var row = Firebug.Console2.openGroup(arguments, null, "group", null, true, sourceLink);
                                  -        removeClass(row, "opened");
                                  -    };
                                  -
                                  -    this.profile = function(title)
                                  -    {
                                  -        Firebug.Profiler.startProfiling(context, title);
                                  -    };
                                  -
                                  -    this.profileEnd = function()
                                  -    {
                                  -        Firebug.Profiler.stopProfiling(context);
                                  -    };
                                  -
                                  -    this.count = function(key)
                                  -    {
                                  -        var frameId = FBL.getStackFrameId();
                                  -        if (frameId)
                                  -        {
                                  -            if (!context.frameCounters)
                                  -                context.frameCounters = {};
                                  -
                                  -            if (key != undefined)
                                  -                frameId += key;
                                  -
                                  -            var frameCounter = context.frameCounters[frameId];
                                  -            if (!frameCounter)
                                  -            {
                                  -                var logRow = logFormatted(["0"], null, true, true);
                                  -
                                  -                frameCounter = {logRow: logRow, count: 1};
                                  -                context.frameCounters[frameId] = frameCounter;
                                  -            }
                                  -            else
                                  -                ++frameCounter.count;
                                  -
                                  -            var label = key == undefined
                                  -                ? frameCounter.count
                                  -                : key + " " + frameCounter.count;
                                  -
                                  -            frameCounter.logRow.firstChild.firstChild.nodeValue = label;
                                  -        }
                                  -    };
                                  -
                                  -    this.trace = function()
                                  -    {
                                  -        var getFuncName = function getFuncName (f)
                                  -        {
                                  -            if (f.getName instanceof Function)
                                  -                return f.getName();
                                  -            if (f.name) // in FireFox, Function objects have a name property...
                                  -                return f.name;
                                  -            
                                  -            var name = f.toString().match(/function\s*([_$\w\d]*)/)[1];
                                  -            return name || "anonymous";
                                  -        };
                                  -        
                                  -        var wasVisited = function(fn)
                                  -        {
                                  -            for (var i=0, l=stack.length; i<l; i++)
                                  -            {
                                  -                if (stack[i] == fn)
                                  -                    return true;
                                  -            }
                                  -            
                                  -            return false;
                                  -        };
                                  -    
                                  -        var stack = [];
                                  -        
                                  -        var traceLabel = "Stack Trace";
                                  -        
                                  -        this.group(traceLabel);
                                  -        
                                  -        for (var fn = arguments.callee.caller; fn; fn = fn.caller)
                                  -        {
                                  -            if (wasVisited(fn)) break;
                                  -            
                                  -            stack.push(fn);
                                  -            
                                  -            var html = [ getFuncName(fn), "(" ];
                                  -
                                  -            for (var i = 0, l = fn.arguments.length; i < l; ++i)
                                  -            {
                                  -                if (i)
                                  -                    html.push(", ");
                                  -                
                                  -                Firebug.Reps.appendObject(fn.arguments[i], html);
                                  -            }
                                  -
                                  -            html.push(")");
                                  -            //Firebug.Console.logRow(html, "stackTrace");
                                  -            Firebug.Console.log(html, Firebug.browser, "stackTrace");
                                  -        }
                                  -        
                                  -        this.groupEnd(traceLabel);
                                  -        
                                  -        return Firebug.Console.LOG_COMMAND; 
                                  -    };
                                  -    
                                  -    this.clear = function()
                                  -    {
                                  -        Firebug.Console2.clear(context);
                                  -    };
                                  -
                                  -    this.time = function(name, reset)
                                  -    {
                                  -        if (!name)
                                  -            return;
                                  -
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            this.timeCounters = {};
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        if (!reset && this.timeCounters[key])
                                  -            return;
                                  -
                                  -        this.timeCounters[key] = time;
                                  -    };
                                  -
                                  -    this.timeEnd = function(name)
                                  -    {
                                  -        var time = new Date().getTime();
                                  -
                                  -        if (!this.timeCounters)
                                  -            return;
                                  -
                                  -        var key = "KEY"+name.toString();
                                  -
                                  -        var timeCounter = this.timeCounters[key];
                                  -        if (timeCounter)
                                  -        {
                                  -            var diff = time - timeCounter;
                                  -            var label = name + ": " + diff + "ms";
                                  -
                                  -            this.info(label);
                                  -
                                  -            delete this.timeCounters[key];
                                  -        }
                                  -        return diff;
                                  -    };
                                  -
                                  -    // These functions are over-ridden by commandLine
                                  -    this.evaluated = function(result, context)
                                  -    {
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.FirebugConsoleHandler evalutated default called", result);
                                  -
                                  -        Firebug.Console2.log(result, context);
                                  -    };
                                  -    this.evaluateError = function(result, context)
                                  -    {
                                  -        Firebug.Console2.log(result, context, "errorMessage");
                                  -    };
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    function logFormatted(args, className, linkToSource, noThrottle)
                                  -    {
                                  -        var sourceLink = linkToSource ? getStackLink() : null;
                                  -        return Firebug.Console2.logFormatted(args, context, className, noThrottle, sourceLink);
                                  -    }
                                  -
                                  -    function logAssert(category, args)
                                  -    {
                                  -        Firebug.Errors.increaseCount(context);
                                  -
                                  -        if (!args || !args.length || args.length == 0)
                                  -            var msg = [FBL.$STR("Assertion")];
                                  -        else
                                  -            var msg = args[0];
                                  -
                                  -        if (Firebug.errorStackTrace)
                                  -        {
                                  -            var trace = Firebug.errorStackTrace;
                                  -            delete Firebug.errorStackTrace;
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from errorStackTrace", trace);
                                  -        }
                                  -        else if (msg.stack)
                                  -        {
                                  -            var trace = parseToStackTrace(msg.stack);
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from msg.stack", trace);
                                  -        }
                                  -        else
                                  -        {
                                  -            var trace = getJSDUserStack();
                                  -            if (FBTrace.DBG_CONSOLE)
                                  -                FBTrace.sysout("logAssert trace from getJSDUserStack", trace);
                                  -        }
                                  -
                                  -        var errorObject = new FBL.ErrorMessage(msg, (msg.fileName?msg.fileName:win.location), (msg.lineNumber?msg.lineNumber:0), "", category, context, trace);
                                  -
                                  -
                                  -        if (trace && trace.frames && trace.frames[0])
                                  -           errorObject.correctWithStackTrace(trace);
                                  -
                                  -        errorObject.resetSource();
                                  -
                                  -        var objects = errorObject;
                                  -        if (args.length > 1)
                                  -        {
                                  -            objects = [errorObject];
                                  -            for (var i = 1; i < args.length; i++)
                                  -                objects.push(args[i]);
                                  -        }
                                  -
                                  -        var row = Firebug.Console2.log(objects, context, "errorMessage", null, true); // noThrottle
                                  -        row.scrollIntoView();
                                  -    }
                                  -
                                  -    function getComponentsStackDump()
                                  -    {
                                  -        // Starting with our stack, walk back to the user-level code
                                  -        var frame = Components.stack;
                                  -        var userURL = win.location.href.toString();
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump initial stack for userURL "+userURL, frame);
                                  -
                                  -        // Drop frames until we get into user code.
                                  -        while (frame && FBL.isSystemURL(frame.filename) )
                                  -            frame = frame.caller;
                                  -
                                  -        // Drop two more frames, the injected console function and firebugAppendConsole()
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -        if (frame)
                                  -            frame = frame.caller;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -            FBTrace.sysout("consoleInjector.getComponentsStackDump final stack for userURL "+userURL, frame);
                                  -
                                  -        return frame;
                                  -    }
                                  -
                                  -    function getStackLink()
                                  -    {
                                  -        return FBL.getFrameSourceLink(getComponentsStackDump());
                                  -    }
                                  -
                                  -    function getJSDUserStack()
                                  -    {
                                  -        var trace = FBL.getCurrentStackTrace(context);
                                  -
                                  -        var frames = trace ? trace.frames : null;
                                  -        if (frames && (frames.length > 0) )
                                  -        {
                                  -            var oldest = frames.length - 1;  // 6 - 1 = 5
                                  -            for (var i = 0; i < frames.length; i++)
                                  -            {
                                  -                if (frames[oldest - i].href.indexOf("chrome:") == 0) break;
                                  -                var fn = frames[oldest - i].fn + "";
                                  -                if (fn && (fn.indexOf("_firebugEvalEvent") != -1) ) break;  // command line
                                  -            }
                                  -            FBTrace.sysout("consoleInjector getJSDUserStack: "+frames.length+" oldest: "+oldest+" i: "+i+" i - oldest + 2: "+(i - oldest + 2), trace);
                                  -            trace.frames = trace.frames.slice(2 - i);  // take the oldest frames, leave 2 behind they are injection code
                                  -
                                  -            return trace;
                                  -        }
                                  -        else
                                  -            return "Firebug failed to get stack trace with any frames";
                                  -    }
                                  -}
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/context.js b/tags/firebug1.3a5/content/firebug/context.js
                                  deleted file mode 100644
                                  index fb976d44..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/context.js
                                  +++ /dev/null
                                  @@ -1,532 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Context
                                  -  
                                  -FBL.Context = function(win)
                                  -{
                                  -    this.window = win.window;
                                  -    this.document = win.document;
                                  -    
                                  -    // Some windows in IE, like iframe, doesn't have the eval() method
                                  -    if (isIE && !this.window.eval)
                                  -    {
                                  -        // But after executing the following line the method magically appears!
                                  -        this.window.execScript("null");
                                  -        // Just to make sure the "magic" really happened
                                  -        if (!this.window.eval)
                                  -            throw new Error("Firebug Error: eval() method not found in this window");
                                  -    }
                                  -    
                                  -    // Create a new "black-box" eval() method that runs in the global namespace
                                  -    // of the context window, without exposing the local variables declared
                                  -    // by the function that calls it
                                  -    this.eval = this.window.eval("new Function('" +
                                  -            "try{ return window.eval.apply(window,arguments) }catch(E){ E."+evalError+"=true; return E }" +
                                  -        "')");
                                  -};
                                  -
                                  -FBL.Context.prototype =
                                  -{  
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Evalutation Method
                                  -    
                                  -    /**
                                  -     * Evaluates an expression in the current context window.
                                  -     * 
                                  -     * @param {String}   expr           expression to be evaluated
                                  -     * 
                                  -     * @param {String}   context        string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  context. The context is referred in
                                  -     *                                  the expression as the "this" keyword.
                                  -     *                                  If no context is informed, the "window"
                                  -     *                                  context is used.
                                  -     *                                  
                                  -     * @param {String}   api            string indicating the global location
                                  -     *                                  of the object that will be used as the
                                  -     *                                  api of the evaluation.
                                  -     *                                  
                                  -     * @param {Function} errorHandler(message) error handler to be called
                                  -     *                                         if the evaluation fails.
                                  -     */
                                  -    evaluate: function(expr, context, api, errorHandler)
                                  -    {
                                  -        // Need to remove line breaks otherwise only the first line will be executed
                                  -        expr = stripNewLines(expr);
                                  -        
                                  -        // the default context is the "window" object. It can be any string that represents
                                  -        // a global accessible element as: "my.namespaced.object"
                                  -        context = context || "window";
                                  -        
                                  -        var cmd,
                                  -            result;
                                  -        
                                  -        // if the context is the "window" object, we don't need a closure
                                  -        if (context == "window")
                                  -        {
                                  -            // try first the expression wrapped in parenthesis (so we can capture 
                                  -            // object literal expressions like "{}" and "{some:1,props:2}")
                                  -            cmd = api ?
                                  -                "with("+api+"){ ("+expr+") }" :
                                  -                "(" + expr + ")";
                                  -            
                                  -            result = this.eval(cmd);
                                  -            
                                  -            // if it results in error, then try it without parenthesis 
                                  -            if (result && result[evalError])
                                  -            {
                                  -                cmd = api ?
                                  -                    "with("+api+"){ "+expr+" }" :
                                  -                    expr;
                                  -                
                                  -                result = this.eval(cmd);
                                  -
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            // try to execute the command using a "return" statement in the evaluation closure.
                                  -            cmd = api ?
                                  -                // with API and context, trying to get the return value
                                  -                "(function(arguments){ with(" + api + "){ return (" + 
                                  -                    expr + 
                                  -                ") } }).call(" + context + ",undefined)"
                                  -                :
                                  -                // with context only, trying to get the return value
                                  -                "(function(arguments){ return (" +
                                  -                    expr +
                                  -                ") }).call(" +context + ",undefined)";
                                  -            
                                  -            result = this.eval(cmd);
                                  -            
                                  -            // if it results in error, then try it without the "return" statement 
                                  -            if (result && result[evalError])
                                  -            {
                                  -                cmd = api ?
                                  -                    // with API and context, no return value
                                  -                    "(function(arguments){ with(" + api + "){ " +
                                  -                        expr + 
                                  -                    " } }).call(" + context + ",undefined)"
                                  -                    :
                                  -                    // with context only, no return value
                                  -                    "(function(arguments){ " + 
                                  -                        expr + 
                                  -                    " }).call(" + context + ",undefined)";
                                  -                    
                                  -                result = this.eval(cmd);
                                  -            }
                                  -        }
                                  -        
                                  -        if (result && result[evalError])
                                  -        {
                                  -            var msg = result.name ? (result.name + ": ") : "";
                                  -            msg += result.message || result;
                                  -            
                                  -            if (errorHandler)
                                  -                result = errorHandler(msg)
                                  -            else
                                  -                result = msg;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Window Methods
                                  -    
                                  -    getWindowSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -        
                                  -        if (typeof this.window.innerWidth == "number")
                                  -        {
                                  -            width = this.window.innerWidth;
                                  -            height = this.window.innerHeight;
                                  -        }
                                  -        else if ((el=this.document.documentElement) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        else if ((el=this.document.body) && (el.clientHeight || el.clientWidth))
                                  -        {
                                  -            width = el.clientWidth;
                                  -            height = el.clientHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollSize: function()
                                  -    {
                                  -        var width=0, height=0, el;
                                  -
                                  -        // first try the document.documentElement scroll size
                                  -        if (!isIEQuiksMode && (el=this.document.documentElement) && 
                                  -           (el.scrollHeight || el.scrollWidth))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        // then we need to check if document.body has a bigger scroll size value
                                  -        // because sometimes depending on the browser and the page, the document.body
                                  -        // scroll size returns a smaller (and wrong) measure
                                  -        if ((el=this.document.body) && (el.scrollHeight || el.scrollWidth) &&
                                  -            (el.scrollWidth > width || el.scrollHeight > height))
                                  -        {
                                  -            width = el.scrollWidth;
                                  -            height = el.scrollHeight;
                                  -        }
                                  -        
                                  -        return {width: width, height: height};
                                  -    },
                                  -    
                                  -    getWindowScrollPosition: function()
                                  -    {
                                  -        var top=0, left=0, el;
                                  -        
                                  -        if(typeof this.window.pageYOffset == "number")
                                  -        {
                                  -            top = this.window.pageYOffset;
                                  -            left = this.window.pageXOffset;
                                  -        }
                                  -        else if((el=this.document.body) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        else if((el=this.document.documentElement) && (el.scrollTop || el.scrollLeft))
                                  -        {
                                  -            top = el.scrollTop;
                                  -            left = el.scrollLeft;
                                  -        }
                                  -        
                                  -        return {top:top, left:left};
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Element Methods
                                  -
                                  -    getElementFromPoint: function(x, y)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        // getElementFromPoint results are different from Chrome 3 and 4 (beta) versions!
                                  -        // Check if this behavior will be the official one in the 4 final release
                                  -        if (isOpera || isSafari && !Env.isChromeExtension)
                                  -        {
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            return this.document.elementFromPoint(x + scroll.left, y + scroll.top);
                                  -        }
                                  -        else
                                  -            return this.document.elementFromPoint(x, y);
                                  -    },
                                  -    
                                  -    getElementPosition: function(el)
                                  -    {
                                  -        var left = 0
                                  -        var top = 0;
                                  -        
                                  -        do
                                  -        {
                                  -            left += el.offsetLeft;
                                  -            top += el.offsetTop;
                                  -        }
                                  -        while (el = el.offsetParent);
                                  -            
                                  -        return {left:left, top:top};      
                                  -    },
                                  -    
                                  -    getElementBox: function(el)
                                  -    {
                                  -        var result = {};
                                  -        
                                  -        if (el.getBoundingClientRect)
                                  -        {
                                  -            var rect = el.getBoundingClientRect();
                                  -            
                                  -            // fix IE problem with offset when not in fullscreen mode
                                  -            var offset = isIE ? this.document.body.clientTop || this.document.documentElement.clientTop: 0;
                                  -            
                                  -            var scroll = this.getWindowScrollPosition();
                                  -            
                                  -            result.top = Math.round(rect.top - offset + scroll.top);
                                  -            result.left = Math.round(rect.left - offset + scroll.left);
                                  -            result.height = Math.round(rect.bottom - rect.top);
                                  -            result.width = Math.round(rect.right - rect.left);
                                  -        }
                                  -        else 
                                  -        {
                                  -            var position = this.getElementPosition(el);
                                  -            
                                  -            result.top = position.top;
                                  -            result.left = position.left;
                                  -            result.height = el.offsetHeight;
                                  -            result.width = el.offsetWidth;
                                  -        }
                                  -        
                                  -        return result;
                                  -    },
                                  -    
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Measurement Methods
                                  -    
                                  -    getMeasurement: function(el, name)
                                  -    {
                                  -        var result = {value: 0, unit: "px"};
                                  -        
                                  -        var cssValue = this.getCSS(el, name);
                                  -        
                                  -        if (!cssValue) return result;
                                  -        if (cssValue.toLowerCase() == "auto") return result;
                                  -        
                                  -        var reMeasure = /(\d+\.?\d*)(.*)/;
                                  -        var m = cssValue.match(reMeasure);
                                  -        
                                  -        if (m)
                                  -        {
                                  -            result.value = m[1]-0;
                                  -            result.unit = m[2].toLowerCase();
                                  -        }
                                  -        
                                  -        return result;        
                                  -    },
                                  -    
                                  -    getMeasurementInPixels: function(el, name)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var m = this.getMeasurement(el, name);
                                  -        var value = m.value;
                                  -        var unit = m.unit;
                                  -        
                                  -        if (unit == "px")
                                  -            return value;
                                  -          
                                  -        else if (unit == "pt")
                                  -            return this.pointsToPixels(name, value);
                                  -          
                                  -        if (unit == "em")
                                  -            return this.emToPixels(el, value);
                                  -          
                                  -        else if (unit == "%")
                                  -            return this.percentToPixels(el, value);
                                  -    },
                                  -
                                  -    getMeasurementBox1: function(el, name)
                                  -    {
                                  -        var sufixes = ["Top", "Left", "Bottom", "Right"];
                                  -        var result = [];
                                  -        
                                  -        for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            result[i] = Math.round(this.getMeasurementInPixels(el, name + sufix));
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    },
                                  -    
                                  -    getMeasurementBox: function(el, name)
                                  -    {
                                  -        var result = [];
                                  -        var sufixes = name == "border" ?
                                  -                ["TopWidth", "LeftWidth", "BottomWidth", "RightWidth"] :
                                  -                ["Top", "Left", "Bottom", "Right"];
                                  -        
                                  -        if (isIE)
                                  -        {
                                  -            var propName, cssValue;
                                  -            var autoMargin = null;
                                  -            
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -            {
                                  -                propName = name + sufix;
                                  -                
                                  -                cssValue = el.currentStyle[propName] || el.style[propName]; 
                                  -                
                                  -                if (cssValue == "auto")
                                  -                {
                                  -                    if (!autoMargin)
                                  -                        autoMargin = this.getCSSAutoMarginBox(el);
                                  -                    
                                  -                    result[i] = autoMargin[sufix.toLowerCase()];
                                  -                }
                                  -                else
                                  -                    result[i] = this.getMeasurementInPixels(el, propName);
                                  -                      
                                  -            }
                                  -        
                                  -        }
                                  -        else
                                  -        {
                                  -            for(var i=0, sufix; sufix=sufixes[i]; i++)
                                  -                result[i] = this.getMeasurementInPixels(el, name + sufix);
                                  -        }
                                  -        
                                  -        return {top:result[0], left:result[1], bottom:result[2], right:result[3]};
                                  -    }, 
                                  -    
                                  -    getCSSAutoMarginBox: function(el)
                                  -    {
                                  -        if (isIE && " meta title input script link a ".indexOf(" "+el.nodeName.toLowerCase()+" ") != -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        if (isIE && " h1 h2 h3 h4 h5 h6 h7 ul p ".indexOf(" "+el.nodeName.toLowerCase()+" ") == -1)
                                  -            return {top:0, left:0, bottom:0, right:0};
                                  -            /**/
                                  -            
                                  -        var offsetTop = 0;
                                  -        if (false && isIEStantandMode)
                                  -        {
                                  -            var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -            offsetTop = scrollSize.height;
                                  -        }
                                  -        
                                  -        var box = this.document.createElement("div");
                                  -        //box.style.cssText = "margin:0; padding:1px; border: 0; position:static; overflow:hidden; visibility: hidden;";
                                  -        box.style.cssText = "margin:0; padding:1px; border: 0; visibility: hidden;";
                                  -        
                                  -        var clone = el.cloneNode(false);
                                  -        var text = this.document.createTextNode("&nbsp;");
                                  -        clone.appendChild(text);
                                  -        
                                  -        box.appendChild(clone);
                                  -    
                                  -        this.document.body.appendChild(box);
                                  -        
                                  -        var marginTop = clone.offsetTop - box.offsetTop - 1;
                                  -        var marginBottom = box.offsetHeight - clone.offsetHeight - 2 - marginTop;
                                  -        
                                  -        var marginLeft = clone.offsetLeft - box.offsetLeft - 1;
                                  -        var marginRight = box.offsetWidth - clone.offsetWidth - 2 - marginLeft;
                                  -        
                                  -        this.document.body.removeChild(box);
                                  -        
                                  -        return {top:marginTop+offsetTop, left:marginLeft, bottom:marginBottom-offsetTop, right:marginRight};
                                  -    },
                                  -    
                                  -    getFontSizeInPixels: function(el)
                                  -    {
                                  -        var size = this.getMeasurement(el, "fontSize");
                                  -        
                                  -        if (size.unit == "px") return size.value;
                                  -        
                                  -        // get font size, the dirty way
                                  -        var computeDirtyFontSize = function(el, calibration)
                                  -        {
                                  -            var div = this.document.createElement("div");
                                  -            var divStyle = offscreenStyle;
                                  -
                                  -            if (calibration)
                                  -                divStyle +=  " font-size:"+calibration+"px;";
                                  -            
                                  -            div.style.cssText = divStyle;
                                  -            div.innerHTML = "A";
                                  -            el.appendChild(div);
                                  -            
                                  -            var value = div.offsetHeight;
                                  -            el.removeChild(div);
                                  -            return value;
                                  -        }
                                  -        
                                  -        /*
                                  -        var calibrationBase = 200;
                                  -        var calibrationValue = computeDirtyFontSize(el, calibrationBase);
                                  -        var rate = calibrationBase / calibrationValue;
                                  -        /**/
                                  -        
                                  -        // the "dirty technique" fails in some environments, so we're using a static value
                                  -        // based in some tests.
                                  -        var rate = 200 / 225;
                                  -        
                                  -        var value = computeDirtyFontSize(el);
                                  -
                                  -        return value * rate;
                                  -    },
                                  -    
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Unit Funtions
                                  -  
                                  -    pointsToPixels: function(name, value, returnFloat)
                                  -    {
                                  -        var axis = /Top$|Bottom$/.test(name) ? "y" : "x";
                                  -        
                                  -        var result = value * pixelsPerInch[axis] / 72;
                                  -        
                                  -        return returnFloat ? result : Math.round(result);
                                  -    },
                                  -    
                                  -    emToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        var fontSize = this.getFontSizeInPixels(el);
                                  -        
                                  -        return Math.round(value * fontSize);
                                  -    },
                                  -    
                                  -    exToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get ex value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "ex;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -      
                                  -    percentToPixels: function(el, value)
                                  -    {
                                  -        if (!el) return null;
                                  -        
                                  -        // get % value, the dirty way
                                  -        var div = this.document.createElement("div");
                                  -        div.style.cssText = offscreenStyle + "width:"+value + "%;";
                                  -        
                                  -        el.appendChild(div);
                                  -        var value = div.offsetWidth;
                                  -        el.removeChild(div);
                                  -        
                                  -        return value;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    getCSS: isIE ? function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    : function(el, name)
                                  -    {
                                  -        return this.document.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var evalError = "___firebug_evaluation_error___";
                                  -var pixelsPerInch;
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/css.js b/tags/firebug1.3a5/content/firebug/css.js
                                  deleted file mode 100644
                                  index 6f262c9c..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/css.js
                                  +++ /dev/null
                                  @@ -1,570 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Module
                                  -
                                  -Firebug.CSS = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("CSS") : null;
                                  -    },
                                  -    
                                  -    renderStyleSheet: function(index)
                                  -    {
                                  -        var panel = this.getPanel();
                                  -        
                                  -        if (panel.lastStyleSheetIndex != index)
                                  -        {
                                  -            var str = renderStyleSheet(index);
                                  -            
                                  -            panel.contentNode.innerHTML = str.join("");
                                  -            
                                  -            // IE needs this timeout, otherwise the panel won't scroll
                                  -            setTimeout(function(){
                                  -                panel.synchronizeUI();
                                  -            },0);
                                  -            
                                  -            panel.styleSheetIndex = index;
                                  -            panel.lastStyleSheetIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.CSS);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSStyleSheetPanel(){};
                                  -
                                  -CSSStyleSheetPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSS",
                                  -    title: "CSS",
                                  -    
                                  -    styleSheetIndex: 0,
                                  -    lastStyleSheetIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var styleSheets = doc.styleSheets;
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, length=styleSheets.length; i<length; i++)
                                  -        {
                                  -            var styleSheet = styleSheets[i];
                                  -            var fileName = getFileName(styleSheet.href) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -        
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectStyleSheet(this.styleSheetIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("CSS");
                                  -        var index = oldPanel.styleSheetIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.styleSheetIndex = index;
                                  -        this.lastStyleSheetIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    },
                                  -    
                                  -    selectStyleSheet: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        Firebug.CSS.renderStyleSheet(index);
                                  -    }    
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSStyleSheetPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSElementPanel(){};
                                  -
                                  -CSSElementPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSElementPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "CSS",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles(target);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles(node);
                                  -        
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;        
                                  -    }
                                  -});
                                  -
                                  -//Firebug.registerPanel(CSSElementPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSEditPanel(){};
                                  -
                                  -CSSEditPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSEditPanel",
                                  -    parentPanel: "HTML",
                                  -    title: "Style",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.contentNode.style;
                                  -        style.margin = "0";
                                  -        //style.padding = "4px 8px";
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -        
                                  -        var doc = Firebug.chrome.document;
                                  -        
                                  -        var el = doc.createElement("pre");
                                  -        el.innerHTML = "element.style {";
                                  -        el.style.margin = "4px 0 0";
                                  -        el.style.padding = "0 0 1px 8px";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("textarea");
                                  -        el.rows = 1;
                                  -        el.style.width = "80%";
                                  -        //el.style.height = "100%";
                                  -        //el.style.position = "absolute";
                                  -        el.style.fontSize = "11px";
                                  -        el.style.resize = "none";
                                  -        el.style.overflow = "hidden";
                                  -        el.style.outline = "0";
                                  -        el.style.border = "0";
                                  -        el.style.padding = "0";
                                  -        el.style.margin = "0 10%";
                                  -        el.style.color = "darkblue";
                                  -        
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        this.editNode = el;
                                  -        
                                  -        var el = doc.createElement("pre");
                                  -        el.innerHTML = "}";
                                  -        el.style.margin = "0";
                                  -        el.style.padding = "0 0 10px 8px";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("div");
                                  -        el.innerHTML = "Computed Styles";
                                  -        el.style.background = "#eee url(group.gif)";
                                  -        el.style.fontWeight = "bold";
                                  -        el.style.margin = "0 0 4px";
                                  -        el.style.padding = "2px 5px";
                                  -        el.style.border = "1px solid #ccc";
                                  -        el.style.borderWidth = "1px 0";
                                  -        el.style.fontFamily = "Lucida Grande,Tahoma,sans-serif";
                                  -        this.contentNode.appendChild(el);
                                  -        
                                  -        var el = doc.createElement("div");
                                  -        this.computedStylesNode = this.contentNode.appendChild(el);
                                  -        
                                  -        this.onKeyUp = bind(this.onKeyUp, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        
                                  -        addEvent(this.editNode, "keydown", this.onKeyDown);
                                  -        addEvent(this.editNode, "keyup", this.onKeyUp);
                                  -        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles2(target);
                                  -        this.editNode.value = str;
                                  -        
                                  -        var str2 = renderStyles(target);
                                  -        this.computedStylesNode.innerHTML = str2.join("");
                                  -        
                                  -        this.adjustEditSize();
                                  -        /*
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -        /**/
                                  -    },
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles2(node);
                                  -        this.editNode.value = str;
                                  -        this.adjustEditSize();
                                  -        /*
                                  -        var panel = this;
                                  -        panel.contentNode.innerHTML = str.join("");
                                  -        panel.containerNode.scrollTop = 0;
                                  -        /**/        
                                  -    },
                                  -    
                                  -    adjustEditSize: function(add)
                                  -    {
                                  -        add = add || 0;
                                  -        var nodeValue = this.editNode.value + " ";
                                  -        nodeValue = nodeValue.replace(/\n\r|\r\n/g, "\n");
                                  -        var lines = nodeValue.split(/\n/)
                                  -        var num = lines.length + add
                                  -        this.editNode.rows = num;
                                  -    },
                                  -    
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        if (event.keyCode == 13 /* enter */)
                                  -        {
                                  -            this.adjustEditSize(1);
                                  -        }
                                  -        
                                  -    },
                                  -    
                                  -    onKeyUp: function()
                                  -    {
                                  -        var nodeValue = this.editNode.value;
                                  -        
                                  -        var selectedElement = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        
                                  -        try
                                  -        {
                                  -            selectedElement.style.cssText = nodeValue;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        this.adjustEditSize();
                                  -        
                                  -        /*
                                  -        var lines = nodeValue.split(/[\n\r]/);
                                  -        
                                  -        var reValue = /\s*([\w-]+):\s*(.*)/;
                                  -        
                                  -        for (var i=0, length=lines.length; i<length; i++)
                                  -        {
                                  -            var line = lines[i];
                                  -            var value = line.match(reValue);
                                  -            
                                  -            if (value)
                                  -            {
                                  -                alert(value[1]);
                                  -            }
                                  -        }
                                  -        /**/
                                  -        
                                  -        //Firebug.Console.log("jhi");
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(CSSEditPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// CSS Panel
                                  -
                                  -function CSSRulesEditPanel(){};
                                  -
                                  -CSSRulesEditPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "CSSRulesEditPanel",
                                  -    parentPanel: "CSS",
                                  -    title: "Add",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        return;
                                  -        
                                  -        this.onKeyUp = bind(this.onKeyUp, this);
                                  -        this.onKeyDown = bind(this.onKeyDown, this);
                                  -        
                                  -        addEvent(this.editNode, "keydown", this.onKeyDown);
                                  -        addEvent(this.editNode, "keyup", this.onKeyUp);
                                  -        
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        return;
                                  -        
                                  -        var target = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        if (!target) return;
                                  -        
                                  -        var str = renderStyles2(target);
                                  -        this.editNode.value = str;
                                  -        
                                  -        var str2 = renderStyles(target);
                                  -        this.computedStylesNode.innerHTML = str2.join("");
                                  -        
                                  -        this.adjustEditSize();
                                  -    }/*,
                                  -    
                                  -    select: function(node)
                                  -    {
                                  -        var str = renderStyles2(node);
                                  -        this.editNode.value = str;
                                  -        this.adjustEditSize();
                                  -    },
                                  -    
                                  -    adjustEditSize: function(add)
                                  -    {
                                  -        add = add || 0;
                                  -        var nodeValue = this.editNode.value + " ";
                                  -        nodeValue = nodeValue.replace(/\n\r|\r\n/g, "\n");
                                  -        var lines = nodeValue.split(/\n/)
                                  -        var num = lines.length + add
                                  -        this.editNode.rows = num;
                                  -    },
                                  -    
                                  -    onKeyDown: function(event)
                                  -    {
                                  -        if (event.keyCode == 13) // enter
                                  -        {
                                  -            this.adjustEditSize(1);
                                  -        }
                                  -        
                                  -    },
                                  -    
                                  -    onKeyUp: function()
                                  -    {
                                  -        var nodeValue = this.editNode.value;
                                  -        
                                  -        var selectedElement = documentCache[FirebugChrome.selectedHTMLElementId];
                                  -        
                                  -        try
                                  -        {
                                  -            selectedElement.style.cssText = nodeValue;
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -        }
                                  -        
                                  -        this.adjustEditSize();
                                  -    }/**/
                                  -});
                                  -
                                  -//Firebug.registerPanel(CSSRulesEditPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyleSheet = function renderStyleSheet(index)
                                  -{
                                  -    var styleSheet = Firebug.browser.document.styleSheets[index],
                                  -        str = [], 
                                  -        sl = -1;
                                  -    
                                  -    try
                                  -    {
                                  -        var rules = styleSheet[isIE ? "rules" : "cssRules"];
                                  -        
                                  -        for (var i=0, rule; rule = rules[i]; i++)
                                  -        {
                                  -            var selector = rule.selectorText;
                                  -            var cssText = isIE ? 
                                  -                    rule.style.cssText :
                                  -                    rule.cssText.match(/\{(.*)\}/)[1];
                                  -            
                                  -            str[++sl] = renderRule(selector, cssText.split(";"));
                                  -        }
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        str[++sl] = "<em>Access to restricted URI denied</em>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderRule = function renderRule(selector, styles)
                                  -{
                                  -    var str = "<div class='Selector'>"+ selector.toLowerCase()+ " {</div>";
                                  -    
                                  -    for(var i=0, len=styles.length; i<len; i++)
                                  -    {
                                  -        var rule = styles[i];
                                  -        str += rule.replace(/([^\:]+)\:(.+)/, renderRuleReplacer);
                                  -    }
                                  -    
                                  -    str += "<div class='SelectorEnd'>}</div>";
                                  -    return str;
                                  -};
                                  -
                                  -var renderRuleReplacer = function renderRuleReplacer(m, g1, g2)
                                  -{
                                  -    return "<div class='CSSText'><span class='CSSProperty'>" +
                                  -        g1.toLowerCase() +
                                  -        ": </span><span class='CSSValue'>" +
                                  -        g2.replace(/\s*$/, "") +
                                  -        ";</span></div>"; 
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var renderStyles = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = document.defaultView ? 
                                  -            document.defaultView.getComputedStyle(node, null) :
                                  -            node.currentStyle;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = "<div class='CSSItem'><span class='CSSProperty'>"; 
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = "</span>:<span class='CSSValue'>"; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = "</span>;</div>";
                                  -    }
                                  -    
                                  -    return str;
                                  -};
                                  -
                                  -var renderStyles2 = function renderStyles(node)
                                  -{
                                  -    var property = ["opacity","filter","azimuth","background","backgroundAttachment","backgroundColor","backgroundImage","backgroundPosition","backgroundRepeat","border","borderCollapse","borderColor","borderSpacing","borderStyle","borderTop","borderRight","borderBottom","borderLeft","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderWidth","bottom","captionSide","clear","clip","color","content","counterIncrement","counterReset","cue","cueAfter","cueBefore","cursor","direction","display","elevation","emptyCells","cssFloat","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","height","left","letterSpacing","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginTop","marginRight","marginBottom","marginLeft","markerOffset","marks","maxHeight","maxWidth","minHeight","minWidth","orphans","outline","outlineColor","outlineStyle","outlineWidth","overflow","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","page","pageBreakAfter","pageBreakBefore","pageBreakInside","pause","pauseAfter","pauseBefore","pitch","pitchRange","playDuring","position","quotes","richness","right","size","speak","speakHeader","speakNumeral","speakPunctuation","speechRate","stress","tableLayout","textAlign","textDecoration","textIndent","textShadow","textTransform","top","unicodeBidi","verticalAlign","visibility","voiceFamily","volume","whiteSpace","widows","width","wordSpacing","zIndex"].sort();
                                  -    
                                  -    var view = node.style;
                                  -
                                  -    var str = [], sl = -1;
                                  -    for(var i=0,len=property.length; i<len; i++)
                                  -    {
                                  -        var item = property[i];
                                  -        if(!view[item]) continue;
                                  -        
                                  -        str[++sl] = toSelectorCase(item);
                                  -        str[++sl] = ": "; 
                                  -        str[++sl] = view[item];
                                  -        str[++sl] = ";\n";
                                  -    }
                                  -    
                                  -    str = str.join("");
                                  -    return str.substr(0, str.length-1);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var toCamelCase = function toCamelCase(s)
                                  -{
                                  -    return s.replace(reSelectorCase, toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -var toSelectorCase = function toSelectorCase(s)
                                  -{
                                  -  return s.replace(reCamelCase, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var reCamelCase = /([A-Z])/g;
                                  -var reSelectorCase = /\-(.)/g; 
                                  -var toCamelCaseReplaceFn = function toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/dom.js b/tags/firebug1.3a5/content/firebug/dom.js
                                  deleted file mode 100644
                                  index c130c971..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/dom.js
                                  +++ /dev/null
                                  @@ -1,1692 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var insertSliceSize = 18;
                                  -var insertInterval = 40;
                                  -
                                  -var ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1
                                  -};
                                  -
                                  -if (Firebug.ignoreFirebugElements)
                                  -    ignoreVars[cacheID] = 1;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var memberPanelRep =
                                  -    isIE6 ?
                                  -    {"class": "memberLabel $member.type\\Label", href: "javacript:void(0)"}
                                  -    :
                                  -    {"class": "memberLabel $member.type\\Label"};
                                  -
                                  -var RowTag =
                                  -    TR({"class": "memberRow $member.open $member.type\\Row", $hasChildren: "$member.hasChildren", role : 'presentation',
                                  -        level: "$member.level"},
                                  -        TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px", role : 'presentation'},
                                  -            A(memberPanelRep,
                                  -                SPAN({}, "$member.name")
                                  -            )
                                  -        ),
                                  -        TD({"class": "memberValueCell", role : 'presentation'},
                                  -            TAG("$member.tag", {object: "$member.value"})
                                  -        )
                                  -    );
                                  -
                                  -// TODO: xxxpedro localization
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : "";
                                  -};
                                  -
                                  -var WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 2},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -var SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -var domTableClass = isIElt8 ? "domTable domTableIE" : "domTable";
                                  -var DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0, onclick: "$onClick", role :"tree"},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator", RowTag)
                                  -            )
                                  -        ),
                                  -        
                                  -    watchTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": domTableClass, cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members", RowTag),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return getMembers(object, level);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        var label = getAncestorByClass(target, "memberLabel");
                                  -        if (label && hasClass(row, "hasChildren"))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = Firebug.getRepObject(target);
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Remove the path from the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    if (i == path.length-1)
                                  -                        delete toggles[path[i]];
                                  -                    else
                                  -                        toggles = toggles[path[i]];
                                  -                }
                                  -            }
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var tbody = row.parentNode;
                                  -
                                  -            setTimeout(function()
                                  -            {
                                  -                for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                        break;
                                  -
                                  -                    tbody.removeChild(firstRow);
                                  -                }
                                  -            }, row.insertTimeout ? row.insertTimeout : 0);
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -
                                  -            if (toggles)
                                  -            {
                                  -                var path = getPath(row);
                                  -
                                  -                // Mark the path in the toggle tree
                                  -                for (var i = 0; i < path.length; ++i)
                                  -                {
                                  -                    var name = path[i];
                                  -                    if (toggles.hasOwnProperty(name))
                                  -                        toggles = toggles[name];
                                  -                    else
                                  -                        toggles = toggles[name] = {};
                                  -                }
                                  -            }
                                  -
                                  -            var value = row.lastChild.firstChild.repObject;
                                  -            var members = getMembers(value, level+1);
                                  -
                                  -            var rowTag = this.rowTag;
                                  -            var lastRow = row;
                                  -
                                  -            var delay = 0;
                                  -            //var setSize = members.length;
                                  -            //var rowCount = 1;
                                  -            while (members.length)
                                  -            {
                                  -                with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -                {
                                  -                    setTimeout(function()
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            //rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            row.removeAttribute("insertTimeout");
                                  -                    }, delay);
                                  -                }
                                  -
                                  -                delay += insertInterval;
                                  -            }
                                  -
                                  -            row.insertTimeout = delay;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        // TODO: Move this to some global location
                                  -        // TODO: Unwrapping should be centralized rather than sprinkling it around ad hoc.
                                  -        // TODO: We might be able to make this check more authoritative with QueryInterface.
                                  -        if (!object) return object;
                                  -        if (object.wrappedJSObject) return object.wrappedJSObject;
                                  -        return object;
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        //dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = getMembers(this.selection);
                                  -        expandMembers(members, this.toggles, 0, 0);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -        
                                  -        //TODO: xxxpedro statusbar
                                  -        if (!this.parentPanel)
                                  -            updateStatusBar(this);
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                timeouts.push(this.context.setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!tbody.lastChild) return;
                                  -                    
                                  -                    result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                    
                                  -                    //rowCount += insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                        panelNode.scrollTop = priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    if (isLast) alert(new Date().getTime() - renderStart + "ms");
                                  -                    
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    // new
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? panelNode.ownerDocument : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        //var slice = members.splice(0, insertSliceSize);
                                  -        //var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        
                                  -        //var setSize = members.length;
                                  -        //var rowCount = 1;
                                  -        
                                  -        var panel = this;
                                  -        var result;
                                  -        
                                  -        //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -        
                                  -        var delay = 0;
                                  -        var _insertSliceSize = insertSliceSize;
                                  -        var _insertInterval = insertInterval;
                                  -        var _setTimeout = this.context.setTimeout;
                                  -
                                  -        // enable to measure rendering performance
                                  -        var renderStart = new Date().getTime();
                                  -        var lastSkip = renderStart, now;
                                  -        
                                  -        while (members.length)
                                  -        {
                                  -            with({slice: members.splice(0, _insertSliceSize), isLast: !members.length})
                                  -            {
                                  -                var _tbody = tbody;
                                  -                var _rowTag = rowTag;
                                  -                var _panelNode = panelNode;
                                  -                var _priorScrollTop = priorScrollTop;
                                  -                
                                  -                timeouts.push(_setTimeout(function()
                                  -                {
                                  -                    // TODO: xxxpedro can this be a timing error related to the
                                  -                    // "iteration number" approach insted of "duration time"?
                                  -                    // avoid error in IE8
                                  -                    if (!_tbody.lastChild) return;
                                  -                    
                                  -                    result = _rowTag.insertRows({members: slice}, _tbody.lastChild);
                                  -                    
                                  -                    //rowCount += _insertSliceSize;
                                  -                    //dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -    
                                  -                    if ((_panelNode.scrollHeight + _panelNode.offsetHeight) >= _priorScrollTop)
                                  -                        _panelNode.scrollTop = _priorScrollTop;
                                  -                    
                                  -                    
                                  -                    // enable to measure rendering performance
                                  -                    //alert("gap: " + (new Date().getTime() - lastSkip)); 
                                  -                    //lastSkip = new Date().getTime();
                                  -                    
                                  -                    //if (isLast) alert("new: " + (new Date().getTime() - renderStart) + "ms");
                                  -                    
                                  -                }, delay));
                                  -    
                                  -                delay += _insertInterval;
                                  -            }
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -    
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            // IE needs === instead of == or otherwise some objects will
                                  -            // be considered equal to different objects, returning the
                                  -            // wrong index of the objectPath array
                                  -            if (this.getPathObject(i) === object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object)
                                  -        {
                                  -            var propName = getRowName(row);
                                  -
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -    /*
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },/**/
                                  -
                                  -    onMouseMove: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink-element");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(object && instanceOf(object, "Element") && object.nodeType == 1)
                                  -        {
                                  -            if(object != lastHighlightedObject)
                                  -            {
                                  -                Firebug.Inspector.drawBoxModel(object);
                                  -                object = lastHighlightedObject;
                                  -            }
                                  -        }
                                  -        else
                                  -            Firebug.Inspector.hideBoxModel();
                                  -        
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    create: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        this.context = Firebug.browser.window;
                                  -        
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "mousemove", this.onMouseMove);
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -
                                  -    /*
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    /**/
                                  -    
                                  -    ishow: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -    /*
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -    /**/
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not agressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    var start = previousIndex + 1, 
                                  -                        // Opera needs the length argument in splice(), otherwise
                                  -                        // it will consider that only one element should be removed
                                  -                        length = this.objectPath.length - start;
                                  -                    
                                  -                    this.objectPath.splice(start, length);
                                  -                    this.propertyPath.splice(start, length);
                                  -                    this.viewPath.splice(start, length);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0, length = newPath.length; i < length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = Firebug.browser.window;
                                  -                //var win = this.context.getGlobalScope();
                                  -                if (object === win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view.toggles;
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view.scrollTop);
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return Firebug.browser.window;
                                  -        //return this.context.getGlobalScope();
                                  -    }/*,
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }/**/
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro statusbar
                                  -var updateStatusBar = function(panel)
                                  -{
                                  -    var path = panel.propertyPath;
                                  -    var index = panel.pathIndex;
                                  -    
                                  -    var r = [];
                                  -    
                                  -    for (var i=0, l=path.length; i<l; i++)
                                  -    {
                                  -        r.push(i==index ? '<a class="fbHover fbButton fbBtnSelected" ' : '<a class="fbHover fbButton" ');
                                  -        r.push('pathIndex=');
                                  -        r.push(i);
                                  -        
                                  -        if(isIE6)
                                  -            r.push(' href="javascript:void(0)"');
                                  -        
                                  -        r.push('>');
                                  -        r.push(i==0 ? "window" : path[i] || "Object");
                                  -        r.push('</a>');
                                  -        
                                  -        if(i < l-1)
                                  -            r.push('<span class="fbStatusSeparator">&gt;</span>');
                                  -    }
                                  -    panel.statusBarNode.innerHTML = r.join("");
                                  -};
                                  -
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    onClickStatusBar: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var element = getAncestorByClass(target, "fbHover");
                                  -        
                                  -        if(element)
                                  -        {
                                  -            var pathIndex = element.getAttribute("pathIndex");
                                  -            
                                  -            if(pathIndex)
                                  -            {
                                  -                this.select(this.getPathObject(pathIndex));
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOM",
                                  -    title: "DOM",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        hasStatusBar: true
                                  -    },    
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        
                                  -        //TODO: xxxpedro
                                  -        this.onClickStatusBar = bind(this.onClickStatusBar, this);
                                  -        
                                  -        this.panelNode.style.padding = "0 1px";
                                  -    },
                                  -
                                  -    initialize: function(oldPanelNode)
                                  -    {
                                  -        //this.panelNode.addEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        //this.select(Firebug.browser.window);
                                  -        
                                  -        // TODO: xxxpedro dom leaking to global namespace (need to create a proper context object)
                                  -        this.context.loaded = true;
                                  -        this.ishow();
                                  -        
                                  -        //TODO: xxxpedro
                                  -        addEvent(this.statusBarNode, "click", this.onClickStatusBar);        
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        //this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        //dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -        
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    }/*,
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.searchCaseSensitive);
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.searchCaseSensitive);
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }/**/
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -var getMembers = function getMembers(object, level)  // we expect object to be user-level object wrapped in security blanket
                                  -{
                                  -    if (!level)
                                  -        level = 0;
                                  -
                                  -    var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -        domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -    try
                                  -    {
                                  -        var domMembers = getDOMMembers(object);
                                  -        //var domMembers = {}; // TODO: xxxpedro
                                  -        //var domConstantMap = {};  // TODO: xxxpedro
                                  -
                                  -        if (object.wrappedJSObject)
                                  -            var insecureObject = object.wrappedJSObject;
                                  -        else
                                  -            var insecureObject = object;
                                  -
                                  -        // IE function prototype is not listed in (for..in)
                                  -        if (isIE && isFunction(object))
                                  -            addMember("user", userProps, "prototype", object.prototype, level);            
                                  -            
                                  -        for (var name in insecureObject)  // enumeration is safe
                                  -        {
                                  -            if (ignoreVars[name] == 1)  // javascript.options.strict says ignoreVars is undefined.
                                  -                continue;
                                  -
                                  -            var val;
                                  -            try
                                  -            {
                                  -                val = insecureObject[name];  // getter is safe
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access certain members
                                  -                if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -            }
                                  -
                                  -            var ordinal = parseInt(name);
                                  -            if (ordinal || ordinal == 0)
                                  -            {
                                  -                addMember("ordinal", ordinals, name, val, level);
                                  -            }
                                  -            else if (isFunction(val))
                                  -            {
                                  -                if (isClassFunction(val))
                                  -                    addMember("userClass", userClasses, name, val, level);
                                  -                else if (name in domMembers)
                                  -                    addMember("domFunction", domFuncs, name, val, level, domMembers[name]);
                                  -                else
                                  -                    addMember("userFunction", userFuncs, name, val, level);
                                  -            }
                                  -            else
                                  -            {
                                  -                //TODO: xxxpedro
                                  -                /*
                                  -                var getterFunction = insecureObject.__lookupGetter__(name),
                                  -                    setterFunction = insecureObject.__lookupSetter__(name),
                                  -                    prefix = "";
                                  -
                                  -                if(getterFunction && !setterFunction)
                                  -                    prefix = "get ";
                                  -                /**/
                                  -                
                                  -                var prefix = "";
                                  -
                                  -                if (name in domMembers)
                                  -                    addMember("dom", domProps, (prefix+name), val, level, domMembers[name]);
                                  -                else if (name in domConstantMap)
                                  -                    addMember("dom", domConstants, (prefix+name), val, level);
                                  -                else
                                  -                    addMember("user", userProps, (prefix+name), val, level);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions just from trying to iterate the members
                                  -        // of certain objects, like StorageList, but don't let that gum up the works
                                  -        throw exc;
                                  -        if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        //throw exc;
                                  -    }
                                  -
                                  -    function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -    function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -    var members = [];
                                  -
                                  -    members.push.apply(members, ordinals);
                                  -
                                  -    Firebug.showUserProps = true; // TODO: xxxpedro
                                  -    Firebug.showUserFuncs = true; // TODO: xxxpedro
                                  -    Firebug.showDOMProps = true;
                                  -    Firebug.showDOMFuncs = true;
                                  -    Firebug.showDOMConstants = true;
                                  -    
                                  -    if (Firebug.showUserProps)
                                  -    {
                                  -        userProps.sort(sortName);
                                  -        members.push.apply(members, userProps);
                                  -    }
                                  -
                                  -    if (Firebug.showUserFuncs)
                                  -    {
                                  -        userClasses.sort(sortName);
                                  -        members.push.apply(members, userClasses);
                                  -
                                  -        userFuncs.sort(sortName);
                                  -        members.push.apply(members, userFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMProps)
                                  -    {
                                  -        domProps.sort(sortName);
                                  -        members.push.apply(members, domProps);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMFuncs)
                                  -    {
                                  -        domFuncs.sort(sortName);
                                  -        members.push.apply(members, domFuncs);
                                  -    }
                                  -
                                  -    if (Firebug.showDOMConstants)
                                  -        members.push.apply(members, domConstants);
                                  -
                                  -    return members;
                                  -}
                                  -
                                  -function expandMembers(members, toggles, offset, level)  // recursion starts with offset=0, level=0
                                  -{
                                  -    var expanded = 0;
                                  -    for (var i = offset; i < members.length; ++i)
                                  -    {
                                  -        var member = members[i];
                                  -        if (member.level > level)
                                  -            break;
                                  -
                                  -        if ( toggles.hasOwnProperty(member.name) )
                                  -        {
                                  -            member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -
                                  -            var newMembers = getMembers(member.value, level+1);  // sets newMembers.level to level+1
                                  -
                                  -            var args = [i+1, 0];
                                  -            args.push.apply(args, newMembers);
                                  -            members.splice.apply(members, args);
                                  -            
                                  -            /*
                                  -            if (FBTrace.DBG_DOM)
                                  -            {
                                  -                FBTrace.sysout("expandMembers member.name", member.name);
                                  -                FBTrace.sysout("expandMembers toggles", toggles);
                                  -                FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -            }
                                  -            /**/
                                  -
                                  -            expanded += newMembers.length;
                                  -            i += newMembers.length + expandMembers(members, toggles[member.name], i+1, level+1);
                                  -        }
                                  -    }
                                  -
                                  -    return expanded;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -var hasProperties = function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    
                                  -    // IE function prototype is not listed in (for..in)
                                  -    if (isFunction(ob)) return true;
                                  -    
                                  -    return false;
                                  -}
                                  -
                                  -FBL.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -var addMember = function addMember(type, props, name, value, level, order)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var ErrorCopy = function(){}; //TODO: xxxpedro
                                  -    
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (isFunction(value) || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    props.push({
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    });
                                  -}
                                  -
                                  -var getWatchRowIndex = function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -var getRowName = function getRowName(row)
                                  -{
                                  -    var node = row.firstChild;
                                  -    return node.textContent ? node.textContent : node.innerText;
                                  -}
                                  -
                                  -var getRowValue = function getRowValue(row)
                                  -{
                                  -    return row.lastChild.firstChild.repObject;
                                  -}
                                  -
                                  -var getRowOwnerObject = function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -var getParentRow = function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -var getPath = function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Module
                                  -
                                  -Firebug.DOM = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("DOM") : null;
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.DOM);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Panel
                                  -
                                  -var lastHighlightedObject;
                                  -
                                  -function DOMSidePanel(){};
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        //Firebug.chrome.clearStatusPath();
                                  -
                                  -        var object = target.repObject;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        /*
                                  -        var target = event.srcElement || event.target;
                                  -        
                                  -        var object = getAncestorByClass(target, "objectLink");
                                  -        object = object ? object.repObject : null;
                                  -        
                                  -        if(!object) return;
                                  -        
                                  -        if (instanceOf(object, "Element") && object[cacheID])
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(object[cacheID]);
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.selectPanel("DOM");
                                  -            Firebug.chrome.getPanel("DOM").select(object, true);
                                  -        }
                                  -        /**/
                                  -        
                                  -        
                                  -        var target = event.srcElement || event.target;
                                  -        var repNode = Firebug.getRepNode(target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -        /**/
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "DOMSidePanel",
                                  -    parentPanel: "HTML",
                                  -    title: "DOM",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -    
                                  -    isInitialized: false,
                                  -    
                                  -    create: function()
                                  -    {
                                  -        Firebug.DOMBasePanel.prototype.create.apply(this, arguments);
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        removeEvent(this.panelNode, "click", this.onClick);
                                  -        
                                  -        Firebug.DOMBasePanel.prototype.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function(oldChrome)
                                  -    {
                                  -        //this.isInitialized = oldChrome.getPanel("DOM").isInitialized;
                                  -        this.toggles = oldChrome.getPanel("DOMSidePanel").toggles;
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/dom.original.js b/tags/firebug1.3a5/content/firebug/dom.original.js
                                  deleted file mode 100644
                                  index acf5dd89..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/dom.original.js
                                  +++ /dev/null
                                  @@ -1,2093 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -const jsdIStackFrame = Ci.jsdIStackFrame;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -const insertSliceSize = 18;
                                  -const insertInterval = 40;
                                  -
                                  -const rxIdentifier = /^[$_A-Za-z][$_A-Za-z0-9]*$/
                                  -
                                  -const ignoreVars =
                                  -{
                                  -    "__firebug__": 1,
                                  -    "eval": 1,
                                  -
                                  -    // We are forced to ignore Java-related variables, because
                                  -    // trying to access them causes browser freeze
                                  -    "java": 1,
                                  -    "sun": 1,
                                  -    "Packages": 1,
                                  -    "JavaArray": 1,
                                  -    "JavaMember": 1,
                                  -    "JavaObject": 1,
                                  -    "JavaClass": 1,
                                  -    "JavaPackage": 1,
                                  -    "_firebug": 1,
                                  -    "_FirebugConsole": 1,
                                  -    "_FirebugCommandLine": 1,
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMModule = extend(Firebug.Module,
                                  -{
                                  -    initialize: function(prefDomain, prefNames)
                                  -    {
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    initContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.initContext.apply(this, arguments);
                                  -        context.dom = {breakpoints: new DOMBreakpointGroup()};
                                  -    },
                                  -
                                  -    loadedContext: function(context, persistedState)
                                  -    {
                                  -        context.dom.breakpoints.load(context);
                                  -    },
                                  -
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -        Firebug.Module.destroyContext.apply(this, arguments);
                                  -
                                  -        context.dom.breakpoints.store(context);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -const WatchRowTag =
                                  -    TR({"class": "watchNewRow", level: 0},
                                  -        TD({"class": "watchEditCell", colspan: 3},
                                  -            DIV({"class": "watchEditBox a11yFocusNoTab", role: "button", 'tabindex' : '0',
                                  -                'aria-label' : $STR('a11y.labels.press enter to add new watch expression')},
                                  -                    $STR("NewWatch")
                                  -            )
                                  -        )
                                  -    );
                                  -
                                  -const SizerRow =
                                  -    TR({role : 'presentation'},
                                  -        TD(),
                                  -        TD({width: "30%"}),
                                  -        TD({width: "70%"})
                                  -    );
                                  -
                                  -const DirTablePlate = domplate(Firebug.Rep,
                                  -{
                                  -    memberRowTag:
                                  -        TR({"class": "memberRow $member.open $member.type\\Row", _domObject: "$member",
                                  -            $hasChildren: "$member.hasChildren",
                                  -            role: "presentation",
                                  -            level: "$member.level",
                                  -            breakable: "$member.breakable",
                                  -            breakpoint: "$member.breakpoint",
                                  -            disabledBreakpoint: "$member.disabledBreakpoint"},
                                  -            TD({"class": "memberHeaderCell"},
                                  -               DIV({"class": "sourceLine memberRowHeader", onclick: "$onClickRowHeader"},
                                  -                    "&nbsp;"
                                  -               )
                                  -            ),
                                  -            TD({"class": "memberLabelCell", style: "padding-left: $member.indent\\px",
                                  -                role: 'presentation'},
                                  -                DIV({"class": "memberLabel $member.type\\Label"},
                                  -                    SPAN({"class": "memberLabelPrefix"}, "$member.prefix"),
                                  -                    SPAN("$member.name")
                                  -                )
                                  -            ),
                                  -            TD({"class": "memberValueCell", role : 'presentation'},
                                  -                TAG("$member.tag", {object: "$member.value"})
                                  -            )
                                  -        ),
                                  -
                                  -    tag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0, onclick: "$onClick",
                                  -            role: "tree", 'aria-label': $STR('aria.labels.dom properties')},
                                  -            TBODY({role: 'presentation'},
                                  -                SizerRow,
                                  -                FOR("member", "$object|memberIterator",
                                  -                    TAG("$memberRowTag", {member: "$member"})
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    watchTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -               _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick", role : 'tree'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow,
                                  -                WatchRowTag
                                  -            )
                                  -        ),
                                  -
                                  -    tableTag:
                                  -        TABLE({"class": "domTable", cellpadding: 0, cellspacing: 0,
                                  -            _toggles: "$toggles", _domPanel: "$domPanel", onclick: "$onClick",
                                  -            role: 'tree', 'aria-label': 'DOM properties'},
                                  -            TBODY({role : 'presentation'},
                                  -                SizerRow
                                  -            )
                                  -        ),
                                  -
                                  -    rowTag:
                                  -        FOR("member", "$members",
                                  -            TAG("$memberRowTag", {member: "$member"})
                                  -        ),
                                  -
                                  -    memberIterator: function(object, level)
                                  -    {
                                  -        return this.getMembers(object, level, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(event.target, "memberRow");
                                  -        var label = getElementByClass(row, "memberLabel");
                                  -        var valueCell = getElementByClass(row, "memberValueCell");
                                  -        var object = Firebug.getRepObject(event.target);
                                  -        var target = row.lastChild.firstChild;
                                  -        var isString = hasClass(target,"objectBox-string");
                                  -        var inValueCell = event.target == valueCell || event.target == target;
                                  -
                                  -        if (label && hasClass(row, "hasChildren") && !(isString && inValueCell))
                                  -        {
                                  -            var row = label.parentNode.parentNode;
                                  -            this.toggleRow(row);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (typeof(object) == "function")
                                  -            {
                                  -                Firebug.chrome.select(object, "script");
                                  -                cancelEvent(event);
                                  -            }
                                  -            else if (event.detail == 2 && !object)
                                  -            {
                                  -                var panel = row.parentNode.parentNode.domPanel;
                                  -                if (panel)
                                  -                {
                                  -                    var rowValue = panel.getRowPropertyValue(row);
                                  -                    if (typeof(rowValue) == "boolean")
                                  -                        panel.setPropertyValue(row, !rowValue);
                                  -                    else
                                  -                        panel.editProperty(row);
                                  -
                                  -                    cancelEvent(event);
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    toggleRow: function(row)
                                  -    {
                                  -        var level = parseInt(row.getAttribute("level"));
                                  -        var toggles = row.parentNode.parentNode.toggles;
                                  -
                                  -        var panel = row.parentNode.parentNode.domPanel;
                                  -        var target = row.lastChild.firstChild;
                                  -        var isString = hasClass(target,"objectBox-string");
                                  -
                                  -        if (hasClass(row, "opened"))
                                  -        {
                                  -            removeClass(row, "opened");
                                  -
                                  -            if (isString)
                                  -            {
                                  -                var rowValue = panel.getRowPropertyValue(row);
                                  -                row.lastChild.firstChild.textContent = '"' + cropMultipleLines(rowValue) + '"';
                                  -            }
                                  -            else
                                  -            {
                                  -                if (toggles)
                                  -                {
                                  -                    var path = getPath(row);
                                  -
                                  -                    // Remove the path from the toggle tree
                                  -                    for (var i = 0; i < path.length; ++i)
                                  -                    {
                                  -                        if (i == path.length-1)
                                  -                            delete toggles[path[i]];
                                  -                        else
                                  -                            toggles = toggles[path[i]];
                                  -                    }
                                  -                }
                                  -
                                  -                var rowTag = this.rowTag;
                                  -                var tbody = row.parentNode;
                                  -
                                  -                setTimeout(function()
                                  -                {
                                  -                    for (var firstRow = row.nextSibling; firstRow; firstRow = row.nextSibling)
                                  -                    {
                                  -                        if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                            break;
                                  -
                                  -                        tbody.removeChild(firstRow);
                                  -                    }
                                  -                }, row.insertTimeout ? row.insertTimeout : 0);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            setClass(row, "opened");
                                  -            if (isString)
                                  -            {
                                  -                var rowValue = panel.getRowPropertyValue(row);
                                  -                row.lastChild.firstChild.textContent = '"' + rowValue + '"';
                                  -            }
                                  -            else
                                  -            {
                                  -
                                  -                if (toggles)
                                  -                {
                                  -                    var path = getPath(row);
                                  -
                                  -                    // Mark the path in the toggle tree
                                  -                    for (var i = 0; i < path.length; ++i)
                                  -                    {
                                  -                        var name = path[i];
                                  -                        if (toggles.hasOwnProperty(name))
                                  -                            toggles = toggles[name];
                                  -                        else
                                  -                            toggles = toggles[name] = {};
                                  -                    }
                                  -                }
                                  -
                                  -                var context = panel ? panel.context : null;
                                  -                var members = Firebug.DOMBasePanel.prototype.getMembers(target.repObject, level+1, context);
                                  -
                                  -                var rowTag = this.rowTag;
                                  -                var lastRow = row;
                                  -
                                  -                var delay = 0;
                                  -                var setSize = members.length;
                                  -                var rowCount = 1;
                                  -                while (members.length)
                                  -                {
                                  -                    setTimeout(function(slice, isLast)
                                  -                    {
                                  -                        if (lastRow.parentNode)
                                  -                        {
                                  -                            var result = rowTag.insertRows({members: slice}, lastRow);
                                  -                            lastRow = result[1];
                                  -                            dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [null, result, rowCount, setSize]);
                                  -                            rowCount += insertSliceSize;
                                  -                        }
                                  -                        if (isLast)
                                  -                            delete row.insertTimeout;
                                  -                    }, delay, members.splice(0, insertSliceSize), !members.length);
                                  -
                                  -                    delay += insertInterval;
                                  -                }
                                  -
                                  -                row.insertTimeout = delay;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onClickRowHeader: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        var rowHeader = event.target;
                                  -        if (!hasClass(rowHeader, "memberRowHeader"))
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(event.target, "memberRow");
                                  -        if (!row)
                                  -            return;
                                  -
                                  -        var panel = row.parentNode.parentNode.domPanel;
                                  -        if (panel)
                                  -            panel.breakOnProperty(row);
                                  -    }
                                  -});
                                  -
                                  -const ToolboxPlate = domplate(
                                  -{
                                  -    tag:
                                  -        DIV({"class": "watchToolbox", _domPanel: "$domPanel", onclick: "$onClick"},
                                  -            IMG({"class": "watchDeleteButton closeButton", src: "blank.gif"})
                                  -        ),
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var toolbox = event.currentTarget;
                                  -        toolbox.domPanel.deleteWatch(toolbox.watchRow);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMBasePanel = function() {}
                                  -
                                  -Firebug.DOMBasePanel.prototype = extend(Firebug.ActivablePanel,
                                  -{
                                  -    tag: DirTablePlate.tableTag,
                                  -
                                  -    getRealObject: function(object)
                                  -    {
                                  -        return unwrapObject(object);
                                  -    },
                                  -
                                  -    rebuild: function(update, scrollTop)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var members = this.getMembers(this.selection, 0, this.context);
                                  -        this.expandMembers(members, this.toggles, 0, 0, this.context);
                                  -
                                  -        this.showMembers(members, update, scrollTop);
                                  -    },
                                  -    /*
                                  -     *  @param object a user-level object wrapped in security blanket
                                  -     *  @param level for a.b.c, level is 2
                                  -     *  @param context
                                  -     */
                                  -    getMembers: function(object, level, context)
                                  -    {
                                  -        if (!level)
                                  -            level = 0;
                                  -
                                  -        var ordinals = [], userProps = [], userClasses = [], userFuncs = [],
                                  -            domProps = [], domFuncs = [], domConstants = [];
                                  -
                                  -        try
                                  -        {
                                  -            var domMembers = getDOMMembers(object);
                                  -            var insecureObject = unwrapObject(object);
                                  -
                                  -            for (var name in insecureObject)  // enumeration is safe
                                  -            {
                                  -                // Ignore only global variables (properties of the |window| object).
                                  -                // javascript.options.strict says ignoreVars is undefined.
                                  -                if (ignoreVars[name] == 1 && (object instanceof Window))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("dom.getMembers: ignoreVars: " + name + ", " + level, object);
                                  -                    continue;
                                  -                }
                                  -
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = insecureObject[name];  // getter is safe
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    // Sometimes we get exceptions trying to access certain members
                                  -                    if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("dom.getMembers cannot access "+name, exc);
                                  -                }
                                  -
                                  -                var ordinal = parseInt(name);
                                  -                if (ordinal || ordinal == 0)
                                  -                {
                                  -                    addMember(object, "ordinal", ordinals, name, val, level, 0, context);
                                  -                }
                                  -                else if (typeof(val) == "function")
                                  -                {
                                  -                    if (isClassFunction(val))
                                  -                        addMember(object, "userClass", userClasses, name, val, level, 0, context);
                                  -                    else if (name in domMembers)
                                  -                        addMember(object, "domFunction", domFuncs, name, val, level, domMembers[name], context);
                                  -                    else
                                  -                        addMember(object, "userFunction", userFuncs, name, val, level, 0, context);
                                  -                }
                                  -                else
                                  -                {
                                  -                    if (name in domMembers)
                                  -                        addMember(object, "dom", domProps, name, val, level, domMembers[name], context);
                                  -                    else if (name in domConstantMap)
                                  -                        addMember(object, "dom", domConstants, name, val, level, 0, context);
                                  -                    else
                                  -                        addMember(object, "user", userProps, name, val, level, 0, context);
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions just from trying to iterate the members
                                  -            // of certain objects, like StorageList, but don't let that gum up the works
                                  -            //throw exc;
                                  -            if (FBTrace.DBG_ERRORS && FBTrace.DBG_DOM)
                                  -                FBTrace.sysout("dom.getMembers FAILS: ", exc);
                                  -        }
                                  -
                                  -        function sortName(a, b) { return a.name > b.name ? 1 : -1; }
                                  -        function sortOrder(a, b) { return a.order > b.order ? 1 : -1; }
                                  -
                                  -        var members = [];
                                  -
                                  -        members.push.apply(members, ordinals);
                                  -
                                  -        if (Firebug.showUserProps)
                                  -        {
                                  -            userProps.sort(sortName);
                                  -            members.push.apply(members, userProps);
                                  -        }
                                  -
                                  -        if (Firebug.showUserFuncs)
                                  -        {
                                  -            userClasses.sort(sortName);
                                  -            members.push.apply(members, userClasses);
                                  -
                                  -            userFuncs.sort(sortName);
                                  -            members.push.apply(members, userFuncs);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMProps)
                                  -        {
                                  -            domProps.sort(sortName);
                                  -            members.push.apply(members, domProps);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMFuncs)
                                  -        {
                                  -            domFuncs.sort(sortName);
                                  -            members.push.apply(members, domFuncs);
                                  -        }
                                  -
                                  -        if (Firebug.showDOMConstants)
                                  -            members.push.apply(members, domConstants);
                                  -
                                  -        return members;
                                  -    },
                                  -
                                  -    expandMembers: function (members, toggles, offset, level, context)  // recursion starts with offset=0, level=0
                                  -    {
                                  -        var expanded = 0;
                                  -        for (var i = offset; i < members.length; ++i)
                                  -        {
                                  -            var member = members[i];
                                  -            if (member.level > level)
                                  -                break;
                                  -
                                  -            if ( toggles.hasOwnProperty(member.name) )
                                  -            {
                                  -                member.open = "opened";  // member.level <= level && member.name in toggles.
                                  -                if (member.type == 'string')
                                  -                    continue;
                                  -                var newMembers = this.getMembers(member.value, level+1, context);  // sets newMembers.level to level+1
                                  -
                                  -                var args = [i+1, 0];
                                  -                args.push.apply(args, newMembers);
                                  -                members.splice.apply(members, args);
                                  -                if (FBTrace.DBG_DOM)
                                  -                {
                                  -                    FBTrace.sysout("expandMembers member.name", member.name);
                                  -                    FBTrace.sysout("expandMembers toggles", toggles);
                                  -                    FBTrace.sysout("expandMembers toggles[member.name]", toggles[member.name]);
                                  -                    FBTrace.sysout("dom.expandedMembers level: "+level+" member", member);
                                  -                }
                                  -
                                  -                expanded += newMembers.length;
                                  -                i += newMembers.length + this.expandMembers(members, toggles[member.name], i+1, level+1, context);
                                  -            }
                                  -        }
                                  -
                                  -        return expanded;
                                  -    },
                                  -
                                  -    showMembers: function(members, update, scrollTop)
                                  -    {
                                  -        // If we are still in the midst of inserting rows, cancel all pending
                                  -        // insertions here - this is a big speedup when stepping in the debugger
                                  -        if (this.timeouts)
                                  -        {
                                  -            for (var i = 0; i < this.timeouts.length; ++i)
                                  -                this.context.clearTimeout(this.timeouts[i]);
                                  -            delete this.timeouts;
                                  -        }
                                  -
                                  -        if (!members.length)
                                  -            return this.showEmptyMembers();
                                  -
                                  -        var panelNode = this.panelNode;
                                  -        var priorScrollTop = scrollTop == undefined ? panelNode.scrollTop : scrollTop;
                                  -
                                  -        // If we are asked to "update" the current view, then build the new table
                                  -        // offscreen and swap it in when it's done
                                  -        var offscreen = update && panelNode.firstChild;
                                  -        var dest = offscreen ? this.document : panelNode;
                                  -
                                  -        var table = this.tag.replace({domPanel: this, toggles: this.toggles}, dest);
                                  -        var tbody = table.lastChild;
                                  -        var rowTag = DirTablePlate.rowTag;
                                  -
                                  -        // Insert the first slice immediately
                                  -        var setSize = members.length;
                                  -        var slice = members.splice(0, insertSliceSize);
                                  -        var result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -        var rowCount = 1;
                                  -        var panel = this;
                                  -        dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -        var timeouts = [];
                                  -
                                  -        var delay = 0;
                                  -        while (members.length)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function(slice)
                                  -            {
                                  -                result = rowTag.insertRows({members: slice}, tbody.lastChild);
                                  -                rowCount += insertSliceSize;
                                  -                dispatch([Firebug.A11yModel], 'onMemberRowSliceAdded', [panel, result, rowCount, setSize]);
                                  -
                                  -                if ((panelNode.scrollHeight+panelNode.offsetHeight) >= priorScrollTop)
                                  -                    panelNode.scrollTop = priorScrollTop;
                                  -            }, delay, members.splice(0, insertSliceSize)));
                                  -
                                  -            delay += insertInterval;
                                  -        }
                                  -
                                  -        if (offscreen)
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                if (panelNode.firstChild)
                                  -                    panelNode.replaceChild(table, panelNode.firstChild);
                                  -                else
                                  -                    panelNode.appendChild(table);
                                  -
                                  -                // Scroll back to where we were before
                                  -                panelNode.scrollTop = priorScrollTop;
                                  -            }, delay));
                                  -        }
                                  -        else
                                  -        {
                                  -            timeouts.push(this.context.setTimeout(function()
                                  -            {
                                  -                panelNode.scrollTop = scrollTop == undefined ? 0 : scrollTop;
                                  -            }, delay));
                                  -        }
                                  -        this.timeouts = timeouts;
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        FirebugReps.Warning.tag.replace({object: "NoMembersWarning"}, this.panelNode);
                                  -    },
                                  -
                                  -    findPathObject: function(object)
                                  -    {
                                  -        var pathIndex = -1;
                                  -        for (var i = 0; i < this.objectPath.length; ++i)
                                  -        {
                                  -            if (this.getPathObject(i) == object)
                                  -                return i;
                                  -        }
                                  -
                                  -        return -1;
                                  -    },
                                  -
                                  -    getPathObject: function(index)
                                  -    {
                                  -        var object = this.objectPath[index];
                                  -        if (object instanceof Property)
                                  -            return object.getObject();
                                  -        else
                                  -            return object;
                                  -    },
                                  -
                                  -    getRowObject: function(row)
                                  -    {
                                  -        var object = getRowOwnerObject(row);
                                  -        return object ? object : this.selection;
                                  -    },
                                  -
                                  -    getRealRowObject: function(row)
                                  -    {
                                  -        var object = this.getRowObject(row);
                                  -        return this.getRealObject(object);
                                  -    },
                                  -
                                  -    getRowPropertyValue: function(row)
                                  -    {
                                  -        var object = this.getRealRowObject(row);
                                  -        return this.getObjectPropertyValue(object, row.domObject.name);
                                  -    },
                                  -
                                  -    getObjectPropertyValue: function(object, propName)
                                  -    {
                                  -        if (object)
                                  -        {
                                  -            if (object instanceof jsdIStackFrame)
                                  -                return Firebug.Debugger.evaluate(propName, this.context);
                                  -            else
                                  -                return object[propName];
                                  -        }
                                  -    },
                                  -
                                  -    getRowPathName: function(row)
                                  -    {
                                  -        var name = row.domObject.name;
                                  -        var seperator = "";
                                  -
                                  -        if(name.match(/^[\d]+$/))//ordinal
                                  -            return ["", "["+name+"]"];
                                  -        else if(name.match(rxIdentifier))//identifier
                                  -            return [".", name];
                                  -        else//map keys
                                  -            return ["", "[\""+name.replace(/\\/g, "\\\\").replace(/"/g,"\\\"") + "\"]"];
                                  -    },
                                  -
                                  -    copyName: function(row)
                                  -    {
                                  -        var value = this.getRowPathName(row);
                                  -        value = value[1];//don't want the seperator
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    copyPath: function(row)
                                  -    {
                                  -        var path = this.getPropertyPath(row);
                                  -        copyToClipboard(path.join(""));
                                  -    },
                                  -
                                  -    /*
                                  -     * Walk from the current row up to the most ancient parent, building an array.
                                  -     * @return array of property names and separators, eg ['foo','.','bar'].
                                  -     */
                                  -    getPropertyPath: function(row)
                                  -    {
                                  -        var path = [];
                                  -        for(var current = row; current ; current = getParentRow(current))
                                  -            path = this.getRowPathName(current).concat(path);
                                  -        path.splice(0,1); //don't want the first seperator
                                  -        return path;
                                  -    },
                                  -
                                  -    copyProperty: function(row)
                                  -    {
                                  -        var value = this.getRowPropertyValue(row);
                                  -        copyToClipboard(value);
                                  -    },
                                  -
                                  -    editProperty: function(row, editValue)
                                  -    {
                                  -        if (hasClass(row, "watchNewRow"))
                                  -        {
                                  -            if (this.context.stopped)
                                  -                Firebug.Editor.startEditing(row, "");
                                  -            else if (Firebug.Console.isAlwaysEnabled())  // not stopped in debugger, need command line
                                  -            {
                                  -                if (Firebug.CommandLine.onCommandLineFocus())
                                  -                    Firebug.Editor.startEditing(row, "");
                                  -                else
                                  -                    row.innerHTML = $STR("warning.Command line blocked?");
                                  -            }
                                  -            else
                                  -                row.innerHTML = $STR("warning.Console must be enabled");
                                  -        }
                                  -        else if (hasClass(row, "watchRow"))
                                  -        {
                                  -            Firebug.Editor.startEditing(row, getRowName(row));
                                  -        }
                                  -        else
                                  -        {
                                  -            var object = this.getRowObject(row);
                                  -            this.context.thisValue = object;
                                  -
                                  -            if (!editValue)
                                  -            {
                                  -                var propValue = this.getRowPropertyValue(row);
                                  -
                                  -                var type = typeof(propValue);
                                  -                if (type == "undefined" || type == "number" || type == "boolean")
                                  -                    editValue = propValue;
                                  -                else if (type == "string")
                                  -                    editValue = "\"" + escapeJS(propValue) + "\"";
                                  -                else if (propValue == null)
                                  -                    editValue = "null";
                                  -                else if (object instanceof Window || object instanceof jsdIStackFrame)
                                  -                    editValue = getRowName(row);
                                  -                else
                                  -                    editValue = "this." + getRowName(row);
                                  -            }
                                  -
                                  -            Firebug.Editor.startEditing(row, editValue);
                                  -        }
                                  -    },
                                  -
                                  -    deleteProperty: function(row)
                                  -    {
                                  -        if (hasClass(row, "watchRow"))
                                  -            this.deleteWatch(row);
                                  -        else
                                  -        {
                                  -            var object = getRowOwnerObject(row);
                                  -            if (!object)
                                  -                object = this.selection;
                                  -            object = this.getRealObject(object);
                                  -
                                  -            if (object)
                                  -            {
                                  -                var name = getRowName(row);
                                  -                try
                                  -                {
                                  -                    delete object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -
                                  -                this.rebuild(true);
                                  -                this.markChange();
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    setPropertyValue: function(row, value)  // value must be string
                                  -    {
                                  -        if(FBTrace.DBG_DOM)
                                  -        {
                                  -            FBTrace.sysout("row: "+row);
                                  -            FBTrace.sysout("value: "+value+" type "+typeof(value), value);
                                  -        }
                                  -
                                  -        var name = getRowName(row);
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRealRowObject(row);
                                  -        if (object && !(object instanceof jsdIStackFrame))
                                  -        {
                                  -             // unwrappedJSObject.property = unwrappedJSObject
                                  -             Firebug.CommandLine.evaluate(value, this.context, object, this.context.getGlobalScope(),
                                  -                 function success(result, context)
                                  -                 {
                                  -                     if (FBTrace.DBG_DOM)
                                  -                         FBTrace.sysout("setPropertyValue evaluate success object["+name+"]="+result+" type "+typeof(result), result);
                                  -                     object[name] = result;
                                  -                 },
                                  -                 function failed(exc, context)
                                  -                 {
                                  -                     try
                                  -                     {
                                  -                         if (FBTrace.DBG_DOM)
                                  -                              FBTrace.sysout("setPropertyValue evaluate failed with exc:"+exc+" object["+name+"]="+value+" type "+typeof(value), exc);
                                  -                         // If the value doesn't parse, then just store it as a string.  Some users will
                                  -                         // not realize they're supposed to enter a JavaScript expression and just type
                                  -                         // literal text
                                  -                         object[name] = String(value);  // unwrappedJSobject.property = string
                                  -                     }
                                  -                     catch (exc)
                                  -                     {
                                  -                         return;
                                  -                     }
                                  -                  }
                                  -             );
                                  -        }
                                  -        else if (this.context.stopped)
                                  -        {
                                  -            try
                                  -            {
                                  -                Firebug.CommandLine.evaluate(name+"="+value, this.context);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                try
                                  -                {
                                  -                    // See catch block above...
                                  -                    object[name] = String(value); // unwrappedJSobject.property = string
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    return;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        this.rebuild(true);
                                  -        this.markChange();
                                  -    },
                                  -
                                  -    highlightRow: function(row)
                                  -    {
                                  -        if (this.highlightedRow)
                                  -            cancelClassTimed(this.highlightedRow, "jumpHighlight", this.context);
                                  -
                                  -        this.highlightedRow = row;
                                  -
                                  -        if (row)
                                  -            setClassTimed(row, "jumpHighlight", this.context);
                                  -    },
                                  -
                                  -    breakOnProperty: function(row)
                                  -    {
                                  -        var member = row.domObject;
                                  -        if (!member)
                                  -            return;
                                  -
                                  -        // Bail out if this property is not breakable.
                                  -        if (!member.breakable)
                                  -            return;
                                  -
                                  -        //xxxHonza: don't use getRowName to get the prop name. From some reason
                                  -        // unwatch doesn't work if row.firstChild.textContent is used.
                                  -        // It works only from within the watch handler method if the passed param
                                  -        // name is used.
                                  -        var name = member.name;
                                  -        if (name == "this")
                                  -            return;
                                  -
                                  -        var object = this.getRowObject(row);
                                  -        object = this.getRealObject(object);
                                  -        if (!object)
                                  -            return;
                                  -
                                  -        // Create new or remove an existing breakpoint.
                                  -        var breakpoints = this.context.dom.breakpoints;
                                  -        var bp = breakpoints.findBreakpoint(object, name);
                                  -        if (bp)
                                  -        {
                                  -            row.removeAttribute("breakpoint");
                                  -            breakpoints.removeBreakpoint(object, name);
                                  -        }
                                  -        else
                                  -        {
                                  -            breakpoints.addBreakpoint(object, name, this, row);
                                  -            row.setAttribute("breakpoint", "true");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.objectPath = [];
                                  -        this.propertyPath = [];
                                  -        this.viewPath = [];
                                  -        this.pathIndex = -1;
                                  -        this.toggles = {};
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -        if (this.pathIndex)
                                  -            state.pathIndex = this.pathIndex;
                                  -        if (this.viewPath)
                                  -            state.viewPath = this.viewPath;
                                  -        if (this.propertyPath)
                                  -            state.propertyPath = this.propertyPath;
                                  -
                                  -        if (this.propertyPath.length > 0 && !this.propertyPath[1])
                                  -            state.firstSelection = persistObject(this.getPathObject(1), this.context);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        if (this.context.loaded && !this.selection)
                                  -        {
                                  -            if (!state)
                                  -            {
                                  -                this.select(null);
                                  -                return;
                                  -            }
                                  -            if (state.viewPath)
                                  -                this.viewPath = state.viewPath;
                                  -            if (state.propertyPath)
                                  -                this.propertyPath = state.propertyPath;
                                  -
                                  -            var selectObject = defaultObject = this.getDefaultSelection(this.context);
                                  -
                                  -            if (state.firstSelection)
                                  -            {
                                  -                var restored = state.firstSelection(this.context);
                                  -                if (restored)
                                  -                {
                                  -                    selectObject = restored;
                                  -                    this.objectPath = [defaultObject, restored];
                                  -                }
                                  -                else
                                  -                    this.objectPath = [defaultObject];
                                  -            }
                                  -            else
                                  -                this.objectPath = [defaultObject];
                                  -
                                  -            if (this.propertyPath.length > 1)
                                  -            {
                                  -                for (var i = 1; i < this.propertyPath.length; ++i)
                                  -                {
                                  -                    var name = this.propertyPath[i];
                                  -                    if (!name)
                                  -                        continue;
                                  -
                                  -                    var object = selectObject;
                                  -                    try
                                  -                    {
                                  -                        selectObject = object[name];
                                  -                    }
                                  -                    catch (exc)
                                  -                    {
                                  -                        selectObject = null;
                                  -                    }
                                  -
                                  -                    if (selectObject)
                                  -                    {
                                  -                        this.objectPath.push(new Property(object, name));
                                  -                    }
                                  -                    else
                                  -                    {
                                  -                        // If we can't access a property, just stop
                                  -                        this.viewPath.splice(i);
                                  -                        this.propertyPath.splice(i);
                                  -                        this.objectPath.splice(i);
                                  -                        selectObject = this.getPathObject(this.objectPath.length-1);
                                  -                        break;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            var selection = state.pathIndex <= this.objectPath.length-1
                                  -                ? this.getPathObject(state.pathIndex)
                                  -                : this.getPathObject(this.objectPath.length-1);
                                  -
                                  -            this.select(selection);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var view = this.viewPath[this.pathIndex];
                                  -        if (view && this.panelNode.scrollTop)
                                  -            view.scrollTop = this.panelNode.scrollTop;
                                  -    },
                                  -
                                  -    getBreakOnNextTooltip: function(enabled)
                                  -    {
                                  -        return (enabled ? $STR("dom.Disable Break On Property Change") :
                                  -            $STR("dom.Break On Property Change"));
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object == null)
                                  -            return 1000;
                                  -
                                  -        if (typeof(object) == "undefined")
                                  -            return 1000;
                                  -        else if (object instanceof SourceLink)
                                  -            return 0;
                                  -        else
                                  -            return 1; // just agree to support everything but not aggressively.
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        var previousIndex = this.pathIndex;
                                  -        var previousView = previousIndex == -1 ? null : this.viewPath[previousIndex];
                                  -
                                  -        var newPath = this.pathToAppend;
                                  -        delete this.pathToAppend;
                                  -
                                  -        var pathIndex = this.findPathObject(object);
                                  -        if (newPath || pathIndex == -1)
                                  -        {
                                  -            this.toggles = {};
                                  -
                                  -            if (newPath)
                                  -            {
                                  -                // Remove everything after the point where we are inserting, so we
                                  -                // essentially replace it with the new path
                                  -                if (previousView)
                                  -                {
                                  -                    if (this.panelNode.scrollTop)
                                  -                        previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -                    this.objectPath.splice(previousIndex+1);
                                  -                    this.propertyPath.splice(previousIndex+1);
                                  -                    this.viewPath.splice(previousIndex+1);
                                  -                }
                                  -
                                  -                var value = this.getPathObject(previousIndex);
                                  -                if (!value)
                                  -                {
                                  -                    if (FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("dom.updateSelection no pathObject for "+previousIndex+"\n");
                                  -                    return;
                                  -                }
                                  -
                                  -                for (var i = 0; i < newPath.length; ++i)
                                  -                {
                                  -                    var name = newPath[i];
                                  -                    var object = value;
                                  -                    try
                                  -                    {
                                  -                        value = value[name];
                                  -                    }
                                  -                    catch(exc)
                                  -                    {
                                  -                        if (FBTrace.DBG_ERRORS)
                                  -                                FBTrace.sysout("dom.updateSelection FAILS at path_i="+i+" for name:"+name+"\n");
                                  -                        return;
                                  -                    }
                                  -
                                  -                    ++this.pathIndex;
                                  -                    this.objectPath.push(new Property(object, name));
                                  -                    this.propertyPath.push(name);
                                  -                    this.viewPath.push({toggles: this.toggles, scrollTop: 0});
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                this.toggles = {};
                                  -
                                  -                var win = this.context.getGlobalScope();
                                  -                if (object == win)
                                  -                {
                                  -                    this.pathIndex = 0;
                                  -                    this.objectPath = [win];
                                  -                    this.propertyPath = [null];
                                  -                    this.viewPath = [{toggles: this.toggles, scrollTop: 0}];
                                  -                }
                                  -                else
                                  -                {
                                  -                    this.pathIndex = 1;
                                  -                    this.objectPath = [win, object];
                                  -                    this.propertyPath = [null, null];
                                  -                    this.viewPath = [
                                  -                        {toggles: {}, scrollTop: 0},
                                  -                        {toggles: this.toggles, scrollTop: 0}
                                  -                    ];
                                  -                }
                                  -            }
                                  -
                                  -            this.panelNode.scrollTop = 0;
                                  -            this.rebuild();
                                  -        }
                                  -        else
                                  -        {
                                  -            this.pathIndex = pathIndex;
                                  -
                                  -            var view = this.viewPath[pathIndex];
                                  -            this.toggles = view ? view.toggles : {};
                                  -
                                  -            // Persist the current scroll location
                                  -            if (previousView && this.panelNode.scrollTop)
                                  -                previousView.scrollTop = this.panelNode.scrollTop;
                                  -
                                  -            this.rebuild(false, view ? view.scrollTop : 0);
                                  -        }
                                  -
                                  -    },
                                  -
                                  -    getObjectPath: function(object)
                                  -    {
                                  -        return this.objectPath;
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        return this.context.getGlobalScope();
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        const optionMap = {showUserProps: 1, showUserFuncs: 1, showDOMProps: 1,
                                  -            showDOMFuncs: 1, showDOMConstants: 1};
                                  -        if ( optionMap.hasOwnProperty(name) )
                                  -            this.rebuild(true);
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowUserProps", "showUserProps"),
                                  -            optionMenu("ShowUserFuncs", "showUserFuncs"),
                                  -            optionMenu("ShowDOMProps", "showDOMProps"),
                                  -            optionMenu("ShowDOMFuncs", "showDOMFuncs"),
                                  -            optionMenu("ShowDOMConstants", "showDOMConstants"),
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target)
                                  -    {
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -
                                  -        var items = [];
                                  -
                                  -        if (row)
                                  -        {
                                  -            var rowName = getRowName(row);
                                  -            var rowObject = this.getRowObject(row);
                                  -            var rowValue = this.getRowPropertyValue(row);
                                  -
                                  -            var isWatch = hasClass(row, "watchRow");
                                  -            var isStackFrame = rowObject instanceof jsdIStackFrame;
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: "Copy Name",
                                  -                    command: bindFixed(this.copyName, this, row) },
                                  -                {label: "Copy Path",
                                  -                    command: bindFixed(this.copyPath, this, row) }
                                  -            );
                                  -
                                  -            if (typeof(rowValue) == "string" || typeof(rowValue) == "number")
                                  -            {
                                  -                // Functions already have a copy item in their context menu
                                  -                items.push(
                                  -                    {label: "CopyValue",
                                  -                        command: bindFixed(this.copyProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            items.push(
                                  -                "-",
                                  -                {label: isWatch ? "EditWatch" : (isStackFrame ? "EditVariable" : "EditProperty"),
                                  -                    command: bindFixed(this.editProperty, this, row) }
                                  -            );
                                  -
                                  -            if (isWatch || (!isStackFrame && !isDOMMember(rowObject, rowName)))
                                  -            {
                                  -                items.push(
                                  -                    {label: isWatch ? "DeleteWatch" : "DeleteProperty",
                                  -                        command: bindFixed(this.deleteProperty, this, row) }
                                  -                );
                                  -            }
                                  -
                                  -            var member = row ? row.domObject : null;
                                  -            if (!isDOMMember(rowObject, rowName) && member && member.breakable)
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "html.dom.label.Break On Property Change", type: "checkbox",
                                  -                        checked: this.context.dom.breakpoints.findBreakpoint(rowObject, rowName),
                                  -                        command: bindFixed(this.breakOnProperty, this, row)}
                                  -                );
                                  -            }
                                  -        }
                                  -
                                  -        items.push(
                                  -            "-",
                                  -            {label: "Refresh", command: bindFixed(this.rebuild, this, true) }
                                  -        );
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (!this.editor)
                                  -            this.editor = new DOMEditor(this.document);
                                  -
                                  -        return this.editor;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var DOMMainPanel = Firebug.DOMPanel = function () {};
                                  -
                                  -Firebug.DOMPanel.DirTable = DirTablePlate;
                                  -
                                  -DOMMainPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    selectRow: function(row, target)
                                  -    {
                                  -        if (!target)
                                  -            target = row.lastChild.firstChild;
                                  -
                                  -        if (!target || !target.repObject)
                                  -            return;
                                  -
                                  -        this.pathToAppend = getPath(row);
                                  -
                                  -        // If the object is inside an array, look up its index
                                  -        var valueBox = row.lastChild.firstChild;
                                  -        if (hasClass(valueBox, "objectBox-array"))
                                  -        {
                                  -            var arrayIndex = FirebugReps.Arr.getItemIndex(target);
                                  -            this.pathToAppend.push(arrayIndex);
                                  -        }
                                  -
                                  -        // Make sure we get a fresh status path for the object, since otherwise
                                  -        // it might find the object in the existing path and not refresh it
                                  -        Firebug.chrome.clearStatusPath();
                                  -
                                  -        this.select(target.repObject, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        var repNode = Firebug.getRepNode(event.target);
                                  -        if (repNode)
                                  -        {
                                  -            var row = getAncestorByClass(event.target, "memberRow");
                                  -            if (row)
                                  -            {
                                  -                this.selectRow(row, repNode);
                                  -                cancelEvent(event);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "dom",
                                  -    searchable: true,
                                  -    statusSeparator: ">",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onClick = bind(this.onClick, this);
                                  -
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -        {
                                  -            delete this.currentSearch;
                                  -            this.highlightRow(null);
                                  -            return false;
                                  -        }
                                  -
                                  -        var row;
                                  -        if (this.currentSearch && text == this.currentSearch.text)
                                  -            row = this.currentSearch.findNext(true, undefined, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        else
                                  -        {
                                  -            function findRow(node) { return getAncestorByClass(node, "memberRow"); }
                                  -            this.currentSearch = new TextSearch(this.panelNode, findRow);
                                  -            row = this.currentSearch.find(text, reverse, Firebug.Search.isCaseSensitive(text));
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = this.document.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(this.currentSearch.range);
                                  -
                                  -            scrollIntoCenterView(row, this.panelNode);
                                  -
                                  -            this.highlightRow(row);
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, row]);
                                  -            return true;
                                  -        }
                                  -        else
                                  -        {
                                  -            dispatch([Firebug.A11yModel], 'onDomSearchMatchFound', [this, text, null]);
                                  -            return false;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function DOMSidePanel() {}
                                  -
                                  -DOMSidePanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "domSide",
                                  -    parentPanel: "html",
                                  -    order: 3,
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onInitializeNode', [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onDestroyNode', [this, 'console']);
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function WatchPanel() {}
                                  -
                                  -WatchPanel.prototype = extend(Firebug.DOMBasePanel.prototype,
                                  -{
                                  -    tag: DirTablePlate.watchTag,
                                  -
                                  -    rebuild: function()
                                  -    {
                                  -        this.updateSelection(this.selection);
                                  -    },
                                  -
                                  -    showEmptyMembers: function()
                                  -    {
                                  -        this.tag.replace({domPanel: this, toggles: {}}, this.panelNode);
                                  -    },
                                  -
                                  -    addWatch: function(expression)
                                  -    {
                                  -        if (!this.watches)
                                  -            this.watches = [];
                                  -
                                  -        this.watches.splice(0, 0, expression);
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    removeWatch: function(expression)
                                  -    {
                                  -        if (!this.watches)
                                  -            return;
                                  -
                                  -        var index = this.watches.indexOf(expression);
                                  -        if (index != -1)
                                  -            this.watches.splice(index, 1);
                                  -    },
                                  -
                                  -    editNewWatch: function(value)
                                  -    {
                                  -        var watchNewRow = getElementByClass(this.panelNode, "watchNewRow");
                                  -        if (watchNewRow)
                                  -            this.editProperty(watchNewRow, value);
                                  -    },
                                  -
                                  -    setWatchValue: function(row, value)
                                  -    {
                                  -        var rowIndex = getWatchRowIndex(row);
                                  -        this.watches[rowIndex] = value;
                                  -        this.rebuild(true);
                                  -    },
                                  -
                                  -    deleteWatch: function(row)
                                  -    {
                                  -        var rowIndex = getWatchRowIndex(row);
                                  -        this.watches.splice(rowIndex, 1);
                                  -        this.rebuild(true);
                                  -
                                  -        this.context.setTimeout(bindFixed(function()
                                  -        {
                                  -            this.showToolbox(null);
                                  -        }, this));
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    showToolbox: function(row)
                                  -    {
                                  -        var toolbox = this.getToolbox();
                                  -        if (row)
                                  -        {
                                  -            if (hasClass(row, "editing"))
                                  -                return;
                                  -
                                  -            toolbox.watchRow = row;
                                  -
                                  -            var offset = getClientOffset(row);
                                  -            toolbox.style.top = offset.y + "px";
                                  -            this.panelNode.appendChild(toolbox);
                                  -        }
                                  -        else
                                  -        {
                                  -            delete toolbox.watchRow;
                                  -            if (toolbox.parentNode)
                                  -                toolbox.parentNode.removeChild(toolbox);
                                  -        }
                                  -    },
                                  -
                                  -    getToolbox: function()
                                  -    {
                                  -        if (!this.toolbox)
                                  -            this.toolbox = ToolboxPlate.tag.replace({domPanel: this}, this.document);
                                  -
                                  -        return this.toolbox;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var watchNewRow = getAncestorByClass(event.target, "watchNewRow");
                                  -        if (watchNewRow)
                                  -        {
                                  -            this.editProperty(watchNewRow);
                                  -            cancelEvent(event);
                                  -        }
                                  -    },
                                  -
                                  -    onMouseOver: function(event)
                                  -    {
                                  -        var watchRow = getAncestorByClass(event.target, "watchRow");
                                  -        if (watchRow)
                                  -            this.showToolbox(watchRow);
                                  -    },
                                  -
                                  -    onMouseOut: function(event)
                                  -    {
                                  -        if (isAncestor(event.relatedTarget, this.getToolbox()))
                                  -            return;
                                  -
                                  -        var watchRow = getAncestorByClass(event.relatedTarget, "watchRow");
                                  -        if (!watchRow)
                                  -            this.showToolbox(null);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -
                                  -    name: "watches",
                                  -    order: 0,
                                  -    parentPanel: "script",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onMouseOver = bind(this.onMouseOver, this);
                                  -        this.onMouseOut = bind(this.onMouseOut, this);
                                  -
                                  -        Firebug.DOMBasePanel.prototype.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        state.watches = this.watches;
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        if (state && state.watches)
                                  -            this.watches = state.watches;
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.addEventListener("mouseover", this.onMouseOver, false);
                                  -        this.panelNode.addEventListener("mouseout", this.onMouseOut, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this, 'console']);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.removeEventListener("mouseover", this.onMouseOver, false);
                                  -        this.panelNode.removeEventListener("mouseout", this.onMouseOut, false);
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this, 'console']);
                                  -    },
                                  -
                                  -    refresh: function()
                                  -    {
                                  -        this.rebuild(true);
                                  -
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        dispatch([Firebug.A11yModel], 'onBeforeDomUpdateSelection', [this]);
                                  -        var frame = this.context.currentFrame;
                                  -
                                  -        var newFrame = frame && frame.isValid && frame.script != this.lastScript;
                                  -        if (newFrame)
                                  -        {
                                  -            this.toggles = {};
                                  -            this.lastScript = frame.script;
                                  -        }
                                  -
                                  -        var members = [];
                                  -
                                  -        if (this.watches)
                                  -        {
                                  -            for (var i = 0; i < this.watches.length; ++i)
                                  -            {
                                  -                var expr = this.watches[i];
                                  -                var value = null;
                                  -                Firebug.CommandLine.evaluate(expr, this.context, null, this.context.getGlobalScope(),
                                  -                    function success(result, context)
                                  -                    {
                                  -                        value = result;
                                  -                    },
                                  -                    function failed(result, context)
                                  -                    {
                                  -                        var exc = result;
                                  -                        value = new ErrorCopy(exc+"");
                                  -                    }
                                  -                );
                                  -
                                  -                addMember(object, "watch", members, expr, value, 0);
                                  -            }
                                  -        }
                                  -
                                  -        if (frame && frame.isValid)
                                  -        {
                                  -            var thisVar = unwrapIValue(frame.thisValue);
                                  -            addMember(object, "user", members, "this", thisVar, 0);
                                  -
                                  -            var scopeChain = this.generateScopeChain(frame.scope);
                                  -            addMember(object, "scopes", members, "scopeChain", scopeChain, 0);
                                  -
                                  -            members.push.apply(members, this.getMembers(scopeChain[0], 0, this.context));
                                  -        }
                                  -
                                  -        this.expandMembers(members, this.toggles, 0, 0, this.context);
                                  -        this.showMembers(members, !newFrame);
                                  -    },
                                  -
                                  -    generateScopeChain: function (scope)
                                  -    {
                                  -        var ret = [];
                                  -        while (scope) {
                                  -            var scopeVars;
                                  -            // getWrappedValue will not contain any variables for closure
                                  -            // scopes, so we want to special case this to get all variables
                                  -            // in all cases.
                                  -            if (scope.jsClassName == "Call") {
                                  -                scopeVars = {};
                                  -                var listValue = {value: null}, lengthValue = {value: 0};
                                  -                scope.getProperties(listValue, lengthValue);
                                  -
                                  -                for (var i = 0; i < lengthValue.value; ++i)
                                  -                {
                                  -                    var prop = listValue.value[i];
                                  -                    var name = unwrapIValue(prop.name);
                                  -                    if (ignoreVars[name] == 1)
                                  -                    {
                                  -                        if (FBTrace.DBG_DOM)
                                  -                            FBTrace.sysout("dom.generateScopeChain: ignoreVars: " + name);
                                  -                        continue;
                                  -                    }
                                  -
                                  -                    scopeVars[name] = unwrapIValue(prop.value);
                                  -                }
                                  -            } else {
                                  -                scopeVars = unwrapIValue(scope);
                                  -            }
                                  -
                                  -            if (scopeVars && scopeVars.hasOwnProperty)
                                  -            {
                                  -                if (!scopeVars.hasOwnProperty("toString")) {
                                  -                    (function() {
                                  -                        var className = scope.jsClassName;
                                  -                        scopeVars.toString = function() {
                                  -                            return $STR(className + " Scope");
                                  -                        };
                                  -                    })();
                                  -                }
                                  -
                                  -                ret.push(scopeVars);
                                  -            }
                                  -            else
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("dom .generateScopeChain: bad scopeVars");
                                  -            }
                                  -            scope = scope.jsParent;
                                  -        }
                                  -
                                  -        ret.toString = function() {
                                  -            return $STR("Scope Chain");
                                  -        };
                                  -
                                  -        return ret;
                                  -    },
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function DOMEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box;
                                  -
                                  -    this.tabNavigation = false;
                                  -    this.tabCompletion = true;
                                  -    this.completeAsYouType = false;
                                  -    this.fixedWidth = true;
                                  -
                                  -    this.autoCompleter = Firebug.CommandLine.autoCompleter;
                                  -}
                                  -
                                  -DOMEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    tag:
                                  -        INPUT({"class": "fixedWidthEditor a11yFocusNoTab",
                                  -            type: "text", title:$STR("NewWatch"),
                                  -            oninput: "$onInput", onkeypress: "$onKeyPress"}),
                                  -
                                  -    endEditing: function(target, value, cancel)
                                  -    {
                                  -        // XXXjoe Kind of hackish - fix me
                                  -        delete this.panel.context.thisValue;
                                  -
                                  -        if (cancel || value == "")
                                  -            return;
                                  -
                                  -        var row = getAncestorByClass(target, "memberRow");
                                  -        dispatch([Firebug.A11yModel], 'onWatchEndEditing', [this.panel]);
                                  -        if (!row)
                                  -            this.panel.addWatch(value);
                                  -        else if (hasClass(row, "watchRow"))
                                  -            this.panel.setWatchValue(row, value);
                                  -        else
                                  -            this.panel.setPropertyValue(row, value);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function isClassFunction(fn)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in fn.prototype)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function hasProperties(ob)
                                  -{
                                  -    try
                                  -    {
                                  -        for (var name in ob)
                                  -            return true;
                                  -    } catch (exc) {}
                                  -    return false;
                                  -}
                                  -
                                  -function addMember(object, type, props, name, value, level, order, context)
                                  -{
                                  -    var rep = Firebug.getRep(value);    // do this first in case a call to instanceof reveals contents
                                  -    var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -    var valueType = typeof(value);
                                  -    var hasChildren = hasProperties(value) && !(value instanceof ErrorCopy) &&
                                  -        (valueType == "function" || (valueType == "object" && value != null)
                                  -        || (valueType == "string" && value.length > Firebug.stringCropLength));
                                  -
                                  -    var member = {
                                  -        object: object,
                                  -        name: name,
                                  -        value: value,
                                  -        type: type,
                                  -        rowClass: "memberRow-"+type,
                                  -        open: "",
                                  -        order: order,
                                  -        level: level,
                                  -        indent: level*16,
                                  -        hasChildren: hasChildren,
                                  -        tag: tag
                                  -    };
                                  -
                                  -    // The context doesn't have to be specified (e.g. in case of Watch panel that is based
                                  -    // on the same template as the DOM panel, but doesn't show any breakpoints).
                                  -    if (context)
                                  -    {
                                  -        // xxxHonza: Support for object change not implemented yet.
                                  -        member.breakable = !hasChildren;
                                  -
                                  -        // xxxHonza: Disable breaking on direct window properties, see #520572
                                  -        if (object instanceof Ci.nsIDOMWindow)
                                  -            member.breakable = false;
                                  -
                                  -        var breakpoints = context.dom.breakpoints;
                                  -        var bp = breakpoints.findBreakpoint(object, name);
                                  -        if (bp)
                                  -        {
                                  -            member.breakpoint = true;
                                  -            member.disabledBreakpoint = !bp.checked;
                                  -        }
                                  -    }
                                  -
                                  -    // If the property is implemented using a getter function (and there is no setter
                                  -    // implemented) use a "get" prefix that is displayed in the UI.
                                  -    var o = unwrapObject(object);
                                  -    member.prefix = (o.__lookupGetter__(name) && !o.__lookupSetter__(name)) ? "get " : "";
                                  -
                                  -    props.push(member);
                                  -    return member;
                                  -}
                                  -
                                  -function getWatchRowIndex(row)
                                  -{
                                  -    var index = -1;
                                  -    for (; row && hasClass(row, "watchRow"); row = row.previousSibling)
                                  -        ++index;
                                  -    return index;
                                  -}
                                  -
                                  -function getRowName(row)
                                  -{
                                  -    var labelNode = getElementByClass(row, "memberLabelCell");
                                  -    return labelNode.textContent;
                                  -}
                                  -
                                  -function getRowValue(row)
                                  -{
                                  -    var valueNode = getElementByClass(row, "memberValueCell");
                                  -    return valueNode.firstChild.repObject;
                                  -}
                                  -
                                  -function getRowOwnerObject(row)
                                  -{
                                  -    var parentRow = getParentRow(row);
                                  -    if (parentRow)
                                  -        return getRowValue(parentRow);
                                  -}
                                  -
                                  -function getParentRow(row)
                                  -{
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -            return row;
                                  -    }
                                  -}
                                  -
                                  -function getPath(row)
                                  -{
                                  -    var name = getRowName(row);
                                  -    var path = [name];
                                  -
                                  -    var level = parseInt(row.getAttribute("level"))-1;
                                  -    for (row = row.previousSibling; row; row = row.previousSibling)
                                  -    {
                                  -        if (parseInt(row.getAttribute("level")) == level)
                                  -        {
                                  -            var name = getRowName(row);
                                  -            path.splice(0, 0, name);
                                  -
                                  -            --level;
                                  -        }
                                  -    }
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -function findRow(parentNode, object)
                                  -{
                                  -    var rows = getElementsByClass(parentNode, "memberRow");
                                  -    for (var i=0; i<rows.length; i++)
                                  -    {
                                  -        var row = rows[i];
                                  -        if (object == row.domObject.object)
                                  -            return row;
                                  -    }
                                  -
                                  -    return row;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.DOMModule.DebuggerListener =
                                  -{
                                  -    getBreakpoints: function(context, groups)
                                  -    {
                                  -        if (!context.dom.breakpoints.isEmpty())
                                  -            groups.push(context.dom.breakpoints);
                                  -    }
                                  -};
                                  -
                                  -Firebug.DOMModule.BreakpointRep = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    tag:
                                  -        DIV({"class": "breakpointRow focusRow", _repObject: "$bp",
                                  -            role: "option", "aria-checked": "$bp.checked"},
                                  -            DIV({"class": "breakpointBlockHead", onclick: "$onEnable"},
                                  -                INPUT({"class": "breakpointCheckbox", type: "checkbox",
                                  -                    _checked: "$bp.checked", tabindex : "-1"}),
                                  -                SPAN({"class": "breakpointName"}, "$bp.propName"),
                                  -                IMG({"class": "closeButton", src: "blank.gif", onclick: "$onRemove"})
                                  -            ),
                                  -            DIV({"class": "breakpointCode"},
                                  -                TAG("$bp.object|getObjectTag", {object: "$bp.object"})
                                  -            )
                                  -        ),
                                  -
                                  -    getObjectTag: function(object)
                                  -    {
                                  -        var rep = Firebug.getRep(object);
                                  -        return rep.shortTag ? rep.shortTag : rep.tag;
                                  -    },
                                  -
                                  -    onRemove: function(event)
                                  -    {
                                  -        cancelEvent(event);
                                  -
                                  -        if (!hasClass(event.target, "closeButton"))
                                  -            return;
                                  -
                                  -        var bpPanel = Firebug.getElementPanel(event.target);
                                  -        var context = bpPanel.context;
                                  -
                                  -        // Remove from list of breakpoints.
                                  -        var row = getAncestorByClass(event.target, "breakpointRow");
                                  -        var bp = row.repObject;
                                  -        context.dom.breakpoints.removeBreakpoint(bp.object, bp.propName);
                                  -
                                  -        // Remove from the UI.
                                  -        bpPanel.noRefresh = true;
                                  -        bpPanel.removeRow(row);
                                  -        bpPanel.noRefresh = false;
                                  -
                                  -        var domPanel = context.getPanel("dom", true);
                                  -        if (domPanel)
                                  -        {
                                  -            var domRow = findRow(domPanel.panelNode, bp.object);
                                  -            if (domRow)
                                  -            {
                                  -                domRow.removeAttribute("breakpoint");
                                  -                domRow.removeAttribute("disabledBreakpoint");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onEnable: function(event)
                                  -    {
                                  -        var checkBox = event.target;
                                  -        if (!hasClass(checkBox, "breakpointCheckbox"))
                                  -            return;
                                  -
                                  -        var bpPanel = Firebug.getElementPanel(event.target);
                                  -        var context = bpPanel.context;
                                  -
                                  -        var bp = getAncestorByClass(checkBox, "breakpointRow").repObject;
                                  -        bp.checked = checkBox.checked;
                                  -
                                  -        var domPanel = context.getPanel("dom", true);
                                  -        if (domPanel)
                                  -        {
                                  -            var row = findRow(domPanel.panelNode, bp.object);
                                  -            if (row)
                                  -                row.setAttribute("disabledBreakpoint", bp.checked ? "false" : "true");
                                  -        }
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Breakpoint;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Breakpoint(object, propName, objectPath, context)
                                  -{
                                  -    this.context = context;
                                  -    this.propName = propName;
                                  -    this.objectPath = objectPath;
                                  -    this.object = object;
                                  -    this.checked = true;
                                  -}
                                  -
                                  -Breakpoint.prototype =
                                  -{
                                  -    watchProperty: function()
                                  -    {
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.watch; property: " + this.propName);
                                  -
                                  -        if (!this.object)
                                  -            return;
                                  -
                                  -        try
                                  -        {
                                  -            var self = this;
                                  -            this.object.watch(this.propName, function handler(prop, oldval, newval)
                                  -            {
                                  -                // XXXjjb Beware: in playing with this feature I hit too much recursion multiple times with console.log
                                  -                // TODO Do something cute in the UI with the error bubble thing
                                  -                if (self.checked)
                                  -                {
                                  -                    self.context.breakingCause = {
                                  -                        title: $STR("dom.Break On Property"),
                                  -                        message: cropString(prop, 200),
                                  -                        prevValue: oldval,
                                  -                        newValue: newval
                                  -                    };
                                  -
                                  -                    Firebug.Breakpoint.breakNow(self.context.getPanel("dom", true));
                                  -                }
                                  -                return newval;
                                  -            });
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("dom.watch; object FAILS " + exc, exc);
                                  -            return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    unwatchProperty: function()
                                  -    {
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.unwatch; property: " + this.propName, this.object);
                                  -
                                  -        if (!this.object)
                                  -            return;
                                  -
                                  -        try
                                  -        {
                                  -            this.object.unwatch(this.propName);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("dom.unwatch; object FAILS " + exc, exc);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DOMBreakpointGroup()
                                  -{
                                  -    this.breakpoints = [];
                                  -}
                                  -
                                  -DOMBreakpointGroup.prototype = extend(new Firebug.Breakpoint.BreakpointGroup(),
                                  -{
                                  -    name: "domBreakpoints",
                                  -    title: $STR("dom.label.DOM Breakpoints"),
                                  -
                                  -    addBreakpoint: function(object, propName, panel, row)
                                  -    {
                                  -        var path = panel.getPropertyPath(row);
                                  -        path.pop();
                                  -
                                  -        // We don't want the last dot.
                                  -        if (path.length > 0 && path[path.length-1] == ".")
                                  -            path.pop();
                                  -
                                  -        var objectPath = path.join("");
                                  -        if (FBTrace.DBG_DOM)
                                  -            FBTrace.sysout("dom.addBreakpoint; " + objectPath, path);
                                  -
                                  -        var bp = new Breakpoint(object, propName, objectPath, panel.context);
                                  -        if (bp.watchProperty());
                                  -            this.breakpoints.push(bp);
                                  -    },
                                  -
                                  -    removeBreakpoint: function(object, propName)
                                  -    {
                                  -        var bp = this.findBreakpoint(object, propName);
                                  -        if (bp)
                                  -        {
                                  -            bp.unwatchProperty();
                                  -            remove(this.breakpoints, bp);
                                  -        }
                                  -    },
                                  -
                                  -    matchBreakpoint: function(bp, args)
                                  -    {
                                  -        var object = args[0];
                                  -        var propName = args[1];
                                  -        return bp.object == object && bp.propName == propName;
                                  -    },
                                  -
                                  -    // Persistence
                                  -    load: function(context)
                                  -    {
                                  -        var panelState = getPersistedState(context, "dom");
                                  -        if (panelState.breakpoints)
                                  -            this.breakpoints = panelState.breakpoints;
                                  -
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            try
                                  -            {
                                  -                // xxxHonza: Firebug.CommandLine.evaluate should be reused if possible.
                                  -                // xxxJJB: The Components.utils.evalInSandbox fails from some reason.
                                  -                var expr = "context.window.wrappedJSObject." + bp.objectPath;
                                  -                bp.object = eval(expr);
                                  -                bp.watchProperty();
                                  -
                                  -                if (FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.DOMBreakpointGroup.load; " + bp.objectPath, bp);
                                  -            }
                                  -            catch (err)
                                  -            {
                                  -                if (FBTrace.DBG_ERROR || FBTrace.DBG_DOM)
                                  -                    FBTrace.sysout("dom.DOMBreakpointGroup.load; ERROR " + bp.objectPath, err);
                                  -            }
                                  -        });
                                  -    },
                                  -
                                  -    store: function(context)
                                  -    {
                                  -        this.enumerateBreakpoints(function(bp)
                                  -        {
                                  -            bp.object = null;
                                  -        });
                                  -
                                  -        var panelState = getPersistedState(context, "dom");
                                  -        panelState.breakpoints = this.breakpoints;
                                  -    },
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.DOMModule);
                                  -Firebug.registerPanel(DOMMainPanel);
                                  -Firebug.registerPanel(DOMSidePanel);
                                  -Firebug.registerPanel(WatchPanel);
                                  -Firebug.registerRep(Firebug.DOMModule.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  -
                                  diff --git a/tags/firebug1.3a5/content/firebug/domplate.js b/tags/firebug1.3a5/content/firebug/domplate.js
                                  deleted file mode 100644
                                  index 28e49056..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/domplate.js
                                  +++ /dev/null
                                  @@ -1,1065 +0,0 @@
                                  -// Problems in IE
                                  -// FIXED - eval return
                                  -// FIXED - addEventListener problem in IE
                                  -// FIXED doc.createRange?
                                  -//
                                  -// class reserved word
                                  -// test all honza examples in IE6 and IE7
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -var domplate = FBL.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name.indexOf("_") == 0)
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name.indexOf("$") == 0)
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['r=(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderMarkup = r;
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['r=(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        var r = null;
                                  -        eval(js)
                                  -        this.renderDOM = r;
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                //blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -                blocks.push('addEvent(node, "', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("var node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -function addEvent(object, name, handler)
                                  -{
                                  -    if (document.all)
                                  -        object.attachEvent("on"+name, handler);
                                  -    else
                                  -        object.addEventListener(name, handler, false);
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var div = doc.createElement("div");
                                  -        div.innerHTML = "<table><tbody>"+html+"</tbody></table>";
                                  -
                                  -        var tbody = div.firstChild.firstChild
                                  -        var parent = before.tagName == "TR" ? before.parentNode : before;
                                  -        var after = before.tagName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.tagName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        if (!womb || womb.ownerDocument != doc)
                                  -            womb = doc.createElement("div");
                                  -        
                                  -        womb.innerHTML = html;
                                  -  
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            if (before.nextSibling)
                                  -                before.parentNode.insertBefore(womb.firstChild, before.nextSibling);
                                  -            else
                                  -                before.parentNode.appendChild(womb.firstChild);
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        // TODO: xxxpedro domplate port to Firebug
                                  -        var root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        // clearing element reference to avoid reference error in IE8 when switching contexts
                                  -        womb = null;
                                  -        
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new arguments.callee.DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -        fn.DomplateTag = DomplateTag;
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "code", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a5/content/firebug/domplate.original.js b/tags/firebug1.3a5/content/firebug/domplate.original.js
                                  deleted file mode 100644
                                  index 80df5848..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/domplate.original.js
                                  +++ /dev/null
                                  @@ -1,1036 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function DomplateTag(tagName)
                                  -{
                                  -    this.tagName = tagName;
                                  -}
                                  -
                                  -function DomplateEmbed()
                                  -{
                                  -}
                                  -
                                  -function DomplateLoop()
                                  -{
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -(function() {
                                  -
                                  -var womb = null;
                                  -
                                  -top.domplate = function()
                                  -{
                                  -    var lastSubject;
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -        lastSubject = lastSubject ? copyObject(lastSubject, arguments[i]) : arguments[i];
                                  -
                                  -    for (var name in lastSubject)
                                  -    {
                                  -        var val = lastSubject[name];
                                  -        if (isTag(val))
                                  -            val.tag.subject = lastSubject;
                                  -    }
                                  -
                                  -    return lastSubject;
                                  -};
                                  -
                                  -domplate.context = function(context, fn)
                                  -{
                                  -    var lastContext = domplate.lastContext;
                                  -    domplate.topContext = context;
                                  -    fn.apply(context);
                                  -    domplate.topContext = lastContext;
                                  -};
                                  -
                                  -FBL.TAG = function()
                                  -{
                                  -    var embed = new DomplateEmbed();
                                  -    return embed.merge(arguments);
                                  -};
                                  -
                                  -FBL.FOR = function()
                                  -{
                                  -    var loop = new DomplateLoop();
                                  -    return loop.merge(arguments);
                                  -};
                                  -
                                  -DomplateTag.prototype =
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        if (oldTag)
                                  -            this.tagName = oldTag.tagName;
                                  -
                                  -        this.context = oldTag ? oldTag.context : null;
                                  -        this.subject = oldTag ? oldTag.subject : null;
                                  -        this.attrs = oldTag ? copyObject(oldTag.attrs) : {};
                                  -        this.classes = oldTag ? copyObject(oldTag.classes) : {};
                                  -        this.props = oldTag ? copyObject(oldTag.props) : null;
                                  -        this.listeners = oldTag ? copyArray(oldTag.listeners) : null;
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args.length ? args[0] : null;
                                  -        var hasAttrs = typeof(attrs) == "object" && !isTag(attrs);
                                  -
                                  -        this.children = [];
                                  -
                                  -        if (domplate.topContext)
                                  -            this.context = domplate.topContext;
                                  -
                                  -        if (args.length)
                                  -            parseChildren(args, hasAttrs ? 1 : 0, this.vars, this.children);
                                  -
                                  -        if (hasAttrs)
                                  -            this.parseAttrs(attrs);
                                  -
                                  -        return creator(this, DomplateTag);
                                  -    },
                                  -
                                  -    parseAttrs: function(args)
                                  -    {
                                  -        for (var name in args)
                                  -        {
                                  -            var val = parseValue(args[name]);
                                  -            readPartNames(val, this.vars);
                                  -
                                  -            if (name.indexOf("on") == 0)
                                  -            {
                                  -                var eventName = name.substr(2);
                                  -                if (!this.listeners)
                                  -                    this.listeners = [];
                                  -                this.listeners.push(eventName, val);
                                  -            }
                                  -            else if (name[0] == "_")
                                  -            {
                                  -                var propName = name.substr(1);
                                  -                if (!this.props)
                                  -                    this.props = {};
                                  -                this.props[propName] = val;
                                  -            }
                                  -            else if (name[0] == "$")
                                  -            {
                                  -                var className = name.substr(1);
                                  -                if (!this.classes)
                                  -                    this.classes = {};
                                  -                this.classes[className] = val;
                                  -            }
                                  -            else
                                  -            {
                                  -                if (name == "class" && this.attrs.hasOwnProperty(name) )
                                  -                    this.attrs[name] += " " + val;
                                  -                else
                                  -                    this.attrs[name] = val;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    compile: function()
                                  -    {
                                  -        if (this.renderMarkup)
                                  -            return;
                                  -
                                  -        this.compileMarkup();
                                  -        this.compileDOM();
                                  -
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderMarkup: ", this.renderMarkup);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate renderDOM:", this.renderDOM);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate domArgs:", this.domArgs);
                                  -    },
                                  -
                                  -    compileMarkup: function()
                                  -    {
                                  -        this.markupArgs = [];
                                  -        var topBlock = [], topOuts = [], blocks = [], info = {args: this.markupArgs, argIndex: 0};
                                  -         
                                  -        this.generateMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var fnBlock = ['(function (__code__, __context__, __in__, __out__'];
                                  -        for (var i = 0; i < info.argIndex; ++i)
                                  -            fnBlock.push(', s', i);
                                  -        fnBlock.push(') {');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (__context__) {');
                                  -        fnBlock.push('with (__in__) {');
                                  -
                                  -        fnBlock.push.apply(fnBlock, blocks);
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('}})');
                                  -
                                  -        function __link__(tag, code, outputs, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var tagOutputs = [];
                                  -            var markupArgs = [code, tag.tag.context, args, tagOutputs];
                                  -            markupArgs.push.apply(markupArgs, tag.tag.markupArgs);
                                  -            tag.tag.renderMarkup.apply(tag.tag.subject, markupArgs);
                                  -
                                  -            outputs.push(tag);
                                  -            outputs.push(tagOutputs);
                                  -        }
                                  -
                                  -        function __escape__(value)
                                  -        {
                                  -            function replaceChars(ch)
                                  -            {
                                  -                switch (ch)
                                  -                {
                                  -                    case "<":
                                  -                        return "&lt;";
                                  -                    case ">":
                                  -                        return "&gt;";
                                  -                    case "&":
                                  -                        return "&amp;";
                                  -                    case "'":
                                  -                        return "&#39;";
                                  -                    case '"':
                                  -                        return "&quot;";
                                  -                }
                                  -                return "?";
                                  -            };
                                  -            return String(value).replace(/[<>&"']/g, replaceChars);
                                  -        }
                                  -
                                  -        function __loop__(iter, outputs, fn)
                                  -        {
                                  -            var iterOuts = [];
                                  -            outputs.push(iterOuts);
                                  -
                                  -            if (iter instanceof Array)
                                  -                iter = new ArrayIterator(iter);
                                  -
                                  -            try
                                  -            {
                                  -                while (1)
                                  -                {
                                  -                    var value = iter.next();
                                  -                    var itemOuts = [0,0];
                                  -                    iterOuts.push(itemOuts);
                                  -                    fn.apply(this, [value, itemOuts]);
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (exc != StopIteration)
                                  -                    throw exc;
                                  -            }
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        this.renderMarkup = eval(js);
                                  -    },
                                  -
                                  -    getVarNames: function(args)
                                  -    {
                                  -        if (this.vars)
                                  -            args.push.apply(args, this.vars);
                                  -
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.getVarNames(args);
                                  -            else if (child instanceof Parts)
                                  -            {
                                  -                for (var i = 0; i < child.parts.length; ++i)
                                  -                {
                                  -                    if (child.parts[i] instanceof Variable)
                                  -                    {
                                  -                        var name = child.parts[i].name;
                                  -                        var names = name.split(".");
                                  -                        args.push(names[0]);
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        topBlock.push(',"<', this.tagName, '"');
                                  -
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (name != "class")
                                  -            {
                                  -                var val = this.attrs[name];
                                  -                topBlock.push(', " ', name, '=\\""');
                                  -                addParts(val, ',', topBlock, info, true);
                                  -                topBlock.push(', "\\""');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -                readPartNames(this.listeners[i+1], topOuts);
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -                readPartNames(this.props[name], topOuts);
                                  -        }
                                  -
                                  -        if ( this.attrs.hasOwnProperty("class") || this.classes)
                                  -        {
                                  -            topBlock.push(', " class=\\""');
                                  -            if (this.attrs.hasOwnProperty("class"))
                                  -                addParts(this.attrs["class"], ',', topBlock, info, true);
                                  -              topBlock.push(', " "');
                                  -            for (var name in this.classes)
                                  -            {
                                  -                topBlock.push(', (');
                                  -                addParts(this.classes[name], '', topBlock, info);
                                  -                topBlock.push(' ? "', name, '" + " " : "")');
                                  -            }
                                  -            topBlock.push(', "\\""');
                                  -        }
                                  -        topBlock.push(',">"');
                                  -
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        topBlock.push(',"</', this.tagName, '>"');
                                  -    },
                                  -
                                  -    generateChildMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                child.tag.generateMarkup(topBlock, topOuts, blocks, info);
                                  -            else
                                  -                addParts(child, ',', topBlock, info, true);
                                  -        }
                                  -    },
                                  -
                                  -    addCode: function(topBlock, topOuts, blocks)
                                  -    {
                                  -        if (topBlock.length)
                                  -            blocks.push('__code__.push(""', topBlock.join(""), ');');
                                  -        if (topOuts.length)
                                  -            blocks.push('__out__.push(', topOuts.join(","), ');');
                                  -        topBlock.splice(0, topBlock.length);
                                  -        topOuts.splice(0, topOuts.length);
                                  -    },
                                  -
                                  -    addLocals: function(blocks)
                                  -    {
                                  -        var varNames = [];
                                  -        this.getVarNames(varNames);
                                  -
                                  -        var map = {};
                                  -        for (var i = 0; i < varNames.length; ++i)
                                  -        {
                                  -            var name = varNames[i];
                                  -            if ( map.hasOwnProperty(name) )
                                  -                continue;
                                  -
                                  -            map[name] = 1;
                                  -            var names = name.split(".");
                                  -            blocks.push('var ', names[0] + ' = ' + '__in__.' + names[0] + ';');
                                  -        }
                                  -    },
                                  -
                                  -    compileDOM: function()
                                  -    {
                                  -        var path = [];
                                  -        var blocks = [];
                                  -        this.domArgs = [];
                                  -        path.embedIndex = 0;
                                  -        path.loopIndex = 0;
                                  -        path.staticIndex = 0;
                                  -        path.renderIndex = 0;
                                  -        var nodeCount = this.generateDOM(path, blocks, this.domArgs);
                                  -
                                  -        var fnBlock = ['(function (root, context, o'];
                                  -
                                  -        for (var i = 0; i < path.staticIndex; ++i)
                                  -            fnBlock.push(', ', 's'+i);
                                  -
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            fnBlock.push(', ', 'd'+i);
                                  -
                                  -        fnBlock.push(') {');
                                  -        for (var i = 0; i < path.loopIndex; ++i)
                                  -            fnBlock.push('var l', i, ' = 0;');
                                  -        for (var i = 0; i < path.embedIndex; ++i)
                                  -            fnBlock.push('var e', i, ' = 0;');
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('with (this) {');
                                  -        if (this.context)
                                  -            fnBlock.push('with (context) {');
                                  -
                                  -        fnBlock.push(blocks.join(""));
                                  -
                                  -        if (this.subject)
                                  -            fnBlock.push('}');
                                  -        if (this.context)
                                  -            fnBlock.push('}');
                                  -
                                  -        fnBlock.push('return ', nodeCount, ';');
                                  -        fnBlock.push('})');
                                  -
                                  -        function __bind__(object, fn)
                                  -        {
                                  -            return function(event) { return fn.apply(object, [event]); }
                                  -        }
                                  -
                                  -        function __link__(node, tag, args)
                                  -        {
                                  -            if (!tag || !tag.tag)
                                  -                return;
                                  -
                                  -            tag.tag.compile();
                                  -
                                  -            var domArgs = [node, tag.tag.context, 0];
                                  -            domArgs.push.apply(domArgs, tag.tag.domArgs);
                                  -            domArgs.push.apply(domArgs, args);
                                  -            //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate__link__ domArgs:", domArgs);
                                  -            return tag.tag.renderDOM.apply(tag.tag.subject, domArgs);
                                  -        }
                                  -
                                  -        var self = this;
                                  -        function __loop__(iter, fn)
                                  -        {
                                  -            var nodeCount = 0;
                                  -            for (var i = 0; i < iter.length; ++i)
                                  -            {
                                  -                iter[i][0] = i;
                                  -                iter[i][1] = nodeCount;
                                  -                nodeCount += fn.apply(this, iter[i]);
                                  -                //if (FBTrace.DBG_DOM) FBTrace.sysout("nodeCount", nodeCount);
                                  -            }
                                  -            return nodeCount;
                                  -        }
                                  -
                                  -        function __path__(parent, offset)
                                  -        {
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate __path__ offset: "+ offset+"\n");
                                  -            var root = parent;
                                  -
                                  -            for (var i = 2; i < arguments.length; ++i)
                                  -            {
                                  -                var index = arguments[i];
                                  -                if (i == 3)
                                  -                    index += offset;
                                  -
                                  -                if (index == -1)
                                  -                    parent = parent.parentNode;
                                  -                else
                                  -                    parent = parent.childNodes[index];
                                  -            }
                                  -
                                  -            //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate: "+arguments[2]+", root: "+ root+", parent: "+ parent+"\n");
                                  -            return parent;
                                  -        }
                                  -
                                  -        var js = fnBlock.join("");
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout(js.replace(/(\;|\{)/g, "$1\n"));
                                  -        this.renderDOM = eval(js);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        if (this.listeners || this.props)
                                  -            this.generateNodePath(path, blocks);
                                  -
                                  -        if (this.listeners)
                                  -        {
                                  -            for (var i = 0; i < this.listeners.length; i += 2)
                                  -            {
                                  -                var val = this.listeners[i+1];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.addEventListener("', this.listeners[i], '", __bind__(this, ', arg, '), false);');
                                  -            }
                                  -        }
                                  -
                                  -        if (this.props)
                                  -        {
                                  -            for (var name in this.props)
                                  -            {
                                  -                var val = this.props[name];
                                  -                var arg = generateArg(val, path, args);
                                  -                blocks.push('node.', name, ' = ', arg, ';');
                                  -            }
                                  -        }
                                  -
                                  -        this.generateChildDOM(path, blocks, args);
                                  -        return 1;
                                  -    },
                                  -
                                  -    generateNodePath: function(path, blocks)
                                  -    {
                                  -        blocks.push("node = __path__(root, o");
                                  -        for (var i = 0; i < path.length; ++i)
                                  -            blocks.push(",", path[i]);
                                  -        blocks.push(");");
                                  -    },
                                  -
                                  -    generateChildDOM: function(path, blocks, args)
                                  -    {
                                  -        path.push(0);
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                path[path.length-1] += '+' + child.tag.generateDOM(path, blocks, args);
                                  -            else
                                  -                path[path.length-1] += '+1';
                                  -        }
                                  -        path.pop();
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateEmbed.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.value = oldTag ? oldTag.value : parseValue(args[0]);
                                  -        this.attrs = oldTag ? oldTag.attrs : {};
                                  -        this.vars = oldTag ? copyArray(oldTag.vars) : [];
                                  -
                                  -        var attrs = args[1];
                                  -        for (var name in attrs)
                                  -        {
                                  -            var val = parseValue(attrs[name]);
                                  -            this.attrs[name] = val;
                                  -            readPartNames(val, this.vars);
                                  -        }
                                  -
                                  -        return creator(this, DomplateEmbed);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.value instanceof Parts)
                                  -            names.push(this.value.parts[0].name);
                                  -
                                  -        if (this.vars)
                                  -            names.push.apply(names, this.vars);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        blocks.push('__link__(');
                                  -        addParts(this.value, '', blocks, info);
                                  -        blocks.push(', __code__, __out__, {');
                                  -
                                  -        var lastName = null;
                                  -        for (var name in this.attrs)
                                  -        {
                                  -            if (lastName)
                                  -                blocks.push(',');
                                  -            lastName = name;
                                  -
                                  -            var val = this.attrs[name];
                                  -            blocks.push('"', name, '":');
                                  -            addParts(val, '', blocks, info);
                                  -        }
                                  -
                                  -        blocks.push('});');
                                  -        //this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var embedName = 'e'+path.embedIndex++;
                                  -
                                  -        this.generateNodePath(path, blocks);
                                  -
                                  -        var valueName = 'd' + path.renderIndex++;
                                  -        var argsName = 'd' + path.renderIndex++;
                                  -        blocks.push(embedName + ' = __link__(node, ', valueName, ', ', argsName, ');');
                                  -
                                  -        return embedName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -DomplateLoop.prototype = copyObject(DomplateTag.prototype,
                                  -{
                                  -    merge: function(args, oldTag)
                                  -    {
                                  -        this.varName = oldTag ? oldTag.varName : args[0];
                                  -        this.iter = oldTag ? oldTag.iter : parseValue(args[1]);
                                  -        this.vars = [];
                                  -
                                  -        this.children = oldTag ? copyArray(oldTag.children) : [];
                                  -
                                  -        var offset = Math.min(args.length, 2);
                                  -        parseChildren(args, offset, this.vars, this.children);
                                  -
                                  -        return creator(this, DomplateLoop);
                                  -    },
                                  -
                                  -    getVarNames: function(names)
                                  -    {
                                  -        if (this.iter instanceof Parts)
                                  -            names.push(this.iter.parts[0].name);
                                  -
                                  -        DomplateTag.prototype.getVarNames.apply(this, [names]);
                                  -    },
                                  -
                                  -    generateMarkup: function(topBlock, topOuts, blocks, info)
                                  -    {
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -
                                  -        var iterName;
                                  -        if (this.iter instanceof Parts)
                                  -        {
                                  -            var part = this.iter.parts[0];
                                  -            iterName = part.name;
                                  -
                                  -            if (part.format)
                                  -            {
                                  -                for (var i = 0; i < part.format.length; ++i)
                                  -                    iterName = part.format[i] + "(" + iterName + ")";
                                  -            }
                                  -        }
                                  -        else
                                  -            iterName = this.iter;
                                  -
                                  -        blocks.push('__loop__.apply(this, [', iterName, ', __out__, function(', this.varName, ', __out__) {');
                                  -        this.generateChildMarkup(topBlock, topOuts, blocks, info);
                                  -        this.addCode(topBlock, topOuts, blocks);
                                  -        blocks.push('}]);');
                                  -    },
                                  -
                                  -    generateDOM: function(path, blocks, args)
                                  -    {
                                  -        var iterName = 'd'+path.renderIndex++;
                                  -        var counterName = 'i'+path.loopIndex;
                                  -        var loopName = 'l'+path.loopIndex++;
                                  -
                                  -        if (!path.length)
                                  -            path.push(-1, 0);
                                  -
                                  -        var preIndex = path.renderIndex;
                                  -        path.renderIndex = 0;
                                  -
                                  -        var nodeCount = 0;
                                  -
                                  -        var subBlocks = [];
                                  -        var basePath = path[path.length-1];
                                  -        for (var i = 0; i < this.children.length; ++i)
                                  -        {
                                  -            path[path.length-1] = basePath+'+'+loopName+'+'+nodeCount;
                                  -
                                  -            var child = this.children[i];
                                  -            if (isTag(child))
                                  -                nodeCount += '+' + child.tag.generateDOM(path, subBlocks, args);
                                  -            else
                                  -                nodeCount += '+1';
                                  -        }
                                  -
                                  -        path[path.length-1] = basePath+'+'+loopName;
                                  -
                                  -        blocks.push(loopName,' = __loop__.apply(this, [', iterName, ', function(', counterName,',',loopName);
                                  -        for (var i = 0; i < path.renderIndex; ++i)
                                  -            blocks.push(',d'+i);
                                  -        blocks.push(') {');
                                  -        blocks.push(subBlocks.join(""));
                                  -        blocks.push('return ', nodeCount, ';');
                                  -        blocks.push('}]);');
                                  -
                                  -        path.renderIndex = preIndex;
                                  -
                                  -        return loopName;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function Variable(name, format)
                                  -{
                                  -    this.name = name;
                                  -    this.format = format;
                                  -}
                                  -
                                  -function Parts(parts)
                                  -{
                                  -    this.parts = parts;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function parseParts(str)
                                  -{
                                  -    var re = /\$([_A-Za-z][_A-Za-z0-9.|]*)/g;
                                  -    var index = 0;
                                  -    var parts = [];
                                  -
                                  -    var m;
                                  -    while (m = re.exec(str))
                                  -    {
                                  -        var pre = str.substr(index, (re.lastIndex-m[0].length)-index);
                                  -        if (pre)
                                  -            parts.push(pre);
                                  -
                                  -        var expr = m[1].split("|");
                                  -        parts.push(new Variable(expr[0], expr.slice(1)));
                                  -        index = re.lastIndex;
                                  -    }
                                  -
                                  -    if (!index)
                                  -        return str;
                                  -
                                  -    var post = str.substr(index);
                                  -    if (post)
                                  -        parts.push(post);
                                  -
                                  -    return new Parts(parts);
                                  -}
                                  -
                                  -function parseValue(val)
                                  -{
                                  -    return typeof(val) == 'string' ? parseParts(val) : val;
                                  -}
                                  -
                                  -function parseChildren(args, offset, vars, children)
                                  -{
                                  -    for (var i = offset; i < args.length; ++i)
                                  -    {
                                  -        var val = parseValue(args[i]);
                                  -        children.push(val);
                                  -        readPartNames(val, vars);
                                  -    }
                                  -}
                                  -
                                  -function readPartNames(val, vars)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -                vars.push(part.name);
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function generateArg(val, path, args)
                                  -{
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        var vals = [];
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var varName = 'd'+path.renderIndex++;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        varName = part.format[j] + '(' + varName + ')';
                                  -                }
                                  -
                                  -                vals.push(varName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+part.replace(/"/g, '\\"')+'"');
                                  -        }
                                  -
                                  -        return vals.join('+');
                                  -    }
                                  -    else
                                  -    {
                                  -        args.push(val);
                                  -        return 's' + path.staticIndex++;
                                  -    }
                                  -}
                                  -
                                  -function addParts(val, delim, block, info, escapeIt)
                                  -{
                                  -    var vals = [];
                                  -    if (val instanceof Parts)
                                  -    {
                                  -        for (var i = 0; i < val.parts.length; ++i)
                                  -        {
                                  -            var part = val.parts[i];
                                  -            if (part instanceof Variable)
                                  -            {
                                  -                var partName = part.name;
                                  -                if (part.format)
                                  -                {
                                  -                    for (var j = 0; j < part.format.length; ++j)
                                  -                        partName = part.format[j] + "(" + partName + ")";
                                  -                }
                                  -
                                  -                if (escapeIt)
                                  -                    vals.push("__escape__(" + partName + ")");
                                  -                else
                                  -                    vals.push(partName);
                                  -            }
                                  -            else
                                  -                vals.push('"'+ part + '"');
                                  -        }
                                  -    }
                                  -    else if (isTag(val))
                                  -    {
                                  -        info.args.push(val);
                                  -        vals.push('s'+info.argIndex++);
                                  -    }
                                  -    else
                                  -        vals.push('"'+ val + '"');
                                  -
                                  -    var parts = vals.join(delim);
                                  -    if (parts)
                                  -        block.push(delim, parts);
                                  -}
                                  -
                                  -function isTag(obj)
                                  -{
                                  -    return (typeof(obj) == "function" || obj instanceof Function) && !!obj.tag;
                                  -}
                                  -
                                  -function creator(tag, cons)
                                  -{
                                  -    var fn = new Function(
                                  -        "var tag = arguments.callee.tag;" +
                                  -        "var cons = arguments.callee.cons;" +
                                  -        "var newTag = new cons();" +
                                  -        "return newTag.merge(arguments, tag);");
                                  -
                                  -    fn.tag = tag;
                                  -    fn.cons = cons;
                                  -    extend(fn, Renderer);
                                  -
                                  -    return fn;
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function copyArray(oldArray)
                                  -{
                                  -    var ary = [];
                                  -    if (oldArray)
                                  -        for (var i = 0; i < oldArray.length; ++i)
                                  -            ary.push(oldArray[i]);
                                  -   return ary;
                                  -}
                                  -
                                  -function copyObject(l, r)
                                  -{
                                  -    var m = {};
                                  -    extend(m, l);
                                  -    extend(m, r);
                                  -    return m;
                                  -}
                                  -
                                  -function extend(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function ArrayIterator(array)
                                  -{
                                  -    var index = -1;
                                  -
                                  -    this.next = function()
                                  -    {
                                  -        if (++index >= array.length)
                                  -            throw StopIteration;
                                  -
                                  -        return array[index];
                                  -    };
                                  -}
                                  -
                                  -function StopIteration() {}
                                  -
                                  -FBL.$break = function()
                                  -{
                                  -    throw StopIteration;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var Renderer =
                                  -{
                                  -    renderHTML: function(args, outputs, self)
                                  -    {
                                  -        var code = [];
                                  -        var markupArgs = [code, this.tag.context, args, outputs];
                                  -        markupArgs.push.apply(markupArgs, this.tag.markupArgs);
                                  -        this.tag.renderMarkup.apply(self ? self : this.tag.subject, markupArgs);
                                  -        return code.join("");
                                  -    },
                                  -
                                  -    insertRows: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var table = doc.createElement("table");
                                  -        table.innerHTML = html;
                                  -
                                  -        var tbody = table.firstChild;
                                  -        var parent = before.localName == "TR" ? before.parentNode : before;
                                  -        var after = before.localName == "TR" ? before.nextSibling : null;
                                  -
                                  -        var firstRow = tbody.firstChild, lastRow;
                                  -        while (tbody.firstChild)
                                  -        {
                                  -            lastRow = tbody.firstChild;
                                  -            if (after)
                                  -                parent.insertBefore(lastRow, after);
                                  -            else
                                  -                parent.appendChild(lastRow);
                                  -        }
                                  -
                                  -        var offset = 0;
                                  -        if (before.localName == "TR")
                                  -        {
                                  -            var node = firstRow.parentNode.firstChild;
                                  -            for (; node && node != firstRow; node = node.nextSibling)
                                  -                ++offset;
                                  -        }
                                  -
                                  -        var domArgs = [firstRow, this.tag.context, offset];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -        return [firstRow, lastRow];
                                  -    },
                                  -
                                  -    insertAfter: function(args, before, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var doc = before.ownerDocument;
                                  -        var range = doc.createRange();
                                  -        range.selectNode(doc.body);
                                  -        var frag = range.createContextualFragment(html);
                                  -
                                  -        var root = frag.firstChild;
                                  -        if (before.nextSibling)
                                  -            before.parentNode.insertBefore(frag, before.nextSibling);
                                  -        else
                                  -            before.parentNode.appendChild(frag);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -
                                  -        this.tag.renderDOM.apply(self ? self : (this.tag.subject ? this.tag.subject : null),
                                  -            domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    replace: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -
                                  -        var root;
                                  -        if (parent.nodeType == 1)
                                  -        {
                                  -            parent.innerHTML = html;
                                  -            root = parent.firstChild;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (!parent || parent.nodeType != 9)
                                  -                parent = document;
                                  -
                                  -            if (!womb || womb.ownerDocument != parent)
                                  -                womb = parent.createElement("div");
                                  -            womb.innerHTML = html;
                                  -
                                  -            root = womb.firstChild;
                                  -            //womb.removeChild(root);
                                  -        }
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    },
                                  -
                                  -    append: function(args, parent, self)
                                  -    {
                                  -        this.tag.compile();
                                  -
                                  -        var outputs = [];
                                  -        var html = this.renderHTML(args, outputs, self);
                                  -        //if (FBTrace.DBG_DOM) FBTrace.sysout("domplate.append html: "+html+"\n");
                                  -        
                                  -        if (!womb || womb.ownerDocument != parent.ownerDocument)
                                  -            womb = parent.ownerDocument.createElement("div");
                                  -        womb.innerHTML = html;
                                  -
                                  -        root = womb.firstChild;
                                  -        while (womb.firstChild)
                                  -            parent.appendChild(womb.firstChild);
                                  -
                                  -        var domArgs = [root, this.tag.context, 0];
                                  -        domArgs.push.apply(domArgs, this.tag.domArgs);
                                  -        domArgs.push.apply(domArgs, outputs);
                                  -        
                                  -        //if (FBTrace.DBG_DOM) FBTrace.dumpProperties("domplate append domArgs:", domArgs);
                                  -        this.tag.renderDOM.apply(self ? self : this.tag.subject, domArgs);
                                  -
                                  -        return root;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function defineTags()
                                  -{
                                  -    for (var i = 0; i < arguments.length; ++i)
                                  -    {
                                  -        var tagName = arguments[i];
                                  -        var fn = new Function("var newTag = new DomplateTag('"+tagName+"'); return newTag.merge(arguments);");
                                  -
                                  -        var fnName = tagName.toUpperCase();
                                  -        FBL[fnName] = fn;
                                  -    }
                                  -}
                                  -
                                  -defineTags(
                                  -    "a", "button", "br", "canvas", "col", "colgroup", "div", "fieldset", "form", "h1", "h2", "h3", "hr",
                                  -     "img", "input", "label", "legend", "li", "ol", "optgroup", "option", "p", "pre", "select",
                                  -    "span", "strong", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "tr", "tt", "ul", "iframe"
                                  -);
                                  -
                                  -})();
                                  diff --git a/tags/firebug1.3a5/content/firebug/firebug.js b/tags/firebug1.3a5/content/firebug/firebug.js
                                  deleted file mode 100644
                                  index 4871fa48..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/firebug.js
                                  +++ /dev/null
                                  @@ -1,916 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -FBL.cacheID = "firebug" + new Date().getTime();
                                  -FBL.documentCache = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internals
                                  -
                                  -var modules = [];
                                  -var panelTypes = [];
                                  -var panelTypeMap = {};
                                  -var reps = [];
                                  -
                                  -var parentPanelMap = {};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Firebug
                                  -
                                  -window.Firebug = FBL.Firebug =  
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    version: "Firebug Lite 1.3.0a5",
                                  -    revision: "$Revision$",
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    modules: modules,
                                  -    panelTypes: panelTypes,
                                  -    panelTypeMap: panelTypeMap,
                                  -    reps: reps,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Initialization
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.initialize", "initializing application");
                                  -        
                                  -        Firebug.browser = new Context(Env.browser);
                                  -        Firebug.context = Firebug.browser;
                                  -        
                                  -        // Document must be cached before chrome initialization
                                  -        cacheDocument();
                                  -        
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.create();
                                  -        
                                  -        FirebugChrome.initialize();
                                  -        
                                  -        dispatch(modules, "initialize", []);
                                  -        
                                  -        if (Env.onLoad)
                                  -        {
                                  -            var onLoad = Env.onLoad;
                                  -            delete Env.onLoad;
                                  -            
                                  -            setTimeout(onLoad, 200);
                                  -        }
                                  -    },
                                  -  
                                  -    shutdown: function()
                                  -    {
                                  -        if (Firebug.Inspector)
                                  -            Firebug.Inspector.destroy();
                                  -        
                                  -        dispatch(modules, "shutdown", []);
                                  -        
                                  -        var chromeMap = FirebugChrome.chromeMap;
                                  -        
                                  -        for (var name in chromeMap)
                                  -        {
                                  -            if (chromeMap.hasOwnProperty(name))
                                  -            {
                                  -                chromeMap[name].destroy();
                                  -            }
                                  -        }
                                  -        
                                  -        for(var name in documentCache)
                                  -        {
                                  -            documentCache[name].removeAttribute(cacheID);
                                  -            documentCache[name] = null;
                                  -            delete documentCache[name];
                                  -        }
                                  -        
                                  -        documentCache = null;
                                  -        delete FBL.documentCache;
                                  -        
                                  -        Firebug.browser = null;
                                  -        Firebug.context = null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Registration
                                  -
                                  -    registerModule: function()
                                  -    {
                                  -        modules.push.apply(modules, arguments);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.registerModule");
                                  -    },
                                  -
                                  -    registerPanel: function()
                                  -    {
                                  -        panelTypes.push.apply(panelTypes, arguments);
                                  -
                                  -        for (var i = 0, panelType; panelType = arguments[i]; ++i)
                                  -        {
                                  -            panelTypeMap[panelType.prototype.name] = arguments[i];
                                  -            
                                  -            if (panelType.prototype.parentPanel)
                                  -                parentPanelMap[panelType.prototype.parentPanel] = 1;
                                  -        }
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            for (var i = 0; i < arguments.length; ++i)
                                  -                FBTrace.sysout("Firebug.registerPanel", arguments[i].prototype.name);
                                  -    },
                                  -    
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    unregisterRep: function()
                                  -    {
                                  -        for (var i = 0; i < arguments.length; ++i)
                                  -            remove(reps, arguments[i]);
                                  -    },
                                  -
                                  -    setDefaultReps: function(funcRep, rep)
                                  -    {
                                  -        FBL.defaultRep = rep;
                                  -        FBL.defaultFuncRep = funcRep;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof object;
                                  -        if (isIE && isFunction(object))
                                  -            type = "function";
                                  -        
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                {
                                  -                    if (FBTrace.DBG_DOM)
                                  -                        FBTrace.sysout("getRep type: "+type+" object: "+object, rep);
                                  -                    return rep;
                                  -                }
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                {
                                  -                    FBTrace.sysout("firebug.getRep FAILS: ", exc.message || exc);
                                  -                    FBTrace.sysout("firebug.getRep reps["+i+"/"+reps.length+"]: Rep="+reps[i].className);
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return (type == 'function') ? defaultFuncRep : defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Preferences
                                  -    
                                  -    getPref: function(name)
                                  -    {
                                  -        return Firebug[name];
                                  -    },
                                  -    
                                  -    setPref: function(name, value)
                                  -    {
                                  -        Firebug[name] = value;
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    setPrefs: function(prefs)
                                  -    {
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -        
                                  -        this.savePrefs();
                                  -    },
                                  -    
                                  -    restorePrefs: function()
                                  -    {
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            Firebug[name] = Options[name];
                                  -        }
                                  -    },
                                  -    
                                  -    loadPrefs: function(prefs)
                                  -    {
                                  -        this.restorePrefs();
                                  -        
                                  -        prefs = prefs || eval("(" + readCookie("FirebugLite") + ")");
                                  -        
                                  -        for (var name in prefs)
                                  -        {
                                  -            if (prefs.hasOwnProperty(name))
                                  -                Firebug[name] = prefs[name];
                                  -        }
                                  -    },
                                  -    
                                  -    savePrefs: function()
                                  -    {
                                  -        var json = ['{'], jl = 0;
                                  -        var Options = Env.Options;
                                  -        
                                  -        for (var name in Options)
                                  -        {
                                  -            if (Options.hasOwnProperty(name))
                                  -            {
                                  -                var value = Firebug[name];
                                  -                
                                  -                json[++jl] = '"'; 
                                  -                json[++jl] = name;
                                  -                
                                  -                var type = typeof value;
                                  -                if (type == "boolean" || type == "number")
                                  -                {
                                  -                    json[++jl] = '":';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = ',';
                                  -                }
                                  -                else
                                  -                {
                                  -                    json[++jl] = '":"';
                                  -                    json[++jl] = value 
                                  -                    json[++jl] = '",';
                                  -                }
                                  -            }
                                  -        }
                                  -        
                                  -        json.length = jl--;
                                  -        json[++jl] = '}';
                                  -        
                                  -        createCookie("FirebugLite", json.join(""));
                                  -    },
                                  -    
                                  -    erasePrefs: function()
                                  -    {
                                  -        removeCookie("FirebugLite");
                                  -    }
                                  -};
                                  -
                                  -Firebug.restorePrefs();
                                  -
                                  -if (!Env.Options.enablePersistent || 
                                  -     Env.Options.enablePersistent && Env.isChromeContext || 
                                  -     Env.isDevelopmentMode )
                                  -        Env.browser.window.Firebug = FBL.Firebug; 
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Other methods
                                  -
                                  -FBL.cacheDocument = function cacheDocument()
                                  -{
                                  -    var els = Firebug.browser.document.getElementsByTagName("*");
                                  -    for (var i=0, l=els.length, el; i<l; i++)
                                  -    {
                                  -        el = els[i];
                                  -        el[cacheID] = i;
                                  -        documentCache[i] = el;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Module
                                  -
                                  -Firebug.Module =
                                  -{
                                  -    /**
                                  -     * Called when the window is opened.
                                  -     */
                                  -    initialize: function()
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when the window is closed.
                                  -     */
                                  -    shutdown: function()
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    /**
                                  -     * Called when a new context is created but before the page is loaded.
                                  -     */
                                  -    initContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context is detached to a separate window;
                                  -     */
                                  -    reattachContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called when a context is destroyed. Module may store info on persistedState for reloaded pages.
                                  -     */
                                  -    destroyContext: function(context, persistedState)
                                  -    {
                                  -    },
                                  -  
                                  -    // Called when a FF tab is create or activated (user changes FF tab)
                                  -    // Called after context is created or with context == null (to abort?)
                                  -    showContext: function(browser, context)
                                  -    {
                                  -    },
                                  -  
                                  -    /**
                                  -     * Called after a context's page gets DOMContentLoaded
                                  -     */
                                  -    loadedContext: function(context)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    showSidePanel: function(browser, panel)
                                  -    {
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -  
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -  
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Panel
                                  -
                                  -Firebug.Panel =
                                  -{
                                  -    name: "HelloWorld",
                                  -    title: "Hello World!",
                                  -    
                                  -    parentPanel: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    options: {
                                  -        hasCommandLine: false,
                                  -        hasStatusBar: false,
                                  -        hasToolButtons: false,
                                  -        
                                  -        // Pre-rendered panels are those included in the skin file (firebug.html)
                                  -        isPreRendered: false,
                                  -        innerHTMLSync: false
                                  -        
                                  -        /*
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // To be used by external extensions
                                  -        panelHTML: "",
                                  -        panelCSS: "",
                                  -        
                                  -        toolButtonsHTML: ""
                                  -        /**/
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    tabNode: null,
                                  -    panelNode: null,
                                  -    sidePanelNode: null,
                                  -    statusBarNode: null,
                                  -    toolButtonsNode: null,
                                  -
                                  -    panelBarNode: null,
                                  -    
                                  -    sidePanelBarBoxNode: null,
                                  -    sidePanelBarNode: null,            
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    sidePanelBar: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    searchable: false,
                                  -    editable: true,
                                  -    order: 2147483647,
                                  -    statusSeparator: "<",
                                  -    
                                  -    create: function(context, doc)
                                  -    {
                                  -        this.hasSidePanel = parentPanelMap.hasOwnProperty(this.name); 
                                  -        
                                  -        this.panelBarNode = $("fbPanelBar1");
                                  -        this.sidePanelBarBoxNode = $("fbPanelBar2");
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar = extend({}, PanelBar);
                                  -            this.sidePanelBar.create(this);
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        if (options.isPreRendered)
                                  -        {
                                  -            this.panelNode = $(panelId);
                                  -            
                                  -            this.tabNode = $(panelId + "Tab");
                                  -            this.tabNode.style.display = "block";
                                  -            
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = $(panelId + "Buttons");
                                  -            }
                                  -            
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                this.statusBarNode = $(panelId + "StatusBar");
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var containerSufix = this.parentPanel ? "2" : "1";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel
                                  -            var panelNode = this.panelNode = createElement("div", {
                                  -                id: panelId,
                                  -                className: "fbPanel"
                                  -            });
                                  -
                                  -            $("fbPanel" + containerSufix).appendChild(panelNode);
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // Create Panel Tab
                                  -            var tabHTML = '<span class="fbTabL"></span><span class="fbTabText">' +
                                  -                    this.title + '</span><span class="fbTabR"></span>';            
                                  -            
                                  -            var tabNode = this.tabNode = createElement("a", {
                                  -                id: panelId + "Tab",
                                  -                className: "fbTab fbHover",
                                  -                innerHTML: tabHTML
                                  -            });
                                  -            
                                  -            if (isIE6)
                                  -            {
                                  -                tabNode.href = "javascript:void(0)";
                                  -            }
                                  -            
                                  -            var panelBarNode = this.parentPanel ? 
                                  -                    Firebug.chrome.getPanel(this.parentPanel).sidePanelBarNode :
                                  -                    this.panelBarNode;
                                  -            
                                  -            panelBarNode.appendChild(tabNode);
                                  -            tabNode.style.display = "block";
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create ToolButtons
                                  -            if (options.hasToolButtons)
                                  -            {
                                  -                this.toolButtonsNode = createElement("span", {
                                  -                    id: panelId + "Buttons",
                                  -                    className: "fbToolbarButtons"
                                  -                });
                                  -                
                                  -                $("fbToolbarButtons").appendChild(this.toolButtonsNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create StatusBar
                                  -            if (options.hasStatusBar)
                                  -            {
                                  -                this.statusBarBox = $("fbStatusBarBox");
                                  -                
                                  -                this.statusBarNode = createElement("span", {
                                  -                    id: panelId + "StatusBar",
                                  -                    className: "fbToolbarButtons fbStatusBar"
                                  -                });
                                  -                
                                  -                this.statusBarBox.appendChild(this.statusBarNode);
                                  -            }
                                  -            
                                  -            // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -            // create SidePanel
                                  -        }
                                  -        
                                  -        var contentNode = this.contentNode = createElement("div");
                                  -        this.panelNode.appendChild(contentNode);
                                  -        
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.create", this.name);
                                  -        
                                  -        /*
                                  -        this.context = context;
                                  -        this.document = doc;
                                  -
                                  -        this.panelNode = doc.createElement("div");
                                  -        this.panelNode.ownerPanel = this;
                                  -
                                  -        setClass(this.panelNode, "panelNode panelNode-"+this.name+" contextUID="+context.uid);
                                  -        doc.body.appendChild(this.panelNode);
                                  -
                                  -        if (FBTrace.DBG_INITIALIZE)
                                  -            FBTrace.sysout("firebug.initialize panelNode for "+this.name+"\n");
                                  -
                                  -        this.initializeNode(this.panelNode);
                                  -        /**/
                                  -    },
                                  -
                                  -    destroy: function(state) // Panel may store info on state
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.destroy", this.name);
                                  -        
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.destroy();
                                  -            this.sidePanelBar = null;
                                  -        }
                                  -        
                                  -        this.options = null;
                                  -        this.name = null;
                                  -        this.parentPanel = null;
                                  -        
                                  -        this.tabNode = null;
                                  -        this.panelNode = null;
                                  -        this.contentNode = null;
                                  -        this.containerNode = null;
                                  -        
                                  -        //if (this.panelNode)
                                  -        //    delete this.panelNode.ownerPanel;
                                  -
                                  -        //this.destroyNode();
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.initialize", this.name);
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            this.sidePanelBar.initialize();
                                  -        }
                                  -        
                                  -        var options = this.options = extend(Firebug.Panel.options, this.options);
                                  -        var panelId = "fb" + this.name;
                                  -        
                                  -        this.panelNode = $(panelId);
                                  -        
                                  -        this.tabNode = $(panelId + "Tab");
                                  -        this.tabNode.style.display = "block";
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox = $("fbStatusBarBox");
                                  -            this.statusBarNode = $(panelId + "StatusBar");
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode = $(panelId + "Buttons");
                                  -        }
                                  -            
                                  -        this.containerNode = this.panelNode.parentNode;
                                  -        
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        // store persistent state
                                  -        this.containerNode.scrollTop = this.lastScrollTop;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("Firebug.Panel.shutdown", this.name);
                                  -        
                                  -        if (Firebug.chrome.largeCommandLineVisible)
                                  -            Firebug.chrome.hideLargeCommandLine();
                                  -            
                                  -        // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -        if (this.hasSidePanel)
                                  -        {
                                  -            // TODO: xxxpedro firebug1.3a6 
                                  -            // new PanelBar mechanism will need to call shutdown to hide the panels (so it 
                                  -            // doesn't appears in other panel's sidePanelBar. Therefore, we need to implement 
                                  -            // a "remember selected panel" feature in the sidePanelBar
                                  -            //this.sidePanelBar.shutdown();
                                  -        }
                                  -        
                                  -        // store persistent state
                                  -        this.lastScrollTop = this.containerNode.scrollTop;
                                  -        
                                  -        this.toolButtonsNode = null;
                                  -        this.statusBarBox = null;
                                  -        this.statusBarNode = null;
                                  -    },
                                  -
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        if (oldChrome.selectedPanel.name == this.name)
                                  -            this.lastScrollTop = oldChrome.selectedPanel.containerNode.scrollTop;
                                  -    },
                                  -
                                  -    reattach: function(doc)
                                  -    {
                                  -        if (this.options.innerHTMLSync)
                                  -            this.synchronizeUI();
                                  -    },
                                  -    
                                  -    synchronizeUI: function()
                                  -    {
                                  -        this.containerNode.scrollTop = this.lastScrollTop || 0;
                                  -    },
                                  -
                                  -    show: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "inline";
                                  -            this.statusBarNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "inline";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "block";
                                  -        
                                  -        if (!this.parentPanel)
                                  -            Firebug.chrome.layout(this);
                                  -    },
                                  -
                                  -    hide: function(state)
                                  -    {
                                  -        var options = this.options;
                                  -        
                                  -        if (options.hasStatusBar)
                                  -        {
                                  -            this.statusBarBox.style.display = "none";
                                  -            this.statusBarNode.style.display = "none";
                                  -        }
                                  -        
                                  -        if (options.hasToolButtons)
                                  -        {
                                  -            this.toolButtonsNode.style.display = "none";
                                  -        }
                                  -        
                                  -        this.panelNode.style.display = "none";
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Toolbar helpers
                                  -     */
                                  -    showToolbarButtons: function(buttonsId, show)
                                  -    {
                                  -        try
                                  -        {
                                  -            if (!this.context.browser) // XXXjjb this is bug. Somehow the panel context is not FirebugContext.
                                  -            {
                                  -              if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("firebug.Panel showToolbarButtons this.context has no browser, this:", this)
                                  -                return;
                                  -            }
                                  -            var buttons = this.context.browser.chrome.$(buttonsId);
                                  -            if (buttons)
                                  -                collapse(buttons, show ? "false" : "true");
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.dumpProperties("firebug.Panel showToolbarButtons FAILS", exc);
                                  -                if (!this.context.browser)FBTrace.dumpStack("firebug.Panel showToolbarButtons no browser");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    /**
                                  -     * Returns a number indicating the view's ability to inspect the object.
                                  -     *
                                  -     * Zero means not supported, and higher numbers indicate specificity.
                                  -     */
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return 0;
                                  -    },
                                  -
                                  -    hasObject: function(object)  // beyond type testing, is this object selectable?
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    select: function(object, forceUpdate)
                                  -    {
                                  -        if (!object)
                                  -            object = this.getDefaultSelection(this.context);
                                  -
                                  -        if(FBTrace.DBG_PANELS)
                                  -            FBTrace.sysout("firebug.select "+this.name+" forceUpdate: "+forceUpdate+" "+object+((object==this.selection)?"==":"!=")+this.selection);
                                  -
                                  -        if (forceUpdate || object != this.selection)
                                  -        {
                                  -            this.selection = object;
                                  -            this.updateSelection(object);
                                  -
                                  -            // TODO: xxxpedro
                                  -            // XXXjoe This is kind of cheating, but, feh.
                                  -            //Firebug.chrome.onPanelSelect(object, this);
                                  -            //if (uiListeners.length > 0)
                                  -            //    dispatch(uiListeners, "onPanelSelect", [object, this]);  // TODO: make Firebug.chrome a uiListener
                                  -        }
                                  -    },
                                  -
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    startInspecting: function()
                                  -    {
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getDefaultSelection: function(context)
                                  -    {
                                  -        return null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    search: function(text)
                                  -    {
                                  -    }
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -if (FBL.domplate) Firebug.Rep = domplate(
                                  -{
                                  -    className: "",
                                  -    inspectable: true,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return false;
                                  -    },
                                  -
                                  -    inspectObject: function(object, context)
                                  -    {
                                  -        Firebug.chrome.select(object);
                                  -    },
                                  -
                                  -    browseObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    persistObject: function(object, context)
                                  -    {
                                  -    },
                                  -
                                  -    getRealObject: function(object, context)
                                  -    {
                                  -        return object;
                                  -    },
                                  -
                                  -    getTitle: function(object)
                                  -    {
                                  -        var label = safeToString(object);
                                  -
                                  -        var re = /\[object (.*?)\]/;
                                  -        var m = re.exec(label);
                                  -        return m ? m[1] : label;
                                  -    },
                                  -
                                  -    getTooltip: function(object)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(object, target, context)
                                  -    {
                                  -        return [];
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Convenience for domplates
                                  -
                                  -    STR: function(name)
                                  -    {
                                  -        return $STR(name);
                                  -    },
                                  -
                                  -    cropString: function(text)
                                  -    {
                                  -        return cropString(text);
                                  -    },
                                  -
                                  -    cropMultipleLines: function(text, limit)
                                  -    {
                                  -        return cropMultipleLines(text, limit);
                                  -    },
                                  -
                                  -    toLowerCase: function(text)
                                  -    {
                                  -        return text ? text.toLowerCase() : text;
                                  -    },
                                  -
                                  -    plural: function(n)
                                  -    {
                                  -        return n == 1 ? "" : "s";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/gui.js b/tags/firebug1.3a5/content/firebug/gui.js
                                  deleted file mode 100644
                                  index 7cfa7b2b..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/gui.js
                                  +++ /dev/null
                                  @@ -1,942 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Controller
                                  -
                                  -FBL.Controller = {
                                  -        
                                  -    controllers: null,
                                  -    controllerContext: null,
                                  -    
                                  -    initialize: function(context)
                                  -    {
                                  -        this.controllers = [];
                                  -        this.controllerContext = context || Firebug.chrome;
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        this.removeControllers();
                                  -        
                                  -        //this.controllers = null;
                                  -        //this.controllerContext = null;
                                  -    },
                                  -    
                                  -    addController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            // If the first argument is a string, make a selector query 
                                  -            // within the controller node context
                                  -            if (typeof arg[0] == "string")
                                  -            {
                                  -                arg[0] = $$(arg[0], this.controllerContext);
                                  -            }
                                  -            
                                  -            // bind the handler to the proper context
                                  -            var handler = arg[2];
                                  -            arg[2] = bind(handler, this);
                                  -            // save the original handler as an extra-argument, so we can
                                  -            // look for it later, when removing a particular controller            
                                  -            arg[3] = handler;
                                  -            
                                  -            this.controllers.push(arg);
                                  -            addEvent.apply(this, arg);
                                  -        }
                                  -    },
                                  -    
                                  -    removeController: function()
                                  -    {
                                  -        for (var i=0, arg; arg=arguments[i]; i++)
                                  -        {
                                  -            for (var j=0, c; c=this.controllers[j]; j++)
                                  -            {
                                  -                if (arg[0] == c[0] && arg[1] == c[1] && arg[2] == c[3])
                                  -                    removeEvent.apply(this, c);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    removeControllers: function()
                                  -    {
                                  -        for (var i=0, c; c=this.controllers[i]; i++)
                                  -        {
                                  -            removeEvent.apply(this, c);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// PanelBar
                                  -
                                  -FBL.PanelBar = 
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    panelMap: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    selectedPanel: null,
                                  -    parentPanelName: null,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    
                                  -    create: function(ownerPanel)
                                  -    {
                                  -        this.panelMap = {};
                                  -        this.ownerPanel = ownerPanel;
                                  -        
                                  -        if (ownerPanel)
                                  -        {
                                  -            ownerPanel.sidePanelBarNode = createElement("span");
                                  -            ownerPanel.sidePanelBarNode.style.display = "none";
                                  -            ownerPanel.sidePanelBarBoxNode.appendChild(ownerPanel.sidePanelBarNode);
                                  -        }
                                  -        
                                  -        var panels = Firebug.panelTypes;
                                  -        for (var i=0, p; p=panels[i]; i++)
                                  -        {
                                  -            if ( // normal Panel  of the Chrome's PanelBar
                                  -                !ownerPanel && !p.prototype.parentPanel ||
                                  -                // Child Panel of the current Panel's SidePanelBar
                                  -                ownerPanel && p.prototype.parentPanel && 
                                  -                ownerPanel.name == p.prototype.parentPanel)
                                  -            {
                                  -                this.addPanel(p.prototype.name);
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        PanelBar.shutdown.call(this);
                                  -        
                                  -        for (var name in this.panelMap)
                                  -        {
                                  -            this.removePanel(name);
                                  -            
                                  -            var panel = this.panelMap[name];
                                  -            panel.destroy();
                                  -            
                                  -            this.panelMap[name] = null;
                                  -            delete this.panelMap[name];
                                  -        }
                                  -        
                                  -        this.panelMap = null;
                                  -        this.ownerPanel = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "inline";
                                  -        
                                  -        for(var name in this.panelMap)
                                  -        {
                                  -            (function(self, name){
                                  -                
                                  -                // tab click handler
                                  -                var onTabClick = function onTabClick()
                                  -                { 
                                  -                    self.selectPanel(name);
                                  -                    return false;
                                  -                };
                                  -                
                                  -                Firebug.chrome.addController([self.panelMap[name].tabNode, "mousedown", onTabClick]);
                                  -                
                                  -            })(this, name);
                                  -        }
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        
                                  -        if (selectedPanel)
                                  -        {
                                  -            removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -            selectedPanel.hide();
                                  -            selectedPanel.shutdown();
                                  -        }
                                  -        
                                  -        if (this.ownerPanel)
                                  -            this.ownerPanel.sidePanelBarNode.style.display = "none";        
                                  -        
                                  -        this.selectedPanel = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    addPanel: function(panelName, parentPanel)
                                  -    {
                                  -        var PanelType = Firebug.panelTypeMap[panelName];
                                  -        var panel = this.panelMap[panelName] = new PanelType();
                                  -        
                                  -        panel.create();
                                  -    },
                                  -    
                                  -    removePanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        if (panel.hasOwnProperty(panelName))
                                  -            panel.destroy();
                                  -    },
                                  -    
                                  -    selectPanel: function(panelName)
                                  -    {
                                  -        var selectedPanel = this.selectedPanel;
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        if (panel && selectedPanel != panel)
                                  -        {
                                  -            if (selectedPanel)
                                  -            {
                                  -                removeClass(selectedPanel.tabNode, "fbSelectedTab");
                                  -                selectedPanel.hide();
                                  -                selectedPanel.shutdown();
                                  -            }
                                  -            
                                  -            if (!panel.parentPanel)
                                  -                FirebugChrome.selectedPanelName = panelName;
                                  -            
                                  -            this.selectedPanel = panel;
                                  -            
                                  -            setClass(panel.tabNode, "fbSelectedTab");
                                  -            panel.initialize();
                                  -            panel.show();
                                  -        }
                                  -    },
                                  -    
                                  -    getPanel: function(panelName)
                                  -    {
                                  -        var panel = this.panelMap[panelName];
                                  -        
                                  -        return panel;
                                  -    }
                                  -   
                                  -};
                                  -
                                  -//************************************************************************************************
                                  -// Button
                                  -
                                  -/**
                                  - *
                                  - * options.element
                                  - * options.caption
                                  - * options.title
                                  - * 
                                  - * options.owner
                                  - * options.className
                                  - * options.pressedClassName
                                  - * 
                                  - * options.onPress
                                  - * options.onUnpress
                                  - * options.onClick
                                  - * 
                                  - */
                                  -
                                  -FBL.Button = function(options)
                                  -{
                                  -    options = options || {};
                                  -    
                                  -    append(this, options);
                                  -    
                                  -    this.state = "unpressed";
                                  -    this.display = "unpressed";
                                  -    
                                  -    if (this.element)
                                  -    {
                                  -        this.container = this.element.parentNode;
                                  -    }
                                  -    else
                                  -    {
                                  -        this.shouldDestroy = true;
                                  -        
                                  -        this.container = this.owner.getPanel().toolButtonsNode;
                                  -        
                                  -        this.element = createElement("a", {
                                  -            className: this.baseClassName + " " + this.className + " fbHover",
                                  -            innerHTML: this.caption
                                  -        });
                                  -        
                                  -        if (this.title)
                                  -            this.element.title = this.title;
                                  -        
                                  -        this.container.appendChild(this.element);
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Button.prototype = extend(Controller,
                                  -{
                                  -    type: "normal",
                                  -    caption: "caption",
                                  -    title: null,
                                  -    
                                  -    className: "", // custom class
                                  -    baseClassName: "fbButton", // control class
                                  -    pressedClassName: "fbBtnPressed", // control pressed class
                                  -    
                                  -    element: null,
                                  -    container: null,
                                  -    owner: null,
                                  -    
                                  -    state: null,
                                  -    display: null,
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        this.shutdown();
                                  -        
                                  -        // only remove if it is a dynamically generated button (not pre-rendered)
                                  -        if (this.shouldDestroy)
                                  -            this.container.removeChild(this.element);
                                  -        
                                  -        this.element = null;
                                  -        this.container = null;
                                  -        this.owner = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.apply(this);
                                  -        
                                  -        var element = this.element;
                                  -        
                                  -        this.addController([element, "mousedown", this.handlePress]);
                                  -        
                                  -        if (this.type == "normal")
                                  -            this.addController(
                                  -                [element, "mouseup", this.handleUnpress],
                                  -                [element, "mouseout", this.handleUnpress],
                                  -                [element, "click", this.handleClick]
                                  -            );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.apply(this);
                                  -    },
                                  -    
                                  -    restore: function()
                                  -    {
                                  -        this.changeState("unpressed");
                                  -    },
                                  -    
                                  -    changeState: function(state)
                                  -    {
                                  -        this.state = state;
                                  -        this.changeDisplay(state);
                                  -    },
                                  -    
                                  -    changeDisplay: function(display)
                                  -    {
                                  -        if (display != this.display)
                                  -        {
                                  -            if (display == "pressed")
                                  -            {
                                  -                setClass(this.element, this.pressedClassName);
                                  -            }
                                  -            else if (display == "unpressed")
                                  -            {
                                  -                removeClass(this.element, this.pressedClassName);
                                  -            }
                                  -            this.display = display;
                                  -        }
                                  -    },
                                  -    
                                  -    handlePress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            this.changeDisplay("pressed");
                                  -            this.beforeClick = true;
                                  -        }
                                  -        else if (this.type == "toggle")
                                  -        {
                                  -            if (this.state == "pressed")
                                  -            {
                                  -                this.changeState("unpressed");
                                  -                
                                  -                if (this.onUnpress)
                                  -                    this.onUnpress.apply(this.owner, arguments);
                                  -            }
                                  -            else
                                  -            {
                                  -                this.changeState("pressed");
                                  -                
                                  -                if (this.onPress)
                                  -                    this.onPress.apply(this.owner, arguments);
                                  -            }
                                  -            
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner, arguments);
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleUnpress: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.beforeClick)
                                  -            this.changeDisplay("unpressed");
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleClick: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        if (this.type == "normal")
                                  -        {
                                  -            if (this.onClick)
                                  -                this.onClick.apply(this.owner);
                                  -            
                                  -            this.changeState("unpressed");
                                  -        }
                                  -        
                                  -        this.beforeClick = false;
                                  -        
                                  -        return false;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -FBL.IconButton = function()
                                  -{
                                  -    Button.apply(this, arguments);
                                  -};
                                  -
                                  -IconButton.prototype = extend(Button.prototype, 
                                  -{
                                  -    baseClassName: "fbIconButton",
                                  -    pressedClassName: "fbIconPressed"
                                  -});
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Menu
                                  -
                                  -var menuItemProps = {"class": "$item.className", type: "$item.type", value: "$item.value",
                                  -        command: "$item.command"};
                                  -
                                  -if (isIE6)
                                  -    menuItemProps.href = "javascript:void(0)";
                                  -
                                  -// Allow GUI to be loaded even when Domplate module is not installed.
                                  -if (FBL.domplate)
                                  -var MenuPlate = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "fbMenu fbShadow"},
                                  -            DIV({"class": "fbMenuContent fbShadowContent"},
                                  -                FOR("item", "$object.items|memberIterator",
                                  -                    TAG("$item.tag", {item: "$item"})
                                  -                )
                                  -            )
                                  -        ),
                                  -        
                                  -    itemTag:
                                  -        A(menuItemProps,
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    checkBoxTag:
                                  -        A(extend(menuItemProps, {checked : "$item.checked"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    radioButtonTag:
                                  -        A(extend(menuItemProps, {selected : "$item.selected"}),
                                  -           
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    groupTag:
                                  -        A(extend(menuItemProps, {child: "$item.child"}),
                                  -            "$item.label"
                                  -        ),
                                  -        
                                  -    shortcutTag:
                                  -        A(menuItemProps,
                                  -            "$item.label",
                                  -            SPAN({"class": "fbMenuShortcutKey"},
                                  -                "$item.key"
                                  -            )
                                  -        ),
                                  -        
                                  -    separatorTag:
                                  -        SPAN({"class": "fbMenuSeparator"}),
                                  -        
                                  -    memberIterator: function(items)
                                  -    {
                                  -        var result = [];
                                  -        
                                  -        for (var i=0, length=items.length; i<length; i++)
                                  -        {
                                  -            var item = items[i];
                                  -            
                                  -            // separator representation
                                  -            if (typeof item == "string" && item.indexOf("-") == 0)
                                  -            {
                                  -                result.push({tag: this.separatorTag});
                                  -                continue;
                                  -            }
                                  -            
                                  -            item = extend(item, {});
                                  -            
                                  -            item.type = item.type || "";
                                  -            item.value = item.value || "";
                                  -            
                                  -            var type = item.type;
                                  -            
                                  -            // default item representation
                                  -            item.tag = this.itemTag;
                                  -            
                                  -            var className = item.className || ""; 
                                  -            
                                  -            className += "fbMenuOption fbHover ";
                                  -            
                                  -            // specific representations
                                  -            if (type == "checkbox")
                                  -            {
                                  -                className += "fbMenuCheckBox ";
                                  -                item.tag = this.checkBoxTag;
                                  -            }
                                  -            else if (type == "radiobutton")
                                  -            {
                                  -                className += "fbMenuRadioButton ";
                                  -                item.tag = this.radioButtonTag;
                                  -            }
                                  -            else if (type == "group")
                                  -            {
                                  -                className += "fbMenuGroup ";
                                  -                item.tag = this.groupTag;
                                  -            }
                                  -            else if (type == "shortcut")
                                  -            {
                                  -                className += "fbMenuShortcut ";
                                  -                item.tag = this.shortcutTag;
                                  -            }
                                  -            
                                  -            if (item.checked)
                                  -                className += "fbMenuChecked ";
                                  -            else if (item.selected)
                                  -                className += "fbMenuRadioSelected ";
                                  -            
                                  -            if (item.disabled)
                                  -                className += "fbMenuDisabled ";
                                  -            
                                  -            item.className = className;
                                  -            
                                  -            result.push(item);
                                  -        }
                                  -        
                                  -        return result;
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -/**
                                  - * options
                                  - * options.element
                                  - * options.id
                                  - * options.items
                                  - * 
                                  - * item.label
                                  - * item.className
                                  - * item.type
                                  - * item.value
                                  - * item.disabled
                                  - * item.checked
                                  - * item.selected
                                  - * item.command
                                  - * item.child
                                  - */
                                  -FBL.Menu = function(options)
                                  -{
                                  -    // if element is not pre-rendered, we must render it now
                                  -    if (!options.element)
                                  -    {
                                  -        if (options.getItems)
                                  -            options.items = options.getItems();
                                  -        
                                  -        options.element = MenuPlate.tag.append(
                                  -                {object: options},
                                  -                getElementByClass(Firebug.chrome.document, "fbBody"),
                                  -                MenuPlate
                                  -            );
                                  -    }
                                  -    
                                  -    // extend itself with the provided options
                                  -    append(this, options);
                                  -    
                                  -    if (typeof this.element == "string")
                                  -    {
                                  -        this.id = this.element;
                                  -        this.element = $(this.id);
                                  -    }
                                  -    else if (this.id)
                                  -    {
                                  -        this.element.id = this.id;
                                  -    }
                                  -    
                                  -    this.element.firebugIgnore = true;
                                  -    this.elementStyle = this.element.style;
                                  -    
                                  -    this.isVisible = false;
                                  -    
                                  -    this.handleMouseDown = bind(this.handleMouseDown, this);
                                  -    this.handleMouseOver = bind(this.handleMouseOver, this);
                                  -    this.handleMouseOut = bind(this.handleMouseOut, this);
                                  -    
                                  -    this.handleWindowMouseDown = bind(this.handleWindowMouseDown, this);
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var menuMap = {};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.prototype =  extend(Controller,
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        //if (this.element) console.log("destroy", this.element.id);
                                  -        
                                  -        this.hide();
                                  -        
                                  -        // if it is a childMenu, remove its reference from the parentMenu
                                  -        if (this.parentMenu)
                                  -            this.parentMenu.childMenu = null;
                                  -        
                                  -        // remove the element from the document
                                  -        this.element.parentNode.removeChild(this.element);
                                  -        
                                  -        // clear references
                                  -        this.element = null;
                                  -        this.elementStyle = null;
                                  -        this.parentMenu = null;
                                  -        this.parentTarget = null;
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Controller.initialize.call(this);
                                  -        
                                  -        this.addController(
                                  -                [this.element, "mousedown", this.handleMouseDown],
                                  -                [this.element, "mouseover", this.handleMouseOver]
                                  -             );
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        Controller.shutdown.call(this);
                                  -    },
                                  -    
                                  -    show: function(x, y)
                                  -    {
                                  -        this.initialize();
                                  -        
                                  -        if (this.isVisible) return;
                                  -        
                                  -        //console.log("show", this.element.id);
                                  -        
                                  -        x = x || 0;
                                  -        y = y || 0;
                                  -        
                                  -        if (this.parentMenu)
                                  -        {
                                  -            var oldChildMenu = this.parentMenu.childMenu;
                                  -            if (oldChildMenu && oldChildMenu != this)
                                  -            {
                                  -                oldChildMenu.destroy();
                                  -            }
                                  -            
                                  -            this.parentMenu.childMenu = this;
                                  -        }
                                  -        else
                                  -            addEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -        
                                  -        this.elementStyle.display = "block";
                                  -        this.elementStyle.visibility = "hidden";
                                  -        
                                  -        var size = Firebug.chrome.getSize();
                                  -        
                                  -        x = Math.min(x, size.width - this.element.clientWidth - 10);
                                  -        x = Math.max(x, 0);
                                  -        
                                  -        y = Math.min(y, size.height - this.element.clientHeight - 10);
                                  -        y = Math.max(y, 0);
                                  -        
                                  -        this.elementStyle.left = x + "px";
                                  -        this.elementStyle.top = y + "px";
                                  -        
                                  -        this.elementStyle.visibility = "visible";
                                  -        
                                  -        this.isVisible = true;
                                  -        
                                  -        if (isFunction(this.onShow))
                                  -            this.onShow.apply(this, arguments);
                                  -    },
                                  -    
                                  -    hide: function()
                                  -    {
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        if (!this.isVisible) return;
                                  -        
                                  -        //console.log("hide", this.element.id);
                                  -        
                                  -        this.elementStyle.display = "none";
                                  -        
                                  -        if(this.childMenu)
                                  -        {
                                  -            this.childMenu.destroy();
                                  -            this.childMenu = null;
                                  -        }
                                  -        
                                  -        if(this.parentTarget)
                                  -            removeClass(this.parentTarget, "fbMenuGroupSelected");
                                  -        
                                  -        this.isVisible = false;
                                  -        
                                  -        this.shutdown();
                                  -        
                                  -        if (isFunction(this.onHide))
                                  -            this.onHide.apply(this, arguments);
                                  -    },
                                  -    
                                  -    showChildMenu: function(target)
                                  -    {
                                  -        var id = target.getAttribute("child");
                                  -        
                                  -        var parent = this;
                                  -        var target = target;
                                  -        
                                  -        this.showChildTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -            
                                  -            //if (!parent.isVisible) return;
                                  -            
                                  -            var box = Firebug.chrome.getElementBox(target);
                                  -            
                                  -            var childMenuObject = menuMap.hasOwnProperty(id) ?
                                  -                    menuMap[id] : {element: $(id)};
                                  -            
                                  -            var childMenu = new Menu(extend(childMenuObject, 
                                  -                {
                                  -                    parentMenu: parent,
                                  -                    parentTarget: target
                                  -                }));
                                  -            
                                  -            var offsetLeft = isIE6 ? -1 : -6; // IE6 problem with fixed position
                                  -            childMenu.show(box.left + box.width + offsetLeft, box.top -6);
                                  -            setClass(target, "fbMenuGroupSelected");
                                  -            
                                  -        },350);
                                  -    },
                                  -    
                                  -    clearHideTimeout: function()
                                  -    {
                                  -        if (this.hideTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.hideTimeout);
                                  -            delete this.hideTimeout;
                                  -        }
                                  -    },
                                  -    
                                  -    clearShowChildTimeout: function()
                                  -    {
                                  -        if(this.showChildTimeout)
                                  -        {
                                  -            Firebug.chrome.window.clearTimeout(this.showChildTimeout);
                                  -            this.showChildTimeout = null;
                                  -        }
                                  -    },
                                  -    
                                  -    handleMouseDown: function(event)
                                  -    {
                                  -        cancelEvent(event, true);
                                  -        
                                  -        var topParent = this;
                                  -        while (topParent.parentMenu)
                                  -            topParent = topParent.parentMenu;
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target || hasClass(target, "fbMenuGroup"))
                                  -            return false;
                                  -        
                                  -        if (target && !hasClass(target, "fbMenuDisabled"))
                                  -        {
                                  -            var type = target.getAttribute("type");
                                  -            
                                  -            if (type == "checkbox")
                                  -            {
                                  -                var checked = target.getAttribute("checked");
                                  -                var value = target.getAttribute("value");
                                  -                var wasChecked = hasClass(target, "fbMenuChecked");
                                  -                
                                  -                if (wasChecked)
                                  -                {
                                  -                    removeClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "");
                                  -                }
                                  -                else
                                  -                {
                                  -                    setClass(target, "fbMenuChecked");
                                  -                    target.setAttribute("checked", "true");
                                  -                }
                                  -                
                                  -                if (isFunction(this.onCheck))
                                  -                    this.onCheck.call(this, target, value, !wasChecked)
                                  -            }            
                                  -            
                                  -            if (type == "radiobutton")
                                  -            {
                                  -                var selectedRadios = getElementsByClass(target.parentNode, "fbMenuRadioSelected");
                                  -                
                                  -                var group = target.getAttribute("group");
                                  -                
                                  -                for (var i = 0, length = selectedRadios.length; i < length; i++)
                                  -                {
                                  -                    radio = selectedRadios[i];
                                  -                    
                                  -                    if (radio.getAttribute("group") == group)
                                  -                    {
                                  -                        removeClass(radio, "fbMenuRadioSelected");
                                  -                        radio.setAttribute("selected", "");
                                  -                    }
                                  -                }
                                  -                
                                  -                setClass(target, "fbMenuRadioSelected");
                                  -                target.setAttribute("selected", "true");
                                  -            }            
                                  -            
                                  -            var cmd = target.getAttribute("command");
                                  -            var handler = this[cmd];
                                  -            var closeMenu = true;
                                  -            
                                  -            if (handler)
                                  -                closeMenu = handler.call(this, target) !== false;
                                  -            
                                  -            if (closeMenu)
                                  -                topParent.hide();
                                  -        }
                                  -        
                                  -        return false;
                                  -    },
                                  -    
                                  -    handleWindowMouseDown: function(event)
                                  -    {
                                  -        //console.log("handleWindowMouseDown");
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenu");
                                  -        
                                  -        if (!target)
                                  -        {
                                  -            removeEvent(Firebug.chrome.document, "mousedown", this.handleWindowMouseDown);
                                  -            this.hide();
                                  -        }
                                  -    },
                                  -
                                  -    handleMouseOver: function(event)
                                  -    {
                                  -        //console.log("handleMouseOver", this.element.id);
                                  -        
                                  -        this.clearHideTimeout();
                                  -        this.clearShowChildTimeout();
                                  -        
                                  -        var target = event.target || event.srcElement;
                                  -        
                                  -        target = getAncestorByClass(target, "fbMenuOption");
                                  -        
                                  -        if(!target)
                                  -            return;
                                  -        
                                  -        var childMenu = this.childMenu;
                                  -        if(childMenu) 
                                  -        {
                                  -            removeClass(childMenu.parentTarget, "fbMenuGroupSelected");
                                  -            
                                  -            if (childMenu.parentTarget != target && childMenu.isVisible)
                                  -            {
                                  -                childMenu.clearHideTimeout(); 
                                  -                childMenu.hideTimeout = Firebug.chrome.window.setTimeout(function(){
                                  -                    childMenu.destroy();
                                  -                },300);
                                  -            }
                                  -        }
                                  -        
                                  -        if(hasClass(target, "fbMenuGroup"))
                                  -        {
                                  -            this.showChildMenu(target);
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -Menu.register = function(object)
                                  -{
                                  -    menuMap[object.id] = object;
                                  -};
                                  -
                                  -Menu.check = function(element)
                                  -{
                                  -    setClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "true");
                                  -};
                                  -
                                  -Menu.uncheck = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuChecked");
                                  -    element.setAttribute("checked", "");
                                  -};
                                  -
                                  -Menu.disable = function(element)
                                  -{
                                  -    setClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -Menu.enable = function(element)
                                  -{
                                  -    removeClass(element, "fbMenuDisabled");
                                  -};
                                  -
                                  -
                                  -//************************************************************************************************
                                  -// Status Bar
                                  -
                                  -function StatusBar(){};
                                  -
                                  -StatusBar.prototype = extend(Controller, {
                                  -    
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/highlighter.css b/tags/firebug1.3a5/content/firebug/highlighter.css
                                  deleted file mode 100644
                                  index 234e1b1b..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/highlighter.css
                                  +++ /dev/null
                                  @@ -1,117 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.firebugHighlight {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: #3875d7;
                                  -}
                                  -
                                  -.firebugLayoutBoxParent {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    background-color: transparent;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.firebugRulerH {
                                  -    position: absolute;
                                  -    top: -15px;
                                  -    left: 0;
                                  -    width: 100%;
                                  -    height: 14px;
                                  -    background: url(chrome://firebug/skin/rulerH.png) repeat-x;
                                  -    border-top: 1px solid #BBBBBB;
                                  -    border-right: 1px dashed #BBBBBB;
                                  -    border-bottom: 1px solid #000000;
                                  -}
                                  -
                                  -.firebugRulerV {
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: -15px;
                                  -    width: 14px;
                                  -    height: 100%;
                                  -    background: url(chrome://firebug/skin/rulerV.png) repeat-y;
                                  -    border-left: 1px solid #BBBBBB;
                                  -    border-right: 1px solid #000000;
                                  -    border-bottom: 1px dashed #BBBBBB;
                                  -}
                                  -
                                  -.overflowRulerX > .firebugRulerV {
                                  -    left: 0;
                                  -}
                                  -
                                  -.overflowRulerY > .firebugRulerH {
                                  -    top: 0;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.firebugLayoutBoxOffset {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    opacity: 0.8;
                                  -}
                                  -
                                  -.firebugLayoutBoxMargin {
                                  -    background-color: #EDFF64;
                                  -}
                                  -
                                  -.firebugLayoutBoxBorder {
                                  -    background-color: #666666;
                                  -}
                                  -
                                  -.firebugLayoutBoxPadding {
                                  -    background-color: SlateBlue;
                                  -}
                                  -
                                  -.firebugLayoutBoxContent {
                                  -    background-color: SkyBlue;
                                  -}
                                  -
                                  -/*.firebugHighlightGroup .firebugLayoutBox {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.firebugHighlightBox {
                                  -    background-color: Blue !important;
                                  -}*/
                                  -
                                  -.firebugLayoutLine {
                                  -    z-index: 2147483647;
                                  -    background-color: #000000;
                                  -    opacity: 0.4;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft,
                                  -.firebugLayoutLineRight {
                                  -    position: fixed;
                                  -    width: 1px;
                                  -    height: 100%;
                                  -}
                                  -
                                  -.firebugLayoutLineTop,
                                  -.firebugLayoutLineBottom {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 1px;
                                  -}
                                  -
                                  -.firebugLayoutLineTop {
                                  -    margin-top: -1px;
                                  -    border-top: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineRight {
                                  -    border-right: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineBottom {
                                  -    border-bottom: 1px solid #999999;
                                  -}
                                  -
                                  -.firebugLayoutLineLeft {
                                  -    margin-left: -1px;
                                  -    border-left: 1px solid #999999;
                                  -}
                                  diff --git a/tags/firebug1.3a5/content/firebug/html.js b/tags/firebug1.3a5/content/firebug/html.js
                                  deleted file mode 100644
                                  index f3e60b3a..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/html.js
                                  +++ /dev/null
                                  @@ -1,597 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var ignoreHTMLProps =
                                  -{
                                  -    // ignores the attributes injected by Sizzle, otherwise it will 
                                  -    // be visible on IE (when enumerating element.attributes)
                                  -    sizcache: 1,
                                  -    sizset: 1
                                  -};
                                  -
                                  -// ignores also the cache property injected by firebug
                                  -ignoreHTMLProps[cacheID] = 1;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Module
                                  -
                                  -Firebug.HTML = extend(Firebug.Module, 
                                  -{
                                  -    appendTreeNode: function(nodeArray, html)
                                  -    {
                                  -        var reTrim = /^\s+|\s+$/g;
                                  -        
                                  -        if (!nodeArray.length) nodeArray = [nodeArray];
                                  -        
                                  -        for (var n=0, node; node=nodeArray[n]; n++)
                                  -        {
                                  -            if (node.nodeType == 1)
                                  -            {
                                  -                if (Firebug.ignoreFirebugElements && node.firebugIgnore) continue;
                                  -                
                                  -                var uid = node[cacheID];
                                  -                var child = node.childNodes;
                                  -                var childLength = child.length;
                                  -                
                                  -                var nodeName = node.nodeName.toLowerCase();
                                  -                
                                  -                var nodeVisible = isVisible(node);
                                  -                
                                  -                var hasSingleTextChild = childLength == 1 && node.firstChild.nodeType == 3 &&
                                  -                        nodeName != "script" && nodeName != "style";
                                  -                
                                  -                var nodeControl = !hasSingleTextChild && childLength > 0 ? 
                                  -                    ('<div class="nodeControl"></div>') : '';
                                  -                
                                  -                var isIE = false;
                                  -
                                  -                if(isIE && nodeControl)
                                  -                    html.push(nodeControl);
                                  -              
                                  -                if (typeof uid != 'undefined')
                                  -                    html.push(
                                  -                        '<div class="objectBox-element" ',
                                  -                        'id="', uid,                                                                                        
                                  -                        '">',
                                  -                        !isIE && nodeControl ? nodeControl: "",                        
                                  -                        '<span ',
                                  -                        cacheID, 
                                  -                        '="', uid,
                                  -                        '"  class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', nodeName, '</span>'
                                  -                    );
                                  -                else
                                  -                    html.push(
                                  -                        '<div class="objectBox-element"><span class="nodeBox',
                                  -                        nodeVisible ? "" : " nodeHidden",
                                  -                        '">&lt;<span class="nodeTag">', 
                                  -                        nodeName, '</span>'
                                  -                    );
                                  -                
                                  -                for (var i = 0; i < node.attributes.length; ++i)
                                  -                {
                                  -                    var attr = node.attributes[i];
                                  -                    if (!attr.specified || Firebug.ignoreFirebugElements && 
                                  -                        ignoreHTMLProps.hasOwnProperty(attr.nodeName))
                                  -                            continue;
                                  -                    
                                  -                    var name = attr.nodeName.toLowerCase();
                                  -                    var value = name == "style" ? formatStyles(node.style.cssText) : attr.nodeValue;
                                  -                    
                                  -                    html.push('&nbsp;<span class="nodeName">', name,
                                  -                        '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                        '</span>&quot;')
                                  -                }
                                  -                
                                  -                /*
                                  -                // source code nodes
                                  -                if (nodeName == 'script' || nodeName == 'style')
                                  -                {
                                  -                  
                                  -                    if(document.all){
                                  -                        var src = node.innerHTML+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+node.innerHTML+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('&gt;</div><div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div><div class="objectBox-element">&lt;/<span class="nodeTag">',
                                  -                            nodeName,
                                  -                            '</span>&gt;</div>',
                                  -                            '</div>'
                                  -                        );
                                  -                      
                                  -                
                                  -                }/**/
                                  -                
                                  -                // Just a single text node child
                                  -                if (hasSingleTextChild)
                                  -                {
                                  -                    var value = child[0].nodeValue.replace(reTrim, '');
                                  -                    if(value)
                                  -                    {
                                  -                        html.push(
                                  -                                '&gt;<span class="nodeText">',
                                  -                                escapeHTML(value),
                                  -                                '</span>&lt;/<span class="nodeTag">',
                                  -                                nodeName,
                                  -                                '</span>&gt;</span></div>'
                                  -                            );
                                  -                    }
                                  -                    else
                                  -                      html.push('/&gt;</span></div>'); // blank text, print as childless node
                                  -                
                                  -                }
                                  -                else if (childLength > 0)
                                  -                {
                                  -                    html.push('&gt;</span></div>');
                                  -                }
                                  -                else 
                                  -                    html.push('/&gt;</span></div>');
                                  -          
                                  -            } 
                                  -            else if (node.nodeType == 3)
                                  -            {
                                  -                if ( node.parentNode && ( node.parentNode.nodeName.toLowerCase() == "script" ||
                                  -                     node.parentNode.nodeName.toLowerCase() == "style" ) )
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    
                                  -                    if(isIE){
                                  -                        var src = value+'\n';
                                  -                       
                                  -                    }else {
                                  -                        var src = '\n'+value+'\n';
                                  -                    }
                                  -                    
                                  -                    var match = src.match(/\n/g);
                                  -                    var num = match ? match.length : 0;
                                  -                    var s = [], sl = 0;
                                  -                    
                                  -                    for(var c=1; c<num; c++){
                                  -                        s[sl++] = '<div line="'+c+'">' + c + '</div>';
                                  -                    }
                                  -                    
                                  -                    html.push('<div class="nodeGroup"><div class="nodeChildren"><div class="lineNo">',
                                  -                            s.join(''),
                                  -                            '</div><pre class="nodeCode">',
                                  -                            escapeHTML(src),
                                  -                            '</pre>',
                                  -                            '</div></div>'
                                  -                        );
                                  -                      
                                  -                }
                                  -                else
                                  -                {
                                  -                    var value = node.nodeValue.replace(reTrim, '');
                                  -                    if (value)
                                  -                        html.push('<div class="nodeText">', escapeHTML(value),'</div>');
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -    
                                  -    appendTreeChildren: function(treeNode)
                                  -    {
                                  -        var doc = Firebug.chrome.document;
                                  -        var uid = treeNode.id;
                                  -        var parentNode = documentCache[uid];
                                  -        
                                  -        if (parentNode.childNodes.length == 0) return;
                                  -        
                                  -        var treeNext = treeNode.nextSibling;
                                  -        var treeParent = treeNode.parentNode;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl nodeMaximized';
                                  -        
                                  -        var html = [];
                                  -        var children = doc.createElement("div");
                                  -        children.className = "nodeChildren";
                                  -        this.appendTreeNode(parentNode.childNodes, html);
                                  -        children.innerHTML = html.join("");
                                  -        
                                  -        treeParent.insertBefore(children, treeNext);
                                  -        
                                  -        var closeElement = doc.createElement("div");
                                  -        closeElement.className = "objectBox-element";
                                  -        closeElement.innerHTML = '&lt;/<span class="nodeTag">' + 
                                  -            parentNode.nodeName.toLowerCase() + '&gt;</span>'
                                  -        
                                  -        treeParent.insertBefore(closeElement, treeNext);
                                  -        
                                  -    },
                                  -    
                                  -    removeTreeChildren: function(treeNode)
                                  -    {
                                  -        var children = treeNode.nextSibling;
                                  -        var closeTag = children.nextSibling;
                                  -        
                                  -        var isIE = false;
                                  -        var control = isIE ? treeNode.previousSibling : treeNode.firstChild;
                                  -        control.className = 'nodeControl';
                                  -        
                                  -        children.parentNode.removeChild(children);  
                                  -        closeTag.parentNode.removeChild(closeTag);  
                                  -    },
                                  -    
                                  -    isTreeNodeVisible: function(id)
                                  -    {
                                  -        return $(id);
                                  -    },
                                  -    
                                  -    select: function(el)
                                  -    {
                                  -        var id = el && el[cacheID];
                                  -        if (id)
                                  -            this.selectTreeNode(id);
                                  -    },
                                  -    
                                  -    selectTreeNode: function(id)
                                  -    {
                                  -        id = ""+id;
                                  -        var node, stack = [];
                                  -        while(id && !this.isTreeNodeVisible(id))
                                  -        {
                                  -            stack.push(id);
                                  -            
                                  -            var node = documentCache[id].parentNode;
                                  -
                                  -            if (node && typeof node[cacheID] != "undefined")
                                  -                id = ""+node[cacheID];
                                  -            else
                                  -                break;
                                  -        }
                                  -        
                                  -        stack.push(id);
                                  -        
                                  -        while(stack.length > 0)
                                  -        {
                                  -            id = stack.pop();
                                  -            node = $(id);
                                  -            
                                  -            if (stack.length > 0 && documentCache[id].childNodes.length > 0)
                                  -              this.appendTreeChildren(node);
                                  -        }
                                  -        
                                  -        selectElement(node);
                                  -        
                                  -        fbPanel1.scrollTop = Math.round(node.offsetTop - fbPanel1.clientHeight/2);
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.HTML);
                                  -
                                  -// ************************************************************************************************
                                  -// HTML Panel
                                  -
                                  -function HTMLPanel(){};
                                  -
                                  -HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "HTML",
                                  -    title: "HTML",
                                  -    
                                  -    options: {
                                  -        hasSidePanel: true,
                                  -        //hasToolButtons: true,
                                  -        isPreRendered: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.panelNode.style.padding = "4px 3px 1px 15px";
                                  -        
                                  -        if (Env.Options.enablePersistent || Firebug.chrome.type != "popup")
                                  -            this.createUI();
                                  -        
                                  -        if(!this.sidePanelBar.selectedPanel)
                                  -        {
                                  -            this.sidePanelBar.selectPanel("DOMSidePanel");
                                  -        }            
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        selectedElement = null
                                  -        fbPanel1 = null;
                                  -        
                                  -        selectedSidePanelTS = null;
                                  -        selectedSidePanelTimer = null;
                                  -        
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -    
                                  -    createUI: function()
                                  -    {
                                  -        var rootNode = Firebug.browser.document.documentElement;
                                  -        var html = [];
                                  -        Firebug.HTML.appendTreeNode(rootNode, html);
                                  -        
                                  -        var d = this.contentNode;
                                  -        d.innerHTML = html.join("");
                                  -        this.panelNode.appendChild(d);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        addEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = $("fbPanel1");
                                  -        
                                  -        if(!selectedElement)
                                  -        {
                                  -            Firebug.HTML.selectTreeNode(Firebug.browser.document.body[cacheID]);
                                  -        }
                                  -        
                                  -        // TODO: xxxpedro
                                  -        addEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        addEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        addEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);        
                                  -    },
                                  -    
                                  -    shutdown: function()
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        removeEvent(fbPanel1, 'mousemove', Firebug.HTML.onListMouseMove);
                                  -        removeEvent($("fbContent"), 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        removeEvent(Firebug.chrome.node, 'mouseout', Firebug.HTML.onListMouseMove);
                                  -        
                                  -        removeEvent(this.panelNode, 'click', Firebug.HTML.onTreeClick);
                                  -        
                                  -        fbPanel1 = null;
                                  -        
                                  -        Firebug.Panel.shutdown.apply(this, arguments);
                                  -    },
                                  -    
                                  -    reattach: function()
                                  -    {
                                  -        // TODO: panel reattach
                                  -        if(FirebugChrome.selectedHTMLElementId)
                                  -            Firebug.HTML.selectTreeNode(FirebugChrome.selectedHTMLElementId);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var formatStyles = function(styles)
                                  -{
                                  -    return isIE ?
                                  -        // IE return CSS property names in upper case, so we need to convert them
                                  -        styles.replace(/([^\s]+)\s*:/g, function(m,g){return g.toLowerCase()+":"}) :
                                  -        // other browsers are just fine
                                  -        styles;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var selectedElement = null
                                  -var fbPanel1 = null;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
                                  -var selectedSidePanelTS, selectedSidePanelTimer;
                                  -
                                  -var selectElement= function selectElement(e)
                                  -{
                                  -    if (e != selectedElement)
                                  -    {
                                  -        if (selectedElement)
                                  -            selectedElement.className = "objectBox-element";
                                  -            
                                  -        e.className = e.className + " selectedElement";
                                  -
                                  -        if (FBL.isFirefox)
                                  -            e.style.MozBorderRadius = "2px";
                                  -        
                                  -        else if (FBL.isSafari)
                                  -            e.style.WebkitBorderRadius = "2px";
                                  -        
                                  -        selectedElement = e;
                                  -        
                                  -        FirebugChrome.selectedHTMLElementId = e.id;
                                  -        
                                  -        var target = documentCache[e.id];
                                  -        var selectedSidePanel = Firebug.chrome.getPanel("HTML").sidePanelBar.selectedPanel;
                                  -        
                                  -        var stack = FirebugChrome.htmlSelectionStack;
                                  -        
                                  -        stack.unshift(target);
                                  -        Firebug.CommandLine.API.$0 = stack[0];
                                  -        Firebug.CommandLine.API.$1 = stack[1];
                                  -        
                                  -        if (stack.length > 2)
                                  -            stack.pop();
                                  -        
                                  -        var lazySelect = function()
                                  -        {
                                  -            selectedSidePanelTS = new Date().getTime();
                                  -            
                                  -            selectedSidePanel.select(target, true);
                                  -        };
                                  -        
                                  -        if (selectedSidePanelTimer)
                                  -        {
                                  -            clearTimeout(selectedSidePanelTimer);
                                  -            selectedSidePanelTimer = null;
                                  -        }
                                  -        
                                  -        if (new Date().getTime() - selectedSidePanelTS > 100)
                                  -            setTimeout(lazySelect, 0)
                                  -        else
                                  -            selectedSidePanelTimer = setTimeout(lazySelect, 150);
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// ***  TODO:  REFACTOR  **************************************************************************
                                  -// ************************************************************************************************
                                  -Firebug.HTML.onTreeClick = function (e)
                                  -{
                                  -    e = e || event;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -        targ = targ.parentNode;
                                  -        
                                  -    
                                  -    if (targ.className.indexOf('nodeControl') != -1 || targ.className == 'nodeTag')
                                  -    {
                                  -        var isIE = false;
                                  -        
                                  -        if(targ.className == 'nodeTag')
                                  -        {
                                  -            var control = isIE ? (targ.parentNode.previousSibling || targ) :
                                  -                          (targ.parentNode.previousSibling || targ);
                                  -
                                  -            selectElement(targ.parentNode.parentNode);
                                  -            
                                  -            if (control.className.indexOf('nodeControl') == -1)
                                  -                return;
                                  -            
                                  -        } else
                                  -            control = targ;
                                  -        
                                  -        FBL.cancelEvent(e);
                                  -        
                                  -        var treeNode = isIE ? control.nextSibling : control.parentNode;
                                  -        
                                  -        //FBL.Firebug.Console.log(treeNode);
                                  -        
                                  -        if (control.className.indexOf(' nodeMaximized') != -1) {
                                  -            FBL.Firebug.HTML.removeTreeChildren(treeNode);
                                  -        } else {
                                  -            FBL.Firebug.HTML.appendTreeChildren(treeNode);
                                  -        }
                                  -    }
                                  -    else if (targ.className == 'nodeValue' || targ.className == 'nodeName')
                                  -    {
                                  -        /*
                                  -        var input = FBL.Firebug.chrome.document.getElementById('treeInput');
                                  -        
                                  -        input.style.display = "block";
                                  -        input.style.left = targ.offsetLeft + 'px';
                                  -        input.style.top = FBL.topHeight + targ.offsetTop - FBL.fbPanel1.scrollTop + 'px';
                                  -        input.style.width = targ.offsetWidth + 6 + 'px';
                                  -        input.value = targ.textContent || targ.innerText;
                                  -        input.focus(); 
                                  -        /**/
                                  -    }
                                  -}
                                  -
                                  -function onListMouseOut(e)
                                  -{
                                  -    e = e || event || window;
                                  -    var targ;
                                  -    
                                  -    if (e.target) targ = e.target;
                                  -    else if (e.srcElement) targ = e.srcElement;
                                  -    if (targ.nodeType == 3) // defeat Safari bug
                                  -      targ = targ.parentNode;
                                  -        
                                  -      if (hasClass(targ, "fbPanel")) {
                                  -          FBL.Firebug.Inspector.hideBoxModel();
                                  -          hoverElement = null;        
                                  -      }
                                  -};
                                  -    
                                  -var hoverElement = null;
                                  -var hoverElementTS = 0;
                                  -
                                  -Firebug.HTML.onListMouseMove = function onListMouseMove(e)
                                  -{
                                  -    try
                                  -    {
                                  -        e = e || event || window;
                                  -        var targ;
                                  -        
                                  -        if (e.target) targ = e.target;
                                  -        else if (e.srcElement) targ = e.srcElement;
                                  -        if (targ.nodeType == 3) // defeat Safari bug
                                  -            targ = targ.parentNode;
                                  -            
                                  -        var found = false;
                                  -        while (targ && !found) {
                                  -            if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " "))
                                  -                targ = targ.parentNode;
                                  -            else
                                  -                found = true;
                                  -        }
                                  -        
                                  -        if (!targ)
                                  -        {
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -        
                                  -        /*
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        /**/
                                  -        
                                  -        if (typeof targ.attributes[FBL.cacheID] == 'undefined') return;
                                  -        
                                  -        var uid = targ.attributes[FBL.cacheID];
                                  -        if (!uid) return;
                                  -        
                                  -        var el = FBL.documentCache[uid.value];
                                  -        
                                  -        var nodeName = el.nodeName.toLowerCase();
                                  -    
                                  -        if (FBL.isIE && " meta title script link ".indexOf(" "+nodeName+" ") != -1)
                                  -            return;
                                  -    
                                  -        if (!/\snodeBox\s|\sobjectBox-selector\s/.test(" " + targ.className + " ")) return;
                                  -        
                                  -        if (el.id == "FirebugUI" || " html head body br script link iframe ".indexOf(" "+nodeName+" ") != -1) { 
                                  -            FBL.Firebug.Inspector.hideBoxModel();
                                  -            hoverElement = null;
                                  -            return;
                                  -        }
                                  -      
                                  -        if ((new Date().getTime() - hoverElementTS > 40) && hoverElement != el) {
                                  -            hoverElementTS = new Date().getTime();
                                  -            hoverElement = el;
                                  -            FBL.Firebug.Inspector.drawBoxModel(el);
                                  -        }
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/html2.js b/tags/firebug1.3a5/content/firebug/html2.js
                                  deleted file mode 100644
                                  index 2ae0280c..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/html2.js
                                  +++ /dev/null
                                  @@ -1,1906 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -/*
                                  -const Cc = Components.classes;
                                  -const Ci = Components.interfaces;
                                  -
                                  -const MODIFICATION = MutationEvent.MODIFICATION;
                                  -const ADDITION = MutationEvent.ADDITION;
                                  -const REMOVAL = MutationEvent.REMOVAL;
                                  -/**/
                                  -
                                  -var AttrTag =
                                  -    SPAN({"class": "nodeAttr editGroup"},
                                  -        "&nbsp;", SPAN({"class": "nodeName editable"}, "$attr.nodeName"), "=&quot;",
                                  -        SPAN({"class": "nodeValue editable"}, "$attr.nodeValue"), "&quot;"
                                  -    );
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLModule = extend(Firebug.Module,
                                  -{
                                  -    deleteNode: function(node, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.parentNode.removeChild(node);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    },
                                  -    deleteAttribute: function(node, attr, context)
                                  -    {
                                  -        dispatch(this.fbListeners, "onBeginFirebugChange", [node, context]);
                                  -        node.removeAttribute(attr);
                                  -        dispatch(this.fbListeners, "onEndFirebugChange", [node, context]);
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel = function() {};
                                  -
                                  -Firebug.HTMLPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    toggleEditing: function()
                                  -    {
                                  -        if (this.editing)
                                  -            Firebug.Editor.stopEditing();
                                  -        else
                                  -            this.editNode(this.selection);
                                  -    },
                                  -
                                  -    resetSearch: function()
                                  -    {
                                  -        delete this.lastSearch;
                                  -    },
                                  -
                                  -    selectNext: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var next = this.ioBox.getNextObjectBox(objectBox);
                                  -        if (next)
                                  -        {
                                  -            this.select(next.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(next.repObject);
                                  -
                                  -        }
                                  -    },
                                  -
                                  -    selectPrevious: function()
                                  -    {
                                  -        var objectBox = this.ioBox.createObjectBox(this.selection);
                                  -        var previous = this.ioBox.getPreviousObjectBox(objectBox);
                                  -        if (previous)
                                  -        {
                                  -            this.select(previous.repObject);
                                  -
                                  -            if (Firebug.Inspector.inspecting)
                                  -                Firebug.Inspector.inspectNode(previous.repObject);
                                  -        }
                                  -    },
                                  -
                                  -    selectNodeBy: function(dir)
                                  -    {
                                  -        if (dir == "up")
                                  -            this.selectPrevious();
                                  -        else if (dir == "down")
                                  -            this.selectNext();
                                  -        else if (dir == "left")
                                  -        {
                                  -            var box = this.ioBox.createObjectBox(this.selection);
                                  -            if (!hasClass(box, "open"))
                                  -                this.select(this.ioBox.getParentObjectBox(box).repObject);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -        else if (dir == "right")
                                  -            this.ioBox.expandObject(this.selection);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    editNewAttribute: function(elt)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var labelBox = objectNodeBox.firstChild.lastChild;
                                  -            var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -            Firebug.Editor.insertRow(bracketBox, "before");
                                  -        }
                                  -    },
                                  -
                                  -    editAttribute: function(elt, attrName)
                                  -    {
                                  -        var objectNodeBox = this.ioBox.findObjectBox(elt);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            var attrBox = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (attrBox)
                                  -            {
                                  -                var attrValueBox = attrBox.childNodes[3];
                                  -                var value = elt.getAttribute(attrName);
                                  -                Firebug.Editor.startEditing(attrValueBox, value);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    deleteAttribute: function(elt, attrName)
                                  -    {
                                  -        Firebug.HTMLModule.deleteAttribute(elt, attrName, this.context);
                                  -    },
                                  -
                                  -    editNode: function(node)
                                  -    {
                                  -        if ( nonEditableTags.hasOwnProperty(node.localName) )
                                  -            return;
                                  -
                                  -        var objectNodeBox = this.ioBox.findObjectBox(node);
                                  -        if (objectNodeBox)
                                  -        {
                                  -            if (!this.htmlEditor)
                                  -                this.htmlEditor = new HTMLEditor(this.document);
                                  -
                                  -            this.htmlEditor.innerEditMode = node.localName in innerEditableTags;
                                  -
                                  -            var html = this.htmlEditor.innerEditMode ? node.innerHTML : getElementHTML(node);
                                  -            Firebug.Editor.startEditing(objectNodeBox, html, this.htmlEditor);
                                  -        }
                                  -    },
                                  -
                                  -    deleteNode: function(node)
                                  -    {
                                  -        Firebug.HTMLModule.deleteNode(node, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getElementSourceText: function(node)
                                  -    {
                                  -        if (this.sourceElements)
                                  -        {
                                  -            var index = this.sourceElementNodes.indexOf(node);
                                  -            if (index != -1)
                                  -                return this.sourceElements[index];
                                  -        }
                                  -
                                  -        var lines;
                                  -
                                  -        var url = getSourceHref(node);
                                  -        if (url)
                                  -            lines = this.context.sourceCache.load(url);
                                  -        else
                                  -        {
                                  -            var text = getSourceText(node);
                                  -            lines = splitLines(text);
                                  -        }
                                  -
                                  -        var sourceElt = new SourceText(lines, node);
                                  -
                                  -        if (!this.sourceElements)
                                  -        {
                                  -            this.sourceElements =  [sourceElt];
                                  -            this.sourceElementNodes = [node];
                                  -        }
                                  -        else
                                  -        {
                                  -            this.sourceElements.push(sourceElt);
                                  -            this.sourceElementNodes.push(node);
                                  -        }
                                  -
                                  -        return sourceElt;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    mutateAttr: function(target, attrChange, attrName, attrValue)
                                  -    {
                                  -        // Every time the user scrolls we get this pointless mutation event, which
                                  -        // is only bad for performance
                                  -        if (attrName == "curpos")
                                  -            return;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateAttr target:"+target+" attrChange:"+attrChange+" attrName:"+attrName, target);
                                  -
                                  -        this.markChange();
                                  -
                                  -        var objectNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(target)
                                  -            : this.ioBox.findObjectBox(target);
                                  -
                                  -        if (!objectNodeBox)
                                  -            return;
                                  -
                                  -        if (isVisible(objectNodeBox.repObject))
                                  -            removeClass(objectNodeBox, "nodeHidden");
                                  -        else
                                  -            setClass(objectNodeBox, "nodeHidden");
                                  -
                                  -        if (attrChange == MODIFICATION || attrChange == ADDITION)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("mutateAttr "+attrChange+" "+attrName+"="+attrValue+" node: "+nodeAttr, nodeAttr);
                                  -            if (nodeAttr && nodeAttr.childNodes.length > 3)
                                  -            {
                                  -                var attrValueBox = nodeAttr.childNodes[3];
                                  -                var attrValueText = nodeAttr.childNodes[3].firstChild;
                                  -                if (attrValueText)
                                  -                    attrValueText.nodeValue = attrValue;
                                  -
                                  -                this.highlightMutation(attrValueBox, objectNodeBox, "mutated");
                                  -            }
                                  -            else
                                  -            {
                                  -                var attr = target.getAttributeNode(attrName);
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("mutateAttr getAttributeNode "+attrChange+" "+attrName+"="+attrValue+" node: "+attr, attr);
                                  -                if (attr)
                                  -                {
                                  -                    var nodeAttr = Firebug.HTMLPanel.AttrNode.tag.replace({attr: attr},
                                  -                            this.document);
                                  -
                                  -                    var labelBox = objectNodeBox.firstChild.lastChild;
                                  -                    var bracketBox = getChildByClass(labelBox, "nodeBracket");
                                  -                    labelBox.insertBefore(nodeAttr, bracketBox);
                                  -
                                  -                    this.highlightMutation(nodeAttr, objectNodeBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (attrChange == REMOVAL)
                                  -        {
                                  -            var nodeAttr = findNodeAttrBox(objectNodeBox, attrName);
                                  -            if (nodeAttr)
                                  -            {
                                  -                nodeAttr.parentNode.removeChild(nodeAttr);
                                  -
                                  -                this.highlightMutation(objectNodeBox, objectNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateText: function(target, parent, textValue)
                                  -    {
                                  -        this.markChange();
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showFullTextNodes)
                                  -            textValue = cropMultipleLines(textValue, 50);
                                  -
                                  -        var parentTag = getNodeBoxTag(parentNodeBox);
                                  -        if (parentTag == Firebug.HTMLPanel.TextElement.tag)
                                  -        {
                                  -            var nodeText = getTextElementTextBox(parentNodeBox);
                                  -            if (!nodeText.firstChild)
                                  -                return;
                                  -
                                  -            nodeText.firstChild.nodeValue = textValue;
                                  -
                                  -            this.highlightMutation(nodeText, parentNodeBox, "mutated");
                                  -        }
                                  -        else
                                  -        {
                                  -            var childBox = this.ioBox.getChildObjectBox(parentNodeBox);
                                  -            if (!childBox)
                                  -                return;
                                  -
                                  -            var textNodeBox = this.ioBox.findChildObjectBox(childBox, target);
                                  -            if (textNodeBox)
                                  -            {
                                  -                textNodeBox.firstChild.lastChild.nodeValue = textValue;
                                  -
                                  -                this.highlightMutation(textNodeBox, parentNodeBox, "mutated");
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    mutateNode: function(target, parent, nextSibling, removal)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\nhtml.mutateNode target:"+target+" parent:"+parent+(removal?"REMOVE":"")+"\n");
                                  -
                                  -        this.markChange();  // This invalidates the panels for every mutate
                                  -
                                  -        var parentNodeBox = Firebug.scrollToMutations || Firebug.expandMutations
                                  -            ? this.ioBox.createObjectBox(parent)
                                  -            : this.ioBox.findObjectBox(parent);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.mutateNode parent:"+parent+" parentNodeBox:"+parentNodeBox+"\n");
                                  -
                                  -        if (!parentNodeBox)
                                  -            return;
                                  -
                                  -        if (!Firebug.showWhitespaceNodes && this.isWhitespaceText(target))
                                  -            return;
                                  -
                                  -        // target is only whitespace
                                  -
                                  -        var newParentTag = getNodeTag(parent);
                                  -        var oldParentTag = getNodeBoxTag(parentNodeBox);
                                  -
                                  -        if (newParentTag == oldParentTag)
                                  -        {
                                  -            if (parentNodeBox.populated)
                                  -            {
                                  -                if (removal)
                                  -                {
                                  -                    this.ioBox.removeChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(parentNodeBox, parentNodeBox, "mutated");
                                  -                }
                                  -                else
                                  -                {
                                  -                    var objectBox = nextSibling
                                  -                        ? this.ioBox.insertChildBoxBefore(parentNodeBox, target, nextSibling)
                                  -                        : this.ioBox.appendChildBox(parentNodeBox, target);
                                  -
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -            else
                                  -            {
                                  -                var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -                this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -
                                  -                if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -                {
                                  -                    var objectBox = this.ioBox.createObjectBox(target);
                                  -                    this.highlightMutation(objectBox, objectBox, "mutated");
                                  -                }
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            var newParentNodeBox = newParentTag.replace({object: parent}, this.document);
                                  -            if (parentNodeBox.parentNode)
                                  -                parentNodeBox.parentNode.replaceChild(newParentNodeBox, parentNodeBox);
                                  -
                                  -            if (hasClass(parentNodeBox, "open"))
                                  -                this.ioBox.toggleObjectBox(newParentNodeBox, true);
                                  -
                                  -            if (this.selection && (!this.selection.parentNode || parent == this.selection))
                                  -                this.ioBox.select(parent, true);
                                  -
                                  -            this.highlightMutation(newParentNodeBox, newParentNodeBox, "mutated");
                                  -        }
                                  -    },
                                  -
                                  -    highlightMutation: function(elt, objectBox, type)
                                  -    {
                                  -        if (!elt)
                                  -            return;
                                  -
                                  -        if (Firebug.scrollToMutations || Firebug.expandMutations)
                                  -        {
                                  -            if (this.context.mutationTimeout)
                                  -            {
                                  -                this.context.clearTimeout(this.context.mutationTimeout);
                                  -                delete this.context.mutationTimeout;
                                  -            }
                                  -
                                  -            var ioBox = this.ioBox;
                                  -            var panelNode = this.panelNode;
                                  -
                                  -            this.context.mutationTimeout = this.context.setTimeout(function()
                                  -            {
                                  -                ioBox.openObjectBox(objectBox);
                                  -
                                  -                if (Firebug.scrollToMutations)
                                  -                    scrollIntoCenterView(objectBox, panelNode);
                                  -            }, 200);
                                  -        }
                                  -
                                  -        if (Firebug.highlightMutations)
                                  -            setClassTimed(elt, type, this.context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // SourceBox proxy
                                  -
                                  -    createObjectBox: function(object, isRoot)
                                  -    {
                                  -        if (FBTrace.DBG_HTML) FBTrace.sysout("html.createObjectBox("+(object.tagName?object.tagName:object)+", isRoot:"+(isRoot?"true":"false")+")\n");
                                  -        var tag = getNodeTag(object);
                                  -        if (tag)
                                  -            return tag.replace({object: object}, this.document);
                                  -    },
                                  -
                                  -    getParentObject: function(node)
                                  -    {
                                  -        if (node instanceof SourceText)
                                  -            return node.owner;
                                  -
                                  -        if (this.rootElement && node == this.rootElement)  // this.rootElement is never set
                                  -            return null;
                                  -
                                  -        var parentNode = node ? node.parentNode : null;
                                  -        if (parentNode)
                                  -            if (parentNode.nodeType == 9)
                                  -            {
                                  -                if (FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.getParentObject parentNode.nodeType 9\n");
                                  -                if (parentNode.defaultView)
                                  -                    return parentNode.defaultView.frameElement;
                                  -                else
                                  -                {
                                  -                    if (FBTrace.DBG_HTML || FBTrace.DBG_ERRORS)
                                  -                        FBTrace.sysout("html.getParentObject parentNode.nodeType 9 but no defaultView?", parentNode);
                                  -                }
                                  -            }
                                  -            else
                                  -                return parentNode;
                                  -        else
                                  -            if (node && node.nodeType == 9) // document type
                                  -            {
                                  -                var embeddingFrame = node.defaultView.frameElement;
                                  -                if (embeddingFrame)
                                  -                    return embeddingFrame.parentNode;
                                  -                else
                                  -                    return null;  // top level has no parent
                                  -            }
                                  -
                                  -    },
                                  -
                                  -    getChildObject: function(node, index, previousSibling)
                                  -    {
                                  -        if (isSourceElement(node))
                                  -        {
                                  -            if (index == 0)
                                  -                return this.getElementSourceText(node);
                                  -        }
                                  -        else if (previousSibling)
                                  -        {
                                  -            return this.findNextSibling(previousSibling);
                                  -        }
                                  -        else
                                  -        {
                                  -            if (index == 0 && node.contentDocument)
                                  -                return node.contentDocument.documentElement;
                                  -            else if (Firebug.showWhitespaceNodes)
                                  -                return node.childNodes[index];
                                  -            else
                                  -            {
                                  -                var childIndex = 0;
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                {
                                  -                    if (!this.isWhitespaceText(child) && childIndex++ == index)
                                  -                        return child;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return null;
                                  -    },
                                  -
                                  -    isWhitespaceText: function(node)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return false;
                                  -        return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -    },
                                  -
                                  -    findNextSibling: function (node)
                                  -    {
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return node.nextSibling;
                                  -        else
                                  -        {
                                  -            for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -            {
                                  -                if (!this.isWhitespaceText(child))
                                  -                    return child;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    isSourceElement: function(element)
                                  -    {
                                  -        var tag = element.localName.toLowerCase();
                                  -        return tag == "script" || tag == "link" || tag == "style"
                                  -            || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Events
                                  -
                                  -    onMutateAttr: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var attrChange = event.attrChange;
                                  -        var attrName = event.attrName;
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateAttr(target, attrChange, attrName, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateText: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var parent = target.parentNode;
                                  -
                                  -        var newValue = event.newValue;
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            this.mutateText(target, parent, newValue);
                                  -        }, this);
                                  -    },
                                  -
                                  -    onMutateNode: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        if (target.firebugIgnore)
                                  -            return;
                                  -
                                  -        var parent = event.relatedNode;
                                  -        var removal = event.type == "DOMNodeRemoved";
                                  -        var nextSibling = removal ? null : this.findNextSibling(target);
                                  -
                                  -        this.context.delay(function()
                                  -        {
                                  -            try
                                  -            {
                                  -                 this.mutateNode(target, parent, nextSibling, removal);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_HTML)
                                  -                    FBTrace.sysout("html.onMutateNode FAILS:", exc);
                                  -            }
                                  -        }, this);
                                  -    },
                                  -
                                  -    onClick: function(event)
                                  -    {
                                  -        if (isLeftClick(event) && event.detail == 2)
                                  -        {
                                  -            if (getAncestorByClass(event.target, "nodeTag"))
                                  -            {
                                  -                var node = Firebug.getRepObject(event.target);
                                  -                this.editNode(node);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        if (!isLeftClick(event))
                                  -            return;
                                  -
                                  -        if (getAncestorByClass(event.target, "nodeTag"))
                                  -        {
                                  -            var node = Firebug.getRepObject(event.target);
                                  -            this.noScrollIntoView = true;
                                  -            this.select(node);
                                  -            delete this.noScrollIntoView;
                                  -            var box = this.ioBox.createObjectBox(node);
                                  -            if (!hasClass(box, "open"))
                                  -                this.ioBox.expandObject(node);
                                  -            else
                                  -                this.ioBox.contractObject(this.selection);
                                  -        }
                                  -    },
                                  -
                                  -    onKeyPress: function(event)
                                  -    {
                                  -        if (this.editing || isControl(event) || isShift(event))
                                  -            return;
                                  -
                                  -        if (event.keyCode == KeyEvent.DOM_VK_UP)
                                  -            this.selectNodeBy("up");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_DOWN)
                                  -            this.selectNodeBy("down");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_LEFT)
                                  -            this.selectNodeBy("left");
                                  -        else if (event.keyCode == KeyEvent.DOM_VK_RIGHT)
                                  -            this.selectNodeBy("right");
                                  -        else
                                  -            return;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Panel
                                  -    
                                  -    name: "HTML2",
                                  -    title: "HTML2",
                                  -    
                                  -    options: {},
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        var style = this.panelNode.style;
                                  -        style.fontFamily = "Monaco,monospace";        
                                  -        style.padding = "0 1px";
                                  -        
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);        
                                  -        
                                  -        //var object = Firebug.browser.document.documentElement;
                                  -        //Firebug.HTMLPanel.Element.tag.replace({object: object}, this.contentNode);
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.document = Firebug.chrome.document; 
                                  -        
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -        
                                  -        var object = Firebug.browser.document.documentElement;
                                  -        this.select(object);
                                  -        
                                  -        addEvent(this.panelNode, "click", this.onClick);
                                  -        addEvent(this.panelNode, "mousedown", this.onMouseDown);
                                  -    },    
                                  -
                                  -    /*
                                  -    name: "html",
                                  -    searchable: true,
                                  -    dependents: ["css", "computed", "layout", "dom", "domSide", "watch"],
                                  -    inspectorHistory: new Array(5),
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onMutateText = bind(this.onMutateText, this);
                                  -        this.onMutateAttr = bind(this.onMutateAttr, this);
                                  -        this.onMutateNode = bind(this.onMutateNode, this);
                                  -        this.onClick = bind(this.onClick, this);
                                  -        this.onMouseDown = bind(this.onMouseDown, this);
                                  -        this.onKeyPress = bind(this.onKeyPress, this);
                                  -
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    destroy: function(state)
                                  -    {
                                  -        persistObjects(this, state);
                                  -
                                  -        Firebug.Panel.destroy.apply(this, arguments);
                                  -    },
                                  -
                                  -    initializeNode: function(oldPanelNode)
                                  -    {
                                  -        this.panelNode.addEventListener("click", this.onClick, false);
                                  -        this.panelNode.addEventListener("mousedown", this.onMouseDown, false);
                                  -        dispatch([Firebug.A11yModel], "onInitializeNode", [this]);
                                  -    },
                                  -
                                  -    destroyNode: function()
                                  -    {
                                  -        this.panelNode.removeEventListener("click", this.onClick, false);
                                  -        this.panelNode.removeEventListener("mousedown", this.onMouseDown, false);
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.ioBox)
                                  -        {
                                  -            this.ioBox.destroy();
                                  -            delete this.ioBox;
                                  -        }
                                  -        dispatch([Firebug.A11yModel], "onDestroyNode", [this]);
                                  -    },
                                  -    /**/
                                  -    /*
                                  -    show: function(state)
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", true);
                                  -
                                  -        if (!this.ioBox)
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -
                                  -        this.panelNode.ownerDocument.addEventListener("keypress", this.onKeyPress, true);
                                  -
                                  -        if (this.context.loaded)
                                  -        {
                                  -            if (!this.context.attachedMutation)
                                  -            {
                                  -                this.context.attachedMutation = true;
                                  -
                                  -                iterateWindows(this.context.window, bind(function(win)
                                  -                {
                                  -                    var doc = win.document;
                                  -                    doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -                    doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -                    doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -                    doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -                }, this));
                                  -            }
                                  -
                                  -            restoreObjects(this, state);
                                  -        }
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        this.showToolbarButtons("fbHTMLButtons", false);
                                  -        delete this.infoTipURL;  // clear the state that is tracking the infotip so it is reset after next show()
                                  -        this.panelNode.ownerDocument.removeEventListener("keypress", this.onKeyPress, true);
                                  -    },
                                  -
                                  -    watchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.watchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, false);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        if (this.context.attachedMutation)
                                  -        {
                                  -            var doc = win.document;
                                  -            doc.addEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -            doc.addEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -            doc.addEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -            doc.addEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -        }
                                  -    },
                                  -
                                  -    unwatchWindow: function(win)
                                  -    {
                                  -        if (this.context.window && this.context.window != win) // then I guess we are an embedded window
                                  -        {
                                  -            var htmlPanel = this;
                                  -            iterateWindows(this.context.window, function(subwin)
                                  -            {
                                  -                if (win == subwin)
                                  -                {
                                  -                    if (FBTrace.DBG_HTML)
                                  -                        FBTrace.sysout("html.unwatchWindow found subwin.location.href="+win.location.href+"\n");
                                  -                    htmlPanel.mutateDocumentEmbedded(win, true);
                                  -                }
                                  -            });
                                  -
                                  -        }
                                  -        var doc = win.document;
                                  -        doc.removeEventListener("DOMAttrModified", this.onMutateAttr, false);
                                  -        doc.removeEventListener("DOMCharacterDataModified", this.onMutateText, false);
                                  -        doc.removeEventListener("DOMNodeInserted", this.onMutateNode, false);
                                  -        doc.removeEventListener("DOMNodeRemoved", this.onMutateNode, false);
                                  -    },
                                  -    /**/
                                  -
                                  -    mutateDocumentEmbedded: function(win, remove)
                                  -    {
                                  -        // document.documentElement    Returns the Element that is a direct child of document. For HTML documents, this normally the HTML element.
                                  -        var target = win.document.documentElement;
                                  -        var parent = win.frameElement;
                                  -        var nextSibling = this.findNextSibling(target);
                                  -        this.mutateNode(target, parent, nextSibling, remove);
                                  -    },
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        if (object instanceof Element || object instanceof Text || object instanceof CDATASection)
                                  -            return 2;
                                  -        else if (object instanceof SourceLink && object.type == "css" && !reCSS.test(object.href))
                                  -            return 2;
                                  -        else
                                  -            return 0;
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        var viewOptionNames = {showCommentNodes:1, showWhitespaceNodes:1 , showFullTextNodes:1};
                                  -        if (name in viewOptionNames)
                                  -        {
                                  -            this.resetSearch();
                                  -            clearNode(this.panelNode);
                                  -            if (this.ioBox)
                                  -                this.ioBox.destroy();
                                  -
                                  -            this.ioBox = new InsideOutBox(this, this.panelNode);
                                  -            this.ioBox.select(this.selection, true, true);
                                  -        }
                                  -    },
                                  -
                                  -    updateSelection: function(object)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("html.updateSelection "+object);
                                  -        if (this.ioBox.sourceRow)
                                  -            this.ioBox.sourceRow.removeAttribute("exeLine");
                                  -
                                  -        if (object instanceof SourceLink) // && object.type == "css" and !reCSS(object.href) by supports
                                  -         {
                                  -             var sourceLink = object;
                                  -             var stylesheet = getStyleSheetByHref(sourceLink.href, this.context);
                                  -             if (stylesheet)
                                  -             {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection stylesheet.ownerNode="+stylesheet.ownerNode
                                  -                                          +" href:"+sourceLink.href+"\n");
                                  -                if (ownerNode)
                                  -                {
                                  -                    var objectbox = this.ioBox.select(ownerNode, true, true, this.noScrollIntoView);
                                  -
                                  -                    // XXXjjb seems like this could be bad for errors at the end of long files
                                  -                    //
                                  -                    var sourceRow = FBL.getElementByClass(objectbox, "sourceRow"); // first source row in style
                                  -                    for (var lineNo = 1; lineNo < sourceLink.line; lineNo++)
                                  -                    {
                                  -                        if (!sourceRow) break;
                                  -                        sourceRow = FBL.getNextByClass(sourceRow,  "sourceRow");
                                  -                    }
                                  -                    if (FBTrace.DBG_CSS)
                                  -                        FBTrace.sysout("html panel updateSelection sourceLink.line="+sourceLink.line
                                  -                                          +" sourceRow="+(sourceRow?sourceRow.innerHTML:"undefined")+"\n");
                                  -                    if (sourceRow)
                                  -                    {
                                  -                        this.ioBox.sourceRow = sourceRow;
                                  -                        this.ioBox.sourceRow.setAttribute("exeLine", "true");
                                  -                        scrollIntoCenterView(sourceRow);
                                  -                        this.ioBox.selectObjectBox(sourceRow, false);  // sourceRow isn't an objectBox, but the function should work anyway...
                                  -                    }
                                  -                }
                                  -            }
                                  -        }
                                  -        else if (Firebug.Inspector.inspecting)
                                  -        {
                                  -            this.ioBox.highlight(object);
                                  -        }
                                  -        else
                                  -        {
                                  -            this.ioBox.select(object, true, false, this.noScrollIntoView);
                                  -            
                                  -            // TODO: xxxpedro
                                  -            //this.inspectorHistory.unshift(object);
                                  -            //if (this.inspectorHistory.length > 5)
                                  -            //    this.inspectorHistory.pop();
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(object, cancelled)
                                  -    {
                                  -        if (object != this.inspectorHistory)
                                  -        {
                                  -            // Manage history of selection for later access in the command line.
                                  -            this.inspectorHistory.unshift(object);
                                  -            if (this.inspectorHistory.length > 5)
                                  -                this.inspectorHistory.pop();
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("html.stopInspecting: inspectoryHistory updated", this.inspectorHistory);
                                  -        }
                                  -
                                  -        this.ioBox.highlight(null);
                                  -
                                  -        if (!cancelled)
                                  -            this.ioBox.select(object, true);
                                  -    },
                                  -
                                  -    search: function(text, reverse)
                                  -    {
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var search;
                                  -        if (text == this.searchText && this.lastSearch)
                                  -            search = this.lastSearch;
                                  -        else
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            if (Firebug.searchSelector)
                                  -                search = this.lastSearch = new SelectorSearch(text, doc, this.panelNode, this.ioBox);
                                  -            else
                                  -                search = this.lastSearch = new NodeSearch(text, doc, this.panelNode, this.ioBox);
                                  -        }
                                  -
                                  -        var loopAround = search.find(reverse, Firebug.searchCaseSensitive);
                                  -        if (loopAround)
                                  -        {
                                  -            this.resetSearch();
                                  -            this.search(text, reverse);
                                  -        }
                                  -
                                  -        return !search.noMatch;
                                  -    },
                                  -
                                  -    getSearchOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("search.html.CSS_Selector", "searchSelector")
                                  -        ];
                                  -    },
                                  -
                                  -    getDefaultSelection: function()
                                  -    {
                                  -        try
                                  -        {
                                  -            var doc = this.context.window.document;
                                  -            return doc.body ? doc.body : getPreviousElement(doc.documentElement.lastChild);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            return null;
                                  -        }
                                  -    },
                                  -
                                  -    getObjectPath: function(element)
                                  -    {
                                  -        var path = [];
                                  -        for (; element; element = this.getParentObject(element))
                                  -            path.push(element);
                                  -
                                  -        return path;
                                  -    },
                                  -
                                  -    getPopupObject: function(target)
                                  -    {
                                  -        return Firebug.getRepObject(target);
                                  -    },
                                  -
                                  -    getTooltipObject: function(target)
                                  -    {
                                  -        return null;
                                  -    },
                                  -
                                  -    getOptionsMenuItems: function()
                                  -    {
                                  -        return [
                                  -            optionMenu("ShowFullText", "showFullTextNodes"),
                                  -            optionMenu("ShowWhitespace", "showWhitespaceNodes"),
                                  -            optionMenu("ShowComments", "showCommentNodes"),
                                  -            "-",
                                  -            optionMenu("HighlightMutations", "highlightMutations"),
                                  -            optionMenu("ExpandMutations", "expandMutations"),
                                  -            optionMenu("ScrollToMutations", "scrollToMutations")
                                  -        ];
                                  -    },
                                  -
                                  -    getContextMenuItems: function(node, target)
                                  -    {
                                  -        if (!node)
                                  -            return null;
                                  -
                                  -        var items = [];
                                  -
                                  -        if (node && node.nodeType == 1)
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "NewAttribute", command: bindFixed(this.editNewAttribute, this, node) }
                                  -            );
                                  -
                                  -            var attrBox = getAncestorByClass(target, "nodeAttr");
                                  -            if (getAncestorByClass(target, "nodeAttr"))
                                  -            {
                                  -                var attrName = attrBox.childNodes[1].textContent;
                                  -
                                  -                items.push(
                                  -                    {label: $STRF("EditAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.editAttribute, this, node, attrName) },
                                  -                    {label: $STRF("DeleteAttribute", [attrName]), nol10n: true,
                                  -                        command: bindFixed(this.deleteAttribute, this, node, attrName) }
                                  -                );
                                  -            }
                                  -
                                  -            if (!( nonEditableTags.hasOwnProperty(node.localName) ))
                                  -            {
                                  -                items.push(
                                  -                    "-",
                                  -                    {label: "EditElement", command: bindFixed(this.editNode, this, node) },
                                  -                    {label: "DeleteElement", command: bindFixed(this.deleteNode, this, node) }
                                  -                );
                                  -            }
                                  -
                                  -        }
                                  -        else
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "EditNode", command: bindFixed(this.editNode, this, node) },
                                  -                {label: "DeleteNode", command: bindFixed(this.deleteNode, this, node) }
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    showInfoTip: function(infoTip, target, x, y)
                                  -    {
                                  -        if (!hasClass(target, "nodeValue"))
                                  -            return;
                                  -
                                  -        var targetNode = Firebug.getRepObject(target);
                                  -        if (targetNode && targetNode.nodeType == 1 && targetNode.localName.toUpperCase() == "IMG")
                                  -        {
                                  -            var url = targetNode.src;
                                  -            if (url == this.infoTipURL) // This state cleared in hide()
                                  -                return true;
                                  -
                                  -            this.infoTipURL = url;
                                  -            return Firebug.InfoTip.populateImageInfoTip(infoTip, url);
                                  -        }
                                  -    },
                                  -
                                  -    getEditor: function(target, value)
                                  -    {
                                  -        if (hasClass(target, "nodeName") || hasClass(target, "nodeValue") || hasClass(target, "nodeBracket"))
                                  -        {
                                  -            if (!this.attrEditor)
                                  -                this.attrEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.attrEditor;
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            // XXXjoe Implement special text node editor
                                  -            if (!this.textEditor)
                                  -                this.textEditor = new AttributeEditor(this.document);
                                  -
                                  -            return this.textEditor;
                                  -        }
                                  -    },
                                  -
                                  -    getInspectorVars: function()
                                  -    {
                                  -        var vars = {};
                                  -        for (var i=0; i<2; i++)
                                  -            vars["$"+i] = this.inspectorHistory[i];
                                  -
                                  -        return vars;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.HTMLPanel.CompleteElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox open $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"},
                                  -                FOR("child", "$object|childIterator",
                                  -                    TAG("$child|getNodeTag", {object: "$child"})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeCloseLabel", role:"presentation"},
                                  -                "&lt;/",
                                  -                SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                "&gt;"
                                  -             )
                                  -        ),
                                  -
                                  -    getNodeTag: function(node)
                                  -    {
                                  -        return getNodeTag(node, true);
                                  -    },
                                  -
                                  -    childIterator: function(node)
                                  -    {
                                  -        if (node.contentDocument)
                                  -            return [node.contentDocument.documentElement];
                                  -
                                  -        if (Firebug.showWhitespaceNodes)
                                  -            return cloneArray(node.childNodes);
                                  -        else
                                  -        {
                                  -            var nodes = [];
                                  -            for (var child = node.firstChild; child; child = child.nextSibling)
                                  -            {
                                  -                if (child.nodeType != 3 || !isWhitespaceText(child))
                                  -                    nodes.push(child);
                                  -            }
                                  -            return nodes;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.SoloElement = domplate(Firebug.HTMLPanel.CompleteElement,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "soloElement", onmousedown: "$onMouseDown"},
                                  -            Firebug.HTMLPanel.CompleteElement.tag
                                  -        ),
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -            {
                                  -                var panel = Firebug.getElementPanel(child);
                                  -                Firebug.chrome.select(child.repObject);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.HTMLPanel.Element = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox containerNodeBox $object|getHidden repIgnore", _repObject: "$object", role :"presentation"},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                IMG({"class": "twisty", role: "presentation"}),
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem', 'aria-expanded' : 'false'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            ),
                                  -            DIV({"class": "nodeChildBox", role :"group"}),
                                  -            DIV({"class": "nodeCloseLabel", role : "presentation"},
                                  -                SPAN({"class": "nodeCloseLabelBox repTarget"},
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -             )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.TextElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox textNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;"),
                                  -                    SPAN({"class": "nodeText editable"}, "$object|getNodeText"),
                                  -                    "&lt;/",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    "&gt;"
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.EmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.XEmptyElement = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox emptyNodeBox $object|getHidden repIgnore", _repObject: "$object", role : 'presentation'},
                                  -            DIV({"class": "nodeLabel", role: "presentation"},
                                  -                SPAN({"class": "nodeLabelBox repTarget", role : 'treeitem'},
                                  -                    "&lt;",
                                  -                    SPAN({"class": "nodeTag"}, "$object.localName|toLowerCase"),
                                  -                    FOR("attr", "$object|attrIterator", AttrTag),
                                  -                    SPAN({"class": "nodeBracket editable insertBefore"}, "/&gt;")
                                  -                )
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -Firebug.HTMLPanel.AttrNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag: AttrTag
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.TextNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue")
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.WhitespaceNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            FOR("char", "$object|charIterator",
                                  -                    SPAN({"class": "nodeText nodeWhiteSpace editable"}, "$char")
                                  -                    )
                                  -        ),
                                  -    charIterator: function(node)
                                  -    {
                                  -        var str = node.nodeValue;
                                  -        var arr = [];
                                  -        for(var i = 0; i < str.length; i++)
                                  -        {
                                  -            // http://www.w3.org/TR/html401/struct/text.html
                                  -            var char = str[i];
                                  -            switch(char)
                                  -            {
                                  -            case ' ': arr[i] = ' ';break;
                                  -            case '\t': arr[i] = '\\t';break;
                                  -            case '\n': arr[i] = '\\n';break;
                                  -            case '\u200B': arr[i] = '\\u200B';break;  // Zero width space http://www.fileformat.info/info/unicode/char/200b/index.htm
                                  -            default: arr[i] = '?'; break;
                                  -            }
                                  -        }
                                  -        return arr;
                                  -    }
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CDATANode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            "&lt;![CDATA[",
                                  -            SPAN({"class": "nodeText editable"}, "$object.nodeValue"),
                                  -            "]]&gt;"
                                  -        )
                                  -}),
                                  -
                                  -Firebug.HTMLPanel.CommentNode = domplate(FirebugReps.Element,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "nodeBox", _repObject: "$object"},
                                  -            DIV({"class": "nodeComment editable"},
                                  -                "&lt;!--$object.nodeValue--&gt;"
                                  -            )
                                  -        )
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// AttributeEditor
                                  -
                                  -function AttributeEditor(doc)
                                  -{
                                  -    this.initializeInline(doc);
                                  -}
                                  -/*
                                  -AttributeEditor.prototype = domplate(Firebug.InlineEditor.prototype,
                                  -{
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        var element = Firebug.getRepObject(target);
                                  -        if (!element)
                                  -            return;
                                  -
                                  -        target.innerHTML = escapeHTML(value);
                                  -
                                  -        if (hasClass(target, "nodeName"))
                                  -        {
                                  -            if (value != previousValue)
                                  -                element.removeAttribute(previousValue);
                                  -
                                  -            if (value)
                                  -            {
                                  -                var attrValue = getNextByClass(target, "nodeValue").textContent;
                                  -                element.setAttribute(value, attrValue);
                                  -            }
                                  -            else
                                  -                element.removeAttribute(value);
                                  -        }
                                  -        else if (hasClass(target, "nodeValue"))
                                  -        {
                                  -            var attrName = getPreviousByClass(target, "nodeName").textContent;
                                  -            element.setAttribute(attrName, value);
                                  -        }
                                  -        else if (hasClass(target, "nodeText"))
                                  -        {
                                  -            if (element instanceof Element)
                                  -                element.innerHTML = value;
                                  -            else
                                  -                element.nodeValue = value;
                                  -        }
                                  -
                                  -        //this.panel.markChange();
                                  -    },
                                  -
                                  -    advanceToNext: function(target, charCode)
                                  -    {
                                  -        if (charCode == 61 && hasClass(target, "nodeName"))
                                  -            return true;
                                  -    },
                                  -
                                  -    insertNewRow: function(target, insertWhere)
                                  -    {
                                  -        var emptyAttr = {nodeName: "", nodeValue: ""};
                                  -        var sibling = insertWhere == "before" ? target.previousSibling : target;
                                  -
                                  -        return AttrTag.insertAfter({attr: emptyAttr}, sibling);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getAutoCompleteRange: function(value, offset)
                                  -    {
                                  -    },
                                  -
                                  -    getAutoCompleteList: function(preExpr, expr, postExpr)
                                  -    {
                                  -    }
                                  -});
                                  -/**/
                                  -// ************************************************************************************************
                                  -// HTMLEditor
                                  -
                                  -function HTMLEditor(doc)
                                  -{
                                  -    this.box = this.tag.replace({}, doc, this);
                                  -    this.input = this.box.firstChild;
                                  -
                                  -    this.multiLine = true;
                                  -    this.tabNavigation = false;
                                  -    this.arrowCompletion = false;
                                  -}
                                  -
                                  -HTMLEditor.prototype = domplate(Firebug.BaseEditor,
                                  -{
                                  -    tag: DIV(
                                  -        TEXTAREA({"class": "htmlEditor fullPanelEditor", oninput: "$onInput"})
                                  -    ),
                                  -
                                  -    getValue: function()
                                  -    {
                                  -        return this.input.value;
                                  -    },
                                  -
                                  -    setValue: function(value)
                                  -    {
                                  -        return this.input.value = value;
                                  -    },
                                  -
                                  -    show: function(target, panel, value, textSize, targetSize)
                                  -    {
                                  -        this.target = target;
                                  -        this.panel = panel;
                                  -        this.editingElements = [target.repObject, null];
                                  -
                                  -        this.panel.panelNode.appendChild(this.box);
                                  -
                                  -        this.input.value = value;
                                  -        this.input.focus();
                                  -
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", true);
                                  -    },
                                  -
                                  -    hide: function()
                                  -    {
                                  -        var command = Firebug.chrome.$("cmd_toggleHTMLEditing");
                                  -        command.setAttribute("checked", false);
                                  -
                                  -        this.panel.panelNode.removeChild(this.box);
                                  -
                                  -        delete this.editingElements;
                                  -        delete this.target;
                                  -        delete this.panel;
                                  -    },
                                  -
                                  -    saveEdit: function(target, value, previousValue)
                                  -    {
                                  -        // Remove all of the nodes in the last range we created, except for
                                  -        // the first one, because setOuterHTML will replace it
                                  -        var first = this.editingElements[0], last = this.editingElements[1];
                                  -        if (last && last != first)
                                  -        {
                                  -            for (var child = first.nextSibling; child;)
                                  -            {
                                  -                var next = child.nextSibling;
                                  -                child.parentNode.removeChild(child);
                                  -                if (child == last)
                                  -                    break;
                                  -                else
                                  -                    child = next;
                                  -            }
                                  -        }
                                  -
                                  -        // Make sure that we create at least one node here, even if it's just
                                  -        // an empty space, because this code depends on having something to replace
                                  -        if (!value)
                                  -            value = " ";
                                  -
                                  -        if (this.innerEditMode)
                                  -            this.editingElements[0].innerHTML = value;
                                  -        else
                                  -            this.editingElements = setOuterHTML(this.editingElements[0], value);
                                  -    },
                                  -
                                  -    endEditing: function()
                                  -    {
                                  -        //this.panel.markChange();
                                  -        return true;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInput: function()
                                  -    {
                                  -        Firebug.Editor.update();
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getEmptyElementTag(node)
                                  -{
                                  -    if (node.ownerDocument.documentElement.namespaceURI == "http://www.w3.org/1999/xhtml")
                                  -        return Firebug.HTMLPanel.XEmptyElement.tag;
                                  -    else
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getNodeTag(node, expandAll)
                                  -{
                                  -    if (node instanceof Element)
                                  -    {
                                  -        if (node instanceof HTMLAppletElement)
                                  -            return getEmptyElementTag(node);
                                  -        else if (node.firebugIgnore)
                                  -            return null;
                                  -        else if (isContainerElement(node))
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -        else if (isEmptyElement(node))
                                  -            return getEmptyElementTag(node);
                                  -        else if (hasNoElementChildren(node))
                                  -            return Firebug.HTMLPanel.TextElement.tag;
                                  -        else
                                  -            return expandAll ? Firebug.HTMLPanel.CompleteElement.tag : Firebug.HTMLPanel.Element.tag;
                                  -    }
                                  -    else if (node instanceof Text)
                                  -        return Firebug.showWhitespaceNodes ? Firebug.HTMLPanel.WhitespaceNode.tag : Firebug.HTMLPanel.TextNode.tag;
                                  -    else if (node instanceof CDATASection)
                                  -        return Firebug.HTMLPanel.CDATANode.tag;
                                  -    else if (node instanceof Comment && (Firebug.showCommentNodes || expandAll))
                                  -        return Firebug.HTMLPanel.CommentNode.tag;
                                  -    else if (node instanceof SourceText)
                                  -        return FirebugReps.SourceText.tag;
                                  -    else
                                  -        return FirebugReps.Nada.tag;
                                  -}
                                  -
                                  -function getNodeBoxTag(nodeBox)
                                  -{
                                  -    var re = /([^\s]+)NodeBox/;
                                  -    var m = re.exec(nodeBox.className);
                                  -    if (!m)
                                  -        return null;
                                  -
                                  -    var nodeBoxType = m[1];
                                  -    if (nodeBoxType == "container")
                                  -        return Firebug.HTMLPanel.Element.tag;
                                  -    else if (nodeBoxType == "text")
                                  -        return Firebug.HTMLPanel.TextElement.tag;
                                  -    else if (nodeBoxType == "empty")
                                  -        return Firebug.HTMLPanel.EmptyElement.tag;
                                  -}
                                  -
                                  -function getSourceHref(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && element.src)
                                  -        return element.src;
                                  -    else if (tag == "link")
                                  -        return element.href;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function getSourceText(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    if (tag == "script" && !element.src)
                                  -        return element.textContent;
                                  -    else if (tag == "style")
                                  -        return element.textContent;
                                  -    else
                                  -        return null;
                                  -}
                                  -
                                  -function isContainerElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    switch (tag)
                                  -    {
                                  -        case "script":
                                  -        case "style":
                                  -        case "iframe":
                                  -        case "frame":
                                  -        case "tabbrowser":
                                  -        case "browser":
                                  -            return true;
                                  -        case "link":
                                  -            return element.getAttribute("rel") == "stylesheet";
                                  -    }
                                  -    return false;
                                  -}
                                  -
                                  -var hasNoElementChildren = function hasNoElementChildren(element)
                                  -{
                                  -    if (element.childElementCount != 0)  // FF 3.5+
                                  -        return false;
                                  -
                                  -    // https://developer.mozilla.org/en/XBL/XBL_1.0_Reference/DOM_Interfaces
                                  -    // TODO: xxxpedro
                                  -    /*
                                  -    if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
                                  -    {
                                  -        var anonChildren = element.ownerDocument.getAnonymousNodes(element);
                                  -        if (anonChildren)
                                  -        {
                                  -            for (var i = 0; i < anonChildren.length; i++)
                                  -            {
                                  -                if (anonChildren[i].nodeType == 1)
                                  -                    return false;
                                  -            }
                                  -        }
                                  -    }
                                  -    /**/
                                  -    if (FBTrace.DBG_HTML)
                                  -        FBTrace.sysout("hasNoElementChildren TRUE "+element.tagName, element);
                                  -    return true;
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype isWhitespaceText
                                  -var isWhitespaceText = function isWhitespaceText(node)
                                  -{
                                  -    if (node instanceof HTMLAppletElement)
                                  -        return false;
                                  -    return node.nodeType == 3 && isWhitespace(node.nodeValue);
                                  -}
                                  -
                                  -// Duplicate of HTMLPanel.prototype TODO: create a namespace for all of these functions so
                                  -// they can be called outside of this file.
                                  -function isSourceElement(element)
                                  -{
                                  -    var tag = element.localName.toLowerCase();
                                  -    return tag == "script" || tag == "link" || tag == "style"
                                  -        || (tag == "link" && element.getAttribute("rel") == "stylesheet");
                                  -}
                                  -
                                  -function isEmptyElement(element)
                                  -{
                                  -    // XXXjjb the commented code causes issues 48, 240, and 244. I think the lines should be deleted.
                                  -    // If the DOM has whitespace children, then the element is not empty even if
                                  -    // we decide not to show the whitespace in the UI.
                                  -
                                  -    // XXXsroussey reverted above but added a check for self closing tags
                                  -    if (Firebug.showWhitespaceNodes)
                                  -    {
                                  -        return !element.firstChild && isSelfClosing(element);
                                  -    }
                                  -    else
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return false;
                                  -        }
                                  -    }
                                  -    return isSelfClosing(element);
                                  -}
                                  -
                                  -function findNextSibling(node)
                                  -{
                                  -    if (Firebug.showWhitespaceNodes)
                                  -        return node.nextSibling;
                                  -    else
                                  -    {
                                  -        // only return a non-whitespace node
                                  -        for (var child = node.nextSibling; child; child = child.nextSibling)
                                  -        {
                                  -            if (!isWhitespaceText(child))
                                  -                return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function findNodeAttrBox(objectNodeBox, attrName)
                                  -{
                                  -    var child = objectNodeBox.firstChild.lastChild.firstChild;
                                  -    for (; child; child = child.nextSibling)
                                  -    {
                                  -        if (hasClass(child, "nodeAttr") && child.childNodes[1].firstChild
                                  -            && child.childNodes[1].firstChild.nodeValue == attrName)
                                  -        {
                                  -            return child;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function getTextElementTextBox(nodeBox)
                                  -{
                                  -    var nodeLabelBox = nodeBox.firstChild.lastChild;
                                  -    return getChildByClass(nodeLabelBox, "nodeText");
                                  -}
                                  -
                                  -function findElementNameBox(objectNodeBox)
                                  -{
                                  -    return objectNodeBox.getElementsByClassName("nodeTag")[0];
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function NodeSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    var walker = new DOMWalker(doc, doc.documentElement);
                                  -    var re = new ReversibleRegExp(text, "m");
                                  -    var matchCount = 0;
                                  -
                                  -    this.find = function(reverse, caseSensitive)
                                  -    {
                                  -        var match = this.findNextMatch(reverse, caseSensitive);
                                  -        if (match)
                                  -        {
                                  -            this.lastMatch = match;
                                  -            ++matchCount;
                                  -
                                  -            var node = match.node;
                                  -            var nodeBox = this.openToNode(node, match.isValue);
                                  -
                                  -            this.selectMatched(nodeBox, node, match, reverse);
                                  -        }
                                  -        else if (matchCount)
                                  -            return true;
                                  -        else
                                  -        {
                                  -            this.noMatch = true;
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchNoMatchFound', [panelNode.ownerPanel, text]);
                                  -        }
                                  -    };
                                  -
                                  -    this.reset = function()
                                  -    {
                                  -        delete this.lastMatch;
                                  -        delete this.lastRange;
                                  -    };
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -
                                  -        var innerMatch = this.findNextInnerMatch(reverse, caseSensitive);
                                  -        if (innerMatch)
                                  -            return innerMatch;
                                  -        else
                                  -            this.reset();
                                  -
                                  -        function walkNode() { return reverse ? walker.previousNode() : walker.nextNode(); }
                                  -
                                  -        var node;
                                  -        while (node = walkNode())
                                  -        {
                                  -            if (node.nodeType == Node.TEXT_NODE)
                                  -            {
                                  -                if (isSourceElement(node.parentNode))
                                  -                    continue;
                                  -            }
                                  -
                                  -            var m = this.checkNode(node, reverse, caseSensitive);
                                  -            if (m)
                                  -                return m;
                                  -        }
                                  -    };
                                  -
                                  -    this.findNextInnerMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (this.lastRange)
                                  -        {
                                  -            var lastMatchNode = this.lastMatch.node;
                                  -            var lastReMatch = this.lastMatch.match;
                                  -            var m = re.exec(lastReMatch.input, reverse, lastReMatch.caseSensitive, lastReMatch);
                                  -            if (m)
                                  -            {
                                  -                return {
                                  -                    node: lastMatchNode,
                                  -                    isValue: this.lastMatch.isValue,
                                  -                    match: m
                                  -                };
                                  -            }
                                  -
                                  -            // May need to check the pair for attributes
                                  -            if (lastMatchNode.nodeType == Node.ATTRIBUTE_NODE
                                  -                    && this.lastMatch.isValue == reverse)
                                  -            {
                                  -                return this.checkNode(lastMatchNode, reverse, caseSensitive, 1);
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.checkNode = function(node, reverse, caseSensitive, firstStep)
                                  -    {
                                  -        var checkOrder;
                                  -        if (node.nodeType != Node.TEXT_NODE)
                                  -        {
                                  -            var nameCheck = { name: "nodeName", isValue: false, caseSensitive: false };
                                  -            var valueCheck = { name: "nodeValue", isValue: true, caseSensitive: caseSensitive };
                                  -            checkOrder = reverse ? [ valueCheck, nameCheck ] : [ nameCheck, valueCheck ];
                                  -        }
                                  -        else
                                  -        {
                                  -            checkOrder = [{name: "nodeValue", isValue: false, caseSensitive: caseSensitive }];
                                  -        }
                                  -
                                  -        for (var i = firstStep || 0; i < checkOrder.length; i++) {
                                  -            var m = re.exec(node[checkOrder[i].name], reverse, checkOrder[i].caseSensitive);
                                  -            if (m)
                                  -                return {
                                  -                    node: node,
                                  -                    isValue: checkOrder[i].isValue,
                                  -                    match: m
                                  -                };
                                  -        }
                                  -    };
                                  -
                                  -    this.openToNode = function(node, isValue)
                                  -    {
                                  -        if (node.nodeType == Node.ELEMENT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            return findElementNameBox(nodeBox);
                                  -        }
                                  -        else if (node.nodeType == Node.ATTRIBUTE_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node.ownerElement);
                                  -            if (nodeBox)
                                  -            {
                                  -                var attrNodeBox = findNodeAttrBox(nodeBox, node.nodeName);
                                  -                if (isValue)
                                  -                    return getChildByClass(attrNodeBox, "nodeValue");
                                  -                else
                                  -                    return getChildByClass(attrNodeBox, "nodeName");
                                  -            }
                                  -        }
                                  -        else if (node.nodeType == Node.TEXT_NODE)
                                  -        {
                                  -            var nodeBox = ioBox.openToObject(node);
                                  -            if (nodeBox)
                                  -                return nodeBox;
                                  -            else
                                  -            {
                                  -                var nodeBox = ioBox.openToObject(node.parentNode);
                                  -                if (hasClass(nodeBox, "textNodeBox"))
                                  -                    nodeBox = getTextElementTextBox(nodeBox);
                                  -                return nodeBox;
                                  -            }
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            var reMatch = match.match;
                                  -            this.selectNodeText(nodeBox, node, reMatch[0], reMatch.index, reverse, reMatch.caseSensitive);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -
                                  -    this.selectNodeText = function(nodeBox, node, text, index, reverse, caseSensitive)
                                  -    {
                                  -        var row, range;
                                  -
                                  -        // If we are still inside the same node as the last search, advance the range
                                  -        // to the next substring within that node
                                  -        if (nodeBox == this.lastNodeBox)
                                  -        {
                                  -            var target = this.lastRange.startContainer;
                                  -            range = this.lastRange = panelNode.ownerDocument.createRange();
                                  -            range.setStart(target, index);
                                  -            range.setEnd(target, index+text.length);
                                  -
                                  -            row = this.lastRow;
                                  -        }
                                  -
                                  -        if (!range)
                                  -        {
                                  -            // Search for the first instance of the string inside the node
                                  -            function findRow(node) { return node.nodeType == 1 ? node : node.parentNode; }
                                  -            var search = new TextSearch(nodeBox, findRow);
                                  -            row = this.lastRow = search.find(text, reverse, caseSensitive);
                                  -            range = this.lastRange = search.range;
                                  -            this.lastNodeBox = nodeBox;
                                  -        }
                                  -
                                  -        if (row)
                                  -        {
                                  -            var sel = panelNode.ownerDocument.defaultView.getSelection();
                                  -            sel.removeAllRanges();
                                  -            sel.addRange(range);
                                  -
                                  -            scrollIntoCenterView(row, panelNode);
                                  -            return true;
                                  -        }
                                  -    };
                                  -
                                  -}
                                  -
                                  -//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function SelectorSearch(text, doc, panelNode, ioBox)
                                  -{
                                  -    this.parent = new NodeSearch(text, doc, panelNode, ioBox);
                                  -
                                  -    this.find = this.parent.find;
                                  -    this.reset = this.parent.reset;
                                  -    this.openToNode = this.parent.openToNode;
                                  -
                                  -    try
                                  -    {
                                  -        // http://dev.w3.org/2006/webapi/selectors-api/
                                  -        this.matchingNodes = doc.querySelectorAll(text);
                                  -        this.matchIndex = 0;
                                  -    }
                                  -    catch(exc)
                                  -    {
                                  -        FBTrace.sysout("SelectorSearch FAILS "+exc, exc);
                                  -    }
                                  -
                                  -    this.findNextMatch = function(reverse, caseSensitive)
                                  -    {
                                  -        if (!this.matchingNodes || !this.matchingNodes.length)
                                  -            return undefined;
                                  -
                                  -        if (reverse)
                                  -        {
                                  -            if (this.matchIndex > 0)
                                  -                return { node: this.matchingNodes[this.matchIndex--], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -        else
                                  -        {
                                  -            if (this.matchIndex < this.matchingNodes.length)
                                  -                return { node: this.matchingNodes[this.matchIndex++], isValue: false, match: "?XX?"};
                                  -            else
                                  -                return undefined;
                                  -        }
                                  -    };
                                  -
                                  -    this.selectMatched = function(nodeBox, node, match, reverse)
                                  -    {
                                  -        setTimeout(bindFixed(function()
                                  -        {
                                  -            ioBox.select(node, true, true);
                                  -            dispatch([Firebug.A11yModel], 'onHTMLSearchMatchFound', [panelNode.ownerPanel, match]);
                                  -        }, this));
                                  -    };
                                  -}
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerPanel(Firebug.HTMLPanel);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/insideOutBox.js b/tags/firebug1.3a5/content/firebug/insideOutBox.js
                                  deleted file mode 100644
                                  index 5f865d59..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/insideOutBox.js
                                  +++ /dev/null
                                  @@ -1,561 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -/**
                                  - * View interface used to populate an InsideOutBox object.
                                  - *
                                  - * All views must implement this interface (directly or via duck typing).
                                  - */
                                  -FBL.InsideOutBoxView = {
                                  -    /**
                                  -     * Retrieves the parent object for a given child object.
                                  -     */
                                  -    getParentObject: function(child) {},
                                  -
                                  -    /**
                                  -     * Retrieves a given child node.
                                  -     *
                                  -     * If both index and previousSibling are passed, the implementation
                                  -     * may assume that previousSibling will be the return for getChildObject
                                  -     * with index-1.
                                  -     */
                                  -    getChildObject: function(parent, index, previousSibling) {},
                                  -
                                  -    /**
                                  -     * Renders the HTML representation of the object. Should return an HTML
                                  -     * object which will be displayed to the user.
                                  -     */
                                  -    createObjectBox: function(object, isRoot) {}
                                  -};
                                  -
                                  -/**
                                  - * Creates a tree based on objects provided by a separate "view" object.
                                  - *
                                  - * Construction uses an "inside-out" algorithm, meaning that the view's job is first
                                  - * to tell us the ancestry of each object, and secondarily its descendants.
                                  - */
                                  -FBL.InsideOutBox = function(view, box)
                                  -{
                                  -    this.view = view;
                                  -    this.box = box;
                                  -
                                  -    this.rootObject = null;
                                  -
                                  -    this.rootObjectBox = null;
                                  -    this.selectedObjectBox = null;
                                  -    this.highlightedObjectBox = null;
                                  -
                                  -    this.onMouseDown = bind(this.onMouseDown, this);
                                  -    
                                  -    addEvent(box, "mousedown", this.onMouseDown);
                                  -    // TODO: xxxpedro event
                                  -    //box.addEventListener("mousedown", this.onMouseDown, false);
                                  -};
                                  -
                                  -InsideOutBox.prototype =
                                  -{
                                  -    destroy: function()
                                  -    {
                                  -        removeEvent(box, "mousedown", this.onMouseDown);
                                  -        // TODO: xxxpedro event
                                  -        //this.box.removeEventListener("mousedown", this.onMouseDown, false);
                                  -    },
                                  -
                                  -    highlight: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.highlightObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openObject: function(object)
                                  -    {
                                  -        var firstChild = this.view.getChildObject(object, 0);
                                  -        if (firstChild)
                                  -            object = firstChild;
                                  -
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    openToObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.openObjectBox(objectBox);
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    select: function(object, makeBoxVisible, forceOpen, noScrollIntoView)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.select object:", object);
                                  -        var objectBox = this.createObjectBox(object);
                                  -        this.selectObjectBox(objectBox, forceOpen);
                                  -        if (makeBoxVisible)
                                  -        {
                                  -            this.openObjectBox(objectBox);
                                  -            if (!noScrollIntoView)
                                  -                scrollIntoCenterView(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    expandObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    contractObject: function(object)
                                  -    {
                                  -        var objectBox = this.createObjectBox(object);
                                  -        if (objectBox)
                                  -            this.contractObjectBox(objectBox);
                                  -    },
                                  -
                                  -    highlightObjectBox: function(objectBox)
                                  -    {
                                  -        if (this.highlightedObjectBox)
                                  -        {
                                  -            removeClass(this.highlightedObjectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(this.highlightedObjectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                removeClass(highlightedBox, "highlightOpen");
                                  -        }
                                  -
                                  -        this.highlightedObjectBox = objectBox;
                                  -
                                  -        if (objectBox)
                                  -        {
                                  -            setClass(objectBox, "highlighted");
                                  -
                                  -            var highlightedBox = this.getParentObjectBox(objectBox);
                                  -            for (; highlightedBox; highlightedBox = this.getParentObjectBox(highlightedBox))
                                  -                setClass(highlightedBox, "highlightOpen");
                                  -
                                  -           scrollIntoCenterView(objectBox);
                                  -        }
                                  -    },
                                  -
                                  -    selectObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isSelected = this.selectedObjectBox && objectBox == this.selectedObjectBox;
                                  -        if (!isSelected)
                                  -        {
                                  -            removeClass(this.selectedObjectBox, "selected");
                                  -            dispatch([Firebug.A11yModel], 'onObjectBoxUnselected', [this.selectedObjectBox]);
                                  -            this.selectedObjectBox = objectBox;
                                  -
                                  -            if (objectBox)
                                  -            {
                                  -                setClass(objectBox, "selected");
                                  -
                                  -                // Force it open the first time it is selected
                                  -                if (forceOpen)
                                  -                    this.toggleObjectBox(objectBox, true);
                                  -            }
                                  -        }
                                  -        dispatch([Firebug.A11yModel], 'onObjectBoxSelected', [objectBox]);
                                  -    },
                                  -
                                  -    openObjectBox: function(objectBox)
                                  -    {
                                  -        if (objectBox)
                                  -        {
                                  -            // Set all of the node's ancestors to be permanently open
                                  -            var parentBox = this.getParentObjectBox(objectBox);
                                  -            var labelBox;
                                  -            for (; parentBox; parentBox = this.getParentObjectBox(parentBox))
                                  -            {
                                  -                setClass(parentBox, "open");
                                  -                labelBox = getElementByClass(parentBox, 'nodeLabelBox');
                                  -                if (labelBox)
                                  -                    labelBox.setAttribute('aria-expanded', 'true')
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    expandObjectBox: function(objectBox)
                                  -    {
                                  -        var nodeChildBox = this.getChildObjectBox(objectBox);
                                  -        if (!nodeChildBox)
                                  -            return;
                                  -
                                  -        if (!objectBox.populated)
                                  -        {
                                  -            var firstChild = this.view.getChildObject(objectBox.repObject, 0);
                                  -            this.populateChildBox(firstChild, nodeChildBox);
                                  -        }
                                  -        var labelBox = getElementByClass(objectBox, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'true');
                                  -        setClass(objectBox, "open");
                                  -    },
                                  -
                                  -    contractObjectBox: function(objectBox)
                                  -    {
                                  -        removeClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', 'false');
                                  -    },
                                  -
                                  -    toggleObjectBox: function(objectBox, forceOpen)
                                  -    {
                                  -        var isOpen = hasClass(objectBox, "open");
                                  -        var nodeLabel = getElementByClass(objectBox, "nodeLabel");
                                  -        var labelBox = getElementByClass(nodeLabel, 'nodeLabelBox');
                                  -        if (labelBox)
                                  -            labelBox.setAttribute('aria-expanded', isOpen);
                                  -        if (!forceOpen && isOpen)
                                  -            this.contractObjectBox(objectBox);
                                  -
                                  -        else if (!isOpen)
                                  -            this.expandObjectBox(objectBox);
                                  -    },
                                  -
                                  -    getNextObjectBox: function(objectBox)
                                  -    {
                                  -        return findNext(objectBox, isVisibleTarget, false, this.box);
                                  -    },
                                  -
                                  -    getPreviousObjectBox: function(objectBox)
                                  -    {
                                  -        return findPrevious(objectBox, isVisibleTarget, true, this.box);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings.
                                  -     */
                                  -    createObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        this.rootObject = this.getRootNode(object);
                                  -
                                  -        // Get or create all of the boxes for the target and its ancestors
                                  -        var objectBox = this.createObjectBoxes(object, this.rootObject);
                                  -
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBox for object="+formatNode(object)+" got objectBox="+formatNode(objectBox), objectBox);
                                  -        if (!objectBox)
                                  -            return null;
                                  -        else if (object == this.rootObject)
                                  -            return objectBox;
                                  -        else
                                  -            return this.populateChildBox(object, objectBox.parentNode);
                                  -    },
                                  -
                                  -    /**
                                  -     * Creates all of the boxes for an object, its ancestors, and siblings up to a root.
                                  -     */
                                  -    createObjectBoxes: function(object, rootObject)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("\n----\ninsideOutBox.createObjectBoxes("+formatNode(object)+", "+formatNode(rootObject)+")\n");
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == rootObject)
                                  -        {
                                  -            if (!this.rootObjectBox || this.rootObjectBox.repObject != rootObject)
                                  -            {
                                  -                if (this.rootObjectBox)
                                  -                {
                                  -                    try {
                                  -                        this.box.removeChild(this.rootObjectBox);
                                  -                    } catch (exc) {
                                  -                        if (FBTrace.DBG_HTML)
                                  -                            FBTrace.sysout(" this.box.removeChild(this.rootObjectBox) FAILS "+this.box+" must not contain "+this.rootObjectBox+"\n");
                                  -                    }
                                  -                }
                                  -
                                  -                this.highlightedObjectBox = null;
                                  -                this.selectedObjectBox = null;
                                  -                this.rootObjectBox = this.view.createObjectBox(object, true);
                                  -                this.box.appendChild(this.rootObjectBox);
                                  -            }
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes("+formatNode(object)+","+formatNode(rootObject)+") rootObjectBox: "
                                  -                                            +this.rootObjectBox, object);
                                  -            }
                                  -            return this.rootObjectBox;
                                  -        }
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -
                                  -            if (FBTrace.DBG_HTML)
                                  -            {
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getObjectPath(object) ", getObjectPath(object, this.view))
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes view.getParentObject("+formatNode(object)+")=parentNode: "+formatNode(parentNode), parentNode);
                                  -            }
                                  -
                                  -            var parentObjectBox = this.createObjectBoxes(parentNode, rootObject);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes createObjectBoxes("+formatNode(parentNode)+","+formatNode(rootObject)+"):parentObjectBox: "+formatNode(parentObjectBox), parentObjectBox);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes getChildObjectBox("+formatNode(parentObjectBox)+")= parentChildBox: "+formatNode(parentChildBox)+"\n");
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            var childObjectBox = this.findChildObjectBox(parentChildBox, object);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout("insideOutBox.createObjectBoxes findChildObjectBox("+formatNode(parentChildBox)+","+formatNode(object)+"): childObjectBox: "+formatNode(childObjectBox), childObjectBox);
                                  -            return childObjectBox
                                  -                ? childObjectBox
                                  -                : this.populateChildBox(object, parentChildBox);
                                  -        }
                                  -    },
                                  -
                                  -    findObjectBox: function(object)
                                  -    {
                                  -        if (!object)
                                  -            return null;
                                  -
                                  -        if (object == this.rootObject)
                                  -            return this.rootObjectBox;
                                  -        else
                                  -        {
                                  -            var parentNode = this.view.getParentObject(object);
                                  -            var parentObjectBox = this.findObjectBox(parentNode);
                                  -            if (!parentObjectBox)
                                  -                return null;
                                  -
                                  -            var parentChildBox = this.getChildObjectBox(parentObjectBox);
                                  -            if (!parentChildBox)
                                  -                return null;
                                  -
                                  -            return this.findChildObjectBox(parentChildBox, object);
                                  -        }
                                  -    },
                                  -
                                  -    appendChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var childBox = this.getChildObjectBox(parentNodeBox);
                                  -            childBox.appendChild(objectBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    insertChildBoxBefore: function(parentNodeBox, repObject, nextSibling)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            return objectBox;
                                  -
                                  -        objectBox = this.view.createObjectBox(repObject);
                                  -        if (objectBox)
                                  -        {
                                  -            var siblingBox = this.findChildObjectBox(childBox, nextSibling);
                                  -            childBox.insertBefore(objectBox, siblingBox);
                                  -        }
                                  -        return objectBox;
                                  -    },
                                  -
                                  -    removeChildBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        var childBox = this.getChildObjectBox(parentNodeBox);
                                  -        var objectBox = this.findChildObjectBox(childBox, repObject);
                                  -        if (objectBox)
                                  -            childBox.removeChild(objectBox);
                                  -    },
                                  -
                                  -    populateChildBox: function(repObject, nodeChildBox)  // We want all children of the parent of repObject.
                                  -    {
                                  -        if (!repObject)
                                  -            return null;
                                  -
                                  -        var parentObjectBox = getAncestorByClass(nodeChildBox, "nodeBox");
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("+++insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") parentObjectBox.populated "+parentObjectBox.populated+"\n");
                                  -        if (parentObjectBox.populated)
                                  -            return this.findChildObjectBox(nodeChildBox, repObject);
                                  -
                                  -        var lastSiblingBox = this.getChildObjectBox(nodeChildBox);
                                  -        var siblingBox = nodeChildBox.firstChild;
                                  -        var targetBox = null;
                                  -
                                  -        var view = this.view;
                                  -
                                  -        var targetSibling = null;
                                  -        var parentNode = view.getParentObject(repObject);
                                  -        for (var i = 0; 1; ++i)
                                  -        {
                                  -            targetSibling = view.getChildObject(parentNode, i, targetSibling);
                                  -            if (!targetSibling)
                                  -                break;
                                  -
                                  -            // Check if we need to start appending, or continue to insert before
                                  -            if (lastSiblingBox && lastSiblingBox.repObject == targetSibling)
                                  -                lastSiblingBox = null;
                                  -
                                  -            if (!siblingBox || siblingBox.repObject != targetSibling)
                                  -            {
                                  -                var newBox = view.createObjectBox(targetSibling);
                                  -                if (newBox)
                                  -                {
                                  -                    if (lastSiblingBox)
                                  -                        nodeChildBox.insertBefore(newBox, lastSiblingBox);
                                  -                    else
                                  -                        nodeChildBox.appendChild(newBox);
                                  -                }
                                  -
                                  -                siblingBox = newBox;
                                  -            }
                                  -
                                  -            if (targetSibling == repObject)
                                  -                targetBox = siblingBox;
                                  -
                                  -            if (siblingBox && siblingBox.repObject == targetSibling)
                                  -                siblingBox = siblingBox.nextSibling;
                                  -        }
                                  -
                                  -        if (targetBox)
                                  -            parentObjectBox.populated = true;
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("---insideOutBox.populateChildBox("+(repObject.localName?repObject.localName:repObject)+") targetBox "+targetBox+"\n");
                                  -
                                  -        return targetBox;
                                  -    },
                                  -
                                  -    getParentObjectBox: function(objectBox)
                                  -    {
                                  -        var parent = objectBox.parentNode ? objectBox.parentNode.parentNode : null;
                                  -        return parent && parent.repObject ? parent : null;
                                  -    },
                                  -
                                  -    getChildObjectBox: function(objectBox)
                                  -    {
                                  -        return getElementByClass(objectBox, "nodeChildBox");
                                  -    },
                                  -
                                  -    findChildObjectBox: function(parentNodeBox, repObject)
                                  -    {
                                  -        for (var childBox = parentNodeBox.firstChild; childBox; childBox = childBox.nextSibling)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(
                                  -                    "insideOutBox.findChildObjectBox "
                                  -                    +(childBox.repObject == repObject?"match ":"no match ")
                                  -                    +" childBox.repObject: " + (childBox.repObject && (childBox.repObject.localName || childBox.repObject))
                                  -                    +" repObject: " +(repObject && (repObject.localName || repObject))+"\n", childBox);
                                  -            if (childBox.repObject == repObject)
                                  -                return childBox;
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Determines if the given node is an ancestor of the current root.
                                  -     */
                                  -    isInExistingRoot: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -          FBTrace.sysout("insideOutBox.isInExistingRoot for ", node);
                                  -        var parentNode = node;
                                  -        while (parentNode && parentNode != this.rootObject)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(parentNode.localName+" < ", parentNode);
                                  -            var parentNode = this.view.getParentObject(parentNode);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -        }
                                  -        return parentNode == this.rootObject;
                                  -    },
                                  -
                                  -    getRootNode: function(node)
                                  -    {
                                  -        if (FBTrace.DBG_HTML)
                                  -            FBTrace.sysout("insideOutBox.getRootNode for ", node);
                                  -        while (1)
                                  -        {
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout(node.localName+" < ", node);
                                  -            var parentNode = this.view.getParentObject(node);
                                  -            if (FBTrace.DBG_HTML)
                                  -                FBTrace.sysout((parentNode?" (parent="+parentNode.localName+")":" (null parentNode)"+"\n"), parentNode);
                                  -
                                  -            if (!parentNode)
                                  -                return node;
                                  -            else
                                  -                node = parentNode;
                                  -        }
                                  -        return null;
                                  -    },
                                  -
                                  -    // ********************************************************************************************
                                  -
                                  -    onMouseDown: function(event)
                                  -    {
                                  -        var hitTwisty = false;
                                  -        for (var child = event.target; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "twisty"))
                                  -                hitTwisty = true;
                                  -            else if (child.repObject)
                                  -            {
                                  -                if (hitTwisty)
                                  -                    this.toggleObjectBox(child);
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function isVisibleTarget(node)
                                  -{
                                  -    if (node.repObject && node.repObject.nodeType == Node.ELEMENT_NODE)
                                  -    {
                                  -        for (var parent = node.parentNode; parent; parent = parent.parentNode)
                                  -        {
                                  -            if (hasClass(parent, "nodeChildBox")
                                  -                && !hasClass(parent.parentNode, "open")
                                  -                && !hasClass(parent.parentNode, "highlightOpen"))
                                  -                return false;
                                  -        }
                                  -        return true;
                                  -    }
                                  -}
                                  -
                                  -function formatNode(object)
                                  -{
                                  -    if (object)
                                  -        return (object.localName ? object.localName : object);
                                  -    else
                                  -        return "(null object)";
                                  -}
                                  -
                                  -function getObjectPath(element, aView)
                                  -{
                                  -    var path = [];
                                  -    for (; element; element = aView.getParentObject(element))
                                  -        path.push(element);
                                  -
                                  -    return path;
                                  -}
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/inspector.js b/tags/firebug1.3a5/content/firebug/inspector.js
                                  deleted file mode 100644
                                  index d9e79eca..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/inspector.js
                                  +++ /dev/null
                                  @@ -1,509 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Module
                                  -
                                  -var inspectorTS, inspectorTimer, isInspecting;
                                  -
                                  -Firebug.Inspector =
                                  -{
                                  -    create: function()
                                  -    {
                                  -        offlineFragment = Env.browser.document.createDocumentFragment();
                                  -        
                                  -        createBoxModelInspector();
                                  -        createOutlineInspector();
                                  -    },
                                  -    
                                  -    destroy: function()
                                  -    {
                                  -        destroyBoxModelInspector();
                                  -        destroyOutlineInspector();
                                  -        
                                  -        offlineFragment = null;
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Inspect functions
                                  -    
                                  -    toggleInspect: function()
                                  -    {
                                  -        if (isInspecting)
                                  -        {
                                  -            this.stopInspecting();
                                  -        }
                                  -        else
                                  -        {
                                  -            Firebug.chrome.inspectButton.changeState("pressed");
                                  -            this.startInspecting();
                                  -        }
                                  -    },
                                  -    
                                  -    startInspecting: function()
                                  -    {
                                  -        isInspecting = true;
                                  -        
                                  -        Firebug.chrome.selectPanel("HTML");
                                  -        
                                  -        createInspectorFrame();
                                  -        
                                  -        var size = Firebug.browser.getWindowScrollSize();
                                  -        
                                  -        fbInspectFrame.style.width = size.width + "px";
                                  -        fbInspectFrame.style.height = size.height + "px";
                                  -        
                                  -        //addEvent(Firebug.browser.document.documentElement, "mousemove", Firebug.Inspector.onInspectingBody);
                                  -        
                                  -        addEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        addEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -    },
                                  -    
                                  -    stopInspecting: function()
                                  -    {
                                  -        isInspecting = false;
                                  -        
                                  -        if (outlineVisible) this.hideOutline();
                                  -        removeEvent(fbInspectFrame, "mousemove", Firebug.Inspector.onInspecting);
                                  -        removeEvent(fbInspectFrame, "mousedown", Firebug.Inspector.onInspectingClick);
                                  -        
                                  -        destroyInspectorFrame();
                                  -        
                                  -        Firebug.chrome.inspectButton.restore();
                                  -        
                                  -        if (Firebug.chrome.type == "popup")
                                  -            Firebug.chrome.node.focus();
                                  -    },
                                  -    
                                  -    onInspectingClick: function(e)
                                  -    {
                                  -        fbInspectFrame.style.display = "none";
                                  -        var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -        fbInspectFrame.style.display = "block";
                                  -
                                  -        // Avoid inspecting the outline, and the FirebugUI
                                  -        var id = targ.id;
                                  -        if (id && /^fbOutline\w$/.test(id)) return;
                                  -        if (id == "FirebugUI") return;
                                  -
                                  -        // Avoid looking at text nodes in Opera
                                  -        while (targ.nodeType != 1) targ = targ.parentNode;
                                  -        
                                  -        //Firebug.Console.log(targ);
                                  -        Firebug.Inspector.stopInspecting();
                                  -    },
                                  -    
                                  -    onInspecting: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            fbInspectFrame.style.display = "none";
                                  -            var targ = Firebug.browser.getElementFromPoint(e.clientX, e.clientY);
                                  -            fbInspectFrame.style.display = "block";
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -            {
                                  -                var target = ""+targ[cacheID];
                                  -                var lazySelect = function()
                                  -                {
                                  -                    inspectorTS = new Date().getTime();
                                  -                    
                                  -                    Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -                };
                                  -                
                                  -                if (inspectorTimer)
                                  -                {
                                  -                    clearTimeout(inspectorTimer);
                                  -                    inspectorTimer = null;
                                  -                }
                                  -                
                                  -                if (new Date().getTime() - inspectorTS > 200)
                                  -                    setTimeout(lazySelect, 0)
                                  -                else
                                  -                    inspectorTimer = setTimeout(lazySelect, 300);
                                  -            }
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    // TODO: xxxpedro remove this?
                                  -    onInspectingBody: function(e)
                                  -    {
                                  -        if (new Date().getTime() - lastInspecting > 30)
                                  -        {
                                  -            var targ = e.target;
                                  -    
                                  -            // Avoid inspecting the outline, and the FirebugUI
                                  -            var id = targ.id;
                                  -            if (id && /^fbOutline\w$/.test(id)) return;
                                  -            if (id == "FirebugUI") return;
                                  -            
                                  -            // Avoid looking at text nodes in Opera
                                  -            while (targ.nodeType != 1) targ = targ.parentNode;
                                  -    
                                  -            if (targ.nodeName.toLowerCase() == "body") return;
                                  -    
                                  -            //Firebug.Console.log(e.clientX, e.clientY, targ);
                                  -            Firebug.Inspector.drawOutline(targ);
                                  -            
                                  -            if (targ[cacheID])
                                  -                FBL.Firebug.HTML.selectTreeNode(""+targ[cacheID])
                                  -            
                                  -            lastInspecting = new Date().getTime();
                                  -        }
                                  -    },
                                  -    
                                  -    /**
                                  -     * 
                                  -     *   llttttttrr
                                  -     *   llttttttrr
                                  -     *   ll      rr
                                  -     *   ll      rr
                                  -     *   llbbbbbbrr
                                  -     *   llbbbbbbrr
                                  -     */
                                  -    drawOutline: function(el)
                                  -    {
                                  -        var border = 2;
                                  -        var scrollbarSize = 17;
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollSize = Firebug.browser.getWindowScrollSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var freeHorizontalSpace = scrollPosition.left + windowSize.width - left - width - 
                                  -                (!isIE && scrollSize.height > windowSize.height ? // is *vertical* scrollbar visible
                                  -                 scrollbarSize : 0);
                                  -        
                                  -        var freeVerticalSpace = scrollPosition.top + windowSize.height - top - height -
                                  -                (!isIE && scrollSize.width > windowSize.width ? // is *horizontal* scrollbar visible
                                  -                scrollbarSize : 0);
                                  -        
                                  -        var numVerticalBorders = freeVerticalSpace > 0 ? 2 : 1;
                                  -        
                                  -        var o = outlineElements;
                                  -        var style;
                                  -        
                                  -        style = o.fbOutlineT.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left + "px";
                                  -        style.height = border + "px";  // TODO: on initialize()
                                  -        style.width = width + "px";
                                  -  
                                  -        style = o.fbOutlineL.style;
                                  -        style.top = top-border + "px";
                                  -        style.left = left-border + "px";
                                  -        style.height = height+ numVerticalBorders*border + "px";
                                  -        style.width = border + "px";  // TODO: on initialize()
                                  -        
                                  -        style = o.fbOutlineB.style;
                                  -        if (freeVerticalSpace > 0)
                                  -        {
                                  -            style.top = top+height + "px";
                                  -            style.left = left + "px";
                                  -            style.width = width + "px";
                                  -            //style.height = border + "px"; // TODO: on initialize() or worst case?
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.width = border + "px";
                                  -            //style.height = border + "px";
                                  -        }
                                  -        
                                  -        style = o.fbOutlineR.style;
                                  -        if (freeHorizontalSpace > 0)
                                  -        {
                                  -            style.top = top-border + "px";
                                  -            style.left = left+width + "px";
                                  -            style.height = height + numVerticalBorders*border + "px";
                                  -            style.width = (freeHorizontalSpace < border ? freeHorizontalSpace : border) + "px";
                                  -        }
                                  -        else
                                  -        {
                                  -            style.top = -2*border + "px";
                                  -            style.left = -2*border + "px";
                                  -            style.height = border + "px";
                                  -            style.width = border + "px";
                                  -        }
                                  -        
                                  -        if (!outlineVisible) this.showOutline();        
                                  -    },
                                  -    
                                  -    hideOutline: function()
                                  -    {
                                  -        if (!outlineVisible) return;
                                  -        
                                  -        for (var name in outline)
                                  -            offlineFragment.appendChild(outlineElements[name]);
                                  -
                                  -        outlineVisible = false;
                                  -    },
                                  -    
                                  -    showOutline: function()
                                  -    {
                                  -        if (outlineVisible) return;
                                  -        
                                  -        if (boxModelVisible) this.hideBoxModel();
                                  -        
                                  -        for (var name in outline)
                                  -            Firebug.browser.document.getElementsByTagName("body")[0].appendChild(outlineElements[name]);
                                  -        
                                  -        outlineVisible = true;
                                  -    },
                                  -  
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Box Model
                                  -    
                                  -    drawBoxModel: function(el)
                                  -    {
                                  -        var box = Firebug.browser.getElementBox(el);
                                  -        
                                  -        var windowSize = Firebug.browser.getWindowSize();
                                  -        var scrollPosition = Firebug.browser.getWindowScrollPosition();
                                  -        
                                  -        // element may be occluded by the chrome, when in frame mode
                                  -        var offsetHeight = Firebug.chrome.type == "frame" ? FirebugChrome.height : 0;
                                  -        
                                  -        // if element box is not inside the viewport, don't draw the box model
                                  -        if (box.top > scrollPosition.top + windowSize.height - offsetHeight ||
                                  -            box.left > scrollPosition.left + windowSize.width ||
                                  -            scrollPosition.top > box.top + box.height ||
                                  -            scrollPosition.left > box.left + box.width )
                                  -            return;
                                  -        
                                  -        var top = box.top;
                                  -        var left = box.left;
                                  -        var height = box.height;
                                  -        var width = box.width;
                                  -        
                                  -        var margin = Firebug.browser.getMeasurementBox(el, "margin");
                                  -        var padding = Firebug.browser.getMeasurementBox(el, "padding");
                                  -        var border = Firebug.browser.getMeasurementBox(el, "border");
                                  -        
                                  -        boxModelStyle.top = top - margin.top + "px";
                                  -        boxModelStyle.left = left - margin.left + "px";
                                  -        boxModelStyle.height = height + margin.top + margin.bottom + "px";
                                  -        boxModelStyle.width = width + margin.left + margin.right + "px";
                                  -      
                                  -        boxBorderStyle.top = margin.top + "px";
                                  -        boxBorderStyle.left = margin.left + "px";
                                  -        boxBorderStyle.height = height + "px";
                                  -        boxBorderStyle.width = width + "px";
                                  -        
                                  -        boxPaddingStyle.top = margin.top + border.top + "px";
                                  -        boxPaddingStyle.left = margin.left + border.left + "px";
                                  -        boxPaddingStyle.height = height - border.top - border.bottom + "px";
                                  -        boxPaddingStyle.width = width - border.left - border.right + "px";
                                  -      
                                  -        boxContentStyle.top = margin.top + border.top + padding.top + "px";
                                  -        boxContentStyle.left = margin.left + border.left + padding.left + "px";
                                  -        boxContentStyle.height = height - border.top - padding.top - padding.bottom - border.bottom + "px";
                                  -        boxContentStyle.width = width - border.left - padding.left - padding.right - border.right + "px";
                                  -        
                                  -        if (!boxModelVisible) this.showBoxModel();
                                  -    },
                                  -  
                                  -    hideBoxModel: function()
                                  -    {
                                  -        if (!boxModelVisible) return;
                                  -        
                                  -        offlineFragment.appendChild(boxModel);
                                  -        boxModelVisible = false;
                                  -    },
                                  -    
                                  -    showBoxModel: function()
                                  -    {
                                  -        if (boxModelVisible) return;
                                  -            
                                  -        if (outlineVisible) this.hideOutline();
                                  -        
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].appendChild(boxModel);
                                  -        boxModelVisible = true;
                                  -    }
                                  -
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Inspector Internals
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Shared variables
                                  -
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -// Internal variables
                                  -
                                  -var offlineFragment = null;
                                  -
                                  -var boxModelVisible = false;
                                  -
                                  -var boxModel, boxModelStyle, 
                                  -    boxMargin, boxMarginStyle,
                                  -    boxBorder, boxBorderStyle,
                                  -    boxPadding, boxPaddingStyle, 
                                  -    boxContent, boxContentStyle;
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -var offscreenStyle = resetStyle + "top:-1234px; left:-1234px;";
                                  -
                                  -var inspectStyle = resetStyle + "z-index: 2147483500;";
                                  -var inspectFrameStyle = resetStyle + "z-index: 2147483550; top:0; left:0; background:url(" +
                                  -                        Env.Location.skinDir + "pixel_transparent.gif);";
                                  -
                                  -//if (Env.Options.enableTrace) inspectFrameStyle = resetStyle + "z-index: 2147483550; top: 0; left: 0; background: #ff0; opacity: 0.05; _filter: alpha(opacity=5);";
                                  -
                                  -var inspectModelOpacity = isIE ? "filter:alpha(opacity=80);" : "opacity:0.8;";
                                  -var inspectModelStyle = inspectStyle + inspectModelOpacity;
                                  -var inspectMarginStyle = inspectStyle + "background: #EDFF64; height:100%; width:100%;";
                                  -var inspectBorderStyle = inspectStyle + "background: #666;";
                                  -var inspectPaddingStyle = inspectStyle + "background: SlateBlue;";
                                  -var inspectContentStyle = inspectStyle + "background: SkyBlue;";
                                  -
                                  -
                                  -var outlineStyle = { 
                                  -    fbHorizontalLine: "background: #3875D7;height: 2px;",
                                  -    fbVerticalLine: "background: #3875D7;width: 2px;"
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var lastInspecting = 0;
                                  -var fbInspectFrame = null;
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var outlineVisible = false;
                                  -var outlineElements = {};
                                  -var outline = {
                                  -  "fbOutlineT": "fbHorizontalLine",
                                  -  "fbOutlineL": "fbVerticalLine",
                                  -  "fbOutlineB": "fbHorizontalLine",
                                  -  "fbOutlineR": "fbVerticalLine"
                                  -};
                                  -
                                  -
                                  -var getInspectingTarget = function()
                                  -{
                                  -    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -var createInspectorFrame = function createInspectorFrame()
                                  -{
                                  -    fbInspectFrame = createGlobalElement("div");
                                  -    fbInspectFrame.id = "fbInspectFrame";
                                  -    fbInspectFrame.firebugIgnore = true;
                                  -    fbInspectFrame.style.cssText = inspectFrameStyle;
                                  -    Firebug.browser.document.getElementsByTagName("body")[0].appendChild(fbInspectFrame);
                                  -};
                                  -
                                  -var destroyInspectorFrame = function destroyInspectorFrame()
                                  -{
                                  -    if (fbInspectFrame)
                                  -    {
                                  -        Firebug.browser.document.getElementsByTagName("body")[0].removeChild(fbInspectFrame);
                                  -        fbInspectFrame = null;
                                  -    }
                                  -};
                                  -
                                  -var createOutlineInspector = function createOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name] = createGlobalElement("div");
                                  -        el.id = name;
                                  -        el.firebugIgnore = true;
                                  -        el.style.cssText = inspectStyle + outlineStyle[outline[name]];
                                  -        offlineFragment.appendChild(el);
                                  -    }
                                  -};
                                  -
                                  -var destroyOutlineInspector = function destroyOutlineInspector()
                                  -{
                                  -    for (var name in outline)
                                  -    {
                                  -        var el = outlineElements[name];
                                  -        el.parentNode.removeChild(el);
                                  -    }
                                  -};
                                  -
                                  -var createBoxModelInspector = function createBoxModelInspector()
                                  -{
                                  -    boxModel = createGlobalElement("div");
                                  -    boxModel.id = "fbBoxModel";
                                  -    boxModel.firebugIgnore = true;
                                  -    boxModelStyle = boxModel.style;
                                  -    boxModelStyle.cssText = inspectModelStyle;
                                  -    
                                  -    boxMargin = createGlobalElement("div");
                                  -    boxMargin.id = "fbBoxMargin";
                                  -    boxMarginStyle = boxMargin.style;
                                  -    boxMarginStyle.cssText = inspectMarginStyle;
                                  -    boxModel.appendChild(boxMargin);
                                  -    
                                  -    boxBorder = createGlobalElement("div");
                                  -    boxBorder.id = "fbBoxBorder";
                                  -    boxBorderStyle = boxBorder.style;
                                  -    boxBorderStyle.cssText = inspectBorderStyle;
                                  -    boxModel.appendChild(boxBorder);
                                  -    
                                  -    boxPadding = createGlobalElement("div");
                                  -    boxPadding.id = "fbBoxPadding";
                                  -    boxPaddingStyle = boxPadding.style;
                                  -    boxPaddingStyle.cssText = inspectPaddingStyle;
                                  -    boxModel.appendChild(boxPadding);
                                  -    
                                  -    boxContent = createGlobalElement("div");
                                  -    boxContent.id = "fbBoxContent";
                                  -    boxContentStyle = boxContent.style;
                                  -    boxContentStyle.cssText = inspectContentStyle;
                                  -    boxModel.appendChild(boxContent);
                                  -    
                                  -    offlineFragment.appendChild(boxModel);
                                  -};
                                  -
                                  -var destroyBoxModelInspector = function destroyBoxModelInspector()
                                  -{
                                  -    boxModel.parentNode.removeChild(boxModel);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Section
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/inspector2.js b/tags/firebug1.3a5/content/firebug/inspector2.js
                                  deleted file mode 100644
                                  index 878bc942..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/inspector2.js
                                  +++ /dev/null
                                  @@ -1,825 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -const inspectDelay = 100;
                                  -
                                  -const edgeSize = 2;
                                  -
                                  -const defaultPrimaryPanel = "html";
                                  -const defaultSecondaryPanel = "dom";
                                  -
                                  -var highlightCSS = "chrome://firebug/content/highlighter.css";
                                  -
                                  -// ************************************************************************************************
                                  -// Globals
                                  -
                                  -var boxModelHighlighter = null;
                                  -var frameHighlighter = null;
                                  -var popupHighlighter = null;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Inspector = extend(Firebug.Module,
                                  -{
                                  -    inspecting: false,
                                  -
                                  -    highlightObject: function(element, context, highlightType, boxFrame)
                                  -    {
                                  -        if (!element || !isElement(element) || !isVisible(element))
                                  -            element = null;
                                  -
                                  -        if (element && context && context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        var highlighter = highlightType ? getHighlighter(highlightType) : this.defaultHighlighter;
                                  -
                                  -        var oldContext = this.highlightedContext;
                                  -        if (oldContext && highlighter != this.highlighter)
                                  -        {
                                  -            if (oldContext.window)
                                  -                this.highlighter.unhighlight(oldContext);
                                  -        }
                                  -
                                  -        this.highlighter = highlighter;
                                  -        this.highlightedElement = element;
                                  -        this.highlightedContext = context;
                                  -
                                  -        if (element)
                                  -        {
                                  -            if (context && context.window && context.window.document)
                                  -                highlighter.highlight(context, element, boxFrame);
                                  -        }
                                  -        else if (oldContext)
                                  -        {
                                  -            oldContext.highlightTimeout = oldContext.setTimeout(function()
                                  -            {
                                  -                delete oldContext.highlightTimeout;
                                  -                if (oldContext.window && oldContext.window.document)
                                  -                    highlighter.unhighlight(oldContext);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    toggleInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -        else
                                  -            this.startInspecting(context);
                                  -    },
                                  -
                                  -    startInspecting: function(context)
                                  -    {
                                  -        if (this.inspecting || !context || !context.loaded)
                                  -            return;
                                  -
                                  -        this.inspecting = true;
                                  -        this.inspectingContext = context;
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "true");
                                  -        this.attachInspectListeners(context);
                                  -
                                  -        // Remember the previous panel and bar state so we can revert if the user cancels
                                  -        this.previousPanelName = context.panelName;
                                  -        this.previousSidePanelName = context.sidePanelName;
                                  -        this.previouslyCollapsed = $("fbContentBox").collapsed;
                                  -        this.previouslyFocused = context.detached && context.chrome.isFocused();
                                  -
                                  -        var htmlPanel = context.chrome.selectPanel("html");
                                  -        this.previousObject = htmlPanel.selection;
                                  -
                                  -        if (context.detached)
                                  -            FirebugChrome.focus();
                                  -        else
                                  -            Firebug.showBar(true);
                                  -
                                  -        htmlPanel.panelNode.focus();
                                  -        htmlPanel.startInspecting();
                                  -
                                  -        if (context.hoverNode)
                                  -            this.inspectNode(context.hoverNode);
                                  -    },
                                  -
                                  -    inspectNode: function(node)
                                  -    {
                                  -        if (node && node.nodeType != 1)
                                  -            node = node.parentNode;
                                  -
                                  -        if (node && node.firebugIgnore)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.highlightObject(node, context, "frame");
                                  -
                                  -        this.inspectingNode = node;
                                  -
                                  -        if (node)
                                  -        {
                                  -            this.inspectTimeout = context.setTimeout(function()
                                  -            {
                                  -                // TODO: xxxpedro
                                  -                //if (context.chrome)
                                  -                //    context.chrome.select(node);
                                  -            }, inspectDelay);
                                  -        }
                                  -    },
                                  -
                                  -    stopInspecting: function(cancelled, waitForClick)
                                  -    {
                                  -        if (!this.inspecting)
                                  -            return;
                                  -
                                  -        var context = this.inspectingContext;
                                  -
                                  -        if (this.inspectTimeout)
                                  -        {
                                  -            context.clearTimeout(this.inspectTimeout);
                                  -            delete this.inspectTimeout;
                                  -        }
                                  -
                                  -        this.detachInspectListeners(context);
                                  -        if (!waitForClick)
                                  -            this.detachClickInspectListeners(context.window);
                                  -
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "checked", "false");
                                  -
                                  -        this.inspecting = false;
                                  -
                                  -        var htmlPanel = context.getPanel("html");
                                  -
                                  -        if (this.previouslyFocused)
                                  -            context.chrome.focus();
                                  -
                                  -        if (cancelled)
                                  -        {
                                  -            if (this.previouslyCollapsed)
                                  -                Firebug.showBar(false);
                                  -
                                  -            if (this.previousPanelName == "html")
                                  -                context.chrome.select(this.previousObject);
                                  -            else
                                  -                context.chrome.selectPanel(this.previousPanelName, this.previousSidePanelName);
                                  -        }
                                  -        else
                                  -        {
                                  -            context.chrome.select(htmlPanel.selection);
                                  -            context.chrome.getSelectedPanel().panelNode.focus();
                                  -        }
                                  -
                                  -        htmlPanel.stopInspecting(htmlPanel.selection, cancelled);
                                  -
                                  -        this.inspectNode(null);
                                  -
                                  -        delete this.previousObject;
                                  -        delete this.previousPanelName;
                                  -        delete this.previousSidePanelName;
                                  -        delete this.inspectingContext;
                                  -    },
                                  -
                                  -    inspectNodeBy: function(dir)
                                  -    {
                                  -        var target;
                                  -        var node = this.inspectingNode;
                                  -
                                  -        if (dir == "up")
                                  -            target = this.inspectingContext.chrome.getNextObject();
                                  -        else if (dir == "down")
                                  -        {
                                  -            target = this.inspectingContext.chrome.getNextObject(true);
                                  -            if (node && !target)
                                  -            {
                                  -                if (node.contentDocument)
                                  -                    target = node.contentDocument.documentElement;
                                  -                else
                                  -                    target = getNextElement(node.firstChild);
                                  -            }
                                  -        }
                                  -
                                  -        if (target && isElement(target))
                                  -            this.inspectNode(target);
                                  -        else
                                  -            beep();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    attachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        this.keyListeners =
                                  -        [
                                  -            chrome.keyCodeListen("RETURN", null, bindFixed(this.stopInspecting, this)),
                                  -            chrome.keyCodeListen("ESCAPE", null, bindFixed(this.stopInspecting, this, true)),
                                  -            chrome.keyCodeListen("UP", isControl, bindFixed(this.inspectNodeBy, this, "up"), true),
                                  -            chrome.keyCodeListen("DOWN", isControl, bindFixed(this.inspectNodeBy, this, "down"), true),
                                  -        ];
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.addEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.addEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -            subWin.document.addEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachInspectListeners: function(context)
                                  -    {
                                  -        var win = context.window;
                                  -        if (!win || !win.document)
                                  -            return;
                                  -
                                  -        var chrome = context.chrome;
                                  -        if (!chrome)
                                  -            chrome = FirebugChrome;
                                  -
                                  -        if (this.keyListeners)  // XXXjjb for some reason this is null some times.
                                  -        {
                                  -            for (var i = 0; i < this.keyListeners.length; ++i)
                                  -                chrome.keyIgnore(this.keyListeners[i]);
                                  -            delete this.keyListeners;
                                  -        }
                                  -
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("mouseover", this.onInspectingMouseOver, true);
                                  -            subWin.document.removeEventListener("mousedown", this.onInspectingMouseDown, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    detachClickInspectListeners: function(win)
                                  -    {
                                  -        // We have to remove the click listener in a second phase because if we remove it
                                  -        // after the mousedown, we won't be able to cancel clicked links
                                  -        iterateWindows(win, bind(function(subWin)
                                  -        {
                                  -            subWin.document.removeEventListener("click", this.onInspectingClick, true);
                                  -        }, this));
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    onInspectingMouseOver: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.inspectNode(event.target);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingMouseDown: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -           FBTrace.dumpEvent("onInspecting event", event);
                                  -        this.stopInspecting(false, true);
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    onInspectingClick: function(event)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.dumpEvent("onInspecting event", event);
                                  -        var win = event.currentTarget.defaultView;
                                  -        if (win)
                                  -        {
                                  -            win = getRootWindow(win);
                                  -            this.detachClickInspectListeners(win);
                                  -        }
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        this.onInspectingMouseOver = bind(this.onInspectingMouseOver, this);
                                  -        this.onInspectingMouseDown = bind(this.onInspectingMouseDown, this);
                                  -        this.onInspectingClick = bind(this.onInspectingClick, this);
                                  -
                                  -        highlightCSS = Env.Location.sourceDir + "firebug/highlighter.css"; 
                                  -        this.inspectingContext = Firebug.browser.window;
                                  -        //this.updateOption("shadeBoxModel", Firebug.shadeBoxModel);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.onPreInspectMouseOver = function(event) { context.hoverNode = event.target; };
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        if (context.highlightTimeout)
                                  -        {
                                  -            context.clearTimeout(context.highlightTimeout);
                                  -            delete context.highlightTimeout;
                                  -        }
                                  -
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        win.addEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try {
                                  -            win.removeEventListener("mouseover", context.onPreInspectMouseOver, true);
                                  -        } catch (ex) {
                                  -            // Get unfortunate errors here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -        }
                                  -    },
                                  -
                                  -    showContext: function(browser, context)
                                  -    {
                                  -        if (this.inspecting)
                                  -            this.stopInspecting(true);
                                  -
                                  -        if (browser)
                                  -        {
                                  -            var disabled = !context || !context.loaded;
                                  -            browser.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -        }
                                  -    },
                                  -
                                  -    showPanel: function(browser, panel)
                                  -    {
                                  -        var chrome = browser.chrome;
                                  -        var disabled = !panel || !panel.context.loaded;
                                  -        chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", disabled);
                                  -        chrome.setGlobalAttribute("menu_firebugInspect", "disabled", disabled);
                                  -    },
                                  -
                                  -    loadedContext: function(context)
                                  -    {
                                  -        context.chrome.setGlobalAttribute("cmd_toggleInspecting", "disabled", "false");
                                  -        context.chrome.setGlobalAttribute("menu_firebugInspect", "disabled", "false");
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        if (name == "shadeBoxModel")
                                  -        {
                                  -            this.highlightObject(null);
                                  -            this.defaultHighlighter = value ? getHighlighter("boxModel") : getHighlighter("frame");
                                  -        }
                                  -    },
                                  -
                                  -    getObjectByURL: function(context, url)
                                  -    {
                                  -        var styleSheet = getStyleSheetByHref(url, context);
                                  -        if (styleSheet)
                                  -            return styleSheet;
                                  -
                                  -        /*var path = getURLPath(url);
                                  -        var xpath = "//*[contains(@src, '" + path + "')]";
                                  -        var elements = getElementsByXPath(context.window.document, xpath);
                                  -        if (elements.length)
                                  -            return elements[0];*/
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// Local Helpers
                                  -
                                  -function getHighlighter(type)
                                  -{
                                  -    if (type == "boxModel")
                                  -    {
                                  -        if (!boxModelHighlighter)
                                  -            boxModelHighlighter = new BoxModelHighlighter();
                                  -
                                  -        return boxModelHighlighter;
                                  -    }
                                  -    else if (type == "frame")
                                  -    {
                                  -        if (!frameHighlighter)
                                  -            frameHighlighter = new FrameHighlighter();
                                  -
                                  -        return frameHighlighter;
                                  -    }
                                  -    else if (type == "popup")
                                  -    {
                                  -        if (!popupHighlighter)
                                  -            popupHighlighter = new PopupHighlighter();
                                  -
                                  -        return popupHighlighter;
                                  -    }
                                  -}
                                  -
                                  -function pad(element, t, r, b, l)
                                  -{
                                  -    element.style.padding = Math.abs(t) + "px " + Math.abs(r) + "px "
                                  -        + Math.abs(b) + "px " + Math.abs(l) + "px";
                                  -}
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function FrameHighlighter()
                                  -{
                                  -}
                                  -
                                  -FrameHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        // TODO: xxxpedro
                                  -        //if (element instanceof XULElement)
                                  -        //    return;
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x, y = offset.y;
                                  -        var w = element.offsetWidth, h = element.offsetHeight;
                                  -        if (FBTrace.DBG_INSPECT)
                                  -                FBTrace.sysout("FrameHighlighter HTML tag:"+element.tagName,"x:"+x+" y:"+y+" w:"+w+" h:"+h);
                                  -
                                  -        var wacked = isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h);
                                  -        if (FBTrace.DBG_INSPECT && wacked)
                                  -            FBTrace.sysout("FrameHighlighter.highlight has bad boxObject for ", element.tagName);
                                  -        if (wacked)
                                  -            return;
                                  -
                                  -        var nodes = this.getNodes(context, element);
                                  -
                                  -        move(nodes.top, x, y-edgeSize);
                                  -        resize(nodes.top, w, edgeSize);
                                  -
                                  -        move(nodes.right, x+w, y-edgeSize);
                                  -        resize(nodes.right, edgeSize, h+edgeSize*2);
                                  -
                                  -        move(nodes.bottom, x, y+h);
                                  -        resize(nodes.bottom, w, edgeSize);
                                  -
                                  -        move(nodes.left, x-edgeSize, y-edgeSize);
                                  -        resize(nodes.left, edgeSize, h+edgeSize*2);
                                  -        if (FBTrace.DBG_INSPECT)																			/*@explore*/
                                  -            FBTrace.sysout("FrameHighlighter ", element.tagName);											/*@explore*/
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.top.parentNode || nodes.top.ownerDocument != body.ownerDocument;
                                  -        if (needsAppend)
                                  -        {
                                  -            if (FBTrace.DBG_INSPECT)																		/*@explore*/
                                  -                FBTrace.sysout("FrameHighlighter needsAppend", nodes.top.ownerDocument.documentURI+" !?= "+body.ownerDocument.documentURI); /*@explore*/
                                  -            attachStyles(context, body);
                                  -            for (var edge in nodes)
                                  -            {
                                  -                try
                                  -                {
                                  -                    body.appendChild(nodes[edge]);
                                  -                }
                                  -                catch(exc)
                                  -                {
                                  -                    if (FBTrace.DBG_INSPECT)                                                                              /*@explore*/
                                  -                        FBTrace.dumpProperties("inspector.FrameHighlighter.highlight FAILS", exc);                     /*@explore*/
                                  -                }
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        if (FBTrace.DBG_INSPECT)
                                  -            FBTrace.sysout("FrameHighlighter unhightlight", context.window.location);
                                  -        var nodes = this.getNodes(context);
                                  -        var body = nodes.top.parentNode;
                                  -        if (body)
                                  -        {
                                  -            for (var edge in nodes)
                                  -                body.removeChild(nodes[edge]);
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.frameHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -
                                  -            function createEdge(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugHighlight";
                                  -                return div;
                                  -            }
                                  -
                                  -            context.frameHighlighter =
                                  -            {
                                  -                top: createEdge("Top"),
                                  -                right: createEdge("Right"),
                                  -                bottom: createEdge("Bottom"),
                                  -                left: createEdge("Left")
                                  -            };
                                  -        }
                                  -
                                  -        return context.frameHighlighter;
                                  -    }
                                  -};
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function PopupHighlighter()
                                  -{
                                  -}
                                  -
                                  -PopupHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element)
                                  -    {
                                  -        var doc = context.window.document;
                                  -        var popup = doc.getElementById("inspectorPopup");
                                  -        popup.style.width = "200px";
                                  -        popup.style.height = "100px";
                                  -        popup.showPopup(element, element.boxObject.screenX,
                                  -            element.boxObject.screenY, "popup", "none", "none");
                                  -        if (FBTrace.DBG_INSPECT)
                                  -        {
                                  -            FBTrace.sysout("PopupHighlighter for "+element.tagName, " at ("+element.boxObject.screenX+","+element.boxObject.screenY+")");
                                  -            FBTrace.dumpProperties("PopupHighlighter popup=", popup);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -    },
                                  -}
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -function BoxModelHighlighter()
                                  -{
                                  -}
                                  -
                                  -BoxModelHighlighter.prototype =
                                  -{
                                  -    highlight: function(context, element, boxFrame)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        var highlightFrame = boxFrame ? nodes[boxFrame] : null;
                                  -
                                  -        if (context.highlightFrame)
                                  -            removeClass(context.highlightFrame, "firebugHighlightBox");
                                  -
                                  -        context.highlightFrame = highlightFrame;
                                  -
                                  -        if (highlightFrame)
                                  -        {
                                  -            setClass(nodes.offset, "firebugHighlightGroup");
                                  -            setClass(highlightFrame, "firebugHighlightBox");
                                  -        }
                                  -        else
                                  -            removeClass(nodes.offset, "firebugHighlightGroup");
                                  -
                                  -        var win = element.ownerDocument.defaultView;
                                  -        if (!win)
                                  -            return;
                                  -
                                  -        var offsetParent = element.offsetParent;
                                  -        if (!offsetParent)
                                  -            return;
                                  -
                                  -        var parentStyle = win.getComputedStyle(offsetParent, "");
                                  -        var parentOffset = getViewOffset(offsetParent, true);
                                  -        var parentX = parentOffset.x + parseInt(parentStyle.borderLeftWidth);
                                  -        var parentY = parentOffset.y + parseInt(parentStyle.borderTopWidth);
                                  -        var parentW = offsetParent.offsetWidth-1;
                                  -        var parentH = offsetParent.offsetHeight-1;
                                  -
                                  -        var style = win.getComputedStyle(element, "");
                                  -        var styles = readBoxStyles(style);
                                  -
                                  -        var offset = getViewOffset(element, true);
                                  -        var x = offset.x - Math.abs(styles.marginLeft);
                                  -        var y = offset.y - Math.abs(styles.marginTop);
                                  -        var w = element.offsetWidth - (styles.paddingLeft + styles.paddingRight
                                  -                + styles.borderLeft + styles.borderRight);
                                  -        var h = element.offsetHeight - (styles.paddingTop + styles.paddingBottom
                                  -                + styles.borderTop + styles.borderBottom);
                                  -
                                  -        move(nodes.offset, x, y);
                                  -        pad(nodes.margin, styles.marginTop, styles.marginRight, styles.marginBottom,
                                  -                styles.marginLeft);
                                  -        pad(nodes.border, styles.borderTop, styles.borderRight, styles.borderBottom,
                                  -                styles.borderLeft);
                                  -        pad(nodes.padding, styles.paddingTop, styles.paddingRight, styles.paddingBottom,
                                  -                styles.paddingLeft);
                                  -        resize(nodes.content, w, h);
                                  -
                                  -        var showLines = Firebug.showRulers && boxFrame;
                                  -        if (showLines)
                                  -        {
                                  -            move(nodes.parent, parentX, parentY);
                                  -            resize(nodes.parent, parentW, parentH);
                                  -
                                  -            if (parentX < 14)
                                  -                setClass(nodes.parent, "overflowRulerX");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerX");
                                  -
                                  -            if (parentY < 14)
                                  -                setClass(nodes.parent, "overflowRulerY");
                                  -            else
                                  -                removeClass(nodes.parent, "overflowRulerY");
                                  -
                                  -            var left = x;
                                  -            var top = y;
                                  -            var width = w-1;
                                  -            var height = h-1;
                                  -
                                  -            if (boxFrame == "content")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft)
                                  -                    + Math.abs(styles.paddingLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop)
                                  -                    + Math.abs(styles.paddingTop);
                                  -            }
                                  -            else if (boxFrame == "padding")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft) + Math.abs(styles.borderLeft);
                                  -                top += Math.abs(styles.marginTop) + Math.abs(styles.borderTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom);
                                  -            }
                                  -            else if (boxFrame == "border")
                                  -            {
                                  -                left += Math.abs(styles.marginLeft);
                                  -                top += Math.abs(styles.marginTop);
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom);
                                  -            }
                                  -            else if (boxFrame == "margin")
                                  -            {
                                  -                width += Math.abs(styles.paddingLeft) + Math.abs(styles.paddingRight)
                                  -                     + Math.abs(styles.borderLeft) + Math.abs(styles.borderRight)
                                  -                     + Math.abs(styles.marginLeft) + Math.abs(styles.marginRight);
                                  -                height += Math.abs(styles.paddingTop) + Math.abs(styles.paddingBottom)
                                  -                    + Math.abs(styles.borderTop) + Math.abs(styles.borderBottom)
                                  -                    + Math.abs(styles.marginTop) + Math.abs(styles.marginBottom);
                                  -            }
                                  -
                                  -            move(nodes.lines.top, 0, top);
                                  -            move(nodes.lines.right, left+width, 0);
                                  -            move(nodes.lines.bottom, 0, top+height);
                                  -            move(nodes.lines.left, left, 0)
                                  -        }
                                  -
                                  -        var body = getNonFrameBody(element);
                                  -        if (!body)
                                  -            return this.unhighlight(context);
                                  -
                                  -        var needsAppend = !nodes.offset.parentNode
                                  -            || nodes.offset.parentNode.ownerDocument != body.ownerDocument;
                                  -
                                  -        if (needsAppend)
                                  -        {
                                  -            attachStyles(context, body);
                                  -            body.appendChild(nodes.offset);
                                  -        }
                                  -
                                  -        if (showLines)
                                  -        {
                                  -            if (!nodes.lines.top.parentNode)
                                  -            {
                                  -                body.appendChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.appendChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -        else if (nodes.lines.top.parentNode)
                                  -        {
                                  -            body.removeChild(nodes.parent);
                                  -
                                  -            for (var line in nodes.lines)
                                  -                body.removeChild(nodes.lines[line]);
                                  -        }
                                  -    },
                                  -
                                  -    unhighlight: function(context)
                                  -    {
                                  -        var nodes = this.getNodes(context);
                                  -        if (nodes.offset.parentNode)
                                  -        {
                                  -            var body = nodes.offset.parentNode;
                                  -            body.removeChild(nodes.offset);
                                  -
                                  -            if (nodes.lines.top.parentNode)
                                  -            {
                                  -                body.removeChild(nodes.parent);
                                  -
                                  -                for (var line in nodes.lines)
                                  -                    body.removeChild(nodes.lines[line]);
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getNodes: function(context)
                                  -    {
                                  -        if (!context.boxModelHighlighter)
                                  -        {
                                  -            var doc = context.window.document;
                                  -            if (FBTrace.DBG_ERRORS && !doc) FBTrace.dumpStack("inspector getNodes no document for window:"+window.location);
                                  -
                                  -            function createRuler(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugRuler firebugRuler"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createBox(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutBox firebugLayoutBox"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            function createLine(name)
                                  -            {
                                  -                var div = doc.createElementNS("http://www.w3.org/1999/xhtml", "div");
                                  -                div.firebugIgnore = true;
                                  -                div.className = "firebugLayoutLine firebugLayoutLine"+name;
                                  -                return div;
                                  -            }
                                  -
                                  -            var nodes = context.boxModelHighlighter =
                                  -            {
                                  -                parent: createBox("Parent"),
                                  -                rulerH: createRuler("H"),
                                  -                rulerV: createRuler("V"),
                                  -                offset: createBox("Offset"),
                                  -                margin: createBox("Margin"),
                                  -                border: createBox("Border"),
                                  -                padding: createBox("Padding"),
                                  -                content: createBox("Content"),
                                  -                lines: {
                                  -                    top: createLine("Top"),
                                  -                    right: createLine("Right"),
                                  -                    bottom: createLine("Bottom"),
                                  -                    left: createLine("Left")
                                  -                }
                                  -            };
                                  -
                                  -            nodes.parent.appendChild(nodes.rulerH);
                                  -            nodes.parent.appendChild(nodes.rulerV);
                                  -            nodes.offset.appendChild(nodes.margin);
                                  -            nodes.margin.appendChild(nodes.border);
                                  -            nodes.border.appendChild(nodes.padding);
                                  -            nodes.padding.appendChild(nodes.content);
                                  -        }
                                  -
                                  -        return context.boxModelHighlighter;
                                  -    }
                                  -};
                                  -
                                  -var getNonFrameBody = function getNonFrameBody(elt)
                                  -{
                                  -    var body = getBody(elt.ownerDocument);
                                  -    return body.localName.toUpperCase() == "FRAMESET" ? null : body;
                                  -}
                                  -
                                  -var attachStyles = function attachStyles(context, body)
                                  -{
                                  -    var doc = body.ownerDocument;
                                  -    if (!context.highlightStyle)
                                  -        context.highlightStyle = createStyleSheet(doc, highlightCSS);
                                  -
                                  -    if (!context.highlightStyle.parentNode || context.highlightStyle.ownerDocument != doc)
                                  -        addStyleSheet(body.ownerDocument, context.highlightStyle);
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.registerModule(Firebug.Inspector);
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/lib.js b/tags/firebug1.3a5/content/firebug/lib.js
                                  deleted file mode 100644
                                  index 8d8e81b0..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/lib.js
                                  +++ /dev/null
                                  @@ -1,4472 +0,0 @@
                                  -/*!*************************************************************
                                  - *
                                  - *    Firebug Lite 1.3a5
                                  - * 
                                  - *      Copyright (c) 2007, Parakey Inc.
                                  - *      Released under BSD license.
                                  - *      More information: http://getfirebug.com/lite.html
                                  - *  
                                  - **************************************************************/
                                  -
                                  -/*!
                                  - * CSS selectors powered by:
                                  - * 
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var FBL = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -    
                                  -var productionDir = "http://getfirebug.com/releases/lite/";
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -var reNotWhitespace = /[^\s]/;
                                  -var reSplitFile = /:\/{1,3}(.*?)\/([^\/]*?)\/?($|\?.*)/;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// properties
                                  -
                                  -var userAgent = navigator.userAgent.toLowerCase();
                                  -this.isFirefox = /firefox/.test(userAgent);
                                  -this.isOpera   = /opera/.test(userAgent);
                                  -this.isSafari  = /webkit/.test(userAgent);
                                  -this.isIE      = /msie/.test(userAgent) && !/opera/.test(userAgent);
                                  -this.isIE6     = /msie 6/i.test(navigator.appVersion);
                                  -this.browserVersion = (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1];
                                  -this.isIElt8   = this.isIE && (this.browserVersion-0 < 8); 
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.NS = null;
                                  -this.pixelsPerInch = null;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Namespaces
                                  -
                                  -var namespaces = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.ns = function(fn)
                                  -{
                                  -    var ns = {};
                                  -    namespaces.push(fn, ns);
                                  -    return ns;
                                  -};
                                  -
                                  -var FBTrace = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize environment
                                  -
                                  -    // point the FBTrace object to the local variable
                                  -    if (FBL.FBTrace)
                                  -        FBTrace = FBL.FBTrace;
                                  -    else
                                  -        FBTrace = FBL.FBTrace = {};
                                  -    
                                  -    FBL.Ajax.initialize();
                                  -    
                                  -    // check if the actual window is a persisted chrome context
                                  -    var isChromeContext = window.Firebug && typeof window.Firebug.SharedEnv == "object";
                                  -    
                                  -    // chrome context of the persistent application
                                  -    if (isChromeContext)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        sharedEnv = window.Firebug.SharedEnv;
                                  -        delete window.Firebug.SharedEnv;
                                  -        
                                  -        FBL.Env = sharedEnv;
                                  -        FBL.Env.isChromeContext = true;
                                  -        FBTrace.messageQueue = FBL.Env.traceMessageQueue;
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.NS = document.documentElement.namespaceURI;
                                  -        FBL.Env.browser = window;
                                  -        FBL.Env.destroy = destroyApplication;
                                  -
                                  -        if (document.documentElement.getAttribute("debug") == "true")
                                  -            FBL.Env.Options.startOpened = true;
                                  -
                                  -        // find the URL location of the loaded application
                                  -        findLocation();
                                  -        
                                  -        // TODO: get preferences here...
                                  -        var prefs = eval("(" + FBL.readCookie("FirebugLite") + ")");
                                  -        if (prefs)
                                  -        {
                                  -            FBL.Env.Options.startOpened = prefs.startOpened;
                                  -            FBL.Env.Options.enableTrace = prefs.enableTrace;
                                  -            FBL.Env.Options.enablePersistent = prefs.enablePersistent;
                                  -        }
                                  -        
                                  -        if (FBL.isFirefox && typeof console == "object" && console.firebug &&
                                  -            FBL.Env.Options.disableWhenFirebugActive)
                                  -            return;
                                  -    }
                                  -    
                                  -    // check browser compatibilities
                                  -    this.isQuiksMode = FBL.Env.browser.document.compatMode == "BackCompat";
                                  -    this.isIEQuiksMode = this.isIE && this.isQuiksMode;
                                  -    this.isIEStantandMode = this.isIE && !this.isQuiksMode;
                                  -    
                                  -    this.noFixedPosition = this.isIE6 || this.isIEQuiksMode;
                                  -    
                                  -    // after creating/synchronizing the environment, initialize the FBTrace module
                                  -    if (FBL.Env.Options.enableTrace) FBTrace.initialize();
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE && isChromeContext) FBTrace.sysout("FBL.initialize - persistent application", "initialize chrome context");
                                  -        
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // initialize namespaces
                                  -
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces BEGIN");
                                  -    
                                  -    for (var i = 0; i < namespaces.length; i += 2)
                                  -    {
                                  -        var fn = namespaces[i];
                                  -        var ns = namespaces[i+1];
                                  -        fn.apply(ns);
                                  -    }
                                  -    
                                  -    if (FBTrace.DBG_INITIALIZE) {
                                  -        FBTrace.sysout("FBL.initialize", namespaces.length/2+" namespaces END");
                                  -        FBTrace.sysout("FBL waitForDocument", "waiting document load");
                                  -    }
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // finish environment initialization
                                  -
                                  -    FBL.Firebug.loadPrefs(prefs);
                                  -    
                                  -    if (FBL.Env.Options.enablePersistent)
                                  -    {
                                  -        // TODO: xxxpedro persist - make a better synchronization
                                  -        if (isChromeContext)
                                  -        {
                                  -            FBL.FirebugChrome.clone(FBL.Env.FirebugChrome);
                                  -        }
                                  -        else
                                  -        {
                                  -            FBL.Env.FirebugChrome = FBL.FirebugChrome;
                                  -            FBL.Env.traceMessageQueue = FBTrace.messageQueue;
                                  -        }
                                  -    }
                                  -    
                                  -    // wait document load
                                  -    waitForDocument();
                                  -};
                                  -
                                  -var waitForDocument = function waitForDocument()
                                  -{
                                  -    // document.body not available in XML+XSL documents in Firefox
                                  -    var doc = FBL.Env.browser.document;
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    
                                  -    if (body)
                                  -    {
                                  -        calculatePixelsPerInch(doc, body);
                                  -        onDocumentLoad();
                                  -    }
                                  -    else
                                  -        setTimeout(waitForDocument, 50);
                                  -};
                                  -
                                  -var onDocumentLoad = function onDocumentLoad()
                                  -{
                                  -    if (FBTrace.DBG_INITIALIZE) FBTrace.sysout("FBL onDocumentLoad", "document loaded");
                                  -    
                                  -    // fix IE6 problem with cache of background images, causing a lot of flickering 
                                  -    if (FBL.isIE6)
                                  -        fixIE6BackgroundImageCache();
                                  -        
                                  -    // chrome context of the persistent application
                                  -    if (FBL.Env.Options.enablePersistent && FBL.Env.isChromeContext)
                                  -    {
                                  -        // finally, start the application in the chrome context
                                  -        FBL.Firebug.initialize();
                                  -        
                                  -        // if is not development mode, remove the shared environment cache object
                                  -        // used to synchronize the both persistent contexts
                                  -        if (!FBL.Env.isDevelopmentMode)
                                  -        {
                                  -            sharedEnv.destroy();
                                  -            sharedEnv = null;
                                  -        }
                                  -    }
                                  -    // non-persistent application
                                  -    else
                                  -    {
                                  -        FBL.FirebugChrome.create();
                                  -    }    
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Env
                                  -
                                  -var sharedEnv;
                                  -
                                  -this.Env = {
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env Options (will be transported to Firebug options)
                                  -    Options:
                                  -    {
                                  -        saveCookies: false,
                                  -    
                                  -        saveWindowPosition: false,
                                  -        saveCommandLineHistory: false,
                                  -        
                                  -        startOpened: false,
                                  -        startInNewWindow: false,
                                  -        showIconWhenHidden: true,
                                  -        
                                  -        overrideConsole: true,
                                  -        ignoreFirebugElements: true,
                                  -        disableWhenFirebugActive: true,
                                  -        
                                  -        enableTrace: false,
                                  -        enablePersistent: false
                                  -        
                                  -    },
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Library location
                                  -    Location:
                                  -    {
                                  -        sourceDir: null,
                                  -        baseDir: null,
                                  -        skinDir: null,
                                  -        skin: null,
                                  -        app: null
                                  -    },
                                  -
                                  -    skin: "xp",
                                  -    useLocalSkin: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env states
                                  -    isDevelopmentMode: false,
                                  -    isChromeContext: false,
                                  -    
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
                                  -    // Env references
                                  -    browser: null,
                                  -    chrome: null
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var destroyApplication = function destroyApplication()
                                  -{
                                  -    setTimeout(function()
                                  -    {
                                  -        FBL = null;
                                  -    }, 100);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Library location
                                  -
                                  -var findLocation =  function findLocation() 
                                  -{
                                  -    var reFirebugFile = /(firebug(?:\.\w+)?(?:\.js|\.jgz))(?:#(.+))?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = document;
                                  -    
                                  -    var script = doc.getElementById("FirebugLite");
                                  -    
                                  -    if (script)
                                  -    {
                                  -        file = reFirebugFile.exec(script.src);
                                  -    }
                                  -    else
                                  -    {
                                  -        for(var i=0, s=doc.getElementsByTagName("script"), si; si=s[i]; i++)
                                  -        {
                                  -            var file = null;
                                  -            if ( si.nodeName.toLowerCase() == "script" && (file = reFirebugFile.exec(si.src)) )
                                  -            {
                                  -                script = si;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if (script)
                                  -        script.firebugIgnore = true;
                                  -    
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    FBL.Env.isChromeExtension = script && script.getAttribute("extension") == "Chrome"; 
                                  -    if (FBL.Env.isChromeExtension)
                                  -    {
                                  -        //path = productionDir;
                                  -        path = "http://firebug.local:8740/firebug1.3/build/";
                                  -        script = {innerHTML: "{showIconWhenHidden:false}"};
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        var Env = FBL.Env;
                                  -        
                                  -        if (fileName == "firebug.dev.js")
                                  -        {
                                  -            Env.isDevelopmentMode = true;
                                  -            Env.useLocalSkin = true;
                                  -            Env.Options.disableWhenFirebugActive = false;
                                  -        }
                                  -        
                                  -        if (fileOptions)
                                  -        {
                                  -            var options = fileOptions.split(",");
                                  -            
                                  -            for (var i = 0, length = options.length; i < length; i++)
                                  -            {
                                  -                var option = options[i];
                                  -                var name, value;
                                  -                
                                  -                if (option.indexOf("=") != -1)
                                  -                {
                                  -                    var parts = option.split("=");
                                  -                    name = parts[0];
                                  -                    value = eval(unescape(parts[1]));
                                  -                }
                                  -                else
                                  -                {
                                  -                    name = option;
                                  -                    value = true;
                                  -                }
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        if (Env.browser.document.documentElement.getAttribute("debug") == "true")
                                  -            Env.Options.startOpened = true;
                                  -        
                                  -        var innerOptions = FBL.trim(script.innerHTML);
                                  -        
                                  -        if (innerOptions)
                                  -        {
                                  -            var innerOptionsObject = eval("(" + innerOptions + ")");
                                  -            
                                  -            for (var name in innerOptionsObject)
                                  -            {
                                  -                var value = innerOptionsObject[name];
                                  -                
                                  -                if (name in Env.Options)
                                  -                    Env.Options[name] = value;
                                  -                else
                                  -                    Env[name] = value;
                                  -            }
                                  -        }
                                  -        
                                  -        var loc = Env.Location;
                                  -        var isProductionRelease = path.indexOf(productionDir) != -1;
                                  -        
                                  -        loc.sourceDir = path;
                                  -        loc.baseDir = path.substr(0, path.length - m[1].length - 1);
                                  -        loc.skinDir = (isProductionRelease ? path : loc.baseDir) + "skin/" + Env.skin + "/"; 
                                  -        loc.skin = loc.skinDir + "firebug.html";
                                  -        loc.app = path + fileName;
                                  -    }
                                  -    else
                                  -    {
                                  -        throw new Error("Firebug Error: Library path not found");
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Basics
                                  -
                                  -this.bind = function()  // fn, thisObject, args => thisObject.fn(args, arguments);
                                  -{
                                  -   var args = cloneArray(arguments), fn = args.shift(), object = args.shift();
                                  -   return function() { return fn.apply(object, arrayInsert(cloneArray(args), 0, arguments)); }
                                  -};
                                  -
                                  -this.extend = function(l, r)
                                  -{
                                  -    var newOb = {};
                                  -    for (var n in l)
                                  -        newOb[n] = l[n];
                                  -    for (var n in r)
                                  -        newOb[n] = r[n];
                                  -    return newOb;
                                  -};
                                  -
                                  -this.append = function(l, r)
                                  -{
                                  -    for (var n in r)
                                  -        l[n] = r[n];
                                  -        
                                  -    return l;
                                  -};
                                  -
                                  -this.keys = function(map)  // At least sometimes the keys will be on user-level window objects
                                  -{
                                  -    var keys = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)  // enumeration is safe
                                  -            keys.push(name);   // name is string, safe
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -    }
                                  -
                                  -    return keys;  // return is safe
                                  -};
                                  -
                                  -this.values = function(map)
                                  -{
                                  -    var values = [];
                                  -    try
                                  -    {
                                  -        for (var name in map)
                                  -        {
                                  -            try
                                  -            {
                                  -                values.push(map[name]);
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                // Sometimes we get exceptions trying to access properties
                                  -                if (FBTrace.DBG_ERRORS)
                                  -                    FBTrace.sysout("lib.values FAILED ", exc);
                                  -            }
                                  -
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes we get exceptions trying to iterate properties
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.values FAILED ", exc);
                                  -    }
                                  -
                                  -    return values;
                                  -};
                                  -
                                  -this.remove = function(list, item)
                                  -{
                                  -    for (var i = 0; i < list.length; ++i)
                                  -    {
                                  -        if (list[i] == item)
                                  -        {
                                  -            list.splice(i, 1);
                                  -            break;
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.sliceArray = function(array, index)
                                  -{
                                  -    var slice = [];
                                  -    for (var i = index; i < array.length; ++i)
                                  -        slice.push(array[i]);
                                  -
                                  -    return slice;
                                  -};
                                  -
                                  -function cloneArray(array, fn)
                                  -{
                                  -   var newArray = [];
                                  -
                                  -   if (fn)
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(fn(array[i]));
                                  -   else
                                  -       for (var i = 0; i < array.length; ++i)
                                  -           newArray.push(array[i]);
                                  -
                                  -   return newArray;
                                  -}
                                  -
                                  -function extendArray(array, array2)
                                  -{
                                  -   var newArray = [];
                                  -   newArray.push.apply(newArray, array);
                                  -   newArray.push.apply(newArray, array2);
                                  -   return newArray;
                                  -}
                                  -
                                  -this.extendArray = extendArray;
                                  -this.cloneArray = cloneArray;
                                  -
                                  -function arrayInsert(array, index, other)
                                  -{
                                  -   for (var i = 0; i < other.length; ++i)
                                  -       array.splice(i+index, 0, other[i]);
                                  -
                                  -   return array;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.createStyleSheet = function(doc, url)
                                  -{
                                  -    //TODO: xxxpedro
                                  -    //var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "style");
                                  -    var style = doc.createElementNS("http://www.w3.org/1999/xhtml", "link");
                                  -    style.setAttribute("charset","utf-8");
                                  -    style.firebugIgnore = true;
                                  -    style.setAttribute("rel", "stylesheet");
                                  -    style.setAttribute("type", "text/css");
                                  -    style.setAttribute("href", url);
                                  -    
                                  -    //TODO: xxxpedro
                                  -    //style.innerHTML = this.getResource(url);
                                  -    return style;
                                  -}
                                  -
                                  -this.addStyleSheet = function(doc, style)
                                  -{
                                  -    var heads = doc.getElementsByTagName("head");
                                  -    if (heads.length)
                                  -        heads[0].appendChild(style);
                                  -    else
                                  -        doc.documentElement.appendChild(style);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.getCSS = this.isIE ? 
                                  -    function(el, name)
                                  -    {
                                  -        return el.currentStyle[name] || el.style[name] || undefined;
                                  -    }
                                  -    :
                                  -    function(el, name)
                                  -    {
                                  -        return el.ownerDocument.defaultView.getComputedStyle(el,null)[name] 
                                  -            || el.style[name] || undefined;
                                  -    };
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String Util
                                  -
                                  -var reTrim = /^\s+|\s+$/g;
                                  -this.trim = function(s)
                                  -{
                                  -    return s.replace(reTrim, "");
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// String escaping
                                  -
                                  -this.escapeNewLines = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n");
                                  -};
                                  -
                                  -this.stripNewLines = function(value)
                                  -{
                                  -    return typeof(value) == "string" ? value.replace(/[\r\n]/g, " ") : value;
                                  -};
                                  -
                                  -this.escapeJS = function(value)
                                  -{
                                  -    return value.replace(/\r/g, "\\r").replace(/\n/g, "\\n").replace('"', '\\"', "g");
                                  -};
                                  -
                                  -function escapeHTMLAttribute(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return apos;
                                  -            case '"':
                                  -                return quot;
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    var apos = "&#39;", quot = "&quot;", around = '"';
                                  -    if( value.indexOf('"') == -1 ) {
                                  -        quot = '"';
                                  -        apos = "'";
                                  -    } else if( value.indexOf("'") == -1 ) {
                                  -        quot = '"';
                                  -        around = "'";
                                  -    }
                                  -    return around + (String(value).replace(/[&'"]/g, replaceChars)) + around;
                                  -}
                                  -
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    function replaceChars(ch)
                                  -    {
                                  -        switch (ch)
                                  -        {
                                  -            case "<":
                                  -                return "&lt;";
                                  -            case ">":
                                  -                return "&gt;";
                                  -            case "&":
                                  -                return "&amp;";
                                  -            case "'":
                                  -                return "&#39;";
                                  -            case '"':
                                  -                return "&quot;";
                                  -        }
                                  -        return "?";
                                  -    };
                                  -    return String(value).replace(/[<>&"']/g, replaceChars);
                                  -}
                                  -
                                  -this.escapeHTML = escapeHTML;
                                  -
                                  -this.cropString = function(text, limit)
                                  -{
                                  -    text = text + "";
                                  -
                                  -    if (!limit)
                                  -        var halfLimit = 50;
                                  -    else
                                  -        var halfLimit = limit / 2;
                                  -
                                  -    if (text.length > limit)
                                  -        return this.escapeNewLines(text.substr(0, halfLimit) + "..." + text.substr(text.length-halfLimit));
                                  -    else
                                  -        return this.escapeNewLines(text);
                                  -};
                                  -
                                  -this.isWhitespace = function(text)
                                  -{
                                  -    return !reNotWhitespace.exec(text);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.safeToString = function(ob)
                                  -{
                                  -    if (this.isIE)
                                  -        return ob + "";
                                  -    
                                  -    try
                                  -    {
                                  -        if (ob && "toString" in ob && typeof ob.toString == "function")
                                  -            return ob.toString();
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "[an object with no toString() function]";
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Empty
                                  -
                                  -this.emptyFn = function(){};
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Visibility
                                  -
                                  -this.isVisible = function(elt)
                                  -{
                                  -    /*
                                  -    if (elt instanceof XULElement)
                                  -    {
                                  -        //FBTrace.sysout("isVisible elt.offsetWidth: "+elt.offsetWidth+" offsetHeight:"+ elt.offsetHeight+" localName:"+ elt.localName+" nameSpace:"+elt.nameSpaceURI+"\n");
                                  -        return (!elt.hidden && !elt.collapsed);
                                  -    }
                                  -    /**/
                                  -    
                                  -    return this.getCSS(elt, "visibility") != "hidden" &&
                                  -        ( elt.offsetWidth > 0 || elt.offsetHeight > 0 
                                  -        || elt.tagName in invisibleTags
                                  -        || elt.namespaceURI == "http://www.w3.org/2000/svg"
                                  -        || elt.namespaceURI == "http://www.w3.org/1998/Math/MathML" );
                                  -};
                                  -
                                  -this.collapse = function(elt, collapsed)
                                  -{
                                  -    elt.setAttribute("collapsed", collapsed ? "true" : "false");
                                  -};
                                  -
                                  -this.obscure = function(elt, obscured)
                                  -{
                                  -    if (obscured)
                                  -        this.setClass(elt, "obscured");
                                  -    else
                                  -        this.removeClass(elt, "obscured");
                                  -};
                                  -
                                  -this.hide = function(elt, hidden)
                                  -{
                                  -    elt.style.visibility = hidden ? "hidden" : "visible";
                                  -};
                                  -
                                  -this.clearNode = function(node)
                                  -{
                                  -    var nodeName = " " + node.nodeName.toLowerCase() + " ";
                                  -    var ignoreTags = " table tbody thead tfoot th tr td ";
                                  -    
                                  -    // IE can't use innerHTML of table elements
                                  -    if (this.isIE && ignoreTags.indexOf(nodeName) != -1)
                                  -        this.eraseNode(node);
                                  -    else
                                  -        node.innerHTML = "";
                                  -};
                                  -
                                  -this.eraseNode = function(node)
                                  -{
                                  -    while (node.lastChild)
                                  -        node.removeChild(node.lastChild);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Window iteration
                                  -
                                  -this.iterateWindows = function(win, handler)
                                  -{
                                  -    if (!win || !win.document)
                                  -        return;
                                  -
                                  -    handler(win);
                                  -
                                  -    if (win == top || !win.frames) return; // XXXjjb hack for chromeBug
                                  -
                                  -    for (var i = 0; i < win.frames.length; ++i)
                                  -    {
                                  -        var subWin = win.frames[i];
                                  -        if (subWin != win)
                                  -            this.iterateWindows(subWin, handler);
                                  -    }
                                  -};
                                  -
                                  -this.getRootWindow = function(win)
                                  -{
                                  -    for (; win; win = win.parent)
                                  -    {
                                  -        if (!win.parent || win == win.parent || !this.instanceOf(win.parent, "Window"))
                                  -            return win;
                                  -    }
                                  -    return null;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Graphics
                                  -
                                  -this.getClientOffset = function(elt)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -
                                  -        var style = view.getComputedStyle(elt, "");
                                  -
                                  -        if (elt.offsetLeft)
                                  -            coords.x += elt.offsetLeft + parseInt(style.borderLeftWidth);
                                  -        if (elt.offsetTop)
                                  -            coords.y += elt.offsetTop + parseInt(style.borderTopWidth);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -                addOffset(p, coords, view);
                                  -        }
                                  -        else if (elt.ownerDocument.defaultView.frameElement)
                                  -            addOffset(elt.ownerDocument.defaultView.frameElement, coords, elt.ownerDocument.defaultView);
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -    {
                                  -        var view = elt.ownerDocument.defaultView;
                                  -        addOffset(elt, coords, view);
                                  -    }
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getViewOffset = function(elt, singleFrame)
                                  -{
                                  -    function addOffset(elt, coords, view)
                                  -    {
                                  -        var p = elt.offsetParent;
                                  -        coords.x += elt.offsetLeft - (p ? p.scrollLeft : 0);
                                  -        coords.y += elt.offsetTop - (p ? p.scrollTop : 0);
                                  -
                                  -        if (p)
                                  -        {
                                  -            if (p.nodeType == 1)
                                  -            {
                                  -                var parentStyle = view.getComputedStyle(p, "");
                                  -                if (parentStyle.position != "static")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -
                                  -                    if (p.localName == "TABLE")
                                  -                    {
                                  -                        coords.x += parseInt(parentStyle.paddingLeft);
                                  -                        coords.y += parseInt(parentStyle.paddingTop);
                                  -                    }
                                  -                    else if (p.localName == "BODY")
                                  -                    {
                                  -                        var style = view.getComputedStyle(elt, "");
                                  -                        coords.x += parseInt(style.marginLeft);
                                  -                        coords.y += parseInt(style.marginTop);
                                  -                    }
                                  -                }
                                  -                else if (p.localName == "BODY")
                                  -                {
                                  -                    coords.x += parseInt(parentStyle.borderLeftWidth);
                                  -                    coords.y += parseInt(parentStyle.borderTopWidth);
                                  -                }
                                  -
                                  -                var parent = elt.parentNode;
                                  -                while (p != parent)
                                  -                {
                                  -                    coords.x -= parent.scrollLeft;
                                  -                    coords.y -= parent.scrollTop;
                                  -                    parent = parent.parentNode;
                                  -                }
                                  -                addOffset(p, coords, view);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (elt.localName == "BODY")
                                  -            {
                                  -                var style = view.getComputedStyle(elt, "");
                                  -                coords.x += parseInt(style.borderLeftWidth);
                                  -                coords.y += parseInt(style.borderTopWidth);
                                  -
                                  -                var htmlStyle = view.getComputedStyle(elt.parentNode, "");
                                  -                coords.x -= parseInt(htmlStyle.paddingLeft);
                                  -                coords.y -= parseInt(htmlStyle.paddingTop);
                                  -            }
                                  -
                                  -            if (elt.scrollLeft)
                                  -                coords.x += elt.scrollLeft;
                                  -            if (elt.scrollTop)
                                  -                coords.y += elt.scrollTop;
                                  -
                                  -            var win = elt.ownerDocument.defaultView;
                                  -            if (win && (!singleFrame && win.frameElement))
                                  -                addOffset(win.frameElement, coords, win);
                                  -        }
                                  -
                                  -    }
                                  -
                                  -    var coords = {x: 0, y: 0};
                                  -    if (elt)
                                  -        addOffset(elt, coords, elt.ownerDocument.defaultView);
                                  -
                                  -    return coords;
                                  -};
                                  -
                                  -this.getLTRBWH = function(elt)
                                  -{
                                  -    var bcrect,
                                  -        dims = {"left": 0, "top": 0, "right": 0, "bottom": 0, "width": 0, "height": 0};
                                  -
                                  -    if (elt)
                                  -    {
                                  -        bcrect = elt.getBoundingClientRect();
                                  -        dims.left = bcrect.left;
                                  -        dims.top = bcrect.top;
                                  -        dims.right = bcrect.right;
                                  -        dims.bottom = bcrect.bottom;
                                  -
                                  -        if(bcrect.width)
                                  -        {
                                  -            dims.width = bcrect.width;
                                  -            dims.height = bcrect.height;
                                  -        }
                                  -        else
                                  -        {
                                  -            dims.width = dims.right - dims.left;
                                  -            dims.height = dims.bottom - dims.top;
                                  -        }
                                  -    }
                                  -    return dims;
                                  -};
                                  -
                                  -this.applyBodyOffsets = function(elt, clientRect)
                                  -{
                                  -    var od = elt.ownerDocument;
                                  -    if (!od.body)
                                  -        return clientRect;
                                  -
                                  -    var style = od.defaultView.getComputedStyle(od.body, null);
                                  -
                                  -    var pos = style.getPropertyValue('position');
                                  -    if(pos === 'absolute' || pos === 'relative')
                                  -    {
                                  -        var borderLeft = parseInt(style.getPropertyValue('border-left-width').replace('px', ''),10) || 0;
                                  -        var borderTop = parseInt(style.getPropertyValue('border-top-width').replace('px', ''),10) || 0;
                                  -        var paddingLeft = parseInt(style.getPropertyValue('padding-left').replace('px', ''),10) || 0;
                                  -        var paddingTop = parseInt(style.getPropertyValue('padding-top').replace('px', ''),10) || 0;
                                  -        var marginLeft = parseInt(style.getPropertyValue('margin-left').replace('px', ''),10) || 0;
                                  -        var marginTop = parseInt(style.getPropertyValue('margin-top').replace('px', ''),10) || 0;
                                  -
                                  -        var offsetX = borderLeft + paddingLeft + marginLeft;
                                  -        var offsetY = borderTop + paddingTop + marginTop;
                                  -
                                  -        clientRect.left -= offsetX;
                                  -        clientRect.top -= offsetY;
                                  -        clientRect.right -= offsetX;
                                  -        clientRect.bottom -= offsetY;
                                  -    }
                                  -
                                  -    return clientRect;
                                  -};
                                  -
                                  -this.getOffsetSize = function(elt)
                                  -{
                                  -    return {width: elt.offsetWidth, height: elt.offsetHeight};
                                  -};
                                  -
                                  -this.getOverflowParent = function(element)
                                  -{
                                  -    for (var scrollParent = element.parentNode; scrollParent; scrollParent = scrollParent.offsetParent)
                                  -    {
                                  -        if (scrollParent.scrollHeight > scrollParent.offsetHeight)
                                  -            return scrollParent;
                                  -    }
                                  -};
                                  -
                                  -this.isScrolledToBottom = function(element)
                                  -{
                                  -    var onBottom = (element.scrollTop + element.offsetHeight) == element.scrollHeight;
                                  -    if (FBTrace.DBG_CONSOLE)
                                  -        FBTrace.sysout("isScrolledToBottom offsetHeight: "+element.offsetHeight +" onBottom:"+onBottom);
                                  -    return onBottom;
                                  -};
                                  -
                                  -this.scrollToBottom = function(element)
                                  -{
                                  -        element.scrollTop = element.scrollHeight;
                                  -
                                  -        if (FBTrace.DBG_CONSOLE)
                                  -        {
                                  -            FBTrace.sysout("scrollToBottom reset scrollTop "+element.scrollTop+" = "+element.scrollHeight);
                                  -            if (element.scrollHeight == element.offsetHeight)
                                  -                FBTrace.sysout("scrollToBottom attempt to scroll non-scrollable element "+element, element);
                                  -        }
                                  -
                                  -        return (element.scrollTop == element.scrollHeight);
                                  -};
                                  -
                                  -this.move = function(element, x, y)
                                  -{
                                  -    element.style.left = x + "px";
                                  -    element.style.top = y + "px";
                                  -};
                                  -
                                  -this.resize = function(element, w, h)
                                  -{
                                  -    element.style.width = w + "px";
                                  -    element.style.height = h + "px";
                                  -};
                                  -
                                  -this.linesIntoCenterView = function(element, scrollBox)  // {before: int, after: int}
                                  -{
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    var topSpace = offset.y - scrollBox.scrollTop;
                                  -    var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -    if (topSpace < 0 || bottomSpace < 0)
                                  -    {
                                  -        var split = (scrollBox.clientHeight/2);
                                  -        var centerY = offset.y - split;
                                  -        scrollBox.scrollTop = centerY;
                                  -        topSpace = split;
                                  -        bottomSpace = split -  element.offsetHeight;
                                  -    }
                                  -
                                  -    return {before: Math.round((topSpace/element.offsetHeight) + 0.5),
                                  -            after: Math.round((bottomSpace/element.offsetHeight) + 0.5) }
                                  -};
                                  -
                                  -this.scrollIntoCenterView = function(element, scrollBox, notX, notY)
                                  -{
                                  -    if (!element)
                                  -        return;
                                  -
                                  -    if (!scrollBox)
                                  -        scrollBox = this.getOverflowParent(element);
                                  -
                                  -    if (!scrollBox)
                                  -        return;
                                  -
                                  -    var offset = this.getClientOffset(element);
                                  -
                                  -    if (!notY)
                                  -    {
                                  -        var topSpace = offset.y - scrollBox.scrollTop;
                                  -        var bottomSpace = (scrollBox.scrollTop + scrollBox.clientHeight)
                                  -            - (offset.y + element.offsetHeight);
                                  -
                                  -        if (topSpace < 0 || bottomSpace < 0)
                                  -        {
                                  -            var centerY = offset.y - (scrollBox.clientHeight/2);
                                  -            scrollBox.scrollTop = centerY;
                                  -        }
                                  -    }
                                  -
                                  -    if (!notX)
                                  -    {
                                  -        var leftSpace = offset.x - scrollBox.scrollLeft;
                                  -        var rightSpace = (scrollBox.scrollLeft + scrollBox.clientWidth)
                                  -            - (offset.x + element.clientWidth);
                                  -
                                  -        if (leftSpace < 0 || rightSpace < 0)
                                  -        {
                                  -            var centerX = offset.x - (scrollBox.clientWidth/2);
                                  -            scrollBox.scrollLeft = centerX;
                                  -        }
                                  -    }
                                  -    if (FBTrace.DBG_SOURCEFILES)
                                  -        FBTrace.sysout("lib.scrollIntoCenterView ","Element:"+element.innerHTML);
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// CSS classes
                                  -
                                  -this.hasClass = function(node, name) // className, className, ...
                                  -{
                                  -    if (!node || node.nodeType != 1)
                                  -        return false;
                                  -    else
                                  -    {
                                  -        for (var i=1; i<arguments.length; ++i)
                                  -        {
                                  -            var name = arguments[i];
                                  -            var re = new RegExp("(^|\\s)"+name+"($|\\s)");
                                  -            if (!re.exec(node.className))
                                  -                return false;
                                  -        }
                                  -
                                  -        return true;
                                  -    }
                                  -};
                                  -
                                  -this.setClass = function(node, name)
                                  -{
                                  -    if (node && !this.hasClass(node, name))
                                  -        node.className += " " + name;
                                  -};
                                  -
                                  -this.getClassValue = function(node, name)
                                  -{
                                  -    var re = new RegExp(name+"-([^ ]+)");
                                  -    var m = re.exec(node.className);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.removeClass = function(node, name)
                                  -{
                                  -    if (node && node.className)
                                  -    {
                                  -        var index = node.className.indexOf(name);
                                  -        if (index >= 0)
                                  -        {
                                  -            var size = name.length;
                                  -            node.className = node.className.substr(0,index-1) + node.className.substr(index+size);
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.toggleClass = function(elt, name)
                                  -{
                                  -    if (this.hasClass(elt, name))
                                  -        this.removeClass(elt, name);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -};
                                  -
                                  -this.setClassTimed = function(elt, name, context, timeout)
                                  -{
                                  -    if (!timeout)
                                  -        timeout = 1300;
                                  -
                                  -    if (elt.__setClassTimeout)
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -    else
                                  -        this.setClass(elt, name);
                                  -
                                  -    elt.__setClassTimeout = context.setTimeout(function()
                                  -    {
                                  -        delete elt.__setClassTimeout;
                                  -
                                  -        FBL.removeClass(elt, name);
                                  -    }, timeout);
                                  -};
                                  -
                                  -this.cancelClassTimed = function(elt, name, context)
                                  -{
                                  -    if (elt.__setClassTimeout)
                                  -    {
                                  -        FBL.removeClass(elt, name);
                                  -        context.clearTimeout(elt.__setClassTimeout);
                                  -        delete elt.__setClassTimeout;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM queries
                                  -
                                  -this.$ = function(id, doc)
                                  -{
                                  -    if (doc)
                                  -        return doc.getElementById(id);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.chrome.document.getElementById(id);
                                  -    }
                                  -};
                                  -
                                  -this.$$ = function(selector, doc)
                                  -{
                                  -    if (doc || !FBL.Firebug.chrome)
                                  -        return FBL.Firebug.Selector(selector, doc);
                                  -    else
                                  -    {
                                  -        return FBL.Firebug.Selector(selector, FBL.Firebug.chrome.document)
                                  -    }
                                  -};
                                  -
                                  -this.getChildByClass = function(node) // ,classname, classname, classname...
                                  -{
                                  -    for (var i = 1; i < arguments.length; ++i)
                                  -    {
                                  -        var className = arguments[i];
                                  -        var child = node.firstChild;
                                  -        node = null;
                                  -        for (; child; child = child.nextSibling)
                                  -        {
                                  -            if (this.hasClass(child, className))
                                  -            {
                                  -                node = child;
                                  -                break;
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return node;
                                  -};
                                  -
                                  -this.getAncestorByClass = function(node, className)
                                  -{
                                  -    for (var parent = node; parent; parent = parent.parentNode)
                                  -    {
                                  -        if (this.hasClass(parent, className))
                                  -            return parent;
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -
                                  -this.getElementsByClass = function(node, className)
                                  -{
                                  -    var result = [];
                                  -    
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        if (this.hasClass(child, className))
                                  -            result.push(child);
                                  -    }
                                  -
                                  -    return result;
                                  -};
                                  -
                                  -this.getElementByClass = function(node, className)  // className, className, ...
                                  -{
                                  -    var args = cloneArray(arguments); args.splice(0, 1);
                                  -    for (var child = node.firstChild; child; child = child.nextSibling)
                                  -    {
                                  -        var args1 = cloneArray(args); args1.unshift(child);
                                  -        if (FBL.hasClass.apply(null, args1))
                                  -            return child;
                                  -        else
                                  -        {
                                  -            var found = FBL.getElementByClass.apply(null, args1);
                                  -            if (found)
                                  -                return found;
                                  -        }
                                  -    }
                                  -
                                  -    return null;
                                  -};
                                  -
                                  -this.getBody = function(doc)
                                  -{
                                  -    if (doc.body)
                                  -        return doc.body;
                                  -
                                  -    var body = doc.getElementsByTagName("body")[0];
                                  -    if (body)
                                  -        return body;
                                  -
                                  -    return doc.firstChild;  // For non-HTML docs
                                  -};
                                  -
                                  -this.isElement = function(o)
                                  -{
                                  -    try {
                                  -        return o && this.instanceOf(o, "Element");
                                  -    }
                                  -    catch (ex) {
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM creation
                                  -
                                  -this.createElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = properties.document || FBL.Firebug.chrome.document;
                                  -    
                                  -    var element = doc.createElement(tagName);
                                  -    
                                  -    for(var name in properties)
                                  -    {
                                  -        if (name != "document")
                                  -        {
                                  -            element[name] = properties[name];
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -this.createGlobalElement = function(tagName, properties)
                                  -{
                                  -    properties = properties || {};
                                  -    var doc = FBL.Env.browser.document;
                                  -    
                                  -    var element = this.NS && doc.createElementNS ? 
                                  -            doc.createElementNS(FBL.NS, tagName) :
                                  -            doc.createElement(tagName); 
                                  -            
                                  -    for(var name in properties)
                                  -    {
                                  -        var propname = name;
                                  -        if (FBL.isIE && name == "class") propname = "className";
                                  -        
                                  -        if (name != "document")
                                  -        {
                                  -            element.setAttribute(propname, properties[name]);
                                  -        }
                                  -    }
                                  -    
                                  -    return element;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Events
                                  -
                                  -this.isLeftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isMiddleClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 4 : event.button == 1) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.isRightClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 2 : event.button == 2) && this.noKeyModifiers(event);
                                  -};
                                  -
                                  -this.noKeyModifiers = function(event)
                                  -{
                                  -    return !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey;
                                  -};
                                  -
                                  -this.isControlClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.isControl(event);
                                  -};
                                  -
                                  -this.isShiftClick = function(event)
                                  -{
                                  -    return (this.isIE && event.type != "click" ? event.button == 1 : event.button == 0) && this.isShift(event);
                                  -};
                                  -
                                  -this.isControl = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && !event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isControlShift = function(event)
                                  -{
                                  -    return (event.metaKey || event.ctrlKey) && event.shiftKey && !event.altKey;
                                  -};
                                  -
                                  -this.isShift = function(event)
                                  -{
                                  -    return event.shiftKey && !event.metaKey && !event.ctrlKey && !event.altKey;
                                  -};
                                  -
                                  -this.addEvent = function(object, name, handler)
                                  -{
                                  -    if (object.addEventListener)
                                  -        object.addEventListener(name, handler, false);
                                  -    else
                                  -        object.attachEvent("on"+name, handler);
                                  -};
                                  -
                                  -this.removeEvent = function(object, name, handler)
                                  -{
                                  -    try
                                  -    {
                                  -        if (object.removeEventListener)
                                  -            object.removeEventListener(name, handler, false);
                                  -        else
                                  -            object.detachEvent("on"+name, handler);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("FBL.removeEvent error: ", object, name);
                                  -    }
                                  -};
                                  -
                                  -this.cancelEvent = function(e, preventDefault)
                                  -{
                                  -    if (!e) return;
                                  -    
                                  -    if (preventDefault)
                                  -    {
                                  -                if (e.preventDefault)
                                  -                    e.preventDefault();
                                  -                else
                                  -                    e.returnValue = false;
                                  -    }
                                  -    
                                  -    if (e.stopPropagation)
                                  -        e.stopPropagation();
                                  -    else
                                  -        e.cancelBubble = true;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.addGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.addEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.addEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.addEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -this.removeGlobalEvent = function(name, handler)
                                  -{
                                  -    var doc = this.Firebug.browser.document;
                                  -    var frames = this.Firebug.browser.window.frames;
                                  -    
                                  -    this.removeEvent(doc, name, handler);
                                  -    
                                  -    if (this.Firebug.chrome.type == "popup")
                                  -        this.removeEvent(this.Firebug.chrome.document, name, handler);
                                  -  
                                  -    for (var i = 0, frame; frame = frames[i]; i++)
                                  -    {
                                  -        try
                                  -        {
                                  -            this.removeEvent(frame.document, name, handler);
                                  -        }
                                  -        catch(E)
                                  -        {
                                  -            // Avoid acess denied
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.dispatch = function(listeners, name, args)
                                  -{
                                  -    try
                                  -    {
                                  -        if (typeof listeners.length != "undefined")
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to "+listeners.length+" listeners");
                                  -    
                                  -            for (var i = 0; i < listeners.length; ++i)
                                  -            {
                                  -                var listener = listeners[i];
                                  -                if ( listener.hasOwnProperty(name) )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_DISPATCH) FBTrace.sysout("FBL.dispatch", name+" to listeners of an object");
                                  -            
                                  -            for (var prop in listeners)
                                  -            {
                                  -                var listener = listeners[prop];
                                  -                if ( listeners.hasOwnProperty(prop) && listener[name] )
                                  -                    listener[name].apply(listener, args);
                                  -            }
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -        {
                                  -            FBTrace.sysout(" Exception in lib.dispatch "+ name, exc);
                                  -            //FBTrace.dumpProperties(" Exception in lib.dispatch listener", listener);
                                  -        }
                                  -        /**/
                                  -    }
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var disableTextSelectionHandler = function(event)
                                  -{
                                  -    FBL.cancelEvent(event, true);
                                  -    
                                  -    return false;
                                  -};
                                  -
                                  -this.disableTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.addEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "user-select: none; -khtml-user-select: none; -moz-user-select: none;"
                                  -        
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox) 
                                  -            this.addEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -    
                                  -    e.style.cursor = "default";
                                  -};
                                  -
                                  -this.restoreTextSelection = function(e)
                                  -{
                                  -    if (typeof e.onselectstart != "undefined") // IE
                                  -        this.removeEvent(e, "selectstart", disableTextSelectionHandler);
                                  -        
                                  -    else // others
                                  -    {
                                  -        e.style.cssText = "cursor: default;"
                                  -            
                                  -        // canceling the event in FF will prevent the menu popups to close when clicking over 
                                  -        // text-disabled elements
                                  -        if (!this.isFirefox)
                                  -            this.removeEvent(e, "mousedown", disableTextSelectionHandler);
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Events
                                  -
                                  -var eventTypes =
                                  -{
                                  -    composition: [
                                  -        "composition",
                                  -        "compositionstart",
                                  -        "compositionend" ],
                                  -    contextmenu: [
                                  -        "contextmenu" ],
                                  -    drag: [
                                  -        "dragenter",
                                  -        "dragover",
                                  -        "dragexit",
                                  -        "dragdrop",
                                  -        "draggesture" ],
                                  -    focus: [
                                  -        "focus",
                                  -        "blur" ],
                                  -    form: [
                                  -        "submit",
                                  -        "reset",
                                  -        "change",
                                  -        "select",
                                  -        "input" ],
                                  -    key: [
                                  -        "keydown",
                                  -        "keyup",
                                  -        "keypress" ],
                                  -    load: [
                                  -        "load",
                                  -        "beforeunload",
                                  -        "unload",
                                  -        "abort",
                                  -        "error" ],
                                  -    mouse: [
                                  -        "mousedown",
                                  -        "mouseup",
                                  -        "click",
                                  -        "dblclick",
                                  -        "mouseover",
                                  -        "mouseout",
                                  -        "mousemove" ],
                                  -    mutation: [
                                  -        "DOMSubtreeModified",
                                  -        "DOMNodeInserted",
                                  -        "DOMNodeRemoved",
                                  -        "DOMNodeRemovedFromDocument",
                                  -        "DOMNodeInsertedIntoDocument",
                                  -        "DOMAttrModified",
                                  -        "DOMCharacterDataModified" ],
                                  -    paint: [
                                  -        "paint",
                                  -        "resize",
                                  -        "scroll" ],
                                  -    scroll: [
                                  -        "overflow",
                                  -        "underflow",
                                  -        "overflowchanged" ],
                                  -    text: [
                                  -        "text" ],
                                  -    ui: [
                                  -        "DOMActivate",
                                  -        "DOMFocusIn",
                                  -        "DOMFocusOut" ],
                                  -    xul: [
                                  -        "popupshowing",
                                  -        "popupshown",
                                  -        "popuphiding",
                                  -        "popuphidden",
                                  -        "close",
                                  -        "command",
                                  -        "broadcast",
                                  -        "commandupdate" ]
                                  -};
                                  -
                                  -this.getEventFamily = function(eventType)
                                  -{
                                  -    if (!this.families)
                                  -    {
                                  -        this.families = {};
                                  -
                                  -        for (var family in eventTypes)
                                  -        {
                                  -            var types = eventTypes[family];
                                  -            for (var i = 0; i < types.length; ++i)
                                  -                this.families[types[i]] = family;
                                  -        }
                                  -    }
                                  -
                                  -    return this.families[eventType];
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// URLs
                                  -
                                  -this.getFileName = function(url)
                                  -{
                                  -    var split = this.splitURLBase(url);
                                  -    return split.name;
                                  -};
                                  -
                                  -this.splitURLBase = function(url)
                                  -{
                                  -    if (this.isDataURL(url))
                                  -        return this.splitDataURL(url);
                                  -    return this.splitURLTrue(url);
                                  -};
                                  -
                                  -this.splitDataURL = function(url)
                                  -{
                                  -    var mark = url.indexOf(':', 3);
                                  -    if (mark != 4)
                                  -        return false;   //  the first 5 chars must be 'data:'
                                  -
                                  -    var point = url.indexOf(',', mark+1);
                                  -    if (point < mark)
                                  -        return false; // syntax error
                                  -
                                  -    var props = { encodedContent: url.substr(point+1) };
                                  -
                                  -    var metadataBuffer = url.substr(mark+1, point);
                                  -    var metadata = metadataBuffer.split(';');
                                  -    for (var i = 0; i < metadata.length; i++)
                                  -    {
                                  -        var nv = metadata[i].split('=');
                                  -        if (nv.length == 2)
                                  -            props[nv[0]] = nv[1];
                                  -    }
                                  -
                                  -    // Additional Firebug-specific properties
                                  -    if (props.hasOwnProperty('fileName'))
                                  -    {
                                  -         var caller_URL = decodeURIComponent(props['fileName']);
                                  -         var caller_split = this.splitURLTrue(caller_URL);
                                  -
                                  -        if (props.hasOwnProperty('baseLineNumber'))  // this means it's probably an eval()
                                  -        {
                                  -            props['path'] = caller_split.path;
                                  -            props['line'] = props['baseLineNumber'];
                                  -            var hint = decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -            props['name'] =  'eval->'+hint;
                                  -        }
                                  -        else
                                  -        {
                                  -            props['name'] = caller_split.name;
                                  -            props['path'] = caller_split.path;
                                  -        }
                                  -    }
                                  -    else
                                  -    {
                                  -        if (!props.hasOwnProperty('path'))
                                  -            props['path'] = "data:";
                                  -        if (!props.hasOwnProperty('name'))
                                  -            props['name'] =  decodeURIComponent(props['encodedContent'].substr(0,200)).replace(/\s*$/, "");
                                  -    }
                                  -
                                  -    return props;
                                  -};
                                  -
                                  -this.splitURLTrue = function(url)
                                  -{
                                  -    var m = reSplitFile.exec(url);
                                  -    if (!m)
                                  -        return {name: url, path: url};
                                  -    else if (!m[2])
                                  -        return {path: m[1], name: m[1]};
                                  -    else
                                  -        return {path: m[1], name: m[2]+m[3]};
                                  -};
                                  -
                                  -this.getFileExtension = function(url)
                                  -{
                                  -    var lastDot = url.lastIndexOf(".");
                                  -    return url.substr(lastDot+1);
                                  -};
                                  -
                                  -this.isSystemURL = function(url)
                                  -{
                                  -    if (!url) return true;
                                  -    if (url.length == 0) return true;
                                  -    if (url[0] == 'h') return false;
                                  -    if (url.substr(0, 9) == "resource:")
                                  -        return true;
                                  -    else if (url.substr(0, 16) == "chrome://firebug")
                                  -        return true;
                                  -    else if (url  == "XPCSafeJSObjectWrapper.cpp")
                                  -        return true;
                                  -    else if (url.substr(0, 6) == "about:")
                                  -        return true;
                                  -    else if (url.indexOf("firebug-service.js") != -1)
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isSystemPage = function(win)
                                  -{
                                  -    try
                                  -    {
                                  -        var doc = win.document;
                                  -        if (!doc)
                                  -            return false;
                                  -
                                  -        // Detect pages for pretty printed XML
                                  -        if ((doc.styleSheets.length && doc.styleSheets[0].href
                                  -                == "chrome://global/content/xml/XMLPrettyPrint.css")
                                  -            || (doc.styleSheets.length > 1 && doc.styleSheets[1].href
                                  -                == "chrome://browser/skin/feeds/subscribe.css"))
                                  -            return true;
                                  -
                                  -        return FBL.isSystemURL(win.location.href);
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        // Sometimes documents just aren't ready to be manipulated here, but don't let that
                                  -        // gum up the works
                                  -        ERROR("tabWatcher.isSystemPage document not ready:"+ exc);
                                  -        return false;
                                  -    }
                                  -};
                                  -
                                  -this.getURIHost = function(uri)
                                  -{
                                  -    try
                                  -    {
                                  -        if (uri)
                                  -            return uri.host;
                                  -        else
                                  -            return "";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return "";
                                  -    }
                                  -};
                                  -
                                  -this.isLocalURL = function(url)
                                  -{
                                  -    if (url.substr(0, 5) == "file:")
                                  -        return true;
                                  -    else if (url.substr(0, 8) == "wyciwyg:")
                                  -        return true;
                                  -    else
                                  -        return false;
                                  -};
                                  -
                                  -this.isDataURL = function(url)
                                  -{
                                  -    return (url && url.substr(0,5) == "data:");
                                  -};
                                  -
                                  -this.getLocalPath = function(url)
                                  -{
                                  -    if (this.isLocalURL(url))
                                  -    {
                                  -        var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -        var file = fileHandler.getFileFromURLSpec(url);
                                  -        return file.path;
                                  -    }
                                  -};
                                  -
                                  -this.getURLFromLocalFile = function(file)
                                  -{
                                  -    var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Ci.nsIFileProtocolHandler);
                                  -    var URL = fileHandler.getURLSpecFromFile(file);
                                  -    return URL;
                                  -};
                                  -
                                  -this.getDataURLForContent = function(content, url)
                                  -{
                                  -    // data:text/javascript;fileName=x%2Cy.js;baseLineNumber=10,<the-url-encoded-data>
                                  -    var uri = "data:text/html;";
                                  -    uri += "fileName="+encodeURIComponent(url)+ ","
                                  -    uri += encodeURIComponent(content);
                                  -    return uri;
                                  -},
                                  -
                                  -this.getDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}([^\/]+)/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getURLPath = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}[^\/]+(\/.*?)$/.exec(url);
                                  -    return m ? m[1] : "";
                                  -};
                                  -
                                  -this.getPrettyDomain = function(url)
                                  -{
                                  -    var m = /[^:]+:\/{1,3}(www\.)?([^\/]+)/.exec(url);
                                  -    return m ? m[2] : "";
                                  -};
                                  -
                                  -this.absoluteURL = function(url, baseURL)
                                  -{
                                  -    return this.absoluteURLWithDots(url, baseURL).replace("/./", "/", "g");
                                  -};
                                  -
                                  -this.absoluteURLWithDots = function(url, baseURL)
                                  -{
                                  -    if (url[0] == "?")
                                  -        return baseURL + url;
                                  -
                                  -    var reURL = /(([^:]+:)\/{1,2}[^\/]*)(.*?)$/;
                                  -    var m = reURL.exec(url);
                                  -    if (m)
                                  -        return url;
                                  -
                                  -    var m = reURL.exec(baseURL);
                                  -    if (!m)
                                  -        return "";
                                  -
                                  -    var head = m[1];
                                  -    var tail = m[3];
                                  -    if (url.substr(0, 2) == "//")
                                  -        return m[2] + url;
                                  -    else if (url[0] == "/")
                                  -    {
                                  -        return head + url;
                                  -    }
                                  -    else if (tail[tail.length-1] == "/")
                                  -        return baseURL + url;
                                  -    else
                                  -    {
                                  -        var parts = tail.split("/");
                                  -        return head + parts.slice(0, parts.length-1).join("/") + "/" + url;
                                  -    }
                                  -};
                                  -
                                  -this.normalizeURL = function(url)  // this gets called a lot, any performance improvement welcome
                                  -{
                                  -    if (!url)
                                  -        return "";
                                  -    // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -    if (url.length < 255) // guard against monsters.
                                  -    {
                                  -        // Replace one or more characters that are not forward-slash followed by /.., by space.
                                  -        url = url.replace(/[^/]+\/\.\.\//, "", "g");
                                  -        // Issue 1496, avoid #
                                  -        url = url.replace(/#.*/,"");
                                  -        // For some reason, JSDS reports file URLs like "file:/" instead of "file:///", so they
                                  -        // don't match up with the URLs we get back from the DOM
                                  -        url = url.replace(/file:\/([^/])/g, "file:///$1");
                                  -        if (url.indexOf('chrome:')==0)
                                  -        {
                                  -            var m = reChromeCase.exec(url);  // 1 is package name, 2 is path
                                  -            if (m)
                                  -            {
                                  -                url = "chrome://"+m[1].toLowerCase()+"/"+m[2];
                                  -            }
                                  -        }
                                  -    }
                                  -    return url;
                                  -};
                                  -
                                  -this.denormalizeURL = function(url)
                                  -{
                                  -    return url.replace(/file:\/\/\//g, "file:/");
                                  -};
                                  -
                                  -this.parseURLParams = function(url)
                                  -{
                                  -    var q = url ? url.indexOf("?") : -1;
                                  -    if (q == -1)
                                  -        return [];
                                  -
                                  -    var search = url.substr(q+1);
                                  -    var h = search.lastIndexOf("#");
                                  -    if (h != -1)
                                  -        search = search.substr(0, h);
                                  -
                                  -    if (!search)
                                  -        return [];
                                  -
                                  -    return this.parseURLEncodedText(search);
                                  -};
                                  -
                                  -this.parseURLEncodedText = function(text)
                                  -{
                                  -    var maxValueLength = 25000;
                                  -
                                  -    var params = [];
                                  -
                                  -    // Unescape '+' characters that are used to encode a space.
                                  -    // See section 2.2.in RFC 3986: http://www.ietf.org/rfc/rfc3986.txt
                                  -    text = text.replace(/\+/g, " ");
                                  -
                                  -    var args = text.split("&");
                                  -    for (var i = 0; i < args.length; ++i)
                                  -    {
                                  -        try {
                                  -            var parts = args[i].split("=");
                                  -            if (parts.length == 2)
                                  -            {
                                  -                if (parts[1].length > maxValueLength)
                                  -                    parts[1] = this.$STR("LargeData");
                                  -
                                  -                params.push({name: decodeURIComponent(parts[0]), value: decodeURIComponent(parts[1])});
                                  -            }
                                  -            else
                                  -                params.push({name: decodeURIComponent(parts[0]), value: ""});
                                  -        }
                                  -        catch (e)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION ", e);
                                  -                FBTrace.sysout("parseURLEncodedText EXCEPTION URI", args[i]);
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    params.sort(function(a, b) { return a.name <= b.name ? -1 : 1; });
                                  -
                                  -    return params;
                                  -};
                                  -
                                  -this.reEncodeURL= function(file, text)
                                  -{
                                  -    var lines = text.split("\n");
                                  -    var params = this.parseURLEncodedText(lines[lines.length-1]);
                                  -
                                  -    var args = [];
                                  -    for (var i = 0; i < params.length; ++i)
                                  -        args.push(encodeURIComponent(params[i].name)+"="+encodeURIComponent(params[i].value));
                                  -
                                  -    var url = file.href;
                                  -    url += (url.indexOf("?") == -1 ? "?" : "&") + args.join("&");
                                  -
                                  -    return url;
                                  -};
                                  -
                                  -this.getResource = function(aURL)
                                  -{
                                  -    try
                                  -    {
                                  -        var channel=ioService.newChannel(aURL,null,null);
                                  -        var input=channel.open();
                                  -        return FBL.readFromStream(input);
                                  -    }
                                  -    catch (e)
                                  -    {
                                  -        if (FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("lib.getResource FAILS for "+aURL, e);
                                  -    }
                                  -};
                                  -
                                  -this.parseJSONString = function(jsonString, originURL)
                                  -{
                                  -    // See if this is a Prototype style *-secure request.
                                  -    var regex = new RegExp(/^\/\*-secure-([\s\S]*)\*\/\s*$/);
                                  -    var matches = regex.exec(jsonString);
                                  -
                                  -    if (matches)
                                  -    {
                                  -        jsonString = matches[1];
                                  -
                                  -        if (jsonString[0] == "\\" && jsonString[1] == "n")
                                  -            jsonString = jsonString.substr(2);
                                  -
                                  -        if (jsonString[jsonString.length-2] == "\\" && jsonString[jsonString.length-1] == "n")
                                  -            jsonString = jsonString.substr(0, jsonString.length-2);
                                  -    }
                                  -
                                  -    if (jsonString.indexOf("&&&START&&&"))
                                  -    {
                                  -        regex = new RegExp(/&&&START&&& (.+) &&&END&&&/);
                                  -        matches = regex.exec(jsonString);
                                  -        if (matches)
                                  -            jsonString = matches[1];
                                  -    }
                                  -
                                  -    // throw on the extra parentheses
                                  -    jsonString = "(" + jsonString + ")";
                                  -
                                  -    var s = Components.utils.Sandbox(originURL);
                                  -    var jsonObject = null;
                                  -
                                  -    try
                                  -    {
                                  -        jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -    }
                                  -    catch(e)
                                  -    {
                                  -        if (e.message.indexOf("is not defined"))
                                  -        {
                                  -            var parts = e.message.split(" ");
                                  -            s[parts[0]] = function(str){ return str; };
                                  -            try {
                                  -                jsonObject = Components.utils.evalInSandbox(jsonString, s);
                                  -            } catch(ex) {
                                  -                if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                    FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -                return null;
                                  -            }
                                  -        }
                                  -        else
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS || FBTrace.DBG_JSONVIEWER)
                                  -                FBTrace.sysout("jsonviewer.parseJSON EXCEPTION", e);
                                  -            return null;
                                  -        }
                                  -    }
                                  -
                                  -    return jsonObject;
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.objectToString = function(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// Opera Tab Fix
                                  -
                                  -function onOperaTabBlur(e)
                                  -{
                                  -    if (this.lastKey == 9)
                                  -      this.focus();
                                  -};
                                  -
                                  -function onOperaTabKeyDown(e)
                                  -{
                                  -    this.lastKey = e.keyCode;
                                  -};
                                  -
                                  -function onOperaTabFocus(e)
                                  -{
                                  -    this.lastKey = null;
                                  -};
                                  -
                                  -this.fixOperaTabKey = function(el)
                                  -{
                                  -    el.onfocus = onOperaTabFocus;
                                  -    el.onblur = onOperaTabBlur;
                                  -    el.onkeydown = onOperaTabKeyDown;
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.Property = function(object, name)
                                  -{
                                  -    this.object = object;
                                  -    this.name = name;
                                  -
                                  -    this.getObject = function()
                                  -    {
                                  -        return object[name];
                                  -    };
                                  -};
                                  -
                                  -this.ErrorCopy = function(message)
                                  -{
                                  -    this.message = message;
                                  -};
                                  -
                                  -function EventCopy(event)
                                  -{
                                  -    // Because event objects are destroyed arbitrarily by Gecko, we must make a copy of them to
                                  -    // represent them long term in the inspector.
                                  -    for (var name in event)
                                  -    {
                                  -        try {
                                  -            this[name] = event[name];
                                  -        } catch (exc) { }
                                  -    }
                                  -}
                                  -
                                  -this.EventCopy = EventCopy;
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Type Checking
                                  -
                                  -var toString = Object.prototype.toString;
                                  -var reFunction = /^\s*function(\s+[\w_$][\w\d_$]*)?\s*\(/; 
                                  -
                                  -this.isArray = function(object) {
                                  -    return toString.call(object) === '[object Array]'; 
                                  -};
                                  -
                                  -this.isFunction = function(object) {
                                  -    if (!object) return false;
                                  -    
                                  -    return toString.call(object) === "[object Function]" || 
                                  -            this.isIE && typeof object != "string" && reFunction.test(""+object);
                                  -};
                                  -    
                                  -
                                  -// ************************************************************************************************
                                  -// Instance Checking
                                  -
                                  -this.instanceOf = function(object, className)
                                  -{
                                  -    if (!object || typeof object != "object")
                                  -        return false;
                                  -    
                                  -    // Try to use the native instanceof operator. We can only use it when we know
                                  -    // exactly the window where the object is located at
                                  -    if (object.ownerDocument)
                                  -    {
                                  -        // find the correct window of the object
                                  -        var win = object.ownerDocument.defaultView || object.ownerDocument.parentWindow;
                                  -        
                                  -        // if the class is acessible in the window, uses the native instanceof operator
                                  -        if (className in win)
                                  -            return object instanceof win[className];
                                  -    }
                                  -    
                                  -    var cache = instanceCheckMap[className];
                                  -    if (!cache)
                                  -        return false;
                                  -
                                  -    for(var n in cache)
                                  -    {
                                  -        var obj = cache[n];
                                  -        var type = typeof obj;
                                  -        obj = type == "object" ? obj : [obj];
                                  -        
                                  -        for(var name in obj)
                                  -        {
                                  -            var value = obj[name];
                                  -            
                                  -            if( n == "property" && !(value in object) ||
                                  -                n == "method" && !this.isFunction(object[value]) ||
                                  -                n == "value" && (""+object[name]).toLowerCase() != (""+value).toLowerCase() )
                                  -                    return false;
                                  -        }
                                  -    }
                                  -    
                                  -    return true;
                                  -};
                                  -
                                  -var instanceCheckMap = 
                                  -{
                                  -    // DuckTypeCheck:
                                  -    // {
                                  -    //     property: ["window", "document"],
                                  -    //     method: "setTimeout",
                                  -    //     value: {nodeType: 1}
                                  -    // },
                                  -    
                                  -    Window:
                                  -    {
                                  -        property: ["window", "document"],
                                  -        method: "setTimeout"
                                  -    },
                                  -    
                                  -    Document:
                                  -    {
                                  -        property: ["body", "cookie"],
                                  -        method: "getElementById"
                                  -    },
                                  -    
                                  -    Node:
                                  -    {
                                  -        property: "ownerDocument",
                                  -        method: "appendChild"
                                  -    },
                                  -    
                                  -    Element:
                                  -    {
                                  -        property: "tagName",
                                  -        value: {nodeType: 1}
                                  -    },
                                  -    
                                  -    Location:
                                  -    {
                                  -        property: ["hostname", "protocol"],
                                  -        method: "assign"
                                  -    },
                                  -    
                                  -    HTMLImageElement:
                                  -    {
                                  -        property: "useMap",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "img"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLAnchorElement:
                                  -    {
                                  -        property: "hreflang",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "a"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLInputElement:
                                  -    {
                                  -        property: "form",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "input"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLButtonElement:
                                  -    {
                                  -        // ?        
                                  -    },
                                  -    
                                  -    HTMLFormElement:
                                  -    {
                                  -        method: "submit",
                                  -        value:
                                  -        {
                                  -            nodeType: 1,
                                  -            tagName: "form"
                                  -        }
                                  -    },
                                  -    
                                  -    HTMLBodyElement:
                                  -    {
                                  -        
                                  -    },
                                  -    
                                  -    HTMLHtmlElement:
                                  -    {
                                  -        
                                  -    }
                                  -    
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// DOM Constants
                                  -
                                  -this.getDOMMembers = function(object)
                                  -{
                                  -    if (!domMemberCache)
                                  -    {
                                  -        domMemberCache = {};
                                  -        
                                  -        for (var name in domMemberMap)
                                  -        {
                                  -            var builtins = domMemberMap[name];
                                  -            var cache = domMemberCache[name] = {};
                                  -
                                  -            for (var i = 0; i < builtins.length; ++i)
                                  -                cache[builtins[i]] = i;
                                  -        }
                                  -    }
                                  -    
                                  -    try
                                  -    {
                                  -        if (this.instanceOf(object, "Window"))
                                  -            { return domMemberCache.Window; }
                                  -        else if (object instanceof Document || object instanceof XMLDocument)
                                  -            { return domMemberCache.Document; }
                                  -        else if (object instanceof Location)
                                  -            { return domMemberCache.Location; }
                                  -        else if (object instanceof HTMLImageElement)
                                  -            { return domMemberCache.HTMLImageElement; }
                                  -        else if (object instanceof HTMLAnchorElement)
                                  -            { return domMemberCache.HTMLAnchorElement; }
                                  -        else if (object instanceof HTMLInputElement)
                                  -            { return domMemberCache.HTMLInputElement; }
                                  -        else if (object instanceof HTMLButtonElement)
                                  -            { return domMemberCache.HTMLButtonElement; }
                                  -        else if (object instanceof HTMLFormElement)
                                  -            { return domMemberCache.HTMLFormElement; }
                                  -        else if (object instanceof HTMLBodyElement)
                                  -            { return domMemberCache.HTMLBodyElement; }
                                  -        else if (object instanceof HTMLHtmlElement)
                                  -            { return domMemberCache.HTMLHtmlElement; }
                                  -        else if (object instanceof HTMLScriptElement)
                                  -            { return domMemberCache.HTMLScriptElement; }
                                  -        else if (object instanceof HTMLTableElement)
                                  -            { return domMemberCache.HTMLTableElement; }
                                  -        else if (object instanceof HTMLTableRowElement)
                                  -            { return domMemberCache.HTMLTableRowElement; }
                                  -        else if (object instanceof HTMLTableCellElement)
                                  -            { return domMemberCache.HTMLTableCellElement; }
                                  -        else if (object instanceof HTMLIFrameElement)
                                  -            { return domMemberCache.HTMLIFrameElement; }
                                  -        else if (object instanceof SVGSVGElement)
                                  -            { return domMemberCache.SVGSVGElement; }
                                  -        else if (object instanceof SVGElement)
                                  -            { return domMemberCache.SVGElement; }
                                  -        else if (object instanceof Element)
                                  -            { return domMemberCache.Element; }
                                  -        else if (object instanceof Text || object instanceof CDATASection)
                                  -            { return domMemberCache.Text; }
                                  -        else if (object instanceof Attr)
                                  -            { return domMemberCache.Attr; }
                                  -        else if (object instanceof Node)
                                  -            { return domMemberCache.Node; }
                                  -        else if (object instanceof Event || object instanceof EventCopy)
                                  -            { return domMemberCache.Event; }
                                  -        else
                                  -            return {};
                                  -    }
                                  -    catch(E)
                                  -    {
                                  -        return {};
                                  -    }
                                  -};
                                  -
                                  -this.isDOMMember = function(object, propName)
                                  -{
                                  -    var members = this.getDOMMembers(object);
                                  -    return members && propName in members;
                                  -};
                                  -
                                  -var domMemberCache = null;
                                  -var domMemberMap = {};
                                  -
                                  -domMemberMap.Window =
                                  -[
                                  -    "document",
                                  -    "frameElement",
                                  -
                                  -    "innerWidth",
                                  -    "innerHeight",
                                  -    "outerWidth",
                                  -    "outerHeight",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "pageXOffset",
                                  -    "pageYOffset",
                                  -    "scrollX",
                                  -    "scrollY",
                                  -    "scrollMaxX",
                                  -    "scrollMaxY",
                                  -
                                  -    "status",
                                  -    "defaultStatus",
                                  -
                                  -    "parent",
                                  -    "opener",
                                  -    "top",
                                  -    "window",
                                  -    "content",
                                  -    "self",
                                  -
                                  -    "location",
                                  -    "history",
                                  -    "frames",
                                  -    "navigator",
                                  -    "screen",
                                  -    "menubar",
                                  -    "toolbar",
                                  -    "locationbar",
                                  -    "personalbar",
                                  -    "statusbar",
                                  -    "directories",
                                  -    "scrollbars",
                                  -    "fullScreen",
                                  -    "netscape",
                                  -    "java",
                                  -    "console",
                                  -    "Components",
                                  -    "controllers",
                                  -    "closed",
                                  -    "crypto",
                                  -    "pkcs11",
                                  -
                                  -    "name",
                                  -    "property",
                                  -    "length",
                                  -
                                  -    "sessionStorage",
                                  -    "globalStorage",
                                  -
                                  -    "setTimeout",
                                  -    "setInterval",
                                  -    "clearTimeout",
                                  -    "clearInterval",
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "getComputedStyle",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "enableExternalCapture",
                                  -    "disableExternalCapture",
                                  -    "moveTo",
                                  -    "moveBy",
                                  -    "resizeTo",
                                  -    "resizeBy",
                                  -    "scroll",
                                  -    "scrollTo",
                                  -    "scrollBy",
                                  -    "scrollByLines",
                                  -    "scrollByPages",
                                  -    "sizeToContent",
                                  -    "setResizable",
                                  -    "getSelection",
                                  -    "open",
                                  -    "openDialog",
                                  -    "close",
                                  -    "alert",
                                  -    "confirm",
                                  -    "prompt",
                                  -    "dump",
                                  -    "focus",
                                  -    "blur",
                                  -    "find",
                                  -    "back",
                                  -    "forward",
                                  -    "home",
                                  -    "stop",
                                  -    "print",
                                  -    "atob",
                                  -    "btoa",
                                  -    "updateCommands",
                                  -    "XPCNativeWrapper",
                                  -    "GeckoActiveXObject",
                                  -    "applicationCache"      // FF3
                                  -];
                                  -
                                  -domMemberMap.Location =
                                  -[
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -
                                  -    "assign",
                                  -    "reload",
                                  -    "replace"
                                  -];
                                  -
                                  -domMemberMap.Node =
                                  -[
                                  -    "id",
                                  -    "className",
                                  -
                                  -    "nodeType",
                                  -    "tagName",
                                  -    "nodeName",
                                  -    "localName",
                                  -    "prefix",
                                  -    "namespaceURI",
                                  -    "nodeValue",
                                  -
                                  -    "ownerDocument",
                                  -    "parentNode",
                                  -    "offsetParent",
                                  -    "nextSibling",
                                  -    "previousSibling",
                                  -    "firstChild",
                                  -    "lastChild",
                                  -    "childNodes",
                                  -    "attributes",
                                  -
                                  -    "dir",
                                  -    "baseURI",
                                  -    "textContent",
                                  -    "innerHTML",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -];
                                  -
                                  -domMemberMap.Document = extendArray(domMemberMap.Node,
                                  -[
                                  -    "documentElement",
                                  -    "body",
                                  -    "title",
                                  -    "location",
                                  -    "referrer",
                                  -    "cookie",
                                  -    "contentType",
                                  -    "lastModified",
                                  -    "characterSet",
                                  -    "inputEncoding",
                                  -    "xmlEncoding",
                                  -    "xmlStandalone",
                                  -    "xmlVersion",
                                  -    "strictErrorChecking",
                                  -    "documentURI",
                                  -    "URL",
                                  -
                                  -    "defaultView",
                                  -    "doctype",
                                  -    "implementation",
                                  -    "styleSheets",
                                  -    "images",
                                  -    "links",
                                  -    "forms",
                                  -    "anchors",
                                  -    "embeds",
                                  -    "plugins",
                                  -    "applets",
                                  -
                                  -    "width",
                                  -    "height",
                                  -
                                  -    "designMode",
                                  -    "compatMode",
                                  -    "async",
                                  -    "preferredStylesheetSet",
                                  -
                                  -    "alinkColor",
                                  -    "linkColor",
                                  -    "vlinkColor",
                                  -    "bgColor",
                                  -    "fgColor",
                                  -    "domain",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "captureEvents",
                                  -    "releaseEvents",
                                  -    "routeEvent",
                                  -    "clear",
                                  -    "open",
                                  -    "close",
                                  -    "execCommand",
                                  -    "execCommandShowHelp",
                                  -    "getElementsByName",
                                  -    "getSelection",
                                  -    "queryCommandEnabled",
                                  -    "queryCommandIndeterm",
                                  -    "queryCommandState",
                                  -    "queryCommandSupported",
                                  -    "queryCommandText",
                                  -    "queryCommandValue",
                                  -    "write",
                                  -    "writeln",
                                  -    "adoptNode",
                                  -    "appendChild",
                                  -    "removeChild",
                                  -    "renameNode",
                                  -    "cloneNode",
                                  -    "compareDocumentPosition",
                                  -    "createAttribute",
                                  -    "createAttributeNS",
                                  -    "createCDATASection",
                                  -    "createComment",
                                  -    "createDocumentFragment",
                                  -    "createElement",
                                  -    "createElementNS",
                                  -    "createEntityReference",
                                  -    "createEvent",
                                  -    "createExpression",
                                  -    "createNSResolver",
                                  -    "createNodeIterator",
                                  -    "createProcessingInstruction",
                                  -    "createRange",
                                  -    "createTextNode",
                                  -    "createTreeWalker",
                                  -    "domConfig",
                                  -    "evaluate",
                                  -    "evaluateFIXptr",
                                  -    "evaluateXPointer",
                                  -    "getAnonymousElementByAttribute",
                                  -    "getAnonymousNodes",
                                  -    "addBinding",
                                  -    "removeBinding",
                                  -    "getBindingParent",
                                  -    "getBoxObjectFor",
                                  -    "setBoxObjectFor",
                                  -    "getElementById",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "importNode",
                                  -    "insertBefore",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "load",
                                  -    "loadBindingDocument",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "normalizeDocument",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.Element = extendArray(domMemberMap.Node,
                                  -[
                                  -    "clientWidth",
                                  -    "clientHeight",
                                  -    "offsetLeft",
                                  -    "offsetTop",
                                  -    "offsetWidth",
                                  -    "offsetHeight",
                                  -    "scrollLeft",
                                  -    "scrollTop",
                                  -    "scrollWidth",
                                  -    "scrollHeight",
                                  -
                                  -    "style",
                                  -
                                  -    "tabIndex",
                                  -    "title",
                                  -    "lang",
                                  -    "align",
                                  -    "spellcheck",
                                  -
                                  -    "addEventListener",
                                  -    "removeEventListener",
                                  -    "dispatchEvent",
                                  -    "focus",
                                  -    "blur",
                                  -    "cloneNode",
                                  -    "appendChild",
                                  -    "insertBefore",
                                  -    "replaceChild",
                                  -    "removeChild",
                                  -    "compareDocumentPosition",
                                  -    "getElementsByTagName",
                                  -    "getElementsByTagNameNS",
                                  -    "getAttribute",
                                  -    "getAttributeNS",
                                  -    "getAttributeNode",
                                  -    "getAttributeNodeNS",
                                  -    "setAttribute",
                                  -    "setAttributeNS",
                                  -    "setAttributeNode",
                                  -    "setAttributeNodeNS",
                                  -    "removeAttribute",
                                  -    "removeAttributeNS",
                                  -    "removeAttributeNode",
                                  -    "hasAttribute",
                                  -    "hasAttributeNS",
                                  -    "hasAttributes",
                                  -    "hasChildNodes",
                                  -    "lookupNamespaceURI",
                                  -    "lookupPrefix",
                                  -    "normalize",
                                  -    "isDefaultNamespace",
                                  -    "isEqualNode",
                                  -    "isSameNode",
                                  -    "isSupported",
                                  -    "getFeature",
                                  -    "getUserData",
                                  -    "setUserData"
                                  -]);
                                  -
                                  -domMemberMap.SVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -    "href",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getPresentationAttribute",
                                  -    "preserveAspectRatio"
                                  -]);
                                  -
                                  -domMemberMap.SVGSVGElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "x",
                                  -    "y",
                                  -    "width",
                                  -    "height",
                                  -    "rx",
                                  -    "ry",
                                  -    "transform",
                                  -
                                  -    "viewBox",
                                  -    "viewport",
                                  -    "currentView",
                                  -    "useCurrentView",
                                  -    "pixelUnitToMillimeterX",
                                  -    "pixelUnitToMillimeterY",
                                  -    "screenPixelToMillimeterX",
                                  -    "screenPixelToMillimeterY",
                                  -    "currentScale",
                                  -    "currentTranslate",
                                  -    "zoomAndPan",
                                  -
                                  -    "ownerSVGElement",
                                  -    "viewportElement",
                                  -    "farthestViewportElement",
                                  -    "nearestViewportElement",
                                  -    "contentScriptType",
                                  -    "contentStyleType",
                                  -
                                  -    "getBBox",
                                  -    "getCTM",
                                  -    "getScreenCTM",
                                  -    "getTransformToElement",
                                  -    "getEnclosureList",
                                  -    "getIntersectionList",
                                  -    "getViewboxToViewportTransform",
                                  -    "getPresentationAttribute",
                                  -    "getElementById",
                                  -    "checkEnclosure",
                                  -    "checkIntersection",
                                  -    "createSVGAngle",
                                  -    "createSVGLength",
                                  -    "createSVGMatrix",
                                  -    "createSVGNumber",
                                  -    "createSVGPoint",
                                  -    "createSVGRect",
                                  -    "createSVGString",
                                  -    "createSVGTransform",
                                  -    "createSVGTransformFromMatrix",
                                  -    "deSelectAll",
                                  -    "preserveAspectRatio",
                                  -    "forceRedraw",
                                  -    "suspendRedraw",
                                  -    "unsuspendRedraw",
                                  -    "unsuspendRedrawAll",
                                  -    "getCurrentTime",
                                  -    "setCurrentTime",
                                  -    "animationsPaused",
                                  -    "pauseAnimations",
                                  -    "unpauseAnimations"
                                  -]);
                                  -
                                  -domMemberMap.HTMLImageElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src",
                                  -    "naturalWidth",
                                  -    "naturalHeight",
                                  -    "width",
                                  -    "height",
                                  -    "x",
                                  -    "y",
                                  -    "name",
                                  -    "alt",
                                  -    "longDesc",
                                  -    "lowsrc",
                                  -    "border",
                                  -    "complete",
                                  -    "hspace",
                                  -    "vspace",
                                  -    "isMap",
                                  -    "useMap",
                                  -]);
                                  -
                                  -domMemberMap.HTMLAnchorElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "name",
                                  -    "target",
                                  -    "accessKey",
                                  -    "href",
                                  -    "protocol",
                                  -    "host",
                                  -    "hostname",
                                  -    "port",
                                  -    "pathname",
                                  -    "search",
                                  -    "hash",
                                  -    "hreflang",
                                  -    "coords",
                                  -    "shape",
                                  -    "text",
                                  -    "type",
                                  -    "rel",
                                  -    "rev",
                                  -    "charset"
                                  -]);
                                  -
                                  -domMemberMap.HTMLIFrameElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "contentDocument",
                                  -    "contentWindow",
                                  -    "frameBorder",
                                  -    "height",
                                  -    "longDesc",
                                  -    "marginHeight",
                                  -    "marginWidth",
                                  -    "name",
                                  -    "scrolling",
                                  -    "src",
                                  -    "width"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "border",
                                  -    "caption",
                                  -    "cellPadding",
                                  -    "cellSpacing",
                                  -    "frame",
                                  -    "rows",
                                  -    "rules",
                                  -    "summary",
                                  -    "tBodies",
                                  -    "tFoot",
                                  -    "tHead",
                                  -    "width",
                                  -
                                  -    "createCaption",
                                  -    "createTFoot",
                                  -    "createTHead",
                                  -    "deleteCaption",
                                  -    "deleteRow",
                                  -    "deleteTFoot",
                                  -    "deleteTHead",
                                  -    "insertRow"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableRowElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "bgColor",
                                  -    "cells",
                                  -    "ch",
                                  -    "chOff",
                                  -    "rowIndex",
                                  -    "sectionRowIndex",
                                  -    "vAlign",
                                  -
                                  -    "deleteCell",
                                  -    "insertCell"
                                  -]);
                                  -
                                  -domMemberMap.HTMLTableCellElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "abbr",
                                  -    "axis",
                                  -    "bgColor",
                                  -    "cellIndex",
                                  -    "ch",
                                  -    "chOff",
                                  -    "colSpan",
                                  -    "headers",
                                  -    "height",
                                  -    "noWrap",
                                  -    "rowSpan",
                                  -    "scope",
                                  -    "vAlign",
                                  -    "width"
                                  -
                                  -]);
                                  -
                                  -domMemberMap.HTMLScriptElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "src"
                                  -]);
                                  -
                                  -domMemberMap.HTMLButtonElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "accessKey",
                                  -    "disabled",
                                  -    "form",
                                  -    "name",
                                  -    "type",
                                  -    "value",
                                  -
                                  -    "click"
                                  -]);
                                  -
                                  -domMemberMap.HTMLInputElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "type",
                                  -    "value",
                                  -    "checked",
                                  -    "accept",
                                  -    "accessKey",
                                  -    "alt",
                                  -    "controllers",
                                  -    "defaultChecked",
                                  -    "defaultValue",
                                  -    "disabled",
                                  -    "form",
                                  -    "maxLength",
                                  -    "name",
                                  -    "readOnly",
                                  -    "selectionEnd",
                                  -    "selectionStart",
                                  -    "size",
                                  -    "src",
                                  -    "textLength",
                                  -    "useMap",
                                  -
                                  -    "click",
                                  -    "select",
                                  -    "setSelectionRange"
                                  -]);
                                  -
                                  -domMemberMap.HTMLFormElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "acceptCharset",
                                  -    "action",
                                  -    "author",
                                  -    "elements",
                                  -    "encoding",
                                  -    "enctype",
                                  -    "entry_id",
                                  -    "length",
                                  -    "method",
                                  -    "name",
                                  -    "post",
                                  -    "target",
                                  -    "text",
                                  -    "url",
                                  -
                                  -    "reset",
                                  -    "submit"
                                  -]);
                                  -
                                  -domMemberMap.HTMLBodyElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "aLink",
                                  -    "background",
                                  -    "bgColor",
                                  -    "link",
                                  -    "text",
                                  -    "vLink"
                                  -]);
                                  -
                                  -domMemberMap.HTMLHtmlElement = extendArray(domMemberMap.Element,
                                  -[
                                  -    "version"
                                  -]);
                                  -
                                  -domMemberMap.Text = extendArray(domMemberMap.Node,
                                  -[
                                  -    "data",
                                  -    "length",
                                  -
                                  -    "appendData",
                                  -    "deleteData",
                                  -    "insertData",
                                  -    "replaceData",
                                  -    "splitText",
                                  -    "substringData"
                                  -]);
                                  -
                                  -domMemberMap.Attr = extendArray(domMemberMap.Node,
                                  -[
                                  -    "name",
                                  -    "value",
                                  -    "specified",
                                  -    "ownerElement"
                                  -]);
                                  -
                                  -domMemberMap.Event =
                                  -[
                                  -    "type",
                                  -    "target",
                                  -    "currentTarget",
                                  -    "originalTarget",
                                  -    "explicitOriginalTarget",
                                  -    "relatedTarget",
                                  -    "rangeParent",
                                  -    "rangeOffset",
                                  -    "view",
                                  -
                                  -    "keyCode",
                                  -    "charCode",
                                  -    "screenX",
                                  -    "screenY",
                                  -    "clientX",
                                  -    "clientY",
                                  -    "layerX",
                                  -    "layerY",
                                  -    "pageX",
                                  -    "pageY",
                                  -
                                  -    "detail",
                                  -    "button",
                                  -    "which",
                                  -    "ctrlKey",
                                  -    "shiftKey",
                                  -    "altKey",
                                  -    "metaKey",
                                  -
                                  -    "eventPhase",
                                  -    "timeStamp",
                                  -    "bubbles",
                                  -    "cancelable",
                                  -    "cancelBubble",
                                  -
                                  -    "isTrusted",
                                  -    "isChar",
                                  -
                                  -    "getPreventDefault",
                                  -    "initEvent",
                                  -    "initMouseEvent",
                                  -    "initKeyEvent",
                                  -    "initUIEvent",
                                  -    "preventBubble",
                                  -    "preventCapture",
                                  -    "preventDefault",
                                  -    "stopPropagation"
                                  -];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.domConstantMap =
                                  -{
                                  -    "ELEMENT_NODE": 1,
                                  -    "ATTRIBUTE_NODE": 1,
                                  -    "TEXT_NODE": 1,
                                  -    "CDATA_SECTION_NODE": 1,
                                  -    "ENTITY_REFERENCE_NODE": 1,
                                  -    "ENTITY_NODE": 1,
                                  -    "PROCESSING_INSTRUCTION_NODE": 1,
                                  -    "COMMENT_NODE": 1,
                                  -    "DOCUMENT_NODE": 1,
                                  -    "DOCUMENT_TYPE_NODE": 1,
                                  -    "DOCUMENT_FRAGMENT_NODE": 1,
                                  -    "NOTATION_NODE": 1,
                                  -
                                  -    "DOCUMENT_POSITION_DISCONNECTED": 1,
                                  -    "DOCUMENT_POSITION_PRECEDING": 1,
                                  -    "DOCUMENT_POSITION_FOLLOWING": 1,
                                  -    "DOCUMENT_POSITION_CONTAINS": 1,
                                  -    "DOCUMENT_POSITION_CONTAINED_BY": 1,
                                  -    "DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC": 1,
                                  -
                                  -    "UNKNOWN_RULE": 1,
                                  -    "STYLE_RULE": 1,
                                  -    "CHARSET_RULE": 1,
                                  -    "IMPORT_RULE": 1,
                                  -    "MEDIA_RULE": 1,
                                  -    "FONT_FACE_RULE": 1,
                                  -    "PAGE_RULE": 1,
                                  -
                                  -    "CAPTURING_PHASE": 1,
                                  -    "AT_TARGET": 1,
                                  -    "BUBBLING_PHASE": 1,
                                  -
                                  -    "SCROLL_PAGE_UP": 1,
                                  -    "SCROLL_PAGE_DOWN": 1,
                                  -
                                  -    "MOUSEUP": 1,
                                  -    "MOUSEDOWN": 1,
                                  -    "MOUSEOVER": 1,
                                  -    "MOUSEOUT": 1,
                                  -    "MOUSEMOVE": 1,
                                  -    "MOUSEDRAG": 1,
                                  -    "CLICK": 1,
                                  -    "DBLCLICK": 1,
                                  -    "KEYDOWN": 1,
                                  -    "KEYUP": 1,
                                  -    "KEYPRESS": 1,
                                  -    "DRAGDROP": 1,
                                  -    "FOCUS": 1,
                                  -    "BLUR": 1,
                                  -    "SELECT": 1,
                                  -    "CHANGE": 1,
                                  -    "RESET": 1,
                                  -    "SUBMIT": 1,
                                  -    "SCROLL": 1,
                                  -    "LOAD": 1,
                                  -    "UNLOAD": 1,
                                  -    "XFER_DONE": 1,
                                  -    "ABORT": 1,
                                  -    "ERROR": 1,
                                  -    "LOCATE": 1,
                                  -    "MOVE": 1,
                                  -    "RESIZE": 1,
                                  -    "FORWARD": 1,
                                  -    "HELP": 1,
                                  -    "BACK": 1,
                                  -    "TEXT": 1,
                                  -
                                  -    "ALT_MASK": 1,
                                  -    "CONTROL_MASK": 1,
                                  -    "SHIFT_MASK": 1,
                                  -    "META_MASK": 1,
                                  -
                                  -    "DOM_VK_TAB": 1,
                                  -    "DOM_VK_PAGE_UP": 1,
                                  -    "DOM_VK_PAGE_DOWN": 1,
                                  -    "DOM_VK_UP": 1,
                                  -    "DOM_VK_DOWN": 1,
                                  -    "DOM_VK_LEFT": 1,
                                  -    "DOM_VK_RIGHT": 1,
                                  -    "DOM_VK_CANCEL": 1,
                                  -    "DOM_VK_HELP": 1,
                                  -    "DOM_VK_BACK_SPACE": 1,
                                  -    "DOM_VK_CLEAR": 1,
                                  -    "DOM_VK_RETURN": 1,
                                  -    "DOM_VK_ENTER": 1,
                                  -    "DOM_VK_SHIFT": 1,
                                  -    "DOM_VK_CONTROL": 1,
                                  -    "DOM_VK_ALT": 1,
                                  -    "DOM_VK_PAUSE": 1,
                                  -    "DOM_VK_CAPS_LOCK": 1,
                                  -    "DOM_VK_ESCAPE": 1,
                                  -    "DOM_VK_SPACE": 1,
                                  -    "DOM_VK_END": 1,
                                  -    "DOM_VK_HOME": 1,
                                  -    "DOM_VK_PRINTSCREEN": 1,
                                  -    "DOM_VK_INSERT": 1,
                                  -    "DOM_VK_DELETE": 1,
                                  -    "DOM_VK_0": 1,
                                  -    "DOM_VK_1": 1,
                                  -    "DOM_VK_2": 1,
                                  -    "DOM_VK_3": 1,
                                  -    "DOM_VK_4": 1,
                                  -    "DOM_VK_5": 1,
                                  -    "DOM_VK_6": 1,
                                  -    "DOM_VK_7": 1,
                                  -    "DOM_VK_8": 1,
                                  -    "DOM_VK_9": 1,
                                  -    "DOM_VK_SEMICOLON": 1,
                                  -    "DOM_VK_EQUALS": 1,
                                  -    "DOM_VK_A": 1,
                                  -    "DOM_VK_B": 1,
                                  -    "DOM_VK_C": 1,
                                  -    "DOM_VK_D": 1,
                                  -    "DOM_VK_E": 1,
                                  -    "DOM_VK_F": 1,
                                  -    "DOM_VK_G": 1,
                                  -    "DOM_VK_H": 1,
                                  -    "DOM_VK_I": 1,
                                  -    "DOM_VK_J": 1,
                                  -    "DOM_VK_K": 1,
                                  -    "DOM_VK_L": 1,
                                  -    "DOM_VK_M": 1,
                                  -    "DOM_VK_N": 1,
                                  -    "DOM_VK_O": 1,
                                  -    "DOM_VK_P": 1,
                                  -    "DOM_VK_Q": 1,
                                  -    "DOM_VK_R": 1,
                                  -    "DOM_VK_S": 1,
                                  -    "DOM_VK_T": 1,
                                  -    "DOM_VK_U": 1,
                                  -    "DOM_VK_V": 1,
                                  -    "DOM_VK_W": 1,
                                  -    "DOM_VK_X": 1,
                                  -    "DOM_VK_Y": 1,
                                  -    "DOM_VK_Z": 1,
                                  -    "DOM_VK_CONTEXT_MENU": 1,
                                  -    "DOM_VK_NUMPAD0": 1,
                                  -    "DOM_VK_NUMPAD1": 1,
                                  -    "DOM_VK_NUMPAD2": 1,
                                  -    "DOM_VK_NUMPAD3": 1,
                                  -    "DOM_VK_NUMPAD4": 1,
                                  -    "DOM_VK_NUMPAD5": 1,
                                  -    "DOM_VK_NUMPAD6": 1,
                                  -    "DOM_VK_NUMPAD7": 1,
                                  -    "DOM_VK_NUMPAD8": 1,
                                  -    "DOM_VK_NUMPAD9": 1,
                                  -    "DOM_VK_MULTIPLY": 1,
                                  -    "DOM_VK_ADD": 1,
                                  -    "DOM_VK_SEPARATOR": 1,
                                  -    "DOM_VK_SUBTRACT": 1,
                                  -    "DOM_VK_DECIMAL": 1,
                                  -    "DOM_VK_DIVIDE": 1,
                                  -    "DOM_VK_F1": 1,
                                  -    "DOM_VK_F2": 1,
                                  -    "DOM_VK_F3": 1,
                                  -    "DOM_VK_F4": 1,
                                  -    "DOM_VK_F5": 1,
                                  -    "DOM_VK_F6": 1,
                                  -    "DOM_VK_F7": 1,
                                  -    "DOM_VK_F8": 1,
                                  -    "DOM_VK_F9": 1,
                                  -    "DOM_VK_F10": 1,
                                  -    "DOM_VK_F11": 1,
                                  -    "DOM_VK_F12": 1,
                                  -    "DOM_VK_F13": 1,
                                  -    "DOM_VK_F14": 1,
                                  -    "DOM_VK_F15": 1,
                                  -    "DOM_VK_F16": 1,
                                  -    "DOM_VK_F17": 1,
                                  -    "DOM_VK_F18": 1,
                                  -    "DOM_VK_F19": 1,
                                  -    "DOM_VK_F20": 1,
                                  -    "DOM_VK_F21": 1,
                                  -    "DOM_VK_F22": 1,
                                  -    "DOM_VK_F23": 1,
                                  -    "DOM_VK_F24": 1,
                                  -    "DOM_VK_NUM_LOCK": 1,
                                  -    "DOM_VK_SCROLL_LOCK": 1,
                                  -    "DOM_VK_COMMA": 1,
                                  -    "DOM_VK_PERIOD": 1,
                                  -    "DOM_VK_SLASH": 1,
                                  -    "DOM_VK_BACK_QUOTE": 1,
                                  -    "DOM_VK_OPEN_BRACKET": 1,
                                  -    "DOM_VK_BACK_SLASH": 1,
                                  -    "DOM_VK_CLOSE_BRACKET": 1,
                                  -    "DOM_VK_QUOTE": 1,
                                  -    "DOM_VK_META": 1,
                                  -
                                  -    "SVG_ZOOMANDPAN_DISABLE": 1,
                                  -    "SVG_ZOOMANDPAN_MAGNIFY": 1,
                                  -    "SVG_ZOOMANDPAN_UNKNOWN": 1
                                  -};
                                  -
                                  -this.cssInfo =
                                  -{
                                  -    "background": ["bgRepeat", "bgAttachment", "bgPosition", "color", "systemColor", "none"],
                                  -    "background-attachment": ["bgAttachment"],
                                  -    "background-color": ["color", "systemColor"],
                                  -    "background-image": ["none"],
                                  -    "background-position": ["bgPosition"],
                                  -    "background-repeat": ["bgRepeat"],
                                  -
                                  -    "border": ["borderStyle", "thickness", "color", "systemColor", "none"],
                                  -    "border-top": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-right": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-bottom": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-left": ["borderStyle", "borderCollapse", "color", "systemColor", "none"],
                                  -    "border-collapse": ["borderCollapse"],
                                  -    "border-color": ["color", "systemColor"],
                                  -    "border-top-color": ["color", "systemColor"],
                                  -    "border-right-color": ["color", "systemColor"],
                                  -    "border-bottom-color": ["color", "systemColor"],
                                  -    "border-left-color": ["color", "systemColor"],
                                  -    "border-spacing": [],
                                  -    "border-style": ["borderStyle"],
                                  -    "border-top-style": ["borderStyle"],
                                  -    "border-right-style": ["borderStyle"],
                                  -    "border-bottom-style": ["borderStyle"],
                                  -    "border-left-style": ["borderStyle"],
                                  -    "border-width": ["thickness"],
                                  -    "border-top-width": ["thickness"],
                                  -    "border-right-width": ["thickness"],
                                  -    "border-bottom-width": ["thickness"],
                                  -    "border-left-width": ["thickness"],
                                  -
                                  -    "bottom": ["auto"],
                                  -    "caption-side": ["captionSide"],
                                  -    "clear": ["clear", "none"],
                                  -    "clip": ["auto"],
                                  -    "color": ["color", "systemColor"],
                                  -    "content": ["content"],
                                  -    "counter-increment": ["none"],
                                  -    "counter-reset": ["none"],
                                  -    "cursor": ["cursor", "none"],
                                  -    "direction": ["direction"],
                                  -    "display": ["display", "none"],
                                  -    "empty-cells": [],
                                  -    "float": ["float", "none"],
                                  -    "font": ["fontStyle", "fontVariant", "fontWeight", "fontFamily"],
                                  -
                                  -    "font-family": ["fontFamily"],
                                  -    "font-size": ["fontSize"],
                                  -    "font-size-adjust": [],
                                  -    "font-stretch": [],
                                  -    "font-style": ["fontStyle"],
                                  -    "font-variant": ["fontVariant"],
                                  -    "font-weight": ["fontWeight"],
                                  -
                                  -    "height": ["auto"],
                                  -    "left": ["auto"],
                                  -    "letter-spacing": [],
                                  -    "line-height": [],
                                  -
                                  -    "list-style": ["listStyleType", "listStylePosition", "none"],
                                  -    "list-style-image": ["none"],
                                  -    "list-style-position": ["listStylePosition"],
                                  -    "list-style-type": ["listStyleType", "none"],
                                  -
                                  -    "margin": [],
                                  -    "margin-top": [],
                                  -    "margin-right": [],
                                  -    "margin-bottom": [],
                                  -    "margin-left": [],
                                  -
                                  -    "marker-offset": ["auto"],
                                  -    "min-height": ["none"],
                                  -    "max-height": ["none"],
                                  -    "min-width": ["none"],
                                  -    "max-width": ["none"],
                                  -
                                  -    "outline": ["borderStyle", "color", "systemColor", "none"],
                                  -    "outline-color": ["color", "systemColor"],
                                  -    "outline-style": ["borderStyle"],
                                  -    "outline-width": [],
                                  -
                                  -    "overflow": ["overflow", "auto"],
                                  -    "overflow-x": ["overflow", "auto"],
                                  -    "overflow-y": ["overflow", "auto"],
                                  -
                                  -    "padding": [],
                                  -    "padding-top": [],
                                  -    "padding-right": [],
                                  -    "padding-bottom": [],
                                  -    "padding-left": [],
                                  -
                                  -    "position": ["position"],
                                  -    "quotes": ["none"],
                                  -    "right": ["auto"],
                                  -    "table-layout": ["tableLayout", "auto"],
                                  -    "text-align": ["textAlign"],
                                  -    "text-decoration": ["textDecoration", "none"],
                                  -    "text-indent": [],
                                  -    "text-shadow": [],
                                  -    "text-transform": ["textTransform", "none"],
                                  -    "top": ["auto"],
                                  -    "unicode-bidi": [],
                                  -    "vertical-align": ["verticalAlign"],
                                  -    "white-space": ["whiteSpace"],
                                  -    "width": ["auto"],
                                  -    "word-spacing": [],
                                  -    "z-index": [],
                                  -
                                  -    "-moz-appearance": ["mozAppearance"],
                                  -    "-moz-border-radius": [],
                                  -    "-moz-border-radius-bottomleft": [],
                                  -    "-moz-border-radius-bottomright": [],
                                  -    "-moz-border-radius-topleft": [],
                                  -    "-moz-border-radius-topright": [],
                                  -    "-moz-border-top-colors": ["color", "systemColor"],
                                  -    "-moz-border-right-colors": ["color", "systemColor"],
                                  -    "-moz-border-bottom-colors": ["color", "systemColor"],
                                  -    "-moz-border-left-colors": ["color", "systemColor"],
                                  -    "-moz-box-align": ["mozBoxAlign"],
                                  -    "-moz-box-direction": ["mozBoxDirection"],
                                  -    "-moz-box-flex": [],
                                  -    "-moz-box-ordinal-group": [],
                                  -    "-moz-box-orient": ["mozBoxOrient"],
                                  -    "-moz-box-pack": ["mozBoxPack"],
                                  -    "-moz-box-sizing": ["mozBoxSizing"],
                                  -    "-moz-opacity": [],
                                  -    "-moz-user-focus": ["userFocus", "none"],
                                  -    "-moz-user-input": ["userInput"],
                                  -    "-moz-user-modify": [],
                                  -    "-moz-user-select": ["userSelect", "none"],
                                  -    "-moz-background-clip": [],
                                  -    "-moz-background-inline-policy": [],
                                  -    "-moz-background-origin": [],
                                  -    "-moz-binding": [],
                                  -    "-moz-column-count": [],
                                  -    "-moz-column-gap": [],
                                  -    "-moz-column-width": [],
                                  -    "-moz-image-region": []
                                  -};
                                  -
                                  -this.inheritedStyleNames =
                                  -{
                                  -    "border-collapse": 1,
                                  -    "border-spacing": 1,
                                  -    "border-style": 1,
                                  -    "caption-side": 1,
                                  -    "color": 1,
                                  -    "cursor": 1,
                                  -    "direction": 1,
                                  -    "empty-cells": 1,
                                  -    "font": 1,
                                  -    "font-family": 1,
                                  -    "font-size-adjust": 1,
                                  -    "font-size": 1,
                                  -    "font-style": 1,
                                  -    "font-variant": 1,
                                  -    "font-weight": 1,
                                  -    "letter-spacing": 1,
                                  -    "line-height": 1,
                                  -    "list-style": 1,
                                  -    "list-style-image": 1,
                                  -    "list-style-position": 1,
                                  -    "list-style-type": 1,
                                  -    "quotes": 1,
                                  -    "text-align": 1,
                                  -    "text-decoration": 1,
                                  -    "text-indent": 1,
                                  -    "text-shadow": 1,
                                  -    "text-transform": 1,
                                  -    "white-space": 1,
                                  -    "word-spacing": 1
                                  -};
                                  -
                                  -this.cssKeywords =
                                  -{
                                  -    "appearance":
                                  -    [
                                  -        "button",
                                  -        "button-small",
                                  -        "checkbox",
                                  -        "checkbox-container",
                                  -        "checkbox-small",
                                  -        "dialog",
                                  -        "listbox",
                                  -        "menuitem",
                                  -        "menulist",
                                  -        "menulist-button",
                                  -        "menulist-textfield",
                                  -        "menupopup",
                                  -        "progressbar",
                                  -        "radio",
                                  -        "radio-container",
                                  -        "radio-small",
                                  -        "resizer",
                                  -        "scrollbar",
                                  -        "scrollbarbutton-down",
                                  -        "scrollbarbutton-left",
                                  -        "scrollbarbutton-right",
                                  -        "scrollbarbutton-up",
                                  -        "scrollbartrack-horizontal",
                                  -        "scrollbartrack-vertical",
                                  -        "separator",
                                  -        "statusbar",
                                  -        "tab",
                                  -        "tab-left-edge",
                                  -        "tabpanels",
                                  -        "textfield",
                                  -        "toolbar",
                                  -        "toolbarbutton",
                                  -        "toolbox",
                                  -        "tooltip",
                                  -        "treeheadercell",
                                  -        "treeheadersortarrow",
                                  -        "treeitem",
                                  -        "treetwisty",
                                  -        "treetwistyopen",
                                  -        "treeview",
                                  -        "window"
                                  -    ],
                                  -
                                  -    "systemColor":
                                  -    [
                                  -        "ActiveBorder",
                                  -        "ActiveCaption",
                                  -        "AppWorkspace",
                                  -        "Background",
                                  -        "ButtonFace",
                                  -        "ButtonHighlight",
                                  -        "ButtonShadow",
                                  -        "ButtonText",
                                  -        "CaptionText",
                                  -        "GrayText",
                                  -        "Highlight",
                                  -        "HighlightText",
                                  -        "InactiveBorder",
                                  -        "InactiveCaption",
                                  -        "InactiveCaptionText",
                                  -        "InfoBackground",
                                  -        "InfoText",
                                  -        "Menu",
                                  -        "MenuText",
                                  -        "Scrollbar",
                                  -        "ThreeDDarkShadow",
                                  -        "ThreeDFace",
                                  -        "ThreeDHighlight",
                                  -        "ThreeDLightShadow",
                                  -        "ThreeDShadow",
                                  -        "Window",
                                  -        "WindowFrame",
                                  -        "WindowText",
                                  -        "-moz-field",
                                  -        "-moz-fieldtext",
                                  -        "-moz-workspace",
                                  -        "-moz-visitedhyperlinktext",
                                  -        "-moz-use-text-color"
                                  -    ],
                                  -
                                  -    "color":
                                  -    [
                                  -        "AliceBlue",
                                  -        "AntiqueWhite",
                                  -        "Aqua",
                                  -        "Aquamarine",
                                  -        "Azure",
                                  -        "Beige",
                                  -        "Bisque",
                                  -        "Black",
                                  -        "BlanchedAlmond",
                                  -        "Blue",
                                  -        "BlueViolet",
                                  -        "Brown",
                                  -        "BurlyWood",
                                  -        "CadetBlue",
                                  -        "Chartreuse",
                                  -        "Chocolate",
                                  -        "Coral",
                                  -        "CornflowerBlue",
                                  -        "Cornsilk",
                                  -        "Crimson",
                                  -        "Cyan",
                                  -        "DarkBlue",
                                  -        "DarkCyan",
                                  -        "DarkGoldenRod",
                                  -        "DarkGray",
                                  -        "DarkGreen",
                                  -        "DarkKhaki",
                                  -        "DarkMagenta",
                                  -        "DarkOliveGreen",
                                  -        "DarkOrange",
                                  -        "DarkOrchid",
                                  -        "DarkRed",
                                  -        "DarkSalmon",
                                  -        "DarkSeaGreen",
                                  -        "DarkSlateBlue",
                                  -        "DarkSlateGray",
                                  -        "DarkTurquoise",
                                  -        "DarkViolet",
                                  -        "DeepPink",
                                  -        "DarkSkyBlue",
                                  -        "DimGray",
                                  -        "DodgerBlue",
                                  -        "Feldspar",
                                  -        "FireBrick",
                                  -        "FloralWhite",
                                  -        "ForestGreen",
                                  -        "Fuchsia",
                                  -        "Gainsboro",
                                  -        "GhostWhite",
                                  -        "Gold",
                                  -        "GoldenRod",
                                  -        "Gray",
                                  -        "Green",
                                  -        "GreenYellow",
                                  -        "HoneyDew",
                                  -        "HotPink",
                                  -        "IndianRed",
                                  -        "Indigo",
                                  -        "Ivory",
                                  -        "Khaki",
                                  -        "Lavender",
                                  -        "LavenderBlush",
                                  -        "LawnGreen",
                                  -        "LemonChiffon",
                                  -        "LightBlue",
                                  -        "LightCoral",
                                  -        "LightCyan",
                                  -        "LightGoldenRodYellow",
                                  -        "LightGrey",
                                  -        "LightGreen",
                                  -        "LightPink",
                                  -        "LightSalmon",
                                  -        "LightSeaGreen",
                                  -        "LightSkyBlue",
                                  -        "LightSlateBlue",
                                  -        "LightSlateGray",
                                  -        "LightSteelBlue",
                                  -        "LightYellow",
                                  -        "Lime",
                                  -        "LimeGreen",
                                  -        "Linen",
                                  -        "Magenta",
                                  -        "Maroon",
                                  -        "MediumAquaMarine",
                                  -        "MediumBlue",
                                  -        "MediumOrchid",
                                  -        "MediumPurple",
                                  -        "MediumSeaGreen",
                                  -        "MediumSlateBlue",
                                  -        "MediumSpringGreen",
                                  -        "MediumTurquoise",
                                  -        "MediumVioletRed",
                                  -        "MidnightBlue",
                                  -        "MintCream",
                                  -        "MistyRose",
                                  -        "Moccasin",
                                  -        "NavajoWhite",
                                  -        "Navy",
                                  -        "OldLace",
                                  -        "Olive",
                                  -        "OliveDrab",
                                  -        "Orange",
                                  -        "OrangeRed",
                                  -        "Orchid",
                                  -        "PaleGoldenRod",
                                  -        "PaleGreen",
                                  -        "PaleTurquoise",
                                  -        "PaleVioletRed",
                                  -        "PapayaWhip",
                                  -        "PeachPuff",
                                  -        "Peru",
                                  -        "Pink",
                                  -        "Plum",
                                  -        "PowderBlue",
                                  -        "Purple",
                                  -        "Red",
                                  -        "RosyBrown",
                                  -        "RoyalBlue",
                                  -        "SaddleBrown",
                                  -        "Salmon",
                                  -        "SandyBrown",
                                  -        "SeaGreen",
                                  -        "SeaShell",
                                  -        "Sienna",
                                  -        "Silver",
                                  -        "SkyBlue",
                                  -        "SlateBlue",
                                  -        "SlateGray",
                                  -        "Snow",
                                  -        "SpringGreen",
                                  -        "SteelBlue",
                                  -        "Tan",
                                  -        "Teal",
                                  -        "Thistle",
                                  -        "Tomato",
                                  -        "Turquoise",
                                  -        "Violet",
                                  -        "VioletRed",
                                  -        "Wheat",
                                  -        "White",
                                  -        "WhiteSmoke",
                                  -        "Yellow",
                                  -        "YellowGreen",
                                  -        "transparent",
                                  -        "invert"
                                  -    ],
                                  -
                                  -    "auto":
                                  -    [
                                  -        "auto"
                                  -    ],
                                  -
                                  -    "none":
                                  -    [
                                  -        "none"
                                  -    ],
                                  -
                                  -    "captionSide":
                                  -    [
                                  -        "top",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "clear":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "both"
                                  -    ],
                                  -
                                  -    "cursor":
                                  -    [
                                  -        "auto",
                                  -        "cell",
                                  -        "context-menu",
                                  -        "crosshair",
                                  -        "default",
                                  -        "help",
                                  -        "pointer",
                                  -        "progress",
                                  -        "move",
                                  -        "e-resize",
                                  -        "all-scroll",
                                  -        "ne-resize",
                                  -        "nw-resize",
                                  -        "n-resize",
                                  -        "se-resize",
                                  -        "sw-resize",
                                  -        "s-resize",
                                  -        "w-resize",
                                  -        "ew-resize",
                                  -        "ns-resize",
                                  -        "nesw-resize",
                                  -        "nwse-resize",
                                  -        "col-resize",
                                  -        "row-resize",
                                  -        "text",
                                  -        "vertical-text",
                                  -        "wait",
                                  -        "alias",
                                  -        "copy",
                                  -        "move",
                                  -        "no-drop",
                                  -        "not-allowed",
                                  -        "-moz-alias",
                                  -        "-moz-cell",
                                  -        "-moz-copy",
                                  -        "-moz-grab",
                                  -        "-moz-grabbing",
                                  -        "-moz-contextmenu",
                                  -        "-moz-zoom-in",
                                  -        "-moz-zoom-out",
                                  -        "-moz-spinning"
                                  -    ],
                                  -
                                  -    "direction":
                                  -    [
                                  -        "ltr",
                                  -        "rtl"
                                  -    ],
                                  -
                                  -    "bgAttachment":
                                  -    [
                                  -        "scroll",
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "bgPosition":
                                  -    [
                                  -        "top",
                                  -        "center",
                                  -        "bottom",
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "bgRepeat":
                                  -    [
                                  -        "repeat",
                                  -        "repeat-x",
                                  -        "repeat-y",
                                  -        "no-repeat"
                                  -    ],
                                  -
                                  -    "borderStyle":
                                  -    [
                                  -        "hidden",
                                  -        "dotted",
                                  -        "dashed",
                                  -        "solid",
                                  -        "double",
                                  -        "groove",
                                  -        "ridge",
                                  -        "inset",
                                  -        "outset",
                                  -        "-moz-bg-inset",
                                  -        "-moz-bg-outset",
                                  -        "-moz-bg-solid"
                                  -    ],
                                  -
                                  -    "borderCollapse":
                                  -    [
                                  -        "collapse",
                                  -        "separate"
                                  -    ],
                                  -
                                  -    "overflow":
                                  -    [
                                  -        "visible",
                                  -        "hidden",
                                  -        "scroll",
                                  -        "-moz-scrollbars-horizontal",
                                  -        "-moz-scrollbars-none",
                                  -        "-moz-scrollbars-vertical"
                                  -    ],
                                  -
                                  -    "listStyleType":
                                  -    [
                                  -        "disc",
                                  -        "circle",
                                  -        "square",
                                  -        "decimal",
                                  -        "decimal-leading-zero",
                                  -        "lower-roman",
                                  -        "upper-roman",
                                  -        "lower-greek",
                                  -        "lower-alpha",
                                  -        "lower-latin",
                                  -        "upper-alpha",
                                  -        "upper-latin",
                                  -        "hebrew",
                                  -        "armenian",
                                  -        "georgian",
                                  -        "cjk-ideographic",
                                  -        "hiragana",
                                  -        "katakana",
                                  -        "hiragana-iroha",
                                  -        "katakana-iroha",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "listStylePosition":
                                  -    [
                                  -        "inside",
                                  -        "outside"
                                  -    ],
                                  -
                                  -    "content":
                                  -    [
                                  -        "open-quote",
                                  -        "close-quote",
                                  -        "no-open-quote",
                                  -        "no-close-quote",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontStyle":
                                  -    [
                                  -        "normal",
                                  -        "italic",
                                  -        "oblique",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontVariant":
                                  -    [
                                  -        "normal",
                                  -        "small-caps",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontWeight":
                                  -    [
                                  -        "normal",
                                  -        "bold",
                                  -        "bolder",
                                  -        "lighter",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "fontSize":
                                  -    [
                                  -        "xx-small",
                                  -        "x-small",
                                  -        "small",
                                  -        "medium",
                                  -        "large",
                                  -        "x-large",
                                  -        "xx-large",
                                  -        "smaller",
                                  -        "larger"
                                  -    ],
                                  -
                                  -    "fontFamily":
                                  -    [
                                  -        "Arial",
                                  -        "Comic Sans MS",
                                  -        "Georgia",
                                  -        "Tahoma",
                                  -        "Verdana",
                                  -        "Times New Roman",
                                  -        "Trebuchet MS",
                                  -        "Lucida Grande",
                                  -        "Helvetica",
                                  -        "serif",
                                  -        "sans-serif",
                                  -        "cursive",
                                  -        "fantasy",
                                  -        "monospace",
                                  -        "caption",
                                  -        "icon",
                                  -        "menu",
                                  -        "message-box",
                                  -        "small-caption",
                                  -        "status-bar",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "display":
                                  -    [
                                  -        "block",
                                  -        "inline",
                                  -        "inline-block",
                                  -        "list-item",
                                  -        "marker",
                                  -        "run-in",
                                  -        "compact",
                                  -        "table",
                                  -        "inline-table",
                                  -        "table-row-group",
                                  -        "table-column",
                                  -        "table-column-group",
                                  -        "table-header-group",
                                  -        "table-footer-group",
                                  -        "table-row",
                                  -        "table-cell",
                                  -        "table-caption",
                                  -        "-moz-box",
                                  -        "-moz-compact",
                                  -        "-moz-deck",
                                  -        "-moz-grid",
                                  -        "-moz-grid-group",
                                  -        "-moz-grid-line",
                                  -        "-moz-groupbox",
                                  -        "-moz-inline-block",
                                  -        "-moz-inline-box",
                                  -        "-moz-inline-grid",
                                  -        "-moz-inline-stack",
                                  -        "-moz-inline-table",
                                  -        "-moz-marker",
                                  -        "-moz-popup",
                                  -        "-moz-runin",
                                  -        "-moz-stack"
                                  -    ],
                                  -
                                  -    "position":
                                  -    [
                                  -        "static",
                                  -        "relative",
                                  -        "absolute",
                                  -        "fixed",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "float":
                                  -    [
                                  -        "left",
                                  -        "right"
                                  -    ],
                                  -
                                  -    "textAlign":
                                  -    [
                                  -        "left",
                                  -        "right",
                                  -        "center",
                                  -        "justify"
                                  -    ],
                                  -
                                  -    "tableLayout":
                                  -    [
                                  -        "fixed"
                                  -    ],
                                  -
                                  -    "textDecoration":
                                  -    [
                                  -        "underline",
                                  -        "overline",
                                  -        "line-through",
                                  -        "blink"
                                  -    ],
                                  -
                                  -    "textTransform":
                                  -    [
                                  -        "capitalize",
                                  -        "lowercase",
                                  -        "uppercase",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "unicodeBidi":
                                  -    [
                                  -        "normal",
                                  -        "embed",
                                  -        "bidi-override"
                                  -    ],
                                  -
                                  -    "whiteSpace":
                                  -    [
                                  -        "normal",
                                  -        "pre",
                                  -        "nowrap"
                                  -    ],
                                  -
                                  -    "verticalAlign":
                                  -    [
                                  -        "baseline",
                                  -        "sub",
                                  -        "super",
                                  -        "top",
                                  -        "text-top",
                                  -        "middle",
                                  -        "bottom",
                                  -        "text-bottom",
                                  -        "inherit"
                                  -    ],
                                  -
                                  -    "thickness":
                                  -    [
                                  -        "thin",
                                  -        "medium",
                                  -        "thick"
                                  -    ],
                                  -
                                  -    "userFocus":
                                  -    [
                                  -        "ignore",
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "userInput":
                                  -    [
                                  -        "disabled",
                                  -        "enabled"
                                  -    ],
                                  -
                                  -    "userSelect":
                                  -    [
                                  -        "normal"
                                  -    ],
                                  -
                                  -    "mozBoxSizing":
                                  -    [
                                  -        "content-box",
                                  -        "padding-box",
                                  -        "border-box"
                                  -    ],
                                  -
                                  -    "mozBoxAlign":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end",
                                  -        "baseline",
                                  -        "stretch"
                                  -    ],
                                  -
                                  -    "mozBoxDirection":
                                  -    [
                                  -        "normal",
                                  -        "reverse"
                                  -    ],
                                  -
                                  -    "mozBoxOrient":
                                  -    [
                                  -        "horizontal",
                                  -        "vertical"
                                  -    ],
                                  -
                                  -    "mozBoxPack":
                                  -    [
                                  -        "start",
                                  -        "center",
                                  -        "end"
                                  -    ]
                                  -};
                                  -
                                  -this.nonEditableTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "html": 1,
                                  -    "head": 1
                                  -};
                                  -
                                  -this.innerEditableTags =
                                  -{
                                  -    "BODY": 1,
                                  -    "body": 1
                                  -};
                                  -
                                  -var invisibleTags = this.invisibleTags =
                                  -{
                                  -    "HTML": 1,
                                  -    "HEAD": 1,
                                  -    "TITLE": 1,
                                  -    "META": 1,
                                  -    "LINK": 1,
                                  -    "STYLE": 1,
                                  -    "SCRIPT": 1,
                                  -    "NOSCRIPT": 1,
                                  -    "BR": 1,
                                  -
                                  -    "html": 1,
                                  -    "head": 1,
                                  -    "title": 1,
                                  -    "meta": 1,
                                  -    "link": 1,
                                  -    "style": 1,
                                  -    "script": 1,
                                  -    "noscript": 1,
                                  -    "br": 1/*,
                                  -    "window": 1,
                                  -    "browser": 1,
                                  -    "frame": 1,
                                  -    "tabbrowser": 1,
                                  -    "WINDOW": 1,
                                  -    "BROWSER": 1,
                                  -    "FRAME": 1,
                                  -    "TABBROWSER": 1,
                                  -    */
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Ajax
                                  -
                                  -this.Ajax =
                                  -{
                                  -  
                                  -    requests: [],
                                  -    transport: null,
                                  -    states: ["Uninitialized","Loading","Loaded","Interactive","Complete"],
                                  -  
                                  -    initialize: function()
                                  -    {
                                  -        this.transport = this.getXHRObject();
                                  -    },
                                  -    
                                  -    getXHRObject: function()
                                  -    {
                                  -        var xhrObj = false;
                                  -        try
                                  -        {
                                  -            xhrObj = new XMLHttpRequest();
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            var progid = [
                                  -                    "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", 
                                  -                    "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"
                                  -                ];
                                  -              
                                  -            for ( var i=0; i < progid.length; ++i ) {
                                  -                try
                                  -                {
                                  -                    xhrObj = new ActiveXObject(progid[i]);
                                  -                }
                                  -                catch(e)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -                break;
                                  -            }
                                  -        }
                                  -        finally
                                  -        {
                                  -            return xhrObj;
                                  -        }
                                  -    },
                                  -    
                                  -    
                                  -    /**
                                  -     * Realiza uma requisição ajax.
                                  -     * 
                                  -     * @name request
                                  -     * @param {Object}   options               Request options
                                  -     * @param {String}   options.url           URL to be requested
                                  -     * @param {String}   options.type          Request type ("get" ou "post"). Default is "get".
                                  -     * @param {Boolean}  options.async         Indica se a requisição é assíncrona. O padrão é "true".   
                                  -     * @param {String}   options.dataType      Dado requisitado ("text", "html", "xml" ou "json"). O padrão é "text".
                                  -     * @param {String}   options.contentType   ContentType a ser usado. O padrão é "application/x-www-form-urlencoded".  
                                  -     * @param {Function} options.onLoading     Função a ser executada antes da requisição ser enviada.
                                  -     * @param {Function} options.onLoaded      Função a ser executada logo que a requisição for enviada.
                                  -     * @param {Function} options.onInteractive Função a ser executada durante o recebimento da requisição.
                                  -     * @param {Function} options.onComplete    Função a ser executada ao completar a requisição.
                                  -     * @param {Function} options.onUpdate      Função a ser executada após completar a requisição.
                                  -     * @param {Function} options.onSuccess     Função a ser executada ao completar a requisição com sucesso.
                                  -     * @param {Function} options.onFailure     Função a ser executada ao completar a requisição com erro.
                                  -     */      
                                  -    request: function(options)
                                  -    {
                                  -        var o = options || {};
                                  -    
                                  -        // Configura as opções que não foram definidas para o seu valor padrão
                                  -        o.type = o.type && o.type.toLowerCase() || "get";
                                  -        o.async = o.async || true;
                                  -        o.dataType = o.dataType || "text"; 
                                  -        o.contentType = o.contentType || "application/x-www-form-urlencoded";
                                  -    
                                  -        this.requests.push(o);
                                  -    
                                  -        var s = this.getState();
                                  -        if (s == "Uninitialized" || s == "Complete" || s == "Loaded") 
                                  -            this.sendRequest();
                                  -    },
                                  -    
                                  -    serialize: function(data)
                                  -    {
                                  -        var r = [""], rl = 0;
                                  -        if (data) {
                                  -            if (typeof data == "string")  r[rl++] = data
                                  -              
                                  -            else if (data.innerHTML && data.elements) {
                                  -                for (var i=0,el,l=(el=data.elements).length; i < l; i++)
                                  -                    if (el[i].name) {
                                  -                        r[rl++] = encodeURIComponent(el[i].name); 
                                  -                        r[rl++] = "=";
                                  -                        r[rl++] = encodeURIComponent(el[i].value);
                                  -                        r[rl++] = "&";
                                  -                    }
                                  -                    
                                  -            } else 
                                  -                for(param in data) {
                                  -                    r[rl++] = encodeURIComponent(param); 
                                  -                    r[rl++] = "=";
                                  -                    r[rl++] = encodeURIComponent(data[param]);
                                  -                    r[rl++] = "&";
                                  -                }
                                  -        }
                                  -        return r.join("").replace(/&$/, "");
                                  -    },
                                  -  
                                  -    sendRequest: function()
                                  -    {
                                  -        var t = FBL.Ajax.transport, r = FBL.Ajax.requests.shift(), data;
                                  -    
                                  -        // Abre o objeto XMLHttpRequest
                                  -        t.open(r.type, r.url, r.async);
                                  -    
                                  -        //setRequestHeaders();
                                  -    
                                  -        // Registra o objeto para que o servidor saiba que é uma requisição AJAX
                                  -        t.setRequestHeader("X-Requested-With", "XMLHttpRequest");
                                  -    
                                  -        // Caso tenha sido informado algum dado
                                  -        if (data = FBL.Ajax.serialize(r.data))
                                  -          t.setRequestHeader("Content-Type", r.contentType);
                                  -    
                                  -        /** @ignore */
                                  -        // Tratamento de evento de mudança de estado
                                  -        t.onreadystatechange = function()
                                  -        { 
                                  -            FBL.Ajax.onStateChange(r); 
                                  -        }; 
                                  -    
                                  -        // Envia a requisição
                                  -        t.send(data);
                                  -    },
                                  -  
                                  -    /**
                                  -     * Função de tratamento da mudança de estado da requisição ajax.
                                  -     */     
                                  -    onStateChange: function(options)
                                  -    {
                                  -        var fn, o = options, t = this.transport;
                                  -        var state = this.getState(t); 
                                  -    
                                  -        if (fn = o["on" + state]) fn(this.getResponse(o), o);
                                  -    
                                  -        if (state == "Complete")
                                  -        {
                                  -            var success = t.status == 200, response = this.getResponse(o);
                                  -      
                                  -            if (fn = o["onUpdate"])
                                  -              fn(response, o);
                                  -      
                                  -            if (fn = o["on" + (success ? "Success" : "Failure")])
                                  -              fn(response, o);
                                  -      
                                  -            t.onreadystatechange = FBL.emptyFn;
                                  -      
                                  -            if (this.requests.length > 0) 
                                  -                setTimeout(this.sendRequest, 10);
                                  -        }
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna a resposta de acordo com o tipo de dado requisitado.
                                  -     */  
                                  -    getResponse: function(options)
                                  -    {
                                  -        var t = this.transport, type = options.dataType;
                                  -    
                                  -        if      (t.status != 200) return t.statusText
                                  -        else if (type == "text")  return t.responseText
                                  -        else if (type == "html")  return t.responseText
                                  -        else if (type == "xml")   return t.responseXML
                                  -        else if (type == "json")  return eval("(" + t.responseText + ")");
                                  -    },
                                  -  
                                  -    /**
                                  -     * Retorna o atual estado da requisição ajax.
                                  -     */     
                                  -    getState: function()
                                  -    {
                                  -        return this.states[this.transport.readyState];
                                  -    }
                                  -  
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Cookie, from http://www.quirksmode.org/js/cookies.html
                                  -
                                  -this.createCookie = function(name,value,days)
                                  -{
                                  -    if (days)
                                  -    {
                                  -        var date = new Date();
                                  -        date.setTime(date.getTime()+(days*24*60*60*1000));
                                  -        var expires = "; expires="+date.toGMTString();
                                  -    }
                                  -    else 
                                  -        var expires = "";
                                  -    
                                  -    document.cookie = name+"="+value+expires+"; path=/";
                                  -};
                                  -
                                  -this.readCookie = function (name)
                                  -{
                                  -    var nameEQ = name + "=";
                                  -    var ca = document.cookie.split(';');
                                  -    
                                  -    for(var i=0; i < ca.length; i++)
                                  -    {
                                  -        var c = ca[i];
                                  -        while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                  -        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                  -    }
                                  -    
                                  -    return null;
                                  -};
                                  -
                                  -this.removeCookie = function(name)
                                  -{
                                  -    this.createCookie(name, "", -1);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// http://www.mister-pixel.com/#Content__state=is_that_simple
                                  -var fixIE6BackgroundImageCache = function(doc)
                                  -{
                                  -    doc = doc || document;
                                  -    try
                                  -    {
                                  -        doc.execCommand("BackgroundImageCache", false, true);
                                  -    } 
                                  -    catch(E)
                                  -    {
                                  -        
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// calculatePixelsPerInch
                                  -
                                  -var resetStyle = "margin:0; padding:0; border:0; position:absolute; overflow:hidden; display:block;";
                                  -
                                  -var calculatePixelsPerInch = function calculatePixelsPerInch(doc, body)
                                  -{
                                  -    var inch = FBL.createGlobalElement("div");
                                  -    inch.style.cssText = resetStyle + "width:1in; height:1in; position:absolute; top:-1234px; left:-1234px;";
                                  -    body.appendChild(inch);
                                  -    
                                  -    FBL.pixelsPerInch = {
                                  -        x: inch.offsetWidth,
                                  -        y: inch.offsetHeight
                                  -    };
                                  -    
                                  -    body.removeChild(inch);
                                  -};
                                  -
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceLink = function(url, line, type, object, instance)
                                  -{
                                  -    this.href = url;
                                  -    this.instance = instance;
                                  -    this.line = line;
                                  -    this.type = type;
                                  -    this.object = object;
                                  -};
                                  -
                                  -this.SourceLink.prototype =
                                  -{
                                  -    toString: function()
                                  -    {
                                  -        return this.href;
                                  -    },
                                  -    toJSON: function() // until 3.1...
                                  -    {
                                  -        return "{\"href\":\""+this.href+"\", "+
                                  -            (this.line?("\"line\":"+this.line+","):"")+
                                  -            (this.type?(" \"type\":\""+this.type+"\","):"")+
                                  -                    "}";
                                  -    }
                                  -
                                  -};
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -this.SourceText = function(lines, owner)
                                  -{
                                  -    this.lines = lines;
                                  -    this.owner = owner;
                                  -};
                                  -
                                  -this.SourceText.getLineAsHTML = function(lineNo)
                                  -{
                                  -    return escapeForSourceLine(this.lines[lineNo-1]);
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/net.js b/tags/firebug1.3a5/content/firebug/net.js
                                  deleted file mode 100644
                                  index 2369b7a7..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/net.js
                                  +++ /dev/null
                                  @@ -1,1041 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -var oSTR =
                                  -{
                                  -    NoMembersWarning: "There are no properties to show for this object."    
                                  -}
                                  -
                                  -FBL.$STR = function(name)
                                  -{
                                  -    return oSTR.hasOwnProperty(name) ? oSTR[name] : name;
                                  -};
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var reIgnore = /about:|javascript:|resource:|chrome:|jar:/;
                                  -var layoutInterval = 300;
                                  -var indentWidth = 18;
                                  -
                                  -var cacheSession = null;
                                  -var contexts = new Array();
                                  -var panelName = "net";
                                  -var maxQueueRequests = 500;
                                  -//var panelBar1 = $("fbPanelBar1"); // chrome not available at startup
                                  -var activeRequests = [];
                                  -
                                  -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -var mimeExtensionMap =
                                  -{
                                  -    "txt": "text/plain",
                                  -    "html": "text/html",
                                  -    "htm": "text/html",
                                  -    "xhtml": "text/html",
                                  -    "xml": "text/xml",
                                  -    "css": "text/css",
                                  -    "js": "application/x-javascript",
                                  -    "jss": "application/x-javascript",
                                  -    "jpg": "image/jpg",
                                  -    "jpeg": "image/jpeg",
                                  -    "gif": "image/gif",
                                  -    "png": "image/png",
                                  -    "bmp": "image/bmp",
                                  -    "swf": "application/x-shockwave-flash",
                                  -    "flv": "video/x-flv"
                                  -};
                                  -
                                  -var fileCategories =
                                  -{
                                  -    "undefined": 1,
                                  -    "html": 1,
                                  -    "css": 1,
                                  -    "js": 1,
                                  -    "xhr": 1,
                                  -    "image": 1,
                                  -    "flash": 1,
                                  -    "txt": 1,
                                  -    "bin": 1
                                  -};
                                  -
                                  -var textFileCategories =
                                  -{
                                  -    "txt": 1,
                                  -    "html": 1,
                                  -    "xhr": 1,
                                  -    "css": 1,
                                  -    "js": 1
                                  -};
                                  -
                                  -var binaryFileCategories =
                                  -{
                                  -    "bin": 1,
                                  -    "flash": 1
                                  -};
                                  -
                                  -var mimeCategoryMap =
                                  -{
                                  -    "text/plain": "txt",
                                  -    "application/octet-stream": "bin",
                                  -    "text/html": "html",
                                  -    "text/xml": "html",
                                  -    "text/css": "css",
                                  -    "application/x-javascript": "js",
                                  -    "text/javascript": "js",
                                  -    "application/javascript" : "js",
                                  -    "image/jpeg": "image",
                                  -    "image/jpg": "image",
                                  -    "image/gif": "image",
                                  -    "image/png": "image",
                                  -    "image/bmp": "image",
                                  -    "application/x-shockwave-flash": "flash",
                                  -    "video/x-flv": "flash"
                                  -};
                                  -
                                  -var binaryCategoryMap =
                                  -{
                                  -    "image": 1,
                                  -    "flash" : 1
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @module Represents a module object for the Net panel. This object is derived
                                  - * from <code>Firebug.ActivableModule</code> in order to support activation (enable/disable).
                                  - * This allows to avoid (performance) expensive features if the functionality is not necessary
                                  - * for the user.
                                  - */
                                  -Firebug.NetMonitor = extend(Firebug.ActivableModule,
                                  -{
                                  -    dispatchName: "netMonitor",
                                  -    
                                  -    clear: function(context)
                                  -    {
                                  -        // The user pressed a Clear button so, remove content of the panel...
                                  -        var panel = context.getPanel(panelName, true);
                                  -        if (panel)
                                  -            panel.clear();
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // extends Module
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        this.panelName = panelName;
                                  -
                                  -        Firebug.ActivableModule.initialize.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        // HTTP observer must be registered now (and not in monitorContext, since if a
                                  -        // page is opened in a new tab the top document request would be missed otherwise.
                                  -        NetHttpObserver.registerObserver();
                                  -        NetHttpActivityObserver.registerObserver();
                                  -
                                  -        Firebug.Debugger.addListener(this.DebuggerListener);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        return;
                                  -        
                                  -        prefs.removeObserver(Firebug.prefDomain, this, false);
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -
                                  -        NetHttpObserver.unregisterObserver();
                                  -        NetHttpActivityObserver.unregisterObserver();
                                  -
                                  -        Firebug.Debugger.removeListener(this.DebuggerListener);
                                  -    }
                                  -});
                                  -
                                  -
                                  -/**
                                  - * @domplate Represents a template that is used to reneder detailed info about a request.
                                  - * This template is rendered when a request is expanded.
                                  - */
                                  -Firebug.NetMonitor.NetInfoBody = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoBody", _repObject: "$file"},
                                  -            TAG("$infoTabs", {file: "$file"}),
                                  -            TAG("$infoBodies", {file: "$file"})
                                  -        ),
                                  -
                                  -    infoTabs:
                                  -        DIV({"class": "netInfoTabs focusRow subFocusRow", "role": "tablist"},
                                  -            A({"class": "netInfoParamsTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Params",
                                  -                $collapsed: "$file|hideParams"},
                                  -                $STR("URLParameters")
                                  -            ),
                                  -            A({"class": "netInfoHeadersTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Headers"},
                                  -                $STR("Headers")
                                  -            ),
                                  -            A({"class": "netInfoPostTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Post",
                                  -                $collapsed: "$file|hidePost"},
                                  -                $STR("Post")
                                  -            ),
                                  -            A({"class": "netInfoPutTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Put",
                                  -                $collapsed: "$file|hidePut"},
                                  -                $STR("Put")
                                  -            ),
                                  -            A({"class": "netInfoResponseTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -                view: "Response",
                                  -                $collapsed: "$file|hideResponse"},
                                  -                $STR("Response")
                                  -            ),
                                  -            A({"class": "netInfoCacheTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Cache",
                                  -               $collapsed: "$file|hideCache"},
                                  -               $STR("Cache")
                                  -            ),
                                  -            A({"class": "netInfoHtmlTab netInfoTab a11yFocus", onclick: "$onClickTab", "role": "tab",
                                  -               view: "Html",
                                  -               $collapsed: "$file|hideHtml"},
                                  -               $STR("HTML")
                                  -            )
                                  -        ),
                                  -
                                  -    infoBodies:
                                  -        DIV({"class": "netInfoBodies outerFocusRow"},
                                  -            TABLE({"class": "netInfoParamsText netInfoText netInfoParamsTable", "role": "tabpanel",
                                  -                    cellpadding: 0, cellspacing: 0}, TBODY()),
                                  -            DIV({"class": "netInfoHeadersText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPostText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoPutText netInfoText", "role": "tabpanel"}),
                                  -            PRE({"class": "netInfoResponseText netInfoText", "role": "tabpanel"}),
                                  -            DIV({"class": "netInfoCacheText netInfoText", "role": "tabpanel"},
                                  -                TABLE({"class": "netInfoCacheTable", cellpadding: 0, cellspacing: 0, "role": "presentation"},
                                  -                    TBODY({"role": "list", "aria-label": $STR("Cache")})
                                  -                )
                                  -            ),
                                  -            DIV({"class": "netInfoHtmlText netInfoText", "role": "tabpanel"},
                                  -                IFRAME({"class": "netInfoHtmlPreview", "role": "document"})
                                  -            )
                                  -        ),
                                  -
                                  -    headerDataTag:
                                  -        FOR("param", "$headers",
                                  -            TR({"role": "listitem"},
                                  -                TD({"class": "netInfoParamName", "role": "presentation"},
                                  -                    TAG("$param|getNameTag", {param: "$param"})
                                  -                ),
                                  -                TD({"class": "netInfoParamValue", "role": "list", "aria-label": "$param.name"},
                                  -                    FOR("line", "$param|getParamValueIterator",
                                  -                        CODE({"class": "focusRow subFocusRow", "role": "listitem"}, "$line")
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    customTab:
                                  -        A({"class": "netInfo$tabId\\Tab netInfoTab", onclick: "$onClickTab", view: "$tabId", "role": "tab"},
                                  -            "$tabTitle"
                                  -        ),
                                  -
                                  -    customBody:
                                  -        DIV({"class": "netInfo$tabId\\Text netInfoText", "role": "tabpanel"}),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    nameTag:
                                  -        SPAN("$param|getParamName"),
                                  -
                                  -    nameWithTooltipTag:
                                  -        SPAN({title: "$param.name"}, "$param|getParamName"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    getNameTag: function(param)
                                  -    {
                                  -        return (this.getParamName(param) == param.name) ? this.nameTag : this.nameWithTooltipTag;
                                  -    },
                                  -
                                  -    getParamName: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            name = name.substr(0, limit) + "...";
                                  -        return name;
                                  -    },
                                  -
                                  -    getParamTitle: function(param)
                                  -    {
                                  -        var limit = 25;
                                  -        var name = param.name;
                                  -        if (name.length > limit)
                                  -            return name;
                                  -        return "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    hideParams: function(file)
                                  -    {
                                  -        return !file.urlParams || !file.urlParams.length;
                                  -    },
                                  -
                                  -    hidePost: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "POST";
                                  -    },
                                  -
                                  -    hidePut: function(file)
                                  -    {
                                  -        return file.method.toUpperCase() != "PUT";
                                  -    },
                                  -
                                  -    hideResponse: function(file)
                                  -    {
                                  -        return false;
                                  -        //return file.category in binaryFileCategories;
                                  -    },
                                  -
                                  -    hideCache: function(file)
                                  -    {
                                  -        return true;
                                  -        //xxxHonza: I don't see any reason why not to display the cache also info for images.
                                  -        return !file.cacheEntry; // || file.category=="image";
                                  -    },
                                  -
                                  -    hideHtml: function(file)
                                  -    {
                                  -        return true;
                                  -        return (file.mimeType != "text/html") && (file.mimeType != "application/xhtml+xml");
                                  -    },
                                  -
                                  -    onClickTab: function(event)
                                  -    {
                                  -        this.selectTab(event.currentTarget || event.srcElement);
                                  -    },
                                  -
                                  -    getParamValueIterator: function(param)
                                  -    {
                                  -        // TODO: xxxpedro console2
                                  -        return param.value;
                                  -        
                                  -        // This value is inserted into CODE element and so, make sure the HTML isn't escaped (1210).
                                  -        // This is why the second parameter is true.
                                  -        // The CODE (with style white-space:pre) element preserves whitespaces so they are
                                  -        // displayed the same, as they come from the server (1194).
                                  -        // In case of a long header values of post parameters the value must be wrapped (2105).
                                  -        return wrapText(param.value, true);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    appendTab: function(netInfoBox, tabId, tabTitle)
                                  -    {
                                  -        // Create new tab and body.
                                  -        var args = {tabId: tabId, tabTitle: tabTitle};
                                  -        this.customTab.append(args, netInfoBox.getElementsByClassName("netInfoTabs").item(0));
                                  -        this.customBody.append(args, netInfoBox.getElementsByClassName("netInfoBodies").item(0));
                                  -    },
                                  -
                                  -    selectTabByName: function(netInfoBox, tabName)
                                  -    {
                                  -        var tab = getChildByClass(netInfoBox, "netInfoTabs", "netInfo"+tabName+"Tab");
                                  -        if (tab)
                                  -            this.selectTab(tab);
                                  -    },
                                  -
                                  -    selectTab: function(tab)
                                  -    {
                                  -        var view = tab.getAttribute("view");
                                  -        
                                  -        var netInfoBox = getAncestorByClass(tab, "netInfoBody");
                                  -        
                                  -        var selectedTab = netInfoBox.selectedTab;
                                  -
                                  -        if (selectedTab)
                                  -        {
                                  -            //netInfoBox.selectedText.removeAttribute("selected");
                                  -            removeClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -            
                                  -            removeClass(selectedTab, "netInfoTabSelected");
                                  -            //selectedTab.removeAttribute("selected");
                                  -            selectedTab.setAttribute("aria-selected", "false");
                                  -        }
                                  -
                                  -        var textBodyName = "netInfo" + view + "Text";
                                  -
                                  -        selectedTab = netInfoBox.selectedTab = tab;
                                  -        
                                  -        netInfoBox.selectedText = $$("."+textBodyName, netInfoBox)[0];
                                  -        //netInfoBox.selectedText = netInfoBox.getElementsByClassName(textBodyName).item(0);
                                  -
                                  -        //netInfoBox.selectedText.setAttribute("selected", "true");
                                  -        setClass(netInfoBox.selectedText, "netInfoTextSelected");
                                  -        
                                  -        setClass(selectedTab, "netInfoTabSelected");
                                  -        selectedTab.setAttribute("selected", "true");
                                  -        selectedTab.setAttribute("aria-selected", "true");
                                  -
                                  -        var file = Firebug.getRepObject(netInfoBox);
                                  -        
                                  -        //var context = Firebug.getElementPanel(netInfoBox).context;
                                  -        var context = Firebug.chrome;
                                  -        
                                  -        this.updateInfo(netInfoBox, file, context);
                                  -    },
                                  -
                                  -    updateInfo: function(netInfoBox, file, context)
                                  -    {
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.updateInfo; file", file);
                                  -
                                  -        if (!netInfoBox)
                                  -        {
                                  -            if (FBTrace.DBG_NET || FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.updateInfo; ERROR netInfo == null " + file.href, file);
                                  -            return;
                                  -        }
                                  -
                                  -        var tab = netInfoBox.selectedTab;
                                  -        
                                  -        if (hasClass(tab, "netInfoParamsTab"))
                                  -        {
                                  -            if (file.urlParams && !netInfoBox.urlParamsPresented)
                                  -            {
                                  -                netInfoBox.urlParamsPresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.urlParams, "Params");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHeadersTab"))
                                  -        {
                                  -            var headersText = $$(".netInfoHeadersText", netInfoBox)[0];
                                  -            //var headersText = netInfoBox.getElementsByClassName("netInfoHeadersText").item(0);
                                  -
                                  -            if (file.responseHeaders && !netInfoBox.responseHeadersPresented)
                                  -            {
                                  -                netInfoBox.responseHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.responseHeaders, "ResponseHeaders");
                                  -            }
                                  -
                                  -            if (file.requestHeaders && !netInfoBox.requestHeadersPresented)
                                  -            {
                                  -                netInfoBox.requestHeadersPresented = true;
                                  -                NetInfoHeaders.renderHeaders(headersText, file.requestHeaders, "RequestHeaders");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPostTab"))
                                  -        {
                                  -            if (!netInfoBox.postPresented)
                                  -            {
                                  -                netInfoBox.postPresented  = true;
                                  -                var postText = netInfoBox.getElementsByClassName("netInfoPostText").item(0);
                                  -                NetInfoPostData.render(context, postText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoPutTab"))
                                  -        {
                                  -            if (!netInfoBox.putPresented)
                                  -            {
                                  -                netInfoBox.putPresented  = true;
                                  -                var putText = netInfoBox.getElementsByClassName("netInfoPutText").item(0);
                                  -                NetInfoPostData.render(context, putText, file);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoResponseTab") && file.loaded && !netInfoBox.responsePresented)
                                  -        {
                                  -            var responseTextBox = $$(".netInfoResponseText", netInfoBox)[0];
                                  -            //var responseTextBox = netInfoBox.getElementsByClassName("netInfoResponseText").item(0);
                                  -            if (file.category == "image")
                                  -            {
                                  -                netInfoBox.responsePresented = true;
                                  -
                                  -                var responseImage = netInfoBox.ownerDocument.createElement("img");
                                  -                responseImage.src = file.href;
                                  -
                                  -                clearNode(responseTextBox);
                                  -                responseTextBox.appendChild(responseImage, responseTextBox);
                                  -            }
                                  -            else //if (!(binaryCategoryMap.hasOwnProperty(file.category)))
                                  -            {
                                  -                this.setResponseText(file, netInfoBox, responseTextBox, context);
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoCacheTab") && file.loaded && !netInfoBox.cachePresented)
                                  -        {
                                  -            var responseTextBox = netInfoBox.getElementsByClassName("netInfoCacheText").item(0);
                                  -            if (file.cacheEntry) {
                                  -                netInfoBox.cachePresented = true;
                                  -                this.insertHeaderRows(netInfoBox, file.cacheEntry, "Cache");
                                  -            }
                                  -        }
                                  -
                                  -        else if (hasClass(tab, "netInfoHtmlTab") && file.loaded && !netInfoBox.htmlPresented)
                                  -        {
                                  -            netInfoBox.htmlPresented = true;
                                  -
                                  -            var text = Utils.getResponseText(file, context);
                                  -            var iframe = netInfoBox.getElementsByClassName("netInfoHtmlPreview").item(0);
                                  -            iframe.contentWindow.document.body.innerHTML = text;
                                  -        }
                                  -
                                  -        // Notify listeners about update so, content of custom tabs can be updated.
                                  -        //dispatch(NetInfoBody.fbListeners, "updateTabBody", [netInfoBox, file, context]);
                                  -    },
                                  -
                                  -    setResponseText: function(file, netInfoBox, responseTextBox, context)
                                  -    {
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        netInfoBox.responsePresented = true;
                                  -        
                                  -        // line breaks somehow are different in IE
                                  -        // make this only once in the initialization? we don't have net panels and modules yet.
                                  -        if (isIE)
                                  -            responseTextBox.style.whiteSpace = "nowrap";
                                  -        
                                  -        responseTextBox[
                                  -                typeof responseTextBox.textContent != "undefined" ? 
                                  -                        "textContent" : 
                                  -                        "innerText"
                                  -            ] = file.responseText;
                                  -        
                                  -        return;
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        //**********************************************
                                  -        
                                  -        // Get response text and make sure it doesn't exceed the max limit.
                                  -        var text = Utils.getResponseText(file, context);
                                  -        var limit = Firebug.netDisplayedResponseLimit + 15;
                                  -        var limitReached = text ? (text.length > limit) : false;
                                  -        if (limitReached)
                                  -            text = text.substr(0, limit) + "...";
                                  -
                                  -        // Insert the response into the UI.
                                  -        if (text)
                                  -            insertWrappedText(text, responseTextBox);
                                  -        else
                                  -            insertWrappedText("", responseTextBox);
                                  -
                                  -        // Append a message informing the user that the response isn't fully displayed.
                                  -        if (limitReached)
                                  -        {
                                  -            var object = {
                                  -                text: $STR("net.responseSizeLimitMessage"),
                                  -                onClickLink: function() {
                                  -                    var panel = context.getPanel("net", true);
                                  -                    panel.openResponseInTab(file);
                                  -                }
                                  -            };
                                  -            Firebug.NetMonitor.ResponseSizeLimit.append(object, responseTextBox);
                                  -        }
                                  -
                                  -        netInfoBox.responsePresented = true;
                                  -
                                  -        if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.setResponseText; response text updated");
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, tableName, rowName)
                                  -    {
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        var headersTable = netInfoBox.getElementsByClassName("netInfo"+tableName+"Table").item(0);
                                  -        var tbody = getChildByClass(headersTable, "netInfo" + rowName + "Body");
                                  -        if (!tbody)
                                  -            tbody = headersTable.firstChild;
                                  -        var titleRow = getChildByClass(tbody, "netInfo" + rowName + "Title");
                                  -
                                  -        this.headerDataTag.insertRows({headers: headers}, titleRow ? titleRow : tbody);
                                  -        removeClass(titleRow, "collapsed");
                                  -    }
                                  -});
                                  -
                                  -var NetInfoBody = Firebug.NetMonitor.NetInfoBody;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Used within the Net panel to display raw source of request and response headers
                                  - * as well as pretty-formatted summary of these headers.
                                  - */
                                  -Firebug.NetMonitor.NetInfoHeaders = domplate(Firebug.Rep, //new Firebug.Listener(),
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoHeadersTable", "role": "tabpanel"},
                                  -            DIV({"class": "netInfoHeadersGroup netInfoResponseHeadersTitle"},
                                  -                SPAN($STR("ResponseHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource response collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "ResponseHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoResponseHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("ResponseHeaders")})
                                  -            ),
                                  -            DIV({"class": "netInfoHeadersGroup netInfoRequestHeadersTitle"},
                                  -                SPAN($STR("RequestHeaders")),
                                  -                SPAN({"class": "netHeadersViewSource request collapsed", onclick: "$onViewSource",
                                  -                    _sourceDisplayed: false, _rowName: "RequestHeaders"},
                                  -                    $STR("net.headers.view source")
                                  -                )
                                  -            ),
                                  -            TABLE({cellpadding: 0, cellspacing: 0},
                                  -                TBODY({"class": "netInfoRequestHeadersBody", "role": "list",
                                  -                    "aria-label": $STR("RequestHeaders")})
                                  -            )
                                  -        ),
                                  -
                                  -    sourceTag:
                                  -        TR({"role": "presentation"},
                                  -            TD({colspan: 2, "role": "presentation"},
                                  -                PRE({"class": "source"})
                                  -            )
                                  -        ),
                                  -
                                  -    onViewSource: function(event)
                                  -    {
                                  -        var target = event.target;
                                  -        var requestHeaders = (target.rowName == "RequestHeaders");
                                  -
                                  -        var netInfoBox = getAncestorByClass(target, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        if (target.sourceDisplayed)
                                  -        {
                                  -            var headers = requestHeaders ? file.requestHeaders : file.responseHeaders;
                                  -            this.insertHeaderRows(netInfoBox, headers, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.view source");
                                  -        }
                                  -        else
                                  -        {
                                  -            var source = requestHeaders ? file.requestHeadersText : file.responseHeadersText;
                                  -            this.insertSource(netInfoBox, source, target.rowName);
                                  -            target.innerHTML = $STR("net.headers.pretty print");
                                  -        }
                                  -
                                  -        target.sourceDisplayed = !target.sourceDisplayed;
                                  -
                                  -        cancelEvent(event);
                                  -    },
                                  -
                                  -    insertSource: function(netInfoBox, source, rowName)
                                  -    {
                                  -        // This breaks copy to clipboard.
                                  -        //if (source)
                                  -        //    source = source.replace(/\r\n/gm, "<span style='color:lightgray'>\\r\\n</span>\r\n");
                                  -
                                  -        var tbody = netInfoBox.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -        var node = this.sourceTag.replace({}, tbody);
                                  -        var sourceNode = node.getElementsByClassName("source").item(0);
                                  -        sourceNode.innerHTML = source;
                                  -    },
                                  -
                                  -    insertHeaderRows: function(netInfoBox, headers, rowName)
                                  -    {
                                  -        var headersTable = $$(".netInfoHeadersTable", netInfoBox)[0];
                                  -        var tbody = $$(".netInfo" + rowName + "Body", headersTable)[0];
                                  -        
                                  -        //var headersTable = netInfoBox.getElementsByClassName("netInfoHeadersTable").item(0);
                                  -        //var tbody = headersTable.getElementsByClassName("netInfo" + rowName + "Body").item(0);
                                  -
                                  -        clearNode(tbody);
                                  -
                                  -        if (!headers.length)
                                  -            return;
                                  -
                                  -        NetInfoBody.headerDataTag.insertRows({headers: headers}, tbody);
                                  -
                                  -        var titleRow = getChildByClass(headersTable, "netInfo" + rowName + "Title");
                                  -        removeClass(titleRow, "collapsed");
                                  -    },
                                  -
                                  -    init: function(parent)
                                  -    {
                                  -        var rootNode = this.tag.append({}, parent);
                                  -
                                  -        var netInfoBox = getAncestorByClass(parent, "netInfoBody");
                                  -        var file = netInfoBox.repObject;
                                  -
                                  -        var viewSource;
                                  -
                                  -        viewSource = $$(".request", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource request").item(0);
                                  -        if (file.requestHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -
                                  -        viewSource = $$(".response", rootNode)[0];
                                  -        //viewSource = rootNode.getElementsByClassName("netHeadersViewSource response").item(0);
                                  -        if (file.responseHeadersText)
                                  -            removeClass(viewSource, "collapsed");
                                  -    },
                                  -
                                  -    renderHeaders: function(parent, headers, rowName)
                                  -    {
                                  -        if (!parent.firstChild)
                                  -            this.init(parent);
                                  -
                                  -        this.insertHeaderRows(parent, headers, rowName);
                                  -    }
                                  -});
                                  -
                                  -var NetInfoHeaders = Firebug.NetMonitor.NetInfoHeaders;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -// TODO: xxxpedro net i18n
                                  -var $STRP = function(a){return a};
                                  -
                                  -Firebug.NetMonitor.NetLimit = domplate(Firebug.Rep,
                                  -{
                                  -    collapsed: true,
                                  -
                                  -    tableTag:
                                  -        DIV(
                                  -            TABLE({width: "100%", cellpadding: 0, cellspacing: 0},
                                  -                TBODY()
                                  -            )
                                  -        ),
                                  -
                                  -    limitTag:
                                  -        TR({"class": "netRow netLimitRow", $collapsed: "$isCollapsed"},
                                  -            TD({"class": "netCol netLimitCol", colspan: 6},
                                  -                TABLE({cellpadding: 0, cellspacing: 0},
                                  -                    TBODY(
                                  -                        TR(
                                  -                            TD(
                                  -                                SPAN({"class": "netLimitLabel"},
                                  -                                    $STRP("plural.Limit_Exceeded", [0])
                                  -                                )
                                  -                            ),
                                  -                            TD({style: "width:100%"}),
                                  -                            TD(
                                  -                                BUTTON({"class": "netLimitButton", title: "$limitPrefsTitle",
                                  -                                    onclick: "$onPreferences"},
                                  -                                  $STR("LimitPrefs")
                                  -                                )
                                  -                            ),
                                  -                            TD("&nbsp;")
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    isCollapsed: function()
                                  -    {
                                  -        return this.collapsed;
                                  -    },
                                  -
                                  -    onPreferences: function(event)
                                  -    {
                                  -        openNewTab("about:config");
                                  -    },
                                  -
                                  -    updateCounter: function(row)
                                  -    {
                                  -        removeClass(row, "collapsed");
                                  -
                                  -        // Update info within the limit row.
                                  -        var limitLabel = row.getElementsByClassName("netLimitLabel").item(0);
                                  -        limitLabel.firstChild.nodeValue = $STRP("plural.Limit_Exceeded", [row.limitInfo.totalCount]);
                                  -    },
                                  -
                                  -    createTable: function(parent, limitInfo)
                                  -    {
                                  -        var table = this.tableTag.replace({}, parent);
                                  -        var row = this.createRow(table.firstChild.firstChild, limitInfo);
                                  -        return [table, row];
                                  -    },
                                  -
                                  -    createRow: function(parent, limitInfo)
                                  -    {
                                  -        var row = this.limitTag.insertRows(limitInfo, parent, this)[0];
                                  -        row.limitInfo = limitInfo;
                                  -        return row;
                                  -    },
                                  -
                                  -    // nsIPrefObserver
                                  -    observe: function(subject, topic, data)
                                  -    {
                                  -        // We're observing preferences only.
                                  -        if (topic != "nsPref:changed")
                                  -          return;
                                  -
                                  -        if (data.indexOf("net.logLimit") != -1)
                                  -            this.updateMaxLimit();
                                  -    },
                                  -
                                  -    updateMaxLimit: function()
                                  -    {
                                  -        var value = Firebug.getPref(Firebug.prefDomain, "net.logLimit");
                                  -        maxQueueRequests = value ? value : maxQueueRequests;
                                  -    }
                                  -});
                                  -
                                  -var NetLimit = Firebug.NetMonitor.NetLimit;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.ResponseSizeLimit = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV({"class": "netInfoResponseSizeLimit"},
                                  -            SPAN("$object.beforeLink"),
                                  -            A({"class": "objectLink", onclick: "$onClickLink"},
                                  -                "$object.linkText"
                                  -            ),
                                  -            SPAN("$object.afterLink")
                                  -        ),
                                  -
                                  -    reLink: /^(.*)<a>(.*)<\/a>(.*$)/,
                                  -    append: function(obj, parent)
                                  -    {
                                  -        var m = obj.text.match(this.reLink);
                                  -        return this.tag.append({onClickLink: obj.onClickLink,
                                  -            object: {
                                  -            beforeLink: m[1],
                                  -            linkText: m[2],
                                  -            afterLink: m[3]
                                  -        }}, parent, this);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.NetMonitor.Utils =
                                  -{
                                  -    findHeader: function(headers, name)
                                  -    {
                                  -        if (!headers)
                                  -            return null;
                                  -
                                  -        name = name.toLowerCase();
                                  -        for (var i = 0; i < headers.length; ++i)
                                  -        {
                                  -            var headerName = headers[i].name.toLowerCase();
                                  -            if (headerName == name)
                                  -                return headers[i].value;
                                  -        }
                                  -    },
                                  -
                                  -    formatPostText: function(text)
                                  -    {
                                  -        if (text instanceof XMLDocument)
                                  -            return getElementXML(text.documentElement);
                                  -        else
                                  -            return text;
                                  -    },
                                  -
                                  -    getPostText: function(file, context, noLimit)
                                  -    {
                                  -        if (!file.postText)
                                  -        {
                                  -            file.postText = readPostTextFromRequest(file.request, context);
                                  -
                                  -            if (!file.postText && context)
                                  -                file.postText = readPostTextFromPage(file.href, context);
                                  -        }
                                  -
                                  -        if (!file.postText)
                                  -            return file.postText;
                                  -
                                  -        var limit = Firebug.netDisplayedPostBodyLimit;
                                  -        if (file.postText.length > limit && !noLimit)
                                  -        {
                                  -            return cropString(file.postText, limit,
                                  -                "\n\n... " + $STR("net.postDataSizeLimitMessage") + " ...\n\n");
                                  -        }
                                  -
                                  -        return file.postText;
                                  -    },
                                  -
                                  -    getResponseText: function(file, context)
                                  -    {
                                  -        // The response can be also empty string so, check agains "undefined".
                                  -        return (typeof(file.responseText) != "undefined")? file.responseText :
                                  -            context.sourceCache.loadText(file.href, file.method, file);
                                  -    },
                                  -
                                  -    isURLEncodedRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        // The header value doesn't have to be always exactly "application/x-www-form-urlencoded",
                                  -        // there can be even charset specified. So, use indexOf rather than just "==".
                                  -        var headerValue = Utils.findHeader(file.requestHeaders, "content-type");
                                  -        if (headerValue && headerValue.indexOf("application/x-www-form-urlencoded") == 0)
                                  -            return true;
                                  -
                                  -        return false;
                                  -    },
                                  -
                                  -    isMultiPartRequest: function(file, context)
                                  -    {
                                  -        var text = Utils.getPostText(file, context);
                                  -        if (text && text.toLowerCase().indexOf("content-type: multipart/form-data") == 0)
                                  -            return true;
                                  -        return false;
                                  -    },
                                  -
                                  -    getMimeType: function(mimeType, uri)
                                  -    {
                                  -        if (!mimeType || !(mimeCategoryMap.hasOwnProperty(mimeType)))
                                  -        {
                                  -            var ext = getFileExtension(uri);
                                  -            if (!ext)
                                  -                return mimeType;
                                  -            else
                                  -            {
                                  -                var extMimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -                return extMimeType ? extMimeType : mimeType;
                                  -            }
                                  -        }
                                  -        else
                                  -            return mimeType;
                                  -    },
                                  -
                                  -    getDateFromSeconds: function(s)
                                  -    {
                                  -        var d = new Date();
                                  -        d.setTime(s*1000);
                                  -        return d;
                                  -    },
                                  -
                                  -    getHttpHeaders: function(request, file)
                                  -    {
                                  -        try
                                  -        {
                                  -            var http = QI(request, Ci.nsIHttpChannel);
                                  -            file.status = request.responseStatus;
                                  -
                                  -            // xxxHonza: is there any problem to do this in requestedFile method?
                                  -            file.method = http.requestMethod;
                                  -            file.urlParams = parseURLParams(file.href);
                                  -            file.mimeType = Utils.getMimeType(request.contentType, request.name);
                                  -
                                  -            if (!file.responseHeaders && Firebug.collectHttpHeaders)
                                  -            {
                                  -                var requestHeaders = [], responseHeaders = [];
                                  -
                                  -                http.visitRequestHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        requestHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -                http.visitResponseHeaders({
                                  -                    visitHeader: function(name, value)
                                  -                    {
                                  -                        responseHeaders.push({name: name, value: value});
                                  -                    }
                                  -                });
                                  -
                                  -                file.requestHeaders = requestHeaders;
                                  -                file.responseHeaders = responseHeaders;
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // An exception can be throwed e.g. when the request is aborted and
                                  -            // request.responseStatus is accessed.
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("net.getHttpHeaders FAILS " + file.href, exc);
                                  -        }
                                  -    },
                                  -
                                  -    isXHR: function(request)
                                  -    {
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            var xhrRequest = callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null;
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.isXHR; " + (xhrRequest != null) + ", " + safeGetName(request));
                                  -
                                  -            return (xhrRequest != null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -
                                  -       return false;
                                  -    },
                                  -
                                  -    getFileCategory: function(file)
                                  -    {
                                  -        if (file.category)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; current: " + file.category + " for: " + file.href, file);
                                  -            return file.category;
                                  -        }
                                  -
                                  -        if (file.isXHR)
                                  -        {
                                  -            if (FBTrace.DBG_NET)
                                  -                FBTrace.sysout("net.getFileCategory; XHR for: " + file.href, file);
                                  -            return file.category = "xhr";
                                  -        }
                                  -
                                  -        if (!file.mimeType)
                                  -        {
                                  -            var ext = getFileExtension(file.href);
                                  -            if (ext)
                                  -                file.mimeType = mimeExtensionMap[ext.toLowerCase()];
                                  -        }
                                  -
                                  -        /*if (FBTrace.DBG_NET)
                                  -            FBTrace.sysout("net.getFileCategory; " + mimeCategoryMap[file.mimeType] +
                                  -                ", mimeType: " + file.mimeType + " for: " + file.href, file);*/
                                  -
                                  -        if (!file.mimeType)
                                  -            return "";
                                  -
                                  -        // Solve cases when charset is also specified, eg "text/html; charset=UTF-8".
                                  -        var mimeType = file.mimeType;
                                  -        if (mimeType)
                                  -            mimeType = mimeType.split(";")[0];
                                  -
                                  -        return (file.category = mimeCategoryMap[mimeType]);
                                  -    }
                                  -};
                                  -
                                  -var Utils = Firebug.NetMonitor.Utils;
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -//Firebug.registerRep(Firebug.NetMonitor.NetRequestTable);
                                  -//Firebug.registerActivableModule(Firebug.NetMonitor);
                                  -//Firebug.registerPanel(NetPanel);
                                  -
                                  -Firebug.registerModule(Firebug.NetMonitor);
                                  -//Firebug.registerRep(Firebug.NetMonitor.BreakpointRep);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/reps.js b/tags/firebug1.3a5/content/firebug/reps.js
                                  deleted file mode 100644
                                  index 4d7e38f1..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/reps.js
                                  +++ /dev/null
                                  @@ -1,261 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -Firebug.Reps = {
                                  -
                                  -    appendText: function(object, html)
                                  -    {
                                  -        html.push(escapeHTML(objectToString(object)));
                                  -    },
                                  -    
                                  -    appendNull: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-null">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendString: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-string">&quot;', escapeHTML(objectToString(object)),
                                  -            '&quot;</span>');
                                  -    },
                                  -    
                                  -    appendInteger: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFloat: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-number">', escapeHTML(objectToString(object)), '</span>');
                                  -    },
                                  -    
                                  -    appendFunction: function(object, html)
                                  -    {
                                  -        var reName = /function ?(.*?)\(/;
                                  -        var m = reName.exec(objectToString(object));
                                  -        var name = m && m[1] ? m[1] : "function";
                                  -        html.push('<span class="objectBox-function">', escapeHTML(name), '()</span>');
                                  -    },
                                  -    
                                  -    appendObject: function(object, html)
                                  -    {
                                  -        /*
                                  -        var rep = Firebug.getRep(object);
                                  -        var outputs = [];
                                  -        
                                  -        rep.tag.tag.compile();
                                  -        
                                  -        var str = rep.tag.renderHTML({object: object}, outputs);
                                  -        html.push(str);
                                  -        /**/
                                  -        
                                  -        try
                                  -        {
                                  -            if (object == undefined)
                                  -                this.appendNull("undefined", html);
                                  -            else if (object == null)
                                  -                this.appendNull("null", html);
                                  -            else if (typeof object == "string")
                                  -                this.appendString(object, html);
                                  -            else if (typeof object == "number")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "boolean")
                                  -                this.appendInteger(object, html);
                                  -            else if (typeof object == "function")
                                  -                this.appendFunction(object, html);
                                  -            else if (object.nodeType == 1)
                                  -                this.appendSelector(object, html);
                                  -            else if (typeof object == "object")
                                  -            {
                                  -                if (typeof object.length != "undefined")
                                  -                    this.appendArray(object, html);
                                  -                else
                                  -                    this.appendObjectFormatted(object, html);
                                  -            }
                                  -            else
                                  -                this.appendText(object, html);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -        /**/
                                  -    },
                                  -        
                                  -    appendObjectFormatted: function(object, html)
                                  -    {
                                  -        var text = objectToString(object);
                                  -        var reObject = /\[object (.*?)\]/;
                                  -    
                                  -        var m = reObject.exec(text);
                                  -        html.push('<span class="objectBox-object">', m ? m[1] : text, '</span>')
                                  -    },
                                  -    
                                  -    appendSelector: function(object, html)
                                  -    {
                                  -        var uid = object[cacheID];
                                  -        var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";
                                  -        
                                  -        html.push('<span class="objectBox-selector"', uidString, '>');
                                  -    
                                  -        html.push('<span class="selectorTag">', escapeHTML(object.nodeName.toLowerCase()), '</span>');
                                  -        if (object.id)
                                  -            html.push('<span class="selectorId">#', escapeHTML(object.id), '</span>');
                                  -        if (object.className)
                                  -            html.push('<span class="selectorClass">.', escapeHTML(object.className), '</span>');
                                  -    
                                  -        html.push('</span>');
                                  -    },
                                  -    
                                  -    appendNode: function(node, html)
                                  -    {
                                  -        if (node.nodeType == 1)
                                  -        {
                                  -            var uid = node[cacheID];
                                  -            var uidString = uid ? [cacheID, '="', uid, '"'].join("") : "";                
                                  -            
                                  -            html.push(
                                  -                '<div class="objectBox-element"', uidString, '">',
                                  -                '<span ', cacheID, '="', uid, '" class="nodeBox">',
                                  -                '&lt;<span class="nodeTag">', node.nodeName.toLowerCase(), '</span>');
                                  -    
                                  -            for (var i = 0; i < node.attributes.length; ++i)
                                  -            {
                                  -                var attr = node.attributes[i];
                                  -                if (!attr.specified || attr.nodeName == cacheID)
                                  -                    continue;
                                  -                
                                  -                var name = attr.nodeName.toLowerCase();
                                  -                var value = name == "style" ? node.style.cssText : attr.nodeValue;
                                  -                
                                  -                html.push('&nbsp;<span class="nodeName">', name,
                                  -                    '</span>=&quot;<span class="nodeValue">', escapeHTML(value),
                                  -                    '</span>&quot;')
                                  -            }
                                  -    
                                  -            if (node.firstChild)
                                  -            {
                                  -                html.push('&gt;</div><div class="nodeChildren">');
                                  -    
                                  -                for (var child = node.firstChild; child; child = child.nextSibling)
                                  -                    this.appendNode(child, html);
                                  -                    
                                  -                html.push('</div><div class="objectBox-element">&lt;/<span class="nodeTag">', 
                                  -                    node.nodeName.toLowerCase(), '&gt;</span></span></div>');
                                  -            }
                                  -            else
                                  -                html.push('/&gt;</span></div>');
                                  -        }
                                  -        else if (node.nodeType == 3)
                                  -        {
                                  -            html.push('<div class="nodeText">', escapeHTML(node.nodeValue),
                                  -                '</div>');
                                  -        }
                                  -    },
                                  -    
                                  -    appendArray: function(object, html)
                                  -    {
                                  -        html.push('<span class="objectBox-array"><b>[</b> ');
                                  -        
                                  -        for (var i = 0, l = object.length, obj; i < l; ++i)
                                  -        {
                                  -            this.appendObject(object[i], html);
                                  -            
                                  -            if (i < l-1)
                                  -            html.push(', ');
                                  -        }
                                  -    
                                  -        html.push(' <b>]</b></span>');
                                  -    }
                                  -
                                  -};
                                  -
                                  -
                                  -
                                  -/*
                                  -From firebug
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    registerRep: function()
                                  -    {
                                  -        reps.push.apply(reps, arguments);
                                  -    },
                                  -
                                  -    setDefaultRep: function(rep)
                                  -    {
                                  -        defaultRep = rep;
                                  -    },
                                  -
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Reps
                                  -
                                  -    getRep: function(object)
                                  -    {
                                  -        var type = typeof(object);
                                  -        for (var i = 0; i < reps.length; ++i)
                                  -        {
                                  -            var rep = reps[i];
                                  -            try
                                  -            {
                                  -                if (rep.supportsObject(object, type))
                                  -                    return rep;
                                  -            }
                                  -            catch (exc)
                                  -            {
                                  -                if (FBTrace.dumpProperties)
                                  -                {
                                  -                    FBTrace.dumpProperties("firebug.getRep FAILS at i/reps.length: "+i+"/"+reps.length+" type:"+type+" exc:", exc);
                                  -                    FBTrace.dumpProperties("firebug.getRep reps[i]", reps[i]);
                                  -                    FBTrace.dumpStack("firebug.getRep");
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return defaultRep;
                                  -    },
                                  -
                                  -    getRepObject: function(node)
                                  -    {
                                  -        var target = null;
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (hasClass(child, "repTarget"))
                                  -                target = child;
                                  -
                                  -            if (child.repObject)
                                  -            {
                                  -                if (!target && hasClass(child, "repIgnore"))
                                  -                    break;
                                  -                else
                                  -                    return child.repObject;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    getRepNode: function(node)
                                  -    {
                                  -        for (var child = node; child; child = child.parentNode)
                                  -        {
                                  -            if (child.repObject)
                                  -                return child;
                                  -        }
                                  -    },
                                  -
                                  -    getElementByRepObject: function(element, object)
                                  -    {
                                  -        for (var child = element.firstChild; child; child = child.nextSibling)
                                  -        {
                                  -            if (child.repObject == object)
                                  -                return child;
                                  -        }
                                  -    },
                                  -/**/
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/reps2.js b/tags/firebug1.3a5/content/firebug/reps2.js
                                  deleted file mode 100644
                                  index 00ef36ab..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/reps2.js
                                  +++ /dev/null
                                  @@ -1,1685 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -var FirebugReps = FBL.ns(function() { with (FBL) {
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Common Tags
                                  -
                                  -var OBJECTBOX = this.OBJECTBOX =
                                  -    SPAN({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTBLOCK = this.OBJECTBLOCK =
                                  -    DIV({"class": "objectBox objectBox-$className"});
                                  -
                                  -var OBJECTLINK = this.OBJECTLINK = isIE6 ? // IE6 object link representation
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        href: "javascript:void(0)",
                                  -        _repObject: "$object"
                                  -    })
                                  -    : // Other browsers
                                  -    A({
                                  -        "class": "objectLink objectLink-$className a11yFocus",
                                  -        _repObject: "$object"
                                  -    });
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Undefined = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("undefined"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "undefined",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "undefined";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Null = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("null"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "null",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object == null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Nada = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN(""),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "nada"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Number = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "number",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "boolean" || type == "number";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.String = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("&quot;$object&quot;"),
                                  -
                                  -    shortTag: OBJECTBOX("&quot;$object|cropString&quot;"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "string",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return type == "string";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Text = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX("$object"),
                                  -
                                  -    shortTag: OBJECTBOX("$object|cropString"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "text"
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Caption = domplate(Firebug.Rep,
                                  -{
                                  -    tag: SPAN({"class": "caption"}, "$object")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Warning = domplate(Firebug.Rep,
                                  -{
                                  -    tag: DIV({"class": "warning focusRow", role : 'listitem'}, "$object|STR")
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Func = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("$object|summarizeFunction"),
                                  -
                                  -    summarizeFunction: function(fn)
                                  -    {
                                  -        var fnRegex = /function ([^(]+\([^)]*\)) \{/;
                                  -        var fnText = safeToString(fn);
                                  -
                                  -        var m = fnRegex.exec(fnText);
                                  -        return m ? m[1] : "function()";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copySource: function(fn)
                                  -    {
                                  -        copyToClipboard(safeToString(fn));
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        if (monitored)
                                  -            Firebug.Debugger.unmonitorScript(fn, script, "monitor");
                                  -        else
                                  -            Firebug.Debugger.monitorScript(fn, script, "monitor");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "function",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return isFunction(object);
                                  -    },
                                  -
                                  -    inspectObject: function(fn, context)
                                  -    {
                                  -        var sourceLink = findSourceForFunction(fn, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -        if (FBTrace.DBG_FUNCTION_NAME)
                                  -            FBTrace.sysout("reps.function.inspectObject selected sourceLink is ", sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(fn, context)
                                  -    {
                                  -        var script = findScriptForFunctionInContext(context, fn);
                                  -        if (script)
                                  -            return $STRF("Line", [normalizeURL(script.fileName), script.baseLineNumber]);
                                  -        else
                                  -            if (fn.toString)
                                  -                return fn.toString();
                                  -    },
                                  -
                                  -    getTitle: function(fn, context)
                                  -    {
                                  -        var name = fn.name ? fn.name : "function";
                                  -        return name + "()";
                                  -    },
                                  -
                                  -    getContextMenuItems: function(fn, target, context, script)
                                  -    {
                                  -        if (!script)
                                  -            script = findScriptForFunctionInContext(context, fn);
                                  -        if (!script)
                                  -            return;
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -        var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = script ? getFunctionName(script, context) : fn.name;
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, fn) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  -this.jsdScript = domplate(Firebug.Rep,
                                  -{
                                  -    copySource: function(script)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.copySource(fn);
                                  -    },
                                  -
                                  -    monitor: function(fn, script, monitored)
                                  -    {
                                  -        fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.monitor(fn, script, monitored);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "jsdScript",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return object instanceof jsdIScript;
                                  -    },
                                  -
                                  -    inspectObject: function(script, context)
                                  -    {
                                  -        var sourceLink = getSourceLinkForScript(script, context);
                                  -        if (sourceLink)
                                  -            Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getRealObject: function(script, context)
                                  -    {
                                  -        return script;
                                  -    },
                                  -
                                  -    getTooltip: function(script)
                                  -    {
                                  -        return $STRF("jsdIScript", [script.tag]);
                                  -    },
                                  -
                                  -    getTitle: function(script, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getTitle(fn, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(script, target, context)
                                  -    {
                                  -        var fn = script.functionObject.getWrappedValue();
                                  -
                                  -        var scriptInfo = getSourceFileAndLineByScript(context, script);
                                  -           var monitored = scriptInfo ? fbs.isMonitored(scriptInfo.sourceFile.href, scriptInfo.lineNo) : false;
                                  -
                                  -        var name = getFunctionName(script, context);
                                  -
                                  -        return [
                                  -            {label: "CopySource", command: bindFixed(this.copySource, this, script) },
                                  -            "-",
                                  -            {label: $STRF("ShowCallsInConsole", [name]), nol10n: true,
                                  -             type: "checkbox", checked: monitored,
                                  -             command: bindFixed(this.monitor, this, fn, script, monitored) }
                                  -        ];
                                  -    }
                                  -});
                                  -/**/
                                  -//************************************************************************************************
                                  -
                                  -this.Obj = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "objectTitle"}, "$object|getTitle"),
                                  -            FOR("prop", "$object|propIterator",
                                  -                " $prop.name=",
                                  -                SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            )
                                  -        ),
                                  -
                                  -    propIterator: function (object)
                                  -    {
                                  -        if (!object)
                                  -            return [];
                                  -
                                  -        var props = [];
                                  -        var len = 0;
                                  -
                                  -        try
                                  -        {
                                  -            for (var name in object)
                                  -            {
                                  -                var val;
                                  -                try
                                  -                {
                                  -                    val = object[name];
                                  -                }
                                  -                catch (exc)
                                  -                {
                                  -                    continue;
                                  -                }
                                  -
                                  -                var t = typeof val;
                                  -                if (t == "boolean" || t == "number" || (t == "string" && val)
                                  -                    || (t == "object" && !isFunction(val) && val && val.toString))
                                  -                {
                                  -                    var title = (t == "object")
                                  -                        ? Firebug.getRep(val).getTitle(val)
                                  -                        : val+"";
                                  -
                                  -                    len += name.length + title.length + 1;
                                  -                    if (len < 50)
                                  -                        props.push({name: name, value: title});
                                  -                    else
                                  -                        break;
                                  -                }
                                  -            }
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            // Sometimes we get exceptions when trying to read from certain objects, like
                                  -            // StorageList, but don't let that gum up the works
                                  -            // XXXjjb also History.previous fails because object is a web-page object which does not have
                                  -            // permission to read the history
                                  -        }
                                  -
                                  -        return props;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return true;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Arr = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|arrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            SPAN({"class": "arrayRightBracket", role : "presentation"}, "]")
                                  -        ),
                                  -
                                  -    shortTag:
                                  -        OBJECTBOX({_repObject: "$object"},
                                  -            SPAN({"class": "arrayLeftBracket", role : "presentation"}, "["),
                                  -            FOR("item", "$object|shortArrayIterator",
                                  -                TAG("$item.tag", {object: "$item.object"}),
                                  -                SPAN({"class": "arrayComma", role : "presentation"}, "$item.delim")
                                  -            ),
                                  -            // TODO: xxxpedro - confirm this on Firebug
                                  -            //FOR("prop", "$object|shortPropIterator",
                                  -            //        " $prop.name=",
                                  -            //        SPAN({"class": "objectPropValue"}, "$prop.value|cropString")
                                  -            //),
                                  -            SPAN({"class": "arrayRightBracket"}, "]")
                                  -        ),
                                  -
                                  -    arrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortArrayIterator: function(array)
                                  -    {
                                  -        var items = [];
                                  -        for (var i = 0; i < array.length && i < 3; ++i)
                                  -        {
                                  -            var value = array[i];
                                  -            var rep = Firebug.getRep(value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -            var delim = (i == array.length-1 ? "" : ", ");
                                  -
                                  -            items.push({object: value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        if (array.length > 3)
                                  -            items.push({object: (array.length-3) + " more...", tag: FirebugReps.Caption.tag, delim: ""});
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    shortPropIterator:    this.Obj.propIterator,
                                  -
                                  -    getItemIndex: function(child)
                                  -    {
                                  -        var arrayIndex = 0;
                                  -        for (child = child.previousSibling; child; child = child.previousSibling)
                                  -        {
                                  -            if (child.repObject)
                                  -                ++arrayIndex;
                                  -        }
                                  -        return arrayIndex;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "array",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return this.isArray(object);
                                  -    },
                                  -
                                  -    // http://code.google.com/p/fbug/issues/detail?id=874
                                  -    // BEGIN Yahoo BSD Source (modified here)  YAHOO.lang.isArray, YUI 2.2.2 June 2007
                                  -    isArray: function(obj) {
                                  -        try {
                                  -            if (!obj)
                                  -                return false;
                                  -            else if (isIE && !isFunction(obj) && typeof obj == "object" && isFinite(obj.length) && obj.nodeType != 8)
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.splice))
                                  -                return true;
                                  -            else if (isFinite(obj.length) && isFunction(obj.callee)) // arguments
                                  -                return true;
                                  -            else if (instanceOf(obj, "HTMLCollection"))
                                  -                return true;
                                  -            else if (instanceOf(obj, "NodeList"))
                                  -                return true;
                                  -            else
                                  -                return false;
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -            {
                                  -                FBTrace.sysout("isArray FAILS:", exc);  /* Something weird: without the try/catch, OOM, with no exception?? */
                                  -                FBTrace.sysout("isArray Fails on obj", obj);
                                  -            }
                                  -        }
                                  -
                                  -        return false;
                                  -    },
                                  -    // END Yahoo BSD SOURCE See license below.
                                  -
                                  -    getTitle: function(object, context)
                                  -    {
                                  -        return "[" + object.length + "]";
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Property = domplate(Firebug.Rep,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Property;
                                  -    },
                                  -
                                  -    getRealObject: function(prop, context)
                                  -    {
                                  -        return prop.object[prop.name];
                                  -    },
                                  -
                                  -    getTitle: function(prop, context)
                                  -    {
                                  -        return prop.name;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.NetFile = domplate(this.Obj,
                                  -{
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Firebug.NetFile;
                                  -    },
                                  -
                                  -    browseObject: function(file, context)
                                  -    {
                                  -        openNewTab(file.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(file, context)
                                  -    {
                                  -        return null;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Except = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({_repObject: "$object"}, "$object.message"),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "exception",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorCopy;
                                  -    }
                                  -});
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Element = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "$object.tagName|toLowerCase"),
                                  -            FOR("attr", "$object|attrIterator",
                                  -                "&nbsp;$attr.tagName=&quot;", SPAN({"class": "nodeValue"}, "$attr.nodeValue"), "&quot;"
                                  -            ),
                                  -            "&gt;"
                                  -         ),
                                  -
                                  -    shortTag:
                                  -        OBJECTLINK(
                                  -            SPAN({"class": "$object|getVisible"},
                                  -                SPAN({"class": "selectorTag"}, "$object|getSelectorTag"),
                                  -                SPAN({"class": "selectorId"}, "$object|getSelectorId"),
                                  -                SPAN({"class": "selectorClass"}, "$object|getSelectorClass"),
                                  -                SPAN({"class": "selectorValue"}, "$object|getValue")
                                  -            )
                                  -         ),
                                  -
                                  -     getVisible: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "selectorHidden";
                                  -     },
                                  -
                                  -     getSelectorTag: function(elt)
                                  -     {
                                  -         return elt.tagName.toLowerCase();
                                  -     },
                                  -
                                  -     getSelectorId: function(elt)
                                  -     {
                                  -         return elt.id ? "#" + elt.id : "";
                                  -     },
                                  -
                                  -     getSelectorClass: function(elt)
                                  -     {
                                  -         return elt.className ? "." + elt.className.split(" ")[0] : "";
                                  -     },
                                  -
                                  -     getValue: function(elt)
                                  -     {
                                  -         // TODO: xxxpedro
                                  -         return "";
                                  -         var value;
                                  -         if (elt instanceof HTMLImageElement)
                                  -             value = getFileName(elt.src);
                                  -         else if (elt instanceof HTMLAnchorElement)
                                  -             value = getFileName(elt.href);
                                  -         else if (elt instanceof HTMLInputElement)
                                  -             value = elt.value;
                                  -         else if (elt instanceof HTMLFormElement)
                                  -             value = getFileName(elt.action);
                                  -         else if (elt instanceof HTMLScriptElement)
                                  -             value = getFileName(elt.src);
                                  -
                                  -         return value ? " " + cropString(value, 20) : "";
                                  -     },
                                  -
                                  -     attrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         var idAttr, classAttr;
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName && attr.tagName.indexOf("firebug-") != -1)
                                  -                    continue;
                                  -                 else if (attr.tagName == "id")
                                  -                     idAttr = attr;
                                  -                else if (attr.tagName == "class")
                                  -                    classAttr = attr;
                                  -                 else
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -         if (classAttr)
                                  -            attrs.splice(0, 0, classAttr);
                                  -         if (idAttr)
                                  -            attrs.splice(0, 0, idAttr);
                                  -         
                                  -         return attrs;
                                  -     },
                                  -
                                  -     shortAttrIterator: function(elt)
                                  -     {
                                  -         var attrs = [];
                                  -         if (elt.attributes)
                                  -         {
                                  -             for (var i = 0; i < elt.attributes.length; ++i)
                                  -             {
                                  -                 var attr = elt.attributes[i];
                                  -                 if (attr.tagName == "id" || attr.tagName == "class")
                                  -                     attrs.push(attr);
                                  -             }
                                  -         }
                                  -
                                  -         return attrs;
                                  -     },
                                  -
                                  -     getHidden: function(elt)
                                  -     {
                                  -         return isVisible(elt) ? "" : "nodeHidden";
                                  -     },
                                  -
                                  -     getXPath: function(elt)
                                  -     {
                                  -         return getElementTreeXPath(elt);
                                  -     },
                                  -
                                  -     getNodeText: function(element)
                                  -     {
                                  -         var text = element.textContent;
                                  -         if (Firebug.showFullTextNodes)
                                  -            return text;
                                  -        else
                                  -            return cropString(text, 50);
                                  -     },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyHTML: function(elt)
                                  -    {
                                  -        var html = getElementXML(elt);
                                  -        copyToClipboard(html);
                                  -    },
                                  -
                                  -    copyInnerHTML: function(elt)
                                  -    {
                                  -        copyToClipboard(elt.innerHTML);
                                  -    },
                                  -
                                  -    copyXPath: function(elt)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -        copyToClipboard(xpath);
                                  -    },
                                  -
                                  -    persistor: function(context, xpath)
                                  -    {
                                  -        var elts = xpath
                                  -            ? getElementsByXPath(context.window.document, xpath)
                                  -            : null;
                                  -
                                  -        return elts && elts.length ? elts[0] : null;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "element",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Element || object.nodeType == 1 && typeof object.nodeName == "string";
                                  -        return instanceOf(object, "Element");
                                  -    },
                                  -
                                  -    browseObject: function(elt, context)
                                  -    {
                                  -        var tag = elt.tagName.toLowerCase();
                                  -        if (tag == "script")
                                  -            openNewTab(elt.src);
                                  -        else if (tag == "link")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "a")
                                  -            openNewTab(elt.href);
                                  -        else if (tag == "img")
                                  -            openNewTab(elt.src);
                                  -
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(elt, context)
                                  -    {
                                  -        var xpath = getElementXPath(elt);
                                  -
                                  -        return bind(this.persistor, top, xpath);
                                  -    },
                                  -
                                  -    getTitle: function(element, context)
                                  -    {
                                  -        return getElementCSSSelector(element);
                                  -    },
                                  -
                                  -    getTooltip: function(elt)
                                  -    {
                                  -        return this.getXPath(elt);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(elt, target, context)
                                  -    {
                                  -        var monitored = areEventsMonitored(elt, null, context);
                                  -
                                  -        return [
                                  -            {label: "CopyHTML", command: bindFixed(this.copyHTML, this, elt) },
                                  -            {label: "CopyInnerHTML", command: bindFixed(this.copyInnerHTML, this, elt) },
                                  -            {label: "CopyXPath", command: bindFixed(this.copyXPath, this, elt) },
                                  -            "-",
                                  -            {label: "ShowEventsInConsole", type: "checkbox", checked: monitored,
                                  -             command: bindFixed(toggleMonitorEvents, FBL, elt, null, monitored, context) },
                                  -            "-",
                                  -            {label: "ScrollIntoView", command: bindFixed(elt.scrollIntoView, elt) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.TextNode = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK(
                                  -            "&lt;",
                                  -            SPAN({"class": "nodeTag"}, "TextNode"),
                                  -            "&nbsp;textContent=&quot;", SPAN({"class": "nodeValue"}, "$object.textContent|cropString"), "&quot;",
                                  -            "&gt;"
                                  -            ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "textNode",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof Text;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Document = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Document ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(doc)
                                  -    {
                                  -        return doc.location ? getFileName(doc.location.href) : "";
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Document || object instanceof XMLDocument;
                                  -        return instanceOf(object, "Document");
                                  -    },
                                  -
                                  -    browseObject: function(doc, context)
                                  -    {
                                  -        openNewTab(doc.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(doc, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window.document;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "document";
                                  -    },
                                  -
                                  -    getTooltip: function(doc)
                                  -    {
                                  -        return doc.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StyleSheet = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("StyleSheet ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(styleSheet)
                                  -    {
                                  -        return getFileName(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(styleSheet)
                                  -    {
                                  -        copyToClipboard(styleSheet.href);
                                  -    },
                                  -
                                  -    openInTab: function(styleSheet)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof CSSStyleSheet;
                                  -        return instanceOf(object, "CSSStyleSheet");
                                  -    },
                                  -
                                  -    browseObject: function(styleSheet, context)
                                  -    {
                                  -        openNewTab(styleSheet.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(styleSheet, context)
                                  -    {
                                  -        return bind(this.persistor, top, styleSheet.href);
                                  -    },
                                  -
                                  -    getTooltip: function(styleSheet)
                                  -    {
                                  -        return styleSheet.href;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(styleSheet, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, styleSheet) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, styleSheet) }
                                  -        ];
                                  -    },
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getStyleSheetByHref(href, context);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Window = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK("Window ", SPAN({"class": "objectPropValue"}, "$object|getLocation")),
                                  -
                                  -    getLocation: function(win)
                                  -    {
                                  -        try
                                  -        {
                                  -            return (win && win.location && !win.closed) ? getFileName(win.location.href) : "";
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.Window window closed?");
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return instanceOf(object, "Window");
                                  -    },
                                  -
                                  -    browseObject: function(win, context)
                                  -    {
                                  -        openNewTab(win.location.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    persistObject: function(win, context)
                                  -    {
                                  -        return this.persistor;
                                  -    },
                                  -
                                  -    persistor: function(context)
                                  -    {
                                  -        return context.window;
                                  -    },
                                  -
                                  -    getTitle: function(win, context)
                                  -    {
                                  -        return "window";
                                  -    },
                                  -
                                  -    getTooltip: function(win)
                                  -    {
                                  -        if (win && !win.closed)
                                  -            return win.location.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Event = domplate(Firebug.Rep,
                                  -{
                                  -    tag: TAG("$copyEventTag", {object: "$object|copyEvent"}),
                                  -
                                  -    copyEventTag:
                                  -        OBJECTLINK("$object|summarizeEvent"),
                                  -
                                  -    summarizeEvent: function(event)
                                  -    {
                                  -        var info = [event.type, ' '];
                                  -
                                  -        var eventFamily = getEventFamily(event.type);
                                  -        if (eventFamily == "mouse")
                                  -            info.push("clientX=", event.clientX, ", clientY=", event.clientY);
                                  -        else if (eventFamily == "key")
                                  -            info.push("charCode=", event.charCode, ", keyCode=", event.keyCode);
                                  -
                                  -        return info.join("");
                                  -    },
                                  -
                                  -    copyEvent: function(event)
                                  -    {
                                  -        return new EventCopy(event);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "object",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        //return object instanceof Event || object instanceof EventCopy;
                                  -        return instanceOf(object, "Event") || instanceOf(object, "EventCopy");
                                  -    },
                                  -
                                  -    getTitle: function(event, context)
                                  -    {
                                  -        return "Event " + event.type;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceLink = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    hideSourceLink: function(sourceLink)
                                  -    {
                                  -        return sourceLink ? sourceLink.href.indexOf("XPCSafeJSObjectWrapper") != -1 : true;
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(sourceLink)
                                  -    {
                                  -        if (!sourceLink)
                                  -            return "";
                                  -
                                  -        try
                                  -        {
                                  -            var fileName = getFileName(sourceLink.href);
                                  -            fileName = decodeURIComponent(fileName);
                                  -            fileName = cropString(fileName, 17);
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            if (FBTrace.DBG_ERRORS)
                                  -                FBTrace.sysout("reps.getSourceLinkTitle decodeURIComponent fails for \'"+fileName+"\': "+exc, exc);
                                  -        }
                                  -        
                                  -        return typeof sourceLink.line == "number" ?
                                  -                fileName + " (line " + sourceLink.line + ")" :
                                  -                fileName;
                                  -        
                                  -        // TODO: xxxpedro
                                  -        //return $STRF("Line", [fileName, sourceLink.line]);
                                  -    },
                                  -
                                  -    copyLink: function(sourceLink)
                                  -    {
                                  -        copyToClipboard(sourceLink.href);
                                  -    },
                                  -
                                  -    openInTab: function(sourceLink)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceLink",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceLink;
                                  -    },
                                  -
                                  -    getTooltip: function(sourceLink)
                                  -    {
                                  -        return decodeURI(sourceLink.href);
                                  -    },
                                  -
                                  -    inspectObject: function(sourceLink, context)
                                  -    {
                                  -        if (sourceLink.type == "js")
                                  -        {
                                  -            var scriptFile = getSourceFileByHref(sourceLink.href, context);
                                  -            if (scriptFile)
                                  -                return Firebug.chrome.select(sourceLink);
                                  -        }
                                  -        else if (sourceLink.type == "css")
                                  -        {
                                  -            // If an object is defined, treat it as the highest priority for
                                  -            // inspect actions
                                  -            if (sourceLink.object) {
                                  -                Firebug.chrome.select(sourceLink.object);
                                  -                return;
                                  -            }
                                  -
                                  -            var stylesheet = getStyleSheetByHref(sourceLink.href, context);
                                  -            if (stylesheet)
                                  -            {
                                  -                var ownerNode = stylesheet.ownerNode;
                                  -                if (ownerNode)
                                  -                {
                                  -                    Firebug.chrome.select(sourceLink, "html");
                                  -                    return;
                                  -                }
                                  -
                                  -                var panel = context.getPanel("stylesheet");
                                  -                if (panel && panel.getRuleByLine(stylesheet, sourceLink.line))
                                  -                    return Firebug.chrome.select(sourceLink);
                                  -            }
                                  -        }
                                  -
                                  -        // Fallback is to just open the view-source window on the file
                                  -        viewSource(sourceLink.href, sourceLink.line);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -        openNewTab(sourceLink.href);
                                  -        return true;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(sourceLink, target, context)
                                  -    {
                                  -        return [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyLink, this, sourceLink) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, sourceLink) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceFile = domplate(this.SourceLink,
                                  -{
                                  -    tag:
                                  -        OBJECTLINK({$collapsed: "$object|hideSourceLink"}, "$object|getSourceLinkTitle"),
                                  -
                                  -    persistor: function(context, href)
                                  -    {
                                  -        return getSourceFileByHref(href, context);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "sourceFile",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof SourceFile;
                                  -    },
                                  -
                                  -    persistObject: function(sourceFile)
                                  -    {
                                  -        return bind(this.persistor, top, sourceFile.href);
                                  -    },
                                  -
                                  -    browseObject: function(sourceLink, context)
                                  -    {
                                  -    },
                                  -
                                  -    getTooltip: function(sourceFile)
                                  -    {
                                  -        return sourceFile.href;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackFrame = domplate(Firebug.Rep,  // XXXjjb Since the repObject is fn the stack does not have correct line numbers
                                  -{
                                  -    tag:
                                  -        OBJECTBLOCK(
                                  -            A({"class": "objectLink focusRow a11yFocus", _repObject: "$object"}, "$object|getCallName"),
                                  -            "(",
                                  -            FOR("arg", "$object|argIterator",
                                  -                TAG("$arg.tag", {object: "$arg.value"}),
                                  -                SPAN({"class": "arrayComma"}, "$arg.delim")
                                  -            ),
                                  -            ")",
                                  -            SPAN({"class": "objectLink-sourceLink objectLink"}, "$object|getSourceLinkTitle")
                                  -        ),
                                  -
                                  -    getCallName: function(frame)
                                  -    {
                                  -        return getFunctionName(frame.script, frame.context);
                                  -    },
                                  -
                                  -    getSourceLinkTitle: function(frame)
                                  -    {
                                  -        var fileName = cropString(getFileName(frame.href), 17);
                                  -        return $STRF("Line", [fileName, frame.lineNo]);
                                  -    },
                                  -
                                  -    argIterator: function(frame)
                                  -    {
                                  -        if (!frame.args)
                                  -            return [];
                                  -
                                  -        var items = [];
                                  -
                                  -        for (var i = 0; i < frame.args.length; ++i)
                                  -        {
                                  -            var arg = frame.args[i];
                                  -
                                  -            if (!arg)
                                  -                break;
                                  -
                                  -            var rep = Firebug.getRep(arg.value);
                                  -            var tag = rep.shortTag ? rep.shortTag : rep.tag;
                                  -
                                  -            var delim = (i == frame.args.length-1 ? "" : ", ");
                                  -
                                  -            items.push({name: arg.name, value: arg.value, tag: tag, delim: delim});
                                  -        }
                                  -
                                  -        return items;
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackFrame",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackFrame;
                                  -    },
                                  -
                                  -    inspectObject: function(stackFrame, context)
                                  -    {
                                  -        var sourceLink = new SourceLink(stackFrame.href, stackFrame.lineNo, "js");
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getTooltip: function(stackFrame, context)
                                  -    {
                                  -        return $STRF("Line", [stackFrame.href, stackFrame.lineNo]);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.StackTrace = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        FOR("frame", "$object.frames focusRow",
                                  -            TAG(this.StackFrame.tag, {object: "$frame"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "stackTrace",
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof StackTrace;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.jsdStackFrame = domplate(Firebug.Rep,
                                  -{
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return (object instanceof jsdIStackFrame) && (object.isValid);
                                  -    },
                                  -
                                  -    getTitle: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)"; // XXXjjb avoid frame.script == null
                                  -        return getFunctionName(frame.script, context);
                                  -    },
                                  -
                                  -    getTooltip: function(frame, context)
                                  -    {
                                  -        if (!frame.isValid) return "(invalid frame)";  // XXXjjb avoid frame.script == null
                                  -        var sourceInfo = FBL.getSourceFileAndLineByScript(context, frame.script, frame);
                                  -        if (sourceInfo)
                                  -            return $STRF("Line", [sourceInfo.sourceFile.href, sourceInfo.lineNo]);
                                  -        else
                                  -            return $STRF("Line", [frame.script.fileName, frame.line]);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(frame, target, context)
                                  -    {
                                  -        var fn = frame.script.functionObject.getWrappedValue();
                                  -        return FirebugReps.Func.getContextMenuItems(fn, target, context, frame.script);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.ErrorMessage = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        OBJECTBOX({
                                  -                $hasTwisty: "$object|hasStackTrace",
                                  -                $hasBreakSwitch: "$object|hasBreakSwitch",
                                  -                $breakForError: "$object|hasErrorBreak",
                                  -                _repObject: "$object",
                                  -                _stackTrace: "$object|getLastErrorStackTrace",
                                  -                onclick: "$onToggleError"},
                                  -
                                  -            DIV({"class": "errorTitle a11yFocus", role : 'checkbox', 'aria-checked' : 'false'},
                                  -                "$object.message|getMessage"
                                  -            ),
                                  -            DIV({"class": "errorTrace"}),
                                  -            DIV({"class": "errorSourceBox errorSource-$object|getSourceType"},
                                  -                IMG({"class": "errorBreak a11yFocus", src:"blank.gif", role : 'checkbox', 'aria-checked':'false', title: "Break on this error"}),
                                  -                A({"class": "errorSource a11yFocus"}, "$object|getLine")
                                  -            ),
                                  -            TAG(this.SourceLink.tag, {object: "$object|getSourceLink"})
                                  -        ),
                                  -
                                  -    getLastErrorStackTrace: function(error)
                                  -    {
                                  -        return error.trace;
                                  -    },
                                  -
                                  -    hasStackTrace: function(error)
                                  -    {
                                  -        var url = error.href.toString();
                                  -        var fromCommandLine = (url.indexOf("XPCSafeJSObjectWrapper") != -1);
                                  -        return !fromCommandLine && error.trace;
                                  -    },
                                  -
                                  -    hasBreakSwitch: function(error)
                                  -    {
                                  -        return error.href && error.lineNo > 0;
                                  -    },
                                  -
                                  -    hasErrorBreak: function(error)
                                  -    {
                                  -        return fbs.hasErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    getMessage: function(message)
                                  -    {
                                  -        var re = /\[Exception... "(.*?)" nsresult:/;
                                  -        var m = re.exec(message);
                                  -        return m ? m[1] : message;
                                  -    },
                                  -
                                  -    getLine: function(error)
                                  -    {
                                  -        if (error.category == "js")
                                  -        {
                                  -            if (error.source)
                                  -                return cropString(error.source, 80);
                                  -            else if (error.href && error.href.indexOf("XPCSafeJSObjectWrapper") == -1)
                                  -                return cropString(error.getSourceLine(), 80);
                                  -        }
                                  -    },
                                  -
                                  -    getSourceLink: function(error)
                                  -    {
                                  -        var ext = error.category == "css" ? "css" : "js";
                                  -        return error.lineNo ? new SourceLink(error.href, error.lineNo, ext) : null;
                                  -    },
                                  -
                                  -    getSourceType: function(error)
                                  -    {
                                  -        // Errors occurring inside of HTML event handlers look like "foo.html (line 1)"
                                  -        // so let's try to skip those
                                  -        if (error.source)
                                  -            return "syntax";
                                  -        else if (error.lineNo == 1 && getFileExtension(error.href) != "js")
                                  -            return "none";
                                  -        else if (error.category == "css")
                                  -            return "none";
                                  -        else if (!error.href || !error.lineNo)
                                  -            return "none";
                                  -        else
                                  -            return "exec";
                                  -    },
                                  -
                                  -    onToggleError: function(event)
                                  -    {
                                  -        var target = event.currentTarget;
                                  -        if (hasClass(event.target, "errorBreak"))
                                  -        {
                                  -            this.breakOnThisError(target.repObject);
                                  -        }
                                  -        else if (hasClass(event.target, "errorSource"))
                                  -        {
                                  -            var panel = Firebug.getElementPanel(event.target);
                                  -            this.inspectObject(target.repObject, panel.context);
                                  -        }
                                  -        else if (hasClass(event.target, "errorTitle"))
                                  -        {
                                  -            var traceBox = target.childNodes[1];
                                  -            toggleClass(target, "opened");
                                  -            event.target.setAttribute('aria-checked', hasClass(target, "opened"));
                                  -            if (hasClass(target, "opened"))
                                  -            {
                                  -                if (target.stackTrace)
                                  -                    var node = FirebugReps.StackTrace.tag.append({object: target.stackTrace}, traceBox);
                                  -                if (Firebug.A11yModel.enabled)
                                  -                {
                                  -                    var panel = Firebug.getElementPanel(event.target);
                                  -                    dispatch([Firebug.A11yModel], "onLogRowContentCreated", [panel , traceBox]);
                                  -                }
                                  -            }
                                  -            else
                                  -                clearNode(traceBox);
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyError: function(error)
                                  -    {
                                  -        var message = [
                                  -            this.getMessage(error.message),
                                  -            error.href,
                                  -            "Line " +  error.lineNo
                                  -        ];
                                  -        copyToClipboard(message.join("\n"));
                                  -    },
                                  -
                                  -    breakOnThisError: function(error)
                                  -    {
                                  -        if (this.hasErrorBreak(error))
                                  -            Firebug.Debugger.clearErrorBreakpoint(error.href, error.lineNo);
                                  -        else
                                  -            Firebug.Debugger.setErrorBreakpoint(error.href, error.lineNo);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "errorMessage",
                                  -    inspectable: false,
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        return object instanceof ErrorMessage;
                                  -    },
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        FirebugReps.SourceLink.inspectObject(sourceLink, context);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        var items = [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) }
                                  -        ];
                                  -
                                  -        if (error.category == "css")
                                  -        {
                                  -            items.push(
                                  -                "-",
                                  -                {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -                 command: bindFixed(this.breakOnThisError, this, error) },
                                  -
                                  -                optionMenu("BreakOnAllErrors", "breakOnErrors")
                                  -            );
                                  -        }
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.Assert = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            DIV({"class": "errorTitle"}),
                                  -            DIV({"class": "assertDescription"})
                                  -        ),
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "assert",
                                  -
                                  -    inspectObject: function(error, context)
                                  -    {
                                  -        var sourceLink = this.getSourceLink(error);
                                  -        Firebug.chrome.select(sourceLink);
                                  -    },
                                  -
                                  -    getContextMenuItems: function(error, target, context)
                                  -    {
                                  -        var breakOnThisError = this.hasErrorBreak(error);
                                  -
                                  -        return [
                                  -            {label: "CopyError", command: bindFixed(this.copyError, this, error) },
                                  -            "-",
                                  -            {label: "BreakOnThisError", type: "checkbox", checked: breakOnThisError,
                                  -             command: bindFixed(this.breakOnThisError, this, error) },
                                  -            {label: "BreakOnAllErrors", type: "checkbox", checked: Firebug.breakOnErrors,
                                  -             command: bindFixed(this.breakOnAllErrors, this, error) }
                                  -        ];
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -this.SourceText = domplate(Firebug.Rep,
                                  -{
                                  -    tag:
                                  -        DIV(
                                  -            FOR("line", "$object|lineIterator",
                                  -                DIV({"class": "sourceRow", role : "presentation"},
                                  -                    SPAN({"class": "sourceLine", role : "presentation"}, "$line.lineNo"),
                                  -                    SPAN({"class": "sourceRowText", role : "presentation"}, "$line.text")
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    lineIterator: function(sourceText)
                                  -    {
                                  -        var maxLineNoChars = (sourceText.lines.length + "").length;
                                  -        var list = [];
                                  -
                                  -        for (var i = 0; i < sourceText.lines.length; ++i)
                                  -        {
                                  -            // Make sure all line numbers are the same width (with a fixed-width font)
                                  -            var lineNo = (i+1) + "";
                                  -            while (lineNo.length < maxLineNoChars)
                                  -                lineNo = " " + lineNo;
                                  -
                                  -            list.push({lineNo: lineNo, text: sourceText.lines[i]});
                                  -        }
                                  -
                                  -        return list;
                                  -    },
                                  -
                                  -    getHTML: function(sourceText)
                                  -    {
                                  -        return getSourceLineRange(sourceText, 1, sourceText.lines.length);
                                  -    }
                                  -});
                                  -
                                  -//************************************************************************************************
                                  -this.nsIDOMHistory = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showHistory"},
                                  -            OBJECTLINK("$object|summarizeHistory")
                                  -        ),
                                  -
                                  -    className: "nsIDOMHistory",
                                  -
                                  -    summarizeHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;
                                  -            return items + " history entries";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "object does not support history (nsIDOMHistory)";
                                  -        }
                                  -    },
                                  -
                                  -    showHistory: function(history)
                                  -    {
                                  -        try
                                  -        {
                                  -            var items = history.length;  // if this throws, then unsupported
                                  -            Firebug.chrome.select(history);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Ci.nsIDOMHistory);
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -this.ApplicationCache = domplate(Firebug.Rep,
                                  -{
                                  -    tag:OBJECTBOX({onclick: "$showApplicationCache"},
                                  -            OBJECTLINK("$object|summarizeCache")
                                  -        ),
                                  -
                                  -    summarizeCache: function(applicationCache)
                                  -    {
                                  -        try
                                  -        {
                                  -            return applicationCache.length + " items in offline cache";
                                  -        }
                                  -        catch(exc)
                                  -        {
                                  -            return "https://bugzilla.mozilla.org/show_bug.cgi?id=422264";
                                  -        }
                                  -    },
                                  -
                                  -    showApplicationCache: function(event)
                                  -    {
                                  -        openNewTab("https://bugzilla.mozilla.org/show_bug.cgi?id=422264");
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "applicationCache",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        if (Ci.nsIDOMOfflineResourceList)
                                  -            return (object instanceof Ci.nsIDOMOfflineResourceList);
                                  -    }
                                  -
                                  -});
                                  -
                                  -this.Storage = domplate(Firebug.Rep,
                                  -{
                                  -    tag: OBJECTBOX({onclick: "$show"}, OBJECTLINK("$object|summarize")),
                                  -
                                  -    summarize: function(storage)
                                  -    {
                                  -        return storage.length +" items in Storage";
                                  -    },
                                  -    show: function(storage)
                                  -    {
                                  -        openNewTab("http://dev.w3.org/html5/webstorage/#storage-0");
                                  -    },
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    className: "Storage",
                                  -
                                  -    supportsObject: function(object, type)
                                  -    {
                                  -        return (object instanceof Storage);
                                  -    }
                                  -
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -Firebug.registerRep(
                                  -    //this.nsIDOMHistory, // make this early to avoid exceptions
                                  -    this.Undefined,
                                  -    this.Null,
                                  -    this.Number,
                                  -    this.String,
                                  -    this.Window,
                                  -    //this.ApplicationCache, // must come before Arr (array) else exceptions.
                                  -    //this.ErrorMessage,
                                  -    this.Element,
                                  -    //this.TextNode,
                                  -    this.Document,
                                  -    this.StyleSheet,
                                  -    this.Event,
                                  -    //this.SourceLink,
                                  -    //this.SourceFile,
                                  -    //this.StackTrace,
                                  -    //this.StackFrame,
                                  -    //this.jsdStackFrame,
                                  -    //this.jsdScript,
                                  -    //this.NetFile,
                                  -    this.Property,
                                  -    this.Except,
                                  -    this.Arr
                                  -);
                                  -
                                  -Firebug.setDefaultReps(this.Func, this.Obj);
                                  -
                                  -}});
                                  -
                                  -// ************************************************************************************************
                                  -/*
                                  - * The following is http://developer.yahoo.com/yui/license.txt and applies to only code labeled "Yahoo BSD Source"
                                  - * in only this file reps.js.  John J. Barton June 2007.
                                  - *
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2006, Yahoo! Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification, are
                                  -permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Yahoo! Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Yahoo! Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
                                  -WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
                                  -PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
                                  -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
                                  -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                                  -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
                                  -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
                                  -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  - * /
                                  - */
                                  diff --git a/tags/firebug1.3a5/content/firebug/script.js b/tags/firebug1.3a5/content/firebug/script.js
                                  deleted file mode 100644
                                  index 5e73e1f0..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/script.js
                                  +++ /dev/null
                                  @@ -1,272 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// ************************************************************************************************
                                  -// Script Module
                                  -
                                  -Firebug.Script = extend(Firebug.Module, 
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Script") : null;
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.getPanel().selectSourceCode(index);
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Script);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// Script Panel
                                  -
                                  -function ScriptPanel(){};
                                  -
                                  -ScriptPanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Script",
                                  -    title: "Script",
                                  -    
                                  -    sourceIndex: 0,
                                  -    lastSourceIndex: -1,
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true
                                  -    },
                                  -
                                  -    create: function()
                                  -    {
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.onChangeSelect = bind(this.onChangeSelect, this);
                                  -        
                                  -        var doc = Firebug.browser.document;
                                  -        var scripts = doc.getElementsByTagName("script");
                                  -        var selectNode = this.selectNode = createElement("select");
                                  -        
                                  -        for(var i=0, script; script=scripts[i]; i++)
                                  -        {
                                  -            var fileName = getFileName(script.src) || getFileName(doc.location.href);
                                  -            var option = createElement("option", {value:i});
                                  -            
                                  -            option.appendChild(Firebug.chrome.document.createTextNode(fileName));
                                  -            selectNode.appendChild(option);
                                  -        };
                                  -    
                                  -        this.toolButtonsNode.appendChild(selectNode);
                                  -    },
                                  -    
                                  -    initialize: function()
                                  -    {
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        addEvent(this.selectNode, "change", this.onChangeSelect);
                                  -        
                                  -        this.selectSourceCode(this.sourceIndex);
                                  -    },
                                  -    
                                  -    detach: function(oldChrome, newChrome)
                                  -    {
                                  -        Firebug.Panel.detach.apply(this, arguments);
                                  -        
                                  -        var oldPanel = oldChrome.getPanel("Script");
                                  -        var index = oldPanel.sourceIndex;
                                  -        
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.sourceIndex = index;
                                  -        this.lastSourceIndex = -1;
                                  -    },
                                  -    
                                  -    onChangeSelect: function(event)
                                  -    {
                                  -        event = event || window.event;
                                  -        var target = event.srcElement || event.currentTarget;
                                  -        var index = target.selectedIndex;
                                  -        
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    selectSourceCode: function(index)
                                  -    {
                                  -        this.selectNode.selectedIndex = index;
                                  -        this.renderSourceCode(index);
                                  -    },
                                  -    
                                  -    renderSourceCode: function(index)
                                  -    {
                                  -        if (this.lastSourceIndex != index)
                                  -        {
                                  -            var renderProcess = function renderProcess(src)
                                  -            {
                                  -                var html = [],
                                  -                    hl = 0;
                                  -                
                                  -                src = isIE && !isExternal ? 
                                  -                        src+'\n' :  // IE put an extra line when reading source of local resources
                                  -                        '\n'+src;
                                  -                
                                  -                // find the number of lines of code
                                  -                src = src.replace(/\n\r|\r\n/g, "\n");
                                  -                var match = src.match(/[\n]/g);
                                  -                var lines=match ? match.length : 0;
                                  -                
                                  -                // render the full source code + line numbers html
                                  -                html[hl++] = '<div><div class="sourceBox" style="left:'; 
                                  -                html[hl++] = 35 + 7*(lines+'').length;
                                  -                html[hl++] = 'px;"><pre class="sourceCode">';
                                  -                html[hl++] = escapeHTML(src);
                                  -                html[hl++] = '</pre></div><div class="lineNo">';
                                  -                
                                  -                // render the line number divs
                                  -                for(var l=1, lines; l<=lines; l++)
                                  -                {
                                  -                    html[hl++] = '<div line="';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '">';
                                  -                    html[hl++] = l;
                                  -                    html[hl++] = '</div>';
                                  -                }
                                  -                
                                  -                html[hl++] = '</div></div>';
                                  -                
                                  -                updatePanel(html);
                                  -            };
                                  -            
                                  -            var updatePanel = function(html)
                                  -            {
                                  -                self.contentNode.innerHTML = html.join("");
                                  -                
                                  -                // IE needs this timeout, otherwise the panel won't scroll
                                  -                setTimeout(function(){
                                  -                    self.synchronizeUI();
                                  -                },0);                        
                                  -            };
                                  -            
                                  -            var onFailure = function()
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            };
                                  -            
                                  -            var self = this;
                                  -            
                                  -            var doc = Firebug.browser.document;
                                  -            var script = doc.getElementsByTagName("script")[index];
                                  -            var url = getScriptURL(script);
                                  -            var isExternal = url && url != doc.location.href;
                                  -            
                                  -            try
                                  -            {
                                  -                if (isExternal)
                                  -                {
                                  -                    Ajax.request({url: url, onSuccess: renderProcess, onFailure: onFailure});
                                  -                }
                                  -                else
                                  -                {
                                  -                    var src = script.innerHTML;
                                  -                    renderProcess(src);
                                  -                }   
                                  -            }
                                  -            catch(e)
                                  -            {
                                  -                renderProcess("Access to restricted URI denied");
                                  -            }
                                  -                
                                  -            this.sourceIndex = index;
                                  -            this.lastSourceIndex = index;
                                  -        }
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerPanel(ScriptPanel);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -
                                  -var getScriptURL = function getScriptURL(script) 
                                  -{
                                  -    var reFile = /([^\/\?#]+)(#.+)?$/;
                                  -    var rePath = /^(.*\/)/;
                                  -    var reProtocol = /^\w+:\/\//;
                                  -    var path = null;
                                  -    var doc = Firebug.browser.document;
                                  -    
                                  -    var file = reFile.exec(script.src);
                                  -
                                  -    if (file)
                                  -    {
                                  -        var fileName = file[1];
                                  -        var fileOptions = file[2];
                                  -        
                                  -        // absolute path
                                  -        if (reProtocol.test(script.src)) {
                                  -            path = rePath.exec(script.src)[1];
                                  -          
                                  -        }
                                  -        // relative path
                                  -        else
                                  -        {
                                  -            var r = rePath.exec(script.src);
                                  -            var src = r ? r[1] : script.src;
                                  -            var backDir = /^((?:\.\.\/)+)(.*)/.exec(src);
                                  -            var reLastDir = /^(.*\/)[^\/]+\/$/;
                                  -            path = rePath.exec(doc.location.href)[1];
                                  -            
                                  -            // "../some/path"
                                  -            if (backDir)
                                  -            {
                                  -                var j = backDir[1].length/3;
                                  -                var p;
                                  -                while (j-- > 0)
                                  -                    path = reLastDir.exec(path)[1];
                                  -
                                  -                path += backDir[2];
                                  -            }
                                  -            
                                  -            else if(src.indexOf("/") != -1)
                                  -            {
                                  -                // "./some/path"
                                  -                if(/^\.\/./.test(src))
                                  -                {
                                  -                    path += src.substring(2);
                                  -                }
                                  -                // "/some/path"
                                  -                else if(/^\/./.test(src))
                                  -                {
                                  -                    var domain = /^(\w+:\/\/[^\/]+)/.exec(path);
                                  -                    path = domain[1] + src;
                                  -                }
                                  -                // "some/path"
                                  -                else
                                  -                {
                                  -                    path += src;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -    
                                  -    var m = path && path.match(/([^\/]+)\/$/) || null;
                                  -    
                                  -    if (path && m)
                                  -    {
                                  -        return path + fileName;
                                  -    }
                                  -};
                                  -
                                  -var getFileName = function getFileName(path)
                                  -{
                                  -    if (!path) return "";
                                  -    
                                  -    var match = path && path.match(/[^\/]+(\?.*)?(#.*)?$/);
                                  -    
                                  -    return match && match[0] || path;
                                  -};
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/selector.js b/tags/firebug1.3a5/content/firebug/selector.js
                                  deleted file mode 100644
                                  index 9d721229..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/selector.js
                                  +++ /dev/null
                                  @@ -1,1020 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  - * Sizzle CSS Selector Engine - v1.0
                                  - *  Copyright 2009, The Dojo Foundation
                                  - *  Released under the MIT, BSD, and GPL Licenses.
                                  - *  More information: http://sizzlejs.com/
                                  - */
                                  -
                                  -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
                                  -    done = 0,
                                  -    toString = Object.prototype.toString,
                                  -    hasDuplicate = false,
                                  -    baseHasDuplicate = true;
                                  -
                                  -// Here we check if the JavaScript engine is using some sort of
                                  -// optimization where it does not always call our comparision
                                  -// function. If that is the case, discard the hasDuplicate value.
                                  -//   Thus far that includes Google Chrome.
                                  -[0, 0].sort(function(){
                                  -    baseHasDuplicate = false;
                                  -    return 0;
                                  -});
                                  -
                                  -var Sizzle = function(selector, context, results, seed) {
                                  -    results = results || [];
                                  -    var origContext = context = context || document;
                                  -
                                  -    if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
                                  -        return [];
                                  -    }
                                  -    
                                  -    if ( !selector || typeof selector !== "string" ) {
                                  -        return results;
                                  -    }
                                  -
                                  -    var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),
                                  -        soFar = selector;
                                  -    
                                  -    // Reset the position of the chunker regexp (start from head)
                                  -    while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
                                  -        soFar = m[3];
                                  -        
                                  -        parts.push( m[1] );
                                  -        
                                  -        if ( m[2] ) {
                                  -            extra = m[3];
                                  -            break;
                                  -        }
                                  -    }
                                  -
                                  -    if ( parts.length > 1 && origPOS.exec( selector ) ) {
                                  -        if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
                                  -            set = posProcess( parts[0] + parts[1], context );
                                  -        } else {
                                  -            set = Expr.relative[ parts[0] ] ?
                                  -                [ context ] :
                                  -                Sizzle( parts.shift(), context );
                                  -
                                  -            while ( parts.length ) {
                                  -                selector = parts.shift();
                                  -
                                  -                if ( Expr.relative[ selector ] )
                                  -                    selector += parts.shift();
                                  -
                                  -                set = posProcess( selector, set );
                                  -            }
                                  -        }
                                  -    } else {
                                  -        // Take a shortcut and set the context if the root selector is an ID
                                  -        // (but not if it'll be faster if the inner selector is an ID)
                                  -        if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
                                  -                Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
                                  -            var ret = Sizzle.find( parts.shift(), context, contextXML );
                                  -            context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
                                  -        }
                                  -
                                  -        if ( context ) {
                                  -            var ret = seed ?
                                  -                { expr: parts.pop(), set: makeArray(seed) } :
                                  -                Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
                                  -            set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
                                  -
                                  -            if ( parts.length > 0 ) {
                                  -                checkSet = makeArray(set);
                                  -            } else {
                                  -                prune = false;
                                  -            }
                                  -
                                  -            while ( parts.length ) {
                                  -                var cur = parts.pop(), pop = cur;
                                  -
                                  -                if ( !Expr.relative[ cur ] ) {
                                  -                    cur = "";
                                  -                } else {
                                  -                    pop = parts.pop();
                                  -                }
                                  -
                                  -                if ( pop == null ) {
                                  -                    pop = context;
                                  -                }
                                  -
                                  -                Expr.relative[ cur ]( checkSet, pop, contextXML );
                                  -            }
                                  -        } else {
                                  -            checkSet = parts = [];
                                  -        }
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        checkSet = set;
                                  -    }
                                  -
                                  -    if ( !checkSet ) {
                                  -        throw "Syntax error, unrecognized expression: " + (cur || selector);
                                  -    }
                                  -
                                  -    if ( toString.call(checkSet) === "[object Array]" ) {
                                  -        if ( !prune ) {
                                  -            results.push.apply( results, checkSet );
                                  -        } else if ( context && context.nodeType === 1 ) {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        } else {
                                  -            for ( var i = 0; checkSet[i] != null; i++ ) {
                                  -                if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
                                  -                    results.push( set[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -    } else {
                                  -        makeArray( checkSet, results );
                                  -    }
                                  -
                                  -    if ( extra ) {
                                  -        Sizzle( extra, origContext, results, seed );
                                  -        Sizzle.uniqueSort( results );
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.uniqueSort = function(results){
                                  -    if ( sortOrder ) {
                                  -        hasDuplicate = baseHasDuplicate;
                                  -        results.sort(sortOrder);
                                  -
                                  -        if ( hasDuplicate ) {
                                  -            for ( var i = 1; i < results.length; i++ ) {
                                  -                if ( results[i] === results[i-1] ) {
                                  -                    results.splice(i--, 1);
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    return results;
                                  -};
                                  -
                                  -Sizzle.matches = function(expr, set){
                                  -    return Sizzle(expr, null, null, set);
                                  -};
                                  -
                                  -Sizzle.find = function(expr, context, isXML){
                                  -    var set, match;
                                  -
                                  -    if ( !expr ) {
                                  -        return [];
                                  -    }
                                  -
                                  -    for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
                                  -        var type = Expr.order[i], match;
                                  -        
                                  -        if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
                                  -            var left = match[1];
                                  -            match.splice(1,1);
                                  -
                                  -            if ( left.substr( left.length - 1 ) !== "\\" ) {
                                  -                match[1] = (match[1] || "").replace(/\\/g, "");
                                  -                set = Expr.find[ type ]( match, context, isXML );
                                  -                if ( set != null ) {
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -    }
                                  -
                                  -    if ( !set ) {
                                  -        set = context.getElementsByTagName("*");
                                  -    }
                                  -
                                  -    return {set: set, expr: expr};
                                  -};
                                  -
                                  -Sizzle.filter = function(expr, set, inplace, not){
                                  -    var old = expr, result = [], curLoop = set, match, anyFound,
                                  -        isXMLFilter = set && set[0] && isXML(set[0]);
                                  -
                                  -    while ( expr && set.length ) {
                                  -        for ( var type in Expr.filter ) {
                                  -            if ( (match = Expr.match[ type ].exec( expr )) != null ) {
                                  -                var filter = Expr.filter[ type ], found, item;
                                  -                anyFound = false;
                                  -
                                  -                if ( curLoop == result ) {
                                  -                    result = [];
                                  -                }
                                  -
                                  -                if ( Expr.preFilter[ type ] ) {
                                  -                    match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
                                  -
                                  -                    if ( !match ) {
                                  -                        anyFound = found = true;
                                  -                    } else if ( match === true ) {
                                  -                        continue;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( match ) {
                                  -                    for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
                                  -                        if ( item ) {
                                  -                            found = filter( item, match, i, curLoop );
                                  -                            var pass = not ^ !!found;
                                  -
                                  -                            if ( inplace && found != null ) {
                                  -                                if ( pass ) {
                                  -                                    anyFound = true;
                                  -                                } else {
                                  -                                    curLoop[i] = false;
                                  -                                }
                                  -                            } else if ( pass ) {
                                  -                                result.push( item );
                                  -                                anyFound = true;
                                  -                            }
                                  -                        }
                                  -                    }
                                  -                }
                                  -
                                  -                if ( found !== undefined ) {
                                  -                    if ( !inplace ) {
                                  -                        curLoop = result;
                                  -                    }
                                  -
                                  -                    expr = expr.replace( Expr.match[ type ], "" );
                                  -
                                  -                    if ( !anyFound ) {
                                  -                        return [];
                                  -                    }
                                  -
                                  -                    break;
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        // Improper expression
                                  -        if ( expr == old ) {
                                  -            if ( anyFound == null ) {
                                  -                throw "Syntax error, unrecognized expression: " + expr;
                                  -            } else {
                                  -                break;
                                  -            }
                                  -        }
                                  -
                                  -        old = expr;
                                  -    }
                                  -
                                  -    return curLoop;
                                  -};
                                  -
                                  -var Expr = Sizzle.selectors = {
                                  -    order: [ "ID", "NAME", "TAG" ],
                                  -    match: {
                                  -        ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
                                  -        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
                                  -        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
                                  -        TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
                                  -        CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
                                  -        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
                                  -        PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
                                  -    },
                                  -    leftMatch: {},
                                  -    attrMap: {
                                  -        "class": "className",
                                  -        "for": "htmlFor"
                                  -    },
                                  -    attrHandle: {
                                  -        href: function(elem){
                                  -            return elem.getAttribute("href");
                                  -        }
                                  -    },
                                  -    relative: {
                                  -        "+": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string",
                                  -                isTag = isPartStr && !/\W/.test(part),
                                  -                isPartStrNotTag = isPartStr && !isTag;
                                  -
                                  -            if ( isTag && !isXML ) {
                                  -                part = part.toUpperCase();
                                  -            }
                                  -
                                  -            for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
                                  -                if ( (elem = checkSet[i]) ) {
                                  -                    while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
                                  -
                                  -                    checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
                                  -                        elem || false :
                                  -                        elem === part;
                                  -                }
                                  -            }
                                  -
                                  -            if ( isPartStrNotTag ) {
                                  -                Sizzle.filter( part, checkSet, true );
                                  -            }
                                  -        },
                                  -        ">": function(checkSet, part, isXML){
                                  -            var isPartStr = typeof part === "string";
                                  -
                                  -            if ( isPartStr && !/\W/.test(part) ) {
                                  -                part = isXML ? part : part.toUpperCase();
                                  -
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        var parent = elem.parentNode;
                                  -                        checkSet[i] = parent.nodeName === part ? parent : false;
                                  -                    }
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -                    var elem = checkSet[i];
                                  -                    if ( elem ) {
                                  -                        checkSet[i] = isPartStr ?
                                  -                            elem.parentNode :
                                  -                            elem.parentNode === part;
                                  -                    }
                                  -                }
                                  -
                                  -                if ( isPartStr ) {
                                  -                    Sizzle.filter( part, checkSet, true );
                                  -                }
                                  -            }
                                  -        },
                                  -        "": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
                                  -        },
                                  -        "~": function(checkSet, part, isXML){
                                  -            var doneName = done++, checkFn = dirCheck;
                                  -
                                  -            if ( typeof part === "string" && !/\W/.test(part) ) {
                                  -                var nodeCheck = part = isXML ? part : part.toUpperCase();
                                  -                checkFn = dirNodeCheck;
                                  -            }
                                  -
                                  -            checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
                                  -        }
                                  -    },
                                  -    find: {
                                  -        ID: function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? [m] : [];
                                  -            }
                                  -        },
                                  -        NAME: function(match, context, isXML){
                                  -            if ( typeof context.getElementsByName !== "undefined" ) {
                                  -                var ret = [], results = context.getElementsByName(match[1]);
                                  -
                                  -                for ( var i = 0, l = results.length; i < l; i++ ) {
                                  -                    if ( results[i].getAttribute("name") === match[1] ) {
                                  -                        ret.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                return ret.length === 0 ? null : ret;
                                  -            }
                                  -        },
                                  -        TAG: function(match, context){
                                  -            return context.getElementsByTagName(match[1]);
                                  -        }
                                  -    },
                                  -    preFilter: {
                                  -        CLASS: function(match, curLoop, inplace, result, not, isXML){
                                  -            match = " " + match[1].replace(/\\/g, "") + " ";
                                  -
                                  -            if ( isXML ) {
                                  -                return match;
                                  -            }
                                  -
                                  -            for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
                                  -                if ( elem ) {
                                  -                    if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
                                  -                        if ( !inplace )
                                  -                            result.push( elem );
                                  -                    } else if ( inplace ) {
                                  -                        curLoop[i] = false;
                                  -                    }
                                  -                }
                                  -            }
                                  -
                                  -            return false;
                                  -        },
                                  -        ID: function(match){
                                  -            return match[1].replace(/\\/g, "");
                                  -        },
                                  -        TAG: function(match, curLoop){
                                  -            for ( var i = 0; curLoop[i] === false; i++ ){}
                                  -            return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
                                  -        },
                                  -        CHILD: function(match){
                                  -            if ( match[1] == "nth" ) {
                                  -                // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
                                  -                var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
                                  -                    match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
                                  -                    !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
                                  -
                                  -                // calculate the numbers (first)n+(last) including if they are negative
                                  -                match[2] = (test[1] + (test[2] || 1)) - 0;
                                  -                match[3] = test[3] - 0;
                                  -            }
                                  -
                                  -            // TODO: Move to normal caching system
                                  -            match[0] = done++;
                                  -
                                  -            return match;
                                  -        },
                                  -        ATTR: function(match, curLoop, inplace, result, not, isXML){
                                  -            var name = match[1].replace(/\\/g, "");
                                  -            
                                  -            if ( !isXML && Expr.attrMap[name] ) {
                                  -                match[1] = Expr.attrMap[name];
                                  -            }
                                  -
                                  -            if ( match[2] === "~=" ) {
                                  -                match[4] = " " + match[4] + " ";
                                  -            }
                                  -
                                  -            return match;
                                  -        },
                                  -        PSEUDO: function(match, curLoop, inplace, result, not){
                                  -            if ( match[1] === "not" ) {
                                  -                // If we're dealing with a complex expression, or a simple one
                                  -                if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
                                  -                    match[3] = Sizzle(match[3], null, null, curLoop);
                                  -                } else {
                                  -                    var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
                                  -                    if ( !inplace ) {
                                  -                        result.push.apply( result, ret );
                                  -                    }
                                  -                    return false;
                                  -                }
                                  -            } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
                                  -                return true;
                                  -            }
                                  -            
                                  -            return match;
                                  -        },
                                  -        POS: function(match){
                                  -            match.unshift( true );
                                  -            return match;
                                  -        }
                                  -    },
                                  -    filters: {
                                  -        enabled: function(elem){
                                  -            return elem.disabled === false && elem.type !== "hidden";
                                  -        },
                                  -        disabled: function(elem){
                                  -            return elem.disabled === true;
                                  -        },
                                  -        checked: function(elem){
                                  -            return elem.checked === true;
                                  -        },
                                  -        selected: function(elem){
                                  -            // Accessing this property makes selected-by-default
                                  -            // options in Safari work properly
                                  -            elem.parentNode.selectedIndex;
                                  -            return elem.selected === true;
                                  -        },
                                  -        parent: function(elem){
                                  -            return !!elem.firstChild;
                                  -        },
                                  -        empty: function(elem){
                                  -            return !elem.firstChild;
                                  -        },
                                  -        has: function(elem, i, match){
                                  -            return !!Sizzle( match[3], elem ).length;
                                  -        },
                                  -        header: function(elem){
                                  -            return /h\d/i.test( elem.nodeName );
                                  -        },
                                  -        text: function(elem){
                                  -            return "text" === elem.type;
                                  -        },
                                  -        radio: function(elem){
                                  -            return "radio" === elem.type;
                                  -        },
                                  -        checkbox: function(elem){
                                  -            return "checkbox" === elem.type;
                                  -        },
                                  -        file: function(elem){
                                  -            return "file" === elem.type;
                                  -        },
                                  -        password: function(elem){
                                  -            return "password" === elem.type;
                                  -        },
                                  -        submit: function(elem){
                                  -            return "submit" === elem.type;
                                  -        },
                                  -        image: function(elem){
                                  -            return "image" === elem.type;
                                  -        },
                                  -        reset: function(elem){
                                  -            return "reset" === elem.type;
                                  -        },
                                  -        button: function(elem){
                                  -            return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
                                  -        },
                                  -        input: function(elem){
                                  -            return /input|select|textarea|button/i.test(elem.nodeName);
                                  -        }
                                  -    },
                                  -    setFilters: {
                                  -        first: function(elem, i){
                                  -            return i === 0;
                                  -        },
                                  -        last: function(elem, i, match, array){
                                  -            return i === array.length - 1;
                                  -        },
                                  -        even: function(elem, i){
                                  -            return i % 2 === 0;
                                  -        },
                                  -        odd: function(elem, i){
                                  -            return i % 2 === 1;
                                  -        },
                                  -        lt: function(elem, i, match){
                                  -            return i < match[3] - 0;
                                  -        },
                                  -        gt: function(elem, i, match){
                                  -            return i > match[3] - 0;
                                  -        },
                                  -        nth: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        },
                                  -        eq: function(elem, i, match){
                                  -            return match[3] - 0 == i;
                                  -        }
                                  -    },
                                  -    filter: {
                                  -        PSEUDO: function(elem, match, i, array){
                                  -            var name = match[1], filter = Expr.filters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            } else if ( name === "contains" ) {
                                  -                return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
                                  -            } else if ( name === "not" ) {
                                  -                var not = match[3];
                                  -
                                  -                for ( var i = 0, l = not.length; i < l; i++ ) {
                                  -                    if ( not[i] === elem ) {
                                  -                        return false;
                                  -                    }
                                  -                }
                                  -
                                  -                return true;
                                  -            }
                                  -        },
                                  -        CHILD: function(elem, match){
                                  -            var type = match[1], node = elem;
                                  -            switch (type) {
                                  -                case 'only':
                                  -                case 'first':
                                  -                    while ( (node = node.previousSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    if ( type == 'first') return true;
                                  -                    node = elem;
                                  -                case 'last':
                                  -                    while ( (node = node.nextSibling) )  {
                                  -                        if ( node.nodeType === 1 ) return false;
                                  -                    }
                                  -                    return true;
                                  -                case 'nth':
                                  -                    var first = match[2], last = match[3];
                                  -
                                  -                    if ( first == 1 && last == 0 ) {
                                  -                        return true;
                                  -                    }
                                  -                    
                                  -                    var doneName = match[0],
                                  -                        parent = elem.parentNode;
                                  -    
                                  -                    if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
                                  -                        var count = 0;
                                  -                        for ( node = parent.firstChild; node; node = node.nextSibling ) {
                                  -                            if ( node.nodeType === 1 ) {
                                  -                                node.nodeIndex = ++count;
                                  -                            }
                                  -                        } 
                                  -                        parent.sizcache = doneName;
                                  -                    }
                                  -                    
                                  -                    var diff = elem.nodeIndex - last;
                                  -                    if ( first == 0 ) {
                                  -                        return diff == 0;
                                  -                    } else {
                                  -                        return ( diff % first == 0 && diff / first >= 0 );
                                  -                    }
                                  -            }
                                  -        },
                                  -        ID: function(elem, match){
                                  -            return elem.nodeType === 1 && elem.getAttribute("id") === match;
                                  -        },
                                  -        TAG: function(elem, match){
                                  -            return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
                                  -        },
                                  -        CLASS: function(elem, match){
                                  -            return (" " + (elem.className || elem.getAttribute("class")) + " ")
                                  -                .indexOf( match ) > -1;
                                  -        },
                                  -        ATTR: function(elem, match){
                                  -            var name = match[1],
                                  -                result = Expr.attrHandle[ name ] ?
                                  -                    Expr.attrHandle[ name ]( elem ) :
                                  -                    elem[ name ] != null ?
                                  -                        elem[ name ] :
                                  -                        elem.getAttribute( name ),
                                  -                value = result + "",
                                  -                type = match[2],
                                  -                check = match[4];
                                  -
                                  -            return result == null ?
                                  -                type === "!=" :
                                  -                type === "=" ?
                                  -                value === check :
                                  -                type === "*=" ?
                                  -                value.indexOf(check) >= 0 :
                                  -                type === "~=" ?
                                  -                (" " + value + " ").indexOf(check) >= 0 :
                                  -                !check ?
                                  -                value && result !== false :
                                  -                type === "!=" ?
                                  -                value != check :
                                  -                type === "^=" ?
                                  -                value.indexOf(check) === 0 :
                                  -                type === "$=" ?
                                  -                value.substr(value.length - check.length) === check :
                                  -                type === "|=" ?
                                  -                value === check || value.substr(0, check.length + 1) === check + "-" :
                                  -                false;
                                  -        },
                                  -        POS: function(elem, match, i, array){
                                  -            var name = match[2], filter = Expr.setFilters[ name ];
                                  -
                                  -            if ( filter ) {
                                  -                return filter( elem, i, match, array );
                                  -            }
                                  -        }
                                  -    }
                                  -};
                                  -
                                  -var origPOS = Expr.match.POS;
                                  -
                                  -for ( var type in Expr.match ) {
                                  -    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
                                  -    Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );
                                  -}
                                  -
                                  -var makeArray = function(array, results) {
                                  -    array = Array.prototype.slice.call( array, 0 );
                                  -
                                  -    if ( results ) {
                                  -        results.push.apply( results, array );
                                  -        return results;
                                  -    }
                                  -    
                                  -    return array;
                                  -};
                                  -
                                  -// Perform a simple check to determine if the browser is capable of
                                  -// converting a NodeList to an array using builtin methods.
                                  -try {
                                  -    Array.prototype.slice.call( document.documentElement.childNodes, 0 );
                                  -
                                  -// Provide a fallback method if it does not work
                                  -} catch(e){
                                  -    makeArray = function(array, results) {
                                  -        var ret = results || [];
                                  -
                                  -        if ( toString.call(array) === "[object Array]" ) {
                                  -            Array.prototype.push.apply( ret, array );
                                  -        } else {
                                  -            if ( typeof array.length === "number" ) {
                                  -                for ( var i = 0, l = array.length; i < l; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            } else {
                                  -                for ( var i = 0; array[i]; i++ ) {
                                  -                    ret.push( array[i] );
                                  -                }
                                  -            }
                                  -        }
                                  -
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -var sortOrder;
                                  -
                                  -if ( document.documentElement.compareDocumentPosition ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( "sourceIndex" in document.documentElement ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.sourceIndex || !b.sourceIndex ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var ret = a.sourceIndex - b.sourceIndex;
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -} else if ( document.createRange ) {
                                  -    sortOrder = function( a, b ) {
                                  -        if ( !a.ownerDocument || !b.ownerDocument ) {
                                  -            if ( a == b ) {
                                  -                hasDuplicate = true;
                                  -            }
                                  -            return 0;
                                  -        }
                                  -
                                  -        var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
                                  -        aRange.setStart(a, 0);
                                  -        aRange.setEnd(a, 0);
                                  -        bRange.setStart(b, 0);
                                  -        bRange.setEnd(b, 0);
                                  -        var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
                                  -        if ( ret === 0 ) {
                                  -            hasDuplicate = true;
                                  -        }
                                  -        return ret;
                                  -    };
                                  -}
                                  -
                                  -// Check to see if the browser returns elements by name when
                                  -// querying by getElementById (and provide a workaround)
                                  -(function(){
                                  -    // We're going to inject a fake input element with a specified name
                                  -    var form = document.createElement("div"),
                                  -        id = "script" + (new Date).getTime();
                                  -    form.innerHTML = "<a name='" + id + "'/>";
                                  -
                                  -    // Inject it into the root element, check its status, and remove it quickly
                                  -    var root = document.documentElement;
                                  -    root.insertBefore( form, root.firstChild );
                                  -
                                  -    // The workaround has to do additional checks after a getElementById
                                  -    // Which slows things down for other browsers (hence the branching)
                                  -    if ( !!document.getElementById( id ) ) {
                                  -        Expr.find.ID = function(match, context, isXML){
                                  -            if ( typeof context.getElementById !== "undefined" && !isXML ) {
                                  -                var m = context.getElementById(match[1]);
                                  -                return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
                                  -            }
                                  -        };
                                  -
                                  -        Expr.filter.ID = function(elem, match){
                                  -            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
                                  -            return elem.nodeType === 1 && node && node.nodeValue === match;
                                  -        };
                                  -    }
                                  -
                                  -    root.removeChild( form );
                                  -    root = form = null; // release memory in IE
                                  -})();
                                  -
                                  -(function(){
                                  -    // Check to see if the browser returns only elements
                                  -    // when doing getElementsByTagName("*")
                                  -
                                  -    // Create a fake element
                                  -    var div = document.createElement("div");
                                  -    div.appendChild( document.createComment("") );
                                  -
                                  -    // Make sure no comments are found
                                  -    if ( div.getElementsByTagName("*").length > 0 ) {
                                  -        Expr.find.TAG = function(match, context){
                                  -            var results = context.getElementsByTagName(match[1]);
                                  -
                                  -            // Filter out possible comments
                                  -            if ( match[1] === "*" ) {
                                  -                var tmp = [];
                                  -
                                  -                for ( var i = 0; results[i]; i++ ) {
                                  -                    if ( results[i].nodeType === 1 ) {
                                  -                        tmp.push( results[i] );
                                  -                    }
                                  -                }
                                  -
                                  -                results = tmp;
                                  -            }
                                  -
                                  -            return results;
                                  -        };
                                  -    }
                                  -
                                  -    // Check to see if an attribute returns normalized href attributes
                                  -    div.innerHTML = "<a href='#'></a>";
                                  -    if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
                                  -            div.firstChild.getAttribute("href") !== "#" ) {
                                  -        Expr.attrHandle.href = function(elem){
                                  -            return elem.getAttribute("href", 2);
                                  -        };
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.querySelectorAll ) (function(){
                                  -    var oldSizzle = Sizzle, div = document.createElement("div");
                                  -    div.innerHTML = "<p class='TEST'></p>";
                                  -
                                  -    // Safari can't handle uppercase or unicode characters when
                                  -    // in quirks mode.
                                  -    if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
                                  -        return;
                                  -    }
                                  -    
                                  -    Sizzle = function(query, context, extra, seed){
                                  -        context = context || document;
                                  -
                                  -        // Only use querySelectorAll on non-XML documents
                                  -        // (ID selectors don't work in non-HTML documents)
                                  -        if ( !seed && context.nodeType === 9 && !isXML(context) ) {
                                  -            try {
                                  -                return makeArray( context.querySelectorAll(query), extra );
                                  -            } catch(e){}
                                  -        }
                                  -        
                                  -        return oldSizzle(query, context, extra, seed);
                                  -    };
                                  -
                                  -    for ( var prop in oldSizzle ) {
                                  -        Sizzle[ prop ] = oldSizzle[ prop ];
                                  -    }
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
                                  -    var div = document.createElement("div");
                                  -    div.innerHTML = "<div class='test e'></div><div class='test'></div>";
                                  -
                                  -    // Opera can't find a second classname (in 9.6)
                                  -    if ( div.getElementsByClassName("e").length === 0 )
                                  -        return;
                                  -
                                  -    // Safari caches class attributes, doesn't catch changes (in 3.2)
                                  -    div.lastChild.className = "e";
                                  -
                                  -    if ( div.getElementsByClassName("e").length === 1 )
                                  -        return;
                                  -
                                  -    Expr.order.splice(1, 0, "CLASS");
                                  -    Expr.find.CLASS = function(match, context, isXML) {
                                  -        if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
                                  -            return context.getElementsByClassName(match[1]);
                                  -        }
                                  -    };
                                  -
                                  -    div = null; // release memory in IE
                                  -})();
                                  -
                                  -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ){
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 && !isXML ){
                                  -                    elem.sizcache = doneName;
                                  -                    elem.sizset = i;
                                  -                }
                                  -
                                  -                if ( elem.nodeName === cur ) {
                                  -                    match = elem;
                                  -                    break;
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
                                  -    var sibDir = dir == "previousSibling" && !isXML;
                                  -    for ( var i = 0, l = checkSet.length; i < l; i++ ) {
                                  -        var elem = checkSet[i];
                                  -        if ( elem ) {
                                  -            if ( sibDir && elem.nodeType === 1 ) {
                                  -                elem.sizcache = doneName;
                                  -                elem.sizset = i;
                                  -            }
                                  -            elem = elem[dir];
                                  -            var match = false;
                                  -
                                  -            while ( elem ) {
                                  -                if ( elem.sizcache === doneName ) {
                                  -                    match = checkSet[elem.sizset];
                                  -                    break;
                                  -                }
                                  -
                                  -                if ( elem.nodeType === 1 ) {
                                  -                    if ( !isXML ) {
                                  -                        elem.sizcache = doneName;
                                  -                        elem.sizset = i;
                                  -                    }
                                  -                    if ( typeof cur !== "string" ) {
                                  -                        if ( elem === cur ) {
                                  -                            match = true;
                                  -                            break;
                                  -                        }
                                  -
                                  -                    } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
                                  -                        match = elem;
                                  -                        break;
                                  -                    }
                                  -                }
                                  -
                                  -                elem = elem[dir];
                                  -            }
                                  -
                                  -            checkSet[i] = match;
                                  -        }
                                  -    }
                                  -}
                                  -
                                  -var contains = document.compareDocumentPosition ?  function(a, b){
                                  -    return a.compareDocumentPosition(b) & 16;
                                  -} : function(a, b){
                                  -    return a !== b && (a.contains ? a.contains(b) : true);
                                  -};
                                  -
                                  -var isXML = function(elem){
                                  -    return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
                                  -        !!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";
                                  -};
                                  -
                                  -var posProcess = function(selector, context){
                                  -    var tmpSet = [], later = "", match,
                                  -        root = context.nodeType ? [context] : context;
                                  -
                                  -    // Position selectors must be done after the filter
                                  -    // And so must :not(positional) so we move all PSEUDOs to the end
                                  -    while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
                                  -        later += match[0];
                                  -        selector = selector.replace( Expr.match.PSEUDO, "" );
                                  -    }
                                  -
                                  -    selector = Expr.relative[selector] ? selector + "*" : selector;
                                  -
                                  -    for ( var i = 0, l = root.length; i < l; i++ ) {
                                  -        Sizzle( selector, root[i], tmpSet );
                                  -    }
                                  -
                                  -    return Sizzle.filter( later, tmpSet );
                                  -};
                                  -
                                  -// EXPOSE
                                  -
                                  -Firebug.Selector = Sizzle;
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/spy.js b/tags/firebug1.3a5/content/firebug/spy.js
                                  deleted file mode 100644
                                  index 4ff1d834..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/spy.js
                                  +++ /dev/null
                                  @@ -1,760 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -
                                  -// ************************************************************************************************
                                  -// Constants
                                  -
                                  -//const Cc = Components.classes;
                                  -//const Ci = Components.interfaces;
                                  -
                                  -// List of contexts with XHR spy attached.
                                  -var contexts = [];
                                  -
                                  -// ************************************************************************************************
                                  -// Spy Module
                                  -
                                  -/**
                                  - * @module Represents a XHR Spy module. The main purpose of the XHR Spy feature is to monitor
                                  - * XHR activity of the current page and create appropriate log into the Console panel.
                                  - * This feature can be controlled by an option <i>Show XMLHttpRequests</i> (from within the
                                  - * console panel).
                                  - * 
                                  - * The module is responsible for attaching/detaching a HTTP Observers when Firebug is
                                  - * activated/deactivated for a site.
                                  - */
                                  -Firebug.Spy = extend(Firebug.Module,
                                  -/** @lends Firebug.Spy */
                                  -{
                                  -    dispatchName: "spy",
                                  -
                                  -    initialize: function()
                                  -    {
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.addListener(this.TraceListener);
                                  -
                                  -        Firebug.Module.initialize.apply(this, arguments);
                                  -    },
                                  -
                                  -    shutdown: function()
                                  -    {
                                  -        Firebug.Module.shutdown.apply(this, arguments);
                                  -
                                  -        if (Firebug.TraceModule)
                                  -            Firebug.TraceModule.removeListener(this.TraceListener);
                                  -    },
                                  -
                                  -    initContext: function(context)
                                  -    {
                                  -        context.spies = [];
                                  -
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, context.window);
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.initContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    destroyContext: function(context)
                                  -    {
                                  -        // For any spies that are in progress, remove our listeners so that they don't leak
                                  -        this.detachObserver(context, null);
                                  -
                                  -        if (FBTrace.DBG_SPY && context.spies.length)
                                  -            FBTrace.sysout("spy.destroyContext; ERROR There are leaking Spies ("
                                  -                + context.spies.length + ") " + context.getName());
                                  -
                                  -        delete context.spies;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.destroyContext " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    watchWindow: function(context, win)
                                  -    {
                                  -        if (Firebug.showXMLHttpRequests && Firebug.Console.isAlwaysEnabled())
                                  -            this.attachObserver(context, win);
                                  -    },
                                  -
                                  -    unwatchWindow: function(context, win)
                                  -    {
                                  -        try
                                  -        {
                                  -            // This make sure that the existing context is properly removed from "contexts" array.
                                  -            this.detachObserver(context, win);
                                  -        }
                                  -        catch (ex)
                                  -        {
                                  -            // Get exceptions here sometimes, so let's just ignore them
                                  -            // since the window is going away anyhow
                                  -            ERROR(ex);
                                  -        }
                                  -    },
                                  -
                                  -    updateOption: function(name, value)
                                  -    {
                                  -        // XXXjjb Honza, if Console.isEnabled(context) false, then this can't be called,
                                  -        // but somehow seems not correct
                                  -        if (name == "showXMLHttpRequests")
                                  -        {
                                  -            var tach = value ? this.attachObserver : this.detachObserver;
                                  -            for (var i = 0; i < TabWatcher.contexts.length; ++i)
                                  -            {
                                  -                var context = TabWatcher.contexts[i];
                                  -                iterateWindows(context.window, function(win)
                                  -                {
                                  -                    tach.apply(this, [context, win]);
                                  -                });
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -    // Attaching Spy to XHR requests.
                                  -
                                  -    /**
                                  -     * Returns false if Spy should not be attached to XHRs executed by the specified window.
                                  -     */
                                  -    skipSpy: function(win)
                                  -    {
                                  -        if (!win)
                                  -            return true;
                                  -
                                  -        // Don't attach spy to chrome.
                                  -        var uri = safeGetWindowLocation(win);
                                  -        if (uri && (uri.indexOf("about:") == 0 || uri.indexOf("chrome:") == 0))
                                  -            return true;
                                  -    },
                                  -
                                  -    attachObserver: function(context, win)
                                  -    {
                                  -        if (Firebug.Spy.skipSpy(win))
                                  -            return;
                                  -
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if ((contexts[i].context == context) && (contexts[i].win == win))
                                  -                return;
                                  -        }
                                  -
                                  -        // Register HTTP observers only once.
                                  -        if (contexts.length == 0)
                                  -        {
                                  -            httpObserver.addObserver(SpyHttpObserver, "firebug-http-event", false);
                                  -            SpyHttpActivityObserver.registerObserver();
                                  -        }
                                  -
                                  -        contexts.push({context: context, win: win});
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.attachObserver (HTTP) " + contexts.length + " ", context.getName());
                                  -    },
                                  -
                                  -    detachObserver: function(context, win)
                                  -    {
                                  -        for (var i=0; i<contexts.length; ++i)
                                  -        {
                                  -            if (contexts[i].context == context)
                                  -            {
                                  -                if (win && (contexts[i].win != win))
                                  -                    continue;
                                  -
                                  -                contexts.splice(i, 1);
                                  -
                                  -                // If no context is using spy, remvove the (only one) HTTP observer.
                                  -                if (contexts.length == 0)
                                  -                {
                                  -                    httpObserver.removeObserver(SpyHttpObserver, "firebug-http-event");
                                  -                    SpyHttpActivityObserver.unregisterObserver();
                                  -                }
                                  -
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.detachObserver (HTTP) " + contexts.length + " ",
                                  -                        context.getName());
                                  -                return;
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    /**
                                  -     * Return XHR object that is associated with specified request <i>nsIHttpChannel</i>.
                                  -     * Returns null if the request doesn't represent XHR.
                                  -     */
                                  -    getXHR: function(request)
                                  -    {
                                  -        // Does also query-interface for nsIHttpChannel.
                                  -        if (!(request instanceof Ci.nsIHttpChannel))
                                  -            return null;
                                  -
                                  -        try
                                  -        {
                                  -            var callbacks = request.notificationCallbacks;
                                  -            return (callbacks ? callbacks.getInterface(Ci.nsIXMLHttpRequest) : null);
                                  -        }
                                  -        catch (exc)
                                  -        {
                                  -            if (exc.name == "NS_NOINTERFACE")
                                  -            {
                                  -                if (FBTrace.DBG_SPY)
                                  -                    FBTrace.sysout("spy.getXHR; Request is not nsIXMLHttpRequest: " +
                                  -                        safeGetRequestName(request));
                                  -            }
                                  -        }
                                  -
                                  -       return null;
                                  -    }
                                  -});
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/*
                                  -function getSpyForXHR(request, xhrRequest, context, noCreate)
                                  -{
                                  -    var spy = null;
                                  -
                                  -    // Iterate all existing spy objects in this context and look for one that is
                                  -    // already created for this request.
                                  -    var length = context.spies.length;
                                  -    for (var i=0; i<length; i++)
                                  -    {
                                  -        spy = context.spies[i];
                                  -        if (spy.request == request)
                                  -            return spy;
                                  -    }
                                  -
                                  -    if (noCreate)
                                  -        return null;
                                  -
                                  -    spy = new Firebug.Spy.XMLHttpRequestSpy(request, xhrRequest, context);
                                  -    context.spies.push(spy);
                                  -
                                  -    var name = request.URI.asciiSpec;
                                  -    var origName = request.originalURI.asciiSpec;
                                  -
                                  -    // Attach spy only to the original request. Notice that there can be more network requests
                                  -    // made by the same XHR if redirects are involved.
                                  -    if (name == origName)
                                  -        spy.attach();
                                  -
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.getSpyForXHR; New spy object created (" +
                                  -            (name == origName ? "new XHR" : "redirected XHR") + ") for: " + name, spy);
                                  -
                                  -    return spy;
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @class This class represents a Spy object that is attached to XHR. This object
                                  - * registers various listeners into the XHR in order to monitor various events fired
                                  - * during the request process (onLoad, onAbort, etc.)
                                  - */
                                  -/*
                                  -Firebug.Spy.XMLHttpRequestSpy = function(request, xhrRequest, context)
                                  -{
                                  -    this.request = request;
                                  -    this.xhrRequest = xhrRequest;
                                  -    this.context = context;
                                  -    this.responseText = "";
                                  -
                                  -    // For compatibility with the Net templates.
                                  -    this.isXHR = true;
                                  -
                                  -    // Support for activity-observer
                                  -    this.transactionStarted = false;
                                  -    this.transactionClosed = false;
                                  -};
                                  -/**/
                                  -
                                  -//Firebug.Spy.XMLHttpRequestSpy.prototype =
                                  -/** @lends Firebug.Spy.XMLHttpRequestSpy */
                                  -/*
                                  -{
                                  -    attach: function()
                                  -    {
                                  -        var spy = this;
                                  -        this.onReadyStateChange = function(event) { onHTTPSpyReadyStateChange(spy, event); };
                                  -        this.onLoad = function() { onHTTPSpyLoad(spy); };
                                  -        this.onError = function() { onHTTPSpyError(spy); };
                                  -        this.onAbort = function() { onHTTPSpyAbort(spy); };
                                  -
                                  -        // xxxHonza: #502959 is still failing on Fx 3.5
                                  -        // Use activity distributor to identify 3.6 
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -        {
                                  -            this.onreadystatechange = this.xhrRequest.onreadystatechange;
                                  -            this.xhrRequest.onreadystatechange = this.onReadyStateChange;
                                  -        }
                                  -
                                  -        this.xhrRequest.addEventListener("load", this.onLoad, false);
                                  -        this.xhrRequest.addEventListener("error", this.onError, false);
                                  -        this.xhrRequest.addEventListener("abort", this.onAbort, false);
                                  -
                                  -        // xxxHonza: should be removed from FB 3.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.addListener(this);
                                  -    },
                                  -
                                  -    detach: function()
                                  -    {
                                  -        // Bubble out if already detached.
                                  -        if (!this.onLoad)
                                  -            return;
                                  -
                                  -        // If the activity distributor is available, let's detach it when the XHR
                                  -        // transaction is closed. Since, in case of multipart XHRs the onLoad method
                                  -        // (readyState == 4) can be called mutliple times.
                                  -        // Keep in mind:
                                  -        // 1) It can happen that that the TRANSACTION_CLOSE event comes before
                                  -        // the onLoad (if the XHR is made as part of the page load) so, detach if
                                  -        // it's already closed.
                                  -        // 2) In case of immediate cache responses, the transaction doesn't have to
                                  -        // be started at all (or the activity observer is no available in Firefox 3.5).
                                  -        // So, also detach in this case.
                                  -        if (this.transactionStarted && !this.transactionClosed)
                                  -            return;
                                  -
                                  -        if (FBTrace.DBG_SPY)
                                  -            FBTrace.sysout("spy.detach; " + this.href);
                                  -
                                  -        // Remove itself from the list of active spies.
                                  -        remove(this.context.spies, this);
                                  -
                                  -        if (this.onreadystatechange)
                                  -            this.xhrRequest.onreadystatechange = this.onreadystatechange;
                                  -
                                  -        try { this.xhrRequest.removeEventListener("load", this.onLoad, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("error", this.onError, false); } catch (e) {}
                                  -        try { this.xhrRequest.removeEventListener("abort", this.onAbort, false); } catch (e) {}
                                  -
                                  -        this.onreadystatechange = null;
                                  -        this.onLoad = null;
                                  -        this.onError = null;
                                  -        this.onAbort = null;
                                  -
                                  -        // xxxHonza: shouuld be removed from FB 1.6
                                  -        if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -            this.context.sourceCache.removeListener(this);
                                  -    },
                                  -
                                  -    getURL: function()
                                  -    {
                                  -        return this.xhrRequest.channel ? this.xhrRequest.channel.name : this.href;
                                  -    },
                                  -
                                  -    // Cache listener
                                  -    onStopRequest: function(context, request, responseText)
                                  -    {
                                  -        if (!responseText)
                                  -            return;
                                  -
                                  -        if (request == this.request)
                                  -            this.responseText = responseText;
                                  -    },
                                  -};
                                  -/**/
                                  -// ************************************************************************************************
                                  -/*
                                  -function onHTTPSpyReadyStateChange(spy, event)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyReadyStateChange " + spy.xhrRequest.readyState +
                                  -            " (multipart: " + spy.xhrRequest.multipart + ")");
                                  -
                                  -    // Remember just in case spy is detached (readyState == 4).
                                  -    var originalHandler = spy.onreadystatechange;
                                  -
                                  -    // Force response text to be updated in the UI (in case the console entry
                                  -    // has been already expanded and the response tab selected).
                                  -    if (spy.logRow && spy.xhrRequest.readyState >= 3)
                                  -    {
                                  -        var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -        if (netInfoBox)
                                  -        {
                                  -            netInfoBox.htmlPresented = false;
                                  -            netInfoBox.responsePresented = false;
                                  -        }
                                  -    }
                                  -
                                  -    // If the request is loading update the end time.
                                  -    if (spy.xhrRequest.readyState == 3)
                                  -    {
                                  -        spy.responseTime = spy.endTime - spy.sendTime;
                                  -        updateTime(spy);
                                  -    }
                                  -
                                  -    // Request loaded. Get all the info from the request now, just in case the 
                                  -    // XHR would be aborted in the original onReadyStateChange handler.
                                  -    if (spy.xhrRequest.readyState == 4)
                                  -    {
                                  -        // Cumulate response so, multipart response content is properly displayed.
                                  -        if (SpyHttpActivityObserver.getActivityDistributor())
                                  -            spy.responseText += spy.xhrRequest.responseText;
                                  -        else
                                  -        {
                                  -            // xxxHonza: remove from FB 1.6
                                  -            if (!spy.responseText)
                                  -                spy.responseText = spy.xhrRequest.responseText;
                                  -        }
                                  -
                                  -        // The XHR is loaded now (used also by the activity observer).
                                  -        spy.loaded = true;
                                  -
                                  -        // Update UI.
                                  -        updateHttpSpyInfo(spy);
                                  -
                                  -        // Notify Net pane about a request beeing loaded.
                                  -        // xxxHonza: I don't think this is necessary.
                                  -        var netProgress = spy.context.netProgress;
                                  -        if (netProgress)
                                  -            netProgress.post(netProgress.stopFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -
                                  -        // Notify registered listeners about finish of the XHR.
                                  -        dispatch(Firebug.Spy.fbListeners, "onLoad", [spy.context, spy]);
                                  -    }
                                  -
                                  -    // Pass the event to the original page handler.
                                  -    callPageHandler(spy, event, originalHandler);
                                  -}
                                  -
                                  -function onHTTPSpyLoad(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyLoad: " + spy.href, spy);
                                  -
                                  -    // Detach must be done in onLoad (not in onreadystatechange) otherwise
                                  -    // onAbort would not be handled.
                                  -    spy.detach();
                                  -
                                  -    // xxxHonza: Still needed for Fx 3.5 (#502959)
                                  -    if (!SpyHttpActivityObserver.getActivityDistributor())
                                  -        onHTTPSpyReadyStateChange(spy, null);
                                  -}
                                  -
                                  -function onHTTPSpyError(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyError; " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -}
                                  -
                                  -function onHTTPSpyAbort(spy)
                                  -{
                                  -    if (FBTrace.DBG_SPY)
                                  -        FBTrace.sysout("spy.onHTTPSpyAbort: " + spy.href, spy);
                                  -
                                  -    spy.detach();
                                  -    spy.loaded = true;
                                  -
                                  -    if (spy.logRow)
                                  -    {
                                  -        removeClass(spy.logRow, "loading");
                                  -        setClass(spy.logRow, "error");
                                  -    }
                                  -
                                  -    spy.statusText = "Aborted";
                                  -    updateLogRow(spy);
                                  -
                                  -    // Notify Net pane about a request beeing aborted.
                                  -    // xxxHonza: the net panel shoud find out this itself.
                                  -    var netProgress = spy.context.netProgress;
                                  -    if (netProgress)
                                  -        netProgress.post(netProgress.abortFile, [spy.request, spy.endTime, spy.postText, spy.responseText]);
                                  -}
                                  -/**/
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -/**
                                  - * @domplate Represents a template for XHRs logged in the Console panel. The body of the
                                  - * log (displayed when expanded) is rendered using {@link Firebug.NetMonitor.NetInfoBody}.
                                  - */
                                  -
                                  -Firebug.Spy.XHR = domplate(Firebug.Rep,
                                  -/** @lends Firebug.Spy.XHR */
                                  -
                                  -{
                                  -    tag:
                                  -        DIV({"class": "spyHead", _repObject: "$object"},
                                  -            TABLE({"class": "spyHeadTable focusRow outerFocusRow", cellpadding: 0, cellspacing: 0,
                                  -                "role": "listitem", "aria-expanded": "false"},
                                  -                TBODY({"role": "presentation"},
                                  -                    TR({"class": "spyRow"},
                                  -                        TD({"class": "spyTitleCol spyCol", onclick: "$onToggleBody"},
                                  -                            DIV({"class": "spyTitle"},
                                  -                                "$object|getCaption"
                                  -                            ),
                                  -                            DIV({"class": "spyFullTitle spyTitle"},
                                  -                                "$object|getFullUri"
                                  -                            )
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            DIV({"class": "spyStatus"}, "$object|getStatus")
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyIcon"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            SPAN({"class": "spyTime"})
                                  -                        ),
                                  -                        TD({"class": "spyCol"},
                                  -                            TAG(FirebugReps.SourceLink.tag, {object: "$object.sourceLink"})
                                  -                        )
                                  -                    )
                                  -                )
                                  -            )
                                  -        ),
                                  -
                                  -    getCaption: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + cropString(spy.getURL(), 100);
                                  -    },
                                  -
                                  -    getFullUri: function(spy)
                                  -    {
                                  -        return spy.method.toUpperCase() + " " + spy.getURL();
                                  -    },
                                  -
                                  -    getStatus: function(spy)
                                  -    {
                                  -        var text = "";
                                  -        if (spy.statusCode)
                                  -            text += spy.statusCode + " ";
                                  -
                                  -        if (spy.statusText)
                                  -            return text += spy.statusText;
                                  -
                                  -        return text;
                                  -    },
                                  -
                                  -    onToggleBody: function(event)
                                  -    {
                                  -        var target = event.currentTarget || event.srcElement;
                                  -        var logRow = getAncestorByClass(target, "logRow-spy");
                                  -
                                  -        if (isLeftClick(event))
                                  -        {
                                  -            toggleClass(logRow, "opened");
                                  -
                                  -            var spy = getChildByClass(logRow, "spyHead").repObject;
                                  -            var spyHeadTable = getAncestorByClass(target, "spyHeadTable");
                                  -
                                  -            if (hasClass(logRow, "opened"))
                                  -            {
                                  -                updateHttpSpyInfo(spy);
                                  -                if (spyHeadTable)
                                  -                    spyHeadTable.setAttribute('aria-expanded', 'true');
                                  -            }
                                  -            else
                                  -            {
                                  -                //var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -                //dispatch(Firebug.NetMonitor.NetInfoBody.fbListeners, "destroyTabBody", [netInfoBox, spy]);
                                  -                //if (spyHeadTable)
                                  -                //    spyHeadTable.setAttribute('aria-expanded', 'false');
                                  -            }
                                  -        }
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    copyURL: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.getURL());
                                  -    },
                                  -
                                  -    copyParams: function(spy)
                                  -    {
                                  -        var text = spy.postText;
                                  -        if (!text)
                                  -            return;
                                  -
                                  -        var url = reEncodeURL(spy, text, true);
                                  -        copyToClipboard(url);
                                  -    },
                                  -
                                  -    copyResponse: function(spy)
                                  -    {
                                  -        copyToClipboard(spy.responseText);
                                  -    },
                                  -
                                  -    openInTab: function(spy)
                                  -    {
                                  -        openNewTab(spy.getURL(), spy.postText);
                                  -    },
                                  -
                                  -    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
                                  -
                                  -    supportsObject: function(object)
                                  -    {
                                  -        // TODO: xxxpedro spy xhr
                                  -        return false;
                                  -        
                                  -        return object instanceof Firebug.Spy.XMLHttpRequestSpy;
                                  -    },
                                  -
                                  -    browseObject: function(spy, context)
                                  -    {
                                  -        var url = spy.getURL();
                                  -        openNewTab(url);
                                  -        return true;
                                  -    },
                                  -
                                  -    getRealObject: function(spy, context)
                                  -    {
                                  -        return spy.xhrRequest;
                                  -    },
                                  -
                                  -    getContextMenuItems: function(spy)
                                  -    {
                                  -        var items = [
                                  -            {label: "CopyLocation", command: bindFixed(this.copyURL, this, spy) }
                                  -        ];
                                  -
                                  -        if (spy.postText)
                                  -        {
                                  -            items.push(
                                  -                {label: "CopyLocationParameters", command: bindFixed(this.copyParams, this, spy) }
                                  -            );
                                  -        }
                                  -
                                  -        items.push(
                                  -            {label: "CopyResponse", command: bindFixed(this.copyResponse, this, spy) },
                                  -            "-",
                                  -            {label: "OpenInTab", command: bindFixed(this.openInTab, this, spy) }
                                  -        );
                                  -
                                  -        return items;
                                  -    }
                                  -});
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function updateTime(spy)
                                  -{
                                  -    var timeBox = spy.logRow.getElementsByClassName("spyTime").item(0);
                                  -    if (spy.responseTime)
                                  -        timeBox.textContent = " " + formatTime(spy.responseTime);
                                  -}
                                  -
                                  -function updateLogRow(spy)
                                  -{
                                  -    updateTime(spy);
                                  -
                                  -    var statusBox = spy.logRow.getElementsByClassName("spyStatus").item(0);
                                  -    statusBox.textContent = Firebug.Spy.XHR.getStatus(spy);
                                  -
                                  -    removeClass(spy.logRow, "loading");
                                  -    setClass(spy.logRow, "loaded");
                                  -
                                  -    try
                                  -    {
                                  -        var errorRange = Math.floor(spy.xhrRequest.status/100);
                                  -        if (errorRange == 4 || errorRange == 5)
                                  -            setClass(spy.logRow, "error");
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -    }
                                  -}
                                  -
                                  -var updateHttpSpyInfo = function updateHttpSpyInfo(spy)
                                  -{
                                  -    if (!spy.logRow || !hasClass(spy.logRow, "opened"))
                                  -        return;
                                  -
                                  -    if (!spy.params)
                                  -        //spy.params = parseURLParams(spy.href+"");
                                  -        spy.params = parseURLParams(spy.href+"");
                                  -
                                  -    if (!spy.requestHeaders)
                                  -        spy.requestHeaders = getRequestHeaders(spy);
                                  -
                                  -    if (!spy.responseHeaders && spy.loaded)
                                  -        spy.responseHeaders = getResponseHeaders(spy);
                                  -
                                  -    var template = Firebug.NetMonitor.NetInfoBody;
                                  -    var netInfoBox = getChildByClass(spy.logRow, "spyHead", "netInfoBody");
                                  -    if (!netInfoBox)
                                  -    {
                                  -        var head = getChildByClass(spy.logRow, "spyHead");
                                  -        netInfoBox = template.tag.append({"file": spy}, head);
                                  -        //dispatch(template.fbListeners, "initTabBody", [netInfoBox, spy]);
                                  -        template.selectTabByName(netInfoBox, "Response");
                                  -    }
                                  -    else
                                  -    {
                                  -        template.updateInfo(netInfoBox, spy, spy.context);
                                  -    }
                                  -}
                                  -
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -
                                  -function getRequestHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    var channel = spy.xhrRequest.channel;
                                  -    if (channel instanceof Ci.nsIHttpChannel)
                                  -    {
                                  -        channel.visitRequestHeaders({
                                  -            visitHeader: function(name, value)
                                  -            {
                                  -                headers.push({name: name, value: value});
                                  -            }
                                  -        });
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -function getResponseHeaders(spy)
                                  -{
                                  -    var headers = [];
                                  -
                                  -    try
                                  -    {
                                  -        var channel = spy.xhrRequest.channel;
                                  -        if (channel instanceof Ci.nsIHttpChannel)
                                  -        {
                                  -            channel.visitResponseHeaders({
                                  -                visitHeader: function(name, value)
                                  -                {
                                  -                    headers.push({name: name, value: value});
                                  -                }
                                  -            });
                                  -        }
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        if (FBTrace.DBG_SPY || FBTrace.DBG_ERRORS)
                                  -            FBTrace.sysout("spy.getResponseHeaders; EXCEPTION " +
                                  -                safeGetRequestName(spy.request), exc);
                                  -    }
                                  -
                                  -    return headers;
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -// Registration
                                  -
                                  -Firebug.registerModule(Firebug.Spy);
                                  -//Firebug.registerRep(Firebug.Spy.XHR);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  diff --git a/tags/firebug1.3a5/content/firebug/trace.js b/tags/firebug1.3a5/content/firebug/trace.js
                                  deleted file mode 100644
                                  index f92ebd77..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/trace.js
                                  +++ /dev/null
                                  @@ -1,179 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.FBTrace = {};
                                  -
                                  -(function() {
                                  -// ************************************************************************************************
                                  -
                                  -var traceOptions = {
                                  -    DBG_TIMESTAMP: 1,
                                  -    DBG_INITIALIZE: 1,
                                  -    DBG_CHROME: 1,
                                  -    DBG_ERRORS: 1,
                                  -    DBG_DISPATCH: 1
                                  -};
                                  -
                                  -this.module = null;
                                  -
                                  -this.initialize = function()
                                  -{
                                  -    if (!this.messageQueue)
                                  -        this.messageQueue = [];
                                  -    
                                  -    for (var name in traceOptions)
                                  -        this[name] = traceOptions[name]; 
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace API
                                  -
                                  -this.sysout = function()
                                  -{
                                  -    return this.logFormatted(arguments, "");
                                  -};
                                  -
                                  -this.dumpProperties = function(title, object)
                                  -{
                                  -    return this.logFormatted("dumpProperties() not supported.", "warning");
                                  -};
                                  -
                                  -this.dumpStack = function()
                                  -{
                                  -    return this.logFormatted("dumpStack() not supported.", "warning");
                                  -};
                                  -
                                  -this.flush = function(module)
                                  -{
                                  -    this.module = module;
                                  -    
                                  -    var queue = this.messageQueue;
                                  -    this.messageQueue = [];
                                  -    
                                  -    for (var i = 0; i < queue.length; ++i)
                                  -        this.writeMessage(queue[i][0], queue[i][1], queue[i][2]);
                                  -};
                                  -
                                  -this.getPanel = function()
                                  -{
                                  -    return this.module ? this.module.getPanel() : null;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -this.logFormatted = function(objects, className)
                                  -{
                                  -    var html = this.DBG_TIMESTAMP ? [getTimestamp(), " | "] : [];
                                  -    var length = objects.length;
                                  -    
                                  -    for (var i = 0; i < length; ++i)
                                  -    {
                                  -        appendText(" ", html);
                                  -        
                                  -        var object = objects[i];
                                  -        
                                  -        if (i == 0)
                                  -        {
                                  -            html.push("<b>");
                                  -            appendText(object, html);
                                  -            html.push("</b>");
                                  -        }
                                  -        else
                                  -            appendText(object, html);
                                  -    }
                                  -    
                                  -    return this.logRow(html, className);    
                                  -};
                                  -
                                  -this.logRow = function(message, className)
                                  -{
                                  -    var panel = this.getPanel();
                                  -    
                                  -    if (panel && panel.contentNode)
                                  -        this.writeMessage(message, className);
                                  -    else
                                  -    {
                                  -        this.messageQueue.push([message, className]);
                                  -    }
                                  -    
                                  -    return this.LOG_COMMAND;
                                  -};
                                  -
                                  -this.writeMessage = function(message, className)
                                  -{
                                  -    var container = this.getPanel().containerNode;
                                  -    var isScrolledToBottom =
                                  -        container.scrollTop + container.offsetHeight >= container.scrollHeight;
                                  -    
                                  -    this.writeRow.call(this, message, className);
                                  -    
                                  -    if (isScrolledToBottom)
                                  -        container.scrollTop = container.scrollHeight - container.offsetHeight;
                                  -};
                                  -
                                  -this.appendRow = function(row)
                                  -{
                                  -    var container = this.getPanel().contentNode;
                                  -    container.appendChild(row);
                                  -};
                                  -
                                  -this.writeRow = function(message, className)
                                  -{
                                  -    var row = this.getPanel().contentNode.ownerDocument.createElement("div");
                                  -    row.className = "logRow" + (className ? " logRow-"+className : "");
                                  -    row.innerHTML = message.join("");
                                  -    this.appendRow(row);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function appendText(object, html)
                                  -{
                                  -    html.push(escapeHTML(objectToString(object)));
                                  -};
                                  -
                                  -function getTimestamp()
                                  -{
                                  -    var now = new Date();
                                  -    var ms = "" + (now.getMilliseconds() / 1000).toFixed(3);
                                  -    ms = ms.substr(2);
                                  -    
                                  -    return now.toLocaleTimeString() + "." + ms;
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -var HTMLtoEntity =
                                  -{
                                  -    "<": "&lt;",
                                  -    ">": "&gt;",
                                  -    "&": "&amp;",
                                  -    "'": "&#39;",
                                  -    '"': "&quot;"
                                  -};
                                  -
                                  -function replaceChars(ch)
                                  -{
                                  -    return HTMLtoEntity[ch];
                                  -};
                                  -
                                  -function escapeHTML(value)
                                  -{
                                  -    return (value+"").replace(/[<>&"']/g, replaceChars);
                                  -};
                                  -
                                  -//*************************************************************************************************
                                  -
                                  -function objectToString(object)
                                  -{
                                  -    try
                                  -    {
                                  -        return object+"";
                                  -    }
                                  -    catch (exc)
                                  -    {
                                  -        return null;
                                  -    }
                                  -};
                                  -
                                  -// ************************************************************************************************
                                  -}).apply(FBL.FBTrace);
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/tracePanel.js b/tags/firebug1.3a5/content/firebug/tracePanel.js
                                  deleted file mode 100644
                                  index 2e578235..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/tracePanel.js
                                  +++ /dev/null
                                  @@ -1,65 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -FBL.ns(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -// If application isn't in trace mode, the FBTrace panel won't be loaded
                                  -if (!Env.Options.enableTrace) return;
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Module
                                  -
                                  -Firebug.Trace = extend(Firebug.Module,
                                  -{
                                  -    getPanel: function()
                                  -    {
                                  -        return Firebug.chrome ? Firebug.chrome.getPanel("Trace") : null;
                                  -    },
                                  -    
                                  -    clear: function()
                                  -    {
                                  -        this.getPanel().contentNode.innerHTML = "";
                                  -    }
                                  -});
                                  -
                                  -Firebug.registerModule(Firebug.Trace);
                                  -
                                  -
                                  -// ************************************************************************************************
                                  -// FBTrace Panel
                                  -
                                  -function TracePanel(){};
                                  -
                                  -TracePanel.prototype = extend(Firebug.Panel,
                                  -{
                                  -    name: "Trace",
                                  -    title: "Trace",
                                  -    
                                  -    options: {
                                  -        hasToolButtons: true,
                                  -        innerHTMLSync: true
                                  -    },
                                  -    
                                  -    create: function(){
                                  -        Firebug.Panel.create.apply(this, arguments);
                                  -        
                                  -        this.clearButton = new Button({
                                  -            caption: "Clear",
                                  -            title: "Clear FBTrace logs",            
                                  -            owner: Firebug.Trace,
                                  -            onClick: Firebug.Trace.clear
                                  -        });
                                  -    },
                                  -    
                                  -    initialize: function(){
                                  -        Firebug.Panel.initialize.apply(this, arguments);
                                  -        
                                  -        this.clearButton.initialize();
                                  -    }
                                  -    
                                  -});
                                  -
                                  -Firebug.registerPanel(TracePanel);
                                  -
                                  -// ************************************************************************************************
                                  -}});
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/content/firebug/xhr.js b/tags/firebug1.3a5/content/firebug/xhr.js
                                  deleted file mode 100644
                                  index b2a59fdd..00000000
                                  --- a/tags/firebug1.3a5/content/firebug/xhr.js
                                  +++ /dev/null
                                  @@ -1,262 +0,0 @@
                                  -/* See license.txt for terms of usage */
                                  -
                                  -(function() { with (FBL) {
                                  -// ************************************************************************************************
                                  -
                                  -var XHRSpy = function()
                                  -{
                                  -    this.requestHeaders = [];
                                  -    this.responseHeaders = [];
                                  -};
                                  -
                                  -XHRSpy.prototype = 
                                  -{
                                  -    method: null,
                                  -    url: null,
                                  -    async: null,
                                  -    
                                  -    xhrRequest: null,
                                  -    
                                  -    href: null,
                                  -    
                                  -    loaded: false,
                                  -    
                                  -    logRow: null,
                                  -    
                                  -    responseText: null,
                                  -    
                                  -    requestHeaders: null,
                                  -    responseHeaders: null,
                                  -    
                                  -    sourceLink: null, // {href:"file.html", line: 22}
                                  -    
                                  -    getURL: function()
                                  -    {
                                  -        return this.href;
                                  -    }
                                  -};
                                  -
                                  -
                                  -var _ActiveXObject;
                                  -var isIE6 =  /msie 6/i.test(navigator.appVersion);
                                  -
                                  -if (isIE6)
                                  -{
                                  -    window._ActiveXObject = window.ActiveXObject;
                                  -    
                                  -    var xhrObjects = " MSXML2.XMLHTTP.5.0 MSXML2.XMLHTTP.4.0 MSXML2.XMLHTTP.3.0 MSXML2.XMLHTTP Microsoft.XMLHTTP ";
                                  -    
                                  -    window.ActiveXObject = function(name)
                                  -    {
                                  -        var error = null;
                                  -        
                                  -        try
                                  -        {
                                  -            var activeXObject = new window._ActiveXObject(name);
                                  -        }
                                  -        catch(e)
                                  -        {
                                  -            error = e;
                                  -        }
                                  -        finally
                                  -        {
                                  -            if (!error)
                                  -            {
                                  -                if (xhrObjects.indexOf(" " + name + " ") != -1)
                                  -                    return new XMLHttpRequestWrapper(activeXObject);
                                  -                else
                                  -                    return activeXObject;
                                  -            }
                                  -            else
                                  -                throw error.message;
                                  -        }
                                  -    };
                                  -}
                                  -
                                  -var XMLHttpRequestWrapper = function(activeXObject)
                                  -{
                                  -    var xhrRequest = typeof activeXObject != "undefined" ?
                                  -                activeXObject :
                                  -                new _XMLHttpRequest(),
                                  -        
                                  -        spy = new XHRSpy(),
                                  -        
                                  -        self = this,
                                  -        
                                  -        reqType,
                                  -        reqUrl,
                                  -        reqStartTS;
                                  -    
                                  -    
                                  -    this.readyState = 0;
                                  -    
                                  -    this.onreadystatechange = function(){};
                                  -    
                                  -    var handleStateChange = function()
                                  -    {
                                  -        //Firebug.Console.log("onreadystatechange");
                                  -        
                                  -        self.readyState = xhrRequest.readyState;
                                  -        
                                  -        if (xhrRequest.readyState == 4)
                                  -        {
                                  -            var duration = new Date().getTime() - reqStartTS;
                                  -            var success = xhrRequest.status == 200;
                                  -            
                                  -            spy.loaded = true;
                                  -            spy.responseText = xhrRequest.responseText;
                                  -            
                                  -            var responseHeadersText = xhrRequest.getAllResponseHeaders();
                                  -            
                                  -            //Firebug.Console.log(responseHeadersText);
                                  -            
                                  -            var responses = responseHeadersText.split(/[\n\r]/);
                                  -            var reHeader = /^(\S+):\s*(.*)/;
                                  -            
                                  -            for (var i=0, l=responses.length; i<l; i++)
                                  -            {
                                  -                var text = responses[i];
                                  -                var match = text.match(reHeader);
                                  -                
                                  -                if (match)
                                  -                {
                                  -                    spy.responseHeaders.push({
                                  -                       name: [match[1]],
                                  -                       value: [match[2]]
                                  -                    });
                                  -                }
                                  -            }
                                  -                
                                  -            with({
                                  -                row: spy.logRow, 
                                  -                status: xhrRequest.status + " " + xhrRequest.statusText, 
                                  -                time: duration,
                                  -                success: success
                                  -            })
                                  -            {
                                  -                setTimeout(function(){
                                  -                
                                  -                    FBL.removeClass(row, "loading");
                                  -                    
                                  -                    if (!success)
                                  -                        FBL.setClass(row, "error");
                                  -                    
                                  -                    var item = FBL.$$(".spyStatus", row)[0];
                                  -                    item.innerHTML = status;
                                  -                    
                                  -                    var item = FBL.$$(".spyTime", row)[0];
                                  -                    item.innerHTML = time + "ms";
                                  -                    
                                  -                },200);
                                  -            }
                                  -            
                                  -            self.status = xhrRequest.status;
                                  -            self.statusText = xhrRequest.statusText;
                                  -            self.responseText = xhrRequest.responseText;
                                  -            self.responseXML = xhrRequest.responseXML;
                                  -            
                                  -            xhrRequest.onreadystatechange = function(){};
                                  -        }
                                  -        
                                  -        //Firebug.Console.log(spy.url + ": " + xhrRequest.readyState);
                                  -        self.onreadystatechange();
                                  -    };
                                  -    
                                  -    var appendRep = function() 
                                  -    {
                                  -        var panel = Firebug.chrome.getPanel("Console");
                                  -        var container = panel.panelNode;
                                  -        
                                  -        var row = Firebug.chrome.document.createElement("div");
                                  -        row.className = "logRow logRow-spy loading";
                                  -        
                                  -        spy.logRow = row;
                                  -        
                                  -        Firebug.Spy.XHR.tag.append({object: spy}, row);
                                  -        
                                  -        setTimeout(function(){
                                  -            container.appendChild(row);
                                  -        },0);
                                  -    };
                                  -    
                                  -    this.open = function(method, url, async)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest open");
                                  -        
                                  -        if (spy.loaded)
                                  -            spy = new XHRSpy();
                                  -        
                                  -        spy.method = method;
                                  -        spy.url = url;
                                  -        spy.async = async;
                                  -        spy.href = url;
                                  -        spy.xhrRequest = xhrRequest;
                                  -        
                                  -        if (!FBL.isIE && async)
                                  -            xhrRequest.onreadystatechange = handleStateChange;
                                  -        
                                  -        //Firebug.Console.log("xhrRequest BEFORE open");
                                  -        xhrRequest.open(method, url, async);
                                  -        //Firebug.Console.log("xhrRequest AFTER open");
                                  -        
                                  -        //Firebug.Console.log("xhrRequest BEFORE onreadystatechange SET");
                                  -        if (FBL.isIE && async)
                                  -            xhrRequest.onreadystatechange = handleStateChange;
                                  -        //Firebug.Console.log("xhrRequest AFTER onreadystatechange SET");
                                  -        
                                  -        if (!async)
                                  -        {
                                  -            Firebug.Console.log("handle sync");
                                  -        }
                                  -    };
                                  -    
                                  -    this.send = function(data)
                                  -    {
                                  -        //Firebug.Console.log("xhrRequest send");
                                  -        
                                  -        //Firebug.Console.log("xhrRequest send BEFORE appendRep");
                                  -        appendRep();
                                  -        //Firebug.Console.log("xhrRequest send AFTER appendRep");
                                  -        
                                  -        
                                  -        //Firebug.Console.log("xhrRequest send BEFORE send");
                                  -        reqStartTS = new Date().getTime();
                                  -        xhrRequest.send(data);
                                  -        //Firebug.Console.log("xhrRequest send AFTER send");
                                  -    };
                                  -    
                                  -    this.setRequestHeader = function(header, value)
                                  -    {
                                  -        spy.requestHeaders.push({name: [header], value: [value]});
                                  -        xhrRequest.setRequestHeader(header, value);
                                  -    };
                                  -    
                                  -    this.getResponseHeader = function(header)
                                  -    {
                                  -        return xhrRequest.getResponseHeader(header);
                                  -    };
                                  -    
                                  -    this.getAllResponseHeaders = function()
                                  -    {
                                  -        return xhrRequest.getAllResponseHeaders();
                                  -    };
                                  -    
                                  -    this.abort = function()
                                  -    {
                                  -        return xhrRequest.abort();
                                  -    };
                                  -    
                                  -    return this;
                                  -};
                                  -
                                  -if (!isIE6)
                                  -{
                                  -    var _XMLHttpRequest = XMLHttpRequest;
                                  -    window.XMLHttpRequest = function()
                                  -    {
                                  -        return new XMLHttpRequestWrapper();
                                  -    }
                                  -}
                                  -
                                  -// ************************************************************************************************
                                  -}})();
                                  diff --git a/tags/firebug1.3a5/content/notes.txt b/tags/firebug1.3a5/content/notes.txt
                                  deleted file mode 100644
                                  index 6d71fbaa..00000000
                                  --- a/tags/firebug1.3a5/content/notes.txt
                                  +++ /dev/null
                                  @@ -1,762 +0,0 @@
                                  ----------------------------------------------------------------------------------------------------
                                  -Development brainstorming and notes
                                  ----------------------------------------------------------------------------------------------------
                                  -    - bookmarlet problem with XML+XSL documents!
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Memory leaks
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Menu
                                  -    
                                  -    - XHRSpy
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -CSS Cascading and Inheritance
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Cascading Order and Inheritance in CSS
                                  -    http://monc.se/kitchen/38/cascading-order-and-inheritance-in-css
                                  -    
                                  -    Cascading Order Specification
                                  -    http://www.w3.org/TR/REC-CSS1/#cascading-order
                                  -    
                                  -    Assigning property values, Cascading, and Inheritance
                                  -    http://www.w3.org/TR/CSS21/cascade.html
                                  -    
                                  -    Table of CSS properties with initial values - Appendix F. Full property table
                                  -    http://www.w3.org/TR/CSS21/propidx.html
                                  -
                                  -
                                  -CSS imported styles
                                  -
                                  -      @import-rule as first rule in the first stylesheet:
                                  -      
                                  -      document.styleSheets[0].cssRules[0].styleSheet.cssRules;
                                  -      
                                  -      IE:
                                  -            
                                  -      document.styleSheets[0].imports[0].rules;
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Java Applet Vulnerability
                                  -    http://www.cert.org/blogs/vuls/2008/06/signed_java_security_worse_tha.html
                                  -    
                                  -    Mutation Events
                                  -    http://tobiasz123.wordpress.com/2009/01/19/utilizing-mutation-events-for-automatic-and-persistent-event-attaching/#comments
                                  -    
                                  -    Revise FBLite issues
                                  -        http://code.google.com/p/fbug/issues/list?can=1&q=owner:pedrosimonetti&sort=-owner+-status&colspec=ID+Type+Status+Owner+Test+Summary&cells=tiles
                                  -    
                                  -    Reopen issues
                                  -        Console Trace: http://code.google.com/p/fbug/issues/detail?id=394
                                  -        appendNode IE: http://code.google.com/p/fbug/issues/detail?id=225
                                  -    
                                  -    Stack Trace improvements
                                  -        http://github.com/lsmith/javascript-stack-trace/blob/master/getStackTrace.js
                                  -        http://eriwen.com/javascript/js-stack-trace/
                                  -    
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - 1.3.0a4 IMPORTANT TODOs
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -  - Panel Interfaces 
                                  -          - initialize / initializeNode / show / hide
                                  -
                                  -  - Contexts
                                  -          - TabWatcher and TabContext - what exactly are they?
                                  -
                                  -  - Data Sharing / Cache
                                  -
                                  -  - Chrome Synchronization
                                  -        ~~  - divide sync proccess into separated functions
                                  -        ok  - move FirebugApplication to Firebug namespace
                                  -
                                  -  - Panel as Controller?
                                  -
                                  -  - SidePanelBar
                                  -        sidePanel group? to show/hide multiple tabs
                                  -            OK - NO. PANEL inherits SIDEPANELBAR
                                  -
                                  -  - OK - domplate uses 2 global namespaces: domplate, DomplateTag
                                  -
                                  -  - Computed Styles
                                  -
                                  -  - Console "multiline" sidePanel????
                                  -
                                  -  - CSS "Run CSS" sidePanel????
                                  -
                                  -  - Use "offline" mode when switching panels (to avoid loose any message)?    
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - 1.4?
                                  ----------------------------------------------------------------------------------------------------
                                  -    cross-iframe
                                  -    persistent popups
                                  -    inherited styles
                                  -    live edit
                                  -    live highlight dom changes?
                                  -    unit tests
                                  -    Panel options menu
                                  -    Context menu
                                  -    tooltips (CSS color, images)
                                  -    Layout Ruler
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Firebug Lite Future
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -High level of portability
                                  -    - Lib
                                  -    - Domplate
                                  -    - Reps
                                  -    - InsideOutBox
                                  -    - Inspector
                                  -    - Infotip?
                                  -
                                  -Mid level of portability
                                  -    - Console
                                  -    - HTML
                                  -    - DOM
                                  -    - CSS?
                                  -    - tabContext?
                                  -    - tabWatcher?
                                  -
                                  -Low level of portability
                                  -    - Script
                                  -    
                                  -    - Chrome
                                  -    - Selector
                                  -    - Trace
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Major changes between Firebug and Firebug Lite codebase
                                  ----------------------------------------------------------------------------------------------------
                                  -    addEvent/removeEvent
                                  -    instanceof
                                  -    scope problem (local named functions)
                                  -    "top" scope
                                  -    panel activation
                                  -    
                                  -    same application instance running across all tabs?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    IE 6: gzip + ETag != If-None-Match
                                  -    http://abstractfinal.blogspot.com/2007/05/ie-6-gzip-etag-if-none-match.html
                                  -    
                                  -    JavaScript + Frames + IE 6 + gzip + “no-cache†Header = Trouble
                                  -    http://www.akmattie.net/blog/2007/11/10/javascript-frames-ie-6-gzip-no-cache-header-trouble/
                                  -    
                                  -    IE problems
                                  -    http://www.julienlecomte.net/blog/2007/08/13/#comment-258
                                  -    
                                  -    
                                  -    http://support.microsoft.com/kb/321722/EN-US/
                                  -    http://support.microsoft.com/default.aspx?scid=kb;LN;Q312496
                                  -    http://support.microsoft.com/default.aspx?scid=kb;en-us;823386&Product=ie600
                                  -    
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug Lite 1.3a3
                                  ----------------------------------------------------------------------------------------------------
                                  -    - settings
                                  -        - url settings "remote"/"local" should be replace
                                  -            remote - should be the default
                                  -            local - should be replace by "dev"
                                  -
                                  -    - getfirebug release instructions page
                                  -        - what to test?
                                  -            - bookmarlet
                                  -            - UI
                                  -                - positioning
                                  -                - display
                                  -                - resizing
                                  -                - popup loading
                                  -                - popup/frame synchronization
                                  -                
                                  -            - different scenarios (XHTML, XSL+XML)
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug Lite 1.3a4
                                  ----------------------------------------------------------------------------------------------------
                                  -    - DOM Panel
                                  -    - basic doc? 
                                  -    - settings
                                  -    - getLocation - split('/') method
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug Lite 1.3a5
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Computed Style Panel
                                  -    - CSS Panel
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug Lite 1.3a6
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Script Panel
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Versions
                                  ----------------------------------------------------------------------------------------------------
                                  -    Firebug 1.3a3 - Revision: 4882
                                  -    Firebug 1.3a2 - Revision: 3847
                                  -
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -BUGS
                                  ----------------------------------------------------------------------------------------------------
                                  -    - context.evaluate
                                  -    
                                  -    - define FBL.console to point to the global console
                                  -    
                                  -    - console should be installed in each Chrome window
                                  -    
                                  -    - commandLine API should be place in console.firebuglite.commandLineAPI
                                  -    
                                  -    - commandLine API not well defined, when in persistent mode
                                  -
                                  -    - When loading the bookmarlet in IE it shows a security warning
                                  -        https://www.google.com/accounts/ServiceLogin?service=adwords&cd=null&hl=en-US&ltmpl=adwords&passive=true&ifr=false&alwf=true&continue=https%3A%2F%2Fadwords.google.com%2Fselect%2Fgaiaauth%3Fapt%3DNone%26ugl%3Dtrue&sourceid=awo&subid=ww-en-et-ads-0-adsC-all
                                  -
                                  -    - problem with IE and and frame.close() function that uses $(). picking wrong window in persistent mode.
                                  -    
                                  -    - "close tag" node (</div>) should not be selectable, instead, when clicked it should select
                                  -      the "open tag" node (<div>).
                                  -    
                                  -    - remove events added in disableTextSelection
                                  -
                                  -    - rename the id "FirebugChrome" to "FirebugFrame" or "FirebugChromeFrame" or "FirebugWindow"
                                  -    
                                  -    - window.onerror is being turned off when UI is minimized (and should not)
                                  -    
                                  -    - put IE6CSS in injected chrome
                                  -    
                                  -OK  - context is not being properly handled in persistent mode, when using
                                  -      the autocomplete function in commandLine. It is using the wrong "window".
                                  -      
                                  -OK  - tabLStyle reference in Chrome
                                  -
                                  -OK  - commandLine API. Firebug.browser isn't avaiable when the library is initialized
                                  -    
                                  -OK  - Chrome options inheritance (extend) is not working as expected
                                  -
                                  -OK  - Popup in IE, problem in the draw method
                                  -
                                  -OK  - when NOT in injected mode, the new application load system doesn't work.
                                  -
                                  -OK  - when in injected DEVELOPMENT mode, in XHTML documents, Google Chrome
                                  -      is having problems with the loading order of the multiple scripts.
                                  -
                                  -OK  - IE6 and problem with CSS. Selected element in HTML Tree.
                                  -    
                                  -OK  - bookmarlet fail in getfirebug.com/lite.html
                                  -    
                                  -OK  - reference to wrong URL in var inspectFrameStyle in Inspector module.
                                  -     
                                  -OK  - nodeControl in HTMLTree should not fire the node highlight (include rule in delegation func)
                                  -    
                                  -1.4 - The CSS rule of popup hide the "main controls" element, but the search box is inside of it
                                  -      and is getting hidden 
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Domplate/Reps
                                  ----------------------------------------------------------------------------------------------------
                                  -    IE6:
                                  -        - create special rules to IE6 in a separated file
                                  -
                                  -    Opera:
                                  -        - native function: "prototype" in fn == true && listed in for..in
                                  -        - user function: "prototype" in fn == true && not listed in for..in
                                  -
                                  -
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Statistics
                                  ----------------------------------------------------------------------------------------------------
                                  -    Use Google Analytics to track Firebug Lite statistics.
                                  -    It could run inside the Chrome iframe (no global pollution).
                                  -    Not called when used locally, included when in development mode.
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -XML + XSL
                                  ----------------------------------------------------------------------------------------------------
                                  -Opera doesn't have document.elementFromPoint in XML documents
                                  -
                                  -revise the use of createElement and createGlobalElement
                                  -    createElement --> createChromeElement
                                  -    createGlobalElement --> createElement
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Missing
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Popup
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Frame/Popup settings
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Loading
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Firebug.initialize should
                                  -        - create console namespace
                                  -    
                                  -    - window onerror - wrong time 
                                  -    
                                  -    - Check the initializing order. 
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Panel event delegation?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Tool Buttons
                                  ----------------------------------------------------------------------------------------------------
                                  -    - button location: Fixed buttons (inspect) and Panel buttons 
                                  -
                                  - 
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -User Interface
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -General
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Where exactly the errors indicator should be placed in the UI?
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Skins
                                  ----------------------------------------------------------------------------------------------------
                                  -     OK - port changes in XP skin to the "classic" and "light" ones
                                  -     
                                  -    1.4 - divide .css files? so new skins can be easier to write, and changes in UI can be easily 
                                  -          ported across skins 
                                  -        
                                  -    1.4 - each skin has in his own folder a file called "firebug.json" (or similar)
                                  -    1.4 - improve the build skin methods in FBDev
                                  -    1.4 - loadJSON method
                                  -    1.4 - loadSkin method
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -TODO's
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -ScrollArea Class
                                  ----------------------------------------------------------------------------------------------------
                                  -    - isScrolled
                                  -    - isVerticalScrolled
                                  -    - isHorizontalScrolled
                                  -    - isScrolledToBottom
                                  -    - scrollToElement(el)
                                  -    - isElementVisible(el)
                                  -    - interceptMouseWheel
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -User Interface
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Highlighted nodes in HTML tree with round corners (with OS color)
                                  -        - current implementation isn't good (it uses both CSS hack and JS)
                                  -        - Opera round corner SVG trick
                                  -        - best way to go is dynamically create a CSS rule according each browser 
                                  -    
                                  -    - UI styling
                                  -        - (?) detect Windows theme (XP or classic?)
                                  -        - (?) detect OS (windows or mac?)
                                  -    
                                  -    - error UI indications (like FB in status bar)
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Chrome
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Opera problem with onunload and popups (context is not being destroyed)
                                  - 
                                  -    
                                  ----------------------------------------------------------------------------------------------------
                                  -Controllers
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) add option to skip frames
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - (?) How to proceed when the console global variable is already defined?
                                  -    - (?) how to auto-load FirebugLite + Extension in a single bookmarlet?
                                  -    - custom Errors = throw new FirebugError("message")
                                  - ~~ - persitent popups
                                  - 
                                  ----------------------------------------------------------------------------------------------------
                                  -Core
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Problem with id conflits. The same attribute is being used in the document
                                  -      elements and in the HTML Tree, in the user interface.
                                  -    - Check if there's a problem using the Sizzle selector engine in the code
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Events
                                  ----------------------------------------------------------------------------------------------------
                                  -    - handle disble mouse wheel in Chrome, when in frame mode?
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -FBL 1.4
                                  ----------------------------------------------------------------------------------------------------
                                  -    - Tests
                                  -        - Unit Tests
                                  -        - Manual Tests
                                  -        - Test generation?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug
                                  ----------------------------------------------------------------------------------------------------
                                  -Domplate (crossport to FB) Fixed accidental global variable declaration in the compiled string.
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Firebug bugs
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -Reps - r1088 - Array
                                  -http://code.google.com/p/fbug/source/browse/branches/firebug1.3/content/firebug/reps.js?spec=svn1222&r=1088
                                  -
                                  -Global:
                                  -http://code.google.com/p/fbug/issues/detail?id=1017&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Gmail:
                                  -http://code.google.com/p/fbug/issues/detail?id=1977&q=DOM&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -Form freak:
                                  -http://code.google.com/p/fbug/issues/detail?id=534&q=array&colspec=ID%20Type%20Status%20Owner%20Test%20Summary
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  ----------------------------------------------------------------------------------------------------
                                  ----------------------------------------------------------------------------------------------------
                                  -BRAINSTORMING SECTION
                                  ----------------------------------------------------------------------------------------------------
                                  ----------------------------------------------------------------------------------------------------
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -getPixelValue
                                  ----------------------------------------------------------------------------------------------------
                                  -Dean Edwards:
                                  -http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
                                  -
                                  -var PIXEL = /^\d+(px)?$/i;
                                  -function getPixelValue(element, value) {
                                  -if (PIXEL.test(value)) return parseInt(value);
                                  -var style = element.style.left;
                                  -var runtimeStyle = element.runtimeStyle.left;
                                  -element.runtimeStyle.left = element.currentStyle.left;
                                  -element.style.left = value || 0;
                                  -value = element.style.pixelLeft;
                                  -element.style.left = style;
                                  -element.runtimeStyle.left = runtimeStyle;
                                  -return value;
                                  -};
                                  -
                                  -
                                  -window.PIXEL=/^\d+(px)?$/i, window.getPixelValue=function (element, value) {if (PIXEL.test(value)) return parseInt(value);var style = element.style.left;var runtimeStyle = element.runtimeStyle.left;element.runtimeStyle.left = element.currentStyle.left;element.style.left = value || 0;value = element.style.pixelLeft;element.style.left = style;element.runtimeStyle.left = runtimeStyle;return value;};
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Library Expose
                                  ----------------------------------------------------------------------------------------------------
                                  -    - if a FBLite extension can be dynamically loaded, the FBL namespace should be exposed 
                                  -    - if the FBL is exposed inside the iframe, it is less visible, and less conflictable 
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -FB vs FBLite
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -FB
                                  -    - Each Panel has its own window
                                  -    - A single Firebug application run across all browser tabs
                                  -    - The Firebug application is persistent, that is, it can live after page change, or reload 
                                  -
                                  -FBLite
                                  -    - All Chrome Panels runs in the same window, the chrome window
                                  -    - The FirebugLite application run in a single browser tab
                                  -    - The Firebug application isn't persistent 
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Persistent Mode
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Loading Process
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -1st Stage - Load the application in "offscreen mode", with only the console 
                                  -            functions available.
                                  -
                                  -2nd Stage - Wait the page load, and then create the chrome window
                                  -            (frame or popup, based on preferences).
                                  -
                                  -3rd Stage - Wait the chrome page load, and the install the application
                                  -            in the chrome window context.
                                  -
                                  -4th Stage - Load the full application in chrome window, synchronizes it with
                                  -            the first application loaded, and transfer the console
                                  -            functions to the new "screen mode" application.
                                  -
                                  -----------------------------------
                                  -Pros
                                  ----------------------------------------------------------------------------------------------------
                                  -    More safe
                                  -        - no global namespace pollution, except for the "console" variable
                                  -        - no internal code exposure
                                  -    
                                  -    Allows persistent popups
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Cons
                                  ----------------------------------------------------------------------------------------------------
                                  -    More complex
                                  -    More difficult to debug low level functions
                                  -    less stable?
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  - Inherited Styles
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -    Some of that functionality is built into DOM Inspector, but you can look at 
                                  -    the parts that Firebug does itself.
                                  -
                                  -    In lib.js there is a list of properties ("inheritedStyleNames") that can 
                                  -    be automatically inherited, so for a given element it looks for such 
                                  -    properties in the rules being applied to each ancestor. 
                                  -    (That list doesn't include the special print or aural properties.)
                                  -
                                  -    The table here (http://www.w3.org/TR/CSS21/propidx.html) shows 
                                  -    which properties are inherited by default.
                                  -
                                  -    "updateCascadeView" in css.js will also be of interest.
                                  -
                                  -    Via http://code.google.com/p/fbug/source/browse/ you can look at the files:
                                  -
                                  -    branches/firebug1.2/content/firebug/css.js
                                  -    branches/firebug1.2/content/firebug/lib.js
                                  -    
                                  -    ----------------------------------------------------------------------------
                                  -
                                  -    Full CSS property table
                                  -    http://www.w3.org/TR/CSS21/propidx.html
                                  -
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -To organize
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -DOMPLATE
                                  ----------------------------------------------------------------------------------------------------
                                  -IE problems with templates
                                  -
                                  -1 - class name attributes of objects
                                  -
                                  -2 - colon after the last property of a object
                                  -
                                  -3 - event handlers  
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Disable Text Selection
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -<script language="JavaScript1.2">
                                  -
                                  -function disabletext(e){
                                  -return false
                                  -}
                                  -
                                  -function reEnable(){
                                  -return true
                                  -}
                                  -
                                  -//if the browser is IE4+
                                  -document.onselectstart=new Function ("return false")
                                  -
                                  -//if the browser is NS6
                                  -if (window.sidebar){
                                  -document.onmousedown=disabletext
                                  -document.onclick=reEnable
                                  -}
                                  -</script>
                                  -
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -XPATH
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -function getXPath(node, path) {
                                  -  path = path || [];
                                  -  if(node.parentNode) {
                                  -    path = getXPath(node.parentNode, path);
                                  -  }
                                  -
                                  -  if(node.previousSibling) {
                                  -    var count = 1;
                                  -    var sibling = node.previousSibling
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;}
                                  -      sibling = sibling.previousSibling;
                                  -    } while(sibling);
                                  -    if(count == 1) {count = null;}
                                  -  } else if(node.nextSibling) {
                                  -    var sibling = node.nextSibling;
                                  -    do {
                                  -      if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {
                                  -        var count = 1;
                                  -        sibling = null;
                                  -      } else {
                                  -        var count = null;
                                  -        sibling = sibling.previousSibling;
                                  -      }
                                  -    } while(sibling);
                                  -  }
                                  -
                                  -  if(node.nodeType == 1) {
                                  -    path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : ''));
                                  -  }
                                  -  return path;
                                  -};
                                  -
                                  -
                                  -// Getting result
                                  -document.evaluate("/html/body/div/ul/li[2]", document, null, XPathResult.ANY_TYPE, null ).iterateNext()
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Advanced CSS Features brainstorm
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -
                                  -styleCache = {};
                                  -
                                  -// First style to add to cache is the inline styles
                                  -for(cid in documentCache)
                                  -{
                                  -    styleCache[cid] = [];
                                  -    styleCache[cid].push();
                                  -}
                                  -
                                  -// for each stylesheet 
                                  -for(stylesheet in stylesheets)
                                  -{
                                  -    // look at each rule
                                  -    for(rule in stylesheet)
                                  -    {
                                  -        // get the rule's selector, and find all elements in document
                                  -        var els = Firebug.Selector(rule.selector);
                                  -        
                                  -        // for each element found
                                  -        for(var i=0, el; el=els[i]; i++)
                                  -        {
                                  -            var cid = el[cacheID];
                                  -            
                                  -            // Add style info in the cache stack of styles of the element 
                                  -            styleCache[cid].push({
                                  -                stylesheet: stylesheet,
                                  -                lineNumber: getLineNumber(rule, stylesheet),
                                  -                fileName: getFileName(rule, stylesheet),
                                  -                selector: rule.selector,
                                  -                styles: rule.styles
                                  -            });
                                  -        }
                                  -    }
                                  -
                                  -}
                                  -
                                  -
                                  ----------------------------------------------------------------------------------------------------
                                  -Advanced CSS Features Implementation
                                  ----------------------------------------------------------------------------------------------------
                                  -
                                  -function getInlineStyles(el)
                                  -{
                                  -    var style = el.style;
                                  -    var r = {}, l, prop;
                                  -    
                                  -    // Good browsers first
                                  -    if (l = style.length)
                                  -    {
                                  -        for(var i=0; i<l; i++)
                                  -        {
                                  -            prop = style[i];
                                  -            r[toCamelCase(prop)] = style.getPropertyValue(prop);
                                  -        }
                                  -    }
                                  -    // Sad browsers last
                                  -    else
                                  -    {
                                  -      for(var prop in style)
                                  -        if (ignoreIEStyleProperties.indexOf(prop) == -1 && 
                                  -            isIEInlineStyleProperty(el, prop))
                                  -                r[prop] = style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -var ignoreIEStyleProperties = " cssText accelerator ";
                                  -function isIEInlineStyleProperty(el, prop)
                                  -{
                                  -    var r = false;
                                  -    
                                  -    if (typeof el.style[prop] == "string")
                                  -    {
                                  -        r = !!el.style[prop];
                                  -    }
                                  -    
                                  -    return r;
                                  -}
                                  -
                                  -
                                  -function toCamelCase(s)
                                  -{
                                  -    return s.replace(_selectorCaseMatch, _toCamelCaseReplaceFn);
                                  -}
                                  -
                                  -function toSelectorCase(s)
                                  -{
                                  -  return s.replace(_camelCaseMatch, "-$1").toLowerCase();
                                  -  
                                  -}
                                  -
                                  -var _camelCaseMatch = /([A-Z])/g;
                                  -var _selectorCaseMatch = /\-(.)/g; 
                                  -function _toCamelCaseReplaceFn(m,g)
                                  -{
                                  -    return g.toUpperCase();
                                  -}
                                  diff --git a/tags/firebug1.3a5/license.txt b/tags/firebug1.3a5/license.txt
                                  deleted file mode 100644
                                  index ba43b751..00000000
                                  --- a/tags/firebug1.3a5/license.txt
                                  +++ /dev/null
                                  @@ -1,30 +0,0 @@
                                  -Software License Agreement (BSD License)
                                  -
                                  -Copyright (c) 2007, Parakey Inc.
                                  -All rights reserved.
                                  -
                                  -Redistribution and use of this software in source and binary forms, with or without modification,
                                  -are permitted provided that the following conditions are met:
                                  -
                                  -* Redistributions of source code must retain the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer.
                                  -
                                  -* Redistributions in binary form must reproduce the above
                                  -  copyright notice, this list of conditions and the
                                  -  following disclaimer in the documentation and/or other
                                  -  materials provided with the distribution.
                                  -
                                  -* Neither the name of Parakey Inc. nor the names of its
                                  -  contributors may be used to endorse or promote products
                                  -  derived from this software without specific prior
                                  -  written permission of Parakey Inc.
                                  -
                                  -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
                                  -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
                                  -FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
                                  -CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                                  -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
                                  -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
                                  -IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
                                  -OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
                                  diff --git a/tags/firebug1.3a5/skin/classic/errorIcon.gif b/tags/firebug1.3a5/skin/classic/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/errorIcon.png b/tags/firebug1.3a5/skin/classic/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/firebug.css b/tags/firebug1.3a5/skin/classic/firebug.css
                                  deleted file mode 100644
                                  index 3093084b..00000000
                                  --- a/tags/firebug1.3a5/skin/classic/firebug.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 6px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #d4d0c8 0 0;
                                  -    height: 28px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #d4d0c8 #fff #d4d0c8 #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 8px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #c5c1ba 0 -28px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #d4d0c8 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #d4d0c8;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 28px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/classic/firebug.html b/tags/firebug1.3a5/skin/classic/firebug.html
                                  deleted file mode 100644
                                  index b041646b..00000000
                                  --- a/tags/firebug1.3a5/skin/classic/firebug.html
                                  +++ /dev/null
                                  @@ -1,267 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- 
                                  -          <div id="fbFirebugMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug <span class="fbMenuShortcutKey">F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug in New Window <span class="fbMenuShortcutKey">Ctrl+F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Inspect Element <span class="fbMenuShortcutKey">Ctrl+Shift+C</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Command Line <span class="fbMenuShortcutKey">Ctrl+Shift+L</span></a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbFirebugSettingsMenu">Settings</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbConsoleMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbHover">Firebug Lite Homepage</a>
                                  -                  <a class="fbMenuOption fbHover">Discussion List</a>
                                  -                  <a class="fbMenuOption fbHover">Report Bug</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbFirebugSettingsMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a type="checkbox" class="fbMenuOption fbHover">Save Settings in Cookies</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbSubMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start Visible</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start in Popup</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbMenuChecked fbHover">Override Console Object</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Trace Mode</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Persistent Mode</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -                   
                                  -          <div id="fbConsoleMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Another Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Just nothing</a>
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbSubMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbMenuRadioSelected fbHover">Sub</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Option</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Hello</a>
                                  -              </div>
                                  -          </div>
                                  -          -->
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/skin/classic/firebug.png b/tags/firebug1.3a5/skin/classic/firebug.png
                                  deleted file mode 100644
                                  index 123545a1..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/infoIcon.gif b/tags/firebug1.3a5/skin/classic/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/infoIcon.png b/tags/firebug1.3a5/skin/classic/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/pixel_transparent.gif b/tags/firebug1.3a5/skin/classic/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/roundCorner.svg b/tags/firebug1.3a5/skin/classic/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a5/skin/classic/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a5/skin/classic/search.gif b/tags/firebug1.3a5/skin/classic/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/search.png b/tags/firebug1.3a5/skin/classic/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/shadow.gif b/tags/firebug1.3a5/skin/classic/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/shadow2.gif b/tags/firebug1.3a5/skin/classic/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/shadowAlpha.png b/tags/firebug1.3a5/skin/classic/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/sprite.png b/tags/firebug1.3a5/skin/classic/sprite.png
                                  deleted file mode 100644
                                  index 3fe97bb6..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabHoverLeft.png b/tags/firebug1.3a5/skin/classic/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 5852d8d7..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabHoverMid.png b/tags/firebug1.3a5/skin/classic/tabHoverMid.png
                                  deleted file mode 100644
                                  index e7c9ba75..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabHoverRight.png b/tags/firebug1.3a5/skin/classic/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3c62c981..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabLeft.png b/tags/firebug1.3a5/skin/classic/tabLeft.png
                                  deleted file mode 100644
                                  index 3368de73..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMenuCheckbox.png b/tags/firebug1.3a5/skin/classic/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMenuPin.png b/tags/firebug1.3a5/skin/classic/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMenuRadio.png b/tags/firebug1.3a5/skin/classic/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMenuTarget.png b/tags/firebug1.3a5/skin/classic/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMenuTargetHover.png b/tags/firebug1.3a5/skin/classic/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabMid.png b/tags/firebug1.3a5/skin/classic/tabMid.png
                                  deleted file mode 100644
                                  index b2cfeac5..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tabRight.png b/tags/firebug1.3a5/skin/classic/tabRight.png
                                  deleted file mode 100644
                                  index 8470a95e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/titlebarMid.png b/tags/firebug1.3a5/skin/classic/titlebarMid.png
                                  deleted file mode 100644
                                  index e9a74163..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/toolbarMid.png b/tags/firebug1.3a5/skin/classic/toolbarMid.png
                                  deleted file mode 100644
                                  index a1257f52..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tree_close.gif b/tags/firebug1.3a5/skin/classic/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/tree_open.gif b/tags/firebug1.3a5/skin/classic/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/warningIcon.gif b/tags/firebug1.3a5/skin/classic/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/classic/warningIcon.png b/tags/firebug1.3a5/skin/classic/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/classic/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/close.png b/tags/firebug1.3a5/skin/light/close.png
                                  deleted file mode 100644
                                  index ada59d8a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/close.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/closeHover.png b/tags/firebug1.3a5/skin/light/closeHover.png
                                  deleted file mode 100644
                                  index be0145d2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/closeHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/detach.png b/tags/firebug1.3a5/skin/light/detach.png
                                  deleted file mode 100644
                                  index 25d97e03..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/detach.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/detachHover.png b/tags/firebug1.3a5/skin/light/detachHover.png
                                  deleted file mode 100644
                                  index edb81253..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/detachHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/errorIcon.gif b/tags/firebug1.3a5/skin/light/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/errorIcon.png b/tags/firebug1.3a5/skin/light/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/firebug.css b/tags/firebug1.3a5/skin/light/firebug.css
                                  deleted file mode 100644
                                  index 556f693c..00000000
                                  --- a/tags/firebug1.3a5/skin/light/firebug.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 5px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 50px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #eee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    height: 23px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 7px 0 4px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #eee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #d9d9d9 0 -27px;
                                  -    position: absolute;
                                  -    height: 23px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 23px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 23px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 23px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #e5e5e5 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #eee;
                                  -    color: #000;
                                  -    border: 1px solid #777;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/light/firebug.html b/tags/firebug1.3a5/skin/light/firebug.html
                                  deleted file mode 100644
                                  index b041646b..00000000
                                  --- a/tags/firebug1.3a5/skin/light/firebug.html
                                  +++ /dev/null
                                  @@ -1,267 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<!--[if lte IE 6]>
                                  -<link rel="stylesheet" href="firebug.IE6.css" type="text/css" />
                                  -<![endif]-->
                                  -</head>
                                  -<body>
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Main Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btClose" class="fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- 
                                  -          <div id="fbFirebugMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug <span class="fbMenuShortcutKey">F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Open Firebug in New Window <span class="fbMenuShortcutKey">Ctrl+F12</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Inspect Element <span class="fbMenuShortcutKey">Ctrl+Shift+C</span></a>
                                  -                  <a class="fbMenuOption fbMenuShortcut fbHover">Command Line <span class="fbMenuShortcutKey">Ctrl+Shift+L</span></a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbFirebugSettingsMenu">Settings</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbConsoleMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbHover">Firebug Lite Homepage</a>
                                  -                  <a class="fbMenuOption fbHover">Discussion List</a>
                                  -                  <a class="fbMenuOption fbHover">Report Bug</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbFirebugSettingsMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -              
                                  -                  <a type="checkbox" class="fbMenuOption fbHover">Save Settings in Cookies</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a class="fbMenuOption fbMenuGroup fbHover" child="fbSubMenu">Settings2</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start Visible</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbHover">Start in Popup</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbMenuDisabled fbMenuChecked fbHover">Override Console Object</a>
                                  -                  
                                  -                  <span class="fbMenuSeparator"></span>
                                  -                  
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Trace Mode</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Enable Persistent Mode</a>
                                  -                  
                                  -              </div>
                                  -          </div>
                                  -                   
                                  -          <div id="fbConsoleMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Another Test Option</a>
                                  -                  <a type="checkbox" class="fbMenuOption fbMenuCheckBox fbHover">Just nothing</a>
                                  -              </div>
                                  -          </div>
                                  -          
                                  -          <div id="fbSubMenu" class="fbMenu fbShadow">
                                  -              <div class="fbMenuContent fbShadowContent">
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbMenuRadioSelected fbHover">Sub</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Option</a>
                                  -                  <a type="radiobutton" class="fbMenuOption fbMenuRadioButton fbHover">Hello</a>
                                  -              </div>
                                  -          </div>
                                  -          -->
                                  -          
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table>
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/skin/light/firebug.png b/tags/firebug1.3a5/skin/light/firebug.png
                                  deleted file mode 100644
                                  index 338dc5a1..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/firebug2.css b/tags/firebug1.3a5/skin/light/firebug2.css
                                  deleted file mode 100644
                                  index 224f3627..00000000
                                  --- a/tags/firebug1.3a5/skin/light/firebug2.css
                                  +++ /dev/null
                                  @@ -1,1881 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow, /* avoid rule not being parsed IE6 */
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -.logRow-spy.opened .spyHead .spyTitle,
                                  -.logGroup.opened > .logRow, /* avoid rule not being parsed IE6 */
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding: 0;
                                  -    border: none;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    outline: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -    background: #F8F8F8;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0px 0 1px 0;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    /*background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;*/
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/loading_16.gif);*/
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon-sm.png);*/
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    white-space: nowrap;
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; margin-top:10px; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/light/infoIcon.gif b/tags/firebug1.3a5/skin/light/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/infoIcon.png b/tags/firebug1.3a5/skin/light/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/pixel_transparent.gif b/tags/firebug1.3a5/skin/light/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/roundCorner.svg b/tags/firebug1.3a5/skin/light/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a5/skin/light/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a5/skin/light/search.gif b/tags/firebug1.3a5/skin/light/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/search.png b/tags/firebug1.3a5/skin/light/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/shadow.gif b/tags/firebug1.3a5/skin/light/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/shadow2.gif b/tags/firebug1.3a5/skin/light/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/shadowAlpha.png b/tags/firebug1.3a5/skin/light/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/sprite.png b/tags/firebug1.3a5/skin/light/sprite.png
                                  deleted file mode 100644
                                  index d117e123..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabHoverLeft.png b/tags/firebug1.3a5/skin/light/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 708215d2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabHoverMid.png b/tags/firebug1.3a5/skin/light/tabHoverMid.png
                                  deleted file mode 100644
                                  index 6ff9a864..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabHoverRight.png b/tags/firebug1.3a5/skin/light/tabHoverRight.png
                                  deleted file mode 100644
                                  index 9f02130d..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabLeft.png b/tags/firebug1.3a5/skin/light/tabLeft.png
                                  deleted file mode 100644
                                  index 8c502135..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMenuCheckbox.png b/tags/firebug1.3a5/skin/light/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMenuPin.png b/tags/firebug1.3a5/skin/light/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMenuRadio.png b/tags/firebug1.3a5/skin/light/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMenuTarget.png b/tags/firebug1.3a5/skin/light/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMenuTargetHover.png b/tags/firebug1.3a5/skin/light/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabMid.png b/tags/firebug1.3a5/skin/light/tabMid.png
                                  deleted file mode 100644
                                  index 0a00b60d..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tabRight.png b/tags/firebug1.3a5/skin/light/tabRight.png
                                  deleted file mode 100644
                                  index b43c352d..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/titlebarMid.png b/tags/firebug1.3a5/skin/light/titlebarMid.png
                                  deleted file mode 100644
                                  index 5fc63e79..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/toolbarMid.png b/tags/firebug1.3a5/skin/light/toolbarMid.png
                                  deleted file mode 100644
                                  index 8520aab2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tree_close.gif b/tags/firebug1.3a5/skin/light/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/tree_open.gif b/tags/firebug1.3a5/skin/light/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/warningIcon.gif b/tags/firebug1.3a5/skin/light/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/light/warningIcon.png b/tags/firebug1.3a5/skin/light/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/light/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/buttonBg.png b/tags/firebug1.3a5/skin/xp/buttonBg.png
                                  deleted file mode 100644
                                  index f367b427..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/buttonBg.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/buttonBgHover.png b/tags/firebug1.3a5/skin/xp/buttonBgHover.png
                                  deleted file mode 100644
                                  index cd37a0d5..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/buttonBgHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/down.png b/tags/firebug1.3a5/skin/xp/down.png
                                  deleted file mode 100644
                                  index acbbd30c..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/down.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/downActive.png b/tags/firebug1.3a5/skin/xp/downActive.png
                                  deleted file mode 100644
                                  index f4312b2f..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/downActive.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/downHover.png b/tags/firebug1.3a5/skin/xp/downHover.png
                                  deleted file mode 100644
                                  index 8144e637..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/downHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/errorIcon-sm.png b/tags/firebug1.3a5/skin/xp/errorIcon-sm.png
                                  deleted file mode 100644
                                  index 0c377e30..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/errorIcon-sm.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/errorIcon.gif b/tags/firebug1.3a5/skin/xp/errorIcon.gif
                                  deleted file mode 100644
                                  index 8ee8116a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/errorIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/errorIcon.png b/tags/firebug1.3a5/skin/xp/errorIcon.png
                                  deleted file mode 100644
                                  index 2d75261b..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/errorIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/firebug-1.3a2.css b/tags/firebug1.3a5/skin/xp/firebug-1.3a2.css
                                  deleted file mode 100644
                                  index b5dd5dde..00000000
                                  --- a/tags/firebug1.3a5/skin/xp/firebug-1.3a2.css
                                  +++ /dev/null
                                  @@ -1,817 +0,0 @@
                                  -.fbBtnPressed {
                                  -    background: #ECEBE3;
                                  -    padding: 3px 6px 2px 7px !important;
                                  -    margin: 1px 0 0 1px;
                                  -    _margin: 1px -1px 0 1px;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -html, body {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -body {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;    
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    position: fixed;
                                  -    overflow: hidden;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    position: absolute;
                                  -    z-index: 5;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    top: 27px;
                                  -    position: absolute;
                                  -    z-index: 8;
                                  -    width: 100%;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 4px 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    display: block;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    background: url(sprite.png) 0 -135px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    float: left;
                                  -    padding: 4px 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 8px 4px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbToolbarButtons a:hover {
                                  -    color: #333;
                                  -    padding: 3px 7px 3px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    position: relative;
                                  -    top: 5px;
                                  -    line-height: 19px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator{
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 10px 6px 0 0;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbStatusBar span {
                                  -    color: #808080;
                                  -    padding: 0 4px 0 0;
                                  -}
                                  -
                                  -.fbStatusBar span a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar span a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    _width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 255px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 10px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    padding-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 7px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -#fbWindowButtons a {
                                  -    font-size: 1px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    display: block;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 9;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -    _width: 6px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 11px Monaco, monospace;
                                  -    float: left;
                                  -    display: inline;
                                  -    position: relative;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -pre.nodeCode {
                                  -    font: 11px Monaco, monospace;
                                  -    margin: 0;
                                  -    padding-left: 10px;
                                  -    overflow: hidden;
                                  -    /*
                                  -    _width: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    white-space: pre;
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/xp/firebug.IE6.css b/tags/firebug1.3a5/skin/xp/firebug.IE6.css
                                  deleted file mode 100644
                                  index 14f8aa87..00000000
                                  --- a/tags/firebug1.3a5/skin/xp/firebug.IE6.css
                                  +++ /dev/null
                                  @@ -1,20 +0,0 @@
                                  -/************************************************************************************************/
                                  -#fbToolbarSearch {
                                  -    background-image: url(search.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.fbErrors {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  -/************************************************************************************************/
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-image: url(warningIcon.gif) !important;
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-image: url(errorIcon.gif) !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/xp/firebug.css b/tags/firebug1.3a5/skin/xp/firebug.css
                                  deleted file mode 100644
                                  index 359f02e6..00000000
                                  --- a/tags/firebug1.3a5/skin/xp/firebug.css
                                  +++ /dev/null
                                  @@ -1,2746 +0,0 @@
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Loose */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*
                                  -.netInfoResponseHeadersTitle, netInfoResponseHeadersBody {
                                  -    display: none;
                                  -}
                                  -/**/
                                  -
                                  -/* IE6 need a separated rule, otherwise it will not recognize it */
                                  -.collapsed {
                                  -    display: none;
                                  -}
                                  -
                                  -[collapsed="true"] {
                                  -    display: none;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Net */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-net {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.netTable {
                                  -    width: 100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.hideCategory-undefined .category-undefined,
                                  -.hideCategory-html .category-html,
                                  -.hideCategory-css .category-css,
                                  -.hideCategory-js .category-js,
                                  -.hideCategory-image .category-image,
                                  -.hideCategory-xhr .category-xhr,
                                  -.hideCategory-flash .category-flash,
                                  -.hideCategory-txt .category-txt,
                                  -.hideCategory-bin .category-bin {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netHeadRow {
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netHeadCol {
                                  -    border-bottom: 1px solid #CCCCCC;
                                  -    padding: 2px 4px 2px 18px;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netHeadLabel {
                                  -    white-space: nowrap;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Header for Net panel table */
                                  -
                                  -.netHeaderRow {
                                  -    height: 16px;
                                  -}
                                  -
                                  -.netHeaderCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netHeaderRow > .netHeaderCell:first-child > .netHeaderCellBox {
                                  -    padding: 2px 14px 2px 18px;
                                  -}
                                  -
                                  -.netHeaderCellBox {
                                  -    padding: 2px 14px 2px 10px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.netHeaderCell:hover:active {
                                  -    background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted {
                                  -    background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;
                                  -}
                                  -
                                  -.netHeaderSorted > .netHeaderCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;
                                  -}
                                  -
                                  -.netHeaderSorted.sortedAscending > .netHeaderCellBox {
                                  -    background-image: url(chrome://firebug/skin/arrowUp.png);
                                  -}
                                  -
                                  -.netHeaderSorted:hover:active {
                                  -    background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Breakpoints */
                                  -
                                  -.panelNode-net .netRowHeader {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRowHeader {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    height: 15px;
                                  -    margin-right: 0 !important;
                                  -}
                                  -
                                  -/* Display brekpoint disc */
                                  -.netRow .netRowHeader {
                                  -    background-position: 5px 1px;
                                  -}
                                  -
                                  -.netRow[breakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpoint.png);
                                  -}
                                  -
                                  -.netRow[breakpoint="true"][disabledBreakpoint="true"] .netRowHeader {
                                  -    background-image: url(chrome://firebug/skin/breakpointDisabled.png);
                                  -}
                                  -
                                  -.netRow.category-xhr:hover .netRowHeader {
                                  -    background-color: #F6F6F6;
                                  -}
                                  -
                                  -#netBreakpointBar {
                                  -    max-width: 38px;
                                  -}
                                  -
                                  -#netHrefCol > .netHeaderCellBox {
                                  -    border-left: 0px;
                                  -}
                                  -
                                  -.netRow .netRowHeader {
                                  -    width: 3px;
                                  -}
                                  -
                                  -.netInfoRow .netRowHeader {
                                  -    display: table-cell;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Column visibility */
                                  -
                                  -.netTable[hiddenCols~=netHrefCol] TD[id="netHrefCol"],
                                  -.netTable[hiddenCols~=netHrefCol] TD.netHrefCol,
                                  -.netTable[hiddenCols~=netStatusCol] TD[id="netStatusCol"],
                                  -.netTable[hiddenCols~=netStatusCol] TD.netStatusCol,
                                  -.netTable[hiddenCols~=netDomainCol] TD[id="netDomainCol"],
                                  -.netTable[hiddenCols~=netDomainCol] TD.netDomainCol,
                                  -.netTable[hiddenCols~=netSizeCol] TD[id="netSizeCol"],
                                  -.netTable[hiddenCols~=netSizeCol] TD.netSizeCol,
                                  -.netTable[hiddenCols~=netTimeCol] TD[id="netTimeCol"],
                                  -.netTable[hiddenCols~=netTimeCol] TD.netTimeCol {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netRow {
                                  -    background: LightYellow;
                                  -}
                                  -
                                  -.netRow.loaded {
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.netRow.loaded:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netCol {
                                  -    padding: 0;
                                  -    vertical-align: top;
                                  -    border-bottom: 1px solid #EFEFEF;
                                  -    white-space: nowrap;
                                  -    height: 17px;
                                  -}
                                  -
                                  -.netLabel {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netStatusCol {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.responseError > .netStatusCol {
                                  -    color: red;
                                  -}
                                  -
                                  -.netDomainCol {
                                  -    padding-left: 5px;
                                  -}
                                  -
                                  -.netSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netHrefLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    padding-left: 18px;
                                  -    padding-top: 1px;
                                  -    max-width: 15%;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netFullHrefLabel {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    padding-right: 10px;
                                  -    padding-bottom: 3px;
                                  -    max-width: 100%;
                                  -    background: #FFFFFF;
                                  -    z-index: 200;
                                  -}
                                  -
                                  -.netHrefCol:hover > .netFullHrefLabel {
                                  -    display: block;
                                  -}
                                  -
                                  -.netRow.loaded:hover .netCol > .netFullHrefLabel {
                                  -    background-color: #EFEFEF;
                                  -}
                                  -
                                  -.useA11y .a11yShowFullLabel {
                                  -    display: block;
                                  -    background-image: none !important;
                                  -    border: 1px solid #CBE087;
                                  -    background-color: LightYellow;
                                  -    font-family: Monaco, monospace;
                                  -    color: #000000;
                                  -    font-size: 10px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.netSizeLabel {
                                  -    padding-left: 6px;
                                  -}
                                  -
                                  -.netStatusLabel,
                                  -.netDomainLabel,
                                  -.netSizeLabel,
                                  -.netBar {
                                  -    padding: 1px 0 2px 0 !important;
                                  -}
                                  -
                                  -.responseError {
                                  -    color: red;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.hasHeaders .netHrefLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLoadingIcon {
                                  -    position: absolute;
                                  -    border: 0;
                                  -    margin-left: 14px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    background: transparent no-repeat 0 0;
                                  -    background-image: url(chrome://firebug/skin/loading_16.gif);
                                  -    display:inline-block;
                                  -}
                                  -
                                  -.loaded .netLoadingIcon {
                                  -    display: none;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netBar, .netSummaryBar {
                                  -    position: relative;
                                  -    border-right: 50px solid transparent;
                                  -}
                                  -
                                  -.netResolvingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResolving.gif) repeat-x;
                                  -    z-index:60;
                                  -}
                                  -
                                  -.netConnectingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarConnecting.gif) repeat-x;
                                  -    z-index:50;
                                  -}
                                  -
                                  -.netBlockingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarWaiting.gif) repeat-x;
                                  -    z-index:40;
                                  -}
                                  -
                                  -.netSendingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarSending.gif) repeat-x;
                                  -    z-index:30;
                                  -}
                                  -
                                  -.netWaitingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #FFFFFF url(chrome://firebug/skin/netBarResponded.gif) repeat-x;
                                  -    z-index:20;
                                  -    min-width: 1px;
                                  -}
                                  -
                                  -.netReceivingBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    background: #38D63B url(chrome://firebug/skin/netBarLoading.gif) repeat-x;
                                  -    z-index:10;
                                  -}
                                  -
                                  -.netWindowLoadBar,
                                  -.netContentLoadBar {
                                  -    position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    bottom: 0;
                                  -    width: 1px;
                                  -    background-color: red;
                                  -    z-index: 70;
                                  -    opacity: 0.5;
                                  -    display: none;
                                  -    margin-bottom:-1px;
                                  -}
                                  -
                                  -.netContentLoadBar {
                                  -    background-color: Blue;
                                  -}
                                  -
                                  -.netTimeLabel {
                                  -    -moz-box-sizing: padding-box;
                                  -    position: absolute;
                                  -    top: 1px;
                                  -    left: 100%;
                                  -    padding-left: 6px;
                                  -    color: #444444;
                                  -    min-width: 16px;
                                  -}
                                  -
                                  -/*
                                  - * Timing info tip is reusing net timeline styles to display the same
                                  - * colors for individual request phases. Notice that the info tip must
                                  - * respect also loaded and fromCache styles that also modify the
                                  - * actual color. These are used both on the same element in case
                                  - * of the tooltip.
                                  - */
                                  -.loaded .netReceivingBar,
                                  -.loaded.netReceivingBar {
                                  -    background: #B6B6B6 url(chrome://firebug/skin/netBarLoaded.gif) repeat-x;
                                  -    border-color: #B6B6B6;
                                  -}
                                  -
                                  -.fromCache .netReceivingBar,
                                  -.fromCache.netReceivingBar {
                                  -    background: #D6D6D6 url(chrome://firebug/skin/netBarCached.gif) repeat-x;
                                  -    border-color: #D6D6D6;
                                  -}
                                  -
                                  -.netSummaryRow .netTimeLabel,
                                  -.loaded .netTimeLabel {
                                  -    background: transparent;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Time Info tip */
                                  -
                                  -.timeInfoTip {
                                  -    width: 150px; 
                                  -    height: 40px
                                  -}
                                  -
                                  -.timeInfoTipBar,
                                  -.timeInfoTipEventBar {
                                  -    position: relative;
                                  -    display: block;
                                  -    margin: 0;
                                  -    opacity: 1;
                                  -    height: 15px;
                                  -    width: 4px;
                                  -}
                                  -
                                  -.timeInfoTipEventBar {
                                  -    width: 1px !important;
                                  -}
                                  -
                                  -.timeInfoTipCell.startTime {
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -.timeInfoTipCell.elapsedTime {
                                  -    text-align: right;
                                  -    padding-right: 8px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Size Info tip */
                                  -
                                  -.sizeInfoLabelCol {
                                  -    font-weight: bold;
                                  -    padding-right: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.sizeInfoSizeCol {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.sizeInfoDetailCol {
                                  -    color: gray;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sizeInfoDescCol {
                                  -    font-style: italic;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Summary */
                                  -
                                  -.netSummaryRow .netReceivingBar {
                                  -    background: #BBBBBB;
                                  -    border: none;
                                  -}
                                  -
                                  -.netSummaryLabel {
                                  -    color: #222222;
                                  -}
                                  -
                                  -.netSummaryRow {
                                  -    background: #BBBBBB !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.netSummaryRow .netBar {
                                  -    border-right-color: #BBBBBB;
                                  -}
                                  -
                                  -.netSummaryRow > .netCol {
                                  -    border-top: 1px solid #999999;
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netSummaryRow > .netHrefCol:hover {
                                  -    background: transparent !important;
                                  -}
                                  -
                                  -.netCountLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netTotalSizeCol {
                                  -    text-align: right;
                                  -    padding-right: 10px;
                                  -}
                                  -
                                  -.netTotalTimeCol {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.netCacheSizeLabel {
                                  -    position: absolute;
                                  -    z-index: 1000;
                                  -    left: 0;
                                  -    top: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netLimitRow {
                                  -    background: rgb(255, 255, 225) !important;
                                  -    font-weight:normal;
                                  -    color: black;
                                  -    font-weight:normal;
                                  -}
                                  -
                                  -.netLimitLabel {
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.netLimitRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    vertical-align: middle !important;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.netLimitButton {
                                  -    font-size: 11px;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netInfoCol {
                                  -    border-top: 1px solid #EEEEEE;
                                  -    background: url(chrome://firebug/skin/group.gif) repeat-x #FFFFFF;
                                  -}
                                  -
                                  -.netInfoBody {
                                  -    margin: 10px 0 4px 10px;
                                  -}
                                  -
                                  -.netInfoTabs {
                                  -    position: relative;
                                  -    padding-left: 17px;
                                  -}
                                  -
                                  -.netInfoTab {
                                  -    position: relative;
                                  -    top: -3px;
                                  -    margin-top: 10px;
                                  -    padding: 4px 6px;
                                  -    border: 1px solid transparent;
                                  -    border-bottom: none;
                                  -    _border: none;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/*.netInfoTab:hover {
                                  -    cursor: pointer;
                                  -}*/
                                  -
                                  -/* replaced by .netInfoTabSelected for IE6 support
                                  -.netInfoTab[selected="true"] {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -.netInfoTabSelected {
                                  -    cursor: default !important;
                                  -    border: 1px solid #D7D7D7 !important;
                                  -    border-bottom: none !important;
                                  -    -moz-border-radius: 4px 4px 0 0;
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-netInfo.error .netInfoTitle {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-netInfo.loading .netInfoResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -.loading .netInfoResponseHeadersTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.netInfoResponseSizeLimit {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    padding-top: 10px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.netInfoText {
                                  -    display: none;
                                  -    margin: 0;
                                  -    border: 1px solid #D7D7D7;
                                  -    border-right: none;
                                  -    padding: 8px;
                                  -    background-color: #FFFFFF;
                                  -    font-family: Monaco, monospace;
                                  -    /* white-space: pre; */
                                  -    /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
                                  -}
                                  -
                                  -/* replaced by .netInfoTextSelected for IE6 support 
                                  -.netInfoText[selected="true"] {
                                  -    display: block;
                                  -}
                                  -/**/
                                  -.netInfoTextSelected {
                                  -    display: block;
                                  -}
                                  -
                                  -.netInfoParamName {
                                  -    padding: 0 10px 0 0;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    vertical-align: top;
                                  -    text-align: right;
                                  -    white-space: nowrap;
                                  -}
                                  -
                                  -.netInfoParamValue {
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoHeadersText,
                                  -.netInfoPostText,
                                  -.netInfoPutText {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.netInfoHeadersGroup,
                                  -.netInfoPostParams,
                                  -.netInfoPostSource {
                                  -    margin-bottom: 4px;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding-top: 8px;
                                  -    padding-bottom: 2px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.netInfoPostParamsTable,
                                  -.netInfoPostPartsTable,
                                  -.netInfoPostJSONTable,
                                  -.netInfoPostXMLTable,
                                  -.netInfoPostSourceTable {
                                  -    margin-bottom: 10px;
                                  -    width: 100%;
                                  -}
                                  -
                                  -.netInfoPostContentType {
                                  -    color: #bdbdbd;
                                  -    padding-left: 50px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netInfoHtmlPreview {
                                  -    border: 0;
                                  -    width: 100%;
                                  -    height:100%;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/* Request & Response Headers */
                                  -
                                  -.netHeadersViewSource {
                                  -    color: #bdbdbd;
                                  -    margin-left: 200px;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.netHeadersViewSource:hover {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow,
                                  -.netPageSeparatorRow {
                                  -    background: rgb(229, 229, 229) !important;
                                  -    font-weight: normal;
                                  -    color: black;
                                  -}
                                  -
                                  -.netActivationLabel {
                                  -    background: url(chrome://firebug/skin/infoIcon.png) no-repeat 3px 2px;
                                  -    padding-left: 22px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netPageSeparatorRow {
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageSeparatorLabel {
                                  -    padding-left: 22px;
                                  -    height: 5px !important;
                                  -}
                                  -
                                  -.netPageRow {
                                  -    background-color: rgb(255, 255, 255);
                                  -}
                                  -
                                  -.netPageRow:hover {
                                  -    background: #EFEFEF;
                                  -}
                                  -
                                  -.netPageLabel {
                                  -    padding: 1px 0 2px 18px !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.netActivationRow > .netCol {
                                  -    border-bottom: 2px solid;
                                  -    -moz-border-bottom-colors: #EFEFEF #999999;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .a11yFocus:focus,
                                  -.useA11y .panelNode-net .focusRow:focus {
                                  -    outline-offset: -2px;
                                  -    background-color: #FFFFD6 !important;
                                  -}
                                  -
                                  -.useA11y .panelNode-net .netHeaderCell:focus,
                                  -.useA11y .panelNode-net :focus .netHeaderCell,
                                  -.useA11y .panelNode-net :focus .netReceivingBar,
                                  -.useA11y .netSummaryRow :focus .netBar,
                                  -.useA11y .netSummaryRow:focus .netBar {
                                  -    background-color: #FFFFD6;
                                  -    background-image: none;
                                  -    border-color: #FFFFD6;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Windows */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -/* Twisties */
                                  -
                                  -/* IE6 has problems with > operator, and multiple classes */
                                  -/*.twisty,
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  - /* avoid rule not being parsed IE6 */
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logGroupLabel,
                                  -.hasChildren .memberLabelCell .memberLabel,
                                  -.hasHeaders .netHrefLabel {
                                  -    background-image: url(tree_open.gif);
                                  -    background-repeat: no-repeat;
                                  -    background-position: 2px 2px;
                                  -}
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty.opened > .errorTitle,
                                  -/* avoid rule not being parsed IE6 */
                                  -.opened .spyHead .spyTitle,
                                  -.opened .logGroupLabel, 
                                  -.opened .memberLabelCell .memberLabel/*,
                                  -.nodeBox.highlightOpen > .nodeLabel > .twisty,
                                  -.nodeBox.open > .nodeLabel > .twisty,
                                  -.netRow.opened > .netCol > .netHrefLabel /* avoid rule not being parsed IE6 */ {
                                  -    background-image: url(tree_close.gif);
                                  -}
                                  -
                                  -.twisty {
                                  -    background-position: 2px 0;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* Console */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-console {
                                  -    overflow-x: hidden;
                                  -}
                                  -
                                  -.objectLink {
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -.objectLink:hover {
                                  -    cursor: pointer;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.logRow {
                                  -    position: relative;
                                  -    margin: 0;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    background-color: #FFFFFF;
                                  -    overflow: hidden !important; /* IE need this to avoid disappearing bug with collapsed logs */
                                  -}
                                  -
                                  -.useA11y .logRow:focus {
                                  -    border-bottom: 1px solid #000000 !important;
                                  -    outline: none !important;
                                  -    background-color: #FFFFAD !important;
                                  -}
                                  -
                                  -.useA11y .logRow:focus a.objectLink-sourceLink {
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .a11yFocus:focus, .useA11y .objectBox:focus {
                                  -    outline: 2px solid #FF9933;
                                  -    background-color: #FFFFAD;
                                  -}
                                  -
                                  -.useA11y .objectBox-null:focus, .useA11y .objectBox-undefined:focus{
                                  -    background-color: #888888 !important;
                                  -}
                                  -
                                  -.useA11y .logGroup.opened > .logRow {
                                  -    border-bottom: 1px solid #ffffff;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding: 0 !important;
                                  -    border: none !important;
                                  -}
                                  -
                                  -.logGroupBody {
                                  -    display: none;
                                  -    margin-left: 16px;
                                  -    border-left: 1px solid #D7D7D7;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    background: #FFFFFF;
                                  -}
                                  -
                                  -.logGroup > .logRow {
                                  -    background-color: transparent !important;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.logGroup.opened > .logRow {
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup.opened > .logGroupBody {
                                  -    display: block;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-command > .objectBox-text {
                                  -    font-family: Monaco, monospace;
                                  -    color: #0000FF;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-warn,
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-left: 22px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 4px 2px;
                                  -}
                                  -
                                  -.logRow-assert,
                                  -.logRow-warningMessage,
                                  -.logRow-errorMessage {
                                  -    padding-top: 0;
                                  -    padding-bottom: 0;
                                  -}
                                  -
                                  -.logRow-info,
                                  -.logRow-info .objectLink-sourceLink {
                                  -    background-color: #FFFFFF;
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage,
                                  -.logRow-warn .objectLink-sourceLink,
                                  -.logRow-warningMessage .objectLink-sourceLink {
                                  -    background-color: cyan;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage,
                                  -.logRow-error .objectLink-sourceLink,
                                  -.logRow-errorMessage .objectLink-sourceLink {
                                  -    background-color: LightYellow;
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    /*background-image: url(chrome://firebug/skin/infoIcon.png);*/
                                  -}
                                  -
                                  -.logRow-warn,
                                  -.logRow-warningMessage {
                                  -    /*background-image: url(chrome://firebug/skin/warningIcon.png);*/
                                  -}
                                  -
                                  -.logRow-error,
                                  -.logRow-assert,
                                  -.logRow-errorMessage {
                                  -    /*background-image: url(chrome://firebug/skin/errorIcon.png);*/
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectLink-textNode {
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectBox-number,
                                  -.objectLink-styleRule,
                                  -.objectLink-element,
                                  -.objectLink-textNode {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: #FF0000;
                                  -}
                                  -
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile  {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-null,
                                  -.objectBox-undefined {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-exception {
                                  -    padding: 0 2px 0 18px;
                                  -    /*background: url(chrome://firebug/skin/errorIcon-sm.png) no-repeat 0 0;*/
                                  -    color: red;
                                  -}
                                  -
                                  -.objectLink-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.errorTitle {
                                  -    margin-top: 0px;
                                  -    margin-bottom: 1px;
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.errorTrace {
                                  -    margin-left: 17px;
                                  -}
                                  -
                                  -.errorSourceBox {
                                  -    margin: 2px 0;
                                  -}
                                  -
                                  -.errorSource-none {
                                  -    display: none;
                                  -}
                                  -
                                  -.errorSource-syntax > .errorBreak {
                                  -    visibility: hidden;
                                  -}
                                  -
                                  -.errorSource {
                                  -    cursor: pointer;
                                  -    font-family: Monaco, monospace;
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.errorSource:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -.errorBreak {
                                  -    cursor: pointer;
                                  -    display: none;
                                  -    margin: 0 6px 0 0;
                                  -    width: 13px;
                                  -    height: 14px;
                                  -    vertical-align: bottom;
                                  -    /*background: url(chrome://firebug/skin/breakpoint.png) no-repeat;*/
                                  -    opacity: 0.1;
                                  -}
                                  -
                                  -.hasBreakSwitch .errorBreak {
                                  -    display: inline;
                                  -}
                                  -
                                  -.breakForError .errorBreak {
                                  -    opacity: 1;
                                  -}
                                  -
                                  -.assertDescription {
                                  -    margin: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    color: #000000;
                                  -}
                                  -
                                  -.logRow-profile > .logRow > .objectBox-text:last-child {
                                  -    color: #555555;
                                  -    font-style: italic;
                                  -}
                                  -
                                  -.logRow-profile.opened > .logRow {
                                  -    padding-bottom: 4px;
                                  -}
                                  -
                                  -.profilerRunning > .logRow {
                                  -    /*background: transparent url(chrome://firebug/skin/loading_16.gif) no-repeat 2px 0 !important;*/
                                  -    padding-left: 22px !important;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.profileSizer {
                                  -    width:100%;
                                  -    overflow-x:auto;
                                  -    overflow-y: scroll;
                                  -}
                                  -
                                  -.profileTable {
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 0 0 4px 0;
                                  -}
                                  -
                                  -.profileTable tr[odd="1"] {
                                  -    background-color: #F5F5F5;
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable a {
                                  -    vertical-align:middle;
                                  -}
                                  -
                                  -.profileTable td {
                                  -    padding: 1px 4px 0 4px;
                                  -}
                                  -
                                  -.headerCell {
                                  -    cursor: pointer;
                                  -    -moz-user-select: none;
                                  -    border-bottom: 1px solid #9C9C9C;
                                  -    padding: 0 !important;
                                  -    font-weight: bold;
                                  -    /*background: #BBBBBB url(chrome://firebug/skin/tableHeader.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerCellBox {
                                  -    padding: 2px 4px;
                                  -    border-left: 1px solid #D9D9D9;
                                  -    border-right: 1px solid #9C9C9C;
                                  -}
                                  -
                                  -.headerCell:hover:active {
                                  -    /*background: #959595 url(chrome://firebug/skin/tableHeaderActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted {
                                  -    /*background: #7D93B2 url(chrome://firebug/skin/tableHeaderSorted.gif) repeat-x;*/
                                  -}
                                  -
                                  -.headerSorted > .headerCellBox {
                                  -    border-right-color: #6B7C93;
                                  -    /*background: url(chrome://firebug/skin/arrowDown.png) no-repeat right;*/
                                  -}
                                  -
                                  -.headerSorted.sortedAscending > .headerCellBox {
                                  -    /*background-image: url(chrome://firebug/skin/arrowUp.png);*/
                                  -}
                                  -
                                  -.headerSorted:hover:active {
                                  -    /*background: #536B90 url(chrome://firebug/skin/tableHeaderSortedActive.gif) repeat-x;*/
                                  -}
                                  -
                                  -.linkCell {
                                  -    text-align: right;
                                  -}
                                  -
                                  -.linkCell > .objectLink-sourceLink {
                                  -    position: static;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-stackTrace {
                                  -    padding-top: 0;
                                  -}
                                  -
                                  -.logRow-stackTrace > .objectBox-stackFrame {
                                  -    position: relative;
                                  -    padding-top: 2px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.objectLink-object {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: DarkGreen;
                                  -    white-space: pre-wrap;
                                  -}
                                  -
                                  -.objectPropValue {
                                  -    font-weight: normal;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.selectorTag,
                                  -.selectorId,
                                  -.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -.selectorHidden > .selectorTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.selectorHidden > .selectorId {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.selectorHidden > .selectorClass {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectorValue {
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-style: italic;
                                  -    color: #555555;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.panelNode.searching .logRow {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow.matched {
                                  -    display: block !important;
                                  -}
                                  -
                                  -.logRow.matching {
                                  -    position: absolute;
                                  -    left: -1000px;
                                  -    top: -1000px;
                                  -    max-width: 0;
                                  -    max-height: 0;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket,
                                  -.arrayComma {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.arrayLeftBracket,
                                  -.arrayRightBracket {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.arrayLeftBracket {
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -.arrayRightBracket {
                                  -    margin-left: 4px;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-dir {
                                  -    padding: 0;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -/*
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup > .logRow 
                                  -*/
                                  -.logRow-errorMessage .hasTwisty .errorTitle,
                                  -.logRow-spy .spyHead .spyTitle,
                                  -.logGroup .logRow {
                                  -    cursor: pointer;
                                  -    padding-left: 18px;
                                  -    background-repeat: no-repeat;
                                  -    background-position: 3px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle {
                                  -    background-position: 2px 3px;
                                  -}
                                  -
                                  -.logRow-errorMessage > .hasTwisty > .errorTitle:hover,
                                  -.logRow-spy .spyHead .spyTitle:hover,
                                  -.logGroup > .logRow:hover {
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/*****************************************************************************************/
                                  -
                                  -.logRow-spy {
                                  -    padding: 0 !important;
                                  -}
                                  -
                                  -.logRow-spy,
                                  -.logRow-spy .objectLink-sourceLink {
                                  -    background: url(group.gif) repeat-x #FFFFFF;
                                  -    padding-right: 4px;
                                  -    right: 0;
                                  -}
                                  -
                                  -.logRow-spy.opened {
                                  -    padding-bottom: 4px;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.spyTitle {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -    -moz-box-sizing: padding-box;
                                  -    overflow: hidden;
                                  -    z-index: 100;
                                  -    padding-left: 18px;
                                  -}
                                  -
                                  -.spyCol {
                                  -    padding: 0;
                                  -    white-space: nowrap;
                                  -    height: 16px;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .objectLink-sourceLink,
                                  -.spyTitleCol:hover > .spyTime,
                                  -.spyTitleCol:hover > .spyStatus,
                                  -.spyTitleCol:hover > .spyTitle {
                                  -    display: none;
                                  -}
                                  -
                                  -.spyFullTitle {
                                  -    display: none;
                                  -    -moz-user-select: none;
                                  -    max-width: 100%;
                                  -    background-color: Transparent;
                                  -}
                                  -
                                  -.spyTitleCol:hover > .spyFullTitle {
                                  -    display: block;
                                  -}
                                  -
                                  -.spyStatus {
                                  -    padding-left: 10px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyTime {
                                  -    margin-left:4px;
                                  -    margin-right:4px;
                                  -    color: rgb(128, 128, 128);
                                  -}
                                  -
                                  -.spyIcon {
                                  -    margin-right: 4px;
                                  -    margin-left: 4px;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    vertical-align: middle;
                                  -    background: transparent no-repeat 0 0;
                                  -    display: none;
                                  -}
                                  -
                                  -.loading .spyHead .spyRow .spyIcon {
                                  -    background-image: url(loading_16.gif);
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.loaded:not(.error) .spyHead .spyRow .spyIcon {
                                  -    width: 0;
                                  -    margin: 0;
                                  -}
                                  -
                                  -.logRow-spy.error .spyHead .spyRow .spyIcon {
                                  -    background-image: url(errorIcon-sm.png);
                                  -    display: block;
                                  -    background-position: 2px 2px;
                                  -}
                                  -
                                  -.logRow-spy .spyHead .netInfoBody {
                                  -    display: none;
                                  -}
                                  -
                                  -.logRow-spy.opened .spyHead .netInfoBody {
                                  -    margin-top: 10px;
                                  -    display: block;
                                  -}
                                  -
                                  -.logRow-spy.error .spyTitle,
                                  -.logRow-spy.error .spyStatus,
                                  -.logRow-spy.error .spyTime {
                                  -    color: red;
                                  -}
                                  -
                                  -.logRow-spy.loading .spyResponseText {
                                  -    font-style: italic;
                                  -    color: #888888;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -
                                  -.caption {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #444444;
                                  -}
                                  -
                                  -.warning {
                                  -    padding: 10px;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-weight: bold;
                                  -    color:  #888888;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* DOM */
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -
                                  -
                                  -/* See license.txt for terms of usage */
                                  -
                                  -.panelNode-dom {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -.domTable {
                                  -    font-size: 1em;
                                  -    width: 100%;
                                  -    table-layout: fixed;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.domTableIE {
                                  -    width: auto;
                                  -}
                                  -
                                  -.memberLabelCell {
                                  -    padding: 2px 0 2px 0;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.memberValueCell {
                                  -    padding: 1px 0 1px 5px;
                                  -    display: block;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -.memberLabel {
                                  -    display: block;
                                  -    cursor: default;
                                  -    -moz-user-select:  none;
                                  -    overflow: hidden;
                                  -    /*position: absolute;*/
                                  -    padding-left: 18px;
                                  -    /*max-width: 30%;*/
                                  -    /*white-space: nowrap;*/
                                  -    background-color: #FFFFFF;
                                  -    text-decoration: none;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.memberRow.hasChildren .memberLabelCell .memberLabel:hover {
                                  -    cursor: pointer;
                                  -    color: blue;
                                  -    text-decoration: underline;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.userLabel {
                                  -    color: #000000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userClassLabel {
                                  -    color: #E90000;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.userFunctionLabel {
                                  -    color: #025E2A;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.domLabel {
                                  -    color: #000000;
                                  -}
                                  -
                                  -.domFunctionLabel {
                                  -    color: #025E2A;
                                  -}
                                  -
                                  -.ordinalLabel {
                                  -    color: SlateBlue;
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -.scopesRow {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 5px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -.scopesLabel {
                                  -    background-color:  LightYellow;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchEditCell {
                                  -    padding: 2px 18px;
                                  -    background-color: LightYellow;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -    color: #666666;
                                  -}
                                  -
                                  -.editor-watchNewRow,
                                  -.editor-memberRow {
                                  -    font-family: Monaco, monospace !important;
                                  -}
                                  -
                                  -.editor-memberRow {
                                  -    padding: 1px 0 !important;
                                  -}
                                  -
                                  -.editor-watchRow {
                                  -    padding-bottom: 0 !important;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell {
                                  -    font-family: Monaco, monospace;
                                  -    padding-top: 1px;
                                  -    padding-bottom: 1px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell > .memberLabel {
                                  -    background-color: transparent;
                                  -}
                                  -
                                  -.watchRow > .memberValueCell {
                                  -    padding-top: 2px;
                                  -    padding-bottom: 2px;
                                  -}
                                  -
                                  -.watchRow > .memberLabelCell,
                                  -.watchRow > .memberValueCell {
                                  -    background-color: #F5F5F5;
                                  -    border-bottom: 1px solid #BEBEBE;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.watchToolbox {
                                  -    z-index: 2147483647;
                                  -    position: absolute;
                                  -    right: 0;
                                  -    padding: 1px 2px;
                                  -}
                                  -
                                  -
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/*************************************************************************************************/
                                  -/* FROM ORIGINAL FIREBUG */
                                  -
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - CSS Not organized
                                  -*************************************************************************************************/
                                  -#fbConsole {
                                  -    overflow-x: hidden !important;
                                  -}
                                  -
                                  -#fbCSS {
                                  -    font: 1em Monaco, monospace;
                                  -    padding: 0 7px;
                                  -}
                                  -
                                  -#fbCSSButtons select, #fbScriptButtons select {
                                  -    font: 11px Lucida Grande, Tahoma, sans-serif;
                                  -    margin-top: 1px;
                                  -    padding-left: 3px;
                                  -    background: #fafafa;
                                  -    border: 1px inset #fff;
                                  -    width: 220px;
                                  -}
                                  -
                                  -.Selector { margin-top:10px }
                                  -.CSSItem {margin-left: 4% }
                                  -.CSSText { padding-left:20px; }
                                  -.CSSProperty { color:#005500; }
                                  -.CSSValue { padding-left:5px; color:#000088; }
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Not organized
                                  -*************************************************************************************************/
                                  -
                                  -#fbHTMLStatusBar {
                                  -    display: inline;
                                  -}
                                  -
                                  -.fbToolbarButtons {
                                  -    display: none;
                                  -}
                                  -
                                  -.fbStatusSeparator{
                                  -    display: block;
                                  -    float: left;
                                  -    padding-top: 4px;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbToolbarContent {
                                  -    display: block;
                                  -    position: absolute;
                                  -    _position: absolute;
                                  -    top: 0;
                                  -    padding-top: 4px;
                                  -    height: 23px;
                                  -    clip: rect(0, 2048px, 27px, 0);
                                  -}
                                  -
                                  -.fbTabMenuTarget {
                                  -    display: none !important;
                                  -    float: left;
                                  -    width: 10px;
                                  -    height: 10px;
                                  -    margin-top: 6px;
                                  -    background: url(tabMenuTarget.png);   
                                  -}
                                  -
                                  -.fbTabMenuTarget:hover {
                                  -    background: url(tabMenuTargetHover.png);   
                                  -}
                                  -
                                  -.fbShadow {
                                  -    float: left;
                                  -    background: url(shadowAlpha.png) no-repeat bottom right !important;
                                  -    background: url(shadow2.gif) no-repeat bottom right;
                                  -    margin: 10px 0 0 10px !important;
                                  -    margin: 10px 0 0 5px;
                                  -}
                                  -
                                  -.fbShadowContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    background-color: #fff;
                                  -    border: 1px solid #a9a9a9;
                                  -    top: -6px;
                                  -    left: -6px;
                                  -}
                                  -
                                  -.fbMenu {
                                  -    display: none;
                                  -    position: absolute;
                                  -    font-size: 11px;
                                  -    z-index: 2147483647;
                                  -}
                                  -
                                  -.fbMenuContent {
                                  -    padding: 2px;
                                  -}
                                  -
                                  -.fbMenuSeparator {
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 1px 18px 0;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;    
                                  -    background: #ACA899;
                                  -    margin: 4px 0;
                                  -}
                                  -
                                  -.fbMenuOption
                                  -{
                                  -    display: block;
                                  -    position: relative;
                                  -    padding: 2px 18px;
                                  -    text-decoration: none;
                                  -    color: #000;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbMenuOption:hover
                                  -{
                                  -    color: #fff;
                                  -    background: #316AC5;
                                  -}
                                  -
                                  -.fbMenuGroup {
                                  -    background: transparent url(tabMenuPin.png) no-repeat right 0;
                                  -}
                                  -
                                  -.fbMenuGroup:hover {
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuGroupSelected {
                                  -    color: #fff;
                                  -    background: #316AC5 url(tabMenuPin.png) no-repeat right -17px;
                                  -}
                                  -
                                  -.fbMenuChecked  {
                                  -    background: transparent url(tabMenuCheckbox.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuChecked:hover {
                                  -    background: #316AC5 url(tabMenuCheckbox.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuRadioSelected {
                                  -    background: transparent url(tabMenuRadio.png) no-repeat 4px 0;
                                  -}
                                  -
                                  -.fbMenuRadioSelected:hover {
                                  -    background: #316AC5 url(tabMenuRadio.png) no-repeat 4px -17px;
                                  -}
                                  -
                                  -.fbMenuShortcut {
                                  -    padding-right: 85px; 
                                  -}
                                  -
                                  -.fbMenuShortcutKey {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 2px;
                                  -    width: 77px;
                                  -}
                                  -
                                  -#fbFirebugMenu {
                                  -    top: 22px;
                                  -    left: 0;
                                  -}
                                  -
                                  -.fbMenuDisabled {
                                  -    color: #ACA899 !important;
                                  -}
                                  -
                                  -#fbFirebugSettingsMenu {
                                  -    left: 245px;
                                  -    top: 99px;
                                  -}
                                  -
                                  -#fbConsoleMenu {
                                  -    top: 42px;
                                  -    left: 48px;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -}
                                  -
                                  -.fbIconButton {
                                  -    display: block;
                                  -    float: left;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    color: #000;
                                  -    margin-right: 2px;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbIconButton:hover {
                                  -    position: relative;
                                  -    top: -1px;
                                  -    left: -1px;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    color: #333;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbIconPressed {
                                  -    position: relative;
                                  -    margin-right: 0;
                                  -    _margin-right: 1px;
                                  -    top: 0 !important;
                                  -    left: 0 !important;
                                  -    height: 19px;
                                  -    color: #333 !important;
                                  -    border: 1px solid #bbb !important;
                                  -    border-bottom: 1px solid #cfcfcf !important;
                                  -    border-right: 1px solid #ddd !important;
                                  -}
                                  -
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Error Popup
                                  -*************************************************************************************************/
                                  -#fbErrorPopup {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    bottom: 0;
                                  -    height: 19px;
                                  -    width: 75px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    z-index: 999;
                                  -}
                                  -
                                  -#fbErrorPopupContent {
                                  -    position: absolute;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 18px;
                                  -    width: 75px;
                                  -    _width: 74px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbErrorIndicator {
                                  -    position: absolute;
                                  -    top: 2px;
                                  -    right: 5px;
                                  -}
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -
                                  -.fbBtnInspectActive {
                                  -    background: #aaa;
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - General
                                  -*************************************************************************************************/
                                  -.fbBody {
                                  -    margin: 0;
                                  -    padding: 0;
                                  -    overflow: hidden;
                                  -    
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -.clear {
                                  -    clear: both;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Mini Chrome
                                  -*************************************************************************************************/
                                  -#fbMiniChrome {
                                  -    display: none;
                                  -    right: 0;
                                  -    height: 27px;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    margin-left: 1px;
                                  -}
                                  -
                                  -#fbMiniContent {
                                  -    display: block;
                                  -    position: relative;
                                  -    left: -1px;
                                  -    right: 0;
                                  -    top: 1px;
                                  -    height: 25px;
                                  -    border-left: 1px solid #aca899;
                                  -}
                                  -
                                  -#fbToolbarSearch {
                                  -    float: right;
                                  -    border: 1px solid #ccc;
                                  -    margin: 0 5px 0 0;
                                  -    background: #fff url(search.png) no-repeat 4px 2px !important;
                                  -    background: #fff url(search.gif) no-repeat 4px 2px;
                                  -    padding-left: 20px;    
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbToolbarErrors {
                                  -    float: right;
                                  -    margin: 1px 4px 0 0;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbLeftToolbarErrors {
                                  -    float: left;
                                  -    margin: 7px 0px 0 5px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -.fbErrors {
                                  -    padding-left: 20px;
                                  -    height: 14px;
                                  -    background: url(errorIcon.png) no-repeat !important;
                                  -    background: url(errorIcon.gif) no-repeat;
                                  -    color: #f00;
                                  -    font-weight: bold;    
                                  -}
                                  -
                                  -#fbMiniErrors {
                                  -    display: inline;
                                  -    display: none;
                                  -    float: right;
                                  -    margin: 5px 2px 0 5px;
                                  -}
                                  -
                                  -#fbMiniIcon {
                                  -    float: right;
                                  -    margin: 3px 4px 0;
                                  -    height: 20px;
                                  -    width: 20px;
                                  -    float: right;    
                                  -    background: url(sprite.png) 0 -135px;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Master Layout
                                  -*************************************************************************************************/
                                  -#fbChrome {
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    height: 100%;
                                  -    width: 100%;
                                  -    border-collapse: collapse;
                                  -    background: #fff;
                                  -    overflow: hidden;
                                  -}
                                  -
                                  -#fbTop {
                                  -    height: 49px;
                                  -}
                                  -
                                  -#fbToolbar {
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -    height: 27px;
                                  -    font-size: 11px;
                                  -}
                                  -
                                  -#fbPanelBarBox {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    height: 22px;
                                  -}
                                  -
                                  -#fbContent {
                                  -    height: 100%;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -#fbBottom {
                                  -    height: 18px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -/************************************************************************************************
                                  - Sub-Layout 
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar 
                                  -*************************************************************************************************/
                                  -#fbToolbarIcon {
                                  -    float: left;
                                  -    padding: 0 5px 0;
                                  -}
                                  -
                                  -#fbToolbarIcon a {
                                  -    background: url(sprite.png) 0 -135px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -
                                  -#fbToolbarButtons {
                                  -    padding: 0 2px 0 5px;
                                  -}
                                  -/*
                                  -#fbStatusBarBox a {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 5px;
                                  -    margin: 0 0 0 1px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbStatusBarBox a:hover {
                                  -    color: #333;
                                  -    padding: 3px 4px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -/**/
                                  -
                                  -.fbButton {
                                  -    text-decoration: none;
                                  -    display: block;
                                  -    float: left;
                                  -    color: #000;
                                  -    padding: 4px 6px 4px 7px;
                                  -    cursor: default;
                                  -}
                                  -
                                  -.fbButton:hover {
                                  -    color: #333;
                                  -    background: #f5f5ef url(buttonBg.png);
                                  -    padding: 3px 5px 3px 6px;
                                  -    border: 1px solid #fff;
                                  -    border-bottom: 1px solid #bbb;
                                  -    border-right: 1px solid #bbb;
                                  -}
                                  -
                                  -.fbBtnPressed {
                                  -    background: #e3e3db url(buttonBgHover.png) !important;
                                  -    padding: 3px 4px 2px 6px !important;
                                  -    margin: 1px 0 0 1px !important;
                                  -    border: 1px solid #ACA899 !important;
                                  -    border-color: #ACA899 #ECEBE3 #ECEBE3 #ACA899 !important;
                                  -}
                                  -
                                  -#fbStatusBarBox {
                                  -    top: 4px;
                                  -    cursor: default;    
                                  -}
                                  -
                                  -.fbToolbarSeparator {
                                  -    overflow: hidden;
                                  -    border: 1px solid;
                                  -    border-color: transparent #fff transparent #777;
                                  -    _border-color: #eee #fff #eee #777;
                                  -    height: 7px;
                                  -    margin: 6px 3px;
                                  -    float: left;
                                  -}
                                  -
                                  -.fbBtnSelected {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.fbStatusBar {
                                  -    color: #aca899;
                                  -}
                                  -
                                  -.fbStatusBar a {
                                  -    text-decoration: none;
                                  -    color: black;
                                  -}
                                  -
                                  -.fbStatusBar a:hover {
                                  -    color: blue;
                                  -    cursor: pointer;    
                                  -}
                                  -
                                  -
                                  -#fbWindowButtons {
                                  -    position: absolute;
                                  -    white-space: nowrap;
                                  -    right: 0;
                                  -    top: 0;
                                  -    height: 17px;
                                  -    width: 50px;
                                  -    padding: 5px 0 5px 5px;
                                  -    z-index: 6;
                                  -    background: url(sprite.png) #f1f2ee 0 0;
                                  -}
                                  -
                                  -/* fbPanelBarBox
                                  -*************************************************************************************************/
                                  -
                                  -#fbPanelBar1 {
                                  -    width: 1024px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 8;
                                  -    left: 0;
                                  -    white-space: nowrap;
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    left: 4px;
                                  -}
                                  -
                                  -#fbPanelBar2Box {
                                  -    background: url(sprite.png) #dbd9c9 0 -27px;
                                  -    position: absolute;
                                  -    height: 22px;
                                  -    width: 300px; /* fixed width to avoid tabs breaking line */
                                  -    z-index: 9;
                                  -    right: 0;
                                  -}
                                  -
                                  -#fbPanelBar2 {
                                  -    position: absolute;
                                  -    width: 290px; /* fixed width to avoid tabs breaking line */
                                  -    height: 22px;
                                  -    padding-left: 4px;
                                  -}
                                  -
                                  -/* body 
                                  -*************************************************************************************************/
                                  -.fbPanel {
                                  -    display: none;
                                  -}
                                  -
                                  -#fbPanelBox1, #fbPanelBox2 {
                                  -    max-height: inherit;
                                  -    height: 100%;
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanelBox2 {
                                  -    width: 300px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbPanel2 {
                                  -    margin-left: 6px;
                                  -    background: #fff;
                                  -}
                                  -
                                  -#fbLargeCommandLine {
                                  -    display: none;
                                  -    position: absolute;
                                  -    z-index: 9;
                                  -    top: 27px;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 201px;
                                  -    border-width: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 0 2px;
                                  -    resize: none;
                                  -    outline: none;
                                  -    font-size: 11px;
                                  -    overflow: auto;
                                  -    border-top: 1px solid #B9B7AF;
                                  -    _right: -1px;
                                  -    _border-left: 1px solid #fff;
                                  -}
                                  -
                                  -#fbLargeCommandButtons {
                                  -    display: none;
                                  -    background: #ECE9D8;
                                  -    bottom: 0;
                                  -    right: 0;
                                  -    width: 294px;
                                  -    height: 21px;
                                  -    padding-top: 1px;
                                  -    position: absolute;
                                  -    border-top: 1px solid #ACA899;
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon {
                                  -    background: url(down.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 2px;
                                  -    bottom: 3px;
                                  -    
                                  -    z-index: 99;
                                  -}
                                  -
                                  -#fbSmallCommandLineIcon:hover {
                                  -    background: url(downHover.png) no-repeat;
                                  -}
                                  -
                                  -.hide {
                                  -    overflow: hidden !important;
                                  -    position: fixed !important;
                                  -    display: none !important;
                                  -    visibility: hidden !important;
                                  -}
                                  -
                                  -/* fbBottom 
                                  -*************************************************************************************************/
                                  -
                                  -#fbCommand {
                                  -    height: 18px;
                                  -}
                                  -
                                  -#fbCommandBox {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    width: 100%;
                                  -    height: 18px;
                                  -    bottom: 0;
                                  -    overflow: hidden;
                                  -    z-index: 9;
                                  -    background: #fff;
                                  -    border: 0;
                                  -    border-top: 1px solid #ccc;
                                  -}
                                  -
                                  -#fbCommandIcon {
                                  -    position: absolute;
                                  -    color: #00f;
                                  -    top: 2px;
                                  -    left: 6px;
                                  -    display: inline;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbCommandLine {
                                  -    position: absolute;
                                  -    width: 100%;
                                  -    top: 0;
                                  -    left: 0;
                                  -    border: 0;
                                  -    margin: 0;
                                  -    padding: 2px 0 2px 32px;
                                  -    font: 11px Monaco, monospace;
                                  -    z-index: 9;
                                  -    outline: none;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon {
                                  -    background: url(up.png) no-repeat;
                                  -    position: absolute;
                                  -    right: 1px;
                                  -    bottom: 1px;
                                  -    z-index: 10;
                                  -}
                                  -
                                  -#fbLargeCommandLineIcon:hover {
                                  -    background: url(upHover.png) no-repeat;
                                  -}
                                  -
                                  -div.fbFitHeight {
                                  -    overflow: auto;
                                  -    position: relative;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************
                                  - Layout Controls
                                  -*************************************************************************************************/
                                  -
                                  -/* fbToolbar buttons 
                                  -*************************************************************************************************/
                                  -.fbSmallButton {
                                  -    overflow: hidden;
                                  -    width: 16px;
                                  -    height: 16px;
                                  -    display: block;
                                  -    text-decoration: none;
                                  -    cursor: default;
                                  -}
                                  -
                                  -#fbWindowButtons .fbSmallButton {
                                  -    float: right;
                                  -    margin-right: 4px;
                                  -}
                                  -
                                  -#fbWindow_btClose {
                                  -    background: url(sprite.png) 0 -119px;
                                  -}
                                  -
                                  -#fbWindow_btClose:hover {
                                  -    background: url(sprite.png) -16px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach {
                                  -    background: url(sprite.png) -32px -119px;
                                  -}
                                  -
                                  -#fbWindow_btDetach:hover {
                                  -    background: url(sprite.png) -48px -119px;
                                  -}
                                  -
                                  -/* fbPanelBarBox tabs 
                                  -*************************************************************************************************/
                                  -.fbTab {
                                  -    text-decoration: none;
                                  -    display: none;
                                  -    float: left;
                                  -    width: auto;
                                  -    float: left;
                                  -    cursor: default;
                                  -    font-family: Lucida Grande, Tahoma, sans-serif;
                                  -    font-size: 11px;
                                  -    font-weight: bold;
                                  -    height: 22px;
                                  -    color: #565656;
                                  -}
                                  -
                                  -.fbPanelBar span {
                                  -    /*display: block; TODO: safe to remove this? */
                                  -    float: left;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabL,.fbPanelBar .fbTabR {
                                  -    height: 22px;
                                  -    width: 8px;
                                  -}
                                  -
                                  -.fbPanelBar .fbTabText {
                                  -    padding: 4px 1px 0;
                                  -}
                                  -
                                  -a.fbTab:hover {
                                  -    background: url(sprite.png) 0 -73px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabL {
                                  -    background: url(sprite.png) -16px -96px;
                                  -}
                                  -
                                  -a.fbTab:hover .fbTabR {
                                  -    background: url(sprite.png) -24px -96px;
                                  -}
                                  -
                                  -.fbSelectedTab {
                                  -    background: url(sprite.png) #f1f2ee 0 -50px !important;
                                  -    color: #000;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabL {
                                  -    background: url(sprite.png) 0 -96px !important;
                                  -}
                                  -
                                  -.fbSelectedTab .fbTabR {
                                  -    background: url(sprite.png) -8px -96px !important;
                                  -}
                                  -
                                  -/* splitters 
                                  -*************************************************************************************************/
                                  -#fbHSplitter {
                                  -    position: fixed;
                                  -    _position: absolute;
                                  -    left: 0;
                                  -    top: 0;
                                  -    width: 100%;
                                  -    height: 5px;
                                  -    overflow: hidden;
                                  -    cursor: n-resize !important;
                                  -    background: url(pixel_transparent.gif);
                                  -    z-index: 9;
                                  -}
                                  -
                                  -#fbHSplitter.fbOnMovingHSplitter {
                                  -    height: 100%;
                                  -    z-index: 100;
                                  -}
                                  -
                                  -.fbVSplitter {
                                  -    background: #ece9d8;
                                  -    color: #000;
                                  -    border: 1px solid #716f64;
                                  -    border-width: 0 1px;
                                  -    border-left-color: #aca899;
                                  -    width: 4px;
                                  -    cursor: e-resize;
                                  -    overflow: hidden;
                                  -    right: 294px;
                                  -    text-decoration: none;
                                  -    z-index: 10;
                                  -    position: absolute;
                                  -    height: 100%;
                                  -    top: 27px;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -div.lineNo {
                                  -    font: 1em Monaco, monospace;
                                  -    position: absolute;
                                  -    top: 0;
                                  -    left: 0;
                                  -    margin: 0;
                                  -    padding: 0 5px 0 20px;
                                  -    background: #eee;
                                  -    color: #888;
                                  -    border-right: 1px solid #ccc;
                                  -    text-align: right;
                                  -}
                                  -
                                  -.sourceBox {
                                  -    position: absolute;
                                  -}
                                  -
                                  -.sourceCode {
                                  -    font: 1em Monaco, monospace;
                                  -    overflow: hidden;
                                  -    white-space: pre;
                                  -    display: inline;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.nodeControl {
                                  -    margin-top: 3px;
                                  -    margin-left: -14px;
                                  -    float: left;
                                  -    width: 9px;
                                  -    height: 9px;
                                  -    overflow: hidden;
                                  -    cursor: default;
                                  -    background: url(tree_open.gif);
                                  -    _float: none;
                                  -    _display: inline;
                                  -    _position: absolute;
                                  -}
                                  -
                                  -div.nodeMaximized {
                                  -    background: url(tree_close.gif);
                                  -}
                                  -
                                  -div.objectBox-element {
                                  -    padding: 1px 3px;
                                  -}
                                  -.objectBox-selector{
                                  -    cursor: default;
                                  -}
                                  -
                                  -.selectedElement{
                                  -    background: highlight;
                                  -    /* background: url(roundCorner.svg); Opera */
                                  -    color: #fff !important;
                                  -}
                                  -.selectedElement span{
                                  -    color: #fff !important;
                                  -}
                                  -
                                  -/* IE6 need this hack */
                                  -* html .selectedElement {
                                  -    position: relative;
                                  -}
                                  -
                                  -/* Webkit CSS Hack - bug in "highlight" named color */ 
                                  -@media screen and (-webkit-min-device-pixel-ratio:0) {
                                  -    .selectedElement{
                                  -      background: #316AC5;
                                  -      color: #fff !important;
                                  -    }
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/************************************************************************************************/
                                  -.logRow * {
                                  -    font-size: 1em;
                                  -}
                                  -
                                  -/* TODO: remove this? */
                                  -/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to 
                                  -position. if so, override it at chrome.js initialization when creating the div */
                                  -.logRow {
                                  -    position: relative;
                                  -    border-bottom: 1px solid #D7D7D7;
                                  -    padding: 2px 4px 1px 6px;
                                  -    zbackground-color: #FFFFFF;
                                  -}
                                  -/**/
                                  -
                                  -.logRow-command {
                                  -    font-family: Monaco, monospace;
                                  -    color: blue;
                                  -}
                                  -
                                  -.objectBox-string,
                                  -.objectBox-text,
                                  -.objectBox-number,
                                  -.objectBox-function,
                                  -.objectLink-element,
                                  -.objectLink-textNode,
                                  -.objectLink-function,
                                  -.objectBox-stackTrace,
                                  -.objectLink-profile {
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.objectBox-null {
                                  -    padding: 0 2px;
                                  -    border: 1px solid #666666;
                                  -    background-color: #888888;
                                  -    color: #FFFFFF;
                                  -}
                                  -
                                  -.objectBox-string {
                                  -    color: red;
                                  -    
                                  -    /* TODO: xxxpedro make long strings break line */
                                  -    /*white-space: pre; */ 
                                  -}
                                  -
                                  -.objectBox-number {
                                  -    color: #000088;
                                  -}
                                  -
                                  -.objectBox-function {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -.objectBox-object {
                                  -    color: DarkGreen;
                                  -    font-weight: bold;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -}
                                  -
                                  -.objectBox-array {
                                  -    color: #000;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.logRow-info,.logRow-error,.logRow-warning {
                                  -    background: #fff no-repeat 2px 2px;
                                  -    padding-left: 20px;
                                  -    padding-bottom: 3px;
                                  -}
                                  -
                                  -.logRow-info {
                                  -    background-image: url(infoIcon.png) !important;
                                  -    background-image: url(infoIcon.gif);
                                  -}
                                  -
                                  -.logRow-warning {
                                  -    background-color: cyan;
                                  -    background-image: url(warningIcon.png) !important;
                                  -    background-image: url(warningIcon.gif);
                                  -}
                                  -
                                  -.logRow-error {
                                  -    background-color: LightYellow;
                                  -    background-image: url(errorIcon.png) !important;
                                  -    background-image: url(errorIcon.gif);
                                  -    color: #f00;
                                  -}
                                  -
                                  -.errorMessage {
                                  -    vertical-align: top;
                                  -    color: #f00;
                                  -}
                                  -
                                  -.objectBox-sourceLink {
                                  -    position: absolute;
                                  -    right: 4px;
                                  -    top: 2px;
                                  -    padding-left: 8px;
                                  -    font-family: Lucida Grande, sans-serif;
                                  -    font-weight: bold;
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -/*
                                  -//TODO: remove this when console2 is finished
                                  -*/
                                  -.logRow-group {
                                  -    background: #EEEEEE;
                                  -    border-bottom: none;
                                  -}
                                  -
                                  -.logGroup {
                                  -    background: #EEEEEE;
                                  -}
                                  -
                                  -.logGroupBox {
                                  -    margin-left: 24px;
                                  -    border-top: 1px solid #D7D7D7;
                                  -    border-left: 1px solid #D7D7D7;
                                  -}/**/
                                  -
                                  -/************************************************************************************************/
                                  -.selectorTag,.selectorId,.selectorClass {
                                  -    font-family: Monaco, monospace;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.selectorTag {
                                  -    color: #0000FF;
                                  -}
                                  -
                                  -.selectorId {
                                  -    color: DarkBlue;
                                  -}
                                  -
                                  -.selectorClass {
                                  -    color: red;
                                  -}
                                  -
                                  -/************************************************************************************************/
                                  -.objectBox-element {
                                  -    font-family: Monaco, monospace;
                                  -    color: #000088;
                                  -}
                                  -
                                  -.nodeChildren {
                                  -    padding-left: 26px;
                                  -}
                                  -
                                  -.nodeTag {
                                  -    color: blue;
                                  -    cursor: pointer;
                                  -}
                                  -
                                  -.nodeValue {
                                  -    color: #FF0000;
                                  -    font-weight: normal;
                                  -}
                                  -
                                  -.nodeText,.nodeComment {
                                  -    margin: 0 2px;
                                  -    vertical-align: top;
                                  -}
                                  -
                                  -.nodeText {
                                  -    color: #333333;
                                  -    font-family: Monaco, monospace;
                                  -}
                                  -
                                  -.nodeComment {
                                  -    color: DarkGreen;
                                  -}
                                  -
                                  -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                                  -
                                  -.nodeHidden, .nodeHidden * {
                                  -    color: #888888;
                                  -}
                                  -
                                  -.nodeHidden .nodeTag {
                                  -    color: #5F82D9;
                                  -}
                                  -
                                  -.nodeHidden .nodeValue {
                                  -    color: #D86060;
                                  -}
                                  -
                                  -.selectedElement .nodeHidden, .selectedElement .nodeHidden * {
                                  -    color: SkyBlue !important;
                                  -}
                                  -
                                  -
                                  -/************************************************************************************************/
                                  -.log-object {
                                  -    /*
                                  -    _position: relative;
                                  -    _height: 100%;
                                  -    /**/
                                  -}
                                  -
                                  -.property {
                                  -    position: relative;
                                  -    clear: both;
                                  -    height: 15px;
                                  -}
                                  -
                                  -.propertyNameCell {
                                  -    vertical-align: top;
                                  -    float: left;
                                  -    width: 28%;
                                  -    position: absolute;
                                  -    left: 0;
                                  -    z-index: 0;
                                  -}
                                  -
                                  -.propertyValueCell {
                                  -    float: right;
                                  -    width: 68%;
                                  -    background: #fff;
                                  -    position: absolute;
                                  -    padding-left: 5px;
                                  -    display: table-cell;
                                  -    right: 0;
                                  -    z-index: 1;
                                  -    /*
                                  -    _position: relative;
                                  -    /**/
                                  -}
                                  -
                                  -.propertyName {
                                  -    font-weight: bold;
                                  -}
                                  -
                                  -.FirebugPopup {
                                  -    height: 100% !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbWindowButtons {
                                  -    display: none !important;
                                  -}
                                  -
                                  -.FirebugPopup #fbHSplitter {
                                  -    display: none !important;
                                  -}
                                  diff --git a/tags/firebug1.3a5/skin/xp/firebug.html b/tags/firebug1.3a5/skin/xp/firebug.html
                                  deleted file mode 100644
                                  index 0b5f8000..00000000
                                  --- a/tags/firebug1.3a5/skin/xp/firebug.html
                                  +++ /dev/null
                                  @@ -1,212 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html>
                                  -<head>
                                  -<meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -<title>Firebug Lite</title>
                                  -<link href="firebug.css" rel="stylesheet" type="text/css" />
                                  -<style>html,body{margin:0;padding:0;overflow:hidden;}</style>
                                  -</head>
                                  -<body class="fbBody">
                                  -<table id="fbChrome" cellpadding="0" cellspacing="0" border="0">
                                  -  <tbody>
                                  -    <tr>
                                  -      <!-- Interface - Top Area -->
                                  -      <td id="fbTop" colspan="2">
                                  -      
                                  -        <!-- 
                                  -        <div>
                                  -          --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- 
                                  -          <input type="text" id="fbToolbarSearch" />
                                  -        </div>
                                  -        -->
                                  -              
                                  -        <!-- Window Buttons -->
                                  -        <div id="fbWindowButtons">
                                  -          <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
                                  -          <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
                                  -        </div>
                                  -        
                                  -        <!-- Toolbar buttons and Status Bar -->
                                  -        <div id="fbToolbar">
                                  -          <div id="fbToolbarContent">
                                  -        
                                  -          <!-- Firebug Button -->
                                  -          <span id="fbToolbarIcon">
                                  -            <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
                                  -          </span>
                                  -          
                                  -          <!-- 
                                  -          <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
                                  -           -->
                                  -           
                                  -          <!-- Toolbar Buttons -->
                                  -          <span id="fbToolbarButtons">
                                  -            <!-- Fixed Toolbar Buttons -->
                                  -            <span id="fbFixedButtons">
                                  -                <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
                                  -            </span>
                                  -            
                                  -            <!-- Console Panel Toolbar Buttons -->
                                  -            <span id="fbConsoleButtons" class="fbToolbarButtons">
                                  -              <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
                                  -            </span>
                                  -            
                                  -            <!-- HTML Panel Toolbar Buttons -->
                                  -            <!-- 
                                  -            <span id="fbHTMLButtons" class="fbToolbarButtons">
                                  -              <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          <!-- Status Bar -->
                                  -          <span id="fbStatusBarBox">
                                  -            <span class="fbToolbarSeparator"></span>
                                  -            <!-- HTML Panel Status Bar -->
                                  -            <!-- 
                                  -            <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
                                  -            </span>
                                  -             -->
                                  -          </span>
                                  -          
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- PanelBars -->
                                  -        <div id="fbPanelBarBox">
                                  -        
                                  -          <!-- Main PanelBar -->
                                  -          <div id="fbPanelBar1" class="fbPanelBar">
                                  -            <a id="fbConsoleTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Console</span>
                                  -                <span class="fbTabMenuTarget"></span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a id="fbHTMLTab" class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">HTML</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">CSS</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Script</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -            <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -            </a>
                                  -          </div>
                                  -
                                  -          <!-- Side PanelBars -->
                                  -          <div id="fbPanelBar2Box" class="hide">
                                  -            <div id="fbPanelBar2" class="fbPanelBar">
                                  -            <!-- 
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Style</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">Layout</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -              <a class="fbTab fbHover">
                                  -                <span class="fbTabL"></span>
                                  -                <span class="fbTabText">DOM</span>
                                  -                <span class="fbTabR"></span>
                                  -              </a>
                                  -           -->
                                  -            </div>
                                  -          </div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Horizontal Splitter -->
                                  -        <div id="fbHSplitter">&nbsp;</div>
                                  -        
                                  -      </td>
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Main Area -->
                                  -    <tr id="fbContent">
                                  -    
                                  -      <!-- Panels  -->
                                  -      <td id="fbPanelBox1">
                                  -        <div id="fbPanel1" class="fbFitHeight">
                                  -          <div id="fbConsole" class="fbPanel"></div>
                                  -          <div id="fbHTML" class="fbPanel"></div>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -      <!-- Side Panel Box -->
                                  -      <td id="fbPanelBox2" class="hide">
                                  -      
                                  -        <!-- VerticalSplitter -->
                                  -        <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
                                  -        
                                  -        <!-- Side Panels -->
                                  -        <div id="fbPanel2" class="fbFitHeight">
                                  -        
                                  -          <!-- HTML Side Panels -->
                                  -          <div id="fbHTML_Style" class="fbPanel"></div>
                                  -          <div id="fbHTML_Layout" class="fbPanel"></div>
                                  -          <div id="fbHTML_DOM" class="fbPanel"></div>
                                  -          
                                  -        </div>
                                  -        
                                  -        <!-- Large Command Line -->
                                  -        <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
                                  -        
                                  -        <!-- Large Command Line Buttons -->
                                  -        <div id="fbLargeCommandButtons">
                                  -            <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
                                  -            <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
                                  -            
                                  -            <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -        
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -    <!-- Interface - Bottom Area -->
                                  -    <tr id="fbBottom" class="hide">
                                  -    
                                  -      <!-- Command Line -->
                                  -      <td id="fbCommand" colspan="2">
                                  -        <div id="fbCommandBox">
                                  -          <div id="fbCommandIcon">&gt;&gt;&gt;</div>
                                  -          <input id="fbCommandLine" name="fbCommandLine" type="text" />
                                  -          <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
                                  -        </div>
                                  -      </td>
                                  -      
                                  -    </tr>
                                  -    
                                  -  </tbody>
                                  -</table> 
                                  -<span id="fbMiniChrome">
                                  -  <span id="fbMiniContent">
                                  -    <span id="fbMiniIcon" title="Open Firebug Lite"></span>
                                  -    <span id="fbMiniErrors" class="fbErrors">2 errors</span>
                                  -  </span>
                                  -</span>
                                  -<!-- 
                                  -<div id="fbErrorPopup">
                                  -  <div id="fbErrorPopupContent">
                                  -    <div id="fbErrorIndicator" class="fbErrors">2 errors</div>
                                  -  </div>
                                  -</div>
                                  - -->
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/skin/xp/firebug.png b/tags/firebug1.3a5/skin/xp/firebug.png
                                  deleted file mode 100644
                                  index e10affeb..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/firebug.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/group.gif b/tags/firebug1.3a5/skin/xp/group.gif
                                  deleted file mode 100644
                                  index 8db97c21..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/group.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/infoIcon.gif b/tags/firebug1.3a5/skin/xp/infoIcon.gif
                                  deleted file mode 100644
                                  index 0618e208..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/infoIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/infoIcon.png b/tags/firebug1.3a5/skin/xp/infoIcon.png
                                  deleted file mode 100644
                                  index da1e5334..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/infoIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/loading_16.gif b/tags/firebug1.3a5/skin/xp/loading_16.gif
                                  deleted file mode 100644
                                  index 085ccaec..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/loading_16.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/pixel_transparent.gif b/tags/firebug1.3a5/skin/xp/pixel_transparent.gif
                                  deleted file mode 100644
                                  index 6865c960..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/pixel_transparent.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/roundCorner.svg b/tags/firebug1.3a5/skin/xp/roundCorner.svg
                                  deleted file mode 100644
                                  index be0291f1..00000000
                                  --- a/tags/firebug1.3a5/skin/xp/roundCorner.svg
                                  +++ /dev/null
                                  @@ -1,6 +0,0 @@
                                  -<?xml version="1.0" encoding="UTF-8"?>
                                  -<svg xmlns="http://www.w3.org/2000/svg">
                                  -  <rect fill="white"  x="0" y="0" width="100%" height="100%" />
                                  -  <rect fill="highlight"  x="0" y="0" width="100%" height="100%" rx="2px"/>
                                  -</svg>
                                  -
                                  diff --git a/tags/firebug1.3a5/skin/xp/search.gif b/tags/firebug1.3a5/skin/xp/search.gif
                                  deleted file mode 100644
                                  index 2a620987..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/search.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/search.png b/tags/firebug1.3a5/skin/xp/search.png
                                  deleted file mode 100644
                                  index fba33b8a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/search.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/shadow.gif b/tags/firebug1.3a5/skin/xp/shadow.gif
                                  deleted file mode 100644
                                  index af7f537e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/shadow.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/shadow2.gif b/tags/firebug1.3a5/skin/xp/shadow2.gif
                                  deleted file mode 100644
                                  index 099cbf35..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/shadow2.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/shadowAlpha.png b/tags/firebug1.3a5/skin/xp/shadowAlpha.png
                                  deleted file mode 100644
                                  index a2561df9..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/shadowAlpha.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/sprite.png b/tags/firebug1.3a5/skin/xp/sprite.png
                                  deleted file mode 100644
                                  index 33d2c4d4..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/sprite.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabHoverLeft.png b/tags/firebug1.3a5/skin/xp/tabHoverLeft.png
                                  deleted file mode 100644
                                  index 0fb24d0c..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabHoverLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabHoverMid.png b/tags/firebug1.3a5/skin/xp/tabHoverMid.png
                                  deleted file mode 100644
                                  index fbccab54..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabHoverMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabHoverRight.png b/tags/firebug1.3a5/skin/xp/tabHoverRight.png
                                  deleted file mode 100644
                                  index 3db0f361..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabHoverRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabLeft.png b/tags/firebug1.3a5/skin/xp/tabLeft.png
                                  deleted file mode 100644
                                  index a6cc9e94..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabLeft.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMenuCheckbox.png b/tags/firebug1.3a5/skin/xp/tabMenuCheckbox.png
                                  deleted file mode 100644
                                  index 4726e622..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMenuCheckbox.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMenuPin.png b/tags/firebug1.3a5/skin/xp/tabMenuPin.png
                                  deleted file mode 100644
                                  index eb4b11ef..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMenuPin.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMenuRadio.png b/tags/firebug1.3a5/skin/xp/tabMenuRadio.png
                                  deleted file mode 100644
                                  index 55b982d7..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMenuRadio.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMenuTarget.png b/tags/firebug1.3a5/skin/xp/tabMenuTarget.png
                                  deleted file mode 100644
                                  index 957bd9f2..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMenuTarget.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMenuTargetHover.png b/tags/firebug1.3a5/skin/xp/tabMenuTargetHover.png
                                  deleted file mode 100644
                                  index 200a3708..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMenuTargetHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabMid.png b/tags/firebug1.3a5/skin/xp/tabMid.png
                                  deleted file mode 100644
                                  index 68986c3b..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tabRight.png b/tags/firebug1.3a5/skin/xp/tabRight.png
                                  deleted file mode 100644
                                  index 50113079..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tabRight.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/titlebarMid.png b/tags/firebug1.3a5/skin/xp/titlebarMid.png
                                  deleted file mode 100644
                                  index 10998ae7..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/titlebarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/toolbarMid.png b/tags/firebug1.3a5/skin/xp/toolbarMid.png
                                  deleted file mode 100644
                                  index aa21dee6..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/toolbarMid.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tree_close.gif b/tags/firebug1.3a5/skin/xp/tree_close.gif
                                  deleted file mode 100644
                                  index e26728ab..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tree_close.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/tree_open.gif b/tags/firebug1.3a5/skin/xp/tree_open.gif
                                  deleted file mode 100644
                                  index edf662f3..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/tree_open.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/up.png b/tags/firebug1.3a5/skin/xp/up.png
                                  deleted file mode 100644
                                  index 2174d03a..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/up.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/upActive.png b/tags/firebug1.3a5/skin/xp/upActive.png
                                  deleted file mode 100644
                                  index 236cf676..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/upActive.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/upHover.png b/tags/firebug1.3a5/skin/xp/upHover.png
                                  deleted file mode 100644
                                  index cd813170..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/upHover.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/warningIcon.gif b/tags/firebug1.3a5/skin/xp/warningIcon.gif
                                  deleted file mode 100644
                                  index 84972788..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/warningIcon.gif and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/skin/xp/warningIcon.png b/tags/firebug1.3a5/skin/xp/warningIcon.png
                                  deleted file mode 100644
                                  index de51084e..00000000
                                  Binary files a/tags/firebug1.3a5/skin/xp/warningIcon.png and /dev/null differ
                                  diff --git a/tags/firebug1.3a5/test/dom.html b/tags/firebug1.3a5/test/dom.html
                                  deleted file mode 100644
                                  index 477ce475..00000000
                                  --- a/tags/firebug1.3a5/test/dom.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.jgz"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L){L=F.createElement('script');L.id='FirebugLite';L.src=B;F.getElementsByTagName('head')[0].appendChild(L);})(document,'http://fbug.googlecode.com/svn/lite/branches/firebug1.3/build/firebug.min.js#remote,trace');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/test/domplate.html b/tags/firebug1.3a5/test/domplate.html
                                  deleted file mode 100644
                                  index 9b9ca26d..00000000
                                  --- a/tags/firebug1.3a5/test/domplate.html
                                  +++ /dev/null
                                  @@ -1,125 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  
                                  -  <script type="text/javascript">
                                  -    var testDomplate = function()
                                  -    {
                                  -      test3();
                                  -    }
                                  -      
                                  -    window.ssonload = function()
                                  -    {
                                  -        var x = "local";
                                  -        eval("x=function(){alert(0)}");
                                  -        alert(x)
                                  -        alert(window.x)
                                  -        x();
                                  -    }    
                                  -    
                                  -    var test1 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.append({}, document.body, template);
                                  -        }    
                                  -    }    
                                  -    
                                  -    var test2 = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.append({object: inputObject}, document.body, template);
                                  -        }    
                                  -    }
                                  -    
                                  -    
                                  -    var test3 = function()
                                  -    {
                                  -        var el = document.getElementById("d2");
                                  -        //el = document.body;
                                  -        
                                  -        with(FBL)
                                  -        {
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                   BUTTON({"class": "green",
                                  -                          checked: "true",
                                  -                          type: "checkbox",
                                  -                          onclick: "$onButtonClick"},
                                  -                       "$object.label"
                                  -                    ),
                                  -            
                                  -                onButtonClick: function(event)
                                  -                {
                                  -                    alert("Hello World!");
                                  -                }
                                  -            });
                                  -            
                                  -            template.tag.insertAfter({object: inputObject}, el, template);
                                  -        }
                                  -    }
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -    
                                  -  </script>
                                  -  <script type="text/javascript" src="../content/firebug.dev.js"></script>
                                  -  
                                  -  <!-- 
                                  -  <script src="../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <script src="zdomplate-1.1a.js" type="text/javascript"></script>
                                  -   -->
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <div id="d1">1</div>
                                  -  <div id="d2">2</div>
                                  -  <div id="d3">3</div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/dom-attributes.html b/tags/firebug1.3a5/test/domplate/dom-attributes.html
                                  deleted file mode 100644
                                  index 907c535f..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/dom-attributes.html
                                  +++ /dev/null
                                  @@ -1,59 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                label: "Click Me!"
                                  -            };
                                  -                        
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                       BUTTON({"class": "green",
                                  -                              checked: "true",
                                  -                              type: "checkbox",
                                  -                              onclick: "$onButtonClick"},
                                  -                           "$object.label"
                                  -                        ),
                                  -
                                  -                    onButtonClick: function(event)
                                  -                    {
                                  -                        alert("Hello World!");
                                  -                    }
                                  -                });
                                  -
                                  -
                                  -            template.tag.replace({object: inputObject}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .green {
                                  -        color:green;
                                  -    }  
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/dom-event.html b/tags/firebug1.3a5/test/domplate/dom-event.html
                                  deleted file mode 100644
                                  index 9fb1a940..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/dom-event.html
                                  +++ /dev/null
                                  @@ -1,52 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                            DIV({onclick: "$handleClick"},
                                  -
                                  -                               "$item"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    handleClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        alert(target.innerHTML);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/dom-properties.html b/tags/firebug1.3a5/test/domplate/dom-properties.html
                                  deleted file mode 100644
                                  index 59649351..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/dom-properties.html
                                  +++ /dev/null
                                  @@ -1,57 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var cars = [
                                  -              {name: "Honda Pilot", price: " $36,820 - $49,920"},
                                  -              {name: "Chevrolet Aveo", price: "$13,270 - $15,770"},
                                  -              {name: "Toyota Corolla", price: " $14,835 - $23,480"}
                                  -            ];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "array",
                                  -                            DIV({_myprop: "$item", onclick: "$onClick"},
                                  -                                "$item.name"
                                  -                            )
                                  -                        ),
                                  -
                                  -                    onClick: function(event)
                                  -                    {
                                  -                        var target = event.target || event.srcElement;
                                  -                        var car = target.myprop;
                                  -                        alert(car.price);
                                  -                    }
                                  -                });
                                  -
                                  -            template.tag.replace({array: cars}, parentNode, template);
                                  -                            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/dynamic-class-attribute.html b/tags/firebug1.3a5/test/domplate/dynamic-class-attribute.html
                                  deleted file mode 100644
                                  index 76030fda..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/dynamic-class-attribute.html
                                  +++ /dev/null
                                  @@ -1,71 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputData = ["Honda", "Chevrolet", "Toyota", "Ford", "Pontiac",
                                  -                "Dodge", "Mazda", "Nissan", "Volkswagen", "Hyundai"];
                                  -
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                DIV(
                                  -                  FOR("brand", "$carBrands",
                                  -                    DIV({"class": "carBrand $brand|getBrandClass",
                                  -                         $myFaforite: "$brand|isMyFavorite"},
                                  -                      "$brand"
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              isMyFavorite: function(brand) {
                                  -                return (brand == "Nissan");
                                  -              },
                                  -            
                                  -              getBrandClass: function(brand) {
                                  -                return "brand-" + brand;
                                  -              }
                                  -            });
                                  -            
                                  -            template.tag.replace({carBrands: inputData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .carBrand {
                                  -      font-weight: bold;
                                  -    }
                                  -    
                                  -    .myFaforite {
                                  -      color: red;
                                  -    }
                                  -    
                                  -    .brand-Ford {
                                  -      color: green;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/for-loop-custom-iterator.html b/tags/firebug1.3a5/test/domplate/for-loop-custom-iterator.html
                                  deleted file mode 100644
                                  index a1c28c9d..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/for-loop-custom-iterator.html
                                  +++ /dev/null
                                  @@ -1,64 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            var searchResult = {
                                  -              title: "corvete.jpg",
                                  -              summary: "Chevrolet Corvette",
                                  -              url: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              clickUrl: "http://www.vu.union.edu/~jaquezk/MG/corvette.jpg",
                                  -              RefererUrl: "http://www.neiu.edu/~ssalas/FramePage.htm",
                                  -              FileSize: 103936,
                                  -              FileFormat: "jpeg",
                                  -              Height: 768,
                                  -              Width: 1024
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE(
                                  -                  FOR("member", "$object|getMembers",
                                  -                    TR(
                                  -                      TD("$member.label"),
                                  -                      TD("$member.value")
                                  -                    )
                                  -                  )
                                  -                ),
                                  -            
                                  -              getMembers: function(object) {
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push({label: p, value: object[p]})
                                  -                return members;
                                  -              }
                                  -            });
                                  -
                                  -            template.tag.replace({object: searchResult}, parentNode, template);
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/for-loop.html b/tags/firebug1.3a5/test/domplate/for-loop.html
                                  deleted file mode 100644
                                  index 1ae3601a..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/for-loop.html
                                  +++ /dev/null
                                  @@ -1,43 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["red", "green", "blue", "white"];
                                  -            
                                  -            var template = domplate(
                                  -                {
                                  -                    tag:
                                  -                        FOR("item", "$array",
                                  -                           DIV("$item")
                                  -                        )
                                  -                });
                                  -
                                  -            template.tag.replace({array: inputArray}, parentNode, template);            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/hello-world.html b/tags/firebug1.3a5/test/domplate/hello-world.html
                                  deleted file mode 100644
                                  index b59fb8aa..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/hello-world.html
                                  +++ /dev/null
                                  @@ -1,39 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate({
                                  -                tag:
                                  -                    DIV("Hello World!")
                                  -            });
                                  -
                                  -            template.tag.replace({}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/input-data.html b/tags/firebug1.3a5/test/domplate/input-data.html
                                  deleted file mode 100644
                                  index 78b3d3c6..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/input-data.html
                                  +++ /dev/null
                                  @@ -1,53 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var element = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputObject = {
                                  -                firstName: "Jan",
                                  -                lastName: "Odvarko"
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        SPAN("First Name: "),
                                  -                        SPAN("$object.firstName"),
                                  -                        BR(),
                                  -                        SPAN("Last Name: "),
                                  -                        SPAN("$object.lastName")
                                  -                    )
                                  -            });
                                  -            
                                  -            
                                  -            template.tag.replace({object: inputObject}, element, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/pass-data.html b/tags/firebug1.3a5/test/domplate/pass-data.html
                                  deleted file mode 100644
                                  index ea7ed232..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/pass-data.html
                                  +++ /dev/null
                                  @@ -1,51 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var inputArray = ["Honza", "Radek", "John", "Mike"];
                                  -                        
                                  -            var template = domplate(
                                  -            {
                                  -                table:
                                  -                    TABLE({border: "1", width: "100px"},
                                  -                        FOR("item", "array",
                                  -                            TAG("$row", {name: "$item"})
                                  -                        )
                                  -                    ),
                                  -            
                                  -                row:
                                  -                    TR({align: "center"},
                                  -                        TD("$name")
                                  -                    )
                                  -            });
                                  -
                                  -            template.table.replace({array: inputArray}, parentNode, template);
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/reuse-tag.html b/tags/firebug1.3a5/test/domplate/reuse-tag.html
                                  deleted file mode 100644
                                  index 4063c8e6..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/reuse-tag.html
                                  +++ /dev/null
                                  @@ -1,46 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -                tag:
                                  -                    DIV(
                                  -                        TAG("$anotherTag")
                                  -                    ),
                                  -            
                                  -                anotherTag:
                                  -                    SPAN("Embedded Tag")
                                  -            });
                                  -            
                                  -            template.tag.replace({}, parentNode, template);
                                  -
                                  -            
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/table-2d-array.html b/tags/firebug1.3a5/test/domplate/table-2d-array.html
                                  deleted file mode 100644
                                  index 093a480b..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/table-2d-array.html
                                  +++ /dev/null
                                  @@ -1,63 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var tableData = {
                                  -              rows: [
                                  -                {values: [1,2,3,4]},
                                  -                {values: [11,22,33,44]},
                                  -                {values: [111,222,333,444]}
                                  -              ]
                                  -            };
                                  -            
                                  -            var template = domplate(
                                  -            {
                                  -              table:
                                  -                  TABLE({border: "1"},
                                  -                      FOR("row", "$data.rows",
                                  -                          TR(
                                  -                              FOR("value", "$row.values",
                                  -                                  TD({"class": "myTableCell"},
                                  -                                      "$value")
                                  -                              )
                                  -                          )
                                  -                      )
                                  -                  )
                                  -            });
                                  -            
                                  -            template.table.replace({data: tableData}, parentNode, template);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .myTableCell {
                                  -        padding: 5px;
                                  -        text-align: center;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/domplate/tree.html b/tags/firebug1.3a5/test/domplate/tree.html
                                  deleted file mode 100644
                                  index f32659f0..00000000
                                  --- a/tags/firebug1.3a5/test/domplate/tree.html
                                  +++ /dev/null
                                  @@ -1,158 +0,0 @@
                                  -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html>
                                  -  <head>
                                  -  <meta http-equiv="content-type" content="text/html; charset=utf-8">
                                  -  <meta name="generator" content="PSPad editor, www.pspad.com">
                                  -  <title></title>
                                  -  <script type="text/javascript">
                                  -    window.FBL = {};
                                  -    function isLeftClick(){return true};
                                  -    window.onload = function()
                                  -    {
                                  -        with(FBL)
                                  -        {
                                  -            var parentNode = document.getElementById("out");
                                  -            
                                  -            // --------------------------------------------------------------
                                  -            // DomPlate test goes here
                                  -            // --------------------------------------------------------------
                                  -            
                                  -            var treeData = {"menu":{"appetizers":[{"name":"some yummy appetizer","prize":{"ammount":8,"currency":"EUR"}},{"name":"a not so yummy soup","prize":{"ammount":5,"currency":"EUR"}}],"main-meals":[{"name":"bunny leg with fries and ketchup","prize":{"ammount":13,"currency":"EUR"}},{"name":"bunny stew","prize":{"ammount":12,"currency":"EUR"}}]},"owners":[{"last-name":"Hunter","first-name":"Bunny"}],"name":"Le lupin","cooks":[{"last-name":"Pits","first-name":"Sweaty"}],"address":{"street":"some french street","zip-code":"123456","city":"some french city","country":"some french country"},"waiters":[{"last-name":"Cheeks","first-name":"Rosy"}]};
                                  -                        
                                  -            var tree = domplate(
                                  -            {
                                  -              tag:
                                  -                TABLE({onclick: "$onClick"},
                                  -                  TBODY(
                                  -                    FOR("member", "$object|memberIterator",
                                  -                      TAG("$row", {member: "$member"}))
                                  -                  )
                                  -                ),
                                  -            
                                  -              row:
                                  -                TR({"class": "treeRow", $hasChildren: "$member.hasChildren",
                                  -                    _repObject: "$member", level: "$member.level"},
                                  -                  TD({style: "padding-left: $member.indent\\px"},
                                  -                    DIV({"class": "treeLabel"},
                                  -                        "$member.name")
                                  -                  ),
                                  -                  TD(
                                  -                    DIV("$member.label")
                                  -                  )
                                  -                ),
                                  -            
                                  -              loop:
                                  -                FOR("member", "$members",
                                  -                  TAG("$row", {member: "$member"})),
                                  -            
                                  -              memberIterator: function(object)
                                  -              {
                                  -                return this.getMembers(object);
                                  -              },
                                  -            
                                  -              onClick: function(event)
                                  -              {
                                  -                if (!isLeftClick(event))
                                  -                  return;
                                  -            
                                  -                var row = getAncestorByClass(event.target, "treeRow");
                                  -                var label = getAncestorByClass(event.target, "treeLabel");
                                  -                if (label && hasClass(row, "hasChildren"))
                                  -                  this.toggleRow(row);
                                  -              },
                                  -            
                                  -              toggleRow: function(row)
                                  -              {
                                  -                var level = parseInt(row.getAttribute("level"));
                                  -            
                                  -                if (hasClass(row, "opened"))
                                  -                {
                                  -                  removeClass(row, "opened");
                                  -            
                                  -                  var tbody = row.parentNode;
                                  -                  for (var firstRow = row.nextSibling; firstRow;
                                  -                       firstRow = row.nextSibling)
                                  -                  {
                                  -                    if (parseInt(firstRow.getAttribute("level")) <= level)
                                  -                      break;
                                  -                    tbody.removeChild(firstRow);
                                  -                  }
                                  -                }
                                  -                else
                                  -                {
                                  -                  setClass(row, "opened");
                                  -            
                                  -                  var repObject = row.repObject;
                                  -                  if (repObject) {
                                  -                    var members = this.getMembers(repObject.value, level+1);
                                  -                    if (members)
                                  -                      this.loop.insertRows({members: members}, row);
                                  -                  }
                                  -                }
                                  -              },
                                  -            
                                  -              getMembers: function(object, level)
                                  -              {
                                  -                if (!level)
                                  -                  level = 0;
                                  -            
                                  -                var members = [];
                                  -                for (var p in object)
                                  -                  members.push(this.createMember(p, object[p], level));
                                  -            
                                  -                return members;
                                  -              },
                                  -            
                                  -              createMember: function(name, value, level)
                                  -              {
                                  -                var hasChildren = (typeof(value) == "object");
                                  -                return {
                                  -                  name: name,
                                  -                  label: hasChildren ? "" : value,
                                  -                  value: value,
                                  -                  level: level,
                                  -                  indent: level*16,
                                  -                  hasChildren: hasChildren
                                  -                };
                                  -              }
                                  -            });
                                  -            
                                  -            tree.tag.replace({object: treeData}, parentNode, tree);
                                  -
                                  -            // --------------------------------------------------------------
                                  -        }    
                                  -    }    
                                  -  </script>
                                  -  <script src="../../content/firebug/domplate.js" type="text/javascript"></script>
                                  -  <style type="text/css">
                                  -    .treeRow.hasChildren .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_open.gif);
                                  -        background-repeat: no-repeat;
                                  -        background-position: 2px 2px;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren.opened .treeLabel {
                                  -        background-image: url(http://fbug.googlecode.com/svn/trunk/lite/1.3/skin/classic/tree_close.gif);
                                  -    }
                                  -    
                                  -    .treeRow .treeLabel {
                                  -        padding-left: 18px;
                                  -        padding-right: 10px;
                                  -        white-space: nowrap;
                                  -    }
                                  -    
                                  -    .treeRow.hasChildren .treeLabel:hover {
                                  -        color: blue;
                                  -        cursor: pointer;
                                  -        text-decoration: underline;
                                  -    }
                                  -  </style>
                                  -  </head>
                                  -  <body>
                                  -  
                                  -  <h1 id="header">DomPlate Test</h1>
                                  -  <div id="comment"><i>This is just a test file</i><hr/></div>
                                  -  <div id="out"></div>
                                  -
                                  -  </body>
                                  -</html>
                                  diff --git a/tags/firebug1.3a5/test/firebugLite.html b/tags/firebug1.3a5/test/firebugLite.html
                                  deleted file mode 100644
                                  index 24e342e7..00000000
                                  --- a/tags/firebug1.3a5/test/firebugLite.html
                                  +++ /dev/null
                                  @@ -1,156 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.jgz#disableWhenFirebugActive=false">
                                  -    {
                                  -        startOpened: true,
                                  -        skin: (window.firebugSkin = ["xp","classic","light"][Math.floor(Math.random()*3)]),
                                  -        
                                  -        onLoad: function()
                                  -        {
                                  -            var console = Firebug.Console;
                                  -            
                                  -            console.info("Hello World, I'm " + Firebug.version + "!");
                                  -            console.warn('This is the "' + firebugSkin + '" skin');
                                  -            
                                  -            //console.log("move your mouse over here: ", document.getElementsByTagName("div"));
                                  -        
                                  -            var random = function(i){return Math.floor(Math.random()*i)};
                                  -            var randomPanel = ["Console", "HTML", "CSS", "Script", "DOM"][random(5)];
                                  -            
                                  -            randomPanel = "HTML"
                                  -            Firebug.chrome.selectPanel(randomPanel);
                                  -            if (randomPanel == "HTML")
                                  -            {
                                  -                var randomElement = ["h1", "h3", "p"][random(3)];
                                  -                randomElement = "h1";
                                  -                var element = document.getElementsByTagName(randomElement)[0];
                                  -                
                                  -                //setTimeout(function(){
                                  -                    Firebug.HTML.select(element);
                                  -                    Firebug.Inspector.drawBoxModel(element);
                                  -                //},0);
                                  -                
                                  -                setTimeout(Firebug.Inspector.hideBoxModel, 2500);
                                  -                
                                  -            }
                                  -            else if (randomPanel == "DOM")
                                  -            {
                                  -                var randomElement = [null, "Firebug", "console", "document"][random(4)];
                                  -                var element = Firebug.browser.window[randomElement];
                                  -                
                                  -                setTimeout(function(){
                                  -                    Firebug.chrome.getPanel("DOM").select(element);
                                  -                },0);
                                  -            }
                                  -        }
                                  -    }
                                  -</script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  /*margin: 0;/**/
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -  /*border: 10px solid #efd;*/
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -#lorem {
                                  -  /*display: none;/**/
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/injected.chrome.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div id="lorem" class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/test/firebugLite2.html b/tags/firebug1.3a5/test/firebugLite2.html
                                  deleted file mode 100644
                                  index de798fcb..00000000
                                  --- a/tags/firebug1.3a5/test/firebugLite2.html
                                  +++ /dev/null
                                  @@ -1,115 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/DTD/strict.dtd">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="getStackTrace.js"></script>
                                  -<script type="text/javascript" src="../content/firebug.dev.js"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -/**/
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  margin: 0;
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -.block {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#build {
                                  -  background: #def;
                                  -}
                                  -#ui {
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -<style type="text/css">
                                  -#dummy {
                                  -    color: yellow;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Development Functions</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:FBDev.build();">Build Project</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinHTML();">Compress Chrome HTML</a></li>
                                  -        <li><a href="javascript:FBDev.compressSkinCSS();">Compress Chrome CSS</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note block">
                                  -      Use the "build" function to generate the full uncompressed js file,
                                  -      and the "compress" functions to compress the HTML and CSS of the
                                  -      User Interface files, to be used in the <a href="../content/firebug/chrome.injected.js">injected.js</a>
                                  -      file, when in bookmarlet mode. 
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="block">
                                  -      <p>Lorem ipsum dolor sit amet consectetuer Lorem pretium molestie congue Curabitur. Et at augue at morbi at adipiscing condimentum wisi lorem In. Morbi porttitor nulla Praesent egestas lobortis nec Morbi nibh Curabitur tempor. Adipiscing Praesent Donec Vivamus condimentum sapien eget odio ac et urna. Ipsum egestas Nam laoreet amet magnis wisi Maecenas tincidunt faucibus sit. Lacinia dictumst lorem ac Aenean Nunc montes condimentum.</p>
                                  -      <p>Amet pretium Nulla tempus ut tortor nibh dis Donec laoreet laoreet. Interdum velit consectetuer vitae nunc ut quis Nam ut neque cursus. Vitae vel orci id porta netus quis Pellentesque faucibus id congue. Elit semper libero auctor adipiscing lacus laoreet sit Maecenas vitae Nulla. Pede ipsum eu vitae dolor nisl nibh pellentesque Pellentesque at.</p>
                                  -      <p>Quisque at aliquet dapibus laoreet at nunc magna ut Aenean id. Urna dictum Pellentesque semper in metus quis Curabitur est risus eget. Mauris semper leo id a augue lorem urna fames tellus magnis. In consequat magna gravida Nulla quam at Curabitur montes wisi malesuada. Leo Nam mollis laoreet odio felis euismod wisi ut iaculis eros. Quisque.</p>
                                  -      <p>Mauris pellentesque ante quis pretium tempor consequat quis cursus tortor turpis. Quisque vel libero montes leo laoreet lobortis ante ligula auctor ornare. Vestibulum Phasellus et pellentesque porttitor orci vitae pharetra porta dolor a. Vivamus aliquam augue ut cursus id pretium ullamcorper neque pede sed. Quis eros Phasellus tellus elit dui ac Curabitur id ut leo. Urna nibh.</p>
                                  -      <p>Nulla Pellentesque Aliquam ut vitae lacus vel et et vel ante. Ante dui a gravida urna urna semper consectetuer Lorem urna Ut. Pellentesque tempor parturient malesuada tempus fermentum congue sem massa metus Suspendisse. Enim semper senectus eget elit Morbi massa nunc dolor est tincidunt. A orci mi Aenean elit a eros.</p>
                                  -      <p>In id Nam velit ut risus in tellus sapien nunc eros. Vitae pellentesque Pellentesque convallis tempus wisi nibh vitae porttitor pellentesque tristique. Et ridiculus turpis risus amet urna Aenean elit velit Nullam vitae. Lacus condimentum Aliquam elit justo lacinia commodo dolor facilisis Vestibulum porta. Urna enim tortor id dui Sed ultrices Lorem risus.</p>
                                  -      <p>Pede cursus Ut Aenean tempor purus rhoncus Curabitur Sed et sapien. Et Duis Vivamus urna vel nunc rutrum Praesent Suspendisse eu nunc. Ligula wisi turpis nec quam Nullam tortor pede nisl hac et. Nulla et Morbi Pellentesque vel nec Integer porttitor lobortis nibh nascetur. At ac augue platea convallis eget vel Nullam pede dolor neque. Accumsan Sed Aenean porttitor tortor dolor Maecenas hendrerit sed Fusce.</p>
                                  -      <p>Senectus tincidunt nec Morbi vitae mattis nonummy faucibus ipsum libero mauris. Risus lacus Nam orci velit interdum nec natoque Curabitur quis Duis. Tincidunt ornare Curabitur et Nam Sed interdum ut libero augue nulla. Enim porttitor in vitae Vestibulum scelerisque pretium In sapien velit lacus. Nam tellus elit ut dis tellus Morbi id nulla Proin quis. Pretium tortor Curabitur.</p>
                                  -      <p>Eu id egestas nibh dis a consectetuer id sapien Nulla interdum. Semper ut sed justo adipiscing Suspendisse volutpat lacinia elit fringilla Praesent. Lacinia Phasellus sem felis Vestibulum eros pellentesque nibh fringilla venenatis metus. Et arcu quis Vestibulum condimentum fringilla a enim quis Nulla Sed. Feugiat Curabitur nibh ridiculus Curabitur ut porttitor nascetur pellentesque nisl magna. Phasellus mauris ut gravida Vestibulum turpis ac pretium.</p>
                                  -      <p>A pretium dui euismod volutpat hendrerit consequat dis dolor Donec cursus. Et quis consequat tincidunt lacinia id elit commodo id condimentum habitant. Et nibh Mauris hac adipiscing sit a condimentum ac egestas orci. In adipiscing justo senectus nulla id Praesent Vivamus ligula orci nulla. Augue a Nam congue eget dui felis magna Duis neque vel. </p>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/tags/firebug1.3a5/test/full.html b/tags/firebug1.3a5/test/full.html
                                  deleted file mode 100644
                                  index f00d9e4e..00000000
                                  --- a/tags/firebug1.3a5/test/full.html
                                  +++ /dev/null
                                  @@ -1,91 +0,0 @@
                                  -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                                  -<html debug="true">
                                  -<head>
                                  -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                                  -<title>FirebugLite 1.3 Testing</title>
                                  -<script type="text/javascript" src="../build/firebug.js#remote,trace"></script>
                                  -<script type="text/javascript">
                                  -(function(){
                                  -var console = Firebug.Console;
                                  -
                                  -console.log("This is a test call to console.log()");
                                  -console.info("This is a test call to console.info()");
                                  -console.warn("This is a test call to console.warn()");
                                  -console.error("This is a test call to console.error()");
                                  -
                                  -})();
                                  -</script>
                                  -<style type="text/css">
                                  -body {
                                  -  font-size: 16px;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -h1 {
                                  -  color: #123;
                                  -  font-weight: bold;
                                  -}
                                  -h2 {
                                  -  color: #456;
                                  -  font-weight: bold;
                                  -  font-size: 18px;
                                  -  margin-top: 0;
                                  -}
                                  -#main {
                                  -  padding: 1px 20px 10px 20px;
                                  -}
                                  -li { 
                                  -  font-family: Monaco, monospace;
                                  -}
                                  -#build {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #def;
                                  -}
                                  -.block a:hover {
                                  -  color: #5a0;
                                  -}
                                  -.note {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #456;
                                  -  color: #fff;
                                  -  font-family: Lucida Grande, sans-serif;
                                  -}
                                  -.note a, .note a:visited {
                                  -  color: #fff;
                                  -}
                                  -.note a:hover {
                                  -  color: #ff0;
                                  -}
                                  -#ui {
                                  -  padding: 10px;
                                  -  margin-bottom: 10px;
                                  -  background: #efd;
                                  -}
                                  -</style>
                                  -</head>
                                  -<body>
                                  -  <div id="main">
                                  -    <h1>FirebugLite 1.3 Testing</h1>
                                  -    <div id="build" class="block">
                                  -      <h2>Bookmarlets</h2>
                                  -      <ul>
                                  -        <li><a href="javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=t+L;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=t+i;})(document,'createElement','build/firebug.js#remote','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');">Normal application</a></li>
                                  -        <li><a href="javascript:(function(F,B,L,i,t,e){e=F[B]('script');e.id='FirebugLite';e.src=t+L;F.getElementsByTagName('head')[0].appendChild(e);e=F[B]('img');e.src=t+i;})(document,'createElement','build/firebug.js#remote,trace','skin/xp/sprite.png','http://fbug.googlecode.com/svn/lite/branches/firebug1.3/');">Application with trace enabled</a></li>
                                  -      </ul>
                                  -    </div>
                                  -    <div class="note">
                                  -      Copy the bookmarlets above to test the Firebug Lite in remote pages.
                                  -    </div>
                                  -    <div id="ui" class="block">
                                  -      <h2>User interface files</h2>
                                  -      <ul>
                                  -        <li><a href="../skin/xp/firebug.html">HTML</a></li>
                                  -        <li><a href="../skin/xp/firebug.css">CSS</a></li>
                                  -        <li><a href="../skin/xp/sprite.png">Sprite</a></li>
                                  -      </ul>
                                  -    </div>
                                  -  </div>
                                  -
                                  -</body>
                                  -</html>
                                  \ No newline at end of file
                                  diff --git a/branches/firebug1.5/tests/examples/async.html b/tests/examples/async.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/examples/async.html
                                  rename to tests/examples/async.html
                                  diff --git a/branches/firebug1.5/tests/examples/fail.html b/tests/examples/fail.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/examples/fail.html
                                  rename to tests/examples/fail.html
                                  diff --git a/branches/firebug1.5/tests/examples/sync.html b/tests/examples/sync.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/examples/sync.html
                                  rename to tests/examples/sync.html
                                  diff --git a/branches/firebug1.4/tests/examples/test.txt b/tests/examples/test.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/tests/examples/test.txt
                                  rename to tests/examples/test.txt
                                  diff --git a/branches/firebug1.5/tests/fbtest/fbtest.css b/tests/fbtest/fbtest.css
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/fbtest/fbtest.css
                                  rename to tests/fbtest/fbtest.css
                                  diff --git a/branches/firebug1.5/tests/fbtest/fbtest.js b/tests/fbtest/fbtest.js
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/fbtest/fbtest.js
                                  rename to tests/fbtest/fbtest.js
                                  diff --git a/branches/firebug1.4/tests/readme.txt b/tests/readme.txt
                                  similarity index 100%
                                  rename from branches/firebug1.4/tests/readme.txt
                                  rename to tests/readme.txt
                                  diff --git a/branches/firebug1.5/tests/runner.html b/tests/runner.html
                                  similarity index 100%
                                  rename from branches/firebug1.5/tests/runner.html
                                  rename to tests/runner.html